commit 59f8f60dad75af689fe3b5cfe1c75d3bcf699c90 Author: wehub-resource-sync Date: Mon Jul 13 12:59:42 2026 +0800 chore: import upstream snapshot with attribution diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..d4de155 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 4 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false \ No newline at end of file diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..54df94e --- /dev/null +++ b/.gitattributes @@ -0,0 +1,16 @@ +# Unify all text files to LF line endings +* text eol=lf + +# Binary files should not have line ending conversions +*.exe binary +*.dll binary +*.so binary +*.dylib binary +*.class binary +*.jar binary +*.zip binary +*.png binary +*.jpg binary +*.jpeg binary +*.gif binary +*.pdf binary diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..9ce48f9 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,5 @@ +# Owner for all documents +*.md @bdoubrov @hnc-sujicho + +# Default owners for everything else in the repository +* @MaximPlusov @LonelyMidoriya @hyunhee-jo @bundolee @hnc-jglee diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..64c8669 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,33 @@ +--- +name: Bug report +about: Report an issue +title: "" +labels: bug +assignees: "" +--- + +### Bug + + + +... + +### Steps to reproduce + + + +... + +### Version + + + +... + +### Java version + + + +... + + diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..3ba13e0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1 @@ +blank_issues_enabled: false diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..32e9e46 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,21 @@ +--- +name: Feature request +about: Suggest an idea +title: "" +labels: enhancement +assignees: "" +--- + +### Requested feature + + + +... + +### Alternatives + + + +... + + diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md new file mode 100644 index 0000000..64f810e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/question.md @@ -0,0 +1,15 @@ +--- +name: Question +about: Ask a question +title: "" +labels: question +assignees: "" +--- + +### Question + + + +... + + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..c4a74cd --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,19 @@ + + + + + + +**Checklist:** + +- [ ] Documentation has been updated, if necessary. +- [ ] Examples have been added, if necessary. +- [ ] Tests have been added, if necessary. diff --git a/.github/SECURITY.md b/.github/SECURITY.md new file mode 100644 index 0000000..7afae0c --- /dev/null +++ b/.github/SECURITY.md @@ -0,0 +1,24 @@ +# Security Policy + +## Reporting a Vulnerability + +If you think you've identified a security issue in the project repository, please DO NOT report the issue publicly via +the GitHub issue tracker, etc. + +Instead, send an email with as many details as possible. This is a private mailing list for the maintainers team. + +Please do not create a public issue. + +### Security Vulnerability Response + +Each report is acknowledged and analyzed by the core maintainers within 3 working days. + +Any vulnerability information shared with core maintainers stays within the project and will not be disseminated to +other projects unless it is necessary to get the issue fixed. + +After the initial reply to your report, the security team will keep you informed of the progress towards a fix and full +announcement, and may ask for additional information or guidance. + +## Security Alerts + +We will send announcements of security vulnerabilities and steps to remediate on the project announcements. diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..ddec3f6 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,71 @@ +version: 2 +updates: + # Java — multi-module Maven (parent /java declares core/cli child modules; Dependabot auto-detects them) + - package-ecosystem: "maven" + directory: "/java" + schedule: + interval: "weekly" + day: "monday" + time: "09:00" + timezone: "Asia/Seoul" + open-pull-requests-limit: 10 + labels: + - "dependencies" + groups: + maven-minor-patch: + update-types: + - "minor" + - "patch" + + # Node.js SDK (pnpm; Dependabot handles pnpm under the "npm" ecosystem). + # Root package.json is a scripts-only workspace meta-file with no deps, so it is omitted. + - package-ecosystem: "npm" + directory: "/node/opendataloader-pdf" + schedule: + interval: "weekly" + day: "monday" + time: "09:00" + timezone: "Asia/Seoul" + open-pull-requests-limit: 10 + labels: + - "dependencies" + groups: + npm-minor-patch: + update-types: + - "minor" + - "patch" + + # Python SDK + MCP server (example requirements.txt excluded to avoid noise) + - package-ecosystem: "pip" + directories: + - "/python/opendataloader-pdf" + - "/python/opendataloader-pdf-mcp" + schedule: + interval: "weekly" + day: "monday" + time: "09:00" + timezone: "Asia/Seoul" + open-pull-requests-limit: 10 + labels: + - "dependencies" + groups: + pip-minor-patch: + update-types: + - "minor" + - "patch" + + # GitHub Actions workflows + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + day: "monday" + time: "09:00" + timezone: "Asia/Seoul" + labels: + - "dependencies" + groups: + github-actions: + update-types: + - "minor" + - "patch" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..9da6933 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,167 @@ +name: Release + +on: + push: + tags: + - 'v*' + workflow_dispatch: + +jobs: + release: + runs-on: ubuntu-latest + env: + VERSION: '0.0.0' + permissions: + contents: write + id-token: write + + steps: + # ================================================================= + # 1. SETUP + # ================================================================= + - name: Checkout code + uses: actions/checkout@v7 + + - name: Initialize VERSION + run: | + if [[ "${GITHUB_REF}" == refs/tags/v* ]]; then + echo "VERSION=${GITHUB_REF_NAME#v}" >> $GITHUB_ENV + else + echo "VERSION=0.0.0" >> $GITHUB_ENV + fi + + - name: Set up Java + uses: actions/setup-java@v5 + with: + java-version: '21' + distribution: 'temurin' + cache: 'maven' + server-id: central + server-username: MAVEN_CENTRAL_USERNAME + server-password: MAVEN_CENTRAL_PASSWORD + gpg-private-key: ${{ secrets.MAVEN_GPG_KEY }} + gpg-passphrase: ${{ secrets.MAVEN_GPG_PASSPHRASE }} + + - name: Set up Python + uses: actions/setup-python@v6 + with: + python-version: '3.12' + + - name: Install uv + uses: astral-sh/setup-uv@v7 + + - name: Set up Node.js and pnpm + uses: actions/setup-node@v6 + with: + node-version: '20' + registry-url: 'https://registry.npmjs.org' + + - name: Install pnpm + uses: pnpm/action-setup@v6 + with: + version: 9 + + # ================================================================= + # 2. BUILD & TEST + # ================================================================= + - name: Build and test all packages + run: ./scripts/build-all.sh ${{ env.VERSION }} + + # ================================================================= + # 3. VERIFY CLI OPTIONS (before deploy) + # ================================================================= + - name: Install opendataloader-pdf CLI + # --system installs into the setup-python interpreter; without it (or an + # active venv) `uv pip install` aborts with "No virtual environment found". + run: uv pip install --system ./python/opendataloader-pdf/dist/*.whl + + - name: Run CLI verification + # ci-verify.py writes its own markdown table to $GITHUB_STEP_SUMMARY, + # so no separate summary step is needed here. + run: python verification/ci-verify.py + + - name: Upload verification report + if: always() + uses: actions/upload-artifact@v7 + with: + name: verification-report-release + path: verification/verification-report-ci.txt + retention-days: 30 + + # ================================================================= + # 4. DEPLOY (only on tag push) + # ================================================================= + - name: '[Java] Deploy to Maven Central' + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') + run: mvn -B -pl opendataloader-pdf-core deploy -P release + working-directory: ./java + env: + MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} + MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} + MAVEN_GPG_KEY: ${{ secrets.MAVEN_GPG_KEY }} + MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} + + - name: '[Python] Publish to PyPI' + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: ./python/opendataloader-pdf/dist + + - name: '[Node.js] Publish to npm' + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') + run: pnpm publish --no-git-checks + working-directory: ./node/opendataloader-pdf + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + + # ================================================================= + # 5. GITHUB RELEASE (only on tag push) + # ================================================================= + - name: Package CLI as ZIP + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') + run: | + cd java/opendataloader-pdf-cli/target + mkdir -p release + cp "opendataloader-pdf-cli-${{ env.VERSION }}.jar" release/ + cp ../../../README.md release/ + cp ../../../LICENSE release/ + cp ../../../NOTICE release/ + cp -r ../../../THIRD_PARTY release/ + cd release + zip -r "../opendataloader-pdf-cli-${{ env.VERSION }}.zip" . + cd ../.. + + - name: Create GitHub Release + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') + uses: softprops/action-gh-release@v3 + with: + tag_name: ${{ github.ref_name }} + name: Release ${{ github.ref_name }} + generate_release_notes: true + files: | + java/opendataloader-pdf-cli/target/opendataloader-pdf-cli-${{ env.VERSION }}.zip + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + # ================================================================= + # 6. SYNC DOCS TO HOMEPAGE (only on tag push) + # ================================================================= + - name: Generate reference docs + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') + run: | + mkdir -p content/docs/reference + node scripts/generate-options.mjs + node scripts/generate-schema.mjs + + - name: Push reference docs to homepage + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') + # Pinned to v1.7.3 for security - verify before updating + uses: cpina/github-action-push-to-another-repository@55306faa4ed53b815ae49e564af8cfb359d32ae2 # v1.7.3 + with: + source-directory: 'content/docs/reference' + destination-github-username: 'opendataloader-project' + destination-repository-name: 'opendataloader.org' + target-directory: 'apps/v1/content/docs/reference' + target-branch: main + env: + API_TOKEN_GITHUB: ${{ secrets.HOMEPAGE_SYNC_TOKEN }} diff --git a/.github/workflows/test-benchmark.yml b/.github/workflows/test-benchmark.yml new file mode 100644 index 0000000..f37a295 --- /dev/null +++ b/.github/workflows/test-benchmark.yml @@ -0,0 +1,200 @@ +name: Test & Benchmark + +on: + pull_request: + branches: [main] + paths: + - 'java/**' + - 'python/**' + - 'node/**' + - 'scripts/**' + - 'verification/**' + - 'samples/**' + - '.github/workflows/**' + workflow_dispatch: + +concurrency: + group: ci-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + test: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v7 + + - name: Setup Java + uses: actions/setup-java@v5 + with: + distribution: 'temurin' + java-version: '21' + + - name: Setup Python + uses: actions/setup-python@v6 + with: + python-version: '3.12' + + - name: Setup uv + uses: astral-sh/setup-uv@v7 + + - name: Setup Node.js + uses: actions/setup-node@v6 + with: + node-version: '20' + + - name: Setup pnpm + run: npm install -g pnpm + + - name: Build & Test All + run: ./scripts/build-all.sh + + - name: Install opendataloader-pdf CLI + # --system installs into the setup-python interpreter; without it (or an + # active venv) `uv pip install` aborts with "No virtual environment found". + run: uv pip install --system ./python/opendataloader-pdf/dist/*.whl + + - name: Run CLI verification + # ci-verify.py writes its own markdown table to $GITHUB_STEP_SUMMARY, + # so no separate summary step is needed here. + run: python verification/ci-verify.py + + - name: Upload verification report + if: always() + uses: actions/upload-artifact@v7 + with: + name: verification-report-ci + path: verification/verification-report-ci.txt + retention-days: 7 + + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v7 + with: + files: java/opendataloader-pdf-core/target/site/jacoco/jacoco.xml + fail_ci_if_error: false + token: ${{ secrets.CODECOV_TOKEN }} + + - name: Upload build artifacts + uses: actions/upload-artifact@v7 + with: + name: java-build + path: java/opendataloader-pdf-cli/target/*.jar + retention-days: 1 + + benchmark: + needs: test + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v7 + + - name: Setup Java + uses: actions/setup-java@v5 + with: + distribution: 'temurin' + java-version: '21' + + - name: Download build artifacts + uses: actions/download-artifact@v8 + with: + name: java-build + path: java/opendataloader-pdf-cli/target/ + + - name: Setup Python + uses: actions/setup-python@v6 + with: + python-version: '3.13' + + - name: Setup uv + uses: astral-sh/setup-uv@v7 + + - name: Run benchmark + run: ./scripts/bench.sh --skip-build --check-regression + + - name: Benchmark summary + if: always() + run: | + python3 << 'PYEOF' + import json, os, sys + from pathlib import Path + + eval_path = Path("/tmp/opendataloader-bench/prediction/opendataloader/evaluation.json") + thresh_path = Path("/tmp/opendataloader-bench/thresholds.json") + + summary_file = os.environ.get("GITHUB_STEP_SUMMARY", "/dev/null") + + if not eval_path.exists() or not thresh_path.exists(): + with open(summary_file, "a") as f: + f.write("## Benchmark Results\n\nBenchmark did not produce evaluation results.\n") + sys.exit(0) + + try: + with open(eval_path) as f: + eval_data = json.load(f) + with open(thresh_path) as f: + thresholds = json.load(f) + except json.JSONDecodeError as e: + with open(summary_file, "a") as f: + f.write(f"## Benchmark Results\n\nFailed to parse results: {e}\n") + sys.exit(0) + + scores = eval_data.get("metrics", {}).get("score", {}) + table_detection = eval_data.get("table_detection", {}) + speed = eval_data.get("speed", {}) + triage = eval_data.get("triage", {}) + tol = thresholds.get("regression_tolerance", 0) + + rows = [] + + for key, label, src in [ + ("nid", "NID", scores.get("nid_mean")), + ("teds", "TEDS", scores.get("teds_mean")), + ("mhs", "MHS", scores.get("mhs_mean")), + ("table_detection_f1", "Table Detection F1", table_detection.get("f1")), + ]: + t = thresholds.get(key) + if src is not None and t is not None: + effective = t - tol + status = "✅" if src >= effective else "❌" + rows.append(f"| {label} | {src:.4f} | ≥ {effective:.2f} | {status} |") + + elapsed = speed.get("elapsed_per_doc") + elapsed_thresh = thresholds.get("elapsed_per_doc") + if elapsed is not None and elapsed_thresh is not None: + status = "✅" if elapsed <= elapsed_thresh else "❌" + rows.append(f"| Speed | {elapsed:.2f}s/doc | ≤ {elapsed_thresh}s/doc | {status} |") + + if triage: + tr_recall = triage.get("recall") + tr_thresh = thresholds.get("triage_recall") + if tr_recall is not None and tr_thresh is not None: + effective = tr_thresh - tol + status = "✅" if tr_recall >= effective else "❌" + rows.append(f"| Triage Recall | {tr_recall:.4f} | ≥ {effective:.2f} | {status} |") + + tr_fn = triage.get("fn_count") + tr_fn_max = thresholds.get("triage_fn_max") + if tr_fn is not None and tr_fn_max is not None: + status = "✅" if tr_fn <= tr_fn_max else "❌" + rows.append(f"| Triage FN | {tr_fn} | ≤ {tr_fn_max} | {status} |") + + with open(summary_file, "a") as f: + f.write("## Benchmark Results\n\n") + f.write("| Metric | Score | Threshold | Status |\n") + f.write("|--------|-------|-----------|--------|\n") + for row in rows: + f.write(row + "\n") + + if not rows: + f.write("| (no metrics found) | | | |\n") + PYEOF + + - name: Upload evaluation results + uses: actions/upload-artifact@v7 + if: always() + with: + name: benchmark-results + path: /tmp/opendataloader-bench/prediction/opendataloader/evaluation.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6fd2162 --- /dev/null +++ b/.gitignore @@ -0,0 +1,89 @@ +*.class + +# OS specific files +.DS_Store +Thumbs.db + +# IDE / Editor files +**/.idea/ +**/.vscode/ +*.iml +*.ipr +*.iws + +# Emacs +\#*\# +*~ +.#* + +# Vim +*.swp +*.swo +*.swn + +# Java (Maven & Gradle) +**/target/ +**/build/ +**/bin/ +**/.gradle/ +**/*.jar +**/*.war +**/*.ear +**/dependency-reduced-pom.xml +**/.flattened-pom.xml + +# Logs +*.log +logs/ +**/logs/ +**/npm-debug.log* +**/yarn-debug.log* +**/yarn-error.log* +**/pnpm-debug.log* + +# Node.js +**/node_modules/ +**/.next/ +**/.turbo/ +**/dist/ +**/.cache/ +*.tsbuildinfo + +# Python +**/__pycache__/ +**/*.py[cod] +*.pyo +*.pyd +*.so +**/.venv/ +**/.env +**/.env.* +*.egg-info/ +**/.eggs/ +**/.mypy_cache/ +**/.pytest_cache/ +**/.coverage +**/htmlcov/ + +# Temporary / Generated +**/tmp/ +**/temp/ + +# Git worktrees +.worktrees/ + +# Auto-generated reference docs (CI-only, not tracked) +content/docs/ + +# Configuration files +.claude/settings.local.json +.claude/plans/ + +# Verification reports (local runs only; CI reports are uploaded as artifacts) +verification/verification-report-local.txt +verification/verification-report-ci.txt + +# Local fixture generator (kept out of the repo: fixtures are committed +# binaries; regeneration is rare and the generator needs pikepdf/reportlab) +scripts/generate-test-fixtures.py + diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..137095b --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,5 @@ +# Changelog + +## 0.1.0 + +- Initial release. \ No newline at end of file diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..3ddce72 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,25 @@ +# CLAUDE.md + +## Gotchas + +After changing CLI options in Java, **must** run `npm run sync` — this regenerates `options.json` and all Python/Node.js bindings. Forgetting this silently breaks the wrappers. + +When using `--enrich-formula` or `--enrich-picture-description` on the hybrid server, the client **must** use `--hybrid-mode full`. Otherwise enrichments are silently skipped (they only run on the backend, not in Java). + +Processing uses `ForkJoinPool(availableProcessors)` for per-page parallelism. All `StaticContainers` and `StaticLayoutContainers` ThreadLocal state must be propagated to worker threads via `propagateState.run()` — missing a ThreadLocal causes silent data loss or NPE in parallel mode. + +Hidden text detection (`--filter-hidden-text`) is **off by default** — it requires per-page PDF rendering via `ContrastRatioConsumer` which cannot be parallelized safely. + +`--format` values name **output file kinds only** (json, text, html, pdf, markdown, tagged-pdf). Markdown rendering modifiers and image extraction are separate flags: `--markdown-with-html` for HTML-in-Markdown, `--image-output off|embedded|external` for image control. `markdown-with-html` and `markdown-with-images` are still accepted as `--format` values for one major release but emit a deprecation warning and will be removed. + +## Conventions + +Manual docs live in opendataloader.org repo. Reference docs (CLI options, JSON schema) are auto-generated by CI at release time and pushed to opendataloader.org. No MDX files are tracked in this repo. + +## Benchmark + +- `./scripts/bench.sh` — Run benchmark (auto-clones opendataloader-bench for PDFs and evaluation logic) +- `./scripts/bench.sh --doc-id ` — Debug specific document +- `./scripts/bench.sh --check-regression` — CI mode with threshold check +- Benchmark code lives in [opendataloader-bench](https://github.com/opendataloader-project/opendataloader-bench) +- Metrics: **NID** (reading order), **TEDS** (table structure), **MHS** (heading structure), **Table Detection F1**, **Speed** diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..dfc4b1d --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,129 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +- Demonstrating empathy and kindness toward other people +- Being respectful of differing opinions, viewpoints, and experiences +- Giving and gracefully accepting constructive feedback +- Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +- Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +- The use of sexualized language or imagery, and sexual attention or + advances of any kind +- Trolling, insulting or derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or email + address, without their explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement using +[open.dataloader@hancom.com](mailto:open.dataloader@hancom.com). + +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org)], +version 2.0, available at +[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html](https://www.contributor-covenant.org/version/2/0/code_of_conduct.html). + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +Homepage: [https://www.contributor-covenant.org](https://www.contributor-covenant.org) + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq](https://www.contributor-covenant.org/faq). Translations are available at +[https://www.contributor-covenant.org/translations](https://www.contributor-covenant.org/translations). diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..ba6d27e --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,138 @@ +# Contributing to This Project + +Thank you for your interest in contributing! +We welcome contributions from everyone. This document outlines the guidelines for how to contribute effectively and +respectfully. + +--- + +## 📌 Types of Contributions We Welcome + +We appreciate various kinds of contributions, including but not limited to: + +- 🛠️ **Code contributions** (bug fixes, performance improvements, new features) +- 🐞 **Bug reports** +- 💡 **Feature suggestions** +- ❓ **Questions and discussions** +- 📚 **Improving documentation** + +--- + +## ❓ How to Ask Questions + +If you have questions: + +1. Check the [README](./README.md) and + existing [issues](https://github.com/opendataloader-project/opendataloader-pdf/issues) first. +2. If your question hasn't been addressed, open a new issue using the `Question` label. + +--- + +## 🐛 How to Report Bugs + +When reporting a bug, please include the following: + +- A clear and descriptive title +- Steps to reproduce the issue +- Expected vs actual behavior +- Environment info (OS, version, etc.) +- Logs or screenshots if available + +Use the **Bug Report** issue template when creating the issue. + +--- + +## 💡 How to Suggest a Feature + +To suggest a new feature: + +1. Search existing issues to avoid duplicates. +2. If it's new, open a new issue using the **Feature Request** template. +3. Describe your idea, use cases, and possible alternatives. + +--- + +## 🔧 How to Contribute Code + +### Step-by-Step Process + +1. **Fork** the repository. +2. **Clone** your fork: + + ```bash + git clone https://github.com/your-username/opendataloader-pdf.git + cd opendataloader-pdf + ``` + +3. **Create a feature branch:** + + ```bash + git checkout -b my-feature + ``` + +4. **Build** the project: + + **Prerequisites:** Java 11+, Maven, Python 3.10+, uv, Node.js 20+, pnpm + See the [Development Workflow guide](https://opendataloader.org/docs/development-workflow) for OS-specific install instructions. + + ```bash + # Build Java packages + npm run build-java + + # If you changed CLI options in Java, sync bindings (regenerates options.json, Python/Node.js wrappers) + npm run sync + ``` + + > **Important**: If you modified any CLI options in Java, you **must** run `npm run sync` before committing. This regenerates `options.json` and all Python/Node.js bindings. Forgetting this silently breaks the wrappers. + +5. Make your changes and commit them. +6. **Push** your branch: + + ```bash + git push origin my-feature + ``` + +7. **Open a Pull Request** (PR) against the `main` branch. +8. Respond to review comments and update your PR as needed. + +--- + +## 🧹 Coding Style & Guidelines + +- Follow existing code conventions. +- Run linters/formatters before committing. +- Write unit tests for any new or changed logic. +- Run `./scripts/bench.sh` before submitting a PR — CI will fail if benchmark scores drop below thresholds. +- Keep your changes minimal and focused. + +## ✅ Commit Message Guidelines + +Use the following format: + +``` + +``` + +### Common types: + +- Add: New feature +- Fix: Bug fix +- Update: Code update + +## 📝 CLA / DCO Requirements + +Depending on your contribution, we may ask you to sign: + +- CLA – Contributor License Agreement +- DCO – Developer Certificate of Origin + +To sign the DCO, add `Signed-off-by` to your commit message: + +``` +git commit -s -m "your message" +``` + +Make sure your Git config contains your real name and email. + +Thank you again for helping us improve this project! 🙌 +If you have any questions, open an issue or join the discussion. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..57bc88a --- /dev/null +++ b/LICENSE @@ -0,0 +1,202 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/LICENSE_TEMPLATE/license.txt b/LICENSE_TEMPLATE/license.txt new file mode 100644 index 0000000..ef4d326 --- /dev/null +++ b/LICENSE_TEMPLATE/license.txt @@ -0,0 +1,13 @@ +Copyright 2025-2026 Hancom Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/NOTICE b/NOTICE new file mode 100644 index 0000000..d8a54b4 --- /dev/null +++ b/NOTICE @@ -0,0 +1,38 @@ +OpenDataLoader PDF +Copyright 2025-2026 Hancom, Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +This product includes 'OpenDataLoader PDF' distributed under the Apache +License 2.0, along with various third-party software components. For the +complete source code and detailed copyright notices and license information +for each third-party component, please visit: + + https://github.com/opendataloader-project/opendataloader-pdf + + +THIRD-PARTY LICENSES + +This project includes third-party libraries and components, licensed under +their respective open source licenses. For details, see: + + THIRD_PARTY/THIRD_PARTY_LICENSES.md + THIRD_PARTY/THIRD_PARTY_NOTICES.md + THIRD_PARTY/licenses/ + + +HISTORICAL NOTE + +Versions of OpenDataLoader PDF prior to 2.0 were licensed under the +Mozilla Public License 2.0 (MPL-2.0). From version 2.0 onwards, the +project is licensed under the Apache License 2.0. diff --git a/README.md b/README.md new file mode 100644 index 0000000..0b51db6 --- /dev/null +++ b/README.md @@ -0,0 +1,603 @@ + + +# OpenDataLoader PDF + +**PDF Parser for AI-ready data. Automate PDF accessibility. Open-source.** + +[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://github.com/opendataloader-project/opendataloader-pdf/blob/main/LICENSE) +[![PyPI version](https://img.shields.io/pypi/v/opendataloader-pdf.svg)](https://pypi.org/project/opendataloader-pdf/) +[![npm version](https://img.shields.io/npm/v/@opendataloader/pdf.svg)](https://www.npmjs.com/package/@opendataloader/pdf) +[![Maven Central](https://img.shields.io/maven-central/v/org.opendataloader/opendataloader-pdf-core.svg)](https://search.maven.org/artifact/org.opendataloader/opendataloader-pdf-core) +[![Java](https://img.shields.io/badge/Java-11%2B-blue.svg)](https://github.com/opendataloader-project/opendataloader-pdf#java) + +opendataloader-project%2Fopendataloader-pdf | Trendshift + +🔍 **PDF parser for AI data extraction** — Extract Markdown, JSON (with bounding boxes), and HTML from any PDF. #1 in benchmarks (0.907 overall). Deterministic local mode + AI hybrid mode for complex pages. + +- **How accurate is it?** — #1 in benchmarks: 0.907 overall, 0.928 table accuracy across 200 real-world PDFs including multi-column and scientific papers. Deterministic local mode + AI hybrid mode for complex pages ([benchmarks](#extraction-benchmarks)) +- **Scanned PDFs and OCR?** — Yes. Built-in OCR (80+ languages) in hybrid mode. Works with poor-quality scans at 300 DPI+ ([hybrid mode](#hybrid-mode-1-accuracy-for-complex-pdfs)) +- **Tables, formulas, images, charts?** — Yes. Complex/borderless tables, LaTeX formulas, and AI-generated picture/chart descriptions all via hybrid mode ([hybrid mode](#hybrid-mode-1-accuracy-for-complex-pdfs)) +- **How do I use this for RAG?** — `pip install opendataloader-pdf`, convert in 3 lines. Outputs structured Markdown for chunking, JSON with bounding boxes for source citations, and HTML. LangChain integration available. Python, Node.js, Java SDKs ([quick start](#get-started-in-30-seconds) | [LangChain](#langchain-integration)) + +♿ **PDF accessibility automation** — Auto-tag untagged PDFs into screen-reader-ready Tagged PDFs at scale. First open-source tool to generate Tagged PDFs end-to-end. + +- **What's the problem?** — Accessibility regulations are now enforced worldwide. Manual PDF remediation costs $50–200 per document and doesn't scale ([regulations](#pdf-accessibility--pdfua-conversion)) +- **What's free?** — Layout analysis + auto-tagging (Apache 2.0). Untagged PDF in → Tagged PDF out. No proprietary SDK dependency ([auto-tagging](#auto-tagging)) +- **What about PDF/UA compliance?** — Converting Tagged PDF to PDF/UA-1 or PDF/UA-2 is an enterprise add-on. Auto-tagging generates the Tagged PDF; PDF/UA export is the final step ([pipeline](#accessibility-pipeline)) +- **Why trust this?** — Built in collaboration with [Dual Lab](https://duallab.com) ([veraPDF](https://verapdf.org) developers) based on [PDF Association](https://pdfa.org) specifications, best practice guides and expertise of the [PDF Community](https://pdfa.org/community/). Auto-tagging follows the [Well-Tagged PDF specification](https://pdfa.org/wtpdf/), validated with veraPDF ([collaboration](https://opendataloader.org/docs/tagged-pdf-collaboration)) + +## Get Started in 30 Seconds + +**Requires**: Java 11+ and Python 3.10+ ([Node.js](https://opendataloader.org/docs/quick-start-nodejs) | [Java](https://opendataloader.org/docs/quick-start-java) also available) + +> Before you start: run `java -version`. If not found, install JDK 11+ from [Adoptium](https://adoptium.net/). + +```bash +pip install -U opendataloader-pdf +``` + +```python +import opendataloader_pdf + +# Batch all files in one call — each convert() spawns a JVM process, so repeated calls are slow +opendataloader_pdf.convert( + input_path=["file1.pdf", "file2.pdf", "folder/"], + output_dir="output/", + format="markdown,json" +) +``` + +![OpenDataLoader PDF layout analysis — headings, tables, images detected with bounding boxes](https://raw.githubusercontent.com/opendataloader-project/opendataloader-pdf/main/samples/image/example_annotated_pdf.png) + +*Annotated PDF output — each element (heading, paragraph, table, image) detected with bounding boxes and semantic type.* + +## What Problems Does This Solve? + +| Problem | Solution | Status | +|---------|----------|--------| +| **PDF structure lost during parsing** — wrong reading order, broken tables, no element coordinates | Deterministic local PDF to Markdown/JSON with bounding boxes, XY-Cut++ reading order | Shipped | +| **Complex tables, scanned PDFs, formulas, charts** need AI-level understanding | Hybrid mode routes complex pages to AI backend (#1 in benchmarks) | Shipped | +| **Manual PDF remediation cost** — Accessibility regulations (EAA, ADA, Section 508) demand Tagged PDFs. Manual remediation costs $50–200/doc | Auto-tag untagged PDFs into Tagged PDFs (free, Apache 2.0). Foundation for PDF/UA workflows; full PDF/UA-1/2 export is an enterprise add-on | Auto-tag: Shipped. PDF/UA export: Enterprise | + +## Capability Matrix + +| Capability | Supported | Tier | +|------------|-----------|------| +| **Data extraction** | | | +| Extract text with correct reading order | Yes | Free | +| Bounding boxes for every element | Yes | Free | +| Table extraction (simple borders) | Yes | Free | +| Table extraction (complex/borderless) | Yes | Free (Hybrid) | +| Heading hierarchy detection | Yes | Free | +| List detection (numbered, bulleted, nested) | Yes | Free | +| Image extraction with coordinates | Yes | Free | +| AI chart/image description | Yes | Free (Hybrid) | +| OCR for scanned PDFs | Yes | Free (Hybrid) | +| Formula extraction (LaTeX) | Yes | Free (Hybrid) | +| Tagged PDF structure extraction | Yes | Free | +| AI safety (prompt injection filtering) | Yes | Free | +| Header/footer/watermark filtering | Yes | Free | +| **Accessibility** | | | +| Auto-tagging → Tagged PDF for untagged PDFs | Yes | Free (Apache 2.0) | +| PDF/UA-1, PDF/UA-2 export | 💼 Available | Enterprise | +| Accessibility studio (visual editor) | 💼 Available | Enterprise | +| **Limitations** | | | +| Process Word/Excel/PPT | No | — | +| GPU required | No | — | + +## Extraction Benchmarks + +**opendataloader-pdf [hybrid] ranks #1 overall (0.907)** across reading order, table, and heading extraction accuracy. + +| Engine | Overall | Reading Order | Table | Heading | Speed (s/page) | License | +|--------|---------|---------------|-------|---------|----------------|---------| +| **opendataloader [hybrid]** | **0.907** | **0.934** | **0.928** | 0.821 | 0.463 | Apache-2.0 | +| nutrient | 0.885 | 0.925 | 0.708 | 0.819 | **0.008** | Commercial | +| docling | 0.882 | 0.898 | 0.887 | **0.824** | 0.762 | MIT | +| marker | 0.861 | 0.890 | 0.808 | 0.796 | 53.932 | GPL-3.0 | +| unstructured [hi_res] | 0.841 | 0.904 | 0.588 | 0.749 | 3.008 | Apache-2.0 | +| edgeparse | 0.837 | 0.894 | 0.717 | 0.706 | 0.036 | Apache-2.0 | +| opendataloader | 0.831 | 0.902 | 0.489 | 0.739 | 0.015 | Apache-2.0 | +| mineru | 0.831 | 0.857 | 0.873 | 0.743 | 5.962 | AGPL-3.0 | +| pymupdf4llm | 0.732 | 0.885 | 0.401 | 0.412 | 0.091 | AGPL-3.0 | +| unstructured | 0.686 | 0.882 | 0.000 | 0.388 | 0.077 | Apache-2.0 | +| markitdown | 0.589 | 0.844 | 0.273 | 0.000 | 0.114 | MIT | +| liteparse | 0.576 | 0.866 | 0.000 | 0.000 | 1.061 | Apache-2.0 | + +> Scores normalized to [0, 1]. Higher is better for accuracy; lower is better for speed. **Bold** = best. [Full benchmark details](https://github.com/opendataloader-project/opendataloader-bench) + +[![Benchmark](https://github.com/opendataloader-project/opendataloader-bench/raw/refs/heads/main/charts/benchmark.png)](https://github.com/opendataloader-project/opendataloader-bench) + +[![Quality Breakdown](https://github.com/opendataloader-project/opendataloader-bench/raw/refs/heads/main/charts/benchmark_quality.png)](https://github.com/opendataloader-project/opendataloader-bench) + +## Which Mode Should I Use? + +| Your Document | Mode | Install | Server Command | Client Command | +|---------------|------|---------|----------------|----------------| +| Standard digital PDF | Fast (default) | `pip install opendataloader-pdf` | None needed | `opendataloader-pdf file1.pdf file2.pdf folder/` | +| Complex or nested tables | **Hybrid** | `pip install "opendataloader-pdf[hybrid]"` | `opendataloader-pdf-hybrid --port 5002` | `opendataloader-pdf --hybrid docling-fast file1.pdf file2.pdf folder/` | +| Scanned / image-based PDF | Hybrid + OCR | `pip install "opendataloader-pdf[hybrid]"` | `opendataloader-pdf-hybrid --port 5002 --force-ocr` | `opendataloader-pdf --hybrid docling-fast file1.pdf file2.pdf folder/` | +| Non-English scanned PDF | Hybrid + OCR | `pip install "opendataloader-pdf[hybrid]"` | `opendataloader-pdf-hybrid --port 5002 --force-ocr --ocr-lang "ko,en"` | `opendataloader-pdf --hybrid docling-fast file1.pdf file2.pdf folder/` | +| Mathematical formulas | Hybrid + formula | `pip install "opendataloader-pdf[hybrid]"` | `opendataloader-pdf-hybrid --enrich-formula` | `opendataloader-pdf --hybrid docling-fast --hybrid-mode full file1.pdf file2.pdf folder/` | +| Charts needing description | Hybrid + picture | `pip install "opendataloader-pdf[hybrid]"` | `opendataloader-pdf-hybrid --enrich-picture-description` | `opendataloader-pdf --hybrid docling-fast --hybrid-mode full file1.pdf file2.pdf folder/` | +| Untagged PDFs needing accessibility | Auto-tagging → Tagged PDF | `pip install opendataloader-pdf` | None needed | `opendataloader-pdf --format tagged-pdf file1.pdf file2.pdf folder/` | + +## Quick Start + +### Python + +```bash +pip install -U opendataloader-pdf +``` + +```python +import opendataloader_pdf + +# Batch all files in one call — each convert() spawns a JVM process, so repeated calls are slow +opendataloader_pdf.convert( + input_path=["file1.pdf", "file2.pdf", "folder/"], + output_dir="output/", + format="markdown,json" +) +``` + +### Node.js + +```bash +npm install @opendataloader/pdf +``` + +```typescript +import { convert } from '@opendataloader/pdf'; + +await convert(['file1.pdf', 'file2.pdf', 'folder/'], { + outputDir: 'output/', + format: 'markdown,json' +}); +``` + +### Java + +```xml + + org.opendataloader + opendataloader-pdf-core + +``` + +[Python Quick Start](https://opendataloader.org/docs/quick-start-python) | [Node.js Quick Start](https://opendataloader.org/docs/quick-start-nodejs) | [Java Quick Start](https://opendataloader.org/docs/quick-start-java) + +## Hybrid Mode: #1 Accuracy for Complex PDFs + +Hybrid mode combines fast local Java processing with AI backends. Simple pages stay local (0.02s); complex pages route to AI for +90% table accuracy. + +```bash +pip install -U "opendataloader-pdf[hybrid]" +``` + +**Terminal 1** — Start the backend server: + +```bash +opendataloader-pdf-hybrid --port 5002 +``` + +**Terminal 2** — Process PDFs: + +```bash +# Batch all files in one call — each invocation spawns a JVM process, so repeated calls are slow +opendataloader-pdf --hybrid docling-fast file1.pdf file2.pdf folder/ +``` + +**Python:** + +```python +# Batch all files in one call — each convert() spawns a JVM process, so repeated calls are slow +opendataloader_pdf.convert( + input_path=["file1.pdf", "file2.pdf", "folder/"], + output_dir="output/", + hybrid="docling-fast" +) +``` + +### OCR for Scanned PDFs + +Start the backend with `--force-ocr` for image-based PDFs with no selectable text: + +```bash +opendataloader-pdf-hybrid --port 5002 --force-ocr +``` + +For non-English documents, specify the language: + +```bash +opendataloader-pdf-hybrid --port 5002 --force-ocr --ocr-lang "ko,en" +``` + +Supported languages: `en`, `ko`, `ja`, `ch_sim`, `ch_tra`, `de`, `fr`, `ar`, and more. + +### Formula Extraction (LaTeX) + +Extract mathematical formulas as LaTeX from scientific PDFs: + +```bash +# Server: enable formula enrichment +opendataloader-pdf-hybrid --enrich-formula + +# Batch all files in one call — each invocation spawns a JVM process, so repeated calls are slow +opendataloader-pdf --hybrid docling-fast --hybrid-mode full file1.pdf file2.pdf folder/ +``` + +Output in JSON: +```json +{ + "type": "formula", + "page number": 1, + "bounding box": [226.2, 144.7, 377.1, 168.7], + "content": "\\frac{f(x+h) - f(x)}{h}" +} +``` + +> **Note**: Formula and picture description enrichments require `--hybrid-mode full` on the client side. + +### Chart & Image Description + +Generate AI descriptions for charts and images — useful for RAG search and accessibility alt text: + +```bash +# Server +opendataloader-pdf-hybrid --enrich-picture-description + +# Batch all files in one call — each invocation spawns a JVM process, so repeated calls are slow +opendataloader-pdf --hybrid docling-fast --hybrid-mode full file1.pdf file2.pdf folder/ +``` + +Output in JSON: +```json +{ + "type": "picture", + "page number": 1, + "bounding box": [72.0, 400.0, 540.0, 650.0], + "description": "A bar chart showing waste generation by region from 2016 to 2030..." +} +``` + +> Uses SmolVLM (256M), a lightweight vision model. Custom prompts supported via `--picture-description-prompt`. + +### Hancom Data Loader Integration — Coming Soon + +Enterprise-grade AI document analysis via [Hancom Data Loader](https://sdk.hancom.com/en/services/1?utm_source=github&utm_medium=readme&utm_campaign=opendataloader-pdf) — customer-customized models trained on your domain-specific documents. 30+ element types (tables, charts, formulas, captions, footnotes, etc.), VLM-based image/chart understanding, complex table extraction (merged cells, nested tables), SLA-backed OCR for scanned documents, and native HWP/HWPX support. Supports PDF, DOCX, XLSX, PPTX, HWP, PNG, JPG. [Live demo](https://livedemo.sdk.hancom.com/en/dataloader?utm_source=github&utm_medium=readme&utm_campaign=opendataloader-pdf) + +[Hybrid Mode Guide](https://opendataloader.org/docs/hybrid-mode) + +## Output Formats + +| Format | Use Case | +|--------|----------| +| **JSON** | Structured data with bounding boxes, semantic types | +| **Markdown** | Clean text for LLM context, RAG chunks | +| **HTML** | Web display with styling | +| **Annotated PDF** | Visual debugging — see detected structures ([sample](https://opendataloader.org/demo/samples/01030000000000)) | +| **Text** | Plain text extraction | + +Combine formats: `format="json,markdown"` + +### JSON Output Example + +```json +{ + "type": "heading", + "id": 42, + "level": "Title", + "page number": 1, + "bounding box": [72.0, 700.0, 540.0, 730.0], + "heading level": 1, + "font": "Helvetica-Bold", + "font size": 24.0, + "text color": "[0.0]", + "content": "Introduction" +} +``` + +| Field | Description | +|-------|-------------| +| `type` | Element type: heading, paragraph, table, list, image, caption, formula | +| `id` | Unique identifier for cross-referencing | +| `page number` | 1-indexed page reference | +| `bounding box` | `[left, bottom, right, top]` in PDF points (72pt = 1 inch) | +| `heading level` | Heading depth (1+) | +| `content` | Extracted text | + +[Full JSON Schema](https://opendataloader.org/docs/reference/json-schema) + +## Advanced Features + +### Tagged PDF Support + +When a PDF has structure tags, OpenDataLoader extracts the **exact layout** the author intended — no guessing, no heuristics. Headings, lists, tables, and reading order are preserved from the source. + +> **Output quality depends on tag quality.** Not all tagged PDFs are well-tagged. For PDFs with sparse or incorrect tags, the default heuristic mode or `--hybrid docling-fast` often produces better results. + +```python +# Batch all files in one call — each convert() spawns a JVM process, so repeated calls are slow +opendataloader_pdf.convert( + input_path=["file1.pdf", "file2.pdf", "folder/"], + output_dir="output/", + use_struct_tree=True # Use native PDF structure tags +) +``` + +Most PDF parsers ignore structure tags entirely. [Learn more](https://opendataloader.org/docs/tagged-pdf) + +### AI Safety: Prompt Injection Protection + +PDFs can contain hidden prompt injection attacks. OpenDataLoader automatically filters: + +- Hidden text (transparent, zero-size fonts) +- Off-page content +- Suspicious invisible layers + +To sanitize sensitive data (emails, URLs, phone numbers → placeholders), enable it explicitly: + +```bash +# Batch all files in one call — each invocation spawns a JVM process, so repeated calls are slow +opendataloader-pdf file1.pdf file2.pdf folder/ --sanitize +``` + +[AI Safety Guide](https://opendataloader.org/docs/ai-safety) + +### LangChain Integration + +```bash +pip install -U langchain-opendataloader-pdf +``` + +```python +from langchain_opendataloader_pdf import OpenDataLoaderPDFLoader + +loader = OpenDataLoaderPDFLoader( + file_path=["file1.pdf", "file2.pdf", "folder/"], + format="text" +) +documents = loader.load() +``` + +[LangChain Docs](https://docs.langchain.com/oss/python/integrations/document_loaders/opendataloader_pdf) | [GitHub](https://github.com/opendataloader-project/langchain-opendataloader-pdf) | [PyPI](https://pypi.org/project/langchain-opendataloader-pdf/) + +### Advanced Options + +```python +# Batch all files in one call — each convert() spawns a JVM process, so repeated calls are slow +opendataloader_pdf.convert( + input_path=["file1.pdf", "file2.pdf", "folder/"], + output_dir="output/", + format="json,markdown,pdf", + image_output="embedded", # "off", "embedded" (Base64), or "external" (default) + image_format="jpeg", # "png" or "jpeg" + use_struct_tree=True, # Use native PDF structure +) +``` + +[Full CLI Options Reference](https://opendataloader.org/docs/reference/cli-options) + +## PDF Accessibility & PDF/UA Conversion + +**Problem**: Millions of existing PDFs lack structure tags, failing accessibility regulations (EAA, ADA/Section 508, Korea Digital Inclusion Act). Manual remediation costs $50–200 per document and doesn't scale. + +**OpenDataLoader's approach**: Built in collaboration with [PDF Association](https://pdfa.org) and [Dual Lab](https://duallab.com) (developers of [veraPDF](https://verapdf.org), the industry-reference open-source PDF/A and PDF/UA validator). Auto-tagging follows the [Well-Tagged PDF specification](https://pdfa.org/resource/well-tagged-pdf/) and is validated programmatically using veraPDF — automated conformance checks against PDF accessibility standards, not manual review. No existing open-source tool generates Tagged PDFs end-to-end — most rely on proprietary SDKs for the tag-writing step. OpenDataLoader does it all under Apache 2.0. ([collaboration details](https://opendataloader.org/docs/tagged-pdf-collaboration)) + +| Regulation | Deadline | Requirement | +|------------|----------|-------------| +| **European Accessibility Act (EAA)** | June 28, 2025 | Accessible digital products across the EU | +| **ADA & Section 508** | In effect | U.S. federal agencies and public accommodations | +| **Digital Inclusion Act** | In effect | South Korea digital service accessibility | + +### Standards & Validation + +| Aspect | Detail | +|--------|--------| +| **Specification** | [Well-Tagged PDF](https://pdfa.org/resource/well-tagged-pdf/) by PDF Association | +| **Validation** | [veraPDF](https://verapdf.org) — industry-reference open-source PDF/A & PDF/UA validator | +| **Collaboration** | PDF Association + [Dual Lab](https://duallab.com) (veraPDF developers) co-develop tagging and validation | +| **License** | Auto-tagging → Tagged PDF: Apache 2.0 (free). PDF/UA export: Enterprise | + +### Accessibility Pipeline + +| Step | Feature | Status | Tier | +|------|---------|--------|------| +| 1. **Audit** | Read existing PDF tags, detect untagged PDFs | Shipped | Free | +| 2. **Auto-tag → Tagged PDF** | Generate structure tags for untagged PDFs | Shipped | Free (Apache 2.0) | +| 3. **Export PDF/UA** | Convert to PDF/UA-1 or PDF/UA-2 compliant files | 💼 Available | Enterprise | +| 4. **Visual editing** | Accessibility studio — review and fix tags | 💼 Available | Enterprise | + +> **💼 Enterprise features** are available on request. [Contact us](https://opendataloader.org/contact) to get started. + +### Auto-Tagging + +Generate Tagged PDFs from untagged PDFs — output is a screen-reader-ready PDF with structure tags (headings, paragraphs, lists, tables, reading order). + +```python +import opendataloader_pdf + +# Untagged PDF in → Tagged PDF out +opendataloader_pdf.convert( + input_path=["file1.pdf", "file2.pdf", "folder/"], + output_dir="output/", + format="tagged-pdf" +) +``` + +```bash +# CLI +opendataloader-pdf --format tagged-pdf file1.pdf file2.pdf folder/ +``` + +Combine with other formats: `format="json,tagged-pdf"`. + +### End-to-End Compliance Workflow + +``` +Existing PDFs (untagged) + │ + ▼ +┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐ ┌──────────────────┐ +│ 1. Audit │───>│ 2. Auto-Tag │───>│ 3. Export │───>│ 4. Studio │ +│ (check tags) │ │ (→ Tagged PDF) │ │ (PDF/UA) │ │ (visual editor) │ +└─────────────────┘ └──────────────────┘ └─────────────────┘ └──────────────────┘ + │ │ │ │ + ▼ ▼ ▼ ▼ + use_struct_tree format="tagged-pdf" PDF/UA export Accessibility Studio + (Available now) (Available, Apache 2.0) (Enterprise) (Enterprise) +``` + +[PDF Accessibility Guide](https://opendataloader.org/docs/accessibility-compliance) + +## Roadmap + +| Feature | Timeline | Tier | +|---------|----------|------| +| **[Hancom Data Loader](https://sdk.hancom.com/en/services/1?utm_source=github&utm_medium=readme&utm_campaign=opendataloader-pdf)** — Enterprise AI document analysis, customer-customized models, VLM-based chart/image understanding, production-grade OCR | Q2-Q3 2026 | Planned | +| **Structure validation** — Verify PDF tag trees | Q3 2026 | Planned | + +[Full Roadmap](https://opendataloader.org/docs/upcoming-roadmap) + +## Frequently Asked Questions + +### What is the best PDF parser for RAG? + +For RAG pipelines, you need a parser that preserves document structure, maintains correct reading order, and provides element coordinates for citations. OpenDataLoader is designed specifically for this — it outputs structured JSON with bounding boxes, handles multi-column layouts with XY-Cut++, and runs locally without GPU. In hybrid mode, it ranks #1 overall (0.907) in benchmarks. + +### What is the best open-source PDF parser? + +OpenDataLoader PDF is the only open-source parser that combines: rule-based deterministic extraction (no GPU), bounding boxes for every element, XY-Cut++ reading order, built-in AI safety filters, native Tagged PDF support, and hybrid AI mode for complex documents. It ranks #1 in overall accuracy (0.907) while running locally on CPU. + +### How do I extract tables from PDF for LLM? + +OpenDataLoader detects tables using border analysis and text clustering, preserving row/column structure. For complex tables, enable hybrid mode for +90% accuracy improvement (0.489 to 0.928 TEDS score): + +```python +# Batch all files in one call — each convert() spawns a JVM process, so repeated calls are slow +opendataloader_pdf.convert( + input_path=["file1.pdf", "file2.pdf", "folder/"], + output_dir="output/", + format="json", + hybrid="docling-fast" # For complex tables +) +``` + +### How does it compare to docling, marker, or pymupdf4llm? + +OpenDataLoader [hybrid] ranks #1 overall (0.907) across reading order, table, and heading accuracy. Key differences: docling (0.882) is strong but lacks bounding boxes and AI safety filters. marker (0.861) requires GPU and is 1000x slower (53.932s/page). pymupdf4llm (0.732) is fast but has poor table (0.401) and heading (0.412) accuracy. OpenDataLoader is the only parser that combines deterministic local extraction, bounding boxes for every element, and built-in prompt injection protection. See [full benchmark](https://github.com/opendataloader-project/opendataloader-bench). + +### Can I use this without sending data to the cloud? + +Yes. OpenDataLoader runs 100% locally. No API calls, no data transmission — your documents never leave your environment. The hybrid mode backend also runs locally on your machine. Ideal for legal, healthcare, and financial documents. + +### Does it support OCR for scanned PDFs? + +Yes, via hybrid mode. Install with `pip install "opendataloader-pdf[hybrid]"`, start the backend with `--force-ocr`, then process as usual. Supports multiple languages including Korean, Japanese, Chinese, Arabic, and more via `--ocr-lang`. + +### Does it work with Korean, Japanese, or Chinese documents? + +Yes. For digital PDFs, text extraction works out of the box. For scanned PDFs, use hybrid mode with `--force-ocr --ocr-lang "ko,en"` (or `ja`, `ch_sim`, `ch_tra`). Coming soon: [Hancom Data Loader](https://sdk.hancom.com/en/services/1?utm_source=github&utm_medium=readme&utm_campaign=opendataloader-pdf) integration — enterprise-grade AI document analysis with built-in production-grade OCR and customer-customized models optimized for your specific document types and workflows. + +### How fast is it? + +Local mode processes 60+ pages per second on CPU (0.02s/page). Hybrid mode processes 2+ pages per second (0.46s/page) with significantly higher accuracy for complex documents. No GPU required. Benchmarked on Apple M4. [Full benchmark details](https://github.com/opendataloader-project/opendataloader-bench). With multi-process batch processing, throughput exceeds 100 pages per second on 8+ core machines. + +### Does it handle multi-column layouts? + +Yes. OpenDataLoader uses XY-Cut++ reading order analysis to correctly sequence text across multi-column pages, sidebars, and mixed layouts. This works in both local and hybrid modes without any configuration. + +### What is hybrid mode? + +Hybrid mode combines fast local Java processing with an AI backend. Simple pages are processed locally (0.02s/page); complex pages (tables, scanned content, formulas, charts) are automatically routed to the AI backend for higher accuracy. The backend runs locally on your machine — no cloud required. See [Which Mode Should I Use?](#which-mode-should-i-use) and [Hybrid Mode Guide](https://opendataloader.org/docs/hybrid-mode). + +### Does it work with LangChain? + +Yes. Install `langchain-opendataloader-pdf` for an official LangChain document loader integration. See [LangChain docs](https://docs.langchain.com/oss/python/integrations/document_loaders/opendataloader_pdf). + +### How do I chunk PDFs for RAG? + +OpenDataLoader outputs structured Markdown with headings, tables, and lists preserved — ideal input for semantic chunking. Each element in JSON output includes `type`, `heading level`, and `page number`, so you can split by section or page boundary. For most RAG pipelines: parse with `format="markdown"` for text chunks, or `format="json"` when you need element-level control. Pair with LangChain's `RecursiveCharacterTextSplitter` or your own heading-based splitter for best results. + +### How do I cite PDF sources in RAG answers? + +Every element in JSON output includes a `bounding box` (`[left, bottom, right, top]` in PDF points) and `page number`. When your RAG pipeline returns an answer, map the source chunk back to its bounding box to highlight the exact location in the original PDF. This enables "click to source" UX — users see which paragraph, table, or figure the answer came from. No other open-source parser provides bounding boxes for every element by default. + +### How do I convert PDF to Markdown for LLM? + +```python +import opendataloader_pdf + +# Batch all files in one call — each convert() spawns a JVM process, so repeated calls are slow +opendataloader_pdf.convert( + input_path=["file1.pdf", "file2.pdf", "folder/"], + output_dir="output/", + format="markdown" +) +``` + +OpenDataLoader preserves heading hierarchy, table structure, and reading order in the Markdown output. For complex documents with borderless tables or scanned pages, use hybrid mode (`hybrid="docling-fast"`) for higher accuracy. The output is clean enough to feed directly into LLM context windows or RAG chunking pipelines. + +### Is there an automated PDF accessibility remediation tool? + +Yes. OpenDataLoader is the first open-source tool that automates PDF accessibility end-to-end. Built in collaboration with [PDF Association](https://pdfa.org) and [Dual Lab](https://duallab.com) (veraPDF developers), auto-tagging follows the Well-Tagged PDF specification and is validated programmatically using veraPDF. The layout analysis engine detects document structure (headings, tables, lists, reading order) and generates accessibility tags automatically. Auto-tagging converts untagged PDFs into Tagged PDFs under Apache 2.0 — no proprietary SDK dependency. Use `format="tagged-pdf"` (Python/Node.js) or `--format tagged-pdf` (CLI). For organizations needing full PDF/UA compliance, enterprise add-ons provide PDF/UA export and a visual tag editor. This replaces manual remediation workflows that typically cost $50–200+ per document. + +### Is this really the first open-source PDF auto-tagging tool? + +Yes. Existing tools either depend on proprietary SDKs for writing structure tags, only output non-PDF formats (e.g., Docling outputs Markdown/JSON but cannot produce Tagged PDFs), or require manual intervention. OpenDataLoader is the first to do layout analysis → tag generation → Tagged PDF output entirely under an open-source license (Apache 2.0), with no proprietary dependency. Auto-tagging follows the PDF Association's Well-Tagged PDF specification and is validated using veraPDF, the industry-reference open-source PDF/A and PDF/UA validator. + +### How do I convert existing PDFs to PDF/UA? + +OpenDataLoader provides an end-to-end pipeline: audit existing PDFs for tags (`use_struct_tree=True`), auto-tag untagged PDFs into Tagged PDFs (`format="tagged-pdf"`, free under Apache 2.0), and export as PDF/UA-1 or PDF/UA-2 (enterprise add-on). Auto-tagging follows the PDF Association's Well-Tagged PDF specification and is validated using veraPDF. Auto-tagging generates the Tagged PDF; PDF/UA export is the final step. [Contact us](https://opendataloader.org/contact) for enterprise integration. + +### How do I make my PDFs accessible for EAA compliance? + +The European Accessibility Act requires accessible digital products by June 28, 2025. OpenDataLoader supports the full remediation workflow: audit → auto-tag → Tagged PDF → PDF/UA export. Auto-tagging follows the PDF Association's Well-Tagged PDF specification and is validated using veraPDF, ensuring standards-compliant output. Auto-tagging to Tagged PDF is open-source under Apache 2.0. PDF/UA export and accessibility studio are enterprise add-ons. See our [Accessibility Guide](https://opendataloader.org/docs/accessibility-compliance). + +### Is OpenDataLoader PDF free? + +The core library is **open-source under Apache 2.0** — free for commercial use. This includes all extraction features (text, tables, images, OCR, formulas, charts via hybrid mode), AI safety filters, Tagged PDF support, and auto-tagging to Tagged PDF. We are committed to keeping the core accessibility pipeline (layout analysis → auto-tagging → Tagged PDF) free and open-source. Enterprise add-ons (PDF/UA export, accessibility studio) are available for organizations needing end-to-end regulatory compliance. + +### Why did the license change from MPL 2.0 to Apache 2.0? + +MPL 2.0 requires file-level copyleft, which often triggers legal review before enterprise adoption. Apache 2.0 is fully permissive — no copyleft obligations, easier to integrate into commercial projects. If you are using a pre-2.0 version, it remains under MPL 2.0 and you can continue using it. Upgrading to 2.0+ means your project follows Apache 2.0 terms, which are strictly more permissive — no additional obligations, no action needed on your side. + +## Documentation + +- [Quick Start (Python)](https://opendataloader.org/docs/quick-start-python) +- [Quick Start (Node.js)](https://opendataloader.org/docs/quick-start-nodejs) +- [Quick Start (Java)](https://opendataloader.org/docs/quick-start-java) +- [JSON Schema Reference](https://opendataloader.org/docs/reference/json-schema) +- [CLI Options](https://opendataloader.org/docs/reference/cli-options) +- [Hybrid Mode Guide](https://opendataloader.org/docs/hybrid-mode) +- [Tagged PDF Support](https://opendataloader.org/docs/tagged-pdf) +- [AI Safety Features](https://opendataloader.org/docs/ai-safety) +- [PDF Accessibility](https://opendataloader.org/docs/accessibility-compliance) + +## Contributing + +We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines. + +## License + +[Apache License 2.0](LICENSE) + +> **Note:** Versions prior to 2.0 are licensed under the [Mozilla Public License 2.0](https://www.mozilla.org/MPL/2.0/). + +--- + +**Found this useful?** Give us a star to help others discover OpenDataLoader. diff --git a/README.wehub.md b/README.wehub.md new file mode 100644 index 0000000..499b679 --- /dev/null +++ b/README.wehub.md @@ -0,0 +1,7 @@ +# WeHub 来源说明 + +- 原始项目:`opendataloader-project/opendataloader-pdf` +- 原始仓库:https://github.com/opendataloader-project/opendataloader-pdf +- 导入方式:上游默认分支的最新快照 +- 原作者、版权和许可证信息以原始仓库及本仓库 LICENSE 为准 +- 本文件仅用于记录来源,不代表 WeHub 是原项目作者 diff --git a/SUPPORT.md b/SUPPORT.md new file mode 100644 index 0000000..8b41952 --- /dev/null +++ b/SUPPORT.md @@ -0,0 +1,32 @@ +# Support + +This project uses GitHub Issues to track bugs and feature requests. Please search the existing +issues before filing new issues to avoid duplicates. For new issues, file your bug or +feature request as a new Issue. + +For help and questions about using this project, please contact our team via Teams or tag us in the issues. + +## AI-Powered Issue Processing + +This project uses AI to automatically process GitHub issues through a three-stage workflow: + +### How It Works + +1. **Triage**: Validates your issue (checks for duplicates, spam, and project scope) +2. **Analyze**: Analyzes the codebase to understand the issue and determine the best approach +3. **Fix**: Automatically creates a PR for eligible issues + +### What to Expect + +After submitting an issue, you may see these labels: + +| Label | Meaning | +|-------|---------| +| `fix/auto-eligible` | AI can automatically fix this issue | +| `fix/manual-required` | Requires human expert review | +| `fix/comment-only` | No code change needed; resolved via comment | + +### Commands (CODEOWNERS only) + +- `@ai-issue analyze` - Request re-analysis of an issue +- `@ai-issue fix` - Trigger automatic fix attempt diff --git a/THIRD_PARTY/THIRD_PARTY_LICENSES.md b/THIRD_PARTY/THIRD_PARTY_LICENSES.md new file mode 100644 index 0000000..a4620c4 --- /dev/null +++ b/THIRD_PARTY/THIRD_PARTY_LICENSES.md @@ -0,0 +1,323 @@ +# THIRD-PARTY LICENSES + +This project includes third-party libraries and components, licensed under their respective open source licenses. +Hancom, Inc. distributes the veraPDF components under the Mozilla Public License 2.0 (MPL-2.0), chosen from dual-licensed options. + +| Component | Version | License | Download URL | +| :--- | :--- | :--- | :--- | +| @esbuild/aix-ppc64 | 0.25.12, 0.27.0 | MIT | https://github.com/evanw/esbuild | +| @esbuild/android-arm | 0.25.12, 0.27.0 | MIT | https://github.com/evanw/esbuild | +| @esbuild/android-arm64 | 0.25.12, 0.27.0 | MIT | https://github.com/evanw/esbuild | +| @esbuild/android-x64 | 0.25.12, 0.27.0 | MIT | https://github.com/evanw/esbuild | +| @esbuild/darwin-arm64 | 0.25.12, 0.27.0 | MIT | https://github.com/evanw/esbuild | +| @esbuild/darwin-x64 | 0.25.12, 0.27.0 | MIT | https://github.com/evanw/esbuild | +| @esbuild/freebsd-arm64 | 0.25.12, 0.27.0 | MIT | https://github.com/evanw/esbuild | +| @esbuild/freebsd-x64 | 0.25.12, 0.27.0 | MIT | https://github.com/evanw/esbuild | +| @esbuild/linux-arm | 0.25.12, 0.27.0 | MIT | https://github.com/evanw/esbuild | +| @esbuild/linux-arm64 | 0.25.12, 0.27.0 | MIT | https://github.com/evanw/esbuild | +| @esbuild/linux-ia32 | 0.25.12, 0.27.0 | MIT | https://github.com/evanw/esbuild | +| @esbuild/linux-loong64 | 0.25.12, 0.27.0 | MIT | https://github.com/evanw/esbuild | +| @esbuild/linux-mips64el | 0.25.12, 0.27.0 | MIT | https://github.com/evanw/esbuild | +| @esbuild/linux-ppc64 | 0.25.12, 0.27.0 | MIT | https://github.com/evanw/esbuild | +| @esbuild/linux-riscv64 | 0.25.12, 0.27.0 | MIT | https://github.com/evanw/esbuild | +| @esbuild/linux-s390x | 0.25.12, 0.27.0 | MIT | https://github.com/evanw/esbuild | +| @esbuild/linux-x64 | 0.25.12, 0.27.0 | MIT | https://github.com/evanw/esbuild | +| @esbuild/netbsd-arm64 | 0.25.12, 0.27.0 | MIT | https://github.com/evanw/esbuild | +| @esbuild/netbsd-x64 | 0.25.12, 0.27.0 | MIT | https://github.com/evanw/esbuild | +| @esbuild/openbsd-arm64 | 0.25.12, 0.27.0 | MIT | https://github.com/evanw/esbuild | +| @esbuild/openbsd-x64 | 0.25.12, 0.27.0 | MIT | https://github.com/evanw/esbuild | +| @esbuild/openharmony-arm64 | 0.25.12, 0.27.0 | MIT | https://github.com/evanw/esbuild | +| @esbuild/sunos-x64 | 0.25.12, 0.27.0 | MIT | https://github.com/evanw/esbuild | +| @esbuild/win32-arm64 | 0.25.12, 0.27.0 | MIT | https://github.com/evanw/esbuild | +| @esbuild/win32-ia32 | 0.25.12, 0.27.0 | MIT | https://github.com/evanw/esbuild | +| @esbuild/win32-x64 | 0.25.12, 0.27.0 | MIT | https://github.com/evanw/esbuild | +| @eslint-community/eslint-utils | 4.9.0, 4.9.1 | MIT | https://github.com/eslint-community/eslint-utils | +| @eslint-community/regexpp | 4.12.2 | MIT | https://github.com/eslint-community/regexpp | +| @eslint/config-array | 0.21.1 | Apache-2.0 | https://github.com/eslint/rewrite | +| @eslint/config-helpers | 0.4.2 | Apache-2.0 | https://github.com/eslint/rewrite/tree/main/packages/config-helpers | +| @eslint/core | 0.17.0 | Apache-2.0 | https://github.com/eslint/rewrite | +| @eslint/eslintrc | 3.3.3 | MIT | https://github.com/eslint/eslintrc | +| @eslint/js | 9.39.2 | MIT | https://eslint.org | +| @eslint/object-schema | 2.1.7 | Apache-2.0 | https://github.com/eslint/rewrite | +| @eslint/plugin-kit | 0.4.1 | Apache-2.0 | https://github.com/eslint/rewrite | +| @humanfs/core | 0.19.1 | Apache-2.0 | https://github.com/humanwhocodes/humanfs | +| @humanfs/node | 0.16.7 | Apache-2.0 | https://github.com/humanwhocodes/humanfs | +| @humanwhocodes/module-importer | 1.0.1 | Apache-2.0 | https://github.com/humanwhocodes/module-importer | +| @humanwhocodes/retry | 0.4.3 | Apache-2.0 | https://github.com/humanwhocodes/retrier | +| @isaacs/balanced-match | 4.0.1 | MIT | https://github.com/isaacs/balanced-match | +| @isaacs/brace-expansion | 5.0.1 | MIT | https://github.com/isaacs/brace-expansion | +| @isaacs/cliui | 8.0.2 | ISC | https://github.com/yargs/cliui | +| @jridgewell/gen-mapping | 0.3.13 | MIT | https://github.com/jridgewell/gen-mapping | +| @jridgewell/resolve-uri | 3.1.2 | MIT | https://github.com/jridgewell/resolve-uri | +| @jridgewell/sourcemap-codec | 1.5.5 | MIT | https://github.com/jridgewell/sourcemap-codec | +| @jridgewell/trace-mapping | 0.3.31 | MIT | https://github.com/jridgewell/trace-mapping | +| @pkgjs/parseargs | 0.11.0 | MIT | https://github.com/pkgjs/parseargs | +| @rollup/rollup-android-arm-eabi | 4.53.2 | MIT | https://rollupjs.org/ | +| @rollup/rollup-android-arm64 | 4.53.2 | MIT | https://rollupjs.org/ | +| @rollup/rollup-darwin-arm64 | 4.53.2 | MIT | https://rollupjs.org/ | +| @rollup/rollup-darwin-x64 | 4.53.2 | MIT | https://rollupjs.org/ | +| @rollup/rollup-freebsd-arm64 | 4.53.2 | MIT | https://rollupjs.org/ | +| @rollup/rollup-freebsd-x64 | 4.53.2 | MIT | https://rollupjs.org/ | +| @rollup/rollup-linux-arm-gnueabihf | 4.53.2 | MIT | https://rollupjs.org/ | +| @rollup/rollup-linux-arm-musleabihf | 4.53.2 | MIT | https://rollupjs.org/ | +| @rollup/rollup-linux-arm64-gnu | 4.53.2 | MIT | https://rollupjs.org/ | +| @rollup/rollup-linux-arm64-musl | 4.53.2 | MIT | https://rollupjs.org/ | +| @rollup/rollup-linux-loong64-gnu | 4.53.2 | MIT | https://rollupjs.org/ | +| @rollup/rollup-linux-ppc64-gnu | 4.53.2 | MIT | https://rollupjs.org/ | +| @rollup/rollup-linux-riscv64-gnu | 4.53.2 | MIT | https://rollupjs.org/ | +| @rollup/rollup-linux-riscv64-musl | 4.53.2 | MIT | https://rollupjs.org/ | +| @rollup/rollup-linux-s390x-gnu | 4.53.2 | MIT | https://rollupjs.org/ | +| @rollup/rollup-linux-x64-gnu | 4.53.2 | MIT | https://rollupjs.org/ | +| @rollup/rollup-linux-x64-musl | 4.53.2 | MIT | https://rollupjs.org/ | +| @rollup/rollup-openharmony-arm64 | 4.53.2 | MIT | https://rollupjs.org/ | +| @rollup/rollup-win32-arm64-msvc | 4.53.2 | MIT | https://rollupjs.org/ | +| @rollup/rollup-win32-ia32-msvc | 4.53.2 | MIT | https://rollupjs.org/ | +| @rollup/rollup-win32-x64-gnu | 4.53.2 | MIT | https://rollupjs.org/ | +| @rollup/rollup-win32-x64-msvc | 4.53.2 | MIT | https://rollupjs.org/ | +| @standard-schema/spec | 1.0.0 | MIT | https://github.com/standard-schema/standard-schema | +| @types/chai | 5.2.3 | MIT | https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/chai | +| @types/deep-eql | 4.0.2 | MIT | https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/deep-eql | +| @types/estree | 1.0.8 | MIT | https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/estree | +| @types/json-schema | 7.0.15 | MIT | https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/json-schema | +| @types/node | 25.2.0 | MIT | https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node | +| @typescript-eslint/eslint-plugin | 8.54.0 | MIT | https://github.com/typescript-eslint/typescript-eslint | +| @typescript-eslint/parser | 8.54.0 | MIT | https://github.com/typescript-eslint/typescript-eslint | +| @typescript-eslint/project-service | 8.54.0 | MIT | https://typescript-eslint.io | +| @typescript-eslint/scope-manager | 8.54.0 | MIT | https://github.com/typescript-eslint/typescript-eslint | +| @typescript-eslint/tsconfig-utils | 8.54.0 | MIT | https://typescript-eslint.io | +| @typescript-eslint/type-utils | 8.54.0 | MIT | https://github.com/typescript-eslint/typescript-eslint | +| @typescript-eslint/types | 8.54.0 | MIT | https://github.com/typescript-eslint/typescript-eslint | +| @typescript-eslint/typescript-estree | 8.54.0 | MIT | https://github.com/typescript-eslint/typescript-eslint | +| @typescript-eslint/utils | 8.54.0 | MIT | https://github.com/typescript-eslint/typescript-eslint | +| @typescript-eslint/visitor-keys | 8.54.0 | MIT | https://github.com/typescript-eslint/typescript-eslint | +| @vitest/expect | 4.0.18 | MIT | https://github.com/vitest-dev/vitest | +| @vitest/mocker | 4.0.18 | MIT | https://github.com/vitest-dev/vitest/tree/main/packages/mocker | +| @vitest/pretty-format | 4.0.18 | MIT | https://github.com/vitest-dev/vitest/tree/main/packages/utils | +| @vitest/runner | 4.0.18 | MIT | https://github.com/vitest-dev/vitest | +| @vitest/snapshot | 4.0.18 | MIT | https://github.com/vitest-dev/vitest | +| @vitest/spy | 4.0.18 | MIT | https://github.com/vitest-dev/vitest | +| @vitest/utils | 4.0.18 | MIT | https://github.com/vitest-dev/vitest | +| Acorn | 8.15.0 | MIT | https://github.com/ternjs/Acorn | +| Acorn-JSX | 5.3.2 | MIT | https://github.com/RReverser/Acorn-JSX | +| ajv | 6.12.6 | MIT | https://github.com/ajv-validator/ajv.git | +| annotated-types | 0.7.0 | MIT | https://github.com/annotated-types/annotated-types | +| ansi-regex | 6.2.2 | MIT | https://github.com/sindresorhus/ansi-regex | +| ansi-styles | v4.3.0, 6.2.3 | MIT | https://github.com/sindresorhus/ansi-styles | +| any-promise | 1.3.0 | MIT | http://github.com/kevinbeaty/any-promise | +| anyio | 4.9.0 | MIT | https://pypi.org/project/anyio/ | +| Apache Commons Logging | 1.3.4 | Apache-2.0 | http://commons.apache.org/proper/commons-logging/ | +| Apache PDFBox | 3.0.4 | Apache-2.0 | https://pdfbox.apache.org/ | +| Apache PDFBox io | 3.0.4 | Apache-2.0 | https://repo1.maven.org/maven2/org/apache/pdfbox/pdfbox-io/ | +| API Guardian | 1.1.2 | Apache-2.0 | https://repo1.maven.org/maven2/org/apiguardian/apiguardian-api/1.1.2/ | +| assertion-error | 2.0.1 | MIT | https://github.com/chaijs/assertion-error | +| AssertJ - Fluent Assertions for Java | 3.27.7 | Apache-2.0 | https://assertj.github.io/doc/ | +| balanced-match | 1.0.2 | MIT | https://github.com/juliangruber/balanced-match | +| brace-expansion | 1.1.12, 2.0.2 | MIT | https://github.com/juliangruber/brace-expansion | +| bundle-require | 5.1.0 | MIT | https://www.npmjs.com/package/bundle-require | +| Byte Buddy | 1.18.3 | Apache-2.0 | http://bytebuddy.net | +| cac | 6.7.14 | MIT | https://github.com/egoist/cac | +| callsites | 3.1.0 | MIT | https://github.com/sindresorhus/callsites | +| Chai | 6.2.1 | MIT | http://chaijs.com/ | +| Chalk | 4.1.2 | MIT | https://github.com/sindresorhus/chalk | +| chokidar | 4.0.3 | MIT | https://github.com/paulmillr/chokidar | +| color-name | 1.1.4 | MIT | https://github.com/colorjs/color-name | +| com.sun.xml.bind:jaxb-impl | 2.3.2 | EDL-1.0 | https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-impl | +| commander | 14.0.3 | MIT | https://github.com/tj/commander.js | +| Commander.js | 4.1.1 | MIT | https://github.com/tj/commander.js | +| commons-cli | 1.10.0 | Apache-2.0 | http://commons.apache.org/cli/ | +| confbox | 0.1.8 | MIT | https://github.com/unjs/confbox | +| consola | 3.4.2 | MIT | https://github.com/nuxt/consola | +| debug-js/debug | 4.4.3 | MIT | https://github.com/debug-js/debug | +| deep-is | 0.1.4 | MIT | https://github.com/thlorenz/deep-is | +| eastasianwidth | 0.2.0 | MIT | https://github.com/komagata/eastasianwidth | +| emoji-regex | 9.2.2 | MIT | https://github.com/mathiasbynens/emoji-regex | +| es-module-lexer | 1.7.0 | MIT | https://github.com/guybedford/es-module-lexer | +| esbuild | 0.25.12, 0.27.0 | MIT | https://esbuild.github.io/ | +| escape-string-regexp | v4.0.0 | MIT | https://github.com/sindresorhus/escape-string-regexp | +| ESLint | 9.39.2 | MIT | http://eslint.org/ | +| eslint-scope | 8.4.0 | BSD-2-Clause | https://github.com/eslint/eslint-scope | +| eslint-visitor-keys | 3.4.3, 4.2.1 | Apache-2.0 | https://github.com/eslint/eslint-visitor-keys | +| espree | 10.4.0 | BSD-2-Clause | https://github.com/eslint/espree | +| esquery | 1.6.0 | BSD-3-Clause | https://github.com/jrfeenst/esquery | +| esrecurse | v4.3.0 | BSD-2-Clause | https://github.com/estools/esrecurse | +| estraverse | 5.3.0 | BSD-2-Clause | https://github.com/Constellation/estraverse | +| estree-walker | 3.0.3 | MIT | https://github.com/Rich-Harris/estree-walker | +| esutils | 2.0.3 | BSD-2-Clause | https://github.com/Constellation/esutils | +| expect-type | 1.2.2 | Apache-2.0 | https://github.com/mmkal/ts/tree/master/packages/expect-type | +| fast-deep-equal | v3.1.3 | MIT | https://github.com/epoberezkin/fast-deep-equal | +| fast-json-stable-stringify | 2.1.0 | MIT | https://github.com/epoberezkin/fast-json-stable-stringify | +| fast-levenshtein | 2.0.6 | MIT | https://github.com/hiddentao/fast-levenshtein | +| fdir | 6.5.0 | MIT | https://github.com/thecodrr/fdir | +| file-entry-cache | 8.0.0 | MIT | https://github.com/royriojas/file-entry-cache | +| find-up | v5.0.0 | MIT | https://github.com/sindresorhus/find-up | +| fix-dts-default-cjs-exports | 1.0.1 | MIT | https://github.com/userquin/fix-dts-default-cjs-exports | +| flat-cache | 4.0.1 | MIT | https://github.com/royriojas/flat-cache | +| flatted | 3.3.3 | ISC | https://github.com/WebReflection/flatted | +| foreground-child | 3.3.1 | ISC | https://github.com/isaacs/foreground-child | +| fsevents | 2.3.3 | MIT | https://github.com/fsevents/fsevents | +| get-tsconfig | 4.13.0 | MIT | https://github.com/typeslick/get-tsconfig | +| glob | 13.0.1 | Blue Oak 1.0.0 | https://github.com/isaacs/node-glob | +| glob-parent | 6.0.2 | ISC | https://github.com/es128/glob-parent | +| h11 | 0.16.0 | MIT | https://github.com/njsmith/h11 | +| Hamcrest | 1.3 | BSD-3-Clause | http://hamcrest.org/ | +| has-flag | 4.0.0 | MIT | https://github.com/sindresorhus/has-flag | +| httpcore | 1.0.9 | BSD-3-Clause | https://github.com/encode/httpcore | +| httpx | 0.27.2 | BSD-3-Clause | https://www.python-httpx.org/ | +| idna | 3.10 | BSD-3-Clause | https://github.com/kjd/idna | +| import-fresh | 3.3.1 | MIT | https://github.com/sindresorhus/import-fresh | +| imurmurhash | 0.1.4 | MIT | https://github.com/jensyt/imurmurhash-js | +| is-extglob | 2.1.1 | MIT | https://github.com/jonschlinkert/is-extglob | +| is-glob | 4.0.3 | MIT | https://www.npmjs.com/package/is-glob | +| isaacs/jackspeak | 3.4.3 | Blue Oak 1.0.0 | https://github.com/isaacs/jackspeak | +| isexe | 2.0.0 | ISC | https://github.com/isaacs/isexe | +| jackson-annotations | 2.15.0 | Apache-2.0 | https://github.com/FasterXML/jackson-annotations | +| jackson-core | 2.15.0 | Apache-2.0 | https://github.com/FasterXML/jackson-core | +| jackson-databind | 2.15.0 | Apache-2.0 | https://github.com/FasterXML/jackson-databind | +| Jakarta Activation API | 1.2.0 | CDDL-1.1 | https://eclipse-ee4j.github.io/jaf/ | +| Java Advanced Imaging Image I/O Tools API core (standalone) | 1.4.0 | BSD-3-Clause | https://github.com/jai-imageio/jai-imageio-core | +| JAXB CORE | 2.3.0.1 | CDDL-1.1 | http://jaxb.java.net/ | +| jaxb-api | 2.4.0-b180830.0359 | CDDL-1.1 | https://jakarta.ee/specifications/xml-binding | +| Jetbrains annotations | 13.0 | Apache-2.0 | http://www.jetbrains.org | +| joycon | 3.1.1 | MIT | https://github.com/egoist/joycon | +| JPEG2000 support for Java Advanced Imaging Image I/O Tools API | 1.3.0 | Sun BSD | https://repo1.maven.org/maven2/com/github/jai-imageio/jai-imageio-jpeg2000/ | +| js-yaml | 4.1.1 | MIT | https://github.com/nodeca/js-yaml | +| json-buffer | 3.0.1 | MIT | https://github.com/dominictarr/json-buffer | +| json-schema-traverse | 0.4.1 | MIT | https://github.com/epoberezkin/json-schema-traverse | +| JUnit | 4.13.2 | EPL-1.0 | https://junit.org/junit5/ | +| JUnit Jupiter (Aggregator) | 5.14.2 | EPL-2.0 | https://junit.org/ | +| keyv | 4.5.4 | MIT | https://github.com/lukechilds/keyv | +| Kotlin | 1.8.21 | Apache-2.0 | http://kotlin.jetbrains.org | +| kotlin-stdlib-common | 1.9.10 | Apache-2.0 | https://kotlinlang.org/ | +| langchain | 0.3.80 | MIT | https://github.com/langchain-ai/langchain | +| langchain-text-splitters | 0.3.9 | MIT | https://github.com/langchain-ai/langchain | +| langsmith | 0.3.45 | MIT | https://smith.langchain.com/ | +| levn | 0.4.1 | MIT | https://github.com/gkz/levn | +| libcspice-sys | 0.1.1 | MIT | https://crates.io/crates/libcspice-sys | +| lilconfig | 3.1.3 | MIT | https://github.com/antonk52/lilconfig | +| lines-and-columns | 1.2.4 | MIT | https://github.com/eventualbuddha/lines-and-columns | +| load-tsconfig | 0.2.5 | MIT | https://www.npmjs.com/package/load-tsconfig | +| locate-path | v6.0.0 | MIT | https://github.com/sindresorhus/locate-path | +| lodash.merge | 4.6.2 | MIT | https://lodash.com/ | +| mafintosh/why-is-node-running | 2.3.0 | MIT | https://github.com/mafintosh/why-is-node-running | +| magic-string | 0.30.21 | MIT | https://github.com/rich-harris/magic-string | +| mdBook | 0.4.36 | MPL-2.0 | https://github.com/rust-lang/mdBook | +| minimatch | 3.1.2, 9.0.5 | ISC | https://github.com/isaacs/minimatch | +| minimatch | 10.1.2 | Blue Oak 1.0.0 | https://github.com/isaacs/minimatch | +| minipass | 7.1.2 | ISC | https://github.com/isaacs/minipass | +| mlly | 1.8.0 | MIT | https://github.com/unjs/mlly | +| MockWebServer | 4.12.0 | Apache-2.0 | https://github.com/square/okhttp/ | +| moxystudio/node-cross-spawn | 7.0.6 | MIT | https://github.com/moxystudio/node-cross-spawn | +| Mozilla Rhino | 1.7.14.1 | MPL-2.0 | http://www.mozilla.org/rhino/ | +| ms.js | 2.1.3 | MIT | https://github.com/guille/ms.js | +| mz | 2.7.0 | MIT | https://github.com/normalize/mz | +| nanoid | 3.3.11 | MIT | https://github.com/ai/nanoid | +| natural-compare | 1.4.0 | MIT | https://github.com/litejs/natural-compare | +| nobody | 2.1.1 | MIT | https://github.com/debug-js/debug | +| node-concat-map | 0.0.1 | MIT | https://github.com/substack/node-concat-map | +| node-glob | 10.5.0 | ISC | http://github.com/isaacs/node-glob | +| node-ignore | 5.3.2, 7.0.5 | MIT | https://github.com/kaelzhang/node-ignore | +| node-lru-cache | 10.4.3, 11.2.2 | ISC | http://github.com/isaacs/node-lru-cache | +| node-semver | 7.7.3 | ISC | https://github.com/npm/node-semver | +| nodeca-argparse | 2.0.1 | PSF-2.0 | https://github.com/nodeca/argparse | +| object-assign | 4.1.1 | MIT | https://github.com/sindresorhus/object-assign | +| OkHttp | 4.12.0 | Apache-2.0 | https://github.com/square/okhttp | +| OkIO | 3.6.0 | Apache-2.0 | https://square.github.io/okio/ | +| optionator | 0.9.4 | MIT | https://github.com/gkz/optionator | +| org.apiguardian:apiguardian-api | 1.1.2 | Apache-2.0 | https://github.com/apiguardian-team/apiguardian | +| org.jetbrains.kotlin:kotlin-stdlib-jdk7 | 1.8.21 | Apache-2.0 | https://kotlinlang.org/ | +| org.jetbrains.kotlin:kotlin-stdlib-jdk8 | 1.8.21 | Apache-2.0 | https://kotlinlang.org/ | +| org.junit.jupiter:junit-jupiter-api | 5.14.2 | EPL-2.0 | https://junit.org/ | +| org.junit.jupiter:junit-jupiter-engine | 5.14.2 | EPL-2.0 | https://junit.org/ | +| org.junit.jupiter:junit-jupiter-params | 5.14.2 | EPL-2.0 | https://junit.org/ | +| org.junit.platform:junit-platform-commons | 1.14.2 | EPL-2.0 | https://junit.org/ | +| org.junit.platform:junit-platform-engine | 1.14.2 | EPL-2.0 | https://junit.org/ | +| org.opentest4j:opentest4j | 1.3.0 | Apache-2.0 | https://github.com/ota4j-team/opentest4j | +| org.verapdf:core | 1.29.56 | MPL-2.0 | https://repo1.maven.org/maven2/org/verapdf/ | +| org.verapdf:metadata-fixer | 1.29.194 | MPL-2.0 | https://repo1.maven.org/maven2/org/verapdf/ | +| org.verapdf:parser | 1.29.64 | MPL-2.0 | https://repo1.maven.org/maven2/org/verapdf/ | +| org.verapdf:pdf-model | 1.29.12 | MPL-2.0 | https://repo1.maven.org/maven2/org/verapdf/ | +| org.verapdf:validation-model | 1.29.194 | MPL-2.0 | https://repo1.maven.org/maven2/org/verapdf/ | +| org.verapdf:verapdf-xmp-core | 1.29.56 | MPL-2.0 | https://repo1.maven.org/maven2/org/verapdf/ | +| org.verapdf:wcag-algorithms | 1.29.43 | MPL-2.0 | https://repo1.maven.org/maven2/org/verapdf/ | +| org.verapdf:wcag-validation | 1.29.194 | MPL-2.0 | https://repo1.maven.org/maven2/org/verapdf/ | +| orjson | 3.10.15 | Apache-2.0 | https://github.com/ijl/orjson | +| p-limit | 3.1.0 | MIT | https://github.com/sindresorhus/p-limit | +| p-locate | v5.0.0 | MIT | https://github.com/sindresorhus/p-locate | +| package-json-from-dist | 1.0.1 | Blue Oak 1.0.0 | https://github.com/isaacs/package-json-from-dist | +| Packaging | 24.2 | BSD-2-Clause | https://github.com/pypa/packaging | +| parent-module | 1.0.1 | MIT | https://github.com/sindresorhus/parent-module | +| path-exists | 4.0.0 | MIT | https://github.com/sindresorhus/path-exists | +| path-key | 3.1.1 | MIT | https://github.com/sindresorhus/path-key | +| path-scurry | 1.11.1, 2.0.1 | Blue Oak 1.0.0 | https://github.com/isaacs/path-walker | +| pathe | 2.0.3 | MIT | https://github.com/unjs/pathe | +| PDFBox JBIG2 ImageIO plugin | 3.0.3 | Apache-2.0 | https://www.apache.org/jbig2-imageio/ | +| picocolors | 1.1.1 | ISC | https://github.com/alexeyraspopov/picocolors | +| picomatch | 4.0.3 | MIT | https://github.com/micromatch/picomatch | +| pirates | 4.0.7 | MIT | https://github.com/ariporad/pirates | +| pkg-types | 1.3.1 | MIT | https://github.com/unjs/pkg-types | +| PostCSS | 8.5.6 | MIT | http://postcss.org/ | +| postcss-load-config | 6.0.1 | MIT | https://github.com/michael-ciniawsky/postcss-load-config | +| prelude-ls | 1.2.1 | MIT | https://github.com/gkz/prelude-ls | +| Prettier IO | 3.8.1 | MIT | https://prettier.io | +| psf-requests | 2.32.5 | Apache-2.0 | http://docs.python-requests.org | +| Punycode.js | 2.3.1 | MIT | http://mths.be/punycode | +| pydantic | 2.10.6 | MIT | https://pydantic-docs.helpmanual.io/ | +| pydantic-core | 2.27.2 | MIT | https://github.com/pydantic/pydantic-core | +| python-certifi | 2024.12.14 | MPL-2.0 | https://certifiio.readthedocs.io/en/latest/ | +| python-json-patch | 1.33 | BSD-3-Clause | https://github.com/stefankoegl/python-json-patch/ | +| python-json-pointer | 3.0.0 | BSD-3-Clause | https://github.com/stefankoegl/python-json-pointer | +| python-typing-extensions | 4.15.0 | PSF-2.0 | https://tracker.debian.org/pkg/python-typing-extensions | +| python3-charset-normalizer | 3.4.1 | MIT | https://github.com/ousret/charset_normalizer | +| PyYAML | 6.0.2 | MIT | https://pyyaml.org/ | +| Qix-/color-convert | 2.0.1 | MIT | https://github.com/Qix-/color-convert | +| readdirp | 4.1.2 | MIT | https://github.com/thlorenz/readdirp | +| requests-toolbelt | 1.0.0 | Apache-2.0 | https://toolbelt.readthedocs.io | +| resolve-from | 4.0.0, 5.0.0 | MIT | https://github.com/sindresorhus/resolve-from | +| resolve-pkg-maps | 1.0.0 | MIT | https://github.com/privatenumber/resolve-pkg-maps | +| rollup/rollup | 4.53.2 | MIT | https://github.com/rollup/rollup | +| Saxon XSLT and XQuery Processor | 12.8 | MPL-2.0 | http://saxon.sourceforge.net | +| shebang-command | 2.0.0 | MIT | https://github.com/kevva/shebang-command | +| shebang-regex | 3.0.0 | MIT | https://github.com/sindresorhus/shebang-regex | +| siginfo | 2.0.0 | ISC | https://github.com/emilbayes/siginfo | +| sindresorhus/globals | 14.0.0 | MIT | https://github.com/sindresorhus/globals | +| sindresorhus/supports-color | v7.2.0 | MIT | https://github.com/sindresorhus/supports-color | +| sniffio | 1.3.1 | Apache-2.0 | https://github.com/python-trio/sniffio | +| source-map | 0.7.6 | BSD-3-Clause | https://github.com/mozilla/source-map | +| source-map-js | 1.2.1 | BSD-3-Clause | https://github.com/7rulnik/source-map | +| stable-stringify | 1.0.1 | MIT | https://github.com/samn/json-stable-stringify | +| stackback | 0.0.2 | MIT | https://github.com/defunctzombie/node-stackback | +| StAX Utilities Project | 20070216 | BSD-3-Clause | http://java.net/projects/stax-utils/ | +| std-env | 3.10.0 | MIT | https://github.com/pi0/std-env | +| string-width | 4.2.3, 5.1.2 | MIT | https://github.com/sindresorhus/string-width | +| Strip ANSI | 6.0.1, 7.1.2 | MIT | https://github.com/chalk/strip-ansi | +| strip-json-comments | 3.1.1 | MIT | https://github.com/sindresorhus/strip-json-comments | +| sucrase | 3.35.0 | MIT | https://github.com/decaffeinate/bulk-decaffeinate | +| tapjs/signal-exit | 4.1.0 | ISC | https://github.com/tapjs/signal-exit | +| tenacity | 8.5.0 | Apache-2.0 | https://github.com/jd/tenacity | +| thenify | 3.3.1 | MIT | https://github.com/thenables/thenify | +| thenify-all | 1.6.0 | MIT | https://github.com/thenables/thenify-all | +| tinybench | 2.9.0 | MIT | https://github.com/tinylibs/tinybench | +| tinyexec | 0.3.2, 1.0.2 | MIT | https://github.com/tinylibs/tinyexec | +| tinyglobby | 0.2.15 | MIT | https://github.com/SuperchupuDev/tinyglobby | +| tinyrainbow | 3.0.3 | MIT | https://github.com/tinylibs/tinyrainbow | +| tree-kill | v1.2.2 | MIT | https://github.com/pkrumins/node-tree-kill | +| ts-api-utils | 2.4.0 | MIT | https://github.com/JoshuaKGoldberg/ts-api-utils | +| ts-interface-checker | 0.1.13 | Apache-2.0 | https://github.com/gristlabs/ts-interface-checker | +| tsup | 8.5.1 | MIT | https://github.com/egoist/tsup | +| tsx | 4.20.5 | MIT | https://github.com/basarat/tsx | +| type-check | 0.4.0 | MIT | https://github.com/gkz/type-check | +| TypeScript | 5.9.3 | Apache-2.0 | http://www.typescriptlang.org/ | +| ufo | 1.6.1 | MIT | https://github.com/nuxt-contrib/ufo | +| undici-types | 7.16.0 | MIT | https://undici.nodejs.org | +| upstage/dp-bench | - | MIT | https://huggingface.co/datasets/upstage/dp-bench | +| uri-js | 4.4.1 | BSD-2-Clause | https://github.com/garycourt/uri-js | +| urllib3 | 2.6.1 | MIT | https://urllib3.readthedocs.io/en/stable | +| vitejs | 7.3.1 | MIT | http://vitejs.dev/ | +| vitest | 4.0.18 | MIT | https://github.com/vitest-dev/vitest | +| which | 2.0.2 | ISC | https://github.com/isaacs/node-which | +| word-wrap | 1.2.5 | MIT | https://github.com/jonschlinkert | +| wrap-ansi | v7.0.0, 8.1.0 | MIT | https://github.com/chalk/wrap-ansi | +| XML Resolver | 5.3.3 | Apache-2.0 | https://github.com/ndw/xmlresolver | +| yocto-queue | 0.1.0 | MIT | https://github.com/sindresorhus/yocto-queue | +| zstandard | 0.23.0 | BSD-3-Clause | https://github.com/indygreg/python-zstandard | + diff --git a/THIRD_PARTY/THIRD_PARTY_NOTICES.md b/THIRD_PARTY/THIRD_PARTY_NOTICES.md new file mode 100644 index 0000000..8e6cd20 --- /dev/null +++ b/THIRD_PARTY/THIRD_PARTY_NOTICES.md @@ -0,0 +1,198 @@ + + +# THIRD-PARTY NOTICES (Copyright & Attributions) + +Copyright © 2025-2026 Hancom, Inc. All rights reserved. + +Below are copyright and notice texts for third-party libraries and components used in this project. +Full license texts are provided in the `licenses/` directory. +See also: [THIRD_PARTY_LICENSES](./THIRD_PARTY_LICENSES.md) for details. + +--- + +##### Apache Software Foundation notices + +The following components include software developed at The Apache Software Foundation (https://www.apache.org/). + +- Apache Commons Logging +- Apache PDFBox (FontBox, PDFBox, PDFBox-IO, JBIG2 ImageIO plugin) +- Apache Commons CLI +- Apache Maven (Artifact, Plugin API, Reporting API, Shared, Wagon etc.) +- Apache Maven Doxia +- XML Resolver + +"This product includes software developed at The Apache Software Foundation (https://www.apache.org/)." + +--- + +##### Component Attributions + +- `@esbuild/android-arm` (0.25.12, 0.27.0): Copyright (c) 2018, 2021 The Go Authors. All rights reserved. +- `@esbuild/android-x64` (0.25.12, 0.27.0): Copyright (c) 2018, 2021 The Go Authors. All rights reserved. +- `@esbuild/openharmony-arm64` (0.25.12, 0.27.0): Copyright (c) 2018, 2021 The Go Authors. All rights reserved. +- `@eslint-community/eslint-utils` (4.9.0, 4.9.1): Copyright (c) 2018 Toru Nagashima +- `@eslint-community/regexpp` (4.12.2): Copyright (c) 2018 Toru Nagashima +- `@eslint/config-array` (0.21.1): Copyright (c) 2018-2025 the Deno authors. +- `@eslint/eslintrc` (3.3.3): Copyright (c) 2015-2017 Evgeny Poberezkin +- `@humanwhocodes/retry` (0.4.3): Copyright (c) 2011-2023 Isaac Z. Schlueter, Ben Noordhuis, and Contributors +- `@isaacs/cliui` (8.0.2): Copyright (c) 2015 Contributors +- `@jridgewell/gen-mapping` (0.3.13): Copyright (c) 2024 Justin Ridgewell +- `@jridgewell/resolve-uri` (3.1.2): Copyright (c) 2019 Justin Ridgewell +- `@jridgewell/sourcemap-codec` (1.5.5): Copyright (c) 2024 Justin Ridgewell +- `@jridgewell/trace-mapping` (0.3.31): Copyright (c) 2024 Justin Ridgewell +- `@standard-schema/spec` (1.0.0): Copyright (c) 2024 Colin McDonnell +- `@typescript-eslint/eslint-plugin` (8.54.0): Copyright (c) 2019 typescript-eslint and other contributors +- `@typescript-eslint/parser` (8.54.0): Copyright (c) 2019 typescript-eslint and other contributors +- `@typescript-eslint/project-service` (8.54.0): Copyright (c) 2025 typescript-eslint and other contributors +- `@typescript-eslint/scope-manager` (8.54.0): Copyright (c) 2019 typescript-eslint and other contributors +- `@typescript-eslint/tsconfig-utils` (8.54.0): Copyright (c) 2025 typescript-eslint and other contributors +- `@typescript-eslint/type-utils` (8.54.0): Copyright (c) 2021 typescript-eslint and other contributors +- `@typescript-eslint/types` (8.54.0): Copyright (c) 2019 typescript-eslint and other contributors +- `@typescript-eslint/typescript-estree` (8.54.0): Copyright (c) 2019 typescript-eslint and other contributors +- `@typescript-eslint/utils` (8.54.0): Copyright (c) 2019 typescript-eslint and other contributors +- `@typescript-eslint/visitor-keys` (8.54.0): Copyright (c) 2019 typescript-eslint and other contributors +- `@vitest/expect` (4.0.18): Copyright (c) 2021-Present VoidZero Inc. and Vitest contributors +- `@vitest/mocker` (4.0.18): Copyright (c) 2021-Present VoidZero Inc. and Vitest contributors +- `@vitest/pretty-format` (4.0.18): Copyright (c) 2021-Present VoidZero Inc. and Vitest contributors +- `@vitest/runner` (4.0.18): Copyright (c) 2021-Present VoidZero Inc. and Vitest contributors +- `@vitest/snapshot` (4.0.18): Copyright (c) 2021-Present VoidZero Inc. and Vitest contributors +- `@vitest/spy` (4.0.18): Copyright (c) 2021-Present VoidZero Inc. and Vitest contributors +- `@vitest/utils` (4.0.18): Copyright (c) 2021-Present VoidZero Inc. and Vitest contributors, Copyright (c) 2014-2023 Simon Lydell, Copyright (c) 2018 The diff-match-patch Authors., Copyright (c) 2013 Jake Luer +- `Acorn` (8.15.0): Copyright (c) 2012-2022 by various contributors (see AUTHORS) +- `Acorn-JSX` (5.3.2): Copyright (c) 2012-2017 by Ingvar Stepanyan +- `ajv` (6.12.6): Copyright (c) 2011 Gary Court, Copyright (c) 2015-2017 Evgeny Poberezkin +- `annotated-types` (0.7.0): Copyright (c) 2022 the contributors +- `any-promise` (1.3.0): Copyright (c) 2014-2016 Kevin Beaty +- `anyio` (4.9.0): Copyright (c) 2018 Alex Grönholm +- `Apache Commons Logging` (1.3.4): Copyright (c) 1989-2024 Free Software Foundation and The Apache Software Foundation, Copyright (c) 2013-2022 Oracle and/or its affiliates. +- `Apache PDFBox` (3.0.4): Copyright (c) 1990-2024 Adobe Systems Incorporated, www.pdfbox.org, Harald Kuhr, Google Corporation, Red Hat Inc., Unicode Inc., The Apache Software Foundation, GitHub Inc. +- `Apache PDFBox FontBox` (3.0.4): Copyright (c) 2006-2024 www.fontbox.org, The Apache Software Foundation, Grzegorz Luk, Lohit Fonts Project, Unicode Inc. +- `Apache PDFBox io` (3.0.4): Copyright (c) 2002-2024 The Apache Software Foundation +- `assertion-error` (2.0.1): Copyright (c) 2013 Jake Luer +- `AssertJ - Fluent Assertions for Java` (3.27.7): Copyright (c) 1989-2026 Free Software Foundation, Bitstream Inc., Tavmjong Bah, Oracle and/or its affiliates, the original author or authors. +- `balanced-match` (1.0.2): Copyright (c) 2013 Julian Gruber +- `brace-expansion` (1.1.12, 2.0.2): Copyright (c) 2013 Julian Gruber +- `bundle-require` (5.1.0): Copyright (c) 2021 EGOIST +- `Byte Buddy` (1.18.3): Copyright (c) 2000-2011 INRIA, France Telecom, Copyright (c) 2014-Present Rafael Winterhalter +- `Chai` (6.2.1): Copyright (c) 2011-2017 Chai.js Assertion Library, Jake Luer, Sakthipriyan Vairamani +- `chokidar` (4.0.3): Copyright (c) 2012-2019 Paul Miller, Elan Shanker +- `color-name` (1.1.4): Copyright (c) 2015 Dmitry Ivanov +- `com.sun.xml.bind:jaxb-impl` (2.3.2): Copyright (c) 1995-2018 Jean-loup Gailly, Mark Adler, Stuart Knightley, David Duponchel, Vitaly Puzrin, Andrey Tupitsin, Oracle, jQuery Foundation +- `Commander.js` (4.1.1): Copyright (c) 2011 TJ Holowaychuk +- `commons-cli` (1.10.0): Copyright (c) 1989-2025 Free Software Foundation, Oracle, The Apache Software Foundation +- `confbox` (0.1.8): Copyright (c) 2011-2018 Vitaly Puzrin, Aseem Kishore +- `debug-js/debug` (4.4.3): Copyright (c) 2014-2021 TJ Holowaychuk, Josh Junon +- `deep-is` (0.1.4): Copyright (c) 2009-2013 Thomas Robinson, James Halliday, Thorsten Lorenz +- `es-module-lexer` (1.7.0): Copyright (c) 2012-2022 by various contributors, Guy Bedford +- `esbuild` (0.25.12, 0.27.0): Copyright (c) 2020 Evan Wallace +- `ESLint` (9.39.2): Copyright (c) 2013 Joel Feenstra +- `eslint-scope` (8.4.0): Copyright (c) 2012-2015 Yusuke Suzuki, Alex Seville, Thiago de Arruda +- `espree` (10.4.0): Copyright (c) 2012-2015 Acorn Contributors, Sebastian McKenzie +- `esquery` (1.6.0): Copyright (c) 2012-2013 Ariya Hidayat, Yusuke Suzuki, Joel Feenstra +- `esrecurse` (v4.3.0): Copyright (c) 2014 Yusuke Suzuki +- `estraverse` (5.3.0): Copyright (c) 2012-2016 Ariya Hidayat, Yusuke Suzuki +- `esutils` (2.0.3): Copyright (c) 2013-2014 Yusuke Suzuki, Ivan Nikulin +- `expect-type` (1.2.2): Copyright (c) 2024 Misha Kaletsky +- `fast-deep-equal` (v3.1.3): Copyright (c) 2017 Evgeny Poberezkin +- `fdir` (6.5.0): Copyright (c) 2023-2024 Abdullah Atta +- `fix-dts-default-cjs-exports` (1.0.1): Copyright (c) 2025-Present Joaquin +- `flatted` (3.3.3): Copyright (c) 2018-2025 Andrea Giammarchi +- `foreground-child` (3.3.1): Copyright (c) 2015-2023 Isaac Z. Schlueter and Contributors +- `fsevents` (2.3.3): Copyright (c) 2010-2020 Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller +- `glob-parent` (6.0.2): Copyright (c) 2015-2021 Elan Shanker, Blaine Bublitz, Eric Schoffstall +- `h11` (0.16.0): Copyright (c) 2006-2016 Jonathan E. Taylor, Scipy Developers, Statsmodels Developers, Nathaniel J. Smith, Chris Wanstrath +- `Hamcrest` (1.3): Copyright (c) 2000-2010 hamcrest.org +- `httpcore` (1.0.9): Copyright (c) 2020 Encode OSS Ltd. +- `httpx` (0.27.2): Copyright (c) 2019 Encode OSS Ltd. +- `idna` (3.10): Copyright (c) 2013-2024 Kim Davies and contributors. +- `imurmurhash` (0.1.4): Copyright (c) 2013 Gary Court, Jens Taylor +- `is-extglob` (2.1.1): Copyright (c) 2014-2016 Jon Schlinkert +- `is-glob` (4.0.3): Copyright (c) 2014-2017 Jon Schlinkert +- `jackson-annotations` (2.15.0): Copyright (c) 2007 Tatu Saloranta +- `jackson-core` (2.15.0): Copyright (c) 2007-2020 Tatu Saloranta, Raffaello Giulietti +- `jackson-databind` (2.15.0): Copyright (c) 2007-2011 Tatu Saloranta, Google Inc. +- `Jakarta Activation API` (1.2.0): Copyright (c) 1989-2017 Free Software Foundation, Oracle +- `Java Advanced Imaging Image I/O Tools API core` (1.4.0): Copyright (c) 1990-2018 Wang Labs Inc., Sun Microsystems, Stian Soiland-Reyes, University of Manchester, Butch Howard, Mark Carroll, Peter Hull, Robin Stevens, Yannick De Turck, Luca Bellonda, Curtis Rueden, Ghislain Bonamy, Mykola Pavluchynskyi, Roger Leigh, Sebastien Besson, Peter Jodeleit +- `JAXB CORE` (2.3.0.1): Copyright (c) 1997-2018 Stuart Knightley, David Duponchel, Oracle, jQuery Foundation +- `jaxb-api` (2.4.0-b180830.0359): Copyright (c) 1989-2018 Free Software Foundation, Stuart Knightley, David Duponchel, Oracle, jQuery Foundation +- `Jetbrains annotations` (13.0): Copyright (c) 2000-2013 JetBrains s.r.o., Sascha Weinreuter +- `JPEG2000 support for Java Advanced Imaging Image I/O Tools API` (1.3.0): Copyright (c) 1999-2006 JJ2000 Partners, Sun Microsystems +- `js-yaml` (4.1.1): Copyright (c) 2011-2015 Vitaly Puzrin +- `json-buffer` (3.0.1): Copyright (c) 2013 Dominic Tarr +- `json-schema-traverse` (0.4.1): Copyright (c) 2017 Evgeny Poberezkin +- `JUnit Jupiter (Aggregator)` (5.14.2): Copyright (c) 2015-2026 the original author or authors. +- `Kotlin` (1.8.21): Copyright (c) 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. +- `kotlin-stdlib-common` (1.9.10): Copyright (c) 2007-2023 Google Inc., JetBrains s.r.o., The Guava Authors +- `langchain-opendataloader-pdf` (1.0.1): Copyright (c) 2024 LangChain, Inc. +- `libcspice-sys` (0.1.1): Copyright (c) 2025 libcspice-sys contributors +- `lilconfig` (3.1.3): Copyright (c) 2022 Anton Kastritskiy +- `lines-and-columns` (1.2.4): Copyright (c) 2015 Brian Donovan +- `load-tsconfig` (0.2.5): Copyright (c) 2021 EGOIST +- `mafintosh/why-is-node-running` (2.3.0): Copyright (c) 2016 Mathias Buus +- `magic-string` (0.30.21): Copyright (c) 2018 Rich Harris +- `mdBook` (0.4.36): Copyright (c) 2006-2020 Ivan Sagalaev, Ajax.org B.V., Oliver Nightingale, Wei Song +- `minimatch` (9.0.5): Copyright (c) 2011-2023 Isaac Z. Schlueter and Contributors +- `minipass` (7.1.2): Copyright (c) 2017-2023 npm, Inc., Isaac Z. Schlueter, and Contributors +- `MockWebServer` (4.12.0): Copyright (c) 2011-2019 Google Inc., Square, Inc. +- `moxystudio/node-cross-spawn` (7.0.6): Copyright (c) 2018 Made With MOXY Lda +- `Mozilla Rhino` (1.7.14.1): Copyright (c) 1991-2022 Lucent Technologies, Free Software Foundation, Stuart Knightley, Oracle, Vitaly Puzrin, Sun Microsystems, V8 project authors, Raffaello Giulietti +- `ms.js` (2.1.3): Copyright (c) 2020 Vercel, Inc. +- `mz` (2.7.0): Copyright (c) 2014-2016 Jonathan Ong +- `nanoid` (3.3.11): Copyright (c) 2017 Andrey Sitnik +- `natural-compare` (1.4.0): Copyright (c) 2012-2015 Lauri Rooden +- `nobody` (2.1.1): Copyright (c) 2014-2025 TJ Holowaychuk, Josh Junon, Kevin Deng +- `node-glob` (10.5.0): Copyright (c) 2009-2023 Isaac Z. Schlueter and Contributors +- `node-ignore` (5.3.2, 7.0.5): Copyright (c) 2013 Kael Zhang +- `node-lru-cache` (10.4.3, 11.2.2): Copyright (c) 2010-2023 Isaac Z. Schlueter and Contributors +- `nodeca-argparse` (2.0.1): Copyright (c) 1991-2020 Stichting Mathematisch Centrum Amsterdam, Gregory P. Ward, Python Software Foundation, argparse.js authors +- `OkHttp` (4.12.0): Copyright (c) 2010-2020 The Android Open Source Project, Square Inc., Twitter Inc. +- `OkIO` (3.6.0): Copyright (c) 2014-2023 Square, Inc. +- `org.apiguardian:apiguardian-api` (1.1.2): Copyright (c) 1995-2018 Jean-loup Gailly, Mark Adler, Stuart Knightley, Vitaly Puzrin, Oracle, jQuery Foundation +- `org.junit.jupiter:junit-jupiter-*` (5.14.2): Copyright (c) 1989-2026 Free Software Foundation, Oracle, the original author or authors. +- `org.junit.platform:junit-platform-*` (1.14.2): Copyright (c) 1989-2026 Free Software Foundation, Oracle, the original author or authors. +- `org.opentest4j:opentest4j` (1.3.0): Copyright (c) 1989-2023 Free Software Foundation, Oracle, the original author or authors. +- `orjson` (3.10.15): Copyright (c) 1991-2023 Alex Crichton, Milo Yip, Ryohei Machida, The Rust Project Developers, Andrew Gallant, Nicholas Allegra, Nikolai Vazquez, The bytecount Developers, PyO3 Project, Sergio Benitez, Ashley Mannix, The Servo Project Developers, YaoYuan, Parker Timmerman, Stephen M. Coakley, The Uuid Project Developers, Ulf Adams, Unicode Inc., winapi-rs developers +- `Packaging` (24.2): Copyright (c) 2017-Present Ofek Lev +- `pathe` (2.0.3): Copyright (c) 2023-Present Fabio Spampinato +- `PDFBox JBIG2 ImageIO plugin` (3.0.3): Copyright (c) 1995-2019 levigo holding GmbH, The Apache Software Foundation +- `picocolors` (1.1.1): Copyright (c) 2021-2024 Oleksii Raspopov, Kostiantyn Denysov, Anton Verinov +- `picomatch` (4.0.3): Copyright (c) 2017-Present Jon Schlinkert +- `pirates` (4.0.7): Copyright (c) 2015-2018 Ari Porad +- `PostCSS` (8.5.6): Copyright (c) 2013 Andrey Sitnik +- `Prettier IO` (3.8.1): Copyright (c) 2009-2026 Google LLC, Kevin Decker, Vitaly Puzrin, Woong Jun, Raynos, Ingvar Stepanyan, Aseem Kishore, Andrey Sitnik, Dominic Tarr, James Halliday, Kael Zhang, Liucw, Mikola Lysenko, Alex Bell, Stefan Thomas, Yehuda Katz, Jon Schlinkert, Teambition, Simon Lydell, Sebastian McKenzie, Tilde Inc., Titus Wormer, Elan Shanker, Matteo Collina, Denys Kniazevych, Joshua Holbrook, Mark Wubben, Pat Sissons, Thomas Watson Steen, Andrew Powell, Evgeny Poberezkin, Luke Childs, Andrea Giammarchi, KFlash, typescript-eslint, Fabio Spampinato, Jared Wray, Oleksii Raspopov, Eemeli Aro, EditorConfig Team. +- `psf-requests` (2.32.5): Copyright (c) 2012-2019 Kenneth Reitz +- `pydantic` (2.10.6): Copyright (c) 2017-Present Pydantic Services Inc. +- `pydantic-core` (2.27.2): Copyright (c) 2022 Samuel Colvin +- `python-json-patch` (1.33): Copyright (c) 2011 Stefan Kögl +- `python-json-pointer` (3.0.0): Copyright (c) 2011 Stefan Kögl +- `python-typing-extensions` (4.15.0): Copyright (c) 1991-1995 Stichting Mathematisch Centrum Amsterdam +- `python3-charset-normalizer` (3.4.1): Copyright (c) 2021-2025 Ahmed TAHRI +- `PyYAML` (6.0.2): Copyright (c) 2006-2021 Kirill Simonov, Ingy döt Net +- `Qix-/color-convert` (2.0.1): Copyright (c) 2011-2016 Heather Arthur, Josh Junon +- `readdirp` (4.1.2): Copyright (c) 2012-2019 Thorsten Lorenz, Paul Miller +- `requests-toolbelt` (1.0.0): Copyright (c) 2014 Ian Cordasco, Cory Benfield +- `rollup/rollup` (4.53.2): Copyright (c) 2012-2024 Paul Miller, Elan Shanker, Thorsten Lorenz, Jon Schlinkert, Benjamin Coe, Isaac Z. Schlueter, RollupJS Plugin Contributors, Sindre Sorhus, Oleksii Raspopov, Rich Harris, Justin Ridgewell +- `Saxon XSLT and XQuery Processor` (12.8): Copyright (c) 1998-2025 James Clark, Saxonica Limited, Michael Froh, Oracle +- `siginfo` (2.0.0): Copyright (c) 2017 Emil Bay +- `source-map` (0.7.6): Copyright (c) 2009-2014 Mozilla Foundation, The Closure Compiler Authors +- `source-map-js` (1.2.1): Copyright (c) 2009-2014 Mozilla Foundation, The Closure Compiler Authors +- `stackback` (0.0.2): Copyright (c) 2012 the V8 project authors. +- `StAX Utilities Project` (20070216): Copyright (c) 2004-2006 Christian Niles, Sun Microsystems, John Kristian +- `sucrase` (3.35.0): Copyright (c) 2012-2018 various contributors +- `tapjs/signal-exit` (4.1.0): Copyright (c) 2015-2023 Benjamin Coe, Isaac Z. Schlueter +- `tenacity` (8.5.0): Copyright (c) 2013-2018 Ray Holder, Joshua Harlow, Julien Danjou, Elisey Zanko +- `thenify` (3.3.1): Copyright (c) 2014-2016 Jonathan Ong +- `thenify-all` (1.6.0): Copyright (c) 2014 Jonathan Ong +- `tinybench` (2.9.0): Copyright (c) 2022 Tinylibs +- `tinyexec` (0.3.2, 1.0.2): Copyright (c) 2024 Tinylibs +- `tinyglobby` (0.2.15): Copyright (c) 2024 Madeline Gurriar +- `tinyrainbow` (3.0.3): Copyright (c) 2022 Tinylibs +- `tree-kill` (v1.2.2): Copyright (c) 2018 Peter Krumins +- `tsup` (8.5.1): Copyright (c) 2021 EGOIST +- `TypeScript` (5.9.3): Copyright (c) 1991-2018 Unicode Inc., The Khronos Group Inc., WHATWG +- `uri-js` (4.4.1): Copyright (c) 2011 Gary Court +- `urllib3` (2.6.1): Copyright (c) 2008-2020 Andrey Petrov and contributors +- `vitejs` (7.3.1): Copyright (c) 2010-2025 Sencha Inc., William Stein, Einar Otto Stangvik, LearnBoost, TJ Holowaychuk, Paul Miller, Elan Shanker, Thorsten Lorenz, Arnout Kazemier, James Halliday, Troy Goode, Jonathan Ong, Jared Hanson, Ivan Nikulin, Maxime Thirouin, Nathan Rajlich, Jon Schlinkert, Douglas Christopher Wilson, Simon Lydell, Alexey Litvinov, Andreas Lubbe, Glen Maddern, Tiancheng Gu, Scott Motte, Facebook Inc., Luigi Pinca, Yuxi You, MOXY Lda, Josh Junon, Guy Bedford, Rich Harris, Sindre Sorhus, VoidZero Inc., The Preact Authors, dominikg, Anthony Fu, Anton Kastritskiy, sapphi-red, Mark Dalgleish, Alexander Madyankin, Justin Ridgewell, Kevin Deng. +- `word-wrap` (1.2.5): Copyright (c) 2014-2023 Jon Schlinkert +- `XML Resolver` (5.3.3): Copyright (c) 1989-2023 Free Software Foundation, The Open Healthcare Group, Jonathan Borden, Oracle, W3C, The Internet Society +- `zstandard` (0.23.0): Copyright (c) 1989-2021 Free Software Foundation, Yuta Mori, Gregory Szorc, Tino Reichardt \ No newline at end of file diff --git a/THIRD_PARTY/licenses/BSD-2-Clause.txt b/THIRD_PARTY/licenses/BSD-2-Clause.txt new file mode 100644 index 0000000..b1c2a69 --- /dev/null +++ b/THIRD_PARTY/licenses/BSD-2-Clause.txt @@ -0,0 +1,22 @@ +BSD Two Clause License +====================== + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. \ No newline at end of file diff --git a/THIRD_PARTY/licenses/BSD-3-Clause.txt b/THIRD_PARTY/licenses/BSD-3-Clause.txt new file mode 100644 index 0000000..fa190e7 --- /dev/null +++ b/THIRD_PARTY/licenses/BSD-3-Clause.txt @@ -0,0 +1,30 @@ +BSD 3-clause "New" or "Revised" License + +Copyright (c) , +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of the nor the names of its contributors may + be used to endorse or promote products derived from this software without + specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/THIRD_PARTY/licenses/Blue-Oak-1.0.0.txt b/THIRD_PARTY/licenses/Blue-Oak-1.0.0.txt new file mode 100644 index 0000000..fbcf653 --- /dev/null +++ b/THIRD_PARTY/licenses/Blue-Oak-1.0.0.txt @@ -0,0 +1,56 @@ +Blue Oak Model License +====================== + +Version 1.0.0 + +Purpose +------- + +This license gives everyone as much permission to work with this software as +possible, while protecting contributors from liability. + +Acceptance +---------- + +In order to receive this license, you must agree to its rules. The rules of this +license are both obligations under that agreement and conditions to your license. +You must not do anything with this software that triggers a rule that you cannot +or will not follow. + +Copyright +--------- + +Each contributor licenses you to do everything with this software that would +otherwise infringe that contributor's copyright in it. + +Notices +------- + +You must ensure that everyone who gets a copy of any part of this software from +you, with or without changes, also gets the text of this license or a link to +https://blueoakcouncil.org/license/1.0.0. + +Excuse +------ + +If anyone notifies you in writing that you have not complied with Notices, you +can keep your license by taking all practical steps to comply within 30 days +after the notice. If you do not do so, your license ends immediately. + +Patent +------ + +Each contributor licenses you to do everything with this software that would +otherwise infringe any patent claims they can license or become able to license. + +Reliability +----------- + +No contributor can revoke this license. + +No Liability +------------ + +As far as the law allows, this software comes as is, without any warranty or +condition, and no contributor will be liable to anyone for any damages related to +this software or this license, under any kind of legal claim. \ No newline at end of file diff --git a/THIRD_PARTY/licenses/CDDL-1.1.txt b/THIRD_PARTY/licenses/CDDL-1.1.txt new file mode 100644 index 0000000..7ec9162 --- /dev/null +++ b/THIRD_PARTY/licenses/CDDL-1.1.txt @@ -0,0 +1,352 @@ +COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.1 +============================================================== + +1. Definitions. + + 1.1. “Contributor” means each individual or entity that creates or contributes + to the creation of Modifications. + + 1.2. “Contributor Version” means the combination of the Original Software, + prior Modifications used by a Contributor (if any), and the Modifications made + by that particular Contributor. + + 1.3. “Covered Software” means (a) the Original Software, or (b) Modifications, + or (c) the combination of files containing Original Software with files + containing Modifications, in each case including portions thereof. + + 1.4. “Executable” means the Covered Software in any form other than Source + Code. + + 1.5. “Initial Developer” means the individual or entity that first makes + Original Software available under this License. + + 1.6. “Larger Work” means a work which combines Covered Software or portions + thereof with code not governed by the terms of this License. + + 1.7. “License” means this document. + + 1.8. “Licensable” means having the right to grant, to the maximum extent + possible, whether at the time of the initial grant or subsequently acquired, + any and all of the rights conveyed herein. + + 1.9. “Modifications” means the Source Code and Executable form of any of the + following: + + A. Any file that results from an addition to, deletion from or modification + of the contents of a file containing Original Software or previous + Modifications; + + B. Any new file that contains any part of the Original Software or previous + Modification; or + + C. Any new file that is contributed or otherwise made available under the + terms of this License. + + + 1.10. “Original Software” means the Source Code and Executable form of computer + software code that is originally released under this License. + + 1.11. “Patent Claims” means any patent claim(s), now owned or hereafter + acquired, including without limitation, method, process, and apparatus claims, + in any patent Licensable by grantor. + + 1.12. “Source Code” means (a) the common form of computer software code in + which modifications are made and (b) associated documentation included in or + with such code. + + 1.13. “You” (or “Your”) means an individual or a legal entity exercising rights + under, and complying with all of the terms of, this License. For legal + entities, “You” includes any entity which controls, is controlled by, or is + under common control with You. For purposes of this definition, “control” means + (a) the power, direct or indirect, to cause the direction or management of such + entity, whether by contract or otherwise, or (b) ownership of more than fifty + percent (50%) of the outstanding shares or beneficial ownership of such entity. + +2. License Grants. + + 2.1. The Initial Developer Grant. + + Conditioned upon Your compliance with Section 3.1 below and subject to third + party intellectual property claims, the Initial Developer hereby grants You a + world-wide, royalty-free, non-exclusive license: + + (a) under intellectual property rights (other than patent or trademark) + Licensable by Initial Developer, to use, reproduce, modify, display, perform, + sublicense and distribute the Original Software (or portions thereof), with + or without Modifications, and/or as part of a Larger Work; and + + (b) under Patent Claims infringed by the making, using or selling of Original + Software, to make, have made, use, practice, sell, and offer for sale, and/or + otherwise dispose of the Original Software (or portions thereof). + + (c) The licenses granted in Sections 2.1(a) and (b) are effective on the date + Initial Developer first distributes or otherwise makes the Original Software + available to a third party under the terms of this License. + + (d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) + for code that You delete from the Original Software, or (2) for infringements + caused by: (i) the modification of the Original Software, or (ii) the + combination of the Original Software with other software or devices. + + + 2.2. Contributor Grant. + + Conditioned upon Your compliance with Section 3.1 below and subject to third + party intellectual property claims, each Contributor hereby grants You a + world-wide, royalty-free, non-exclusive license: + + (a) under intellectual property rights (other than patent or trademark) + Licensable by Contributor to use, reproduce, modify, display, perform, + sublicense and distribute the Modifications created by such Contributor (or + portions thereof), either on an unmodified basis, with other Modifications, + as Covered Software and/or as part of a Larger Work; and + + (b) under Patent Claims infringed by the making, using, or selling of + Modifications made by that Contributor either alone and/or in combination + with its Contributor Version (or portions of such combination), to make, use, + sell, offer for sale, have made, and/or otherwise dispose of: (1) + Modifications made by that Contributor (or portions thereof); and (2) the + combination of Modifications made by that Contributor with its Contributor + Version (or portions of such combination). + + (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the + date Contributor first distributes or otherwise makes the Modifications + available to a third party. + + (d) Notwithstanding Section 2.2(b) above, no patent license is granted: + + (1) for any code that Contributor has deleted from the Contributor Version; + + (2) for infringements caused by: (i) third party modifications of + Contributor Version, or (ii) the combination of Modifications made by that + Contributor with other software (except as part of the Contributor Version) + or other devices; or + + (3) under Patent Claims infringed by Covered Software in the absence of + Modifications made by that Contributor. + + + 3. Distribution Obligations. + + 3.1. Availability of Source Code. + + Any Covered Software that You distribute or otherwise make available in + Executable form must also be made available in Source Code form and that + Source Code form must be distributed only under the terms of this License. + You must include a copy of this License with every copy of the Source Code + form of the Covered Software You distribute or otherwise make available. You + must inform recipients of any such Covered Software in Executable form as to + how they can obtain such Covered Software in Source Code form in a reasonable + manner on or through a medium customarily used for software exchange. + + 3.2. Modifications. + + The Modifications that You create or to which You contribute are governed by + the terms of this License. You represent that You believe Your Modifications + are Your original creation(s) and/or You have sufficient rights to grant the + rights conveyed by this License. + + 3.3. Required Notices. + + You must include a notice in each of Your Modifications that identifies You + as the Contributor of the Modification. You may not remove or alter any + copyright, patent or trademark notices contained within the Covered Software, + or any notices of licensing or any descriptive text giving attribution to any + Contributor or the Initial Developer. + + 3.4. Application of Additional Terms. + + You may not offer or impose any terms on any Covered Software in Source Code + form that alters or restricts the applicable version of this License or the + recipients' rights hereunder. You may choose to offer, and to charge a fee + for, warranty, support, indemnity or liability obligations to one or more + recipients of Covered Software. However, you may do so only on Your own + behalf, and not on behalf of the Initial Developer or any Contributor. You + must make it absolutely clear that any such warranty, support, indemnity or + liability obligation is offered by You alone, and You hereby agree to + indemnify the Initial Developer and every Contributor for any liability + incurred by the Initial Developer or such Contributor as a result of + warranty, support, indemnity or liability terms You offer. + + 3.5. Distribution of Executable Versions. + + You may distribute the Executable form of the Covered Software under the + terms of this License or under the terms of a license of Your choice, which + may contain terms different from this License, provided that You are in + compliance with the terms of this License and that the license for the + Executable form does not attempt to limit or alter the recipient's rights in + the Source Code form from the rights set forth in this License. If You + distribute the Covered Software in Executable form under a different license, + You must make it absolutely clear that any terms which differ from this + License are offered by You alone, not by the Initial Developer or + Contributor. You hereby agree to indemnify the Initial Developer and every + Contributor for any liability incurred by the Initial Developer or such + Contributor as a result of any such terms You offer. + + 3.6. Larger Works. + + You may create a Larger Work by combining Covered Software with other code + not governed by the terms of this License and distribute the Larger Work as a + single product. In such a case, You must make sure the requirements of this + License are fulfilled for the Covered Software. + + + 4. Versions of the License. + + 4.1. New Versions. + + Oracle is the initial license steward and may publish revised and/or new + versions of this License from time to time. Each version will be given a + distinguishing version number. Except as provided in Section 4.3, no one + other than the license steward has the right to modify this License. + + 4.2. Effect of New Versions. + + You may always continue to use, distribute or otherwise make the Covered + Software available under the terms of the version of the License under which + You originally received the Covered Software. If the Initial Developer + includes a notice in the Original Software prohibiting it from being + distributed or otherwise made available under any subsequent version of the + License, You must distribute and make the Covered Software available under + the terms of the version of the License under which You originally received + the Covered Software. Otherwise, You may also choose to use, distribute or + otherwise make the Covered Software available under the terms of any + subsequent version of the License published by the license steward. + + 4.3. Modified Versions. + + When You are an Initial Developer and You want to create a new license for + Your Original Software, You may create and use a modified version of this + License if You: (a) rename the license and remove any references to the name + of the license steward (except to note that the license differs from this + License); and (b) otherwise make it clear that the license contains terms + which differ from this License. + + + 5. DISCLAIMER OF WARRANTY. + + COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN “AS IS” BASIS, WITHOUT + WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT + LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, + MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK + AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD + ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL + DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, + REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART + OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT + UNDER THIS DISCLAIMER. + + + + 6. TERMINATION. + + 6.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to cure such + breach within 30 days of becoming aware of the breach. Provisions which, by + their nature, must remain in effect beyond the termination of this License + shall survive. + + 6.2. If You assert a patent infringement claim (excluding declaratory + judgment actions) against Initial Developer or a Contributor (the Initial + Developer or Contributor against whom You assert such claim is referred to as + “Participant”) alleging that the Participant Software (meaning the + Contributor Version where the Participant is a Contributor or the Original + Software where the Participant is the Initial Developer) directly or + indirectly infringes any patent, then any and all rights granted directly or + indirectly to You by such Participant, the Initial Developer (if the Initial + Developer is not the Participant) and all Contributors under Sections 2.1 + and/or 2.2 of this License shall, upon 60 days notice from Participant + terminate prospectively and automatically at the expiration of such 60 day + notice period, unless if within such 60 day period You withdraw Your claim + with respect to the Participant Software against such Participant either + unilaterally or pursuant to a written agreement with Participant. + + 6.3. If You assert a patent infringement claim against Participant alleging + that the Participant Software directly or indirectly infringes any patent + where such claim is resolved (such as by license or settlement) prior to the + initiation of patent infringement litigation, then the reasonable value of + the licenses granted by such Participant under Sections 2.1 or 2.2 shall be + taken into account in determining the amount or value of any payment or + license. + + 6.4. In the event of termination under Sections 6.1 or 6.2 above, all end + user licenses that have been validly granted by You or any distributor + hereunder prior to termination (excluding licenses granted to You by any + distributor) shall survive termination. + + + 7. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING + NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY + OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF + ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, + INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT + LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR + MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH + PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS + LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL + INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW + PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR + LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND + LIMITATION MAY NOT APPLY TO YOU. + + + + 8. U.S. GOVERNMENT END USERS. + + The Covered Software is a “commercial item,” as that term is defined in 48 + C.F.R. 2.101 (Oct. 1995), consisting of “commercial computer software” (as that + term is defined at 48 C.F.R. § 252.227-7014(a)(1)) and “commercial computer + software documentation” as such terms are used in 48 C.F.R. 12.212 (Sept. + 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through + 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software + with only those rights set forth herein. This U.S. Government Rights clause is + in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision + that addresses Government rights in computer software under this License. + + + + 9. MISCELLANEOUS. + + This License represents the complete agreement concerning subject matter + hereof. If any provision of this License is held to be unenforceable, such + provision shall be reformed only to the extent necessary to make it + enforceable. This License shall be governed by the law of the jurisdiction + specified in a notice contained within the Original Software (except to the + extent applicable law, if any, provides otherwise), excluding such + jurisdiction's conflict-of-law provisions. Any litigation relating to this + License shall be subject to the jurisdiction of the courts located in the + jurisdiction and venue specified in a notice contained within the Original + Software, with the losing party responsible for costs, including, without + limitation, court costs and reasonable attorneys' fees and expenses. The + application of the United Nations Convention on Contracts for the International + Sale of Goods is expressly excluded. Any law or regulation which provides that + the language of a contract shall be construed against the drafter shall not + apply to this License. You agree that You alone are responsible for compliance + with the United States export administration regulations (and the export + control laws and regulation of any other countries) when You use, distribute or + otherwise make available any Covered Software. + + + + 10. RESPONSIBILITY FOR CLAIMS. + + As between Initial Developer and the Contributors, each party is responsible + for claims and damages arising, directly or indirectly, out of its utilization + of rights under this License and You agree to work with Initial Developer and + Contributors to distribute such responsibility on an equitable basis. Nothing + herein is intended or shall be deemed to constitute any admission of liability. + + + + ------------------------------------------------------------------------------ + + NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE + (CDDL) + + The code released under the CDDL shall be governed by the laws of the State of + California (excluding conflict-of-law provisions). Any litigation relating to + this License shall be subject to the jurisdiction of the Federal Courts of the + Northern District of California and the state courts of the State of + California, with venue lying in Santa Clara County, California. diff --git a/THIRD_PARTY/licenses/EDL-1.0.txt b/THIRD_PARTY/licenses/EDL-1.0.txt new file mode 100644 index 0000000..1b3944a --- /dev/null +++ b/THIRD_PARTY/licenses/EDL-1.0.txt @@ -0,0 +1,31 @@ +Eclipse Distribution License - v 1.0 +==================================== + +Copyright (c) 2007, Eclipse Foundation, Inc. and its licensors. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of the Eclipse Foundation, Inc. nor the names of its + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/THIRD_PARTY/licenses/EPL-1.0.txt b/THIRD_PARTY/licenses/EPL-1.0.txt new file mode 100644 index 0000000..b509a63 --- /dev/null +++ b/THIRD_PARTY/licenses/EPL-1.0.txt @@ -0,0 +1,211 @@ +Eclipse Public License - v 1.0 +============================== + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC +LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM +CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + +a) in the case of the initial Contributor, the initial code and documentation +distributed under this Agreement, and +b) in the case of each subsequent Contributor: + +i) changes to the Program, and + +ii) additions to the Program; +where such changes and/or additions to the Program originate from and are +distributed by that particular Contributor. A Contribution 'originates' from a +Contributor if it was added to the Program by such Contributor itself or anyone +acting on such Contributor's behalf. Contributions do not include additions to +the Program which: (i) are separate modules of software distributed in +conjunction with the Program under their own license agreement, and (ii) are not +derivative works of the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents " mean patent claims licensable by a Contributor which are +necessarily infringed by the use or sale of its Contribution alone or when +combined with the Program. + +"Program" means the Contributions distributed in accordance with this Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, including +all Contributors. + +2. GRANT OF RIGHTS + +a) Subject to the terms of this Agreement, each Contributor hereby grants +Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, +prepare derivative works of, publicly display, publicly perform, distribute and +sublicense the Contribution of such Contributor, if any, and such derivative +works, in source code and object code form. + +b) Subject to the terms of this Agreement, each Contributor hereby grants +Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed +Patents to make, use, sell, offer to sell, import and otherwise transfer the +Contribution of such Contributor, if any, in source code and object code form. +This patent license shall apply to the combination of the Contribution and the +Program if, at the time the Contribution is added by the Contributor, such +addition of the Contribution causes such combination to be covered by the +Licensed Patents. The patent license shall not apply to any other combinations +which include the Contribution. No hardware per se is licensed hereunder. + +c) Recipient understands that although each Contributor grants the licenses to +its Contributions set forth herein, no assurances are provided by any Contributor +that the Program does not infringe the patent or other intellectual property +rights of any other entity. Each Contributor disclaims any liability to Recipient +for claims brought by any other entity based on infringement of intellectual +property rights or otherwise. As a condition to exercising the rights and +licenses granted hereunder, each Recipient hereby assumes sole responsibility to +secure any other intellectual property rights needed, if any. For example, if a +third party patent license is required to allow Recipient to distribute the +Program, it is Recipient's responsibility to acquire that license before +distributing the Program. + +d) Each Contributor represents that to its knowledge it has sufficient copyright +rights in its Contribution, if any, to grant the copyright license set forth in +this Agreement. + +3. REQUIREMENTS + +A Contributor may choose to distribute the Program in object code form under its +own license agreement, provided that: + +a) it complies with the terms and conditions of this Agreement; +and + +b) its license agreement: + +i) effectively disclaims on behalf of all Contributors all warranties and +conditions, express and implied, including warranties or conditions of title and +non-infringement, and implied warranties or conditions of merchantability and +fitness for a particular purpose; + +ii) effectively excludes on behalf of all Contributors all liability for damages, +including direct, indirect, special, incidental and consequential damages, such +as lost profits; + +iii) states that any provisions which differ from this Agreement are offered by +that Contributor alone and not by any other party; +and + +iv) states that source code for the Program is available from such Contributor, +and informs licensees how to obtain it in a reasonable manner on or through a +medium customarily used for software exchange. + +When the Program is made available in source code form: + +a) it must be made available under this Agreement; +and + +b) a copy of this Agreement must be included with each copy of the Program. + +Contributors may not remove or alter any copyright notices contained within the +Program. + +Each Contributor must identify itself as the originator of its Contribution, if +any, in a manner that reasonably allows subsequent Recipients to identify the +originator of the Contribution. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities with +respect to end users, business partners and the like. While this license is +intended to facilitate the commercial use of the Program, the Contributor who +includes the Program in a commercial product offering should do so in a manner +which does not create potential liability for other Contributors. Therefore, if a +Contributor includes the Program in a commercial product offering, such +Contributor ("Commercial Contributor") hereby agrees to defend and indemnify +every other Contributor ("Indemnified Contributor") against any losses, damages +and costs (collectively "Losses") arising from claims, lawsuits and other legal +actions brought by a third party against the Indemnified Contributor to the +extent caused by the acts or omissions of such Commercial Contributor in +connection with its distribution of the Program in a commercial product offering. +The obligations in this section do not apply to any claims or Losses relating to +any actual or alleged intellectual property infringement. In order to qualify, an +Indemnified Contributor must: a) promptly notify the Commercial Contributor in +writing of such claim, and b) allow the Commercial Contributor to control, and +cooperate with the Commercial Contributor in, the defense and any related +settlement negotiations. The Indemnified Contributor may participate in any such +claim at its own expense. + +For example, a Contributor might include the Program in a commercial product +offering, Product X. That Contributor is then a Commercial Contributor. If that +Commercial Contributor then makes performance claims, or offers warranties +related to Product X, those performance claims and warranties are such Commercial +Contributor's responsibility alone. Under this section, the Commercial +Contributor would have to defend claims against the other Contributors related to +those performance claims and warranties, and if a court requires any other +Contributor to pay any damages as a result, the Commercial Contributor must pay +those damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR +IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, +NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each +Recipient is solely responsible for determining the appropriateness of using and +distributing the Program and assumes all risks associated with its exercise of +rights under this Agreement , including but not limited to the risks and costs of +program errors, compliance with applicable laws, damage to or loss of data, +programs or equipment, and unavailability or interruption of operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY +CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST +PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS +GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under applicable +law, it shall not affect the validity or enforceability of the remainder of the +terms of this Agreement, and without further action by the parties hereto, such +provision shall be reformed to the minimum extent necessary to make such +provision valid and enforceable. + +If Recipient institutes patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Program itself +(excluding combinations of the Program with other software or hardware) infringes +such Recipient's patent(s), then such Recipient's rights granted under Section +2(b) shall terminate as of the date such litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails to comply +with any of the material terms or conditions of this Agreement and does not cure +such failure in a reasonable period of time after becoming aware of such +noncompliance. If all Recipient's rights under this Agreement terminate, +Recipient agrees to cease use and distribution of the Program as soon as +reasonably practicable. However, Recipient's obligations under this Agreement and +any licenses granted by Recipient relating to the Program shall continue and +survive. + +Everyone is permitted to copy and distribute copies of this Agreement, but in +order to avoid inconsistency the Agreement is copyrighted and may only be +modified in the following manner. The Agreement Steward reserves the right to +publish new versions (including revisions) of this Agreement from time to time. +No one other than the Agreement Steward has the right to modify this Agreement. +The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation +may assign the responsibility to serve as the Agreement Steward to a suitable +separate entity. Each new version of the Agreement will be given a distinguishing +version number. The Program (including Contributions) may always be distributed +subject to the version of the Agreement under which it was received. In addition, +after a new version of the Agreement is published, Contributor may elect to +distribute the Program (including its Contributions) under the new version. +Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no +rights or licenses to the intellectual property of any Contributor under this +Agreement, whether expressly, by implication, estoppel or otherwise. All rights +in the Program not expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the +intellectual property laws of the United States of America. No party to this +Agreement will bring a legal action under this Agreement more than one year after +the cause of action arose. Each party waives its rights to a jury trial in any +resulting litigation. \ No newline at end of file diff --git a/THIRD_PARTY/licenses/EPL-2.0.txt b/THIRD_PARTY/licenses/EPL-2.0.txt new file mode 100644 index 0000000..fa8f72b --- /dev/null +++ b/THIRD_PARTY/licenses/EPL-2.0.txt @@ -0,0 +1,267 @@ +Eclipse Public License - v 2.0 +============================== + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC +LICENSE (“AGREEMENT”). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM +CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + + +1. DEFINITIONS +-------------- + +“Contribution” means: + + a) in the case of the initial Contributor, the initial content Distributed + under this Agreement, and + b) in the case of each subsequent Contributor: + + i) changes to the Program, and + ii) additions to the Program; + + where such changes and/or additions to the Program originate from and are + Distributed by that particular Contributor. A Contribution “originates” from a + Contributor if it was added to the Program by such Contributor itself or anyone + acting on such Contributor's behalf. Contributions do not include changes or + additions to the Program that are not Modified Works. + +“Contributor” means any person or entity that Distributes the Program. + +“Licensed Patents” mean patent claims licensable by a Contributor which are +necessarily infringed by the use or sale of its Contribution alone or when +combined with the Program. + +“Program” means the Contributions Distributed in accordance with this Agreement. + +“Recipient” means anyone who receives the Program under this Agreement or any +Secondary License (as applicable), including Contributors. + +“Derivative Works” shall mean any work, whether in Source Code or other form, +that is based on (or derived from) the Program and for which the editorial +revisions, annotations, elaborations, or other modifications represent, as a +whole, an original work of authorship. + +“Modified Works” shall mean any work in Source Code or other form that results +from an addition to, deletion from, or modification of the contents of the +Program, including, for purposes of clarity any new file in Source Code form that +contains any contents of the Program. Modified Works shall not include works that +contain only declarations, interfaces, types, classes, structures, or files of +the Program solely in each case in order to link to, bind by name, or subclass +the Program or Modified Works thereof. + +“Distribute” means the acts of a) distributing or b) making available in any +manner that enables the transfer of a copy. + +“Source Code” means the form of a Program preferred for making modifications, +including but not limited to software source code, documentation source, and +configuration files. + +“Secondary License” means either the GNU General Public License, Version 2.0, or +any later versions of that license, including any exceptions or additional +permissions as identified by the initial Contributor. + + +2. GRANT OF RIGHTS +------------------ + + a) Subject to the terms of this Agreement, each Contributor hereby grants + Recipient a non-exclusive, worldwide, royalty-free copyright license to + reproduce, prepare Derivative Works of, publicly display, publicly perform, + Distribute and sublicense the Contribution of such Contributor, if any, and + such Derivative Works. + b) Subject to the terms of this Agreement, each Contributor hereby grants + Recipient a non-exclusive, worldwide, royalty-free patent license under + Licensed Patents to make, use, sell, offer to sell, import and otherwise + transfer the Contribution of such Contributor, if any, in Source Code or other + form. This patent license shall apply to the combination of the Contribution + and the Program if, at the time the Contribution is added by the Contributor, + such addition of the Contribution causes such combination to be covered by the + Licensed Patents. The patent license shall not apply to any other combinations + which include the Contribution. No hardware per se is licensed hereunder. + c) Recipient understands that although each Contributor grants the licenses to + its Contributions set forth herein, no assurances are provided by any + Contributor that the Program does not infringe the patent or other intellectual + property rights of any other entity. Each Contributor disclaims any liability + to Recipient for claims brought by any other entity based on infringement of + intellectual property rights or otherwise. As a condition to exercising the + rights and licenses granted hereunder, each Recipient hereby assumes sole + responsibility to secure any other intellectual property rights needed, if any. + For example, if a third party patent license is required to allow Recipient to + Distribute the Program, it is Recipient's responsibility to acquire that + license before distributing the Program. + d) Each Contributor represents that to its knowledge it has sufficient + copyright rights in its Contribution, if any, to grant the copyright license + set forth in this Agreement. + e) Notwithstanding the terms of any Secondary License, no Contributor makes + additional grants to any Recipient (other than those set forth in this + Agreement) as a result of such Recipient's receipt of the Program under the + terms of a Secondary License (if permitted under the terms of Section 3). + + +3. REQUIREMENTS +--------------- + +3.1 If a Contributor Distributes the Program in any form, then: + + a) the Program must also be made available as Source Code, in accordance with + section 3.2, and the Contributor must accompany the Program with a statement + that the Source Code for the Program is available under this Agreement, and + informs Recipients how to obtain it in a reasonable manner on or through a + medium customarily used for software exchange; and + b) the Contributor may Distribute the Program under a license different than + this Agreement, provided that such license: + + i) effectively disclaims on behalf of all other Contributors all warranties + and conditions, express and implied, including warranties or conditions of + title and non-infringement, and implied warranties or conditions of + merchantability and fitness for a particular purpose; + ii) effectively excludes on behalf of all other Contributors all liability + for damages, including direct, indirect, special, incidental and + consequential damages, such as lost profits; + iii) does not attempt to limit or alter the recipients' rights in the Source + Code under section 3.2; and + iv) requires any subsequent distribution of the Program by any party to be + under a license that satisfies the requirements of this section 3. + +3.2 When the Program is Distributed as Source Code: + + a) it must be made available under this Agreement, or if the Program + + (i) is combined with other material in a separate file or files made + available under a Secondary License, and + (ii) the initial Contributor attached to the Source Code the notice described + in Exhibit A of this Agreement, then the Program may be made available under + the terms of such Secondary Licenses, and + + b) a copy of this Agreement must be included with each copy of the Program. + +3.3 Contributors may not remove or alter any copyright, patent, trademark, +attribution notices, disclaimers of warranty, or limitations of liability +(‘notices’) contained within the Program from any copy of the Program which they +Distribute, provided that Contributors may add their own appropriate notices. + + +4. COMMERCIAL DISTRIBUTION +-------------------------- + +Commercial distributors of software may accept certain responsibilities with +respect to end users, business partners and the like. While this license is +intended to facilitate the commercial use of the Program, the Contributor who +includes the Program in a commercial product offering should do so in a manner +which does not create potential liability for other Contributors. Therefore, if a +Contributor includes the Program in a commercial product offering, such +Contributor (“Commercial Contributor”) hereby agrees to defend and indemnify +every other Contributor (“Indemnified Contributor”) against any losses, damages +and costs (collectively “Losses”) arising from claims, lawsuits and other legal +actions brought by a third party against the Indemnified Contributor to the +extent caused by the acts or omissions of such Commercial Contributor in +connection with its distribution of the Program in a commercial product offering. +The obligations in this section do not apply to any claims or Losses relating to +any actual or alleged intellectual property infringement. In order to qualify, an +Indemnified Contributor must: a) promptly notify the Commercial Contributor in +writing of such claim, and b) allow the Commercial Contributor to control, and +cooperate with the Commercial Contributor in, the defense and any related +settlement negotiations. The Indemnified Contributor may participate in any such +claim at its own expense. + +For example, a Contributor might include the Program in a commercial product +offering, Product X. That Contributor is then a Commercial Contributor. If that +Commercial Contributor then makes performance claims, or offers warranties +related to Product X, those performance claims and warranties are such Commercial +Contributor's responsibility alone. Under this section, the Commercial +Contributor would have to defend claims against the other Contributors related to +those performance claims and warranties, and if a court requires any other +Contributor to pay any damages as a result, the Commercial Contributor must pay +those damages. + + +5. NO WARRANTY +-------------- + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED BY +APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN “AS IS” BASIS, WITHOUT WARRANTIES +OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT +LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, +MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely +responsible for determining the appropriateness of using and distributing the +Program and assumes all risks associated with its exercise of rights under this +Agreement, including but not limited to the risks and costs of program errors, +compliance with applicable laws, damage to or loss of data, programs or +equipment, and unavailability or interruption of operations. + + +6. DISCLAIMER OF LIABILITY +-------------------------- + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED BY +APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE +PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + +7. GENERAL +---------- + +If any provision of this Agreement is invalid or unenforceable under applicable +law, it shall not affect the validity or enforceability of the remainder of the +terms of this Agreement, and without further action by the parties hereto, such +provision shall be reformed to the minimum extent necessary to make such +provision valid and enforceable. + +If Recipient institutes patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Program itself +(excluding combinations of the Program with other software or hardware) infringes +such Recipient's patent(s), then such Recipient's rights granted under Section +2(b) shall terminate as of the date such litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails to comply +with any of the material terms or conditions of this Agreement and does not cure +such failure in a reasonable period of time after becoming aware of such +noncompliance. If all Recipient's rights under this Agreement terminate, +Recipient agrees to cease use and distribution of the Program as soon as +reasonably practicable. However, Recipient's obligations under this Agreement and +any licenses granted by Recipient relating to the Program shall continue and +survive. + +Everyone is permitted to copy and distribute copies of this Agreement, but in +order to avoid inconsistency the Agreement is copyrighted and may only be +modified in the following manner. The Agreement Steward reserves the right to +publish new versions (including revisions) of this Agreement from time to time. +No one other than the Agreement Steward has the right to modify this Agreement. +The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation +may assign the responsibility to serve as the Agreement Steward to a suitable +separate entity. Each new version of the Agreement will be given a distinguishing +version number. The Program (including Contributions) may always be Distributed +subject to the version of the Agreement under which it was received. In addition, +after a new version of the Agreement is published, Contributor may elect to +Distribute the Program (including its Contributions) under the new version. + +Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no +rights or licenses to the intellectual property of any Contributor under this +Agreement, whether expressly, by implication, estoppel or otherwise. All rights +in the Program not expressly granted under this Agreement are reserved. Nothing +in this Agreement is intended to be enforceable by any entity that is not a +Contributor or Recipient. No third-party beneficiary rights are created under +this Agreement. + + +Exhibit A – Form of Secondary Licenses Notice +--------------------------------------------- + +“This Source Code may also be made available under the following Secondary +Licenses when the conditions for such availability set forth in the Eclipse +Public License, v. 2.0 are satisfied: {name license(s), version(s), and +exceptions or additional permissions here}.” + + Simply including a copy of this Agreement, including this Exhibit A is not + sufficient to license the Source Code under Secondary Licenses. + + If it is not possible or desirable to put the notice in a particular file, + then You may include the notice in a location (such as a LICENSE file in a + relevant directory) where a recipient would be likely to look for such a + notice. + + You may add additional accurate notices of copyright ownership. diff --git a/THIRD_PARTY/licenses/ISC.txt b/THIRD_PARTY/licenses/ISC.txt new file mode 100644 index 0000000..5981945 --- /dev/null +++ b/THIRD_PARTY/licenses/ISC.txt @@ -0,0 +1,16 @@ +ISC License (ISCL) +================== + +Copyright (c) 4-digit year, Company or Person's Name + +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. \ No newline at end of file diff --git a/THIRD_PARTY/licenses/LICENSE-JJ2000.txt b/THIRD_PARTY/licenses/LICENSE-JJ2000.txt new file mode 100644 index 0000000..725de15 --- /dev/null +++ b/THIRD_PARTY/licenses/LICENSE-JJ2000.txt @@ -0,0 +1,28 @@ +This software module was originally developed by Raphaël Grosbois and +Diego Santa Cruz (Swiss Federal Institute of Technology-EPFL); Joel +Askelöf (Ericsson Radio Systems AB); and Bertrand Berthelot, David +Bouchard, Félix Henry, Gerard Mozelle and Patrice Onno (Canon Research +Centre France S.A) in the course of development of the JPEG2000 +standard as specified by ISO/IEC 15444 (JPEG 2000 Standard). This +software module is an implementation of a part of the JPEG 2000 +Standard. Swiss Federal Institute of Technology-EPFL, Ericsson Radio +Systems AB and Canon Research Centre France S.A (collectively JJ2000 +Partners) agree not to assert against ISO/IEC and users of the JPEG +2000 Standard (Users) any of their rights under the copyright, not +including other intellectual property rights, for this software module +with respect to the usage by ISO/IEC and Users of this software module +or modifications thereof for use in hardware or software products +claiming conformance to the JPEG 2000 Standard. Those intending to use +this software module in hardware or software products are advised that +their use may infringe existing patents. The original developers of +this software module, JJ2000 Partners and ISO/IEC assume no liability +for use of this software module or modifications thereof. No license +or right to this software module is granted for non JPEG 2000 Standard +conforming products. JJ2000 Partners have full right to use this +software module for his/her own purpose, assign or donate this +software module to any third party and to inhibit third parties from +using this software module for non JPEG 2000 Standard conforming +products. This copyright notice must be included in all copies or +derivative works of this software module. + +Copyright (c) 1999/2000 JJ2000 Partners. \ No newline at end of file diff --git a/THIRD_PARTY/licenses/MIT.txt b/THIRD_PARTY/licenses/MIT.txt new file mode 100644 index 0000000..242da62 --- /dev/null +++ b/THIRD_PARTY/licenses/MIT.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/THIRD_PARTY/licenses/MPL-2.0.txt b/THIRD_PARTY/licenses/MPL-2.0.txt new file mode 100644 index 0000000..8bd6c66 --- /dev/null +++ b/THIRD_PARTY/licenses/MPL-2.0.txt @@ -0,0 +1,408 @@ +Mozilla Public License +Version 2.0 +====================== + + +1. Definitions +-------------- + + 1.1. "Contributor" + + means each individual or legal entity that creates, contributes to the creation + of, or owns Covered Software. + + 1.2. "Contributor Version" + + means the combination of the Contributions of others (if any) used by a + Contributor and that particular Contributor's Contribution. + + 1.3. "Contribution" + + means Covered Software of a particular Contributor. + + 1.4. "Covered Software" + + means Source Code Form to which the initial Contributor has attached the notice + in Exhibit A, the Executable Form of such Source Code Form, and Modifications + of such Source Code Form, in each case including portions thereof. + + 1.5. "Incompatible With Secondary Licenses" + + means + + a. + + that the initial Contributor has attached the notice described in Exhibit B + to the Covered Software; or + + b. + + that the Covered Software was made available under the terms of version 1.1 + or earlier of the License, but not also under the terms of a Secondary + License. + + 1.6. "Executable Form" + + means any form of the work other than Source Code Form. + + 1.7. "Larger Work" + + means a work that combines Covered Software with other material, in a separate + file or files, that is not Covered Software. + + 1.8. "License" + + means this document. + + 1.9. "Licensable" + + means having the right to grant, to the maximum extent possible, whether at the + time of the initial grant or subsequently, any and all of the rights conveyed + by this License. + + 1.10. "Modifications" + + means any of the following: + + a. + + any file in Source Code Form that results from an addition to, deletion + from, or modification of the contents of Covered Software; or + + b. + + any new file in Source Code Form that contains any Covered Software. + + 1.11. "Patent Claims" of a Contributor + + means any patent claim(s), including without limitation, method, process, and + apparatus claims, in any patent Licensable by such Contributor that would be + infringed, but for the grant of the License, by the making, using, selling, + offering for sale, having made, import, or transfer of either its Contributions + or its Contributor Version. + + 1.12. "Secondary License" + + means either the GNU General Public License, Version 2.0, the GNU Lesser + General Public License, Version 2.1, the GNU Affero General Public License, + Version 3.0, or any later versions of those licenses. + + 1.13. "Source Code Form" + + means the form of the work preferred for making modifications. + + 1.14. "You" (or "Your") + + means an individual or a legal entity exercising rights under this License. For + legal entities, "You" includes any entity that controls, is controlled by, or + is under common control with You. For purposes of this definition, "control" + means (a) the power, direct or indirect, to cause the direction or management + of such entity, whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial ownership of such + entity. + + +2. License Grants and Conditions +-------------------------------- + + + 2.1. Grants + + Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive + license: + + a. + + under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, modify, + display, perform, distribute, and otherwise exploit its Contributions, + either on an unmodified basis, with Modifications, or as part of a Larger + Work; and + + b. + + under Patent Claims of such Contributor to make, use, sell, offer for sale, + have made, import, and otherwise transfer either its Contributions or its + Contributor Version. + + + 2.2. Effective Date + + The licenses granted in Section 2.1 with respect to any Contribution become + effective for each Contribution on the date the Contributor first distributes + such Contribution. + + + 2.3. Limitations on Grant Scope + + The licenses granted in this Section 2 are the only rights granted under this + License. No additional rights or licenses will be implied from the distribution + or licensing of Covered Software under this License. Notwithstanding + Section 2.1(b) above, no patent license is granted by a Contributor: + + a. + + for any code that a Contributor has removed from Covered Software; or + + b. + + for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + + c. + + under Patent Claims infringed by Covered Software in the absence of its + Contributions. + + This License does not grant any rights in the trademarks, service marks, or + logos of any Contributor (except as may be necessary to comply with the notice + requirements in Section 3.4). + + + 2.4. Subsequent Licenses + + No Contributor makes additional grants as a result of Your choice to distribute + the Covered Software under a subsequent version of this License (see + Section 10.2) or under the terms of a Secondary License (if permitted under the + terms of Section 3.3). + + + 2.5. Representation + + Each Contributor represents that the Contributor believes its Contributions are + its original creation(s) or it has sufficient rights to grant the rights to its + Contributions conveyed by this License. + + + 2.6. Fair Use + + This License is not intended to limit any rights You have under applicable + copyright doctrines of fair use, fair dealing, or other equivalents. + + + 2.7. Conditions + + Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in + Section 2.1. + + +3. Responsibilities +------------------- + + + 3.1. Distribution of Source Form + + All distribution of Covered Software in Source Code Form, including any + Modifications that You create or to which You contribute, must be under the + terms of this License. You must inform recipients that the Source Code Form of + the Covered Software is governed by the terms of this License, and how they can + obtain a copy of this License. You may not attempt to alter or restrict the + recipients' rights in the Source Code Form. + + + 3.2. Distribution of Executable Form + + If You distribute Covered Software in Executable Form then: + + a. + + such Covered Software must also be made available in Source Code Form, as + described in Section 3.1, and You must inform recipients of the Executable + Form how they can obtain a copy of such Source Code Form by reasonable + means in a timely manner, at a charge no more than the cost of distribution + to the recipient; and + + b. + + You may distribute such Executable Form under the terms of this License, or + sublicense it under different terms, provided that the license for the + Executable Form does not attempt to limit or alter the recipients' rights + in the Source Code Form under this License. + + + 3.3. Distribution of a Larger Work + + You may create and distribute a Larger Work under terms of Your choice, + provided that You also comply with the requirements of this License for the + Covered Software. If the Larger Work is a combination of Covered Software with + a work governed by one or more Secondary Licenses, and the Covered Software is + not Incompatible With Secondary Licenses, this License permits You to + additionally distribute such Covered Software under the terms of such Secondary + License(s), so that the recipient of the Larger Work may, at their option, + further distribute the Covered Software under the terms of either this License + or such Secondary License(s). + + + 3.4. Notices + + You may not remove or alter the substance of any license notices (including + copyright notices, patent notices, disclaimers of warranty, or limitations of + liability) contained within the Source Code Form of the Covered Software, + except that You may alter any license notices to the extent required to remedy + known factual inaccuracies. + + + 3.5. Application of Additional Terms + + You may choose to offer, and to charge a fee for, warranty, support, indemnity + or liability obligations to one or more recipients of Covered Software. + However, You may do so only on Your own behalf, and not on behalf of any + Contributor. You must make it absolutely clear that any such warranty, support, + indemnity, or liability obligation is offered by You alone, and You hereby + agree to indemnify every Contributor for any liability incurred by such + Contributor as a result of warranty, support, indemnity or liability terms You + offer. You may include additional disclaimers of warranty and limitations of + liability specific to any jurisdiction. + + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this License with +respect to some or all of the Covered Software due to statute, judicial order, or +regulation then You must: (a) comply with the terms of this License to the +maximum extent possible; and (b) describe the limitations and the code they +affect. Such description must be placed in a text file included with all +distributions of the Covered Software under this License. Except to the extent +prohibited by statute or regulation, such description must be sufficiently +detailed for a recipient of ordinary skill to be able to understand it. + + +5. Termination +-------------- + + 5.1. The rights granted under this License will terminate automatically if You + fail to comply with any of its terms. However, if You become compliant, then + the rights granted under this License from a particular Contributor are + reinstated (a) provisionally, unless and until such Contributor explicitly and + finally terminates Your grants, and (b) on an ongoing basis, if such + Contributor fails to notify You of the non-compliance by some reasonable means + prior to 60 days after You have come back into compliance. Moreover, Your + grants from a particular Contributor are reinstated on an ongoing basis if such + Contributor notifies You of the non-compliance by some reasonable means, this + is the first time You have received notice of non-compliance with this License + from such Contributor, and You become compliant prior to 30 days after Your + receipt of the notice. + + 5.2. If You initiate litigation against any entity by asserting a patent + infringement claim (excluding declaratory judgment actions, counter-claims, and + cross-claims) alleging that a Contributor Version directly or indirectly + infringes any patent, then the rights granted to You by any and all + Contributors for the Covered Software under Section 2.1 of this License shall + terminate. + + 5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user + license agreements (excluding distributors and resellers) which have been + validly granted by You or Your distributors under this License prior to + termination shall survive termination. + + +6. Disclaimer of Warranty +------------------------- + +Covered Software is provided under this License on an "as is" basis, without +warranty of any kind, either expressed, implied, or statutory, including, without +limitation, warranties that the Covered Software is free of defects, +merchantable, fit for a particular purpose or non-infringing. The entire risk as +to the quality and performance of the Covered Software is with You. Should any +Covered Software prove defective in any respect, You (not any Contributor) assume +the cost of any necessary servicing, repair, or correction. This disclaimer of +warranty constitutes an essential part of this License. No use of any Covered +Software is authorized under this License except under this disclaimer. + + +7. Limitation of Liability +-------------------------- + +Under no circumstances and under no legal theory, whether tort (including +negligence), contract, or otherwise, shall any Contributor, or anyone who +distributes Covered Software as permitted above, be liable to You for any direct, +indirect, special, incidental, or consequential damages of any character +including, without limitation, damages for lost profits, loss of goodwill, work +stoppage, computer failure or malfunction, or any and all other commercial +damages or losses, even if such party shall have been informed of the possibility +of such damages. This limitation of liability shall not apply to liability for +death or personal injury resulting from such party's negligence to the extent +applicable law prohibits such limitation. Some jurisdictions do not allow the +exclusion or limitation of incidental or consequential damages, so this exclusion +and limitation may not apply to You. + + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the courts of a +jurisdiction where the defendant maintains its principal place of business and +such litigation shall be governed by laws of that jurisdiction, without reference +to its conflict-of-law provisions. Nothing in this Section shall prevent a +party's ability to bring cross-claims or counter-claims. + + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject matter +hereof. If any provision of this License is held to be unenforceable, such +provision shall be reformed only to the extent necessary to make it enforceable. +Any law or regulation which provides that the language of a contract shall be +construed against the drafter shall not be used to construe this License against +a Contributor. + + +10. Versions of the License +--------------------------- + + + 10.1. New Versions + + Mozilla Foundation is the license steward. Except as provided in Section 10.3, + no one other than the license steward has the right to modify or publish new + versions of this License. Each version will be given a distinguishing version + number. + + + 10.2. Effect of New Versions + + You may distribute the Covered Software under the terms of the version of the + License under which You originally received the Covered Software, or under the + terms of any subsequent version published by the license steward. + + + 10.3. Modified Versions + + If you create software not governed by this License, and you want to create a + new license for such software, you may create and use a modified version of + this License if you rename the license and remove any references to the name of + the license steward (except to note that such modified license differs from + this License). + + + 10.4. Distributing Source Code Form that is Incompatible With Secondary + Licenses + + If You choose to distribute Source Code Form that is Incompatible With + Secondary Licenses under the terms of this version of the License, the notice + described in Exhibit B of this License must be attached. + + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public License, + v. 2.0. If a copy of the MPL was not distributed with this file, You can + obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular file, then +You may include the notice in a location (such as a LICENSE file in a relevant +directory) where a recipient would be likely to look for such a notice. + +You may add additional accurate notices of copyright ownership. + + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as defined + by the Mozilla Public License, v. 2.0. diff --git a/THIRD_PARTY/licenses/PSF-2.0.txt b/THIRD_PARTY/licenses/PSF-2.0.txt new file mode 100644 index 0000000..d72615b --- /dev/null +++ b/THIRD_PARTY/licenses/PSF-2.0.txt @@ -0,0 +1,46 @@ +PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 +============================================ + +-------------------------------------------- + + 1. This LICENSE AGREEMENT is between the Python Software Foundation ("PSF"), + and the Individual or Organization ("Licensee") accessing and otherwise using + this software ("Python") in source or binary form and its associated + documentation. + + 2. Subject to the terms and conditions of this License Agreement, PSF hereby + grants Licensee a nonexclusive, royalty-free, world-wide license to + reproduce, analyze, test, perform and/or display publicly, prepare derivative + works, distribute, and otherwise use Python alone or in any derivative + version, provided, however, that PSF's License Agreement and PSF's notice of + copyright, i.e., "Copyright (c) 2001, 2002, 2003, 2004 Python Software + Foundation; All Rights Reserved" are retained in Python alone or in any + derivative version prepared by Licensee. + + 3. In the event Licensee prepares a derivative work that is based on or + incorporates Python or any part thereof, and wants to make the derivative + work available to others as provided herein, then Licensee hereby agrees to + include in any such work a brief summary of the changes made to Python. + + 4. PSF is making Python available to Licensee on an "AS IS" basis. PSF MAKES + NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT + NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF + MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF + PYTHON WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. + + 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON FOR ANY + INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF + MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, OR ANY DERIVATIVE + THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + + 6. This License Agreement will automatically terminate upon a material breach + of its terms and conditions. + + 7. Nothing in this License Agreement shall be deemed to create any + relationship of agency, partnership, or joint venture between PSF and + Licensee. This License Agreement does not grant permission to use PSF + trademarks or trade name in a trademark sense to endorse or promote products + or services of Licensee, or any third party. + + 8. By copying, installing or otherwise using Python, Licensee agrees to be + bound by the terms and conditions of this License Agreement. \ No newline at end of file diff --git a/THIRD_PARTY/licenses/Plexus Classworlds License.txt b/THIRD_PARTY/licenses/Plexus Classworlds License.txt new file mode 100644 index 0000000..10d2f3b --- /dev/null +++ b/THIRD_PARTY/licenses/Plexus Classworlds License.txt @@ -0,0 +1,37 @@ +Plexus Classworlds License +========================== + +Copyright 2002 (C) The Codehaus. All Rights Reserved. + +Redistribution and use of this software and associated documentation +("Software"), with or without modification, are permitted provided that the +following conditions are met: + + 1. Redistributions of source code must retain copyright statements and notices. + Redistributions must also contain a copy of this document. + + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + 3. The name "classworlds" must not be used to endorse or promote products + derived from this Software without prior written permission of The Codehaus. + For written permission, please contact bob@codehaus.org. + + 4. Products derived from this Software may not be called "classworlds" nor may + "classworlds" appear in their names without prior written permission of The + Codehaus. "classworlds" is a registered trademark of The Codehaus. + + 5. Due credit should be given to The Codehaus. + (http://classworlds.codehaus.org/). + +THIS SOFTWARE IS PROVIDED BY THE CODEHAUS AND CONTRIBUTORS "AS IS" AND ANY +EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE CODEHAUS OR ITS CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/build-scripts/fetch_shaded_jar.py b/build-scripts/fetch_shaded_jar.py new file mode 100644 index 0000000..6f8d087 --- /dev/null +++ b/build-scripts/fetch_shaded_jar.py @@ -0,0 +1,80 @@ +""" +Finds and copies the latest shaded JAR from the Java build to the Python package source. + +This script is intended to be run from the monorepo root, typically as part of a +CI/CD pipeline, before the Python package is built. +""" + +import argparse +import logging +import re +import shutil +import sys +from pathlib import Path +from typing import Optional + +# Requires 'packaging' library (pip install packaging) +from packaging.version import parse as parse_version + +def find_latest_jar_by_semver(target_dir: Path) -> Optional[Path]: + """Finds the shaded JAR with the highest semantic version in its filename.""" + + # Example filename: opendataloader-pdf-runtime-0.1.0.jar + jar_pattern = "opendataloader-pdf-runtime-*.jar" + version_regex = re.compile(r"opendataloader-pdf-runtime-(.+?)\.jar") + + latest_version = parse_version("0.0.0") + latest_jar_path = None + + # Exclude Maven's 'original' JARs to ensure we get the shaded (fat) JAR. + potential_jars = [p for p in target_dir.glob(jar_pattern) if 'original' not in p.name] + + if not potential_jars: + return None + + # Iterate through potential JARs to find the one with the highest version number. + for jar_path in potential_jars: + match = version_regex.search(jar_path.name) + if match: + try: + current_version = parse_version(match.group(1)) + if current_version > latest_version: + latest_version = current_version + latest_jar_path = jar_path + except Exception: + # Ignore files with non-parseable version strings. + continue + + return latest_jar_path + +def main(): + """Parse command-line arguments and orchestrate the copy process.""" + + logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s', stream=sys.stdout) + + parser = argparse.ArgumentParser(description="Copies the latest shaded JAR to the Python source tree.") + parser.add_argument("java_target_dir", type=Path, help="Path to the Java module's 'target' directory.") + parser.add_argument("python_jars_dir", type=Path, help="Path to the Python package's destination directory for JARs.") + args = parser.parse_args() + + java_target_path: Path = args.java_target_dir.resolve() + python_jars_path: Path = args.python_jars_dir.resolve() + + if not java_target_path.is_dir(): + parser.error(f"Java target directory not found: {java_target_path}") + + # Ensure the destination directory exists. + python_jars_path.mkdir(parents=True, exist_ok=True) + + source_jar_path = find_latest_jar_by_semver(java_target_path) + if not source_jar_path: + parser.error(f"No versioned shaded JAR found in: {java_target_path}") + + # Standardize the destination name for consistent access within the Python package. + destination_jar_path = python_jars_path / 'runtime.jar' + + shutil.copy2(source_jar_path, destination_jar_path) + logging.info(f"Copied '{source_jar_path.name}' to '{destination_jar_path}'") + +if __name__ == "__main__": + main() diff --git a/build-scripts/set_version.py b/build-scripts/set_version.py new file mode 100644 index 0000000..a14dfa0 --- /dev/null +++ b/build-scripts/set_version.py @@ -0,0 +1,45 @@ +# build-scripts/set_version.py + +import os +import re +import sys + +def set_version(version_file, pom_file, pyproject_toml_file): + with open(version_file, 'r') as f: + version = f.read().strip() + + # Update Maven POM + with open(pom_file, 'r') as f: + pom_content = f.read() + pom_content = re.sub(r'.*', f'{version}', pom_content, count=1) + with open(pom_file, 'w') as f: + f.write(pom_content) + print(f"Updated Maven POM version to {version}") + + # Update Python pyproject.toml + with open(pyproject_toml_file, 'r') as f: + pyproject_content = f.read() + pyproject_content = re.sub(r'version = ".*"', f'version = "{version}"', pyproject_content, count=1) + with open(pyproject_toml_file, 'w') as f: + f.write(pyproject_content) + print(f"Updated Python pyproject.toml version to {version}") + +if __name__ == "__main__": + # Paths are relative to the monorepo root + root_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) + + version_path = os.path.join(root_dir, 'VERSION') + java_pom_path = os.path.join(root_dir, 'java', 'pom.xml') + python_pyproject_path = os.path.join(root_dir, 'python', 'packages', 'opendataloader_pdf', 'pyproject.toml') + + if not os.path.exists(version_path): + print(f"Error: VERSION file not found at {version_path}") + sys.exit(1) + if not os.path.exists(java_pom_path): + print(f"Error: Java pom.xml not found at {java_pom_path}") + sys.exit(1) + if not os.path.exists(python_pyproject_path): + print(f"Error: Python pyproject.toml not found at {python_pyproject_path}") + sys.exit(1) + + set_version(version_path, java_pom_path, python_pyproject_path) diff --git a/docs/hybrid/docling-speed-optimization-plan.md b/docs/hybrid/docling-speed-optimization-plan.md new file mode 100644 index 0000000..a8386b1 --- /dev/null +++ b/docs/hybrid/docling-speed-optimization-plan.md @@ -0,0 +1,301 @@ +# Docling Speed Optimization Plan + +## Progress Tracker + +| Task | Status | Completed | Result | +|------|--------|-----------|--------| +| Phase 0: Baseline measurement | ✅ completed | 2026-01-03 | 2.283s/doc | +| Phase 0: FastAPI experiment | ✅ completed | 2026-01-03 | 0.685s/doc (PASS < 0.8s) | +| Phase 0: subprocess experiment | ✅ completed | 2026-01-03 | 0.661s/doc (PASS < 1.0s) | +| Phase 0: Results comparison | ✅ completed | 2026-01-03 | 3.3x-3.5x speedup | +| Task 1.1: docling_subprocess_worker.py | ⏭️ skipped | - | FastAPI only | +| Task 1.2: hybrid_server.py | ✅ completed | 2026-01-03 | opendataloader-pdf-hybrid | +| Task 2.1: DoclingSubprocessClient.java | ⏭️ skipped | - | FastAPI only | +| Task 2.2: DoclingFastServerClient.java | ✅ completed | 2026-01-03 | - | +| Task 2.3: HybridClientFactory modification | ✅ completed | 2026-01-03 | docling-fast only | +| Task 3.1: pdf_parser modules | ✅ completed | 2026-01-03 | docling-fast only | +| Task 3.2: engine_registry.py | ✅ completed | 2026-01-03 | - | +| Task 3.3: run.py CLI options | ✅ completed | 2026-01-03 | - | +| Task 4.1: Full benchmark | ✅ completed | 2026-01-03 | See experiments/speed/ | +| Task 4.2: Results documentation | ✅ completed | 2026-01-03 | speed-experiment-2026-01-03.md | + +**Status Legend:** +- ⬜ `not_started` - Not yet begun +- 🔄 `in_progress` - Currently working +- ✅ `completed` - Done and verified +- ⏭️ `skipped` - Excluded from plan +- ⏸️ `blocked` - Waiting on dependency +- ❌ `failed` - Did not meet criteria +- 🚫 `discarded` - Plan abandoned + +--- + +## 1. Background + +### Current Problem +- **DoclingClient** (docling-serve HTTP API): ~2 seconds per page +- **docling SDK direct call**: ~0.5 seconds per document (user-reported) +- HTTP overhead negates the speed benefits of hybrid mode + +### Goal +Implement alternative approaches to efficiently call the docling SDK, then compare benchmark speeds + +--- + +## 2. Experiment Phase (Phase 0) + +### Purpose +Validate the speed improvement hypothesis before full implementation + +### Experiment Targets +| Approach | Description | +|----------|-------------| +| baseline | Current docling-serve (reference) | +| fastapi | Optimized FastAPI server | +| subprocess | Direct Python subprocess call | + +### Success Criteria +| Approach | Threshold | Condition | +|----------|-----------|-----------| +| fastapi | **< 0.8 sec/doc** (average) | Based on 200 documents | +| subprocess | **< 1.0 sec/doc** (average) | Based on 200 documents | + +### Failure Conditions +- If fastapi approach exceeds 0.8 sec/doc: **Discard entire plan** +- If only subprocess fails: Exclude that approach only + +### Experiment Environment +- Benchmark PDFs: `tests/benchmark/pdfs/` (200 files) +- Settings: `do_ocr=true`, `do_table_structure=true` +- Measurement: `total_time / document_count` + +### Experiment Scripts +``` +scripts/experiments/ +├── docling_baseline_bench.py # docling-serve speed measurement +├── docling_fastapi_bench.py # FastAPI server + client test +├── docling_subprocess_bench.py # subprocess approach test +└── docling_speed_report.py # Results comparison report +``` + +### Experiment Execution +```bash +# 1. baseline (requires docling-serve running) +python scripts/experiments/docling_baseline_bench.py + +# 2. fastapi (server auto-starts) +python scripts/experiments/docling_fastapi_bench.py + +# 3. subprocess +python scripts/experiments/docling_subprocess_bench.py + +# 4. compare results +python scripts/experiments/docling_speed_report.py +``` + +### Results Recording +``` +docs/hybrid/experiments/ +└── speed-experiment-YYYY-MM-DD.md +``` + +--- + +## 3. Implementation Tasks (After Phase 0 Success) + +### Task 1: Python Scripts + +#### Task 1.1: docling_subprocess_worker.py +| Item | Details | +|------|---------| +| File | `scripts/docling_subprocess_worker.py` | +| Prerequisites | docling package installed | +| Description | stdin JSON → stdout JSON conversion | +| Success Criteria | Single PDF conversion succeeds, JSON output parseable | +| Test | `echo '{"pdf_path":"/path/to.pdf"}' \| python scripts/docling_subprocess_worker.py` | + +#### Task 1.2: hybrid_server.py +| Item | Details | +|------|---------| +| File | `python/opendataloader-pdf/src/opendataloader_pdf/hybrid_server.py` | +| Prerequisites | `pip install opendataloader-pdf[hybrid]` | +| Description | POST /convert endpoint, DocumentConverter singleton | +| Success Criteria | curl PDF upload returns JSON response | +| Test | `opendataloader-pdf-hybrid &` then `curl -F "file=@test.pdf" http://localhost:5002/v1/convert/file` | + +### Task 2: Java Client Implementation + +#### Task 2.1: DoclingSubprocessClient.java +| Item | Details | +|------|---------| +| File | `java/.../hybrid/DoclingSubprocessClient.java` | +| Prerequisites | Task 1.1 complete | +| Description | ProcessBuilder executes Python, stdin/stdout JSON | +| Success Criteria | Implements HybridClient interface, single PDF conversion succeeds | +| Test | `DoclingSubprocessClientTest.java` unit tests pass | + +#### Task 2.2: DoclingFastServerClient.java +| Item | Details | +|------|---------| +| File | `java/.../hybrid/DoclingFastServerClient.java` | +| Prerequisites | Task 1.2 complete | +| Description | OkHttp calls FastAPI server | +| Success Criteria | Implements HybridClient interface, single PDF conversion succeeds | +| Test | `DoclingFastServerClientTest.java` unit tests pass | + +#### Task 2.3: HybridClientFactory Modification +| Item | Details | +|------|---------| +| File | `java/.../hybrid/HybridClientFactory.java` | +| Prerequisites | Task 2.1, 2.2 complete | +| Description | Register `docling-subprocess`, `docling-fast` backends | +| Success Criteria | `HybridClientFactory.getOrCreate("docling-fast", config)` works | +| Test | Extend `HybridClientFactoryTest.java` | + +### Task 3: Benchmark Integration + +#### Task 3.1: Add pdf_parser Modules +| Item | Details | +|------|---------| +| Files | `tests/benchmark/src/pdf_parser_opendataloader_hybrid_subprocess.py` | +| | `tests/benchmark/src/pdf_parser_opendataloader_hybrid_fast.py` | +| Prerequisites | Task 2.3 complete, JAR built | +| Success Criteria | Benchmark runs with `--hybrid docling-subprocess` option | + +#### Task 3.2: Modify engine_registry.py +| Item | Details | +|------|---------| +| File | `tests/benchmark/src/engine_registry.py` | +| Description | Register new engines | +| Success Criteria | New engines queryable from ENGINE_DISPATCH | + +#### Task 3.3: Add run.py CLI Options +| Item | Details | +|------|---------| +| File | `tests/benchmark/run.py` | +| Description | Extend `--hybrid` choices | +| Success Criteria | `./scripts/bench.sh --hybrid docling-fast` runs | + +### Task 4: Final Validation + +#### Task 4.1: Full Benchmark Execution +| Item | Details | +|------|---------| +| Prerequisites | Task 3 complete | +| Execution | Benchmark 200 documents with all 3 approaches | +| Success Criteria | elapsed_per_doc comparison shows meaningful improvement | + +#### Task 4.2: Results Documentation +| Item | Details | +|------|---------| +| File | `docs/hybrid/docling-speed-optimization-results.md` | +| Content | Speed comparison table, recommended approach, usage guide | + +--- + +## 4. Task Workflow + +``` +Phase 0: Experiment +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + ┌─────────────────┐ + │ baseline measure │ + └────────┬────────┘ + │ + ┌──────────────┴──────────────┐ + ▼ ▼ + ┌─────────────────┐ ┌─────────────────┐ + │ fastapi test │ │ subprocess test │ + └────────┬────────┘ └────────┬────────┘ + │ │ + └──────────────┬──────────────┘ + ▼ + ┌─────────────────┐ + │ compare results │ + │ < 0.8 sec/doc? │ + └────────┬────────┘ + │ + ┌──────────────┴──────────────┐ + ▼ ▼ + [SUCCESS] [FAILURE] + Proceed to Discard plan + Phase 1 + +Phase 1~4: Implementation (parallelizable) +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + Task 1.1 ─────────────────► Task 2.1 ─┐ + (subprocess worker) (Java client) │ + │ + Task 1.2 ─────────────────► Task 2.2 ─┼─► Task 2.3 ─► Task 3 ─► Task 4 + (fastapi server) (Java client) │ (Factory) (Bench) (Validate) + │ + ◄──── parallelizable ────► │ +``` + +### Parallelizable Tasks +| Group | Tasks | Notes | +|-------|-------|-------| +| Phase 0 | fastapi test, subprocess test | After baseline measurement | +| Phase 1 | Task 1.1, Task 1.2 | Independent | +| Phase 2 | Task 2.1, Task 2.2 | Depend on Task 1.1, 1.2 respectively | +| Phase 3 | Task 3.1, 3.2, 3.3 | After Task 2.3 complete | + +### Dependencies +``` +Task 1.1 → Task 2.1 ─┐ + ├─► Task 2.3 → Task 3.* → Task 4.* +Task 1.2 → Task 2.2 ─┘ +``` + +--- + +## 5. File List + +### New Files +| File | Phase | Description | +|------|-------|-------------| +| `scripts/experiments/docling_baseline_bench.py` | 0 | Baseline measurement | +| `scripts/experiments/docling_fastapi_bench.py` | 0 | FastAPI experiment | +| `scripts/experiments/docling_subprocess_bench.py` | 0 | Subprocess experiment | +| `scripts/experiments/docling_speed_report.py` | 0 | Results report | +| `scripts/docling_subprocess_worker.py` | 1 | Subprocess worker (skipped) | +| `python/.../hybrid_server.py` | 1 | FastAPI server (opendataloader-pdf-hybrid) | +| `java/.../hybrid/DoclingSubprocessClient.java` | 2 | Java client | +| `java/.../hybrid/DoclingFastServerClient.java` | 2 | Java client | +| `tests/.../pdf_parser_opendataloader_hybrid_subprocess.py` | 3 | Benchmark parser | +| `tests/.../pdf_parser_opendataloader_hybrid_fast.py` | 3 | Benchmark parser | + +### Modified Files +| File | Phase | Changes | +|------|-------|---------| +| `java/.../hybrid/HybridClientFactory.java` | 2 | Register new backends | +| `tests/benchmark/src/engine_registry.py` | 3 | Register engines | +| `tests/benchmark/run.py` | 3 | CLI options | + +--- + +## 6. Risks and Mitigations + +| Risk | Probability | Mitigation | +|------|-------------|------------| +| FastAPI speed below threshold | Medium | Discard plan, explore other approaches | +| subprocess overhead | Medium | Consider process pooling | +| docling SDK version compatibility | Low | Pin version, test | +| Memory exhaustion | Low | Adjust batch size | + +--- + +## 7. Checklist + +### Phase 0 Completion Criteria +- [ ] Baseline speed measurement complete +- [ ] FastAPI experiment: < 0.8 sec/doc +- [ ] subprocess experiment: < 1.0 sec/doc +- [ ] Experiment results documented + +### Overall Completion Criteria +- [ ] All Tasks complete +- [ ] Benchmark runs successfully with all 3 approaches +- [ ] Speed improvement confirmed (vs baseline) +- [ ] Results documented diff --git a/docs/hybrid/experiments/chunking_strategy/conclusion.json b/docs/hybrid/experiments/chunking_strategy/conclusion.json new file mode 100644 index 0000000..291dcda --- /dev/null +++ b/docs/hybrid/experiments/chunking_strategy/conclusion.json @@ -0,0 +1,32 @@ +{ + "conclusion": "Optimized ranges (consecutive page merging) is always the best strategy", + "recommendation": "Merge consecutive target pages into ranges before calling convert()", + "results": { + "25% pages": { + "best_method": "optimized_ranges", + "best_time": 4.223, + "chunks": 2 + }, + "50% pages": { + "best_method": "optimized_ranges", + "best_time": 6.052, + "chunks": 3 + }, + "75% pages": { + "best_method": "optimized_ranges", + "best_time": 9.347, + "chunks": 5 + }, + "100% pages": { + "best_method": "optimized_ranges", + "best_time": 10.277, + "chunks": 1 + } + }, + "key_findings": [ + "Fixed chunk sizes always have overhead due to processing unnecessary pages", + "Single page chunks (chunk_1) have 7-33% overhead from extra API calls", + "Larger fixed chunks (chunk_2, 3, 5) have 17-88% overhead from processing unneeded pages", + "Optimized ranges minimize both API calls and unnecessary page processing" + ] +} diff --git a/docs/hybrid/experiments/chunking_strategy/docling_benchmark_report.json b/docs/hybrid/experiments/chunking_strategy/docling_benchmark_report.json new file mode 100644 index 0000000..6fbf172 --- /dev/null +++ b/docs/hybrid/experiments/chunking_strategy/docling_benchmark_report.json @@ -0,0 +1,816 @@ +{ + "metadata": { + "pdf_file": "1901.03003.pdf", + "total_pages": 15, + "warmup_runs": 1, + "measure_runs": 3, + "chunk_sizes": [ + 1, + 2, + 3, + 5 + ], + "random_seed": 42, + "timestamp": "2026-01-02T16:04:13.655948" + }, + "scenarios": [ + { + "scenario": "25% pages", + "total_pages": 15, + "target_pages": [ + 1, + 2, + 11 + ], + "target_page_count": 3, + "percentage": 20.0, + "results": [ + { + "method": "optimized_ranges", + "ranges": [ + [ + 1, + 2 + ], + [ + 11, + 11 + ] + ], + "num_chunks": 2, + "avg_time": 4.223, + "std_time": 0.042, + "times": [ + 4.203, + 4.282, + 4.184 + ], + "overhead_pct": 0.0 + }, + { + "method": "chunk_1", + "chunk_size": 1, + "chunks": [ + [ + 1, + 1 + ], + [ + 2, + 2 + ], + [ + 11, + 11 + ] + ], + "num_chunks": 3, + "avg_time": 4.517, + "std_time": 0.082, + "times": [ + 4.444, + 4.475, + 4.631 + ], + "overhead_pct": 7.0 + }, + { + "method": "chunk_2", + "chunk_size": 2, + "chunks": [ + [ + 1, + 2 + ], + [ + 11, + 12 + ] + ], + "num_chunks": 2, + "avg_time": 5.257, + "std_time": 0.177, + "times": [ + 5.502, + 5.088, + 5.182 + ], + "overhead_pct": 24.5 + }, + { + "method": "chunk_3", + "chunk_size": 3, + "chunks": [ + [ + 1, + 3 + ], + [ + 10, + 12 + ] + ], + "num_chunks": 2, + "avg_time": 6.502, + "std_time": 0.137, + "times": [ + 6.309, + 6.612, + 6.584 + ], + "overhead_pct": 54.0 + }, + { + "method": "chunk_5", + "chunk_size": 5, + "chunks": [ + [ + 1, + 5 + ], + [ + 11, + 15 + ] + ], + "num_chunks": 2, + "avg_time": 7.122, + "std_time": 0.025, + "times": [ + 7.13, + 7.148, + 7.089 + ], + "overhead_pct": 68.7 + } + ], + "best_method": "Optimized ranges", + "best_time": 4.223 + }, + { + "scenario": "50% pages", + "total_pages": 15, + "target_pages": [ + 2, + 3, + 4, + 5, + 9, + 12, + 13 + ], + "target_page_count": 7, + "percentage": 46.7, + "results": [ + { + "method": "optimized_ranges", + "ranges": [ + [ + 2, + 5 + ], + [ + 9, + 9 + ], + [ + 12, + 13 + ] + ], + "num_chunks": 3, + "avg_time": 6.052, + "std_time": 0.128, + "times": [ + 5.899, + 6.212, + 6.045 + ], + "overhead_pct": 0.0 + }, + { + "method": "chunk_1", + "chunk_size": 1, + "chunks": [ + [ + 2, + 2 + ], + [ + 3, + 3 + ], + [ + 4, + 4 + ], + [ + 5, + 5 + ], + [ + 9, + 9 + ], + [ + 12, + 12 + ], + [ + 13, + 13 + ] + ], + "num_chunks": 7, + "avg_time": 6.548, + "std_time": 0.128, + "times": [ + 6.714, + 6.528, + 6.403 + ], + "overhead_pct": 8.2 + }, + { + "method": "chunk_2", + "chunk_size": 2, + "chunks": [ + [ + 1, + 2 + ], + [ + 3, + 4 + ], + [ + 5, + 6 + ], + [ + 9, + 10 + ], + [ + 11, + 12 + ], + [ + 13, + 14 + ] + ], + "num_chunks": 6, + "avg_time": 10.657, + "std_time": 0.062, + "times": [ + 10.731, + 10.659, + 10.58 + ], + "overhead_pct": 76.1 + }, + { + "method": "chunk_3", + "chunk_size": 3, + "chunks": [ + [ + 1, + 3 + ], + [ + 4, + 6 + ], + [ + 7, + 9 + ], + [ + 10, + 12 + ], + [ + 13, + 15 + ] + ], + "num_chunks": 5, + "avg_time": 11.412, + "std_time": 0.071, + "times": [ + 11.442, + 11.479, + 11.313 + ], + "overhead_pct": 88.6 + }, + { + "method": "chunk_5", + "chunk_size": 5, + "chunks": [ + [ + 1, + 5 + ], + [ + 6, + 10 + ], + [ + 11, + 15 + ] + ], + "num_chunks": 3, + "avg_time": 10.899, + "std_time": 0.016, + "times": [ + 10.922, + 10.889, + 10.886 + ], + "overhead_pct": 80.1 + } + ], + "best_method": "Optimized ranges", + "best_time": 6.052 + }, + { + "scenario": "75% pages", + "total_pages": 15, + "target_pages": [ + 1, + 2, + 4, + 5, + 7, + 9, + 10, + 11, + 12, + 13, + 15 + ], + "target_page_count": 11, + "percentage": 73.3, + "results": [ + { + "method": "optimized_ranges", + "ranges": [ + [ + 1, + 2 + ], + [ + 4, + 5 + ], + [ + 7, + 7 + ], + [ + 9, + 13 + ], + [ + 15, + 15 + ] + ], + "num_chunks": 5, + "avg_time": 9.347, + "std_time": 0.112, + "times": [ + 9.19, + 9.412, + 9.44 + ], + "overhead_pct": 0.0 + }, + { + "method": "chunk_1", + "chunk_size": 1, + "chunks": [ + [ + 1, + 1 + ], + [ + 2, + 2 + ], + [ + 4, + 4 + ], + [ + 5, + 5 + ], + [ + 7, + 7 + ], + [ + 9, + 9 + ], + [ + 10, + 10 + ], + [ + 11, + 11 + ], + [ + 12, + 12 + ], + [ + 13, + 13 + ], + [ + 15, + 15 + ] + ], + "num_chunks": 11, + "avg_time": 11.15, + "std_time": 0.082, + "times": [ + 11.043, + 11.242, + 11.165 + ], + "overhead_pct": 19.3 + }, + { + "method": "chunk_2", + "chunk_size": 2, + "chunks": [ + [ + 1, + 2 + ], + [ + 3, + 4 + ], + [ + 5, + 6 + ], + [ + 7, + 8 + ], + [ + 9, + 10 + ], + [ + 11, + 12 + ], + [ + 13, + 14 + ], + [ + 15, + 15 + ] + ], + "num_chunks": 8, + "avg_time": 12.039, + "std_time": 0.112, + "times": [ + 12.141, + 12.092, + 11.883 + ], + "overhead_pct": 28.8 + }, + { + "method": "chunk_3", + "chunk_size": 3, + "chunks": [ + [ + 1, + 3 + ], + [ + 4, + 6 + ], + [ + 7, + 9 + ], + [ + 10, + 12 + ], + [ + 13, + 15 + ] + ], + "num_chunks": 5, + "avg_time": 12.503, + "std_time": 0.374, + "times": [ + 12.279, + 13.029, + 12.2 + ], + "overhead_pct": 33.8 + }, + { + "method": "chunk_5", + "chunk_size": 5, + "chunks": [ + [ + 1, + 5 + ], + [ + 6, + 10 + ], + [ + 11, + 15 + ] + ], + "num_chunks": 3, + "avg_time": 11.288, + "std_time": 0.39, + "times": [ + 11.06, + 11.838, + 10.967 + ], + "overhead_pct": 20.8 + } + ], + "best_method": "Optimized ranges", + "best_time": 9.347 + }, + { + "scenario": "100% pages", + "total_pages": 15, + "target_pages": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "target_page_count": 15, + "percentage": 100.0, + "results": [ + { + "method": "optimized_ranges", + "ranges": [ + [ + 1, + 15 + ] + ], + "num_chunks": 1, + "avg_time": 10.277, + "std_time": 0.263, + "times": [ + 10.074, + 10.648, + 10.11 + ], + "overhead_pct": 0.0 + }, + { + "method": "chunk_1", + "chunk_size": 1, + "chunks": [ + [ + 1, + 1 + ], + [ + 2, + 2 + ], + [ + 3, + 3 + ], + [ + 4, + 4 + ], + [ + 5, + 5 + ], + [ + 6, + 6 + ], + [ + 7, + 7 + ], + [ + 8, + 8 + ], + [ + 9, + 9 + ], + [ + 10, + 10 + ], + [ + 11, + 11 + ], + [ + 12, + 12 + ], + [ + 13, + 13 + ], + [ + 14, + 14 + ], + [ + 15, + 15 + ] + ], + "num_chunks": 15, + "avg_time": 13.625, + "std_time": 0.154, + "times": [ + 13.509, + 13.524, + 13.843 + ], + "overhead_pct": 32.6 + }, + { + "method": "chunk_2", + "chunk_size": 2, + "chunks": [ + [ + 1, + 2 + ], + [ + 3, + 4 + ], + [ + 5, + 6 + ], + [ + 7, + 8 + ], + [ + 9, + 10 + ], + [ + 11, + 12 + ], + [ + 13, + 14 + ], + [ + 15, + 15 + ] + ], + "num_chunks": 8, + "avg_time": 12.48, + "std_time": 0.039, + "times": [ + 12.531, + 12.437, + 12.472 + ], + "overhead_pct": 21.4 + }, + { + "method": "chunk_3", + "chunk_size": 3, + "chunks": [ + [ + 1, + 3 + ], + [ + 4, + 6 + ], + [ + 7, + 9 + ], + [ + 10, + 12 + ], + [ + 13, + 15 + ] + ], + "num_chunks": 5, + "avg_time": 12.104, + "std_time": 0.214, + "times": [ + 12.301, + 12.204, + 11.806 + ], + "overhead_pct": 17.8 + }, + { + "method": "chunk_5", + "chunk_size": 5, + "chunks": [ + [ + 1, + 5 + ], + [ + 6, + 10 + ], + [ + 11, + 15 + ] + ], + "num_chunks": 3, + "avg_time": 12.277, + "std_time": 0.334, + "times": [ + 12.108, + 12.742, + 11.98 + ], + "overhead_pct": 19.5 + } + ], + "best_method": "Optimized ranges", + "best_time": 10.277 + } + ], + "summary": { + "25% pages": { + "best_method": "optimized_ranges", + "best_time": 4.223, + "best_chunks": 2 + }, + "50% pages": { + "best_method": "optimized_ranges", + "best_time": 6.052, + "best_chunks": 3 + }, + "75% pages": { + "best_method": "optimized_ranges", + "best_time": 9.347, + "best_chunks": 5 + }, + "100% pages": { + "best_method": "optimized_ranges", + "best_time": 10.277, + "best_chunks": 1 + } + } +} \ No newline at end of file diff --git a/docs/hybrid/experiments/chunking_strategy/docling_page_range_benchmark.py b/docs/hybrid/experiments/chunking_strategy/docling_page_range_benchmark.py new file mode 100644 index 0000000..f19bc81 --- /dev/null +++ b/docs/hybrid/experiments/chunking_strategy/docling_page_range_benchmark.py @@ -0,0 +1,291 @@ +#!/usr/bin/env python3 +""" +Docling Page Range Benchmark + +페이지 범위별 변환 성능 비교: +- 25%, 50%, 75%, 100% 페이지 시나리오 +- 각 시나리오별 최적 청크 크기 탐색 + +워밍업 후 여러 번 실행하여 평균 측정 +결과는 JSON으로 저장 +""" + +import json +import time +import random +from pathlib import Path +from dataclasses import dataclass, asdict +from datetime import datetime + +from docling.document_converter import DocumentConverter, PdfFormatOption +from docling.datamodel.base_models import InputFormat +from docling.datamodel.pipeline_options import PdfPipelineOptions + + +WARMUP_RUNS = 1 +MEASURE_RUNS = 3 +RANDOM_SEED = 42 + + +@dataclass +class BenchmarkResult: + name: str + avg_time: float + std_time: float + times: list[float] + chunk_size: int + num_chunks: int + + +def get_project_root() -> Path: + """프로젝트 루트 디렉토리 반환""" + return Path(__file__).parent.parent.parent + + +def create_converter() -> DocumentConverter: + """DocumentConverter 인스턴스 생성""" + pipeline_options = PdfPipelineOptions() + return DocumentConverter( + format_options={ + InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options) + } + ) + + +def convert_with_page_range( + converter: DocumentConverter, pdf_path: Path, start: int, end: int +) -> float: + """지정된 페이지 범위로 변환하고 소요 시간 반환""" + start_time = time.perf_counter() + converter.convert(pdf_path, page_range=(start, end)) + return time.perf_counter() - start_time + + +def pages_to_ranges(pages: list[int]) -> list[tuple[int, int]]: + """페이지 리스트를 연속 범위로 변환""" + if not pages: + return [] + + pages = sorted(pages) + ranges = [] + start = pages[0] + end = pages[0] + + for p in pages[1:]: + if p == end + 1: + end = p + else: + ranges.append((start, end)) + start = p + end = p + ranges.append((start, end)) + return ranges + + +def run_benchmark_for_ranges( + pdf_path: Path, + ranges: list[tuple[int, int]], + name: str, +) -> BenchmarkResult: + """주어진 범위들에 대해 벤치마크 실행""" + + def run_once(): + converter = create_converter() + total_time = 0.0 + for start, end in ranges: + total_time += convert_with_page_range(converter, pdf_path, start, end) + return total_time + + # 워밍업 + for _ in range(WARMUP_RUNS): + run_once() + + # 측정 + times = [] + for _ in range(MEASURE_RUNS): + times.append(run_once()) + + avg_time = sum(times) / len(times) + std_time = (sum((t - avg_time) ** 2 for t in times) / len(times)) ** 0.5 + + return BenchmarkResult( + name=name, + avg_time=avg_time, + std_time=std_time, + times=times, + chunk_size=0, + num_chunks=len(ranges), + ) + + +def get_chunks_for_pages( + target_pages: list[int], chunk_size: int, total_pages: int +) -> list[tuple[int, int]]: + """타겟 페이지들을 청크 크기로 그룹화""" + chunks = [] + for page in target_pages: + chunk_start = ((page - 1) // chunk_size) * chunk_size + 1 + chunk_end = min(chunk_start + chunk_size - 1, total_pages) + if (chunk_start, chunk_end) not in chunks: + chunks.append((chunk_start, chunk_end)) + return chunks + + +def run_scenario_benchmark( + pdf_path: Path, + total_pages: int, + target_pages: list[int], + chunk_sizes: list[int], + scenario_name: str, +) -> dict: + """단일 시나리오 벤치마크 실행""" + print(f"\n{'='*60}") + print(f"Scenario: {scenario_name}") + print(f"{'='*60}") + print(f"Target pages ({len(target_pages)}): {target_pages}") + print() + + results = [] + scenario_data = { + "scenario": scenario_name, + "total_pages": total_pages, + "target_pages": target_pages, + "target_page_count": len(target_pages), + "percentage": round(len(target_pages) / total_pages * 100, 1), + "results": [], + } + + # 1. 연속 범위 최적화 + optimized_ranges = pages_to_ranges(target_pages) + print(f"[1] Optimized ranges: {optimized_ranges} ({len(optimized_ranges)} ranges)") + + opt_result = run_benchmark_for_ranges(pdf_path, optimized_ranges, "Optimized ranges") + results.append(opt_result) + print(f" Avg: {opt_result.avg_time:.2f}s (±{opt_result.std_time:.2f}s)") + + scenario_data["results"].append({ + "method": "optimized_ranges", + "ranges": optimized_ranges, + "num_chunks": len(optimized_ranges), + "avg_time": round(opt_result.avg_time, 3), + "std_time": round(opt_result.std_time, 3), + "times": [round(t, 3) for t in opt_result.times], + "overhead_pct": 0.0, + }) + + # 2. 각 청크 크기별 테스트 + for chunk_size in chunk_sizes: + chunks = get_chunks_for_pages(target_pages, chunk_size, total_pages) + print(f"[{len(results) + 1}] {chunk_size} page(s)/chunk ({len(chunks)} chunks)") + + result = run_benchmark_for_ranges(pdf_path, chunks, f"{chunk_size} page(s)/chunk") + result.chunk_size = chunk_size + results.append(result) + + overhead_pct = ((result.avg_time - opt_result.avg_time) / opt_result.avg_time) * 100 + print(f" Avg: {result.avg_time:.2f}s (±{result.std_time:.2f}s) [{overhead_pct:+.1f}%]") + + scenario_data["results"].append({ + "method": f"chunk_{chunk_size}", + "chunk_size": chunk_size, + "chunks": chunks, + "num_chunks": len(chunks), + "avg_time": round(result.avg_time, 3), + "std_time": round(result.std_time, 3), + "times": [round(t, 3) for t in result.times], + "overhead_pct": round(overhead_pct, 1), + }) + + # Best 찾기 + best_result = min(results, key=lambda r: r.avg_time) + scenario_data["best_method"] = best_result.name + scenario_data["best_time"] = round(best_result.avg_time, 3) + + print() + print(f" >> Best: {best_result.name} ({best_result.avg_time:.2f}s)") + + return scenario_data + + +def main(): + project_root = get_project_root() + pdf_path = project_root / "samples" / "pdf" / "1901.03003.pdf" + + if not pdf_path.exists(): + print(f"Error: PDF not found at {pdf_path}") + return 1 + + total_pages = 15 + chunk_sizes = [1, 2, 3, 5] + percentages = [25, 50, 75, 100] + + print("=" * 60) + print("Docling Page Range Benchmark - Multi Scenario") + print("=" * 60) + print(f"PDF: {pdf_path.name} ({total_pages} pages)") + print(f"Warmup: {WARMUP_RUNS} run(s), Measure: {MEASURE_RUNS} run(s)") + print(f"Chunk sizes: {chunk_sizes}") + print(f"Scenarios: {percentages}%") + + random.seed(RANDOM_SEED) + + report = { + "metadata": { + "pdf_file": pdf_path.name, + "total_pages": total_pages, + "warmup_runs": WARMUP_RUNS, + "measure_runs": MEASURE_RUNS, + "chunk_sizes": chunk_sizes, + "random_seed": RANDOM_SEED, + "timestamp": datetime.now().isoformat(), + }, + "scenarios": [], + "summary": {}, + } + + for pct in percentages: + num_pages = max(1, total_pages * pct // 100) + + if pct == 100: + target_pages = list(range(1, total_pages + 1)) + else: + target_pages = sorted(random.sample(range(1, total_pages + 1), num_pages)) + + scenario_data = run_scenario_benchmark( + pdf_path, + total_pages, + target_pages, + chunk_sizes, + f"{pct}% pages", + ) + report["scenarios"].append(scenario_data) + + # Summary 생성 + print("\n" + "=" * 60) + print("SUMMARY") + print("=" * 60) + print(f"{'Scenario':<15} {'Best Method':<20} {'Time':>8} {'Chunks':>8}") + print("-" * 60) + + for scenario in report["scenarios"]: + best = min(scenario["results"], key=lambda r: r["avg_time"]) + print(f"{scenario['scenario']:<15} {best['method']:<20} {best['avg_time']:>7.2f}s {best['num_chunks']:>7}") + report["summary"][scenario["scenario"]] = { + "best_method": best["method"], + "best_time": best["avg_time"], + "best_chunks": best["num_chunks"], + } + + # JSON 저장 + output_path = project_root / "tests" / "docling_chunking_strategy" / "docling_benchmark_report.json" + with open(output_path, "w", encoding="utf-8") as f: + json.dump(report, f, indent=2, ensure_ascii=False) + + print() + print(f"Report saved to: {output_path}") + + return 0 + + +if __name__ == "__main__": + exit(main()) diff --git a/docs/hybrid/experiments/speed/baseline_results.json b/docs/hybrid/experiments/speed/baseline_results.json new file mode 100644 index 0000000..a189364 --- /dev/null +++ b/docs/hybrid/experiments/speed/baseline_results.json @@ -0,0 +1,1221 @@ +{ + "approach": "baseline", + "description": "docling-serve HTTP API", + "timestamp": "2026-01-03 14:23:41", + "config": { + "do_ocr": true, + "do_table_structure": true, + "server_url": "http://localhost:5001/v1/convert/file" + }, + "statistics": { + "total_documents": 200, + "successful": 200, + "failed": 0, + "total_elapsed": 456.63, + "elapsed_per_doc": 2.2825, + "min_elapsed": 2.0045, + "max_elapsed": 8.0182 + }, + "details": [ + { + "filename": "01030000000001.pdf", + "status": "success", + "elapsed": 2.015875082986895, + "status_code": 200 + }, + { + "filename": "01030000000002.pdf", + "status": "success", + "elapsed": 6.017078874981962, + "status_code": 200 + }, + { + "filename": "01030000000003.pdf", + "status": "success", + "elapsed": 2.0132839589496143, + "status_code": 200 + }, + { + "filename": "01030000000004.pdf", + "status": "success", + "elapsed": 2.008036583021749, + "status_code": 200 + }, + { + "filename": "01030000000005.pdf", + "status": "success", + "elapsed": 8.018182250030804, + "status_code": 200 + }, + { + "filename": "01030000000006.pdf", + "status": "success", + "elapsed": 2.0475742079433985, + "status_code": 200 + }, + { + "filename": "01030000000007.pdf", + "status": "success", + "elapsed": 2.015844083041884, + "status_code": 200 + }, + { + "filename": "01030000000008.pdf", + "status": "success", + "elapsed": 2.006928707996849, + "status_code": 200 + }, + { + "filename": "01030000000009.pdf", + "status": "success", + "elapsed": 2.014241833006963, + "status_code": 200 + }, + { + "filename": "01030000000010.pdf", + "status": "success", + "elapsed": 2.038922875013668, + "status_code": 200 + }, + { + "filename": "01030000000011.pdf", + "status": "success", + "elapsed": 2.0237517500063404, + "status_code": 200 + }, + { + "filename": "01030000000012.pdf", + "status": "success", + "elapsed": 2.0229256660095416, + "status_code": 200 + }, + { + "filename": "01030000000013.pdf", + "status": "success", + "elapsed": 6.029008666984737, + "status_code": 200 + }, + { + "filename": "01030000000014.pdf", + "status": "success", + "elapsed": 2.0246772919781506, + "status_code": 200 + }, + { + "filename": "01030000000015.pdf", + "status": "success", + "elapsed": 4.015110083040781, + "status_code": 200 + }, + { + "filename": "01030000000016.pdf", + "status": "success", + "elapsed": 4.009777957980987, + "status_code": 200 + }, + { + "filename": "01030000000017.pdf", + "status": "success", + "elapsed": 2.015868208021857, + "status_code": 200 + }, + { + "filename": "01030000000018.pdf", + "status": "success", + "elapsed": 2.009977333014831, + "status_code": 200 + }, + { + "filename": "01030000000019.pdf", + "status": "success", + "elapsed": 2.0059859169996344, + "status_code": 200 + }, + { + "filename": "01030000000020.pdf", + "status": "success", + "elapsed": 2.00470204197336, + "status_code": 200 + }, + { + "filename": "01030000000021.pdf", + "status": "success", + "elapsed": 2.0094348749844357, + "status_code": 200 + }, + { + "filename": "01030000000022.pdf", + "status": "success", + "elapsed": 2.007077375019435, + "status_code": 200 + }, + { + "filename": "01030000000023.pdf", + "status": "success", + "elapsed": 2.008575916988775, + "status_code": 200 + }, + { + "filename": "01030000000024.pdf", + "status": "success", + "elapsed": 2.0070661670179106, + "status_code": 200 + }, + { + "filename": "01030000000025.pdf", + "status": "success", + "elapsed": 2.0072902090032585, + "status_code": 200 + }, + { + "filename": "01030000000026.pdf", + "status": "success", + "elapsed": 2.008566791017074, + "status_code": 200 + }, + { + "filename": "01030000000027.pdf", + "status": "success", + "elapsed": 2.0105779159930535, + "status_code": 200 + }, + { + "filename": "01030000000028.pdf", + "status": "success", + "elapsed": 2.0083992080180906, + "status_code": 200 + }, + { + "filename": "01030000000029.pdf", + "status": "success", + "elapsed": 2.006954458018299, + "status_code": 200 + }, + { + "filename": "01030000000030.pdf", + "status": "success", + "elapsed": 2.006012041994836, + "status_code": 200 + }, + { + "filename": "01030000000031.pdf", + "status": "success", + "elapsed": 2.0079010410117917, + "status_code": 200 + }, + { + "filename": "01030000000032.pdf", + "status": "success", + "elapsed": 2.008327499963343, + "status_code": 200 + }, + { + "filename": "01030000000033.pdf", + "status": "success", + "elapsed": 2.0113934580003843, + "status_code": 200 + }, + { + "filename": "01030000000034.pdf", + "status": "success", + "elapsed": 2.0120389169896953, + "status_code": 200 + }, + { + "filename": "01030000000035.pdf", + "status": "success", + "elapsed": 2.005979541980196, + "status_code": 200 + }, + { + "filename": "01030000000036.pdf", + "status": "success", + "elapsed": 2.0124754579737782, + "status_code": 200 + }, + { + "filename": "01030000000037.pdf", + "status": "success", + "elapsed": 2.00998516601976, + "status_code": 200 + }, + { + "filename": "01030000000038.pdf", + "status": "success", + "elapsed": 2.0089076250442304, + "status_code": 200 + }, + { + "filename": "01030000000039.pdf", + "status": "success", + "elapsed": 2.009448583004996, + "status_code": 200 + }, + { + "filename": "01030000000040.pdf", + "status": "success", + "elapsed": 2.010277082968969, + "status_code": 200 + }, + { + "filename": "01030000000041.pdf", + "status": "success", + "elapsed": 2.009156082989648, + "status_code": 200 + }, + { + "filename": "01030000000042.pdf", + "status": "success", + "elapsed": 2.0098838749690913, + "status_code": 200 + }, + { + "filename": "01030000000043.pdf", + "status": "success", + "elapsed": 2.0099699580459855, + "status_code": 200 + }, + { + "filename": "01030000000044.pdf", + "status": "success", + "elapsed": 2.0085992079693824, + "status_code": 200 + }, + { + "filename": "01030000000045.pdf", + "status": "success", + "elapsed": 2.008803666976746, + "status_code": 200 + }, + { + "filename": "01030000000046.pdf", + "status": "success", + "elapsed": 2.0089462909963913, + "status_code": 200 + }, + { + "filename": "01030000000047.pdf", + "status": "success", + "elapsed": 2.008842375013046, + "status_code": 200 + }, + { + "filename": "01030000000048.pdf", + "status": "success", + "elapsed": 2.0095574999577366, + "status_code": 200 + }, + { + "filename": "01030000000049.pdf", + "status": "success", + "elapsed": 2.0105101669905707, + "status_code": 200 + }, + { + "filename": "01030000000050.pdf", + "status": "success", + "elapsed": 2.0088338329805993, + "status_code": 200 + }, + { + "filename": "01030000000051.pdf", + "status": "success", + "elapsed": 2.0089837919804268, + "status_code": 200 + }, + { + "filename": "01030000000052.pdf", + "status": "success", + "elapsed": 2.0097504580044188, + "status_code": 200 + }, + { + "filename": "01030000000053.pdf", + "status": "success", + "elapsed": 2.0071513750008307, + "status_code": 200 + }, + { + "filename": "01030000000054.pdf", + "status": "success", + "elapsed": 2.0097300829947926, + "status_code": 200 + }, + { + "filename": "01030000000055.pdf", + "status": "success", + "elapsed": 2.0129313750076108, + "status_code": 200 + }, + { + "filename": "01030000000056.pdf", + "status": "success", + "elapsed": 2.0068434590357356, + "status_code": 200 + }, + { + "filename": "01030000000057.pdf", + "status": "success", + "elapsed": 2.0059980420046486, + "status_code": 200 + }, + { + "filename": "01030000000058.pdf", + "status": "success", + "elapsed": 2.006713708047755, + "status_code": 200 + }, + { + "filename": "01030000000059.pdf", + "status": "success", + "elapsed": 2.0111257910029963, + "status_code": 200 + }, + { + "filename": "01030000000060.pdf", + "status": "success", + "elapsed": 2.0099264580057934, + "status_code": 200 + }, + { + "filename": "01030000000061.pdf", + "status": "success", + "elapsed": 2.0138660420197994, + "status_code": 200 + }, + { + "filename": "01030000000062.pdf", + "status": "success", + "elapsed": 2.016690374992322, + "status_code": 200 + }, + { + "filename": "01030000000063.pdf", + "status": "success", + "elapsed": 2.010919041989837, + "status_code": 200 + }, + { + "filename": "01030000000064.pdf", + "status": "success", + "elapsed": 2.0115395419998094, + "status_code": 200 + }, + { + "filename": "01030000000065.pdf", + "status": "success", + "elapsed": 4.022392999962904, + "status_code": 200 + }, + { + "filename": "01030000000066.pdf", + "status": "success", + "elapsed": 2.0132058750023134, + "status_code": 200 + }, + { + "filename": "01030000000067.pdf", + "status": "success", + "elapsed": 2.0157942500081845, + "status_code": 200 + }, + { + "filename": "01030000000068.pdf", + "status": "success", + "elapsed": 2.010222040989902, + "status_code": 200 + }, + { + "filename": "01030000000069.pdf", + "status": "success", + "elapsed": 2.0097584579489194, + "status_code": 200 + }, + { + "filename": "01030000000070.pdf", + "status": "success", + "elapsed": 2.0112934579956345, + "status_code": 200 + }, + { + "filename": "01030000000071.pdf", + "status": "success", + "elapsed": 2.0105387499788776, + "status_code": 200 + }, + { + "filename": "01030000000072.pdf", + "status": "success", + "elapsed": 2.018585833022371, + "status_code": 200 + }, + { + "filename": "01030000000073.pdf", + "status": "success", + "elapsed": 2.033748999994714, + "status_code": 200 + }, + { + "filename": "01030000000074.pdf", + "status": "success", + "elapsed": 2.010420083999634, + "status_code": 200 + }, + { + "filename": "01030000000075.pdf", + "status": "success", + "elapsed": 2.0172726669698022, + "status_code": 200 + }, + { + "filename": "01030000000076.pdf", + "status": "success", + "elapsed": 2.0094912920030765, + "status_code": 200 + }, + { + "filename": "01030000000077.pdf", + "status": "success", + "elapsed": 2.0114878750173375, + "status_code": 200 + }, + { + "filename": "01030000000078.pdf", + "status": "success", + "elapsed": 2.007630624982994, + "status_code": 200 + }, + { + "filename": "01030000000079.pdf", + "status": "success", + "elapsed": 2.0101106250076555, + "status_code": 200 + }, + { + "filename": "01030000000080.pdf", + "status": "success", + "elapsed": 2.0070227500400506, + "status_code": 200 + }, + { + "filename": "01030000000081.pdf", + "status": "success", + "elapsed": 2.008618124993518, + "status_code": 200 + }, + { + "filename": "01030000000082.pdf", + "status": "success", + "elapsed": 2.0095061670290306, + "status_code": 200 + }, + { + "filename": "01030000000083.pdf", + "status": "success", + "elapsed": 2.0096776670543477, + "status_code": 200 + }, + { + "filename": "01030000000084.pdf", + "status": "success", + "elapsed": 2.0084117500227876, + "status_code": 200 + }, + { + "filename": "01030000000085.pdf", + "status": "success", + "elapsed": 2.009717167005874, + "status_code": 200 + }, + { + "filename": "01030000000086.pdf", + "status": "success", + "elapsed": 2.008898333006073, + "status_code": 200 + }, + { + "filename": "01030000000087.pdf", + "status": "success", + "elapsed": 2.008002457965631, + "status_code": 200 + }, + { + "filename": "01030000000088.pdf", + "status": "success", + "elapsed": 2.0079817910445854, + "status_code": 200 + }, + { + "filename": "01030000000089.pdf", + "status": "success", + "elapsed": 2.008650916046463, + "status_code": 200 + }, + { + "filename": "01030000000090.pdf", + "status": "success", + "elapsed": 2.0093328329967335, + "status_code": 200 + }, + { + "filename": "01030000000091.pdf", + "status": "success", + "elapsed": 2.0105257499963045, + "status_code": 200 + }, + { + "filename": "01030000000092.pdf", + "status": "success", + "elapsed": 2.0129166250117123, + "status_code": 200 + }, + { + "filename": "01030000000093.pdf", + "status": "success", + "elapsed": 2.0129139170167036, + "status_code": 200 + }, + { + "filename": "01030000000094.pdf", + "status": "success", + "elapsed": 2.010353874997236, + "status_code": 200 + }, + { + "filename": "01030000000095.pdf", + "status": "success", + "elapsed": 2.0159686250262894, + "status_code": 200 + }, + { + "filename": "01030000000096.pdf", + "status": "success", + "elapsed": 2.012183208949864, + "status_code": 200 + }, + { + "filename": "01030000000097.pdf", + "status": "success", + "elapsed": 2.0136722500319593, + "status_code": 200 + }, + { + "filename": "01030000000098.pdf", + "status": "success", + "elapsed": 2.0163424579659477, + "status_code": 200 + }, + { + "filename": "01030000000099.pdf", + "status": "success", + "elapsed": 2.0101290000020526, + "status_code": 200 + }, + { + "filename": "01030000000100.pdf", + "status": "success", + "elapsed": 4.057772666972596, + "status_code": 200 + }, + { + "filename": "01030000000101.pdf", + "status": "success", + "elapsed": 2.01847925002221, + "status_code": 200 + }, + { + "filename": "01030000000102.pdf", + "status": "success", + "elapsed": 2.01219050004147, + "status_code": 200 + }, + { + "filename": "01030000000103.pdf", + "status": "success", + "elapsed": 2.009702167008072, + "status_code": 200 + }, + { + "filename": "01030000000104.pdf", + "status": "success", + "elapsed": 2.00873712496832, + "status_code": 200 + }, + { + "filename": "01030000000105.pdf", + "status": "success", + "elapsed": 2.0075063750264235, + "status_code": 200 + }, + { + "filename": "01030000000106.pdf", + "status": "success", + "elapsed": 4.028725624957588, + "status_code": 200 + }, + { + "filename": "01030000000107.pdf", + "status": "success", + "elapsed": 6.020763458975125, + "status_code": 200 + }, + { + "filename": "01030000000108.pdf", + "status": "success", + "elapsed": 2.0199995830189437, + "status_code": 200 + }, + { + "filename": "01030000000109.pdf", + "status": "success", + "elapsed": 2.010334291961044, + "status_code": 200 + }, + { + "filename": "01030000000110.pdf", + "status": "success", + "elapsed": 4.0103781670331955, + "status_code": 200 + }, + { + "filename": "01030000000111.pdf", + "status": "success", + "elapsed": 2.0133387920213863, + "status_code": 200 + }, + { + "filename": "01030000000112.pdf", + "status": "success", + "elapsed": 2.011265833978541, + "status_code": 200 + }, + { + "filename": "01030000000113.pdf", + "status": "success", + "elapsed": 2.0208064999897033, + "status_code": 200 + }, + { + "filename": "01030000000114.pdf", + "status": "success", + "elapsed": 2.0121795420418493, + "status_code": 200 + }, + { + "filename": "01030000000115.pdf", + "status": "success", + "elapsed": 2.009583958017174, + "status_code": 200 + }, + { + "filename": "01030000000116.pdf", + "status": "success", + "elapsed": 2.0129801250295714, + "status_code": 200 + }, + { + "filename": "01030000000117.pdf", + "status": "success", + "elapsed": 2.018898750015069, + "status_code": 200 + }, + { + "filename": "01030000000118.pdf", + "status": "success", + "elapsed": 2.0129885419737548, + "status_code": 200 + }, + { + "filename": "01030000000119.pdf", + "status": "success", + "elapsed": 2.007995374966413, + "status_code": 200 + }, + { + "filename": "01030000000120.pdf", + "status": "success", + "elapsed": 2.009933082968928, + "status_code": 200 + }, + { + "filename": "01030000000121.pdf", + "status": "success", + "elapsed": 2.008029666962102, + "status_code": 200 + }, + { + "filename": "01030000000122.pdf", + "status": "success", + "elapsed": 2.00864516699221, + "status_code": 200 + }, + { + "filename": "01030000000123.pdf", + "status": "success", + "elapsed": 2.009381292038597, + "status_code": 200 + }, + { + "filename": "01030000000124.pdf", + "status": "success", + "elapsed": 2.018248958978802, + "status_code": 200 + }, + { + "filename": "01030000000125.pdf", + "status": "success", + "elapsed": 2.0157194579951465, + "status_code": 200 + }, + { + "filename": "01030000000126.pdf", + "status": "success", + "elapsed": 2.008307167037856, + "status_code": 200 + }, + { + "filename": "01030000000127.pdf", + "status": "success", + "elapsed": 2.0087038750061765, + "status_code": 200 + }, + { + "filename": "01030000000128.pdf", + "status": "success", + "elapsed": 4.014806249993853, + "status_code": 200 + }, + { + "filename": "01030000000129.pdf", + "status": "success", + "elapsed": 2.011629707994871, + "status_code": 200 + }, + { + "filename": "01030000000130.pdf", + "status": "success", + "elapsed": 2.0111710419878364, + "status_code": 200 + }, + { + "filename": "01030000000131.pdf", + "status": "success", + "elapsed": 4.015092124987859, + "status_code": 200 + }, + { + "filename": "01030000000132.pdf", + "status": "success", + "elapsed": 2.01749987504445, + "status_code": 200 + }, + { + "filename": "01030000000133.pdf", + "status": "success", + "elapsed": 2.011376874987036, + "status_code": 200 + }, + { + "filename": "01030000000134.pdf", + "status": "success", + "elapsed": 2.015838250052184, + "status_code": 200 + }, + { + "filename": "01030000000135.pdf", + "status": "success", + "elapsed": 2.013709499966353, + "status_code": 200 + }, + { + "filename": "01030000000136.pdf", + "status": "success", + "elapsed": 4.012792333029211, + "status_code": 200 + }, + { + "filename": "01030000000137.pdf", + "status": "success", + "elapsed": 2.0148868339601904, + "status_code": 200 + }, + { + "filename": "01030000000138.pdf", + "status": "success", + "elapsed": 2.0129687499720603, + "status_code": 200 + }, + { + "filename": "01030000000139.pdf", + "status": "success", + "elapsed": 2.0240703750168905, + "status_code": 200 + }, + { + "filename": "01030000000140.pdf", + "status": "success", + "elapsed": 2.0105999159859493, + "status_code": 200 + }, + { + "filename": "01030000000141.pdf", + "status": "success", + "elapsed": 4.016767291992437, + "status_code": 200 + }, + { + "filename": "01030000000142.pdf", + "status": "success", + "elapsed": 2.0079866659943946, + "status_code": 200 + }, + { + "filename": "01030000000143.pdf", + "status": "success", + "elapsed": 2.0097947499598376, + "status_code": 200 + }, + { + "filename": "01030000000144.pdf", + "status": "success", + "elapsed": 2.010188333981205, + "status_code": 200 + }, + { + "filename": "01030000000145.pdf", + "status": "success", + "elapsed": 2.010523250035476, + "status_code": 200 + }, + { + "filename": "01030000000146.pdf", + "status": "success", + "elapsed": 2.012444249994587, + "status_code": 200 + }, + { + "filename": "01030000000147.pdf", + "status": "success", + "elapsed": 2.0094745840178803, + "status_code": 200 + }, + { + "filename": "01030000000148.pdf", + "status": "success", + "elapsed": 2.015358250006102, + "status_code": 200 + }, + { + "filename": "01030000000149.pdf", + "status": "success", + "elapsed": 2.0123680839897133, + "status_code": 200 + }, + { + "filename": "01030000000150.pdf", + "status": "success", + "elapsed": 2.010133165982552, + "status_code": 200 + }, + { + "filename": "01030000000151.pdf", + "status": "success", + "elapsed": 2.011142417031806, + "status_code": 200 + }, + { + "filename": "01030000000152.pdf", + "status": "success", + "elapsed": 2.011020500038285, + "status_code": 200 + }, + { + "filename": "01030000000153.pdf", + "status": "success", + "elapsed": 2.0078533330233768, + "status_code": 200 + }, + { + "filename": "01030000000154.pdf", + "status": "success", + "elapsed": 2.015513958001975, + "status_code": 200 + }, + { + "filename": "01030000000155.pdf", + "status": "success", + "elapsed": 2.014719749975484, + "status_code": 200 + }, + { + "filename": "01030000000156.pdf", + "status": "success", + "elapsed": 2.0091009169700556, + "status_code": 200 + }, + { + "filename": "01030000000157.pdf", + "status": "success", + "elapsed": 2.008832124993205, + "status_code": 200 + }, + { + "filename": "01030000000158.pdf", + "status": "success", + "elapsed": 2.009412584011443, + "status_code": 200 + }, + { + "filename": "01030000000159.pdf", + "status": "success", + "elapsed": 2.0096555419731885, + "status_code": 200 + }, + { + "filename": "01030000000160.pdf", + "status": "success", + "elapsed": 2.0097247500088997, + "status_code": 200 + }, + { + "filename": "01030000000161.pdf", + "status": "success", + "elapsed": 2.0090610000188462, + "status_code": 200 + }, + { + "filename": "01030000000162.pdf", + "status": "success", + "elapsed": 2.009336917020846, + "status_code": 200 + }, + { + "filename": "01030000000163.pdf", + "status": "success", + "elapsed": 4.034545583999716, + "status_code": 200 + }, + { + "filename": "01030000000164.pdf", + "status": "success", + "elapsed": 2.0732344170100987, + "status_code": 200 + }, + { + "filename": "01030000000165.pdf", + "status": "success", + "elapsed": 2.0093913750024512, + "status_code": 200 + }, + { + "filename": "01030000000166.pdf", + "status": "success", + "elapsed": 2.0097205829806626, + "status_code": 200 + }, + { + "filename": "01030000000167.pdf", + "status": "success", + "elapsed": 2.0092638750211336, + "status_code": 200 + }, + { + "filename": "01030000000168.pdf", + "status": "success", + "elapsed": 2.0096502079977654, + "status_code": 200 + }, + { + "filename": "01030000000169.pdf", + "status": "success", + "elapsed": 2.0088732909644023, + "status_code": 200 + }, + { + "filename": "01030000000170.pdf", + "status": "success", + "elapsed": 2.0099923749803565, + "status_code": 200 + }, + { + "filename": "01030000000171.pdf", + "status": "success", + "elapsed": 2.00841941597173, + "status_code": 200 + }, + { + "filename": "01030000000172.pdf", + "status": "success", + "elapsed": 4.010605583025608, + "status_code": 200 + }, + { + "filename": "01030000000173.pdf", + "status": "success", + "elapsed": 2.0113287499989383, + "status_code": 200 + }, + { + "filename": "01030000000174.pdf", + "status": "success", + "elapsed": 2.01701208302984, + "status_code": 200 + }, + { + "filename": "01030000000175.pdf", + "status": "success", + "elapsed": 2.0104076670249924, + "status_code": 200 + }, + { + "filename": "01030000000176.pdf", + "status": "success", + "elapsed": 2.0120657079969533, + "status_code": 200 + }, + { + "filename": "01030000000177.pdf", + "status": "success", + "elapsed": 2.010396583995316, + "status_code": 200 + }, + { + "filename": "01030000000178.pdf", + "status": "success", + "elapsed": 2.0082853750209324, + "status_code": 200 + }, + { + "filename": "01030000000179.pdf", + "status": "success", + "elapsed": 2.016005791956559, + "status_code": 200 + }, + { + "filename": "01030000000180.pdf", + "status": "success", + "elapsed": 2.0131606250070035, + "status_code": 200 + }, + { + "filename": "01030000000181.pdf", + "status": "success", + "elapsed": 2.0091749589773826, + "status_code": 200 + }, + { + "filename": "01030000000182.pdf", + "status": "success", + "elapsed": 2.006028084026184, + "status_code": 200 + }, + { + "filename": "01030000000183.pdf", + "status": "success", + "elapsed": 2.0098955419962294, + "status_code": 200 + }, + { + "filename": "01030000000184.pdf", + "status": "success", + "elapsed": 2.0079047920298763, + "status_code": 200 + }, + { + "filename": "01030000000185.pdf", + "status": "success", + "elapsed": 2.008848041994497, + "status_code": 200 + }, + { + "filename": "01030000000186.pdf", + "status": "success", + "elapsed": 2.008393583993893, + "status_code": 200 + }, + { + "filename": "01030000000187.pdf", + "status": "success", + "elapsed": 2.004508916987106, + "status_code": 200 + }, + { + "filename": "01030000000188.pdf", + "status": "success", + "elapsed": 2.0051945410086773, + "status_code": 200 + }, + { + "filename": "01030000000189.pdf", + "status": "success", + "elapsed": 2.0074494580039755, + "status_code": 200 + }, + { + "filename": "01030000000190.pdf", + "status": "success", + "elapsed": 2.0048497910029255, + "status_code": 200 + }, + { + "filename": "01030000000191.pdf", + "status": "success", + "elapsed": 2.006556707958225, + "status_code": 200 + }, + { + "filename": "01030000000192.pdf", + "status": "success", + "elapsed": 2.005169374984689, + "status_code": 200 + }, + { + "filename": "01030000000193.pdf", + "status": "success", + "elapsed": 2.0079570419620723, + "status_code": 200 + }, + { + "filename": "01030000000194.pdf", + "status": "success", + "elapsed": 2.0079098750138655, + "status_code": 200 + }, + { + "filename": "01030000000195.pdf", + "status": "success", + "elapsed": 2.010010375001002, + "status_code": 200 + }, + { + "filename": "01030000000196.pdf", + "status": "success", + "elapsed": 2.0046410840004683, + "status_code": 200 + }, + { + "filename": "01030000000197.pdf", + "status": "success", + "elapsed": 2.0045773329911754, + "status_code": 200 + }, + { + "filename": "01030000000198.pdf", + "status": "success", + "elapsed": 6.015574750024825, + "status_code": 200 + }, + { + "filename": "01030000000199.pdf", + "status": "success", + "elapsed": 6.026787874987349, + "status_code": 200 + }, + { + "filename": "01030000000200.pdf", + "status": "success", + "elapsed": 6.021415374998469, + "status_code": 200 + } + ] +} \ No newline at end of file diff --git a/docs/hybrid/experiments/speed/fastapi_results.json b/docs/hybrid/experiments/speed/fastapi_results.json new file mode 100644 index 0000000..c5addf5 --- /dev/null +++ b/docs/hybrid/experiments/speed/fastapi_results.json @@ -0,0 +1,1226 @@ +{ + "approach": "fastapi", + "description": "FastAPI server with docling SDK singleton", + "timestamp": "2026-01-03 14:27:18", + "config": { + "do_ocr": true, + "do_table_structure": true, + "server_port": 5002 + }, + "statistics": { + "total_documents": 200, + "successful": 200, + "failed": 0, + "total_elapsed": 137.13, + "elapsed_per_doc": 0.6855, + "server_time_per_doc": 0.6817, + "min_elapsed": 0.1912, + "max_elapsed": 4.242 + }, + "threshold": { + "target": 0.8, + "passed": true + }, + "details": [ + { + "filename": "01030000000001.pdf", + "status": "success", + "elapsed": 4.241993249976076, + "server_time": 4.227881416969467 + }, + { + "filename": "01030000000002.pdf", + "status": "success", + "elapsed": 0.23566016694530845, + "server_time": 0.23280070797773078 + }, + { + "filename": "01030000000003.pdf", + "status": "success", + "elapsed": 0.22420825000153854, + "server_time": 0.22058429196476936 + }, + { + "filename": "01030000000004.pdf", + "status": "success", + "elapsed": 0.23249245795886964, + "server_time": 0.22876758401980624 + }, + { + "filename": "01030000000005.pdf", + "status": "success", + "elapsed": 1.2118705419707112, + "server_time": 1.2071917499997653 + }, + { + "filename": "01030000000006.pdf", + "status": "success", + "elapsed": 0.6285073750186712, + "server_time": 0.6227812499855645 + }, + { + "filename": "01030000000007.pdf", + "status": "success", + "elapsed": 0.2389346249983646, + "server_time": 0.23626212502131239 + }, + { + "filename": "01030000000008.pdf", + "status": "success", + "elapsed": 0.3985443330020644, + "server_time": 0.39515100000426173 + }, + { + "filename": "01030000000009.pdf", + "status": "success", + "elapsed": 1.7510037909960374, + "server_time": 1.7469792500487529 + }, + { + "filename": "01030000000010.pdf", + "status": "success", + "elapsed": 1.2974770410219207, + "server_time": 1.2927536670467816 + }, + { + "filename": "01030000000011.pdf", + "status": "success", + "elapsed": 0.45968362502753735, + "server_time": 0.4560427500400692 + }, + { + "filename": "01030000000012.pdf", + "status": "success", + "elapsed": 0.7207962909596972, + "server_time": 0.7176154999760911 + }, + { + "filename": "01030000000013.pdf", + "status": "success", + "elapsed": 2.1797685000346974, + "server_time": 2.1760722910403274 + }, + { + "filename": "01030000000014.pdf", + "status": "success", + "elapsed": 0.6489314580103382, + "server_time": 0.6451131249777973 + }, + { + "filename": "01030000000015.pdf", + "status": "success", + "elapsed": 0.9263249999494292, + "server_time": 0.922744709008839 + }, + { + "filename": "01030000000016.pdf", + "status": "success", + "elapsed": 1.0506074170116335, + "server_time": 1.046110708033666 + }, + { + "filename": "01030000000017.pdf", + "status": "success", + "elapsed": 0.4874885830213316, + "server_time": 0.48433470900636166 + }, + { + "filename": "01030000000018.pdf", + "status": "success", + "elapsed": 1.1500459590461105, + "server_time": 1.1473956660483964 + }, + { + "filename": "01030000000019.pdf", + "status": "success", + "elapsed": 0.2308129160082899, + "server_time": 0.22639750002417713 + }, + { + "filename": "01030000000020.pdf", + "status": "success", + "elapsed": 0.21323525003390387, + "server_time": 0.2105082920170389 + }, + { + "filename": "01030000000021.pdf", + "status": "success", + "elapsed": 0.20920270797796547, + "server_time": 0.20658841700060293 + }, + { + "filename": "01030000000022.pdf", + "status": "success", + "elapsed": 0.2119444579584524, + "server_time": 0.20953537500463426 + }, + { + "filename": "01030000000023.pdf", + "status": "success", + "elapsed": 0.235977666976396, + "server_time": 0.2327706660144031 + }, + { + "filename": "01030000000024.pdf", + "status": "success", + "elapsed": 0.2377851249766536, + "server_time": 0.23435454099671915 + }, + { + "filename": "01030000000025.pdf", + "status": "success", + "elapsed": 0.2237196249770932, + "server_time": 0.2203012090176344 + }, + { + "filename": "01030000000026.pdf", + "status": "success", + "elapsed": 0.21026112500112504, + "server_time": 0.2070769999991171 + }, + { + "filename": "01030000000027.pdf", + "status": "success", + "elapsed": 0.9411582500324585, + "server_time": 0.9383027500007302 + }, + { + "filename": "01030000000028.pdf", + "status": "success", + "elapsed": 0.3246801670175046, + "server_time": 0.3208107079844922 + }, + { + "filename": "01030000000029.pdf", + "status": "success", + "elapsed": 0.3724506669677794, + "server_time": 0.36965475004399195 + }, + { + "filename": "01030000000030.pdf", + "status": "success", + "elapsed": 0.38395462499465793, + "server_time": 0.37976345903007314 + }, + { + "filename": "01030000000031.pdf", + "status": "success", + "elapsed": 0.5076975840493105, + "server_time": 0.5048673329874873 + }, + { + "filename": "01030000000032.pdf", + "status": "success", + "elapsed": 0.23879974998999387, + "server_time": 0.23493745899759233 + }, + { + "filename": "01030000000033.pdf", + "status": "success", + "elapsed": 0.6313839589711279, + "server_time": 0.6280267079710029 + }, + { + "filename": "01030000000034.pdf", + "status": "success", + "elapsed": 0.34056245803367347, + "server_time": 0.33657804201357067 + }, + { + "filename": "01030000000035.pdf", + "status": "success", + "elapsed": 0.24111783294938505, + "server_time": 0.2377793330233544 + }, + { + "filename": "01030000000036.pdf", + "status": "success", + "elapsed": 0.48011695803143084, + "server_time": 0.47627237503184006 + }, + { + "filename": "01030000000037.pdf", + "status": "success", + "elapsed": 0.2930380000034347, + "server_time": 0.29027362499618903 + }, + { + "filename": "01030000000038.pdf", + "status": "success", + "elapsed": 0.28517066698987037, + "server_time": 0.2813679579994641 + }, + { + "filename": "01030000000039.pdf", + "status": "success", + "elapsed": 0.2850311250076629, + "server_time": 0.2814176249667071 + }, + { + "filename": "01030000000040.pdf", + "status": "success", + "elapsed": 0.289940792019479, + "server_time": 0.2864480830030516 + }, + { + "filename": "01030000000041.pdf", + "status": "success", + "elapsed": 0.298040084016975, + "server_time": 0.29536312498385087 + }, + { + "filename": "01030000000042.pdf", + "status": "success", + "elapsed": 0.2992368749692105, + "server_time": 0.2964798330212943 + }, + { + "filename": "01030000000043.pdf", + "status": "success", + "elapsed": 0.3038468749728054, + "server_time": 0.3007674170075916 + }, + { + "filename": "01030000000044.pdf", + "status": "success", + "elapsed": 0.4782290000002831, + "server_time": 0.4752873340039514 + }, + { + "filename": "01030000000045.pdf", + "status": "success", + "elapsed": 0.5771124169696122, + "server_time": 0.5731774160522036 + }, + { + "filename": "01030000000046.pdf", + "status": "success", + "elapsed": 1.0459730839938857, + "server_time": 1.0422542500309646 + }, + { + "filename": "01030000000047.pdf", + "status": "success", + "elapsed": 0.8931527499807999, + "server_time": 0.8899007920408621 + }, + { + "filename": "01030000000048.pdf", + "status": "success", + "elapsed": 0.22698091698111966, + "server_time": 0.22377945802873 + }, + { + "filename": "01030000000049.pdf", + "status": "success", + "elapsed": 0.2325494169490412, + "server_time": 0.22927216696552932 + }, + { + "filename": "01030000000050.pdf", + "status": "success", + "elapsed": 0.2267532079713419, + "server_time": 0.2240170420263894 + }, + { + "filename": "01030000000051.pdf", + "status": "success", + "elapsed": 0.6663411670015194, + "server_time": 0.6634712500381283 + }, + { + "filename": "01030000000052.pdf", + "status": "success", + "elapsed": 0.7772178329760209, + "server_time": 0.7743580000242218 + }, + { + "filename": "01030000000053.pdf", + "status": "success", + "elapsed": 0.6779300839989446, + "server_time": 0.6740249579888768 + }, + { + "filename": "01030000000054.pdf", + "status": "success", + "elapsed": 0.29146766697522253, + "server_time": 0.28862808301346377 + }, + { + "filename": "01030000000055.pdf", + "status": "success", + "elapsed": 0.6896979580051266, + "server_time": 0.6864265000331216 + }, + { + "filename": "01030000000056.pdf", + "status": "success", + "elapsed": 0.6088304580189288, + "server_time": 0.6049436670145951 + }, + { + "filename": "01030000000057.pdf", + "status": "success", + "elapsed": 0.6948379170498811, + "server_time": 0.6919721249723807 + }, + { + "filename": "01030000000058.pdf", + "status": "success", + "elapsed": 0.5237096249475144, + "server_time": 0.5201857089996338 + }, + { + "filename": "01030000000059.pdf", + "status": "success", + "elapsed": 1.0556424160022289, + "server_time": 1.051542041997891 + }, + { + "filename": "01030000000060.pdf", + "status": "success", + "elapsed": 0.9378715420025401, + "server_time": 0.9339362920145504 + }, + { + "filename": "01030000000061.pdf", + "status": "success", + "elapsed": 0.5744501660228707, + "server_time": 0.5710695830057375 + }, + { + "filename": "01030000000062.pdf", + "status": "success", + "elapsed": 0.5739157920470461, + "server_time": 0.5699651660397649 + }, + { + "filename": "01030000000063.pdf", + "status": "success", + "elapsed": 0.545565499982331, + "server_time": 0.5423177090124227 + }, + { + "filename": "01030000000064.pdf", + "status": "success", + "elapsed": 0.7559935839963146, + "server_time": 0.7518507920322008 + }, + { + "filename": "01030000000065.pdf", + "status": "success", + "elapsed": 0.7622525419574231, + "server_time": 0.7584597080131061 + }, + { + "filename": "01030000000066.pdf", + "status": "success", + "elapsed": 0.5409429160063155, + "server_time": 0.5375342919724062 + }, + { + "filename": "01030000000067.pdf", + "status": "success", + "elapsed": 0.2639236249960959, + "server_time": 0.2609299580217339 + }, + { + "filename": "01030000000068.pdf", + "status": "success", + "elapsed": 0.3791036249604076, + "server_time": 0.3755642910255119 + }, + { + "filename": "01030000000069.pdf", + "status": "success", + "elapsed": 0.2975422500167042, + "server_time": 0.2913320420193486 + }, + { + "filename": "01030000000070.pdf", + "status": "success", + "elapsed": 0.7183983749710023, + "server_time": 0.7153602500329725 + }, + { + "filename": "01030000000071.pdf", + "status": "success", + "elapsed": 0.29412354197120294, + "server_time": 0.29085429199039936 + }, + { + "filename": "01030000000072.pdf", + "status": "success", + "elapsed": 0.777759040996898, + "server_time": 0.7740345419733785 + }, + { + "filename": "01030000000073.pdf", + "status": "success", + "elapsed": 0.6562319590011612, + "server_time": 0.6535182910156436 + }, + { + "filename": "01030000000074.pdf", + "status": "success", + "elapsed": 0.28343045798828825, + "server_time": 0.2796145839965902 + }, + { + "filename": "01030000000075.pdf", + "status": "success", + "elapsed": 0.28680941701168194, + "server_time": 0.28328687499742955 + }, + { + "filename": "01030000000076.pdf", + "status": "success", + "elapsed": 0.29438183398451656, + "server_time": 0.2910186250228435 + }, + { + "filename": "01030000000077.pdf", + "status": "success", + "elapsed": 0.29165641602594405, + "server_time": 0.28862891596509144 + }, + { + "filename": "01030000000078.pdf", + "status": "success", + "elapsed": 1.0204909999738447, + "server_time": 1.0173910839948803 + }, + { + "filename": "01030000000079.pdf", + "status": "success", + "elapsed": 0.2726650420227088, + "server_time": 0.26920916698873043 + }, + { + "filename": "01030000000080.pdf", + "status": "success", + "elapsed": 0.27147929195780307, + "server_time": 0.26783212495502084 + }, + { + "filename": "01030000000081.pdf", + "status": "success", + "elapsed": 0.8019527500146069, + "server_time": 0.7987610420095734 + }, + { + "filename": "01030000000082.pdf", + "status": "success", + "elapsed": 0.9925202919985168, + "server_time": 0.9887124999659136 + }, + { + "filename": "01030000000083.pdf", + "status": "success", + "elapsed": 1.31362504203571, + "server_time": 1.309416665986646 + }, + { + "filename": "01030000000084.pdf", + "status": "success", + "elapsed": 0.8973014999646693, + "server_time": 0.8946025000186637 + }, + { + "filename": "01030000000085.pdf", + "status": "success", + "elapsed": 0.2703269170015119, + "server_time": 0.26723237498663366 + }, + { + "filename": "01030000000086.pdf", + "status": "success", + "elapsed": 0.31575808400521055, + "server_time": 0.3122708339942619 + }, + { + "filename": "01030000000087.pdf", + "status": "success", + "elapsed": 0.2932149580447003, + "server_time": 0.2899437500163913 + }, + { + "filename": "01030000000088.pdf", + "status": "success", + "elapsed": 0.6827465840033256, + "server_time": 0.6795382089912891 + }, + { + "filename": "01030000000089.pdf", + "status": "success", + "elapsed": 0.6815644160378724, + "server_time": 0.6780082919867709 + }, + { + "filename": "01030000000090.pdf", + "status": "success", + "elapsed": 0.7230202499777079, + "server_time": 0.7197811250225641 + }, + { + "filename": "01030000000091.pdf", + "status": "success", + "elapsed": 0.29087054199771956, + "server_time": 0.2875624159933068 + }, + { + "filename": "01030000000092.pdf", + "status": "success", + "elapsed": 0.28777975001139566, + "server_time": 0.2850096669862978 + }, + { + "filename": "01030000000093.pdf", + "status": "success", + "elapsed": 0.27819625003030524, + "server_time": 0.2750208330107853 + }, + { + "filename": "01030000000094.pdf", + "status": "success", + "elapsed": 0.8608404159895144, + "server_time": 0.8571256250143051 + }, + { + "filename": "01030000000095.pdf", + "status": "success", + "elapsed": 0.625199124973733, + "server_time": 0.6218751670094207 + }, + { + "filename": "01030000000096.pdf", + "status": "success", + "elapsed": 0.5693329999921843, + "server_time": 0.565007166005671 + }, + { + "filename": "01030000000097.pdf", + "status": "success", + "elapsed": 0.9042992499889806, + "server_time": 0.8982586250058375 + }, + { + "filename": "01030000000098.pdf", + "status": "success", + "elapsed": 1.0319968330441043, + "server_time": 1.027021041023545 + }, + { + "filename": "01030000000099.pdf", + "status": "success", + "elapsed": 0.9114150829846039, + "server_time": 0.9061132500064559 + }, + { + "filename": "01030000000100.pdf", + "status": "success", + "elapsed": 1.5465596670401283, + "server_time": 1.5426428329665214 + }, + { + "filename": "01030000000101.pdf", + "status": "success", + "elapsed": 0.3061483330093324, + "server_time": 0.30136958399089053 + }, + { + "filename": "01030000000102.pdf", + "status": "success", + "elapsed": 0.9578264160081744, + "server_time": 0.95446754101431 + }, + { + "filename": "01030000000103.pdf", + "status": "success", + "elapsed": 0.3398451249813661, + "server_time": 0.3357120000291616 + }, + { + "filename": "01030000000104.pdf", + "status": "success", + "elapsed": 0.6835829580086283, + "server_time": 0.6800786249805242 + }, + { + "filename": "01030000000105.pdf", + "status": "success", + "elapsed": 0.7943414589972235, + "server_time": 0.7907470000209287 + }, + { + "filename": "01030000000106.pdf", + "status": "success", + "elapsed": 1.504911332973279, + "server_time": 1.4998468339908868 + }, + { + "filename": "01030000000107.pdf", + "status": "success", + "elapsed": 2.0411745000164956, + "server_time": 2.0363634999957867 + }, + { + "filename": "01030000000108.pdf", + "status": "success", + "elapsed": 0.8543117080116645, + "server_time": 0.8507597499992698 + }, + { + "filename": "01030000000109.pdf", + "status": "success", + "elapsed": 0.2945376660209149, + "server_time": 0.2915094590280205 + }, + { + "filename": "01030000000110.pdf", + "status": "success", + "elapsed": 2.746348583023064, + "server_time": 2.7426476670079865 + }, + { + "filename": "01030000000111.pdf", + "status": "success", + "elapsed": 0.8354320420185104, + "server_time": 0.8313681249856018 + }, + { + "filename": "01030000000112.pdf", + "status": "success", + "elapsed": 0.5660255419788882, + "server_time": 0.5612640000181273 + }, + { + "filename": "01030000000113.pdf", + "status": "success", + "elapsed": 0.8941574160126038, + "server_time": 0.8887739999918267 + }, + { + "filename": "01030000000114.pdf", + "status": "success", + "elapsed": 0.584699459024705, + "server_time": 0.580986374989152 + }, + { + "filename": "01030000000115.pdf", + "status": "success", + "elapsed": 0.42892508301883936, + "server_time": 0.42490545799955726 + }, + { + "filename": "01030000000116.pdf", + "status": "success", + "elapsed": 0.7870269579580054, + "server_time": 0.7833477500244044 + }, + { + "filename": "01030000000117.pdf", + "status": "success", + "elapsed": 0.5688162919832394, + "server_time": 0.5651287919608876 + }, + { + "filename": "01030000000118.pdf", + "status": "success", + "elapsed": 0.9510037080035545, + "server_time": 0.9477845840156078 + }, + { + "filename": "01030000000119.pdf", + "status": "success", + "elapsed": 0.5877052919822745, + "server_time": 0.5849201250239275 + }, + { + "filename": "01030000000120.pdf", + "status": "success", + "elapsed": 0.8888135419692844, + "server_time": 0.8856102499994449 + }, + { + "filename": "01030000000121.pdf", + "status": "success", + "elapsed": 0.6567836250178516, + "server_time": 0.6525404170388356 + }, + { + "filename": "01030000000122.pdf", + "status": "success", + "elapsed": 1.0605309999664314, + "server_time": 1.0559296669671312 + }, + { + "filename": "01030000000123.pdf", + "status": "success", + "elapsed": 0.4666487079812214, + "server_time": 0.4635189580149017 + }, + { + "filename": "01030000000124.pdf", + "status": "success", + "elapsed": 0.5405656660441309, + "server_time": 0.537837749987375 + }, + { + "filename": "01030000000125.pdf", + "status": "success", + "elapsed": 0.19119008298730478, + "server_time": 0.18880258302669972 + }, + { + "filename": "01030000000126.pdf", + "status": "success", + "elapsed": 0.4471094170003198, + "server_time": 0.4434728749911301 + }, + { + "filename": "01030000000127.pdf", + "status": "success", + "elapsed": 1.4135877499938942, + "server_time": 1.4096584590151906 + }, + { + "filename": "01030000000128.pdf", + "status": "success", + "elapsed": 1.6433422910049558, + "server_time": 1.6393002499826252 + }, + { + "filename": "01030000000129.pdf", + "status": "success", + "elapsed": 0.3084769159904681, + "server_time": 0.305576334008947 + }, + { + "filename": "01030000000130.pdf", + "status": "success", + "elapsed": 0.90140687499661, + "server_time": 0.898328458017204 + }, + { + "filename": "01030000000131.pdf", + "status": "success", + "elapsed": 1.1844341660034843, + "server_time": 1.1810526669723913 + }, + { + "filename": "01030000000132.pdf", + "status": "success", + "elapsed": 0.9030522079556249, + "server_time": 0.8989290830213577 + }, + { + "filename": "01030000000133.pdf", + "status": "success", + "elapsed": 0.4822871250216849, + "server_time": 0.47932595800375566 + }, + { + "filename": "01030000000134.pdf", + "status": "success", + "elapsed": 1.298552458989434, + "server_time": 1.294351499993354 + }, + { + "filename": "01030000000135.pdf", + "status": "success", + "elapsed": 0.2621786250383593, + "server_time": 0.25933074997738004 + }, + { + "filename": "01030000000136.pdf", + "status": "success", + "elapsed": 1.3238888750202022, + "server_time": 1.311885875009466 + }, + { + "filename": "01030000000137.pdf", + "status": "success", + "elapsed": 0.8403377499780618, + "server_time": 0.8339723329991102 + }, + { + "filename": "01030000000138.pdf", + "status": "success", + "elapsed": 0.5353121669613756, + "server_time": 0.531863207987044 + }, + { + "filename": "01030000000139.pdf", + "status": "success", + "elapsed": 0.7436200419906527, + "server_time": 0.7343198750168085 + }, + { + "filename": "01030000000140.pdf", + "status": "success", + "elapsed": 0.7806904169847257, + "server_time": 0.7767318330006674 + }, + { + "filename": "01030000000141.pdf", + "status": "success", + "elapsed": 1.8583039169898257, + "server_time": 1.852555666002445 + }, + { + "filename": "01030000000142.pdf", + "status": "success", + "elapsed": 0.31356708297971636, + "server_time": 0.31048604199895635 + }, + { + "filename": "01030000000143.pdf", + "status": "success", + "elapsed": 0.26917862496338785, + "server_time": 0.2659839590196498 + }, + { + "filename": "01030000000144.pdf", + "status": "success", + "elapsed": 0.33301412500441074, + "server_time": 0.3285883340286091 + }, + { + "filename": "01030000000145.pdf", + "status": "success", + "elapsed": 0.29921541694784537, + "server_time": 0.2955516669899225 + }, + { + "filename": "01030000000146.pdf", + "status": "success", + "elapsed": 0.6665330420364626, + "server_time": 0.6623209589743055 + }, + { + "filename": "01030000000147.pdf", + "status": "success", + "elapsed": 0.6086918330402113, + "server_time": 0.6055471249856055 + }, + { + "filename": "01030000000148.pdf", + "status": "success", + "elapsed": 1.2324286660295911, + "server_time": 1.228848917002324 + }, + { + "filename": "01030000000149.pdf", + "status": "success", + "elapsed": 0.5432566669769585, + "server_time": 0.540514666994568 + }, + { + "filename": "01030000000150.pdf", + "status": "success", + "elapsed": 0.5812739160028286, + "server_time": 0.5783333339495584 + }, + { + "filename": "01030000000151.pdf", + "status": "success", + "elapsed": 0.2893044580123387, + "server_time": 0.2857375830062665 + }, + { + "filename": "01030000000152.pdf", + "status": "success", + "elapsed": 0.7221482080058195, + "server_time": 0.718181874952279 + }, + { + "filename": "01030000000153.pdf", + "status": "success", + "elapsed": 0.3029647910152562, + "server_time": 0.2989172500092536 + }, + { + "filename": "01030000000154.pdf", + "status": "success", + "elapsed": 0.8416399580310099, + "server_time": 0.8388635000446811 + }, + { + "filename": "01030000000155.pdf", + "status": "success", + "elapsed": 0.6114308750256896, + "server_time": 0.6078014579834417 + }, + { + "filename": "01030000000156.pdf", + "status": "success", + "elapsed": 0.2561130420072004, + "server_time": 0.25318087497726083 + }, + { + "filename": "01030000000157.pdf", + "status": "success", + "elapsed": 0.20582254201872274, + "server_time": 0.20246308395871893 + }, + { + "filename": "01030000000158.pdf", + "status": "success", + "elapsed": 0.20003566599916667, + "server_time": 0.1964530000113882 + }, + { + "filename": "01030000000159.pdf", + "status": "success", + "elapsed": 0.1972768750274554, + "server_time": 0.19408700003987178 + }, + { + "filename": "01030000000160.pdf", + "status": "success", + "elapsed": 0.19714324997039512, + "server_time": 0.19412262499099597 + }, + { + "filename": "01030000000161.pdf", + "status": "success", + "elapsed": 0.19712374999653548, + "server_time": 0.19399954203981906 + }, + { + "filename": "01030000000162.pdf", + "status": "success", + "elapsed": 0.20451800001319498, + "server_time": 0.20128179102903232 + }, + { + "filename": "01030000000163.pdf", + "status": "success", + "elapsed": 1.8700883749988861, + "server_time": 1.8623094169888645 + }, + { + "filename": "01030000000164.pdf", + "status": "success", + "elapsed": 0.3052973329904489, + "server_time": 0.3013727920479141 + }, + { + "filename": "01030000000165.pdf", + "status": "success", + "elapsed": 0.6568588329828344, + "server_time": 0.6517472910345532 + }, + { + "filename": "01030000000166.pdf", + "status": "success", + "elapsed": 0.5618557499838062, + "server_time": 0.5589704170124605 + }, + { + "filename": "01030000000167.pdf", + "status": "success", + "elapsed": 0.30160895898006856, + "server_time": 0.2975445840274915 + }, + { + "filename": "01030000000168.pdf", + "status": "success", + "elapsed": 0.30773508304264396, + "server_time": 0.3048531669774093 + }, + { + "filename": "01030000000169.pdf", + "status": "success", + "elapsed": 0.3223462500027381, + "server_time": 0.3182865839917213 + }, + { + "filename": "01030000000170.pdf", + "status": "success", + "elapsed": 1.3695825419854373, + "server_time": 1.365699667017907 + }, + { + "filename": "01030000000171.pdf", + "status": "success", + "elapsed": 1.1203059169929475, + "server_time": 1.115905707993079 + }, + { + "filename": "01030000000172.pdf", + "status": "success", + "elapsed": 1.1942022090079263, + "server_time": 1.1902694159653038 + }, + { + "filename": "01030000000173.pdf", + "status": "success", + "elapsed": 0.4695068749715574, + "server_time": 0.46629795798799023 + }, + { + "filename": "01030000000174.pdf", + "status": "success", + "elapsed": 0.4568356249947101, + "server_time": 0.45275104203028604 + }, + { + "filename": "01030000000175.pdf", + "status": "success", + "elapsed": 0.32698520802659914, + "server_time": 0.32330883300164714 + }, + { + "filename": "01030000000176.pdf", + "status": "success", + "elapsed": 0.3407604579697363, + "server_time": 0.3375459579983726 + }, + { + "filename": "01030000000177.pdf", + "status": "success", + "elapsed": 0.49446658400120214, + "server_time": 0.49120904202573 + }, + { + "filename": "01030000000178.pdf", + "status": "success", + "elapsed": 0.6391962919733487, + "server_time": 0.635195582988672 + }, + { + "filename": "01030000000179.pdf", + "status": "success", + "elapsed": 0.9593374999822117, + "server_time": 0.9551061250385828 + }, + { + "filename": "01030000000180.pdf", + "status": "success", + "elapsed": 0.5181393749662675, + "server_time": 0.5149723750073463 + }, + { + "filename": "01030000000181.pdf", + "status": "success", + "elapsed": 0.28714429202955216, + "server_time": 0.2835321670281701 + }, + { + "filename": "01030000000182.pdf", + "status": "success", + "elapsed": 0.622386250004638, + "server_time": 0.6188804999692366 + }, + { + "filename": "01030000000183.pdf", + "status": "success", + "elapsed": 0.8731557919527404, + "server_time": 0.8693063330138102 + }, + { + "filename": "01030000000184.pdf", + "status": "success", + "elapsed": 0.6455512919928879, + "server_time": 0.6415903749875724 + }, + { + "filename": "01030000000185.pdf", + "status": "success", + "elapsed": 0.3357716670143418, + "server_time": 0.33166358404560015 + }, + { + "filename": "01030000000186.pdf", + "status": "success", + "elapsed": 0.639882082992699, + "server_time": 0.6365475840284489 + }, + { + "filename": "01030000000187.pdf", + "status": "success", + "elapsed": 0.81347754097078, + "server_time": 0.8095759159768932 + }, + { + "filename": "01030000000188.pdf", + "status": "success", + "elapsed": 1.6670277909724973, + "server_time": 1.662580624979455 + }, + { + "filename": "01030000000189.pdf", + "status": "success", + "elapsed": 1.7871013340190984, + "server_time": 1.7834812499932013 + }, + { + "filename": "01030000000190.pdf", + "status": "success", + "elapsed": 1.15512587496778, + "server_time": 1.1509053339832462 + }, + { + "filename": "01030000000191.pdf", + "status": "success", + "elapsed": 0.31478129199240357, + "server_time": 0.31154333299491554 + }, + { + "filename": "01030000000192.pdf", + "status": "success", + "elapsed": 0.37252099998295307, + "server_time": 0.3682804580312222 + }, + { + "filename": "01030000000193.pdf", + "status": "success", + "elapsed": 0.3488778339815326, + "server_time": 0.34501120896311477 + }, + { + "filename": "01030000000194.pdf", + "status": "success", + "elapsed": 0.2987960000173189, + "server_time": 0.29538512497674674 + }, + { + "filename": "01030000000195.pdf", + "status": "success", + "elapsed": 0.30467862501973286, + "server_time": 0.3011551249655895 + }, + { + "filename": "01030000000196.pdf", + "status": "success", + "elapsed": 0.2963709589676, + "server_time": 0.29255999997258186 + }, + { + "filename": "01030000000197.pdf", + "status": "success", + "elapsed": 0.6323719170177355, + "server_time": 0.6291057909838855 + }, + { + "filename": "01030000000198.pdf", + "status": "success", + "elapsed": 1.5045152499806136, + "server_time": 1.499544334015809 + }, + { + "filename": "01030000000199.pdf", + "status": "success", + "elapsed": 2.419794333050959, + "server_time": 2.4141910420148633 + }, + { + "filename": "01030000000200.pdf", + "status": "success", + "elapsed": 3.9152356670238078, + "server_time": 3.9101335000013933 + } + ] +} \ No newline at end of file diff --git a/docs/hybrid/experiments/speed/speed-experiment-2026-01-03.md b/docs/hybrid/experiments/speed/speed-experiment-2026-01-03.md new file mode 100644 index 0000000..d286380 --- /dev/null +++ b/docs/hybrid/experiments/speed/speed-experiment-2026-01-03.md @@ -0,0 +1,65 @@ +# Docling Speed Experiment Results + +**Date**: 2026-01-03 14:31:43 + +## Summary + +| Approach | Description | Avg (s/doc) | Target | Status | Speedup | +|----------|-------------|-------------|--------|--------|---------| +| baseline | docling-serve HTTP | 2.283 | - | - | - | +| fastapi | FastAPI + SDK singleton | 0.685 | 0.8 | PASS | 3.3x | +| subprocess | Persistent subprocess | 0.661 | 1.0 | PASS | 3.5x | + +## Decision + +**Phase 0 PASSED** - FastAPI approach meets the < 0.8s threshold. + +Proceed to Phase 1 implementation: + +- [x] Task 1.1: docling_subprocess_worker.py (skipped - FastAPI only) +- [x] Task 1.2: hybrid_server.py (opendataloader-pdf-hybrid CLI) +- [x] Task 2.1: DoclingSubprocessClient.java (skipped - FastAPI only) +- [x] Task 2.2: DoclingFastServerClient.java +- [x] Task 2.3: HybridClientFactory modification +- [x] Task 3: Benchmark integration +- [x] Task 4: Final validation + +Subprocess approach also passed - both approaches available for implementation. + +## Detailed Statistics + +### Baseline + +- **Description**: docling-serve HTTP API +- **Timestamp**: 2026-01-03 14:23:41 +- **Total documents**: 200 +- **Successful**: 200 +- **Failed**: 0 +- **Total elapsed**: 456.6s +- **Average per doc**: 2.2825s +- **Min**: 2.0045s +- **Max**: 8.0182s + +### Fastapi + +- **Description**: FastAPI server with docling SDK singleton +- **Timestamp**: 2026-01-03 14:27:18 +- **Total documents**: 200 +- **Successful**: 200 +- **Failed**: 0 +- **Total elapsed**: 137.1s +- **Average per doc**: 0.6855s +- **Min**: 0.1912s +- **Max**: 4.2420s + +### Subprocess + +- **Description**: Persistent Python subprocess with docling SDK +- **Timestamp**: 2026-01-03 14:30:50 +- **Total documents**: 200 +- **Successful**: 200 +- **Failed**: 0 +- **Total elapsed**: 132.4s +- **Average per doc**: 0.6612s +- **Min**: 0.1908s +- **Max**: 4.2498s diff --git a/docs/hybrid/experiments/speed/subprocess_results.json b/docs/hybrid/experiments/speed/subprocess_results.json new file mode 100644 index 0000000..8f7567b --- /dev/null +++ b/docs/hybrid/experiments/speed/subprocess_results.json @@ -0,0 +1,1426 @@ +{ + "approach": "subprocess", + "description": "Persistent Python subprocess with docling SDK", + "timestamp": "2026-01-03 14:30:50", + "config": { + "do_ocr": true, + "do_table_structure": true, + "worker_type": "persistent" + }, + "statistics": { + "total_documents": 200, + "successful": 200, + "failed": 0, + "total_elapsed": 132.45, + "elapsed_per_doc": 0.6612, + "server_time_per_doc": 0.6589, + "min_elapsed": 0.1908, + "max_elapsed": 4.2498 + }, + "threshold": { + "target": 1.0, + "passed": true + }, + "details": [ + { + "status": "success", + "filename": "01030000000001.pdf", + "markdown": "1999 such iterations to form parameter distributions. If these distributions are symmetric, we can pretty much just read values straight out of them to form confidence intervals (e.g., the 50th and 1950th values out of 1999 will give us a roughly 95% confidence interval). If they are not, we must do something more complicated, with the best choice being the bias-corrected and accelerated (BCa) approach. Because of the large number of fits that are required, bootstrapping is fairly slow. If the experiment contains many trials, the BCa method makes it even slower (because it incorporates additional 'jackknife' resampling, implying one further fitting iteration for almost every trial).$^{1}$^{8}\n\nThe code accompanying this chapter offers options to generate confidence intervals on fitted parameters. Confidence intervals sometimes imply statistical inference, as for example when they fail to overlap some value and thus imply that our statistic differs significantly from that value. However, in sj experiments we are more likely to want to ask a question such as whether a particular parameter differs between two conditions for a single observer. To answer this kind of question, you will need to modify or develop the code. If we take the example of whether parameters vary across conditions, my recommendation would be to adopt a permutation test approach.\n\nTo do so, take the trials from both conditions and think of each trial as a card in a deck of cards. Making sure you keep each trial intact (i.e., without breaking the link between soas and responses) shuffle the trials and then deal them at random into two new piles, each representing a pseudo-condition. If your original conditions contained different numbers of trials, make sure the two pseudo-conditions match the size of the original conditions. For each pseudo-condition, perform a model fit. Now calculate the difference between model parameters in the two pseudo-conditions. This is the value you want to retain. Now repeat this whole process many times. What you are forming is a null distribution of the expected difference between model parameters that would occur just by chance. You can then compare the difference you actually obtained against this null distribution to generate a p value for your difference of interest.\n\n## 7 Variants of sj Observer Models\n\nIn this chapter, I have presented two variants of a latency-based observer model applied to the sj task. Both assume that a single SOA will generate an internal response ( Δ t) that is a Gaussian random variable. Both assume a simple\n\n18 E.g., <SimultaneityNoisyCriteriaMultistart 225-386>. Note that Matlab has inbuilt functions, which could have done most of this if you have the statistics toolbox extensions.", + "processing_time": 3.5697386669926345, + "client_elapsed": 3.580927375005558 + }, + { + "status": "success", + "filename": "01030000000002.pdf", + "markdown": "where soas below some threshold cannot be recovered, so that an observer can only guess about order.$^{1}$^{9} However, either kind of model can easily be fitted and interpreted from either theoretical perspective.\n\n## 8 Choosing between Observer Models and Rejecting Participants\n\nTwo further reasonable questions one might ask are: 1) could my observer model have generated these data? and 2) does another observer model describe the data better? Model comparison is a large and complex topic, so once again, what I have to say here should be treated as a brief introduction rather than a comprehensive summary.\n\nLet's begin by considering a metric I have not yet mentioned: Deviance. Deviance (sometimes called G$^{2}) is a measure based on log likelihood, but which looks rather more like summed squared error, in that it is zero for a perfectly fitting model and large/positive for a poorly fitting model. Formally, deviance is two times the difference in log likelihood between the saturated model and the model with our current set of parameters. A saturated model is one that exactly predicts the data (which can always be accomplished by a model that has one parameter per data point). Hence it represents the situation with the maximum possible log-likelihood when predicting this particular set of data. Deviance is closely related to a simpler calculation (-2 × log likelihood) that forms the basis of a couple of well-known metrics for model comparison (the Akaike information criterion, aic, and the Bayesian information criterion, bic) and indeed is occasionally defined this way. That's because we are often only really interested in differences (in Deviance, or aic, or bic) between models, and the log-likelihood of the saturated model gets subtracted out in a comparison between two models (because it has contributed to the deviance in the same way for both) so calculating it is not necessary.\n\nHowever, if you want to say something about the goodness of fit of a model without relating it to any other model, based on asymptotic statistical theory, you do need to calculate deviance properly. Asymptotically, it turns out that the deviance of a model fitted to data when that model actually generated those data follows a chi-square ( χ $^{2}) distribution, with degrees of freedom equal to the number of data points minus the number of model parameters (note: for\n\n19 García-Pérez and Alcalá-Quintana's commitment to this account is a little unclear, because they often let δ vary across experimental conditions, suggesting flexibility more akin to a criterion-based account. It may be that they believe a low-threshold exists, but that synchrony is often additionally reported beyond this hard limit.", + "processing_time": 0.24415750004118308, + "client_elapsed": 0.2457441670121625 + }, + { + "status": "success", + "filename": "01030000000003.pdf", + "markdown": "model (discussed for a binary fit in Section 6.2). Because there are three possible choices, the appropriate data model (applied at each soa) is no longer the binomial distribution, but rather the multinomial distribution, which can provide an exact likelihood of obtaining any particular combination of probabilities that divide N choices into three bins when the actual probabilities of selecting each bin are known (or rather, for fitting purposes, predicted).$^{2}$^{2}\n\n## 11 Dual-Presentation sj Data\n\nSeveral authors have investigated the use of a dual-presentation sj task in which two bimodal stimuli are presented (one after another) and compared, for example by reporting which one was (most) synchronous (Allan & Kristofferson, 1974; Powers, Hillock, & Wallace, 2009; Roseboom, Nishida, Fujisaki, & Arnold, 2011). This is a form of what would, in classical signal detection theory, be described as a two-alternative forced choice (specifically the two-interval forced choice variant). However, that designation is ambiguous (about whether there are two presentations or two response categories) and has been applied to cases where either or both of the possible qualifying conditions are met, which is probably why the dual-presentation sj task has ended up being given a variety of names (e.g., temporal 2AFC; forced-choice successiveness discrimination; 2IFC sj, where the classic sj is referred to as 2AFC sj in the same paper). I will label it the 2xSJ .\n\nThe simplest form of the 2xSJ would have a synchronous standard on every trial along with a non-synchronous test pair. Based on the kind of observer models discussed in this chapter, the resulting psychometric function (plotting the probability of judging the standard more synchronous than the test against the test's soa) is U-shaped and centred over the pss. This approach represents a reasonable way to derive estimates of inverse precision (i.e., σ ∆t ) but a fairly poor way to estimate the pss, because having a synchronous standard on every trial provides feedback about objective synchrony. A simple solution is to also include a range of standards as well as a range of tests, in a roving standard design.\n\nThe observer model can be fitted to data even when both standard and test are non-zero, as described in detail by Yarrow et al. (2016; see also García-Pérez & Peli, 2014). To present all of the data, it is necessary to plot a function for each standard soa (using several standard plots, or a single 3D plot), which is somewhat cumbersome, but not a major obstacle to using the task. A simple\n\n22 <MultinomialLikelihood 9>.", + "processing_time": 0.2374616670422256, + "client_elapsed": 0.23879133397713304 + }, + { + "status": "success", + "filename": "01030000000004.pdf", + "markdown": "observer model with three parameters captures pss, sensory noise and an interval bias (i.e., a tendency to select one interval in preference to the other under uncertainty).\n\nThe 2xSJ task provides estimates that correlate fairly well with equivalent parameters estimated using tojs, sjs, and ternary tasks. However, each trial takes longer than in those single-presentation tasks, which makes experiments more onerous. There are a few reasons why the roving-standard 2xSJ is still worth considering. Firstly, it asks about synchrony explicitly (unlike the toj) and by requiring relative judgements it reveals a point of maximal synchrony perception (whereas the sj and ternary tasks often reveal a range of soa values that are classified as synchronous). Secondly, it can be added in to a single-presentation task (as a follow-up question every two trials), which somewhat mitigates the burden of additional experimental time. Finally, a case can be made that it will be more resistant to some forms of decision-level bias (Morgan, Grant, Melmoth, & Solomon, 2015; Morgan, Melmoth, & Solomon, 2013). As with the other tasks I have described, code to fit data from the 2xSJ accompanies this chapter.$^{2}$^{3} For further information, read the comments there and consult Yarrow et al. (2016).\n\n## 12 Conclusion\n\nIn this chapter, I have outlined the benefits of fitting formal observer models to judgements about simultaneity, and described how this can be achieved using Matlab code (see book's GitHub repository). In doing so, I have presented one particular observer model in some detail, and highlighted the fundamentally subjective nature of the sj task, which requires us to think carefully about how both the strategic decisions and perceptual sensitivity of a participant can affect their psychometric function. I have gone on to supply a brief overview of appropriate models for several closely related timing tasks. I hope I have also provided enough of a tutorial regarding bespoke model fitting and evaluation to allow the interested reader to go forward and explore their own models of perceived simultaneity. Modelling may seem intimidating, but in fact, a good understanding of just a few basic concepts (which is best gained through practical exploration) will take you a long way, providing tools to engage more fully with the timing literature. This is an endeavour I would very much encourage!\n\n23 <TwoAFCSimultaneity\\_3PEq\\_Multistart\\_rawdata>.", + "processing_time": 0.22722445899853483, + "client_elapsed": 0.22821854200446978 + }, + { + "status": "success", + "filename": "01030000000005.pdf", + "markdown": "Figure 1.5. The San Mateo Ixtatán men's jacket, lopil (Spanish capixay ). Photo by Elizabeth Purdum.\n\n\n\nFigure 1.6. Vegetation along the trail from San Mateo Ixtatán to Bulej, May 1965. Photo by author.\n\n", + "processing_time": 0.621310833026655, + "client_elapsed": 0.6233845000388101 + }, + { + "status": "success", + "filename": "01030000000006.pdf", + "markdown": "Figure 1.15. On the trail in the Yolcultac ( yol k'ultak , 'center of the brushland') forest, municipio of Nentón. May 1965, at the end of the dry season. Photo by the author.\n\n", + "processing_time": 0.6018712080549449, + "client_elapsed": 0.6048679579980671 + }, + { + "status": "success", + "filename": "01030000000007.pdf", + "markdown": "## Chapter 2\n\n## Narratives in Chuj\n\nT his collection of six narratives told in Chuj demonstrates the broad variety of stories people tell one another and the variety of sources of those stories: personal narratives, legendary events, mythological tales, and stories borrowed from other cultures. All were recorded by me during field work on Chuj from 1964 to 1965. (See the Archive of the Indigenous Languages of Latin America, www.ailla.utexas.org, for these and other samples of Chuj speech recorded during field work; AILLA reference codes for each text are given below and at the head of each transcription.)\n\n## Introduction to the Texts\n\nTwo of the stories are ultimately of foreign origin, but their origins are not the same. In one case, the story known to the narrator as An Old Man Whose Son Killed Him [CAC 002 R022], the story clearly comes from the European tradition, and must have been introduced to the Chuj by schoolteachers. It is the classic Greek tale of a couple whose child is destined to kill his father and how that came about, including the solution to a famous riddle: What animal walks on four legs at dawn, on two legs at noon, and on three legs in the evening?\n\nThe other tale, Coyote and Rabbit [CAC 002 R027], is probably ultimately of African origin, although some of its episodes are traditional in the American South and may have been introduced secondhand to the Chuj. This is the series of incidents that make up the Br'er Rabbit stories, stories that reflected earlier African tales involving Hyena instead of Fox (Diarassouba 2007). Here the story features Coyote instead of either Fox or Hyena. Coyote stories and stories of Rabbit Trickster abound in the native New World, and some of the episodes may be of American origin, adapted to the framework of the African stories. Some episodes have a local flavor (such as misty mountains) and are likely of local origin.\n\nA third story, Friend of the Animals [CAC 002 R020], expresses such a universal theme that it could possibly be of foreign origin as well, but it has", + "processing_time": 0.20933033397886902, + "client_elapsed": 0.2103524580015801 + }, + { + "status": "success", + "filename": "01030000000008.pdf", + "markdown": "indicates the use of balsam, which is 'indigenous in various parts of Arabia,' as an ingredient in the 'Myrabolan comfit.'$^{2}$^{5} Such references emphasize Arabia's exoticism and refined taste, as well as the sweetness and fragrance of its products, which were much valued during a time when the consumption of sugar and spices was rising rapidly among European populations.\n\nCoffee is another staple thing customarily associated with the area. In his Dictionary, Johnson indicates the Arabic origin of coffee and rightly so, as one the most popular types of coffee is called 'Arabica' because it was first domesticated for commercial use in the southern part of Arabia the Happy (present-day Yemen). Given the Muslim prohibition of alcohol, coffee became particularly attractive to the Muslim world as 'the wine of Islam,'$^{2}$^{6} and spread through the ports of the Persian Gulf in Western Europe, where it became immensely popular. Collections of travels published during the time mention that coffee was 'the product of Arabia only.'$^{2}$^{7} Imported largely from Yemen, which was credited with producing the best coffee in the world, coffee was considered to have stimulating and therapeutic properties.$^{2}$^{8} The former quality is famously described by Pope in The Rape of the Lock : ' Coffee (which makes the politician wise), / And see thro' all things with his half-shut Eyes) / Sent up in vapours to the Baron 's brain / New Stratagems, the radiant Lock to gain.'$^{2}$^{9} According to Beawes, the product was brought to Mecca through the port of Jeddah, whose '[t]rade consists mainly of coffee brought here by the Arabians and bought by the\n\n25 Wiliam Beckford, An Arabian Tale, from an Unpublished Manuscript: With Notes Critical and Explanatory (London: Printed for J. Johnson, 1786), 165.\n\n26 For the association between coffee and wine, see Ralph S. Hattox, Coffee and Coffeehouses: The Origins of a Social Beverage in the Medieval Middle East (Seattle: University of Washington Press, 1985), 18-19.\n\n27 A Collection of Voyages and Travels , 1:440.\n\n28 Coffee was customarily used as a mild painkiller during the eighteenth century. Poet Alexander Pope, for instance, used it as a palliative for his migraines.\n\n29 Pope, The Rape of the Lock , 69.\n\nFigure 4.2 William Hogarth, Taste in High Life [graphic]. Print made by isaac mills after William Hogarth's painting, without the artist's permission, London, 1798\n\n\n\nTurks … [and] by the Merchants of Mogul, Persia, and several places on the coast of Ehiopia.'$^{3}$^{0} From here, coffee spread rapidly in England, France, and Italy, giving rise to the coffeehouse culture that is a hallmark of the eighteenth century. Coffee was also regularly paired in the visual culture of the time with expensive china (fig. 4.2), was employed as a mark of the culture of sociability (fig. 4.3), or was used for its oracular properties$^{3}$^{1} (fig. 4.4).\n\nArabian medicines were also much sought-after in the Western world. As indicated by Beawes, 'from Arabia, Medicinal drugs, Dragon's Blood, Manna, Myrrh, [and] Incense,'$^{3}$^{2} were brought to the British  metropolis. Pharmacopoia Reformata (1744) mentions gum Arabic, aloe, cassia, acacia, cardamom, saffron, myrrh, and spikenard, which were all used for their therapeutic properties.$^{3}$^{3} To\n\n30 Beawes, Lex Mercatoria Rediviva, 791.\n\n31 Again, the custom of reading one's fortune in coffee grounds is of Turkish provenance, not Arabic. Such mistaken attributions were pervasive during the eighteenth century.\n\n32 Beawes, Lex Mercatoria Rediviva, 792.\n\n33 M.M., Pharmacopoia Reformata: Or, An Essay for a Reformation of the London Pharmacopoia, by a Set of Remarks on the Draught for a New One, and a Brief Account of the Proceedings of the Committee Appointed by the College of Physicians, to Thoroughly Reform Their", + "processing_time": 0.40632787498179823, + "client_elapsed": 0.408808708016295 + }, + { + "status": "success", + "filename": "01030000000009.pdf", + "markdown": "Figure 4.3 The Honey-Moon [graphic]. Mezzotint, hand-colored. Printed for carington bowles, London, June 1777\n\n\n\nthis list, Richard Walker, apothecary to the Prince of Wales, adds Arabic henna, manna, and rhubarb.$^{3}$^{4} The influence of the Arabian medicine first on the Greek, then on the French and English physicians, although often decried, brought an influx of medicinal plants from or through the Arabian\n\nBook. Interspersed with Some Occasional Observations on Some of the Most Celebrated Modern Dispensatories, and the Present State of Pharmacy (London: Printed and Sold by R. Willock, 1744). This volume contains a wealth of detailed recipes for various afflictions, albeit providing few specifics as to what was treated by using them.\n\n34 Richard Walker, Memoirs of Medicine; Including a Sketch of Medical History from the Earliest Accounts to the Eighteenth Century (London: Printed for J. Johnson, 1799).\n\nPeninsula to Europe, where they were customarily used in tinctures, purges, and other more or less effective elixirs.$^{3}$^{5} Alternately, incense was used for its love-inducing and rejuvenating properties, as seen in an 1787 etching by James Gillray representing a group of five elderly  women of fashion attending an altar of Love (fig. 4.5).$^{3}$^{6}\n\n35 For the influence of the Arabian medicine on Western Europe, see volume 3 of John Astruc's Treatise on the Diseases of Women, in Which Is Attempted to Join a Just Theory to the Most Safe and Approved Practice… (London: Printed for J. Nourse, 1767). For detailed recipes of medicines containing ingredients of Arabic origin, see Pharmacopoia Reformata cited above.\n\n36 Arabian incense is made by using frankincense or gum Arabic resin mixed with sweet-smelling essential oils, such as myrrh and oud.", + "processing_time": 0.7332307079923339, + "client_elapsed": 0.73545274999924 + }, + { + "status": "success", + "filename": "01030000000010.pdf", + "markdown": "Figure 4.10 James Gillray, High Change in Bond Street; ou la politesse du grande monde [graphic]. Etching on wove paper, hand-colored .\n\n\n\nPublished by h. humphrey, London, 1796\n\nmeant to bewilder the viewer. Satins, silks, ivory, gigantic eggs, and 'artificial' apples describe, in fact, the things of the trade: expensive and rare fabrics, on the one hand, strange collectibles and exotica, on the other. Lavish dresses and embellishments become insignia of wealth, power, and nonconformity, of a way of life outside the economic constraints of the Western civilization. Interestingly, such projections were internalized by eighteenth -century British subjects in the fashionable  'Turquerie' that allowed the wearers to display  their wealth by wearing Oriental dress, turbans, ostrich plumes, long capes, veils, and flattering shalvars (figs. 4.9 and 4.10). Another infusion of Orientalism in the West, the tradition of painting European figures in Middle Eastern dress, becomes a form of cultural cross-dressing meant to suggest misuse of power or excessive wealth (fig. 4.11). Such  cultural imports are difficult to be understood, to use Said's qualification, as expressions of the Occident's cultural 'antipathy'$^{8}$^{4} toward the Orient; rather, they reflect the West's attraction to a space that connotes difference understood as extraordinariness rather than inferiority.\n\nBesides their connotations of magic, exoticism, and wealth, the things in the Arabian Nights are also rich bearers of cultural information: as Marina Warner correctly pointed out, 'stories are lodged in goods'$^{8}$^{5} and as such, they expand the reader's\n\n84 Said, Orientalism , 260.\n\n85 Marina Warner, introduction to Stranger Magic: Charmed States and the Arabian Nights (London: Chatto & Windus, 2011), 8.", + "processing_time": 0.7797799590043724, + "client_elapsed": 0.7831529169925489 + }, + { + "status": "success", + "filename": "01030000000011.pdf", + "markdown": "Figure 4.11 A. Birrell, Sir Robert Shirley on wove paper.\n\n\n\n[graphic]. Engraving Published by edward harding, London, 1799\n\nknowledge about remote civilizations. There is an obvious cultural coincidence, for instance, between carpet-making and storytelling among nomadic peoples, which these stories convey through their intricate plot development. They also tell fascinating stories about the the traffic in diamonds, gold, and spices between the Indies, China, Arabia, and Western Europe that still wait to be unveiled. Rather than looking at the things of the Nights as colorful details in Sheherazade's tales or protagonists in the fantastic stories they make for themselves, we could explore, instead, their role as as bearers of cultural knowledge unintentionally embedded in the fabric of the text. In such a reading, 'historically and theoretically overdetermined material charactersitics of objects are sought out beyond the immediate context in which they appear'$^{8}$^{6} in order to\n\n86 Elaine Freedgood, 'Introduction: Reading Things,' in The Idea in Things: Fugitive Meaning in the Victorian Novel (Chicago: University of Chicago Press, 2006), 5-6.\n\ndefetishize them and expose the power structures in which they are involved.\n\nThus, as Makdisi and Nussbaum sum up in their introduction to The Arabian Nights in Historical Context: Between East and West , 'the Nights offered a particularly powerful vision of an Asiatic culture seemingly saturated with references to sensuality, extravagance, indulgence, violence, supernaturalism, and eroticism … [and] added a supernatural dimension to the Enlightenment; the tales offered an avenue into modernity through its magical opposite, an alternative to European identity, and an antidote to neoclassicism.'$^{8}$^{7} However, reading such imports as an expression of European powers' disavowal of the East in order to 'justify their conquest and rule over other peoples, particularly in Asia,'$^{8}$^{8} is an oversimplification of a rather complicated process of cultural exchange. None of these descriptions of Arabia were caused by colonial 'distortions,' as Said feared, but by false attributions: 'Arabian' was a misnomer that rarely described Arabia itself. While fictional narratives like Arabian Nights' Entertainments represented Arabia as a land of magic and exorbitant riches, they were too far-fetched to be part of a Westerner's belief system during the Age of Reason; rather, they were popularized because their wild fictionality turned them into bestsellers at the time. Such stories competed with descriptions of the Arabian Peninsula by travelers and traders who had visited the area and had unmediated contact with the local culture. However, while the Orientalist literature described Arabia in terms that emphasized its exoticism, magic, superstitions, extravagance, wealth, eroticism, excess, and myriads of other peculiarities that contrasted it with the European normativity, travel narratives created an 'Arabian' identity that was generally congruent with the reality of the place.\n\n87 Makdisi and Nussbaum, introduction to The Arabian Nights in Historical Context , 5.\n\n88 Ibid.", + "processing_time": 0.44627091696020216, + "client_elapsed": 0.4483776669949293 + }, + { + "status": "success", + "filename": "01030000000012.pdf", + "markdown": "Figure 5.1 Mr. Bologna Jun-r as Kalim Azack in Aladdin, or The Wonderful Lamp .\n\n\n\ntheatrical prints, which are informed by interculturation and illustrate the Orientalized look of the tale's theatrical life: one of John ('Jack') Peter Bologna as Kalim Azack, the vizier's son betrothed to Badroulboudour, and one of the extraordinary pantomime clown Joseph Grimaldi as Kazrac, the magician's Chinese slave, who, disillusioned by the magician's cruel plans concerning the lamp, befriends Aladdin (figs. 5.1 and 5.2). The creation of this non-speaking role (Kazrac's tongue had been removed by the 'Tartarian Hord' from whom the magician rescued him) added much to the play, besides giving both the magician and Aladdin an ally and a confidant. Interestingly, these two prints likely represent a notable scene in the play, certainly a favorite with children playing with a toy theater. The prints show Kalim Azack and Kazrac fighting while Aladdin follows the princess to the royal baths. The wealthy Kalim Azack is depicted wearing an elaborate ensemble: long embroidered tunic with fringe, short jacket with embroidery and tassels, full trousers tucked into boots, a sash,\n\nFigure 5.2 Mr. Grimaldi as Kazrac (the Chinese slave) in Aladdin, or The Wonderful Lamp .\n\n\n\nnecklace, earrings, and brooches. With his fanciful hat and long moustache, he depicts a theatrical version of 'a Tartar,' or 'a Man from Crimea.' An illustration with the same title was included in an 1804 edition of The Costume of Turkey that aptly associates Kalim Azack with the 'Tartarian Hord' responsible for Kazrac's disfigurement . $^{4}$^{1} Kazrac's 'Chinese' costume resembles contemporary Qing Dynasty (1636-1912) fashion with its changshan tunic, long, loose trousers, and a cap with upturned brim, topped with a knob. Despite his role as a poor peasant, Kazrac's theatrical costume is embellished with embroidery and a gold trim, and the character wears white stockings. Additionally, Grimaldi sports a braided pigtail and long moustache and brandishes two curved swords. Taken together, these two cultural images exemplify the Orientalized look that contributed to the fantasy\n\n41 'A Tartar. A Man from Crimea,' in Octavien Dalvimart, The Costume of Turkey, 1802 (London: Printed for William Miller, 1804), n.p.", + "processing_time": 0.6592218750156462, + "client_elapsed": 0.6622143340064213 + }, + { + "status": "success", + "filename": "01030000000013.pdf", + "markdown": "Figure 8.7a-c A gazelle horn used in al-Sadu weaving.\n\n\n\n## 4 Al-Sadu Symbols and Social Significance\n\nPerhaps the main reason for the uniqueness of al-Sadu weaving is that it was never mass-produced for export in the same way other carpets were. Although it was traded among tribes, due to the length of time it takes to produce a tent, and due to its particular function in the harsh climate of the desert, it was not replicable in other geographies. Al-Sadu weaving could not be commercialized in the same way that other\n\nFigure 8.8 Symbol of stars in contemporary al-Sadu weaving by Leila Yaser.\n\n\n\nobjects-such as kilims , clothes, bags, blankets, and tablecloths-were in other parts of the world. Therefore, although the weaving practice and the symbols used may have changed, they did not change as much as in other textiles, so examining the symbols embedded in these weavings may yield a wealth of information about the life of local populations. In the absence of written records, al-Sadu weavings become, thus, records of memories embodied in a thing.\n\nThe natural environment of the nomadic tribe can be seen in al-Sadu designs, which contain symbols that reflect astronomical elements and the desert environment.$^{2}$^{4} Quite frequently, alSadu symbols indicate constellations and stars (fig. 8.8).$^{2}$^{5} In the vast sky of the pre-electric desert, the stars, the moon, and the sun had a great significance, being the main sources of orientation. It is important to note that, currently, the weavers in Kuwait explain these symbols simply as 'stars,'\n\n24 For more details on the symbols that appear in al-Sadu weavings, see also Altaf Salem Al-Ali Al-Sabah, Ibjad: Ornate Tent Dividers and Weavings of the Kuwait Desert (Kuwait: Al Sadu Society, 2006); Khawla Mohamed Abdel and Aziez Al Manai, Al Sadu (Doha: National Museum of Qatar, 2013); and Ali S. Alnajadah, 'The Pictographic Codes in Al-Sadu Weavings of Kuwait,' International Design Journal 8, no. 3 (2018): 63-74. In this latter study, Alnajadah tracks changes in the meanings of some al-Sadu symbols.\n\n25 Khawlah M. Manna, Al-Sadu in Qatar: Traditional Technical Values and Techniques (Doha: Qatar Museums Authority, Qatar National Museum, 2013), 99-100.", + "processing_time": 1.8462979579926468, + "client_elapsed": 1.8493047090014443 + }, + { + "status": "success", + "filename": "01030000000014.pdf", + "markdown": "Figure 8.15 Typical black-and-white Bedouin tent.\n\n\n\nFigure 8.16 Typical three-poled Bedouin tent\n\n\n\nblack and white, with a little red-dyed wool for decoration. This wool comes from sheep and camels, whose wool is known for its softness and, when left undyed, for its beautiful natural colors.$^{4}$^{9}\n\nFigure 8.16 indicates the complex nature of the interior of a Bedouin tent. The inside area is divided into many parts, each of them with its specific use. It is important to note that a 'well-to-do' Bedouin tent like the one shown in figure 8.16 indicates the higher status of the family living in it than that of a family living in the humbler,\n\n49 For details, see Al-Sabah, Ibjad, 17.\n\nthree-poled tent in figure 8.15. These images also show that different areas are used by men and by women.$^{5}$^{0} For example, the tent contains a space which is allocated to female weavers, like a studio where they perform their craft and practice their skills.$^{5}$^{1} Thus, in the Bedouin society, the tent is a not only a signifier of social relationships and family status but also of gender roles. It is, therefore, an extremely important space because here women make items that support their family or tribe.\n\nWhile the function of the textile is to create and demarcate the Bedouin space, the way the space is constructed influences the way the nomads live and the way the family or the tribe is perceived by the outside world. The textile is, therefore, structuring the formation of a private and a public identity by delineating the space: the outside, nonpatterned textiles are public, while the inside, patterned textiles are private.$^{5}$^{2} We can infer,\n\n50 See also Dickson, The Arab of the Desert , 66-67; and Canavan, 'Applications of Textile Products,' 541. Here, Canavan explains that dividers were parts of women's possessions, accompanying them into marriage, as well as 'testimony of a tribe's wealth and prestige.'\n\n51 Refah Al Raheel, interviewed by Rana Al-Ogayyel, Riyadh, 2017.\n\n52 While the outside of the traditional tents is black and without much pattern except for stripes, the inside of", + "processing_time": 0.6406075829872862, + "client_elapsed": 0.6436195829883218 + }, + { + "status": "success", + "filename": "01030000000015.pdf", + "markdown": "Figure 11.12 A Bahraini bride in traditional green thobe . She wears a circular gold plate ( hama or taasa ) on her head, with the chains of discs talaat suspended from the rim. Sweet basil ( mishmun ), jasmine, and rosebuds adorn her hair. Around her wrists she wears gold bangles, including the shmelat, studded with turquoise and pink glass. She wears a murta/uni02BFasha choker and a long murtahish necklace ending in a crescent element.\n\n\n\ncentral element. As seen in figure 11.11, a seytemi may be added to this; it can be identified by the row of gold coins running up the chain and 'it is among the most sought after pieces of jewellery by women in the u.a.e.'$^{7}$^{2} All these pieces may vary in size and weight. At her waist, the bride will wear a\n\n72 Gubash and Lootah, Traditional Emirati Jewels , 62.\n\ngold belt ( hizam ), which is usually composed of articulated square or round elements with smaller dangling bells or tassels. On her hands, she will often have rings on each finger, especially the shahida ring, worn on both forefingers, and the marami on the middle finger. The back of her hand may be covered in the kaf or chef ornament, which runs from rings and is anchored to a bracelet. She also", + "processing_time": 0.8050010420265608, + "client_elapsed": 0.8076786670135334 + }, + { + "status": "success", + "filename": "01030000000016.pdf", + "markdown": "## Table of contents\n\n| Introduction | 7 |\n|---------------------------------------------------------|-----|\n| 1. Changing Practices, Shifting Sites | 7 |\n| 2. Core and Periphery of Play | 12 |\n| Part I: New Children, Different Toys | 21 |\n| 3. The Child as Consumer | 26 |\n| 4. Domesticating Play | 30 |\n| 5. The Child in the City | 35 |\n| 6. Toys as Containers, Mediators and Promoters | 39 |\n| Part II: From Solitary to Networked Geographies of Play | 45 |\n| 7. LEGO Toys: from Wooden Blocks to Plastic Bricks | 50 |\n| 8. Brand Extension & Product Differentiation | 58 |\n| 9. Bringing the Fans into the Company | 62 |\n| 10. Many-to-Many Geographies of Play | 66 |\n| Part III: Commercial Geographies of Play | 71 |\n| 11. Toy Towns and Simulated Cities | 73 |\n| 12. A 21st-century Dollhouse: The Sims | 83 |\n| 13. Unwanted Play Practices in The Sims Online | 94 |\n| 14. Commodified Geographies of Play | 103 |\n| Part IV: Serious Geographies of Play | 107 |\n| 15. Participation Tools | 111 |\n| 16. Participation Processes | 119 |\n| 17. Purposeful Play | 122 |\n| 18. Serious Geographies of Play | 124 |\n| Conclusion | 127 |\n| 19. Changing Geographies of Play | 127 |\n| 20. Making Do | 132 |\n| Notes | 137 |\n| Bibliography | 139 |\n| Index | 153 |", + "processing_time": 0.9816937079885975, + "client_elapsed": 0.9833783750073053 + }, + { + "status": "success", + "filename": "01030000000017.pdf", + "markdown": "16 Face Your World\n\n\n\nA girl at work with the Interactor during the Face Your World participation process (image courtesy of Van Heeswijk). On top of the workstation we see the drawing the girl made in an earlier stage of the process. The drawing depicts a large tree with a little house inside the tree and a rope ladder leading up to the little house. On the screen we see the girl working on a new object for the library. She is digitally redrawing her design for a tree house. Once this drawing is finished, she can save it to the library of the Interactor and use it when designing the park.\n\nticipating in Face Your World Slotervaart made a total of 1216 sketches in this phase of the planning project and Kaspori considered this the most creative part of the process (interview with Kaspori, 2007). In the third phase of the game, children would discuss each other ' s sketches, vote for the best sketch and write down why they had voted for that particular sketch. In the final stage, children entered the multi-player mode and had to start designing the park together. This final designing phase was directed at cooperation between the children: they had to agree on how to design the park and work together in order to be able to realize their ideas (interview with Heeswijk, 2007). To realize their ideas, players thus needed to communicate and cooperate. The discussion option of the game was facilitated through a chat function. This chat function was one of the few aspects of the game that did not work as it had been intended and projected by the designers. Children working with the Interactor did not use the chat function for communi-", + "processing_time": 0.4647313749883324, + "client_elapsed": 0.4661407089442946 + }, + { + "status": "success", + "filename": "01030000000018.pdf", + "markdown": "## Contents\n\n| Author's Note to the 2021 Edition . | . | . . ix |\n|---------------------------------------|-------------------------------------------|----------|\n| Foreword to the 2021 Edition . | . . . . | . . xi |\n| Foreword and Acknowledgements . . | Foreword and Acknowledgements . . | . . xv |\n| 1. | A Fountain in the Square . . . . | . . .1 |\n| 2. | The Lost Homeland . . . . . . . . | . . .5 |\n| 3. | Steinkirche . . . . . . . . . . . . . . . | . .13 |\n| 4. | A Jewel in the Austrian Crown | . .19 |\n| 5. | Meeting the Relatives . . . . . . . | . .37 |\n| 6. | For the Love of Iran. . . . . . . . . | . .41 |\n| 7. | To the Bottom of the World . . | . .53 |\n| 8. | Das Lager . . . . . . . . . . . . . . . . | . .65 |\n| 9. | His Majesty's Guests . . . . . . . . | . .79 |\n| 10. | The Imaginary Homeland . . . . | . .91 |\n| 11. | Shadows and Flames . . . . . . . . | .119 |\n| 12. | After the War . . . . . . . . . . . . . | .123 |\n| 13. | Stranded in Exile. . . . . . . . . . . | .127 |\n| 14. | Swimming for the Eucharist . . | .139 |\n| 15. | Ad Maiorem Dei Gloriam . . . . . | .155 |\n| 16. | Mirror Without Identity . . . . . | .173 |\n| 17. | The Wreck of the Deutschland . . | .191 |\n| 18. | Intelligence Testing . . . . . . . . . | .209 |\n| 19. | A Banquet of Life . . . . . . . . . . | .223 |\n| 20. | Marriage in Rome. . . . . . . . . . | .249 |\n| 21. | Integration . . . . . . . . . . . . . . . | .257 |", + "processing_time": 1.104749875026755, + "client_elapsed": 1.1059935829835013 + }, + { + "status": "success", + "filename": "01030000000019.pdf", + "markdown": "## Author's Note to the 2021 Edition\n\nThis book is a minimally amended, reprinted version of Sing me that lovely song again (Pandanus Press, 2006). The title was chosen by Ian Templeman, the publisher, because he was more interested in its literary merits than in academic history. For that reason, many of my dates were removed from the original manuscript during editing.\n\nMy original intention was to get my parents and the elder of my two brothers to write their own memories of how they experienced their internment in Persia and five years behind barbed wire in Australia during World War II, focusing on individual memory by gender and age. It seemed a remarkable opportunity to make this anecdotal and analytical contribution to social science: they had each lived in the same space with the same people for the same period. It was to be an experiment made in heaven, that is, within an impeccable laboratory. But my parents had been too distressed by their loss of freedom and the congested and pressured atmosphere of life in camp to collaborate.\n\nBecause I wanted to keep the focus on my own memories, and the tone of voice my own, I wrote my own book with only minimal research in various archives in Australia and abroad. I did some research as a check on some important facts.\n\nAsked to speak about my book at an academic conference at the University of Queensland in 2006, I did some further research to validate my contribution. My speech was then published in National Socialism in Oceania (edited by Emily T urner-Graham and Christine Winter, Peter Lang, 2010) with the title I had originally suggested to Pandanus Press, ' At Home in Exile: Ambiguities of wartime patriotism'. When in 2015 I was asked by Japanese scholars to speak at Cowra, NSW, at a conference on internment, I suggested that my younger brother, Peter, also be invited", + "processing_time": 0.22318895801436156, + "client_elapsed": 0.22422425000695512 + }, + { + "status": "success", + "filename": "01030000000020.pdf", + "markdown": "## At Home in Exile\n\nto speak, using half my allocated 20 minutes because he had a different memory of our internment. As a young boy he had a wonderful time in camp, getting up to mischief, playing games, feeling adventurous. Girls are more vulnerable. Puberty can be a greater problem for them.\n\nAnother interesting matter associated with this book is that the Iranianborn anthropologist Dr Pedram Khosronejad contacted me in 2019 after reading my book in the house of a friend. Pandanus Press having ceased to exist, Pedram took considerable trouble to locate and invite me to join a small group for a project he was devising. Their parents had also been interned from Persia during the period covered by my book. The group is now aged between 64 and 85 years of age - the 'children of internees from Persia'. The group works collectively and individually in association with Dr Khosronejad's experiment of a reciprocal anthropology of the aged. Outcomes of their work will include a publication as well as documentary film. This book remains one of several unique contributions within the development of the project.\n\nWith the literary title used in its initial hard copy, this book has not been part of bibliographies on civilian or refugee internment in Australia, although it is unusual as an account of a female's personal experiences.", + "processing_time": 0.20066254201810807, + "client_elapsed": 0.20149666699580848 + }, + { + "status": "success", + "filename": "01030000000021.pdf", + "markdown": "## 2 The Lost Homeland\n\nSince the death of my mother, Elfriede, ten years ago, I have been haunted by the desire to visit the homeland, the Heimat , that she never saw again after her fifty years in Australia. In more ways than one, Germany had become her lost homeland, the spiritual place of her ancestors from which she was exiled. I sensed the pain she felt over the tangible loss of connection to her own past. For me to be able to go so far away and pay tribute to her German home in what is now Poland, to savour the environment of her childhood, at first seemed impossible. I nevertheless hoped for the opportunity to do so, although I expected to find all the names of the places changed, and that people spoke a language I did not understand. It would be confronting to go there, I thought.\n\nWhen in 1997 I visited Vienna, my father's Austrian birth city, and after that my German cousins in Germany, I was not regarded as a stranger. Despite being an almost lifelong Australian, I spoke their language and somehow belonged. I was accepted by people as someone who had come home to reclaim my heritage. I could merge with crowds unobtrusively, like a 'local'. The only subtle tremors of feeling generated by what people are used to were shown up in my too-German ways for the Austrians, and my too-Austrian ways for the Germans. The Austrians reacted more firmly. This suggests that my mother's influence on me was strongest.\n\nI was born in Turkey, north of Ankara, in 1935, and when I also went there on my trip home, I was treated to a special welcome by each Turk who found this out, from my passport or my conversation. My birth in Turkey entitled me to Turkish citizenship. Naturally I was delighted,", + "processing_time": 0.20536679198266938, + "client_elapsed": 0.20643620804185048 + }, + { + "status": "success", + "filename": "01030000000022.pdf", + "markdown": "## At Home in Exile\n\nTo prepare myself for the journey from my home in Canberra, Australia, I visited the National Library's vast collection of maps. But I could not find Steinkirche, even in old German records of Silesia. The PolishGerman Gazeteer, which has a remarkable list of old German place-names in relation to their Polish replacements, and vice versa, gave the names for many places, including Märzdorf where my mother had worked as a young woman, on an estate near the Oder River. But there was nothing for Steinkirche. The people assembling the directory must have thought it simply the description of a stone church, as the name suggests, rather than the actual name for the place where the church stood.\n\nObviously it was not an important village. No one in our extended family could give me the Polish names for rural Steinkirche or of Neumarkt Platz in the Silesian metropolis. Had Steinkirche been north, east, west or south of Breslau? In my mind's eye I assumed it to be east-towards Posenmistakenly, so I was to discover. In answer to one of my many questions, I recalled that my mother had once told me that it had taken her about an hour by train to travel to the school she attended briefly in Breslau. It was an important clue.\n\nI then rang my cousin, Peter Erlanger, but neither he nor his older sister could help me. Peter advised me to try to find Steinkirche using my computer's Internet search engine. It was enlightened advice, and was to provide me with a key clue. The website yielded a huge list of entries, mostly concerning stone churches in present-day Germany. But there was also a reference to a 1928 visit by a church official inspecting a number of communities overseen by the Lutheran Church at Strehlen. I had often heard my mother and her sister refer to acquaintances in Strehlen.\n\nThe article about Steinkirche described it as having a 1264 Polish Catholic foundation, on a site where pagan sacrifices had taken place. This seemed to have the ring of truth. The description offered a brief history of the church and gave illustrations of it in various stages of alteration. By the seventeenth century, the place had become Lutheran and in the following 200 years the community's religious confidence expressed itself architecturally, through continual improvements. A church tower with baroque spire was raised and the interior refurbished with an upper-storey balcony with pews on three sides.", + "processing_time": 0.22267775004729629, + "client_elapsed": 0.22350566601380706 + }, + { + "status": "success", + "filename": "01030000000023.pdf", + "markdown": "This description told me that Steinkirche was somewhere in the vicinity of Strehlen. Then, according to Elfriede's stories about walking her animals, ducks, geese and a goat to the railway station to meet visitors, a station once existed near the village. I wondered whether it had survived the bombing. I have seen films of the utter devastation along the Oder River in early May 1945, just before the War in Europe ended. Did the railway still pass Steinkirche? My mother's father had been a railway line pointsman, a signal attendant. From a station close to home he would have undertaken the long journeys his work demanded.\n\nI went back to the old German maps in the National Library and located Steinkirche on one of several contiguous contour maps perhaps designed for military purposes. They covered Lower Silesia in 1938 in·remarkable detail, although such detail also helped obscure the printed names of villages, which were lost in the depictions of miniature hills, rivers, quarries, castles, lakes and even houses.\n\nEventually I did locate the village through this superb map. Steinkirche was off the main road near the second railway station south of Strehlen, probably on a hill, something my mother had never mentioned. If one passed it, one could also locate it as station number two of the seven between Strehlen and Milnsterberg, on the railway running south of Breslau towards the Carpathian Mountains. Then I noted the Polish names for the two townships south of Wroclaw (Breslau). In the Germanto-Polish Gazeteer they are given as Strzelin and Ziebice.\n\nMy intention was to take a train or a car to the new Polish ex-Steinkirche, visit it discreetly, and search the old cemetery for family connections. I wanted to photograph my two-year-old granddaughter beside my own grandfather Friedrich's grave. I wanted to look for other evidence of family history, and just savour the atmosphere of the place. I also wanted to see what had happened to Neumarkt Platz.\n\nIt was difficult to achieve anything in a hurry. In London, my daughter, granddaughter and I visited the office of the Polish Consulate. Tourist brochures were generously given to us, but none of the authoritative road maps of Poland showed the villages between Strzelin and Ziebice. Did our village still exist? And by what name?\n\nAfter flying to Berlin, we set out in a hire car for Wroclaw on 13 September 2003. Beside the Hitler-era Autobahn, there are still extensive forests, between flat farmlands. It was raining when we entered Poland.", + "processing_time": 0.21052479202626273, + "client_elapsed": 0.2113862499827519 + }, + { + "status": "success", + "filename": "01030000000024.pdf", + "markdown": "We received the clear impression from grim customs officials and moneychangers at the border that we had entered a part of the world still not entirely recovered from post-War economic depression. Roadside stands sold plaster garden statues, especially gnomes, and other wares were also for sale, judging by the surreptitious lifting of skirts to reveal totally bare flesh, from women sheltering under their umbrellas. I wondered where they would take their truck driver customers in a place where there seemed to be only road and forest.\n\nAnthea's navigation skills took us promptly to the clean and pleasant Tumski Hotel on the Sand Island near the oldest part of Wroclaw. I was immensely moved when I found that my room overlooked a canal of the Oder. This was a place of which mother had often spoken. Maria on the Sand ( die Sandkirche ) is still there, one of the large old Gothic red-brick churches that escaped bombing.\n\nThat Saturday afternoon, too late for lunch, we sampled Polish beer and vodka. We explored the famous Rynek, the central seventeenth-century market square with its famed Gothic town hall where American soldiers had stolen the gold from the astrological clock. The bombed-out buildings had been restored, but they were too garishly painted to revive a sense of their history. The adjoining salt square now mostly sells flowers.\n\nWe wondered at how few smiling faces there were, and were puzzled by how little German or English anyone spoke. Why was there so little tourism? Only a pair of elegant teenagers had fluent German. We turned down their offers of pornographic pictures and sexual experiences.\n\nWe covered enough of the area to get a strong impression of a oncelively city devastated by War and hastily repaired. These were convenient reconstructions, done without an eye to matching styles.\n\nI was especially anxious to find out where Neumarkt Platz had been. That  evening at the hotel, I kept going to the window and trying to imagine my mother as a young woman taking an evening stroll with a companion along the banks of the Oder. But this was autumn. Thick mists hung above the water. Few people were out walking.\n\nOn Sunday we set out seriously to find the location of the old square. We walked through once-stately streets, past the Metropole Hotel from where Hitler had addressed the crowds, to the Ethnographic Museum. This proved disappointing. The contents of two rooms were a mere", + "processing_time": 0.23531562503194436, + "client_elapsed": 0.23635220795404166 + }, + { + "status": "success", + "filename": "01030000000025.pdf", + "markdown": "gesture in honour of local culture. Few of the artefacts were authentically part of this area. It told us nothing of any interest or with any authority. We wondered whose culture we were looking at.\n\nAt the central railway station, we tried to question officials, in German and English, about the location of Steinkirche. But only Polish was spoken at the information office and other counters. Nor could we locate the correct train line on the information screens.\n\nOn our walk back to the centre of town, past the dilapidated theatre where my mother had attended performances, John spotted another bookshop. Surprisingly it was trading busily on a Polish Catholic Sunday. It sold old maps and books. We found old pictures of Breslau labelled in Polish and English. We found descriptions in both Polish and English of Neumarkt Platz (Novi Targ). Various maps showed clear plans of its location. They also showed the Neptune fountain I had been seeking. For centuries it had a conspicuous place in town maps as a well drawing water from the Oder, whose tributaries flowed together and separated the town into different quarters, spanned by a multitude of bridges.\n\nI was thrilled. Before this find, my family had begun to question whether the fountain had actually existed. 'You and your fountain!' they cried. But I always knew it was there, in my memory and beyond.\n\nWhen we walked to Novi Targ, we found the old houses by the square had been destroyed totally by the War. So, to my disappointment, had the Neptune fountain . In Microcosm , his history of Wroclaw, Norman Davies tells how, after the War, the rubble of Breslau had been removed in trainloads to rebuild Warsaw in its original style. Some fine Breslau buildings left standing by War were even knocked down for their old bricks.\n\nI viewed this horrible information as being akin to the punishment Dante dished out to sinners in his Purgatory. Atonement was to be made only by suffering punishment that fitted the spirit of a crime.\n\nWe then looked for the air-raid shelters in which my grandmother and aunt Else had sheltered from the fire-bombs that rained down on the city in early 1945.", + "processing_time": 0.21926791599253193, + "client_elapsed": 0.22039116703672335 + }, + { + "status": "success", + "filename": "01030000000026.pdf", + "markdown": "Else had told us how phosphorenscence burning on human skin could not be put out, and how a seventeen-year-old soldier, weak from starvation, had been fed at a stranger mother's breast in the bunker before he returned to fight Russian soldiers in the final Breslau street battles. She had told us how a fat man had wedged himself into the shelter's entrance, and had been mown down by the hysterical mob. She had told us how she herself had carried her sick mother across a burning rooftop.\n\nBeneath the reconstructed Novi Targ square, John identified shelters in two places, downstairs bolted against public entry. Plain and ugly highrise public housing of cheap materials now stood around the bare square, where once interesting seventeenth-century merchant houses had stood amid a lively marketplace. People had lived in apartments even before the Communist-style transformations. Before their destruction, the old buildings of Breslau were of stately proportions, made of good material by experienced artisans who valued their talents and who took pride in a town with depth to its history.\n\nNovi Targ now looks much sadder and more neglected than my glossy photos show. Breslau's lively markets that were once a feature of the city, as shown in my photographs of 1905, were relocated by the council in the second half of the twentieth century to a large new market hall. This was allegedly because of the congestion caused in the city's central squares by traders with their cars, animals and stalls.\n\nI was nevertheless deeply moved. This ugly restoration was on ground where my grandmother and her children had walked so many times. Grandmother Emma and my beloved aunt Else had lived there for fifteen years before 1945. My mother had corresponded with them from far away.\n\nHad we stayed longer, we would have enjoyed other moments of pleasure in a city that remains drab, and in which not even the theatre has been restored. The original buildings, and what they stood for, were German. The culture of Silesia before 1945 has not yet been generally acknowledged. It is also part of Polish history. I am sure this will change.", + "processing_time": 0.20857441698899493, + "client_elapsed": 0.20946091698715463 + }, + { + "status": "success", + "filename": "01030000000027.pdf", + "markdown": "\n\nFigure 7. Estimated cumulative damage for impeller blades.\n\nFigure 8. Estimated residual life of impeller blades by the criterion of cracking.\n\n\n\nFigure 9. Estimated residual life of impeller blades at the stage of crack development.\n\n", + "processing_time": 0.906738999998197, + "client_elapsed": 0.9081235830090009 + }, + { + "status": "success", + "filename": "01030000000028.pdf", + "markdown": "between this and the fact that the development of the underlying wave function for the whole universe is unique.\n\nSummarizing:\n\nDefinition 1. A universe U is a chain of states (one state Ut for each moment of time t ), with the property that the transition between adjacent states is always possible.\n\nDefinition 2. A multiverse M is the set of all possible universes U in the sense of Definition 1 together with a probability measure on this set.\n\nIt may of course be said that quantum mechanics should allow for transitions between all kinds of states, although the probability for most such transitions may be extremely small. In this extremely simplified treatment, I will assume that for a given state at a given moment of time t , the dynamical laws will only permit transitions to a very limited number of states at the previous and next moments, which will make the probabilistic part of the investigation particularly simple. However, modifications are called for near the endpoints (the Big Bang and the Big Crunch); see Section 5.\n\nAs it stands, the model presented so far is too simple to generate any results. In fact, there are no observable differences at all between the states, which mean that there are no measurable variables which could be related to the (so far nonspecified) dynamics.\n\nThere are of course many different variables which we can choose to enrich this structure, and which ones to choose must depend on what properties we want to explain. For explaining the second law of thermodynamics, the obvious choice is the entropy.\n\n## 4. Entropy\n\nAccording to Boltzmann, the total entropy of a certain macro-state at a certain time is given by\n\n\n\n\n\nwhere Ω denotes the number of corresponding micro-states and kB is Boltzmann ' s constant.\n\nThis formula was from the beginning derived for simple cases, like an ideal gas. Nevertheless, it does represent a kind of universal truth in statistical mechanics: the number of possible micro-states corresponding to a given macro-state grows exponentially with the entropy. Although there are many complications when one tries to consider the entropy of the universe as a whole, I will still take it as the starting point for the discussion that the entropy (at a given time t ) is an exponential function of the total entropy as in (3). A more difficult question is if and how the constant W may vary with time, but for the purpose of the present paper, I will simply let it be constant.\n\nOne may of course argue that this can only be true when the universe is still quite ordered and the entropy is very far from reaching its maximum. But this is certainly what the situation is like in our universe today, and according to the computations in [10, 11], it would take an almost incredibly long time to reach such a state of maximal entropy. Thus, it will in the following be taken for granted that this time is much longer than the life-span of our universe.\n\nor inversely", + "processing_time": 0.31998991704313084, + "client_elapsed": 0.32165033399360254 + }, + { + "status": "success", + "filename": "01030000000029.pdf", + "markdown": "## 5. The dynamics\n\nThe next step is to construct a model for the dynamics. The idea, which essentially goes back to Boltzmann (see [12]), is that any given macro-state at any given time is extremely likely to develop into a state with higher entropy at the next moment of time, simply because there are so many more states with higher entropy than with lower entropy (compare with (3)). The problem with this in the present situation, however, is that this way of thinking in fact presupposes a preferred direction of time. Otherwise, given that the dynamical laws are time symmetric, why can we not similarly argue that the entropy should also grow when we go backward in time? (compare [9]).\n\nThere have been many attempts to avoid this problem by looking for defects in the symmetries. But my conclusion here is that we must actually accept Boltzmann ' s argument in both directions of time and hence we are led to the following:\n\nPrinciple 1 . At every moment of time t and for every state with entropy S , there are very many ' accessible states ' with higher entropy, both at the previous moment of time t /C0 1 and at the next one t þ 1. On the other hand, the chance for finding such accessible states with lower entropy, both at times t /C0 1 and t þ 1, is extremely small.\n\nThis principle also implies a shift of perspective in the search for time ' s arrow. Rather than trying to find the reason for the asymmetry, we must concentrate on understanding why we cannot observe the symmetric structure of the multiverse as a whole.\n\nAs still one more simplification, let us assume that the entropy can only change by /C6 1 during each unit of time. This assumption, however, has to be modified near the endpoints (BB and BC) for the following reason: it is a very important aspect of this approach to assume that physics during the first and last moments is very different from the rest of the time, since at these moments quantum phenomena can be expected to become global. To model this in a simple way, we can split the life-span of our multiverse up into three parts:\n\n\n\nHere the first and last parts may be called ' the extreme phases, ' which are characterized by the property that transition between very different states can be possible. During the ' normal phase ' in between on the other hand, physics is supposed to behave more or less as we are used to.\n\n## 6. Modeling the dynamics\n\nTo construct a miniature multiverse for computational purposes, one can proceed as follows: first of all, in the very small multiverses studied here, the extreme phases will only last for one single unit of time. Also, for ease of notation, let us put T 1 ¼ m , so that the moments of time can in this context be denoted as\n\n\n\nThe dynamics is specified by randomly choosing for each state at time t with entropy S , K edges to states at time t þ 1 with entropy S þ 1, and similarly K edges to states at time t /C0 1 with entropy S þ 1 (with obvious modifications at the endpoints). In this section, again to make everything as simple as possible, K will be set equal to 2. These random choices are in practice carried out by the random number", + "processing_time": 0.3717265839804895, + "client_elapsed": 0.3732315420056693 + }, + { + "status": "success", + "filename": "01030000000030.pdf", + "markdown": "As for the normal phase, the choice will, to start with, be the simplest possible one: each path is either possible or not, corresponding to the probability weights 1 and 0. During the extreme phases, this assumption is no longer reasonable. Again the model will be extremely simplified, but still it is based on physical intuition and, most importantly, completely time symmetric. Assume that the only types of edges having a non-neglectable chance of occurring during the extreme phase /C0 m /C0 1, /C0 m ½ /C138 are of the following two kinds: The first scenario is that the universe passes through the extreme phase into a state of zero entropy. The other scenario is that it passes into a state with high entropy (equal to 2 m ). Universes of one of these two types will be given the (un-normalized) probability 1 or p , respectively. Here p > 0 should be thought of as a very small number, at least when the size of the model becomes large. During the other extreme phase m , m þ 1 ½ /C138 , near the Big Crunch, we make the completely symmetric assumption.\n\nRemark 3. These assumptions may perhaps seem somewhat arbitrary. And to a certain extent, this may be so. However, they do represent the following viewpoint of what may happen at the full cosmological scale: we may think of the Big Bang and the Big Crunch as states of complete order with zero volume and entropy. Such states can very well be metastable, very much like an oversaturated gas at a temperature below the point of condensation. If no disturbance takes place, such metastable states can very well continue to exist for a substantial period of time. In particular, a low-entropy state can have a very good chance of surviving the intense but extremely short extreme phase. On the other hand, if a sufficiently large disturbance occurs, then the metastable state may almost immediately decay into a very disordered state of high entropy.\n\nIt is not my intension to further argue in favor of this viewpoint here. The main thing in this chapter is to show that completely symmetric boundary conditions at the endpoints may give rise to a broken time symmetry.\n\nThe multiverse now splits up into four different kinds of paths:\n\n- LL: The entropy is low (=0) at both ends ( /C0 m and m ).\n- LH: The entropy is 0 at /C0 m and 2 m at m .\n- HL: The entropy is 2 m at /C0 m and 0 at m .\n- HH: The entropy is high ( ¼ 2 m ) at both ends ( /C0 m and m ).\n\nIf we now denote by NLL , NLH , NHL and NHH the number of paths of the indicated kinds, then with the above assumptions we also get the corresponding probability weights for the corresponding types as\n\n\n\nWe can now consider the following two types of broken time symmetry: Definition 4. A multiverse is said to exhibit a weak broken time symmetry if\n\n\n\nDefinition 5. A multiverse is said to exhibit a strong broken time symmetry if\n\n\n\nBoth these definitions should of course be made more precise when applied to specific models for the multiverse, e.g., by showing that the corresponding limits", + "processing_time": 0.3511438330169767, + "client_elapsed": 0.35289666696917266 + }, + { + "status": "success", + "filename": "01030000000031.pdf", + "markdown": "\n\nequal zero when certain parameters tend to infinity in some well-defined way. However, it is worthwhile at this stage to note their implications for cosmology.\n\nThe strong broken symmetry in Definition 5 actually means that a monotonic behavior of the entropy is far more probable than a non-monotonic one. In the case of a weak broken symmetry, this is not necessarily so; it could very well be that the most probable scenario would be high entropy at both ends. Thus, this is definitely a weaker statement, but it can nevertheless be argued that it can be used to explain the time asymmetry that we observe, referring to a kind of anthropic principle: it is an obvious observational fact that we live in a universe with low entropy at at least one end. If the statement in Definition 4 is fulfilled, then clearly among such scenarios, the monotonic ones (LH and HL) are the by far most probable ones. Thus, since universes with high entropy at both ends would seem to be quite uninhabitable, one can argue that given the existence of an observer, then with almost certainty he must live in a universe with monotonic entropy.\n\nSumming up, both limits above can be used to argue in favor of time asymmetry. Nevertheless, at least to the mind of the author, the strong broken symmetry is the preferable one. This alternative will be further studied in Section 9.\n\n## 8. Numerical computations in the combinatorial multiverse\n\nWith the setup in Sections 6 and 7, we can now use Mathematica or MATLAB to generate instances of the combinatorial multiverse for small values of m and W and then compute the corresponding probability weights PLL , PLH , PHL and PHH . It is important to note that the matrices here can be treated as sparse, rather than as full matrices, which make the computations considerably faster.\n\nIn particular, in the case m ¼ 2 in Section 6 and with a randomly generated dynamics which is manifested by an adjacency matrix A , we can compute the power A 4 and read of the first row, which contains all the information we need about the paths from the state at t ¼ /C0 2 with S ¼ 0. So what do we find?\n\nIn Figure 3 , I have plotted the ratio NLL = NLH þ NHL ð Þ for the cases m ¼ 2 (light gray) and m ¼ 3 (dark gray) for values of W ranging from 3 to 30. What is actually displayed are the mean values of 1000 randomly generated matrices as above for each value of W . Although the picture clearly supports the claim that\n\nFigure 3. The ratio NLL = NLH þ NHL ð Þ as a function of W for the cases m ¼ 2 (light gray) and m ¼ 3 (dark gray) [4].\n\n", + "processing_time": 0.49935541703598574, + "client_elapsed": 0.5008722500060685 + }, + { + "status": "success", + "filename": "01030000000032.pdf", + "markdown": "## Prologue\n\n## Programming and Understanding\n\nOne way to become aware of the precision required to unambiguously communicate a mathematical idea is to program it for a computer. Rather than using canned programs purely as an aid to visualization or numerical computation, we use computer programming in a functional style to encourage clear thinking. Programming forces us to be precise and unambiguous, without forcing us to be excessively rigorous. The computer does not tolerate vague descriptions or incomplete constructions. Thus the act of programming makes us keenly aware of our errors of reasoning or unsupported conclusions. 1\n\nAlthough this book is about differential geometry, we can show how thinking about programming can help in understanding in a more elementary context. The traditional use of Leibniz's notation and Newton's notation is convenient in simple situations, but in more complicated situations it can be a serious handicap to clear reasoning.\n\nA mechanical system is described by a Lagrangian function of the system state (time, coordinates, and velocities). A motion of the system is described by a path that gives the coordinates for each moment of time. A path is allowed if and only if it satisfies the Lagrange equations. Traditionally, the Lagrange equations are written\n\n\n\nWhat could this expression possibly mean?\n\nLet's try to write a program that implements Lagrange equations. What are Lagrange equations for? Our program must take a proposed path and give a result that allows us to decide if the path is allowed. This is already a problem; the equation shown above does not have a slot for a path to be tested.\n\n1 The idea of using computer programming to develop skills of clear thinking was originally advocated by Seymour Papert. An extensive discussion of this idea, applied to the education of young children, can be found in Papert [13].", + "processing_time": 0.21413649996975437, + "client_elapsed": 0.2153752910089679 + }, + { + "status": "success", + "filename": "01030000000033.pdf", + "markdown": "## Functional Abstraction\n\nBut this corrected use of Leibniz notation is ugly. We had to introduce extraneous symbols ( q and ˙ q ) in order to indicate the argument position specifying the partial derivative. Nothing would change here if we replaced q and ˙ q by a and b . 3 We can simplify the notation by admitting that the partial derivatives of the Lagrangian are themselves new functions, and by specifying the particular partial derivative by the position of the argument that is varied\n\n\n\nwhere ∂ i L is the function which is the partial derivative of the function L with respect to the i th argument. 4\n\nTwo different notions of derivative appear in this expression. The functions ∂ 2 L and ∂ 1 L , constructed from the Lagrangian L , have the same arguments as L . The derivative d/dt is an expression derivative. It applies to an expression that involves the variable t and it gives the rate of change of the value of the expression as the value of the variable t is varied.\n\nThese are both useful interpretations of the idea of a derivative. But functions give us more power. There are many equivalent ways to write expressions that compute the same value. For example 1 / (1 /r 1 + 1 /r 2 ) = ( r 1 r 2 ) / ( r 1 + r 2 ). These expressions compute the same function of the two variables r 1 and r 2 . The first expression fails if r 1 = 0 but the second one gives the right value of the function. If we abstract the function, say as Π( r 1 , r 2 ), we can ignore the details of how it is computed. The ideas become clearer because they do not depend on the detailed shape of the expressions.\n\n3 That the symbols q and ˙ q can be replaced by other arbitrarily chosen nonconflicting symbols without changing the meaning of the expression tells us that the partial derivative symbol is a logical quantifier, like forall and exists ( ∀ and ∃ ).\n\n4 The argument positions of the Lagrangian are indicated by indices starting with zero for the time argument.", + "processing_time": 0.4675888330093585, + "client_elapsed": 0.4690404160064645 + }, + { + "status": "success", + "filename": "01030000000034.pdf", + "markdown": "So let's get rid of the expression derivative d/dt and replace it with an appropriate functional derivative. If f is a function then we will write Df as the new function that is the derivative of f : 5\n\n\n\nTo do this for the Lagrange equation we need to construct a function to take the derivative of.\n\nGiven a configuration-space path w , there is a standard way to make the state-space path. We can abstract this method as a mathematical function Γ:\n\n\n\nUsing Γ we can write:\n\n\n\nIf we now define composition of functions ( f ◦ g )( x ) = f ( g ( x )), we can express the Lagrange equations entirely in terms of functions:\n\n\n\nThe functions ∂ 1 L and ∂ 2 L are partial derivatives of the function L . Composition with Γ[ w ] evaluates these partials with coordinates and velocites appropriate for the path w , making functions of time. Applying D takes the time derivative. The Lagrange equation states that the difference of the resulting functions of time must be zero. This statement of the Lagrange equation is complete, unambiguous, and functional. It is not encumbered with the particular choices made in expressing the Lagrangian. For example, it doesn't matter if the time is named t or τ , and it has an explicit place for the path to be tested.\n\nThis expression is equivalent to a computer program: 6\n\n5 An explanation of functional derivatives is in Appendix B, page 202.\n\n6 The programs in this book are written in Scheme, a dialect of Lisp. The details of the language are not germane to the points being made. What is important is that it is mechanically interpretable, and thus unambiguous. In this book we require that the mathematical expressions be explicit enough", + "processing_time": 0.3646048749797046, + "client_elapsed": 0.3662164169945754 + }, + { + "status": "success", + "filename": "01030000000035.pdf", + "markdown": "## 4 Basis Fields\n\nA vector field may be written as a linear combination of basis vector fields. If n is the dimension, then any set of n linearly independent vector fields may be used as a basis. The coordinate basis X is an example of a basis. 1 We will see later that not every basis is a coordinate basis: in order to be a coordinate basis, there must be a coordinate system such that each basis element is the directional derivative operator in a corresponding coordinate direction.\n\nLet e be a tuple of basis vector fields, such as the coordinate basis X . The general vector field v applied to an arbitrary manifold function f can be expressed as a linear combination\n\n\n\nwhere b is a tuple-valued coefficient function on the manifold. When expressed in a coordinate basis, the coefficients that specify the direction of the vector are naturally expressed as functions b i of the coordinates of the manifold point. Here, the coefficient function b is more naturally expressed as a tuple-valued function on the manifold. If b is the coefficient function expressed as a function of coordinates, then b = b ◦ χ is the coefficient function as a function on the manifold.\n\nThe coordinate-basis forms have a simple definition in terms of the coordinate-basis vectors and the coordinates (equation 3.40). With this choice, the dual property, equation (3.41), holds without further fuss. More generally, we can define a basis of one-forms ˜ e that is dual to e in that the property\n\n\n\nis satisfied, analogous to property (3.41). Figure 4.1 illustrates the duality of basis fields.\n\n1 We cannot say if the basis vectors are orthogonal or normalized until we introduce a metric.", + "processing_time": 0.2397986669675447, + "client_elapsed": 0.24115220800740644 + }, + { + "status": "success", + "filename": "01030000000036.pdf", + "markdown": "## 2. General Profile of MSMEs\n\nIn July 2020, the survey established a general profile of the MSMEs interviewed. The respondents updated the interviewers on the status of their business in each subsequent phase. Respondents whose business had permanently closed were only asked the reasons for closing (Section 2.4) and about government assistance programs (Section 7). The demographics of respondents and business characteristics (i.e., the proportions) remained roughly the same across all three survey phases.\n\nBusiness characteristics. Business size was determined by the number of staff at the time of interview. Following Government Decree number 25/ GOV, firms with five or less staff are microenterprises, those with six - 50 staff are small, and those with 51 - 99 staff are medium.\n\nMicro and small enterprises made up most of the respondents. Approximately 58% were microenterprises, 40% were small, and only two\n\nFigure 2.1: Surveyed MSMEs by size across sectors (%)\n\n\n\npercent were medium. The tourism MSME sample included a higher percentage of microenterprises than the other two sectors. All of the tourism and handicraft/ textile MSMEs interviewed were registered, or formal, constituting approximately 71% of the sample. The remainder (agriculture MSMEs) were informal, as they were individual farmers.\n\nThe geographic focus of sampling sought to emulate the concentration of businesses nationwide. Interviewed MSMEs in the tourism and handicraft/ textile sectors were mainly based in Vientiane Capital, Luang Prabang, and Champasack provinces. For the agriculture sector, MSMEs were based in 12 provinces and the capital. Annex 1 provides the locations of respondents who participated in all three phases.\n\nThe tourism sub-sectors interviewed included lodging, restaurants and bars, and tour operators. Most handicraft/textile respondents were involved in production, with the remaining in sales. The main products are silk and cotton products such as bags, clothes, and scarves, bamboo wicker, pottery, carvings, and mulberry paper products. MSMEs interviewed in the agriculture sector focused on the cultivation and trade of cash crops such as vegetables, cassava, banana, sugar cane, tea and coffee, livestock or fish, and rice.\n\nDemographics of respondents. The overall gender ratio of interviewees was slightly skewed towards men (52%). Within the handicraft/textile sector, 80% were women, while the agriculture sector was dominated by male representatives (74%). The tourism sector respondents were 51% men. Most of the interviewees were MSME owners (80%), followed by managers (17%), while the other three percent comprised positions such as accountant, assistant, and deputy manager. More than half (58%) of interviewees were 36 to 55 years old; the youngest respondent was 23 and the eldest was 83.", + "processing_time": 0.46371799998451024, + "client_elapsed": 0.46519695804454386 + }, + { + "status": "success", + "filename": "01030000000037.pdf", + "markdown": "## 3. Impact on Business Operations\n\nThis section investigates the impact of public health measures on business operations. MSMEs were asked about their expectations for recovery and the main effects of COVID-19 on their businesses.\n\n## 3.1. Status of Business Operations\n\nAs shown in Figure 3.1.1, the number of MSMEs 'working as usual' gradually increased over the course of the research period. The impacts of the lockdown from March 30 to May 4, 2020, were starkly felt, with only 30% of the MSMEs 'working as usual, ' while over half (58%) were temporarily completely closed.\n\nIn the agriculture sector, a large majority of MSMEs (93% in July 2020, 98% in October 2020, and 99% in January 2021) were operating normally, though\n\nFigure 3.1.1: Status of operations during each survey phase (%)\n\n\n\nduring the first lockdown period, just over three quarters (77%) were working as usual. In contrast, 63% of firms from the tourism sector and 62% from the handicraft/textile sector were working as usual as of July 2020, rising to 80% of tourism and 82% of handicraft/textile firms as of January 2021 . During the lockdown period, tourism and handicraft/ textile MSMEs were the hardest hit with just 12% and 15% respectively working as usual. As shown in Table 3.1 .1 ., a majority of tourism and handicraft/ textile MSMEs were temporarily closed during the lockdown period. In the handicraft/textile sector, 30% of MSMEs were temporarily closed as of July 2020, reducing to 12% in January 2021. Similarly, in tourism, 27% of businesses were temporarily closed as of July 2020 and that reduced to 18% in January 2021. Figure 3.1.1 and Table 3.1 .1 do not reflect those MSMEs who were permanently closed; this was four in July 2020, 22 in October 2020, and 24 in January 2021. Of these 50 businesses who permanently closed during the research period, 30 were in the tourism sector, 18 in handicraft/textile, and two in agriculture.", + "processing_time": 0.2850177089567296, + "client_elapsed": 0.28655362501740456 + }, + { + "status": "success", + "filename": "01030000000038.pdf", + "markdown": "Figure 6.1.1: Will they fire more staff in the next 2 months - across survey phases (%)\n\n\n\nFigure 6.1.2: Will they fire more staff in the next 2 months - across sectors and survey phases (%)\n\n\n\n## 6.2. Expectations for Re-Hiring Employees\n\nIn July 2020, 81% of the MSMEs that had laid off employees expected to re-hire all of them when the situation improved. This number reduced to 23% in October 2020 and further to just 7% in January 2021. 5 In July 2020, all MSMEs had plans to re-hire at least some of their staff. But in October 2020, 17% said they had no plans to re-hire and another 36% said they didn't know whether they would re-hire or not. In January 2021, 20% said they had no plans to re-hire and another 27% said they did not know. This question was only posed to those who had let staff go since the last survey round, and in October 2020 and January 2021, the base numbers reduced as fewer MSMEs reported letting staff go. In July 2020, 195 MSMEs\n\n5. The question on re-hiring was asked to those who had laid-off employees since the last survey. In the latter two survey rounds, respondents were asked about plans to re-hire staff whom they had let go since the previous interview, whereas in July 2020, they were asked about plans to re-hire staff they had let go since their business was first affected by the pandemic.", + "processing_time": 0.2860355409793556, + "client_elapsed": 0.28783037496032193 + }, + { + "status": "success", + "filename": "01030000000039.pdf", + "markdown": "Figure 9.4.1: Challenges in importing amongst tourism MSMEs who import - all survey phases (%)\n\n\n\nThere were very few tourism MSMEs that exported in each survey round. The base is too small for any conclusive analysis.\n\n## 9.5. Adapting to the New Normal: Changing Business Models\n\nIn all survey phases, several MSMEs in the tourism sector reported changing their business models. In July 2020, 167 tourism MSMEs mentioned that they changed their business model, in October 2020, 223 mentioned the same, and in January 2021, it was 183 MSMEs. Some changed models in more ways than one. The main ways across all phases that MSMEs made changes were:\n\n- Adapting to social distancing;\n\n6. Compared to 38% in July 2020 and 22% in October 2020.\n\n- Devising new ways to reach customers through online markets or social media;\n- Moving into new products and services in high demand during COVID-19;\n- Reducing employee salaries.\n\nCompared to previous survey round results, in January 2021, tourism MSMEs had increasingly shifted towards adapting to social distancing to operate (57%). 6 Starting online marketing remained a popular choice, as nearly a quarter (24%) mentioned it in January 2021, compared to 28% in July 2020 and 31% in October 2020. Reducing employee salaries as an approach reduced considerably in January 2021 at 8% of responses compared to 21% in July 2020 and 24% in October 2020.", + "processing_time": 0.28394187497906387, + "client_elapsed": 0.2855605829972774 + }, + { + "status": "success", + "filename": "01030000000040.pdf", + "markdown": "Thailand, Philippines and Indonesia in particular, identifying known experts at the national, subnational and community level. The survey and interviews with key informants asked key questions to regional experts on violent extremism to ascertain if hostile sentiments espoused are exacerbating insecurities for women.\n\nThe survey was made available in English, Bahasa, Thai and Tagalog. We used the Qualtrics platform to facilitate the ease of dissemination and response from home computers, iPads or mobile phone survey options. Qualtrics, one of the most widely used research platforms, supports the implementation of both large-scale survey and experimental study designs. It is administered online with responses gathered into a central and privacy protected database that only the approved researchers have access to.\n\nThe platform allows for the easy migration of data into various statistical packages, including STATA, the main statistical analysis package that we will use to analyse the data. A limitation of this study is that we were unable to translate the survey in all ASEAN languages, and there is a selection bias in that we are focussing the survey in areas of the region that most experience violent extremism and terrorism. However, through our networks, where possible, we disseminated the survey throughout all ASEAN countries.\n\nIt is important to note the limitations of this six-month study. Although the survey was disseminated among all member states, the majority of expert respondents came from Indonesia, the Philippines and Thailand. While this can be regarded as highly selective rather than representative, it is important to note that Indonesia, the Philippines and Thailand are the countries that continue to face the most pressing threat of ongoing violent extremism and conflict.\n\nThis is with the exception of Myanmar. Given the current political circumstances and challenges posed by COVID-19, on top of the short project time span, it was unfeasible to include Myanmar within the scope of this study. It is also important to note that the data derived from the surveys and interviews were based on the perceptions of experts and key informants, who are involved in peacebuilding, and on P/CVE strategies throughout the region. As a result, it is important to note the subjectivity of responses.\n\nFigure 1: Age by gender of respondents\n\n", + "processing_time": 0.2863292090478353, + "client_elapsed": 0.28799316700315103 + }, + { + "status": "success", + "filename": "01030000000041.pdf", + "markdown": "tweets, videos) inciting violence towards religious minorities, ethnic minorities, the LGBTI community, and women and girls. Forty-four per cent of respondents had 'sometimes' seen extremist social media content inciting violence towards religious minorities, with 31% seeing this content 'very often'.\n\nBoth men and women acknowledged that they had 'sometimes' seen this content on social media (62% and 41%, respectively). Indonesia was the country from which most respondents had viewed this content 'very often' (50%). When collapsing the 'always' and 'very often' categories, 41% of Instagram users had often seen intolerant content, followed by 36% of WhatsApp users and 34% of Facebook users. Among the Twitter users in the sample, 48% had seen intolerant content towards religious minorities.\n\nWhen asked about how often social media content was inciting violence towards ethnic minorities, 46% of respondents had 'sometimes' seen this type of extremist social media content inciting violence towards ethnic minorities whereas only 27% have seen this content rarely or never. Women have seen such content more frequently than men (90%), and Indonesia was the country from which most respondents had seen this content 'very often' (58%). Users of Facebook, WhatsApp and Instagram acknowledged that they had seen this content 'very often' (26%, 31% and 35% respectively).\n\nThirty-nine per cent of respondents acknowledged that they had 'sometimes'' seen social media content inciting violence towards the LGBTI community. Women saw this type of content more frequently than men (84%), and Indonesia was the country from which more respondents saw this content with a higher frequency (53% saw such content 'always' and 'very often'). Participants in the survey observed intolerant content directed towards the LGBTI community. For example, one participant from the Philippines observed that,\n\nThere were instances when women were humiliated in public and on social media after they were labelled as part of the LGBTQ+ community. The comments on posts regarding them were mostly commending their public humiliation (cutting their hair) instead of condemning the act '.\n\nFigure 3: Frequency of viewing extremist social media inciting violence toward women and girls\n\n", + "processing_time": 0.29756549996091053, + "client_elapsed": 0.298887915967498 + }, + { + "status": "success", + "filename": "01030000000042.pdf", + "markdown": "this content 'very often', 71% were from Indonesia and 28.6% were from Thailand. When asked about how often participants had heard of groups expressing the importance of men accompanying women when travelling to conflict zones, more respondents had heard this message with a higher frequency ('always' or 'very often', 37.1%) than those who had rarely or never heard it (34%). Forty-six per cent of respondents from Indonesia heard this message with a higher frequency, followed by the Philippines (38%) and Thailand (15%). When grouping the answer options of 'always', 'very often' and 'sometimes', 66% of respondents said they had heard groups stress the importance of women being accompanied by men when travelling to conflict areas.\n\nFigure 5: Importance of a male guardian accompanying women when travelling to conflict zones\n\n\n\nIn the second part of the survey, using a five-point Likert scale from 'strongly agree' to 'strongly disagree', participants were presented with a series of statements regarding how worried they were about intolerant content being espoused in the offline space by violent ex- tremist groups. Most respondents (77%) agreed (combining both 'strongly agree' and 'agree') that they were worried about intolerance in their communities, particularly respondents from Indonesia and the Philippines. Almost all respondents in the sample (93%) agreed that they were worried about violent extremism in their countries. This appeared to be a general concern among both men and women as 85% of men and 95% of women agreed that they were concerned.\n\nSignificantly, 89% of respondents agreed that religious extremism would impede women's rights. Half of the participants in Indonesia agreed they were concerned that religious extremism would hamper women's rights, 27% in Philippines and 16% in Thailand. Both men (84.6%) and women (89.2%) expressed their concerns on this issue. Furthermore, 91% of respondents agreed that religious extremism prioritizes men's rights over women's rights - 93.1% of women strongly agreed with the statement compared to 6.90% of men.\n\nFor example, one interviewee from Indonesia observed that the teachings of extremism have entered schools, such as high schools, and have also begun to penetrate student organizations. She observed that the teachings 'spread from the Middle East, bringing misogynistic teachings towards women as part of their subjugation strategy'. She acknowledged that it was part of the organizational strategy where women appeared to look empowered:\n\n'However, this is just manipulation; behind it is the practice of misogyny, women's consciousness, their bodies and minds are controlled, even though", + "processing_time": 0.297621582983993, + "client_elapsed": 0.29901704197982326 + }, + { + "status": "success", + "filename": "01030000000043.pdf", + "markdown": "Figure 7: Respondents' reaction to the statement 'I am worried that misogynistic and hostile beliefs espoused by extremist groups result in violence towards women.'\n\n\n\nDuring the COVID-19 pandemic, 70% of respondents agreed that online radicalization and the proliferation of extremist propaganda had increased. Altogether, 76.9% and 92.9% of women agreed with the statement.\n\nOne interviewee from Indonesia noted that:\n\n'COVID has managed to restrict direct meetings to disseminate propaganda, misinformation and disinformation through most government's large-scale restrictions to prevent the virus' spread. However, the tendency to utilize online spaces to disseminate these has increased since the use of online activities is mandatory in various sectors, such as working and education. Most people certainly use online platforms to disseminate false information regarding the outbreak, as well as radical ideas targeted at people, including recruiting them as a part of groups.'\n\nFigure 8: Respondents' view to the statement, 'Online radicalization and the proliferation of extremist propaganda has increased during COVID-1'.\n\n\n\nAnother interviewee from Indonesia observed that:\n\n'(Based on my experience), during 2020-2021 one of the interesting things has been the impact of misinformation and disinformation related to COVID, affecting people's views and attitudes in responding to, preventing and handling of (the virus). At the beginning of the Indonesian government's policy on limiting religious activities in places of worship, this issue caused a strong, adverse reaction among extremist groups, giving rise to a narrative that the", + "processing_time": 0.3009817499550991, + "client_elapsed": 0.3024885829654522 + }, + { + "status": "success", + "filename": "01030000000044.pdf", + "markdown": "## Table of Contents\n\n| Executive Summary | 4 |\n|------------------------------------------------------------------|-----|\n| Legal Framework | 6 |\n| Election Administration | 11 |\n| Civil Society Engagement | 15 |\n| Political Parties, Candidates Registration and Election Campaign | 18 |\n| Media Freedom and Access to Information | 25 |\n| Voter Education and Awareness | 29 |\n| Participation of Marginalized Sectors | 31 |\n| Recommendations | 39 |", + "processing_time": 0.4754056250094436, + "client_elapsed": 0.4765894999727607 + }, + { + "status": "success", + "filename": "01030000000045.pdf", + "markdown": "election integrity. The registration of local election observers runs until 25 May, and the NEC is still reviewing the application of nearly 5,000 observers.\n\nTable: The number of accredited observers as of 28 April 2022 15\n\n| No. | Name of organization | Number of accredited observers |\n|-------|---------------------------------------------------|----------------------------------|\n| 1 | Union of Youth Federations of Cambodia (UYFC) | 17,266 |\n| 2 | Cambodian Women for Peace and Development | 9,835 |\n| 3 | Association of Democratic Students of Cambodia | 711 |\n| 4 | Association of Intellectual and Youth Volunteer | 46 |\n| 5 | Our Friends Association | 27 |\n| 6 | COMFREL | 26 |\n| 7 | Traditional and Modern Mental Health Organization | 15 |\n| | Total | 27,926 |", + "processing_time": 0.5837780840229243, + "client_elapsed": 0.5851677499595098 + }, + { + "status": "success", + "filename": "01030000000046.pdf", + "markdown": "Table: Provisional Results of Registration of Candidates on 8 March 2022 21 and Official Results of Registration of Candidates on 29 April 2022 22\n\n| No. | Political party | Provisional registration result on 7 March | Provisional registration result on 7 March | Official registration result on 29 April | Official registration result on 29 April | Difference in the number of candidates |\n|-------|-------------------------------|----------------------------------------------|----------------------------------------------|--------------------------------------------|--------------------------------------------|------------------------------------------|\n| | | Number of commune/ sangkat | Number of candidates | Number of commune/ sangkat | Number of candidates | |\n| 1 | Cambodian People's Party | 1,652 | 28,008 | 1,652 | 28,008 | 0 |\n| 2 | Candlelight Party | 1,649 | 23,679 | 1,623 | 23,939 | +260 |\n| 3 | Funcinpec Party | 715 | 9,407 | 680 | 9,952 | +545 |\n| 4 | Khmer National United Party | 650 | 8,340 | 596 | 8,815 | +475 |\n| 5 | Cambodian National Love Party | 388 | 4,634 | 315 | 5,050 | +416 |\n| 6 | Cambodian National's Party | 310 | 3,980 | 245 | 3,956 | -24 |\n| 7 | Cambodian Youth Party | 116 | 1,824 | 114 | 1,824 | 0 |\n| 8 | Khmer Will Party | 67 | 1,000 | 58 | 1,050 | +50 |\n| 9 | Cambodian Reform Party | 58 | 823 | 59 | 978 | +155 |\n| 10 | Kampucheaniyum Party | 39 | 642 | 38 | 658 | +16 |", + "processing_time": 1.035562957986258, + "client_elapsed": 1.0372782500344329 + }, + { + "status": "success", + "filename": "01030000000047.pdf", + "markdown": "## ANFREL Pre-Election Assessment Mission Report\n\n| No. | Political party | Provisional registration result on 7 March | Provisional registration result on 7 March | Official registration result on 29 April | Official registration result on 29 April | Difference in the number of candidates |\n|-------|-----------------------------------------------|----------------------------------------------|----------------------------------------------|--------------------------------------------|--------------------------------------------|------------------------------------------|\n| | | Number of commune/ sangkat | Number of candidates | Number of commune/ sangkat | Number of candidates | |\n| 11 | Khmer United Party | 35 | 498 | 30 | 457 | -41 |\n| 12 | Grassroots Democracy Party | 32 | 435 | 32 | 481 | +46 |\n| 13 | Beehive Social Democratic Party | 25 | 425 | 23 | 392 | -33 |\n| 14 | Cambodian Indigeneous Peoples Democracy Party | 19 | 194 | 19 | 202 | +8 |\n| 15 | Ekpheap Cheat Khmer Party | 15 | 175 | 14 | 178 | +3 |\n| 16 | Reaksmey Khemara Party | 7 | 79 | 6 | 88 | +9 |\n| 17 | Khmer Economic Development Party | 4 | 65 | 4 | 64 | -1 |\n| | Total | | 84,208 | | 86,092 | +1,884 |", + "processing_time": 0.8928350829519331, + "client_elapsed": 0.8943086250219494 + }, + { + "status": "success", + "filename": "01030000000048.pdf", + "markdown": "## Filipino Women in Electoral Politics\n\nThe nature and extent of Filipino women's political participation is a product of the country's colonial history, martial law, and democratization post-1986. Historians argue that Spain's strong Catholic traditions ushered in patriarchal norms and practices that were not present in the pre-Hispanic period. National hero, Jose Rizal, has documented this in his 'Letter to the Women of Malolos,' praising the women for advocating their right to education. Historians also found proof of women's contribution to the Philippine revolution (Camagay 1998). Decades later, the suffragist movement ushered in one of the first national issues to have brought Filipino women together. It was a hardfought battle; the movement had to contend with staunch opposition from antisuffragists in the Constitutional Convention that drafted the 1935 Constitution. The reluctance was expected because only 21-yearold Filipino men had been allowed to vote during the time. They framed their opposition based on traditional notions of womanhood and their role in the private sphere, foremost of which is motherhood. Another key argument against female suffrage was the idea that politics is supposed to be 'dirty' and that this would taint families if women took part in politics. The assumptions catered to the age-old public-private divide, strongly suggesting that only men are qualified to occupy the former.\n\nEventually, the 1935 Constitution granted women suffrage on the condition that more than 300,000 women would vote affirmatively in a plebiscite. When signing the law paving the way for the said plebiscite, President Manuel Quezon had this to say to Filipino men: 'Are you going to deprive our women of the opportunity to say how their lives are going to be regulated and is it fair for us to presume that men can always speak in this country for women?' (Official Gazette 1936). In April 1937, more than 400,000 women voted in favor of their right to vote and participate in political life. In 1946 and 1947, Filipinos elected the first woman member of the House of Representatives, and senator, respectively. Nonetheless, data from 1946 to 1992 indicate an uphill climb. For instance, in the 1949 and 1953 elections for the House of Representatives, only one woman was elected out of the 100 positions.", + "processing_time": 0.22165629197843373, + "client_elapsed": 0.22248474997468293 + }, + { + "status": "success", + "filename": "01030000000049.pdf", + "markdown": "The post-World War II period saw women participating in formal politics and even attempting to form a political party and an alliance supporting President Ramon Magsaysay's candidacy for the presidency (He served as president from 1953 to 1957), while the advent of the martial law period in 1972 witnessed feminist movements. Roces (2012, 6) attributes this to the burgeoning student movement and activism, so much so that by the time Marcos declared martial law, women were prepared to take on the resistance. Though inspired by North America's second-wave feminists, Filipino women were also drawn to the era's discourses and contexts, such as the Vietnam War and the civil rights movement.\n\nThe women's movement continued to flourish in the Cory Aquino regime (1986-1992). The democratic transition provided political opportunity structures and venues ensuring women's access to the state and nonstate spheres. The drafting of the 1987 Constitution was one such opportunity. The movement managed to advocate for important provisions paving the way for women's rights legislation from the 1980s to the present. The provision in the 1987 Constitution mandates the state to recognize 'the role of women in nation building and shall ensure the fundamental equality before the law of men and women' (Article 2, Section 14). This provision is said to be unique and is not even found in other countries' charters (Masilungan n.d.).\n\nThe post-Marcos period advanced the participation of women not only in civil society and nongovernment organizations but also in formal politics and bureaucracy. Several women from the movement joined formal politics, while others were invited by the Aquino and Ramos governments (1992-1998) to executive posts. The entry of women activists, NGO leaders, and those from the academe ensured that the new democracy would significantly help push measures promoting women's rights and gender equality. The House of Representative (HOR) and Philippine Commission on Women (PCW)'s 'How to Be a Gender-Responsive Legislator' (2021, 52) listed several recent laws responding to women's empowerment and gender equality.\n\n- Republic Act No. 11313: Safe Spaces Act (April 17, 2019)\n- Republic Act No. 11210: 105-Day Expanded Maternity Leave Law (March 11, 2019)", + "processing_time": 0.21324720804113895, + "client_elapsed": 0.21420354204019532 + }, + { + "status": "success", + "filename": "01030000000050.pdf", + "markdown": "- Republic Act No. 9501: Magna Carta for Micro, Small, and Medium Enterprises (May 23, 2008)\n- Republic Act No. 9262: Anti-Violence Against Women and their Children Act of 2004 (March 8, 2004)\n- Republic Act No. 9208 (May 26, 2003), as amended by Republic Act No. 10364 (February 6, 2013): Anti-Trafficking in Persons Act of 2003\n- Republic Act No. 9178: Barangay Micro Business Enterprises Act of 2002 (November 13, 2002)\n- Republic Act No. 8972: Solo Parent's Welfare Act (November 7, 2000)\n- Republic Act No. 8505: Rape Victim Assistance and Protection Act (February 13, 1998)\n- Republic Act No. 8504: Philippine AIDS Prevention and Control Act of 1998 (February 13, 1998)\n- Republic Act No. 8353: Anti-Rape Law of 1997 (September 30, 1997)\n- Republic Act No. 7877: Anti-Sexual Harassment Act of 1995 (February 14, 1995)\n\nDuring the first Aquino administration (1986-1992), three women sectoral representatives were appointed in Congress. Yet feminist activists such as Teresita Quintos-Deles and Jurgette Honculada's appointments were blocked by the House Committee on Appointments (Abao and Yang 2001, 19).\n\nWhile reliable electoral data during the Marcos regime is unavailable, it is safe to argue that the repressive regime hampered the participation of women in formal politics given the widespread militarization and electoral fraud characterizing the dictatorship. And even with the legal framework guaranteed by the transition, women found it difficult to enter formal politics, despite women's consistently high voter turnout during elections (Table 1).", + "processing_time": 0.22390037501463667, + "client_elapsed": 0.22509775002254173 + }, + { + "status": "success", + "filename": "01030000000051.pdf", + "markdown": "Table 1: Percentage of Government Positions Held by Women During the Presidencies of Corazon Aquino and Fidel Ramos\n\n| Government Position | No. of Seats | Aquino Administration (1986-1992) | Ramos Administration (1992-1998) |\n|---------------------------|----------------|-------------------------------------|------------------------------------|\n| Senate | 24 | 8.3 | 16.7 |\n| House of Representatives | 202 | 9.4 | 10.4 |\n| Cabinet | 20 | 15 | 5.0 |\n| Governor | 73 | 5.4 | 5.4 |\n| Provincial Board Member | 626 | 9.9 | 10.9 |\n| City/Municipal Mayor | 1,578 | 7.4 | 11.2 |\n| City/Municipal Vice Mayor | 1,578 | 6.5 | 14.9 |\n| City Municipal Councilor | 12,406 | 10.5 | N/A |\n\nSource: Tancangco 1991 as cited in Valte (1992).\n\n## Current Situation: 2001-2019\n\nFilipino women are still very much a minority in the formal political sphere. It can also be observed that in executive positions such as the cabinet, few women are appointed, especially during President Fidel Ramos's time, compared to Cory Aquino's administration (Table 1). As mentioned above, the Philippines has made significant strides in legislating for women's rights. However, 35 years after redemocratization and 84 years after the grant of suffrage, participation of women in politics is still a work in progress, as in most countries.\n\nIn 2019, the overall percentage of women in all elective posts in the country was only about 20 percent (PCW 2021), barely reaching the 30 percent international requirement for women's political", + "processing_time": 0.6556080839945935, + "client_elapsed": 0.6568342500249855 + }, + { + "status": "success", + "filename": "01030000000052.pdf", + "markdown": "the way for women to enter the House of Representatives. In 2019, 20 women from party lists have contributed to the increase in female legislators. However, the Party-List Law's implementation has been controversial owing to the entry of political dynasties and traditional politicians. The ideal that it serve as the gateway to political power of disadvantaged groups has been lost due to vague provisions in the law and subsequent Supreme Court decisions. The party list system has also been 'co-opted by the traditional political system or have become the training ground for future influence-peddling traditional politicians' (Tigno 2019). In other words, it has deviated from the idea of proportional representation practiced in other countries. Dynastic families took advantage of the system's flaws and used them to field relatives, including some women, to expand their political power. However, recent interviews with legislators from progressive party lists demonstrate a better understanding of women's issues than some representatives elected from single-member districts (Encinas-Franco 2022, 157).\n\nTable 2. Women-Members of the House of Representatives per Region, 2007-2019\n\n| REGIONS | 2007-2010 | 2010-2013 | 2016-2019 |\n|------------------------------|-------------|-------------|-------------|\n| National Capital Region | 9 | 8 | 5 |\n| Cordillera Autonomous Region | 1 | 2 | 1 |\n| I - Ilocos Region | 1 | 5 | 4 |\n| II - Cagayan Valley | 1 | 3 | 5 |\n| III - Central Luzon | 8 | 9 | 11 |\n| IVA - CALABARZON | 4 | 2 | 11 |\n| IVB-MIMAROPA | 1 | 1 | 1 |\n| V-Bicol Region | 2 | 0 | 4 |\n| VI - Western Visayas | 2 | 3 | 3 |\n| VII - Central Visayas | 2 | 2 | 3 |\n| VIII - Eastern Visayas | 3 | 2 | 3 |", + "processing_time": 0.7726587079814635, + "client_elapsed": 0.7740508749848232 + }, + { + "status": "success", + "filename": "01030000000053.pdf", + "markdown": "| IX - Zamboanga Peninsula | 4 | 2 | 4 |\n|----------------------------|-----|-----|-----|\n| X-Northern Mindanao | 2 | 2 | 2 |\n| XI - Davao Region | 1 | 3 | 5 |\n| XII - SOCCSKSARGEN | 2 | 2 | 1 |\n| XIII - Caraga | 1 | 3 | 3 |\n| ARMM | 1 | 2 | 2 |\n| Party-List | 10 | 15 | 20 |\n| TOTAL (w/ Party- List) | 55 | 66 | 88 |\n| TOTAL (w/o Party- List) | 45 | 51 | 68 |\n\nSource: HOR 2022. Computations made by the authors.\n\nOverall, the abovementioned situation indicates that Filipino women have gradually increased their presence in formal politics. In Asia, the Philippines and Taiwan are the only countries above the global average of 24.5 percent of women in parliament (Liu 2021). However, challenges remain as the increased participation of women comes from dysfunctional features of the country's political system: political dynasties and the Party-List law. Nonetheless, not all women from these groups are necessarily averse to women's issues.\n\n## Barriers to Filipino Women's Participation\n\nPrevious studies have identified political, economic, and cultural factors that impede women's participation in politics. However, context still matters since the perception of women's role in societies and the evolution of political systems differ. The following section examines some of these barriers.\n\nThe Philippine electoral system's 'first-past-the-post' electoral type, coupled with the lack of well-developed political parties, inhibits women's entry into politics. Encinas-Franco (2021) argues that '[w] ithout party discipline and institutionalized rules within parties, one", + "processing_time": 0.6725473340484314, + "client_elapsed": 0.6740781670087017 + }, + { + "status": "success", + "filename": "01030000000054.pdf", + "markdown": "EFB = empty fruit bunch. Source: Murdiyatmo (2021).\n\nHowever, the main obstacle with producing second-generation bioethanol is the cost of enzymes. Murdiyatmo (2021) stated that, at the pilot scale, the cost of enzymes is very high, i.e. Rp18,000 per litre of ethanol produced. Some studies provided the cost of enzymes in the US. NREL (2011), for instance, estimated that the cost of enzymes to produce second-generation bioethanol in the US was equivalent to around $0.34 per gallon or Rp1,529 2 per litre of ethanol produced, i.e. less than one-tenth of the cost of enzymes in Indonesia.\n\nIn the next sub-sections, we analyse biodiesel and bioethanol introduction in Indonesia. In each sub-section, we first discuss the current supply and demand of the biofuels and the related conventional transport fuel. Second, we estimate the conventional transport fuel, i.e. gasoline and diesel fuel demand in road transportation during the period of 2020 -50. Third, we estimate the volume of pure biofuel (fatty acid methyl ester [FAME]/biodiesel and bioethanol) needs in scenarios, and in the amount of feedstock, i.e. CPO in biodiesel and molasses in bioethanol needed to meet the demand required in each scenario.\n\n## 2.1. Diesel and biodiesel use\n\nThe consumption of diesel fuel in Indonesia, used primarily for road freight transport, fluctuated between 2010 and 2019 as it correlated with the economic condition (Table 2.8). Diesel consumption in the industry sector decreased significantly, around 10% per year between 2010 and 2019, resulting from the shift to another energy type. During the same period, with some fluctuations, diesel production increased at 3.6% annual growth rate, while imports were cut by half from nearly 13 billion litres in 2010 to nearly 6.5 billion litres in 2018. The biodiesel blending rate increased from only 1% in 2010 to nearly 20% in 2019, representing a growing level of mandatory biodiesel programmes. Apparently, diesel imports dropped with the increase of the biodiesel (B100) blending rate.\n\n2 Assuming average inflation rate of 2% between 2011 and 2021 and an exchange rate of $1 = Rp14,131.", + "processing_time": 0.2869239160208963, + "client_elapsed": 0.28879166598198935 + }, + { + "status": "success", + "filename": "01030000000055.pdf", + "markdown": "pharmaceutical products (Casson, Muliastra, and Obidzinski, 2014). The development of biofuels from biomass has raised interest in expanding the palm oil plantation area. This is because palm oil is the main raw material for biodiesel in Indonesia.\n\nCPO is the primary product derived from the red fruit of the oil palm, while palm kernel oil, derived from the fruit's nut, is considered a secondary product. Oil palm biomass includes EFBs, palm mesocarps fibres (PMFs), PKS, oil palm fronds, oil palm trunks, as well as palm oil mill effluent (POME). Oil palm fronds account for 70% of the total oil palm biomass produced, while EFB accounts for 10% and oil palm trunks account for only about 5% of the total biomass produced.\n\nAccording to Harahap et al. (2019), Indonesia housed 11 million hectares (Mha) of oil palm plantations and produced 31 million tonnes (Mt) of CPO in 2015. Oil extraction from palm fruits occurs in palm oil mills. One tonne (t) of CPO production results in nearly 5 t of solid biomass waste, including EFBs, PKSs, PMFs, and POME; see Figure 3.3. This implies that, in 2015, Indonesia produced around 155 Mt of palm biomass residue.\n\nFigure 3.3. Biomass Use in Oil Palm Industry\n\n\n\nSource: Harahap et al. (2019).\n\nRegarding the potential for biodiesel, the previous Table 2.10 projected the demand of FAME for both B30 and B40 mandates using the volume of diesel fuel needed for the road transport sector. As shown, the FAME demand will reach 19.1 million kL in 2040 for the B30 mandate and 25.4 million kL for the B40 mandate. The current FAME production capacity is 12.85 million kL, indicating a shortage of supply to meet the 2040 demand for both the B30 and B40 mandates.\n\nIncreasing the capacity for FAME production implies that the demand for domestic CPO will continue to increase. The estimated CPO required to produce FAME in 2040 is also calculated above (Table 2.11). The estimated CPO consumption for B30 and B40 mandate in 2040 will be 17.5 and 23.4 million tonnes, respectively. This was calculated based on", + "processing_time": 0.6711709579685703, + "client_elapsed": 0.6735559169901535 + }, + { + "status": "success", + "filename": "01030000000056.pdf", + "markdown": "scheme helped the biomass power capacity to increase by more than double in 7 years. Under the FIT scheme, biomass fuels for power generation are grouped into six categories.\n\n- General wood: sawmill residues, import wood such as pellets and chips, palm kernel shell (PKS) and palm trunk\n- Liquid biomass: palm oil\n- Unutilised wood: domestic thinned wood\n- Construction wood waste: wood waste salvaged from construction and other wood materials\n- Waste materials and other biomass: pruned branched, paper, food waste, waste cooking oil, and black liquor\n- Biogas: methane derived from sewage sludge, manure, and food waste.\n\nWhile inexpensive biomass sources such as wood waste from construction and waste materials, were the main fuels under the RPS, the domestic unutilised wood and the general wood whose tariff rates are set higher increased specifically (Figure 4.1, 4.2).\n\nFigure 4.1. Approved Capacity under the FIT Scheme\n\n\n\nFIT = feed-in-tariff.\n\nNote: Liquid biomass approved under the FIT scheme between FY2012 and FY2017 is included in general wood and no liquid biomass has been approved since FY2018.\n\nSource: METI (2021a).", + "processing_time": 0.5892202500253916, + "client_elapsed": 0.5914707920164801 + }, + { + "status": "success", + "filename": "01030000000057.pdf", + "markdown": "Figure 4.2. Operating Capacity under the FIT Scheme\n\n\n\nFIT = feed-in-tariff.\n\nSource: METI (2021a).\n\nThe newly approved capacity has stagnated lately because some strict measures reduced the accumulated idle capacity in the revised FIT Act of 2017. For instance, developers are required to have entered into the grid connection agreement with a utility company for an FIT approval and to submit a business plan for assessment of feasibility and sustainability. As a result, the approved biomass power capacity is about 160MW on average in FY2018 and FY2019.\n\nA recent change in the FIT scheme is that new projects of biomass co-firing with coal in the category of unutilised wood, general wood, and construction wood waste are no longer eligible for the FIT scheme from FY2019. 4 The data collected after implementation of the FIT scheme revealed that the generation costs of these biomass co-firing with coal are lower than the estimated costs of conventional biomass power plants in terms of capital expenditures, operation and maintenance, and fuels. Hence, biomass co-firing with coal does not have a rationale to receive support through the FIT scheme since it could make profits without it. For reference, Figure 4.3 illustrates a biomass co-firing ratio of the major power utilities' coal-fired power plants. Nearly half of the coal-fired power plants co-combusted biomass in FY2019 and most of them are less than 1% ratio of biomass.\n\n4 Biomass of waste materials co-firing with coal is not eligible for the FIT scheme from FY2021.", + "processing_time": 0.6524100420065224, + "client_elapsed": 0.6542353329714388 + }, + { + "status": "success", + "filename": "01030000000058.pdf", + "markdown": "## 3. Perspective of supply and demand balance of wood pellets and cost structure in Japan\n\nAccording to a survey taken by the Japan Woody Bioenergy Association in FY2018 (from April 2018 to March 2019) with 55 biomass power generators, more than half of fuel for biomass power generation is domestically produced wood biomass at present in Japan in terms of weight (Figure 4.5).\n\nFigure 4.5. Breakdown of Biomass Power Generation Fuel in Japan\n\n\n\nPKS = palm kernel shell.\n\nNote: The share of fuel calculated in terms of biomass fuel weight ('Wood pellets', 'Construction wood waste', 'Waste materials', 'Others': tonne; others: dry tonne).\n\nSource: Depicted by IEEJ based on Japan Woody Bioenergy Association (JWBA), 2020.\n\nWhen translating the survey result into energy form, it is estimated that, within biomass power generation using wood biomass ('Unutilised wood', 'General wood', and 'Construction wood waste'), around 30% of input fuel is met by import biomass fuel (Figure 4.6).", + "processing_time": 0.5122105000191368, + "client_elapsed": 0.5142165839788504 + }, + { + "status": "success", + "filename": "01030000000059.pdf", + "markdown": "Figure 4.6. Input Biomass Fuel for Each Type of Biomass Power Generation\n\n\n\nPKS = palm kernel shell.\n\nHeat value used: Domestic logs and wood chips: 19.4 MJ/kg; Domestic wood pellets, Import pellets, chips: 15.5 MJ/kg; PKS: 18 MJ/kg; Construction wood waste, Other waste, and Others: assuming the same with wood pellets.\n\nSource: Depicted by IEEJ based on Japan Woody Bioenergy Association, 2020.\n\nAccording to Japan's trade statistics, its import of wood pellets has increased around 16 times from 2014 to 2019. Viet Nam and Canada are the largest suppliers of Japan's wood pellet imports (Figure 4.7). On the other hand, domestic wood pellet production stayed almost the same over the same period (Figure 4.8).\n\nFigure 4.7. Wood Pellets Import\n\n\n\nSource: Trade Statistics of Japan.", + "processing_time": 1.0279051670222543, + "client_elapsed": 1.0302638750290498 + }, + { + "status": "success", + "filename": "01030000000060.pdf", + "markdown": "Figure 4.8. Domestic Wood Pellets Production\n\n\n\nSource: Forestry Agency, Ministry of Agriculture, Forestry and Fishery (MAFF), 2020.\n\nApplications of wood pellets in Japan include power generation, boilers, stoves, agriculture use, and others. Although the trade statistics do not specify the usage of the imported wood pellets, according to the Japan Wood Pellet Association (JPA), most are used for power generation.\n\nThe price of domestic wood pellets for power generation has a wide range. According to a survey of domestic wood pellet manufacturers undertaken by JPA in 2020, the average price of domestic wood pellets for power generation is around 14,000~29,000 ¥/tonne, while according to the Trade Statistics of Japan, the average cost, insurance, and freight (CIF) price of imported wood pellets is around 18,000 ¥/tonne in 2020 (Figure 4.9).\n\nFigure 4-9. Average Cost, Insurance, and Freight Prices of Wood Pellets and Wood Chips\n\n\n\nAverage price = import value/import tonne.\n\nSource: Estimated by IEEJ based on Trade Statistics of Japan.", + "processing_time": 0.9289062079624273, + "client_elapsed": 0.9310941669973545 + }, + { + "status": "success", + "filename": "01030000000061.pdf", + "markdown": "- iii. Looking at cost items, the cost of raw woods procurement will be highest share at 42%, followed by labour cost at 35%, electricity cost of the fabrication department at 10% (refer to figure 5-2). For this analysis, $35 per tonne is assumed for raw wood costs and this assumption will be crucial to maintain the economics of this business model.\n- iv. This business model will be operating cost-oriented not capital cost-oriented (refer to figure 5.1); thus, management of raw wood cost, labour cost, and electricity cost is essential. Few variations of capital cost will not affect this business seriously.\n- v. Assumed selling price of wood pellet is $100 per tonne and appropriate.\n\nFigure 5.1. Operating Cost Structure by the Three Departments of A Company\n\n\n\nSource: Author.\n\nFigure 5.2. Operating Cost Structure by the Cost Items of a Company\n\n\n\nSource: Author.", + "processing_time": 0.5558171250158921, + "client_elapsed": 0.5584430409944616 + }, + { + "status": "success", + "filename": "01030000000062.pdf", + "markdown": "## 1. Shipping as a vector for marine IAS\n\n## List of Philippine Ports is in Appendix 3\n\nShipping remains as the only scientifically documented pathway for marine biological invasion in the Philippines with the introduction and invasion of the South American mussel Mytella strigata (Vallejo et al. 2017). This invasive was first recorded from the South Harbor of Manila in 2014 and has been known to have spread throughout Manila Bay, to Lingayen Gulf, Aparri, Cagayan and Batangas Port in the Philippines. It has since then reported in Singapore, Taiwan, Hong Kong, India, Malaysia, the Gulf of Thailand, and Sri Lanka.\n\nFigure 2 . Foulers from the South Harbor of Manila Bay. Photo by SAILS-PORTEC Manila Bay\n\n\n\nMytella was likely spread through hull fouling and ballast water release. In the Philippines its spread to other ports was likely through small vessel hull fouling as the first adult samples were recorded from the fishing boat FV Ocean in 2015 which was docked in Manila Bay. An intensive monitoring of the South Harbor area in 2014 resulted in the detection of the first cohort of recruits in Manila Bay. The likely first introduction by ballast water release or by biofouling was in December 2013 and the first cohort of recruits was detected in July 2014.\n\nThere are at least 15 marine non-indigenous species ship hull fouling recorded from Manila Bay's South Harbor (Vallejo et al. 2019; Trinidad et al 2017.) Only Mytella is considered invasive enough to have wide scale ecological and economic impacts. The most numerous species is the wellstudied Hydroides elegans , which is a known ship fouler with a present pantropical distribution.", + "processing_time": 0.529693458986003, + "client_elapsed": 0.5323117920197546 + }, + { + "status": "success", + "filename": "01030000000063.pdf", + "markdown": "The other potentially invasive fouler is the tropical American Mytilopsis sallei and M. adamsi which has been recorded invasive in Singapore, Australia, Thailand among other regions. While they are recorded from the Manila South Harbor, there is no evidence that it is invasive as it exists in low abundances.\n\nFigure 3. Non-indigenous macrofoulers from Manila Bay with IAS, Mytilopsis sallei and Mytella strigata (=charruana). (From Trinidad et aL 2019)\n\n\n\nNewer estimates (2021) on the number of possible IAS in Manila Bay is likely more than 30 species based on more intensive biofouling ecological monitoring and the use environmental DNA in detecting species. When research started in 2006 on IAS in Manila Bay, 3 species were initially observed.", + "processing_time": 0.48754875001031905, + "client_elapsed": 0.48981704202014953 + }, + { + "status": "success", + "filename": "01030000000064.pdf", + "markdown": "estuarine influenced areas. Batangas, Cebu and Iloilo are located very near to protected areas and tourism areas. Batangas is within the center of the center of global marine biodiversity while Cebu is in the Mactan key biodiversity area. Manila has the highest number of foreign shipcalls while Cebu has the highest domestic shipcalls and second to Manila in international shipcalls.\n\nTable 1. Top 10 ports in the Philippines in shipcalls (2020 data from PPA, CPA and SBMA)\n\n| PORT | SHIPCALLS | SHIPCALLS |\n|----------------|-------------|-------------|\n| | Foreign | Domestic |\n| MANILA | 2454 | 6,125 |\n| CEBU | 1138 | 79,500 |\n| BATANGAS | 958 | 13,196 |\n| SUBIC | 313 | 136 |\n| CAGAYAN DE ORO | 137 | 3,159 |\n| DAVAO | 750 | 17,807 |\n| ILOILO | 212 | 24,381 |\n| GENERAL SANTOS | 112 | 704 |\n| ZAMBOANGA | 40 | 41,27 |\n| LUCENA | 74 | 4,428 |\n\nThe port of Manila has been documented to have a significant number of possible IAS. The ongoing SAILS-PORTEC research program has detected IAS in Davao, Cebu and Matnog ports. These ports are adjacent to specific oil tanker pathways/routes. In Luzon where the refineries and oil storage facilities are located such as Batangas, are at higher risk. These loading ports are at high risk for IAS/MNIS and these are located near to international ports.\n\nThe shipcall statistics in Table 1 represent the year 2020, when the COVID 19 pandemic caused a global and domestic maritime transport slowdown. The average reduction in shipcalls is around 40%. Nonetheless, Manila and Cebu are likely the main ports that need to be closely monitored for potential IAS bioinvasion. In 2018, before the COVID-19 pandemic, Manila was experiencing port congestion with a report that ships may stay at berth for five days (Wallis, 2019). This will increase the risks for biofouling. Based on the 2021 statistics from the PPA, the average berthing time has been reduced to 1 day. This is a result of less shipping traffic due to the pandemic.", + "processing_time": 0.7608408749802038, + "client_elapsed": 0.7632674999767914 + }, + { + "status": "success", + "filename": "01030000000065.pdf", + "markdown": "Figure 6. Mytella strigata biofouling green mussel farms in Bacoor City, Cavite, Manila Bay Photo from https://businessmirror.com.ph/2020/02/17/fake-tahong-invades-bacoor-mussel-farms/\n\n\n\n## 5. Natural dispersal\n\nDispersal by purely natural means is not included as a pathway of biological invasions (Gaston 1996). Examples include range expansion by flight or any other medium of natural locomotion or transport. However if human created or crafted material is involved in rafting dispersal of IAS, then this may be considered as a case of biological invasion. The 2011 Great East Japan earthquake generated a large tsunami that caused an unprecedented biological transoceanic rafting event from the northwestern Pacific coastline of Japan towards North America on the eastern Pacific(Carlton et al. 2017). Millions of human made objects from small plastics to large docks and whole ships were cast adrift in the Pacific (Murray et al. 2018). This provided a substrate for biofoulers. Large debris could carry up to 20 to 30 mega-species of biofoulers (Carlton et al. 2017). These biofouled debris can constitute an IAS risk (Therriault 2017).\n\nWhile a tsunami is a relatively rare event, a more common one is fouler dispersal by rafting on coastal currents of floating plastic debris, wood and, bamboo. Marine litter often originate from", + "processing_time": 0.9566532919998281, + "client_elapsed": 0.9601908749900758 + }, + { + "status": "success", + "filename": "01030000000066.pdf", + "markdown": "consumption onsite or offsite. Food Service Establishments (FSE) refers to the business engaged in the Food Service Industry. For purposes of the survey, the FSE is segmented into:\n\n- full-service restaurants, with full menu and waiting service;\n- limited-service restaurants or quick service restaurants (QSR), with full menu but pay-as-you-order such as fast food or turo-turo type 8;\n- cafes/bars/pop-ups (selected menu with few chairs and tables);\n- kiosks and stalls (purely retail, to be consumed elsewhere); and\n- catering or 100% home delivery.\n\nFull-service restaurants, limited-service restaurants and cafes/bars/pop-ups may also offer 'to go' or 'take away' services.\n\nFigure 1. FSI Segmentation\n\n\n\n- b. Plastic. The Baseline Study looked into the extent of Plastic use of FSEs in Dasmariñas City. Plastics are categorized by food grade. 9 The six food grades are 1) Polyethylene Terephthalate: clear, tough plastic such as soft drinks, juice and water, (2) High Density Polyethylene: white or colored plastic such as milk containers, (3) Polyvinyl Chloride: hard rigid clear plastic such as cordial bottles; (4) Low Density Polyethylene: soft, flexible such as squeezable bottles; 5) Polypropylene: hard but flexible plastics such as microwave ware; takeaway containers, some yogurt or jam containers and hinged lunch boxes, and (6) Polystyrene: rigid, brittle plastics such as small tubes and margarine or butter container. See Figure 1 . Plastic litter found in the rivers are of categories 1-6. There are also other plastics that do not fall under food grade 1-6.\n\n8 Filipino word for restaurants where a menu of cooked or ready-to-eat food are on display and clients point to their choice of food and pay as they take their food to their tables or ask for take-out packaging.\n\n9 Food grade plastics refer to plastic containers, tools or other supplies made of plastics that are cleared to be used for food preparation, handling, and service.", + "processing_time": 0.5229481249698438, + "client_elapsed": 0.5252313330420293 + }, + { + "status": "success", + "filename": "01030000000067.pdf", + "markdown": "very much interested to know more about plastics as well as the plastics types that can be reused or recycled. Almost all respondents (87.8% ) are interested in approaches to recycle plastics. 87% (20) are interested in improving waste management systems in their LGUs.\n\n- d. Awareness of Plastics Ordinance. About 68% of respondents know that there is a city ordinance on plastics, while 52% are aware of the provincial plastic ordinance. 9% do not know of any ordinance and 17% do not know whether or not there is a plastic ordinance. In the same way, only 70% knows of the implementation of an ordinance regulating or prohibiting Single Use Plastics. 30% of the respondents are not aware of the ordinance.\n\n## 6.2 Waste Management\n\n- a. Waste Management Fee Collection. At the Barangay level, only 5 respondent barangays - Sampaloc II, H-2, Salitran-II, San Roque-Sta. Cristina II, and Salawag - collect waste management fees.\n- b. Waste Management Budget. Majority of the respondents (44%) do not know the budget allocation of their LGUS for waste management. 12% of respondents replied that their LGUs have no allocation for waste management while 32% of respondents replied that their budget allocation is below 5% of their LGU budget. Only 8% of respondents replied that their budget allocation for waste management is between 10-20% if the LGU budget. See Figure 20 .\n- c. Waste Collection and Segregation. For 70% of the respondents, wastes are collected by the city government. 35% responded that barangays collect their wastes and still,\n\nFigure 20. Percentage of LGU Budget Allocated for Waste Management\n\n", + "processing_time": 0.2647626670077443, + "client_elapsed": 0.2662011249922216 + }, + { + "status": "success", + "filename": "01030000000068.pdf", + "markdown": "The World Bank/PEMSEA Assessment of Policies and Regulations to Guide Country Dialogue at National Level to Reduce Plastic Waste in the Philippines indicated:\n\n'Despite these efforts, there seemed to be very limited information that shows the effectiveness of the bans on reducing plastics and litter, or even diversion from landfills in the country. For the majority of LGUs in the country, however, there seemed to be no clear documentation and reporting of progress and updated waste data possibly due to the difficulty and complexity of data generation and assessment. Another possible constraint is that the scope of the LGU ordinances vary and covered different kinds of SUPP, including the exemptions, which makes integration of the various reports, if available, a challenge.'\n\nThe World Bank/PEMSEA report also recommended that a baseline assessment be conducted to obtain a better understanding which SUPP are the most prevalent and problematic in the Philippines and to also identify the sources and extent and impacts of mismanagement.\n\n- b. Extended producer responsibility (EPR). EPR schemes use a combination of regulatory approaches to extend manufacturers' responsibility for single-use plastic products throughout their life cycle, including to the end-of-life stage. These schemes are aimed at decreasing the overall environmental impact from a product and its packaging. The primary responsibility under EPR lies with the producer, who makes design and marketing decisions. In most European countries, product manufacturers are charged a fee for every piece of packaging they put onto the market based on the reusability or recyclability of the packaging, supported by technical analysis. These fees are intended to cover some or all of the costs of collection, sorting and recycling. Since the recycling of plastic packaging costs more than it yields, companies will benefit from a more costeffective system of packaging.\n- c. Regulated Storage, Manufacture and Use of plastics. India required its states to enforce existing rules on the storage, manufacture, and use of some single-use plastics in lieu of a nationwide ban. Meanwhile, the Department of Environment and Natural Resources (DENR) is yet to issue a list of non-environmentally accepted products (NEAP) as provided in Republic Act 9003 or the Ecological Solid Waste Management Act, passed a decade ago. This will include single use plastics in all product forms per technical advice of the Department of Science and\n\nFigure 27. Soft drinks can with the message 'Recycle Me'\n\n", + "processing_time": 0.3700097909895703, + "client_elapsed": 0.37146525003481656 + }, + { + "status": "success", + "filename": "01030000000069.pdf", + "markdown": "## Replace\n\n- l. Replace Plastics with Recyclable Materials. Plastics can be replaced by material made from polypropylene, a material type that is 100% recyclable. However, recyclable materials should have a forward linkage - link to a recycler who is willing to take on the recyclables. Paper-based wrappers are another alternative for bagels and sandwich papers. Containers and packaging can use plastics with a certain percentage of recycled content and designed to be recyclable or reusable. Highly recyclable packaging is of little benefit if it is not disposed of correctly. The success of a recyclable package is an equal demand from recycling companies through improved recyclability of packaging and investments in efficient recycling facilities and systems. This requires investment and innovation since quality and availability are still often a stumbling block for companies to use recycled plastic. The recyclability of plastic packaging can often be improved by:\n- choosing a common type of plastic (such as PE, PP or PET);\n- choosing a common color (white or transparent); and\n- avoiding combinations of materials, such as plastic windows in cardboard packaging. Watermarking technology is also being developed so that packaging can be more easily recognized by sorters.\n\n## Trash\n\n- m. Waste Segregation and Segregated Bins. Shakey's Philippines implementation of waste segregation and 3R (Reduce, Reuse, Recycle) in its corporate office is one good testament of compliance to RA 9003. The country's premier pizza restaurant has installed 'Stop Before You Drop' trash bins for the implementation of company-wide proper waste management. The bins are labeled to indicate the different types of waste to aid in proper disposal and culture development of its employees. Waste collected are weighed on a daily basis to aid in monitoring wastages and to map out more waste management initiatives. 56\n\n## n. In-store Sorting and Recycling Bins.\n\nMcDonalds has installed sorting and recycling points in select restaurants in its markets. It also improved its recycling bin signage to make the recycling process easier to understand. McDonald's Germany, Austria, Czech Republic and Slovakia on the other hand, collect customer waste to sort for recycling. initiatives. 57\n\nFigure 32. In-store Sorting and Recycling Bins, McDonalds\n\n\n\n56 https://www.shakeyspizza.ph/images/asm-2021/PIZZA\\_ASM\\_2020\\_Report.pdf\n\n57 https://corporate.mcdonalds.com/corpmcd/our-purpose-and-impact/our-planet/packaging-and-waste.html", + "processing_time": 0.3161702079814859, + "client_elapsed": 0.31830487499246374 + }, + { + "status": "success", + "filename": "01030000000070.pdf", + "markdown": "## two meetings are related to the initial meeting of VNR and as particular human rights focus. 73\n\n\n\nDiagram 2\n\nParticipation of Institutions in the VNR Meeting of Indonesia 2021. 74\n\n## The distribution of participating institutions in VNR-related meetings are as follows:\n\n\n\nDiagram 3\n\nDistribution of Participating Institutions within VNR Meeting of Indonesia 2021. 75\n\n74 Data is processed based on: ibid., 332-345.\n\n75 Data is processed based on: Kementerian PPN / Bappenas, 'Annexes Indonesia's VNR 2021' (n. 68) , 332-345.", + "processing_time": 0.7504136660136282, + "client_elapsed": 0.7521797919762321 + }, + { + "status": "success", + "filename": "01030000000071.pdf", + "markdown": "be used as a good opportunity to learn from each other and increase the capacity of human rights institutions in various countries. 94\n\nWhat works in other countries, can be learned and developed according to the situation in Indonesia. 95 Partnerships can be carried out formally through a memorandum of understanding or with a partnerships agreement for potential strategic partners. 96\n\n## 3.2.6. SDGs Dissemination in Social Media\n\nInformation dissemination in the digital era is closely related to the use of social media. Therefore, the dissemination of the SDGs through social media platforms owned by the Komnas HAM needs to be optimized as a way to increase public participation to be active as 'agents' of the Komnas HAM in Indonesia. To be able to achieve this, the community needs to first receive education about the SDGs to clearly understand the focus of each goal and its derivatives. Once there is a fairly good understanding at the level of the general public, especially those who interact with the Komnas HAM's social media, an easier way to report SDGs related to human rights violations can be formulated.\n\nThe Komnas HAM, for example, has used social media Instagram, Twitter, and YouTube. There has been an increase in the frequency of Instagram social media uploads from 2019-2020 from 111 uploads in 2019 to 198 uploads in 2020. The variety of content uploaded by the Komnas HAM on Instagram is also increasingly diverse with the following details:\n\nDiagram 4 Distribution of @komnas.ham Instagram Content (2019-2020)\n\n\n\nIf observed from the Komnas HAM's Instagram account within the 2019-2020 period, the SDGs have only been mentioned explicitly twice in the following contents:\n\n94 See also Komnas HAM, 'The NHRI Practice and Experience in Indonesia, Kyrgyzstan, and Palestine\n\nin Supporting Sustainable Development Goals Achievements' (n. 93).\n\n95 Ibid.\n\n96 Ibid.", + "processing_time": 0.27887858398025855, + "client_elapsed": 0.28066820796811953 + }, + { + "status": "success", + "filename": "01030000000072.pdf", + "markdown": "\n\nDiagram 5\n\nDistribution of Komnas HAM's YouTube Content (2019-\n\n2020)\n\nAs of 1 December 2021, the Komnas HAM's YouTube channel has 2,290 subscribers with 185,676 total views. In the 2019-2020 period, content that specifically discusses the SDGs explicitly cannot be found on the Komnas HAM's YouTube. Nevertheless, on 15 December 2021, the Tanggap Rasa Podcast with the title of 'Podcast #EP32: SDGs dan Anak Muda' (Translation: 'Podcast #EP32: SDGs and Youth') has been broadcast and can increase the awareness and understanding of the citizen on the SDGs, especially towards young generations.\n\nFigure 4\n\n\n\nKomnas HAM's YouTube channel as of 1 December 2021", + "processing_time": 0.7855137920123525, + "client_elapsed": 0.7874201670056209 + }, + { + "status": "success", + "filename": "01030000000073.pdf", + "markdown": "In this content, DPN Argentina provides a brief explanation of the SDGs and the 2030 Agenda action plans, and most importantly, their role in advancing the 2030 Agenda through the SDGs Monitoring and Evaluation Program with a focus on certain thematic areas. These focuses allow DPN Argentina to investigate through monitoring and preparing reports on the development of public policies and actions of organizations responsible for compliance with the SDGs, as well as proposals, and recommendations to strengthen related processes.\n\nFurthermore, DPN Argentina also regularly uploads commemorations of days related to the SDGs by also including the SDGs logo in each of these uploads. Examples of such greetings are as follows:\n\n\n\nFigure 6\n\nDPN Argentina Content: World Health Day Celebration (7 April 2021). 98\n\n98 DPN Argentina, 'Día Mundial de la #Salud', accessed on 5 December 2021,https://twitter.com/D PNArgentina/status/1379765916259483648.", + "processing_time": 0.6381774169858545, + "client_elapsed": 0.6395938339992426 + }, + { + "status": "success", + "filename": "01030000000074.pdf", + "markdown": "Thailand, Malaysia, and Singapore. In these three countries, per capita GDP fell between 4 percent to 7 percent. 3\n\nFigure 1.2. Per capita GDP growth in 2020\n\n\n\nSource : World Bank (2022a)\n\nIt is also noteworthy that in two of these major destination countries - Thailand and Malaysia - the most-affected sectors were also ones heavily reliant on migrant workers. In Thailand, affected sectors include manufacturing, construction, agriculture, fishing, seafood processing, domestic work, and hospitality (United Nations Thematic Working Group, 2019; ILO, 2020). In Malaysia, migrant workers were, in 2019, especially prevalent in manufacturing (705,000), construction (435,000), services (306,000), plantation (282,000), agriculture (160,000), and domestic work (127,000) (Wahab, 2020a; Theng, Noor and Khalidi, 2020).\n\nThe construction sector in Malaysia crashed in the second quarter of 2020 and did not experience growth again until the second quarter of 2021, before suffering negative growth again the next quarter after a COVID-19 resurgence. Accommodation and dining establishments which includes many tourism-related jobs, fared even worse. Furthermore, wholesale trade and related activities in Malaysia have not recovered to pre-pandemic levels, even after growing in the first two quarters of 2021. In Thailand, the construction sector avoided a massive output decline similar to Malaysia's, although it did decline in the first quarter of 2020. However, manufacturing, accommodation, and wholesale trade in Thailand all suffered large contractions due to travel restrictions, supply chain disruptions, and weak aggregate demand, and, despite some recovery in the second quarter of 2021, remain well below prepandemic levels (Table 1.1).\n\n3 The Philippine economy was hit hardest because of the length and severity of the movement restrictions imposed in the country (Olanday and Rigby, 2020).", + "processing_time": 0.30045379197690636, + "client_elapsed": 0.3019763339543715 + }, + { + "status": "success", + "filename": "01030000000075.pdf", + "markdown": "2020 and 2021, and, for approximately half of AMS, working hours lost were higher in 2021 compared to 2020 (Figure 1.3). The disruptions in global supply chains because of travel and transport restrictions hit some AMS particularly hard because of supply needs from other countries.\n\nDespite these tremendous job losses, many countries also experienced labour shortages due to previously unprecedented demand for certain products, such as rubber gloves in Malaysia and for fishery products in Thailand. The return of migrant workers to their home countries contributed to significant labour shortages (Lee and David, 2021; Sriring and Staporncharnchai, 2021). 4 COVID-related movement restrictions caused many workers to withdraw from the labour force (especially women) and labour force participation rates declined in most countries. 5 This was the case for Indonesia, Malaysia, the Philippines, and Viet Nam (Figure 1.4). According to the ILO (2021c), female employment in AMS in 2020 was 3.9 percent lower than the expected level, which is markedly less than the 2.7 percent figure for male employment. 6 The impact of the pandemic on employment is evident in lower labour force participation, lower working hours, and higher unemployment rates in most countries (Figure 1.5).\n\nFigure 1.3. Decline in weekly working hours compared to 2019 (percent)\n\n\n\nSource\n\n: ILO (2022a)\n\n4 There are of course long-standing reasons for the labour shortages in these sectors, which accounts for their high reliance for migrant workers, including poor working conditions, that is prone to abuse, and lack of attractiveness for local workers (Looi, 2020; Ng, 2020; ILO, 2015).\n\n5 McKinsey Global Institute (2020) estimates that at the beginning of the pandemic, women accounted for more than half of total job losses from COVID-19 though they made up only two-fifths of the global labour force. This is because they are overrepresented in sectors hardest hit by the pandemic: accommodation and food services; retail and wholesale trade; and other services, such as arts, recreation, and public administration.\n\n6 This is equivalent to saying there is greater increase in unemployment or inactivity for women compared to men. According to the report, one reason is the increase in unpaid care responsibilities for women as schools closed (ILO, 2021c).", + "processing_time": 0.27132537501165643, + "client_elapsed": 0.27286587498383597 + }, + { + "status": "success", + "filename": "01030000000076.pdf", + "markdown": "Figure 1.6. Alien temporary work permits, Thailand\n\n\n\nSource : Department of Employment, Thailand (2022)\n\nFigure 1.7. Non-citizen population in Malaysia (in thousands)\n\n\n\nSource : Department of Statistics, Malaysia (2022). Figure for 2021 is an estimate.\n\nFigure 1.8. Singapore foreign workforce stock (in thousands)\n\n\n\nSource : Compilation by Manpower Research & Statistics Department (Ministry of Manpower, Singapore, 2022).", + "processing_time": 0.27020708296913654, + "client_elapsed": 0.27173158299410716 + }, + { + "status": "success", + "filename": "01030000000077.pdf", + "markdown": "decline in 2020 in absolute numbers and as a percentage of 2019 deployment (Figure 1.9b). 9\n\nFigure 1.9b. Deployment of Overseas Foreign Workers by sex, new hires only (in thousands)\n\n\n\nSource : Philippine Statistics Authority (2022)\n\n## 1.5. Migrant Workers More at Risk of COVID-19 Infection\n\nCOVID-19 infection among migrants appears to be higher than among non-migrant groups (Hintermeier et al., 2020). Migrant workers are disproportionately exposed to COVID-19 because of the nature of their work and their living conditions. Many migrant workers performed essential services, including jobs in healthcare, selected manufacturing, transportation, logistics, construction, and maintenance, which continued during periods of movement restrictions (OECD, ADBI and ILO, 2021). Many migrant workers also have less access to personal protective equipment and testing and treatment facilities (OECD, ADBI and ILO, 2021). The lack of access was especially true for undocumented migrants.\n\nAdditionally, migrant workers employed in plantations far away from urban centres had limited access to information and testing. High rates of infection were also linked to overcrowded housing conditions, including shared facilities and sleeping areas, which increase the risk of transmission (ASEAN MP , 2021). Many workers in processing or assembly plants worked in conditions where physical distancing was rarely observed.\n\nIn Malaysia, out of 2,188 positive cases recorded nationwide on 25 November 2020, 1,511 were foreign workers employed by Top Glove Corporation Bhd., one of the world's largest personal protective equipment (PPE) manufacturers ( The Straits Times , 2020; Ngui, 2020). Many other migrant workers were employed as delivery agents, public transport drivers, or restaurant waiters, and are in constant contact with the general public. Infection risk is also higher\n\n9 Keeping in mind that for 2020 the figures are only up to October of the year.", + "processing_time": 0.2695546660106629, + "client_elapsed": 0.27083449997007847 + }, + { + "status": "success", + "filename": "01030000000078.pdf", + "markdown": "Figure 1.10. Migrant remittances inflows (in US$ billion)\n\n\n\nSource : World Bank and KNOMAD (2021)\n\nTable 1.4. Growth in migrant remittance inflows\n\n| AMS | Average Annual Growth | Average Annual Growth | Average Annual Growth | Average Annual Growth | Average Annual Growth | Remittance inflows in 2020 (US$ Million) |\n|-------------|-------------------------|-------------------------|-------------------------|-------------------------|-------------------------|--------------------------------------------|\n| AMS | 2000-2004 | 2004-2009 | 2009-2014 | 2014-2019 | 2019-2020 | Remittance inflows in 2020 (US$ Million) |\n| Cambodia | 7.5% | -0.7% | 50.6% | 6.7% | -16.6% | 1,272 |\n| Indonesia | 9.4% | 29.5% | 4.7% | 6.4% | -17.3% | 9,651 |\n| Lao PDR | 4.0% | 115.7% | 38.0% | 9.5% | -10.6% | 265 |\n| Malaysia | 18.6% | 7.1% | 6.9% | 0.7% | -11.2% | 1,454 |\n| Myanmar | 2.7% | -14.1% | 102.7% | 5.4% | -7.1% | 2,250 |\n| Philippines | 10.6% | 11.7% | 7.5% | 4.2% | -0.7% | 34,913 |\n| Thailand | -0.9% | 18.6% | 11.4% | 4.6% | -1.2% | 8,067 |\n| Viet Nam | 11.5% | 21.1% | 14.8% | 7.2% | 1.2% | 17,200 |\n\nSource : World Bank and KNOMAD (2021)\n\nIn the Philippines, of the returning Filipino migrant workers in 2020, 55 percent earned a monthly income of between PHP20,000 and PHP50,000, and 19 percent earned between PHP5000 and PHP20,000. Before their return, 50 percent reported remitting amounts ranging from PHP10,000 to PHP20,000 (US$200 to US$400) monthly. It is highly unlikely that the families of these migrant workers would have savings to rely on after they lost their jobs. Additionally, 83 percent of these workers were still unemployed after three months, resulting in a 60 percent drop in household income for 48 percent of the returned migrant workers.", + "processing_time": 1.0189552499796264, + "client_elapsed": 1.0208150839898735 + }, + { + "status": "success", + "filename": "01030000000079.pdf", + "markdown": "Jailed for Doing Business\n\n## Executive Summary\n\n6\n\nI ndia suffers from 'regulatory cholesterol' that is getting in the way of doing business. The legislations, rules and regulations enacted by the Union and State governments have over time created barriers to the smooth flow of ideas, organisation, money, entrepreneurship and through them the creation of jobs, wealth and GDP.\n\nThe presence of hostile clauses in these laws, rules and regulations has grown since Independence, surviving three decades of economic reforms initiated in 1991. The biggest challenges come from the continuance of imprisonment as a tool of control. As automation increases in the coming years, the pre-Independence 1940s-style administrative controls meant to protect labour will prove counter-productive in 21 st -century India.\n\nThere are 1,536 laws that govern doing business in India, of which 678 are implemented at the Union level. Within these laws is a web of 69,233 compliances, of which 25,537 are at the Union level. These compliances need to be communicated to the governments through 6,618 annual filings, 2,282 (34.5 percent) at the Union level and at the states, 4,336.\n\nThese changes in compliance requirements occur constantly and add to business uncertainty. In the 12 months up to 31 December 2021, there have been 3,577 regulatory changes;", + "processing_time": 0.2662419999833219, + "client_elapsed": 0.26760883402312174 + }, + { + "status": "success", + "filename": "01030000000080.pdf", + "markdown": "Jailed for Doing Business\n\n## III. Regulatory cholesterol\n\nT his report defines 'regulatory cholesterol' as the policy actions of the three arms of the State, i.e. the executive, the legislature, and the judiciary, using the instruments of legislations, rules, regulations or orders, to create or raise barriers to a smooth flow of ideas, organisation, money and most importantly, the flow of the entrepreneurial spirit. In India, a wrong political choice in the early decades of Independence has created a policy fraternity that shuns data and causalities and leans on rhetoric and ideologies to frame economic policies. Inflation in the 1970s, for instance, was not caused by hoarders and speculators; it was a matter of supply and demand. 'Excoriating, coercing, or imprisoning the hoarders and speculators changes nothing in terms of creating new supply,' write Vijay Kelkar and Ajay Shah. 28 'The economic theory of people hostile to economic forces is wrong.'\n\nBy taking one policy tool -imprisonment - this report highlights the excesses of overregulation and the resultant regulatory cholesterol while doing business in India. Although the biggest constituency at the receiving end of these laws is that of entrepreneurs running forprofit firms and corporations, this regulatory overreach also impacts not-for-profits such as schools and hospitals-both necessary institutions for India with a huge demand. Step\n\n16", + "processing_time": 0.26898316701408476, + "client_elapsed": 0.27039337501628324 + }, + { + "status": "success", + "filename": "01030000000081.pdf", + "markdown": "TABLE 22: COMMERCIAL LAWS WITH MORE THAN 100 IMPRISONMENT CLAUSES\n\n| Law | Union/State rule | Imprisonment clauses |\n|-------------------------------------------------------------------------------------------------------------------------------|--------------------|------------------------|\n| Arms Act, 1959 and Arms Rules 2016 | Union | 152 |\n| Food Safety &Standards Act, 2006& Food Safety and Standards (Licensing and Registration of Food Businesses) Regulations, 2011 | Union | 123 |\n\nSource: TeamLease Regtech\n\nTABLE 23: IMPRISONMENT CLAUSES IN ENVIRONMENT, HEALTH AND SAFETY LAWS\n\n| Imprisonment term | Number of clauses | Number of laws |\n|-------------------------------|---------------------|------------------|\n| Less than 3 months | 150 | 35 |\n| 3 months to less than 1 year | 199 | 14 |\n| 1 year to less than 3 years | 326 | 16 |\n| 3 years to less than 5 years | 357 | 22 |\n| 5 years to less than 10 years | 147 | 27 |\n| More than 10 years | 0 | 0 |\n\nSource: TeamLease Regtech\n\nNOTE: The inconsistency in number of laws is because a single law could have multiple clauses on criminality; it could have a few clauses of less than three months and few of between three and five years.", + "processing_time": 0.8304553330526687, + "client_elapsed": 0.8322076670010574 + }, + { + "status": "success", + "filename": "01030000000082.pdf", + "markdown": "TABLE 28: BREAKDOWN OF IMPRISONMENT CLAUSES IN STATE LAWS\n\n| Imprisonment terms | Number of clauses | Percentage of all states | Percentage of total |\n|-------------------------------|---------------------|----------------------------|-----------------------|\n| Less than 3 months | 4,448 | 21.3% | 17.0% |\n| 3 months to less than 1 year | 4,806 | 23.0% | 18.4% |\n| 1 year to less than 3 years | 9,766 | 46.7% | 37.4% |\n| 3 years to less than 5 years | 834 | 4.0% | 3.2% |\n| 5 years to less than 10 years | 1,021 | 4.9% | 3.9% |\n| More than 10 years | 20 | 0.1% | 0.1% |\n\nSource: TeamLease Regtech\n\nTABLE 29: STATES WITH MORE THAN 1,000 IMPRISONMENT CLAUSES\n\n| State | Number of clauses | GSDP (In Rs lakh crore) | GSDP (In $ billion) |\n|-------------|---------------------|---------------------------|-----------------------|\n| Gujarat | 1469 | 15.6 | 200.4 |\n| Punjab | 1273 | 5.3 | 70.2 |\n| Maharashtra | 1210 | 26.3 | 351 |\n| Karnataka | 1175 | 15.4 | 205.9 |\n| Tamil Nadu | 1043 | 16.3 | 217.4 |\n\nSources: TeamLease Regtech, and Reserve Bank of India for GSDPs\n\nExchange rate: Rs 75 to USD", + "processing_time": 0.9962440420058556, + "client_elapsed": 0.9978879590053111 + }, + { + "status": "success", + "filename": "01030000000083.pdf", + "markdown": "## TABLE 35: UNION-STATE BREAKDOWN OF IMPRISONMENT CLAUSES BY CATEGORIES\n\n| Category | Number of clauses in Union laws | In percent | Number of clauses in State laws | In percent |\n|--------------------------------|-----------------------------------|--------------|-----------------------------------|--------------|\n| Commercial | 529 | 10.1% | 817 | 3.9% |\n| Environment, Health and Safety | 834 | 15.9% | 345 | 1.7% |\n| Finance &Taxation | 41 | 0.8% | 888 | 4.2% |\n| General | 75 | 1.4% | 360 | 1.7% |\n| Industry Specific | 2979 | 56.9% | 1200 | 5.7% |\n| Labour | 534 | 10.2% | 17285 | 82.7% |\n| Secretarial | 247 | 4.7% | 0 | 0.0% |\n\n## TABLE 36: THREE CASE STUDIES ON MANUFACTURING COMPLIANCES*\n\n| | Small | Medium | Large |\n|------------------------------------|---------|----------|---------|\n| Total Applicable Compliances | 669 | 3,109 | 5,796 |\n| Compliances with imprisonment | 461 | 2,172 | 4,085 |\n| Percentage of imprisonment clauses | 69% | 70% | 70% |\n\n## TABLE 37: BREAKDOWN OF IMPRISONMENT CLAUSES IN MANUFACTURING CASE STUDIES*\n\n| | Small | Medium | Large |\n|------------------------------|---------|----------|---------|\n| Less than 3 months | 25 | 82 | 185 |\n| 3 months to less than 1 year | 187 | 699 | 1,220 |\n| 1 year to less than 3 years | 178 | 1,070 | 1,964 |\n| 3 years to less than 5 years | 59 | 245 | 505 |\n| 5 years to 10 years | 12 | 76 | 211 |", + "processing_time": 1.3309864170150831, + "client_elapsed": 1.3328064170200378 + }, + { + "status": "success", + "filename": "01030000000084.pdf", + "markdown": "## TABLE 38: THREE CASE STUDIES ON NBFC COMPLIANCES*\n\n| | Small | Medium | Large |\n|------------------------------------|---------|----------|---------|\n| Total applicable compliances | 784 | 1,188 | 1,693 |\n| Compliances with imprisonment | 154 | 362 | 622 |\n| Percentage of imprisonment clauses | 20% | 30% | 37% |\n\n## TABLE 39: BREAKDOWN OF IMPRISONMENT CLAUSES IN NBFC CASE STUDIES*\n\n| Range | Small | Mid | Large |\n|------------------------------|---------|-------|---------|\n| Less than 3 months | 10 | 42 | 82 |\n| 3 months to less than 1 year | 67 | 203 | 373 |\n| 1 year to less than 3 years | 50 | 58 | 68 |\n| 3 years to less than 5 years | 8 | 40 | 80 |\n| 5 years to 10 years | 19 | 19 | 19 |", + "processing_time": 0.8829348330036737, + "client_elapsed": 0.884442874987144 + }, + { + "status": "success", + "filename": "01030000000085.pdf", + "markdown": "\n\n## Restrictions on Land Ownership by Foreigners in Selected Jurisdictions\n\nJune 2023\n\nLL File No. 2023-022255 LRA-D-PUB-002612", + "processing_time": 0.2657304580206983, + "client_elapsed": 0.26677833299618214 + }, + { + "status": "success", + "filename": "01030000000086.pdf", + "markdown": "## Restrictions on Land Ownership by Foreigners in Selected Jurisdictions\n\nStaff of the Global Legal Research Directorate\n\n## I. Introduction\n\nThis report, prepared by the research staff of the Law Library of Congress, surveys 39 jurisdictions regarding whether, and if so how, they restrict ownership of land by foreigners. 1 The jurisdictions surveyed were among those with the highest gross domestic product according to 2021 World Bank data, selected to ensure broadly representative coverage. 2\n\nWe identified 10 countries that do not restrict land ownership by foreigners: Belgium , France , Germany , Ireland , Japan , the Netherlands , Norway , Portugal , Sweden , and the United Kingdom .\n\nWe found that the following countries do not permit foreign ownership of land, although exceptions may apply in some cases or other rights to land may be acquired: China , Indonesia , Nigeria , Philippines , and Thailand .\n\nAmong the other jurisdictions surveyed, some have restrictions that apply to different types of land, including agricultural, residential, and commercial land. Other types of restriction are based on the location of the land, such as near the border or military establishments. Some jurisdictions restrict particular categories of foreigners from land ownership. Some require special permission or approval for foreigners before they can acquire land.\n\nOwnership of agricultural land by foreigners is restricted by some provinces of Canada , and by Egypt , India (restricted for diplomatic personnel, nonresidents of Indian origin and nonresident citizens without registration), Iran , Poland (permit required), and Russia . Argentina , Brazil , and Turkey restrict ownership of rural or local land to a percentage of the total land of the local jurisdiction.\n\nArticle XVII of the General Agreement on Trade in Services (GATS) obligates members to provide national treatment to other members, i.e., 'treatment no less favourable than that it accords to its own.' 3 If land ownership restrictions result in less favorable treatment of foreigners, GATS\n\n1 The surveyed jurisdictions are Argentina , Australia , Austria , Belgium , Brazil , Canada , Chile , China , Egypt , Finland , Germany , Greece , India , Indonesia , Iran , Ireland , Israel , Italy , Japan , Mexico , the Netherlands , New Zealand , Nigeria , Norway , Philippines , Poland , Portugal , Russia , Saudi Arabia , South Africa , South Korea , Spain , Sweden , Switzerland , Taiwan , Thailand , Turkey , United Arab Emirates , and the United Kingdom .\n\n2 World Bank Databank, Gross Domestic Product 2021 (Jan. 15, 2023), https://perma.cc/GP7Y-Z8K8.\n\n3 General Agreement on Trade in Services (GATS), Apr. 15, 1994, Marrakesh Agreement Establishing the World Trade Organization, Annex 1B, art. XVII, 1869 U.N.T.S. 183, 33 I.L.M. 1167 (1994), https://perma.cc/Z89YSEVS.", + "processing_time": 0.2932944579515606, + "client_elapsed": 0.2954054579604417 + }, + { + "status": "success", + "filename": "01030000000087.pdf", + "markdown": "members should specify this in their schedule of specific commitments. 4 Reservation of the ability to lease or own land to nationals is one such treatment; therefore, it should be listed in the schedule as a limitation on national treatment. 5 This applies to services that the GATS covers. 6\n\nSome jurisdictions do not list foreign land ownership on their schedules, but restrict it for national security or similar interests. 7 Such jurisdictions include Australia and Finland (national interest), Chile and Greece (border area), Russia (national security), and Spain (zones of interest to national defense and the military). Several other jurisdictions that also restrict ownership for national security purposes have entered restrictions on their GATS schedules. Such jurisdictions include Argentina and Mexico (border area), Iran (sensitive areas), South Korea (military bases and installation protection zones), Taiwan (lands within fortified and military areas and adjacent to the national frontiers), and Turkey (designated military zones).\n\nThere are other various restri ctions on foreigners' land ownership. Figure 1 below shows in simplified format the surveyed jurisdictions that impose particular categories of restrictions. On page 4, a color-coded map sets forth which jurisdictions permit foreign acquisition, prohibit it, or impose restrictions. A Comparative Summary Table beginning on page 5 presents the essential findings of our study for each jurisdiction. Lastly, the textual surveys for each jurisdiction provide further detail.\n\n4 Id. art. XX.\n\n5 Julia Nielson & Daria Taglioni, A Quick Guide to the GATS and Mode 4 , OECD, World Bank, IOM Seminar on Trade and Migration (Nov. 12-14, 2003), at 11, https://perma.cc/B8XW-LNZ4.\n\n6 World Trade Organization, The General Agreement on Trade in Services (GATS): Objectives, Coverage and Disciplines , Question 3 , https://perma.cc/4J7Y-WAG7 . It states, '[t]he GATS applies in principle to all service sectors, with two exceptions.'\n\n7 See GATS art. XIV General Exceptions.", + "processing_time": 0.2744497079984285, + "client_elapsed": 0.27588862500851974 + }, + { + "status": "success", + "filename": "01030000000088.pdf", + "markdown": "## Comparative Summary Table\n\n| Jurisdiction | GATS XVII Reservation (1994) | Foreign Ownership Permitted | Restrictions on Foreign Ownership | Foreign Ownership Reporting Requirements |\n|----------------|--------------------------------|-------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------|\n| Argentina | Y | Y | Prohibition on ownership of property that contains or borders large and permanent bodies of water and of land in border security zones. Rural land can only be acquired upon certificate being granted (total percentage must not exceed 15% of the territory, in which shares of nationals of one country must not exceed 30%; maximum limit per foreigner; certain long-term residents exempted). | |\n| Australia | N | Y | Approval is needed from the Treasurer if the acquisition constitutes a 'significant action,' including acquiring an interest in different types of land where the monetary threshold is met for that type of land. The Treasurer may prohibit a significant action that is found to be contrary to the national interest. | Acquisitions of residential and agricultural land by foreign persons must be reported to the relevant government agency. |\n| Austria | Y | Y | Prior authorization required with exceptions; authorization may be refused if the acquisition contradicts national public policy interests. | |\n| Belgium | N | Y | None. | |\n| Brazil | Y | Y | Acquisition of rural property by an alien individual or company, including Brazilian companies controlled by foreigners, may not exceed 50 modules; foreign ownership of rural areas may not exceed a quarter of the surface of the municipalities, and ownership | |", + "processing_time": 0.6791220000013709, + "client_elapsed": 0.6802543749799952 + }, + { + "status": "success", + "filename": "01030000000089.pdf", + "markdown": "| Jurisdiction | GATS XVII Reservation (1994) | Foreign Ownership Permitted | Restrictions on Foreign Ownership | Foreign Ownership Reporting Requirements |\n|----------------|--------------------------------|-------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------|\n| | | | by persons of same nationality must not exceed 40% of the quarter. | |\n| Canada | Y | Y | Prohibition on ownership of residential property with exceptions; some provinces also restrict ownership, including of agricultural land. | |\n| Chile | N | Y | Prohibition on acquisition of public lands within 10 kilometers from the border and favorable military report required for acquisition of land 5 kilometers from the coast; nationals of bordering countries and legal persons with their principal place of business in one of those countries cannot obtain rights to real estate located totally or partially in the border area. | |\n| China | N(2001) | N | No individuals, domestic or foreign, can privately own land. The state grants land use rights to land users for a certain number of years. Foreigners can obtain such land use rights, own residential houses and apartments, or incorporate foreign-invested enterprises to invest in real estate. | |\n| Egypt | Y | Y | Prohibition on ownership of agriculture lands, land in Sinai Peninsula; otherwise, permitted to own up to two properties, up to 4,000 square meters, for residential purposes; no disposition for 5 years; approval required to acquire land in tourist areas; joint ownership with an Egyptian who has majority | |", + "processing_time": 0.7002731249667704, + "client_elapsed": 0.7017173750209622 + }, + { + "status": "success", + "filename": "01030000000090.pdf", + "markdown": "| Jurisdiction | GATS XVII Reservation (1994) | Foreign Ownership Permitted | Restrictions on Foreign Ownership | Foreign Ownership Reporting Requirements |\n|----------------|--------------------------------|-------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------|\n| | | | right required to acquire desert lands. No restrictions on lands in Investment Zones, Technological Zones, or Free Zones. | |\n| Finland | N | Y | Prior approval for a foreigner's purchase of certain businesses may be required when it includes land purchase and the purchase of business or land interferes with vital interests for Finland; prior approval from the Government of Åland is required for acquisitions within the autonomous region of Åland. | |\n| France | N | Y | None. | |\n| Germany | N | Y | None. | |\n| Greece | N | Y | Prior approval required for purchase by non-European Union and non-European Free Trade Association natural and legal persons of real estate located in border areas. | |\n| India | N | Y | Prohibition on acquisition of land by citizens of Pakistan, Bangladesh, Sri Lanka, Afghanistan, China, Iran, Nepal, and Bhutan, except for one residential property for self-occupation and one property for carrying out self- employment for long-term visa holders residing in India who are citizens of Afghanistan, Bangladesh or Pakistan and belong to minority religions in those countries, subject to conditions; nonresident foreign nationals not of Indian origin, except for inheritance from a resident; and of agricultural land by diplomatic personnel, | |", + "processing_time": 0.7372395840357058, + "client_elapsed": 0.7384981660288759 + }, + { + "status": "success", + "filename": "01030000000091.pdf", + "markdown": "This book's approach is premised on a simple assumption: because behavioral economics is foremost a 'test-and-learn' field of scientific inquiry that evolves according to experimental outcomes and practical, policy-orientated applications of the knowledge garnered from these outcomes, so too should students test-and-learn. Studying and practicing behavioral economics should occur simultaneously, which, in turn, suggests a course taught more according to a practicum approach than in a traditionally styled lecture format. As such, the book's information and lessons are presented in a succinct and precise format.\n\nThe goal of this textbook is to help students experience behavioral economics through actual participation in the same experiments and economic games that have served as the foundations for, and shaped the contours of, the field. With the help of this book, students have the opportunity to learn behavioral economics firsthand and, in the process, create their own data and experiences. They will learn about themselves-about how they make private and public choices under experimental conditions-at the same time as they learn about the field of behavioral economics itself. They will be both the subjects and students of behavioral economics. What better way to learn?\n\n## HOMO ECONOMICUS VS. HOMO SAPIENS\n\nFor ease of reference and exposition, we henceforth refer to the type of individual construed by the traditional rational-choice model as Homo economicus , a peculiar subspecies of human beings that is unfailingly omniscient, dispassionate, and self-interested when it comes to making choices. Homo sapiens , on the other hand, represents the rest of us-the often-flawed reasoners and sometimesaltruistic competitors who are prone to making decisions based primarily on emotion and heuristics. 1 , 2\n\n## THE TEXTBOOK'S DIFFERENT SECTIONS\n\nThe textbook consists of four sections that, taken together, portray in full the eclectic methodologies comprising the field of behavioral economics. Sections 1 and 2 present the thought and actual\n\n1. Homo economicus is Latin for 'economic man.' Persky (1995) traces its use back to the late 1800s when it was used by critics of John Stuart Mill's work on political economy. In contrast (and, as we will see, with no small touch of irony) Homo sapiens is Latin for 'wise man.' For a deep dive into evolution of Homo sapiens , particularly from the start of the Cognitive Revolution 70,000 years ago, see Harari (2015).\n2. We have all heard the saying that 'words matter.' The titles and descriptions we use to distinguish people and their behaviors (e.g., Homo economicus vs. Homo sapiens ) can reinforce or diminish behaviors such as pride in cultural heritage, respect for the living world, and trust in community, a process known as 'crowding out' of 'intrinsic motivation and commitment.' As an example of this phenomenon, Bauer et al. (2012) asked participants in an online survey to imagine themselves as one of four households facing a water shortage due to a drought affecting their shared well. The survey assigned the label 'consumers' to half of the participants and 'individuals' to the other half. Those imagining themselves as consumers reported feeling less personal responsibility to reduce their water demand, and less trust in others to do the same, than did those referred to as individuals. As we are about to learn, behavioral economics is all about exposing these types of 'framing effects' existing in the 'real world' inhabited by Homo sapiens .", + "processing_time": 0.285733041993808, + "client_elapsed": 0.28753575001610443 + }, + { + "status": "success", + "filename": "01030000000092.pdf", + "markdown": "laboratory experiments that have formed key pillars of the field, such as those experiments depicted in Examples 1 and 2 in the book's Introduction section. The thought experiments in Section 1 are, for the most part, re-castings of the simple cognitive tests devised by psychologists and economists over the past three-to-four decades to illustrate the fallacies, miscalculations, and biases distinguishing Homo sapiens from Homo economicus . Similarly, the laboratory experiments presented in Section 2 are, for the most part, re-castings of the seminal experiments conducted by Kahneman and Tversky (among many others). These experiments helped motivate the revised theories of human choice behavior, such as Kahneman and Tversky's (1979) Prospect Theory, which form another pillar of behavioral economics. Alongside these experiments, Section 2 presents the revised theories of human choice behavior with varying degrees of rigor. This is where the theoretical bases of Homo economicus ' rational choice behavior are examined, and where key refinements to this theory are developed-theoretical refinements underpinning the myriad departures from rational choice behavior we witness Homo sapiens make in this section's laboratory and field experiments (and which are examined further in Sections 3 and 4).\n\nSection 3 submerses the student in the world of behavioral game theory. Here we explore games such as Ultimatum Bargaining presented in Example 5. We follow Camerer (2003)'s lead, first by characterizing the games analytically (i.e., identifying solution, or equilibrium, concepts that are predicted to result when members of Homo economicus play the games), and then by discussing empirical results obtained from corresponding field experiments conducted with Homo sapiens . It is within the context of these games and field experiments that theories of social interaction are tested concerning inter alia trust and trustworthiness, honesty, fairness, reciprocity, etc. As with the thought and laboratory experiments presented in Sections 1 and 2, the games and field experiments presented in Section 3 are meant to be replicated with students as subjects and the instructor as the experimenter, or researcher.\n\nFinally, Section 4 wades into the vast sea of empirical research and choice architecture. Here the student explores studies reporting on (1) the outcomes of actual policy nudges, such as the SMarT retirement-savings plan presented in Example 3 of the Introduction, (2) analyses of secondary datasets to test for choice behavior consistent with the revised theories discussed in Section 2, such as the test for loss aversion in Example 4 of the Introduction, and (3) analyses of primary datasets obtained from novel field experiments to further test the revised theories. The main purpose of this section is not only to introduce the student to interesting empirical studies and policy adaptations in the field of behavioral economics, but also, in the process, to incubate in the student an abiding appreciation for the obscure settings that sometimes lend themselves to such study. 3\n\n## THE TEXTBOOK'S DIFFERENT LEVELS OF RIGOR\n\nBecause the mathematical and computational rigor of material presented in this textbook varies throughout, particularly in Sections 2 - 4, the extent of the rigor used in the presentation of a given topic is indicated with superscripts. Topics without a superscript are considered basic and universal enough that backgrounds in economics, mathematics, or statistics are not required for the reader to understand the material. Topics with a single asterisk (*) indicate that higher mathematical reasoning skills are recommended for the reader to fully grasp the material. Topics with a double\n\n3. Our approach to studying behavioral economics is focused on the underlying laboratory experimentation and behavioral games that form the bedrock of the field. As such, we eschew delving into related fields such as neuroeconomics and auction theory. See Cartwright (2018) and Just (2013) for introductions to the former and latter fields, respectively. XX ARTHUR J. CAPLAN", + "processing_time": 0.27198762499028817, + "client_elapsed": 0.2734157079830766 + }, + { + "status": "success", + "filename": "01030000000093.pdf", + "markdown": "survey responses and outcomes from the experiments and games. This spreadsheet is linked to the students' randomly assigned course ID (CID) numbers. The other spreadsheet, which is linked to their university student ID numbers and their names, compiles their performances on quizzes, homework, and exams assigned throughout the semester.\n\nAt the risk of sounding draconian, this is a course where it may make sense to base upwards of 50% of a student's grade upon their in-person attendance, which would entail carefully taking role at the beginning of each class. If the class meets 30 times face-to-face during the semester, for example, their grade attributable to attendance would then drop by 3.33 percentage points for each missed class (excused absences withstanding). Granted, students who foresee having difficulty attending class in-person throughout the semester would likely choose to drop the course immediately. For those students who remain, the remaining 50% of their course grade would then be based upon their quizzes, homework, and exam scores.\n\nThe issue of how best to convey written information to the student a priori (i.e., before conducting a given experiment or game) also looms large in a participatory-learning setting such as this, especially if the instructor desires to obtain unbiased responses from the students (or more practically, to control for potential biases). For example, the first set of thought experiments presented in Section 1 is meant to demonstrate firsthand to the students the extent to which automatic, knee-jerk responses from what Kahneman (2011) identifies as the System 1 portion of the brain can result in miscalculations. Students who choose to read ahead (small in number though these types of students may be) potentially skew the distribution of responses away from its otherwise true representation of these miscalculations. Such skewness may be tolerable for strictly educational purposes, where the goal is to demonstrate that at least a certain percentage of students are prone to miscalculation. But if the instructor also hopes to compile student responses into a dataset amenable for statistical analysis, then this type of potential bias draws into question the validity of the data. 2\n\nTo help control for potential biases associated with students having read ahead about the game or experiment they are now participating in, I recommend including the following question on each Response Card: 'Did you read about this topic ahead of time?' (see Appendix A). Answers to this question provide a control for the level of student foreknowledge, which is the potential bias of concern.\n\nI am personally unaware of any studies that have looked at how well students learn the lessons of behavioral economics in a cumulative sense over a span of time (e.g., an entire semester) and across a variety of experiments and games. In other words, I know of no studies that estimate the extent to which individuals who begin a course in behavioral economics as bona fide Homo sapiens evolve toward ' Homo economism ' in their individual and social choices. The pedagogy promoted in this textbook-in particular, the data it generates-offers instructors the opportunity to empirically test the hypothesis that students make this evolution.", + "processing_time": 0.2773132920265198, + "client_elapsed": 0.2785001659649424 + }, + { + "status": "success", + "filename": "01030000000094.pdf", + "markdown": "\n\n6. Warning : This question concerns a politically charged event that occurred on January 18, 2019, at the Indigenous People's March in Washington, D.C. After reading this account of what happened at the march, and viewing this video of the event, which of the effects presented in this chapter do you think best describes this episode in our nation's history?\n7. Think of a situation in your own life when you framed information (either wittingly or unwittingly) in such a way that helped pre-determine an outcome. Describe the situation and how you framed the information. Was the outcome improved or worsened as a result of how you framed the information?\n8. After having learned about the Anchoring Effect in this chapter, do you think you will ever fall for something like this again?\n9. When someone admonishes you 'not to judge a book by its cover,' or as British management journalist Robert Heller once noted, 'Never ignore a gut feeling, but never believe that it's enough,' what heuristic(s) is he unwittingly advising you to avoid using?\n10. Browse the internet for information about an effect that was not discussed in this chapter. Can you classify this effect as a special case of a Priming or Framing Effect? Explain.\n11. Browse the internet for a heuristic other than the Affect and Availability Heuristics described in this chapter. Explain the heuristic.\n12. It's one thing to detect the existence of a Silo Effect and quite another to measure its", + "processing_time": 0.6220427500084043, + "client_elapsed": 0.623789792007301 + }, + { + "status": "success", + "filename": "01030000000095.pdf", + "markdown": "(Niederle and Vesterlund 2007)\n\n\n\nIn other words, while women shy away from competition, men are drawn to it.\n\nTurning to Task 4, recall that although this choice is very similar to that of Task 3, Task 4's choice eliminates the prospect of having to subsequently participate in a competition. Thus, only in Task 3 could a gender gap in preference for competition have played a role in the choice of compensation scheme. As the figure below shows, there is no statistically significant gender gap in the choice of compensation scheme in Task 4 based upon perceived ranking in Task 1. A higher percentage of women than men who guessed their Task 1 ranking to be low (i.e., at level '3') chose the tournament scheme in Task 4, while the percentages were reversed for those participants who guessed their Task 1 rankings to be high (at levels '1' and '2'). But because the two lines in the figure remain close together, these differences are not statistically significant (i.e., we should treat the groups' respective choices as being no different from one another).\n\n(Niederle and Vesterlund 2007)\n\n\n\nThis result from Task 4 cements the authors' finding that women shy away from actual competition slated to occur at a future point in time, not implicit competition based upon their interpretations of how their past performance compares with others. 10\n\n10. In a related study of the performances of men and women in professional judo fights for bronze medals (of all things!), Cohen-Zada et al. (2017) find that men's performances are significantly affected by what the authors' call \"psychological momentum\", while women's is not. Psychological momentum is defined as the tendency of an outcome (such as a win in an initial judo match) to be followed by a similar outcome (a win in a subsequent match) that is not caused by any strategic incentives of the players. The authors point out that this result is consistent with evidence in the biological literature that", + "processing_time": 0.5972442500060424, + "client_elapsed": 0.5992687500547618 + }, + { + "status": "success", + "filename": "01030000000096.pdf", + "markdown": "\n\n8. Suppose Evelyn the Environmental Economist is presenting her case in a public meeting for why raising the price of municipal water in the face of persistent drought conditions would be a good thing for the community, when someone in the audience yells out, 'That's unfair for seniors and others living on fixed incomes.' How might Evelyn frame her response in a way that dispels the audience's concerns about the fairness of a price increase?\n9. How would the indifference curve in Figure 6.1 change when drawn for a person who suffers from guilt but not envy? Draw the curve.\n10. Can you recall an example from your own life where you exhibited an Endowment Effect that ultimately led to regret?\n11. The Gender Gap experiment discussed in this chapter measured gender differences in terms of how males and females deal with competitive situations. Think of another situation where a gender gap may exist and design an experiment to test for it.\n12. It was shown in this chapter that a Homo economicus who exhibits convex-shaped indifference curves exhibits an Endowment Effect. Does this result still hold if Homo economicus exhibits linearly shaped indifference curves, as depicted in the figure below? Show your result using this graph.", + "processing_time": 0.5665343750151806, + "client_elapsed": 0.5695461669820361 + }, + { + "status": "success", + "filename": "01030000000097.pdf", + "markdown": "Now, how do we solve for the game's analytical equilibrium? 12\n\n\n\nHere, Player 2 applies backward induction to find what's known as a Perfect Bayesian Equilibrium (PBE). As we already know, if Player 2 is the weak type and Player 1 has chosen to invade, then Player 2 should concede. If he is the strong type, then Player 2 should fight. We also know that Player 1 recognizes that she gets a payoff of $0 if she concedes in the first round, regardless of Player 2's type. If she instead chooses to invade in the first round, then Player 1's expected payoff from invading is . This is merely the weighted average of Player 1's expected payoff when Player 2 is weak and her expected payoff when Player 2 is strong. Thus, invade is a better strategy than concede for Player 1 when . In other words, if the probability that Player 1 assigns to Player 2 being weak is greater than one-sixth, Player 1 should choose to invade in the first round. Otherwise, Player 1 should concede and be done with it.\n\nWhat's the outcome when you and your classmates play this more complicated version of the Escalation Game?\n\n## BURNING BRIDGES GAME\n\nThis game shares starkly similar features with the Escalation Game, but there is no uncertainty (thus, the analytical equilibrium is an SPE rather than a PBE). The SPE has much to say about the relationship between two tenacious competitors. Spaniel (2011) portrays the game as follows:\n\n12. This equilibrium is known as a Perfect Bayesian Equilibrium (PBE) rather than an SPE because of the uncertainty that at least one of the players is forced to contend with. Similar to Nash, Thomas Bayes is considered a towering figure. He was an 18th-century English statistician, philosopher, and Presbyterian minister who is known for formulating a specific case of the theorem that bears his name: Bayes Theorem. Bayes never published his theory himself-his notes were edited and published posthumously.", + "processing_time": 0.7273707090062089, + "client_elapsed": 0.7293946249992587 + }, + { + "status": "success", + "filename": "01030000000098.pdf", + "markdown": "- one of the two players is allowed to communicate with the other player (i.e., there is 'one-way communication') the players coordinate their choices 96% of the time! However, with simultaneous two-way communication between the two players, they coordinate only 42% of the time! Explain what happened.\n10. We demonstrated how to solve for the Penalty Kick game's mixed-strategy equilibrium. Suppose you were new to the game of soccer (or football) and assigned to play the goalie position. After watching the following YouTube video, what strategy might make the most sense for you to adopt on penalty kicks: https://www.youtube.com/watch?v=3yWZZR9ZodI.\n11. The map below identifies (with red markers) the locations of gas stations in Salt Lake City, Utah (Utah's capital city). Do these gas station locations depict a pure strategy equilibrium for the Hotelling Game? Explain.\n\n\n\nSource: Google\n\nMaps\n\n12. In this chapter, we learned that when an individual acquires private information about something, this added information does not necessarily make the individual better off. In particular, when an individual (say, Player 1) acquires private information about something of common interest to both himself and another individual (say, Player 2), and Player 2 knows Player 1 has acquired this private information, Player 1 could actually be made worse off as a result of Player 2 changing her strategy in response to the fact that she knows Player 1 now has additional information. Whew! Can you think of a real-life example where the acquisition", + "processing_time": 1.0025221669930033, + "client_elapsed": 1.0050982079701498 + }, + { + "status": "success", + "filename": "01030000000099.pdf", + "markdown": "(Pope and Schweitzer 2011)\n\n\n\nTo reiterate, this study's main econometric results reveal a negative effect on sinking a putt when the typical golfer is putting for birdie, and a positive effect on putting for bogey. Consistent with the previous graphs, these numerical results suggest that the typical professional golfer is more likely to sink a put for bogey and less likely to sink the putt for birdie (i.e., the typical golfer is indeed loss averse). 10\n\n## ARE CIGARETTE SMOKERS HYPERBOLIC TIME DISCOUNTERS?\n\nRecall from Chapter 4 the distinction between time-consistent exponential time discounters ( Homo economicus ) and potentially time-inconsistent hyperbolic discounters ( Homo sapiens ). The discounting time paths for exponential versus hyperbolic discounting looked like this:\n\n10. A negative effect associated with putting for double bogey suggests that the typical golfer suppresses his inclination for loss aversion when putting for a score worse than bogey.", + "processing_time": 0.9469341250369325, + "client_elapsed": 0.9490591660141945 + }, + { + "status": "success", + "filename": "01030000000100.pdf", + "markdown": "\n\n## (Yoeli et al. 2013)\n\nOn a final note, Yoeli et al. provide evidence that indirect reciprocity among Homo sapiens is unique to public goods. Their hypothesis is that choosing not to participate in a demand response program should carry the threat of social sanctions only if participation is considered to be for the public good. To test their hypothesis, the authors solicited an additional 1,000 customers with exactly the same treatments as described above, except that the informational materials the customers received ahead of time to entice them to participate in the demand response program were stripped of any language", + "processing_time": 1.66906529199332, + "client_elapsed": 1.672850999981165 + }, + { + "status": "success", + "filename": "01030000000101.pdf", + "markdown": "[markets] build loyalty and-more important-make people want to extend themselves to the degree that corporations need today: to be flexible, concerned, and willing to pitch in. That's what a social relationship delivers.' (page 90)\n\nHence, in the less-predictable world of Homo sapiens , businesses must decide the extent to which they participate with their employees and customers in monetary and/or social markets.\n\nAs a follow-on to Heyman and Ariely's (2004) experiments exploring the payment-effort trade-off, Vohs et al. (2006) sought to understand the behavioral psychology underscoring the trade-off. In its most general terms, the authors' hypothesis is that money makes Homo sapiens feel self-sufficient and behave accordingly. When reminded of money, people desire to be free from dependency upon others and prefer that others not depend upon them. Vohs et al. designed several experiments to test this hypothesis from a variety of angles.\n\nIn one experiment, the authors found that participants (a sample of University of Minnesota students) who were reminded about money-both Monopoly money and real money-in the context of a series of word descrambling tasks worked longer at the tasks than participants in a non-moneyprimed control group before requesting help from the experimenter. 25 In subsequent experiments with different groups of students, Vohs et al. found that (1) participants in a high-money treatment worked significantly longer than participants in a low-money treatment before asking for help from another available participant, (2) participants in a money-primed treatment volunteered to help code fewer data sheets than did participants in the non-money-primed control condition, (3) participants in a high-money treatment volunteered to gather fewer pencils that had spilled onto the floor than did participants in a low-money treatment, and (4) participants in a money-primed treatment donated significantly less money to a university student fund than participants in the non-money primed control. Three final experiments tested the effects of money on social intimacy, desire to engage in leisure activities alone, and preference to work alone. As expected, participants who were primed with money ahead of time were subsequently less socially intimate and exhibited a stronger preference for engaging in leisure activities and working alone.\n\nSo yes, Vohs et al.'s experiments suggest that money makes Homo sapiens feel self-sufficient and behave accordingly.\n\n## PRICE AND THE PLACEBO EFFECT\n\nIs it possible that the magnitudes of placebo effects experienced by Homo sapiens (e.g., through medical therapies or medications) are somehow influenced by the prices we pay for them? To investigate this possibility, Waber et al. (2008) studied the effect of price on a group of Homo sapiens ' analgesic responses to placebo pills. Over 80 healthy volunteers in Boston, MA were recruited via an online advertisement to participate in a field experiment where each participant was informed by a brochure about a purported new opioid analgesic recently approved by the Food and Drug Administration. The opioid was described as similar to codeine but with a faster onset time. In reality, and not disclosed to the participants, the pill was a placebo. After randomization, half of the participants were informed that the drug had a regular price of $2.50 per pill ('regular price'), and half of the participants that\n\n25. The descrambling task consisted of 30 sets of five jumbled words. Participants created sensible phrases using four of the five words. In the control and play-money treatment, the phrases primed neutral concepts (e.g., 'cold it desk outside is' became 'it is cold outside'). In the real-money treatment, 15 of the phrases primed the concept of money (e.g., 'high a salary desk paying' became 'a high-paying salary'), whereas the remaining 15 were neutral phrases. Participants in the playmoney treatment were primed with money by a stack of Monopoly money in their visual periphery while completing the neutral descrambling task.\n\n220 ARTHUR J. CAPLAN", + "processing_time": 0.29453854099847376, + "client_elapsed": 0.29735820897622034 + }, + { + "status": "success", + "filename": "01030000000102.pdf", + "markdown": "\n\n## (Kaza et al. 2018)\n\nCanada is currently the world's largest producer of MSW per capita. At slightly more than 36 metric tons per person per year, Canadians generate roughly 10 tons more MSW per person annually than the next highest garbage producers, Bulgarians and Americans (Tiseo, 2021). Summiting a list like this is obviously not in any country's best interest-there are no kudos for reaching the top of the heap, so to speak. Is it therefore possible that those nations reaching the top will take the lead in reversing course?\n\nHalifax is one Canadian city that apparently has. On August 1st, 2015, the city began providing a 'green nudge' to citizens living in its urban core area with the introduction of the Clear Bag Policy, a policy designed to nudge households toward more responsible sorting of their waste, which, in turn, would result in an overall reduction in the total amount of waste generated. As Akbulut-Yuksel and Boulatoff point out, under the new policy, households were mandated to replace their black garbage bags, traditionally used for the disposal of their refuse, with clear, transparent bags. The Clear Bag Policy allowed households to put out the same number of garbage bags at the curb (six every other week), but all waste destined for the landfill was required to be disposed of in a clear bag (except for one dark bag permitted for privacy's sake). This allowed waste collectors to screen and refuse any bags containing materials that should otherwise have been diverted from the landfill, such as recyclables, food waste, and hazardous waste. Clear bags also made apparent to everyone, neighbors and passersby alike, a given household's waste-generation and disposal habits. 33\n\nTo test the Clear Bag Policy's impact on a typical household's generation of MSW, Akbulut-Yuksel and Boulatoff designed a quasi-experiment spanning the period from January 6, 2014, to July 28, 2017, with January 6, 2014, to July 31, 2015, serving as the pre-treatment period and August 1, 2015, to July 28, 2017, serving as the post-treatment period. MSW data collected during this time span\n\n33. As Akbulut-Yuksel and Boulatoff point out, Halifax households are required to sort waste in four ways: (1) recyclable containers (plastics, glass, and aluminum) are put in a transparent blue bag, (2) paper and cardboard are put in a separate bag, (3) organic food waste goes in a green bin provided by the city, and (4) the remaining waste (refuse) goes into garbage bags. Recyclable materials are collected each week, while garbage and organic waste are each collected every other week on opposite weeks (except in the summer months when, thank goodness, organic waste is collected on a weekly basis). 234 ARTHUR J. CAPLAN", + "processing_time": 0.9510677079670131, + "client_elapsed": 0.9529426250373945 + }, + { + "status": "success", + "filename": "01030000000103.pdf", + "markdown": "## СREATING SLIDES\n\n\n\n\n\n\n\n\n\n\n\n\n\n## 01 - Find Open Educational Resources\n\nStart by searching for information on platforms like OER Commons, where authors share their materials freely, ensuring no copyright issues.\n\n## 02- Prepare Your Content\n\nSummarize or extract the key points from the materials you've found. This will be the content for your slides.\n\n## 03- Generate Slides with ChatGPT\n\nProvide the summarized content to ChatGPT and instruct it to create a structured outline for Google Slides, including titles, main points, and any specific instructions for slide design.\n\n## 04 - Create App Script Code\n\nAfter finalizing the slide structure, ask ChatGPT to generate a Google Apps Script code that can create these slides automatically.\n\n## 05 - Execute in Google Apps Script\n\nOpen Google Apps Script, start a new project, and paste the code provided by ChatGPT. Run the script to auto-generate your slide deck.\n\n## 06 - Edit and Customize\n\nOnce the slides are created, you can further edit and customize them in Google Slides according to your needs.\n\nINTERESTED IN FREE AI-CONSULTANCE OR\n\nCOLLABORATION WITH US?\n\nEMAIL REBECCA.ALLEN@MSJ.EDU F OR MORE INFORMATION\n\n", + "processing_time": 0.30621358403004706, + "client_elapsed": 0.30915991601068527 + }, + { + "status": "success", + "filename": "01030000000104.pdf", + "markdown": "\n\nAn overview of each actor's role in this ecosystem is described below.\n\n## Publishers\n\nPublishers work to 'make public' scholarly work in the form of textbooks, journals, and monographs, and represent a wide range of publishing approaches, business models, budgets, and institutional affiliations. With our focus on monographs, the two most significant groups are large commercial publishers and university presses. These publish the vast majority of monographs in circulation, although in recent years, smaller open access publishers have also begun to emerge.\n\nThe role of publishers includes (among other things):\n\n- acquisitions and list curation\n- editorial work and coordinating peer review\n- design and production (for various formats, typically: print, digital PDF, and EPUB)\n- distribution and marketing of finished products into various channels (libraries, aggregators, stores) where readers can access books", + "processing_time": 0.6657582079642452, + "client_elapsed": 0.6678480840055272 + }, + { + "status": "success", + "filename": "01030000000105.pdf", + "markdown": "## The Scholarly Publishing Cycle\n\nHaving explored the scholarly publishing ecosystem and its primary relationships, we can update the cycle as follows:\n\n\n\nOur project set out to explore and address the shortfall in serving the scholarly reader identified in this section. This shortfall is made clear in two connected points:\n\n- Scholarly readers are not just content consumers; scholarly reading is an act of creation as well.\n- Publishers and aggregators are not incentivized to create better tools to support scholarly reading.\n\nFrom here, this report will consider the experiences of publishers, librarians and readers through a synthesis of interviews conducted with several members of each group, as well as a short online survey aimed at readers. We will then share some of our own philosophy on the future of scholarly reading, then detail the path forward we see for our own work in the area.", + "processing_time": 0.7533340000081807, + "client_elapsed": 0.7560434169718064 + }, + { + "status": "success", + "filename": "01030000000106.pdf", + "markdown": "An example of a conceptual map created by one of our interviewees\n\n\n\nIt seemed at times that the remarkable freedom of writing freeform allowed these languages to form, but it was difficult, if not impossible, to replicate that freedom on available digital tools. Printing out articles or chapters of interest and annotating them with pen or pencil is still seen as the way to go by many. Having physical copies on hand also means easier management as this benefits from the very natural use of space for arranging things, e.g.: 'The pile on the right contains my primary sources; on the left are things I've flagged as potentially interesting and to revisit.' Often mentioned was the use of digital editions for quick consultation and search, but print versions for in-depth reading and annotation. Most collect important works in print.\n\nWhile some note taking did take place alongside annotation, each of our researchers would reach a point where they needed to take the texts they had read and turn the notes, quotes, and other takeaways into something they could then begin to incorporate into their writing. Again, the approaches to this varied widely, and depended on the tools used initially. Some would take handwritten annotations and highlighting and type them into a word processor. Others would export annotations from tools in whatever", + "processing_time": 1.3045852079521865, + "client_elapsed": 1.3078765840036795 + }, + { + "status": "success", + "filename": "01030000000107.pdf", + "markdown": "## Print vs. Digital\n\nWhy do some researchers abhor digital and favor print, or vice-versa? The classic print vs. digital debate was necessary for us to understand readers' preferences with each\n\nQ11 What factors influence your choice of print? (select all that apply)\n\n\n\nformat.\n\nQ12 What factors influence your choice of digital? (select all that apply)\n\n", + "processing_time": 1.748642332968302, + "client_elapsed": 1.7509942089673132 + }, + { + "status": "success", + "filename": "01030000000108.pdf", + "markdown": "## CONTENTS\n\n| About the Publisher | vii |\n|--------------------------------------------------|-------|\n| About This Project | ix |\n| Acknowledgments | xi |\n| LABMANUAL | |\n| Experiment #1: Hydrostatic Pressure | 3 |\n| Experiment #2: Bernoulli's Theorem Demonstration | 13 |\n| Experiment #3: Energy Loss in Pipe Fittings | 24 |\n| Experiment #4: Energy Loss in Pipes | 33 |\n| Experiment #5: Impact of a Jet | 43 |\n| Experiment #6: Orifice and Free Jet Flow | 50 |\n| Experiment #7: Osborne Reynolds' Demonstration | 59 |\n| Experiment #8: Free and Forced Vortices | 66 |\n| Experiment #9: Flow Over Weirs | 76 |\n| Experiment #10:Pumps | 84 |\n| References | 101 |\n| Links by Chapter | 102 |\n| Image Credits | 104 |\n\nvii", + "processing_time": 0.8135363340261392, + "client_elapsed": 0.8169940420193598 + }, + { + "status": "success", + "filename": "01030000000109.pdf", + "markdown": "the jet velocity can be assumed to remain constant. Therefore, the horizontal distance traveled by jet (x) in time (t) is equal to:\n\nThe vertical component of the trajectory of the jet will have a constant acceleration downward due to the force of gravity. Therefore, at any time, t, the y-position of the jet may be calculated as:\n\nRearranging Equation (8) gives:\n\nSubstitution of t and v from Equations 9 and 2 into Equation 7 results in:\n\nEquations (10) can be rearranged to find C v:\n\nTherefore, for steady flow conditions (i.e., constant h in the head tank), the value of C v can be determined from the x, y coordinates of the jet trajectory. A graph of x plotted against will have a slope of 2 C v .\n\n## 7.2. DETERMINATION OF THE COEFFICIENT OF DISCHARGE\n\nIf C d is assumed to be constant, then a graph of Q plotted against (Equation 6) will be linear, and the slope of this graph will be:", + "processing_time": 0.293542500003241, + "client_elapsed": 0.2951410409878008 + }, + { + "status": "success", + "filename": "01030000000110.pdf", + "markdown": "in the flow. There is also a transitional stage between laminar and turbulent flows, in which the dye stream will wander about and show intermittent bursts of mixing, followed by a more laminar behavior.\n\nThe Reynolds number ( Re ), provides a useful way of characterizing the flow. It is defined as:\n\nwhere ( ) is the kinematic viscosity of the water (Figure 7.2), v is the mean flow velocity and d is the diameter of the pipe.\n\nThe Reynolds number is a dimensionless parameter that is the ratio of the inertial (destabilizing) force to the viscosity (stabilizing) force. As Re increases, the inertial force becomes relatively larger, and the flow destabilizes and becomes fully turbulent.\n\nThe Reynolds experiment determines the critical Reynolds number for pipe flow at which laminar flow ( Re<2000 ) becomes transitional ( 2000<Re<4000 ) and the transitional flow becomes turbulent ( Re>4000 ). The advantage of using a critical Reynolds number, instead of critical velocity, is that the results of the experiments are applicable to all Newtonian fluid flows in pipes with a circular crosssection.\n\nFigure 7.2: Kinematic Viscosity of Water at Atmospheric Pressure.\n\n\n\n| Temperature (degree C) | Kinematic viscosity v (m2 /s) | Temperature (degree C) | Kinematic viscosity v (m Is) |\n|--------------------------|---------------------------------|--------------------------|--------------------------------|\n| 0 | 1.793E-06 | 25 | 8.930E-07 |\n| | 1.732E-06 | 26 | 8.760E-07 |\n| 2 | 1.674E-06 | 27 | 8.540E-07 |\n| | 1.619E-06 | 28 | 8.360E-07 |\n| | 1.522E-06 | 29 | 8.180E-07 |\n| | 1.520E-06 | 30 | 8.020E-07 |\n| ; | 1.474E-06 | 31 | |\n| | 1.429E-06 | 32 | 7.690E-07 |\n| 8 | 1.386E-06 | 33 | 7.530E-07 |\n| 9 | 1.346E-06 | 34 | 7.380E-07 |\n| 10 | 1.307E-06 | 35 | 7.240E-07 |\n| 11 | 1.270E-06 | 36 | 7.110E-07 |\n| 12 | 1.235E-06 | 37 | 6.970E-07 |\n| 13 | 1.201E-06 | 38 | 6.840E-07 |\n| 14 | 1.169E-06 | 39 | 6.710E-07 |\n| 15 | 1.138E-06 | 40 | 6.58OE-07 |\n| 16 | 1.108E-06 | | 6.020E-07 |\n| 17 | 1.080E-06 | 50 | 5.540E-07 |\n| 18 | 1.053E-06 | 55 | 5.110E-07 |\n| 19 | 1.027E-06 | 60 | 4.760E-07 |\n| 20 | 1.002E-06 | 65 | 4.430E-07 |\n| 21 | 9.780E-07 | 70 | 4.130E-07 |\n| 22 | | 75 | 3.860E-07 |\n| 23 | 9.330E-07 | 80 | 3.630E-07 |\n| 24 | 9.110E-07 | 85 | 3.420E-07 |", + "processing_time": 2.6104655410163105, + "client_elapsed": 2.6128973750164732 + }, + { + "status": "success", + "filename": "01030000000111.pdf", + "markdown": "Figure 8.1: a) P6238 CUSSONS free and forced vortex apparatus, b) push-in orifices, c) free vortex measuring caliper, d) force vortex measuring probes\n\n\n\n## 7. THEORY\n\nTwo types of vortices are distinguished in the dynamics of the motion: forced and free vortices. The forced vortex is caused by external forces on the fluid, such as the impeller of a pump, and the free vortex naturally occurs in the flow and can be observed in a drain or in the atmosphere of a tornado.\n\n## 7.1. FREE VORTEX\n\nA free vortex is formed when water flows out of a vessel through a central hole in the base (Figure 8.2). The degree of the rotation depends on the initial disturbance. In a free cylindrical vortex, the velocity varies inversely with the distance from the axis of rotation (Figure 8.3).\n\nThe equation governing the surface profile is derived from the Bernoulli's theorem:\n\nSubstituting Equation (1) into (2) will give a new expression:\n\nor:", + "processing_time": 0.8135755420080386, + "client_elapsed": 0.8158591669634916 + }, + { + "status": "success", + "filename": "01030000000112.pdf", + "markdown": "- Adjust the point gauge to read 10 mm greater than the datum.\n- Record the reading as h .\n- Turn on the pump, and slightly adjust the flow until the water level coincides with the point gauge. Check that the level has stabilized before taking readings.\n- Measure the flow rate using the volumetric tank.\n- Observe the shape of the nappe and take pictures of it.\n\nNote : The surface of the water will fall as it approaches the weir. This is particularly noticeable at high flow rates by high heads. To obtain an accurate measurement of the undisturbed water level above the crest of the weir, it is necessary to place the measuring gauge at a distance of at least three times the head above the weir.\n\n- Increase the flow by opening the bench regulating valve to set the heads above the datum level in 10 mm increments until the regulating valve is fully open. Take care not to allow spillage to occur over the plate top that is adjacent to the notch. At each condition, measure the flow rate and observe the shape of the nappe.\n\nNote : To obtain a sufficiently accurate result, collect around 25 liters of water each time, or collect the water for at least 120 seconds.\n\n- Close the regulating valve, stop the pump, and then replace the weir with the V-notch.\n- Repeat the experiment with the V-notch weir plate, but with 5 mm increments in water surface elevation.\n- Collect seven head and discharge readings for each weir.\n\nFigure 9.3: Position of the notch and Vernier height gauge to set the datum.\n\n", + "processing_time": 0.710110749991145, + "client_elapsed": 0.7130190000170842 + }, + { + "status": "success", + "filename": "01030000000113.pdf", + "markdown": "## Table of Contents\n\n| Measurement Lab worksheet...................................................................................... 3 |\n|-----------------------------------------------------------------------------------------------------------------------------|\n| Scientific Method Lab.................................................................................................. 6 |\n| Chemistry of the Cell ~ But this is biology!........................................... 9 |\n| Biological Macromolecules and Their Indicators............................. 10 |\n| Worksheet for Chemistry of the Cell....................................................... 12 |\n| How molecules move in a liquid............................................................................. 12 |\n| How molecules move in a solid.............................................................................. 12 |\n| Introduction to Light Microscopes:........................................................................... 16 |\n| CellularBiology……………………………………………………………………………………………32 |\n| A cell is the smallest unit of life known to our planet................... 33 |\n| Cellular Microscopy......................................................................................... 34 |\n| Viewing prepared slides under a microscope................................. 34 |\n| Cellular Biology Worksheet....................................................................................... 35 |\n| Osmosis and Diffusion ............................................................................................... 39 |\n| Enzymatic Activity Lab.............................................................................................. 45 |\n| Cellular Respiration Lab............................................................................................ 49 |\n| Photosynthesis Lab ................................................................................................... 61 |\n| Observing Stomata, Guard Cells and Chloroplasts............................................. 65 |\n| Cellular Replication ................................................................................................... 66 |\n| Growth and the Creation of Life......................................................................... 66 |\n| Visualizing the Cell Cycle, Mitosis, and Meiosis............................................. 67 |\n| Whenitall goes wrong…..................................................................................... 68 |\n| Cellular Replication Worksheet ......................................................................... 69 |\n| Mammalian Gametogenesis .............................................................................. 72 |\n| Genetic Crosses......................................................................................................... 75 |\n| MENDELIAN GENETICS, PROBABILITY, PEDIGREES ANDCHI-SQUARE STATISTICS . 80 |\n| Chi-Square Data Table................................................................................................... 92 |", + "processing_time": 0.8754614160279743, + "client_elapsed": 0.8862594999955036 + }, + { + "status": "success", + "filename": "01030000000114.pdf", + "markdown": "| Genetics Lab - Blood Disorders.............................................................................. 94 |\n|----------------------------------------------------------------------------------------------------------------------------|\n| Human Traits Governed by Mendelian Genetics................................................... 97 |\n| 1. Record your phenotype and genotype for the following Mendelian traits:.. 97 |\n| Human Traits not Governed by Mendelian Genetics............................................ 98 |\n| Human Genetics Problems................................................................................... 100 |\n| Pedigree Analysis ................................................................................................. 102 |\n| Practice Problems................................................................................................. 102 |\n| Lab Materials......................................................................................................... 104 |\n| Contributors and Attributions .............................................................................. 104 |\n| From Gene to Protein via Transcription and Translation.................................... 105 |", + "processing_time": 0.551452582993079, + "client_elapsed": 0.5562137499800883 + }, + { + "status": "success", + "filename": "01030000000115.pdf", + "markdown": "5. Sample problem: If the ocular has a 10x lens and the objective has a 45x lens the total magnification is 10 x 45 = 450x\n\n## Changing objectives:\n\n1. When changing objectives from scanning power to lower power to high power the following changes will occur:\n- a. The size of the field of view decreases\n- b. The field of view becomes darker\n- c. The size of the image increases\n- d. The resolution (ability to see detail) increases\n- e. The working distance between the slide and the objective lens decreases\n- f. The depth of focus (thickness of the specimen that is visible) is reduced\n2. When changing from scanning to low power the field of view gets smaller. In fact, every time you increase the power of the objective, the field gets smaller.\n\n## Steps for Using the Microscope:\n\n1. Place the slide on the stage lining it up with the rectangle and using the stage clip to hold it in place.\n2. Click the nosepiece to the lowest (shortest) setting, the scanning objective lens or 4x .\n3. Look into the eyepiece.\n4. Use the coarse adjustment knob to bring the specimen into view. The specimen must be in focus before moving to the next steps.\n5. Rotate the nosepiece to the low-power objective or 10x .\n6. Refocus using the coarse adjustment knob.\n7. Move the slide to get a centered view.\n8. Now use the fine adjustment knob to get the specimen in perfect focus.\n9. Your slide MUST be focused on low power before attempting this next step.\n\n", + "processing_time": 0.4603464999818243, + "client_elapsed": 0.46364358300343156 + }, + { + "status": "success", + "filename": "01030000000116.pdf", + "markdown": "- Transfer pipettes\n- Test tube rack\n- 4 large (20 ml) test tubes or small Erlenmeyer flasks for larger volumes\n- Large plastic tray\n- Masking tape or lab tape\n- Large weigh boat (4/group)\n- Metric ruler\n- Electronic balance\n- Spatula\n- Weigh paper\n- Red food coloring (optional)\n\nFigure 3. Saccharometer\n\n\n\nTable 2. Contents of Saccharometers when testing fermentation with various yeast concentrations.\n\n| Saccharometer | DI Water | Glucose Solution | Yeast Suspension |\n|-----------------|------------|--------------------|--------------------|\n| 1 | *8 ml | *6 ml | 0 ml |\n| 2 | *12 ml | 0 ml | *2 ml |\n| 3 | *6 ml | *6 ml | *2 ml |\n| 4 | *2 ml | *6 ml | *6 ml |\n\n## *Double these amounts if using saccharometers that have a 15-cm vertical tube. See table below\n\n## Saccharometer DI Water Glucose Solution Yeast Suspension\n\n1\n\n16 ml\n\n12 ml\n\n0 ml", + "processing_time": 0.7530238750041462, + "client_elapsed": 0.7563253329717554 + }, + { + "status": "success", + "filename": "01030000000117.pdf", + "markdown": "## Saccharometer DI Water Glucose Solution Yeast Suspension\n\n| 24 ml | 0 ml | 4 ml |\n|---------|--------|--------|\n| 12 ml | 12 ml | 4 ml |\n| 4 ml | 12 ml | 12 |\n\n## Employing Steps in the Scientific Method:\n\n1. Record the Question that is being investigated in this experiment.\n\n\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\n\n2. Record a Hypothesis for the question stated above.\n\n\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\n\n3. Predict the results of the experiment based on your hypothesis (if/then).\n\n\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\n\n4. Perform the experiment below and collect your data.\n\n## Procedure:\n\n1. Prepare yeast suspension: Add 7 grams yeast to 50 ml warm tap water. Stir to mix. Alternatively, you can use the yeast suspension from Part 2. Optional: Add a few drops of red food coloring to the yeast to increase contrast, allowing easier measuring of the height of yeast in saccharometers.\n2. Label 4 test tubes and 4 saccharometers # 1- 4. Use a transfer pipette to add the appropriate amount of glucose and distilled water listed in Table 2 to the corresponding labeled test tubes.\n3. Use a transfer pipette to add the appropriate amount of yeast solution listed in Table 1 to the corresponding labeled test tubes. It is important to work carefully and quickly after adding the yeast solution to the glucose and water.\n4. Carefully pour the contents of the test tubes into the correspondingly labeled saccharometer, ensuring that the solutions are well mixed.\n5. Carefully tilt the saccharometers to allow any air bubbles that are trapped in the arms of the vertical tube to escape.\n6. Begin the timer for the experiment and measure the size of any bubbles (in mm) that are trapped in the vertical arms of the saccharometers. Record this measurement as the 0 time point.\n7. Position the saccharometers on the large plastic tray, positioning them around a plastic weigh boat to catch any fermentation overflow that may occur.\n\n12 ml", + "processing_time": 0.5569279170013033, + "client_elapsed": 0.5600168750388548 + }, + { + "status": "success", + "filename": "01030000000118.pdf", + "markdown": "## Cellular Replication\n\n\n\n## Growth and the Creation of Life\n\nOne of the characteristics of living things is the ability to replicate and pass on genetic information to the next generation. Cell division in individual bacteria and archaea usually occurs by binary fission. Mitochondria and chloroplasts also replicate by binary fission, which is evidence of the evolutionary relationship between these organelles and prokaryotes.\n\nCell division in eukaryotes is more complex. It requires the cell to manage a complicated process of duplicating the nucleus, other organelles, and multiple linear chromosomes. It is controlled in the cell cycle, which is divided into three parts: interphase, mitosis, and cytokinesis. We spilt those further for ease of study. Let's start with interphase, which is broken into three stages. In the first growth phase (G1), the cell grows and prepares to duplicate its DNA. In the synthesis phase (S), the chromosomes are replicated. In the second growth phase (G2), the cell prepares to divide.\n\n\n\nCellular Cycle and Replication\n\nA step by step guide to growing a human!\n\n\n\nMitosis and Meiosis Similiar processes with VERY different results!\n\n", + "processing_time": 0.8586356660234742, + "client_elapsed": 0.8619692079955712 + }, + { + "status": "success", + "filename": "01030000000119.pdf", + "markdown": "chromosome. Meiosis and mitosis are both nuclear divisions that result in new daughter cells. However, the two processes have significant differences. Fill out the following chart comparing the two forms of nuclear division.\n\n| | Mitosis (begins with a single cell) | Meiosis (begins with a single cell) |\n|-------------------------------|---------------------------------------|---------------------------------------|\n| # chromosomes in parent cells | | |\n| # DNA replications | | |\n| # nuclear divisions | | |\n| # daughter cells produced | | |\n| purpose | | |\n\n5. Using your beads, strings, and magnets recreate the process of meiosis. Ensuring you have two different colored beads, demonstrate the process of crossing over. When you think you have it down, flag your instructor over. Have them sign off on your handiwork. Instructor signature:\n\n6. By now hopefully you've noticed that these processes are denoted with '2n' and 'n' in various places. This is a reference to the number of sets of chromosomes that cell has at any given moment. Autosomal human cells are 2n. Gametes are 1n. Mitosis begins with one 2n cell and ends with two 2n cells. Meiosis begins with one 2n cell and ends with 4 1n cells. Sketch those two processes here to show every time the 'n' classification changes. (Hint: draw every step, it'll make your life easier, even if it takes a little bit longer!)", + "processing_time": 0.581731874961406, + "client_elapsed": 0.58339820796391 + }, + { + "status": "success", + "filename": "01030000000120.pdf", + "markdown": "Sickle cell hemoglobin and normal hemoglobin differ in only a single amino acid out of more than 100 amino acids in the complete hemoglobin protein. This difference in a single amino acid results in the different properties of sickle cell hemoglobin compared to normal hemoglobin.\n\nHemoglobin is carried inside red blood cells. Normal hemoglobin dissolves in the watery cytosol of red blood cells. Sickle cell hemoglobin is less soluble in the cytosol because:\n\n- Valine (Val) is much less water-soluble than glutamic acid (Glu).\n- Amino acid 6 is in a crucial location on the outer surface of the hemoglobin protein.\n\nThe chart on the next page shows how the lower solubility of sickle cell hemoglobin results in the symptoms of sickle cell anemia.\n\n\n\n\n\n| Genes in DNA | → | Protein | → | Characteristics |\n|---------------------------------------------------------------------|-----|-------------------------------------------------------------------|-----|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| 2 copies of the allele that codes for normal hemoglobin ( SS ) | → | Normal hemoglobin dissolves in the cytosol of red blood cells. | → | Disk-shaped red blood cells can squeeze through the smallest blood vessels → normal health |\n| 2 copies of the allele that codes for sickle cell hemoglobin ( ss ) | → | Sickle cell hemoglobin can clump in long rods in red blood cells. | → | If sickle cell hemoglobin clumps in long rods → sickle-shaped red blood cells → clogged small blood vessels + fragile red blood cells → pain, damage to body organs + anemia = sickle cell anemia |\n\n29a. Circle the arrows in the chart that represent transcription + translation.\n\n\n\n", + "processing_time": 0.8253053330117837, + "client_elapsed": 0.8280514169600792 + }, + { + "status": "success", + "filename": "01030000000121.pdf", + "markdown": "\n\n16. Place the tubes in a balanced configuration in the microcentrifuge and spin for 3 minutes.\n17. Carefully pour off the supernatant from both tubes. Do not disturb the nucleic acid pellets. Invert the tubes and tap them gently on the surface of a clean paper towel to drain them thoroughly.\n18. Briefly spin the tubes in a balanced configuration in the microcentrifuge to bring any remaining ethanol to the bottom of the tube. Then use the micropipette to remove any remaining ethanol. Use a fresh tip for each tube. Be careful not to disturb the nucleic acid pellet.\n19. Allow the tubes to dry by leaving the tube caps open for 3-5 minutes. Inspect each tube carefully to ensure that the tube interior is completely dry.\n\n***Congratulations, you have just completed the miniprep plasmid DNA extraction!!!***\n\n## Restriction Enzyme Digest Prep (switch to the 1- 20μL micropipette):\n\n20. Use a micropipette to add 10 μL of tris -EDTA solution (TE) to each tube. Use a new tip for each tube. Dissolve the pellets by pipetting in and out. Rinse the sides of the tube several times, concentrating on the area where the nucleic acid pellet or particles were observed. Check that no particles remain in the pipet tip or on the side of the tube. Use the entire contents of each tube in the restriction digest that follows.\n\n## II. Set Up the Restriction Digests of the 'Suspect' and 'Evidence' DNA\n\n| Reagents | Supplies and Equipment |\n|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| At each student station: Resuspended DNAor ethanol precipitates from Part 1* To be shared by all groups: 'Evidence A' DNA* 'Evidence B' DNA* Restriction Buffer- RNase A* BamHI -HindIII restriction enzyme mixture* Sterile distilled or deionized water | Microcentrifuge tube rack 3 1.5-mL microcentrifuge tubes Micropipet, 1- 20 μL Micropipet tips Beaker or similar container for waste Beaker or similar container filled with ice Permanent marker Water bath at 37°C |\n\nNOTE: Your instructor will assign you to use either 'Evidence A' DNA or 'Evidence B' DNA\n\n1. Label the three 1.5-mL microcentrifuge tubes in which you will perform the restriction digests: 'S1' for Suspect 1, 'S2' for Suspect 2, and either 'EA' for Evidence A or 'EB' for Evidence B. All three samples will be digested by the restriction enzymes BamHI and HindIII.\n2. Use the table below (next page) as a checklist while adding reagents to each reaction. Read down each column, adding the same reagent to all appropriate tubes. To avoid cross contamination, use a fresh pipet tip each time you add a reagent to a tube.", + "processing_time": 0.5078537499648519, + "client_elapsed": 0.5108511250000447 + }, + { + "status": "success", + "filename": "01030000000122.pdf", + "markdown": "\n\n| Tube | restriction enzyme mixture | Restriction Buffer-RNase | 1 DNA | Suspect 2 DNA | Evidence A or B | |\n|----------|------------------------------|----------------------------|---------|-----------------|-------------------|------|\n| | 3 pL | | 10 uL | | | 2 pL |\n| 52 | | 3 uL | | 10 uL | | |\n| EA or EB | 3 pL | 3 pL | | | | 2 pL |\n\n3. Mix reagents by pipetting gently up and down.\n4. Incubate all of the reaction tubes for 1 hour at 37 o C.\n\nNOTE: Your instructor will freeze your completed restriction digests at -20 o C until the next lab period.\n\n## III. Electrophorese Digests\n\n## Reagents:\n\n- Restriction digests from Part II, on ice\n- 10x loading dye, 10 𝜇𝜇 L\n\n## Supplies and Equipment\n\n- Gel electrophoresis chamber with agarose gel in gel tray, power supply\n- 1-20 𝜇𝜇 L Micropipette and pipet tips\n\n## Load the Gel\n\n1. Use a micropipette to add 2 𝜇𝜇 L of 10× loading dye to a reaction tube. Use the pipet tip and gently pipet up and down a couple of times to mix the 10× loading dye with the digested DNA. Use a new pipet tip and repeat for each digest.\n2. Use a micropipette to load the contents of each reaction tube (20 𝜇𝜇 L total) into a separate well in the gel. Use a fresh pipet tip for each reaction tube and write down the order in which the samples are loaded.\n\nNOTE: Be careful not to punch the tip of the pipet through the bottom or side of the well.\n\n## While loading,\n\n- steady the pipet over the well using two hands. You may wish to place one or both elbows on the lab bench to steady your hands.\n- be careful to expel any air in the pipet tip end before loading the gel. If an air bubble forms a cap over the well, the sample will flow into the buffer around the edges of the well.", + "processing_time": 1.0780460410169326, + "client_elapsed": 1.0813397499732673 + }, + { + "status": "success", + "filename": "01030000000123.pdf", + "markdown": "## The Data Journey\n\nTo get started, let's consider the data visualization 1 in Figure 1.1 below.\n\n\n\nThe underlying raw data went through many stages before it was presented to you in this data visualization. The information had to be:\n\n- Collected via surveys\n- Inputted into a database\n- Stored on secure servers\n- Cleaned for accuracy and consistency\n- Analyzed to understand the trends\n- Presented as a bar graph\n1. Statistics Canada. Table 32-10-0364-01 Area, production and farm gate value of marketed fruits. Data is reproduced and distributed on an \"as is\" basis with the permission of Statistics Canada. Retrieved January 9th, 2022. DOI: https://doi.org/10.25318/3210036401-eng. Statistics Canada Open Licence: https://www.statcan.gc.ca/en/reference/licence", + "processing_time": 0.5284637919976376, + "client_elapsed": 0.52984595898306 + }, + { + "status": "success", + "filename": "01030000000124.pdf", + "markdown": "\n\n## False Causation\n\nCorrelation does not imply causation.\n\nIf you've ever taken a statistics or data analysis course, you have almost certainly come across this common phrase. It means that, just because two trends seem to fluctuate alongside each other, it doesn't prove that one causes the other or that they are related in a meaningful way.\n\nReview Figure 2.10 23 below, which shows a line graph of the\n\n2. Statistics Canada. Table 37-10-0079-01 Registered apprenticeship training, registrations by major trade groups and sex. Data is reproduced and distributed on an \"as is\" basis with the permission of Statistics Canada. Retrieved February 2nd, 2022. DOI: https://doi.org/ 10.25318/3710007901-eng. Statistics Canada Open Licence: https://www.statcan.gc.ca/en/reference/licence\n3. Statistics Canada. Table 32-10-0364-01 Area, production and farm gate\n\nFigure 2.9. A pie chart displaying 12 categories of television viewing in Ontario in 2004 provides too much visual information , making it hard to read.", + "processing_time": 0.5352244160021655, + "client_elapsed": 0.5367267080000602 + }, + { + "status": "success", + "filename": "01030000000125.pdf", + "markdown": "ways. Review Figure 2.16 8 below, which is a line graph of the percentage of Canadian vs. foreign television programmes watched in New Brunswick from 2000 to 2004. Because of the similar colours of the lines, it is difficult for the reader to understand which line graph corresponds to which colour from the legend.\n\n8. Statistics Canada. Table 22-10-0097-01 Television viewing time of all television stations, by province, content and type of programme. Data is reproduced and distributed on an \"as is\" basis with the permission of Statistics Canada. Retrieved February 2nd, 2022. DOI: https://doi.org/ 10.25318/2210009701-eng. Statistics Canada Open Licence: https://www.statcan.gc.ca/en/reference/licence", + "processing_time": 0.18990462500369176, + "client_elapsed": 0.19078983296640217 + }, + { + "status": "success", + "filename": "01030000000126.pdf", + "markdown": "\n\n## Closure\n\nClosure refers to our mind completing missing portions of a design. There must be enough parts available for the image to be 'filled in'; if the image is too abstract, there are minimal reference points for the mind to complete it. See Figure 4.4 4 for an example of how our mind automatically imagine a line connecting the 2 broken ones.\n\n4. Statistics Canada. Table 18-10-0002-01 Monthly average retail prices for food and other selected products. Data is reproduced and distributed on an \"as is\" basis with the permission of Statistics Canada. Retrieved February 2nd, 2022. DOI: https://doi.org/10.25318/1810000201-eng. Statistics Canada Open Licence: https://www.statcan.gc.ca/en/ reference/licence", + "processing_time": 0.43045508302748203, + "client_elapsed": 0.43164533301023766 + }, + { + "status": "success", + "filename": "01030000000127.pdf", + "markdown": "| Year | 3-Year | 5-Year | 7-Year |\n|--------|----------|----------|----------|\n| 1 | 33.0% | 20.00% | 14.29% |\n| 2 | 44.45% | 32.00% | 24.49% |\n| 3 | 14.81% | 19.20% | 17.49% |\n| 4 | 7.41% | 11.52% | 12.49% |\n| 5 | | 11.52% | 8.93% |\n| 6 | | 5.76% | 8.93% |\n| 7 | | | 8.93% |\n| 8 | | | 4.46% |\n\nSuppose your business just purchased a $100,000 asset that has a 3-year useful life, and falls into 3-year class of assets. Using the SL method, the depreciation expense each year for the next 3 years would be:\n\n| Year | Recovery Rate | Unadjusted Basis | Depreciation Expense | Accumulated Depreciation |\n|--------|-----------------|--------------------|------------------------|----------------------------|\n| 1 | 0.1667 | $100,000 | $16,670 | $16,670 |\n| 2 | 0.3333 | $100,000 | $33,330 | $50,000 |\n| 3 | 0.3333 | $100,000 | $33,330 | $88,330 |\n| 4 | 0.1667 | $100,000 | $16,670 | $100,000 |\n\nNote that the book value or basis of the asset (acquisition cost - accumulated depreciation) would be $0 after it has been fully depreciated at the end of 4 years. Because of the half-year convention, it takes 4 years to depreciate the asset, even though it falls into the 3-year classification.\n\nDepreciation expense for the same asset using the MACRS method would be calculated as:\n\n| Year | Recovery Rate | Unadjusted Basis | Depreciation Expense | Accumulated Depreciation |\n|--------|-----------------|--------------------|------------------------|----------------------------|\n| 1 | 0.3333 | $100,000 | $33,333 | $33,333 |\n| 2 | 0.4445 | $100,000 | $44,450 | $77,780 |\n| 3 | 0.1481 | $100,000 | $14,810 | $92,950 |\n| 4 | 0.741 | $100,000 | $7,410 | $100,000 |\n\nNote again that the depreciation expense using MACRS is higher in the early years and lower in later years than with the SL method and that the book value after 4 years is again zero. Businesses often use MACRS for tax purposes and SL for profit reporting. Can you think of any reasons why?\n\nSome businesses that invest small amounts in capital assets are allowed to deduct up to $1,000,000 of the cost of acquired depreciable property as a current expenditure instead of a capital expenditure. This is known as direct expensing, and is available only to businesses that don't make large capital purchases each year. The allowable expensing amount is reduced by one dollar for each dollar of capital investment expenditure over $2,500,000 during the year. Other restrictions also apply.", + "processing_time": 1.4266377920284867, + "client_elapsed": 1.4283636669861153 + }, + { + "status": "success", + "filename": "01030000000128.pdf", + "markdown": "| | A | B | C | D | E |\n|----|------|----------|--------------------|----------------------------------|----------------------------------|\n| 1 | time | observed | Forecast(observed) | Lower Confidence Bound(observed) | Upper Confidence Bound(observed) |\n| 2 | 0 | 13 | | | |\n| 3 | 1 | 12 | | | |\n| 4 | 2 | 13.5 | | | |\n| 5 | 3 | 15 | | | |\n| 6 | 4 | 16 | | | |\n| 7 | 5 | 18 | | | |\n| 8 | 6 | 17.5 | | | |\n| 9 | 7 | 17.9 | 17.90 | 17.90 | 17.90 |\n| 10 | 8 | | 19.73214458 | 17.99 | 21.47 |\n| 11 | 9 | | 21.59962998 | 19.81 | 23.39 |\n| 12 | 10 | | 21.62645857 | 19.78 | 23.47 |\n| 13 | 11 | | 22.85993116 | 20.96 | 24.76 |\n| 14 | 12 | | 24.72741656 | 22.78 | 26.68 |\n| 15 | 13 | | 24.75424515 | 22.75 | 26.75 |\n\nFigure 13.3. Graph of Projection Estimates Open Template in Microsoft Excel\n\n\n\nHaving obtained price forecasts, our next step would be to re-estimate CR for GCS based on the forecasted prices. In addition, we may use the confidence interval forecasts to find a most optimistic forecast using the upper confidence interval forecasts and a pessimistic forecast using the lower bound forecasts.", + "processing_time": 1.61886929202592, + "client_elapsed": 1.6203989170026034 + }, + { + "status": "success", + "filename": "01030000000129.pdf", + "markdown": "\n\nn the case that the distributions were identically distributed with expected value and variance of and , each partner would face the same expected value as before, . But, the variance of their individual earnings would be , half of what it was before without combining their businesses. Furthermore, the standard deviation of the earnings each partner would face would be:\n\n\n\nAnd if n partners joined together, then they would each face the same expected value as before, but the variance each partner would receive is . We now illustrate these important results.\n\nAssume that business one's earnings are determined by outcomes associated with the toss of a fair coin. If the outcome of the coin toss is tails, the firm pays (loses) $5,000. If the toss is a heads, the firm wins $8,000. Thus, the firm wins either $8,000 or loses $5,000 and earns on average (.5) (-5,000) + (.5) (8,000) = $1500.\n\nThe standard deviation of this risky outcomes is:\n\n\n\nFurthermore, assuming a normal distribution, 68% of the time, the average outcome will be between the mean and plus or minus one standard deviation: ($1,500 + $6,500) = $8,000 and ($1,500 - $6,500) = -$5,000.\n\nNow suppose that two persons decide to combine their operations and share the average of the outcomes. Then the possible outcomes of two coin tosses are two heads (H, H) which earns on average $16,000 / 2 = $8,000 and occurs with a probability of .25; two tails (T, T) which earns on average -$10,000 / 2 = -$5,000 and occurs with a probability of .25, and one head and one tail (H, T) or one tail and one head (T, H) which both earn on average $3,000 / 2 = $1,500 and each occurs with a probability of .25. The expected value for each of the two players can now can be expressed as:\n\n\n\nThe two players now receive on average the same as before, $1,500, but consider the standard deviation of the average outcome:", + "processing_time": 0.30676508299075067, + "client_elapsed": 0.3079653329914436 + }, + { + "status": "success", + "filename": "01030000000130.pdf", + "markdown": "Table 15.6. Observations of Returns on the Firm's Portfolio of Investments r t p and on a Potential New Investment (a Challenger).\n\n| Time t | Observed returns on the firm's portfolio over time r t p | Observed returns on a potential new investment for the firm's r t j |\n|----------|------------------------------------------------------------|-----------------------------------------------------------------------|\n| 2012 | 10% | 7% |\n| 2013 | 6% | 8% |\n| 2014 | 7% | 5% |\n| 2015 | 3% | 2% |\n| 2016 | 5% | 3% |\n\nAnother way to represent the two rates of return measures and their relationship to each other is to represent them in a two dimensional scatter graph.\n\nWe may visually observe how the two sets of rates of return move together by drawing a line through the points on the graph in such a way as to minimize the squared distance from the point to the line. Our scatter graph is identified as Figure 15.3.\n\nFigure 15.3. Scatter Graph of Returns on the Firm's Portfolio of Investments and Returns on the Potential New Investment\n\n\n\nThe relationship between the returns on the new investment and the firm's portfolio can be expressed as:\n\n", + "processing_time": 0.9277138749603182, + "client_elapsed": 0.9291064160061069 + }, + { + "status": "success", + "filename": "01030000000131.pdf", + "markdown": "\n\nFigure 17.2. Year-to-year changes in housing prices.\n\n\n\n1\n\nInflationary, nominal, and real interest rates. To understand price volatility of durables, it is necessary to describe inflationary, nominal, and real interest rates. Recall from your earlier training that the inflation rate i is equal to the rate of change in average prices, changes often linked to monetary or fiscal policies of governments. The nominal interest rate r depends on the rate of inflation and a real component that is dependent on factors other than the rate of inflation such as changing market conditions or changes in productivity. To describe the effects of inflation on the nominal interest, let one plus the nominal interest rate r equal one plus the real rate r * times one plus the inflation rate i so that:", + "processing_time": 1.3197399160126224, + "client_elapsed": 1.3220654579927213 + }, + { + "status": "success", + "filename": "01030000000132.pdf", + "markdown": "| Fish species on IUCN Red List | Fish species on IUCN Red List |\n|---------------------------------|---------------------------------|\n| Potosi Pupfish | Cyprinodon alvarezi |\n| La Palma Pupfish | Cyprinodon longidorsalis |\n| Butterfly Splitfin | Ameca splendens |\n| Golden Skiffia | Skiffia francesae |\n\nTable 6.1: Four fish species on IUCN Red List \"Extinct in the Wild\" held in public aquariums.\n\nPublic aquariums, because of their inhouse expertise, can act quickly to collect and breed rare fish. Actions to prevent the extinction of the Barrens Topminnow include monitoring populations and propagating and stocking juveniles into existing or newly created spring habitats. The Tennessee Aquarium assisted with propagations and developed a program called 'Keeper Kids,' where students on spring break help feed the Barrens Topminnows in a behind-the-scenes experience.\n\nFigure 6.3: Photo of the critically endangered Butterfly Splitfin (Ameca spendens).\n\n\n\nThe breeding colonies of the Butterfly Splitfin (Figure 6.3) at the London Zoo and elsewhere serve as ark populations essential to the survival of this species. Butterfly Splitfins are endemic to the Río Ameca in western Mexico and almost extinct in the wild. Actions such as nonnative fish removal, stream restoration, and sanctuary designation may take decades before eventual introduction and survival in the wild. The Tennessee Aquarium is part of a large partnership to guide hatchery augmentation and recovery of the rarest darter in North America (U.S. Fish and Wildlife Service 2019). The Conasauga Logperch ( Percina jenkinsi ), a federally endangered darter (Percidae), is found only in a 30-mile (48 km) stretch of the Conasauga River in Georgia and Tennessee (Moyer et al. 2015).\n\nFigure 6.4: Lake Sturgeon (Acipenser fulvescens).\n\n\n\nThe Banggai Cardinalfish ( Pterapogon kauderni ), a small, endangered tropical cardinalfish in the family Apogonidae, is now bred and displayed in numerous public aquariums after overharvest in the wild drove wild populations to near extinction. Consequently, most Banggai Cardinalfish sold to hobbyists in the United States and European Union today are captive bred.", + "processing_time": 0.8943724169512279, + "client_elapsed": 0.8979407500009984 + }, + { + "status": "success", + "filename": "01030000000133.pdf", + "markdown": "## 7.6 Examples of Women's Impact\n\nSportfishing . Among those who fish for sport, only 27% of U.S. anglers are female (Burkett and Carter 2020). Underrepresentation of females in sportfishing is ironic, as the first publication on fly-fishing, dating from the 15th century, was written by Dame Juliana Berners, entitled Treatyse of Fysshynge with an Angle , a publication that heavily influenced novelty of the sport for European enthusiasts. Though sometimes invisible, women are slowly changing the world of sportfishing by breaking stereotypes. Future growth of sportfishing will rely on female anglers, instructors, and guides. Here I share a few examples on women making a substantial impact through their passion toward fishing. These examples demonstrate women who loved and valued what they did. If the paucity of female role models discourages females from seeing the relevance of fishing to them, these examples should inspire.\n\nFrederick Buller (2013) chronicled the very long list of large Atlantic Salmon caught by female anglers, which are outnumbered 200 to 1 by male salmon anglers. Georgina Ballantine holds the British record for a 64-pound rod-caught Atlantic Salmon from River Tay, Scotland, in 1922 (Figure 7.5). Joan Wulff was introduced to fly-fishing by her father when she was ten and won several fly-fishing accuracy championships before winning the 1951 Fishermen's Distance competition against allmale competitors. She became the first female spokesperson for Garcia Corporation in 1959 and advocated for women anglers in her writings for Outdoor Life and Rod & Reel . Today, females make up 30% of participants in the sport of fly-fishing (Recreational Fishing and Boating Foundation 2021). Joan Wulff participated in many distance casting events and did trick casting. She snapped a cigarette from the mouth of Johnny Carson on the TV show 'Who Do You Trust?' (Fogt 2017). Starting in 1978, Wulff opened a flycasting school on the Upper Beaverkill River in New York. Her FlyCasting Techniques , published in 1987, and New Fly-Casting Techniques , published in 2012, are classic guides to learning her techniques. When asked about her favorite fish, she would respond, 'Whatever I'm fishing for,' and her favorite place to fish was 'Wherever I am.'\n\nFigure 7.5: Georgina Ballantine holds the British record for a 64-pound rod-caught salmon from River Tay, Scotland in 1922.\n\n\n\nMost avid bass anglers can identify Roland Martin, Bill Dance, and Jimmy Houston, who dominated competitive bass fishing in the first decade of Bass Anglers Sportsman Society (B.A.S.S.) and have had TV fishing shows for decades. Kim Bain-Moore began competing in bass tournaments at age 19 and in 2009 became the first woman to compete in the Bassmaster Classic tournament. Only three females have been inducted into the Bass Fishing Hall of Fame. The first was Christine Houston, who organized the first-ever all women's bass club, the 'Tulsa Bass Belles.' But female participation in competitive bass fishing never took off as expected. Fewer that one in five readers of Field & Stream , Outdoor Life , and Bassmaster magazines are female (Carini and Weber 2017).", + "processing_time": 0.4840739169740118, + "client_elapsed": 0.48625004198402166 + }, + { + "status": "success", + "filename": "01030000000134.pdf", + "markdown": "What's unique about the growth of Alligator Gars is their fast growth in the first years of life followed by slower growth (Figure 8.6; Figure 8.7). Juvenile Alligator Gars quickly transition to fish-eating habits (Butler et al. 2018). A fish diet means the juveniles grow at 4-5 mm per day in the first three months of life, so that by the end of the first growing season they may reach 1.5 to 2 feet in length (~40-70 cm) and 8-10 pounds in weight (Sakaris et al. 2019). Despite their fast growth, young Alligator Gars are preyed upon by many larger fish.\n\nFigure 8.6: Growth in length of Alligator Gar in Texas. Figure 8.7: Growth in weight of Alligator Gar in Texas. Long description.\n\n\n\nFigure 8.7: Growth in weight of Alligator Gar in Texas.\n\n", + "processing_time": 1.1906435409910046, + "client_elapsed": 1.195764959033113 + }, + { + "status": "success", + "filename": "01030000000135.pdf", + "markdown": "Fly fishers targeting trout had an important influence in developing and sustaining conservation programs, although they were sometimes criticized for exclusive or single-interest advocacy. Here I review the history of trout fishing and fly-fishing with special focus on the Rocky Mountain West, where fly fishers first exerted their influence on conservation ethics and sportfishing policy. Although many individuals and organizations played roles, I concentrate on only two: Fly Fishers International (FFI) and Trout Unlimited (TU). These two organizations had similar interests in conservation, but important differences prevented them from working together on a unified goal of conservation. The legacy of fly-fishing demonstrates the importance of passion, persistence, and partnerships in fish conservation.\n\nTrout and salmon are the only sport fish native to the Western states, and fly-fishing here became more than a leisure activity. Norman Maclean's novel, A River Runs through It (1976), begins, 'In our family there was no clear line between religion and fly fishing.' Later Maclean writes that 'Something within fishermen 1 tries to make fishing into a world perfect and apart.' The iconography of Western fly-fishing that Maclean and others wrote about was created by anglers, fisheries managers, tourists, guides, businesses, and region promoters. The history of Rocky Mountain fly-fishing parallels the history of the expansion of our Western frontier as well as fisheries management (Brown 2015). Although Henry David Thoreau (1862) maintained that 'In wildness is the preservation of the world,' humans are part of the trout fishing system and helped create, destroy, maintain, and restore the trout fishing we have today.\n\nThe first trout fishers were Native Americans. Native Americans used a variety of fishing methods, including weirs, spears, nets, traps, baskets, hook-and-line methods, and baits. They also caught fish by hand via tickling. Tickling for trout involves rubbing the underbelly of a trout with fingers to get the trout to go into a trance, after which they can then easily be thrown onto the bank (Martindale 1901). Native Americans were more patient than others. This method is different from noodling for catfish, where the noodler uses fingers as bait and grabs the catfish by its mouth. Native Americans also caught fish by fly-fishing with deer-hair flies, according to the writings of early American naturalist William Bartram (1739-1823) (Monahan, no date).\n\nThe story of Rocky Mountain trout fishing begins with displacement of Native Americans from their historical fishing and hunting grounds. Uninhabited wilderness had to be created through the dispossession of Native people before it could be preserved (Spence 1999). Explorers, trappers, pioneers, soldiers, and homesteaders brought fishing gear to frontier outposts. The Lewis and Clark Expedition (1804-1806) included a designated angler named Silas Goodrich. The expedition first described several new species of fish, including the Yellowstone Cutthroat Trout and Westslope Cutthroat Trout, caught by Goodrich. Later military expeditions spent time trout fishing in addition to fighting Native Americans. Custer's Last Stand at Little Bighorn might have been avoided if he'd joined a column of reinforcements under General George Crook. Crook's soldiers were comfortably camped close by on Goose Creek near the Tongue River-fishing, not fighting (Monnett 1993; Owens 2002a; Lessner 2010).\n\n1. Although Maclean and other writers use the term fishermen, women are active anglers and contribute significantly to the sport.", + "processing_time": 0.2483687910134904, + "client_elapsed": 0.2493826660211198 + }, + { + "status": "success", + "filename": "01030000000136.pdf", + "markdown": "Figure 10.2: Positive attributes reported by recreational anglers in the United States. Long description.\n\n\n\nOver time, an angler's motivation may change from a catch orientation to emphasize noncatch motivations, such as being outdoors or passing on their passion for fishing (McKenna 2013). The progression often follows these stages:\n\n- Stage 1: I just want to catch a fish!\n- Stage 2: I want to catch a lot of fish!\n- Stage 3: I want to catch big fish.\n- Stage 4: I'm just happy to be out fishing.\n- Stage 5: I want to pass on my knowledge and passion for fishing.\n\nStudies of angler characteristics confirm that there is no such thing as an 'average' angler. Rather, anglers are a heterogeneous and changing group. Therefore, we can segment anglers in distinct categories for analysis (Bryan 1977; Kyle et al. 2007; Beardmore et al. 2013; TenHarmsel et al. 2019). For example, Magee (2018) categorized recreational anglers into five distinct fisher classes with differing motivations (Table 10.1).", + "processing_time": 1.075393625011202, + "client_elapsed": 1.079169875010848 + }, + { + "status": "success", + "filename": "01030000000137.pdf", + "markdown": "Figure 10.5: Frequency distribution displays the number of angler days resulting in differing catch per day for a hypothetical 8 fish per day creel limit and estimated change if creel limit is reduced to 4 fish per day. Long description.\n\n\n\nCreel limits are one of many elements that may be used by anglers to define fishing success. When more fish are harvested per trip, anglers rate fishing higher. High creel limits may cause anglers to have unrealistic expectations about the potential supply of fish compared to the demand (Cook et al. 2001). Creel limit reductions may be unsuccessful in reducing angler harvest or affecting fish populations. The hypothetical angler success graph (Figure 10.5) demonstrates that a reduction in creel from 8 to 4 would affect only a few trips and result in a small harvest reduction. Furthermore, creel limits are applied on a per-angler basis, so they cannot control total harvest if total fishing effort increases or if noncompliance is high. Finally, since anglers have a variety of motivations, they likely respond differently to regulation changes (Beard et al. 2011).\n\nThe ethic of fairness is involved in setting creel limit regulations because many anglers do not harvest a single fish during an angling trip. In Wisconsin lakes, Walleye harvest was not equally distributed. Only 7.4% of Walleye angler trips were successful in harvesting at least one Walleye, and <1% harvested a limit during a fishing trip (Staggs 1989). In Minnesota, anglers were slightly more successful, where 27.2% of angler trips ended with a harvest of at least one Walleye and about 1% harvesting a limit. The ideal creel limit would distribute the catch among more anglers and prevent overuse by a few individuals.\n\nLong-term trends in panfish populations (i.e., Bluegill, Yellow Perch, Black Crappie, Pumpkinseed, and Rock Bass) in Wisconsin lakes showed significant declines due to overfishing (Rypel et al. 2016). The daily limit for panfish was 50 aggregate per day from 1967 through 1998, which was reduced to 25 in 1998. Further reduction in daily limits for panfish (10) to improve undesirable small sizes of Bluegill populations increased both mean length and mean maximum length relative to sizes in control lakes (Jacobson 2005; Rypel et al. 2015).", + "processing_time": 0.8687957500224002, + "client_elapsed": 0.8711989169823937 + }, + { + "status": "success", + "filename": "01030000000138.pdf", + "markdown": "Figure 11.2: Arapaima gigas displayed in the Siam Centre, Bangkok.\n\n\n\nArapaima is an important flagship genus for flooded forest ecosystem and human floodplain communities. Flagship taxa are used as a symbol to promote conservation awareness (Caro 2010). Their large size makes them a true freshwater megafauna like crocodiles, river dolphins, and other large fish. Freshwater megafauna face many threats, and 71% of these species are in decline (He et al. 2017, 2018). Arapaima continue to face intense fishing throughout their range (Watson et al. 2021). However, freshwater megafauna like the Arapaima have fewer conservation resources and efforts than marine or terrestrial megafaunas.\n\nFishing, in general, and fishing for Arapaim a in particular, is a central element of the local economy and culture in Amazonia. Because these fish are obligate breathers, they are traditionally harvested by fishers using harpoons at the time when they surface to breathe. Men typically fish from canoes and search for signs of Arapaima near the surface. As they near the Arapaima , the harpooner throws the harpoon by hand. This is a specialized type of fishing, and the local fishers possess knowledge of the behavior that increases their likelihood of catching one. With appropriate training, fishers' participation in management processes can contribute to the conservation and governance of these small-scale fisheries.\n\nMany populations of Arapaima have been driven to local extinction due to overfishing (Castello et al. 2015a; Gurdak 2019a; Watson et al. 2021; Freitas and Sousa 2021). Much of the catch is illegal, with most specimens being caught below the minimum size limit or during the closed season (Cavole et al. 2015). The small-scale fishers are geographically dispersed, and governments in these regions have insufficient resources to devote to enforcing fishing rules. The riverine fishers who target Arapaima are marginalized and have limited formal education. Yet, compliance with regulations is essential to prevent overfishing and local extinction.\n\nArapaima represent only a small fraction of the fisheries harvest, but they are culturally important and symbolic as a flagship genus of tropical South American fisheries and floodplain management and conservation. Reducing the threats to Arapaima will also provide protections for many of the highly migratory fish of the Amazon basin. Collectively, the migratory fish contribute most of the fishery's landings in the basin (Duponchelle et al. 2021). Migratory fish depend on multiple, distant, but interconnected habitats during their life cycle. Any threat to one of the habitats or the corridor that connects them can influence these important food fish (Goulding et al. 2019).", + "processing_time": 0.6406493749818765, + "client_elapsed": 0.6439547089976259 + }, + { + "status": "success", + "filename": "01030000000139.pdf", + "markdown": "## Top 10 tuna fishing nations (2018)\n\nFigure 12.8: Top tuna fishing nations based on landings of seven tuna species in 2018. Long description.\n\n\n\nToday most tuna are captured in purse seines, and longlines are the second-most-common gear. Indonesia and Japan are consistently the top-two fishing nations (Figure 12.8). Five of the top tuna fishing nations-Japan, Taiwan (Republic of China), Spain, Korea, and the USA-have large fishing fleets that operate far from their home waters, whereas the others have large local or regional fleets. New technologies, such as sonar, have made tuna fishing much more effective. In response, the use of spotter planes is banned for fishing Atlantic Bluefin Tuna in the Mediterranean (Di Natale 2020). Many recreational tuna boats also use spotter planes in the eastern Atlantic Ocean, although the traditionalist harpoon fishers shun the technology (Whynott 1995; Decker 2016).\n\nThe Pacific Ocean has consistently had the highest landings, about 66% of the world's tuna catch. The western and central Pacific Ocean is where many artisanal and industrial fisheries overlap. For the small island nations, fishing provides a major source of income, jobs, and food security (Bell et al. 2019). Yet, Pacific island nations have not fully realized the economic potential with the global tuna industry, despite the fact that 80% of it is caught within their exclusive economic zones (EEZs, i.e., within 200 miles). The 1982 United Nations Convention on the Law of the Sea awarded coastal states sovereign rights to (1) exploit and manage all living resources within their EEZ, (2) exclude distant water fleets in favor of developing their own fleets, and (3) charge distant water fleets rent for access. Eight island nations-the Federated States of Micronesia, Kiribati, Marshall Islands, Nauru, Palau, Papua New Guinea, Solomon Islands and Tuvalu, which support 80% of the purse-seine catch in their waters-formed an alliance and require collective bargaining to set rents for access by foreign vessels. The alliance also prioritized domestic over foreign vessels and set limits on the number of purse-seine vessels. The issue of sovereignty over tuna that migrate freely among EEZs remains a concern for small island nations (Bailey et al. 2012). Working to establish fair and equitable allocations of total allowable catches to the many parties will require more equitable sharing with the larger tuna-fishing nations.", + "processing_time": 0.823710625001695, + "client_elapsed": 0.8494465409894474 + }, + { + "status": "success", + "filename": "01030000000140.pdf", + "markdown": "There is no question that fishing is the major factor driving grouper stocks on the downward spiral, but those that have large spawning aggregations are most vulnerable to declines (Coleman et al. 1996; Asch and Erisman 2018; Sadovy de Mitcheson et al. 2020). Because it takes a long time for scientists to obtain needed life history information, fisheriesindependent survey data, and catch history, grouper populations may be overfished long before data are even available for a stock assessment. Without formal stock assessments, general indicators of population status are based on catch trends. Very few grouper stocks that have spawning aggregations are managed sustainably. In a recent global analysis of the status of populations that form spawning aggregations, 45% were unknown, 33% were decreasing, and 5% were already gone (Figure 13.5). Only 12% had stable populations, and 5% were increasing.\n\nFigure 13.5: Current known status reflecting changes of exploited grouper aggregations globally, as noted by fisher interviews, monitoring, or underwater surveys (N = 509). Long description.\n\n\n\nOf the 167 species of grouper, 9.6% are vulnerable, 4.8% are near threatened, 1.2% are endangered, and 0.6% are critically endangered (Figure 13.6). The majority of species (68.9%) are classified as least concern and 15% are data deficient, with insufficient data for classification. The larger (>50 cm total length) and long-lived (>20 years) species of grouper that also had smaller geographic ranges were most likely to be endangered or critically endangered (Luiz et al. 2016). Market prices for grouper are escalating, and other lower-valued fish are often mislabeled or substituted.\n\nFigure 13.6: Categories of all grouper species (N = 167) according to the IUCN Red List (IUCN Red List Assessments, updated November 2018). Long description.\n\n\n\nTo protect grouper from overfishing, many measures are being implemented, such as minimum and slot-size limits, recreational bag limits, commercial fishing quotas, gear and seasonal controls, marine protected areas, and limited entry (Rocklin et al. 2022). The effectiveness will depend on traits of the species and the local context. Regulations to prevent marketing of undersize fish will mitigate growth overfishing. Allowing smaller fish to reach maturity at least once before harvest will mitigate recruitment overfishing. Size-limit regulations focused on protecting spawning-size fish may be ineffective for deepwater recreational fishing. Grouper have a physoclistous (i.e., closed) swim bladder, making them particularly susceptible to ruptured swim bladders, bloating, stomach distention, and protruding eyes caused by rapid decompression when hauled to the surface (Brulé et al. 2015). The proportion of grouper with distended stomachs was 70% in one study of commercial hook-and-line fishing and as high as 95% for Red", + "processing_time": 0.7360483750235289, + "client_elapsed": 0.742115749977529 + }, + { + "status": "success", + "filename": "01030000000141.pdf", + "markdown": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", + "processing_time": 1.857299916970078, + "client_elapsed": 1.8679215420270339 + }, + { + "status": "success", + "filename": "01030000000142.pdf", + "markdown": "also plays an important role in error analysis (investigating the difference between the numerical approximation and the solution).\n\nCalculating with only a finite subset of the rational numbers has many consequences. For example: a computer cannot distinguish between two polynomials of sufficiently high degree. Consequently, methods based on the main theorem of algebra (i.e. that an n th degree polynomial has exactly n complex zeros) cannot be trusted. Errors that follow from the use of finitely many digits are called rounding errors (Section 1.4).\n\nAn important aspect of numerical mathematics is the emphasis on efficiency. Contrary to ordinary mathematics, numerical mathematics considers an increase in efficiency, i.e. a decrease of the number of operations and/or amount of storage required, as an essential improvement. Progress in this aspect is of great practical importance and the end of this development has not been reached yet. Here, the creative mind will meet many challenges. On top of that, revolutions in computer architecture will overturn much conventional wisdom.\n\n## 1.3 Why numerical mathematics?\n\nAbig advantage of numerical mathematics is that it can provide answers to problems that do not admit closed-form solutions. Consider for example the integral\n\n\n\nThis is an expression for the arc length of one arc of the curve y ( x ) = sin x , which does not have a solution in closed form. A numerical method, however, can approximate this integral in a very simple way (Chapter 5). An additional advantage is that a numerical method only uses standard function evaluations and the operations addition, subtraction, multiplication and division. Because these are exactly the operations a computer can perform, numerical mathematics and computers form a perfect combination.\n\nAn advantage of analytical methods is that the solution is given by a mathematical formula. From this, insight in the behavior and the properties of the solution can be gained. For numerical approximations, however, this is not the case. In that case, visualization tools may be used to gain insight in the behavior of the solution. Using a numerical method to draw a graph of a function is usually a more useful tool than evaluating the solution at a large number of points.\n\n## 1.4 Rounding errors\n\nA computer uses a finite representation of the all numbers in R . These are stored in a computer in the form in which, by definition, d 1 > 0 and 0 ≤ di < β . The normalization is needed in order to prevent a waste of digits and to make the representation unambiguous. We call the value in equation (1.1) a floating point number (representation) in which 0. d 1 d 2 . . . dn is called the mantissa , β the base and e (integer) the exponent , where L < e < U . Characteristic values for | L | and U are in the range [ 100, 1000 ] , often, β = 2 (binary representation) and n = 24 ( single precision) or n = 53 ( double precision). Most computers and software packages (Matlab) satisfy the IEEE-754 standard, and hence provide single- 1 and double-precision 2 computations.\n\nLet for x ∈ R\n\n\n\n\n\n1 http://en.wikipedia.org/wiki/Single-precision\\_floating-point\\_format\n\n2 http://en.wikipedia.org/wiki/Double-precision\\_floating-point\\_format", + "processing_time": 0.29876845900435, + "client_elapsed": 0.3002755420166068 + }, + { + "status": "success", + "filename": "01030000000143.pdf", + "markdown": "## Chapter 3\n\n## Numerical differentiation\n\n## 3.1 Introduction\n\nEveryone who possesses a car and/or a driver's licence is familiar with speeding tickets. In The Netherlands, speeding tickets are usually processed in a fully automated fashion, and the perpetrator will receive the tickets within a couple of weeks after the offence. The Dutch police optimized the procedures of speed control such that this effort has become very profitable to the Dutch government. Various strategies for speed control are carried out by police forces, which are all based on the position of the vehicle at consecutive times. The actual velocity follows from the first-order derivative of the position of the vehicle with respect to time. Since no explicit formula for this position is available, the velocity can only be estimated using an approximation of the velocity based on several discrete vehicle positions at discrete times. This motivates the use of approximate derivatives, also called numerical derivatives . If the police want to know whether the offender drove faster before speed detection (in other words, whether the perpetrator hit the brakes after having seen the police patrol), or whether the driver was already accelerating, then they are also interested in the acceleration of the 'bad guy'. This acceleration can be estimated using numerical approximations of the second-order derivative of the car position with respect to time.\n\nSince the time-interval of recording is nonzero, the velocity is not determined exactly in general. In this chapter, the resulting error, referred to as the truncation error , is estimated using Taylor series. In most cases, the truncation error increases with an increasing size of the recording interval (Sections 3.2 and 3.4). Next to the truncation error, the measurement of the position of the vehicle is also prone to measurement errors. Issues that influence the results are, for example, parallax, the measurement equipment, and in some cases even the performance of the police officer (in car-videoing and laser control). These measurement errors provide an additional deterioration of the approximation of the speed and acceleration. The impact of measurement errors on approximations of derivatives is treated in Section 3.3.\n\n## 3.2 Simple difference formulae for the first derivative\n\nSuppose f is a continuously differentiable function. The forward difference is defined as\n\n\n\nin which h is called the step size . By definition,\n\n", + "processing_time": 0.26851358299609274, + "client_elapsed": 0.26970412500668317 + }, + { + "status": "success", + "filename": "01030000000144.pdf", + "markdown": "Note that the exact error equals\n\n\n\nIn this example the error estimate is very reliable.\n\nTo receive a better approximation the error estimate can be added to the approximation:\n\n\n\nIn the above example, the value of p was computed using Richardson's extrapolation. However, using Theorem 3.2.1, it is clear that p = 1, and this value could have been used immediately in equation (3.13b) in order to determine cph p . In practice, more complex situations are found, and the following complications may occur:\n\n- -It is not known whether higher-order derivatives exist and/or are bounded.\n- -The final result is a combination of various approximation methods. The influence of these approximations on p is not always clear.\n- -During implementation of the algorithm in a computer program, errors may be made.\n\nTo reveal any of these complications it is good practice to verify whether the calculated p is close to the p that follows from theory.\n\n## 3.7.3 Formulae of higher accuracy from Richardson's extrapolation ∗\n\nIn several applications the value of p in (3.10) is known. In that case Richardson's extrapolation can be used to determine formulae of higher accuracy.\n\nThis is done by making use of the fact that the error estimates for Q ( h ) and Q ( 2 h ) equal\n\n\n\n\n\nMultiplying equation (3.15a) by 2 p and subtracting equation (3.15b) from this yields\n\n\n\nsuch that\n\nThis means that\n\nThe value ( 2 p Q ( h ) -Q ( 2 h )) / ( 2 p -1 ) is a new approximation formula for M with an accuracy that is one order higher than the order of Q ( h ) .\n\n\n\n\n\n## Example 3.7.2 (Forward difference of higher accuracy)\n\nAs an example, the forward-difference method is considered. The error in the forward-difference formula may be written as\n\n\n\n\n\nand the difference for 2 h equals", + "processing_time": 0.5556833330192603, + "client_elapsed": 0.5576262500253506 + }, + { + "status": "success", + "filename": "01030000000145.pdf", + "markdown": "## Chapter 4\n\n## Nonlinear equations\n\n## 4.1 Introduction\n\nThe pressure drop in a fluid in motion is examined. For a flow in a pipe with a circular cross section of diameter D (meter), the Reynolds number, Re , is given by\n\n\n\nin which v ( m / s ) is the average flow velocity and ν ( m 2 / s ) is the viscosity of the fluid. The flow is called laminar if Re < 2100 (low flow velocity) and turbulent if Re > 3000. For 2100 ≤ Re ≤ 3000, the flow is neither laminar nor turbulent.\n\nFor turbulent flows, the pressure drop between inflow and outflow is given by\n\n\n\nin which w is a friction coefficient, ρ ( kg / m 3 ) is the fluid density, L ( m ) is the length and g ( m / s 2 ) is the acceleration of gravity. If the fluid contains particles (sand, paper fibers), then the friction coefficient w satisfies the equation\n\n\n\nin which k is a parameter known from experiments.\n\nIn this chapter, numerical methods will be discussed that can be used to determine w if the values of Re and k are known.\n\n## 4.2 Definitions\n\nIn this chapter, various iterative methods will be considered to solve nonlinear equations of the form f ( p ) = 0. The point p is called a zero of the function f , or a root of the equation f ( x ) = 0. First, some useful definitions and concepts are introduced.\n\n## Convergence\n\nEach numerical method generates a sequence { pn } = p 0, p 1, p 2, . . . which should converge to p : lim n → ∞ pn = p . Assume that the sequence indeed converges, with pn = p for all n . If there exist positive constants λ and α satisfying\n\n/negationslash\n\n", + "processing_time": 0.2955046250135638, + "client_elapsed": 0.29714441701071337 + }, + { + "status": "success", + "filename": "01030000000146.pdf", + "markdown": "\n\n\n\norganizations to navigate successfully the global digital economy. Finally each of the identified competences, within the Framework will correspond to the different e-learning modules (PR2) and e-game levels (PR3)\n\n## Reference frameworks:\n\n- ⮚ GreenComp -'The European Sustainability Competence Framework' (1), responds to the growing need for people to improve and develop the knowledge, skills and attitudes to live, work and act in a sustainable manner.\n\nGreenComp is a reference framework for sustainability competences. It provides a common ground to learners and guidance to educators, providing a consensual definition of what sustainability as a competence entails. It is designed to support education and training programmes for lifelong learning. It is written for all learners, irrespective of their age and their education level and in any learning setting -formal, non-formal and informal. Sustainability competences can help learners become systemic and critical thinkers, as well as develop agency, and form a knowledge basis for everyone who cares abou t our planet's present and future state. The aim of GreenComp is to foster a sustainability mindset by helping users develop the knowledge, skills and attitudes to think, plan and act with empathy, responsibility, and care for our planet.\n\nGreenComp is the result of a robust research methodology that has involved a large and diverse group of experts and stakeholders, to build a consensus on an agreed proposal. It provides a general reference model that everyone involved in lifelong learning can use to design learning opportunities aimed at developing sustainability competences and to assess progress in supporting education and training for sustainability.\n\nGreenComp consists of 12 competences organised into the four main areas below:\n\n| Area | Competence |\n|-------------------------------------------|----------------------------|\n| 1. Embodying sustainability values | 1.1 Valuing sustainability |\n| 1. Embodying sustainability values | 1.2 Supporting fairness |\n| 1. Embodying sustainability values | 1.3 Promoting nature |\n| 2. Embracing complexity in sustainability | 2.1 Systems thinking |\n| 2. Embracing complexity in sustainability | 2.2 Critical thinking |\n| 2. Embracing complexity in sustainability | 2.3 Problem framing |\n| 3. Envisioning sustainable futures | 3.1 Futures literacy |\n| 3. Envisioning sustainable futures | 3.2 Adaptability |\n\nProject No:\n\n:\n\n2021-2-FR02-KA220-YOU-000048126", + "processing_time": 0.6587457089917734, + "client_elapsed": 0.661461416981183 + }, + { + "status": "success", + "filename": "01030000000147.pdf", + "markdown": "\n\n## 3. RECOLLECTION OF NATIONAL INITIATIVES\n\nPartners were also asked to recollect initiatives from their respective countries that represented the core values and practices of a Circular Economy or Social Entrepreneurship:\n\n\n\n| Source (doc, report, etc.) | Year | Description of the initiative | Circular Economy issues addressed |\n|----------------------------------------------------------------------------------------------------------------|--------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Eco-Ecole Program https://www.ec o-ecole.org/le- programme/ | 2005 | Eco-Ecole is the French version of Eco-Schools, an international program for education in sustainable development (ESD), developed by the Foundation for Environmental Education. The Teragir association launched the Eco-School program in 2005. The program aims to help students better understand the world around them in order to flourish and participate in it. | Eco-Ecole offers instructions for teaching teams to effectively deploy sustainable development from kindergarten to high school. |\n| Horsnormes https://horsnor mes.co/ | 2020 | Horsnormes is a website which provide baskets of fruits and vegetables that are directly collected from farmers. It helps farmers to gain money while the consumers pay a faire price in exchange of the product, which foster the reduction of food waste. | Waste reduction of fruits and vegetables. |\n| Fondation Terre Solidaire (Solidarity Earth Foundation) https://fondatio n- terresolidaire.o rg/quest-ce- que- | 2016 | The Terre Solidaire Foundation was created in 2016 by CCFD-Terre Solidaire to act, particularly in France, in the face of the two major challenges of our time: the massive degradation of our environment (including biodiversity and climate), and the need to building a fairer and more ecologically responsible society. The association remains mobilized on its | Support and encourage initiatives carried out by citizen mobilizations and actors of the social and solidarity economy in the design, implementation, dissemination and experimentation of |\n\nThis project has been funded with the support of the European Commission. This publication reflects the views only of the author and the Commission cannot be held responsible for any use which may be made of the information contained therein.\n\nProject No: : 2021-2-FR02-KA220-YOU-000048126\n\n", + "processing_time": 0.6286812089965679, + "client_elapsed": 0.6307585419854149 + }, + { + "status": "success", + "filename": "01030000000148.pdf", + "markdown": "\n\n\n\nAs seen in this chart of responses, we were very satisfied to reach diversity in age groups, with all groups being represented by over 10%. The main group reached was of ages 36-45, and the least represented was the youngest age group of 18-25.\n\n\n\nRegarding the education level of responders, we were satisfied to receive a very high level of responses with Bachelor's or higher d egrees, with the significant share of others coming from\n\nUpper Secondary-educated participants. There was also a small representation of non-formal training, as well as >1% representation for other options.\n\n\n\nFor responders' profession, the most commo n answers representing 19.7% equally, were Youth Workers and Project Managers, although practising Social Entrepreneurs were also well represented, along with an 8% response rate from self-declared circular economy experts.\n\nThis project has been funded with the support of the European Commission. This publication reflects the views only of the author and the Commission cannot be held responsible for any use which may be made of the information contained therein.\n\nProject No: : 2021-2-FR02-KA220-YOU-000048126", + "processing_time": 1.2795024999650195, + "client_elapsed": 1.2824468330363743 + }, + { + "status": "success", + "filename": "01030000000149.pdf", + "markdown": "\n\n\n\nWith this in mind, here we have the 7 key competence areas selected to form a part of EcoCircle's Competence Framework:\n\n| Eco-Circle Competence Framework |\n|--------------------------------------------------------|\n| #1 : The 3 Rs: Recycle-Reuse-Reduce |\n| #2: Lifecycle of Circular Economy |\n| #3: Social Entrepreneurship and Circular Economy |\n| #4: Corporate Environmental Sustainability |\n| #5: Embodying Sustainable Values |\n| #6: Environmental Engagement |\n| #7: Supporting Local Eco-friendly and Green Activities |\n\nProject No:\n\n:\n\n2021-2-FR02-KA220-YOU-000048126", + "processing_time": 0.5333126249606721, + "client_elapsed": 0.5352342500118539 + }, + { + "status": "success", + "filename": "01030000000150.pdf", + "markdown": "\n\n\n\n## 6. ECO CIRCLE COMPETENCE FRAMEWORK\n\n| Competence Area | #1 THE 3 RS: RECYCLE -R EUSE -R EDUCE |\n|----------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Competence Statement | To know the basics of the 3 Rs and their importance and implementation into daily life in relation to green entrepreneurship and circular economy. |\n| Learning Outcomes | Learning Outcomes |\n| Knowledge | ● To understand the meaning of reducing, reusing and recycling and how they connect ● To understand the importance of the 3 Rs as waste management ● To be familiar with the expansion of the 3 Rs - the 7 Rs |\n| Skills | ● To implement different ways of waste management into daily life ● To properly implement recycling in day-to-day activities ● To promote reducing and reusing before recycling |\n| Attitudes and Values | ● To acquire a proactive approach to implementing the 3 Rs into daily personal life ● To educate others on the importance of sustainable waste management |\n\nProject No: : 2021-2-FR02-KA220-YOU-000048126", + "processing_time": 0.5669242079602554, + "client_elapsed": 0.5689881250145845 + }, + { + "status": "success", + "filename": "01030000000151.pdf", + "markdown": "## CHAPTER 1.\n\n## CALIFORNIA\n\nJAMES GLAPA-GROSSKLAG\n\n## COURSE MARKING DRIVERS\n\nSB1359 was passed in September 2016, going into force in January 2018. The law 'requires California Community Colleges and California State Universities and requests the University of California system to include a symbol/logo in the online campus course schedule by January 1, 2018 for courses that exclusively use digital course materials that are free of charge to students and therefore not required to be purchased.'\n\nThe potential scale of impact is significant. With 114 colleges serving 2.1 million students, the California Community Colleges (CCCs) comprise the largest public system of higher education in the US. The California State University (CSU) with 23 campuses serving nearly 500,000 students, is the largest four-year public university system in the US. Notably, the law does not apply to the state's research-focused University of California.\n\nFigure 1.1: Zero Cost Textbook Logo\n\n\n\n## IMPLEMENTATION\n\nBetween the passage of the law in 2016 and the implementation of the law in 2018, both the CCCs and CSU systems engaged in outreach to the field. The CCCs' system office issued a memo to college leadership explaining the requirements and created a sample logo that colleges could choose to adopt. The CSU system's Affordable Learning Solutions team engaged the field with a series of webinars and FAQs.", + "processing_time": 0.28040845796931535, + "client_elapsed": 0.28182620799634606 + }, + { + "status": "success", + "filename": "01030000000152.pdf", + "markdown": "should adopt two separate designators to mark no-cost vs. low-cost, but the council felt it was better to simplify the process and allow for some OER providers that have fees associated with their services.\n\nAt this point in time, the application of the #NOLO designator was a manual process. It required the addition of the designator to the section title prior to registration and then its removal after add/drop to ensure the label didn't appear on the student transcript. This process severely hampered our longterm reporting abilities. In total, four colleges adopted the #NOLO designator in this fashion.\n\nTo assist in greater faculty and institutional adoption as well as improve data capture, the CSCU OER Advisory Council made a formal recommendation to the provost's academic council in Spring 2018 to implement the #NOLO designator as a course section attribute within the student information system. In addition to adding a course section attribute, a student-facing course search filter was added as well as an additional column within the course search results page.\n\nFigure 2.1: Filtered Search Option for NOLO Sections.\n\n\n\nFigure 2.2: Added Column in Results for NOLO\n\n\n\nDesignator.\n\nThe request to implement the designator within the student information system was supported in Fall 2018 by the president's cabinet. The ability to mark courses was enabled late Fall 2018 and the student-facing features were enabled in January 2019. Each institutional representative on the OER council engaged with their local governance structures to request a vote for adoption.", + "processing_time": 0.6896754169720225, + "client_elapsed": 0.691442959010601 + }, + { + "status": "success", + "filename": "01030000000153.pdf", + "markdown": "CHAPTER 7.\n\n## TEXAS\n\nMICHELLE REED\n\n## COURSE MARKING DRIVERS\n\nI've worked at the University of Texas at Arlington (UTA) for the last three years as Open Education Librarian and was recently promoted to the leadership team as Director of Open Educational Resources following a half-million-dollar investment in OER from university administration. It was in my first year as Open Education Librarian that the Texas Legislature passed Senate Bill 810 (SB810), which requires institutions of higher education across the state to provide searchable information to students about OER-only courses. A strong definition of OER was provided:\n\n'teaching, learning, and research resources that reside in the public domain or have been released under an intellectual property license that allows for free use, reuse, modification, and sharing with others, including full courses, course materials, modules, textbooks, streaming videos, tests, software, and any other tools, materials, or techniques used to support access to knowledge.'\n\nHowever, Texas was not given a very long implementation window. The bill passed in June 2017, effective immediately, with a compliance deadline of Spring 2018. We in higher education know a change of this scope, and impacting as many stakeholders as course marking does, takes longer. A recent survey commissioned by the Digital Higher Education Consortium of Texas (DigiTex) and administered in May 2019 shows only 59 respondents of the 158 two-and four-year institutions that received the statewide survey have a course marking solution in place. The findings were presented in Open Educational Resources (OER) in Texas Higher Education, 2019 . 1\n\n1. Jimes, C., Karaglani, A., Petrides, L., Rios, J., Sebesta, J., & Torre, K. (2019). Open Educational Resources (OER) in Texas Higher Education, 2019 . Austin, TX: Digital Higher Education Consortium of Texas and Texas Higher Education Coordinating Board; Half Moon Bay, CA: Institute for the Study of Knowledge Management in Education.", + "processing_time": 0.27012487495085225, + "client_elapsed": 0.27162487496389076 + }, + { + "status": "success", + "filename": "01030000000154.pdf", + "markdown": "Figure 7.1: Texas OER landscape survey results show terms used in course schedules\n\n\n\n## IMPLEMENTATION\n\nLocally, we implemented a quick and free solution that reflects the constraints of system capabilities, no financial support, and a local directive to vet every course to be tagged. Based on what was feasible in the short term and conversations with key stakeholders (i.e., registrar, early OER adopters, curriculum coordinators, student representatives, and the campus store), we incorporated an 'educational resources cost' option into an existing 'course attribute' drop-down menu under the system's advanced search options.", + "processing_time": 0.9436200000345707, + "client_elapsed": 0.9449507499812171 + }, + { + "status": "success", + "filename": "01030000000155.pdf", + "markdown": "## Contents\n\n| 1. | Front Matter | 1 |\n|------|---------------------------------------------|-----|\n| 2. | Introduction to Researching Wicked Problems | 3 |\n| 3. | Our Mental Shortcuts | 13 |\n| 4. | Identifying a Topic | 25 |\n| 5. | Types of Sources | 38 |\n| 6. | Access & Searching | 55 |\n| 7. | SIFTing Information | 67 |\n| 8. | Evaluating News Sources | 80 |\n| 9. | Audience, Presentation & Citation | 88 |\n| | Instructor Resources | 97 |\n\n1\n\n3\n\n97", + "processing_time": 0.6217217080411501, + "client_elapsed": 0.6234303340315819 + }, + { + "status": "success", + "filename": "01030000000156.pdf", + "markdown": "## Fact-Checking 2\n\nIn this context, we are talking about fact-checking that is done before a source is published. Over the last two decades there has been an increase in fact checking as an activity that takes place after a source has been published, a practice discussed in more detail in the chapter, SIFTing Information.\n\nFact checkers verify that the names, dates, and facts in a work (usually an article or book) are correct. For example, they may contact a person who is quoted in a proposed news article and ask the person whether this quotation is correct, or how to spell the person's name. Factcheckers are primarily useful in catching accidental mistakes.\n\nThe number of people employed in fact-checking varies by publication. Some organizations have substantial fact-checking departments. Others may hire freelancers per piece, or may combine fact-checking with other duties. Magazines are more likely to use fact checkers than newspapers. Television and radio programs rarely employ dedicated fact checkers, and instead expect others, including senior staff, to engage in fact-checking in addition to their other duties.\n\n2. Content in this section is adapted from the Wikipedia entry 'Fact-checking' (https:/ /en.wikipedia.org/wiki/ Fact-checking) and is used under a CC BY-SA 3.0 license.", + "processing_time": 0.2295520000043325, + "client_elapsed": 0.23067104199435562 + }, + { + "status": "success", + "filename": "01030000000157.pdf", + "markdown": "## Stop\n\nCheck your emotions. If a claim causes strong emotion - anger, glee, pride, vindication - STOP. You must fact-check this claim. Remember from the chapter, Our Mental Shortcuts, that we more readily accept information that confirms our beliefs (confirmation bias) and we tend to think less critically about that kind of information than we do about information that challenges our beliefs (motivated reasoning.) A strong emotional reaction is a sign that these cognitive biases are at work. Remember, these mental shortcuts don't make us bad people, we all have them. But we do need to account for them if we want to move toward better information.\n\nIn addition, if you get lost while working on the other moves, or hit dead ends, or find yourself going down an increasingly confusing rabbit hole during your investigation, STOP. Back up and start over knowing what you know now. You're likely to take a more informed path with\n\n\n\ndifferent search terms and better decisions.", + "processing_time": 0.19804020796436816, + "client_elapsed": 0.1991408749599941 + }, + { + "status": "success", + "filename": "01030000000158.pdf", + "markdown": "to expand this section to include notes, tips and feedback from TWP instructors. If you use these materials, please let me know how it went, what worked for you, and any suggested changes or additions. I'd love to hear from you at chwixson (at) plymouth (dot) edu or fill out as much of [this form] as you'd like.\n\n## Introduction\n\nThroughout the chapters, I tried to generate Reflection & Discussion Questions that could be used either as in class (whole group or think/pair/share) discussion prompts or as written reflections assigned out of class. If your students generate any written answers to any of the Reflection & Discussion Questions in this chapter, I would be very interested to see them.\n\n## Our Mental Shortcuts\n\nIf you'd like to reinforce Kahneman's ideas about System 1 and System 2 thinking the video below (12 minutes) is very good, (thanks to Mike Davidson for this suggestion.)\n\n/ /www.youtube.com/embed/UBVV8pch1dM\n\nReflection & Discussion Question 1: Taking Stock of What You Already Know", + "processing_time": 0.19505470799049363, + "client_elapsed": 0.19665620801970363 + }, + { + "status": "success", + "filename": "01030000000159.pdf", + "markdown": "be a starting point for asking questions too, but I would recommend against brainstorming as the only strategy towards topic and question identification since it does not enable students to get to topics they didn't know existed.\n\nI struggle with getting students to actually read the sources we find together in our research consultations. They seem to want to do all the searching first and all the reading later. No matter how I tell them it's iterative and you need to go back and forth between reading and searching many many times, the messages wasn't landing. This chapter is my next iteration in how to talk about the research process, but I really don't now what the secret recipe is yet. Let me know if you think this one lands.\n\n## Types of Sources\n\nI am a big fan of Mike Caulfield's information literacy work (see the next chapter, SIFTing Information.) Sometimes I have found my attempts to use his strategies in the classroom were hard for students. For example, when I've tried the exercise about the American Academy of Pediatrics and the American College of Pediatricians (Reflection & Discussion Question 1) without first talking about professional organizations, students rarely got how they were different, and it did not build their confidence.\n\nIt's hard to identify a legitimate professional association if you've never heard of the concept of professional associations. This chapter may be long, but I felt it was important to enumerate at least some of the dimensions of the sources they may find, so that when we get to Caulfield's SIFT method they are set up for success.", + "processing_time": 0.19471558299846947, + "client_elapsed": 0.19576675002463162 + }, + { + "status": "success", + "filename": "01030000000160.pdf", + "markdown": "Other advice that might smooth the way for this exercise is to remind students right before they start that we aren't interested in what these organizations' websites say about themselves, but what they can learn about them from the rest of the internet. Encourage use of Wikipedia for this type of source research. Encourage them to slow down and to practice 'click restraint' once they have Googled one of these orgs. What can they learn from looking at just the search results page, without clicking through to anything? What is the overall impression from a variety of results?\n\n- Center for Consumer Freedom: Many of the Google search results (with or without including the search term funding) indicate this is astroturing. A look at the Wikipedia page tells us that this org was started by a pretty well known PR guy and the sidebar lists their focus as 'represents the interests of restaurant and food companies' and their method as 'lobbying.'\n- National Consumers League: Students may note that it has been around since 1899, has no critical results on the first page of Google results, and even has an entry in the Encyclopedia Britannica.\n- One Fair Wage: a legitimately grass-roots effort to raise the minimum wage for restaurant workers.\n- Save Our Tips: This is one case where adding the word funding to the search helps a bit. If we do that we find sources indicating that this group is funded in part by the National Restaurant Association and a conservative strategy and consulting group. Not what you would expect for a grassroots effort lead by waitstaff.", + "processing_time": 0.19522837497061118, + "client_elapsed": 0.19623358396347612 + }, + { + "status": "success", + "filename": "01030000000161.pdf", + "markdown": "of any individual to color their decisions, even when they're acting in good faith.\n\n- Credentials: Academic credentials tend to represent a significant commitment of time towards gaining mastery of a subject, and therefore requiring a particular degree may increase the likelihood of accurate information. However, not all groups are equally represented in higher education. Degree completion is uneven across race and income factors (among others), making academia not demographically representative of our society as a whole. Some perspectives are therefore systematically underrepresented in groups with advanced degrees.\n- Peer Review: Peer review sometimes only results in collaborative improvements to a work. It can also prevent the publication of very obviously flawed or poorly executed or analyzed research. Very new or radical ideas may be initially rejected because they are such a departure from existing dogma. Peer review is largely a practice of academia, therefore has the same exclusionary problems mentioned in the credentials section. It is possible for individual reviewers to act in a biased or unethical way to prevent the publication of some works.\n- Fact Checking: Not a lot of downside here. Let me know if your students come up with anything good.\n- Domains: For some top level domains (mostly just .gov and .edu) looking at the domain provides some assurance that the web content there is an official communication of a particular institution. There really isn't any problem with domains excluding", + "processing_time": 0.19543220900231972, + "client_elapsed": 0.19644799997331575 + }, + { + "status": "success", + "filename": "01030000000162.pdf", + "markdown": "1. Edward Bernays\n2. Wikipedia. Public Relations\n3. Pinterest. Retrieved June 10, 2021.\n4. Bernays, Edward. Crystalizing Public Opinion.\n5. Encyclopedia of Propaganda\n\n## Possible directions for the discussion:\n\n- What the sources suggest about the level of research. Do sources like Wikipedia and Pinterest indicate a deep engagement with the topic? What about the Encyclopedia of Propaganda? Call back to the chapter, Identifying a Topic, encyclopedias are good preliminary sources, but if research stops with an overview source, how valuable is it?\n- Ways in which the citations are ambiguous. Is enough information provided that readers can find the original information? Is number 1 about that person or written by that person? Is number 4 a book or an article? It has implications for how we would look for it. For number 5, there is more than one book with the title Encyclopedia of Propaganda, and also it's unlikely they meant to refer to the whole encyclopedia.\n- The difference between discovering a source on a social media platform and citing the content. Is enough information given to find the Pinterest source? Revisit the creator concept from the chapter, Types of Sources. Social media companies distribute but do not create content, so they are not the ones that should be cited. Opportunity to talk about specific sources students have found on social media", + "processing_time": 0.20408920902991667, + "client_elapsed": 0.20541858300566673 + }, + { + "status": "success", + "filename": "01030000000163.pdf", + "markdown": "## HOW CAN YOU HELP?\n\n## As a boater:\n\n- Check tidal conditions beforehand\n- Stay within marked channels\n- Pay attention to buoys and markers\n- Do not run aground\n- If you run aground, call for help\n- Wear polarized sunglasses\n- Take a safe boating course\n\n## As a developer:\n\n- Do careful mapping of seagrass in potential areas for development\n- Avoid dredging and filling\n- Learn about existing regulations\n\n## As a homeowner:\n\n- Diminish fertilizer use (use soaking, rain gardens, and native plants instead)\n- Dispose of pet waste properly\n- Keep seagrass in mind during construction (for example, build high docks with grating instead of planks)\n\n## As anyone who wants to help:\n\n- Urge politicians to establish stricter water quality regulations\n- Mobilize to give seagrass an 'endangered' status\n- Follow established laws for seagrass protection\n- Reach out to environmental organizations and volunteer in restoration projects\n- Challenge the misconception that seagrass is 'ugly' and 'useless'\n- Tell your friends and family about the importance of this ecosystem\n\n## FURTHER RESOURCES\n\n\n\n\n\nScan this QR code and learn more about seagrass, what you can do to help, and what organizations are fighting for its restoration!\n\n\n\n## SEAGRASS IN SOUTH FLORIDA\n\nWHY I T I S I M P O RTANT & WHAT YOU CAN DO\n\nCC0, 2022\n\n", + "processing_time": 1.8082079580053687, + "client_elapsed": 1.8189996249857359 + }, + { + "status": "success", + "filename": "01030000000164.pdf", + "markdown": "3Btg2 -26 to 31 in; dark grayish brown (10YR 4/2) crushed, silty clay; common coarse prominent dark yellowish brown (10YR 4/6) moist irregular mottles throughout; moderate medium prismatic structure parting to moderate coarse subangular blocky; extremely hard, very firm; common very fine and fine roots throughout; common very fine moderate continuity tubular pores; common distinct continuous very dark grayish brown (10YR 3/2), moist, clay films on vertical and horizontal faces of peds; strongly acid; clear wavy boundary. (0 to 15 in thick)\n\n3Btg3 -31 to 35 in; grayish brown (10YR 5/2) crushed, silty clay; common fine prominent dark yellowish brown (10YR 4/6) moist irregular mottles throughout; moderate medium subangular blocky structure; very hard, friable; common very fine and fine roots throughout; common very fine moderate continuity tubular pores; few faint continuous dark grayish brown (10YR 4/2), moist, clay films on vertical and horizontal faces of peds; common medium rounded very dark grayish brown (10YR 3/2) soft clay bodies pedogenic throughout and few medium rounded white (10YR 8/1) soft nests of gypsum pedogenic throughout; strongly acid; clear wavy boundary. (0 to 10 in thick)\n\n3Btg4 -35 to 42 in; grayish brown (10YR 5/2) crushed, silty clay loam; common fine prominent dark yellowish brown (10YR 4/6) moist irregular mottles throughout and common fine prominent yellowish brown (10YR 5/8) moist irregular mottles throughout; weak coarse prismatic structure parting to moderate medium subangular blocky; very hard, friable; common very fine and fine roots throughout; common very fine and fine moderate continuity tubular pores; few faint discontinuous dark grayish brown (10YR 4/2), moist, clay films on vertical faces of peds and few distinct continuous very dark grayish brown (10YR 3/2) moist, silt coats in root channels and/or pores; few medium rounded white (10YR 8/1) soft nests of gypsum pedogenic throughout; strongly acid; gradual wavy boundary. (0 to 10 in thick)\n\n3Btg5/E -42 to 54 in; dark grayish brown (10YR 4/2) exterior, silty clay loam; common fine prominent dark yellowish brown (10YR 4/6) moist irregular mottles throughout; moderate coarse prismatic structure parting to moderate medium subangular blocky; hard, friable; common very and fine roots throughout; many very fine and fine moderate continuity tubular pores; few faint discontinuous dark grayish brown (10YR 4/2) moist clay films on vertical faces of peds and few distinct continuous very dark grayish brown (10YR 3/2) moist, silt coats in root channels and/or pores; strongly acid; gradual wavy boundary. (0 to 15 in thick)\n\n3Btg6/E -54 to 69 in; light brownish gray (10YR 6/2) exterior, silty clay loam; common coarse prominent dark yellowish brown (10YR 4/6) moist irregular mottles throughout and common coarse prominent dark reddish brown (5YR 3/4) moist irregular mottles throughout; moderate coarse prismatic structure parting to weak coarse subangular blocky; slightly hard, very friable; common very fine and fine roots throughout; many very fine and fine moderate continuity tubular pores; few faint continuous grayish brown (10YR 5/2), moist, clay films on vertical faces of peds and few distinct continuous dark grayish brown(10YR 4/2) moist silt coats in root channels and/or pores; common fine rounded black (N 2/0) soft iron/manganese concretions pedogenic throughout; strongly acid; gradual wavy boundary. (0 to 20 in thick)\n\n3Btg7/E -69 to 86 in; light brownish gray (10YR 6/2) exterior, silty clay loam; common coarse prominent dark yellowish brown (10YR 4/6) moist irregular mottles throughout and common fine prominent dark brown (7.5YR 3/4.) moist irregular mottles throughout; weak coarse prismatic structure; slightly hard, very friable; few very fine roots throughout; common very fine and fine moderate continuity tubular pores; few faint discontinuous dark grayish brown (10YR 4/2), moist, clay films on vertical faces of peds and few distinct continuous grayish brown (10YR 5/2) moist, silt coats in root channels and/or pores; common fine rounded black (N 2/0) soft iron/manganese concretions pedogenic throughout and few medium irregular brown (10YR 5/3) soft clay bodies pedogenic in cracks; very strongly acid; clear smooth boundary. (0 to 20 in thick)\n\n3Btg8/E -86 to 97 in; 80% light brownish gray (2.5Y 6/2) exterior, and 15% yellowish brown (10YR 5/8), exterior, and 5% strong brown (7.5 YR 4/6), exterior, silty clay loam; moderate coarse prismatic structure parting to weak coarse", + "processing_time": 0.2761772500234656, + "client_elapsed": 0.27732737496262416 + }, + { + "status": "success", + "filename": "01030000000165.pdf", + "markdown": "\n\n## Table 13.2. Effect of cations on flocculation of a clay suspension.\n\n| Added cation | Relative Size & Settling Rates of Floccules |\n|----------------|-----------------------------------------------|\n| K+ | |\n| Na+ | |\n| Ca2+ | |\n| Al3+ | |\n| Check | |\n\n## Activity 4. Determining CEC by replacing adsorbed cations.\n\nIn this activity, you will titrate the filtrate with a 0.01 molar solution of NaOH using phenolphthalein as an indicator. Phenolphthalein changes from colorless to faint pink when the quantity of OH -ions added via the NaOH equals the quantity of H + ions in the solution (that is, when the pH is raised to 7). For this activity, assume the soil samples have been extracted and the filtrates are now available for analysis.\n\n1. Place 10 ml of each filtrate into separate 125 ml flasks. This 10 ml quantity is the amount of filtrate from 1.0 gram of soil.\n2. Add 10 drops of the phenolphthalein indicator.\n3. Titrate the extract with the NaOH solution to a faint pink endpoint. The titration must be done very carefully to obtain meaningful results. If you put too much NaOH in the flask and get a bright pink color, discard the solution and repeat the process. In the table below, record the milliliters of NaOH solution used to achieve the endpoint.\n\n\n\nCalculate the CEC and record your data in Table 13.3.\n\nHere is an example of how to calculate the CEC, assuming 2.5 mL of NaOH was required to achieve an end point. The reaction occurring during titration is\n\nThus, one mole of NaOH reacts with one mole of H + . Therefore, at the phenolphthalein end point, moles of NaOH added = moles of H+ in solution.\n\nThe solution of 0.01 molar NaOH contains 1 cmol charge per liter (1 cmolc/L). Therefore 2.5 mL NaOH contains\n\nThus, the CEC is", + "processing_time": 0.6413942080107518, + "client_elapsed": 0.6436471249908209 + }, + { + "status": "success", + "filename": "01030000000166.pdf", + "markdown": "## Activity 5. Calculating versus estimating CEC\n\nThere are two ways you can calculate the CEC: the sum of cations method and the mineralogy method.\n\n## The Sum-of-Cations Method\n\nIf you have a soil analysis where the quantities of all cations in the soil are listed, simply summing all those exchangeable quantities will yield the CEC you found in the preceding problems.\n\n## The 'Mineralogy' Method\n\nAs you know from your reading and class discussion, clay minerals have a range of values for CEC. If the mineralogy of the clay fraction is known (that is, the type and amounts of each clay mineral), then the CEC can be approximated.\n\nTo make these calculations easier, Table 13.4 contains representative values for CEC to use in all calculations for this class unless otherwise noted. In nature, however, these soil colloids will have a range of values.\n\n## Table 13.4. Typical CEC of various soil colloids.\n\n| Mineral or colloid type | CEC of pure colloid cmolc/kg |\n|---------------------------|--------------------------------|\n| kaolinite | 10 |\n| illite | 30 |\n| montmorillonite/smectite | 100 |\n| vermiculite | 150 |\n| humus | 200 |\n\nAs an example of this mineralogy approach to CEC calculations, consider a soil having 100% clay where the clay is 100% kaolinite. The CEC would then be 10 cmolc/kg. If a soil contains only 10% kaolinite (or 10 kg clay in 100 kg soil), however, this clay would contribute\n\nA prairie soil contains 30% clay. This clay sized fraction is dominantly montmorillonite. The soil also contains 5% humus (organic matter).\n\n\n\nUsing the mineralogy method, what is the cation exchange capacity (CEC) contributed by the clay?", + "processing_time": 0.5700708329677582, + "client_elapsed": 0.5718195409863256 + }, + { + "status": "success", + "filename": "01030000000167.pdf", + "markdown": "The acidic cations adsorbed on the negative exchange sites are called the reserve ( also residual or potential) and saltreplaceable ( also exchangeable) acidity. The reserve and salt-replaceable acidity controls the level of soluble or active acidity in the soil solution. Only the active acidity is measured in a routine pH determination. The reserve and saltreplaceable acidity is always many times higher than the active acidity.\n\nA soil is acid when hydrogen ions predominate in the soil. The degree of acidity is expressed in terms of pH, which is defined as the negative logarithm of the hydrogen ion activity. Therefore, the pH of a 0.01-molar hydrogen ion solution is\n\nAt pH 7, the concentration of H+ ions and OH- ions are equal, and the soil or solution is neutral. At pH values less than 7, the soil is acid; at values more than 7, the soil is alkaline. Most soils vary in pH from about 4 to 10. Soils in areas with high rainfall are generally acid with a pH less than 7. Soils developed in high-lime deposits often will be alkaline. Soils high in calcium seldom have pH values higher than 7.5, but the presence of large amounts of calcium carbonate may cause the pH to be as high as 8.5. Where the pH is higher than 8.5, an excess of sodium is highly probable.\n\nThe most desirable soil pH for most crops in Kansas is 6.8. However, crops like blueberries need a lower pH, and other crops, like alfalfa, need a higher pH. At soil pH less than 5.8, several problems may occur:\n\n- Al and Mn toxicity\n- Inhibited growth of N-fixing bacteria\n- Possible deficiencies in Mg and/or Ca.\n- P deficiency (P reacts with Fe and Al)\n- At more than pH 7.5, other problems may occur:\n- Deficiency of Fe, Mn, Cu, or Zn\n- P deficiency (P reacts with Ca)\n\n## Buffering Capacity\n\nBuffering capacity is a measure of the soil's ability to resist a change in pH, directly related to the magnitude of the exchange capacity. Small fluctuations in acid or base content can occur without a noticeable pH change as cations are adsorbed or released from the exchange complex. Soils with the largest cation exchange capacity have the greatest buffering of a pH change. In other words, two soils may have the same pH (active acidity in soil solution), but the one with the largest cation exchange capacity will have the most acidity stored in reserve and therefore the highest buffering capacity or ability to resist a change in pH. For this reason, it takes less lime to increase the pH of a sandy soil (low CEC) by a given amount than it takes to increase the pH of a clay soil (higher CEC) the same amount.\n\n## Sources of Soil Acidity\n\nControlling soil pH is vital to optimal use and productivity of soils. Adding lime is the most effective and practical way to raise the pH of acid soils. Elemental sulfur, iron sulfate, or aluminum sulfate can be used to reduce soil pH. Because acidity is a concern in Kansas, we will focus on raising soil pH. Understanding the following equations should help you understand the sources of soil acidity and soil reactions to lime.", + "processing_time": 0.3002223340445198, + "client_elapsed": 0.3019894590252079 + }, + { + "status": "success", + "filename": "01030000000168.pdf", + "markdown": "Soils with the same pH may require different amounts of limestone due to differences in CEC, which would imply differences in buffering capacities. For example, consider the amount of limestone necessary to raise the base saturation of two soils from 70% to 90% when one soil has a CEC of 15 cmolc/kg, and the other has a CEC of 40 cmolc/kg.\n\nLastly, soil pH is governed by base saturation. If other factors are constant, the lower the pH, the more lime that is required to achieve a desired pH. This is because at a low pH, a larger percentage of the CEC is occupied by acid cations, which requires larger amounts of lime to neutralize.\n\n## Activity 1: Determining pH With Indicator Strips (Field Method)\n\nOf the several techniques available for determining pH, one that can be used easily in the field is the indicator strip method. This technique uses the principle of pH sensitivity of certain dyes, which cause differences in color across a range in pH. With the soils provided, complete the following pH determination:\n\nWeigh 10.0 g of soil into a small plastic cup. Add 20 ml of distilled water and stir. Allow to stand for 5 minutes, occasionally stirring.\n\nUsing the pH indicator strips provided, dip the strip into the cup until the tip is wetted. Determine the pH by comparing the color change of the pH test strip to the color chart.\n\n\n\nRecord the soil pH in Table 14.1.\n\n## Activity 2: Determining Soil pH with a pH Meter\n\nLaboratory pH meters are more accurate than pH dyes and strips. The pH meter measures the hydrogen ion activity [H + ] by measuring the electric potential across a thin, porous glass membrane at the base of the electrode. This potential changes in response to [H + ], and by standardizing the instrument with buffers of known pH, we can measure the pH of any solution, including soil solutions.\n\nUsing the samples prepared in Activity 1, carefully place the electrode in the suspension. Gently swirl the electrode in the solution, and note the pH reading. Wait for the pH meter to reach a steady reading, indicated by the word 'ready' on the screen.\n\n\n\nRecord the value for this 1:2 soil-water suspension in Table 14.1.", + "processing_time": 0.3041393749881536, + "client_elapsed": 0.3058315410162322 + }, + { + "status": "success", + "filename": "01030000000169.pdf", + "markdown": "- Lime is recommended if pH < 5.8\n- Depth is in inches\n- Used if cash flow is limited or in lime availability problem areas in Central and Western Kansas\n- Lime is recommended if pH < 5.5\n\nThis buffer contains chromium (Cr), a toxic heavy metal. Therefore, your lab instructor will perform the SMP buffer analysis. As a class, determine which soil-water mixtures from Activity 1 need lime (pH ≤ 6.4). To those solutions, add 10 ml of the SMP buffer solution, and stir with a glass rod. Allow the mixtures to stand for 30 minutes, which should be enough time for the acid cations to be displaced from the CEC and forced into solution. Read the pH on meter.\n\n\n\nAssuming the desired pH is 6.0 (i.e. use the middle equation), calculate the lime requirement, show your work below, and record your results in Table 14.1.\n\n## Activity 5: Evaluating Liming Materials\n\nThe type of liming material and the size or fineness of the material determine how efficiently liming materials raise soil pH. This experiment was actually initiated earlier in the semester to allow time for the liming agents to react. Amending the soil with several different liming agents allows us assess the effects of particle size and liming material based on the relative changes in soil. The treatments included the following:\n\n- Reagent grade CaCO3\n- Reagent grade CaO\n- Reagent grade CaSO4\n- Coarse dolomitic limestone (35 mesh)\n- Fine dolomitic limestone (120 mesh)\n- Control (no amendments)\n\nWhen this experiment was initiated, each lab section was divided into six groups, with each group responsible for one of the six treatments. Your laboratory instructor assigned a treatment to your group, and you completed the following steps:\n\n1. Label four plastic bags\n2. Weigh 20 g of air-dry soil into each plastic bag.\n3. Weigh 0.1 gram of designated liming material onto weighing paper.\n4. Add the liming material to the soil and mix thoroughly to distribute evenly in the soil.\n5. Add a few mL of water to each bag and mix.\n6. Close the bags to start incubation.\n\nNow that the liming agents have had time to react, you will collect the results.", + "processing_time": 0.30265587504254654, + "client_elapsed": 0.30491829197853804 + }, + { + "status": "success", + "filename": "01030000000170.pdf", + "markdown": "## cropping.\n\n| | Contour Farming | Contour Farming | Contour Strip Cropping | Contour Strip Cropping | Contour Strip Cropping |\n|--------------------|-----------------------|-------------------|--------------------------|--------------------------|--------------------------|\n| Slope Gradient (%) | Max Slope Length (ft) | P Value | Strip Width (ft) | P Value,RGMM | P Value, RRGM |\n| 1 - 2 | 400 | 0.6 | 130 | 0.30 | 0.45 |\n| 3 - 5 | 300 | 0.5 | 100 | 0.25 | 0.38 |\n| 6 - 8 | 200 | 0.5 | 100 | 0.25 | 0.38 |\n| 9 - 12 | 120 | 0.6 | 80 | 0.30 | 0.45 |\n| 13 - 16 | 100 | 0.7 | 80 | 0.35 | 0.52 |\n| 17 - 20 | 100 | 0.8 | 60 | 0.40 | 0.60 |\n\nTable adapted from Jones et al. (1988) with permission. †Strip cropping uses a four-year rotation of row crop followed by one year of a small grain and two years of meadow (forages) for RGMM, or uses two years of row crops followed by one year of small grain and one year of meadow for RRGM. Meadow includes alfalfa, clover, grass, etc.\n\n\n\n\n\nHow does the erosion rate under contour tillage compare to the tolerable erosion rate?\n\nHow does the erosion rate under contour tillage compare to the erosion rate under conservation tillage alone?\n\nNext we will test the impact of installing terraces on the landscape. Using Table 16.5, determine the Pt factor. When terraces are installed, contour tillage is usually used as well. Also, note that installing a terrace results in a shorter length of the slope (because the terrace stops water from continuing to run down slope), so this calculation is performed for each terrace individually. Also note that the net P factor is determined by multiplying the Pc and Pt values together, or writing the RUSLE as follows:\n\nTable 16.5. Conservation practice (P) values for terraces with underground outlets or waterways.\n\n| Terrace Interval | Underground Outlets | Waterways with percent grade of: | Waterways with percent grade of: | Waterways with percent grade of: |\n|--------------------|-----------------------|------------------------------------|------------------------------------|------------------------------------|\n| (ft) | | 0.1-0.3 | 0.4-0.7 | 0.8 |\n| | Pt Values | Pt Values | Pt Values | Pt Values |\n| <110 | 0.5 | 0.6 | 0.7 | 1.0 |\n| 110-140 | 0.6 | 0.7 | 0.8 | 1.0 |\n| 140-180 | 0.7 | 0.8 | 0.9 | 1.0 |\n| 180-225 | 0.8 | 0.8 | 0.9 | 1.0 |\n| 225-300 | 0.9 | 0.9 | 1.0 | 1.0 |\n| 300+ | 1.0 | 1.0 | 1.0 | 1.0 |", + "processing_time": 1.372004958044272, + "client_elapsed": 1.3738390829530545 + }, + { + "status": "success", + "filename": "01030000000171.pdf", + "markdown": "## Contents\n\n| Acknowledgment of Country | v |\n|-----------------------------------------------------------------------------------------|------|\n| Accessibility Information | vi |\n| Acknowledgments | vii |\n| About the Authors | viii |\n| Introduction | 1 |\n| Part I. Chapter One - Exploring Your Data | |\n| Section 1.1: Data and Types of Statistical Variables | 3 |\n| Section 1.2: Descriptive Statistics | 5 |\n| Section 1.3: Missing Data | 6 |\n| Section 1.4: Checking Values | 7 |\n| Section 1.5: Normality | 8 |\n| Section 1.6: Outliers | 9 |\n| Section 1.7: Chapter One Self-Test | 10 |\n| Part II. Chapter Two - Test Statistics, p Values, Confidence Intervals and Effect Sizes | |\n| Section 2.1: p Values | 12 |\n| Section 2.2: Significance | 13 |\n| Section 2.3: Confidence Intervals | 14 |\n| Section 2.4: Effect Sizes | 16 |\n| Section 2.5: Statistical Power | 17 |\n| Section 2.6: Chapter Two Self-Test | 18 |\n| Part III. Chapter Three - Comparing Two Group Means | |\n| Section 3.1: Looking at Group Differences | 20 |\n| Section 3.2: Between Versus Within Groups Analysis | 21 |\n| Section 3.3: Independent T-test Assumptions, Interpretation, and Write Up | 22 |\n| Section 3.4: Paired T-test Assumptions, Interpretation, and Write Up | 25 |\n| Section 3.5: Chapter Three Self-Test | 27 |\n| Part IV. Chapter Four - Comparing Associations Between Two Variables | |\n| Section 4.1: Examining Relationships | 29 |\n| Section 4.2: Correlation Assumptions, Interpretation, and Write Up | 31 |\n| Section 4.3: Chapter Four Self-Test | 33 |\n\nv\n\n1\n\n3\n\n5\n\n6\n\n7\n\n8\n\n9", + "processing_time": 1.1187550000031479, + "client_elapsed": 1.1217550830333494 + }, + { + "status": "success", + "filename": "01030000000172.pdf", + "markdown": "| Part V. Chapter Five - Comparing Associations Between Multiple Variables | |\n|---------------------------------------------------------------------------------------------|-----|\n| Section 5.1: The Linear Model | 35 |\n| Section 5.2: Simple Regression Assumptions, Interpretation, and Write Up | 36 |\n| Section 5.3: Multiple Regression Explanation, Assumptions, Interpretation, and Write Up | 39 |\n| Section 5.4: Hierarchical Regression Explanation, Assumptions, Interpretation, and Write Up | 43 |\n| Section 5.5: Chapter Five Self-Test | 47 |\n| Part VI. Chapter Six - Comparing Three or More Group Means | |\n| Section 6.1: Between Versus Within Group Analyses | 49 |\n| Section 6.2: One-Way ANOVA Assumptions, Interpretation, and Write Up | 51 |\n| Section 6.3 Repeated Measures ANOVA Assumptions, Interpretation, and Write Up | 54 |\n| Section 6.4: Chapter Six Self-Test | 62 |\n| Part VII. Chapter Seven - Moderation and Mediation Analyses | |\n| Section 7.1: Mediation and Moderation Models | 64 |\n| Section 7.2: Mediation Assumptions, The PROCESS Macro, Interpretation, and Write Up | 66 |\n| Section 7.3: Moderation Models, Assumptions, Interpretation, and Write Up | 69 |\n| Section 7.4: Chapter Seven Self-Test | 73 |\n| Part VIII. Chapter Eight - Factor Analysis and Scale Reliability | |\n| Section 8.1: Factor Analysis Definitions | 75 |\n| Section 8.2: EFA versus CFA | 76 |\n| Section 8.3: EFA Steps with Factor Extraction | 78 |\n| Section 8.4: EFA Determining the Number of Factors | 80 |\n| Section 8.5: EFA Interpretation | 84 |\n| Section 8.6: EFA Write Up | 86 |\n| Section 8.7: Scale Reliability | 87 |\n| Section 8.8: Chapter Eight Self-Test | 89 |\n| Part IX. Chapter Nine - Nonparametric Statistics | |\n| Section 9.1: Nonparametric Definitions | 91 |\n| Section 9.2: Choosing Appropriate Tests | 93 |\n| Section 9.3: Comparing Two Independent Conditions: The Mann- Whitney U Test | 94 |\n| Section 9.4: Comparing Two Dependent Conditions or Paired Samples - Wilcoxon Sign-Rank Test | 96 |\n| Section 9.5: Differences Between Several Independent Groups: The Kruskal-Wallis Test | 98 |\n| Section 9.6: Chapter Nine Self-Test | 100 |\n| References | 101 |\n\n101", + "processing_time": 1.2140631669899449, + "client_elapsed": 1.2167843750212342 + }, + { + "status": "success", + "filename": "01030000000173.pdf", + "markdown": "## Humanity's Home Base.\n\nFigure 1. This image shows the Western hemisphere as viewed from space 35,400 kilometers (about 22,000 miles) above Earth. Data about the land surface from one satellite was combined with another satellite's data about the clouds to create the image. (credit: modification of work by R. Stockli, A. Nelson, F. Hasler, NASA/ GSFC/ NOAA/ USGS)\n\n\n\nOur nearest astronomical neighbor is Earth's satellite, commonly called the Moon . Figure 2 shows Earth and the Moon drawn to scale on the same diagram. Notice how small we have to make these bodies to fit them on the page with the right scale. The Moon's distance from Earth is about 30 times Earth's diameter, or approximately 384,000 kilometers, and it takes about a month for the Moon to revolve around Earth. The Moon's diameter is 3476 kilometers, about one fourth the size of Earth.\n\nEarth and Moon, Drawn to Scale.\n\n\n\n|", + "processing_time": 0.46653320803306997, + "client_elapsed": 0.46923700004117563 + }, + { + "status": "success", + "filename": "01030000000174.pdf", + "markdown": "## Tycho Brahe's Observatory\n\nThree years after the publication of Copernicus' De Revolutionibus , Tycho Brahe was born to a family of Danish nobility. He developed an early interest in astronomy and, as a young man, made significant astronomical observations. Among these was a careful study of what we now know was an exploding star that flared up to great brilliance in the night sky. His growing reputation gained him the patronage of the Danish King Frederick II, and at the age of 30, Brahe was able to establish a fine astronomical observatory on the North Sea island of Hven (Figure 1). Brahe was the last and greatest of the pre-telescopic observers in Europe.\n\n## Tycho Brahe (1546-1601) and Johannes Kepler (1571-1630).\n\n\n\n\n\n(b)\n\nFigure 1 . (a) A stylized engraving shows Tycho Brahe using his instruments to measure the altitude of celestial objects above the horizon. The large curved instrument in the foreground allowed", + "processing_time": 0.4358268749783747, + "client_elapsed": 0.44116991601185873 + }, + { + "status": "success", + "filename": "01030000000175.pdf", + "markdown": "radiation at other wavelengths, as shown in (Figure 1). Just as you can catch more rain with a garbage can than with a coffee cup, large telescopes gather much more light than your eye can. Second, there is an instrument attached to the telescope that sorts the incoming radiation by wavelength. Sometimes the sorting is fairly crude. For example, we might simply want to separate blue light from red light so that we can determine the temperature of a star. But at other times, we want to see individual spectral lines to determine what an object is made of, or to measure its speed (as explained in the Radiation and Spectra chapter). Third, we need some type of detector , a device that senses the radiation in the wavelength regions we have chosen and permanently records the observations.\n\n## Orion Region at Different Wavelengths.\n\nFigure 1. The same part of the sky looks different when observed with instruments that are sensitive to different bands of the spectrum. (a) Visible light: this shows part of the Orion region as the human eye sees it, with dotted lines added to show the figure of the mythical hunter, Orion. (b) X-rays: here, the view emphasizes the point-like X-ray sources nearby. The colors are artificial, changing from yellow to white to blue with increasing energy of the X-rays. The bright, hot stars in Orion are still seen in this image, but so are many other objects located at very different\n\n", + "processing_time": 0.3262939170235768, + "client_elapsed": 0.3306631669984199 + }, + { + "status": "success", + "filename": "01030000000176.pdf", + "markdown": "vapor and other gases, making it useless. Only in the vacuum of space can optical elements be cooled to hundreds of degrees below freezing and still remain operational.\n\nThe first orbiting infrared observatory, launched in 1983, was the Infrared Astronomical Satellite (IRAS), built as a joint project by the United States, the Netherlands, and Britain. IRAS was equipped with a 0.6-meter telescope cooled to a temperature of less than 10 K. For the first time, the infrared sky could be seen as if it were night, rather than through a bright foreground of atmospheric and telescope emissions. IRAS carried out a rapid but comprehensive survey of the entire infrared sky over a 10-month period, cataloging about 350,000 sources of infrared radiation. Since then, several other infrared telescopes have operated in space with much better sensitivity and resolution due to improvements in infrared detectors. The most powerful of these infrared telescopes is the 0.85-meter Spitzer Space Telescope, which launched in 2003. A few of its observations are shown in Figure 2. With infrared observations, astronomers can detect cooler parts of cosmic objects, such as the dust clouds around star nurseries and the remnants of dying stars, that visible-light images don't reveal.\n\n## Observations from the Spitzer Space Telescope (SST).\n\nFigure 2. These infrared images-a region of star formation, the remnant of an exploded star, and a region where an old star is\n\n", + "processing_time": 0.33802579197799787, + "client_elapsed": 0.341198833019007 + }, + { + "status": "success", + "filename": "01030000000177.pdf", + "markdown": "Figure 7.3. You can read more about KSU's marketing approach in Marking Open and Affordable Courses (Hare, Kirschner, and Reed 2020).\n\n\n\nFor an even simpler graphic, we can look to Kansas State University. KSU's Open/Alternative Textbook Initiative developed their OER icon, a book with an 'O' on the cover, to be recognizable even at a small scale. This was done because it would be used as a marking denoting the use of open materials in their course schedule. This graphic is clear, easy to read, and emblematic of the initiative itself, by representing open textbooks with a book icon.\n\n## Aligning with Your Identity\n\nLike KSU did with their OER icon, your branding should be reflective of your initiative's work in some way. Think about your audience and what you want them to feel when they see your program's marketing on campus. Does your program have a unique name or tagline that influences the way you present it (e.g., playful, bold, colorful, or innovative)?\n\nFigure 7.4. You can read more about CVCC's marketing approach in Marking Open and Affordable Courses (Hare, Kirschner, and Reed 2020).\n\n\n\nA great example of a program whose name and messaging align clearly with their work is Central Virginia Community College (CVCC). CVCC uses the tagline 'OpenEd CVCC: Innovation and Affordability' as their program's name and their icon features this theme of innovation through graphics of light bulbs, gears, and representations of various disciplines.\n\nCVCC's logo is more complex than the ones we shared in our 'simple' section. However, this isn't a problem in their case. Keep in mind that the simplicity of any graphic will depend on where and how it's used. CVCC's logo might have more going on than KSU's icon, but it is meant to be used at a larger scale, so it can accommodate this complexity. If your logo will be used in print materials or as a smaller icon, that's when you'll want to focus on simpler designs. For graphics that will be displayed more prominently, though, a larger graphic works fine.", + "processing_time": 0.47815566702047363, + "client_elapsed": 0.480039875023067 + }, + { + "status": "success", + "filename": "01030000000178.pdf", + "markdown": "## Promotional Materials\n\nA good promotional strategy should include multiple facets, from physical materials to digital communications. Below, we've compiled a table of promotional materials you might use on campus, and examples of each type.\n\nTable 7.1. Types of promotional materials\n\n| Communication Channel | Medium | Examples |\n|-------------------------|---------------------|-------------------------------------------------------------------|\n| Direct communications | Physical or digital | meetings, consultations, listening sessions, email lists |\n| Indirect communications | Primarily digital | websites, videos, news articles, newsletters, social media posts, |\n| Messaging | Physical or digital | brochures, posters, signs, booklets |\n| Events | Physical or digital | presentations, webinars, seminars, panels, training sessions |\n| Physical digital | or | Interactive OER'petting zoos,' games, exhibits, surveys |\n| Goodies | Primarily physical | pens, notepads, bookmarks, stickers, buttons, etc |\n\nGet in contact with partners at your institution to learn more about the processes and options available to you and how you can best leverage the support at your disposal. If you have a marketing team available to you that orders pens and other materials for campus events, get in contact with them about their vendors and how you can leverage their existing workflows for ordering materials to support your OER Program. This might be as simple as ordering buttons and posters through your University Printing Office, or it may require you to browse a third party's marketing catalog or to create materials yourself, if you lack funding for your work.\n\n## Annual Events\n\nCreating promotional materials and graphics can make your OER program recognizable on your college's campus, but just because you've created materials doesn't mean that people will find or learn from them. As a program manager, you will need to find ways to implement your messaging and events on campus. Leveraging annual events like Open Education Week in March and International Open Access Week in October can ground your work in a given time of year and focus your programming around a topic or theme (Open Education Global, n.d.; SPARC, n.d.). The Open Education Week website lists past events and provides downloadable promotional materials to help you kickstart your event planning and coordination. If these weeks regularly conflict with other events at your institution, that's okay. You can celebrate Open Education Week the week before or after it falls. So long as you are consistent in the general time you hold these events, they will still gain recognition at your institution and faculty will come to expect them.", + "processing_time": 0.6103022499592043, + "client_elapsed": 0.6120186669868417 + }, + { + "status": "success", + "filename": "01030000000179.pdf", + "markdown": "Figure 12.2. A set of open textbooks printed in bulk are featured in this photo. Open textbooks from the Open Course Library, picture by Tom Caswell, CC BY 2.0.\n\n\n\n## What tool(s) do you typically use in your course?\n\nAsk whether the instructor utilizes your institution's course management system (Canvas, Blackboard, etc.), or a separate course website to communicate and share content with students. This may affect the tools and practices you recommend.\n\n## What supporting materials do you utilize for this course?\n\nIf the instructor relies on self-grading homework platforms or ancillary presentations and lecture notes from publishers, you will want to discuss the various free and low-cost options available to replace that content (See Chapter 15, Finding Ancillaries for OER).\n\nAlternatively, does the instructor already supplement their course materials with course notes or materials they have personally created? Often, when traditional materials are lacking or require supplement, instructors will create notes, reading lists, or other content to 'back up' any traditional, commercial content used in their course. This instructor-created content can be reused with OER as well, or even adapted into a new open resource in the future.", + "processing_time": 0.8835098749841563, + "client_elapsed": 0.8857579160248861 + }, + { + "status": "success", + "filename": "01030000000180.pdf", + "markdown": "## Version History\n\nThis page provides a record of edits and changes made to this book since its initial publication. Whenever edits or updates are made in the text, we provide a record and description of those changes here. If the change is minor, the version number increases by 0.1. If the edits involve substantial updates, the edition number increases to the next whole number.\n\nThe files posted alongside this book always reflect the most recent version. If you find an error in this book, please let us know in the Rebus Community forum, where reported errors will be visible to others.\n\nWe will contact the author, make the necessary changes, and replace all file types as soon as possible. Once we receive the updated files, this Version History page will be updated to reflect the edits made.\n\n## Version History\n\n## Version History\n\n| Version | Date | Change | Affected Sections |\n|-----------|----------------|-----------------------------------------------------------------------|-----------------------------------------------|\n| 1 | April 30, 2022 | Original | |\n| 1 | June 3, 2022 | Small edits for clarity on Creative Commonslicensing and attribution. | 1. Introduction to Open Educational Resources |", + "processing_time": 0.5481777499662712, + "client_elapsed": 0.5499867080361582 + }, + { + "status": "success", + "filename": "01030000000181.pdf", + "markdown": "## Upstage aims to enrich your business by providing Easy-to-Apply AI solutions\n\nOur Purpose\n\nMaking AI Beneficial\n\nOur Mission\n\nEasy-to-apply AI, Everywhere\n\nWhat We Do\n\nProviding the world's best and easy-to-use AI solutions for everyone\n\n- Plug-and-play to cross/multi-cloud system\n- Ensuring performance tailored to customer data via retraining\n- Providing a platform that allows easy distribution and management of AI solutions\n- AI consulting service to help AI transformation", + "processing_time": 0.2836377920466475, + "client_elapsed": 0.28526691597653553 + }, + { + "status": "success", + "filename": "01030000000182.pdf", + "markdown": "## AI Pack\n\n## Upstage offers 3 AI packs that process unstructured information and data, making a tangible impact on your business\n\n| | OCR | Recommendation | Product semantic search |\n|-----------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Pack | A solution that recognizes characters in an image and extracts necessary information | A solution that recommends the best products and contents | A solution that enables semantic search, analyzes and organizes key information in unstructured text data into a standardized form (DB) |\n| Application | Applicable to all fields that require text extraction from standardized documents, such as receipts, bills, credit cards, ID cards, certificates, and medical receipts | Applicable to all fields that use any form of recommendation including alternative products, products and contents that are likely to be purchased next | Applicable to all fields that deal with various types of unstructured data containing text information that require semantic search and conversion into a DB |\n| Achieved 1 st place in the OCR World The team includes specialists who presented 14 papers in the world's renowned AI conferences | Competition have most Team with specialists and technologies that received Kaggle's Gold Medal recommendation (Education platform) Proven superior performance of more than 170% compared to other global top-tier | recommendation models | Highlight Creation of the first natural language evaluation system in Korean (KLUE) World's No.1 in Kaggle text embedding competition in E-commerce subject (Shopee) |", + "processing_time": 0.6067632919875905, + "client_elapsed": 0.6085231250035577 + }, + { + "status": "success", + "filename": "01030000000183.pdf", + "markdown": "## Recommendation pack shows outstanding performance of 1.7~2.6 times that of competing models even when using commercial service data\n\nComparison with Beauty Commerce Recommendation Models\n\nRecommendation model Hit Ratio comparison\n\n\n\nComparison Case of Domestic Subscription Platform Recommendation Model Comparison of quantitative evaluations among personalized content recommendations\n\nEducation Content Platform PoC Case\n\n\n\nComparison of prediction rates of correct/incorrect answers based on personalized questions\n\n", + "processing_time": 0.739311249984894, + "client_elapsed": 0.7417504999903031 + }, + { + "status": "success", + "filename": "01030000000184.pdf", + "markdown": "## SS Pack allows businesses to access further data more rapidly\n\nThe SS Pack can reduce the information acquisition time by returning all the information that matches the user's search intent.\n\nThe performance optimized for individual search systems is maintained by automatic updates of real-time search log records, augmented by Upstage's technological know-how.\n\n\n\n## Higher Return of Information\n\nUnlike existing search systems that only return information limited to the entered search keywords, SS Pack returns all relevant data that meet the user's search intent\n\n## SOTA Cutting-Edge Technology 2\n\nThe analysis of user logs saved in real-time allows us to further optimize the individual search services over time\n\n## Optimal Attempt\n\n## Reduced Information Acquisition Time\n\nBy returning all semantic-based information of the search keywords, the time required for information acquisition is reduced drastically compared to that of traditional keyword-matching search systems\n\n1 Evaluated against 100 internal test queries. Comparison of the amount of information returned with at least one keyword included in the search term and the amount of returned information against that of SS Pack", + "processing_time": 0.5427948749857023, + "client_elapsed": 0.5452233329997398 + }, + { + "status": "success", + "filename": "01030000000185.pdf", + "markdown": "## SOLAR 10.7B: Scaling Large Language Models with Simple yet Effective Depth Up-Scaling\n\n∗ ∗† ∗† ∗†\n\nDahyun Kim , Chanjun Park , Sanghoon Kim , Wonsung Lee , Wonho Song Yunsu Kim, Hyeonwoo Kim, Yungi Kim, Hyeonju Lee, Jihoo Kim Changbae Ahn, Seonghoon Yang, Sukyung Lee, Hyunbyung Park, Gyoungjin Gim Mikyoung Cha, Hwalsuk Lee † , Sunghun Kim †\n\nUpstage AI, South Korea\n\n{kdahyun, chanjun.park,limerobot, wonsung.lee, hwalsuk.lee, hunkim}@upstage.ai\n\n## Abstract\n\nWe introduce SOLAR 10.7B, a large language model (LLM) with 10.7 billion parameters, demonstrating superior performance in various natural language processing (NLP) tasks. Inspired by recent efforts to efficiently up-scale LLMs, we present a method for scaling LLMs called depth up-scaling (DUS), which encompasses depthwise scaling and continued pretraining. In contrast to other LLM up-scaling methods that use mixture-of-experts, DUS does not require complex changes to train and inference efficiently. We show experimentally that DUS is simple yet effective in scaling up highperformance LLMs from small ones. Building on the DUS model, we additionally present SOLAR 10.7B-Instruct, a variant fine-tuned for instruction-following capabilities, surpassing Mixtral-8x7B-Instruct. SOLAR 10.7B is publicly available under the Apache 2.0 license, promoting broad access and application in the LLM field 1 .\n\n## 1 Introduction\n\nThe field of natural language processing (NLP) has been significantly transformed by the introduction of large language models (LLMs), which have enhanced our understanding and interaction with human language (Zhang et al., 2023a). These advancements bring challenges such as the increased need to train ever larger models (Rae et al., 2021; Wang et al., 2023; Pan et al., 2023; Lian, 2023; Yao et al., 2023; Gesmundo and Maile, 2023) owing to the performance scaling law (Kaplan et al., 2020; Hernandez et al., 2021; Anil et al., 2023; Kaddour et al., 2023). To efficiently tackle the above, recent works in scaling language models such as a mixture of experts (MoE) (Shazeer et al., 2017; Komatsuzaki et al., 2022) have been proposed. While those approaches are able to effi-\n\n∗ Equal Contribution † Corresponding Author\n\n1 https://huggingface.co/upstage/ SOLAR-10.7B-v1.0\n\nciently and effectively scale-up LLMs, they often require non-trivial changes to the training and inference framework (Gale et al., 2023), which hinders widespread applicability. Effectively and efficiently scaling up LLMs whilst also retaining the simplicity for ease of use is an important problem (Alberts et al., 2023; Fraiwan and Khasawneh, 2023; Sallam et al., 2023; Bahrini et al., 2023).\n\nInspired by Komatsuzaki et al. (2022), we present depth up-scaling (DUS), an effective and efficient method to up-scale LLMs whilst also remaining straightforward to use. DUS consists of scaling the base model along the depth dimension and continually pretraining the scaled model. Unlike (Komatsuzaki et al., 2022), DUS does not scale the model using MoE and rather use a depthwise scaling method analogous to Tan and Le (2019) which is adapted for the LLM architecture. Thus, there are no additional modules or dynamism as with MoE, making DUS immediately compatible with easy-to-use LLM frameworks such as HuggingFace (Wolf et al., 2019) with no changes to the training or inference framework for maximal efficiency. Furthermore, DUS is applicable to all transformer architectures, opening up new gateways to effectively and efficiently scale-up LLMs in a simple manner. Using DUS, we release SOLAR 10.7B, an LLM with 10.7 billion parameters, that outperforms existing models like Llama 2 (Touvron et al., 2023) and Mistral 7B (Jiang et al., 2023) in various benchmarks.\n\nWe have also developed SOLAR 10.7B-Instruct, a variant fine-tuned for tasks requiring strict adherence to complex instructions. It significantly outperforms the Mixtral-8x7B-Instruct model across various evaluation metrics, evidencing an advanced proficiency that exceeds the capabilities of even larger models in terms of benchmark performance.\n\nBy releasing SOLAR 10.7B under the Apache 2.0 license, we aim to promote collaboration and innovation in NLP. This open-source approach allows", + "processing_time": 0.31356404098914936, + "client_elapsed": 0.31530854100128636 + }, + { + "status": "success", + "filename": "01030000000186.pdf", + "markdown": "Figure 1: Depth up-scaling for the case with n = 32 , s = 48 , and m = 8 . Depth up-scaling is achieved through a dual-stage process of depthwise scaling followed by continued pretraining.\n\n\n\nfor wider access and application of these models by researchers and developers globally.\n\n## 2 Depth Up-Scaling\n\nTo efficiently scale-up LLMs, we aim to utilize pretrained weights of base models to scale up to larger LLMs (Komatsuzaki et al., 2022). While existing methods such as Komatsuzaki et al. (2022) use MoE(Shazeer et al., 2017) to scale-up the model architecture, we opt for a different depthwise scaling strategy inspired by Tan and Le (2019). We then continually pretrain the scaled model as just scaling the model without further pretraining degrades the performance.\n\nBase model. Any n -layer transformer architecture can be used but we select the 32-layer Llama 2 architecture as our base model. We initialize the Llama 2 architecture with pretrained weights from Mistral 7B, as it is one of the top performers compatible with the Llama 2 architecture. By adopting the Llama 2 architecture for our base model, we aim to leverage the vast pool of community resources while introducing novel modifications to further enhance its capabilities.\n\nDepthwise scaling. From the base model with n layers, we set the target layer count s for the scaled model, which is largely dictated by the available hardware.\n\nWith the above, the depthwise scaling process is as follows. The base model with n layers is duplicated for subsequent modification. Then, we remove the final m layers from the original model and the initial m layers from its duplicate, thus forming two distinct models with n -m layers. These two models are concatenated to form a scaled model with s = 2 · ( n -m ) layers. Note that n = 32 from our base model and we set s = 48 considering our hardware constraints and the efficiency of the scaled model, i.e., fitting between 7 and 13 billion parameters. Naturally, this leads to the removal of m = 8 layers. The depthwise scaling process with n = 32 , s = 48 , and m = 8 is depicted in 'Step 1: Depthwise Scaling' of Fig. 1.\n\nWenote that a method in the community that also scale the model in the same manner 2 as 'Step 1: Depthwise Scaling' of Fig. 1 has been concurrently developed.\n\nContinued pretraining. The performance of the depthwise scaled model initially drops below that of the base LLM. Thus, we additionally apply the continued pretraining step as shown in 'Step 2: Continued Pretraining' of Fig. 1. Experimentally, we observe rapid performance recovery of the scaled model during continued pretraining, a phenomenon also observed in Komatsuzaki et al. (2022). We consider that the particular way of depthwise scaling has isolated the heterogeneity in the scaled model which allowed for this fast performance recovery.\n\nDelving deeper into the heterogeneity of the scaled model, a simpler alternative to depthwise scaling could be to just repeat its layers once more, i.e., from n to 2 n layers. Then, the 'layer distance', or the difference in the layer indices in the base model, is only bigger than 1 where layers n and n +1 are connected, i.e., at the seam.\n\nHowever, this results in maximum layer distance at the seam, which may be too significant of a discrepancy for continued pretraining to quickly resolve. Instead, depthwise scaling sacrifices the 2 m middle layers, thereby reducing the discrepancy at the seam and making it easier for continued\n\n2 https://huggingface.co/Undi95/ Mistral-11B-v0.1", + "processing_time": 0.6500330000417307, + "client_elapsed": 0.65312645904487 + }, + { + "status": "success", + "filename": "01030000000187.pdf", + "markdown": "Table 1: Training datasets used for the instruction and alignment tuning stages, respectively. For the instruction tuning process, we utilized the Alpaca-GPT4 (Peng et al., 2023), OpenOrca (Mukherjee et al., 2023), and Synth. Math-Instruct datasets, while for the alignment tuning, we employed the Orca DPO Pairs (Intel, 2023), Ultrafeedback Cleaned (Cui et al., 2023; Ivison et al., 2023), and Synth. Math-Alignment datasets. The 'Total # Samples' indicates the total number of samples in the entire dataset. The 'Maximum # Samples Used' indicates the actual maximum number of samples that were used in training, which could be lower than the total number of samples in a given dataset. 'Open Source' indicates whether the dataset is open-sourced.\n\n| | Training Datasets | Training Datasets | Training Datasets | Training Datasets | Training Datasets | Training Datasets |\n|------------------------|---------------------|---------------------|----------------------|---------------------|-----------------------|-----------------------|\n| Properties | Instruction | Instruction | Instruction | | Alignment | |\n| | Alpaca-GPT4 | OpenOrca | Synth. Math-Instruct | Orca DPO Pairs | Ultrafeedback Cleaned | Synth. Math-Alignment |\n| Total # Samples | 52K | 2.91M | 126K | 12.9K | 60.8K | 126K |\n| Maximum # Samples Used | 52K | 100K | 52K | 12.9K | 60.8K | 20.1K |\n| Open Source | O | O | ✗ | O | O | ✗ |\n\npretraining to quickly recover performance. We attribute the success of DUS to reducing such discrepancies in both the depthwise scaling and the continued pretraining steps. We also hypothesize that other methods of depthwise scaling could also work for DUS, as long as the discrepancy in the scaled model is sufficiently contained before the continued pretraining step.\n\nComparison to other up-scaling methods. Unlike Komatsuzaki et al. (2022), depthwise scaled models do not require additional modules like gating networks or dynamic expert selection. Consequently, scaled models in DUS do not necessitate a distinct training framework for optimal training efficiency, nor do they require specialized CUDA kernels for fast inference. A DUS model can seamlessly integrate into existing training and inference frameworks while maintaining high efficiency.\n\n## 3 Training Details\n\nAfter DUS, including continued pretraining, we perform fine-tuning of SOLAR 10.7B in two stages: 1) instruction tuning and 2) alignment tuning.\n\nInstruction tuning. In the instruction tuning stage, the model is trained to follow instructions in a QA format (Zhang et al., 2023b). We mostly use open-source datasets but also synthesize a math QA dataset to enhance the model's mathematical capabilities. A rundown of how we crafted the dataset is as follows. First, seed math data are collected from the Math (Hendrycks et al., 2021) dataset only, to avoid contamination with commonly used benchmark datasets such as GSM8K (Cobbe et al., 2021). Then, using a process similar to MetaMath (Yu et al., 2023), we rephrase the questions and answers of the seed math data. We use the resulting rephrased question-answer pairs as a QA dataset and call it 'Synth. Math-Instruct'.\n\nAlignment tuning. In the alignment tuning stage, the instruction-tuned model is further fine-tuned to be more aligned with human or strong AI ( e.g., GPT4 (OpenAI, 2023)) preferences using direct preference optimization (DPO) (Rafailov et al., 2023). Similar to the instruction tuning stage, we use mostly open-source datasets but also synthesize a math-focused alignment dataset utilizing the 'Synth. Math-Instruct' dataset mentioned in the instruction tuning stage.\n\nThe alignment data synthesis process is as follows. We take advantage of the fact that the rephrased question-answer pairs in Synth. Math-Instruct data are beneficial in enhancing the model's mathematical capabilities (see Sec. 4.3.1). Thus, we speculate that the rephrased answer to the rephrased question is a better answer than the original answer, possibly due to the interim rephrasing step. Consequently, we set the rephrased question as the prompt and use the rephrased answer as the chosen response and the original answer as the rejected response and create the {prompt, chosen, rejected} DPO tuple. We aggregate the tuples from the rephrased question-answer pairs and call the resulting dataset 'Synth. Math-Alignment'.\n\n## 4 Results\n\n## 4.1 Experimental Details\n\nTraining datasets. We present details regarding our training datasets for the instruction and alignment tuning stages in Tab. 1. We do not always use the entire dataset and instead subsample a set amount. Note that most of our training data is open-source, and the undisclosed datasets can be substituted for open-source alternatives such as the MetaMathQA (Yu et al., 2023) dataset.", + "processing_time": 0.7913825000287034, + "client_elapsed": 0.7930524999974295 + }, + { + "status": "success", + "filename": "01030000000188.pdf", + "markdown": "Table 2: Evaluation results for SOLAR 10.7B and SOLAR 10.7B-Instruct along with other top-performing models. We report the scores for the six tasks mentioned in Sec. 4.1 along with the H6 score (average of six tasks). We also report the size of the models in units of billions of parameters. The type indicates the training stage of the model and is chosen from {Pretrained, Instruction-tuned, Alignment-tuned}. Models based on SOLAR 10.7B are colored purple. The best scores for H6 and the individual tasks are shown in bold.\n\n| Model | Size | Type | H6 (Avg.) | ARC | HellaSwag | MMLU | TruthfulQA | Winogrande | GSM8K |\n|----------------------------|--------|-------------------|-------------|-------|-------------|--------|--------------|--------------|---------|\n| SOLAR 10.7B-Instruct | ∼ 11B | Alignment-tuned | 74.2 | 71.08 | 88.16 | 66.21 | 71.43 | 83.58 | 64.75 |\n| Qwen 72B | ∼ 72B | Pretrained | 73.6 | 65.19 | 85.94 | 77.37 | 60.19 | 82.48 | 70.43 |\n| Mixtral 8x7B-Instruct-v0.1 | ∼ 47B | Instruction-tuned | 72.62 | 70.22 | 87.63 | 71.16 | 64.58 | 81.37 | 60.73 |\n| Yi 34B-200K | ∼ 34B | Pretrained | 70.81 | 65.36 | 85.58 | 76.06 | 53.64 | 82.56 | 61.64 |\n| Yi 34B | ∼ 34B | Pretrained | 69.42 | 64.59 | 85.69 | 76.35 | 56.23 | 83.03 | 50.64 |\n| Mixtral 8x7B-v0.1 | ∼ 47B | Pretrained | 68.42 | 66.04 | 86.49 | 71.82 | 46.78 | 81.93 | 57.47 |\n| Llama 2 70B | ∼ 70B | Pretrained | 67.87 | 67.32 | 87.33 | 69.83 | 44.92 | 83.74 | 54.06 |\n| Falcon 180B | ∼ 180B | Pretrained | 67.85 | 69.45 | 88.86 | 70.5 | 45.47 | 86.9 | 45.94 |\n| SOLAR 10.7B | ∼ 11B | Pretrained | 66.04 | 61.95 | 84.6 | 65.48 | 45.04 | 83.66 | 55.5 |\n| Qwen 14B | ∼ 14B | Pretrained | 65.86 | 58.28 | 83.99 | 67.7 | 49.43 | 76.8 | 58.98 |\n| Mistral 7B-Instruct-v0.2 | ∼ 7B | Instruction-tuned | 65.71 | 63.14 | 84.88 | 60.78 | 68.26 | 77.19 | 40.03 |\n| Yi 34B-Chat | ∼ 34B | Instruction-tuned | 65.32 | 65.44 | 84.16 | 74.9 | 55.37 | 80.11 | 31.92 |\n| Mistral 7B | ∼ 7B | Pretrained | 60.97 | 59.98 | 83.31 | 64.16 | 42.15 | 78.37 | 37.83 |\n\nWe reformatted the instruction datasets with an Alpaca-styled chat template. For datasets such as OpenOrca, which are derived from FLAN (Longpre et al., 2023), we filter data that overlaps with the benchmark datasets (see Tab. 8 in Appendix. C for more information). The alignment datasets are in the {prompt, chosen, rejected} triplet format. We preprocess the alignment datasets following Zephyr (Tunstall et al., 2023).\n\nEvaluation. In the HuggingFace Open LLM Leaderboard (Beeching et al., 2023), six types of evaluation methods are presented: ARC (Clark et al., 2018), HellaSWAG (Zellers et al., 2019), MMLU(Hendrycks et al., 2020), TruthfulQA (Lin et al., 2022), Winogrande (Sakaguchi et al., 2021), and GSM8K (Cobbe et al., 2021). We utilize these datasets as benchmarks for evaluation and also report the average scores for the six tasks, e.g., H6.\n\nModel merging. Model merging methods such as Yadav et al. (2023) can boost model performance without further training. We merge some of the models that we trained in both the instruction and alignment tuning stages. We implement our own merging methods although popular open source also exist such as MergeKit 3 .\n\n## 4.2 Main Results\n\nWe present evaluation results for our SOLAR 10.7B and SOLAR 10.7B-Instruct models along with other top-performing models in Tab. 2. SOLAR 10.7B outperforms other pretrained models of similar sizes, such as Qwen 14B and Mistral 7B, which shows that DUS is an effective method to up-scale base LLMs. Furthermore, despite the\n\n3 https://github.com/cg123/mergekit\n\nsmaller size, SOLAR 10.7B-Instruct scores the highest in terms of H6, even surpassing the recent top-performing open-source LLM Mixtral 8x7BInstruct-v0.1 or Qwen 72B. The above results indicate DUS can up-scale models that are capable of achieving state-of-the-art performance when finetuned. We also report data contamination results for SOLAR 10.7B-Instruct in Appendix C.\n\n## 4.3 Ablation Studies\n\nWe present ablation studies for both the instruction and alignment tuning stages.\n\n## 4.3.1 Instruction Tuning\n\nAblation on the training datasets. We present ablation studies using different training datasets for the instruction tuning in Tab. 3. The ablated models are prefixed with SFT for supervised finetuning. 'SFT v1' only uses the Alpaca-GPT4 dataset, whereas 'SFT v2' also uses the OpenOrca dataset. 'SFT v3' uses the Synth. Math-Instruct dataset along with the datasets used in 'SFT v2'. Similarly, 'SFT v4' uses the Synth. Math-Instruct dataset along with the datasets used in 'SFT v1'.\n\nFirst, we analyze how Alpaca-GPT4 and OpenOrca affect the trained models. The first ablated model, 'SFT v1', which used only the AlpacaGPT4 dataset for training, resulted in 69 . 15 for H6. When we add the OpenOrca dataset to train the second ablated model, 'SFT v2', the resulting H6 score is 69 . 21 , which is little change from 69 . 15 of 'SFT v1'. However, the task scores vary more as 'SFT v2' gets a substantially higher GSM8K score of 57 . 32 compared to 52 . 24 of 'SFT v1' but also gets noticeably lower scores across the board for ARC, HellaSwag, and TruthfulQA. This seems to", + "processing_time": 1.6781952909659594, + "client_elapsed": 1.6808619580115192 + }, + { + "status": "success", + "filename": "01030000000189.pdf", + "markdown": "| Model | Alpaca-GPT4 | OpenOrca | Synth. Math-Instruct | H6 (Avg.) | ARC | HellaSwag | MMLU | TruthfulQA | Winogrande | GSM8K |\n|-------------|---------------|------------|------------------------|-------------|-------|-------------|--------|--------------|--------------|---------|\n| SFT v1 | O | ✗ | ✗ | 69.15 | 67.66 | 86.03 | 65.88 | 60.12 | 82.95 | 52.24 |\n| SFT v2 | O | O | ✗ | 69.21 | 65.36 | 85.39 | 65.93 | 58.47 | 82.79 | 57.32 |\n| SFT v3 | O | O | O | 70.03 | 65.87 | 85.55 | 65.31 | 57.93 | 81.37 | 64.14 |\n| SFT v4 | O | ✗ | O | 70.88 | 67.32 | 85.87 | 65.87 | 58.97 | 82.48 | 64.75 |\n| SFT v3 + v4 | O | O | O | 71.11 | 67.32 | 85.96 | 65.95 | 58.8 | 2.08 | 66.57 |\n\nTable 3: Ablation studies on the different datasets used for instruction tuning. 'SFT v3+v4' indicates that the model is merged from 'SFT v3' and 'SFT v4' by simply averaging the model weights. The best scores for H6 and the individual tasks are shown in bold.\n\nTable 4: Ablation studies on the different datasets used during the direct preference optimization (DPO) stage. 'SFT v3' is used as the SFT base model for DPO. We name ablated models with the 'DPO' prefix to indicate the alignment tuning stage. 'DPO v1+v2' indicates that the model is merged from 'DPO v1' and 'DPO v2' by simply averaging the model weights. The best scores for H6 and the individual tasks are shown in bold.\n\n| Model | Ultrafeedback Clean | Synth. Math-Alignment | H6 (Avg.) | ARC | HellaSwag | MMLU | TruthfulQA | Winogrande | GSM8K |\n|-------------|-----------------------|-------------------------|-------------|-------|-------------|--------|--------------|--------------|---------|\n| DPO v1 | O | ✗ | 73.06 | 71.42 | 88.49 | 66.14 | 72.04 | 81.45 | 58.83 |\n| DPO v2 | O | O | 73.42 | 71.5 | 88.28 | 65.97 | 71.71 | 82.79 | 60.27 |\n| DPO v1 + v2 | O | O | 73.21 | 71.33 | 88.36 | 65.92 | 72.65 | 82.79 | 58.23 |\n\nTable 5: Ablation studies on the different SFT base models used during the direct preference optimization (DPO) stage. Ultrafeedback Clean and Synth. Math-Alignment datasets are used. We name ablated models with the 'DPO' prefix to indicate the alignment tuning stage. The best scores for H6 and the individual tasks are shown in bold.\n\n| Model | Base SFT Model | H6 (Avg.) | ARC | HellaSwag | MMLU | TruthfulQA | Winogrande | GSM8K |\n|---------|------------------|-------------|-------|-------------|--------|--------------|--------------|---------|\n| DPO v2 | SFT v3 | 73.42 | 71.5 | 88.28 | 65.97 | 71.71 | 82.79 | 60.27 |\n| DPO v3 | SFT v3 + v4 | 73.58 | 71.33 | 88.08 | 65.39 | 72.45 | 81.93 | 62.32 |\n\nindicate that using OpenOrca results in a model that behaves differently from using only Alpaca-GPT4.\n\nSecond, we investigate whether Synth. MathInstruct dataset is beneficial. For 'SFT v3', we add the Synth. Math-Instruct dataset, which boosts GSM8K scores to 64 . 14 and achieves comparable scores for the other tasks. Interestingly, when we add the Synth. Math-Instruct dataset to 'SFT v1' to train 'SFT v4', we get our highest H6 score of 70 . 88 with higher scores than 'SFT v3' for all tasks. From the above, we can see that adding the Synth. Math-Instruct dataset is helpful.\n\nLastly, we see whether merging models trained with and without OpenOrca can boost performance. In the first analysis, we saw that using OpenOrca resulted in a model that behaved differently from the model that was trained without OpenOrca. Building on this intuition, we merge 'SFT v3' and 'SFT v4' as they are the best-performing models with and without OpenOrca. To our surprise, the resulting merged model 'SFT v3+v4' retains the high scores for non-GSM8K tasks from 'SFT v4' but also achieves a higher GSM8K score than 'SFT v3' or 'SFT v4'. Thus, we see that merging models that specialize in different tasks is a promising way to obtain a model that performs well generally.\n\n## 4.3.2 Alignment Tuning\n\nAs we utilize DPO for practical alignment tuning, there are additional aspects to ablate such as the SFT base models used. Thus, we present ablations for the different training datasets used for training, the different SFT base models to initialize the DPO model, and finally, the model merging strategy to obtain the final alignment-tuned model.\n\nAblation on the training datasets. We ablate on the different alignment datasets used during DPO in Tab. 4. We use 'SFT v3' as the SFT base model for DPO. 'DPO v1' only uses the Ultrafeedback Clean dataset while 'DPO v2' also used the Synth. Math-Alignment dataset.\n\nFirst, we test how Ultrafeedback Clean and Synth. Math-Alignment impacts model performance. For 'DPO v1', it achieves 73 . 06 in H6, which is a substantial boost from the SFT base model score of 70 . 03 . However, we note that while scores for tasks like ARC, HellaSwag, and TruthfulQA all improved by good margins, the score for GSM8K is 58 . 83 , which is lower than the SFT base model score of 64 . 14 . Adding Synth. Math-Alignment to train 'DPO v2', we see that the GSM8k score improves to 60 . 27 , which is lower than the SFT base model but still higher than 'DPO v1'. Other task scores are also not nega-", + "processing_time": 1.806657458015252, + "client_elapsed": 1.8090190420043655 + }, + { + "status": "success", + "filename": "01030000000190.pdf", + "markdown": "Table 6: Performance comparison amongst the merge candidates. 'Cand. 1' and 'Cand. 2' are trained using the same setting as 'DPO v2' and 'DPO v3', respectively, but with slightly different hyper-parameters. The best scores for H6 and the individual tasks are shown in bold.\n\n| Model | H6 (Avg.) | ARC | HellaSwag | MMLU | TruthfulQA | Winogrande | GSM8K |\n|---------|-------------|-------|-------------|--------|--------------|--------------|---------|\n| Cand. 1 | 73.73 | 70.48 | 87.47 | 65.73 | 70.62 | 81.53 | 66.57 |\n| Cand. 2 | 73.28 | 71.59 | 88.39 | 66.14 | 72.5 | 81.99 | 59.14 |\n\nTable 7: Ablation studies on the different merge methods used for obtaining the final model. We use 'Cand. 1' and 'Cand. 2' from Tab. 6 as our two models for merging. We name the merged models with the 'Merge' prefix to indicate they are merged. The best scores for H6 and the individual tasks are shown in bold.\n\n| Model | Merge Method | H6 (Avg.) | ARC | HellaSwag | MMLU | TruthfulQA | Winogrande | GSM8K |\n|----------|--------------------|-------------|-------|-------------|--------|--------------|--------------|---------|\n| Merge v1 | Average (0.5, 0.5) | 74 | 71.16 | 88.01 | 66.14 | 71.71 | 82.08 | 64.9 |\n| Merge v2 | Average (0.4, 0.6) | 73.93 | 71.08 | 88.08 | 66.27 | 71.89 | 81.77 | 64.52 |\n| Merge v3 | Average (0.6, 0.4) | 74.05 | 71.08 | 87.88 | 66.13 | 71.61 | 82.08 | 65.5 |\n| Merge v4 | SLERP | 73.96 | 71.16 | 88.03 | 66.25 | 71.79 | 81.93 | 64.59 |\n\ntively impacted by adding Synth. Math-Alignment. Thus, we can conclude that adding Synth. MathAlignment is beneficial for H6.\n\nThen, we experiment whether merging 'DPO v1' and 'DPO v2' is beneficial. Unfortunately, 'DPO v1+v2' scores 73 . 21 in H6, which is worse than 'DPO v2'. More importantly, the gain in the GSM8K score from adding Synth. MathAlignment is gone, which is undesirable. One reason for this could be that 'DPO v2' is a strict improvement over 'DPO v1', unlike the case for merging 'SFT v3' and 'SFT v4' where the models had different strengths and weaknesses.\n\nAblation on the SFT base models. When applying DPO, we start from a model that is already instruction tuned ,i.e., the SFT base model and ablate on using different SFT base models. We use Ultrafeedback Clean and Synth. Math-Alignment datasets for this ablation. Each of the ablated models is trained as follows. 'DPO v2' uses 'SFT v3' as the base SFT model, while 'DPO v3' uses 'SFT v3+v4' as the SFT base model instead.\n\nNote that 'SFT v3+v4' has higher scores on all tasks compared to 'SFT v3', and the gap is especially large for ARC ( +1 . 45 ) and GSM8K ( +2 . 43 ). Surprisingly, the two models perform similarly in terms of H6. A closer look at the scores for the individual tasks shows only a small margin in the GSM8K scores, and other task scores show little difference. Thus, the performance gaps in certain tasks in the SFT base models do not always carry over to the alignment-tuned models.\n\nAblation on different merge methods. From Tab. 3, we saw that merging two models that have different strengths can be beneficial to performance.\n\nTo utilize this for the alignment-tuned model as well, we train two models named 'Cand. 1' and 'Cand. 2' using the same training dataset and SFT base model as 'DPO v2' and 'DPO v3' but with different hyper-parameters to maximize each model's respective strengths. We compare 'Cand. 1' and 'Cand. 2' in Tab. 6 where we can see that 'Cand. 1' has high GSM8K scores but relatively low scores for the other tasks, whereas 'Cand. 2' has low scores for GSM8K but high scores for the other tasks. We merge these two models using various methods and ablate the results in Tab.. 7.\n\nWe use two merge methods: 1) Average ( a , b ), where a and b denote the weighting for 'Cand. 1' and 'Cand. 2' when averaging weights and 2) SLERP (Shoemake, 1985). We use ( 0 . 5 , 0 . 5 ), ( 0 . 4 , 0 . 6 ), and ( 0 . 6 , 0 . 4 ) for Average ( a , b ). From Tab. 7, we can see that the different merge methods have little effect on the H6 scores. The scores for the individual tasks also do not differ by much, suggesting that as long as the merge candidates have sufficiently different strengths, the exact merge method may not be as crucial. Thus, we chose 'Merge v1' as our SOLAR 10.7B-Instruct model.\n\n## 5 Conclusion\n\nWe introduce SOLAR 10.7B and its fine-tuned variant SOLAR 10.7B-Instruct, which are depth upscaled (DUS) models with 10.7 billion parameters. They show superior performance over models like Llama 2, Mistral 7B, and Mixtral-7B-Instruct in essential NLP tasks while maintaining computational efficiency. Thus, DUS is effective in scaling-up highly performant LLMs from smaller ones. With more exploration, DUS could be further improved, paving a new path to efficiently scaling LLMs.", + "processing_time": 1.1609891660045832, + "client_elapsed": 1.1629453750210814 + }, + { + "status": "success", + "filename": "01030000000191.pdf", + "markdown": "## Acknowledgements\n\nWe would like to extend our gratitude to the teams at Hugging Face, particularly Clémentine Fourrier, Lewis Tunstall, Omar Sanseviero, and Philipp Schmid. Our appreciation also extends to the teams at AWS, notably Ritesh Vajaria, Gal Oshri, Jay Kwon, Brandon Lee, Effie Bae, and Rahul Sharma. We are grateful to the teams at Korea Telecom (KT), especially Jin Hyoung Lee, Jungsuk Park, Sungjoon Park, Hong-rae Wang, Kyeongsoo Jung, and Sunyoong Yoon, whose significant support has been instrumental in ensuring the broad compatibility of our model. Additionally, we would like to extend our thanks to the open community for their invaluable contributions and feedback.\n\n## Limitations\n\nOur study on the Depth Up-Scaling (DUS) has important limitations and considerations. One key limitation is the need for more thorough explorations of hyperparameters used in the DUS approach. Namely, we removed m = 8 layers from both ends of our base model, primarily due to hardware limitations. However, we have not yet determined if this value is optimal for enhancing performance. The extended time and cost of continued pretraining made it challenging to conduct more comprehensive experiments, which we aim to address in future work through various comparative analyses.\n\nIn terms of the model's broader implications, there are several points to note. The model's significant computational demands for training and inference might limit its use, especially for those with restricted computational resources. Additionally, like all machine learning models, it is vulnerable to biases in its training data, which could lead to skewed outcomes in certain situations. Furthermore, the substantial energy consumption required for training and operating the model raises environmental concerns, which are critical in the pursuit of sustainable AI development.\n\nLastly, while the fine-tuned variant of the model shows improved performance in following instructions, it still requires task-specific fine-tuning for optimal performance in specialized applications. This fine-tuning process can be resource-intensive and not always effective. Recognizing and addressing these limitations is essential for a comprehensive understanding of the proposed Large Language Model's capabilities and for guiding future research and development in the field of LLMs.\n\n## Ethics Statement\n\nWe conscientiously address and emphasize the commitment of SOLAR 10.7B in maintaining the highest ethical standards. First, we highlight that SOLAR 10.7B-Instruct has shown low levels of data contamination in our evaluations, a testament to our rigorous data handling and processing protocols. This aspect is crucial, as it underpins the reliability and integrity of the results obtained from SOLAR.\n\nFurthermore, during the course of our experiments, we ensured that all setups and methodologies employed steer clear of any potential ethical pitfalls. This preemptive consideration and avoidance of ethically questionable practices underscore our dedication to conducting research that is not only innovative but also responsible.\n\nAdditionally, we ensure that SOLAR complies with general ethical considerations in all aspects of its operation. This includes adherence to privacy norms, respect for intellectual property, and ensuring the absence of bias in our algorithms. Our commitment to these ethical principles is unwavering, and we believe it significantly contributes to the credibility and societal acceptance of SOLAR.\n\nIn conclusion, the ethical framework within which SOLAR operates is robust and comprehensive, ensuring that our advancements in this field are not only scientifically sound but also ethically responsible.\n\n## References\n\nIan L Alberts, Lorenzo Mercolli, Thomas Pyka, George Prenosil, Kuangyu Shi, Axel Rominger, and Ali Afshar-Oromieh. 2023. Large language models (llm) and chatgpt: what will the impact on nuclear medicine be? European journal of nuclear medicine and molecular imaging , 50(6):1549-1552.\n\nRohan Anil, Andrew M Dai, Orhan Firat, Melvin Johnson, Dmitry Lepikhin, Alexandre Passos, Siamak Shakeri, Emanuel Taropa, Paige Bailey, Zhifeng Chen, et al. 2023. Palm 2 technical report. arXiv preprint arXiv:2305.10403 .\n\nAram Bahrini, Mohammadsadra Khamoshifar, Hossein Abbasimehr, Robert J Riggs, Maryam Esmaeili, Rastin Mastali Majdabadkohne, and Morteza Pasehvar. 2023. Chatgpt: Applications, opportunities, and threats. In 2023 Systems and Information Engineering Design Symposium (SIEDS) , pages 274-279. IEEE.", + "processing_time": 0.3222997499979101, + "client_elapsed": 0.3242677910020575 + }, + { + "status": "success", + "filename": "01030000000192.pdf", + "markdown": "- Edward Beeching, Clémentine Fourrier, Nathan Habib, Sheon Han, Nathan Lambert, Nazneen Rajani, Omar Sanseviero, Lewis Tunstall, and Thomas Wolf. 2023. Open llm leaderboard. https://huggingface.co/spaces/ HuggingFaceH4/open\\_llm\\_leaderboard .\n- Tom Brown, Benjamin Mann, Nick Ryder, Melanie Subbiah, Jared D Kaplan, Prafulla Dhariwal, Arvind Neelakantan, Pranav Shyam, Girish Sastry, Amanda Askell, et al. 2020. Language models are few-shot learners. Advances in neural information processing systems , 33:1877-1901.\n- Peter Clark, Isaac Cowhey, Oren Etzioni, Tushar Khot, Ashish Sabharwal, Carissa Schoenick, and Oyvind Tafjord. 2018. Think you have solved question answering? try arc, the ai2 reasoning challenge. arXiv preprint arXiv:1803.05457 .\n- Karl Cobbe, Vineet Kosaraju, Mohammad Bavarian, Mark Chen, Heewoo Jun, Lukasz Kaiser, Matthias Plappert, Jerry Tworek, Jacob Hilton, Reiichiro Nakano, et al. 2021. Training verifiers to solve math word problems. arXiv preprint arXiv:2110.14168 .\n- Ganqu Cui, Lifan Yuan, Ning Ding, Guanming Yao, Wei Zhu, Yuan Ni, Guotong Xie, Zhiyuan Liu, and Maosong Sun. 2023. Ultrafeedback: Boosting language models with high-quality feedback. arXiv preprint arXiv:2310.01377 .\n- Chunyuan Deng, Yilun Zhao, Xiangru Tang, Mark Gerstein, and Arman Cohan. 2023. Investigating data contamination in modern benchmarks for large language models. arXiv preprint arXiv:2311.09783 .\n- Hanze Dong, Wei Xiong, Deepanshu Goyal, Rui Pan, Shizhe Diao, Jipeng Zhang, Kashun Shum, and Tong Zhang. 2023. Raft: Reward ranked finetuning for generative foundation model alignment. arXiv preprint arXiv:2304.06767 .\n- Mohammad Fraiwan and Natheer Khasawneh. 2023. A review of chatgpt applications in education, marketing, software engineering, and healthcare: Benefits, drawbacks, and research directions. arXiv preprint arXiv:2305.00237 .\n- Trevor Gale, Deepak Narayanan, Cliff Young, and Matei Zaharia. 2023. Megablocks: Efficient sparse training with mixture-of-experts. Proceedings of Machine Learning and Systems , 5.\n- Andrea Gesmundo and Kaitlin Maile. 2023. Composable function-preserving expansions for transformer architectures. arXiv preprint arXiv:2308.06103 .\n- Shahriar Golchin and Mihai Surdeanu. 2023. Time travel in llms: Tracing data contamination in large language models. arXiv preprint arXiv:2308.08493 .\n- Dan Hendrycks, Collin Burns, Steven Basart, Andy Zou, Mantas Mazeika, Dawn Song, and Jacob Steinhardt. 2020. Measuring massive multitask language understanding. In International Conference on Learning Representations .\n- Dan Hendrycks, Collin Burns, Saurav Kadavath, Akul Arora, Steven Basart, Eric Tang, Dawn Song, and Jacob Steinhardt. 2021. Measuring mathematical problem solving with the math dataset. arXiv preprint arXiv:2103.03874 .\n- Danny Hernandez, Jared Kaplan, Tom Henighan, and Sam McCandlish. 2021. Scaling laws for transfer. arXiv preprint arXiv:2102.01293 .\n- Changho Hwang, Wei Cui, Yifan Xiong, Ziyue Yang, Ze Liu, Han Hu, Zilong Wang, Rafael Salas, Jithin Jose, Prabhat Ram, et al. 2023. Tutel: Adaptive mixture-of-experts at scale. Proceedings of Machine Learning and Systems , 5.\n- Intel. 2023. Supervised fine-tuning and direct preference optimization on intel gaudi2.\n- Hamish Ivison, Yizhong Wang, Valentina Pyatkin, Nathan Lambert, Matthew Peters, Pradeep Dasigi, Joel Jang, David Wadden, Noah A. Smith, Iz Beltagy, and Hannaneh Hajishirzi. 2023. Camels in a changing climate: Enhancing lm adaptation with tulu 2.\n- Albert Q Jiang, Alexandre Sablayrolles, Arthur Mensch, Chris Bamford, Devendra Singh Chaplot, Diego de las Casas, Florian Bressand, Gianna Lengyel, Guillaume Lample, Lucile Saulnier, et al. 2023. Mistral 7b. arXiv preprint arXiv:2310.06825 .\n- Jean Kaddour, Oscar Key, Piotr Nawrot, Pasquale Minervini, and Matt J Kusner. 2023. No train no gain: Revisiting efficient training algorithms for transformer-based language models. arXiv preprint arXiv:2307.06440 .\n- Jared Kaplan, Sam McCandlish, Tom Henighan, Tom B Brown, Benjamin Chess, Rewon Child, Scott Gray, Alec Radford, Jeffrey Wu, and Dario Amodei. 2020. Scaling laws for neural language models. arXiv preprint arXiv:2001.08361 .\n- Aran Komatsuzaki, Joan Puigcerver, James Lee-Thorp, Carlos Riquelme Ruiz, Basil Mustafa, Joshua Ainslie, Yi Tay, Mostafa Dehghani, and Neil Houlsby. 2022. Sparse upcycling: Training mixture-ofexperts from dense checkpoints. arXiv preprint arXiv:2212.05055 .\n- Wing Lian. 2023. https://huggingface.co/ winglian/omega-3b .\n- Stephanie Lin, Jacob Hilton, and Owain Evans. 2022. Truthfulqa: Measuring how models mimic human falsehoods. In Proceedings of the 60th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers) , pages 3214-3252.\n- Shayne Longpre, Le Hou, Tu Vu, Albert Webson, Hyung Won Chung, Yi Tay, Denny Zhou, Quoc V Le, Barret Zoph, Jason Wei, et al. 2023. The flan collection: Designing data and methods for effective instruction tuning. arXiv preprint arXiv:2301.13688 .", + "processing_time": 0.35903616598807275, + "client_elapsed": 0.36132299999007955 + }, + { + "status": "success", + "filename": "01030000000193.pdf", + "markdown": "- Subhabrata Mukherjee, Arindam Mitra, Ganesh Jawahar, Sahaj Agarwal, Hamid Palangi, and Ahmed Awadallah. 2023. Orca: Progressive learning from complex explanation traces of gpt-4. arXiv preprint arXiv:2306.02707 .\n\nOpenAI. 2023. Gpt-4 technical report.\n\n- Yu Pan, Ye Yuan, Yichun Yin, Zenglin Xu, Lifeng Shang, Xin Jiang, and Qun Liu. 2023. Reusing pretrained models by multi-linear operators for efficient training. arXiv preprint arXiv:2310.10699 .\n- Baolin Peng, Chunyuan Li, Pengcheng He, Michel Galley, and Jianfeng Gao. 2023. Instruction tuning with gpt-4. arXiv preprint arXiv:2304.03277 .\n- Alec Radford, Jeffrey Wu, Rewon Child, David Luan, Dario Amodei, Ilya Sutskever, et al. 2019. Language models are unsupervised multitask learners. OpenAI blog , 1(8):9.\n- Jack W Rae, Sebastian Borgeaud, Trevor Cai, Katie Millican, Jordan Hoffmann, Francis Song, John Aslanides, Sarah Henderson, Roman Ring, Susannah Young, et al. 2021. Scaling language models: Methods, analysis & insights from training gopher. arXiv preprint arXiv:2112.11446 .\n- Rafael Rafailov, Archit Sharma, Eric Mitchell, Stefano Ermon, Christopher D Manning, and Chelsea Finn. 2023. Direct preference optimization: Your language model is secretly a reward model. arXiv preprint arXiv:2305.18290 .\n- Oscar Sainz, Jon Ander Campos, Iker García-Ferrero, Julen Etxaniz, Oier Lopez de Lacalle, and Eneko Agirre. 2023. Nlp evaluation in trouble: On the need to measure llm data contamination for each benchmark. arXiv preprint arXiv:2310.18018 .\n- Keisuke Sakaguchi, Ronan Le Bras, Chandra Bhagavatula, and Yejin Choi. 2021. Winogrande: An adversarial winograd schema challenge at scale. Communications of the ACM , 64(9):99-106.\n- Malik Sallam, Nesreen Salim, Muna Barakat, and Alaa Al-Tammemi. 2023. Chatgpt applications in medical, dental, pharmacy, and public health education: A descriptive study highlighting the advantages and limitations. Narra J , 3(1):e103-e103.\n- Noam Shazeer, Azalia Mirhoseini, Krzysztof Maziarz, Andy Davis, Quoc Le, Geoffrey Hinton, and Jeff Dean. 2017. Outrageously large neural networks: The sparsely-gated mixture-of-experts layer. arXiv preprint arXiv:1701.06538 .\n- Tianxiao Shen, Myle Ott, Michael Auli, and Marc'Aurelio Ranzato. 2019. Mixture models for diverse machine translation: Tricks of the trade. In International conference on machine learning , pages 5719-5728. PMLR.\n- Weijia Shi, Anirudh Ajith, Mengzhou Xia, Yangsibo Huang, Daogao Liu, Terra Blevins, Danqi Chen, and Luke Zettlemoyer. 2023. Detecting pretraining data from large language models. arXiv preprint arXiv:2310.16789 .\n- Ken Shoemake. 1985. Animating rotation with quaternion curves. In Proceedings of the 12th annual conference on Computer graphics and interactive techniques , pages 245-254.\n- Mingxing Tan and Quoc Le. 2019. Efficientnet: Rethinking model scaling for convolutional neural networks. In International conference on machine learning , pages 6105-6114. PMLR.\n- Hugo Touvron, Louis Martin, Kevin Stone, Peter Albert, Amjad Almahairi, Yasmine Babaei, Nikolay Bashlykov, Soumya Batra, Prajjwal Bhargava, Shruti Bhosale, et al. 2023. Llama 2: Open foundation and fine-tuned chat models. arXiv preprint arXiv:2307.09288 .\n- Lewis Tunstall, Edward Beeching, Nathan Lambert, Nazneen Rajani, Kashif Rasul, Younes Belkada, Shengyi Huang, Leandro von Werra, Clémentine Fourrier, Nathan Habib, et al. 2023. Zephyr: Direct distillation of lm alignment. arXiv preprint arXiv:2310.16944 .\n- Peihao Wang, Rameswar Panda, Lucas Torroba Hennigen, Philip Greengard, Leonid Karlinsky, Rogerio Feris, David Daniel Cox, Zhangyang Wang, and Yoon Kim. 2023. Learning to grow pretrained models for efficient transformer training. arXiv preprint arXiv:2303.00980 .\n- Yizhong Wang, Yeganeh Kordi, Swaroop Mishra, Alisa Liu, Noah A Smith, Daniel Khashabi, and Hannaneh Hajishirzi. 2022. Self-instruct: Aligning language model with self generated instructions. arXiv preprint arXiv:2212.10560 .\n- Jason Wei, Maarten Bosma, Vincent Y Zhao, Kelvin Guu, Adams Wei Yu, Brian Lester, Nan Du, Andrew M Dai, and Quoc V Le. 2021. Finetuned language models are zero-shot learners. arXiv preprint arXiv:2109.01652 .\n- Jason Wei, Yi Tay, Rishi Bommasani, Colin Raffel, Barret Zoph, Sebastian Borgeaud, Dani Yogatama, Maarten Bosma, Denny Zhou, Donald Metzler, et al. 2022a. Emergent abilities of large language models. arXiv preprint arXiv:2206.07682 .\n- Jason Wei, Xuezhi Wang, Dale Schuurmans, Maarten Bosma, Fei Xia, Ed Chi, Quoc V Le, Denny Zhou, et al. 2022b. Chain-of-thought prompting elicits reasoning in large language models. Advances in Neural Information Processing Systems , 35:24824-24837.\n- Thomas Wolf, Lysandre Debut, Victor Sanh, Julien Chaumond, Clement Delangue, Anthony Moi, Pierric Cistac, Tim Rault, Rémi Louf, Morgan Funtowicz, et al. 2019. Huggingface's transformers: State-ofthe-art natural language processing. arXiv preprint arXiv:1910.03771 .", + "processing_time": 0.329321917030029, + "client_elapsed": 0.33117791602853686 + }, + { + "status": "success", + "filename": "01030000000194.pdf", + "markdown": "- Peihao Wang, Rameswar Panda, Lucas Torroba Hennigen, Philip Greengard, Leonid Karlinsky, Rogerio Feris, David Daniel Cox, Zhangyang Wang, and Yoon Kim. 2023. Learning to grow pretrained models for efficient transformer training. arXiv preprint arXiv:2303.00980 .\n- Yizhong Wang, Yeganeh Kordi, Swaroop Mishra, Alisa Liu, Noah A Smith, Daniel Khashabi, and Hannaneh Hajishirzi. 2022. Self-instruct: Aligning language model with self generated instructions. arXiv preprint arXiv:2212.10560 .\n- Jason Wei, Maarten Bosma, Vincent Y Zhao, Kelvin Guu, Adams Wei Yu, Brian Lester, Nan Du, Andrew M Dai, and Quoc V Le. 2021. Finetuned language models are zero-shot learners. arXiv preprint arXiv:2109.01652 .\n- Jason Wei, Yi Tay, Rishi Bommasani, Colin Raffel, Barret Zoph, Sebastian Borgeaud, Dani Yogatama, Maarten Bosma, Denny Zhou, Donald Metzler, et al. 2022a. Emergent abilities of large language models. arXiv preprint arXiv:2206.07682 .\n- Jason Wei, Xuezhi Wang, Dale Schuurmans, Maarten Bosma, Fei Xia, Ed Chi, Quoc V Le, Denny Zhou, et al. 2022b. Chain-of-thought prompting elicits reasoning in large language models. Advances in Neural Information Processing Systems , 35:24824-24837.\n- Thomas Wolf, Lysandre Debut, Victor Sanh, Julien Chaumond, Clement Delangue, Anthony Moi, Pierric Cistac, Tim Rault, Rémi Louf, Morgan Funtowicz, et al. 2019. Huggingface's transformers: State-ofthe-art natural language processing. arXiv preprint arXiv:1910.03771 .\n- Prateek Yadav, Derek Tam, Leshem Choshen, Colin Raffel, and Mohit Bansal. 2023. Ties-merging: Resolving interference when merging models. In Thirtyseventh Conference on Neural Information Processing Systems .\n- Chengrun Yang, Xuezhi Wang, Yifeng Lu, Hanxiao Liu, Quoc V Le, Denny Zhou, and Xinyun Chen. 2023. Large language models as optimizers. arXiv preprint arXiv:2309.03409 .\n- Yiqun Yao, Zheng Zhang, Jing Li, and Yequan Wang. 2023. 2x faster language model pre-training via masked structural growth. arXiv preprint arXiv:2305.02869 .\n- Longhui Yu, Weisen Jiang, Han Shi, Jincheng Yu, Zhengying Liu, Yu Zhang, James T Kwok, Zhenguo Li, Adrian Weller, and Weiyang Liu. 2023. Metamath: Bootstrap your own mathematical questions for large language models. arXiv preprint arXiv:2309.12284 .\n- Zheng Yuan, Hongyi Yuan, Chuanqi Tan, Wei Wang, Songfang Huang, and Fei Huang. 2023. Rrhf: Rank responses to align language models with human feedback without tears. arXiv preprint arXiv:2304.05302 .\n- Rowan Zellers, Ari Holtzman, Yonatan Bisk, Ali Farhadi, and Yejin Choi. 2019. Hellaswag: Can a machine really finish your sentence? In Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics , pages 4791-4800.\n- Shengyu Zhang, Linfeng Dong, Xiaoya Li, Sen Zhang, Xiaofei Sun, Shuhe Wang, Jiwei Li, Runyi Hu, Tianwei Zhang, Fei Wu, et al. 2023. Instruction tuning for large language models: A survey. arXiv preprint arXiv:2308.10792 .\n- Wayne Xin Zhao, Kun Zhou, Junyi Li, Tianyi Tang, Xiaolei Wang, Yupeng Hou, Yingqian Min, Beichen Zhang, Junjie Zhang, Zican Dong, et al. 2023. A survey of large language models. arXiv preprint arXiv:2303.18223 .\n- Kun Zhou, Yutao Zhu, Zhipeng Chen, Wentong Chen, Wayne Xin Zhao, Xu Chen, Yankai Lin, Ji-Rong Wen, and Jiawei Han. 2023. Don't make your llm an evaluation benchmark cheater. arXiv preprint arXiv:2311.01964 .\n- Daniel M Ziegler, Nisan Stiennon, Jeffrey Wu, Tom B Brown, Alec Radford, Dario Amodei, Paul Christiano, and Geoffrey Irving. 2019. Fine-tuning language models from human preferences. arXiv preprint arXiv:1909.08593 .", + "processing_time": 0.2969273329945281, + "client_elapsed": 0.2986480839899741 + }, + { + "status": "success", + "filename": "01030000000195.pdf", + "markdown": "## A Contributions\n\nThe contributions of this study are as follows:\n\n- Introduction of the SOLAR 10.7 BillionParameter Model : We have released the SOLAR 10.7B model, which is not only depthwise scaled but also continually pretrained. The availability of SOLAR 10.7B under the Apache 2.0 license permits commercial usage, enabling the integration of this advanced model into a diverse range of products and services. This bridges the gap between academic research and practical applications, fostering wider accessibility and utility in various fields.\n- Superior Performance Across Diverse Benchmarks : SOLAR 10.7B excels in various benchmarks, outperforming established models like Llama 2 and Mistral 7B in reasoning, mathematics, and the MMLU framework.\n- Advancement in Instruction-Following Capabilities : The introduction of SOLAR 10.7BInstruct, a variant fine-tuned for enhanced instruction-following abilities, marks a significant improvement in the model's ability to understand and execute complex instructions.\n\nDahyun Kim, Chanjun Park, Sanghoon Kim, and Wonsung Lee contributed equally to this paper. Sanghoon Kim led the Foundation Model part, with Dahyun Kim, Wonho Song, Yunsu Kim, and Hyeonwoo Kim. Chanjun Park led the Data and Evaluation (Data-Centric LLM) part, with Yungi Kim, Jihoo Kim, Changbae Ahn, Seonghoon Yang, Sukyung Lee, and Hyunbyung Park. Wonsung Lee led the Adaptation Modeling part, with Gyoungjin Gim, Hyeonju Lee, and Mikyoung Cha. Hwalsuk Lee performed the role of the overall project operation. All these individuals contributed to the creation of SOLAR 10.7B.\n\n## B Related Works and Background\n\n## B.1 Large Language Models\n\nFollowing the advent of context-based language models, various studies have revealed a 'scaling law' (Kaplan et al., 2020; Hernandez et al., 2021; Anil et al., 2023), demonstrating a positive correlation between the size of model and training data and model performance. This has led to the emergence of Large Language Models (LLMs). Unlike previous language models, LLMs possess the ability for In-context learning, including Zero-shot learning (Radford et al., 2019) and Few-shot learning (Brown et al., 2020), allowing them to perform new tasks without updating model weights. These capabilities of LLMs, not evident in smaller models, are referred to as Emergent abilities (Wei et al., 2022a).\n\n## B.2 Mixture of Experts\n\nIn the landscape of machine learning architectures, the Mixture of Experts (MoE) models like (Shazeer et al., 2017; Shen et al., 2019; Komatsuzaki et al., 2022) has gained attention for its capability to address the challenges posed by complex and heterogeneous data. MoE models offer notable benefits, including enhanced output diversity, allowing for the capture of intricate patterns within the input space. Moreover, their computational efficiency, especially when implemented in a sparse form, has made them valuable in scenarios where resource constraints are a consideration (Shazeer et al., 2017; Komatsuzaki et al., 2022).\n\nHowever, efficient implementation of MoE models poses a considerable challenge, primarily due to the intricacies associated with dynamic routing and load-imbalanced computation (Gale et al., 2023). Existing hardware and software for deep learning, such as TPUs and XLA compilers, often demand static knowledge of tensor shapes, making MoE implementation on TPU challenging.\n\nWhile GPU implementation offers more flexibility, sparse computation compatibility becomes a hurdle. Striking the right balance between fixing the size of each expert to facilitate efficient computation and maintaining model quality creates a tradeoff between information preservation and hardware efficiency. This tradeoff, in turn, necessitates careful consideration during hyperparameter tuning, adding a layer of complexity to the implementation of MoE models, potentially offsetting their advantages. Given the formidable challenges in MoE model implementation, it becomes almost inevitable for researchers and practitioners to resort to specialized tools and frameworks, such as Tutel (Hwang et al., 2023) or Megablocks (Gale et al., 2023).\n\nDeparting from the horizontal expansion characteristic of MoE models, the DUS method introduces model scaling in the vertical dimension. Notably, DUS does not introduce dynamism in the scaled model, which significantly reduces the com-", + "processing_time": 0.28179670800454915, + "client_elapsed": 0.28359274996910244 + }, + { + "status": "success", + "filename": "01030000000196.pdf", + "markdown": "plexity when compared to MoE. This shift in approach offers a unique and more straightforward way of working, moving away from conventional MoE challenges. Not only that, DUS also undergoes continued pretraining to quickly recover performance of the scaled model.\n\n## B.3 Prompt Engineering\n\nA key research area to harness the emergent abilities of LLMs is prompt engineering. Prompt engineering is the study of how to design inputs (prompts) that enable LLMs to better perform specific tasks. A prime example of this research is Chain-of-Thought (CoT) (Wei et al., 2022b), which proposes CoT prompting that decomposes multi-step problems into a series of intermediate reasoning steps. Moreover, efforts are underway to replace even such prompt engineering with LLMs (Yang et al., 2023).\n\n## B.4 Instruction Tuning\n\nTo enhance the steerability of LLMs, instruction tuning (Wei et al., 2021) has emerged as a learning technique. This involves fine-tuning LLMs using data formatted as (instruction, input, output) for various tasks (Wang et al., 2022). Instruction tuning allows for targeted adjustments, providing a more controlled and task-oriented improvement to the model's capabilities.\n\nBefore instruction tuning, existing methods faced challenges in effectively guiding and controlling the behavior of large language models (Zhang et al., 2023b). The sheer complexity of these models made it difficult to ensure precise and taskoriented responses. The need for a more targeted approach arose from the limitations of existing methods, leading to the development of instruction tuning. This targeted approach enables better control over the model's behavior, making it more suitable for specific tasks and improving its overall performance in alignment with user-defined objectives. Therefore, instruction tuning is computationally efficient and facilitates the rapid adaptation of LLMs to a specific domain without requiring extensive retraining or architectural changes.\n\n## B.5 Alignment Tuning\n\nLLM has been observed to generate sentences that may be perceived as linguistically incongruent by human readers since they learned not human intention, but only vast knowledge across various domains in the pretraining step (Ziegler et al., 2019).\n\nTo overcome this limitation and align with human intentions, previous research (Ziegler et al., 2019) have proposed Reinforcement Learning with Human Feedback (RLHF). RLHF operates by learning a reward model based on human preferences, employing reinforcement learning to guide the LLM towards prioritizing answers with the highest reward scores. This process enhances the safety, propriety, and overall quality of the generated responses. Despite demonstrating satisfactory performance, RLHF encounters challenges such as managing numerous hyperparameters and necessitating the incorporation of multiple models (policy, value, reward, and reference models).\n\nIn response to these challenges, the supervised fine-tuning based approaches have proposed, such as Rank Responses to align Human Feedback (RRHF) (Yuan et al., 2023), Reward rAnked FineTuning (RAFT) (Dong et al., 2023), and Direct Policy Optimization (DPO) (Intel, 2023). They avoid the complexities associated with reinforcement learning while achieving empirical performance comparable to RLHF. Among them, DPO that we used directly guides the LLM to increase the probability of positive responses and decrease the probability of negative responses through a \"direct\" approach. Interestingly, DPO demonstrates more stable learning results compared to RLHF, despite its simple training approach.\n\n## B.6 Data Contamination\n\nRecent researches (Zhou et al., 2023; Sainz et al., 2023; Golchin and Surdeanu, 2023; Deng et al., 2023) emphasize the need to measure whether a specific benchmark was used to train the large language models. There are three types of the data contamination: guideline, raw text and annotation (Sainz et al., 2023). Guideline contamination occurs when a model accesses detailed annotation guidelines for a dataset, providing advantages in specific tasks, and its impact should be considered, especially in zero and few-shot evaluations. Raw text contamination occurs when a model has access to the original text. Wikipedia is widely used as a pretraining data, but also as a source for creating new datasets. The caution is advised in the development of automatically annotated datasets sourced from the web. Annotation contamination occurs when the annotations of the specific benchmark are exposed during model training.", + "processing_time": 0.2776121249771677, + "client_elapsed": 0.2793750829878263 + }, + { + "status": "success", + "filename": "01030000000197.pdf", + "markdown": "## C Additional Information\n\nWe present additional information for the sake of space in the main paper.\n\nFiltered task names. We present task names we use to filter FLAN dervied datasets such as OpenOrca in Table 8.\n\nTable 8: Task names that we use to filter data for FLAN derived datasets such as OpenOrca.\n\n| Filtered Task Name |\n|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| task228_arc_answer_generation_easy ai2_arcARCChallenge:1.0.0 ai2_arcARCEasy:1.0.0 task229_arc_answer_generation_hard hellaswag:1.1.0 task1389_hellaswag_completion cot_gsm8k cot_gsm8k_ii drop:2.0.0 winogrande:1.1.0 |\n\nTable 9: Data contamination test results for SOLAR 10.7B-Instruct. We show 'result < 0.1, %' values where a value higher than 0.9 indicates high probability of data contamination. HellaSwag and Winogrande datasets are not currently supported. We set SOLAR 10.7B as our reference model when performing the data contamination tests.\n\n| ARC | HellaSwag | MMLU | TruthfulQA | Winogrande | GSM8K |\n|-------|-------------|--------|--------------|--------------|---------|\n| 0.06 | N/A | 0.15 | 0.28 | N/A | 0.7 |\n\nResults on data contamination. To show the integrity of SOLAR 10.7B-Instruct, we also report the data contamination test (Shi et al., 2023) results in Table. 9. All four tested benchmark datasets yield results well below the contamination threshold, affirming the absence of data contamination in our model. One interesting point is that the value for GSM8K is noticeably higher than for other datasets, even without contamination. One potential reason for this is the stronger data similarity in math-related instruction datasets.", + "processing_time": 0.6365648750215769, + "client_elapsed": 0.6379702909616753 + }, + { + "status": "success", + "filename": "01030000000198.pdf", + "markdown": "## Contents\n\n2. Introduction of Product Services and Key Features\n\n1. Overview of OCR Pack 3. Product - Detail Specification 4. Integration Policy 5. FAQ 6", + "processing_time": 1.534952833026182, + "client_elapsed": 1.5379275000304915 + }, + { + "status": "success", + "filename": "01030000000199.pdf", + "markdown": "## Base Model Performance Evaluation of Upstage OCR Pack\n\n## Upstage universal OCR model E2E performance evaluation 1\n\n\n\n## Upstage universal OCR model performance details: Document criteria\n\n\n\n3 Recall: Percentage of what the OCR model predicted to be True from those that were actually True\n\n4 Precision: Percentage of what the OCR model classifies as True, which is actually True\n\n5 F1: Harmonic mean value of Recall and Precision\n\n6. Parsing-F1: Comparison of parsing model F1 of both companies for business registration document form. Company A is excluded from comparison due to the absence of the document parsing model.\n\n11", + "processing_time": 2.4042399169993587, + "client_elapsed": 2.408014832995832 + }, + { + "status": "success", + "filename": "01030000000200.pdf", + "markdown": "## Key Functions by Main Service Flow\n\n| Service Stage | FunctionName | Explanation | Expected Benefit |\n|------------------------------------------|--------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| 1. Project creation | Project creation and management | Select document type to automatically run project creation, Pipeline configuration with recommended Modelset and Endpoint deployment | The intuitive UI environment allows the the person in charge to quickly proceed with the entire process from project creation to deployment, improving work efficiency |\n| 2. Data labeling and fine-tuning | Data storage management | Provides convenient functions for uploading raw data, viewer, and data management (search using image metadata, sorting, filtering, hashtags settings on image data) Image data bookmark for Qualitative Evaluation | Conveniently manage raw data to be used for OCR Pack and actual date from live service |\n| | Create and manage Labeling Space | Creating a Labeling Space to manage raw data annotation, managing labeling resources (Ontology, Characters to be Recognized), data set dump, data set version management 3 | Labeling work can be outsourced within the pack. Labeled data is continuously supplied from which data sets can be created with ease. The Auto Labeling function increases both efficiency and convenience. |\n| | Model training | Various basic models for each selected document, information comparison between models, basic model training, training pause function, re-training, cancel function, and configuration support for Characters to be Recognized and Ontology that is frequently modified while developing specialized models 5 | Providing a foundation for customers to implement, manage, and upgrade their own OCR model specialized to the customers' needs |\n| 3. Pipeline configuration and deployment | Pipeline, Endpoint Creation and management | Choose Detector, Recognizer, or Parser to create a Pipeline or an Endpoint Connect Pipelines to Endpoints, perform tasks such as deployment controllers, deployment recovery, and more | Providing a foundation for customers to implement, manage, and upgrade their own OCR model specialized to the customers' needs |\n| 4. Monitoring and evaluation | Project monitoring | Monitoring of deployed Pipelines and Endpoints, notifying the customer of important issues such as suspicion of model performance degradation, and Qualitative Evaluation of actual incoming customer data | Monitor important indicators for each project and quickly identify and respond to issues |\n| | Full Pack Monitoring | Monitoring traffic of all deployed Endpoints, quality monitoring of all deployed models, and monitoring of resources (GPU, CPU, Storage) connected to the Pack | Monitoring useful information about the overall OCR Pack at a glance |\n| | Quantitative / Qualitative Evaluation | Quantitative evaluation leaderboard / Qualitative Evaluation | Viewing the model's performance to help the customer choose the appropriate model |\n| | Guide and help | Provides context-specific guides to help you troubleshoot yourself, download terminal logs for error situations and Pack documentation | The customer can diagnose, respond to, and solve problems occurring in the Pack on their own without external help |", + "processing_time": 4.246157291985583, + "client_elapsed": 4.2497559590265155 + } + ] +} \ No newline at end of file diff --git a/docs/hybrid/experiments/triage/triage-experiments.md b/docs/hybrid/experiments/triage/triage-experiments.md new file mode 100644 index 0000000..fb26fcf --- /dev/null +++ b/docs/hybrid/experiments/triage/triage-experiments.md @@ -0,0 +1,349 @@ +--- +name: triage-lab +description: Triage logic experiment records and optimization history +--- + +# Triage Lab - Experiment Records + +This skill manages experiment records and optimization history for triage logic. + +## Current Implementation + +**File**: `java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/TriageProcessor.java` + +### Signal Priority (classifyPage method) +1. `hasTableBorder` - TableBorder presence (confidence: 1.0) +2. `hasVectorTableSignal` - Grid lines, border lines, line art (confidence: 0.95) +3. `hasTextTablePattern` - Text patterns with consecutive validation (confidence: 0.9) +4. `hasSuspiciousPattern` - Y-overlap or large gap detection (confidence: 0.85) +5. `lineToTextRatio > 0.3` - High line chunk ratio (confidence: 0.8) +6. `alignedLineGroups >= 5` - Aligned baseline groups (confidence: 0.7) + +### Key Thresholds +| Parameter | Value | Location | +|-----------|-------|----------| +| LINE_RATIO_THRESHOLD | 0.3 | TriageProcessor:41 | +| ALIGNED_LINE_GROUPS_THRESHOLD | 5 | TriageProcessor:46 | +| GRID_GAP_MULTIPLIER | 3.0 | TriageProcessor:49 | +| MIN_LINE_COUNT_FOR_TABLE | 8 | TriageProcessor:57 | +| MIN_GRID_LINES | 3 | TriageProcessor:60 | +| MIN_CONSECUTIVE_PATTERNS | 2 | TriageProcessor:79 | + +--- + +## Experiment History + +### Experiment 001 (2026-01-03): FP Cause Analysis + +**Goal**: Identify root causes of high False Positive rate + +**Baseline**: +- Documents: 200 (42 with tables) +- TP: 41, TN: 48, FP: 110, FN: 1 +- Precision: 27.15%, Recall: 97.62%, F1: 42.49% + +**FP by Signal**: +| Signal | Count | % | +|--------|-------|---| +| hasSuspiciousPattern | 65 | 59.1% | +| hasVectorTableSignal | 23 | 20.9% | +| hasTableBorder | 14 | 12.7% | +| hasTextTablePattern | 5 | 4.5% | +| alignedLineGroups | 2 | 1.8% | +| highLineRatio | 1 | 0.9% | + +**Root Cause**: Y-overlap check in `hasSuspiciousPattern` is too sensitive +- Condition `previous.getTopY() < current.getBottomY()` triggers on normal multi-column layouts + +**Experiments**: +| Config | Precision | Recall | F1 | FP | FN | +|--------|-----------|--------|-----|-----|-----| +| Baseline | 27.15% | 97.62% | 42.49% | 110 | 1 | +| Disable Y-overlap | 36.28% | 97.62% | 52.90% | ~69 | 1 | +| Only Reliable Signals | 50.67% | 90.48% | 64.96% | ~38 | 4 | +| Disable SuspiciousPattern | 39.22% | 95.24% | 55.56% | ~64 | 2 | +| Require 3+ patterns | 37.38% | 95.24% | 53.69% | ~67 | 2 | + +**Recommendation**: +- To maintain recall: Remove Y-overlap check (Precision +9%, Recall unchanged) +- To optimize F1: Use only reliable signals (F1 +22%, Recall -7%) + +**FN Documents**: +- `01030000000110`: Missed by all experiments (needs investigation) +- `01030000000122`, `01030000000116`, `01030000000117`: Only detected by SuspiciousPattern + +**Applied**: Y-overlap check removed (2026-01-03) + +--- + +### Experiment 002 (2026-01-03): Further FP Reduction + +**Goal**: Reduce remaining 72 FPs after Y-overlap removal + +**Current FP by Signal** (after Experiment 001): +| Signal | Count | % | +|--------|-------|---| +| hasSuspiciousPattern | 21 | 29.2% | +| hasTableBorder | 14 | 19.4% | +| hasVectorTableSignal | 13 | 18.1% | +| alignedLineGroups | 10 | 13.9% | +| unknown | 8 | 11.1% | +| hasTextTablePattern | 5 | 6.9% | +| highLineRatio | 1 | 1.4% | + +**Experiment 2A: Gap Multiplier** (hasSuspiciousPattern) +| Gap | Precision | Recall | F1 | FP | FN | +|-----|-----------|--------|-----|-----|-----| +| 3.0 (current) | 37.86% | 92.86% | 53.79% | 64 | 3 | +| 4.0 | 37.86% | 92.86% | 53.79% | 64 | 3 | +| 5.0 | 37.86% | 92.86% | 53.79% | 64 | 3 | +| 6.0 | 37.86% | 92.86% | 53.79% | 64 | 3 | + +→ No effect (Y-overlap removal already optimized this signal) + +**Experiment 2B: AlignedLineGroups Threshold** +| Threshold | Precision | Recall | F1 | FP | FN | +|-----------|-----------|--------|-----|-----|-----| +| 3 (current) | 37.86% | 92.86% | 53.79% | 64 | 3 | +| 4 | 39.39% | 92.86% | 55.32% | 60 | 3 | +| **5** | **39.80%** | **92.86%** | **55.71%** | **59** | **3** | +| 6 | 39.80% | 92.86% | 55.71% | 59 | 3 | + +→ **Recommended**: Threshold 5 (FP -5, Recall maintained) + +**Experiment 2C: Vector Signal Criteria** +| LineCount | GridLines | Precision | Recall | F1 | FP | FN | +|-----------|-----------|-----------|--------|-----|-----|-----| +| 8, 3 (current) | | 37.86% | 92.86% | 53.79% | 64 | 3 | +| 10, 4 | | 38.24% | 92.86% | 54.17% | 63 | 3 | +| 12, 4 | | 37.62% | 90.48% | 53.15% | 63 | 4 | + +→ Minimal effect (FP -1, higher values reduce Recall) + +**Recommendation**: +- Apply `alignedLineGroups` threshold 3 → 5 +- Expected: FP 64 → 59 (-5), Recall 92.86% (maintained), F1 +1.92% + +**Applied**: alignedLineGroups threshold 3 → 5 (2026-01-03) + +**Actual Results**: +| Metric | Before (Exp 001) | After (Exp 002) | Change | +|--------|------------------|-----------------|--------| +| FP | 72 | 67 | -5 | +| FN | 1 | 1 | 0 | +| Precision | 36.28% | 37.96% | +1.68% | +| Recall | 97.62% | 97.62% | 0 | +| F1 | 52.90% | 54.67% | +1.77% | + +**Next Steps**: +- Investigate `hasTableBorder` FPs (14 cases, external library) +- Investigate `unknown` FPs (8 cases) + +--- + +### Experiment 003 (2026-01-03): VectorTableSignal & SuspiciousPattern Analysis + +**Goal**: Further reduce FP 67 while maintaining high Recall + +**Current FP by Signal** (after Experiment 002): +| Signal | Count | % | +|--------|-------|---| +| hasVectorTableSignal | 23 | 34.3% | +| hasSuspiciousPattern | 19 | 28.4% | +| hasTableBorder | 14 | 20.9% | +| hasTextTablePattern | 5 | 7.5% | +| alignedLineGroups | 5 | 7.5% | +| highLineRatio | 1 | 1.5% | + +**VectorTableSignal Sub-signal Analysis** (23 FPs): +| Sub-signal | Count | +|------------|-------| +| hasAlignedShortLines | 30 | +| hasTableBorderLines | 22 | +| hasGridLines | 16 | +| lineArt>=8 | 13 | +| hasRowSeparatorPattern | 12 | + +→ `hasAlignedShortLines` is the primary cause of VectorSignal FPs + +**Experiments**: +| Config | Precision | Recall | F1 | FP | FN | +|--------|-----------|--------|-----|-----|-----| +| Current (Exp 002) | 37.96% | 97.62% | 54.67% | 67 | 1 | +| 003B: Disable VectorSignal | 40.00% | 90.48% | 55.47% | 57 | 4 | +| 003C: Grid OR BorderLines only | 40.21% | 92.86% | 56.12% | 58 | 3 | +| **003D: Disable SuspiciousPattern** | **42.11%** | **95.24%** | **58.39%** | **55** | **2** | +| 003F: Only Reliable Signals | 56.25% | 85.71% | 67.92% | 28 | 6 | +| 003G: Disable AlignedShortLines | 40.00% | 95.24% | 56.34% | 60 | 2 | +| 003I: Combined (NoAlign+NoSusp) | 44.71% | 90.48% | 59.84% | 47 | 4 | + +**Analysis**: +- `hasTableBorder` (14 FPs): External library, cannot modify +- `hasVectorTableSignal` (23 FPs): `hasAlignedShortLines` too aggressive +- `hasSuspiciousPattern` (19 FPs): Gap detection catches non-table layouts + +**Recommendation**: +- **Best for Recall**: 003D (Disable SuspiciousPattern) + - FP: 67 → 55 (-12), FN: 1 → 2 (+1), Recall: 95.24% +- **Best for F1**: 003I (Combined) + - FP: 67 → 47 (-20), FN: 1 → 4 (+3), F1: 59.84% + +**FN Documents** (003D): +- `01030000000122`: Only detected by SuspiciousPattern (gap-based) +- `01030000000110`: Never detected (needs separate investigation) + +**Applied**: 003D - Disabled hasSuspiciousPattern (2026-01-03) + +**Actual Results**: +| Metric | Before (Exp 002) | After (Exp 003) | Change | +|--------|------------------|-----------------|--------| +| FP | 67 | 55 | -12 | +| FN | 1 | 2 | +1 | +| Precision | 37.96% | 42.11% | +4.15% | +| Recall | 97.62% | 95.24% | -2.38% | +| F1 | 54.67% | 58.39% | +3.72% | + +--- + +### Experiment 004 (2026-01-03): AlignedLineGroups Signal Analysis + +**Goal**: Further reduce FP 55 while maintaining Recall 95.24% + +**Current FP by Signal** (after Experiment 003): +| Signal | Count | % | +|--------|-------|---| +| hasVectorTableSignal | 23 | 41.8% | +| hasTableBorder | 14 | 25.5% | +| alignedLineGroups | 12 | 21.8% | +| hasTextTablePattern | 5 | 9.1% | +| highLineRatio | 1 | 1.8% | + +**VectorTableSignal Sub-signal Analysis** (23 FPs): +| Sub-signal | Count | +|------------|-------| +| hasAlignedShortLines | 16 | +| hasTableBorderLines | 10 | +| lineArt>=8 | 8 | +| hasRowSeparatorPattern | 7 | +| hasGridLines | 5 | + +**Experiments**: +| Config | Precision | Recall | F1 | FP | FN | +|--------|-----------|--------|-----|-----|-----| +| Current (Exp 003) | 42.11% | 95.24% | 58.39% | 55 | 2 | +| 004A: NoAlignedShortLines | 44.71% | 90.48% | 59.84% | 47 | 4 | +| 004B: Grid+BorderLines only | 45.12% | 88.10% | 59.68% | 45 | 5 | +| **004D: No alignedLineGroups** | **48.19%** | **95.24%** | **64.00%** | **43** | **2** | +| 004E: alignedLineGroups>=7 | 44.94% | 95.24% | 61.07% | 49 | 2 | +| 004G: NoAlignShort+Groups>=7 | 48.10% | 90.48% | 62.81% | 41 | 4 | +| 004I: Reliable Only | 54.41% | 88.10% | 67.27% | 31 | 5 | + +**Analysis**: +- `alignedLineGroups` signal caused 12 FPs but detected no additional true tables +- Disabling it removes all 12 FPs without any FN increase +- Best option for maintaining Recall while improving Precision + +**Applied**: 004D - Disabled alignedLineGroups signal (2026-01-03) + +**Actual Results**: +| Metric | Before (Exp 003) | After (Exp 004) | Change | +|--------|------------------|-----------------|--------| +| FP | 55 | 43 | -12 | +| FN | 2 | 2 | 0 | +| Precision | 42.11% | 48.19% | +6.08% | +| Recall | 95.24% | 95.24% | 0 | +| F1 | 58.39% | 64.00% | +5.61% | + +**Next Steps**: +- Investigate `hasVectorTableSignal` FPs (23 remaining) - hasAlignedShortLines main cause +- Investigate `hasTableBorder` FPs (14 cases, external library limitation) + +--- + +### Experiment 005 (2026-01-03): Large Image Signal for FN Reduction + +**Goal**: Reduce FN by detecting pages with large images (potential table/chart images) + +**Background**: +- FN documents `01030000000110` and `01030000000122` contain images with tables +- 110: 28.64% page area (graph image) +- 122: 11.73% page area (table image) + +**Implementation**: +- Added `hasLargeImage` signal to TriageProcessor +- Detects ImageChunk objects and calculates max image area / page area ratio + +**Experiments**: +| Threshold | Precision | Recall | F1 | FP | FN | +|-----------|-----------|--------|-----|-----|-----| +| Baseline (no image) | 48.19% | 95.24% | 64.00% | 43 | 2 | +| 10% | 33.07% | **100%** | 49.70% | 85 | 0 | +| **11%** | **33.60%** | **100%** | **50.30%** | **83** | **0** | +| 15% | 35.96% | 97.62% | 52.56% | 73 | 1 | + +**Analysis**: +- 11% threshold achieves **100% Recall** (all 42 table documents detected) +- Trade-off: FP increases from 43 → 83 (+40), Precision drops from 48% → 34% +- F1 decreases from 64% → 50% due to high FP increase +- Many FPs are documents with decorative images, diagrams, photos + +**Experiment 005B: Adding Aspect Ratio Condition** + +Observation: FN documents have wide images (ratio 1.79, 3.68), while FP documents often have square/tall images (ratio 0.6~1.5). + +| Config | Precision | Recall | F1 | FP | FN | +|--------|-----------|--------|-----|-----|-----| +| Baseline (no image) | 48.19% | 95.24% | 64.00% | 43 | 2 | +| 11% only | 33.60% | 100% | 50.30% | 83 | 0 | +| 11% + ratio 1.7 | 42.86% | 100% | 60.00% | 56 | 0 | +| **11% + ratio 1.75** | **43.30%** | **100%** | **60.43%** | **55** | **0** | +| 11% + ratio 2.0 | 46.59% | 97.62% | 63.08% | 47 | 1 | + +**Final Configuration**: +- Image area >= 11% of page area +- Image aspect ratio (width/height) >= 1.75 + +**Trade-off**: +- Achieves **100% Recall** (all 42 table documents detected) +- FP increases from 43 → 55 (+12) +- F1 decreases from 64% → 60.43% (-3.57%) + +**Applied**: 11% + aspect ratio 1.75 (2026-01-03) + +--- + +## Template for New Experiments + +```markdown +### Experiment XXX (YYYY-MM-DD): [Title] + +**Goal**: [What are you trying to improve?] + +**Changes**: [What did you modify?] + +**Results**: +| Config | Precision | Recall | F1 | FP | FN | +|--------|-----------|--------|-----|-----|-----| +| Before | | | | | | +| After | | | | | | + +**Conclusion**: [What did you learn? Should this be applied?] + +**Next Steps**: [What to try next?] +``` + +--- + +## How to Run Experiments + +```bash +# Run triage accuracy test +./scripts/test-java.sh -Dtest=TriageProcessorIntegrationTest#testTriageAccuracyOnBenchmarkPDFs + +# Debug specific document +./scripts/bench.sh --doc-id 01030000000110 +``` + +## Related Files +- [TriageProcessor.java](../../java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/TriageProcessor.java) +- [TriageProcessorIntegrationTest.java](../../java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/TriageProcessorIntegrationTest.java) diff --git a/docs/hybrid/hybrid-mode-design.md b/docs/hybrid/hybrid-mode-design.md new file mode 100644 index 0000000..d3b5541 --- /dev/null +++ b/docs/hybrid/hybrid-mode-design.md @@ -0,0 +1,121 @@ +# Hybrid PDF Processing System - Design Document + +## Overview + +Hybrid PDF processing system combining Java heuristics + external AI backends. +Routes pages via per-page Triage: simple pages to fast Java path, complex tables/OCR to AI backend. + +## Key Decisions + +| Item | Decision | +|------|----------| +| CLI Option | `--hybrid ` | +| Default | `off` (Java-only, no external dependency) | +| First Backend | `docling` (docling-serve REST API) | +| Automation | Semi-automatic (benchmark/analysis auto, code changes require approval) | +| Triage Strategy | Conservative (minimize FN, accept FP, route uncertain pages to backend) | + +--- + +## CLI Usage + +```bash +# Default: Java-only processing +opendataloader-pdf input.pdf +opendataloader-pdf --hybrid off input.pdf + +# Use docling backend +opendataloader-pdf --hybrid docling input.pdf + +# With custom backend URL +opendataloader-pdf --hybrid docling --hybrid-url http://localhost:5001 input.pdf + +# Future backends +opendataloader-pdf --hybrid hancom input.pdf +``` + +## Hybrid Options + +| Option | Description | +|--------|-------------| +| `--hybrid ` | Hybrid backend: `off` (default), `docling`, `hancom`, etc. | +| `--hybrid-url ` | Backend server URL (overrides default) | +| `--hybrid-timeout ` | Request timeout in milliseconds (default: 0, no timeout) | +| `--hybrid-fallback` | Opt in to Java fallback on backend error (default: disabled — backend failures fail fast with non-zero exit) | + +## Supported Backends + +| Backend | Status | Description | +|---------|--------|-------------| +| `off` | ✅ Default | Java-only, no external calls | +| `docling-fast` | ✅ Available | docling-serve (local) | +| `hancom` | 📋 Future (Priority) | Hancom Document AI | +| `azure` | 📋 Future | Azure Document Intelligence | +| `google` | 📋 Future | Google Document AI | + +--- + +## Architecture + +``` +┌─────────────────────────────────────────────────────────────────┐ +│ PDF Input │ +└─────────────────────────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────┐ +│ ContentFilterProcessor │ +│ (existing: text filtering) │ +└─────────────────────────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────┐ +│ TriageProcessor.triageAllPages() │ +│ - Batch triage all pages │ +│ - Output: Map │ +└─────────────────────────────────────────────────────────────────┘ + │ + ┌───────────────┴───────────────┐ + │ │ + ▼ ▼ +┌─────────────────────────┐ ┌─────────────────────────┐ +│ JAVA Path │ │ BACKEND Path │ +│ (parallel processing) │ │ (single batch API call)│ +│ │ │ │ +│ ExecutorService │ │ BackendClient │ +│ - TableBorderProcessor │ │ - Send all pages once │ +│ - TextLineProcessor │ │ - Receive all results │ +│ - ParagraphProcessor │ │ SchemaTransformer │ +└─────────────────────────┘ └─────────────────────────┘ + │ │ + │ CONCURRENT │ + └───────────────┬───────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────┐ +│ Result Merger │ +│ (preserve page order) │ +└─────────────────────────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────┐ +│ Post-processing & Output Generation │ +└─────────────────────────────────────────────────────────────────┘ +``` + +--- + +## Risks and Mitigations + +| Risk | Mitigation | +|------|------------| +| Backend unavailable or returns failed pages | Fail fast with non-zero exit (default). Opt in to `--hybrid-fallback` to fall back to Java for backend-routed pages. | +| Triage FN (missed tables) | Conservative threshold, benchmark monitoring | +| Schema mismatch | Step-by-step validation, type checking | +| Slow processing | Parallel execution, batch API calls | + +--- + +## Related Documents + +- **Implementation Tasks**: [hybrid-mode-tasks.md](hybrid-mode-tasks.md) diff --git a/docs/hybrid/hybrid-mode-tasks.md b/docs/hybrid/hybrid-mode-tasks.md new file mode 100644 index 0000000..78c7892 --- /dev/null +++ b/docs/hybrid/hybrid-mode-tasks.md @@ -0,0 +1,1265 @@ +# Hybrid Mode Implementation Tasks + +Each task is independently executable. A new Claude Code session can reference this document to perform the task. + +--- + +## Decision Points (Runtime-Dependent) + +These decisions **require execution results** before they can be made. + +### After Phase -1 (based on docling API test results) + +| Decision | How to Verify | Impact | +|----------|---------------|--------| +| **API endpoint** | Check available endpoints in OpenAPI spec | Task 6 client implementation | +| **Page filtering support** | Check if API options include page filter | Full PDF send required if unsupported | +| **Response page structure** | Analyze sample response JSON structure | Task 7 per-page separation logic | +| **Coordinate system** | Check bbox value ranges in sample response | Task 7 coordinate conversion formula | +| **docling element types** | Extract actual type values from sample response | Task 1 mapping table | + +### After Phase 2 (based on benchmark results) + +| Decision | How to Verify | Impact | +|----------|---------------|--------| +| **Triage threshold tuning** | Check triage_fn (missed tables) count | Lower thresholds if recall < 95% | + +### After Phase 4 (based on evaluation results) + +| Decision | How to Verify | Impact | +|----------|---------------|--------| +| **Triage re-tuning needed** | Analyze FN case signal patterns | Phase 2 rework | + +--- + +## Progress Tracker + +| Task | Status | Completed | Notes | +|------|--------|-----------|-------| +| Task -1: Pre-research | ✅ completed | 2026-01-02 | See docs/hybrid/research/ | +| Task 0: docling-api skill | ✅ completed | 2026-01-02 | See .claude/skills/docling-api/ | +| Task 1: schema-mapping skill | ✅ completed | 2026-01-02 | See .claude/skills/schema-mapping/ | +| Task 2: triage-criteria skill | ✅ completed | 2026-01-02 | See .claude/skills/triage-criteria/ | +| Task 3: HybridConfig | ✅ completed | 2026-01-02 | See java/.../hybrid/HybridConfig.java | +| Task 4: CLI Options | ✅ completed | 2026-01-02 | See java/.../cli/CLIOptions.java | +| Task 5: TriageProcessor | ✅ completed | 2026-01-02 | See java/.../hybrid/TriageProcessor.java | +| Task 6: DoclingClient | ✅ completed | 2026-01-02 | See java/.../hybrid/DoclingClient.java | +| Task 7: SchemaTransformer | ✅ completed | 2026-01-02 | See java/.../hybrid/DoclingSchemaTransformer.java | +| Task 8: HybridDocumentProcessor | ✅ completed | 2026-01-02 | See java/.../processors/HybridDocumentProcessor.java | +| Task 9: Triage Logging | ✅ completed | 2026-01-02 | See java/.../hybrid/TriageLogger.java | +| Task 10: Triage Evaluator | ✅ completed | 2026-01-02 | See tests/benchmark/src/evaluator_triage.py | +| Task 11: Triage Analyzer Agent | ✅ completed | 2026-01-02 | See .claude/agents/triage-analyzer.md | + +**Status Legend:** +- ⬜ `not_started` - Not yet begun +- 🔄 `in_progress` - Currently working +- ✅ `completed` - Done and verified +- ⏸️ `blocked` - Waiting on dependency or issue + +--- + +## Task -1: Pre-research & Data Collection + +### Goal +Collect all required data and specifications before implementation begins. + +### Prerequisites +- Docker installed +- Access to test PDFs in `tests/benchmark/pdfs/` + +### Research Steps + +#### 1. Start docling-serve and collect OpenAPI spec +```bash +# Start docling-serve (official container image) +# Reference: https://github.com/docling-project/docling-serve +docker run -d -p 5001:5001 --name docling-serve \ + -e DOCLING_SERVE_ENABLE_UI=1 \ + quay.io/docling-project/docling-serve + +# Wait for startup (model loading takes time) +sleep 30 + +# Verify server is running (check API docs page) +curl -s http://localhost:5001/docs | head -20 + +# Access UI playground at: http://localhost:5001/ui + +# Collect OpenAPI specification +curl http://localhost:5001/openapi.json > docs/hybrid/research/docling-openapi.json + +# Check available endpoints +cat docs/hybrid/research/docling-openapi.json | jq '.paths | keys' + +# Alternative: Using pip (if Docker not available) +# pip install "docling-serve[ui]" +# docling-serve run --enable-ui +``` + +#### 2. Test API and collect sample response +```bash +# Convert using /v1/convert/source endpoint (official API) +# Using file URL source +curl -X POST http://localhost:5001/v1/convert/source \ + -H "Content-Type: application/json" \ + -d '{ + "sources": [{"kind": "file", "path": "samples/pdf/1901.03003.pdf"}], + "options": {"to_formats": ["json", "md"], "do_table_structure": true} + }' \ + > docs/hybrid/research/docling-sample-response.json + +# If file path doesn't work, try with base64 or HTTP URL +# Alternative: Use multipart form if available +curl -X POST http://localhost:5001/v1/convert/source \ + -F "file=@samples/pdf/1901.03003.pdf" \ + > docs/hybrid/research/docling-sample-response.json + +# Extract response structure +cat docs/hybrid/research/docling-sample-response.json | jq 'keys' +cat docs/hybrid/research/docling-sample-response.json | jq '.document | keys' 2>/dev/null || \ + cat docs/hybrid/research/docling-sample-response.json | jq '.[0] | keys' + +# Check element types in response +cat docs/hybrid/research/docling-sample-response.json | jq '[.. | .type? // empty] | unique' 2>/dev/null +``` + +#### 3. Extract documents with tables (for triage evaluation) +```bash +# List documents containing tables +cat tests/benchmark/ground-truth/reference.json | \ + jq -r 'to_entries[] | select(.value[]?.category == "Table") | .key' | \ + sort | uniq > docs/hybrid/research/documents-with-tables.txt + +# Count +wc -l docs/hybrid/research/documents-with-tables.txt +``` + +#### 4. Parse same PDF with OpenDataLoader Java +```bash +# Build Java CLI +./scripts/build-java.sh + +# Parse the same PDF with Java (JSON output) +java -jar java/opendataloader-pdf-cli/target/opendataloader-pdf-cli-*.jar \ + --format json \ + -o docs/hybrid/research/ \ + samples/pdf/1901.03003.pdf + +# Rename for clarity +mv docs/hybrid/research/1901.03003.json docs/hybrid/research/opendataloader-sample-response.json + +# Also generate markdown for comparison +java -jar java/opendataloader-pdf-cli/target/opendataloader-pdf-cli-*.jar \ + --format md \ + -o docs/hybrid/research/ \ + samples/pdf/1901.03003.pdf + +mv docs/hybrid/research/1901.03003.md docs/hybrid/research/opendataloader-sample-response.md +``` + +#### 5. Document IObject class structure +```bash +# Find all semantic types +grep -r "class Semantic" java/opendataloader-pdf-core/ --include="*.java" -l + +# Find TableBorder structure +grep -r "class TableBorder" java/opendataloader-pdf-core/ --include="*.java" -A 20 + +# List all IObject implementations +grep -r "implements.*IObject" java/opendataloader-pdf-core/ --include="*.java" +``` + +#### 6. Compare docling vs OpenDataLoader output +```bash +# Compare element counts +echo "=== Docling elements ===" +cat docs/hybrid/research/docling-sample-response.json | jq '[.document.content[].type] | group_by(.) | map({type: .[0], count: length})' + +echo "=== OpenDataLoader elements ===" +cat docs/hybrid/research/opendataloader-sample-response.json | jq '[.kids[].semanticType] | group_by(.) | map({type: .[0], count: length})' +``` + +### Files to Create +``` +docs/hybrid/research/ +├── docling-openapi.json # Full OpenAPI spec +├── docling-sample-response.json # Docling conversion response +├── opendataloader-sample-response.json # OpenDataLoader JSON output +├── opendataloader-sample-response.md # OpenDataLoader markdown output +├── documents-with-tables.txt # List of docs with tables +└── iobject-structure.md # IObject class hierarchy summary +``` + +### Success Criteria +- [ ] docling-serve running and accessible +- [ ] OpenAPI spec saved +- [ ] Docling sample response JSON saved (with tables, headings, figures) +- [ ] OpenDataLoader sample response JSON saved (same PDF) +- [ ] OpenDataLoader sample markdown saved +- [ ] Documents with tables list extracted (should be ~42 docs) +- [ ] IObject class structure documented +- [ ] Element type comparison between docling and OpenDataLoader completed + +### Test Method +```bash +# Verify all files exist +ls -la docs/hybrid/research/ + +# Verify docling response has expected structure +cat docs/hybrid/research/docling-sample-response.json | jq '.document.content | length' +``` + +### Dependencies +- None (first task) + +### Output +This research enables: +- Task 0: docling-api skill (uses OpenAPI spec + sample response) +- Task 1: schema-mapping skill (uses sample response + IObject structure) +- Task 2: triage-criteria skill (uses documents-with-tables list) + +--- + +## Task 0: Docling API Skill Setup + +### Goal +Create Claude skill for docling-serve API specification so Claude can correctly generate API integration code. + +### Prerequisites +- docling-serve running locally or accessible endpoint +- curl or HTTP client for API testing + +### Required Research +1. Fetch docling-serve official documentation +2. Make actual API calls to capture request/response structure +3. Collect JSON output schema samples from real responses + +### Research Steps +```bash +# 1. Start docling-serve +docker run -p 5001:5001 ds4sd/docling-serve + +# 2. Check available endpoints +curl http://localhost:5001/docs # OpenAPI spec + +# 3. Test conversion API +curl -X POST http://localhost:5001/v1/convert/file \ + -F "file=@tests/benchmark/pdfs/01030000000001.pdf" \ + -F "options={\"to_formats\":[\"json\",\"md\"]}" \ + > docling-response-sample.json + +# 4. Extract schema structure +cat docling-response-sample.json | jq 'keys' +cat docling-response-sample.json | jq '.document.content[0]' +``` + +### Files to Create +``` +.claude/skills/docling-api/ +├── SKILL.md # API specification and usage guide +├── request-schema.json # Request format reference +└── response-schema.json # Response structure reference +``` + +### SKILL.md Template +```markdown +--- +name: docling-api +description: docling-serve REST API specification. Use when implementing DoclingClient or calling docling API. +--- + +# docling-serve API Reference + +## Base URL +`http://localhost:5001` + +## Endpoints + +### POST /v1/convert/file +Convert PDF file to structured output. + +**Request:** +- Content-Type: multipart/form-data +- file: PDF binary +- options: JSON string with conversion options + +**Options:** +```json +{ + "to_formats": ["json", "md"], + "do_table_structure": true, + "do_ocr": false +} +``` + +**Response:** +See response-schema.json for full structure. + +## Element Types +| Type | Description | +|------|-------------| +| paragraph | Text paragraph | +| table | Table with cells | +| heading | Section heading (level 1-6) | +| list | Bulleted or numbered list | +| figure | Image or diagram | +``` + +### Success Criteria +- [ ] API endpoints documented with request/response examples +- [ ] Response JSON schema captured from real API call +- [ ] Skill auto-applies when Claude handles docling-related tasks +- [ ] New Claude session can generate correct DoclingClient code using skill + +### Test Method +```bash +# In new Claude Code session: +claude "Write a Java method to call docling-serve API" +# Expected: Claude uses SKILL.md to generate correct endpoint, headers, request format +``` + +### Dependencies +- None (first task, enables other tasks) + +--- + +## Task 1: Schema Mapping Skill Setup + +### Goal +Create Claude skill documenting the mapping between docling output schema and Java IObject hierarchy. + +### Prerequisites +- Task 0 completed (docling response schema available) +- Understanding of existing IObject types in codebase + +### Required Research +```bash +# 1. Get docling element types from response +cat docling-response-sample.json | jq '.document.content[].type' | sort | uniq + +# 2. List existing IObject types +grep -r "class.*implements IObject" java/ --include="*.java" +grep -r "class Semantic" java/ --include="*.java" + +# 3. Compare field structures +# docling table cell structure vs TableBorderCell +# docling paragraph structure vs SemanticParagraph +``` + +### Files to Create +``` +.claude/skills/schema-mapping/ +├── SKILL.md # Mapping rules and guidelines +├── docling-elements.json # Docling element type samples +└── iobject-types.md # IObject type reference +``` + +### SKILL.md Template +```markdown +--- +name: schema-mapping +description: Mapping between docling output and Java IObject types. Use when implementing DoclingSchemaTransformer. +--- + +# Schema Mapping: Docling → IObject + +## Type Mapping + +| Docling Type | IObject Type | Key Fields | +|--------------|--------------|------------| +| `paragraph` | `SemanticParagraph` | text, bbox | +| `table` | `TableBorder` | cells[][], bbox | +| `heading` | `SemanticHeading` | text, level, bbox | +| `list` | `PDFList` | items[], bbox | +| `figure` | `ImageChunk` | bbox, metadata | + +## Field Mapping Details + +### Table Mapping +``` +docling: + cells: [{row, col, text, rowspan, colspan}] + +IObject (TableBorder): + rows: [TableBorderRow] + cells: [TableBorderCell] + contents: List + colSpan, rowSpan +``` + +### Bounding Box +``` +docling: {x, y, width, height} (normalized 0-1) +IObject: BoundingBox(left, bottom, right, top) (PDF points) + +Conversion: multiply by page dimensions +``` +``` + +### Success Criteria +- [ ] All docling element types mapped to IObject types +- [ ] Field-level mapping documented +- [ ] Coordinate system conversion documented +- [ ] Skill auto-applies when implementing transformer + +### Test Method +```bash +# In new Claude Code session: +claude "Transform this docling table JSON to TableBorder" +# Expected: Claude uses mapping rules to generate correct transformation code +``` + +### Dependencies +- Task 0 (docling response schema) + +--- + +## Task 2: Triage Criteria Skill Setup + +### Goal +Create Claude skill documenting triage decision rules for routing pages to Java vs Docling. + +### Prerequisites +- Understanding of page content signals (LineChunk, TextChunk, etc.) +- Knowledge of table detection patterns + +### Required Research +```bash +# 1. Analyze page content types +grep -r "LineChunk\|TextChunk\|TableBorder" java/ --include="*.java" | head -20 + +# 2. Find existing table detection logic +grep -r "detectTable\|TableBorder" java/opendataloader-pdf-core/ --include="*.java" + +# 3. Review ground truth for table presence patterns +cat tests/benchmark/ground-truth/reference.json | jq '[.[][] | select(.category=="Table")] | length' +``` + +### Files to Create +``` +.claude/skills/triage-criteria/ +├── SKILL.md # Triage rules and thresholds +└── signals.md # Signal extraction methods +``` + +### SKILL.md Template +```markdown +--- +name: triage-criteria +description: Page triage decision rules. Use when implementing or tuning TriageProcessor. +--- + +# Triage Criteria + +## Strategy +**Conservative**: Minimize false negatives (missing tables). Accept false positives (unnecessary docling calls). + +## Decision Signals + +| Signal | Extraction | Threshold | Action | +|--------|------------|-----------|--------| +| Line/Text ratio | lineChunks.size() / textChunks.size() | > 0.3 | → DOCLING | +| Grid pattern | aligned horizontal + vertical lines | >= 3 groups | → DOCLING | +| TableBorder detected | existing detector finds border | any | → DOCLING | +| Default | - | - | → JAVA | + +## Threshold Tuning Guide + +### If FN (missed tables) is high: +- Lower line/text ratio threshold +- Lower grid pattern threshold +- Add more signals + +### If too slow (too many docling calls): +- Raise thresholds +- Add early-exit conditions for simple pages + +## Benchmark Metrics +- `triage_recall`: Tables correctly sent to docling (target: >= 0.95) +- `triage_fn`: Tables missed (target: <= 5) +``` + +### Success Criteria +- [ ] All triage signals documented +- [ ] Threshold values specified with rationale +- [ ] Tuning guidelines included +- [ ] Skill auto-applies when working on TriageProcessor + +### Test Method +```bash +# In new Claude Code session: +claude "The triage FN is too high, how should I adjust thresholds?" +# Expected: Claude references skill to suggest specific threshold changes +``` + +### Dependencies +- None (can be created from codebase analysis) + +--- + +## Task 3: Config Extension (HybridConfig) + +### Goal +Add configuration classes for hybrid processing. + +### Context +- Current `Config.java` has no hybrid concept +- Need `HybridConfig` to store backend connection settings +- Design for extensibility (docling first, then azure, google, etc.) + +### Files to Modify +- `java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/api/Config.java` + +### Files to Create +- `java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HybridConfig.java` + +### Implementation Details +```java +// HybridConfig.java +public class HybridConfig { + private String url; // null = use backend default + private int timeoutMs = 0; // 0 = no timeout + private boolean fallbackToJava = false; + private int maxConcurrentRequests = 4; + // getters, setters, builder pattern + + // Backend-specific default URLs + public static String getDefaultUrl(String hybrid) { + return switch (hybrid) { + case "docling" -> "http://localhost:5001"; + case "hancom" -> null; // requires explicit URL + case "azure" -> null; // requires explicit URL + case "google" -> null; // requires explicit URL + default -> null; + }; + } +} + +// Config.java additions +public static final String HYBRID_OFF = "off"; +public static final String HYBRID_DOCLING = "docling"; +public static final String HYBRID_HANCOM = "hancom"; +public static final String HYBRID_AZURE = "azure"; +public static final String HYBRID_GOOGLE = "google"; +private static Set hybridOptions = new HashSet<>(); + +private String hybrid = HYBRID_OFF; +private HybridConfig hybridConfig = new HybridConfig(); + +static { + hybridOptions.add(HYBRID_OFF); + hybridOptions.add(HYBRID_DOCLING); + // hancom, azure, google added when implemented +} + +public boolean isHybridEnabled() { + return !HYBRID_OFF.equals(hybrid); +} +``` + +### Success Criteria +- [ ] `HybridConfig` class created with all fields +- [ ] `Config.java` has `hybrid` field with validation +- [ ] `Config.java` has `HybridConfig` field +- [ ] `isHybridEnabled()` helper method +- [ ] Existing tests pass: `./scripts/test-java.sh` + +### Test Method +```bash +./scripts/test-java.sh +``` + +### Dependencies +- None + +--- + +## Task 4: CLI Options for Hybrid + +### Goal +Add CLI options to enable hybrid processing. + +### Context +- Current CLI has no `--hybrid` option +- Need to configure backend URL, timeout from command line +- Follow existing `OptionDefinition` pattern in `CLIOptions.java` + +### Files to Modify +- `java/opendataloader-pdf-cli/src/main/java/org/opendataloader/pdf/cli/CLIOptions.java` + +### Implementation Details +``` +New options: + --hybrid Hybrid backend to use (default: off) + --hybrid-url Backend server URL (default: backend-specific) + --hybrid-timeout Request timeout in ms (default: 0, no timeout) + --hybrid-fallback Opt in to Java fallback on backend error (default: disabled) +``` + +```java +// Add to OPTION_DEFINITIONS list +new OptionDefinition("hybrid", null, "string", "off", + "Hybrid backend for AI processing. Values: off (default), docling, hancom", true), +new OptionDefinition("hybrid-url", null, "string", null, + "Hybrid backend server URL (overrides default)", true), +new OptionDefinition("hybrid-timeout", null, "string", "0", + "Hybrid backend request timeout in milliseconds (0 = no timeout)", true), +new OptionDefinition("hybrid-fallback", null, "boolean", false, + "Opt in to Java fallback on hybrid backend error (default: disabled)", true), +``` + +### Success Criteria +- [ ] `--hybrid` option parsing and Config reflection +- [ ] `--hybrid-url` option parsing +- [ ] `--hybrid-timeout` option parsing +- [ ] `--hybrid-fallback` option parsing +- [ ] `--help` shows new options +- [ ] Options exported to JSON (`--export-options`) +- [ ] Existing tests pass + +### Test Method +```bash +# Build +./scripts/build-java.sh + +# Check options +java -jar java/opendataloader-pdf-cli/target/opendataloader-pdf-cli-*.jar --help + +# Test run (hybrid off, default behavior) +java -jar java/opendataloader-pdf-cli/target/opendataloader-pdf-cli-*.jar \ + --hybrid off \ + tests/benchmark/pdfs/01030000000001.pdf + +# Verify JSON export includes new options +java -jar java/opendataloader-pdf-cli/target/opendataloader-pdf-cli-*.jar --export-options | jq '.options[] | select(.name | startswith("hybrid"))' +``` + +### Dependencies +- Task 3 (HybridConfig) + +--- + +## Task 5: TriageProcessor Implementation + +### Goal +Implement page-level triage decision logic (JAVA vs BACKEND routing). + +### Context +- **Conservative strategy**: Minimize FN (missed tables), accept FP (unnecessary backend calls) +- Fast heuristics (microseconds, not milliseconds) +- Runs after `ContentFilterProcessor.getFilteredContents()`, before table processing + +### Files to Create +- `java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/TriageProcessor.java` + +### Implementation Details +```java +public class TriageProcessor { + public enum TriageDecision { JAVA, BACKEND } + + public record TriageResult( + int pageNumber, + TriageDecision decision, + double confidence, + TriageSignals signals + ) {} + + public record TriageSignals( + int lineChunkCount, + int textChunkCount, + double lineToTextRatio, + int alignedLineGroups, + boolean hasTableBorder + ) {} + + /** + * Classify a page for processing path. + * Conservative: bias toward BACKEND when uncertain. + */ + public static TriageResult classifyPage( + List filteredContents, + int pageNumber, + HybridConfig config + ) { + // Extract signals from content + // Apply thresholds (from triage-criteria skill) + // Return decision with confidence + } + + /** + * Batch triage for all pages. + */ + public static Map triageAllPages( + Map> pageContents, + HybridConfig config + ) { + // Triage all pages, return map of results + } +} +``` + +### Triage Heuristics (Initial - Conservative) +| Signal | Threshold | Action | +|--------|-----------|--------| +| LineChunk / TextChunk ratio | > 0.3 | → BACKEND | +| Aligned line groups (grid pattern) | >= 3 | → BACKEND | +| TableBorder detected | any | → BACKEND | +| Default | - | → JAVA | + +### Success Criteria +- [ ] `TriageProcessor` class created +- [ ] `TriageResult`, `TriageSignals` records defined +- [ ] `classifyPage()` method implemented +- [ ] `triageAllPages()` batch method implemented +- [ ] Unit tests written and passing +- [ ] Conservative thresholds set (minimize FN) + +### Test Method +```bash +cd java && mvn test -Dtest=TriageProcessorTest +./scripts/test-java.sh +``` + +### Dependencies +- Task 3 (HybridConfig) +- Skill: triage-criteria (Task 2) + +--- + +## Task 6: DoclingClient Implementation + +### Goal +Implement REST API client for docling-serve with batch processing support. + +### Context +- Uses docling-serve official API +- **Batch processing**: Send multiple pages in one request for efficiency +- Async support for parallel processing with Java path +- First backend implementation (template for future backends) + +### Files to Create +- `java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HybridClient.java` (interface) +- `java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/DoclingClient.java` + +### Implementation Details +```java +// HybridClient.java - interface for all hybrid backends +public interface HybridClient { + record HybridRequest( + byte[] pdfBytes, + Set pageNumbers, // 1-indexed, pages to process + boolean doTableStructure, + boolean doOcr + ) {} + + record HybridResponse( + String markdown, + JsonNode json, // Full structured output + Map pageContents // Per-page content + ) {} + + HybridResponse convert(HybridRequest request) throws IOException; + CompletableFuture convertAsync(HybridRequest request); + boolean isAvailable(); +} + +// DoclingClient.java - docling-serve implementation +public class DoclingClient implements HybridClient { + private final String baseUrl; + private final HttpClient httpClient; + private final ObjectMapper objectMapper; + private final int timeoutMs; + + public DoclingClient(HybridConfig config) { ... } + + // Implements HybridClient interface +} + +// Factory for creating hybrid clients +public class HybridClientFactory { + public static HybridClient create(String hybrid, HybridConfig config) { + return switch (hybrid) { + case "docling" -> new DoclingClient(config); + // case "hancom" -> new HancomClient(config); + // case "azure" -> new AzureClient(config); + default -> throw new IllegalArgumentException("Unknown hybrid backend: " + hybrid); + }; + } +} +``` + +### Success Criteria +- [ ] `HybridClient` interface created +- [ ] `DoclingClient` class implements interface +- [ ] `HybridClientFactory` for creating clients +- [ ] `convert()` method implemented (HTTP request) +- [ ] `convertAsync()` method for parallel processing +- [ ] `isAvailable()` health check implemented +- [ ] Timeout handling +- [ ] Error handling (IOException, retry logic) +- [ ] Integration test (mock or real server) + +### Test Method +```bash +# Start docling-server +docker run -p 5001:5001 ds4sd/docling-serve + +# Integration test +cd java && mvn test -Dtest=DoclingClientIntegrationTest + +# Manual test +curl -X POST http://localhost:5001/v1/convert/file \ + -F "file=@tests/benchmark/pdfs/01030000000001.pdf" +``` + +### Dependencies +- Task 3 (HybridConfig) +- Skill: docling-api (Task 0) + +--- + +## Task 7: DoclingSchemaTransformer Implementation + +### Goal +Transform docling JSON output to IObject hierarchy. + +### Context +- docling JSON response → Java IObject conversion +- Must produce same output schema as Java path for downstream compatibility +- Handle Table, Paragraph, Heading, List, Figure +- First transformer implementation (template for future backends) + +### Files to Create +- `java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HybridSchemaTransformer.java` (interface) +- `java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/DoclingSchemaTransformer.java` + +### Implementation Details +```java +// HybridSchemaTransformer.java - interface for all hybrid backends +public interface HybridSchemaTransformer { + Map> transformAll( + HybridResponse response, + Map pageBoundingBoxes + ); +} + +// DoclingSchemaTransformer.java - docling implementation +public class DoclingSchemaTransformer implements HybridSchemaTransformer { + + @Override + public Map> transformAll( + HybridResponse response, + Map pageBoundingBoxes + ) { ... } + + /** + * Transform single page content. + */ + public List transformPage( + JsonNode pageContent, + int pageNumber, + BoundingBox pageBoundingBox + ) { ... } + + // Type-specific transformers + private TableBorder transformTable(JsonNode tableNode, int pageNumber); + private SemanticParagraph transformParagraph(JsonNode paragraphNode, int pageNumber); + private SemanticHeading transformHeading(JsonNode headingNode, int level, int pageNumber); + private PDFList transformList(JsonNode listNode, int pageNumber); + private ImageChunk transformFigure(JsonNode figureNode, int pageNumber); + + // Coordinate conversion + private BoundingBox convertBoundingBox(JsonNode bbox, BoundingBox pageBox); +} +``` + +### Success Criteria +- [ ] `HybridSchemaTransformer` interface created +- [ ] `DoclingSchemaTransformer` class implements interface +- [ ] `transformAll()` batch method implemented +- [ ] Table transformation (TableBorder creation) +- [ ] Paragraph transformation +- [ ] Heading transformation +- [ ] List transformation +- [ ] Bounding box coordinate conversion +- [ ] Unit tests with sample JSON → IObject + +### Test Method +```bash +cd java && mvn test -Dtest=DoclingSchemaTransformerTest +``` + +### Dependencies +- Task 6 (DoclingClient - response structure) +- Skill: schema-mapping (Task 1) + +--- + +## Task 8: HybridDocumentProcessor Implementation + +### Goal +Implement hybrid processing pipeline with parallel execution. + +### Context +- **Parallel processing**: Java path and Hybrid path run concurrently +- Batch all hybrid pages in single API call +- Merge results maintaining page order + +### Architecture +``` + ┌─ Java pages (parallel) ────────────┐ + │ ExecutorService │ +All Pages Triage ───┤ ├──→ Merge + │ │ + └─ Hybrid pages (batch async) ───────┘ + Single API call +``` + +### Files to Create +- `java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/HybridDocumentProcessor.java` + +### Files to Modify +- `java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/DocumentProcessor.java` + +### Implementation Details +```java +public class HybridDocumentProcessor { + + public static List> processDocument( + String inputPdfName, + Config config, + Set pagesToProcess + ) throws IOException { + + // Phase 1: Filter all pages + Triage + Map> filteredContents = filterAllPages(pagesToProcess); + Map triageResults = TriageProcessor.triageAllPages( + filteredContents, config.getHybridConfig() + ); + + // Phase 2: Split by decision + Set javaPages = filterByDecision(triageResults, JAVA); + Set hybridPages = filterByDecision(triageResults, BACKEND); + + // Phase 3: Process in parallel + HybridClient client = HybridClientFactory.create( + config.getHybrid(), config.getHybridConfig() + ); + + CompletableFuture>> hybridFuture = + CompletableFuture.supplyAsync(() -> + processHybridPath(inputPdfName, hybridPages, client, config) + ); + + Map> javaResults = + processJavaPathParallel(filteredContents, javaPages, config); + + Map> hybridResults = hybridFuture.join(); + + // Phase 4: Merge results + return mergeResults(javaResults, hybridResults, pagesToProcess); + } + + private static Map> processHybridPath( + String pdfPath, + Set pageNumbers, + HybridClient client, + Config config + ) { + if (pageNumbers.isEmpty()) return Map.of(); + + byte[] pdfBytes = Files.readAllBytes(Path.of(pdfPath)); + + HybridResponse response = client.convert(new HybridRequest( + pdfBytes, pageNumbers, true, false + )); + + // Get appropriate transformer for the hybrid backend + HybridSchemaTransformer transformer = getTransformer(config.getHybrid()); + return transformer.transformAll(response, pageBoundingBoxes); + } +} +``` + +### Success Criteria +- [ ] `HybridDocumentProcessor` class created +- [ ] Batch triage for all pages +- [ ] Parallel Java path processing (ExecutorService) +- [ ] Async Hybrid batch processing +- [ ] Concurrent execution of both paths +- [ ] Result merge with page order preservation +- [ ] `DocumentProcessor.processFile()` hybrid branching +- [ ] Fallback handling (hybrid failure → Java) + +### Test Method +```bash +# Full test suite +./scripts/test-java.sh + +# E2E test with docling hybrid +docker run -p 5001:5001 ds4sd/docling-serve + +java -jar java/opendataloader-pdf-cli/target/opendataloader-pdf-cli-*.jar \ + --hybrid docling \ + --hybrid-url http://localhost:5001 \ + tests/benchmark/pdfs/01030000000001.pdf +``` + +### Dependencies +- Task 3, 4, 5, 6, 7 (all prior implementation tasks) + +--- + +## Task 9: Triage Logging + +### Goal +Log triage decisions to JSON for benchmark evaluation. + +### Context +- Record each page's triage decision and signals +- Used by benchmark to evaluate triage accuracy + +### Files to Modify +- `java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/HybridDocumentProcessor.java` + +### Output Format +```json +{ + "document": "01030000000001.pdf", + "hybrid": "docling", + "triage": [ + { + "page": 1, + "decision": "JAVA", + "confidence": 0.95, + "signals": { + "lineChunkCount": 2, + "textChunkCount": 45, + "lineToTextRatio": 0.04, + "alignedLineGroups": 0, + "hasTableBorder": false + } + }, + { + "page": 2, + "decision": "BACKEND", + "confidence": 0.82, + "signals": { + "lineChunkCount": 28, + "textChunkCount": 32, + "lineToTextRatio": 0.875, + "alignedLineGroups": 4, + "hasTableBorder": true + } + } + ], + "summary": { + "totalPages": 10, + "javaPages": 8, + "hybridPages": 2 + } +} +``` + +### Success Criteria +- [ ] Triage results JSON serialization +- [ ] File output to prediction directory (`triage.json`) +- [ ] All pages recorded +- [ ] Summary statistics included + +### Test Method +```bash +java -jar ... --hybrid docling input.pdf -o output/ +cat output/triage.json | jq '.summary' +``` + +### Dependencies +- Task 8 (HybridDocumentProcessor) + +--- + +## Task 10: Triage Evaluator (Python) + +### Goal +Add Python evaluator for triage accuracy measurement. + +### Context +- Ground truth: `reference.json` table presence per page +- Prediction: `triage.json` decisions +- **Critical metric**: `triage_fn` (tables missed by triage) + +### Files to Create +- `tests/benchmark/src/evaluator_triage.py` + +### Files to Modify +- `tests/benchmark/run.py` (integrate triage evaluation) +- `tests/benchmark/thresholds.json` (add thresholds) + +### Implementation Details +```python +# evaluator_triage.py +from dataclasses import dataclass +from pathlib import Path +import json + +@dataclass +class TriageMetrics: + recall: float # Table pages correctly sent to hybrid + precision: float # Hybrid pages that actually had tables + fn_count: int # Tables missed (sent to JAVA) + fp_count: int # Non-table pages sent to hybrid + java_pages: int + hybrid_pages: int + +def get_pages_with_tables(reference_path: Path) -> dict[str, set[int]]: + """Extract page numbers with tables from ground truth.""" + ... + +def evaluate_triage( + reference_path: Path, + triage_path: Path +) -> TriageMetrics: + """Evaluate triage accuracy against ground truth.""" + # 1. Extract page-level table presence from reference.json + # 2. Compare with triage.json decisions + # 3. Calculate FN, FP, recall, precision + ... +``` + +### Thresholds Addition +```json +{ + "triage_recall": 0.95, + "triage_fn_max": 5 +} +``` + +### Success Criteria +- [ ] `evaluator_triage.py` created +- [ ] Page-level table extraction from ground truth +- [ ] Comparison with triage decisions +- [ ] `triage_recall`, `triage_fn` calculation +- [ ] Integration with `run.py` +- [ ] Thresholds added to `thresholds.json` + +### Test Method +```bash +# Run benchmark with docling hybrid +./scripts/bench.sh --hybrid docling + +# Or test evaluator directly +cd tests/benchmark +python -c " +from src.evaluator_triage import evaluate_triage +from pathlib import Path +result = evaluate_triage( + Path('ground-truth/reference.json'), + Path('prediction/opendataloader-hybrid-docling/triage.json') +) +print(result) +" +``` + +### Dependencies +- Task 9 (Triage Logging) + +--- + +## Task 11: Triage Analyzer Agent + +### Goal +Create Claude agent for analyzing triage accuracy and identifying improvement opportunities. + +### Files to Create +- `.claude/agents/triage-analyzer.md` + +### Agent Definition +```markdown +--- +name: triage-analyzer +description: Analyze triage accuracy, identify false negative cases, suggest threshold adjustments +tools: Read, Grep, Glob, Bash(python:*) +--- + +# Triage Analyzer + +Analyze triage results and identify improvement opportunities. + +## Capabilities +1. Compare triage.json with reference.json +2. List all FN cases (missed tables) +3. Analyze common patterns in FN cases +4. Suggest threshold adjustments +5. Generate tuning recommendations + +## Analysis Workflow +1. Load triage results and ground truth +2. Identify FN cases +3. For each FN, extract page signals +4. Find common signal patterns +5. Recommend threshold changes + +## Output Format +- FN case list with signals +- Pattern analysis +- Specific threshold adjustment recommendations +``` + +### Success Criteria +- [ ] Agent file created with proper frontmatter +- [ ] Clear capability description +- [ ] Workflow documented +- [ ] Can be invoked in Claude Code session + +### Test Method +```bash +# In Claude Code: +claude "Analyze triage results and find why FN is high" +# Expected: Agent is used to analyze and provide recommendations +``` + +### Dependencies +- Task 10 (Triage Evaluator) +- Task 2 (triage-criteria skill) + +--- + +## Execution Order + +``` +Phase -1: Pre-research +└── Task -1: Data Collection ─────────┐ + │ +Phase 0: Tool Setup (Skills) ▼ +├── Task 0: docling-api skill ────────┐ +├── Task 1: schema-mapping skill ─────┤ (parallel) +└── Task 2: triage-criteria skill ────┘ + │ +Phase 1: Infrastructure ▼ +├── Task 3: HybridConfig ─────────────┬──→ Task 4: CLI Options +│ │ +Phase 2: Core Components │ +├── Task 5: TriageProcessor ──────────┤ +├── Task 6: DoclingClient ────────────┤ (parallel) +└── Task 7: SchemaTransformer ────────┘ + │ +Phase 3: Integration ▼ +└── Task 8: HybridDocumentProcessor ──┬──→ Task 9: Triage Logging + │ +Phase 4: Evaluation ▼ +└── Task 10: Triage Evaluator ────────┬──→ Task 11: Triage Analyzer Agent +``` + +### Parallelizable Tasks +- Task 0, 1, 2 (skill setup - after Task -1) +- Task 5, 6, 7 (core components - after Task 3) + +### Sequential Dependencies +- Task 0, 1, 2 → Task -1 (needs research data) +- Task 4 → Task 3 +- Task 6 → Task 0 (needs API skill) +- Task 7 → Task 1 (needs mapping skill) +- Task 8 → Task 5, 6, 7 +- Task 9 → Task 8 +- Task 10 → Task 9 +- Task 11 → Task 10, Task 2 diff --git a/docs/hybrid/research/comparison-summary.md b/docs/hybrid/research/comparison-summary.md new file mode 100644 index 0000000..67ac55c --- /dev/null +++ b/docs/hybrid/research/comparison-summary.md @@ -0,0 +1,73 @@ +# Docling vs OpenDataLoader Output Comparison + +## Test Document +- File: `01030000000045.pdf` (1 page with table) + +## Element Count Comparison + +| Category | Docling | OpenDataLoader | +|----------|---------|----------------| +| Tables | 1 | 1 | +| Text elements | 5 | 4 paragraphs | +| Images | 0 | 1 | +| Headings | (N/A - uses labels) | 1 | + +## Text Element Labels (Docling) + +| Label | Count | +|-------|-------| +| caption | 1 | +| footnote | 1 | +| page_footer | 1 | +| page_header | 1 | +| text | 1 | + +## Table Structure Comparison + +| Property | Docling | OpenDataLoader | +|----------|---------|----------------| +| Rows | 9 | 3 | +| Columns | 3 | 3 | +| Total cells | 26 | 9 | + +**Note**: Docling detects more rows in the table structure. This may be due to: +- Different table detection algorithms +- OpenDataLoader may have merged some rows +- Different handling of header rows + +## Bounding Box Comparison (Table) + +| System | l/left | t/top | r/right | b/bottom | Origin | +|--------|--------|-------|---------|----------|--------| +| Docling | 53.22 | 439.98 | 373.94 | 234.74 | BOTTOMLEFT | +| OpenDataLoader | 54.0 | 234.44 | 372.73 | 440.21 | BOTTOMLEFT | + +**Coordinate mapping**: Both use BOTTOMLEFT origin. +- Docling: `{l, t, r, b}` where t=top, b=bottom +- OpenDataLoader: `[left, bottom, right, top]` + +So the actual coordinates match closely: +- Left: 53.22 ≈ 54.0 +- Bottom: 234.74 ≈ 234.44 +- Right: 373.94 ≈ 372.73 +- Top: 439.98 ≈ 440.21 + +## Schema Mapping Summary + +| Docling Type | OpenDataLoader Type | +|--------------|---------------------| +| texts (label: text) | paragraph | +| texts (label: section_header) | heading | +| tables | table | +| pictures | image | +| texts (label: page_header) | paragraph (filtered as header) | +| texts (label: page_footer) | paragraph (filtered as footer) | +| texts (label: caption) | paragraph | +| texts (label: footnote) | paragraph | + +## Key Differences + +1. **Type naming**: Docling uses `label` field for text types, OpenDataLoader uses `type` +2. **Table structure**: Docling detects more detailed row structure +3. **Coordinate format**: Same origin but different field order +4. **Heading detection**: Docling uses `SectionHeaderItem` with `level`, OpenDataLoader uses `heading` type with `level` diff --git a/docs/hybrid/research/docling-openapi.json b/docs/hybrid/research/docling-openapi.json new file mode 100644 index 0000000..568fd65 --- /dev/null +++ b/docs/hybrid/research/docling-openapi.json @@ -0,0 +1 @@ +{"openapi":"3.1.0","info":{"title":"Docling Serve","version":"1.9.0"},"paths":{"/openapi-3.0.json":{"get":{"summary":"Openapi 30","operationId":"openapi_30_openapi_3_0_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"tags":["health"],"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthCheckResponse"}}}}}}},"/version":{"get":{"tags":["health"],"summary":"Version Info","operationId":"version_info_version_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Version Info Version Get"}}}}}}},"/v1/convert/source":{"post":{"tags":["convert"],"summary":"Process Url","operationId":"process_url_v1_convert_source_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConvertDocumentsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ConvertDocumentResponse"},{"$ref":"#/components/schemas/PresignedUrlConvertDocumentResponse"}],"title":"Response Process Url V1 Convert Source Post"}},"application/zip":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyAuth":[]}]}},"/v1/convert/file":{"post":{"tags":["convert"],"summary":"Process File","operationId":"process_file_v1_convert_file_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_process_file_v1_convert_file_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ConvertDocumentResponse"},{"$ref":"#/components/schemas/PresignedUrlConvertDocumentResponse"}],"title":"Response Process File V1 Convert File Post"}},"application/zip":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyAuth":[]}]}},"/v1/convert/source/async":{"post":{"tags":["convert"],"summary":"Process Url Async","operationId":"process_url_async_v1_convert_source_async_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConvertDocumentsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyAuth":[]}]}},"/v1/convert/file/async":{"post":{"tags":["convert"],"summary":"Process File Async","operationId":"process_file_async_v1_convert_file_async_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_process_file_async_v1_convert_file_async_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyAuth":[]}]}},"/v1/chunk/hybrid/source/async":{"post":{"tags":["chunk"],"summary":"Chunk Sources With Hybridchunker As Async Task","operationId":"Chunk_sources_with_HybridChunker_as_async_task_v1_chunk_hybrid_source_async_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HybridChunkerOptionsDocumentsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyAuth":[]}]}},"/v1/chunk/hybrid/file/async":{"post":{"tags":["chunk"],"summary":"Chunk Files With Hybridchunker As Async Task","operationId":"Chunk_files_with_HybridChunker_as_async_task_v1_chunk_hybrid_file_async_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Chunk_files_with_HybridChunker_as_async_task_v1_chunk_hybrid_file_async_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyAuth":[]}]}},"/v1/chunk/hybrid/source":{"post":{"tags":["chunk"],"summary":"Chunk Sources With Hybridchunker","operationId":"Chunk_sources_with_HybridChunker_v1_chunk_hybrid_source_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HybridChunkerOptionsDocumentsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChunkDocumentResponse"}},"application/zip":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyAuth":[]}]}},"/v1/chunk/hybrid/file":{"post":{"tags":["chunk"],"summary":"Chunk Files With Hybridchunker","operationId":"Chunk_files_with_HybridChunker_v1_chunk_hybrid_file_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Chunk_files_with_HybridChunker_v1_chunk_hybrid_file_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChunkDocumentResponse"}},"application/zip":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyAuth":[]}]}},"/v1/chunk/hierarchical/source/async":{"post":{"tags":["chunk"],"summary":"Chunk Sources With Hierarchicalchunker As Async Task","operationId":"Chunk_sources_with_HierarchicalChunker_as_async_task_v1_chunk_hierarchical_source_async_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HierarchicalChunkerOptionsDocumentsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyAuth":[]}]}},"/v1/chunk/hierarchical/file/async":{"post":{"tags":["chunk"],"summary":"Chunk Files With Hierarchicalchunker As Async Task","operationId":"Chunk_files_with_HierarchicalChunker_as_async_task_v1_chunk_hierarchical_file_async_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Chunk_files_with_HierarchicalChunker_as_async_task_v1_chunk_hierarchical_file_async_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyAuth":[]}]}},"/v1/chunk/hierarchical/source":{"post":{"tags":["chunk"],"summary":"Chunk Sources With Hierarchicalchunker","operationId":"Chunk_sources_with_HierarchicalChunker_v1_chunk_hierarchical_source_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HierarchicalChunkerOptionsDocumentsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChunkDocumentResponse"}},"application/zip":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyAuth":[]}]}},"/v1/chunk/hierarchical/file":{"post":{"tags":["chunk"],"summary":"Chunk Files With Hierarchicalchunker","operationId":"Chunk_files_with_HierarchicalChunker_v1_chunk_hierarchical_file_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Chunk_files_with_HierarchicalChunker_v1_chunk_hierarchical_file_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChunkDocumentResponse"}},"application/zip":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyAuth":[]}]}},"/v1/status/poll/{task_id}":{"get":{"tags":["tasks"],"summary":"Task Status Poll","operationId":"task_status_poll_v1_status_poll__task_id__get","security":[{"APIKeyAuth":[]}],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}},{"name":"wait","in":"query","required":false,"schema":{"type":"number","description":"Number of seconds to wait for a completed status.","default":0.0,"title":"Wait"},"description":"Number of seconds to wait for a completed status."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/result/{task_id}":{"get":{"tags":["tasks"],"summary":"Task Result","operationId":"task_result_v1_result__task_id__get","security":[{"APIKeyAuth":[]}],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ConvertDocumentResponse"},{"$ref":"#/components/schemas/PresignedUrlConvertDocumentResponse"},{"$ref":"#/components/schemas/ChunkDocumentResponse"}],"title":"Response Task Result V1 Result Task Id Get"}},"application/zip":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/clear/converters":{"get":{"tags":["clear"],"summary":"Clear Converters","operationId":"clear_converters_v1_clear_converters_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClearResponse"}}}}},"security":[{"APIKeyAuth":[]}]}},"/v1/clear/results":{"get":{"tags":["clear"],"summary":"Clear Results","operationId":"clear_results_v1_clear_results_get","security":[{"APIKeyAuth":[]}],"parameters":[{"name":"older_then","in":"query","required":false,"schema":{"type":"number","default":3600,"title":"Older Then"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClearResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"BaseMeta":{"properties":{"summary":{"anyOf":[{"$ref":"#/components/schemas/SummaryMetaField"},{"type":"null"}]}},"additionalProperties":true,"type":"object","title":"BaseMeta","description":"Base class for metadata."},"Body_Chunk_files_with_HierarchicalChunker_as_async_task_v1_chunk_hierarchical_file_async_post":{"properties":{"files":{"items":{"type":"string","format":"binary"},"type":"array","title":"Files"},"include_converted_doc":{"type":"boolean","title":"Include Converted Doc","description":"If true, the output will include both the chunks and the converted document.","default":false},"target_type":{"$ref":"#/components/schemas/TargetName","description":"Specification for the type of output target.","default":"inbody"},"convert_from_formats":{"items":{"$ref":"#/components/schemas/InputFormat"},"type":"array","title":"Convert From Formats","description":"Input format(s) to convert from. String or list of strings. Allowed values: docx, pptx, html, image, pdf, asciidoc, md, csv, xlsx, xml_uspto, xml_jats, mets_gbs, json_docling, audio, vtt. Optional, defaults to all formats.","default":["docx","pptx","html","image","pdf","asciidoc","md","csv","xlsx","xml_uspto","xml_jats","mets_gbs","json_docling","audio","vtt"],"examples":[["docx","pptx","html","image","pdf","asciidoc","md","csv","xlsx","xml_uspto","xml_jats","mets_gbs","json_docling","audio","vtt"]]},"convert_image_export_mode":{"$ref":"#/components/schemas/ImageRefMode","description":"Image export mode for the document (in case of JSON, Markdown or HTML). Allowed values: placeholder, embedded, referenced. Optional, defaults to Embedded.","default":"embedded","examples":["embedded"]},"convert_do_ocr":{"type":"boolean","title":"Convert Do Ocr","description":"If enabled, the bitmap content will be processed using OCR. Boolean. Optional, defaults to true","default":true},"convert_force_ocr":{"type":"boolean","title":"Convert Force Ocr","description":"If enabled, replace existing text with OCR-generated text over content. Boolean. Optional, defaults to false.","default":false},"convert_ocr_engine":{"$ref":"#/components/schemas/ocr_engines_enum","description":"The OCR engine to use. String. Allowed values: auto, easyocr, ocrmac, rapidocr, tesserocr, tesseract. Optional, defaults to easyocr.","default":"easyocr","examples":["easyocr"]},"convert_ocr_lang":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Convert Ocr Lang","description":"List of languages used by the OCR engine. Note that each OCR engine has different values for the language names. String or list of strings. Optional, defaults to empty.","examples":[["fr","de","es","en"]]},"convert_pdf_backend":{"$ref":"#/components/schemas/PdfBackend","description":"The PDF backend to use. String. Allowed values: pypdfium2, dlparse_v1, dlparse_v2, dlparse_v4. Optional, defaults to dlparse_v4.","default":"dlparse_v4","examples":["dlparse_v4"]},"convert_table_mode":{"$ref":"#/components/schemas/TableFormerMode","description":"Mode to use for table structure, String. Allowed values: fast, accurate. Optional, defaults to accurate.","default":"accurate","examples":["accurate"]},"convert_table_cell_matching":{"type":"boolean","title":"Convert Table Cell Matching","description":"If true, matches table cells predictions back to PDF cells. Can break table output if PDF cells are merged across table columns. If false, let table structure model define the text cells, ignore PDF cells.","default":true,"examples":[true]},"convert_pipeline":{"$ref":"#/components/schemas/ProcessingPipeline","description":"Choose the pipeline to process PDF or image files.","default":"standard"},"convert_page_range":{"prefixItems":[{"type":"integer"},{"type":"integer"}],"type":"array","maxItems":2,"minItems":2,"title":"Convert Page Range","description":"Only convert a range of pages. The page number starts at 1.","default":[1,9223372036854775807],"examples":[[1,9223372036854775807],[1,4]]},"convert_document_timeout":{"type":"number","title":"Convert Document Timeout","description":"The timeout for processing each document, in seconds.","default":604800.0},"convert_abort_on_error":{"type":"boolean","title":"Convert Abort On Error","description":"Abort on error if enabled. Boolean. Optional, defaults to false.","default":false},"convert_do_table_structure":{"type":"boolean","title":"Convert Do Table Structure","description":"If enabled, the table structure will be extracted. Boolean. Optional, defaults to true.","default":true,"examples":[true]},"convert_include_images":{"type":"boolean","title":"Convert Include Images","description":"If enabled, images will be extracted from the document. Boolean. Optional, defaults to true.","default":true,"examples":[true]},"convert_images_scale":{"type":"number","title":"Convert Images Scale","description":"Scale factor for images. Float. Optional, defaults to 2.0.","default":2.0,"examples":[2.0]},"convert_md_page_break_placeholder":{"type":"string","title":"Convert Md Page Break Placeholder","description":"Add this placeholder between pages in the markdown output.","default":"","examples":["",""]},"convert_do_code_enrichment":{"type":"boolean","title":"Convert Do Code Enrichment","description":"If enabled, perform OCR code enrichment. Boolean. Optional, defaults to false.","default":false,"examples":[false]},"convert_do_formula_enrichment":{"type":"boolean","title":"Convert Do Formula Enrichment","description":"If enabled, perform formula OCR, return LaTeX code. Boolean. Optional, defaults to false.","default":false,"examples":[false]},"convert_do_picture_classification":{"type":"boolean","title":"Convert Do Picture Classification","description":"If enabled, classify pictures in documents. Boolean. Optional, defaults to false.","default":false,"examples":[false]},"convert_do_picture_description":{"type":"boolean","title":"Convert Do Picture Description","description":"If enabled, describe pictures in documents. Boolean. Optional, defaults to false.","default":false,"examples":[false]},"convert_picture_description_area_threshold":{"type":"number","title":"Convert Picture Description Area Threshold","description":"Minimum percentage of the area for a picture to be processed with the models.","default":0.05,"examples":[0.05]},"convert_picture_description_local":{"type":"string","title":"Convert Picture Description Local","description":"Options for running a local vision-language model in the picture description. The parameters refer to a model hosted on Hugging Face. This parameter is mutually exclusive with picture_description_api.","examples":["{\"repo_id\": \"ibm-granite/granite-vision-3.2-2b\", \"prompt\": \"Describe this image in a few sentences.\", \"generation_config\": {\"max_new_tokens\": 200, \"do_sample\": false}}","{\"repo_id\": \"HuggingFaceTB/SmolVLM-256M-Instruct\", \"prompt\": \"Describe this image in a few sentences.\", \"generation_config\": {\"max_new_tokens\": 200, \"do_sample\": false}}"]},"convert_picture_description_api":{"type":"string","title":"Convert Picture Description Api","description":"API details for using a vision-language model in the picture description. This parameter is mutually exclusive with picture_description_local.","examples":["{\"url\": \"http://localhost:1234/v1/chat/completions\", \"headers\": {}, \"params\": {\"model\": \"granite3.2-vision:2b\"}, \"timeout\": 20.0, \"concurrency\": 1, \"prompt\": \"Describe this image in a few sentences.\"}","{\"url\": \"http://localhost:11434/v1/chat/completions\", \"headers\": {}, \"params\": {\"model\": \"granite3.2-vision:2b\"}, \"timeout\": 20.0, \"concurrency\": 1, \"prompt\": \"Describe this image in a few sentences.\"}"]},"convert_vlm_pipeline_model":{"anyOf":[{"$ref":"#/components/schemas/VlmModelType"},{"type":"null"}],"description":"Preset of local and API models for the vlm pipeline. This parameter is mutually exclusive with vlm_pipeline_model_local and vlm_pipeline_model_api. Use the other options for more parameters.","examples":["granite_docling"]},"convert_vlm_pipeline_model_local":{"type":"string","title":"Convert Vlm Pipeline Model Local","description":"Options for running a local vision-language model for the vlm pipeline. The parameters refer to a model hosted on Hugging Face. This parameter is mutually exclusive with vlm_pipeline_model_api and vlm_pipeline_model.","examples":["{\"repo_id\": \"ibm-granite/granite-docling-258M\", \"prompt\": \"Convert this page to docling.\", \"scale\": 2.0, \"response_format\": \"doctags\", \"inference_framework\": \"transformers\", \"transformers_model_type\": \"automodel-imagetexttotext\", \"extra_generation_config\": {\"skip_special_tokens\": false}, \"temperature\": 0.0}","{\"repo_id\": \"ibm-granite/granite-docling-258M-mlx\", \"prompt\": \"Convert this page to docling.\", \"scale\": 2.0, \"response_format\": \"doctags\", \"inference_framework\": \"mlx\", \"transformers_model_type\": \"automodel\", \"extra_generation_config\": {}, \"temperature\": 0.0}","{\"repo_id\": \"ibm-granite/granite-vision-3.2-2b\", \"prompt\": \"Convert this page to markdown. Do not miss any text and only output the bare markdown!\", \"scale\": 2.0, \"response_format\": \"markdown\", \"inference_framework\": \"transformers\", \"transformers_model_type\": \"automodel-vision2seq\", \"extra_generation_config\": {}, \"temperature\": 0.0}"]},"convert_vlm_pipeline_model_api":{"type":"string","title":"Convert Vlm Pipeline Model Api","description":"API details for using a vision-language model for the vlm pipeline. This parameter is mutually exclusive with vlm_pipeline_model_local and vlm_pipeline_model.","examples":["{\"url\": \"http://localhost:1234/v1/chat/completions\", \"headers\": {}, \"params\": {\"model\": \"ibm-granite/granite-docling-258M-mlx\"}, \"timeout\": 60.0, \"concurrency\": 1, \"prompt\": \"Convert this page to docling.\", \"scale\": 2.0, \"response_format\": \"doctags\", \"temperature\": 0.0}"]},"chunking_use_markdown_tables":{"type":"boolean","title":"Chunking Use Markdown Tables","description":"Use markdown table format instead of triplets for table serialization.","default":false},"chunking_include_raw_text":{"type":"boolean","title":"Chunking Include Raw Text","description":"Include both raw_text and text (contextualized) in response. If False, only text is included.","default":false},"chunking_max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Chunking Max Tokens","description":"Maximum number of tokens per chunk. When left to none, the value is automatically extracted from the tokenizer."},"chunking_tokenizer":{"type":"string","title":"Chunking Tokenizer","description":"HuggingFace model name for custom tokenization. If not specified, uses 'sentence-transformers/all-MiniLM-L6-v2' as default.","default":"sentence-transformers/all-MiniLM-L6-v2","examples":["Qwen/Qwen3-Embedding-0.6B","sentence-transformers/all-MiniLM-L6-v2"]},"chunking_merge_peers":{"type":"boolean","title":"Chunking Merge Peers","description":"Merge undersized successive chunks with same headings.","default":true}},"type":"object","required":["files"],"title":"Body_Chunk_files_with_HierarchicalChunker_as_async_task_v1_chunk_hierarchical_file_async_post"},"Body_Chunk_files_with_HierarchicalChunker_v1_chunk_hierarchical_file_post":{"properties":{"files":{"items":{"type":"string","format":"binary"},"type":"array","title":"Files"},"include_converted_doc":{"type":"boolean","title":"Include Converted Doc","description":"If true, the output will include both the chunks and the converted document.","default":false},"target_type":{"$ref":"#/components/schemas/TargetName","description":"Specification for the type of output target.","default":"inbody"},"convert_from_formats":{"items":{"$ref":"#/components/schemas/InputFormat"},"type":"array","title":"Convert From Formats","description":"Input format(s) to convert from. String or list of strings. Allowed values: docx, pptx, html, image, pdf, asciidoc, md, csv, xlsx, xml_uspto, xml_jats, mets_gbs, json_docling, audio, vtt. Optional, defaults to all formats.","default":["docx","pptx","html","image","pdf","asciidoc","md","csv","xlsx","xml_uspto","xml_jats","mets_gbs","json_docling","audio","vtt"],"examples":[["docx","pptx","html","image","pdf","asciidoc","md","csv","xlsx","xml_uspto","xml_jats","mets_gbs","json_docling","audio","vtt"]]},"convert_image_export_mode":{"$ref":"#/components/schemas/ImageRefMode","description":"Image export mode for the document (in case of JSON, Markdown or HTML). Allowed values: placeholder, embedded, referenced. Optional, defaults to Embedded.","default":"embedded","examples":["embedded"]},"convert_do_ocr":{"type":"boolean","title":"Convert Do Ocr","description":"If enabled, the bitmap content will be processed using OCR. Boolean. Optional, defaults to true","default":true},"convert_force_ocr":{"type":"boolean","title":"Convert Force Ocr","description":"If enabled, replace existing text with OCR-generated text over content. Boolean. Optional, defaults to false.","default":false},"convert_ocr_engine":{"$ref":"#/components/schemas/ocr_engines_enum","description":"The OCR engine to use. String. Allowed values: auto, easyocr, ocrmac, rapidocr, tesserocr, tesseract. Optional, defaults to easyocr.","default":"easyocr","examples":["easyocr"]},"convert_ocr_lang":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Convert Ocr Lang","description":"List of languages used by the OCR engine. Note that each OCR engine has different values for the language names. String or list of strings. Optional, defaults to empty.","examples":[["fr","de","es","en"]]},"convert_pdf_backend":{"$ref":"#/components/schemas/PdfBackend","description":"The PDF backend to use. String. Allowed values: pypdfium2, dlparse_v1, dlparse_v2, dlparse_v4. Optional, defaults to dlparse_v4.","default":"dlparse_v4","examples":["dlparse_v4"]},"convert_table_mode":{"$ref":"#/components/schemas/TableFormerMode","description":"Mode to use for table structure, String. Allowed values: fast, accurate. Optional, defaults to accurate.","default":"accurate","examples":["accurate"]},"convert_table_cell_matching":{"type":"boolean","title":"Convert Table Cell Matching","description":"If true, matches table cells predictions back to PDF cells. Can break table output if PDF cells are merged across table columns. If false, let table structure model define the text cells, ignore PDF cells.","default":true,"examples":[true]},"convert_pipeline":{"$ref":"#/components/schemas/ProcessingPipeline","description":"Choose the pipeline to process PDF or image files.","default":"standard"},"convert_page_range":{"prefixItems":[{"type":"integer"},{"type":"integer"}],"type":"array","maxItems":2,"minItems":2,"title":"Convert Page Range","description":"Only convert a range of pages. The page number starts at 1.","default":[1,9223372036854775807],"examples":[[1,9223372036854775807],[1,4]]},"convert_document_timeout":{"type":"number","title":"Convert Document Timeout","description":"The timeout for processing each document, in seconds.","default":604800.0},"convert_abort_on_error":{"type":"boolean","title":"Convert Abort On Error","description":"Abort on error if enabled. Boolean. Optional, defaults to false.","default":false},"convert_do_table_structure":{"type":"boolean","title":"Convert Do Table Structure","description":"If enabled, the table structure will be extracted. Boolean. Optional, defaults to true.","default":true,"examples":[true]},"convert_include_images":{"type":"boolean","title":"Convert Include Images","description":"If enabled, images will be extracted from the document. Boolean. Optional, defaults to true.","default":true,"examples":[true]},"convert_images_scale":{"type":"number","title":"Convert Images Scale","description":"Scale factor for images. Float. Optional, defaults to 2.0.","default":2.0,"examples":[2.0]},"convert_md_page_break_placeholder":{"type":"string","title":"Convert Md Page Break Placeholder","description":"Add this placeholder between pages in the markdown output.","default":"","examples":["",""]},"convert_do_code_enrichment":{"type":"boolean","title":"Convert Do Code Enrichment","description":"If enabled, perform OCR code enrichment. Boolean. Optional, defaults to false.","default":false,"examples":[false]},"convert_do_formula_enrichment":{"type":"boolean","title":"Convert Do Formula Enrichment","description":"If enabled, perform formula OCR, return LaTeX code. Boolean. Optional, defaults to false.","default":false,"examples":[false]},"convert_do_picture_classification":{"type":"boolean","title":"Convert Do Picture Classification","description":"If enabled, classify pictures in documents. Boolean. Optional, defaults to false.","default":false,"examples":[false]},"convert_do_picture_description":{"type":"boolean","title":"Convert Do Picture Description","description":"If enabled, describe pictures in documents. Boolean. Optional, defaults to false.","default":false,"examples":[false]},"convert_picture_description_area_threshold":{"type":"number","title":"Convert Picture Description Area Threshold","description":"Minimum percentage of the area for a picture to be processed with the models.","default":0.05,"examples":[0.05]},"convert_picture_description_local":{"type":"string","title":"Convert Picture Description Local","description":"Options for running a local vision-language model in the picture description. The parameters refer to a model hosted on Hugging Face. This parameter is mutually exclusive with picture_description_api.","examples":["{\"repo_id\": \"ibm-granite/granite-vision-3.2-2b\", \"prompt\": \"Describe this image in a few sentences.\", \"generation_config\": {\"max_new_tokens\": 200, \"do_sample\": false}}","{\"repo_id\": \"HuggingFaceTB/SmolVLM-256M-Instruct\", \"prompt\": \"Describe this image in a few sentences.\", \"generation_config\": {\"max_new_tokens\": 200, \"do_sample\": false}}"]},"convert_picture_description_api":{"type":"string","title":"Convert Picture Description Api","description":"API details for using a vision-language model in the picture description. This parameter is mutually exclusive with picture_description_local.","examples":["{\"url\": \"http://localhost:1234/v1/chat/completions\", \"headers\": {}, \"params\": {\"model\": \"granite3.2-vision:2b\"}, \"timeout\": 20.0, \"concurrency\": 1, \"prompt\": \"Describe this image in a few sentences.\"}","{\"url\": \"http://localhost:11434/v1/chat/completions\", \"headers\": {}, \"params\": {\"model\": \"granite3.2-vision:2b\"}, \"timeout\": 20.0, \"concurrency\": 1, \"prompt\": \"Describe this image in a few sentences.\"}"]},"convert_vlm_pipeline_model":{"anyOf":[{"$ref":"#/components/schemas/VlmModelType"},{"type":"null"}],"description":"Preset of local and API models for the vlm pipeline. This parameter is mutually exclusive with vlm_pipeline_model_local and vlm_pipeline_model_api. Use the other options for more parameters.","examples":["granite_docling"]},"convert_vlm_pipeline_model_local":{"type":"string","title":"Convert Vlm Pipeline Model Local","description":"Options for running a local vision-language model for the vlm pipeline. The parameters refer to a model hosted on Hugging Face. This parameter is mutually exclusive with vlm_pipeline_model_api and vlm_pipeline_model.","examples":["{\"repo_id\": \"ibm-granite/granite-docling-258M\", \"prompt\": \"Convert this page to docling.\", \"scale\": 2.0, \"response_format\": \"doctags\", \"inference_framework\": \"transformers\", \"transformers_model_type\": \"automodel-imagetexttotext\", \"extra_generation_config\": {\"skip_special_tokens\": false}, \"temperature\": 0.0}","{\"repo_id\": \"ibm-granite/granite-docling-258M-mlx\", \"prompt\": \"Convert this page to docling.\", \"scale\": 2.0, \"response_format\": \"doctags\", \"inference_framework\": \"mlx\", \"transformers_model_type\": \"automodel\", \"extra_generation_config\": {}, \"temperature\": 0.0}","{\"repo_id\": \"ibm-granite/granite-vision-3.2-2b\", \"prompt\": \"Convert this page to markdown. Do not miss any text and only output the bare markdown!\", \"scale\": 2.0, \"response_format\": \"markdown\", \"inference_framework\": \"transformers\", \"transformers_model_type\": \"automodel-vision2seq\", \"extra_generation_config\": {}, \"temperature\": 0.0}"]},"convert_vlm_pipeline_model_api":{"type":"string","title":"Convert Vlm Pipeline Model Api","description":"API details for using a vision-language model for the vlm pipeline. This parameter is mutually exclusive with vlm_pipeline_model_local and vlm_pipeline_model.","examples":["{\"url\": \"http://localhost:1234/v1/chat/completions\", \"headers\": {}, \"params\": {\"model\": \"ibm-granite/granite-docling-258M-mlx\"}, \"timeout\": 60.0, \"concurrency\": 1, \"prompt\": \"Convert this page to docling.\", \"scale\": 2.0, \"response_format\": \"doctags\", \"temperature\": 0.0}"]},"chunking_use_markdown_tables":{"type":"boolean","title":"Chunking Use Markdown Tables","description":"Use markdown table format instead of triplets for table serialization.","default":false},"chunking_include_raw_text":{"type":"boolean","title":"Chunking Include Raw Text","description":"Include both raw_text and text (contextualized) in response. If False, only text is included.","default":false},"chunking_max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Chunking Max Tokens","description":"Maximum number of tokens per chunk. When left to none, the value is automatically extracted from the tokenizer."},"chunking_tokenizer":{"type":"string","title":"Chunking Tokenizer","description":"HuggingFace model name for custom tokenization. If not specified, uses 'sentence-transformers/all-MiniLM-L6-v2' as default.","default":"sentence-transformers/all-MiniLM-L6-v2","examples":["Qwen/Qwen3-Embedding-0.6B","sentence-transformers/all-MiniLM-L6-v2"]},"chunking_merge_peers":{"type":"boolean","title":"Chunking Merge Peers","description":"Merge undersized successive chunks with same headings.","default":true}},"type":"object","required":["files"],"title":"Body_Chunk_files_with_HierarchicalChunker_v1_chunk_hierarchical_file_post"},"Body_Chunk_files_with_HybridChunker_as_async_task_v1_chunk_hybrid_file_async_post":{"properties":{"files":{"items":{"type":"string","format":"binary"},"type":"array","title":"Files"},"include_converted_doc":{"type":"boolean","title":"Include Converted Doc","description":"If true, the output will include both the chunks and the converted document.","default":false},"target_type":{"$ref":"#/components/schemas/TargetName","description":"Specification for the type of output target.","default":"inbody"},"convert_from_formats":{"items":{"$ref":"#/components/schemas/InputFormat"},"type":"array","title":"Convert From Formats","description":"Input format(s) to convert from. String or list of strings. Allowed values: docx, pptx, html, image, pdf, asciidoc, md, csv, xlsx, xml_uspto, xml_jats, mets_gbs, json_docling, audio, vtt. Optional, defaults to all formats.","default":["docx","pptx","html","image","pdf","asciidoc","md","csv","xlsx","xml_uspto","xml_jats","mets_gbs","json_docling","audio","vtt"],"examples":[["docx","pptx","html","image","pdf","asciidoc","md","csv","xlsx","xml_uspto","xml_jats","mets_gbs","json_docling","audio","vtt"]]},"convert_image_export_mode":{"$ref":"#/components/schemas/ImageRefMode","description":"Image export mode for the document (in case of JSON, Markdown or HTML). Allowed values: placeholder, embedded, referenced. Optional, defaults to Embedded.","default":"embedded","examples":["embedded"]},"convert_do_ocr":{"type":"boolean","title":"Convert Do Ocr","description":"If enabled, the bitmap content will be processed using OCR. Boolean. Optional, defaults to true","default":true},"convert_force_ocr":{"type":"boolean","title":"Convert Force Ocr","description":"If enabled, replace existing text with OCR-generated text over content. Boolean. Optional, defaults to false.","default":false},"convert_ocr_engine":{"$ref":"#/components/schemas/ocr_engines_enum","description":"The OCR engine to use. String. Allowed values: auto, easyocr, ocrmac, rapidocr, tesserocr, tesseract. Optional, defaults to easyocr.","default":"easyocr","examples":["easyocr"]},"convert_ocr_lang":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Convert Ocr Lang","description":"List of languages used by the OCR engine. Note that each OCR engine has different values for the language names. String or list of strings. Optional, defaults to empty.","examples":[["fr","de","es","en"]]},"convert_pdf_backend":{"$ref":"#/components/schemas/PdfBackend","description":"The PDF backend to use. String. Allowed values: pypdfium2, dlparse_v1, dlparse_v2, dlparse_v4. Optional, defaults to dlparse_v4.","default":"dlparse_v4","examples":["dlparse_v4"]},"convert_table_mode":{"$ref":"#/components/schemas/TableFormerMode","description":"Mode to use for table structure, String. Allowed values: fast, accurate. Optional, defaults to accurate.","default":"accurate","examples":["accurate"]},"convert_table_cell_matching":{"type":"boolean","title":"Convert Table Cell Matching","description":"If true, matches table cells predictions back to PDF cells. Can break table output if PDF cells are merged across table columns. If false, let table structure model define the text cells, ignore PDF cells.","default":true,"examples":[true]},"convert_pipeline":{"$ref":"#/components/schemas/ProcessingPipeline","description":"Choose the pipeline to process PDF or image files.","default":"standard"},"convert_page_range":{"prefixItems":[{"type":"integer"},{"type":"integer"}],"type":"array","maxItems":2,"minItems":2,"title":"Convert Page Range","description":"Only convert a range of pages. The page number starts at 1.","default":[1,9223372036854775807],"examples":[[1,9223372036854775807],[1,4]]},"convert_document_timeout":{"type":"number","title":"Convert Document Timeout","description":"The timeout for processing each document, in seconds.","default":604800.0},"convert_abort_on_error":{"type":"boolean","title":"Convert Abort On Error","description":"Abort on error if enabled. Boolean. Optional, defaults to false.","default":false},"convert_do_table_structure":{"type":"boolean","title":"Convert Do Table Structure","description":"If enabled, the table structure will be extracted. Boolean. Optional, defaults to true.","default":true,"examples":[true]},"convert_include_images":{"type":"boolean","title":"Convert Include Images","description":"If enabled, images will be extracted from the document. Boolean. Optional, defaults to true.","default":true,"examples":[true]},"convert_images_scale":{"type":"number","title":"Convert Images Scale","description":"Scale factor for images. Float. Optional, defaults to 2.0.","default":2.0,"examples":[2.0]},"convert_md_page_break_placeholder":{"type":"string","title":"Convert Md Page Break Placeholder","description":"Add this placeholder between pages in the markdown output.","default":"","examples":["",""]},"convert_do_code_enrichment":{"type":"boolean","title":"Convert Do Code Enrichment","description":"If enabled, perform OCR code enrichment. Boolean. Optional, defaults to false.","default":false,"examples":[false]},"convert_do_formula_enrichment":{"type":"boolean","title":"Convert Do Formula Enrichment","description":"If enabled, perform formula OCR, return LaTeX code. Boolean. Optional, defaults to false.","default":false,"examples":[false]},"convert_do_picture_classification":{"type":"boolean","title":"Convert Do Picture Classification","description":"If enabled, classify pictures in documents. Boolean. Optional, defaults to false.","default":false,"examples":[false]},"convert_do_picture_description":{"type":"boolean","title":"Convert Do Picture Description","description":"If enabled, describe pictures in documents. Boolean. Optional, defaults to false.","default":false,"examples":[false]},"convert_picture_description_area_threshold":{"type":"number","title":"Convert Picture Description Area Threshold","description":"Minimum percentage of the area for a picture to be processed with the models.","default":0.05,"examples":[0.05]},"convert_picture_description_local":{"type":"string","title":"Convert Picture Description Local","description":"Options for running a local vision-language model in the picture description. The parameters refer to a model hosted on Hugging Face. This parameter is mutually exclusive with picture_description_api.","examples":["{\"repo_id\": \"ibm-granite/granite-vision-3.2-2b\", \"prompt\": \"Describe this image in a few sentences.\", \"generation_config\": {\"max_new_tokens\": 200, \"do_sample\": false}}","{\"repo_id\": \"HuggingFaceTB/SmolVLM-256M-Instruct\", \"prompt\": \"Describe this image in a few sentences.\", \"generation_config\": {\"max_new_tokens\": 200, \"do_sample\": false}}"]},"convert_picture_description_api":{"type":"string","title":"Convert Picture Description Api","description":"API details for using a vision-language model in the picture description. This parameter is mutually exclusive with picture_description_local.","examples":["{\"url\": \"http://localhost:1234/v1/chat/completions\", \"headers\": {}, \"params\": {\"model\": \"granite3.2-vision:2b\"}, \"timeout\": 20.0, \"concurrency\": 1, \"prompt\": \"Describe this image in a few sentences.\"}","{\"url\": \"http://localhost:11434/v1/chat/completions\", \"headers\": {}, \"params\": {\"model\": \"granite3.2-vision:2b\"}, \"timeout\": 20.0, \"concurrency\": 1, \"prompt\": \"Describe this image in a few sentences.\"}"]},"convert_vlm_pipeline_model":{"anyOf":[{"$ref":"#/components/schemas/VlmModelType"},{"type":"null"}],"description":"Preset of local and API models for the vlm pipeline. This parameter is mutually exclusive with vlm_pipeline_model_local and vlm_pipeline_model_api. Use the other options for more parameters.","examples":["granite_docling"]},"convert_vlm_pipeline_model_local":{"type":"string","title":"Convert Vlm Pipeline Model Local","description":"Options for running a local vision-language model for the vlm pipeline. The parameters refer to a model hosted on Hugging Face. This parameter is mutually exclusive with vlm_pipeline_model_api and vlm_pipeline_model.","examples":["{\"repo_id\": \"ibm-granite/granite-docling-258M\", \"prompt\": \"Convert this page to docling.\", \"scale\": 2.0, \"response_format\": \"doctags\", \"inference_framework\": \"transformers\", \"transformers_model_type\": \"automodel-imagetexttotext\", \"extra_generation_config\": {\"skip_special_tokens\": false}, \"temperature\": 0.0}","{\"repo_id\": \"ibm-granite/granite-docling-258M-mlx\", \"prompt\": \"Convert this page to docling.\", \"scale\": 2.0, \"response_format\": \"doctags\", \"inference_framework\": \"mlx\", \"transformers_model_type\": \"automodel\", \"extra_generation_config\": {}, \"temperature\": 0.0}","{\"repo_id\": \"ibm-granite/granite-vision-3.2-2b\", \"prompt\": \"Convert this page to markdown. Do not miss any text and only output the bare markdown!\", \"scale\": 2.0, \"response_format\": \"markdown\", \"inference_framework\": \"transformers\", \"transformers_model_type\": \"automodel-vision2seq\", \"extra_generation_config\": {}, \"temperature\": 0.0}"]},"convert_vlm_pipeline_model_api":{"type":"string","title":"Convert Vlm Pipeline Model Api","description":"API details for using a vision-language model for the vlm pipeline. This parameter is mutually exclusive with vlm_pipeline_model_local and vlm_pipeline_model.","examples":["{\"url\": \"http://localhost:1234/v1/chat/completions\", \"headers\": {}, \"params\": {\"model\": \"ibm-granite/granite-docling-258M-mlx\"}, \"timeout\": 60.0, \"concurrency\": 1, \"prompt\": \"Convert this page to docling.\", \"scale\": 2.0, \"response_format\": \"doctags\", \"temperature\": 0.0}"]},"chunking_use_markdown_tables":{"type":"boolean","title":"Chunking Use Markdown Tables","description":"Use markdown table format instead of triplets for table serialization.","default":false},"chunking_include_raw_text":{"type":"boolean","title":"Chunking Include Raw Text","description":"Include both raw_text and text (contextualized) in response. If False, only text is included.","default":false},"chunking_max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Chunking Max Tokens","description":"Maximum number of tokens per chunk. When left to none, the value is automatically extracted from the tokenizer."},"chunking_tokenizer":{"type":"string","title":"Chunking Tokenizer","description":"HuggingFace model name for custom tokenization. If not specified, uses 'sentence-transformers/all-MiniLM-L6-v2' as default.","default":"sentence-transformers/all-MiniLM-L6-v2","examples":["Qwen/Qwen3-Embedding-0.6B","sentence-transformers/all-MiniLM-L6-v2"]},"chunking_merge_peers":{"type":"boolean","title":"Chunking Merge Peers","description":"Merge undersized successive chunks with same headings.","default":true}},"type":"object","required":["files"],"title":"Body_Chunk_files_with_HybridChunker_as_async_task_v1_chunk_hybrid_file_async_post"},"Body_Chunk_files_with_HybridChunker_v1_chunk_hybrid_file_post":{"properties":{"files":{"items":{"type":"string","format":"binary"},"type":"array","title":"Files"},"include_converted_doc":{"type":"boolean","title":"Include Converted Doc","description":"If true, the output will include both the chunks and the converted document.","default":false},"target_type":{"$ref":"#/components/schemas/TargetName","description":"Specification for the type of output target.","default":"inbody"},"convert_from_formats":{"items":{"$ref":"#/components/schemas/InputFormat"},"type":"array","title":"Convert From Formats","description":"Input format(s) to convert from. String or list of strings. Allowed values: docx, pptx, html, image, pdf, asciidoc, md, csv, xlsx, xml_uspto, xml_jats, mets_gbs, json_docling, audio, vtt. Optional, defaults to all formats.","default":["docx","pptx","html","image","pdf","asciidoc","md","csv","xlsx","xml_uspto","xml_jats","mets_gbs","json_docling","audio","vtt"],"examples":[["docx","pptx","html","image","pdf","asciidoc","md","csv","xlsx","xml_uspto","xml_jats","mets_gbs","json_docling","audio","vtt"]]},"convert_image_export_mode":{"$ref":"#/components/schemas/ImageRefMode","description":"Image export mode for the document (in case of JSON, Markdown or HTML). Allowed values: placeholder, embedded, referenced. Optional, defaults to Embedded.","default":"embedded","examples":["embedded"]},"convert_do_ocr":{"type":"boolean","title":"Convert Do Ocr","description":"If enabled, the bitmap content will be processed using OCR. Boolean. Optional, defaults to true","default":true},"convert_force_ocr":{"type":"boolean","title":"Convert Force Ocr","description":"If enabled, replace existing text with OCR-generated text over content. Boolean. Optional, defaults to false.","default":false},"convert_ocr_engine":{"$ref":"#/components/schemas/ocr_engines_enum","description":"The OCR engine to use. String. Allowed values: auto, easyocr, ocrmac, rapidocr, tesserocr, tesseract. Optional, defaults to easyocr.","default":"easyocr","examples":["easyocr"]},"convert_ocr_lang":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Convert Ocr Lang","description":"List of languages used by the OCR engine. Note that each OCR engine has different values for the language names. String or list of strings. Optional, defaults to empty.","examples":[["fr","de","es","en"]]},"convert_pdf_backend":{"$ref":"#/components/schemas/PdfBackend","description":"The PDF backend to use. String. Allowed values: pypdfium2, dlparse_v1, dlparse_v2, dlparse_v4. Optional, defaults to dlparse_v4.","default":"dlparse_v4","examples":["dlparse_v4"]},"convert_table_mode":{"$ref":"#/components/schemas/TableFormerMode","description":"Mode to use for table structure, String. Allowed values: fast, accurate. Optional, defaults to accurate.","default":"accurate","examples":["accurate"]},"convert_table_cell_matching":{"type":"boolean","title":"Convert Table Cell Matching","description":"If true, matches table cells predictions back to PDF cells. Can break table output if PDF cells are merged across table columns. If false, let table structure model define the text cells, ignore PDF cells.","default":true,"examples":[true]},"convert_pipeline":{"$ref":"#/components/schemas/ProcessingPipeline","description":"Choose the pipeline to process PDF or image files.","default":"standard"},"convert_page_range":{"prefixItems":[{"type":"integer"},{"type":"integer"}],"type":"array","maxItems":2,"minItems":2,"title":"Convert Page Range","description":"Only convert a range of pages. The page number starts at 1.","default":[1,9223372036854775807],"examples":[[1,9223372036854775807],[1,4]]},"convert_document_timeout":{"type":"number","title":"Convert Document Timeout","description":"The timeout for processing each document, in seconds.","default":604800.0},"convert_abort_on_error":{"type":"boolean","title":"Convert Abort On Error","description":"Abort on error if enabled. Boolean. Optional, defaults to false.","default":false},"convert_do_table_structure":{"type":"boolean","title":"Convert Do Table Structure","description":"If enabled, the table structure will be extracted. Boolean. Optional, defaults to true.","default":true,"examples":[true]},"convert_include_images":{"type":"boolean","title":"Convert Include Images","description":"If enabled, images will be extracted from the document. Boolean. Optional, defaults to true.","default":true,"examples":[true]},"convert_images_scale":{"type":"number","title":"Convert Images Scale","description":"Scale factor for images. Float. Optional, defaults to 2.0.","default":2.0,"examples":[2.0]},"convert_md_page_break_placeholder":{"type":"string","title":"Convert Md Page Break Placeholder","description":"Add this placeholder between pages in the markdown output.","default":"","examples":["",""]},"convert_do_code_enrichment":{"type":"boolean","title":"Convert Do Code Enrichment","description":"If enabled, perform OCR code enrichment. Boolean. Optional, defaults to false.","default":false,"examples":[false]},"convert_do_formula_enrichment":{"type":"boolean","title":"Convert Do Formula Enrichment","description":"If enabled, perform formula OCR, return LaTeX code. Boolean. Optional, defaults to false.","default":false,"examples":[false]},"convert_do_picture_classification":{"type":"boolean","title":"Convert Do Picture Classification","description":"If enabled, classify pictures in documents. Boolean. Optional, defaults to false.","default":false,"examples":[false]},"convert_do_picture_description":{"type":"boolean","title":"Convert Do Picture Description","description":"If enabled, describe pictures in documents. Boolean. Optional, defaults to false.","default":false,"examples":[false]},"convert_picture_description_area_threshold":{"type":"number","title":"Convert Picture Description Area Threshold","description":"Minimum percentage of the area for a picture to be processed with the models.","default":0.05,"examples":[0.05]},"convert_picture_description_local":{"type":"string","title":"Convert Picture Description Local","description":"Options for running a local vision-language model in the picture description. The parameters refer to a model hosted on Hugging Face. This parameter is mutually exclusive with picture_description_api.","examples":["{\"repo_id\": \"ibm-granite/granite-vision-3.2-2b\", \"prompt\": \"Describe this image in a few sentences.\", \"generation_config\": {\"max_new_tokens\": 200, \"do_sample\": false}}","{\"repo_id\": \"HuggingFaceTB/SmolVLM-256M-Instruct\", \"prompt\": \"Describe this image in a few sentences.\", \"generation_config\": {\"max_new_tokens\": 200, \"do_sample\": false}}"]},"convert_picture_description_api":{"type":"string","title":"Convert Picture Description Api","description":"API details for using a vision-language model in the picture description. This parameter is mutually exclusive with picture_description_local.","examples":["{\"url\": \"http://localhost:1234/v1/chat/completions\", \"headers\": {}, \"params\": {\"model\": \"granite3.2-vision:2b\"}, \"timeout\": 20.0, \"concurrency\": 1, \"prompt\": \"Describe this image in a few sentences.\"}","{\"url\": \"http://localhost:11434/v1/chat/completions\", \"headers\": {}, \"params\": {\"model\": \"granite3.2-vision:2b\"}, \"timeout\": 20.0, \"concurrency\": 1, \"prompt\": \"Describe this image in a few sentences.\"}"]},"convert_vlm_pipeline_model":{"anyOf":[{"$ref":"#/components/schemas/VlmModelType"},{"type":"null"}],"description":"Preset of local and API models for the vlm pipeline. This parameter is mutually exclusive with vlm_pipeline_model_local and vlm_pipeline_model_api. Use the other options for more parameters.","examples":["granite_docling"]},"convert_vlm_pipeline_model_local":{"type":"string","title":"Convert Vlm Pipeline Model Local","description":"Options for running a local vision-language model for the vlm pipeline. The parameters refer to a model hosted on Hugging Face. This parameter is mutually exclusive with vlm_pipeline_model_api and vlm_pipeline_model.","examples":["{\"repo_id\": \"ibm-granite/granite-docling-258M\", \"prompt\": \"Convert this page to docling.\", \"scale\": 2.0, \"response_format\": \"doctags\", \"inference_framework\": \"transformers\", \"transformers_model_type\": \"automodel-imagetexttotext\", \"extra_generation_config\": {\"skip_special_tokens\": false}, \"temperature\": 0.0}","{\"repo_id\": \"ibm-granite/granite-docling-258M-mlx\", \"prompt\": \"Convert this page to docling.\", \"scale\": 2.0, \"response_format\": \"doctags\", \"inference_framework\": \"mlx\", \"transformers_model_type\": \"automodel\", \"extra_generation_config\": {}, \"temperature\": 0.0}","{\"repo_id\": \"ibm-granite/granite-vision-3.2-2b\", \"prompt\": \"Convert this page to markdown. Do not miss any text and only output the bare markdown!\", \"scale\": 2.0, \"response_format\": \"markdown\", \"inference_framework\": \"transformers\", \"transformers_model_type\": \"automodel-vision2seq\", \"extra_generation_config\": {}, \"temperature\": 0.0}"]},"convert_vlm_pipeline_model_api":{"type":"string","title":"Convert Vlm Pipeline Model Api","description":"API details for using a vision-language model for the vlm pipeline. This parameter is mutually exclusive with vlm_pipeline_model_local and vlm_pipeline_model.","examples":["{\"url\": \"http://localhost:1234/v1/chat/completions\", \"headers\": {}, \"params\": {\"model\": \"ibm-granite/granite-docling-258M-mlx\"}, \"timeout\": 60.0, \"concurrency\": 1, \"prompt\": \"Convert this page to docling.\", \"scale\": 2.0, \"response_format\": \"doctags\", \"temperature\": 0.0}"]},"chunking_use_markdown_tables":{"type":"boolean","title":"Chunking Use Markdown Tables","description":"Use markdown table format instead of triplets for table serialization.","default":false},"chunking_include_raw_text":{"type":"boolean","title":"Chunking Include Raw Text","description":"Include both raw_text and text (contextualized) in response. If False, only text is included.","default":false},"chunking_max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Chunking Max Tokens","description":"Maximum number of tokens per chunk. When left to none, the value is automatically extracted from the tokenizer."},"chunking_tokenizer":{"type":"string","title":"Chunking Tokenizer","description":"HuggingFace model name for custom tokenization. If not specified, uses 'sentence-transformers/all-MiniLM-L6-v2' as default.","default":"sentence-transformers/all-MiniLM-L6-v2","examples":["Qwen/Qwen3-Embedding-0.6B","sentence-transformers/all-MiniLM-L6-v2"]},"chunking_merge_peers":{"type":"boolean","title":"Chunking Merge Peers","description":"Merge undersized successive chunks with same headings.","default":true}},"type":"object","required":["files"],"title":"Body_Chunk_files_with_HybridChunker_v1_chunk_hybrid_file_post"},"Body_process_file_async_v1_convert_file_async_post":{"properties":{"files":{"items":{"type":"string","format":"binary"},"type":"array","title":"Files"},"target_type":{"$ref":"#/components/schemas/TargetName","default":"inbody"},"from_formats":{"items":{"$ref":"#/components/schemas/InputFormat"},"type":"array","title":"From Formats","description":"Input format(s) to convert from. String or list of strings. Allowed values: docx, pptx, html, image, pdf, asciidoc, md, csv, xlsx, xml_uspto, xml_jats, mets_gbs, json_docling, audio, vtt. Optional, defaults to all formats.","default":["docx","pptx","html","image","pdf","asciidoc","md","csv","xlsx","xml_uspto","xml_jats","mets_gbs","json_docling","audio","vtt"],"examples":[["docx","pptx","html","image","pdf","asciidoc","md","csv","xlsx","xml_uspto","xml_jats","mets_gbs","json_docling","audio","vtt"]]},"to_formats":{"items":{"$ref":"#/components/schemas/OutputFormat"},"type":"array","title":"To Formats","description":"Output format(s) to convert to. String or list of strings. Allowed values: md, json, html, html_split_page, text, doctags. Optional, defaults to Markdown.","default":["md"],"examples":[["md"],["md","json"],["md","json","html","html_split_page","text","doctags"]]},"image_export_mode":{"$ref":"#/components/schemas/ImageRefMode","description":"Image export mode for the document (in case of JSON, Markdown or HTML). Allowed values: placeholder, embedded, referenced. Optional, defaults to Embedded.","default":"embedded","examples":["embedded"]},"do_ocr":{"type":"boolean","title":"Do Ocr","description":"If enabled, the bitmap content will be processed using OCR. Boolean. Optional, defaults to true","default":true},"force_ocr":{"type":"boolean","title":"Force Ocr","description":"If enabled, replace existing text with OCR-generated text over content. Boolean. Optional, defaults to false.","default":false},"ocr_engine":{"$ref":"#/components/schemas/ocr_engines_enum","description":"The OCR engine to use. String. Allowed values: auto, easyocr, ocrmac, rapidocr, tesserocr, tesseract. Optional, defaults to easyocr.","default":"easyocr","examples":["easyocr"]},"ocr_lang":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Ocr Lang","description":"List of languages used by the OCR engine. Note that each OCR engine has different values for the language names. String or list of strings. Optional, defaults to empty.","examples":[["fr","de","es","en"]]},"pdf_backend":{"$ref":"#/components/schemas/PdfBackend","description":"The PDF backend to use. String. Allowed values: pypdfium2, dlparse_v1, dlparse_v2, dlparse_v4. Optional, defaults to dlparse_v4.","default":"dlparse_v4","examples":["dlparse_v4"]},"table_mode":{"$ref":"#/components/schemas/TableFormerMode","description":"Mode to use for table structure, String. Allowed values: fast, accurate. Optional, defaults to accurate.","default":"accurate","examples":["accurate"]},"table_cell_matching":{"type":"boolean","title":"Table Cell Matching","description":"If true, matches table cells predictions back to PDF cells. Can break table output if PDF cells are merged across table columns. If false, let table structure model define the text cells, ignore PDF cells.","default":true,"examples":[true]},"pipeline":{"$ref":"#/components/schemas/ProcessingPipeline","description":"Choose the pipeline to process PDF or image files.","default":"standard"},"page_range":{"prefixItems":[{"type":"integer"},{"type":"integer"}],"type":"array","maxItems":2,"minItems":2,"title":"Page Range","description":"Only convert a range of pages. The page number starts at 1.","default":[1,9223372036854775807],"examples":[[1,9223372036854775807],[1,4]]},"document_timeout":{"type":"number","title":"Document Timeout","description":"The timeout for processing each document, in seconds.","default":604800.0},"abort_on_error":{"type":"boolean","title":"Abort On Error","description":"Abort on error if enabled. Boolean. Optional, defaults to false.","default":false},"do_table_structure":{"type":"boolean","title":"Do Table Structure","description":"If enabled, the table structure will be extracted. Boolean. Optional, defaults to true.","default":true,"examples":[true]},"include_images":{"type":"boolean","title":"Include Images","description":"If enabled, images will be extracted from the document. Boolean. Optional, defaults to true.","default":true,"examples":[true]},"images_scale":{"type":"number","title":"Images Scale","description":"Scale factor for images. Float. Optional, defaults to 2.0.","default":2.0,"examples":[2.0]},"md_page_break_placeholder":{"type":"string","title":"Md Page Break Placeholder","description":"Add this placeholder between pages in the markdown output.","default":"","examples":["",""]},"do_code_enrichment":{"type":"boolean","title":"Do Code Enrichment","description":"If enabled, perform OCR code enrichment. Boolean. Optional, defaults to false.","default":false,"examples":[false]},"do_formula_enrichment":{"type":"boolean","title":"Do Formula Enrichment","description":"If enabled, perform formula OCR, return LaTeX code. Boolean. Optional, defaults to false.","default":false,"examples":[false]},"do_picture_classification":{"type":"boolean","title":"Do Picture Classification","description":"If enabled, classify pictures in documents. Boolean. Optional, defaults to false.","default":false,"examples":[false]},"do_picture_description":{"type":"boolean","title":"Do Picture Description","description":"If enabled, describe pictures in documents. Boolean. Optional, defaults to false.","default":false,"examples":[false]},"picture_description_area_threshold":{"type":"number","title":"Picture Description Area Threshold","description":"Minimum percentage of the area for a picture to be processed with the models.","default":0.05,"examples":[0.05]},"picture_description_local":{"type":"string","title":"Picture Description Local","description":"Options for running a local vision-language model in the picture description. The parameters refer to a model hosted on Hugging Face. This parameter is mutually exclusive with picture_description_api.","examples":["{\"repo_id\": \"ibm-granite/granite-vision-3.2-2b\", \"prompt\": \"Describe this image in a few sentences.\", \"generation_config\": {\"max_new_tokens\": 200, \"do_sample\": false}}","{\"repo_id\": \"HuggingFaceTB/SmolVLM-256M-Instruct\", \"prompt\": \"Describe this image in a few sentences.\", \"generation_config\": {\"max_new_tokens\": 200, \"do_sample\": false}}"]},"picture_description_api":{"type":"string","title":"Picture Description Api","description":"API details for using a vision-language model in the picture description. This parameter is mutually exclusive with picture_description_local.","examples":["{\"url\": \"http://localhost:1234/v1/chat/completions\", \"headers\": {}, \"params\": {\"model\": \"granite3.2-vision:2b\"}, \"timeout\": 20.0, \"concurrency\": 1, \"prompt\": \"Describe this image in a few sentences.\"}","{\"url\": \"http://localhost:11434/v1/chat/completions\", \"headers\": {}, \"params\": {\"model\": \"granite3.2-vision:2b\"}, \"timeout\": 20.0, \"concurrency\": 1, \"prompt\": \"Describe this image in a few sentences.\"}"]},"vlm_pipeline_model":{"anyOf":[{"$ref":"#/components/schemas/VlmModelType"},{"type":"null"}],"description":"Preset of local and API models for the vlm pipeline. This parameter is mutually exclusive with vlm_pipeline_model_local and vlm_pipeline_model_api. Use the other options for more parameters.","examples":["granite_docling"]},"vlm_pipeline_model_local":{"type":"string","title":"Vlm Pipeline Model Local","description":"Options for running a local vision-language model for the vlm pipeline. The parameters refer to a model hosted on Hugging Face. This parameter is mutually exclusive with vlm_pipeline_model_api and vlm_pipeline_model.","examples":["{\"repo_id\": \"ibm-granite/granite-docling-258M\", \"prompt\": \"Convert this page to docling.\", \"scale\": 2.0, \"response_format\": \"doctags\", \"inference_framework\": \"transformers\", \"transformers_model_type\": \"automodel-imagetexttotext\", \"extra_generation_config\": {\"skip_special_tokens\": false}, \"temperature\": 0.0}","{\"repo_id\": \"ibm-granite/granite-docling-258M-mlx\", \"prompt\": \"Convert this page to docling.\", \"scale\": 2.0, \"response_format\": \"doctags\", \"inference_framework\": \"mlx\", \"transformers_model_type\": \"automodel\", \"extra_generation_config\": {}, \"temperature\": 0.0}","{\"repo_id\": \"ibm-granite/granite-vision-3.2-2b\", \"prompt\": \"Convert this page to markdown. Do not miss any text and only output the bare markdown!\", \"scale\": 2.0, \"response_format\": \"markdown\", \"inference_framework\": \"transformers\", \"transformers_model_type\": \"automodel-vision2seq\", \"extra_generation_config\": {}, \"temperature\": 0.0}"]},"vlm_pipeline_model_api":{"type":"string","title":"Vlm Pipeline Model Api","description":"API details for using a vision-language model for the vlm pipeline. This parameter is mutually exclusive with vlm_pipeline_model_local and vlm_pipeline_model.","examples":["{\"url\": \"http://localhost:1234/v1/chat/completions\", \"headers\": {}, \"params\": {\"model\": \"ibm-granite/granite-docling-258M-mlx\"}, \"timeout\": 60.0, \"concurrency\": 1, \"prompt\": \"Convert this page to docling.\", \"scale\": 2.0, \"response_format\": \"doctags\", \"temperature\": 0.0}"]}},"type":"object","required":["files"],"title":"Body_process_file_async_v1_convert_file_async_post"},"Body_process_file_v1_convert_file_post":{"properties":{"files":{"items":{"type":"string","format":"binary"},"type":"array","title":"Files"},"target_type":{"$ref":"#/components/schemas/TargetName","default":"inbody"},"from_formats":{"items":{"$ref":"#/components/schemas/InputFormat"},"type":"array","title":"From Formats","description":"Input format(s) to convert from. String or list of strings. Allowed values: docx, pptx, html, image, pdf, asciidoc, md, csv, xlsx, xml_uspto, xml_jats, mets_gbs, json_docling, audio, vtt. Optional, defaults to all formats.","default":["docx","pptx","html","image","pdf","asciidoc","md","csv","xlsx","xml_uspto","xml_jats","mets_gbs","json_docling","audio","vtt"],"examples":[["docx","pptx","html","image","pdf","asciidoc","md","csv","xlsx","xml_uspto","xml_jats","mets_gbs","json_docling","audio","vtt"]]},"to_formats":{"items":{"$ref":"#/components/schemas/OutputFormat"},"type":"array","title":"To Formats","description":"Output format(s) to convert to. String or list of strings. Allowed values: md, json, html, html_split_page, text, doctags. Optional, defaults to Markdown.","default":["md"],"examples":[["md"],["md","json"],["md","json","html","html_split_page","text","doctags"]]},"image_export_mode":{"$ref":"#/components/schemas/ImageRefMode","description":"Image export mode for the document (in case of JSON, Markdown or HTML). Allowed values: placeholder, embedded, referenced. Optional, defaults to Embedded.","default":"embedded","examples":["embedded"]},"do_ocr":{"type":"boolean","title":"Do Ocr","description":"If enabled, the bitmap content will be processed using OCR. Boolean. Optional, defaults to true","default":true},"force_ocr":{"type":"boolean","title":"Force Ocr","description":"If enabled, replace existing text with OCR-generated text over content. Boolean. Optional, defaults to false.","default":false},"ocr_engine":{"$ref":"#/components/schemas/ocr_engines_enum","description":"The OCR engine to use. String. Allowed values: auto, easyocr, ocrmac, rapidocr, tesserocr, tesseract. Optional, defaults to easyocr.","default":"easyocr","examples":["easyocr"]},"ocr_lang":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Ocr Lang","description":"List of languages used by the OCR engine. Note that each OCR engine has different values for the language names. String or list of strings. Optional, defaults to empty.","examples":[["fr","de","es","en"]]},"pdf_backend":{"$ref":"#/components/schemas/PdfBackend","description":"The PDF backend to use. String. Allowed values: pypdfium2, dlparse_v1, dlparse_v2, dlparse_v4. Optional, defaults to dlparse_v4.","default":"dlparse_v4","examples":["dlparse_v4"]},"table_mode":{"$ref":"#/components/schemas/TableFormerMode","description":"Mode to use for table structure, String. Allowed values: fast, accurate. Optional, defaults to accurate.","default":"accurate","examples":["accurate"]},"table_cell_matching":{"type":"boolean","title":"Table Cell Matching","description":"If true, matches table cells predictions back to PDF cells. Can break table output if PDF cells are merged across table columns. If false, let table structure model define the text cells, ignore PDF cells.","default":true,"examples":[true]},"pipeline":{"$ref":"#/components/schemas/ProcessingPipeline","description":"Choose the pipeline to process PDF or image files.","default":"standard"},"page_range":{"prefixItems":[{"type":"integer"},{"type":"integer"}],"type":"array","maxItems":2,"minItems":2,"title":"Page Range","description":"Only convert a range of pages. The page number starts at 1.","default":[1,9223372036854775807],"examples":[[1,9223372036854775807],[1,4]]},"document_timeout":{"type":"number","title":"Document Timeout","description":"The timeout for processing each document, in seconds.","default":604800.0},"abort_on_error":{"type":"boolean","title":"Abort On Error","description":"Abort on error if enabled. Boolean. Optional, defaults to false.","default":false},"do_table_structure":{"type":"boolean","title":"Do Table Structure","description":"If enabled, the table structure will be extracted. Boolean. Optional, defaults to true.","default":true,"examples":[true]},"include_images":{"type":"boolean","title":"Include Images","description":"If enabled, images will be extracted from the document. Boolean. Optional, defaults to true.","default":true,"examples":[true]},"images_scale":{"type":"number","title":"Images Scale","description":"Scale factor for images. Float. Optional, defaults to 2.0.","default":2.0,"examples":[2.0]},"md_page_break_placeholder":{"type":"string","title":"Md Page Break Placeholder","description":"Add this placeholder between pages in the markdown output.","default":"","examples":["",""]},"do_code_enrichment":{"type":"boolean","title":"Do Code Enrichment","description":"If enabled, perform OCR code enrichment. Boolean. Optional, defaults to false.","default":false,"examples":[false]},"do_formula_enrichment":{"type":"boolean","title":"Do Formula Enrichment","description":"If enabled, perform formula OCR, return LaTeX code. Boolean. Optional, defaults to false.","default":false,"examples":[false]},"do_picture_classification":{"type":"boolean","title":"Do Picture Classification","description":"If enabled, classify pictures in documents. Boolean. Optional, defaults to false.","default":false,"examples":[false]},"do_picture_description":{"type":"boolean","title":"Do Picture Description","description":"If enabled, describe pictures in documents. Boolean. Optional, defaults to false.","default":false,"examples":[false]},"picture_description_area_threshold":{"type":"number","title":"Picture Description Area Threshold","description":"Minimum percentage of the area for a picture to be processed with the models.","default":0.05,"examples":[0.05]},"picture_description_local":{"type":"string","title":"Picture Description Local","description":"Options for running a local vision-language model in the picture description. The parameters refer to a model hosted on Hugging Face. This parameter is mutually exclusive with picture_description_api.","examples":["{\"repo_id\": \"ibm-granite/granite-vision-3.2-2b\", \"prompt\": \"Describe this image in a few sentences.\", \"generation_config\": {\"max_new_tokens\": 200, \"do_sample\": false}}","{\"repo_id\": \"HuggingFaceTB/SmolVLM-256M-Instruct\", \"prompt\": \"Describe this image in a few sentences.\", \"generation_config\": {\"max_new_tokens\": 200, \"do_sample\": false}}"]},"picture_description_api":{"type":"string","title":"Picture Description Api","description":"API details for using a vision-language model in the picture description. This parameter is mutually exclusive with picture_description_local.","examples":["{\"url\": \"http://localhost:1234/v1/chat/completions\", \"headers\": {}, \"params\": {\"model\": \"granite3.2-vision:2b\"}, \"timeout\": 20.0, \"concurrency\": 1, \"prompt\": \"Describe this image in a few sentences.\"}","{\"url\": \"http://localhost:11434/v1/chat/completions\", \"headers\": {}, \"params\": {\"model\": \"granite3.2-vision:2b\"}, \"timeout\": 20.0, \"concurrency\": 1, \"prompt\": \"Describe this image in a few sentences.\"}"]},"vlm_pipeline_model":{"anyOf":[{"$ref":"#/components/schemas/VlmModelType"},{"type":"null"}],"description":"Preset of local and API models for the vlm pipeline. This parameter is mutually exclusive with vlm_pipeline_model_local and vlm_pipeline_model_api. Use the other options for more parameters.","examples":["granite_docling"]},"vlm_pipeline_model_local":{"type":"string","title":"Vlm Pipeline Model Local","description":"Options for running a local vision-language model for the vlm pipeline. The parameters refer to a model hosted on Hugging Face. This parameter is mutually exclusive with vlm_pipeline_model_api and vlm_pipeline_model.","examples":["{\"repo_id\": \"ibm-granite/granite-docling-258M\", \"prompt\": \"Convert this page to docling.\", \"scale\": 2.0, \"response_format\": \"doctags\", \"inference_framework\": \"transformers\", \"transformers_model_type\": \"automodel-imagetexttotext\", \"extra_generation_config\": {\"skip_special_tokens\": false}, \"temperature\": 0.0}","{\"repo_id\": \"ibm-granite/granite-docling-258M-mlx\", \"prompt\": \"Convert this page to docling.\", \"scale\": 2.0, \"response_format\": \"doctags\", \"inference_framework\": \"mlx\", \"transformers_model_type\": \"automodel\", \"extra_generation_config\": {}, \"temperature\": 0.0}","{\"repo_id\": \"ibm-granite/granite-vision-3.2-2b\", \"prompt\": \"Convert this page to markdown. Do not miss any text and only output the bare markdown!\", \"scale\": 2.0, \"response_format\": \"markdown\", \"inference_framework\": \"transformers\", \"transformers_model_type\": \"automodel-vision2seq\", \"extra_generation_config\": {}, \"temperature\": 0.0}"]},"vlm_pipeline_model_api":{"type":"string","title":"Vlm Pipeline Model Api","description":"API details for using a vision-language model for the vlm pipeline. This parameter is mutually exclusive with vlm_pipeline_model_local and vlm_pipeline_model.","examples":["{\"url\": \"http://localhost:1234/v1/chat/completions\", \"headers\": {}, \"params\": {\"model\": \"ibm-granite/granite-docling-258M-mlx\"}, \"timeout\": 60.0, \"concurrency\": 1, \"prompt\": \"Convert this page to docling.\", \"scale\": 2.0, \"response_format\": \"doctags\", \"temperature\": 0.0}"]}},"type":"object","required":["files"],"title":"Body_process_file_v1_convert_file_post"},"BoundingBox":{"properties":{"l":{"type":"number","title":"L"},"t":{"type":"number","title":"T"},"r":{"type":"number","title":"R"},"b":{"type":"number","title":"B"},"coord_origin":{"$ref":"#/components/schemas/CoordOrigin","default":"TOPLEFT"}},"type":"object","required":["l","t","r","b"],"title":"BoundingBox","description":"BoundingBox."},"ChartBar":{"properties":{"label":{"type":"string","title":"Label"},"values":{"type":"number","title":"Values"}},"type":"object","required":["label","values"],"title":"ChartBar","description":"Represents a bar in a bar chart.\n\nAttributes:\n label (str): The label for the bar.\n values (float): The value associated with the bar."},"ChartLine":{"properties":{"label":{"type":"string","title":"Label"},"values":{"items":{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},"type":"array","title":"Values"}},"type":"object","required":["label","values"],"title":"ChartLine","description":"Represents a line in a line chart.\n\nAttributes:\n label (str): The label for the line.\n values (List[Tuple[float, float]]): A list of (x, y) coordinate pairs\n representing the line's data points."},"ChartPoint":{"properties":{"value":{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2,"title":"Value"}},"type":"object","required":["value"],"title":"ChartPoint","description":"Represents a point in a scatter chart.\n\nAttributes:\n value (Tuple[float, float]): A (x, y) coordinate pair representing a point in a\n chart."},"ChartSlice":{"properties":{"label":{"type":"string","title":"Label"},"value":{"type":"number","title":"Value"}},"type":"object","required":["label","value"],"title":"ChartSlice","description":"Represents a slice in a pie chart.\n\nAttributes:\n label (str): The label for the slice.\n value (float): The value represented by the slice."},"ChartStackedBar":{"properties":{"label":{"items":{"type":"string"},"type":"array","title":"Label"},"values":{"items":{"prefixItems":[{"type":"string"},{"type":"integer"}],"type":"array","maxItems":2,"minItems":2},"type":"array","title":"Values"}},"type":"object","required":["label","values"],"title":"ChartStackedBar","description":"Represents a stacked bar in a stacked bar chart.\n\nAttributes:\n label (List[str]): The labels for the stacked bars. Multiple values are stored\n in cases where the chart is \"double stacked,\" meaning bars are stacked both\n horizontally and vertically.\n values (List[Tuple[str, int]]): A list of values representing different segments\n of the stacked bar along with their label."},"ChunkDocumentResponse":{"properties":{"chunks":{"items":{"$ref":"#/components/schemas/ChunkedDocumentResultItem"},"type":"array","title":"Chunks"},"documents":{"items":{"$ref":"#/components/schemas/ExportResult"},"type":"array","title":"Documents"},"processing_time":{"type":"number","title":"Processing Time"}},"type":"object","required":["chunks","documents","processing_time"],"title":"ChunkDocumentResponse"},"ChunkedDocumentResultItem":{"properties":{"filename":{"type":"string","title":"Filename"},"chunk_index":{"type":"integer","title":"Chunk Index"},"text":{"type":"string","title":"Text","description":"The chunk text with structural context (headers, formatting)"},"raw_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Raw Text","description":"Raw chunk text without additional formatting or context"},"num_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Tokens","description":"Number of tokens in the text, if the chunker is aware of tokens"},"headings":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Headings","description":"List of headings for this chunk"},"captions":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Captions","description":"List of captions for this chunk (e.g. for pictures and tables)"},"doc_items":{"items":{"type":"string"},"type":"array","title":"Doc Items","description":"List of doc items references"},"page_numbers":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Page Numbers","description":"Page numbers where this chunk content appears"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Additional metadata associated with this chunk"}},"type":"object","required":["filename","chunk_index","text","doc_items"],"title":"ChunkedDocumentResultItem","description":"A single chunk of a document with its metadata and content."},"ClearResponse":{"properties":{"status":{"type":"string","title":"Status","default":"ok"}},"type":"object","title":"ClearResponse"},"CodeItem":{"properties":{"self_ref":{"type":"string","pattern":"^#(?:/([\\w-]+)(?:/(\\d+))?)?$","title":"Self Ref"},"parent":{"anyOf":[{"$ref":"#/components/schemas/RefItem"},{"type":"null"}]},"children":{"items":{"$ref":"#/components/schemas/RefItem"},"type":"array","title":"Children","default":[]},"content_layer":{"$ref":"#/components/schemas/ContentLayer","default":"body"},"meta":{"anyOf":[{"$ref":"#/components/schemas/FloatingMeta"},{"type":"null"}]},"label":{"type":"string","const":"code","title":"Label","default":"code"},"prov":{"items":{"$ref":"#/components/schemas/ProvenanceItem"},"type":"array","title":"Prov","default":[]},"orig":{"type":"string","title":"Orig"},"text":{"type":"string","title":"Text"},"formatting":{"anyOf":[{"$ref":"#/components/schemas/Formatting"},{"type":"null"}]},"hyperlink":{"anyOf":[{"type":"string","minLength":1,"format":"uri"},{"type":"string","format":"path"},{"type":"null"}],"title":"Hyperlink"},"captions":{"items":{"$ref":"#/components/schemas/RefItem"},"type":"array","title":"Captions","default":[]},"references":{"items":{"$ref":"#/components/schemas/RefItem"},"type":"array","title":"References","default":[]},"footnotes":{"items":{"$ref":"#/components/schemas/RefItem"},"type":"array","title":"Footnotes","default":[]},"image":{"anyOf":[{"$ref":"#/components/schemas/ImageRef"},{"type":"null"}]},"code_language":{"$ref":"#/components/schemas/CodeLanguageLabel","default":"unknown"}},"additionalProperties":false,"type":"object","required":["self_ref","orig","text"],"title":"CodeItem","description":"CodeItem."},"CodeLanguageLabel":{"type":"string","enum":["Ada","Awk","Bash","bc","C","C#","C++","CMake","COBOL","CSS","Ceylon","Clojure","Crystal","Cuda","Cython","D","Dart","dc","Dockerfile","Elixir","Erlang","FORTRAN","Forth","Go","HTML","Haskell","Haxe","Java","JavaScript","JSON","Julia","Kotlin","Lisp","Lua","Matlab","MoonScript","Nim","OCaml","ObjectiveC","Octave","PHP","Pascal","Perl","Prolog","Python","Racket","Ruby","Rust","SML","SQL","Scala","Scheme","Swift","TypeScript","unknown","VisualBasic","XML","YAML"],"title":"CodeLanguageLabel","description":"CodeLanguageLabel."},"ContentLayer":{"type":"string","enum":["body","furniture","background","invisible","notes"],"title":"ContentLayer","description":"ContentLayer."},"ConversionStatus":{"type":"string","enum":["pending","started","failure","success","partial_success","skipped"],"title":"ConversionStatus"},"ConvertDocumentResponse":{"properties":{"document":{"$ref":"#/components/schemas/ExportDocumentResponse"},"status":{"$ref":"#/components/schemas/ConversionStatus"},"errors":{"items":{"$ref":"#/components/schemas/ErrorItem"},"type":"array","title":"Errors","default":[]},"processing_time":{"type":"number","title":"Processing Time"},"timings":{"additionalProperties":{"$ref":"#/components/schemas/ProfilingItem"},"type":"object","title":"Timings","default":{}}},"type":"object","required":["document","status","processing_time"],"title":"ConvertDocumentResponse"},"ConvertDocumentsRequest":{"properties":{"options":{"$ref":"#/components/schemas/ConvertDocumentsRequestOptions","default":{"from_formats":["docx","pptx","html","image","pdf","asciidoc","md","csv","xlsx","xml_uspto","xml_jats","mets_gbs","json_docling","audio","vtt"],"to_formats":["md"],"image_export_mode":"embedded","do_ocr":true,"force_ocr":false,"ocr_engine":"easyocr","pdf_backend":"dlparse_v4","table_mode":"accurate","table_cell_matching":true,"pipeline":"standard","page_range":[1,9223372036854775807],"document_timeout":604800.0,"abort_on_error":false,"do_table_structure":true,"include_images":true,"images_scale":2.0,"md_page_break_placeholder":"","do_code_enrichment":false,"do_formula_enrichment":false,"do_picture_classification":false,"do_picture_description":false,"picture_description_area_threshold":0.05}},"sources":{"items":{"oneOf":[{"$ref":"#/components/schemas/FileSourceRequest"},{"$ref":"#/components/schemas/HttpSourceRequest"},{"$ref":"#/components/schemas/S3SourceRequest"}],"discriminator":{"propertyName":"kind","mapping":{"file":"#/components/schemas/FileSourceRequest","http":"#/components/schemas/HttpSourceRequest","s3":"#/components/schemas/S3SourceRequest"}}},"type":"array","title":"Sources"},"target":{"oneOf":[{"$ref":"#/components/schemas/InBodyTarget"},{"$ref":"#/components/schemas/ZipTarget"},{"$ref":"#/components/schemas/S3Target"},{"$ref":"#/components/schemas/PutTarget"}],"title":"Target","default":{"kind":"inbody"},"discriminator":{"propertyName":"kind","mapping":{"inbody":"#/components/schemas/InBodyTarget","put":"#/components/schemas/PutTarget","s3":"#/components/schemas/S3Target","zip":"#/components/schemas/ZipTarget"}}}},"type":"object","required":["sources"],"title":"ConvertDocumentsRequest"},"ConvertDocumentsRequestOptions":{"properties":{"from_formats":{"items":{"$ref":"#/components/schemas/InputFormat"},"type":"array","title":"From Formats","description":"Input format(s) to convert from. String or list of strings. Allowed values: docx, pptx, html, image, pdf, asciidoc, md, csv, xlsx, xml_uspto, xml_jats, mets_gbs, json_docling, audio, vtt. Optional, defaults to all formats.","default":["docx","pptx","html","image","pdf","asciidoc","md","csv","xlsx","xml_uspto","xml_jats","mets_gbs","json_docling","audio","vtt"],"examples":[["docx","pptx","html","image","pdf","asciidoc","md","csv","xlsx","xml_uspto","xml_jats","mets_gbs","json_docling","audio","vtt"]]},"to_formats":{"items":{"$ref":"#/components/schemas/OutputFormat"},"type":"array","title":"To Formats","description":"Output format(s) to convert to. String or list of strings. Allowed values: md, json, html, html_split_page, text, doctags. Optional, defaults to Markdown.","default":["md"],"examples":[["md"],["md","json"],["md","json","html","html_split_page","text","doctags"]]},"image_export_mode":{"$ref":"#/components/schemas/ImageRefMode","description":"Image export mode for the document (in case of JSON, Markdown or HTML). Allowed values: placeholder, embedded, referenced. Optional, defaults to Embedded.","default":"embedded","examples":["embedded"]},"do_ocr":{"type":"boolean","title":"Do Ocr","description":"If enabled, the bitmap content will be processed using OCR. Boolean. Optional, defaults to true","default":true},"force_ocr":{"type":"boolean","title":"Force Ocr","description":"If enabled, replace existing text with OCR-generated text over content. Boolean. Optional, defaults to false.","default":false},"ocr_engine":{"$ref":"#/components/schemas/ocr_engines_enum","description":"The OCR engine to use. String. Allowed values: auto, easyocr, ocrmac, rapidocr, tesserocr, tesseract. Optional, defaults to easyocr.","default":"easyocr","examples":["easyocr"]},"ocr_lang":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Ocr Lang","description":"List of languages used by the OCR engine. Note that each OCR engine has different values for the language names. String or list of strings. Optional, defaults to empty.","examples":[["fr","de","es","en"]]},"pdf_backend":{"$ref":"#/components/schemas/PdfBackend","description":"The PDF backend to use. String. Allowed values: pypdfium2, dlparse_v1, dlparse_v2, dlparse_v4. Optional, defaults to dlparse_v4.","default":"dlparse_v4","examples":["dlparse_v4"]},"table_mode":{"$ref":"#/components/schemas/TableFormerMode","description":"Mode to use for table structure, String. Allowed values: fast, accurate. Optional, defaults to accurate.","default":"accurate","examples":["accurate"]},"table_cell_matching":{"type":"boolean","title":"Table Cell Matching","description":"If true, matches table cells predictions back to PDF cells. Can break table output if PDF cells are merged across table columns. If false, let table structure model define the text cells, ignore PDF cells.","default":true,"examples":[true]},"pipeline":{"$ref":"#/components/schemas/ProcessingPipeline","description":"Choose the pipeline to process PDF or image files.","default":"standard"},"page_range":{"title":"Page Range","description":"Only convert a range of pages. The page number starts at 1.","default":[1,9223372036854775807],"examples":[[1,9223372036854775807],[1,4]]},"document_timeout":{"type":"number","maximum":604800.0,"exclusiveMinimum":0.0,"title":"Document Timeout","description":"The timeout for processing each document, in seconds.","default":604800.0},"abort_on_error":{"type":"boolean","title":"Abort On Error","description":"Abort on error if enabled. Boolean. Optional, defaults to false.","default":false},"do_table_structure":{"type":"boolean","title":"Do Table Structure","description":"If enabled, the table structure will be extracted. Boolean. Optional, defaults to true.","default":true,"examples":[true]},"include_images":{"type":"boolean","title":"Include Images","description":"If enabled, images will be extracted from the document. Boolean. Optional, defaults to true.","default":true,"examples":[true]},"images_scale":{"type":"number","title":"Images Scale","description":"Scale factor for images. Float. Optional, defaults to 2.0.","default":2.0,"examples":[2.0]},"md_page_break_placeholder":{"type":"string","title":"Md Page Break Placeholder","description":"Add this placeholder between pages in the markdown output.","default":"","examples":["",""]},"do_code_enrichment":{"type":"boolean","title":"Do Code Enrichment","description":"If enabled, perform OCR code enrichment. Boolean. Optional, defaults to false.","default":false,"examples":[false]},"do_formula_enrichment":{"type":"boolean","title":"Do Formula Enrichment","description":"If enabled, perform formula OCR, return LaTeX code. Boolean. Optional, defaults to false.","default":false,"examples":[false]},"do_picture_classification":{"type":"boolean","title":"Do Picture Classification","description":"If enabled, classify pictures in documents. Boolean. Optional, defaults to false.","default":false,"examples":[false]},"do_picture_description":{"type":"boolean","title":"Do Picture Description","description":"If enabled, describe pictures in documents. Boolean. Optional, defaults to false.","default":false,"examples":[false]},"picture_description_area_threshold":{"type":"number","title":"Picture Description Area Threshold","description":"Minimum percentage of the area for a picture to be processed with the models.","default":0.05,"examples":[0.05]},"picture_description_local":{"anyOf":[{"$ref":"#/components/schemas/PictureDescriptionLocal"},{"type":"null"}],"description":"Options for running a local vision-language model in the picture description. The parameters refer to a model hosted on Hugging Face. This parameter is mutually exclusive with picture_description_api.","examples":[{"generation_config":{"do_sample":false,"max_new_tokens":200},"prompt":"Describe this image in a few sentences.","repo_id":"ibm-granite/granite-vision-3.2-2b"},{"generation_config":{"do_sample":false,"max_new_tokens":200},"prompt":"Describe this image in a few sentences.","repo_id":"HuggingFaceTB/SmolVLM-256M-Instruct"}]},"picture_description_api":{"anyOf":[{"$ref":"#/components/schemas/PictureDescriptionApi"},{"type":"null"}],"description":"API details for using a vision-language model in the picture description. This parameter is mutually exclusive with picture_description_local.","examples":[{"concurrency":1,"headers":{},"params":{"model":"granite3.2-vision:2b"},"prompt":"Describe this image in a few sentences.","timeout":20.0,"url":"http://localhost:1234/v1/chat/completions"},{"concurrency":1,"headers":{},"params":{"model":"granite3.2-vision:2b"},"prompt":"Describe this image in a few sentences.","timeout":20.0,"url":"http://localhost:11434/v1/chat/completions"}]},"vlm_pipeline_model":{"anyOf":[{"$ref":"#/components/schemas/VlmModelType"},{"type":"null"}],"description":"Preset of local and API models for the vlm pipeline. This parameter is mutually exclusive with vlm_pipeline_model_local and vlm_pipeline_model_api. Use the other options for more parameters.","examples":["granite_docling"]},"vlm_pipeline_model_local":{"anyOf":[{"$ref":"#/components/schemas/VlmModelLocal"},{"type":"null"}],"description":"Options for running a local vision-language model for the vlm pipeline. The parameters refer to a model hosted on Hugging Face. This parameter is mutually exclusive with vlm_pipeline_model_api and vlm_pipeline_model.","examples":[{"extra_generation_config":{"skip_special_tokens":false},"inference_framework":"transformers","prompt":"Convert this page to docling.","repo_id":"ibm-granite/granite-docling-258M","response_format":"doctags","scale":2.0,"temperature":0.0,"transformers_model_type":"automodel-imagetexttotext"},{"extra_generation_config":{},"inference_framework":"mlx","prompt":"Convert this page to docling.","repo_id":"ibm-granite/granite-docling-258M-mlx","response_format":"doctags","scale":2.0,"temperature":0.0,"transformers_model_type":"automodel"},{"extra_generation_config":{},"inference_framework":"transformers","prompt":"Convert this page to markdown. Do not miss any text and only output the bare markdown!","repo_id":"ibm-granite/granite-vision-3.2-2b","response_format":"markdown","scale":2.0,"temperature":0.0,"transformers_model_type":"automodel-vision2seq"}]},"vlm_pipeline_model_api":{"anyOf":[{"$ref":"#/components/schemas/VlmModelApi"},{"type":"null"}],"description":"API details for using a vision-language model for the vlm pipeline. This parameter is mutually exclusive with vlm_pipeline_model_local and vlm_pipeline_model.","examples":[{"concurrency":1,"headers":{},"params":{"model":"ibm-granite/granite-docling-258M-mlx"},"prompt":"Convert this page to docling.","response_format":"doctags","scale":2.0,"temperature":0.0,"timeout":60.0,"url":"http://localhost:1234/v1/chat/completions"}]}},"type":"object","title":"ConvertDocumentsRequestOptions"},"CoordOrigin":{"type":"string","enum":["TOPLEFT","BOTTOMLEFT"],"title":"CoordOrigin","description":"CoordOrigin."},"DescriptionAnnotation":{"properties":{"kind":{"type":"string","const":"description","title":"Kind","default":"description"},"text":{"type":"string","title":"Text"},"provenance":{"type":"string","title":"Provenance"}},"type":"object","required":["text","provenance"],"title":"DescriptionAnnotation","description":"DescriptionAnnotation."},"DescriptionMetaField":{"properties":{"confidence":{"type":"number","title":"Confidence","description":"The confidence of the prediction.","examples":[0.9,0.42]},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By","description":"The origin of the prediction.","examples":["ibm-granite/granite-docling-258M"]},"text":{"type":"string","title":"Text"}},"additionalProperties":true,"type":"object","required":["text"],"title":"DescriptionMetaField","description":"Description metadata field."},"DoclingComponentType":{"type":"string","enum":["document_backend","model","doc_assembler","user_input","pipeline"],"title":"DoclingComponentType"},"DoclingDocument":{"properties":{"schema_name":{"type":"string","const":"DoclingDocument","title":"Schema Name","default":"DoclingDocument"},"version":{"type":"string","pattern":"^(?P0|[1-9]\\d*)\\.(?P0|[1-9]\\d*)\\.(?P0|[1-9]\\d*)(?:-(?P(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+(?P[0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$","title":"Version","default":"1.8.0"},"name":{"type":"string","title":"Name"},"origin":{"anyOf":[{"$ref":"#/components/schemas/DocumentOrigin"},{"type":"null"}]},"furniture":{"$ref":"#/components/schemas/GroupItem","default":{"self_ref":"#/furniture","children":[],"content_layer":"furniture","name":"_root_","label":"unspecified"},"deprecated":true},"body":{"$ref":"#/components/schemas/GroupItem","default":{"self_ref":"#/body","children":[],"content_layer":"body","name":"_root_","label":"unspecified"}},"groups":{"items":{"anyOf":[{"$ref":"#/components/schemas/ListGroup"},{"$ref":"#/components/schemas/InlineGroup"},{"$ref":"#/components/schemas/GroupItem"}]},"type":"array","title":"Groups","default":[]},"texts":{"items":{"anyOf":[{"$ref":"#/components/schemas/TitleItem"},{"$ref":"#/components/schemas/SectionHeaderItem"},{"$ref":"#/components/schemas/ListItem"},{"$ref":"#/components/schemas/CodeItem"},{"$ref":"#/components/schemas/FormulaItem"},{"$ref":"#/components/schemas/TextItem"}]},"type":"array","title":"Texts","default":[]},"pictures":{"items":{"$ref":"#/components/schemas/PictureItem"},"type":"array","title":"Pictures","default":[]},"tables":{"items":{"$ref":"#/components/schemas/TableItem"},"type":"array","title":"Tables","default":[]},"key_value_items":{"items":{"$ref":"#/components/schemas/KeyValueItem"},"type":"array","title":"Key Value Items","default":[]},"form_items":{"items":{"$ref":"#/components/schemas/FormItem"},"type":"array","title":"Form Items","default":[]},"pages":{"additionalProperties":{"$ref":"#/components/schemas/PageItem"},"type":"object","title":"Pages","default":{}}},"type":"object","required":["name"],"title":"DoclingDocument","description":"DoclingDocument."},"DocumentOrigin":{"properties":{"mimetype":{"type":"string","title":"Mimetype"},"binary_hash":{"type":"integer","maximum":1.8446744073709552e+19,"minimum":0.0,"title":"Binary Hash"},"filename":{"type":"string","title":"Filename"},"uri":{"anyOf":[{"type":"string","minLength":1,"format":"uri"},{"type":"null"}],"title":"Uri"}},"type":"object","required":["mimetype","binary_hash","filename"],"title":"DocumentOrigin","description":"FileSource."},"ErrorItem":{"properties":{"component_type":{"$ref":"#/components/schemas/DoclingComponentType"},"module_name":{"type":"string","title":"Module Name"},"error_message":{"type":"string","title":"Error Message"}},"type":"object","required":["component_type","module_name","error_message"],"title":"ErrorItem"},"ExportDocumentResponse":{"properties":{"filename":{"type":"string","title":"Filename"},"md_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Md Content"},"json_content":{"anyOf":[{"$ref":"#/components/schemas/DoclingDocument"},{"type":"null"}]},"html_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Html Content"},"text_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text Content"},"doctags_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Doctags Content"}},"type":"object","required":["filename"],"title":"ExportDocumentResponse"},"ExportResult":{"properties":{"kind":{"type":"string","const":"ExportResult","title":"Kind","default":"ExportResult"},"content":{"$ref":"#/components/schemas/ExportDocumentResponse"},"status":{"$ref":"#/components/schemas/ConversionStatus"},"errors":{"items":{"$ref":"#/components/schemas/ErrorItem"},"type":"array","title":"Errors","default":[]},"timings":{"additionalProperties":{"$ref":"#/components/schemas/ProfilingItem"},"type":"object","title":"Timings","default":{}}},"type":"object","required":["content","status"],"title":"ExportResult","description":"Container of all exported content."},"FileSourceRequest":{"properties":{"base64_string":{"type":"string","title":"Base64 String","description":"Content of the file serialized in base64. For example it can be obtained via `base64 -w 0 /path/to/file/pdf-to-convert.pdf`."},"filename":{"type":"string","title":"Filename","description":"Filename of the uploaded document","examples":["file.pdf"]},"kind":{"type":"string","const":"file","title":"Kind","default":"file"}},"type":"object","required":["base64_string","filename"],"title":"FileSourceRequest"},"FloatingMeta":{"properties":{"summary":{"anyOf":[{"$ref":"#/components/schemas/SummaryMetaField"},{"type":"null"}]},"description":{"anyOf":[{"$ref":"#/components/schemas/DescriptionMetaField"},{"type":"null"}]}},"additionalProperties":true,"type":"object","title":"FloatingMeta","description":"Metadata model for floating."},"FormItem":{"properties":{"self_ref":{"type":"string","pattern":"^#(?:/([\\w-]+)(?:/(\\d+))?)?$","title":"Self Ref"},"parent":{"anyOf":[{"$ref":"#/components/schemas/RefItem"},{"type":"null"}]},"children":{"items":{"$ref":"#/components/schemas/RefItem"},"type":"array","title":"Children","default":[]},"content_layer":{"$ref":"#/components/schemas/ContentLayer","default":"body"},"meta":{"anyOf":[{"$ref":"#/components/schemas/FloatingMeta"},{"type":"null"}]},"label":{"type":"string","const":"form","title":"Label","default":"form"},"prov":{"items":{"$ref":"#/components/schemas/ProvenanceItem"},"type":"array","title":"Prov","default":[]},"captions":{"items":{"$ref":"#/components/schemas/RefItem"},"type":"array","title":"Captions","default":[]},"references":{"items":{"$ref":"#/components/schemas/RefItem"},"type":"array","title":"References","default":[]},"footnotes":{"items":{"$ref":"#/components/schemas/RefItem"},"type":"array","title":"Footnotes","default":[]},"image":{"anyOf":[{"$ref":"#/components/schemas/ImageRef"},{"type":"null"}]},"graph":{"$ref":"#/components/schemas/GraphData"}},"additionalProperties":false,"type":"object","required":["self_ref","graph"],"title":"FormItem","description":"FormItem."},"Formatting":{"properties":{"bold":{"type":"boolean","title":"Bold","default":false},"italic":{"type":"boolean","title":"Italic","default":false},"underline":{"type":"boolean","title":"Underline","default":false},"strikethrough":{"type":"boolean","title":"Strikethrough","default":false},"script":{"$ref":"#/components/schemas/Script","default":"baseline"}},"type":"object","title":"Formatting","description":"Formatting."},"FormulaItem":{"properties":{"self_ref":{"type":"string","pattern":"^#(?:/([\\w-]+)(?:/(\\d+))?)?$","title":"Self Ref"},"parent":{"anyOf":[{"$ref":"#/components/schemas/RefItem"},{"type":"null"}]},"children":{"items":{"$ref":"#/components/schemas/RefItem"},"type":"array","title":"Children","default":[]},"content_layer":{"$ref":"#/components/schemas/ContentLayer","default":"body"},"meta":{"anyOf":[{"$ref":"#/components/schemas/BaseMeta"},{"type":"null"}]},"label":{"type":"string","const":"formula","title":"Label","default":"formula"},"prov":{"items":{"$ref":"#/components/schemas/ProvenanceItem"},"type":"array","title":"Prov","default":[]},"orig":{"type":"string","title":"Orig"},"text":{"type":"string","title":"Text"},"formatting":{"anyOf":[{"$ref":"#/components/schemas/Formatting"},{"type":"null"}]},"hyperlink":{"anyOf":[{"type":"string","minLength":1,"format":"uri"},{"type":"string","format":"path"},{"type":"null"}],"title":"Hyperlink"}},"additionalProperties":false,"type":"object","required":["self_ref","orig","text"],"title":"FormulaItem","description":"FormulaItem."},"GraphCell":{"properties":{"label":{"$ref":"#/components/schemas/GraphCellLabel"},"cell_id":{"type":"integer","title":"Cell Id"},"text":{"type":"string","title":"Text"},"orig":{"type":"string","title":"Orig"},"prov":{"anyOf":[{"$ref":"#/components/schemas/ProvenanceItem"},{"type":"null"}]},"item_ref":{"anyOf":[{"$ref":"#/components/schemas/RefItem"},{"type":"null"}]}},"type":"object","required":["label","cell_id","text","orig"],"title":"GraphCell","description":"GraphCell."},"GraphCellLabel":{"type":"string","enum":["unspecified","key","value","checkbox"],"title":"GraphCellLabel","description":"GraphCellLabel."},"GraphData":{"properties":{"cells":{"items":{"$ref":"#/components/schemas/GraphCell"},"type":"array","title":"Cells"},"links":{"items":{"$ref":"#/components/schemas/GraphLink"},"type":"array","title":"Links"}},"type":"object","title":"GraphData","description":"GraphData."},"GraphLink":{"properties":{"label":{"$ref":"#/components/schemas/GraphLinkLabel"},"source_cell_id":{"type":"integer","title":"Source Cell Id"},"target_cell_id":{"type":"integer","title":"Target Cell Id"}},"type":"object","required":["label","source_cell_id","target_cell_id"],"title":"GraphLink","description":"GraphLink."},"GraphLinkLabel":{"type":"string","enum":["unspecified","to_value","to_key","to_parent","to_child"],"title":"GraphLinkLabel","description":"GraphLinkLabel."},"GroupItem":{"properties":{"self_ref":{"type":"string","pattern":"^#(?:/([\\w-]+)(?:/(\\d+))?)?$","title":"Self Ref"},"parent":{"anyOf":[{"$ref":"#/components/schemas/RefItem"},{"type":"null"}]},"children":{"items":{"$ref":"#/components/schemas/RefItem"},"type":"array","title":"Children","default":[]},"content_layer":{"$ref":"#/components/schemas/ContentLayer","default":"body"},"meta":{"anyOf":[{"$ref":"#/components/schemas/BaseMeta"},{"type":"null"}]},"name":{"type":"string","title":"Name","default":"group"},"label":{"$ref":"#/components/schemas/GroupLabel","default":"unspecified"}},"additionalProperties":false,"type":"object","required":["self_ref"],"title":"GroupItem","description":"GroupItem."},"GroupLabel":{"type":"string","enum":["unspecified","list","ordered_list","chapter","section","sheet","slide","form_area","key_value_area","comment_section","inline","picture_area"],"title":"GroupLabel","description":"GroupLabel."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthCheckResponse":{"properties":{"status":{"type":"string","title":"Status","default":"ok"}},"type":"object","title":"HealthCheckResponse"},"HierarchicalChunkerOptions":{"properties":{"chunker":{"type":"string","const":"hierarchical","title":"Chunker","default":"hierarchical"},"use_markdown_tables":{"type":"boolean","title":"Use Markdown Tables","description":"Use markdown table format instead of triplets for table serialization.","default":false},"include_raw_text":{"type":"boolean","title":"Include Raw Text","description":"Include both raw_text and text (contextualized) in response. If False, only text is included.","default":false}},"type":"object","title":"HierarchicalChunkerOptions","description":"Configuration options for the HierarchicalChunker."},"HierarchicalChunkerOptionsDocumentsRequest":{"properties":{"convert_options":{"$ref":"#/components/schemas/ConvertDocumentsRequestOptions","description":"Conversion options.","default":{"from_formats":["docx","pptx","html","image","pdf","asciidoc","md","csv","xlsx","xml_uspto","xml_jats","mets_gbs","json_docling","audio","vtt"],"to_formats":["md"],"image_export_mode":"embedded","do_ocr":true,"force_ocr":false,"ocr_engine":"easyocr","pdf_backend":"dlparse_v4","table_mode":"accurate","table_cell_matching":true,"pipeline":"standard","page_range":[1,9223372036854775807],"document_timeout":604800.0,"abort_on_error":false,"do_table_structure":true,"include_images":true,"images_scale":2.0,"md_page_break_placeholder":"","do_code_enrichment":false,"do_formula_enrichment":false,"do_picture_classification":false,"do_picture_description":false,"picture_description_area_threshold":0.05}},"sources":{"items":{"oneOf":[{"$ref":"#/components/schemas/FileSourceRequest"},{"$ref":"#/components/schemas/HttpSourceRequest"},{"$ref":"#/components/schemas/S3SourceRequest"}],"discriminator":{"propertyName":"kind","mapping":{"file":"#/components/schemas/FileSourceRequest","http":"#/components/schemas/HttpSourceRequest","s3":"#/components/schemas/S3SourceRequest"}}},"type":"array","title":"Sources","description":"List of input document sources to process."},"include_converted_doc":{"type":"boolean","title":"Include Converted Doc","description":"If true, the output will include both the chunks and the converted document.","default":false},"target":{"oneOf":[{"$ref":"#/components/schemas/InBodyTarget"},{"$ref":"#/components/schemas/ZipTarget"},{"$ref":"#/components/schemas/S3Target"},{"$ref":"#/components/schemas/PutTarget"}],"title":"Target","description":"Specification for the type of output target.","default":{"kind":"inbody"},"discriminator":{"propertyName":"kind","mapping":{"inbody":"#/components/schemas/InBodyTarget","put":"#/components/schemas/PutTarget","s3":"#/components/schemas/S3Target","zip":"#/components/schemas/ZipTarget"}}},"chunking_options":{"$ref":"#/components/schemas/HierarchicalChunkerOptions","description":"Options specific to the chunker."}},"type":"object","required":["sources"],"title":"HierarchicalChunkerOptionsDocumentsRequest"},"HttpSourceRequest":{"properties":{"url":{"type":"string","minLength":1,"format":"uri","title":"Url","description":"HTTP url to process","examples":["https://arxiv.org/pdf/2206.01062"]},"headers":{"additionalProperties":true,"type":"object","title":"Headers","description":"Additional headers used to fetch the urls, e.g. authorization, agent, etc","default":{}},"kind":{"type":"string","const":"http","title":"Kind","default":"http"}},"type":"object","required":["url"],"title":"HttpSourceRequest"},"HybridChunkerOptions":{"properties":{"chunker":{"type":"string","const":"hybrid","title":"Chunker","default":"hybrid"},"use_markdown_tables":{"type":"boolean","title":"Use Markdown Tables","description":"Use markdown table format instead of triplets for table serialization.","default":false},"include_raw_text":{"type":"boolean","title":"Include Raw Text","description":"Include both raw_text and text (contextualized) in response. If False, only text is included.","default":false},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens","description":"Maximum number of tokens per chunk. When left to none, the value is automatically extracted from the tokenizer."},"tokenizer":{"type":"string","title":"Tokenizer","description":"HuggingFace model name for custom tokenization. If not specified, uses 'sentence-transformers/all-MiniLM-L6-v2' as default.","default":"sentence-transformers/all-MiniLM-L6-v2","examples":["Qwen/Qwen3-Embedding-0.6B","sentence-transformers/all-MiniLM-L6-v2"]},"merge_peers":{"type":"boolean","title":"Merge Peers","description":"Merge undersized successive chunks with same headings.","default":true}},"type":"object","title":"HybridChunkerOptions","description":"Configuration options for the HybridChunker."},"HybridChunkerOptionsDocumentsRequest":{"properties":{"convert_options":{"$ref":"#/components/schemas/ConvertDocumentsRequestOptions","description":"Conversion options.","default":{"from_formats":["docx","pptx","html","image","pdf","asciidoc","md","csv","xlsx","xml_uspto","xml_jats","mets_gbs","json_docling","audio","vtt"],"to_formats":["md"],"image_export_mode":"embedded","do_ocr":true,"force_ocr":false,"ocr_engine":"easyocr","pdf_backend":"dlparse_v4","table_mode":"accurate","table_cell_matching":true,"pipeline":"standard","page_range":[1,9223372036854775807],"document_timeout":604800.0,"abort_on_error":false,"do_table_structure":true,"include_images":true,"images_scale":2.0,"md_page_break_placeholder":"","do_code_enrichment":false,"do_formula_enrichment":false,"do_picture_classification":false,"do_picture_description":false,"picture_description_area_threshold":0.05}},"sources":{"items":{"oneOf":[{"$ref":"#/components/schemas/FileSourceRequest"},{"$ref":"#/components/schemas/HttpSourceRequest"},{"$ref":"#/components/schemas/S3SourceRequest"}],"discriminator":{"propertyName":"kind","mapping":{"file":"#/components/schemas/FileSourceRequest","http":"#/components/schemas/HttpSourceRequest","s3":"#/components/schemas/S3SourceRequest"}}},"type":"array","title":"Sources","description":"List of input document sources to process."},"include_converted_doc":{"type":"boolean","title":"Include Converted Doc","description":"If true, the output will include both the chunks and the converted document.","default":false},"target":{"oneOf":[{"$ref":"#/components/schemas/InBodyTarget"},{"$ref":"#/components/schemas/ZipTarget"},{"$ref":"#/components/schemas/S3Target"},{"$ref":"#/components/schemas/PutTarget"}],"title":"Target","description":"Specification for the type of output target.","default":{"kind":"inbody"},"discriminator":{"propertyName":"kind","mapping":{"inbody":"#/components/schemas/InBodyTarget","put":"#/components/schemas/PutTarget","s3":"#/components/schemas/S3Target","zip":"#/components/schemas/ZipTarget"}}},"chunking_options":{"$ref":"#/components/schemas/HybridChunkerOptions","description":"Options specific to the chunker."}},"type":"object","required":["sources"],"title":"HybridChunkerOptionsDocumentsRequest"},"ImageRef":{"properties":{"mimetype":{"type":"string","title":"Mimetype"},"dpi":{"type":"integer","title":"Dpi"},"size":{"$ref":"#/components/schemas/Size"},"uri":{"anyOf":[{"type":"string","minLength":1,"format":"uri"},{"type":"string","format":"path"}],"title":"Uri"}},"type":"object","required":["mimetype","dpi","size","uri"],"title":"ImageRef","description":"ImageRef."},"ImageRefMode":{"type":"string","enum":["placeholder","embedded","referenced"],"title":"ImageRefMode","description":"ImageRefMode."},"InBodyTarget":{"properties":{"kind":{"type":"string","const":"inbody","title":"Kind","default":"inbody"}},"type":"object","title":"InBodyTarget"},"InferenceFramework":{"type":"string","enum":["mlx","transformers","vllm"],"title":"InferenceFramework"},"InlineGroup":{"properties":{"self_ref":{"type":"string","pattern":"^#(?:/([\\w-]+)(?:/(\\d+))?)?$","title":"Self Ref"},"parent":{"anyOf":[{"$ref":"#/components/schemas/RefItem"},{"type":"null"}]},"children":{"items":{"$ref":"#/components/schemas/RefItem"},"type":"array","title":"Children","default":[]},"content_layer":{"$ref":"#/components/schemas/ContentLayer","default":"body"},"meta":{"anyOf":[{"$ref":"#/components/schemas/BaseMeta"},{"type":"null"}]},"name":{"type":"string","title":"Name","default":"group"},"label":{"type":"string","const":"inline","title":"Label","default":"inline"}},"additionalProperties":false,"type":"object","required":["self_ref"],"title":"InlineGroup","description":"InlineGroup."},"InputFormat":{"type":"string","enum":["docx","pptx","html","image","pdf","asciidoc","md","csv","xlsx","xml_uspto","xml_jats","mets_gbs","json_docling","audio","vtt"],"title":"InputFormat","description":"A document format supported by document backend parsers."},"KeyValueItem":{"properties":{"self_ref":{"type":"string","pattern":"^#(?:/([\\w-]+)(?:/(\\d+))?)?$","title":"Self Ref"},"parent":{"anyOf":[{"$ref":"#/components/schemas/RefItem"},{"type":"null"}]},"children":{"items":{"$ref":"#/components/schemas/RefItem"},"type":"array","title":"Children","default":[]},"content_layer":{"$ref":"#/components/schemas/ContentLayer","default":"body"},"meta":{"anyOf":[{"$ref":"#/components/schemas/FloatingMeta"},{"type":"null"}]},"label":{"type":"string","const":"key_value_region","title":"Label","default":"key_value_region"},"prov":{"items":{"$ref":"#/components/schemas/ProvenanceItem"},"type":"array","title":"Prov","default":[]},"captions":{"items":{"$ref":"#/components/schemas/RefItem"},"type":"array","title":"Captions","default":[]},"references":{"items":{"$ref":"#/components/schemas/RefItem"},"type":"array","title":"References","default":[]},"footnotes":{"items":{"$ref":"#/components/schemas/RefItem"},"type":"array","title":"Footnotes","default":[]},"image":{"anyOf":[{"$ref":"#/components/schemas/ImageRef"},{"type":"null"}]},"graph":{"$ref":"#/components/schemas/GraphData"}},"additionalProperties":false,"type":"object","required":["self_ref","graph"],"title":"KeyValueItem","description":"KeyValueItem."},"ListGroup":{"properties":{"self_ref":{"type":"string","pattern":"^#(?:/([\\w-]+)(?:/(\\d+))?)?$","title":"Self Ref"},"parent":{"anyOf":[{"$ref":"#/components/schemas/RefItem"},{"type":"null"}]},"children":{"items":{"$ref":"#/components/schemas/RefItem"},"type":"array","title":"Children","default":[]},"content_layer":{"$ref":"#/components/schemas/ContentLayer","default":"body"},"meta":{"anyOf":[{"$ref":"#/components/schemas/BaseMeta"},{"type":"null"}]},"name":{"type":"string","title":"Name","default":"group"},"label":{"type":"string","const":"list","title":"Label","default":"list"}},"additionalProperties":false,"type":"object","required":["self_ref"],"title":"ListGroup","description":"ListGroup."},"ListItem":{"properties":{"self_ref":{"type":"string","pattern":"^#(?:/([\\w-]+)(?:/(\\d+))?)?$","title":"Self Ref"},"parent":{"anyOf":[{"$ref":"#/components/schemas/RefItem"},{"type":"null"}]},"children":{"items":{"$ref":"#/components/schemas/RefItem"},"type":"array","title":"Children","default":[]},"content_layer":{"$ref":"#/components/schemas/ContentLayer","default":"body"},"meta":{"anyOf":[{"$ref":"#/components/schemas/BaseMeta"},{"type":"null"}]},"label":{"type":"string","const":"list_item","title":"Label","default":"list_item"},"prov":{"items":{"$ref":"#/components/schemas/ProvenanceItem"},"type":"array","title":"Prov","default":[]},"orig":{"type":"string","title":"Orig"},"text":{"type":"string","title":"Text"},"formatting":{"anyOf":[{"$ref":"#/components/schemas/Formatting"},{"type":"null"}]},"hyperlink":{"anyOf":[{"type":"string","minLength":1,"format":"uri"},{"type":"string","format":"path"},{"type":"null"}],"title":"Hyperlink"},"enumerated":{"type":"boolean","title":"Enumerated","default":false},"marker":{"type":"string","title":"Marker","default":"-"}},"additionalProperties":false,"type":"object","required":["self_ref","orig","text"],"title":"ListItem","description":"SectionItem."},"MiscAnnotation":{"properties":{"kind":{"type":"string","const":"misc","title":"Kind","default":"misc"},"content":{"additionalProperties":true,"type":"object","title":"Content"}},"type":"object","required":["content"],"title":"MiscAnnotation","description":"MiscAnnotation."},"MoleculeMetaField":{"properties":{"confidence":{"type":"number","title":"Confidence","description":"The confidence of the prediction.","examples":[0.9,0.42]},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By","description":"The origin of the prediction.","examples":["ibm-granite/granite-docling-258M"]},"smi":{"type":"string","title":"Smi","description":"The SMILES representation of the molecule."}},"additionalProperties":true,"type":"object","required":["smi"],"title":"MoleculeMetaField","description":"Molecule metadata field."},"OutputFormat":{"type":"string","enum":["md","json","html","html_split_page","text","doctags"],"title":"OutputFormat"},"PageItem":{"properties":{"size":{"$ref":"#/components/schemas/Size"},"image":{"anyOf":[{"$ref":"#/components/schemas/ImageRef"},{"type":"null"}]},"page_no":{"type":"integer","title":"Page No"}},"type":"object","required":["size","page_no"],"title":"PageItem","description":"PageItem."},"PdfBackend":{"type":"string","enum":["pypdfium2","dlparse_v1","dlparse_v2","dlparse_v4"],"title":"PdfBackend","description":"Enum of valid PDF backends."},"PictureBarChartData":{"properties":{"kind":{"type":"string","const":"bar_chart_data","title":"Kind","default":"bar_chart_data"},"title":{"type":"string","title":"Title"},"x_axis_label":{"type":"string","title":"X Axis Label"},"y_axis_label":{"type":"string","title":"Y Axis Label"},"bars":{"items":{"$ref":"#/components/schemas/ChartBar"},"type":"array","title":"Bars"}},"type":"object","required":["title","x_axis_label","y_axis_label","bars"],"title":"PictureBarChartData","description":"Represents data of a bar chart.\n\nAttributes:\n kind (Literal[\"bar_chart_data\"]): The type of the chart.\n x_axis_label (str): The label for the x-axis.\n y_axis_label (str): The label for the y-axis.\n bars (List[ChartBar]): A list of bars in the chart."},"PictureClassificationClass":{"properties":{"class_name":{"type":"string","title":"Class Name"},"confidence":{"type":"number","title":"Confidence"}},"type":"object","required":["class_name","confidence"],"title":"PictureClassificationClass","description":"PictureClassificationData."},"PictureClassificationData":{"properties":{"kind":{"type":"string","const":"classification","title":"Kind","default":"classification"},"provenance":{"type":"string","title":"Provenance"},"predicted_classes":{"items":{"$ref":"#/components/schemas/PictureClassificationClass"},"type":"array","title":"Predicted Classes"}},"type":"object","required":["provenance","predicted_classes"],"title":"PictureClassificationData","description":"PictureClassificationData."},"PictureClassificationMetaField":{"properties":{"predictions":{"items":{"$ref":"#/components/schemas/PictureClassificationPrediction"},"type":"array","minItems":1,"title":"Predictions"}},"additionalProperties":true,"type":"object","title":"PictureClassificationMetaField","description":"Picture classification metadata field."},"PictureClassificationPrediction":{"properties":{"confidence":{"type":"number","title":"Confidence","description":"The confidence of the prediction.","examples":[0.9,0.42]},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By","description":"The origin of the prediction.","examples":["ibm-granite/granite-docling-258M"]},"class_name":{"type":"string","title":"Class Name"}},"additionalProperties":true,"type":"object","required":["class_name"],"title":"PictureClassificationPrediction","description":"Picture classification instance."},"PictureDescriptionApi":{"properties":{"url":{"type":"string","minLength":1,"format":"uri","title":"Url","description":"Endpoint which accepts openai-api compatible requests.","examples":["http://localhost:8000/v1/chat/completions","http://localhost:1234/v1/chat/completions","http://localhost:11434/v1/chat/completions"]},"headers":{"additionalProperties":{"type":"string"},"type":"object","title":"Headers","description":"Headers used for calling the API endpoint. For example, it could include authentication headers.","default":{}},"params":{"additionalProperties":true,"type":"object","title":"Params","description":"Model parameters.","default":{},"examples":[{"max_completion_tokens":200,"model":"HuggingFaceTB/SmolVLM-256M-Instruct"},{"max_completion_tokens":200,"model":"ibm-granite/granite-vision-3.3-2b"},{"model":"granite3.2-vision:2b"}]},"timeout":{"type":"number","title":"Timeout","description":"Timeout for the API request.","default":20},"concurrency":{"type":"integer","exclusiveMinimum":0.0,"title":"Concurrency","description":"Maximum number of concurrent requests to the API.","default":1,"examples":[1]},"prompt":{"type":"string","title":"Prompt","description":"Prompt used when calling the vision-language model.","default":"Describe this image in a few sentences.","examples":["Describe this image in a few sentences.","This is a figures from a document. Provide a detailed description of it."]}},"type":"object","required":["url"],"title":"PictureDescriptionApi"},"PictureDescriptionLocal":{"properties":{"repo_id":{"type":"string","title":"Repo Id","description":"Repository id from the Hugging Face Hub.","examples":["HuggingFaceTB/SmolVLM-256M-Instruct","ibm-granite/granite-vision-3.3-2b"]},"prompt":{"type":"string","title":"Prompt","description":"Prompt used when calling the vision-language model.","default":"Describe this image in a few sentences.","examples":["Describe this image in a few sentences.","This is a figure from a document. Provide a detailed description of it."]},"generation_config":{"additionalProperties":true,"type":"object","title":"Generation Config","description":"Config from https://huggingface.co/docs/transformers/en/main_classes/text_generation#transformers.GenerationConfig","default":{"max_new_tokens":200,"do_sample":false},"examples":[{"do_sample":false,"max_new_tokens":200}]}},"type":"object","required":["repo_id"],"title":"PictureDescriptionLocal"},"PictureItem":{"properties":{"self_ref":{"type":"string","pattern":"^#(?:/([\\w-]+)(?:/(\\d+))?)?$","title":"Self Ref"},"parent":{"anyOf":[{"$ref":"#/components/schemas/RefItem"},{"type":"null"}]},"children":{"items":{"$ref":"#/components/schemas/RefItem"},"type":"array","title":"Children","default":[]},"content_layer":{"$ref":"#/components/schemas/ContentLayer","default":"body"},"meta":{"anyOf":[{"$ref":"#/components/schemas/PictureMeta"},{"type":"null"}]},"label":{"type":"string","enum":["picture","chart"],"title":"Label","default":"picture"},"prov":{"items":{"$ref":"#/components/schemas/ProvenanceItem"},"type":"array","title":"Prov","default":[]},"captions":{"items":{"$ref":"#/components/schemas/RefItem"},"type":"array","title":"Captions","default":[]},"references":{"items":{"$ref":"#/components/schemas/RefItem"},"type":"array","title":"References","default":[]},"footnotes":{"items":{"$ref":"#/components/schemas/RefItem"},"type":"array","title":"Footnotes","default":[]},"image":{"anyOf":[{"$ref":"#/components/schemas/ImageRef"},{"type":"null"}]},"annotations":{"items":{"oneOf":[{"$ref":"#/components/schemas/DescriptionAnnotation"},{"$ref":"#/components/schemas/MiscAnnotation"},{"$ref":"#/components/schemas/PictureClassificationData"},{"$ref":"#/components/schemas/PictureMoleculeData"},{"$ref":"#/components/schemas/PictureTabularChartData"},{"$ref":"#/components/schemas/PictureLineChartData"},{"$ref":"#/components/schemas/PictureBarChartData"},{"$ref":"#/components/schemas/PictureStackedBarChartData"},{"$ref":"#/components/schemas/PicturePieChartData"},{"$ref":"#/components/schemas/PictureScatterChartData"}],"discriminator":{"propertyName":"kind","mapping":{"bar_chart_data":"#/components/schemas/PictureBarChartData","classification":"#/components/schemas/PictureClassificationData","description":"#/components/schemas/DescriptionAnnotation","line_chart_data":"#/components/schemas/PictureLineChartData","misc":"#/components/schemas/MiscAnnotation","molecule_data":"#/components/schemas/PictureMoleculeData","pie_chart_data":"#/components/schemas/PicturePieChartData","scatter_chart_data":"#/components/schemas/PictureScatterChartData","stacked_bar_chart_data":"#/components/schemas/PictureStackedBarChartData","tabular_chart_data":"#/components/schemas/PictureTabularChartData"}}},"type":"array","title":"Annotations","default":[],"deprecated":true}},"additionalProperties":false,"type":"object","required":["self_ref"],"title":"PictureItem","description":"PictureItem."},"PictureLineChartData":{"properties":{"kind":{"type":"string","const":"line_chart_data","title":"Kind","default":"line_chart_data"},"title":{"type":"string","title":"Title"},"x_axis_label":{"type":"string","title":"X Axis Label"},"y_axis_label":{"type":"string","title":"Y Axis Label"},"lines":{"items":{"$ref":"#/components/schemas/ChartLine"},"type":"array","title":"Lines"}},"type":"object","required":["title","x_axis_label","y_axis_label","lines"],"title":"PictureLineChartData","description":"Represents data of a line chart.\n\nAttributes:\n kind (Literal[\"line_chart_data\"]): The type of the chart.\n x_axis_label (str): The label for the x-axis.\n y_axis_label (str): The label for the y-axis.\n lines (List[ChartLine]): A list of lines in the chart."},"PictureMeta":{"properties":{"summary":{"anyOf":[{"$ref":"#/components/schemas/SummaryMetaField"},{"type":"null"}]},"description":{"anyOf":[{"$ref":"#/components/schemas/DescriptionMetaField"},{"type":"null"}]},"classification":{"anyOf":[{"$ref":"#/components/schemas/PictureClassificationMetaField"},{"type":"null"}]},"molecule":{"anyOf":[{"$ref":"#/components/schemas/MoleculeMetaField"},{"type":"null"}]},"tabular_chart":{"anyOf":[{"$ref":"#/components/schemas/TabularChartMetaField"},{"type":"null"}]}},"additionalProperties":true,"type":"object","title":"PictureMeta","description":"Metadata model for pictures."},"PictureMoleculeData":{"properties":{"kind":{"type":"string","const":"molecule_data","title":"Kind","default":"molecule_data"},"smi":{"type":"string","title":"Smi"},"confidence":{"type":"number","title":"Confidence"},"class_name":{"type":"string","title":"Class Name"},"segmentation":{"items":{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},"type":"array","title":"Segmentation"},"provenance":{"type":"string","title":"Provenance"}},"type":"object","required":["smi","confidence","class_name","segmentation","provenance"],"title":"PictureMoleculeData","description":"PictureMoleculeData."},"PicturePieChartData":{"properties":{"kind":{"type":"string","const":"pie_chart_data","title":"Kind","default":"pie_chart_data"},"title":{"type":"string","title":"Title"},"slices":{"items":{"$ref":"#/components/schemas/ChartSlice"},"type":"array","title":"Slices"}},"type":"object","required":["title","slices"],"title":"PicturePieChartData","description":"Represents data of a pie chart.\n\nAttributes:\n kind (Literal[\"pie_chart_data\"]): The type of the chart.\n slices (List[ChartSlice]): A list of slices in the pie chart."},"PictureScatterChartData":{"properties":{"kind":{"type":"string","const":"scatter_chart_data","title":"Kind","default":"scatter_chart_data"},"title":{"type":"string","title":"Title"},"x_axis_label":{"type":"string","title":"X Axis Label"},"y_axis_label":{"type":"string","title":"Y Axis Label"},"points":{"items":{"$ref":"#/components/schemas/ChartPoint"},"type":"array","title":"Points"}},"type":"object","required":["title","x_axis_label","y_axis_label","points"],"title":"PictureScatterChartData","description":"Represents data of a scatter chart.\n\nAttributes:\n kind (Literal[\"scatter_chart_data\"]): The type of the chart.\n x_axis_label (str): The label for the x-axis.\n y_axis_label (str): The label for the y-axis.\n points (List[ChartPoint]): A list of points in the scatter chart."},"PictureStackedBarChartData":{"properties":{"kind":{"type":"string","const":"stacked_bar_chart_data","title":"Kind","default":"stacked_bar_chart_data"},"title":{"type":"string","title":"Title"},"x_axis_label":{"type":"string","title":"X Axis Label"},"y_axis_label":{"type":"string","title":"Y Axis Label"},"stacked_bars":{"items":{"$ref":"#/components/schemas/ChartStackedBar"},"type":"array","title":"Stacked Bars"}},"type":"object","required":["title","x_axis_label","y_axis_label","stacked_bars"],"title":"PictureStackedBarChartData","description":"Represents data of a stacked bar chart.\n\nAttributes:\n kind (Literal[\"stacked_bar_chart_data\"]): The type of the chart.\n x_axis_label (str): The label for the x-axis.\n y_axis_label (str): The label for the y-axis.\n stacked_bars (List[ChartStackedBar]): A list of stacked bars in the chart."},"PictureTabularChartData":{"properties":{"kind":{"type":"string","const":"tabular_chart_data","title":"Kind","default":"tabular_chart_data"},"title":{"type":"string","title":"Title"},"chart_data":{"$ref":"#/components/schemas/TableData"}},"type":"object","required":["title","chart_data"],"title":"PictureTabularChartData","description":"Base class for picture chart data.\n\nAttributes:\n title (str): The title of the chart.\n chart_data (TableData): Chart data in the table format."},"PresignedUrlConvertDocumentResponse":{"properties":{"processing_time":{"type":"number","title":"Processing Time"},"num_converted":{"type":"integer","title":"Num Converted"},"num_succeeded":{"type":"integer","title":"Num Succeeded"},"num_failed":{"type":"integer","title":"Num Failed"}},"type":"object","required":["processing_time","num_converted","num_succeeded","num_failed"],"title":"PresignedUrlConvertDocumentResponse"},"ProcessingPipeline":{"type":"string","enum":["legacy","standard","vlm","asr"],"title":"ProcessingPipeline"},"ProfilingItem":{"properties":{"scope":{"$ref":"#/components/schemas/ProfilingScope"},"count":{"type":"integer","title":"Count","default":0},"times":{"items":{"type":"number"},"type":"array","title":"Times","default":[]},"start_timestamps":{"items":{"type":"string","format":"date-time"},"type":"array","title":"Start Timestamps","default":[]}},"type":"object","required":["scope"],"title":"ProfilingItem"},"ProfilingScope":{"type":"string","enum":["page","document"],"title":"ProfilingScope"},"ProvenanceItem":{"properties":{"page_no":{"type":"integer","title":"Page No"},"bbox":{"$ref":"#/components/schemas/BoundingBox"},"charspan":{"prefixItems":[{"type":"integer"},{"type":"integer"}],"type":"array","maxItems":2,"minItems":2,"title":"Charspan"}},"type":"object","required":["page_no","bbox","charspan"],"title":"ProvenanceItem","description":"ProvenanceItem."},"PutTarget":{"properties":{"kind":{"type":"string","const":"put","title":"Kind","default":"put"},"url":{"type":"string","minLength":1,"format":"uri","title":"Url"}},"type":"object","required":["url"],"title":"PutTarget"},"RefItem":{"properties":{"$ref":{"type":"string","pattern":"^#(?:/([\\w-]+)(?:/(\\d+))?)?$","title":"$Ref"}},"type":"object","required":["$ref"],"title":"RefItem","description":"RefItem."},"ResponseFormat":{"type":"string","enum":["doctags","markdown","html","otsl","plaintext"],"title":"ResponseFormat"},"RichTableCell":{"properties":{"bbox":{"anyOf":[{"$ref":"#/components/schemas/BoundingBox"},{"type":"null"}]},"row_span":{"type":"integer","title":"Row Span","default":1},"col_span":{"type":"integer","title":"Col Span","default":1},"start_row_offset_idx":{"type":"integer","title":"Start Row Offset Idx"},"end_row_offset_idx":{"type":"integer","title":"End Row Offset Idx"},"start_col_offset_idx":{"type":"integer","title":"Start Col Offset Idx"},"end_col_offset_idx":{"type":"integer","title":"End Col Offset Idx"},"text":{"type":"string","title":"Text"},"column_header":{"type":"boolean","title":"Column Header","default":false},"row_header":{"type":"boolean","title":"Row Header","default":false},"row_section":{"type":"boolean","title":"Row Section","default":false},"fillable":{"type":"boolean","title":"Fillable","default":false},"ref":{"$ref":"#/components/schemas/RefItem"}},"type":"object","required":["start_row_offset_idx","end_row_offset_idx","start_col_offset_idx","end_col_offset_idx","text","ref"],"title":"RichTableCell","description":"RichTableCell."},"S3SourceRequest":{"properties":{"endpoint":{"type":"string","title":"Endpoint","description":"S3 service endpoint, without protocol. Required.","examples":["s3.eu-de.cloud-object-storage.appdomain.cloud","s3.us-east-2.amazonaws.com "]},"verify_ssl":{"type":"boolean","title":"Verify Ssl","description":"If enabled, SSL will be used to connect to s3. Boolean. Optional, defaults to true","default":true},"access_key":{"type":"string","format":"password","title":"Access Key","description":"S3 access key. Required.","writeOnly":true},"secret_key":{"type":"string","format":"password","title":"Secret Key","description":"S3 secret key. Required.","writeOnly":true},"bucket":{"type":"string","title":"Bucket","description":"S3 bucket name. Required."},"key_prefix":{"type":"string","title":"Key Prefix","description":"Prefix for the object keys on s3. Optional, defaults to empty.","default":""},"kind":{"type":"string","const":"s3","title":"Kind","default":"s3"}},"type":"object","required":["endpoint","access_key","secret_key","bucket"],"title":"S3SourceRequest"},"S3Target":{"properties":{"endpoint":{"type":"string","title":"Endpoint","description":"S3 service endpoint, without protocol. Required.","examples":["s3.eu-de.cloud-object-storage.appdomain.cloud","s3.us-east-2.amazonaws.com "]},"verify_ssl":{"type":"boolean","title":"Verify Ssl","description":"If enabled, SSL will be used to connect to s3. Boolean. Optional, defaults to true","default":true},"access_key":{"type":"string","format":"password","title":"Access Key","description":"S3 access key. Required.","writeOnly":true},"secret_key":{"type":"string","format":"password","title":"Secret Key","description":"S3 secret key. Required.","writeOnly":true},"bucket":{"type":"string","title":"Bucket","description":"S3 bucket name. Required."},"key_prefix":{"type":"string","title":"Key Prefix","description":"Prefix for the object keys on s3. Optional, defaults to empty.","default":""},"kind":{"type":"string","const":"s3","title":"Kind","default":"s3"}},"type":"object","required":["endpoint","access_key","secret_key","bucket"],"title":"S3Target"},"Script":{"type":"string","enum":["baseline","sub","super"],"title":"Script","description":"Text script position."},"SectionHeaderItem":{"properties":{"self_ref":{"type":"string","pattern":"^#(?:/([\\w-]+)(?:/(\\d+))?)?$","title":"Self Ref"},"parent":{"anyOf":[{"$ref":"#/components/schemas/RefItem"},{"type":"null"}]},"children":{"items":{"$ref":"#/components/schemas/RefItem"},"type":"array","title":"Children","default":[]},"content_layer":{"$ref":"#/components/schemas/ContentLayer","default":"body"},"meta":{"anyOf":[{"$ref":"#/components/schemas/BaseMeta"},{"type":"null"}]},"label":{"type":"string","const":"section_header","title":"Label","default":"section_header"},"prov":{"items":{"$ref":"#/components/schemas/ProvenanceItem"},"type":"array","title":"Prov","default":[]},"orig":{"type":"string","title":"Orig"},"text":{"type":"string","title":"Text"},"formatting":{"anyOf":[{"$ref":"#/components/schemas/Formatting"},{"type":"null"}]},"hyperlink":{"anyOf":[{"type":"string","minLength":1,"format":"uri"},{"type":"string","format":"path"},{"type":"null"}],"title":"Hyperlink"},"level":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Level","default":1}},"additionalProperties":false,"type":"object","required":["self_ref","orig","text"],"title":"SectionHeaderItem","description":"SectionItem."},"Size":{"properties":{"width":{"type":"number","title":"Width"},"height":{"type":"number","title":"Height"}},"type":"object","title":"Size","description":"Size."},"SummaryMetaField":{"properties":{"confidence":{"type":"number","title":"Confidence","description":"The confidence of the prediction.","examples":[0.9,0.42]},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By","description":"The origin of the prediction.","examples":["ibm-granite/granite-docling-258M"]},"text":{"type":"string","title":"Text"}},"additionalProperties":true,"type":"object","required":["text"],"title":"SummaryMetaField","description":"Summary data."},"TableCell":{"properties":{"bbox":{"anyOf":[{"$ref":"#/components/schemas/BoundingBox"},{"type":"null"}]},"row_span":{"type":"integer","title":"Row Span","default":1},"col_span":{"type":"integer","title":"Col Span","default":1},"start_row_offset_idx":{"type":"integer","title":"Start Row Offset Idx"},"end_row_offset_idx":{"type":"integer","title":"End Row Offset Idx"},"start_col_offset_idx":{"type":"integer","title":"Start Col Offset Idx"},"end_col_offset_idx":{"type":"integer","title":"End Col Offset Idx"},"text":{"type":"string","title":"Text"},"column_header":{"type":"boolean","title":"Column Header","default":false},"row_header":{"type":"boolean","title":"Row Header","default":false},"row_section":{"type":"boolean","title":"Row Section","default":false},"fillable":{"type":"boolean","title":"Fillable","default":false}},"type":"object","required":["start_row_offset_idx","end_row_offset_idx","start_col_offset_idx","end_col_offset_idx","text"],"title":"TableCell","description":"TableCell."},"TableData":{"properties":{"table_cells":{"items":{"anyOf":[{"$ref":"#/components/schemas/RichTableCell"},{"$ref":"#/components/schemas/TableCell"}]},"type":"array","title":"Table Cells","default":[]},"num_rows":{"type":"integer","title":"Num Rows","default":0},"num_cols":{"type":"integer","title":"Num Cols","default":0},"grid":{"items":{"items":{"$ref":"#/components/schemas/TableCell"},"type":"array"},"type":"array","title":"Grid","description":"grid.","readOnly":true}},"type":"object","required":["grid"],"title":"TableData","description":"BaseTableData."},"TableFormerMode":{"type":"string","enum":["fast","accurate"],"title":"TableFormerMode","description":"Modes for the TableFormer model."},"TableItem":{"properties":{"self_ref":{"type":"string","pattern":"^#(?:/([\\w-]+)(?:/(\\d+))?)?$","title":"Self Ref"},"parent":{"anyOf":[{"$ref":"#/components/schemas/RefItem"},{"type":"null"}]},"children":{"items":{"$ref":"#/components/schemas/RefItem"},"type":"array","title":"Children","default":[]},"content_layer":{"$ref":"#/components/schemas/ContentLayer","default":"body"},"meta":{"anyOf":[{"$ref":"#/components/schemas/FloatingMeta"},{"type":"null"}]},"label":{"type":"string","enum":["document_index","table"],"title":"Label","default":"table"},"prov":{"items":{"$ref":"#/components/schemas/ProvenanceItem"},"type":"array","title":"Prov","default":[]},"captions":{"items":{"$ref":"#/components/schemas/RefItem"},"type":"array","title":"Captions","default":[]},"references":{"items":{"$ref":"#/components/schemas/RefItem"},"type":"array","title":"References","default":[]},"footnotes":{"items":{"$ref":"#/components/schemas/RefItem"},"type":"array","title":"Footnotes","default":[]},"image":{"anyOf":[{"$ref":"#/components/schemas/ImageRef"},{"type":"null"}]},"data":{"$ref":"#/components/schemas/TableData"},"annotations":{"items":{"oneOf":[{"$ref":"#/components/schemas/DescriptionAnnotation"},{"$ref":"#/components/schemas/MiscAnnotation"}],"discriminator":{"propertyName":"kind","mapping":{"description":"#/components/schemas/DescriptionAnnotation","misc":"#/components/schemas/MiscAnnotation"}}},"type":"array","title":"Annotations","default":[],"deprecated":true}},"additionalProperties":false,"type":"object","required":["self_ref","data"],"title":"TableItem","description":"TableItem."},"TabularChartMetaField":{"properties":{"confidence":{"type":"number","title":"Confidence","description":"The confidence of the prediction.","examples":[0.9,0.42]},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By","description":"The origin of the prediction.","examples":["ibm-granite/granite-docling-258M"]},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"chart_data":{"$ref":"#/components/schemas/TableData"}},"additionalProperties":true,"type":"object","required":["chart_data"],"title":"TabularChartMetaField","description":"Tabular chart metadata field."},"TargetName":{"type":"string","enum":["inbody","zip"],"title":"TargetName"},"TaskProcessingMeta":{"properties":{"num_docs":{"type":"integer","title":"Num Docs"},"num_processed":{"type":"integer","title":"Num Processed","default":0},"num_succeeded":{"type":"integer","title":"Num Succeeded","default":0},"num_failed":{"type":"integer","title":"Num Failed","default":0}},"type":"object","required":["num_docs"],"title":"TaskProcessingMeta"},"TaskStatusResponse":{"properties":{"task_id":{"type":"string","title":"Task Id"},"task_type":{"$ref":"#/components/schemas/TaskType"},"task_status":{"type":"string","title":"Task Status"},"task_position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Task Position"},"task_meta":{"anyOf":[{"$ref":"#/components/schemas/TaskProcessingMeta"},{"type":"null"}]}},"type":"object","required":["task_id","task_type","task_status"],"title":"TaskStatusResponse"},"TaskType":{"type":"string","enum":["convert","chunk"],"title":"TaskType"},"TextItem":{"properties":{"self_ref":{"type":"string","pattern":"^#(?:/([\\w-]+)(?:/(\\d+))?)?$","title":"Self Ref"},"parent":{"anyOf":[{"$ref":"#/components/schemas/RefItem"},{"type":"null"}]},"children":{"items":{"$ref":"#/components/schemas/RefItem"},"type":"array","title":"Children","default":[]},"content_layer":{"$ref":"#/components/schemas/ContentLayer","default":"body"},"meta":{"anyOf":[{"$ref":"#/components/schemas/BaseMeta"},{"type":"null"}]},"label":{"type":"string","enum":["caption","checkbox_selected","checkbox_unselected","footnote","page_footer","page_header","paragraph","reference","text","empty_value"],"title":"Label"},"prov":{"items":{"$ref":"#/components/schemas/ProvenanceItem"},"type":"array","title":"Prov","default":[]},"orig":{"type":"string","title":"Orig"},"text":{"type":"string","title":"Text"},"formatting":{"anyOf":[{"$ref":"#/components/schemas/Formatting"},{"type":"null"}]},"hyperlink":{"anyOf":[{"type":"string","minLength":1,"format":"uri"},{"type":"string","format":"path"},{"type":"null"}],"title":"Hyperlink"}},"additionalProperties":false,"type":"object","required":["self_ref","label","orig","text"],"title":"TextItem","description":"TextItem."},"TitleItem":{"properties":{"self_ref":{"type":"string","pattern":"^#(?:/([\\w-]+)(?:/(\\d+))?)?$","title":"Self Ref"},"parent":{"anyOf":[{"$ref":"#/components/schemas/RefItem"},{"type":"null"}]},"children":{"items":{"$ref":"#/components/schemas/RefItem"},"type":"array","title":"Children","default":[]},"content_layer":{"$ref":"#/components/schemas/ContentLayer","default":"body"},"meta":{"anyOf":[{"$ref":"#/components/schemas/BaseMeta"},{"type":"null"}]},"label":{"type":"string","const":"title","title":"Label","default":"title"},"prov":{"items":{"$ref":"#/components/schemas/ProvenanceItem"},"type":"array","title":"Prov","default":[]},"orig":{"type":"string","title":"Orig"},"text":{"type":"string","title":"Text"},"formatting":{"anyOf":[{"$ref":"#/components/schemas/Formatting"},{"type":"null"}]},"hyperlink":{"anyOf":[{"type":"string","minLength":1,"format":"uri"},{"type":"string","format":"path"},{"type":"null"}],"title":"Hyperlink"}},"additionalProperties":false,"type":"object","required":["self_ref","orig","text"],"title":"TitleItem","description":"TitleItem."},"TransformersModelType":{"type":"string","enum":["automodel","automodel-vision2seq","automodel-causallm","automodel-imagetexttotext"],"title":"TransformersModelType"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VlmModelApi":{"properties":{"url":{"type":"string","minLength":1,"format":"uri","title":"Url","description":"Endpoint which accepts openai-api compatible requests.","examples":["http://localhost:8000/v1/chat/completions","http://localhost:1234/v1/chat/completions"]},"headers":{"additionalProperties":{"type":"string"},"type":"object","title":"Headers","description":"Headers used for calling the API endpoint. For example, it could include authentication headers.","default":{}},"params":{"additionalProperties":true,"type":"object","title":"Params","description":"Model parameters.","default":{},"examples":[{"max_completion_tokens":800,"model":"ibm-granite/granite-docling-258M"},{"max_completion_tokens":800,"model":"ibm-granite/granite-vision-3.3-2b"}]},"timeout":{"type":"number","title":"Timeout","description":"Timeout for the API request.","default":60},"concurrency":{"type":"integer","exclusiveMinimum":0.0,"title":"Concurrency","description":"Maximum number of concurrent requests to the API.","default":1,"examples":[1]},"prompt":{"type":"string","title":"Prompt","description":"Prompt used when calling the vision-language model.","default":"Convert this page to docling.","examples":["Convert this page to docling.","Convert this page to markdown. Do not miss any text and only output the bare markdown!"]},"scale":{"type":"number","title":"Scale","description":"Scale factor of the images used.","default":2.0},"response_format":{"$ref":"#/components/schemas/ResponseFormat","description":"Type of response generated by the model."},"temperature":{"type":"number","title":"Temperature","description":"Temperature parameter controlling the reproducibility of the result.","default":0.0,"examples":[0.0,1.0]}},"type":"object","required":["url","response_format"],"title":"VlmModelApi"},"VlmModelLocal":{"properties":{"repo_id":{"type":"string","title":"Repo Id","description":"Repository id from the Hugging Face Hub."},"prompt":{"type":"string","title":"Prompt","description":"Prompt used when calling the vision-language model.","default":"Convert this page to docling.","examples":["Convert this page to docling.","Convert this page to markdown. Do not miss any text and only output the bare markdown!"]},"scale":{"type":"number","title":"Scale","description":"Scale factor of the images used.","default":2.0},"response_format":{"$ref":"#/components/schemas/ResponseFormat","description":"Type of response generated by the model."},"inference_framework":{"$ref":"#/components/schemas/InferenceFramework","description":"Inference framework to use."},"transformers_model_type":{"$ref":"#/components/schemas/TransformersModelType","description":"Type of transformers auto-model to use.","default":"automodel"},"extra_generation_config":{"additionalProperties":true,"type":"object","title":"Extra Generation Config","description":"Config from https://huggingface.co/docs/transformers/en/main_classes/text_generation#transformers.GenerationConfig","default":{"max_new_tokens":800,"do_sample":false},"examples":[{"do_sample":false,"max_new_tokens":800}]},"temperature":{"type":"number","title":"Temperature","description":"Temperature parameter controlling the reproducibility of the result.","default":0.0,"examples":[0.0,1.0]}},"type":"object","required":["repo_id","response_format","inference_framework"],"title":"VlmModelLocal"},"VlmModelType":{"type":"string","enum":["smoldocling","smoldocling_vllm","granite_vision","granite_vision_vllm","granite_vision_ollama","got_ocr_2","granite_docling","granite_docling_vllm"],"title":"VlmModelType"},"ZipTarget":{"properties":{"kind":{"type":"string","const":"zip","title":"Kind","default":"zip"}},"type":"object","title":"ZipTarget"},"ocr_engines_enum":{"type":"string","enum":["auto","easyocr","ocrmac","rapidocr","tesserocr","tesseract"],"title":"ocr_engines_enum"}},"securitySchemes":{"APIKeyAuth":{"type":"apiKey","in":"header","name":"X-Api-Key"}}}} \ No newline at end of file diff --git a/docs/hybrid/research/docling-sample-response-lorem.json b/docs/hybrid/research/docling-sample-response-lorem.json new file mode 100644 index 0000000..61300b9 --- /dev/null +++ b/docs/hybrid/research/docling-sample-response-lorem.json @@ -0,0 +1 @@ +{"document":{"filename":"lorem.pdf","md_content":"## Lorem Ipsum\n\nLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","json_content":{"schema_name":"DoclingDocument","version":"1.8.0","name":"lorem","origin":{"mimetype":"application/pdf","binary_hash":3162876754317541870,"filename":"lorem.pdf","uri":null},"furniture":{"self_ref":"#/furniture","parent":null,"children":[],"content_layer":"furniture","meta":null,"name":"_root_","label":"unspecified"},"body":{"self_ref":"#/body","parent":null,"children":[{"$ref":"#/texts/0"},{"$ref":"#/texts/1"}],"content_layer":"body","meta":null,"name":"_root_","label":"unspecified"},"groups":[],"texts":[{"self_ref":"#/texts/0","parent":{"$ref":"#/body"},"children":[],"content_layer":"body","meta":null,"label":"section_header","prov":[{"page_no":1,"bbox":{"l":200.891,"t":745.095,"r":394.152,"b":706.945,"coord_origin":"BOTTOMLEFT"},"charspan":[0,12]}],"orig":"Lorem Ipsum","text":"Lorem Ipsum","formatting":null,"hyperlink":null,"level":1},{"self_ref":"#/texts/1","parent":{"$ref":"#/body"},"children":[],"content_layer":"body","meta":null,"label":"text","prov":[{"page_no":1,"bbox":{"l":85.034,"t":659.75,"r":504.778,"b":567.938,"coord_origin":"BOTTOMLEFT"},"charspan":[0,508]}],"orig":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","text":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","formatting":null,"hyperlink":null}],"pictures":[],"tables":[],"key_value_items":[],"form_items":[],"pages":{"1":{"size":{"width":595.0,"height":841.0},"image":{"mimetype":"image/png","dpi":144,"size":{"width":1190.0,"height":1682.0},"uri":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABKYAAAaSCAIAAACTCGAjAAEAAElEQVR4nOzdZ1wVR/8//D390MuhN1FRQARBAQsgKsTeozExttjiZYwtiUZjEhNLYk1yRWOMGmOKLbEXRKxUqQoigihNpErvp+39YO5r//s7tANqNJvP+4Ev2TM7O7s7W767OzM8mqYpAAAAAAAA4CL+yy4AAAAAAAAAvCgI+QAAAAAAADgLIR8AAAAAAABnIeQDAAAAAADgLIR8AAAAAAAAnIWQDwAAAAAAgLMQ8gEAAAAAAHAWQj4AAAAAAADOQsgHAAAAAADAWQj5AAAAAAAAOAshHwAAAAAAAGch5AMAAAAAAOAshHwAAAAAAACchZAPAAAAAACAsxDyAQAAAAAAcBZCPgAAAAAAAM5CyAcAAAAAAMBZCPkAAAAAAAA4CyEfAAAAAAAAZyHkAwAAAAAA4CyEfAAAAAAAAJyFkA8AAAAAAICzEPIBAAAAAABwFkI+AAAAAAAAzkLIBwAAAAAAwFkI+QAAAAAAADgLIR8AAAAAAABnIeQDAAAAAADgLIR8AAAAAAAAnIWQDwAAAAAAgLMQ8gEAAAAAAHAWQj4AAAAAAADOQsgHAAAAAADAWQj5AAAAAAAAOAshHwAAAAAAAGch5AMAAAAAAOAshHwAAAAAAACchZAPAAAAAACAsxDyAQAAAAAAcBZCPgAAAAAAAM5CyAcAAAAAAMBZCPkAAAAAAAA4CyEfAAAAAAAAZyHkAwAAAAAA4CyEfAAAAAAAAJyFkA8AAAAAAICzEPIBAAAAAABwFkI+AAAAAAAAzkLIBwAAAAAAwFkI+QAAAAAAADgLIR8AAAAAAABnIeQDAAAAAADgLIR8AAAAAAAAnIWQDwAAAAAAgLMQ8gEAAAAAAHAWQj4AAAAAAADOQsgHAAAAAADAWQj5AAAAAAAAOAshHwAAAAAAAGch5AMAAAAAAOAshHwAAAAAAACchZAPAAAAAACAsxDyAQAAAAAAcBZCPgAAAAAAAM5CyAcAAAAAAMBZCPkAAAAAAAA4CyEfAAAAAAAAZyHkAwAAAAAA4CyEfAAAAAAAAJyFkA8AAAAAAICzEPIBAAAAAABwFkI+AAAAAAAAzkLIBwAAAAAAwFkI+QAAAAAAADgLIR8AAAAAAABnIeQDAAAAAADgLIR8AAAAAAAAnIWQDwAAAAAAgLMQ8gEAAAAAAHAWQj4AAAAAAADOQsgHAAAAAADAWQj5AAAAAAAAOAshHwAAAAAAAGch5AMAAAAAAOAshHwAAAAAAACchZAPAAAAAACAsxDyAQAAAAAAcBZCPgAAAAAAAM5CyAcAAAAAAMBZCPkAAAAAAAA4CyEfAAAAAAAAZyHkAwAAAAAA4CyEfAAAAAAAAJyFkA8AAAAAAICzEPIBAAAAAABwFkI+AAAAAAAAzkLIBwAAAAAAwFkI+QAAAAAAADgLIR8AAAAAAABnIeQDAAAAAADgLIR8AAAAAAAAnIWQDwAAAAAAgLMQ8gEAAAAAAHAWQj4AAAAAAADOQsgHAAAAAADAWQj5AAAAAAAAOAshHwAAAAAAAGch5AMAAAAAAOAshHwAAAAAAACchZAPAAAAAACAsxDyAQAAAAAAcBZCPgAAAAAAAM5CyAcAAAAAAMBZCPkAAAAAAAA4CyEfAAAAAAAAZyHkAwAAAAAA4CyEfAAAAAAAAJyFkA8AAAAAAICzEPIBAAAAAABwFkI+AAAAAAAAzkLIBwAAAAAAwFkI+QAAAAAAADgLIR8AAAAAAABnIeQDAAAAAADgLIR8AAAAAAAAnIWQDwAAAAAAgLMQ8gEAAAAAAHAWQj4AAAAAAADOQsgHAAAAAADAWQj5AAAAAAAAOAshHwAAAAAAAGch5AMAAAAAAOAshHwAAAAAAACchZAPAAAAAACAsxDyAQAAAAAAcBZCPgAAAAAAAM5CyAcAAAAAAMBZCPkAAAAAAAA4CyEfAAAAAAAAZyHkAwAAAAAA4CyEfAAAAAAAAJyFkA8AAAAAAICzEPIBAAAAAABwFkI+AAAAAAAAzkLIBwAAAAAAwFkI+QAAAAAAADgLIR8AAAAAAABnIeQDAAAAAADgLIR8AAAAAAAAnIWQDwAAAAAAgLMQ8gEAAAAAAHAWQj4AAAAAAADOQsgHAAAAAADAWQj5AAAAAAAAOAshHwAAAAAAAGch5AMAAAAAAOAshHwAAAAAAACchZAPAAAAAACAsxDyAQAAAAAAcBZCPgAAAAAAAM5CyAcAAAAAAMBZCPkAAAAAAAA4CyEfAAAAAAAAZyHkAwAAAAAA4CyEfAAAAAAAAJyFkA8AAAAAAICzEPIBAAAAAABwFkI+AAAAAAAAzkLIBwAAAAAAwFkI+QAAAAAAADgLIR8AAAAAAABnIeQDAAAAAADgLIR8AAAAAAAAnIWQDwAAAAAAgLMQ8gEAAAAAAHAWQj4AAAAAAADOQsgHAAAAAADAWQj5AAAAAAAAOAshHwAAAAAAAGch5AMAAAAAAOAshHwAAAAAAACchZAPAAAAAACAsxDyAQAAAAAAcBZCPgAAAAAAAM5CyAcAAAAAAMBZCPkAAAAAAAA4CyEfAAAAAAAAZyHkAwAAAAAA4CyEfAAAAAAAAJyFkA8AAAAAAICzEPIBAAAAAABwFkI+AAAAAAAAzkLIBwAAAAAAwFkI+QAAAAAAADgLIR8AAAAAAABnIeQDAAAAAADgLIR8AAAAAAAAnIWQDwAAAAAAgLMQ8gEAAAAAAHAWQj4AAAAAAADOQsgHAAAAAADAWQj5AAAAAAAAOAshHwAAAAAAAGch5AMAAAAAAOAshHwAAAAAAACchZAPAAAAAACAs4QvuwAAAJ2XkZGxa9cupVLJ4/FomqYo6o033hg6dOjLLhf8KzQ2Ni5YsKCxsZGZIpVK9+3bJ5VKX2KpAAAANPz/N0kAAP9EYWFhw4cPZ0/ZsWPHypUrX1Z54F+lpqbG2NhYrVYzU/h8fmVlpYGBwUssFQAAgAZ82AkA/2B8Pl8kErGnCASCl1UY+Lfh8Xi6urrsKbq6ujwe72WVBwAAoEUI+QAAAAAAADgLIR8AAAAAAABnIeQDAAAAAADgLIR8AAAAAAAAnIWQDwAAAAAAgLMQ8gEAAAAAAHAWQj4AAAAAAADOEr7sAgAAcARN0zRN8/l/x6M0lUqlVqtpmubxeAKBoHMLVavVPB7v7xlHjqZpiqI6sSwyY+fm/Uf7G/YOqbF/Wx34G3S6mj3jvAAArziEfAAAnaRUKtPS0u7fv//w4cPc3Nyqqiqapg0NDR0cHJycnFxdXd3c3MRicYfyzM/Pv337NhlQnqZpU1PT/v37MxFdbW1tYmLirVu3oqKinj59qlKphELhsGHDvvjiC22ivurq6rt376anpz969OjJkyf19fUikcjY2Njd3b13797dunWztbXVvqhqtTo2Nra8vJzcJatUKi8vLzs7OyZBZWXlvXv3bt++nZKSUl1dTVGUqampt7e3u7u7h4eHRCJpLWeyYTMzM+Pj4/Pz8xUKhUAg6NKlS9++fZ2dnT08PLQv5KtDqVQmJCQ8ffqU2VMeHh7szUVRVGZmZlpaWmpq6sOHD+vq6vh8voWFRdeuXd3c3Nzc3Dq0d1qTnp6ek5OTmZl579696upqpVIpEolsbGzc3NwcHR1dXV0tLS21yefp06cJCQlqtZqiKJqmxWKxj4+PsbGxlsWgaTo+Pr64uJhUdbVa3b17d1dX1xYTJyQkFBYWMgeFi4tL9+7dmV9ra2vv3r2bmpqakJBQVVVFUZShoSFTzfT09Forg1qtTk9Pf/DgQVJSUnZ2tlwuFwgEtra2/fr169mzp6en59/z+AYA4O9AAwD8Y125ckUkErHPad9+++3fsNza2trDhw+PGDHCxsamtbOrpaVlcHDwoUOHqqurtc/5559/ZmcyYMAAuVxOfgoLCxsyZIiOjo7GgoYNG6ZQKNrOtri4eMuWLYMGDTIwMGixtHp6eu7u7vPnz4+Li9OyqE1NTf3792dn8ssvv5Cf1Gr14cOHBwwY0OLiZDLZyJEjb9y40WK2ly5dGjduXGsb1sbG5q233kpKStKykC9UTU2Nvr4+u3j6+vo1NTWtJfbz82MnPnDgAPNrQUHB6tWr2ZEMm0AgcHd3X7VqVWZmZueKqlAozp8/P2nSJEdHxxYXQVGUVCr18vL6/PPP8/Ly2s0wLCyMxGCEgYFBVFRUh8ozbNgw9tJXrFjRWuJRo0axU27cuJH56eTJk0OGDDEyMmq+OkZGRkFBQRcuXGgxz4iIiMmTJzs4OLS4KSwsLF5//fUOrREAwKsMIR8A/IO9lJDv0qVLvr6+2n8A1q9fv4sXL2qZ+cGDB9nzDhgwgIRzGzdubO19xfDhw9sI+Zqamvbu3dvGjb4GiUSyYMECbW76m4d8hw4domm6urp6zpw57W4fAwODLVu2sDMsLy9/77332IFEa0xMTPbt26flJn1xnlfId/XqVTc3N232jrm5+c6dO+vq6jpUzgcPHowePVqbDUvY2dkdPXq07TyvXLnyjCFfUFAQe6EdDflqa2tXrFjR7os4kUi0fv36xsZGJre6uroPP/xQV1e33e2gq6v73XffkS+oAQD+0fDRAgCAtmia/uqrr6ZOnUpehWk5V2Ji4htvvLF582btZ2Hw+XyhUPjrr7+uX7++rq6uo7NXVlYuW7Zs0aJFOTk5Ws7S1NS0b9++sWPHxsXFtZtYI64jf3722WfkdV/b89bU1Kxbt+63334jfzY0NCxevHj37t0qlard5VZUVKxYseLPP/9sN+UrpcUw+ObNm9OmTbt37542OZSWlq5cufI///kP+VBWG1evXh0/fvzFixe12bBEfn7+3LlzP//887Z3Int1OtEErsXKo33KrVu3fvPNN+TL0jYoFIpNmzb9+OOP5E+5XP7xxx9v3769vr6+3RLW19evWbNm//797aYEAHjFIeQDANBKQ0PD8uXL165dW1NT0/xXQ0NDa2tra2vrFr8xq62t/eSTT1asWNHY2NihhUokksjIyNWrVyuVytbSKBSKFqdXVFS8/fbbP/74Y4s37jKZzNbW1srKqsWXPykpKdOnT4+Nje1QaUl0+t1337EnGhoampqatvg2RqFQfPjhh1FRUXK5fMWKFUePHmX/KpFITE1NDQ0NW1xWbW3t0qVLExISOlTCV4pIJHr69OnChQufPn3Kns7n842NjU1MTFpr7vjrr7/Onj2btFtrW3R09BtvvJGenq4xnc/nk7aR/fv39/T0NDEx0UhQX1//5Zdf/ve//+3ICv1NJBLJ2bNnN2/ezJ6op6cnk8mEwhZ6KFAoFGvWrLl06RJFUZ988sn333/P/lUkEpmamrZ42FIUVV9fv2zZsoiIiOdXfACAlwDdtwAAaGXr1q27d+/WmKinpzd+/Pjg4GAXFxfy4WV9ff3du3cvXrx49erV2tpaduLdu3ebm5t/8skn2i+0pqZm9+7dRUVF5E+hUNirV6/Bgwe7ubnp6+s3NTXl5+drfFtINDY2rly58uLFixrTnZycxo4d6+/v7+DgIJVKVSpVcXFxYmLi2bNnNQK8R48eLVy4MCwszMLCQsvSPnny5OeffyYRpq6u7uTJk4cPH969e3ehUFhZWXn37t3ff//9zp077FlKSkp27NgxZcoU5otWsVg8atSoMWPGODk56enpKZXKgoKCCxcunDt3rqysjD1vUVHRrl27Dh48+E/sZZHH4zU0NHz55ZcPHjwgUwQCwcCBA0eMGOHr62toaMjj8err65OTky9duhQeHt7Q0MCe/fTp059++mnbIVlJScmqVavKy8vZE/X19WfNmjVmzJiuXbvKZDKRSNTU1JSbm5uamnrgwIGYmBh24i+//NLf379fv37PaaWfj4KCgnPnzpGHIDo6OqNGjRo/fny3bt2kUmlVVVVqaurx48c1VqShoWHbtm319fVMvMfn80eOHDlq1ChXV1cDAwOVSlVSUnLx4sVz584VFhZqzLtjxw5fX982OhwCAHjVvbxvSgEAntXf1pbv3LlzzV8gjB07lnRa2Dy9SqW6c+fOmDFjNGYRi8WXLl1qY0EabfnYL8eGDBly+fJldqukNmzfvl1j0TKZ7PPPPy8rK2sxfUNDw6FDh5o3+Zs3b15TU1OLszQ1NQ0YMICdmGltOGjQoBZbdtXU1HzxxRcau4yiKKlUSv7j4uISFhamUqmaz5uVlTVt2jSNGXV1ddPS0rTZIC9CR9vy+fv7Myl5PB6JuMifffr0OX/+PNNVD5tSqYyLi3vttdc01l0gEJw8ebKN4jFfMzK8vLwiIiJaS19dXb1ixQqNWRYtWtRi4itXrrCPCENDw4625QsODmYvaOXKla0lHj16NDulRCIhx4WHh8fVq1eb15bGxsZt27ZptH3l8/nM1nZ0dDx58qRSqWy+rMLCwtmzZ2u8+tbX12+ttyEAgH8EhHwA8A/294R8BQUFzV90LFy4kIzK0IaqqqoFCxZozNi/f//i4uLWZtEI+RjvvvtuZWWllgVOS0szNzdnz25qanr+/Pl2Z4yNje3Rowd7Rl1d3cuXL7eYuHnIx6xgfn5+a4tQq9Xr1q1rcR179Ohx+/btNopXW1s7duxYjbl2797d7nq9IM8S8rEFBgbm5ua2vayKiopZs2ZpzOjt7V1UVNRiepVKNW7cOHZiBweHjIyMtpfS1NQ0fPhw9lyWlpYtVteXGPIRffr0aXt1vv322xZf/1pbW7dd1Pr6+unTp2vMtXXrVu3XDgDgVYO2fAAA7Th8+HBiYiJ7yujRo7dv395aMzOGoaHh9u3bR44cyZ4YGxt7/PjxDhVg3rx5u3btaq25kQalUrl169bS0lJmiomJyS+//NL8lWNzvr6+hw4dMjMzY6bU19d/9913tNYdz3Tp0uXgwYNtjCDH4/E++OCDgQMHakzn8/lbt2719PRsI3M9Pb3PP/+cXTyKojS+FP3HcXR0/OGHH1obLYBhbGy8Y8eOwMBA9sSEhITTp0+3mL64uDg8PJw9ZfHixT179mx7KWKx+PPPP2e/HysuLr5y5Urbc/39TExMDh482PbqLFmyRKNTUIqihELhl19+OWjQoDZm1NHR+frrr2UyGXsiGRek0wUGAHi5EPIBALSltrZ279697CnW1tbbtm1rbYA7DYaGhtu2bdMY3vrHH3/Uvh+XHj16rFu3rsV+KVp07969CxcusKesXLlS44VPGwYOHLhy5Ur2lOvXrzPtzdq1cOHC1gbUZhgbG48YMUJjoo+PjzZBaZ8+fby9vdlTHj582NFOcV4dfD7/66+/7tWrlzaJzczMduzYodHVys8//9xi/z25ubnsTiklEonGiBqt6du375YtWz788MNVq1atWrXqo48+0hgv/lWwYMECLy+vttMIBILmXwL37t174sSJ7eZvb2+vUUWTk5Obmpo6WEwAgFcFQj4AgLZcuXLl4cOH7CkffPCBlvfoRO/evTWaSN2/f1/jDUwbpkyZov2oehRFXbp0if2Kz9XVdenSpdrPTlHUzJkzXVxcmD/r6+tPnjypzYykaxBtUg4YMECjuVRwcHDzNn7NiUQijSHsysrKNHoo+QcJCAiYMmWK9un79es3b9489pSkpKSUlJTmKeVyucaUdsczIKRS6Xvvvbdt27YtW7Zs2bJl69atgwcP1r6EfwNjY+PXX39dm5RMp0oMLy8vjbfErfHx8WH/mZeX13yTAgD8UyDkAwBoy7lz59gfdNnZ2TVvTtausWPHWltbM3+q1eqzZ89qM6NQKGz+cVoblErlmTNn2FNmz57d7geoGuzs7Hx9fdlT4uPjtZmxd+/eVlZW2qQ0NjbWCPnc3d21LJ6NjQ37T6VS2cYIFq+4GTNmaD9COjFp0iRjY2PmT6VSqfFSlzAzM2O3ZGtqaiKjFHCAk5NTt27dtEmpq6urEfJ5eHhouRSNmkzTNN7yAcA/F0I+AIBWlZeX3717lz3F39/f2dm5o/n06tVLo/VacnKyNkOri8Xitpu3aXjy5Mnt27eZP/X19VvrMqRtGiFfdnZ2cXFxu3N5enpq+QFq8341WhxqokUai1Cr1Vq+v3rV2NraNm/T2C5PT0+NKtFiMzNHR0eNz4n37t2r5YOGV5ydnZ2Wb+p4PJ5GTWNHy21r/s5Z+7HsAQBeNQj5AABa9fjx48ePH7OnaMRCWuLxeBp9fj5+/DgvL6/dGfl8fodGA7t9+zb78zMXF5fevXtrPzujX79+7Fve4uJiZmzANujq6nZiWf9a9vb2nWgmp6urq9FtSWFhYWVlpUYyHR2dCRMmsKdUV1fPmTNn1apVDx8+/Ef3RCIWi192EQAA/mEwFDsAQKsKCwtLSkqYP4VCYeciKIqi3Nzc+Hw+8z6qsLCwsLCw3Z5OOio1NZX9ykssFufk5HRipPInT56w56qqqqqqqmp3LvYogtAuGxsbLXth1aDRlLSgoODJkyca3brweLwFCxb8+eef7NezFRUV27Zt++mnn0aOHDlixAhXV9cePXpodE356kM1AwDoKIR8AACtqqys1Iig2P2adIirq6tYLGb6lpTL5dXV1c+hiP+Xxru4pKSkFsc0a5dSqWT3A9nQ0FBTU/OshYP/S8sGac25uLgIhUKmBWN5eXmLHdh4eHisX79+8eLFGu/0qqqqjh07duzYMWNj4x49ejg7Ow8cONDPz8/Z2VkqlXauSAAA8CpDyAcA0KqnT5+y/zQwMNCyEVFztra27JCPoqgX0c8k+50kRVGNjY0FBQXPni1N0+iu8Lnr9Os1CwsL9psuhULR4jgNFEUtWrSosbHxyy+/rKioaP5rZWVlfHx8fHz877//LpFIHB0dhw4dOmLEiKCgIC3HIAEAgH8EfB0BANAqjQHfOtSsrjmNNkgvogPAFxeY/aNbf72atBmUorUZ2Z/dtt1n6fLly0+cOOHv79/295BNTU0ZGRk//vjj5MmTR40adejQIXRQCQDAGQj5AAC09Yxhj0bHkp1oYvcSobvC567THY1q7As+n992ODd06NArV66cPHly9OjRGkNcNEfTdFRU1Jw5c15//fXMzMzOlRAAAF4p+LATAKBVGiMHNDQ0dPo2XalUaryC0xgx7LnQeA/Zq1ev2bNnP/uwdTRNaz+gGWhJm1E6WpuRXQ8FAkG7g/tJJJIJEyaMGTMmLS3t3r17CQkJUVFR9+/fr6uray2Yv3DhwuPHj48cOaLRWwwAAPzjIOQDAGiVubk5+8/a2tr8/PxOjMtHUdSjR480Qj6NLhafC40Cd+vWbdWqVc99KfBcZGVldW7Ghw8fssN4HR0dHR0dbWYUCoUeHh4eHh5vvfWWXC4vLy+Pj4+PiYlJSkpKS0vTGI+EoqiUlJSlS5eePXsWw28AAPyj4cNOAIBWGRsbsxtcyeXytLS0zmV1//59dh8benp6neugv23W1tbsP58+farN4ArwUuTn53euvVx6ejr7G2NLS0srK6uOZiIWi62srMaNG7d58+aQkJCQkJCvvvqqe/fuGsmuXr168uTJThSybW23PwQAgOcLIR8AQKvs7OzYg2Wr1eqUlJTOZZWSksK+TdfI+Xlxd3dnN+t69OjRo0ePnvtS4LkoKipiD5qnJZqmMzIy2FNsbW01Qv2O4vF4bm5uH3/88Y0bN5qP6nH06NHmPYJqtERVq9UdaulaUVHRYieiAADwIiDkAwBolYODg729PXtKTExMJ97M1NfXx8fHs6fY29u/iJDP09OT3ZyvtLQUPXC8srKzsx88eNDRufLz8zVeNdvb2z+v8fTs7Oy++eYbR0dH9sTs7GyN8R6pZr2G1tfXd2jQkUePHj18+PAZSgoAAB2AkA8AoFU6OjoDBw5kT4mLi7t9+3ZH80lISEhMTGRP8ff373Qf/W2wsbHx9vZmTzl79uxzXwo8F42NjZ3YOxEREenp6cyfPB5vyJAhz7FUPXv2HDlyJHtKWVmZxgCVFEWZmpqyQz61Wn337l3tlxIXF9fp3msAAKCjEPIBALRl4sSJQuH/6+mqoqLi999/72gmf/zxR3V1NfOnSCSaMGHC8ynf/yUUCidOnMiecubMmaSkpBexLHh2x44de/LkifbpFQrFwYMH2VMMDAyGDx+ukay8vDwqKiqapUNfkDo4OLD/VKlUzXv1dHBwMDU1ZU8JCQnRsnleeXn5Tz/9pH15AADgGSHkAwBoS79+/fz8/NhT9u/ff+bMGe1zOHnypMZt+tChQ93d3Z9P+ZoZMWIEu2VXXV3dunXramtrtc+hrq7u6tWrFy9eJL16nD9/Pi4u7gWUFKiSkpJ169Y1NjZqmf6HH364evUqe8rYsWObD7WXnp4+bty4ISzffvut9qXS6LpTV1e3+YAiurq6GuN2xMTEaHNcyOXyTz75RKM5IgAAvFAI+QAA2iISiRYvXszuE6WpqWnVqlVa3rOmp6evXr2a3fuFSCT6z3/+0+5Aap3m6uo6efJk9pTQ0NBVq1ZpP5b6t99+O2rUqDFjxowePXr06NHjxo07fPjwCygpUBRFHT58+NChQ9qkjI6O3rBhA7uXFB0dnTlz5mj0pEJRVLdu3ezs7BQsZ86cycvL02YpT548uXnzpkZuXbt21UgmEAg8PT3ZU1Qq1ccff3znzp02MlepVJ999tnPP/+sTUkAAOB5QcgHAJzC/gjzeRk/frzG15IPHjyYPn1623e3FEXduXPn7bff1uimYvLkyc07RXyO+Hz+qlWrunTpwkxRq9V79ux5//332/26r6GhYf369Z9++ik7RjUzM/vPf/7zoor7ryeXyz/66KMDBw6wR1dv7tq1a7NmzSorK2NPnDx58tChQ5sntrKy8vf3Z0+5f//+5s2b2w37q6urV61apdE9jL+/f4vdwwQFBWlMf/jw4dtvv63xHpKRnJz8zjvvbNmyRS6X6+jo6Ovrt10YAAB4XjAUOwBwSlxcnLm5edt3z61RqVS+vr49evTQmC6VSjdu3BgVFcUOmZKSksaPH79kyZK5c+eampqyXwOq1eqKiooDBw7s2rVL4xs5a2vrL7/8UiwWd6J42nNwcNiwYcM777zDvsXfs2dPbGzs8uXLx40bZ2BgoPGasampKTY2duvWrSEhIRq97a9cubJzo89D2/r161dRUZGVlVVTU7N48eKIiIglS5a4u7uz+1xVKBR5eXmHDh3as2ePRh8qFhYWn376aWvPOObNm3fo0KH6+npmyoEDBxQKxdq1a7t06dJ8rsbGxqioqK+//vrKlSvs6QYGBtOmTWtxEf7+/v7+/hrp09LSXn/99dGjR7/22ms+Pj6GhobV1dVxcXHh4eGXL18uLCwkyWbPnv3gwYNr1661s40AAOB5QMgHAJzy22+//fbbb52efdeuXc1DPoqiXF1d9+3bN3PmTPbI5o8fP169evW2bdsCAgIGDRpkZGTE4/GqqqpiYmIiIiJKSko0MjE2Nt6/f3/Pnj07XTztzZw5Mzs7+/PPP2dPTEpKmjVrloWFRf/+/fv3729pacnn82tra1NTU2/dupWRkSGXyzXyGTdu3KJFi/6GAv8LBQcH9+nTZ/r06RRFyeXyQ4cOHTlyxMXFJTg42Nrams/nV1VV3bhxIzExsXnnlnp6ert27WojFO/Xr9+iRYt27tzJTFEqlT///PPJkyd9fHwGDRrk7OwsFotVKlV5eXlsbGx0dHRWVpZG/ys8Hm/16tW9e/ducRG6urofffRRRESExrAlVVVVR44cOXLkiEQi4fP5arVaI4GXl9e6devmz5+v3XYCAIBnhZAPADilQ+NBd8i4ceP27NmzePHiyspK9vSnT5+eOnXq1KlTbc9ubGz8448/vtBPOjWsWbOmrq5u+/btGu88S0pKzp07d+7cuXZzCAwM3LNnj4mJyQsr47+aXC6fNm1aSEgI85BCLpenpKSkpKS0PaNQKPz666+nTJnSdrK1a9empaVdunSJPbGysjIsLCwsLEybEs6YMWPZsmVtJHjttdc+//zztWvXtvhriyNYdunS5aeffrK1tdWye08AAHh2aMsHAKCtt9566+TJk15eXh2dsU+fPidOnGjtA7kXRCQSbdmyZf/+/Z0Y811HR2fx4sXHjx+3tbV9EWUDiqLUajWfz9++fbtGS9G22djYHDx4cMmSJc17bdEgk8l++eWXDmXO0NPT++KLLw4cONB2izsej7dmzZo1a9a0WxjC0dFx37593t7eiPcAAP5OCPkA4B9MpVKxOxp5du3eiQ4dOvTcuXMff/yxubm5NhmamZmtWrXq/Pnzw4YN60QB6uvrn/G95TvvvHPx4sUFCxZo2VuGQCDo37//4cOHd+/ebWFh0XZijdEFmn8X2hq1Wq2RWPsORTU2UUNDw4t7tds2mqbZjeWoTu0vCwuL/fv3r1y5UkdHp+2UYrF44sSJFy5cmDFjhpaZW1pa/vbbb99991337t21nEUoFA4ePPjYsWOfffaZSCTSZpb169fv27fPycmp7WzfeOON8+fPv/baa2SK9pVH421hiy8PW6RWqxsaGthTtA81NSrksx+JAAAvET7sBIB/MCsrq6lTp2ofLbRLm4Z2tra2X3311fvvv//HH39cu3YtMzOzqKiI3dpKV1fXysqqR48eQ4YMmTFjRodesnXr1o09xIJUKtXytrsN7u7uP/3006pVqw4fPhwZGfno0aPi4mJ2gYVCoY2NjbW1de/evadMmTJs2DBtOpjh8/kjR47s1q0bM6Vv375aFkkmk73xxhvs+2/tXyc6OzuzN5GtrW3zUeP+HiKRaPr06ezQpXP7SyaT7dixY+rUqXv27ElKSsrLy6uurmZ+NTY27t69u6en55w5cwYNGsTuKEgb+vr6S5cunTFjxokTJy5duvTgwYOCgoKKigp2ACOVSm1sbOzs7Hr06PHWW28FBAR0qIchsVg8b968iRMnHj9+PCIiIiMjo6ioSC6X8/l8PT09R0fH/v37jxgxIjAwkHkZyOPxgoOD2c8U+vXr11r+Q4cONTIyYv7UGCezDaampq+//jq7/S27urbNwcGBXc3EYnG7MTkAwCuLh6dWAACdRtP0w4cPi4qKysrKyAsfHR0dmUxmZWXl5OTU0bvzv4FKpSIhX0VFBRmfXSwWGxsbk5APzfZenNra2lGjRkVGRjJTli1b1nyE9Pz8/Ly8vOLiYvJ6ysjISCaTde/eXcu3yu3Kz88nIV9VVZVCoRAIBCKRSCaTkZBPV1f32RdRUlKiEfKx+yAFAIC/H97yAQB0Ho/H69GjR4udfL6aBAJBz549/55eQ6ET7OzsOtH28tXJn6IoCwuLdj8JBgCAv9Mr9wQaAAAAAAAAnheEfAAAAAAAAJyFkA8AAAAAAICzEPIBAAAAAABwFkI+AAAAAAAAzkLIBwAAAAAAwFkI+QAAAAAAADgLIR8AAAAAAABnIeQDAAAAAADgLIR8AAAAf4fGxkb2n3K5/GWVBAAA/lWEL7sAAAAA3CeRSD7++OOCggIej0dRFE3Tnp6eL7tQAADwr8CjafpllwEAAAAAAABeCHzYCQAAAAAAwFkI+QAAAAAAADgLIR8AAAAAAABnIeQDAAAAAADgLIR8AAAAAAAAnIWQDwAAAAAAgLMQ8gEAAAAAAHAWQj4AAAAAAADOQsgHAAAAAADAWQj5AAAAAAAAOAshHwAAAAAAAGch5AMAAAAAAOAshHwAAAAAAACchZAPAAAAAACAsxDyAQAAAAAAcBZCPgAAAAAAAM5CyAcAAAAAAMBZCPkAAAAAAAA4CyEfAAAAAAAAZyHkAwAAAAAA4CyEfAAAAAAAAJyFkA8AAAAAAICzEPIBAAAAAABwFkI+AAAAAAAAzkLIBwAAAAAAwFkI+QAAAAAAADgLIR8AAAAAAABnIeQDAAAAAADgLIR8AAAAAAAAnIWQDwAAAAAAgLMQ8gEAAAAAAHAWQj4AAAAAAADOQsgHAAAAAADAWQj5AAAAAAAAOAshHwAAAAAAAGch5AMAAAAAAOAshHwAAAAAAACchZAPAAAAAACAsxDyAQAAAAAAcBZCPgAAAAAAAM5CyAcAAAAAAMBZCPkAAAAAAAA4CyEfAAAAAAAAZyHkAwAAAAAA4CyEfAAAAAAAAJyFkA8AAAAAAICzEPIBAAAAAABwFkI+AAAAAAAAzkLIBwAAAAAAwFkI+QAAAAAAADgLIR8AAAAAAABnIeQDAAAAAADgLIR8AAAAAAAAnIWQDwAAAAAAgLMQ8gEAAAAAAHAWQj4AAAAAAADOQsgHAAAAAADAWQj5AAAAAAAAOAshHwAAAAAAAGch5AMAAAAAAOAshHwAAAAAAACchZAPAAAAAACAsxDyAQAAAAAAcBZCPgAAAAAAAM5CyAcAAAAAAMBZCPkAAAAAAAA4CyEfAAAAAAAAZyHkAwAAAAAA4CyEfAAAAAAAAJyFkA8AAAAAAICzEPIBAAAAAABwFkI+AAAAAAAAzkLIBwAAAAAAwFkI+QAAAAAAADgLIR8AAAAAAABnIeQDAAAAAADgLIR8AAAAAAAAnIWQDwAAAAAAgLMQ8gEAAAAAAHAWQj4AAAAAAADOQsgHAAAAAADAWQj5AAAAAAAAOAshHwAAAAAAAGch5AMAAAAAAOAshHwAAAAAAACchZAPAAAAAACAsxDyAQAAAAAAcBZCPgAAAAAAAM5CyAcAAAAAAMBZCPkAAAAAAAA4CyEfAAAAAAAAZyHkAwAAAAAA4CyEfAAAAAAAAJyFkA8AAAAAAICzEPIBAAAAAABwFkI+AAAAAAAAzkLIBwAAAAAAwFkI+QAAAAAAADgLIR8AAAAAAABnIeQDiqbpl12EZ6VSqVJSUnJycl52QZ6zju6al7gr1Wr1/fv3MzMzOVCd4J+OXQkfPnx47949LavlczyTVFVVJSQkVFVVPXtWzwt7I+Tl5aWkpCgUipdYnnY9+8nk7zwdFRYWJiUlNTU1/W1LBADQHkK+f7sjR46MGjXq+vXrL7sgzyQ8PDw4OPitt94qLS192WV5bn777bcxY8YkJSVpmf7KlStjxowJCQl5oaVqzZ07d8aOHTtp0qTMzEwyRaVSqVSql1IY7f0jCvlC0TStVCrVanWH5lKr1Uql8tUM78+fPz9q1KiEhASKovLy8l5//fWRI0cmJiZqM+9zPJPs3LkzKCjoq6++ekW2UkZGxtSpU3ft2kVRVGlp6dy5c4OCgq5cuUJ+fQUPBPZ+fFk5aK+hoWHJkiVBQUF//vnn37C45yUnJ+fNN9/89ttvtUz/CtYTANASQr5/u/T09NDQ0MePH7/sgjwTXV1dS0tLc3NzgUDwssvy3Ny/fz8kJKS4uFjL9Lm5uSEhIS/rVadUKrWwsLCwsBCLxRRFPX36dObMmZ9++qlSqXwp5dFGVVXV0qVLly1b9kq9ivmbpaSkjBs37pdffunQXKdPnx43blx4ePiLKdQzycrKCg0NLSoqoihKJBKZm5tbWFjo6OhoM+9zPJMYGRlZWFgYGxvzeLxnzOq5qKioOH/+/O3btymKEggEMpnM3NxcV1eXoiilUvnJJ5/Mnj27rKzsZRfz/2Hvx5eVg/b4fL5MJrOwsDAwMPgbFve8VFVVhYSEaPlg8dWsJwCgJeHLLgC8ZCKRiKKof3qk1L9//xs3bkilUj09vZddludGJBLx+Xztd41QKOTz+ULhyzmoe/XqFRISwufzDQ0NyZRr1655eHi8rPJoQyAQREdHU//8+v8sampqLl265OXl1aG5Hj9+fOnSpXnz5r2gUj0LUuXIPrW2tj516pRSqTQxMdFm3ud4Jlm+fPnbb79tbm7+jPk8L3w+X0dHhzyRMTU1PXjwYENDg0wmoyhKKBQmJCSkpaW9Ii8kCfZ+fFk5aE8ikXz//ffV1dWvzh7XBp/Pl0qlpFa069WsJwCgpVf3bgxeHTRN3759Ozc3V6VS2djY9OvXTyKRMD/dvXu3pqamX79+GRkZd+/etbOzCwwMJA+2CwoKUlJSampqjIyMPDw8rKysNOby9vZ+9OjR/fv3hUJhnz59HB0dKYq6e/duZmYmj8fr2bOnm5ubNiVsbGzMyMgwNDTs3bu3Wq1OTExUqVT9+/d/9OjR3bt3VSpVly5d+vbtq3Htf/z4MSmGgYGBu7u7vb09mZ6dnZ2VleXh4cFcvEmeCoXCx8dHJBJVVVUlJSU5ODhYWVndunWrrKzMysrKx8dHR0enpqYmLi6urKzMxMTE29tbyxtNpjzJycn19fVWVlb9+/dv8U6lrKzs9u3b5eXlurq6Li4uTk5Obed57969zMxMhUJhaWnZt29ffX199hqp1WovL6/k5OT79+87Ozv379+/3ULW1NTcvn27uLhYIBA4OTl5eHiQ6XK5PDMzUygUenh4PHr0KDY2VqVSVVRUXLhwwdDQ0NfXl6kzbVCpVHfu3MnLy1MqlWZmZl5eXsbGxuSnTm/zhoaGxMTEoqIisVjcvXt3pkZlZ2cnJCTU1dVRFHXx4kWyfTr3hF6hUNy+fZu8Ku/SpYuXl5fGvsvNzU1NTa2rqzM2Nu7Tp4+lpSXzU0ZGRkFBwYABA8rKypKSkhobG21sbLy9vaVSKTuH1upq2+vIqK6uTkpKKikpkUgkzs7OLi4u1P/qQFRUlEAgyMrKunTpkoWFhZeXFzl4yVFPXhrb2dn17duX3EA3NDTEx8ffu3ePz+cnJSXp6+s7OTk5OTm1e9QUFBSkpaX16dNHqVRGR0crFIqxY8cyFbIN2dnZaWlptbW1BgYGLi4u3bp100hQVFSUnJxcVVUlk8kGDhzI3vhqtfrhw4dyubxv374ikSgjI+PJkyeDBg2qqqqKj4+vr6+3tLTs168fUwzmTOLm5sa8nbtz505OTo5cLre0tPT29taIBgsKCu7evVtZWWlgYODh4WFnZ0eml5SUpKenk3MmOeNVV1f7+vrm5eXdu3dPLpfb29v7+PhoVJUHDx6kp6c3Njba29v7+vpmZWXl5+f369ePeZLSrgcPHmRkZDQ1NZmbm3t5ebU2Y3Z2dnV1taenZ2Vl5e3btysqKpRK5eXLly0sLPr169ehExehVCrv3LmTm5urVqtJhdE45NutpW3sRy1pkwPZPiTc7du3b0fXlBynZHe7urp26dKF+enx48cFBQUSicTQ0JCcr6ysrFxdXZkEzY+R1o7rxsbG2NhYc3Pzbt26xcfHFxYWmpiYDBgwwMDAgByARUVF+vr63t7eFhYW7OKxj/SePXuyl87knJCQUFhYKJFIvLy8tH8kV1BQcOfOndbqyXO81jPr7uLicufOnUePHgmFQhcXl+brwtQogUDQtWtXT09P5iey/bt06WJmZhYVFVVSUhIcHGxra6vlygJwEw3/bhs2bKAo6vfff28tQWlp6fvvv29qakoqjJ6e3htvvEF66aBpWqlUTps2rWfPnmvXriU3spMnT1apVDRNnzhxolevXuS2SSAQuLu7Hz9+nD2Xs7Pzhg0byKmfoqjevXvfvHlz165dzHnZ1tb2yJEj2qxFTk6OtbX1lClTVCqVXC4PDAz09vb++eefu3fvTrIyMjJatGhRWVkZM8uRI0dcXV1J8Xg8Xq9evc6fP09++vrrr3V0dM6cOcMkbmpqCgwM7NWrV2lpKU3TcXFxlpaW8+bNmzNnDvlgTCwWL1my5M6dOxMmTCDfSlEUNXbs2Pz8fC13xNGjR8mNOEVR+vr677777ocffigUCkNDQ5k0YWFh/fv3Zy7Sjo6Ou3btUigU5NdffvmFz+f/9NNP5M+6urq1a9daW1uTxFKpdPjw4Xfu3GHWaMiQIV5eXh9//DEJq9577712C3nv3r2RI0cy38hZWlp+9tlnjY2NNE0XFRV5enoOGTKkurp6zZo1IpGIx+MJBAKJRNKrV68nT560m3lBQcG7777L1DSxWBwQEHDz5k3ya+e2+b179yZMmMAU2MrKat26dTU1NTRNb9u2TSKR8Pl8Pp8vFou7deuWkpKizZ7S8Pjx4xkzZjA31iYmJgsWLCD1hNi3bx8TmfP5/D59+jA1jabplStXmpmZff/993379iW1USKRvPPOO+Xl5UyaNupq2+vIbLqhQ4cyD/Lt7Ow2bdokl8vlcvnw4cPJe36RSCQWiydOnEha6Gkc9UZGRjNnzszNzaVpOicnp3v37qQSisViiUTy+eef020eNU+fPqVp+tChQ3p6eqtXrx44cCBFUaampllZWW1vW5VK9f333zNHMUVR3bp1+/7775k6T9P05cuX+/TpQ36VSCTkc2KBQHDx4kWmDC4uLmSPrFy50tzc/Ndffx00aBDZnmKxePTo0enp6SQ35kxCtkN1dfXq1auZG3QdHZ1JkyY9fPiQWfqJEyfYwaGrq+vhw4fJT4cOHRKJRPv27SMrQs5427dvd3Z2Zg7zjz76qLa2lqRXKpXff/89c9NvZGT08ccfL1q0yNzcPCEhoe0NRcjl8h07djAxp1QqHTZs2K1bt8ivsbGxxsbGixYtYsrj4OCQmZl59OhRqVTK5/N5PJ5EIjE1NY2IiNBmcWylpaXz589nAgADA4OZM2cWFRUxCdqtpW3vR220m0NTU9OOHTuYLSwUCv39/ZkzjDbCwsJ8fX1JJMnn852cnPbv369Wq8mvK1eu1NPTi4uLo2k6Li5OJpMtXryYPfvXX3+tq6t77tw58mcbx3VOTo6Njc1bb721ePFi5twyY8aMlJSUmTNnMlOGDh1K3rkR5EhnIm0bG5svvviCnJ+ZbN966y3mcZKnp+euXbusra3nzZvX7rr/9ttvrdWT53utJ8fg7NmzN2/ezBx6NjY2W7ZsIUclce/evYkTJzJnfjMzsw8//JA5bZLrxaxZs9544w1SMPY5E+DfCSHfv13bIV9DQ8PMmTMpipozZ86VK1eioqJWrVollUoHDx5MbuOUSuWbb74pEom6dOmyevXqU6dOkQvehQsXjIyMevfufeDAgdjY2AMHDjg7OxsZGV27do2ZiwQD33zzzc2bNz/++GOpVGpra0suQlFRUdu2bTMyMnJ2dm73vpCm6ZycHDMzs0mTJpGQb/DgwUZGRj169Fi2bNnNmzcvXrw4efJkiqIWL15Mrn9JSUkymczV1fXEiRMPHz48ceKEvb29ra0tuXxu2rRJKBSeOnWKyb+pqcnf379nz57kxjE2NlYmk5mYmEycOPHcuXNnz54NCAggjyonT5588eLF0NDQSZMmURT1ySefMDcEbbhy5YqhoaG9vf2ePXtiYmIOHDjg4+NjbW0tkUiYkC8mJsbKysrGxmb37t0JCQl//fWXv78/j8fbtWsXScAO+eRy+apVqyiKmjBhQkhISGxs7JdffmloaNinTx9yw0puhcmT4PXr158+fTo5ObntQlZVVY0ZM0ZPT2/Tpk1paWmxsbHjxo2jKOrnn3+mabqoqMjd3d3f37+qqio3N/fEiRPm5ub9+/e/evVqfHx8U1NT25nL5XKmpt28eTMpKWnLli26urp9+/YlNa0T27ywsNDX19fIyOjzzz+PjIw8f/48qQafffaZSqXKz88/d+6ci4uLi4vLuXPn4uLimJtv7ZWVlY0dO1YkEi1cuPDq1avXrl2bNWsWRVELFiwgNe2XX34RCAT9+vU7evRoQkLCTz/91LVrVzMzsytXrpAcVqxYIRAInJ2dP/rooxs3bpw8edLf35+iqG3btpEEbdfVtteRpul79+65uLiYmJisX78+Ojr6zJkzQ4YMoSjqv//9r1qtTk1N/e677wQCwcyZM8PDw1NTU2mabmxsnD17tlAoXLBgQVhY2PXr15ctW0YCwrq6OvKWYMmSJQKBYP369RERETk5ObQWRw3ZFObm5pMnTz58+HBoaGi7G/z3338nN6Z//fXX3bt3jx8/7u7urquryxwUcXFx9vb2Mplsy5Yt0dHRR44cCQwMtLa2FggEISEhTBmcnJxKSkrI1haJRE5OTlOnTg0JCblx48bSpUvFYvGQIUOKi4tp1pmE3Fzu3LmToqg333wzOjo6PT1948aNFEVNnTpVLpfTNH3+/HljY2MnJ6cffvghNjb2l19+cXJy0tfXJzv34MGDFEXt3buXpmmVSvXmm29KpVIXF5eNGzdGRET88ccfffr04fF4hw4dIuuyf/9+oVDo5ub2888/x8TE/PDDD+R1kJmZWXx8fLtVUa1Wb9u2jaKokSNHnjx5MiYm5uuvvzY1NXV1dSU7SCPkmzJlio2NTVpaWllZ2fXr1318fCwtLU+ePBkVFVVZWdnu4tiUSuXq1av5fP7ChQsTExNTU1OXL19OUdTSpUvJZmy3lra7H9vVbg5qtXrr1q0URQUFBZ06dSo+Pv7bb7+1sLCwt7dnHoS1LTY21tLSskuXLmR3//HHHz4+PhKJ5NixYyTB8uXLJRJJbGwsSWxoaPjuu++yc9i0aZNIJCKPRdo+rknIZ2xs/Nprr/35558hISHjx48njzxGjRp18uTJa9euzZ07l6KoefPmMUe6s7OziYnJV199FRcXd+HChVGjRlEU9cUXX5C9UFtbO378eB6PN3/+/LCwsLCwsPnz59vZ2UmlUo1ytqi4uLjFenL+/Pnne60nIZ+tra2rqyvZm0ePHvX19aUo6ocffiCFKSgo8PHx0dXVXbduXUxMzOXLl6dPn05R1KJFi8ixGRsba2Zmpq+vP3jw4J9++un8+fOFhYXa7GUADkPI92/XdsgXEhIiEommT59OTqPEZ599xpx8VSrVW2+9xePx/vvf/zIJ6urqhg0b1qVLF+bZOU3Tt27dMjc3nzZtWlNTk1qtfuutt/h8PrkfomlaqVROmTKFuUMi3n//fbFYrM0lPycnx8LCgrxglMvl5KZ2zZo1TIKqqqqRI0caGRlFRUXRNL1nzx6Kog4cOMAkuHLlytq1a+/fv0/T9ObNm8Vi8enTp5lfm5qaAgICnJ2dmZDPyMioT58+zAulyMhIAwMDNzc35nXWgwcP7OzsgoKC2r2vra+vnzRpkr6+/oULF5iJt2/ftrKyEgqFly9fpmm6sbFx+vTpenp6Z8+eZdLk5eW5uro6OTkVFBTQ/wv5yFuFmJgYU1PT4cOHs+/efvjhB3KbRdM02UoSieTPP/9sd/MSqampFhYWkyZNYhfg888/JxuqqKjIw8MjICCALLGwsNDW1nbkyJFaZl5XV7dt27atW7fW1dUxExctWiSRSMhrig5tc5LJli1bRCIR89qTpun6+vrXXnvNxsbm0aNHNE1XVlZ6e3t7e3t39B6XcejQIT6fv3LlSnLXRVZk0qRJLi4uDx48KC0t9fT07NatG/tJ/M2bNw0NDcePH0/C4JUrV5IwlUkQHx9vZmY2fPhwshZt19V215Hk/8svvzAJHj586OnpOXLkSLLW4eHhQqFw7dq1TILQ0FCJRLJ06VL2mq5cuVIoFDIvTL799luBQMA8y6e1OGoOHTpEUdTkyZPr6+u13LynT59es2YNCUSJs2fP8vn8L7/8kqZptVq9aNEiHo/322+/MQkyMzN79epFURQT8gUEBPTo0YOEfB988AF5DsJUM7Va/eGHH/J4vP3799P/90yiUqnGjRsnk8ny8vKYxLt3796+fXtDQwM5y8lkMnKLz2w6W1vbFStW0P+rG2TXkPMkRVHfffcdkzgsLEwikcyaNYum6YqKir59+1pYWCQmJrJzMzExMTU11Sbky8rKsre3HzZsWHV1NTPxl19+EQqFmzdvppuFfFOnTrW1tSXDV9A0PXz4cHt7e/Z7Oe1VVFQMGDDAxcWFPJ2habq2tnbHjh0//vgjqeRt1FJyl9/ufmybNjXh0aNHtra2Xl5e7HU8duyYRCJZuHAh+71xi5qamkjLTPYr0EePHjk6Og4ePJhUpxUrVujo6DAhH7O1GZs3b5ZIJOQc3vZxzYQ9GRkZzOpYWVlZWVk9ePCATCkvL3d1de3du3dFRQVZusaR/vTp04CAAGtra/I479SpUwKBYNasWczKKpVKEjdqE/IRGvWkrq4uKCjo+V7rc3JybG1tRSIR+xuf9PR0Jycnd3d3crbfsmULRVGkO1yioaFh0qRJOjo6ZAeR7d+7d29tHhkD/Eugx05oS0hIiEAgmDNnDvn6i5g+fbqNjc3FixflcjmPx1OpVObm5kFBQUyCjIyMuLi48ePHOzo61tXV1dXV1dfXOzs79+vXLykpqbi4mMxlZmbm5+dHZhEIBDY2Nnp6euwGHo6OjjRN19bWdrTYNE0bGxvPmDGDmWJoaDhr1qyqqqqoqCiKoqysrPh8/tmzZ5OTk8nIVEFBQZs2bWI+rdSGr68v812Kubm5kZGRk5MT07LCxMTEwsKitra23WGacnNzY2Nj/fz8hg0bxkwkN+UkkKAoKi8vLyIiws/P77XXXmPS2Nvbv/322w8fPoyNjdXIMzw8vLy8/J133jEyMmImTp06tWfPniEhIaQBm1qttrGxCQwM1HJ9DQwMZDLZnTt3Tp8+XVlZSQqwfv36CRMmNE9MOuqkaVrLgb90dXU//PDDjz76SFdXl6bpmpqap0+fGhsbq1Sq6upqJpmW21yhUDQ0NISGhjo7Ow8fPry+vp7UQz6fP2bMmKKiItJvIXPr07nRydRqdUhIiIGBwbx58/h8PrMix48fT0hI6NatW1xcXFpa2uTJk9mtUAICAoKDgyMiIrKzs8kmEolEI0eOZBJ069bN0dHx6dOn9fX1FEVZWlq2Vldra2vbWMfk5OS6ujrSNQt5qUJ079791q1bf/31F2m4SPYUe5CGixcv6urqTpkypbGxkeTZ2Ng4YsQIsVgcExND0pCO2jvUXTtN0zweLzg4WMvOMymKmjBhwubNm8k5oaGhoby8XCQSCYVCUv3Ky8uvX7/u4eFBXoAQTk5O7D9bLMP06dOZ78F4PN6sWbP09fWvXr1K/mQS83g8a2vrsrKy3377jbRp5PF4ixcv/uCDD6RSaXp6+q1bt8aNG0fePxDDhw/PzMzctGkT1WxEOHLGGzp0KDPFzc3NwsKCvHxIT09PTU0dPXp03759mQSBgYEDBw7UciNHRkYWFhaSNypkrzU0NAwaNKhLly6RkZFqtZqpos2RA4H6X2XoKIlEYmVl9fjx4yNHjhQUFFAUpaent3LlynfffVcsFrddS+/cuVNTU9PR/ahBm5oQGRn55MmTWbNmsVvSjho1ysfH58aNG6TYbcjLy4uMjBw8eLCnpydZi/r6ehsbmyFDhiQnJ+fl5WlZVEYbxzVJQBpa9+jRg/xpampqYmLi4ODAfJhqYGBga2tbV1cnl8urqqpCQ0P79OlDvnQgZDLZ7NmzCwsLyVXv6tWrIpFo5syZTNMAgUAwffp0iUSi5RgtzetJRkZGbGzsc7/Wq1Qqd3f3MWPGMAmcnZ0nTpz44MGD1NRUuVx+6dKlrl27Tps2jUkglUrnzJmjVCpDQ0PJFJqmBw4c2LVrV21WDeDfAN23QKsUCkVubq6ZmZmDgwN7urm5ub29fUFBQU1NjUwmI/es7AT5+fmNjY1nzpwh72coiuLxeDRNZ2RkiMXiqqoqe3t7Mhf7BkutVpNkzBS6s92CqdVqMmAAe2L37t2lUml+fj5FUcHBwTNmzPj111/Dw8Pd3Nx8fX3Hjh07ZMgQ7btT5/F47Ibv5JLJLj+JJbTJqrS0tLq6mhSPPd3JyYkpT1FRUUVFhbOzs0aanj17ikSirKwsjTxzcnJ0dHR69uzJnmhiYuLk5JSSklJVVWVpaUnTtFAo1H4j29nZrVy5cuXKlW+88UavXr369OkzfPjw0aNHd6KnhxbJ5fKQkJBTp05lZ2fX1dUpFIqioiLSdIQk0H6b8/n8qqqq0tJSMiwbn89nppeUlKjV6sLCwmcvcENDQ3Z2to2NDdNXASEUCkk58/PzFQqFRjcVPB7Pzc3t7NmzBQUFpFmXUCjU6DFPIBAw0f5rr73WWl1tex1JnSkuLg4ODtboJUUikbTWm45CocjPz6+rq1uyZIlUKiUbmc/n19TU1NfXl5eXP8sW4/F4GueKdiUlJR07diwpKam6uloul5N/SfRSUVFRWlo6dOhQjbXr3r27xpmEQdO0RCLRuAskL0/Iqzx2Sj6f/+6778bGxn7yySc//fRTnz59Bg0aNHnyZHIXnp+f39DQ0LxLidYCWrJodgUm9ZlEocXFxXK5XOOAlUgkXbp0IZ3Ktis7O1utVu/YsYO0LiP5KxSK7OxsmUzW2Nj44saK0NHRWb58+Z07d95///3//ve/7u7uQ4YMmTBhArlwtFtLKysrO7ofNZSXl7eRA/n/o0ePJBIJE0ERBgYGPXr0uH///tOnTzUucxqKi4urq6ujoqKCgoLIeYbknJ2dTZ5PabWlWNo4rkkCUmHUajVpOkg+Vtc43ZH/8Hi8srKy4uLioKAgjS3g7OwsFovz8vLIp+wymUyjCxMbGxtTU9OODsvJeEHXerVa3bVrV41+kpydneVyeXFxcVVVVWFhoYODg5mZGTuBo6OjiYkJ83RG43oBADgeoFU0TatUKoFAoNHvGY/H4/P5zC1pc6TlgKmpqcatVY8ePchAVZ2O5bTHDhUIgUDA4/HItU1fX3/fvn0TJkw4c+bM3bt39+7du3Pnzvnz52/durXFAKbFu6XntRZqtbrFZ/DkosWkIRGaRhoypfl7gBZ3HEmvUqk6d4Hn8/nz58/39PQ8duzYrVu3Ll++/Ouvv/bt23f//v0d7eK/ufr6+v/85z+//vpr165dnZ2du3TpYmJikpKSQp5PM7Tf5mq1WqVSicViR0dH9nbo3r374MGDO/Q6tw1kO7d2M032S/O9JhAIaJrWci+0Vle3b99OFtHaOjo7OysUirZL2BwZY10oFNrb27Nvufh8vpeXF+l5RUvPeNTQNH3w4MHly5cLBAIPDw9HR0eZTFZXV0d6kaH+d1A0r+Rtryz7sCJIFz4kN43Effv2vXTp0uHDh2/cuJGWlnbhwoXt27dv2rRp4cKFTDCs5eowK9Xi9Obnq7bTN6dQKHg8Hglf2cGAq6urm5sbE2u9IIGBgdeuXTt69OiNGzeSkpJOnTq1devW7777bvLkyW0fic7OzuR60dH9yKZNTVCpVC3GAEKhkJyB216EUqlUqVSGhoZdu3Zlb0knJycDAwMtB2Zgl0eba5CWu4xc11QqFRnXh/0T+6pHtoBGgmd8EPDirvXNC0aOEbKm5GqosS5kTCP2m+q/4U4D4B8EIR+0SiQSWVlZhYeHl5SUsAcDqKysLC4u7tatG/NxlAYLCwuBQDB27FjSULC5Dn0P1gl8Pr+0tLS8vJyMOkU8fvy4oaGB+apHLBZPnjx58uTJ1dXVqampmzZtOnDggJ+f35w5c5o/WlYqlQ0NDS/oMbmpqam+vn5eXp5CoWC/AyHdnbPT5Obmkttx9kopFAobGxuNPK2trevq6h4/fsx0YUdRVH19fV5enpmZmaGhYaevhaTxm0KhePjw4R9//LF58+bt27cfOnSoxY2j/RZLSEg4fPjwyJEj9+zZw3Ts9vXXX5OGGR0tJE3T+vr6BgYGenp6v/32W9tfEnZ6t0qlUhsbm5iYmPLycvaTApqmlUqlQCAgB0Lzd7DZ2dk6Ojraj9/VYl0NDAycNGlS2+tYVFRkamqanZ3d2NjIfj9MbpuEQiH7DSqzLFNTUz09vR07djB9S7ZG4zPI53vUlJeX792718DA4MCBAyNGjCD5JCcnkwaEFEUZGRkZGxvn5OQ0Njayz0UkJmytQjY2Nmp8xVdWVlZaWkriouazWFlZkZfb+fn5MTExH3zwwZdffjlq1CgbGxuRSES+zmUjj1Q69DKTpmlbW1upVJqWlsae3tjYmJ2drWX9t7Ky4vF4y5YtY3/ax9bpNzla6tq165o1a9asWZObm3v58uU1a9Zs3LgxICDA2Ni43Vra0f2ooe2aQP5va2vb2NhIRlJhkCmGhobtfqpgamqqo6Pj5+f3888/t1sehsa+q6urY++FNq5B2i+Coii1Wm1sbEyO9IaGBvZGzsvLI4OLkNNRRUVFSUkJ+7guLS2trKzs6JMLxgu61vP5/MePH2vszezsbDLevaGhoampaWFhYXV1NfuxVElJSWVlJbkaItgDaA5t+YCiWhmslsfjDR06tKam5uTJk+zply9fzsrKGjx4sK6ubou3Ea6urs7OzidOnGB/PqdQKBISEu7cuaNUKl/cJ0ZMycvKys6dO8dMUSqVf/75p46ODhl67sKFC3v27CktLaUoytDQcNCgQXPnzqVpOjc3l6IoMzMzhUKRlJTEzB4ZGZmenv6ChvR1dHR0d3ePjo5mLzErK+vy5cvMlZgMOhQREZGYmMikqamp+euvvywsLNitiYiBAwdKJJLjx4+zH3lev349NTU1ICCgcyFfWlrat99+SwogEolcXV3fe++9Ll26ZGdnNzU1tfiWUi6Xa/lpTVlZmVKpDA4OZuI9pVJJPhbqRG1Rq9WGhoZ+fn4pKSkhISHsnzIzM6OioqqqqsifzKvsji6CoiiBQDBkyJDS0tJTp04xE2ma/vTTT19//fXHjx/7+PjY29ufPXu2pKSESZCRkXH58mVPT0/22ANtaK2uZmVl6enp+fv7t7GO5ubmfn5+SUlJN2/eZH4tKyubM2fOkiVLampq2BuB/J8c9U+fPj127Bg7z8LCwoiICHawpPGi8rkfNXV1deXl5c7OzsHBwUwdiImJYb5RNDMz69+/f3JyckREBDNXcXHxpUuX2siWpmkyODsz5ezZs+Xl5QEBAexk5FvWn3766cSJE2SKnZ3d1KlTg4KCSkpKCgsLXV1de/XqdeHCBXZIf/fu3TFjxpAXsNrXW5VK5ezs7Ovre/HiRfaeOnv2LBk1UZtMBg0apKOj88cff7AbplZXV0dHRz948EDLYnTuzFxYWPjDDz8wm71Lly4LFizw8fF58uRJaWmpgYFB20di5/YjmzY5DBo0yMjI6M8//2xoaGAmxsfH37p1y9vbu90R28hZOiwsLDU1lT399u3b8fHxcrlcI72BgYGurm5qaippd0pRVFFREenKlWzktq9BHdoRNE3LZDI/P7/ExET2FpDL5X/++aeBgQG5QJBuZk6fPs2e9/Tp0w0NDR0K+dj15AVd6/l8/t27d9mfeBQVFV28eNHBwaFXr166urr+/v4ZGRlhYWHsuU6cOEGGaOrEEgH+DRDy/duRM3JKSsrVq1cv/09oaGhsbKxarR49enRgYODu3bt37tz59OnTmpqaI0eOrFu3rnv37qRP5BYjB1NT03fffff+/fsLFy6MjY2tq6t78uTJJ598EhwcTHrte9EhH0VRIpFo9+7d+/btq66uLiws/Oyzz44fPz5y5EjyZVpcXNzixYvXr19fUlJSX19/7969AwcOCIVCd3d3iqJ8fX1NTEy+//77HTt2REVFff/99x9//PELivcoijIwMJg7d255efmyZcuio6Pr6uoSExPff//9iooKJl7S19f/z3/+U11dvWTJkqioqPr6+kePHq1YsSIiIuKdd95hBw9kj/j7+0+YMOHw4cOffvppUVFRfX39uXPnli9fbm5uPnv2bKpTD0GfPn26atWqBQsW3Llzp76+/unTpz/++GNeXp6np6eOjo5G8E8+drp9+/axY8fu3r1LeiJpg5OTk7Gx8dGjR8lg9Pn5+WvXrg0NDe1cYwxSmDlz5shkshUrVhw/fryqqqqmpubo0aPBwcHLli0j/QTo6upaWFikp6cfOXKEjCNM5iVdX2izoEmTJnl6em7cuHH37t0VFRVlZWXbt2/funWrSqWSyWQODg5z584lezMjI6O+vj4uLm7RokWlpaULFy7UaKnSmtbqau/evSmKmj17dhvrKBAI5s6dq6+vv2TJkrNnz5KvIj/55JPffvvNxMSEFMDc3FxPT+/y5ctXrlwh3e6NGTPGz89v27ZtO3fuLCoqqqurCw8PnzRp0rRp00g7GYqibG1t1Wr1iRMnYmJiyEQfH5/ne9TIZLIePXrEx8cfPXq0vr6+trb2999/37p1K/NlJulZSiwWr1ix4tKlS3V1denp6cuXL3/48GEbt7A8Hi8kJOTzzz8njYL27du3adMmNzc3MuII+7jg8Xj79u2bNm3a0aNHSdcU58+fJ/1G2NvbGxgYvPvuu7m5uQsXLrx161ZdXd2dO3dWrlwZGhpKhufu0CespL8T0r3h2rVr9+3bt2zZsi+++MLc3FzLQ8Dd3f3tt98+efLkBx98kJmZWV9fn5aWNn/+/BEjRoSHh7c9r1AotLGxKSws/P3332/fvl1WVkZRlEqlqqura7f3KYqiFArFN998M3369AsXLpA9dejQoaioKGdnZ9LMte0jUSgUdmI/apS/3Rzc3NxmzJhx+fLlDz/8MCcnp76+Pjw8/P3331coFO+++65GG+nmyO4uLi5+9913b968WVdXV1JSsmXLluDg4G+//bb5vra3t/fy8oqKilqxYsXVq1dPnjw5f/78rKwspg1t29egDp2fSRg5b948AwODpUuXkg66CgoK1qxZc+rUqddff93b25uiqJEjR/r4+OzZs+ebb74pKysjJ6ujR49qf45tXk9e0LWefDKwZs2a0NBQZm8mJSXNmDGDHFyzZ8+2sbFZvXr1iRMnamtrS0tLv/rqq/37948YMYLdCxoA/B80/Lt9/vnnLVaMPn36kM6+U1NThw8fTlGUVCol94h9+vQhQ+7QNK1UKseNG2dsbHz37l12to2NjZs2bSJjfOvr6wuFQoFAMGnSJNJHQotzLViwgMfj3bhxg5ny1VdfURSlzWjs2dnZenp6o0ePZsblc3Z2/vTTT42MjCQSCfnIKigoiBlBvri4eMqUKXw+XyqVkibgenp6n3zyCek+nvSCwLSDNzEx2bBhg7e3t4ODA+nqPSYmRiQSvfPOO0wB7t27Z2JiMnLkSGY0i+LiYmdnZw8PD6bj8jYoFIqNGzeSHhR1dXX5fP6oUaOWLVtGURR7JOIffviB3EIZGBjw+XyJRLJkyRJm8Nn9+/dTFLV7927yZ15e3uTJk8k44yTnbt26MSNlNzU1kWfb2nfLrlQqd+zYQboANTMzIzdJw4cPJ4MBFBYWOjk5eXt7kx7DaZr+9ddfyYe1BgYG7fYyT0bN0tfX5/F4MplMIpF4enqST9RIz92d2+YXL14kHbXr6OiQb4R69ep16dIlJpOQkBDyIZBEIiF1LywszMzM7P3339dmQEWapslbAorVJ0pAQAAzKkNtbS0ZoJnH45G9YGpqunPnTqaz0MWLF1MUFRMTw2T49OlTDw8PZ2dnMlJc23VVm3U8duwY6eVPR0eHtPCcOXMms4mUSuUnn3xC+o/p3bs3GU7w7t27wcHBFEWJRCJyIFhZWf3www/MNikvLyc9rVMUNW3aNDKx7aNGo35qIzIyknxSTj4ONDc3f+eddyiKWrJkCUmgVqt//PFHUs3I92yBgYGrV6+mKIoMeM3Uc7IxV6xYYWBgsGHDhq5duwqFQlKHnZ2dmdMOcyYhjZRu3rxJet8hnw6Sg4gZe7CpqWnz5s3kiCBb3sDA4IsvviA7l72+ZLwHjTNeQUGBpaWln58fU4HPnDnj4+NjaGiop6fXrVu33bt3L1iwwMTERJtBGkhVmT9/PtmVpLKRSJKMeM4+gpqXJyoqiumKhnT0//vvv5uYmJABHtp15swZUsdMTEzIonv16hUeHs4kaLuWtrsf26VNDiUlJQsWLBCJRAKBgBTSxsaGPUxCu3bt2kXOwHp6euRgf+2115hBRDSOZRL0kk0qEAhmzJhBEpw8eZJu77jWqIek8A4ODh4eHsyBL5fL/fz8LC0tySA9NE0fO3aMdEKjr69PVnPatGns8ehiY2N9fHwoihKLxaThxpdffmlhYTFjxgwtt0DzevLcr/U5OTlWVlZjx45dsGCBWCzW0dHh8XgCgWD+/Pns0XQuXbpEjk19fX1yII8dO5YZ06L59QIAtOoOCziMdA7evBqYmpoGBgaS538VFRXXrl1LTk6Wy+Wurq5BQUF2dnYkGU3TsbGxZWVl5HNBjUwSEhKioqLy8/ONjY29vb39/PzIHWGLc925cycnJ8ff35/phov0yOzr68ssrjX19fVXr141MzMbMGCAQqEIDg4uKSm5fv36gwcPrl27JpfLvby8hg0bxu7gq6qqKjw8PCkpqaqqysbGpn///oMGDWJeSqhUqtjY2ISEBIqifH19vb29o6OjGxoayFh25eXlERER9vb2TI/qNTU14eHhJiYmAwYMIM+Vm5qaIiIi+Hy+v7+/Rn+MLVKr1bGxsTdv3iwrK3NxcRk3blxNTc2dO3f8/f3ZvYqnpqZev349NzdXJpP1798/ICCAaTWUm5ubkJDQt29fpiV9bW1teHh4fHx8XV2ds7NzYGAg0yZTrVaHh4c3NjYOHTq0tc4bmyM7Ljo6+smTJ/r6+l5eXoMHDzY1NaUoqrGxMSIiQiQS+fn5kSLRNJ2QkEBGqXrzzTfbbbqmUqmio6OvX7/+9OnTHj16jB49Wq1Wp6SkkC3Q6W2el5d348aN+/fvCwQCFxeXwYMHa3TNl5ycHBMTU19fP23aNFtb223btq1atWrv3r0LFy7UcrMUFhbeuHHj7t27FEX16dNn6NCh7N5iVSrVrVu3IiMjS0tL7ezsAgIC+vXrx156VlZWYGAg2YwURcnlctKrfkBAANk1bddVbdYxIyPj5s2bmZmZ+vr6/fv3J19lM782NjZGRkampKTIZLIZM2aQnCsqKm7cuJGcnNzQ0NCtWzd/f3+NrkfLy8tv3Ljx6NEjNze30aNHU+0dNc3rpzYePHhw+fLlzMxMExOT4cOH9+zZMzIyslu3bh4eHkyapKQk0s++o6PjxIkTeTzerVu3/Pz8rKysNOr5ypUr9+7de+PGDR0dnfPnz5eVlfXs2TM4OJgpEvtMwnTJeOPGDXIr2aNHj8DAQI1eH2NjY6Oiop48eWJhYTF48OD+/fuT2she3xbPeI2NjdevX9fX1/fz82NeRlVVVWVkZDQ1NdnZ2XXt2vXdd989fvx4WFgYeazQLrlcHhERER8fX1ZWZm1tPXDgQF9fX7JD2UdQi+XJzMy8efNmeXn5+PHjXVxcPvzwwx07dpw5c0bLwRLu378fERGRmZkpEAjc3NwGDx5MXsgw2q2lbexHbQqgTQ5yuTw8PDw2NraystLR0XHo0KEkENXevXv3bt68mZOTY2Bg4O7uHhgYyLQDbH4sZ2ZmRkZGlpWVOTk5BQcHFxUVpaSkDBw40NrammrzuG5eD5uamm7cuCESiQIDA5k+PKOiompra4cOHcq8pczIyAgPD8/MzNTT02t+pFMU9eTJk7CwsPv37xsYGAQHB/fu3Ts8PNzS0pJ9UmqbRj0hE5/jtT43N9fX13fw4MEHDhy4cuVKXFycVCodOHBgYGCgxsvYvLy8a9eupaeni8VicolnBiVqfr0AAIR8wDVyuZxcXKOiorTvIQOAoii1Wj179mzyeTO75xvghpUrV/744483b94k7zpeHbW1td988w2fz1+1ahXzEKehoYG8uLh69Wq7Xek8X3K5fOzYsQ8ePIiOjm7eOxTAi0NCPn9/f6YZLQA8F+ixEzgLjzOgoyorKx88eNCrV69u3bq97LLAi/IKnhnEYnFycvKJEycqKysXL15sYWHx9OnT3bt337x5880332T6NPrblJWVPXjwoH///tq/YQN4vjrdsRYAtAghH3CQXC4nzWNedkHgHyY3N/fhw4eLFi0iTX2AY5RKJWms+LILokksFm/evFmhUOzcuXPHjh06OjoNDQ0CgWDMmDEbN27U/tPr5+XBgwcFBQWBgYGd7r4foHNomm5qamJ3PAsAzwU+7ASuUavV0dHRjY2NTFMoAC09ffr01q1bHh4eGq2MgBtSU1Ozs7P9/f3bHYftpaipqYmOjr537x4ZU9Td3b1///4v5enDkydPkpKSfH192Q2JAf4G9fX1N2/elMlkPj4+f0Pn3gD/Hgj5AAAAAAAAOAvfbAAAAAAAAHAWQj4AAAAAAADOQsgHAAAAAADAWQj5AAAAAAAAOAshHwAAAAAAAGch5AMAAAAAAOAshHwAAAAAAACchZAPAAAAAACAsxDyAQAAAAAAcBZCPgAAAAAAAM5CyAcAAAAAAMBZCPn+7fLy8lJSUhQKxbNnpVar79+/n5mZSdO0lrOUlZUlJibW1dU9+9K5TftNylXYAv8IzG5qamq6c+dOQUHByy1PG17lGvVqbr0Xt8U6ur6FhYVJSUlNTU0vqDwvlEqlSklJycnJedkFeW5wHWe8ymcVAIR8/2olJSVz584NCgq6cuXKs+d2586dsWPHTpo0KTMzs7U0OTk5b7755rfffktRlEKh+PTTT4OCgvbu3atN+udFrVYrlcrne2ruUJ5KpfLDDz+cN29eZWWlNumPHDkybty4W7duPVMRX5LnsrW//fbbqVOnPnjwQMv0x44dGzduXExMzLMsFDrqp59+mjBhAtlNZ86cCQoKWrx4sZaV/G+WkJAwatSoAwcONP/p8ePHM2bM+OSTTxobG8kUmqaVSqVarf7bivcKbr3z58+PGjUqISHhRWTeofVtaGhYsmRJUFDQn3/++SIK86KFh4cHBwe/9dZbpaWlL7ssz4E21/FXxws9lisqKubOnfvRRx+pVKoXkT/AM0LI968mEAhkMpm5ubmuru6z5yaVSi0sLCwsLMRicWtpqqqqQkJCkpKSKIri8XgmJiYWFhZGRkbapH9eDh48OG7cuLt3776sPNVqdURERFhYmJZPqdPT0y9cuFBYWPhsZXw5nsvWvn379vnz57W//X3w4MH58+f/oVvsn+vu3bvnzp2rqKigKEpPT8/c3FwmkwkEgpddrhYUFxeHhoampqY2/6m6uvrSpUtRUVHMfduNGzfGjh17+vTpv614r+DWy8rKCg0NLSoqehGZd2h9+Xy+TCazsLAwMDB4EYV50XR1dS0tLc3NzV+dnfsstLmOvzpe6LHc2Nh4+fLliIgIvOuDV5PwZRcAXiaZTHbw4MGGhgaZTPbsufXq1SskJITP5xsaGraWhs/nS6VSEhMKhcIvvvhi6dKlFhYW2qR/Xh4+fHjp0qV169a9xDwlEolUKuXxeNokFolEYrH4H3p/8Fy2tlgs1tHR4fO1fUQlFAr/uVvsn0skEuno6JBaPWbMGF9fXwMDA6lU+rLL1QJSN0QiUfOfyDlHIpEwU0pLS0NDQ8eMGfO3Fe8V3HpCoZD633Z77jq0vhKJ5Pvvv6+urjY3N38RhXnR+vfvf+PGDalUqqen97LL8hxocx1/dbzQY5nH42mcOgBeKQj5/tVoms7Ozq6urvbw8NDT08vOzs7Ozvb29m5sbExMTKypqTEzM/Px8dF4mKpQKG7fvv348WOKorp06eLl5UXuA+RyeWZmplAodHd3J/cHFEU1NjYmJCQUFhZKJBIvLy9mOvHkyZPc3FyBQGBmZqZN+uzs7KysLA8PD+Zir1arExMTFQqFj4+PSCQqKChIS0vz9PQUCoVxcXGVlZUmJiZ9+/YlMW1VVVVSUlJWVpZAIIiOjq6trXV1dXVwcGh7K2VkZOTn53t7ezNPMeVyeWJiokgk6tu3b21tbWJiYkfzbK6ysvLOnTulpaUCgcDR0bFPnz4ad1dCobCioiIuLq6qqsrU1LRfv34mJiYamZSVld2+fbu8vFxXV9fFxcXJyYn5iWyZPn36KJXK6OhohUIxduxYfX19iqIaGhoSExOLiorEYnH37t3d3Nw6VPLq6uqkpKSSkhIdHR1XV1dmoZ3b2kRmZmZ6enpDQ4O9vb2vr2+LwV5hYWFKSkpVVZW+vr6Hh4ednV0bGdI0ffv27dzcXJVKZWNj069fP+bCTPamjo6Oi4tLfHx8VlaWl5eXh4cH+fXBgwcZGRlNTU3m5uZeXl5tPM5gI3lKpVI3N7ekpKS8vDxDQ0MfHx+ZTKZUKuPj4/Pz83V0dPr06WNvb8+esb6+PikpqaioiMfj2draenl5adxAMFtbV1eXHJu3bt2ys7Pr2bNnY2NjbGysubl5z549ExMT8/LyRCJR79692dWASE1NffjwoVwuNzU19fDw6NC9WrslZMqZkZFhYWHRs2dPZuLjx4+Tk5Pr6+utrKz69+9fUlKSkZHh5eUlk8lIbbGysnJ1dWXSNz/etVz6c8Hj8eRyeVJSUmJiIp/PT0tLu3Tpkr29vZYHCHOeFAgEXbt2dXd3Z6oxOU5dXV2NjY3j4uJKS0v19fX79u1rZWVFErC3XqfrUttKS0uTk5PLy8slEknXrl2ZCs8oKipKTk6uqqqSyWQDBw7UPtgj52S1Wt23b19S03R0dPr162dtbU0Ow6ysLHKZ6N69e/P1pWn67t271dXVvr6+eXl59+7dk8vl9vb2Pj4+TBkeP35cUFAgkUgMDQ2Zcz5N07GxsQ0NDd26devbty+PxyNN/urq6mxsbHx8fLSpKrm5uenp6RpnKpVKFR8fL5fLfX19SVBKVoS0x7Ozs+vbty9zqSI12cHBwd7ePjY2trCwUFdX193dvUuXLiRBY2NjRkaGoaGhm5sb89QvPT394cOHdXV1RkZG7u7utra2ZPoL2vsaampqkpKSiouLm59VqDavgORS2/w6/vjx47t379bU1BgYGLi7u2tZtnaPC6K1OxBGRUVFUlJSWVmZRCLp2bMnOaU0NTXdvn27+bFcXV2dmJjYpUsXMzOzqKiokpKS4cOHS6XSxMTE7t27d+3alcmWbAcfHx/mKqBUKslOEQgE7u7uRkZGWj7GBXg5aPgXUyqV06ZNc3BwSEtLo2n6q6++MjEx2b59e0BAALmA8fn8qVOn5uXlMbOQhi7MKc/ExGTBggWlpaU0TRcVFXl6egYGBlZWVpLEOTk5b731FvPg1tPTc9euXdbW1vPmzSMJvv76ax0dnTNnznQuPU3TTU1NgYGBvXr1evr0KU3Thw4d0tXV3bBhw7hx45h3g0FBQenp6TRNx8XF2dnZkcsDec/2ww8/tLuVVq5cqaenFxcXx0whazpkyBASG3c0z6ampoCAgB49ehQXF5MpkZGR/v7+zB2JqanpO++8U1RURH7dsGGDjo7O9u3bX3vtNfJegsfjDRkyJDY2lp1tWFhY//79mTsPR0fHXbt2KRQK8uuhQ4f09PRWr149cOBAsoisrCyapu/duzdhwgQdHR0yl5WV1bp162pqatrdLER8fPyQIUOYTd2lS5etW7eShXZua6tUqr179zK3R0ZGRmvXrp05c6apqWl8fDyT7MSJE25ubsw9tIuLy6FDh5hfN2/eLBaLT58+Tf4sLS19//33TU1NSWI9Pb033niD9DNE03RRUVHfvn2HDRu2ZMkS8oXzl19+SdO0XC7fsWMHE0lKpdJhw4bdunVLm81SVFTk5eUVHBy8evVqZrmjRo26c+fO8uXLmSmenp7senXnzp0xY8YwX1kbGBiwy0nTdHJycnBwMFMHBg0atH//flNT0w8++ICm6dzcXBsbm+nTp3/44YfMe/uuXbseO3aMyaGqqmrlypXMLZRQKPT09Dx//rw2K9VuCVesWKGjo0OqZVxcnEwmW7x4MTPv0aNHXVxcyIz6+vqLFi1av369VCq9fPlyi+lpmv766691dXXPnTun5fbRXkhICEVRH330UfOf0tLSbG1thw8f3tjYWFJSMmjQIHJMiUQiiUTy7rvvqtXqdvPPz89/++23mfOkmZnZf/7zn7KyMvJraGiorq7uunXr3nzzTeZVz4ABA5jKwN4axcXFnahLbTt//ny/fv2Yc4WlpeUHH3xQUVHBJLh8+XKfPn3IrxKJZObMmZ9++qlAILh48WK7mZNzct++fTds2MDUtICAgPj4+PXr11taWpIpzs7Oly5dar6+KpVq2rRpzs7O27dvd3Z2ZirMRx99VFtbS9Kzz8nkzPbZZ58FBQWRE4Kpqel333138+ZNJkqUSqVLly6tr69vt/BnzpyRSqXvvfceey/fv3/f0tJy2LBhdXV1dLPziZGR0cyZM3Nzc5l1sbCwWLhw4XvvvcdUgF69eoWFhZEEOTk51tbWU6ZMIY2c6+vrN23axJxneDxer169fv31V5K4c2eSDrl3797IkSOZs0pAQMDBgweZswrd5hWwqqqKbnZdPnLkiKurKwl+yOpoeYZp97igafrx48dvv/02E3waGxu/8847hYWFTILo6OjBgwczL/Dt7Oz++9//qtXqFo9lmqbj4+MtLS1nzZr1xhtvkDJfvnz5xo0bYrF406ZN7OKtXLnSwMCAuQw9ffp04cKFzC52cnL68ccfe/bsGRgYyFx2AV4pCPn+1ZRK5ZQpU2xsbO7du0fT9ObNm4VCoYODw/vvv3/lypXz58+PHTuWoqgPPviAXP/KysrGjh0rEokWLlx49erVa9euzZo1i6KoBQsWNDU1FRcXu7u7+/v7k5CvtrZ2/PjxPB5v/vz5YWFhYWFh8+fPt7Ozk0ql5FRL0/SmTZuEQuGpU6c6kZ5oamry9/fv2bMnCTt/+eUXgUBgb28/a9askJCQy5cvv/XWWxRFzZgxo6mpqaam5tatWzNmzBAIBN9//31kZOSTJ0/a3UrLly+XSCTs+KqoqMjd3T0gIKCmpqaurq6jeWqEfBkZGd27d9fT09uyZcvt27dv3rxJyrx69WqVSkXT9MaNG4VCoZWV1bhx406fPh0eHr5u3TpdXd1evXplZ2eTPGNiYqysrGxsbHbv3p2QkPDXX3/5+/vzeLxdu3aRBGTLmJubT548+fDhw6GhoXV1dYWFhb6+vkZGRp9//nlkZOT58+cnT55MUdRnn31GFt22tLQ0FxcXCwuLLVu2xMTEnDx5ctiwYRRF7d69W61Wd25rHz58WCKR9OrV6+eff46Jidm9e7eHh4eZmZm5uTlzrT137pyxsXHPnj0PHDiQkJDw+++/u7u7SySSP//8kyRgh3wNDQ0zZ86kKGrOnDlXrlyJiopatWqVVCodPHgweUxAQj6JRNK7d+9t27adPXs2PT1drVZv27aNoqiRI0eePHkyJibm66+/NjU1dXV1zcnJaXctSJ66urp+fn6///77lStX3n77bR6P16VLl8GDBx85ciQ8PHzp0qUCgWD8+PHkRrakpIQ8rv7ss8/i4+Ojo6Pfe+89iqJmz55Nbg3z8vJ8fX0lEsmyZctu3Lhx8eLFKVOmdOnSRSAQrFixgqbp3Nxca2trU1PTwMDAX375JTIycvPmzfr6+vb29o8ePaJpWqlUrlq1iqKo8ePHX7lyJTk5+fvvv5fJZD169Hjw4EG7K9VuCdkhX2xsrKGhIXPkXrlyxdDQ0N7efs+ePTExMQcOHPD19bW3t5dIJKGhoc3TE5s2bRKJRORWsrS0tO2ld4g2IV9dXZ1CoUhOTv7ss8/4fP7SpUsjIiIyMjLazby8vHzs2LE6OjrLli27efPmlStXZs2axefzFy1a1NjYSNN0aGioRCKxsrKaMmXKmTNnrl+/vnjxYoqigoODSWVgb43i4uKO1qW2JSYmGhsbm5ub//jjj8nJyaGhoeQ8/80335AEcXFx9vb2Mplsy5Yt0dHRR44cCQwMtLa2FggEISEh7eZPQj5dXV1vb++9e/feuHFjyZIlfD7f0dHR19f3wIEDERERJNr39fUlcSZ7fVUq1ZtvvimVSl1cXDZu3BgREfHHH3/06dOHx+Mxj3XY52TmnP/uu+9eu3bt0KFD3bp109fXd3Fxee+9965fv/7XX3/169ePx+Mx54c2kAC7Z8+eTAhH0/R3333HbJ/GxsbZs2cLhcIFCxaEhYVdv3592bJlYrF44sSJJCCMjY01MzMzNTUdNWrU8ePHw8PDV61aJZFIvL29CwoKaJrOyckxMzObNGkSqbc7duygKGrIkCFnz55NSUn59ddfu3TpYmJicufOHbpTZ5IOKSwsDAgIEIvF7LNK9+7dhUIhOavQbV4BScjHvi4nJSXJZDJXV9cTJ048fPjwxIkT9vb2tra25LFy29o9LsrKysaMGSMSiZYsWRIREXHz5s2FCxcKBIIpU6ZUV1fTNF1aWkq+f/nhhx8ePHhw/fr1gIAAPp9/7tw5tVqtcSyTkx7ZX/r6+oMHD/7pp5/Onz9fUlJy+fJlHo+3YcMGdvGWL18ulUrJZaihoWHhwoUURb3++usXL168cePG0qVLu3XrpqenN3ToUIR88GpCyPevplQqp06damtrS0K+r776iqKo+fPnMw84c3JyHBwc+vTpQy7Mhw4d4vP5K1euZOKBurq6SZMmubi4ZGZmlpWVeXh4BAQEkJDv1KlTAoFg1qxZzOlPqVTOnTuXoijmxo59a97R9AQJn5ydnUnId+jQIYqiJkyY0NDQQBKUlJT069eva9euDx8+JFPWrFkjFApJG2ttsG9kiaKiIg8Pj8GDB5MLXkfz1Aj50tLS1qxZc+LECSZBYWGhs7Ozn58f2ZKbNm2iKMrPz6+8vJxJQ3bWxo0bSYbTp0/X09M7e/YskyAvL498ZknuM8iWmTx5MvtR95YtW0Qi0U8//cRMqa+vf+2112xsbEiQ0LaVK1dKJBLmJQz9vxsUDw8PstCObpnq6upBgwaZm5snJCQwE0NCQoyNjZm3fHV1dcOGDZPJZOw9cvv2bTs7u0GDBpEXKex6cunSJZFINH36dLlczqT/7LPPKIoibx3Jc3RTU9MrV64wCbKysuzt7YcNG0buJIhffvlFKBRu3ry53RUhT8FlMhmz4gUFBb179zYwMGCm1NXVDRkypEuXLuQ91ePHjz/55BP2u0q5XD5gwAAnJydSt0m/tatXr2YOz9ra2gkTJpCHMvT/3vJZWlqmpKQwmXz00UcURR0+fJim6cbGxh9//HHDhg0lJSVMgvXr12s8RmlNuyXUCPmMjY0XLVpE03RDQ8OkSZP09fUvXLjAzHv79m1LS0uhUEje8rHTMzZv3iyRSEitbmPp7NXRkjYhH3MDffToUT6f/9///lfLzA8dOqRRT5RK5YwZM4yNjaOjo2mavnz5Mp/PHzBgAPNBRFNT0/Dhww0MDJKTk+n/uzWKi4s7WpfaFh8fv2rVKrLZiYcPH8pksokTJ6rVarVavWjRIh6P99tvvzEJMjMze/XqRVGUliHfkCFD2GeG+vp6f39/Pp/PPkG98cYbenp6t2/f1lhflUpFnnl99913TOKwsDCJRDJr1ixS+dk1jZzZ3njjDeYAJ11HMq/RaJo+f/68VCpdvnx5u4WnaXrt2rUCgYCJD+vr60ePHm1lZXX37l36f2HJ0qVL2bOsXLlSKBSSV6BkXVxdXclnFGSNZs6cKZFIyDbPycmxsLCYPHkyKd7vv/++bt06doRJyr937166U2eSDvnxxx/JgcA+q4wfP545q9BaXAHZ59s9e/ZQFHXgwAEm8ZUrV9auXXv//v12CxMaGtracUHOab/88guPx2PfgSgUinfffZfZX9HR0SKR6L333mPyvH///po1a65du0b+bH4sk/3Vu3dvZn+RkggEAnJ5ZaxYsUJXV5dchm7evGlgYDBq1Cj2BWLt2rUURSHkg1cWeuyE/4emaYFAMHz4cOZ7dDs7O1dX17KyMvL8MiQkxMDAYN68ecwHdbq6usePH09ISOjatSszuB+Z/cqVKyKRaObMmcznQwKBYPr06RKJpMUukq9evdqh9K2tAo/HCwoKYr4ONTc37927d3V1dVVVFZlCclMqlR3cPG15ljxdXV03b95MXq/J5fKqqirSoqO2tpZ06UnTNEVR06dPZzfemzp1qqOj47Vr15qamh4/fhwREeHn5/faa68xCezt7d9+++2HDx/GxsZS/9sywcHBzDectbW1oaGhzs7Ow4cPr6+vr6urq6ur4/P5Y8aMKSoqun37dtvFrqiouHTpkq+vr7+/PzO7iYlJUFDQo0ePmFGnOrRlMjIykpKSRo0a1a9fP2bikCFDBg4cyHSfmJ6eHhsbO3r0aF9fXyaNp6fnuHHjkpOTm3cNGhISIhAI5syZw+6rY/r06TY2NhcvXlQqlXw+X6VSOTs7+/j4MAkiIyMLCwvffPNNiURCVq2hoWHQoEFdunSJjIxkuu9vg1qt7tGjh7u7O/nTwMDAzMzM1taWaRyio6Njb2/f2NhIcrOzs9u4cSN5ba5UKquqqsrKykxNTcmiaZq+fv06+YSMOTz19PTII3/6fx3EqVSqvn37shubeXt7CwQC0nkp+ZZp3bp1pGlcbW1tWVmZvr4+TdM1NTXtrlHbJWxjxtzc3NjYWD8/P/ISmPD09Bw1ahS5dWt30c+y9GdH6p6WHa+T86RMJps0aVJDQwOpPAqFYsyYMaTVEJMsKCiI+T5NLBZ7e3vX19eXl5c3z7Ojdalt3t7eW7ZsIeeKpqamysrKpqYmQ0NDcp9dUVFx/fp1Dw8Pct9PODk5sf9sl1qttrGxYY5QqVRqY2NjbGxM4kaCXDJaHMxNpVKZmZkNHTqUmeLm5mZhYVFYWNh8L5Az25AhQ5gD3NbWViwWu7m5MU28bGxs9PT0tKnkFEVNmDBBIpGQ+I2iqHv37sXGxg4ZMoR8ZXrx4kVdXd0pU6Y0NjaSndvY2DhixAixWMyMCkPTdP/+/Zm9w+fzvb29FQrF06dPmy/u7bff3rBhA2k6WFdXV15eLpVKRSIR00Hx8937bGq1OiwszNDQcNasWW2cVTrE0tKSxPbJycnkliAoKGjTpk3MR91ta/u4uHTpkoGBwTvvvMPcgQiFwrlz54pEorCwMIqiTE1NjYyMIiIirl+/Tna3i4vL5s2bmbrU4rFM0/TAgQPZzfbaFRkZWVNTM2vWLHZPB9OnTzc2Nu7cdgP4G6D7Fvg/BAIBu3tMmqaFQiG5psrl8uzsbBsbG4221EKhUKOTFR6Pp1Kp8vPzZTIZ0wydsLGxMTU11QjhyOn78ePHWqZvG4/HY6IaosV++V4pJSUlhw8fDg8PLywslMvljY2N2dnZzI27Wq0Wi8VM8zbCzMzMzs6uuLi4tra2pKSkoqLC2dlZo7+7nj17ikSirKws8iePx2NviqqqqtLS0ry8vNdff53P55MLFZ/PLykpUavV7Y5wUFZWVlZWRhq7U/+LSwUCQV5eXl1dXW1tbSe2Q0FBQWNjI9OAh5BKpY6OjsztVH5+fn19ffMuNHr16tXY2PjkyRNmCqlXubm5ZmZmGt3GmJub29vbFxQU1NTUkHsdkUjEvlRnZ2er1eodO3bs37+fVD8ej6dQKLKzs2UyWX19vTZdC7IPJfIQnfq/Y/Vq3BxUVFScPHny0qVLhYWFDQ0Ncrk8NzfX2NiYx+M1NTU9efLE2tqaaQpFODo6SiQSJh+apnV0dNjZ8vl8ZudS/7vJO3369P3790koQl7QadnrQGslbHuu0tLS6urq7t27a2w0JyenDvV20Lml/80aGxsfP35cXV399ttvCwQC5rCqrKxUq9VkkAOapvl8vsbQOCKRqI377I7Wpbbl5uYePXo0IiKirKysqampoaEhPz+/W7dufD6/vLy8tLR06NChpG8nRvfu3bUPA8iFg/0nqWNaFpimaYlEws6Bx+ORK1GLc2mc2cgB2+mN4+HhMWDAgKtXrxYUFNja2oaHh1dUVEyYMEEkEikUivz8/Lq6uiVLlkilUrIgPp9fU1PDDtebX4OEQmEbWy8qKurYsWNpaWnV1dUKhaK8vJw8imISPN+9zyD73crKSuOarnFW6ZDXXnttxowZv/76a3h4uJubm6+v79ixY4cMGaLlkd7GcaFUKrOzs21tbW1sbNgJHBwcrKyssrKylEqlk5PTihUrNmzYMHr0aDc3t759+w4fPnzMmDEau0MDqV0dWs3Hjx9LpVKNnrHIIFV/5wCeAB2CkA+0RdO0SqUSCARanrvVajWPx9Poa7G1eWma7lD6thNoXKte8aduycnJs2bNun//vpubW9euXU1NTXV1dU+dOsW+crS4ZUhoTTadxj0WQaawn2iyN4VarVapVGKx2NHRkd3jWffu3QcPHtzuQ1mVSqVSqXR1dTUejnbr1o081Nd2/VlarAPU/4I3Jg31v1Vja76yFKvSanTpRpbCfsWkUUkUCgWPxyM3Q8xPPB7P1dXVzc1Ny1FDOlTxHj9+/Oabb8bGxrq6unbr1k0mkxkbG4eEhJDgmcfjCQSC5jcTrd0Et6ixsfGzzz7bvn27tbV17969bW1tzczMHj58SFrTPWMJ20A+F2y+W0kdbmNG9q+dXnobWlvr1uqhNtRqtVKpFIlEjo6O7FrK5/N9fX29vLxaW3rbu+A5nsQiIiJmzZpFmmORNntisZh8ZE79r0Y175/z7++KsEOr/By3j1QqnTRp0vLly8PDw6dOnXr27Nlu3bqR10Rk5wqFQnt7e/YQC3w+38vLi/SM1WJ5WotU1Wr11q1bv/jiCwMDA9K5rqmpaXFxMWn2/CLWToNKpeLz+Ro7t90Dsw36+vr79u2bMGHCmTNn7t69u3fv3p07d86fP3/r1q3Nu5huUWubjlywBAKBxoHJ5/MFAoFKpSLPRteuXRsQEHDs2LHbt2+fPHly3759Q4cO3bt3b48ePbRfaLvICe05bjeAvwFCPtAKeexqY2MTExNTXl7OPneTx2/sWwRyx2BhYVFRUVFSUsJ+aVNaWlpZWalxyiYPgLVJ3/xBqVKpbGho6MR5tkOzMA9W2QttfgHraDFI+uPHj6ekpGzatOm9994jH7SQTiOYD3v4fL5cLme/v6IoqrKysrCw0NLSUk9Pz9TUVF9fPzc3l9yOMGkeP36sUChai7709fUNDAz09PR+++23th+CtsjIyEhPT8/V1fXYsWNarmm7zM3NRSIR81EoIZfLHz9+zGx/CwsLkUiUnZ2tMW9OTo5IJGK/BCM37paWlqResZ/IVlZWFhcXk9b21dXVzUtiZWXF4/GWLVs2adIkbUr+7E6dOhUdHb1s2bJPP/2U6W8zLy8vKiqKpmnymjctLa2wsJDpCZ2iqEePHjU1NWm5edPT0w8ePOjj47N//37mO7FffvklNDT0GUvY9oykfubl5SkUCvbbmNzcXI0gVuPorqurYxKcPn26c0tvkbGxsVgsJq13NLZecXExGdxFI7DXciNLJBIzMzNjY+MDBw68am8gKYpSq9U///xzQUHBt99+O2fOHHLg19XVhYWFkcjc0NDQ2Ng4JyensbGR/b6FNDb7l9zRDh061NLSMjQ0tHv37klJSe+88w45sYjFYlNTUz09vR07dmh8jNAJfD6/sLBwz5499vb2f/zxB/Nh+aVLl0ijx2ddjfaQvlJiYmLKysrYY/M+efKksbGRva+1vAISYrF48uTJkydPrq6uTk1N3bRp04EDB/z8/ObMmfMspRWLxdbW1rdu3SorK2MfWaWlpaWlpQMHDmTOLQEBAQEBAU1NTRkZGfv37//+++/37Nmzc+dOZhZtqjF5lsqeQhr3kv9bW1uTd6TsNghlZWWlpaXW1tbPsJYALxDa8oG2SHuJ0tLSU6dOMRNpmv70009ff/31vLw8Jtggp8XBgwfX1dWdPn2ancnp06cbGhqah3xapjczM1MoFElJSUyCyMjI9PT0jg4QTG5utExsamra1NTEXujVq1dzc3M1XjR1KE+2kpISqVQ6fvx4pgFDenp6ZmamRqB76tQp0rSPuHz58qNHjwYOHKijo+Pg4ODp6RkREcG0FKIoqqam5q+//rKwsGC3eWMzMTHx8/NLSUkhXVkwMjMzo6KimKaPrTEzM/Pz84uKimI+uSRI0xd2Ex3tt4yLi0vPnj0vXbrEjuiSkpJu3brFbA1XV1fS6zc7TX5+/oULF7p3785uLEQMHTq0pqbm5MmT7ImXL1/OysoaPHhway1FBw0apKOj88cffzAtVCmKqq6ujo6OfvDggTbr0lFFRUUikWjMmDHMvVdhYWFqair5OJDH45EORfbu3csUqbS0dP/+/ZTW0QhpJjpo0CAm3qNp+tatW1q2UmujhG3P6Ojo6O7uHh0dzT6IsrKywsLCmN1qYGCgq6ubmprKPOkoKioiHeqQtWt36SqVKjc3t76+Xpt1cXFxcXd3v3LlCmkCxGhsbNy3b19DQ8OQIUM0HmNpuZWEQmFgYGBeXt6ff/7Jnp6bmxsZGVlaWqpNJi+OUqksLS01NzcfPXo086Dn9u3bBQUF5ANgc3Pz/v37JycnR0REMHMVFxdfunTpJRX5JSBd7UdGRn7zzTdCoZBpx8jj8YYOHfr06VON51yFhYUREREFBQUdXVBtbW1VVVXfvn3ZDYljYmLkcnnnXjJ3iFAoDAgIKCsrO3v2LDNRoVCcPHmSHeBpeQUkLly4sGfPHlLPDQ0NBw0aNHfuXJqmc3Nzn6WopDzkDkTjJuHkyZPV1dWDBw/m8Xjx8fHfffddRkYGRVESicTDw+P99983MDB49OgRc57X5lg2NjaWSCQJCQlMyqysrOvXrzOr7OvrKxKJ/vrrL/YF4ty5c+Xl5f+SxyLwT4SQD7RCTriTJk3y9PTcuHHj7t27KyoqysrKtm/fvnXrVpVK1fwT9pEjR/r4+OzZs+ebb74h7b62b99+9OjR1j6a1ya9j4+PiYnJ999/v2PHjqioqO+///7jjz/uaLxnbW2tVquPHj0aFxen8eqsRb6+vrq6ups3b96zZ09kZOSWLVu2bNmisRYdzZOtd+/e5EazuLi4vr4+ISFh5cqVhYWFzDNL8tFmbGzs6tWr8/Lyampqjh8/vm7dOgsLixkzZlAUpaen95///Ke6unrJkiVRUVH19fWPHj1asWJFRETEO++8w4x33NycOXNkMtmKFSuOHz9eVVVVU1Nz9OjR4ODgZcuWtfu9nFAonDdvnlAoXLhw4fnz5+vq6ioqKnbv3h0cHLx+/XqmI4EObRmZTDZ37tzc3Nz33nuPjKEcGRm5atWquro6ZmuYmJgsWrQoNzd30aJFSUlJ9fX1aWlpS5YsSU1NnTdvnkZbUIqiRo0aFRgYuHv37p07dz59+rSmpubIkSPr1q3r3r379OnTWyuJu7v722+/ffLkyQ8++CAzM5MsZf78+SNGjAgPD297LTrHw8NDoVAcPHgwLy+vvr4+NTV12bJl7Mh/4sSJo0aN+uGHH6ZNm/bDDz9s37598uTJT58+FYvFWr4QsLe3t7GxuXDhQkRERH19/dOnTzdt2kS6sNPmNqXdErZGX19/7ty55eXly5Yti46OrqurS0xMfP/990tKSpiD197e3svLKyoqasWKFVevXj158uT8+fOzsrKYNkXtLv23334bOXLkp59+qk0nFsbGxsuWLVMoFHPmzNm+fXtaWlp+fn5oaOisWbMOHz48dOjQKVOmMIktLS3FYvH58+dv3rz56NGjdu8XJ0+e7OHhsWbNmp9++qm8vLyuru7cuXOjR49esGBBu01kXzSRSNS7d++CgoKDBw9WVFTU19dfu3aNDHlHQj4+nz9nzhyxWLxixYpLly7V1dWlp6cvX7784cOHf0MQ8ooQiUQTJkzIz88/ceJEnz59+vbty/w0evRoPz+/bdu27dy5s6ioqK6uLjw8fNKkSdOmTdP4PKFdJMDu3r379evXQ0JC6uvrKyoqfvzxxz179jxj2NDQ0KDls4+JEyc6Oztv2rRp//791dXVRUVFn376aWhoKPsbRW2ugIy4uLjFixevX7++pKSkvr7+3r17Bw4cEAqFzGOmZzF58mRPT88NGzbs27evurq6srJy9+7d27ZtGzhwIBlo5MmTJ8uXL3/vvffISfvJkye7du2qqanp27cvqb0ax3JrC3JycnJ1db1w4cJHH3108+bNP/74Y/78+ewPjvz9/YcPH3706NH169cXFRVVV1eTHccMrgvwKqLhX0ypVI4bN87Y2Jh0P71+/XqKov766y8mgUKhCAoKMjY2ZkZjv3Xrlre3N0VREomEnN0CAgLIkDuFhYVOTk7e3t7MkL6xsbHk4aVYLBaJRFZWVl9++SUJVEgCjSW2m570qMH0K2BiYrJhwwZvb28HBwfSUTt56bF79272as6YMYMZToem6dzc3BEjRpAcWuylXUNjY+O6deuYkMPS0vKrr77q2bOnr68v05d0h/Jsamry9va2tbUlg60XFRVNnTqVoigdHR1TU1OJRDJp0iRnZ2cXFxeSYN26dQKBYPPmze7u7gKBgDybd3Bw0Bhm6ocffiCt8A0MDPh8vkQiWbJkCTOuQ4tbhqbpixcvkjdjOjo65DuuXr16MUMkt+vo0aOkZxRdXV3SOYe3tzd7vPKObu3a2toPP/yQfFOno6NDxu0g43QxvYQ3NTV99dVX5NseAwMDHo9nYGCwdu1aMugZ3axepaamkj5mpFIpaYHTp08fptvu5vWWKC4unj9/PikJ6ZZNT09v5cqV2oxT3zzPyspKX19fBwcH5lBSq9VTpkzR19cn/fLX1NTMnz+fz+eLxWIzMzOxWDxixIj+/fuTr+zILE+ePJk3b56NjY2urq5MJps2bdqRI0f09PTICFo5OTl6enqjR49mj1N35MgRiqK++uor8ucvv/xCPseSyWRSqdTV1ZXUvZ9//rndlWqjhOSrPzKIVkxMDE3TMTExIpHonXfeIfMqFIqNGzeSzairq8vn80eOHLl48WKRSERaEtI0HRUVxXwsJxAIZsyYQTIk7xza3T5kyEFmeOh2qdXqgwcPOjo6kiWSmzmBQNB8ePeamprFixeTO+CgoCB2t+ytiYmJYc6TpMo5ODgcO3aMfCB38eJFiqI+++wz9iwff/wxRVFkwG721isqKupoXWpbTk4OaZmmp6dnYmKiq6s7ffp0KyurAQMGkM7l1Wr1jz/+SN6mkrNNYGDg6tWrKYpij8jSGo3zG03TKpVq3LhxUqmUParh8uXLKYq6efOmxvqSxMxViSgoKLC0tPTz8yMjMbBrWvMzG3ml//HHHzNT4uPjpVIpcx3RRnFxMfkUfMuWLRo/3b17Nzg4mKIokUhELkZWVlY//PAD2bkaNZ/45ptvKIoiQ4xkZ2ezj9MzZ86Qb+9NTEz09PQcHBzefvtt6n8D8HTiTJKdne3i4jJs2DD2sDRtCAsLI+3cpFKpQCDo3r37F198oaury4zL1+4VkH2+LS4unjJlCp/Pl0ql5BN0PT29Tz75hD04UGvaPS5omo6NjSVHlq6uLqmcgwYNIkN90DTd1NS0evVqXV1dgUBAGqny+fy33nqLGTRI41huamqKjY1tvr9omj579izT6ZdEIlm4cCH5MJW5DKWnpw8ZMoTcrkgkEiMjoy+//LJbt24+Pj4YpAFeTZ3shxe4gabp2NjYsrKygIAAQ0PD9PT0tLS0AQMGMK2/aJqOjo6urKwcNmwY8xVQYWHhjRs3SG/4ffr0GTp0qIWFBUVRjY2NERERIpHIz8+PuTw8efIkLCzs/v37BgYGwcHBvXv3Dg8Pt7S0JF/AN19i2+kpilKpVLGxsQkJCRRF+fr6ent7R0dHkw+xJBJJbm5uQkJC37592X2KJCYmPnnyZPDgwUwDgKKiouvXrz9+/HjQoEH+/v7tbii5XB4eHp6amioWiwcOHOjm5hYeHi4UCtlrqn2earU6PDy8sbFx6NChJGyuqKi4fPlyYmIiTdM+Pj7Dhg27f/9+Y2Mj+fLw/v37GRkZ5Auc8+fPFxQUdOnS5bXXXmvew0pqaur169dzc3NlMln//v0DAgKY4rW4ZYi8vLwbN27cv39fIBC4uLgMHjxYo3/Ltj148IAMa0s+pPH399fo/62jW1upVN68eTMmJqampsbd3X3s2LH5+flZWVkBAQHs1iPx8fGRkZGkx7mAgABfX1/mEWzzelVRUXHt2rXk5GS5XO7q6hoUFGRnZ0d+arHeEnK5PCIiIj4+vqyszNraeuDAgb6+vtq8VW6ep0KhiI6OJvuUOZTi4uJKSkoGDx5saGhIUVRtbe21a9diYmKampq8vLxGjBiRk5NTUlIybNgwdquq9PT0kpISPT09d3f35ORkf3//9957b+fOnfX19VevXjUzMxswYADzhD4/Pz8uLq537949e/YkU2JjY69fv/7kyZMuXbqQEcMTExP79eun0SVsi9ouYXJyclZWVmBgoKmpaXl5eUREhL29PfOGRK1Wx8bG3rx5s6yszNXVdcyYMXv37v3iiy9CQkJIQE5RVGZmZmRkZFlZmZOTU3BwcFFRUUpKysCBA0nzmLaX/uTJk+vXr7u7u/fp06fdFWE8evQoKioqNTW1oaGBjCvg5+fXvDvW2tra69evP3jwwNHRcfz48dp0AlxUVBQeHp6SkqJSqXr27Onn58fsguLi4sjISDc3N/YhnJaWdv/+/cGDB5ubm7O3XlNTU3h4eEfrUrtlCwsLu3PnjlAo9Pf3DwgIiI+PF4vF5Os4kiYpKenGjRsFBQWOjo4TJ07k8Xi3bt3y8/PTOLqba35+IxcasqeYB3Z3797NzMwMDAyUyWTs9dW4KpHEjY2N169f19fX9/Pz4/P57JrW/MxWWFgYExPj4uLCfOZdWVkZHh5ua2vLbnnVNpqmY2JiCgoKAgICNLrJpSiqoqLixo0bycnJDQ0N3bp18/f3Z/oQbl7zKYp69OjRnTt3fHx8HBwcmh+nd+/eDQ0NzcvLs7KyGjlyJGkz36tXL2dn506cSa5cuTJ8+PBFixbt3r1by7eFjx49unr1amZmpkwmGzduXFVV1bBhwxYvXsy0f2v7Cqhxvq2qqgoPD09KSqqqqrKxsenfv/+gQYO0OW22e1yQKUVFRTdu3EhJSeHxeH369BkyZAi5AyEUCkVMTExMTExxcbGJiUm/fv0GDx7M7n6WfSxPnDixuro6PDxcY38R9+7di4yMrK2t7d279+DBgx89epSZmTlkyBDmMlRaWnr16tXk5GSxWDxs2DAfHx8yMCD7OAJ4dSDkAwD4BwgNDb1w4cKMGTPYjTN/++23WbNmbd68ec2aNS+xbJ3z+eefb9y4kR3yAcAz2rlz58cff/z777+/8cYbncshKipq2LBh5EHS8y0bALxE/5ZP8wEA/tEaGxt37dq1YMGCK1eu1NbWVldXnz17dsOGDWZmZuT7IgD4l6Np+u7du9bW1h161w0A/wYI+QAA/gHGjBmzY8eOoqKi1157zcLCwtLScsKECXK5/JtvvmEPCPYPolQqO93PLQA0V1FRcefOHTc3N6aRaieo1Wq5XK5UKp9fuQDg5cOHnQAA/xgpKSmJiYk5OTkCgYD068C0EPvHSU9Pz8jIGDhwILspDgB0Wn19fVRUlKWlpYeHR6czKS8vj4yM7NatW+/evZ9j2QDg5ULIBwAAAAAAwFn4sBMAAAAAAICzEPIBAAAAAABwFkI+AAAAAAAAzkLIBwAAAAAAwFkI+QAAAAAAADgLIR8AAAAAAABnIeQDAAAAAADgLIR8AAAAAAAAnIWQDwAAAAAAgLMQ8gEAAAAAAHAWQj4AAAAAAADOQsgHrxy1Wn3//v3MzEyapp9jtg0NDQkJCaWlpc8xz+fo+a7s369D5X9BK1tVVZWQkFBVVfUiMmdTqVQpKSk5OTnPMeXLwuyLF3HcPXz48N69e//0ug3wT0SzPEs+f9t59aUoLCxMSkpqamp62QUBeOEQ8sEr586dO2PHjp00aVJmZiaZolKpVCpVhzKhaVqpVKrVambKzz//HBwc/NFHH3U0qxfk2LFj48aNi4mJoSgqKSlpzJgxR44cedmF6gy1Wr158+aZM2fm5eVpk/7y5cujR48ODQ197iXZuXNnUFDQV1999aJjjPDw8ODg4LfeeqvdJwjap9RSJ46FNmRkZEydOnXXrl0URSUnJ2scd88oLy/v9ddfHzlyZGJi4nPJEF5NOTk5b7755rfffvuyC8I1z3KwKxSKVatWjRw5ctiwYUOHDh06dOioUaPef//9CxcuKBSKDmX1t51XtaFWq1Uq1fMqSUNDw5IlS4KCgv7888/nkiHAqwwhH7xypFKphYWFhYWFWCymKEqpVH7yySezZ88uKyvTPpOU/4+9t46P6vgev++6JJusxN0grkSAOAnBtVDctRQvLQ1WikOhtKVYi7dAgOKBGJBk4+7EIE6y2bisZO0+f8zT+7vfTbJZrO2nve8/eJG7c+eemTkjZ+RMYeGUKVOuXLmCPGEwGHp6ejo6Ojgc7oPL/A5UVFRERkY2NTVBENTc3BwVFVVRUfF3C/UuwDCcmZkZHR3d3d2tTviampro6OiPsfClra2tp6fHZDI/dhHT6XR9fX1dXV0CgfChQqrDu9UFFXR0dERGRubl5UH96t37QyKRdHV19fT0aDTaB4kQ459JV1dXVFRUbm7u3y3Iv4qurq6NGzdu2rTp3ZbXFAoFl8uNjY1taWnp6enp6uqqqam5fPny5MmTZ86cWVZWpn5Uf1m7OiQwDB8/fnzu3LlVVVUfJEI8Hs/hcPT09BgMxgeJEAPjnwzx7xYAA0MZBweHqKgoPB6vpaUFQRCRSMzOzn758uVbTez19PRER0e7u7sjTxYvXjxu3Dg2m43H/yNmOohEIplMBpYAgUAgEAhE4v9qfSSTyVQqVc2MJRKJOBzuYyR206ZNCxYs0NXV/eAxK+Hj45OQkEClUjU0ND5USHV4t7qgAjweT6PRgI1nb2+Prnfvj6Gh4f3792UyGYvF+iARYvwzwePxVCr1Q80UYAAIBEJqair4z7vFQCKRDA0N//jjD2NjYxiGxWJxTU3NtWvXTp8+3dHRcefOHUNDQ3Xi2bx581/Trg4JDocrKip69uyZWCz+IBFSKJRTp051d3f/E1KHgfGx+V8dYmJ8WNra2nJzczs7OxkMhr29vbm5OXje1NRUUFBgZmbm4OCABC4pKamvr3dzczMwMABPpFJpXl5efX09gUCwtLR0dnZGRv9tbW15eXn29vYUCiU1NbWnpycsLAw0r8hbEASZm5u7u7uDvk0ikVRWVhKJRFdX1+bm5ry8vI6ODplMFhsbq6enN2LECDCClMvl+fn5dXV1MplMR0fH3d2dyWRCEKRQKHJyclJSUggEQlVVVXR0tJ6enoeHR3t7e1lZmYWFBZI6CIIqKirKy8tFIhGHw/Hw8ECPTaurq6urqz09PcVicU5OTk9Pj46OjpeXl5rTgeXl5Q0NDZ6entra2uCJRCLJyckhkUhubm7qGDxlZWWvXr0SCATa2trOzs7GxsbgeVdXV25urpmZmYGBQXp6eltbm4GBgZeXF41G6+npyczMbGtrY7FYnp6eSkNtUBbt7e0aGhp2dnbW1tZKX2xqaiosLOzq6tLU1HRxcTExMVEnpQMiFApzc3N5PB4OhzM2NnZ3d6dQKOgARCJRIBCkpaW1t7dra2u7ubnp6+srRdLd3Z2bm8vn8ykUyvDhw+3t7ZXSgtar8ePHy+Xy0tJSuVxuZGQEgvF4vMLCwo6ODhqN5uTkZGVlpY7wSA6bmppmZGQ0NTXR6XRnZ2dEc8RicXl5uZaWlqOjI5j57uvry87OBmu25ubmHh4eQJn7h1SBCp3x8PBQURdUM1hNUQKpd87Ozoh+isVikC4KheLu7q6vr5+RkcHhcBwcHGAYLioq6uzsHDFiBGLQisXijIwMFovl4uKiUChevXolkUg8PDxIJFJjY+PLly/d3NxoNJrqcldNY2NjYWFhT0+Ptra2i4sL0gq1trbm5eXp6uq6uroiWf3q1atXr16h2zTVDNYSIjQ0NJSUlHR2dtJoNFtbW1tb27cSXnUdhGE4Ly+vtrYW6PCIESOQWgM0gUqlOjo65ubm1tXVaWlpeXl5cTgcmUyWlZXV0NBAo9FcXV1NTU3BK6AsdHV1rayssrKympqaWCzWyJEjGQyGSCTKysri8Xiampqenp56enpoMVTUOyRmtFYM2JqpSIualJSUVFZWSqVSfX19Dw8PTU1N9K8ikSgnJ4fH44FOx83NDflpyPoL6OjoyM3NbWtrGzCZQH6wGcHExMTDw6N/Ml++fFleXi6Xy62trd3c3EpKStrb2/38/PB4vJrtf3V19cuXL3t7exkMhp2dHdJAVVdXZ2dnCwQCCIKePn0KcuAdVqLweDyDwQAvamlp6enpeXt7a2lpHT58+OzZs3v37sXj8dXV1VVVVS4uLojZA/pQqVTq5eVFIpH4fH5ZWRm6XZXJZPn5+bW1tQqFAmSO+oXb2dmZn5/f0tJCIBAsLCxcXV0RmxbUDmtra0tLSyQ8yElvb2+pVJqdnd3Y2AjDcGJiYmNjo7OzM1L9h6y5g1FfX9/Y2EihULS0tIDmmJub6+jopKSk8Pn8sLAwKpWak5MzoFReXl4DvhUaGgr6a3W0CAPjrwPG+M8TFxfn7e0Nml08Hm9jY3PhwgWFQgHDcHl5uZWVlYuLC2hnYRhuaGhwcHAYPnz4q1evkCcLFixAVgZ0dHQ+++yztrY28GtMTIyGhsbWrVtDQkIgCNLQ0EhPT4dhuL6+fuHChchbLBZr1apVLS0tMAzzeDw3N7fAwECRSHTjxg2wfITD4SgUCpvNTkpKgmG4sbFxzZo1bDYbvE4mk/39/RMTE2EY7uvrCwsLI5FIEASRSCQymTx9+nSQTDKZfPDgQSBYX1/fiRMnkOERkUj08/MDMQAOHz7MYrGOHz/u7+8Pmmk8Hj979uy6ujp1cnXr1q0aGhqZmZnIE5CuoKCgrq4uGIYPHTpEJpMfPHgAcolAIBw4cACEFAqFBw8eRCwuHA7n4OBw7do18GtmZqa+vv6KFSuWLl0KtsyRyeT169fn5+dPmzaNTqeDtyZPntzQ0IAuZR8fH8QUt7CwOHfuHDgUAbh7966joyMSwM7O7urVq+qkVCaTzZ4929jYGDjqgGE4Pz9/0qRJiCQMBuPTTz8FfkFgGL548SKJRNq7d++cOXOQgYK7u/uzZ8/Q0WZmZgYHByMBjIyMvv32W7FYDH7tr1e5ubkREREkEunXX38FYWJjY93c3JDxhLW1tZopyszM1NPTW7169eeff46oqIODQ1xcHAhQU1NjaGg4a9YsmUwGw3B1dfW8efOQISmLxdq8eXNnZ2f/kKoZTGeCg4NV1AXVqKgpMAxnZGQwmcy1a9fCMNzc3AzqHZAcCD9v3jwqlQredXV1vXjxoo2NzapVq2AYlslkc+bMMTMzA6uO6Jz59NNPFQqFRCIJDAy0s7MD9frq1at0Ov3kyZPz589HitXDw0Op3FVz9+5dBwcHYNERCARnZ+fbt2+Dn+rq6ry8vCwsLIqKisCT1tbWwMBAIyMj0OYMiYqWEHDjxg07OztEo0xNTffu3YvopDrxq6iDLS0tGzZsQEpKQ0MDXWt4PJ67u3toaOj27duRMBMmTMjPz9+8eTPyxM3NDdGfmpoaIyOjefPmrVu3DlHjhQsXFhYWLlq0CHkSHByMLkHV9Q7upxVubm4///yzoaHhihUrkDCq0zIkAoEgPDwcGc1TqdTx48cjzQsMwyUlJdOnT0daGB0dnW3btrW3tyNJUF1/YRhOTU0NCAgA3QQEQSYmJj/99JNUKh1Qfm1t7UWLFtXW1iKvS6XSQ4cOIatkurq6R44cmT9/vqmpqUgkgtVo/+Vy+alTp9A2v5WV1alTp4AM3333HYVCwePxeDyeTCZbWVkVFhaqmXsAsVjs6+trbGzcv8Oqq6uzs7NzdnYG3fqRI0doNNrDhw+RAH19fYGBgQ4ODq2trTAMX716Fd2utrS0rFy5EplsYjAYixYt4vF46kiVnJzs5+eHaBebzV62bBnybmxsLLqPBmzdupXBYOTn58fHx2tpaREIBBwORyaTGQzGnTt3QJgha64K0CUF+tbFixd/+umnoJGJjY1NSEgYTKqsrKwB34qMjITV0CIMjL8YzOT7r5ORkaGvr29ubn7mzJmMjIzr1697eXlRKJRbt26BAGfPnsXhcDt37gTHpr/66isikXj58mXwa3t7++TJk2k02qZNmxITE589e7Z48WI8Hr927VowSoiJiaFQKEwmc/z48ZcvX46Ojm5vb+/o6Jg8eTKJRFq9evXz589fvHixePFiCIJWrVrV19fX3Nzs7Ozs5+fX3d3d0tISHx/v5eWlr69/7969lJSUzs5OiUSyaNEiCIKWLl2amJiYm5t79OhROp3u4eEBTM3i4uIff/yRQCAsWrSIy+UWFxcDSXA43P79+2EYVigUx44dgyAoJCTk/v37WVlZP/zwg56enqmpaX5+PkjaoUOHiESimZnZhg0bnj17FhkZOXnyZAiCvvjiC3X6ks2bN1MolIyMDOQJj8dzdnb29/cf0uQ7ceIEBEFBQUGPHj0qLCy8du2aubk5i8UCsoFlFhaLNX369MePHz969Mjf3x+Hww0fPnzmzJlPnz6NiYmZMWMGBEGg1GAYTk9PNzAwMDAw+P7779PT0yMiIsDCy40bN8AXHz9+zGQyhw8ffvHixezs7N9//93Z2ZlCoSB9qgqUTD4+nw8WbPfs2ZOVlZWamvr5559DELRkyRJg9ly8eJFIJBoaGgYGBt66dSslJQVY1+bm5jk5OSDOkpISW1tbFot1+PDhzMzMJ0+eTJgwAYKgb7/9FkTSX6+6urquXbsGQdAvv/wCw3B5efmwYcNMTEyuXr366tWr6OhoJycnGo2GHoQNRkZGho6ODpvNnjBhwu3bt7lc7ldffUWhUDw9PcEgqaamRkdHZ8aMGXK5XCqVLl68mEQihYeHFxYW5uXlLV26FIKgQ4cOoUOqY/Kp0JnB6oLqCFXUFDCYUzL5QL0D0fb29k6dOhWHw61cuTIuLi4uLm7lypUWFhZ0Oh0x+WbNmmVkZIQei4P0fvLJJ8Dk8/Pzs7Gx4fP5MAxfuXKFQCCYm5sHBgZGRESkpqYePXqUw+GYm5vn5uYOmTkwDEdGRmprazs5OV28eDEjI+PixYu2trba2tovXrwAAe7fv08ikVasWAFy+/jx4xAEHTt2TJ3Ih2wJo6KiqFSqlZXV1atXi4qKHj9+7OvrC0EQUolUo7oOisVipKSePXuWkpLy1VdfUanUgIAAUFI8Hs/Dw4NOp/v6+v7+++/Pnj1bsGABDoczNzcPCAi4efMml8vduHEjgUCYOnVqb28v/KfJx2Qyx44de+fOnaioqKlTpwLTYsKECffu3Xvx4sXy5cshCFqxYgWwPIesdwNqhYmJCZVKXbNmDUipSCRSnRbVSCSSr776CoKgiRMnPnz4MCUlZefOnVQq1c/Pr6mpCYbhxsZGLy8vOp2+a9eutLS02NjY+fPnQxC0du1aiUQCq1F/W1pawAr5mTNnKioq4uPj/f398Xj8o0ePQFksWbKESCSuWrUqLi4uPj5+06ZNYOpQIBDAMKxQKH766ScIgnx8fCIiIlJSUo4cOWJvb29oaIiYfEO2/7///jswmP/444+ioqLbt287OzvT6fSYmBgYhhsaGh4/fmxnZ2dnZ/f48ePMzExQpuqjwuSDYXjlypUaGhpg6ufgwYNEIvH+/fvIr319fX5+fsOHDweTNZcvX4Yg6Pz58zAMy2Sy7du34/H41atX5+TkFBcXb968GYKgjRs3DtnElZeXW1tba2hoHD16NC8vLzExcd68eRAEbd++Hagfuo9G2Lx5M5VKzc7O7u7uTkpKGjduHJPJvHjxYkpKChBvyJqrGnRJAc3R1NQMCAj45ZdfIiMj+Xx+bGzsYFIBk6//Wzweb0gtwsD468FMvv80fX19YI8+erng9evXFhYWAQEBoGHq7u6eNGmSrq5uYWFhTk4Oh8P59NNPhUIhCHz16lUikQhGtwCZTLZw4UImk5mamgrDcGxsLB6P9/PzQ6ZgYRi+cuUKHo/funUrMsMtEAhmzJhhZ2dXWVnZ1tbm4uLi7++PjGjDwsJMTU2RuUCBQPDdd98dO3YM3XSuXbuWQqEg0/lcLpdIJO7YsQMJgDarqqqqwG5D9NzkrVu3KBTK6tWrwTzr4cOHIQhauXIlYuDV1NSYmZm5urp2dHQMmbdbtmyh0WhKXb6Li0tAQMCQJt/vv/++a9cu9HTg+fPnkU43IyNDW1vb1dUVWcRLTk5mMBiOjo5v3rwBTyoqKkxMTEJCQgQCgUQiWbBggaamJnoeNz8/38rKasGCBXK5XCAQjBkzhsPhoKXNy8szMTEZPXo0smA7GEomX319/c6dO9HraRKJZOTIkcjQ/9KlSxAEOTs7V1VVIWGAo53169eD3N6yZQsEQVeuXEECtLa2+vv7GxoaFhQUgBwbTK/AbPTdu3fxePy+ffuQX7Oysr7++mvQSasGGEL29vaIhHK5fNGiRRQKJTY2FobhmpoaPT29mTNnwjDM5/MtLS19fHyQ19vb2/ft2/f777+jQ6pj8g2pM3C/uqCaIWuKksmHrnf3798nEAiLFy9Glj5kMtmyZcsgCAKD+/6ru0h6Z82aBUw+f3//YcOGgXK/evUqWGxBr/Zcu3YNh8Nt2LBBnbSEhISYm5uXlZUhD9PT03V1defMmQMmmKRS6bJly6hUamJiYl1dnampKbKoohp1WsIXL15s374dvWCYkpLCYDAQU0cFYrFYRR2EYTg6OppEIs2fPx8YLYA9e/ZAEHTmzBn4zzUiDoeDSNjY2Ojk5MRgMJAnAoEgKCjI3Nwc5DBYcTU2Ni4vLwcBKisrgdlZUVEBnrS3t9vb2zs5OYE2bch6N6BWALsRyYeoqCjVaVFNeno6m80OCwtDz2js3LlTR0fn8ePHMAwfPXoUgiDgQBIgEolmzJhBo9FAVgxZf1NTU0kk0ueff47EUFpaGh4eDuYOwHTSxo0b0VJt3bqVSCQ+ffoUhuHa2loHBwcbGxskY2EYvnnzJolEMjMzAybfkHX5wYMH4eHhYDoS8OjRI3ST1dnZ6enp6enpOeTMzoCoNvkOHDhAIBD++OMP+P/2RIC+vj5/f39bW1tgU4F2FUyldXR0jBw50s7ODrHee3t7T5w4ce7cub6+PtUivXz5Mjw8/O7du8iTpqYmW1tbX19fkEalfhCwZcsWOp2OtNuLFy/W0dFB1jzVqbmqQZcU0BwnJyd03zSkVIO9pVqLMDD+ev4Rfiww/i7q6uqSk5MDAgLc3NyEQqFAIBAKhUZGRkFBQQUFBbW1tRAEMRiMvXv3KhSKb775Zs+ePTQabe/evWA/IQzDUVFRHA5nxowZIpFIIBAIBAKpVDpp0qTu7m7gmR2GYQiCQkJCkH0gCoUiOjqawWCsWLEC2eNEp9Nv376dnZ1taWmp5EIajC0gCJLJZEjgbdu2ffnll3Q6HYbhnp6e1tZWJpMpl8sRp5EgMPqSBjRJSUlv3rxZvHgx+hzRhAkTvLy8EhISGhsbgeQEAiEsLAw5F2RiYmJvb9/W1tbb2/sBcn9wFixYsH//fjMzMwiCBAJBe3s7lUolkUidnZ1IGG9vb+R0n66urra2to2NDXImh8Vi6enp9fb2yuXy+vp6Lpfr7+8/btw45HVXV9fi4uJffvkFj8eXlZVlZGRMnDjR29sbCeDm5jZlypSCgoKioqK3Et7ExOTAgQNg2VYmk3V1dbW1tbHZbIFAIBKJoD9VYurUqeijETNmzHB2do6Pj+/u7u7s7IyJiXF1dQVrlQAOh7NkyZKmpqaUlBTkIVqvlOBwOHQ6/dmzZ2lpaeCsv6en5+HDhz09PdVJBQzDPj4+iIR4PN7T01Mqlba2tioFo9Fo+vr6lZWVN27c4PP5EASxWKzdu3cvWLBArfx6G/rXBdWoU1P6AxT+2bNnJBJp0aJFyOETAoGwYMECCoUyWLVSDZB82rRpNjY2yMNp06Y5Ozu/ePGio6ND9evl5eUZGRlTp061sLAATY1QKLS1tR0xYkRubm5zczMEQUQicfv27cbGxt9+++327dvFYvG3336rjjcadVrC4ODgI0eO+Pj4QBAkFos7OzsVCoWGhkZXV9eQGVJXV6eiDkIQ9PTpUwKBsHTpUmSrIQRB8+fPNzIyevr0qUwmw+PxCoVi2LBhzs7O4FcGg6Gjo2NsbIxoKY1GMzU1FYvFiHMLhULh7u4+bNgw8CebzWaxWOCQGxKJsbExmBjq6uoast49f/68v1aAnbpIJkRFRalIy5AXoCUmJra3t69YsQI5BQdB0L59+6qrq8PCwnp6emJiYiwtLefMmYP8SqVSly5dKpPJkKtfVNdfNputra2dlJQUHx/f09MDQZCdnd2hQ4eCg4NBWdDp9FmzZonFYqBpYrF43LhxZDIZ3KlTWFhYWVk5Y8aM4cOHIzJMmjTJyclJ/TsVpk2bdujQIUdHRwiCRCJRe3s7iUQiEolII48Y1W97p4I6UCgUGIYlEsk7vGhgYFBfX3/z5k3QUYIN9mvWrBnSf4+9vf2hQ4dmzpwJQRDQN3BSvbe3V013LDAMAzVDGkB1au5bAcPwqFGj0H3Tu701pBZhYPz1YAdJ/9M0Nzd3d3enpKSEhISA3gWM9qqrq8HoEATz9PTcvHnz7t27SSTSyZMnkWPuYrG4vr6+u7t7wYIFBAIBDOnweDwYDPF4PBAM7LxHPioSiaqrq42MjJCjGgAikaj+yWaJRBIVFXX//v3q6mpgZ/J4PHDMSfWLIEBVVRWFQkFGQgAGgzFs2LDS0tLW1lZgbhEIBLTkMAwTiUT4L7mbKCUl5datWy9fvuzu7pZKpe3t7WDYh6QCnVegF8ThcIhsoDQhCMLj8Twer6OjY9iwYUon7BHX+Q0NDUKhEAw+0Dg4OIjF4jdv3ryt8B0dHffu3YuOjm5qahKJRBKJpLa2Fu0yBIfDocf9EARpamra2NgkJSUB5Wlubg4JCVFy2GBra0smk8FReBwOp6RXCCDh3t7ea9euPX78eFhYmLOzs7u7++TJk0NCQtT0K4jD4ZSuFgCORpVKX6FQaGpqbtu2bcOGDYsWLbK1tQXHdaZPn67kEuPv4h1qCg6Hk8vlDQ0NHA4HmVYAGBkZsdnsdzP5IAjC4/FKDkvQ5a7aFU1DQ4NYLH748CFYZ4P+VPjy8nIymYw4sre1tf36668/++wzmUy2d+9ePz8/dQRTsyUsLy+/fv16dnZ2e3u7RCLp6ekBXiiGjF91HZRKpbW1tTo6OqDZQdDV1TU1NW1sbOzp6QHyoLUXrIdDfyo8QEk/YRgGxhgQEryi1FCA/+BwuLa2NhX1rq6uTh2tGDItQ3pHrKmpodPpSo0zHo8HUvH5/MbGRjMzMx0dHXQACwsLFouFbhxU1F9ra+stW7bs379/4sSJjo6OHh4eYWFhkyZNotFoUqm0oaFBIBCsX7+eSqWCROHx+J6eHqFQ2N7eDkFQY2OjTCZT8tyjoaFhaWkJph7UJDc399atW7m5ud3d3RKJBPz71ziU7ujoIBAISgWtDjQabfPmzfn5+Rs2bPjpp5+cnZ2DgoKmTZumVNyDwefzb9y4weVym5qaJBKJWCyurq7u3/Woj5o1V33ezZu00lvqaBEGxl8PZvL9p5HJZHK5XEtLy9LSEj1WsLGxAbfYIU9A3wDDMNppmEKhkMlkJBLJwsIC3d7h8Xhvb2/0BQlKAxG5XA4OYb+b2EKh8LPPPrt27ZqlpaWtrS0451ZYWIhe/1GNXC4fsGUnEokKheKdR7QfBHDO8Ntvv2UwGE5OTjY2Nmw2u7m5GWzaRIKpb3mCjlDFwBSkd8DcgCDobe8Crq+vnzt3bkZGhr29vZWVFYfDYTKZUVFRSkuj/Usfj8cDUcGpURKJpDT6ATqDlkdFJtBotGPHjo0ZM+b+/ft5eXk3btw4c+bMtGnTzp07pzTXMBj9R8+Dhfzkk08cHByuX7+elpbG5XJv3rx58uTJn3/+GbiW+Rt5n5qiUChwOJxSEag5pfJWAcD61ZCVDuyMZbPZShPww4YNA5eGIU80NTVBYTEYDDUH0Oq0hA8ePFi3bl1PT4+zs7OZmRmbzZbJZGCH7ZDxA1trsDoIwzBoEpUCgPxHXzz9DvNNar6Cw+FU1ztQQKDlVKEV6qdlMORyOXBbMlhyFAoFkUhUCoDH4wkEAnr1W0X9BXv+/f39b926lZeXd+/evV9//TU4OPiXX36xsLCQyWREItHU1BR9sQoej3d3dx89ejSQEIbh/hKq2aOBYJcuXdq8eTOBQHBxcbGwsOBwOAKBAGzmVyeS96Gvr6+oqIjJZA5mp6lOSGBg4IsXLyIiIhISEnJzc+/fv3/s2LEff/wRLN+poKCgYPHixaWlpY6OjpaWlmw2m06n379//306XPXHMOrzbkWAfgsMjQbTolGjRr1D/BgY7w9m8v2nYbPZNBrN19cXHK8ajNLS0hMnTri4uMhkskOHDgUGBgIPyBQKRUdHB5ylHtDt+4BQqVQjIyPgpR09rw/DsEwmU2fKPDs7+8aNG+PHjz979qyFhQV4eOTIEbCbHx2yf9cFAhgZGYElSvRP4ImWltaHukYMmYYHyGQykUg0ZOTNzc1nz541NTUFx9DBw+joaOBa4G1lAKNkBoNRU1MDOiHkJ7lcrlAoSCSSnp4eiUSqrq5Werempgb8+lZfvH//fmpq6qZNm3bv3s3hcMDDuro6tJkBw3BdXR36LZFIVFNTw2KxGAyGQqFgs9nV1dUikQg9VV9XVyeRSICXPHWyAofDTZgwYcKECQKBoLy8/MSJEzdu3Bg1atT27dvfKkXqYG9vDw57vHr1KjIyMjw8/ODBg76+vm87Z/9uOjMY6tcUNMA40dPT6+jo4PP56NWMlpaWzs5OkCiwlgJsACRAX1+fVCodbMioUCiUyl0sFtfW1rLZ7CG3X+rp6REIhMmTJ+/fv19FsPr6+iNHjlhYWGhra588eTIwMHDEiBGqY4bUaAmlUun58+d7enouXbo0ffp0sGWxqqoqKipKnQErh8NRXQcNDAy4XC6fz0evfnd2djY3N1tZWWloaKjYiPtBUCgUTCZTRb3T19dXRyvUSYtqSQwNDQUCQX19vaurK/q5VCoFVw5wOJympqbu7m50VHw+v7OzE9wioGY76e/v7+/v39fXV15efuHChVOnTp09e/bEiRMcDkdDQ+PEiROD3cChq6uLx+PBiiIC6D7Qmj9YXSYQCJ2dnefPn2cwGBcvXhw3bhx4q6CgALifRUf7MW4/z8rK4nK5Pj4+YMm9/+YFIKqKT1taWoaHh4eHh9fW1sbGxoaHhx84cGD06NGqZ9Nu375dWFh48ODBzz//HOzalUqlBQUF6AMLyNZNBOC3ZrA41RzDvCdvKxWZTGaz2aq1CAPjrwc7y/efxsLCwtnZOS4urri4GP08Ly8vKysLbPQXi8UHDhxoaWk5evTo0aNHq6urDx48CH4iEomBgYF1dXV37txBv15bW5ucnNzS0jLgRwkEQlBQUEtLy/3795GHMAzv3r37k08+qaurG3BbBXpk2draKpPJQkNDkVGsTCYD2736zzcPKIOvr6+2tvadO3fA6TJAVlZWenq6p6en0rald4PNZvf19eXm5iJPnj9/XltbO+Smke7u7q6uLg8PD8TegyAoLS3t3fb8yOVyc3NzV1fX5ORkcLoS0NjYOHPmTODexsHBwcHBITIyEm31NTQ0PHnyxNraWv1dNyDzm5ubSSTSpEmTEHuvqampuLgYMeZBsKioKPSum8TExMLCwpEjR7JYLA6H4+vrm5OTk5SUhASQSCR37txhMBjgMNWQYiQmJv74448NDQ0QBGloaHh4eKxevZpCoVRVVamZHHXA4/F1dXU//vgjEBWHww0bNmz9+vW2tra1tbVCofCtRmxq6oySlaWCtrY2dWqKEmAoA5wfPHjwAP3Tw4cPRSIR0EM8Hs/hcNrb20tKSpAAkZGRHR0dA0YOHkZHR6NbhqSkpMLCwlGjRiHaMhj29va2trZ3794Flx8CwFVd+fn5yNndEydOFBYWfvPNN6dPn+7s7Ny3bx+6jg/GkC2hVCrl8/kmJiaTJk1Cjqjl5ua2traqUyvB/WOD1UEcDjdmzJienp579+6h34qNja2qqgoICHjn85PqA8Ow6noHDvoOqBUPHjxAtAKHwwUHB6tIy5Am36hRo4C7RfQZtitXrowdO5bL5TKZTD8/v/Ly8ri4OPRbd+/eBZeCqJPYrKysH3/8sby8HIIgCoXi4uKyYcMGBoPx6tUrCIKCg4NbW1tv3bqFfqWpqSkpKQmcXgN3lkZGRqK3cSYlJaFbORV1GYfDgRPatra2oaGhSGUBp44HXDJFnvT29tbV1amvDDgcDn2iEoKg0tLSL7/8UiQSffbZZ2Dzjo6OjlQqRYuanJxcVlY24PRrU1PTmTNnoqOjwZ/m5uarVq3y8vJ68+ZNW1ubamH4fD6VSp06dSpySrOsrKyyshKpQUwmk0KhZGdnIx13VVVVfHx8/wYQ+b86Y5j3RE2p0IBaoFqLMDD+ejCT7z8NcDfX3Ny8Zs2axMREgUDA5/OPHj0aGhr6ww8/gJHf/fv379y5M3/+/NDQ0HHjxs2bN+/atWtPnz4FMcycOdPFxSU8PPyXX35pb28XCASPHz+eOHHiqlWr0CMzJWbMmOHm5nbgwIHTp093dHS0tbUdP3782LFjcrlcT09PqT8jEolGRkZNTU2///47uIp6+PDhTCYzIiKioKBAKBQ2NDTs2LEjJiYG3QTr6upqaGjExsY+e/asrKxMSQBHR8eFCxfGxsZu27atpqZGKBRyudwNGzZIpdI1a9YgV069D97e3nQ6/dChQ2fPnk1OTgYGszqHBPT19a2trePj46OiooRCYUdHx7lz58BVGe8ghlwup9Ppa9eu7erqWrduXUJCgkAgKCsr++KLLx49emRkZITD4YDPxtra2rVr1+bm5gqFwpcvX65fv764uHjFihXqG8BAYVxcXKRS6eXLl+vq6oRCYXFx8aZNm9D9OgRBBAKhsrJy69atlZWVAoHgyZMnwAHa0qVLwZ6uFStWMBiMjRs3RkVFCQSCxsbG8PDw+/fvf/LJJ2r6X3n58uXmzZu/+uorIEZVVdUvv/zS19fn4eHxDtk4GDgcTiQS7dmzZ9GiRWlpaaC8zp8/X1ZW5uLioqWl9VYj9SF1RqkuDDnGsrGxGbKmDMb48eO9vLzOnj178uTJtrY2UEmvX7+OHggGBARIJJJdu3Zdu3YtKSlp586d58+fV3FakkAglJWVbdmypaKiQiAQREVFbdq0iUajgZtdVMvDZrPXrFlTWlq6evXqjIwMgUDw5s2bnTt3hoaGAl+gEAQlJib++uuvEyZMmDVr1siRIz/77LPIyMjr168PmVjVLSEEQTQazdnZ+fXr11euXAEHcp48ebJnzx41J2I0NTVV1EEIgiZMmBAYGHj69Onvv/++tbW1p6fn5s2bu3btsra2BjcQfGzALMCQ9W5ArYiIiEBr1Humxc/Pb+rUqTdv3tyxY0d9fb1AILhz58727dsbGhrAVaVLliwxMjLavn373bt3e3t7W1paDh8+fOHChXHjxo0ZM0adxL5582bz5s2ff/55ZWWlUCh88+bNzz//3NPTAxqHiRMn+vr6fvfdd99//z2PxxMIBFwud8aMGXPmzAEreyAhubm5mzdvLi8vFwgET58+BdNnyIqZiroMdjEMGzYsKysrIiJCKBT29vb+/vvvx44dAyvnQEg6na6np1dWVnbz5s3CwkLgAuSLL76YMGHC3bt31UkmDocTi8Xx8fFxcXExMTERERFbtmwZN25cRkbG119/PWnSJBDMy8uLxWKdOnXqxIkTKSkpp06d+vrrrwfbbiOVSsHVmk+ePAGSX716NSUlxdbWFrmlcDCcnJzEYvGvv/7a3NwsFAqzs7O3bt3a1NSEGKU2Njb29vZPnjz58ssvExMTr1+/vnLlSmQBGaTI2Ni4o6MjIiIiJyeHx+OprrkfZKJkSKkGZEgtwsD4G4Ax/vP8/PPPYD+GhoYG8C4wduxY4Dy6srLSzMzM0NAQcepdXl5uaGhoZWWF+CNOS0sDowEKhQJmcM3MzG7dugW2tQDjcM+ePUofBetp4C3wUX9/f3AjcFNTk42NjaenJ3IXQkpKCuIzBjgQP3bsmKamJg6H43A4FArFzc0NeJmLiooCr8hksp07d4LRp5OTk0KhiIqKQkvC5/NXrVpFIpEIBAI4oGhkZHTx4kVEwr1790IQBNxYA6RSaUhICJPJVOc2drFYvGvXLqQz09fXP3z48PDhw729vYFDanT8Srn08OFDMBBksVgaGhpmZmbA/SPYOpiWlkYikZYtW4Z8q6SkhMVijR8/HvGK3tzcbGtr6+LigrjSPn36NHBPCu4vplAoW7Zs6e7uBr/29fUdPnwY7M5lMBg4HI7BYOzYsUOda6ZlMtmUKVOYTCa4Arunp2flypXgBmEdHR0ymTxu3DgfHx8mk1lTUwP/eeHEnj17/P39oT89WOjo6CBX/QJu3boFjppoamqCYpozZw64mKt/jgEuXLgAQdDp06dhGO7s7Fy7di2JRCKRSBwOh0AggBs41HHZ3z+HYRg+efIkBEHg8onq6moNDY2JEyeCUz2XLl0CeQs280AQ5OvrC+6aQ0Kqc0nDkDoDD1QXVADOhaqoKeiU8ng8pXqXkZEBlprJZDLYsLdr1y5DQ8OVK1eCAL29vatWrUJ6E0tLyx9++EFbW3vKlCngkgawZt7c3AzD8JUrV8hk8hdffKFU7uhKN2T+HDx4EGippqYmkUgkEAgzZswA9bGhocHDw0NTUzMlJQWEb2hocHZ21tHRUedmDlhlSwjDcEFBAcgNLS0tbW1tJpM5f/58JpMJrmdUJ37VdbC4uDgsLAyCICqVCrTI1dUVuXKwf6vY2dnp7e1tZmaGNEcKhWLWrFmamprgQoX+usfn883MzFxcXJBbdiQSia+vr76+PriwDh6q3sEDacW+ffv09PQWLlyIhFGdliGpra2dPn06DocjEAhAT6ytraOjo5EA0dHRYPeBpqYmmKGbPHkycmXCkPVXIpFs376dTqcTCAQOh0Mmk/F4/Lx585BMKCoqCg0NhSCIRCKBpTADA4MzZ84gF/a0t7eD+SngJ4ZMJq9Zs2bcuHHGxsYgb4esy8nJyWDjK5PJZDAYurq64AaU9evXIzJHRUWBjoBCoSQlJXV1dYFOU+la8AERi8XofSIADQ2NkSNH3rx5E62xYG0cceXCYrH279/v6elpZmYGrldBt6swDD98+BB4fAX78CEIcnBw4HK5Q4rE4/Fmz54N6j6bzaZQKDNmzLC1tbWzs0MU7NGjR8gJQ9Big2tOkesuSktLka3ayEUdqmuuatatWwdBUFpaGjyI5gwp1WBvDalFGBh/Mcp7uDH+m5SUlCQmJtbU1DAYDGdn58DAQHB8qKGhITU11cLCAu2+PzMzs6amxs/PD/RGEATxeDwul1tYWCiXy4cPH+7r64t4r25ubk5OTnZ0dLSzs1P6aFNTU0JCArgDwNXVNTg4GBwbE4vFSUlJJBLJ19cX6TIrKyuB8+6pU6fa2dnJ5fLU1NT4+PjW1tZhw4ZNnDhRoVAUFhb6+fkh9y6IxeLk5OTCwkIOh7N48WI+n68kiUQi4XK5GRkZnZ2dFhYWwcHBDg4OiHhlZWUvX74cOXIkkkwYhlNTUzs7O8eMGaPkDm5AQPzFxcVkMnnUqFGOjo7gtkCQLnT8/XOpqKgoJiamrq7OwMBg/Pjx4PSjg4ODra1te3t7UlKSqakpsmDV09PD5XJZLNbIkSPB1GNfX19SUhK4uQ5ZdSkqKkpISABHp3x8fAICApT2/GRlZSUnJzc0NBgYGPj7+3t7e6uzggHDcEZGRltbm7+/PziR1dvb++LFi7S0tL6+Pnd393HjxtXU1PD5/DFjxtDp9JqampycnNGjR8tksgcPHtTW1hobGwcFBaH9/QDKy8u5XG5lZaWGhgYQGIyVoUH0qra2Njs728PDA3j4EIlEXC43Ozu7ra1NV1fXx8fH19dXyWXigPTPYQiCXr9+nZ+f7+XlZWZmJhQKnz9/rqOjM3LkSOQcDrgLjkajOTo6BgUFgSFI/5CqUa0zIIxSXVAdoeqagk5pX18fl8tVqndv3ryJi4srLS1lMBjjx4+nUqkhISFTpkwBo0AIgnp7e5OSkl6+fKmpqRkYGGhhYfHs2TOQXoVCweVyxWJxcHAwhUK5evXq8uXLL1y4EBoa+vDhw5qamsHKXTXZ2dkpKSkNDQ1MJtPT09PX1xfx5ZiUlKSrq+vr64usURQWFpaWlnp6eip5Ch2MwVpCQF1dXXR0NEhsUFCQh4dHeno6h8Px9vZWcxFedR3s6Oh48eJFQUGBRCKxt7cPCQkB61rQQK2iVCpNTU0Vi8UBAQFIc5SZmcnn8wMCArS0tPrrXl9fX0JCAolECgwMRHx4pqSk9Pb2BgcHI7sbVNQ7AForQkNDnZycuFyuvr4++tikirSoA2jTsrKyhELhsGHDgoODlXz81tXVvXjxoqysjEwmu7u7jxkzBtkuOGT9BbmXlpaWlpbW3NzMYrFGjBgREBCA9mDZ0dGRkJBQUFAgEomsrKz8/PyUtriLRKKEhISMjAyxWOzj4zNmzJglS5ZkZWW9evUKFMeQdbmioiI2NrayspLFYoWFhQ0fPjw5OdnKysrFxQX5SkFBAdg+MGfOHGNj4+zs7PLy8rFjxw55xFqhUCQlJYGL9aA//Wbr6+s7ODigfbAB5HJ5RkZGdnY2BEHe3t6enp6pqakikSgoKIhCoSi1qxAElZaWJiUlVVZWEggER0fHgIAAcLx/SDo6OmJjY3NycmAY9vLyGjNmTGlpqVgs9vf3R9SvpKQkOTm5t7fXyckpICDg9evXlZWVQUFBSE2sra1NTEzk8XghISGIyqmuuSooKCioqqoKDAxks9kDas6QUql4a0gtwsD4K8FMPgwMDAwMtSguLlYy+dQHmHznzp1DLwxiYPw7UCgU06ZNy83NRUw+DAwMjH8U2Fk+DAwMDAy1wKYIMTAG5O+92gcDAwNjSDCTDwMDAwNDLWAYBtcwvMO74EKCt73mEQPjfwWJRNLX1/d3S4GBgYExMNjGTgwMDAwMteju7k5JSTEwMHjbA3gQBNXV1eXl5bm5ual57AcD438IcKS5s7Nz7Nix6twui4GBgfEXg5l8GBgYGBgYGBgYGBgY/1qwjZ0YGBgYGBgYGBgYGBj/WjCTDwMDAwMDAwMDAwMD418LZvJhYGBgYGBgYGBgYGD8a8FMPgwMDAwMDAwMDAwMjH8tmMmHgYGBgYGBgYGBgYHxrwUz+TAwMDAwMDAwMDAwMP61YCYfBgYGBgYGBgYGBgbGvxbM5MPAwMDAwMDAwMDAwPjXgpl8GBgYGBgYGBgYGBgY/1owkw8DAwMDAwMDAwMDA+NfC2byYWBgYGBgYGBgYGBg/GvBTD6MgYFh+KOGfysUCkVpaWllZeVH/QrGO1BXV1dYWCiVSt/t9aamptzc3L6+vg8r1TuDKdiQyOXywsLCmpqav1uQv4G2tracnByBQPB3C6Iu/6hm/B+CVCpNS0u7evXqnTt3urq6Pkicr169Kikp+R/KvX+4qFiPj4HxMcBMPowB+O233yZNmpSbm6tm+GfPnk2aNCkqKuojyZOfnz958uQZM2ZUVlZ+pE/8XfD5/Llz5x44cEChUPzFn66pqZk7d+4PP/zwzjHw+fzly5eHhIQ8e/YMPFEoFDKZTM1+WiQSrV+/PiQk5M6dO+8swwckNzd30qRJN2/e/IBxvlWGIMjlcrlc/gHFeE9u3bo1ZcqUtLQ0CIK4XG5oaOi8efNaWlrAr/80aT8SUql09+7dISEh58+fhyCopaUF1FwYhuVy+bZt21asWNHZ2fl3i/n/+OGHH2bPnl1RUaFOYIVCcejQoUWLFtXV1X1swf5G5HL50aNHw8LCli5dumrVqg8yc1FXV/fJJ5+MHz8+JydHfTH+yiojk8mAfgIT92P31+/P2/b4MAzLZLK/vg/FwPjfAjP5MAagtLQ0KiqqublZzfC1tbVRUVEfb+KfSqXq6enp6emRyeSP9Im/C6FQGBUVlZGR8ddPZ3Z1dUVFRalv2PeHQCBwOBxdXV06nQ6eXL58ecqUKUVFReq8jsfjORyOnp4eg8F4Zxk+IM3NzVFRUWoOkdXkwYMHU6ZM4XK56r/S1dW1cePGTZs2fagliPenoqIiMjKyqakJgiA6na6vr6+rq0sgEKB/pLQfCRwOx2Kx9PT0tLW1of9bcxUKRVJSUlxc3D9nvRqCoLy8vMjISDWtUBiGMzMzo6Oju7u7P7Jcfyfl5eXff/+9gYHB3bt34+PjbWxs3j9OEomkq6urp6dHo9HUCd/a2rpo0aLdu3fLZLL3/7o6KOnnx+6v35+37fETEhImT5784MGDjywXBsb/NsS/WwCMfyIkEgmPx4MhnToQiUQ8Hk8kfix1cnBwiIqKwuPxWlpaH+kTfxc4HI5KpZLJZBwO9xd/Go/Hg0+/cwwcDufy5csikYjD4YAnr169io6O3rVrlzqvUyiUU6dOdXd36+rqvrMMHxACgUAgED6sGtfX10dHR69YseKtxEhNTQX/+YCSvA9EIpFMJgN5fHx8EhISqFSqhoYG9I+U9iNBJBK//fbbjRs36unpgSfo6kOhUKhU6l9fi1VAJpNpNBoer+7ELplMplKp6of/X6Szs7O7u3v16tUzZ878UHEaGhrev39fJpOxWCw1X3nx4oWLi8vH6zH7g9bPj91fvz9v2+O3tLTExMRMmjTpYwuGgfE/zT+3zmP8ldTX1xcUFAiFQgMDAx8fnwFHb7W1tcXFxQKBgMlkurq66uvrq46zpKSksrJSKpXq6+t7eHhoamqC5wqFIicnR6FQuLu7FxQUlJaW2tra+vj4qIhKIpFUVlYSiURnZ2cikVhdXV1dXe3p6SkWi3Nycnp6enR0dLy8vNRcLGpsbHz58qWrq6tMJktNTZVKpZMnTwbiiUSinJwcHo9HJpOtra0dHR2V3nJzc6PRaGlpae3t7dra2m5ubkg+iMXijIwMPT09c3Pz9PT0uro6Pz8/ZBa5tra2qKgIWEcuLi46OjpokfB4vEwmA0ekCASCnZ2dvb29kthtbW25ubmdnZ0MBsPe3t7c3Bz5qby8vLGxceTIkSCMWCw2MjLy9PSkUqnoGMRicXZ2dlNTE4VCcXd3H7DLH/IrPj4+9fX12dnZLBZr/Pjx1dXV3d3dbm5uUqk0JyenqqoK2AC9vb329vZmZmaqy6K+vr6xsZFCoWhpaXV1deXm5pqZmZmammZkZDQ1NdHpdGdnZ7QMgyGXy/Pz83t6ejw9PRFNgyCovb09NzdXX1/f2dkZPOnu7s7NzeXz+RQKZfjw4f3zGcmrjIwMJpPp4uKCjOOBDtjb2xsbG0skkpycHCqV6ubmVlJSUl5ejsPhrKys3NzcQGCRSJSVlVVSUoLH43NzczU1NW1sbBB9qK6ufvnyZW9vL4PBsLOzs7KyQp5nZ2eD02JPnz4FdQdRbNVa9KFyhkaj2dvbD7YAIhaLy8vLtbS0nJycVEurGtVp6evrA7oKQZC5ubmHhwe6UVL9KwRBFRUV5eXlfX19urq67u7ubztVBGQTCARsNtvFxQWp42/evKmtrSUQCKpzvrGxsaSkxMHBwdjYGDyBYbioqKirq8vDw0NDQwO0YCNGjOjp6cnNzZVIJMOHD3dxcYEgqKampqioSCwWm5mZeXp6vpUhXVlZWVZWJhKJTE1Nvb29BzTeQM6AbPfw8FBtpSDtIYFAsLS0RHQbgiCg/zQazc7OLisrq6qqyt3dHSQBeu/8B32HXC43NDR0d3dHVs+GrJUq4pRKpdnZ2UlJSRAE1dbWRkdHM5lMb2/vjo6OvLw8a2trS0tLJHB5eXlDQ4OXlxciuVQqzcvLq6urIxAITk5O1tbWGRkZJBJpxIgREAS9evVKIpF4eHiQSCQQvrOzMz8/v6WlhUAgWFhYuLq6gqIsLy/PzMyUy+UdHR1PnjzR0tLy9vamUCgqJEd6TE9Pz4qKitLSUhiGQVMDMgFoV2dn54gRI8BEDJJXLBYLKRQV9PX15efnNzQ0wDBsYGDg7u6OxKOatra2vLw8Ozs7XV3djIwMHo9Hp9Pd3NxMTEyUQhYXF4NcAnUKmTfp32/6+/ubm5uje3wVMfT19eXl5eXk5ODx+JcvX0ZHR5uamjo6OnZ3d+fk5BgYGKBb+Orq6qqqKhcXF11dXdX9NQbGvxMY4z9PRESEnZ0d0AdNTc01a9Zs27aNSCTGxMQgYX799VekNcTj8a6urpGRkcivV65cwePxv/zyC/hTIBDs2LHD0NAQhKdSqWFhYfn5+eDXvr6+oKAgd3f3r7/+mslkQhD0+eefq5aQx+O5ubkFBgZ2dnbCMHz48GEWi3X8+HF/f3/QH+Dx+NmzZ9fV1amT3qtXr2poaGzfvn3UqFEQBLHZ7KqqKhiGS0pKpk2bhgwvDAwMdu3a1dPTg7xFp9NPnjw5f/58pIf28PB49uwZCFBTU2NkZDR79uwlS5aAuf9ff/21f+6RyWQvLy/0W/r6+lOnTv3666+RxS5jY+OzZ8+iZY6Li/P29gaDBjweb2Njc+HCBYVCAX7dunWrjo7OqVOnPDw8wCCAQqEsW7asvb0diaGmpmbevHmIEejm5vbzzz8bGhquWLHirb6yb98+CwsLCIJGjRolFovnzZtnZmb26tWr/Px8ExMT8C6YUT5z5syQZbF161YNDY3MzEwYhjMzM/X09FavXv35558jIy0HB4e4uLgh45HJZBs2bKBQKA8fPkQ/P3v2LIFAOHLkCPgzMzMzODgYKT4jI6Nvv/1WLBaDX2NiYggEAjidVVNTY2hoOGvWLHASD3D16lUSiXTp0iX4T52cOHHiTz/9hKg6h8PZsWNHb28viMHa2hroJ5lMplAo33zzDQzDcrn81KlT1tbWSCNsZWV16tQpqVQKw/B3331HoVDweDwejyeTyVZWVoWFheDrKrTo/XMmKysrKCgIWbMyNzc/duwYEAmG4UOHDpHJ5AcPHqBzBobh48ePDyatalSnpbq6et68eYiBymKxNm/eDOr+kL9KJJITJ04gI04qlTpmzJj09HR1pOovG4FAcHd3j46OBj8dOXKERqOBnKypqdHT05s5c6ZcLpdIJP7+/sOGDePz+fCfeoJUf1AKc+bMMTc3B+N10IIdPHjQ09MTfEhfX//69etPnjyxt7cHVZjBYOzfv18ikagjs1wuP3/+PDI5oq2tvWPHjkWLFrHZ7KysLBCmr6/vxIkTpqamIAyRSPTz80tMTEQknD17trGxMXBDAsNwSUnJ9OnTkT3bOjo627ZtQ5oUHo/n4eExZsyY9evXgzD79u17//wXCATh4eEGBgbgdQ0NjcmTJ4NMg9WolSpob2/38fEBJhmJRKJQKL6+viKR6NmzZ2Qy+eDBg+jAW7duZTAYSNbxeLylS5cicxlWVlbnz593dXUNCgqSyWQSiSQwMNDOzg6UPgzDycnJfn5+SDvDZrOXLVvG4/FgGP7qq69IJBIOhyMQCBQKxcHB4c2bN6ol7+vrCwwMHDFixPHjx5FJNA6Hc+DAAZAPQLvMzMxevnyJvAXy6tNPP1UoFEr6qdRfv379evbs2UiTS6fTx40bh/TXqomJiaHRaAcPHlyzZg1iJdrb29++fRsJ09XVtXXrVqRMiUSim5sbMn7o329evny5vb0d3eOriKG5uXn06NGgmQXFumbNGhiGs7KyOBzOunXr0NIeOXKETqc/fvx4wO+iKywGxr8SzOT7r/Ps2TMtLS1TU9OzZ8+mpaVdvHjRy8vL0NCQQqEgJt+VK1cIBMKIESMiIiKys7N/+eUXS0tLHR0dZJSG7kIkEslXX30FQdC0adPAWZd9+/ZpaWm5urq+evUK/rMDA2sse/fuffDgQUFBgWoheTyes7Ozn58f6AAOHTpEJBLNzMw2bNjw7NmzyMjIyZMnQxD0xRdfIPaJCkBydHV1Z86ceePGjZiYGIFA0NTU5O3tra2t/c033yQnJ0dGRoKdP3v27JHL5chb5ubmgYGBERERqampR48e5XA45ubmubm58J9diKampqen508//fT48ePq6moYhq9du0YikUaOHHnz5s309PSffvrJ2NjYzMwsJycHvGVsbMxisfz9/S9evJiSkvLjjz/q6Ohoa2sDQwiG4YyMDH19fXNz8zNnzmRkZFy/ft3Ly4tCody6dQsE2LJlC4FAsLW1/fLLLxMSEu7du+fn5wdB0HfffQcC9Pb2Tp06FYfDrVy5Mi4uLi4ubuXKlSYmJlQqFXSQan4Fh8OZmpp+9tln9+7dS05Olkqls2fPNjIyevnypVAoTE9PX7hwIYFAOHXqVHJy8pBDGRiGN2/eTKFQwIGojIwMHR0dNps9YcKE27dvc7ncr776ikKheHp6NjY2DhlVXFwcgUBYtWoVogN9fX0TJkzQ1tYGdkhJSYmtrS2LxTp8+HBmZuaTJ08mTJgAQdC3334LRk5KJp+Ojs6MGTPQg8vLly9DEHThwgUYhnk8nru7O4fDGT58+J49e5KSku7evTt27FhEZ8Ca6vr16wkEwt69e5OSkmpqamAY/v3334HJ/ccffxQVFd2+fdvZ2ZlOp4Pq1tDQ8PjxYzs7Ozs7u8ePH2dmZgIDUrUWvWfOvHz50s7OTk9P7+jRo2lpaffu3RszZgwEQadPnwavKJl8IGcUCsWbN28GlFY1qtMilUoXL15MIpHCw8MLCwvz8vKWLl0KQdChQ4eG/BWG4e+++w6CoPHjx9+7dy8tLe3IkSNsNtve3h5k/pBcvXqVSCS6urpevXo1IyPj559/NjAwMDY2BqP/gwcPEonE+/fvwypNPqAn58+fR6KVyWSzZs0yNjYG1gvSgn311VcJCQngK2w229bWdufOnVwu99q1a8OHD9fU1Hz+/Lk6Yt+4cQPYD5cuXUpLSzt9+jRYONXV1QWSKxSKY8eOQRAUEhJy//79rKysH374QU9Pz9TUFAzulUy+xsZGLy8vOp2+a9eutLS02NjY+fPnQxC0du1aYIUCk49CoTg5OX333XePHj0qKytTKBTvk/+g78DhcLNmzXr69GlycvKOHTs0NTWDgoKAvTRkrVSBTCbLz8//8ccfCQTCokWLuFxuXl4eDMMxMTE4HG7//v3owJs3b6ZSqSDrhELhokWLIAj65JNPnj59mpCQsGnTJgsLCwaDERgYCEw+sEDU3NwMw3B5ebm1tbWGhsbRo0fz8vISExPnzZsHQdD27dvlcnl1dfXdu3d1dXV9fHyeP3+elZXV19enWnLQY4LVsxMnTqSkpFy6dMnCwoJCoYDJCKBdRkZGiLmO5NUnn3yi2uTr6uoCzeD69evT0tKysrK+/vprEok0ceJEZLpTBTExMRQKxczMzNvbG+jemTNnTExMmExmfHw8kA2MB6ZOnfrs2bOCgoJTp05xOJxhw4ZVVFTAA/WbdXV1zc3NoMfv7u6Wy+WDxQCWggsKCvbs2YPH4zdu3JiUlASizcjI0NLSQno3wMGDB0kkEjJlM2B/jYHxLwYz+f7TCIXCGTNmaGpqPnnyBHmYl5dnYGBAJBJjY2NhGG5sbHRzc7OyskLPICYmJmppaU2dOhV0V6ALAZNkaWlpbDY7LCwMmXeHYfjMmTNgKAzDsEQiCQoKolAod+7cUVNOHo/n4uLi7++PrPJBELRy5UpkCFtTU2NmZubq6trR0TFkbFevXoUgaObMmUKhEHl49OhREomETHyCzBk7dqyRkdHr16+RtxwcHIDnaMC1a9dwONyGDRtgGK6trTU0NDQyMkIvdDQ1Nbm7u7u7u9fX1yMPQTe5adMm8JaRkZGenh56VvX48eOIwdbX17dgwQJdXd2kpCQkwOvXry0sLAICAgQCAQzDW7duhSBo586dSICsrCwdHZ2wsDAQ4P79+wQCYfHixci6jUwmW758OQRBoFNU/yugEJFIlFYGwsPDiUQiOhLVbNmyhUajISYfk8m0t7cHi64wDMvl8kWLFlEoFKCKqunq6vL09LSyskLsw+LiYiaTOW3aNJDqLVu2QBB05coV5JXW1lZ/f39DQ0Mw6aBk8oEBPXpwCfT84sWLMAzzeDywp+vkyZNIgObm5hEjRhgYGCBK8sMPPxAIBPSc94MHD8LDw4uLi5Enjx49wuPxYJEEhuHOzk5PT09PT0+kBg2pRe+ZM1u3bqVQKGDyGwAG9C4uLuAVJZMPnTP9pVXNkGlpbm62tLT08fFBfm1vb9+3b9/vv/8OwzCfz1fxa3V1tamp6ZgxY7q7u5EAV65cIRKJiE04pGzW1tbotu7WrVssFuvo0aOD5UN/k09pFQX+s6aYmJggq3wQBIF2A7Bv3z4IgtCLEleuXEHP2qigu7t79OjRurq62dnZyMOoqCgmk4ms8r1+/drY2Njd3R3YTkjSKBTK6tWrgbdDUJdB2o8ePQpB0OHDh5HAIpFoxowZNBoN1G4w5cFms9HLs1VVVe+T/+np6RwOZ+7cuWgr6NixYwQCASziDVkrh4TL5RKJxB07diBP0LUeYcuWLXQ6HWRdbGwsjUabNGkS2gTasWMHBEHBwcHA5AOlD0y+ly9fhoeH3717Fwnc1NRka2vr6+sL6khTU5OxsfH48ePVERj+c18MkUhENyO//fYbgUD48ssvYRiWy+VK7TCSV7NmzVJt8vH5/IMHD54+fRq9njxt2jRDQ0N0LRiM2NhYIpFoYGAA7GdAZGSkpqbmp59+KhaLJRLJuXPn9u/fjyyBwjC8d+9e9NRJ/34T6fG7u7ulUqnqGGAYjoiIwOPxP/30ExIA9CZr165FS3vo0CEKhfLo0aPBvouB8e/m33xQG2NIamtrMzIyfH19waQ+wM3Nbfz48YgL6by8vJcvX86cORO9J97f3z80NDQpKam6ulopTi6X297evmzZMuDXDjB79uzhw4dHRUWBYz8KhcLIyCgwMPDdxIZhmEAghIWFIcc5TExM7O3t29raent71Xkdh8OFhoYiezh7e3tjYmJsbW3DwsKEQqFAIBAIBHg8ftKkSTweLz8/H/rzIqNp06aht/tPmzbN2dn5xYsX3d3dOBxOoVCMGDHCyckJCZCXl1dWVjZz5kw9PT0QrVAodHd3t7e3T0lJAZksl8s9PDyQI1UQBHl4eNDpdOAxta6uLjk5OSAgwM3NDcgmFAqNjIyCgoIKCgqAR3UYhkkk0vjx45EYrKysLCwsWltbRSIRBEHPnj0jkUiLFi1CzkUQCASwQxU4tlbzK2QyGUwJDwaI7Z090cEw7OPjgxyqwePxnp6eUqm0tbV1yHe1tLRmzJhRXV0NjutAEATcD86YMYNIJLa3t8fExLi6us6YMQN5hcPhLFmypKmpKSUl5R2klclkVlZW6Aj19PQWLFjA4/HS09PBE6SIkTDTpk07dOgQOCYqEona29tJJBKRSEQ8KyJmOXLboWotGvJSRNU509HRER0d7e3t7efnhyg/i8UKCQl5/fr1kG79+kurGtVpkclkwCNoZWXljRs3+Hw+BEEsFmv37t0LFiyAIIhKpar4NSkpqampae7cuRQKBUQuEolGjx5tbm6enJwsFotVy5abm1tSUjJr1ix0W/fpp5/W19dv3LhRndSpCQzDRCIxODgYeWJmZobD4VxdXZEn5ubmRCJRHf+Z5eXlubm5EyZMAHMQgKCgoFGjRiGKB1bdFy9ejD6DPWHCBC8vr4SEhKamJqQtxePxfX19MTExlpaWc+bMQQJTqdSlS5fKZLKYmBjwRC6X29raenl5IWGSk5PfJ/+5XG53d/f8+fMVCgXyelhYmKamJnAR9P7ecUDT9Fbe/FNTU0Ui0eLFi9FHYRcsWMBkMuGB3Czb29sfOnQIbBKRSCRdXV0CgUBbW7u3txfkAJBB/SoD/dljgr0bAGdnZxaLxePxoPfLFl1d3R07dqxbt45EIikUiu7u7paWFiaTKRaLhULhkK/DMCyXy8ePH48+5xkSEjJ69Oj09PT6+noSibRmzZpdu3aBYwu9vb1tbW2ampowDPf09CCpU+o30QknEolDxtC/mVUHFd/FwPhXgrlv+U/T0tLS3d1tbW2t5OfDxsYGh8OB/qyhoUEqlaIdmUAQhMPhHB0dHz161NjYaGtri/6ppqaGRqMNHz4c/ZDFYtnY2BQWFnZ1denr64MRz4D9pZoQCAS0q8m3jRCHwyHn7CEI6urqamlpAdcr4fF4EA8ej+fz+QqForGxEQTD4/HoI1gQBAGfHElJSZ2dneBFMpmsUCgQpwsNDQ1isfjKlSuPHz8G4wyQsaWlpYaGhgqFAvypoaGBFh4cjgJP+Hx+d3d3SkpKSEgIGFuDDr66urqnpwexhYBPRaUsAl2gQqFoaGjgcDhK7g2MjIzYbDaQqrm5WZ2vAJ+WambyO4DD4ZQcnROJREQVhyQ0NPTEiRNPnz6dPXu2SCSKiYmxsLDw9/eHIKi9vb25uTkkJAQ9boMgyNbWlkwmA8PmbUdOMAyDTbnoh1ZWViQSSfXlZrm5ubdu3crNze3u7pZIJOBfFZ4SVWuRXC5HK/OAqMiZtra2trY2Pp8fFhYG/Tm1QSAQ6urqBAKBOnMob4XqtMhkMk1NzW3btm3YsGHRokW2trZubm5BQUHTp08H3hoYDIaKX6urqxUKxYkTJ8AZVBC5VCqtrq7mcDhCoVCpoesvm1Qq7e/RR01XFm+Fkkvk/kYIKAh1dLKxsVEsFiu1w1Qq1cLCAlylCEHQ69evKRTKsGHD0GEYDMawYcNKS0tbWlqQ03d4PL6rq6uxsdHMzEzJS42FhQWLxUJXFhKJhK6b75n/tbW1crl8x44dYJsleB1YTW/evBkyHz4SjY2NNBoNcbAEAFcIDGY68vn8GzducLncpqYmiUQiFourq6uV+tC3AoZhKpWKdrgFTgO+Tx+KIBKJ7t27FxUVVVtbKxKJJBJJQ0MDaHjVeR2HwynpFZVKtba2Tk9Pb29vhyBIoVDExcU9ePCgtLRUIBBIpdKWlhaki4H+nExE95tKDBnDuzHkdzEw/mVgJt9/GoVCoVAo+o81cTgc0pgCs6G/d0fQ3/Tv8+Ry+YCGAZFIlMvl/5zLUtGdpUKhkMvlZDLZwsICLbm1tXVAQADi2wYaaASGx+PR2ajUB4MNSLq6ukq+K21tbU1MTBC7TkXPLZPJ5HK5lpaWpaUlOpiNjQ2DwVDnegNQTDgcTqmg0WlR/ysfZJChWloVf6rG2dl51KhRXC63oaGBz+dnZWXNmTMHOJsBdx+D20fQrxAIBBwOp+b0cP/SR9cUdISD6TkMw5cvX968eTOBQHBxcbGwsOBwOAKBoLa2VrUOqNAidcYrQ+YMnU5HeyyEIMjKyopKpRoZGQ0Z+VuhTlo++eQTBweH69evp6Wlcbncmzdvnjx58ueffw4JCVH9q0wmw+FwBgYGBgYGSH7icDh7e3tHR8ch7yMBavCXjf8+VFUasHZDEIR+IpfLcThc/2acSCSC5kspQrC6ohQnMFPRa/hKSZBKpe+T/+B1ExMTtIdPHA7n5OSEXsBU4mNfjIG00mjAmYIBwxcUFCxevLi0tNTR0dHS0pLNZtPp9Pv3779n3wdm4tQPr2a28Pn81atXP3r0yMbGxtbW1trams1mJyQkgH3Xan6o/7fA8AAY/Dt37jx+/LihoaGTk5OxsbGOjs6rV6/A0WV06gaMHKw57969e8gY1BRV6cnH7s4wMP5RYCbffxo2m62pqVlXVyeVStELBbW1tWAYAUGQnp4egUCoqqpSere6uppGo/U3OQwNDQUCQX19PXqTklAorKur09HR0dLS+gc2spqamgwGQ0ND47ffflNxna5CoVBavRGLxbW1tWw2W0tLC+xZVUJXVxfsqFy3bt2AcQ6ZG2w2m0aj+fr6Xrp0SY2kDBA/gUDQ09Pr6Ojg8/nopYCWlhawOPn+X1Hi77qdjEajTZkyJTY2NjU19c2bNwKBYNq0aSCB4FxTdXW1SCRCF3FdXZ1EIgEuN5XKApiC6LSAw5/oAGB1FH0tQUNDg0QiQZzLISHBf9rb28+fP89gMC5evDhu3DjwvKCgAJzSGfAVSA0tep+c0dbW1tDQsLe3v3Xr1rtFDr1NiauZFnt7e3C86tWrV5GRkeHh4QcPHhw1ahRwDjngr+BYJg6H27RpE3q3rfoM1tYBI+dt7zFTmlQCW6w/BiBLlbbgSiQS9Kjd2NhYLBbX19ejw4AnWlpabDYbLSqDweBwOE1NTd3d3egVTj6f39nZCWYBBmy4DAwM3if/9fX18Xj8N998M3LkyAEDACtCda18B/rPXQIvROD/5ubmYrG4srISca8KQRCPx+Pz+Ur7JoBUt2/fLiwsPHjw4Oeffw5ON0il0oKCAmTnNjrwh6J/tvT19QETWsUrEATFx8c/evRowYIFR44cQZKzfv36GzduqPnp/t2iRCKpra3V1NTkcDivXr26fPmyl5fXhQsXkMMLV65cQbYHq4ZEIlVUVKgZw5AWnUAg+OdMOmNg/PVgZ/n+01hYWDg7O6empubm5iIPq6qqYmNjkalNNzc3U1PTR48egZMzgPLy8tjYWODWRSnOUaNGUSiU27dvoyeD4+Pji4uL/f39/5kmH4vF8vX1LSwsjIqKQj+vrKxMSUnp6uqC/uxOoqOjW1pakABJSUmFhYWjRo1is9kDpsvV1dXIyOj27dvo/l4sFqelpZWUlKgjGyijuLi44uJi9PO8vLysrCyJRKL6dSAVcMHy4MED9E8PHjwQiURg3P+eX0HTf9Hgr2T8+PH6+vq//fYb8IQ5evRo8FxHR8fX1zcnJwc5zwZBkEQiuXPnDoPB6H8tpIaGhra29suXL8GJSgiCRCIRcHCCDCyIROLr169fvHiBvAW2SGlra3t7eyMP0QNKgUDQ3t5ua2sbGhqKxJOWliYWi9HjFXBCBlluUq1FalYo1TmTkpKCbAIElJSUZGRkDDiRoYSStKoZskbU1tb++OOPoJjAnrH169fb2tqCXWf19fWD/SoQCEaPHk2j0a5fv44+JdXd3Z2amlpRUTGkbEhbB45IAVJTU0NDQ4EzFTVhMpl4PD4nJwd5glwdpn4k6mNnZzd8+PDo6Gj0yerc3Nz09HTki6NHj9bW1r5z5w7a8szKykpPT/f09DQyMkK0SKFQaGho+Pn5lZeXx8XFoT909+5dcCHBYJK8Z/6PHj2aQCD89ttv6Aakra0tOTkZGLR0On3IWvm2MJlMCoWSnZ2NLPVXVVXFx8cjFn5AQIC2tvavv/6K9IBSqfSXX37p6uoa8KN8Pp9KpU6dOhU5zV5WVlZZWYkufbBh9UNdho7D4TgcTnt7O7pPiYyM7OjoGDJbwK0b48ePR+y9jo6OgoIC9b+Ox+NjY2PRMw55eXlpaWmurq7Gxsatra2gYiLWGgzD6enp6p+76+zsVCcG0AohfzIYDDqdXlxcjLQzPB4PuBpS/bnW1lZw4ScGxr8PzOT7T8NgMJYvX97e3r5p06bU1FSBQJCTk7Nhw4aOjg6kN7K0tFy+fDl4Xl5eLhQKMzMz165d29LSsnr1avTJKNCY+vn5TZs27caNG7t37+bxeEKh8PHjx5s3b9bV1V2yZAn0T91KsXTpUg6Hs2XLltu3b3d1dfX09ERERISGhm7atAk5zkQgEMrKyrZs2VJRUSEQCKKiojZt2kSj0RYvXgwNki4rK6ulS5cmJiZ+/vnnxcXFQqHw9evXmzZtCgsLe/jwoTqCgZsSm5ub16xZk5iYKBAI+Hz+0aNHQ0NDf/jhB/WH+15eXmfPnj158iQ4u3X8+PGIiAiklBkMxvt/BYIgcEAxIiIiMzPzbzl+Y2pqOnbs2JiYmKysLPSoi0AgrFixgsFgbNy4EbgRamxsDA8Pv3///ieffIKevwewWKzRo0dXVlZu2LAhOjr6yZMny5Yty8vLUzoyisfjDx8+fO/evd7e3urq6m3btsXFxX366acODg4ggLGxsUKhuHv3blpaWm1tLfAtnpWVFRERIRQKe3t7f//992PHjqE3R9HpdD09vbKysps3bxYWFvb09Ly/FqnIGSKRuGLFCiKRuHr16sjISIFA0NHRcfr06dDQ0L179w7pcqO/tKrDD5kWkUi0Z8+eRYsWpaWlCYXCjo6O8+fPl5WVubi4MJlMoVA42K+ampqOjo4LFiy4d+/eF198UVlZKRQKX758uXLlynHjxnG53CGzCGnrPv/8c3AVe3Jy8qZNmzIyMpS2oQ4G0A0nJydLS8vr16/v3r07KSnp4sWLmzdvFggEH2qIrwSHw1m+fHltbe3nn3+em5sLxP7qq68EAgGyd8PR0XHhwoWxsbHbtm2rqakRCoVcLnfDhg1SqXTNmjWIGyckCUuWLDEyMtq+ffvdu3d7e3tbWloOHz584cKFcePGoX19KeHs7Pw++e/n5zd58uQLFy7s3r27vr4e9DXz58+fNm0a8KHFZrPVqZVvhY2Njb29/ZMnT7788svExMTr16+vXLkS2f4AQZCnp+eqVavi4+NnzJjx/fffnz59etasWfHx8eilUTROTk5isfjXX39tbm4WCoXZ2dlbt25tampCygJslc/Ly7t161ZRUZE6XlJUgEzqSSSSXbt2Xbt2LSkpaefOnefPnx9yJy1IPo1G++2330DnXlVV9eWXX2ZmZqqvq0Qikc/nb9y4MS8vTyAQpKSkbNiwobOzc8WKFRQKxdjY2MjI6MmTJ0lJSUKhsLW19eDBg8DBpjpWOgzDpqamQ8agr69PJpMjIyMTExNfv36tUCjMzMzc3d1TUlK2bNny/Pnze/furVy5sqqqSvWt9zU1NQsXLpw2bVp2draaycfA+F8CxvhvI5VKDxw4AHam0el0PB4/YcKETZs2QRD09OlTEKa3txdcmY3D4UBINpv9/fffI876Lly4AEHQ6dOnwZ91dXUzZ84EtzOD8FZWVshN0H19fZ6ensbGxmh34appamqysbHx9PQEdzDs3bsXgqA//vgDnYqQkBAmk6nObexK0iI8ffoUjNRpNBrYP+bg4IDcwnzlyhUymfzFF18Apxdgc6COjg7iHLy6ulpDQ2PixIloB+Ig97Zs2QL2RzEYDJAtK1euBB69B3zr+fPnyN0PAHBzFwRBGhoaoNMaO3Ys4ugf7JFLS0tDwre2trq4uNja2oKvwDCckZEBfOuRyWQSiWRgYLBv3z49Pb2FCxe+81dkMtmUKVOYTGZRURF4UltbO27cONC2AAfiqkHHmZaWRiKRli1bhg5w8uRJCIKuXr06ZFQI9+/fhyBIU1MT3P2A5tatW2DsrqmpSSKRCATCnDlzmpqawK9Pnz6FULdQFBYWojeYjR8/fs+ePRAEnTt3DoZhHo/n6uo6evRo4M+dSqWCMeKnn37a0NCAfLG9vX3WrFkghjlz5sAwnJKSApy+MplMMPhbtmwZBEHr169H3oqKigLb5ygUSkJCAjyUFr1/zkRERICcAWmBIMjT0xO5QRtd4/prbH9pVTNkWi5dugQcS7LZbBDM19cX3H455K/Nzc0rV64Eg13Q+GhoaGzdulWdS8bgP9s6UP3Bv2w2G7mfcMB8AJc0KLVp165dQ0wCDQ2N7du3jxs3jsPhgFXZ/i3YL7/8AkHQzz//jDwBK2xff/21mmJv27YNpJpGo4EbWebOnUulUpGy5vP5q1atAmoPcsbIyAhpvvrX5ejoaOBxRFNTE6jE5MmTy8vLwa9KbTLCe+Z/bW3t9OnTwWlw8DqTyTx06JBYLAYBVNfKIQG5unXrVvTDR48eISY9uLUCXPaIZJ1AINi7d6+1tTVYZvTz87t//76dnV1AQAC4pAFd+jweb/bs2aAg2Gw2hUKZMWOGra2tnZ0d0tRcu3aNw+GALEIufB+MAXvMvLw8TU1NcAcDDMO9vb2rVq1CssXS0vKHH37Q1taeMmUKuKQBxACqGLoHFIvF4eHh4JAzh8MhkUhBQUGBgYEaGhrIxbAqiImJIZPJGzZsGDduHB6PB1VGS0vryJEj4D5bGIavXLkCfFxxOBwqlWpvbw/yB1y8MWAPiGgXuNZCdQwwDPf09Kxbtw5YgCEhIeCOkJSUFOQgA4FAWLhwIehu7t27N9h3c3JywFwY+sYaDIx/Deq6wsP4F6NQKDIyMhITE9va2uzs7KZMmdLT05Ofn+/n54d49JbL5enp6cnJycC3m7+/P/o8fW1tbXZ2toeHB+IBore3l8vlZmVlCQQCW1vbwMBA5G4DhULB5XLFYnFwcLDqKTcEsViclJREIpF8fX1JJFJZWdnLly9HjhyJ+JaAYTg1NbWzs3PMmDEqDuMNJi1CXV1dQkJCaWkpgUAAPToyFLh69ery5csvXLgQGhr68OFDcIV6UFCQu7s7CCAUCp8/f66jozNy5Eil+Uu5XJ6RkZGSktLc3Kyvrz9ixAhfX1+Q9gHfamlpSUlJsbKycnFxQSIpKSlJTEysqalhMBjOzs6BgYGIr8iCgoKqqqrAwEBklCmRSJKTkxUKhb+/P5LJb968iYuLKy0tZTAYoaGhTk5OXC4XyPNuX4FhOCMjo62tDWzZBQ95PF58fHx9ff3o0aPRXsUHBB1ne3t7UlKSqamph4cHEuD169f5+fleXl5qLrNAENTd3c3lcqlUqp+fX38PgeXl5Vwut7KyUkNDw8fHJyAgAAxTIAhqbm5OTk52dHREHPbU19cnJCTweDxzc/OQkBCRSJSRkTFixAgLC4vm5uawsDAWi3Xnzp2srKzU1FQcDjdixIiQkBD00T4Igtrb2xMSEl6/fu3o6Dhx4kQIgioqKmJjYysrK1ksVlhY2PDhw5OTk5WKu6CgACxkzZkzB+y5UqFFHyRnKioqwEXGFArFxcXFz88POZGIrnEDamx/aVUzZFoKCgoSExPr6upoNJqjo2NQUBD6eKTqXyUSSVJSUlZWVltbm6Gh4ahRo7y9vdV3yiKXy9PS0lJSUvh8vomJSUBAAFJBBssHGIb7t2lZWVmZmZlSqdTV1dXPzy8vL6+lpSUgIIDBYPRvwWpqanJyctzd3ZGt8i0tLVwu197eHlkxVo1MJktMTExLS+vp6XF2dp48eXJDQ0NVVZW/vz9ShSUSCZfLzcjI6OzstLCwCA4ORiIfsC7X1dW9ePGirKyMTCa7u7uPGTMGWRxWapPRkrxn/vf29iYlJWVnZ/f09JiZmY0aNUrJd4uKWjlk5CBXbW1tlVzzl5SUJCcn9/b2Ojk5BQQEvH79urKyMigoCO2Pt66urra2lkgk2tvbwzDs6elpYmLy/PlzPB6vVPodHR2xsbE5OTkwDHt5eY0ZM6a0tFQsFvv7+4N6B8NwdnY2MCnnzp2r2gvXgD1mV1dXUlKSnp4esocc5NvLly81NTUDAwMtLCyePXsG9FMpBqUeUCKRxMfHgw7U0dFx0qRJbW1tNTU1aM0ZjNjY2IkTJx44cGDZsmWRkZFlZWU6OjpBQUHe3t7oTjAjIyM+Pv7Nmzfm5uaTJ0+m0Wg5OTkjRowwNzcfsD3pr10qYkCSHx8fX1FRYWFhMXXqVPBWZWVlcnJyW1ubjY1NaGgoj8cDBzEMDQ0H/K5EIklISABX8n4MP70YGH8vmMmHgaEWwOQ7d+4cejIV4z8LMPm0tbWfPHmiZONhYGD8aygsLLx06ZK/v/8nn3yCPMzLywsMDBw3btzt27f/Lm9V/wSAyfftt9/u3Lnz75YFAwNjCDCPnRgYGBjvDuYCDgPjXwyBQLh9+/Zvv/0mEAimTJlCJpMLCwv37NnT09MzadKk/7K9h4GB8b8FZvJhYKgFuFRQfT9jGP9uYBju6+t7K1+mGBgY/3M4OjqeO3fuyy+/XLJkCZlMJhAIIpGIzWZ/++23c+fO/bul+5sBfSLaOzcGBsY/FmxjJwaGWtTV1eXl5bm5uSGHBzD+y/T19aWkpJBIpJEjRyqdZcLAwPiXUV1dnZmZWVlZKZVKTU1N3d3dVdwO/9+Bz+enpaXZ2dmhb3zFwMD4Z4KZfBgYGBgYGBgYGBgYGP9asHv5MDAwMDAwMDAwMDAw/rVgJh8GBgYGBgYGBgYGBsa/Fszkw8DAwMDAwMDAwMDA+NeCmXwYGBgYGBgYGBgYGBj/WjCTDwMDAwMDAwMDAwMD418LZvJhYGBgYGBgYGBgYGD8a8FMPgwMDAwMDAwMDAwMjH8tmMmHgYGBgYGBgYGBgYHxrwUz+TAwMDAwMDAwMDAwMP61YCYfBgYGBgYGBgYGBgbGvxbM5MPAwMDAwMDAwMDAwPjXQvy7BcD4+4FheMDnOBzuL5bkfxqRSFRSUmJubq6rq/t3y4LxIWlra6upqbGzs9PQ0Pi7ZcGAIAiSy+UlJSVaWloWFhYqgsEwjDViKlAoFOXl5UQi0cbGBsuod6Curq6zs9Pe3p5EIn2QCKVSaXZ2dkVFBZ1ODwsL09bWhiCovb09LS2Nz+dbW1v7+fnx+fzGxkZHR0cKhfLXS9gfrJZ9JJCM7erqqqysHDZsGNAHDIx3Blvl+68TERExYcKE0NDQ4P/LtGnTKisr/27p/n9gGJbJZAqF4u8WRBWXLl0KDQ398ssv5XK5OuH/JxL11yOXy9XMwL8GqVS6e/fukJCQ8+fPDxampqZm7ty5P/zwg5pxwjAsl8vftugVCoVMJhtsguY/BZfLDQ0NnTdvXktLy2BhIiMjJ0yYkJ2d/QG/+09Tzv68lYT5+fmTJ0+eMWPGP6Gpl8lk27ZtW7FiRWdn598ti1rw+fzly5eHhIQ8e/bsg0Qol8uPHj0aFha2dOnSVatW1dTUQBDU0NCwfPnyyZMnL1++/MiRIx0dHRs2bAgJCblz585fL2F/PkYt+1v426s2ov9dXV0QBP3yyy/Tpk2rqKiAIOj7778PCQk5fPgwaPyxkQPGO4OZfP91ysvLY2JiKisre3t7u1H09PT8cwY3CQkJkydPfvDgwd8tiCoYDIaenp6Ojo6aU56FhYVTpky5cuXKR5brfwmZTLZz584lS5a0tbX93bL8/+BwOBaLpaenp2KGtaurKyoqKjc3V804X79+PXfu3BMnTryVJJcvX54yZUpRUdFbvfWvhE6n6+vr6+rqEgiEwcJUVVXFxMTweLwP9dGurq6NGzdu2rQJjMn+gbythFQqVU9PT09Pj0wmf2zZhkShUCQlJcXFxfX19f3dsqgFgUDgcDi6urp0Ov2DRFheXv79998bGBjcvXs3Pj7exsYGgqAHDx48fPhw1qxZ8fHxP/74I41GA80Rg8H46yXszwevZX8Lra2tixYt2r17t0wm+7tkUNL/oqKix48fd3R0QBCkra2tp6fHZDLB0AIbOWC8M9jGzv86YMz0zTffzJkzBz1vhMPhPl4/8ba0tLTExMRMmjTp7xZEFYsXLx43bhybzcbj1ZpJ6enpiY6Odnd3/9iC/Q9BJBKzs7Nfvnz5z1nLIhKJ33777caNG/X09AYLg8fjqVSq+uNmsVgcGxv7tvXr1atX0dHRu3btequ3/pX4+PgkJCRQqVQVW22JRCL0Z/v2QSAQCKmpqR82zg/L20ro4OAQFRWFx+O1tLQ+smhqQaFQqFTq/8ouQQ6Hc/nyZZFIxOFwPkiEnZ2d3d3dq1evnjlzJvKQx+MRCIRNmzb5+fmBJ6dOneru7lbn+MAHl7A/H7yW/V28ePHCxcUFJOfvAq3/JBKJRqOB/2/evHnBggU6OjogGDZywHhnMJMPA4IgiE6na2pq9n8uk8kyMzP7+vpGjhxJo9HAw87OzuzsbBaL5e7ujpg3JSUllZWVUqlUX1/fw8NDKba2trbc3NzOzk4Gg2Fvb29ubo78VF5e/ubNm9GjR3d1dWVlZQmFQn19/REjRoAY+vr68vLycnJy8Hj8y5cvo6OjTU1NHR0dkdfBd+VyuaGhobu7OyKkWCzOyMhgMpkuLi7IGKKxsfHly5f29vbGxsYSiSQnJ4dGo9nZ2WVlZVVVVbm7u7u4uAyZV/X19UVFRT09PQwGw9nZ2dTUFDxvb28vKyuzsLAwNzdXKBQ5OTkKhcLT07OioqK0tBSGYSsrKzc3NxwOB35NSUkhEAhVVVXR0dF6enru7u5qjnUqKirKy8tBR+7h4cFisZQCtLW15eXltbe3a2ho2NnZWVtbo3+FYTgvL6+mpkahUBgZGY0YMULpTEhDQ0NJSUlnZyeNRrO1tbW1tVWKv7a2tqioCAjg4uKCdEUIjY2NRUVFoLhdXFxMTEzUib+xsTE/P7+jo0Mmk8XGxurp6Y0YMaJ/6gaku7s7NzeXz+dTKBRbW1s7OzvwvKurKzc318DAwN7eHglcXV1dVVXl4uKiq6sL9ERXV9fOzi4/P//169dEItHOzg4d/s2bN7W1tQQCAUmpWCzOzs5uamqiUCju7u4DDhRaWloKCgra29spFIqlpSVQLRiGi4uLExMTQXqjoqI4HI67uzty0qa4uPjVq1cSiYTNZru4uAA7E6SiqqoKjOl7e3vt7e3NzMxU5wnQdjc3NyKRmJmZ2dnZyWKxPDw8lMZ/IpEoJycHjCwtLS3d3NyQn0AdoVKpLi4uhYWFVVVVeDx+2LBhTk5O6hQK0HO5XO7j4/P69euioiK5XG5ubu7h4YGMEYGu2tvbUyiU1NTUnp6esLAwMJyVSqV5eXn19fUQBJmbm7u7uyNvicXi8vJyLS0tR0dHpNbweLyCgoKuri4OhzNq1KgBh6GIntBoNHt7e7CQAsqlqKiou7vb29u7rq6upKREIpGYmpp6eXmBeKqrq7OzswUCAQRBT58+Ba2cOistSvT19QHNAYlCsgLklUQi8fb2RpQBlLuhoaGdnd3HkFAikVRWVhKJRGdnZyKRWF1dXV1d7enpKRaLc3Jyenp6dHR0vLy83iqZg5Ua0CUikYiuL6D0ra2tLS0tleJR3S8gyOXy/Pz8uro6mUymo6Pj7u7OZDLVl1Ymk+Xm5tbV1REIBGdnZysrq4yMDBKJNGLECBwOV15e3tDQ4Onpiazwg1SQSCRQraqrq7u7u11cXNQ85Qva3traWrlcjm57wRG+pKQkCIJqa2ujo6PZbLaZmRno3SAISk9P7+3ttba2HjZsWH19fWNjI4VCQRvqA/a/MAz3l3DAdkl93qeWIXmen59fW1urUChMTEw8PDyUOqDB+hekV3V3dy8oKCgtLbWzs3Nzc1OtV6r7YgiCysvLMzMz5XJ5R0fHkydPtLS0vL29VZ+TRHoNKyurrKyspqYmFos1cuRIBoMhEomysrJ4PJ6mpqanp2f/iULVI6UB4fP5ZWVltra2hoaGWVlZ7zxywMCAYIz/Nvv374cg6Pfffx/wV6lU+sUXX5DJ5F9//RV5+M033xAIhJMnT8rlchiGBQJBeHi4gYEB0CgqlTp+/PiSkhIkfFxcnLe3N+gb8Hi8jY3NhQsXFAoF+HXr1q26urrXrl0bPXo0aLnIZPLEiRPLyspgGObxeKNHjwZNOYlEolAoa9asAe8qfVdDQ2Py5MmgQYdhuKamxtDQcNasWeD4E+Dq1askEunSpUsgZg8PjzFjxqxfvx6st+zbt2/I7Lp586a9vT2QE4fDOTg4REZGgp9iY2PJZPLBgwdhGO7r6wsMDBwxYsTx48eRoTmHJnOYRQAAV5BJREFUwzlw4IBMJpNIJGFhYWBgRyKRyGTy9OnT0XIORl9f34kTJxAjk0gk+vn5JSYmosPExcX5+PggpriFhcW5c+dAScEw3NLSsmHDBsSO0tDQmDdvXlVVFfL6jRs37OzskI7c1NR07969YrEYCfDrr78iXTiZTPby8nr27BlagLt376IH4vb29jdu3FAn/t9++41KpeLxeBwOR6FQ2Gx2UlLSkHkCw3BmZmZwcDCyyGZiYnLw4MG+vj4YhjMyMjgczrp169Dhjxw5QqfTHz9+DP+pJ0uWLDl06BAycW5kZHT06FGkRI4cOUKj0R4+fAj+rKmpmTdvHpVKBYHd3Nx+/vlnQ0PDFStWIJ+IjIwcMWIEMgTR19f/4osvOjs7FQrFkiVLSCQSDocjEAhkMjk4OLi1tRWG4a6urq1btyL6TCQS3dzcgHZlZWWZmJiATAMzwWfOnBkyW65evUqn0/fv3z9lyhQkc0JCQkDNApSUlEyfPh1Zb9TR0dm2bVt7ezv4lcfjubu7jx079ttvv9XX1wdhDAwMzp8/j9RfFYBa4OnpeenSJWTeQVtbe+3atW1tbSBMTEyMhobG1q1bQ0JCgEKmp6fDMFxfX79gwQJkqM1kMpctW9bU1IQUgVLtjo2NdXV1BYEpFArYpkUgEJ4+fYrIk5WVFRQUhGSFubn5sWPHpFIpDMMymWzOnDm2trbHjx9H5iA0NTW//PLL3t5eGIa/++47CoWCx+PxeDyZTLaysiosLBwyB5Sorq6eN28eMshjsVibN2/u7OxE8srOzo7P5yPhMzMzORzOhg0bYBiWy+UfXEIej+fm5hYYGAhkOHz4MIvFOn78uL+/P1BdPB4/e/bsuro6NRNYX1+/cOFCxBRhsVirVq1qaWnp/y1AbGwshUIBh5T6+vr8/f2HDRsGckB1vwBobGxcs2YNm81GmiN/f3+l9lAFra2tq1evRqS1sbG5dOmSm5tbUFAQ0IqtW7dqaGhkZmYq5VhQUFB3dzcMw3PmzDEzMwO7EoYEtL2ItBoaGp9++mllZSUMw+3t7T4+PkiPQKFQgoOD79y5o6urCwqCQqFQKJQ9e/bAMPzFF1+gpVLR/wKtRks4YLvU0dGhZo69Zy0DmbBy5UqkA2IwGIsWLeLxeMjrKvqXvr6+oKAgd3f3r7/+Ghj2mzZt4vP5Q+qVir4YhuGvvvoKaZApFIqDg8ObN29U50NNTY2RkdG8efPWrVuH6M/ChQsLCwsXLVqEPAkODkbrhkAg2LFjh6GhIVJSYWFh+fn5SOrQ+r9lyxYajZaRkQH/OW65ePEiDMPvNnLAwABgJt9/HWDy3b59e7AANTU1Tk5Otra2r1+/hmE4JyeHzWaPHTu2q6sLhmGJRPLVV19BEDRx4sSHDx+mpKTs3LmTSqX6+fmB8VlGRoa+vr65ufmZM2cyMjKuX7/u5eVFoVBu3boF4t+yZQuJRLKxsZk9e3ZUVFRCQsLGjRvJZHJQUFBzc7NUKi0oKNizZw8ej9+4cWNSUlJ5eTnyXRwON2vWrKdPnyYnJ+/YsUNTUzMoKAj0HzU1NTo6OjNmzEA3iJcvX4Yg6MKFC/CfJh+FQnFycvruu+8ePXqEmIuDkZuby+Fw7O3t7969++rVq7t375qamhobG4NmPSYmBofD7d+/H/6zm6HT6W5ubidOnEhJSbl06ZKFhQWFQomJiYFhuLi4+McffyQQCIsWLeJyucXFxUOOoRUKxbFjx8Co/f79+1lZWT/88IOenp6pqSnSbaSnpxsYGBgYGHz//ffp6ekREREeHh4kEgkYXWKxeMmSJRAELViwICoqisvlbtq0CY/HT506VSAQwDAcFRVFpVKtrKyuXr0KzhL4+vpCEITYbNeuXSORSCNHjrx582Z6evpPP/1kbGxsZmaWk5MDAkRGRjKZTBsbG1DcV65csbGx0dTUfP78+ZDxNzc3x8fHe3l56evr37t3LyUlBd2LD0ZJSYmdnR2Lxdq7d29qaurDhw+DgoIgCPrpp5+A+mlpaa1Zswb9ysGDB0kkEjDhgPFgbGxsb29/9OjR1NTUiIgIb29vCIIQs+rgwYNEIvH+/fswDPf29k6dOhWHw61cuTIuLi4uLm7lypUmJiZUKhX5Sk5ODpPJ1NXVPXfuXEFBQUxMzOTJkyEIOnnyJAzDlZWVFy5c0NbWnjBhQmJiYn5+vlQqlclkoB5NnTr12bNnBQUFp06d4nA4w4YNe/XqlUAgSE9PX7hwIYFAOHXqVHJy8pCDEhiGr1y5QiAQTE1NFy9eHBUVFRsbO2/ePDA0AfZwY2Ojl5cXnU7ftWtXWlpabGzs/PnzIQhau3atRCKB/6wjmpqaPj4+586dS0lJ+eGHH3R1dTkcDjDMVNPX1xcQEKCtrT1s2LBNmzYlJiY+ffoUbFpbt24dsPNjYmIoFAqTyRw/fvzly5ejo6Pb29s7OjomTZpEIpHWr1+flJSUmJi4evVqAoEwa9YsMNRWqt2ZmZmmpqYcDgeU4M2bNwMDAw0NDQkEQlRUFBDm5cuXdnZ2enp6R48eTUtLu3fv3pgxYyAIOn36NAzDcrl87ty5VCrVzs7uwIEDSUlJ169fd3V1xeFwV69ehWG4oaHh8ePHdnZ2dnZ2jx8/zszMBIaW+kil0sWLF5NIpPDw8MLCwry8vKVLl0IQdOjQIZBXfn5+NjY2zc3NyCtAe8GExceQkMfjOTs7+/n5gYp26NAhIpFoZma2YcOGZ8+eRUZGAr394osv1LHw29raJk+eTCKRVq9e/fz58xcvXixevBiCoFWrVvX19TU3N6O/BYiJicHj8cg0mdKQV0W/AMOwRCJZtGgRBEFLly5NTEzMzc09evQonU738PAAcyiqEYlEq1evhiDok08+efr0KYh/2LBhWlpagYGBwETZvHkzhUIBw250jvn7+wM9nDVrlpGREXp+U8XnEGmfPXuWkpLy1VdfUanUgICA1tZWsPCF7hHy8/NbWlpSU1MXLFgAan1SUlJNTY2SVCr6X5BLaAlVt0tD8kFq2fbt2/F4/OrVq3NycoqLizdv3gxB0MaNG0FFVt2/gF6VQqEMHz587969Dx48KC4uVtLhAfVKdV9cXV199+5dXV1dHx+f58+fZ2VlgeZRBcDkYzKZY8eOvXPnTlRU1NSpUyEIsrKymjBhwr179168eLF8+XIIglasWAHmW5GSmjZtWlRUVEZGxr59+7S0tFxdXV+9egWrNPnAuOWXX36B32nkgIGBgJl8/3UOHDgABprh4eFf/8lXX31169YtpCm5efMmgUAIDw8Xi8ULFixAL7+kp6ez2eywsDB0g7tz504dHZ3IyEiZTLZgwQJdXV30cs3r168tLCwCAgKAmfHFF1+AdhD8CcOwQqHYtm0bDocDthkMwxEREXg8Hgzike9yOJy5c+eiW+djx44RCASwiFdTU6Onpzdz5ky0yXflyhU8Hg9my8AKBpvNVlqkUsHZs2chCAKvA549e7Zjxw5gK8bExBAIhAMHDsB/zkcSiUS0Lf3bb78RCIQvv/wS/MnlcolE4o4dO9T8+uvXr42Njd3d3dFzordu3aJQKKtXr5bL5X19fQsWLNDU1ETWo2AYzs/Pt7KyWrBgAZCQRCItWLAAyTS5XL569WoDAwMwZ/zixYvt27ejR/MpKSkMBgMYMyDH3N3d6+vrkQBgyL5p0yYYhgUCwZgxYzgcDnqQFBMTY2xsvGXLFoVCER8fryJ+QFhYmKmpKTqNqtm6dSsEQVeuXEGevHr1ys3Nbfz48UKhMCsri8lkrl27Fv3KoUOHKBTKo0ePYBiuqakxNjYmkUg3b95EApSVldnY2Dg7OwPL6tChQ2Qy+cGDBzAM379/n0AgLF68GJm3lslkoHdHUpGVlfXVV1/FxsaiReJwONOnTwfdf0FBAYfDWbp0KRJALBafO3du//796EWevXv3IqYmDMPh4eFEIlHNlU8Yhq9evQpqlkgkAk/4fP6IESMsLS3B9M3Ro0chCAJz4QCRSDRjxgwajQa+AkpcS0srLi4OCQO8znz//fdDCgBqAQRB4eHhyMOurq7x48dra2unpKTAMBwbG4vH4/38/JClRRiGL1++jMPhtm7diqxOS6XSNWvWEAiEO3fuwKjaDRyfrl27FofD/fbbb0gMlZWVDg4OEAQhg9GtW7dSKBSwtAsABq2LiwuYnAL28I8//ogEiIuLo1AoixcvBi1hZ2enp6enp6enOjMR/Wlubra0tPTx8UGetLe379u3D+ywQAZ8SiYfk8n8/PPPYRiWy+UfXEIej+fi4uLv74+s8kEQtHLlSqTlr6mpMTMzc3V1VWch6OrVq3g8Hl1qAoFgxowZdnZ2lZWVbW1t6G8BYmJiiEQiYvSih7xD9gsCgeC77747duwYEgCG4bVr11IoFHXmIxITExkMxoQJE4DxBggPDweLM6B2o4fd6BwLCAgAb82ePdvY2Fgdky8qKopEIs2fPx9MpgD27NmDnloasEfoX+vRUqnuf2EY/vTTTxEJh2yXVPD+tay5ubm3t3fkyJF2dnaITd7b23vixIlz585JpdLm5mbV/YtEIgkKCqJQKKARQOIfUq+G7IubmpqMjY3Hjx+vOhMQkIlCMAENsgJMtlZUVIAn7e3t9vb2Tk5OoGVLS0vrX1JnzpyBIAgs3kokksFMPjBuASYf/PYjBwwMBMxj538dsGcmISHh4sWLF/7k4sWLCQkJSJhZs2bNnTv3woUL33zzzaNHjzZv3owcJU9MTGxvb1+xYgXan+G+ffuqq6vDwsKqq6uTk5MDAgLc3NyEQqFAIBAKhUZGRkFBQQUFBXV1ddCfl8/Mnz8f2V2Gw+EWL16MLA1BEAR8h6I9iHK53O7u7vnz5ysUCoFAIBAIRCJRWFiYpqYmcGCgzu52uVxua2vr5eWlZl7p6+vj8fhHjx4VFBRIpVIIgkJCQg4ePIicHEMDTsohGQVBkLOzM4vFAsYMBEHAOZj6rpbB2s7ixYuRLXYQBE2YMMHLyyshIQFc1sTlcv39/ceNG4cEcHV1LS4u/uWXXyAIevr0KYlEWrZsGbLrBo/HnzlzprKyEpwFDw4OPnLkiI+PDwRBYrEYbETU0NAADgDz8/PLyspmzpypp6cH8lwoFLq7u9vb24Phe0VFRXp6+pQpU8AqGSAsLKyysvLgwYM4HC4oKGiw+EE+gJEWkjlD0t7eDg6yox0eWFtbp6en//HHH1QqVZ3slcvlzs7OaOdAtra206dPr6ioKCwsVAr8/PlzEom0aNEiZHMUgUCYP38+hUJBvuXp6Xn06NGxY8dCENTX19fZ2dnX16elpQXSC6GKHv7TSw3Ysbxr1y6wubS3t7etrU1TUxOG4Z6eHhAG/a46gJoVEhKC7EHV1dV1cnIC/nglEklMTIylpeWcOXOQV6hU6tKlS2UyWUxMDJI5tra2I0aMQMJ4eXkRicTm5mY1ZWAymQsXLkSeaGlpLV68uKurKyUlBfrzUtCQkBBkr5dCoYiJiWEwGMuWLUP2JxOJxOXLl5NIpLi4OAhVu3E4XEdHR3x8vIuLC5hoB9jY2KD/7OjoiI6O9vb29vPzAw2RQCBgsVghISGvX78G3vDlcrmOjk5wcDDylqOjo56eXlNTE8hzxMgHdf9todFo+vr6lZWVN27c4PP5EASxWKzdu3cvWLBAzRg+toQwDBMIhLCwMCR7TUxM7O3t29raent7Vb+rUCiioqIYDMaKFSuQUqPT6bdv387Ozra0tHxbkYbsF+h0+rZt27788ks6nQ6qSWtrK5PJlMvl3d3dQ8afnJzc09OzePFi9EnFBQsWMJlM+CP4joqKiiIQCEuXLkXfjzd//nwjI6OnT58CJ40D9giD1XpQRqr7X2DIIc+HbJdU0N7e/p61rKqqikqlGhgY1NfX37x5s7GxEYIgsKl7zZo1RCIxJydHRf+CZI6RkVFgYKBamY7KQ3X64reqOOBI4bBhw8CfbDabxWKZmZkhxy4YDIaxsbFAIACFy+Vy29vbly1bhi6p2bNnDx8+PCoqChzBVZO3HTlgYCBg7lv+64CGIzw8fOLEiUj3oFAoOBwO0vETicSvv/46IyPju+++8/PzW79+PfJ6TU0NnU5HGj4AHo8H51Wam5u7u7tTUlJCQkLAWATEWV1dDXpoCIJgGAbnyNExgAkzcCh/wDtkwQn4HTt2gI2UEAThcDiJRNLV1fXmzRv1k08ikdTv4MeOHbtw4cJr165xuVxHR0dvb+/JkycHBQUNaF7CMEylUtGOPcBpgXceT7x+/ZpCoShlNYPBGDZsWGlpaVtbm0Ag6OzsHDZsmNLRc+DSRiqV1tbWcjgcpE8CEAgE9Any8vLy69evZ2dnt7e3SySSnp6elpYWkIr6+nqxWHzlypXHjx8DtcHhcDAMl5aWGhoawjDc0NAgEonQjk/QAqiI/50dvrW3tzc3N4eGhiodggdHX9SMRKFQWFpaKjlgsLW1lUgkYFwCAAPZ+vp6DodjbGyMDmxkZMRms9F9cG1tbURERFJSUltbW19fn0gkamhosLKyUi1GXFzcgwcPSktLBQKBVCoFh6De52g+DodDZz4EQaA24XC4rq6uxsZGMzMzJe87FhYWLBYLWEHg0+CAJRKAQCDg8Xg11VihUIBrANAPra2tqVRqQ0MD+AQOh0M7OxWJRNXV1cbGxkZGRui3zMzMDAwMqqqqlBwLt7e3t7S0BAcHK+mAtbU10E8Igtra2tra2vh8flhYGPSnnUkgEOrq6sDgEvqzIVKqsEQi8UMZAAwGY9u2bRs2bFi0aJGtrS04EjZ9+nQVnmCV+NgSQhAEzpeiv6hm/KDUjIyMkENlACKR+G5eENXpFyQSSVRU1P3796urq0GV4fF44DDwkPHX19dTqVQlzyJAVz/4YBq0vTo6Okoul3R1dU1NTRsbG9X0wNkf1f1v/2uW3qFdArx/Levp6SEQCJs3b87Pz9+wYcNPP/3k7OwcFBQ0bdo0kC0NDQ0q+heFQgH+fAeF/+B9MfSnfioUCsT9EmirkTiR/wBtrKmpodFow4cPR0fCYrFsbGwKCwu7urrQM7kYGB8JzOTDgCAIGtJzF41GI5PJCoWCRqOhB9NyuRw4DBjwLZlMJpfLtbS0LC0t0c2rjY0Ng8FAOjkw7EO/COJU0fVKpVIcDmdiYoL2WobD4ZycnNArEkr0Hwq8VaOvqan566+/Tps27eHDh0VFRefPn//+++9Xrlx57NixAR1LAitX/fhVI5fLwQhP6TmRSFSgGMx8gmEYxKDiDokHDx6sW7eup6fH2dnZzMyMzWbLZDIejwcKAswZ6+rqKg1cbG1tTUxMcDgcmH18h/jfOZfA/bkEAuGt7KL+gfs/AQNHJQ2EYRiMPJTSqPR6UlLS4sWLwSETcPqFTCaDDXuDiSQWi/fs2XP8+HFDQ0MnJydjY2MdHZ1Xr16B0ybqJ60/Sq+jp3UUCgWRSFRKCx6PJxAIKtYS31ae/kNwUF7ovFWKE5TpgIIpLVxAfw62+qs9+qNAT+h0upIJYWVlRaVSwYTFu6Xurfjkk08cHByuX7+elpbG5XJv3rx58uTJn3/+Gbiu6c9gc0kfT8L34YPURKVfB+sX8Hi8UCj87LPPrl27ZmlpaWtra25uzmKxCgsLwerxkIBIlOLv/8UPAmh7CQSCkpaClqS/SquP6v5XiXdolxDev5aBGZzAwMAXL15EREQkJCTk5ubev3//2LFjP/3004wZM1T3L+pPM0GDdPQfvOK8VYQDKgAEQUQiEexO/6CiYWAMDGbyYUDQULvFYBj+/vvvq6qqwsLCEhISLly4sHHjRvCToaGhQCCor69HHHkBpFIpHo9ns9k0Gs3X1/fSpUuDRY7D4cRiMXo5BYKgtra2lpYWR0dHdBOJbsfBHstvvvlm5MiRg8mMw+GAkYM8FAqF79nuk8nkmTNnzpw5s7u7u7i4+ODBgxcvXvT19QWeGN4B9UcYxsbGYrEYeD9HAE+0tLSYTCaZTGYwGDU1NTKZDG0Zgh6FRCLp6+t3dHTw+XyluW2pVAoG0+fPn+/p6bl06dL06dPBclBVVVVUVBTokHR0dMCexnXr1g0ooZ6eHolEqq6uVnoO+nKFQqE6/neAyWSy2ezq6mqxWIxsX4QgSKFQyOVyJBOUCl0gEKC/iMfjwQIm+qK86upqPB6PnnoHGqWnpwfyEH13RUtLS2dnJxh4KRSKS5cuNTY2/vDDD0uXLgWLbAKBIC4uTimZ6KIvKyu7fPmyl5fXhQsXnJ2dwcMrV64gGywHfOudgWGYwWBwOJympqbu7m70Ciefz+/s7ATjs/cfJOHx+JaWlvb2dvTNEPX19SKRCMxq9/8EsMHS09Pb2trQDvdbWlpaWlqU/MLDMKytrc1kMmtqapRKsLa2Flkj1dbW1tDQsLe3v3Xr1oBy9l8PGYz3zH97e3tw3PfVq1eRkZHh4eEHDx4cPXo08BkIJhSQwGKxGMxtvdUn/haP7WBMn5aW1t7ejp7/gmFYJpOBIkNmnZBfhULhYDk/ZL+Qk5Nz48aN8ePHnz171sLCAgQ4cuQIOPY2pMCGhoZgjQs9RQjiR3wqQv939zUEQTKZTCQSsVist8pkEolkYGDA5XKV2t7Ozs7m5mYrKys173gYMBUq+l/kT/B/NdulAfkgtQxgaWkZHh4eHh5eW1sbGxsbHh6+f//+wMBAfX191f2LRCIZ8Plb6ZUKPlLFAfozYEkJhcK6ujodHR0tLa23bWyxixkw3gHsLB8GBA11lWpUVNSFCxc++eSTS5cujRo16siRI3l5eeCnUaNGAfeb6E3wV65cGTt2bHJysrW1tbOzc1xcXHFxMTrCvLy8rKwspAWHYfj+/ftos/PRo0ft7e3+/v5IvwWadSTA6NGjCQTCb7/9hu6u2trakpOTwZ40Op2ura398uVL5NCRSCQCx8rfra2EYfjJkydnz55taWmBIEhLS2v06NHLly+HYbi2tvYdIuyfKNWMHj1aW1v7zp07IpEIeZiVlZWenu7p6amvr29qaurq6pqcnJyTk4MEaGxsnDlz5o4dO3A43JgxY3p6eu7du4eO9uTJk+PGjSspKVEoFHw+38TEBDhLBL/m5ua2trYC9XB1dTUyMrp9+3ZnZyfyulgsTktLKykpgSDI3t7ewcHhyZMnVVVVSICioqJJkyadOHEC7FQcMH6lWWql/lsFOjo6vr6+ubm54KY7QFtb29KlS9evX9/X16etrU2n04uLixGZeTwecNiDhMfj8UVFRejFAR6P9/TpUzMzM/QFdOAV4HbowYMHaDEePHggEolAKmQyWUtLi66u7sSJE5FNlXl5eY2NjehkgqEwkszOzk6BQDB69GjE3oNhOD09XUk9wNKcOjmjGoVCQafT/fz8ysvLwek4hLt370okkrc9LTMYOByura3t8ePHyBOZTHbnzh0ajQaOdPaHQCAEBQW1tLQoZfK9e/e6u7sDAgIglKEIw7COjo6Pj09BQQG41gzQ3NwcHR2N/An0JCUlJS0tDR1nSUlJRkaGQCBQU9+Q5Rp1AitRW1v7448/AiFxONywYcPWr19va2tbW1srEAjArY88Hq+8vBx55fHjx+rL9v4Svg9Iqd2/fx8tzO7duz/55JPa2loGg8FkMquqqpDWUiqVApdIgyVQRb8AQRBwdBkaGorYezKZDDhuUSfHwP2Hf/zxB7rnevz4cXt7O/I6m83u6+vLzc1FAjx//ry2tvZtt6ricLjg4OD+bW9sbGxVVVVAQMA7mHygCqjof5OSktCLrjAMq9MuDcb71zKRSNTc3HzmzBnkFXNz81WrVnl5eb1586a1tdXDw0N1/zIgVCr1bfVqQMDBkI93FTsoqdu3b6P1OT4+vri42N/f/21NvrcaOWBgIGAm338d0CwWFhY+f/489k9iYmKePXvW0dEBQRCfzz9w4ACLxdqyZYuxsfGOHTs6OjoOHz4MDiX7+flNnTr15s2bO3bsqK+vFwgEd+7c2b59e0NDg5GREZ1OX7NmTXNz85o1axITEwUCAZ/PP3r0aGho6A8//IDe7B4VFfXNN980Nzd3dXX9+uuvBw8edHR0nDJlCgigr69PJpMjIyMTExNfv36tUCj8/f0nT5584cKF3bt319fXC4XCzMzM+fPnT5s2LT8/H4IgNps9evToysrKDRs2REdHP3nyZNmyZXl5ee989AWHw2VmZq5bt27v3r18Pl8oFJaUlFy8eBFcZPwOEerq6mpoaMTGxj579qysrGzIobyjo+PChQtjY2O3bdtWU1MjFAq5XO6GDRuAM0MymUyn09euXdvV1bVu3bqEhASBQFBWVvbFF188evQILNqMHz8+MDDw559/PnLkCMjqy5cv79mzp6ury8jIiEwmOzs7v379+sqVKz09PUKh8MmTJ3v27JFIJOCIgpWVFfCH/vnnnxcXFwuFwtevX2/atCksLOzhw4cQBLFYrDVr1tTW1q5evTo9PV0gEOTn52/dujUmJsbMzExDQ8PJyWnA+NFeOoyMjJqamn7//fe8vLy2tjbVeUIgEJYvX66pqbl+/fpHjx4JBILa2tqdO3f+9ttvLBaLQqGYmJi4u7unpKRs2bLl+fPn9+7dW7lyZVVVFXpzMkhdeHh4TEwMyLTNmzfn5uYuXLgQGU0ijB8/3svL6+zZsydPngRnV44fPx4REYGMFUgkkpOTU2Nj4+XLlzs6OoRC4YsXL8DlaUgyWSwWk8lMTU0FJ/ekUqm5ubmRkdGTJ0+SkpKEQmFra+vBgweBo1pk4AIOtERERGRmZr7VgdX+gCqwZMkSIyOj7du33717t7e3t6Wl5fDhwxcuXBg3bhxwrf5BIJFIp0+f/vXXX7u7u5uamvbs2XP79u3x48ePGjVqsFdmzpzp5ua2f/9+8FZnZ+fp06e/++67UaNGAbfy6IQArxhkMnnLli3R0dFICb569QqtVytWrCASiatXr46MjBQIBB0dHadPnw4NDd27d29fX586o146na6np1dWVnbz5s3CwkLgVkcikfT29qrjU0ckEu3Zs2fRokVpaWlCobCjo+P8+fNlZWUuLi7a2to4HM7f318gEHzxxRe3b9+Oj4/funXrnTt31D+SOpiEfxkzZsxwc3M7cODA6dOnOzo6QNU4duyYXC7X1dWl0+mjR4/m8Xhbtmx59OhRXFwc6BRUWKeq+wUbGxsmkxkREVFQUCAUChsaGnbs2AFcNaojrZ+fX1hYWERExN69e3k8Xnd39/nz58+cOYM+Ou7t7U2n0w8dOnT27Nnk5OSjR48ePXoUxP+2nciECRMCAwNPnz79/ffft7a29vT03Lx5c9euXdbW1uBmlHdDRf9rYmKCyAnsnyHbJRUQicT3rGUSiUQul588eXL+/PlPnjwRCoW9vb1Xr15NSUmxtbUFBx1V9y8DAuZe30qv+gOOmeTl5d26dauoqEgoFKr/rpr4+flNmzbtxo0bu3fv5vF4QqHw8ePHmzdv1tXVBTcnqa9RbztywMD4f8AY/22++eabARUDh8M9e/ZMLpcDZ9mIJ3eFQrFhwwYIgn766SewYa+2tnb69OngPDSYPrS2to6OjkY+8fPPP4Mz/RoaGmAEM3bs2OLiYvDrli1bGAzG/v37LS0tiUQi2J5na2ubkJCAxNDT07Nu3Tow9g0JCQEOssF3wf544HWNyWQeOnQIuTe8sLAQve1z/PjxwCn2uXPnYBhuamqysbHx9PRU/yLa5ubmWbNm4fF4KpUKnF5oaGjs3LkT7Bd9+vQp9KfD5b6+Pk9PT2NjY/RlA3l5eZqamrNmzQKbhWQy2c6dO4GzBCcnJ/R154PB5/NXrVpFIpGQJBsZGaEvjYBh+PTp02DLHNh+Q6FQtmzZgjgiLy4uDg0NhSCIRCKBrPbw8EhNTQW/FhQUAP+lWlpaYCfP/PnzmUwmctCit7d3y5YtYE6awWCAS59XrlyJeJbv6+s7dOgQcEoGBGAwGN9++y3wJThk/DAMp6SkIA5g0FcvqODWrVvAJw2NRgP6sGjRIsQPOBhSgAgJBMLChQvBxqF79+7BMFxTU2NgYDB58uRVq1aRyWQajQY0eeXKlYg37b1790IQ9Mcff4A/MzIyQCrIZDLYsrVv3z49Pb2FCxeCADU1NcCtooaGBovFotPp8+fPNzAwGDlyJMgHhULx448/gmy0tLQEnr6vXLkCdsRxOBwqlWpvbz979mwIgsClIzAM19bWIr5YEffiKrhw4QL0541YCAsXLqRSqVlZWeDP6OhoR0dHCII0NTWBPkyePBnxPD5gHQELqps3bx5SAHAvn62t7e7du7W1tSkUChhPh4SEgBuo4f9ba9BkZGR4enoCLQKtyujRo/Py8sCv1dXVGhoaEydOBFewKBSKc+fOgb2jIHBgYOD27dshCEL7i4+IiADHhOh0Okisp6cnWBeSy+VTpkxhMplFRUVI+MbGRn19fV9fX8SxflRUFJg9oVAo4MrvZcuWGRoaov34q+DSpUugbrLZbFD6YI0a/Nrc3Iz2nurs7Hzs2DEqlbpy5cp3kxDdhA6IUvkq6TkMw1KpNCQkhMlkqnkbO9hxAKH8J/n7+yO3UdfW1qJPLfr5+R05cgSCoL1798KoNhM0JkP2C+CeUk1NTRwOx+FwKBSKm5vbjBkzINSdAaopKysDl4iQyWQKhaKtrb1nzx4bGxvkXj6xWLxr1y7ECNTX1z98+PDw4cO9vb3BtbT9S0QFxcXFwK8JlUoFpe/q6vrixQskAFhv37p1K/qtLVu2QBCEvkkINF9paWlIrg7W/yrpzJDtkmrev5bBMPzw4UPQVrNYLNCFOTg4cLlc8Kvq/mXAXhVWW69U9MUwDF+7dg0kjcFgIM3jYCi1PzAM8/l8MzMzFxcXMBiAYVgikfj6+urr6zc2NoIndXV1M2fOBIkCabeyskJuVFLSf3QpK7Xk7zBywMAA/D//Qhj/TcrKyoD1pfScQCD4+/tzOJwXL1709PSMGTMGcS7M5/OTkpIMDAxGjRoFZvh6enq4XG5WVpZQKBw2bFhwcLDSabGSkpLExMSamhoGg+Hs7BwYGIic99i6dev58+cTEhJoNFpkZGRbW9vw4cNDQ0OVjoD39vbGx8dXVFRYWFhMnToVdMO9vb1JSUnZ2dk9PT1mZmajRo1S8t1SX1+fkJDA4/HMzc1DQkJEIlFGRsaIESMsLCzEYnFSUhKJRPL19R3QKeiAdHV1cbnc3NxcsDLm4+MDtphCENTc3JycnOzo6GhnZ6dQKLhcrlgsDg4ORubpu7q6kpKS9PT0kDsMxGJxcnJyYWEhh8MBF20PKYBEIuFyuRkZGZ2dnRYWFsHBweBmJDRFRUUJCQm1tbVsNtvHxycgIACdQOBuG9wAbmdnFxoaCuaDAXV1ddHR0S9fvgT32nt4eIArEL29vYHJLZfLMzIyUlJSmpub9fX1R4wY4evrq7QWAQK8efNGT08vICDAx8cHmQkeMn4IgiorK4Hz8alTpw54AUZ/ysvLExMTKysrwb3hAQEB6AMnlZWVycnJbW1tNjY2oaGhPB6vsLBw1KhRhoaGtbW13t7eAQEBFy9efPbsWWZmJpVKHTVqVGBgIHI4sKys7OXLlyNHjkR8SL558yYuLq60tJTBYISGhjo5OXG5XJAbIACPx4uLi8vPzycSiX5+fv7+/llZWWQyOSAgAMnGlJSUvLw8Op0+e/ZscGgtIyMjPj7+zZs35ubmkydPptFoOTk5I0aMMDc3R6KNj4+vr68fPXo02uf4gNTW1mZnZ3t4eKCrUk5Ozps3bwICApBjcnV1dS9evCgrKyOTye7u7uiaPmAdaWtrS0xMHDZs2JCL2xKJJDQ0lM/ng5r74sULiUQCPoG4CUXXGqXXeTxeQkJCYWEhDodzdXUNCgpCnFsKhcLnz5/r6OiMHDkSUZvc3NyEhITGxkYLCwswCE5PT/f19UX7kKyoqEhKSqqoqKBQKC4uLn5+fuBXGIYzMjLa2trAJisk+fHx8Zqamr6+vogCFxQUgGW6+fPnk8nkMWPG9PX1xcXFoSuRCgoKChITE+vq6mg0mqOjY1BQEFq8zs7O+Pj4qqoqNpsdFBTE4XASEhJMTU3d3d3fQcI5c+YouZZVQql8++s5DMOpqamdnZ1jxoxRcv06GE1NTQkJCUVFRRAEubq6BgcHo12SNjc3JyQk1NXVGRoahoSEkMnkhISEAdtMdfoFuVyempoaHx/f2to6bNiwiRMnKhSKwsJCPz8/Nf0ftrS0PH/+vKCggEwmh4SEWFtbBwUFGRkZPX/+HKzmgfa2uLiYTCaPGjXK0dER3Irm5+dHJBLBiVN0iaimo6PjxYsXBQUFEonE3t4+JCQErTYtLS1cLtfW1ha9n7yoqKiioiIgIAA5V1xQUFBVVRUYGMhms8GTwfrf/jozZLs0JO9TywClpaVJSUmVlZUEAsHR0TEgIABp3yCV/cuAvSpAfb0C4fv3xTAMZ2dng7mbuXPnqnag2r/96evrS0hIIJFIgf9fe/ceZGV92H/8nN2FxaBAuN8UiBQMAgFUYhREoyWXOtJmoqnWTNImhrTTjJfaTjTR6BBIojGZZjoRE6eNTeslHaoxUcBUuUmEcBGQCmaRLKi4CKLons2yt/P740y3+/OWVUkxH1+v//Y53+dyzll29815nu8za1bnHJ6rV69ubGw866yzOn+VNDY2Vt6pUqk0fvz4WbNmdf6l9Irj7Pouv/on+Vv4ywEKhYLk4wi74oorFi5cuGLFiu7fHw8Ol0ryzZgxY9GiRUf6WNJUkq+hoWH16tVvbQ76d7gNGzZ85CMfOe+88374wx/6q+vwOiK/F/bu3XvaaaeNHDmyM/kAYriWj3cE//XAkeVq+N+f1H/dO3fubGxsPOOMM/Te78n/8XdO6jcqQEHyccS1tbVVTkY/0gfCu1G5XD506FDX+e44jFpaWiqXmR3pA/m92LBhQ21t7RvMQ8NbdkR+L1R+GrzezQAA/qA5sZMjbOvWrb/5zW9mzJjxmnczh9+rpqamFStWDBgw4JRTTnGno8Oro6Pjl7/8ZXNz88yZM9/UzJN/KDZu3HjgwIFZs2Z1/2JguumI/F6oXNxYuZesnwZAGMkHAAAQy4mdAAAAsSQfAABALMkHAAAQS/IBAADEknwAAACxJB8AAEAsyQcAABBL8gEAAMSSfAAAALEkHwAAQCzJBwAAEEvy8bZ0dHRs27atrq6uXC4f9o23t7dv2bKlvr7+jYf9PnZ9uLypY3snPxEAAP5AST7elk2bNp177rl/9md/VldXd9g3vnLlynPOOefCCy/ct2/f6435+c9//rGPfWz9+vWHfe+vqb29vb29vZuDN27c+Cd/8id33HFHdwYfOHDgi1/84pVXXtnU1PQ2DhAAAP4/ko+3pVevXoMHDx48eHDPnj0P+8bf8573DBkyZNCgQdXV1a83ZufOnUuXLm1oaDjse3+1/fv3f/rTn77mmmva2tq6M37v3r2LFy/+9a9/3Z3Bzc3NDz744KpVq1pbW9/eYQIAwP+qOdIHwB+2CRMmLF68uKqqqk+fPod94x/84AeXL1/eq1ev3r17v96YmpqaQqHwBk14eD300EOTJ0+u7PR3qq6urq6u7ubgYrHYq1ev2traqir/EQMAwGEj+SgUCoWtW7fu2LGjpaWlf//+kydPHjx4cGV5c3Pz2rVrBw0aNG7cuA0bNuzevbtHjx4TJ04cO3ZsZUBLS0tdXV1NTc3kyZOrq6u3bNny8ssvn3zyyU8++eS2bdtqamo+8IEPjB49ulAoPPbYY3V1dcVicdy4cSeeeGJ3jqq5ufmJJ57o06fPiSeeWCwWKwsbGho2b9588ODBAQMGfOhDH3oLsbdnz57Kcfbt23fy5MlDhw7t+mhbW9umTZt27drV0dExcuTIadOm1dbWFgqFJ5544le/+lV7e/sLL7xw33339enTZ/r06ZWH3pTt27fv2LGjVCr17dt30qRJI0aM6PposVgsFouV16pQKLzvfe+bMmXKqzfy3//933V1da2trUOGDJk2bdrRRx9dWd7R0bFhw4aOjo6pU6du3rx527ZtJ5xwwpQpUzZs2FBTUzN16tTO/nz++ecfffTR448/fsyYMZ1rTZs2rfKdcNRRR5100knDhg0rl8uPPvrozp07a2pqJk2adPzxx7/Z5wsAwBFW5t3t4MGDV1xxRWf21NTUTJky5ec//3nl0fr6+uHDh1900UVXXnnlgAEDKmPGjBlz1113VQY0NDRMmTJl1qxZL730Urlc/tSnPjV+/Ph58+ZVMq9QKEycOHHFihX/9E//1Nk2I0aMuOOOO7pzbPX19cOGDfvkJz/Z1tZWWfLAAw984AMfqGyntra2cppldXX1/fff383nu2jRogkTJlQCsrq6etKkST/5yU86H923b9/nP//59773vZVdHHPMMZ/+9Kf37t1bLpf/4R/+oUePHsVisbq6ura2dsKECc8888wb72vp0qXV1dVf//rXK182NTXNnz9/5MiRlY0Xi8UJEyb867/+a+XRPXv2TJw4cebMmd/85jeHDRtWGTNgwICrr7765Zdf7txmqVS6+uqrOwf06tVr9uzZmzZtqjx66NChM888c+rUqV/+8pf79etXKBQuvfTS5557rvIevfjii53beeCBB2pra7/xjW9U1po1a9a0adPmzZvX+Z0wc+bMdevWXXfddUOGDKksGT9+/JIlS7r5OgMA8A7hFLJ3tfb29vnz53/nO9+ZPn36f/3Xf23evPm73/3uU089dfnll3dOx1Iul5csWbJu3bqbbrrp4YcfXrBgwb59+6688sqdO3d2bqRzRpNisVhfX3/HHXdceumlK1as+PKXv7xjx46LLrro1ltvveqqq1avXn3jjTc2NjZed911v/nNb7pzhK2trZ0bX7du3ec+97mnn376W9/61i9/+csf/ehHu3fvvvXWWyv77c7W7rvvvr/6q7+qqqq69dZb165d+4Mf/KClpeWSSy5ZtmxZ5Yl8+9vf/ud//ufzzz9/w4YNW7du/dznPvfjH/94/vz57e3tf/3Xf33nnXcOHDjw5JNPvv/++2+77baBAwe+mRe7cPPNN3/lK18ZO3bsvffeu2XLlttuu61UKl166aWbN2+uDKipqdmyZcsPf/jDuXPnPvzww4sWLZo6deqCBQtuuOGGjo6Oyqtx/fXXL1iwYPr06YsXL167du3VV1+9Zs2az3zmM08++WRlI+Vy+fHHH//P//zPyy677J577rnkkks6OjpePetMuVxubW2tbLZi+/btP/3pT6+//vrly5f/7d/+7erVq88///z7779/wYIFq1atuu6663bt2nXttde++OKLb+pZAwBwhB3h5OSIam5uXrhw4bx585577rnOhdddd11NTc3dd99d/p9P+YYMGbJly5bOAX//939fKBRuv/32crnc0NAwefLkmTNnVj7lu/DCC6uqqm655ZbKyLa2tk9+8pOFQqFzSblc/tKXvtSzZ8/Fixf/zsOrr68fPHjwJz7xifb29o6Oji9+8YvFYvHHP/5x54C6uroJEyYUCoXubK1UKp199tmjRo3avn1758I1a9YMGjToU5/6VGtr68GDB0899dQTTjhh//79lUcbGxtvuummhQsXHjp0qFwuP/vssyNGjPjoRz/6O/dV8YpP+f7t3/7tq1/96q5duzoH3HLLLZ0vzp49e6ZMmVIsFr/3ve91DmhoaJg6derQoUMrt8F45JFH+vfvP3v27K6f133/+98vFArXXnttuVxuaWk588wza2tr/+M//qPrRirvUde1li5dWlNTs2DBgvL/fDZYW1v7s5/9rPJoU1PTjBkzqqqq7r333s5VLrjggt69ez/66KPdfPoAALwT+JTvXa22tnbu3Llf/epXBw0aVCgUGhsbn3/++aOPPrpcLr/88suVMe3t7dOmTet69d3JJ59cXV397LPPvnqD7e3tAwcOPP300ytfVldXDx8+vHfv3l1XHz16dLlcbmxs7P5xFovFF154YdmyZZMnTz7vvPM6l48dO7brl2/siSeeWLt27XnnnTd69OhSqVQqlZqamsaPH3/SSSdt3LixoaGhV69eQ4cOfeqpp+644449e/YUCoXevXtfccUVc+fOrcxHWpmos1wuv7VJNf/iL/5i3rx5xx13XKFQKJVKBw4c6NWrV48ePTo/N2traxs7duycOXM6VxkyZMjFF1/c0NDwyCOPFAqFlStXHjhw4C//8i/79u3bOeb8888fN27c4sWLS6VSoVDo6OgYPnz4rFmz3tSxVdaaPn165ctevXoNHz68X79+laKuGDNmTGtra2UvAAD8oTB9y7tdR0fHL37xi3vuuWfbtm2lUqm1tXXfvn3lcrnzVMlyuXzUUUeVu9wlvKqqqqqqqvxa9w0vl8uVC966br9YLHYd/JorvrFisXjgwIF9+/adddZZnVOVVBx//PGv2P7refrpp5ubm3/605+uWbOmMr6y4hNPPNGzZ88XXnhh5MiRl1122aZNm770pS9973vfmzRp0plnnjlnzpxKpB0Wq1evvuuuux5//PGXXnqptbX1wIEDbW1tnVN0lsvlESNGdF5J2PkEe/TosWvXrkKhUF9ff9RRR40bN67rgPe+971jx47dsmXLwYMHhwwZUi6Xa2pq3uyLXFmr65eV74G3+cYBAHDESb53tebm5muvvfbb3/72sGHDJk6cOGLEiIEDB+7YsWPp0qXvtL/vOzo6yuXyq+fn7OZVfIVCoTIHTP/+/ceMGdN1+R/90R8NHjy4MtnJrFmzHnrooTvvvHP58uUbN268++67b7jhhn/8x3/8xCc+8faP/4Ybbrj++uuPOeaYypSn/fv337t3b2UOmK5P5xXPqKqqqlgsVq7Ea29vr9z44RUbr6mpqZz72v3j6f7rBgDAHzTJ9662ffv2f/mXfznllFNuvfXWSZMmVRb+6Ec/Wrp06ZE9sFcol8t9+/bt169ffX19c3Pze97zns6HKpfGdSdgBg8eXF1dfe65586bN+8Nho0ZM+aqq6666qqrdu3a9cADD1x11VVf//rXTzvttM6pLN9aLO3du/fmm28+9thj//3f//2UU06pLFyyZEnlYrnOLe/du/ell17q+knm7t27W1pahg8fXigUhg0bViqVnnrqqc5pSwuFQlNT0+7duwcOHNinT5/XC/Vyudze3t71yJuaml4xoQsAAJFcy/eu9uKLL5ZKpdNOO62z98rl8po1a95pMVAulwcOHPjBD35w8+bNq1at6ly+d+/eJUuWdHMj73//+8ePH79o0aKuVyG2trauX79+06ZNHR0dDQ0N3//+9zs3OGrUqEsuueSUU0555plnnn/++crCYrHY0tLSzburd/XSSy8dPHhw2rRpnb1XKBQeeeSRlpaWzhM7a2pq6urqKtOHVpRKpUWLFlXuAVgoFD70oQ/V1tb+5Cc/qVxVWLFs2bKtW7fOnDnz9ZKvV69e/fr127lzZ+Xs0Mqzvueee7qZyq9n//79r3k9JwAA7yiS713tuOOOGz58+H333bdq1aqmpqb9+/fPnz//zjvvrJxMeKSP7n9VTun87Gc/27Nnz8svv3zJkiWlUmn79u2XXXbZjh07OpPpjfXv33/u3Lnbtm37whe+sHbt2lKp9Mwzz3zlK18555xzbrvttkKh0NbW9t3vfveiiy667777mpqaGhsbb7vtttWrV48fP75yH7xjjjlm0KBBjz766F133fXYY481NTV1/ykMGTLk+OOPX7Zs2eLFi5uaml544YWFCxfefPPNXV/nYrFYU1PzzW9+8+67725sbHzyySf/7u/+btmyZRdccEFlGpUZM2bMmTPn9ttvv+aaaxoaGpqamn72s59ddtllgwYN+sxnPlN4ncvt+vTpc9pppzU0NFx++eX33nvvL37xi7lz565YseIt3MW+U319/cUXXzxnzpz169e/5Y0AAPB/QPK9q73vfe+75ppr9u/ff8YZZxx33HHHHnvs7bffPnv27I6OjsqklOVyuVQqNTc3d12rra2ttbW1c0BTU9Nvf/vbSmw0NzeXSqWuF5UdOnSoVCp1/diwsm7Xz6lezyv2Pnv27BtvvPG555772Mc+NmjQoPe///3PPvvsF77whY6Oju5srVAofP7zn58/f/7DDz986qmnDh06dPTo0d/5znc+/OEPX3HFFVVVVSNHjrzpppuOPvroc889d+TIkcOHD//sZz977LHHzp8/v3///oVCoW/fvpdffnlVVdWFF154+umnP/7442+8u8rd8FpaWgqFQr9+/b72ta/V1NR8/OMfHzly5LHHHvuNb3xj9uzZ5XL50KFDlSd78ODBk0466eMf//jFF188aNCgcePG3XLLLRdccMHXvva1Hj16FAqF3r1733jjjXPmzLnhhhtGjRo1dOjQ8847r1gsLly4sHOyzd/+9rdNTU2vuD7wb/7mb84+++wHH3xwzpw5s2fPrqurmzt3bnt7e2XXr7nWq9/KlpaWlpaWylt54MCBNWvWrFu3rqGhoTuvPAAAR0q3pjok29q1a5ctW/bMM8+MGjXq3HPPPeqoozZs2HDSSSeNGjWqqanpwQcfHDhw4Kmnntr5edTTTz/9q1/9auLEiePGjWtubl61alWPHj1mzJhRU1OzZs2a559/vnKSYWXwpk2b6uvrZ8yY0Xnj8l//+tdbt26dPn36yJEj3/jAXnPvGzduXL58+Z49e0aPHv2nf/qnxWJxzZo1p59+eue1dr/T+vXrV69e/fTTT/fr1+/kk08+/fTTu147t23btlWrVtXV1VVXV5944olnnHHGqFGjOh8tl8vr169fu3ZtuVz+8z//88rNLV7P3r17H3744RNPPPGEE06oLHnssceWLl26e/fuoUOHfvSjHx0+fPgjjzwyYcKE8ePHNzc3r1y58uijj54yZcpDDz20Zs2aYrE4bdq0c84555hjjum62cbGxpUrV65bt65UKo0fP37WrFljx46tPNTR0bFy5crm5uazzjqrtrb2FQezfPny3bt3Dxs27Oyzz+7Zs+fy5csrx/bqtcrl8tq1a5977rkPf/jDnS/OY489VldXN2vWrAEDBrS0tCxfvrypqemP//iPe/fu3c1XHgCA/3uSDwAAIJYTOwEAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACCW5AMAAIgl+QAAAGJJPgAAgFiSDwAAIJbkAwAAiCX5AAAAYkk+AACAWJIPAAAgluQDAACIJfkAAABiST4AAIBYkg8AACDW/wO0LlQBhc2/4QAAAABJRU5ErkJggg=="},"page_no":1}}},"html_content":null,"text_content":null,"doctags_content":null},"status":"success","errors":[],"processing_time":1.1233026950003477,"timings":{}} \ No newline at end of file diff --git a/docs/hybrid/research/docling-sample-response.json b/docs/hybrid/research/docling-sample-response.json new file mode 100644 index 0000000..0317f51 --- /dev/null +++ b/docs/hybrid/research/docling-sample-response.json @@ -0,0 +1 @@ +{"document":{"filename":"01030000000045.pdf","md_content":"election integrity. The registration of local election observers runs until 25 May, and the NEC is still reviewing the application of nearly 5,000 observers.\n\nTable: The number of accredited observers as of 28 April 2022 15\n\n| No. | Name of organization | Number of accredited observers |\n|-------|---------------------------------------------------|----------------------------------|\n| 1 | Union of Youth Federations of Cambodia (UYFC) | 17,266 |\n| 2 | Cambodian Women for Peace and Development | 9,835 |\n| 3 | Association of Democratic Students of Cambodia | 711 |\n| 4 | Association of Intellectual and Youth Volunteer | 46 |\n| 5 | Our Friends Association | 27 |\n| 6 | COMFREL | 26 |\n| 7 | Traditional and Modern Mental Health Organization | 15 |\n| | Total | 27,926 |\n\n15 https://www.nec.gov.kh/khmer/content/5524","json_content":{"schema_name":"DoclingDocument","version":"1.8.0","name":"01030000000045","origin":{"mimetype":"application/pdf","binary_hash":3164034737534307179,"filename":"01030000000045.pdf","uri":null},"furniture":{"self_ref":"#/furniture","parent":null,"children":[],"content_layer":"furniture","meta":null,"name":"_root_","label":"unspecified"},"body":{"self_ref":"#/body","parent":null,"children":[{"$ref":"#/texts/0"},{"$ref":"#/texts/1"},{"$ref":"#/tables/0"},{"$ref":"#/texts/4"}],"content_layer":"body","meta":null,"name":"_root_","label":"unspecified"},"groups":[],"texts":[{"self_ref":"#/texts/0","parent":{"$ref":"#/body"},"children":[],"content_layer":"furniture","meta":null,"label":"page_header","prov":[{"page_no":1,"bbox":{"l":281.571,"t":559.1790009765625,"r":372.715,"b":551.6610009765625,"coord_origin":"BOTTOMLEFT"},"charspan":[0,24]}],"orig":"Civil Society Engagement","text":"Civil Society Engagement","formatting":null,"hyperlink":null},{"self_ref":"#/texts/1","parent":{"$ref":"#/body"},"children":[],"content_layer":"body","meta":null,"label":"text","prov":[{"page_no":1,"bbox":{"l":54.0,"t":537.0420009765626,"r":375.137,"b":499.90200097656253,"coord_origin":"BOTTOMLEFT"},"charspan":[0,157]}],"orig":"election integrity. The registration of local election observers runs until 25 May, and the NEC is still reviewing the application of nearly 5,000 observers.","text":"election integrity. The registration of local election observers runs until 25 May, and the NEC is still reviewing the application of nearly 5,000 observers.","formatting":null,"hyperlink":null},{"self_ref":"#/texts/2","parent":{"$ref":"#/tables/0"},"children":[],"content_layer":"body","meta":null,"label":"caption","prov":[{"page_no":1,"bbox":{"l":54.0,"t":478.78800097656256,"r":353.533,"b":454.90800097656256,"coord_origin":"BOTTOMLEFT"},"charspan":[0,64]}],"orig":"Table: The number of accredited observers as of 28 April 2022 15","text":"Table: The number of accredited observers as of 28 April 2022 15","formatting":null,"hyperlink":null},{"self_ref":"#/texts/3","parent":{"$ref":"#/tables/0"},"children":[],"content_layer":"body","meta":null,"label":"footnote","prov":[{"page_no":1,"bbox":{"l":54.0,"t":58.296000976562595,"r":185.287,"b":52.65800097656256,"coord_origin":"BOTTOMLEFT"},"charspan":[0,44]}],"orig":"15 https://www.nec.gov.kh/khmer/content/5524","text":"15 https://www.nec.gov.kh/khmer/content/5524","formatting":null,"hyperlink":null},{"self_ref":"#/texts/4","parent":{"$ref":"#/body"},"children":[],"content_layer":"furniture","meta":null,"label":"page_footer","prov":[{"page_no":1,"bbox":{"l":363.829,"t":41.7280009765625,"r":372.725,"b":34.21000097656258,"coord_origin":"BOTTOMLEFT"},"charspan":[0,2]}],"orig":"17","text":"17","formatting":null,"hyperlink":null}],"pictures":[],"tables":[{"self_ref":"#/tables/0","parent":{"$ref":"#/body"},"children":[{"$ref":"#/texts/2"},{"$ref":"#/texts/3"}],"content_layer":"body","meta":null,"label":"table","prov":[{"page_no":1,"bbox":{"l":53.21648406982422,"t":439.9832458496094,"r":373.9375305175781,"b":234.74441528320312,"coord_origin":"BOTTOMLEFT"},"charspan":[0,0]}],"captions":[{"$ref":"#/texts/2"}],"references":[],"footnotes":[{"$ref":"#/texts/3"}],"image":null,"data":{"table_cells":[{"bbox":{"l":61.757,"t":159.67199999999997,"r":75.761,"b":168.12999999999994,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":0,"end_row_offset_idx":1,"start_col_offset_idx":0,"end_col_offset_idx":1,"text":"No.","column_header":true,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":87.52,"t":159.67199999999997,"r":173.056,"b":168.12999999999994,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":0,"end_row_offset_idx":1,"start_col_offset_idx":1,"end_col_offset_idx":2,"text":"Name of organization","column_header":true,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":280.08,"t":159.67199999999997,"r":366.111,"b":178.92999999999995,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":0,"end_row_offset_idx":1,"start_col_offset_idx":2,"end_col_offset_idx":3,"text":"Number of accredited observers","column_header":true,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":66.257,"t":186.02399999999994,"r":71.261,"b":194.48199999999997,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":1,"end_row_offset_idx":2,"start_col_offset_idx":0,"end_col_offset_idx":1,"text":"1","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":87.52,"t":186.02399999999994,"r":249.615,"b":205.28199999999993,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":1,"end_row_offset_idx":2,"start_col_offset_idx":1,"end_col_offset_idx":2,"text":"Union of Youth Federations of Cambodia (UYFC)","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":309.336,"t":186.02399999999994,"r":336.858,"b":194.48199999999997,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":1,"end_row_offset_idx":2,"start_col_offset_idx":2,"end_col_offset_idx":3,"text":"17,266","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":66.257,"t":212.37699999999995,"r":71.261,"b":220.83399999999995,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":2,"end_row_offset_idx":3,"start_col_offset_idx":0,"end_col_offset_idx":1,"text":"2","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":87.52,"t":212.37699999999995,"r":225.426,"b":231.63399999999996,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":2,"end_row_offset_idx":3,"start_col_offset_idx":1,"end_col_offset_idx":2,"text":"Cambodian Women for Peace and Development","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":311.839,"t":212.37699999999995,"r":334.357,"b":220.83399999999995,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":2,"end_row_offset_idx":3,"start_col_offset_idx":2,"end_col_offset_idx":3,"text":"9,835","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":66.257,"t":238.72899999999993,"r":71.261,"b":247.18699999999995,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":3,"end_row_offset_idx":4,"start_col_offset_idx":0,"end_col_offset_idx":1,"text":"3","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":87.52,"t":238.72899999999993,"r":239.584,"b":257.98699999999997,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":3,"end_row_offset_idx":4,"start_col_offset_idx":1,"end_col_offset_idx":2,"text":"Association of Democratic Students of Cambodia","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":315.926,"t":238.72899999999993,"r":330.274,"b":247.18699999999995,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":3,"end_row_offset_idx":4,"start_col_offset_idx":2,"end_col_offset_idx":3,"text":"711","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":66.257,"t":265.08099999999996,"r":71.261,"b":273.53899999999993,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":4,"end_row_offset_idx":5,"start_col_offset_idx":0,"end_col_offset_idx":1,"text":"4","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":87.52,"t":265.08099999999996,"r":231.623,"b":284.33899999999994,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":4,"end_row_offset_idx":5,"start_col_offset_idx":1,"end_col_offset_idx":2,"text":"Association of Intellectual and Youth Volunteer","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":318.095,"t":265.08099999999996,"r":328.103,"b":273.53899999999993,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":4,"end_row_offset_idx":5,"start_col_offset_idx":2,"end_col_offset_idx":3,"text":"46","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":66.257,"t":291.43299999999994,"r":71.261,"b":299.89099999999996,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":5,"end_row_offset_idx":6,"start_col_offset_idx":0,"end_col_offset_idx":1,"text":"5","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":87.52,"t":291.43299999999994,"r":183.053,"b":299.89099999999996,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":5,"end_row_offset_idx":6,"start_col_offset_idx":1,"end_col_offset_idx":2,"text":"Our Friends Association","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":318.095,"t":291.43299999999994,"r":328.103,"b":299.89099999999996,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":5,"end_row_offset_idx":6,"start_col_offset_idx":2,"end_col_offset_idx":3,"text":"27","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":66.257,"t":307.98599999999993,"r":71.261,"b":316.44399999999996,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":6,"end_row_offset_idx":7,"start_col_offset_idx":0,"end_col_offset_idx":1,"text":"6","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":87.52,"t":307.98599999999993,"r":131.521,"b":316.44399999999996,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":6,"end_row_offset_idx":7,"start_col_offset_idx":1,"end_col_offset_idx":2,"text":"COMFREL","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":318.095,"t":307.98599999999993,"r":328.103,"b":316.44399999999996,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":6,"end_row_offset_idx":7,"start_col_offset_idx":2,"end_col_offset_idx":3,"text":"26","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":66.257,"t":323.53799999999995,"r":71.261,"b":331.996,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":7,"end_row_offset_idx":8,"start_col_offset_idx":0,"end_col_offset_idx":1,"text":"7","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":87.52,"t":323.53799999999995,"r":237.745,"b":342.79599999999994,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":7,"end_row_offset_idx":8,"start_col_offset_idx":1,"end_col_offset_idx":2,"text":"Traditional and Modern Mental Health Organization","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":318.095,"t":323.53799999999995,"r":328.103,"b":331.996,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":7,"end_row_offset_idx":8,"start_col_offset_idx":2,"end_col_offset_idx":3,"text":"15","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":87.52,"t":349.89099999999996,"r":108.351,"b":358.62899999999996,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":8,"end_row_offset_idx":9,"start_col_offset_idx":1,"end_col_offset_idx":2,"text":"Total","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":309.336,"t":349.89099999999996,"r":336.858,"b":358.62899999999996,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":8,"end_row_offset_idx":9,"start_col_offset_idx":2,"end_col_offset_idx":3,"text":"27,926","column_header":false,"row_header":false,"row_section":false,"fillable":false}],"num_rows":9,"num_cols":3,"grid":[[{"bbox":{"l":61.757,"t":159.67199999999997,"r":75.761,"b":168.12999999999994,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":0,"end_row_offset_idx":1,"start_col_offset_idx":0,"end_col_offset_idx":1,"text":"No.","column_header":true,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":87.52,"t":159.67199999999997,"r":173.056,"b":168.12999999999994,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":0,"end_row_offset_idx":1,"start_col_offset_idx":1,"end_col_offset_idx":2,"text":"Name of organization","column_header":true,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":280.08,"t":159.67199999999997,"r":366.111,"b":178.92999999999995,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":0,"end_row_offset_idx":1,"start_col_offset_idx":2,"end_col_offset_idx":3,"text":"Number of accredited observers","column_header":true,"row_header":false,"row_section":false,"fillable":false}],[{"bbox":{"l":66.257,"t":186.02399999999994,"r":71.261,"b":194.48199999999997,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":1,"end_row_offset_idx":2,"start_col_offset_idx":0,"end_col_offset_idx":1,"text":"1","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":87.52,"t":186.02399999999994,"r":249.615,"b":205.28199999999993,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":1,"end_row_offset_idx":2,"start_col_offset_idx":1,"end_col_offset_idx":2,"text":"Union of Youth Federations of Cambodia (UYFC)","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":309.336,"t":186.02399999999994,"r":336.858,"b":194.48199999999997,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":1,"end_row_offset_idx":2,"start_col_offset_idx":2,"end_col_offset_idx":3,"text":"17,266","column_header":false,"row_header":false,"row_section":false,"fillable":false}],[{"bbox":{"l":66.257,"t":212.37699999999995,"r":71.261,"b":220.83399999999995,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":2,"end_row_offset_idx":3,"start_col_offset_idx":0,"end_col_offset_idx":1,"text":"2","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":87.52,"t":212.37699999999995,"r":225.426,"b":231.63399999999996,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":2,"end_row_offset_idx":3,"start_col_offset_idx":1,"end_col_offset_idx":2,"text":"Cambodian Women for Peace and Development","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":311.839,"t":212.37699999999995,"r":334.357,"b":220.83399999999995,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":2,"end_row_offset_idx":3,"start_col_offset_idx":2,"end_col_offset_idx":3,"text":"9,835","column_header":false,"row_header":false,"row_section":false,"fillable":false}],[{"bbox":{"l":66.257,"t":238.72899999999993,"r":71.261,"b":247.18699999999995,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":3,"end_row_offset_idx":4,"start_col_offset_idx":0,"end_col_offset_idx":1,"text":"3","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":87.52,"t":238.72899999999993,"r":239.584,"b":257.98699999999997,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":3,"end_row_offset_idx":4,"start_col_offset_idx":1,"end_col_offset_idx":2,"text":"Association of Democratic Students of Cambodia","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":315.926,"t":238.72899999999993,"r":330.274,"b":247.18699999999995,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":3,"end_row_offset_idx":4,"start_col_offset_idx":2,"end_col_offset_idx":3,"text":"711","column_header":false,"row_header":false,"row_section":false,"fillable":false}],[{"bbox":{"l":66.257,"t":265.08099999999996,"r":71.261,"b":273.53899999999993,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":4,"end_row_offset_idx":5,"start_col_offset_idx":0,"end_col_offset_idx":1,"text":"4","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":87.52,"t":265.08099999999996,"r":231.623,"b":284.33899999999994,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":4,"end_row_offset_idx":5,"start_col_offset_idx":1,"end_col_offset_idx":2,"text":"Association of Intellectual and Youth Volunteer","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":318.095,"t":265.08099999999996,"r":328.103,"b":273.53899999999993,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":4,"end_row_offset_idx":5,"start_col_offset_idx":2,"end_col_offset_idx":3,"text":"46","column_header":false,"row_header":false,"row_section":false,"fillable":false}],[{"bbox":{"l":66.257,"t":291.43299999999994,"r":71.261,"b":299.89099999999996,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":5,"end_row_offset_idx":6,"start_col_offset_idx":0,"end_col_offset_idx":1,"text":"5","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":87.52,"t":291.43299999999994,"r":183.053,"b":299.89099999999996,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":5,"end_row_offset_idx":6,"start_col_offset_idx":1,"end_col_offset_idx":2,"text":"Our Friends Association","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":318.095,"t":291.43299999999994,"r":328.103,"b":299.89099999999996,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":5,"end_row_offset_idx":6,"start_col_offset_idx":2,"end_col_offset_idx":3,"text":"27","column_header":false,"row_header":false,"row_section":false,"fillable":false}],[{"bbox":{"l":66.257,"t":307.98599999999993,"r":71.261,"b":316.44399999999996,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":6,"end_row_offset_idx":7,"start_col_offset_idx":0,"end_col_offset_idx":1,"text":"6","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":87.52,"t":307.98599999999993,"r":131.521,"b":316.44399999999996,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":6,"end_row_offset_idx":7,"start_col_offset_idx":1,"end_col_offset_idx":2,"text":"COMFREL","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":318.095,"t":307.98599999999993,"r":328.103,"b":316.44399999999996,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":6,"end_row_offset_idx":7,"start_col_offset_idx":2,"end_col_offset_idx":3,"text":"26","column_header":false,"row_header":false,"row_section":false,"fillable":false}],[{"bbox":{"l":66.257,"t":323.53799999999995,"r":71.261,"b":331.996,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":7,"end_row_offset_idx":8,"start_col_offset_idx":0,"end_col_offset_idx":1,"text":"7","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":87.52,"t":323.53799999999995,"r":237.745,"b":342.79599999999994,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":7,"end_row_offset_idx":8,"start_col_offset_idx":1,"end_col_offset_idx":2,"text":"Traditional and Modern Mental Health Organization","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":318.095,"t":323.53799999999995,"r":328.103,"b":331.996,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":7,"end_row_offset_idx":8,"start_col_offset_idx":2,"end_col_offset_idx":3,"text":"15","column_header":false,"row_header":false,"row_section":false,"fillable":false}],[{"bbox":null,"row_span":1,"col_span":1,"start_row_offset_idx":8,"end_row_offset_idx":9,"start_col_offset_idx":0,"end_col_offset_idx":1,"text":"","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":87.52,"t":349.89099999999996,"r":108.351,"b":358.62899999999996,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":8,"end_row_offset_idx":9,"start_col_offset_idx":1,"end_col_offset_idx":2,"text":"Total","column_header":false,"row_header":false,"row_section":false,"fillable":false},{"bbox":{"l":309.336,"t":349.89099999999996,"r":336.858,"b":358.62899999999996,"coord_origin":"TOPLEFT"},"row_span":1,"col_span":1,"start_row_offset_idx":8,"end_row_offset_idx":9,"start_col_offset_idx":2,"end_col_offset_idx":3,"text":"27,926","column_header":false,"row_header":false,"row_section":false,"fillable":false}]]},"annotations":[]}],"key_value_items":[],"form_items":[],"pages":{"1":{"size":{"width":419.5279846191406,"height":595.2760009765625},"image":{"mimetype":"image/png","dpi":144,"size":{"width":839.0,"height":1191.0},"uri":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA0cAAASnCAIAAAChO5TYAAEAAElEQVR4nOzddXQUV/8w8DuzvpvdZOPu7gnuBJfibgWKl7o7NSpIKV7c3d09CYS4u26SdXeZmfePge0SAqUtfdpf3vs5PT1kdubOHf/OtUEIggAQBEEQBEHQ/3Hov50BCIIgCIIg6CWAUR0EQRAEQVBHAKM6CIIgCIKgjgBGdRAEQRAEQR0BjOogCIIgCII6AhjVQRAEQRAEdQQwqoMgCIIgCOoIYFQHQRAEQRDUEcCoDoIgCIIgqCOAUR0EQRAEQVBHAKM6CIIgCIKgjgBGdRAEQRAEQR0BjOogCIIgCII6AhjVQRAEQRAEdQQwqoMgCIIgCOoIYFQHQRAEQRDUEcCoDoIgCIIgqCOAUR0EQRAEQVBHAKM6CIIgCIKgjgBGdRAEQRAEQR0BjOogCIIgCII6AhjVQRAEQRAEdQQwqoMgCIIgCOoIYFQHQRAEQRDUEcCoDoIgCIIgqCOAUR0EQRAEQVBHAKM6CIIgCIKgjgBGdRAEQRAEQR0BjOogCIIgCII6AhjVQRAEQRAEdQQwqoMgCIIgCOoIYFQHQRAEQRDUEcCoDoIgCIIgqCOAUR0EQRAEQVBHAKM6CIIgCIKgjgBGdRAEQRAEQR0BjOogCIIgCII6AhjVQRAEQRAEdQQwqoMgCIIgCOoIYFQHQRAEQRDUEcCoDoIgCIIgqCOAUR0EQRAEQVBHAKM6CIIgCIKgjgBGdRAEQRAEQR0BjOogCIIgCII6AhjVQRAEQRAEdQQwqoMgCIIgCOoIYFQHQRAEQRDUEcCoDoIgCIIgqCOAUR0EQRAEQVBHAKM6CIIgCIKgjgBGdRAEQRAEQR0BjOogCIIgCII6AhjVQRAEQRAEdQQwqoMgCIIgCOoIYFQHQRAEQRDUEcCoDoIgCIIgqCOAUR0EQRAEQVBHAKM6CIIgCIKgjgBGdRAEQRAEQR0BjOogCIIgCII6AhjVQRAEQRAEdQQwqoMgCIIgCOoIYFQHQRAEQRDUEcCoDoIgCIIgqCOAUR0EQRAEQVBHAKM6CIIgCIKgjgBGdRAEQRAEQR0BjOogCIIgCII6AhjVQRAEQRAEdQTUfzsDEARBENQ+DMMaG5uaW1oIHPfx8QkNDaFSHz22VCqVXm/w9vaiUCjPWlYkEjs5cZydndVqtU6n9/LytC/uyGg0VtfUymVyGo0aEBAQGBiAIMhfyzBBEHK5AsNsnp6efzmRdpnNFolEYsNsT64PoCjq6enJYjFf4rqg/7tgVAdBEAT9F9XV1589e76luYXL4wKAqNXqgAD/CePHBQT4AwDu3LmXl5///nvv8njcdhfXarVbtm7r3r3biOHDsh5mZz/MWbx4gZubW5vZCgqKzpw9azaZORyODbOp1Zq42Njx48fw+fy/kGeCIM6dO69Uqd5YuoROpz9rNpvNlpOTS6fTUlNTXzBlsVi0ddtOo9FIo9EIQDxaHU6wmMxZs6aHh4f/hdz+34JhWGFhkcls6dmj27+dl/8uGNVBEARB/zkCQfPuPfuYDMasV2f6+niTU06dPrv/wMHFixbw+fyuXTtHRkaw2axnpcDhcKZOnezq6goAwDHMarUSBNFmHqlUdur0GS8vzxHDhzk786xWa3V1zclTZxgX6FOnTm63YO/5EAQZMCDNarU+f1mz2Xzx0pWePbq/eMo4QVgs5i6dO3XqlGqP6gABKBTUx8fnz+bz/yKLxXzl6vWIiLB/OyP/aTCqgyAIgv5brFbrlavXCJyYM+dV38chi7u7O4Ige/bsKykp69OnF5vDQVEUACAUiQAA3l7eZIUnQRASiQTHCQ8Pd1dXVw6bTS7ebn1oY1OT0WBI698vODiInOLp6SmRSGtqa/V6g7Mzj5yoUqtVShWVSnF3d2cyn6jrVKlUKpWaSqN6eXrSaDQAEC6Pi2GYfXU2m00ikVgsVi6X6+bmSm5dU5MAwzC5XNHS2kqn0Uwmk7e3N41GIxdRq9UajcZxin0TvL29IiLaKZYjCEIqlaIohc93EYslFqvFlc/n8Xj2GXAcF4nEFovFw90dQRG5QuHl5UWn0QAAVqtNKpWazCYalebu7sZi/R4om81miURCAODl6WkwGk1Gk5eXJ7nbrTabRCyxWn/fLgCAwWBQKJTe3l5arValUjs5OXl4uAMA5HK5Vqvl8XhkkG3Ps0QiNRgNbBbL09OL3GFWq1UkEru7uxMELpXKKBSKl5cnjUbDMKypqdlisajVaoFA4OPjS6W2X/P+/zkY1UEQBEH/LVKptLamNiUl2ffJUqjY2JjXX19M1o2mp2cUFZUsfX3xgwdZ1dU1ixYuIIMwnU63f/+h4JDgwYMG7Ny5u3PnTkMGDwLPaOLGdXLCcLykpDQoKJD9OP4bMmRQD203DocDALDZbOnpGRmZ9/U6PYKi7u7uI0cOi4yIAADYrLbrN2/l5OQYDAaAIKHBwaPHjPL08Lh06bJKpV4w/zU6nS4Sic+dv9DY2ITjGIPB7Nq18+BBA3U63aXLVzQaTV5+vsFoiAgPv3X7zrSpk6OjowAAOI5fvXpNKJLMnzenTVQHAABPFTeScBy/evWGXq/jOfMqyitNFouri8vw4UMTExMAACqV+vz5CxUVlRiOe3l5eri7t7S2zn51lpeXZ3Nzy/kLF1tbWy0WK4IgPj5eo0a9EhIcDABoamo+d+58c0sLiiJBQUEAABzD58x5lclktAqF585daBY0YzjGZDC7d++WltafRqPW1zecO3chMjKiurpGqVIymczBgwfarFh6RqZGo3Fy4rzyyoiU5GQAgEajvXDhYkVlpcVipdGocbGxI0YM43K5KpXqwMFDkRHhLa1CkVBEABASEjxh/Dg2i3n5ylW5XK7RqHVa3dy5sx1jVsgORnUQBEHQf4tcoTAYjUFBgW2m0+l0e0mVzWozm00UCiUmOiYrK7u2ri41JRkA0NDQKBSJRo4cjiCo2Wy22Wzg2UJDQ7t17XLn7r38goKI8IiwsFB/f7+AAH9vb29yhoyMzDNnz/Xp3btXr55arfb8hUv79h9cMP+1wICAO/fuXrt2Pa1/v65dO0uk0iNHjh0/fvK1ubNtVpvFYkFRVK3WHDh4yGbDZkyf6unpWVJSeunyZQQgQ4YMmjlj+sZNv3VKTRk6dLDBYLx9+3ZJaVlUVCSCIEqlsqy8onPnTvYo05FEKqurr/+9ApYgOBy2l5cXAMCG2UpKy7p17bJw4TyzxXL06PFz5y6Ehoaw2exz586XlJVPGDc2JCQ4Nzfv6rXrHA4HRRCDwXjkyDGT2TRzxjRPT6+GhoYjR49fv35z3mtzjEbjkSNHrTbrnNmzuDzurVt3MjLuR0dFUiioSqU6cOAQgiAzZkzz8PAoLCq6cuUagiKDBw0kABCKRBiOjRk9yt3d7eSpM4cPH42IiJg8aQKDwThy9Ni1qzciIyLpdNrJk6fr6utHjxoZGhra0NB45sxZs8UyY/pUABCNRpudkzt8+LBp06ZUlFeePHX67t17Y8eOnjF96tZtO0NDg8eOGc1gMP7OCdaBwagOgiAI+m8xm8wAAMeqwKchCIIgCI7joaHBrq788rLylOQkBEFKSko9PTyCgoIsFgs5z3MSodGoY8eODo8Iz88rqK6pyc7JptHoERHhw4cNDQsLNZlMD7KyIyMjx4wZRVYFTp0yad36jQX5ha6urnl5BTEx0SNHDkcQxNPTE52GikQSAieQxyqrqoRC4cIF8yIjIwmC6Nevj1AkzM7J6d2nF5vNQhCETqczGAwGgxEVHVVRUaHT6blcp7q6eqPRlBAf33Z7AUAQNPP+g5zcPPA4rLPZsLjYmNmzZ6EoiuO4h4f7yJEj+HwXAECPHt3Pn7+o0+l1On1ZefmgAWldu3YGAAwdOlgmk1VWVREAoCiSmJgQERFOVkAnJycVFRcLhSIcxysqq2Ry+exXZ0ZFRQIAxo4Z1dLSihM4AEhZeaVYLFmyeGFYWChBEGn9+wlbhQ8fZvfp3QtBAIVC6dund3x8HACgU2pKRUVVv769yVg8KSkxPT3TZDJKpdLy8vJXXhnZuXMngiBcXfkarebSpctiiYRBZxAEkZyU2LdPbwBA9+5d8wsKWoUigiBYLBaKojQarU0lOOQIRnUQBEHQfwudwQCAMJvNfzgnAQg6nZ6YmHj//gONRoOiaHVNbZfOqSwW80UWBwDQ6fTUlOSU5CSz2dIqbC0tKcu8f3//gYNvLF1CAKDRaJKTEu2Dp3h4eHh5eojFEqVCqVapk5OT7FFjbExMbEwMgROP+mQQhFgkMplMBw8dQRAUAIAgQKfTm81mjUbDdeICAOy9N5ISE/PzCuobGhIT4gsKiwID/H18vNvZWALv1bNHly6dcRx/PIVgs9lUKhXDMIIgnJ1dOE6PSvhYTCaKImQrQ4IAgYEB5HQEQYKCgmpqa3EcZzKZgwamNTU3Z2fnSKTS1hZhdU2Nh4c7QRCtLa1OThx7Njgcjr+/n0QiIR5v1779B+zbpdXqbDabVqsDANDpNHd3d3IpCpXKYNBdXB71JqbRaAgCcByXyqRGk+nqteu3bt8mCIAgwGQyq9UamVTm7++HoqiHp6c9t0wm02KxEMSjHft0lxfIEYzqIAiCoP8WVz6fwWCS3SAcWa3WjIz7zs68lJRk4FAGFxsTfffu3br6BkAQVoslJiYGAGAv0HoWDMMyM++bLZYBaf1RFGUyGaEhIaEhIX5+Pnv3Haitqw8LDSEIguwcQEIQgKAoAQgcx3ECbzNUHo7j9piDAMBqs7HZnLT+/e2DyVGpVDqdzndxsVqtjgsGBgZ4eHqUlZV5e3kJBM0DB6Y93aKOTNfNzdXeseNpCAIQ8GTZJAIwDANPdhZBKShZ1mmxWM6du5D1MJvFYvn4eAf4+xuNRpPZRBCEzWZDwBMlnRQKuR8Im83m5OQ0IC2NyXxUDUql0eh0OpfHFYvFjuWjBEEgSNscEQBgNpxCofTs0d3ezYJCoVBptKCgQIvFCgAg40XoL4BRHQRBEPTf4uHhERQUWFJS2q9fX2eHRvFNTYIzZ8/17Nk9JSX50SQCAAB8fLyDg4Pz8vIpFIqPr6+fn++LrAVBEIGgpbCoKCY6ys/Pzz6dy+WiKAVFECcnJzab1SoU2n/SarVyuSI+PtbZmcdms8Uisf2ngoLCe+mZUyZPJKNABEHcXF0xDCPb6pHziMUSrVZLp9Mfxy6P4h0nJ6e42Nji4pL79x/Q6bSoyMhn5flPl1QRhLu7G0EQUqksMjKCnCaVSjEMo1DQqurqu/fSx44Z3bt3TyqViiDI9h27DEYDiqIeHh56g0GpVLm4uAAArFarTConCIAgiKurK2azRYSH+fg+6ssiEol0Oj2dRnuRzCEAuLi4IAji6enRqdOj4frUarVQKGIwmOSeed7iL3Vs544HhsMQBEHQfwuDQe/Tu5dMJj927IRMJsNxHMfxlpaWk6dOMxmMHt27AfBESRyNRouPj6uuqS0vr0hMjG+n62h7UBTt3r0rgiD79x8qLCwyGPRGo6miovL0mfOurvzQ0FAGg5GYEF9YWJSVlW2z2XQ63aXLVw0GfWxMjLOzc0x0dGFRcXFxic2GyWSya9dv4JjNyYlDDiZHEERkZCSLxTx1+oxEKsUwrKGxccPGTRcuXMIwjEKhEAShUqvthXbx8bE6vf7Bg6ygoEBPT49n5RnDcKvV9uR/VnuF7NNwHPf19Q0I8L99505rq9Bmw8rLK7KzcxEAEASxWqxkPSxZh5uVlV1eXgEAwDAsJiaKTqdfv3FTo9HYbLbM+/erq6spKAoAEh0dRafTT50+I5PJMAyrq6tfv2HT5StXcRx/kYCLIIiAAH9fX9+LF680NDRgGCaTyXbs2HXg4GGTyfjsmI0gywDVao3FYnmB9fx/CpbVQRAEQf85iYkJY8eMunjp8o8/rfD29gGAaGltdXF2mTZtir+/PwDAZrORza3I+WOioy5evGQjiJioRwVdBEFYLBay/hHDMMeZ7UJDQ6ZPm3Lp0pW9+w6Qc1KpVH9/v/Hjp7q68gEAAwak6fWGk6fOnDt/AQBAoVBGjx4VGxuDIMiQwYO0Ot3+AwfpdIbVYvXw9Bg3fiybzbZarGSk5ePjPXnSxLPnLqxe/SudTjebTX5+fhMmjKPT6SiKBgcH3b59p66ubtGiBW6urn5+fv7+fkVFxQnx8Y51vnYEQVitttNnzl66fOXJ6fiY0aP69+9ns9ocK3bJTcZxnEqljh07+siR42t+XcdkMlksJtfJidwbERHhSYmJJ06eunHzFoqiThx2RHhYY1OTWq329PQcP27MqTNnf/jhZwaTweE48fl8BEEIAvfz8504acL58xdWrlpDp9NNJnNgoP/4cWOpVCqGP1rpozzguNlht5NZstkwDoc9aeL4EydObdq8hclgmi0WZ2fetGmTXVxcxGKJ/aiRrFYrOYI0g8EIDg66c/dufX3Dm2+8/pzY9/9nCGx4CEEQBP03Nbe0VFdViyUSBCDePt6xMdEeHo+e5S0tLQqlMjoqiiyZIwiiurqGjFTIqMhisVRWVrm5u/n6+AiFQplMHhkZ0e6IGDqdrqWlVafTEQTB5XIDAwMcu9+S36JVKJQ0OtXH28cxmLBarQ2NjWqVms5gBAcF8ng8giAa6hssVqs9GwqFsrmlxWwycTicoKAgDudRbwa1Sl3XUI8gaFRkBLm602fOFhYWv/P2m/bRjx3p9frq6lqrtW0xFUGAwEB/b2/v2tp6G2aNCH+0XrlcLhA0R0ZGsFgsBEG0Wl1DQ4PZbPbz8y3IL8zOzVv6+iI3NzeDwVDf0KDXGzhsdlBQEIbZ6urqwyPCnTgcBEGkMlmzoBkA4Ofvd/bsebPJvGjRfPKzGXK5oqWlxWw2c5ycgh+P9qdSqRoaG0NDQsjB5OQKRVOTIDIinBz8TyyWSCSS8PBwsqGhTq9vamrS6/UMOiMgMIDv4gIAMJnMlZVV3t5eXl6e5GGtravDcTwiPAxBUK1WV1dXZ8Ow6Kgo+56EHMGoDoIgCIL+ZRaLZf2GTcHBQRPGj3u5KSuVqqPHjnXp3Dk1NQUAQBBg67ZtBoPx9SWLnjPqW01N7dVr10eNGhng7w8AUKlU69dvioqKnDx54svNHvRywRpYCIIgCPrXmEyme/fSq2tqNRpt586dXnr6Tk4cAJBjx0+0tAp5XKeamrqamtrx48c9fyBfV1dXhVyxd++BLl06USiUoqJis8VMjngH/ZfBsjoIgiAI+teYTKajx05IxJIBA9NS7X17Xyq1WnP7zu3a2noMx53YTj16dE1OTvrDpZqbW27fviMSiwEB3D3c+/frExwc/E9kD3qJYFQHQRAEQf8mDMMAICiUf7b2zGazWa02++B5L4jsVwG/0PV/BYzqIAiCIAiCOgI4Xh0EQRAEQVBHAKM6CIIgCIKgjgBGdRAEQRAEQR0BjOogCIIgCII6AhjVQRAEQRAEdQQwqoMgCIIgCOoIYFQHQRAEQRDUEcCoDoIgCIIgqCOAUR0EQRAEQVBHAKM6CIIgCIKgjgBGdRAEQRAEQR0BjOogCIIgCII6AhjVQRAEQRAEdQQwqoMgCIIgCOoIYFQHQRAEQRDUEcCoDoIgCIIgqCOAUR0EQRAEQVBHAKM6CIIgCIKgjgBGdRAEQRAEQR0BjOogCIIgCII6AhjVQRAEQRAEdQQwqoMgCIIgCOoIYFQHQRAEQRDUEcCoDoIgCIIgqCOAUR0EQRAEQVBHAKM6CIIgCIKgjoD6b2egg9NqtSKhUKPVqtXq2JgYbx+fl74Ks9mcn5fn4+MTFBz80hN3JBaLq6uqkpKTuVzuP7qiv6akpMRmtSYlJyMI8m/lAcOw5uZmlVKlUim9vX2ioqP+rZy8iPr6eolYnJKaSqfT/92c6A2Ggvz8kJAQX1/ffzcnJLPZXJCfL5fLY2JjQ0JC7NNtNptIKFSpVEqlksvlJiYmohTKP5QHjUYjEom0Go1Wq42JifHy9v5Ti+M4LhaJ5AqFWqmkMxipnTpR/oGsNjY2tja3pHRKZTKZLz3xF2EymVpbWjUatVKlCg0JDQoO+leyAf0TdDpdQX5+eESEt7e3VqMRiUQajUajVsfFx3t6ef3bufsPI6B/0tUrV6ZNnpIYGxcdHnHh3Ll/YhV79+wJCwqeOG68RCL5J9InGQyGRfMXBPr6rfx5xT+3lr+suLi4S0pqSmLSg/v3/6FVSCSS8rLy8rKykpKS4qKi0tLSivLystLS4qKikuLi8rKy8rKy7KyHH3/4Yc+u3UIDg3764cd/KCcvhVAoHDlseGRo2NHDh//dnOA4vm7t2mD/gLmvztZoNP9uZgiCqKyofP/d95YuXhIREprWt29NdY39J5FI9NnHn/Tp0TMkIPD1RYtNJtM/l41LFy5OnTQ5Lio6Pjrm8qVLf3ZxhULx3TffpPXpGxoYNG3yFL1e/9JzKJfLx40eExIQuH/fvpee+AsqKix8fdHiTknJESGhu3bs/LeyAf0TVq9cGejrt3DefKPRdOXy5amTJsdHx0SFhV+7cvXfztp/Giyr+2cNHjKka7eu773z7o1r1wmC+JupGY3GpsZGnrOzj0OZH51Op1AoTk5OdBrtb6b/HCiCMJgMKoXC4/FefCkMwwQCAY5hAYGBtH8ye1QqlUan0Qgam8Mhp9hstsaGRgqVEhgYiKIvoaXBsSNHdmzfwWIywyMj+Hx+U1OToKnJz98/ODhYo9ZUVlbq9bp33n3vpxUr1q9du/LnFRhm+/sr/edQqVQGnU6j0Zy4f3xA1Sq1UCT08PBwc3P7m+vV6XTNAoGrm5unp6d9IoNOp1AoPB6XSv2X70gqlerbr78ODQtd9s3XHp4e9XUNjqVQXl5ey3/68ejhI59+/InVav1HczJsxPAuXbu++87bmRkZf+HWwefzv/jqqy5durz1xpt/P6sEQYiEQq1WGxAYyGKxyIkoitIZdBqNxvv3Cu8TEhN/Xb9u2ZdfHti3H8fxfysb0N+k1WhbWlvc3Nw8PDzsExlMJkpBuTweiiBDhg7t1r37m0vfuHv79t9/knZw/25Q+f+JH7//Ptg/4PzZs38znbzc3OT4hE8/+thxotVqq6muVigUfzPxP6RRa6oqq8xm84svolKpJk+YOHzI0Jbm5n8uY6RmQbOgSWD/s6WlZWC//tMnT9HrXk4pxQ/fLw/2D9i8cZNGozEYDN9+/bWnq9tnn3xqMBi0Wu3unTtDAoLWrF5NEMSFc+fDg0OWf/vdS1nvP0cikdTV1mIY9odzHjtyNCEmdtuWrX9/pbdu3oyNjFrx00+OE81mc3VVlVqt/vvp/01nTp+OiYg8dvQoQRA4jrd7tpcUFyfGxi14bd4/WlZH+mbZ1+EhIZcuXvxrizfU13dN7TRx7Li/WVZntVo/+eijLimp2Q8fOk6Xy+Q11dWYzfZ3Ev/7tm/dFhIQuGPb9n83G9BfdvnS5fjomF9X/+I40WQyVVVWarVa+5Tvv/k2yM//6uUr//MM/l8Cy+r+F17WSySCIHq9vs2bN5VKCQsPfynpPx+Xx+Xy/txLOYVKMZvNJqPxn2jT04afv98Tq6ZQjEaj2Wx+WWWEFotl4OBBr82fR7ZCYzAYFAqFwWCQRRfTZ8588OCB1WoDL+9w/9M8PDwc34yfA8dxvV7/srZLr9fbbE8UZNLp9PCIiJeS+N9UUV6OYRjfhQ8AQBCk3RaHGIb9z/LzN/f5y8oqlUq1Wq1Go7FNo1VXN1dXN9eXsoq/4//KFQc9x9O3BQaDEREZ6TgFHugXAaO6l0nQ1FRdXW2zYQEB/lHR0c+v+FOr1WWlpWq12tXVNS4unuPEaZNUbW2txWLxDwiIiYklCLylpUXQJEBRVKvV1tXWAoC4urlqtVqFXG40GjkcTmxsLMWhAqupsamurs5sNnl4eMTGxdkrkjAMNxoMOp2Oy+MymczysnKpVMLlcmPj4tlsVrtZNZtM9fX1RqPRaDAGBAUGBAQAAHAM0xuMep2Ox+MxmIzysjKpVMrj8mLj48hARyqVtjQ3W8xmm81WV1en0+s5HI7340bfUqm0vKzMaDR6enrGxsUxGAz76kQiUVVlpclk8vDw5PP5OIETOOHu4W61WIXCVqPRSGcwkhKTGhobmgWCkNBQNpvd0txsMptxDIuPj+c4OYmEorr6OrKspbqqisli0Wg02+MqURzHvb29ORyOQi6XyeUUlEIAIiAgwDEPT0tITBg6dIj9MU8QhP3/AAAajfba/PkSscQ+P3n0Kysrha1CJpMZGxfbpvJaq9WWlpSoVWpnF5e4uFjuM6q2NWq1QCAwGo0EQSQlJSmVyuqqak8vr8ioR/c7jUZTWlqqUald+C6xcXGOfVnMZnNZaalELHHiOnl5e1MoFBzDWWwWh8NpaW42Gk0Wizk8IsIe28nl8tKSEpPJ5OnpSaVR3d3cXd3chK2tYrEYRVGZTFZXW4cgiKeXp1wmVygURqPBy9s7ODi4tKREq9HGJcQ5O7sAAAwGQ2lJqVwmY7HZoaEhAYGBAACrxSIUiVpaWlAUValUdbV1AAHubu4KhVylVhsNBhcXlzZXTV1dXWNDg9Vq9fb2jomNtQfoGIbp9Qa9Xsfn8ykUSllpqUKh4PP5sbGx9OceRACA2WIpLy0TS8R0Gi0kJDQ4JJicrlQq5XJZS3MzAEAkEtXW1jpxOJ5eXi/Y+cZmwyrKy4RCIYqiQUFBTwepFoultLRUIhaz2eyY2Fh3d3f7T60tLVWVVWaLmc/nR8fE/KlGDiSTyVRaUiqTSTkcTkxMjJtD4u2qrqpuaKhHUTQ4JCQsLMzxJ4IgKisqmpoEVColPCIiMDBQo1aLxGKyyEQgEPD5rnQGncvltjS3mExGo8kUGRHh4VCfbjKZykrLpFIJg8EIDQ0LDAq0/2Q2m/U6nc1m8/TykkqlVZVVmM0WGBQY7NAl5VnI3lp6vd7Z2SUmNsbZ2bnNDFQalbypWiwWX1/fNgGBWCwuLy2z2qzkLcjHx8f98WmP43h5WVlLSwuNRouMjPTz9wcAWK3Whvp6nU5nMprCIsK5XG5JcTGKol7e3haLBUVQnMApFIq/vz+CIAKBwGKxIACh0agBgYEoihoMhrKSUplcxuVyY+Pi+Hw+AECv1zc2NBgNRhuGJSTEG02mivJy8qCjKGqxWIqLimRSGc+Z5+rqCgCIjIp6+vRTq9QCgcBkMhIEkZScrJDLa2pqvH183N3dmgXNZPlxQmIig8FobGhQqVRms5nBYMQnJFCpVIIgzCaTTqcDCOLu7t7c3Exe0eER4T5P9uQrKy1rFgiYTKaXt5fVao2MjHz6yjIYDI0NjUajwWw2x8TEuPD5QqFQIhZbLBYcxxMSE9lsNgDAYrHodDqrxeLl7a2QyysqKiwWS2BgYGhYGLmfha2twtZWFEWVSmVdbR2CADd3d7lcrlapTEajC58fFR39L/aB+z8HRnUvB0EQ+/buPX/2bFx8PABgdUZmWlra2++9a2+D0kZuTs7aNWtcXd38AwKyHjzg8XiffvF5eHg4AADDsAP79p0+dTouLo7BZG5Yt37Q4MGTp05es2p1WVkZhmH5+fkff/gRgiCvzp6t02l3bNteXVXVo3evrdu2kZGBzWbbu2fP6ZOnYuNi3d098nJynLjc9z78IDo6WqfTrV3za2F+gU6nnThlskIuv3H9Rn1dnc1mmzFr1keffMzhcJ7OrUaj2bNr9/Vr18Ui0adffLZk6VKtVrt2za+FBQV6vX7S5MkymfTm9Rv1dXUYjs+c9eqHn3zEZrOPHz16+eKl5uZmHMd//vEnCop26979o08/AQBcvXJl146dQcHBzi7O9zMywsMjPv38M/LBcP3atXW/rg0KCvTz90+/e0+r07m5uaEIMm/BAp4zb/XKVYUFBdHR0ZOmTLl65cr9zMx+/fvNmDlrz57dD7MeOjlxDhw6FBkVtXPHjsyMDJVKZTAav/riCwRFExMTZTJZfl4ehUqNT0h49713Q8PCKioq165Z0ywQJCYlfbv8++cXXI2fMOH550CXLl3s/0ZRVK/Xbd648eKFC/X19XqdftTo0d9+/70L34WcobCgYO2aXzkcTlBwcPbDh0wm87MvPo+Kjn462WZB8y+rVqffu+fq6rpw8aKsBw9u3bwVEBi4Y9euoOCggvz8dWvWcrhOQUFBD7Oy2GzWp198ERUVBQBobW39afnylpbWbt27V1dXlZWWubi4sJis+IT4cRMnbPtty+1bt6xW6y9rfx35yisAgNLS0pU//ezl7eXt7X2kuCQnO/uTzz7t1r3HD99/X1NdTRDElUuXCvLzaXT6Bx9+UFJSsn3L1sbGxtFjx4aHh188f76srOytt9/+4OOPKsor1v66huvE9fbxyUhPl8vln3z26bDhwyVS6Y/ff19TU4sgSPq99LraOiqVumDhwrq62v1799XV1Y185ZVf168jY2uTybT1ty3Xr11LSk7icrk5D7O9fXw++OijwKBAmUy29pc1FRUVRoNh+syZtbW1d+/caairp1ApCxYufPOdt5/Tpbeurm7VzyuUSmVqp1SVUlVYUDBi1CsLFi6k0WjXrl49cuhwS0szjuN79+w5cfx4z14933733Rcp6xUJRb+sWlVXW9upS2eL2bI2Z03vvn1ef+MNJycncob6urpVK1fqdfqEhIS6+nqJWPzp55+lduqE48SpkyfOnjkTHR1tMpmvX7sWExOz7JtvAgID/nCldg0N9atWrDSbzNExMSUlxVqN9sOPP+rWvXu7MxuNxt82b866/yApOVmlVuXn5k6dNm323LlkabpSoVj766/lZeUpqSlKpfLX1b8sWbqUAMTOHTsbGxosFsvW37aw2eyQkJDpM2fs3rnrzq3bKo163fp1o8eOJdOvqqxatWKFXq9PSU2Vy6TFRcXjJoyfPXculUpNv3dv146dEonEx8fnlVGjTp06WVFe0drSEhIS8sNPP/Xs3es523j+3Lmd23cEBAQEhQSXFpcYjYY33367R8+e9hlQCqUgP7+stKyxob6ysoqConPnzZu/cAF5MmQ9eLB+7bqQkBAXvsve3XuKCguX//TjK6NGAQCUSuUvq1Y31NUlJicJBILampqFixePGTvWbDIfOXT49KlTarV6/sIFJqPpypXLGrVm6PBhjfUNYomEy+UOHDTo9TeW0un0C+fPnzl12mQyjR4z+r0PPqiprl65YgUCkIjIiIKCAqvF+tGnn6Smpkql0o3rN9y6eZPFYi1YvKi8tOzmjRs8Hm/7rp2BQUE///iTsLU1Lj6upbklMzMjPi5+42+/UWltn9GCpqaVK1ZkPXjA5/MXLVmcmZF5987tkJDQN95+69iRow8yM13dXY8cP+Hv73/v3r0zp07n5+bGxMUdOnqEy+WeOX36+NFjSqUyNi6uS9cuJ48dr62tFYnFXbp0+eGnn6JjogEAVqt1x7btGffuJaUkazXa+/fv0+m07bt2enu3HcBBLpdv27r1+tWrZrN5x+5dvfv0KS4qOnzw0P3MTBaLdfTkifDw8KysrG1btkglUr6Ly8TJk86cPl1aWtosaA4ODv7mu2/TBg4Ui8XLv/u+tqYGAHD79u2qqioKBV38+uuVFRX79u5ramx8ZfSodRs2/A9qezqOf6vqt4M5euRIcnzCiWPHyT93bNsWFhS8c/t2nCAIglj+7beO7eoqyisG9Ov/4XvvGwwGgiBKS0qT4xPmzZlDlsfs3LEjNjJqz65dOI6bTKZpkyZHhITevXNHrVZfuXgpPDhk6eIlCoVCoVCYTCaLxXL1ypWYiMhpU6aQ/QcxDNu0cWN0eMSuHTvJJlP19fUD+/UfNnhwY2MjhmGCpqYFr83zdvcYNXzk2TNnlEpleVnZiKFDw4NDbt+81e7W4ThuMBi+Xfa1r6fXls2bybU0NTXNnzvX291j1IiR586cVSmVZaWlw4cMiQgJvXP7NkEQep2upqpq6MBBfXv2Ki0uVigUOq2WIIj7mZmdkpJ/Wb2azN71a9diIiK/+uILDMOqqqp6du02YcxYpUJBEMTZ06eD/QOWf/c9ubE2m+1hVlZSXHxiXPy2LVszMjJiIiL79OgpEokEAsHQQYOT4xNKS0sJgtBqtQX5BZ2TU0aPHNnc3KxQKHQ6XWtLy+QJE4MDAs+cOkWu2maznT51atrkKU2NjTiO/6kj/tMPP/h4eH791bKnfzp39mxUWPjA/v0P7j+gkCsaGuqnTpoc5Od//Ngxcob6+vqB/fu/tfQN8gSorKjo1rnLrOkz1Kp2GpZhGNZQXz84bUBESOi3X39TWFg4sH9aVFhYcVFRU1PTgH7933nzLfLMKS8v79qp8+yZszQaDYZhH3/wYVhQ8M3r1wmCEIlEQwcNGtQ/raaqSqvR2Gw2hUIxf+5rYUHBF86fJwjCZDK9NmfO64sWWywWgiBEQuGkCRO2bP7NarWqlKpNGzaGBgatWrlSoVAolUqrxWKxmHdu3xHg6zuof9qN69d379zl5uzy5tI3rFbrrOkzw4KCH2Y9JAiipqqqW6fOI4YMk8vlNptNpVIdPXw40Nfvi08/UygUSoXSbDabzebjR4+FBgUtWbSILGmwWq0/LF8eFxV98sRJcicUFxV379xl0vgJEonEZrPV1tRMmTjJx8Nz8oSJVy9fUalUebm5fXv1iouKzs/Le9Yha21tHTdq9KC0AbW1teRZvXP79sjQsNUrV1qtVqPBIJPJ3n/n3cjQsNMnT5LnTLvpFBYUOLarUygUs2fO7Nmte3FRETnDqZMnI0JDv/jsM7JZnkQsnjB27LDBg5saGwmCuHn9RoCP77w5czEMy83NjYmInDx+gsViJghi986dQX7+q35eYT8bl3351fPb1cmksqmTJk+dNFkqkRIEIZNKhw8eMnjAgJaWFoIgamtqHNvVYRj+y6rVnZKTMzMzyVPr66++ig6PIPvYmkym9955JyUx6WFWFkEQ1dXVKQmJg9LSmpqapFLpgtfmxUZGXbtyVaFQqNVqm82m1WheX7TI38fn3NkzZGaaGhtHDB02YshQgUBAEASO4Zs2bIwMDd2wfj2GYXq9/uzp0/HRMVHhEV989ll5eblGrdm0cSO5N57TSPHs2bMxEZHffv0NeXIqlcqZ06Z3Sk7Oyc4mZ9i2ZWuwf8DCeQvq6+oNBkNdXd30qVOD/f23/vYbjuNarXbC2HGff/opOXNdbd2o4SOOHjlCEITRaPzwvfcH9OtXWVFBEITZZFo4f35SXHxRYSFBEHq9/tOPPg709Zs6aXJOdvYXn33mwXfduG797Vu34qKiBqUNIA8oQRBGo+mTDz5c9uWXRoNBKBSOGz1mzqxXyZtYa2trWp++o4aPkEokGIa1tgonjRsfEhD4wbvvFRUVTRw3LsjPPzMz89CBA72792iorycIwmK2/PzjT7NnvUpe121gGFZfVzegb7/w4JDl331XXFzcr3efqLCwkuLihoaG3j169OjStampiSAIi8WSl5ubFJ/wyvDhZFGrRqPZvnVrSEBgcnzCL6tXNzU1KeTyr774wtfT6+uvlpF3xbt373ZJSb1z5w55jRw/evSV4SPIBNvAcVylVE6dPDk8OCT93j2CIGw2m1AoHDZ4SHJ8Qk1NDUEQBoPhyuUrSXHx4cEhn378cWlJiUat3rVzZ7B/wPQpUwwGA3lb2Ltnb0hA4NdffaVQKJQKBXlbOHzwUEhA4BtLXrc9brj57bKvYbu6PwRHIX4JZFLZnl27o6KjXxkzipzSPy3N1dX16pWrOq227dwEOH70qEQimTPvNbIkLzYutlOXzvcz79fW1IhEop3bdwQGBY0dNx5BEINebzKaLFaL0WDk8Xg8Z2cAAIPB4PP5fD6fwWDQaLTg4GAejwceVwU2NjTs3rEzLCxswqSJZGVWcHDwhEkTS4tLThw7jqKof0BAn359aVRq/wFpo0aPdnFxiY6JGTxkiNForK+va3cDEQRhsVihYaEoBSVXg6JoQEBA7759qVTqgIEDXxk9ytnFJSY2dtDgwQaDgUyHzeHwXV0pFAqKoi58Pp/P5zg5WSyWvbt2s1isadOmkdnr0aNnWFjYrRs3xWJxRVl5a2trTHy8C58PAEhMSnZ3d8/LzWWz2WQ7Nv+AAC6X6+PjM2XalM6dO3/z3Xefffmlp6enp6enr68v8XgnODk58fl8FEUpFIqrqyufz+dwOD6+vpOmTEYR5H5mJtk+g0KhNAsEo8aMDggMfJkl/ATAMKxr127TZkznu/KDgoJHjR6FIkhd7aPde+LY8WZB8+y5c8gTIDIqqnOXzg+zsioqyp9ODEVRT08vD09PJyenyVMmJyYmfvTJx98uXx4ZFXX00OHWlpbZc+eQ1evR0dGdO3fKevCguqpKq9Xm5eV5enqFR0YCADw9PVNSUpqamlqFQicul0Kh8Pn8oKAg+1Yrlcq6mlqbzUq2xPLy9p4/f4G7hzuVSnV2cSZLcNlsNp/Pd3FxodJoNBo9OCSYglJSO3UaMHDgsOHDVqxauWDhAgzDEAS4urmRlS/BoaGRUVHC1lapREKhUJydncniKyaTyefzXfgudDqdTqeHhIZy2Bz74SstKTm0b39ycvLIV0aSU+IT4keNHp314MH5c+coFEpoWFiPXj0pKGX4yBGDhw5xdnZOSU3t17+/Rq1pbGx81mE5deJEfl7+5CmTQ0NDAQAIgowdPz4sLOzAvv01NdVMFsvNzY3ck05cLnnOvMjRvnr5yo3rN0aPHh2fkEBOGTxkSKfOnU+dOJmflwcAOHXyVF5u3sRJk8iaaLJTiE6nxTAM4ASdTndz90AQFACQ2qmTk5NTTU2NzfqiHaivX7uWlZU169VZ7h7uAAA3d/d+af3Ly8pzs3Oenrmuru7woUP909J69OgBAEBRdPCQITiOX7tyFQCQmZ5x/uy5IUOHdO7SBQCg1+qsVqvJaAIAuLm7MRgMBEF4zs58Pp/H41EoFCcuNzg4BAEIedwIgjh25EhZaem06dP9/f0BAAiKTJw8yc8vYN+ePY2NjWw2u1efPkHBwW6urq/NmxcdHc3lcUePHh0cHNzY2KhSKtvdQLVavWPrNjabPWPmDLLc1MXFZfrMGTKpbO+evWRLLIIgEATp2atncEgwi8UKCQl59733eDzewf0HJBKJXC5vbGiwWR+d2yGhIbNfe82Z5wwAyMvNPX/u3KhRoyOjogAAdAZjyNChcrn8+vXrAAA2m01Wpw4ZNrRT584zZs36acXPY8aN7dO3b/+0AY0NDcXFxWQmDXq90WSaNn0Gk8W6eOFiUWHh7DmzyZuYj49Pn759igqLCgoKUBT18HDz8vZmsVgTJk1KSEh46513fvj5p/j4+MKCAqPJaLFYAAA0Om3mq7NSUlPabUaGoqiPr6+buxuXx5sybVp8fPwnn3363Q8/hEdEuLu7u7jw7XPSaDRvbx/H05gsX3RzcwsIDJy/YEFAQADf1XX8hAl8Pr+mqopce01VtUqlsprNAAAEQV4ZPXrQ4MGgvV6nCII4u7h4O4ykSKFQ3NzcyOpmEovF6tuvb0hICM+Z99r8+bFxcVweb9To0aFhYY2NTUql0vG2wGKx+Hy+C5//6LYQFkreRqA/BdbAvgTlZaX1tXXJqSnpd++RkYpMKsUwrFnQrFQouVwuAL9HDCq1KjMzk0GnV1ZUSMRiAABBEAaDUaPRCJoEAoGgsaFh4qSJPGceAMCFz//wk4+bmhq79+wBHrcVJZ7s143hOOFwzeXm5La2tPTt38+xfVV0TAyLzX6Y9UCj0fB4PIIgAII4NkzhcrkIglgszxsB4elbDHkzfTIdHoIg1sfp2Bex/0MgEBQWFbHZrLzcXHIUEovFYrFYJBKJWCzmu/JpNJpeq8VxnGxoYrFYKBSKfZPJMgwGg4GiFDqdPmnK5EfTMYwgnsje06sGAPTp2zcyKvLmzZtzamujoqIkYnFDff2oMWOes9V/mWPrKCcnJwqFYrVaAAA6rS4zM5PFYlVXVWk0GgAAgiBajVatUTc1NnXt1u3ppMitplAoVBoNADBk6FAAgFarzcjIYDKZVZWVKpUKAIAARKvVqdXqxsammNhYnjNPJpWaTSYAAIHjRqMJAEBGD0/vGR6PFxQcfPnCpaW2JRMmTUxOThkybKh9BuLJRoSOizNZLACAl7f3a/Pnk9PXrl9ns9ncPTxkUml2dnZrSwtAgO1xs/1nJPVEo/6HWVkymSwuId6xLjU2Lo5CoWQ9eDB9xgwGgwHaOfe4BCCeNYqHXqfLSM9gspixcXH2iXw+PzIqqrCwsCC/IDo6htzPT2fvOQiCuHvnDoIgCUmJ9okcDicuLj797r283NzEpKT0e3cZDEZ0dAz5a7+0/j+vXBkeEU6j0ZJTUy5eveLq6kqlUqurqm7dvGk2mzEcw4kXahWO4/jdu3dQBGkVCm/fukVOlMtkZpOpprbGcU7yBpST/VAmldpsmH3m+to6HMMaGuo1Gk36vXtmszk2Lo6M9aNion/4+Sc6ne7n52e1WMl90uYm4JhPjVqdmXnfyckpOvb3hgRubm4RkREXL1woKiwKCQkh4yomk8l83DSFRqOxOGyL2Wx7RseO8rLyqsrKhMQEx3GYw8LCPT08CgvyhUIh2cwXPNk1JCY2Niw8oiA/v6K8PLVTJz9/v6OHj+j1+tHjxiUlJU2YOIHckAcPHmi1WoPRYN8hDfX1OI7X1tSQNzfyRsRgPHprin7cRuKV0aOuXL584dy5wYMH0+j0h1kPPDw9wyPCMZst/e4dKoXS1CSwp6lQqgxGQ21t7aDBg3GcwHGcQqGQEWqfvn3JeUJDw8Si/UuXvD512rRevXtHRkW+9fbb7R918oaAEzQajUxk2PDh5HSybLjtnO09Lzgcjr1pAZPFotPpFquV3CeBQUEoin72yaeTCgoGDx4cHRPz9rvvPOeKIPA/WiOGAQAYDCbrcbttOo3GZrH0eh32uHvEs+4wL34lQnYwqnsJJFKpxWoRCJoOHzz0aBKCpHbq5OXtzWSRfRR+PzW1Wq1KqTSZTGdPn7FfV05OTqNGj/b08szLzcVsGNnkHACAIEiPXj179Pq9+cgfam1txXDc8Y0NAODs7MxkslRKlcFgsEcbjjfov3Px/Kl0FHK5wWAwm00njp+wN5UICg6OiY3hsNmRkZEjR43KzcnJyc5OSEw8feqkyWQcN35cm5HryXLmv5BVLy+vAYMGrf1lze1bt6KionJzcn38/MhyhZfuWbtFo9WoVSqTyXTh/AUWi0X+xGQxR48e4/1H3w9wTEetVqtVKrPZfOHceebjdFhs1ujRYzw9PFgs1qxZs75Z9vX5s+cWvb6kuLAo/d69Pn37pqSktJsym81++913xCLR5YsXL128GBsbO3HypFmzZ/9hedXTB8KFz68or9i1c6dGrfH182MymQiCoMgLVQuQwUdLSwsAoO05zHeh0+lymZxs/U1OfPFzz2AwSCQSJpPp9OTganxXVwLHZVLpi2SvbW4RxGKxSCUSBoPRposDWVwhl8s1Go1EImWymE5cJ/tP02fOIP+Noqi3l/fVK1fu3r3jzHNGUZRKpaIo+oIlx2azWSqRAALcvH49O+shuQcQFB0zbmxIm/4HCAIAEItEOIZXlJUeMhgezYwg/QcMiIyKwjBMKBKiKGrfECaTOWr06EeLv8DVptPpZFIpi8Vycvp9D6Mo6urqimOYTPp7RyLH65cgiOcnLhELjUajs7OLYwNHDofD4XK1Go1GrQHtNUFksVju7u5Wi0UqkXK53Hfff//rL5cdP3b81MlTiUlJU6ZOnTZjOp1OF7a0IgiS/TC7saHRvkOGjxiRmJjkmNrTp1bPnr1i4+Iy0jOqa2piYmKysrIGDBxIoVC0Go1UKsVw/OqVKxwO5/cjMnZsYGCg465sk+aESZPKyspOnzr1yUcfBQQEDBw0aMnS10NCQ5+zZ/7ybRA8fQgc9Orda+GSxVs3/7bix592bNveq2fPRUuWdOnW9a+t6Ik14r+vEYZr/xwY1b0EVCoVx7HU1E4/r1zh2AsVQZCn23hSKCiKIs7Ozt98952vn6/jzCiK5ubkAgSYLea/kxkAQJsSCwzDcAKnMej/+iivVCoVx7CQkJCfV61wfGyTm48gyFfLvvrw/Q+Wf/e9v7+/Xq9f9cuakaNeeYkZGDF8xP49ey+dvzB+/Pjshw9fGTP6pYxR/OIoFAoCEB6P9/lXXzp2PyT3wJ9KByAIj8f7YtlXjnd/ezpjxo1TKJT79+6tqKw0GvTjJ05cuGhhm67WdgRBpKSmHjhy+NLFizevX3+Y9fC7b76Vy+SffP7Zn2qnbLFYNm/atHf37klTpr77wftOTk7ZDx8KW4V/atNoNBrx1DmMYxiO40wW86+1m0YQhEqlYjjepnITw2wAAcxn9Gr6QyiCoFQK/lSyZM0gk8kkWyBgNszSXiFiU1PT55982tLS8vGnn/ZP619TXbNv794X31cIglCoVAqV8tbbb3fu2tVxOoq2ExdSqTQMxwYNHvLO++89sRUoarNaUQQlCMJitrzg2ttmBkUp5B5+cnwKG2YDCPKX9zCFQkNR1Pq4JImEERiOY1QalU5/Zl8WgiAQFCWLe/v173/k+NHz587dvnX7YVbWl59/rtfrX39jKY1Ow3F8yrSpEydNclz2DwNrnjPvlVGjvv3666uXL+M2zGq1durcmVyQSqXS6fQPPvwwPjHBPv8fXt2ubq6r1vwyeuyYy5cuZ6bf27tnT11t7frNm3z+gY9MPh+TyXzv/ffT0tIunD+ffu/e5UuXyssr1m/elJra/gsh9F8D29W9BH6+vmw2p7W1xWKxUB20+/hxdnbx8vZRqVQymbTNzAiC+Af402i0+rp6s/kvBnYhoaF0Ol3Y2up4E5TLZEaDISgo+C8MmvByPL5Fenh4urq5iUQirVb39OYTBHHwwEEul7tuw4Zvvvt29769o/5u1IW0uTtHREX26tWrqqpq65YtKIrGx8f/jcT/ChcXF29vb5VKJZfJn94DfyYdvre3t1KplMvbT6ewsPDq5ctffr3s2+++27xly2dffO7+7E6+hQUFRw8fcXV1nTFz5vZduzZt2RIZFXX9+nWFXP6nti43J2fr5t+io2PeevstspDGarUiFIRCeaGDSL6/h4SGoija2tri+JNEIrFYLCGhoc/qV/58TlxuQECAwaCXSMT2iTiOi0ViBpMZ+uToHi+IIAganR4YGGgymURi0e/TcUIiFlOp1JDQUGdnZx8fH61W29TQtsEfQRD79+69cf36q7NnDx02lMFgWCxmsnruBc8EBoPh7x+g1+tbW1ufOgee2OFk0UhAYACVShU0Cygo6jg/iqI0Ot3H18dqtTY01D+9nS+SGR6P5+fnp9NqpQ4FnzabjRzMJfS5xU7PERAU6OTkJJGIjUajfaJGpVapVN4+Po7fA3W8URiNRplU6sTlhoWHP8x6eO7MGU8vr9fmz9+5Z/ev69b5+PhcvXLFaDSGhITiON7U2Eh90ovcc/qn9fcP8L9y+cqBA/t79uxFtgBjsdl+fn46nU4kEr741a3RaHZs3abRaNIGDPh55Yq9Bw6OnzihuLi4sKDgz+4uciX2db14uS+5FHlOVldVpaSmfvHVV3sPHHjz7beFwtbM9HvPXqz9Nf6llspw+JKXAEZ1L0FkdHRScnJBfmFGeoZ9ok6r3fbbFnL4KxSlALJwBQAOh5M2cIBWqz175qxj4HXqxMmM9PROnTuHhYcVFhRkZPyeVElxycEDBwEZoSCIVvdEDwwKiiIAsZcLdunSOS4urrCwoMmh2fj9+w8AAMOGDSPfXMl7luODlpyCPvfRS26F4/3u6aUeT7GHswiCIEaT0V7u4uvn27NXT0FT07UrV+xL4Ti+d/ee0pISq9Vy88aNqsrKmprqpqamwoLC0pJSoVD4xMYiv2+s43rJx1ib6QaDvs1ArHQ6fcSokQRBHDpwsFPnzg4tt4j7mZnffv111oMHL1I7QN4Bn7Gj0PZ3FIoCABgMRtrANL1ef/bMaccT4MypU7du3nxWgmTRi+PWsVjMtAFpep3+7JkzjumcPnmSbNCTn5uXk5NTU13d1NRYVV1dXFRcW1PjWAD2+DSgAADUKvW+vXvJ/hwIgvTp26df//4ogiCPtwLHcb1O195mPnEjbqhv0Ol0/v7+9qGqNGo1hUL5vZAYQQAA2id7ET06tRCUzEyvXr3CwsJyc3IlkkfVdpgNu595n8PhDBk8xGFnEo475Klz7wlMJnPosGEETty/f99eC9bU0FhcVJScnJKclPx4P7dzFrVh33BytuEjRnDY7Ix79+xHQSqVZD98GBoe1qNHTxqN1rtvHxzHz587p9fryRkIgjhy+HBBfn5DfQOdTreP6KZSqa1Wq+ML4fPzgyDIgIED6HT62TNnDQaDffrd23dOnzwJHj9if785dO0aGhZ6787d4qJi+8wtLS3bfttiMhr79e/P5fGuXL4iaGqy/3r1ypUbN26gFJQsMDMaDQ7rfyJ7Tk5Ow4YNs1qtD+7ft89QV1tXWlLaqXNncsinR498BDhuYLtXtF1UVFT3Hj2qq6rLy3/vS5STnaNUKIcOGUo2rMRxHMdxncP5WVZWVl1d3bdfv8ioSJFQuHvXbpFIBACgUqnDRgzv1qM7udIevXp6+3jfuHZdIBDYly0vLdu9c5fNav19A9sL8kJDQwcOHFRSVFRVWWVvJIOiaNqgQQiCnDlzxvHN/Pq16xfOnwcAoOij8M5xewmCuHjxwtXHt8SQ0JDJUyaz2exntVt4tNOeOjHodDqbzdbr9fYzTSaTGg0GHMft1wUFpbTZ4eTWkVMQBMl6kHXk8BHyJ09Pz+kzZ3h4eDwnzOVyeRaLRaVSk39qNRq1SuV4b7THeW0POvg9DwgCCILQ69u/w7zg5QCRYFT3EvB4vEVLFjtxOd9+883hg4dqamqyHz787ptvhSIhz9lZIpFW19Todbr79x+olCoAwISJE3v36X1g377l331fXFxcWVG5acOGC+fPe3t7e3p6zluwEMOwb7786tTJU7U1tRfOn1+7Zo2LMw8AwHflM5nM7KyH+/fsuXf3bnVVldlsrqioUCgUtTV1BXn5ZCv1d95/H7Nh69aulclkZrP50sVL586cmTJt2sDBgwiC0Gg0FeXler0+++FDkUiEYZhKpSovLzcYDAV5+TKZ7OlghVyqvLzMoDdkZz0UCYU4jms0mkoynayH4sfpVDxKJ08ukxEEweawXfj8ZkHznp077965k5OdTeD43Ndei46OXr923cb1GyrKy0tLSlb+9HN2dra7uwedzpg+Y0ZTU9OMqdMmjhs/ecKEqZMmzZo+/cC+fRiGWSyW8vJyqVTa1Nj44P4D+2MMw7CGxsbGxkaFQpGZnkFO5zhxeM7O1VXV27duu3v7TnFRkb1lbrfuPcLCwgKDgjp16WzfRqPRuHbNmlUrVqz7da3jA/Jpcpnswf37mRmZVqv17p07ly9dEolE9p2m1+nLykq1Wm1hYWF9fT2GYVqttqy0TKvTFReXkAMEjB0/fsDAAcePHvtm2bKC/PzqqurtW7eePnXay6Hgwc5ms9XV1zU1Nsnlssz0DLIHJfnTuPET0gYOOHr4yLdff1OQX1BdVbVty9Yzp8+Q7crTBg5ITEr64rPPJ4wdN3n8+KmTJk2bPOXTjz4WtrYSBCESiaprqjUazYP7D7QaDYvNqq+r+/brZbU1NRaLRSAQlJWWDh46hBwN1c3dDUWRyxcvnT51Kv3uvZbmZqPRWFpSqtfri4uKKisqyd5zAIDAoEAnJ6f09HvXrl0ryC/4bfNmqVSqVqnLy8tNJhMAwNXNjU6n37t799iRI+l379XX15tMpvLyMrVaXV5eXlpSgmFYUHDwO++9J5VKNm7YoFarzWbz8ePHbt+8OXfea917dCcIQqFQVFZU6g36B5n35XI5hmFymayqsspgMOTl5DjuIkfDR46YOGnS2dOnL164aDabZTLZurVrcQJ/9713Xd1ccRxvbWmpra3VqNX3M+9LpdJ2P8xADrGrVmsqKipKikswDOvVq/fcefPu3rl75PBhs9ms1Wq3/LZFLBa//e67ZBOLMWPG9Ovf/9rVq8u+/DI/P7+4qHjlzytyHmb7BwQEh4QYjcYTx4+XlpRevXLl5PFjNputob6+pbnZYrEIhcKammqtWpt1/wHZIeZp/fr3nzBp0t07dz7+4MOsBw/q6+qOHDq8betWDw9Ps9lcXl4hl8sbGxvzcnJtNpuPj8/CxYv1Bv0nH398/uzZ+rq6u3fu/vDd91ablUajdevefcLEiRXl5Z998knGvXtVlVU7d+w8efyEn58/lUp1c3fXaDSH9h+4cePG/YxMjUajUCgqKyv1ev2DzPsKhQIAMHrc2FFjxhw/duzG9etms1ksFq/99Vcmk/n2u+/weDyr1VpbUytsbRUKhVkPsiwWi9Vqra6uFgmFYpGoID+/3Z4uDAbjjbfe8vP3X792bWNjo9lszsvN271z18BBg6ZMn0bOg2E2HMdPHT+Rm51jNpsFTU3r1vzq5+//zrvv0Gg0JotZVFT0/bffNjc3WyyWyorK+rr6YcOHMZnMmJiYufPm1dTUfPju+zdv3Gior7988dKKn39ycnJCKRS5XF5RWaHVah9mZbU0N7epWaZQqYOHDmWx2b369Hbs9Tl48ODRY8ZcuXT5s48/yc3Orq2p3b93397du728vDAMa2xoaGhoUCqVmRnpSoWCfBOg0WhWi3XNqtW3btwkB2rOSM+Ijo5Jbq/S02az1VRXN7e0SCWSjPR0ckAr8icmk5mSkiqVSLdt2VJaWnrl8uX9+/YbDIaa6prtW7cKW4UWi6W8rEypVNXV1hbk59tsNrPZXFZaplKpGuobSktLbTYbnUHfu2fPgX37DQaD2WzOSE/n8/l9+vVr9/QDAKSkpgAA9uzalZOdnZGevnnTJqlUKpfLt/22pbKy0maz1dTUtLa2isWiB5n3zWaz1Wqtrq4RiURSiSQvL4+8dbh7eFCp1OvXrp88fjz93r3GxkaTyUSO0k9eaFarVSKRVFVV6fX6zPuZ6sdBJPS0Z5Y3QH9W9sOH27duq6urpdPpLnz+gAEDX50z22gwrl+7tqGhgSBwggC9eveeNftVGo0mEYt/27T5/v37gCDYHE5CYsJr8+YFBgUB8r3t/IW9e/bI5XInJ6fQ0NBpM2Z06doFAGC1WjesW3fuzFmAIAEBAbPnzEZQ9PjRY2TXJ2dn58VLlkRGRwEAcrJzdu7YgeM4h81WKBT90vpPnTaNyWRaLJZtW7YWFhTgOIYTRFxc/LQZ048cOlRWVkbgOE4QqamdXps/r01/covFsm3r1sL8R0slJSXPnDXr6OHD+fn55JSE+IQp06cdPniovKyMIHCCIFI7dX5t3jwWm3X1ypV1a37VaLUeHh5pAwcsXLiQzmDU1tRs+e23gvwCKoXC5XK7dO362oL5rq6uGo3m2pUrd+/epVKpTk5OZrNZrVLn5eZqtdot27fR6fQD+/brDXoEIFQarUePHrPnzgEA1NXVbd+6VSwSIwhAUcq4CeOHjxgBCHD48KFdO3aaTCZvL+/R48ZMmTKF+rjB9XfffuvMc3nrnbfs24hh2KYNG0+dODFh0qRFSxY/qwGizWbbvnVrYUEh+QQiCJxCoSYkJCx+fQmNTsdxfN+ePRnpGTiOEQQICAxcuGjRuXNnc7NzyCnh4eFvvPUWl8eVyWTbt269c+s2AQCHw46NjXtt/rx2G0dXVVbu2L5dJpWRL9NR0VFLli6110LKpNJtW7fdvf04nbj4efPnBYeEEASRn5d37uxZqVTGd3EhCEKn09XX1+fl5s6ZO+ed99/f8ttvdTW1BCAQgKQNSOvZq9fxo8d0Ol2ToMnD3UOv18fHx786dw7ZW0KpVP78w4+Z6RlMNis8ImLe/Hm1NbU3rl/HMBuCoAwmc8q0qX369CF3484dO44dPkKeopOnTMZxfMO69RiOT54y+bX58/V6/S+rVt+4fp1CoYSEhMxbMF8ul184d55sOOXl5bVk6VKy7OrunTv79u4lxzhQq9TDhg8bP2kSlULRarVbN/9WUVFBtr7u3LnL6LFj9u7eXVdbhxM4AkDPXo+usqd3ptFoOrBv3727d9093A0GA41KmzPvtdTUVACATCbbvHFTY0MDAASKUnx9fRcuWezr69smhXNnzly8cMFqteE47unpuWjJ4pDQUAyzHTt89OLFi+7ubmazhSCI6bNm9u7d276USCja8ttvmRkZCIK4ubn17NVrxqyZLi4uzYLmlT//XFhYyOVyk5KTpk6bdubU6atXroSEhs54dVZOdnZddS0BcACQ3n36zJ47p91aLYPesGfXrosXLlisVhaLFRoaOvu1uUlJSTev3zh54oTRaEQQwHFyWrxkSUxsLADg2tWre3btFovFTAbDzd19zNixY8ePI1PW6/R79uy+eP6CxWLhu7gkJCW+OmcO2cy/pLj4x+U/NDY2urq6du7SefqMGadPnaoorwCAAADp2avnq3PmUKlUvV6/b8+e+5n33T3c9To9i8Wct2ABOeZLQX7+3t171Go1giA0Gm3mq7NodPqBvfv0eh0ACIPBmDtvXmeHFy1HtbW1W3/7TSaTufJdpVJpUnLS3HnzXFxcyF/X/vJLQ2NTaGhoUVGhi7OzXK5wd3dfvPR1stq3qLDw4oWLGrVaLBa5ubnr9bqu3bpNmzGDLKfHcfz40WNHjxzRaDRMJtPX13fy1CkDBg40GY2bNm4sLysnCBxBUDc3t7nzXmszTrhOp9u8cdOw4cMSEhMdp2s1mp3bt1+7es1ms7HYrIjIyNlz58bFxbW0tGxav0EsFgNAIAgaFh62cPEiV1c3s9m8c/t2jVpTVVXF5XERgLDYrAWLFrXt8gIAAKCivHz7tm1KpRIBgEKlxsTELH79dXt/spbmllUrVuTl5fF43C5du70yetT5s+cMBoOvn++oUaOampqOHjpstlgIAnd2cZk3f0GzQHD61Cny6nP3cF+0eHFhQUF1dU19XR2FSmExWVabdebMWc/pLaHT6TasX3/10mU6gxEbGzt52tSch9mNjY0eHu6DBw9hMhk7tu9QqpSAAHQ6fcq0qc7Oznt27SYHg2SymDNmzuzZq5dBr//5p59u37xFZzCCg4PnLZgvlckunDtns9oIgvD29p48deqlixdqqmvI8613nz6vzpn9P24S/X8FjOpesubmZrPJ5OnlxeX+8SdT5XK5UqHg8nhPF9KYzWZhayuNRvP182tzK29pabGYLT4+Po872D6TQCCwmM0+vr7/7qg/crlcpVS6PjmOEQBALBJptTpX10efkrTZbD8uX37q5Kk169b2c3g1vHTh4tLFi995//233nlmV/9nkUgkWq3Ww8PDsUGhRqP5+cefZs+dE/nkN4UwDJNKJB6env+zEn6FQq5QKJ2cnP6w9+sfpCOXK5RPpJN+L/29d94eNmzY5199Ze8xKpPJ5sx61WqxHDt18lktLKVSqVKhcHN3d3Nzc5xus9lampsRFPXz8/vD/SMWi/V6vbe3N3niScRio9Hk4+tjf462tLRgNszXz/c534Eg5xQImjAb5ufv//zvuf0pWp1OLBSSTaBeVpoAAKPB2NraQqfTAwID251BKpVqNBp3d3fHAVlsmK1F0EyhUsm+2Dabrbm5mc1ie3p5tpvIs2g0GqlEymAyXqRPt81qbWlpwXHcx9e3TQdzAIBGrZZKZTxnXpuvreh0OrFI7OTk5OXdTqFym8yIRSInJyefp8Liv0MoFOp1Og8PD+fH8RyptraWx+V5eHrodFqRUMRmcxw7otmJhEKNVuvl5fX018ZMJpOwVYiiiJ+//8vqUqZWq2VSKZPFevHTTK/XC1tbmSzW3+mYj9lszc3NKIViH/PlL7Barc0CAflu9iI7pKWlxWqx+L/YzO3Ccby5uZkgcF8fX9pzbwvQ88GoDvqvUKlUE8eOYzAZJ8+ccXyEZz98OGvGzGXLlk17PB7EX9Pa2oqiqLe394H9+xVyxZtvv/XHy/yf9cuq1Zs2bNiyfdvAQYPsE81m8+yZswAAu/ftffpZDkEQBP1fBwswof8KNpsdlxBfW1N75tQpk8mE2WxWq1UgEOzcviMxKTFt4IC/k7hUKn3v7bfnz31t7+7deTm5Y8aNfUm5/o+Kio6i0Wgnjh8XtrbabDabzWY0GI4dOdLU2Djz1VkwpIMgCOqQYFkd9B/S2tq6dfNveXl53j7e3t7eNptNJpWGhoXNnTev3Z4EL06tUn31xZfp9+5Fx0R/8PHHzxqMt8PAbNjJE8ePHz2GUiiBQYFMJlMhV6AoOnHy5D59+/zbuYMgCIL+ETCqg/5zpFKpRCKxmM0MBsPHx4fv6vpSktXr9c2CZi9vL5cnG+V0YGaTSSAQ6HQ6BEX5fH7gM9p7QRAEQR0DjOogCIIgCII6AtiuDoIgCIIgqCOAUR0EQRAEQVBHAKM6CIIgCIKgjgBGdRAEQRAEQR0BjOogCIIgCII6AhjVQRAEQRAEdQQv54N3EPSXmUwmkVCk1WrUajWTyUpOTqK29132dhmNRmFrq0ajUas14eFhfn/j44n/cTiOFxYUsDmcqKio/8HqLBZLfl6el5dXcEiI0WgkP6CpVChCQkODgoLIr3xqNFqtVpOYlOT6kgYU/FN58/bxCQoKeumJ19XWyeWy5JQU2gufhH+fzWYTtraq1WqFQunh6RETE/M/W/XfQRCERCJRKhQqlYogiNROncgP/Wm12qKiooiICE/PP/cp2xdEph8ZGdnmM7X/IpFIVFJUxGAyU1JTnZyc/u3sAAzDxCKRUqlUKVVsDjspORlFYQnO/y9gVPcfhWFYU2OjyWSiUCgEAAw6PSAw8Omvqmu1WmFrKwAAJwgCx/0DArhc7r+R37+usrxi186dhQUFTU1NvXr32bh5I/eFH6iFBYU7t2/Pyc42mkzfL/9+wqRJfz8/FoulqbHRZrMhKEqjUgMCA+0PeIIgmpubtRoN+QVrDMdpVKqXt7dQKMQwjIKiBACYzUaOAIkAQKFQAAK4XJ7vU984r6+ra2pqUigUHA4nMCgoPDxcqVSyWSzOMx4JN2/ceP/d91ycnXfs3hUeEfH3N/P5Tp869fnHn8TFx+/at7eutnbDuvXFRUVKpfKrr5fNnjv3xvXrB/btr6ysAATYumN7j549/+n8ODpx7NgXn32enJy8decONze3l5hyc7Ng6eLFjY2NP/788//ym3Ktra0b163PzMxsbWl5dc7sZd988z9b9d9hNpv37dl77cqV+vr6iMiIvQcOMBgMHMc3bdy4ecPGV0aNWr3mF8bL/jYdjuMb1q/fsmnz6LFjVv2ymk5n/PEy/yQMw06fOnXn1u3m5ubcnJzZc+cs++abp2/U/2Nymey3TZvv3L7dLBAMHDxow+bNdDr9380S9D8Do7r/KKvFeuXy5XNnzsrkMgIn+Hz+mnVrY+Pi2sx2/uy5NatXoxTUyYmb2il10eLF/+eiuqSU5F/Xrzt39uxH739gtZqfP7NSqZSIxd4+Ps7OzgCA7j26p3ZK/ej990+fOo3j+EvJj9FoPHzw0LVrV01GE5VGe+PNN6fNmE7+RBBEZnrG0SOHW5pbCAD4fP6gwYMmTJx05NChO7fvaLVaNosZHRPLZDEJgjDoDbU1NUqlYvjIV5b/+IM9/daW1i2bN2dkpPv6+gYFBctkspqamrCwMLVa9dbb7/To1X6ERKfTEQRhsdl0xkt+jJmMpuZmAcfJydvbG0EQciKNRgMIwnbiIAjSqXPnTVt++/qrZXt378YwHAAwbvz4Xj17vb5kSUF+/v9+GHManY4gCMeJQ6O+5OI0CoVKpdGoVCrHifNyU27DYDC0NDdzeTwvb28EgMDAwJ9Xrdy2ZcvXXy3DMOwfXfVLxGQyP/jow169ei1ZvNhisdin02k0FEWdnJzQvx3caNRqoVDo7uHhGL7TaTQUQZ2cnFD0Xw6eAAD37t5ds2r16rW/cp2cvv5qmbu7h/0i+hd5enl9u/z740ePffzhh1ar9d/ODvS/RUD/VWazOS83d2C//omxcYG+fmtWrcZx/IkZTKYlCxeFBAQG+vqt/WWNwWDAMezfyu3fVFtb261zlykTJ2rU6ufMtmfX7ujwiCMHDzlOXPfrryGBQUePHHkpOcFx3GAw3Lt3r2/PXt7uHl07dc7JzrH/arFYxCLR4gULOyWnZGdnm4xGHMeNBuOF8+ejwyO6dupUVlpq0Ov1er1Wq7165UpCdOyiBQvsi1dVVb0yfESn5OQL586ZzWaCIGw2262bN7ukpAb7B9y8cfM5uaqvqxMKhS9lGx3l5+V169zlg/fes5gt9olWq7W6qkouk9mn7Nm129fTa+f27fYpH7z7bnhQcEZ6+kvP0vNZrdbqqkq5XP5PJC4Siepqa7F/+Dp6cP9Bp6TkLz/73Gaz2SfeunkzJCDwy88//0dX/dIp5IqB/fsP7J8me3y2mIzGyooKrVb79xM/e/p0TETkb5s2OU40vrz0/yabzbbgtXn9evWWSaUEQZjNZscD+q8rKy1Njk+YPXMWeauB/j8By+peJp1OV15WptFovLy8IiIjGU8Wq+A4/nR5Eoqiz2rxQKfTk5KTUzt3MhmNt2/dvn379szZr7q7u9tnKC8r1+l0KSkp+fn5Pn6+LBbrpW/R/8wLvt7iOK7T6drsxpdVSvcoJwjCYrF69+49eMgQpVIpFolWrVixfuMGdw8PAACNRvP08uqf1l+r0yYkJJCHmMlihoSEcLlcCoXCZrNZbDaZ1OAhQ+bOf622tpb8U6vVrvzxp6LCwhWrVo545RVyIoVC6Z+WtnjJkp9+/BHHn1lOgyBIcEjIS9xMx5T1er3FbHFsSUalUtvU8z69k4l/6WODVCo1PCLyH0rcy8vrH0rZEYIAvV5vtVodq+pe7mn8P0NGwI4FVAwmM/Iltf7ECUKn09lsNseJzJeX/t+k1Wirq6t5zs5sDgcA8F+r5Xwp5b4EQTydDoIgz69lNplM5WVlMpmM7+oaExPD4bRf+N3U2FhbW4sgSHh4uH9AQLvzSKXSyooKs9kcEBAQHhEBGwj+IRjVvRxWq/XYkaNnz5zx8vJisVilpSUETixZunTo8GGP2mBh2DfLvr54/jz5JyAfigjy/kcfTp48+VnJEgSBopTklFSFQvng/v2cnJxhw4bZf71182ZySnJNdfXT8SKGYWWlZSKRkEql+vv7R0RGArJRtlBos9lQBMUwmwuf7+rqajAYhK2tCILiOO7m7sbn819wk2tqapoaGnEC9/LyioqJoT+OCciyLr1Oz+VxGQxGRXm5TCbjcrkxsbFt4k6T0VheXi6Vyrhcpz+MEIwmo0QklslkFApFKpXW19ejCOLt42MPnSkUCobhpSUlSqXC2cUlNiamTWWlVCKtqCg3mUyenp4xsbF/eAvmOfNGjxkjEAiuX7u2Yd36L5Z9ZT92Tlwuj8dzfJKRxajAIdYxmUwmk2n6zJl1tbXkY+/6tWs3btzo3KXLEIeDSBo6YvihQ4fM5vYroEVCkVQqNZtNKIrGxcfbN7murq6uro5Kofj4+FisltDQsGfdPQEARqOxpLhYqVTy+Xwuj0un0YNDQkQikUAgAADo9fqqqioqjerq6qrX6eVyuclsYjIYcfHxf7mRkFqtbmluNhqNAIDEpCS5XF5bU+Pl7R0eHk7OoNFoykrLNBo1n8+PiY11cnIymUxCoZDcsTiGu3u483g8pUIpl8tQCgXHcRzDzGaL0WhgsVixcXGOeaurrauvr0MQJCgoKCw8HAAgEomMBgOKUjAc43A4T0dsOp1OIpGgCEoAgoKier3BaDJaLZbwiAiyys9iseh1eqvV6unlqZDLq6qqrFarv79/SGioYzpKpbKivFyr1bq5ubm5uROAIHDC2cX56WZ/NswmFoqam5sRBNFqtTU1NSiKeri7c3k8cgZy22tqalpbWhhMZnR0NNnYwA6zYWVlpSKhiMliRkRGent7P/8o2Gy28rIyoVBIp9P9/f3twbpcLhcKhSajEUUp8YnxwlZhY0MDk8GMiIzgu7oCAEwmU2Njg9FgNBpNUdFRVAqlrKzMarUGBAYGBwe3uy4cxxvqG3RardFodHVzDY+IcLxGamtqGhubAEGEhIWGOLyi6HS6stJSpVLJ4TiFhoWSjVDNZrNYJBaLxRQKRalQ1tfVIyji5uYmk0o1Gq3RaHRzdwsPD7enb7VaKyoqxCIRhUIJDglxTB+zYXqD3mAwuLq6EgRBnnJubm7R0TFU2h8/ASVicXV1jcGgd3Zxjo6O4fF45JaSe0yv07HZrNqaWg6H4+nl2e4FaLVaDXq9yWx2d3c3Go3l5eVGvcHTyzMqOrpNda1AIKitqbHZbH5+ftExMY6/ajWa0tJStVrt5MQNCwvz9vEGABAEIWwVyuQyo8HI57tEREZWVlQoFIqo6Ognzj0EUSqVSqWSglJwAqdSKD6+vhQKRSgUGgwGBEFoNJqfn1+7V/r5c+d+XP4DZrM57uoBgwb9+PNP9vuhI5vNdvb0mR3btzs78wIDg5qbm2VS6dx588ZNGO94y62prl63dm1leUVcfDyO46UlJcmpqW+9/VZAYKB9Hplctm3zb9ev3YiKjnTicstKSt093N96553UTp3+8Kj9/wxGdS/H8WPHfvj++8+//JJsg1VZUfnm0qUfffABi80eMHAAIG+R9fVMFsvFxQUA++MfYTH/oIANwzB3d7d+aWm3bt68cfXakCFDyJcVmVRWXl62cPHi2praNouIxeINa9fLFbLw8IiiwsKqysoFixbNnjvHYrbs37fv6qXLBAB+vr4Llyzp17+fXCb7ZdXqoqIiDw/3jz/9tFv37n+4sUajcfu2bfl5eTExsa0tLZkZmSNeGfneB+9zuVytVrtuza+FRUV6nW7S5MkyqfT69Wt1dfUEjs+aPfuDjz5kPy7HqigvX7lihUat7tS5s0GvL8gvlEmlYWFhz1ppbXXtTz/80CwQUCiUU6dO3r1zh+3E+fKrr8inFAVFha2tK3788ebNGw31DRQKZd6C+e++/779vnPl8pXdO3cGBQXxnHn3MzOjY2I+/vRTx4LPdve8t4/PpClTysvKDh08mJyaMnbcOPInKoVCQSntNqCxv0qm37tXWVG59M03yGDCarXeunHTaDSmpKa4uLi0WcrLy6tP3z7Pip9ycnK2bfmttLQ0ICBw/8GDfv5+AIATx46fOHE8Pj4ex/Dsh9kKhWzbrl3R0dHtpiCVSn5a/qPRZIyIiGxsaMjISB80aPBnX37x6y+/FBUUmk2mwsLCzz/5BCeIV+fMtlgs27duraqsSk5JOXDoIPvZkeLzNTY0/rJqVWZGhqen5/xFCzPT02/fuh0aFrZt546AgID83Lx1a9dyeVx//4CHWVnOzs6ff/kFl8v99ZdfCvMLAILExEQvfn1pUnJSTU31xvXrq6uqIyIjI6Oi7t25U1FR0blL570H9rNYbACAxWLZtnXr3Tt3EhMTdTpdbk7uhEmTFixccPvmrT27dhkMBjcPj+kzpk+cNAkAkJuTc+P69QWLFvH5fJlU+tumzVkPHvj5+g0ZNuThw4d3bt3GCXzdhg2DhwzJepC1Y9s2sVjs7u4+dvz4s6dPl5aUtLS0BAYGfvfD8v5paY+OTnb2yp9+duI6RUVHZz14IJVIXd3cKCg6asyYOa/NbbNP1Cr1qhUry0pKbDZbdnb2px99jOPY4tdfHzxkCAAAQVGDwbhzx47TJ0/W1dbp9fphI4Z/v3y52+MTVSIR/7JytVAojE9IqKutFQia3nn33UFDhjzrEIhEol/XrNHrdCGhoYX5BVWVlUuWvv7qnDkAgOqqqvVr12U/fOjp6Tl+4sTamur6uvrGxsbomJhPP/+sc5cuKpVqz87dVy5dVmvUs1591WQy1tbUVlZWcnm8hYsXzZw1q02pCYIgZNeBUydONDU1Tpw8ecWqVeQpbTQaN23YeD8jIyk5xWIx/7rml2nTZ0ydPg1BkMLCwo3r17u6urm5ud69c9dsMn319de9+/YRCAQ/Lv+hvrYWRdGrV68WFhYymcxFSxbn5eYdPXKkqbFx6vRpP61YQV6DLc0tq1aubBEIUjt10uv1BQUFgwYPXrh4EYvFamlpWf/r2pqaGqvVOmv2q4UFhRnp6Q319RwOZ+mbby5cvOj5ZT/nz57buWOHf4B/UFBQaUmJ2Wx9+523u3bvZjAYflm1qrKyUqvVms3mZV9+SUEpb7//Tq9evdukUFVVtf7Xtc3NzSwmc/LUKXfv3MnNyW1qanJ1df3ks88mTXn0So/j+JFDh06dPBUbG0sAIutBVtrAAW+8+SYZJubk5GzZvNnTw8PZxeX2rdsEji/77tvu3bsDAtzPzNy8aVNdTU3/AQO69+h+/ty5goKCV1+d/e3y78mdgwBAQdHSkpI1q3+RSaUMJnPIkCGLl77O4XBuXLt+cP9+rU43dty4N956s937T1Njk8Vidnx5sFptPGfes/bYsSNHvvryy6FDh333w/d8vqtarf7+m28//+wzvV7/2vx55DwCgeCdt94Wtrau27C+V58+AIBr16699/bbjQ0NGzZvIrtO6/X6b7746tKlS99+993UmTNQBCkvL3tjyetvvr70t+3bEhISnnPU/n/3L9X8digajWbKxEkBPr5nz56xT/zum2+8XN0//ugj8k+hUDhz6rQH9x8YnmS1Wp+Tss1m++C990+fOlVbU5OamNS9c5fa2lryp7Onz3z2ySd6nW7h/AVBfv6HDz1qaobj+DfLvvb39jl08CBBEEqlcsLYcakJiSUlJQRBaDWar7740tfT87uvv7ZYLARBYBhWVlI6fuzYO3duPz8zdocOHgz09Vv2xZfk4h9/+GGwf8CF8+fJPxsbGl6bPcfb3WP0yJFnz5xRKhSlJSXDBg+OCAm9e/sOmUJ9Xd3wIUMGpQ2orq4mCAKz2XZs2x4aEDh98pRntauzWCwKhWLVipUBPr6/bd4sl8sVCgWZ4bVr1gT7B0waP/7yxUtKpTI3J6dPj54JMbH5+fnkspnpGamJSb+uWUPWFl2+dCk6POKbZV8/f3t/WbXql1WrCYI4uH9/WHBIr+49igqLyJ8uX7z4xpLXyR1IKiku7pyc0r1Ll9KSEr1OLxAI5s2d+8njo08QhFQiHTJgYJCf/55du9tdndlsdkzQkdViKcjP6965S/8+fZqbmwmCqKqs6tG128H9B8gZ7ty6PXTgoILH2/u0lT+vGD54iEgkIgjCoDd88uFHb76+FMMwtUp15dLl2MiohfPmi0QiuVxuNBotFsvt27djIiLHjR6j1+nIFHbt2NmmXd3777zz/HZ1Nputpro6rW+/yNCw77/9Nj8/v1+v3jGRUWWlpfX19Wl9+r7/zrtGo5EgiJKi4s7JKfPnvqbTaqUSyeyZs3w9vQ4eOEC2UrLZbLdv3hw1YmRZaanRaLx5/UZUWPik8eMNBj1BEGSny5TEpFs3b5Hr/WH58qiw8HNnz5pMpr27dwf6+i14bZ5WoyEIAsOwr774MiQg8MqlywRB4BhWWlLyyvAR6ffumc1mqVT66owZEaGh165eJQhCr9dfunAxMTYuIiT04w8/KioqUqvUO7ZtD/Lzmzl1msFgIAhCIpGMHDa8T89eAkETQRAZ6enR4RFvvfGmRCzR6/VP7xMMw1Qq1dkzZ6LCwt9a+oZUIpHL5SaTiSCIG9evh4eEpvXtt3f3HolEImhqenXGTF9PL/JCJgjCaDS+vnjx0EGDGhoaCILQqDXTp0zp2bVbRXlFu/sfx/EvP//cx8PzxPHjBEFIpdIxr4zqkpJaUVFB7tXKysq0Pv2iwyO2bN6iVCr1ev25M2fjo2MG9O1XVVmF47her3/3rbd9Pb3eXPpGQ329Xq+vrKgYN2p0SGDg8aPHyLVIJdIB/frZ29UZjca9u3cH+fu//9675OGzWCzff/ddUlw8uc+lEmnfnr07J6fU1zfodfrxY8bGRkaVlZYRBFGQn58UFz9lwkStRmO1WpUK5fat2wJ8fH9a/gN5vZvNZpPJtHvnziA//48+/IC8nMViybTJk/v17lNeXk5m6cD+/eHBIT8uX261WC0WS3lZ2SvDhvt6es2aPuPmjRsqpTIjPb1LamqnpOTqyqpnnb0EQZw5fTomIvL7b761WiwEQcjl8mmTJndJ7ZSfl4/juEqlKioo6Jra6ZXhw5saG+VyebvN10wm0/3MzL49ewX5+S+av+BhVpZKpTp7+kxMROTQgYOEra3kbMePHkuKiz/2eK/u3LEzLDh4x7ZtBEEoFIqRw4YnxsbV1tQQBPEwKys+OvrV6TPIa9NisZw8fjw8OKRX9x6nTpw4eeKkn5f3tMlTLBZLSUmJvV2dxWLJepCVmpjUrVMnsnqHIAiz2fzdN99+9MEHz2qkiOP4V59/se7XX9s8tp7VUK+muqZ3j57dO3W2HwuCIJoaG3t27dY5JbWqspI88b79+ms/L+81q39xXPabZV/7eHiu+eUXMm9HjxwJ9PVbNH+B41366OHDgT6+SxYuMhmNzzlw/5+DVdQvAY1Gc/dw53G5TMbv3fipVBqCImaTifxTo9bgBOHr58t6UruF2G1gGBYcEtKte7eWlpa7t24DAKxWa2ZGRt/+/Vlsdpu6V4IgcBx34jrxuFwAgIuLS0JiglKpbG4SAACcuNzJUyf7+vllP8xWqVQAABRFW1qaU1JSevfu8yKZAQDgGMZkschqGhRFO3fpYrVa62pqyT8Dg4L69utHpVIHDBw4avRoFz4/Ni5u0OAhBoOhvr6ezOHhg4dKS0qnz5xBVsahFErffn3dPT2xZzcso9FofD6fLOrjcDiurq58Pp/MMEEQBADDR4wcOnyYi4tLaqdOAwYN0ul0jfX1AACz2bx7104OhzNt2jTyvbxX794hoaE3rl8XCoV/sKkEAQAYP3HihIkTa6qrf1m1SqPRPGtelEJRKpTLv/v+7TffXDx/wZVLl2m032scdDqtVqejUqnPGs6KTqc/a4w0Ko0WFBTs6uZqr6duaKiXiMUY9qi9Ud/+/caOH/esoj4cw8tLSy1WK9k+icVmzZ47JzomBhCA5+zs7OKCIAiDwXBzc3N1dWUymTQaLSQkhPdkxd9fQKFQvLy9PTw8uDze5KlTk5OTP/7002++/TYsPPzwwYNCkWjOa3OZTCYAIC4hPiU1NSMjo7q62t3DY9qM6Qw6I+NeOkEQZDoNDQ1Dhw6NiY1lMpnBoSE8nrN9Vwiamg7s29+zV8/+af3JKYOHDEZR9Mrly1QqddjwEeHh4ZWVFWq1GgAgkUiKigptmO327Vvk4DVikTg+Pr5b9+50Ot3d3T0wMAh53MiTzWb36tM7PDzcxcVl7muvJSQk8Jx5o0aPCgsPb2pqUsjlAICaquqa6uromGhPTy8AQFRUdHBIcHFREUHg9mJpRyiKOjs7k5WqTCbTzd3d1dXVXqWO2WzJKcmzZr/q4eHhHxAwdvw4CorWVFWTv6bfu3frxs2JkyaRA/VxedyBgwa3trbeu3vnWYcAwzAej8fl8gAA7u7uiYmJKpVK0NRE7lUfHx93D3e+K3/4yOEuLi5sNvuV0aOmTptWWVl54sRxgiDYbHZIaCiKogMHDQwKDmaz2ZFRUW+98w6VQtm/b59SqXx6jUwmMyw8nMlggscHqKio6PCBg126dBk4eBAAQKvVWq0Wo9FoNOgJQBAEwXd1ZbKYAICIyMjQsDCBQCCXK6hUqgvfhbxY2Gw2eb3T6XQGgxEWHs5gMOzpXzx//u6du+MnTLAXVI8YOTI+IeHIocMlJcU0Gi06JqZr924UCmXsuHFpAwY4u7j07NWrZ89ecrlc0Cx41q5Tq9Q7tm7jOHFmzJpJjqDp6uo6feZMsUi0b88eDMOcnZ35rq4oilKpVFc3N1dX13YbdTAYjM5duyYkJrJYrOkzZnTp2tXZ2Xng4IEpqalCkZC8BanV6t07d4aHh497PJ7OoEGDXJxdLl26ZDQaEQAQBLi6uZJNSqKio4OCQxobG8n9T6PRgoKDGQxGTEzMmHHj0tL6L//xxzfffotGoxEOjwYajda1W9chw4YKhaL8/PzHjRwwnVY7bfr0Z92UrFarSqXy8/Nr89h6VvOVh1lZjfX1sfHxjjXg/v7+iUlJwtbWjPQMAIBYJE6/d8/Z2blL1y6Oy3bv0Z3NYt27c1ej0Vit1lvXb+A43qNnT8enUlJyso+vb25OTl1d3bMOHARrYF8CJpP5w08/aTUaezG1yWSqqqxEUTQpKZmcolQq6HSam5ub0WjUajRcZ2fWC4/kRBAEiqKDhw67fOnKtatXJ0+bWl9Xp9fre/bo0aYdMQAARdEPPvpw0eJFPr6+ep2uuKi4qrIKIIi9xWtUVHTvPn3OnDqddf/BK6NH2Wy2Bw+yevXp8+KtUCdMmtS3f38/Pz+bzVZWWprzMBsAYMN+zwlBEAiCODu72KfweFwEQaxWCwBAqVTeuX3b2dk5JSXFMdkXGRGAeLLtmuNWO1YKcJ2cAAAWqxUAIGhqKioq5nG5eXm5bBYHAGA2m61Wq0QslojFAc9oouuIwWC88+475WVl169d27p583sffoi0t69wDHN2cX7v/ff8AwMFTU3fLHtylAoEQQAgCMJxR7047HG7PZKvry+Px1vx88/1dfVDhg2LT4hf/Prrz2puj1LQ8MiIK1euLF28ZOr0aV27do2OiYmMiiKPOLkU+TLw+7bgOHgZnSHI124qlUqOQjJ85AgAgEatyczIZLNZlZWVCrkCAAAQoNfr1SqloKkpOSWla7duSSnJGenppSUlScnJSqWyqLBo0ZLFv+cN2McEBLk5OSKhECQn371zh5zc2NRINvDSaDQenh7dunc/uP9AYWGhn79/TnZ2Qnw8giB3bt9pFjQHhwTn5eWmdEolnxzttk8lAGAwGPZqaCqVyuFw5HI5eenxnHlMFlOv05HHGsNsZpP5D0f0cNznbWJxHu/305jD4VCoVIvVAh6PqmM2m9Uq9aMtRUBrS4vFYqmrrSMIHEHanpMIgnz62edL33zT19dXp9MVFORXVlUiCGK/adgbgzqeqN179ty7Z8/DB1l6vZ7L5ZJZddwtsfFxYWHhNdXV1VVVXbt1e9bW2d3PyJDL5XEJCeSWBgQGfPX11yaTKSw8nE6nb92xHUEQNzc3iVh8/36mVCIhdyO5bLvXe5sT9e6dO3Q6PSHx9yo5Ho8XGxebm5OTl5ubTN5kCPIW8fuLCpfHJQjCcUCWNspKSysrK1NSU728fq98DI8Id3d3L8jPF4vFfn5+9pw8v6cLOTQBnU534j4KnhAEdXJywjGcHHakrLS0pqYmtVPqvXv3UAQFAChVSoIgBE1NCoXcz89/5549FArF1dVVJBJm3MuQy2QMBgN7cu1MJhMnCBc+f/bcOc/KyYiRI0+dPHX+3LkRI0ey2ey8vHwmi/n0gFl2RqNRr9P7+PoSBCGTyeh0muNd/Wm1tbVWm83H18expyCCov4BARiGVVdXAwCkUolIJHZxcWkziLSXlxeXxxMKW+UyGcbnNwkELBaLbD5o58Lne3h4VFRUNDU1xcTGPicn/z+DUd3LwePx7Ldjm822bcuWzPSMCZMmjh4zhpyoVCqtVtvO7Tuys7LkCgWXyx0waODkyZOdn2pi9Sxdu3YNDw8vKCgoLiwqKipKSEzk8njt3pWcnJx0Wu3mjRubmpoCA4OoVAqKoAj6KGaiUqkjRo48c/L0xQsXRr7ySmNDg16vT01NeTqdZ2EwGHwX/qEDB4uLirx9vIlHPXnbPskc73SO92W1SiWXyzgczvNvEH/Ws1Ynl8mNBoPNaj16+Kj9CRocHBwbG8vlPbN1SBs+vr4ffPTh22+8uXPnrs5dujyrUJNCoXh4enp5eXl5eU2dNp28i5G4XC7P2bmpqUkilvzpbXtKdEzM2++9u2b16vXr1u3Zvbtbt25z5s0bPGTws+Z/dc6cqsrKG9dv3M/MDAkNGT5ixIKFC339/P5+Tl6Q4xFRqZRqtdpkNJ45dZrJZJI/cTickaNGe3h4AgD4fP6w4cN/XL78+tVrScnJ2VkPPT09nx57mTyhxWIxjmMVFRX79+57tBYE6d2nT0hICI1KBQD06df34IED9zMyhg0fnpuTM2zECL+AgOXffpf9MMvD00MgEIwbP/4PM28v9iCIJ2KMiMjIiZMmnT516t7du3379bt86ZKgWfDGm2+5/9XPHjzrNLZYLBKJBMfxjIyMqqqqR7MhyLDhw6Njn/ktCieuk0aj3rRhg0Ag8PcPYNDpCII8//3N09OTzWYrFPJnRTxsNtvdw6OqqkqlVL3IFrW0tCAIYm9LSqVSh40Ybv/V3d29uLh4629bjEajp6cnncEwm0wv+IZJdt+WSqUMBoMsjyShKMrn88lAxHH+Z+3bdolEIpPJ5OLi4tijgsPhOHG5Wq1Wo1b7/cnLp82Lk2MGxCKR1WoVCAQH9u23T0zt1MnNzY0cZtnDw6Mgv2Dzxk1Wi8XNw53OoCMIgj75GvyHWwQASEpOTk1Nyc3OKS4q7ta92/3MjJ69ej2n35herzeajVlZWYcPHmyob0BQJCk5ZcbMGc/qg0z2vaA/VefAYNABACaTEQBgMpttNhuVSm1TNUGl0ihUKllpbrNYzWYziqL0tvNQaXSazWYzPa4Eg54Go7qX7OHDh/v37G1pafny62UTJ0+yv7JIROKKiorIqKgp06cZjYbjR49/9/U3OdnZP69c+XTb+Xb5+fv17d/3t02b9+/fR0Epr7+xtN3ZCII4eeLELytXderc+Z333gsNC5Ur5PfupTsWCXTt1i0pOSkjI6O8vCwnJychMeFPBVgPHz5c9sUXTk7cTz77NDkl5dzZcwf376dQXrSojwwBCYIgwEsoDfpDFBoVx/HgkJAVq1fZuxOS5YJ/qndn3379Fi99ffm33638ecXIV0Y+s7rz8Y170ODBSclJAACVStXY0BATE5OQmFCQn1+Qn28wGJ6unrPZbEaj0cnJ6UXKLFEUnT1nTvcePc6ePp2Rnp5+L724uPiXX38d1G5gRxB+fn6bt269eePG5UuXsh5kbd64saG+Yd2G9S8e175EFAoFRYCLM3/Zt98EPu7yhgAEIL8fkcFDh+zdvefqlSsTJk3MysoiK1XbTY1KpWEY3j8t7eNPP7FPRBDEPvhCUnJySGhoXm5e1oMHRoMxOSXFxYXP5/OvXbvm7OLi4uISFBT8l7eFTqd/8NFHarV6zepfTp86pdPqvvjyq+kzpr/08RdQFEUpKAWlzJ4zZ8QrI+3TySjt6YI6AABBEMeOHl29clWvXr3eee+9wKBAuUyW9SDr+XkjCBzHcSqVhj7rPCQIAsfJmscXyTkFpQCCMJvbeQybTKY1q385cfzYq7Nnv/7GUiqFcvfOndaWlhffeyiKUigUHMfb1FqQfzo2ifmzKFQKiqJWm9UxWsJwHMcxKo1Ge6mDmFBpNBzHk1NSVqxcRaE+ugQQBEEAglIpRoNhxc8/nz97bt78+dNnzSQI4sa162qVqt0ag+fj8XgjX3klMyPz2pUrHp4ecrm8S9euz5lfrVY31jdw2OxBgwcPHzny3p27B/fvv3Xjxq/r17XbEdXZ2ZkgCL3B0Ga6TqdHAOA6cQEAHDabyWCYzWayd7ydyWS0mM3OLi5MFovBZHA4bJvNZjQ+cdpYzGajwUin0/8Ln2X7z4Lt6l4aiUSyasWK3Tt39h8wYM/+fTNmzXQshU5KSf555cqvvl42YuTICRMnrd+0sXOXLpcuXDh5/MTzk8Uwm9XyaHDwQYMHOzs7Xzp/wdnZ+VndRVtbWn5d/QuCoJ989mloWCgAwGqxUlDUMQpxdnYeOnyYRq3et2dvWWlZn759X3wzjQbDhrVr6+vq333/vU6dO1MoFHI8jhePkPh8vre3t1qtlojF9onkY/jFs/HiPD09+a58kVBo0Otpj1GpVCqV+vw12jDMantiWPaZs2aNGDmytKR0186dFovl+c8eL2+v+IQEAMD5s2e3b9tGpdGGDRvO5/MfPHiQm5Pz9Pzp99L37d7zght15tSp7IcPo6KiPvz4473793++7Euz2Xz92rV2R6gSi8U7d+xAEGTEyJHrNmzYvXfvoEGDsx8+rKiosM/zvxwPn8939fT0UigVSoXy9yNCe+KIBIcE9+3ft7q6eteOHTiOJSYlPZ0O+bD1D/Cn0WgtLc3kAA3242s/Ib28vLp27SoQCHbu2BETG8Nms0NCQjp36ZLzMPvg/v2dOnW2P0f/mrOnTyuVyjXr1i775pude3bPnjvnRR/5f2afU6nUgIBAi9UibG2lOaBSqc86D5uamtauWcNkMj74+KPAoEBAEORJ2+ZSbXPpSaVSg8EQHBzs2PfZcQaDwSiVSl1cXHz9X6iwyj8wgCBAXW07DaHS793buX1bp06dXl+61NnZ2YbZbDYbiqIvGK8QBMFkMv0DAgwGg0Ty+80Es2ESsYROp7cZgOZPCQwM5HA4YpHYMfjQqNVqldrHx+flfoLWz9+fzWYLmgQYjj1xDlMpCAC3bt7as2t39549Fy5ZzOPxbDabzWZDKZS/9ubQPy0tIDDwxvXrx48di4iMfP5QVu7u7h98/NHqX3+dPHXqsOHDl//047z582uqqzdt3KTX65+ePzIykkanNwuaHX+12WwN9XUUKjU6JgYA4OXl5evnp1AoRE82a25ubtZoNP7+/h4e7k5cLvkF6qamJsd5ZFIp2Sf9n/gGdIcBo7qXgCCInOzsN19/XSaTLVi4MLVTqlgsrqqqqqqqqqmuNhgMAICk5OSBgwbaF3F3dx8+YgSOE1kP7j+nMBnDMKlE2traQv6ZkJgYn5hApdGGDBtKoVIBAI9flwn7FS4UCiUSiZe3l300BI1GDQCgUp54sR4wcFBAQMDhw4dcXfmObcvS795dumjJ/r17LZb2x07TaDQN9Q08Z2d/f39yikqpIAiC6lBUTmYGdSi9ezyFAgDgOTsPGDSQ7GBoL9myWKxWqxXHccpzCwAQBGA4ZnjyhvIocbTt6igoBQDg5+fXo0ePhoaGa9eu2WfAMGzv7j2lJSXPWZdUImlpaXGcwuFwPvz4o+iYaEFTs9VqdQyFyE++Ph1UiYTCA/sPOHGcUBTt06/vuAnj5TLZqp9X2IcmJtXW1OzZtavNCFVtttGx/Km8rHzv7j1kuM9zdp46fXpoWCh4RmRstlhOnzx57+5d8s+Y2Jix48czGIxHAx8gAACg1+sdl0VRFDisDjxnJz83miez3WY2NofdPy1No9GcP3vWsSDk5IkT6XfvPVoQQUeNGs1kMk8cP9Gpc2fHok0URclQhCweTklNjYiMzEzPKMgvsM8jEUu2bdmiVCjIVfft19dsNhfmF3Tt3h0AwGKzBg0epFKpGhoaU1KSHVNus1GP8o+0nWLfMwRB3Lx5q6KsvK6urrWlpay0tKy0tKW5+Tn7xE6v07Xd5wCgyFNXDYoCABAE6du3L4/nfPHiRbLxGakgP//g/v3tRvMtzc1ymdzb28fV1RUAgOE42WWkzSBtNqvNsaDrfkYmQRAjRo60v5QSBOE4kmJpaUltbW3f/v3JQQHb7BDHbJP/6Na9u6e3Z/q9e2VlpfZE0u+lX750qb6+3mQyBwYGkXcPk9Gs1WopDhE5giAEQeh0OscM23cUacSIETQ6Lf3ePfu5JBS25uXlRUVHde3ezXERx5OQLN18ztkbHRPTtVu36qoqx5ef7OwclUo1ZOgQstT/6W1v1x+eV1FRUckpycVFxRn30u1LabXabVu2SsTiuvo6i8USFBRIJmI0GvVaLZVKeSI1cmTgJ+M88iomC3ntE/38/QcPGVxdXX3rxs0/fJ/38PAYO26c41coR7wy0svbu6S4mOxzk5mRsXTxkj27dlktFgBA1+7d4mJji4uLi4uK7IuUlZYW5BdEREb27dcXAODh6Tl46BCDwXDz5k37PDiO37x+HcOw4SNHcDhOFApl2IgRLDbr1s0bjkf/7t27EokkbcCAf2hI9o4BRnUvgVQi+fLzL9Lvpd+4dn3Ba/PGjx4zcdz4KRMnTR4/YdaMGWWlZaC95rR8vguFQjEYjFZrO83ncRxvamratWNn9sOHx48dP3r4iFQq5XA4/fundercOSU1lSAImVR64/r1osICo9F47crV4qIiq9Xq5eXl7uFRXlZ25tTp8vLy7Vu3lpeVm8zm8ooKsjc4mX5YeFjX7t2dOE5pAwY4rvTkyVP79+9bvWpVQ0NDuxvL5fECAgOFra3HjhytrKg8fuzY3Tt3CRyvLC/XaDQYhmk12orKCoNen/0wWyKW4DiuVqkryisMBkNBfr5CoSAIYvLUqT179jpw4MDqFSsrKyqzHjzYuWOHSqksLyvfsW17bU3Ns3a1h4cHIMDZM2cvXbqUmZEhEolUKmVFRYVeq83OeiiTyXAcl8lkVVVVep0uPy9PpVRSKJQ58+ZFRESs/WXNb5s2VVZWlpaUrPz555yc7Gc1fmptbT2wb9/N6zeuX722acOGutpa++ELCw9/+913uDyu/euKGIYJBIKrV67KZXJhq/DQwUM5OTlFhUUF+QVXr1z54rPP83JzyWIPGo323vvvT5w0qaCgYMHc17Zv3Zqfl5efl7dz+/bPPvm0T98+/dL6t5sfm81WU1UtkUhaW1pyHmZbrVYWh33u7NmNG9ZrtVqLxZLz8KHNZrOPZdgGg87QaXU/fr/8YdZDi8Wi0WgeZmWlpKbGxMYAAPh8PovNepj18MC+/Rnp6ZWVlRaLpaKiQi6TNTY25ObmWa1WrVZLDuCcnZ0tlUgxDGttba2vb9BotQ8y7+uffOg6Zru+vr6lWSCTSu/fzyTHFiF/mjBpUp9+fQ/s3//Dd98VFxVXV1dv3fzb+bPnPL087YsnJCXGJyR4enl179HDPpHMm0Ihb2xsyMvNs9lsXl5eixYvMlvMn3/66bkzZ+rr6jIzMpZ/+61ep7eXNqWkprp7eCQkJYU+Lrzp0bOnh4dHQkKCt68vOQXHcWFra11dnUajybr/QKPW2Gy2+rq61tYWiViS9eCBxWKxWq21tbXC1lapRJqfn2+1WhEEmTxlstVqnTvr1fFjxk4aP2HKxIkzpk7buG79c97WXN3cmAxGZkbmoQMHM9LTa6qrTSZTaUmJXq8vKS6ur6vDMMxoMJSVlul1urKyMkFTE47jqZ07TZ81o7Cg4OMPP0q/d6++vv78uXNr1/zK5fHaPe7ePj5ubm7FRUXnz54tLy/fvm1bRXm5yWSqKP/9VkChUCRiyd5duxRyucViuXjh4smTJydMnOjY9A0QxLEjR8rLyiwWS21t7YZ168PCwhYvWUyjUq1Wa2VlpUwqa21uzsnOtlqt5EcFdDpdaXFpVWUljuPx8fGzZr3a3Nz86cef3rpxo6629vChQ7t27PD29g4NDWUymTdv3sy4l56Xl7dt6xalQqGUy2uqq8k40tXNlUKhXL9+7czp0xnp6c0CgT394uJisn1h2sABM2fOunrl6plTp8nT+7dNm9Uq1dvvvufl5UXeEKprqvV63YP799VqNYZhErG4tqZGr9fn5eTqnnH2MpnMN99+y8vLa/3atQKBwGKx5OXk7t29a9DgQZOnTn18KlYqFIqGhsbcnNw29Yl2OIYJmgSNjY1KheLB/ft6vR7DsKbGxqamJpVSlZ+XbzKZ2Gz2wsVLXJydv1627OCBA3W1tXm5ucu/+75ZIHDickOCQ2g02vWr1x7cf5CTnbNj21aVWi2TympqaiwWi9lsLisrU6nVlZWVhQUF9vjbbDZXlFeolMq62tqiokLHuH/wkCHOzs5JSUkhfxQbEW2akQLg5OTE5nDMZrPZZAYAnDpx8uD+AytXrCRjXz8/v7feexchiFUrVlZVVprN5uqqqp+W/4Dj+LvvvmtvyDt9xowBAweeOH788KFDJpNJr9Pt3Lb98uUrY8eNG/+4kWtaWtqMmTNzHuasX7dOqVSazearV67s2LY9NTV1waJFL1j7//8n5EWaWELPJxaLf1m1WtjaiqCIY1MxgiAYDMaHH31kw2wfffBh/7S0d99/z/6CtWPbtmVffjVl6pSfVq58ekgLtUq9eePGyspKMh0ERfr3T3t1zmyRUCRXyOPj4w0Gw8b166urq61WKwIQQBA8Z+f5CxfEJyScO3N229YtOq3O29fnlVGjQkNDV61YqVQoBg8Z8sbbb9lbJJw5ffralasrV69msX8fCTkjI2Pf7j25OTnbdu5MdijGcJSbk/PLqtXNzQJ3d48+ffsMHDRo4/oNFeUVqZ1S3njrrSuXLufm5pLd6xISE6dOn3b4wMGysjJySucuXV6bP4/FYrU0t6xftzY3J5fBYERHRQ0YNCjrwQOj0ejp5Tlg0KDU1NR2Vy2RSL775tuC/Hw2mxUdEzNt+owH9+8XFRUCAiAIkpKSMn7SxN07d9bWPPqcQ/ce3ectWICiaFVl1dbNmwuLimg0mpOTU9du3ebNn0cOztKGzWbbvmVr1sMs+1jR4RERS998w15VgeP4L6tWScSSH1f8TI7P/tvGTeQwcgAABEWYTCaCoIAgyKZyCIqMHz9+9Nix5OJms/n82XOnT54UiUQUKpXNZgcEBoyfMLFf/37POsEKCwp3btuu02txnGCz2XPnvabWaLLuPxAJhRaLmctzNuh0o8eOHTq87Scr7OfSrh07DEZDdVW1q6urzWZzdXO195aw2WybN248cew4iqJ+/v7TZ87g8niHDxw0GPQAIDweb+ars7KysvJz88gjmNqp04iRI/fu3k1uMooig4cOnTR58tOBRXlZ2c7tO+RyOQCASqXExsUtfv115uOu32KxeOtvW9Lv3UMQhMPhxMXHz5s/Pyj4iYqVs2fOyGWyufPm2afcunnr+NGjRqMBAITL5S5ZujQ6JhoAcPP6jV07d4iEIgaT4erqNvKVVyZNnmwvLSYI4rfNm0NCQ+2fZsFxfPPGjWFhYcNGjCCnSKXSzZs2NdTVAwAQBAweOjQ5JWXbli1KxaPxI6ZOn+7i4rJn9y6NWg0AQmfQZ8+Zk5KaevvWrevXrtmsVi6PZ7VYNBptSXGxQCBYuXr1xMmT2j0iVotl7Zpfz509R6VSAgID/h97dxkfxfE3AHxWznLJWdwV4pAEgrtDsVJapLh78QJFi5YWKG7B3d21OEESEqLEPTl3W3leLFxDCJS2tPTJf74fXpC9ldm93bnfjvbp20+r1V67dpUkSACAp6fnyNGjbt64ce/ePYqkAAD+/v4TJk0USyRms/nI4cMnj58wGAw8Hs/D0+PbAQOaNW9e7VFomj5z6vT2rVtNZrObm1u37t19fH1W/7JKqVB27NRx8rSpJpNp5LDhaWlpTZs1xTEcw3GZtKJ5y5aDBg+2TQOzds2va375pWXr1nx7Po/Hk0plXp6eo8eNZarA4h893rt3r0Gvp2nK3t5h8NAhBQUFly9eIgiCoihvH+9x48e7e3hYrdYD+/adPHHSaDQKBA5hYeHfDhwYEhpisVg2bdhw7sxZFovl4+vbt38/pUKxdctWFos1YNCgfv37qZTKlSt+unf3LpvDqVWr1ohRI3Nzcq9eucLs38fXd9z48W7ubhaL5eD+AzevX3dycTEZjSiKDhg0qFHjRgAAuVy+dfPm7KwsmgYIgjRr3qxd+/Y743YUFBQwWUTbdm379n9vO8hXmZlbt2xRKVVisVgqlUZFRw0ZNoxpCX3ntztHDh4ymY00DdhsVouWLavdT3FR0aYNG5kRTFAU7dylS1RM9LbNW5jh/TAc69GzZ9du3QAAT5883bZ5c25eHpvNFggE7dq36z9gAI/HM5lM69euvXThIpvD8fPz6z/g2+Li4h3btvPs7IYOG8pms8+dO2cxW1AU5XA4Xbt1ZWYjvHj+/Lmz58xmEwCISCyaMHFiwJtGO0qlaurk74YNH/7hsjqdTjf7++81as3KX35xdXs9L0tyUtKgbweIhKI9B/b5+Po+evBg546dCc+fr1z1i62AIP7x4z27divkcqFYpFFrBELBkKFDK7+bAQAUCsW+vXvv373nIBAAmtLp9O3ates34NvKDeYsZvPJEyfOnD7D5rA5HK5apaxTp87Q4cP/zW5e/y/9qdHtoL/m2NGjro5OfXp/bRtQkSCIkcOH+3l5nz1z+p84okKueJWZyRSM0TStUCiys7J1ureGRf119Zrz5869u21ebm6/b77Jy839wP71en3Wq1dlpWW2P7OzspVvDvfxSkpK8nJzCeufmBLbbDbn5OTk5+eTf34i7ZKSkszMTFmlSev/GoPBUFpaykQ5fxFFFxUVZWZmlpeV/fV9UFRubu6rzFfGjxuTU6VSpaenFxcXv/tRUWEhU3rxlxPz10il0szMzNLS0r+/K8JqzcvNzfp3z2Lblq11wsJtY4AzHj96FB4SMmPqtA9vW1hQkJOdzYxm/KfodLqsV1l5eXkfM5e8XCZ/9eqVSql8/adcnp2VzVwilUrV+8teTRo2ys/PLy4uzkhPV78zBvivq9d4ubmfPXNGrVanp6WXvBk19y9gZkh7dw8lxcXZWdm2e7ikuCQvL89qeZNVWq15ubm5ubl/OEa6TqvLzMwsyM//yyl8n+Li4syMDKVS9cn3XBVFFxYUvMp89e4XUVxUlJOdbTKabH/m5+V/5LjxVbxITJw/d67uzQDj71OQn18vKjq0Vu3UlBTbwn179nq6us2cPt02ZHpuTk7/Pn2zsrLeTXB6+h/cMBqNJjMzMzsry2B871NgMpmys7MzMzNVqn/++tcIsBjz31C/fiwzn6ZSoXR2cdZoNEcPH7lz+7dBQwZ37NT5j7f/88QSsVjyezNYsVjMFDUplUqNRu3r6/fs6dPS0pLhI4ZX2VAml29Yv75T5y4+H2yOamdnF/hmNk/mT6Znxp/l7u7+Zzdhs9l/WHHwCQ9XLWYozr+1CwT82ZERqtkHgrxvRs5q2ca/fZfnm1aS/zInJ6cPz9v28TAc9/0zV+PvMxqNd367zefzq5SzOjk5s9lsZxeX923IeN905n+Iz+cHBr13br0qJI4SiePvZdISiUTypogaQRCAIDRNAQA83tREV8G0/GNGMxb8vR7T9vb21XZddH/70O4ebz2kH/+18u35td4Z/uaTeN/F+fSQ994VVQqo/mx5FUEQRYWFjk5OfD7/7OkzTZs2/cCc0QxXN7fWbdrcuHZNo9FQFE1R5JP4+K2bN8fUqzd23HimfkmhUGzasLFt+3bv9t77mBQ6ODhUbrRXLQ6HE/A3er38D4JR3b/Bz99v7fr1O3fsmDZ5skgsVqmUGo129g9zvu7T5w/nmP+ECIJY/fMvN27cGDZsWEZGZrce3e3ffqIMesPWTZuCQ0L6fdv/H+qRCkE1BpvNDg0Ne/jg4YljJ5h5MmiaVqvVu3bscHJy7tGzx+dO4B8wm80mo8FoMCoVCm9vr3eHR6EoSqfTWq1WuUxGkuSfGgkI+k959uTptClTYurVCwkLBQjSolWrP9yEzWbPmjPb3d193a9rRSIRQRJFRcWt27QZOXq0t483AECn023bsrVW7VoDBg78x08A+miwXd2/hyAIaUWFVCqzd7B3dXX9w1elT46m6XW/rt2/d6/E0XHM2LFfflV18FWSJNVqtaS61mYQBL1LpVJt37rt3t27jk6Onp6egAYV0goXF5chQ4dWLsz+D3qRkHjw4MH7d+9aLJaAoMD2HTr07duXX6ksTSaVHtx/4PLly+Xl5S7Ozo2aNBk4eBAsNfl/6mVy8pxZs8vLypo1bz5rzuw/LEiuTKFQlJWVIQC4urlV/nVgfi/EYjEsAvhPgVHd/xamWyLfju/h+W/VKUBQTadUKktLSkwmM4vFcnV1cXF1/dwp+mNlpWXFxcU4C0cQhLASHA67Vu3alasO9Hr9q8xXAAAUQymKIgkyIDDgw8ObQf9l0ooKpVLJTBr7udMC/YNgVAdBEARBEFQTwPHqIAiCIAiCagIY1UEQBEEQBNUEMKqDIAiCIAiqCWBUB0EQBEEQVBPAqA6CIAiCIKgmgFEdBEEQBEFQTQDnlvjHabXa8rIyjUaj1+vr1KkrFFU/ZRMEQRAEQdDfAaO6f9xvt28f2LcvOSmZy+Vu37UzOjr6c6cIgiAIgqAaCNbA/uO6duu2dsMG/4AAo9EIx3yGIAiCIOgfAqO6f4Ozs7OPrw8M6SAIgiAI+ufAqO7fQFEUDOkgCIIgCPpHwXZ1n1JFRUXWq1cGg0EsFtcODnFwsH/rYwRgGFZaWpqdlYXjuH9AgOvbs4CXlZZmZmaSJOni6oIAxNXNzdHRkfnIaDCkpqYqlUoHgSAkJEQoFAIAdDpdUVGRyWAkSCIiMlKv17/KzBSKREKBwGK1oghKUiTfzs7F1dVkMpWWltA0oClaKBI6OTkBAAwGQ2pKqkqlFAgEISEhAqEQACCXy8vKykxGI4vFjoyMLCwqLCos9PH19fLyAgCo1erUlBSD3uDo7MTlcBwEAk9Pz3/l0kIQBEEQ9AdgVPfJnD51at/uPd4+3p5e3i+TkymamjJtWkxMDPMpAhAAwIVz58vKynKzs3Nycrx9fKZMndKxc2dmhQcPHmxev8HX39/BwSEh4XlW5qtlK1Z06NQRAJCRnvHr6lU0DQICAxMTEhAEmf3DnIjIyNKS0l9Xr75z+zcejzdh0sTnz5/fvH5DJBa3aNki4flzk9Hk5Ozcf8C3vb76SqPR7Nged/fOXTseb/K0qR07dUpPS/t19RoEQfwDAhKeP8cwbM4PP4RFhKempP66enXSi8SgWrX69//2ypUrD+7fb9y0yba4uIry8uVLl9nb8z29vDLSM57Ex48cM3rc+PGf64JDEARBEPQWGvoUTp08GVqr9rIlS60WK03TZaWlvXv1atqo0YvERJqmCYIYN2aMn5f3qp9/rqio0Ov19+/da1Q/Nioi8sGDBzRNy2SyXt17LJw3n9lbRkZGp/Ydzpw+zeyqW+cvhg0eolaraZrOyc5p0aTZN72+kkmlJEkWFxd37dwlwMd39szvk14kde3U2c/L+/atW1s2bXJ3cp44dhzTRYOiqNLS0q+/7HX44EGLxVJSUvJFp84jhg7VaDQ0TWdnZTVv3KTPV73lMpnVan0a/yQ6sk5kaNjmjRsf3L8fHhLSpEHDwsLCKd99N3jAQL1eT9O0VCod0K//qp9//jyXG4IgCIKgd8B2dZ+AVCqN27ZdLJH07d8PZ+EAAFc3t2+//TY/P//Avv00TSMA0DTN4/Hadejg7OxsZ2fXpGnTEaNHyWXyQwcOEARRUV6eX5BP0q+b39WuXXvI0KF8Ph8AcObMmfT0tMFDhwgEAgCAf4B/oyaNnz9/npyUjKKoi4uLh4cHl8v9us83kXUiJ0+b+uOSJQ0aNuz5Za/awcHPnz+vqKgAACAIIq2o8PLx6dK1K4vFOnPqVGZm5uAhQx0cHAAAAYGBDRs3fvb8+cvklziOe/v6CAQCV1fXvv3714+Nnbdgwdz58zgcbkZaOkmSFEUBAJycnIaPGunm5v4ZLzsEQRAEQZXBGthPIPVlyqvMV42bNHJ1cbEtDAkNlYgdnz55olAoJBIJs5AgCNsKsbGxTi7OSS9elJeXObu4uLm5H9y3X6fR9Oz1VXhEeJ9+fUmSNBqN9+/eY7PZBQUFd+/cAQAgCKJRq3U6bV5eHgCAoiiKojAMY7M5AIC27doxO+fxeB07d96yadPVK1dGjBwJaPrmjRsNGzZ0cHAwGAz3793nVNmnRqPTavLy8lqAlkzfDjaHg2EYi8Xq07cvAMBsNvv5+Z07e3b82LF9+vatWzeqVatWJEn+O1cYgiAIgqA/BKO6T6C8otxsMgqEQhabbVto7+DAt+drtVqNWm3r9FCZWCwWCYVKlUqlVIVHRHw3ZcqCuXMPHjh4/NjxqKjogUMGfdW7t16vlyvkFovl4vkLfD6fKclDEOSLrt083u6mQL/Tx7Zjx45HDh26evlK33799DpdQUFhn379AAA6nU6hUFgslvPnzlXdp4dH5R1W3ieHwxk3cUJBQcH1q9euXb4SEhraq3fvQUMGMyWIEARBEAR9djCq+wQwDEMQhCAIpnaSQZIkSZI4jrPYbACqGdaEommKpnEMwzAMANC+Q/vQsNDz587dunEz4dmz76dNNxgMPXr2xBCUz+fPnPV9eESELQJjDvrhVIVHRjRu2vTGtatPnzyRy+S1a9d2c3MDAKAIiqAIn8+fNWd2aFjYR+6TpunwiIh9hw5evnTp2pWrT588Wb5kaWlp6aLFP+I4vIsgCIIg6POD7eo+AU8vTzs+X1ohNRqNtoVKpUqr0Xh4ejo5OlHU66gORRHbCmqVSq1SuXt4uLq5Pbh//+rly15eXmPGjt17YP+qX9cIRaKL5y9gGObu4aHVaGQyGYvFYrPZbDabxWKxWCwU/YPvjsPhfPHFFwRBHty//9mzp82aN2eWC4QCdzd3jUYjk/6Jfaanpx8+eFAkEvXt12/H7l1b4+IiIiNuXr9eWlr61y8cBEEQBEGfDozqPoHw8IjYBg3SU1OzXr2yLXz86JFer+/UuTOXxyVJkqZogiAMeoNthWdPnqrV6s5duojF4sKCwrjtcUqlEgDA4XC69ehRv0EsRZF2dnat27SxWK3nzpyp3Cbv6uXLV69cAQCgKIqg7y1ma9KsaURExOWLl1g4KzgkmFnIZrNbt2ltMZvPnT1TuWHc5UuXrl29+nqfCIIgb+1Tp9Hu37cvLTWN+bNR40YdOnVEUIQJBJ8+ebJ08eJHDx++WxEMQRAEQdC/A0Z1n4CDg8PE774TCIUb1q0vKy2zWq3xjx4f2Lu3Y+dOX/XuDQCgaZqkSJ1Ot3vXruKiYqvV+vzZs927drVr377/gG8BADwe99nTp8uXLi0rK7NarRnpGUWFhZ27dMEwrMsXX3Ts3Onc2bML5s1LTEjIyck5sG//gf0HHB0dSZIsLCzMz8tXqZQPHz5ghj6pnDCJRNKmXVs2h9OqTevK9aRdu3dv36njmTNnFsybn5iQmJOTs2/PvkMHDjo5Olmt1syMzAppRXFRUfzjeKPhdRjK4XKKi4oXLVyYmZFhtVorKiqSEl+0bt3GzdXNbDavXb3mp2XL16xardVq/8ULD0EQBEHQ7xBYuPKppKakxG3brtFoxBJxRXlFVHTUsJEjhQIBAMBkMk2bPNnX109v0FeUV/Dt+WVl5dHRUcNHjBSJRQCAJ/FPbly7JpPJlCqlk6OjRqtr2rRpn359WSwWAEChUOyMi7tx7TpN0zw7u6CgoGEjR4SGhubl5m7burWkuAQAwGKx/AMCJkyaWKX7Qnp6+oljx8dNGC8WiysvVyjkO7bH3bh2HQDA49vVCqo1fOSI4JCQhw8eHty/X6vVIghgsdmNGjUeNmI4ACA/L+/woUN6vaEgP8/FxVWv1zPJEAqFFEVt3rjp6JEjPb/sOWHSJCbNEARBEAT9y2BU94kVFRUa9AZXNzdmUi8GQRAZ6ekBgQE8nl1FRYVSoXB0cmKm7aqiuLhYp9W6ubtX3pyhVCikMhmfb+fp6fWpUquQK2RyGZ/P//iJv6RSqVwuk4gdXVx/H8aFJMmK8nJnFxfYcwKCIAiCPhcY1UEQBEEQBNUEsF0dBEEQBEFQTQCjOgiCIAiCoJoARnUQBEEQBEE1AYzqIAiCIAiCagIY1UEQBEEQBNUEMKqDIAiCIAiqCWBUB0EQBEEQVBPAqA6CIAiCIKgmgFEdBEEQBEFQTQCjOgiCIAiCoJoARnUQBEEQBEE1AYzqIAiCIAiCagIY1UEQBEEQBNUEMKqDIAiCIAiqCWBUB0EQBEEQVBPAqA6CIAiCIKgmgFEdBEEQBEFQTQCjOgiCIAiCoJoARnUQBEEQBEE1AYzqIAiCIAiCagIY1UEQBEEQBNUEMKqDIAiCIAiqCWBUB0EQBEEQVBPAqA6CIAiCIKgmgFEdBEEQBEFQTQCjOgiCIAiCoJoARnUQBEEQBEE1AYzqIAiCIAiCagIY1UEQBEEQBNUEMKqDIAiCIAiqCWBUB0EQBEEQVBPAqA6CIAiCIKgmgFEdBEEQBEFQTQCjOgiCIAiCoJoARnUQBEEQBEE1AYzqIAiCIAiCagIY1UEQBEEQBNUEMKqDIAiCIAiqCWBUB0EQBEEQVBPAqA6CIAiCIKgmgFEdBEEQBEFQTQCjOgiCIAiCoJoARnUQBEEQBEE1Af65E1ATlJeVyxVyBEHeuwZNczhcbx9vFov14V2VlpYqlUoEAFc3N4lE8r7VDAZDUWERQVh5PJ6Pry+GYX858e+SSqUyqRR88HRYLJaPry+O4wX5+QaDEcMxby8vOz7/EybjP4WiqKKiIp1Wi6Kol5eXvYPD505R9fR6/cuk5NzcXARFPNw9gkNDXFxcPneiPj2VUllWVkZRlEgk8vD0BADIZDJpRQVNA0dHR1c313/ioFqttrioiKIoBweBp5cniv71V2Kr1VpQUGA2mVhsto+PD4fD+YTphD45g8GQlJSUl5ODoqi7h0dwyIceK2lFhUqlpgEtEAjc3NyqX0cqVSqVgKYdHBzcPTw+PiVajaa4uJiiaRzDvLy87fh2f/pk/ghFkkVFRTqdDsUwby8vvr09SZLFtiXe3vyam8/XDDCq+wT27Nq9f99eFvu9ERthJWrXDl67cb3HHz3Acdu2HTtyFMfxqTOmDxg48H2rpaelT5syRSaVRkRGbI2LEwgEfz317zh25Oi2LVsw/L2RIkVSbm5u23bscHJ2mjd37ouERJFIuOrXX2MbNPiEyfhPMZtMy5cuvX/3Lo9nt3LVqpatWn7uFFVDoVAsW7zk9KlTRoOBIAg2h7N85U8fuIv+/7p54+byZUtNRlP3nj2WLl8OADh98uTG9RtIkhw0ZMj0mTNsa5aVld27e7ddu3YisfhvHvTZ06czpk03m4wtW7VeueoXHo/3l3cll8mmT56SlfXKw8Nrw+ZNtWrX+ptpg/45cpl8+dKlp0+dMhgMFElhOPbzql/6Dxjw7poF+QX79+598OCBTCajaVoiETds1GjIkKF+Af62dWRS6Z5du2/fvi2tqKAoSiwWxzZsOGz4sIDAwI9JzOHDhzdt2AgAjWP497Nn9f7mm092nm/o9Yali5c8uH/fjm+3Zu3aJk2bGn5fwl+zbm2TJk0++UGhTwhGdZ+AWqMuLS1ls9kAAARBcBxHUZSmaYIgKIoCAFitVolYTBLkH+5Kp9PJ5XIcx41G4wdWs1qtSqVSLper1Wqapj/ViTC0Wk1paSmO4wAABACcxWJOhyRIkiIBACRJIihKkiRN0xq1Ri6X0zRltVo/bTL+U2ia1mo0crnCzs5ksVg+d3Kqd/P69dOnThEEYe/g4OjkxGaxfLx9Pnei/hFms1khVxiNRp1OxyzR6XRlpaUESWo0GmaJ0WA4e+bs5o0bWWx2ixYt/v5BLRaLQi43mUxarfZvPnQURanUKrlcYWdnT3xEtgB9Rrdv3T5x/DgAwMHBwcnJCUVRH99qHqvMjIwp3333IvEFgiDM7VFaUvIy+eWTx/Fr1q+rXbs2AECtUs/+ftblS5domqZIEiBIcXFxSkpKwvPn6zdtDAgI+HBKZDLZ5YuXpBUVLBaLIIhzZ8916drVzu4TF9dRFCWXy0tLS/l8vslkBgDQNK3RaORyuclstlpqcj5fM8Co7hOIjon+pk8fHMcRBDGZTE/i45VKJY7jDRo2dPfwoCmKJEkPT8+PKbhGURTDMAzDPlSfCwCCIMyaf6ca6H0iIiO/6dMHRVGAIITV+iQ+XiaToSga3SDGx9eXpiiKosQSiYODA03TtmR8OME1wEd+NZ9RcXExQRI0Tbdu02bGrO9pivpTlTv/jyAIwnwXtvs/PCKi37ffUhRVr349ZkleXt5Py5eXlpZGRUX9YcuHv3bQv6PSg/P3dwb9g4qKCkmSRFG0bbt202bMoCjS08uzyjoWi2VH3I6kF0ksFksgENSrX99qtT5/+sxoMiYlJe3cHrdk+TIcx69cvnzrxg0MRX38fAcMHOjgIDhy+PCLxMSkxMTDBw7OnvvDh/OWF4mJaampbDYbAQiLxUp4/jwtNbVe/fqf9nzZHHbbdm09PT05XI6H5+sM5L+f+0E2MKr7BHp99dWXvXox/68oLx81YqS0QspmswcOHtS5Sxfbakzrt8LCwrLSMoNBj6Kovb29l7e3s7Pzu/vEMIyiqMyMDLlczmZzvL293NzdPyYxFRUVBfn5RoPRjm/n5eXl+nbDDovFIpVKKZJic9hOTk7VNsjr3KVLp86dmf/rdbrhQ4aWl5fjON7766/79OtbOYVarbbynwRBvMrMlMsVXC7Hz8/fydmpyp7NZnN2VpZSqUJRxNHRMTAo6MMtAq1Wq7SigiQpO76do6OjVqPJycnRarX29g6BQQEODr/XOyuVSqbYRiQSObxp9GYyGuVyBUVRHC7H2dkZQRCdVqtUqQAAjo6OdnZ2eXl5JcXFCIJ4+/h4eXkBAN6cgpzD4fj7+ztV99XgOGY2m19lZqpUKjs7O/+AAHF1tXuFhYWlJaVmk8lB4ODn51e5BpAgCGmFlGkWKXF0zM7KkkqlTs7Ofn5+TIlvtfQ6XW5urlqtpmkgFosDAvx5b17TTSaTQi6XSmWABgAALy8ve749l8f9wIuEUqksyC/QajUkSfJ4dk7OTv7+/u9m2TKZrLCgUKfV4ixcIpEEBASw3kmhTqfLy81VqVQIggiEQj8/P9tXQNG0XCo1mUwsFsvF1bW4uLiwoFAgFAQEBNjKGHJzcsrKykiSFAqF/gEB9vb276ZWWlGRl59vMZvFYknt4Nrv3jYNGjSsVbs2oGmhUAgA0Gg0hYWFAAAWi2UliIKCArPZ4uTsxJRAAwAqyisKCwsMBgOPx/P29natrv2TUqHMzc0xGAwikahWcPCfar1qNBhyc3OVSiVN0yKRyM/fv9rzAgCwWLhGrc7OztbrDQKBIDAo8N1vrbSkpKSkRK/XIwjq4GDv5e3t5FT14QIAFBUVlRQXm81me3t7Xz+/yg1zCZKQVUitViuXy3NydsrOyq6oKHd0dHRwcCApCgGIo6OEV6nUx2KxyKRSkqRwFu7s7Gy7bnl5eWWlZVarRSgU+vsHOAgc3t5ERpIE395eKBRmZmYqFUpXN1dfX19m85KSktKSEp1Oh2GYvb2Dt4+3o6PjH15JiqJyc3JlMqnRaGThLIFQ4OPry3zLv58dQeTk5CjkcrPZzGazxRKJv7//R7ZWlMtkBYWFOq2OheOOTk4BgQG2L9pkMsnlcqm0AkEQBEE8PD359nwej2dnV/ULKiwouHf3Lk3TdnZ2S1cs79CxI03RB/bvX7FsGUEQCc+fy2UyVze3pKQki9XKwvHRY8Z8O3AgACAgKGDMiFEyqfRlykuDwch/fzs5iqKuXLqs1+k4XC6LxbJYLGq1+uKFizH16lV+bEmSlMlkFrOZxWK5ububTKZXmZlqtcZB4BAYGGRv/3vKlUqlTqtFUczF1UWj1rx69YrD4fj7+wlEwl5f9TYYDSiKutbEVrk1HozqPoHK7+627A8AwLzc2P40m8zbt207cfx4Xm6u0WhEEcRBIKgdHDx85IieX35ZeYcYhpaXlS9bsvTYkSNSqZTL5dYODh49dkzPL7/8wKsSTdPHjh7du3t3WmqaXq/n29sH1649aOiQr7/5xpaM7Kys72fMVKtUYRHhS5YtqzZXrXo6b45Y5XTe2gTDioqKT586deHcealUasfjRdSJnPjdd23btbOtk5GevnHd+t9++00mkyEAuHt4tG3fbvyECd4+760lLCwsnDp5slKuaNuhfbt27TZv3BT/6JFWpxMKhbENGkybObNu3TrMmnt37z514iSG4yNHj+rbrx+zMDExccmPi7UaTXS9ej+t/InD5V65fHnTxk0IAOMmTJDJZXt37c7Ly0NRtHbt2lOmT4+Nrb/u11/PnD6jkMs5PG5UVPSsObMbNGxY5eJkZWWdPnnq6pUrSqXSwcGhblTU+EkTW7VqZVvHZDLt2bnr8KHDeXm5RqNRKBTWrVt3+KiRHTt1YlYoLyubPnVaUVFR4yZNIiMjN65fX1RU5O3tvXrtr43f02bl5o0be3btSnieIJPJAADOzs7169cfOXpUoyZNAADJSUmLFy4qKipivqAzZ87cuHGjUaOGi5ctq3xD2vx2+7eN69cnJyerVSqKorhcroenZ9duXcdNmCASiZh1aJo+eeLE3l2709PT1Wo1juNubm7NW7SYOHlSQMDvbYDu37u3ZfPmxIQEmVSGIIhEIomJiRk/aWLDRo0AAAa9ftnSpc+ePPUPCOj5Va+tmzanJL8UCAXzFy3s07evUqncvHHThfPnC/LzCYKQOEpiYxuMnzihSgPNi+cvbNm0KSUlxWg0Ojo69vzyS0cnpyoFZufPnd21YydJkd/06Tt2/LiTx49v27pVp9exWKzi4uJJ4yf4+vmt+Hmlh4cHTdPHjx3bvXNXRnq6Tqez5/NrBQcPHDyob79+lff52+3bG9atf5GYqNVqJWJxh86dwsPDPzKwu3v37q64uOfPnldUVAAaODo5xtSLGT5yZIuWVZtjohj66OHDK5cv379332g0isXips2aTZ46NSw8jFnBarXu27Pn8KFDOdk5Op0ORRCBQBASFjZy9Kgvuna17cdsNu/dvefIoUPZWVlGk0kgEETWqTNi1EjbW6VMJps5fXpebl5MvXpNmjX9ddXq/Px8f39/P3//srIykiAGDRk8dPjwyqe/auXPRqOxYaOGi5YuxXFcp9Vu3bz59OkzBfn5ZrNZ4ugYHR09bsL4ps2aMZvk5OTM+X6WTCZt166du4fHpg0bZVJpYK2gTVu3BgcH79wed/To0ZzsbL1ejyKIQCgMCw8fNXp0py6dP3Al5TLZhvUbLl+8WFxcbDFbMBwTi8URkZGTJk9u0vT1k1JYULB+7drbt26XlpZaLVachbu6ujZu0mTq9OkBgR+q0yQI4sihQ0ePHE1PT1Or1CwWy93Do1XrVqPHjg0MDAQAvEx+uWDePKY5CgLAmVOnbly/1rhJ0wWLFlYJGY0mk7ubm8Vs9vPza9GyJfNu1qJly62bN5eUlFgJq9liAQDgGEbTNIphtld0F2cXDodD0TSC/EEpWEFBwcMHD2gAnJyc2rZvf/rkSbPZfP/u3eKiIi9vb9tqKpVq4fz5L5Nf1g6uPWLkyAP79t+4dk2t0YhEokaNG0+bOSM8PJxZc9fOnadPnhRLJIMGDzp/9vyN6zfYLNbIMaPGjR+/6uef4+Pj7Xi8RUuWxDaI/VCyoP8eGNV9YpUb3FT+P0VRu3ftXPXzzwRh5XC4Xl5eRqNRr9cnJiQsmr/A08Mj9k30gCAIAMjB/ftVKpWDg4NYLNbpdCkvX86ZNctqsXzTt2/VQ77Z/56dO5cvW24wGFgslpubm1anS0pKmj9nrlqtHjV6NJNnmEymrFevFAoF396eIIi/fDqVIQhiNplXLl9eUlwsEosdHBwsFsvTJ09/XLDQz88vMCgIAJCZkfHdxEkpyckIiopEIoCAsrKy/Xv25uXkrt24wdW1+k6LZrM5JztHIZcj15FL5y8UFxeJRGIrQZhMphvXrplNpm07dzBv7eXl5RkZGSwcVyqUts31en12VpZSqXR2cWESr1QqX2Vmoii6Yd263Lw8LocjEAhMJlNmZuaPCxZ4eHo+iY8XiYT2Dg4Wi+Xxo0dLFy/Zsm2rrR4TQRCCINauXqNUKiUSsVAoNBqNDx88yM/LW712bbPmzQAAFotl5U8/7d6x02KxcDkcd3d3lUp1//79jIwMq8XatXs3Zp3c3JzCgkKT0Xjt6hUmHgIAVFvmBwA4dvToogULVEoVgiCOjo40TSsVisuXLyclJS1etrRT584ajTYpKclqtTJN+MtKS7VarYuTc7Vf2YvExFkzZhQWFOA47uzijCKYWq0qKizcsmkzl8ubPHUKiqIURe3asfPnn37S6XQ4hrm5u1vM5vLy8qNHjhQVFq7duIHp93Pr5o3vZ8wsLirGMMzJyQlBEJVKdfPmzezs7PWbNsbUq0eRZFFhYdarV0qlMiM9vaSkBMVQgiRdXFwMBv38H+aePnUKAMDj8Xg8nkqlunb1amZGxpp16xo2ev04nD93btaM7zUaNYIgIpGIoundu3aJxWKKoir/DMrl8sz0dCtJlpeXAwBKSkoy0zOEIhGCIGaT6eXLlwaDkbBaaZrevXPnT8tX6HQ6Fovl7u6u0WqTXyQtnDdfq9GOHDUSxTAAwN07d6ZPnVZaUoJhmFAoRDHs2JGjNyQSkvyjNnA0OHf2zIJ58yvKKxAUkUgkCIKo1eob128kJiQuWvxjzzeF+gAADMMUMtnSJUu0Gq2joyOKojqd7uKFCwX5+es3b6pVqxZN04cPHV6+dJnRYOBwuZ6enlarVa1WP33yJDcnh8/nt2rdGgBgtVpX/7Jq25YtBEGw2Ww3Nze1Wv340aP0tDSz2cy8MVot1tzc3OysbK1Oe//evbKyMhRFUQyNiIx49vSJSqk6f+5cr969mafJYrFeungpOTkZQZD+AwbwuFydXr9w4cJjh4+QJMnj8cRisUqpvH3rVtarVytX/dKyVSsAgMlkysnOlslklyyXdHqdSqlCUBTDcLFIfHD//hXLl5vNZg6HYzuL+MePc3JyHBzsmzZvXu21tFqtq37+ed/efQABdjw7FxcXnU6n0+nu/nZHIZdv3RHn7++v1+sXLVh46eJFDMXs7e35fL5Oq5NKpSdPnFAqlWs3rK+2UBMAYLFY1vyyatu2bWaTCccwNzd3k8lYUlJ8cP+BpBdJq9asDo+I0Go1SS9eUBT1+rEqK9O90rq6uVMkVWVvoaGhew7st1qtGIraOsjLZDKTyQQA7eTszLwsNWzc6PChQwaD4fTJUwGBgTiOHz1yVCaTYRjWpHHTD7eQu3XjZklJCQAgPDx85OhRT+PjNRpNTk7O3Tt3+33b37YaSZL5eflZr17pdLrvM2ZkZ2c7Ojna29vr9forly+XlpWuXbeudnAwAKC8rOxV5iuBQLDml9XFxcUIAgiSEIvFKIoVFhSkp6UxW30gSdB/Exyv7l9SXFx84thxs9ns7Ow8f9HCbXFxW7Zva96iOYZhSqUyPv5J5ZUpitLpdF993Xv7jh0bt2xu2aoVi8Uy6A074uIqysur3X9qSkrc9jiT0SQQCCZMmrh1+/a58+a5u7sbTcadcTsy0tOZ1RAEYbPZbDabxWJ9qhYSTGtCk8n0w/x5cbt2Ll621NPTE8fxoqKihw8eAgCsVuv2bdteJifjLFbT5s03bN60eevWlq1bYTj+6NGjwwcPfiBexHGczWbn5uRyOJzVa9du2xE3cvRoLo/LYrPT0tIyMzKYNTEMY7FYTMeOKpuzWCxbEQuKoiwWC0XRvLy8Hj16bN+5c+Uvv3h7e2MYVlFRkZiQMHDw4G07dsxbMF8kErHZ7Iz09PS09MpJIknSYrGMmzB+244dq9eurVO3Lo7jZaWlu+LimPro+3fvHdp/gCRJVze32XPnbtm+fdJ33wkFAoVCsXXz5rLSUlvCOGyOXC5XKVVBtYICAgLqN4j18/cH78hIT1//61qNWsPlcvv077d529bN27Z+2asXh80uLy//ZeXKgoKC8PDwRYsXt2rdmqIokiTbtG37y+rVQ0cMf7cFGE3Tx48ey8/PZ3M4ffr127p9+/adcWPGjeNyuTRNP4mPZ84iIz19+9atRqPR3sFh5NgxW7dvW7thff3YWJqm7965e+zIEQCAQqHYuH5jWWkph8Pp0bPn5m1bt2zb2q1HdwRBMjMzt2/dRhAEgiIYhrHYbIPBUFZW5uXlVat27ciIiDp16pw5debSxYsoivoHBCxf+dOWuO0DBg3i8/kFBQVbN282GA0AAJVSuTMuTq1WYRjWuEmTdRs3bN+xo/+33+p0OpIkK9++KIriLJbtu+7cpcuE7ybZ2dkRBOHi6vrD/HkzZ810dHLKSE/funmL0Wh0cHAYN2HClu3b582f5+buZjKZdsbFpaenAwD0ev3OuB3lpaU4jteNqrtm3dptO3eMGjPGbDb/YVSXl5f36+o1MpmMzWF/2avX5m1bt2zf+k2fPlwuV6FQrF61OuPNHcswmc1sFnv+wgXbdu5YtGQxM/hRSkrKwQMHAAAajfbCuXNGg9HN3X3J8qU79uzaGre937ffcjgcqVR6+OAhi9kMAHj44MGhA/tJknR2dp41Z87W7dunTJsqEonUavXWzZtLK91ybDZbo9ZIpdLAoMCAoMCIiMiBgwcHBAbiLFZ2VnbSixdMqgoLCp7Gx2MY5u3j3bZdWwDA1UuXTp84ybRV+HHpkq1x24eNHMHn80tKSrZs2qxWqysforys3KA3BIcE+/r6NmvejMVmnzt7zmw2u3u4L//pp527d2/dvr1P375sNruivPzwocPv62iVnJR06eIliqKCgmqtXPXLth071m3cEBISgrPwwoKC1JcpAIAXiS8eP3qEYVjT5k3jdu3csXvX2g3r60TVRVH08aNHt27ceN83devGzd27dpEEIRKJJk2ZsjVu26/r1zVq3BjH8ZfJyWtWr9bpdCEhIUuWLWvVujXT761N27YrV60aOmzYu8MdYBjG5/NFIpGDQGB7fz5+5IharUZRrGXLVswwBW3ath01doyDg8OF8+cHDxg4dOCg7Vu3Igjy1ddffzuomk61Nlqt9vatm1arFcOwZi1b+Pj4MEWVZrP52tWrJpOp8srMt6BSKhUKxfSZM7bv2LFi5U/+/v4sFisl+eW+vfuY2xjDMDaLRZJkYWGhSCQKCw8PCAxs2KgRhqEok53iOGxF9/8RLKv7l0gkkh+XLsnNzXV0dOzQsSMAwGq1Pnr48N6dezSgVSpl5ZUJgmjSpMn8BQvEEgkAwNPTa/SIEdnZ2Xm5ec+ePavcVs/m1o2bzPtWu/btp06fjiBIw8aNFArF+rVry8vKbly/HhIaCgAICQ09dvIEQZJ2PN4HxsP7syiK6te//+ixYwEADRo2TExI3L93L4IgZWWlAICc7OwH9x+gKOrs7DznhzmRdeoAAJycnIZkZJSWlN68cbP/t986v78BB9NaZdr3M7t168acwuNHj54/fcY0/fkrqSXJ0PCwH+bPY1o03r13Ny8vj0n5zFnfi8XiBg0bXrt27daNm1bCKpfLKm9LEETX7t1mzZnDBEwikWj0yJE6rTYxMTEnO6duVN0LFy4w5UD9+vUbPnIEACC2QWxBQcHJEyfS09OfPHnSrXv3SteN7NSly5Jly1g4bjabuVzuu+d+4dz5goICBEFatmq1eMkSptigTp06Mrn8/t17mRmZ586cGT9x4uChQ2Qy2f179yiKql+//ohRI993+t8OHFC/QazBYOjWvTvT2MtisRw6eMBkMqnVKpPJJBQKb16/wUQDbdu2mTFzJlOjxLOzi9u6zd6e7+ToBABIeJ6Q/OIFgqAhoSFz5s5193AHAHh6edMURZBUSEiI2WwG4PWvAkmSderW/XXdOmcXZ4PBgLNYF85fsFgsbDZ77LhxX/XuDQCoExmZnZV1/+7dhOcJKckpsQ1iX7x4kZX5CkEQT0/PBYsWhoaFAQAiIiOKioru3b37gW6o0TExXC73wrnzKpVKIhaPGDFCIBQCAK5fvVZaWoogoEPHjlOmTcVxvGGjhgqFYuO69aWlpTdv3AwLD896lfUiMRHFMLFYPGfuvEaNGwEAYmNjS0tKLl648OFb6/Kli1lZWQiCNGnadPHSJUKRCAAQE1OfKYYsyMs7e+r0jO9nvv6xpGkUw4YOHz5y9GgAQIMGDWiKWrRgIUmSD+8/kMvlgAZqtRpBEQRFxGKJj7ePxNExul69mJhoNpsTEBiAs1gkSV65fFmtUiMI0vubr0eOHgUAaNi4UWFBIVNve//evd5ff237caYoqn2HDouXLeXxeCaj0dXNrXWbti+TX6pUqt9u327WvDmCIA8fPCgqKkIQpGmzZn7+/iRJXjh/gbk/hw8f0a9/fwBAnbp18/Lyrl+9lpiQkJyU1KxSeRtFU3379Js1Zw5NUQiCGI0mtUrFdPASS8Tevj4SiSQqJrpe/XpcLi8wKPB9vU/8AwLWrFtbWFgUXLt2g0YNAQAGvf7cmTOpqakESSpVSgCASqlkgkIOh+Ps7Ozj61s3KsrXz/dJfLybu3tYWFi1e7ZarceOHdXpdEzr56nTpzHLAwMDRwwdlpeX9/D+g4f3H7Tv2GHw0CEymfTunTsIgtSPjWUu7x8ym81r1/x65vRpiqJiY2N7f/M1s5zD4bRs2fLG1WsvX77MysykaJrD4bi6ujZp3PjDo1Mlv3iRmJCIIIi7u3vz5s0BAG3atTt+7LharX729OnL5OT6sVXrSWma7tOv35Rpr08Nw/BZM2caDIa7d+5UlJfb6h8oinJ1df11/fo6detotVonJyfTB4dfgP77YFT3L+Hz+Y0aN27UuHFBfv6xI0czMtLTUtPSUlNRDCUIonJlKE3TGIbWbxArfhN1BQT4h4aHZ2VlWSyWnOwcAN4aIRhBEJIk09PTKIrCMax+bKztBSu2YQMul6vX6zMyMq0WC4vN5nK5tWrX/rSnRlM0z44XU6+ebYmjk4Tp3s8MApKdnaNUKAAAPr6+QbVeD83l5+8fGBhUWlJaVFRUXFLygaiOoihHJydbBm3Ht5NIJDSgKZqy/KXhVCia9g8IsHVSEQoFAACapkNDQ211oGKxmKZpmqIJ61tfDYvFatGiZaWul+GBAQEJCQkajaakuDioVlB2dhYAgMfjRdeLYdZBUTSmfr1zZ8+aTKa01DRbVEfRFJvN6fFlz/dVEgEADAZDQkICRVEsFqtjp462MdKEIlG79u0fP3pksViePXtGEASO47a76AN16wiChISGhoSG6rTax48evXz5Mj0tLS0lVafVoShKkRRN0QCA9PR05mRj6tWzdeBo1qxZszeNqAAAmenpJrMZABARGenq9vrr8/Xz3bR1q20djVptu3QdOnZk2jk5ODjk5ubm5uYgCCIWi+tGRzHr8O3t60bVfXD/vk6nzczIiG0Qm5eXZzSZAAAhoaHBISHMagKBoFHjxg/v3/9wEwKLxcKUAdM0bTabAQAkRaWmptA0zcLZ0TExthaHMfXq8e3tFQpFakoKAKCoqFCr0VAUVTs4ODzidSMkHMebNW9++dKlDxTXEQTx7OkzmqbZbHbbdu2Eb1oo8ux4HTp1vHXzptVqffEi0WQ2M/cPSVESoahJ06a2PTRs1MjJyamosFAhl5eWlgYHB/v7+ye9eCGXySeNnxAYFBgcEhIZGdm8Zcvab55ilVL1KvMVDQCXw6ncHjG2YYPjx4+bTCamPJvJEyiKsrOz69q9GzM6LlPf2rZd24MH9suksvv37stkMrFYfOvmDYvFIhAK2rVrzxRF5+XlMlc+Kub1l8Xj8aKiom/duGkwGDLSM2xRHUVRfHv+l7162Rposth6H1/fly9TpBXS8WPGBgXVCgkNiYiMaNGyVVCtoA98g2KxmKliTktN3b93b0Z6Rlpaanp6Oo7jNE2TBAEA8Pf3t3dwMBqNv93+LTEhMSQ0NDgkuH792K7du7+vPQMAoLSkJDM9AwFALBG3a9/etrxW7dqxDRvk5ubq9foXLxLbd+wAKj1NH9NkBQBgNBrX/bo2bts2o8kUEBg464c5thYmLxITp02ekpOdLXF0bNehg4OD/Y3rN/Lz8ubNnWs0GQcNGfK+fV6/fl2pVCII0rhpE2Zku6io6Dp16/x2+zeVSnX1ypUqUR1N0zw7XuVhNevVr+fl7ZWRniGTSktKSpiojgaAJMlGjRs3atIYRRDmHc9ogFHd/28wqvv3pLx8+evqNU+fPFGr1Qa9nqQoOzs7FouFIABB3npbRVFMIvm9HwOG406OjkycpNNp39kxsFqtcrkCQRAUw3bExZ08cYKmaQRBDAYDU3cgragwGo3v9l78JGhAs9lsfqUufjj2+r5ialaZ92kcx7Ozsvr0/pr5gaFpuiA/H0VRnVarkMs/tH+atrOz475pnowABGd91H1L03T1dbs0XblDIoZggKZRFLV16EMQgL2n/IDFYokrlXFyuVxHJydm9Cm9XqfT6Zj5J6xW64ply9avXcd8EUqlkqIoiqJKSoorJ8/BwcHD/UODj5jNZrlcztSbVxmmxM3djc1mWywWhVxpNpur7RVRLbVavW3LljOnT0srpDqdjmnt9DpeRBAERUiCUKlUgKYxDHN4fxGCXC5nzk4oFKLoB7sR0IDFZvn6+doWaDVag8GAYZhOp5s2eQqHw2F2VVFejiCI2WyuqCgHADA1rQAAkVhcuUTH0dERw3Hrx/3K2ljNZpVKjSAIgiK7du48feoUc1C9Xs8MDymtqLBarTqtjiBJAIBELGGzfn9kmC60H4jqzGazXCEHNM1is5mSSxt3dw82m00QhFyuMJvMr1/LaMDlckSi37tzOggEDg4ONABWi0Wr1bBYrOEjR2RnZaWkpJAkmfIyJelF0umTpwRCYcMGDSZPmxoeEWE0GdUqFTOi5MrlKzau38CclFqtAgAQBFFeVs5E6gAAQNN8e3tPz7cG5ggJDW3YsNGF8+ezsl69SEz09PRMepEEAAgODmZKyDQajUFvwDBMr9f/MGcOj8tjDiGTSQEAJEmWFL91V4uEosotZfl8/sjRo3JycjLS00mSfPky+cWLxFMn2QLBr40aN54ybSpTjVCt327f3rh+Q1pqqk6n0+v1TPqZO4HJM0PCQoePGL5h3Xq1Wq1UKu/fu3fv7t2D+w84OTl93eebESNHCt7uLctQqdV6vZ4GQCAQVhmCwNvbGwBAUZRMKqMo6s+OYqPT6ZYvXXrowEGCIGrVrr1i5U+2UNtsNu/asTMrK4vL5X43ZfLgoUNRFP2ia9cJ48YXFRbu3LGzabNmTCvkKkpLSn67dRtFURzH9Xp93LbtFEkiCEKRFHND3vntt0FDhjC9+G3fAofDrRzX8vl8kUgMaNpqtWo0v/+IIAji4+sDx9epSWBU9y8pKiqaM2vW0ydPmf7zrVq3rle/Xk5O7umTJ2kaYNhbeQdN09a3h7qlAWBy0vf2wkMQAAACgMFgoAiCycUxDPPz97eYzY5Ojp94qOJ3Dv52toBU+Zg5utVqVSoUTKTFNPx3dHREUBTH/2A4MQzDkDfZK/Km4KFaFPX7jy5BkMxFq7IO/XY/39dLPnBt39o/ZbX+/tX8HjgiAMPwykfSarQmg5E5cRzHAwICrFarrQCDweZwuNwPTVFg+8ZpmmZGtK6cEubQKPpH3ecqIUlyw7r1WzZvRhGEy+U2aNAgpl49oUi0Z9cuqVSKMuOnIQgzWqGtRKT6tKGvD0pYiWqvsw0NaBzHKw/YYauCpGlarVJhKMpcKC6XW6tWLavVysw+h75526kSS334cO9VaRODXl/5MfH19bVarU7OTswQjK/PiyRoQL+9gz8YRRLDUIAggKarJJgiyTdfFoqgCHhzz5AUVSU2fX07oQiGYgCAevXrb9sRd/78+etXr6anpZtMJpIkNWr1xQsXZDLZ9l07MQwDyOuttFqtyfj7LRcUGGg2m4VCoe0saABYOIv3dqt8Ho/Xtl27mzduGI3G327f9vbxVigUKIq2bNWKaaRhO2uapjVqtUGrY3bHYrECAwOtVqvD2xPocbncKl1EGzRsGLdzx4Xz569du5aZnsGchVqtPn/unEIh37R1a7WjO71ITJw1Y2ZhYSGO4x4eHtExMXWj6j64/+D2rVssFgvFmNgOGTt+fFR09NkzZ+7fu1dSXEIQhNlsLi0tXbvmV4qipk6f/m5khqHYm3dLinr7xY980xMCw//02Gw6rXbpkiWHDh4krETdunWXrlgeFR1t+1QqlaakpCAI4urm2rZdOyZV9WNjIyIjiouKysvK0tPTq43q7t29V1hYiGEYTdOXLlw8f/YcsxzHcWZcgpycnAf373/Tp49tEwRBKIp8qwoIAJqmAIK8vkvfQFGEz69+zB3o/ykY1f1L7vx2JyX5JY7jjZo0+ennn9093Nls9u6du04cO4a83amdqVHNz8+3/XRZrdbysjIAAIZh1WZ/bDbb2dmZpmmKpsdNGN/7669tubxapeLb2wsEgk87q9if4ujoyGGztRpNWHj4xi2bmRyfJMnysjIcx+3t7SUfMWzVx6Bp2mz+PeTSaNQfWWnykRAEsVgsebm5tiUGg6G8rAxBEDabI3GUODg4CARCiqLYbPaPSxc3btyEBgABQKFQGIxGe769sFLBDFNA+OEyNh6P5+bm9iIx0Ww252Rnt6w0fkpuTq7ZbAY07eHh8fGzVxUWFFy5fBnQtLOry9Lly5u3aMGM27d/715A0wgCaACYDq0AAIIgmNZ1DI1G8/TJUz7fTiyRBAYGurm5M+XHpaUlFouF+VqtVmv848cAAJFIHBAYYLuxEQSpHLsLhAIHBweFTCYQCjdu2RIYFAgAQACoqKggCMLe3p4Z3s/JyRFn4QRBlJeVmsxmW3ltcVGR1Wr9sz+6bDbb0dGRCY7HjBv3Td8+vz8majXfzk4gFLLZbImjhM1mm0ymstJSvV5na+xYkF/w4WlFuFyum6sbAMBsNufm5Fb+KCcn22w20zTt6enJ5XINBgNzTXRabVFhoa11gUIuZ3oe8O34YrGEoiiDwcC35/fr33/osGFlZWXPnz59+ODhjevX1Wp1enp6YkJCs+bNJRIJTdMYhi34cVGzZs2YW06pVOr0egd7e6FQiKKoLXZBMdRWlG7TvEULP3//tNTUO7/dEQgFBEG4uLi0fVM1KRAK7e3tSZJ0EDis+vXXiIgIZrlcJjObLfb29iKx6Pd90TSKoVilQ5AkaTQYHRwc+g8cMGzE8NKS0mdPnz188ODG9RsajTo1JSXpRRLTJ6MymqYvXrhQXFyM4/hXvXt/P2e2RCLBcbywsIgkSVtnL6vFajDoA4OC5sydS9N0ZkbG06dPb12/8fz5c4vFcvPGzeEjR75bFevo6CgUCisqKpQKRVFhoZ+fH7OcounsV68AABiGe3l5/6kbzGw2/7Ly50MHDiII0rhJk1VrVvv4+lZewWI2m0wmhCkrrhRoMq9tFEUxfV+qMBgM165dZUZ8pGkax/HKOQbzEmI2ma9cvNS9R4/KDXONBmNubl50zOt2IGqVWiaVAQB4VVtUI6yPq/qA/r+AfWD/JdKKCoIkaZr2D/D39fNlfjaeP3vGVI5UqSdEEOTu3bsvk5OZPxMTEl68eIEgiJ2dXUhYWJX1mQc7IiIcQ1GCIJ48eszhcJgw7sTRYxPHT5g2ecq1K1eYHEoukx87cnT/3n1XLl36V1rF0gCAoKAgZmC83Nyc/Lw8Jm3FxcUzp02fPOm71atWa9Sav3kYHs8OAEBRVFFhIfOzbTabHz18aDabP3HlAk1funjJ1hP5/t17OTk5AABnZ2cfHx+enV1wSDAAwGAwPI1/6iAQCAQCHp+/ZfPm7yZMmDFt2vNnz3/fE1Ok+cHUcbnc6JgYDEUpijp79mz5m+MW5BdcvHCBoigcx5s2b/bxPz9yuUKv0yEIIhAIo6KimcEUnsY/UalUCIra7qs6desylXr37t6zneztW7dGDR/eq3uPJT/+SFFURGSEvb09iqKJiYlpqanMOq8yMydP/K53zy8njh8vk8nQN8WfCIKg6O+JdHZ2DgwMpGhaIZe/SExgbgkagJUrfpo0YeK8OT9kZ2UDAGqHhDBvI+lp6Y8fPmS2zc/Pv3Xj5h9dOWB7WaJoiinXQVE0sk4kgiBWq/XZ06c4i8Uc99SJE99NmDB18uQrly8DAPwDApycnREEycrKun/v/uvrJpNduXL5wxOFoShaL7YBMy7MpYsXCvLzmeXl5eXnzp4jSRLH8YYNG7LZbOYWRVFUr9efPXOGCfIAANeuXpPL5QAATy8vbx/vtJTUcaNGf9un33cTJ+l0uoCAgN7ffPPLmtVh4eEEQVA0bTKZuFwuU4NpNBrjHz9mbjkHgWD71m2Txk/4fvqMx48fV75W1RZ1u7q5tmjZEkGQosLC1JcpNE3Xj421Nd1zdHQMrBVE07RapU589py5aBiGrlm96ruJE2fNmGHrYg9e39VI5e8m6cWLsaNG9e/bb+p3k41GU2BQ0Dd9+/zy65rg0GCSJCmKtliqiWaYkbqZ/4eEhri4uOA4rlAoXiYnowgC6NfHOHTgwJBBg/p81Xvn9jiBQFA/NnbM2LEzZ8+ys7OjadpqtVb7Xufs7BwWHk7TtFqtOXnihC0nfPTgAXO5JBJx/dg/N2fDqRMnmJ7LHA6ndu3ajx89PnTgwMEDBw7s23f2zBm9TicUCiUSMU3T0oqKZ0+fMlvl5+VnpmcgCMLj8aodZz4zIz3h2TMMxdhs9tRp09Zv2rh+45t/mzaOHDOamfXh6dOntmcQAMDc5OfPnbM1bL1z505xcTEAwNPLy7NSXS0AAPkHJiiCPiMYpP9L3NzdcBaLJIjLFy85Ozt7eXlfvXLl1s2bGI6RJGk0GGy/8gAAHMcL8vOnfje5/8ABCAAH9x8oLyujaTq2QYM6depUu/827dofPXzk1atX165dmzRhQvsOHXOysw7s219RUSESiWxNsgoLC5b8+KNCoYiOiYmuV4/7N2Yo/3j+Af5t2rXdGbdDJpXNnDa9T79+IpHw8MFDCQkJBEFE1omsPEL9XxMYGMjMZnP1yhWxRBIaGnrj+vWrV65U7kPwSeAsVmJCwvix47786iulQn5g336mSVabdu2YFjndune/cO68Wq3ev2+fWqNu0rRZ/OPHJ44d1+l0fn7+bm7Vj8z3AV26fnH29OmUlJQXCYnjRo/5steXFA2OHz2WlppKUVTTli2ZLtUfycnJyUEgkMlkhQUFC+fPb9e+fVpa2onjx81mMzO0G1P137Zd2wP792ekpycmJEydPKVHz55KpeLA/v0kSbI5nJYtW7JYrIjIyGbNm1+6eLG8rHz2zO/79u/PYrOOHz0ml8twFqte/Xqenp62eVqrsLOz69a9+8MHD4xG469r1pSUlIaGhV2/evX6tWt6vZ7NYbu5uwEAQkNDmzZtxow9Nm/OD/369xeLxUePHklNS2WxWNQHxxnh8nhMiU55Wfm+Pfvc3d07durYoWPHgwcO5ObkXr1yZfLEiZ06dc7Kytq/d69cJncQOLi7ewAAfHx8OnTosHPHDqPRuGzJktycXHd3t7Nnzjx78pTFZldboGLTsWOHE8eOvUhMTE1JnTBufO9vvkZR9PTJk4kJCTRNx9Sr17VHdwB+fy3Dcfzi+QuElejQsWNqaurRw4eZSL3LF124XK7E0VEmkyUlJXEyMiZPmtS9e3cej/fkyZOXyckIgri6uDA9SLp80fXcmbNSqfTIoUM6ra5Js2aJCc+PHz2qUqv1fn7uHp4AgA9Fo0zKO3U8dvQoEwTY2dl16NjBVouK43iPnj1+u3XbaDRu3rRJKpNGRcfcvnnzwrkLRqMxPDy82pk5bJxdXCoqKpKTkjIzMqZMnNSlW1cuh/sk/nF6ahqCIG7u7rZ+MJUxo14zUxHu27sXAMDh8s6ePv382TMMxymaMhj0AAAnF+fkpGSj0Ri3fbtMJott0ECn150/e4658SLrRFZp88DAcOzrPn3u3rmjUirPnTlr1BvadehQUlJ89PARZpTvrt272Uq5PkZRYeHuXbvNZjOLxSJJ8vixY0cOH2Y+IgjC39+/bt26vn5+rVq3eZH4wmw2r1yxoqiwyMnZ6dTxE0y1TGTduuFvCkEru379hlQqAzQdEho6bMRwu7fnHakfG3vvtzsvX75UqVSXLl6KjomxhdM4ht+6ceO7SZO6fNG1ID/v4P4DTJ+qLl2/+EA/EqgGgFHdJ8Z0/DSZTCiGVm5b06xZ84iIiPjHj+Vy+c8/rSRJksPhNGjUMD01raKiIisrS6vROggEVqvVaDSyWazWbVo/evho5rTpOIZhOE7TdO3g4AnfTWLq2iiKMpvNJpPJ1tGvVq2gCZMmzps7T6VUnj195vTJU8xQAnw+f8y4sbbx3ymKMhmNRqORqQ/6mDNiTud97cSZT80mU+VWXwRBMHUNTESFoujIUaNSU1IfPniQkZGxcP58psIIQZCmTZuOnzjxfXP7ML0XTSaT5e3UWq1Wk8mEoIgtSU2bNwsJDU1OSlKpVBvXr7darXZ2dq3btklOfFFQWGirOCMJgrlolYfIYlLLzHhW5RAkSdoOYbFYDAaDh4dH3ai6d367c+f2bRTDmO54jRo3Hj5yJM5iAQBiGzQYOWrU+nXr1Gr1vj179+zajSIIgqKOjo7TZ04PCQmpfF4f8y34+fl9P2fOvDlz8vPzHz548ODePaZdIIqi9erXnzt/nm2CEOZEKIr6QCDr5eXVsVPHTRs2ms3ms2fOnDxxAtB0aHi4k6NjclJycXFxUVGxp5eXl7f3tOnT586ZU1JScuvmzevXriEAQTEUw7Cu3bv1/uYbAACfz588dUpBQUHSixdJSUmJiYk0TWMoiqBodEzMmLFjURSlacp2/1RpF9j5iy4JCc/37dkrq5CuX7uWKXJGEcTXz2/GzO9dXFwAAGw2e9yE8ZkZGcnJyTk5OT8uWkQQhEgkatW61ZP4J2q12vY9MudOkL+3JXJzc/Pw9MzLy1MqlcuWLHFydAwODYmKivpu8uRFCxZKpdJzZ86eOXWaeUzs7OzGjh/ftFlTAACO4yNGjnyZ8vLhvfvFRcUrli1jht5t2arVi8REtUr1gXpYdw+PH+bOnT1r1qvMzKdPnjx5/Jj5sjAUDY+I+GH+PKYbAXMDGAyGWrVreXv7nD195uSJEziOM19rj549en31FQDA3cP9+zlzvp8xo7Cg4PbNWzev3wBvmlry+fyhw4cFBQUBAOrVrzdi1KjVv/yiVmsO7N+/b+9eZh2xWDx56tSIiPCPueVCw8KioqMuXbiIIEhgYGCjt+c4ad2m7cBBg3bExSkUii2bNjNfFgKAp5fnzNnfM+30bZlSlUN4eXnNnD179syZJSUl169fv3r1qu0s7O3th48Y7l/dMI0IgnTq0uX0qVP5+fm5Obnz584jSVIgEDRo2ODZ02darTYjI5MkyfYdOgwbOWLH1m1KpTJu+/bt27YBpvEigoSFhw8bPvx9UwA3bdpkyrSpP//0s0qlPHPmzKlTp5jCXTab3bVbt0mTJ9sqOqvNH6p48ODBy+RkW3vKyqfPbE5SFABg4OBByUlJ169dK8jLX7p4MTO0DYIgfn5+EyZNfLeRjLSi4vLFi0ajEcewVq1b2b0zlZyzs3PzFi0SnicQJHH9ypUhQ4dyeVwmAVwe19PL69rlqxfPX8BQlPkR+aJrV9vUO0wWV817L/06V2dmrXxryTtPMfQfBKO6T4zD4cTGxkrEEg6X41KpI5inl+eKlSvXrlmTlppqsVgkjpIePb/s2r3bxvXrs15lObs4a7RaB4EgJDS0Tdu29vb2E7+bVFRUtHvnrtKSEhzHwyMjxk+YaJtHSCQSNW/eXKVSBQYF2rKtL7/6ytnFZf/efRkZGSaTiYXj7h4effv17dajh629sEAobNGqlVarDapV62PmScQwLKZePT7fDsUwj3emiscwrH79+gKBwN6eX/n9z9/fv227tgAgtnFMPL28NmzetGfnrtu3b6tVKoqmBQ4OTZs1HTZiRJXqgMr4fH7z5s3VarWfn5+tyQiCIJGRkQa9gcNhu70pJPDy8lq56peN69envEyhKMrFxblX794tWrRYv3ZdYWFBRGQkcwW8fHxat21DWInK3e4CgwKZxssBAQG2Q4SFhbVt1w7HcWZ+awzDoqKjaRq4ubtP/G7i/bv3Tx4/LpPJuFxuoyaNx4wb5+39+ixwHB83cYKfv//hQ4eKigrNZjOHzfEPCBg8ZEirNq2ZdXh2dk2aNg0KquXi4vLhAeUZrdu03r1v3/69e+PjH6vVGgQAkVjcslXLgYMGM2Var08kMLBN27Y0Tfu/OZF3YTg28bvvOBzu1cuX1RoNj8utF1t/9NixCc8TTp84QQOgeDM+X8fOnZycnXft2JGWlmYwGHAcc3R07tCh/YDBg2w/P6FhYVu2bYuL2/708WO1WoOiKDPsyLCRI5hfehbOiomJ4XC4PB63yviIPB5v7vz5wcEhZ8+cKS0tJQiCx+WGhYcPGzkiplIxSXBIyIbNmzdv2PD02TOr1erq4tJvwIDw8LD1a9cpFIqwN9Mf+fn7t2nblqSoWm9uOYFA8N2UKSiCFJcU0xTt5e2N4xgA4MuvvnJxdd27e8+rV6+MRgMLZ7l7uH/Tp2/PXl/aust4enutWbt2y8ZNDx8+MBpNzk6Ovb7+uknTphvWri0rK68bFfWBjjWNmjTetXfPgb37Hj58oFQomT7CTZs3HzxkiG1WeC6X26hxY09Pz7DwiGEjhh8+eOj61as6nc7BwaFj587DR46wdT1u2arltri4Pbt3vUxK1up0NE1xuTw/P78+fft07NyZqUtFUXTUmNG+vr6HDh4syM83W8xsFts/IGDAoIG2YTu4XG7jxo19fHxdXFyqnR2Yz+f36duXJAiCINu2b1flYedyuTNnzwqsFXTqxInSklKL1cLj8mrVrj1i1IjYBg1tF7xZ8+Yqlcrb27tK3tK2XdttO3bs3b375cuXOp2Opmkel+sf4N+nb7/2HTu8r/1Anbp1Vq5atXXz5rzcXIqiPDw9+n07ICqq7prVq5mJts1ms52d3YyZM0NDQk4cP1FUVGg2mVEUFQiFUVFRw0eO/MDIKRiODx46NCQk9OCBA6mpqXqdDmfhLi6u3bp36/3NN5UvUWDg6/zhA48VTVHNmzfHq4sgSZJ0d3djHnMnJ6fVa389fPDQlcuXZVIpQZJ8O7uo6KhhI0bY7uTKiouLfXx9XVxcBAKhbb7ByhAE6d6je1Z2lkFv4HA4xcVFgUFBCECY4XVmzZn9IiHxwoULBr3eQSBo3ab16DFjxZLXGXVISEjbdu0wDPN5e85GnIVHx0RjGMblciWOkreWfNJRTqF/CPKRBTbQJ0HTdH5+vslodHN3r7ZqoAqj0VhYWMjlcKo0vP2wosIitUbN5XC8fLw57I+a4vpfo1KpysvKKYp0dnH5wDhtfw1FUXl5eVar1cvTk/+eydQ/FY1aXVpS6iB08PDwrHYFZtB2vV5vz7f39vGp3KrsL1MqleXl5SiCurm7/c3uL1KpVCqVCgRCL6/q029TUlysVKk4bLaHp+f7YlCZTCatqEBR1MXFRfwn832z2VxYWGgxmwVCodf7Q/zCgkKD0eDl5VVtUPI+BoOhsLAQAODu7l7lihUVFanVai6X6+XtzXnPoD8lJSUatcbDw73aATI+TK1Wl5WWAQS4urr+4cMuraiQyxVOzk7veyikFVKZTMq8Dnl5V9+Qn6KogoICvV7Pt7Pz8fFBP27W2j/FarUWFhYYjSahQFB5+tGPVFFeIZfLaJoWfPTmVoslv6CAJElvb+8PvAKRJFlUVKTTajEMc3Fx+VMdsMrKypQKBYfD8fTy+ph33b/PoDeUlBRbLBaxROJeXXO6v6yiomLE0GEJz59LJJK9Bw7UjapbVlauVMidnJ2r7WkH1TwwqoMgCIKgmqByVLd7377omOg/3gaqWWDnFwiCIAiqIag3PndCoM8DRnUQBEEQVBMgCMLlce3s7Hg83p+dGAOqGWANLARBEATVBBaL5WVyskajYbFYderU+cCMf1BNBaM6CIIgCIKgmgCW0EIQBEEQBNUEMKqDIAiCIAiqCWBUB0EQBEEQVBPAuSVquMLCQoNeHxRUC8MxAIBer1cqlcxHCIJIJBLevzIVLARBEARB/zQY1X1KZrP52dOn+Xl5Vivh6uZaPzbWsbohzlNTUpKTkk1mk4+PT8NGjaodMD07Kzs5OUmlUvH5/PCIiLCwsHfXKS8vS3iWUFFRwWLhgbVqRUVFsd8eIr+srGz8mLGApvcdPCgUCQEAp46f2LFjB01RFE2zcHzegvmt2rT5RGcPQRAEQdDnBKO6T4Smb968tX7d2vS0NKvFSlEUi8Vyd3cfOXpUn379bBNFq9XqX1etOXniuF6vpyiKxWJHRIbP+uGH2NhY257Ky8o3rFt3/tw5nU5HkiSKony+Xes2bWfO+t7D8/XkTnq9fs/u3fv27FHIFVarFUVRDodTp27dWXNm142KAgCQJJmSkvLLTyufPX0aFRVFAxoAQNP002dP8/PygmoFsVgsDMMxDN4AEARBEFRDwJFNPo3Hjx6NHzO2vLwcRRCAIAgAzGXl8XjLVqzo1fsrAABFUStXrNiyaTN4c9ERAEiKCo+I2L5zh7e3NwDAoDfMmDbt3JkzCIrSNI2iKEVRKIoSBPFF164//fKzSCSiaXrt6tVr166jSLLyOiRJhoeHb9yyOTAoKDUlddjgwTq9HgHAx8fnwJHDIpFIo9YMHTyYJMkNmzdJJBIMw3AWjqGffrJICIIgCIL+fbC3xCdgsVj27dlbXl7OYrHCIyPnzJs7b8H8qJhoDMMMev2B/ftkMhkAIC017fjRYwAAvr39gEED58z9oVbt2hiGpaemHT18mKYoAMD9e/euXb2K4bhQKBw0eNDyn1b069/fzs6OzWbfunHj3p07AIDsrKzDhw7TFMXlcrt88cWyFSvGT5zg7OzMYrFSU1NPnTwJADCbzTH16q1dt87L28s2dYxMJpXJZAX5+QP79e/9Za9TJ07QFIzpIQiCIKiGgBVwn0BRUVHSixdWi8Xe3n7egvmNmzQBAETXrz988BCFQlFcXFJRUeHk5PTgwX25XE7TdJPmzeYvXMjhcJydXb6fMcNsNj988EA1fLhYIrl//75WowEI0rdf38XLliEI8k2fPlqd9sK58wRBvMp8BQBISEgoLi62Wq31Y2NX/LxSJBIBALgc7tpffwUApKelUxQVFh62buMGk8lIURSCvI7dS0tKVUolj8fz9fN7+fLlwnkLxGJJx86dPtd1gyAIgiDoE4JR3SfA4/F69f4qLzfP3t4+IiKCWejh7iEUCuVyOYaiTLu6tNRUkiQxDIuJjuJwOACA6HoxTk5OJSUlhYWFJSUlYomkXr16Q4YNU6tVnTp3QRAEAIDhuJ+vH7NPnIUDALx9fIYOHy6TSps2a8qEdAAAPz8/FotltVpZLBaCIMz+rVaicjpjGzY4dPSovb29m7vbpQsXp0+deuP69XYd2mMYrISFIAiCoP/3YFT3Cbi7u0+eOrXKwuzsLJlMRtO0t4+3q5ubyWSqKK+gaRrHcWdnV2YdBwcHgVBYUlKi0+qkUikAoFuP7t16dK+8H7PZnJqaStO0nZ1d7eBgAECjRo0aNWpU5XApKSlmsxlFkLDwMCYcfFf84/hzZ8/07Pmlj6+Pi6sLjuNWq/WTXAEIgiAIgj47GNX9IyrKK7Zu2qzRaDgcTtfuPYQCgVwu1+v1CAAYhtnxXw9lwmaz3xSqWXVa3bv7oWn68MFDDx88oGm6fmxsbIMG1R7u7p27J0+coCjKPyCgfceO70uV2WQ6fvRYYkJiv/79r1+7ZrVaGzdtAgvqIAiCIKhmgL0lPj25XD5/7ty7d+7QFNWmbZuevXoCAEiSJEiCBgAgwNbtFEEQDEUBABRNVVtsduzo0TWrVun1emdn5zHjxkkkknfXefTo0YK5P5SXl3M4nGEjhgcHB1f+FEEQW9FdsxbNJ02ZnJeXN2fWrMePHg0aMrhrt26f8swhCIIgCPp8YFndJ1ZcVLRg3vyrV64AAJq3bPnDvPn2fHsAAIIgKNNrgbYNbAJomqZoJtJDcPytMjOCIA7u3//Tip+0arWjk9PsuT80a97s3cPdvnlzzuw5RYWFXC535OjR3w4YULn6VSgUHjxyBAAgEAgAABwOZ+KkSV27dSsqLPTw9AwICIAFdRAEQRBUY8Co7lMqLCiYOX3G/Xv3aJpu1br18p9WeHl7Mx+xWCwuhwMAoGnaYjEzCwmCsFotAAAMx7hcrm0/FEXFbdu27te1Go3G2cV5wcJFPXt9+e7hLl+8tHD+/MLCQjs7u3ETxo8dP9423DEDRdEqxXsoigYGBgYGBn7S84YgCIIg6PODUd0nU5Cfz4R0OI537d593vz5Lq4utk/t7OxEIhECAEEQSpWKWWg0GPU6PQCAb8eXvJlbjCCIuG3bVv/8i8ls9vf3X/Djonbt2797uCuXL8+ZNUsmk0kkjlOmThk6Yvj7OklAEARBEPS/AEZ1n4ZarV60cNHDBw9wHO/cpcuSZUuFQmHlFdhstrevL4KiBEG8yshkFhYXFzMj2Dk7O7u5uTMLT504sX7tOpPZ7O7hseynFc1btHj3cE/i439cuEgqlTo4OEyfOWPw0CH/8PlBEARBEPRfB6O6T4CiqN27dt24dg3HcQzDZDLZD7NmEwTBfCQUCid8N8nX17dho4b79uwxm803b964dPGif0DAnl27dDodAKBOVF2mYC89Lf3X1WsMej2O4ywW6/DBQwf27WeOQhDEF926fdnrS6VC8fNPK4sKC5kutPfv3Xv08CHTVo8kycg6dSZMmoiisB8MBEEQBP1vgVHdJ1CQn3/21GkAAIIgFEU9iY+3TdJFkqSzs/PAwYOAr2/DRo3qx8beuX27tKR02uSpPB5XqVTSNC0Sibr36MlisWiaPn7sWGFhIZvNBgCUlpQUFhTYjmKxWAKDggD48uaNm8+fPWOxWAAAjUZz9coVW/cLq9VqNBopajyM6iAIgiDofw2M6j6BR48epaenkwSBvBNLkSRptVqZqEsgEPwwb67ZbH786JFGrdZo1ICmxRLJxO8mNW3WFABQUVHx2+1bBoOh2lFOLBYLTVEURV29ckWlVLLY7HfXsVqtTBkhBEEQBEH/axBbMQ/0l6W8fJmYkIggCHinuwJN0Twet1Xr1rbOEKWlpRfOX0hKTNQb9F6eXu07dWzatCnT0UGtVt++eUun074bHQIAKJKKrBMZHhFx+9atstIyFKtuHYry9PRs2aoVLKuDIAiCoP81MKr7PEiSJEmSXV15GwRBEARB0F8AozoIgiAIgqCaANbTQRAEQRAE1QQwqoMgCIIgCKoJYFQHQRAEQRBUE8CoDoIgCIIgqCaAUR0EQRAEQVBNAKM6CIIgCIKgmgBGdRAEQRAEQTUBjOogCIIgCIJqAhjVQRAEQRAE1QQwqoMgCIIgCKoJYFQHQRAEQRBUE8CoDoIgCIIgqCaAUR0EQRAEQVBNAKM6CIIgCIKgmgBGdRAEQRAEQTUBjOogCIIgCIJqAhjVQRAEQRAE1QQwqoMgCIIgCKoJYFQHQRAEQRBUE8CoDoIgCIIgqCaAUR0EQRAEQVBNAKM6CIIgCIKgmgBGdRAEQRAEQTUBjOogCIIgCIJqAhjVQRAEQRAE1QQwqoMgCIIgCKoJYFQHQRAEQRBUE8CoDoIgCIIgqCaAUR0EQRAEQVBNAKM6CIIgCIKgmgBGdRAEQRAEQTUBjOogCIIgCIJqAhjV/c+5e+fO/Xv3P3cqIAj6X3H+3LmXycmfOxUQ9D8B/9wJgP5t5WVlKIZ97lRAEPS/oqiwSCQSfe5UQND/BFhW9z8HRVEUhd87BEH/EhRFEQT53KmAoP8J8NcdgiAIgiCoJoBRHQRBEARBUE0AozoIgiAIgqCaAEZ1EARBEARBNQGM6iAIgiAIgmoCOLLJZ2A2m/V6PZ/P53A4lZfTNK3VahEA7B0cPkuXMSYBNE0LhcIqH1ksFr1eb2dnVyXN/zV6nb6ouIgiSVdXN4mj5HMnpxoURWm1WgzD7Pl88Im+5d/3aW//SXYIQZ+LXq+3WCxCobBKV32CILRaLYfDsbOz+4SHo2laq9EgKOrg4PAJd/vxLGZLQWGBxWyROEpcXd3+432FaZrWabUAAHsHBwCATqejKdpB8Al+sLRaLUVRAoEAdpf+m2BZ3Wdw786d4UOG/rp6tdlsrrzcoDcsXbx4+dJlBr3+syTMbDavWLZs5LDhjx89qvLR40ePxo4effe3O58lYR+ptKRk2pQpX3/Zq1ePnhfOn//cyameUqH8fvqMjevXEwTxd/ZjtVofPXwkk8kAAAq5Yua0aZs2bPyb+4Sgz25nXNzgAQPPnjlTZXluTu7EceOOHTnyaQ9nNBoXLVy45pdVVXLjf4dWq138449f9+rVs3v3Hdu2//sJ+LMMev3ypct+XrmSIAiLxfLT8hUL5s9n4jyKpJ7Ex5eWlv6F3dI0vXbNmoXz5lsslk+d5P85sKzuM5BKZc+ePk15+TKoVq2veve2LScIIuXlSwzDCZL8LAkjSTItNe3e3bsIgqzfuMHF1dX2kVwufxr/pEePHp8lYR/p4oWLFy9c+Kp375j69Ro2bPi5k1M9GtAESZIU9Tf3szNux8H9B7bv3OHk5AQAIAiSoj7PbQNBn1B2dvaD+/c1anVwSEhoaKhtuV6ve/70aXBIyKc9HEVRL5NfOjo6Un/7kfwLHj96fOTQoQaNGrVr3y4yMvK/X0pFkGRKSgqHwyFJEkEQiiJJimTqHA4eOLBty5Zf1693d3f/s7ulaTozI6OkpOSzfAs1DIzqPgMURbhcrslk2rxhY2yDBj4+PraPWCwWhn3OL4XFYvH5/EcPH+7ds2f6zJm25SiKstns//jwxeVlZc7OTpMmf+cfEPC50/JeTk5O2+K2IwjyNysapFKp0Whgs1kAACdnp+07dwAEQf/7PwsQ9EE4jvP5/Ozs7E0bNvy8ahWXy2WWIwjCYrOxf2BeHBaLheM4jn+GjFculbLZ7BEjR7Rq3frfP/pfgGEYc7loiubacZcuX04DwGQ7MqlUp9OxWay/sFsURXEcZ/2lbaEqYFT3GdA0YLPZTZs1i3/8eP2aX5esWP6+xmo0TWdmZiQ8S1AqFT4+vlEx0Z6env9o2iiaCggMFIvFe3fvadS4cbPmzd+3ZllpWXJyUnZWNk1Tvn7+0dFR7h4eAAC9Xn/2zBlfX7/AwIAHDx6Wl5XWql27cZMmPB7vRWLis6dPORxuo8aNgmrVsu1KqVA+T3ie/eoVl8erWzcqIiIce38Oq1IqX7x4kZGWzuZyIiMjIyIiOFyuXq87efzE0ydPrFZix/a4yLp1unXv/m77G6VS+SLxRWZ6OofLiYiMjIiMZK68Vqs9e/p0QGAAh8N9+uRpUFBQk2ZNuVxuWVnZk8fxhUWFAQEBDRo0uHfvHoZhHTt1Yn4ASkpKkpOScnJyAA38/f2jYqLd3NwAADqd7syp00G1gnx9/R48uF9eVu7r51s/NtbFxQUAoNfpz5w57ejk1LFjx8TnCbdv3/49EEMQFEFYbHanzp38/P0BABUVFclJydlZWVbC6uPtE1MvxtPLi6bBhXPnnj97ZjQad2zf3rJ16yZNm546edLZ2bld+/ZM5K1QKF4kJmamZ/Ds7CIiIyIiI9lsNnOmZ06fDg4O9vL2fnD/fkV5hZ+/X/3YWGdn579wt0DQJ0dTlIuLS0hY6KULF5s0adLv22/fXYewWi9evGgymnp82ZN5hK1W64Xz560Wa89eX6IoeuniJRRBGjdtEv84Pic7y8vbu2mzZhKJ5FVm5qOHDy0Wa7369SPrRNpiRAzHSkpKEhMSysvKg2rVqle/XuW2xQaD4UViYmpKKoIgoWFhUdFRPB4PAGA2m08eP+Hp5SkUCp88jvf29WnarNm7bVsNBkNyUlLKyxSKJEPCQuvUrSsQCEiSPHfm7JXLl0mSPHXiZG5ObveePRwdHatsq5ArXr5MzsjIMJvNXp5edaOj/P39bZ8ajcaUly9TXqaYzebwiPDo6Gg7Pp/5SKvVJiclpaelAYBEREZGRdVlczgWs+XihfNcHs/Pz+/BvfvOLs4tW7UWCAUmkyk5KTnlZbLVag0NC4uKjq58FgqF4umTJznZOT4+3qFhYcxFQxCEJMkL589bLJZu3bvf/e3Oo4cPLRbL3j17WrVp3alzZxRFdTrdi8TEtNQ0FMMiwsPrRNW1xehMCp/GP8nIyHBzc23YqBGcx/JTgVHdZ0FTFPVF1y+cXZxPHDvetHnznr2+fHcli8WyddPmuO3bCYJwdHQsLi728fWdt2BBm7Zt/rmUUSQlFosnTJo4bfKUX1evCQ0LezejAQA8uH9/4bwF+fl57h7uRqOpuKioblTUL6tXhYaF6XS6Pbt2CRyEFqulqKgIACCTSgcNGezq6rZ3zx4cx0tLStw9PNauX1c/NhYAkJaaumj+gifx8e4eHgajwWQwDh46dMJ3k/hvsqfK0lJTF86b/+TJEzc3N4vZrNJoevXqNXvuDyiKPol/UlRcbLFYnj6JJ0myU+fOVbZNTU1dMHfes6dP3dzdzCazRqPu9VXv7+fMlkgkGrVmZ9wOFpul0+lNRqOnp2f92PqvMjNnTp+RmZ7u7uGhUqvr1IksKiyqHRzctl07HMd/u337x4WLigsL3Tw8jAZDUXFxbGz9n1etrlW7lkaj2bljh4uLi0GvLy4uxlmsosLCJk2arFr7q7e3t0aj2bJpc0REePv27XNyci6cO0cDgCAIiqIIABnpGXb2/NjY+n7+/s+ePVs4f356apq7h4fVaikuLAoOCf551eq60dEpKS8LCwoIgngS/8Tdw7NOnTpbNm6qE1W3dZs2KIomvUhaOH9+YmKCm5u7yWjU6rR9+vSZ8f33QpFIrVbv2L7d08NTo9GUlJTgOF5UVNS8RfNf1qz5p18YIOhj0ADgLNaIkSOl5RUbN2yoFxtbu3btKutYrNbDhw6plKqOnTsxUZ3FYjl04KBer+vS9QsWi3XqxImCgoJDhw6lJCdzOJySkpJOnTs3a95s+7btBEHI5XI2m71k2dIePXsyj15Bfv74MWOKi0s4bHZpaWnbdu0XLfnR29sbAFBaUrJ08ZLLly4xTR1kMlm3Hj1mz5nj4upiNpt379qFAGAwGA0GvbOLS3BISJWorrS0dMmiHy9fuiRxlGAYJq2QNm/RYuHiH319fZOSXmS+yqQoKjk5yWw2t23frkpmm56WNv+HuQkJCW5ubhRNFxUUePn4/PTzSuZlWyqVLl28+OK580KRCMMwqVTarXv3+YsWSiSSvLy8JYsW3b55y8nZmSRJpVI5eMiQ6TNn0DQ4evhIUVERm81WazQ8Ljc4NJSiqaU/Lj596pRILGKz2BUVFS1bt1r4449eXl4AgNyc3DmzZz+6/8DD08NgMPj4+irkcj9/fwRFmGuu1WratWuXmZmZl5dHEETC8+fOLi6dv+hSVFi4eNGP169dc3ZxoSlKrpB/9VXvmbO+d3RyYq7qovkLLl++7ObmZrVa3T3cjQYjz473D95Y/zto6F93+ODB4MBaF86dz8/Pb96kaatmzXNzcmiaVilVPbt1+6rnlyqViqbpwwcPBfj4Thw3vqCgQKVSxT+O79SufePYBslJyX/n6CeOHTt18mS1H+l0ui+79+jW5QuDXr9xwwYfD8+fVqygSJKm6TOnT4fWqn344EGapsvLyzu2a9+8cZPnz56p1WqFQrEjLi7Iz3/xoh9pmq6oqOjauYu/t8/PK36Sy+WlpaWjho/wcnPv1rnLk/gnKpXqyqXLwYFB38+YSdO0XCb7queXTRs1/u3WbZVKJZfJ1v26tlZAwLYtW95Nnkwm+6bXV3XDI86cOq1UKmVS6ZpVq4P8/BfOn2+xWIxG4/wf5tarG/Ui8YXJZKIo6q1tpdKve31VNyLy7JkzzLarf/klyM9/0cKFBEGUlpS2b90mODDoxLFjSoVCLpcrFPKve33VsF79WzdvqlSqjPT0Af36e7q6jRs92mKxlJWVtWnZqnXzFkkvXjBXYMvmzYG+fitXrKBpurS0tGO79gE+vr+s/FkukykVig3r1gX4+K5ds4am6bLS0ratWk8YN85iNpvNZs0bapVqzS+ravkHbFi3niAIlUrVs2u3BjH14h89VqlUSqXy6OHDgb5+30+fQdO02WRaMG9+bHRMclKSxWwpKS5p06LlpAkTSJKsqKjo2a17dJ26Fy9cUCqVFRUVK1esCPLzX75kKUESJcXF7Vu3CfL1W7NqtUIuVyoUa9f86u/ts2H9+r9zU0HQB2zdvOXe3bsfufKU776LjY4pLCi4dPFirYDAcaPHGAwGmqYTExLqhIUtXbyYpmm9Xj9owIDuX3RlskqapnU63bd9+/Xs1k2n05nN5jEjR/l4eE6e9F1RYZFSqVy86EcvN/fmjZtcunhJpVQlJiQ2adCwT++vDXq9Xq/v2a27l5v7tMlTiouKlQrFvj17agcEzpo5kyCsVqt18qRJ4SEhx44cVSqVSqXy+JGjkaGhc2bNJghCo9F069IlwMd37569CoVCJpWRJFn5XIxG49TvJtfyD9i6ZYtCoVAqlYcPHgoPDhk2ZKhWqzWZTDvj4iJDwy5euGA0Gqtsq9PphgwcFBkaduP6DZVKpVIqz509Gx4SMnrESCtBEASxaP6CWv4BmzZslMvlSqVy44YNXu7uq3/5xWKxjB8zJiSo1uFDh5QKhVQqXbLoR293jwP79xuNxkHfDvDz9Fr361omwWazedGCBWG1g3fG7VAoFCql8vzZszF16k4cN95sNptMpgnjxoeHhJ44dlypVBYWFk4cN97L1W3wgAEmk8lgMAzs/22Pbt2USqXFbFm5fEVM3aiH9x+YzWaj0Th21Og6b/JqpUJ5cP/+sOCQRQsXkiRJkeS8OT8E+fnv3b1bqVCWlpTOnfODr6dXty5dmO8a+jv+082kajaCIHx8fMZPnFBQULBpw0ar1Ypir78OFEVNJtOZ06e9fXxmzJrp7e0tFApjG8TO+P778vLyq5cv/wvJGzhoUJMmTfbu2v3oYdX+sAiCdO/RY9HiH6NjYgQCgVgs7tqtq5eXV3lZGU3TCIIQhDU4JHjIsKESicTNza15i+ZsNrtX7971Y+sLhcImzZr4+fsXFxUBAOLj4xMTEsaOH9eiVUuhUChxdBw9dkxMTL3Tp05rtdoqx33y6PGLFy8GDxvavWcPkUjk6OQ0fuKEFq1aXbp4KT8/n8vlslgsBEGY4VeqtFp7/OhR0osXQ4cN69a9O7PthImTmrdocenChaLCQgzDCIIIj4ho37GjSCyWSCTxj+NfJicPGzmiVevWQqGwdnDw1OnTnZ2dCZKkaRpF0V5ffbXwxx8j69RhrkC37t3d3NzKSssAAAgCCKs1PCJi+MgREkdHkVjcrXt3VzfXvNw85vrYUsVmsx3euH/v3s64uJ69eg4bMRzDMIAgHTt1XLh4cWzDBkKhUCQSderSJSAwoLS0lKIoNodjO1kW+3VjFAQAFEUfPXiQ+vLliFEjO3fpIhKJnJ2dv5s8pVHjxhfOny8rKcUwzEpYI+rUGTZ8uFgiYdLm4uKSn5sH2ylD/xE0AARBtu/YsddXvc6fO3f29GkAAPgzTUZJknRydh45apSnl6dIJGrdpjWPx2vVunWnzp2EImHdqLrhkRHlZWUGg4GpSQwKCpo+c4aHp4dILP524MD2HTpcv3qttKT0Vear2zdv9enTt/c3X4tEIpFI9NU3X3fp2u3ypUuFhYUYhpEkGRAQ0K1bN7FY7OjkWKXl8atXr27euNGpS5cRI0eKxWKRSNSnX98+/fo9evAg4dkzDofD4XABAFwej8vlvttquWWrVgt//LFN2zZCoVAoErVr3z48PLyiosJqsZSWlFy7drVFy5YjR4+SSCQikWjQ4MFz582LiIzMzMy8d/fel7169enbVyQWOzk5jR0/fvrMGX5+/iRBkCTp6eXdo2dPJsEF+QUXL1zs2KnT0OHDxGKxUCT6olu33t98c+/e3VeZmXl5effv3evevVuv3l+JRCIvL6/J06b6+Pq+29eexWax2WwEADs7OzabnZqScue33wYMGMDk1SKxqN+337bv0OHi+QvlZeXl5eXXr11r267dtwMHisQiN3e3KVOn1qpdi/xM3QRrGFgD+xnRAIAeX375+NGjkydONGnapEOnTkzWhaKoXCYrLioKj4x0c/ewbRAWHubu7p6Rnv5Pp4ykKAcHhynTp40dNXr1L79sC9uBV2r04OzsPG7CeJlMlpyULJVWZL16Ff84vri4uE7dujRNAwBomvby8rZ/M/4Ti8Xi8XheXm8q+GiEw+EwMURGWjpJEPv27D198iSgAQAAIODVq1cIQMrLy6qMIJWVk42iSGz9+rYlLBYrNrb+vTt3SoqKg4KCaEADAKqNTrKzc1AUrR9baVs2K7ZB7P1790qKS2rVrgUA8PBw575p4JiZnoFhWHR0tG39wKBAHx8fmqIoinJ2dh4/cYJUKk1OSqqoqHiV+Sr+8ePy8nIURWmaBjSgAfD29rY17GOx2Vwej3kXr/bX6cnj+Hlz50XUqTNr9hymyY5QIBgzfrxSqUxOTpbL5K9eZSY8e56fX+Dp6WW7yFVPFkEoisrKymKx2fUrXSU2h10/tv6T+PjSklIfP19AA29vH1tlB5vD5nK5JElSFPUf7w0D/e+gaQpD0bHjxz97+mzD+vX1YmP/VG8GmqacnBydnZ2YP1ksFovF8vbxtq3A5fIomqYoGgBAkmR4RISziwvzEYIg0TExVy5fLi4ulkller3+xvXryUlJzBOHIEhxcbFcJissKHB1daUoys3dvXJzscoKCwo0Gk3Dhg0qP1mxDWIP7NuXk5PbvGXL189ydVkWn88fMmyoRq1OTUmRyWQ52TnPnz9LeZkSFh4GACgpLpHLFXWj6toui729/eixYwEA58+eM5vNdaPq2nYlcZRMmjwZvB5ejnJycrS1GiwoyFerVPGPH/fp1ZuiKQAAgqKlpaVKhTI3N4/L4+i0mrqVskE3N7egWrWsVmt115wGADA7eZX5ymQyXbp4MT4+Hry5boWFhdKKipKSYgCASqWqU7eu7bJIHCVhYWGZGZnVXkboT4FR3WfG5XDGTZgQ/+jxhvXrA4Nq4ThG0wABiNVqtVgtPC4Hq5Qd4CwWm8Mx/1sj+sQ2bDh0+LCVy1fs27MnMCjIFo1QFHXqxMnt27blZGcjAPj5+/sHBPD5fPp1XAYAABiO2wqlmHZjAKkmYtDp9TiL5e/vX3lkgdDQMKFI5OAgqLKy2WRCUYz7dh8IOzs+SZJW8g/GaTOZTBiGcXlvtdvg8exIkrQSr3MoDMORN1fbYDCgKMqplFmzWCwOh8OcC03TRw4f3hm3IzcnB0VRf39/vwB/Ozu7SleARjGscrEcAkDl61NZXm7uvB9+sOfzFyxaKKnUsOb8uXNbt2zJSEunAe3r6xtUK8jBwYHJOt+HoqjXZ/r2z8zrMyUJAAANAIa/b9dHVQABAABJREFUlTaAgA/vFoI+C19f30mTv5v63eSN69f3+/ZbBP1gg3oEVH5lwjDM1gD/TUD23pcWOzu7yoEX8/hYrVaD0QAA8Pbx9vX1s2VQIWFhHDbbzc2NWYLj+PvKEc0mM6DpKk2EuVwegiJW6x9n47dv3lq/bl3Ky5cEQXh7edUOCRGKRDRFAwBMZhNFkjxeNQ3RjEYDAgBTClgtDMcQ9HWKzWYLQRBeXl5BtWr9foIhIWw229/fLzsrm6IoXqXMBMdxOzs7tVr94ZTrDXoURb19fby9vH/P2MPCOFyOs4tLfl4eRVFV8ih7+88zCnTNA6O6zy8oKGjSlMnz5vywYf06g97At7enaZpvb29v71AhlZlMJluRj0atVimVMTEx/07CEAAGDBr04P6DPbv3tGvXFkMxJtN8+ODB4kWLgoKCduzaFRIawuXxlErloG8HkAT5Z4MDiUQMAOj9de+27dvbFiqVSoqkxGLROytLCIIoLyuvvLCkpJjL5QgEAgDAe6Km19tardaK8ne35QoEgne3kzg5Wq1WaYXUtkSv06nVapFYjOHY3Tt3l/64ODwifMGivbVrB/N4PKm0YmD/b6k/X4Mgk0l/mD2noqJi3cYNlcfiepH4Yu6cH3y8vbfGbQ8LD7fj8Uxmc/8+fT9cT4ph2OszraioeqY8ruAzjZ4PQX9Zly++eHD//vFjx7hcru1NBAEAQRCm7SyzhCRIo8Hwl4+iUMgJgrCNrFFWXoazWGKx2GAwICjaomWrkaNH2VbWarVGo1EikRj+6IhiiRjD8ZKStwbmLSsrpSlaJBZ/eNvMjMx5P/zAZrPXrF0bHRNjZ8cjKWr0iJFWqxUAWiAQsNnsCunvjzlBEGfPnMFx3I5vTwOgUChsH1ksliOHDru6uTZq1LjKfDYODg44jteLrT/j++9tC/V6vV6vl0gkUqkUx1lllbJci9miUqn+cFQmsVgMAGjbrv2gwYNsCzUajdlkkjg6qpRKFptVXik3pmlaLpP9qUp26H1ghct/QvcePTp36XLl0uWMjAwcw0iKlEgk4RHhic+fJzxPsK127epVhUIRHRP9gV19WiKR6LupU1AEOXXipK3lX2pKqkajGTBoUPOWLZxdXBwcHJKTkkqKi//kAGw0TdMxMfUQBDl7+qytSF8mlX43cdKiBQtMJlOVDSIj63A4nEsXL9o+KikuuXXzlre3T+Ux/6oVWSeSzWZfunDRbHo9gnxxUfHtW7e9fX19fHyY19/KoqKiWGzWrRvXbYHao0eP8vLyMAwDNEh5mWwwGAYNGdK0WTNnF2d7B/vExMTy8vLXOebHXQem9eTPP/38/NmzH+bNqzKITGZGurSiom///q3btHF1dXUQCNJSUwvy85mSQmYdiqYrDwfANNqrGxWFouilixdto7QXFBTc+e03f/8ATy8v2HgO+v8Fw7Ax48b5BwQcO3JUo9YwJWoYjtvZ2SkUCpVKxayWlfUq61XWXxvNDsfxxIREW/WfTCq9cfVaQECAt7d3aGiYRCy5eOGCLUiyWCyLF/04acIEmVT6h4cLDAz08PC4evWqXCZnluh0uquXr9jb278ZYPm9b6K5uTmFBQU9e/Xq/EUXN3c3gVCYk5OTmZmJoihJ0j4+vt4+Pg/vPZBJX795FhQU/LzipwvnzoWFhkocJbdu3rQFnWlpaSuWLbv72x0Uq5o1BQQEeHl7X792nRmvAABAEMSqn38eP2ZsQUFBSGiol5fXtWtXbdc5JeVlWkpK9SeOMFkQCgCIjKwjEAgunDun0WiYD00m0/y5c6dOnqJUKgODggICAm/duGF7Rc969SoxMRH7cFks9HFgWd1/ApfLnTRl8osXLzLS0gAANE1jGDZ02LD4x/Ezpk4dPXZMYGDgb7/d2bdnb6s2rTt06gQAUKlUmzduFIlEY8eP/0fT1rBhw8HDhv7800oWTTMtJGrVqsXj8Q7s3y8SiewFDg/u3jtx8gRN01aL5U81d6UoKjompk/fvvv37ydI4suvelkt1n179z56+HD+ooW8d0abi4qJ/qZPnx1xcRRF9f76a61WszNuR2FBweJlS10rTYNRrZh69b7p02dnXBxFUb1699Zq1DvjdhYXFS1etlTi6FhaUlJl/eiYmJ5f9jqwbx+CoB07dUxLS9u7Z4/ZbEZRFEGQ2rWD2Wz2/j177fl8O3v7O7/9dvrkKZqmLeaPvQIIgpAUtTNux7EjRzp06ujj6/Mk/gkAgMnlPTw9/QMDxRLJ4UOHXN1cRSJR/OPHJ44dBwCYzSaSIHEcFwoFSoVi5/Yd3Xt29/X1Y3ZLEET92Nhevb/av2cvQRBf9uqlVCjitsdJK6RTpk4TiUQlxcUfkzwI+u/w9fWdOGnS99Nn2EIENpvdoFGjyxcvLVn0Y7/+/ctKS48cOcx0Y/oL+0cQRKvVzZ45c9DQIXw+f8+uXQUFBUuWLxMIhQKBcMjwYSuXLx87evTAQYPs7OxOnTh5/uzZoSNGODk7G43GD+/Zy9t72IgRSxYvHjdmzKAhgzkczqEDB2/fvjXpu8mhYWEf3tbb29vV3f3M6dOBgYGubm5JSS+OHDpsNBgIgjCbTI5OjkOHDZs/d+6kCRMGDRkCaBC3fbvZbBoybJh/YMDAQYN+WfnztMlTvu7zjVql3rpls5OTU99v++M4C7xdneLu6T5ixIgF8+eNHTV62PDhjk6O58+eO3b0aO9vvnZ3d+fxeENGDF+8YOHkiZO+HThAIVds37ZNqVJVG9UJhSK1Wr1/z16NtmfTpk0HDxu25pdfxo0e3X/AAA6Hc/zoscuXLo0dN04sFmMYNnLUqJkzpk8cP37osGFGk3HXjh0VFRUuri5/9ruD3gWjuv+KgICAMWPH/jB7tq00pW5U1LqNG7Zt3rJy+U8Go8HDw2PAwAHDRo5gBozVarUnT5zw8PAYM27cPz0d8sBBgx7ef/Dg/n0mP2jSrOnM2bN2bNs+bMgQLo8XERExY8aM8+fOZWfnyOXy942o/C6Kotgc9oxZM9093I8ePnLxwgUURYNDQlb8vLJnr17vnhSO45OnTnF0cjp29MiwIYO5HG5UdPQvq1Z17vrFHx4Lx/HJ06Y6OjkeP3Zs2JDBXC43Oir659WrOnfpAgB4t94Yx/EZ38+0s+OdOHZ8z+7d/v7+PXv1OnfmDDPWYPMWLabPnLlzx44hgwbz7Ozq1Kkza/as48eOZ2dnKZXKj5ngAUEQvV7/8MEDgiBuXr9x6fwFZpo4mqYpipo2Y/rU6dPnLZi/fcvWEUOHcbncsPDw0WPHxD+Of/jwQWlZqZ+fX5t27W7euLkjbntBYf6q1WuY3dI0zWKxZsyc6eLicuLY8TOnTvN4vJh6Md9NXtOhU0fwoTpqCPrv6tyly4P79/fu3mNb0qtXL2l5+fGjx65du+rl6TVk2NC01LS8/Ly/cI8TBNGmbRsvb68lixap1ZrQ0NDlP63o2r0bAAAgYOiwoSKRcN/uPZMnTCQo0tfHd+asWQMGD8Jx/A8bnCAI0n/gADs73t49e76bMBEAOjQ0bNGPi7/u880fBqAhoaHzFizYsG7txHHjWBxOUGDgkKFD0tPSLl+6XFxc5Ojk2Kv3VxiO7dqxY/yYsQCAqOjon1evbtykCQBgyLBh9vb2e3bvGT5kKJvFrt8gdvKSKeHh4TqdrmoKAfJ13z4cLnfvnt0zp0+3WCzePj7jJkwYMWok02ivb9++OIrt2bVr9PAR9g4OX3TtKhQJq/aBpWkAQMvWrS5dvHjg4P6srFd1D9QdNXqURCzev2/vxHHjKYry8/efM3du/2+/ZSLCLl2/QFBk25Yt48eN43G5HTt3kkgcpdIKAP1tCGwl/e8zGAwajUYoFFZp60qSpEwmw3FcLBbbnnmr1apWqUiK4nA4IpGo8spyuRzDsGpHCf6Ak8ePoxjW88tqxj2maVqhUNA07ejoWCWo0um0Wq1OJBTaitDUKpXRZMJQ1EEg4HK5Wq3WoNdLHB0xDFPI5RiOi0QiZicGg0Gr0YhEYg6X8/oocjmCIGKJxHYUjVptNJkQAOz4/HcHZ69Co9EYjUYURR0cHCo3udVoNCajUeLo+IHuctVuS5KkQqFgsVi2K2zQ67VanVgi1ut0FouFy+Pp9fr+ffo0aNBw+cqfmIxJpVKZTCYMxRwEDlwuV6vRGIwGR0cnFEXlcjmLxRIKhcwJVt4/RVJyhZzFYgkEApVKxcwpXvla0wDY29sz/X81Gg3Tb8PBwYHH4+n1eq1WK5FImIkidFqdVqdls9lisbjKEW2X9A/P9N0lEPRpbduyNTwivGmzZh+zskqlspjN7z7FJpNJqVDaO9hX7hqvVCgsFguXyxWKRFqNxmKxMP2NVCoVSZISiYTJSC0Wi1KhsHdwsHVcUKlUVovV0ckRQRBmUGIHBweFQkEQBL+6LEiv0+n1ehoALpdr60BKUZRCoUBRVCwWf/jVmmmpBgDN59tX7jxhMBi0Gq1ILHrfy7BWqzXoDQgC+Pb2fD7faDSq1WqRSGR7ovV6vV6nAwDYOzhUmU1Hq9UaDAYUQZgsGgBA07RSoaABqPwTY0sJ00OWw+W+mxXotDq9QY9juEgs0ul0BEFIJBIAgFKppClK/OY66/V6rVaDYyyxRMxkkjqdzqDX0wDweLzXrZ/fviw6nQ7DMJFIZDQazSaTo5PTP11IUePBqO5/zgeiOsjm6ZMni+YvGDh48Dd9+zBLLpy/MH3KlMlTp44eO+bzpg2C/n/5U1EdBEF/B6yBhaBq+Pr5sTmcJYsXl5QUh4SGZWZk7Nm1OzAosMsXXT530iAIgiCoejCqg6BqODs7L/tpxbbNWw4fPKRSqUQiUZu2bUaMGun9R51tIQiCIOhzgVEdBFUvODj459Wr1Go1YSVwFi4UCuHUCxAEQdB/GYzqIOi9mHbQnzsVEARBEPRRYNkDBEEQBEFQTQCjOgiCIAiCoJoARnUQBEEQ9OdYrValUmmbgRCC/iNgVAdBEARBf056Wtq40WOuXb36uRMCQW+BUR0EQRAE/TlqtfpJfHxpaennTggEvQVGdRAEQRD056AoymazPzA5IQR9FvCOhCAIgqDqvcrMfJGYKJPJvby8ouvFeHp62j5CEISiqezs7Pt37wKARMdEh4aF4zjGfKrRaBKfP09Pz0BRtHZIcN26dW0TyAIAiouKnj19VlJS4urmGhMT4+vnxyxPS0uLf/y4WbNm6WnpcrnMx9f3VeariMiIxk2a2LZNTEiIfxzfuUsXbx9vAEBZaWlCQkJBfr5ILKlXr15QrSBmtby8vBvXrzVr3qIgP7+woDCmfr2oqCiNWp3w/HlGRgaKYcEhIXXr1n13elbo/zUY1UEQBEFQVVardffOXRs3rLeYzI5OTqWlpV7e3rPnzOnYuROzAoZhVy5d3rE9jiRJg15PEuSosWPGT5zAYrHKy8oWzJt//do1Vzc3kiTLSkvbd+iwaMliDw8PAMCF8xd+WrasvLzCzc1VKpU6CASz58zp2etLAMDLpKRVK385feJkYWEhTdOt27ROTk7+7dbt6JgYLpfLpGrH9rjnz5917NQJAHD/7r1FCxbk5uS4e3goFAoOhzNp8uSBgwehKJqTnb3651WXLlzKy80lSbJL167OTk4/Llh048Z1Nzc3K0GUl5V16tx54Y+L3NzdP99lhj4xWAMLQRAEQVWdP3fup+XLmzRpevHqlXOXLh4/edLB3n7O7FlJSUnMCiRJpqeljh037vK1q5evX2vfsf3G9euvX7sOADh35uzNmzd/Xb/u4uVLl65e+WH+vLt37ly7cgUAkJiQsHDePG8fn7MXz5+9eOH8pYvRUVFLflz8+NEjAACOs/R6HUmRh44euXbz5oIff2zdpk16elpaaipz0Py8vGdPn7Vq3drHzyczI/OHWbN4fLtjp06du3Tx6o0b7dq3/2nF8hvXrwMAUBQlCEKlUsbt2nnjt9s/zJ177uzZ3+78tn7TxguXL12+dnX2D3Nu3bzFJBiqMWBUB0EQBEFvsVqtp0+ccnRymjV7tp+/v0gkioqJnjHre51Wd/7sWQAAQBCSJL/o1m3g4EFisdjT03PS5ClOzs7nzp6laVqhVNIUheO4UCQSi8XDhg/fFhfXtFkziqLOnD5DUdSsObODg4OFQmFAYOD0Wd9TNHXp4kXm0AiCdPnii1q1a0scJQ4ODm3atrVYLA/vP2A+jY+PVyjkHTp2RABy4/q10rKy72fNioqOEgqFHp4ek6dMcXF2OX3yFE0DFEVpmm7ZqlVUdLREIrHj2ykUisqpGj5y5Na47Y2bNP5cFxn6J8AaWAiCIAh6i0qlysvLjYiIcPf4vXaydnCwt49PZmYmTdMIABiO168fa/vUzd0tKCgoPy9Xq9W269D+zOnTE8aOqx1cu3GTps2bN4uuV08oFOr1+tycHK1OO3/uPBaLBWgaAECQpFKhyMzIpGkaAMDhcCpXiUbWrRMWHnbz5q0hw4ZxuJxrV67Wrl07OjoaAJCWmkYQxMrlK9gcDqBpBEEIkigpLbGz5+t0WgRBMAz18va27aptu/bnz54bO2p0cHBwk6ZNmzVvHlMvBrarq2FgVAdBEARBb7GYzRar1Y5vh2KYbSGO4xwOx2I2M+EXiqJ2dna2TzEU5XK5hJUwm0wxMTHb4rYfP3rs/v37O7Zv27xxY1RU1Oy5c6Oio0wmkwPfISgoiMViMftBECQiIsI/MBAAQNM0gqCVu9byuLz/Y++u46M49gCAz+zueS6Xi7t7AgkQkuDu7lCgeIEixbUtRYoULRSnUNzd3R0SkgBJiLv7+cq8PxaOkFBKX1sKdL6f93nvsTazc5u93422at16xfIVCQkvZCYmMdHR/QcONFUoAABqtVoikbh5eEjEYv5SAEJ//wBHJyehUIgQAgAKK10qLDxs469bDh04cPvW7U0bN65bu7ZWrVrTZ85s1KTxP12e2AeDozoMwzAMe4OJiYmpXJ6Xm6fX642hW0VFRUlxsZubK0EQCACOZYuLi42n6PS6wsIChZmZRCpVVVS4uLrOmTe3vLw8JzvnyuVL69eu+3nlirUbNpjI5SamJuMnTnB6VYuGECosKBSJRRDCl8HZmxo2arxl0+arV67K5SYEQTRp2oTfrlSakRQ1+uuvvX28jZcqKirio0+O4wAAlS9XUVHh5uY2d/788vLy7Kzsy5cvrftl7c8/r6pVu7aJ3ORvL0PsX4H71WEYhmHYG+SmpsG1akVHRT1+9Mi48dqVq9nZ2bXrhAAAAEIsy167ekWr1fJ7Hz149PzZ8zp16shksl9Wrxn91ciCggJTU1MfX5/RY8YE1qhRVFgkEAhq16mdkZFxudIYhYcPHg4eNHDvnj0AAAhh9cy4e7jXDQ29dPHimdNn/AL8/QMC+O0hdeuWlpScOX3aeGRsbOyIocM2rltf/VIIodUrV40ZNbq4uNjU1NTXz3fM2LEBAQHFRUUGg+FvKjbs34fr6jAMwzDsDQRBDBg48O7du1MnTR4xaqSvr+/d23e2bv01PDy8Y6dO/DECgeDBg4fTJk/p3rNHRkbG2jVrXF1d+/TrCyF0cXPdtHHjlEmT+/f/wkQuv3rlSsTjxwO+HKhUKrt1637pwoXFCxfm5+c1atw4KSlp47r1BtpQq1ZtAMBb6+oEAkGr1q2mTZlK0/S8HxfwU5wAAFq2at2i5YW1a9YUFxe3btM6Py9/4/r1mZmZY8ePr34pCKGrm+uWLZunTJrUt18/ExOTy5cuRUdFDR4yxExp9o8WJvYh4agOwzAMw6qqEVRzzdq1a39Zs2rZ8gqVytbWtk+fvkOHD7O2sQYAIAAIkvxy0KDnz58PHzKUoqhmzZuPn/iNq5sbAKB7jx4MTe/YvmPUVyNZhnFwcBgx8quhw4ZBCO3s7ZatXLlp/Yb9e/et+Xm1iVweEhIyZtzY0LBQPt23BnZh9eo5ODioNZoGDRsaN1paWf64eNHG9RvOnTnz29atYrGoVu06U6dPb9GyxVsv1aNXL4Zhdu7YMWrEVyzDODo5jRo9evDQIQSBW+0+H29vxcc+Y0cOHSJIsmu3bv92RjAM+0/YtGFjQGBA5XDkE0LTdGlpKcuyIqFQaW5u3K7X60uKS8wtzBFCpaWlEEKlmZlAKKx8bnl5uVajQQiJxGKlUll5F8dxJSUlBoOBJEmFqanoVfWbRqMpLytTmJlJJJIqOSkqKkIcsrC0qN5KW1JcrNfrIUGYmpoaT9Tr9Xxjq0wme2uuxGKx2Zu5wj4DuK4OwzAMw95OIBBYWVlV3y4SiWztbPn/b2Nj89ZzTU1Nf2/eEIIgLCwsqm+XSqWVx9VW9tbjeZXDzco5tHvbohHvyBX2GcD1rhiGYRiGYZ8DHNVhGIZhGIZ9DnBUh2EYhmEY9jnAUR2GYRiGYdjnAEd1GIZhGIZhnwMc1f3nQAjfOn05hmHYPwFCiGdEw7APA89X91epVKrhQ4ZqNZpPIlTiEBIKhQzDcBxHfAoZxjDsk8YhJBIJ9XoD/jWJ/V04jhs15uv2HTr82xn5GOH56v4qAkJra2utVvtJvLIghAzLsCwnFAoAjucxDPuHQQhphjHhWIFA+MdHY9h74BAneTVvM1YFrqv7G9A0/W9n4U84cewYQZLGpQwxDMP+Udu2bvXz8wuvV+/fzgj2+SBJEjfrvxWuq/sbCASCfzsLfwJBEARBfFp5xjDsE4YASZL4nYNhHwAOdf9zEEK4ghbDsA8Jv3Mw7MPAUR2GYRiGYdjnAEd1GIZhGIZhnwMc1WEYhmEYhn0OcFSHYRiGYRj2OcBjYD9eNE3Hx8W5ubvLZLIPkyLHcfHx8Xq9PiAgoMqAtfz8/LSUFBdXV2sbm3dfhKbpuNhYkUjs6eX5gUeep6ak3Lh+Xa1W16kTEhoWCiAEABQWFCQmJiqVSm8fn+pzCqYkJ+fk5Hp4etj80X29D4RQwosXer3B18/3fUb8ZWSkZ2dlV+tHjkiCDKgRKJVK/1TqHMfFx8UhBHx8fUiS/FPn/iksy8Y9jyUFlK+v7z+Xyp+VkJBw68YNvV4fFh5eq3bttx6jUqke3L+fnJzM0LSjk1N4vXqWlpZ/e04QQomJiVqNxs/f/68P/OQ4LvHFCz1N+/v7EwSRlJio1mj8/PyEQjz928eFYZj4uDhnFxe5XP5XrpOaklJQUGBuYeHu7l79lVVSUpKakiKRSD08Pao/Xe/ei/0X4Kju43Vw/4FNGzds3LzZ50N9dxoMhqWLl2RlZu7au9fK2qryrhvXb8yfO3fWt7P79O377ouUlZbOmDrN0cnp51/WiD/gRJHx8fETx41PSEgwNTXlhqPQ8DB+u95g+Gnxkpzs7J9/WRMaFlb5lOSkxJHDvxKJJes3rv+/083IyDhx9FiHTp1c3VxZll21clVeTs7GLZstraz+8NyD+w9u2bSJJEkIX88ciRCSSqV79u/39PL8Uzkx0PSShYs4xK3dsOEvfq9Ul5eXd3D//patW/v6+lZUVMyeNcvMzOy3nTv+3lT+b9FRURPGjc/MzFQoFGKxpHpUxzDMmVOn1/6yJiM9QyaTAQjVKpW5hcU3EyZ079nj7w2CaZresHbdixcvtm7/zeo9HoN3M+gNK1eszC/I375zp0QsWb1qVWxs7K49e2xsbf+W3GJ/l6OHD6/++edf1q8PCgoCAHAsN2nixJvXr1eOriiBAHFcx86dZs6eXf0KUU+erFi2LCY6RigUGgwGH1+fqTNm1H71MKtVql+3/Lp3926WZRmGcfdwn/ntt3Xq1Hm9d/OWvXv2cCxL04y7p/usb7+t/Wov9t+Bo7qP1JnTp5f+9BNC3IecEQAhpNFo1Gp19URpmlapVO8z37JUKu3dt6/CTEFRH/TpevzwUUJi4tjx49u0a2tp8boCxsHB4csvv5zwzTdrV6/x3xhgYmLCbzcYDOvXrktMTFy6fLmTs/P/ne6+3Xv27N7dum0b/p9arVaj0bznp6bT6QwG+qtRQ729vV6fgABFUdY21v9HZjQaDffPPDMnjh1f8/Pq+g0bAgDEYnHPXr3Eko9obve7d+5mZWVNnT6tcZMmVtZvKbp9e/b88P0cH1+f+T8u8PL2oSjyRfyL9evWfjd7tlAo6NKt29+bH51W+9a/o/8P/1BxHEcQROs2bYNr1/5g9ffYe7p86dKSRYs0Gi0wfugQBNcKFotEBMk3WUCSJO/evh0XF2dp+ZZYPzMjY+rkKWWlpeMnTnBzdUtJSd6wbv2UiZM2bdni6eXJcdwva9Zs2bip34D+jZs0zcvJWbN69axp07ds2+rk7Mxx3C+r12zZtOmLgQMaNW6Sk5P9y+o1M6fP+HXbVkcnpw9XCthHAEd1H53CwsI9u3Zv3bKFYRiJVPKBU+fnKK6+nV+fm28OQAhptVqSJEUiEQBAo9FUbiuUSKX9+n8BIawS1fGnVG42evd13kGv0yEAjBWBCCGdTldUXCQWiULqhnh4VG166NC50+07tw/tP7B39+7hX33F38WZU6dPHD/Ru2/fzl06G4/U6XQQApHodbzCZxJCKJFIqm/R6XQarZYkSbVardfr+enOCYKgBAL+loVC4bvrgYRCYfOWLUNC/uAntcFg4Dju9+o++aITCAQEQVRfCO4t5yKk1ekghGKx2KDXC4TCyg09Op2OZVmZVApebdQbDGq1mqIojVqt0+tEIlHvvn2qr5Cn0+kghPynWbmsXn/EarX0beEIbaANtOE9I5UqqSCEdFpdcXGxTCarE1LXvdqnDwB49vTpmp9X+/n7r92w3vlVBO8fEODt4z1k0KCVy1eEhIY6ODi8TkKrYzm2Sn60Gg0kCL4YqzyrNG3gOFT5xmGlub41Gq30d/6QDQYDy7LGR6sKrVYrEUv4j5UgCIQQJGCbdm0RQlXuUa/XMwwjkUgJ4hNYt/AzU1xUtGf3nl83b2Y5rvLnQhDE4CFDKh/58MGDi+fP9+jZ84sB/atf58TxE0lJicuWL+/WowcAoEmzpkql+dTJky+cP+fpNfbp06f79+77YsCAH+bP4/9aKQH10+IlEY8jnJydn8bE7Nu7t//AgXPmzeX3CijB0iVLHj+OwFHdfw2O6j4uCKHVq1YdOXR47LhxObk5p06c/Ajn7iwrK1uyaJG/f4CTk+PhQ4eLCgttbG27dOvatFkzAEB5WdniRYusrK3HjhvHx3ARjx4dO3osOTmZoqiAGoG9e/d2cXUFAJSWlv60eHFAQIC9g8ORw0eKC4ts7Wy6dO3apFmz30s69tnzgwcPJiYkIAB8fXx69ent7eOj1Wp/Wrzk8sWLBoNh4fwFnl5e382ZY2n1urpOIBCM+vrrhw8ebt60qV79+oE1amRmZq75+WdHR8ex48YKRSIAwLNnzw4dOJiUmAAA9PHx6dW3j7e3NwBAo9EsXLDAxEQ+bcZ0Pj7TaDTz5861tLCcMn3ahrXrzp05o1Kpvp05q12HDl+PHQMBIAgiMiLy6pUryUlJMhNZm7Ztu3Tt+o6aS4Ne/47SzszIOLB/f9STKI7j3NzdevXuXaNmTePeyIjIA/v2paWlWlvbdOrcGUAAwevv9cz09AMHDvDnuru79+zdu0bNGgAAmmFWLl8ukUitrKwunDtnaW09dvw4d3f3B/cfnDpxIiUlhWUYpYV58+YtOnftQlHUru07Dh88SNP0j/Pmt27bdvDQIauWr5DKpNNnzuQTio6KOnzoUEpSMoDQPyCgd5/e7h4eAAC1Wr14wY9uHh4+vj6HDhzMy8uztrHu3KVL8xYt+O+egoKC/Xv3Pn70WK/TWVlbt27Tum379r8XB0c9eXL40OGU5GQIYUBgYO8+vd3c3VUq1Y/z5t+4cUOj0Xz/7Wx//4DZ332nMFMYz0IInTl9pqioaNqM6c5vVsr6BwSMGTsuMyPD+Oncu3v35ImT6alpLMeYm5u3at26fceOAoGApullS5daWlrWqFnz2JEj2dk59vb2Xw4e5OPru3vnzpvXb3AANWrUuF//L17GgvDlY3Dh/Pn0tDQ7e/suXbo0btrEmHRaaurBAweexjxlGMbNzbVbjx6VG8tiYmL2792bkpxiYWHRtn07goD8c8Vx3MZ169PS02bNnq00NwcAREZEnDh2PDk5Sa83mJubN27apGu3bh+y58N/HMehdWvX7tuzd/hXX+n1uh3bt//ekaWlpcuWLBWLxRMmTXzrDxhLS8uePXuFhocbt/j4+Yol4oL8AgDA7Zu3CJLs1ae38QdY1+7dPTw9HRwdAQA3b9ykKKry3m7du3l6vdyL/afgqO7jwnFco8ZNevftGxgYuGLZco7j/u0cvYVBr38S+eT61WsymczVzc3KxvrWzZvXrl79+Zc1jZs0MRjoR/cfOro48Zk/cvjwvDk/yExM6tatq9Prdu/YeeHsuZ9WLK9Vq5bBYIiMiLxx7ZpUKnNzd7Oysbpx/ca1q9dWr/2lYaNG1dO9eP7CnO++o2k6rF44QODY0aNnz5z5ccnihg0b+vr5vngRX1hY6O3rGxDgX70juYeHx9jx46ZOmrx+7bqlK5Zv2rAhIyNj+aqVfNvr+bPnfvj+e4Zlw8PDEULHjhw5d/bsj4sXNW7ShGGYx48eKZXmxtY0g8Hw6OEDOzsHAIC7h4etnZ1KpQqsUcPN3Q0hRFJkcnLynO++c3J0tLW3j4qMnHlluqpC9eXgQdU7PvPe8R38LObp5IkTCwoLQ8NCxSLR9avXLp6/MH/hjy1btQIAXL96bcqkiQKBMDQ8rLSk9Ic535cUlwQFB/HnPo2JmTJxUmFhYWhYqEgkunb16sULF+Yv/LFFy5YIoWdPnz15EmlnZ+/t483QtFgsPnP69KzpMywsLIJr1UIIPXz48ML5C2VlZUOGDXVxdXFwciooKPAN8Pf09GQZ5tGjRwrFy8jp1ImT8+bMIUgyNDycoemD+/efO3Nm8dKfwuvVo2n6yZMnV65ckcpkLi4uNrY29+7evXzx0qo1a1q2allWVjZr+oyHDx7Uq1/PytoqJjrm3Lmz2dk5w0YMr1JhjBA6efzEvLlzKYoKDQtjaHrf3r3nzp75aemyoFq1/AMDEhMTy0pL/fz8AwIDKcEbrzWNWv0kMsLSyqp2nZDqJTxw0JfGz+XIoUNz5/xgbWNTMyiIY9mHDx5cvHCxvLx84JeDOI57+vRpakqKXC53cXG1sLA4f/58VFSUt7d3eka6l6dnYmLSgnnzDAbD12PHAABIksxIT/9u9mxHR0cHB4fHjx+dO3Pmh3nzevXpDQB4/PjxtMmTCwsKw+vXNxOLr169durkqTlzf+javTsA4O6dO1MnTdYbDPUb1FdVVCxc8GNFebm7hzsAAHHo2bNnz5491RsMAICLFy7MnjFLIhXXrlOHhEREZMTZM2cKCwrGjBv3ew8b9vdCiAuvV69r9+6BgYEb1q1D3O/+DD+wb9+jRw/n//ijm7v7Ww/o2btXtx7dK//8exIZqdNoXd1cAQLxcXF2dnYSqXT/vn1379wVS8StWrZq0aolAIBhmBfx8XZ2dmKxeP/efXfv3JVIJS1btWzRsuXffr/YJwBhH6ulS34KDqzx/Pnzv/eyhw8ePHrkyFt3aTSafr37NKpXPy83r8quvXv2erq579q5EyGUn5fXoW1bH0+vE8eP83uvXr3q7+0za/oMhLjCgsJ2rVqPGDaMoenU1NTG9Ru0a90mMTGBP/L61Wu1awYNGjBApVIVFhS0a93G19Pr1ImT/N4rly/7e/vMnjmLZdkqGSgoKGjbqnXDevWfRkfzWyIjIurVDe3UvkNJSQlC6NctW2r4+UdGRP7ejet0ujGjR/t6ek2bPCU4sMaMadMNej1CKD8/v03Llo3qN3j29Cl/5ONHj8ND6nbp2LGsrKy8vLxju3YDv+hP0zS/t6SkpG2rVkO+HMT/c8mixSHBtZKTkhBCNE2PHDHCyc5+9apVHMchhJKTkhrWq9+vV++KiorqWVr444+eLm6jvho5d84c/j8/fP/9wgULXrx4gRDSarVfDRseXjf08ePHLwshv6B7l67t27TNz8/XaDR9evZqEBb+NCaG37t1yxZ3Z5e+vXpXlJfrdLrhQ4bWqxtqLJD8vPxunbt0aNsuPz+fYZgvBwxwd3Y5feoUv7eioqJbp84tmjbLSE/nt6SmpjasV79/334qlQohtHH9hgAf36ioKL4EOnfo+GX/AQihrKysZo2btGjSND4unj/x3t27dYJr9e7RU6WqKC0t7dyho7e7x+FDh417/by9p0yahBC6c/u2p6vb5o2b+F3FxcVf9Ok7fsxYPsXKMjMymjZs1KpZ84QXL/gtd27drh0U3K9Xb5WqAiG0cvmK2jWD4uPiqhdyfl5ey6bN2rdtW1Za+nvPBkKotLS0Q5u2bVu2ysnO5rckJiSGh9Qd8uUgvU5vMBgG9PvCxcFx5/Yd/N4N69Y72tp17dQ5JycHIZSXm9eqWfMeXbvpdDqapsePHetkZz9/7jyDwYAQSk9L69CmbcumzfPy8jQazZf9BwQF1rh+7drLhBIT27Vp27h+/bS0NJ1WN2jAwLA6IZGPI/i9e3fv8XBx7dKxU3l5OUMzY0d/3aJpU/4B6N+nb6N69ZOTk/kjs7KyWjRt1rVTZ9XbHrZ/0cb1G27dvPlv5+If98uaNX5e3k8iI6vvyszMbFSvfrfOXcrKyt7zaomJic2bNG3epGlaWppOpxs0YGCzxo379urdMLze8CFDWzRt5ubkvHTJTwaaVqvVXw4Y0Kxxk749ezWsx+9t6ubkvOynn/R6/d95h9inAM9Xh/0/WIatWaNms2bN+X/6+fnZ2dsVFxezLMc3AEIAIEE8evAgNze3/8ABHh4vh3M2btqkXfv2ERGRyUnJBEmyLFMzKKhps6Yvr+Pvb2NrW1JczDJMlRSfxsS8ePGiT98+ATVq8FuCa9Xq3bdPQnx81JMoAADDMACAd4znEIlE48Z/4+DgsHvnTkdHx7HjxwmEQgBATFR0wouEvv36+QcE8EfWrlO7V5/e8XHxMdExfzjmg2XZyumyDOvk5NSlWze+ssTZ1dXb27ukpESn1VY/l4CQYZlHDx5cOHf+/Nlz58+eO3fm7MULF/k2l+SkpIjHj+vUqWOmUCQmJCQmJKhUFWHh4S/i41/ExyckJMTHxXXs1CkgMJC/Wo9evfwDAjiWJSkqJTk5MiKiTt0QU1P5y3PVqrDw8Pi4+NjnsQRBcCzr5OxkHF4nkUgWLF60actmvheOQW8gIDQ3N9eo1QxNV79NoyeRkanJyf0HDvD28ea3hIWHd+/R/dnTp3GxsRRJchzn7e3d5tVoEi9vb0cnx+KiYj5RkUh09cqVm9dvZGZmmpmZbd+1Y8GihdW7V0ZGRqampvYfOMDTy4vfUq9B/a7dusbExMQ+j31H9gAAHEIMy1IkRVLv6uAok8mWLF+2btNGWzs7AIBer6coUmmuVKvVNE1DCFmWdXVzbdWm9csb8fKSy+Vt2raxtbUFAJiZmbm4uqpUFTqdjs+Ps4vLoCGD+Y5WTs7OPXv3zsrKfBIRmZaaGvH4cfv27Rs3edkg6+HhMXDgwLy8/EcPHqSnpz15Etm6TZvg2rX4vZ06d6pdpzbz5l8Ex3FCofC7uT9s2bbNzc2Nv3eOZa2srXRarV5veMedYh/eqRMncnNz+/brZ2pq+j7Hp6akTJs8JT8vb8asmc7Oznq9nmHoF/EvRCLRngP7123csO/gge49ev66efP1q9cghCzDvIiPF0skew8cWLdxw74DB7r36PHr5i3Xrlz9p28N+9jgFljsDb/X2xohDgBEvGrWQQCYKc0Ewpddg/mxEW+MvoSQZdmcnBySJD09PCpfysvbW6PRFBYWOjo5AgCVSiX1qosxAaFAQHEcV70dIyc7GyBk/FLnubu7AwLm5ua85935+Pp06NjxxYsXfb7oZ+wdn5OTDQCoMo2Iu7s7gCA3N+fPTrnHIaQwU7zu/46QgCQ5hNDbhkOyLCcWS+YtWFA3NPRVazuCkFAoTAEAuXl5Op3uyuXLd27denk2BAxDGwyG/Px8tVptMBgqj941lZs6ODgUFxcRBJGbm6vT6S5fvHT7xs03z9Xn5+W+zKdCIXzVwZ8kSX9//yeRkb+sXpOVmZmbm5uenp6aklK7Tm3unQM5c7KzCZJ096xaeizH5ebm+QcEAoTMlEqR8GVCEEIhJUQAAQD8/PyGDBu2cf3669euubi61qhZo2nTZh06dqjeepidlU2SpMebqXh4eLAsm5+f/47sAQCEQqFcLler1VqtTiYz+b3DKIoKCAiIePzo5IkT2VnZuTk56enpqakp4eHhHOIAAAghpVL5urkcAoqijDPIIID4oY4IIQgBQsjGxqbyUEdnF2eCIHJyc8QSsUajMQbBL0vMw10gEOTk5NrY2qhVajeP1410EonE2cUlLi7ujXEwCJEk6ePjExMds+6XXzIzs/Jyc9PT01OSk/38/FD1ITPYv6e0tPTihQuubq5NKnWsfIeoqKgZ06ZlZ2b/uGhhq9atAQD8zEdyuXzYiOFOTk4AAEtLy6Ejhl+8cP7mjWth4aEIAH6vo6MjAMDSymro8OEXL1y4eeN6qzatcXP8fwqO6rDXSJKUSKQGmtYbqvbf12o0AAFxpcF67/+mqBIWsBxHQPBqtD8A73sdCACo0tGQ5TgAIEn8icnGzJRKiqKUSqVxC5+56leGABq77VeJyd4d6EAAAao8Ucm7QAiV5uaVx3a8PpHjOI5r1759uw7tOfZl9iiKogSUn7//o4cPq2fMGIMiDiGE2nfs0LZduyrnevv48BU/lT9BmqZXr/p5+7ZtpgpTGxtbdw/3Fi1b7tm9m68DezcEAHqz9DgOvSw9hAAAkKg8hOM1kVg8eeqU9h07XL548d7de48fPT5/9tzFCxd+Wr7MwsKieipv+Ywg/MOwWy6Xe3h6Xr18OSM9o/qcwzeu37hx7VrfL75wcXVZvnTpnl27FWYKGxtbD0+PVq1b7fhtu7EEUKXirZyrd6j86fCZp0gSQlh5esKX98KyAPB/FBBUKU8ICVh1aDMkCIZhNm3YsHnjJolUYmtr5+7m1rBxo9MnT6lVqncXCPaBxcXFxsXG9un3xR9OMYgAuHThwvezvyVIcs26X4y1uUKh0EQuVygUtpWuYGNjbaZUFuQXQkjI5XKFQlH5+tY21gqFoqCgkGXZDzzJFPbvwh829ppAILC1s7tz+3Z+Xr7Tm+Ph01LTCIKwff+JTxEiSdLO3p5hmKSk5Hr16xv3JCa8kIglli+/tt+3UsHewR4AkJSYVHljSnIyQuhP5OrVl2vl+MDBwQEhVOXKya+ujBCCkGAY2hiW6LTairJy6PDG4LK/sorG742JsbKy4idG4cdG8DIzM5OTkkQikZ2dvUAoTElJMe7SaDW5OTmUgOI4zsraSigUUiT1xrkZGcnJKZK3Dc54Ehm5fdu2sPDwufPn2Ts4AAAMBsOBffuq1JpWv00HBweWZZOSkppWGrmclJREEtDG2uYtla6V5ObkJCYm1g4JGTt+/Njx4zPSM1atXHn00OGY6Oimb46DtnewZ1k2OSnZ+D0HAEhOSiIIwvpts9NVRlFU/Qb1Tx4/fvnSpVqvmjV5LMvu3bPnzKlTLVq1LCkp2bV9Z+Omjb//4Qe+EVar1e7csfPdt/B7IIBFhYXl5WXGOU1SU1M5jrN3cLC2tpZIJPEvXlQ+PjUl1UAbbG1tbGztTOTyxIRE4y69Xp+dnQ0AqhwZkySZkJCwacPGGjVrLly8iK+yZWj6/LlzHELgA05yif2h6KhonU7foGGDPzzyzKlTM6fPcHFxWbL0J2OHEACAUCh0cXa5e+dOSUmJcaNGrdFqNHK5XCqVOju73L395l6NRqvVKhSm/+gyM9hHCPerw16DENYNrWswGPbs3lVWWmrcHvXkycULF9w9PLx9fN7zUnzNSt26oQ4Ojnt37YqLjeO3X71y5cK5c7Xr1HF1c+Peox7IKDAw0M/f78D+/U8iI/ktkY8fHz54yMfbOyAw4N3nvluNGjV8/fwO7N8fFRXFb3n88NHRQ4d9fH39/PxJkrSytk5OTomLiwMA6HS6Y0ePZmZmGuMbkiRomi4tK3t3Bd7/wdPLq3adOmdOnz5z+jRftZOVlTV9ypRZ02fk5eX5+fvVqlXr1MmT9+/fBwBwHHvs6NGnT5+SJMWyrKeXV63atU+fOnX2zBn+3MzMzGmTp86aMaOgoKD6i76srEyv17u4uhhDuv379sXGxkL4st6IokiaYcpKy6pUMtUMDvb09Ny7e8+zZ8/4LXdv3z5x/Jh/YKCXjzfDVu0fWVlERMRXw4bv/O03mjYAABwcHcwtzIUiYfX524Jr1fLwcN+ze/fz58/5Lbdv3Tp5/ESNGjXf55ls0aJF7dq1f9u69eiRozrdy3porVa7bevWSxcutG/fPqRu3aKiQj1tcHVzM/ar27dnT+KLBL459Q+TqIIkydTU1P179uj1egBAbGzswX373T08goKCnJ2d64aGXjh77urlK/zB8fHxu3ftsrO1q1MnxNnZqV54vQsXzt+8cYPfe+7M2UcPH1LUGxPUQQgrysvVKpWTs9PLkI5hjh07Hvk4giCI/y8Sxf4JCKGYqGhzC3NPT6/qu0pKSgry8/m688iIiPk/zHVxcVm1ZrWfvz9NM/x/WJaFEDZq0pihmePHjhsrj8+dPVteXh5Sty5BEI0aN6Jp+sSxY6/3njlbUVEREhqKm1//a3Bd3ceLYRh+BNOHTLRZ8+Zt2rY9sHdfakpqvQb1JWJxdlb2lcuXy8vLp8+aybeLIYQMBkPlnumVtxj/P8Mwzi7OEyZN/HbWrOFDh4bXq6fXaa9fv2FpaTFh0iSZTKZSqd5xnSosLC0nT5s2Y8rUEcOGNWzYEABw69ZtkiAnTZ3CT9zFsqxer//DuWCqH2ZpZTVl2tTpU6eNGDq0QYOGCKFbt24JKGrS1Cn8tGft2rW7dePG2NFfh9QNzcvNzcnNdnZx0b+aZM7Wzr68vHzmtOldu3cf/fVohqb5YY/G69PVthjxH/Hv5VkqlX4zccKE8eOnTpp88vgJhcI04nFEWlra1OnT3d3dSZIcN2H8+DFjx44a3bhJE5VK9fjxI4QAyzIcy4pNTMZPnDBx/PipEyefOH7c1NQ04nFEemratJkz3D08WJatkqsaNWsGBAbu2bW7IL/A0soyJSkpLT3dytqqpKREq9MBAOzs7PQ63dw5c7p07dqnX1+GYfiPyd7efsq0qbOmzxg+eHD9Bg0Yhr1586ZMKpk0ZbKJiUlJcfE7PuKw8PCQkJAVy5bfv3fPzt4hOyvr7t27nbt2qTwhH8/R0XHKtGmzps8YNnhw/fr1aYa5deOmiYnJxCmT+MVCGIYx/P4fi7mFxbSZMyZNmDB54sTjR48G1qhBEMSTyMjr167VqFlj0tQpAoEgKCjI19d3+7bfcnJyzM3NExMSszIzraytiouK9TqdVCqlaZo2vB6FwHGcXq+v3EJduUhphpbJZIcPH4mIiLSxsbl7545ao1m6fJm5hQUA4JuJEyZ+M2H82LGNmzaRSqX3794rKS2Zv2CBs4sLAGDM+LHxY+LGjxnbuEkThqEf3H+AEGIYunIqLMt6eXvXCQ09cuhwRXm5tY1telpaYmKijY1NeVm5SqWqsuIf9gHw75YqvRE0Gk1SYqKFhaXSXFnleJ1Wu3DBgvT09KXLltk7OGz99dfk5GRTheKnxYsZmnl1TaZl69YDBg4MCw/v3qPHvj17tFpNWFh4UlLirh27wuqFt2zdCrwaorR3z16NRhMWFp6UmLhr587w+vVaVaqqx/4jcFT38eJ/0//ZJd7/Irlc/uPiRT6+PmfPnD24bz8AiCQpHz+/4SOGN2jYkD9GKBQGBQfb2toa66tebrGzgxAKBIKg4CBrGxt+b5duXV3cXA8fOPjs6VOxRPzVV1917d7d0ckRACAUCIKCg+0dHKpcx8HB4a2DNpo1a7Zz7559u/fEREcTJNGrd+9evXsZJ3+yt7cPDQv7wyFmdvZ29erXq9Jtq3mLFrv27tm3Z8/T6BiCJPr07dOrd29XNzd+b9fu3eSm8iOHDiUmvvD18586c/r5s2d1Wh2/t2OnjrnZ2Tdv3szKyIAQ+vr5WllaGifMgxD6+Pqampm9dS12F1fXsPAw48Rv1dUMCtqxe/ehAwfv3rmTnZ0dEBj47ZzvGzZqxJdY7dp1duzevXf37sePHitMTefMnRsdHa3TakmKAgAEBwfv3L370MGDd+/czc7ODgwM/G7OnIaNGhIEwbKsv7+/Vqs1ToVvY2OzYtXKHb9tj4qKys7OCgoO/nbOnIiIiKOHj5SVljo4ODRt1nzipElXr1xJS0tlWbZmUE2p9OVMqm3btXN2dt63d9/zZ08pSjBw4MAevXo5uzgDAAQCQc2gILnC1FhhwG9RWpgDACwsLFauWX34wMEbN25ER0VZWlj8MG9ul65d37rWQrv27Z2cnffv3Rf7/BlFCb4cPLhHz55Ozi/7CTg7O4eEhr5jdYqQunV/27Fj269bb9+69fzZM4SQqanpiK++GjJ8GD9uxs7eftXqn3ds3x4THZOZkVm7du258+fdu3vv9KlTpWVlFpaWAQEBDG0wVnMqlcrQsDBj6z9BED6+vgqFQiAQQAg9PDyUSvMuXbrs3rUrPj6uQaOG/QcMMEarQcHB23fuOLh///0HD1iaadmqVY9ePY1jmQMCA7fu2L5vz56HDx9KxZLpM2dmZGTkZGeRBAkh9PbxFoqEJEEolcplK5bv3L790cNHubl5/gEBU6ZNS3gRf2D/geKSYjfg9ntFgf1DHBwcwsLDTd5cgpllWQ9PTxsbm8pLjxgJhMKszCydTq/RaMQiMf+Ozc7KNh7AMHRFRQUAQCgUzpw928HB/siRow/vP4AE0blLp28mTuS7CPN77R0cjr7e2+WbSRPNlFVDSeyzV7XTLvbZO3LoEEGSXf9o4Uu+Nw9tMJi+2UUXwz5pFRWq/LxchJCNra38zS9g7B+yacPGgMAA489CzCgrK2vW9Ok/zJv3e1MTV1dRXpGTm2NqavrW1/K792L/BbiuDns7kUjk5oZ/7mOfG7ncRC73/OPjMOwfxnHcqRMnfP39/9RSrXJTudz0d3+NvHsv9l+AozoMwzAM+9AQQk2aNnV0cjJ2hMCwvw5HdRiGYRj2oZEk6evn92/nAvvc4JlNMAzDMAzDPgc4qsMwDMMwDPsc4KgOwzAMwzDsc4CjOgzDMAzDsM8BHi2BvUVWdvat69fbtGtnZmYWFxur1xv8A/yrDNQqyM9PTU1zdXNVKpUxMTEcy/oHBFSfP7astCwu9rmZ0tzH1yc1JSUvL79qYghRQsrX16/yFLIZGRmPHjzILygQCoS+fr51Q0ONC1TrdLozp0/7B/j7+uKOxhiGYRj2Go7qsKpoml61bDlN09179tTr9T8tXpKVlbVr7x4rqzfWILp+/fqCefNnfzu7Z+/eZ0+f3rVj5+gxY8aMG1t5AXiappcsWnTq1Kn5Cxb4+Pps37Zt/779xviMx7Gs0sJ805Ytfv7+AIDi4uIN69YdOXTYQBvEIjHDMFqttm5o6IxZs/wD/AEAAoEgKTHx2JGjP/+yRolnTscwDMOwV3BUh1V17dq1e3fv/vzLGoFAoNVqNRqNWqWqvgYJTdMVFRV6gwFC+EX//lcuXf518+bw+vXq1q1rPObsmTMHDxxo1759qzatAQAajYbj2KHDR7q4uBivhxASi0V29vYAgLKysu9mzz51/ET3nj07d+1ia2urVqtvXr+xft26qZMnbdy8xdHJkSTJL/r3H3zuy2NHjg4ZNvQDFQqGYRiGffRwVIe9Qa1W79y+vXZIiHHNSoIgKle/GUEICYLg1/d0dXP7ZtKkiePHr1n189oN6/mFmDIzMlav+tnB0XHilMn8arYQQolE0rZtO1//tzSeIoT27d179vSZUWPGTJk21djgG1K3rlQmWzB37ubNm76fM4ckSQdHx7bt2+/fu7d9h/Y2eGEcDMMwDAMA4NESWBWPHz569vRZi5Yt/ux0523bte3Srdu1q1cP7NsPAOBYbtPGjSlJSePGj6+88hhCSK/Xv/UKJSUlJ44ec3RyGjx0SJXUu/XoPnzkSD8/P5Zl+S3NmjcrKSm5fPnyn7s9DMMwDPt84agOew0hdP3aNZFIFFyr1p89VyAQfD12jJeX15ZNm+Lj469fv3bo4KEevXp17Nyp8mEQQrFY/NYrpKWmJicn165d287Orsoua2vr7+Z837dfP6FQyG/x9PKyd7C/duWKTqf7s1nFMAzDsM8SboHFXtNo1FFPnjg6Otr+X82aHh4eo8eOmTZ5yrIlPxUUFNjY2IwdP04kEhkPgJDQaDTr1q61tLKCAAAAOIQkEnGfvn2dXVzy8/O1Wq2Li8tbL16lFdjU1NTdw+PhgwcF+flOzs7/R24xDMMw7DODozrstdLS0qzs7Hr16hmrxP6sTp073751+8ihQ3K5fOGSxc5vhmgQQoOBvnvnjkAg4IdfcBwnNzVt1bq1s4sLy7KI44Si903aycn5/LnzeXl5OKrDMAzDMICjOqwyjVqjVqnMzMwqb+THQ1SHEAIAEfCNKjSRSPRF/y8uX7pUN7Ru6zZtqpzCcaypqfynZcsCagRyHAcAAAgQBKEwMwMAyOWmlEBQUlr6nrk1U5oZ9PqKior3PB7DMAzDPm84qsNe4ziEEKocxpEkKZFIaJo2VBvioNVoAAISSdVOciZyuVgsVigUbx1vASG0sLCoMvUdz8nJ0cLSMj42jqbpKufSNP3br1spgaBn7178AFsAAAEJhFD1KVcwDMMw7L8Jj5bAXhNLxGKxuHLtl0AgsLOzLS8vz6+2JkRaahpJkNUnFuE4DiHE//dbU3lZS1eNvYNDrdq1n0RGxkTHVNmVlJi4ccOGw4cOGQwG48aKigpKIJBIpO95dxiGYRj2ecNRHfaamUJhbW2dnZ3N0Ay/BUIYEhpqMBj27t1TXlZuPDLqSdTFCxfcPdy9fXz+rtSFQmHffn0RQosXLnz+7Jlxe3ZW1vKly0pKSgZ+OdDCwsK4PSsr00yhsLKy/LsygGEYhmGfNNwCi71mIpf7BwTcv3evqKjQWAnXrHnzNm3b7Nu9JzU5pV6DBmKxKCc7+9LFy+XlpdNnzagcZvEQQgaDgaHp6tdnGMag1yPud9tMGzdpMnb8+CWLFg0a+GXz5s0dnBwryiuuXbkSFxc3eOjQLt26GY9UazSJCYlu7u54FmIMwzAM4+GoDnuNJMmGjRpdunjx2dOnxmjJ1NR0waJF3t7eZ8+e3bd3D0CAJEkfX59hI0Y0bNSo+kWkUmntOnU8vLyqD7Nwd3evU7euTC57Rwa+GjXS3cN9z85dN65fZxgGQujg6Lhs5Yqu3bpVniQlNTk5IyNjwMABxm52GIZhGPYfB3Fn8/+aI4cOESTZtVK9V2UF+flDBg+uFVxr7oL5VaaI0+v1WVlZtMGgUChsq00U/LfLzc0tKysTi8WOjo4kSVbZu3njxt+2btu+a6enl9c/nRMMw/6KTRs2BgQGNGjY8N/OCIZ9/nBdHfYGK2vrnj17bf/tt9SUFHcPj8q7RCKRu7v7B8uJra3t702GXFZadub0mbbt23l44pAOwzAMw17CoyWwqrp272ZpaXlg//6Pth739KlTarWq/8CBvzOVHoZhGIb9F+GoDqvKzMxsyrSpWo22uKjo387LW2g0mszMzG8mTPiQFYcYhmEY9vHDLbDYW4SFh4eFh//buXg7qVQ6bcb0fzsXGIZhGPbRwXV1GIZhGIZhnwMc1WEYhmEYhn0OcFT3H/SRjoHAMOwzhfC4Jgz7MHC/ur8KIVSqZT+VSIkkSZYQswCWajn0O+uxYhiG/V1IigSURMPAUi37jnVlMOxPkYgIMYWrpd4CR3V/FYdAepHuUwmQRGJxdrGagERGKc0Y3rKoF4Zh2N9IJBHnFqskJdr0YpplmH87O9jnAAHgpBSJTXFU9xY4qvsbIPSpVNUBBADDshTxKeUZw7BPF0KAYVmOQwh3/sD+JvhBegcc6v7n4A4uGIZ9SPidg2EfDI7qMAzDMAzDPgc4qsMwDMMwDPsc4KgOwzAMwzDsc4CjOgzDMAzDsM8BHgP7kSIIAgCIEELo35k0BUKCIAkIIUCAQxzHsv9QQgRBIoD+rsnzCIIAAHAcV+X//13eek1IEBBCxHEIoTc3E3/jrf0TCIIkSAIAwLLsX8wnQRAAVuoWjwAAiEMIoM92vBqEEBJEtc8dwwAkCAggQu/1bEAIIfzdd8WfuhSG4ajuo0MQBElSGo2KNujFYqlIImFo+gP/PVMCgUGny8/N02u1BEnKTc2UFlYsy/7tISbHcWpVBUUJRGLxX78aQkhdUQ4JQiyRAoTUqgoAgEQq++tXNl5fVV4GCaLKNfVajUGvF0sklED4+mCOVanKCZIUSyQf5yhAgiQrykpLigoICJWW1lKZyf/9mCGE1KoKlmX4O4UAAAgFAoFUJkcAfa6zlDEMo9OohSKxQCj846Ox/wYIISUQaDVqg14vlZkIBEKaNrzjaIoS0HqdVlshFIkkEhnDvH7bQwgpSqDTavR6nURqIhQJacPrSxEEIRRVfW3SBgPLfp5/bth7wlHdx4UkyZKiwitnjjyNeKDXauQKs5D6TRu36SwQiT5MlQ//qzHy3s1LJw6+eBalKi8jKMrGzrFxm04tO/WUmcjZv6/SjiCIovzcTcvn16gT1qnv4L9eV6RRqbauXiQ3NRsyfoZGrd7xy08AwtHT5/0t1XWQIAw67b5f15QUFo6Y9K2ZhSXHcQBAlqUPbl0XHXGvUauOXfoN4cuHoqikuGe71i8PDmvUofdACOHH9jubIMnUhLgda5fGRj8WiyWjps2r16wNw/w/E1MTBFFRXrbjl6WZaYkchwAAEABIECKxxNnNs0nbLh6+gZ9fTQNJUunJL7atXtyyU6/GbTp9rpEr9qcQJKnTaC6eOPjw1hV1Rbm1vWPT1p2DwhsChKo//xBCBNCti6duXzlbUlQoMzEJbdiycdtOIpGE41gIIcMwV08fuX/jsqqiXGlp1bBF+7qNmhEEhRBHEERedublU4d1Ws3rKyLUuE1nT/8a/1zTCvbxw/3qPiIEQRQV5P08d8qBrWsJCJ09vEsK8zctm7f9l6V6rZaA//iHxTcjntz/2+IZY2OjI2rXa9x3xPiOvQYSJLlt9eItKxdo1Cq+CfLvSk6v08ZGPcpOT/1bLsiyTMLz6NSEOAghAkCr1Wg16r/lygAAgJBQKEIIPbx1OSM1kSBIAABJEgW5OXevX3j+5PGdy2fVqgr4shUSxsdERj26K5ZKKUr4sQU0EEKOZS+fOhT18E6jVh17DRnj7OH9/8e+ELIGQ8LzqJQXsXJThUJpYao0NzFV6DTq88f2L54xJubxHZIk/9Y7+PdBCNWqimeRDwvzciD8GOtisQ8MQkKn1fy2etHGpT+UFRc5u3tlp6cunzPp/JE9oPoTAiFC6MzBXWt+nJmVnurk5qlVqzevnLdr3XLaoCNIkqHpA1t/2bhsXnlZqbO7Z35O1s8Lph/fsw1xHISQIMm4mIiDv62/dvbY3avn71w9x/+nMD+HwE/jfxuuq/uIQIK4dvbYk4d3h46f0bX/cIIkVeVlG376/vKpg3XqNw5p2Iyj/9nqOpKkHty5vHfzz25evqNnLHD38mU5jiCIjn0Hb1wy5/Kpw+5e/h37DOJrnkiS4vuNAQAggBzHvar5hyRFIoTgqz5zAACWZQFCJEnxTZEIvWyV41srSJIkKcrYAatKHy++SfrVWhiQY5nK8QdBkiRBIoAIgiQIkqIEJEVxHCcWi8d/txgAaDyYJEljfiCAHOKM9SskSQGAEAAEQQKA3rydlxBCAoHAt0btyycPpybGB9VtwNdIpSTEGvT6kAZNMlOTs1KTvWsEcyxH04bkhDgThZlPYDBCLACApCgCEoi/OOL4AgEAQIIgCYLjOIIgX7bTIsAwDEFAgqQAQABAjmU57vWP70o3AgFCLMvwUSOEkCRJjuP4fn5vLS4ehATi2OLCAltH50Fjp5lbWut0Wo5jjZmsfmWCJBFCfExv/PgqXxFC6OzmNW3RGqlMjhCCEHAcd/H4gfVLvjt9cJdvzRCKohBCxs+Lv1NjEvxFSJJ8lQEAAWR/98arnlvpaXwj52/x+6lACEmS4jj2HQVIUhSEBACIogQEQVACAR/fYxhBEg9vXrl0+kiD5m1HTZ+vtLAoLSpau/jbwzs2eQcGe/gGVv6rIUkyJyPtzKFdLp4+0xeusbF3Uqsq1i6cffHkwfot2tUMqfcs4v6JvdvCmrQaO2uhzFRRVlK0/NsJpw/sCGvS0tHFA3EoMy3Z3MLqmzk/uXj4vKplhzK5nMHVxv9tOKr7WEAIab0+NzPdNzA4vFlrDnG0ziA1kTds2eHmxdMZKYl1GjT9hzNAaNSq80f3EgQx8Osprp4+er2O32Vqatb9y6+yMlIyU5N0WrVYIoUEUVSQl5LwPCstBSFk6+Ds6RdoYWWDENJqNHevnbexc7R3dnse9bC4IN/J1d0vuK5IKHrxPOrFsyihQOQXXMfOydXY2wwSMDcz/VnEfa1G7ebt7+HjLxSJ+a9SkiQ1alXyi+dpSS8AQq6evu4+/mKpjG9iIEmyrLQ4LjoyLyvd1tHF0c2DDzv4xov71y8gBBq16sAHE6XFRSkJsVmpSTRDW9s6egXUtLS2BQDQtOHGhZOmpmZeAUHPnzzKzUqztLH3rVHb3MqmSj9CDiFXTx+5mVnyi1i9XicQCFiGiY+JlMlNm3fo/tuan+JiInxq1IIEVJdXJMc/c3R2t7F35IOh3Mz0hOfRxQV5SktrT79AO0cXPlzKTkuOfHA7rFELjaoiLiYSIc6nRm13bz9VRfnzJw9zszKsbR38g0NMFGZ8pEuQZHFhfsLz6NzMdLnCzMs/yN7ZlW83z8vOiLh7vUbdegQkn0Xe12t1Lp7enn41JFIZ92aUXFyUf/PCqczUJK1KfXTXZncvv/CmrQmKKsjJSoh9mp+doVBaePrXtHdy4a+cm5kW+eCWf1BIUX5OTma6d2Cwh7d/9eoHhBBtMNACPR9RkSQV2qjF2cN70pMTykqKLK1tCYIoKylKeP40Oz1ZIjPx9Kvh7O7FDzjgo6jczLTk+Nj8nEySohxdPTx9A01MFcYnoaSoICnuWXZGmlQq9QoIcnLz4H9gECRZlJ+b8Dw6NztdobTw8q9p7+T61lZvPpWcjLTkF8/zc7IEJOXg5uHpFyiTKwAAJYX5d6+er1E7XCSRPI18oK4oc3H39vQPkpqYII4DEBKQyElPjY2JUKsqvP1qMjSNa+kwHoSQMRiiHt6Rykw69vlSrlBoNRoTU0W7Hl88uX8r8v4tD59AAKBxsSsIYEVpcXlZSWijFta29jqtRiKV1gpreOPCybzsTAAATdOBtcPadusnkUr53jh+QXWiH90tKSxwdvPSatTZqSnmVjYevoHmVjYcy7Isw3EcHruD4ajuY8F/OfUeOkav05opLfnuWRCA0uIijuPEUtk//f1BEERBblb8syhPvxqevoE0/bqLFU0bHF09Ziz+Ra5QikRiSBAxj+7+umphVlqS0tLaoNMV5ef51Kw1ZuZCD58AjTrv5L5tJqZmDE1nZ6QBgFTlpR16DjS3sj61fyeEoKgwz8bO6Zs5P9WoHQYAJEkq4Xn0/EnDy0tKEGLVKlWbrn2/GDnRRC6HEOZkpu9ct/TutQsKMwuEUEV5af3mbb/8eoq1nSMAID05YcuKeVGP7ppb2Rh0Omd3z7LSEqWFFYSQNhhOHdgBAGjcuiNBEC+eRW/9eWHC8yhzSxuGYQrzc1w9fb6ePj+gVqhGpTp7aDeEUCSWpLyIFYhEhXnZHr41xs5e6OETULnGjmNZKzsHeyfXjOQXqooyCyvb8tLi+KdPnNw8a4bUNzO3iH8aqdNpJBJZYW52bmZ62+5fSGQmLMNcO3t83+bVRYV55pbWJUWFCqWy34gJzdp3FVCClMT4vRtXvXj65PmTRwih8tJiUzPzvsPHRT24HRNxDwCipDCvSdsuo6bNlcpMSJKMfnRv66qF6SkJ5pbWqvIySijsM2RMu579KQGVk5G2f+vapxEPUhPitFq1Qa9XVZS16dp3yPiZIrG4UhdsQlNR/uT+reKCPJZhHt2+ShsM9Zq3vXftwo61y/JzMswtbcpKi8Viac/Bo9r3HCASCTNSk/ZuWm3v7JKfnanXG8IatRgz+8e3Po4QQuODyo+KRQBBSEAISYqKj4ncumphfMwTcysbjUYFIejaf0TnfoP5pu3rF07u2bCyrLjY3Mq6ory0oqw0vGnrkVPnWFjZAACeRz7atmZxYtxTCysbVUWZUCDqP2piy869KEoYee/61tWLs9OSlVbWFaWlIomk3/Dxrbv0qR7YIYCunzu5d+PKstIScyvritISVUVZvaZtRkyZY21nX5ifu2/Lmud1H6clxqlVFQzDVJSWNGnbefjEb+VmSoTQvWvnt/28qLioQKG0MBj0nj4BgEM4rsMAABBCg8FQVlJkqjC3sLLlf3ayHKu0sBKKRNlpyQxtIEjS+DwihEyVFgozi8TYp8VFBUoLa9qgj41+LBAIrWztGYYODm1Qp14ThmVYlhUIhSWFBTGP7yktrCxsbAEE6oryvNxMWwfngtzsx3euUZTQO7Cmja0jAz7eEffYh4Gjuo+Lpa093yQEECIpKj8369KJA5Y2tr41av3TP8AghAV52eryMmd3L4FIVKW/LUEQVrYOiOMgJIrz87b9vEhdUf79yq0uHt4sy1w9c2z3xpXXzh518/YlCIKiBM+jHnXpN3T6wjW0Qb9l1YIT+7d7+gZ+M2eJh29g5L2baxbMuHb2WECtugACCGFS/LPOfYd26DkAQHB8z9ZT+7fbOjp17T9co1LtXLvs0Z1rQ7+ZVb9FOwjAjQundq1fASEx7ttFHMvu3rgyMe7ZxDnLaoU3Ki8t3rlu+dOIB25evnyeKUoAAICQqKgo2/7LT9npKbOXbvTwDUQIPbhxedOyHy6eOOAXFAIgEAiFz6Met+jYY9SM+TITkzuXz21ePu/SiQMeU+dWLgSEkFRq4h0QdP7ovqLcHGtbh9ys9OyM1CZtOlna2Hr4Bj6PfFCcn+fk7pWaGMcwBt+atUiKenLv5uYV81w8fKYtWm1l51iYm/3bmiVbVs43M7cMb9aaJEmDQRcXHfHV5O/8gusmPI9eu2j2xqU/NGvfdenWIxRF7du8+vqFk03adK7XrHVqYvymZXMJkpy7+jcnd2+NqvzgtnV7tvxsbmXduE1ngiRZhol5fH/g6MlhTVtq1Kpd65ZfO3c8tFGL0EYtjAPxWJaxc3ab+MOytYtmZ6enzFi8ztLGLuF5zJYV801Mzeau3u7s4V1SlL9r/YrdG1cqzCxadOpBkiRNG8pKiifNW+Xg4koQJEEQb6kSgNAY1fHjke9eOZeWEF+/RVtzS+v87MyNS+eqVeXfrtjs7hNAG3Qn9v12YOtaM6V5u579XzyL2rJivoub13crNivMLQw6/dFdm08d2BHaqHnbbv1yMtM2r1ygKi+d9dN678Cg8tLSX1fM//XnhS5evnJTxabl88QS2by1Ox1dPCrKS/f/umbXxhXmVtahjVpWDspJikqMjdmyYr6bl+/3K381NTc36PSHd2w4e3h3aOOWbbr1gRASBBH98E6foWMbtGrPMcy+X9dcOnGobsPmzdp3S4p/tvXnRXIz5ZQff7Z1cE6Mfbpl5QKNRvWWLlPYfw9CgBJQUpmJXq/RaNSQIADLEpBQlZfpdTpVeRnLsq/6VAAAAMsy1nYO/UdO2LF+2eLpY3xr1slMS0p4Ft1r8CifgCCOZRFCHGcgSDLxecyV00eeRtwvLy8dOn6mnaMLQqikuLC0uLAgJys5/hniOLWqQiKTdR/4VctOvSBBfMbTCWF/CI+W+LjwFekAIJISqFUV23/56cXz6K5fDHP28PrHx6tDoNdqWY6VyRVvrRfkXzT8JGR1G7UcOmFm7XqNLaxtbB2cm7TpbG3nWJifw9AGACDLMs6unp36DLKys7d3cQ8Oa0SRVNO2XerUa2KqUNYKa2jn5JKXncnQNASAZZmAoJA+Q8dY2dpZ2zn0HDTK1cvv5sUzGrUqLSk+4u71Jm06d+ozyMLKxsLatnOfwY1bd3p851paYnxWenL0wztN23Vt1qGbQmnh6uX3xcgJSguramNpEeC4miHhQ76ZGdaklYWNnbWdQ8NW7R3dPAvycvhYh2VZC2ubnoNHObq4K82t6jdv6+jinp2R+rbABfjWqKXX6bLSkwmCePE0CkLg4RdIkpR/UJ2igvyMlESA0ItnUeaWNo6uHgxN37h4GiDw5ddTfGvWMTVT+gQGDxo7jaSo6xeOM7QBAsgyTIMW7eq3aK8wM69RJ8zR1UOuUHbuN9Te2dXWwblOg6YkSRXk5gAAH968UpCXPWDUpDr1mygtLF08vPuPmmimtLhx4bRepyUIyDJM3YZNW3TqYaa0dHb1bNS6I0EQBbnZ8M0xLgRBSGUmFCWAkDCRmwqFonvXL6jKy/uPnBgc1sBUYebu7T9o7DS5Qnn9/HGNugISBEKodr3GNeqEWljbKpTm1UuGIMm87Ix1i79b+cOUVXOnrvxhyvzJIzYtn2dhbd2h10CRWBL18G7Ki+d9ho2t16y1uZWVvbNbn6Fjnd09r507rqmoEAhELTr0GDx+hldATQsrWyc392btukqk0qK8XEgQz6MepybGdu0/vF6zNqZm5q4e3gO/ntKuR3+xWHL36vmS4sIvv55SK6yhmYWFm5fPgFGTpDL5rUtnDAZd5cE9CCFKIGzZscfgcdM9A2q8SqWbSCwtys/h+wOwLBMQHNq+10BzS2tbB5embboIhMKcjFQI4ZP7N4sK8noOGh1Qq67cTBnaqEXnfkMgQQD8BYoBgBAnFIl9atQuKSy4dfE0x7JCkYimDTcunCovK2X5htE3X6sQQoXSXCYzSYyNuXftQsyjeyRB2Dq58D9HjcckPI968uBWUUEeSZDlJcW0Xg8hLMrPrSgtdXb3Gjx2+ozFa8d9t1hpbvnryh8f3LxMfXYjk7A/BdfVfYwoSlCQl7Nt9aJ71y72Gjy6Tbd+AIF//OcXAgKRiCBIvU771rQoSsDPPWZhZT1g9MSi/NwXz6JKiwoy05KfPXlYlJ/j6RfIn4cQsrJ1kMpMGJrmRzCIJBIrOwdjt3SBUMS96v+BEPIJrCWRyfheSjK5qYdvwKPbV0uLCnMy0wy0wb9WXUgQDE0DACiBwD+o9u3Lp3My0yiKMuh13v41AeA7znNWtvYOLu5VBgcghGRyxRcjJ5YUFSQ8jy4rKc5MTYx/GpWbma5QWiDE8f3rzS1tFApzhjbwIwPEMhOOfUtbBuI4RzdPpYVlYtyzxlrNs8gH9o6utg7OHMt6+NYQS6Qvnj2pUSc8NSHO1cvX3MpGo6rITE1ycHWzd3ZjaAPHsjRCto7Ozm5emSnJWrUaQECQlIOz28uAHgGKEphbWpnITVmaRgRJUQKCJBHiaIM+IzXJYNAf/G39yX3bOIQgAAihwrxcSiBUV5QDAEmKsnN0JUmKZRkAoVgiJSmq8oADo8rlr9NpMlOTlFbW7t7+tMHAcRzHcTb2jq4ePllpyRpVBQSAJElLG3sAIUO/ffYTCKFOq0mOfwbhy66NUrm8Q6+BzTv0cPHwYmhDamIcx3Gn9u+4cuoIhzh+YtXcrAyJTFZUmO/i5TNs4uyCnOznkY+KCnLTkxNiHt8z6PUc4jjEpSfFi8RSD98AlmE4ljWwrJu3n6d/TdqgO7xjo0Gv37tl9ZGdGzn0cjBKSUF+ZmqSVq0SKC1e3zLLunr6DJv0bX5O1vPIh0UFeelJCdGP79IGPfe6NxK0c3YhKYplaAiAUCwRCMUMwyCOS02MVygtnN08aZrmWJaFtIdvgNzU7N+aJxz72HAs17BFu4i71w9t35Ce/MLd2//Fs+iCvGwLS2uKEvAzuhtRFPU86vGKOVOsbR0Wrt9j4+BUUVa6e9OqdYu+JQiyQYt2/NAKlmGatO1Sv0U7rVq9e8OKbasXCYTCdt37B9YOXfbbEVMzc3NLa8Sx3gFBCjOLhVNHXjl9pHZ4Y6FIhHvX/WfhqO6jIxAKUxPi1i/5PjE25suvJ3foNZAfl/dPp4sQZ2FlI5WZ5GamswxTpV0JAfQs8oFAKHT28KEo6sqpI8f3bk1PTkQI2To42jm6CkXiyu8RkqIqV/hBCCHxlvo/BAAEUCKVGeNISBAiiYTjOIah9TodAEAskVQ+RSSRQEjQBgPDMABC4/TFCACKoiQyk7fNe4duXzpzbM+vSXHPWI6xtnV0cHUTS2WIe51hihJUzuHv9WLkOM7M3MrV0zc1IS47PTU9ObFmSLhcYcayjJWtvZO7V2Lcs/SUhOLC/PAmrSRSWUlhPm3QS2UyUkAZi4ckSZFEUlFe9nLoJQFJgfD173gE4NtmseE4Tq/TCARCK1s7oUj8qsSgraOLpY2dQCRCCPHd1wB8HZbD95gAmWM5vU4rFAgFQhF6VZgEQYgkEoahOZbjP0CKetfrgmUYZ3fv71dukUhlfCdRoUgMIeBYjmUZgiC0ajUlEFra2Epl8leRELR1dDEzt5BIpFq16vTBXZdPHMzOTBMKRfbOrkpLa1IgQAgBBLQaNUUJBEIRqPTFSBCQZVm9VisUCq1s7QVCobFM7BxdrO0cSEpQ+fcJJAitWn3m0K7Lpw7lZKYLhSJ7ZzdzS6uXqbwiEAorp8I/CBzH6bQagUAgEApejcEFIqGY7xH4hyWM/RcgxJlZWI6dtfDUwR2R927mZKb71qjdpf+wzcvnSWUmBElWfq44hB7cvFxeWvLN90t8a9ahGYPSwuqLkRMSn0dfPX20Tv2mYokEAsiyjERqIiWgpZVtr6FjYqMe379xqWm7riamCoXSgjYYaIMeAMBxyN7Z1cHVIz8nU1VRZimx/RsnFsU+LTiq+7iQFPUs8uG6xd+WlRSPnbWwcdvOiEMfIKQDACCErO0cnd29EmOj87Kz7J1djW2+JEkVFeRu/XkhQmDW0g25mam/rvrRxt552sLVLh7eUhN5eWnJgkkj/o+pL/l5TsrLSozjYTmGKSksFIulMplcrjADCJUUFrwOTRAqKSrkEGeiUJAECQAoKS6Er9YzoGm6oqxUbqqonARJUgmx0RuXzpErlBPnLnPz8pOZyBmGnjth2P9XyyIWi738a145czTy/k2Nuty3Zi0BJWQYWiKT+daode/a+ScPbiOEvAODAUBCkVgmNy0tLtRpNHK5GX/TBp2utKhQbmoqFInev/2OICmpTC4Uirr1H+7pV9M4Y3BFWSlBEhKpyf834RwCgBJQcoUyOy1FXVGmUJqzgCMA0BkMpUUFUhO5QCRC75dLCAAlEAiEL+fnYypNqY8AlCvMAATtew4IqtuAb/iGAFSUlwEAzMwtLp44uGv98tBGzb+e+aOVrb2JqWlKQtzTiPv86XIzc71Oq1GV80EWQRAlhQW3Lp9x9/GXmSpEIkmPL0e6efm9LpPSEpKixBLpG5OSEOSN8yd3b1gR1qTV2FmLLG3tTEwVSXHPYh7ff7NE3nKzBEmaKS01apWqosIG8mtnQI1WrdNp8TBYzEhVXgYg6DtsXNcvhiGOM1Wap8Q/Ly0utHN0pihB5RcO4riSwgITuam1rQPDvKzFNzMzt7JzKC0uNOh1KfHPXjyPaty6k8LcgmM5BgC5qZnC3EKrVjEMnRT7LCM1sWbd+qZmZvyvU4Q4jmVJkiJJEv/O+C/D/eo+IiRJZqYmr1/8nV6rnbZwTcvOvUmSIinyw8yJxXGciamiQYt2hfm5pw5uN+h1QpGIEggFQiGA6MrpIwnPY3xq1DK3sk6MfaoqL+3Qq3/Tdh2c3DwtrW3TEuOKCnIhJABCf/YrDkIi5vG9kqJ8oUgsEokzUpOeR9x39/EzM7d0dveUK5X3blxSVZQJhSKhSFxRVvrg5mWZ3NTJ1dPJ1UNpbvngxmWNqkIoEglF4pT45xnJCcSb3UogAdOTXhTk5bTu2qdlx67O7l5WdvZZ6Sl52Rn/Rz93hBBBkB6+gSxL3716XiyWevgGshyLECJJ0jugpl6nf3T7qpmFpaObB8MwEqnUJzA4KzX5acR9PuIRCIXPnjxMT07w9KspkcjeM7JEiBMIBF7+NTWqinvXLgKIxBKJRCrLTktZ9t03R3dtZhn6/5t9FCFOKBR7+dcsKSl6dOc6QRBCkUggEsdFRya/iHXz8pfJ5e+/7AeqpPJ2CIFPYDBjMNy5ep7jWJFYIpHKCgvyVv4wZffGlbTBEBcdQVGCHl+OrNuwkYOLm8LMPC46QqtWIQQghF5+NViOibh3EwAgEIqEIvGTB7e3rFiQk57qWyO4vKzk/o1LkIB8mWQkJ/w0a/yJfdsQy1UOuRDiYqMfU0Jhj0GjQho0dHB2UyiUcdERWo3qj74FESSgX1CIWlURcfc6SRACoYiARNT9WxXlpfDvm5cb+6SRFPXo1rWFU0cnPIuytLZVWlqTBHnv+kWOY31r1iFIgn9LkCQFACAIwtLGrry8JCs9RSAUkRQlEIpKS4oLcrIUSgup1CTm8f3Ny+dHP7orEkn4vXnZGXnZWdb2DjKZ/NblM0tmjo1+eIffKxSJslJTMlOTnN29TEyVf+/i19inBdfVfSwghLRBf2z3ltTE+OYduhXl5547soffhRDn4RPg4uX7Ty8ahjiucZvOz588On1gZ0FuTpuufaxs7bUa9a2Lp84e3uvlX7Nz30EUJbBzdBGKJJdOHTazsJbKZNGP7105dZhhWIYxcBz7Z5c8JUgyOyN1zYKZrbv21es0R3ZuBgRs33MAJaDsndzadx9wYNvaFXMmt+naBwFw4ei+508e9R0+ztbRGSDUvueAPZtXr54/o2WXXsUFecf2/KrTqqvUnSCEbB1c5GbKa2eP2zm5yk3N4mIiLp04xDAMbTCwDPtnQyGWY53cPU3kimeRD0Mbt7Cytec/F8Rxrh4+MhP5i5gnbXv0N1UoOY4DJNmsffdHt69t/XlRcUGeT2CthNiY47u3ODi7tejY40+ElQggjgtt3OL+9YtHd2/RaFT1mrYpKSo4tntLdkZqu+79hSIx9/81BSIAAGjYsv3Dm1d2b1xZUVYcFNowLenF0Z2b5Aqztt37CYXiv97IyLFsYJ2whi3bXzy2n9brG7XuoNVoTu7bHhfzeOTUH8RSmYuHz6WTh04f3MmyHMvQ929cvH3lHCUQGnRajmP9g0LqN2t3+uBOxHF1GjTNSEk49NuGgFqhdRo0I0ny9uVzh35br1aVhzVuWZiXc3Tn5oK8nM79hwpEwsrtUJAgXD19r545evrgToahGZq+f/3i3Vep/FH+ueDQBqENmx/evsGg19cICY95dPfckb2f35oZ2F9h6+iUk5F6ZOcmqYlcZiKPuHfz1IEdYY1b+tQI5lhWr9edPrCDZZguXwyTyeVhjVtePXN094aVlEBg7+ymLi/bv3VtcWH+gFGTxFJJaKPml04dPvjbBoXSwsHFvSA3e8fanwAAzTv0EIiEYU1aXj1z9OBv603NlA4u7gU5Wb/98hMkiNZd+giEArx+3X8Zjuo+FiRJZqWnPI24jwC6eubYpZOHjLtYhhk8brqbjz/7D0d1HMeZKsyGT/rW1Mz82rnjd66ck8pkBoOBgDCscct+X31j5+RKG/RBoQ36jhh/av/2H8YPFkkkrp4+PQeNvnv1fGZ6SllpiUAg5CfDNF4WIcRxbOXIgO+PDwBAADAM07h1Z426Yum337AM41MjePyYJTXqhNM0TRBE1/7DZHL5uSN7Fk4bDSHh4uE9YvL3zdp35dvA2vf+UiASnTm0a+6EYSYmpmFNWgpFEmN3fj4JlmW9/GsO+nrq8b3b5k8cLhCKnNy92nTvmxT79MmDW0WFeeYW1hzHAchVKYrf+73LsazSwtrR1TM26rFPYLBIJOEb/liWs7CxdXRzT37xzLdmLYIkOY5jWdbB2XXC9z8d3rnpyM5NFeVlCjPzWmENu/Yf4eLpwzLMOwqnSulxHKc0txo57YejO7fcvXbh5P7tQoHI3TdgzMyF9Zu35avHuDfnIK1+8crQq4RYjrW0sf965vwjOzadP7pv/69rTRSKmnXCO/cd4luz1qtJFn73On9YYvxemdx02ITZlrb2Ny+cvHTyIEFSrp4+Y2b+2LhNZ4ahm7brUpCXff3c8WvnjktlJv5BIQNHTTqx77fUpHiNSiWVy4d+M0NpYXn93PHDOzdJZSYhDZr1HTZWaWkFITF6xvxjuzbfvHDq2K5fhWKxp2/guNkLwxu3rNK1iGXZZu27FubnXD934uqZIzKZ3D84ZMDoScf2bE1NjNdpNRDAqrf5uvBZuZnZ8EnfHt6x8dyRvQe2rrVzcmnYquOti6c4BndgwgAAgGUYL/+gL0ZO2L1h5bdfDxCLJaUlxWGNW/QfOUEkEnMcYvT6a+eO03p9+14DWZb18A0cNXXutjWL500abmltV15aIhQKB46eXK9ZG4Ne7+zp89WU735dtXDBlJEWltYlhflKS5uvpn5fs259g17v6Rs4fNK3239ZYtxrZmH91eTv/WuF4JDuP+6jW3T8k8NyKCZTzf3lUoQQGgz60qJCjmNB1fouZGJqJpOb/vVhsCKx+Pyx/SRBNuvQ7fcGMxIkyTJ0XnZmamJ8aVGBWCJ18fBxcvMQiaV8Tzt+xaTS4iK9TkMQpImpwsRUUVpUqFGrzC2tCZIsKconSYFCac7PXqZRqyrKShVKc7FEysceJYUFkCCUFlYswxQX5puYKgQCYWlJEeI4E1OF3FRhXPQGQoIgYFlJsVajBhDKZCZyMyXHcnzDJT+9bVlJkU6rJimBwsxcVVHGcZy5pTXHcaVFBQAApaU1hBBAWF5SrNWoICRkclNThVl5WamqvNTMwkogEJYUFUAAzCysXs21xpUUFUIIlRZWv/dhVZSVqlXlCqUFPzjAuL28rESjUiktrCpP/EtSlEGnKystZmhaIBSamilFIjHDMABAvU5TWlykUJq/vA5CpcVFHMeaWVgSBAkh1Om0ZSVFJnKFzETOt+AwDFNWUmzQ6wiCkJmYmigUHMsiAAw6XVlJodTElH9UIIR6na6spFD26tw3HimEykuKGYZWWlrz03+QJEXThrKSItpgoAQCU4VSLJEyDP0yD8VFJqYKqYn8rQ8hx3F8Gb4s7d9BkiTLsmUlxXq9FgIoNZGbKpR82EQQBMMwZSVFtF5Pvkq9qCCXYRhzSyuCIPnZ+MpKigx6PUlRCjNzkUTCf4G9KpMig15PEIRMbmpiqng1Ec+bzzafSnERbdCTAoGpmVIslhbl57IsY25pzbJscWG+1MTExNSML0CDQV9SWCA1MZGbmr0qfLq0uIihDSKJVGZiWlKYL5WZyOSm+EX6e0Ri8YGt69y9/YLDG332AQc/8XV2Rmp8zBODXuvm7e/u7ScUS/g+xwRBRj28c3jHxinzV5qaKTmESJIsLshPjI3Oz8mSK5TeATVt7J0AAAghfunFooLcF0+jivJzLaxsvAODLaxs+F9u/NyKhfm5Cc+jC/NyzC2tfWrUsrC2/Y+sLYEAcFaKrEwFf3zofw+O6v6qvyuqA/xqm8bFQN+E3lkR8v7eJ6oz5sQ4JvRlJVClDPDvFL4Bkc8bH4JwL3uYUQgg4+AJSBAEQVT+luXbrViWfbnAKMchxC9F8LY75SO7l2lVGzti3IsAv4InAMC4nhifCng5CNd4ET7DBHyVq8pHVsnh7xURQRAEQbBvFgsAgC+36iEFhAR/gwDxL17udUmSpDFOBQAQJAkrJf3ygEoJVS/8ykdW38JVy2SlhGDleRBfXxkBDr2Z4ptXro5fS/cPR969mfk3Ps3qqVf5FH4ve+8ok3dloFoqv1eAVbfwa2YghDjuD4sF+09FdaDKyxMh4yuCf/mc3P9bWuKLkdN+EAheDioiSNI4qyL/F1H51VF5L8dxVUakkSQJX5/L/XfGveKo7h1wC+xHBCH0j081/H5e5uT3XxEIVf3+rvz1XOUuEMdVaTs2nlt5nXj2bfPD8Qe9a3Ttm3sRWzkblbYjhKpmmAOvclX9bfiH78ffa3DkOPata/YgxL31BiuXwMsrvJl09QOqF/67jvz979Hqpfr+V67uPR/d30virbvY6kXx3ue+fwbe+jS+a0vlZ+w/EKZgf8o7Xp60Xm8iV3QbOEIoFBtfmBzLvuP99u69LMuC/0wkh70nHNVhGIZh2D8LIUQJhS069uS7af7b2cE+WziqwzAMw7AP4SNpjcE+Y3imJQzDMAzDsM8BjuowDMMwDMM+B7gFFnsDSVJVZ6aAAADAz6z2AVIHn1ojxasxvHgsOYZhGPYvw1Ed9hKEkKYN184ey8vJBK9WVhUIhEora1dPX2d3T4oS/nOdfCGEtMFw6eQhgVDYtG2XTyVIIgiirKRIIpFRr5eWxzAMw7B/B47qsJcghIyBvnD8wPMnD03NzPkaO9pgUKnKTUzkrbr06TXka1Mz5bsmGflrqdMG/bkje6QyedN2XT+JCAkSxI0Lp+5ePTd4/ExbByc8yQWGYRj278JRHfYGAkJ7Z7cZi36Rm5kjxAGECvNzTuzbfmLvNtqgHzbxW5KiQKWlFAiCQABUboJ82/y9kCQJhF7PafdyTmAAqqxwRVECknrjmXw56Wu1IwmS5KcdJggCQqL61J3GSYkJSFSesZYgSf5qoOoswW+5F/52+EmYXyaEXs8pSkD48NaVlBdxJEkRBIHnKsAwDMP+XTiqw6oiKYGFtY3C3IoPX2wdnJ3cvPRazbWzx8Obtq4V3ohlGAgJkiK1anVedgZBkrb2TkKxmGVYlmUyU5MhBPbObnxtH4SAYeiMlDSBUGBj70SSJEGSeq02LyeT4zgbeyeJVPrWWi5IECRJ6jTqvOwsAJCNvZNYKn21cCqXnZ4qEAptHV0KcrPKS4qt7BwUSnOWYRHiOI7LTk8RikR2ji7FhQXFhfkWVjZm5hYAQJo2ZKWlAIBs7Z0pAfVq2Qn+XlR52ZkkSdk4OApFYj4hlmEyU5NkclNLG7ui/NyykiILK1uFuQXiOJZlMtOSNRXliGOT4p9CCMwtrBH4BKoYMQzDsM8VjuqwahBiWZZlGT6qY1lGYWbeqkvvp5EPHt++VjOkHkEQBr3+7JFDZw/vVleUAwCVFpZdBwxv2KI9hPD8sb1P7t+esWStk5snx7IkJYiNjlwzf0bLLr16fjmSYZjr504c2/NrWUkRAEAmV3TpO6Rxm84isbhyFiBBGHS6q2eOnj60U11RgRAnVyg79f6ySdsuIrFEpy3ftmaRVCa3sXe6dfE0yzIkRbXp2rddjy8kMhNdRfm21YtNFUprO8cbF09q1WqxVNLjy1Fu3n67N67KSE4w6PU+NYKHfjPTztEFAWDQ6y4ePHD+yF61WgUAMre07j5wZL2mrUmSLC4sWP/T9x7eASRF3rl6nqFpkqSate/ac9BojuMObl37POoxx7Gbl81r1+OL7gO/gngJPgzDMOzfg6M67I9xHOfo6qEwM89MS9brtFKZ/NSBHXs3rQpt3DK8aWuWYW5cOLF+8feIQ807dPerWefyycPRj+66uHtzkONYLurB7fKyYv+gEIKkLh/dv3X1jwG1wjr3HUxSggc3Lm1eMU+n03TuN9SYHAQAIXRi37Z9W1YHhzZqOLADAODmhZMbfvpBVVHe/cuRCAGdRhv98J6Ds2u3gSMsrWxuXDy1c/1yAFCPQaMRQjqt5mnEAxcP7879horF4hP7ftv+yxJzS5sadcJbduoZFx1x9sieUwd2DP1mFkmSx/dsPbB1bf1mbUMbt6AN+mvnTqxdNBshrnHrTghxWrX64smDXn41eg8ZIxSJr5w6cnTnZltHl+btu3XpN6ystDg7PXXA6MnegUE4nsMwDMP+XTiqw/4YQpxYIhVLpBp1BcuyGSkvzh7Z06BF+2++/0mulAEEwpu2WjB55KkD24PDGtSoHWbv5BJ572az9t1kJvLykuLHd294+dX09KuRn5N5fO9Wv6C6MxevNTNXAAI0bNl+6exvTh/cWa9pG4lMxidHkGR60ouzh3cH1gqbOHeZ0sIKQlgnvPFP344/c2hXeJNWSksrCIFQKBgyfmZIw+YQIt/gOqXFhRePH2zcurPUxAQAIBAIhoyfERTWgIAEwzKr588IbdhixKTvRBJJrbCGcTERqQlxBr0uPzvz/NF9Tdp2HvftIhNTKUAgvEnreROHnzqwIyi0AUmQiONMzcyHT/7eJzAYQuDo4jZ/0oi4qEdN23b2Dgwyt7QuyssNrBNmY+dg0Ov/1U8JwzAM+6/DUR32fhDgO41BCJPjY8tKihiWPnd0L8vQAECSohBCmanJ2elpNeqEBoU2uHr2WE5Gql/N2skJsZmpiQO/niIzkT+LeFCQk2Xv7HrxxEGWYQAEBEkyDF2Yl5ue8sI/KIRPioBEWvKLspKiXkO+Vigt9DotAEBpZRXepNXOdctSEuMsbOw4lnXx9PULqmPQ6xDi5KZmtcIbH9jyS0ZKgl9wCOI4G3tHZw9vg05HEKTCzEIkEvsG1SEpSqfVUJTQxEShVpWxLJsU/7yirIQxGM4e3sPS/L2QAID0lIT8nEylhTXHsa4e3rYOTnqtFkCgUFqYmCp0Oh3HcgzD8GM4GJp+z6XlMQzDMOyfg6M67I9BCDXqCq1abWPnKBAKy8tKOIaJi45Mjn9ubHaEANjYOyKOBQCGNm5x4fj+mMf3fAKCH926YqpQ1qgdDgCoKC9lEZsc/ywrLRlVGkhr5+jEsVyl9EB5aQmEhNLcEqGX2xFCCqUFQZLqinJ+HIaZuaVAKDQeIDdVIIgqykshJBAAQomEH77Kn0sQhEAgfJUoAhAACAFCFWUlLMs+e/IoITbm1V4IAbKxdeRYfjAsFEmkBCQQQBBAhACEEOHWVgzDMOzjg6M67I8RBJmenFBeUuzi4SOVykiCJEmy+8Cv6jdrQ9MGAABfxQUhITUxoQ16F09fN++AyLs3w5u2fhrxwK9mbTsnF5ZlSYpCHGrbrV/Lzr0YmuYvTlIUAQmpiZw28JcCCACRSMJxnF6vheDlQhcQAL1ey3GcUCQGAAEAaYP+dXCFgF6nAwiJJFLA1ykCCMCbi2RUGaCKAICQoiiKEvQa8nVYoxYv7wVCkiQJSJgozEqKCv6J8sQwDMOwfwJeBxZ7C4IgCJIkCJIkSaFYXFJcePnUYaFYVLdhM4IkbZ1cSYEwIyVBaWlt6+hsY+9kbefw6Pa1SycPatVqAKFMJg9t2DwnM+3KqSOlxUV1GzUXicUcx9o6OMtMTFIS4szMLW0dXGzsHW0dnZ9HPjx9aFdFeQkkXgVhHLJ3dhWKRM+fPOZnpCNIkqHpuOgIihLYObpwLAchzEpPKSrIowQCgiRp2vDi6ROpidzR2f0950lGAEAI7Z3dCZLITEk0t7KxdXC2cXCytrV/cOPypdOHdVoNP1XeH4CAJEgI8Z8ShmEY9i/DX0XYmyBgWaYgLycvMz0vOyM9JfHu5XO//Dgr4u6NFh17egcGGQwGn8Ag/+CQy6eOHN29ubysRKNWnTu8e+vKH2OjHlEUBRCCENasW18gFJw7ssfM3CKgVhjLshzLOrp61G3Q/N71i3u3rCkqyNXrdNfPntiw9IfIezcFArGxKo3jWFcv31phja6ePXZi329qVbm6ovzkge3Xz50IqlvfzcuXZRmCJLPSU/Zu+jk/O1OnVp8+uPP2lbOhjVraO7u+fxc3lmF8a9byrVn7wokDx/durSgvVVdUnD64c+vPi+JjIqvMh1wNIkiCEgjKy0pTE2JV5aV/pdQxDMMw7K/DLbDYG2iayUhO/G7Ml3zfNQAQx7EikbT7oJE9vxxJEBTHsjIT+ZBxM7as+vHgtvXH92yFEOp1Ou8awUO+mWmiMONYFiHk6Obu4Rt45tDuZu27mVta8ZGWUCTqN3KCgTac3r/9wrH9BAH1Oq2ji8fQCbOUlpZlxUV6nY6kKA4hiUT25ZipLMvs27z66M7NAAKaNoQ0aDbw6ykiicRgMCCErG0dMlISpw/vjRCiDfrwpq17DhpJkCRAyKDXvco/AACwLKvTairPdWzQ6/Q6Hcux5qZmQ8bN/HXVj/u2rDmycxMEUK/X+QeHDBk33cTEtKKsVK/TGgyvB7cihF5uQYAgCJ+A4JsXTi2c/nWbrn2GTphNURTucYdhGIb9W3BUh72EEKIEgk59BtVr2oofYwAAIEnKVGnu7u3v5uWLEOKX/GJZ1tHNY9qPPz+NfJCdloIQsnVwDqwTJleY8ZETQoiiBJ37DnHz9q/boJkxzuFY1trW/pvvFj+NeJCZlszQtKWNXc2QekoLS4amhSJR1wHDKIEQIcRyjL2T66R5K2Ie3c3OSIMQOrt5+tcKFYnEfAMrx7E29o5jZv34LPKRqqLM2dWjRkg4vyaEQCjq3HcIgIAfmcsPYh02YbZXQBC/sBhBku16DqANeolEStMGF0/v6YvWPI14kJ2RAgCwc3AJrBNmYqpgGFpmIu815GtTpTnBD7xASCaX9xoyht/CMEyTtp3lZsqstGR7Z9eq/fYwDMMw7MPCU+H/VSyHYjLV3CdSiiKx+Pyx/SRBNuvQzTheoTKhSEyQROX4BCGOYZjqi3pBCCmBkHy5rCpL07RxrVUeRQkogYA2GFiWqXaigCRJACDHcQxt4PgTIRQJRfxiD9WSQCzLMjTNj2ZVq1Q/TvkKAPDDz7+ZmMoBgCzL8Hv584QiEah0HZIkBUJR5ZwIRSIIoOHVeAsICYFA8HKJWJalGdq42KtQJEYcZ6yuq7IFQigQCgmS5Bi2cpUehmE8kVh8YOs6d2+/4PBGb10bEMP+LASAs1JkZSr4tzPyMcJ1ddgbjJHQH+LbPd8SGL7CMDTDvGU/Qog2GN66Q/9m6u9Igg8EOY7V63TVfpmgKnfBsiyr1VTeUmXGYIS4t8ZkfHvrO7YghPDkwxiGYdhHAkd12KcHQiiTm8I/PhDDMAzD/kNwVId9YjiOE4pEA0dPhgAIBALchQDDMAzDeDiqwz49BEG4efsBAHA3HQzDMAwzwlEd9knC8RyGYRiGVYFnIcYwDMMwDPsc4Lq6vwFC4FPp3GXM5ieUZwzDPl3o1X/jdw72d8HP0TvgqO6vghA6mos+ldcVJSSdrBUAQCelgGXwKFIMw/5ZlJB0tFHam0udlAKOxa1D2N8AAWAiJv/tXHykcFT3VxEQWMk/pbkQKVZHkKS5lABA+G/nBcOwzx8yaEyEyEJGAoC/iTHsn4V/Of3nIFx9jWHYh/WJNGZg2CcPR3UYhmEYhmGfAxzVYRiGYRiGfQ5wVIdhGIZhGPY5wFEdhmEYhmHY5wBHdRiGYRiGYZ8DHNVhGIZhGIZ9DvB8dR8jjuOSkpIMOr2Lm6uJicm/kofS0tKkxEQrK2tnF+d/JQM8mqYTXiSIxSJXNzeC+BM/QjiOS3yRACD09vH+57L3VgkvXty/f9+gN4TXr+fv72/cjhBKTkoqLSkF/PTPEFIUZWFu7ujk9IFz+E9DCCUlJtE07eXtRVF/+iVTXFT06NGj7KxsAJCjk1PdunUVZmZ/S8Zomn4RHy+Vytzc3f6WC/4TsjIzb928WVFRERQcXDc09N/ODvahpaWmCoVCO3v7KtsZhklKTHR0cpLJZP9KxrBPAo7qPjoPHzxcvmxpYkICRQkkYnHfL/oNGjJELBZ/4Gxs/+239b+srRMSsn7TRlNT0w+culFpScnUSZNc3dxW/LxKJBK9++DkpOQL5891697dxtZWq9XO+f57CMGe/fs/TFZ5jx89mjBufEFhgVQiNZHLK0d1DE2vWrHi6pWrJEXycwYihCCEHp6eQ4cPa9e+PUl+wnO0ZmRknDl1ukPHDo5OTgzDLFqwoKi4eNuO7Uql8v0vwrLs0SNHflm9uqioWCQUIgB0Oq2dje2EKZM7dOwIIQQAFOTnHz50uEWrll5eXn82k6WlpdOnTgsIDFiydOmfPbeKtNS0c2fPdu7Sufq371+RnJT0zbjxL+LixBLJkGFDcVT3eTi4/8DPK1cCAPhnGABAkiRBEg4OjitWrbKytjIemZyUPH7MmM5du341amSVixw7enTt6jVr1q8LDAz8YDnHPjk4qvu4JCYmTp44kSCIKVOnmZmZXTh/ftlPSwmCGP7VV8bXwQdQWFBw7coVuVz+/OnT+/futWrd+oMlXYVUKu3avZvS3Px9Ip6N69ffvnWrc5cuAACBQNCuQ/sPvyba9WvXcnJyZs/5PjQ01L7a931FeTlBEKNGj7awsEAIGGg6Jzv7xLFjE8aNLykuGfDlwA/5Kf+9tm/77fjRo63btAEAEATRqk1rtUbzZ3+N3L93/4fvvvfy9p46bbqTszNCKD4ubv26td/Nmm1lZRUWHg4AOHL48M8rVtSrX///yCTHcRUVFRq1+v84t4pft2y5eO5c+w7t//qlKot4HBEdFTV+wjdt2ra1srb+ey+O/Vts7WzD69UDAPD19BRFpael37h+3d7BQSKVGA/LzMz8bvasyMjIdh06VLnC1StXlixcpNaoEct+uHxjnyAc1X1cThw7lp2VtX7zplatWgEAGjRqmJaWduL4ie49elpYWnywbNy/dz8tLW3wkKGnTp44ffJkk6ZNhcKqy4sZDDTHsW/92mYYhmGY3/tGNxgMAIDqF+TRNI0QMu6VmpgMHjYUAlilIU+n0wEAKieh1+n1eh1Jkmq1mqZpoVD4Rf/+75m6TqcjCILfqNPp3jMW0ev1JEkaM4YQ0uv1xUXFSqWyXni4t4/PW5qMIVQoFD169bKu9IXdpWvXid+MX7VyRVCt4Jo1a76jNIyp/F5uGYYBALy10bNKbqswGAwEQVS5F5IkBQIBTdMCwRtr4un1eoTQG4Wv1+u0OpIktVqtwWAQCoU9e/dGCFU5kWEYjuN+76MHAFw4fx4h9N3339cOqcNvCQoOsraxHjZ4yOFDh0JC63Isp1FrKIrS6bQGg0EgEOj1egihsR4XIaTT6UiCEL5Zs6vX60UiEUVRBEFU/1wMBgOEsHJuEUJ6nZ4g317OWq1Wp9MRJKnRaCuXD8tyBoNeIpGA91DlUUQIGQyGkuJikUhUr359P3//T7ruFqusUePGDRs1Mv6ztKR00oQJXl5eM2fN4vvY6HW6e3fvLl68OCMtXSKVVH5ES0tK9u3dt2nDBpo2CAVC8Mn+8MM+DBzVfVwaNGzo5OwcHh7O/1MmM5HL5ZkZGQba8MHywLLshQsXpBJp9549srOzL1+8mJSY6FepJTEjI+PQgYNPY2IYlnFydGrXoX2Dhg35XYUFBQf2738S+USn19na2rZt265p82bGN1TCi4Qjhw+/iI8HAPn4+nXv0cPTy9N42eTk5GOHj8TGxrIs6x/g36dvXydn5/LSsqU/LbGxtR01erRAIEAIXbt69fLFS5mZmQhx9vaO7Tq0a9ykiV6vX75s6e3bdzRq9fQpU3v17dO9R48Vy5YBAGbOns1f/0V8/JHDRxJevAAA+Pr59ejZw93DAwCg0+mWLllia2tXq1atQ4cOZmdlWVpZd+rUqWnzZr9XcxYZEXHyxMmUpCSBUFgzqGa3Hj0cHBxKSkoWLlhw59ZttVo9Y9r0WrVrT54y2UQur3IuH3ZU3uLj6/PVqFHfjB13/uxZY1SXkpxy+ODBuLhYhJCff0DPXr1c3VwBAFqtdumSJU5Ozv4B/kcOH87NyXV1c/ty0JcODg57du++f+8eALBZi+Y9evY0hgsRjx+fPHEiJTlFJBLWDArq0bOnrZ2dMfWoJ1GnTpxISkqiKKpOnTo9+/S2sLBQqVRLlyxxdnYWicRXLl92cXX5eswYaxub2zdvnTt3LjMzg2VYWzvbNm3bNmveHADwy+rVly9fKi8vnzVjRqfOnYaNGPHzipXlFRVTpk2Vy+UAgLS0tONHj8VER7Ms6+Pj26tPb3cP9+oFq9NqOY5Dby4vVTc0dO78+dY21hzL7fht+9EjR/Q0vWDuvDbt2/Xt12/V8hXWNjbjvhnPf1hlZWWLfvzRxcXl67Fj+dPv3L597MjR/Px8V1e3Js2akOQbIV3CixeHDx1KePECQFgjsEbP3r34bo4VFRVLFy/x9vHx9PQ8fPhQfl6enZ19py6dGzZqxDLs6lWrrl+7pqqomDF1apfu3QYPGVJeXn700KF79x6oVBWWVlZNmzVr177d78WviQkJRw4fiY+LBQB6+3h379HDy9tbp9OuXLHywrnzCKFFPy709PScOXuWtY3NW6+AfXIqv0x27dp54/r1JUuXBrxqS71z+87Yr7+u36DBl18OWrJoEce9rJDjOO6X1Wv27t4zZPgwg16/Z8/ufyHr2CcFj4H9uISFh/fq3Vsul+t1urzc3D27dz2JiGzcpImVpeUHy0NqSsrtmzfrN2zg6OjYuk2b0tLSSxcvGffmZGdPGDd+z65dAoHA1FRx9erVMaNGnz1zBgBQUlIya8aMjRs2shxnrjR//Ojx16NG7929hz/x2pWrQwcP3rd3L0mSJEnt27t32ODBN2/c4Pfev3dvxJChu3bsBABQFLlj+/Yxo79OSU5hWebO7TtPIiP5L/tfN28e9/WYx48eKc2VYpH47JnT34wdd/XyFYFA4OrqqjQzEwiF3j7etja2DMM8uP/g4YMH/PWvXLo8dPCQA/v3UxRFkOTeXbuHDh58+9ZtAABDM5GPI37bunXm9BkZGRlyU9Pbt26NGzPm/Llz1QsHIXTk0OGhgwafO3NGIpPStGHD+g0jhw2PjX0uEok8vbzMLSxIkvT09HRzcyPeu66ldp06dnZ2TyKf8PU3D+7fHzFs2P59+0iSEggEB/bvHzF06ONHjwEANE0/fvT4182bv5s1Oz8vTywSHdi3b+rkKZMmTDx25KhQKExJTp7z7XcH9u/nc3tg//4hgwZfOHdeKpPp9fp1a9d+NXxEXFwcn+6pEyeHDh58+tQpsUSs0+tXrlgxddLk0tJSlmUfPni4ds0vO7dvJ0iyvKwcEsT+PXvHjB597+5dU7mpTCq9evnKuK/HnDl9GkLCydnZ3NycpCgvLy87e3uO4yIeP75/7x5N0wCAJ5GRwwYN3vrrFsRxQqFw757dY0aNiouNq14OTZo2YRhmxvTpO7Zvj4+LKyoqAgDIZLIBXw5s3aYNSZK2drbWNjYQAHcPDydHJ4PBcPv2ragnT4xX0Ot1t2/dinoSZfywxowafe/uXRMTk6dPY76bNTs7K9tYB3br5q3hQ4cdOXxEIBBSBLl7164RQ4fFRMcAAAwGw6OHDzdv3Pj9t9/m5+WbmJhcunRp7Ogxt27eJEjC2dnZXKmkKMrL29vOzs5gMMyfO2/Z0mVqtcrKyio+Lm7KxInr167lOK76PV6/dn3wwC/3791LkhRJkvv27Bs+dOjNGzf5Z9jOzg4C4Orm5unl9Y5KTezT9fTp0x2//daiZcsOnToaN1paWS5fuWLNurWBNQIrPzYIoZDQursP7JsybarCzAxxeD1d7I8g7OPDcdy6Nb80DK9nb23Tv2+/4uLiv/Hihw8ePHrkyDsO2Lxpk5eb+8ULFxBCJSUl7du0bde6dUlJyavTD3m4uJ4+dYr/Z3xcfLvWbeb/8ANC6Mrly/7ePtu2buV35ebkdO/c5Zux41mWLS4u7tiuXb26oZEREfzex48ehYfU7dyhY1lpmUarGfDFFyHBtR4+eMDvPXv2rLuzy+IfFxUXFbVp2WrkiBEMw6SmptarG9q/b7+ysjL+sJvXbwT6+s2aMYOP+aZOmtS0YaPcnByEkEql6tW9R+8ePRBChYWF7Vu3aRAWHvXkCX/iw/sP6tau061zl/LycrVa3at7D3dnlx07dvB7Hz18GOjrN3b019ULJzExsWF4vfat2yQmJPJbzp89V9M/4KthwzQaNUJo3pwf6tYJSUtNrX6uQa8fNGBAg7DwtLS0KrtKSkratW7TukWLsrKyioqKXt17NGvc+MWLF/zeF/HxTRs1HtDvC61WW15e3r1LV09Xt/379vF7l/30k425Re+ePQsLCxFCaampDcPrDRk0yGAwJCYk1AsN7diufUpyMn/wmdOnA339vh45Uq/T5eXltWrWvHWLlgmvEtq0YYO7i8vuXbvKy8s7tmsf6Ot3+9YtfldOdnaTBg27depifBIiHj+u4ec/fsxY/p/zfphbr25oelo6QshgMAzqP6Bju/YlJSUGg2H40KFBAYHXr13jj7xy6bKfl/e3M2cxDFOlHPR6/ZZNm2vVqGltbuHl5t6udZupk6ccOXykvLzceMy6X9YG+vg+ffoUIZSfn9+yWfORw0fwDwBCKC8vt1njxmNGjUYIZWVlNWvUuEPbdpmZmXyu5v8w197aZtI33yCEigoLu3Ts1LZVq5SUFP7cpzExDcLCRwwdZtDriwoLO7Zp6+PhefjQYX7v9evXfDw8Z02fwf9z9qzZDcPrZWdlIYSio6KDAgIXLVzI7yorKxs6aNCgAQPLSkurftDFxZ07dAwPqfvo4UN+S2RERP3QsE7tOxQWFCCEdm7f7uPuEfHqz+TzsHH9hls3b/7bufgoGAyGqZOmBPr63b55+60H8H9Wv6xeXX3X6lWr/L19oqOi/uE8Yp82XFf3MeI4TiQWhYWHh9erFxcbu3H9eo1G82GSrigvv3DufM2aNevVbwAAMDMz69S5c1Ji8q2bN/kDpFIpQujihQtRT6IKCgq8fbwPHjk8fuJEAIBYJCZI8sa16w/u3c/Ly7Oxtd29f9/c+fMghE9jYmJjY3v37RNcqxZ/ndp16vTp2zc+Pj4mOjojLSMyIrJjp04hdevye1u2bLnvwP6BgwayLAsQAgCwLGtjY7Nm3drFS3/ix+Tq9XqFmUJhZqZWqVmW5csNIcTXD1UWEx0dHx/f94t+NYOC+C0hoXV79+kTGxsbEx1NkSTHcW7u7p06deL3evv4uLi6FhcXVy+fB/fu5+fnDxw8yMPTg9/Sum2b1m3aPLj/IDkpmc8neFse3o2ABEVRDM0ghGKfx0Y9edKkaVOJWJKWmpqWmioWS8LDw2Oio5OSkkiS5FjWw8Ojbdt2/Ll+/gESqbRT584WFhYAABtbWzt7+4ryCpqm7927V1RYNGjIYFe3lxN5tGvfvmWrlvfu3cvKyox68iQzM7NP376erwaT9uvff8++fW3atGUYhmNZdw+PoOBgfpe5ufnyVStXrl5lZmYGADAYDCYmcgtLC5Wqgq9aYFm2euGTJJmWlvYk8knbdm0bN2nMb2zctMmOPbuHf/VV9f5tQqFw2IjhR0+eWLFqVctWLTUa9bEjR74ZO3booMHPnj3jj+E/6/cp4Zio6LS0tH5f9HNwcAAACASCAV8OdHR05K8QE/P02dOnTZo1oyiKL2dTU9O6oaGRERFpaWkkRbEc5+Pr27Zd25fl7Ofv4OhQVFwEAOA4jqt0v2KxSCQSPbz/4OaNG9nZ2SYmJhs2b161erWsWvt7VFRUYkJCj9696oSE8FuCa9Xq06/f82fPnsY8Ba96Rv7Z5wf7VMTFxl66eKFxkyZ1Q0P+7bxgnyfcr+5jRJLk0OHDAQBqlfr7b7/dtGFjYGCNjp07fYCko6KiYp8/t7G1Xb50KQEhQRIpySk6nfb8uXOtW7cRioT1GzTo2q3boQMHjh4+4unlVadOSPMWzVu0agkACKoV3Ldfv80bN166cMHd0zO4VnDz5i1atm4FIczKykIc8npz6jgPT08IQW5uLoJAp9O5v4qTAAAURdUNCwMAFOTn81sQQmKxuE5IyN07d44fPZaTnZ2dnZ2UlJiVkREWFvbum+IrVDy935gIw9PTEwCUk5NDECRCyFypNHaHhxCKREKE3tJ8lpWVJRQKPD09K2/08fU5dvRoUWHRexZydQbaoFGrJVKZWCzOzsqiDYbDBw8dP3qMnwAFQKDValmWzcvN9fDwQAgpzZUi8cvRABAAASVQKMyMVyNJkqZplmWzs7JEIlG13PqePnU6v6AwJzubIAhXV1fjLhMTE36cKV89rDBTGEchCEWiOiEhjx4+On3qVG5OblZWVkpySmpKqqfnu6YXIQgiNzdXp9W6uLq9HP4HAEmSISHv+kpzcXFxGejSf+CAsvLy6CdPTp04eWD//iULF/2yft2fmmQnKyuTgNC50g2aW1jYOziwHAcAyM7KpGl6767dB/buM5azRqOBBJFfUGBja4sAsDA3FwlflgABoVAgfGsTmJuHx6AhQ35eubJf7z7OLi61agU3atykXfv2ZLWwNSsrCyHk9Wahefn4cByXk5vz/reGfaIuX75cWlbapVtXAW5ex/4ZOKr7uNAGmmUZkVjMd62Vmcj6ftHv5IkTT55EfoCoDiF05dJlPoC4fOkSQAgBIBAIzM3N7929GxsbGxQcZKow/Wn5sj59+168cOHho4dnTp86fPhg//79Z86eLZVKZ3/3bYeOHS9fvHjv7t3r166fPHa8XccOy1asfNlT+M0vRA5wAACCIACHAEJVBibw41KN/yQIQqVS/Th/wemTJ01NTa2trb19fcPrhW/bupVhmT+4rzf+51XqCEEAIYQIIAAAJOAbYyPe1X2l6hAKlkMQQkj8/2PTcnJycnPzmjVvJhKJWJYBAPTo2TM0LIx9NYsBRVFCkahmUE2GpgEAkCCqjeR4M8eQ//QAhBC9OfiA5TgIIWHcXvmmEdLpdMYRnQR8Xf4ajWbp4iVHjxyRyWRW1tbePt7h9cJ37tjJ/eE8C3w23tym0+kqD1zlZWVlbVi3LigoqGfv3vwWhalpo8aN6zdooFKpbt64kZGWHlDjLTN1Vb5BhABC6NU8zwABACpF5xBC40PFshyEsG+/fsG1ahnLWSAQCEUiPz+/V+UMq33ab0GR5NdjxzRv2eLSxYt3bt1+cP/BmdNnTp86tWzFchtb28pH8pdDVZ9F/hPBLSefObVafePaNS8v73f/qsGwvwJHdR8RnU7386qfy8tKZ8yaJX/VdiMUCiGE6IP0kc3Lzbt06VKt2rW3bNsqlUj4L0uCJA/s2zdz2vRLFy8GBQdlpKfn5eWHhNYNDQ8DAMQ+fz7vh7knjh/v06+fpZVVakpKcHBwcK1gAEByUtJPS366eP5iTEy0k5MTgDA5KalycqnJqYhD1jbWSnNzgUCQlpZm3KU36BcuWGCmMPty8CB+8BhJkpcvXTp04ECfvv0mTJpgaWUFAMhIz9i2dVvl6pPKX9tG9vb2CAC+hfR16inJCCFbW9s/1QHZzs7WYDCkpqQYG4sBAEmJiRKpxNzifaeeqT609sL58+XlZY2aNAYAWNnYQJI0kcvbVZoLLS01NT8/XyqVsu85WxVCFEXZ2tnpdLq01LRatWu/zm1Cokwms7CwsLaxYVk2KyvLuKuoqGjBvPl16tRu36EDfLMY796+89u2bT169Zo6fZqNjQ0AoLioaMdv298oOwiqFD7ikKWVlUAozMzMNG7kWG7p4iUESUyaMqXyJCCI4y5duPjs6dPWbdtWrpMjSdLCwgIgVDns4RPiw1OGoY2xl1arVVWo+AjJwcGR47jUlLRGL9t+gUqlys/Lc3RyBABY29oAAM2UZpXLOTk5uaS4WCKRaNTv7vMAQaWHraiwKCkpyc/Pd+y4cWPHjcvIyFi/du3B/fvv3LnTrXv3yqfZ2dsBAFKSUypvTEpKRAhZ2+DZ6T5zqSkpyUnJnbt0UZqb/9t5wT5b+NfhR0QoFBYXFuzfu+/e3bv8Fo7jTp86zbJsrdq1PkAGbt+6lZmR0bpNG4VCIRAKhSKRUCSiKKpJ06bOLi7nz50rLS29cP7C8KFDTp08yZ/i5e1taWkpFIokEsndO3dHDh+xd89ePvJwc3e3tbMRCCihQOAfEODj43Po4KGY6Gj+xKcxMUcOHfLw9PDz93dxcakZFHT29Jmn0TH83htXr+/dvUdvMLwcRgohQqiwsJBjuYDAAD6k02o0+/fty87KMlZHQYLQ6XQVKlWV+woIDPT29j544MCzp0/5LVFRUXwLsr9/wB9W9VUWFh5uZWW1e9fu5OSXMeK1q1cvX7xYp06Ii7PLe16EZVmO41iWpWm6qKjo4IEDv23dGhYe3rx5cwCAv5+/v7//oQMHjAN4U5KTx48ZO+e771Uq1XtOU8wHW/Xq1TO3sNi1c2daaiq//fKlS1evXAkJCXFwcAgKCrKztzty6DAfT3Mcd/LY8dMnTxIEIRAKq9TwFRUX0zTt5+/Hh3Q6ne7AgQNpaWn8gCsAAEkQBgNdUVFR+TSGZdzc3GrWrHnx4oWHDx7yG29cv35g3z6NWlNlNjt7B4eOnTo9evho6eIlaalpGo2GppnS0tIL58+fPXOmTt26zi6ugG9fZhhVeQUAQCKWmFtYJCUmpSSlAAD0ev3J48dzc3P5YCsoKMjTy2v/vn0pyckAAJqmjxw6lJaayo+BrVmjpreP9949e59ERvIZiI+NGzNq9IJ58zQazbtrXiHk79dQUVEBAHj27OnXo0Zt3LhRr9cDAJycnBydnCiBQFJt4sMaNWp6eHoePXw4KuoJv+VpTMzhQ4d8fH39AwLe/Zlin7q42FidThcQGPjpTjaOffxwXd1HhCCIQUOG3Lp564fvvk9LTbO0tLx7586Rw4c7durYpGnTfzp1rVZ7/Ngxualp/QZVZ+23s7dv3LTp9m3bLl+81LpN631798yeOevK5csW5hbx8fEPHzwYPmKEs4uLTCbz8vZe+OOCe3fvOjg4pKam3rxxvWv3Hj6+vmKxePLUqdOnThk+dGjTps0ABNevXmMY9ru5P5ibmwMAvpk4YfKEiSOGDWvStCnDMJcuXapRs+agIYMRQrTBwHceDwsLs7G1Xbl8eVxcrFQmi4mKys7JUSqVxcXF/IS09vb2WZmZ0ydP7dv/iw4dOzAMw4c31tbWk6dOmTF12rAhQ5o0bQoQuHb1KkJo0pTJZkozlUpF03SVXnQ0TRPkW37zeHp5jfvmmx++/37Y4CENGjZUq1WXL12ytLD8ZuIEE7kJAIBhGIPBgH6ncpXjuJycnDnffW8ikyHE0TSdmZn1NCbGPyDgux/m8NGqhaXF5KlTpk2eMnL4iGYtWkglktu3b2dlZc2bP8/a2rq8vJym6cq96TmOMxgMlWdDoF/x9PIaO27c/B9+GDpocP0GDSoqKi5fumRjazt+4gSRWGzv4DBu/PhvZ80ePnhIvfr1i4qLL1+82LJVq85du7IMYyx2XnCtYHd397VrfklNSTUxMYl99iwtLc3G1ra4qFin08lkMls7u+KiohnTpvXs1WvwkCF8BjiOE4lEY78Z/82YsWNGjW7eojnHcZcuXXJxcxsx8qsqUyITBDFy9KjMrMzftm07e+aMr5+fVCrNy8t7Gh3t7eMzaeoUfr5WW1sbrVb7w5w5Xbp2GTFyZLv27efOmTNm1KiQunXT0zOysjIdHBz0BgMAwNbObsKkiTOnTR86aHCDho3y8nIfPnggFIn41lVbO1v+qRgxdFjT5s1FQuHNGzcKCgoWLllsbm5eWFhI0zRTqQT4sRH8aAYIoa2dbV5e3rTJU/r069ulW7c6dWqv/+WX58+eubu55+TmXL18pVHDRvUaNKjyAPyPvbuMj+L4GwA+M7t7ErmLu0NCQkggEFyDtrgVLdKWlgotVqOFIqWCFGkpbsXdLbhLIAkEiRtxT+6Ss92deV4shBBCyvMvUKDz/fRFWZtZyd5vR23tbCdOnvTV5C8/fH9Mx44dCQDnzpwRRXHqtB+kgalFUax2N6k3RlJyMgDA1d2tlm0IISaTqcYieenZeNq7haIkNKp7tdQPDFyybOnvixavXb0aIcTJuI8+HvvRJx9bPtGZ7rnLzc0FgPTp108am7cqhFDPnj3v3b2TnJLcf0D/1WvXbt2y5drVa7F377m6uc2ZP6979+4Mwzg4Ov6+ZMnWLVuuXL6UnJzs6OAw88cfe/XuI/VC6NS508bNm7ds2hwTE4Mg7Nmr16AhQ/we9p9o1br1+o0bNm3ceCv6JkRo+Lvvjhg10snJqaS4OKB+fRdXF4xxg6CgP5Yu+Wv9+hsR15VmZi1atvxlzuCd27fHxsZpNBpzc/PBQ4bk5eVF3YhMSkzA+O16/vUq34BdunZ1cXHdsnnznZgYxKDeffsMGjzE189XOrt6/vUYhqn8gEYI1fP3l8k4UJNBQwZ7+3jv3LEjOjLSzNz8/fc/6D9woIenh7TW3cMjODi4xtkpIIS+vr6FhUV5ubm5hAAAWJZ1cXV5Z9Cg7j17OFVpgNUhLGzDls3btmy5GX3TaDI2bNTw519/kTqFMAzj7++vMFNW5tbK2jqkcUjldKsQQj8/P17gpRKpYe8Or1O3zs4dO6IiI83Nzcd89NGAgQOkgXYBAH3793d1d9++dev169ctLSwmf/XVoCGDLS0tNWVlAfUDrG1sK1Px8/Nbsmzpxr823LhxXalQNmvebOqM6SePn7h65XJxUZG5uXmffn2zsrIuX7qYlJQEEazr62uv0UhxW2ho6F+bN23dvDniWgRC8J1Bg0aMHFGZh6rs7O0XLFrUq3fvkydOpqakFBUV2js4fPv997379HF0ejAeb1inTp+O++zsmbOx92KNBsOQYUMtLS327tkTFRUVFBQ0+atJe3bvrWyx171HD0cnpy2bNkVHRTo5O8+aPfvcuXNODw/VtVs3FxfX7Vu3xty6xQtCs+bNBw8dIvVO5VguoH6AvZ1d5RXgOC6gfv3KAZwHvPNObk7u1atXExOTLC0tf5k7N3TXrjOnTp0/f87Gxnbi5MkD33lHrVY/eY4dO3XavGXLli1boqOiWJbt3qvn4EGD6wX4S2sdHBxCQkJewt879fKpLFVNmzVzdnKuZRtzc/OGjRo5Pd4cU+Lk7NwoJMTMzOyFZZB6E1RvSU29ItLT0nQ6vYurS40/DP/Enl27EMP07dfv+R6WoiiqRiuXrwhsEFg5Aw1FUS8OLat7RXlWGY6BoiiKoijqb9HeEhRFURRFUW8CGtVRFEVRFEW9CWhUR1EURVEU9SagUR1FURRFUdSbgEZ1FEVRFEVRbwLaB5aqGRZxfkG+Xq9HCFlbWame9wArD1LBWKfTsSxb4wBv/1+EEJ1OhyBSmikBADqdDgBAh3eiKIqi/iNoVEfV4OqVK9u3bouKvFFcUsKynJeXV79+/QYOHvTcI6S8vLwZ035o0arVe++/98+Pptfrfpw509rK+pvvphgMhl9m/wQhmPXTT//8yBRFURT16qNRHfUYURS3bNo099dflWbmHTt1qlOnjkZTdu7M2enTpt27d2/6rJlVp2P/5/R6/dXLl+3t7Z/L0QRBiIqMdHR0AgAQQkpKS+hsixRFUdR/B43qqMdcvHBx7q+/+vrVmzt/Xl1fX2nhh2PHfvfNt1s2b67fIHDkqFHPMTkIISeTMezzeQ4ZhuE4TpqlSqlULvr9dxrVURRFUf8dNKqjHjEYDJs2bAAAfjf1+8qQDgCgUqnGffF5ckpK7L17er1eKq4rKiqKi41NTk4mmHh6eQUFNbC1swMA6HS68GPH3N09fOr43Lh+PTcn19e3buPQULlcHhcbGx0VLZfLmzZr6u7hUXl8BqG8vNxrV65WVOgCAwMD6tfnqszBqtfr42Jj42LjAAAB9esHBPjLqzTC02g00VFR6enpXl5ederWQehBByBBEI4fCwcQdO/RQ1pSVloaGxuXnJRk4k1u7u4NGzaU5lOnKIqiqDcDjeqoR7IysyJv3GjYqFGjkJBqq/zq1Vu9do2tra3UreHG9eszfpgeHxfn4Oig1xvyc3ObNm8+97f5vr6+Wq12xbLlNja2PG9KTEwEhJSVlY356EMnJ+eVK1YQQvLz8ry8vRf9vlhKhWHZW7dujhg2vCC/AIuiTqcfMXrkxMmTpQnOMzMz5/7y66GDB62srAAAZWVlffr2/frbb6RJ1lNTUqZPnXbu3DlHR0eDwRBQv35xcYmDgyMAwGg0rlq5Ej6M6u7euTtrxvQb1284ODgIgpCTk9MgqMGvc+c+eaYURVEU9ZqiI5tQj2RlZZaVltWrV499okoUIeTq6iqFdIWFhTOnzyguKvpr06Z9Bw8eCT/23bRpt2Nidu/YKW3JcdzVK5cbNWp09Hj4/sOHwjp2XLl8xd7du+cvXHDo6JHflyzJzs7auWOndGQI4a2btzqEhR0+duzoyRPvjhyxbu26XTt2AgAMBsOcX34NP3rsu6lTjxwPP3I8/Otvvz144MDcOXMEQTAajfPmzI2KilqweNGho0d27t1jYWGRnppaWVzHcRzHcQCA8vLy2bNmxcfFr1m39sDhQ4eOHZ07f15SYuLWzVte2rWlKIqiqBeNltVRj+h0OkEQpFKxWoii2CEsLDCwfqvWraQl7wwetHP79qysLEIIhFAQeF9f3w/HjnVwdAAAhHUMO3fmbL8BA9q2bQsA6Ni5o4+Pz/30dGljURCaNW82+auv5HI5AGD8xInXrl3bv3/fsHeHx8fFnTxxou+AfmM++lBK6KOPxyYmJISHh8fHxSOEzp07N3DgwAEDBwIAHBwdv/72m6jISIxxtQxjjJs1bz7wnXc6dOwoLek/cODGDRszMzMFXmA5+ldAURRFvQno7xn1iFyuQAzS6fW1b+bo6Dj5qy/LSkuTkpIKCwuTEhKuXb2Wk5MT3LAhIQQAQAhxc3e3VFlK28tkMqWZ0qOyIR2BcrkCY/HBvwhpEtpUCukAAGordXBw8OlTpwoKCtJSU41GY4uWrSqThhA2b9H80KGDqSkpHMca9PqQJo0r17p7eNSpW1d8eORKKpVq4uRJ5eXlyUlJxSUliQkJUZFR6enpdnZ2mFQPASmKoijqNUWjOuoRJycnS0vL9IelaFVXEUJu3bwpk8n86tVjWfbwwUMrly+PjY3Fouju4eHp5SWXywEglduzHFdZE0oAgBBCVFN1PwEQQgsLi8oFEEJzc3NRFE0mk06ngwCYmz82SJ6ZmRmCyGgy8gIPIaw60grLspaWlqSmQO3MqVPLly67efMmz/Nu7m4+PnXMlEopBqUoiqKoNwON6qhH3N3d69Wrd+vmzczMTHd396qrioqKZvzwA8Zk7V/r01PTfpg61cXV9Y8//6wfWN/M3Fyr1Y4eMVIQxP93nAQBIaSkuLhyARZxfn6+UqlUqVRW1taEkIKCgqp7FBQUYIyt1GqGZQkAVdfyJr6stFRtVX0ajLi4uG+//kalUv22aGGDBg0sLC0JISOHD3+yrpaiKIqiXl+0twT1iIWlRY9evbKzstatWWvi+aqrdu/cGR0V3SikkbWN9c2bN0tKSj4YM6bb22+5e3jY2tomxCfk5uRUK957RhChy5cvl5aUSv9MSkq8euVKYIMGNtY2fn5+1tbW4UeP6XU6aW1FRcWJ4ydUKlVdPz9fX197e/uTx08YDAZp7b27d+Pj4xmGqZZE7L17mZmZ744c2bNXLy9vbzs7u/S0tPvp9/+3DFMURVHUq4mW1VGP6du/39WrV9asWpWTkzP83eHOzs46ne7A/gPr164JCg4e8+GHDGKk+tZdO3e4uLhYqCwvX7y4ZfMWnucFnhfF/3fpF8swSUlJX02a/O6oETqd7s8//sAEj3pvNGKQt4/PyNGj/lj8+4Tx4999910AwMYNG69evjJ+0kSpld6o0aMXzp//9eQvhw4flpuTu3zZ0vLycgirf6t4eHhYWVvv27vX19fX2sb6xvXrWzZtNplMJpNREASZTPZcLh1FURRF/btoVEc9xsrKataPP9rY2OzdvWf/3r2WlpZSSVjXbt2+/PorD09PAEDbtm0nTJ60bvWaQQMGKpRK/wD/Tz795OiRI4lJScXFRTKZTBAEUXzUZQFjLAhC1cpZURSlDQgmJpOpb7++Go1mzHvv8zwf0jhkwcJFrVq3BgAghMZ+8omlpeXGDRtHDH8XIeRXz2/6j7MGDR4kFbO998H7nIzbsP6vfXv3qtXqLl27sixnNBkrU5EK4xo2avTtd1NWr1g5dNBguULu6+c3eOiQ2zG3L1w4n5eb6+3j89IuL0VRFEW9OJA2GP+v2bNrF2KYvv361bKNKIrp6en37t4tyM83MzcLCAj0q+enqDKjAwAgPz9fV1HBMIyVtbWlpWVxcbFWo3F2cWFZNjs7m+M4BwcHKfbSarVFRUUODg5mZmYAAIxxTk4OQsjZ2Znn+ezsbBsbG5lMlp+fjzG2sbGRxh+uqri4WKvVQghVKtWTA68UFRWVa7WcTGZvZ19SUoKx6OTsjDHOzc2FADi7uEibFRYWlmu1CCG1lZVarS4rKyspLnZydq52XhRFPV8rl68IbBDYuk2bfzsjFPXmo1Hdf86zRHUURVHPC43qKOqlob0lKIqiKIqi3gQ0qqMoiqIoinoT0KiOoiiKoijqTUCjOoqiKIqiqDcBjeooiqIoiqLeBDSqoyiKoiiKehPQUYifAwG/NqPDQAghw0IERQwIeG2yTVHUawpCiBiWAChiOowW9dwgCBGd8bEmNKr7p0RMUvINr0uEJJMrivUEApBWzAsC//c7UBRF/QMyuUJjArkaIbWIF0Xh384O9SYgADhayqzNaQBTA3pRnoMKo/i6lNbJAS7RVLCIKTdigf9/z9lKURT1/yIHuKSs3EZnLDdiUaDvHOo5IADYmr0mP7ovHY3qngMIwetSEgwhQFAC4OuSaYqiXlv0nUNRLxPtLUFRFEVRFPUmoFEdRVEURVHUm4BGdRRFURRFUW8CGtVRFEVRFEW9CWhUR1EURVEU9SagfWBfYRCyDEsAEYV/YZAnhBjEIEL+ndSrgAzLAEJEUXyWrRFiCMGEEAAAw7IAgJecfwghwzz4s8JYxPixoRwQQohhRFEk+JmGeEAIEULIM4zeyjAsgEAUBCkDhOBnvGK1pv7oYv4TL+tGQJZlSE2PCsMwECEsVr8dAABGGpRbEAn53wfdqHqbGIaBEAqiCOiYu9QzkN4J1R7OB6+Rh12Ga3x0KapGNKp7hWF88exhg17ftktPhmFeZsoMwyTH371x6ay7d93m7Tq/zKSrghDqdRUXTx6xsFQ1a9uJYdnaIwyEGG1ZiVyp5GRy3mg8F34AANjhrd7/PC559gybjMbzx3dGnD9lNBp7DBzeokO3ypFXEWJiYyLvRl9v0b6zm1edv31NMwyj1ZRxMhknk9ceImCML5zYJwpCm849TCbjheMH7J3dQpq3hQj9z7EFwzDaslJOLv/b1GuHRfH88YOE4FZhb8vk8hd0L6RH5Xz4QStbuxbtu1ReW4hQhVZz8eRhg17fptPbdk4uuErMxzDMvZvXY25cCWjUJLhJy//th/PBbeI4mVwpikLEhVOlxYXtuvRSmpu/tAePek0xDFOYl3v59NGAhqF1AxpITyCEkBCSlhgXfze6Qqtx9/b1D25sbqHC+J9+p1H/BbQG9hXFcbI70RF//PTd8b3bRJ6HL3WgJyiKwpFdm9b9/suGP+cV5uUg9FJjykf5QEhXUb5n46qTh/cIolD7RYAIXT59bPncH4oL8lmW5XnjkZ0bj+zc8DIvHcOwERdOLZ8zPT05gWARwMf+vhBCd6KubVw6735yAqo1TIcQIoSirpxf8tN3uVn3GVTb3ymEUBSE4/u2H9m9hedN5Zqy3RtWXj4dDgj5384cQgghirx8bskvU/OzM2tP/W8PJQhC+J6tx3Zv5U1GCF/UCwchpC8v37t59fnjBx+7toQoleZ52ZlrFs7eu2mVKDz6U2IYJj83e+X8WUd2bZLLlPB/Ok2GYW5HXVs88+vMtBSWZbEonj9+YO/m1bpy7Ys7WerNACEURXH3hhUr5s9KuHtLKuOHEImieHjHxikfD9vw5/zDOzf9OPmjP2ZPKcz/197D1OuFltW9ihiGyc/J3Lrqd21pCSuTvezUWeZ+UlL87ZsNQ1vlZmfeuHimx+CR4PFSDCnsAABiLD5ZIIEYBgKICX6ynvHhjgDjGqr2IIQQIfhwLRZFldr6q9mLOLmc47hHBTCPUsdSxZk0yGnEhZOJsXcYhoEAyhVmn06ZLW3zt6kjhgGEYIwhRAghQvDfFttIhyIAYBGDh/PFMQybEndHoTT/fOqvAQ2bEEKqTZGEEMNyssoA4lG6CCH4WLoQoehrF2Nv3WAYBiGmslaxxnQBAAzLsqIobcCyXLXC3aftVbkaVbnsAACIYOSV83G3IhmGQQiJoiiFSlULup5cUnlfql1AhmVhrdfz0Q19/JlhGIZUuT41P1EIoYdD3LIsV1n9LSGEMBzbZ9j7Cbdvnjy4K7hp65ZhXQWehxDyPL9/85qMtKT3J3znHxwiVV4/9fF4/EwZhiEAYFFkWO7OjWsxkVeGfDRe+tFlGJZlOemJrMx/LedO/WchxJwLP3Dm8B5OxlV+ijAMc/Hk4U0rFrTr2mvAyLEKpfJ8+MG//pzn4Owy+vNvpWK8fzfb1CuOfk2+cqQPuD0bV5cU5rt6+pB/o9T91vUrJcWFb/Uf5uTifvXcCW1ZyaPPRAhZlhNFITM9JS0pTl9RwbJcZZjCsiwAICfjfmpibHlZKcdx6OEqCCHLcYLAZ6anZKalCALPclxlwYm0VhSFnIy0zLRkgX+wFiJkZmGpNDMHAIKHUZFeV5GenJCWFFdRrmFZDiGEMc5OT63QagnGaUnx+bnZEEIzc0szc4uHx0csxwk8n5mWkpn+WOqE4Kz0lILcHI6TlWtK05JiS4uLqp5UNQghjpMZjYb7KYm5memEYOlQgsCnJcUV5udycrmuQluUn1N7MSHBOCs9pTAvh+Nk2rLStMTYsofpEkKyM9I1pSUAwvvJibnZ96XIh+U4k8mYkZqUk/Eo3dpvZe17SZedYJyTkZ6RmsybTCwnAwDkZKRry0oABOnJiXnZmQCA7Pup2emplQEKISQ7PTX7ftqDOiOEOE7Gm0wZqcmpibGlxUUMwz5L0QJCiOM4o15/PyUxNSm2vKy08spjLGakJRcV5HGcTFNSnJYYqy0tZjmusgwMIcSynLasJD05oaK8/GlXA4uirb3TwNGfQIh2/bWsMC+HYRiWk0VfvXD8wI5mbTt16jGAAMBynCgImekpmekpPG+q8nhIZ5paGVASTDLTUnIy0jDGudn3S4oLGYbJTE3KyUqX5oOWrqrRYEhPTijIzUEMQ0tZqGpYlrufmrB7w3JXLx+5Qvng6YJQV1F+fN92d686Iz/90t27rr2Ty9sDhrfq9Ja2tNRg0L/cShvqtUTL6l45DMNeOHHoytnw4R9NOBt+QOBNLzN1qR1SxIWTDk4uTdt2zM5MP7B1XeK9201atZdadUAALp85tuevFUWF+RBCjpO16dKj7/D3zS1UAIBbEZe3rv49PycTAMgwTPN2nfqN+Mja1p4QIvCmU4d2H96xUaspIYSorWx7DB7RrktPlpMDQERBOHds/6EdG0qLCzEhNrb2/UeMbdWxW7mm9I+fpji6un/85QylmVlRfu7ezWtuXDzD8yZRFFiZrG2nHgNGjUWI2bHuzzvREVgUVs6b8daA4d0HDl+9cDYA4Pt5ywkhvMl44sD+Izs3lWtLCSFqa7teQ0a16dRdJldUaDXrFv+itrZxdvc6c2SvXqdDCLXu9PaAUWMt1dakencHRlehPbZ365nDe3QVFQAAeyeXvsM/aNGhW3lZ2crfZiXH3jbxppXzZ/kHhXz89QxLKxtcU68FhJBer1uz6CcbWwdHV/czR/YZ9DqGYVp36j5w1Fgzc4sDW9Zev3CK501rFv3ctkuP98d/r9eVn9q1K3zftnKtBkDg4OjSf+TY0NZhtUxXhxAy6HUnd+0K37u9okIDCHBwch0w6qMmrcIAABACLIqXTx89uH1DQW4WBNBCbdV32AetO7+9f/OaG5fOCjy/euHsDm/3Gfrh+L/+mCuKwoQZ8y0s1YRg3mhc+/svEMIJP8y1VFuVazRH92w5d2y/vqIcEwIACWnRbsgH4+ydXGt52BBCZSXFB7etu3QmXDCZRFFgWa5lWLf+Iz+ytrEvKSpd9dssZ1cPazuHc8f2Gwx6luXadu3Vf8SHZuYWAMIKrfbA1rVnju4XRcHcUtWyQxdMav4EEnhTcNNWbw8Yvnfz6kM7Noz89MvCvOyd65ZaWdsOeu9TMwsLvU534cShIzs2lpYUQgAt1OruA0eEvd2Xk8mk28Ry3Pgf5pqZWxBCjCb96gU/mplbfPLtj0d2brp06ghvMv21ZE7rTm8P/XA8ggiL4qlDuy6dOlJWWkIwCQ5tMeyjCQ7OrrTQjpJAhPS6im2rl1iqrDr1HLjyt1nScgahnMz0jLTkHu+8a21nX1KYbzQYzC1V46b8xJtMcrmCPkLU36JR3auFZbmMtOTta5a0bN+lRVjX00f3vuQMMIhJTYxLuBvTe8hotbVtaKv2h7atv3r2eKNmrQEADMMm3ru1Yt4MTx+/twYOZxj2xqUzO9cvk8sVgz8Ydz8lceVvs5Rm5oPe+8zMwuJOVMT+resxJmMmTYUQHtz+15YVixo0ad7jnXcBhBdOHF76yzRtWVm/4R8AAMMP7V678Kd6QSHd+g0FAJw8uOv32d8olEqfeoHashILlRWA0GAwrPt9zpWzx98eMNwvMNigrzh/4tDezatt7B27Dxze452RJUWFmenJQz8aH9AwFGNcrikDAAAAASAHtq3btur3oNAWPQePBACcDz/458/flWvK+gx7nxCiqyi/ExXh6undre8QlY3tlTPh+zavsbK1GzBirPB4Ba4gmLauWnxw24ZWnbo1a9tZrys/eXDX4lnfCDzfvH3noR9+sXfjqrjbUYPf/8ynXn2F0qyWtzAhRFdefu/mDTdPn7f6D1VZWV8+c2zv5lU2dvZ9h4/p0ued0uLCezevD37/U//gJiIW9m1ZvXPdshbtu4S2CTOZjGeP7v/9x2/Gff9Lyw5dakli7+bVu9Yvb9mha5M2YSaD4ezRfb//+O24739p3q4zhPBc+MGlv3zvUy9w8AefMwxz+vDeZXN+YDmuW/+hpSWFsTFRgz/4LCA4VBSEcm2ZIAiVtT8EkHJNmVQfRADYu3nVrvXLO3bvF9ysNcFi5OVzpw7uMjMzH/3Ft0+rD4AQGY2Gjct+O3dsf7e+Q/waNBJ40+XT4Xs3r1bb2A5671NCSIVWey78oLt3ne7vjLSwVF04eWjXX8vsHZx6DB5pMhp2rl96aPtfbbv2atS8TW7W/ZMHdhTm5/rVb1jjdWBZpueQUXejrh3fu61xy3Z3Iq+lJMZ+OHGad736WBSP7t7815I5DRo3f3vgcADAxZNHVv42s1yr6Tf8A0CA1Gfl0bkTotWUiaIAEerYo39xQd6186cGjBwb1KQFw7CQYXIy08P37wjr1tvdu+6tG1dOHNiuUJp/9OUPtf3hUf8ZUjOTkwd3xN66MXnWAlEQKytkIEL5OZlYFFRW1jvXL7ty5ni5tszZxaPX4FGNW7cXq/wBUtTT0KjuFQIhMhh029f8IZMrBoz+mGW5Zxz/4jkSsXjt3AlOJgtp1Y4Q4uHjF9CwSeTlc9kZaa6ePgihlITYck1Zt35Duvbrh0XQuGU7ldpKaWYuikJGalJhXs6IT7/sN+I9AEDzdl2UZhYKM6UoirlZGUd2bfIPbjJp1gJbeycIYdPWYXO/H39k54YW7TorzS2O7trk6Vtv0qwFDs5uCAG/Bo0Wz/o6Ke6OT736DGIYhBBC+TlZBXnZPQe9O/Kzr+UKJcsh/+Am0z8fnRx3B2PRPzjEzsGpIDcruGkrF3fPkqJCqfIXMeh+ctLRXZvrN2o6adYCGztHCGGTVh3mfff5oR0bmrXppLK2BgAwHPve+O8at2gLIQwIapwad/de9PV+735Y9eIwDHs3+vrZI/vbdu3x2ZTZKmsbQEDD0Fa/fvvp/s1rAkOahjRvfenk0cTY20GhLTx9/AwG/d/2HmU52fsTvm/UrDVE0L9Bo5S4u3dvXu87fEzdgCAnV4/4O9ENmjT39g28d+t6+N7tHd7uO+77nywszQAALdt3nTVxzKHtfzVo3Ewmkz95ZIblUuLvHt+3Peztfp99/5OFpRIA0LJDl5kTHuxFMD66a7Ozm+f4H+Z61a0HCPEPbrLkpykp8fdad3rbydUj8d7toCYtPLz9tJpShBBC1Tt/SFXk5ZqytKT4Nl16jJk8zcrGDiHYvF2XrPupKQmxel0Fx9XcMBQiWFZclH0/pUvvQWMmTeVkck7GNGjcIj05PulejMA/6BwjVyrGTJ7WIKQ5QqiOf2BK/L27N6/3Gvre/eTE00f2tgjr9tmU2UpzSwCJg5PrHz9NebLR4IMHWxQdHF0Gvvfpwhlfrv7tx5LiwpZh3cK694UQZqanHtm1uV5Q4wnT5zm7emKCm7fvPH/qhMM7/mrWOszBxa3mc0cIQljHP9DFwxshVL9Rs7oBQeWaMoIxy3JDx3zetc8gxDAhLdplpaXE34nWlpWqrW1oWQvFsGzsrcj9W9Z16zu0YbM2186frFwFASzXlImicHDbX5xMFto6jGHZiycPL5gx+ZNvfmzV8a1q7XQp6kk0qnuFIITOHNl3O+raF9//4uLupSkrkX7YGJaVWqy/6AwwDJuXk3nz2sV6DUK86/pjjM0tLZu36xxz48qNS2fdvOpggF3cPVmW27xiUVpyvF9AsF9QyLjvfxEEgWBs7+Ribqnau2lVQW6Wf3Bjv8CGH375AxZFjMX05LiSooJ+Iz6ytnUwGvQAABsHx5Zh3Tb+OS8tKd7WwSEnK73/u2PtHByNBh0AwN2r7sw/1pubq0qK8gkABABRFFw9vKYvWsswDMtx2rLS/NysezdvCIIgijzGWBQEqZG7wPNVrxVCKC05vqS4cOB7n1rZ2kup2zk4tQjrtnn5wtSk2MYt2hGMnVw8fPwCjEYDBMBCpbayczAaDFVDBAghACQp7o6JN7bu+JaFSm3Q6QCA7t51G7dsH75vW05muqOLu1RPLfC8IPB/e8EJxs6uHt6+/g/SVVtZ2Ug5JKIgPjyUgLGQeO92uaYUY/HE/p3SkRmGZVg2LTkuPyfbw7tOtSNL/QcS78WUa8owFk/s31G5F8uxaUlxRfl5JpMxJ+t+h7d6O7t5GvQ6QoiLm+f385YrzcwJIYIgSCdS+w8JwdhCbfXl7EWAADMLiwqtJj8vOy0x3qDXyRVKLIrgKb19sCjaOTr/sHANw7Isy1VoNQW5WfF3bomCIAiCdO6EYBd3b08fP6PBABG0tLJWW9saDXoIYVpSfLmmrFnbTnKlmdGgY1g2uGlLZzcP8entUAVBaNKqXZdeA/dtWevuXeed0Z8olGYQwLSkuLKSwrf7D7VzdNbrKwAA1rb2rTu+vXzu9LTkeEdX91pOXxQEqYZdEHhpQD6MRRs7h/rBTQRBwEaTXKGwd3ZJjL1tMhoAbRT1nwcR0paVbF39h6und59h77Ec++DjEzEMy2JRFARBr6tQqYUvZy/2rR9ECGnbucesSWP2b1kbFNrcwkKN/8HAitR/AY3qXhUsyybei9m7aVXDpq2d3DzuJycaDBUmk5EQkpORbm1nb26petF5gAjei76em3U/Pydz/PCeAAAAoVGvN+r1Ny6d6fB2HytrW//gJqO/+PbQjg17/lpJALG2dWjUvFXvIe+7e9fxrhfw3hff7vpr+ZFdmw5uW6+ytg1q0rznoJEBjUI1JSUQIhtb+8qxXgkhVja2iGUqyjUyhQKL2MrGtkrBFlFb2VRrGowQKi0uOHFg5+0bV8tKiyEAAMAKbRmEtTdFh5qSEoSQjZ39owbvgFjZ2CIGVWg10m+tQmnGMAwgBEBICEE1dZUQRVFbWsKxnJWt3cPAkQAAbB2ceJ6Xmtn9fynMzNCjdEGN6RJMyjWloijeirh8L/rGgyb5AAACbO2dsCjUWCKIMdFqSkVRvBlx6W709cf3csRYLC8rFQVebW0DIcDkwWVRWdkA8CCke0YIMrry8rPH9t+4eLooP5cAgBAqLsiztrEnTys6k3ZESFtWevLQ7uirF8pKiiAAAEKtpvTRmCAEKMzMEcMAQACAgACpJy8AQFNazDCM6mHDR4KJXKFUW9vWUrxNCJbJFE3bdDx5aFfD0FZunj6iKDAsW15WCgG0trWHD5soYhFb2dpLxZC1NFt8GlYmY1iOYAIAIIRA6YPg/30Y6k0DISQYH965MTUx9oMvpmjLyrSa0uKCPEJIWUmR9J7nZHIAQGjrDl51/ExGAyHEzbtOaOuwM0f25udkW9azBiKN6qja0Kju1QFjb0dn308r12puXj2PCQEAGPU6AMCUj4f0HDxq6Ifja2x3/9ySh9Co11+/eFomk7ft1otjZdJPMsMwcTFRiXdvJd691axtZ47jeg0Z3aZT97jbkcnxd+9GRZw6tDs7I33yrIX2Ts5hPfo1adUh/k50ctyd2FuRl04dTUuKm75ordTCzGg0VP5wQgBMRgPGmJPJWJYFBPC8qfIXlACSkZLEyeXSCB0QAJZhs+6n/jZtYk5metO2nVt27Obk6mFuoVo2Z9rf1kpwcjnG2GR4lDoAwGgwEExkMvkz/uBKIRcnk2OMTcbHhl7T6SoYhLgXOAYNZBBiOW7ImM+btGzPP+xAw7IsRMhSZSXU/GAQBiGO44Z++EXjFu2q7WVlY19WXAQB4E1VuuNAmJmejCCyc3J+el4AIEAad4ZhWcQwmrKSpb9Ou3ntQmjrsJAWbR2cXZ3dPNcs+rn2+4IYpiAna/7UifdTE5u17dSiQxcnVw+1lfXyudOf5TmX7inPGysLwCrLF2tBCEEMAyGSprsAAEAAOU5GADGZDI9OEUGjQU8IlskfVm0/DImlg9DxYKn/AYSoXFsSfe1iaVHBut9/karjRVEURXHf5tWnD+/+bt5ya1s7jpOZW6oAhNLXGgRQbWUtirzJaPgfvjGo/xoa1b0qMBbrNWj07ieTyMPhxQWBPx9+iBDStkvPgOAm0qf/i4MQk5kWFxN5tWHz1mMnT0ccK71TWJa7cib8l28+vXwmPLRV2M3rFxPuxnTpM7hVx+7N23fRV1Qs/XXa9Yuni/Jyigtyb1w6E9a9f7O2nUJbhxl0FRuXLziyc2NGapKbl49croiNiezwdl+EEIBQEIT4O9EMwzq5elhYqs0tLZNib2NRhAgxCJUWF/3x8xQnF49R476qHIQj+uqFtMS40Z9/23vYeyzLsRyKuX6tolwLwGOBmTRlU+U/CcGuHt4ymSw2JrJdt94PUuf5hDvRLMc5uXniZ/32JYhBbp7eIhbjb0c3at5WGuXNoK9IuHNTZWVjZ+/0IiaJQgyDGOTs4QMhzM5Ie6vfUAAAAQSL+Pi+bTpdeede78jkiicyCxBiXDx8AADZGWnd+g0B5MFe4fu26nW6rn0GObi4matUqYmxRoNBrlQCAirKNSvnz1QozT6f+uvDVokMRBAhxHJcuVYjigKCEHJcWXZxSXGhvaMzwzBxMddjrl9+q9/Q0V98qzQzZxiUnZGuLSu1UKlrCZgRQrcjr8Xdjhz9+bcDRn3EshzLMQl3bmvKSp3cPP/2srh71mFZNu52dIsOXSGELMcW5eXkZd13qrXCFAAgtTev2vXBxcNLxsnib0d36jEAsSwghGASGxPJcTInV3dpaBi9vgLjBw9nWXFRaXGRhaW66mGlScn+NtvUf5lUWtytz+CGoa2kdxRCTE5m2sWTRxo0bl6/Uail2kquUFiore4nJwi8ieE4QAjGYvb9NHMLldrahk5DR/0tGtW9KjDGvgFB9Ro0kv4JETLoKu5GXyeEDBkzjpPLX/g0mhBEXjlXodWEtumIOFbg+UcZCwz29g2IvnoxJzM9Pztr8/KF5dqygSM/VlvbZGemZaWn2Ng62Ng7Jty7teuvFfk5WcM+mmDv5FqQl3M/Kd7CUm1j7+jo4t6waauzR/d7+PiFvd0XQnjmyN4zR/aHtGjrWdefQahJq/aXTh07sntzx+79BFE4sG19wp2bHd7q82CgLwggAAzDYoyLiwp4kwkQEHf7zuaVi0sK8wEBmBCEGJbjyjVl6cnxlmprUKU2zdvXPzi01ekje919fDt06wMAOHV499ljB0PbhHn5+puMhqdckeqwiBs0bu7lG3Box0YHF/dWHbsZdLoD29bfirjUrd8QRxe3Whp1/b+Qh2Oe6Ssq0hLjbO0dAhs1rRsQdGzPVkcX9w5v9wEAnD60Z/0fv4Y0b9Ot75AnP+AJIKIo1G8UWjcg6OjuLY4u7tLMaacP7Vm/ZE7jlm279R3s5Ooe2josfO+2wzs3vtV/GCDk0Pa/7t68MXTM5xYWKoZh9LrytKR4Kxs7cwuVs5vn7RvXrp4J79TrnZLC/F1/LS/IyXJycQPSNK8QlhQVGvQ6uVxxPyVx57o/s9KT/YMaE6nm9CkYliEEFBfmmYxGgkFS7J0tKxcXFeQSElx7Xz+MRR//wKAmLY7v2+7p49cyrFteTub2tUuKC/JqrMKuhSgK3n71g0Nbngs/5FGnXpfegwAA547tP3Nkb3BoKy9ff47jnN08zh7df/XciQ5v9SnKz925fllRQa6Hj690BGm8vfSkeCdXd5alb1TqqQghnEwW1qM/gkiqCWE5WcT5k5dPHwtt3aHXkNEGvZ4QMaR52/PhB66eO9muW0/Isjcunrl+6Uxo6w52Di60tw31t+g76BWC8WNTCwg8bzTopeb/zAv+tUAMU5Sfe+H4ITtHZ/8GIQTjyo9CgrFKbR3aqsNff849e2x/n6HvJdy9eerQ7ksnjjAcZzLqlWYW734y2c7RyUKl7jV41IkDO6OvXZTJ5CaTkWHYQe9/5ublgyAz8rMvBYHfvHzh3o2rIIQGva5h01YjP/tSoVAQAIaM+VxXXr55+cK9G1diTExGQ8/Bo8Le7leh1RgMeqPBiLEY2iYs4uLpwzs3XD51RKZQCIJQxy/Qq65/Tma6vqLc3MLCt37Q2WP7fv12XLe+QwZ/MM5kMgJCCMFm5pajxn21ZtHPm5b+tvuvFVLqIS3ajPxkskKpNBn0JqMBVZ2TgBCj0fDkZzHGorWdw5gJ361eMHvVbzM3LfuNEGI0Gtp26fnO6E9YjiOY8CaTQa9/WusuQeANep3UJo8QYjQ8VqUiLWE5FhAAEfL2DUAMs2D6pDadenz98+/vj5+yeuFPG5fO27V+GQBAX1Fev1GTkeO+NrOwNOh0JqPBaDQCQAghRoOeN5kIxmpr2/fHf7d64ewNf87buW7pg71CQkd++rXSzAJAMGDE2LLiot0bVh7euZEAYDLowrr3e6vfUMQw3n71IYC/TZvQrmvvr2Yv6thzwL1bUeuXzN311wqEkGcdvzr+gQa9XuB5/6DGbbv0uHji8Ph3e5qZWwq8ydXTJ7BR0+yM9PKyUjNzC6mqvdr1xCIODm3ZMqzbif07I86fkiuUoii4e9et1yAkNzO9olwDIDQaDCajsdr1MRmNGGMLS9XIz75a9dusFfNnbFz2G8bY3FJV2RumFhiLBr2usj6aECJXKId/PMloNG5fs+TA1nUQQb2uon7D0NGff21moQIQdu71TvydW2sWzt6+ZgmE0Mc3wNuvvtStBwDg6esvN1P+8dO3ERe6fPz1TEEQpD/byhR5k7HaEuq/TBSEqh9/vNFo0OtMRqPA84RghuH6v/thbub9P3/57vThPXKFPObGNSdX977DPpDJ5bQPLPW36PQj/5SIye3MiudfOwqhyPMXThwiALTr0vN5RXVyhSJ833YGMWE9+lWWxgEAEMMU5mVfPHHE3smlebvODMtWmzEp537a5TPhDs6urTq+hbF4J+paWmK8yWhQ29gFNWnu7lVXEHgIEcHi3Zs3UhLuGSoqLNRWDRo39arrL3VNZVhWX1F+M+JSVnoqRNDD2zcotKVCqZTKIBmG1esqbkVcykxPhhDWqdegQZPmLMtWlGsvHD9kobJq1q6jTK4oKy6KvHKuIDdbJpP71KvfIKR51NXzOZnp7br2VNvYGfS6yEtnM1KTXD19mrTqcO38CUJI2Nt9pdR15dpbEZey7qdCxHj6+AY1aSFXKDEWeZPpwolDEKF2XXoihoEQmkzGiycOMwzb/q3eT/6BsCxbWlwUc+NyTuZ9mUzu4x8YENyE4zhRFKXJWzPTU9p36/3kMBYIodhbkXeiI1q07+rhU9eg1184cYhh2bZdeiDEQAhNRuOFE4c4maxd114AAIHno69dSEm4Z+/o2rFnPwYxmrLSmBuXs9NTAYSuHt7BTVtZqNRSN8yLp46IgtC2S0+T0XAu/ICDs1uTlu0AhCzLaspKYq5fyb6fCiF0qbIXAIBhGKPBcDvySlpSPADQ2zcgKLQFx8kIwTxvir56ITUx1sHZrWP3fhDCvJysWxEXSwoLHZxdQ1uHxcbc0GrKWnd8W6E00+nKb169mJWeAhF09/Zt1Kx1WlL87cgrbTp3t3N0OR9+gBDSulN3mVz+2HOFmHJNafTVC9mZ6TKZ3NsvIDCk6b3oG2nJ8e279VKaWZwPPyBXmrXu9BaECEIoXTGluXnbzj0wxgzLaktLoq9dzM26r7KyadC4WeLdW3KFsmVYt6cVaUjj41w6ddSzbj1pCEYJw7B6fUXM9csZqUkIMW5edYJCmyvNLCqvUm5Wxs2IS2UlRY4ubqGtwu5EX9PrKlp1fEsmk/O8Keb6leS4O2obuzadu9+OvFpSWNCuWy8zcwtCAMHijUtniwvz2nbtZW5h+R9838oVih1rl/r4BTRq0faFVzi8bhBC2RlpV84cb9i0Zd2AYKm9JsOwRQV5Z4/ujbsdLQiCt69/p54D3Dx9/l99mN5sBAAPa7m9ivu3M/IqolHdP/WiojoAAABSe6lnryL8W0+L6gAACCGZXIGxWLV05NFahpHJ5FgUTSajVDkoTbhJCH5sJJGHk5BK49NWDvfwcCVkOZnUAUIUBYHnqz5+j60VBF7gASEQQplcQTA2mYxSJllOhhAigEhDYHAchxBjMhoJwRBCTiZDDIMFkedNUm+yyqsnzYSBnkwdQtnjWwII5TI5efqVl9qZIcRIM71WHR2Uk8kYhjEajTUW17Esx3IcbzKKogghlMnlhDyWw6pLHlwQlsEifrAEIY7lKqcl5Xm+sk+xTK6AABiNRgiBdB8ru0HUstfDVB7czaqX5cnUEcNwHAchwhjzvIllOSkClm5TtWvLMCzLcSajEWPxwWNsMj5Z/AkRku6gNJiLIPAsyzEsYzQaASFSFFj5QD68PlWWPNxdeg4ZlgOESI/K0yDEyORyURD4x2dtqf3hrHLuIm/iOY4DED64cRByHMcwLCHYZDRKz6fUe/HhIyGvtuQ/hUZ1tZNerTxvqnpxEGIYhtHrKjDBSjNzQAAtpauKRnW1oDWwr7TnGM/9LYyxQa976lpRrFxLCOFNJh7UNJUZIQJvetpIbdLMXU8bxq3GtVJ9YtVMVrsmVbtwVv29B09cPfK033tCql9nqQb26aRusDWu4k2mWsapE4RH49g9qIF9PIdVlzy4IFUuc2V0+6TKUyAEVKuFrGUv8PS7+WTqWBSNVXqn8qbH6karJVH1TGt5jMkTV5LnTZWfG7Vfnyd3f5YxHaUa2BpyUuvDWe3cHzvZxy8g/8SlfnIJRVWq+mp9tBCLGIucXA4BwKL43/weoP43NKqjKIqiqFcOwS944APqTUS74lMURVEURb0JaFRHURRFURT1JqBRHUVRFEVR1JuARnXUAxBChmWlPoBPW4uesrbSs2xDURRFUdSLQHtLUAAAIA3Mm5meolCaubh7Vp3kFAAAITLodVnpyWbmFo6uHhChGieuEQQ+PTlerlA6ubhDBP9Jty1pbBSRdv6iKIqiqGdGy+ooAACACPEm0+ZlCxZO/zI/J6vaoMcMw0RePvvz159EX73IsmyNIR3DMJrSkuVzpu/dvFoUxX/yaEGIsu6n7t20qjA/92llhxRFURRFVUOjOgoAALAoWtnY+jVolBJ/N+52tDTztARCaDIaIs6fFHi+fkjTymk9IULVivQIxuVajaGiosoGj80BWnVJ5f9DCFHV5RAiCPduXn145yZREKrNmA4hqmUO9RrXPkroifxQFEVR1JuERnXUA4SA5u06WajUNy6d5Y1G8DAAQgjlZN6/HXm1YdNWHj6+oiiyLMtyHG80CgLPyeRVG9Ih9CCuqpyNtMrxqy4hJoNe4E0sxwEAjAaDNMOBtKXRaDAZjQgxRoOhcgIAhmE4TiYIJt5k4h7OAVCplrUmg4HneYZlBZMJQPj/nf2doiiKol4XtF0d9QDGoru3b2CjpvduXs/OTHf3rotFEQAAEXMz4mK5VtOiQ1eZTI4xTrx3+9LpI5mpyQzL1fEPbNe1p5OrZ9VJqBBC5ZrSzSsWOrl69Bo8imE5CGFJUcGWlYvdPL17DRldodVuW/27l6+/g7Pb+eOHykqK7BycWnd8O7hpK4Net33tkjuR1/S68uVzf+jwVp+ufQczLJudkXbu6P60pDiMiWcdvw5v9XH19JFm0WFZLjsj7dyxKmvf7uPq4UMI1usqtq3+3crWwcJSfePiaXsnl97D3nNwcpPmW6QoiqKoNwmN6qgHCCEKpVmz9p1vRly6FXHJw8cXAAARKteUXr94xt27rn9wYwjBxZOHVy/8CQDiF9jQoNft2bjq0ulj46b85Neg4aNjQWg0GGKuXyrXlFVOKmo06G9FXDToygEAJpPxbvT1qCsXOJnM2s5erlBeOnUk4vzJSbMWBjRsYu/gYmZuYTIanVw9rGzsEMPExUQtm/NDUUGeX/1gxLAnDu68cjb8k69nBTZuBgiJi4lcNnf6w7XMiQM7r54N//ibWUFNWoqCcPfmjfzsTLW1jb2TW3FRAcGE1sNSFEVRbyQa1VGPEEKCGje3d3KJvnqhY88BZmbmiGFSE+6lJcZ26zvEwck1Iy1l68rFFpaqiTPn+weFiKJ4+fSxJT99t23175N/XIjQo3rPh3PDszUugRAili0qzPvk61lder+DELpw4tDCmV9dPn0sMCS05+CRyQl37kXfGPbRBFcPr9KSoi0rFusqyqcvXFO/UROIUMKdmLnfjdu6+vfv5y3HmGxZWbk2FCKYcOfW3O8+37b6jzr1AiGELMsZjYaRn33dKqwbz/OYYDpPNkVRFPVGom2MqEdEUXBwdg1p3ibx3u2MlCSGYUVRjLp6AQDYrF0nxDCxMZEFednd+g3xrd/QoNcLPN+ifZdWYd3ibkdnpiUj5v/xOImCUNe/QdM2HUVR4HmTj3+gnYNTWUkRz/OiKGCMCSGCwBNAMlKS4u5EhbRoY2Vrl56cmJ6UoDQ3D27aKjXhXkZqclZ6Styd6JAWba1s7dKTEx6sDW2VEn8vPTkBMQzG2NnNwz84xGQyYSzW2IGXoiiKot4AtKyOegxCqEWHLicO7IyJvFK/UaimpCjy0lm/Bg29fQMEgS/MzUEIefj4Sq3oCCGIYTzr1jt9ZG9JcZGtg9P/Ky2VlQ0nk2FCIIQIMgzLYoKrBV0QwoK8HN5kunjiyNUzx6W1EAKj0cCbTMUFeQAA3mS6eOLw1TPh1dYW5ed51vEDhFhYqmVyBQA0nqMoiqLeZDSqox4jYuzjV9+3flDkpbN9hrwXf+dWblZGr6HvyRQKLGIAyIO+sZUBEgGYEABBzY3VqsdRj/37Gdu3YSwCQFp3ertB4+aVlacsy7KszC+w0d2b1wAAbTq9HfjYWo5lOd/6wYIgAACqjcBCURRFUW8kGtVRjyEYm1mqmrXrvGPd0oS7N29cOmPn6NwgpCkhBDHIxt5RFMScjPTGLdsBAUIICCBZ6SkymUJtbVP1OBABAKEoCgACCAFiGINeZ9DrKoe7+3sQQoQIAda2dggx5haWXXoP5HkeEIAYJjMtubggz8zCXG1thxAys1DVtNZC6sZLURRFUf8FtAyDqg4C0KhZa5XaOnzf9riYqJDmbeydXLEoAkL8g0Js7B1PHtyVlhgnl8tZlr157WLE+ZN1/ANd3L0wfji4CSEKpbmFpSozPTk/J0smVxj0FZdPHS0uKHiGuSIIhAhBxJuMRr0Oi6KHj5+3X8DZYwduXD6PMUYMykhN+v3Hb5bNnV5WWuJVt563X8C5Y/sjrzxau3jW18vmTddqymoZspiiKIqi3jC0rI6qThBFV0/vgODGJw/tslRZtejQheE4kecFQXD3qvPO6I9XLfjx568/CWne1mg0RFw4rVQqB70/TmVlU1GuFYQHfR0sVeqmbTttWDJv4Ywv6wc3ybqfWpCbo7axFQWpkpRIWz5KlTxcQgBiGFsHp8K87GVzfujYo3/XPoOGjvliyU/fzf3u82ZtwpRmFjGRV7Pvp40a95WDkytEcMgHny/5+fs5Uz5v1qaj0sw8JvJK9v20UeO+cXJx05SWCILACrTTK0VRFPXmo1Ed9QRCWFbWpnOP5Lg73r4Bdfwb4IdRESakY4/+ji7upw7vvhMdIZMrOvccENa9n4dPXSwKLMt6ePs6urhDCDEh3Qe8a2GhunDyyM3rl33rBw0Z80X43m1qG1sAAMNw7t6+Dk4uD5rWEcJwnLu3r4OzK4QQY7Fjj/6FeTlxt6PSkuKMRkOTVu2nLlh1Yv/2+Lu3eKPR3bvuqHFfN2zakhCMRdC4ZbtpC1ae2L+jytpvGjZthQlBCLl5+chkCjpGHUVRFPXGg4QO9PDPiJjczqzAr8lVlCsU4fu2M4gJ69FP4PlatkQMwyCGACIKQtWHBELIMAyASIqSCCAEE6nUDULIMCwhlf9EDMtAAAEABACCMYTw4VrIsqx08MrjssyjJQghxLAQAIwfDC/HsCx8lCgAhIjio4zVspZluccSoijqJZIrFDvWLvXxC2jUoi39M6SeCwKAh7XcXsX92xl5FdGyOqpmWBRr7GpACBGe8mqWRpir8k8s8LjGLaUa2Go7V12CMcbYVHV97b8HtaytnhBFURRFvaFoW3KKoiiKoqg3AY3qKIqiKIqi3gQ0qqMoiqIoinoT0KiOoiiKoijqTUCjOoqiKIqiqDcB7QP7HBACXpfxYQgB5IHXJs8URb2+6DuHeu7oc1QLGtU9B+Zy9NqMVydDVpbmEEJzORLobFoURb1gchmyUltaKOUWciQw9J1DPR8sQweWrxmN6v4pBsE6DsrXJKgDEEIbJYAIettwhN59iqJeMAihSkac1Ky3rYwAOmws9XwgOl3QU9Df9eeAQa/T40WwCCFgEADgdco2RVGvKSwKEBD6zqGol4CWh1MURVEURb0JaFRHURRFURT1JqBRHUVRFEVR1JuARnUURVEURVFvAhrVURRFURRFvQloVEdRFEVRFPUmoCObUDUjhBQWFhr0eoSQpaWlSq1+vsc3Go0CLzw50AGEUKFQoJpGSDbo9QBAhVLxfHNCCDEYDFK6/8PuGGOD3sByrEwme74Z+3/5n8+CEKLX6xmGkcvlLyhvFEXVyGAwQAjk8uf8TqP+y2hU98qJuXXrzOkzoihIYzsRgs3NLfoPHODg4PDS8nAz+ubWLVsirl4tKi5iWc7d3a1z166Dhwx5jnnYvHHjyRMnAQAE48qFIsZqK/V3U6d6e3tX295oMP76y68E45mzf3xeeZDodLqff5xtbWP95ddf/w+7nz9/ftXyFf71AyZNnmxubv588/bs9Hr9zz/OViiVU3+Y9rcbY4zv3L7t7uFhbW1dXFT848yZdevW+eSzzxiWvhAo6mW4HXN77549yclJEEJfX7/+A/oH1K8PAMjIyNi3Z4/JxMOHo+xCCBBiOI7t07evq5vbv5pr6jVAX+KvnMMHD/2xeLGDkxODEABAFEU7e/sOYR1eTlRHCDmwb9/MGTNMRlPbdu3qB9Y3mfhr164u+m3B6RMnf5k319/f/7kkFBsbe/HChZDGISqVunJ6SIQxx7A1DhqOMc7Py8MEP7nqHxIEISLimouLy/+wr8lk2rNz1+WLF2NiYjp37tyyVavnnr1nhDHOy8tTmpk9y8Z/rVu/dfPmP5cvt7a2FkQhJyfH2tqK0Ek6KeqlOHni5PdTpgBCmjZrJmJx144d4UeP/jJnTuu2bXJzc7dt3aqr0D2or4CQEJKXm2tubt6ydWsa1VF/i0Z1rxZBEJJTkhuFhCxZtlRpZgYIIQAwCNnY2r6cDFyPiJg1Y6a9nf2Pv/zcrFkzaaEoips2bPzlp59mTPvhz2VLbe3s/nlCCCEbG+uff/01sEGDZ9leaaZcvOSPf55ujTnhOI79n4qp0lLTrl650m/AgKtXrhw5fORfjOosLCyWrlj+jBtnZGSUlJTI5TIAgIODw8atWxCE/9sVoCjq/0Wr0fy+cKGM41avW1fPvx4A4Mb162PHfLh86dLGoU0aNWq0e98+jLH0acty7MEDB+f/OmfE6FGBgYH/bs6p1wJ9j79aykpLU1NSQkIa+9Sp8/JT5038X+vWG03GGT/OqgzpAAAMw4x6b3Rubs7SJX8eO3p0+IgRmrKyo0eO1qlbJ7Rp08qcHz161NfXt0loKC8IJ8OPq9VqVzfX6xHXHZ0cm4SGmtVUjCQIQs054fkTx49bWVm7uLjcuH7dycW5YXDw1atXMcbd3npL2qaioiL23r2kpCSl0iwoqIG3j49UZ8Hz/MnjJ9RW6uCGDW9GR6elpbm4uDQKCbGxsak8fnl5eczNm+np9z29vLy9vao24yOEpKenx9y8VVZW5u7hERhY3/7ppaSnT53U6/T9+vcjgJw5dSpj7EfuHh6Va0VRTE5KunPnjk6n8/b2DgwMtLK2rkwlLS3t9q1bZWUaDw+P+g0C7e3tK3esqKiIj4tLiEtQminrB9b3qVOHYZjKtTqdLiE+PiE+geO4oOCgOnXqQIRMJtPpk6dYju3cpYu0mUZTlhCXkJycxAuCh7tHg+AgGxsbQMCpUyfv3b1rMpm2btnapm2bxk2aHA8Pt7Oza9mqlXQdKsrL4+LiEuMTlGZm9RsE+vj4SKlXVFScOB5ep46vm7tb5PXr+fkFXt5eQUFBlirV064PRVHVZGVlazSafgMGSCEdACC0adOWrVpdj4goLCx0d3d3cnKq3DgxMXHDuvVNmoZ+8tmn/27LXep1QaO6V0teXl5RYVE9/3p379y9fz/d2to6uGHDGuOhFyErK/PatWuNGzdp1rz5k2v79Ou7edPmUydPDRk2rLCwcPasWQMHvVMZ1eXn5/84Y+bQYcOahIaajMaVK1bodToR49ycHGsbmxWrVwUEBDx5zKeVDxkNxpXLlhuMRlEQcnNz7e3t5y9csHrlKpPJJEV1KcnJs2fOOnv2rK2trUGvBxB+8tmn748Zo1AoTEbTqpUrGYQsLS1v3Lghk8ny8vKahIbOnT/Pr149AEB6atr0H344c/q0vb290WgMDg4uLS11dnYGABBCNm/e/NvcubyRt1Sr8nJzfer4zJo9u1Xr1k9mUqvRHD8W7levXuPQ0NLSsmOHj5w8eeq999+T1vI8v2LZ8j+X/CGXyRUKRX5+fnBww9m//tygQQOM8eaNG3+b95so8BYqy9zcPN+6dWf9NLtFy5YAgMTExB9nzLx44YK1jY3JaBAEYcSoUV9MmGBhYQEASEtLmz1z5tkz59RWapPBgAn5fPwXH3481mAw/Llkibm5uRTV3b1zZ9b0GTdu3LC3tzPxfH5efuMmjefMm+cfEHDpwsX4uDij0Xj08GGlUuFb12/+nLmNQho1b94cIRQfHz975sxLFy/Z2NgYDAYRi6NHjx43fry5uXlxcfGiBYvq1KlTVlqamJiIGFRQUNCt21u/zJ3zMht9UtRrzcvba/nqVVZWVpVLBEEo05TJ5TIZ91jcJgjC8j//LCgomLfgNysr65edUer1REc2ebWkpaXp9fqNGzaO++ST2TNnffzhRyOGDY+MjHw5qd+/n1FSXOwf4F+1ZKiSq4urp6dnamqqVqORai2rbgYhrLqE47iEhIQePXocPXF889atdevWrXY0CIAoiqmpqYmVEhKSk5P1er20muO4hIT4nr17HT1xfOOWzXXq1gUPawlLS0t/+H7qnbt3//jzzwOHDx0+Hj5k6NDFCxft3rlL2lcmk0VGRqqtrHbv23fgyOEfZ8+OuXVry+bNAACDwTBv7tzr16/P++23A0cOb9u5g+XY1NRUiBAAICU5efFvC9q1a3/0xPG9B/av/euvcm35qhUrKsrLn7wgN27cSExM7Ni5o7m5edPmzdzc3cOPHtWUlUlro25Erlm1aujQYYfDj+07eGDxkj8SExPWr10HAEhOSlq8cGFYx7AjJ47vPXBg7fp1pWWlK1esNBgMZaWlM6ZOi46K+mXunINHDh86enTQkKFrV69ZtXIlwdig1//600+XL1+ZOXvWwSOH9x8+HNax4/y5806fPMU+BADQaDSzZsxMSkpatXbNvoMHDx05MvPHH+/cvr11y1YI4aSvvuzes6dKpVq4eNGYjz4SsCBVQCOGKSkunv791Fs3b82dP+/AkcOHjh4Z+M47q1auWrN6NSGEQYhl2fNnzzUObXL42NFDR49++tlnZ06fObh//z956ijqP0WhUPj7+1ctkDtz6tSNiOutWrexe7xxy4XzF44eOTrgnYFNmoa+9GxSrytaVvdqSU5KMhgMQUFB7wweZG1jc+vmzT8WL/5q0uSVa1Y/GRg9d1qNRuAFa+uaPwo5mcxKrc7Pz9fpdLCmDg1VYVF0cXEZOnyYY5WXV1UIMRqN9pOPxlb2gRUxtrKyWr9xQ/MWLaR/urq6Dh02zMHREQCg1+krO1VEXLt29erVGbNm9ujVU1ry9bffRkdH79yxo//AAQhCURQdHB0mfjnZw8MDANBv4IDNmzcnJSYBABITEs6cPj3wnXcGDRkMAHBxcflmypSbN29J2SgpKSkrK7WxtXV2cWZZ1snJafGSP8rLy5/sHIoxPnnipEKplMoOnZycOnXuvG7t2ps3b7Zr3x4AkF+Qr9fpbO1sXV1dAQC9evdWq1RS7FhaUlpWprG1s3VxcWEYxsnJ6fclS3Q6HcuyZy5dvnHjxieffjp4yBApoW+/+y4hPn7vrt1Dhw7Nysq6fOny0GHDhr/7rrT2y2++dnR0NDe3wFW7Eoti4yaNBw0e3LFTJ2nJ4KFDtm7Zknn/PsHEwsJCoVBACK1tbMzMzEpLSwEAAEKE0OVLl6KjosZ98cXAQYOkHad8/31CfMKeXbsGDR7MMIzA8/UD63827nO1lRoAMHjIkL179iYmJmKMaxyMhqKo2kVHRc+cMdPZxfmDD8cw7KPvZIPBsG3LFnML88FDhiBI/7ioZ0WjulfLkOHDOnbs5F3HR6p1bdiwoUKu+ObLL48ePvz5+PEvOnWO4yCCT2vrhjE28SaOZVmOM5lMtR+KEGLv4FBLiyuMsbm5+afjxnl5eYoilnaRyWR16/pWHsLB/tERpB6aUjAZe/eeKIq7d+0+c/o0eNhxMy01FROSl5fn5OQECHFycrZ/+OHLMIxKZSmKAgAgJSXFYDCENGlSmRNPL686deqIoggAqFO3bstWrdavXXvx/PmmzZq169C+SWho1RZvlbKzsi6cO+fh4aHXG2Lv3UMIuXt6CIJw9PCRtu3aQQgbNQoJCAycP3fe4UOHmrdo0bZduyZNmqitrAAAPnXrtGjZYs2q1efOnG3avFn79u2bhIba2dsDABIS4jmObdbiUQ24Uqlo3qL5iqVR2dnZycnJUsRWudbLy2vajOkAAI1GU7nQ2tr6mylTysvL09LSSoqLExMSb9y4kZ2V5eHpgQlmACNdTOmUq96RhIREmUxWNXUzM7OmzZqtWbUqJzvbxdUVAODl7W1m/qBJgFyhMFMqBV6g/Wcp6n9w+dKlKV9/QzD+ec4cXz+/qqvu3rlz5fKVt7q/JY14QlHPiEZ1rxZ7O3t7u8diiKbNmlpZWyfEJ7yE1J2cnczMze6n369xrVarzc7Osbe3V6vVNdZIVsNxXC3lNwQQmYwL6xj2tD6w5OlH0Gq1LMuqVJbm5hZYxAAAAEGbtm2tra3NlEqCCXkQoT7YFwIAH453XFFRASEwN1M+yifLqlQqKS6xtraeM2/+tq1bT508uXP7jjWrV3t4en40duzIUSPlj4/ue/nSpfsZ99NS07p16iRFNAxCEKGLFy6kpaZ6+/i4e7gvWLRwy+YtF8+fX79m7fKly3x9fT/74vNBgwfb2trO/e23bVu2nj51aue27WtWrfby8vzok09GjByp1+sZhq027p2lpaUgikaDQVdRASF4lnaWZ06dWr58+c2oaJ7nXd1cvTy95HI5eHroBSHAGOt0FQxbU+qCYDKaIAAEAFbGwqolBxAQQIM6ivp/271z16yZMx0dHBb98UdI45Bqay9cOK/TVXTv3oOWglP/LzSqe4WIohhz65Zepw9t1rSyuxMmhADAybiXkAFvb+8A/4BrV69mZmS6uVcfGCni6rXMzMy3u78tTUIAIZDK2CRGo4nn+Sfniqjd08oFn0aKHlRWagDgqPfeCwsLww/K8GC5thwTrFardTpdLUewsbEhBBQWFlUu4XmhrKxUqncWeF6lVk2YNPG9D97Pz8u/cf36hvXrF/72W4PgBi1bPhq1xGAwHD1y1NnZedr06Q4ODlKhF8Mwx8PD165ec/LEiQ/HjjWZTE7Ozt9Pm1pSXJyXl3/58qW1q1b/Nm9eSEhjnzo+apVq4uRJ73/wQX5+3vWI6xvWr18w/7dGjRrZ2dnxPF9UVFQ1z7m5uXK53FKlUqnUGJMHdaYAAAB0Ot3Rw4fdPTzqVRlH8O7du9989bXaymreb78FNgi0sLTEIh757rtVa2mfvLAMw1hZWZt4vqjwsdTz8nIVCoWFpcWDyI0GcBT1z4iiuH7t2vlz5zVs1OinX3+p88SIBwaD4cqlK94+3kHBQf9KDqnXF/0IeIUIgrBg/vxxn36anppauTA6KqqsrKzBsw3q9g9ZqlQDB72TmZn5+6JF1UrjkpOS//zjD1tb2169ewMAOLmck8lzc3MqN7gZHa3RaOBLaf8R0iiEEBx+LBxCxDAMwzAajeabr7766ccfTUZj7W3+/AMCbO3sTp44UVmJfO/evYT4BKmfx9WrV0e9++65s2fVarWvn+/Q4cNGjBpZUVFRLdC5d/dudFR06zZtuvfoEdq0afMWLZq3aBHatOmgwYNt7eyOHT2m0ZQdDw//YPR7t27etLax8Q/wf/+DD/oO6K8p02i1musREaNGjLhw/rzaSu3r5zfs3eHDR44o12pLSkoaBAdDCE+EH6+sHs3Lzbtw/oK7h4erm1u9gHoKheLC+fOVa2NiYqZNnXbm9GmEUOWJ37l9Oysz6/0xY3r37VOnbl1HR8f799MzMzIqY24IICHkscaChEAIg4KDACHHjx+vjP9ycnIunr/g4enp4uZGnh4UUhT17HZs3z731zldunZdvmrVkyEdACAnOzslOTkoOPiljVRKvTFoWd0rRC6X9+nX7/Kly4sWLvry66/NLczvxMQsWrCgfkBAl65dX04e+vTrdzvm9uZNm/Ly8t4fM8bLy1PE+Pq1iKV//pmXmztt+vTAoAYAAFsbm+DgoNMnTy3988/WrVpduXJ1544dL202wyZNQ3v17r1rxw6EUP+BA0wm0/o1a4+Hh0/5/juZXF57WZ2Hh8e7I0b8sXjRlK+/GTp8WE52ztI/l2i1Wqm61tHRMeN+xvSp08ZPnOgf4J+cnLx+zTpfP9+qUTUh5PSpU3q9rmPHjtUO7u3j07Jly0OHDkVFRjm7uNy7d/f7KVM+Hfe5Tx2fmFu3du/YGdigga+vb15e3v30+9OnTvti4oR69eolJSb+tW6dX7169erVc3Zx6dGz547t2xmG6T9wYGlJyYrly9NSU2fMmmVtba1Sqfr07bNxw0ZLS8t+AwbkZucsXLDAwcGh/4CBDGIq60Hd3T0sLC327d3j6+urtlJHXL26ccMG3mTiTbwoCgzDWFial5SUbN+6rWevnra2D1ofiqLYvEXLt7t337ZlC4NQvwH9i4uLly9dlpGRMWv2bGsrq6xnqHanKKp2SUlJf/7+h6WFRZPQ0GtXr4qCAAAgBMgV8hYtW0gDGKWn3y8vL/f19fvbfmkUVQ2N6l4tvXv3zszIWLl8xcULF6ysrDIyMgLq1//xp9lVx7Z9oczMzL7/YZqzi8umDRuGDhqkUql4njcaDI0aN/7yq6969ektbaZUKidMnGQy8b/NnT9H4APq1x85atT6detMJqO0gSAItdfUiaLI83wtDbIEQajWoEQQBKkMyczMbOr0HxwdHfft3bt540YIoY+Pz4xZs4a9O1x6CQqCUO1tKAgCRBAAgBD6cOxHnIzbtGHjzh07VCpVp86dAAEmgwEA4OvnN2/Bb38s/v2bL7+sqKiwsLBo2qzZ+EkTvarMS5ufn3/k8BFXN7dmLVpUyzPDMG+9/daunTt37dj1x9IlP//669I/lnzx2Wc6nc7Kyqptu3bjJ05UqdUqtXregt/+WPT7V5Mm6yoqLCwtmzVvPmHSROkuT5n6vY2Nzf59+/5av16hkNcPDJz9y8/9BwyQjj/xy8nm5ha7d+9as2q1QqEIbRo6cfKXvn6+Go1GEASpRju0aehX33yzds2a/n37KOXKOr51Bw0eEhUZGRUVmZeb5+7h0SEs7NiRY/PmzLl39+78Bb/xPC8IAsFYLpd9/8M0WzvbA/v3r1u7VqFQBAYG/vzrr3379wMAYEKkLSvPlzyxhKKo2p09cyYtLQ1B+N2331YWimOMHZ0c9+zfJ3UXy8nOMplMDo50GEjq/w3Sds6vGoxxUkJiZGRkmaasrk+dxqGhNrY2f7/bM9uzaxdimL79+tW+WXZW1u3btzPuZ3Ac51evXkBAgJW1VbVtKioq8vPzsSha29jY2Nikp6WZmZvb29tjjDMzMyGAbu5uT/vWzMvN1ZaXu7m5KRQ1lPA9OAKEbm4PjoAxzsrKAoRUDXBzc3LKKyoggGq1yu5hT1WMcVZmJgDAzd390b6ZmQBCd3f3yn3z8/I0Wq1cJnNwdCwqKiIYV86xqNVqiwoLeV7gZJy9vX213gNGozHj/n2lUlnjnIzSWo6TeXh6QAhLS0pLSkoEgZfL5Y5OTlKTxGdJJTc3t1xbzrCMjY2NWq2ulkpubm65VsswrL2DvfRxL10xBFFlg8jc3FytVsMg1sbG2srauqioqKSkxNXVValUAgAK8vNLSkrMzMycnJ0zMzIUCoWjk1PlzXpwfJa1tbFVqR90Q+Z5PjMzU6lUOjo6Vk7jUW0JRT1p5fIVgQ0CW7dp829n5JVQWFhYXFQEqv29EMCyjJu7u9SiurS0tLCgwNHJydLS8t/JJfXaolHdf84zRnUURVHPBY3qKOqlob0lKIqiKIqi3gQ0qqMoiqIoinoT0KiOoiiKoijqTUCjOoqiKIqiqDcBjeooiqIoiqLeBDSqoyiKoiiKehPQqI6iKIqiKOpNQKM6iqIo6sWiQ1RT1MtBZwz7pwgAvEAAeD0Gc4YQYYAAgSaRADoANUVRLxiEiEDEY0DfOdRzxCDIIPqxUAMa1f1TGJOEXB1+TV5WcoU8vxwjSJIKTAJPp++kKOrFkivkxXqSVWpKzDeKgvhvZ4d6Q7hayWwtuX87F68iGtU9BwImr0tUx2CgNxgYxAoYCK9LpimKem0xGOh1ehMvChiI9J1DPQ8YAPooPQ1tV/efAyGdh52iqJeHvnKo54s+TrWgUR1FURRFUdSbgEZ1FEVRFEVRbwIa1VEURVEURb0JaFRHURRFURT1JqB9YF9RECGEECEEi//OWAAIIYblEIKEACyKgijUONYUQohhWYQQIABjLAg8eXwzhmEgRIQQUaxhIBVpLcYYY7Hyn09uRgARRREQghgGPb4BAYQQgjGumr2nHQcAgLGIMQYAIIaBEGJRJHQMLYqiXjoIIWIYAMDT3kIP3lEYE4xfeu6o1xWN6l45CCHEMGVFhQX5OWbmlo4ubggh8SXGdgghhmELcrMS7sWUFRcxHOfm6eNbP5jlOFF4FJlBCBmWKy0qSLh7qyg/FyLk4OLmVz/YUmVVGdsRQjLTUiq0GqWZuYuHN6w2aCQhmekp5RqNjZ29naMzxjjrfmq5RlO9gxMhnEzu6uHFcrKcjDRtWRmAABAAIIAEIIaxUKnsHF04TiYIAgCEEJyRlqYrL3+yoxQhxMbWwc7RiRCSk5Gm11W4ePjIZLIXch0piqJqAiFiWVarKcvPyYAAObi4mVtaioJQGduxLCsKYm5Guk5X7uDkqrK2qbqWompBo7pXC0KoXFt2cNuGc8f2i6KAMa7fsMnwsROd3D2w+DI+1xDDVGg1R3ZtOnVwV7m2jGFYEYsEk+DQFkM/HO9Vt54gCAAACKEg8CcP7Nq/ZU1xYT7DsgBCURCc3Tz6j/ioRYcuCDEAAJ43bV39e9TV8w5Obl/NXuTq5VNZ9MgwbG5WxpKfv0tPiu8xaOSITybzOt3OdUtvXDqLGIYQUhmSiaLg5Ob19U+LHZxd925adeXMccQwlSVzhACEoIun94B3x4a0aocg0uv0W5YvvB0VgRAigFQN7QRe6Dlk1PCxE4wGw95Nq2NjIr/99U83T5+XGTRTFPVfhhAy6PWH9m8/vn+HQa8jgCjNLHoMfLdjz/4cJyOEIIaJv3tr26rf01MSAAEyhaLHwBFd+wxiOY4GdtTfolHdKwRCyPOmTcsWnD68t1OvgfUbhaYnxR3asUFXoZ0wY76l2vpF18YihPQV2rWLfz55YFezdp3ad+tt5+BsNOgir1w4smtjYX7uVz/97ujsijHGGO9cv2zX+mVedf3f/WSyZ916AJDkuLvh+7YtnDF51Gdf9xr6nlRrUKHVaEtLjDr93ZsR7j51K08BIRR/Jzo59o6uQmuoqJAWajVloij0GDTCUmVNHk7CRjC2sFRbWKowxlqNhjeZeg4eZWvvKGIRAiAKwv2UhAsnjyydM/WbX/4MaNiYEKIpKwGQ9BoyWmlmTqpM5kZEXCegwYOMlWs1JcW4pnphiqKoFwYe3PbX1lWLmrfv3KJ9V1Hkz4UfWrNwNi+Yeg0axTBsUtydBT9MQgzbd9gYC0vV+eMH1/3xq0wu79pnEP3+pP4WjepeIQzD3oy4dO7Y/j7D3n/340msjBN5gRBy4sCOlITYkOZtXngbOwjPHNl/9tj+twcMG/X5Nyq1lSiIkEENm7exUKk3Lfvt4Lb1oz//RiaTXzkTvm/z6iYt23/y7Y8Ozm5SS7WGTVs3btFu0cwvd6xfVse/QVCTFiajEQDg4OwGAIm5fqV9tz5yhQJjDCE0Gg23rl9SW9tACMHDmlkIoLmlqmufQc5u3lJLOwkhWOB5QRAgBOYWlp17DfD29RcEEQAAIeBNvLu339rFP9+4eDoguDEAAEKotrJ5e8BwGzt7/HiTFFEQpBZ+Uk03Hc+SoqiXBiGUn5N5fN/WwMZNP/vuZxs7B0JISIu2syZ+ePrQnrZdellZ2xze/pdBr/tu7vLAkFAAYGDjZj9O+vDauRNtuvRQKs0wbWNH1YpGda8QjHHkxbMqa5uOPfrL5HKeNzEM02vI6ICGTdw8fKq2aXsRIELa0pKzx/bZ2Nr3GfaBubml0WAAAAABMCzbsUe/gtwseycXLAoGvXjq0G65QvnOe586OLuZjIbKY3j5+g8Y/cmi6ZPPHNlbLygEIogxtrKxdXb3Srx7Kzc7w7uuP8YYIZSXkxkbExXSvO3VcyeqlKYBQojJaDQa9FWjOgBA5ej0DzcwCgIvLZHJ5fWCGsnkiuLCfExwlc0MRoP+yZcgHeieoqh/B4Qmo6FOQFBomzBLldqg1wEAbO2dPHx8Y65fNugqCk3G21HXWoW95R/cGIsYE+zs6j7u+595o5FhWFoDS/0tGtW9KiBCel35/bREN08fhNDR3Vvi70ZbWlo179ClRfsugiC88OpXiPKyMzJSk0Oat3F0dhWqVE2KgmBj5/Dh5GkymRwxTEZKYlpSXB2/QFdPH4E3VTkGEQTev0GIm6dPwr1bJUUFVjZ2AAAAYUiLttHXLsbHRHvX9ZdO9l70dYJJQKPQK2ePP3YdIJQrlAqlsjIak8I48DD0gxDKFQqFUi4IHACAEKwr1964eMZk1Lt715Xa8wEAIERyhVLx+KctIcRkMtbYmZeiKOpFw6Lo7O45/oc5iGGk6lSEmNLiosy0ZGs7B0u1VXLcHYNe510vICX+7pXT4cXF+T6+gW06v21tZ280GGhUR/0tGtW9KhCEel2FrlzLMOwfs78tyM12dHW/nnr6yO5N742f0qnHQADhCw1HIILFRQVGfYWzuyfDck8ORMJxckwIA2FJUWG5VuPg7KZQmlV7yxCMLVRqe2e32Fs3tKUl1rb2AAAsinX86ju7eUReOdexZ3+GZXmjMfLKeW9ffyc3j6plcgihCq1m36bV5ir1g160GJtZWLbv1lttYwtEESGkqyg/uG292saOYIwQ4nk+Oe5u1NVzQU1atOr4FiFYOo6mtHjX+mUKs0c5JBibmVu07drTxs4RANqcjqKofwGESGlmTgghhEjDVx3dvTk1MW7Y2Alqa9viwnwCSPSV8zvXLbVUWzMMe+rg7gvHD3763Ww3zzo1jg9FUVXRqO4VIoqiKIpJsXdadXzr82m/qq1s83OzVs6fuWXFIq869eo1CKmsc3xRGRAETIBMJq+xsRl5WLnJm4wYizKFAqIaxoRDCMrkchGL/MNiPEKIhdq6UdPWZ47ty8287+VbLzU1KT0prveQ98zMLAh+FBdCCPU63ekjeysrSbEo2jo4hbZqb2VrBwCAEBkMunPhBxFCIha1pSW8yeTlFzDsowlh3fvZ2jtKJZoQonKt5uTBnVUzhkXR2t6hUfPWdo7O//xaURRF/W8eDJmJEAHkyM5NuzesaN6+S7c+gyGEJqPRoNPdirgy6vOvW3V8CwBw/cKp5fNm7Fy79LPvZrOcjBbXUbWjUd0rBEJIMFZb2/Qb8aGbpw9vMtWpF9h32Ae/fvtZzI0r9Ro0erHJE6A0M2dZtlyrqbFQkGFZCCAgQC5XMgxr1OsJxk8GdlgU9boKjpPJFcrKQ7MsG9y05YkD2+/ejPDxC4i9FSkKYlDTVkZdRdV9RVG0trX78seFto4uBIsAAEIAy7JWNnZSuCaKgtrKZsKM+W6ePkaj4W709V3rl1nb2jdv19nJxcNo1COEpM0cnFy+nL3YUm1FHrW0AwzDWNnYCS+4hSJFUVTtGJY16vV7N6/euW5pSIu2H02epra2waIIIRIEvlVYt049+ktDmXR4u9+Ny+eiIy7m52bT4jrqb9Go7lVBCOBkMrlSaWVjZ21rL/ACxjEoGlMAAGWBSURBVFjgTY4ubgozs+LCAoxf7CcaIdjeyVVlZZ2RmmQ0GDjZo49CCKEgCMf3bWcYpm2XnvbOrla2dlnpKRXlGpWVDREfq0ItLS7KyUy3c3S2srF9MCQ6AaIo+tQLdHBxv3X9SpvOPW5GXPL2C3B29UiJv1stG4hh7Bydndw8H9XMEvB4LS1j5+Dk5OYpioJnnXpKc/PfZ32z5Ofvv/ppsZ2jc2U8yrCsvZOrtZ3dY70lCKg2CwVFUdRLxjCMpqT4rz/nnTmyp2P3/iM+/VJtbSMIAstx5hYWLMs5u3tJDe8IIQzLunvVuX7xtLaslHbZp/4WnQf2VUEIMbewtHNw1lWU6/U6aRoGCKFBrxd53szc/EXfK4KxvaOzb/2GSbExqYmxHCerrAZlOVlu1v1dG5Yf3rmpokLr4OLaIKR5YmzM3ciIqptJs4dFXj6Xk5Ee3KSl2tq2MqLCWLSysQ1q0iIl7s7tyKupifdCW3eQyWRVB5OrhDHGovjoP1y9m4i0gSgIvMnYuuPbXfsNuXfzxr5Nq0WerzpRGCGY4Mf/I7ha/1f4BDrWCUVRLw7DMKXFhcvm/HD22L4BI8eO/WqGlY2dNN4TIcTR1V2uVJaVFFe+GSGAFVoty3IKpbK241IUAIBGda8OQrBMJm/YrHVxYX7kpbNSV1ACQMSFU5gQ3/rB6CkTmz4vmBCFUtmxRz9RELeuXJyWFM9ynEJpJlcoigtyd61fXpyf16nnAFt7RwhA1z7vqKxtNi7/LfrqBQCgXPmg1+qVM8e3r13i5Ooe1qMfRMzjTUBgSIu2er3u4Lb1MrmyXlAI/sdlZoQQhmF6DRpVN6DBqUO7o65eYNhHxc8E16DajIrSHLJVgZoCTYqiqOeCN5m2rV5y/eLp4WMnDv7gc4Zled704O0jii7uXt6+AVFXzmWlJcsVSoVCmZeTeTPiomcdPztHFzohLPW3aA3sKwRj3LJDt6tnwrev/aNcU1rXPyj+7s0juzY1bRPWIKT5S5gxTBTF0NZhfd/9YOvK32dOfL9l+26Oru4V5ZobF0/HxkR37jWgc++BhABBEOoENBgzYerK32b+9NXHLcO6+vgFYEyS7sVcPX9SZWX9wfjvPLx9pfYfoiiIggAIIQR71/V3cvWIvHyuxzsjHF3cCMaEEEHgKwdtEUWhcg7Zp+Ww2gaiKLp4evcd9sHCmV/uXLfUt36wXKHAhBTk5axeOJuTyatGaVjEzh6e/UeMlbqelZUUb1q2wMzC4uGstQBCENa9f0iLNgL/YjumUBT1H8SyXGTE5VOHdnEyeWr8vSU/f09EEUBACDGzUA0cNdbR2a33kPcWz/p68axvuvUbzHHyk4d25+dmv/PeJ5YqK9qojvpbNKp7hWCMVVZWn3z7466/lp85uu/s0f2EkPZdew0e87mZhcWTFZHPndTTfsCIsU6uHuF7t505tk9qgmZtazdm4vedew1Umls87LWAW4Z1c3RxPbBtfcz1y9cvnAIAKpRmYW/37fHOCA8fP2keCAihk4uHubklw3JYFM0tVa3Cuhl0Fc3aduJkcoxFmVzh6eNnY+9ICIEQOjq78byJ42RPy6GDk0u5t69MJn8ssOOF5u27dOs39F709Zjrl5u37+Li5llaXJSaGFstPsSiwPMmjEWGYRycXJzdPDLSkgnBD2pdCQEQNm7Zng5TTFHUCwAJIQV5WU5unoCQpLg7hBDp5UMIVlvbmoxGURSatOowYfq8HeuWblm5GEJkbmE59qvprTq+/RJ+Aqg3AKTdpP8hEZPbmRXPsScDYhgIYUFOdnFhnpWNnaOLGwDgeU3/J1cowvdtZxAT1qPf04qjIIQMywo8n5edqS0rkSsUji4e5haWoig81vMAQoZhIIAlRfkFudkQIgdnN7WNDSGk6jQYDMMCCERBlMrMGIaBCGERS28oCCHDsJhgKVhkGAZCKLURrjFvT9tAOg4BRBRFQAjDsE+LzAgh0veulJMnq1sxFumcPBT1vMgVih1rl/r4BTRq0fZFT5DzWoAIMQ8HS38ckd5s0tvMaNRn30/jed7F3dNCpRYFgf5YVyIAeFjL7VXcv52RVxEtq3vlSPGNnaOTg7MLxuTlT+dMCJECPmd3T1cPL0IArjL4XNXtpHe02trWShptGOMnI8VqVQaiKAKx6gSvpOogfH97sk/b4Inj/P2PR7WcUBRFvQQEY6HW70bpbcaynFddfwABFkXaIIR6djSqe0U9bLn/r+ZBfKamfBhj8G9nlaIo6k1SWatAUf8vtA8sRVEURVHUm4BGdRRFURRFUW8CGtVRFEVRFEW9CWhUR1EURVEU9SagUR1FURRFUdSbgPaBfQ4QfG0mmYIAsCyLEIIA0KF2KYp60SAALEffOdTzBAGdr/upaFT3TyEE6zmZvTZRHUR3LFnEID8HGSF0CEeKol4sCJGdOetuI6/nKCfkqdPGUNT/C8fQsK5mNKr7pyAAcu51qsjmEEEIyFlIP3YoinoJGEhkDH3nUNTL8DqFI9RzQcBrU19MUdSbgb5zKOrloFEdRVEURVHUm4BGdRRFURRFUW8CGtVRFEVRFEW9CWhUR1EURVEU9SagUR1FURRFUdSbgI5sQj1iNBpFUXzaWhnHsdw/HeLOZDJhLMrlCgghb+IFUVDI5RBV/7rgeV4QBLlcjp5Y9RxJqdSYgefLZDJhjOVyOXxiGFZBEEwmE4SwxpPFGBsMBoRQjfv+k3Sfr8qzUCgUT6aFRdFgNP7PZ/E/400mQRRrzhIWjUYTy7LcE4+00WgkhPzzrJpMJiyK8ppSfzmPN/VawBgLgiCT0ZH8qOeDRnWvEEEQDh86lJqSwjAMAAAQACBACBFCGgQFdQgLe6Gp8yZ+0YIFUZFRLMsCABiGYRhGEASMMQBAFMVh7w7v3afPP0kCY7xx/V93792d9sN0axvrrVu2XL1yZer0H1xcXAAAqSkpCDGeXp4AgCOHDh/cf2D6rBnuHh7P4+RqtnfP3nNnzkz9YZqzi8uLSwVjvHb16uTk5O+nTbOysqq29uqVKyuXr2BZdsSokWEdO1Zbe3D//h3bd7i5u30zZYqNjc3/K11RFFevXJmenv7d1KlqtfqfnMLfunjh4ppVq2Qy2ej332vbrl21tXv37t2za5enp9dX335jbW39D9PKzs4uLy/38/P72y23btkSeSNy+syZNrbVL11cbNzihYvCOoYNGTas6nKe5xfMn19cVDz1h2nqJ27W/8vmTZtuRd+cPmumdMqpKSkMy3p4eAAAjh05euzo0S8mjK/n7/9PkqDeAGvXrDHo9Z989tmD1z4ARqPx2JGjaWlpED74IhBFsX5gYJcuXV709yf1BqBR3StEEITwo8fOnT37oPwAQoSQVqMpLir6fPz4Fx3VAQAIxlgUMYIQwKSUlKysrPqBgdZWVgQQEYuEPIcxp+7evXvx4kWj0QgAKCwsTEtL5XkeAHDt6tUfvp/6yWefSlFdSUlJSkqytNmLk5SYeO7s2YlfTn6hqRBC7ty+Ex0dZTKanlybk51z6uRJURStra3atG1btehIr9Pt2rkr/Nix+vXrGwyG/yHd2zG379y5YzLVkO7zlZ2VderkSUKwnb1dy1atpA8Dia6iYteOHSeOnwgKDv7nNzQ5KWnS+Ald33rrWaK62NjYC+fO1XjpioqKz5w+7ebmVm05xvjGjRs52dn/PKux9+5dOH9eOk5UZOTkCRPHT5ooRXWpqannzp4dOWrkP0yCet0dPXz4t7nzOoR1qPp2LSgoWLjgt7TUNGtra2m5ief79+/XqXNn5t/LKvW6oFHdK0Qul//402yDwSBNlwghLMjPn/LNt6IgDB8x4kWnzsm4b7//vvKfc375Zd2atdNnzmjRsuXzSgIhVLXO64sJ4z/7fJxU9VBUWJSRkcEwDx7Id0eOGDpsqEwuf15J14hhGJlM9qLrBBmGkc66xoQQQmZmZlZW6qio6OysLE8vr8pVcXFxyclJDg4OLMv+D5msPd3nCyFkbm6utlJHXr+Rm5tbNVq6e/duakqqvb39/3YW1Wi15Wmpqc94GJZluafcX4SQTCarLB2piuO453LRqqZeVFScnp5emZz04KGaUqf+I0RR3LJp0/y588rKyqpVv+bl5pUUl0ycPGnQkCFSVQkhxNzcvMbHlaKqoVHdKwRCaGtnV3XJ6hUrMzLuL1q82NfP9yVnRnqbCIJQdWHEtWvFxcWNGzeOvHGD5bjQ0FBrGxue51NTUuLj4zUajb29Q2CDQFdX18pdBEGIj4uLi42zsrJq2Khh1RfTrVu37qend+3WLeP+/bNnzhBCzp45gxDs+tZbiYmJ9+7c7dy1S2WVZVZW1p3bt8tKyzw8PQPqB1RWKd6OiUlLS+sQFpaTnX075rZcIQ8KDvb09KxMRRTF9PT02Hv3ykrLrG1s6tev7+Hp8Sy/2SaTKTUlJSE+XqPVOjg4BjYIdHlYURtx7VpJcUm7Du0TExLjYmPVanXDRg2dnJ0r9+V5Pi42Lj4+ztbGtkFwUC2vYwIIhLBNu/YnT5yIjoqqGtVdvnhJqVS6u7nn5OY+2h6TtPS0e3fu6vS6unXr1vP3NzMze5SuiY+Ni02Ij7eztWvQoMGT6aanp9+9e7dcq61bt65/QEDlvvfu3k1KSmrWvHns3bs6vT6kceOM+/c1ZZq27drFx8fFxcVZW1s3bNTI0dHxaeeBEGrXrv3x48dvRkdXjeouXbxkaWnp5u5eXFxcdYf8/Lw7MXcKCvLd3NwDgxpU3ujYe/cSExLah4UVFhTcunmLk3ENgoK8vLwghPfv3z9y+BAmJCoyaveuXZ27dFGr1YIgpKamxsXGarVaW1u7wMBAN/fqJXD/UGZm5p3btzUajbe3T0D9AAsLi8pVPM+npabGxcVptVo7O7vABg2qPvwQAARRQnzC2dOnGYY5d+YsgqjrW90ghBBCQkh6WlpUZBTDoKDgYC9v75fZ6JD6FxUUFMyYNu3ihYsdwsIiIiJEjKuuTU9P43m+abPmzlVeKRT1jGhU9+o6f+7cls2b3xk8qGPnzv92Xh7Yv3ffqZMn3T3c42LjIIRz589v0bLF3F/n7N61y8zMTCaT5ebmOjo5TZv+Q6/evQEAGo1m0YKFG9avNzc3J4R4ennKOBnDIOnXa//efQcP7G/cpMm9e/cuXrggiuKlS5d0Ol2nLl1Onzy15PffAxsEWllZ8Ty/Yf1fy/78U6vVqlSqwsLCRiEh06b/0LhJEwDAieMndmzbduHc+VMnT0KEiouKrKysps+a2btPHwhhebl20YKF27ZsQQxrplTm5uZaWVtP+W7KO4MH195QvaCgYN6cOfv27LWwsOA4Ljc319nFZfrMGW93704I2bN799XLV04cP34iPFwmlxcUFLi5u/38y6/tOrQHAJSVlf02b97mjZssLS0xxt4+3hBABj09sCMkKKhB3L17p0+d7tOvn3RxysvLz5071yS0qV6ny87OlrYsLy9f9ufSdWvWSP0SSkpK2rVv//0P03x9fQEApaWl8+fM3bp5s6VKJWKxTp26GIsM8+A0TSbT2lWrl/75pyiKZmZmxcXF7cM6TJs+3dvbGwBw/vz5lcuW+wcE3Lt7lzeZPhv/RXpa2o3r148eOXLqxAlOLi/Iz/f08vx1zpxWbdrUeBYY46Dg4Nu3b585fbpHr15SeKLRaC6cPx/arFlpSUlhYWHlxgf275/7yy/5+QVW1tbFRUX+Af4/zJjRrHlzAMC5c+fWrlp95fKVE8ePAwBLS4uVZubfT506ZNjQ9NS0E8dPGI3Gm9E39QZ98+bNAQDz5szZvXO3XC6Ty+W5OTkOjo5Tp0/r3afvs0RIT0a9nOyxUjpBEDZv2vTHosXl5eWWKlVRYWHLVq1+mDGjnn89AEBJcfG8uXP37NqtVCplMlluTo6Ts/PUhw+/BCIYe+/e+XPnCMaXLl6sKC9vH9aBYRhBFNeuXhMVGYkxListMzM3m/rDtHcGD/7bPFNvgOLiYgjR/IULmoSGvtO/P8GPNW5JTEi0srJSqSwvXbyo1+u9vX3q1K3zb2WVeu3QppevKI1Gs3LFCls7u5GjRr86X/Acx2VmZjo4OO49cODA4cPtOrRfs2r1lk2bJkyaeODwoT0H9q9Ztw4Asmr5Cq1WCwDYumXLhvXrR7//3oEjhw8cPtSoUUhUVFTVeiiO40RR7N6jxxfjx8vl8nGff/7rvLlSp8XKWrCD+/f/8tNPjZs02XfwwL6DB5atXFGQn//t19+kpqQAAKRf01u3bi1YvGj/wQMbNm+ysLRY/ufSwoICAMD2rdtWLFs+YtSoQ0eO7Nm/b9PWLdbW1itXrMzNyX36WQKM8crlK3Zu2/7VN9/sP3xoz/79K1av4k386hUrK3QVEEIZJ0tNTb2fnr5y3dp9hw4sW7FCq9EuX7bMYDAQQjb89dfWzVs++njsgSOH9x06GBBQ/2Z0NMMyT5vZHGNsa2ffum2b6KiozMxMaWF8XFx6WlrHTh0helAdTwhZv3bt8qVL+/Trd+Dwof2HDv4yd07kjcjpU6eWlpYCAP5at277tm1jP/30wJHD+w4e9Kvnd/PmLYZ5UO+5Y9u2xYsW9e7T58DhQ/sOHvj9zyV3Ym7Pmj6jvLwcAMAyTHFJsSAIG7duOXI8fMjQoQihpMSknOzsNX+t33/owJJlS4uLSlYsX2F8Sgs/jLGjo0Or1q0ir9/IeRiGxt67l5mR0bFTx6rP8MULF2b+ML2Or++uvXv3Hti/aesWgsHU775PS0sDAHAsV1RUdD3i2s9z5uw/dGDTtm0O9vYrli/Pzs5u3rLFD9Onm5ubDxoyaMnSpc4uLuvXrv1r3fpPx3128MjhPQf2r9+0keO4lctWVCsXrBFC6FbMrbVr1qxZvVr6b+2aNatXrsrJzqmM+A8fPPjz7J/ah3U4eOTwvgP7V65ZnZmRMe3774uKigAAa9es2fjXhi/Gj5ce/nUbNiAEVy5fUVJSIu1OABBFsdvbb42fNAkxzGdffP7rvLnSF05ZWVl8XNyPP/20/9DBDVs329jYrFi2vPbHknpj+Pj4zF+4oEvXrhBC/HhBnSiKyUmJpaWlk8ZPmPL1N9998+2Qd9755aeftRrtv5Vb6vVCy+peURfOn4+4em3sJx+//LrXWhCMzczMhg4fXte3LgAAi9jOwX7c+C8++vhjKVZzdXU9fjz83NlzWo0GELJ/774GQUGTv/xSaWYGAPjq229iYm5V/8UlRKFQqNRqAIBKparaWxMhZDIad2zf7ubmNm36D1J/WFc3N4PeMOGLL06EH//ok48BIASAD8aMad+hg7S2U6dOe3bvKSsrs3dwUKnUn3z26afjxllaWgIAXFxdu3TtsmPb9pKSYhfXp/Z7FUXR2dn58wkTxnz0oRSOuLq5hh89FhERodVozc3MMcEKheKTceOk4iIXF9eDBw/cir6pKSvjZLKD+/aHNG48YdIkuVwOAPh6yrcxMbeMxqd2dyAYy+Wytu3a7dqxM+LaNXd3dwDAuTNn7R0cghs2PHzwkHQpCgsKdu3Y2ahRo2nTf5BqTgcPGZKfl//H4sWXL15s2br1wQMHQ5uGTpg0UWqm8/WUKTG3YkSRZxDSlGm2bd3WICho5uwfH9wpN7f8vPz5c+dej4gI69iRAMAybN/+/YKCggAAhBCpSG/cF1+ENm0KAHBycj6wf39CXEJpWZmjQlHTWRC5QtG2ffv9e/fdiIjo3bcvAODM6dPOzs4NgoJ279wFAIAIiaK4a8dOuUL+86+/SpWVrq6u3037/uMPPzp+LPyjj8cCACCEw0aM6Nqtq5TPt7p33/jXX9mZ2S4uLtY2NhBCCwsLqSG5jY3t5+PHf/TxWOlSu7q6tg/rcPLEybLSMltb21qeZAgBQiji6rWbUdFVy0kgAEaD0buON0TQZDJt2bylbt06M2fNsrC0lDKj1Wq/nDjp2pWr3Xv2sLO3Hz9hwpixH0kX3NXVte3R9ufOni0rK6va1VehUKgrH28rKwAAxphlmA8+HNPt7bekw77do8eWTZuys7OcnJ1qyTb1ZpDabgIAnuyCptFo0tPSZTJZ3/79mrdoodPp9uzavWLZMlEQvv3+u6r9kCiqRvQReRWZTKZDBw6qVKpe/2wkkeeOAGCpsnR++MODGDRq9GheEAry88s0mrSU1JiYmCuXr7AMAwDIy8/PzMwYMGCg8mHjLZVK1Sgk5PTJUwRUf5dJH6zVPlsRwxQWFmZmZDZu0qTq4CONmzR2cHC4d+8eAABjYmFh4eXtXblWbWVNCMEEAwDeGTwIY1xQUJCbm3s/LS0m5vbpU6cZhqnWkKUajuPeH/MBz/O5ubmasrLUlNSYW7ciIiJYhnnQeBkTtVrt6flo1BUrtRUhRBRxUW5uVlZWWKdO8oddPaQWaVevXHnipB8RBbFhw0ZOzk4Xzp3v26+fXq+/fPlyy1atHOwdRCwCACCEOVlZubm53Xv0qNqQrlnzZkqlMiEh0dPLKyc7u2u3bpUtr22srYMbBkfeuAEgysnNzs7OUiqVn439WLoyEMDcvDytVhsfFxfWsSMhRKlUurm6Vd4OQoi1tbWbu/ujC6tSE4JF4WkjGhJREEKbNbOzt79w/kLP3r3Ly8uvXbnauk0bOzs76SwQguVabXJycrm2fPr3UxGDpJyUV5RrNJr4uDgAAAHEzMysTp1HVU4qtQohxAsmAIA0nqJ0FyCEI0aNFAWxoLBAU1aWlpoWExNz+dIVBiFc6/0FABACRFEcMHDgx59+WnW5iTd989VXpSUlCDH5eflZWVm8yTRx/HgpuIcAFpcU63S6e/fudu/ZY9To0YIgFBQUaDWa1NTUmFsxV69eZR4+JFVVe7wJIebmFj516z46R5VKGsGx9mxTbzxLS8sly5YSACp7eTcJDc3Lz9u3d++Q4cPqVnlmKKpGNKp7FaWnpV29cqVtu3av2t+wVKJT9XsxOSlp6ZI/T506WVpSamNj41OnDsdxRlEEABj0epPJJBVyVFKpVFKV4rOAABgMBpPJZGFpUbUJlFwuVygVOr1O+ifDMhz3KEtVK/syMzP//OOPUydO5uXlWVlb+fr6wcoxoGqVkJCw9I8lZ86clkp96tSpw3EcqfJrzbAM8+g6EAABAYAAYtDreZ63sHzUoB5CqLJU1Z6oiEUra6vmLVqePnkyPy8vIyMjNyenfYf2LMc++JqHUKfXC6KoslJV3dHMzJxlWb1eX1FRwQuPpYsQktKVyp+MRpOdrR1iWfBwoGk3NzcvLy+fh/ETQoitchkBAQzLPFY2AAEB5MmIvMpZYBsbm+bNm1+8eKGwsDApMbGgsKBt+3Ysy0o7QQB5nq+oKFcqlZxMVllQoVZb9e7Tp1FICCEEEKmD6qMRXuDTqq4BSE1N/fP3P86cPl1YWGhja+Pr68cwz3R/AQBS2Ort4111IcZYqVSWFBdDCAwGvcloNDMzY9lHxSoODo4D33mnrq8vACA5OXnp73+cOXOmqKjI1ta2rp8vwzAC/0yRGcMg9rFWfQQAUMu1pf4jWJb1fXzUHjMzs1atWl+9fCXj/v1X7ReBegXRqO5VFBUVpdFq23Vo/4oPPa/RaGZM++Fm9M1Pxn3Wtl1bKytrtVo9+8dZ586cJYRYWFiYKc2k9m2PdinTYPysP12EEAtLS4VSWVRUxPN8ZSmUtrxco9HaWNc2Ki+CSBCEOT//cjw8/IMPP+z2Vjcra2tbW9tFvy3YtXNn7emWlJRM/37qvXv3Ph33Was2baysrFQq1YxpP0RcuwZqH7SPAAsLC6VSWfWsCSFlGs2zjPbXsWPYrh07rkdcT05OsrGzbdiw4aM+yIRYWlrKZLL8vMeuZ0lxsdFoVFup1Wq1Qv5kumWEEAKIQqlkWTYoOHjugt8qY1OBF/R6nZm5ubT132bvGYV16rhv794bEdfv3Lnt4OAYFBzMPwx0CCEymUypVKpU6jnz51UWOhKMy8vLpWkYpKLEZ8lORUXFjzNmXr1y5eNPPg3rFKa2srK1tf1xxsxTJ08+Y1afLFTjeV66U4QApZkZy7L+AQELFi+qHI5HFMWKigpzM3Ntefms6TNuXL/+8aefdugYZqVW29jaTp/2w/lz554xdYp6Uklxye3bMe7u7t4+PlUWE4ggrX6lnsUrHTT8NxFCoqOirK2s6tcP/Lfz8jdysrMjIyPDOnX8dNxnQcHB7h7uIhbv3L4DIRQxdnZx8Q8IuHzpUnZWlrR9YUFBREQEgrDG0hcCQLUoVsTY1tbWz88v8vqN+Pj4yuVnT58uLSkJbtjw4X41QAwqyC+4HnG9RcuWX339dcNGjTw9PVmWvXf3LiGE1FpDl5WZFRUV1aVr17GffBIUFOTu7m4yme7evQshxLWGG5hgVzc3v3r1Ll24mJebJy3Mzc2NvH4dQvT0IqcHgoKDPb289uzefe7s2TZt2lqqVJWxICHEzd3dx9v7wrlzeQ8HOiGEnDp1ShCEwMBADw9PX1/fCxcu5OfnS2uzs7Mjb0RKc5O4uLj4+ta9euVKeloa+9DOHds//fjj2zG3/yZb/0/BDRu6e7jv2rXzwvkLbdu1lToHPLg+GFtYWgYHB8fHxUVev1GZk8uXL3/04Yfhx46BWkvmAAAQAkIIhAgAkJOdExUZFdax4xcTxwcFB3t4eGBRjI2NBYAQ8jc1sH9LxNjBwcHXz+/atatJSUmVWT1y6PCY996Ljo7Ky82Njo7u1Lnz5+O/CAoKcvfwEAQh/kHq1R8SCAAh5BX/SKNeBfHxce+PGr1s6dLKJSaevx5x3c7OvuqwRxT1NPQt88qpqKhIS0l1dHJycHD4t/PyN6ytrV3c3CIiIo6Hh6empp45fXrS+PHJyckAQpPRKJfLR44aWVxcPHnCxPPnzl+9cnXK19/ExsYyj39xSj+AZuZmoiCEh4dfvHARP6wiJBizLDty9Cie57+aNOnIoUN379z5Y/HvixcubNmqVcfOnWrJG8FEpVK5e7jfunlzz57daamply5cnPD5F7du3YIACLxQy742NjYuLi5Xrlw5eeJkamrqqZMnJ0+YmJ6aCv5uRyxiMzOzkaNH5ebmTJ448eKFi1cuX57y9TeJCQks+/cjiFrb2LRt2/bC+fMZ9zOkzh+VRFFUq9UjR4/OzMwcP+6LM6dP346JmT1r1uaNG7t269aseXOlmXLk6JHZmVlfTpx46eKlSxcvTfn6m+SkJIZhsYgtLCxGjhpdWlr6xWfjjh4+HBcbu3zp0l9++tlkMnlUaR34XNjb27dq3frcmbM5Odnt2j92FlJkM2jIEFs7uynffrNl06aEuPhdO3ZO+fqb7MwsqXap9lpIM3MzhkEXzp8/dfIUy7Ju7m4R164dOngoLTX17Jkz4z//IjEhgZDq4yz+LzDmOG7k6FG8iZ88YcKB/fvjYmPXrVk7c/p0vU7v7u5uY23j4uJy7erVI4ePpKamnjl1esLnXyQnJxNMnnxIzMzNCSHhR49dunhJFMVXp1c79aoJCg5u1br1wf0Hdu3cWVhQkJOd8/vChZcuXnxn0DtPToVCUU+iJbqvHK1Wm5Ob6+7ubi5Vjf1LREGQ5oavulCaxL2yKMLB0XHKd98tmD//ow/GMCzj5ODYvVevoODgVStWJiUl1fX1fat7d5OJX/rnn6PefRdB2KJVq/bt2yclJkq1bFWP1qBBg9Zt2uzdvfvKpUv7Dx8CgFSuate+/YJFi5YtXfrFuM9NRqO9g0P3Hj0//Xyck5MTAEAUxapZqlwiiIK5hfnkr76a88svX036EgBiZ2fX7a23vpgwYd6cOUlJiU2ahj65r8TF1WXK1KkL5s//YPRojuMcHR179ekTFBS0bu3alJRkL2+vateh2rn07NXLZDKtWLZ8xLChDGJatW7dpm3bjMwMUlPVM8bYZDRWNv9v3ab1mtWrvX18/AP8nzzywEHvIIRWr1o5ZvR7vCC4ubt9MOaDD8eOVSqVAIDeffuaeH7lsuXDhwxhWbZ1mzat27TJycmRrnbvvn0ABKtWrPz8s3F6vd7W1rZTly4TJ02UPh6kS1H1dtd+jtWfFlF8/Czarl+7vm5dX2lcNwCAwPOV+4Y0brxg0cLfFy/+ceYsTVmZhUrVpEmTLyZMDAoOrjEnVZe4u3t07tJly+YtUZGRG7ds/m7q1J9//PHzTz+FEDo6Or7ds0ejkJDFCxempKQE1K9fS4YxxiaTqcbgj6+S1U6dOy/8ffHyP5dNmjBRr9Op1eq27dpNnDzJ1c0NAPD1t9/Mnzvvs48/RhA6Ojl179mjUUjIH4sXpaam1POvVzX1ev71wjp23L9v36ULF46fOQ0AqOUcqf8OQki159Dc3Py7ad9Pn/bDVxMnuXt46PWG4uKid0eM+HDsWFrWSz0L+Fwm96SeI57n09PTFXK5q5vbi/im37NrF2KYvv361b5ZXl5eSXGxu4dH1eAyNydHo9V6eXlVneKmqKioqLCQEKJSqZxdXPQ6XXr6fXsH+8qhJYqLiouKCiGEjk5OJpOppLjYy9ubZdnc3FyNRuPp6Sl1Fy0rK8vNyYEQenp5lWu1hYWFXl5e8oeDaGg0mvz8fFEQzM3NnV1cKjtPFBQUFBcVeXh6SpFN5RIvb2/psKUlpQUF+aIoWlhaurq68ryQkpxka2tr7+CQn59fWlLi6eUlr2lqssLCwqKiIkCISq12dnbWVVTcv3/f0dHR2sYmJyenXKv1rHIdnlxSVFRUVFSEIHJycjIYDaWlpV5eXk+2jCktLc3JznZxdZUGvzAZjWnp6Rbm5i6urgAAQkhWZqbBYPD08qps2lVcVFRUXIwxVqlUT44+X1RYWFRcjBBycnLS6/WasjLPKumWlpYWFhYKPK9Umjm7OFfNbWFBgdvDbwlCSE52jk5XUZkuISQnO1un01XNyaOzKCnJyclxdXNTqVQAAKPRmJ6WZmlpKfVcJoRkZmQaTcaqV0Cnq8jLzTMajTKZzMHRycLCvEpOCt3c3SofvGpLKioqsv+vvfsOjKJMGDD+zmzLpvdeCITekSYqiCg2sPd6ylmwYrk7C/Y7ez8LYMWOBbsICCJdpfcQ0hPSezbbZub9/lgEDr07P+UIvjy/v5LZ2dl3C+HZqZWVpmlmZmZGRkU1NjbW19Vb0oqOjk5PT/f5fMVFRckpKQkJCaGPa25u7s8H7PF4ysvL4+Li9rlahpSyrLQ0GAyGPqKhia0trXV1tcGg4QpzpaWlhe11YpfQh9+SMvToXq+3pLg4JSUlPiEh9JHI7do1tJyWlpbq6mohRbe8bi3NLQ0N9ZlZWbv3LGyor69vaMjKzAzv1O9y/yMzpk3v26/vEf/m/NWHMtM0i4uLw8LCMjIy9v5r39LSsmb16m1bt4W5XIOGDO7Xr5/jX68qBvw7VN0h51dWHQDsF1QdcMCwRhcAAEAFVB0AAIAKqDoAAAAVUHUAAAAqoOoAAABUQNUBAACogLMQ4xd0dHSsXLFy0bcLKysqnE5Xr969jjt+fO/efTrlnPiGYcz9+mspxYSJE37nojwej8vlstvthhH8es7XmqadPOH3LhMAgIME6+qwr5Li4muvnnzpRRd98fkXjY1NFRUVLz7/whmnnPb4I492eDwHfjx+v3/6i9Om7XVhxN/mm3nz7/jb30IXUfV5/dNeeHH6i9P2xwABADgosK4O/2Lnzp1/+8tf1q1de9Ott5x19tkxMTGWZVVUVDz3zLMvPPdc0DBu/etfnAf2LOdut/vvDz4ofvfpsr/68svVq1brdrsQwh3ufvDhh/7zheQBAPhjoeqwh5TyrTfe/OGHH+6+557LJk3aPT0uLu6xJ58IBAMzX3vtiCNGjRk7NhAIVFZUJCYluVyu2pqaxKSk3ZdRam5ubm5uTktNc4W5ysvLnQ5nSuqeizIZhrFz504jGExMSgpdXSr0uJWVFQ6HKyUl2ePx1NTUxCckxMbEhG7VNC0lNSVUde1t7Turdu59/XdN1zQhkpKTY36a3+fzVVdVSSlTUlNDV2SSUlZWVLa1tUkpC/K3Ox2O+Pj4lJTUfaLOsqzKykpN0zLSMzRd23uiy+VKTk5ub2+vra1NTEiI/umxAAA4eFB12KO+rn7u11/36dP3zLPO2uem6OjoyydNWrp4yVdffjVm7Njq6uobrr1u1JFH5G/dtnXr1iGHHfbwo4/quvbC889/+fkXpmXFxcWde9558+bN7Z6Xd/d99wkhOjyet956a/aHH3k8HtM0HHbH+BOOv/qaaxISEnw+3wP33h8bG9uzV69Z773X1tZqtzsmTJx49TWTo6OjfT7fPVPvsixrxisvr1696q477rSk1IQQmrDb7EHDCAYCU++9e+LEU5oaG19+6eX5c+d6fV7DMMPd7lNOO+2qyVdrmvbk448vX7bMMM3b//rXSy770yWXXnr31Kmapk17aYYQIhgMfv7ZZ6+/9npjfb0UMiUlddIVfz7hxBNtNpu3w3v/PfcmJSV17db1g1nvt7W3OeyOU0479aqrr46Mijrw7xEAAP8OVYc9SkqKy8vKzj7nnF9cF9Wnb9/snJwNGzZ4PB7Lsqprqt+a+cb4E0+YfN218fHxDqf9vnvu/ej9D88856xBgwbn5+c/+8zTDfUNKckpQgjTNJ995tmXpk8/7fTThw0fbprGtwsXvvj8C+Hu8JtuvUVK2dzcvGTx4vXr10885ZT4hPhv5s9/7tlnY2Njr7z6KillfX29ZVlCiO49etx06y2h8ei6XlFe/uLzL2RkZPTp09fv9//9gQc+++TT8y44f8CAAV6v9/PPPnvmqacSk5IuvOjCCy++qLqqqrCo6Lobbxg2bJhlWvX19aGDP6SUr738yqOPPDJ02NCzJl8tpfz8k0+nXH/DPffde9Ell0gpmxobly1dmtOlyymnnRYXFztv3rxnnno6Ljbu8iv+fADfHAAA/guqDns01DcE/IHUtLRfvDU8PDw5ObmkpKSttVXTNCFFl65d73vggdCG1JUrVnz2yaeX/OnSu+69W9N0IURGRvr9996n67oQoqWlZd3atSdPmPDI44/Z7XYhxIknn1y4o3Dt2rWWZWlCaJomNG3q3VOPPGq0EGLMmDH5W7etXL78yquvEkLYbLZQgaWnp59+xhmh8XR0dNx845SoqKj7//H3bt26FRUW7SjYcfGll9597z2hGQ4/4ogLzzt/3dq1519w/mFDh2ZkZlZVVY079tjk5GRPu0fX9dDYSkpKXn31lcOGDn1h+vT4+HghxPEnnHD1FVe+NGPGuOOOjY2J1TRNt9nuvvfuw0cdIYQ48qij8rduXbFiBVUHADiocAws9rAsSwoZqq6f0zTNputCSimEJoQlrV69eu7eN27lihU2m+2kCRNCSSeEOOHEk9LS06SUQoj4+PhXZ77+2JNP2O12KWVFefmqH1cZphkIBEzTFJpmWVZ2dvagQYND942Lj09JS/V0/NtDbv1+/z8eeGDhggV/+dvfRowcKYTI7Zr7zqz3br/zDiGEYRglJSUb1q+3TNMIBkPr+SzLklIGAoF9FrVl8+bamtpTTj0llHRCiNTU1AkTJ9RU12zetNlmt1uWlduly8CBg0K3xickJKekdPz7sQEA0ClYV4c94uLjnE5nfX3dL97q8/nqGxqio6MjIyMbGhqEEHvvWFZTXR0eHh4bu2fTbVR0VGxsXKiohBB+n+/jjz9eMG9+TW2NYZimadZUV2dnZ++aW4rIiAi7w/HTr9Km2/7dOKWUr8yY8cGs96+57rpTTz8tNFHTtNbW1g9mvb9s6dL6ujrLsoLBYFNTU2iF3H/QWN+g63pKaureE5OTk3Vdb25uDq0jDI8It+2OXSltNvvvPSIXAID9jarDHrm5uenp6WtWr+no6AgdPbq3osLC0pKS8cePj4qKqq+v3+dWu8NhGEYgENw9xTTNYHDXr83NzVNuuHHlihVjjh5z4tCTc3Kys3Ny7r/3PsMw9iziV59m5JOPP37qyacmnDJx8jWTbbZd8VdWVnbjdddtz98+9pixo44YldOlS0JCwtTb7/iXh/glTpfLsiyfz7f3RK/PJ6V0OV2/dkwAAHQ2qg57pKSkHDd+/OuvvfbJxx9fcOGFe9/k8/nfnPmGYRgnnHjSL963d58+7779zvbt2/v07ROaUlJcXFNdHVpV9uMPP3z37beTr7v21r/8JbTSq7a2trmpKSIi4v87yGVLl/7jgb8PHjLkr7fd5vrpdCpCiEULF25Yv+HOqVMv+/Ok0Aq2LZs3t7W17X1fTdN2V+BuuV1zHQ7HmtVrJkycuHviurXrHA5Hdpcc0zT/vyMEAKBTsF8d9tB0/ZI/XdqzV69/3P/AKy+91NraGppeWlJy99Q7Z3/00Wmnnz5m7NFCCCH23QI55uijs7Kzpz3//Ib164UQOwoKnnnq6d1bMHVNF0K0NLeYliWEKCste+LRx0pKSoQQuzfR/hrb8/PvvnNqYmLi408+kfavR3VommZZVktLc2hPvu3btz/x2OM1NTVCCGlJIYTd4WhpadlRsMPn9e29XrBvv36Hjxo16733Pnj/fb/P5/N633nrrY8/+mjkqFG9evUyDaoOAPDHwLo6/IvsnJxHHn/s3rvueuShh2a+PjMzKysY8BcXFbe3t51z7rm333lnaMusZVkdHR17H3mQkZFxx513PnDffZdcdHF8fHwwEEhMSkxMTBSaJoQ4bNjQE08++ePZs1esWB4REeHz+tIyMoYNH15eVtbS3BwdHePz+Sxrr02lUvp8Pv2nUwH7fD5pWUKI1155de2aNTldulx95VV+vz90azAYnDBhwkWXXvL1nK9nTJ/+5ZdfhrnDvR5PXvfuPXp0Ly0pafe0xznj+vfv99EH718xadJFF198/Y03+P3+UHFGRETcMfXOe+66+7577nn+2X8KIZqamkaMHPG3229zuVyBQMDn9dpNx15Dkz6vl8tSAAAONlQd9tWvX79XZ878+quvli5ZWltb63S6TjjxxOPGjz9q9Gjdtmvlbnx8/LXXX9+rV6+973jc8eO79+zxzfz5TQ2Ned279+jZ47JL/xTmcgkhYmNjH33i8QXffLM9P9/hcPbt13f0mDHr1q794fvvTdN0OB3nX3iBlNbuw28dTuf5F14Qqi6Hw3HeBeeHVg4eNXp0XHycpmlGcE8CGqbZu0+f9PT0Z59/bv7cuWVl5WFhYQMHDTxq9Ohv5s0rKiwKFeGZZ58dERGxbdu2Hj172u328y+8YPcSevTs+dKrryxcsGBHwQ6brvXp22/00WNcLpcQwuV0XXDxxbpN373p1uVyXXjxxXYH/3YAAAcXTf7uy2vij2X2hx/qNttpp5/+X+eUUno8Hl3Xf37kxM9t3LDx6zlzzrvg/KysrNCUH3/88eLzL5hy801XX3PN7x00gD+sGdOm9+3X94gjj+zsgQDqY30D/i1N0yIjI3/lzIYRfGn69B07dtx2x+2pqalFRUX/fOppt9sdOpkcAAD4X6PqsH/0HzDguuuvn/n6zAvOOTcsLKzD49Ht9r/dftuAgQM7e2gAABwSqDrsH3a7/YabpowdN27Vjz+2t7clJCSOHHV4165dO3tcAAAcKqg67E/9B/TvP6B/Z48CAIBDEeerAwAAUAFVd8jRNC10xhAAODD4mwMcGGyB/b2klO3t7eIPcoIYm81mGIYupae9/f91UQcA+A1sNpsQMuD3t7e3S/7mYD9xhYU5nc7OHsXBiPPV/V5tbW1nnHqqx+PR/ghXG5BCREVFBYNBn9fLt2cAB0BMbEx7WzuXVMb+Ykl5619uPfPsszt7IAcj1tX9Xna7/eixx/j9/j9EI9l0W01tjWVZKSmpUvK9GcD/lq7bKisrXE5XQmIif3OwX0gps7KzO3sUBynW1R1yPvv0U5vNdvKECZ09EACHhFdffqX/gP7Dhg/v7IEA6mNd3SHHCAbZow7AAWMYRiAQ6OxRAIcEjoEFAABQAVUHAACgAqoOAABABVQdAACACqg6AAAAFXAMLHaxLKu8rKy9vf0Xz04spUxNS0tISNiPj9jW1lZRXiGlzMrOioqK2o9LBoADqbqquqW1JS42Ljkl+XcuqqKiwuf1ZWRmuN3un99aW1vb1NgUHROdlpb281sNwygvL9eElp2TreustTkUUXXYxev1PvzgQ99//73DHvpUaEITu6+EZpjmlJumXHzppf91IfPmzk1KShp1xBH/9RHXrl499Y47DcN47MknjjjyyN/7BADggNu4YcOLz7+wadOmYCDgdLmGDht2zXXXdOuW5/V6773r7i1btthttr3nNwzjuPHH3XDTTT9f1Lo1a194/oUtWzabhpGUnHzueeeee/55drsjdOv27dunv/Di6tWrfF6/y+Xs07fvtTdc369fv9Ctpml+9eVXM197tWpnlRCiW17elJtvGnLYYf/jZ4+DDlWHXSzLqq+vr6yocDgcmqbZbDZN0yzLCl3nxzCMtvb2/7yE2pra++6554svPn/o4Yd/TdX5/f7a2lrDMPx+//55DgBwAG3ZvOWGa6/Lz88P/aoJsaOgYMf27dNffjk2NmbTpo3fr/zeEcoyTei6brPZ/H5/btdcKeU+W0U2b9x04/XXFxQUSCk1IcrKyjZv2tTW3n7lVVfrulZRUXHTDTeuW7t294UDCgoKduzY8fyLL/To2VMI8fabbz3497+3trSGLl1ZVFRUU139wozp3bp1O4CvBzofVYddIiIiHnvyCU97u6Zp1dXV99x1d3FR0UknnTTllpuFEFLKlNTU0JyBQLC1tUVKGRERER4eHpoopSwqKly6ZImQQkppBA2b3Rb6s2UEjZbWFtMwbXZbdHS0w7Hrq2eoHX/+1w0A/hBmf/Rhfn5+UlLS5GuvGXn4qA8/+GDWu++uW7fum/nzz7vg/GHDhkdHRdvsdiGETdera2oKtm+PjIwce8wx+/zRMwzj3XfeKSwszMnp8pfb/hoXF/fPZ5798Ycf3nrjzaPHju3Vq9dnn366cf36iIiIq6+ZfOxx47/64ovXX3tte37+11/N6dGzZ0lxyUszZrS3t48cdfiUm28uLip8+MGHN27YOH/e3G6Tr+mk1wadg6rDLrqud+nSJfRzXHy8y+WyLCsuPr5P3757z/btggWzZr2fv3WrYRg5XbpMPPWUU087LSwsbNPGjf989tlAIGCz2d57993NmzZfd+MN6enpa1atfu3VV7du2dLe3h4RGdGnT9+LLrlkxMgRnfAMAWD/CRpGY0NjfHz84aNGXXHllTa7PTExYdG3C0uKSyorK+x2+70P3L975vZ2z0033LBt69Y/XX75qaefvs+iWlpatmzZYlnWccePP+PMM4UQNt02+eqrKisqf/zhh549ezY2NMbGxfXu0/vqyZPDIyLSM9KXLFmyZvXq6upqIcTyZUt3VlZGREbceNOU0WNGjx4z2u0Or62tHTyYLbCHHKoOvyAYDIbW8+99bTEp5ZszZz72yKMN9fWJSUkOh+O7RYtWLF+2ZfOWu+65u7a29oeV31uWpev6xg0b62rrJl1xxbatW2++6aatW7YkJSdFRERWVlRu3bJ1y+Ytr858PadLTuc9PwD4vew22x1Tp14/5cbw8PDQCrm2tvaAP6DremZm1j4zvzlz5tdz5ow4/PDLJl3+8+MYTNM0jKAQwvnTpoz4hHh3mLuluaWosEgIcc1111548UUul8sdHi6E8Hg8HR0dNpstPSNdCFGwvSDg92dlZaWmpq1bt87j8Rx73HHxCfH/4xcAByOOkcGvtXXL1mefeba5ufnY8eNfe+ON9z784PJJk0zLevvNNz/79NPBgwff/JdbIyMjTdO86OKLH3r0kdS01LVr13m93pGHH/7yq69++fWce+67NyoqKrS/SGc/GwD4XTRNS0xKzM3NTUlJEUL4fN4335hZVVXVtWvXI0cftfechTt2vP3mmy6Xa9KfJyUlJf18UVFRUSkpaUKIpUuWrFu7rqGh4csvvmhubtY0ramp0bKs+Pj43Nzc9PT00O7Os955t3DHjqysrKPHjrUsq6GhXghhmObdU6eeNmHiuWeedfIJJ7z79tuhvaJxSGFdHX6tBd98U1NdnZycfNMtNw8eMkQIcePNN61Zs3r1qtVffzXn1NNOGz169CszXrKkNWjwoLHHHCOEmDhx4rhxxwSDhtsdVlVdXVVVpWmaFGa7578ceAEAfyABf+CpJ5587533IiMjJ197bU7Onm0RUsqPP/qotKRkzNixo8eM+cW7u93ukyactGTxd1u3br3qiisiIiLKy8osy9I0bfeWkxDTNGZMm/7yyy/b7fbLJk3q27evPxAIBIKarlft3LmzsjI1NdXr81ZUVDz0jwfjExKOP+GE//mTx8GEqsOvIqUsLNxhWVZqWlq3vLzQxLi4uN59+qz6cVVFRUVLc8vu74WGYYR+iIgI//777z/9+OM1q1eXlZaaluVyuWz/epw/APyhtbW1Pf7Io6+/+qrT5brl1lvPPvecvW+trKycN2+e3eE46eSTIyIi/t1CJp5ySnVV9Yxp08pKSm02fdCQIY2NjWWlpS6na/ehFYFA4Jmnnn7x+eeE0K6ePPmySZdruq5pmn3X6ajEZZdf/qfLLysuLr7vnnu3btnyyeyPxx177O5bcSjgzcavIqUMfV/U//XQLV3XQ79b0vr5XWa99979997X2tqamZk5/oTjU1LTPvvkE5/PZ+P0mACU0OHx/OOBB959++2Y2Nhb//bXCy+6aJ/d5tasWr2jYEdmVtbQYcP+w3Lsdvvka685eeKEjRs2xMbGhodH3HrTTVLK+Pj40Ddhv9//9BNPTJs23WF3TLnppj9fdWXofAIOhyM6OlpKGRMTc94F52dlZ2dlZx951FH527ZVlJf7/X6q7pDCm41fRdf1tLR0TdPq6upqqqujo6OFEB0dHUWFRULTUlJSoqOjK8ords8shPB6vR/P/ripqenY4457/KknU1JStm3d9vknnwghNKoOwB+fz+9/8vEn3n3r7dj4+L8/9ODEiRN/Ps/3K1d6vd687nnZOdn/YVHr1q7dtGlTQkLiyRMmCCG+++67nTt3hoWFdcvrJoSwLGvaCy9Oe3FaRETE326/be8Twuu63iU3x2azBQKBtra2XVOlJaXUbTbOG3Wooerwax01+qg3Xn+9urr6pRkzbrr5ZldY2OwPP1y3dm1YWNjRx4x1Op2aJnRdl5ZsbGxsaW62LOnzenVdt+k20zDr6+s/+uCD1rY2h8PBPrwAFDB3zpy333pL13WX0/nVF1/M+fIrIaRpmieccOLpZ54hhOjwdORv26brel737mFhYXvft3BH4fPPPefzeS++5JLDR41avOi7Rx5+OC4uLhgMZOfkTHvu+bbW1rzu3YcNHy6EWLpkyasvvyKldDqdSxYvXrlipRTSDBpHHT3moosvHjnqiPiE+Pq6+meffvqGKVPq6uoWLVokhOjTt88+DwrlUXX4BVJKwzCCweDe+TV8xIjzL7jwlZdfevvNt5YvXRYeHl5QUBAMBE49/fTTzzhDCBEbGxsREWGa5oxp0+fPm3/PvfcOGzFi9erVixZ9e97ZZ1uWVVdf73a729vba2tqhBBSiGAwaBjG3vsCA8AfgsfjeeuNN5ubm51OZ01NzacffxK6xGIgGMzIyAxVXWNT486qKmlZ2Vn7rqhraGz48ovPOzwdRx999OGjRh17/Pj33n23tLT0usnXCCFM03S73Zde9qe87t19Pt87b79dW1vjcjobGhq+/OJLaVlCCH8gEBkVedHFF/fv1//c88578YUX5s+bv3DBQimlaZrdunU757zzuBrsoYaqwy9wOBw5OTlGMBg6Yn/3xFv+emt2TvYHs2ZVVla2trZmZWdPnDhx0hV/Dm2QzczKOuucc954/fUOr7empiZoBK+46sqa6urly5a1tLRkZGTcdMst69atW/jNNw31DaZpRkZGdsvLM01j9wUqAOCPoq6uTkrZq1cv/WdXet39lzMYCKSlpTmdzoyMjH3u7na78/LyiouKQ7vN9enT59777/vns89WVlQKIVLTUi++5NKzzjlbCNHc1Ozz+nr07LnPHnLBYDAtI0NKqena9TfeGBUV9f57s1paW2w2W15e9yk33zx48OD/3dPHwUljNcmhZvaHH+o222k/O7n5rxcIBEpLSrw+X3ZWVmxc3D63lpeX19fVpaSmpqam6roupSzcUejz+bp260q9AYegGdOm9+3X94gjj+zsgRx0igoLJ/3pstvvvHP8CceHpni93qLCQqFpXbt2dbvd/98FNjU1lZeVhYeH53btytkGDk2sq8P/m9Pp7N6jx7+7NSsrKytrz3nVNU3L6553QMYFAH8YNdXVDz/4UHR0dL/+/XZPdLvdffv1+w/3+s/i4uLifvZNG4cUtrgDAHCg1Tc0OF3Oqffcnf6zjbPAb8a6OgAADrTevXs/+fTTTqezswcCpbCuDgCAA03XdZIO+x1VBwAAoAKqDgAAQAXsV3fIsSxLcA0ZAAeKZVmcQgs4MKi6Q05MbCxnGwdwwCQkJERERHT2KIBDAmchPuR4vV5N07g4IIADo6PDY7c7ODIAOACoOgAAABWwJQ4AAEAFVB0AAIAKqDoAAAAVUHUAAAAqoOoAAABUQNUBAACogKoDAABQAVUHAACgAqoOAABABVQdAACACqg6AAAAFVB1AAAAKqDqAAAAVEDVAQAAqICqAwAAUAFVBwAAoAKqDgAAQAVUHQAAgAqoOgAAABVQdQAAACqg6gAAAFRA1QEAAKiAqgMAAFABVQcAAKACqg4AAEAFVB0AAIAKqDoAAAAVUHUAAAAqoOoAAABUQNUBAACogKoDAABQAVUHAACgAqoOAABABVQdAACACqg6AAAAFVB1AAAAKqDqAAAAVEDVAQAAqICqAwAAUAFVBwAAoAKqDgAAQAVUHQAAgAqoOgAAABVQdQAAACqg6gAAAFRA1QEAAKiAqgMAAFABVQcAAKACqg4AAEAFVB0AAIAKqDoAAAAVUHUAAAAqoOoAAABUQNUBAACogKoDAABQAVUHAACgAqoOAABABVQdAACACqg6AAAAFVB1AAAAKqDqAAAAVEDVAQAAqICqAwAAUAFVBwAAoAKqDgAAQAVUHQAAgAqoOgAAABVQdQAAACqg6gAAAFRA1QEAAKiAqgMAAFABVQcAAKACqg4AAEAFVB0AAIAKqDoAAAAVUHUAAAAqoOoAAABUQNUBAACogKoDAABQAVUHAACgAqoOAABABVQdAACACqg6AAAAFVB1AAAAKqDqAAAAVEDVAQAAqICqAwAAUAFVBwAAoAKqDgAAQAVUHQAAgAqoOgAAABVQdQAAACqg6gAAAFRA1QEAAKiAqgMAAFABVQcAAKACqg4AAEAFVB0AAIAKqDoAAAAVUHUAAAAqoOoAAABUQNUBAACogKoDAABQAVUHAACgAqoOAABABVQdAACACqg6AAAAFVB1AAAAKqDqAAAAVEDVAQAAqICqAwAAUAFVBwAAoAKqDgAAQAVUHQAAgAqoOgAAABVQdQAAACqg6gAAAFRA1QEAAKiAqgMAAFABVQcAAKACqg4AAEAFVB0AAIAKqDoAAAAVUHUAAAAqoOoAAABUQNUBAACogKoDAABQAVUHAACgAqoOAABABVQdAACACqg6AAAAFVB1AAAAKqDqAAAAVEDVAQAAqICqAwAAUAFVBwAAoAKqDgAAQAVUHQAAgAqoOgAAABVQdQAAACqg6gAAAFRA1QEAAKiAqgMAAFABVQcAAKACqg4AAEAFVB0AAIAKqDoAAAAVUHUAAAAqoOoAAABUQNUBAACogKoDAABQAVUHAACgAqoOAABABVQdAACACqg6AAAAFVB1AAAAKqDqAAAAVEDVAQAAqICqAwAAUAFVBwAAoAKqDgAAQAVUHQAAgAqoOgAAABVQdQAAACqg6gAAAFRA1QEAAKiAqgMAAFABVQcAAKACqg4AAEAFVB0AAIAKqDoAAAAVUHUAAAAqoOoAAABUQNUBAACogKoDAABQAVUHAACgAqoOAABABVQdAACACqg6AAAAFVB1AAAAKqDqAAAAVEDVAQAAqICqAwAAUAFVBwAAoAKqDgAAQAVUHQAAgAqoOgAAABVQdQAAACqg6gAAAFRA1QEAAKiAqgMAAFABVQcAAKACqg4AAEAFVB0AAIAKqDoAAAAVUHUAAAAqoOoAAABUQNUBAACogKoDAABQAVUHAACgAqoOAABABVQdAACACqg6AAAAFVB1AAAAKqDqAAAAVEDVAQAAqICqAwAAUAFVBwAAoAKqDgAAQAVUHQAAgAqoOgAAABVQdQAAACqg6gAAAFRA1QEAAKiAqgMAAFABVQcAAKACqg4AAEAFVB0AAIAKqDoAAAAVUHUAAAAqoOoAAABUQNUBAACogKoDAABQAVUHAACgAqoOAABABVQdAACACqg6AAAAFVB1AAAAKqDqAAAAVEDVAQAAqICqAwAAUAFVBwAAoAKqDgAAQAVUHQAAgAqoOgAAABVQdQAAACqg6gAAAFRA1QEAAKiAqgMAAFABVQcAAKACqg4AAEAFVB0AAIAKqDoAAAAVUHUAAAAqoOoAAABUQNUBAACogKoDAABQAVUHAACgAqoOAABABVQdAACACqg6AAAAFVB1AAAAKqDqAAAAVEDVAQAAqICqAwAAUAFVBwAAoAKqDgAAQAVUHQAAgAqoOgAAABVQdQAAACqg6gAAAFRA1QEAAKiAqgMAAFABVQcAAKACqg4AAEAFVB0AAIAKqDoAAAAVUHUAAAAqoOoAAABUQNUBAACogKoDAABQAVUHAACgAqoOAABABVQdAACACqg6AAAAFVB1AAAAKqDqAAAAVEDVAQAAqICqAwAAUAFVBwAAoAKqDgAAQAVUHQAAgAqoOgAAABVQdQAAACqg6gAAAFRA1QEAAKiAqgMAAFABVQcAAKACqg4AAEAFVB0AAIAKqDoAAAAVUHUAAAAqoOoAAABUQNUBAACogKoDAABQAVUHAACgAqoOAABABVQdAACACqg6AAAAFVB1AAAAKqDqAAAAVEDVAQAAqICqAwAAUAFVBwAAoAKqDgAAQAVUHQAAgAqoOgAAABVQdQAAACqg6gAAAFRA1QEAAKiAqgMAAFABVQcAAKACqg4AAEAFVB0AAIAKqDoAAAAVUHUAAAAqoOoAAABUQNUBAACogKoDAABQAVUHAACgAqoOAABABVQdAACACqg6AAAAFVB1AAAAKqDqAAAAVEDVAQAAqICqAwAAUAFVBwAAoAKqDgAAQAX2zh7AH55lWRWVOy3L6uyB4Fex22zp6Wm6zvcZAIBqqLrfS0rZ2tpqmpbQOnso+K+kcDjsaTK1s8cBAMD+p0kpO3sMAAAA+L3YDgUAAKACqg4AAEAFVB0AAIAKqDoAAAAVUHUAAAAqoOoAAABUQNUBAACogKoDAABQAVUHAACgAqoOAABABVQdAACACqg6AAAAFVB1AAAAKqDqAAAAVEDVAQAAqICqAwAAUAFVBwAAoAKq7pAmhejwG5aUQgh/0AwaVmeP6KAQCJoBwzxgD9fhNyxLHrCH24dpSW/A6KxHBwDsR/bOHoBSvvryS7vdPv7444UQXq/3g/ffr6muDt009phxQ4cN/Q3LbGzzTft689lHdOueHrt7omnKbZVN2UlRUW5HSU2bTRdZSVG/YeGFVS0fLNsx5ZSBNl1/7ouNxw7KHJib+BuWc/Br8wamf715/ODsAV0SQlNaOwLT524+YUhO/5z4veeUUr40b0v39JgtZU3jBmb2/2n+Fk9gxtzNJw7N6Zcdv+/Sf4eKhvaZC7ZNPrF/fJTrty2hsqE9ELRyU6N/5fymJfMrmjISImIiXEKIuWvK6lq9lx7T6/MfitcX12uaZlqyf5eE00d2bfb4311c0NDm04TQNW3C8C79cxIqGtrfXrS9rK4tPT7iwqN7dkne88Fbsrnqh4Kaa07q53byhwUAOgHr6vabzz/77O47pxZs3x76tbys7K2ZbzQ2NhpBIxgIWtZvXPfjDZgL11c0tvn3nphf2XTXW9+3ewNSir/PWvVDQe1vW/iqHXUeXzDMaa9q9GwsbUiOcf+25Rz8fEFz0cbK6kbP7in+oLloY2Vtc8c+c9a2eNcW1Ue5Hd9urKhu3HOr3zAXbfqF+X+njSUN9a3+SLfjt91dCvHQh2uWbq369XcprW27/c2VTe1+IYRlyaVbqiLDHL6g+fqCbTuqWg3TChqWaUohxLaK5jcWbmvzBoOGFTQtKUWLx3/zy8vK69qOGZBZ09xxyyvLapq9ocXubPRMfWvlgvUVhskaXwDoHHyl3g9Mw3hpxoxFixYlJiXZHbv+ey4uLs7t2vX+v//d4fiN/2GHaJpwOWxVTR3vLi6wLOv4IdlxkWHz15UX17bOXlGUlRiZX9lkt2m9M+OaPQGbTatr8da1eo/un5GbHC2EqGr0fLdpZ5s3OKxH8qDcRCnEptIGp03vmRknpdxW3jgwN1ETYmtFU3JM2MbShp2NHYflJbV4/PPWlo/omZqdFFlc07pqR62UYky/9JTY8G0VTVvKG088LMfttC/bUlXR0B4d7jx+SLYmxPx1FZFhjlG9Uzv8xvy1ZSN7paXEuoUQ+ZXNlQ3t0W7n6sK6bqkxo/ulOe02IUTBzualW6ocdv2YAZnp8RFCCNOSy7dWby5r6JISfcyAjNBsu60vrv+hoLZ7WowmRKTbcVhesmlai7fs3FbR3CUlatyATE2Iz38oGdw1KbTian1xfXVTx/jBWZqmaUI47Tabrgkhlmypamj1Ds1LdjvstS3eD5YVev3GuIGZGQkRQohtFU3R4Y6c5Gibrttsu+f3Dc1LCts9f8AYNzAzIz6itK5te0VzXJRrTWFdz4y4ET2Sl2ypLq5pPbpfeo+MWCGEx28sXF9eUe8ZnJc0okeKJsTybVWGISsaPBkJEWP6pW8oaejfJd5p19u9gYUbKnc2eg7LSx7WPVkI0dIRWLi+orq5Y0i3pOE/3ddhszV7/MXVrSN6pgzMTfxxe/XGkoY2b3BQ16T+OfGldW0L11fouj62f0Z2UmSH3/huU2V2YtSG0gbTtI4bnJUU4563tqy4pvWDZYVXHt/XsKzalo6BuYnVTR4hxL0XDN973duOqubBuUmPXHr47imrCmp0TUw9d1hqXPjovunnPDJ3S1ljSmxG0LSmz9nkdtpjwp2y0zYmA8ChjqrbD0zL6t2nz6mnn/70k0+axq5dlIoKi+rq6x7+x4Nt7W3HjBt33PjxNpvtPy/nF2ma1u4Lvjhn44juKfk7m79cVfr0FUdKIaQUQdMyTMuSwrQs05KfrCxatKlyVK9UoWnvLCp49LLD0+Mjpry0JCUuIjrcOXPhtltPH3zayNxPVxRFR7h6ZsY1tvsrGz3nje4uhFhbWDeoa/K2iuaCypIh3RLXFzfc9saKO84+bNJxfT5eUVRS21bT3KEJcfaRee8tLnh/2Y5+2fFZSVEvz9+SlRi1oaR+YJfEKLfzwQ9WpcdHHN4rZVNpw+sL84f3SAk9hY0lDY98tKZ/TnxqXMSb3+affWTejRMHLFhf8djstf27JAQM88NlhQ9ePLJHZuwD7636saB2SNfEL34s+W5T5T3nDw9z7HrRPlpe+Mzn64f3SFm+pWp1Yd3lx/Xul5Nw37s/bihpGNw1cd7asq9+LL3/whGLN+/cUt449dxhhmVNm7O5e3rs8UOyd72SQths+vx15Y98tOa2s4ZEhjk6AsZL8zaP7JlaVtv20YrCl64bmxzjXldc3yszPtxlF0LYbNq8tWWPzl53+9lDIsIcHf7gS3M3j+yZWlrbNnt54Ws3jiuubv3bzOUDuiSmxYe/+W1+dlJUcoy7zRuYvazw5RvGRrqdt766zBcwclOj58wqPXFozhXj+3z1Y+m8dRVH9E7VtRSPL1hc03rS0Jymdv910xdLS+amRs9asuPKE/oc3T/jppeX2nU9Jznqo2WFp47MnXxi/69WlS3aWDm4a5Kua68t2PbwpYeHu2xSCtO0pJAr86sfeG9Vz8xYIbQPlu6474LhXVKinv18g13X++UkFNW0fPJ98QuTx1hSSikM07KE3LGzJczpyEmOWrp5Z0Or75V5WxrbfUO6JZ1zZPcot6NgZ3NVk+eON1Z4A+bE4V2OGZA5pFvyW7ccZ7fpQoiyunbTskIbjj9eUVTX6jt/TPc5q8t+zz8lAMDvQdXtB06nc8zRRwshTHPXZlYpZX19ndPhHDR4cENDw1OPP9HR0XHGmWf+lqVLYVnyoqN7XDy2V1FN66RnFlQ1dpw4JGfhhsrzR3dPjnF/8n3xSUNz+ndJ8AXMgbmJj19+hN2m3/7Gine+Kzh1RG55g+fWM4YM6568fGtVuMshhLhuwgBN14QQhVWtTruenRTl8QXL6tpPGZHr8QW/3VBR3+rdVtmUGOXOr2j2+IKbyxpPG5Gbv7N5fXH9ycO6lNa1R7kdBTtbAobs8AXPOypvx87mzeWNafERUoqmdn99m29NYV1eWnRKbHjoGVhShjls914wIjspcvqczYs277xkrP/Vb7aMG5h5zUn9TEve+dbKN7/NP+fIvO827Xxy0hFDuiXlVzbNWV3mCxihqmv2+N/5bvukY3tfOq53Y5vv4ie/EUKsKaxbvq3q+avH9M2OL69vv+zpBSu3VR8/JPvleVvbfcG6Fm9pbevVJ/b96XXUbDbt6zVlm0obbjtzyLEDs+pbfZYlzxrV7ZqT+lc2ei5/ZkF+RVN8ZFhRdes5R+ZpmrDZtK9Xl20sbbjtrCHjBmTWt/qkFGeNypt8Ur/KBs9lzyzYVtGka5pN1/9yxuC+2fE3v7K0qtHz2GWj2r3Bi578pqCqpabZW9Pc8eyVR6XHRyzcUPHo7LUnDc2RmuiXE//Un48UQqwvrhdSdE+L+WBZYbs3+PqUcXGRrvlry+rb/LMW77As8eJ1R0e5HQs3VNz/3qrxg7KEEF2So56+4kibrl3xz29X5FffduaQXpmxY/plDMhJuPzZhcO6p9x6+iApxD/eX/X6wq33nj/cMK0zR3X98/i+xdWtVzz/bVld28lDu3zxY+kFY7rHRbjWl9R3TYly2PSa5g5N17qmRg8KT3hp7tayuvap5wxtbPO7nPaRvVKLa1rvfvuHoGEdPyRbF5oQYmej5+GP1ozul943O76gquWLH0ruOOewoupWKUWo+QAABx5Vt99Y1p7diTRNu/Ouu6SUofVz7e1tn3/66QknnhgeHv7/XawUMtLt6JEeJ4QId9ndToffMG26bkkZMKygYVmWDJqWEMJu14fnJof+Tz2sW/KsJQXdUmPGD86+dtp3sRGu8YOzLxjTXQgRG7lrr/x1xXXdUqPDXfZ1RfVSytyUqKAhnQ7b2qKGgp0tp47Mza9oXlVY5/EFh/ZIjo10zZi7eV1xvd2mjRuQtb6kobbFm5UU1Sc7vndW3Nqi+uqmjuE9kutafD8W1G4uaxg7IFPXtV1PQYrMxMjUWLcQIj4qzKaJ2paOinpPXYvvh+01Qog2X3BIt6StFU2JUa689BghRM+MuJ4ZcbtfhOqmjnZvcGj3lNASBuYmakIrrG7JSIjolhYjhMhMjOyeEbutouny4/q8PG/r2sK6srq2jISInpm7FqJrot0b/HBZYXJceGZSpBBCSul22ntlxgkhwhy2CJc9YFg7G9vbfcEeGXFCaO3e4AfLClPiwrMSI4UQlpRup61XZqwQwuWwRbrsvqCpCS09PiI1NlwIERPuDHfZ7TZd17Vwp800re2VTeX1bX97fYVlSSmk22E3DEsTIjcl6qe3oD4nOSrMac+vbO6dFRcX6RJCHDc4Wwhx44wlA3MTotwOIcSgrkkuh62iwaMJ0TMzLrQdOSHaHTAsIYRpSdOyWr2B4prWsrq2LeUNUgqP3+ieHmNZIjzMEXolw8McES6HP2gGTcuSMmhYpiW3lDWeOrKrEOLco7qfeUSew6YLIWLCw/7+/qrLjm1/9sqjpBSh97Gu2Tt7RdExAzMdNn1bedNtb6zomhp9+1lDg6b1+Mdr0xPCdU0rrG5p8wa272zulx1P2wHAgUfV/U8EAoEVy1fk5eVlZGYIIeITEoJBY/eavP8vTezOIynErl80TdhtuqYJIXatHbGk7PDteoiWDr/LaQ8Ps91y2sALx/TYXN7w+jfbCqubn5x0ZOj4xKBhbatonjAsRwixobQhJzkq3OWQTtErM27e2vJmj/+8o/LyK5o+WVmUkRiZEhNu13VNaJ99X5yVGDmyZ8rr32wrqmk9dmCmEGJEj5R3FhcUV7eePCxnY2nD5z8Ut3mDQ7ol7fMsQntbhc6iYtd1l8N20dE9jhmQKYVo8fgjwhxby5u8gV1nV/H4g1+vKRvTNyMxOkwI4bLbhNA6/Lu2bnv8hhTC7bJ7/aZpWsJhk1K2eQMOhx4T4TysW9Kc1WWNbb4x/TN2b8C1pLTb9TvOPqxgZ/NjH619/urRNl0TmgjtBCallELoura1vCkp2p0Q5Wpu9zts+p3nHJZf0fzYR2ufmxyaX5Niz/yaEEJITdv1/sjQVCGk3PVkHTa9f07iAxcO13XNMGVrRyA9PsKwrDDNLkIHMpc3jeqdKoRwO23VTYHQUEtr2zaXN+q61u4Lhqb4AkbQMF2Of9mCL6XUfvrZpusOXXfa9dNHdp0wvIuUos0bcNpsoW8au8e858MjhMtpr2nqaPMG+2TFCSF+LKh12m2DuiYKIeKinHab1tTuL6pq7dclIXQMTXxUWEWDR9e1NYV197z9wxF90m45bZDDrlc2eIqqWwNBc21hfZPHX9/qe/LTdU9cdkSSukfeAMBBi+/T+5P86T92KeWHH7z/9FNPtra0VFdXz587b8hhQyIjI3/bYi25Zwf00E5RdpvW4QtuKWsMGJamifyK5maPX0jx2fdFK/NrVhXUfrKyeNyAjI2ljec8OreuxTuiR+qALokenyGEyK9sLqlpq2hob/H4+2bFm5bcXNrQPydBCKFpYkSP5LlrSl0OvW92Qlp8xMfLi4bmJeu6lhjjzkqK/Gh5Ye/MuEFdk6qaOraWNR7WLVkIMTA3cWejZ0NJ/aCuiYO7Jn31Y2lMuCsrMaq2uWN9cb1pSfFTzAkhpBSGYaXGhQ/KTZy/rsLjNzy+4EMfrPl0ZdGgrommlO8tLiisbnl1/raZC/IN08yvbC6qbk1PiOiZGTtzwbbtlc1zVpct3rxTE3J4XkpLR2Dmwvyimtb3FhcU17Qe3itNCHH8kKyFGyqKa1rHDcgKmta6ovq6Fq+maTZNy0uPmXLKwOKa1veWFGiatvcLG9rVbG1R3YCcBF3TTCltupaXFjPl1IGF1S2zFhfo2s/eCCHkvzw1uft2S0op5Zj+GcXVrRtKGjRNm7O69L53f2jzBTWhhWarbfHWtHj7ZMULIY7sk7ahpH7O6tLtlc2Pfbx20cbKcQMzl2+r/npNaWFVy0tzt0SHu3pmxJrWnofY++HyK5v8hjmqV9qC9RWtHQFfwHh89tr3lhbYbPo+Y7aksOu612/kVzStzK9JjnEnx4QLIZZvq5761vfl9e1t3sDs5UVZCZEZCZEz5m3+5xcb2n3Bkpq27zZWHtUntarR85dXl+UkR51+eG5RTWvoyJIv754w596Js+88acqpAwfkJj7+p1GhFgcAHGCsq9ufwsPDw8LChBAul+vqyZP/8cADV11xpREMdsnt8qfLL9c07b8u4ed0TYt2O0ObxkI/65qWnRSVlx7z6Ow1T/35qLEDMmfM3ZydFOVy2MLD7P/8Yn1jm390v4xzjupu07VxAzL/8f4qm01LjHLfctogt8P+2jdbk2Pc/XMSUmPDk2Ld9S3e1o5Ar6xdWyoHdElMj4/omx0f5rQN7JqwbEvV0LxkIYQmxMgeqQvWV/TKjEuKdvfKjLMsKyspUgiRFOvun5NQ1eRJi4sImlZmYuSoXqk2XVuZXzNracGL1xztdtmi3M7Q8l0OPcLtdNr1m08b9NjsNTe/vNSSsn9OwoVH90yKcd9x9mHT5mz+alVppNtx+1lDUmIjnvp0eUJ02F/PGHLbmUPun7VqyktLMxMjkqJdQhNZSZFTzx06bc6mr1aVul222848bHBuohCid1Zct7TorMSotPjwpnbfQx+u/tO4Xkf0Tot0O6UlU+LCrzyh76wlBf1zEmIjXKEXVtO0mHBnuzdY0+ydODw3NCXS7ZRSpMaFX3lCn/eXFvbLid97/qif3pRotzP0zrpdDocphRCaJqLcTl3TRvZImXxS31fmbzXmbg532qecMjAp2u1y2NwuuxCiqKYlNsKZnhAhhDiid9qk43pP/3qzP2h2TYm5fsKAtPiI2mbvC19tsqRIjnHff+GwpJg99xVChLscodWuo/ulP/fFxq6pMddPHPDEx+tueWWZponu6TGXH9s7NLy9Pzx2XUuLD++bE//kp+szEiLGDcwMfSovHNOjoLL5z//8NsJlt9v0u84bmhzjvmHCwH+8v+qSpxZ4/cFBXZPOHd3j69Vl5Q0eS4prpy22LGG3aQ9cOHxEz1SnfddLERfhCnc5fttHHQDwO2l7fZPH72UYhqZpu4919Xq9OwoK3G53127ddP03rhYNrUOy2TRd06QQhrHrZ8uSvqDpcthsuuYLmLou/vraiqzEyOsm9Lek3Ps0sL6AYVjS7bSH9scKGKYmtMZ2vyWttLiIDr9R3eTJTo6y/zRCw7R0XdM1TUppWNLx0w5SoUd32HUhRGgNnO2nPedC65BCG4KDpmXXdU0ThiUN03I5bNKSpty1HNOSltyzzNBG1XDXntEapuUPmi6HLbS00GgtKZduqeqVGZscG24Y1lUvLBrbP+OyY3vvnt/psDn22pHLtKSmCV3TpBR+w3TYdJuuBX966YQQvqBp1zUphE3/6YU1LcOwdjZ6cpKj7DZ975f6l+c3rNB5T0xT2u26JkToPG27XwSbpum7XnArYJhhPz0jw7SEptl1raHV2xEwQzvthfiDpmFa4S7H7igKTXG77KFhGKYlhGa37f5518P5Aqamh7ZTC6/fkD+9pP/2wyOlN2BWN3qSYtzR4buC27Jk/s7mgGH2So9zOXd9htu9wYKdzdERzm6pMaHnZVrS2rPKUAtz2nZ/DKy93mgAwIFH1anjxhlLMhMi/3Lm4M4eyP5nmNatry2vavBMHNFla3nT2qL6Z688Ki8tprPHBQDAQYSqU8eijZWRbkdog6l6mjz+95fs2FHVEhfpPPPwbrsPbgUAACFUHQAAgArYAwYAAEAFVB0AAIAKqDoAAAAVUHUAAAAqoOoAAABUQNUBAACogKoDAABQAVUHAACgAqoOAABABVQdAACACqg6AAAAFVB1AAAAKqDqAAAAVEDVAQAAqICqAwAAUAFVBwAAoAKqDgAAQAVUHQAAgAqoOgAAABVQdQAAACqwd/YAAAAAhBDixx9XRUZG9u7dSwhhmmZBQUFHR4cQWuhWTdOEkMnJyRkZGZ06zIMXVQcAADrfhg0bZ85887jjjg1Vnd/vnz3709LSUpvNJoTQNM2yTI+nY+LECWeffWZnD/YgRdUBAIDOZBjG99//+P77H7S1tTscu8rE7XZfd901hmFomhBCBIPGrFnv19TUHH74yM4c68GNqgMAAJ3GNM0PPvhw1ao1gwYN3Lp1m2VZoemapkVHR+2ebfHipdu3F1x66SWZmWx+/beoOgAA0GksSyYnp1x77TXR0VE7duyQUv58ntraui+//GrQoEFDhgw64AP8I6HqAABAp3E47OPGjRVC1NbWWtYvJJ2UcvHixcFgcNy4sbrOuTv+E14dAABw8KqtrV21atXAgQNzcrI7eywHO6oOAAAcvLZty29tbR8+fJimaZ09loMdVQcAAA5SUspNmzanpqZ26ZLT2WP5A6DqAADAQaqtra28vCIvr5vbHdbZY/kDoOoAAMBBQUq5zzGwdXX17e2e9PT0zhrSHwtVBwAAOp+maW632+l07D2xo8MbHu5OSIjrrFH9sWi/eGIYAACAA0lKaRiGruuhS4SFWJZlmqbdbudQiV+DqgMAAFABW2ABAABUQNUBAACogKoDAABQAVUHAACgAqoOAABABVQdAACACqg6AAAAFVB1AAAAKqDqAAAAVEDVAQAAqICqAwAAUAFVBwAAoAKqDgAAQAVUHQAAgAqoOgAAABVQdQAAACqg6gAAAFRA1QEAAKiAqgMAAFABVQcAAKACqg4AAEAFVB0AAIAKqDoAAAAVUHUAAAAqoOoAAABUQNUBAACogKoDAABQAVUHAACgAqoOAABABVQdAACACqg6AAAAFVB1AAAAKqDqAAAAVEDVAQAAqICqAwAAUAFVBwAAoAKqDgAAQAVUHQAAgAqoOgAAABVQdQAAACqg6gAAAFRA1QEAAKiAqgMAAFABVQcAAKACqg4AAEAFVB0AAIAKqDoAAAAVUHUAAAAqoOoAAABUQNUBAACogKoDAABQAVUHAACgAqoOAABABVQdAACACqg6AAAAFVB1AAAAKqDqAAAAVEDVAQAAqICqAwAAUAFVBwAAoAKqDgAAQAVUHQAAgAqoOgAAABVQdQAAACqg6gAAAFRA1QEAAKiAqgMAAFABVQcAAKACqg4AAEAFVB0AAIAK/g+Xid+Jy4DvwwAAAABJRU5ErkJggg=="},"page_no":1}}},"html_content":null,"text_content":null,"doctags_content":null},"status":"success","errors":[],"processing_time":2.897034953000002,"timings":{}} \ No newline at end of file diff --git a/docs/hybrid/research/documents-with-tables.txt b/docs/hybrid/research/documents-with-tables.txt new file mode 100644 index 0000000..793c13b --- /dev/null +++ b/docs/hybrid/research/documents-with-tables.txt @@ -0,0 +1,42 @@ +01030000000045.pdf +01030000000046.pdf +01030000000047.pdf +01030000000051.pdf +01030000000052.pdf +01030000000053.pdf +01030000000064.pdf +01030000000078.pdf +01030000000081.pdf +01030000000082.pdf +01030000000083.pdf +01030000000084.pdf +01030000000088.pdf +01030000000089.pdf +01030000000090.pdf +01030000000110.pdf +01030000000116.pdf +01030000000117.pdf +01030000000119.pdf +01030000000120.pdf +01030000000121.pdf +01030000000122.pdf +01030000000127.pdf +01030000000128.pdf +01030000000130.pdf +01030000000132.pdf +01030000000146.pdf +01030000000147.pdf +01030000000149.pdf +01030000000150.pdf +01030000000165.pdf +01030000000166.pdf +01030000000170.pdf +01030000000178.pdf +01030000000180.pdf +01030000000182.pdf +01030000000187.pdf +01030000000188.pdf +01030000000189.pdf +01030000000190.pdf +01030000000197.pdf +01030000000200.pdf diff --git a/docs/hybrid/research/iobject-structure.md b/docs/hybrid/research/iobject-structure.md new file mode 100644 index 0000000..c9fef3d --- /dev/null +++ b/docs/hybrid/research/iobject-structure.md @@ -0,0 +1,105 @@ +# IObject Class Structure + +## Overview +IObject is imported from `org.verapdf.wcag.algorithms.entities.IObject` (external verapdf-wcag-algs library). + +## JSON Output Types + +Based on sample response analysis, OpenDataLoader produces the following element types: + +### Element Types + +| Type | JSON `type` field | Description | +|------|-------------------|-------------| +| Paragraph | `paragraph` | Text paragraph with font info | +| Heading | `heading` | Section heading with level | +| Table | `table` | Table with rows and cells | +| Image | `image` | Image/figure element | +| List | `list` | Bulleted or numbered list | + +### Common Fields (all types) + +```json +{ + "type": "paragraph", + "id": 17, + "page number": 1, + "bounding box": [left, bottom, right, top] // PDF points, origin at bottom-left +} +``` + +### Paragraph Fields + +```json +{ + "type": "paragraph", + "font": "ArialMT", + "font size": 8.0, + "text color": "[0.0, 0.0, 0.0, 0.7]", + "content": "Text content here" +} +``` + +### Heading Fields + +```json +{ + "type": "heading", + "level": "1", + "content": "Heading text" +} +``` + +### Table Structure + +```json +{ + "type": "table", + "level": "1", + "number of rows": 3, + "number of columns": 3, + "rows": [ + { + "type": "table row", + "row number": 1, + "cells": [ + { + "type": "table cell", + "page number": 1, + "bounding box": [left, bottom, right, top], + "row number": 1, + "column number": 1, + "row span": 1, + "column span": 1, + "kids": [ + { + "type": "paragraph", + "content": "Cell text" + } + ] + } + ] + } + ] +} +``` + +## Bounding Box Coordinate System + +- **OpenDataLoader**: `[left, bottom, right, top]` in PDF points, origin at BOTTOMLEFT +- **Docling**: `{l, t, r, b}` with `coord_origin: "BOTTOMLEFT"` or `"TOPLEFT"` + +### Conversion Notes + +- If docling uses TOPLEFT origin: `bottom = page_height - docling_t`, `top = page_height - docling_b` +- If docling uses BOTTOMLEFT origin: direct mapping `[l, b, r, t]` → `[left, bottom, right, top]` + +## Key Java Classes + +From the codebase: + +- `TableBorder` - Table with border-based detection +- `TableBorderRow` - Table row +- `TableBorderCell` - Table cell with contents, rowSpan, colSpan +- `BoundingBox` - PDF coordinates (page, left, bottom, right, top) +- Processors: `TextLineProcessor`, `TableBorderProcessor`, `HeadingProcessor`, `ListProcessor` diff --git a/docs/hybrid/research/opendataloader-sample-response.json b/docs/hybrid/research/opendataloader-sample-response.json new file mode 100644 index 0000000..a93dc85 --- /dev/null +++ b/docs/hybrid/research/opendataloader-sample-response.json @@ -0,0 +1,370 @@ +{ + "file name" : "01030000000045.pdf", + "number of pages" : 1, + "author" : null, + "title" : null, + "creation date" : null, + "modification date" : null, + "kids" : [ { + "type" : "paragraph", + "id" : 17, + "page number" : 1, + "bounding box" : [ 281.571, 551.756, 372.715, 560.694 ], + "font" : "ArialMT", + "font size" : 8.0, + "text color" : "[0.0, 0.0, 0.0, 0.7]", + "content" : "Civil Society Engagement" + }, { + "type" : "paragraph", + "id" : 19, + "page number" : 1, + "bounding box" : [ 54.0, 499.92, 372.727, 539.282 ], + "font" : "Georgia", + "font size" : 10.0, + "text color" : "[0.0, 0.0, 0.0, 1.0]", + "content" : "election integrity. The registration of local election observers runs until 25 May, and the NEC is still reviewing the application of nearly 5,000 observers." + }, { + "type" : "heading", + "id" : 20, + "level" : "Doctitle", + "page number" : 1, + "bounding box" : [ 54.0, 455.381, 350.475, 480.87 ], + "heading level" : 1, + "font" : "Arial-BoldMT", + "font size" : 11.0, + "text color" : "[0.0, 0.0, 0.0, 1.0]", + "content" : "Table: The number of accredited observers as of 28 April 202215" + }, { + "type" : "table", + "id" : 21, + "level" : "1", + "page number" : 1, + "bounding box" : [ 54.0, 234.441, 372.727, 440.212 ], + "number of rows" : 3, + "number of columns" : 3, + "rows" : [ { + "type" : "table row", + "row number" : 1, + "cells" : [ { + "type" : "table cell", + "page number" : 1, + "bounding box" : [ 54.375, 413.86, 83.52, 440.087 ], + "row number" : 1, + "column number" : 1, + "row span" : 1, + "column span" : 1, + "kids" : [ { + "type" : "paragraph", + "id" : 1, + "page number" : 1, + "bounding box" : [ 61.757, 427.253, 75.761, 437.307 ], + "font" : "ArialMT", + "font size" : 9.0, + "text color" : "[0.0, 0.0, 0.0, 1.0]", + "content" : "No." + } ] + }, { + "type" : "table cell", + "page number" : 1, + "bounding box" : [ 83.52, 413.86, 273.472, 440.087 ], + "row number" : 1, + "column number" : 2, + "row span" : 1, + "column span" : 1, + "kids" : [ { + "type" : "paragraph", + "id" : 2, + "page number" : 1, + "bounding box" : [ 87.52, 427.253, 173.056, 437.307 ], + "font" : "ArialMT", + "font size" : 9.0, + "text color" : "[0.0, 0.0, 0.0, 1.0]", + "content" : "Name of organization" + } ] + }, { + "type" : "table cell", + "page number" : 1, + "bounding box" : [ 273.472, 413.86, 372.352, 440.087 ], + "row number" : 1, + "column number" : 3, + "row span" : 1, + "column span" : 1, + "kids" : [ { + "type" : "paragraph", + "id" : 3, + "page number" : 1, + "bounding box" : [ 280.08, 416.453, 366.111, 437.307 ], + "font" : "ArialMT", + "font size" : 9.0, + "text color" : "[0.0, 0.0, 0.0, 1.0]", + "content" : "Number of accredited observers" + } ] + } ] + }, { + "type" : "table row", + "row number" : 2, + "cells" : [ { + "type" : "table cell", + "page number" : 1, + "bounding box" : [ 54.375, 249.993, 83.52, 413.86 ], + "row number" : 2, + "column number" : 1, + "row span" : 1, + "column span" : 1, + "kids" : [ { + "type" : "list", + "id" : 4, + "level" : "1", + "page number" : 1, + "bounding box" : [ 66.257, 263.386, 71.261, 410.955 ], + "numbering style" : "arabic numbers", + "number of list items" : 7, + "list items" : [ { + "type" : "list item", + "page number" : 1, + "bounding box" : [ 66.257, 400.9, 71.261, 410.955 ], + "font" : "ArialMT", + "font size" : 9.0, + "text color" : "[0.0, 0.0, 0.0, 1.0]", + "content" : "1", + "kids" : [ ] + }, { + "type" : "list item", + "page number" : 1, + "bounding box" : [ 66.257, 374.548, 71.261, 384.603 ], + "font" : "ArialMT", + "font size" : 9.0, + "text color" : "[0.0, 0.0, 0.0, 1.0]", + "content" : "2", + "kids" : [ ] + }, { + "type" : "list item", + "page number" : 1, + "bounding box" : [ 66.257, 348.196, 71.261, 358.251 ], + "font" : "ArialMT", + "font size" : 9.0, + "text color" : "[0.0, 0.0, 0.0, 1.0]", + "content" : "3", + "kids" : [ ] + }, { + "type" : "list item", + "page number" : 1, + "bounding box" : [ 66.257, 321.844, 71.261, 331.898 ], + "font" : "ArialMT", + "font size" : 9.0, + "text color" : "[0.0, 0.0, 0.0, 1.0]", + "content" : "4", + "kids" : [ ] + }, { + "type" : "list item", + "page number" : 1, + "bounding box" : [ 66.257, 295.491, 71.261, 305.546 ], + "font" : "ArialMT", + "font size" : 9.0, + "text color" : "[0.0, 0.0, 0.0, 1.0]", + "content" : "5", + "kids" : [ ] + }, { + "type" : "list item", + "page number" : 1, + "bounding box" : [ 66.257, 278.939, 71.261, 288.993 ], + "font" : "ArialMT", + "font size" : 9.0, + "text color" : "[0.0, 0.0, 0.0, 1.0]", + "content" : "6", + "kids" : [ ] + }, { + "type" : "list item", + "page number" : 1, + "bounding box" : [ 66.257, 263.386, 71.261, 273.441 ], + "font" : "ArialMT", + "font size" : 9.0, + "text color" : "[0.0, 0.0, 0.0, 1.0]", + "content" : "7", + "kids" : [ ] + } ] + } ] + }, { + "type" : "table cell", + "page number" : 1, + "bounding box" : [ 83.52, 249.993, 273.472, 413.86 ], + "row number" : 2, + "column number" : 2, + "row span" : 1, + "column span" : 1, + "kids" : [ { + "type" : "paragraph", + "id" : 5, + "page number" : 1, + "bounding box" : [ 87.52, 390.1, 249.615, 410.955 ], + "font" : "ArialMT", + "font size" : 9.0, + "text color" : "[0.0, 0.0, 0.0, 1.0]", + "content" : "Union of Youth Federations of Cambodia (UYFC)" + }, { + "type" : "paragraph", + "id" : 6, + "page number" : 1, + "bounding box" : [ 87.52, 363.748, 225.426, 384.603 ], + "font" : "ArialMT", + "font size" : 9.0, + "text color" : "[0.0, 0.0, 0.0, 1.0]", + "content" : "Cambodian Women for Peace and Development" + }, { + "type" : "paragraph", + "id" : 7, + "page number" : 1, + "bounding box" : [ 87.52, 337.396, 239.584, 358.251 ], + "font" : "ArialMT", + "font size" : 9.0, + "text color" : "[0.0, 0.0, 0.0, 1.0]", + "content" : "Association of Democratic Students of Cambodia" + }, { + "type" : "paragraph", + "id" : 8, + "page number" : 1, + "bounding box" : [ 87.52, 311.044, 231.623, 331.898 ], + "font" : "ArialMT", + "font size" : 9.0, + "text color" : "[0.0, 0.0, 0.0, 1.0]", + "content" : "Association of Intellectual and Youth Volunteer" + }, { + "type" : "paragraph", + "id" : 9, + "page number" : 1, + "bounding box" : [ 87.52, 252.586, 237.745, 305.546 ], + "font" : "ArialMT", + "font size" : 9.0, + "text color" : "[0.0, 0.0, 0.0, 1.0]", + "content" : "Our Friends Association COMFREL Traditional and Modern Mental Health Organization" + } ] + }, { + "type" : "table cell", + "page number" : 1, + "bounding box" : [ 273.472, 249.993, 372.352, 413.86 ], + "row number" : 2, + "column number" : 3, + "row span" : 1, + "column span" : 1, + "kids" : [ { + "type" : "paragraph", + "id" : 10, + "page number" : 1, + "bounding box" : [ 309.336, 400.9, 336.858, 410.955 ], + "font" : "ArialMT", + "font size" : 9.0, + "text color" : "[0.0, 0.0, 0.0, 1.0]", + "content" : "17,266" + }, { + "type" : "paragraph", + "id" : 11, + "page number" : 1, + "bounding box" : [ 311.839, 374.548, 334.357, 384.603 ], + "font" : "ArialMT", + "font size" : 9.0, + "text color" : "[0.0, 0.0, 0.0, 1.0]", + "content" : "9,835" + }, { + "type" : "paragraph", + "id" : 12, + "page number" : 1, + "bounding box" : [ 315.926, 348.196, 329.608, 358.251 ], + "font" : "ArialMT", + "font size" : 9.0, + "text color" : "[0.0, 0.0, 0.0, 1.0]", + "content" : "711" + }, { + "type" : "paragraph", + "id" : 13, + "page number" : 1, + "bounding box" : [ 318.095, 321.844, 328.103, 331.898 ], + "font" : "ArialMT", + "font size" : 9.0, + "text color" : "[0.0, 0.0, 0.0, 1.0]", + "content" : "46" + }, { + "type" : "paragraph", + "id" : 14, + "page number" : 1, + "bounding box" : [ 318.095, 263.386, 328.103, 305.546 ], + "font" : "ArialMT", + "font size" : 9.0, + "text color" : "[0.0, 0.0, 0.0, 1.0]", + "content" : "27 26 15" + } ] + } ] + }, { + "type" : "table row", + "row number" : 3, + "cells" : [ { + "type" : "table cell", + "page number" : 1, + "bounding box" : [ 54.375, 234.566, 83.52, 249.993 ], + "row number" : 3, + "column number" : 1, + "row span" : 1, + "column span" : 1, + "kids" : [ ] + }, { + "type" : "table cell", + "page number" : 1, + "bounding box" : [ 83.52, 234.566, 273.472, 249.993 ], + "row number" : 3, + "column number" : 2, + "row span" : 1, + "column span" : 1, + "kids" : [ { + "type" : "paragraph", + "id" : 15, + "page number" : 1, + "bounding box" : [ 87.52, 237.034, 108.351, 247.089 ], + "font" : "Arial-BoldMT", + "font size" : 9.0, + "text color" : "[0.0, 0.0, 0.0, 1.0]", + "content" : "Total" + } ] + }, { + "type" : "table cell", + "page number" : 1, + "bounding box" : [ 273.472, 234.566, 372.352, 249.993 ], + "row number" : 3, + "column number" : 3, + "row span" : 1, + "column span" : 1, + "kids" : [ { + "type" : "paragraph", + "id" : 16, + "page number" : 1, + "bounding box" : [ 309.336, 237.034, 336.858, 247.089 ], + "font" : "Arial-BoldMT", + "font size" : 9.0, + "text color" : "[0.0, 0.0, 0.0, 1.0]", + "content" : "27,926" + } ] + } ] + } ] + }, { + "type" : "image", + "id" : 22, + "page number" : 1, + "bounding box" : [ 54.0, 68.275, 126.0, 68.525 ] + }, { + "type" : "paragraph", + "id" : 23, + "page number" : 1, + "bounding box" : [ 54.0, 52.729, 185.287, 59.432 ], + "font" : "ArialMT", + "font size" : 6.0, + "text color" : "[0.86, 0.57, 0.0, 0.16]", + "content" : "15 https://www.nec.gov.kh/khmer/content/5524" + }, { + "type" : "paragraph", + "id" : 18, + "page number" : 1, + "bounding box" : [ 363.829, 34.305, 372.725, 43.242 ], + "font" : "ArialMT", + "font size" : 8.0, + "text color" : "[0.0, 0.0, 0.0, 0.75]", + "content" : "17" + } ] +} \ No newline at end of file diff --git a/docs/hybrid/research/opendataloader-sample-response.md b/docs/hybrid/research/opendataloader-sample-response.md new file mode 100644 index 0000000..e97fd55 --- /dev/null +++ b/docs/hybrid/research/opendataloader-sample-response.md @@ -0,0 +1,16 @@ +Civil Society Engagement + +election integrity. The registration of local election observers runs until 25 May, and the NEC is still reviewing the application of nearly 5,000 observers. + +# Table: The number of accredited observers as of 28 April 202215 + +|No.|Name of organization|Number of accredited observers| +|---|---|---| +|1
2
3
4
5
6
7
|Union of Youth Federations of Cambodia (UYFC)

Cambodian Women for Peace and Development

Association of Democratic Students of Cambodia

Association of Intellectual and Youth Volunteer

Our Friends Association COMFREL Traditional and Modern Mental Health Organization|17,266

9,835

711

46

27 26 15| +||Total|27,926| + + +15 https://www.nec.gov.kh/khmer/content/5524 + +17 + diff --git a/docs/superpowers/plans/2026-03-16-cid-font-detection.md b/docs/superpowers/plans/2026-03-16-cid-font-detection.md new file mode 100644 index 0000000..4e4b85f --- /dev/null +++ b/docs/superpowers/plans/2026-03-16-cid-font-detection.md @@ -0,0 +1,630 @@ +# CID Font Extraction Failure Detection — Implementation Plan + +> **For agentic workers:** REQUIRED: Use superpowers:subagent-driven-development (if subagents available) or superpowers:executing-plans to implement this plan. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Detect pages where CID font extraction failed (high U+FFFD ratio), emit warning logs, and auto-route to OCR backend in hybrid mode. + +**Architecture:** Measure replacement character ratio in ContentFilterProcessor before replacement, store in StaticLayoutContainers, consume in TriageProcessor as highest-priority signal. Warning log fires regardless of hybrid mode. + +**Tech Stack:** Java 11+, JUnit Jupiter, veraPDF API (`ChunkParser.REPLACEMENT_CHARACTER_STRING`) + +--- + +## File Structure + +| File | Responsibility | +|---|---| +| `TextProcessor.java` | New `measureReplacementCharRatio()` method | +| `StaticLayoutContainers.java` | Per-page replacement ratio storage | +| `ContentFilterProcessor.java` | Measure + warn + store before replacement | +| `TriageProcessor.java` | Signal 0: route high-ratio pages to BACKEND | +| `TextProcessorTest.java` | Unit tests for measurement | +| `TriageProcessorTest.java` | Unit tests for Signal 0 routing | +| `CidFontDetectionTest.java` (new) | e2e test with synthetic PDF | +| `test/resources/cid-font-no-tounicode.pdf` (new) | Test fixture | +| `test/resources/generate-cid-test-pdf.py` (new) | Generation script (reference) | + +All paths below are relative to `java/opendataloader-pdf-core/src/`. + +--- + +## Chunk 1: Measurement + Storage + +### Task 1: Add per-page ratio storage to StaticLayoutContainers + +**Files:** +- Modify: `main/java/org/opendataloader/pdf/containers/StaticLayoutContainers.java` + +- [ ] **Step 1: Add ThreadLocal map field and imports** + +Add after line 40 (`imageFormat` field): + +```java +private static final ThreadLocal> replacementCharRatios = ThreadLocal.withInitial(HashMap::new); +``` + +Add to imports: + +```java +import java.util.HashMap; +import java.util.Map; +``` + +- [ ] **Step 2: Add getter and setter** + +Add after `setImageFormat()` (after line 145): + +```java +public static void setReplacementCharRatio(int pageNumber, double ratio) { + replacementCharRatios.get().put(pageNumber, ratio); +} + +public static double getReplacementCharRatio(int pageNumber) { + return replacementCharRatios.get().getOrDefault(pageNumber, 0.0); +} +``` + +- [ ] **Step 3: Clear in clearContainers()** + +Add inside `clearContainers()` method, after line 51 (`imageFormat.set(...)`): + +```java +replacementCharRatios.get().clear(); +``` + +- [ ] **Step 4: Compile check** + +Run: `cd java && mvn compile -pl opendataloader-pdf-core -q` +Expected: BUILD SUCCESS + +- [ ] **Step 5: Commit** + +```bash +git add java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/containers/StaticLayoutContainers.java +git commit -m "feat: add per-page replacement char ratio storage to StaticLayoutContainers" +``` + +### Task 2: Add measureReplacementCharRatio to TextProcessor + +**Files:** +- Modify: `main/java/org/opendataloader/pdf/processors/TextProcessor.java` +- Test: `test/java/org/opendataloader/pdf/processors/TextProcessorTest.java` + +- [ ] **Step 1: Write failing tests** + +Add to `TextProcessorTest.java` after the last test method (before closing `}`): + +```java +@Test +public void testMeasureReplacementCharRatio_allReplacement() { + List contents = new ArrayList<>(); + contents.add(new TextChunk(new BoundingBox(1, 10.0, 10.0, 100.0, 20.0), + "\uFFFD\uFFFD\uFFFD", 10, 10.0)); + + double ratio = TextProcessor.measureReplacementCharRatio(contents); + Assertions.assertEquals(1.0, ratio, 0.001); +} + +@Test +public void testMeasureReplacementCharRatio_noReplacement() { + List contents = new ArrayList<>(); + contents.add(new TextChunk(new BoundingBox(1, 10.0, 10.0, 100.0, 20.0), + "Hello World", 10, 10.0)); + + double ratio = TextProcessor.measureReplacementCharRatio(contents); + Assertions.assertEquals(0.0, ratio, 0.001); +} + +@Test +public void testMeasureReplacementCharRatio_mixed() { + List contents = new ArrayList<>(); + // 3 replacement chars out of 10 total = 0.3 + contents.add(new TextChunk(new BoundingBox(1, 10.0, 10.0, 100.0, 20.0), + "\uFFFD\uFFFD\uFFFDAbcdefg", 10, 10.0)); + + double ratio = TextProcessor.measureReplacementCharRatio(contents); + Assertions.assertEquals(0.3, ratio, 0.001); +} + +@Test +public void testMeasureReplacementCharRatio_emptyContents() { + List contents = new ArrayList<>(); + + double ratio = TextProcessor.measureReplacementCharRatio(contents); + Assertions.assertEquals(0.0, ratio, 0.001); +} + +@Test +public void testMeasureReplacementCharRatio_nonTextChunksIgnored() { + List contents = new ArrayList<>(); + contents.add(new ImageChunk(new BoundingBox(1, 10.0, 10.0, 100.0, 20.0))); + contents.add(new TextChunk(new BoundingBox(1, 10.0, 30.0, 100.0, 40.0), + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD", 10, 10.0)); + + double ratio = TextProcessor.measureReplacementCharRatio(contents); + // Only TextChunks counted: 5/5 = 1.0 + Assertions.assertEquals(1.0, ratio, 0.001); +} +``` + +- [ ] **Step 2: Run tests to verify they fail** + +Run: `cd java && mvn test -pl opendataloader-pdf-core -Dtest=TextProcessorTest#testMeasureReplacementCharRatio_allReplacement -q` +Expected: FAIL — `measureReplacementCharRatio` method not found + +- [ ] **Step 3: Implement measureReplacementCharRatio** + +Add to `TextProcessor.java` after `replaceUndefinedCharacters()` method (after line 53): + +```java +public static double measureReplacementCharRatio(List contents) { + char replacementChar = ChunkParser.REPLACEMENT_CHARACTER_STRING.charAt(0); + int totalChars = 0; + int replacementChars = 0; + for (IObject object : contents) { + if (object instanceof TextChunk) { + String value = ((TextChunk) object).getValue(); + totalChars += value.length(); + for (int i = 0; i < value.length(); i++) { + if (value.charAt(i) == replacementChar) { + replacementChars++; + } + } + } + } + if (totalChars == 0) { + return 0.0; + } + return (double) replacementChars / totalChars; +} +``` + +- [ ] **Step 4: Run tests to verify they pass** + +Run: `cd java && mvn test -pl opendataloader-pdf-core -Dtest=TextProcessorTest -q` +Expected: All tests PASS + +- [ ] **Step 5: Commit** + +```bash +git add java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/TextProcessor.java +git add java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/TextProcessorTest.java +git commit -m "feat: add measureReplacementCharRatio to TextProcessor + +Counts U+FFFD replacement characters across TextChunks and returns +the ratio. Returns 0.0 for empty contents or pages with no text." +``` + +--- + +## Chunk 2: Warning Log + Triage Routing + +### Task 3: Add warning log in ContentFilterProcessor + +**Files:** +- Modify: `main/java/org/opendataloader/pdf/processors/ContentFilterProcessor.java` + +- [ ] **Step 1: Add import for StaticLayoutContainers** + +Add to imports: + +```java +import org.opendataloader.pdf.containers.StaticLayoutContainers; +``` + +- [ ] **Step 2: Add measurement + warning before replaceUndefinedCharacters** + +Insert immediately before line 74 (`TextProcessor.replaceUndefinedCharacters(...)`) in `getFilteredContents()`: + +```java +double replacementCharRatio = TextProcessor.measureReplacementCharRatio(pageContents); +StaticLayoutContainers.setReplacementCharRatio(pageNumber, replacementCharRatio); +if (replacementCharRatio >= 0.3) { + LOGGER.log(Level.WARNING, + "Page {0}: {1,number,#.#%} of characters are replacement characters (U+FFFD). " + + "This PDF likely contains CID-keyed fonts without ToUnicode mappings. " + + "Text extraction may be incomplete. Consider using --hybrid-mode for OCR fallback.", + new Object[]{pageNumber + 1, replacementCharRatio}); +} +``` + +- [ ] **Step 3: Compile check** + +Run: `cd java && mvn compile -pl opendataloader-pdf-core -q` +Expected: BUILD SUCCESS + +- [ ] **Step 4: Commit** + +```bash +git add java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/ContentFilterProcessor.java +git commit -m "feat: detect CID font extraction failure and emit warning log + +Measures U+FFFD ratio before replacement. Warns when >= 30% of +characters are replacement characters, suggesting hybrid mode." +``` + +### Task 4: Add Signal 0 to TriageProcessor + +**Files:** +- Modify: `main/java/org/opendataloader/pdf/hybrid/TriageProcessor.java` +- Test: `test/java/org/opendataloader/pdf/hybrid/TriageProcessorTest.java` + +- [ ] **Step 1: Write failing tests** + +Add to `TriageProcessorTest.java` before the `// Helper methods` comment: + +```java +@Test +public void testClassifyPage_highReplacementRatio_routesToBackend() { + StaticLayoutContainers.clearContainers(); + StaticLayoutContainers.setReplacementCharRatio(0, 0.5); + + List contents = new ArrayList<>(); + contents.add(createTextChunk(10, 100, 200, 120, "text")); + + TriageResult result = TriageProcessor.classifyPage(contents, 0, new HybridConfig()); + + Assertions.assertEquals(TriageDecision.BACKEND, result.getDecision()); + Assertions.assertEquals(1.0, result.getConfidence(), 0.001); +} + +@Test +public void testClassifyPage_lowReplacementRatio_noEffect() { + StaticLayoutContainers.clearContainers(); + StaticLayoutContainers.setReplacementCharRatio(0, 0.1); + + List contents = new ArrayList<>(); + contents.add(createTextChunk(10, 100, 200, 120, "normal text")); + + TriageResult result = TriageProcessor.classifyPage(contents, 0, new HybridConfig()); + + Assertions.assertEquals(TriageDecision.JAVA, result.getDecision()); +} + +@Test +public void testClassifyPage_exactThreshold_routesToBackend() { + StaticLayoutContainers.clearContainers(); + StaticLayoutContainers.setReplacementCharRatio(0, 0.3); + + List contents = new ArrayList<>(); + contents.add(createTextChunk(10, 100, 200, 120, "text")); + + TriageResult result = TriageProcessor.classifyPage(contents, 0, new HybridConfig()); + + Assertions.assertEquals(TriageDecision.BACKEND, result.getDecision()); + Assertions.assertEquals(1.0, result.getConfidence(), 0.001); +} +``` + +- [ ] **Step 2: Run tests to verify they fail** + +Run: `cd java && mvn test -pl opendataloader-pdf-core -Dtest=TriageProcessorTest#testClassifyPage_highReplacementRatio_routesToBackend -q` +Expected: FAIL — returns JAVA instead of BACKEND + +- [ ] **Step 3: Add Signal 0 to classifyPage** + +In `TriageProcessor.java`, in the `classifyPage()` method with `TriageThresholds` parameter, insert before the TableBorder check (before `// Signal 1: TableBorder presence`): + +```java +// Signal 0: CID font extraction failure (highest priority) +// Only fires in hybrid mode (classifyPage is only called from HybridDocumentProcessor) +double replacementRatio = StaticLayoutContainers.getReplacementCharRatio(pageNumber); +if (replacementRatio >= 0.3) { + return TriageResult.backend(pageNumber, 1.0, signals); +} +``` + +Add import at top of file: + +```java +import org.opendataloader.pdf.containers.StaticLayoutContainers; +``` + +Also update the `classifyPage()` Javadoc (around line 617) to list Signal 0: + +``` + *

Signal priority (highest to lowest): + *

    + *
  1. CID font extraction failure (replacement char ratio >= 30%)
  2. + *
  3. TableBorder presence
  4. + * ... +``` + +- [ ] **Step 4: Run tests to verify they pass** + +Run: `cd java && mvn test -pl opendataloader-pdf-core -Dtest=TriageProcessorTest -q` +Expected: All tests PASS + +- [ ] **Step 5: Run full test suite** + +Run: `cd java && mvn test -pl opendataloader-pdf-core -q` +Expected: All tests PASS — no regressions + +- [ ] **Step 6: Commit** + +```bash +git add java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/TriageProcessor.java +git add java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/TriageProcessorTest.java +git commit -m "feat: add CID font detection signal to TriageProcessor + +Signal 0 (highest priority): routes pages with >= 30% replacement +characters to backend for OCR fallback in hybrid mode." +``` + +--- + +## Chunk 3: e2e Test + Test Fixture + +### Task 5: Generate synthetic CID PDF test fixture + +**Files:** +- Create: `java/opendataloader-pdf-core/src/test/resources/generate-cid-test-pdf.py` +- Create: `java/opendataloader-pdf-core/src/test/resources/cid-font-no-tounicode.pdf` + +- [ ] **Step 1: Create test resources directory** + +```bash +mkdir -p java/opendataloader-pdf-core/src/test/resources +``` + +- [ ] **Step 2: Write the generation script** + +Create `java/opendataloader-pdf-core/src/test/resources/generate-cid-test-pdf.py`. + +This script generates a minimal PDF with a Type0 (CID) font that has no ToUnicode CMap. The PDF must cause veraPDF to emit `\uFFFD` for the majority of text characters when parsed. + +Approach: Use raw PDF syntax to embed a CID font referencing CID values without a ToUnicode mapping. Alternatively, use `reportlab` which provides low-level CID font control. + +The implementer should: +1. Generate the PDF +2. Verify it with opendataloader-pdf: `cd java && mvn exec:java -pl opendataloader-pdf-cli -Dexec.mainClass="org.opendataloader.pdf.cli.CLIMain" -Dexec.args="../src/test/resources/cid-font-no-tounicode.pdf -f text" 2>&1` +3. Confirm output is mostly empty/whitespace (indicating `\uFFFD` → space replacement) +4. Confirm WARNING log about replacement characters appears + +If generating a proper CID PDF proves difficult, search `odl-test-fixtures` for an existing PDF with CID font issues, or use a known CID-problematic PDF from the Korean pharmaceutical fixtures (pdf-003 through pdf-007). + +- [ ] **Step 3: Commit fixture** + +```bash +git add java/opendataloader-pdf-core/src/test/resources/cid-font-no-tounicode.pdf +git add java/opendataloader-pdf-core/src/test/resources/generate-cid-test-pdf.py +git commit -m "test: add synthetic CID font PDF test fixture + +PDF with CID-keyed font without ToUnicode mapping for testing +replacement character detection. Generation script included." +``` + +### Task 6: Write e2e integration test + +**Files:** +- Create: `test/java/org/opendataloader/pdf/processors/CidFontDetectionTest.java` + +This test follows the pattern from `TriageProcessorIntegrationTest.java`: +`DocumentProcessor.preprocessing()` → `ContentFilterProcessor.getFilteredContents()` → assert ratio and warning. + +- [ ] **Step 1: Write the integration test** + +Create `java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/CidFontDetectionTest.java`: + +```java +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Assumptions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.opendataloader.pdf.api.Config; +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.List; +import java.util.logging.Handler; +import java.util.logging.Level; +import java.util.logging.LogRecord; +import java.util.logging.Logger; + +/** + * Integration test for CID font extraction failure detection. + * + * Tests the full pipeline: PDF parsing → ContentFilterProcessor → + * measurement → StaticLayoutContainers storage → warning log. + */ +public class CidFontDetectionTest { + + private static final Path CID_PDF_PATH = Paths.get( + "src/test/resources/cid-font-no-tounicode.pdf"); + + private static boolean pdfAvailable = false; + + @BeforeAll + static void checkFixture() { + pdfAvailable = Files.exists(CID_PDF_PATH) && Files.isRegularFile(CID_PDF_PATH); + if (!pdfAvailable) { + System.out.println("CID font test PDF not found: " + CID_PDF_PATH.toAbsolutePath()); + System.out.println("Skipping integration tests. Generate fixture first."); + } + } + + @Test + public void testCidPdf_highReplacementRatio_detected() throws IOException { + Assumptions.assumeTrue(pdfAvailable, "CID font test PDF not available"); + + String pdfPath = CID_PDF_PATH.toAbsolutePath().toString(); + Config config = new Config(); + + DocumentProcessor.preprocessing(pdfPath, config); + StaticLayoutContainers.clearContainers(); + + int numPages = StaticContainers.getDocument().getNumberOfPages(); + Assertions.assertTrue(numPages > 0, "PDF should have at least 1 page"); + + // Process page 0 through ContentFilterProcessor + List filteredContents = ContentFilterProcessor.getFilteredContents( + pdfPath, + StaticContainers.getDocument().getArtifacts(0), + 0, + config + ); + + // Verify ratio was stored + double ratio = StaticLayoutContainers.getReplacementCharRatio(0); + Assertions.assertTrue(ratio >= 0.3, + "CID font PDF should have >= 30% replacement characters, got " + + String.format("%.1f%%", ratio * 100)); + } + + @Test + public void testCidPdf_warningLogEmitted() throws IOException { + Assumptions.assumeTrue(pdfAvailable, "CID font test PDF not available"); + + // Capture warning logs + Logger logger = Logger.getLogger(ContentFilterProcessor.class.getCanonicalName()); + List warnings = new ArrayList<>(); + Handler handler = new Handler() { + @Override public void publish(LogRecord r) { + if (r.getLevel() == Level.WARNING) { + warnings.add(r.getMessage()); + } + } + @Override public void flush() {} + @Override public void close() {} + }; + logger.addHandler(handler); + + try { + String pdfPath = CID_PDF_PATH.toAbsolutePath().toString(); + Config config = new Config(); + + DocumentProcessor.preprocessing(pdfPath, config); + StaticLayoutContainers.clearContainers(); + + ContentFilterProcessor.getFilteredContents( + pdfPath, + StaticContainers.getDocument().getArtifacts(0), + 0, + config + ); + + boolean hasReplacementWarning = warnings.stream() + .anyMatch(w -> w.contains("replacement characters")); + Assertions.assertTrue(hasReplacementWarning, + "Expected WARNING log about replacement characters"); + } finally { + logger.removeHandler(handler); + } + } + + /** + * Unit-level boundary tests (no PDF fixture needed). + */ + @Test + public void testBoundary_belowThreshold_29percent() { + // 29 replacement chars out of 100 = 0.29 (below threshold) + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < 29; i++) sb.append('\uFFFD'); + for (int i = 0; i < 71; i++) sb.append('A'); + + List contents = new ArrayList<>(); + contents.add(new TextChunk(new BoundingBox(1, 10.0, 10.0, 500.0, 20.0), + sb.toString(), 10, 10.0)); + + double ratio = TextProcessor.measureReplacementCharRatio(contents); + Assertions.assertTrue(ratio < 0.3, + "29% should be below threshold, got " + ratio); + } + + @Test + public void testBoundary_atThreshold_30percent() { + // 30 replacement chars out of 100 = 0.30 (at threshold) + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < 30; i++) sb.append('\uFFFD'); + for (int i = 0; i < 70; i++) sb.append('A'); + + List contents = new ArrayList<>(); + contents.add(new TextChunk(new BoundingBox(1, 10.0, 10.0, 500.0, 20.0), + sb.toString(), 10, 10.0)); + + double ratio = TextProcessor.measureReplacementCharRatio(contents); + Assertions.assertTrue(ratio >= 0.3, + "30% should be at threshold, got " + ratio); + } +} +``` + +- [ ] **Step 2: Run tests** + +Run: `cd java && mvn test -pl opendataloader-pdf-core -Dtest=CidFontDetectionTest -q` +Expected: Integration tests pass (or skip if fixture not yet generated). Boundary tests always pass. + +- [ ] **Step 3: Run full test suite** + +Run: `cd java && mvn test -pl opendataloader-pdf-core -q` +Expected: All tests PASS + +- [ ] **Step 4: Commit** + +```bash +git add java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/CidFontDetectionTest.java +git commit -m "test: add integration + boundary tests for CID font detection + +Integration tests load cid-font-no-tounicode.pdf through full pipeline. +Boundary tests verify 29%/30% threshold behavior." +``` + +--- + +## Chunk 4: Final Verification + +### Task 7: Full test suite + benchmark regression check + +- [ ] **Step 1: Run full Java test suite** + +Run: `cd java && mvn test -q` +Expected: All tests PASS across both core and cli modules + +- [ ] **Step 2: Check benchmark regression (if benchmark script exists)** + +Run: `./scripts/bench.sh --check-regression 2>/dev/null || echo "No benchmark script — skip"` +Expected: PASS or skip + +- [ ] **Step 3: Review all changes** + +Run: `git log --oneline main..HEAD` +Expected commits (newest first): +1. `test: add e2e tests for CID font detection pipeline` +2. `test: add synthetic CID font PDF test fixture` +3. `feat: add CID font detection signal to TriageProcessor` +4. `feat: detect CID font extraction failure and emit warning log` +5. `feat: add measureReplacementCharRatio to TextProcessor` +6. `feat: add per-page replacement char ratio storage to StaticLayoutContainers` + +- [ ] **Step 4: Update issue #286 comment** + +Update the previously posted enhancement comment with the actual fix status. The earlier `enhancement` label should be removed since this is now a fix. + +```bash +gh issue edit 286 --repo opendataloader-project/opendataloader-pdf --remove-label enhancement +``` diff --git a/docs/superpowers/plans/2026-04-18-hancom-ai-mock-server.md b/docs/superpowers/plans/2026-04-18-hancom-ai-mock-server.md new file mode 100644 index 0000000..efa4769 --- /dev/null +++ b/docs/superpowers/plans/2026-04-18-hancom-ai-mock-server.md @@ -0,0 +1,1710 @@ +# Hancom AI Mock Server Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Hancom AI 서버 부재 시 transformer 개발/디버그 사이클을 유지하기 위한 fixture-replay HTTP mock 서버 구현 + 클라이언트(`HancomAIClient.java`) REQUEST_ID 규약 패치. + +**Architecture:** Python(FastAPI) 로컬 서버가 200개 벤치 PDF의 SHA256을 인덱싱하고, PDF 입력은 SHA256 룩업, 이미지 입력은 클라이언트가 REQUEST_ID에 인코딩한 `(sha_short, page, obj, module)`로 룩업, pdf2img는 PyMuPDF로 동적 300DPI 렌더링 + base64 응답. 클라이언트는 `convert()` 진입 시 PDF SHA256을 캐시하고 모든 호출에 REQUEST_ID 규약 적용. + +**Tech Stack:** +- Mock 서버: Python 3.10+, FastAPI, uvicorn, PyMuPDF, pytest, httpx (TestClient) +- Client 패치: Java 8+, OkHttp, Jackson, Maven, JUnit 5 +- 데이터: `bundolee/kb-odl/raw/4-기술/2026-04-16_Q2-기술-ctx_hancom-ai-a11y_출력데이터-스키마/` +- PDFs: `opendataloader-project/opendataloader-bench/pdfs/` + +**Spec:** `bundolee/kb-odl/raw/4-기술/2026-04-18_Q2-DEV-02-Code_hancom-ai-mock-server-design.md` (commit `dfe0671`) + +--- + +## File Structure + +### Mock 서버 (신규) + +`opendataloader-project/opendataloader-pdfua/scripts/mock_server/` + +| 파일 | 책임 | +|---|---| +| `mock_server/__init__.py` | 빈 패키지 마커 | +| `mock_server/__main__.py` | CLI 엔트리포인트 (`python -m mock_server ...`) | +| `mock_server/index.py` | 부팅 시 `--pdf-dir` 스캔 → `{sha256: (basename, path)}` 인덱스 | +| `mock_server/request_id.py` | REQUEST_ID 정규식 파싱 (`odl-{sha12}-p{n}-o{n}-{module}`) | +| `mock_server/lookup.py` | 모듈명/입력타입에 따른 fixture 경로 결정 + JSON 로드. `FixtureMiss` 예외. | +| `mock_server/pdf_render.py` | PyMuPDF로 PDF 페이지 → PNG 300DPI bytes | +| `mock_server/server.py` | FastAPI app: `/ping`, `/hocr/sdk`, `/support/pdf2img` (각각 `/api/v1/` 변형 별칭) | +| `mock_server/tests/__init__.py` | | +| `mock_server/tests/conftest.py` | 테스트 fixture (샘플 PDF dir, 샘플 fixture dir) | +| `mock_server/tests/test_index.py` | | +| `mock_server/tests/test_request_id.py` | | +| `mock_server/tests/test_lookup.py` | | +| `mock_server/tests/test_pdf_render.py` | | +| `mock_server/tests/test_server.py` | | +| `mock_server/pyproject.toml` | 의존성 + pytest 설정 | +| `mock_server/README.md` | 실행법 + 디버깅 + client 패치 메모 | + +### Client 패치 (수정) + +`opendataloader-project/opendataloader-pdf/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HancomAIClient.java` + +`opendataloader-project/opendataloader-pdf/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/HancomAIClientRequestIdTest.java` (신규) + +--- + +## Phase 1 — Mock Server (10 tasks) + +### Task 1: 프로젝트 스캐폴딩 + +**Files:** +- Create: `opendataloader-project/opendataloader-pdfua/scripts/mock_server/pyproject.toml` +- Create: `opendataloader-project/opendataloader-pdfua/scripts/mock_server/__init__.py` +- Create: `opendataloader-project/opendataloader-pdfua/scripts/mock_server/tests/__init__.py` +- Create: `opendataloader-project/opendataloader-pdfua/scripts/mock_server/README.md` + +- [ ] **Step 1: pyproject.toml 작성** + +```toml +[project] +name = "hancom-ai-mock-server" +version = "0.1.0" +requires-python = ">=3.10" +dependencies = [ + "fastapi>=0.110", + "uvicorn>=0.27", + "pymupdf>=1.24", + "python-multipart>=0.0.9", +] + +[project.optional-dependencies] +dev = [ + "pytest>=8.0", + "httpx>=0.27", +] + +[tool.pytest.ini_options] +testpaths = ["tests"] +``` + +- [ ] **Step 2: 빈 패키지 마커 + README 초안** + +`mock_server/__init__.py`: +```python +"""Hancom AI HOCR SDK fixture-replay mock server.""" +``` + +`mock_server/tests/__init__.py`: +```python +``` + +`mock_server/README.md`: +```markdown +# Hancom AI Mock Server + +Fixture-replay mock for `HancomAIClient`. See spec at +`bundolee/kb-odl/raw/4-기술/2026-04-18_Q2-DEV-02-Code_hancom-ai-mock-server-design.md`. + +## Run + +```bash +cd opendataloader-pdfua/scripts/mock_server +pip install -e ".[dev]" +python -m mock_server \ + --pdf-dir /path/to/opendataloader-bench/pdfs \ + --fixture-dir /path/to/kb-odl/raw/4-기술/2026-04-16_Q2-기술-ctx_hancom-ai-a11y_출력데이터-스키마 \ + --port 18008 +``` + +## Tests + +```bash +pytest -v +``` +``` + +- [ ] **Step 3: 디렉토리 구조 확인** + +Run: `ls opendataloader-project/opendataloader-pdfua/scripts/mock_server/` +Expected: `pyproject.toml README.md __init__.py tests/` + +- [ ] **Step 4: Commit** + +```bash +cd opendataloader-project/opendataloader-pdfua +git add scripts/mock_server/ +git commit -m "feat(mock-server): scaffold project structure" +``` + +--- + +### Task 2: REQUEST_ID 파서 (TDD) + +**Files:** +- Test: `opendataloader-project/opendataloader-pdfua/scripts/mock_server/tests/test_request_id.py` +- Create: `opendataloader-project/opendataloader-pdfua/scripts/mock_server/mock_server/request_id.py` + +- [ ] **Step 1: 실패하는 테스트 작성** + +`tests/test_request_id.py`: +```python +import pytest +from mock_server.request_id import parse_request_id, RequestIdParts + + +def test_parse_caption(): + parts = parse_request_id("odl-a3f1c9d2e7b8-p0-o5-caption") + assert parts == RequestIdParts(sha_short="a3f1c9d2e7b8", page=0, obj=5, module="caption") + + +def test_parse_chart(): + parts = parse_request_id("odl-deadbeef0000-p3-o12-chart") + assert parts == RequestIdParts(sha_short="deadbeef0000", page=3, obj=12, module="chart") + + +def test_parse_tsr(): + parts = parse_request_id("odl-aabbccddeeff-p0-o0-tsr") + assert parts.module == "tsr" + + +def test_parse_invalid_returns_none(): + assert parse_request_id("odl-DOCUMENT_LAYOUT_WITH_OCR") is None + assert parse_request_id("garbage") is None + assert parse_request_id("") is None + assert parse_request_id("odl-a3f1-p0-o0-unknown") is None # bad module + + +def test_parse_pdf_module_request_id_returns_none(): + # PDF modules use REQUEST_ID for tracing only; mock matches via SHA256 of bytes. + # Parser returns None for these so caller falls back to PDF lookup path. + assert parse_request_id("odl-a3f1c9d2e7b8-dla-ocr") is None +``` + +- [ ] **Step 2: 테스트 실행 (실패 확인)** + +Run: `cd opendataloader-project/opendataloader-pdfua/scripts/mock_server && pytest tests/test_request_id.py -v` +Expected: FAIL — `ModuleNotFoundError: No module named 'mock_server.request_id'` + +- [ ] **Step 3: 최소 구현** + +`mock_server/request_id.py`: +```python +"""Parse client REQUEST_ID for image-input module lookup.""" +import re +from dataclasses import dataclass +from typing import Optional + +_PATTERN = re.compile( + r"^odl-(?P[0-9a-f]{12})-p(?P\d+)-o(?P\d+)-(?Pcaption|chart|tsr)$" +) + + +@dataclass(frozen=True) +class RequestIdParts: + sha_short: str + page: int + obj: int + module: str + + +def parse_request_id(request_id: str) -> Optional[RequestIdParts]: + if not request_id: + return None + m = _PATTERN.match(request_id) + if not m: + return None + return RequestIdParts( + sha_short=m.group("sha"), + page=int(m.group("page")), + obj=int(m.group("obj")), + module=m.group("module"), + ) +``` + +- [ ] **Step 4: 테스트 통과 확인** + +Run: `pytest tests/test_request_id.py -v` +Expected: 5 passed + +- [ ] **Step 5: Commit** + +```bash +git add scripts/mock_server/mock_server/request_id.py scripts/mock_server/tests/test_request_id.py +git commit -m "feat(mock-server): REQUEST_ID parser for image module lookup" +``` + +--- + +### Task 3: SHA256 인덱스 빌더 (TDD) + +**Files:** +- Test: `scripts/mock_server/tests/test_index.py` +- Test: `scripts/mock_server/tests/conftest.py` +- Create: `scripts/mock_server/mock_server/index.py` + +- [ ] **Step 1: conftest fixture 작성** + +`tests/conftest.py`: +```python +import hashlib +import shutil +from pathlib import Path +import pytest + + +@pytest.fixture +def sample_pdf_dir(tmp_path): + """Create a tiny PDF dir with 3 fake PDFs (just bytes, not parsed by index).""" + d = tmp_path / "pdfs" + d.mkdir() + for i in range(1, 4): + (d / f"pdf{i:03d}.pdf").write_bytes(f"FAKE_PDF_CONTENT_{i}".encode()) + return d + + +def sha256_hex(b: bytes) -> str: + return hashlib.sha256(b).hexdigest() +``` + +- [ ] **Step 2: 실패하는 테스트 작성** + +`tests/test_index.py`: +```python +from mock_server.index import build_pdf_index, PdfIndexEntry +from .conftest import sha256_hex + + +def test_build_index_three_pdfs(sample_pdf_dir): + index = build_pdf_index(sample_pdf_dir) + assert len(index) == 3 + expected_sha = sha256_hex(b"FAKE_PDF_CONTENT_1") + assert expected_sha in index + entry = index[expected_sha] + assert entry.basename == "pdf001" + assert entry.path == sample_pdf_dir / "pdf001.pdf" + + +def test_build_index_empty_dir(tmp_path): + index = build_pdf_index(tmp_path) + assert index == {} + + +def test_build_index_sha_short_lookup(sample_pdf_dir): + index = build_pdf_index(sample_pdf_dir) + full_sha = next(iter(index)) + short = full_sha[:12] + entry = index.find_by_short(short) + assert entry is not None + assert entry.basename in {"pdf001", "pdf002", "pdf003"} +``` + +- [ ] **Step 3: 테스트 실행 (실패 확인)** + +Run: `pytest tests/test_index.py -v` +Expected: FAIL — module not found + +- [ ] **Step 4: 최소 구현** + +`mock_server/index.py`: +```python +"""Build SHA256 index of benchmark PDFs at server boot.""" +import hashlib +from dataclasses import dataclass +from pathlib import Path +from typing import Dict, Optional + + +@dataclass(frozen=True) +class PdfIndexEntry: + basename: str + path: Path + + +class PdfIndex(dict): + """Dict {full_sha256: PdfIndexEntry} with helper for short-prefix lookup.""" + + def find_by_short(self, sha_short: str) -> Optional[PdfIndexEntry]: + for full_sha, entry in self.items(): + if full_sha.startswith(sha_short): + return entry + return None + + +def build_pdf_index(pdf_dir: Path) -> PdfIndex: + index = PdfIndex() + for path in sorted(Path(pdf_dir).glob("*.pdf")): + sha = hashlib.sha256(path.read_bytes()).hexdigest() + index[sha] = PdfIndexEntry(basename=path.stem, path=path) + return index +``` + +- [ ] **Step 5: 테스트 통과 확인** + +Run: `pytest tests/test_index.py -v` +Expected: 3 passed + +- [ ] **Step 6: Commit** + +```bash +git add scripts/mock_server/ +git commit -m "feat(mock-server): SHA256 PDF index with short-prefix lookup" +``` + +--- + +### Task 4: Lookup 로직 (TDD) + +**Files:** +- Test: `scripts/mock_server/tests/test_lookup.py` +- Test: `scripts/mock_server/tests/conftest.py` (확장) +- Create: `scripts/mock_server/mock_server/lookup.py` + +- [ ] **Step 1: conftest 확장 — 가짜 fixture dir** + +`tests/conftest.py` 끝에 추가: +```python +import json + + +@pytest.fixture +def sample_fixture_dir(tmp_path): + """Mimic the recorded data layout with one entry per module.""" + root = tmp_path / "fixtures" + for sub in ["DLA_OCR", "DLA", "OCR", "TSR", "TSR_regionlist", "FIGURE"]: + (root / sub).mkdir(parents=True) + (root / "DLA_OCR" / "pdf001.json").write_text(json.dumps({"module": "DLA_OCR", "id": "pdf001"})) + (root / "DLA" / "pdf001.json").write_text(json.dumps({"module": "DLA"})) + (root / "OCR" / "pdf001.json").write_text(json.dumps({"module": "OCR"})) + (root / "TSR" / "pdf002_p0_o0.json").write_text(json.dumps({"module": "TSR", "table": True})) + (root / "TSR_regionlist" / "pdf003_p0_o0.json").write_text(json.dumps({"module": "TSR_regionlist"})) + (root / "FIGURE" / "pdf001_p0_o5_caption.json").write_text(json.dumps({"caption": "test"})) + (root / "FIGURE" / "pdf001_p0_o5_chart.json").write_text(json.dumps({"understanding": "TITLE | <0x0A> 1 | 2"})) + return root +``` + +- [ ] **Step 2: 실패 테스트 작성** + +`tests/test_lookup.py`: +```python +import pytest +from mock_server.lookup import ( + lookup_pdf_module, lookup_image_module, FixtureMiss, + MODULE_TO_DIR, +) + + +def test_pdf_module_lookup_dla_ocr(sample_fixture_dir): + data = lookup_pdf_module(sample_fixture_dir, "DOCUMENT_LAYOUT_WITH_OCR", "pdf001") + assert data == {"module": "DLA_OCR", "id": "pdf001"} + + +def test_pdf_module_lookup_dla(sample_fixture_dir): + data = lookup_pdf_module(sample_fixture_dir, "DOCUMENT_LAYOUT_ANALYSIS", "pdf001") + assert data["module"] == "DLA" + + +def test_pdf_module_lookup_unknown_module(sample_fixture_dir): + with pytest.raises(FixtureMiss) as exc: + lookup_pdf_module(sample_fixture_dir, "BOGUS_MODULE", "pdf001") + assert "BOGUS_MODULE" in str(exc.value) + + +def test_pdf_module_lookup_missing_basename(sample_fixture_dir): + with pytest.raises(FixtureMiss): + lookup_pdf_module(sample_fixture_dir, "DOCUMENT_LAYOUT_WITH_OCR", "pdf999") + + +def test_image_module_lookup_caption(sample_fixture_dir): + data = lookup_image_module(sample_fixture_dir, "caption", "pdf001", page=0, obj=5) + assert data == {"caption": "test"} + + +def test_image_module_lookup_chart(sample_fixture_dir): + data = lookup_image_module(sample_fixture_dir, "chart", "pdf001", page=0, obj=5) + assert data["understanding"].startswith("TITLE") + + +def test_image_module_lookup_tsr_primary(sample_fixture_dir): + data = lookup_image_module(sample_fixture_dir, "tsr", "pdf002", page=0, obj=0) + assert data["table"] is True + + +def test_image_module_lookup_tsr_regionlist_fallback(sample_fixture_dir): + data = lookup_image_module(sample_fixture_dir, "tsr", "pdf003", page=0, obj=0) + assert data["module"] == "TSR_regionlist" + + +def test_image_module_lookup_missing(sample_fixture_dir): + with pytest.raises(FixtureMiss): + lookup_image_module(sample_fixture_dir, "caption", "pdf001", page=99, obj=99) + + +def test_module_to_dir_mapping(): + assert MODULE_TO_DIR["DOCUMENT_LAYOUT_WITH_OCR"] == "DLA_OCR" + assert MODULE_TO_DIR["TABLE_STRUCTURE_RECOGNITION"] == "TSR" +``` + +- [ ] **Step 3: 실패 확인** + +Run: `pytest tests/test_lookup.py -v` +Expected: FAIL — module not found + +- [ ] **Step 4: 구현** + +`mock_server/lookup.py`: +```python +"""Map (module, key) → fixture JSON path and load. Raises FixtureMiss on miss.""" +import json +from pathlib import Path +from typing import Any + + +class FixtureMiss(Exception): + """Raised when no fixture file matches the request.""" + + +MODULE_TO_DIR = { + "DOCUMENT_LAYOUT_WITH_OCR": "DLA_OCR", + "DOCUMENT_LAYOUT_ANALYSIS": "DLA", + "TEXT_RECOGNITION": "OCR", + "TABLE_STRUCTURE_RECOGNITION": "TSR", +} + + +def lookup_pdf_module(fixture_dir: Path, module_name: str, basename: str) -> Any: + sub = MODULE_TO_DIR.get(module_name) + if sub is None: + raise FixtureMiss(f"unknown PDF-input module: {module_name}") + path = Path(fixture_dir) / sub / f"{basename}.json" + if not path.exists(): + raise FixtureMiss(f"no fixture at {sub}/{basename}.json") + return json.loads(path.read_text()) + + +def lookup_image_module( + fixture_dir: Path, module_short: str, basename: str, page: int, obj: int +) -> Any: + if module_short in {"caption", "chart"}: + path = Path(fixture_dir) / "FIGURE" / f"{basename}_p{page}_o{obj}_{module_short}.json" + if not path.exists(): + raise FixtureMiss(f"no FIGURE fixture: {path.name}") + return json.loads(path.read_text()) + if module_short == "tsr": + primary = Path(fixture_dir) / "TSR" / f"{basename}_p{page}_o{obj}.json" + fallback = Path(fixture_dir) / "TSR_regionlist" / f"{basename}_p{page}_o{obj}.json" + for candidate in (primary, fallback): + if candidate.exists(): + return json.loads(candidate.read_text()) + raise FixtureMiss(f"no TSR fixture: {basename}_p{page}_o{obj}.json (TSR/ or TSR_regionlist/)") + raise FixtureMiss(f"unknown image module: {module_short}") +``` + +- [ ] **Step 5: 테스트 통과 확인** + +Run: `pytest tests/test_lookup.py -v` +Expected: 10 passed + +- [ ] **Step 6: Commit** + +```bash +git add scripts/mock_server/ +git commit -m "feat(mock-server): lookup with TSR_regionlist fallback" +``` + +--- + +### Task 5: PDF Renderer (TDD) + +**Files:** +- Test: `scripts/mock_server/tests/test_pdf_render.py` +- Create: `scripts/mock_server/mock_server/pdf_render.py` + +- [ ] **Step 1: 실패 테스트** + +`tests/test_pdf_render.py`: +```python +import io +import pytest +import fitz # PyMuPDF +from mock_server.pdf_render import render_page_png + + +@pytest.fixture +def real_pdf(tmp_path): + """Create a minimal 2-page PDF using PyMuPDF itself.""" + doc = fitz.open() + doc.new_page(width=612, height=792) # 1 page + doc.new_page(width=612, height=792) # 2 pages + p = tmp_path / "minimal.pdf" + doc.save(p) + doc.close() + return p + + +def test_render_first_page_returns_png_bytes(real_pdf): + png_bytes = render_page_png(real_pdf, page_index=0, dpi=300) + assert png_bytes[:8] == b"\x89PNG\r\n\x1a\n" + + +def test_render_dimensions_300dpi(real_pdf): + from PIL import Image + png_bytes = render_page_png(real_pdf, page_index=0, dpi=300) + img = Image.open(io.BytesIO(png_bytes)) + # 612pt at 300dpi / 72pt-per-inch = 2550px (±1 for rounding) + assert abs(img.width - 2550) <= 2 + assert abs(img.height - 3300) <= 2 + + +def test_render_out_of_range_raises(real_pdf): + with pytest.raises(IndexError): + render_page_png(real_pdf, page_index=99) +``` + +Note: Pillow is a transitive dep of PyMuPDF; if not, add to dev deps. + +- [ ] **Step 2: 실패 확인** + +Run: `pytest tests/test_pdf_render.py -v` +Expected: FAIL — module not found + +- [ ] **Step 3: 구현** + +`mock_server/pdf_render.py`: +```python +"""Render a PDF page to PNG bytes using PyMuPDF.""" +from pathlib import Path +import fitz + + +def render_page_png(pdf_path: Path, page_index: int, dpi: int = 300) -> bytes: + doc = fitz.open(str(pdf_path)) + try: + if page_index < 0 or page_index >= doc.page_count: + raise IndexError(f"page_index {page_index} out of range (0..{doc.page_count - 1})") + page = doc.load_page(page_index) + zoom = dpi / 72.0 + matrix = fitz.Matrix(zoom, zoom) + pixmap = page.get_pixmap(matrix=matrix, alpha=False) + return pixmap.tobytes("png") + finally: + doc.close() +``` + +- [ ] **Step 4: pyproject.toml dev deps에 Pillow 추가 (테스트용)** + +Edit `scripts/mock_server/pyproject.toml`, replace `[project.optional-dependencies]` block with: +```toml +[project.optional-dependencies] +dev = [ + "pytest>=8.0", + "httpx>=0.27", + "pillow>=10.0", +] +``` + +Reinstall: `pip install -e ".[dev]"` + +- [ ] **Step 5: 테스트 통과 확인** + +Run: `pytest tests/test_pdf_render.py -v` +Expected: 3 passed + +- [ ] **Step 6: Commit** + +```bash +git add scripts/mock_server/ +git commit -m "feat(mock-server): PyMuPDF page renderer at 300dpi" +``` + +--- + +### Task 6: FastAPI Server — /ping + /hocr/sdk PDF 분기 (TDD) + +**Files:** +- Test: `scripts/mock_server/tests/test_server.py` +- Create: `scripts/mock_server/mock_server/server.py` + +- [ ] **Step 1: 실패 테스트 (ping + DLA_OCR happy path + unknown PDF)** + +`tests/test_server.py`: +```python +import hashlib +import json +import pytest +from fastapi.testclient import TestClient +from mock_server.server import create_app + + +@pytest.fixture +def client(sample_pdf_dir, sample_fixture_dir): + # Make sample_fixture_dir match sample_pdf_dir basenames (pdf001..pdf003) + # sample_fixture_dir already has pdf001/pdf002/pdf003 entries; OK. + app = create_app(pdf_dir=sample_pdf_dir, fixture_dir=sample_fixture_dir) + return TestClient(app) + + +def test_ping(client): + r = client.get("/ping") + assert r.status_code == 200 + + +def test_ping_via_v1_alias(client): + r = client.get("/api/v1/ping") + assert r.status_code == 200 + + +def test_dla_ocr_happy_path(client, sample_pdf_dir): + pdf_bytes = (sample_pdf_dir / "pdf001.pdf").read_bytes() + r = client.post( + "/hocr/sdk", + data={ + "REQUEST_ID": "odl-anything-dla-ocr", + "OPEN_API_NAME": "DOCUMENT_LAYOUT_WITH_OCR", + "DATA_FORMAT": "pdf", + }, + files={"FILE": ("document.pdf", pdf_bytes, "application/pdf")}, + ) + assert r.status_code == 200 + body = r.json() + assert body["SUCCESS"] is True + assert body["MSG"] == "SUCCESS" + assert body["RESULT"] == {"module": "DLA_OCR", "id": "pdf001"} + + +def test_dla_ocr_via_v1_alias(client, sample_pdf_dir): + pdf_bytes = (sample_pdf_dir / "pdf001.pdf").read_bytes() + r = client.post( + "/api/v1/hocr/sdk", + data={"REQUEST_ID": "x", "OPEN_API_NAME": "DOCUMENT_LAYOUT_WITH_OCR", "DATA_FORMAT": "pdf"}, + files={"FILE": ("document.pdf", pdf_bytes, "application/pdf")}, + ) + assert r.status_code == 200 + assert r.json()["SUCCESS"] is True + + +def test_unknown_pdf_returns_fixture_miss(client): + r = client.post( + "/hocr/sdk", + data={"REQUEST_ID": "x", "OPEN_API_NAME": "DOCUMENT_LAYOUT_WITH_OCR", "DATA_FORMAT": "pdf"}, + files={"FILE": ("u.pdf", b"UNKNOWN_PDF_BYTES", "application/pdf")}, + ) + assert r.status_code == 200 # mirror real server semantics + body = r.json() + assert body["SUCCESS"] is False + assert body["MSG"] == "FIXTURE_MISS" + assert "_mock_hint" in body + assert "sha256" in body["_mock_hint"] +``` + +- [ ] **Step 2: 실패 확인** + +Run: `pytest tests/test_server.py -v` +Expected: FAIL — module not found + +- [ ] **Step 3: 구현** + +`mock_server/server.py`: +```python +"""FastAPI app for hancom-ai HOCR SDK mock.""" +import hashlib +import logging +from pathlib import Path +from typing import Optional + +from fastapi import FastAPI, Form, UploadFile, File, APIRouter + +from .index import build_pdf_index, PdfIndex +from .lookup import lookup_pdf_module, lookup_image_module, FixtureMiss +from .request_id import parse_request_id +from .pdf_render import render_page_png + +LOGGER = logging.getLogger("mock_server") + + +def _envelope(request_id: str, success: bool, msg: str, result, hint: Optional[str] = None): + body = {"REQUEST_ID": request_id, "SUCCESS": success, "MSG": msg, "RESULT": result if isinstance(result, list) else [result]} + if hint is not None: + body["_mock_hint"] = hint + return body + + +def create_app(pdf_dir: Path, fixture_dir: Path) -> FastAPI: + pdf_index: PdfIndex = build_pdf_index(Path(pdf_dir)) + LOGGER.info("indexed %d PDFs", len(pdf_index)) + + app = FastAPI() + router = APIRouter() + + @router.get("/ping") + def ping(): + return {"status": "ok"} + + @router.post("/hocr/sdk") + async def hocr_sdk( + REQUEST_ID: str = Form(""), + OPEN_API_NAME: str = Form(...), + DATA_FORMAT: str = Form(...), + FILE: UploadFile = File(...), + ): + body = await FILE.read() + if DATA_FORMAT == "pdf": + sha = hashlib.sha256(body).hexdigest() + entry = pdf_index.get(sha) + if entry is None: + hint = f"sha256={sha[:12]}... not in {len(pdf_index)}-PDF index" + LOGGER.warning("FIXTURE_MISS pdf %s module=%s", sha[:12], OPEN_API_NAME) + return _envelope(REQUEST_ID, False, "FIXTURE_MISS", [], hint) + try: + data = lookup_pdf_module(Path(fixture_dir), OPEN_API_NAME, entry.basename) + except FixtureMiss as e: + LOGGER.warning("FIXTURE_MISS pdf-lookup %s: %s", entry.basename, e) + return _envelope(REQUEST_ID, False, "FIXTURE_MISS", [], str(e)) + return _envelope(REQUEST_ID, True, "SUCCESS", data) + # image branch (Task 7) + return _envelope(REQUEST_ID, False, "FIXTURE_MISS", [], "image branch not implemented yet") + + app.include_router(router) + app.include_router(router, prefix="/api/v1") + return app +``` + +- [ ] **Step 4: 테스트 통과 확인** + +Run: `pytest tests/test_server.py -v` +Expected: 5 passed (ping x2, DLA_OCR happy x2, unknown PDF) + +- [ ] **Step 5: Commit** + +```bash +git add scripts/mock_server/ +git commit -m "feat(mock-server): /ping + /hocr/sdk PDF branch with /api/v1 alias" +``` + +--- + +### Task 7: 이미지 분기 추가 (TDD) + +**Files:** +- Modify: `scripts/mock_server/mock_server/server.py` +- Modify: `scripts/mock_server/tests/test_server.py` + +- [ ] **Step 1: 추가 테스트 작성** + +Append to `tests/test_server.py`: +```python +def test_image_caption_happy_path(client, sample_pdf_dir): + # Compute sha_short for pdf001 + pdf_bytes = (sample_pdf_dir / "pdf001.pdf").read_bytes() + sha_short = hashlib.sha256(pdf_bytes).hexdigest()[:12] + r = client.post( + "/hocr/sdk", + data={ + "REQUEST_ID": f"odl-{sha_short}-p0-o5-caption", + "OPEN_API_NAME": "IMAGE_CAPTIONING", + "DATA_FORMAT": "image", + }, + files={"FILE": ("crop.png", b"\x89PNGfake", "image/png")}, + ) + assert r.status_code == 200 + body = r.json() + assert body["SUCCESS"] is True + assert body["RESULT"][0] == {"caption": "test"} + + +def test_image_unparsable_request_id(client): + r = client.post( + "/hocr/sdk", + data={ + "REQUEST_ID": "odl-bad", + "OPEN_API_NAME": "IMAGE_CAPTIONING", + "DATA_FORMAT": "image", + }, + files={"FILE": ("crop.png", b"\x89PNGfake", "image/png")}, + ) + assert r.status_code == 200 + body = r.json() + assert body["SUCCESS"] is False + assert "REQUEST_ID" in body["_mock_hint"] + + +def test_image_unknown_pdf_short(client): + r = client.post( + "/hocr/sdk", + data={ + "REQUEST_ID": "odl-ffffffffffff-p0-o0-caption", + "OPEN_API_NAME": "IMAGE_CAPTIONING", + "DATA_FORMAT": "image", + }, + files={"FILE": ("crop.png", b"\x89PNGfake", "image/png")}, + ) + body = r.json() + assert body["SUCCESS"] is False + assert "ffffffffffff" in body["_mock_hint"] + + +def test_image_tsr_regionlist_fallback(client, sample_pdf_dir): + pdf_bytes = (sample_pdf_dir / "pdf003.pdf").read_bytes() + sha_short = hashlib.sha256(pdf_bytes).hexdigest()[:12] + r = client.post( + "/hocr/sdk", + data={ + "REQUEST_ID": f"odl-{sha_short}-p0-o0-tsr", + "OPEN_API_NAME": "TABLE_STRUCTURE_RECOGNITION", + "DATA_FORMAT": "image", + }, + files={"FILE": ("crop.png", b"\x89PNGfake", "image/png")}, + ) + assert r.json()["RESULT"][0]["module"] == "TSR_regionlist" +``` + +- [ ] **Step 2: 실패 확인** + +Run: `pytest tests/test_server.py -v -k image` +Expected: 4 failed (image branch returns FIXTURE_MISS placeholder) + +- [ ] **Step 3: 이미지 분기 구현** + +In `mock_server/server.py`, replace the image branch placeholder line `# image branch (Task 7)` and the line below it with: + +```python + # image branch + parts = parse_request_id(REQUEST_ID) + if parts is None: + hint = f"REQUEST_ID does not match odl--p-o-" + LOGGER.warning("FIXTURE_MISS bad REQUEST_ID: %s", REQUEST_ID) + return _envelope(REQUEST_ID, False, "FIXTURE_MISS", [], hint) + entry = pdf_index.find_by_short(parts.sha_short) + if entry is None: + hint = f"sha_short={parts.sha_short} not in {len(pdf_index)}-PDF index" + LOGGER.warning("FIXTURE_MISS unknown sha_short: %s", parts.sha_short) + return _envelope(REQUEST_ID, False, "FIXTURE_MISS", [], hint) + try: + data = lookup_image_module( + Path(fixture_dir), parts.module, entry.basename, parts.page, parts.obj + ) + except FixtureMiss as e: + LOGGER.warning("FIXTURE_MISS image-lookup: %s", e) + return _envelope(REQUEST_ID, False, "FIXTURE_MISS", [], str(e)) + return _envelope(REQUEST_ID, True, "SUCCESS", data) +``` + +- [ ] **Step 4: 테스트 통과 확인** + +Run: `pytest tests/test_server.py -v` +Expected: 9 passed (5 from Task 6 + 4 new) + +- [ ] **Step 5: Commit** + +```bash +git add scripts/mock_server/ +git commit -m "feat(mock-server): image module branch with REQUEST_ID parsing" +``` + +--- + +### Task 8: pdf2img 엔드포인트 (TDD) + +**Files:** +- Modify: `scripts/mock_server/mock_server/server.py` +- Modify: `scripts/mock_server/tests/test_server.py` +- Modify: `scripts/mock_server/tests/conftest.py` (real PDF fixture) + +- [ ] **Step 1: conftest에 real PDF 추가 + 인덱스에 포함** + +Edit `tests/conftest.py`, replace `sample_pdf_dir` with: +```python +@pytest.fixture +def sample_pdf_dir(tmp_path): + """Create a tiny PDF dir: 3 fake byte files + 1 real PDF for pdf2img tests.""" + import fitz + d = tmp_path / "pdfs" + d.mkdir() + for i in range(1, 4): + (d / f"pdf{i:03d}.pdf").write_bytes(f"FAKE_PDF_CONTENT_{i}".encode()) + # real 2-page PDF named pdf004.pdf + doc = fitz.open() + doc.new_page(width=612, height=792) + doc.new_page(width=612, height=792) + doc.save(d / "pdf004.pdf") + doc.close() + return d +``` + +- [ ] **Step 2: 실패 테스트 추가** + +Append to `tests/test_server.py`: +```python +import base64 + + +def test_pdf2img_returns_base64_png(client, sample_pdf_dir): + pdf_bytes = (sample_pdf_dir / "pdf004.pdf").read_bytes() + r = client.post( + "/support/pdf2img", + data={"REQUEST_ID": "odl-pdf2img-0", "PAGE_INDEX": "0"}, + files={"FILE": ("document.pdf", pdf_bytes, "application/pdf")}, + ) + assert r.status_code == 200 + body = r.json() + assert body["SUCCESS"] is True + png_b64 = body["RESULT"][0]["RESULT"]["PAGE_PNG_DATA"] + assert png_b64 + assert base64.b64decode(png_b64)[:8] == b"\x89PNG\r\n\x1a\n" + + +def test_pdf2img_via_v1_alias(client, sample_pdf_dir): + pdf_bytes = (sample_pdf_dir / "pdf004.pdf").read_bytes() + r = client.post( + "/api/v1/support/pdf2img", + data={"REQUEST_ID": "x", "PAGE_INDEX": "1"}, + files={"FILE": ("d.pdf", pdf_bytes, "application/pdf")}, + ) + assert r.json()["SUCCESS"] is True + + +def test_pdf2img_unknown_pdf(client): + r = client.post( + "/support/pdf2img", + data={"REQUEST_ID": "x", "PAGE_INDEX": "0"}, + files={"FILE": ("u.pdf", b"NOT_INDEXED", "application/pdf")}, + ) + body = r.json() + assert body["SUCCESS"] is False + assert body["MSG"] == "FIXTURE_MISS" + + +def test_pdf2img_out_of_range(client, sample_pdf_dir): + pdf_bytes = (sample_pdf_dir / "pdf004.pdf").read_bytes() + r = client.post( + "/support/pdf2img", + data={"REQUEST_ID": "x", "PAGE_INDEX": "99"}, + files={"FILE": ("d.pdf", pdf_bytes, "application/pdf")}, + ) + body = r.json() + assert body["SUCCESS"] is False + assert "page_index" in body["_mock_hint"] +``` + +- [ ] **Step 3: 실패 확인** + +Run: `pytest tests/test_server.py -v -k pdf2img` +Expected: 4 failed (404 from FastAPI — endpoint not registered) + +- [ ] **Step 4: pdf2img 라우트 추가** + +In `mock_server/server.py`, inside `create_app` after the `/hocr/sdk` route, add: +```python + @router.post("/support/pdf2img") + async def pdf2img( + REQUEST_ID: str = Form(""), + PAGE_INDEX: int = Form(...), + FILE: UploadFile = File(...), + ): + body = await FILE.read() + sha = hashlib.sha256(body).hexdigest() + entry = pdf_index.get(sha) + if entry is None: + hint = f"sha256={sha[:12]}... not in {len(pdf_index)}-PDF index" + return _envelope(REQUEST_ID, False, "FIXTURE_MISS", [], hint) + try: + png_bytes = render_page_png(entry.path, PAGE_INDEX, dpi=300) + except IndexError as e: + return _envelope(REQUEST_ID, False, "FIXTURE_MISS", [], str(e)) + import base64 + b64 = base64.b64encode(png_bytes).decode("ascii") + return _envelope( + REQUEST_ID, True, "SUCCESS", + {"RESULT": {"PAGE_PNG_DATA": b64}}, + ) +``` + +- [ ] **Step 5: 테스트 통과 확인** + +Run: `pytest tests/test_server.py -v` +Expected: 13 passed + +- [ ] **Step 6: Commit** + +```bash +git add scripts/mock_server/ +git commit -m "feat(mock-server): /support/pdf2img with PyMuPDF dynamic rendering" +``` + +--- + +### Task 9: CLI 엔트리포인트 + +**Files:** +- Create: `scripts/mock_server/mock_server/__main__.py` + +- [ ] **Step 1: 구현** + +`mock_server/__main__.py`: +```python +"""CLI: python -m mock_server --pdf-dir ... --fixture-dir ... --port 18008""" +import argparse +import logging +import sys +from pathlib import Path + +import uvicorn + +from .server import create_app + + +def main(argv=None): + parser = argparse.ArgumentParser(prog="mock_server") + parser.add_argument("--pdf-dir", required=True, type=Path) + parser.add_argument("--fixture-dir", required=True, type=Path) + parser.add_argument("--port", type=int, default=18008) + parser.add_argument("--host", default="127.0.0.1") + args = parser.parse_args(argv) + + logging.basicConfig( + level=logging.INFO, + format="%(asctime)s %(levelname)s %(name)s %(message)s", + ) + + if not args.pdf_dir.is_dir(): + print(f"--pdf-dir not found: {args.pdf_dir}", file=sys.stderr) + sys.exit(2) + if not args.fixture_dir.is_dir(): + print(f"--fixture-dir not found: {args.fixture_dir}", file=sys.stderr) + sys.exit(2) + + app = create_app(pdf_dir=args.pdf_dir, fixture_dir=args.fixture_dir) + uvicorn.run(app, host=args.host, port=args.port, log_level="info") + + +if __name__ == "__main__": + main() +``` + +- [ ] **Step 2: smoke test — CLI 인자 검증** + +Run: +```bash +cd opendataloader-project/opendataloader-pdfua/scripts/mock_server +python -m mock_server --pdf-dir /nonexistent --fixture-dir /nonexistent +``` +Expected: exit code 2, stderr `--pdf-dir not found: /nonexistent` + +- [ ] **Step 3: 실제 데이터로 부팅 smoke test** + +Run (in a separate terminal or background, then kill): +```bash +python -m mock_server \ + --pdf-dir /Users/benedict/Workspace/opendataloader-project/opendataloader-bench/pdfs \ + --fixture-dir /Users/benedict/Workspace/bundolee/kb-odl/raw/4-기술/2026-04-16_Q2-기술-ctx_hancom-ai-a11y_출력데이터-스키마 \ + --port 18008 & +sleep 2 +curl -s http://127.0.0.1:18008/ping +kill %1 +``` +Expected: log `indexed 200 PDFs`, curl returns `{"status":"ok"}`. + +- [ ] **Step 4: Commit** + +```bash +git add scripts/mock_server/ +git commit -m "feat(mock-server): CLI entrypoint with arg validation" +``` + +--- + +### Task 10: README 마무리 + E2E 절차 기록 + +**Files:** +- Modify: `scripts/mock_server/README.md` + +- [ ] **Step 1: README 확장** + +Replace `mock_server/README.md` with: +```markdown +# Hancom AI Mock Server + +Fixture-replay mock for [HancomAIClient.java](../../../opendataloader-pdf/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HancomAIClient.java). + +Spec: `bundolee/kb-odl/raw/4-기술/2026-04-18_Q2-DEV-02-Code_hancom-ai-mock-server-design.md` + +## Setup + +```bash +cd opendataloader-pdfua/scripts/mock_server +pip install -e ".[dev]" +``` + +## Run + +```bash +python -m mock_server \ + --pdf-dir /Users/benedict/Workspace/opendataloader-project/opendataloader-bench/pdfs \ + --fixture-dir /Users/benedict/Workspace/bundolee/kb-odl/raw/4-기술/2026-04-16_Q2-기술-ctx_hancom-ai-a11y_출력데이터-스키마 \ + --port 18008 +``` + +Expect log: `indexed 200 PDFs, listening on :18008`. + +## Endpoints + +| Method | Path (and `/api/v1/` alias) | Purpose | +|---|---|---| +| GET | `/ping` | Health check (HTTP 200) | +| POST | `/hocr/sdk` | All 6 modules (DATA_FORMAT distinguishes pdf vs image) | +| POST | `/support/pdf2img` | 300dpi PNG, base64 encoded | + +## REQUEST_ID Convention + +Image-input modules (TSR / IMAGE_CAPTIONING / CHART_IMAGE_UNDERSTANDING) require: + +``` +odl-{sha_short}-p{page}-o{obj}-{module_short} +``` + +- `sha_short` = first 12 hex chars of source PDF SHA256 +- `module_short` ∈ {`caption`, `chart`, `tsr`} + +PDF-input modules (DLA_OCR / DLA / OCR / TSR-pdf / pdf2img) match via SHA256 of FILE bytes; REQUEST_ID is informational. + +The Java client patch (Phase 2 of the plan) builds these IDs automatically. + +## End-to-End Smoke Test + +After both Phase 1 (server) and Phase 2 (client patch) are merged: + +```bash +# Terminal 1 +python -m mock_server --pdf-dir ... --fixture-dir ... --port 18008 + +# Terminal 2 — pdfua against the mock +cd opendataloader-project/opendataloader-pdfua +mvn package -q +java -jar target/*.jar \ + --input /path/to/opendataloader-bench/pdfs/01030000000001.pdf \ + --output /tmp/out \ + --hybrid hancom-ai \ + --hybrid-url http://localhost:18008 +``` + +Expected: tagged PDF appears in `/tmp/out`, server log shows DLA_OCR + pdf2img + TSR + IMAGE_CAPTIONING calls all returning SUCCESS. + +## Tests + +```bash +pytest -v +``` + +Expected: ~22 tests pass. + +## FIXTURE_MISS Debugging + +When `SUCCESS:false`, response includes `_mock_hint`: + +- `sha256=... not in 200-PDF index` → input PDF is not in the recorded benchmark set; either add it or use a benchmark PDF. +- `REQUEST_ID does not match odl--p-o-<...>` → client did not apply the REQUEST_ID convention; check Phase 2 patch. +- `no FIXTURE_<...>` → the recorded set lacks this specific page/object; this can happen for new combinations. +``` + +- [ ] **Step 2: Commit** + +```bash +git add scripts/mock_server/README.md +git commit -m "docs(mock-server): README with endpoints, REQUEST_ID convention, E2E smoke" +``` + +--- + +## Phase 2 — Client Patch (4 tasks) + +### Task 11: Test for REQUEST_ID building (TDD) + +**Files:** +- Create: `opendataloader-project/opendataloader-pdf/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/HancomAIClientRequestIdTest.java` + +- [ ] **Step 1: 실패 테스트 작성** + +`HancomAIClientRequestIdTest.java`: +```java +package org.opendataloader.pdf.hybrid; + +import com.fasterxml.jackson.databind.ObjectMapper; +import okhttp3.OkHttpClient; +import okhttp3.mockwebserver.MockResponse; +import okhttp3.mockwebserver.MockWebServer; +import okhttp3.mockwebserver.RecordedRequest; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.io.ByteArrayOutputStream; +import java.security.MessageDigest; +import java.util.HexFormat; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +class HancomAIClientRequestIdTest { + + private MockWebServer server; + private HancomAIClient client; + + @BeforeEach + void setUp() throws Exception { + server = new MockWebServer(); + server.start(); + client = new HancomAIClient( + server.url("").toString().replaceAll("/$", ""), + new OkHttpClient(), + new ObjectMapper() + ); + } + + @AfterEach + void tearDown() throws Exception { + server.shutdown(); + } + + @Test + void callModule_request_id_includes_sha_short() throws Exception { + byte[] pdfBytes = "PDF_CONTENT_FOR_TEST".getBytes(); + String shaShort = sha256Hex(pdfBytes).substring(0, 12); + + server.enqueue(new MockResponse() + .setResponseCode(200) + .setBody("{\"SUCCESS\":true,\"RESULT\":[]}")); + + // invokeCallModule is a package-private test hook added by the patch. + client.invokeCallModule(pdfBytes, "DOCUMENT_LAYOUT_WITH_OCR"); + + RecordedRequest req = server.takeRequest(); + String body = req.getBody().readUtf8(); + assertTrue(body.contains("odl-" + shaShort + "-dla-ocr"), + "REQUEST_ID should include sha_short and module short name; body=" + body); + } + + @Test + void callImageCaptioning_request_id_includes_page_obj() throws Exception { + byte[] pdfBytes = "PDF_CONTENT_FOR_TEST".getBytes(); + String shaShort = sha256Hex(pdfBytes).substring(0, 12); + client.setSourcePdfShaShort(shaShort); // test hook + + server.enqueue(new MockResponse() + .setResponseCode(200) + .setBody("{\"SUCCESS\":true,\"RESULT\":[[{\"caption\":\"x\"}]]}")); + + client.invokeCallImageCaptioning(new byte[]{1, 2, 3}, /*pageNum*/ 2, /*objectId*/ 7); + + RecordedRequest req = server.takeRequest(); + String body = req.getBody().readUtf8(); + assertTrue(body.contains("odl-" + shaShort + "-p2-o7-caption"), + "image REQUEST_ID format mismatch; body=" + body); + } + + private static String sha256Hex(byte[] b) throws Exception { + MessageDigest md = MessageDigest.getInstance("SHA-256"); + return HexFormat.of().formatHex(md.digest(b)); + } +} +``` + +- [ ] **Step 2: pom.xml에 mockwebserver 의존성 확인** + +Run: `grep -n "mockwebserver" opendataloader-project/opendataloader-pdf/java/opendataloader-pdf-core/pom.xml` +Expected: dependency line exists. If not, add to `pom.xml` ``: +```xml + + com.squareup.okhttp3 + mockwebserver + 4.12.0 + test + +``` + +- [ ] **Step 3: 실패 확인** + +Run: +```bash +cd opendataloader-project/opendataloader-pdf/java +mvn -pl opendataloader-pdf-core test -Dtest=HancomAIClientRequestIdTest +``` +Expected: COMPILE FAIL — `invokeCallModule`, `invokeCallImageCaptioning`, `setSourcePdfShaShort` not defined. + +- [ ] **Step 4: Commit (test only, expecting fail)** + +```bash +cd opendataloader-project/opendataloader-pdf +git add java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/HancomAIClientRequestIdTest.java java/opendataloader-pdf-core/pom.xml +git commit -m "test(hybrid): failing test for HancomAIClient REQUEST_ID convention" +``` + +--- + +### Task 12: HancomAIClient 패치 — REQUEST_ID 빌드 + +**Files:** +- Modify: `opendataloader-project/opendataloader-pdf/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HancomAIClient.java` + +- [ ] **Step 1: SHA256 헬퍼 + 인스턴스 필드 + 모듈 단축명 맵 추가** + +In `HancomAIClient.java` after the existing instance field declarations (after `private final HybridConfig config;`), add: +```java + private String sourcePdfShaShort = "unknown"; + + private static final java.util.Map MODULE_SHORT; + static { + java.util.Map m = new java.util.HashMap<>(); + m.put("DOCUMENT_LAYOUT_WITH_OCR", "dla-ocr"); + m.put("DOCUMENT_LAYOUT_ANALYSIS", "dla"); + m.put("TEXT_RECOGNITION", "ocr"); + m.put("TABLE_STRUCTURE_RECOGNITION", "tsr"); + m.put("IMAGE_CAPTIONING", "caption"); + m.put("CHART_IMAGE_UNDERSTANDING", "chart"); + MODULE_SHORT = java.util.Collections.unmodifiableMap(m); + } + + private static String sha256ShortHex(byte[] data) { + try { + java.security.MessageDigest md = java.security.MessageDigest.getInstance("SHA-256"); + byte[] hash = md.digest(data); + StringBuilder sb = new StringBuilder(12); + for (int i = 0; i < 6; i++) sb.append(String.format("%02x", hash[i])); + return sb.toString(); + } catch (java.security.NoSuchAlgorithmException e) { + return "nohash000000"; + } + } + + // Test hook + void setSourcePdfShaShort(String s) { this.sourcePdfShaShort = s; } +``` + +- [ ] **Step 2: `convert(HybridRequest)` 진입에서 SHA 계산** + +In `convert(...)` method, immediately after `byte[] pdfBytes = request.getPdfBytes();`, add: +```java + this.sourcePdfShaShort = sha256ShortHex(pdfBytes); +``` + +- [ ] **Step 3: `callModule` REQUEST_ID 변경** + +In `callModule(byte[] pdfBytes, String moduleName)` method, replace the line: +```java + .addFormDataPart("REQUEST_ID", "odl-" + moduleName) +``` +with: +```java + .addFormDataPart("REQUEST_ID", + "odl-" + sourcePdfShaShort + "-" + MODULE_SHORT.getOrDefault(moduleName, moduleName)) +``` + +- [ ] **Step 4: `callModuleImage` 시그니처 + REQUEST_ID 변경** + +Replace the entire `callModuleImage` method with: +```java + private JsonNode callModuleImage(byte[] pngBytes, String moduleName, int pageNum, int objectId) throws IOException { + String moduleShort = MODULE_SHORT.getOrDefault(moduleName, moduleName); + String requestId = "odl-" + sourcePdfShaShort + "-p" + pageNum + "-o" + objectId + "-" + moduleShort; + MultipartBody body = new MultipartBody.Builder() + .setType(MultipartBody.FORM) + .addFormDataPart("REQUEST_ID", requestId) + .addFormDataPart("OPEN_API_NAME", moduleName) + .addFormDataPart("DATA_FORMAT", "image") + .addFormDataPart("FILE", "crop.png", + RequestBody.create(pngBytes, MEDIA_TYPE_PNG)) + .build(); + + Request httpRequest = new Request.Builder() + .url(baseUrl + SDK_ENDPOINT) + .post(body) + .build(); + + LOGGER.log(Level.FINE, "Calling Hancom AI module (image): {0} [{1}]", + new Object[]{moduleName, requestId}); + + try (Response response = httpClient.newCall(httpRequest).execute()) { + if (!response.isSuccessful()) { + ResponseBody respBody = response.body(); + String errorMsg = respBody != null ? respBody.string() : ""; + LOGGER.log(Level.WARNING, "Hancom AI module {0} (image) returned HTTP {1}: {2}", + new Object[]{moduleName, response.code(), errorMsg}); + return objectMapper.createArrayNode(); + } + + ResponseBody respBody = response.body(); + if (respBody == null) { + return objectMapper.createArrayNode(); + } + + JsonNode root = objectMapper.readTree(respBody.string()); + boolean success = root.has("SUCCESS") && root.get("SUCCESS").asBoolean(); + if (!success) { + LOGGER.log(Level.WARNING, "Hancom AI module {0} (image) returned SUCCESS=false: {1}", + new Object[]{moduleName, root.has("MSG") ? root.get("MSG").asText() : ""}); + return objectMapper.createArrayNode(); + } + + JsonNode result = root.get("RESULT"); + return result != null ? result : objectMapper.createArrayNode(); + } + } +``` + +Update the single existing call site of `callModuleImage` (line ~410 in original, inside `recognizeTableStructures`) — find: +```java + JsonNode tsrResult = callModuleImage(cropPng, "TABLE_STRUCTURE_RECOGNITION"); +``` +and replace with: +```java + int objId = obj.has("object_id") ? obj.get("object_id").asInt() : -1; + JsonNode tsrResult = callModuleImage(cropPng, "TABLE_STRUCTURE_RECOGNITION", pageNum, objId); +``` + +- [ ] **Step 5: `callImageCaptioning` 시그니처 + REQUEST_ID 변경** + +Replace the `callImageCaptioning` method signature and body with: +```java + private String callImageCaptioning(byte[] pngBytes, int pageNum, int objectId) throws IOException { + String requestId = "odl-" + sourcePdfShaShort + "-p" + pageNum + "-o" + objectId + "-caption"; + MultipartBody body = new MultipartBody.Builder() + .setType(MultipartBody.FORM) + .addFormDataPart("REQUEST_ID", requestId) + .addFormDataPart("OPEN_API_NAME", "IMAGE_CAPTIONING") + .addFormDataPart("DATA_FORMAT", "image") + .addFormDataPart("FILE", "figure.png", + RequestBody.create(pngBytes, MEDIA_TYPE_PNG)) + .build(); + + Request httpRequest = new Request.Builder() + .url(baseUrl + SDK_ENDPOINT) + .post(body) + .build(); + + try (Response response = httpClient.newCall(httpRequest).execute()) { + if (!response.isSuccessful()) return null; + + ResponseBody respBody = response.body(); + if (respBody == null) return null; + + JsonNode root = objectMapper.readTree(respBody.string()); + if (!root.has("SUCCESS") || !root.get("SUCCESS").asBoolean()) return null; + + JsonNode result = root.get("RESULT"); + if (result == null || !result.isArray() || result.size() == 0) return null; + + JsonNode page = result.get(0); + if (page.isArray() && page.size() > 0) page = page.get(0); + + return page.has("caption") ? page.get("caption").asText("") : null; + } + } +``` + +Update the single existing call site (inside `captionFigures`, line ~294 in original) — find: +```java + String caption = callImageCaptioning(croppedPng); +``` +and replace with: +```java + int objIdForCaption = fig.has("object_id") ? fig.get("object_id").asInt() : -1; + String caption = callImageCaptioning(croppedPng, pageNum, objIdForCaption); +``` + +- [ ] **Step 6: `fetchPageImage` REQUEST_ID 강화 (mock 매칭 무관, 디버그 일관성)** + +In `fetchPageImage(...)`, replace: +```java + .addFormDataPart("REQUEST_ID", "odl-pdf2img-" + pageIndex) +``` +with: +```java + .addFormDataPart("REQUEST_ID", + "odl-" + sourcePdfShaShort + "-pdf2img-p" + pageIndex) +``` + +- [ ] **Step 7: 테스트 hook 메서드 추가 (package-private)** + +At the very bottom of the class (before the closing `}`), add: +```java + // --- Test hooks (package-private) --- + + void invokeCallModule(byte[] pdfBytes, String moduleName) throws IOException { + this.sourcePdfShaShort = sha256ShortHex(pdfBytes); + callModule(pdfBytes, moduleName); + } + + void invokeCallImageCaptioning(byte[] pngBytes, int pageNum, int objectId) throws IOException { + callImageCaptioning(pngBytes, pageNum, objectId); + } +``` + +- [ ] **Step 8: 컴파일 + 새 테스트 통과 확인** + +Run: +```bash +cd opendataloader-project/opendataloader-pdf/java +mvn -pl opendataloader-pdf-core test -Dtest=HancomAIClientRequestIdTest +``` +Expected: 2 passed. + +- [ ] **Step 9: 기존 테스트도 회귀 없는지 확인** + +Run: +```bash +mvn -pl opendataloader-pdf-core test +``` +Expected: BUILD SUCCESS, all tests pass. + +- [ ] **Step 10: Commit** + +```bash +cd opendataloader-project/opendataloader-pdf +git add java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HancomAIClient.java +git commit -m "feat(hybrid): HancomAIClient REQUEST_ID convention with sha-short, page, obj + +For mock-server fixture lookup. Real Hancom AI server treats REQUEST_ID +as opaque client-defined string; no behavior change there. + +Spec: bundolee/kb-odl/.../2026-04-18_Q2-DEV-02-Code_hancom-ai-mock-server-design.md" +``` + +--- + +### Task 13: 통합 smoke — pdfua → mock 전체 호출 체인 + +**Files:** (코드 변경 없음, 검증만) + +- [ ] **Step 1: pdf-core 로컬 install** + +Run: +```bash +cd opendataloader-project/opendataloader-pdf/java +mvn -pl opendataloader-pdf-core install -DskipTests +``` +Expected: BUILD SUCCESS, artifact installed to `~/.m2`. + +- [ ] **Step 2: pdfua 빌드** + +Run: +```bash +cd opendataloader-project/opendataloader-pdfua +mvn package -DskipTests +``` +Expected: BUILD SUCCESS, jar at `target/`. + +- [ ] **Step 3: mock 서버 백그라운드 기동** + +Run: +```bash +cd opendataloader-project/opendataloader-pdfua/scripts/mock_server +python -m mock_server \ + --pdf-dir /Users/benedict/Workspace/opendataloader-project/opendataloader-bench/pdfs \ + --fixture-dir /Users/benedict/Workspace/bundolee/kb-odl/raw/4-기술/2026-04-16_Q2-기술-ctx_hancom-ai-a11y_출력데이터-스키마 \ + --port 18008 > /tmp/mock-server.log 2>&1 & +sleep 2 +curl -sf http://127.0.0.1:18008/ping +``` +Expected: `{"status":"ok"}`, log contains `indexed 200 PDFs`. + +- [ ] **Step 4: pdfua 실행** + +Run: +```bash +mkdir -p /tmp/mock-out +cd opendataloader-project/opendataloader-pdfua +java -jar target/*.jar \ + --input /Users/benedict/Workspace/opendataloader-project/opendataloader-bench/pdfs/01030000000001.pdf \ + --output /tmp/mock-out \ + --hybrid hancom-ai \ + --hybrid-url http://localhost:18008 +``` +Expected: exit 0, output PDF in `/tmp/mock-out/`, server log shows DLA_OCR + pdf2img + (TSR or IMAGE_CAPTIONING based on document) all SUCCESS. + +- [ ] **Step 5: FIXTURE_MISS 의도적 트리거 — 외부 PDF** + +Run: +```bash +echo "%PDF-1.4 fake" > /tmp/notindexed.pdf +java -jar opendataloader-project/opendataloader-pdfua/target/*.jar \ + --input /tmp/notindexed.pdf \ + --output /tmp/mock-out2 \ + --hybrid hancom-ai \ + --hybrid-url http://localhost:18008 +``` +Expected: server log contains `FIXTURE_MISS pdf` warning with sha prefix; pdfua may either fail loud or fall back gracefully — record actual behavior in commit message. + +- [ ] **Step 6: 서버 종료 + 로그 보존** + +Run: +```bash +kill %1 || pkill -f "python -m mock_server" +cp /tmp/mock-server.log opendataloader-project/opendataloader-pdfua/scripts/mock_server/e2e-smoke.log +``` + +- [ ] **Step 7: 결과 검토 + commit** + +Run: +```bash +ls -la /tmp/mock-out/ +head -50 opendataloader-project/opendataloader-pdfua/scripts/mock_server/e2e-smoke.log +``` + +```bash +cd opendataloader-project/opendataloader-pdfua +git add scripts/mock_server/e2e-smoke.log +git commit -m "chore(mock-server): record e2e smoke log against benchmark PDF #01030000000001" +``` + +--- + +### Task 14: 회의록에 완료 보고 추가 + +**Files:** +- Modify: `bundolee/kb-odl/raw/운영/회의록/2026-04-16_hancom-ai-a11y_2차회의-매핑표-리뷰.md` (다음 액션 표 업데이트) 또는 별도 진행 보고 + +- [ ] **Step 1: 회의록 다음 액션 표 갱신** + +In the meeting notes' "다음 액션" table (around line 63), find rows referencing the blocked development and append a status note. If unsure where, add a new row below the existing table: + +```markdown +| 8 | hancom-ai mock 서버 + client REQUEST_ID 패치 완료 | 기술 | 2026-04-18 — transformer 재설계 막힘 해소 | +``` + +- [ ] **Step 2: Commit (in kb-odl)** + +```bash +cd /Users/benedict/Workspace/bundolee/kb-odl +git add "raw/운영/회의록/2026-04-16_hancom-ai-a11y_2차회의-매핑표-리뷰.md" +git commit -m "회의록 갱신: hancom-ai mock 서버 구축 완료, transformer 재설계 unblock" +``` + +--- + +## Self-Review Checklist (작성자 자체 검증) + +**Spec coverage:** +- ✅ 6개 모듈 (DLA_OCR/DLA/OCR/TSR/IMAGE_CAPTIONING/CHART) — Task 4 lookup, Task 6/7 server +- ✅ pdf2img 동적 변환 — Task 5 renderer, Task 8 endpoint +- ✅ /ping 엔드포인트 — Task 6 +- ✅ /api/v1 alias — Task 6 +- ✅ DATA_FORMAT 분기 — Task 6/7 +- ✅ TSR_regionlist 폴백 — Task 4 +- ✅ Unknown PDF FIXTURE_MISS — Task 6 +- ✅ Client 패치 (REQUEST_ID 규약 6개 모듈 단축명, sha_short, page, obj) — Task 11/12 +- ✅ E2E smoke — Task 13 + +**Placeholder scan:** TBD/TODO/"구현 나중에" 없음. 모든 코드 step에 완전한 코드 블록 첨부. + +**Type consistency:** `RequestIdParts(sha_short, page, obj, module)` 일관, `MODULE_TO_DIR`(server-side mapping) vs `MODULE_SHORT`(client-side mapping) 분리 명확. `lookup_image_module(..., module_short, basename, page, obj)` 시그니처 일관. + +**Java 컴파일 위험요소:** +- `HexFormat`은 Java 17+. 만약 빌드 타깃이 Java 8/11이면 테스트에서 직접 hex 변환 헬퍼로 대체 필요. Task 11 Step 1 컴파일 실패 시 즉시 발견. +- mockwebserver 의존성 추가 필요 (Task 11 Step 2에서 검증). + +--- + +## Execution Handoff + +Plan complete and saved to `opendataloader-project/opendataloader-pdf/docs/superpowers/plans/2026-04-18-hancom-ai-mock-server.md`. + +Two execution options: + +1. **Subagent-Driven (recommended)** — fresh subagent per task with two-stage review between tasks. Best for this plan since it spans two repos (Python + Java) and has a clear TDD rhythm. + +2. **Inline Execution** — execute tasks in this session with checkpoints. Faster turnaround but heavier on the main context. + +Which approach? diff --git a/docs/superpowers/plans/2026-04-29-hybrid-hancom-ai-options.md b/docs/superpowers/plans/2026-04-29-hybrid-hancom-ai-options.md new file mode 100644 index 0000000..cc7c973 --- /dev/null +++ b/docs/superpowers/plans/2026-04-29-hybrid-hancom-ai-options.md @@ -0,0 +1,1265 @@ +# Hybrid hancom-ai Options & CLI Refactoring Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Expose 5 hancom-ai-specific knobs as `--hybrid-hancom-ai-*` CLI options, then refactor `CLIOptions` so opendataloader-pdfua reuses the entire core option set instead of redefining its own. + +**Architecture:** Three independent commits. (1) Add 5 options + gate validation in core. (2) Extract `addAllTo` / `applyAllTo` public API on `CLIOptions`. (3) Refactor pdfua's `Main.java` and `RemediationConfig` to consume that API; collapse 9 `RemediationConfig` constructors into a Builder; embed `Config` directly. Hard-break removed getters since all call sites are internal/test. + +**Tech Stack:** Java 11, Apache Commons CLI, JUnit 5, Maven multi-module (`opendataloader-pdf-core`, `opendataloader-pdf-cli`, `opendataloader-pdfua`). + +--- + +## File Structure + +**opendataloader-pdf (core)** + +| File | Action | Responsibility | +|---|---|---| +| `java/opendataloader-pdf-cli/src/main/java/org/opendataloader/pdf/cli/CLIOptions.java` | Modify | Add 5 option constants, 5 OPTION_DEFINITIONS entries, parsing in `applyHybridOptions`, hancom-ai gate. Add public `addAllTo(Options)` and `applyAllTo(Config, CommandLine)`. | +| `java/opendataloader-pdf-cli/src/test/java/org/opendataloader/pdf/cli/CLIOptionsTest.java` | Modify | Tests for each new option's parsing + gate enforcement. | +| `options.json` (root) | Regenerate | Auto-generated from `CLIOptions` via `npm run sync`. | +| Python/Node bindings | Regenerate | Auto-generated by `npm run sync`. | + +**opendataloader-pdfua** + +| File | Action | Responsibility | +|---|---|---| +| `src/main/java/org/opendataloader/pdf/Main.java` | Modify | Replace self-defined hybrid options with `CLIOptions.addAllTo()`. Add `applyPdfuaDefaults()`. Use new `RemediationConfig.Builder`. | +| `src/main/java/org/opendataloader/pdf/remediation/RemediationConfig.java` | Modify | Embed core `Config`. Replace 9 constructors with one Builder. Remove `getHybridUrl()` / `getHybridMode()` (delegate via `getHybridConfig()`). | +| `src/main/java/org/opendataloader/pdf/remediation/RemediationProcessor.java` | Modify | Replace per-field hybrid forwarding (lines 163-170) with `config = remediationConfig.getCoreConfig()`. | +| `src/test/java/.../AuditBundleEmitterTest.java` | Modify | Switch to Builder. | +| `src/test/java/.../CertificateIssuerTest.java` | Modify | Switch to Builder (4 instantiations). | +| `src/test/java/.../AuditManifestBuilderTest.java` | Modify | Switch to Builder (4 instantiations). | +| `src/test/java/.../RemediationConfigAuditBundleTest.java` | Modify | Switch to Builder. | + +--- + +## Phase 1 — Add 5 hybrid-hancom-ai-* options to core + +### Task 1.1: Add option name + description constants + +**Files:** +- Modify: `opendataloader-pdf/java/opendataloader-pdf-cli/src/main/java/org/opendataloader/pdf/cli/CLIOptions.java` (insert after line 137, the existing `HYBRID_FALLBACK_DESC`) + +- [ ] **Step 1: Add the 5 long-option constants and descriptions** + +Insert after the `HYBRID_FALLBACK_DESC` block (currently around line 137) and before the `// ===== Stdout Output =====` section header: + +```java + // ===== Hybrid hancom-ai backend-specific ===== + private static final String HYBRID_HANCOM_AI_REGIONLIST_STRATEGY_LONG_OPTION = + "hybrid-hancom-ai-regionlist-strategy"; + private static final String HYBRID_HANCOM_AI_REGIONLIST_STRATEGY_DESC = + "DLA label 7 (regionlist) handling. Requires --hybrid=hancom-ai. " + + "Values: table-first (default; check TSR overlap), list-only (skip TSR, always treat as list)"; + + private static final String HYBRID_HANCOM_AI_OCR_STRATEGY_LONG_OPTION = + "hybrid-hancom-ai-ocr-strategy"; + private static final String HYBRID_HANCOM_AI_OCR_STRATEGY_DESC = + "OCR strategy. Requires --hybrid=hancom-ai. " + + "Values: off (stream-only), auto (default; stream first, OCR fallback), force (OCR-only)"; + + private static final String HYBRID_HANCOM_AI_IMAGE_CACHE_LONG_OPTION = + "hybrid-hancom-ai-image-cache"; + private static final String HYBRID_HANCOM_AI_IMAGE_CACHE_DESC = + "Page image cache backing. Requires --hybrid=hancom-ai. " + + "Values: memory (default), disk"; + + private static final String HYBRID_HANCOM_AI_SAVE_CROPS_LONG_OPTION = + "hybrid-hancom-ai-save-crops"; + private static final String HYBRID_HANCOM_AI_SAVE_CROPS_DESC = + "Persist cropped figure images to disk for debugging. Requires --hybrid=hancom-ai"; + + private static final String HYBRID_HANCOM_AI_CROP_OUTPUT_DIR_LONG_OPTION = + "hybrid-hancom-ai-crop-output-dir"; + private static final String HYBRID_HANCOM_AI_CROP_OUTPUT_DIR_DESC = + "Output directory for --hybrid-hancom-ai-save-crops. Requires --hybrid=hancom-ai"; +``` + +- [ ] **Step 2: Verify file still compiles** + +Run: `cd opendataloader-pdf/java && mvn -pl opendataloader-pdf-cli compile -DskipTests -q` +Expected: BUILD SUCCESS (constants added but unused — no warning since `private static final` is fine). + +- [ ] **Step 3: Commit** + +```bash +cd opendataloader-pdf && git add java/opendataloader-pdf-cli/src/main/java/org/opendataloader/pdf/cli/CLIOptions.java +git commit -m "$(cat <<'EOF' +feat(cli): add --hybrid-hancom-ai-* option name constants + +Defines long-name and description constants for 5 hancom-ai-specific +flags. Wiring into OPTION_DEFINITIONS and parser comes in subsequent +commits. + +Co-Authored-By: Claude Opus 4.7 (1M context) +EOF +)" +``` + +--- + +### Task 1.2: Register options in OPTION_DEFINITIONS + +**Files:** +- Modify: `opendataloader-pdf/java/opendataloader-pdf-cli/src/main/java/org/opendataloader/pdf/cli/CLIOptions.java` (the `OPTION_DEFINITIONS` list, currently lines 166-208) + +- [ ] **Step 1: Add 3 exported entries to OPTION_DEFINITIONS (after `HYBRID_FALLBACK_LONG_OPTION` line, around line 196)** + +Insert these three lines immediately after the `new OptionDefinition(HYBRID_FALLBACK_LONG_OPTION, ...)` line and before the `new OptionDefinition(TO_STDOUT_LONG_OPTION, ...)` line: + +```java + new OptionDefinition(HYBRID_HANCOM_AI_REGIONLIST_STRATEGY_LONG_OPTION, null, "string", + "table-first", HYBRID_HANCOM_AI_REGIONLIST_STRATEGY_DESC, true), + new OptionDefinition(HYBRID_HANCOM_AI_OCR_STRATEGY_LONG_OPTION, null, "string", + "auto", HYBRID_HANCOM_AI_OCR_STRATEGY_DESC, true), + new OptionDefinition(HYBRID_HANCOM_AI_IMAGE_CACHE_LONG_OPTION, null, "string", + "memory", HYBRID_HANCOM_AI_IMAGE_CACHE_DESC, true), +``` + +- [ ] **Step 2: Add 2 hidden entries (exported=false) after the legacy options block (around line 208)** + +Insert after the `NO_JSON_REPORT_LONG_OPTION` line (the last legacy entry). Note the trailing `)`/`;` of the list — adjust so the new lines come **before** the closing `)`: + +```java + new OptionDefinition(HYBRID_HANCOM_AI_SAVE_CROPS_LONG_OPTION, null, "boolean", + false, HYBRID_HANCOM_AI_SAVE_CROPS_DESC, false), + new OptionDefinition(HYBRID_HANCOM_AI_CROP_OUTPUT_DIR_LONG_OPTION, null, "string", + null, HYBRID_HANCOM_AI_CROP_OUTPUT_DIR_DESC, false), +``` + +- [ ] **Step 3: Add a "options registered" sanity test** + +Modify `opendataloader-pdf/java/opendataloader-pdf-cli/src/test/java/org/opendataloader/pdf/cli/CLIOptionsTest.java` — append the following test methods at the end of the class (before the closing `}`): + +```java + @Test + void testDefineOptions_containsHybridHancomAiRegionlistStrategy() { + assertTrue(options.hasOption("hybrid-hancom-ai-regionlist-strategy")); + } + + @Test + void testDefineOptions_containsHybridHancomAiOcrStrategy() { + assertTrue(options.hasOption("hybrid-hancom-ai-ocr-strategy")); + } + + @Test + void testDefineOptions_containsHybridHancomAiImageCache() { + assertTrue(options.hasOption("hybrid-hancom-ai-image-cache")); + } + + @Test + void testDefineOptions_containsHybridHancomAiSaveCrops() { + assertTrue(options.hasOption("hybrid-hancom-ai-save-crops")); + } + + @Test + void testDefineOptions_containsHybridHancomAiCropOutputDir() { + assertTrue(options.hasOption("hybrid-hancom-ai-crop-output-dir")); + } +``` + +- [ ] **Step 4: Run the sanity tests** + +Run: `cd opendataloader-pdf/java && mvn -pl opendataloader-pdf-cli test -Dtest=CLIOptionsTest -q` +Expected: All 5 new tests PASS. (No parsing yet — these only verify Apache Commons CLI registration.) + +- [ ] **Step 5: Commit** + +```bash +cd opendataloader-pdf && git add java/opendataloader-pdf-cli +git commit -m "$(cat <<'EOF' +feat(cli): register --hybrid-hancom-ai-* in OPTION_DEFINITIONS + +Three options (regionlist-strategy, ocr-strategy, image-cache) are +exported to options.json and wrapper bindings; two debug options +(save-crops, crop-output-dir) stay hidden via exported=false. + +Sanity tests verify Apache Commons CLI registration. Parsing logic +and Config wiring come next. + +Co-Authored-By: Claude Opus 4.7 (1M context) +EOF +)" +``` + +--- + +### Task 1.3: Parse new options into HybridConfig + +**Files:** +- Modify: `opendataloader-pdf/java/opendataloader-pdf-cli/src/main/java/org/opendataloader/pdf/cli/CLIOptions.java` — `applyHybridOptions()` method (around lines 463-557) + +- [ ] **Step 1: Write failing test for `--hybrid-hancom-ai-regionlist-strategy=list-only`** + +Append to `CLIOptionsTest.java`: + +```java + @Test + void testCreateConfig_withHybridHancomAiRegionlistStrategy() throws ParseException { + String[] args = {"--hybrid", "hancom-ai", + "--hybrid-hancom-ai-regionlist-strategy", "list-only", + testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + Config config = CLIOptions.createConfigFromCommandLine(cmd); + assertEquals("list-only", config.getHybridConfig().getRegionlistStrategy()); + } +``` + +- [ ] **Step 2: Run, expect FAIL** + +Run: `cd opendataloader-pdf/java && mvn -pl opendataloader-pdf-cli test -Dtest=CLIOptionsTest#testCreateConfig_withHybridHancomAiRegionlistStrategy -q` +Expected: FAIL — value still default `table-first` because parsing hasn't been added yet. + +- [ ] **Step 3: Add parsing for all 5 new options** + +Insert this block inside `applyHybridOptions()`, immediately after the existing `if (commandLine.hasOption(HYBRID_FALLBACK_LONG_OPTION)) { config.getHybridConfig().setFallbackToJava(true); }` line and before `if (commandLine.hasOption(TO_STDOUT_LONG_OPTION)) { ... }`: + +```java + if (commandLine.hasOption(HYBRID_HANCOM_AI_REGIONLIST_STRATEGY_LONG_OPTION)) { + String value = commandLine.getOptionValue(HYBRID_HANCOM_AI_REGIONLIST_STRATEGY_LONG_OPTION); + if (value != null && !value.trim().isEmpty()) { + config.getHybridConfig().setRegionlistStrategy(value.trim().toLowerCase(Locale.ROOT)); + } + } + if (commandLine.hasOption(HYBRID_HANCOM_AI_OCR_STRATEGY_LONG_OPTION)) { + String value = commandLine.getOptionValue(HYBRID_HANCOM_AI_OCR_STRATEGY_LONG_OPTION); + if (value != null && !value.trim().isEmpty()) { + config.getHybridConfig().setOcrStrategy(value.trim().toLowerCase(Locale.ROOT)); + } + } + if (commandLine.hasOption(HYBRID_HANCOM_AI_IMAGE_CACHE_LONG_OPTION)) { + String value = commandLine.getOptionValue(HYBRID_HANCOM_AI_IMAGE_CACHE_LONG_OPTION); + if (value != null && !value.trim().isEmpty()) { + config.getHybridConfig().setImageCache(value.trim().toLowerCase(Locale.ROOT)); + } + } + if (commandLine.hasOption(HYBRID_HANCOM_AI_SAVE_CROPS_LONG_OPTION)) { + config.getHybridConfig().setSaveCrops(true); + } + if (commandLine.hasOption(HYBRID_HANCOM_AI_CROP_OUTPUT_DIR_LONG_OPTION)) { + String value = commandLine.getOptionValue(HYBRID_HANCOM_AI_CROP_OUTPUT_DIR_LONG_OPTION); + if (value != null && !value.trim().isEmpty()) { + config.getHybridConfig().setCropOutputDir(value.trim()); + } + } +``` + +- [ ] **Step 4: Run the test, expect PASS** + +Run: `cd opendataloader-pdf/java && mvn -pl opendataloader-pdf-cli test -Dtest=CLIOptionsTest#testCreateConfig_withHybridHancomAiRegionlistStrategy -q` +Expected: PASS. + +- [ ] **Step 5: Add coverage tests for the other four options** + +Append to `CLIOptionsTest.java`: + +```java + @Test + void testCreateConfig_withHybridHancomAiOcrStrategy() throws ParseException { + String[] args = {"--hybrid", "hancom-ai", + "--hybrid-hancom-ai-ocr-strategy", "force", + testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + Config config = CLIOptions.createConfigFromCommandLine(cmd); + assertEquals("force", config.getHybridConfig().getOcrStrategy()); + } + + @Test + void testCreateConfig_withHybridHancomAiImageCache() throws ParseException { + String[] args = {"--hybrid", "hancom-ai", + "--hybrid-hancom-ai-image-cache", "disk", + testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + Config config = CLIOptions.createConfigFromCommandLine(cmd); + assertEquals("disk", config.getHybridConfig().getImageCache()); + } + + @Test + void testCreateConfig_withHybridHancomAiSaveCrops() throws ParseException { + String[] args = {"--hybrid", "hancom-ai", + "--hybrid-hancom-ai-save-crops", + testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + Config config = CLIOptions.createConfigFromCommandLine(cmd); + assertTrue(config.getHybridConfig().isSaveCrops()); + } + + @Test + void testCreateConfig_withHybridHancomAiCropOutputDir() throws ParseException { + String[] args = {"--hybrid", "hancom-ai", + "--hybrid-hancom-ai-crop-output-dir", "/tmp/crops", + testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + Config config = CLIOptions.createConfigFromCommandLine(cmd); + assertEquals("/tmp/crops", config.getHybridConfig().getCropOutputDir()); + } +``` + +- [ ] **Step 6: Run all new tests, expect PASS** + +Run: `cd opendataloader-pdf/java && mvn -pl opendataloader-pdf-cli test -Dtest=CLIOptionsTest -q` +Expected: All tests PASS. + +- [ ] **Step 7: Commit** + +```bash +cd opendataloader-pdf && git add java/opendataloader-pdf-cli +git commit -m "$(cat <<'EOF' +feat(cli): parse --hybrid-hancom-ai-* into HybridConfig + +Wires --hybrid-hancom-ai-{regionlist-strategy,ocr-strategy,image-cache, +save-crops,crop-output-dir} through applyHybridOptions(). HybridConfig +setters validate enum values and throw IllegalArgumentException on +invalid input. + +Co-Authored-By: Claude Opus 4.7 (1M context) +EOF +)" +``` + +--- + +### Task 1.4: Add hancom-ai gate validation + +**Files:** +- Modify: `opendataloader-pdf/java/opendataloader-pdf-cli/src/main/java/org/opendataloader/pdf/cli/CLIOptions.java` — `applyHybridOptions()` + +- [ ] **Step 1: Write failing test — using the option without `--hybrid=hancom-ai` should throw** + +Append to `CLIOptionsTest.java`: + +```java + @Test + void testCreateConfig_hybridHancomAiOption_withoutHancomAi_throws() { + String[] args = {"--hybrid-hancom-ai-regionlist-strategy", "list-only", + testPdf.getAbsolutePath()}; + // No --hybrid set, defaults to off. + IllegalArgumentException ex = assertThrows(IllegalArgumentException.class, () -> { + CommandLine cmd = parser.parse(options, args); + CLIOptions.createConfigFromCommandLine(cmd); + }); + assertTrue(ex.getMessage().contains("--hybrid-hancom-ai-"), + "Error should mention the offending prefix, got: " + ex.getMessage()); + assertTrue(ex.getMessage().contains("hancom-ai"), + "Error should mention required backend, got: " + ex.getMessage()); + } + + @Test + void testCreateConfig_hybridHancomAiOption_withDoclingFast_throws() { + String[] args = {"--hybrid", "docling-fast", + "--hybrid-hancom-ai-ocr-strategy", "force", + testPdf.getAbsolutePath()}; + assertThrows(IllegalArgumentException.class, () -> { + CommandLine cmd = parser.parse(options, args); + CLIOptions.createConfigFromCommandLine(cmd); + }); + } +``` + +- [ ] **Step 2: Run, expect FAIL** + +Run: `cd opendataloader-pdf/java && mvn -pl opendataloader-pdf-cli test -Dtest=CLIOptionsTest#testCreateConfig_hybridHancomAiOption_withoutHancomAi_throws -q` +Expected: FAIL — currently no validation, so the call succeeds silently. + +- [ ] **Step 3: Add the gate at the end of `applyHybridOptions()`** + +Insert this block at the very end of `applyHybridOptions()` (after the `--to-stdout` handling, before the closing `}`): + +```java + boolean usesHancomAiOnly = + commandLine.hasOption(HYBRID_HANCOM_AI_REGIONLIST_STRATEGY_LONG_OPTION) || + commandLine.hasOption(HYBRID_HANCOM_AI_OCR_STRATEGY_LONG_OPTION) || + commandLine.hasOption(HYBRID_HANCOM_AI_IMAGE_CACHE_LONG_OPTION) || + commandLine.hasOption(HYBRID_HANCOM_AI_SAVE_CROPS_LONG_OPTION) || + commandLine.hasOption(HYBRID_HANCOM_AI_CROP_OUTPUT_DIR_LONG_OPTION); + if (usesHancomAiOnly && !Config.HYBRID_HANCOM_AI.equals(config.getHybrid())) { + throw new IllegalArgumentException( + "Options --hybrid-hancom-ai-* require --hybrid=hancom-ai (got --hybrid=" + + config.getHybrid() + ")"); + } +``` + +- [ ] **Step 4: Run both gate tests, expect PASS** + +Run: `cd opendataloader-pdf/java && mvn -pl opendataloader-pdf-cli test -Dtest=CLIOptionsTest -q` +Expected: All tests PASS, including both new gate tests AND all earlier ones (which use `--hybrid hancom-ai`). + +- [ ] **Step 5: Commit** + +```bash +cd opendataloader-pdf && git add java/opendataloader-pdf-cli +git commit -m "$(cat <<'EOF' +feat(cli): reject --hybrid-hancom-ai-* without --hybrid=hancom-ai + +Without this guard, these flags would silently no-op when the user +selects a different backend. Fail fast with a message naming the +offending prefix and required backend. + +Co-Authored-By: Claude Opus 4.7 (1M context) +EOF +)" +``` + +--- + +### Task 1.5: Regenerate options.json and wrapper bindings + +**Files:** +- Modify: `opendataloader-pdf/options.json` +- Modify: `opendataloader-pdf/python/...`, `opendataloader-pdf/node/...` (auto-generated) + +- [ ] **Step 1: Run npm sync** + +Run: `cd opendataloader-pdf && npm run sync` +Expected: Command completes; `git status` shows changes to `options.json` and python/node binding files. The 3 exported new options (regionlist-strategy, ocr-strategy, image-cache) appear; the 2 hidden ones (save-crops, crop-output-dir) do **not**. + +- [ ] **Step 2: Spot-check options.json** + +Verify the diff contains the 3 new options with correct defaults: +```bash +cd opendataloader-pdf && grep -A 2 "hybrid-hancom-ai" options.json +``` +Expected: 3 entries for `hybrid-hancom-ai-regionlist-strategy`, `hybrid-hancom-ai-ocr-strategy`, `hybrid-hancom-ai-image-cache` with their defaults `table-first` / `auto` / `memory`. No entry for `save-crops` or `crop-output-dir`. + +- [ ] **Step 3: Commit** + +```bash +cd opendataloader-pdf && git add options.json python node +git commit -m "$(cat <<'EOF' +chore: regenerate bindings for --hybrid-hancom-ai-* options + +Auto-generated by npm run sync. Adds the 3 exported hancom-ai +options to options.json, Python bindings, and Node bindings. +The 2 hidden debug options (save-crops, crop-output-dir) stay +out of the public surface. + +Co-Authored-By: Claude Opus 4.7 (1M context) +EOF +)" +``` + +--- + +## Phase 2 — Extract reusable CLIOptions API + +This phase is a **pure refactor** — behavior unchanged. + +### Task 2.1: Add public `addAllTo(Options)` method + +**Files:** +- Modify: `opendataloader-pdf/java/opendataloader-pdf-cli/src/main/java/org/opendataloader/pdf/cli/CLIOptions.java` — `defineOptions()` (around line 210) + +- [ ] **Step 1: Write a test that exercises `addAllTo` against a fresh Options instance** + +Append to `CLIOptionsTest.java`: + +```java + @Test + void testAddAllTo_registersAllOptions() { + Options ext = new Options(); + CLIOptions.addAllTo(ext); + assertTrue(ext.hasOption("hybrid")); + assertTrue(ext.hasOption("hybrid-mode")); + assertTrue(ext.hasOption("hybrid-hancom-ai-regionlist-strategy")); + assertTrue(ext.hasOption("format")); + assertTrue(ext.hasOption("threads")); + } +``` + +- [ ] **Step 2: Run, expect FAIL (compile error — method does not exist)** + +Run: `cd opendataloader-pdf/java && mvn -pl opendataloader-pdf-cli test -Dtest=CLIOptionsTest#testAddAllTo_registersAllOptions -q` +Expected: COMPILATION FAILURE — `cannot find symbol: addAllTo`. + +- [ ] **Step 3: Add `addAllTo` and refactor `defineOptions` to use it** + +Replace the existing `defineOptions` method (currently lines ~210-217) with: + +```java + public static Options defineOptions() { + Options options = new Options(); + addAllTo(options); + return options; + } + + /** + * Registers every core CLI option onto an external {@link Options} instance. + * Used by downstream CLIs (e.g. opendataloader-pdfua) that want to inherit + * the entire core option set and add their own options on top. + * + * @param options the Options instance to populate + */ + public static void addAllTo(Options options) { + for (OptionDefinition def : OPTION_DEFINITIONS) { + options.addOption(def.toOption()); + } + } +``` + +- [ ] **Step 4: Run, expect PASS** + +Run: `cd opendataloader-pdf/java && mvn -pl opendataloader-pdf-cli test -Dtest=CLIOptionsTest -q` +Expected: All tests PASS — `addAllTo` works and all existing tests still work via `defineOptions`. + +- [ ] **Step 5: Commit** + +```bash +cd opendataloader-pdf && git add java/opendataloader-pdf-cli +git commit -m "$(cat <<'EOF' +refactor(cli): extract CLIOptions.addAllTo(Options) public API + +Splits Options registration out of defineOptions() so downstream CLIs +can register every core option onto their own Options instance and +add their own options on top. defineOptions() now delegates. + +Pure refactor — no behavior change. + +Co-Authored-By: Claude Opus 4.7 (1M context) +EOF +)" +``` + +--- + +### Task 2.2: Add public `applyAllTo(Config, CommandLine)` method + +**Files:** +- Modify: `opendataloader-pdf/java/opendataloader-pdf-cli/src/main/java/org/opendataloader/pdf/cli/CLIOptions.java` — `createConfigFromCommandLine()` (around lines 219-287) + +- [ ] **Step 1: Write a test that exercises `applyAllTo` directly** + +Append to `CLIOptionsTest.java`: + +```java + @Test + void testApplyAllTo_appliesCoreOptions() throws ParseException { + Options ext = new Options(); + CLIOptions.addAllTo(ext); + ext.addOption(null, "downstream-only", true, "Downstream-specific"); + + String[] args = {"--hybrid", "hancom-ai", + "--threads", "2", + "--downstream-only", "value", + testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(ext, args); + + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + CLIOptions.applyAllTo(config, cmd); + + assertEquals("hancom-ai", config.getHybrid()); + assertEquals(2, config.getThreads()); + // downstream-only is not consumed by applyAllTo — that is the caller's job. + assertEquals("value", cmd.getOptionValue("downstream-only")); + } +``` + +- [ ] **Step 2: Run, expect FAIL (compile error)** + +Run: `cd opendataloader-pdf/java && mvn -pl opendataloader-pdf-cli test -Dtest=CLIOptionsTest#testApplyAllTo_appliesCoreOptions -q` +Expected: COMPILATION FAILURE — `cannot find symbol: applyAllTo`. + +- [ ] **Step 3: Refactor `createConfigFromCommandLine` to delegate to `applyAllTo`** + +Replace the existing `createConfigFromCommandLine` (around lines 219-287) with this two-method form: + +```java + public static Config createConfigFromCommandLine(CommandLine commandLine) { + Config config = new Config(); + if (commandLine.hasOption(CLIOptions.FOLDER_OPTION)) { + config.setOutputFolder(commandLine.getOptionValue(CLIOptions.FOLDER_OPTION)); + } else { + String argument = commandLine.getArgs()[0]; + File file = new File(argument); + file = new File(file.getAbsolutePath()); + config.setOutputFolder(file.isDirectory() ? file.getAbsolutePath() : file.getParent()); + } + applyAllTo(config, commandLine); + return config; + } + + /** + * Applies every core CLI option from the parsed command line onto the given Config. + * Caller is responsible for setting required Config state that is not represented + * by a CLI option (e.g. output folder when no positional input file is provided). + * + * Used by downstream CLIs that build their own Options + Config and want core + * options applied without paying for the positional-arg-based output-folder + * fallback that {@link #createConfigFromCommandLine} performs. + * + * @param config Config to populate + * @param commandLine parsed CommandLine + */ + public static void applyAllTo(Config config, CommandLine commandLine) { + if (commandLine.hasOption(CLIOptions.PASSWORD_OPTION)) { + config.setPassword(commandLine.getOptionValue(CLIOptions.PASSWORD_OPTION)); + } + if (commandLine.hasOption(CLIOptions.KEEP_LINE_BREAKS_LONG_OPTION)) { + config.setKeepLineBreaks(true); + } + if (commandLine.hasOption(CLIOptions.PDF_REPORT_LONG_OPTION)) { + config.setGeneratePDF(true); + } + if (commandLine.hasOption(CLIOptions.MARKDOWN_REPORT_LONG_OPTION)) { + config.setGenerateMarkdown(true); + } + if (commandLine.hasOption(CLIOptions.HTML_REPORT_LONG_OPTION)) { + config.setGenerateHtml(true); + } + if (commandLine.hasOption(CLIOptions.HTML_IN_MARKDOWN_LONG_OPTION)) { + config.setUseHTMLInMarkdown(true); + } + if (commandLine.hasOption(CLIOptions.MARKDOWN_IMAGE_LONG_OPTION)) { + config.setAddImageToMarkdown(true); + } + if (commandLine.hasOption(CLIOptions.NO_JSON_REPORT_LONG_OPTION)) { + config.setGenerateJSON(false); + } + if (commandLine.hasOption(CLIOptions.REPLACE_INVALID_CHARS_LONG_OPTION)) { + config.setReplaceInvalidChars(commandLine.getOptionValue(CLIOptions.REPLACE_INVALID_CHARS_LONG_OPTION)); + } + if (commandLine.hasOption(CLIOptions.USE_STRUCT_TREE_LONG_OPTION)) { + config.setUseStructTree(true); + } + if (commandLine.hasOption(INCLUDE_HEADER_FOOTER_LONG_OPTION)) { + config.setIncludeHeaderFooter(true); + } + if (commandLine.hasOption(DETECT_STRIKETHROUGH_LONG_OPTION)) { + config.setDetectStrikethrough(true); + } + if (commandLine.hasOption(CLIOptions.READING_ORDER_LONG_OPTION)) { + config.setReadingOrder(commandLine.getOptionValue(CLIOptions.READING_ORDER_LONG_OPTION)); + } + if (commandLine.hasOption(CLIOptions.MARKDOWN_PAGE_SEPARATOR_LONG_OPTION)) { + config.setMarkdownPageSeparator(commandLine.getOptionValue(CLIOptions.MARKDOWN_PAGE_SEPARATOR_LONG_OPTION)); + } + if (commandLine.hasOption(CLIOptions.TEXT_PAGE_SEPARATOR_LONG_OPTION)) { + config.setTextPageSeparator(commandLine.getOptionValue(CLIOptions.TEXT_PAGE_SEPARATOR_LONG_OPTION)); + } + if (commandLine.hasOption(CLIOptions.HTML_PAGE_SEPARATOR_LONG_OPTION)) { + config.setHtmlPageSeparator(commandLine.getOptionValue(CLIOptions.HTML_PAGE_SEPARATOR_LONG_OPTION)); + } + applyContentSafetyOption(config, commandLine); + applySanitizeOption(config, commandLine); + applyFormatOption(config, commandLine); + applyTableMethodOption(config, commandLine); + applyImageOptions(config, commandLine); + applyPagesOption(config, commandLine); + applyHybridOptions(config, commandLine); + applyThreadsOption(config, commandLine); + config.normalize(); + } +``` + +The output-folder positional handling stays in `createConfigFromCommandLine` only — pdfua does not have positional input args, so it should not pay for that branch. + +- [ ] **Step 4: Run all CLI tests, expect PASS** + +Run: `cd opendataloader-pdf/java && mvn -pl opendataloader-pdf-cli test -q` +Expected: All tests PASS — both the new `applyAllTo` test and every existing test (the latter still go through `createConfigFromCommandLine`, which now delegates). + +- [ ] **Step 5: Commit** + +```bash +cd opendataloader-pdf && git add java/opendataloader-pdf-cli +git commit -m "$(cat <<'EOF' +refactor(cli): extract CLIOptions.applyAllTo(Config, CommandLine) + +Splits per-option Config wiring out of createConfigFromCommandLine() +so downstream CLIs (opendataloader-pdfua) can apply core options to +their own Config without inheriting the positional-arg output-folder +fallback. createConfigFromCommandLine() delegates. + +Pure refactor — no behavior change. + +Co-Authored-By: Claude Opus 4.7 (1M context) +EOF +)" +``` + +--- + +### Task 2.3: Install core to local Maven for pdfua + +Per `opendataloader-pdfua/CLAUDE.md`, pdfua consumes core via Maven; cross-repo changes require `mvn install` on core first. + +- [ ] **Step 1: Install core to local Maven** + +Run: `cd opendataloader-pdf/java && mvn install -DskipTests -q` +Expected: BUILD SUCCESS. The new core artifact (with `addAllTo` / `applyAllTo`) is now available to pdfua. + +--- + +## Phase 3 — Refactor pdfua to consume core CLIOptions + +### Task 3.1: Add Builder to RemediationConfig + +**Files:** +- Modify: `opendataloader-pdfua/src/main/java/org/opendataloader/pdf/remediation/RemediationConfig.java` + +This task **adds** a Builder without removing the existing constructors yet — this lets us migrate call sites incrementally while keeping the test suite green. + +- [ ] **Step 1: Add `coreConfig` field, the Builder class, and a builder-based constructor** + +After the existing `private final MockMode mockMode;` line (around line 52), add: + +```java + private final org.opendataloader.pdf.api.Config coreConfig; +``` + +After the last existing constructor (around line 125, ending `this.mockMode = ...;`), add: + +```java + private RemediationConfig(Builder b) { + this.input = b.input; + this.output = b.output; + this.lang = b.lang; + this.hybrid = b.coreConfig.getHybrid(); + this.hybridUrl = b.coreConfig.getHybridConfig().getUrl(); + this.hybridMode = b.coreConfig.getHybridConfig().getMode(); + this.enrichPictureDescription = b.enrichPictureDescription; + this.threads = b.threads; + this.conformances = EnumSet.copyOf(b.conformances); + this.reportLevel = b.reportLevel; + this.fontEmbedMode = b.fontEmbedMode; + this.auditBundleMode = b.auditBundleMode; + this.orgMeta = b.orgMeta != null ? b.orgMeta : OrgMeta.defaults(); + this.mockMode = b.mockMode != null ? b.mockMode : MockMode.OFF; + this.coreConfig = b.coreConfig; + } + + public static Builder builder() { return new Builder(); } + + public org.opendataloader.pdf.api.Config getCoreConfig() { return coreConfig; } + + public static final class Builder { + private String input; + private String output; + private String lang = "en"; + private org.opendataloader.pdf.api.Config coreConfig = new org.opendataloader.pdf.api.Config(); + private boolean enrichPictureDescription = true; + private int threads = 1; + private Set conformances = EnumSet.of(ConformanceLevel.UA1); + private ReportLevel reportLevel = ReportLevel.NONE; + private FontEmbedMode fontEmbedMode = FontEmbedMode.OFF; + private AuditBundleMode auditBundleMode = AuditBundleMode.NONE; + private OrgMeta orgMeta = OrgMeta.defaults(); + private MockMode mockMode = MockMode.OFF; + + public Builder input(String v) { this.input = v; return this; } + public Builder output(String v) { this.output = v; return this; } + public Builder lang(String v) { this.lang = v; return this; } + public Builder coreConfig(org.opendataloader.pdf.api.Config v) { this.coreConfig = v; return this; } + public Builder enrichPictureDescription(boolean v) { this.enrichPictureDescription = v; return this; } + public Builder threads(int v) { this.threads = v; return this; } + public Builder conformances(Set v) { this.conformances = v; return this; } + public Builder reportLevel(ReportLevel v) { this.reportLevel = v; return this; } + public Builder fontEmbedMode(FontEmbedMode v) { this.fontEmbedMode = v; return this; } + public Builder auditBundleMode(AuditBundleMode v) { this.auditBundleMode = v; return this; } + public Builder orgMeta(OrgMeta v) { this.orgMeta = v; return this; } + public Builder mockMode(MockMode v) { this.mockMode = v; return this; } + + public RemediationConfig build() { return new RemediationConfig(this); } + } +``` + +Also: in **each** existing constructor (the 5 of them, ending at line 125), add this line after the existing `this.mockMode = ...;` assignment: + +```java + this.coreConfig = buildCoreConfigForLegacyConstructor(); +``` + +And add this private helper after the constructors (before `public String getInput()`): + +```java + private org.opendataloader.pdf.api.Config buildCoreConfigForLegacyConstructor() { + org.opendataloader.pdf.api.Config c = new org.opendataloader.pdf.api.Config(); + if (this.hybrid != null) { + c.setHybrid(this.hybrid); + } + if (this.hybridUrl != null) { + c.getHybridConfig().setUrl(this.hybridUrl); + } + if (this.hybridMode != null) { + c.getHybridConfig().setMode(this.hybridMode); + } + return c; + } +``` + +This keeps the existing 5 constructors source-compatible during migration. They will be removed in Task 3.5. + +- [ ] **Step 2: Verify pdfua still compiles and tests still pass** + +Run: `cd opendataloader-pdfua && mvn test -q` +Expected: BUILD SUCCESS, all tests pass. (We added members; we did not change existing behavior.) + +- [ ] **Step 3: Commit** + +```bash +cd opendataloader-pdfua && git add src/main/java/org/opendataloader/pdf/remediation/RemediationConfig.java +git commit -m "$(cat <<'EOF' +feat(remediation): add RemediationConfig.Builder + embedded coreConfig + +Adds a Builder API and a coreConfig field carrying the full core +opendataloader-pdf Config. Existing 5 constructors keep working — +they construct a synthetic coreConfig from the flat hybrid fields +to maintain semantics. Migration of call sites and removal of the +legacy constructors follows. + +Co-Authored-By: Claude Opus 4.7 (1M context) +EOF +)" +``` + +--- + +### Task 3.2: Refactor pdfua/Main.java to use core CLIOptions + +**Files:** +- Modify: `opendataloader-pdfua/src/main/java/org/opendataloader/pdf/Main.java` + +- [ ] **Step 1: Replace `buildOptions()` body — remove hybrid options, add `addAllTo`** + +Replace `buildOptions()` (lines 94-125) with: + +```java + static Options buildOptions() { + Options options = new Options(); + // Inherit every core opendataloader-pdf CLI option (--hybrid, --hybrid-url, + // --hybrid-mode, --hybrid-hancom-ai-*, --threads, etc.). + org.opendataloader.pdf.cli.CLIOptions.addAllTo(options); + + // pdfua-specific options + options.addRequiredOption(null, "input", true, "PDF file or directory"); + options.addRequiredOption(null, "output", true, "Output directory"); + options.addOption(null, "lang", true, "Document language ISO 639-1 (default: en)"); + options.addOption(null, "enrich-picture-description", false, "Enable AI picture descriptions (default: on)"); + options.addOption(null, "no-enrich-picture-description", false, "Disable AI picture descriptions"); + options.addOption(null, "conformance", true, + "Conformance levels, comma-separated: ua1, ua2, wtpdf-reuse, wtpdf-accessibility (default: ua1)"); + options.addOption(null, "report", true, "Report level: processing, quality, all, none (default: all)"); + options.addOption(null, "font-embed", true, "Font embedding policy for missing /FontFile: " + + "substitute (default; fall back to bundled Liberation fonts; minor visual risk for Arial/Times), " + + "exact-only (system fonts only), off"); + options.addOption(null, "audit-bundle", true, + "Emit per-PDF audit bundle: full (default), json (machine logs), html, none"); + options.addOption(null, "org-name", true, "Organization name for VPAT/accessibility statement (default: 'Customer Organization')"); + options.addOption(null, "org-contact", true, "Organization contact email (default: accessibility@example.com)"); + options.addOption(null, "product-name", true, "Product name for VPAT (default: opendataloader-pdfua)"); + options.addOption(null, "mock", true, + "Audit-bundle Phase 1.5 trail fill mode. Values: " + + "all (default; overwrite every Phase 1.5 field with template values, " + + "preview mode — MOCK badge rendered) | " + + "fill (fill only unsupported/empty fields; preserve real measurements) | " + + "off (no mock — placeholder fields stay as unsupported; real evidence run)."); + return options; + } +``` + +Note: `--threads` is **removed** here because it now comes from core CLIOptions. The pdfua-specific note about HancomAIClient thread-safety becomes a runtime warning instead — that is handled in BatchProcessor and is out of scope for this plan. (If the warning text was important, file a separate issue.) + +- [ ] **Step 2: Replace `runWithOptions` body** + +Replace `runWithOptions` (lines 52-92) with: + +```java + private static void runWithOptions(String[] args) { + Options options = buildOptions(); + + CommandLineParser parser = new DefaultParser(); + HelpFormatter formatter = new HelpFormatter(); + try { + CommandLine cmd = parser.parse(options, args); + + // 1. Apply all core options to a Config + org.opendataloader.pdf.api.Config coreConfig = new org.opendataloader.pdf.api.Config(); + org.opendataloader.pdf.cli.CLIOptions.applyAllTo(coreConfig, cmd); + + // 2. Apply pdfua's hybrid defaults (only when user did not override) + applyPdfuaDefaults(coreConfig); + + // 3. Read pdfua-specific options + String lang = cmd.getOptionValue("lang", "en"); + boolean enrichPictureDescription = !cmd.hasOption("no-enrich-picture-description"); + int threads = coreConfig.getThreads(); + Set conformances = parseConformances(cmd.getOptionValue("conformance", "ua1")); + RemediationConfig.ReportLevel reportLevel = parseReportLevel(cmd.getOptionValue("report", "all")); + FontEmbedMode fontEmbedMode = parseFontEmbedMode(cmd.getOptionValue("font-embed", "substitute")); + AuditBundleMode auditBundleMode = AuditBundleMode.parse(cmd.getOptionValue("audit-bundle", "full")); + MockMode mockMode = parseMockMode(cmd.getOptionValue("mock", "all")); + + OrgMeta orgMeta = new OrgMeta( + cmd.getOptionValue("org-name"), + cmd.getOptionValue("org-contact"), + cmd.getOptionValue("product-name") + ).withFallbackDefaults(); + + RemediationConfig config = RemediationConfig.builder() + .input(cmd.getOptionValue("input")) + .output(cmd.getOptionValue("output")) + .lang(lang) + .coreConfig(coreConfig) + .enrichPictureDescription(enrichPictureDescription) + .threads(threads) + .conformances(conformances) + .reportLevel(reportLevel) + .fontEmbedMode(fontEmbedMode) + .auditBundleMode(auditBundleMode) + .orgMeta(orgMeta) + .mockMode(mockMode) + .build(); + + new BatchProcessor(config).run(); + } catch (ParseException e) { + formatter.printHelp("opendataloader-pdfua", options); + throw new IllegalArgumentException("Invalid arguments: " + e.getMessage(), e); + } + } + + /** + * Apply pdfua's defaults to a core Config. Unlike opendataloader-pdf, + * pdfua assumes a hybrid backend is always running — so when the user + * does not specify --hybrid / --hybrid-url / --hybrid-mode, we substitute + * pdfua's defaults instead of core's. + */ + private static void applyPdfuaDefaults(org.opendataloader.pdf.api.Config c) { + if (org.opendataloader.pdf.api.Config.HYBRID_OFF.equals(c.getHybrid())) { + c.setHybrid(org.opendataloader.pdf.api.Config.HYBRID_HANCOM_AI); + } + if (c.getHybridConfig().getUrl() == null) { + c.getHybridConfig().setUrl("http://localhost:18008"); + } + if (org.opendataloader.pdf.api.Config.HYBRID_MODE_AUTO.equals(c.getHybridConfig().getMode())) { + c.getHybridConfig().setMode(org.opendataloader.pdf.api.Config.HYBRID_MODE_FULL); + } + } +``` + +- [ ] **Step 3: Run pdfua tests** + +Run: `cd opendataloader-pdfua && mvn test -q` +Expected: PASS. `MainAuditBundleCliTest` exercises CLI parsing and should now route through core CLIOptions transparently. + +- [ ] **Step 4: Manual smoke test of inherited core options** + +Run: `cd opendataloader-pdfua && mvn -q exec:java -Dexec.mainClass=org.opendataloader.pdf.Main -Dexec.args="--input src/test/resources --output /tmp/pdfua-test --hybrid-hancom-ai-regionlist-strategy list-only --hybrid-hancom-ai-ocr-strategy auto --audit-bundle none --mock off" 2>&1 | head -20` + +If the project doesn't have `exec:java` configured, **skip this step** — the test suite covers wiring. + +Expected: Either runs without "Unrecognized option" errors for `--hybrid-hancom-ai-*`, or fails on a downstream concern (network/file). The point is that argument parsing accepts the flags. + +- [ ] **Step 5: Commit** + +```bash +cd opendataloader-pdfua && git add src/main/java/org/opendataloader/pdf/Main.java +git commit -m "$(cat <<'EOF' +refactor(pdfua): inherit core CLIOptions instead of redefining + +Replace pdfua's hand-rolled --hybrid/--hybrid-url/--hybrid-mode/ +--threads definitions with org.opendataloader.pdf.cli.CLIOptions. +addAllTo(). pdfua now automatically inherits every core option, +including the new --hybrid-hancom-ai-* flags. + +pdfua's deviating defaults (hybrid=hancom-ai, url=localhost:18008, +mode=full) are now in an explicit applyPdfuaDefaults() helper +instead of buried in cmd.getOptionValue() defaults. + +Co-Authored-By: Claude Opus 4.7 (1M context) +EOF +)" +``` + +--- + +### Task 3.3: Simplify RemediationProcessor's hybrid forwarding + +**Files:** +- Modify: `opendataloader-pdfua/src/main/java/org/opendataloader/pdf/remediation/RemediationProcessor.java` (lines 163-170) + +- [ ] **Step 1: Read the current hybrid block to confirm context** + +Run: `cd opendataloader-pdfua && sed -n '160,175p' src/main/java/org/opendataloader/pdf/remediation/RemediationProcessor.java` +Expected output (approximately): +```java + Config config = ...; // may need to inspect actual surrounding code + ... + if (remediationConfig.getHybridUrl() != null || !"docling-fast".equals(remediationConfig.getHybrid())) { + config.setHybrid(remediationConfig.getHybrid()); + if (remediationConfig.getHybridUrl() != null) { + config.getHybridConfig().setUrl(remediationConfig.getHybridUrl()); + } + config.getHybridConfig().setMode(remediationConfig.getHybridMode()); + } +``` + +- [ ] **Step 2: Replace the hybrid block with coreConfig copy** + +Replace those lines (currently around 163-170) with: + +```java + // RemediationConfig now carries the full core Config. Adopt it directly. + config = remediationConfig.getCoreConfig(); +``` + +If the local `Config config` variable is constructed earlier in the method with other settings, you must merge them — read the full method first to verify. The simplest correct rewrite is: + +1. Find where the local `Config` is first assigned in `processSingle` or whichever method contains lines 163-170. +2. Replace `Config config = new Config();` with `Config config = remediationConfig.getCoreConfig();` +3. Delete the lines 163-170 hybrid block. +4. Keep any other `config.setXxx()` calls in the method — they continue to work on the borrowed Config instance. + +If `coreConfig` is mutated by other settings inside `processSingle` and that mutation should not leak back to the caller, clone it first. But based on the spec's intent ("RemediationConfig embeds Config directly"), in-place mutation is acceptable since `RemediationConfig` is per-document and short-lived. + +- [ ] **Step 3: Run pdfua tests** + +Run: `cd opendataloader-pdfua && mvn test -q` +Expected: PASS. + +- [ ] **Step 4: Commit** + +```bash +cd opendataloader-pdfua && git add src/main/java/org/opendataloader/pdf/remediation/RemediationProcessor.java +git commit -m "$(cat <<'EOF' +refactor(remediation): forward coreConfig directly to RemediationProcessor + +Replace the per-field hybrid forwarding block (setHybrid + setUrl + +setMode) with config = remediationConfig.getCoreConfig(). Now that +RemediationConfig embeds the full core Config, no manual copy is +needed. + +Co-Authored-By: Claude Opus 4.7 (1M context) +EOF +)" +``` + +--- + +### Task 3.4: Migrate test call sites to Builder + +**Files:** +- Modify: `opendataloader-pdfua/src/test/java/org/opendataloader/pdf/audit/AuditBundleEmitterTest.java` +- Modify: `opendataloader-pdfua/src/test/java/org/opendataloader/pdf/audit/certificate/CertificateIssuerTest.java` +- Modify: `opendataloader-pdfua/src/test/java/org/opendataloader/pdf/audit/manifest/AuditManifestBuilderTest.java` +- Modify: `opendataloader-pdfua/src/test/java/org/opendataloader/pdf/remediation/RemediationConfigAuditBundleTest.java` + +- [ ] **Step 1: Find every `new RemediationConfig(` call site** + +Run: +```bash +cd opendataloader-pdfua && grep -rn "new RemediationConfig(" src/test +``` +Record each file:line and inspect the constructor arguments. + +- [ ] **Step 2: For each call site, replace with Builder** + +For a call like: +```java +RemediationConfig cfg = new RemediationConfig( + "input.pdf", "/tmp/out", "en", "hancom-ai", "http://localhost:18008", "full", + true, 1, EnumSet.of(ConformanceLevel.UA1), ReportLevel.NONE); +``` + +Rewrite as: +```java +org.opendataloader.pdf.api.Config core = new org.opendataloader.pdf.api.Config(); +core.setHybrid("hancom-ai"); +core.getHybridConfig().setUrl("http://localhost:18008"); +core.getHybridConfig().setMode("full"); + +RemediationConfig cfg = RemediationConfig.builder() + .input("input.pdf") + .output("/tmp/out") + .lang("en") + .coreConfig(core) + .enrichPictureDescription(true) + .threads(1) + .conformances(EnumSet.of(ConformanceLevel.UA1)) + .reportLevel(ReportLevel.NONE) + .build(); +``` + +If the test only cares about a subset (e.g. doesn't pass hybrid args), use the relevant builder methods only — Builder defaults handle the rest. + +- [ ] **Step 3: Run pdfua tests** + +Run: `cd opendataloader-pdfua && mvn test -q` +Expected: PASS. + +- [ ] **Step 4: Commit** + +```bash +cd opendataloader-pdfua && git add src/test +git commit -m "$(cat <<'EOF' +test(remediation): migrate RemediationConfig instantiations to Builder + +Switches all 4 test files (AuditBundleEmitterTest, CertificateIssuerTest, +AuditManifestBuilderTest, RemediationConfigAuditBundleTest) from +positional constructors to RemediationConfig.builder() + .build(). + +Prepares for removal of the legacy constructors in the next commit. + +Co-Authored-By: Claude Opus 4.7 (1M context) +EOF +)" +``` + +--- + +### Task 3.5: Remove legacy constructors and `getHybridUrl`/`getHybridMode` + +**Files:** +- Modify: `opendataloader-pdfua/src/main/java/org/opendataloader/pdf/remediation/RemediationConfig.java` + +- [ ] **Step 1: Verify no production code references the legacy constructors** + +Run: +```bash +cd opendataloader-pdfua && grep -rn "new RemediationConfig(" src/main +``` +Expected: No output. (Main.java should now use `builder()`.) + +If any matches appear, migrate them to Builder before continuing. + +- [ ] **Step 2: Verify no code references `getHybridUrl` / `getHybridMode`** + +Run: +```bash +cd opendataloader-pdfua && grep -rn "getHybridUrl\|getHybridMode" src +``` +Expected: Only matches in `RemediationConfig.java` itself (the methods being removed). + +If any other call sites appear, replace with `getCoreConfig().getHybridConfig().getUrl()` / `.getMode()`. + +- [ ] **Step 3: Remove the 5 legacy constructors and the `buildCoreConfigForLegacyConstructor` helper** + +In `RemediationConfig.java`, delete: +- All 5 public constructors (currently lines 54-125) +- The `buildCoreConfigForLegacyConstructor()` helper added in Task 3.1 + +Keep the private `RemediationConfig(Builder b)` constructor. + +- [ ] **Step 4: Remove `getHybridUrl()` and `getHybridMode()` getters; redirect `getHybrid()` to delegate** + +Replace the three lines (currently around 130-132): +```java + public String getHybrid() { return hybrid; } + public String getHybridUrl() { return hybridUrl; } + public String getHybridMode() { return hybridMode; } +``` + +with: +```java + public String getHybrid() { return coreConfig.getHybrid(); } + public org.opendataloader.pdf.hybrid.HybridConfig getHybridConfig() { + return coreConfig.getHybridConfig(); + } +``` + +Also remove the now-unused fields `hybrid`, `hybridUrl`, `hybridMode` (lines ~42-44) and their assignments from the Builder constructor body. Delegate via `coreConfig` everywhere. + +- [ ] **Step 5: Verify compile and tests** + +Run: `cd opendataloader-pdfua && mvn compile -q && mvn test -q` +Expected: BUILD SUCCESS and all tests PASS. + +- [ ] **Step 6: Commit** + +```bash +cd opendataloader-pdfua && git add src/main/java/org/opendataloader/pdf/remediation/RemediationConfig.java +git commit -m "$(cat <<'EOF' +refactor(remediation)!: remove legacy RemediationConfig constructors + +BREAKING: Removes the 5 positional constructors and the flat +hybrid/hybridUrl/hybridMode fields. RemediationConfig now consists +of pdfua-specific fields plus an embedded core Config; hybrid state +is read via getCoreConfig().getHybrid() / getHybridConfig(). + +getHybridUrl() and getHybridMode() are removed — call sites use +getHybridConfig().getUrl() / .getMode() instead. Verified that no +production or test code outside RemediationConfig itself referenced +those getters. + +Co-Authored-By: Claude Opus 4.7 (1M context) +EOF +)" +``` + +--- + +### Task 3.6: Final integration check + +- [ ] **Step 1: Full build + test on both repos** + +Run: +```bash +cd opendataloader-pdf/java && mvn install -DskipTests -q +cd opendataloader-pdfua && mvn clean package -q +``` +Expected: Both BUILD SUCCESS. + +- [ ] **Step 2: Run the full test suite for both** + +Run: +```bash +cd opendataloader-pdf/java && mvn test -q +cd opendataloader-pdfua && mvn test -q +``` +Expected: All tests pass in both repos. + +- [ ] **Step 3: Verify --help output for both CLIs lists the new options** + +```bash +cd opendataloader-pdf/java && mvn -pl opendataloader-pdf-cli exec:java \ + -Dexec.mainClass=org.opendataloader.pdf.cli.CLIMain -Dexec.args="--help" 2>&1 | \ + grep "hybrid-hancom-ai" +``` +Expected: 3 lines (regionlist-strategy, ocr-strategy, image-cache). + +```bash +cd opendataloader-pdfua && java -jar target/*-jar-with-dependencies.jar --input dummy --output dummy --help 2>&1 | grep "hybrid-hancom-ai" +``` +Expected: 3 lines (same options inherited). + +Note: pdfua's `--help` output requires `--input` / `--output` to be supplied since they're `addRequiredOption`. If this is awkward, this verification step can be done by inspecting `Options` programmatically in a quick `MainTest`. + +- [ ] **Step 4: No final commit needed — all phase-3 commits already pushed.** + +--- + +## Self-Review + +**Spec coverage check:** + +| Spec section | Tasks | +|---|---| +| 5 new options with `--hybrid-hancom-ai-*` prefix | Task 1.1, 1.2 | +| Validation gate (require --hybrid=hancom-ai) | Task 1.4 | +| `addAllTo(Options)` public API | Task 2.1 | +| `applyAllTo(Config, CommandLine)` public API | Task 2.2 | +| pdfua/Main inherits core options | Task 3.2 | +| `applyPdfuaDefaults` explicit override block | Task 3.2 | +| `RemediationConfig` Builder + embedded `Config` | Task 3.1, 3.5 | +| Hard break: remove `getHybridUrl/Mode`, 9 constructors | Task 3.5 | +| `RemediationProcessor` simplified | Task 3.3 | +| All test call sites migrated | Task 3.4 | +| `npm run sync` to regenerate bindings | Task 1.5 | +| `mvn install -DskipTests` (core) before pdfua build | Task 2.3, 3.6 | + +All spec items mapped to at least one task. + +**Placeholder check:** No "TBD", "TODO", "fill in details", or stub steps. Every code step contains the actual code. Test code is complete (assertions, args). Commit messages are pre-written. + +**Type consistency:** `coreConfig` field name used consistently. `getCoreConfig()` getter name used consistently. Builder method names match field names. `applyPdfuaDefaults` signature matches between definition (Task 3.2) and call site (also Task 3.2). + +--- + +## Plan complete and saved to `docs/superpowers/plans/2026-04-29-hybrid-hancom-ai-options.md`. Two execution options: + +**1. Subagent-Driven (recommended)** - dispatch a fresh subagent per task, review between tasks, fast iteration + +**2. Inline Execution** - execute tasks in this session using executing-plans, batch execution with checkpoints + +**Which approach?** diff --git a/docs/superpowers/specs/2026-03-16-cid-font-detection-design.md b/docs/superpowers/specs/2026-03-16-cid-font-detection-design.md new file mode 100644 index 0000000..6ec6ccf --- /dev/null +++ b/docs/superpowers/specs/2026-03-16-cid-font-detection-design.md @@ -0,0 +1,151 @@ +# CID Font Extraction Failure Detection + +Issue: [#286](https://github.com/opendataloader-project/opendataloader-pdf/issues/286) + +## Problem + +PDFs with CID-keyed fonts that lack ToUnicode mappings produce no usable text from veraPDF extraction. veraPDF replaces unmappable characters with U+FFFD (replacement character), which `TextProcessor.replaceUndefinedCharacters()` then converts to spaces. The result is empty or whitespace-only output with no indication to the user of what went wrong. + +Users currently resort to external tools (e.g., pdfplumber) to pre-screen PDFs for CID issues before passing them to opendataloader-pdf. + +## Solution + +Detect pages with high replacement character ratios and: + +1. **Always**: emit a WARNING log explaining the problem and suggesting `--hybrid-mode` +2. **When hybrid mode is on**: automatically route affected pages to OCR backend via TriageProcessor + +No new CLI options. Hybrid mode setting is respected as-is. + +## Design + +### Detection: Replacement Character Ratio + +`TextProcessor.measureReplacementCharRatio(List)` counts `\uFFFD` characters across all TextChunks on a page and returns the ratio (0.0–1.0). + +**Threshold**: 30%. CID-affected pages typically show 90%+ replacement characters. 30% catches real problems while avoiding false positives from PDFs with occasional unmappable glyphs. + +**Measurement point**: Inside `ContentFilterProcessor.getFilteredContents()`, immediately before `replaceUndefinedCharacters()` is called (line 74). At this point veraPDF has already inserted `\uFFFD` but the characters haven't been replaced with spaces yet, so measurement is accurate. + +**Safety of measurement point**: The prior processing steps (`mergeCloseTextChunks`, `trimTextChunksWhiteSpaces`, `filterConsecutiveSpaces`, `splitTextChunksByWhiteSpaces`) do not affect U+FFFD characters. U+FFFD is not whitespace, so it is not trimmed, compressed, or used as a split boundary. The count is accurate at this position. + +**Zero-text pages**: When a page has no TextChunk objects (e.g., image-only pages), the method returns 0.0 to avoid division by zero. This correctly avoids triggering the CID warning on non-text pages. + +The method uses `ChunkParser.REPLACEMENT_CHARACTER_STRING` constant (not a hardcoded `"\uFFFD"` literal) to stay consistent with `replaceUndefinedCharacters()`. + +### Data Flow + +The measured ratio is stored in `StaticLayoutContainers` per page: + +``` +ContentFilterProcessor.getFilteredContents() + │ + ├─ TextProcessor.measureReplacementCharRatio() → ratio + ├─ StaticLayoutContainers.setReplacementCharRatio(pageNumber, ratio) + ├─ if ratio >= 0.3: LOGGER.warning(...) + └─ TextProcessor.replaceUndefinedCharacters() // existing call +``` + +Note: `StaticLayoutContainers` currently stores global `ThreadLocal` scalars and lists, not per-page maps. Per-page data (e.g., bounding boxes) lives in `DocumentProcessor`. This change introduces a new per-page `Map` pattern to `StaticLayoutContainers`. We place it here rather than `DocumentProcessor` because it is layout-metadata consumed by `TriageProcessor`, keeping the triage data path self-contained. The existing `clearContainers()` method **must** be updated to clear this map to prevent cross-document data leakage in multi-document processing. + +### Warning Log + +Emitted from `ContentFilterProcessor` when ratio >= 0.3: + +``` +WARNING: Page 3: 94% of characters are replacement characters (U+FFFD). +This PDF likely contains CID-keyed fonts without ToUnicode mappings. +Text extraction may be incomplete. Consider using --hybrid-mode for OCR fallback. +``` + +This fires regardless of hybrid mode setting. + +### Triage Routing + +In `TriageProcessor.classifyPage()`, a new **Signal 0** is inserted before all existing signals (before TableBorder check). This signal only fires when hybrid mode is active, since `classifyPage()` is only called from `HybridDocumentProcessor`. In non-hybrid mode, only the warning log (from `ContentFilterProcessor`) is emitted: + +```java +double replacementRatio = StaticLayoutContainers.getReplacementCharRatio(pageNumber); +if (replacementRatio >= 0.3) { + return TriageResult.backend(pageNumber, 1.0, signals); +} +``` + +Priority is highest (confidence 1.0) because a page with mostly broken text extraction gains nothing from Java-path processing. + +### Behavior Matrix + +| Hybrid Mode | Ratio >= 30% | Result | +|---|---|---| +| OFF | Yes | Warning log. Java path produces incomplete text. | +| OFF | No | No change. Normal processing. | +| ON (auto) | Yes | Warning log + auto-route to BACKEND (OCR). | +| ON (auto) | No | No change. Normal triage. | +| ON (full) | Yes | Warning log. All pages already go to BACKEND. | +| ON (full) | No | No change. All pages already go to BACKEND. | + +## Changes + +### Modified Files + +| File | Change | +|---|---| +| `TextProcessor.java` | Add `measureReplacementCharRatio()` static method | +| `ContentFilterProcessor.java` | Call measurement before `replaceUndefinedCharacters()`, store result, emit warning | +| `StaticLayoutContainers.java` | Add `replacementCharRatios` map with getter/setter, clear in `clearContainers()` | +| `TriageProcessor.java` | Add Signal 0: replacement ratio check before TableBorder signal | + +### New Files + +| File | Purpose | +|---|---| +| `java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/CidFontDetectionTest.java` | e2e test using synthetic CID PDF | +| `java/opendataloader-pdf-core/src/test/resources/cid-font-no-tounicode.pdf` | Pre-generated test fixture (CID font, no ToUnicode) | +| `java/opendataloader-pdf-core/src/test/resources/generate-cid-test-pdf.py` | Generation script for reference | + +### Modified Test Files + +| File | Change | +|---|---| +| `TextProcessorTest.java` | 5 unit tests for `measureReplacementCharRatio()` | +| `TriageProcessorTest.java` | 3 unit tests for Signal 0 routing | + +## Test Plan + +### Unit Tests (TextProcessorTest) + +- `testMeasureReplacementCharRatio_allReplacement` — all U+FFFD → 1.0 +- `testMeasureReplacementCharRatio_noReplacement` — normal text → 0.0 +- `testMeasureReplacementCharRatio_mixed` — 30% U+FFFD → 0.3 +- `testMeasureReplacementCharRatio_emptyContents` — empty list → 0.0 +- `testMeasureReplacementCharRatio_nonTextChunksIgnored` — non-text objects skipped + +### Unit Tests (TriageProcessorTest) + +- `testClassifyPage_highReplacementRatio_routesToBackend` — ratio 0.5 → BACKEND +- `testClassifyPage_lowReplacementRatio_noEffect` — ratio 0.1 → JAVA (default) +- `testClassifyPage_exactThreshold_routesToBackend` — ratio 0.3 → BACKEND + +### Boundary Tests + +- `testWarningNotEmitted_belowThreshold` — ratio 0.29 → no warning log emitted +- `testWarningEmitted_atThreshold` — ratio 0.30 → warning log emitted + +### e2e Test (CidFontDetectionTest) + +- Load pre-generated `cid-font-no-tounicode.pdf` +- Run through `ContentFilterProcessor.getFilteredContents()` +- Assert: `StaticLayoutContainers.getReplacementCharRatio(0) >= 0.3` +- Assert: warning log contains "replacement characters" + +### Benchmark Regression + +- Existing benchmark PDFs are normal documents with near-zero replacement ratios +- New logic does not affect existing test/benchmark results + +## Not In Scope + +- New CLI options (no `--cid-fallback` or similar) +- `npm run sync` not required (no CLI option changes) +- API signature changes (backward compatible) +- Benchmark threshold changes diff --git a/docs/superpowers/specs/2026-04-29-hybrid-hancom-ai-options-design.md b/docs/superpowers/specs/2026-04-29-hybrid-hancom-ai-options-design.md new file mode 100644 index 0000000..29730b5 --- /dev/null +++ b/docs/superpowers/specs/2026-04-29-hybrid-hancom-ai-options-design.md @@ -0,0 +1,240 @@ +# Hybrid hancom-ai Backend Options & CLI Refactoring + +Issue: not yet filed — this design precedes the issue/PRs. +Scope: opendataloader-pdf (core CLI) + opendataloader-pdfua (downstream CLI) + +## Problem + +Five hancom-ai backend behaviors are already wired through `HybridConfig` but not exposed on any CLI: + +| HybridConfig field | Default | Effect when set | +|---|---|---| +| `regionlistStrategy` | `table-first` | How to handle DLA label 7 (regionlist) | +| `ocrStrategy` | `auto` | Stream-only / fallback / OCR-only | +| `imageCache` | `memory` | Page image cache backing | +| `saveCrops` | `false` | Persist cropped figures (debug) | +| `cropOutputDir` | `null` | Output dir for saved crops (debug) | + +`HancomAISchemaTransformer` and `HancomAIClient` already read these via `HybridConfig`, but `CLIOptions.java` has no flags and `applyHybridOptions()` never sets them. They are reachable only through programmatic `Config` use. + +A second, structural problem makes adding these flags painful: + +- **opendataloader-pdf** defines all CLI options in `CLIOptions.OPTION_DEFINITIONS` (private, single source for `options.json`/Python/Node bindings). +- **opendataloader-pdfua** defines its own `--hybrid`, `--hybrid-url`, `--hybrid-mode` separately in `Main.java`, with different defaults, then forwards them through `RemediationConfig` (3 hybrid fields, 9 constructor overloads). + +Adding 5 new flags to both CLIs the current way means duplicating definitions, expanding `RemediationConfig` to 8 hybrid fields, and creating yet more constructor overloads. The two CLIs will drift further apart. + +## Solution + +Two coupled changes, executed in order: + +1. **Add the 5 hancom-ai-specific options** to core `CLIOptions` under a `--hybrid-hancom-ai-*` prefix, with a guard that rejects them when `--hybrid` is not `hancom-ai`. +2. **Refactor core `CLIOptions` to be reusable** so opendataloader-pdfua imports the full core option set and adds only its own pdfua-specific options on top. `RemediationConfig` embeds a core `Config` instead of carrying parallel hybrid fields. + +After this, adding any future core CLI option propagates to pdfua with a rebuild — no Main.java edits. + +## Design + +### Option naming: `--hybrid-hancom-ai-*` (full path) + +Decision rationale (recorded for future contributors): + +- `--hybrid-*` alone (e.g. `--hybrid-regionlist-strategy`) was rejected because docling-fast and other backends will never support these knobs; the name would lie about scope. +- `--hancom-ai-*` alone (e.g. `--hancom-ai-regionlist-strategy`) was rejected because it breaks the existing `--hybrid-mode/url/timeout/fallback` grouping and gives users two mental models. +- `--hybrid-hancom-ai-*` mirrors the `gh pr create` / `git remote add` full-path convention: every option name encodes the context it belongs to. `--help` alphabetic sort keeps all hybrid options in one block. +- A single comma-separated `--hybrid-hancom-ai-config` mega-option was rejected: defeats Apache Commons CLI typo detection, breaks `options.json` codegen for Python/Node bindings, complicates Windows path escaping. + +The five new options: + +| Long option | Type | Default | Exported | Description | +|---|---|---|---|---| +| `--hybrid-hancom-ai-regionlist-strategy` | string | `table-first` | yes | DLA label 7 handling. Values: `table-first`, `list-only` | +| `--hybrid-hancom-ai-ocr-strategy` | string | `auto` | yes | OCR strategy. Values: `off`, `auto`, `force` | +| `--hybrid-hancom-ai-image-cache` | string | `memory` | yes | Page image cache. Values: `memory`, `disk` | +| `--hybrid-hancom-ai-save-crops` | boolean | `false` | **no** | Persist cropped figures (debug only) | +| `--hybrid-hancom-ai-crop-output-dir` | string | `null` | **no** | Output directory for `--hybrid-hancom-ai-save-crops` | + +`exported=false` for the two debug options keeps them out of `options.json` and the auto-generated Python/Node bindings, while remaining usable on the Java CLI. Same pattern as existing legacy options at `CLIOptions.java:201-208`. + +### Validation + +Inside `applyHybridOptions()`, after `--hybrid` is parsed, before returning: + +```java +boolean usesHancomAiOnly = + commandLine.hasOption(HYBRID_HANCOM_AI_REGIONLIST_STRATEGY_LONG_OPTION) || + commandLine.hasOption(HYBRID_HANCOM_AI_OCR_STRATEGY_LONG_OPTION) || + commandLine.hasOption(HYBRID_HANCOM_AI_IMAGE_CACHE_LONG_OPTION) || + commandLine.hasOption(HYBRID_HANCOM_AI_SAVE_CROPS_LONG_OPTION) || + commandLine.hasOption(HYBRID_HANCOM_AI_CROP_OUTPUT_DIR_LONG_OPTION); + +if (usesHancomAiOnly && !Config.HYBRID_HANCOM_AI.equals(config.getHybrid())) { + throw new IllegalArgumentException( + "Options --hybrid-hancom-ai-* require --hybrid=hancom-ai"); +} +``` + +Per-value validation (e.g. `regionlistStrategy` must be `table-first`/`list-only`) is already implemented in `HybridConfig` setters and re-thrown as `IllegalArgumentException`. CLI passes the raw value through; HybridConfig is the validation authority. + +### Core CLIOptions refactoring + +Goal: pdfua can register every core option in its own `Options` and ask core to apply them to a `Config`. + +Two new public static methods on `CLIOptions`: + +```java +/** Register every core option onto an external Options. Used by downstream CLIs (pdfua). */ +public static void addAllTo(Options options) { + for (OptionDefinition def : OPTION_DEFINITIONS) { + options.addOption(def.toOption()); + } +} + +/** Apply parsed core options to a Config. Used by downstream CLIs after parse. */ +public static void applyAllTo(Config config, CommandLine commandLine) { + // body identical to current createConfigFromCommandLine, + // minus `new Config()` and minus the positional-arg output-folder fallback +} +``` + +The existing `defineOptions()` and `createConfigFromCommandLine()` keep their signatures and behavior; internally they delegate to the two new methods. Backward compatibility for any existing callers is preserved. + +`OPTION_DEFINITIONS` stays private. `OptionDefinition` stays private. We expose only the two operations downstream CLIs actually need. + +### pdfua/Main.java refactoring + +Replace the self-defined hybrid option block (`Main.java:60-62, 99-101`) with: + +```java +Options options = new Options(); +CLIOptions.addAllTo(options); // all core options +options.addOption(null, "lang", true, ...); // pdfua-specific only +options.addOption(null, "audit-bundle-mode", true, ...); +options.addOption(null, "font-embed-mode", true, ...); +options.addOption(null, "conformance", true, ...); +// ... other pdfua-only options + +CommandLine cmd = parser.parse(options, args); + +Config config = new Config(); +CLIOptions.applyAllTo(config, cmd); +applyPdfuaDefaults(config); // pdfua's hybrid defaults +``` + +### pdfua's hybrid defaults + +pdfua currently hardcodes different defaults from core: `hybrid=hancom-ai`, `hybrid-url=http://localhost:18008`, `hybrid-mode=full` (`Main.java:60-62`). After refactoring, these become an explicit override block: + +```java +private static void applyPdfuaDefaults(Config config) { + if (Config.HYBRID_OFF.equals(config.getHybrid())) { + config.setHybrid(Config.HYBRID_HANCOM_AI); + } + if (config.getHybridConfig().getUrl() == null) { + config.getHybridConfig().setUrl("http://localhost:18008"); + } + if (Config.HYBRID_MODE_AUTO.equals(config.getHybridConfig().getMode())) { + config.getHybridConfig().setMode(Config.HYBRID_MODE_FULL); + } +} +``` + +This makes pdfua's deviation from core defaults explicit and grep-able. User-supplied flags still win — the override only fires when the user did not specify a value. + +### RemediationConfig refactoring (Hard break) + +Current state: 3 flat hybrid fields (`hybrid`, `hybridUrl`, `hybridMode`) and 9 constructor overloads (`RemediationConfig.java:42-105`). + +Target state: embed core `Config` directly. Keep only pdfua-specific fields. Builder replaces the constructor overloads. + +```java +public class RemediationConfig { + private final Config coreConfig; // ← core options live here + + // pdfua-only fields + private final String input, output, lang; + private final AuditBundleMode auditBundleMode; + private final FontEmbedMode fontEmbedMode; + private final List conformances; + private final int threads; + private final boolean enrichPictureDescription; + + private RemediationConfig(Builder b) { ... } + + public Config getCoreConfig() { return coreConfig; } + public String getHybrid() { return coreConfig.getHybrid(); } + public HybridConfig getHybridConfig() { return coreConfig.getHybridConfig(); } + // ... pdfua-only getters + + public static Builder builder() { return new Builder(); } + public static class Builder { ... } +} +``` + +`getHybridUrl()` and `getHybridMode()` are **removed** (Hard break). All call sites move to `getHybridConfig().getUrl()` / `getHybridConfig().getMode()`. Verified call sites are confined to test code (`AuditBundleEmitterTest`, `CertificateIssuerTest`, `AuditManifestBuilderTest`, `RemediationConfigAuditBundleTest`) and `RemediationProcessor.java:165-170`. No external SDK consumers identified. + +`RemediationProcessor.java:163-170` simplifies to: + +```java +Config config = remediationConfig.getCoreConfig(); +// (no per-field copy needed — Config already carries all hybrid state) +``` + +### Files touched + +**opendataloader-pdf (core)** + +- `java/opendataloader-pdf-cli/src/main/java/org/opendataloader/pdf/cli/CLIOptions.java` + - Add 5 option constants (long names + descriptions) + - Add 5 entries to `OPTION_DEFINITIONS` (3 exported, 2 not) + - Extend `applyHybridOptions()`: parse, set on `HybridConfig`, validate hancom-ai gate + - Add public `addAllTo(Options)` and `applyAllTo(Config, CommandLine)` + - `defineOptions()` and `createConfigFromCommandLine()` delegate to the new methods +- `java/opendataloader-pdf-cli/src/test/java/org/opendataloader/pdf/cli/CLIOptionsTest.java` + - Tests for parsing each new option + - Tests for the hancom-ai gate (using flag without `--hybrid=hancom-ai` throws) +- After core changes: run `npm run sync` to regenerate `options.json` + Python/Node bindings + +**opendataloader-pdfua** + +- `src/main/java/org/opendataloader/pdf/Main.java` + - Replace self-defined hybrid options with `CLIOptions.addAllTo(options)` + - Add `applyPdfuaDefaults(config)` helper + - Pass `coreConfig` to `RemediationConfig.Builder` instead of individual hybrid strings +- `src/main/java/org/opendataloader/pdf/remediation/RemediationConfig.java` + - Embed `Config coreConfig`, drop `hybrid/hybridUrl/hybridMode` fields + - Replace 9 constructors with one `Builder` + - Update getters: `getHybrid()` delegates, `getHybridUrl()`/`getHybridMode()` removed +- `src/main/java/org/opendataloader/pdf/remediation/RemediationProcessor.java` + - Simplify the lines 163-170 hybrid forwarding block +- All test files instantiating `RemediationConfig` (5 files identified): switch to `Builder` + +### Build & verification + +Per `opendataloader-pdfua/CLAUDE.md`: + +1. Core changes first: `cd opendataloader-pdf/java && mvn install -DskipTests` +2. Then pdfua: `cd opendataloader-pdfua && mvn clean package` +3. Run both test suites +4. Manually verify: + - `opendataloader-pdf input.pdf --hybrid=hancom-ai --hybrid-hancom-ai-regionlist-strategy=list-only` works + - `opendataloader-pdf input.pdf --hybrid-hancom-ai-regionlist-strategy=list-only` (no `--hybrid`) fails with clear error + - `opendataloader-pdfua input.pdf --hybrid-hancom-ai-ocr-strategy=force` works (inherits core option, pdfua defaults still apply) + +### Phasing + +The work splits cleanly into independent commits/PRs: + +1. **PR 1 (core)**: Add 5 options + gate validation + tests + `npm run sync`. Self-contained, mergeable alone. +2. **PR 2 (core)**: Extract `addAllTo` / `applyAllTo` public API. Pure refactoring, no behavior change. +3. **PR 3 (pdfua)**: Switch `Main.java` to use core's API; refactor `RemediationConfig` to Builder + embedded `Config`; update tests. + +PR 1 unblocks immediate user value. PRs 2 & 3 are coupled (PR 3 depends on PR 2 merge → core artifact rebuild) but neither blocks PR 1. + +## Out of scope + +- Migrating other parts of pdfua to a Builder-style config (only `RemediationConfig` is touched). +- Adding flags to docling-fast or other hybrid backends. Spec is hancom-ai-specific. +- Changing `HybridConfig` setter validation (already strict). +- Renaming or repackaging existing `--hybrid-*` options. +- Documentation site updates — `opendataloader.org` reference docs are CI-generated from `options.json` after core merge. diff --git a/examples/python/batch/README.md b/examples/python/batch/README.md new file mode 100644 index 0000000..18ae539 --- /dev/null +++ b/examples/python/batch/README.md @@ -0,0 +1,45 @@ +# Batch Processing Example + +Demonstrates processing multiple PDFs in a single invocation to avoid repeated Java JVM startup overhead. + +## Prerequisites + +- Python 3.10+ +- Java 11+ (on PATH) + +## Example + +[`batch_processing.py`](batch_processing.py) shows two methods for batch conversion: + +1. **File list** — Pass multiple PDF paths as a list +2. **Directory** — Pass a directory path (recursively finds all PDFs) + +Both methods use a single JVM invocation, which is significantly faster than calling the CLI once per file. + +**Run:** +```bash +pip install -r requirements.txt +python batch_processing.py +``` + +## Sample Output + +``` +Found 4 PDFs in pdf/ + +========================================================== +Method 1: Batch convert with file list +========================================================== + +Document Pages Top-level +---------------------------------------------------------- +1901.03003 15 241 +2408.02509v1 14 365 +chinese_scan 1 1 +lorem 1 2 +---------------------------------------------------------- +Total 31 609 + +Processed 4 documents +Time: 7.95s (single JVM invocation) +``` diff --git a/examples/python/batch/batch_processing.py b/examples/python/batch/batch_processing.py new file mode 100644 index 0000000..6a7bbf8 --- /dev/null +++ b/examples/python/batch/batch_processing.py @@ -0,0 +1,119 @@ +#!/usr/bin/env python3 +""" +Batch Processing Example + +Demonstrates processing multiple PDFs in a single invocation to avoid +repeated Java JVM startup overhead. This is the recommended approach +for large-scale document pipelines. + +Requires Python 3.10+. + +Usage: + pip install opendataloader-pdf + python batch_processing.py +""" + +from __future__ import annotations + +import json +import tempfile +import time +from pathlib import Path + +import opendataloader_pdf + + +def batch_convert(pdf_paths: list[str], output_dir: str) -> list[Path]: + """Convert multiple PDFs in a single JVM invocation.""" + opendataloader_pdf.convert( + input_path=pdf_paths, + output_dir=output_dir, + format="json,markdown", + quiet=True, + ) + # Collect output JSON files + return sorted(Path(output_dir).glob("*.json")) + + +def convert_directory(directory: str, output_dir: str) -> list[Path]: + """Convert all PDFs in a directory (recursive).""" + opendataloader_pdf.convert( + input_path=directory, + output_dir=output_dir, + format="json,markdown", + quiet=True, + ) + return sorted(Path(output_dir).glob("*.json")) + + +def summarize_results(json_files: list[Path]) -> None: + """Print a summary of all converted documents.""" + total_pages = 0 + total_elements = 0 + + print(f"\n{'Document':<40} {'Pages':>6} {'Top-level':>9}") + print("-" * 58) + + for json_path in json_files: + with open(json_path, encoding="utf-8") as f: + doc = json.load(f) + pages = doc.get("number of pages", 0) + elements = len(doc.get("kids", [])) + total_pages += pages + total_elements += elements + print(f"{json_path.stem:<40} {pages:>6} {elements:>9}") + + print("-" * 58) + print(f"{'Total':<40} {total_pages:>6} {total_elements:>9}") + print(f"\nProcessed {len(json_files)} documents") + + +def main(): + # Find sample PDFs relative to this script + script_dir = Path(__file__).resolve().parent + repo_root = script_dir.parent.parent.parent + samples_dir = repo_root / "samples" / "pdf" + + pdf_files = sorted(samples_dir.glob("*.pdf")) + if not pdf_files: + print(f"No sample PDFs found at: {samples_dir}") + return + + print(f"Found {len(pdf_files)} PDFs in {samples_dir.name}/") + for p in pdf_files: + print(f" - {p.name}") + + # --- Method 1: Pass a list of files --- + print("\n" + "=" * 58) + print("Method 1: Batch convert with file list") + print("=" * 58) + + with tempfile.TemporaryDirectory() as temp_dir: + start = time.perf_counter() + json_files = batch_convert( + [str(p) for p in pdf_files], + temp_dir, + ) + elapsed = time.perf_counter() - start + + summarize_results(json_files) + print(f"Time: {elapsed:.2f}s (single JVM invocation)") + + # --- Method 2: Pass a directory --- + # Note: directory input recursively finds PDFs in subdirectories, + # so the file count may differ from Method 1 (which uses top-level glob). + print("\n" + "=" * 58) + print("Method 2: Convert entire directory") + print("=" * 58) + + with tempfile.TemporaryDirectory() as temp_dir: + start = time.perf_counter() + json_files = convert_directory(str(samples_dir), temp_dir) + elapsed = time.perf_counter() - start + + summarize_results(json_files) + print(f"Time: {elapsed:.2f}s (single JVM invocation)") + + +if __name__ == "__main__": + main() diff --git a/examples/python/batch/requirements.txt b/examples/python/batch/requirements.txt new file mode 100644 index 0000000..f6dadd5 --- /dev/null +++ b/examples/python/batch/requirements.txt @@ -0,0 +1,2 @@ +# Requires Python 3.10+ +opendataloader-pdf>=2.2.1 diff --git a/examples/python/rag/README.md b/examples/python/rag/README.md new file mode 100644 index 0000000..fdc5604 --- /dev/null +++ b/examples/python/rag/README.md @@ -0,0 +1,95 @@ +# RAG Examples for OpenDataLoader PDF + +Working examples demonstrating how to use OpenDataLoader PDF in RAG (Retrieval-Augmented Generation) pipelines. + +## Prerequisites + +- Python 3.10+ +- Java 11+ (on PATH) + +## Sample PDF + +Examples use `samples/pdf/1901.03003.pdf` - a multi-page academic paper (arXiv:1901.03003) with: +- Two-column layout +- Multiple sections and headings +- Tables and figures +- Complex reading order + +## Examples + +### 1. Basic Chunking (No External Dependencies) + +[`basic_chunking.py`](basic_chunking.py) demonstrates PDF-to-chunks conversion using only `opendataloader-pdf` and Python standard library. No external embedding or vector store dependencies. + +**Features:** +- PDF to JSON conversion with reading order +- Three chunking strategies: + 1. By element (paragraph, heading, list) + 2. By section (grouped under headings) + 3. Merged chunks (minimum size threshold) +- Bounding box metadata for citations + +**Run:** +```bash +pip install opendataloader-pdf +python basic_chunking.py +``` + +### 2. LangChain Integration + +[`langchain_example.py`](langchain_example.py) shows integration with the official LangChain loader. + +**Features:** +- OpenDataLoaderPDFLoader usage +- Returns LangChain Document objects +- Ready for any LangChain pipeline + +**Run:** +```bash +pip install -r requirements.txt +python langchain_example.py +``` + +## Sample Output + +``` +Processing: 1901.03003.pdf +================================================== +Document: 1901.03003.pdf +Pages: 9 +Elements: 187 + +--- Strategy 1: Chunk by Element --- +Created 156 chunks + [1] RoBERTa: A Robustly Optimized BERT Pretraining Approach + Source: 1901.03003.pdf, Page 1, Position (108, 655) + [2] Yinhan Liu† Myle Ott† Naman Goyal† Jingfei Du† ... + Source: 1901.03003.pdf, Page 1, Position (142, 603) + +--- Strategy 2: Chunk by Section --- +Created 12 chunks + Section: RoBERTa: A Robustly Optimized BERT Pretraining Approach + Section: 1 Introduction + Section: 2 Background + ... +``` + +## Next Steps + +After chunking, integrate with your preferred: +- **Embedding model**: OpenAI, Cohere, HuggingFace, etc. +- **Vector store**: Chroma, FAISS, Pinecone, Weaviate, etc. + +Each chunk includes `text` and `metadata` ready for embedding: + +```python +{ + "text": "Language model pretraining has led to significant...", + "metadata": { + "type": "paragraph", + "page": 1, + "bbox": [108.0, 526.2, 286.5, 592.8], + "source": "1901.03003.pdf" + } +} +``` diff --git a/examples/python/rag/basic_chunking.py b/examples/python/rag/basic_chunking.py new file mode 100644 index 0000000..d3319e6 --- /dev/null +++ b/examples/python/rag/basic_chunking.py @@ -0,0 +1,227 @@ +#!/usr/bin/env python3 +""" +Basic RAG Chunking Example - No External Dependencies + +Demonstrates PDF-to-chunks conversion using only opendataloader-pdf +and Python standard library. Ready for integration with any embedding +model or vector store. + +Usage: + pip install opendataloader-pdf + python basic_chunking.py +""" + +import json +import tempfile +from pathlib import Path + + +import opendataloader_pdf + + +def convert_pdf_to_json(pdf_path: str, output_dir: str) -> Path: + """Convert PDF to JSON and Markdown with reading order enabled.""" + opendataloader_pdf.convert( + input_path=pdf_path, + output_dir=output_dir, + format="json,markdown", + reading_order="xycut", + quiet=True, + ) + pdf_name = Path(pdf_path).stem + return Path(output_dir) / f"{pdf_name}.json" + + +def load_document(json_path: Path) -> dict: + """Load the JSON output from OpenDataLoader.""" + with open(json_path, encoding="utf-8") as f: + return json.load(f) + + +def chunk_by_element(doc: dict) -> list[dict]: + """ + Strategy 1: Chunk by semantic element. + + Creates one chunk per paragraph, heading, or list element. + Best for: Fine-grained retrieval, precise citations. + """ + chunks = [] + for element in doc.get("kids", []): + if element.get("type") in ("paragraph", "heading", "list"): + chunks.append({ + "text": element.get("content", ""), + "metadata": { + "type": element["type"], + "page": element.get("page number"), + "bbox": element.get("bounding box"), + "source": doc.get("file name"), + } + }) + return chunks + + +def chunk_by_section(doc: dict) -> list[dict]: + """ + Strategy 2: Chunk by heading/section. + + Groups content under headings into coherent sections. + Best for: Context-rich retrieval, topic-based search. + """ + chunks = [] + current_heading = None + current_content: list[str] = [] + current_start_page = None + + for element in doc.get("kids", []): + element_type = element.get("type") + + if element_type == "heading": + # Save previous section + if current_content: + chunks.append({ + "text": "\n".join(current_content), + "metadata": { + "heading": current_heading, + "page": current_start_page, + "source": doc.get("file name"), + } + }) + current_heading = element.get("content", "") + current_content = [current_heading] + current_start_page = element.get("page number") + elif element_type in ("paragraph", "list"): + content = element.get("content", "") + if content: + current_content.append(content) + + # Save the last section + if current_content: + chunks.append({ + "text": "\n".join(current_content), + "metadata": { + "heading": current_heading, + "page": current_start_page, + "source": doc.get("file name"), + } + }) + + return chunks + + +def chunk_with_min_size(doc: dict, min_chars: int = 200) -> list[dict]: + """ + Strategy 3: Merge adjacent elements until minimum size. + + Combines small paragraphs to avoid overly fragmented chunks. + Best for: Balanced chunk sizes, reducing noise. + """ + chunks = [] + buffer_text = "" + buffer_pages: list[int] = [] + + for element in doc.get("kids", []): + if element.get("type") in ("paragraph", "heading", "list"): + content = element.get("content", "") + page = element.get("page number") + + buffer_text += content + "\n" + if page and page not in buffer_pages: + buffer_pages.append(page) + + if len(buffer_text) >= min_chars: + chunks.append({ + "text": buffer_text.strip(), + "metadata": { + "pages": buffer_pages.copy(), + "source": doc.get("file name"), + } + }) + buffer_text = "" + buffer_pages = [] + + # Save remaining buffer + if buffer_text.strip(): + chunks.append({ + "text": buffer_text.strip(), + "metadata": { + "pages": buffer_pages, + "source": doc.get("file name"), + } + }) + + return chunks + + +def format_citation(metadata: dict) -> str: + """Generate a citation string from chunk metadata.""" + source = metadata.get("source", "unknown") + page = metadata.get("page") or (metadata.get("pages", [None]) or [None])[0] + bbox = metadata.get("bbox") + + citation = f"Source: {source}" + if page: + citation += f", Page {page}" + if bbox: + citation += f", Position ({bbox[0]:.0f}, {bbox[1]:.0f})" + + return citation + + +def main(): + # Find sample PDF relative to this script + # Using 1901.03003.pdf - a multi-page academic paper with complex layout + script_dir = Path(__file__).resolve().parent + repo_root = script_dir.parent.parent.parent + sample_pdf = repo_root / "samples" / "pdf" / "1901.03003.pdf" + + if not sample_pdf.exists(): + print(f"Sample PDF not found at: {sample_pdf}") + print("Make sure you're running from the repository.") + return + + print(f"Processing: {sample_pdf.name}") + print("=" * 50) + + # Convert PDF to JSON in a temp directory + with tempfile.TemporaryDirectory() as temp_dir: + json_path = convert_pdf_to_json(str(sample_pdf), temp_dir) + doc = load_document(json_path) + + print(f"Document: {doc.get('file name')}") + print(f"Pages: {doc.get('number of pages')}") + print(f"Elements: {len(doc.get('kids', []))}") + + # Strategy 1: By element + print("\n--- Strategy 1: Chunk by Element ---") + element_chunks = chunk_by_element(doc) + print(f"Created {len(element_chunks)} chunks") + for i, chunk in enumerate(element_chunks[:3]): + text_preview = chunk["text"][:60] + "..." if len(chunk["text"]) > 60 else chunk["text"] + print(f" [{i+1}] {text_preview}") + print(f" {format_citation(chunk['metadata'])}") + + # Strategy 2: By section + print("\n--- Strategy 2: Chunk by Section ---") + section_chunks = chunk_by_section(doc) + print(f"Created {len(section_chunks)} chunks") + for i, chunk in enumerate(section_chunks[:2]): + heading = chunk["metadata"].get("heading", "No heading") + print(f" Section: {heading}") + print(f" Text: {chunk['text'][:60]}...") + + # Strategy 3: Merged + print("\n--- Strategy 3: Merged Chunks (min 200 chars) ---") + merged_chunks = chunk_with_min_size(doc, min_chars=200) + print(f"Created {len(merged_chunks)} chunks") + for i, chunk in enumerate(merged_chunks[:2]): + print(f" [{i+1}] {len(chunk['text'])} chars: {chunk['text'][:50]}...") + + # Show example chunk structure + print("\n--- Example Chunk Structure ---") + print("Each chunk has 'text' and 'metadata' ready for embedding:") + if element_chunks: + print(json.dumps(element_chunks[0], indent=2, ensure_ascii=False)) + + +if __name__ == "__main__": + main() diff --git a/examples/python/rag/langchain_example.py b/examples/python/rag/langchain_example.py new file mode 100644 index 0000000..a2640fa --- /dev/null +++ b/examples/python/rag/langchain_example.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python3 +""" +LangChain Integration Example + +Demonstrates using the official langchain-opendataloader-pdf package +for seamless RAG pipeline integration. + +Usage: + pip install langchain-opendataloader-pdf + python langchain_example.py +""" + +from pathlib import Path + +from langchain_opendataloader_pdf import OpenDataLoaderPDFLoader + + +def main(): + # Find sample PDF relative to this script + # Using 1901.03003.pdf - a multi-page academic paper with complex layout + script_dir = Path(__file__).resolve().parent + repo_root = script_dir.parent.parent.parent + sample_pdf = repo_root / "samples" / "pdf" / "1901.03003.pdf" + + if not sample_pdf.exists(): + print(f"Sample PDF not found at: {sample_pdf}") + print("Make sure you're running from the repository.") + return + + print(f"Loading: {sample_pdf.name}") + print("=" * 50) + + # Create loader with LangChain integration + loader = OpenDataLoaderPDFLoader( + file_path=[str(sample_pdf)], + format="text", + quiet=True, + ) + + # Load documents (returns LangChain Document objects) + documents = loader.load() + + print(f"Loaded {len(documents)} document(s)\n") + + for i, doc in enumerate(documents): + print(f"--- Document {i+1} ---") + print(f"Metadata: {doc.metadata}") + content_preview = doc.page_content[:200] + "..." if len(doc.page_content) > 200 else doc.page_content + print(f"Content:\n{content_preview}\n") + + # Show integration points + print("--- LangChain Integration ---") + print("These Document objects work directly with:") + print(" - Text splitters: RecursiveCharacterTextSplitter, etc.") + print(" - Vector stores: Chroma, FAISS, Pinecone, etc.") + print(" - Retrievers: vectorstore.as_retriever()") + print(" - Chains: RetrievalQA, ConversationalRetrievalChain, etc.") + + # Example: Using with a text splitter + print("\n--- Example: Text Splitting ---") + try: + from langchain_text_splitters import RecursiveCharacterTextSplitter + + splitter = RecursiveCharacterTextSplitter( + chunk_size=500, + chunk_overlap=50, + ) + chunks = splitter.split_documents(documents) + print(f"Split into {len(chunks)} chunks") + if chunks: + print(f"First chunk ({len(chunks[0].page_content)} chars):") + print(f" {chunks[0].page_content[:100]}...") + except ImportError: + print("Install langchain-text-splitters to see this example:") + print(" pip install langchain-text-splitters") + + +if __name__ == "__main__": + main() diff --git a/examples/python/rag/requirements.txt b/examples/python/rag/requirements.txt new file mode 100644 index 0000000..681e1e9 --- /dev/null +++ b/examples/python/rag/requirements.txt @@ -0,0 +1,3 @@ +opendataloader-pdf>=2.2.1 +langchain-opendataloader-pdf>=2.0.0 +langchain-text-splitters>=1.1.2 diff --git a/java/.run/OpenDataLoaderCli.run.xml b/java/.run/OpenDataLoaderCli.run.xml new file mode 100644 index 0000000..4ef0677 --- /dev/null +++ b/java/.run/OpenDataLoaderCli.run.xml @@ -0,0 +1,14 @@ + + + + \ No newline at end of file diff --git a/java/checkstyle.xml b/java/checkstyle.xml new file mode 100644 index 0000000..69e30e9 --- /dev/null +++ b/java/checkstyle.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/java/opendataloader-pdf-cli/pom.xml b/java/opendataloader-pdf-cli/pom.xml new file mode 100644 index 0000000..a1208e5 --- /dev/null +++ b/java/opendataloader-pdf-cli/pom.xml @@ -0,0 +1,137 @@ + + + + 4.0.0 + + + org.opendataloader + opendataloader-pdf-parent + 0.0.0 + ../pom.xml + + + opendataloader-pdf-cli + jar + + OpenDataLoader PDF CLI + OpenDataLoader PDF CLI + + + + org.opendataloader + opendataloader-pdf-core + ${project.version} + + + commons-cli + commons-cli + + + org.assertj + assertj-core + test + + + org.junit.jupiter + junit-jupiter + test + + + + + + + maven-compiler-plugin + + + org.apache.maven.plugins + maven-shade-plugin + + + package + + shade + + + + + *:* + + about.html + module-info.class + META-INF/*.MF + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA + META-INF/versions/** + META-INF/LICENSE + META-INF/LICENSE.txt + META-INF/LICENSE.md + META-INF/NOTICE + META-INF/NOTICE.txt + META-INF/NOTICE.md + + + + com.sun.xml.bind:jaxb-impl + + com/sun/xml/bind/** + + + + org.jacoco:* + + META-INF/maven/** + + + + + + org.opendataloader.pdf.cli.CLIMain + + + + + META-INF/DEPENDENCIES + + + META-INF/LICENSE + ${project.basedir}/../../LICENSE + + + META-INF/NOTICE + ${project.basedir}/../../NOTICE + + + + + + + + + + diff --git a/java/opendataloader-pdf-cli/src/main/java/org/opendataloader/pdf/cli/CLIMain.java b/java/opendataloader-pdf-cli/src/main/java/org/opendataloader/pdf/cli/CLIMain.java new file mode 100644 index 0000000..d0c051e --- /dev/null +++ b/java/opendataloader-pdf-cli/src/main/java/org/opendataloader/pdf/cli/CLIMain.java @@ -0,0 +1,262 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.cli; + +import org.apache.commons.cli.*; +import org.opendataloader.pdf.api.Config; +import org.opendataloader.pdf.api.OpenDataLoaderPDF; +import org.opendataloader.pdf.api.cli.CLIOptions; +import org.opendataloader.pdf.exceptions.EncryptedTaggedPdfNotSupportedException; +import org.opendataloader.pdf.exceptions.InvalidPdfFileException; +import org.verapdf.exceptions.InvalidPasswordException; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; + +import java.io.File; +import java.util.Locale; +import java.util.logging.Handler; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class CLIMain { + + private static final Logger LOGGER = Logger.getLogger(CLIMain.class.getCanonicalName()); + + private static final String HELP = "[options] ...\n Options:"; + + private enum InputSource { CLI_ARGUMENT, DIRECTORY_CHILD } + + /** + * Result of processing a path: whether all files succeeded, and how many + * PDF files were processed under it (counted recursively for directories, + * 1 or 0 for a single file). Used by {@link #processDirectory} to print a + * clear summary when a user-supplied folder contains no PDFs (PDFDLOSP-15). + */ + private static final class PathResult { + final boolean allSucceeded; + final int pdfCount; + + PathResult(boolean allSucceeded, int pdfCount) { + this.allSucceeded = allSucceeded; + this.pdfCount = pdfCount; + } + } + + public static void main(String[] args) { + int exitCode = run(args); + if (exitCode != 0) { + System.exit(exitCode); + } + } + + /** + * Runs the CLI with the given arguments and returns the exit code. + * + * @param args command-line arguments + * @return 0 on success, non-zero on failure + */ + static int run(String[] args) { + Options options = CLIOptions.defineOptions(); + HelpFormatter formatter = new HelpFormatter(); + CommandLine commandLine; + try { + commandLine = new DefaultParser().parse(options, args); + } catch (ParseException e) { + System.out.println(e.getMessage()); + formatter.printHelp(HELP, options); + return 2; + } + + // Handle --export-options before requiring input files + if (commandLine.hasOption(CLIOptions.EXPORT_OPTIONS_LONG_OPTION)) { + CLIOptions.exportOptionsAsJson(System.out); + return 0; + } + + if (commandLine.getArgs().length < 1) { + formatter.printHelp(HELP, options); + return 0; + } + + String[] arguments = commandLine.getArgs(); + + Config config; + boolean quiet; + try { + config = CLIOptions.createConfigFromCommandLine(commandLine); + quiet = commandLine.hasOption(CLIOptions.QUIET_OPTION) || commandLine.hasOption("quiet"); + } catch (IllegalArgumentException exception) { + System.out.println(exception.getMessage()); + formatter.printHelp(HELP, options); + return 2; + } + configureLogging(quiet); + boolean hasFailure = false; + try { + for (String argument : arguments) { + if (!processPath(new File(argument), config, InputSource.CLI_ARGUMENT).allSucceeded) { + hasFailure = true; + } + } + } finally { + // Release resources (e.g., hybrid client thread pools) + OpenDataLoaderPDF.shutdown(); + } + return hasFailure ? 1 : 0; + } + + private static void configureLogging(boolean quiet) { + if (!quiet) { + return; + } + Logger rootLogger = Logger.getLogger(""); + rootLogger.setLevel(Level.OFF); + for (Handler handler : rootLogger.getHandlers()) { + handler.setLevel(Level.OFF); + } + LOGGER.setLevel(Level.OFF); + } + + /** + * Processes a file or directory, returning true if all files succeeded. + * + *

    {@code source} distinguishes user-provided arguments + * ({@link InputSource#CLI_ARGUMENT}) from files discovered during directory + * traversal ({@link InputSource#DIRECTORY_CHILD}): a non-PDF given directly + * on the command line is reported as an error, while non-PDF files inside a + * directory are silently skipped (preserves batch-folder processing). + */ + private static PathResult processPath(File file, Config config, InputSource source) { + if (!file.exists()) { + LOGGER.log(Level.WARNING, "File or folder " + file.getAbsolutePath() + " not found."); + return new PathResult(false, 0); + } + if (file.isDirectory()) { + return processDirectory(file, config, source); + } + if (file.isFile()) { + boolean isPdf = isPdfFile(file); + if (source == InputSource.CLI_ARGUMENT && !isPdf) { + System.out.println("Error: '" + file.getName() + + "' is not a PDF file. Input must be a PDF file or a folder containing PDF files."); + return new PathResult(false, 0); + } + return new PathResult(processFile(file, config, source), isPdf ? 1 : 0); + } + return new PathResult(true, 0); + } + + /** + * Counts PDF files processed under the directory rooted at {@code file} + * (recursively), so the CLI can surface a clear summary when a + * user-supplied folder contains no PDFs. Without this feedback the program + * would exit silently with status 0 and the user could not distinguish + * "wrong folder", "empty folder", and "successful run" (PDFDLOSP-15). + * + *

    The summary is only printed for folders given directly on the command + * line ({@link InputSource#CLI_ARGUMENT}) — nested subdirectories aggregate + * upward into the top-level count rather than each printing their own line. + * + *

    The summary line is the final result of the run, not a log + * entry, and is therefore intentionally emitted on stdout even under + * {@code --quiet}. {@code --quiet} suppresses processing logs; users + * still need to see whether anything was actually processed. The path + * shown is {@link File#getPath()} (the literal argument the user typed, + * e.g. {@code .} or {@code basic_images}) rather than {@link File#getName()}, + * which would be empty for {@code .} or trailing-slash inputs. + */ + private static PathResult processDirectory(File file, Config config, InputSource source) { + File[] children = file.listFiles(); + if (children == null) { + LOGGER.log(Level.WARNING, "Unable to read folder " + file.getAbsolutePath()); + return new PathResult(false, 0); + } + boolean allSucceeded = true; + int pdfCount = 0; + for (File child : children) { + PathResult childResult = processPath(child, config, InputSource.DIRECTORY_CHILD); + if (!childResult.allSucceeded) { + allSucceeded = false; + } + pdfCount += childResult.pdfCount; + } + if (source == InputSource.CLI_ARGUMENT) { + if (pdfCount == 0) { + System.out.println("No PDF files found in '" + file.getPath() + "'."); + } else { + System.out.println("Processed " + pdfCount + " PDF file" + + (pdfCount == 1 ? "" : "s") + " in '" + file.getPath() + "'."); + } + } + return new PathResult(allSucceeded, pdfCount); + } + + /** + * Processes a single PDF file. + * + *

    {@code source} controls how an {@link InvalidPdfFileException} from + * the magic-number guard is surfaced: {@link InputSource#CLI_ARGUMENT} + * routes it to stdout as a user-facing error and fails the run; + * {@link InputSource#DIRECTORY_CHILD} logs a WARNING and treats the file + * as silently skipped so batch-folder runs can still exit 0. + * + * @param file the file to process + * @param config the processing configuration + * @param source whether the file came from a CLI argument or directory traversal + * @return true if processing succeeded (or the file was a silently + * skipped non-PDF inside a directory), false on error. + */ + private static boolean processFile(File file, Config config, InputSource source) { + if (!isPdfFile(file)) { + LOGGER.log(Level.FINE, "Skipping non-PDF file " + file.getAbsolutePath()); + return true; + } + try { + OpenDataLoaderPDF.processFile(file.getAbsolutePath(), config); + return true; + } catch (InvalidPdfFileException invalid) { + if (source == InputSource.CLI_ARGUMENT) { + System.out.println("Error: " + invalid.getMessage()); + return false; + } + LOGGER.log(Level.WARNING, invalid.getMessage() + " Skipping."); + return true; + } catch (InvalidPasswordException exception) { + String password = config.getPassword(); + String message = (password == null || password.isEmpty()) + ? "Error: '" + file.getName() + "' is password-protected. Use --password option." + : "Error: Incorrect password for '" + file.getName() + "'."; + System.out.println(message); + return false; + } catch (EncryptedTaggedPdfNotSupportedException exception) { + System.out.println("Error: " + exception.getMessage()); + return false; + } catch (Exception exception) { + LOGGER.log(Level.SEVERE, "Exception during processing file " + file.getAbsolutePath() + ": " + + exception.getMessage(), exception); + return false; + } finally { + StaticContainers.closeImagesUtils(); + } + } + + private static boolean isPdfFile(File file) { + if (!file.isFile()) { + return false; + } + String name = file.getName(); + return name.toLowerCase(Locale.ROOT).endsWith(".pdf"); + } +} diff --git a/java/opendataloader-pdf-cli/src/test/java/org/opendataloader/pdf/cli/CLIMainTest.java b/java/opendataloader-pdf-cli/src/test/java/org/opendataloader/pdf/cli/CLIMainTest.java new file mode 100644 index 0000000..266aaf6 --- /dev/null +++ b/java/opendataloader-pdf-cli/src/test/java/org/opendataloader/pdf/cli/CLIMainTest.java @@ -0,0 +1,672 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.cli; + +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.PDPage; +import org.apache.pdfbox.pdmodel.encryption.AccessPermission; +import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.PrintStream; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; +import java.util.logging.Handler; +import java.util.logging.Level; +import java.util.logging.LogRecord; +import java.util.logging.Logger; + +import static org.junit.jupiter.api.Assertions.*; + +class CLIMainTest { + + @TempDir + Path tempDir; + + /** + * When processing a PDF file throws any exception, CLIMain.run() must return + * a non-zero exit code. This test uses a malformed PDF with hybrid mode + * targeting an unreachable server, which triggers an exception during processing. + * + *

    Before this fix, processFile() caught all exceptions and logged them at + * SEVERE level but never propagated the failure to the exit code. + * + *

    Regression test for https://github.com/opendataloader-project/opendataloader-pdf/issues/287 + */ + @Test + void testProcessingFailureReturnsNonZeroExitCode() throws IOException { + // Create a minimal PDF file so processFile is actually invoked + // (the file must exist and end in .pdf to pass the isPdfFile check) + Path testPdf = tempDir.resolve("test.pdf"); + Files.write(testPdf, "%PDF-1.4 minimal".getBytes()); + + // Use an unreachable hybrid URL — the processing will fail either at + // the hybrid availability check or during PDF parsing, both of which + // must result in a non-zero exit code. + int exitCode = CLIMain.run(new String[]{ + "--hybrid", "docling-fast", + "--hybrid-url", "http://127.0.0.1:59999", + testPdf.toString() + }); + + assertNotEquals(0, exitCode, + "Exit code must be non-zero when file processing fails"); + } + + /** + * When a directory contains a file that fails processing, run() must return + * non-zero, even though other files in the directory may succeed. The + * "failure" here must be a genuine processing error (unreachable hybrid + * backend), not a corrupt-content classification — corrupt PDFs inside a + * directory are silently skipped by design (see + * {@link #testCorruptPdfInsideDirectoryIsSilentlySkipped()}), so the test + * uses a parseable PDF and lets the hybrid availability check fail. + */ + @Test + void testDirectoryWithFailingFileReturnsNonZeroExitCode() throws IOException { + Path dir = tempDir.resolve("docs"); + Files.createDirectory(dir); + Path testPdf = dir.resolve("bad.pdf"); + try (PDDocument doc = new PDDocument()) { + doc.addPage(new PDPage()); + doc.save(testPdf.toFile()); + } + + int exitCode = CLIMain.run(new String[]{ + "--hybrid", "docling-fast", + "--hybrid-url", "http://127.0.0.1:59999", + dir.toString() + }); + + assertNotEquals(0, exitCode, + "Exit code must be non-zero when any file in directory fails"); + } + + /** + * Normal invocation with no arguments should return 0 (just prints help). + */ + @Test + void testNoArgumentsReturnsZero() { + int exitCode = CLIMain.run(new String[]{}); + assertEquals(0, exitCode); + } + + /** + * Invalid CLI arguments (e.g., unrecognized option) must return exit code 2, + * following POSIX convention for command-line usage errors. + */ + @Test + void testInvalidArgumentsReturnsExitCode2() { + int exitCode = CLIMain.run(new String[]{"--no-such-option"}); + assertEquals(2, exitCode); + } + + /** + * Non-existent input file must return non-zero exit code. + */ + @Test + void testNonExistentFileReturnsNonZeroExitCode() { + int exitCode = CLIMain.run(new String[]{"/nonexistent/path/file.pdf"}); + assertNotEquals(0, exitCode, + "Exit code must be non-zero when input file does not exist"); + } + + /** + * A non-PDF file given directly on the command line must produce a clear + * error message on stdout and a non-zero exit code, instead of silently + * exiting with success. + * + *

    Regression test for PDFDLOSP-5. + */ + @Test + void testNonPdfTopLevelArgumentEmitsErrorAndFails() throws IOException { + Path png = tempDir.resolve("abcd.png"); + Files.write(png, new byte[]{(byte) 0x89, 0x50, 0x4E, 0x47}); + + String stdout = captureStdoutOf(() -> CLIMain.run(new String[]{png.toString()})); + + assertTrue(stdout.contains("'abcd.png' is not a PDF file"), + "stdout must mention the offending file name and that it is not a PDF; got: " + stdout); + assertTrue(stdout.contains("Input must be a PDF file or a folder containing PDF files"), + "stdout must guide the user to valid input; got: " + stdout); + } + + @Test + void testNonPdfTopLevelArgumentReturnsNonZeroExitCode() throws IOException { + Path png = tempDir.resolve("abcd.png"); + Files.write(png, new byte[]{(byte) 0x89, 0x50, 0x4E, 0x47}); + + int exitCode = CLIMain.run(new String[]{png.toString()}); + + assertNotEquals(0, exitCode, + "Exit code must be non-zero when the top-level argument is not a PDF"); + } + + /** + * Non-PDF files inside a directory must continue to be silently skipped — + * batch-folder processing with mixed file types is a legitimate use case + * and must not regress. + */ + @Test + void testNonPdfFileInsideDirectoryIsSilentlySkipped() throws IOException { + Path dir = tempDir.resolve("mixed"); + Files.createDirectory(dir); + Files.write(dir.resolve("note.png"), new byte[]{(byte) 0x89, 0x50, 0x4E, 0x47}); + Files.write(dir.resolve("readme.txt"), "hello".getBytes(StandardCharsets.UTF_8)); + + String stdout = captureStdoutOf(() -> CLIMain.run(new String[]{dir.toString()})); + + assertFalse(stdout.contains("is not a PDF file"), + "Files discovered during directory traversal must not trigger the top-level error; got: " + stdout); + } + + @Test + void testDirectoryWithOnlyNonPdfFilesReturnsZero() throws IOException { + Path dir = tempDir.resolve("non-pdf-only"); + Files.createDirectory(dir); + Files.write(dir.resolve("note.png"), new byte[]{(byte) 0x89, 0x50, 0x4E, 0x47}); + + int exitCode = CLIMain.run(new String[]{dir.toString()}); + + assertEquals(0, exitCode, + "Directories containing only non-PDF files must succeed (silent skip)"); + } + + /** + * A folder containing zero processable PDFs must emit a clear "No PDF files + * found" message instead of exiting silently with status 0 — without this + * the user cannot distinguish "wrong folder", "empty folder", and + * "successful run". The path shown is the literal argument the user typed + * (File#getPath), so {@code .} and trailing-slash inputs render correctly. + * + *

    Regression test for PDFDLOSP-15. + */ + @Test + void testEmptyDirectoryEmitsNoPdfFoundMessage() throws IOException { + Path dir = tempDir.resolve("empty"); + Files.createDirectory(dir); + + String[] stdoutHolder = new String[1]; + int exitCode = (int) runCapturingStdout( + () -> CLIMain.run(new String[]{dir.toString()}), + stdoutHolder); + + assertEquals(0, exitCode, "Empty folder is not an error"); + assertTrue(stdoutHolder[0].contains("No PDF files found in '" + dir + "'"), + "stdout must report that no PDFs were found; got: " + stdoutHolder[0]); + } + + @Test + void testDirectoryWithOnlyNonPdfFilesEmitsNoPdfFoundMessage() throws IOException { + Path dir = tempDir.resolve("basic_images"); + Files.createDirectory(dir); + Files.write(dir.resolve("a.png"), new byte[]{(byte) 0x89, 0x50, 0x4E, 0x47}); + Files.write(dir.resolve("b.jpg"), new byte[]{(byte) 0xFF, (byte) 0xD8}); + + String[] stdoutHolder = new String[1]; + int exitCode = (int) runCapturingStdout( + () -> CLIMain.run(new String[]{dir.toString()}), + stdoutHolder); + + assertEquals(0, exitCode); + assertTrue(stdoutHolder[0].contains("No PDF files found in '" + dir + "'"), + "stdout must report that no PDFs were found; got: " + stdoutHolder[0]); + } + + /** + * Subdirectories must aggregate into the top-level summary rather than + * emit their own "No PDF files found" / "Processed N..." lines — only the + * user-supplied folder path appears in the output. + */ + @Test + void testNestedSubdirectoriesAggregateIntoTopLevelSummary() throws IOException { + Path top = tempDir.resolve("top"); + Path sub = top.resolve("sub"); + Files.createDirectories(sub); + Files.write(sub.resolve("nested.pdf"), "%PDF-1.4 minimal".getBytes(StandardCharsets.UTF_8)); + + String[] stdoutHolder = new String[1]; + runCapturingStdout( + () -> CLIMain.run(new String[]{top.toString()}), + stdoutHolder); + + assertTrue(stdoutHolder[0].contains("Processed 1 PDF file in '" + top + "'"), + "stdout must summarize at the top-level folder including nested PDFs; got: " + + stdoutHolder[0]); + assertFalse(stdoutHolder[0].contains("in '" + sub + "'"), + "stdout must not emit a separate summary for nested subdirectories; got: " + + stdoutHolder[0]); + } + + @Test + void testDirectoryWithMultiplePdfsEmitsProcessedSummary() throws IOException { + Path dir = tempDir.resolve("docs"); + Files.createDirectory(dir); + Files.write(dir.resolve("a.pdf"), "%PDF-1.4 minimal".getBytes(StandardCharsets.UTF_8)); + Files.write(dir.resolve("b.pdf"), "%PDF-1.4 minimal".getBytes(StandardCharsets.UTF_8)); + + String[] stdoutHolder = new String[1]; + runCapturingStdout( + () -> CLIMain.run(new String[]{dir.toString()}), + stdoutHolder); + + assertTrue(stdoutHolder[0].contains("Processed 2 PDF files in '" + dir + "'"), + "stdout must summarize with plural 'files' when count > 1; got: " + + stdoutHolder[0]); + } + + /** + * When the command line mixes a valid PDF argument with a top-level non-PDF + * argument, the run must fail overall but only the non-PDF entry should + * produce the user-facing error message. + */ + @Test + void testMixedTopLevelArgumentsReportOnlyNonPdfAndFailOverall() throws IOException { + Path png = tempDir.resolve("note.png"); + Files.write(png, new byte[]{(byte) 0x89, 0x50, 0x4E, 0x47}); + Path pdf = tempDir.resolve("doc.pdf"); + Files.write(pdf, "%PDF-1.4 minimal".getBytes(StandardCharsets.UTF_8)); + + String[] stdoutHolder = new String[1]; + int exitCode = (int) runCapturingStdout( + () -> CLIMain.run(new String[]{pdf.toString(), png.toString()}), + stdoutHolder); + + assertNotEquals(0, exitCode, + "Exit code must be non-zero when any top-level argument is not a PDF"); + assertTrue(stdoutHolder[0].contains("'note.png' is not a PDF file"), + "stdout must call out the non-PDF argument by name; got: " + stdoutHolder[0]); + } + + /** + * Password-protected PDF with no password supplied must produce a single + * user-friendly error message (no verapdf stack trace) and exit non-zero. + * + *

    Regression test for PDFDLOSP-9. + */ + @Test + void testPasswordProtectedWithoutPasswordEmitsFriendlyError() throws IOException { + Path pdf = createPasswordProtectedPdf(tempDir.resolve("locked.pdf"), "1234"); + + String[] holder = new String[1]; + int exitCode = (int) runCapturingStdout( + () -> CLIMain.run(new String[]{pdf.toString()}), + holder); + + assertNotEquals(0, exitCode, "exit code must be non-zero"); + assertTrue(holder[0].contains("'locked.pdf' is password-protected"), + "stdout must call out the file by name and explain it is password-protected; got: " + holder[0]); + assertTrue(holder[0].contains("--password"), + "stdout must guide the user to the --password option; got: " + holder[0]); + assertFalse(holder[0].contains("InvalidPasswordException"), + "stdout must not expose internal exception type; got: " + holder[0]); + assertFalse(holder[0].contains("at org.verapdf"), + "stdout must not expose a stack trace; got: " + holder[0]); + } + + /** + * Password-protected PDF with an incorrect password must produce a single + * user-friendly error message (no verapdf stack trace) and exit non-zero. + * + *

    Regression test for PDFDLOSP-9. + */ + @Test + void testPasswordProtectedWithWrongPasswordEmitsFriendlyError() throws IOException { + Path pdf = createPasswordProtectedPdf(tempDir.resolve("locked.pdf"), "1234"); + + String[] holder = new String[1]; + int exitCode = (int) runCapturingStdout( + () -> CLIMain.run(new String[]{pdf.toString(), "--password", "wrongpw"}), + holder); + + assertNotEquals(0, exitCode, "exit code must be non-zero"); + assertTrue(holder[0].contains("Incorrect password for 'locked.pdf'"), + "stdout must report incorrect password and the file name; got: " + holder[0]); + assertFalse(holder[0].contains("InvalidPasswordException"), + "stdout must not expose internal exception type; got: " + holder[0]); + assertFalse(holder[0].contains("at org.verapdf"), + "stdout must not expose a stack trace; got: " + holder[0]); + } + + /** + * Correct password must keep the existing success path: exit code 0 and + * the JSON output produced next to the input. Regression guard for the + * happy case while fixing PDFDLOSP-9. + */ + @Test + void testPasswordProtectedWithCorrectPasswordSucceeds() throws IOException { + Path pdf = createPasswordProtectedPdf(tempDir.resolve("locked.pdf"), "1234"); + + int exitCode = CLIMain.run(new String[]{pdf.toString(), "--password", "1234"}); + + assertEquals(0, exitCode, "correct password must keep exit code 0"); + assertTrue(Files.exists(tempDir.resolve("locked.json")), + "JSON output must be produced next to the input PDF"); + } + + private static Path createPasswordProtectedPdf(Path target, String password) throws IOException { + try (PDDocument document = new PDDocument()) { + document.addPage(new PDPage()); + AccessPermission permissions = new AccessPermission(); + StandardProtectionPolicy policy = new StandardProtectionPolicy(password, password, permissions); + policy.setEncryptionKeyLength(128); + document.protect(policy); + document.save(target.toFile()); + } + return target; + } + + // --- PDFDLOSP-21: hybrid backend unavailable, stack-trace guard ------- + + /** + * When the hybrid backend is unreachable and {@code --hybrid-fallback} is + * NOT supplied, CLIMain must surface the friendly fail-fast message + * (including the new {@code --hybrid-fallback} hint) via the SEVERE log + * record and must never leak a Java stack trace to stdout. Regression for + * PDFDLOSP-21. + */ + @Test + void testHybridUnavailableWithoutFallbackEmitsFriendlyMessageNoStackTrace() throws IOException { + Path testPdf = tempDir.resolve("ok.pdf"); + // Minimal but valid-enough header so the file reaches HybridDocumentProcessor. + // PDF parsing happens after health-check on this branch. + try (PDDocument doc = new PDDocument()) { + doc.addPage(new PDPage()); + doc.save(testPdf.toFile()); + } + + // Reserve an ephemeral port and release it so connect() is refused. + int closedPort; + try (java.net.ServerSocket socket = new java.net.ServerSocket(0)) { + closedPort = socket.getLocalPort(); + } + + String[] stdoutHolder = new String[1]; + StringBuilder logCapture = new StringBuilder(); + java.util.logging.Logger cliLogger = java.util.logging.Logger.getLogger( + "org.opendataloader.pdf.cli.CLIMain"); + java.util.logging.Handler captureHandler = new java.util.logging.Handler() { + @Override public void publish(java.util.logging.LogRecord record) { + logCapture.append(record.getMessage()).append('\n'); + Throwable thrown = record.getThrown(); + while (thrown != null) { + logCapture.append(thrown).append('\n'); + for (StackTraceElement frame : thrown.getStackTrace()) { + logCapture.append("\tat ").append(frame).append('\n'); + } + thrown = thrown.getCause(); + } + } + @Override public void flush() {} + @Override public void close() {} + }; + cliLogger.addHandler(captureHandler); + int exitCode; + try { + exitCode = (int) runCapturingStdout(() -> CLIMain.run(new String[]{ + "--hybrid", "docling-fast", + "--hybrid-mode", "full", + "--hybrid-url", "http://127.0.0.1:" + closedPort, + "--output", tempDir.toString(), + testPdf.toString() + }), stdoutHolder); + } finally { + cliLogger.removeHandler(captureHandler); + } + + assertNotEquals(0, exitCode, + "Exit code must be non-zero when hybrid backend is unreachable and fallback is off"); + + String out = stdoutHolder[0]; + assertFalse(out.contains("\tat "), + "stdout must not contain a Java stack trace ('\\tat '); got: " + out); + + String logged = logCapture.toString(); + assertTrue(logged.contains("Hybrid server is not available"), + "Log output should explain that the hybrid backend is unreachable; got: " + logged); + assertTrue(logged.contains("--hybrid-fallback"), + "Log output should include the --hybrid-fallback recovery hint; got: " + logged); + } + + // --- PDFDLOSP-14: magic-number guard regressions ---------------------- + + private static final byte[] JPEG_PREFIX = new byte[]{ + (byte) 0xFF, (byte) 0xD8, (byte) 0xFF, (byte) 0xE0, + 0x00, 0x10, 'J', 'F', 'I', 'F', 0x00 + }; + + /** + * A .pdf-named file whose content is not actually PDF must produce the + * user-facing magic-number error on stdout, fail with non-zero exit, AND + * must not leak any veraPDF internal stack trace. Regression for + * PDFDLOSP-14. + */ + @Test + void testPdfExtensionWithNonPdfContentEmitsMagicNumberError() throws IOException { + Path fakePdf = tempDir.resolve("fake.pdf"); + Files.write(fakePdf, JPEG_PREFIX); + + String[] stdoutHolder = new String[1]; + int exitCode = (int) runCapturingStdout( + () -> CLIMain.run(new String[]{fakePdf.toString()}), + stdoutHolder); + + assertNotEquals(0, exitCode, + "Exit code must be non-zero when input content is not PDF"); + assertTrue(stdoutHolder[0].contains("'fake.pdf' is not a valid PDF file (missing %PDF- header)"), + "stdout must contain the magic-number error; got: " + stdoutHolder[0]); + } + + /** + * Stack-trace leakage guard: the veraPDF internals must NEVER appear on + * stdout for the non-PDF-content case. This is the core regression we + * are preventing — if the catch branch is reverted or the guard moves + * back behind PDDocument construction, this test fails. + */ + @Test + void testPdfExtensionWithNonPdfContentDoesNotLeakStackTrace() throws IOException { + Path fakePdf = tempDir.resolve("fake.pdf"); + Files.write(fakePdf, JPEG_PREFIX); + + String[] stdoutHolder = new String[1]; + runCapturingStdout( + () -> CLIMain.run(new String[]{fakePdf.toString()}), + stdoutHolder); + + String out = stdoutHolder[0]; + assertFalse(out.toLowerCase(java.util.Locale.ROOT).contains("verapdf"), + "Output must not contain 'verapdf'; got: " + out); + assertFalse(out.contains("java.io.IOException:"), + "Output must not contain 'java.io.IOException:'; got: " + out); + assertFalse(out.contains("\tat "), + "Output must not contain a Java stack trace ('\\tat '); got: " + out); + } + + /** + * A directory containing a .pdf-named non-PDF file alongside another + * non-PDF file must (a) NOT print the top-level magic-number error to + * stdout, (b) still exit 0 (silent skip preserves PR #496's batch-folder + * semantics), and (c) emit a single WARNING log line so operators can + * investigate why a file was skipped. Captures CLIMain's JUL logger + * directly because java.util.logging routes WARNING to a ConsoleHandler + * on stderr by default and may be suppressed entirely under --quiet. + */ + @Test + void testPdfExtensionNonPdfInsideDirectoryIsSilentlySkipped() throws IOException { + Path dir = tempDir.resolve("mixed"); + Files.createDirectory(dir); + Files.write(dir.resolve("fake.pdf"), JPEG_PREFIX); + Files.write(dir.resolve("note.png"), new byte[]{(byte) 0x89, 0x50, 0x4E, 0x47}); + + List records = new ArrayList<>(); + String[] stdoutHolder = new String[1]; + int exitCode = (int) captureLogsOf(records, () -> runCapturingStdout( + () -> CLIMain.run(new String[]{dir.toString()}), + stdoutHolder)).intValue(); + + assertEquals(0, exitCode, + "Directory containing only invalid files must still exit 0 (silent skip)"); + assertFalse(stdoutHolder[0].contains("Error:"), + "Directory traversal must not surface 'Error:' on stdout; got: " + stdoutHolder[0]); + assertFalse(stdoutHolder[0].contains("missing %PDF- header"), + "Directory traversal must not surface the magic-number error on stdout; got: " + + stdoutHolder[0]); + long warningMatches = records.stream().filter(r -> + r.getLevel() == Level.WARNING + && r.getMessage() != null + && r.getMessage().contains("'fake.pdf'") + && r.getMessage().contains("missing %PDF- header")).count(); + assertEquals(1L, warningMatches, + "Exactly one WARNING log must name the offending file and the missing header; " + + "got: " + records); + } + + /** + * A PDF with a valid {@code %PDF-} header but a corrupt or truncated body + * must surface the friendly "corrupted or truncated content" error on + * stdout, exit non-zero, AND must not leak a veraPDF stack trace. The + * wording must also be distinct from the missing-header case so users + * can tell the two failure modes apart. + */ + @Test + void testCorruptPdfShowsCorruptedFileErrorWithoutStackTrace() throws IOException { + Path corrupt = tempDir.resolve("corrupt.pdf"); + // Valid header, but nothing else — veraPDF will fail at parse time. + Files.write(corrupt, "%PDF-1.4\n".getBytes(StandardCharsets.UTF_8)); + + String[] stdoutHolder = new String[1]; + int exitCode = (int) runCapturingStdout( + () -> CLIMain.run(new String[]{corrupt.toString()}), + stdoutHolder); + + String out = stdoutHolder[0]; + assertNotEquals(0, exitCode, + "Corrupt PDF must still fail (non-zero exit); got stdout: " + out); + assertTrue(out.contains("'corrupt.pdf' is not a valid PDF file (corrupted or truncated content)"), + "stdout must surface the friendly corrupted-content error; got: " + out); + assertFalse(out.contains("missing %PDF- header"), + "Corrupt-but-headered PDFs must NOT be misreported as missing the header; got: " + + out); + assertFalse(out.toLowerCase(java.util.Locale.ROOT).contains("verapdf"), + "Output must not contain 'verapdf'; got: " + out); + assertFalse(out.contains("java.io.IOException:"), + "Output must not contain 'java.io.IOException:'; got: " + out); + assertFalse(out.contains("\tat "), + "Output must not contain a Java stack trace ('\\tat '); got: " + out); + } + + /** + * A corrupt-but-headered PDF inside a directory must follow the same + * batch-folder semantics as a non-PDF-content file: WARNING log, no + * {@code Error:} on stdout, exit 0. This mirrors + * {@link #testPdfExtensionNonPdfInsideDirectoryIsSilentlySkipped()} for + * the corrupted-body branch so both failure modes route through the + * same {@link InvalidPdfFileException} handler in CLIMain. + */ + @Test + void testCorruptPdfInsideDirectoryIsSilentlySkipped() throws IOException { + Path dir = tempDir.resolve("mixed-corrupt"); + Files.createDirectory(dir); + Files.write(dir.resolve("corrupt.pdf"), + "%PDF-1.4\n".getBytes(StandardCharsets.UTF_8)); + Files.write(dir.resolve("note.png"), new byte[]{(byte) 0x89, 0x50, 0x4E, 0x47}); + + List records = new ArrayList<>(); + String[] stdoutHolder = new String[1]; + int exitCode = (int) captureLogsOf(records, () -> runCapturingStdout( + () -> CLIMain.run(new String[]{dir.toString()}), + stdoutHolder)).intValue(); + + assertEquals(0, exitCode, + "Directory traversal must exit 0 even when a child is a corrupt PDF " + + "(silent-skip semantics); got stdout: " + stdoutHolder[0]); + assertFalse(stdoutHolder[0].contains("Error:"), + "Directory traversal must not surface 'Error:' on stdout; got: " + stdoutHolder[0]); + long warningMatches = records.stream().filter(r -> + r.getLevel() == Level.WARNING + && r.getMessage() != null + && r.getMessage().contains("'corrupt.pdf'") + && r.getMessage().contains("corrupted or truncated")).count(); + assertEquals(1L, warningMatches, + "Exactly one WARNING log must name the offending file and describe " + + "the corrupted-content failure; got: " + records); + } + + /** + * Runs {@code action} with a temporary {@link Handler} attached to + * {@link CLIMain}'s JUL logger, collecting every {@link LogRecord} into + * {@code sink}. Restores the prior handler list and level on exit. + * + *

    JUL is global; this helper assumes sequential test execution + * (JUnit 5 + Surefire default). Returns whatever {@code action} returned. + */ + private static T captureLogsOf(List sink, java.util.concurrent.Callable action) { + Logger logger = Logger.getLogger(CLIMain.class.getCanonicalName()); + Level priorLevel = logger.getLevel(); + boolean priorUseParent = logger.getUseParentHandlers(); + Handler capture = new Handler() { + @Override public void publish(LogRecord record) { sink.add(record); } + @Override public void flush() { } + @Override public void close() { } + }; + capture.setLevel(Level.ALL); + logger.addHandler(capture); + logger.setLevel(Level.ALL); + logger.setUseParentHandlers(false); + try { + return action.call(); + } catch (Exception exception) { + throw new RuntimeException(exception); + } finally { + logger.removeHandler(capture); + logger.setLevel(priorLevel); + logger.setUseParentHandlers(priorUseParent); + } + } + + private static String captureStdoutOf(Runnable action) { + String[] holder = new String[1]; + runCapturingStdout(() -> { + action.run(); + return 0; + }, holder); + return holder[0]; + } + + // System.setOut is JVM-global; this helper assumes sequential test + // execution (JUnit 5 + maven-surefire default). Revisit if parallel + // test execution is enabled — concurrent captures would interleave. + private static long runCapturingStdout(java.util.concurrent.Callable action, String[] stdoutHolder) { + PrintStream originalOut = System.out; + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + System.setOut(new PrintStream(buffer, true, StandardCharsets.UTF_8)); + try { + int exitCode = action.call(); + stdoutHolder[0] = buffer.toString(StandardCharsets.UTF_8); + return exitCode; + } catch (Exception exception) { + throw new RuntimeException(exception); + } finally { + System.setOut(originalOut); + } + } +} diff --git a/java/opendataloader-pdf-cli/src/test/java/org/opendataloader/pdf/cli/FormatLogRegressionTest.java b/java/opendataloader-pdf-cli/src/test/java/org/opendataloader/pdf/cli/FormatLogRegressionTest.java new file mode 100644 index 0000000..2e83424 --- /dev/null +++ b/java/opendataloader-pdf-cli/src/test/java/org/opendataloader/pdf/cli/FormatLogRegressionTest.java @@ -0,0 +1,124 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.cli; + +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.PDPage; +import org.junit.jupiter.api.io.TempDir; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.Callable; +import java.util.logging.Handler; +import java.util.logging.Level; +import java.util.logging.LogRecord; +import java.util.logging.Logger; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +/** + * Regression test for PDFDLOSP-26: every {@code --format} value must emit + * exactly one INFO-level "Created <path>" log line after writing its + * output. Tagged-PDF previously skipped this log because + * {@code AutoTaggingProcessor.createTaggedPDF()} had no {@code Logger}. + */ +class FormatLogRegressionTest { + + @TempDir + Path tempDir; + + @ParameterizedTest(name = "--format {0} emits exactly one Created log") + @ValueSource(strings = {"json", "text", "html", "pdf", "markdown", "tagged-pdf"}) + void formatEmitsExactlyOneCreatedLog(String format) throws IOException { + Path pdf = createMinimalPdf(tempDir.resolve("in.pdf")); + Path outDir = tempDir.resolve(format); + Files.createDirectories(outDir); + + List records = new ArrayList<>(); + int exitCode = captureAllLogsOf(records, () -> CLIMain.run(new String[]{ + "--format", format, + "--output", outDir.toString(), + pdf.toString() + })); + + assertEquals(0, exitCode, () -> + "Exit code must be 0 for --format " + format + "; records: " + summarize(records)); + + long createdCount = records.stream() + .filter(r -> r.getLevel() == Level.INFO) + .filter(r -> r.getMessage() != null && r.getMessage().contains("Created")) + .count(); + + assertEquals(1L, createdCount, () -> + "Exactly one INFO 'Created ...' log expected for --format " + format + + "; got " + createdCount + ". Records: " + summarize(records)); + } + + private static Path createMinimalPdf(Path target) throws IOException { + try (PDDocument document = new PDDocument()) { + document.addPage(new PDPage()); + document.save(target.toFile()); + } + return target; + } + + /** + * Captures every {@link LogRecord} emitted by any logger under the + * {@code org.opendataloader.pdf} hierarchy. Attaching to the root logger + * would also include third-party noise; attaching to the package root + * picks up CLIMain plus every generator/processor in core (JUL records + * propagate to parent handlers). + * + *

    JUL is global; this assumes sequential test execution + * (JUnit 5 + Surefire default). + */ + private static T captureAllLogsOf(List sink, Callable action) { + Logger logger = Logger.getLogger("org.opendataloader.pdf"); + Level priorLevel = logger.getLevel(); + boolean priorUseParent = logger.getUseParentHandlers(); + Handler capture = new Handler() { + @Override public void publish(LogRecord record) { sink.add(record); } + @Override public void flush() { } + @Override public void close() { } + }; + capture.setLevel(Level.ALL); + logger.addHandler(capture); + logger.setLevel(Level.ALL); + logger.setUseParentHandlers(false); + try { + return action.call(); + } catch (Exception exception) { + throw new RuntimeException(exception); + } finally { + logger.removeHandler(capture); + logger.setLevel(priorLevel); + logger.setUseParentHandlers(priorUseParent); + } + } + + private static String summarize(List records) { + StringBuilder sb = new StringBuilder("["); + for (LogRecord r : records) { + sb.append('(').append(r.getLevel()).append(": ").append(r.getMessage()).append(") "); + } + return sb.append(']').toString(); + } +} diff --git a/java/opendataloader-pdf-core/pom.xml b/java/opendataloader-pdf-core/pom.xml new file mode 100644 index 0000000..5f3dcf5 --- /dev/null +++ b/java/opendataloader-pdf-core/pom.xml @@ -0,0 +1,245 @@ + + + + 4.0.0 + + + org.opendataloader + opendataloader-pdf-parent + 0.0.0 + ../pom.xml + + + opendataloader-pdf-core + jar + + OpenDataLoader PDF Core + OpenDataLoader PDF Core + + + + org.verapdf + validation-model + ${verapdf.version} + + + org.verapdf + feature-reporting + + + org.jacoco + jacoco-maven-plugin + + + + + org.verapdf + wcag-validation + ${verapdf.version} + + + org.jacoco + jacoco-maven-plugin + + + + + org.verapdf + wcag-algorithms + ${verapdf.wcag.algs.version} + + + org.jacoco + jacoco-maven-plugin + + + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.databind.version} + + + commons-cli + commons-cli + + + + com.squareup.okhttp3 + okhttp-jvm + + + org.junit.jupiter + junit-jupiter + test + + + com.squareup.okhttp3 + mockwebserver3 + test + + + org.assertj + assertj-core + test + + + + + + + ${project.basedir}/../../ + + LICENSE + NOTICE + + META-INF + false + + + ${project.basedir}/../../THIRD_PARTY + + **/* + + META-INF/THIRD_PARTY + false + + + + + org.codehaus.mojo + flatten-maven-plugin + + true + oss + + + + + + + + + + + flatten + process-resources + + flatten + + + + flatten.clean + clean + + clean + + + + + + maven-compiler-plugin + + + org.jacoco + jacoco-maven-plugin + + + + prepare-agent + + + + report + test + + report + + + + + + org.apache.maven.plugins + maven-source-plugin + + + attach-sources + + jar-no-fork + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + attach-javadocs + + jar + + + + + + + + + + release + + + + org.sonatype.central + central-publishing-maven-plugin + true + + central + true + published + + + + org.apache.maven.plugins + maven-gpg-plugin + + + sign-artifacts + verify + + sign + + + + + + + + + + diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/api/AutoTagger.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/api/AutoTagger.java new file mode 100644 index 0000000..12cb979 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/api/AutoTagger.java @@ -0,0 +1,92 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.api; + +import org.opendataloader.pdf.processors.AutoTaggingProcessor; +import org.opendataloader.pdf.processors.DocumentProcessor; +import org.opendataloader.pdf.processors.ExtractionResult; +import org.verapdf.pd.PDDocument; +import org.verapdf.tools.StaticResources; + +import java.io.IOException; + +/** + * Public API for standalone PDF auto-tagging. + * + *

    Returns an in-memory tagged {@link PDDocument} without writing intermediate files. + * Use {@link OpenDataLoaderPDF#processFile} for the full extraction + output pipeline. + * + *

    Example usage: + *

    {@code
    + * Config config = new Config();
    + * config.setHybrid("docling-fast");
    + *
    + * try (TaggingResult result = AutoTagger.tag("input.pdf", config)) {
    + *     PDDocument tagged = result.getDocument();
    + *     // use tagged document...
    + *     result.saveTo("output_tagged.pdf");
    + * }
    + * AutoTagger.shutdown();
    + * }
    + */ +public final class AutoTagger { + + private AutoTagger() { + } + + /** + * Extract content from a PDF and produce a tagged PDF document in-memory. + * Output format flags in config are ignored — this method only produces + * a tagged PDDocument. + * + * @param inputPdf path to the input PDF file + * @param config configuration (extraction + hybrid fields are used; + * output format flags are ignored) + * @return result containing the tagged PDDocument and timing metadata + * @throws IOException if unable to read or process the PDF + */ + public static TaggingResult tag(String inputPdf, Config config, Float pdfVersion) throws IOException { + ExtractionResult extraction = DocumentProcessor.extractContents(inputPdf, config); + return tag(extraction, pdfVersion); + } + + /** + * Tag a PDF document from a previously computed {@link ExtractionResult}. + * Use this when you need both tagged PDF and other output formats from the + * same extraction — call {@link DocumentProcessor#extractContents} once, + * then pass the result here and to other output generators. + * + * @param extraction pre-computed extraction result + * @return result containing the tagged PDDocument and timing metadata + * @throws IOException if unable to tag the document + */ + public static TaggingResult tag(ExtractionResult extraction, Float pdfVersion) throws IOException { + long t0 = System.nanoTime(); + PDDocument document = StaticResources.getDocument(); + AutoTaggingProcessor.tagDocument(document, extraction.getContents(), pdfVersion); + long taggingNs = System.nanoTime() - t0; + + return new TaggingResult(document, extraction.getExtractionNs(), taggingNs, + extraction.getHybridTimings(), extraction.getElementMetadata()); + } + + /** + * Release hybrid client resources. Call when processing is complete. + */ + public static void shutdown() { + OpenDataLoaderPDF.shutdown(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/api/Config.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/api/Config.java new file mode 100644 index 0000000..35e36e8 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/api/Config.java @@ -0,0 +1,922 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.api; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Locale; +import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; + +import org.opendataloader.pdf.hybrid.HybridConfig; + +/** + * Configuration class for the PDF processing. + * Use this class to specify output formats, text processing options, and other settings. + */ +public class Config { + private static final Logger LOGGER = Logger.getLogger(Config.class.getCanonicalName()); + + /** Reading order option: no sorting, keeps PDF COS object order. */ + public static final String READING_ORDER_OFF = "off"; + /** Reading order option: XY-Cut++ algorithm for layout-aware sorting. */ + public static final String READING_ORDER_XYCUT = "xycut"; + private static Set readingOrderOptions = new HashSet<>(); + + /** Hybrid mode: off (Java-only processing, no external dependency). */ + public static final String HYBRID_OFF = "off"; + /** Hybrid mode: docling backend (Docling FastAPI server). */ + public static final String HYBRID_DOCLING = "docling"; + /** Hybrid mode: docling-fast backend (deprecated alias for docling). */ + public static final String HYBRID_DOCLING_FAST = "docling-fast"; + /** Hybrid mode: hancom backend (Hancom Document AI). */ + public static final String HYBRID_HANCOM = "hancom"; + /** Hybrid mode: hancom-ai backend (Hancom AI HOCR SDK — individual modules). */ + public static final String HYBRID_HANCOM_AI = "hancom-ai"; + /** Hybrid mode: azure backend (Azure Document Intelligence). */ + public static final String HYBRID_AZURE = "azure"; + /** Hybrid mode: google backend (Google Document AI). */ + public static final String HYBRID_GOOGLE = "google"; + private static Set hybridOptions = new HashSet<>(); + + /** Hybrid triage mode: auto (dynamic triage based on page content). */ + public static final String HYBRID_MODE_AUTO = "auto"; + /** Hybrid triage mode: full (skip triage, send all pages to backend). */ + public static final String HYBRID_MODE_FULL = "full"; + private static Set hybridModeOptions = new HashSet<>(); + + /** Placeholder string for page number in separators. */ + public static final String PAGE_NUMBER_STRING = "%page-number%"; + private String password; + private boolean isGenerateMarkdown = false; + private boolean isGenerateHtml = false; + private boolean isGeneratePDF = false; + private boolean keepLineBreaks = false; + private boolean isGenerateJSON = true; + private boolean isGenerateText = false; + private boolean isGenerateTaggedPDF = false; + private boolean useStructTree = false; + private boolean useHTMLInMarkdown = false; + private boolean addImageToMarkdown = false; + private String replaceInvalidChars = " "; + private String outputFolder; + private String tableMethod = TABLE_METHOD_DEFAULT; + private String readingOrder = READING_ORDER_XYCUT; + private String markdownPageSeparator = ""; + private String textPageSeparator = ""; + private String htmlPageSeparator = ""; + private String imageOutput = IMAGE_OUTPUT_EXTERNAL; + private String imageFormat = IMAGE_FORMAT_PNG; + private String imageDir; + private String pages; + private List cachedPageNumbers; + private final FilterConfig filterConfig = new FilterConfig(); + private String hybrid = HYBRID_OFF; + private final HybridConfig hybridConfig = new HybridConfig(); + private boolean includeHeaderFooter = false; + private boolean detectStrikethrough = false; + + /** Table detection method: default (border-based detection). */ + public static final String TABLE_METHOD_DEFAULT = "default"; + /** Table detection method: cluster-based detection (includes border-based). */ + public static final String TABLE_METHOD_CLUSTER = "cluster"; + private static Set tableMethodOptions = new HashSet<>(); + + /** Image format: PNG. */ + public static final String IMAGE_FORMAT_PNG = "png"; + /** Image format: JPEG. */ + public static final String IMAGE_FORMAT_JPEG = "jpeg"; + private static Set imageFormatOptions = new HashSet<>(); + + /** Image output mode: no image extraction. */ + public static final String IMAGE_OUTPUT_OFF = "off"; + /** Image output mode: embedded as Base64 data URIs. */ + public static final String IMAGE_OUTPUT_EMBEDDED = "embedded"; + /** Image output mode: external file references. */ + public static final String IMAGE_OUTPUT_EXTERNAL = "external"; + private static Set imageOutputOptions = new HashSet<>(); + + static { + readingOrderOptions.add(READING_ORDER_OFF); + readingOrderOptions.add(READING_ORDER_XYCUT); + tableMethodOptions.add(TABLE_METHOD_DEFAULT); + tableMethodOptions.add(TABLE_METHOD_CLUSTER); + imageFormatOptions.add(IMAGE_FORMAT_PNG); + imageFormatOptions.add(IMAGE_FORMAT_JPEG); + imageOutputOptions.add(IMAGE_OUTPUT_OFF); + imageOutputOptions.add(IMAGE_OUTPUT_EMBEDDED); + imageOutputOptions.add(IMAGE_OUTPUT_EXTERNAL); + hybridOptions.add(HYBRID_OFF); + hybridOptions.add(HYBRID_DOCLING); + hybridOptions.add(HYBRID_DOCLING_FAST); // deprecated alias + hybridOptions.add(HYBRID_HANCOM); + hybridOptions.add(HYBRID_HANCOM_AI); + // azure, google added when implemented + hybridModeOptions.add(HYBRID_MODE_AUTO); + hybridModeOptions.add(HYBRID_MODE_FULL); + } + + /** + * Gets the filter config. + * + * @return The FilterConfig. + */ + public FilterConfig getFilterConfig() { + return filterConfig; + } + + /** + * Default constructor initializing the configuration with default values. + */ + public Config() { + } + + /** + * Gets the password for opening encrypted PDF files. + * + * @return The password, or null if not set. + */ + public String getPassword() { + return password; + } + + /** + * Sets the password for opening encrypted PDF files. + * + * @param password The password to use. + */ + public void setPassword(String password) { + this.password = password; + } + + /** + * Checks if Markdown output generation is enabled. + *

    + * Markdown generation is automatically enabled if {@link #isAddImageToMarkdown()} or + * {@link #isUseHTMLInMarkdown()} is true. + * + * @return true if Markdown output should be generated, false otherwise. + */ + public boolean isGenerateMarkdown() { + return isGenerateMarkdown || isAddImageToMarkdown() || isUseHTMLInMarkdown(); + } + + /** + * Enables or disables Markdown output generation. + * + * @param generateMarkdown true to enable, false to disable. + */ + public void setGenerateMarkdown(boolean generateMarkdown) { + isGenerateMarkdown = generateMarkdown; + } + + /** + * Checks if HTML output generation is enabled. + * + * @return true if HTML output should be generated, false otherwise. + */ + public boolean isGenerateHtml() { + return isGenerateHtml; + } + + /** + * Enables or disables HTML output generation. + * + * @param generateHtml true to enable, false to disable. + */ + public void setGenerateHtml(boolean generateHtml) { + isGenerateHtml = generateHtml; + } + + /** + * Checks if a new PDF with tagged structure is generated. + * + * @return true if PDF generation is enabled, false otherwise. + */ + public boolean isGeneratePDF() { + return isGeneratePDF; + } + + /** + * Enables or disables generation of a new, tagged PDF. + * + * @param generatePDF true to enable, false to disable. + */ + public void setGeneratePDF(boolean generatePDF) { + isGeneratePDF = generatePDF; + } + + /** + * Checks if original line breaks within text blocks should be preserved. + * + * @return true if line breaks are preserved, false otherwise. + */ + public boolean isKeepLineBreaks() { + return keepLineBreaks; + } + + /** + * Sets whether to preserve original line breaks within text blocks. + * + * @param keepLineBreaks true to preserve line breaks, false to merge lines into paragraphs. + */ + public void setKeepLineBreaks(boolean keepLineBreaks) { + this.keepLineBreaks = keepLineBreaks; + } + + /** + * Checks if JSON output generation is enabled. Defaults to true. + * + * @return true if JSON output should be generated, false otherwise. + */ + public boolean isGenerateJSON() { + return isGenerateJSON; + } + + /** + * Enables or disables JSON output generation. + * + * @param generateJSON true to enable, false to disable. + */ + public void setGenerateJSON(boolean generateJSON) { + isGenerateJSON = generateJSON; + } + + /** + * Checks if plain text output generation is enabled. + * + * @return true if plain text output should be generated, false otherwise. + */ + public boolean isGenerateText() { + return isGenerateText; + } + + /** + * Enables or disables plain text output generation. + * + * @param generateText true to enable, false to disable. + */ + public void setGenerateText(boolean generateText) { + isGenerateText = generateText; + } + + public boolean isGenerateTaggedPDF() { + return isGenerateTaggedPDF; + } + + public void setGenerateTaggedPDF(boolean generateTaggedPDF) { + isGenerateTaggedPDF = generateTaggedPDF; + } + + /** + * Checks if HTML tags should be used within the Markdown output for complex structures like tables. + * + * @return true if HTML is used in Markdown, false otherwise. + */ + public boolean isUseHTMLInMarkdown() { + return useHTMLInMarkdown; + } + + /** + * Enables or disables the use of HTML tags in Markdown output. + * Enabling this will also enable {@link #isGenerateMarkdown()}. + * + * @param useHTMLInMarkdown true to use HTML, false for pure Markdown. + */ + public void setUseHTMLInMarkdown(boolean useHTMLInMarkdown) { + this.useHTMLInMarkdown = useHTMLInMarkdown; + } + + /** + * Checks if images should be extracted and included in the Markdown output. + * + * @return true if images are included in Markdown, false otherwise. + */ + public boolean isAddImageToMarkdown() { + return addImageToMarkdown; + } + + /** + * Enables or disables the inclusion of extracted images in Markdown output. + * Enabling this will also enable {@link #isGenerateMarkdown()}. + * + * @param addImageToMarkdown true to include images, false otherwise. + */ + public void setAddImageToMarkdown(boolean addImageToMarkdown) { + this.addImageToMarkdown = addImageToMarkdown; + } + + /** + * Gets the path to the output folder where generated files will be saved. + * + * @return The output folder path. + */ + public String getOutputFolder() { + return outputFolder; + } + + /** + * Sets the path to the output folder where generated files will be saved. + * The directory will be created if it does not exist. + * + * @param outputFolder The path to the output folder. + */ + public void setOutputFolder(String outputFolder) { + this.outputFolder = outputFolder; + } + + /** + * Gets the character, that replaces invalid or unrecognized characters (e.g., �, \u0000). + * + * @return The specified replacement character. + */ + public String getReplaceInvalidChars() { + return replaceInvalidChars; + } + + /** + * Sets the character, that replaces invalid or unrecognized characters (e.g., �, \u0000). + * + * @param replaceInvalidChars The specified replacement character. + */ + public void setReplaceInvalidChars(String replaceInvalidChars) { + this.replaceInvalidChars = replaceInvalidChars; + } + + /** + * Checks if the PDF structure tree should be used for document parsing. + * + * @return true if structure tree should be used, false otherwise. + */ + public boolean isUseStructTree() { + return useStructTree; + } + + /** + * Enables or disables use of PDF structure tree for document parsing. + * + * @param useStructTree true to use structure tree, false otherwise. + */ + public void setUseStructTree(boolean useStructTree) { + this.useStructTree = useStructTree; + } + + /** + * Checks if cluster-based table detection is enabled. + * + * @return true if cluster table detection is enabled, false otherwise. + */ + public boolean isClusterTableMethod() { + return TABLE_METHOD_CLUSTER.equals(tableMethod); + } + + /** + * Gets the table detection method. + * + * @return The table detection method (default or cluster). + */ + public String getTableMethod() { + return tableMethod; + } + + /** + * Sets the table detection method. + * + * @param tableMethod The table detection method (default or cluster). + * @throws IllegalArgumentException if the method is not supported. + */ + public void setTableMethod(String tableMethod) { + if (tableMethod != null && !isValidTableMethod(tableMethod)) { + throw new IllegalArgumentException( + String.format("Unsupported table method '%s'. Supported values: %s", + tableMethod, getTableMethodOptions(", "))); + } + this.tableMethod = tableMethod != null ? tableMethod.toLowerCase(Locale.ROOT) : TABLE_METHOD_DEFAULT; + } + + /** + * Gets the list of methods of table detection. + * + * @param delimiter the delimiter to use between options + * @return the string with methods separated by the delimiter + */ + public static String getTableMethodOptions(CharSequence delimiter) { + return String.join(delimiter, tableMethodOptions); + } + + /** + * Checks if the given table method is valid. + * + * @param method The table method to check. + * @return true if the method is valid, false otherwise. + */ + public static boolean isValidTableMethod(String method) { + return method != null && tableMethodOptions.contains(method.toLowerCase(Locale.ROOT)); + } + + /** + * Gets the reading order, that states in which order content should be processed. + * + * @return The specified order. + */ + public String getReadingOrder() { + return readingOrder; + } + + /** + * Sets the reading order, that states in which order content should be processed. + * + * @param readingOrder The specified order (off or xycut). + * @throws IllegalArgumentException if the order is not supported. + */ + public void setReadingOrder(String readingOrder) { + if (readingOrder != null && !isValidReadingOrder(readingOrder)) { + throw new IllegalArgumentException( + String.format("Unsupported reading order '%s'. Supported values: %s", + readingOrder, getReadingOrderOptions(", "))); + } + this.readingOrder = readingOrder != null ? readingOrder.toLowerCase(Locale.ROOT) : READING_ORDER_XYCUT; + } + + /** + * Gets the list of reading order options. + * + * @param delimiter The delimiter to use between options. + * @return The string with reading orders separated by the delimiter. + */ + public static String getReadingOrderOptions(CharSequence delimiter) { + return String.join(delimiter, readingOrderOptions); + } + + /** + * Checks if the given reading order is valid. + * + * @param order The reading order to check. + * @return true if the order is valid, false otherwise. + */ + public static boolean isValidReadingOrder(String order) { + return order != null && readingOrderOptions.contains(order.toLowerCase(Locale.ROOT)); + } + + /** + * Gets the string, that separates content from different pages in markdown. + * + * @return The specified string. + */ + public String getMarkdownPageSeparator() { + return markdownPageSeparator; + } + + /** + * Sets the string, that separates content from different pages in markdown. + * + * @param markdownPageSeparator The specified string. + */ + public void setMarkdownPageSeparator(String markdownPageSeparator) { + this.markdownPageSeparator = markdownPageSeparator; + } + + /** + * Gets the string, that separates content from different pages in text. + * + * @return The specified string. + */ + public String getTextPageSeparator() { + return textPageSeparator; + } + + /** + * Sets the string, that separates content from different pages in text. + * + * @param textPageSeparator The specified string. + */ + public void setTextPageSeparator(String textPageSeparator) { + this.textPageSeparator = textPageSeparator; + } + + /** + * Gets the string, that separates content from different pages in html. + * + * @return The specified string. + */ + public String getHtmlPageSeparator() { + return htmlPageSeparator; + } + + /** + * Sets the string, that separates content from different pages in html. + * + * @param htmlPageSeparator The specified string. + */ + public void setHtmlPageSeparator(String htmlPageSeparator) { + this.htmlPageSeparator = htmlPageSeparator; + } + + /** + * Checks if images should be embedded as Base64 data URIs in the output. + * + * @return true if images should be embedded as Base64, false for file path references. + */ + public boolean isEmbedImages() { + return IMAGE_OUTPUT_EMBEDDED.equals(imageOutput); + } + + /** + * Checks if image extraction is disabled. + * + * @return true if image output is off, false otherwise. + */ + public boolean isImageOutputOff() { + return IMAGE_OUTPUT_OFF.equals(imageOutput); + } + + /** + * Gets the image output mode. + * + * @return The image output mode (off, embedded, or external). + */ + public String getImageOutput() { + return imageOutput; + } + + /** + * Sets the image output mode. + * + * @param imageOutput The image output mode (off, embedded, or external). + * @throws IllegalArgumentException if the mode is not supported. + */ + public void setImageOutput(String imageOutput) { + if (imageOutput != null && !isValidImageOutput(imageOutput)) { + throw new IllegalArgumentException( + String.format("Unsupported image output mode '%s'. Supported values: %s", + imageOutput, getImageOutputOptions(", "))); + } + this.imageOutput = imageOutput != null ? imageOutput.toLowerCase(Locale.ROOT) : IMAGE_OUTPUT_EXTERNAL; + } + + /** + * Gets the list of supported image output options. + * + * @param delimiter The delimiter to use between options. + * @return The string with image output modes separated by the delimiter. + */ + public static String getImageOutputOptions(CharSequence delimiter) { + return String.join(delimiter, imageOutputOptions); + } + + /** + * Checks if the given image output mode is valid. + * + * @param mode The image output mode to check. + * @return true if the mode is valid, false otherwise. + */ + public static boolean isValidImageOutput(String mode) { + return mode != null && imageOutputOptions.contains(mode.toLowerCase(Locale.ROOT)); + } + + /** + * Gets the image format for extracted images. + * + * @return The image format (png or jpeg). + */ + public String getImageFormat() { + return imageFormat; + } + + /** + * Sets the image format for extracted images. + * + * @param imageFormat The image format (png or jpeg). + * @throws IllegalArgumentException if the format is not supported. + */ + public void setImageFormat(String imageFormat) { + if (imageFormat != null && !isValidImageFormat(imageFormat)) { + throw new IllegalArgumentException( + String.format("Unsupported image format '%s'. Supported values: %s", + imageFormat, getImageFormatOptions(", "))); + } + this.imageFormat = imageFormat != null ? imageFormat.toLowerCase(Locale.ROOT) : IMAGE_FORMAT_PNG; + } + + /** + * Gets the list of supported image format options. + * + * @param delimiter The delimiter to use between options. + * @return The string with image formats separated by the delimiter. + */ + public static String getImageFormatOptions(CharSequence delimiter) { + return String.join(delimiter, imageFormatOptions); + } + + /** + * Checks if the given image format is valid. + * + * @param format The image format to check. + * @return true if the format is valid, false otherwise. + */ + public static boolean isValidImageFormat(String format) { + return format != null && imageFormatOptions.contains(format.toLowerCase(Locale.ROOT)); + } + + /** + * Gets the directory for extracted images. + * + * @return The image directory path, or null for default. + */ + public String getImageDir() { + return imageDir; + } + + /** + * Sets the directory for extracted images. + * Empty or whitespace-only strings are treated as null (use default). + * + * @param imageDir The directory path for extracted images. + */ + public void setImageDir(String imageDir) { + if (imageDir != null && imageDir.trim().isEmpty()) { + this.imageDir = null; + } else { + this.imageDir = imageDir; + } + } + + private static final String INVALID_PAGE_RANGE_FORMAT = "Invalid page range format: '%s'. Expected format: 1,3,5-7"; + /** Split limit to preserve trailing empty strings (e.g., "5-" splits to ["5", ""]). */ + private static final int SPLIT_KEEP_EMPTY_TRAILING = -1; + + /** + * Gets the pages to extract from the PDF. + * + * @return The page specification string (e.g., "1,3,5-7"), or null for all pages. + */ + public String getPages() { + return pages; + } + + /** + * Sets the pages to extract from the PDF. + * + * @param pages The page specification (e.g., "1,3,5-7"). Use null or empty for all pages. + * @throws IllegalArgumentException if the format is invalid. + */ + public void setPages(String pages) { + if (pages != null && !pages.trim().isEmpty()) { + this.cachedPageNumbers = parsePageRanges(pages); + } else { + this.cachedPageNumbers = null; + } + this.pages = pages; + } + + /** + * Gets the list of page numbers to extract. + * + * @return List of 1-based page numbers, or empty list if all pages should be extracted. + */ + public List getPageNumbers() { + if (cachedPageNumbers == null) { + return new ArrayList<>(); + } + return new ArrayList<>(cachedPageNumbers); + } + + /** + * Parses a page range specification into a list of page numbers. + * + * @param pages The page specification (e.g., "1,3,5-7"). + * @return List of 1-based page numbers. + * @throws IllegalArgumentException if the format is invalid. + */ + private static List parsePageRanges(String pages) { + List result = new ArrayList<>(); + String[] parts = pages.split(","); + + for (String part : parts) { + String trimmed = part.trim(); + if (trimmed.isEmpty()) { + throw new IllegalArgumentException(String.format(INVALID_PAGE_RANGE_FORMAT, pages)); + } + + if (trimmed.contains("-")) { + parseRange(trimmed, pages, result); + } else { + parseSinglePage(trimmed, pages, result); + } + } + + return result; + } + + private static void parseRange(String range, String fullInput, List result) { + String[] parts = range.split("-", SPLIT_KEEP_EMPTY_TRAILING); + if (parts.length != 2 || parts[0].isEmpty() || parts[1].isEmpty()) { + throw new IllegalArgumentException(String.format(INVALID_PAGE_RANGE_FORMAT, fullInput)); + } + + try { + int start = Integer.parseInt(parts[0].trim()); + int end = Integer.parseInt(parts[1].trim()); + + if (start < 1 || end < 1) { + throw new IllegalArgumentException( + String.format("Page numbers must be positive: '%s'", fullInput)); + } + if (start > end) { + throw new IllegalArgumentException( + String.format("Invalid page range '%s': start page cannot be greater than end page", range)); + } + + for (int i = start; i <= end; i++) { + result.add(i); + } + } catch (NumberFormatException e) { + throw new IllegalArgumentException(String.format(INVALID_PAGE_RANGE_FORMAT, fullInput)); + } + } + + private static void parseSinglePage(String page, String fullInput, List result) { + try { + int pageNum = Integer.parseInt(page); + if (pageNum < 1) { + throw new IllegalArgumentException( + String.format("Page numbers must be positive: '%s'", fullInput)); + } + result.add(pageNum); + } catch (NumberFormatException e) { + throw new IllegalArgumentException(String.format(INVALID_PAGE_RANGE_FORMAT, fullInput)); + } + } + + /** + * Gets the hybrid backend name. + * + * @return The hybrid backend (off, docling, hancom, azure, google). + */ + public String getHybrid() { + return hybrid; + } + + /** + * Sets the hybrid backend. + * + * @param hybrid The hybrid backend (off, docling, hancom, azure, google). + * @throws IllegalArgumentException if the backend is not supported. + */ + public void setHybrid(String hybrid) { + if (hybrid != null && !isValidHybrid(hybrid)) { + throw new IllegalArgumentException( + String.format("Unsupported hybrid backend '%s'. Supported values: %s", + hybrid, getHybridOptions(", "))); + } + this.hybrid = hybrid != null ? hybrid.toLowerCase(Locale.ROOT) : HYBRID_OFF; + } + + /** + * Gets the list of supported hybrid backend options. + * + * @param delimiter The delimiter to use between options. + * @return The string with hybrid backends separated by the delimiter. + */ + public static String getHybridOptions(CharSequence delimiter) { + return String.join(delimiter, hybridOptions); + } + + /** + * Checks if the given hybrid backend is valid. + * + * @param hybrid The hybrid backend to check. + * @return true if the backend is valid, false otherwise. + */ + public static boolean isValidHybrid(String hybrid) { + return hybrid != null && hybridOptions.contains(hybrid.toLowerCase(Locale.ROOT)); + } + + /** + * Checks if hybrid processing is enabled. + * + * @return true if hybrid mode is not off, false otherwise. + */ + public boolean isHybridEnabled() { + return !HYBRID_OFF.equals(hybrid); + } + + /** + * Gets the hybrid configuration. + * + * @return The HybridConfig instance. + */ + public HybridConfig getHybridConfig() { + return hybridConfig; + } + + /** + * Gets the list of supported hybrid mode options. + * + * @param delimiter The delimiter to use between options. + * @return The string with hybrid modes separated by the delimiter. + */ + public static String getHybridModeOptions(CharSequence delimiter) { + return String.join(delimiter, hybridModeOptions); + } + + /** + * Checks if the given hybrid mode is valid. + * + * @param mode The hybrid mode to check. + * @return true if the mode is valid, false otherwise. + */ + public static boolean isValidHybridMode(String mode) { + return mode != null && hybridModeOptions.contains(mode.toLowerCase(Locale.ROOT)); + } + + /** + * Checks if page headers and footers should be included in output. + * + * @return true if headers and footers should be included, false otherwise. + */ + public boolean isIncludeHeaderFooter() { + return includeHeaderFooter; + } + + /** + * Enables or disables inclusion of page headers and footers in output. + * + * @param includeHeaderFooter true to include headers and footers, false to exclude. + */ + public void setIncludeHeaderFooter(boolean includeHeaderFooter) { + this.includeHeaderFooter = includeHeaderFooter; + } + + public boolean isDetectStrikethrough() { + return detectStrikethrough; + } + + public void setDetectStrikethrough(boolean detectStrikethrough) { + this.detectStrikethrough = detectStrikethrough; + } + + private boolean outputStdout = false; + + public boolean isOutputStdout() { + return outputStdout; + } + + public void setOutputStdout(boolean outputStdout) { + this.outputStdout = outputStdout; + } + + private int threads = 1; + + public int getThreads() { + return threads; + } + + public void setThreads(int threads) { + if (threads < 1) { + throw new IllegalArgumentException("threads must be >= 1, got " + threads); + } + this.threads = Math.min(threads, Runtime.getRuntime().availableProcessors()); + } + + /** + * Returns true if any output format requires structured content + * (reading order, heading levels, list detection, etc.). + * Text-only output does not need these expensive processing steps. + */ + public boolean needsStructuredProcessing() { + return isGenerateMarkdown() || isGenerateHtml() || isGenerateJSON() || isGeneratePDF(); + } + + /** + * Resolves conflicts between individually valid option values. + * Call once after all setters, before passing the Config to a processor. + * Currently: in hybrid mode, forces {@code threads} to 1 because the hybrid + * pipeline runs sequentially regardless of this value. + */ + public void normalize() { + if (isHybridEnabled() && threads > 1) { + LOGGER.log(Level.WARNING, + "--threads={0} ignored in hybrid mode (forcing threads=1); " + + "the hybrid pipeline processes pages sequentially", + threads); + threads = 1; + } + } + +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/api/FilterConfig.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/api/FilterConfig.java new file mode 100644 index 0000000..3ad6a2e --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/api/FilterConfig.java @@ -0,0 +1,205 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.api; + +import org.opendataloader.pdf.utils.SanitizationRule; + +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Pattern; + +/** + * Configuration class for content filtering options. + * Controls filtering of hidden text, out-of-page content, tiny text, and hidden OCGs. + */ +public class FilterConfig { + private boolean filterHiddenText = false; + private boolean filterOutOfPage = true; + private boolean filterTinyText = true; + private boolean filterHiddenOCG = true; + private boolean filterSensitiveData = false; + private final List filterRules; + + /** Default rules */ + private void initializeDefaultRules() { + filterRules.add(new SanitizationRule( + Pattern.compile("[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"), + "email@example.com" + )); + filterRules.add(new SanitizationRule( + Pattern.compile("[+]\\d+(?:-\\d+)+"), + "+00-0000-0000" + )); + filterRules.add(new SanitizationRule( + Pattern.compile("[A-Z]{1,2}\\d{6,9}"), + "AA0000000" + )); + filterRules.add(new SanitizationRule( + Pattern.compile("\\b\\d{4}-?\\d{4}-?\\d{4}-?\\d{4}\\b"), + "0000-0000-0000-0000" + )); + filterRules.add(new SanitizationRule( + Pattern.compile("\\b\\d{10,18}\\b"), + "0000000000000000" + )); + filterRules.add(new SanitizationRule( + Pattern.compile("\\b(?:\\d{1,3}\\.){3}\\d{1,3}\\b"), + "0.0.0.0" + )); + filterRules.add(new SanitizationRule( + Pattern.compile("\\b([0-9a-fA-F]{0,4}:){2,7}[0-9a-fA-F]{0,4}\\b"), + "0.0.0.0::1" + )); + filterRules.add(new SanitizationRule( + Pattern.compile("\\b(?:[0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}\\b"), + "00:00:00:00:00:00" + )); + filterRules.add(new SanitizationRule( + Pattern.compile("\\b\\d{15}\\b"), + "000000000000000" + )); + filterRules.add(new SanitizationRule( + Pattern.compile("https?://[A-Za-z0-9.-]+(:\\d+)?(/\\S*)?"), + "https://example.com" + )); + } + + /** + * Constructor initializing the configuration of filter. + */ + public FilterConfig() { + this.filterRules = new ArrayList<>(); + initializeDefaultRules(); + } + + /** + * Enables or disables filter of hidden text. + * + * @param filterHiddenText true to enable filter, false to disable. + */ + public void setFilterHiddenText(boolean filterHiddenText) { + this.filterHiddenText = filterHiddenText; + } + + /** + * Checks if the processor should attempt to find and extract hidden text. + * + * @return true if hidden text is filtered, false otherwise. + */ + public boolean isFilterHiddenText() { + return filterHiddenText; + } + + /** + * Enables or disables checking content that exceeds MediaBox or CropBox. + * + * @param filterOutOfPage true to enable, false to disable. + */ + public void setFilterOutOfPage(boolean filterOutOfPage) { + this.filterOutOfPage = filterOutOfPage; + } + + /** + * Checks if the processor should filter out of page content. + * + * @return true if filter is enabled, false otherwise. + */ + public boolean isFilterOutOfPage() { + return filterOutOfPage; + } + + /** + * Checks if the processor should filter out tiny text. + * + * @return true if filter is enabled, false otherwise. + */ + public boolean isFilterTinyText() { + return filterTinyText; + } + + /** + * Enables or disables filter of tiny text. + * + * @param filterTinyText true to enable filter, false to disable. + */ + public void setFilterTinyText(boolean filterTinyText) { + this.filterTinyText = filterTinyText; + } + + /** + * Checks if the processor should filter out hidden OCGs. + * + * @return true if filter is enabled, false otherwise. + */ + public boolean isFilterHiddenOCG() { + return filterHiddenOCG; + } + + /** + * Enables or disables filter of hidden OCGs. + * + * @param filterHiddenOCG true to enable filter, false to disable. + */ + public void setFilterHiddenOCG(boolean filterHiddenOCG) { + this.filterHiddenOCG = filterHiddenOCG; + } + + /** + * Checks if the processor should filter out sensitive data. + * + * @return true if filter is enabled, false otherwise. + */ + public boolean isFilterSensitiveData() { + return filterSensitiveData; + } + + /** + * Enables or disables filter of sensitive data. + * + * @param filterSensitiveData true to enable filter, false to disable. + */ + public void setFilterSensitiveData(boolean filterSensitiveData) { + this.filterSensitiveData = filterSensitiveData; + } + + /** + * Gets custom filter sanitization rules. + * + * @return List of sanitization rules. + */ + public List getFilterRules() { + return filterRules; + } + + /** + * Add custom filter sanitization rule. + * + * @param pattern pattern string. + * @param replacement pattern replacement string. + */ + public void addFilterRule(String pattern, String replacement) { + filterRules.add(new SanitizationRule(Pattern.compile(pattern), replacement)); + } + + /** + * Remove filter sanitization rule. + * + * @param pattern pattern string. + */ + public void removeFilterRule(String pattern) { + filterRules.removeIf(rule -> rule.getPattern().pattern().equals(pattern)); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/api/OpenDataLoaderPDF.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/api/OpenDataLoaderPDF.java new file mode 100644 index 0000000..b0a13af --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/api/OpenDataLoaderPDF.java @@ -0,0 +1,52 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.api; + +import org.opendataloader.pdf.hybrid.HybridClientFactory; +import org.opendataloader.pdf.processors.DocumentProcessor; + +import java.io.IOException; + +/** + * The main entry point for the opendataloader-pdf library. + * Use the static method {@link #processFile(String, Config)} to process a PDF. + */ +public final class OpenDataLoaderPDF { + + private OpenDataLoaderPDF() { + } + + /** + * Processes a PDF file to extract its content and structure based on the provided configuration. + * + * @param inputPdfName The path to the input PDF file. + * @param config The configuration object specifying output formats and other options. + * @throws IOException If an error occurs during file reading or processing. + */ + public static void processFile(String inputPdfName, Config config) throws IOException { + DocumentProcessor.processFile(inputPdfName, config); + } + + /** + * Shuts down any cached resources used by the library. + * + *

    This method should be called when processing is complete, typically at CLI exit. + * It releases resources such as HTTP client thread pools used for hybrid mode backends. + */ + public static void shutdown() { + HybridClientFactory.shutdown(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/api/OutputWriter.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/api/OutputWriter.java new file mode 100644 index 0000000..0b54e73 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/api/OutputWriter.java @@ -0,0 +1,83 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.api; + +import org.opendataloader.pdf.processors.DocumentProcessor; +import org.opendataloader.pdf.processors.ExtractionResult; + +import java.io.IOException; + +/** + * Writes configured output files (JSON, Markdown, HTML, PDF, text, images, + * tagged PDF) from a pre-computed {@link ExtractionResult}. + * + *

    Use this when you have already run extraction once (e.g. via + * {@link AutoTagger#tag(ExtractionResult, Float)}) and want to emit file + * outputs from that same result without re-extracting. + * + *

    Typical two-phase usage: + *

    {@code
    + * Config config = new Config();
    + * config.setOutputFolder("/out");
    + * config.setGenerateJSON(true);
    + * config.setGenerateMarkdown(true);
    + *
    + * // Phase 1: extract once
    + * ExtractionResult extraction =
    + *     org.opendataloader.pdf.processors.DocumentProcessor.extractContents(
    + *         "input.pdf", config);
    + *
    + * // Phase 2a: write output files
    + * OutputWriter.writeOutputs("input.pdf", extraction, config);
    + *
    + * // Phase 2b: tag in-memory and reuse the same extraction
    + * try (TaggingResult tagged = AutoTagger.tag("input.pdf", extraction)) {
    + *     // ... use tagged.getDocument()
    + * }
    + * }
    + * + *

    For the single-call extraction-and-output pipeline, use + * {@link OpenDataLoaderPDF#processFile} instead. + */ +public final class OutputWriter { + + private OutputWriter() { + } + + /** + * Writes the output files configured on {@code config} (e.g. + * {@code generateJSON}, {@code generateMarkdown}, {@code generateHtml}, + * {@code generatePDF}, {@code generateTaggedPDF}, {@code generateText}) + * using the supplied pre-computed extraction. + * + *

    This method does not re-run extraction. Output behaviour is + * identical to {@link OpenDataLoaderPDF#processFile} for the same + * {@link Config}, including stdout mode, image directory resolution, and + * tagged-PDF generation. + * + * @param inputPdfName path to the input PDF file (used for filename derivation + * and tagged-PDF / annotated-PDF re-saves; not re-parsed) + * @param extraction pre-computed extraction result (from + * {@code DocumentProcessor.extractContents}) + * @param config configuration controlling which output formats to emit + * @throws IOException if writing any output file fails + */ + public static void writeOutputs(String inputPdfName, ExtractionResult extraction, Config config) + throws IOException { + DocumentProcessor.generateOutputs(inputPdfName, extraction.getContents(), config, + extraction.getElementMetadata()); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/api/TaggingResult.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/api/TaggingResult.java new file mode 100644 index 0000000..52f0224 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/api/TaggingResult.java @@ -0,0 +1,83 @@ +package org.opendataloader.pdf.api; + +import com.fasterxml.jackson.databind.JsonNode; +import org.opendataloader.pdf.hybrid.ElementMetadata; +import org.verapdf.pd.PDDocument; + +import java.io.IOException; +import java.util.Collections; +import java.util.Map; + +/** + * Result of {@link AutoTagger#tag}. Contains the tagged PDF document in-memory + * and processing timing metadata. + * + *

    Implements {@link AutoCloseable} for use with try-with-resources. + * The caller is responsible for closing this result, which releases the + * underlying PDDocument resources. + */ +public class TaggingResult implements AutoCloseable { + + private final PDDocument document; + private final long extractionNs; + private final long taggingNs; + private final JsonNode hybridTimings; + private final Map elementMetadata; + + public TaggingResult(PDDocument document, long extractionNs, long taggingNs, + JsonNode hybridTimings, Map elementMetadata) { + if (document == null) { + throw new IllegalArgumentException("document must not be null"); + } + this.document = document; + this.extractionNs = extractionNs; + this.taggingNs = taggingNs; + this.hybridTimings = hybridTimings; + this.elementMetadata = elementMetadata != null ? elementMetadata : Collections.emptyMap(); + } + + public TaggingResult(PDDocument document, long extractionNs, long taggingNs, JsonNode hybridTimings) { + this(document, extractionNs, taggingNs, hybridTimings, Collections.emptyMap()); + } + + /** The tagged PDF document. Do not close this directly — close the TaggingResult instead. */ + public PDDocument getDocument() { + return document; + } + + /** Time spent on extraction (parsing + layout + content extraction) in nanoseconds. */ + public long getExtractionNs() { + return extractionNs; + } + + /** Time spent on auto-tagging (structure tree creation) in nanoseconds. */ + public long getTaggingNs() { + return taggingNs; + } + + /** Per-step hybrid server timings, or null if hybrid mode was not used. */ + public JsonNode getHybridTimings() { + return hybridTimings; + } + + /** Element metadata from hybrid backend, or empty map if not available. */ + public Map getElementMetadata() { + return elementMetadata; + } + + /** + * Save the tagged PDF to a file. + * + * @param outputPath the output file path + */ + public void saveTo(String outputPath) throws IOException { + document.saveAs(outputPath); + } + + @Override + public void close() { + if (document != null) { + document.close(); + } + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/api/cli/CLIOptions.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/api/cli/CLIOptions.java new file mode 100644 index 0000000..fa7fc81 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/api/cli/CLIOptions.java @@ -0,0 +1,819 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.api.cli; + +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.Option; +import org.apache.commons.cli.Options; +import org.opendataloader.pdf.api.Config; +import org.opendataloader.pdf.hybrid.HybridConfig; + +import java.io.File; +import java.io.PrintStream; +import java.util.Arrays; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Locale; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * Adapter that maps Apache Commons CLI options to {@link Config} / {@link HybridConfig}. + * + *

    Stable API for downstream tools (e.g. opendataloader-pdfua) — these four + * members are the supported integration surface and will not break compatibly: + *

      + *
    • {@link #defineOptions()} — get a fully populated {@code Options} instance
    • + *
    • {@link #addAllTo(Options)} — add core options into an externally-built {@code Options}
    • + *
    • {@link #applyAllTo(Config, CommandLine)} — populate a {@code Config} from a parsed line
    • + *
    • {@link #FOLDER_OPTION} — short option name for {@code --output-dir}
    • + *
    + * + *

    Everything else is internal. The numerous other public {@code static} members + * (option-name constants, helpers like {@code createConfigFromCommandLine}, + * {@code exportOptionsAsJson}) exist for the CLI module ({@code CLIMain}) and the + * options-export tooling that drives Node/Python binding generation. Their visibility + * is {@code public} only for cross-package access within this codebase; they are + * not part of the supported API and may be renamed, moved, or removed in any + * release. Downstream consumers depending on them do so at their own risk. + * + *

    Pdfua's usage pattern (build your own {@code Options}, add core's, parse, then + * populate {@code Config}): + *

    {@code
    + *   Options options = new Options();
    + *   options.addOption(...);              // your tool-specific options
    + *   CLIOptions.addAllTo(options);        // add core's options
    + *   CommandLine cmd = parser.parse(options, args);
    + *   Config core = new Config();
    + *   CLIOptions.applyAllTo(core, cmd);
    + * }
    + */ +public class CLIOptions { + + // ===== Output Directory ===== + public static final String FOLDER_OPTION = "o"; + private static final String FOLDER_LONG_OPTION = "output-dir"; + private static final String FOLDER_DESC = "Directory where output files are written. Default: input file directory"; + + // ===== Password ===== + public static final String PASSWORD_OPTION = "p"; + private static final String PASSWORD_LONG_OPTION = "password"; + private static final String PASSWORD_DESC = "Password for encrypted PDF files"; + + // ===== Format ===== + public static final String FORMAT_OPTION = "f"; + public static final String FORMAT_LONG_OPTION = "format"; + private static final String FORMAT_DESC = "Output formats (comma-separated). " + + "Values: json, text, html, pdf, markdown, tagged-pdf. Default: json. " + + "For HTML inside Markdown use --markdown-with-html. " + + "For image extraction control use --image-output."; + + // ===== Quiet ===== + public static final String QUIET_OPTION = "q"; + private static final String QUIET_LONG_OPTION = "quiet"; + private static final String QUIET_DESC = "Suppress console logging output"; + + // ===== Content Safety ===== + private static final String CONTENT_SAFETY_OFF_LONG_OPTION = "content-safety-off"; + private static final String CONTENT_SAFETY_OFF_DESC = "Disable content safety filters. " + + "Values: all, hidden-text, off-page, tiny, hidden-ocg"; + + // ===== Sanitize ===== + private static final String SANITIZE_LONG_OPTION = "sanitize"; + private static final String SANITIZE_DESC = "Enable sensitive data sanitization. " + + "Replaces emails, phone numbers, IPs, credit cards, and URLs with placeholders"; + + // ===== Keep Line Breaks ===== + private static final String KEEP_LINE_BREAKS_LONG_OPTION = "keep-line-breaks"; + private static final String KEEP_LINE_BREAKS_DESC = "Preserve original line breaks in extracted text"; + + // ===== Replace Invalid Chars ===== + private static final String REPLACE_INVALID_CHARS_LONG_OPTION = "replace-invalid-chars"; + private static final String REPLACE_INVALID_CHARS_DESC = "Replacement character for invalid/unrecognized characters. Default: space"; + + // ===== Use Struct Tree ===== + private static final String USE_STRUCT_TREE_LONG_OPTION = "use-struct-tree"; + private static final String USE_STRUCT_TREE_DESC = "Use PDF structure tree (tagged PDF) for reading order and semantic structure. Output quality depends on tag quality"; + + // ===== Table Method ===== + private static final String TABLE_METHOD_LONG_OPTION = "table-method"; + private static final String TABLE_METHOD_DESC = "Table detection method. Values: default (border-based), cluster (border + cluster). Default: default"; + + // ===== Reading Order ===== + private static final String READING_ORDER_LONG_OPTION = "reading-order"; + private static final String READING_ORDER_DESC = "Reading order algorithm. Values: off, xycut. Default: xycut"; + + // ===== Page Separators ===== + private static final String MARKDOWN_PAGE_SEPARATOR_LONG_OPTION = "markdown-page-separator"; + private static final String MARKDOWN_PAGE_SEPARATOR_DESC = "Separator between pages in Markdown output. Use %page-number% for page numbers. Default: none"; + + private static final String TEXT_PAGE_SEPARATOR_LONG_OPTION = "text-page-separator"; + private static final String TEXT_PAGE_SEPARATOR_DESC = "Separator between pages in text output. Use %page-number% for page numbers. Default: none"; + + private static final String HTML_PAGE_SEPARATOR_LONG_OPTION = "html-page-separator"; + private static final String HTML_PAGE_SEPARATOR_DESC = "Separator between pages in HTML output. Use %page-number% for page numbers. Default: none"; + + // ===== Image Options ===== + private static final String IMAGE_OUTPUT_LONG_OPTION = "image-output"; + private static final String IMAGE_OUTPUT_DESC = "Image output mode. Values: off (no images), embedded (Base64 data URIs), external (file references). Default: external"; + + private static final String IMAGE_FORMAT_LONG_OPTION = "image-format"; + private static final String IMAGE_FORMAT_DESC = "Output format for extracted images. Values: png, jpeg. Default: png"; + + private static final String IMAGE_DIR_LONG_OPTION = "image-dir"; + private static final String IMAGE_DIR_DESC = "Directory for extracted images (applies only with --image-output external)"; + + // ===== Pages ===== + private static final String PAGES_LONG_OPTION = "pages"; + private static final String PAGES_DESC = "Pages to extract (e.g., \"1,3,5-7\"). Default: all pages"; + + // ===== Include Header Footer ===== + private static final String INCLUDE_HEADER_FOOTER_LONG_OPTION = "include-header-footer"; + private static final String INCLUDE_HEADER_FOOTER_DESC = "Include page headers and footers in output"; + + // ===== Detect Strikethrough ===== + private static final String DETECT_STRIKETHROUGH_LONG_OPTION = "detect-strikethrough"; + private static final String DETECT_STRIKETHROUGH_DESC = "Detect strikethrough text and wrap with ~~ in Markdown output or tag in HTML output (experimental)"; + + // ===== Hybrid Mode ===== + private static final String HYBRID_LONG_OPTION = "hybrid"; + private static final String HYBRID_DESC = "Hybrid backend (requires a running server). " + + "Quick start: pip install \"opendataloader-pdf[hybrid]\" && opendataloader-pdf-hybrid --port 5002. " + + "For remote servers use --hybrid-url. Values: off (default), docling-fast, hancom-ai"; + + private static final String HYBRID_MODE_LONG_OPTION = "hybrid-mode"; + private static final String HYBRID_MODE_DESC = "Hybrid triage mode. Values: auto (default, dynamic triage), full (skip triage, all pages to backend)"; + + // Deprecated: OCR settings are now configured on the hybrid server + private static final String HYBRID_OCR_LONG_OPTION = "hybrid-ocr"; + private static final String HYBRID_OCR_DESC = "[Deprecated] OCR settings are now configured on the hybrid server (--ocr-lang, --force-ocr)"; + + private static final String HYBRID_URL_LONG_OPTION = "hybrid-url"; + private static final String HYBRID_URL_DESC = "Hybrid backend server URL (overrides default)"; + + private static final String HYBRID_TIMEOUT_LONG_OPTION = "hybrid-timeout"; + private static final String HYBRID_TIMEOUT_DESC = "Hybrid backend request timeout in milliseconds (0 = no timeout). Default: 0"; + + private static final String HYBRID_FALLBACK_LONG_OPTION = "hybrid-fallback"; + private static final String HYBRID_FALLBACK_DESC = "Opt in to Java fallback on hybrid backend error (default: disabled)"; + + // ===== Hybrid hancom-ai backend-specific ===== + private static final String HYBRID_HANCOM_AI_REGIONLIST_STRATEGY_LONG_OPTION = + "hybrid-hancom-ai-regionlist-strategy"; + private static final String HYBRID_HANCOM_AI_REGIONLIST_STRATEGY_DESC = + "DLA label 7 (regionlist) handling. Requires --hybrid=hancom-ai. " + + "Values: table-first (default; check TSR overlap), list-only (skip TSR, always treat as list)"; + + private static final String HYBRID_HANCOM_AI_OCR_STRATEGY_LONG_OPTION = + "hybrid-hancom-ai-ocr-strategy"; + private static final String HYBRID_HANCOM_AI_OCR_STRATEGY_DESC = + "OCR strategy. Requires --hybrid=hancom-ai. " + + "Values: off (stream-only), auto (default; stream first, OCR fallback), force (OCR-only)"; + + private static final String HYBRID_HANCOM_AI_IMAGE_CACHE_LONG_OPTION = + "hybrid-hancom-ai-image-cache"; + private static final String HYBRID_HANCOM_AI_IMAGE_CACHE_DESC = + "Page image cache backing. Requires --hybrid=hancom-ai. " + + "Values: memory (default), disk"; + + private static final String HYBRID_HANCOM_AI_SAVE_CROPS_LONG_OPTION = + "hybrid-hancom-ai-save-crops"; + private static final String HYBRID_HANCOM_AI_SAVE_CROPS_DESC = + "Persist cropped figure images to disk for debugging. Requires --hybrid=hancom-ai"; + + private static final String HYBRID_HANCOM_AI_CROP_OUTPUT_DIR_LONG_OPTION = + "hybrid-hancom-ai-crop-output-dir"; + private static final String HYBRID_HANCOM_AI_CROP_OUTPUT_DIR_DESC = + "Output directory for --hybrid-hancom-ai-save-crops. Requires --hybrid=hancom-ai"; + + // ===== Stdout Output ===== + private static final String TO_STDOUT_LONG_OPTION = "to-stdout"; + private static final String TO_STDOUT_DESC = "Write output to stdout instead of file (single format only)"; + + // ===== Threads ===== + private static final String THREADS_LONG_OPTION = "threads"; + private static final String THREADS_DESC = "Number of worker threads for per-page processing. " + + "Default: 1 (sequential, stable). Values >1 (experimental) run pages in parallel for faster throughput; " + + "output may vary slightly on some PDFs. Capped at the number of available CPU cores. " + + "Applies to the native Java pipeline only; ignored in --hybrid mode"; + + // ===== Markdown modifiers ===== + public static final String HTML_IN_MARKDOWN_LONG_OPTION = "markdown-with-html"; + private static final String HTML_IN_MARKDOWN_DESC = + "Allow HTML tags inside Markdown output for complex structures such as multi-row-span tables. " + + "Implies --format markdown."; + + // ===== Export Options (internal) ===== + public static final String EXPORT_OPTIONS_LONG_OPTION = "export-options"; + + // ===== Legacy Options (hidden, backward compatibility) ===== + public static final String PDF_REPORT_LONG_OPTION = "pdf"; + public static final String MARKDOWN_REPORT_LONG_OPTION = "markdown"; + public static final String HTML_REPORT_LONG_OPTION = "html"; + private static final String MARKDOWN_IMAGE_LONG_OPTION = "markdown-with-images"; + public static final String NO_JSON_REPORT_LONG_OPTION = "no-json"; + + /** + * Single source of truth for all CLI option definitions. + * Add new options here - they will automatically be available in both CLI and + * JSON export. + */ + private static final List OPTION_DEFINITIONS = Arrays.asList( + // Primary options (exported to JSON) + new OptionDefinition(FOLDER_LONG_OPTION, FOLDER_OPTION, "string", null, FOLDER_DESC, true), + new OptionDefinition(PASSWORD_LONG_OPTION, PASSWORD_OPTION, "string", null, PASSWORD_DESC, true), + new OptionDefinition(FORMAT_LONG_OPTION, FORMAT_OPTION, "string", null, FORMAT_DESC, true), + new OptionDefinition(QUIET_LONG_OPTION, QUIET_OPTION, "boolean", false, QUIET_DESC, true), + new OptionDefinition(CONTENT_SAFETY_OFF_LONG_OPTION, null, "string", null, CONTENT_SAFETY_OFF_DESC, true), + new OptionDefinition(SANITIZE_LONG_OPTION, null, "boolean", false, SANITIZE_DESC, true), + new OptionDefinition(KEEP_LINE_BREAKS_LONG_OPTION, null, "boolean", false, KEEP_LINE_BREAKS_DESC, true), + new OptionDefinition(REPLACE_INVALID_CHARS_LONG_OPTION, null, "string", " ", REPLACE_INVALID_CHARS_DESC, + true), + new OptionDefinition(USE_STRUCT_TREE_LONG_OPTION, null, "boolean", false, USE_STRUCT_TREE_DESC, true), + new OptionDefinition(TABLE_METHOD_LONG_OPTION, null, "string", "default", TABLE_METHOD_DESC, true), + new OptionDefinition(READING_ORDER_LONG_OPTION, null, "string", "xycut", READING_ORDER_DESC, true), + new OptionDefinition(MARKDOWN_PAGE_SEPARATOR_LONG_OPTION, null, "string", null, + MARKDOWN_PAGE_SEPARATOR_DESC, true), + new OptionDefinition(HTML_IN_MARKDOWN_LONG_OPTION, null, "boolean", false, + HTML_IN_MARKDOWN_DESC, true), + new OptionDefinition(TEXT_PAGE_SEPARATOR_LONG_OPTION, null, "string", null, TEXT_PAGE_SEPARATOR_DESC, true), + new OptionDefinition(HTML_PAGE_SEPARATOR_LONG_OPTION, null, "string", null, HTML_PAGE_SEPARATOR_DESC, true), + new OptionDefinition(IMAGE_OUTPUT_LONG_OPTION, null, "string", "external", IMAGE_OUTPUT_DESC, true), + new OptionDefinition(IMAGE_FORMAT_LONG_OPTION, null, "string", "png", IMAGE_FORMAT_DESC, true), + new OptionDefinition(IMAGE_DIR_LONG_OPTION, null, "string", null, IMAGE_DIR_DESC, true), + new OptionDefinition(PAGES_LONG_OPTION, null, "string", null, PAGES_DESC, true), + new OptionDefinition(INCLUDE_HEADER_FOOTER_LONG_OPTION, null, "boolean", false, + INCLUDE_HEADER_FOOTER_DESC, true), + new OptionDefinition(DETECT_STRIKETHROUGH_LONG_OPTION, null, "boolean", false, + DETECT_STRIKETHROUGH_DESC, true), + new OptionDefinition(HYBRID_LONG_OPTION, null, "string", "off", HYBRID_DESC, true), + new OptionDefinition(HYBRID_MODE_LONG_OPTION, null, "string", "auto", HYBRID_MODE_DESC, true), + new OptionDefinition(HYBRID_URL_LONG_OPTION, null, "string", null, HYBRID_URL_DESC, true), + new OptionDefinition(HYBRID_TIMEOUT_LONG_OPTION, null, "string", "0", HYBRID_TIMEOUT_DESC, true), + new OptionDefinition(HYBRID_FALLBACK_LONG_OPTION, null, "boolean", false, HYBRID_FALLBACK_DESC, true), + new OptionDefinition(HYBRID_HANCOM_AI_REGIONLIST_STRATEGY_LONG_OPTION, null, "string", + "table-first", HYBRID_HANCOM_AI_REGIONLIST_STRATEGY_DESC, true), + new OptionDefinition(HYBRID_HANCOM_AI_OCR_STRATEGY_LONG_OPTION, null, "string", + "auto", HYBRID_HANCOM_AI_OCR_STRATEGY_DESC, true), + new OptionDefinition(HYBRID_HANCOM_AI_IMAGE_CACHE_LONG_OPTION, null, "string", + "memory", HYBRID_HANCOM_AI_IMAGE_CACHE_DESC, true), + new OptionDefinition(TO_STDOUT_LONG_OPTION, null, "boolean", false, TO_STDOUT_DESC, true), + new OptionDefinition(THREADS_LONG_OPTION, null, "string", "1", THREADS_DESC, true), + new OptionDefinition(EXPORT_OPTIONS_LONG_OPTION, null, "boolean", null, null, false), + + // Legacy options (not exported, for backward compatibility) + new OptionDefinition(HYBRID_OCR_LONG_OPTION, null, "string", null, HYBRID_OCR_DESC, false), + new OptionDefinition(PDF_REPORT_LONG_OPTION, null, "boolean", null, null, false), + new OptionDefinition(MARKDOWN_REPORT_LONG_OPTION, null, "boolean", null, null, false), + new OptionDefinition(HTML_REPORT_LONG_OPTION, null, "boolean", null, null, false), + new OptionDefinition(MARKDOWN_IMAGE_LONG_OPTION, null, "boolean", null, null, false), + new OptionDefinition(NO_JSON_REPORT_LONG_OPTION, null, "boolean", null, null, false), + new OptionDefinition(HYBRID_HANCOM_AI_SAVE_CROPS_LONG_OPTION, null, "boolean", + false, HYBRID_HANCOM_AI_SAVE_CROPS_DESC, false), + new OptionDefinition(HYBRID_HANCOM_AI_CROP_OUTPUT_DIR_LONG_OPTION, null, "string", + null, HYBRID_HANCOM_AI_CROP_OUTPUT_DIR_DESC, false)); + + public static Options defineOptions() { + Options options = new Options(); + addAllTo(options); + return options; + } + + /** + * Registers every core CLI option onto an external {@link Options} instance. + * Used by downstream CLIs (e.g. opendataloader-pdfua) that want to inherit + * the entire core option set and add their own options on top. + * + * @param options the Options instance to populate + */ + public static void addAllTo(Options options) { + for (OptionDefinition def : OPTION_DEFINITIONS) { + options.addOption(def.toOption()); + } + } + + public static Config createConfigFromCommandLine(CommandLine commandLine) { + Config config = new Config(); + if (commandLine.hasOption(CLIOptions.FOLDER_OPTION)) { + config.setOutputFolder(commandLine.getOptionValue(CLIOptions.FOLDER_OPTION)); + } else { + String argument = commandLine.getArgs()[0]; + File file = new File(argument); + file = new File(file.getAbsolutePath()); + config.setOutputFolder(file.isDirectory() ? file.getAbsolutePath() : file.getParent()); + } + applyAllTo(config, commandLine); + return config; + } + + /** + * Applies every core CLI option from the parsed command line onto the given Config. + * Caller is responsible for setting required Config state that is not represented + * by a CLI option (e.g. output folder when no positional input file is provided). + * + * Used by downstream CLIs that build their own Options + Config and want core + * options applied without paying for the positional-arg-based output-folder + * fallback that {@link #createConfigFromCommandLine} performs. + * + * @param config Config to populate + * @param commandLine parsed CommandLine + */ + public static void applyAllTo(Config config, CommandLine commandLine) { + if (commandLine.hasOption(CLIOptions.PASSWORD_OPTION)) { + config.setPassword(commandLine.getOptionValue(CLIOptions.PASSWORD_OPTION)); + } + if (commandLine.hasOption(CLIOptions.KEEP_LINE_BREAKS_LONG_OPTION)) { + config.setKeepLineBreaks(true); + } + if (commandLine.hasOption(CLIOptions.PDF_REPORT_LONG_OPTION)) { + config.setGeneratePDF(true); + } + if (commandLine.hasOption(CLIOptions.MARKDOWN_REPORT_LONG_OPTION)) { + config.setGenerateMarkdown(true); + } + if (commandLine.hasOption(CLIOptions.HTML_REPORT_LONG_OPTION)) { + config.setGenerateHtml(true); + } + if (commandLine.hasOption(CLIOptions.HTML_IN_MARKDOWN_LONG_OPTION)) { + config.setUseHTMLInMarkdown(true); + } + if (commandLine.hasOption(CLIOptions.MARKDOWN_IMAGE_LONG_OPTION)) { + config.setGenerateMarkdown(true); + } + if (commandLine.hasOption(CLIOptions.NO_JSON_REPORT_LONG_OPTION)) { + config.setGenerateJSON(false); + } + if (commandLine.hasOption(CLIOptions.REPLACE_INVALID_CHARS_LONG_OPTION)) { + config.setReplaceInvalidChars(commandLine.getOptionValue(CLIOptions.REPLACE_INVALID_CHARS_LONG_OPTION)); + } + if (commandLine.hasOption(CLIOptions.USE_STRUCT_TREE_LONG_OPTION)) { + config.setUseStructTree(true); + } + if (commandLine.hasOption(INCLUDE_HEADER_FOOTER_LONG_OPTION)) { + config.setIncludeHeaderFooter(true); + } + if (commandLine.hasOption(DETECT_STRIKETHROUGH_LONG_OPTION)) { + config.setDetectStrikethrough(true); + } + if (commandLine.hasOption(CLIOptions.READING_ORDER_LONG_OPTION)) { + config.setReadingOrder(commandLine.getOptionValue(CLIOptions.READING_ORDER_LONG_OPTION)); + } + if (commandLine.hasOption(CLIOptions.MARKDOWN_PAGE_SEPARATOR_LONG_OPTION)) { + config.setMarkdownPageSeparator(commandLine.getOptionValue(CLIOptions.MARKDOWN_PAGE_SEPARATOR_LONG_OPTION)); + } + if (commandLine.hasOption(CLIOptions.TEXT_PAGE_SEPARATOR_LONG_OPTION)) { + config.setTextPageSeparator(commandLine.getOptionValue(CLIOptions.TEXT_PAGE_SEPARATOR_LONG_OPTION)); + } + if (commandLine.hasOption(CLIOptions.HTML_PAGE_SEPARATOR_LONG_OPTION)) { + config.setHtmlPageSeparator(commandLine.getOptionValue(CLIOptions.HTML_PAGE_SEPARATOR_LONG_OPTION)); + } + applyContentSafetyOption(config, commandLine); + applySanitizeOption(config, commandLine); + applyFormatOption(config, commandLine); + applyTableMethodOption(config, commandLine); + applyImageOptions(config, commandLine); + applyPagesOption(config, commandLine); + applyHybridOptions(config, commandLine); + applyThreadsOption(config, commandLine); + config.normalize(); + } + + private static void applyThreadsOption(Config config, CommandLine commandLine) { + if (!commandLine.hasOption(THREADS_LONG_OPTION)) { + return; + } + String value = commandLine.getOptionValue(THREADS_LONG_OPTION); + int requested; + try { + requested = Integer.parseInt(value.trim()); + } catch (NumberFormatException e) { + throw new IllegalArgumentException( + String.format("Option --threads requires an integer >= 1, got '%s'", value)); + } + if (requested < 1) { + throw new IllegalArgumentException( + String.format("Option --threads requires an integer >= 1, got %d", requested)); + } + config.setThreads(requested); + int applied = config.getThreads(); + if (applied < requested) { + System.err.println(String.format( + "Warning: --threads=%d exceeds available CPU cores; capped to %d.", + requested, applied)); + } + } + + private static void applyImageOptions(Config config, CommandLine commandLine) { + if (commandLine.hasOption(IMAGE_OUTPUT_LONG_OPTION)) { + String outputValue = commandLine.getOptionValue(IMAGE_OUTPUT_LONG_OPTION); + if (outputValue == null || outputValue.trim().isEmpty()) { + throw new IllegalArgumentException( + String.format("Option --image-output requires a value. Supported values: %s", + Config.getImageOutputOptions(", "))); + } + String output = outputValue.trim().toLowerCase(Locale.ROOT); + if (!Config.isValidImageOutput(output)) { + throw new IllegalArgumentException( + String.format("Unsupported image output mode '%s'. Supported values: %s", + output, Config.getImageOutputOptions(", "))); + } + config.setImageOutput(output); + } + if (commandLine.hasOption(IMAGE_FORMAT_LONG_OPTION)) { + String formatValue = commandLine.getOptionValue(IMAGE_FORMAT_LONG_OPTION); + if (formatValue == null || formatValue.trim().isEmpty()) { + throw new IllegalArgumentException( + "Option --image-format requires a value. Supported values: png, jpeg"); + } + String format = formatValue.trim().toLowerCase(Locale.ROOT); + if (!Config.isValidImageFormat(format)) { + throw new IllegalArgumentException( + String.format("Unsupported image format '%s'. Supported values: png, jpeg", format)); + } + config.setImageFormat(format); + } + if (commandLine.hasOption(IMAGE_DIR_LONG_OPTION)) { + config.setImageDir(commandLine.getOptionValue(IMAGE_DIR_LONG_OPTION)); + } + } + + private static void applyPagesOption(Config config, CommandLine commandLine) { + if (commandLine.hasOption(PAGES_LONG_OPTION)) { + config.setPages(commandLine.getOptionValue(PAGES_LONG_OPTION)); + } + } + + private static void applyTableMethodOption(Config config, CommandLine commandLine) { + if (commandLine.hasOption(TABLE_METHOD_LONG_OPTION)) { + String methodValue = commandLine.getOptionValue(TABLE_METHOD_LONG_OPTION); + if (methodValue == null || methodValue.trim().isEmpty()) { + throw new IllegalArgumentException( + String.format("Option --table-method requires a value. Supported values: %s", + Config.getTableMethodOptions(", "))); + } + String method = methodValue.trim().toLowerCase(Locale.ROOT); + if (!Config.isValidTableMethod(method)) { + throw new IllegalArgumentException( + String.format("Unsupported table method '%s'. Supported values: %s", + method, Config.getTableMethodOptions(", "))); + } + config.setTableMethod(method); + } + } + + private static void applyContentSafetyOption(Config config, CommandLine commandLine) { + if (!commandLine.hasOption(CONTENT_SAFETY_OFF_LONG_OPTION)) { + return; + } + + String[] optionValues = commandLine.getOptionValues(CONTENT_SAFETY_OFF_LONG_OPTION); + if (optionValues == null || optionValues.length == 0) { + throw new IllegalArgumentException( + "Option --content-safety-off requires at least one value. Supported values: all, hidden-text, off-page, tiny, hidden-ocg"); + } + + Set values = parseOptionValues(optionValues); + if (values.isEmpty()) { + throw new IllegalArgumentException( + "Option --content-safety-off requires at least one value. Supported values: all, hidden-text, off-page, tiny, hidden-ocg"); + } + + for (String value : values) { + switch (value) { + case "hidden-text": + config.getFilterConfig().setFilterHiddenText(false); + break; + case "off-page": + config.getFilterConfig().setFilterOutOfPage(false); + break; + case "tiny": + config.getFilterConfig().setFilterTinyText(false); + break; + case "hidden-ocg": + config.getFilterConfig().setFilterHiddenOCG(false); + break; + case "sensitive-data": + System.err.println("Warning: '--content-safety-off sensitive-data' is deprecated and has no effect. " + + "Sensitive data sanitization is now opt-in. " + + "Use '--sanitize' to enable masking."); + break; + case "all": + config.getFilterConfig().setFilterHiddenText(false); + config.getFilterConfig().setFilterOutOfPage(false); + config.getFilterConfig().setFilterTinyText(false); + config.getFilterConfig().setFilterHiddenOCG(false); + break; + default: + throw new IllegalArgumentException(String.format( + "Unsupported value '%s'. Supported values: all, hidden-text, off-page, tiny, hidden-ocg", + value)); + } + } + } + + private static void applySanitizeOption(Config config, CommandLine commandLine) { + if (commandLine.hasOption(SANITIZE_LONG_OPTION)) { + config.getFilterConfig().setFilterSensitiveData(true); + } + } + + private static void applyFormatOption(Config config, CommandLine commandLine) { + if (!commandLine.hasOption(FORMAT_OPTION)) { + return; + } + + String[] optionValues = commandLine.getOptionValues(FORMAT_OPTION); + if (optionValues == null || optionValues.length == 0) { + throw new IllegalArgumentException( + "Option --format requires at least one value. Supported values: json, text, html, pdf, markdown, tagged-pdf"); + } + + Set values = parseOptionValues(optionValues); + if (values.isEmpty()) { + throw new IllegalArgumentException( + "Option --format requires at least one value. Supported values: json, text, html, pdf, markdown, tagged-pdf"); + } + + config.setGenerateJSON(false); + + for (String value : values) { + switch (value) { + case "json": + config.setGenerateJSON(true); + break; + case "html": + config.setGenerateHtml(true); + break; + case "text": + config.setGenerateText(true); + break; + case "pdf": + config.setGeneratePDF(true); + break; + case "markdown": + config.setGenerateMarkdown(true); + break; + case "markdown-with-html": + System.err.println("[WARN] --format markdown-with-html is deprecated and will be removed " + + "in the next major release. Use --format markdown --markdown-with-html instead."); + config.setUseHTMLInMarkdown(true); + break; + case "markdown-with-images": + System.err.println("[WARN] --format markdown-with-images is deprecated and will be removed " + + "in the next major release. Use --format markdown with --image-output " + + "(off|embedded|external) instead."); + config.setGenerateMarkdown(true); + break; + case "tagged-pdf": + config.setGenerateTaggedPDF(true); + break; + default: + throw new IllegalArgumentException(String.format( + "Unsupported format '%s'. Supported values: json, text, html, pdf, markdown, tagged-pdf", + value)); + } + } + } + + private static Set parseOptionValues(String[] optionValues) { + Set values = new LinkedHashSet<>(); + for (String rawValue : optionValues) { + if (rawValue == null) { + continue; + } + String[] splitValues = rawValue.split(","); + for (String candidate : splitValues) { + String format = candidate.trim().toLowerCase(Locale.ROOT); + if (!format.isEmpty()) { + values.add(format); + } + } + } + return values; + } + + private static void applyHybridOptions(Config config, CommandLine commandLine) { + if (commandLine.hasOption(HYBRID_LONG_OPTION)) { + String hybridValue = commandLine.getOptionValue(HYBRID_LONG_OPTION); + if (hybridValue == null || hybridValue.trim().isEmpty()) { + throw new IllegalArgumentException( + String.format("Option --hybrid requires a value. Supported values: %s", + Config.getHybridOptions(", "))); + } + String hybrid = hybridValue.trim().toLowerCase(Locale.ROOT); + if (!Config.isValidHybrid(hybrid)) { + throw new IllegalArgumentException( + String.format("Unsupported hybrid backend '%s'. Supported values: %s", + hybrid, Config.getHybridOptions(", "))); + } + config.setHybrid(hybrid); + } + if (commandLine.hasOption(HYBRID_MODE_LONG_OPTION)) { + String modeValue = commandLine.getOptionValue(HYBRID_MODE_LONG_OPTION); + if (modeValue == null || modeValue.trim().isEmpty()) { + throw new IllegalArgumentException( + String.format("Option --hybrid-mode requires a value. Supported values: %s", + Config.getHybridModeOptions(", "))); + } + String mode = modeValue.trim().toLowerCase(Locale.ROOT); + if (!Config.isValidHybridMode(mode)) { + throw new IllegalArgumentException( + String.format("Unsupported hybrid mode '%s'. Supported values: %s", + mode, Config.getHybridModeOptions(", "))); + } + config.getHybridConfig().setMode(mode); + } + if (commandLine.hasOption(HYBRID_OCR_LONG_OPTION)) { + // Deprecated: OCR settings are now configured on the hybrid server + System.err.println("Warning: --hybrid-ocr is deprecated. " + + "Configure OCR settings on the hybrid server instead (--ocr-lang, --force-ocr)."); + } + if (commandLine.hasOption(HYBRID_URL_LONG_OPTION)) { + String url = commandLine.getOptionValue(HYBRID_URL_LONG_OPTION); + if (url != null && !url.trim().isEmpty()) { + config.getHybridConfig().setUrl(url.trim()); + } + } + if (commandLine.hasOption(HYBRID_TIMEOUT_LONG_OPTION)) { + String timeoutValue = commandLine.getOptionValue(HYBRID_TIMEOUT_LONG_OPTION); + if (timeoutValue != null && !timeoutValue.trim().isEmpty()) { + try { + int timeout = Integer.parseInt(timeoutValue.trim()); + config.getHybridConfig().setTimeoutMs(timeout); + } catch (NumberFormatException e) { + throw new IllegalArgumentException( + String.format("Invalid timeout value '%s'. Must be a non-negative integer.", timeoutValue)); + } + } + } + if (commandLine.hasOption(HYBRID_FALLBACK_LONG_OPTION)) { + config.getHybridConfig().setFallbackToJava(true); + } + if (commandLine.hasOption(HYBRID_HANCOM_AI_REGIONLIST_STRATEGY_LONG_OPTION)) { + String value = commandLine.getOptionValue(HYBRID_HANCOM_AI_REGIONLIST_STRATEGY_LONG_OPTION); + if (value != null && !value.trim().isEmpty()) { + String normalized = value.trim().toLowerCase(Locale.ROOT); + if (!HybridConfig.REGIONLIST_TABLE_FIRST.equals(normalized) + && !HybridConfig.REGIONLIST_LIST_ONLY.equals(normalized)) { + throw new IllegalArgumentException(String.format( + "Option --%s: unsupported value '%s'. Supported values: %s, %s", + HYBRID_HANCOM_AI_REGIONLIST_STRATEGY_LONG_OPTION, normalized, + HybridConfig.REGIONLIST_TABLE_FIRST, HybridConfig.REGIONLIST_LIST_ONLY)); + } + config.getHybridConfig().setRegionlistStrategy(normalized); + } + } + if (commandLine.hasOption(HYBRID_HANCOM_AI_OCR_STRATEGY_LONG_OPTION)) { + String value = commandLine.getOptionValue(HYBRID_HANCOM_AI_OCR_STRATEGY_LONG_OPTION); + if (value != null && !value.trim().isEmpty()) { + String normalized = value.trim().toLowerCase(Locale.ROOT); + if (!HybridConfig.OCR_OFF.equals(normalized) + && !HybridConfig.OCR_AUTO.equals(normalized) + && !HybridConfig.OCR_FORCE.equals(normalized)) { + throw new IllegalArgumentException(String.format( + "Option --%s: unsupported value '%s'. Supported values: %s, %s, %s", + HYBRID_HANCOM_AI_OCR_STRATEGY_LONG_OPTION, normalized, + HybridConfig.OCR_OFF, HybridConfig.OCR_AUTO, HybridConfig.OCR_FORCE)); + } + config.getHybridConfig().setOcrStrategy(normalized); + } + } + if (commandLine.hasOption(HYBRID_HANCOM_AI_IMAGE_CACHE_LONG_OPTION)) { + String value = commandLine.getOptionValue(HYBRID_HANCOM_AI_IMAGE_CACHE_LONG_OPTION); + if (value != null && !value.trim().isEmpty()) { + String normalized = value.trim().toLowerCase(Locale.ROOT); + if (!"memory".equals(normalized) && !"disk".equals(normalized)) { + throw new IllegalArgumentException(String.format( + "Option --%s: unsupported value '%s'. Supported values: memory, disk", + HYBRID_HANCOM_AI_IMAGE_CACHE_LONG_OPTION, normalized)); + } + config.getHybridConfig().setImageCache(normalized); + } + } + if (commandLine.hasOption(HYBRID_HANCOM_AI_SAVE_CROPS_LONG_OPTION)) { + config.getHybridConfig().setSaveCrops(true); + } + if (commandLine.hasOption(HYBRID_HANCOM_AI_CROP_OUTPUT_DIR_LONG_OPTION)) { + String value = commandLine.getOptionValue(HYBRID_HANCOM_AI_CROP_OUTPUT_DIR_LONG_OPTION); + if (value != null && !value.trim().isEmpty()) { + config.getHybridConfig().setCropOutputDir(value.trim()); + } + } + if (commandLine.hasOption(TO_STDOUT_LONG_OPTION)) { + config.setOutputStdout(true); + } + // Keep in sync with all HYBRID_HANCOM_AI_*_LONG_OPTION constants above. + boolean usesHancomAiOnly = + commandLine.hasOption(HYBRID_HANCOM_AI_REGIONLIST_STRATEGY_LONG_OPTION) || + commandLine.hasOption(HYBRID_HANCOM_AI_OCR_STRATEGY_LONG_OPTION) || + commandLine.hasOption(HYBRID_HANCOM_AI_IMAGE_CACHE_LONG_OPTION) || + commandLine.hasOption(HYBRID_HANCOM_AI_SAVE_CROPS_LONG_OPTION) || + commandLine.hasOption(HYBRID_HANCOM_AI_CROP_OUTPUT_DIR_LONG_OPTION); + if (usesHancomAiOnly && !Config.HYBRID_HANCOM_AI.equals(config.getHybrid())) { + throw new IllegalArgumentException( + "Options --hybrid-hancom-ai-* require --hybrid=hancom-ai (got --hybrid=" + + config.getHybrid() + ")"); + } + } + + /** + * Exports CLI option definitions as JSON for code generation. + * This is used to generate Node.js, Python, and documentation from a single + * source of truth. + * + * @param out The output stream to write JSON to + */ + public static void exportOptionsAsJson(PrintStream out) { + List exportable = OPTION_DEFINITIONS.stream() + .filter(d -> d.exported) + .collect(Collectors.toList()); + + // Build JSON manually to avoid external dependencies + StringBuilder json = new StringBuilder(); + json.append("{\n"); + json.append(" \"options\": [\n"); + + for (int i = 0; i < exportable.size(); i++) { + OptionDefinition opt = exportable.get(i); + json.append(" {\n"); + json.append(" \"name\": \"").append(opt.longName).append("\",\n"); + json.append(" \"shortName\": ").append(opt.shortName == null ? "null" : "\"" + opt.shortName + "\"") + .append(",\n"); + json.append(" \"type\": \"").append(opt.type).append("\",\n"); + json.append(" \"required\": false,\n"); + if (opt.defaultValue == null) { + json.append(" \"default\": null,\n"); + } else if (opt.defaultValue instanceof Boolean) { + json.append(" \"default\": ").append(opt.defaultValue).append(",\n"); + } else { + json.append(" \"default\": \"").append(escapeJson(opt.defaultValue.toString())).append("\",\n"); + } + json.append(" \"description\": \"").append(escapeJson(opt.description)).append("\"\n"); + json.append(" }"); + if (i < exportable.size() - 1) { + json.append(","); + } + json.append("\n"); + } + + json.append(" ]\n"); + json.append("}\n"); + + out.print(json.toString()); + } + + private static String escapeJson(String value) { + if (value == null) { + return ""; + } + return value + .replace("\\", "\\\\") + .replace("\"", "\\\"") + .replace("\n", "\\n") + .replace("\r", "\\r") + .replace("\t", "\\t"); + } + + /** + * Internal class to hold option definition for both CLI and JSON export. + * Single source of truth for all option metadata. + */ + private static class OptionDefinition { + final String longName; + final String shortName; + final String type; // "string" | "boolean" + final Object defaultValue; + final String description; + final boolean exported; // Whether to include in JSON export + + OptionDefinition(String longName, String shortName, String type, Object defaultValue, String description, + boolean exported) { + this.longName = longName; + this.shortName = shortName; + this.type = type; + this.defaultValue = defaultValue; + this.description = description; + this.exported = exported; + } + + /** Creates an Apache Commons CLI Option from this definition. */ + Option toOption() { + boolean hasArg = "string".equals(type); + return new Option(shortName, longName, hasArg, description); + } + } + +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/autotagging/ChunksWriter.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/autotagging/ChunksWriter.java new file mode 100644 index 0000000..a0e0ad8 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/autotagging/ChunksWriter.java @@ -0,0 +1,323 @@ +package org.opendataloader.pdf.autotagging; + +import org.opendataloader.pdf.processors.AutoTaggingProcessor; +import org.verapdf.as.ASAtom; +import org.verapdf.as.io.ASInputStream; +import org.verapdf.cos.*; +import org.verapdf.gf.model.factory.chunks.ChunkParser; +import org.verapdf.gf.model.factory.chunks.GraphicsState; +import org.verapdf.gf.model.impl.sa.util.ResourceHandler; +import org.verapdf.operator.Operator; +import org.verapdf.parser.Operators; +import org.verapdf.parser.PDFStreamParser; +import org.verapdf.pd.PDContentStream; +import org.verapdf.pd.PDExtGState; +import org.verapdf.pd.images.PDXForm; +import org.verapdf.pd.images.PDXObject; +import org.verapdf.tools.StaticResources; +import org.verapdf.tools.TaggedPDFConstants; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.StreamInfo; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.*; + +public class ChunksWriter { + + private static final java.util.logging.Logger CHUNKS_LOGGER = java.util.logging.Logger.getLogger(ChunksWriter.class.getName()); + + private final ResourceHandler resourceHandler; + private final GraphicsState graphicsState; + + public ChunksWriter(GraphicsState inheritedGraphicState, ResourceHandler resourceHandler) { + this.graphicsState = inheritedGraphicState.clone(); + this.resourceHandler = resourceHandler; + } + + public static List getTokens(PDContentStream pdContentStream) { + if (pdContentStream != null) { + try { + COSObject contentStream = pdContentStream.getContents(); + if (contentStream.getType() == COSObjType.COS_STREAM || contentStream.getType() == COSObjType.COS_ARRAY) { + try (ASInputStream opStream = contentStream.getDirectBase().getData(COSStream.FilterFlags.DECODE)) { + try (PDFStreamParser streamParser = new PDFStreamParser(opStream)) { + streamParser.parseTokens(); + return streamParser.getTokens(); + } + } + } + } catch (IOException e) { + CHUNKS_LOGGER.warning("Failed to read content stream tokens: " + e.getMessage()); + } + } + return Collections.emptyList(); + } + + public List processTokens(List processTokens, OperatorStreamKey operatorStreamKey) throws IOException { + Map> operatorIndexesToStreamInfosMap = AutoTaggingProcessor.getOperatorIndexesToStreamInfosMap().get(operatorStreamKey); + if (operatorIndexesToStreamInfosMap == null) { + operatorIndexesToStreamInfosMap = Collections.emptyMap(); + } + List result = new ArrayList<>(); + List arguments = new ArrayList<>(); + for (int index = 0; index < processTokens.size(); index++) { + Object token = processTokens.get(index); + if (token instanceof COSBase) { + arguments.add((COSBase) token); + } else if (token instanceof Operator) { + processOperator(result, (Operator)token, arguments, index, operatorIndexesToStreamInfosMap, operatorStreamKey); + arguments.clear(); + } + } + return result; + } + + private void processOperator(List result, Operator rawOperator, List arguments, int operatorIndex, + Map> operatorIndexesToStreamInfosMap, + OperatorStreamKey operatorStreamKey) throws IOException { + String operatorName = rawOperator.getOperator(); + switch (operatorName) { + case Operators.BMC: + case Operators.EMC: + case Operators.BDC: + break; + case Operators.DO: + OperatorStreamKey xObjectOperatorStreamKey = new OperatorStreamKey(operatorStreamKey.getPageNumber(), arguments.get(0).getString()); + Integer xObjectStructParent = AutoTaggingProcessor.getStructParentsIntegers().get(xObjectOperatorStreamKey); + if (AutoTaggingProcessor.getOperatorIndexesToStreamInfosMap().containsKey(xObjectOperatorStreamKey) + && xObjectStructParent != null) { + COSName xObjectName = getLastCOSName(arguments); + PDXObject pdxObject = resourceHandler.getXObject(xObjectName); + if (pdxObject == null) { + processContentOperator(result, rawOperator, arguments, operatorIndex, operatorIndexesToStreamInfosMap, operatorName, operatorStreamKey); + break; + } + pdxObject.setKey(ASAtom.STRUCT_PARENTS, + COSInteger.construct(xObjectStructParent)); + StaticResources.getDocument().getDocument().addChangedObject(pdxObject.getObject()); + PDXForm pdxForm = (PDXForm)pdxObject; + GraphicsState xFormGraphicsState = graphicsState.clone(); + AutoTaggingProcessor.setUpContents(pdxForm.getObject(), new ChunksWriter(xFormGraphicsState, + resourceHandler.getExtendedResources(pdxForm.getResources())).processTokens( + ChunksWriter.getTokens(pdxForm), xObjectOperatorStreamKey)); + // Preserve the Do operator in the parent stream so the XObject is still invoked + result.addAll(arguments); + result.add(rawOperator); + } else { + processContentOperator(result, rawOperator, arguments, operatorIndex, operatorIndexesToStreamInfosMap, operatorName, operatorStreamKey); + } + break; + case Operators.TJ_SHOW: + case Operators.TJ_SHOW_POS: + case Operators.QUOTE: + case Operators.DOUBLE_QUOTE: + case Operators.BI: + case Operators.F_FILL: + case Operators.F_FILL_OBSOLETE: + case Operators.F_STAR_FILL: + case Operators.B_CLOSEPATH_FILL_STROKE: + case Operators.B_STAR_CLOSEPATH_EOFILL_STROKE: + case Operators.S_CLOSE_STROKE: + case Operators.S_STROKE: + processContentOperator(result, rawOperator, arguments, operatorIndex, operatorIndexesToStreamInfosMap, operatorName, operatorStreamKey); + break; + case org.verapdf.model.tools.constants.Operators.GS: + PDExtGState extGState = this.resourceHandler.getExtGState(getLastCOSName(arguments)); + this.graphicsState.copyPropertiesFromExtGState(extGState); + result.addAll(arguments); + result.add(rawOperator); + break; + case org.verapdf.model.tools.constants.Operators.TF: + this.graphicsState.getTextState().setTextFont(resourceHandler.getFont(getFirstCOSName(arguments))); + result.addAll(arguments); + result.add(rawOperator); + break; + default: +// if (!Operators.D_SET_DASH.equals(operatorName)) { + result.addAll(arguments); + result.add(rawOperator); +// } + break; + } + } + + private void processContentOperator(List result, Operator rawOperator, List arguments, int operatorIndex, + Map> operatorIndexesToStreamInfosMap, String operatorName, + OperatorStreamKey operatorStreamKey) { + Set streamInfos = operatorIndexesToStreamInfosMap.get(operatorIndex); + if (streamInfos == null || streamInfos.isEmpty()) { + writeMarkedContent(result, arguments, rawOperator, operatorName, null, null); + } else { + if (streamInfos.size() == 1) { + Integer mcid = streamInfos.iterator().next().getMcid(); + writeMarkedContent(result, arguments, rawOperator, operatorName, mcid, operatorStreamKey); + } else { + List streamInfosList = updateStreamInfos(streamInfos); + Map newArguments = getArguments(arguments.get(arguments.size() - 1), streamInfosList); + for (Map.Entry entry : newArguments.entrySet()) { + arguments.set(arguments.size() - 1, entry.getValue().get()); + writeMarkedContent(result, arguments, rawOperator, operatorName, entry.getKey().getMcid(), operatorStreamKey); + } + } + } + } + + private static String getStructureType(Integer mcid, OperatorStreamKey operatorStreamKey) { + if (mcid == null || operatorStreamKey == null) return null; + List parents = AutoTaggingProcessor.getStructParents().get(operatorStreamKey); + if (parents == null) { + CHUNKS_LOGGER.warning("structParents: no entry for key page=" + operatorStreamKey.getPageNumber() + " xobj=" + operatorStreamKey.getXObjectName() + " (available keys: " + AutoTaggingProcessor.getStructParents().keySet().stream().map(k -> "p"+k.getPageNumber()+"x"+k.getXObjectName()).collect(java.util.stream.Collectors.joining(",")) + ")"); + return null; + } + if (mcid >= parents.size()) { + CHUNKS_LOGGER.warning("structParents: mcid=" + mcid + " out of range (size=" + parents.size() + ") for key page=" + operatorStreamKey.getPageNumber() + " xobj=" + operatorStreamKey.getXObjectName()); + return null; + } + COSObject structElem = parents.get(mcid); + if (structElem == null) return null; + COSObject typeObj = structElem.getKey(ASAtom.S); + if (typeObj == null || typeObj.empty()) return null; + return typeObj.getString(); + } + + private static void writeMarkedContent(List result, List arguments, Operator token, + String operatorName, Integer mcid, OperatorStreamKey operatorStreamKey) { + if (mcid == null) { + result.add(COSName.construct(TaggedPDFConstants.ARTIFACT).getDirectBase()); + result.add(Operator.getOperator(Operators.BMC)); + } else { + String tagName; + if (Operators.BI.equals(operatorName) || Operators.DO.equals(operatorName)) { + tagName = TaggedPDFConstants.FIGURE; + } else { + String structType = getStructureType(mcid, operatorStreamKey); + tagName = (structType != null) ? structType : TaggedPDFConstants.SPAN; + } + result.add(COSName.construct(tagName).getDirectBase()); + COSObject dictionary = COSDictionary.construct(); + dictionary.setKey(ASAtom.MCID, COSInteger.construct(mcid)); + result.add(dictionary.getDirectBase()); + result.add(Operator.getOperator(Operators.BDC)); + } + result.addAll(arguments); + result.add(token); + result.add(Operator.getOperator(Operators.EMC)); + } + + private Map getArguments(COSBase object, List streamInfos) { + Map map = new TreeMap<>(); + if (object.getType() == COSObjType.COS_STRING) { + Queue streamInfoQueue = new LinkedList<>(streamInfos); + processString((COSString)object, map, streamInfoQueue, null, 0); + } else if (object.getType() == COSObjType.COS_ARRAY) { + int stringIndex = 0; + List array = new ArrayList<>(); + Queue streamInfoQueue = new LinkedList<>(streamInfos); + for (COSObject element : (COSArray)object.getDirectBase()) { + if (element.getType() == COSObjType.COS_STRING) { + stringIndex = processString((COSString)element.get(), map, streamInfoQueue, array, stringIndex); + } else if (element.getType().isNumber()) { + array.add(element); + } + } + if (!array.isEmpty()) { + StreamInfo peekInfo = streamInfoQueue.peek(); + COSObject target = peekInfo != null ? map.get(peekInfo) : null; + if (target != null && target.getType() == COSObjType.COS_ARRAY) { + COSArray currentArray = (COSArray) target.get(); + for (COSObject element : array) { + currentArray.add(element); + } + } else { + CHUNKS_LOGGER.warning("Issue during text operator processing"); + } + } + } + return map; + } + + public int processString(COSString string, Map map, Queue streamInfoQueue, + List array, int stringIndex) { + int currentStringIndex = stringIndex; + int currentBytesIndex = 0; + int dif = 0; + byte[] bytes = string.get(); + try (InputStream inputStream = new ByteArrayInputStream(bytes)) { + int available = inputStream.available(); + while (inputStream.available() > 0) { + int code = graphicsState.getTextState().getTextFont().readCode(inputStream); + String value = graphicsState.getTextState().getTextFont().toUnicode(code); + if (value == null) { + value = StaticContainers.getIsIgnoreCharactersWithoutUnicode() ? "" : ChunkParser.REPLACEMENT_CHARACTER_STRING; + } + int newAvailable = inputStream.available(); + dif += available - newAvailable; + available = newAvailable; + int length = streamInfoQueue.peek().getEndIndex() - currentStringIndex; + currentStringIndex += value.length(); + if (length <= value.length()) { + COSObject cosString = COSString.construct(Arrays.copyOfRange(bytes, currentBytesIndex, currentBytesIndex + dif), string.isHexadecimal()); + if (array != null) { + array.add(cosString); + map.put(streamInfoQueue.peek(), new COSObject(new COSArray(array))); + } else { + map.put(streamInfoQueue.peek(), cosString); + } + currentBytesIndex += dif; + dif = 0; + if (array != null) { + array.clear(); + } + if (streamInfoQueue.size() > 1) { + streamInfoQueue.poll(); + } + } + } + } catch (IOException e) { + CHUNKS_LOGGER.warning("Failed to process font string: " + e.getMessage()); + } + if (array != null && dif > 0) { + array.add(COSString.construct(Arrays.copyOfRange(bytes, currentBytesIndex, currentBytesIndex + dif), string.isHexadecimal())); + } + return currentStringIndex; + } + + private static List updateStreamInfos(Set streamInfos) { + Iterator streamInfoIterator = streamInfos.iterator(); + List newStreamInfos = new ArrayList<>(); + StreamInfo streamInfo = null; + int currentIndex = 0; + while (streamInfoIterator.hasNext()) { + streamInfo = streamInfoIterator.next(); + if (currentIndex < streamInfo.getStartIndex()) { + newStreamInfos.add(new StreamInfo(streamInfo.getOperatorIndex(), streamInfo.getXObjectName(), + streamInfo.getXImageObjectKey(), currentIndex, streamInfo.getStartIndex(), streamInfo.getLength(), null)); + } + currentIndex = streamInfo.getEndIndex(); + newStreamInfos.add(streamInfo); + } + if (currentIndex < streamInfo.getLength()) { + newStreamInfos.add(new StreamInfo(streamInfo.getOperatorIndex(), streamInfo.getXObjectName(), + streamInfo.getXImageObjectKey(), streamInfo.getEndIndex(), streamInfo.getLength(), streamInfo.getLength(), null)); + } + return newStreamInfos; + } + + private static COSName getFirstCOSName(List arguments) { + COSBase lastElement = arguments.isEmpty() ? null : arguments.get(0); + if (lastElement instanceof COSName) { + return (COSName) lastElement; + } + return null; + } + + private static COSName getLastCOSName(List arguments) { + COSBase lastElement = arguments.isEmpty() ? null : arguments.get(arguments.size() - 1); + if (lastElement instanceof COSName) { + return (COSName) lastElement; + } + return null; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/autotagging/OperatorStreamKey.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/autotagging/OperatorStreamKey.java new file mode 100644 index 0000000..13f07e9 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/autotagging/OperatorStreamKey.java @@ -0,0 +1,39 @@ +package org.opendataloader.pdf.autotagging; + +import java.util.Objects; + +public class OperatorStreamKey { + private final int pageNumber; + private final String xObjectName; + + public OperatorStreamKey(int pageNumber, String xObjectName) { + this.pageNumber = pageNumber; + this.xObjectName = xObjectName; + } + + public int getPageNumber() { + return pageNumber; + } + + public String getXObjectName() { + return xObjectName; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + OperatorStreamKey that = (OperatorStreamKey) o; + return pageNumber == that.pageNumber && + Objects.equals(xObjectName, that.xObjectName); + } + + @Override + public int hashCode() { + return Objects.hash(pageNumber, xObjectName); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/containers/StaticLayoutContainers.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/containers/StaticLayoutContainers.java new file mode 100644 index 0000000..0a0530d --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/containers/StaticLayoutContainers.java @@ -0,0 +1,164 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.containers; + +import org.opendataloader.pdf.api.Config; +import org.verapdf.wcag.algorithms.entities.SemanticHeading; + +import java.io.File; +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.logging.Logger; + +public class StaticLayoutContainers { + protected static final Logger LOGGER = Logger.getLogger(StaticLayoutContainers.class.getCanonicalName()); + + private static final ThreadLocal currentContentId = new ThreadLocal<>(); + private static final ThreadLocal> headings = new ThreadLocal<>(); + private static final ThreadLocal imageIndex = new ThreadLocal<>(); + private static final ThreadLocal isUseStructTree = new ThreadLocal<>(); + private static final ThreadLocal imagesDirectory = new ThreadLocal<>(); + private static final ThreadLocal embedImages = new ThreadLocal<>(); + private static final ThreadLocal imageFormat = new ThreadLocal<>(); + private static final ThreadLocal> replacementCharRatios = ThreadLocal.withInitial(ConcurrentHashMap::new); + private static final ThreadLocal> embeddedImageBytes = ThreadLocal.withInitial(ConcurrentHashMap::new); + + public static void clearContainers() { + currentContentId.set(1L); + headings.set(Collections.synchronizedList(new LinkedList<>())); + imageIndex.set(1); + isUseStructTree.set(false); + imagesDirectory.set(""); + embedImages.set(false); + imageFormat.set(Config.IMAGE_FORMAT_PNG); + replacementCharRatios.get().clear(); + embeddedImageBytes.get().clear(); + } + + public static long getCurrentContentId() { + return currentContentId.get(); + } + + public static long incrementContentId() { + long id = getCurrentContentId(); + StaticLayoutContainers.setCurrentContentId(id + 1); + return id; + } + + public static void setCurrentContentId(long currentContentId) { + StaticLayoutContainers.currentContentId.set(currentContentId); + } + + public static String getImagesDirectory() { + return imagesDirectory.get(); + } + + public static String getImagesDirectoryName() { + String dir = imagesDirectory.get(); + return dir != null && !dir.isEmpty() ? new File(dir).getName() : ""; + } + + public static void setImagesDirectory(String imagesDirectory) { + StaticLayoutContainers.imagesDirectory.set(imagesDirectory); + } + + public static List getHeadings() { + return headings.get(); + } + + public static void setHeadings(List headings) { + StaticLayoutContainers.headings.set(headings); + } + + public static Boolean isUseStructTree() { + return isUseStructTree.get(); + } + + public static void setIsUseStructTree(Boolean isUseStructTree) { + StaticLayoutContainers.isUseStructTree.set(isUseStructTree); + } + + public static int incrementImageIndex() { + int imageIndex = StaticLayoutContainers.imageIndex.get(); + StaticLayoutContainers.imageIndex.set(imageIndex + 1); + return imageIndex; + } + + public static void resetImageIndex() { + StaticLayoutContainers.imageIndex.set(1); + } + + public static boolean isEmbedImages() { + return Boolean.TRUE.equals(embedImages.get()); + } + + public static void setEmbedImages(boolean embedImages) { + StaticLayoutContainers.embedImages.set(embedImages); + } + + public static String getImageFormat() { + String format = imageFormat.get(); + return format != null ? format : Config.IMAGE_FORMAT_PNG; + } + + public static void setImageFormat(String format) { + StaticLayoutContainers.imageFormat.set(format); + } + + public static void setReplacementCharRatio(int pageNumber, double ratio) { + replacementCharRatios.get().put(pageNumber, ratio); + } + + public static double getReplacementCharRatio(int pageNumber) { + return replacementCharRatios.get().getOrDefault(pageNumber, 0.0); + } + + public static void cacheEmbeddedImageBytes(String absolutePath, byte[] bytes) { + embeddedImageBytes.get().put(normalizeImageKey(absolutePath), bytes); + } + + public static byte[] getEmbeddedImageBytes(String absolutePath) { + return embeddedImageBytes.get().get(normalizeImageKey(absolutePath)); + } + + public static boolean hasEmbeddedImageBytes(String absolutePath) { + return embeddedImageBytes.get().containsKey(normalizeImageKey(absolutePath)); + } + + // Map-level accessors are used by DocumentProcessor.propagateState so worker threads + // share the main thread's cache instance. Today the cache is only touched on the main + // thread, but propagating it eliminates a silent-data-loss trap if generators ever + // run on workers — matches the CLAUDE.md ThreadLocal-propagation gotcha. + public static Map getEmbeddedImageBytesMap() { + return embeddedImageBytes.get(); + } + + public static void setEmbeddedImageBytesMap(Map map) { + embeddedImageBytes.set(map); + } + + // Image paths flow through String.format with File.separator (cache write side) and + // through File.getPath() (cache read side via Base64ImageUtils.toDataUri). The two + // forms can differ on Windows when the user passes forward-slash output paths + // (e.g. /tmp/x). Collapse both forms to a single canonical key so writers and readers + // agree on cache identity. + private static String normalizeImageKey(String path) { + return path == null ? null : new File(path).getPath(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/entities/EnrichedImageChunk.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/entities/EnrichedImageChunk.java new file mode 100644 index 0000000..bf94ee8 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/entities/EnrichedImageChunk.java @@ -0,0 +1,106 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.entities; + +import org.verapdf.wcag.algorithms.entities.content.ImageChunk; + +/** + * An ImageChunk enriched with an AI-generated description (alt text). + * + *

    Created when the hybrid backend returns a SemanticPicture whose bounding + * box overlaps a Java-extracted ImageChunk. The description is matched by + * bounding-box IoU in HybridDocumentProcessor and propagated to: + *

      + *
    • AutoTaggingProcessor — inserts /Alt into the Figure struct element
    • + *
    • ImageSerializer — writes "alt" field to JSON output
    • + *
    • MarkdownGenerator / HtmlGenerator — uses description as alt text
    • + *
    + */ +public class EnrichedImageChunk extends ImageChunk { + + /** + * Where the alt text came from. Drives the {@code alt_source} JSON field + * and downstream evidence-report badging — a reviewer treats a human-authored + * /Alt very differently from an AI-generated caption. + */ + public enum AltSource { + /** Pulled from the source PDF's struct-tree /Alt entry. */ + ORIGINAL, + /** Generated by the hybrid backend (Hancom AI / docling SmolVLM). */ + AI_GENERATED + } + + private final String description; + private final AltSource altSource; + + /** + * Convenience constructor for author-authored /Alt sourced from the input + * PDF's struct tree (used by {@link org.opendataloader.pdf.processors.TaggedDocumentProcessor}). + * AI / backend-generated captions must use the 3-arg form with + * {@link AltSource#AI_GENERATED} so downstream consumers can distinguish + * human alt text from synthesised descriptions. + */ + public EnrichedImageChunk(ImageChunk source, String description) { + this(source, description, AltSource.ORIGINAL); + } + + public EnrichedImageChunk(ImageChunk source, String description, AltSource altSource) { + super(source.getBoundingBox()); + // Copy index so serializers can reference the image file + setIndex(source.getIndex()); + // Copy stream infos so MCID / struct-tree linkage is preserved + getStreamInfos().addAll(source.getStreamInfos()); + this.description = description; + this.altSource = altSource; + } + + public String getDescription() { + return description != null ? description : ""; + } + + public boolean hasDescription() { + return description != null && !description.isEmpty(); + } + + public AltSource getAltSource() { + return altSource; + } + + /** + * Sanitized description safe for use as PDF /Alt, Markdown alt text, + * HTML alt attribute, and JSON value. + */ + public String sanitizeDescription() { + if (!hasDescription()) return ""; + return description + .replace("\r\n", " ") + .replace("\n", " ") + .replace("\r", " ") + .replace("\"", "") + .replace("[", "") + .replace("]", "") + .replace("<", "") + .replace(">", "") + .replace("&", "") + .replace("\u0000", "") + // PDF/UA-2 clause 8.4.3.3 forbids Private Use Area code points in /Alt. + // Strip BMP PUA (U+E000–U+F8FF) and supplementary PUA (encoded as surrogate pairs + // U+DB80–U+DBFF paired with U+DC00–U+DFFF). + .replaceAll("[\\uE000-\\uF8FF]|[\\uDB80-\\uDBFF][\\uDC00-\\uDFFF]", "") + .replaceAll("\\s{2,}", " ") + .trim(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/entities/SemanticFootnote.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/entities/SemanticFootnote.java new file mode 100644 index 0000000..f4c2e1b --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/entities/SemanticFootnote.java @@ -0,0 +1,34 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.entities; + +import org.verapdf.wcag.algorithms.entities.SemanticParagraph; +import org.verapdf.wcag.algorithms.entities.enums.SemanticType; + +/** + * Represents a footnote/endnote element. + * Maps to PDF 2.0 FENote structure element in AutoTaggingProcessor. + */ +public class SemanticFootnote extends SemanticParagraph { + public SemanticFootnote() { + super(); + } + + public SemanticFootnote(SemanticParagraph node) { + super(node); + this.setSemanticType(SemanticType.NOTE); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/entities/SemanticFormula.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/entities/SemanticFormula.java new file mode 100644 index 0000000..c5f402a --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/entities/SemanticFormula.java @@ -0,0 +1,52 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.entities; + +import org.verapdf.wcag.algorithms.entities.BaseObject; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; + +/** + * Represents a mathematical formula element with LaTeX content. + * + *

    This class stores formula content in LaTeX format, which can be rendered + * using MathJax, KaTeX, or similar libraries in the output formats. + * + *

    Extends BaseObject to leverage the standard IObject implementation. + */ +public class SemanticFormula extends BaseObject { + + private final String latex; + + /** + * Creates a SemanticFormula with the given bounding box and LaTeX content. + * + * @param boundingBox The bounding box of the formula + * @param latex The LaTeX representation of the formula + */ + public SemanticFormula(BoundingBox boundingBox, String latex) { + super(boundingBox); + this.latex = latex; + } + + /** + * Gets the LaTeX representation of the formula. + * + * @return The LaTeX string, or empty string if null + */ + public String getLatex() { + return latex != null ? latex : ""; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/entities/SemanticPicture.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/entities/SemanticPicture.java new file mode 100644 index 0000000..6abc67f --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/entities/SemanticPicture.java @@ -0,0 +1,120 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.entities; + +import org.verapdf.wcag.algorithms.entities.BaseObject; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; + +/** + * Represents a picture element with optional description (alt text). + * + *

    This class stores picture metadata including AI-generated descriptions + * for accessibility purposes. Descriptions are generated using vision-language + * models when the hybrid server is configured with --enrich-picture-description. + * + *

    Extends BaseObject to leverage the standard IObject implementation. + */ +public class SemanticPicture extends BaseObject { + + private final int index; + private final String description; + + /** + * Creates a SemanticPicture with the given bounding box and index. + * + * @param boundingBox The bounding box of the picture + * @param index The sequential index of the picture + */ + public SemanticPicture(BoundingBox boundingBox, int index) { + this(boundingBox, index, null); + } + + /** + * Creates a SemanticPicture with the given bounding box, index, and description. + * + * @param boundingBox The bounding box of the picture + * @param index The sequential index of the picture + * @param description The AI-generated description (alt text) for accessibility + */ + public SemanticPicture(BoundingBox boundingBox, int index, String description) { + super(boundingBox); + this.index = index; + this.description = description; + } + + /** + * Gets the sequential index of this picture. + * + * @return The picture index + */ + public int getPictureIndex() { + return index; + } + + /** + * Gets the description (alt text) of this picture. + * + * @return The description string, or empty string if null + */ + public String getDescription() { + return description != null ? description : ""; + } + + /** + * Checks if this picture has a description. + * + * @return true if description is non-null and non-empty + */ + public boolean hasDescription() { + return description != null && !description.isEmpty(); + } + + /** + * Returns a sanitized version of the description safe for use as alt text + * across all output formats (Markdown, HTML, JSON) without format-specific escaping. + * + *

    Removes characters that are structurally significant in at least one output format: + *

      + *
    • {@code "} — HTML attribute delimiter
    • + *
    • {@code [}, {@code ]} — Markdown alt text delimiters
    • + *
    • {@code <}, {@code >} — HTML tag delimiters
    • + *
    • {@code &} — HTML entity prefix
    • + *
    • {@code \u0000} — null character
    • + *
    • Newlines ({@code \n}, {@code \r}) — replaced with a space
    • + *
    + * Consecutive whitespace is collapsed to a single space and the result is trimmed. + * + * @return sanitized description string, or empty string if no description + */ + public String sanitizeDescription() { + if (!hasDescription()) { + return ""; + } + return description + .replace("\r\n", " ") + .replace("\n", " ") + .replace("\r", " ") + .replace("\"", "") + .replace("[", "") + .replace("]", "") + .replace("<", "") + .replace(">", "") + .replace("&", "") + .replace("\u0000", "") + .replaceAll("\\s{2,}", " ") + .trim(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/exceptions/EncryptedTaggedPdfNotSupportedException.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/exceptions/EncryptedTaggedPdfNotSupportedException.java new file mode 100644 index 0000000..d180947 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/exceptions/EncryptedTaggedPdfNotSupportedException.java @@ -0,0 +1,36 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.exceptions; + +import java.io.IOException; + +/** + * Thrown when tagged-pdf generation is requested for an encrypted document. + * + *

    Encrypted PDFs (those with an {@code /Encrypt} dictionary in the trailer) + * are not supported for tagged-pdf output. Writing a tagged copy requires + * re-serializing the document, which interacts poorly with the document's + * encryption state and is also not permitted by the PDF specification for + * documents whose permissions deny modification. + */ +public class EncryptedTaggedPdfNotSupportedException extends IOException { + + private static final long serialVersionUID = 1L; + + public EncryptedTaggedPdfNotSupportedException(String message) { + super(message); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/exceptions/InvalidPdfFileException.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/exceptions/InvalidPdfFileException.java new file mode 100644 index 0000000..ee7b3a0 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/exceptions/InvalidPdfFileException.java @@ -0,0 +1,60 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.exceptions; + +import java.io.IOException; + +/** + * Thrown when an input file cannot be processed as a PDF. Two failure modes + * share this exception type, distinguished by message wording: + *

      + *
    • Missing header — the {@code %PDF-} magic number is absent + * from the first 1024 bytes (JPEG renamed to {@code .pdf}, empty file, + * arbitrary text). Detected before veraPDF is invoked.
    • + *
    • Corrupted or truncated content — the magic number is + * present but the body fails to parse (interrupted download, missing + * trailing xref, garbage payload). Detected when {@code new PDDocument} + * throws {@link IOException}; the original veraPDF exception is + * preserved via {@link #getCause()} for diagnostics.
    • + *
    + * + *

    This is a checked subtype of {@link IOException} so callers that already + * handle {@code IOException} keep compiling, while callers that want to + * distinguish "not a usable PDF" from other I/O failures can catch this type + * specifically. + * + *

    Public entry points that may surface this exception: + *

      + *
    • {@code OpenDataLoaderPDF.processFile(String, Config)}
    • + *
    • {@code DocumentProcessor.processFile(String, Config)}
    • + *
    • {@code DocumentProcessor.processFileWithResult(String, Config)}
    • + *
    • {@code DocumentProcessor.extractContents(String, Config)}
    • + *
    • {@code DocumentProcessor.preprocessing(String, Config)}
    • + *
    • {@code AutoTagger.tag(String, Config, Float)}
    • + *
    + */ +public class InvalidPdfFileException extends IOException { + + private static final long serialVersionUID = 1L; + + public InvalidPdfFileException(String message) { + super(message); + } + + public InvalidPdfFileException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/html/HtmlGenerator.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/html/HtmlGenerator.java new file mode 100644 index 0000000..21e92f9 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/html/HtmlGenerator.java @@ -0,0 +1,550 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.html; + +import org.opendataloader.pdf.api.Config; +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.opendataloader.pdf.entities.SemanticFormula; +import org.opendataloader.pdf.entities.EnrichedImageChunk; +import org.opendataloader.pdf.entities.SemanticPicture; +import org.opendataloader.pdf.markdown.MarkdownSyntax; +import org.opendataloader.pdf.utils.Base64ImageUtils; +import org.opendataloader.pdf.utils.GeneratorUtils; +import org.opendataloader.pdf.utils.ImagesUtils; +import org.opendataloader.pdf.utils.OutputType; +import org.verapdf.wcag.algorithms.entities.*; +import org.verapdf.wcag.algorithms.entities.content.*; +import org.verapdf.wcag.algorithms.entities.lists.ListItem; +import org.verapdf.wcag.algorithms.entities.lists.PDFList; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderRow; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.NodeUtils; + +import java.awt.Color; +import java.io.Closeable; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Path; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * Generates HTML output from PDF document content. + * Converts semantic elements like paragraphs, headings, tables, and images into HTML format. + */ +public class HtmlGenerator implements Closeable { + + /** Logger for this class. */ + protected static final Logger LOGGER = Logger.getLogger(HtmlGenerator.class.getCanonicalName()); + + /** Writer for the HTML output file. */ + protected final FileWriter htmlWriter; + /** Name of the input PDF file. */ + protected final String pdfFileName; + /** Absolute path to the input PDF file. */ + protected final Path pdfFilePath; + /** Name of the output HTML file. */ + protected final String htmlFileName; + /** Absolute path to the output HTML file. */ + protected final Path htmlFilePath; + /** Current table nesting level for tracking nested tables. */ + protected int tableNesting = 0; + /** String to insert between pages in HTML output. */ + protected String htmlPageSeparator = ""; + /** + * Page numbers (1-based) selected by --pages; an empty set means all pages. + * Sourced from the raw {@link Config#getPageNumbers()} list (not the + * validated set built by {@code DocumentProcessor.getValidPageNumbers}). + * Safe to compare against {@code pageNumber + 1} because the surrounding + * loop is bounded by the document's actual page count, so out-of-range + * values from the raw list are never tested for membership. + */ + protected final Set selectedPageNumbers; + /** Whether to embed images as Base64 data URIs. */ + protected boolean embedImages = false; + /** Format for extracted images (png or jpeg). */ + protected String imageFormat = Config.IMAGE_FORMAT_PNG; + /** Whether to include page headers and footers in output. */ + protected boolean includeHeaderFooter = false; + /** Opening tag for strikethrough text*/ + protected static final String strikethroughTextHtmlOpeningTag = ""; + /** Closing tag for strikethrough text*/ + protected static final String strikethroughTextHtmlClosingTag = "";; + + /** + * Creates a new HtmlGenerator for the specified PDF file. + * + * @param inputPdf the input PDF file + * @param config the configuration settings + * @throws IOException if unable to create the output file + */ + public HtmlGenerator(File inputPdf, Config config) throws IOException { + this.pdfFileName = inputPdf.getName(); + this.pdfFilePath = inputPdf.toPath().toAbsolutePath(); + this.htmlFileName = pdfFileName.substring(0, pdfFileName.length() - 3) + "html"; + this.htmlFilePath = Path.of(config.getOutputFolder(), htmlFileName); + this.htmlWriter = new FileWriter(htmlFilePath.toFile(), StandardCharsets.UTF_8); + this.htmlPageSeparator = escapeHtmlAttribute(config.getHtmlPageSeparator()); + this.selectedPageNumbers = new HashSet<>(config.getPageNumbers()); + this.embedImages = config.isEmbedImages(); + this.imageFormat = config.getImageFormat(); + this.includeHeaderFooter = config.isIncludeHeaderFooter(); + } + + /** + * Writes the document contents to HTML format. + * + * @param contents the document contents organized by page + */ + public void writeToHtml(List> contents) { + try { + htmlWriter.write("\n"); + htmlWriter.write("\n\n\n"); + htmlWriter.write("" + escapeHtmlText(pdfFileName) + "\n"); + htmlWriter.write("\n\n"); + + for (int pageNumber = 0; pageNumber < StaticContainers.getDocument().getNumberOfPages(); pageNumber++) { + if (selectedPageNumbers.isEmpty() || selectedPageNumbers.contains(pageNumber + 1)) { + writePageSeparator(pageNumber); + } + for (IObject content : contents.get(pageNumber)) { + this.write(content); + } + } + + htmlWriter.write("\n\n"); + LOGGER.log(Level.INFO, "Created {0}", htmlFilePath); + } catch (Exception e) { + LOGGER.log(Level.WARNING, "Unable to create html output: " + e.getMessage()); + } + } + + /** + * Writes a page separator to the HTML output if configured. + * + * @param pageNumber the current page number (0-indexed) + * @throws IOException if unable to write to the output + */ + protected void writePageSeparator(int pageNumber) throws IOException { + if (!htmlPageSeparator.isEmpty()) { + htmlWriter.write(htmlPageSeparator.contains(Config.PAGE_NUMBER_STRING) + ? htmlPageSeparator.replace(Config.PAGE_NUMBER_STRING, String.valueOf(pageNumber + 1)) + : htmlPageSeparator); + htmlWriter.write("\n"); + } + } + + /** + * Writes a single content object to the HTML output. + * + * @param object the content object to write + * @throws IOException if unable to write to the output + */ + protected void write(IObject object) throws IOException { + if (object instanceof SemanticHeaderOrFooter) { + if (includeHeaderFooter) { + writeHeaderOrFooter((SemanticHeaderOrFooter) object); + } + return; + } else if (object instanceof SemanticPicture) { + writePicture((SemanticPicture) object); + } else if (object instanceof ImageChunk) { + writeImage((ImageChunk) object); + } else if (object instanceof SemanticFormula) { + writeFormula((SemanticFormula) object); + } else if (object instanceof SemanticHeading) { + writeHeading((SemanticHeading) object); + } else if (object instanceof SemanticParagraph) { + writeParagraph((SemanticParagraph) object); + } else if (object instanceof SemanticTextNode) { + writeSemanticTextNode((SemanticTextNode) object); + } else if (object instanceof TableBorder) { + writeTable((TableBorder) object); + } else if (object instanceof PDFList) { + writeList((PDFList) object); + } else if (object instanceof SemanticTOC) { + writeTOC((SemanticTOC) object); + } else { + return; + } + + if (!isInsideTable()) { + htmlWriter.write(HtmlSyntax.HTML_LINE_BREAK); + } + } + + /** + * Writes a header or footer element to the HTML output. + * + * @param headerOrFooter the header or footer to write + * @throws IOException if unable to write to the output + */ + protected void writeHeaderOrFooter(SemanticHeaderOrFooter headerOrFooter) throws IOException { + for (IObject content : headerOrFooter.getContents()) { + write(content); + } + } + + /** + * Writes a formula element to the HTML output using MathJax-compatible markup. + * + * @param formula the formula to write + * @throws IOException if unable to write to the output + */ + protected void writeFormula(SemanticFormula formula) throws IOException { + htmlWriter.write(HtmlSyntax.HTML_MATH_DISPLAY_TAG); + htmlWriter.write("\\["); + htmlWriter.write(escapeHtmlText(formula.getLatex())); + htmlWriter.write("\\]"); + htmlWriter.write(HtmlSyntax.HTML_MATH_DISPLAY_CLOSE_TAG); + htmlWriter.write(HtmlSyntax.HTML_LINE_BREAK); + } + + /** + * Writes an image element to the HTML output. + * + * @param image the image chunk to write + */ + protected void writeImage(ImageChunk image) { + try { + String absolutePath = String.format(MarkdownSyntax.IMAGE_FILE_NAME_FORMAT, StaticLayoutContainers.getImagesDirectory(), File.separator, image.getIndex(), imageFormat); + String relativePath = String.format(MarkdownSyntax.IMAGE_FILE_NAME_FORMAT, StaticLayoutContainers.getImagesDirectoryName(), "/", image.getIndex(), imageFormat); + + if (ImagesUtils.isImageFileExists(absolutePath)) { + String imageSource; + if (embedImages) { + File imageFile = new File(absolutePath); + imageSource = Base64ImageUtils.toDataUri(imageFile, imageFormat); + if (imageSource == null) { + LOGGER.log(Level.WARNING, "Failed to convert image to Base64: {0}", absolutePath); + } + } else { + imageSource = relativePath; + } + if (imageSource != null) { + String escapedSource = escapeHtmlAttribute(imageSource); + // Empty alt is correct HTML for "missing description": screen + // readers skip it, and our evidence-report flags it as + // alt_source="missing". Never synthesize "figureN". + String altText = (image instanceof EnrichedImageChunk && ((EnrichedImageChunk) image).hasDescription()) + ? ((EnrichedImageChunk) image).sanitizeDescription() + : ""; + String imageString = String.format("\"%s\"", escapedSource, escapeHtmlAttribute(altText)); + htmlWriter.write(imageString); + htmlWriter.write(HtmlSyntax.HTML_LINE_BREAK); + } + } + } catch (IOException e) { + LOGGER.log(Level.WARNING, "Unable to write image for html output: " + e.getMessage()); + } + } + + /** + * Writes a SemanticPicture element with figure/figcaption for description. + * + * @param picture the picture to write + */ + protected void writePicture(SemanticPicture picture) { + try { + String absolutePath = String.format(MarkdownSyntax.IMAGE_FILE_NAME_FORMAT, StaticLayoutContainers.getImagesDirectory(), File.separator, picture.getPictureIndex(), imageFormat); + String relativePath = String.format(MarkdownSyntax.IMAGE_FILE_NAME_FORMAT, StaticLayoutContainers.getImagesDirectoryName(), "/", picture.getPictureIndex(), imageFormat); + + if (ImagesUtils.isImageFileExists(absolutePath)) { + String imageSource; + if (embedImages) { + File imageFile = new File(absolutePath); + imageSource = Base64ImageUtils.toDataUri(imageFile, imageFormat); + if (imageSource == null) { + LOGGER.log(Level.WARNING, "Failed to convert image to Base64: {0}", absolutePath); + } + } else { + imageSource = relativePath; + } + if (imageSource != null) { + String altText = picture.hasDescription() + ? picture.sanitizeDescription() + : ""; + String escapedSource = escapeHtmlAttribute(imageSource); + + htmlWriter.write(HtmlSyntax.HTML_FIGURE_TAG); + htmlWriter.write(HtmlSyntax.HTML_LINE_BREAK); + String imageString = String.format("\"%s\"", escapedSource, escapeHtmlAttribute(altText)); + htmlWriter.write(imageString); + htmlWriter.write(HtmlSyntax.HTML_LINE_BREAK); + htmlWriter.write(HtmlSyntax.HTML_FIGURE_CLOSE_TAG); + htmlWriter.write(HtmlSyntax.HTML_LINE_BREAK); + } + } + } catch (IOException e) { + LOGGER.log(Level.WARNING, "Unable to write picture for html output: " + e.getMessage()); + } + } + + /** + * Writes a list element to the HTML output. + * + * @param list the PDF list to write + * @throws IOException if unable to write to the output + */ + protected void writeList(PDFList list) throws IOException { + htmlWriter.write(HtmlSyntax.HTML_UNORDERED_LIST_TAG); + htmlWriter.write(HtmlSyntax.HTML_LINE_BREAK); + for (ListItem item : list.getListItems()) { + htmlWriter.write(HtmlSyntax.HTML_LIST_ITEM_TAG); + + htmlWriter.write(HtmlSyntax.HTML_PARAGRAPH_TAG); + String value = GeneratorUtils.getTextFromLines(item.getLines(), OutputType.HTML); + htmlWriter.write(value); + htmlWriter.write(HtmlSyntax.HTML_PARAGRAPH_CLOSE_TAG); + + for (IObject object : item.getContents()) { + write(object); + } + htmlWriter.write(HtmlSyntax.HTML_LIST_ITEM_CLOSE_TAG); + htmlWriter.write(HtmlSyntax.HTML_LINE_BREAK); + } + htmlWriter.write(HtmlSyntax.HTML_UNORDERED_LIST_CLOSE_TAG); + htmlWriter.write(HtmlSyntax.HTML_LINE_BREAK); + } + + protected void writeTOC(SemanticTOC toc) throws IOException { + htmlWriter.write(HtmlSyntax.HTML_UNORDERED_LIST_TAG); + htmlWriter.write(HtmlSyntax.HTML_LINE_BREAK); + for (IObject item : toc.getTOCItems()) { + if (item instanceof SemanticTOC) { + htmlWriter.write(HtmlSyntax.HTML_LIST_ITEM_TAG); + htmlWriter.write(HtmlSyntax.HTML_LINE_BREAK); + writeTOC((SemanticTOC) item); + htmlWriter.write(HtmlSyntax.HTML_LIST_ITEM_CLOSE_TAG); + } else if (item instanceof SemanticTOCI) { + SemanticTOCI tocItem = (SemanticTOCI) item; + htmlWriter.write(HtmlSyntax.HTML_LIST_ITEM_TAG); + htmlWriter.write(HtmlSyntax.HTML_PARAGRAPH_TAG); + String value = GeneratorUtils.getTextFromLines(tocItem.getLines(), OutputType.HTML); + htmlWriter.write(value); + htmlWriter.write(HtmlSyntax.HTML_PARAGRAPH_CLOSE_TAG); + for (IObject object : tocItem.getContents()) { + write(object); + } + htmlWriter.write(HtmlSyntax.HTML_LIST_ITEM_CLOSE_TAG); + } + htmlWriter.write(HtmlSyntax.HTML_LINE_BREAK); + } + htmlWriter.write(HtmlSyntax.HTML_UNORDERED_LIST_CLOSE_TAG); + htmlWriter.write(HtmlSyntax.HTML_LINE_BREAK); + } + + /** + * Writes a semantic text node as a figure caption to the HTML output. + * + * @param textNode the text node to write + * @throws IOException if unable to write to the output + */ + protected void writeSemanticTextNode(SemanticTextNode textNode) throws IOException { + htmlWriter.write(HtmlSyntax.HTML_FIGURE_CAPTION_TAG); + htmlWriter.write(GeneratorUtils.getTextFromTextNode(textNode, OutputType.HTML)); + htmlWriter.write(HtmlSyntax.HTML_FIGURE_CAPTION_CLOSE_TAG); + htmlWriter.write(HtmlSyntax.HTML_LINE_BREAK); + } + + /** + * Writes a table element to the HTML output. + * + * @param table the table border to write + * @throws IOException if unable to write to the output + */ + protected void writeTable(TableBorder table) throws IOException { + enterTable(); + htmlWriter.write(HtmlSyntax.HTML_TABLE_TAG); + htmlWriter.write(HtmlSyntax.HTML_LINE_BREAK); + for (int rowNumber = 0; rowNumber < table.getNumberOfRows(); rowNumber++) { + TableBorderRow row = table.getRow(rowNumber); + htmlWriter.write(HtmlSyntax.HTML_TABLE_ROW_TAG); + htmlWriter.write(HtmlSyntax.HTML_LINE_BREAK); + for (int colNumber = 0; colNumber < table.getNumberOfColumns(); colNumber++) { + TableBorderCell cell = row.getCell(colNumber); + if (cell.getRowNumber() == rowNumber && cell.getColNumber() == colNumber) { + writeCellTag(cell); + List contents = cell.getContents(); + if (!contents.isEmpty()) { + for (IObject contentItem : contents) { + this.write(contentItem); + } + } + if (cell.isHeaderCell()) { + htmlWriter.write(HtmlSyntax.HTML_TABLE_HEADER_CLOSE_TAG); + } else { + htmlWriter.write(HtmlSyntax.HTML_TABLE_CELL_CLOSE_TAG); + } + htmlWriter.write(HtmlSyntax.HTML_LINE_BREAK); + } + } + + htmlWriter.write(HtmlSyntax.HTML_TABLE_ROW_CLOSE_TAG); + htmlWriter.write(HtmlSyntax.HTML_LINE_BREAK); + } + + htmlWriter.write(HtmlSyntax.HTML_TABLE_CLOSE_TAG); + htmlWriter.write(HtmlSyntax.HTML_LINE_BREAK); + leaveTable(); + } + + /** + * Writes a paragraph element to the HTML output. + * + * @param paragraph the semantic paragraph to write + * @throws IOException if unable to write to the output + */ + protected void writeParagraph(SemanticParagraph paragraph) throws IOException { + double paragraphIndent = paragraph.getColumns().get(0).getBlocks().get(0).getFirstLineIndent(); + + htmlWriter.write(HtmlSyntax.HTML_PARAGRAPH_TAG); + if (paragraphIndent > 0) { + htmlWriter.write(HtmlSyntax.HTML_INDENT); + } + String paragraphValue = GeneratorUtils.getTextFromTextNode(paragraph, OutputType.HTML); + + if (isInsideTable() && StaticContainers.isKeepLineBreaks()) { + paragraphValue = paragraphValue.replace(HtmlSyntax.HTML_LINE_BREAK, HtmlSyntax.HTML_LINE_BREAK_TAG); + } + + htmlWriter.write(paragraphValue); + htmlWriter.write(HtmlSyntax.HTML_PARAGRAPH_CLOSE_TAG); + htmlWriter.write(HtmlSyntax.HTML_LINE_BREAK); + } + + /** + * Writes a heading element to the HTML output. + * + * @param heading the semantic heading to write + * @throws IOException if unable to write to the output + */ + protected void writeHeading(SemanticHeading heading) throws IOException { + int headingLevel = Math.min(6, Math.max(1, heading.getHeadingLevel())); + htmlWriter.write(""); + htmlWriter.write(GeneratorUtils.getTextFromTextNode(heading, OutputType.HTML)); + htmlWriter.write(""); + htmlWriter.write(HtmlSyntax.HTML_LINE_BREAK); + } + + private void writeCellTag(TableBorderCell cell) throws IOException { + String tag = cell.isHeaderCell() ? ""); + htmlWriter.write(cellTag.toString()); + } + + /** + * Increments the table nesting level when entering a table. + */ + protected void enterTable() { + tableNesting++; + } + + /** + * Decrements the table nesting level when leaving a table. + */ + protected void leaveTable() { + if (tableNesting > 0) { + tableNesting--; + } + } + + /** + * Checks whether currently writing inside a table. + * + * @return true if inside a table, false otherwise + */ + protected boolean isInsideTable() { + return tableNesting > 0; + } + + /** + * Escapes special characters for use in HTML attributes. + * Handles quotes, ampersands, less-than, greater-than, and newlines. + * + * @param value the string to escape + * @return the escaped string safe for HTML attribute values + */ + protected static String escapeHtmlAttribute(String value) { + if (value == null) { + return ""; + } + value = escapeHtmlText(value); + return value + .replace("\"", """) + .replace("\n", " ") + .replace("\r", ""); + } + + protected static String escapeHtmlText(String value) { + if (value == null) { + return ""; + } + return value + .replace("\u0000", "") + .replace("&", "&") + .replace("<", "<") + .replace(">", ">"); + } + + public static void getTextFromLineForHTML(TextLine line, StringBuilder stringBuilder) { + for (TextChunk chunk : line.getTextChunks()) { + String style = getTextStyle(chunk); + if (!style.isEmpty()) { + String styleAttribute = String.format(HtmlSyntax.HTML_STYLE_ATTRIBUTE, style.trim()); + stringBuilder.append(String.format(HtmlSyntax.HTML_SPAN_START_TAG, styleAttribute)); + stringBuilder.append(escapeHtmlText(chunk.getValue())); + stringBuilder.append(HtmlSyntax.HTML_SPAN_CLOSE_TAG); + } else { + stringBuilder.append(escapeHtmlText(chunk.getValue())); + } + } + } + + private static String getTextStyle(TextChunk chunk) { + StringBuilder style = new StringBuilder(); + if (chunk.getIsStrikethroughText() || chunk.getIsUnderlinedText()) { + style.append(String.format(HtmlSyntax.HTML_TEXT_DECORATION_STYLE_PROPERTY, + (chunk.getIsStrikethroughText() ? HtmlSyntax.HTML_STRIKETHROUGH_VALUE : "") + + (chunk.getIsUnderlinedText() ? HtmlSyntax.HTML_UNDERLINE_VALUE : ""))); + } + return style.toString(); + } + + @Override + public void close() throws IOException { + if (htmlWriter != null) { + htmlWriter.close(); + } + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/html/HtmlGeneratorFactory.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/html/HtmlGeneratorFactory.java new file mode 100644 index 0000000..ffc9840 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/html/HtmlGeneratorFactory.java @@ -0,0 +1,39 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.html; + +import org.opendataloader.pdf.api.Config; + +import java.io.File; +import java.io.IOException; + +/** + * Factory class for creating HtmlGenerator instances. + */ +public class HtmlGeneratorFactory { + + /** + * Creates a new HtmlGenerator for the specified PDF file. + * + * @param inputPdf the input PDF file + * @param config the configuration settings + * @return a new HtmlGenerator instance + * @throws IOException if unable to create the generator + */ + public static HtmlGenerator getHtmlGenerator(File inputPdf, Config config) throws IOException { + return new HtmlGenerator(inputPdf, config); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/html/HtmlSyntax.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/html/HtmlSyntax.java new file mode 100644 index 0000000..3059809 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/html/HtmlSyntax.java @@ -0,0 +1,86 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.html; + +/** + * Constants for HTML syntax elements used in HTML output generation. + */ +public class HtmlSyntax { + /** Format string for image file names. */ + public static final String IMAGE_FILE_NAME_FORMAT = "figure%d.png"; + /** Line break character for HTML output. */ + public static final String HTML_LINE_BREAK = "\n"; + /** Opening table tag with border. */ + public static final String HTML_TABLE_TAG = ""; + /** Closing table tag. */ + public static final String HTML_TABLE_CLOSE_TAG = "
    "; + /** Opening table row tag. */ + public static final String HTML_TABLE_ROW_TAG = ""; + /** Closing table row tag. */ + public static final String HTML_TABLE_ROW_CLOSE_TAG = ""; + /** Opening table cell tag. */ + public static final String HTML_TABLE_CELL_TAG = ""; + /** Closing table cell tag. */ + public static final String HTML_TABLE_CELL_CLOSE_TAG = ""; + /** Opening table header cell tag. */ + public static final String HTML_TABLE_HEADER_TAG = ""; + /** Closing table header cell tag. */ + public static final String HTML_TABLE_HEADER_CLOSE_TAG = ""; + /** Opening ordered list tag. */ + public static final String HTML_ORDERED_LIST_TAG = "
      "; + /** Closing ordered list tag. */ + public static final String HTML_ORDERED_LIST_CLOSE_TAG = "
    "; + /** Opening unordered list tag. */ + public static final String HTML_UNORDERED_LIST_TAG = "
      "; + /** Closing unordered list tag. */ + public static final String HTML_UNORDERED_LIST_CLOSE_TAG = "
    "; + /** Opening list item tag. */ + public static final String HTML_LIST_ITEM_TAG = "
  5. "; + /** Closing list item tag. */ + public static final String HTML_LIST_ITEM_CLOSE_TAG = "
  6. "; + /** HTML line break tag. */ + public static final String HTML_LINE_BREAK_TAG = "
    "; + /** Indentation string for paragraphs. */ + public static final String HTML_INDENT = ""; + /** Opening paragraph tag. */ + public static final String HTML_PARAGRAPH_TAG = "

    "; + /** Closing paragraph tag. */ + public static final String HTML_PARAGRAPH_CLOSE_TAG = "

    "; + /** Opening figure tag. */ + public static final String HTML_FIGURE_TAG = "
    "; + /** Closing figure tag. */ + public static final String HTML_FIGURE_CLOSE_TAG = "
    "; + /** Opening figure caption tag. */ + public static final String HTML_FIGURE_CAPTION_TAG = "
    "; + /** Closing figure caption tag. */ + public static final String HTML_FIGURE_CAPTION_CLOSE_TAG = "
    "; + /** Opening math display block tag for MathJax/KaTeX rendering. */ + public static final String HTML_MATH_DISPLAY_TAG = "
    "; + /** Closing math display block tag. */ + public static final String HTML_MATH_DISPLAY_CLOSE_TAG = "
    "; + /** Span opening tag. */ + public static final String HTML_SPAN_START_TAG = ""; + /** Style attribute */ + public static final String HTML_STYLE_ATTRIBUTE = " style=\"%s\""; + /** Span closing tag. */ + public static final String HTML_SPAN_CLOSE_TAG = ""; + /** Text decoration property. */ + public static final String HTML_TEXT_DECORATION_STYLE_PROPERTY = "text-decoration:%s; "; + /** Strikethrough text property. */ + public static final String HTML_STRIKETHROUGH_VALUE = " line-through"; + /** Underline text property. */ + public static final String HTML_UNDERLINE_VALUE = " underline"; +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/DiskPageImageCache.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/DiskPageImageCache.java new file mode 100644 index 0000000..5b75b56 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/DiskPageImageCache.java @@ -0,0 +1,97 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.nio.file.DirectoryStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * Disk-backed page image cache. Stores page images as PNG files in a + * temporary directory. evict() is a no-op (keeps files for potential re-read). + * close() deletes the temp directory and all files. + */ +public class DiskPageImageCache implements PageImageCache { + + private static final Logger LOGGER = Logger.getLogger(DiskPageImageCache.class.getCanonicalName()); + + private final Path tempDir; + + public DiskPageImageCache() throws IOException { + this.tempDir = Files.createTempDirectory("odl-pages-"); + } + + // Visible for testing + DiskPageImageCache(Path tempDir) { + this.tempDir = tempDir; + } + + @Override + public BufferedImage getOrFetch(int pageIndex, PageImageFetcher fetcher) throws IOException { + Path file = tempDir.resolve("page-" + pageIndex + ".png"); + if (Files.exists(file)) { + BufferedImage cached = ImageIO.read(file.toFile()); + if (cached != null) { + return cached; + } + // Cached file is unreadable (corrupt or no ImageReader) — re-fetch. + LOGGER.log(Level.WARNING, "Cached page image is unreadable, re-fetching: {0}", file); + Files.deleteIfExists(file); + } + BufferedImage image = fetcher.fetch(pageIndex); + if (image == null) { + throw new IOException("Page image fetcher returned null for page " + pageIndex); + } + if (!ImageIO.write(image, "png", file.toFile())) { + throw new IOException("No ImageIO writer accepted PNG output for page " + pageIndex); + } + return image; + } + + @Override + public void evict(int pageIndex) { + // no-op: keep on disk for potential re-read + } + + @Override + public void close() throws IOException { + if (!Files.exists(tempDir)) { + return; + } + try (DirectoryStream stream = Files.newDirectoryStream(tempDir)) { + for (Path entry : stream) { + try { + Files.deleteIfExists(entry); + } catch (IOException e) { + LOGGER.log(Level.WARNING, "Failed to delete temp file: {0}", entry); + } + } + } + Files.deleteIfExists(tempDir); + } + + /** + * Returns the temp directory path (for testing). + */ + Path getTempDir() { + return tempDir; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/DoclingFastServerClient.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/DoclingFastServerClient.java new file mode 100644 index 0000000..d5afd29 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/DoclingFastServerClient.java @@ -0,0 +1,315 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import okhttp3.MediaType; +import okhttp3.MultipartBody; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; +import okhttp3.ResponseBody; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.TimeUnit; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * HTTP client for docling-fast-server API. + * + *

    This client communicates with the optimized FastAPI server (opendataloader-pdf-hybrid) + * which provides 3.3x faster performance than docling-serve by using a DocumentConverter + * singleton pattern. + * + *

    The API is compatible with docling-serve, using the same /v1/convert/file endpoint + * and response format. + * + * @see HybridClient + * @see HybridConfig + */ +public class DoclingFastServerClient implements HybridClient { + + private static final Logger LOGGER = Logger.getLogger(DoclingFastServerClient.class.getCanonicalName()); + + /** Default URL for docling-fast-server. */ + public static final String DEFAULT_URL = "http://localhost:5002"; + + private static final String CONVERT_ENDPOINT = "/v1/convert/file"; + private static final String HEALTH_ENDPOINT = "/health"; + private static final int HEALTH_CHECK_TIMEOUT_MS = 3000; + private static final String DEFAULT_FILENAME = "document.pdf"; + private static final MediaType MEDIA_TYPE_PDF = MediaType.parse("application/pdf"); + + private final String baseUrl; + private final OkHttpClient httpClient; + private final ObjectMapper objectMapper; + + /** + * Creates a new DoclingFastServerClient with the specified configuration. + * + * @param config The hybrid configuration containing URL and timeout settings. + */ + public DoclingFastServerClient(HybridConfig config) { + this.baseUrl = config.getEffectiveUrl("docling-fast"); + this.objectMapper = new ObjectMapper(); + this.httpClient = new OkHttpClient.Builder() + .connectTimeout(config.getTimeoutMs(), TimeUnit.MILLISECONDS) + .readTimeout(config.getTimeoutMs(), TimeUnit.MILLISECONDS) + .writeTimeout(config.getTimeoutMs(), TimeUnit.MILLISECONDS) + .build(); + } + + /** + * Creates a new DoclingFastServerClient with a custom OkHttpClient (for testing). + * + * @param baseUrl The base URL of the docling-fast-server instance. + * @param httpClient The OkHttp client to use for requests. + * @param objectMapper The Jackson ObjectMapper for JSON parsing. + */ + DoclingFastServerClient(String baseUrl, OkHttpClient httpClient, ObjectMapper objectMapper) { + this.baseUrl = baseUrl; + this.httpClient = httpClient; + this.objectMapper = objectMapper; + } + + @Override + public void checkAvailability() throws IOException { + OkHttpClient healthClient = httpClient.newBuilder() + .connectTimeout(HEALTH_CHECK_TIMEOUT_MS, TimeUnit.MILLISECONDS) + .readTimeout(HEALTH_CHECK_TIMEOUT_MS, TimeUnit.MILLISECONDS) + .build(); + + Request healthRequest = new Request.Builder() + .url(baseUrl + HEALTH_ENDPOINT) + .get() + .build(); + + Response response; + try { + response = healthClient.newCall(healthRequest).execute(); + } catch (IOException e) { + throw new IOException( + "Hybrid server is not available at " + baseUrl + "\n" + + "To start the local hybrid server:\n" + + " 1. Install: pip install \"opendataloader-pdf[hybrid]\"\n" + + " 2. Start: opendataloader-pdf-hybrid --port 5002\n" + + "To use a remote server or custom port: --hybrid-url http://host:port\n" + + "Or pass --hybrid-fallback to fall back to Java-only output for this run.\n" + + "Or run without --hybrid flag for Java-only processing.", e); + } + try (response) { + if (!response.isSuccessful()) { + throw new IOException( + "Hybrid server at " + baseUrl + " returned HTTP " + response.code() + + " during health check.\n" + + "The server is reachable but may be starting up or unhealthy."); + } + } + } + + @Override + public HybridResponse convert(HybridRequest request) throws IOException { + Request httpRequest = buildConvertRequest(request); + LOGGER.log(Level.FINE, "Sending request to {0}", baseUrl + CONVERT_ENDPOINT); + + try (Response response = httpClient.newCall(httpRequest).execute()) { + return parseResponse(response); + } + } + + @Override + public CompletableFuture convertAsync(HybridRequest request) { + return CompletableFuture.supplyAsync(() -> { + try { + return convert(request); + } catch (IOException e) { + throw new IllegalStateException("Failed to convert", e); + } + }); + } + + /** + * Gets the base URL of this client. + * + * @return The base URL. + */ + public String getBaseUrl() { + return baseUrl; + } + + /** + * Builds a multipart/form-data HTTP request for the convert endpoint. + */ + private Request buildConvertRequest(HybridRequest request) { + MultipartBody.Builder bodyBuilder = new MultipartBody.Builder() + .setType(MultipartBody.FORM) + .addFormDataPart("files", DEFAULT_FILENAME, + RequestBody.create(request.getPdfBytes(), MEDIA_TYPE_PDF)); + + // Add page range if specified + if (request.getPageNumbers() != null && !request.getPageNumbers().isEmpty()) { + int minPage = request.getPageNumbers().stream().min(Integer::compareTo).orElse(1); + int maxPage = request.getPageNumbers().stream().max(Integer::compareTo).orElse(Integer.MAX_VALUE); + bodyBuilder.addFormDataPart("page_ranges", minPage + "-" + maxPage); + } + + return new Request.Builder() + .url(baseUrl + CONVERT_ENDPOINT) + .post(bodyBuilder.build()) + .build(); + } + + /** + * Parses the HTTP response into a HybridResponse. + */ + private HybridResponse parseResponse(Response response) throws IOException { + if (!response.isSuccessful()) { + ResponseBody body = response.body(); + String bodyStr = body != null ? body.string() : ""; + throw new IOException("Docling Fast Server request failed with status " + response.code() + + ": " + bodyStr); + } + + ResponseBody body = response.body(); + if (body == null) { + throw new IOException("Empty response body"); + } + + String responseStr = body.string(); + JsonNode root = objectMapper.readTree(responseStr); + + // Check for API error status + JsonNode statusNode = root.get("status"); + String status = statusNode != null ? statusNode.asText() : ""; + if ("failure".equals(status)) { + JsonNode errorsNode = root.get("errors"); + String errorMessage = errorsNode != null ? errorsNode.toString() : "Unknown error"; + throw new IOException("Docling Fast Server processing failed: " + errorMessage); + } + + // Log partial_success status + if ("partial_success".equals(status)) { + JsonNode errorsNode = root.get("errors"); + LOGGER.log(Level.WARNING, "Backend returned partial_success: {0}", + errorsNode != null ? errorsNode.toString() : "no error details"); + } + + // Extract document content + JsonNode documentNode = root.get("document"); + if (documentNode == null) { + throw new IOException("Invalid response: missing 'document' field"); + } + + JsonNode jsonContent = documentNode.get("json_content"); + + // Extract per-page content from json_content if available + Map pageContents = extractPageContents(jsonContent); + + // Extract failed pages (1-indexed) from partial_success responses + List failedPages = extractFailedPages(root); + + // Extract per-step pipeline timings (layout, ocr, table_structure, etc.) + JsonNode timingsNode = root.get("timings"); + + return new HybridResponse(null, null, jsonContent, pageContents, failedPages, timingsNode); + } + + /** + * Extracts per-page content from the DoclingDocument JSON structure. + * + *

    The DoclingDocument stores page information in the "pages" object, + * keyed by page number (as string). This method extracts the content + * elements for each page based on the "prov" (provenance) information. + */ + private Map extractPageContents(JsonNode jsonContent) { + Map pageContents = new HashMap<>(); + + if (jsonContent == null) { + return pageContents; + } + + // The pages node contains page metadata keyed by page number + JsonNode pagesNode = jsonContent.get("pages"); + if (pagesNode != null && pagesNode.isObject()) { + Iterator fieldNames = pagesNode.fieldNames(); + while (fieldNames.hasNext()) { + String pageNumStr = fieldNames.next(); + try { + int pageNum = Integer.parseInt(pageNumStr); + pageContents.put(pageNum, pagesNode.get(pageNumStr)); + } catch (NumberFormatException ignored) { + // Skip non-numeric page keys + } + } + } + + return pageContents; + } + + /** + * Extracts the list of failed page numbers from the response. + * + *

    When the backend returns partial_success, the failed_pages array contains + * 1-indexed page numbers that failed during processing (e.g., due to Invalid code point + * errors in PDF font encoding). + */ + private List extractFailedPages(JsonNode root) { + JsonNode failedPagesNode = root.get("failed_pages"); + if (failedPagesNode == null || !failedPagesNode.isArray() || failedPagesNode.isEmpty()) { + return Collections.emptyList(); + } + + List failedPages = new ArrayList<>(); + for (JsonNode pageNode : failedPagesNode) { + if (pageNode.isNumber() && pageNode.canConvertToInt()) { + failedPages.add(pageNode.asInt()); + } + } + return failedPages; + } + + /** + * Shuts down the HTTP client and releases all resources. + * + *

    This gracefully shuts down the dispatcher's executor service, + * allowing the JVM to exit cleanly. Idle connections are evicted + * from the connection pool. + */ + public void shutdown() { + // Gracefully shutdown the dispatcher - allows pending requests to complete + httpClient.dispatcher().executorService().shutdown(); + // Evict idle connections from pool (does not affect the server) + httpClient.connectionPool().evictAll(); + // Close the cache if present + if (httpClient.cache() != null) { + try { + httpClient.cache().close(); + } catch (Exception ignored) { + // Ignore cache close errors + } + } + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/DoclingSchemaTransformer.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/DoclingSchemaTransformer.java new file mode 100644 index 0000000..0649b3b --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/DoclingSchemaTransformer.java @@ -0,0 +1,621 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import com.fasterxml.jackson.databind.JsonNode; +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.opendataloader.pdf.entities.SemanticFormula; +import org.opendataloader.pdf.entities.SemanticPicture; +import org.opendataloader.pdf.hybrid.HybridClient.HybridResponse; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticHeading; +import org.verapdf.wcag.algorithms.entities.SemanticParagraph; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.content.TextLine; +import org.verapdf.wcag.algorithms.entities.enums.SemanticType; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderRow; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * Transforms Docling JSON output to OpenDataLoader IObject hierarchy. + * + *

    This transformer handles the DoclingDocument JSON format and converts + * its elements (texts, tables, pictures) to the equivalent IObject types + * used by OpenDataLoader's downstream processors and generators. + * + *

    Schema Mapping

    + *
      + *
    • texts (label: text) → SemanticParagraph
    • + *
    • texts (label: section_header) → SemanticHeading
    • + *
    • texts (label: caption, footnote) → SemanticParagraph
    • + *
    • texts (label: page_header, page_footer) → Filtered out (furniture)
    • + *
    • tables → TableBorder with rows and cells
    • + *
    • pictures → SemanticPicture (with optional description)
    • + *
    + * + *

    Coordinate System

    + *

    Both Docling and OpenDataLoader use BOTTOMLEFT origin. Docling provides + * bbox as {l, t, r, b} while OpenDataLoader uses [left, bottom, right, top]. + * When Docling uses TOPLEFT origin, coordinates are converted appropriately. + * + *

    Thread Safety

    + *

    This class is NOT thread-safe. The {@code transform()} method updates + * internal state (pictureIndex) during each call. Concurrent calls + * to transform() on the same instance may produce incorrect results. + * Use separate instances for concurrent transformations. + */ +public class DoclingSchemaTransformer implements HybridSchemaTransformer { + + private static final Logger LOGGER = Logger.getLogger(DoclingSchemaTransformer.class.getCanonicalName()); + + private static final String BACKEND_TYPE = "docling"; + + // Picture index counter — accumulates across transform() calls on the same instance + // to ensure document-unique indices when processing chunked responses (#352). + private int pictureIndex; + + // Docling text labels + private static final String LABEL_TEXT = "text"; + private static final String LABEL_SECTION_HEADER = "section_header"; + private static final String LABEL_CAPTION = "caption"; + private static final String LABEL_FOOTNOTE = "footnote"; + private static final String LABEL_PAGE_HEADER = "page_header"; + private static final String LABEL_PAGE_FOOTER = "page_footer"; + private static final String LABEL_LIST_ITEM = "list_item"; + private static final String LABEL_FORMULA = "formula"; + + // Docling coordinate origins + private static final String COORD_ORIGIN_BOTTOMLEFT = "BOTTOMLEFT"; + private static final String COORD_ORIGIN_TOPLEFT = "TOPLEFT"; + + @Override + public String getBackendType() { + return BACKEND_TYPE; + } + + @Override + public List> transform(HybridResponse response, Map pageHeights) { + JsonNode json = response.getJson(); + if (json == null) { + LOGGER.log(Level.WARNING, "HybridResponse JSON is null, returning empty result"); + return Collections.emptyList(); + } + + // Note: pictureIndex is NOT reset here — it must accumulate across + // multiple transform() calls when processing chunked responses (#352). + // Each transformer instance starts with pictureIndex=0 (field default), + // so single-call usage is unaffected. + + // Determine number of pages from page info or content + int numPages = determinePageCount(json, pageHeights); + + // Initialize result list + List> result = new ArrayList<>(numPages); + for (int i = 0; i < numPages; i++) { + result.add(new ArrayList<>()); + } + + // Transform texts + JsonNode texts = json.get("texts"); + if (texts != null && texts.isArray()) { + for (JsonNode textNode : texts) { + transformText(textNode, result, pageHeights); + } + } + + // Transform tables + JsonNode tables = json.get("tables"); + if (tables != null && tables.isArray()) { + for (JsonNode tableNode : tables) { + transformTable(tableNode, result, pageHeights); + } + } + + // Transform pictures + JsonNode pictures = json.get("pictures"); + if (pictures != null && pictures.isArray()) { + for (JsonNode pictureNode : pictures) { + transformPicture(pictureNode, result, pageHeights); + } + } + + // Sort each page's contents by reading order (top to bottom, left to right) + for (List pageContents : result) { + sortByReadingOrder(pageContents); + } + + return result; + } + + @Override + public List transformPage(int pageNumber, JsonNode pageContent, double pageHeight) { + Map pageHeights = new HashMap<>(); + pageHeights.put(pageNumber, pageHeight); + + // Create a wrapper response with just this page's content + HybridResponse singlePageResponse = new HybridResponse("", pageContent, Collections.emptyMap()); + List> result = transform(singlePageResponse, pageHeights); + + if (result.isEmpty()) { + return Collections.emptyList(); + } + + // Find the page in the result + int pageIndex = pageNumber - 1; + if (pageIndex >= 0 && pageIndex < result.size()) { + return result.get(pageIndex); + } + + return Collections.emptyList(); + } + + /** + * Determines the number of pages from the JSON response. + */ + private int determinePageCount(JsonNode json, Map pageHeights) { + // First check pageHeights if provided + if (pageHeights != null && !pageHeights.isEmpty()) { + return pageHeights.keySet().stream().mapToInt(Integer::intValue).max().orElse(0); + } + + // Check pages array in JSON + JsonNode pages = json.get("pages"); + if (pages != null && pages.isArray()) { + return pages.size(); + } + + // Check page_dimensions or similar + JsonNode pageDimensions = json.get("page_dimensions"); + if (pageDimensions != null && pageDimensions.isObject()) { + int maxPage = 0; + Iterator fieldNames = pageDimensions.fieldNames(); + while (fieldNames.hasNext()) { + try { + int pageNum = Integer.parseInt(fieldNames.next()); + maxPage = Math.max(maxPage, pageNum); + } catch (NumberFormatException e) { + // ignore + } + } + return maxPage; + } + + // Default to scanning content + return scanContentForPageCount(json); + } + + /** + * Scans content elements to determine page count. + */ + private int scanContentForPageCount(JsonNode json) { + int maxPage = 0; + + JsonNode texts = json.get("texts"); + if (texts != null && texts.isArray()) { + for (JsonNode text : texts) { + maxPage = Math.max(maxPage, getPageNumberFromProv(text)); + } + } + + JsonNode tables = json.get("tables"); + if (tables != null && tables.isArray()) { + for (JsonNode table : tables) { + maxPage = Math.max(maxPage, getPageNumberFromProv(table)); + } + } + + return maxPage; + } + + /** + * Extracts page number from provenance info. + */ + private int getPageNumberFromProv(JsonNode node) { + JsonNode prov = node.get("prov"); + if (prov != null && prov.isArray() && prov.size() > 0) { + JsonNode firstProv = prov.get(0); + JsonNode pageNo = firstProv.get("page_no"); + if (pageNo != null && pageNo.isInt()) { + return pageNo.asInt(); + } + } + return 0; + } + + /** + * Transforms a Docling text element to an IObject. + */ + private void transformText(JsonNode textNode, List> result, Map pageHeights) { + String label = getTextValue(textNode, "label"); + + // Skip furniture elements (page headers/footers) + if (LABEL_PAGE_HEADER.equals(label) || LABEL_PAGE_FOOTER.equals(label)) { + return; + } + + // Get provenance for position info + JsonNode prov = textNode.get("prov"); + if (prov == null || !prov.isArray() || prov.size() == 0) { + LOGGER.log(Level.FINE, "Text element missing provenance, skipping"); + return; + } + + JsonNode firstProv = prov.get(0); + int pageNo = firstProv.has("page_no") ? firstProv.get("page_no").asInt() : 1; + int pageIndex = pageNo - 1; + + // Ensure result list is large enough + while (result.size() <= pageIndex) { + result.add(new ArrayList<>()); + } + + // Get bounding box + BoundingBox bbox = extractBoundingBox(firstProv.get("bbox"), pageIndex, pageHeights.get(pageNo)); + + // Get text content + String text = getTextValue(textNode, "text"); + if (text == null || text.isEmpty()) { + text = getTextValue(textNode, "orig"); + } + + // Create appropriate IObject based on label + IObject object; + if (LABEL_SECTION_HEADER.equals(label)) { + object = createHeading(text, bbox, textNode); + } else if (LABEL_FORMULA.equals(label)) { + object = createFormula(text, bbox); + } else { + object = createParagraph(text, bbox); + } + + if (object != null) { + result.get(pageIndex).add(object); + } + } + + /** + * Creates a SemanticHeading from Docling section_header. + */ + private SemanticHeading createHeading(String text, BoundingBox bbox, JsonNode textNode) { + int level = 1; // Default level + + // Try to extract level from node metadata + JsonNode meta = textNode.get("meta"); + if (meta != null && meta.has("level")) { + level = meta.get("level").asInt(1); + } + + // Create a text chunk and wrap in TextLine + TextChunk textChunk = new TextChunk(bbox, text, 12.0, 12.0); + textChunk.adjustSymbolEndsToBoundingBox(null); + TextLine textLine = new TextLine(textChunk); + + // Create heading using default constructor and add content + SemanticHeading heading = new SemanticHeading(); + heading.add(textLine); + heading.setRecognizedStructureId(StaticLayoutContainers.incrementContentId()); + heading.setHeadingLevel(level); + + return heading; + } + + /** + * Creates a SemanticParagraph from Docling text element. + */ + private SemanticParagraph createParagraph(String text, BoundingBox bbox) { + // Create a text chunk and wrap in TextLine + TextChunk textChunk = new TextChunk(bbox, text, 12.0, 12.0); + textChunk.adjustSymbolEndsToBoundingBox(null); + TextLine textLine = new TextLine(textChunk); + + // Create paragraph using default constructor and add content + SemanticParagraph paragraph = new SemanticParagraph(); + paragraph.add(textLine); + paragraph.setRecognizedStructureId(StaticLayoutContainers.incrementContentId()); + + return paragraph; + } + + /** + * Creates a SemanticFormula from Docling formula element. + * + * @param latex The LaTeX representation of the formula + * @param bbox The bounding box + * @return A SemanticFormula object + */ + private SemanticFormula createFormula(String latex, BoundingBox bbox) { + SemanticFormula formula = new SemanticFormula(bbox, latex); + formula.setRecognizedStructureId(StaticLayoutContainers.incrementContentId()); + return formula; + } + + /** + * Transforms a Docling picture element to a SemanticPicture. + */ + private void transformPicture(JsonNode pictureNode, List> result, Map pageHeights) { + // Get provenance for position info + JsonNode prov = pictureNode.get("prov"); + if (prov == null || !prov.isArray() || prov.size() == 0) { + LOGGER.log(Level.FINE, "Picture element missing provenance, skipping"); + return; + } + + JsonNode firstProv = prov.get(0); + int pageNo = firstProv.has("page_no") ? firstProv.get("page_no").asInt() : 1; + int pageIndex = pageNo - 1; + + // Ensure result list is large enough + while (result.size() <= pageIndex) { + result.add(new ArrayList<>()); + } + + // Get bounding box + BoundingBox bbox = extractBoundingBox(firstProv.get("bbox"), pageIndex, pageHeights.get(pageNo)); + + // Extract description from annotations (if available) + String description = extractPictureDescription(pictureNode); + + // Create SemanticPicture with description + SemanticPicture picture = new SemanticPicture(bbox, ++pictureIndex, description); + picture.setRecognizedStructureId(StaticLayoutContainers.incrementContentId()); + + result.get(pageIndex).add(picture); + } + + /** + * Extracts picture description from annotations array. + * + *

    Docling stores picture descriptions in the annotations array with kind="description". + * + * @param pictureNode The picture JSON node + * @return The description text, or null if not available + */ + private String extractPictureDescription(JsonNode pictureNode) { + JsonNode annotations = pictureNode.get("annotations"); + if (annotations != null && annotations.isArray()) { + for (JsonNode annotation : annotations) { + String kind = getTextValue(annotation, "kind"); + if ("description".equals(kind)) { + return getTextValue(annotation, "text"); + } + } + } + return null; + } + + /** + * Transforms a Docling table element to a TableBorder. + */ + private void transformTable(JsonNode tableNode, List> result, Map pageHeights) { + // Get provenance for position info + JsonNode prov = tableNode.get("prov"); + if (prov == null || !prov.isArray() || prov.size() == 0) { + LOGGER.log(Level.FINE, "Table element missing provenance, skipping"); + return; + } + + JsonNode firstProv = prov.get(0); + int pageNo = firstProv.has("page_no") ? firstProv.get("page_no").asInt() : 1; + int pageIndex = pageNo - 1; + + // Ensure result list is large enough + while (result.size() <= pageIndex) { + result.add(new ArrayList<>()); + } + + // Get table data + JsonNode data = tableNode.get("data"); + if (data == null) { + LOGGER.log(Level.FINE, "Table element missing data, skipping"); + return; + } + + // Get grid dimensions + JsonNode gridNode = data.get("grid"); + if (gridNode == null || !gridNode.isArray()) { + LOGGER.log(Level.FINE, "Table missing grid data, skipping"); + return; + } + + int numRows = gridNode.size(); + int numCols = 0; + if (numRows > 0 && gridNode.get(0).isArray()) { + numCols = gridNode.get(0).size(); + } + + if (numRows == 0 || numCols == 0) { + return; + } + + // Get table bounding box + BoundingBox tableBbox = extractBoundingBox(firstProv.get("bbox"), pageIndex, pageHeights.get(pageNo)); + + // Create TableBorder + TableBorder table = new TableBorder(numRows, numCols); + table.setBoundingBox(tableBbox); + table.setRecognizedStructureId(StaticLayoutContainers.incrementContentId()); + + // Get table cells from data + JsonNode tableCells = data.get("table_cells"); + Map cellMap = new HashMap<>(); + if (tableCells != null && tableCells.isArray()) { + for (JsonNode cell : tableCells) { + int startRow = cell.has("start_row_offset_idx") ? cell.get("start_row_offset_idx").asInt() : 0; + int startCol = cell.has("start_col_offset_idx") ? cell.get("start_col_offset_idx").asInt() : 0; + String key = startRow + "," + startCol; + cellMap.put(key, cell); + } + } + + // Build table structure + double rowHeight = (tableBbox.getTopY() - tableBbox.getBottomY()) / numRows; + double colWidth = (tableBbox.getRightX() - tableBbox.getLeftX()) / numCols; + + for (int row = 0; row < numRows; row++) { + TableBorderRow borderRow = new TableBorderRow(row, numCols, 0L); + double rowTop = tableBbox.getTopY() - (row * rowHeight); + double rowBottom = rowTop - rowHeight; + borderRow.setBoundingBox(new BoundingBox(pageIndex, tableBbox.getLeftX(), rowBottom, tableBbox.getRightX(), rowTop)); + table.getRows()[row] = borderRow; + } + + for (int row = 0; row < numRows; row++) { + for (int col = 0; col < numCols; col++) { + // Slot already covered by a spanning cell from an earlier + // iteration — do not overwrite with a fresh placeholder. + if (table.getRows()[row].getCells()[col] != null) continue; + + String key = row + "," + col; + JsonNode cellNode = cellMap.get(key); + + int rowSpan = 1; + int colSpan = 1; + String cellText = ""; + + if (cellNode != null) { + rowSpan = cellNode.has("row_span") ? cellNode.get("row_span").asInt(1) : 1; + colSpan = cellNode.has("col_span") ? cellNode.get("col_span").asInt(1) : 1; + cellText = getTextValue(cellNode, "text"); + if (cellText == null) { + cellText = ""; + } + } + + // Clamp spans to the declared table bounds. Docling occasionally + // emits col_span/row_span values that, combined with the start + // index, run past the table; let the spanning area be exactly + // what stays inside the grid. Math.max(1, ...) defends against + // malformed zero or negative span values that would otherwise + // leave the slot unfilled. + int effectiveColSpan = Math.max(1, Math.min(colSpan, numCols - col)); + int effectiveRowSpan = Math.max(1, Math.min(rowSpan, numRows - row)); + + TableBorderCell cell = new TableBorderCell(row, col, effectiveRowSpan, effectiveColSpan, 0L); + cell.setSemanticType(row == 0 ? SemanticType.TABLE_HEADER : SemanticType.TABLE_CELL); + double cellLeft = tableBbox.getLeftX() + (col * colWidth); + double cellRight = cellLeft + (effectiveColSpan * colWidth); + double cellTop = tableBbox.getTopY() - (row * rowHeight); + double cellBottom = cellTop - (effectiveRowSpan * rowHeight); + cell.setBoundingBox(new BoundingBox(pageIndex, cellLeft, cellBottom, cellRight, cellTop)); + + if (!cellText.isEmpty()) { + SemanticParagraph content = createParagraph(cellText, cell.getBoundingBox()); + cell.addContentObject(content); + } + + // Mark every slot covered by this cell's span with the same + // instance so AutoTaggingProcessor.addTableRow skips the + // duplicates. Without this Docling produces redundant + // 1x1 placeholders next to spanning cells, breaking + // PDF/UA-1 §7.2 (test 43) / PDF/UA-2 §8.2.5.26 "Table rows + // shall have the same number of columns (taking into account + // column spans)". + for (int r = row; r < row + effectiveRowSpan; r++) { + for (int c = col; c < col + effectiveColSpan; c++) { + table.getRows()[r].getCells()[c] = cell; + } + } + } + } + + result.get(pageIndex).add(table); + } + + /** + * Extracts a BoundingBox from Docling bbox JSON. + * + * @param bboxNode The bbox JSON node with l, t, r, b, coord_origin fields + * @param pageIndex The 0-indexed page number + * @param pageHeight The page height for coordinate transformation + * @return A BoundingBox in OpenDataLoader format + */ + private BoundingBox extractBoundingBox(JsonNode bboxNode, int pageIndex, Double pageHeight) { + if (bboxNode == null) { + return new BoundingBox(pageIndex, 0, 0, 0, 0); + } + + double l = bboxNode.has("l") ? bboxNode.get("l").asDouble() : 0; + double t = bboxNode.has("t") ? bboxNode.get("t").asDouble() : 0; + double r = bboxNode.has("r") ? bboxNode.get("r").asDouble() : 0; + double b = bboxNode.has("b") ? bboxNode.get("b").asDouble() : 0; + + String coordOrigin = bboxNode.has("coord_origin") ? + bboxNode.get("coord_origin").asText() : COORD_ORIGIN_BOTTOMLEFT; + + double left, bottom, right, top; + + if (COORD_ORIGIN_TOPLEFT.equals(coordOrigin) && pageHeight != null) { + // Convert from TOPLEFT to BOTTOMLEFT + // In TOPLEFT: t is distance from top, b is distance from top (t < b since t is higher) + // In BOTTOMLEFT: bottom is distance from bottom, top is distance from bottom + left = l; + right = r; + top = pageHeight - t; // t was distance from top + bottom = pageHeight - b; // b was distance from top + } else { + // BOTTOMLEFT origin - Docling uses {l, t, r, b} where t=top, b=bottom + left = l; + bottom = b; + right = r; + top = t; + } + + return new BoundingBox(pageIndex, left, bottom, right, top); + } + + /** + * Gets a text value from a JSON node. + */ + private String getTextValue(JsonNode node, String fieldName) { + if (node != null && node.has(fieldName)) { + JsonNode field = node.get(fieldName); + if (field.isTextual()) { + return field.asText(); + } + } + return null; + } + + /** + * Sorts page contents by reading order (top to bottom, left to right). + */ + private void sortByReadingOrder(List contents) { + contents.sort(new Comparator() { + @Override + public int compare(IObject o1, IObject o2) { + // Sort by top Y (descending - higher on page first) + double topDiff = o2.getTopY() - o1.getTopY(); + if (Math.abs(topDiff) > 5.0) { // Use tolerance for same-line detection + return topDiff > 0 ? 1 : -1; + } + // Same line, sort by left X (ascending) + return Double.compare(o1.getLeftX(), o2.getLeftX()); + } + }); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/ElementMetadata.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/ElementMetadata.java new file mode 100644 index 0000000..b5cf469 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/ElementMetadata.java @@ -0,0 +1,298 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import com.fasterxml.jackson.annotation.JsonInclude; + +/** + * Per-element metadata produced by hybrid backends. + * Keyed by IObject.recognizedStructureId in a sidecar Map. + * All fields are optional — backends populate what they can. + */ +@JsonInclude(JsonInclude.Include.NON_DEFAULT) +public class ElementMetadata { + + /** DLA AI score (0.0~1.0). Negative sentinel means "not provided". */ + private double aiScore = -1.0; + + /** Original Hancom AI label (0~17), -1 if not applicable. */ + private int sourceLabel = -1; + + /** + * The hybrid backend's per-page detection id for this element — the + * same value that surfaces as {@code object_id} in the raw DLA JSON + * and as {@code scored_items[].id} in the evidence report. Carrying + * it through to the corrected extraction tree lets downstream + * tooling line up a reading-ordered node with the original detection + * row without re-matching by bbox. Negative sentinel ({@code -1}) + * means "not provided" — e.g. native pipeline output. + */ + private int dlaObjectId = -1; + + /** Heading inference method: "bbox-height" or "fixed". */ + private String headingInferenceMethod; + + /** Bounding box height in pixels, used for heading inference. */ + private Double bboxHeightPx; + + /** Word-cell matching method: "bbox-intersection" or "tsr-text-fallback". */ + private String wordMatchMethod; + + /** Number of words matched in the cell. */ + private int matchedWordCount; + + /** TSR metadata for tables. */ + private TsrMetadata tsr; + + /** Caption metadata for images. */ + private CaptionMetadata caption; + + /** Regionlist resolution metadata for label 7. */ + private RegionlistResolution regionlistResolution; + + /** Text source decision: "stream", "ocr", or "ocr-fallback". */ + private String textSource; + + /** Stream vs OCR text similarity score (auto mode only). */ + private Double streamOcrSimilarity; + + public double getAiScore() { + return aiScore; + } + + public ElementMetadata setAiScore(double aiScore) { + this.aiScore = aiScore; + return this; + } + + public int getSourceLabel() { + return sourceLabel; + } + + public ElementMetadata setSourceLabel(int sourceLabel) { + this.sourceLabel = sourceLabel; + return this; + } + + public int getDlaObjectId() { + return dlaObjectId; + } + + public ElementMetadata setDlaObjectId(int dlaObjectId) { + this.dlaObjectId = dlaObjectId; + return this; + } + + public String getHeadingInferenceMethod() { + return headingInferenceMethod; + } + + public ElementMetadata setHeadingInferenceMethod(String headingInferenceMethod) { + this.headingInferenceMethod = headingInferenceMethod; + return this; + } + + public Double getBboxHeightPx() { + return bboxHeightPx; + } + + public ElementMetadata setBboxHeightPx(Double bboxHeightPx) { + this.bboxHeightPx = bboxHeightPx; + return this; + } + + public String getWordMatchMethod() { + return wordMatchMethod; + } + + public ElementMetadata setWordMatchMethod(String wordMatchMethod) { + this.wordMatchMethod = wordMatchMethod; + return this; + } + + public int getMatchedWordCount() { + return matchedWordCount; + } + + public ElementMetadata setMatchedWordCount(int matchedWordCount) { + this.matchedWordCount = matchedWordCount; + return this; + } + + public TsrMetadata getTsr() { + return tsr; + } + + public ElementMetadata setTsr(TsrMetadata tsr) { + this.tsr = tsr; + return this; + } + + public CaptionMetadata getCaption() { + return caption; + } + + public ElementMetadata setCaption(CaptionMetadata caption) { + this.caption = caption; + return this; + } + + public RegionlistResolution getRegionlistResolution() { + return regionlistResolution; + } + + public ElementMetadata setRegionlistResolution(RegionlistResolution regionlistResolution) { + this.regionlistResolution = regionlistResolution; + return this; + } + + public String getTextSource() { + return textSource; + } + + public ElementMetadata setTextSource(String textSource) { + this.textSource = textSource; + return this; + } + + public Double getStreamOcrSimilarity() { + return streamOcrSimilarity; + } + + public ElementMetadata setStreamOcrSimilarity(Double streamOcrSimilarity) { + this.streamOcrSimilarity = streamOcrSimilarity; + return this; + } + + /** + * TSR (Table Structure Recognition) metadata for table elements. + */ + @JsonInclude(JsonInclude.Include.NON_DEFAULT) + public static class TsrMetadata { + + private int numCells; + private String html; + private long runTimeMs; + + public int getNumCells() { + return numCells; + } + + public TsrMetadata setNumCells(int numCells) { + this.numCells = numCells; + return this; + } + + public String getHtml() { + return html; + } + + public TsrMetadata setHtml(String html) { + this.html = html; + return this; + } + + public long getRunTimeMs() { + return runTimeMs; + } + + public TsrMetadata setRunTimeMs(long runTimeMs) { + this.runTimeMs = runTimeMs; + return this; + } + } + + /** + * Caption metadata for image elements. + */ + @JsonInclude(JsonInclude.Include.NON_DEFAULT) + public static class CaptionMetadata { + + private String text; + private String language; + private long runTimeMs; + + public String getText() { + return text; + } + + public CaptionMetadata setText(String text) { + this.text = text; + return this; + } + + public String getLanguage() { + return language; + } + + public CaptionMetadata setLanguage(String language) { + this.language = language; + return this; + } + + public long getRunTimeMs() { + return runTimeMs; + } + + public CaptionMetadata setRunTimeMs(long runTimeMs) { + this.runTimeMs = runTimeMs; + return this; + } + } + + /** + * Resolution metadata for regionlist elements (label 7). + */ + @JsonInclude(JsonInclude.Include.NON_DEFAULT) + public static class RegionlistResolution { + + /** Strategy used: "table-first" or "list-only". */ + private String strategy; + + /** Whether TSR was attempted. */ + private boolean tsrAttempted; + + /** TSR result: "success", "no-cells", "failed", or null. */ + private String tsrResult; + + public String getStrategy() { + return strategy; + } + + public RegionlistResolution setStrategy(String strategy) { + this.strategy = strategy; + return this; + } + + public boolean isTsrAttempted() { + return tsrAttempted; + } + + public RegionlistResolution setTsrAttempted(boolean tsrAttempted) { + this.tsrAttempted = tsrAttempted; + return this; + } + + public String getTsrResult() { + return tsrResult; + } + + public RegionlistResolution setTsrResult(String tsrResult) { + this.tsrResult = tsrResult; + return this; + } + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HancomAIClient.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HancomAIClient.java new file mode 100644 index 0000000..aa2e6d2 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HancomAIClient.java @@ -0,0 +1,895 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ObjectNode; +import okhttp3.MediaType; +import okhttp3.MultipartBody; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; +import okhttp3.ResponseBody; + +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.util.ArrayList; +import java.util.Base64; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.TimeUnit; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * HTTP client for Hancom AI HOCR SDK API. + * + *

    Pipeline: + *

      + *
    1. pdf2img — convert each page to PNG image
    2. + *
    3. DOCUMENT_LAYOUT_WITH_OCR — layout analysis + OCR on full PDF
    4. + *
    5. TABLE_STRUCTURE_RECOGNITION — crop each Table/Regionlist from page image, send to TSR individually
    6. + *
    7. IMAGE_CAPTIONING — crop each Figure region from page image, caption individually
    8. + *
    + * + * @see HancomAISchemaTransformer + */ +public class HancomAIClient implements HybridClient { + + private static final Logger LOGGER = Logger.getLogger(HancomAIClient.class.getCanonicalName()); + + public static final String DEFAULT_URL = "http://localhost:18008"; + + private static final String SDK_ENDPOINT = "/hocr/sdk"; + private static final String PDF2IMG_ENDPOINT = "/support/pdf2img"; + private static final String PING_ENDPOINT = "/ping"; + private static final String HEALTH_ENDPOINT = "/health"; + private static final int HEALTH_CHECK_TIMEOUT_MS = 3000; + private static final String DEFAULT_FILENAME = "document.pdf"; + private static final MediaType MEDIA_TYPE_PDF = MediaType.parse("application/pdf"); + private static final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png"); + + // DLA label 7 = Regionlist (may be actual table or a list region) + private static final int LABEL_REGIONLIST = 7; + + // DLA label 9 = Table + private static final int LABEL_TABLE = 9; + + // DLA label 10 = Figure + private static final int LABEL_FIGURE = 10; + + /** Padding (pixels) added around table crops before sending to TSR. */ + private static final int TSR_CROP_PADDING = 20; + + private final String baseUrl; + private final OkHttpClient httpClient; + private final ObjectMapper objectMapper; + private final HybridConfig config; + + private String sourcePdfShaShort = "unknown"; + + private static final java.util.Map MODULE_SHORT; + static { + java.util.Map m = new java.util.HashMap<>(); + m.put("DOCUMENT_LAYOUT_WITH_OCR", "dla-ocr"); + m.put("DOCUMENT_LAYOUT_ANALYSIS", "dla"); + m.put("TEXT_RECOGNITION", "ocr"); + m.put("TABLE_STRUCTURE_RECOGNITION", "tsr"); + m.put("IMAGE_CAPTIONING", "caption"); + m.put("CHART_IMAGE_UNDERSTANDING", "chart"); + MODULE_SHORT = java.util.Collections.unmodifiableMap(m); + } + + private static String sha256ShortHex(byte[] data) { + try { + java.security.MessageDigest md = java.security.MessageDigest.getInstance("SHA-256"); + byte[] hash = md.digest(data); + StringBuilder sb = new StringBuilder(12); + for (int i = 0; i < 6; i++) sb.append(String.format("%02x", hash[i])); + return sb.toString(); + } catch (java.security.NoSuchAlgorithmException e) { + return "nohash000000"; + } + } + + // Test hook + void setSourcePdfShaShort(String s) { this.sourcePdfShaShort = s; } + + public HancomAIClient(HybridConfig config) { + this.config = config; + this.baseUrl = config.getEffectiveUrl("hancom-ai"); + this.objectMapper = new ObjectMapper(); + this.httpClient = new OkHttpClient.Builder() + .connectTimeout(config.getTimeoutMs(), TimeUnit.MILLISECONDS) + .readTimeout(config.getTimeoutMs(), TimeUnit.MILLISECONDS) + .writeTimeout(config.getTimeoutMs(), TimeUnit.MILLISECONDS) + .build(); + } + + // Visible for testing + HancomAIClient(String baseUrl, OkHttpClient httpClient, ObjectMapper objectMapper) { + this.config = new HybridConfig(); + this.baseUrl = baseUrl; + this.httpClient = httpClient; + this.objectMapper = objectMapper; + } + + @Override + public JsonNode fetchHealth() { + OkHttpClient healthClient = httpClient.newBuilder() + .connectTimeout(HEALTH_CHECK_TIMEOUT_MS, TimeUnit.MILLISECONDS) + .readTimeout(HEALTH_CHECK_TIMEOUT_MS, TimeUnit.MILLISECONDS) + .build(); + Request request = new Request.Builder() + .url(baseUrl + HEALTH_ENDPOINT) + .get() + .build(); + try (Response response = healthClient.newCall(request).execute()) { + if (!response.isSuccessful()) return null; + ResponseBody body = response.body(); + if (body == null) return null; + return objectMapper.readTree(body.string()); + } catch (IOException e) { + LOGGER.log(Level.FINE, + "Hancom AI /health unavailable: {0}", e.getMessage()); + return null; + } + } + + @Override + public void checkAvailability() throws IOException { + OkHttpClient healthClient = httpClient.newBuilder() + .connectTimeout(HEALTH_CHECK_TIMEOUT_MS, TimeUnit.MILLISECONDS) + .readTimeout(HEALTH_CHECK_TIMEOUT_MS, TimeUnit.MILLISECONDS) + .build(); + + Request request = new Request.Builder() + .url(baseUrl + PING_ENDPOINT) + .get() + .build(); + + try (Response response = healthClient.newCall(request).execute()) { + if (!response.isSuccessful()) { + throw new IOException("Hancom AI server at " + baseUrl + + " returned HTTP " + response.code()); + } + } catch (IOException e) { + throw new IOException( + "Hancom AI server is not available at " + baseUrl + "\n" + + "Check that the server is running and accessible.", e); + } + } + + @Override + public HybridResponse convert(HybridRequest request) throws IOException { + byte[] pdfBytes = request.getPdfBytes(); + this.sourcePdfShaShort = sha256ShortHex(pdfBytes); + LOGGER.log(Level.INFO, "Hancom AI: processing PDF ({0} bytes)", pdfBytes.length); + + // Crop / page-image destination travels with the request, not the + // cached client's config, so the per-document target is correct even + // when the client is reused across documents (and is concurrency-safe + // since nothing shared is mutated). + CropOutput cropOutput = request.getCropOutput(); + + try (PageImageCache pageImageCache = createPageImageCache()) { + ObjectNode merged = objectMapper.createObjectNode(); + ObjectNode timingsNode = objectMapper.createObjectNode(); + + // Step 1: DLA + OCR. This is required — downstream steps have nothing + // to process without it, so treat an empty response as a failure so the + // caller can fall back to the Java pipeline instead of silently emitting + // an empty document. + JsonNode dlaOcrResult = callModule(pdfBytes, "DOCUMENT_LAYOUT_WITH_OCR"); + if (dlaOcrResult == null || !dlaOcrResult.isArray() || dlaOcrResult.size() == 0) { + throw new IOException( + "Hancom AI DOCUMENT_LAYOUT_WITH_OCR returned empty result — " + + "backend unavailable or rejected the document"); + } + merged.set("DOCUMENT_LAYOUT_WITH_OCR", dlaOcrResult); + addTimings(timingsNode, "DOCUMENT_LAYOUT_WITH_OCR", dlaOcrResult); + + // Step 2: Table Structure — crop each Table region from page image, send to TSR individually + long tsrStartMs = System.currentTimeMillis(); + ArrayNode tsrResults = recognizeTableStructures(pdfBytes, dlaOcrResult, pageImageCache, cropOutput); + long tsrMs = System.currentTimeMillis() - tsrStartMs; + merged.set("TABLE_STRUCTURE_RECOGNITION", tsrResults); + + ObjectNode tsrTiming = objectMapper.createObjectNode(); + tsrTiming.put("total_ms", tsrMs); + tsrTiming.put("count", tsrResults.size()); + if (tsrResults.size() > 0) { + tsrTiming.put("avg_ms", tsrMs / tsrResults.size()); + } + timingsNode.set("TABLE_STRUCTURE_RECOGNITION", tsrTiming); + + // Step 3: Figure captioning — pdf2img → crop figures → caption each + long captionStartMs = System.currentTimeMillis(); + ArrayNode figureCaptions = captionFigures(pdfBytes, dlaOcrResult, pageImageCache, cropOutput); + long captionMs = System.currentTimeMillis() - captionStartMs; + merged.set("FIGURE_CAPTIONS", figureCaptions); + + // Evidence-report consumers need the same rendered page image that + // DLA bboxes are expressed against. TSR/FIGURE fetches already save + // their pages; this pass fills only pages that were not otherwise + // rendered. + saveDlaPageImages(pdfBytes, dlaOcrResult, pageImageCache, cropOutput); + + ObjectNode captionTiming = objectMapper.createObjectNode(); + captionTiming.put("total_ms", captionMs); + captionTiming.put("count", figureCaptions.size()); + if (figureCaptions.size() > 0) { + captionTiming.put("avg_ms", captionMs / figureCaptions.size()); + } + timingsNode.set("IMAGE_CAPTIONING", captionTiming); + + merged.set("timings", timingsNode); + + LOGGER.log(Level.INFO, "Hancom AI: completed — {0} table crops, {1} figure captions", + new Object[]{tsrResults.size(), figureCaptions.size()}); + + return new HybridResponse(null, null, merged, Collections.emptyMap(), + Collections.emptyList(), timingsNode); + } + } + + /** + * Creates a PageImageCache based on config. + */ + private PageImageCache createPageImageCache() throws IOException { + if ("disk".equalsIgnoreCase(config.getImageCache())) { + return new DiskPageImageCache(); + } + return new MemoryPageImageCache(); + } + + @Override + public CompletableFuture convertAsync(HybridRequest request) { + return CompletableFuture.supplyAsync(() -> { + try { + return convert(request); + } catch (IOException e) { + throw new IllegalStateException("Failed to convert via Hancom AI", e); + } + }); + } + + /** + * Captions each Figure found by DLA: + * 1. Get page images via pdf2img + * 2. Find Figure objects (label 10) from DLA results + * 3. Crop each Figure from page image + * 4. Send cropped image to IMAGE_CAPTIONING + * + * @return ArrayNode of {page_number, object_id, bbox, caption} + */ + private ArrayNode captionFigures(byte[] pdfBytes, JsonNode dlaResult, + PageImageCache pageImageCache, CropOutput cropOutput) { + ArrayNode captions = objectMapper.createArrayNode(); + + // Extract pages from DLA result + List dlaPages = extractPages(dlaResult); + if (dlaPages.isEmpty()) return captions; + + // Collect Figure objects per page + Map> figuresByPage = new HashMap<>(); + for (JsonNode page : dlaPages) { + int pageNum = page.has("page_number") ? page.get("page_number").asInt() : -1; + if (pageNum < 0) continue; + + JsonNode objects = page.get("objects"); + if (objects == null || !objects.isArray()) continue; + + for (JsonNode obj : objects) { + int label = obj.has("label") ? obj.get("label").asInt() : -1; + if (label == LABEL_FIGURE) { + figuresByPage.computeIfAbsent(pageNum, k -> new ArrayList<>()).add(obj); + } + } + } + + if (figuresByPage.isEmpty()) { + LOGGER.log(Level.INFO, "Hancom AI: no Figure objects found, skipping captioning"); + return captions; + } + + LOGGER.log(Level.INFO, "Hancom AI: captioning {0} figures across {1} pages", + new Object[]{figuresByPage.values().stream().mapToInt(List::size).sum(), + figuresByPage.size()}); + + for (Map.Entry> entry : figuresByPage.entrySet()) { + int pageNum = entry.getKey(); + List figures = entry.getValue(); + + // Get page image via cache + BufferedImage pageImage; + try { + pageImage = pageImageCache.getOrFetch(pageNum, + idx -> fetchPageImage(pdfBytes, idx, cropOutput)); + } catch (IOException e) { + LOGGER.log(Level.WARNING, "Failed to get page {0} image: {1}", + new Object[]{pageNum, e.getMessage()}); + continue; + } + + // Caption each figure + for (JsonNode fig : figures) { + JsonNode bboxNode = fig.get("bbox"); + if (bboxNode == null || !bboxNode.isArray() || bboxNode.size() < 4) continue; + + int left = bboxNode.get(0).asInt(); + int top = bboxNode.get(1).asInt(); + int right = bboxNode.get(2).asInt(); + int bottom = bboxNode.get(3).asInt(); + + // Clamp to image bounds + left = Math.max(0, left); + top = Math.max(0, top); + right = Math.min(pageImage.getWidth(), right); + bottom = Math.min(pageImage.getHeight(), bottom); + + if (right <= left || bottom <= top) continue; + + try { + BufferedImage cropped = pageImage.getSubimage(left, top, right - left, bottom - top); + byte[] croppedPng = imageToPng(cropped); + + // Save crop if configured + if (cropOutput.active()) { + int objId = fig.has("object_id") ? fig.get("object_id").asInt() : -1; + saveCropFile(cropOutput.directory(), pageNum, objId, "figure", croppedPng); + } + + int objIdForCaption = fig.has("object_id") ? fig.get("object_id").asInt() : -1; + CaptionResult captionResult = callImageCaptioning(croppedPng, pageNum, objIdForCaption); + String caption = captionResult != null ? captionResult.caption : null; + + ObjectNode capNode = objectMapper.createObjectNode(); + capNode.put("page_number", pageNum); + capNode.put("object_id", fig.has("object_id") ? fig.get("object_id").asInt() : -1); + ArrayNode bboxArr = objectMapper.createArrayNode(); + bboxArr.add(left).add(top).add(right).add(bottom); + capNode.set("bbox", bboxArr); + capNode.put("caption", caption != null ? caption : ""); + if (captionResult != null && captionResult.confidence != null) { + capNode.put("confidence", captionResult.confidence); + } + captions.add(capNode); + + LOGGER.log(Level.FINE, "Captioned figure page={0} bbox=[{1},{2},{3},{4}]: {5}", + new Object[]{pageNum, left, top, right, bottom, + caption != null ? caption.substring(0, Math.min(50, caption.length())) : ""}); + } catch (Exception e) { + LOGGER.log(Level.WARNING, "Failed to caption figure on page {0}: {1}", + new Object[]{pageNum, e.getMessage()}); + } + } + + // Done with this page — allow cache to reclaim memory + pageImageCache.evict(pageNum); + } + + return captions; + } + + /** + * For each Table region (label 7) found by DLA, crop the region from the + * page image and send the crop to TABLE_STRUCTURE_RECOGNITION individually. + * + *

    When regionlist strategy is "list-only", label 7 is always treated as a + * list and TSR is skipped entirely. + * + * @param pdfBytes the original PDF bytes (needed for pdf2img) + * @param dlaResult the DLA+OCR result containing detected objects + * @param pageImageCache shared cache for page images + * @param cropOutput per-document destination for saved table crops + * @return ArrayNode of per-table results: + * [{page_number, object_id, label, dla_bbox, tsr: {cells, num_cells, html, ...}}] + */ + private ArrayNode recognizeTableStructures(byte[] pdfBytes, JsonNode dlaResult, + PageImageCache pageImageCache, CropOutput cropOutput) { + ArrayNode results = objectMapper.createArrayNode(); + + // In list-only mode, LABEL_REGIONLIST is always rendered as a list and + // does not need TSR. LABEL_TABLE still needs TSR — without it the + // transformer's LABEL_TABLE branch returns null and real tables drop out + // of the structured output entirely. + boolean skipRegionlistTsr = config.isRegionlistListOnly(); + if (skipRegionlistTsr) { + LOGGER.log(Level.INFO, "Hancom AI: regionlist strategy is list-only, " + + "skipping TSR for Regionlist (label 7); Table (label 9) TSR still runs"); + } + + List dlaPages = extractPages(dlaResult); + if (dlaPages.isEmpty()) return results; + + for (JsonNode page : dlaPages) { + int pageNum = page.has("page_number") ? page.get("page_number").asInt() : -1; + if (pageNum < 0) continue; + + JsonNode objects = page.get("objects"); + if (objects == null || !objects.isArray()) continue; + + // Check if any table/regionlist objects exist on this page + boolean needsPageImage = false; + for (JsonNode obj : objects) { + int label = obj.has("label") ? obj.get("label").asInt() : -1; + if (label == LABEL_TABLE + || (label == LABEL_REGIONLIST && !skipRegionlistTsr)) { + needsPageImage = true; + break; + } + } + if (!needsPageImage) continue; + + // Get page image + BufferedImage pageImage; + try { + pageImage = pageImageCache.getOrFetch(pageNum, + idx -> fetchPageImage(pdfBytes, idx, cropOutput)); + } catch (IOException e) { + LOGGER.log(Level.WARNING, "Failed to get page {0} image for TSR: {1}", + new Object[]{pageNum, e.getMessage()}); + continue; + } + + int imgWidth = pageImage.getWidth(); + int imgHeight = pageImage.getHeight(); + + for (JsonNode obj : objects) { + int label = obj.has("label") ? obj.get("label").asInt() : -1; + if (label != LABEL_REGIONLIST && label != LABEL_TABLE) continue; + if (label == LABEL_REGIONLIST && skipRegionlistTsr) continue; + + JsonNode bboxNode = obj.get("bbox"); + if (bboxNode == null || !bboxNode.isArray() || bboxNode.size() < 4) continue; + + int left = bboxNode.get(0).asInt(); + int top = bboxNode.get(1).asInt(); + int right = bboxNode.get(2).asInt(); + int bottom = bboxNode.get(3).asInt(); + + // Add padding around crop + left = Math.max(0, left - TSR_CROP_PADDING); + top = Math.max(0, top - TSR_CROP_PADDING); + right = Math.min(imgWidth, right + TSR_CROP_PADDING); + bottom = Math.min(imgHeight, bottom + TSR_CROP_PADDING); + + if (right <= left || bottom <= top) continue; + + try { + BufferedImage crop = pageImage.getSubimage(left, top, right - left, bottom - top); + byte[] cropPng = imageToPng(crop); + + // Save crop if configured + if (cropOutput.active()) { + int objectId = obj.has("object_id") ? obj.get("object_id").asInt() : -1; + saveCropFile(cropOutput.directory(), pageNum, objectId, "table", cropPng); + } + + // Call TSR with crop image + int objId = obj.has("object_id") ? obj.get("object_id").asInt() : -1; + JsonNode tsrResult = callModuleImage(cropPng, "TABLE_STRUCTURE_RECOGNITION", pageNum, objId); + + // Build result entry + ObjectNode entry = objectMapper.createObjectNode(); + entry.put("page_number", pageNum); + entry.put("object_id", + obj.has("object_id") ? obj.get("object_id").asInt() : -1); + entry.put("label", label); + + // Store the DLA bbox (padded, page-level pixels) for coordinate offset later + ArrayNode dlaBbox = objectMapper.createArrayNode(); + dlaBbox.add(left).add(top).add(right).add(bottom); + entry.set("dla_bbox", dlaBbox); + + // Extract TSR page result. The HOCR envelope wraps results + // as RESULT=[[page]], so the page node is where any + // top-level self-score lands. + List tsrPages = extractPages(tsrResult); + if (!tsrPages.isEmpty()) { + JsonNode tsrPage = tsrPages.get(0); + JsonNode conf = tsrPage.get("confidence"); + if (conf != null && conf.isNumber()) { + // doubleValue() returns the numeric value directly; + // asDouble() has a silent 0.0 fallback we don't want + // even though the isNumber() guard makes it unreachable. + entry.put("confidence", conf.doubleValue()); + } + entry.set("tsr", tsrPage); + } else { + entry.set("tsr", objectMapper.createObjectNode()); + } + + results.add(entry); + } catch (Exception e) { + LOGGER.log(Level.WARNING, "TSR failed for page {0} object: {1}", + new Object[]{pageNum, e.getMessage()}); + } + } + // Evict the page image here only if captionFigures() will not revisit + // this page. captionFigures() iterates pages that contain at least one + // LABEL_FIGURE object; for table-only pages (no figures) the cached + // full-resolution image would otherwise sit in memory until the + // try-with-resources in convert() closes the cache — ~25MB per page + // for the memory cache, which is costly on large table-heavy PDFs. + boolean hasFigure = false; + for (JsonNode obj : objects) { + int objLabel = obj.has("label") ? obj.get("label").asInt() : -1; + if (objLabel == LABEL_FIGURE) { + hasFigure = true; + break; + } + } + if (!hasFigure) { + pageImageCache.evict(pageNum); + } + } + + LOGGER.log(Level.INFO, "Hancom AI: TSR processed {0} table crops", results.size()); + return results; + } + + /** + * Calls a single HOCR SDK module with image (PNG) input. + * Similar to {@link #callModule} but sends image data instead of PDF. + */ + private JsonNode callModuleImage(byte[] pngBytes, String moduleName, int pageNum, int objectId) throws IOException { + String moduleShort = MODULE_SHORT.getOrDefault(moduleName, moduleName); + String requestId = "odl-" + sourcePdfShaShort + "-p" + pageNum + "-o" + objectId + "-" + moduleShort; + MultipartBody body = new MultipartBody.Builder() + .setType(MultipartBody.FORM) + .addFormDataPart("REQUEST_ID", requestId) + .addFormDataPart("OPEN_API_NAME", moduleName) + .addFormDataPart("DATA_FORMAT", "image") + .addFormDataPart("FILE", "crop.png", + RequestBody.create(pngBytes, MEDIA_TYPE_PNG)) + .build(); + + Request httpRequest = new Request.Builder() + .url(baseUrl + SDK_ENDPOINT) + .post(body) + .build(); + + LOGGER.log(Level.FINE, "Calling Hancom AI module (image): {0} [{1}]", + new Object[]{moduleName, requestId}); + + try (Response response = httpClient.newCall(httpRequest).execute()) { + if (!response.isSuccessful()) { + ResponseBody respBody = response.body(); + String errorMsg = respBody != null ? respBody.string() : ""; + LOGGER.log(Level.WARNING, "Hancom AI module {0} (image) returned HTTP {1}: {2}", + new Object[]{moduleName, response.code(), errorMsg}); + return objectMapper.createArrayNode(); + } + + ResponseBody respBody = response.body(); + if (respBody == null) { + return objectMapper.createArrayNode(); + } + + JsonNode root = objectMapper.readTree(respBody.string()); + boolean success = root.has("SUCCESS") && root.get("SUCCESS").asBoolean(); + if (!success) { + LOGGER.log(Level.WARNING, "Hancom AI module {0} (image) returned SUCCESS=false: {1}", + new Object[]{moduleName, root.has("MSG") ? root.get("MSG").asText() : ""}); + return objectMapper.createArrayNode(); + } + + JsonNode result = root.get("RESULT"); + return result != null ? result : objectMapper.createArrayNode(); + } + } + + /** + * Saves full-page render images for every DLA page when evidence image + * capture is enabled. + */ + private void saveDlaPageImages(byte[] pdfBytes, JsonNode dlaResult, + PageImageCache pageImageCache, CropOutput cropOutput) { + if (!cropOutput.active()) return; + + for (JsonNode page : extractPages(dlaResult)) { + int pageNum = page.has("page_number") ? page.get("page_number").asInt() : -1; + if (pageNum < 0) continue; + if (isPageImageFileSaved(cropOutput.directory(), pageNum)) continue; + try { + pageImageCache.getOrFetch(pageNum, idx -> fetchPageImage(pdfBytes, idx, cropOutput)); + } catch (IOException e) { + LOGGER.log(Level.FINE, "Failed to save DLA page image for page " + + pageNum, e); + } finally { + pageImageCache.evict(pageNum); + } + } + } + + private boolean isPageImageFileSaved(String outputDir, int pageNum) { + if (outputDir == null) return false; + File file = new File(new File(outputDir, "page-images"), + String.format("page-%d.png", pageNum)); + return file.isFile(); + } + + /** + * Saves a cropped image to disk for debugging. + */ + private void saveCropFile(String outputDir, int pageNum, int objectId, + String labelName, byte[] pngBytes) { + try { + File dir = new File(outputDir, "crops"); + dir.mkdirs(); + String filename = String.format("page-%d_%s-o%d.png", pageNum, labelName, objectId); + Files.write(new File(dir, filename).toPath(), pngBytes); + } catch (IOException e) { + LOGGER.log(Level.FINE, "Failed to save crop file", e); + } + } + + /** + * Saves a full rendered PDF page image to disk for evidence overlays. + */ + private void savePageImageFile(String outputDir, int pageNum, byte[] pngBytes) { + try { + File dir = new File(outputDir, "page-images"); + dir.mkdirs(); + String filename = String.format("page-%d.png", pageNum); + Files.write(new File(dir, filename).toPath(), pngBytes); + } catch (IOException e) { + LOGGER.log(Level.FINE, "Failed to save page image file", e); + } + } + + /** + * Fetches a page image from the pdf2img endpoint. + */ + private BufferedImage fetchPageImage(byte[] pdfBytes, int pageIndex, CropOutput cropOutput) + throws IOException { + MultipartBody body = new MultipartBody.Builder() + .setType(MultipartBody.FORM) + .addFormDataPart("REQUEST_ID", + "odl-" + sourcePdfShaShort + "-pdf2img-p" + pageIndex) + .addFormDataPart("PAGE_INDEX", String.valueOf(pageIndex)) + .addFormDataPart("FILE", DEFAULT_FILENAME, + RequestBody.create(pdfBytes, MEDIA_TYPE_PDF)) + .build(); + + Request httpRequest = new Request.Builder() + .url(baseUrl + PDF2IMG_ENDPOINT) + .post(body) + .build(); + + try (Response response = httpClient.newCall(httpRequest).execute()) { + if (!response.isSuccessful()) { + throw new IOException("pdf2img returned HTTP " + response.code()); + } + + ResponseBody respBody = response.body(); + if (respBody == null) { + throw new IOException("pdf2img returned empty body"); + } + + JsonNode root = objectMapper.readTree(respBody.string()); + // Navigate: RESULT[0].RESULT.PAGE_PNG_DATA + JsonNode resultArr = root.get("RESULT"); + if (resultArr == null || !resultArr.isArray() || resultArr.size() == 0) { + throw new IOException("pdf2img RESULT is empty"); + } + + JsonNode pageResult = resultArr.get(0); + JsonNode innerResult = pageResult.get("RESULT"); + if (innerResult == null) { + throw new IOException("pdf2img inner RESULT is null"); + } + + String pngBase64 = innerResult.has("PAGE_PNG_DATA") + ? innerResult.get("PAGE_PNG_DATA").asText() : null; + if (pngBase64 == null || pngBase64.isEmpty()) { + throw new IOException("pdf2img PAGE_PNG_DATA is empty"); + } + + byte[] pngBytes; + try { + pngBytes = Base64.getDecoder().decode(pngBase64); + } catch (IllegalArgumentException e) { + // fetchPageImage is declared to throw IOException and callers catch + // only IOException. Escaping IAE would abort the whole conversion + // instead of skipping the failed page. + throw new IOException("pdf2img PAGE_PNG_DATA is not valid Base64", e); + } + BufferedImage image = ImageIO.read(new ByteArrayInputStream(pngBytes)); + if (image == null) { + throw new IOException("pdf2img PAGE_PNG_DATA is not a readable image"); + } + if (cropOutput.active()) { + savePageImageFile(cropOutput.directory(), pageIndex, pngBytes); + } + return image; + } + } + + /** + * Sends a cropped image to IMAGE_CAPTIONING and returns the caption text. + */ + /** Image-captioning result: caption text + the model's self-reported confidence. */ + static final class CaptionResult { + final String caption; + final Double confidence; + CaptionResult(String caption, Double confidence) { + this.caption = caption; + this.confidence = confidence; + } + } + + private CaptionResult callImageCaptioning(byte[] pngBytes, int pageNum, int objectId) throws IOException { + String requestId = "odl-" + sourcePdfShaShort + "-p" + pageNum + "-o" + objectId + "-caption"; + MultipartBody body = new MultipartBody.Builder() + .setType(MultipartBody.FORM) + .addFormDataPart("REQUEST_ID", requestId) + .addFormDataPart("OPEN_API_NAME", "IMAGE_CAPTIONING") + .addFormDataPart("DATA_FORMAT", "image") + .addFormDataPart("FILE", "figure.png", + RequestBody.create(pngBytes, MEDIA_TYPE_PNG)) + .build(); + + Request httpRequest = new Request.Builder() + .url(baseUrl + SDK_ENDPOINT) + .post(body) + .build(); + + try (Response response = httpClient.newCall(httpRequest).execute()) { + if (!response.isSuccessful()) return null; + + ResponseBody respBody = response.body(); + if (respBody == null) return null; + + JsonNode root = objectMapper.readTree(respBody.string()); + if (!root.has("SUCCESS") || !root.get("SUCCESS").asBoolean()) return null; + + JsonNode result = root.get("RESULT"); + if (result == null || !result.isArray() || result.size() == 0) return null; + + JsonNode page = result.get(0); + if (page.isArray() && page.size() > 0) page = page.get(0); + + String caption = page.has("caption") ? page.get("caption").asText("") : null; + JsonNode confNode = page.get("confidence"); + Double confidence = confNode != null && confNode.isNumber() + ? confNode.doubleValue() : null; + return new CaptionResult(caption, confidence); + } + } + + /** + * Calls a single HOCR SDK module with PDF input. + */ + private JsonNode callModule(byte[] pdfBytes, String moduleName) throws IOException { + MultipartBody body = new MultipartBody.Builder() + .setType(MultipartBody.FORM) + .addFormDataPart("REQUEST_ID", + "odl-" + sourcePdfShaShort + "-" + MODULE_SHORT.getOrDefault(moduleName, moduleName)) + .addFormDataPart("OPEN_API_NAME", moduleName) + .addFormDataPart("DATA_FORMAT", "pdf") + .addFormDataPart("FILE", DEFAULT_FILENAME, + RequestBody.create(pdfBytes, MEDIA_TYPE_PDF)) + .build(); + + Request httpRequest = new Request.Builder() + .url(baseUrl + SDK_ENDPOINT) + .post(body) + .build(); + + LOGGER.log(Level.INFO, "Calling Hancom AI module: {0}", moduleName); + + try (Response response = httpClient.newCall(httpRequest).execute()) { + if (!response.isSuccessful()) { + ResponseBody respBody = response.body(); + String errorMsg = respBody != null ? respBody.string() : ""; + LOGGER.log(Level.WARNING, "Hancom AI module {0} returned HTTP {1}: {2}", + new Object[]{moduleName, response.code(), errorMsg}); + return objectMapper.createArrayNode(); + } + + ResponseBody respBody = response.body(); + if (respBody == null) { + return objectMapper.createArrayNode(); + } + + JsonNode root = objectMapper.readTree(respBody.string()); + boolean success = root.has("SUCCESS") && root.get("SUCCESS").asBoolean(); + if (!success) { + LOGGER.log(Level.WARNING, "Hancom AI module {0} returned SUCCESS=false: {1}", + new Object[]{moduleName, root.has("MSG") ? root.get("MSG").asText() : ""}); + return objectMapper.createArrayNode(); + } + + JsonNode result = root.get("RESULT"); + return result != null ? result : objectMapper.createArrayNode(); + } + } + + // --- Helpers --- + + private List extractPages(JsonNode moduleResult) { + List pages = new ArrayList<>(); + if (moduleResult == null || !moduleResult.isArray()) return pages; + JsonNode inner = moduleResult.size() > 0 && moduleResult.get(0).isArray() + ? moduleResult.get(0) : moduleResult; + for (JsonNode page : inner) { + if (page.isObject()) pages.add(page); + } + return pages; + } + + private byte[] imageToPng(BufferedImage image) throws IOException { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ImageIO.write(image, "png", baos); + return baos.toByteArray(); + } + + private void addTimings(ObjectNode timingsNode, String moduleName, JsonNode result) { + long totalMs = 0; + int pageCount = 0; + if (result.isArray() && result.size() > 0) { + JsonNode pages = result.get(0).isArray() ? result.get(0) : result; + for (JsonNode page : pages) { + if (page.has("run_time")) { + totalMs += page.get("run_time").asLong(); + pageCount++; + } + } + } + ObjectNode timing = objectMapper.createObjectNode(); + timing.put("total_ms", totalMs); + timing.put("count", pageCount); + if (pageCount > 0) timing.put("avg_ms", totalMs / pageCount); + timingsNode.set(moduleName, timing); + } + + public String getBaseUrl() { + return baseUrl; + } + + public void shutdown() { + httpClient.dispatcher().executorService().shutdown(); + httpClient.connectionPool().evictAll(); + if (httpClient.cache() != null) { + try { httpClient.cache().close(); } catch (Exception ignored) { } + } + } + + // --- Test hooks (package-private) --- + + void invokeCallModule(byte[] pdfBytes, String moduleName) throws IOException { + this.sourcePdfShaShort = sha256ShortHex(pdfBytes); + callModule(pdfBytes, moduleName); + } + + void invokeCallImageCaptioning(byte[] pngBytes, int pageNum, int objectId) throws IOException { + callImageCaptioning(pngBytes, pageNum, objectId); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HancomAISchemaTransformer.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HancomAISchemaTransformer.java new file mode 100644 index 0000000..c3a5b60 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HancomAISchemaTransformer.java @@ -0,0 +1,1352 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.JsonNodeFactory; +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.opendataloader.pdf.hybrid.HybridClient.HybridResponse; +import org.opendataloader.pdf.entities.SemanticFootnote; +import org.opendataloader.pdf.entities.SemanticFormula; +import org.opendataloader.pdf.entities.SemanticPicture; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticCaption; +import org.verapdf.wcag.algorithms.entities.SemanticHeading; +import org.verapdf.wcag.algorithms.entities.SemanticNode; +import org.verapdf.wcag.algorithms.entities.SemanticParagraph; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.content.TextLine; +import org.verapdf.wcag.algorithms.entities.enums.SemanticType; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.entities.lists.ListItem; +import org.verapdf.wcag.algorithms.entities.lists.PDFList; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderRow; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.TreeSet; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Transforms Hancom AI HOCR SDK API responses into IObject hierarchy. + * + *

    The merged JSON from {@link HancomAIClient} contains results from three modules: + *

      + *
    • {@code DOCUMENT_LAYOUT_WITH_OCR} — objects with label + bbox + ocrtext
    • + *
    • {@code TABLE_STRUCTURE_RECOGNITION} — table cells with html + bbox
    • + *
    • {@code IMAGE_CAPTIONING} — per-page captions
    • + *
    + * + *

    Label Mapping (DLA integer labels → IObject types)

    + *
    + *   0  → DocTitle    (SemanticHeading level 1)
    + *   1  → ParaTitle   (SemanticHeading level 2)
    + *   2  → ParaText    (SemanticParagraph)
    + *   3  → ListText    (SemanticParagraph)
    + *   4  → RegionTitle (SemanticHeading level 3)
    + *   5  → Date        (currently passed through as paragraph text)
    + *   6  → OtherText   (SemanticParagraph)
    + *   7  → Regionlist  (Table/List region, handled via TABLE_STRUCTURE_RECOGNITION or as list)
    + *   8  → TableName   (SemanticCaption linked to nearest Table)
    + *   9  → Table       (handled via TABLE_STRUCTURE_RECOGNITION)
    + *  10  → Figure      (SemanticPicture)
    + *  11  → FigureName  (SemanticCaption linked to nearest Figure)
    + *  12  → Equation    (SemanticFormula)
    + *  13  → Footnote    (SemanticFootnote → FENote)
    + *  14  → PageHeader  (filtered)
    + *  15  → PageFooter  (filtered)
    + *  16  → Number      (currently passed through as paragraph text)
    + *  17  → PageNumber  (filtered)
    + * 
    + * + *

    Coordinate System

    + *

    Hancom AI uses TOPLEFT origin with [left, top, right, bottom] pixel coordinates. + * OpenDataLoader uses BOTTOMLEFT origin in PDF points. Conversion requires page height + * and DPI scaling (API renders at 300 DPI → 1 pixel = 72/300 points). + */ +public class HancomAISchemaTransformer implements HybridSchemaTransformer { + + private static final Logger LOGGER = Logger.getLogger(HancomAISchemaTransformer.class.getCanonicalName()); + + private static final String BACKEND_TYPE = "hancom-ai"; + + // DLA label constants + // DLA label codes — authoritative table from the hancom-ai backend + // (0-indexed). Names mirror the backend's classification labels so + // grepping the codebase for "ParaText" or "DocTitle" matches what the + // model actually reports. + private static final int LABEL_DOC_TITLE = 0; + private static final int LABEL_PARA_TITLE = 1; + private static final int LABEL_PARA_TEXT = 2; + private static final int LABEL_LIST_TEXT = 3; + private static final int LABEL_REGION_TITLE = 4; + private static final int LABEL_DATE = 5; + private static final int LABEL_OTHER_TEXT = 6; + private static final int LABEL_REGIONLIST = 7; + private static final int LABEL_TABLE_NAME = 8; + private static final int LABEL_TABLE = 9; + private static final int LABEL_FIGURE = 10; + private static final int LABEL_FIGURE_NAME = 11; + private static final int LABEL_EQUATION = 12; + private static final int LABEL_FOOTNOTE = 13; + private static final int LABEL_PAGE_HEADER = 14; + private static final int LABEL_PAGE_FOOTER = 15; + private static final int LABEL_NUMBER = 16; + private static final int LABEL_PAGE_NUMBER = 17; + + // DPI conversion: API renders at 300 DPI, PDF uses 72 DPI + private static final double PIXEL_TO_POINT = 72.0 / 300.0; + + // Minimum intersection-over-word-area ratio for bbox matching + private static final double WORD_CELL_OVERLAP_THRESHOLD = 0.5; + + // Bullet/number prefix pattern for list items + private static final Pattern BULLET_PREFIX_PATTERN = Pattern.compile( + "^(\u2022|\u2013|\u2014|-|\\d+[.)::]|[a-zA-Z][.):])(\\s+)"); + + /** + * Holds text and bounding box for a DLA+OCR word-level object. + */ + private static class WordInfo { + final String text; + final BoundingBox bbox; + + WordInfo(String text, BoundingBox bbox) { + this.text = text; + this.bbox = bbox; + } + } + + private int pictureIndex; + private String regionlistStrategy = HybridConfig.REGIONLIST_TABLE_FIRST; + private Map elementMetadataMap = new LinkedHashMap<>(); + private Map> ocrWordsByPage = new HashMap<>(); + + @Override + public Map getElementMetadata() { + return Collections.unmodifiableMap(elementMetadataMap); + } + + @Override + public void rekeyMetadata(Map oldToNew) { + if (oldToNew == null || oldToNew.isEmpty() || elementMetadataMap.isEmpty()) return; + Map rebuilt = new LinkedHashMap<>(elementMetadataMap.size()); + for (Map.Entry entry : elementMetadataMap.entrySet()) { + Long mapped = oldToNew.get(entry.getKey()); + rebuilt.put(mapped != null ? mapped : entry.getKey(), entry.getValue()); + } + elementMetadataMap = rebuilt; + } + + @Override + public Map> getOcrWordsByPage() { + return Collections.unmodifiableMap(ocrWordsByPage); + } + + /** + * Sets the regionlist strategy for label 7 handling. + * + * @param regionlistStrategy the strategy ("table-first" or "list-only") + */ + public void setRegionlistStrategy(String regionlistStrategy) { + this.regionlistStrategy = regionlistStrategy; + } + + /** + * Gets the regionlist strategy. + * + * @return the current regionlist strategy + */ + public String getRegionlistStrategy() { + return regionlistStrategy; + } + + @Override + public String getBackendType() { + return BACKEND_TYPE; + } + + @Override + public List> transform(HybridResponse response, Map pageHeights) { + JsonNode json = response.getJson(); + if (json == null) { + LOGGER.log(Level.WARNING, "HybridResponse JSON is null"); + return Collections.emptyList(); + } + + pictureIndex = 0; + elementMetadataMap.clear(); + ocrWordsByPage.clear(); + + // Get DLA+OCR results (primary source for layout + text) + JsonNode dlaOcr = json.get("DOCUMENT_LAYOUT_WITH_OCR"); + JsonNode tables = json.get("TABLE_STRUCTURE_RECOGNITION"); + JsonNode figureCaptions = json.get("FIGURE_CAPTIONS"); + + // Determine page count from DLA results + List dlaPages = extractPages(dlaOcr); + int numPages = Math.max(dlaPages.size(), pageHeights != null ? + pageHeights.keySet().stream().mapToInt(Integer::intValue).max().orElse(0) : 0); + + // Initialize result + List> result = new ArrayList<>(numPages); + for (int i = 0; i < numPages; i++) { + result.add(new ArrayList<>()); + } + + // Build per-figure caption lookup: "pageNum:objectId" → caption + Map figureCaptionMap = buildFigureCaptionMap(figureCaptions); + + // Build map: page_number -> list of TSR table entries + // New format: TSR is an ArrayNode of per-table entries with dla_bbox + tsr sub-object + Map> tablesByPage = new LinkedHashMap<>(); + JsonNode tsrArray = json.get("TABLE_STRUCTURE_RECOGNITION"); + if (tsrArray != null && tsrArray.isArray()) { + // Check if this is new format (array of table entries with "tsr" sub-object) + // or old format (nested array of pages with "cells" directly) + boolean isNewFormat = false; + if (tsrArray.size() > 0) { + JsonNode first = tsrArray.get(0); + isNewFormat = first.isObject() && (first.has("tsr") || first.has("dla_bbox")); + } + + if (isNewFormat) { + for (JsonNode entry : tsrArray) { + int pageNum = entry.has("page_number") ? entry.get("page_number").asInt() : -1; + if (pageNum >= 0) { + tablesByPage.computeIfAbsent(pageNum, k -> new ArrayList<>()).add(entry); + } + } + } else { + // Legacy format: extract pages and wrap each in a synthetic entry + Map legacyTableByPage = extractTablePages(tsrArray); + for (Map.Entry e : legacyTableByPage.entrySet()) { + JsonNode legacyPage = e.getValue(); + // Wrap legacy page as a table entry with tsr = the page itself + // and dla_bbox derived from table_bbox (page-level coords in legacy format) + com.fasterxml.jackson.databind.node.ObjectNode syntheticEntry = + new com.fasterxml.jackson.databind.ObjectMapper().createObjectNode(); + syntheticEntry.put("page_number", e.getKey()); + JsonNode legacyTableBbox = legacyPage.get("table_bbox"); + if (legacyTableBbox != null) { + syntheticEntry.set("dla_bbox", legacyTableBbox); + } + syntheticEntry.set("tsr", legacyPage); + tablesByPage.computeIfAbsent(e.getKey(), k -> new ArrayList<>()).add(syntheticEntry); + } + } + } + + // Collect all heading heights (label 1 and 4) across all pages for level inference + Map headingHeightToLevel = buildHeadingHeightToLevelMap(dlaPages); + + // Collect per-page word info for cell-word bbox matching + Map> wordsByPage = collectWordsByPage(dlaPages, pageHeights); + + // Expose OCR word data for enrichment fallback + for (Map.Entry> entry : wordsByPage.entrySet()) { + List ocrWords = new ArrayList<>(entry.getValue().size()); + for (WordInfo wi : entry.getValue()) { + ocrWords.add(new OcrWordInfo(wi.text, wi.bbox)); + } + ocrWordsByPage.put(entry.getKey(), ocrWords); + } + + // Process DLA+OCR objects + for (int i = 0; i < dlaPages.size(); i++) { + JsonNode page = dlaPages.get(i); + int pageNumber = page.has("page_number") ? page.get("page_number").asInt() : i; + if (pageNumber >= result.size()) { + while (result.size() <= pageNumber) result.add(new ArrayList<>()); + } + + double pageHeight = getPageHeight(pageNumber, pageHeights, page); + + // Collect TSR table bboxes for this page (used by label 7 overlap check) + // Use dla_bbox (page-level coords) for overlap check, not tsr.table_bbox (crop-relative) + List tsrTableBboxes = new ArrayList<>(); + List pageTables = tablesByPage.getOrDefault(pageNumber, Collections.emptyList()); + for (JsonNode tableEntry : pageTables) { + JsonNode dlaBbox = tableEntry.get("dla_bbox"); + if (dlaBbox != null && dlaBbox.isArray() && dlaBbox.size() >= 4) { + tsrTableBboxes.add(extractBoundingBox(dlaBbox, pageNumber, pageHeight)); + } + } + + JsonNode objects = page.get("objects"); + if (objects == null || !objects.isArray()) continue; + + for (JsonNode obj : objects) { + IObject iobj = transformObject(obj, pageNumber, pageHeight, figureCaptionMap, + headingHeightToLevel, tsrTableBboxes); + + if (iobj != null) { + result.get(pageNumber).add(iobj); + } + } + + // Add tables from TABLE_STRUCTURE_RECOGNITION if available + List pageWords = wordsByPage.getOrDefault(pageNumber, Collections.emptyList()); + for (JsonNode tableEntry : pageTables) { + IObject table = transformTableEntry(tableEntry, pageNumber, pageHeight, pageWords); + if (table != null) { + result.get(pageNumber).add(table); + } + } + } + + // Sort each page by reading order (top to bottom) + for (List pageContents : result) { + pageContents.sort((a, b) -> { + double aTop = a.getBoundingBox() != null ? -a.getBoundingBox().getTopY() : 0; + double bTop = b.getBoundingBox() != null ? -b.getBoundingBox().getTopY() : 0; + int cmp = Double.compare(aTop, bTop); + if (cmp != 0) return cmp; + double aLeft = a.getBoundingBox() != null ? a.getBoundingBox().getLeftX() : 0; + double bLeft = b.getBoundingBox() != null ? b.getBoundingBox().getLeftX() : 0; + return Double.compare(aLeft, bLeft); + }); + } + + // Post-process: group consecutive ListItem objects into PDFList instances + for (int i = 0; i < result.size(); i++) { + result.set(i, groupListItems(result.get(i))); + } + + // Post-process: link SemanticCaption objects to nearest Table/Picture + for (List pageContents : result) { + linkCaptionsToFloats(pageContents); + } + + return result; + } + + @Override + public List transformPage(int pageNumber, JsonNode pageContent, double pageHeight) { + int idx = pageNumber - 1; + Map heights = new HashMap<>(); + heights.put(pageNumber, pageHeight); + + // transform() consumes the merged Hancom shape keyed by DOCUMENT_LAYOUT_WITH_OCR. + // When the caller passes a raw single-page DLA node (no wrapper), rewrap it so + // extractPages() can find it; otherwise transform() sees no pages and returns empty. + JsonNode wrapped = pageContent; + if (pageContent != null && pageContent.get("DOCUMENT_LAYOUT_WITH_OCR") == null) { + ObjectNode page = pageContent.isObject() + ? ((ObjectNode) pageContent).deepCopy() + : JsonNodeFactory.instance.objectNode(); + page.put("page_number", idx); + ArrayNode pages = JsonNodeFactory.instance.arrayNode(); + pages.add(page); + ObjectNode root = JsonNodeFactory.instance.objectNode(); + root.set("DOCUMENT_LAYOUT_WITH_OCR", pages); + wrapped = root; + } + + HybridResponse wrapper = new HybridResponse("", wrapped, Collections.emptyMap()); + List> all = transform(wrapper, heights); + if (idx >= 0 && idx < all.size()) return all.get(idx); + return all.isEmpty() ? Collections.emptyList() : all.get(0); + } + + /** + * Transforms a single DLA object to an IObject based on its label. + */ + private IObject transformObject(JsonNode obj, int pageIndex, double pageHeight, + Map figureCaptionMap, + Map headingHeightToLevel, + List tsrTableBboxes) { + int label = obj.has("label") ? obj.get("label").asInt() : -1; + + // Skip furniture + if (label == LABEL_PAGE_HEADER || label == LABEL_PAGE_FOOTER || label == LABEL_PAGE_NUMBER) { + return null; + } + + JsonNode bboxNode = obj.get("bbox"); + if (bboxNode == null || !bboxNode.isArray() || bboxNode.size() < 4) { + return null; + } + + BoundingBox bbox = extractBoundingBox(bboxNode, pageIndex, pageHeight); + String text = obj.has("ocrtext") ? obj.get("ocrtext").asText("") : ""; + + IObject iobj; + switch (label) { + case LABEL_DOC_TITLE: + iobj = createHeading(text, bbox, 1); + break; + case LABEL_PARA_TITLE: + case LABEL_REGION_TITLE: { + double pixelHeight = bboxNode.get(3).asDouble() - bboxNode.get(1).asDouble(); + int level = headingHeightToLevel.getOrDefault(pixelHeight, 2); + iobj = createHeading(text, bbox, level); + break; + } + + case LABEL_LIST_TEXT: + iobj = text.isEmpty() ? null : createListItem(text, bbox); + break; + + case LABEL_TABLE_NAME: + case LABEL_FIGURE_NAME: + iobj = text.isEmpty() ? null : createCaption(text, bbox); + break; + + case LABEL_FOOTNOTE: + iobj = text.isEmpty() ? null : createFootnote(text, bbox); + break; + + case LABEL_PARA_TEXT: + case LABEL_OTHER_TEXT: + case LABEL_DATE: + case LABEL_NUMBER: + // Date and Number are textual annotations on the page + // (e.g. "March 2024", "€42.00") — distinct from LABEL_PAGE_NUMBER + // which carries the page-number footer/header. Listing them as + // explicit cases keeps the routing intent visible and prevents + // future silent misrouting if the default branch behavior + // changes. + iobj = text.isEmpty() ? null : createParagraph(text, bbox); + break; + + case LABEL_REGIONLIST: + if (HybridConfig.REGIONLIST_LIST_ONLY.equals(regionlistStrategy)) { + // list-only: always treat as list, skip TSR check + iobj = text.isEmpty() ? null : createListFromText(text, bbox); + } else { + // table-first (default): if TSR covers it, skip (table handled separately) + if (hasOverlappingTsr(bbox, tsrTableBboxes)) return null; + // No TSR data — treat as list (parse text by newlines into ListItems) + iobj = text.isEmpty() ? null : createListFromText(text, bbox); + } + break; + + case LABEL_TABLE: + // Table regions are handled separately by transformTableEntry() via TSR + return null; + + case LABEL_FIGURE: { + // Look up per-figure caption from IMAGE_CAPTIONING + int objectId = obj.has("object_id") ? obj.get("object_id").asInt() : -1; + String key = pageIndex + ":" + objectId; + String caption = figureCaptionMap.get(key); + iobj = createPicture(bbox, caption); + break; + } + + case LABEL_EQUATION: + iobj = createFormula(text, bbox); + break; + + default: + iobj = text.isEmpty() ? null : createParagraph(text, bbox); + break; + } + + // Hancom AI DLA reports each object's overall detection score in the + // "confidence" field (numeric, 0..1). The per-word "score" entries + // inside "words" are OCR confidences, not object scores. + double aiScore = -1.0; + if (obj.has("confidence")) { + aiScore = obj.get("confidence").asDouble(-1.0); + } + + // Map AI score to correctSemanticScore (only for SemanticNode subtypes) + if (iobj instanceof SemanticNode && aiScore >= 0.0) { + ((SemanticNode) iobj).setCorrectSemanticScore(aiScore); + } + + // Produce ElementMetadata for this IObject + if (iobj != null && iobj.getRecognizedStructureId() != null) { + // Carry the raw DLA detection id so downstream tooling (evidence + // report) can line a reading-ordered node back to its DLA row + // without re-matching by bbox. Same field the FIGURE branch + // already reads — pulled out here so every label gets it. + int rawObjectId = obj.has("object_id") ? obj.get("object_id").asInt() : -1; + ElementMetadata meta = new ElementMetadata() + .setAiScore(aiScore) + .setSourceLabel(label) + .setDlaObjectId(rawObjectId); + + if (label == LABEL_PARA_TITLE || label == LABEL_REGION_TITLE) { + double pixelHeight = bboxNode.get(3).asDouble() - bboxNode.get(1).asDouble(); + meta.setHeadingInferenceMethod("bbox-height") + .setBboxHeightPx(pixelHeight); + } else if (label == LABEL_DOC_TITLE) { + meta.setHeadingInferenceMethod("fixed"); + } else if (label == LABEL_FIGURE) { + int objectId = obj.has("object_id") ? obj.get("object_id").asInt() : -1; + String key = pageIndex + ":" + objectId; + String captionText = figureCaptionMap.get(key); + if (captionText != null) { + ElementMetadata.CaptionMetadata capMeta = new ElementMetadata.CaptionMetadata(); + capMeta.setText(captionText); + capMeta.setLanguage(detectLanguage(captionText)); + meta.setCaption(capMeta); + } + } else if (label == LABEL_REGIONLIST) { + ElementMetadata.RegionlistResolution rlRes = new ElementMetadata.RegionlistResolution(); + rlRes.setStrategy(regionlistStrategy); + if (HybridConfig.REGIONLIST_LIST_ONLY.equals(regionlistStrategy)) { + rlRes.setTsrAttempted(false); + } else { + rlRes.setTsrAttempted(true); + rlRes.setTsrResult(hasOverlappingTsr(bbox, tsrTableBboxes) ? "success" : "no-cells"); + } + meta.setRegionlistResolution(rlRes); + } + + elementMetadataMap.put(iobj.getRecognizedStructureId(), meta); + } + + return iobj; + } + + /** + * Transforms a single TSR table entry to a TableBorder. + * Accepts the new per-table entry format with {@code dla_bbox} (crop origin in page pixels) + * and {@code tsr} sub-object containing cells with array-format rowspan/colspan. + * + *

    Cell bboxes are relative to the crop image. They are converted to page-level coordinates + * by adding the crop origin ({@code dla_bbox} left/top). + * + * @param tableEntry a TSR table entry with {@code dla_bbox} and {@code tsr} fields + * @param pageWords DLA+OCR word-level objects from the page for bbox matching + */ + private IObject transformTableEntry(JsonNode tableEntry, int pageIndex, double pageHeight, + List pageWords) { + JsonNode tsr = tableEntry.get("tsr"); + if (tsr == null || tsr.isEmpty()) return null; + + JsonNode cellsNode = tsr.get("cells"); + if (cellsNode == null || !cellsNode.isArray() || cellsNode.size() == 0) { + return null; + } + + // DLA bbox = crop origin in page pixels (300DPI, top-left origin) + JsonNode dlaBbox = tableEntry.get("dla_bbox"); + double cropOriginLeft = 0; + double cropOriginTop = 0; + if (dlaBbox != null && dlaBbox.isArray() && dlaBbox.size() >= 4) { + cropOriginLeft = dlaBbox.get(0).asDouble(); + cropOriginTop = dlaBbox.get(1).asDouble(); + } + + // Compute table bbox in page coordinates. dla_bbox is the padded crop + // rectangle written by HancomAIClient (after TSR_CROP_PADDING expansion + // and image-bounds clamping), so using it directly inflates the table + // and its fallback grid cells by the padding. Prefer tsr.table_bbox + // (the table's true extent in crop-local coordinates) offset by the + // crop origin; fall back to padded dla_bbox only when TSR did not + // report its own table_bbox. + BoundingBox tableBbox; + JsonNode tsrTableBbox = tsr.get("table_bbox"); + if (tsrTableBbox != null && tsrTableBbox.isArray() && tsrTableBbox.size() >= 4) { + double[] pageBbox = new double[] { + cropOriginLeft + tsrTableBbox.get(0).asDouble(), + cropOriginTop + tsrTableBbox.get(1).asDouble(), + cropOriginLeft + tsrTableBbox.get(2).asDouble(), + cropOriginTop + tsrTableBbox.get(3).asDouble() + }; + tableBbox = extractBoundingBox(createBboxNode(pageBbox), pageIndex, pageHeight); + } else if (dlaBbox != null && dlaBbox.isArray() && dlaBbox.size() >= 4) { + tableBbox = extractBoundingBox(dlaBbox, pageIndex, pageHeight); + } else { + return null; + } + + // Determine dimensions from array rowspan/colspan + int numRows = 0; + int numCols = 0; + for (JsonNode cell : cellsNode) { + JsonNode rs = cell.get("rowspan"); + JsonNode cs = cell.get("colspan"); + if (rs != null && rs.isArray()) { + for (int i = 0; i < rs.size(); i++) { + numRows = Math.max(numRows, rs.get(i).asInt() + 1); + } + } else if (rs != null && rs.isNumber()) { + // backward compat: integer format + int row = cell.has("row") ? cell.get("row").asInt() : 0; + numRows = Math.max(numRows, row + rs.asInt()); + } + if (cs != null && cs.isArray()) { + for (int i = 0; i < cs.size(); i++) { + numCols = Math.max(numCols, cs.get(i).asInt() + 1); + } + } else if (cs != null && cs.isNumber()) { + int col = cell.has("col") ? cell.get("col").asInt() : 0; + numCols = Math.max(numCols, col + cs.asInt()); + } + } + + if (numRows == 0 || numCols == 0) return null; + + TableBorder table = new TableBorder(numRows, numCols); + table.setBoundingBox(tableBbox); + table.setRecognizedStructureId(StaticLayoutContainers.incrementContentId()); + + double rowHeight = (tableBbox.getTopY() - tableBbox.getBottomY()) / numRows; + double colWidth = (tableBbox.getRightX() - tableBbox.getLeftX()) / numCols; + + // Initialize rows + for (int r = 0; r < numRows; r++) { + double rowTop = tableBbox.getTopY() - (r * rowHeight); + double rowBottom = rowTop - rowHeight; + TableBorderRow borderRow = new TableBorderRow(r, numCols, 0L); + borderRow.setBoundingBox(new BoundingBox(pageIndex, + tableBbox.getLeftX(), rowBottom, tableBbox.getRightX(), rowTop)); + table.getRows()[r] = borderRow; + + for (int c = 0; c < numCols; c++) { + TableBorderCell emptyCell = new TableBorderCell(r, c, 1, 1, 0L); + emptyCell.setSemanticType(r == 0 ? SemanticType.TABLE_HEADER : SemanticType.TABLE_CELL); + emptyCell.setBoundingBox(new BoundingBox(pageIndex, + tableBbox.getLeftX() + c * colWidth, rowBottom, + tableBbox.getLeftX() + (c + 1) * colWidth, rowTop)); + table.getRows()[r].getCells()[c] = emptyCell; + } + } + + // Fill cells from API with bbox-matched word content + for (JsonNode cellNode : cellsNode) { + JsonNode rowspanArr = cellNode.get("rowspan"); + JsonNode colspanArr = cellNode.get("colspan"); + + int startRow, rowspan, startCol, colspan; + + if (rowspanArr != null && rowspanArr.isArray() && rowspanArr.size() > 0) { + startRow = rowspanArr.get(0).asInt(); + rowspan = rowspanArr.size(); + } else if (rowspanArr != null && rowspanArr.isNumber()) { + // backward compat: integer format + startRow = cellNode.has("row") ? cellNode.get("row").asInt() : 0; + rowspan = rowspanArr.asInt(); + } else { + startRow = 0; + rowspan = 1; + } + + if (colspanArr != null && colspanArr.isArray() && colspanArr.size() > 0) { + startCol = colspanArr.get(0).asInt(); + colspan = colspanArr.size(); + } else if (colspanArr != null && colspanArr.isNumber()) { + startCol = cellNode.has("col") ? cellNode.get("col").asInt() : 0; + colspan = colspanArr.asInt(); + } else { + startCol = 0; + colspan = 1; + } + + // Guard against malformed TSR JSON: negative indices or non-positive spans + // would otherwise crash TableBorderCell construction or index table.getRows() + // out of bounds below. + if (startRow < 0 || startCol < 0 || rowspan <= 0 || colspan <= 0 + || startRow >= numRows || startCol >= numCols) { + LOGGER.log(Level.FINE, + "Skipping TSR cell with invalid span: row={0}, col={1}, rowspan={2}, colspan={3}", + new Object[]{startRow, startCol, rowspan, colspan}); + continue; + } + // Clamp spans so the fill loop below never writes past the grid edge. + rowspan = Math.min(rowspan, numRows - startRow); + colspan = Math.min(colspan, numCols - startCol); + { + TableBorderCell cell = new TableBorderCell(startRow, startCol, rowspan, colspan, 0L); + cell.setSemanticType(startRow == 0 ? SemanticType.TABLE_HEADER : SemanticType.TABLE_CELL); + + // Compute cell bbox: use TSR cell bbox if available, otherwise fall back to grid + BoundingBox cellBbox; + JsonNode cellBboxNode = cellNode.get("bbox"); + if (cellBboxNode != null && cellBboxNode.isArray() && cellBboxNode.size() >= 4) { + // Convert cell bbox from crop coords to page coords by adding crop origin + double pageCellLeft = cropOriginLeft + cellBboxNode.get(0).asDouble(); + double pageCellTop = cropOriginTop + cellBboxNode.get(1).asDouble(); + double pageCellRight = cropOriginLeft + cellBboxNode.get(2).asDouble(); + double pageCellBottom = cropOriginTop + cellBboxNode.get(3).asDouble(); + + // Convert page pixels (300DPI, top-left) → PDF points (72DPI, bottom-left) + double left = pageCellLeft * PIXEL_TO_POINT; + double right = pageCellRight * PIXEL_TO_POINT; + double topY = pageHeight - (pageCellTop * PIXEL_TO_POINT); + double bottomY = pageHeight - (pageCellBottom * PIXEL_TO_POINT); + cellBbox = new BoundingBox(pageIndex, left, bottomY, right, topY); + } else { + double cellLeft = tableBbox.getLeftX() + startCol * colWidth; + double cellRight = cellLeft + colspan * colWidth; + double cellTop = tableBbox.getTopY() - startRow * rowHeight; + double cellBottom = cellTop - rowspan * rowHeight; + cellBbox = new BoundingBox(pageIndex, cellLeft, cellBottom, cellRight, cellTop); + } + cell.setBoundingBox(cellBbox); + + // Match words to this cell via bbox intersection + String matchedText = matchWordsToCell(cellBbox, pageWords); + + // Fallback to TSR text field if no words matched + if (matchedText.isEmpty()) { + String tsrText = cellNode.has("text") ? cellNode.get("text").asText("") : ""; + // Always add a paragraph (even empty) so the cell has a /K child. + // Adobe Acrobat ignores table structure when cells lack children. + cell.addContentObject(createParagraph(tsrText.isEmpty() ? "" : tsrText, cellBbox)); + } else { + cell.addContentObject(createParagraph(matchedText, cellBbox)); + } + + table.getRows()[startRow].getCells()[startCol] = cell; + + // Mark all positions covered by this cell's span with the same instance so the + // PDF emission loop in AutoTaggingProcessor.addTableRow (which skips slots where + // cell.getRowNumber()/getColNumber() don't match the current row/col) omits them. + // Otherwise the empty 1x1 placeholders at those slots would be emitted as TR + // children, producing rows whose effective column count exceeds the table's + // numCols — PDF/UA-2 clause 8.2.5.26 "Table rows shall have the same number of + // columns (taking into account column spans)". + for (int r = startRow; r < startRow + rowspan && r < numRows; r++) { + for (int c = startCol; c < startCol + colspan && c < numCols; c++) { + if (r == startRow && c == startCol) continue; + table.getRows()[r].getCells()[c] = cell; + } + } + } + } + + // Produce ElementMetadata for the table + double tableAiScore = tableEntry.has("confidence") + ? tableEntry.get("confidence").asDouble(-1.0) : -1.0; + int tableRawObjectId = tableEntry.has("object_id") + ? tableEntry.get("object_id").asInt() : -1; + ElementMetadata tableMeta = new ElementMetadata() + .setAiScore(tableAiScore) + .setSourceLabel(tableEntry.has("label") ? tableEntry.get("label").asInt() : LABEL_TABLE) + .setDlaObjectId(tableRawObjectId); + if (tsr != null) { + ElementMetadata.TsrMetadata tsrMeta = new ElementMetadata.TsrMetadata(); + tsrMeta.setNumCells(tsr.has("num_cells") ? tsr.get("num_cells").asInt() : 0); + tsrMeta.setHtml(tsr.has("html") ? tsr.get("html").asText("") : ""); + tsrMeta.setRunTimeMs(tsr.has("run_time") ? tsr.get("run_time").asLong() : 0); + tableMeta.setTsr(tsrMeta); + } + elementMetadataMap.put(table.getRecognizedStructureId(), tableMeta); + + return table; + } + + // --- Helper: cell-word bbox matching --- + + /** + * Collects per-page word info (text + bbox in PDF points) from all DLA+OCR objects. + * Uses individual word-level entries from the {@code words[]} array when available, + * falling back to object-level ocrtext + bbox otherwise. + * Excludes furniture labels (14, 15, 17). + * + *

    Word-level collection is critical for table cell-word bbox matching: + * object-level bbox covers the entire table, but individual word bboxes + * can be matched to specific cells. + */ + private Map> collectWordsByPage(List dlaPages, + Map pageHeights) { + Map> wordsByPage = new HashMap<>(); + + for (int i = 0; i < dlaPages.size(); i++) { + JsonNode page = dlaPages.get(i); + int pageNumber = page.has("page_number") ? page.get("page_number").asInt() : i; + double pageHeight = getPageHeight(pageNumber, pageHeights, page); + + JsonNode objects = page.get("objects"); + if (objects == null || !objects.isArray()) continue; + + List words = new ArrayList<>(); + for (JsonNode obj : objects) { + int label = obj.has("label") ? obj.get("label").asInt() : -1; + // Skip furniture labels + if (label == LABEL_PAGE_HEADER || label == LABEL_PAGE_FOOTER || label == LABEL_PAGE_NUMBER) { + continue; + } + + // Prefer individual words from words[] array (each has its own bbox) + JsonNode wordsArr = obj.get("words"); + if (wordsArr != null && wordsArr.isArray() && wordsArr.size() > 0) { + for (JsonNode word : wordsArr) { + String wordText = word.has("text") ? word.get("text").asText("") : ""; + if (wordText.isEmpty()) continue; + + JsonNode wordBbox = word.get("bbox"); + if (wordBbox == null || !wordBbox.isArray() || wordBbox.size() < 4) continue; + + // Word bbox is 8-point polygon [x1,y1,x2,y2,x3,y3,x4,y4] or 4-point [l,t,r,b] + // Convert to [left, top, right, bottom] in 300DPI pixels + double[] ltrb = wordBboxToLTRB(wordBbox); + JsonNode syntheticBbox = createBboxNode(ltrb); + BoundingBox bbox = extractBoundingBox(syntheticBbox, pageNumber, pageHeight); + words.add(new WordInfo(wordText, bbox)); + } + } else { + // Fallback: use object-level ocrtext + bbox + String text = obj.has("ocrtext") ? obj.get("ocrtext").asText("") : ""; + if (text.isEmpty()) continue; + + JsonNode bboxNode = obj.get("bbox"); + if (bboxNode == null || !bboxNode.isArray() || bboxNode.size() < 4) continue; + + BoundingBox bbox = extractBoundingBox(bboxNode, pageNumber, pageHeight); + words.add(new WordInfo(text, bbox)); + } + } + + if (!words.isEmpty()) { + wordsByPage.put(pageNumber, words); + } + } + + return wordsByPage; + } + + /** + * Converts word bbox from 8-point polygon [x1,y1,x2,y2,x3,y3,x4,y4] or + * 4-point [left,top,right,bottom] to [left, top, right, bottom]. + */ + private static double[] wordBboxToLTRB(JsonNode wordBbox) { + if (wordBbox.size() >= 8) { + // 8-point polygon: find min/max of x and y coordinates + double minX = Double.MAX_VALUE, minY = Double.MAX_VALUE; + double maxX = -Double.MAX_VALUE, maxY = -Double.MAX_VALUE; + for (int j = 0; j < wordBbox.size(); j += 2) { + double x = wordBbox.get(j).asDouble(); + double y = wordBbox.get(j + 1).asDouble(); + minX = Math.min(minX, x); + minY = Math.min(minY, y); + maxX = Math.max(maxX, x); + maxY = Math.max(maxY, y); + } + return new double[]{minX, minY, maxX, maxY}; + } else { + // 4-point: [left, top, right, bottom] + return new double[]{ + wordBbox.get(0).asDouble(), wordBbox.get(1).asDouble(), + wordBbox.get(2).asDouble(), wordBbox.get(3).asDouble() + }; + } + } + + private JsonNode createBboxNode(double[] ltrb) { + com.fasterxml.jackson.databind.node.ArrayNode arr = + new com.fasterxml.jackson.databind.ObjectMapper().createArrayNode(); + for (double v : ltrb) arr.add(v); + return arr; + } + + /** + * Matches DLA+OCR words to a cell by bbox intersection. + * A word belongs to a cell if intersection_area / word_area > 0.5. + * Matched words are sorted by reading order (top-to-bottom, left-to-right) and joined with space. + * + * @return joined text of matched words, or empty string if no matches + */ + private String matchWordsToCell(BoundingBox cellBbox, List pageWords) { + if (pageWords == null || pageWords.isEmpty()) { + return ""; + } + + List matched = new ArrayList<>(); + for (WordInfo word : pageWords) { + double wordArea = bboxArea(word.bbox); + if (wordArea <= 0) continue; + + double intersection = bboxIntersectionArea(cellBbox, word.bbox); + if (intersection / wordArea > WORD_CELL_OVERLAP_THRESHOLD) { + matched.add(word); + } + } + + if (matched.isEmpty()) { + return ""; + } + + // Sort by reading order: top-to-bottom (descending topY), then left-to-right + matched.sort((a, b) -> { + int cmp = Double.compare(b.bbox.getTopY(), a.bbox.getTopY()); // higher topY = higher on page + if (cmp != 0) return cmp; + return Double.compare(a.bbox.getLeftX(), b.bbox.getLeftX()); + }); + + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < matched.size(); i++) { + if (i > 0) sb.append(' '); + sb.append(matched.get(i).text); + } + return sb.toString(); + } + + /** + * Computes the intersection area of two bounding boxes (both in PDF points, bottom-left origin). + */ + private double bboxIntersectionArea(BoundingBox a, BoundingBox b) { + double left = Math.max(a.getLeftX(), b.getLeftX()); + double right = Math.min(a.getRightX(), b.getRightX()); + double bottom = Math.max(a.getBottomY(), b.getBottomY()); + double top = Math.min(a.getTopY(), b.getTopY()); + if (left >= right || bottom >= top) return 0.0; + return (right - left) * (top - bottom); + } + + /** + * Computes the area of a bounding box. + */ + private double bboxArea(BoundingBox b) { + double w = b.getRightX() - b.getLeftX(); + double h = b.getTopY() - b.getBottomY(); + return (w > 0 && h > 0) ? w * h : 0.0; + } + + // --- Helper: TSR overlap check for label 7 --- + + /** + * Checks if any TSR table bbox overlaps with the given region bbox by more than 50%. + * Used to determine if a label 7 (Regionlist/Table) region is already covered by TSR data. + */ + private boolean hasOverlappingTsr(BoundingBox regionBbox, List tsrTableBboxes) { + if (tsrTableBboxes == null || tsrTableBboxes.isEmpty()) return false; + + double regionArea = bboxArea(regionBbox); + if (regionArea <= 0) return false; + + for (BoundingBox tsrBbox : tsrTableBboxes) { + double intersection = bboxIntersectionArea(regionBbox, tsrBbox); + if (intersection / regionArea > WORD_CELL_OVERLAP_THRESHOLD) { + return true; + } + } + return false; + } + + /** + * Creates a PDFList from text by splitting on newlines. + * Each non-empty line becomes a ListItem with bullet detection. + */ + private PDFList createListFromText(String text, BoundingBox bbox) { + String[] lines = text.split("\n"); + List items = new ArrayList<>(); + + int lineCount = 0; + for (String line : lines) { + String trimmed = line.trim(); + if (trimmed.isEmpty()) continue; + lineCount++; + } + + // Compute approximate per-item height + double itemHeight = (lineCount > 0 && bbox != null) + ? (bbox.getTopY() - bbox.getBottomY()) / lineCount : 0; + + int index = 0; + for (String line : lines) { + String trimmed = line.trim(); + if (trimmed.isEmpty()) continue; + + // Approximate per-line bbox + BoundingBox itemBbox = bbox != null + ? new BoundingBox(bbox.getPageNumber(), + bbox.getLeftX(), bbox.getTopY() - (index + 1) * itemHeight, + bbox.getRightX(), bbox.getTopY() - index * itemHeight) + : new BoundingBox(); + + items.add(createListItem(trimmed, itemBbox)); + index++; + } + + if (items.isEmpty()) return null; + + return buildPDFList(items); + } + + // --- Helper: heading level inference --- + + /** + * Collects all label 1 (heading) and label 4 (subheading) bbox heights across all pages, + * then assigns heading levels H2~H6 based on descending height order. + * + *

    Taller bbox = bigger font = higher level (H2). + * Shorter bbox = smaller font = lower level (H3, H4, ...). + * Same height = same level. Capped at H6. + * Single unique height defaults to H2. + * + * @return map from pixel height to heading level (2~6) + */ + private Map buildHeadingHeightToLevelMap(List dlaPages) { + // Collect unique heights using TreeSet (natural descending order via reverseOrder) + TreeSet uniqueHeights = new TreeSet<>(Collections.reverseOrder()); + + for (JsonNode page : dlaPages) { + JsonNode objects = page.get("objects"); + if (objects == null || !objects.isArray()) continue; + + for (JsonNode obj : objects) { + int label = obj.has("label") ? obj.get("label").asInt() : -1; + if (label != LABEL_PARA_TITLE && label != LABEL_REGION_TITLE) continue; + + JsonNode bboxNode = obj.get("bbox"); + if (bboxNode == null || !bboxNode.isArray() || bboxNode.size() < 4) continue; + + double pixelHeight = bboxNode.get(3).asDouble() - bboxNode.get(1).asDouble(); + if (pixelHeight > 0) { + uniqueHeights.add(pixelHeight); + } + } + } + + // Assign levels: tallest → H2, next → H3, ... capped at H6 + Map heightToLevel = new HashMap<>(); + int level = 2; + for (Double height : uniqueHeights) { + heightToLevel.put(height, Math.min(level, 6)); + level++; + } + + return heightToLevel; + } + + // --- Helper: extract pages from RESULT --- + + private List extractPages(JsonNode moduleResult) { + List pages = new ArrayList<>(); + if (moduleResult == null || !moduleResult.isArray()) return pages; + + // RESULT is [[page0, page1, ...]] (nested array) + JsonNode inner = moduleResult.size() > 0 && moduleResult.get(0).isArray() + ? moduleResult.get(0) : moduleResult; + + for (JsonNode page : inner) { + if (page.isObject()) { + pages.add(page); + } + } + return pages; + } + + /** + * Builds a lookup map from FIGURE_CAPTIONS: "pageNumber:objectId" → caption text. + */ + private Map buildFigureCaptionMap(JsonNode figureCaptions) { + Map map = new HashMap<>(); + if (figureCaptions == null || !figureCaptions.isArray()) return map; + + for (JsonNode cap : figureCaptions) { + int pageNum = cap.has("page_number") ? cap.get("page_number").asInt() : -1; + int objectId = cap.has("object_id") ? cap.get("object_id").asInt() : -1; + String caption = cap.has("caption") ? cap.get("caption").asText("") : ""; + if (pageNum >= 0 && objectId >= 0 && !caption.isEmpty()) { + map.put(pageNum + ":" + objectId, caption); + } + } + return map; + } + + /** + * Extracts table pages from legacy TSR format (nested array). + * Used only for backward compatibility with old TSR format. + */ + private Map extractTablePages(JsonNode tableResult) { + Map map = new HashMap<>(); + if (tableResult == null) return map; + + for (JsonNode page : extractPages(tableResult)) { + int pageNum = page.has("page_number") ? page.get("page_number").asInt() : -1; + if (pageNum >= 0) { + map.put(pageNum, page); + } + } + return map; + } + + // --- Helper: page height --- + + private double getPageHeight(int pageNumber, Map pageHeights, JsonNode page) { + // pageHeights uses 1-indexed keys + Double h = pageHeights != null ? pageHeights.get(pageNumber + 1) : null; + if (h != null) return h; + + // Derive from image dimensions (API renders at 300 DPI) + if (page.has("image_height")) { + return page.get("image_height").asDouble() * PIXEL_TO_POINT; + } + return 842.0; // A4 default + } + + // --- Helper: coordinate conversion --- + + /** + * Converts from Hancom AI pixel coordinates [left, top, right, bottom] (TOPLEFT origin, 300 DPI) + * to OpenDataLoader PDF points (BOTTOMLEFT origin, 72 DPI). + */ + private BoundingBox extractBoundingBox(JsonNode bboxNode, int pageIndex, double pageHeight) { + double pixLeft = bboxNode.get(0).asDouble(); + double pixTop = bboxNode.get(1).asDouble(); + double pixRight = bboxNode.get(2).asDouble(); + double pixBottom = bboxNode.get(3).asDouble(); + + // Pixel → PDF points + double left = pixLeft * PIXEL_TO_POINT; + double right = pixRight * PIXEL_TO_POINT; + + // TOPLEFT → BOTTOMLEFT + double topY = pageHeight - (pixTop * PIXEL_TO_POINT); + double bottomY = pageHeight - (pixBottom * PIXEL_TO_POINT); + + return new BoundingBox(pageIndex, left, bottomY, right, topY); + } + + // --- Helper: IObject creation --- + + private SemanticParagraph createParagraph(String text, BoundingBox bbox) { + TextChunk textChunk = new TextChunk(bbox, text, 12.0, 12.0); + textChunk.adjustSymbolEndsToBoundingBox(null); + TextLine textLine = new TextLine(textChunk); + + SemanticParagraph paragraph = new SemanticParagraph(); + paragraph.add(textLine); + paragraph.setRecognizedStructureId(StaticLayoutContainers.incrementContentId()); + paragraph.setCorrectSemanticScore(1.0); + return paragraph; + } + + private SemanticHeading createHeading(String text, BoundingBox bbox, int level) { + TextChunk textChunk = new TextChunk(bbox, text, 12.0, 12.0); + textChunk.adjustSymbolEndsToBoundingBox(null); + TextLine textLine = new TextLine(textChunk); + + SemanticHeading heading = new SemanticHeading(); + heading.add(textLine); + heading.setRecognizedStructureId(StaticLayoutContainers.incrementContentId()); + heading.setHeadingLevel(level); + heading.setCorrectSemanticScore(1.0); + return heading; + } + + private SemanticPicture createPicture(BoundingBox bbox, String caption) { + SemanticPicture picture = new SemanticPicture(bbox, ++pictureIndex, caption); + picture.setRecognizedStructureId(StaticLayoutContainers.incrementContentId()); + return picture; + } + + private SemanticFormula createFormula(String text, BoundingBox bbox) { + SemanticFormula formula = new SemanticFormula(bbox, text); + formula.setRecognizedStructureId(StaticLayoutContainers.incrementContentId()); + return formula; + } + + private SemanticCaption createCaption(String text, BoundingBox bbox) { + TextChunk textChunk = new TextChunk(bbox, text, 12.0, 12.0); + textChunk.adjustSymbolEndsToBoundingBox(null); + TextLine textLine = new TextLine(textChunk); + SemanticCaption caption = new SemanticCaption(); + caption.add(textLine); + caption.setRecognizedStructureId(StaticLayoutContainers.incrementContentId()); + caption.setCorrectSemanticScore(1.0); + return caption; + } + + private SemanticFootnote createFootnote(String text, BoundingBox bbox) { + TextChunk textChunk = new TextChunk(bbox, text, 12.0, 12.0); + textChunk.adjustSymbolEndsToBoundingBox(null); + TextLine textLine = new TextLine(textChunk); + SemanticFootnote footnote = new SemanticFootnote(); + footnote.add(textLine); + footnote.setRecognizedStructureId(StaticLayoutContainers.incrementContentId()); + footnote.setCorrectSemanticScore(1.0); + return footnote; + } + + private ListItem createListItem(String text, BoundingBox bbox) { + TextChunk textChunk = new TextChunk(bbox, text, 12.0, 12.0); + textChunk.adjustSymbolEndsToBoundingBox(null); + TextLine textLine = new TextLine(textChunk); + + ListItem item = new ListItem(bbox, StaticLayoutContainers.incrementContentId()); + item.add(textLine); + item.setLabelLength(detectBulletPrefixLength(text)); + return item; + } + + // --- Helper: caption-float linking post-processing --- + + /** + * Links each {@link SemanticCaption} to the nearest Table or Picture on the same page + * by setting {@code linkedContentId} to the float's {@code recognizedStructureId}. + */ + private void linkCaptionsToFloats(List pageContents) { + List captions = new ArrayList<>(); + List floats = new ArrayList<>(); + for (IObject obj : pageContents) { + if (obj instanceof SemanticCaption) { + captions.add((SemanticCaption) obj); + } + if (obj instanceof TableBorder || obj instanceof SemanticPicture) { + floats.add(obj); + } + } + for (SemanticCaption cap : captions) { + IObject nearest = findNearestFloat(cap, floats); + if (nearest != null) { + cap.setLinkedContentId(nearest.getRecognizedStructureId()); + } + } + } + + /** + * Finds the float (Table or Picture) nearest to the caption by center Y distance. + */ + private IObject findNearestFloat(SemanticCaption caption, List floats) { + if (floats.isEmpty() || caption.getBoundingBox() == null) { + return null; + } + double captionCenterY = caption.getBoundingBox().getCenterY(); + IObject nearest = null; + double minDist = Double.MAX_VALUE; + for (IObject f : floats) { + if (f.getBoundingBox() == null) continue; + double dist = Math.abs(f.getBoundingBox().getCenterY() - captionCenterY); + if (dist < minDist) { + minDist = dist; + nearest = f; + } + } + return nearest; + } + + // --- Helper: list grouping post-processing --- + + /** + * Groups consecutive {@link ListItem} objects into {@link PDFList} instances. + * Any non-ListItem object breaks the current run and starts a new list. + */ + private List groupListItems(List pageContents) { + List grouped = new ArrayList<>(); + List currentRun = new ArrayList<>(); + + for (IObject obj : pageContents) { + if (obj instanceof ListItem) { + currentRun.add((ListItem) obj); + } else { + if (!currentRun.isEmpty()) { + grouped.add(buildPDFList(currentRun)); + currentRun = new ArrayList<>(); + } + grouped.add(obj); + } + } + + // Flush remaining run + if (!currentRun.isEmpty()) { + grouped.add(buildPDFList(currentRun)); + } + + return grouped; + } + + /** + * Builds a {@link PDFList} from a run of {@link ListItem} objects. + * Computes union bounding box and assigns a structure ID. + */ + private PDFList buildPDFList(List items) { + PDFList list = new PDFList(); + list.setRecognizedStructureId(StaticLayoutContainers.incrementContentId()); + + // Carry forward item-level metadata to the new PDFList ID. DocumentProcessor + // .remapMetadataToContents() keys on top-level content IDs, and grouping + // replaces top-level ListItems with this PDFList — without this copy, the + // list's source label / confidence / regionlist-resolution provenance is + // dropped from the final JSON. + if (!items.isEmpty()) { + Long firstItemId = items.get(0).getRecognizedStructureId(); + ElementMetadata firstItemMeta = firstItemId != null + ? elementMetadataMap.get(firstItemId) + : null; + if (firstItemMeta != null) { + elementMetadataMap.put(list.getRecognizedStructureId(), firstItemMeta); + } + } + + double minLeft = Double.MAX_VALUE; + double minBottom = Double.MAX_VALUE; + double maxRight = -Double.MAX_VALUE; + double maxTop = -Double.MAX_VALUE; + int pageNumber = 0; + + for (ListItem item : items) { + list.add(item); + BoundingBox itemBbox = item.getBoundingBox(); + if (itemBbox != null) { + pageNumber = itemBbox.getPageNumber(); + minLeft = Math.min(minLeft, itemBbox.getLeftX()); + minBottom = Math.min(minBottom, itemBbox.getBottomY()); + maxRight = Math.max(maxRight, itemBbox.getRightX()); + maxTop = Math.max(maxTop, itemBbox.getTopY()); + } + } + + if (minLeft != Double.MAX_VALUE) { + list.setBoundingBox(new BoundingBox(pageNumber, minLeft, minBottom, maxRight, maxTop)); + } + + return list; + } + + /** + * Simple language detection heuristic: if the text contains any CJK character, returns "ko"; + * otherwise returns "en". + */ + static String detectLanguage(String text) { + if (text == null) return "en"; + for (int i = 0; i < text.length(); i++) { + char c = text.charAt(i); + if (Character.UnicodeScript.of(c) == Character.UnicodeScript.HANGUL + || Character.UnicodeScript.of(c) == Character.UnicodeScript.HAN + || Character.UnicodeScript.of(c) == Character.UnicodeScript.HIRAGANA + || Character.UnicodeScript.of(c) == Character.UnicodeScript.KATAKANA) { + return "ko"; + } + } + return "en"; + } + + /** + * Detects bullet/number prefix in text and returns its length (including trailing space). + * Returns 0 if no bullet prefix is found. + */ + static int detectBulletPrefixLength(String text) { + if (text == null || text.isEmpty()) { + return 0; + } + Matcher matcher = BULLET_PREFIX_PATTERN.matcher(text); + if (matcher.find()) { + return matcher.end(); + } + return 0; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HancomClient.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HancomClient.java new file mode 100644 index 0000000..1ee91fd --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HancomClient.java @@ -0,0 +1,306 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import okhttp3.MediaType; +import okhttp3.MultipartBody; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; +import okhttp3.ResponseBody; + +import java.io.IOException; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.TimeUnit; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * HTTP client for Hancom Document AI API. + * + *

    This client communicates with the Hancom Document AI backend service + * for PDF processing. The workflow is: + *

      + *
    1. Upload PDF file to /v1/dl/files/upload
    2. + *
    3. Request visual info extraction from /v1/dl/files/{fileId}/visualinfo
    4. + *
    5. Delete the file from server after processing
    6. + *
    + * + *

    The client ensures cleanup (file deletion) even when processing fails. + * + * @see HybridClient + * @see HybridConfig + */ +public class HancomClient implements HybridClient { + + private static final Logger LOGGER = Logger.getLogger(HancomClient.class.getCanonicalName()); + + /** Default URL for Hancom Document AI API. */ + public static final String DEFAULT_URL = "https://dataloader.cloud.hancom.com/studio-lite/api"; + + private static final String UPLOAD_ENDPOINT = "/v1/dl/files/upload"; + private static final String VISUALINFO_ENDPOINT = "/v1/dl/files/%s/visualinfo"; + private static final String DELETE_ENDPOINT = "/v1/dl/files/%s"; + + private static final String DEFAULT_FILENAME = "document.pdf"; + private static final MediaType MEDIA_TYPE_PDF = MediaType.parse("application/pdf"); + + // Query parameters for visualinfo + private static final String ENGINE = "pdf_ai_dl"; + private static final String DLA_MODE = "ENABLED"; + private static final String OCR_MODE = "FORCE"; + + private static final int HEALTH_CHECK_TIMEOUT_MS = 3000; + + private final String baseUrl; + private final OkHttpClient httpClient; + private final ObjectMapper objectMapper; + + /** + * Creates a new HancomClient with the specified configuration. + * + * @param config The hybrid configuration containing URL and timeout settings. + */ + public HancomClient(HybridConfig config) { + String effectiveUrl = config.getEffectiveUrl("hancom"); + this.baseUrl = effectiveUrl != null ? normalizeUrl(effectiveUrl) : DEFAULT_URL; + this.objectMapper = new ObjectMapper(); + this.httpClient = new OkHttpClient.Builder() + .connectTimeout(config.getTimeoutMs(), TimeUnit.MILLISECONDS) + .readTimeout(config.getTimeoutMs(), TimeUnit.MILLISECONDS) + .writeTimeout(config.getTimeoutMs(), TimeUnit.MILLISECONDS) + .build(); + } + + /** + * Creates a new HancomClient with a custom OkHttpClient (for testing). + * + * @param baseUrl The base URL of the Hancom API. + * @param httpClient The OkHttp client to use for requests. + * @param objectMapper The Jackson ObjectMapper for JSON parsing. + */ + HancomClient(String baseUrl, OkHttpClient httpClient, ObjectMapper objectMapper) { + this.baseUrl = normalizeUrl(baseUrl); + this.httpClient = httpClient; + this.objectMapper = objectMapper; + } + + @Override + public void checkAvailability() throws IOException { + OkHttpClient healthClient = httpClient.newBuilder() + .connectTimeout(HEALTH_CHECK_TIMEOUT_MS, TimeUnit.MILLISECONDS) + .readTimeout(HEALTH_CHECK_TIMEOUT_MS, TimeUnit.MILLISECONDS) + .build(); + + Request request = new Request.Builder() + .url(baseUrl) + .head() + .build(); + + try (Response response = healthClient.newCall(request).execute()) { + // Any HTTP response (including 4xx/5xx) means the server is reachable. + // Hancom API requires authentication for all endpoints, so a 401/403 + // is expected and still proves connectivity. + } catch (IOException e) { + throw new IOException( + "Hybrid server is not available at " + baseUrl + "\n" + + "Please check the server URL and ensure the Hancom API is accessible.\n" + + "Or pass --hybrid-fallback to fall back to Java-only output for this run.\n" + + "Or run without --hybrid flag for Java-only processing.", e); + } + } + + @Override + public HybridResponse convert(HybridRequest request) throws IOException { + String fileId = null; + try { + // Step 1: Upload PDF + fileId = uploadFile(request.getPdfBytes()); + LOGGER.log(Level.FINE, "Uploaded file with ID: {0}", fileId); + + // Step 2: Get visual info + JsonNode visualInfo = getVisualInfo(fileId); + LOGGER.log(Level.FINE, "Retrieved visual info for file: {0}", fileId); + + return new HybridResponse(null, visualInfo, null); + } finally { + // Step 3: Always cleanup + if (fileId != null) { + deleteFile(fileId); + } + } + } + + @Override + public CompletableFuture convertAsync(HybridRequest request) { + return CompletableFuture.supplyAsync(() -> { + try { + return convert(request); + } catch (IOException e) { + throw new IllegalStateException("Failed to convert", e); + } + }); + } + + /** + * Gets the base URL of this client. + * + * @return The base URL. + */ + public String getBaseUrl() { + return baseUrl; + } + + /** + * Uploads a PDF file to the Hancom API. + * + * @param pdfBytes The PDF file bytes. + * @return The file ID assigned by the server. + * @throws IOException If the upload fails. + */ + private String uploadFile(byte[] pdfBytes) throws IOException { + MultipartBody requestBody = new MultipartBody.Builder() + .setType(MultipartBody.FORM) + .addFormDataPart("file", DEFAULT_FILENAME, + RequestBody.create(pdfBytes, MEDIA_TYPE_PDF)) + .build(); + + Request request = new Request.Builder() + .url(baseUrl + UPLOAD_ENDPOINT) + .post(requestBody) + .build(); + + try (Response response = httpClient.newCall(request).execute()) { + if (!response.isSuccessful()) { + ResponseBody body = response.body(); + String bodyStr = body != null ? body.string() : ""; + throw new IOException("Hancom upload failed with status " + response.code() + ": " + bodyStr); + } + + ResponseBody body = response.body(); + if (body == null) { + throw new IOException("Empty response body from upload"); + } + + JsonNode root = objectMapper.readTree(body.string()); + // Response format: {"codeNum":0,"code":"file.upload.success","data":{"fileId":"...",...}} + JsonNode dataNode = root.get("data"); + if (dataNode == null) { + throw new IOException("Invalid upload response: missing data field"); + } + JsonNode fileIdNode = dataNode.get("fileId"); + if (fileIdNode == null || !fileIdNode.isTextual()) { + throw new IOException("Invalid upload response: missing fileId in data"); + } + + return fileIdNode.asText(); + } + } + + /** + * Retrieves visual info for an uploaded file. + * + * @param fileId The file ID from upload. + * @return The visual info JSON response. + * @throws IOException If the request fails. + */ + private JsonNode getVisualInfo(String fileId) throws IOException { + String url = baseUrl + String.format(VISUALINFO_ENDPOINT, fileId) + + "?engine=" + ENGINE + + "&dlaMode=" + DLA_MODE + + "&ocrMode=" + OCR_MODE; + + Request request = new Request.Builder() + .url(url) + .get() + .build(); + + try (Response response = httpClient.newCall(request).execute()) { + if (!response.isSuccessful()) { + ResponseBody body = response.body(); + String bodyStr = body != null ? body.string() : ""; + throw new IOException("Hancom visualinfo failed with status " + response.code() + ": " + bodyStr); + } + + ResponseBody body = response.body(); + if (body == null) { + throw new IOException("Empty response body from visualinfo"); + } + + return objectMapper.readTree(body.string()); + } + } + + /** + * Deletes an uploaded file from the server. + * + *

    This method silently ignores any errors to ensure cleanup + * doesn't interfere with the main processing result. + * + * @param fileId The file ID to delete. + */ + private void deleteFile(String fileId) { + String url = baseUrl + String.format(DELETE_ENDPOINT, fileId); + + Request request = new Request.Builder() + .url(url) + .delete() + .build(); + + try (Response response = httpClient.newCall(request).execute()) { + if (response.isSuccessful()) { + LOGGER.log(Level.FINE, "Deleted file: {0}", fileId); + } else { + LOGGER.log(Level.WARNING, "Failed to delete file {0}: {1}", + new Object[]{fileId, response.code()}); + } + } catch (IOException e) { + LOGGER.log(Level.WARNING, "Error deleting file " + fileId, e); + } + } + + /** + * Normalizes a URL by removing trailing slashes. + */ + private static String normalizeUrl(String url) { + if (url != null && url.endsWith("/")) { + return url.substring(0, url.length() - 1); + } + return url; + } + + /** + * Shuts down the HTTP client and releases all resources. + * + *

    This gracefully shuts down the dispatcher's executor service, + * allowing the JVM to exit cleanly. Idle connections are evicted + * from the connection pool. + */ + public void shutdown() { + httpClient.dispatcher().executorService().shutdown(); + httpClient.connectionPool().evictAll(); + if (httpClient.cache() != null) { + try { + httpClient.cache().close(); + } catch (Exception ignored) { + // Ignore cache close errors + } + } + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HancomSchemaTransformer.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HancomSchemaTransformer.java new file mode 100644 index 0000000..8084eb7 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HancomSchemaTransformer.java @@ -0,0 +1,554 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import com.fasterxml.jackson.databind.JsonNode; +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.opendataloader.pdf.entities.SemanticFormula; +import org.opendataloader.pdf.entities.SemanticPicture; +import org.opendataloader.pdf.hybrid.HybridClient.HybridResponse; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticHeading; +import org.verapdf.wcag.algorithms.entities.SemanticParagraph; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.content.TextLine; +import org.verapdf.wcag.algorithms.entities.enums.SemanticType; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderRow; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * Transforms Hancom VisualInfoDto JSON output to OpenDataLoader IObject hierarchy. + * + *

    This transformer handles the Hancom Document AI response format and converts + * its elements (PARAGRAPH, HEADING, TABLE, FIGURE, etc.) to the equivalent IObject + * types used by OpenDataLoader's downstream processors and generators. + * + *

    Schema Mapping

    + *
      + *
    • PARAGRAPH → SemanticParagraph
    • + *
    • HEADING → SemanticHeading
    • + *
    • TABLE → TableBorder with rows and cells
    • + *
    • FIGURE → SemanticPicture
    • + *
    • FORMULA → SemanticFormula
    • + *
    • LIST_ITEM → SemanticParagraph
    • + *
    • PAGE_HEADER, PAGE_FOOTER → Filtered out (furniture)
    • + *
    + * + *

    Coordinate System

    + *

    Hancom uses TOPLEFT origin with (left, top, width, height) format. + * OpenDataLoader uses BOTTOMLEFT origin with (left, bottom, right, top) format. + * This transformer handles the coordinate conversion. + * + *

    Thread Safety

    + *

    This class is NOT thread-safe. The {@code transform()} method resets + * internal state (pictureIndex) at the start of each call. Concurrent calls + * to transform() on the same instance may produce incorrect results. + * Use separate instances for concurrent transformations. + */ +public class HancomSchemaTransformer implements HybridSchemaTransformer { + + private static final Logger LOGGER = Logger.getLogger(HancomSchemaTransformer.class.getCanonicalName()); + + private static final String BACKEND_TYPE = "hancom"; + + // Picture index counter (reset per transform call) + private int pictureIndex; + + // Hancom element types + private static final String TYPE_PARAGRAPH = "PARAGRAPH"; + private static final String TYPE_HEADING = "HEADING"; + private static final String TYPE_TABLE = "TABLE"; + private static final String TYPE_FIGURE = "FIGURE"; + private static final String TYPE_FORMULA = "FORMULA"; + private static final String TYPE_LIST_ITEM = "LIST_ITEM"; + private static final String TYPE_PAGE_HEADER = "PAGE_HEADER"; + private static final String TYPE_PAGE_FOOTER = "PAGE_FOOTER"; + + @Override + public String getBackendType() { + return BACKEND_TYPE; + } + + @Override + public List> transform(HybridResponse response, Map pageHeights) { + JsonNode json = response.getJson(); + if (json == null) { + LOGGER.log(Level.WARNING, "HybridResponse JSON is null, returning empty result"); + return Collections.emptyList(); + } + + // Reset picture index for each transform call + pictureIndex = 0; + + // Determine number of pages + int numPages = determinePageCount(json, pageHeights); + + // Initialize result list + List> result = new ArrayList<>(numPages); + for (int i = 0; i < numPages; i++) { + result.add(new ArrayList<>()); + } + + // Transform elements + JsonNode elements = json.get("elements"); + if (elements != null && elements.isArray()) { + for (JsonNode element : elements) { + transformElement(element, result, pageHeights); + } + } + + // Sort each page's contents by reading order (top to bottom, left to right) + for (List pageContents : result) { + sortByReadingOrder(pageContents); + } + + return result; + } + + @Override + public List transformPage(int pageNumber, JsonNode pageContent, double pageHeight) { + Map pageHeights = new HashMap<>(); + pageHeights.put(pageNumber, pageHeight); + + // Create a wrapper response with just this page's content + HybridResponse singlePageResponse = new HybridResponse("", pageContent, Collections.emptyMap()); + List> result = transform(singlePageResponse, pageHeights); + + if (result.isEmpty()) { + return Collections.emptyList(); + } + + // Find the page in the result (pageIndex is 0-based, pageNumber is 1-based) + int pageIndex = pageNumber - 1; + if (pageIndex >= 0 && pageIndex < result.size()) { + return result.get(pageIndex); + } + + // If result has content but page index doesn't match, return first page + if (!result.isEmpty() && !result.get(0).isEmpty()) { + return result.get(0); + } + + return Collections.emptyList(); + } + + /** + * Determines the number of pages from the JSON response. + */ + private int determinePageCount(JsonNode json, Map pageHeights) { + // First check pageHeights if provided + if (pageHeights != null && !pageHeights.isEmpty()) { + return pageHeights.keySet().stream().mapToInt(Integer::intValue).max().orElse(0); + } + + // Check pageSizes array + JsonNode pageSizes = json.get("pageSizes"); + if (pageSizes != null && pageSizes.isArray()) { + return pageSizes.size(); + } + + // Scan elements for max pageIndex + return scanElementsForPageCount(json); + } + + /** + * Scans elements to determine page count. + */ + private int scanElementsForPageCount(JsonNode json) { + int maxPage = 0; + + JsonNode elements = json.get("elements"); + if (elements != null && elements.isArray()) { + for (JsonNode element : elements) { + JsonNode pageIndex = element.get("pageIndex"); + if (pageIndex != null && pageIndex.isInt()) { + maxPage = Math.max(maxPage, pageIndex.asInt() + 1); // pageIndex is 0-based + } + } + } + + return Math.max(maxPage, 1); // At least 1 page + } + + /** + * Transforms a single Hancom element to an IObject. + */ + private void transformElement(JsonNode element, List> result, Map pageHeights) { + // Get category type + JsonNode category = element.get("category"); + if (category == null) { + LOGGER.log(Level.FINE, "Element missing category, skipping"); + return; + } + + String type = getTextValue(category, "type"); + if (type == null) { + LOGGER.log(Level.FINE, "Element category missing type, skipping"); + return; + } + + // Skip furniture elements (page headers/footers) + if (TYPE_PAGE_HEADER.equals(type) || TYPE_PAGE_FOOTER.equals(type)) { + return; + } + + // Get page index (0-based) + int pageIndex = element.has("pageIndex") ? element.get("pageIndex").asInt() : 0; + + // Ensure result list is large enough + while (result.size() <= pageIndex) { + result.add(new ArrayList<>()); + } + + // Get bounding box + JsonNode bboxNode = element.get("bbox"); + if (bboxNode == null) { + LOGGER.log(Level.FINE, "Element missing bbox, skipping"); + return; + } + + // Get page height for coordinate conversion + Double pageHeight = pageHeights != null ? pageHeights.get(pageIndex + 1) : null; + if (pageHeight == null) { + // Try to get from pageSizes + pageHeight = 842.0; // Default A4 height + } + + BoundingBox bbox = extractBoundingBox(bboxNode, pageIndex, pageHeight); + + // Get content + JsonNode contentNode = element.get("content"); + String text = contentNode != null ? getTextValue(contentNode, "text") : null; + if (text == null) { + text = ""; + } + + // Create appropriate IObject based on type + IObject object = null; + + switch (type) { + case TYPE_PARAGRAPH: + case TYPE_LIST_ITEM: + object = createParagraph(text, bbox); + break; + case TYPE_HEADING: + object = createHeading(text, bbox); + break; + case TYPE_TABLE: + object = transformTable(element, bbox, pageIndex, pageHeight); + break; + case TYPE_FIGURE: + object = createPicture(bbox); + break; + case TYPE_FORMULA: + object = createFormula(text, bbox); + break; + default: + // Unknown type, treat as paragraph if has text + if (!text.isEmpty()) { + object = createParagraph(text, bbox); + } + break; + } + + if (object != null) { + result.get(pageIndex).add(object); + } + } + + /** + * Creates a SemanticParagraph. + */ + private SemanticParagraph createParagraph(String text, BoundingBox bbox) { + TextChunk textChunk = new TextChunk(bbox, text, 12.0, 12.0); + textChunk.adjustSymbolEndsToBoundingBox(null); + TextLine textLine = new TextLine(textChunk); + + SemanticParagraph paragraph = new SemanticParagraph(); + paragraph.add(textLine); + paragraph.setRecognizedStructureId(StaticLayoutContainers.incrementContentId()); + // Set semantic score to avoid NullPointerException in ListUtils.isContainsHeading() + paragraph.setCorrectSemanticScore(1.0); + + return paragraph; + } + + /** + * Creates a SemanticHeading. + */ + private SemanticHeading createHeading(String text, BoundingBox bbox) { + TextChunk textChunk = new TextChunk(bbox, text, 12.0, 12.0); + textChunk.adjustSymbolEndsToBoundingBox(null); + TextLine textLine = new TextLine(textChunk); + + SemanticHeading heading = new SemanticHeading(); + heading.add(textLine); + heading.setRecognizedStructureId(StaticLayoutContainers.incrementContentId()); + heading.setHeadingLevel(1); // Default level + // Set semantic score to avoid NullPointerException in ListUtils.isContainsHeading() + heading.setCorrectSemanticScore(1.0); + + return heading; + } + + /** + * Creates a SemanticFormula. + */ + private SemanticFormula createFormula(String latex, BoundingBox bbox) { + SemanticFormula formula = new SemanticFormula(bbox, latex); + formula.setRecognizedStructureId(StaticLayoutContainers.incrementContentId()); + return formula; + } + + /** + * Creates a SemanticPicture. + */ + private SemanticPicture createPicture(BoundingBox bbox) { + SemanticPicture picture = new SemanticPicture(bbox, ++pictureIndex, null); + picture.setRecognizedStructureId(StaticLayoutContainers.incrementContentId()); + return picture; + } + + /** + * Transforms a Hancom table element to a TableBorder. + * + *

    Hancom API returns table data in this structure: + *

    +     * {
    +     *   "content": {
    +     *     "text": "...",
    +     *     "html": "<table>...</table>",
    +     *     "table": {
    +     *       "cells": [
    +     *         {"cellId": "0", "rowspan": [0], "colspan": [0], "bbox": {...}, "text": "..."},
    +     *         ...
    +     *       ]
    +     *     }
    +     *   }
    +     * }
    +     * 
    + */ + private TableBorder transformTable(JsonNode element, BoundingBox tableBbox, + int pageIndex, double pageHeight) { + // Get table cells from content.table.cells + JsonNode contentNode = element.get("content"); + if (contentNode == null) { + LOGGER.log(Level.FINE, "Table element missing content, skipping"); + return null; + } + + // Hancom API: cells are in content.table.cells + JsonNode tableNode = contentNode.get("table"); + if (tableNode == null) { + LOGGER.log(Level.FINE, "Table element missing content.table, skipping"); + return null; + } + + JsonNode cellsNode = tableNode.get("cells"); + if (cellsNode == null || !cellsNode.isArray() || cellsNode.size() == 0) { + LOGGER.log(Level.FINE, "Table missing cells, skipping"); + return null; + } + + // Determine table dimensions from cells + int numRows = 0; + int numCols = 0; + Map cellMap = new HashMap<>(); + + for (JsonNode cell : cellsNode) { + JsonNode rowspanNode = cell.get("rowspan"); + JsonNode colspanNode = cell.get("colspan"); + + if (rowspanNode != null && rowspanNode.isArray() && rowspanNode.size() > 0) { + int maxRow = 0; + for (JsonNode r : rowspanNode) { + maxRow = Math.max(maxRow, r.asInt() + 1); + } + numRows = Math.max(numRows, maxRow); + } + + if (colspanNode != null && colspanNode.isArray() && colspanNode.size() > 0) { + int maxCol = 0; + for (JsonNode c : colspanNode) { + maxCol = Math.max(maxCol, c.asInt() + 1); + } + numCols = Math.max(numCols, maxCol); + } + + // Store cell by row,col key + int row = rowspanNode != null && rowspanNode.size() > 0 ? rowspanNode.get(0).asInt() : 0; + int col = colspanNode != null && colspanNode.size() > 0 ? colspanNode.get(0).asInt() : 0; + String key = row + "," + col; + cellMap.put(key, cell); + } + + if (numRows == 0 || numCols == 0) { + return null; + } + + // Create TableBorder + TableBorder table = new TableBorder(numRows, numCols); + table.setBoundingBox(tableBbox); + table.setRecognizedStructureId(StaticLayoutContainers.incrementContentId()); + + // Build table structure + double rowHeight = (tableBbox.getTopY() - tableBbox.getBottomY()) / numRows; + double colWidth = (tableBbox.getRightX() - tableBbox.getLeftX()) / numCols; + + // Pass 1: Initialize all row containers to prevent NPE when backfilling spans + for (int row = 0; row < numRows; row++) { + TableBorderRow borderRow = new TableBorderRow(row, numCols, 0L); + double rowTop = tableBbox.getTopY() - (row * rowHeight); + double rowBottom = rowTop - rowHeight; + borderRow.setBoundingBox(new BoundingBox(pageIndex, + tableBbox.getLeftX(), rowBottom, tableBbox.getRightX(), rowTop)); + table.getRows()[row] = borderRow; + } + + // Pass 2: Fill cells with proper span backfill + for (int row = 0; row < numRows; row++) { + TableBorderRow borderRow = table.getRows()[row]; + + for (int col = 0; col < numCols; col++) { + if (borderRow.getCells()[col] != null) { + continue; + } + + String key = row + "," + col; + JsonNode cellNode = cellMap.get(key); + + int rowSpan = 1; + int colSpan = 1; + String cellText = ""; + + if (cellNode != null) { + JsonNode rowspanNode = cellNode.get("rowspan"); + JsonNode colspanNode = cellNode.get("colspan"); + + rowSpan = rowspanNode != null ? rowspanNode.size() : 1; + colSpan = colspanNode != null ? colspanNode.size() : 1; + + cellText = getTextValue(cellNode, "text"); + if (cellText == null) { + cellText = ""; + } + } + + int effectiveRowSpan = Math.max(1, Math.min(rowSpan, numRows - row)); + int effectiveColSpan = Math.max(1, Math.min(colSpan, numCols - col)); + + TableBorderCell cell = new TableBorderCell(row, col, effectiveRowSpan, effectiveColSpan, 0L); + cell.setSemanticType(row == 0 ? SemanticType.TABLE_HEADER : SemanticType.TABLE_CELL); + double cellLeft = tableBbox.getLeftX() + (col * colWidth); + double cellRight = cellLeft + (effectiveColSpan * colWidth); + double cellTop = tableBbox.getTopY() - (row * rowHeight); + double cellBottom = cellTop - (effectiveRowSpan * rowHeight); + cell.setBoundingBox(new BoundingBox(pageIndex, cellLeft, cellBottom, cellRight, cellTop)); + + // Add cell content if present + if (!cellText.isEmpty()) { + SemanticParagraph content = createParagraph(cellText, cell.getBoundingBox()); + cell.addContentObject(content); + } + + borderRow.getCells()[col] = cell; + + // Backfill: assign same cell instance to all slots it covers + // All target rows are guaranteed to exist from Pass 1 + for (int r = row; r < row + effectiveRowSpan; r++) { + for (int c = col; c < col + effectiveColSpan; c++) { + table.getRows()[r].getCells()[c] = cell; + } + } + } + } + + return table; + } + + /** + * Extracts a BoundingBox from Hancom bbox JSON. + * + *

    Hancom uses TOPLEFT origin with {left, top, width, height} format. + * OpenDataLoader uses BOTTOMLEFT origin with {left, bottom, right, top} format. + * + * @param bboxNode The bbox JSON node with left, top, width, height fields + * @param pageIndex The 0-indexed page number + * @param pageHeight The page height for coordinate transformation + * @return A BoundingBox in OpenDataLoader format + */ + private BoundingBox extractBoundingBox(JsonNode bboxNode, int pageIndex, double pageHeight) { + if (bboxNode == null) { + return new BoundingBox(pageIndex, 0, 0, 0, 0); + } + + double left = bboxNode.has("left") ? bboxNode.get("left").asDouble() : 0; + double top = bboxNode.has("top") ? bboxNode.get("top").asDouble() : 0; + double width = bboxNode.has("width") ? bboxNode.get("width").asDouble() : 0; + double height = bboxNode.has("height") ? bboxNode.get("height").asDouble() : 0; + + // Convert from TOPLEFT to BOTTOMLEFT origin + // In TOPLEFT: top is distance from top of page + // In BOTTOMLEFT: bottom is distance from bottom of page + double right = left + width; + double bottomY = pageHeight - top - height; // Convert top distance to bottom coordinate + double topY = pageHeight - top; // Convert top distance to top coordinate + + return new BoundingBox(pageIndex, left, bottomY, right, topY); + } + + /** + * Gets a text value from a JSON node. + */ + private String getTextValue(JsonNode node, String fieldName) { + if (node != null && node.has(fieldName)) { + JsonNode field = node.get(fieldName); + if (field.isTextual()) { + return field.asText(); + } + } + return null; + } + + /** + * Sorts page contents by reading order (top to bottom, left to right). + */ + private void sortByReadingOrder(List contents) { + contents.sort(new Comparator() { + @Override + public int compare(IObject o1, IObject o2) { + // Sort by top Y (descending - higher on page first) + double topDiff = o2.getTopY() - o1.getTopY(); + if (Math.abs(topDiff) > 5.0) { // Use tolerance for same-line detection + return topDiff > 0 ? 1 : -1; + } + // Same line, sort by left X (ascending) + return Double.compare(o1.getLeftX(), o2.getLeftX()); + } + }); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HybridClient.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HybridClient.java new file mode 100644 index 0000000..17fbe99 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HybridClient.java @@ -0,0 +1,435 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import com.fasterxml.jackson.databind.JsonNode; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.EnumSet; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.concurrent.CompletableFuture; + +/** + * Interface for hybrid PDF processing backends. + * + *

    Hybrid processing routes pages to external AI backends (like docling, hancom, azure) + * for advanced document parsing capabilities such as table structure extraction and OCR. + * + *

    Implementations of this interface provide HTTP client integration with specific backends. + */ +public interface HybridClient { + + /** + * Optional: fetch the backend's {@code /health} (or equivalent) payload + * for reference-environment metadata (hardware, model identifiers, + * backend version). Best-effort — returns {@code null} when the backend + * has no such endpoint or the call fails. The default returns + * {@code null}; implementations that have a health endpoint should + * override. + */ + default com.fasterxml.jackson.databind.JsonNode fetchHealth() { + return null; + } + + /** + * Per-document destination for crop / page-image artifacts. + * + *

    Clients are cached and reused across documents + * ({@link HybridClientFactory#getOrCreate}), so the {@link HybridConfig} + * captured at construction reflects only the first document and + * cannot be the source of truth for where the current document's + * crops belong. This value travels with each {@link HybridRequest} + * instead, so the destination tracks the document being processed without + * any shared mutable state — safe even if convert calls run concurrently. + * + *

    {@code enabled} controls whether crop / page-image artifacts are + * written; {@code directory} is the destination for this document (or + * {@code null} when none). + */ + final class CropOutput { + /** Sentinel meaning "do not write crops for this request". */ + public static final CropOutput DISABLED = new CropOutput(false, null); + + private final boolean enabled; + private final String directory; + + public CropOutput(boolean enabled, String directory) { + this.enabled = enabled; + this.directory = directory; + } + + /** Whether crop / page-image artifacts should be written. */ + public boolean enabled() { + return enabled; + } + + /** Destination directory, or {@code null} when none is set. */ + public String directory() { + return directory; + } + + /** True when crops should be written and a destination is set. */ + public boolean active() { + return enabled && directory != null; + } + } + + /** + * Output formats that can be requested from the hybrid backend. + */ + enum OutputFormat { + /** JSON structured document format (DoclingDocument). */ + JSON("json"), + /** Markdown text format. */ + MARKDOWN("md"), + /** HTML format. */ + HTML("html"); + + private final String apiValue; + + OutputFormat(String apiValue) { + this.apiValue = apiValue; + } + + /** Returns the API parameter value for this format. */ + public String getApiValue() { + return apiValue; + } + } + + /** + * Request class containing PDF bytes and processing options. + * + *

    Note: OCR and table structure detection are always enabled on the server side. + * The DocumentConverter is initialized once at startup with fixed options for performance. + */ + final class HybridRequest { + private final byte[] pdfBytes; + private final Set pageNumbers; + private final Set outputFormats; + private final CropOutput cropOutput; + + /** + * Creates a new HybridRequest. + * + * @param pdfBytes The raw PDF file bytes to process. + * @param pageNumbers Set of 1-indexed page numbers to process. If empty, process all pages. + * @param outputFormats Set of output formats to request. If empty, defaults to all formats. + */ + public HybridRequest(byte[] pdfBytes, Set pageNumbers, + Set outputFormats) { + this(pdfBytes, pageNumbers, outputFormats, CropOutput.DISABLED); + } + + private HybridRequest(byte[] pdfBytes, Set pageNumbers, + Set outputFormats, CropOutput cropOutput) { + this.pdfBytes = pdfBytes != null ? Arrays.copyOf(pdfBytes, pdfBytes.length) : null; + this.pageNumbers = pageNumbers != null ? pageNumbers : Collections.emptySet(); + this.outputFormats = outputFormats != null && !outputFormats.isEmpty() + ? EnumSet.copyOf(outputFormats) + : EnumSet.allOf(OutputFormat.class); + this.cropOutput = cropOutput != null ? cropOutput : CropOutput.DISABLED; + } + + /** + * Returns a copy of this request with the given crop-output destination. + * Lets the caller attach a per-document crop target without mutating the + * cached client. The original request is unchanged. + * + * @param cropOutput where to write crops / page images for this document + * @return a new request carrying {@code cropOutput} + */ + public HybridRequest withCropOutput(CropOutput cropOutput) { + return new HybridRequest(pdfBytes, pageNumbers, outputFormats, cropOutput); + } + + /** + * Per-document crop / page-image destination. Never {@code null}; + * defaults to {@link CropOutput#DISABLED}. + */ + public CropOutput getCropOutput() { + return cropOutput; + } + + /** + * Creates a request to process all pages with default options. + * + * @param pdfBytes The PDF file bytes. + * @return A new HybridRequest for all pages with all output formats. + */ + public static HybridRequest allPages(byte[] pdfBytes) { + return new HybridRequest(pdfBytes, Collections.emptySet(), null); + } + + /** + * Creates a request to process all pages with specified output formats. + * + * @param pdfBytes The PDF file bytes. + * @param outputFormats The output formats to request. + * @return A new HybridRequest for all pages. + */ + public static HybridRequest allPages(byte[] pdfBytes, Set outputFormats) { + return new HybridRequest(pdfBytes, Collections.emptySet(), outputFormats); + } + + /** + * Creates a request to process specific pages. + * + * @param pdfBytes The PDF file bytes. + * @param pageNumbers The 1-indexed page numbers to process. + * @return A new HybridRequest for the specified pages. + */ + public static HybridRequest forPages(byte[] pdfBytes, Set pageNumbers) { + return new HybridRequest(pdfBytes, pageNumbers, null); + } + + /** + * Creates a request to process specific pages with specified output formats. + * + * @param pdfBytes The PDF file bytes. + * @param pageNumbers The 1-indexed page numbers to process. + * @param outputFormats The output formats to request. + * @return A new HybridRequest for the specified pages. + */ + public static HybridRequest forPages(byte[] pdfBytes, Set pageNumbers, + Set outputFormats) { + return new HybridRequest(pdfBytes, pageNumbers, outputFormats); + } + + public byte[] getPdfBytes() { + return pdfBytes != null ? Arrays.copyOf(pdfBytes, pdfBytes.length) : null; + } + + public Set getPageNumbers() { + return pageNumbers; + } + + /** + * Returns the output formats to request from the backend. + * + * @return Set of output formats. Never empty. + */ + public Set getOutputFormats() { + return outputFormats; + } + + /** + * Checks if JSON output is requested. + * + * @return true if JSON format is included. + */ + public boolean wantsJson() { + return outputFormats.contains(OutputFormat.JSON); + } + + /** + * Checks if Markdown output is requested. + * + * @return true if Markdown format is included. + */ + public boolean wantsMarkdown() { + return outputFormats.contains(OutputFormat.MARKDOWN); + } + + /** + * Checks if HTML output is requested. + * + * @return true if HTML format is included. + */ + public boolean wantsHtml() { + return outputFormats.contains(OutputFormat.HTML); + } + } + + /** + * Response class containing parsed document content. + */ + final class HybridResponse { + private final String markdown; + private final String html; + private final JsonNode json; + private final Map pageContents; + private final List failedPages; + private final JsonNode timings; + + /** + * Creates a new HybridResponse. + * + * @param markdown The markdown representation of the document. + * @param html The HTML representation of the document. + * @param json The full structured JSON output (DoclingDocument format). + * @param pageContents Per-page JSON content, keyed by 1-indexed page number. + * @param failedPages List of 1-indexed page numbers that failed during backend processing. + * @param timings Per-step pipeline timings from the hybrid server (may be null). + */ + public HybridResponse(String markdown, String html, JsonNode json, + Map pageContents, List failedPages, + JsonNode timings) { + this.markdown = markdown != null ? markdown : ""; + this.html = html != null ? html : ""; + this.json = json; + this.pageContents = pageContents != null ? pageContents : Collections.emptyMap(); + this.failedPages = failedPages != null + ? Collections.unmodifiableList(new ArrayList<>(failedPages)) + : Collections.emptyList(); + this.timings = timings; + } + + /** + * Creates a new HybridResponse (without timings, backward compatible). + */ + public HybridResponse(String markdown, String html, JsonNode json, + Map pageContents, List failedPages) { + this(markdown, html, json, pageContents, failedPages, null); + } + + /** + * Creates a new HybridResponse (backward compatible constructor). + * + * @param markdown The markdown representation of the document. + * @param html The HTML representation of the document. + * @param json The full structured JSON output (DoclingDocument format). + * @param pageContents Per-page JSON content, keyed by 1-indexed page number. + */ + public HybridResponse(String markdown, String html, JsonNode json, Map pageContents) { + this(markdown, html, json, pageContents, Collections.emptyList()); + } + + /** + * Creates a new HybridResponse (backward compatible constructor). + * + * @param markdown The markdown representation of the document. + * @param json The full structured JSON output (DoclingDocument format). + * @param pageContents Per-page JSON content, keyed by 1-indexed page number. + */ + public HybridResponse(String markdown, JsonNode json, Map pageContents) { + this(markdown, "", json, pageContents, Collections.emptyList()); + } + + /** + * Creates an empty response. + * + * @return A new HybridResponse with empty/null values. + */ + public static HybridResponse empty() { + return new HybridResponse("", "", null, Collections.emptyMap()); + } + + public String getMarkdown() { + return markdown; + } + + public String getHtml() { + return html; + } + + public JsonNode getJson() { + return json; + } + + public Map getPageContents() { + return pageContents; + } + + /** + * Returns per-step pipeline timings from the hybrid server. + * + *

    Keys are step names (e.g. "layout", "ocr", "table_structure", + * "picture_description"). Each value contains "total_s", "avg_s", and "count". + * + * @return Timings JSON node, or null if profiling was not enabled on the server. + */ + public JsonNode getTimings() { + return timings; + } + + /** + * Returns the list of 1-indexed page numbers that failed during backend processing. + * + *

    When the backend returns partial_success, some pages may have failed due to + * issues like invalid code points in PDF font encoding. These pages can be retried + * via the Java processing path as a fallback. + * + * @return List of failed page numbers (1-indexed), or empty list if all pages succeeded. + */ + public List getFailedPages() { + return failedPages; + } + + /** + * Returns whether the backend reported any failed pages. + * + * @return true if at least one page failed during backend processing. + */ + public boolean hasFailedPages() { + return !failedPages.isEmpty(); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + HybridResponse that = (HybridResponse) o; + return Objects.equals(markdown, that.markdown) && + Objects.equals(html, that.html) && + Objects.equals(json, that.json) && + Objects.equals(pageContents, that.pageContents) && + Objects.equals(failedPages, that.failedPages) && + Objects.equals(timings, that.timings); + } + + @Override + public int hashCode() { + return Objects.hash(markdown, html, json, pageContents, failedPages, timings); + } + } + + /** + * Checks if the backend server is available and ready to accept requests. + * + *

    This performs a lightweight health check (e.g., HTTP GET to /health) with a short + * timeout to verify connectivity before sending actual conversion requests. + * + * @throws IOException If the server is unreachable or not ready. + */ + void checkAvailability() throws IOException; + + /** + * Converts a PDF document synchronously. + * + * @param request The conversion request containing PDF bytes and options. + * @return The conversion response with parsed content. + * @throws IOException If an I/O error occurs during the request. + */ + HybridResponse convert(HybridRequest request) throws IOException; + + /** + * Converts a PDF document asynchronously. + * + *

    This method is useful for parallel processing where multiple pages + * can be processed concurrently with the Java backend. + * + * @param request The conversion request containing PDF bytes and options. + * @return A CompletableFuture that completes with the conversion response. + */ + CompletableFuture convertAsync(HybridRequest request); +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HybridClientFactory.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HybridClientFactory.java new file mode 100644 index 0000000..c716bc3 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HybridClientFactory.java @@ -0,0 +1,188 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * Factory for creating and managing hybrid client instances. + * + *

    This factory provides a central point for instantiating HybridClient + * implementations based on the specified backend type. Clients are cached + * and reused to avoid creating multiple thread pools per document. + * + *

    Supported backends: + *

      + *
    • {@code docling-fast} - Optimized docling SDK server
    • + *
    + * + *

    Future backends (not yet implemented): + *

      + *
    • {@code hancom} - Hancom document parsing service
    • + *
    • {@code azure} - Azure Document Intelligence
    • + *
    • {@code google} - Google Document AI
    • + *
    + * + * @see HybridClient + * @see HybridConfig + */ +public class HybridClientFactory { + + /** Backend type constant for Docling Fast Server. */ + public static final String BACKEND_DOCLING_FAST = "docling-fast"; + + /** Backend type constant for Hancom (Studio Lite API). */ + public static final String BACKEND_HANCOM = "hancom"; + + /** Backend type constant for Hancom AI (HOCR SDK individual modules). */ + public static final String BACKEND_HANCOM_AI = "hancom-ai"; + + /** Backend type constant for Azure (not yet implemented). */ + public static final String BACKEND_AZURE = "azure"; + + /** Backend type constant for Google (not yet implemented). */ + public static final String BACKEND_GOOGLE = "google"; + + /** Cache of created clients, keyed by backend type. */ + private static final Map CLIENT_CACHE = new ConcurrentHashMap<>(); + + private HybridClientFactory() { + // Private constructor to prevent instantiation + } + + /** + * Gets or creates a hybrid client for the specified backend. + * + *

    Clients are cached and reused across multiple documents to avoid + * creating new thread pools for each document. Call {@link #shutdown()} + * when processing is complete to release resources. + * + * @param hybrid The backend type (e.g., "docling", "hancom", "azure", "google"). + * @param config The configuration for the hybrid client. + * @return A HybridClient instance for the specified backend. + * @throws IllegalArgumentException If the backend type is unknown or not supported. + */ + public static HybridClient getOrCreate(String hybrid, HybridConfig config) { + if (hybrid == null || hybrid.isEmpty()) { + throw new IllegalArgumentException("Hybrid backend type cannot be null or empty"); + } + + String lowerHybrid = hybrid.toLowerCase(); + + return CLIENT_CACHE.computeIfAbsent(lowerHybrid, key -> createClient(key, config)); + } + + /** + * Creates a new hybrid client instance. + */ + private static HybridClient createClient(String hybrid, HybridConfig config) { + if (BACKEND_DOCLING_FAST.equals(hybrid)) { + return new DoclingFastServerClient(config); + } else if (BACKEND_HANCOM.equals(hybrid)) { + return new HancomClient(config); + } else if (BACKEND_HANCOM_AI.equals(hybrid)) { + return new HancomAIClient(config); + } else if (BACKEND_AZURE.equals(hybrid)) { + throw new UnsupportedOperationException("Azure Document Intelligence backend is not yet implemented"); + } else if (BACKEND_GOOGLE.equals(hybrid)) { + throw new UnsupportedOperationException("Google Document AI backend is not yet implemented"); + } else { + throw new IllegalArgumentException("Unknown hybrid backend: " + hybrid + + ". Supported backends: " + getSupportedBackends()); + } + } + + /** + * Creates a hybrid client for the specified backend. + * + * @param hybrid The backend type (e.g., "docling", "hancom", "azure", "google"). + * @param config The configuration for the hybrid client. + * @return A new HybridClient instance for the specified backend. + * @throws IllegalArgumentException If the backend type is unknown or not supported. + * @deprecated Use {@link #getOrCreate(String, HybridConfig)} instead to reuse clients. + */ + @Deprecated + public static HybridClient create(String hybrid, HybridConfig config) { + return getOrCreate(hybrid, config); + } + + /** + * Creates a hybrid client for the specified backend with default configuration. + * + * @param hybrid The backend type (e.g., "docling"). + * @return A new HybridClient instance for the specified backend. + * @throws IllegalArgumentException If the backend type is unknown or not supported. + * @deprecated Use {@link #getOrCreate(String, HybridConfig)} instead to reuse clients. + */ + @Deprecated + public static HybridClient create(String hybrid) { + return getOrCreate(hybrid, new HybridConfig()); + } + + /** + * Shuts down all cached clients and releases resources. + * + *

    This method should be called when all processing is complete, + * typically at the end of the CLI main method. + */ + public static void shutdown() { + for (HybridClient client : CLIENT_CACHE.values()) { + if (client instanceof DoclingFastServerClient) { + ((DoclingFastServerClient) client).shutdown(); + } else if (client instanceof HancomClient) { + ((HancomClient) client).shutdown(); + } else if (client instanceof HancomAIClient) { + ((HancomAIClient) client).shutdown(); + } + } + CLIENT_CACHE.clear(); + } + + /** + * Checks if a backend type is supported and implemented. + * + * @param hybrid The backend type to check. + * @return true if the backend is supported and implemented, false otherwise. + */ + public static boolean isSupported(String hybrid) { + if (hybrid == null || hybrid.isEmpty()) { + return false; + } + + String lowerHybrid = hybrid.toLowerCase(); + return BACKEND_DOCLING_FAST.equals(lowerHybrid) || BACKEND_HANCOM.equals(lowerHybrid) + || BACKEND_HANCOM_AI.equals(lowerHybrid); + } + + /** + * Gets a comma-separated list of supported backend types. + * + * @return A string listing all supported backends. + */ + public static String getSupportedBackends() { + return String.join(", ", BACKEND_DOCLING_FAST, BACKEND_HANCOM, BACKEND_HANCOM_AI); + } + + /** + * Gets a comma-separated list of all known backend types (including not yet implemented). + * + * @return A string listing all known backends. + */ + public static String getAllKnownBackends() { + return String.join(", ", BACKEND_DOCLING_FAST, BACKEND_HANCOM, BACKEND_AZURE, BACKEND_GOOGLE); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HybridConfig.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HybridConfig.java new file mode 100644 index 0000000..1568af7 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HybridConfig.java @@ -0,0 +1,379 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +/** + * Configuration class for hybrid PDF processing with external AI backends. + * + *

    Hybrid processing routes pages to either Java-based processing or external + * AI backends (like docling, hancom, azure, google) based on page triage decisions. + */ +public class HybridConfig { + + /** Default timeout for backend requests in milliseconds. */ + public static final int DEFAULT_TIMEOUT_MS = 0; + + /** Default maximum concurrent requests to the backend. */ + public static final int DEFAULT_MAX_CONCURRENT_REQUESTS = 4; + + /** Default URL for docling-serve. */ + public static final String DOCLING_DEFAULT_URL = "http://localhost:5001"; + + /** Default URL for docling-fast-server. */ + public static final String DOCLING_FAST_DEFAULT_URL = "http://localhost:5002"; + + /** Default URL for Hancom Document AI API. */ + public static final String HANCOM_DEFAULT_URL = "https://dataloader.cloud.hancom.com/studio-lite/api"; + + /** Default URL for Hancom AI HOCR SDK API. */ + public static final String HANCOM_AI_DEFAULT_URL = "http://localhost:18008/api/v1"; + + private String url; + private int timeoutMs = DEFAULT_TIMEOUT_MS; + private boolean fallbackToJava = false; + private int maxConcurrentRequests = DEFAULT_MAX_CONCURRENT_REQUESTS; + /** Hybrid triage mode: auto (dynamic triage based on page content). */ + public static final String MODE_AUTO = "auto"; + /** Hybrid triage mode: full (skip triage, send all pages to backend). */ + public static final String MODE_FULL = "full"; + + private String mode = MODE_AUTO; + + /** Regionlist strategy: table-first (default) — check TSR overlap, skip if TSR exists. */ + public static final String REGIONLIST_TABLE_FIRST = "table-first"; + /** Regionlist strategy: list-only — always treat label 7 as list, skip TSR check. */ + public static final String REGIONLIST_LIST_ONLY = "list-only"; + + private String regionlistStrategy = REGIONLIST_TABLE_FIRST; + + /** OCR strategy: off (stream only, no OCR fallback). */ + public static final String OCR_OFF = "off"; + /** OCR strategy: auto (stream first, OCR fallback when enrichment fails). */ + public static final String OCR_AUTO = "auto"; + /** OCR strategy: force (OCR only, skip stream-based enrichment). */ + public static final String OCR_FORCE = "force"; + + private String ocrStrategy = OCR_AUTO; + + /** Page image cache strategy: "memory" (default) or "disk". */ + private String imageCache = "memory"; + + /** Whether to save cropped figure images to disk for debugging. */ + private boolean saveCrops = false; + + /** Output directory for saved crops (set by CLI when --save-crops is used). */ + private String cropOutputDir = null; + + /** + * Default constructor initializing the configuration with default values. + */ + public HybridConfig() { + } + + /** + * Gets the backend server URL. + * + * @return The backend URL, or null if using default for the backend type. + */ + public String getUrl() { + return url; + } + + /** + * Sets the backend server URL. + * + * @param url The backend URL to use. + */ + public void setUrl(String url) { + this.url = url; + } + + /** + * Gets the request timeout in milliseconds. + * + * @return The timeout in milliseconds. + */ + public int getTimeoutMs() { + return timeoutMs; + } + + /** + * Sets the request timeout in milliseconds. Use 0 for no timeout. + * + * @param timeoutMs The timeout in milliseconds (0 = no timeout). + * @throws IllegalArgumentException if timeout is negative. + */ + public void setTimeoutMs(int timeoutMs) { + if (timeoutMs < 0) { + throw new IllegalArgumentException("Timeout must be non-negative: " + timeoutMs); + } + this.timeoutMs = timeoutMs; + } + + /** + * Checks if fallback to Java processing is enabled when backend fails. + * + * @return true if fallback is enabled, false otherwise. + */ + public boolean isFallbackToJava() { + return fallbackToJava; + } + + /** + * Sets whether to fallback to Java processing when backend fails. + * + * @param fallbackToJava true to enable fallback, false to fail on backend error. + */ + public void setFallbackToJava(boolean fallbackToJava) { + this.fallbackToJava = fallbackToJava; + } + + /** + * Gets the maximum number of concurrent requests to the backend. + * + * @return The maximum concurrent requests. + */ + public int getMaxConcurrentRequests() { + return maxConcurrentRequests; + } + + /** + * Sets the maximum number of concurrent requests to the backend. + * + * @param maxConcurrentRequests The maximum concurrent requests. + * @throws IllegalArgumentException if the value is not positive. + */ + public void setMaxConcurrentRequests(int maxConcurrentRequests) { + if (maxConcurrentRequests <= 0) { + throw new IllegalArgumentException("Max concurrent requests must be positive: " + maxConcurrentRequests); + } + this.maxConcurrentRequests = maxConcurrentRequests; + } + + /** + * Gets the default URL for a given hybrid backend. + * + * @param hybrid The hybrid backend name (docling, docling-fast, hancom, azure, google). + * @return The default URL, or null if the backend requires explicit URL. + */ + public static String getDefaultUrl(String hybrid) { + if (hybrid == null) { + return null; + } + String lowerHybrid = hybrid.toLowerCase(); + // Both "docling" and "docling-fast" (deprecated) use the same server + if ("docling".equals(lowerHybrid) || "docling-fast".equals(lowerHybrid)) { + return DOCLING_FAST_DEFAULT_URL; + } + if ("hancom".equals(lowerHybrid)) { + return HANCOM_DEFAULT_URL; + } + if ("hancom-ai".equals(lowerHybrid)) { + return HANCOM_AI_DEFAULT_URL; + } + // azure, google require explicit URL + return null; + } + + /** + * Gets the effective URL for a given hybrid backend. + * Returns the configured URL if set, otherwise returns the default URL for the backend. + * + * @param hybrid The hybrid backend name. + * @return The effective URL to use for the backend. + */ + public String getEffectiveUrl(String hybrid) { + if (url != null && !url.isEmpty()) { + return url; + } + return getDefaultUrl(hybrid); + } + + /** + * Gets the hybrid triage mode. + * + * @return The mode (auto or full). + */ + public String getMode() { + return mode; + } + + /** + * Sets the hybrid triage mode. + * + * @param mode The mode (auto or full). + */ + public void setMode(String mode) { + this.mode = mode; + } + + /** + * Checks if full mode is enabled (skip triage, send all pages to backend). + * + * @return true if mode is full, false otherwise. + */ + public boolean isFullMode() { + return MODE_FULL.equals(mode); + } + + /** + * Gets the regionlist strategy for label 7 (Table region) handling. + * + * @return The regionlist strategy (table-first or list-only). + */ + public String getRegionlistStrategy() { + return regionlistStrategy; + } + + /** + * Sets the regionlist strategy for label 7 (Table region) handling. + * + *

      + *
    • {@code "table-first"} (default): check TSR overlap, skip if TSR exists, else treat as list
    • + *
    • {@code "list-only"}: always treat as list, skip TSR check entirely
    • + *
    + * + * @param regionlistStrategy The regionlist strategy to use. + */ + public void setRegionlistStrategy(String regionlistStrategy) { + if (regionlistStrategy != null + && !REGIONLIST_TABLE_FIRST.equals(regionlistStrategy) + && !REGIONLIST_LIST_ONLY.equals(regionlistStrategy)) { + throw new IllegalArgumentException("Invalid regionlistStrategy: " + + regionlistStrategy + " (expected " + REGIONLIST_TABLE_FIRST + + " or " + REGIONLIST_LIST_ONLY + ")"); + } + this.regionlistStrategy = regionlistStrategy; + } + + /** + * Checks if regionlist strategy is list-only (always treat label 7 as list). + * + * @return true if strategy is list-only, false otherwise. + */ + public boolean isRegionlistListOnly() { + return REGIONLIST_LIST_ONLY.equals(regionlistStrategy); + } + + /** + * Gets the page image cache strategy. + * + * @return "memory" or "disk". + */ + public String getImageCache() { + return imageCache; + } + + /** + * Sets the page image cache strategy. + * + * @param imageCache "memory" (in-heap HashMap) or "disk" (temp PNG files). + */ + public void setImageCache(String imageCache) { + if (imageCache != null + && !"memory".equals(imageCache) && !"disk".equals(imageCache)) { + throw new IllegalArgumentException("Invalid imageCache: " + + imageCache + " (expected \"memory\" or \"disk\")"); + } + this.imageCache = imageCache; + } + + /** + * Checks if cropped figure images should be saved to disk. + * + * @return true if save-crops is enabled. + */ + public boolean isSaveCrops() { + return saveCrops; + } + + /** + * Sets whether to save cropped figure images to disk. + * + * @param saveCrops true to save crops. + */ + public void setSaveCrops(boolean saveCrops) { + this.saveCrops = saveCrops; + } + + /** + * Gets the output directory for saved crops. + * + * @return the crop output directory path, or null if not set. + */ + public String getCropOutputDir() { + return cropOutputDir; + } + + /** + * Sets the output directory for saved crops. + * + * @param cropOutputDir the directory path. + */ + public void setCropOutputDir(String cropOutputDir) { + this.cropOutputDir = cropOutputDir; + } + + /** + * Gets the OCR strategy for enrichment fallback. + * + * @return The OCR strategy (off, auto, or force). + */ + public String getOcrStrategy() { + return ocrStrategy; + } + + /** + * Sets the OCR strategy for enrichment fallback. + * + *
      + *
    • {@code "off"}: stream-based enrichment only, no OCR fallback
    • + *
    • {@code "auto"} (default): try stream enrichment first, fall back to OCR words when no match
    • + *
    • {@code "force"}: skip stream enrichment, always use OCR words
    • + *
    + * + * @param ocrStrategy The OCR strategy to use. + */ + public void setOcrStrategy(String ocrStrategy) { + if (ocrStrategy != null + && !OCR_OFF.equals(ocrStrategy) + && !OCR_AUTO.equals(ocrStrategy) + && !OCR_FORCE.equals(ocrStrategy)) { + throw new IllegalArgumentException("Invalid ocrStrategy: " + + ocrStrategy + " (expected " + OCR_OFF + ", " + OCR_AUTO + + ", or " + OCR_FORCE + ")"); + } + this.ocrStrategy = ocrStrategy; + } + + /** + * Checks if OCR strategy is auto (stream first, OCR fallback). + * + * @return true if strategy is auto, false otherwise. + */ + public boolean isOcrAuto() { + return OCR_AUTO.equals(ocrStrategy); + } + + /** + * Checks if OCR strategy is force (OCR only). + * + * @return true if strategy is force, false otherwise. + */ + public boolean isOcrForce() { + return OCR_FORCE.equals(ocrStrategy); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HybridSchemaTransformer.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HybridSchemaTransformer.java new file mode 100644 index 0000000..97d37f8 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HybridSchemaTransformer.java @@ -0,0 +1,110 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import com.fasterxml.jackson.databind.JsonNode; +import org.opendataloader.pdf.hybrid.HybridClient.HybridResponse; +import org.verapdf.wcag.algorithms.entities.IObject; + +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.HashMap; + +/** + * Interface for transforming hybrid backend responses to IObject hierarchy. + * + *

    Implementations of this interface convert backend-specific JSON output + * (e.g., Docling's DoclingDocument format) to the OpenDataLoader IObject + * structure that downstream processors and generators expect. + * + *

    The transformer ensures schema compatibility between different backends + * and the Java processing path, allowing seamless integration of results. + */ +public interface HybridSchemaTransformer { + + /** + * Transforms a hybrid backend response to a list of IObjects per page. + * + *

    The returned structure matches the format expected by downstream + * processors: a list indexed by page number (0-based), where each entry + * contains the IObjects for that page. + * + * @param response The hybrid backend response containing JSON output. + * @param pageHeights Map of page number (1-indexed) to page height in PDF points. + * Used for coordinate transformation if needed. + * @return A list of IObject lists, one per page (0-indexed). + */ + List> transform(HybridResponse response, Map pageHeights); + + /** + * Transforms per-page JSON content to IObjects for a specific page. + * + *

    This method is useful when processing pages individually or when + * the backend provides separate responses per page. + * + * @param pageNumber The 1-indexed page number. + * @param pageContent The JSON content for the page. + * @param pageHeight The page height in PDF points. + * @return A list of IObjects for the specified page. + */ + List transformPage(int pageNumber, JsonNode pageContent, double pageHeight); + + /** + * Returns the backend type this transformer handles. + * + * @return The backend name (e.g., "docling", "hancom"). + */ + String getBackendType(); + + /** + * Returns per-element metadata produced during the last {@link #transform} call. + * Keys are {@code IObject.recognizedStructureId} values. + * + * @return unmodifiable map of element metadata, empty by default + */ + default Map getElementMetadata() { + return Collections.emptyMap(); + } + + /** + * Re-key the in-memory {@link ElementMetadata} map after the host + * pipeline renumbered structure IDs. {@code oldToNew} maps the + * transformer-assigned ID to the post-{@code setIDs} ID for IObjects + * the caller just renumbered; entries for unmapped IDs are left alone. + * + *

    Backends that don't expose mutable metadata should leave the + * default no-op; their downstream metadata lookups will continue to + * miss. + */ + default void rekeyMetadata(Map oldToNew) { + // no-op + } + + /** + * Returns per-page OCR word data collected during the last {@link #transform} call. + * Keys are 0-indexed page numbers. Each list contains word-level OCR data with + * text and bounding box in PDF coordinate space. + * + *

    Only populated by backends that perform OCR (e.g., hancom-ai). + * Used by OCR enrichment fallback when Java TextChunks are not available. + * + * @return unmodifiable map of page number to OCR words, empty by default + */ + default Map> getOcrWordsByPage() { + return Collections.emptyMap(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/MemoryPageImageCache.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/MemoryPageImageCache.java new file mode 100644 index 0000000..12d6794 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/MemoryPageImageCache.java @@ -0,0 +1,53 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +/** + * In-memory page image cache. Stores images in a HashMap; evict() removes + * entries so GC can reclaim memory (~25MB per page image). + */ +public class MemoryPageImageCache implements PageImageCache { + + private final Map cache = new HashMap<>(); + + @Override + public BufferedImage getOrFetch(int pageIndex, PageImageFetcher fetcher) throws IOException { + BufferedImage image = cache.get(pageIndex); + if (image == null) { + image = fetcher.fetch(pageIndex); + if (image == null) { + throw new IOException("Page image fetcher returned null for page " + pageIndex); + } + cache.put(pageIndex, image); + } + return image; + } + + @Override + public void evict(int pageIndex) { + cache.remove(pageIndex); + } + + @Override + public void close() { + cache.clear(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/OcrWordInfo.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/OcrWordInfo.java new file mode 100644 index 0000000..db79bb8 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/OcrWordInfo.java @@ -0,0 +1,54 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; + +/** + * Holds OCR-recognized text and its bounding box in PDF coordinate space. + * + *

    Used to preserve word-level OCR data from the DLA+OCR pipeline so that + * the enrichment step can create invisible text operators when Java TextChunks + * are not available (e.g., scanned/image-based pages). + */ +public class OcrWordInfo { + + private final String text; + private final BoundingBox bbox; + + public OcrWordInfo(String text, BoundingBox bbox) { + this.text = text; + this.bbox = bbox; + } + + /** + * Gets the OCR-recognized text for this word. + * + * @return the recognized text + */ + public String getText() { + return text; + } + + /** + * Gets the bounding box in PDF coordinate space (72 DPI, bottom-left origin). + * + * @return the bounding box + */ + public BoundingBox getBbox() { + return bbox; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/PageImageCache.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/PageImageCache.java new file mode 100644 index 0000000..ad3f7a4 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/PageImageCache.java @@ -0,0 +1,58 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import java.awt.image.BufferedImage; +import java.io.IOException; + +/** + * Cache for page images (pdf2img results). Implementations control where + * images are stored and when they are evicted. + */ +public interface PageImageCache extends AutoCloseable { + + /** + * Get a cached page image or fetch it using the supplier. + * + * @param pageIndex 0-indexed page number + * @param fetcher called if image not in cache; may throw IOException + * @return the page image, never null + * @throws IOException if the fetcher fails + */ + BufferedImage getOrFetch(int pageIndex, PageImageFetcher fetcher) throws IOException; + + /** + * Hint that this page is no longer needed. + * Memory impl evicts immediately; disk impl keeps for potential re-read. + * + * @param pageIndex 0-indexed page number + */ + void evict(int pageIndex); + + /** + * Clean up all resources. Disk impl deletes temp files. + */ + @Override + void close() throws IOException; + + /** + * Functional interface for fetching a page image on cache miss. + */ + @FunctionalInterface + interface PageImageFetcher { + BufferedImage fetch(int pageIndex) throws IOException; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/TextSimilarity.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/TextSimilarity.java new file mode 100644 index 0000000..bdda2f3 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/TextSimilarity.java @@ -0,0 +1,66 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +/** + * Computes text similarity for stream vs OCR comparison. + * Used by enrichment to decide whether stream text is corrupted. + */ +public final class TextSimilarity { + + /** Default similarity threshold. Below this, stream text is considered corrupted. */ + public static final double DEFAULT_THRESHOLD = 0.5; + + private TextSimilarity() {} + + /** + * Computes normalized similarity between two strings (0.0 = completely different, 1.0 = identical). + * Uses Levenshtein distance normalized by the longer string's length. + */ + public static double similarity(String a, String b) { + if (a == null || b == null) return 0.0; + if (a.equals(b)) return 1.0; + if (a.isEmpty() || b.isEmpty()) return 0.0; + + int distance = levenshteinDistance(a, b); + int maxLen = Math.max(a.length(), b.length()); + return 1.0 - ((double) distance / maxLen); + } + + /** + * Returns true if stream text should be trusted over OCR text. + */ + public static boolean trustStream(String streamText, String ocrText, double threshold) { + if (streamText == null || streamText.isEmpty()) return false; + if (ocrText == null || ocrText.isEmpty()) return true; + return similarity(streamText, ocrText) >= threshold; + } + + private static int levenshteinDistance(String a, String b) { + int[] prev = new int[b.length() + 1]; + int[] curr = new int[b.length() + 1]; + for (int j = 0; j <= b.length(); j++) prev[j] = j; + for (int i = 1; i <= a.length(); i++) { + curr[0] = i; + for (int j = 1; j <= b.length(); j++) { + int cost = a.charAt(i - 1) == b.charAt(j - 1) ? 0 : 1; + curr[j] = Math.min(Math.min(curr[j - 1] + 1, prev[j] + 1), prev[j - 1] + cost); + } + int[] temp = prev; prev = curr; curr = temp; + } + return prev[b.length()]; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/TriageLogger.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/TriageLogger.java new file mode 100644 index 0000000..9a174d1 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/TriageLogger.java @@ -0,0 +1,225 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.opendataloader.pdf.hybrid.TriageProcessor.TriageDecision; +import org.opendataloader.pdf.hybrid.TriageProcessor.TriageResult; +import org.opendataloader.pdf.hybrid.TriageProcessor.TriageSignals; + +import java.io.IOException; +import java.io.Writer; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.stream.Collectors; + +/** + * Logger for triage decisions to JSON format for benchmark evaluation. + * + *

    Output format: + *

    + * {
    + *   "document": "example.pdf",
    + *   "hybrid": "docling",
    + *   "triage": [
    + *     {
    + *       "page": 1,
    + *       "decision": "JAVA",
    + *       "confidence": 0.95,
    + *       "signals": {
    + *         "lineChunkCount": 2,
    + *         "textChunkCount": 45,
    + *         "lineToTextRatio": 0.04,
    + *         "alignedLineGroups": 0,
    + *         "hasTableBorder": false,
    + *         "hasSuspiciousPattern": false
    + *       }
    + *     }
    + *   ],
    + *   "summary": {
    + *     "totalPages": 10,
    + *     "javaPages": 8,
    + *     "backendPages": 2
    + *   }
    + * }
    + * 
    + */ +public class TriageLogger { + + private static final Logger LOGGER = Logger.getLogger(TriageLogger.class.getCanonicalName()); + + /** Default filename for triage log output. */ + public static final String DEFAULT_FILENAME = "triage.json"; + + private final ObjectMapper objectMapper; + + /** + * Creates a new TriageLogger with default settings. + */ + public TriageLogger() { + this.objectMapper = new ObjectMapper(); + this.objectMapper.enable(SerializationFeature.INDENT_OUTPUT); + } + + /** + * Logs triage results to a JSON file. + * + * @param outputDir The output directory path. + * @param documentName The name of the processed document. + * @param hybridBackend The hybrid backend used (e.g., "docling"). + * @param triageResults Map of page number to triage result. + * @throws IOException If writing the file fails. + */ + public void logToFile( + Path outputDir, + String documentName, + String hybridBackend, + Map triageResults) throws IOException { + + Path outputPath = outputDir.resolve(DEFAULT_FILENAME); + Files.createDirectories(outputDir); + + ObjectNode root = createTriageJson(documentName, hybridBackend, triageResults); + + try (Writer writer = Files.newBufferedWriter(outputPath)) { + objectMapper.writeValue(writer, root); + } + + LOGGER.log(Level.INFO, "Triage log written to {0}", outputPath); + } + + /** + * Writes triage results to a Writer. + * + * @param writer The Writer to write to. + * @param documentName The name of the processed document. + * @param hybridBackend The hybrid backend used (e.g., "docling"). + * @param triageResults Map of page number to triage result. + * @throws IOException If writing fails. + */ + public void logToWriter( + Writer writer, + String documentName, + String hybridBackend, + Map triageResults) throws IOException { + + ObjectNode root = createTriageJson(documentName, hybridBackend, triageResults); + objectMapper.writeValue(writer, root); + } + + /** + * Creates the triage JSON structure. + * + * @param documentName The name of the processed document. + * @param hybridBackend The hybrid backend used. + * @param triageResults Map of page number to triage result. + * @return The root ObjectNode containing all triage data. + */ + public ObjectNode createTriageJson( + String documentName, + String hybridBackend, + Map triageResults) { + + ObjectNode root = objectMapper.createObjectNode(); + root.put("document", documentName); + root.put("hybrid", hybridBackend); + + // Create triage array + ArrayNode triageArray = objectMapper.createArrayNode(); + int javaCount = 0; + int backendCount = 0; + + List> sortedEntries = triageResults.entrySet().stream() + .sorted(Map.Entry.comparingByKey()) + .collect(Collectors.toList()); + + for (Map.Entry entry : sortedEntries) { + int pageNumber = entry.getKey(); + TriageResult result = entry.getValue(); + + ObjectNode pageNode = objectMapper.createObjectNode(); + pageNode.put("page", pageNumber + 1); // Convert to 1-indexed for output + pageNode.put("decision", result.getDecision().name()); + pageNode.put("confidence", result.getConfidence()); + + // Add signals + ObjectNode signalsNode = createSignalsNode(result.getSignals()); + pageNode.set("signals", signalsNode); + + triageArray.add(pageNode); + + // Count decisions + if (result.getDecision() == TriageDecision.JAVA) { + javaCount++; + } else { + backendCount++; + } + } + + root.set("triage", triageArray); + + // Create summary + ObjectNode summaryNode = objectMapper.createObjectNode(); + summaryNode.put("totalPages", triageResults.size()); + summaryNode.put("javaPages", javaCount); + summaryNode.put("backendPages", backendCount); + root.set("summary", summaryNode); + + return root; + } + + /** + * Creates a JSON node for triage signals. + * + * @param signals The triage signals. + * @return The ObjectNode containing signal data. + */ + private ObjectNode createSignalsNode(TriageSignals signals) { + ObjectNode signalsNode = objectMapper.createObjectNode(); + signalsNode.put("lineChunkCount", signals.getLineChunkCount()); + signalsNode.put("textChunkCount", signals.getTextChunkCount()); + signalsNode.put("lineToTextRatio", signals.getLineToTextRatio()); + signalsNode.put("alignedLineGroups", signals.getAlignedLineGroups()); + signalsNode.put("hasTableBorder", signals.hasTableBorder()); + signalsNode.put("hasSuspiciousPattern", signals.hasSuspiciousPattern()); + return signalsNode; + } + + /** + * Converts triage results to JSON string. + * + * @param documentName The name of the processed document. + * @param hybridBackend The hybrid backend used. + * @param triageResults Map of page number to triage result. + * @return JSON string representation. + * @throws IOException If serialization fails. + */ + public String toJsonString( + String documentName, + String hybridBackend, + Map triageResults) throws IOException { + + ObjectNode root = createTriageJson(documentName, hybridBackend, triageResults); + return objectMapper.writeValueAsString(root); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/TriageProcessor.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/TriageProcessor.java new file mode 100644 index 0000000..7607ce4 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/TriageProcessor.java @@ -0,0 +1,1132 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.content.ImageChunk; +import org.verapdf.wcag.algorithms.entities.content.LineArtChunk; +import org.verapdf.wcag.algorithms.entities.content.LineChunk; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.opendataloader.pdf.processors.DocumentProcessor; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.SortedSet; + +/** + * Processor for triaging PDF pages to determine the optimal processing path. + * + *

    In hybrid mode, pages are classified as either: + *

      + *
    • JAVA - Simple pages processed by the fast Java path
    • + *
    • BACKEND - Complex pages (typically with tables) routed to AI backend
    • + *
    + * + *

    The triage uses a conservative strategy that minimizes false negatives + * (missed tables). It's acceptable to send simple pages to the backend (false positives) + * since the backend can process them correctly, just slower. + */ +public class TriageProcessor { + + /** Default threshold for LineChunk to total content ratio. */ + public static final double DEFAULT_LINE_RATIO_THRESHOLD = 0.3; + + /** Default minimum aligned line groups to trigger BACKEND routing. */ + // Note: Increased from 3 to 5 (Experiment 002, 2026-01-03) + // Threshold 3 caused 10 FPs from normal documents with aligned baselines + public static final int DEFAULT_ALIGNED_LINE_GROUPS_THRESHOLD = 5; + + /** Default gap multiplier for grid pattern detection (relative to text height). */ + public static final double DEFAULT_GRID_GAP_MULTIPLIER = 3.0; + + /** Epsilon for comparing baseline coordinates. */ + private static final double BASELINE_EPSILON = 0.1; + + // ============= Vector Graphics Detection Constants ============= + + /** Minimum number of line segments to suggest table borders. */ + private static final int MIN_LINE_COUNT_FOR_TABLE = 8; + + /** Minimum number of horizontal + vertical line pairs for grid pattern. */ + private static final int MIN_GRID_LINES = 3; + + /** Minimum number of line-text-line alternations for row separator pattern. */ + private static final int MIN_ROW_SEPARATOR_PATTERN = 5; + + /** Minimum LineArt chunks to indicate table structure. */ + private static final int MIN_LINE_ART_FOR_TABLE = 8; + + // ============= Aligned Short Lines Detection Constants ============= + + /** Tolerance for matching line lengths (5%). */ + private static final double LINE_LENGTH_TOLERANCE = 0.05; + + /** Minimum aligned short lines with same X and length. */ + private static final int MIN_ALIGNED_SHORT_LINES = 2; + + // ============= Consecutive Pattern Detection Constants ============= + + /** Minimum consecutive suspicious patterns required. */ + private static final int MIN_CONSECUTIVE_PATTERNS = 2; + + // ============= Large Image Detection Constants ============= + + /** Minimum image area ratio to trigger BACKEND (11% of page). */ + private static final double MIN_LARGE_IMAGE_RATIO = 0.11; + + /** Minimum image aspect ratio (width/height) for table/chart detection. */ + private static final double MIN_IMAGE_ASPECT_RATIO = 1.75; + + /** High pattern count threshold (skip consecutive check). */ + private static final int HIGH_PATTERN_COUNT_THRESHOLD = 30; + + /** Minimum absolute patterns required. */ + private static final int MIN_TABLE_PATTERNS = 3; + + /** Minimum pattern density (patterns / text chunks). */ + private static final double MIN_PATTERN_DENSITY = 0.10; + + /** Minimum patterns for density check. */ + private static final int MIN_PATTERNS_FOR_DENSITY = 2; + + /** X shift ratio to detect column change (filters multi-column layouts). */ + private static final double MULTI_COLUMN_X_SHIFT_RATIO = 2.0; + + /** X difference epsilon for gap detection. */ + private static final double X_DIFFERENCE_EPSILON = 1.5; + + /** + * Triage decision indicating which processing path to use. + */ + public enum TriageDecision { + /** Process using fast Java path. */ + JAVA, + /** Route to AI backend for complex content processing. */ + BACKEND + } + + /** + * Result of triaging a single page. + */ + public static final class TriageResult { + private final int pageNumber; + private final TriageDecision decision; + private final double confidence; + private final TriageSignals signals; + + /** + * Creates a new triage result. + * + * @param pageNumber The 0-indexed page number. + * @param decision The triage decision (JAVA or BACKEND). + * @param confidence Confidence score (0.0 to 1.0). Higher means more certain. + * @param signals The extracted signals used for the decision. + */ + public TriageResult(int pageNumber, TriageDecision decision, double confidence, TriageSignals signals) { + this.pageNumber = pageNumber; + this.decision = decision; + this.confidence = confidence; + this.signals = signals; + } + + /** + * Creates a result indicating JAVA processing path. + * + * @param pageNumber The page number. + * @param confidence The confidence level. + * @param signals The extracted signals. + * @return A new TriageResult with JAVA decision. + */ + public static TriageResult java(int pageNumber, double confidence, TriageSignals signals) { + return new TriageResult(pageNumber, TriageDecision.JAVA, confidence, signals); + } + + /** + * Creates a result indicating BACKEND processing path. + * + * @param pageNumber The page number. + * @param confidence The confidence level. + * @param signals The extracted signals. + * @return A new TriageResult with BACKEND decision. + */ + public static TriageResult backend(int pageNumber, double confidence, TriageSignals signals) { + return new TriageResult(pageNumber, TriageDecision.BACKEND, confidence, signals); + } + + /** + * Gets the page number. + * + * @return The 0-indexed page number. + */ + public int getPageNumber() { + return pageNumber; + } + + /** + * Gets the triage decision. + * + * @return The decision (JAVA or BACKEND). + */ + public TriageDecision getDecision() { + return decision; + } + + /** + * Gets the confidence score. + * + * @return The confidence score (0.0 to 1.0). + */ + public double getConfidence() { + return confidence; + } + + /** + * Gets the extracted signals. + * + * @return The triage signals. + */ + public TriageSignals getSignals() { + return signals; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + TriageResult that = (TriageResult) obj; + return pageNumber == that.pageNumber && + Double.compare(that.confidence, confidence) == 0 && + decision == that.decision && + Objects.equals(signals, that.signals); + } + + @Override + public int hashCode() { + return Objects.hash(pageNumber, decision, confidence, signals); + } + + @Override + public String toString() { + return "TriageResult{" + + "pageNumber=" + pageNumber + + ", decision=" + decision + + ", confidence=" + confidence + + ", signals=" + signals + + '}'; + } + } + + /** + * Signals extracted from page content used for triage decisions. + */ + public static final class TriageSignals { + private final int lineChunkCount; + private final int textChunkCount; + private final double lineToTextRatio; + private final int alignedLineGroups; + private final boolean hasTableBorder; + private final boolean hasSuspiciousPattern; + + // New vector graphics signals + private final int horizontalLineCount; + private final int verticalLineCount; + private final int lineArtCount; + private final boolean hasGridLines; + private final boolean hasTableBorderLines; + private final boolean hasRowSeparatorPattern; + private final boolean hasAlignedShortLines; + + // New text pattern signals + private final int tablePatternCount; + private final int maxConsecutiveStreak; + private final double patternDensity; + private final boolean hasConsecutivePatterns; + + // Image signals + private final double largeImageRatio; + private final double largeImageAspectRatio; + + /** + * Creates new triage signals with basic fields (backward compatibility). + * + * @param lineChunkCount Number of LineChunk objects on the page. + * @param textChunkCount Number of TextChunk objects on the page. + * @param lineToTextRatio Ratio of LineChunk to total content count. + * @param alignedLineGroups Number of groups of TextChunks with aligned baselines. + * @param hasTableBorder Whether any TableBorder was detected on this page. + * @param hasSuspiciousPattern Whether suspicious text patterns were detected. + */ + public TriageSignals(int lineChunkCount, int textChunkCount, double lineToTextRatio, + int alignedLineGroups, boolean hasTableBorder, boolean hasSuspiciousPattern) { + this(lineChunkCount, textChunkCount, lineToTextRatio, alignedLineGroups, + hasTableBorder, hasSuspiciousPattern, + 0, 0, 0, false, false, false, false, + 0, 0, 0.0, false, 0.0, 0.0); + } + + /** + * Creates new triage signals with all fields. + */ + public TriageSignals(int lineChunkCount, int textChunkCount, double lineToTextRatio, + int alignedLineGroups, boolean hasTableBorder, boolean hasSuspiciousPattern, + int horizontalLineCount, int verticalLineCount, int lineArtCount, + boolean hasGridLines, boolean hasTableBorderLines, + boolean hasRowSeparatorPattern, boolean hasAlignedShortLines, + int tablePatternCount, int maxConsecutiveStreak, double patternDensity, + boolean hasConsecutivePatterns, double largeImageRatio, double largeImageAspectRatio) { + this.lineChunkCount = lineChunkCount; + this.textChunkCount = textChunkCount; + this.lineToTextRatio = lineToTextRatio; + this.alignedLineGroups = alignedLineGroups; + this.hasTableBorder = hasTableBorder; + this.hasSuspiciousPattern = hasSuspiciousPattern; + this.horizontalLineCount = horizontalLineCount; + this.verticalLineCount = verticalLineCount; + this.lineArtCount = lineArtCount; + this.hasGridLines = hasGridLines; + this.hasTableBorderLines = hasTableBorderLines; + this.hasRowSeparatorPattern = hasRowSeparatorPattern; + this.hasAlignedShortLines = hasAlignedShortLines; + this.tablePatternCount = tablePatternCount; + this.maxConsecutiveStreak = maxConsecutiveStreak; + this.patternDensity = patternDensity; + this.hasConsecutivePatterns = hasConsecutivePatterns; + this.largeImageRatio = largeImageRatio; + this.largeImageAspectRatio = largeImageAspectRatio; + } + + /** + * Creates empty signals with default values. + * + * @return A new TriageSignals with zero/false values. + */ + public static TriageSignals empty() { + return new TriageSignals(0, 0, 0.0, 0, false, false, + 0, 0, 0, false, false, false, false, + 0, 0, 0.0, false, 0.0, 0.0); + } + + /** + * Gets the number of LineChunk objects. + * + * @return The line chunk count. + */ + public int getLineChunkCount() { + return lineChunkCount; + } + + /** + * Gets the number of TextChunk objects. + * + * @return The text chunk count. + */ + public int getTextChunkCount() { + return textChunkCount; + } + + /** + * Gets the ratio of LineChunk to total content. + * + * @return The line to text ratio. + */ + public double getLineToTextRatio() { + return lineToTextRatio; + } + + /** + * Gets the number of aligned line groups. + * + * @return The aligned line groups count. + */ + public int getAlignedLineGroups() { + return alignedLineGroups; + } + + /** + * Checks if TableBorder was detected. + * + * @return true if TableBorder is present. + */ + public boolean hasTableBorder() { + return hasTableBorder; + } + + /** + * Checks if suspicious patterns were detected. + * + * @return true if suspicious patterns are present. + */ + public boolean hasSuspiciousPattern() { + return hasSuspiciousPattern; + } + + /** + * Checks if vector graphics indicate table structure. + * + * @return true if any vector graphics signal indicates table. + */ + public boolean hasVectorTableSignal() { + return hasGridLines || hasTableBorderLines || lineArtCount >= MIN_LINE_ART_FOR_TABLE + || hasRowSeparatorPattern || hasAlignedShortLines; + } + + /** + * Checks if text patterns indicate table structure (with consecutive validation). + * + * @return true if text patterns suggest table. + */ + public boolean hasTextTablePattern() { + boolean hasHighPatternCount = tablePatternCount >= HIGH_PATTERN_COUNT_THRESHOLD; + boolean meetsPatternThreshold = tablePatternCount >= MIN_TABLE_PATTERNS + || (patternDensity >= MIN_PATTERN_DENSITY && tablePatternCount >= MIN_PATTERNS_FOR_DENSITY); + return (hasConsecutivePatterns || hasHighPatternCount) && meetsPatternThreshold; + } + + public int getHorizontalLineCount() { + return horizontalLineCount; + } + + public int getVerticalLineCount() { + return verticalLineCount; + } + + public int getLineArtCount() { + return lineArtCount; + } + + public boolean hasGridLines() { + return hasGridLines; + } + + public boolean hasTableBorderLines() { + return hasTableBorderLines; + } + + public boolean hasRowSeparatorPattern() { + return hasRowSeparatorPattern; + } + + public boolean hasAlignedShortLines() { + return hasAlignedShortLines; + } + + public int getTablePatternCount() { + return tablePatternCount; + } + + public int getMaxConsecutiveStreak() { + return maxConsecutiveStreak; + } + + public double getPatternDensity() { + return patternDensity; + } + + public boolean hasConsecutivePatterns() { + return hasConsecutivePatterns; + } + + /** + * Gets the ratio of largest image area to page area. + * + * @return The large image ratio (0.0 to 1.0). + */ + public double getLargeImageRatio() { + return largeImageRatio; + } + + /** + * Checks if a large image is present (potential table/chart image). + * Requires both size (>= 11% of page) and aspect ratio (>= 1.7, wider than tall). + * + * @return true if largest image meets size and aspect ratio criteria. + */ + public boolean hasLargeImage() { + return largeImageRatio >= MIN_LARGE_IMAGE_RATIO + && largeImageAspectRatio >= MIN_IMAGE_ASPECT_RATIO; + } + + /** + * Gets the aspect ratio (width/height) of the largest image. + * + * @return The aspect ratio of the largest image. + */ + public double getLargeImageAspectRatio() { + return largeImageAspectRatio; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + TriageSignals that = (TriageSignals) obj; + return lineChunkCount == that.lineChunkCount && + textChunkCount == that.textChunkCount && + Double.compare(that.lineToTextRatio, lineToTextRatio) == 0 && + alignedLineGroups == that.alignedLineGroups && + hasTableBorder == that.hasTableBorder && + hasSuspiciousPattern == that.hasSuspiciousPattern && + horizontalLineCount == that.horizontalLineCount && + verticalLineCount == that.verticalLineCount && + lineArtCount == that.lineArtCount && + hasGridLines == that.hasGridLines && + hasTableBorderLines == that.hasTableBorderLines && + hasRowSeparatorPattern == that.hasRowSeparatorPattern && + hasAlignedShortLines == that.hasAlignedShortLines && + tablePatternCount == that.tablePatternCount && + maxConsecutiveStreak == that.maxConsecutiveStreak && + Double.compare(that.patternDensity, patternDensity) == 0 && + hasConsecutivePatterns == that.hasConsecutivePatterns && + Double.compare(that.largeImageRatio, largeImageRatio) == 0 && + Double.compare(that.largeImageAspectRatio, largeImageAspectRatio) == 0; + } + + @Override + public int hashCode() { + return Objects.hash(lineChunkCount, textChunkCount, lineToTextRatio, + alignedLineGroups, hasTableBorder, hasSuspiciousPattern, + horizontalLineCount, verticalLineCount, lineArtCount, + hasGridLines, hasTableBorderLines, hasRowSeparatorPattern, + hasAlignedShortLines, tablePatternCount, maxConsecutiveStreak, + patternDensity, hasConsecutivePatterns, largeImageRatio, + largeImageAspectRatio); + } + + @Override + public String toString() { + return "TriageSignals{" + + "lineChunkCount=" + lineChunkCount + + ", textChunkCount=" + textChunkCount + + ", lineToTextRatio=" + lineToTextRatio + + ", alignedLineGroups=" + alignedLineGroups + + ", hasTableBorder=" + hasTableBorder + + ", hasSuspiciousPattern=" + hasSuspiciousPattern + + ", horizontalLineCount=" + horizontalLineCount + + ", verticalLineCount=" + verticalLineCount + + ", lineArtCount=" + lineArtCount + + ", hasGridLines=" + hasGridLines + + ", hasTableBorderLines=" + hasTableBorderLines + + ", hasRowSeparatorPattern=" + hasRowSeparatorPattern + + ", hasAlignedShortLines=" + hasAlignedShortLines + + ", tablePatternCount=" + tablePatternCount + + ", maxConsecutiveStreak=" + maxConsecutiveStreak + + ", patternDensity=" + patternDensity + + ", hasConsecutivePatterns=" + hasConsecutivePatterns + + ", largeImageRatio=" + largeImageRatio + + ", largeImageAspectRatio=" + largeImageAspectRatio + + '}'; + } + } + + /** + * Configuration for triage thresholds. + * Allows tuning the sensitivity of the triage decision. + */ + public static class TriageThresholds { + private double lineRatioThreshold = DEFAULT_LINE_RATIO_THRESHOLD; + private int alignedLineGroupsThreshold = DEFAULT_ALIGNED_LINE_GROUPS_THRESHOLD; + private double gridGapMultiplier = DEFAULT_GRID_GAP_MULTIPLIER; + + /** + * Creates thresholds with default values. + */ + public TriageThresholds() { + } + + /** + * Gets the line ratio threshold. + * + * @return The threshold for LineChunk to content ratio. + */ + public double getLineRatioThreshold() { + return lineRatioThreshold; + } + + /** + * Sets the line ratio threshold. + * + * @param lineRatioThreshold The threshold value (0.0 to 1.0). + */ + public void setLineRatioThreshold(double lineRatioThreshold) { + this.lineRatioThreshold = lineRatioThreshold; + } + + /** + * Gets the aligned line groups threshold. + * + * @return The minimum number of aligned groups to trigger BACKEND. + */ + public int getAlignedLineGroupsThreshold() { + return alignedLineGroupsThreshold; + } + + /** + * Sets the aligned line groups threshold. + * + * @param alignedLineGroupsThreshold The minimum number of aligned groups. + */ + public void setAlignedLineGroupsThreshold(int alignedLineGroupsThreshold) { + this.alignedLineGroupsThreshold = alignedLineGroupsThreshold; + } + + /** + * Gets the grid gap multiplier. + * + * @return The multiplier for text height to detect grid gaps. + */ + public double getGridGapMultiplier() { + return gridGapMultiplier; + } + + /** + * Sets the grid gap multiplier. + * + * @param gridGapMultiplier The multiplier value. + */ + public void setGridGapMultiplier(double gridGapMultiplier) { + this.gridGapMultiplier = gridGapMultiplier; + } + } + + private TriageProcessor() { + // Static utility class + } + + /** + * Classifies a page for processing path based on its content. + * + *

    Uses a conservative strategy that biases toward BACKEND when uncertain. + * Signals are evaluated in priority order: + *

      + *
    1. CID font extraction failure (replacement char ratio >= 30%)
    2. + *
    3. TableBorder presence (most reliable)
    4. + *
    5. Suspicious text patterns
    6. + *
    7. High LineChunk ratio
    8. + *
    9. Grid pattern detection (aligned baselines with gaps)
    10. + *
    + * + * @param filteredContents The filtered page contents from ContentFilterProcessor. + * @param pageNumber The 0-indexed page number. + * @param config The hybrid configuration (may be null for defaults). + * @return The triage result with decision, confidence, and signals. + */ + public static TriageResult classifyPage( + List filteredContents, + int pageNumber, + HybridConfig config) { + return classifyPage(filteredContents, pageNumber, new TriageThresholds()); + } + + /** + * Classifies a page for processing path with custom thresholds. + * + * @param filteredContents The filtered page contents from ContentFilterProcessor. + * @param pageNumber The 0-indexed page number. + * @param thresholds The triage thresholds to use. + * @return The triage result with decision, confidence, and signals. + */ + public static TriageResult classifyPage( + List filteredContents, + int pageNumber, + TriageThresholds thresholds) { + + // Extract signals from content + TriageSignals signals = extractSignals(filteredContents, pageNumber, thresholds); + + // Signal 0: CID font extraction failure (highest priority) + // Only fires in hybrid mode (classifyPage is only called from HybridDocumentProcessor) + double replacementRatio = StaticLayoutContainers.getReplacementCharRatio(pageNumber); + if (replacementRatio >= 0.3) { + return TriageResult.backend(pageNumber, 1.0, signals); + } + + // Signal 1: TableBorder presence (highest priority, most reliable) + if (signals.hasTableBorder()) { + return TriageResult.backend(pageNumber, 1.0, signals); + } + + // Signal 2: Vector graphics based table detection (grid lines, borders, line art) + if (signals.hasVectorTableSignal()) { + return TriageResult.backend(pageNumber, 0.95, signals); + } + + // Signal 3: Text-based table patterns (with consecutive validation) + if (signals.hasTextTablePattern()) { + return TriageResult.backend(pageNumber, 0.9, signals); + } + + // Signal 3.5: Large image detection (potential table/chart image) + // Added in Experiment 005 (2026-01-03) to catch FN documents with table images + if (signals.hasLargeImage()) { + return TriageResult.backend(pageNumber, 0.85, signals); + } + + // Signal 4: Suspicious text patterns (catches borderless tables) + // Note: Disabled (Experiment 003, 2026-01-03) + // This signal caused 19 FPs (28.4%) by detecting large gaps in non-table layouts + // Disabling reduces FP by 12 with only +1 FN (Recall: 97.62% → 95.24%) + // if (signals.hasSuspiciousPattern()) { + // return TriageResult.backend(pageNumber, 0.85, signals); + // } + + // Signal 5: High LineChunk ratio (grid/border elements) + if (signals.getLineToTextRatio() > thresholds.getLineRatioThreshold()) { + return TriageResult.backend(pageNumber, 0.8, signals); + } + + // Signal 6: Grid pattern detection (aligned baselines with gaps) + // Note: Disabled (Experiment 004D, 2026-01-03) + // This signal caused 12 FPs (21.8%) without detecting any additional true tables + // Disabling reduces FP by 12 with no FN change (Recall: 95.24% maintained) + // if (signals.getAlignedLineGroups() >= thresholds.getAlignedLineGroupsThreshold()) { + // return TriageResult.backend(pageNumber, 0.7, signals); + // } + + // Default: Route to JAVA for simple text-only content + return TriageResult.java(pageNumber, 0.9, signals); + } + + /** + * Extracts triage signals from page contents. + * + * @param filteredContents The filtered page contents. + * @param pageNumber The 0-indexed page number. + * @param thresholds The triage thresholds. + * @return The extracted signals. + */ + static TriageSignals extractSignals( + List filteredContents, + int pageNumber, + TriageThresholds thresholds) { + + if (filteredContents == null || filteredContents.isEmpty()) { + return TriageSignals.empty(); + } + + // Use SignalAccumulator to collect all signals in a single pass + SignalAccumulator accumulator = new SignalAccumulator(); + + for (IObject content : filteredContents) { + if (content instanceof LineChunk) { + accumulator.processLineChunk((LineChunk) content); + } else if (content instanceof TextChunk) { + accumulator.processTextChunk((TextChunk) content); + } else if (content instanceof LineArtChunk) { + accumulator.processLineArtChunk(); + } else if (content instanceof ImageChunk) { + accumulator.processImageChunk((ImageChunk) content); + } + } + + // Calculate derived values + int totalCount = filteredContents.size(); + double lineToTextRatio = totalCount > 0 + ? (double) accumulator.lineChunkCount / totalCount : 0.0; + + // Check for TableBorder in StaticContainers + boolean hasTableBorder = checkTableBorderPresence(pageNumber); + + // Check for suspicious text patterns (grid-like layout) + boolean hasSuspiciousPattern = checkSuspiciousPatterns(accumulator.textChunks); + + // Count aligned line groups (potential table columns) + int alignedLineGroups = countAlignedLineGroups( + accumulator.textChunks, thresholds.getGridGapMultiplier()); + + // Build vector graphics signals + boolean hasGridLines = accumulator.horizontalLineCount >= MIN_GRID_LINES + && accumulator.verticalLineCount >= MIN_GRID_LINES; + boolean hasTableBorderLines = (accumulator.horizontalLineCount + accumulator.verticalLineCount) + >= MIN_LINE_COUNT_FOR_TABLE; + boolean hasRowSeparatorPattern = accumulator.rowSeparatorPatternCount >= MIN_ROW_SEPARATOR_PATTERN; + boolean hasAlignedShortLines = accumulator.hasAlignedShortHorizontalLines(); + + // Build text pattern signals + double patternDensity = accumulator.nonWhitespaceTextCount > 0 + ? (double) accumulator.tablePatternCount / accumulator.nonWhitespaceTextCount : 0.0; + boolean hasConsecutivePatterns = accumulator.maxConsecutiveStreak >= MIN_CONSECUTIVE_PATTERNS; + + // Calculate large image ratio and aspect ratio + double largeImageRatio = 0.0; + double largeImageAspectRatio = accumulator.maxImageAspectRatio; + try { + BoundingBox pageBoundingBox = DocumentProcessor.getPageBoundingBox(pageNumber); + if (pageBoundingBox != null && accumulator.maxImageArea > 0) { + double pageArea = pageBoundingBox.getWidth() * pageBoundingBox.getHeight(); + if (pageArea > 0) { + largeImageRatio = accumulator.maxImageArea / pageArea; + } + } + } catch (Exception e) { + // DocumentProcessor may not be initialized in some test contexts + } + + return new TriageSignals( + accumulator.lineChunkCount, + accumulator.textChunkCount, + lineToTextRatio, + alignedLineGroups, + hasTableBorder, + hasSuspiciousPattern, + accumulator.horizontalLineCount, + accumulator.verticalLineCount, + accumulator.lineArtCount, + hasGridLines, + hasTableBorderLines, + hasRowSeparatorPattern, + hasAlignedShortLines, + accumulator.tablePatternCount, + accumulator.maxConsecutiveStreak, + patternDensity, + hasConsecutivePatterns, + largeImageRatio, + largeImageAspectRatio + ); + } + + /** + * Helper class to accumulate signals during page analysis. + */ + private static class SignalAccumulator { + int lineChunkCount = 0; + int textChunkCount = 0; + int nonWhitespaceTextCount = 0; + int horizontalLineCount = 0; + int verticalLineCount = 0; + int lineArtCount = 0; + int tablePatternCount = 0; + int currentConsecutiveStreak = 0; + int maxConsecutiveStreak = 0; + int rowSeparatorPatternCount = 0; + boolean lastWasHorizontalLine = false; + TextChunk previousTextChunk = null; + List textChunks = new ArrayList<>(); + List shortHorizontalLines = new ArrayList<>(); + double maxImageArea = 0.0; + double maxImageAspectRatio = 0.0; + + void processLineChunk(LineChunk lineChunk) { + lineChunkCount++; + BoundingBox box = lineChunk.getBoundingBox(); + double width = box.getRightX() - box.getLeftX(); + double height = box.getTopY() - box.getBottomY(); + + // Horizontal line: width >> height + if (width > height * 3) { + horizontalLineCount++; + if (!lastWasHorizontalLine) { + rowSeparatorPatternCount++; + } + // Track short horizontal lines for aligned pattern detection + shortHorizontalLines.add(new double[]{box.getLeftX(), width}); + lastWasHorizontalLine = true; + } + // Vertical line: height >> width + else if (height > width * 3) { + verticalLineCount++; + } + } + + void processLineArtChunk() { + lineArtCount++; + } + + void processImageChunk(ImageChunk imageChunk) { + BoundingBox box = imageChunk.getBoundingBox(); + double width = box.getRightX() - box.getLeftX(); + double height = box.getTopY() - box.getBottomY(); + double area = width * height; + if (area > maxImageArea) { + maxImageArea = area; + // Store aspect ratio of the largest image + maxImageAspectRatio = height > 0 ? width / height : 0.0; + } + } + + void processTextChunk(TextChunk textChunk) { + textChunkCount++; + textChunks.add(textChunk); + + if (textChunk.isWhiteSpaceChunk()) { + return; + } + + nonWhitespaceTextCount++; + lastWasHorizontalLine = false; + + if (previousTextChunk != null) { + if (areSuspiciousTextChunks(previousTextChunk, textChunk)) { + tablePatternCount++; + currentConsecutiveStreak++; + if (currentConsecutiveStreak > maxConsecutiveStreak) { + maxConsecutiveStreak = currentConsecutiveStreak; + } + } else { + currentConsecutiveStreak = 0; + } + } + previousTextChunk = textChunk; + } + + /** + * Detects suspicious text chunks that may indicate table structure. + */ + private boolean areSuspiciousTextChunks(TextChunk previous, TextChunk current) { + // Text going backwards suggests multi-column layout or table + if (previous.getTopY() < current.getBottomY()) { + // Filter out multi-column layout: X moves significantly left + double xShift = previous.getLeftX() - current.getLeftX(); + double textWidth = previous.getRightX() - previous.getLeftX(); + if (textWidth > 0 && xShift > textWidth * MULTI_COLUMN_X_SHIFT_RATIO) { + return false; + } + return true; + } + // Same baseline with large horizontal gap suggests table cell boundaries + double baselineDiff = Math.abs(previous.getBaseLine() - current.getBaseLine()); + double avgHeight = (previous.getHeight() + current.getHeight()) / 2.0; + if (baselineDiff < avgHeight * BASELINE_EPSILON) { + return current.getLeftX() - previous.getRightX() > current.getHeight() * X_DIFFERENCE_EPSILON; + } + return false; + } + + /** + * Checks for aligned short horizontal lines with same length and X position. + */ + boolean hasAlignedShortHorizontalLines() { + if (shortHorizontalLines.size() < MIN_ALIGNED_SHORT_LINES) { + return false; + } + for (int i = 0; i < shortHorizontalLines.size(); i++) { + double[] refLine = shortHorizontalLines.get(i); + double refLeftX = refLine[0]; + double refLen = refLine[1]; + int matchCount = 1; + for (int j = i + 1; j < shortHorizontalLines.size(); j++) { + double[] line = shortHorizontalLines.get(j); + double leftX = line[0]; + double len = line[1]; + double xDiff = Math.abs(refLeftX - leftX); + double lenDiff = Math.abs(refLen - len); + double maxLen = Math.max(refLen, len); + boolean xMatches = maxLen > 0 && xDiff / maxLen <= LINE_LENGTH_TOLERANCE; + boolean lenMatches = maxLen > 0 && lenDiff / maxLen <= LINE_LENGTH_TOLERANCE; + if (xMatches && lenMatches) { + matchCount++; + if (matchCount >= MIN_ALIGNED_SHORT_LINES) { + return true; + } + } + } + } + return false; + } + } + + /** + * Checks if any TableBorder exists for the given page. + * + * @param pageNumber The 0-indexed page number. + * @return true if TableBorder is detected, false otherwise. + */ + private static boolean checkTableBorderPresence(int pageNumber) { + try { + SortedSet tableBorders = + StaticContainers.getTableBordersCollection().getTableBorders(pageNumber); + return tableBorders != null && !tableBorders.isEmpty(); + } catch (Exception e) { + // StaticContainers may not be initialized in some contexts + return false; + } + } + + /** + * Checks for suspicious text patterns indicating possible tables. + * Looks for text chunks on the same baseline with large horizontal gaps. + * + * @param textChunks The list of text chunks on the page. + * @return true if suspicious patterns are detected, false otherwise. + */ + private static boolean checkSuspiciousPatterns(List textChunks) { + if (textChunks.size() < 2) { + return false; + } + + TextChunk previous = null; + for (TextChunk current : textChunks) { + if (current.isWhiteSpaceChunk()) { + continue; + } + // Check if text chunks are on the same line with large gap + // Note: Y-overlap check removed (Experiment 001, 2026-01-03) + // The condition `previous.getTopY() < current.getBottomY()` caused 59% of FPs + if (previous != null && areOnSameBaseline(previous, current)) { + double gap = current.getLeftX() - previous.getRightX(); + double avgHeight = (previous.getHeight() + current.getHeight()) / 2.0; + // Gap larger than 3x text height suggests table columns + if (gap > avgHeight * 3.0) { + return true; + } + } + previous = current; + } + return false; + } + + /** + * Checks if two text chunks are on the same baseline. + * + * @param chunk1 First text chunk. + * @param chunk2 Second text chunk. + * @return true if baselines are aligned within epsilon. + */ + private static boolean areOnSameBaseline(TextChunk chunk1, TextChunk chunk2) { + double baselineDiff = Math.abs(chunk1.getBaseLine() - chunk2.getBaseLine()); + double avgHeight = (chunk1.getHeight() + chunk2.getHeight()) / 2.0; + return baselineDiff < avgHeight * BASELINE_EPSILON; + } + + /** + * Counts groups of text chunks with aligned baselines and large gaps. + * Multiple aligned groups suggest a table structure. + * + * @param textChunks The list of text chunks. + * @param gapMultiplier The gap threshold multiplier. + * @return The number of aligned groups detected. + */ + private static int countAlignedLineGroups(List textChunks, double gapMultiplier) { + if (textChunks.size() < 2) { + return 0; + } + + // Group text chunks by baseline + Map> baselineGroups = new HashMap<>(); + for (TextChunk chunk : textChunks) { + if (chunk.isWhiteSpaceChunk()) { + continue; + } + // Round baseline to group similar values + double roundedBaseline = Math.round(chunk.getBaseLine() * 10.0) / 10.0; + + // Find existing group within epsilon + Double matchedKey = null; + for (Double key : baselineGroups.keySet()) { + if (Math.abs(key - roundedBaseline) < chunk.getHeight() * BASELINE_EPSILON) { + matchedKey = key; + break; + } + } + + if (matchedKey != null) { + baselineGroups.get(matchedKey).add(chunk); + } else { + List group = new ArrayList<>(); + group.add(chunk); + baselineGroups.put(roundedBaseline, group); + } + } + + // Count groups with multiple chunks and large gaps + int alignedGroupCount = 0; + for (List group : baselineGroups.values()) { + if (group.size() >= 2) { + // Sort by X position + group.sort((a, b) -> Double.compare(a.getLeftX(), b.getLeftX())); + + // Check for large gaps between consecutive chunks + boolean hasLargeGap = false; + for (int i = 1; i < group.size(); i++) { + TextChunk prev = group.get(i - 1); + TextChunk curr = group.get(i); + double gap = curr.getLeftX() - prev.getRightX(); + double avgHeight = (prev.getHeight() + curr.getHeight()) / 2.0; + if (gap > avgHeight * gapMultiplier) { + hasLargeGap = true; + break; + } + } + + if (hasLargeGap) { + alignedGroupCount++; + } + } + } + + return alignedGroupCount; + } + + /** + * Performs batch triage for all pages in a document. + * + * @param pageContents Map of page number to filtered contents. + * @param config The hybrid configuration. + * @return Map of page number to triage result. + */ + public static Map triageAllPages( + Map> pageContents, + HybridConfig config) { + return triageAllPages(pageContents, new TriageThresholds()); + } + + /** + * Performs batch triage for all pages with custom thresholds. + * + * @param pageContents Map of page number to filtered contents. + * @param thresholds The triage thresholds to use. + * @return Map of page number to triage result. + */ + public static Map triageAllPages( + Map> pageContents, + TriageThresholds thresholds) { + + Map results = new HashMap<>(); + + for (Map.Entry> entry : pageContents.entrySet()) { + int pageNumber = entry.getKey(); + List contents = entry.getValue(); + TriageResult result = classifyPage(contents, pageNumber, thresholds); + results.put(pageNumber, result); + } + + return results; + } + + /** + * Performs batch triage for a list of pages (indexed by position). + * + * @param pagesContents List of page contents, where index is page number. + * @param config The hybrid configuration. + * @return Map of page number to triage result. + */ + public static Map triageAllPages( + List> pagesContents, + HybridConfig config) { + + Map> pageMap = new HashMap<>(); + for (int i = 0; i < pagesContents.size(); i++) { + pageMap.put(i, pagesContents.get(i)); + } + return triageAllPages(pageMap, config); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/JsonName.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/JsonName.java new file mode 100644 index 0000000..46e6452 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/JsonName.java @@ -0,0 +1,81 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.json; + +public class JsonName { + public static final String PAGE_NUMBER = "page number"; + public static final String LEVEL = "level"; + public static final String BOUNDING_BOX = "bounding box"; + public static final String TYPE = "type"; + public static final String ID = "id"; + public static final String IMAGE_CHUNK_TYPE = "image"; + public static final String LIST_ITEM_TYPE = "list item"; + public static final String LINE_CHUNK_TYPE = "line"; + public static final String CONTENT = "content"; + public static final String HIDDEN_TEXT = "hidden text"; + public static final String TEXT_CHUNK_TYPE = "text chunk"; + public static final String TABLE_TYPE = "table"; + public static final String TEXT_BLOCK = "text block"; + public static final String LIST_TYPE = "list"; + public static final String TOC_TYPE = "toc"; + public static final String TOC_ITEM_TYPE = "toc item"; + public static final String TABLE_CELL_TYPE = "table cell"; + public static final String ROW_TYPE = "table row"; + public static final String FONT_TYPE = "font"; + public static final String FONT_SIZE = "font size"; + public static final String TEXT_COLOR = "text color"; + public static final String PARAGRAPH_TYPE = "paragraph"; + public static final String HEADING_TYPE = "heading"; + public static final String CAPTION_TYPE = "caption"; + public static final String KIDS = "kids"; + public static final String LIST_ITEMS = "list items"; + public static final String TOC_ITEMS = "toc items"; + public static final String NUMBER_OF_LIST_ITEMS = "number of list items"; + public static final String PREVIOUS_LIST_ID = "previous list id"; + public static final String NEXT_LIST_ID = "next list id"; + public static final String PREVIOUS_TOC_ID = "previous toc id"; + public static final String NEXT_TOC_ID = "next toc id"; + public static final String PREVIOUS_TABLE_ID = "previous table id"; + public static final String NEXT_TABLE_ID = "next table id"; + public static final String AUTHOR = "author"; + public static final String TITLE = "title"; + public static final String COLUMN_NUMBER = "column number"; + public static final String ROW_NUMBER = "row number"; + public static final String COLUMN_SPAN = "column span"; + public static final String ROW_SPAN = "row span"; + public static final String IS_HEADER = "is_header"; + public static final String NUMBER_OF_ROWS = "number of rows"; + public static final String NUMBER_OF_COLUMNS = "number of columns"; + public static final String NUMBER_OF_PAGES = "number of pages"; + public static final String FILE_NAME = "file name"; + public static final String HEADING_LEVEL = "heading level"; + public static final String CREATION_DATE = "creation date"; + public static final String MODIFICATION_DATE = "modification date"; + public static final String ROWS = "rows"; + public static final String CELLS = "cells"; + public static final String NUMBERING_STYLE = "numbering style"; + public static final String SOURCE = "source"; + public static final String DATA = "data"; + public static final String IMAGE_FORMAT = "format"; + public static final String FORMULA_TYPE = "formula"; + public static final String DESCRIPTION = "description"; + public static final String ALT = "alt"; + public static final String ALT_SOURCE = "alt_source"; + public static final String AI_SCORE = "ai_score"; + public static final String PDFUA_TAG = "pdfua_tag"; + public static final String SOURCE_LABEL = "source label"; + public static final String HYBRID = "hybrid"; +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/JsonWriter.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/JsonWriter.java new file mode 100644 index 0000000..97fcec7 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/JsonWriter.java @@ -0,0 +1,134 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.json; + +import com.fasterxml.jackson.core.JsonEncoding; +import com.fasterxml.jackson.core.JsonFactory; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.util.DefaultPrettyPrinter; +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.verapdf.as.ASAtom; +import org.verapdf.cos.COSDictionary; +import org.verapdf.cos.COSObjType; +import org.verapdf.cos.COSObject; +import org.verapdf.cos.COSTrailer; +import org.verapdf.gf.model.impl.cos.GFCosInfo; +import org.verapdf.pd.PDDocument; +import org.verapdf.tools.StaticResources; +import org.opendataloader.pdf.hybrid.ElementMetadata; +import org.opendataloader.pdf.json.serializers.SerializerUtil; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticHeaderOrFooter; +import org.verapdf.wcag.algorithms.entities.content.LineArtChunk; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; + +import java.io.File; +import java.io.IOException; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class JsonWriter { + private static final Logger LOGGER = Logger.getLogger(JsonWriter.class.getCanonicalName()); + private static JsonGenerator getJsonGenerator(String fileName) throws IOException { + JsonFactory jsonFactory = new JsonFactory(); + return jsonFactory.createGenerator(new File(fileName), JsonEncoding.UTF8) + .setPrettyPrinter(new DefaultPrettyPrinter()) + .setCodec(ObjectMapperHolder.getObjectMapper()); + } + + public static void writeToJson(File inputPDF, String outputFolder, List> contents) throws IOException { + writeToJson(inputPDF, outputFolder, contents, Collections.emptyMap(), null); + } + + public static void writeToJson(File inputPDF, String outputFolder, List> contents, + Map elementMetadata) throws IOException { + writeToJson(inputPDF, outputFolder, contents, elementMetadata, null); + } + + public static void writeToJson(File inputPDF, String outputFolder, List> contents, + Map elementMetadata, + Map hybridInfo) throws IOException { + writeToJson(inputPDF, outputFolder, contents, elementMetadata, hybridInfo, false); + } + + public static void writeToJson(File inputPDF, String outputFolder, List> contents, + Map elementMetadata, + Map hybridInfo, + boolean includeHeaderFooter) throws IOException { + StaticLayoutContainers.resetImageIndex(); + String jsonFileName = outputFolder + File.separator + inputPDF.getName().substring(0, inputPDF.getName().length() - 3) + "json"; + try (JsonGenerator jsonGenerator = getJsonGenerator(jsonFileName)) { + jsonGenerator.writeStartObject(); + writeDocumentInfo(jsonGenerator, inputPDF.getName()); + + if (hybridInfo != null && !hybridInfo.isEmpty()) { + writeHybridBlock(jsonGenerator, hybridInfo); + } + + SerializerUtil.setElementMetadata(elementMetadata); + try { + jsonGenerator.writeArrayFieldStart(JsonName.KIDS); + for (int pageNumber = 0; pageNumber < StaticContainers.getDocument().getNumberOfPages(); pageNumber++) { + for (IObject content : contents.get(pageNumber)) { + if (content instanceof LineArtChunk) { + continue; + } + if (!includeHeaderFooter && content instanceof SemanticHeaderOrFooter) { + continue; + } + jsonGenerator.writePOJO(content); + } + } + jsonGenerator.writeEndArray(); + } finally { + SerializerUtil.clearElementMetadata(); + } + + jsonGenerator.writeEndObject(); + LOGGER.log(Level.INFO, "Created {0}", jsonFileName); + } catch (Exception ex) { + LOGGER.log(Level.WARNING, "Unable to create JSON output: " + ex.getMessage()); + } + } + + private static void writeHybridBlock(JsonGenerator generator, Map hybridInfo) throws IOException { + generator.writeObjectFieldStart(JsonName.HYBRID); + for (Map.Entry entry : hybridInfo.entrySet()) { + generator.writePOJOField(entry.getKey(), entry.getValue()); + } + generator.writeEndObject(); + } + + private static void writeDocumentInfo(JsonGenerator generator, String pdfName) throws IOException { + PDDocument document = StaticResources.getDocument(); + generator.writeStringField(JsonName.FILE_NAME, pdfName); + generator.writeNumberField(JsonName.NUMBER_OF_PAGES, document.getNumberOfPages()); + COSTrailer trailer = document.getDocument().getTrailer(); + COSObject object = trailer.getKey(ASAtom.INFO); + GFCosInfo info = new GFCosInfo((COSDictionary) + (object != null && object.getType() == COSObjType.COS_DICT ? + object.getDirectBase() : COSDictionary.construct().get())); + generator.writeStringField(JsonName.AUTHOR, info.getAuthor() != null ? info.getAuthor() : info.getXMPCreator()); + generator.writeStringField(JsonName.TITLE, info.getTitle() != null ? info.getTitle() : info.getXMPTitle()); + generator.writeStringField(JsonName.CREATION_DATE, info.getCreationDate() != null ? + info.getCreationDate() : info.getXMPCreateDate()); + generator.writeStringField(JsonName.MODIFICATION_DATE, info.getModDate() != null ? + info.getModDate() : info.getXMPModifyDate()); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/ObjectMapperHolder.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/ObjectMapperHolder.java new file mode 100644 index 0000000..a08edeb --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/ObjectMapperHolder.java @@ -0,0 +1,103 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.json; + +import com.fasterxml.jackson.core.Version; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleModule; +import org.opendataloader.pdf.entities.SemanticFormula; +import org.opendataloader.pdf.entities.SemanticPicture; +import org.opendataloader.pdf.json.serializers.*; +import org.verapdf.wcag.algorithms.entities.*; +import org.verapdf.wcag.algorithms.entities.content.*; +import org.verapdf.wcag.algorithms.entities.lists.ListItem; +import org.verapdf.wcag.algorithms.entities.lists.PDFList; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderRow; + +public class ObjectMapperHolder { + private static final ObjectMapper objectMapper = new ObjectMapper(); + + static { + + SimpleModule module = new SimpleModule("NodeSerializer", new Version(2, 1, + 3, null, null, null)); + + TextChunkSerializer textChunkSerializer = new TextChunkSerializer(TextChunk.class); + module.addSerializer(TextChunk.class, textChunkSerializer); + + TextLineSerializer textLineSerializer = new TextLineSerializer(TextLine.class); + module.addSerializer(TextLine.class, textLineSerializer); + + ImageSerializer imageSerializer = new ImageSerializer(ImageChunk.class); + module.addSerializer(ImageChunk.class, imageSerializer); + + TableSerializer tableSerializer = new TableSerializer(TableBorder.class); + module.addSerializer(TableBorder.class, tableSerializer); + + TableCellSerializer tableCellSerializer = new TableCellSerializer(TableBorderCell.class); + module.addSerializer(TableBorderCell.class, tableCellSerializer); + + ListSerializer listSerializer = new ListSerializer(PDFList.class); + module.addSerializer(PDFList.class, listSerializer); + + ListItemSerializer listItemSerializer = new ListItemSerializer(ListItem.class); + module.addSerializer(ListItem.class, listItemSerializer); + + TOCSerializer tocSerializer = new TOCSerializer(SemanticTOC.class); + module.addSerializer(SemanticTOC.class, tocSerializer); + + TOCItemSerializer tocItemSerializer = new TOCItemSerializer(SemanticTOCI.class); + module.addSerializer(SemanticTOCI.class, tocItemSerializer); + + LineChunkSerializer lineChunkSerializer = new LineChunkSerializer(LineChunk.class); + module.addSerializer(LineChunk.class, lineChunkSerializer); + + SemanticTextNodeSerializer semanticTextNodeSerializer = new SemanticTextNodeSerializer(SemanticTextNode.class); + module.addSerializer(SemanticTextNode.class, semanticTextNodeSerializer); + + TableRowSerializer tableRowSerializer = new TableRowSerializer(TableBorderRow.class); + module.addSerializer(TableBorderRow.class, tableRowSerializer); + + HeadingSerializer headingSerializer = new HeadingSerializer(SemanticHeading.class); + module.addSerializer(SemanticHeading.class, headingSerializer); + + CaptionSerializer captionSerializer = new CaptionSerializer(SemanticCaption.class); + module.addSerializer(SemanticCaption.class, captionSerializer); + + DoubleSerializer doubleSerializer = new DoubleSerializer(Double.class); + module.addSerializer(Double.class, doubleSerializer); + + HeaderFooterSerializer headerFooterSerializer = new HeaderFooterSerializer(SemanticHeaderOrFooter.class); + module.addSerializer(SemanticHeaderOrFooter.class, headerFooterSerializer); + + FormulaSerializer formulaSerializer = new FormulaSerializer(SemanticFormula.class); + module.addSerializer(SemanticFormula.class, formulaSerializer); + + PictureSerializer pictureSerializer = new PictureSerializer(SemanticPicture.class); + module.addSerializer(SemanticPicture.class, pictureSerializer); + + //ParagraphSerializer paragraphSerializer = new ParagraphSerializer(SemanticParagraph.class); + //module.addSerializer(SemanticParagraph.class, paragraphSerializer); + + objectMapper.registerModule(module); + } + + public static ObjectMapper getObjectMapper() { + return objectMapper; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/CaptionSerializer.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/CaptionSerializer.java new file mode 100644 index 0000000..4b83ab5 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/CaptionSerializer.java @@ -0,0 +1,53 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.json.serializers; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import org.opendataloader.pdf.json.JsonName; +import org.verapdf.wcag.algorithms.entities.SemanticCaption; + +import java.io.IOException; + +/** + * Jackson serializer for SemanticCaption objects. + * Serializes captions with their essential info and linked content ID. + */ +public class CaptionSerializer extends StdSerializer { + + /** + * Creates a new CaptionSerializer. + * + * @param t the class type for SemanticCaption + */ + public CaptionSerializer(Class t) { + super(t); + } + + @Override + public void serialize(SemanticCaption caption, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) + throws IOException { + jsonGenerator.writeStartObject(); + SerializerUtil.writeEssentialInfo(jsonGenerator, caption, JsonName.CAPTION_TYPE); + if (caption.getLinkedContentId() != null) { + jsonGenerator.writeNumberField("linked content id", caption.getLinkedContentId()); + } + SerializerUtil.writeTextInfo(jsonGenerator, caption); + SerializerUtil.writeMetadataIfPresent(jsonGenerator, caption); + jsonGenerator.writeEndObject(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/DoubleSerializer.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/DoubleSerializer.java new file mode 100644 index 0000000..fb07eed --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/DoubleSerializer.java @@ -0,0 +1,58 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.json.serializers; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; + +import java.io.IOException; +import java.math.BigDecimal; +import java.math.RoundingMode; + +/** + * Jackson serializer for Double values. + * Rounds double values to 3 decimal places for cleaner JSON output. + */ +public class DoubleSerializer extends StdSerializer { + + /** + * Creates a new DoubleSerializer. + * + * @param t the class type for Double + */ + public DoubleSerializer(Class t) { + super(t); + } + + private static final int DEFAULT_ROUNDING_VALUE = 3; + + @Override + public void serialize(Double number, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) + throws IOException { + jsonGenerator.writeNumber(round(number, DEFAULT_ROUNDING_VALUE)); + } + + private static double round(double value, int decimalPlaces) { + if (decimalPlaces < 0) { + throw new IllegalArgumentException(); + } + + BigDecimal bigDecimalValue = new BigDecimal(Double.toString(value)); + bigDecimalValue = bigDecimalValue.setScale(decimalPlaces, RoundingMode.HALF_UP); + return bigDecimalValue.doubleValue(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/FormulaSerializer.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/FormulaSerializer.java new file mode 100644 index 0000000..2733573 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/FormulaSerializer.java @@ -0,0 +1,55 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.json.serializers; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import org.opendataloader.pdf.entities.SemanticFormula; +import org.opendataloader.pdf.json.JsonName; + +import java.io.IOException; + +/** + * JSON serializer for SemanticFormula objects. + * + *

    Produces JSON output in the format: + *

    + * {
    + *   "type": "formula",
    + *   "id": 123,
    + *   "page number": 1,
    + *   "bounding box": [x1, y1, x2, y2],
    + *   "content": "\\frac{a}{b}"
    + * }
    + * 
    + */ +public class FormulaSerializer extends StdSerializer { + + public FormulaSerializer(Class t) { + super(t); + } + + @Override + public void serialize(SemanticFormula formula, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) + throws IOException { + jsonGenerator.writeStartObject(); + SerializerUtil.writeEssentialInfo(jsonGenerator, formula, JsonName.FORMULA_TYPE); + jsonGenerator.writeStringField(JsonName.CONTENT, formula.getLatex()); + SerializerUtil.writeMetadataIfPresent(jsonGenerator, formula); + jsonGenerator.writeEndObject(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/HeaderFooterSerializer.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/HeaderFooterSerializer.java new file mode 100644 index 0000000..faff034 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/HeaderFooterSerializer.java @@ -0,0 +1,57 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.json.serializers; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import org.opendataloader.pdf.json.JsonName; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticHeaderOrFooter; +import org.verapdf.wcag.algorithms.entities.content.LineArtChunk; + +import java.io.IOException; + +/** + * Jackson serializer for SemanticHeaderOrFooter objects. + * Serializes headers and footers with their child contents. + */ +public class HeaderFooterSerializer extends StdSerializer { + + /** + * Creates a new HeaderFooterSerializer. + * + * @param t the class type for SemanticHeaderOrFooter + */ + public HeaderFooterSerializer(Class t) { + super(t); + } + + @Override + public void serialize(SemanticHeaderOrFooter header, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) + throws IOException { + jsonGenerator.writeStartObject(); + SerializerUtil.writeEssentialInfo(jsonGenerator, header, header.getSemanticType().getValue().toLowerCase()); + jsonGenerator.writeArrayFieldStart(JsonName.KIDS); + for (IObject content : header.getContents()) { + if (!(content instanceof LineArtChunk)) { + jsonGenerator.writePOJO(content); + } + } + jsonGenerator.writeEndArray(); + jsonGenerator.writeEndObject(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/HeadingSerializer.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/HeadingSerializer.java new file mode 100644 index 0000000..db32410 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/HeadingSerializer.java @@ -0,0 +1,51 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.json.serializers; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import org.opendataloader.pdf.json.JsonName; +import org.verapdf.wcag.algorithms.entities.SemanticHeading; + +import java.io.IOException; + +/** + * Jackson serializer for SemanticHeading objects. + * Serializes headings with their level and text content. + */ +public class HeadingSerializer extends StdSerializer { + + /** + * Creates a new HeadingSerializer. + * + * @param t the class type for SemanticHeading + */ + public HeadingSerializer(Class t) { + super(t); + } + + @Override + public void serialize(SemanticHeading heading, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) + throws IOException { + jsonGenerator.writeStartObject(); + SerializerUtil.writeEssentialInfo(jsonGenerator, heading, JsonName.HEADING_TYPE); + jsonGenerator.writeNumberField(JsonName.HEADING_LEVEL, heading.getHeadingLevel()); + SerializerUtil.writeTextInfo(jsonGenerator, heading); + SerializerUtil.writeMetadataIfPresent(jsonGenerator, heading); + jsonGenerator.writeEndObject(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/ImageSerializer.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/ImageSerializer.java new file mode 100644 index 0000000..1e7ef7e --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/ImageSerializer.java @@ -0,0 +1,82 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.json.serializers; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.opendataloader.pdf.entities.EnrichedImageChunk; +import org.opendataloader.pdf.json.JsonName; +import org.opendataloader.pdf.markdown.MarkdownSyntax; +import org.opendataloader.pdf.utils.Base64ImageUtils; +import org.opendataloader.pdf.utils.ImagesUtils; +import org.verapdf.wcag.algorithms.entities.content.ImageChunk; + +import java.io.File; +import java.io.IOException; + +public class ImageSerializer extends StdSerializer { + + public ImageSerializer(Class t) { + super(t); + } + + @Override + public void serialize(ImageChunk imageChunk, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) + throws IOException { + String imageFormat = StaticLayoutContainers.getImageFormat(); + String absolutePath = String.format(MarkdownSyntax.IMAGE_FILE_NAME_FORMAT, StaticLayoutContainers.getImagesDirectory(), File.separator, imageChunk.getIndex(), imageFormat); + String relativePath = String.format(MarkdownSyntax.IMAGE_FILE_NAME_FORMAT, StaticLayoutContainers.getImagesDirectoryName(), "/", imageChunk.getIndex(), imageFormat); + jsonGenerator.writeStartObject(); + SerializerUtil.writeEssentialInfo(jsonGenerator, imageChunk, JsonName.IMAGE_CHUNK_TYPE); + // alt / alt_source policy (PDF/UA semantics): + // - original /Alt present → alt = original, alt_source = "original" + // - no /Alt, AI caption → alt = AI caption, alt_source = "ai-generated" + // - neither present → no alt field, alt_source = "missing" + // We never synthesize a placeholder like "Image N": PDF/UA forbids false + // alternatives and a synthetic string defeats the evidence-report + // signal a reviewer needs to find genuinely missing alt text. + String alt = ""; + String altSource = "missing"; + if (imageChunk instanceof EnrichedImageChunk) { + EnrichedImageChunk eic = (EnrichedImageChunk) imageChunk; + alt = eic.sanitizeDescription(); + if (!alt.isEmpty()) { + altSource = eic.getAltSource() == EnrichedImageChunk.AltSource.AI_GENERATED + ? "ai-generated" : "original"; + } + } + if (!alt.isEmpty()) { + jsonGenerator.writeStringField(JsonName.ALT, alt); + } + jsonGenerator.writeStringField(JsonName.ALT_SOURCE, altSource); + if (ImagesUtils.isImageFileExists(absolutePath)) { + if (StaticLayoutContainers.isEmbedImages()) { + File imageFile = new File(absolutePath); + String dataUri = Base64ImageUtils.toDataUri(imageFile, imageFormat); + if (dataUri != null) { + jsonGenerator.writeStringField(JsonName.DATA, dataUri); + jsonGenerator.writeStringField(JsonName.IMAGE_FORMAT, imageFormat); + } + } else { + jsonGenerator.writeStringField(JsonName.SOURCE, relativePath); + } + } + SerializerUtil.writeMetadataIfPresent(jsonGenerator, imageChunk); + jsonGenerator.writeEndObject(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/LineChunkSerializer.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/LineChunkSerializer.java new file mode 100644 index 0000000..85a30ca --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/LineChunkSerializer.java @@ -0,0 +1,39 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.json.serializers; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import org.opendataloader.pdf.json.JsonName; +import org.verapdf.wcag.algorithms.entities.content.LineChunk; + +import java.io.IOException; + +public class LineChunkSerializer extends StdSerializer { + + public LineChunkSerializer(Class t) { + super(t); + } + + @Override + public void serialize(LineChunk lineChunk, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) + throws IOException { + jsonGenerator.writeStartObject(); + SerializerUtil.writeEssentialInfo(jsonGenerator, lineChunk, JsonName.LINE_CHUNK_TYPE); + jsonGenerator.writeEndObject(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/ListItemSerializer.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/ListItemSerializer.java new file mode 100644 index 0000000..b7a0697 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/ListItemSerializer.java @@ -0,0 +1,49 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.json.serializers; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import org.opendataloader.pdf.json.JsonName; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.content.LineArtChunk; +import org.verapdf.wcag.algorithms.entities.lists.ListItem; + +import java.io.IOException; + +public class ListItemSerializer extends StdSerializer { + + public ListItemSerializer(Class t) { + super(t); + } + + @Override + public void serialize(ListItem item, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) + throws IOException { + jsonGenerator.writeStartObject(); + SerializerUtil.writeEssentialInfo(jsonGenerator, item, JsonName.LIST_ITEM_TYPE); + SerializerUtil.writeTextInfo(jsonGenerator, item); + jsonGenerator.writeArrayFieldStart(JsonName.KIDS); + for (IObject content : item.getContents()) { + if (!(content instanceof LineArtChunk)) { + jsonGenerator.writePOJO(content); + } + } + jsonGenerator.writeEndArray(); + jsonGenerator.writeEndObject(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/ListSerializer.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/ListSerializer.java new file mode 100644 index 0000000..2e4b372 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/ListSerializer.java @@ -0,0 +1,55 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.json.serializers; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import org.opendataloader.pdf.json.JsonName; +import org.verapdf.wcag.algorithms.entities.lists.ListItem; +import org.verapdf.wcag.algorithms.entities.lists.PDFList; + +import java.io.IOException; + +public class ListSerializer extends StdSerializer { + + public ListSerializer(Class t) { + super(t); + } + + @Override + public void serialize(PDFList list, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) + throws IOException { + jsonGenerator.writeStartObject(); + SerializerUtil.writeEssentialInfo(jsonGenerator, list, JsonName.LIST_TYPE); + jsonGenerator.writeStringField(JsonName.NUMBERING_STYLE, list.getNumberingStyle()); + jsonGenerator.writeNumberField(JsonName.NUMBER_OF_LIST_ITEMS, list.getNumberOfListItems()); + if (list.getPreviousListId() != null) { + jsonGenerator.writeNumberField(JsonName.PREVIOUS_LIST_ID, list.getPreviousListId()); + } + if (list.getNextListId() != null) { + jsonGenerator.writeNumberField(JsonName.NEXT_LIST_ID, list.getNextListId()); + } + jsonGenerator.writeArrayFieldStart(JsonName.LIST_ITEMS); + for (ListItem item : list.getListItems()) { + jsonGenerator.writePOJO(item); + } + + jsonGenerator.writeEndArray(); + SerializerUtil.writeMetadataIfPresent(jsonGenerator, list); + jsonGenerator.writeEndObject(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/ParagraphSerializer.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/ParagraphSerializer.java new file mode 100644 index 0000000..5938251 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/ParagraphSerializer.java @@ -0,0 +1,41 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.json.serializers; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import org.opendataloader.pdf.json.JsonName; +import org.verapdf.wcag.algorithms.entities.SemanticParagraph; + +import java.io.IOException; + +public class ParagraphSerializer extends StdSerializer { + + public ParagraphSerializer(Class t) { + super(t); + } + + @Override + public void serialize(SemanticParagraph textParagraph, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) + throws IOException { + jsonGenerator.writeStartObject(); + SerializerUtil.writeEssentialInfo(jsonGenerator, textParagraph, JsonName.PARAGRAPH_TYPE); + SerializerUtil.writeTextInfo(jsonGenerator, textParagraph); + SerializerUtil.writeMetadataIfPresent(jsonGenerator, textParagraph); + jsonGenerator.writeEndObject(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/PictureSerializer.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/PictureSerializer.java new file mode 100644 index 0000000..0c47e0b --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/PictureSerializer.java @@ -0,0 +1,80 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.json.serializers; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.opendataloader.pdf.entities.SemanticPicture; +import org.opendataloader.pdf.json.JsonName; +import org.opendataloader.pdf.markdown.MarkdownSyntax; +import org.opendataloader.pdf.utils.Base64ImageUtils; +import org.opendataloader.pdf.utils.ImagesUtils; + +import java.io.File; +import java.io.IOException; + +/** + * JSON serializer for SemanticPicture elements. + * + *

    Serializes pictures with their description (alt text) and image source. + */ +public class PictureSerializer extends StdSerializer { + + public PictureSerializer(Class t) { + super(t); + } + + @Override + public void serialize(SemanticPicture picture, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) + throws IOException { + String imageFormat = StaticLayoutContainers.getImageFormat(); + String absolutePath = String.format(MarkdownSyntax.IMAGE_FILE_NAME_FORMAT, StaticLayoutContainers.getImagesDirectory(), File.separator, picture.getPictureIndex(), imageFormat); + String relativePath = String.format(MarkdownSyntax.IMAGE_FILE_NAME_FORMAT, StaticLayoutContainers.getImagesDirectoryName(), "/", picture.getPictureIndex(), imageFormat); + + jsonGenerator.writeStartObject(); + SerializerUtil.writeEssentialInfo(jsonGenerator, picture, JsonName.IMAGE_CHUNK_TYPE); + + // alt / alt_source — same policy as ImageSerializer. A SemanticPicture + // only reaches this serializer when enrichBackendResults could not + // match it to a Java ImageChunk, i.e. the backend (always AI for + // SemanticPicture today) is the only source of alt text. Drop the + // legacy `description` field in favor of the unified `alt` schema. + String alt = picture.hasDescription() ? picture.sanitizeDescription() : ""; + if (!alt.isEmpty()) { + jsonGenerator.writeStringField(JsonName.ALT, alt); + jsonGenerator.writeStringField(JsonName.ALT_SOURCE, "ai-generated"); + } else { + jsonGenerator.writeStringField(JsonName.ALT_SOURCE, "missing"); + } + + if (ImagesUtils.isImageFileExists(absolutePath)) { + if (StaticLayoutContainers.isEmbedImages()) { + File imageFile = new File(absolutePath); + String dataUri = Base64ImageUtils.toDataUri(imageFile, imageFormat); + if (dataUri != null) { + jsonGenerator.writeStringField(JsonName.DATA, dataUri); + jsonGenerator.writeStringField(JsonName.IMAGE_FORMAT, imageFormat); + } + } else { + jsonGenerator.writeStringField(JsonName.SOURCE, relativePath); + } + } + SerializerUtil.writeMetadataIfPresent(jsonGenerator, picture); + jsonGenerator.writeEndObject(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/SemanticTextNodeSerializer.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/SemanticTextNodeSerializer.java new file mode 100644 index 0000000..4d8a041 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/SemanticTextNodeSerializer.java @@ -0,0 +1,41 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.json.serializers; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import org.verapdf.wcag.algorithms.entities.SemanticTextNode; + +import java.io.IOException; + +//For now this class is used to process headers, footers, headings, captions. +public class SemanticTextNodeSerializer extends StdSerializer { + + public SemanticTextNodeSerializer(Class t) { + super(t); + } + + @Override + public void serialize(SemanticTextNode textNode, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) + throws IOException { + jsonGenerator.writeStartObject(); + SerializerUtil.writeEssentialInfo(jsonGenerator, textNode, textNode.getSemanticType().toString().toLowerCase()); + SerializerUtil.writeTextInfo(jsonGenerator, textNode); + SerializerUtil.writeMetadataIfPresent(jsonGenerator, textNode); + jsonGenerator.writeEndObject(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/SerializerUtil.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/SerializerUtil.java new file mode 100644 index 0000000..b386744 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/SerializerUtil.java @@ -0,0 +1,219 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.json.serializers; + +import com.fasterxml.jackson.core.JsonGenerator; +import org.opendataloader.pdf.hybrid.ElementMetadata; +import org.opendataloader.pdf.json.JsonName; +import org.opendataloader.pdf.utils.TextNodeUtils; +import org.verapdf.tools.TaggedPDFConstants; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticHeading; +import org.verapdf.wcag.algorithms.entities.SemanticTextNode; +import org.verapdf.wcag.algorithms.entities.content.TextBlock; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; + +import java.io.IOException; +import java.util.Arrays; +import java.util.Collections; +import java.util.Map; + +public class SerializerUtil { + + private static final ThreadLocal> ELEMENT_METADATA = + ThreadLocal.withInitial(Collections::emptyMap); + + public static void setElementMetadata(Map metadata) { + ELEMENT_METADATA.set(metadata != null ? metadata : Collections.emptyMap()); + } + + public static void clearElementMetadata() { + ELEMENT_METADATA.remove(); + } + + /** + * Writes element-level metadata fields (confidence, source label, etc.) if available. + * Call this before writeEndObject() in each serializer. + */ + public static void writeMetadataIfPresent(JsonGenerator gen, IObject object) throws IOException { + if (object == null || object.getRecognizedStructureId() == null) return; + Map metadata = ELEMENT_METADATA.get(); + if (metadata.isEmpty()) return; + + ElementMetadata meta = metadata.get(object.getRecognizedStructureId()); + if (meta == null) return; + + if (meta.getAiScore() >= 0.0) { + gen.writeNumberField(JsonName.AI_SCORE, meta.getAiScore()); + } + if (meta.getSourceLabel() >= 0) { + gen.writeNumberField(JsonName.SOURCE_LABEL, meta.getSourceLabel()); + } + + if (meta.getHeadingInferenceMethod() != null) { + gen.writeObjectFieldStart("heading inference"); + gen.writeStringField("method", meta.getHeadingInferenceMethod()); + if (meta.getBboxHeightPx() != null) { + gen.writeNumberField("bbox height px", meta.getBboxHeightPx()); + } + gen.writeEndObject(); + } + + if (meta.getTsr() != null) { + gen.writeObjectFieldStart("tsr"); + gen.writeNumberField("num cells", meta.getTsr().getNumCells()); + if (meta.getTsr().getHtml() != null && !meta.getTsr().getHtml().isEmpty()) { + gen.writeStringField("html", meta.getTsr().getHtml()); + } + if (meta.getTsr().getRunTimeMs() > 0) { + gen.writeNumberField("run time ms", meta.getTsr().getRunTimeMs()); + } + gen.writeEndObject(); + } + + if (meta.getCaption() != null) { + gen.writeObjectFieldStart("caption"); + if (meta.getCaption().getText() != null) { + gen.writeStringField("text", meta.getCaption().getText()); + } + if (meta.getCaption().getLanguage() != null) { + gen.writeStringField("language", meta.getCaption().getLanguage()); + } + if (meta.getCaption().getRunTimeMs() > 0) { + gen.writeNumberField("run time ms", meta.getCaption().getRunTimeMs()); + } + gen.writeEndObject(); + } + + if (meta.getRegionlistResolution() != null) { + gen.writeObjectFieldStart("regionlist resolution"); + gen.writeStringField("strategy", meta.getRegionlistResolution().getStrategy()); + gen.writeBooleanField("tsr attempted", meta.getRegionlistResolution().isTsrAttempted()); + if (meta.getRegionlistResolution().getTsrResult() != null) { + gen.writeStringField("tsr result", meta.getRegionlistResolution().getTsrResult()); + } + gen.writeEndObject(); + } + + if (meta.getWordMatchMethod() != null) { + gen.writeObjectFieldStart("word match"); + gen.writeStringField("method", meta.getWordMatchMethod()); + gen.writeNumberField("matched words", meta.getMatchedWordCount()); + gen.writeEndObject(); + } + + if (meta.getTextSource() != null) { + gen.writeStringField("text source", meta.getTextSource()); + } + if (meta.getStreamOcrSimilarity() != null) { + gen.writeNumberField("stream ocr similarity", meta.getStreamOcrSimilarity()); + } + } + + public static void writeEssentialInfo(JsonGenerator jsonGenerator, IObject object, String type) throws IOException { + jsonGenerator.writeStringField(JsonName.TYPE, type); + String pdfuaTag = pdfuaTagFor(type, object); + if (pdfuaTag != null) { + jsonGenerator.writeStringField(JsonName.PDFUA_TAG, pdfuaTag); + } + Long id = object.getRecognizedStructureId(); + if (id != null && id != 0L) { + jsonGenerator.writeNumberField(JsonName.ID, id); + } + if (object.getLevel() != null) { + jsonGenerator.writeStringField(JsonName.LEVEL, object.getLevel()); + } + jsonGenerator.writeNumberField(JsonName.PAGE_NUMBER, object.getPageNumber() + 1); + jsonGenerator.writeArrayFieldStart(JsonName.BOUNDING_BOX); + jsonGenerator.writePOJO(object.getLeftX()); + jsonGenerator.writePOJO(object.getBottomY()); + jsonGenerator.writePOJO(object.getRightX()); + jsonGenerator.writePOJO(object.getTopY()); + jsonGenerator.writeEndArray(); + } + + /** + * Maps an extraction JSON `type` (plus heading level when relevant) to the + * PDF/UA structure tag that AutoTaggingProcessor will emit for the node. + * Returns null when the node has no canonical PDF/UA tag (e.g. text chunks + * that live below the structure-element granularity). + */ + static String pdfuaTagFor(String type, IObject object) { + if (type == null) { + return null; + } + switch (type) { + case JsonName.HEADING_TYPE: + if (object instanceof SemanticHeading) { + int level = ((SemanticHeading) object).getHeadingLevel(); + if (level >= 1 && level <= 6) { + return "H" + level; + } + } + // Fallback for unleveled headings. PDF/UA-2 deprecates the + // plain "H" tag in favor of H1..H6; emit it only because we + // cannot infer a level. Downstream remediation may upgrade + // this when more context is available. + return TaggedPDFConstants.H; + case JsonName.PARAGRAPH_TYPE: + return TaggedPDFConstants.P; + case JsonName.IMAGE_CHUNK_TYPE: + return TaggedPDFConstants.FIGURE; + case JsonName.FORMULA_TYPE: + return TaggedPDFConstants.FORMULA; + case JsonName.CAPTION_TYPE: + return TaggedPDFConstants.CAPTION; + case JsonName.LIST_TYPE: + return TaggedPDFConstants.L; + case JsonName.LIST_ITEM_TYPE: + return TaggedPDFConstants.LI; + case JsonName.TOC_TYPE: + return TaggedPDFConstants.TOC; + case JsonName.TOC_ITEM_TYPE: + return TaggedPDFConstants.TOCI; + case JsonName.TABLE_TYPE: + return TaggedPDFConstants.TABLE; + case JsonName.TABLE_CELL_TYPE: + return ((TableBorderCell)object).isHeaderCell() ? TaggedPDFConstants.TH : TaggedPDFConstants.TD; + default: + // header/footer/footnote/line/text-chunk/text-block + // either become Artifact or are not promoted to their own + // PDF/UA structure element. Leave the tag unset for now. + return null; + } + } + + public static void writeTextInfo(JsonGenerator jsonGenerator, SemanticTextNode textNode) throws IOException { + jsonGenerator.writeStringField(JsonName.FONT_TYPE, textNode.getFontName()); + jsonGenerator.writePOJOField(JsonName.FONT_SIZE, textNode.getFontSize()); + double[] textColor = TextNodeUtils.getTextColorOrNull(textNode); + if (textColor != null) { + jsonGenerator.writeStringField(JsonName.TEXT_COLOR, Arrays.toString(textColor)); + } + jsonGenerator.writeStringField(JsonName.CONTENT, textNode.getValue()); + if (textNode.isHiddenText()) { + jsonGenerator.writeBooleanField(JsonName.HIDDEN_TEXT, true); + } + } + + public static void writeTextInfo(JsonGenerator jsonGenerator, TextBlock textBlock) throws IOException { + jsonGenerator.writeStringField(JsonName.FONT_TYPE, textBlock.getFirstLine().getFirstTextChunk().getFontName()); + jsonGenerator.writePOJOField(JsonName.FONT_SIZE, textBlock.getFontSize()); + jsonGenerator.writeStringField(JsonName.TEXT_COLOR, Arrays.toString( + textBlock.getFirstLine().getFirstTextChunk().getFontColor())); + jsonGenerator.writeStringField(JsonName.CONTENT, textBlock.toString()); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/TOCItemSerializer.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/TOCItemSerializer.java new file mode 100644 index 0000000..bfed95b --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/TOCItemSerializer.java @@ -0,0 +1,49 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.json.serializers; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import org.opendataloader.pdf.json.JsonName; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticTOCI; +import org.verapdf.wcag.algorithms.entities.content.LineArtChunk; + +import java.io.IOException; + +public class TOCItemSerializer extends StdSerializer { + + public TOCItemSerializer(Class t) { + super(t); + } + + @Override + public void serialize(SemanticTOCI item, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) + throws IOException { + jsonGenerator.writeStartObject(); + SerializerUtil.writeEssentialInfo(jsonGenerator, item, JsonName.TOC_ITEM_TYPE); + SerializerUtil.writeTextInfo(jsonGenerator, item); + jsonGenerator.writeArrayFieldStart(JsonName.KIDS); + for (IObject content : item.getContents()) { + if (!(content instanceof LineArtChunk)) { + jsonGenerator.writePOJO(content); + } + } + jsonGenerator.writeEndArray(); + jsonGenerator.writeEndObject(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/TOCSerializer.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/TOCSerializer.java new file mode 100644 index 0000000..0e79d0e --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/TOCSerializer.java @@ -0,0 +1,52 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.json.serializers; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import org.opendataloader.pdf.json.JsonName; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticTOC; + +import java.io.IOException; + +public class TOCSerializer extends StdSerializer { + + public TOCSerializer(Class t) { + super(t); + } + + @Override + public void serialize(SemanticTOC toc, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) + throws IOException { + jsonGenerator.writeStartObject(); + SerializerUtil.writeEssentialInfo(jsonGenerator, toc, JsonName.TOC_TYPE); + if (toc.getPreviousTOCId() != null) { + jsonGenerator.writeNumberField(JsonName.PREVIOUS_TOC_ID, toc.getPreviousTOCId()); + } + if (toc.getNextTOCId() != null) { + jsonGenerator.writeNumberField(JsonName.NEXT_TOC_ID, toc.getNextTOCId()); + } + jsonGenerator.writeArrayFieldStart(JsonName.TOC_ITEMS); + for (IObject child : toc.getTOCItems()) { + jsonGenerator.writePOJO(child); + } + jsonGenerator.writeEndArray(); + SerializerUtil.writeMetadataIfPresent(jsonGenerator, toc); + jsonGenerator.writeEndObject(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/TableCellSerializer.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/TableCellSerializer.java new file mode 100644 index 0000000..55061bb --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/TableCellSerializer.java @@ -0,0 +1,55 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.json.serializers; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import org.opendataloader.pdf.json.JsonName; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.content.LineArtChunk; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; + +import java.io.IOException; + +public class TableCellSerializer extends StdSerializer { + + public TableCellSerializer(Class t) { + super(t); + } + + @Override + public void serialize(TableBorderCell cell, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) + throws IOException { + jsonGenerator.writeStartObject(); + SerializerUtil.writeEssentialInfo(jsonGenerator, cell, JsonName.TABLE_CELL_TYPE); + jsonGenerator.writeNumberField(JsonName.ROW_NUMBER, cell.getRowNumber() + 1); + jsonGenerator.writeNumberField(JsonName.COLUMN_NUMBER, cell.getColNumber() + 1); + jsonGenerator.writeNumberField(JsonName.ROW_SPAN, cell.getRowSpan()); + jsonGenerator.writeNumberField(JsonName.COLUMN_SPAN, cell.getColSpan()); + if (cell.isHeaderCell()) { + jsonGenerator.writeBooleanField(JsonName.IS_HEADER, true); + } + jsonGenerator.writeArrayFieldStart(JsonName.KIDS); + for (IObject content : cell.getContents()) { + if (!(content instanceof LineArtChunk)) { + jsonGenerator.writePOJO(content); + } + } + jsonGenerator.writeEndArray(); + jsonGenerator.writeEndObject(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/TableRowSerializer.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/TableRowSerializer.java new file mode 100644 index 0000000..dbd837b --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/TableRowSerializer.java @@ -0,0 +1,51 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.json.serializers; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import org.opendataloader.pdf.json.JsonName; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderRow; + +import java.io.IOException; + +public class TableRowSerializer extends StdSerializer { + + public TableRowSerializer(Class t) { + super(t); + } + + @Override + public void serialize(TableBorderRow row, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) + throws IOException { + jsonGenerator.writeStartObject(); + jsonGenerator.writeStringField(JsonName.TYPE, JsonName.ROW_TYPE); + jsonGenerator.writeNumberField(JsonName.ROW_NUMBER, row.getRowNumber() + 1); + jsonGenerator.writeArrayFieldStart(JsonName.CELLS); + TableBorderCell[] cells = row.getCells(); + for (int columnNumber = 0; columnNumber < cells.length; columnNumber++) { + TableBorderCell cell = cells[columnNumber]; + if (cell.getColNumber() == columnNumber && cell.getRowNumber() == row.getRowNumber()) { + jsonGenerator.writePOJO(cell); + } + } + + jsonGenerator.writeEndArray(); + jsonGenerator.writeEndObject(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/TableSerializer.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/TableSerializer.java new file mode 100644 index 0000000..0b2db27 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/TableSerializer.java @@ -0,0 +1,66 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.json.serializers; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import org.opendataloader.pdf.json.JsonName; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.content.LineArtChunk; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderRow; + +import java.io.IOException; + +public class TableSerializer extends StdSerializer { + + public TableSerializer(Class t) { + super(t); + } + + @Override + public void serialize(TableBorder table, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) + throws IOException { + jsonGenerator.writeStartObject(); + SerializerUtil.writeEssentialInfo(jsonGenerator, table, table.isTextBlock() ? JsonName.TEXT_BLOCK : JsonName.TABLE_TYPE); + if (table.isTextBlock()) { + jsonGenerator.writeArrayFieldStart(JsonName.KIDS); + for (IObject content : table.getCell(0, 0).getContents()) { + if (!(content instanceof LineArtChunk)) { + jsonGenerator.writePOJO(content); + } + } + jsonGenerator.writeEndArray(); + } else { + jsonGenerator.writeNumberField(JsonName.NUMBER_OF_ROWS, table.getNumberOfRows()); + jsonGenerator.writeNumberField(JsonName.NUMBER_OF_COLUMNS, table.getNumberOfColumns()); + if (table.getPreviousTableId() != null) { + jsonGenerator.writeNumberField(JsonName.PREVIOUS_TABLE_ID, table.getPreviousTableId()); + } + if (table.getNextTableId() != null) { + jsonGenerator.writeNumberField(JsonName.NEXT_TABLE_ID, table.getNextTableId()); + } + jsonGenerator.writeArrayFieldStart(JsonName.ROWS); + for (TableBorderRow row : table.getRows()) { + jsonGenerator.writePOJO(row); + } + jsonGenerator.writeEndArray(); + } + SerializerUtil.writeMetadataIfPresent(jsonGenerator, table); + jsonGenerator.writeEndObject(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/TextChunkSerializer.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/TextChunkSerializer.java new file mode 100644 index 0000000..a8a9bb2 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/TextChunkSerializer.java @@ -0,0 +1,40 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.json.serializers; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import org.opendataloader.pdf.json.JsonName; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; + +import java.io.IOException; + +public class TextChunkSerializer extends StdSerializer { + + public TextChunkSerializer(Class t) { + super(t); + } + + @Override + public void serialize(TextChunk textChunk, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) + throws IOException { + jsonGenerator.writeStartObject(); + SerializerUtil.writeEssentialInfo(jsonGenerator, textChunk, JsonName.TEXT_CHUNK_TYPE); + jsonGenerator.writeStringField(JsonName.CONTENT, textChunk.getValue()); + jsonGenerator.writeEndObject(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/TextLineSerializer.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/TextLineSerializer.java new file mode 100644 index 0000000..eb9d79e --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/json/serializers/TextLineSerializer.java @@ -0,0 +1,40 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.json.serializers; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import org.opendataloader.pdf.json.JsonName; +import org.verapdf.wcag.algorithms.entities.content.TextLine; + +import java.io.IOException; + +public class TextLineSerializer extends StdSerializer { + + public TextLineSerializer(Class t) { + super(t); + } + + @Override + public void serialize(TextLine textLine, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) + throws IOException { + jsonGenerator.writeStartObject(); + SerializerUtil.writeEssentialInfo(jsonGenerator, textLine, JsonName.TEXT_CHUNK_TYPE); + jsonGenerator.writeStringField(JsonName.CONTENT, textLine.getValue()); + jsonGenerator.writeEndObject(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/markdown/MarkdownGenerator.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/markdown/MarkdownGenerator.java new file mode 100644 index 0000000..dcf3441 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/markdown/MarkdownGenerator.java @@ -0,0 +1,461 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.markdown; + +import org.opendataloader.pdf.api.Config; +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.opendataloader.pdf.entities.SemanticFormula; +import org.opendataloader.pdf.entities.EnrichedImageChunk; +import org.opendataloader.pdf.entities.SemanticPicture; +import org.opendataloader.pdf.utils.Base64ImageUtils; +import org.opendataloader.pdf.utils.GeneratorUtils; +import org.opendataloader.pdf.utils.ImagesUtils; +import org.opendataloader.pdf.utils.OutputType; +import org.verapdf.wcag.algorithms.entities.*; +import org.verapdf.wcag.algorithms.entities.content.*; +import org.verapdf.wcag.algorithms.entities.lists.ListItem; +import org.verapdf.wcag.algorithms.entities.lists.PDFList; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderRow; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; + +import java.io.Closeable; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class MarkdownGenerator implements Closeable { + + protected static final Logger LOGGER = Logger.getLogger(MarkdownGenerator.class.getCanonicalName()); + protected final java.io.Writer markdownWriter; + protected final String markdownFileName; + protected int tableNesting = 0; + protected boolean isImageSupported; + protected String markdownPageSeparator; + /** + * Page numbers (1-based) selected by --pages; an empty set means all pages. + * Sourced from the raw {@link Config#getPageNumbers()} list (not the + * validated set built by {@code DocumentProcessor.getValidPageNumbers}). + * Safe to compare against {@code pageNumber + 1} because the surrounding + * loop is bounded by the document's actual page count, so out-of-range + * values from the raw list are never tested for membership. + */ + protected final Set selectedPageNumbers; + protected boolean embedImages = false; + protected String imageFormat = Config.IMAGE_FORMAT_PNG; + protected boolean includeHeaderFooter = false; + protected static final String strikethroughTextMD = "~~"; + + MarkdownGenerator(File inputPdf, Config config) throws IOException { + String cutPdfFileName = inputPdf.getName(); + this.markdownFileName = config.getOutputFolder() + File.separator + cutPdfFileName.substring(0, cutPdfFileName.length() - 3) + "md"; + this.markdownWriter = new FileWriter(markdownFileName, StandardCharsets.UTF_8); + this.isImageSupported = !config.isImageOutputOff() && config.isGenerateMarkdown(); + this.markdownPageSeparator = config.getMarkdownPageSeparator(); + this.selectedPageNumbers = new HashSet<>(config.getPageNumbers()); + this.embedImages = config.isEmbedImages(); + this.imageFormat = config.getImageFormat(); + this.includeHeaderFooter = config.isIncludeHeaderFooter(); + } + + /** + * Creates a MarkdownGenerator that writes to an arbitrary Writer (e.g., stdout). + */ + public MarkdownGenerator(java.io.Writer writer, Config config) { + this.markdownFileName = null; + this.markdownWriter = writer; + this.isImageSupported = false; + this.markdownPageSeparator = config.getMarkdownPageSeparator(); + this.selectedPageNumbers = new HashSet<>(config.getPageNumbers()); + this.embedImages = false; + this.imageFormat = config.getImageFormat(); + this.includeHeaderFooter = config.isIncludeHeaderFooter(); + } + + public void writeToMarkdown(List> contents) { + try { + for (int pageNumber = 0; pageNumber < StaticContainers.getDocument().getNumberOfPages(); pageNumber++) { + if (selectedPageNumbers.isEmpty() || selectedPageNumbers.contains(pageNumber + 1)) { + writePageSeparator(pageNumber); + } + for (IObject content : contents.get(pageNumber)) { + if (!isSupportedContent(content)) { + continue; + } + this.write(content); + writeContentsSeparator(); + } + } + + LOGGER.log(Level.INFO, "Created {0}", markdownFileName); + } catch (Exception e) { + LOGGER.log(Level.WARNING, "Unable to create markdown output: " + e.getMessage()); + } + } + + protected void writePageSeparator(int pageNumber) throws IOException { + if (!markdownPageSeparator.isEmpty()) { + markdownWriter.write(markdownPageSeparator.contains(Config.PAGE_NUMBER_STRING) + ? markdownPageSeparator.replace(Config.PAGE_NUMBER_STRING, String.valueOf(pageNumber + 1)) + : markdownPageSeparator); + writeContentsSeparator(); + } + } + + protected boolean isSupportedContent(IObject content) { + if (content instanceof SemanticHeaderOrFooter) { + return includeHeaderFooter; + } + return content instanceof SemanticTextNode || // Heading, Paragraph etc... + content instanceof SemanticFormula || + content instanceof SemanticPicture || + content instanceof TableBorder || + content instanceof PDFList || + content instanceof SemanticTOC || + (content instanceof ImageChunk && isImageSupported); + } + + protected void writeContentsSeparator() throws IOException { + writeLineBreak(); + writeLineBreak(); + } + + protected void write(IObject object) throws IOException { + if (object instanceof SemanticHeaderOrFooter) { + writeHeaderOrFooter((SemanticHeaderOrFooter) object); + } else if (object instanceof SemanticPicture) { + writePicture((SemanticPicture) object); + } else if (object instanceof ImageChunk) { + writeImage((ImageChunk) object); + } else if (object instanceof SemanticFormula) { + writeFormula((SemanticFormula) object); + } else if (object instanceof SemanticHeading) { + writeHeading((SemanticHeading) object); + } else if (object instanceof SemanticParagraph) { + writeParagraph((SemanticParagraph) object); + } else if (object instanceof SemanticTextNode) { + writeSemanticTextNode((SemanticTextNode) object); + } else if (object instanceof TableBorder) { + writeTable((TableBorder) object); + } else if (object instanceof PDFList) { + writeList((PDFList) object); + } else if (object instanceof SemanticTOC) { + writeTOC((SemanticTOC) object); + } + } + + /** + * Wraps an image relative path as a CommonMark angle-bracket link destination + * (`<...>`). The bare form `(my paper.png)` is terminated by the first space or + * unbalanced parenthesis, so paths inheriting filenames with spaces, parens, or + * brackets break in renderers (#405). The angle-bracket form is the + * spec-recommended way to embed such paths and lets the on-disk path stay + * byte-identical to the rendered link, which preserves user intent for both the + * default `_images/` directory and any `--image-dir` value. + * + * Only `<`, `>`, and `\` are reserved inside the angle-bracket form; escape + * those with a backslash. Newlines have no representable form in a link + * destination — replace them with spaces so the destination stays well-formed. + */ + static String formatMarkdownLinkDestination(String path) { + if (path == null) { + return null; + } + StringBuilder sb = new StringBuilder(path.length() + 2); + sb.append('<'); + for (int i = 0; i < path.length(); i++) { + char c = path.charAt(i); + if (c == '<' || c == '>' || c == '\\') { + sb.append('\\').append(c); + } else if (c == '\n' || c == '\r') { + sb.append(' '); + } else { + sb.append(c); + } + } + sb.append('>'); + return sb.toString(); + } + + protected void writeImage(ImageChunk image) { + try { + String absolutePath = String.format(MarkdownSyntax.IMAGE_FILE_NAME_FORMAT, StaticLayoutContainers.getImagesDirectory(), File.separator, image.getIndex(), imageFormat); + String relativePath = String.format(MarkdownSyntax.IMAGE_FILE_NAME_FORMAT, StaticLayoutContainers.getImagesDirectoryName(), "/", image.getIndex(), imageFormat); + + if (ImagesUtils.isImageFileExists(absolutePath)) { + String imageSource; + if (embedImages) { + File imageFile = new File(absolutePath); + imageSource = Base64ImageUtils.toDataUri(imageFile, imageFormat); + if (imageSource == null) { + LOGGER.log(Level.WARNING, "Failed to convert image to Base64: {0}", absolutePath); + } + } else { + imageSource = formatMarkdownLinkDestination(relativePath); + } + if (imageSource != null) { + // No "image N" fallback: PDF/UA forbids false alternatives, + // and an empty Markdown alt lets screen readers skip the + // image as a decorative element rather than reading a + // meaningless synthetic label. + String altText = (image instanceof EnrichedImageChunk && ((EnrichedImageChunk) image).hasDescription()) + ? ((EnrichedImageChunk) image).sanitizeDescription() + : ""; + String imageString = String.format(MarkdownSyntax.IMAGE_FORMAT, altText, imageSource); + markdownWriter.write(getCorrectMarkdownString(imageString)); + } + } + } catch (IOException e) { + LOGGER.log(Level.WARNING, "Unable to write image for markdown output: " + e.getMessage()); + } + } + + /** + * Writes a SemanticPicture with its description as alt text. + * + * @param picture The picture to write + */ + protected void writePicture(SemanticPicture picture) { + try { + String absolutePath = String.format(MarkdownSyntax.IMAGE_FILE_NAME_FORMAT, StaticLayoutContainers.getImagesDirectory(), File.separator, picture.getPictureIndex(), imageFormat); + String relativePath = String.format(MarkdownSyntax.IMAGE_FILE_NAME_FORMAT, StaticLayoutContainers.getImagesDirectoryName(), "/", picture.getPictureIndex(), imageFormat); + + if (ImagesUtils.isImageFileExists(absolutePath)) { + String imageSource; + if (embedImages) { + File imageFile = new File(absolutePath); + imageSource = Base64ImageUtils.toDataUri(imageFile, imageFormat); + if (imageSource == null) { + LOGGER.log(Level.WARNING, "Failed to convert image to Base64: {0}", absolutePath); + } + } else { + imageSource = formatMarkdownLinkDestination(relativePath); + } + if (imageSource != null) { + String altText = picture.hasDescription() + ? picture.sanitizeDescription() + : ""; + String imageString = String.format(MarkdownSyntax.IMAGE_FORMAT, altText, imageSource); + markdownWriter.write(getCorrectMarkdownString(imageString)); + } + } + } catch (IOException e) { + LOGGER.log(Level.WARNING, "Unable to write picture for markdown output: " + e.getMessage()); + } + } + + /** + * Writes a formula in LaTeX format wrapped in $$ delimiters. + * + * @param formula The formula to write + */ + protected void writeFormula(SemanticFormula formula) throws IOException { + markdownWriter.write(MarkdownSyntax.MATH_BLOCK_START); + markdownWriter.write(MarkdownSyntax.LINE_BREAK); + markdownWriter.write(formula.getLatex()); + markdownWriter.write(MarkdownSyntax.LINE_BREAK); + markdownWriter.write(MarkdownSyntax.MATH_BLOCK_END); + } + + protected void writeHeaderOrFooter(SemanticHeaderOrFooter headerOrFooter) throws IOException { + for (IObject content : headerOrFooter.getContents()) { + if (isSupportedContent(content)) { + write(content); + writeContentsSeparator(); + } + } + } + + protected void writeList(PDFList list) throws IOException { + for (ListItem item : list.getListItems()) { + if (!isInsideTable()) { + markdownWriter.write(MarkdownSyntax.LIST_ITEM); + markdownWriter.write(MarkdownSyntax.SPACE); + } + markdownWriter.write(getCorrectMarkdownString(GeneratorUtils.getTextFromLines(item.getLines(), OutputType.MD))); + writeLineBreak(); + + List itemContents = item.getContents(); + if (!itemContents.isEmpty()) { + writeLineBreak(); + writeContents(itemContents, false); + } + } + } + + protected void writeTOC(SemanticTOC toc) throws IOException { + for (IObject item : toc.getTOCItems()) { + if (item instanceof SemanticTOC) { + writeTOC((SemanticTOC)item); + } else if (item instanceof SemanticTOCI) { + SemanticTOCI tocItem = (SemanticTOCI)item; + markdownWriter.write(getCorrectMarkdownString(GeneratorUtils.getTextFromLines(tocItem.getLines(), OutputType.MD))); + writeLineBreak(); + + List itemContents = tocItem.getContents(); + if (!itemContents.isEmpty()) { + writeLineBreak(); + writeContents(itemContents, false); + } + } + } + } + + protected void writeSemanticTextNode(SemanticTextNode textNode) throws IOException { + String value = GeneratorUtils.getTextFromTextNode(textNode, OutputType.MD); + if (StaticContainers.isKeepLineBreaks()) { + if (textNode instanceof SemanticHeading) { + value = value.replace(MarkdownSyntax.LINE_BREAK, MarkdownSyntax.SPACE); + } else if (isInsideTable()) { + value = value.replace(MarkdownSyntax.LINE_BREAK, getLineBreak()); + } + } else if (isInsideTable()) { + // Always replace line breaks with space in table cells for proper markdown table formatting + value = value.replace(MarkdownSyntax.LINE_BREAK, MarkdownSyntax.SPACE); + } + + markdownWriter.write(getCorrectMarkdownString(value)); + } + + + + protected void writeTable(TableBorder table) throws IOException { + enterTable(); + for (int rowNumber = 0; rowNumber < table.getNumberOfRows(); rowNumber++) { + TableBorderRow row = table.getRow(rowNumber); + markdownWriter.write(MarkdownSyntax.TABLE_COLUMN_SEPARATOR); + for (int colNumber = 0; colNumber < table.getNumberOfColumns(); colNumber++) { + TableBorderCell cell = row.getCell(colNumber); + if (cell.getRowNumber() == rowNumber && cell.getColNumber() == colNumber) { + List cellContents = cell.getContents(); + writeContents(cellContents, true); + } else { + writeSpace(); + } + markdownWriter.write(MarkdownSyntax.TABLE_COLUMN_SEPARATOR); + } + markdownWriter.write(MarkdownSyntax.LINE_BREAK); + //Due to markdown syntax we have to separate column headers + if (rowNumber == 0) { + markdownWriter.write(MarkdownSyntax.TABLE_COLUMN_SEPARATOR); + for (int i = 0; i < table.getNumberOfColumns(); i++) { + markdownWriter.write(MarkdownSyntax.TABLE_HEADER_SEPARATOR); + markdownWriter.write(MarkdownSyntax.TABLE_COLUMN_SEPARATOR); + } + markdownWriter.write(MarkdownSyntax.LINE_BREAK); + } + } + leaveTable(); + } + + protected void writeContents(List contents, boolean isTable) throws IOException { + boolean wroteAnyContent = false; + for (int i = 0; i < contents.size(); i++) { + IObject content = contents.get(i); + if (!isSupportedContent(content)) { + continue; + } + this.write(content); + boolean isLastContent = i == contents.size() - 1; + if (!isTable || !isLastContent) { + writeContentsSeparator(); + } + wroteAnyContent = true; + } + if (!wroteAnyContent && isTable) { + writeSpace(); + } + } + + protected void writeParagraph(SemanticParagraph textNode) throws IOException { + writeSemanticTextNode(textNode); + } + + protected void writeHeading(SemanticHeading heading) throws IOException { + if (!isInsideTable()) { + // Cap heading level to 1-6 per Markdown specification + int headingLevel = Math.min(6, Math.max(1, heading.getHeadingLevel())); + for (int i = 0; i < headingLevel; i++) { + markdownWriter.write(MarkdownSyntax.HEADING_LEVEL); + } + markdownWriter.write(MarkdownSyntax.SPACE); + } + writeSemanticTextNode(heading); + } + + protected void enterTable() { + tableNesting++; + } + + protected void leaveTable() { + if (tableNesting > 0) { + tableNesting--; + } + } + + protected boolean isInsideTable() { + return tableNesting > 0; + } + + protected String getLineBreak() { + if (isInsideTable()) { + return MarkdownSyntax.HTML_LINE_BREAK_TAG; + } else { + return MarkdownSyntax.LINE_BREAK; + } + } + + protected void writeLineBreak() throws IOException { + markdownWriter.write(getLineBreak()); + } + + protected void writeSpace() throws IOException { + markdownWriter.write(MarkdownSyntax.SPACE); + } + + protected String getCorrectMarkdownString(String value) { + if (value != null) { + return value.replace("\u0000", " "); + } + return null; + } + + public static void getTextFromLineForMarkdown(TextLine line, StringBuilder stringBuilder) { + for (TextChunk chunk : line.getTextChunks()) { + if (chunk.getIsStrikethroughText()) { + stringBuilder.append(strikethroughTextMD); + } + stringBuilder.append(chunk.getValue()); + if (chunk.getIsStrikethroughText()) { + stringBuilder.append(strikethroughTextMD); + } + } + } + + @Override + public void close() throws IOException { + if (markdownWriter != null) { + markdownWriter.close(); + } + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/markdown/MarkdownGeneratorFactory.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/markdown/MarkdownGeneratorFactory.java new file mode 100644 index 0000000..039f90b --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/markdown/MarkdownGeneratorFactory.java @@ -0,0 +1,31 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.markdown; + +import org.opendataloader.pdf.api.Config; + +import java.io.File; +import java.io.IOException; + +public class MarkdownGeneratorFactory { + public static MarkdownGenerator getMarkdownGenerator(File inputPdf, + Config config) throws IOException { + if (config.isUseHTMLInMarkdown()) { + return new MarkdownHTMLGenerator(inputPdf, config); + } + return new MarkdownGenerator(inputPdf, config); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/markdown/MarkdownHTMLGenerator.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/markdown/MarkdownHTMLGenerator.java new file mode 100644 index 0000000..f17b361 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/markdown/MarkdownHTMLGenerator.java @@ -0,0 +1,92 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.markdown; + +import org.opendataloader.pdf.api.Config; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderRow; + +import java.io.File; +import java.io.IOException; +import java.util.List; + +public class MarkdownHTMLGenerator extends MarkdownGenerator { + + protected MarkdownHTMLGenerator(File inputPdf, Config config) throws IOException { + super(inputPdf, config); + } + + @Override + protected void writeTable(TableBorder table) throws IOException { + enterTable(); + markdownWriter.write(MarkdownSyntax.HTML_TABLE_TAG); + markdownWriter.write(MarkdownSyntax.LINE_BREAK); + for (int rowNumber = 0; rowNumber < table.getNumberOfRows(); rowNumber++) { + TableBorderRow row = table.getRow(rowNumber); + markdownWriter.write(MarkdownSyntax.INDENT); + markdownWriter.write(MarkdownSyntax.HTML_TABLE_ROW_TAG); + markdownWriter.write(MarkdownSyntax.LINE_BREAK); + for (int colNumber = 0; colNumber < table.getNumberOfColumns(); colNumber++) { + TableBorderCell cell = row.getCell(colNumber); + if (cell.getRowNumber() == rowNumber && cell.getColNumber() == colNumber) { + writeCellTagBegin(cell); + + List cellContents = cell.getContents(); + writeContents(cellContents, true); + + writeCellTagEnd(cell.isHeaderCell()); + markdownWriter.write(MarkdownSyntax.LINE_BREAK); + } + } + + markdownWriter.write(MarkdownSyntax.INDENT); + markdownWriter.write(MarkdownSyntax.HTML_TABLE_ROW_CLOSE_TAG); + markdownWriter.write(MarkdownSyntax.LINE_BREAK); + } + + markdownWriter.write(MarkdownSyntax.HTML_TABLE_CLOSE_TAG); + markdownWriter.write(MarkdownSyntax.LINE_BREAK); + leaveTable(); + } + + private void writeCellTagBegin(TableBorderCell cell) throws IOException { + markdownWriter.write(MarkdownSyntax.INDENT); + markdownWriter.write(MarkdownSyntax.INDENT); + String tag = cell.isHeaderCell() ? ""); + markdownWriter.write(getCorrectMarkdownString(cellTag.toString())); + } + + private void writeCellTagEnd(boolean isHeader) throws IOException { + if (isHeader) { + markdownWriter.write(MarkdownSyntax.HTML_TABLE_HEADER_CLOSE_TAG); + } else { + markdownWriter.write(MarkdownSyntax.HTML_TABLE_CELL_CLOSE_TAG); + } + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/markdown/MarkdownSyntax.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/markdown/MarkdownSyntax.java new file mode 100644 index 0000000..b55cb4d --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/markdown/MarkdownSyntax.java @@ -0,0 +1,50 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.markdown; + +public class MarkdownSyntax { + public static final String TABLE_COLUMN_SEPARATOR = "|"; + public static final String TABLE_HEADER_SEPARATOR = "---"; + public static final String DOUBLE_LINE_BREAK = "\n\n"; + public static final String LINE_BREAK = "\n"; + public static final String SPACE = " "; + public static final String INDENT = " "; + public static final String HEADING_LEVEL = "#"; + public static final String LIST_ITEM = "-"; + public static final String IMAGES_DIRECTORY_SUFFIX = "_images"; + public static final String IMAGE_FILE_NAME_FORMAT = "%s%simageFile%d.%s"; + public static final String IMAGE_FORMAT = "![%s](%s)"; + public static final String HTML_TABLE_TAG = ""; + public static final String HTML_TABLE_CLOSE_TAG = "
    "; + public static final String HTML_TABLE_ROW_TAG = ""; + public static final String HTML_TABLE_ROW_CLOSE_TAG = ""; + public static final String HTML_TABLE_CELL_TAG = ""; + public static final String HTML_TABLE_CELL_CLOSE_TAG = ""; + public static final String HTML_TABLE_HEADER_TAG = ""; + public static final String HTML_TABLE_HEADER_CLOSE_TAG = ""; + public static final String HTML_ORDERED_LIST_TAG = "

      "; + public static final String HTML_ORDERED_LIST_CLOSE_TAG = "
    "; + public static final String HTML_UNORDERED_LIST_TAG = "
      "; + public static final String HTML_UNORDERED_LIST_CLOSE_TAG = "
    "; + public static final String HTML_LIST_ITEM_TAG = "
  7. "; + public static final String HTML_LIST_ITEM_CLOSE_TAG = "
  8. "; + public static final String HTML_LINE_BREAK_TAG = "
    "; + public static final String HTML_INDENT = "    "; + public static final String HTML_PARAGRAPH_TAG = "

    "; + public static final String HTML_PARAGRAPH_CLOSE_TAG = "

    "; + public static final String MATH_BLOCK_START = "$$"; + public static final String MATH_BLOCK_END = "$$"; +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/pdf/PDFLayer.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/pdf/PDFLayer.java new file mode 100644 index 0000000..c793911 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/pdf/PDFLayer.java @@ -0,0 +1,38 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.pdf; + +public enum PDFLayer { + CONTENT("content"), + TABLE_CELLS("table cells"), + LIST_ITEMS("list items"), + TOC_ITEMS("toc items"), + TABLE_CONTENT("table content"), + LIST_CONTENT("list content"), + TOC_CONTENT("toc content"), + TEXT_BLOCK_CONTENT("text blocks content"), + HEADER_AND_FOOTER_CONTENT("header and footer content"); + + private final String value; + + PDFLayer(String value) { + this.value = value; + } + + public String getValue() { + return value; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/pdf/PDFWriter.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/pdf/PDFWriter.java new file mode 100644 index 0000000..1190795 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/pdf/PDFWriter.java @@ -0,0 +1,347 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.pdf; + +import org.opendataloader.pdf.processors.DocumentProcessor; +import org.opendataloader.pdf.utils.FileUtils; +import org.apache.pdfbox.Loader; +import org.apache.pdfbox.cos.COSDictionary; +import org.apache.pdfbox.cos.COSName; +import org.apache.pdfbox.cos.COSString; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.PDDocumentCatalog; +import org.apache.pdfbox.pdmodel.common.PDRectangle; +import org.apache.pdfbox.pdmodel.documentinterchange.markedcontent.PDPropertyList; +import org.apache.pdfbox.pdmodel.graphics.color.PDColor; +import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceRGB; +import org.apache.pdfbox.pdmodel.graphics.optionalcontent.PDOptionalContentGroup; +import org.apache.pdfbox.pdmodel.graphics.optionalcontent.PDOptionalContentProperties; +import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotation; +import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationSquare; +import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationSquareCircle; +import org.verapdf.wcag.algorithms.entities.*; +import org.verapdf.wcag.algorithms.entities.content.ImageChunk; +import org.verapdf.wcag.algorithms.entities.content.LineArtChunk; +import org.verapdf.wcag.algorithms.entities.content.LineChunk; +import org.verapdf.wcag.algorithms.entities.enums.SemanticType; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.entities.geometry.MultiBoundingBox; +import org.verapdf.wcag.algorithms.entities.lists.ListItem; +import org.verapdf.wcag.algorithms.entities.lists.PDFList; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderRow; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; + +import java.io.File; +import java.io.IOException; +import java.util.*; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class PDFWriter { + + private static final Logger LOGGER = Logger.getLogger(PDFWriter.class.getCanonicalName()); + + private final Map optionalContents = new HashMap<>(); + private final List> annotations = new ArrayList<>(); + private final List pageBoundingBoxes = new ArrayList<>(); + + public void updatePDF(File inputPDF, String password, String outputFolder, List> contents) throws IOException { + try (PDDocument document = Loader.loadPDF(inputPDF, password)) { + for (int pageNumber = 0; pageNumber < StaticContainers.getDocument().getNumberOfPages(); pageNumber++) { + annotations.add(new ArrayList<>()); + pageBoundingBoxes.add(DocumentProcessor.getPageBoundingBox(pageNumber)); + } + for (int pageNumber = 0; pageNumber < StaticContainers.getDocument().getNumberOfPages(); pageNumber++) { + for (IObject content : contents.get(pageNumber)) { + drawContent(content, PDFLayer.CONTENT); + } + } + for (int pageNumber = 0; pageNumber < StaticContainers.getDocument().getNumberOfPages(); pageNumber++) { + document.getPage(pageNumber).getAnnotations().addAll(annotations.get(pageNumber)); + } + annotations.clear(); + pageBoundingBoxes.clear(); + createOptContentsForAnnotations(document); + document.setAllSecurityToBeRemoved(true); + + String outputFileName = outputFolder + File.separator + + FileUtils.getBaseName(inputPDF.getName()) + "_annotated.pdf"; + document.save(outputFileName); + LOGGER.log(Level.INFO, "Created {0}", outputFileName); + } catch (Exception ex) { + LOGGER.log(Level.WARNING, "Unable to create annotated PDF output: " + ex.getMessage()); + } + } + + private void drawContent(IObject content, PDFLayer layer) throws IOException { + drawContent(content, layer, null); + } + + private void drawContent(IObject content, PDFLayer layer, Map linkedAnnots) throws IOException { + if ((content instanceof LineChunk)) { + return; + } + Map annots = draw(content.getBoundingBox(), getColor(content), getContents(content), + content.getRecognizedStructureId(), linkedAnnots, content.getLevel(), layer); + if (content instanceof TableBorder) { + drawTableCells((TableBorder) content, annots); + } else if (content instanceof PDFList) { + drawListItems((PDFList) content, annots); + } else if (content instanceof SemanticTOC) { + drawTOCItems((SemanticTOC) content, layer, annots); + } else if (content instanceof SemanticHeaderOrFooter) { + for (IObject contentItem : ((SemanticHeaderOrFooter) content).getContents()) { + drawContent(contentItem, PDFLayer.HEADER_AND_FOOTER_CONTENT, annots); + } + } + } + + private void drawTableCells(TableBorder table, Map annots) throws IOException { + if (table.isTextBlock()) { + for (IObject content : table.getCell(0, 0).getContents()) { + drawContent(content, PDFLayer.TEXT_BLOCK_CONTENT); + } + return; + } + for (int rowNumber = 0; rowNumber < table.getNumberOfRows(); rowNumber++) { + TableBorderRow row = table.getRow(rowNumber); + for (int colNumber = 0; colNumber < table.getNumberOfColumns(); colNumber++) { + TableBorderCell cell = row.getCell(colNumber); + if (cell.getRowNumber() == rowNumber && cell.getColNumber() == colNumber) { + StringBuilder contentValue = new StringBuilder(); + for (IObject object : cell.getContents()) { + if (object instanceof SemanticTextNode) { + contentValue.append(((SemanticTextNode) object).getValue()); + } + } + String cellValue = String.format("Table %scell: row number %s, column number %s, row span %s, column span %s, text content \"%s\"", + cell.isHeaderCell() ? "header " : "", cell.getRowNumber() + 1, cell.getColNumber() + 1, + cell.getRowSpan(), cell.getColSpan(), contentValue); + draw(cell.getBoundingBox(), getColor(SemanticType.TABLE), cellValue, null, annots, cell.getLevel(), PDFLayer.TABLE_CELLS); + for (IObject content : cell.getContents()) { + drawContent(content, PDFLayer.TABLE_CONTENT); + } + } + } + } + } + + private void drawListItems(PDFList list, Map annots) throws IOException { + for (ListItem listItem : list.getListItems()) { + String contentValue = String.format("List item: text content \"%s\"", listItem.toString()); + draw(listItem.getBoundingBox(), getColor(SemanticType.LIST), contentValue, null, annots, listItem.getLevel(), PDFLayer.LIST_ITEMS); + for (IObject content : listItem.getContents()) { + drawContent(content, PDFLayer.LIST_CONTENT); + } + } + } + + private void drawTOCItems(SemanticTOC toc, PDFLayer layer, Map annots) throws IOException { + for (IObject tocItem : toc.getTOCItems()) { + if (tocItem instanceof SemanticTOC) { + drawContent(tocItem, layer, annots); + } else if (tocItem instanceof SemanticTOCI) { + String contentValue = String.format("TOC item: text content \"%s\"", tocItem.toString()); + draw(tocItem.getBoundingBox(), getColor(SemanticType.TABLE_OF_CONTENT), contentValue, null, annots, tocItem.getLevel(), PDFLayer.TOC_ITEMS); + for (IObject content : ((SemanticTOCI)tocItem).getContents()) { + drawContent(content, PDFLayer.TOC_CONTENT); + } + } + } + } + + public Map draw(BoundingBox boundingBox, float[] colorArray, String contents, Long id, + Map linkedAnnots, String level, PDFLayer layerName) { + Map result = new HashMap<>(); + if (!Objects.equals(boundingBox.getPageNumber(), boundingBox.getLastPageNumber())) { + if (boundingBox instanceof MultiBoundingBox) { + for (int pageNumber = boundingBox.getPageNumber(); pageNumber <= boundingBox.getLastPageNumber(); pageNumber++) { + BoundingBox boundingBoxForPage = boundingBox.getBoundingBox(pageNumber); + if (boundingBoxForPage != null) { + result.putAll(draw(boundingBoxForPage, colorArray, contents, id, linkedAnnots, level, layerName)); + } + } + return result; + } else { + LOGGER.log(Level.WARNING, "Bounding box on several pages cannot be split"); + } + } + + BoundingBox movedBoundingBox = new BoundingBox(boundingBox); + BoundingBox pageBoundingBox = pageBoundingBoxes.get(boundingBox.getPageNumber()); + if (pageBoundingBox != null) { + movedBoundingBox.move(pageBoundingBox.getLeftX(), pageBoundingBox.getBottomY()); + } + PDAnnotationSquareCircle square = new PDAnnotationSquare(); + square.setRectangle(new PDRectangle(getFloat(movedBoundingBox.getLeftX()), getFloat(movedBoundingBox.getBottomY()), + getFloat(movedBoundingBox.getWidth()), getFloat(movedBoundingBox.getHeight()))); + square.setConstantOpacity(0.4f); + PDColor color = new PDColor(colorArray, PDDeviceRGB.INSTANCE); + square.setColor(color); + square.setInteriorColor(color); + square.setContents((id != null ? "id = " + id + ", " : "") + (level != null ? "level = " + level + ", " : "") + contents); + if (linkedAnnots != null) { + square.setInReplyTo(linkedAnnots.get(boundingBox.getPageNumber())); + } + square.setOptionalContent(getOptionalContent(layerName)); + annotations.get(boundingBox.getPageNumber()).add(square); + result.put(boundingBox.getPageNumber(), square); + return result; + } + + private static float getFloat(double value) { + float floatValue = (float) value; + if (floatValue == Float.POSITIVE_INFINITY) { + return Float.MAX_VALUE; + } + if (floatValue == Float.NEGATIVE_INFINITY) { + return -Float.MAX_VALUE; + } + return floatValue; + } + + public static String getContents(IObject content) { + if (content instanceof TableBorder) { + TableBorder border = (TableBorder) content; + if (border.isTextBlock()) { + return "Text block"; + } + return String.format("Table: %s rows, %s columns, previous table id %s, next table id %s", + border.getNumberOfRows(), border.getNumberOfColumns(), border.getPreviousTableId(), border.getNextTableId()); + } + if (content instanceof PDFList) { + PDFList list = (PDFList) content; + return String.format("List: number of items %s, previous list id %s, next list id %s", + list.getNumberOfListItems(), list.getPreviousListId(), list.getNextListId()); + } + if (content instanceof SemanticTOC) { + SemanticTOC toc = (SemanticTOC) content; + return String.format("TOC: previous toc id %s, next toc id %s", toc.getPreviousTOCId(), toc.getNextTOCId()); + } + if (content instanceof INode) { + INode node = (INode) content; + if (node.getSemanticType() == SemanticType.HEADER || node.getSemanticType() == SemanticType.FOOTER) { + return node.getSemanticType().getValue(); + } + if (node.getSemanticType() == SemanticType.CAPTION) { + SemanticCaption caption = (SemanticCaption) node; + return DocumentProcessor.getContentsValueForTextNode(caption) + ", connected with object with id = " + + caption.getLinkedContentId(); + } + if (node.getSemanticType() == SemanticType.HEADING) { + SemanticHeading heading = (SemanticHeading) node; + return DocumentProcessor.getContentsValueForTextNode(heading) + + ", heading level " + heading.getHeadingLevel(); + } + if (node instanceof SemanticTextNode) { + return DocumentProcessor.getContentsValueForTextNode((SemanticTextNode) node); + } + } + if (content instanceof ImageChunk) { + return String.format("Image: height %.2f, width %.2f", content.getHeight(), content.getWidth()); + } + if (content instanceof LineArtChunk) { + return String.format("Line Art: height %.2f, width %.2f", content.getHeight(), content.getWidth()); + } + if (content instanceof LineChunk) { + return "Line"; + } + return ""; + } + + public static float[] getColor(IObject content) { + if (content instanceof TableBorder) { + return getColor(SemanticType.TABLE); + } + if (content instanceof PDFList) { + return getColor(SemanticType.LIST); + } + if (content instanceof SemanticTOC) { + return getColor(SemanticType.TABLE_OF_CONTENT); + } + if (content instanceof INode) { + INode node = (INode) content; + return getColor(node.getSemanticType()); + } + if (content instanceof ImageChunk) { + return getColor(SemanticType.FIGURE); + } + if (content instanceof LineArtChunk || content instanceof LineChunk) { + return getColor(SemanticType.PART); + } + return new float[]{}; + } + + public static float[] getColor(SemanticType semanticType) { + if (semanticType == SemanticType.HEADING || semanticType == SemanticType.HEADER || semanticType == SemanticType.FOOTER) { + return new float[]{0, 0, 1}; + } + if (semanticType == SemanticType.LIST) { + return new float[]{0, 1, 0}; + } + if (semanticType == SemanticType.PARAGRAPH) { + return new float[]{0, 1, 1}; + } + if (semanticType == SemanticType.FIGURE) { + return new float[]{1, 0, 0}; + } + if (semanticType == SemanticType.TABLE) { + return new float[]{1, 0, 1}; + } + if (semanticType == SemanticType.TABLE_OF_CONTENT) { + return new float[]{0.8f, 0.2f, 0.8f}; + } + if (semanticType == SemanticType.CAPTION) { + return new float[]{1, 1, 0}; + } + if (semanticType == SemanticType.PART) { + return new float[]{0.9f, 0.9f, 0.9f}; + } + return null; + } + + private void createOptContentsForAnnotations(PDDocument document) { + if (optionalContents.isEmpty()) { + return; + } + PDDocumentCatalog catalog = document.getDocumentCatalog(); + PDOptionalContentProperties oldOCProperties = catalog.getOCProperties(); + if (oldOCProperties == null) { + oldOCProperties = new PDOptionalContentProperties(); + catalog.setOCProperties(oldOCProperties); + } + + for (PDOptionalContentGroup group : optionalContents.values()) { + oldOCProperties.addGroup(group); + oldOCProperties.setGroupEnabled(group, true); + } + optionalContents.clear(); + } + + public PDOptionalContentGroup getOptionalContent(PDFLayer layer) { + PDOptionalContentGroup group = optionalContents.get(layer); + if (group == null) { + COSDictionary cosDictionary = new COSDictionary(); + cosDictionary.setItem(COSName.TYPE, COSName.OCG); + cosDictionary.setItem(COSName.NAME, new COSString(layer.getValue())); + group = (PDOptionalContentGroup) PDPropertyList.create(cosDictionary); + optionalContents.put(layer, group); + } + return group; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/AbstractTableProcessor.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/AbstractTableProcessor.java new file mode 100644 index 0000000..b4f4a79 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/AbstractTableProcessor.java @@ -0,0 +1,132 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.tables.TableBordersCollection; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.NodeUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.SortedSet; + +/** + * Abstract base class for table detection processors. + * Provides common functionality for detecting and processing tables in PDF documents. + */ +public abstract class AbstractTableProcessor { + + private static final double Y_DIFFERENCE_EPSILON = 0.1; + private static final double X_DIFFERENCE_EPSILON = 3; + private static final double TABLE_INTERSECTION_PERCENT = 0.01; + + /** + * Processes tables across all pages that may contain tables. + * + * @param contents the document contents organized by page + */ + public void processTables(List> contents) { + List pageNumbers = getPagesWithPossibleTables(contents); + processTables(contents, pageNumbers); + } + + /** + * Processes tables on specified pages. + * + * @param contents the document contents organized by page + * @param pageNumbers the list of page numbers to process + */ + public void processTables(List> contents, List pageNumbers) { + if (!pageNumbers.isEmpty()) { + List> tables = getTables(contents, pageNumbers); + addTablesToTableCollection(tables, pageNumbers); + } + } + + /** + * Detects tables on the specified pages. + * + * @param contents the document contents organized by page + * @param pageNumbers the list of page numbers to process + * @return a list of detected tables for each page + */ + protected abstract List> getTables(List> contents, List pageNumbers); + + private static void addTablesToTableCollection(List> detectedTables, List pageNumbers) { + if (detectedTables != null) { + TableBordersCollection tableCollection = StaticContainers.getTableBordersCollection(); + for (int index = 0; index < pageNumbers.size(); index++) { + SortedSet tables = tableCollection.getTableBorders(pageNumbers.get(index)); + for (TableBorder border : detectedTables.get(index)) { + boolean hasIntersections = false; + for (TableBorder table : tables) { + if (table.getBoundingBox().getIntersectionPercent(border.getBoundingBox()) > TABLE_INTERSECTION_PERCENT) { + hasIntersections = true; + break; + } + } + if (!hasIntersections) { + tables.add(border); + } + } + } + } + } + + /** + * Identifies pages that may contain tables based on text chunk patterns. + * + * @param contents the document contents organized by page + * @return a list of page numbers that may contain tables + */ + public static List getPagesWithPossibleTables(List> contents) { + List pageNumbers = new ArrayList<>(); + for (int pageNumber = 0; pageNumber < StaticContainers.getDocument().getNumberOfPages(); pageNumber++) { + TextChunk previousTextChunk = null; + for (IObject content : contents.get(pageNumber)) { + if (content instanceof TextChunk) { + TextChunk currentTextChunk = (TextChunk) content; + if (currentTextChunk.isWhiteSpaceChunk()) { + continue; + } + if (previousTextChunk != null && areSuspiciousTextChunks(previousTextChunk, currentTextChunk)) { + pageNumbers.add(pageNumber); + break; + } + previousTextChunk = currentTextChunk; + } + } + } + return pageNumbers; + } + + private static boolean areSuspiciousTextChunks(TextChunk previousTextChunk, TextChunk currentTextChunk) { + if (previousTextChunk.getTopY() < currentTextChunk.getBottomY()) { + return true; + } + if (NodeUtils.areCloseNumbers(previousTextChunk.getBaseLine(), currentTextChunk.getBaseLine(), + currentTextChunk.getHeight() * Y_DIFFERENCE_EPSILON)) { + if (currentTextChunk.getLeftX() - previousTextChunk.getRightX() > + currentTextChunk.getHeight() * X_DIFFERENCE_EPSILON) { + return true; + } + } + return false; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/AutoTaggingProcessor.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/AutoTaggingProcessor.java new file mode 100644 index 0000000..8fae81c --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/AutoTaggingProcessor.java @@ -0,0 +1,1178 @@ +package org.opendataloader.pdf.processors; + +import org.opendataloader.pdf.autotagging.ChunksWriter; +import org.opendataloader.pdf.autotagging.OperatorStreamKey; +import org.opendataloader.pdf.entities.EnrichedImageChunk; +import org.opendataloader.pdf.entities.SemanticFootnote; +import org.opendataloader.pdf.entities.SemanticFormula; +import org.opendataloader.pdf.exceptions.EncryptedTaggedPdfNotSupportedException; +import org.verapdf.as.ASAtom; +import org.verapdf.as.io.ASMemoryInStream; +import org.verapdf.cos.*; + +import org.verapdf.gf.model.factory.chunks.GraphicsState; +import org.verapdf.gf.model.impl.operator.textshow.PUAHelper; +import org.verapdf.gf.model.impl.sa.util.ResourceHandler; +import org.verapdf.pd.*; +import org.verapdf.pd.actions.PDAction; +import org.verapdf.pd.form.PDAcroForm; +import org.verapdf.pd.form.PDFormField; +import org.verapdf.pd.images.PDXObject; +import org.verapdf.tools.StaticResources; +import org.verapdf.tools.TaggedPDFConstants; +import org.verapdf.wcag.algorithms.entities.*; +import org.verapdf.wcag.algorithms.entities.content.ImageChunk; +import org.verapdf.wcag.algorithms.entities.content.TextLine; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.content.TextColumn; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.entities.lists.ListItem; +import org.verapdf.wcag.algorithms.entities.lists.PDFList; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderRow; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.StreamInfo; +import org.opendataloader.pdf.utils.FileUtils; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.TextChunkUtils; + +import java.io.*; +import java.nio.charset.StandardCharsets; +import java.util.*; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class AutoTaggingProcessor { + + private static final Logger LOGGER = Logger.getLogger(AutoTaggingProcessor.class.getCanonicalName()); + + private static final Map>> operatorIndexesToStreamInfosMap = new LinkedHashMap<>(); + private static final Map> structParents = new LinkedHashMap<>(); + private static final Map structParentsIntegers = new LinkedHashMap<>(); + // annotation StructParent entries: int key -> single struct element (Link) + private static final Map annotationStructParents = new HashMap<>(); + // First created struct element per page, used to rewrite page destinations to structure destinations. + private static final Map pageNumberToFirstStructElement = new HashMap<>(); + private static final String FORMULA_REPLACEMENT_TEXT = "formula"; + private static final String IMAGE_REPLACEMENT_TEXT = "image "; + private static final String ANNOTATION_REPLACEMENT_TEXT = "Annotation"; + // Namespace for PDF 2.0-only structure types (FENote, etc.), created in createStructTreeRoot. + private static COSObject pdf2_0Namespace; + // Caption elements keyed by their linked content ID (Raman's approach from #377) + private static final Map structElementIdToCaptionMap = new HashMap<>(); + private static boolean isPDF2_0 = false; + private static final Map annotationBBoxesMap = new LinkedHashMap<>(); + private static int currentStructParent = 0; + private static final int MAX_TOKENS_PER_STREAM = 100_000; + // imageChunkCounter is per-call; tracked via the figureObject index across a document + private static int imageChunkFigureCounter = 0; + // Counter for unique /ID strings on Note / FENote struct elements. + // PDF/UA-1 §7.9.1 and PDF 2.0 14.8.4.6 require every Note to carry + // an /ID entry that is unique within the document — veraPDF reports + // a hard failure when missing. Reset per document in tagDocument(). + private static int footnoteCounter = 0; + + /** + * Tag a PDF document in-memory without saving to disk. + * Adds structure tree, marked content references, and parent tree to the document. + * + * @param document the PDDocument to tag (modified in place) + * @param contents extracted content by page + */ + public static synchronized void tagDocument(PDDocument document, List> contents, Float pdfVersion) throws IOException { + operatorIndexesToStreamInfosMap.clear(); + structParents.clear(); + structParentsIntegers.clear(); + annotationStructParents.clear(); + pageNumberToFirstStructElement.clear(); + structElementIdToCaptionMap.clear(); + annotationBBoxesMap.clear(); + currentStructParent = 0; + imageChunkFigureCounter = 0; + footnoteCounter = 0; + isPDF2_0 = pdfVersion != null ? pdfVersion == 2.0F : document.getVersion() == 2.0F; + COSDocument cosDocument = document.getDocument(); + PDCatalog catalog = document.getCatalog(); + COSObject structTreeRoot = createStructTreeRoot(catalog, cosDocument, document); + createStructureTreeElements(document, contents, structTreeRoot, cosDocument); + if (isPDF2_0) { + updateDestinationsToStructureDestinations(document, catalog, cosDocument); + } + updatePages(document, cosDocument); + createParentTree(cosDocument, structTreeRoot); + cosDocument.getTrailer().removeKey(ASAtom.ENCRYPT); + } + + /** + * Tag a PDF document and save to disk. Existing behavior preserved. + */ + public static synchronized void createTaggedPDF(File inputPDF, String outputFolder, PDDocument document, List> contents) throws IOException { + COSObject encrypt = document.getDocument().getTrailer().getEncrypt(); + if (encrypt != null && !encrypt.empty()) { + throw new EncryptedTaggedPdfNotSupportedException( + "'" + inputPDF.getName() + "' is encrypted; tagged-pdf conversion is not supported for encrypted documents."); + } + tagDocument(document, contents, null); + String outputFileName = outputFolder + File.separator + + FileUtils.getBaseName(inputPDF.getName()) + "_tagged.pdf"; + document.saveAs(outputFileName); + LOGGER.log(Level.INFO, "Created {0}", outputFileName); + } + + private static void updatePages(PDDocument document, COSDocument cosDocument) throws IOException { + for (OperatorStreamKey operatorStreamKey : structParents.keySet()) { + structParentsIntegers.put(operatorStreamKey, currentStructParent++); + } + List rawPages = document.getPages(); + for (int pageNumber = 0; pageNumber < rawPages.size(); pageNumber++) { + PDPage page = rawPages.get(pageNumber); + if (isPDF2_0) { + updateAdditionalAction(page.getObject(), cosDocument, document); + } + OperatorStreamKey operatorStreamKey = new OperatorStreamKey(pageNumber, null); + Integer structParent = structParentsIntegers.get(operatorStreamKey); + if (structParent != null) { + page.getObject().setKey(ASAtom.STRUCT_PARENTS, COSInteger.construct(structParent)); + cosDocument.addChangedObject(page.getObject()); + } + COSObject contentsObject = page.getKey(ASAtom.CONTENTS); + ResourceHandler resourceHandler = ResourceHandler.getInstance(page.getResources()); + List processedTokens = new ChunksWriter(new GraphicsState(resourceHandler), + resourceHandler).processTokens(ChunksWriter.getTokens(page.getContent()), operatorStreamKey); + if (processedTokens.size() <= MAX_TOKENS_PER_STREAM) { + if (contentsObject != null && contentsObject.isIndirect() != null && contentsObject.isIndirect()) { + setUpContents(contentsObject, processedTokens); + cosDocument.addChangedObject(contentsObject); + } else { + page.getObject().setKey(ASAtom.CONTENTS, createContentsIndirect(cosDocument, processedTokens)); + cosDocument.addChangedObject(page.getObject()); + } + } else { + COSObject streamsArray = COSArray.construct(); + for (int start = 0; start < processedTokens.size(); start += MAX_TOKENS_PER_STREAM) { + int end = Math.min(start + MAX_TOKENS_PER_STREAM, processedTokens.size()); + List chunk = processedTokens.subList(start, end); + COSObject streamIndirect = createContentsIndirect(cosDocument, chunk); + streamsArray.add(streamIndirect); + } + page.getObject().setKey(ASAtom.CONTENTS, streamsArray); + cosDocument.addChangedObject(page.getObject()); + } + } + } + + private static COSObject createContentsIndirect(COSDocument cosDocument, List tokens) throws IOException { + COSObject streamObj = COSIndirect.construct(COSStream.construct(), cosDocument); + setUpContents(streamObj, tokens); + cosDocument.addObject(streamObj); + return streamObj; + } + + public static void setUpContents(COSObject contentsObj, List tokens) throws IOException { + byte[] res = new PDFStreamWriter().write(tokens); + try (InputStream inStream = new ByteArrayInputStream(res)) { + contentsObj.setData(new ASMemoryInStream(inStream)); + } + contentsObj.setKey(ASAtom.FILTER, new COSObject()); + COSStream newStream = (COSStream) contentsObj.getDirectBase(); + newStream.setFilters(new COSFilters(COSName.construct(ASAtom.FLATE_DECODE))); + } + + private static COSObject createStructTreeRoot(PDCatalog catalog, COSDocument cosDocument, PDDocument document) { + COSObject structTreeRoot = COSIndirect.construct(COSDictionary.construct(), cosDocument); + catalog.setKey(ASAtom.STRUCT_TREE_ROOT, structTreeRoot); + structTreeRoot.setKey(ASAtom.TYPE, COSName.construct(ASAtom.STRUCT_TREE_ROOT)); + cosDocument.addObject(structTreeRoot); + structTreeRoot.setKey(ASAtom.PARENT_TREE_NEXT_KEY, COSInteger.construct(document.getNumberOfPages())); + // Only emit the PDF 2.0 namespace (pdf2/ssn) when the output is PDF 2.0. + // The namespace gates PDF 2.0-only structure types like FENote (tagged + // with an explicit /NS to satisfy PDF/UA-2 clause 8.2.4.1). Attaching + // /Namespaces on a PDF 1.x file would produce invalid output. + pdf2_0Namespace = null; + if (isPDF2_0) { + pdf2_0Namespace = COSDictionary.construct(ASAtom.NS, TaggedPDFConstants.PDF2_NAMESPACE); + pdf2_0Namespace.setNameKey(ASAtom.TYPE, ASAtom.NAMESPACE); + pdf2_0Namespace = COSIndirect.construct(pdf2_0Namespace, cosDocument); + cosDocument.addObject(pdf2_0Namespace); + COSObject namespaces = COSArray.construct(); + namespaces.add(pdf2_0Namespace); + structTreeRoot.setKey(ASAtom.NAMESPACES, namespaces); + } + cosDocument.addChangedObject(catalog.getObject()); + return structTreeRoot; + } + + private static void createParentTree(COSDocument cosDocument, COSObject structTreeRoot) { + COSObject parentTree = COSIndirect.construct(COSDictionary.construct(), cosDocument); + cosDocument.addObject(parentTree); + structTreeRoot.setKey(ASAtom.PARENT_TREE, parentTree); + COSObject nums = COSArray.construct(); + parentTree.setKey(ASAtom.NUMS, nums); + int nextKey = 0; + for (Map.Entry> entry : structParents.entrySet()) { + int key = structParentsIntegers.get(entry.getKey()); + nums.add(COSInteger.construct(key)); + COSObject array = COSArray.construct(); + for (COSObject structParent : entry.getValue()) { + array.add(structParent); + } + nums.add(array); + if (key >= nextKey) nextKey = key + 1; + } + // Add single-entry annotations (Link annotations) to parent tree + for (Map.Entry entry : annotationStructParents.entrySet()) { + nums.add(COSInteger.construct(entry.getKey())); + nums.add(entry.getValue()); + if (entry.getKey() >= nextKey) nextKey = entry.getKey() + 1; + } + structTreeRoot.setKey(ASAtom.PARENT_TREE_NEXT_KEY, COSInteger.construct(nextKey)); + } + + private static COSObject addStructElement(COSObject parent, COSDocument cosDocument, String type, Integer pageNumber) { + return addStructElement(parent, cosDocument, type, pageNumber, false); + } + + private static COSObject addStructElement(COSObject parent, COSDocument cosDocument, String type, Integer pageNumber, boolean isFirstKid) { + COSObject structElement = COSIndirect.construct(COSDictionary.construct(), cosDocument); + COSObject k = parent.getKey(ASAtom.K); + if (k.getType() == COSObjType.COS_ARRAY) { + if (isFirstKid) { + k.insert(0, structElement); + } else { + k.add(structElement); + } + } else { + k = COSArray.construct(); + parent.setKey(ASAtom.K, k); + k.add(structElement); + } + structElement.setKey(ASAtom.S, COSName.construct(type)); + structElement.setKey(ASAtom.TYPE, COSName.construct(ASAtom.STRUCT_ELEM)); + structElement.setKey(ASAtom.P, parent); + if (pageNumber != null) { + structElement.setKey(ASAtom.PG, cosDocument.getPDDocument().getPages().get(pageNumber).getObject()); + pageNumberToFirstStructElement.putIfAbsent(pageNumber, structElement); + } + cosDocument.addObject(structElement); + return structElement; + } + + + public static COSObject createStructureTreeElements(PDDocument document, List> contents, + COSObject structTreeRoot, COSDocument cosDocument) { + COSObject seDocument = addStructElement(structTreeRoot, cosDocument, TaggedPDFConstants.DOCUMENT, null); + Map normalizedLevels = buildNormalizedHeadingLevels(contents); + for (int pageNumber = 0; pageNumber < contents.size(); pageNumber++) { + processAnnotations(document, cosDocument, pageNumber); + List pageContents = contents.get(pageNumber); + addKids(pageContents, seDocument, cosDocument, normalizedLevels); + processAnnotations(cosDocument, seDocument, pageNumber); + } + return seDocument; + } + + /** + * Adds child struct elements, collecting Captions and attaching them to their + * linked float (Figure/Table/List) via addCaptionIfPresent(). + * Based on Raman Kakhnovich's approach from origin/auto_tagging #377. + */ + private static void addKids(List contents, COSObject parentStructElem, COSDocument cosDocument, + Map normalizedLevels) { + // First pass: collect Caption → linkedContentId mappings + for (IObject content : contents) { + if (content instanceof SemanticCaption) { + structElementIdToCaptionMap.put( + ((SemanticCaption) content).getLinkedContentId(), (SemanticCaption) content); + } + } + // Second pass: create struct elements (skipping Captions — they are attached by addCaptionIfPresent) + for (IObject content : contents) { + if (content instanceof SemanticCaption) { + continue; + } + if (content instanceof SemanticHeading && normalizedLevels != null) { + createHeadingStructElem((SemanticHeading) content, parentStructElem, cosDocument, + normalizedLevels.get(content)); + } else { + createStructElem(content, parentStructElem, cosDocument); + } + } + } + + /** Overload for nested contexts (list items, table cells) where heading normalization is not applicable. */ + private static void addKids(List contents, COSObject parentStructElem, COSDocument cosDocument) { + addKids(contents, parentStructElem, cosDocument, null); + } + + /** + * If a Caption is linked to this content element, attach it as first or last child + * of the struct element based on spatial position. + */ + private static void addCaptionIfPresent(IObject content, COSObject linkedObject, COSDocument cosDocument) { + Long linkedContentId = content.getRecognizedStructureId(); + if (linkedContentId != null && structElementIdToCaptionMap.containsKey(linkedContentId)) { + SemanticCaption caption = structElementIdToCaptionMap.get(linkedContentId); + boolean isFirst = isCaptionFirstChild(caption.getBoundingBox(), content.getBoundingBox()); + createCaptionStructElem(caption, linkedObject, cosDocument, isFirst); + } + } + + /** + * Determines if the caption should be the first child (above/before) or last child + * (below/after) of its parent struct element. + */ + private static boolean isCaptionFirstChild(BoundingBox caption, BoundingBox parent) { + if (caption == null || parent == null) return true; + if (caption.getCenterY() > parent.getTopY()) { + return true; + } else if (caption.getCenterY() < parent.getBottomY()) { + return false; + } else { + return caption.getCenterX() < parent.getCenterX(); + } + } + + /** + * Normalizes heading levels across the document so that: + * - The first heading is always H1. + * - A heading may not skip levels going down (e.g., H1→H3 becomes H1→H2). + * - A heading may jump back up freely (e.g., H3→H1 is fine). + * This satisfies PDF/UA-1 §7.4.2 (strict descending sequence, no skipping). + */ + private static Map buildNormalizedHeadingLevels(List> contents) { + // Collect headings in document order + List headings = new ArrayList<>(); + for (List page : contents) { + for (IObject obj : page) { + if (obj instanceof SemanticHeading) { + headings.add((SemanticHeading) obj); + } + } + } + Map result = new IdentityHashMap<>(); + if (headings.isEmpty()) { + return result; + } + // Two-pass: first map original levels to a dense 1-based sequence, + // then assign normalized levels avoiding skips. + int currentNormalized = 1; + int prevOriginal = headings.get(0).getHeadingLevel(); + result.put(headings.get(0), 1); + for (int i = 1; i < headings.size(); i++) { + int orig = headings.get(i).getHeadingLevel(); + if (orig > prevOriginal) { + // Going deeper — allow only one step at a time + currentNormalized = Math.min(currentNormalized + 1, 6); + } else if (orig < prevOriginal) { + // Going back up — allow freely, but don't go below 1 + currentNormalized = Math.max(currentNormalized - (prevOriginal - orig), 1); + } + // else same level — keep currentNormalized + result.put(headings.get(i), currentNormalized); + prevOriginal = orig; + } + return result; + } + + private static boolean needToAddAnnotationToStructTree(PDAnnotation annotation, PDPage page, BoundingBox boundingBox) { + //PDF/UA-1 rule 7.18.2-1 / PDF/UA-2 rule 8.9.2.4.15-1 + if (ASAtom.TRAP_NET.equals(annotation.getSubtype())) { + return false; + } + if (isPDF2_0) { + Long f = annotation.getIntegerKey(ASAtom.F); + //PDF/UA-2 rules 8.9.2.2-1, 8.9.2.2-2 + if (f != null && ((f & 1) != 0 || ((f & 32) != 0 && (f & 256) == 0))) { + return false; + } + ASAtom subtype = annotation.getSubtype(); + //PDF/UA-2 8.9.2.4.11-1, 8.9.2.4.11-2, 8.9.2.4.9-1 + if (ASAtom.SOUND.equals(subtype) || ASAtom.MOVIE.equals(subtype) || ASAtom.POPUP.equals(subtype)) { + return false; + } + //PDF/UA-2 rules 8.10.1-1, 8.9.2.4.13-1, 8.9.2.4.16-1, 8.9.2.3-1, 8.2.5.20-1 + return (ASAtom.WIDGET.equals(subtype) && boundingBox.getHeight() != 0 && boundingBox.getWidth() != 0) + || ASAtom.WATERMARK.equals(subtype) || annotation.isMarkup() || ASAtom.LINK.equals(subtype); + } else { + //PDF/UA-1 rules 7.18.1-1, 7.18.4-1, 7.18.5-1 + return !ASAtom.PRINTER_MARK.equals(annotation.getSubtype()) && + !PDAnnotation.isOutsideCropBox(page, annotation) && PDAnnotation.isVisibleAnnotation(annotation); + } + } + + private static void setAnnotationContents(PDAnnotation annotation, COSObject annotObj) { + String existingContents = annotation.getContents(); + // Preserve the annotation's existing Contents when present + if (existingContents == null || existingContents.isEmpty()) { + // Prefer any existing Contents authored on the annotation (accessibility + // text the author already wrote), otherwise fall back to URI (for Link only), + // then to "Annotation". + String contentsText = null; + // Get URI from action if available + if (ASAtom.LINK.equals(annotation.getSubtype())) { + PDAction action = annotation.getA(); + if (action != null && action.getObject() != null && ASAtom.URI.equals(action.getSubtype())) { + contentsText = action.getStringKey(ASAtom.URI); + } + } + //TODO Use AI to generate descriptions + setStringEntry(contentsText, annotObj, ANNOTATION_REPLACEMENT_TEXT, ASAtom.CONTENTS, false); + } else { + if (PUAHelper.containPUA(existingContents)) { + setStringEntry(existingContents, annotObj, ANNOTATION_REPLACEMENT_TEXT, ASAtom.CONTENTS, false); + } + } + } + + //PDF/UA-2 rule 8.4.3-3 + private static void setStringEntry(String contents, COSObject object, String replacementText, ASAtom key, boolean useFigureCounter) { + contents = stripPuaCodePoints(contents); + if (contents == null || contents.isEmpty()) { + if (useFigureCounter) { + contents = replacementText + (++imageChunkFigureCounter); + } else { + contents = replacementText; + } + } + COSObject textObject = COSString.construct( + contents.getBytes(StandardCharsets.UTF_16), true); + object.setKey(key, textObject); + } + + private static void processAnnotations(PDDocument document, COSDocument cosDocument, int pageNumber) { + PDPage page = document.getPages().get(pageNumber); + List annotations = page.getAnnotations(); + if (annotations == null) return; + boolean pageChanged = false; + for (PDAnnotation annotation : annotations) { + COSObject annotObj = annotation.getObject(); + if (annotObj == null || annotObj.empty()) continue; + + BoundingBox boundingBox = new BoundingBox(page.getPageNumber(), annotation.getRect()); + if (needToAddAnnotationToStructTree(annotation, page, boundingBox)) { + annotationBBoxesMap.put(boundingBox, annotation); + setAnnotationContents(annotation, annotObj); + // Assign StructParent integer to annotation and register in parent tree + int structParentInt = currentStructParent++; + annotObj.setKey(ASAtom.STRUCT_PARENT, COSInteger.construct(structParentInt)); + cosDocument.addChangedObject(annotObj); + pageChanged = true; + } else { + if (annotObj.knownKey(ASAtom.STRUCT_PARENT)) { + annotObj.removeKey(ASAtom.STRUCT_PARENT); + cosDocument.addChangedObject(annotObj); + pageChanged = true; + } + } + } + // Flush the Annots array (may be an indirect object separate from the page) + // so that direct-object annotation dicts inside it (StructParent + Contents) are saved. + if (pageChanged) { + COSObject annotsObj = page.getKey(ASAtom.ANNOTS); + if (annotsObj != null && !annotsObj.empty()) { + cosDocument.addChangedObject(annotsObj); + } + cosDocument.addChangedObject(page.getObject()); + } + } + + private static void processAnnotations(COSDocument cosDocument, COSObject seDocument, int pageNumber) { + for (PDAnnotation annotation : annotationBBoxesMap.values()) { + createAnnotationStructElem(cosDocument, seDocument, annotation, null, pageNumber); + } + annotationBBoxesMap.clear(); + } + + private static void createAnnotationStructElem(COSDocument cosDocument, COSObject parent, PDAnnotation annotation, + List streamInfos, int pageNumber) { + + String tag; + if (ASAtom.LINK.equals(annotation.getSubtype())) { + tag = TaggedPDFConstants.LINK; + } else if (ASAtom.WIDGET.equals(annotation.getSubtype())) { + tag = TaggedPDFConstants.FORM; + } else { + tag = TaggedPDFConstants.ANNOT; + } + COSObject structElement = addStructElement(parent, cosDocument, tag, pageNumber); + + // PDF/UA-2 rule 8.9.4.2-1 requires the annotation's Contents and the enclosing + // struct element's Alt to be identical when both are present. + COSObject contents = annotation.getKey(ASAtom.CONTENTS); + if (contents != null && !contents.empty() && contents.getType() == COSObjType.COS_STRING) { + structElement.setKey(ASAtom.ALT, contents); + } + annotationStructParents.put(annotation.getIntegerKey(ASAtom.STRUCT_PARENT).intValue(), structElement); + // Create OBJR pointing to the annotation + COSObject objr = COSDictionary.construct(); + objr.setKey(ASAtom.TYPE, COSName.construct(ASAtom.OBJR)); + objr.setKey(ASAtom.OBJ, annotation.getObject()); + objr.setKey(ASAtom.PG, cosDocument.getPDDocument().getPages().get(pageNumber).getObject()); + COSObject kArray = COSArray.construct(); + kArray.add(objr); + structElement.setKey(ASAtom.K, kArray); + if (streamInfos != null) { + addMcidChildren(streamInfos, pageNumber, structElement); + } + } + + private static void updateDestinationsToStructureDestinations(PDDocument document, PDCatalog catalog, COSDocument cosDocument) { + for (PDPage page: document.getPages()) { + List annotations = page.getAnnotations(); + if (annotations == null) continue; + for (PDAnnotation annotation : annotations) { + COSObject annotObj = annotation.getObject(); + if (annotObj == null || annotObj.empty()) continue; + rewriteDestinationToStructDestinationInAction(annotObj, document, cosDocument); + updateAdditionalAction(annotObj, cosDocument, document); + if (!ASAtom.LINK.equals(annotation.getSubtype())) continue; + rewriteDestinationToStructDestinationInLinkAnnotation(annotObj, document); + } + } + updateOutlines(cosDocument, document); + updateOpenAction(cosDocument, catalog, document); + updateAdditionalAction(catalog.getObject(), cosDocument, document); + updateAcroForm(document, cosDocument); + } + + /** + * Make a Link annotation's destination compliant with PDF/UA-2 clause 8.8 (all internal + * destinations must be structure destinations). + * + *

    Behaviour differs between annotation {@code /Dest} and action {@code /A /D}: + *

      + *
    • For annotation {@code /Dest}: veraPDF checks the array's first element is a struct + * element (via {@code at(0).knownKey(S)}), so rewrite the first slot to a struct elem ref. + *
    • For a GoTo action: veraPDF first checks {@code /SD} on the action dict itself, so add + * an {@code /SD [structElem /Fit]} entry alongside (or instead of) the existing {@code /D}. + *
    + */ + private static void rewriteDestinationToStructDestinationInLinkAnnotation(COSObject annotObj, PDDocument document) { + COSObject dest = annotObj.getKey(ASAtom.DEST); + if (dest != null && !dest.empty()) { + COSObject structDestArray = buildStructDestArray(dest, document); + if (structDestArray != null) { + annotObj.setKey(ASAtom.DEST, structDestArray); + } else { + annotObj.removeKey(ASAtom.DEST); + } + document.getDocument().addChangedObject(annotObj); + } + } + + private static void rewriteDestinationToStructDestinationInAction(COSObject object, PDDocument document, COSDocument cosDocument) { + rewriteDestinationToStructDestinationInAction(object, document, cosDocument, ASAtom.A); + } + + private static void rewriteDestinationToStructDestinationInAction(COSObject object, PDDocument document, COSDocument cosDocument, ASAtom key) { + COSObject action = object.getKey(key); + if (action == null || action.empty() || action.getType() != COSObjType.COS_DICT) { + return; + } + if (!ASAtom.GO_TO.equals(action.getNameKey(ASAtom.S))) { + return; + } + COSObject d = action.getKey(ASAtom.D); + COSObject structDestArray = buildStructDestArray(d, document); + if (structDestArray != null) { + action.setKey(ASAtom.SD, structDestArray); + cosDocument.addChangedObject(action); + } else { + object.removeKey(key); + cosDocument.addChangedObject(object); + } + } + + private static void updateAdditionalAction(COSObject object, COSDocument cosDocument, PDDocument document) { + if (object.knownKey(ASAtom.AA)) { + COSObject aaEntry = object.getKey(ASAtom.AA); + if (aaEntry.getType() == COSObjType.COS_DICT) { + COSDictionary dictionary = (COSDictionary) aaEntry.getDirectBase(); + for (ASAtom key : new ArrayList<>(dictionary.getKeySet())) { + rewriteDestinationToStructDestinationInAction(aaEntry, document, cosDocument, key); + } + } + } + } + + private static void updateOpenAction(COSDocument cosDocument, PDCatalog catalog, PDDocument document) { + if (catalog.knownKey(ASAtom.OPEN_ACTION)) { + COSObject openAction = catalog.getKey(ASAtom.OPEN_ACTION); + if (openAction.getType() == COSObjType.COS_ARRAY) { + COSObject sd = buildStructDestArray(openAction, document); + if (sd != null) { + catalog.setKey(ASAtom.OPEN_ACTION, sd); + } else { + catalog.removeKey(ASAtom.OPEN_ACTION); + } + cosDocument.addChangedObject(catalog.getObject()); + return; + } + rewriteDestinationToStructDestinationInAction(catalog.getObject(), document, cosDocument, ASAtom.OPEN_ACTION); + } + } + + private static void updateAcroForm(PDDocument document, COSDocument cosDocument) { + PDAcroForm acroForm = document.getAcroForm(); + if (acroForm != null) { + Deque deque = new ArrayDeque<>(acroForm.getFields()); + while (!deque.isEmpty()) { + PDFormField field = deque.poll(); + updateAdditionalAction(field.getObject(), cosDocument, document); + deque.addAll(field.getChildFormFields()); + } + } + } + + /** + * Build a {@code [structElem /Fit]} array suitable as a structure destination. Uses the + * target page from an array-form page destination when available. Falls back to the + * annotation's own page only when the destination is entirely absent — a present-but- + * unresolvable destination (named, non-array, or an unmatched page) returns {@code null} + * so the caller leaves the original destination untouched rather than silently + * redirecting a cross-page link to the annotation's own page. + */ + private static COSObject buildStructDestArray(COSObject originalDest, PDDocument document) { + COSObject target = null; + boolean destIsPresent = originalDest != null && !originalDest.empty(); + COSObject page; + if (destIsPresent) { + page = PDAnnotation.getPageFromDestination(originalDest, ASAtom.D); + if (page != null && !page.empty() && page.getType() == COSObjType.COS_DICT + && ASAtom.PAGE.equals(page.getNameKey(ASAtom.TYPE))) { + List pages = document.getPages(); + for (int i = 0; i < pages.size(); i++) { + if (pages.get(i).getObject().getObjectKey().equals(page.getObjectKey())) { + target = pageNumberToFirstStructElement.get(i); + break; + } + } + } + } + + if (target == null) { + return null; + } + COSObject arr = COSArray.construct(); + arr.add(target); + arr.add(COSName.construct(ASAtom.getASAtom("Fit"))); + return arr; + } + + private static void updateOutlines(COSDocument cosDocument, PDDocument document) { + PDOutlineDictionary dictionary = document.getOutlines(); + if (dictionary == null) { + return; + } + updateOutlineItem(dictionary.getFirst(), document, cosDocument); + } + + private static void updateOutlineItem(PDOutlineItem current, PDDocument document, COSDocument cosDocument) { + while (current != null) { + COSObject currentObject = current.getObject(); + rewriteDestinationToStructDestinationInLinkAnnotation(currentObject, document); + rewriteDestinationToStructDestinationInAction(currentObject, document, cosDocument); + updateOutlineItem(current.getFirst(), document, cosDocument); + current = current.getNext(); + } + } + + private static void createStructElem(IObject object, COSObject parentStructElem, COSDocument cosDocument) { + if (object instanceof SemanticHeading) { + // Fallback: heading inside a nested context (list/table) — use original level + createHeadingStructElem((SemanticHeading) object, parentStructElem, cosDocument, + ((SemanticHeading) object).getHeadingLevel()); + } else if (object instanceof SemanticFootnote) { + createFootnoteStructElem((SemanticFootnote) object, parentStructElem, cosDocument); + } else if (object instanceof SemanticParagraph) { + createParagraphStructElem((SemanticParagraph) object, parentStructElem, cosDocument); + } else if (object instanceof PDFList) { + createListStructElem((PDFList) object, parentStructElem, cosDocument); + } else if (object instanceof SemanticTOC) { + createTOCStructElem((SemanticTOC) object, parentStructElem, cosDocument); + } else if (object instanceof TableBorder) { + TableBorder table = (TableBorder) object; + if (table.isTextBlock()) { + createStructElemForTextBlock(table, parentStructElem, cosDocument); + } else if (!table.isOneCellTable()) { + createTableStructElem(table, parentStructElem, cosDocument); + } + } else if (object instanceof SemanticFormula) { + createFormulaStructElem((SemanticFormula) object, parentStructElem, cosDocument); + } else if (object instanceof ImageChunk) { + createFigureStructElem((ImageChunk) object, parentStructElem, cosDocument); + } + } + + private static void createHeadingStructElem(SemanticHeading heading, COSObject parent, COSDocument cosDocument, + int normalizedLevel) { + // Use the normalized level (1–6) so that: + // - PDF/UA-1 §7.4.4: H is the only child of its parent (satisfied by H1-H6) + // - PDF/UA-1 §7.4.2: heading levels do not skip (satisfied by normalization) + COSObject headingObject = addStructElement(parent, cosDocument, + TaggedPDFConstants.H + normalizedLevel, + heading.getPageNumber()); + processTextNode(heading, headingObject); + } + + private static void createParagraphStructElem(SemanticParagraph paragraph, COSObject parent, COSDocument cosDocument) { + COSObject paragraphObject = addStructElement(parent, cosDocument, TaggedPDFConstants.P, paragraph.getPageNumber()); + processTextNode(paragraph, paragraphObject); + } + + /** + * Remove Unicode Private Use Area code points. PDF/UA-2 clause 8.4.3.3 forbids PUA chars in + * /Alt entries. Iterates by code point so surrogate pairs for supplementary PUA are handled. + */ + public static String stripPuaCodePoints(String in) { + if (in == null || in.isEmpty()) return in; + StringBuilder sb = new StringBuilder(in.length()); + int i = 0; + while (i < in.length()) { + int cp = in.codePointAt(i); + boolean isPua = (cp >= 0xE000 && cp <= 0xF8FF) + || (cp >= 0xF0000 && cp <= 0xFFFFD) + || (cp >= 0x100000 && cp <= 0x10FFFD); + if (!isPua) sb.appendCodePoint(cp); + i += Character.charCount(cp); + } + return sb.toString(); + } + + private static void createFootnoteStructElem(SemanticFootnote footnote, COSObject parent, COSDocument cosDocument) { + // FENote + /NS + /NoteType is the PDF 2.0 path (PDF/UA-2 clause 8.2.4.1). + // For PDF 1.x output, fall back to the Note standard structure type so the + // result is valid for PDF 1.7 tagged-PDF consumers. + boolean usePdf2Footnote = isPDF2_0 && pdf2_0Namespace != null; + COSObject noteObject = addStructElement(parent, cosDocument, + usePdf2Footnote ? TaggedPDFConstants.FENOTE : TaggedPDFConstants.NOTE, + footnote.getPageNumber()); + // PDF/UA-1 §7.9.1 and PDF 2.0 14.8.4.6 require Note / FENote struct + // elements to carry an /ID entry that is unique within the document. + // The value is opaque to veraPDF — any non-empty unique string works. + // We use a per-document counter prefixed with "note" so the IDs are + // human-readable in PDF dumps. footnoteCounter is reset at the top + // of tagDocument(), and tagDocument is synchronized, so the counter + // is safe under repeated calls. US_ASCII is explicit so the byte + // representation does not depend on the JVM default charset — the + // string is pure ASCII so the choice is functionally a no-op, but + // it documents intent and silences SpotBugs DM_DEFAULT_ENCODING. + footnoteCounter++; + String noteId = "note-" + footnoteCounter; + noteObject.setKey(ASAtom.ID, + COSString.construct(noteId.getBytes(java.nio.charset.StandardCharsets.US_ASCII))); + if (usePdf2Footnote) { + noteObject.setKey(ASAtom.NS, pdf2_0Namespace); + noteObject.setKey(ASAtom.NOTE_TYPE, COSName.construct(ASAtom.getASAtom("Footnote"))); + } + processTextNode(footnote, noteObject); + } + + private static void createCaptionStructElem(SemanticCaption caption, COSObject parent, COSDocument cosDocument, boolean isFirstChild) { + COSObject captionObject = addStructElement(parent, cosDocument, TaggedPDFConstants.CAPTION, caption.getPageNumber(), isFirstChild); + processTextNode(caption, captionObject); + } + + private static void createFigureStructElem(ImageChunk image, COSObject parent, COSDocument cosDocument) { + createFigureStructElemReturning(image, parent, cosDocument); + } + + private static COSObject createFigureStructElemReturning(ImageChunk image, COSObject parent, COSDocument cosDocument) { + COSObject figureObject = addStructElement(parent, cosDocument, TaggedPDFConstants.FIGURE, image.getPageNumber()); + double[] bbox = {image.getLeftX(), image.getBottomY(), image.getRightX(), image.getTopY()}; + addAttributeToStructElem(figureObject, ASAtom.LAYOUT, ASAtom.BBOX, COSArray.construct(4, bbox)); + // PDF/UA-1 rule 7.3-1 / PDF/UA-2 rule 8.2.5.28.2-1: every Figure must + // carry a non-empty /Alt. JSON/HTML/Markdown outputs follow the + // alt/alt_source schema (alt absent ↔ alt_source=missing), but the + // PDF struct tree cannot leave /Alt empty without failing verification. + // The "image N" synthetic fallback below is the lesser evil: it + // satisfies veraPDF but is a known false alternative for AT users. + // TODO(a11y): when alt is missing, re-tag as /Artifact (decorative) + // rather than emitting synthetic text. Tracked as a follow-up to the + // alt/alt_source schema unification; file an issue before removing + // this comment. + String altText = null; + if (image instanceof EnrichedImageChunk) { + altText = ((EnrichedImageChunk) image).sanitizeDescription(); + } + // Write as hex string (isHex=true). UTF-16BE code units whose low byte is 0x5C (e.g. U+D55C "한") + // would be misparsed as a backslash escape inside a PDF literal string, shifting all subsequent + // bytes by one and producing PUA code points that fail PDF/UA-2 clause 8.4.3.3. + setStringEntry(altText, figureObject, IMAGE_REPLACEMENT_TEXT, ASAtom.ALT, true); + cosDocument.addChangedObject(figureObject); + processImageNode(image, figureObject); + addCaptionIfPresent(image, figureObject, cosDocument); + return figureObject; + } + + + private static void createFormulaStructElem(SemanticFormula formula, COSObject parent, COSDocument cosDocument) { + COSObject formulaObject = addStructElement(parent, cosDocument, TaggedPDFConstants.FORMULA, formula.getPageNumber()); + double[] bbox = {formula.getLeftX(), formula.getBottomY(), formula.getRightX(), formula.getTopY()}; + addAttributeToStructElem(formulaObject, ASAtom.LAYOUT, ASAtom.BBOX, COSArray.construct(4, bbox)); + //PDF/UA-1 rule 7.7-1 + String altText = formula.getLatex(); + setStringEntry(altText, formulaObject, FORMULA_REPLACEMENT_TEXT, ASAtom.ALT, false); + cosDocument.addChangedObject(formulaObject); + addMcidChildren(formula.getStreamInfos(), formula.getPageNumber(), formulaObject); + } + + private static void createListStructElem(PDFList list, COSObject parent, COSDocument cosDocument) { + COSObject listObject = addStructElement(parent, cosDocument, TaggedPDFConstants.L, list.getPageNumber()); + if (list.getNextList() != null) { + listObject.setKey(ASAtom.ID, COSString.construct(String.valueOf(list.getRecognizedStructureId()).getBytes())); + } + if (list.getPreviousList() != null) { + addAttributeToStructElem(listObject, ASAtom.LIST, ASAtom.CONTINUED_LIST, COSBoolean.construct(true)); + addAttributeToStructElem(listObject, ASAtom.LIST, ASAtom.CONTINUED_FROM, + COSString.construct(String.valueOf(list.getPreviousList().getRecognizedStructureId()).getBytes())); + } + ASAtom numbering = ListProcessor.getListNumbering(list.getNumberingStyle()); + // ListProcessor.getListNumbering returns null for unmapped styles. Fold + // null into NONE so the hasLabel promotion and COSName.construct below + // never receive null. + if (numbering == null || numbering == ASAtom.NONE) { + boolean hasLabel = false; + for (ListItem item : list.getListItems()) { + if (item.getLabelLength() > 0) { hasLabel = true; break; } + } + numbering = hasLabel ? ASAtom.ORDERED : ASAtom.NONE; + } + addAttributeToStructElem(listObject, ASAtom.LIST, ASAtom.LIST_NUMBERING, COSName.construct(numbering)); + + for (ListItem listItem : list.getListItems()) { + COSObject listItemObject = addStructElement(listObject, cosDocument, TaggedPDFConstants.LI, listItem.getPageNumber()); + int labelLength = listItem.getLabelLength(); + if (labelLength > 0) { + COSObject lblObject = addStructElement(listItemObject, cosDocument, TaggedPDFConstants.LBL, listItem.getPageNumber()); + SemanticTextNode lblTextNode = new SemanticTextNode(); + lblTextNode.add(new TextLine(listItem.getFirstLine(), 0, listItem.getLabelLength())); + processTextNode(lblTextNode, lblObject); + } + COSObject lBodyObject = addStructElement(listItemObject, cosDocument, TaggedPDFConstants.LBODY, listItem.getPageNumber()); + SemanticTextNode lBodyTextNode = new SemanticTextNode(); + for (TextLine line : listItem.getLines()) { + lBodyTextNode.add(line); + } + if (labelLength > 0) { + lBodyTextNode.setFirstLine(new TextLine(listItem.getFirstLine(), listItem.getLabelLength(), + listItem.getFirstLine().getValue().length())); + } + processTextNode(lBodyTextNode, lBodyObject); + addKids(listItem.getContents(), lBodyObject, cosDocument); + } + addCaptionIfPresent(list, listObject, cosDocument); + } + + private static void createTOCStructElem(SemanticTOC toc, COSObject parent, COSDocument cosDocument) { + COSObject tocObject = addStructElement(parent, cosDocument, TaggedPDFConstants.TOC, toc.getPageNumber()); + for (IObject child : toc.getTOCItems()) { + if (child instanceof SemanticTOC) { + createTOCStructElem((SemanticTOC)child, tocObject, cosDocument); + } else if (child instanceof SemanticTOCI) { + SemanticTOCI tocItem = ((SemanticTOCI)child); + COSObject tocItemObject = addStructElement(tocObject, cosDocument, TaggedPDFConstants.TOCI, child.getPageNumber()); + SemanticTextNode tocItemTextNode = new SemanticTextNode(); + for (TextLine line : tocItem.getLines()) { + tocItemTextNode.add(line); + } + processTextNode(tocItemTextNode, tocItemObject); + addKids(tocItem.getContents(), tocItemObject, cosDocument); + } + } + } + + private static void createTableStructElem(TableBorder table, COSObject parent, COSDocument cosDocument) { + createTableStructElemReturning(table, parent, cosDocument); + } + + private static COSObject createTableStructElemReturning(TableBorder table, COSObject parent, COSDocument cosDocument) { + COSObject tableObject = addStructElement(parent, cosDocument, TaggedPDFConstants.TABLE, table.getPageNumber()); + + // Flat structure: Table > TR > TH/TD (no THead/TBody wrappers) + // First row uses TH + Scope="Column" for header identification. + // This is compatible with both Adobe Acrobat and veraPDF PDF/UA-2 validation. + for (int rowNumber = 0; rowNumber < table.getNumberOfRows(); rowNumber++) { + addTableRow(table, rowNumber, tableObject, cosDocument); + } + + addCaptionIfPresent(table, tableObject, cosDocument); + return tableObject; + } + + private static void addTableRow(TableBorder table, int rowNumber, COSObject parent, + COSDocument cosDocument) { + TableBorderRow row = table.getRow(rowNumber); + COSObject rowObject = addStructElement(parent, cosDocument, TaggedPDFConstants.TR, row.getPageNumber()); + for (int colNumber = 0; colNumber < table.getNumberOfColumns(); colNumber++) { + TableBorderCell cell = row.getCell(colNumber); + if (cell.getRowNumber() == rowNumber && cell.getColNumber() == colNumber) { + String cellTag = cell.isHeaderCell() ? TaggedPDFConstants.TH : TaggedPDFConstants.TD; + COSObject cellObject = addStructElement(rowObject, cosDocument, cellTag, cell.getPageNumber()); + if (cell.isHeaderCell()) { + String scope = "Both"; + if (rowNumber == 0 && colNumber != 0) { + scope = "Column"; + } else if (rowNumber != 0 && colNumber == 0) { + scope = "Row"; + } + addAttributeToStructElem(cellObject, ASAtom.TABLE, + ASAtom.SCOPE, COSName.construct(ASAtom.getASAtom(scope))); + } + if (cell.getColSpan() != 1) { + addAttributeToStructElem(cellObject, ASAtom.TABLE, ASAtom.COL_SPAN, COSInteger.construct(cell.getColSpan())); + } + if (cell.getRowSpan() != 1) { + addAttributeToStructElem(cellObject, ASAtom.TABLE, ASAtom.ROW_SPAN, COSInteger.construct(cell.getRowSpan())); + } + addKids(cell.getContents(), cellObject, cosDocument); + } + } + } + + private static void createStructElemForTextBlock(TableBorder table, COSObject parent, COSDocument cosDocument) { + boolean useAside = isPDF2_0 && pdf2_0Namespace != null; + COSObject partObject = addStructElement(parent, cosDocument, useAside ? TaggedPDFConstants.ASIDE : TaggedPDFConstants.ART, table.getPageNumber()); + if (useAside) { + partObject.setKey(ASAtom.NS, pdf2_0Namespace); + } + TableBorderCell cell = table.getCell(0,0); + addKids(cell.getContents(), partObject, cosDocument); + addCaptionIfPresent(table, partObject, cosDocument); + } + + private static void addAttributeToStructElem(COSObject structElement, ASAtom ownerASAtom, ASAtom attributeName, + COSObject attributeValue) { + COSObject aObject = structElement.getKey(ASAtom.A); + COSObject owner = COSName.construct(ownerASAtom); + if (aObject.empty()) { + aObject = COSDictionary.construct(); + aObject.setKey(ASAtom.O, owner); + aObject.setKey(attributeName, attributeValue); + } else if (aObject.getType() == COSObjType.COS_DICT) { + COSObject ownerObject = aObject.getKey(ASAtom.O); + if (owner.equals(ownerObject)) { + aObject.setKey(attributeName, attributeValue); + } else { + COSObject previousADictionary = aObject; + aObject = COSArray.construct(); + aObject.add(previousADictionary); + addAttributeDictionaryToArray(owner, attributeName, attributeValue, aObject); + } + } else if (aObject.getType() == COSObjType.COS_ARRAY) { + boolean isAttributeSet = false; + for (COSObject dictionary : (COSArray) aObject.getDirectBase()) { + if (owner.equals(dictionary.getKey(ASAtom.O))) { + dictionary.setKey(attributeName, attributeValue); + isAttributeSet = true; + break; + } + } + if (!isAttributeSet) { + addAttributeDictionaryToArray(owner, attributeName, attributeValue, aObject); + } + } + structElement.setKey(ASAtom.A, aObject); + } + + private static void addAttributeDictionaryToArray(COSObject owner, ASAtom attributeName, COSObject attributeValue, + COSObject aObject) { + COSObject newADictionary = COSDictionary.construct(); + newADictionary.setKey(ASAtom.O, owner); + newADictionary.setKey(attributeName, attributeValue); + aObject.add(newADictionary); + } + + private static void processTextNode(SemanticTextNode textNode, COSObject cosObject) { + Map.Entry bBoxToAnnotation = null; + List streamInfos = new ArrayList<>(); + for (TextColumn textColumn : textNode.getColumns()) { + for (TextLine textLine : textColumn.getLines()) { + for (TextChunk textChunk : textLine.getTextChunks()) { + if (bBoxToAnnotation != null && + (!isAnnotIntersectWithBoundingBox(bBoxToAnnotation.getKey(), textChunk.getBoundingBox()) || + TextChunkUtils.getTextChunkPartForRange(textChunk, -Double.MAX_VALUE, + bBoxToAnnotation.getKey().getLeftX(), false) != null)) { + createAnnotationStructElem(StaticResources.getDocument().getDocument(), cosObject, + bBoxToAnnotation.getValue(), streamInfos, textNode.getPageNumber()); + annotationBBoxesMap.remove(bBoxToAnnotation.getKey()); + streamInfos.clear(); + bBoxToAnnotation = null; + } + SortedMap annots = getAnnotationsByBBox(textChunk.getBoundingBox()); + if (!annots.isEmpty()) { + bBoxToAnnotation = processAnnotsForTextChunk(cosObject, bBoxToAnnotation, streamInfos, + textChunk, annots); + } else { + streamInfos.addAll(textChunk.getStreamInfos()); + } + } + } + } + if (bBoxToAnnotation != null) { + createAnnotationStructElem(StaticResources.getDocument().getDocument(), cosObject, bBoxToAnnotation.getValue(), + streamInfos, textNode.getPageNumber()); + annotationBBoxesMap.remove(bBoxToAnnotation.getKey()); + } else { + addMcidChildren(streamInfos, textNode.getPageNumber(), cosObject); + } + } + + private static Map.Entry processAnnotsForTextChunk(COSObject cosObject, + Map.Entry bBoxToAnnotation, + List streamInfos, + TextChunk textChunk, + SortedMap annots) { + Map.Entry currentBBoxToAnnotation = bBoxToAnnotation; + double currentRightX = -Double.MAX_VALUE; + for (Map.Entry entry : annots.entrySet()) { + // Reference equality is intentional: currentBBoxToAnnotation may have been + // carried over from a previous TextChunk when the annotation spans multiple + // chunks. 'entry' comes from the freshly built 'annots' map (ordered by left X) + // for the current chunk. If both references point to the same Map.Entry object, + // we are still accumulating stream infos inside the annotation region that was + // started in a prior iteration and should not flush it yet. + // Processed annotations are removed from annotationBBoxesMap immediately after + // createAnnotationStructElem, so they will never reappear in a subsequent + // getAnnotationsByBBox call, making the identity check safe and unambiguous. + BoundingBox boundingBox = entry.getKey(); + if (currentBBoxToAnnotation == null || !Objects.equals(currentBBoxToAnnotation.getKey(), entry.getKey())) { + if (currentBBoxToAnnotation != null) { + createAnnotationStructElem(StaticResources.getDocument().getDocument(), cosObject, + currentBBoxToAnnotation.getValue(), streamInfos, textChunk.getPageNumber()); + annotationBBoxesMap.remove(currentBBoxToAnnotation.getKey()); + streamInfos.clear(); + currentRightX = currentBBoxToAnnotation.getKey().getRightX(); + } + TextChunk textChunkPart = TextChunkUtils.getTextChunkPartForRange(textChunk, + currentRightX, boundingBox.getLeftX(), false); + if (textChunkPart != null) { + streamInfos.addAll(textChunkPart.getStreamInfos()); + } + addMcidChildren(streamInfos, textChunk.getPageNumber(), cosObject); + streamInfos.clear(); + } + TextChunk textChunkPart = TextChunkUtils.getTextChunkPartForRange(textChunk, + boundingBox.getLeftX(), boundingBox.getRightX(), false); + if (textChunkPart != null) { + streamInfos.addAll(textChunkPart.getStreamInfos()); + } + currentRightX = boundingBox.getRightX(); + currentBBoxToAnnotation = entry; + } + TextChunk textChunkPart = TextChunkUtils.getTextChunkPartForRange(textChunk, + currentRightX, textChunk.getRightX(), false); + if (textChunkPart != null) { + createAnnotationStructElem(StaticResources.getDocument().getDocument(), cosObject, + currentBBoxToAnnotation.getValue(), streamInfos, textChunk.getPageNumber()); + annotationBBoxesMap.remove(currentBBoxToAnnotation.getKey()); + streamInfos.clear(); + streamInfos.addAll(textChunkPart.getStreamInfos()); + currentBBoxToAnnotation = null; + } + return currentBBoxToAnnotation; + } + + private static Map.Entry getAnnotationByBBox(BoundingBox boundingBox) { + for (Map.Entry entry : annotationBBoxesMap.entrySet()) { + if (isAnnotIntersectWithBoundingBox(entry.getKey(), boundingBox)) { + return entry; + } + } + return null; + } + + private static SortedMap getAnnotationsByBBox(BoundingBox boundingBox) { + SortedMap result = new TreeMap<>( + Comparator.comparingDouble((BoundingBox b) -> b.getLeftX()).thenComparingInt(BoundingBox::hashCode)); + for (Map.Entry entry : annotationBBoxesMap.entrySet()) { + if (isAnnotIntersectWithBoundingBox(entry.getKey(), boundingBox)) { + result.put(entry.getKey(), entry.getValue()); + } + } + return result; + } + + private static boolean isAnnotIntersectWithBoundingBox(BoundingBox annotBoundingBox, BoundingBox boundingBox) { + return annotBoundingBox.getIntersectionPercent(boundingBox) > 0.5d || + boundingBox.getIntersectionPercent(annotBoundingBox) > 0.5d; + } + + private static void processImageNode(ImageChunk imageChunk, COSObject cosObject) { + Map.Entry entry = getAnnotationByBBox(imageChunk.getBoundingBox()); + if (entry != null) { + annotationBBoxesMap.remove(entry.getKey()); + createAnnotationStructElem(StaticResources.getDocument().getDocument(), cosObject, entry.getValue(), + imageChunk.getStreamInfos(), imageChunk.getPageNumber()); + } else { + addMcidChildren(imageChunk.getStreamInfos(), imageChunk.getPageNumber(), cosObject); + } + } + + private static void addMcidChildren(List streamInfos, Integer pageNumber, COSObject parentStructElement) { + if (streamInfos.isEmpty()) { + return; + } + COSObject kids = parentStructElement.getKey(ASAtom.K); + if (kids.getType() != COSObjType.COS_ARRAY) { + COSObject array = COSArray.construct(); + parentStructElement.setKey(ASAtom.K, array); + kids = array; + } + List streamInfoList = getMergedStreamInfos(streamInfos); + for (StreamInfo streamInfo : streamInfoList) { + OperatorStreamKey operatorStreamKey = new OperatorStreamKey(pageNumber, streamInfo.getXObjectName()); + List list = structParents.computeIfAbsent(operatorStreamKey, x -> new ArrayList<>()); + int mcid = list.size(); + COSObject mcidObject = COSInteger.construct(mcid); + streamInfo.setMcid(mcid); + operatorIndexesToStreamInfosMap.computeIfAbsent(operatorStreamKey, x -> new HashMap<>()) + .computeIfAbsent(streamInfo.getOperatorIndex(), x -> new TreeSet<>()).add(streamInfo); + list.add(parentStructElement); + if (streamInfo.getXObjectName() != null) { + PDXObject pdxObject = StaticResources.getDocument().getPage(pageNumber).getResources() + .getXObject(ASAtom.getASAtom(streamInfo.getXObjectName())); + if (pdxObject != null) { + COSObject mcrDictionary = COSDictionary.construct(); + mcrDictionary.setKey(ASAtom.TYPE, COSName.construct(ASAtom.MCR)); + mcrDictionary.setKey(ASAtom.MCID, mcidObject); + mcrDictionary.setKey(ASAtom.STM, pdxObject.getObject()); + kids.add(mcrDictionary); + } else { + kids.add(mcidObject); + } + } else { + kids.add(mcidObject); + } + } + } + + private static List getMergedStreamInfos(List streamInfos) { + List streamInfoList = new ArrayList<>(); + Iterator streamInfoIterator = streamInfos.iterator(); + StreamInfo previousInfo = streamInfoIterator.next(); + streamInfoList.add(previousInfo); + while (streamInfoIterator.hasNext()) { + StreamInfo currentStreamInfo = streamInfoIterator.next(); + if (previousInfo.getOperatorIndex() == currentStreamInfo.getOperatorIndex() && + previousInfo.getEndIndex() <= currentStreamInfo.getStartIndex()) { + previousInfo.setEndIndex(currentStreamInfo.getEndIndex()); + } else { + streamInfoList.add(currentStreamInfo); + previousInfo = currentStreamInfo; + } + } + return streamInfoList; + } + + public static Map getStructParentsIntegers() { + return structParentsIntegers; + } + + public static Map> getStructParents() { + return structParents; + } + + public static Map>> getOperatorIndexesToStreamInfosMap() { + return operatorIndexesToStreamInfosMap; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/CaptionProcessor.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/CaptionProcessor.java new file mode 100644 index 0000000..197c2f1 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/CaptionProcessor.java @@ -0,0 +1,151 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticCaption; +import org.verapdf.wcag.algorithms.entities.SemanticFigure; +import org.verapdf.wcag.algorithms.entities.SemanticTextNode; +import org.verapdf.wcag.algorithms.entities.content.ImageChunk; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.CaptionUtils; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.NodeUtils; + +import java.util.List; + +/** + * Processor for detecting and linking captions to figures and tables. + * Identifies text nodes that are likely captions based on proximity and content. + */ +public class CaptionProcessor { + + private static final double CAPTION_PROBABILITY = 0.75; + + private static final double CAPTION_VERTICAL_OFFSET_RATIO = 1; + private static final double CAPTION_HORIZONTAL_OFFSET_RATIO = 1; + private static final double SUBTLE_IMAGE_RATIO_THRESHOLD = 0.01; + + /** + * Processes content to identify and link captions to images and tables. + * + * @param contents the list of content objects to process + */ + public static void processCaptions(List contents) { + DocumentProcessor.setIndexesForContentsList(contents); + SemanticFigure imageNode = null; + SemanticTextNode lastTextNode = null; + for (IObject content : contents) { + if (content == null) { + continue; + } + if (content instanceof SemanticTextNode) { + SemanticTextNode textNode = (SemanticTextNode) content; + if (textNode.isSpaceNode() || textNode.isEmpty()) { + continue; + } + + if (imageNode != null && isTextNotContainedInImage(imageNode, textNode)) { + acceptImageCaption(contents, imageNode, lastTextNode, textNode); + imageNode = null; + } + + lastTextNode = textNode; + } else if (content instanceof ImageChunk && !isImageSubtle((ImageChunk) content)) { + if (imageNode != null && isTextNotContainedInImage(imageNode, lastTextNode)) { + acceptImageCaption(contents, imageNode, lastTextNode, null); + lastTextNode = null; + } + imageNode = new SemanticFigure((ImageChunk) content); + imageNode.setRecognizedStructureId(content.getRecognizedStructureId()); + } else if (content instanceof TableBorder && !((TableBorder) content).isTextBlock()) { + if (imageNode != null && isTextNotContainedInImage(imageNode, lastTextNode)) { + acceptImageCaption(contents, imageNode, lastTextNode, null); + lastTextNode = null; + } + ImageChunk imageChunk = new ImageChunk(content.getBoundingBox()); + imageChunk.setRecognizedStructureId(content.getRecognizedStructureId()); + imageNode = new SemanticFigure(imageChunk); + imageNode.setRecognizedStructureId(content.getRecognizedStructureId()); + } + } + if (imageNode != null) { + acceptImageCaption(contents, imageNode, lastTextNode, null); + } +// for (IObject content1 : contents) { +// if (content1 instanceof SemanticTextNode) { +// SemanticTextNode textNode = (SemanticTextNode)content1; +// for (IObject content2 : contents) { +// if (content2 instanceof ImageChunk) { +// SemanticFigure imageNode = new SemanticFigure((ImageChunk) content2); +// acceptImageCaption(imageNode, textNode, textNode); +// } +// } +// } +// } + } + + private static boolean isImageSubtle(ImageChunk imageChunk) { + double imageHeight = imageChunk.getHeight(); + double imageWidth = imageChunk.getWidth(); + if (NodeUtils.areCloseNumbers(imageWidth, 0) || NodeUtils.areCloseNumbers(imageHeight, 0)) { + return true; + } + double aspectRatio = Math.min(imageWidth, imageHeight) / Math.max(imageWidth, imageHeight); + return aspectRatio < SUBTLE_IMAGE_RATIO_THRESHOLD; + } + + + /** + * Checks if a text node is not contained within an image's bounding box. + * + * @param image the image to check against + * @param text the text node to check + * @return true if the text is outside the image bounds, false otherwise + */ + public static boolean isTextNotContainedInImage(SemanticFigure image, SemanticTextNode text) { + if (text == null) { + return true; + } + + double textSize = text.getFontSize(); + return !image.getBoundingBox().contains(text.getBoundingBox(), + textSize * CAPTION_HORIZONTAL_OFFSET_RATIO, + textSize * CAPTION_VERTICAL_OFFSET_RATIO); + } + + private static void acceptImageCaption(List contents, SemanticFigure imageNode, + SemanticTextNode previousNode, SemanticTextNode nextNode) { + if (imageNode.getImages().isEmpty()) { + return; + } + double previousCaptionProbability = CaptionUtils.imageCaptionProbability(previousNode, imageNode); + double nextCaptionProbability = CaptionUtils.imageCaptionProbability(nextNode, imageNode); + double captionProbability; + SemanticTextNode captionNode; + if (previousCaptionProbability > nextCaptionProbability) { + captionProbability = previousCaptionProbability; + captionNode = previousNode; + } else { + captionProbability = nextCaptionProbability; + captionNode = nextNode; + } + if (captionProbability >= CAPTION_PROBABILITY) { + SemanticCaption semanticCaption = new SemanticCaption(captionNode); + contents.set(captionNode.getIndex(), semanticCaption); + semanticCaption.setLinkedContentId(imageNode.getRecognizedStructureId()); + } + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/ClusterTableProcessor.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/ClusterTableProcessor.java new file mode 100644 index 0000000..7567430 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/ClusterTableProcessor.java @@ -0,0 +1,120 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticTextNode; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.enums.SemanticType; +import org.verapdf.wcag.algorithms.entities.tables.Table; +import org.verapdf.wcag.algorithms.entities.tables.TableToken; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; +import org.verapdf.wcag.algorithms.semanticalgorithms.consumers.ClusterTableConsumer; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.TextChunkUtils; + +import java.util.ArrayList; +import java.util.List; + +/** + * Table processor that uses clustering algorithms to detect tables. + * Identifies tables by analyzing spatial relationships between text chunks. + */ +public class ClusterTableProcessor extends AbstractTableProcessor { + + @Override + protected List> getTables(List> contents, List pageNumbers) { + List> tables = new ArrayList<>(); + for (int pageNumber : pageNumbers) { + tables.add(processClusterDetectionTables(contents.get(pageNumber))); + } + return tables; + } + + /** + * Detects tables on a single page using cluster-based detection. + * + * @param contents the page contents to analyze + * @return a list of detected table borders + */ + public static List processClusterDetectionTables(List contents) { + ClusterTableConsumer clusterTableConsumer = new ClusterTableConsumer(); + for (IObject content : contents) { + if (content instanceof TextChunk) { + TextChunk textChunk = (TextChunk) content; + if (textChunk.isWhiteSpaceChunk() || textChunk.isEmpty()) { + continue; + } + List splitChunks = TextChunkUtils.splitTextChunkByWhiteSpaces(textChunk); + for (TextChunk splitChunk : splitChunks) { + SemanticTextNode semanticTextNode = new SemanticTextNode(splitChunk); + clusterTableConsumer.accept(new TableToken(splitChunk, semanticTextNode), semanticTextNode); + } +// } else if (content instanceof ImageChunk) { +// SemanticFigure semanticFigure = new SemanticFigure((ImageChunk) content); +// clusterTableConsumer.accept(new TableToken((ImageChunk) content, semanticFigure), semanticFigure); + } + } + clusterTableConsumer.processEnd(); + List result = new ArrayList<>(); + for (Table table : clusterTableConsumer.getTables()) { + TableBorder tableBorder = table.createTableBorderFromTable(); + if (tableBorder != null) { + setTableCellsSemanticTypes(tableBorder); + result.add(tableBorder); + } + } + return result; + } + + private static void setTableCellsSemanticTypes(TableBorder table) { + for (int rowNumber = 0; rowNumber < table.getNumberOfRows(); rowNumber++) { + for (int colNumber = 0; colNumber < table.getNumberOfColumns(); colNumber++) { + TableBorderCell cell = table.getCell(rowNumber, colNumber); + if (cell.getColNumber() == colNumber && cell.getRowNumber() == rowNumber) { + cell.setSemanticType(rowNumber == 0 ? SemanticType.TABLE_HEADER : SemanticType.TABLE_CELL); + } + } + } + } + +// public static void findListAndTablesImageMethod(List nodes) { +// ClusterTableConsumer clusterTableConsumer = new ClusterTableConsumer(); +// for (SemanticTextNode textNode : nodes) { +// ImageChunk imageChunk = new ImageChunk(textNode.getBoundingBox()); +// SemanticFigure figure = new SemanticFigure(imageChunk); +// clusterTableConsumer.accept(new TableToken(imageChunk, figure), figure); +//// if (chunk instanceof TextChunk) { +//// SemanticTextNode semanticTextNode = new SemanticTextNode((TextChunk)chunk); +//// clusterTableConsumer.accept(new TableToken((TextChunk)chunk, semanticTextNode), semanticTextNode); +//// } else if (chunk instanceof ImageChunk) { +//// SemanticFigure semanticFigure = new SemanticFigure((ImageChunk) chunk); +//// clusterTableConsumer.accept(new TableToken((ImageChunk)chunk, semanticFigure), semanticFigure); +//// } +// +// } +// // if (recognitionArea.isValid()) { +//// List restNodes = new ArrayList<>(recognize()); +//// init(); +//// restNodes.add(root); +//// for (INode restNode : restNodes) { +//// accept(restNode); +//// } +//// } +// clusterTableConsumer.processEnd(); +// System.out.println("test"); +// } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/ContentFilterProcessor.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/ContentFilterProcessor.java new file mode 100644 index 0000000..8be018d --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/ContentFilterProcessor.java @@ -0,0 +1,156 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.opendataloader.pdf.api.Config; +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.content.IChunk; +import org.verapdf.wcag.algorithms.entities.content.LineArtChunk; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.TextChunkUtils; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * Processor for filtering and cleaning PDF content. + * Removes hidden text, out-of-page content, backgrounds, and other artifacts. + */ +public class ContentFilterProcessor { + + private static final Logger LOGGER = Logger.getLogger(ContentFilterProcessor.class.getCanonicalName()); + + /** + * Filters and cleans page contents based on configuration. + * + * @param inputPdfName the path to the PDF file + * @param contents the raw page contents + * @param pageNumber the page number (0-indexed) + * @param config the configuration settings + * @return the filtered list of content objects + * @throws IOException if unable to process the content + */ + public static List getFilteredContents(String inputPdfName, List contents, int pageNumber, + Config config) throws IOException { + List pageContents = new ArrayList<>(contents); + TextProcessor.removeSameTextChunks(pageContents); + pageContents = DocumentProcessor.removeNullObjectsFromList(pageContents); + TextProcessor.removeTextDecorationImages(pageContents); + pageContents = DocumentProcessor.removeNullObjectsFromList(pageContents); + if (config.getFilterConfig().isFilterTinyText()) { + TextProcessor.filterTinyText(pageContents); + pageContents = DocumentProcessor.removeNullObjectsFromList(pageContents); + } + if (config.getFilterConfig().isFilterOutOfPage()) { + filterOutOfPageContents(pageNumber, pageContents); + pageContents = DocumentProcessor.removeNullObjectsFromList(pageContents); + } + TextProcessor.mergeCloseTextChunks(pageContents); + pageContents = DocumentProcessor.removeNullObjectsFromList(pageContents); + TextProcessor.trimTextChunksWhiteSpaces(pageContents); + filterConsecutiveSpaces(pageContents); + pageContents = splitTextChunksByWhiteSpacesInPageContents(pageContents); + // HiddenText detection moved to DocumentProcessor (sequential post-processing) + // to avoid ContrastRatioConsumer per-thread PDF rendering overhead + double replacementCharRatio = TextProcessor.measureReplacementCharRatio(pageContents); + StaticLayoutContainers.setReplacementCharRatio(pageNumber, replacementCharRatio); + if (replacementCharRatio >= 0.3) { + LOGGER.log(Level.WARNING, + "Page {0}: {1,number,#.#%} of characters are replacement characters (U+FFFD). " + + "This PDF likely contains CID-keyed fonts without ToUnicode mappings. " + + "Text extraction may be incomplete. Consider enabling hybrid OCR fallback with --hybrid docling-fast.", + new Object[]{pageNumber + 1, replacementCharRatio}); + } + TextProcessor.replaceUndefinedCharacters(pageContents, config.getReplaceInvalidChars()); + processBackgrounds(pageNumber, pageContents); + return pageContents; + } + + /** + * Detects and removes background elements from page contents. + * + * @param pageNumber the page number (0-indexed) + * @param contents the page contents to process + */ + public static void processBackgrounds(int pageNumber, List contents) { + BoundingBox pageBoundingBox = DocumentProcessor.getPageBoundingBox(pageNumber); + if (pageBoundingBox == null) { + return; + } + Set backgrounds = new HashSet<>(); + for (IObject content : contents) { + if (content instanceof LineArtChunk) { + if (isBackground(content, pageBoundingBox)) { + backgrounds.add((LineArtChunk) content); + } + } + } + if (!backgrounds.isEmpty()) { + LOGGER.log(Level.WARNING, "Detected background on page " + pageNumber); + contents.removeAll(backgrounds); + } + } + + private static void filterConsecutiveSpaces(List pageContents) { + for (IObject object : pageContents) { + if (object instanceof TextChunk) { + ((TextChunk) object).compressSpaces(); + } + } + } + + private static boolean isBackground(IObject content, BoundingBox pageBoundingBox) { + return (content.getBoundingBox().getWidth() > 0.5 * pageBoundingBox.getWidth() && + content.getBoundingBox().getHeight() > 0.1 * pageBoundingBox.getHeight()) || + (content.getBoundingBox().getWidth() > 0.1 * pageBoundingBox.getWidth() && + content.getBoundingBox().getHeight() > 0.5 * pageBoundingBox.getHeight()); + } + + private static void filterOutOfPageContents(int pageNumber, List contents) { + BoundingBox pageBoundingBox = DocumentProcessor.getPageBoundingBox(pageNumber); + if (pageBoundingBox == null) { + return; + } + pageBoundingBox.move(-pageBoundingBox.getLeftX(), -pageBoundingBox.getBottomY()); + for (int index = 0; index < contents.size(); index++) { + IObject object = contents.get(index); + if (object != null && pageBoundingBox.notOverlaps(object.getBoundingBox())) { + contents.set(index, null); + } + } + } + + private static List splitTextChunksByWhiteSpacesInPageContents(List contents) { + List newContents = new ArrayList<>(); + for (IObject object : contents) { + if (object instanceof TextChunk) { + TextChunk textChunk = (TextChunk) object; + List splitChunks = TextChunkUtils.splitTextChunkByWhiteSpaces(textChunk); + newContents.addAll(splitChunks); + } else { + newContents.add(object); + } + } + return newContents; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/DocumentProcessor.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/DocumentProcessor.java new file mode 100644 index 0000000..f7a91a0 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/DocumentProcessor.java @@ -0,0 +1,882 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.opendataloader.pdf.hybrid.ElementMetadata; +import org.opendataloader.pdf.processors.readingorder.XYCutPlusPlusSorter; +import org.opendataloader.pdf.json.JsonWriter; +import org.opendataloader.pdf.markdown.MarkdownGenerator; +import org.opendataloader.pdf.markdown.MarkdownGeneratorFactory; +import org.opendataloader.pdf.markdown.MarkdownSyntax; +import org.opendataloader.pdf.html.HtmlGenerator; +import org.opendataloader.pdf.html.HtmlGeneratorFactory; +import org.opendataloader.pdf.pdf.PDFWriter; +import org.opendataloader.pdf.api.Config; +import org.opendataloader.pdf.text.TextGenerator; +import org.opendataloader.pdf.utils.ContentSanitizer; +import org.opendataloader.pdf.utils.FileUtils; +import org.opendataloader.pdf.utils.ImagesUtils; +import org.opendataloader.pdf.utils.TextNodeUtils; +import org.verapdf.as.ASAtom; +import org.verapdf.containers.StaticCoreContainers; +import org.verapdf.cos.COSDictionary; +import org.verapdf.cos.COSObjType; +import org.verapdf.cos.COSObject; +import org.verapdf.cos.COSTrailer; +import org.verapdf.exceptions.InvalidPasswordException; +import org.verapdf.gf.model.impl.containers.StaticStorages; +import org.verapdf.gf.model.impl.cos.GFCosInfo; +import org.verapdf.gf.model.impl.sa.GFSAPDFDocument; +import org.verapdf.parser.PDFFlavour; +import org.verapdf.pd.PDDocument; +import org.verapdf.tools.StaticResources; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticTextNode; +import org.verapdf.wcag.algorithms.entities.content.LineChunk; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.entities.tables.TableBordersCollection; +import org.verapdf.wcag.algorithms.semanticalgorithms.consumers.LinesPreprocessingConsumer; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; +import org.verapdf.xmp.containers.StaticXmpCoreContainers; + +import org.opendataloader.pdf.exceptions.InvalidPdfFileException; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.UncheckedIOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.*; +import java.util.concurrent.ForkJoinPool; +import java.util.stream.Collectors; +import java.util.stream.IntStream; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * Main processor for PDF document analysis and output generation. + * Coordinates the extraction, processing, and generation of various output formats. + */ +public class DocumentProcessor { + private static final Logger LOGGER = Logger.getLogger(DocumentProcessor.class.getCanonicalName()); + + /** + * Releases PDF resources to prevent file locks and memory leaks. + * - Closes PDDocument to free OS file handles (required for file deletion) + * - Clears static containers to remove lingering references + * Should always be called in a finally block. + */ + private static void closePdfResources() { + clearCleanupStep("PDDocument", () -> { + PDDocument document = StaticResources.getDocument(); + if (document != null) { + document.close(); + } + }); + clearCleanupStep("ImagesUtils", StaticContainers::closeImagesUtils); + + clearCleanupStep("StaticResources", StaticResources::clear); + clearCleanupStep("StaticContainers", () -> StaticContainers.updateContainers(null)); + clearCleanupStep( + "GFStaticContainers", + org.verapdf.gf.model.impl.containers.StaticContainers::clearAllContainers + ); + clearCleanupStep("StaticLayoutContainers", StaticLayoutContainers::clearContainers); + clearCleanupStep("StaticStorages", StaticStorages::clearAllContainers); + clearCleanupStep("StaticCoreContainers", StaticCoreContainers::clearAllContainers); + clearCleanupStep("StaticXmpCoreContainers", StaticXmpCoreContainers::clearAllContainers); + } + + /** + * Executes a cleanup step safely without interrupting subsequent steps. + * + * Each cleanup action is isolated so that a failure in one step + * does not prevent the remaining cleanup operations from running. + * Errors are logged for debugging purposes. + */ + private static void clearCleanupStep(String name, Runnable cleanup) { + try { + cleanup.run(); + } catch (Exception e) { + LOGGER.log(Level.WARNING, "Error clearing " + name, e); + } + } + + /** + * Processes a PDF file and generates the configured outputs. + * + * @param inputPdfName the path to the input PDF file + * @param config the configuration settings + * @throws IOException if unable to process the file + */ + public static void processFile(String inputPdfName, Config config) throws IOException { + processFileWithResult(inputPdfName, config); + } + + /** + * Processes a PDF file and returns a {@link ProcessingResult} containing + * metadata collected during processing (e.g., hybrid server timings). + * + * @param inputPdfName the path to the input PDF file + * @param config the configuration settings + * @return processing result with optional metadata + * @throws IOException if unable to process the file + */ + public static ProcessingResult processFileWithResult(String inputPdfName, Config config) throws IOException { + try { + // Phase 1: Extract + ExtractionResult extraction = extractContents(inputPdfName, config); + + // Phase 2: Output (JSON/MD/HTML/PDF/Text) + long t0 = System.nanoTime(); + generateOutputs(inputPdfName, extraction.getContents(), config, extraction.getElementMetadata()); + long outputNs = System.nanoTime() - t0; + + return new ProcessingResult(extraction.getHybridTimings(), extraction.getExtractionNs(), outputNs); + } finally { + // Always release resources, even if processing threw. closePdfResources + // logs and swallows per-step failures so cleanup cannot mask the original + // processing exception. + closePdfResources(); + } + } + + /** + * Run the extraction pipeline only (preprocessing + content extraction + sanitization). + * Does not generate any output files. The returned {@link ExtractionResult} can be + * passed to {@link org.opendataloader.pdf.api.AutoTagger} or used to generate + * specific output formats. + * + *

    Structured processing (headings, lists, tables, captions) is always enabled + * because auto-tagging and all structured output formats depend on it. + * + * @param inputPdfName path to the input PDF file + * @param config configuration + * @return extraction result with contents and timing metadata + */ + public static ExtractionResult extractContents(String inputPdfName, Config config) throws IOException { + long t0 = System.nanoTime(); + preprocessing(inputPdfName, config); + calculateDocumentInfo(); + Set pagesToProcess = getValidPageNumbers(config); + List> contents; + if (StaticLayoutContainers.isUseStructTree()) { + contents = TaggedDocumentProcessor.processDocument(inputPdfName, config, pagesToProcess); + } else if (config.isHybridEnabled()) { + contents = HybridDocumentProcessor.processDocument(inputPdfName, config, pagesToProcess); + } else { + contents = processDocument(inputPdfName, config, pagesToProcess); + } + sortContents(contents, config); + ContentSanitizer contentSanitizer = new ContentSanitizer(config.getFilterConfig().getFilterRules(), + config.getFilterConfig().isFilterSensitiveData()); + contentSanitizer.sanitizeContents(contents); + long extractionNs = System.nanoTime() - t0; + + // Re-key metadata by actual IObject IDs in contents. + // After enrichment, IObject recognizedStructureIds may differ from transformer-assigned IDs. + // Match metadata to IObjects by bbox proximity. + Map rawMetadata = HybridDocumentProcessor.getLastElementMetadata(); + Map remappedMetadata = remapMetadataToContents(rawMetadata, contents); + + return new ExtractionResult(contents, extractionNs, HybridDocumentProcessor.getLastHybridTimings(), + remappedMetadata); + } + + /** + * Validates and filters page numbers from config against actual document pages. + * Logs warnings for pages that don't exist in the document. + * + * @param config the configuration containing page selection + * @return Set of valid 0-indexed page numbers to process, or null for all pages + */ + private static Set getValidPageNumbers(Config config) { + List requestedPages = config.getPageNumbers(); + if (requestedPages.isEmpty()) { + return null; // null means process all pages + } + + int totalPages = StaticContainers.getDocument().getNumberOfPages(); + Set validPages = new LinkedHashSet<>(); + List invalidPages = new ArrayList<>(); + + for (Integer page : requestedPages) { + int zeroIndexed = page - 1; // Convert 1-based to 0-based + if (zeroIndexed >= 0 && zeroIndexed < totalPages) { + validPages.add(zeroIndexed); + } else { + invalidPages.add(page); + } + } + + if (!invalidPages.isEmpty()) { + LOGGER.log(Level.WARNING, + "Requested pages {0} do not exist in document (total pages: {1}). Processing only existing pages: {2}", + new Object[]{invalidPages, totalPages, + validPages.stream().map(p -> p + 1).collect(Collectors.toList())}); + } + + if (validPages.isEmpty()) { + LOGGER.log(Level.WARNING, + "No valid pages to process. Document has {0} pages but requested: {1}", + new Object[]{totalPages, requestedPages}); + } + + return validPages; + } + + @SuppressWarnings("unchecked") + private static List> processDocument(String inputPdfName, Config config, Set pagesToProcess) throws IOException { + int totalPages = StaticContainers.getDocument().getNumberOfPages(); + List> contents = new ArrayList<>(Collections.nCopies(totalPages, null)); + + // Capture ALL ThreadLocal state from main thread for propagation to workers + final var document = StaticContainers.getDocument(); + final var pdDocument = StaticResources.getDocument(); + final var tableBordersCollection = StaticContainers.getTableBordersCollection(); + final var accumulatedNodeMapper = StaticContainers.getAccumulatedNodeMapper(); + final var objectKeyMapper = StaticContainers.getObjectKeyMapper(); + final var linesCollection = StaticContainers.getLinesCollection(); + final boolean keepLineBreaks = StaticContainers.isKeepLineBreaks(); + final boolean isDataLoader = StaticContainers.isDataLoader(); + final var isIgnoreCharsWithoutUnicode = StaticContainers.getIsIgnoreCharactersWithoutUnicode(); + + // Capture StaticLayoutContainers state (shared mutable — synchronized list for headings) + final var headings = StaticLayoutContainers.getHeadings(); + final long contentId = StaticLayoutContainers.getCurrentContentId(); + final boolean useStructTree = StaticLayoutContainers.isUseStructTree(); + final var embeddedImageBytesMap = StaticLayoutContainers.getEmbeddedImageBytesMap(); + + // Runnable that propagates ThreadLocal state to the current (worker) thread + final Runnable propagateState = () -> { + StaticResources.setDocument(pdDocument); + // veraPDF StaticContainers + StaticContainers.setDocument(document); + StaticContainers.setTableBordersCollection(tableBordersCollection); + StaticContainers.setAccumulatedNodeMapper(accumulatedNodeMapper); + StaticContainers.setObjectKeyMapper(objectKeyMapper); + StaticContainers.setLinesCollection(linesCollection); + StaticContainers.setKeepLineBreaks(keepLineBreaks); + StaticContainers.setIsDataLoader(isDataLoader); + StaticContainers.setIsIgnoreCharactersWithoutUnicode(isIgnoreCharsWithoutUnicode); + StaticContainers.setFileName(inputPdfName); + StaticContainers.setPassword(config.getPassword()); + // Project StaticLayoutContainers — share the same headings list across workers + StaticLayoutContainers.setHeadings(headings); + StaticLayoutContainers.setCurrentContentId(contentId); + StaticLayoutContainers.setIsUseStructTree(useStructTree); + StaticLayoutContainers.setEmbeddedImageBytesMap(embeddedImageBytesMap); + }; + + // Pre-fetch all page artifacts on main thread (document access is ThreadLocal) + List[] pageArtifacts = new List[totalPages]; + for (int i = 0; i < totalPages; i++) { + pageArtifacts[i] = document.getArtifacts(i); + } + + int parallelism = config.getThreads(); + ForkJoinPool pool = new ForkJoinPool(parallelism); + int pagesToProcessCount = (pagesToProcess != null) ? pagesToProcess.size() : totalPages; + LOGGER.log(Level.INFO, "Processing {0} pages with {1} threads", new Object[]{pagesToProcessCount, parallelism}); + + try { + // Loop 1: ContentFilter per-page (largest bottleneck) + pool.submit(() -> + IntStream.range(0, totalPages).parallel().forEach(pageNumber -> { + try { + propagateState.run(); + if (shouldProcessPage(pageNumber, pagesToProcess)) { + List pageContents = ContentFilterProcessor.getFilteredContents(inputPdfName, + (List) pageArtifacts[pageNumber], pageNumber, config); + contents.set(pageNumber, pageContents); + } else { + contents.set(pageNumber, new ArrayList<>()); + } + } catch (IOException e) { + throw new UncheckedIOException(e); + } + }) + ).get(); + + // Hidden text detection: sequential post-processing (requires ContrastRatioConsumer + // which renders PDF pages — not safe to parallelize due to per-thread PDF file I/O) + if (config.getFilterConfig().isFilterHiddenText()) { + for (int pageNumber = 0; pageNumber < totalPages; pageNumber++) { + if (shouldProcessPage(pageNumber, pagesToProcess)) { + List pageContents = HiddenTextProcessor.findHiddenText(contents.get(pageNumber), true); + contents.set(pageNumber, pageContents); + } + } + } + + // Structured processing is always enabled — auto-tagging needs headings, + // lists, tables, and captions regardless of output format flags. + boolean structured = true; + + // ClusterTableProcessor: whole-document (must be sequential) + if (structured && config.isClusterTableMethod()) { + new ClusterTableProcessor().processTables(contents); + } + + // Loop 2: TableBorder + TextLine per-page + pool.submit(() -> + IntStream.range(0, totalPages).parallel().forEach(pageNumber -> { + if (!shouldProcessPage(pageNumber, pagesToProcess)) { + return; + } + propagateState.run(); + List pageContents = contents.get(pageNumber); + if (structured) { + TextDecorationProcessor.processStrikethroughAndUnderlinedText(pageContents, pageNumber, config.isDetectStrikethrough()); + pageContents = TableBorderProcessor.processTableBorders(pageContents, pageNumber); + pageContents = pageContents.stream().filter(x -> !(x instanceof LineChunk)).collect(Collectors.toList()); + pageContents = SpecialTableProcessor.detectSpecialTables(pageContents); + } + pageContents = TextLineProcessor.processTextLines(pageContents); + contents.set(pageNumber, pageContents); + }) + ).get(); + + if (structured) { + // Cross-page operations (must be sequential) + HeaderFooterProcessor.processHeadersAndFooters(contents, false); + new TableOfContentsProcessor().processTableOfContents(contents); + ListProcessor.processLists(contents, false); + } + + // Loop 3: Paragraph + Heading per-page (always need ParagraphProcessor for text output) + pool.submit(() -> + IntStream.range(0, totalPages).parallel().forEach(pageNumber -> { + if (!shouldProcessPage(pageNumber, pagesToProcess)) { + return; + } + propagateState.run(); + List pageContents = contents.get(pageNumber); + pageContents = ParagraphProcessor.processParagraphs(pageContents); + if (structured) { + pageContents = ListProcessor.processListsFromTextNodes(pageContents); + HeadingProcessor.processHeadings(pageContents, false); + } + contents.set(pageNumber, pageContents); + }) + ).get(); + + // Sequential ID assignment (must be in page order, before CaptionProcessor) + for (int pageNumber = 0; pageNumber < totalPages; pageNumber++) { + if (shouldProcessPage(pageNumber, pagesToProcess)) { + setIDs(contents.get(pageNumber)); + } + } + + // Caption detection runs after setIDs so that recognizedStructureId is available + // for linking captions to figures/tables + if (structured) { + for (int pageNumber = 0; pageNumber < totalPages; pageNumber++) { + if (shouldProcessPage(pageNumber, pagesToProcess)) { + CaptionProcessor.processCaptions(contents.get(pageNumber)); + } + } + } + + if (structured) { + // Cross-page post-processing (must be sequential) + ListProcessor.checkNeighborLists(contents); + TableBorderProcessor.checkNeighborTables(contents); + HeadingProcessor.detectHeadingsLevels(); + LevelProcessor.detectLevels(contents); + } + } catch (Exception e) { + throw new IOException("Parallel page processing failed", e); + } finally { + pool.shutdown(); + } + return contents; + } + + /** + * Checks if a page should be processed based on the filter. + * + * @param pageNumber 0-indexed page number + * @param pagesToProcess set of valid page numbers to process, or null for all pages + * @return true if the page should be processed + */ + /** + * Filters ElementMetadata down to entries whose transformer-assigned ID still + * matches an IObject in the post-enrichment contents. This is deliberately + * ID-based (not positional): sorting, filtering, and enrichment can reorder + * or drop IObjects, so positional matching would attach the wrong + * confidence/source label to an element. IObjects whose ID was rewritten + * during enrichment simply lose their metadata — preferable to a wrong one. + */ + private static Map remapMetadataToContents( + Map rawMetadata, List> contents) { + if (rawMetadata == null || rawMetadata.isEmpty()) return Collections.emptyMap(); + + Map remapped = new LinkedHashMap<>(); + for (List pageContents : contents) { + for (IObject obj : pageContents) { + collectMetadata(obj, rawMetadata, remapped); + } + } + return remapped; + } + + /** + * Walks an IObject tree and copies any metadata entry keyed by its + * recognized structure id into {@code remapped}. Containers like + * {@code ListItem} hold their own children via {@code getContents()}, so + * a shallow iteration over the top-level page list would miss nested + * images / pictures — their metadata (ai_score, source label, caption) + * would silently disappear from the JSON output. We recurse through the + * containers we actually emit at this level (lists, tables, headers, + * footers); leaf nodes terminate naturally. + */ + private static void collectMetadata(IObject obj, + Map rawMetadata, + Map remapped) { + if (obj == null) return; + Long id = obj.getRecognizedStructureId(); + if (id != null && id != 0L) { + ElementMetadata meta = rawMetadata.get(id); + if (meta != null) { + remapped.put(id, meta); + } + } + // Recurse into every container the JSON serializers walk. This keeps + // the metadata visibility surface aligned with the serialized tree — + // any image / picture / heading that ends up in the JSON output also + // gets its ElementMetadata copied through. Add new container types + // here when their serializer descends into child IObjects. + if (obj instanceof org.verapdf.wcag.algorithms.entities.lists.ListItem) { + for (IObject child : ((org.verapdf.wcag.algorithms.entities.lists.ListItem) obj).getContents()) { + collectMetadata(child, rawMetadata, remapped); + } + } else if (obj instanceof org.verapdf.wcag.algorithms.entities.lists.PDFList) { + for (org.verapdf.wcag.algorithms.entities.lists.ListItem item : + ((org.verapdf.wcag.algorithms.entities.lists.PDFList) obj).getListItems()) { + collectMetadata(item, rawMetadata, remapped); + } + } else if (obj instanceof org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder) { + org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder table = + (org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder) obj; + if (table.isTextBlock()) { + // Text-block tables serialize as a single anonymous cell. Recurse + // through the cell IObject itself so its own structureId metadata + // is captured alongside the children — going straight to + // getContents() would skip the cell-level entry. + org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell cell = table.getCell(0, 0); + if (cell != null) { + collectMetadata(cell, rawMetadata, remapped); + } + } else { + for (org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderRow row : table.getRows()) { + for (org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell cell : row.getCells()) { + collectMetadata(cell, rawMetadata, remapped); + } + } + } + } else if (obj instanceof org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell) { + for (IObject child : ((org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell) obj).getContents()) { + collectMetadata(child, rawMetadata, remapped); + } + } else if (obj instanceof org.verapdf.wcag.algorithms.entities.SemanticHeaderOrFooter) { + for (IObject child : ((org.verapdf.wcag.algorithms.entities.SemanticHeaderOrFooter) obj).getContents()) { + collectMetadata(child, rawMetadata, remapped); + } + } + } + + private static boolean shouldProcessPage(int pageNumber, Set pagesToProcess) { + return pagesToProcess == null || pagesToProcess.contains(pageNumber); + } + + /** + * Writes the configured output files (JSON/MD/HTML/PDF/Text/images/tagged PDF) + * from already-extracted contents. + * + *

    Internal API. Do not call directly. This method is + * {@code public} only so the {@link org.opendataloader.pdf.api.OutputWriter} + * facade in the {@code api} package can delegate to it. The signature + * (notably the {@code List>} and + * {@code Map} parameters) is an implementation + * detail and may change in any release. External callers must use + * {@link org.opendataloader.pdf.api.OutputWriter#writeOutputs}, which is + * the stable public API. + */ + public static void generateOutputs(String inputPdfName, List> contents, Config config, + Map elementMetadata) throws IOException { + // Stdout mode: write primary format to stdout, skip file I/O + if (config.isOutputStdout()) { + java.io.Writer stdoutWriter = new java.io.BufferedWriter( + new java.io.OutputStreamWriter(System.out, java.nio.charset.StandardCharsets.UTF_8)); + if (config.isGenerateText()) { + TextGenerator textGenerator = new TextGenerator(stdoutWriter, config); + textGenerator.writeToText(contents); + stdoutWriter.flush(); + } else if (config.isGenerateMarkdown()) { + MarkdownGenerator markdownGenerator = new MarkdownGenerator(stdoutWriter, config); + markdownGenerator.writeToMarkdown(contents); + stdoutWriter.flush(); + } + // JSON and HTML stdout not yet supported + return; + } + + File inputPDF = new File(inputPdfName); + new File(config.getOutputFolder()).mkdirs(); + if (!config.isImageOutputOff() && (config.isGenerateHtml() || config.isGenerateMarkdown() || config.isGenerateJSON())) { + String imagesDirectory; + if (config.getImageDir() != null && !config.getImageDir().isEmpty()) { + imagesDirectory = config.getImageDir(); + } else { + String fileName = Paths.get(inputPdfName).getFileName().toString(); + imagesDirectory = config.getOutputFolder() + File.separator + FileUtils.getBaseName(fileName) + MarkdownSyntax.IMAGES_DIRECTORY_SUFFIX; + } + StaticLayoutContainers.setImagesDirectory(imagesDirectory); + ImagesUtils imagesUtils = new ImagesUtils(); + imagesUtils.write(contents); + } + if (config.isGenerateTaggedPDF()) { + AutoTaggingProcessor.createTaggedPDF(inputPDF, config.getOutputFolder(), + StaticResources.getDocument(), contents); + } + if (config.isGeneratePDF()) { + PDFWriter pdfWriter = new PDFWriter(); + pdfWriter.updatePDF(inputPDF, config.getPassword(), config.getOutputFolder(), contents); + } + if (config.isGenerateJSON()) { + JsonWriter.writeToJson(inputPDF, config.getOutputFolder(), contents, elementMetadata, + null, config.isIncludeHeaderFooter()); + } + if (config.isGenerateMarkdown()) { + try (MarkdownGenerator markdownGenerator = MarkdownGeneratorFactory.getMarkdownGenerator(inputPDF, + config)) { + markdownGenerator.writeToMarkdown(contents); + } + } + if (config.isGenerateHtml()) { + try (HtmlGenerator htmlGenerator = HtmlGeneratorFactory.getHtmlGenerator(inputPDF, config)) { + htmlGenerator.writeToHtml(contents); + } + } + if (config.isGenerateText()) { + try (TextGenerator textGenerator = new TextGenerator(inputPDF, config)) { + textGenerator.writeToText(contents); + } + } + } + + /** + * Performs preprocessing on a PDF document. + * Initializes static containers and parses the document structure. + * + * @param pdfName the path to the PDF file + * @param config the configuration settings + * @throws IOException if unable to read the PDF file + */ + public static void preprocessing(String pdfName, Config config) throws IOException { + LOGGER.log(Level.INFO, () -> "File name: " + pdfName); + validatePdfMagicNumber(pdfName); + updateStaticContainers(config); + PDDocument pdDocument; + try { + pdDocument = new PDDocument(pdfName); + } catch (InvalidPasswordException pw) { + // Encrypted PDFs are not a content-validity failure — let the + // password-handling branch in callers (e.g. CLIMain) take over. + throw pw; + } catch (IOException cause) { + // Magic number was present, so the user expected a real PDF, but + // veraPDF could not parse the document (truncated download, body + // corruption, missing xref). Surface a friendly message instead + // of letting the raw veraPDF IOException leak as a stack trace. + throw new InvalidPdfFileException( + "'" + displayName(pdfName) + "' is not a valid PDF file (corrupted or truncated content).", + cause); + } + StaticResources.setDocument(pdDocument); + GFSAPDFDocument document = new GFSAPDFDocument(pdDocument); +// org.verapdf.gf.model.impl.containers.StaticContainers.setFlavour(Collections.singletonList(PDFAFlavour.WCAG_2_2)); + StaticResources.setFlavour(Collections.singletonList(Objects.equals(pdDocument.getVersion(), 2.0F) ? + PDFFlavour.WCAG_2_2_PDF_2_0_HUMAN : PDFFlavour.WCAG_2_2_HUMAN)); + StaticStorages.setIsFilterInvisibleLayers(config.getFilterConfig().isFilterHiddenOCG()); + StaticContainers.setDocument(document); + if (config.isUseStructTree()) { + document.parseStructureTreeRoot(); + if (document.getTree() != null) { + StaticLayoutContainers.setIsUseStructTree(true); + } else { + StaticLayoutContainers.setIsUseStructTree(false); + LOGGER.log(Level.WARNING, "The document has no structure tree. The 'use-struct-tree' option will be ignored."); + } + } + StaticContainers.setFileName(pdfName); + StaticContainers.setPassword(config.getPassword()); + StaticContainers.setIsDataLoader(true); + StaticContainers.setIsIgnoreCharactersWithoutUnicode(false); + StaticResources.setIsFontProgramsParsing(true); + StaticStorages.setIsIgnoreMCIDs(!StaticLayoutContainers.isUseStructTree()); + StaticStorages.setIsAddSpacesBetweenTextPieces(true); + document.parseChunks(); + LinesPreprocessingConsumer linesPreprocessingConsumer = new LinesPreprocessingConsumer(); + linesPreprocessingConsumer.findTableBorders(); + StaticContainers.setTableBordersCollection(new TableBordersCollection(linesPreprocessingConsumer.getTableBorders())); + } + + /** + * Verifies the input file contains the PDF magic number ({@code %PDF-}) + * within its first 1024 bytes. + * + *

    ISO 32000-1 §7.5.2 allows the {@code %PDF-} header to appear "near + * the beginning" of the file rather than strictly at byte 0; real-world + * PDFs sometimes have a leading UTF-8 BOM or whitespace. A 1024-byte + * search window matches that tolerance while still rejecting any + * JPG/PNG/HTML/empty file. + * + * @throws InvalidPdfFileException if the magic number is not present + * @throws IOException if the file cannot be opened or read + */ + private static void validatePdfMagicNumber(String pdfName) throws IOException { + Path path = Path.of(pdfName); + byte[] head; + try (InputStream in = Files.newInputStream(path)) { + head = in.readNBytes(1024); + } + byte[] marker = "%PDF-".getBytes(StandardCharsets.US_ASCII); + if (indexOfBytes(head, marker) < 0) { + throw new InvalidPdfFileException( + "'" + displayName(pdfName) + "' is not a valid PDF file (missing %PDF- header)."); + } + } + + /** + * Path.getFileName() returns null for filesystem roots (e.g. {@code C:\}). + * Fall back to the original input string in that case so the user-facing + * error message is never empty. + */ + private static String displayName(String pdfName) { + Path fileName = Path.of(pdfName).getFileName(); + return fileName != null ? fileName.toString() : pdfName; + } + + private static int indexOfBytes(byte[] haystack, byte[] needle) { + if (needle.length == 0 || haystack.length < needle.length) { + return -1; + } + int last = haystack.length - needle.length; + outer: + for (int i = 0; i <= last; i++) { + for (int j = 0; j < needle.length; j++) { + if (haystack[i + j] != needle[j]) { + continue outer; + } + } + return i; + } + return -1; + } + + private static void updateStaticContainers(Config config) { + StaticResources.clear(); + StaticContainers.updateContainers(null); + StaticLayoutContainers.clearContainers(); + org.verapdf.gf.model.impl.containers.StaticContainers.clearAllContainers(); + StaticCoreContainers.clearAllContainers(); + StaticXmpCoreContainers.clearAllContainers(); + StaticContainers.setKeepLineBreaks(config.isKeepLineBreaks()); + StaticLayoutContainers.setCurrentContentId(1); + StaticLayoutContainers.setEmbedImages(config.isEmbedImages()); + StaticLayoutContainers.setImageFormat(config.getImageFormat()); + StaticResources.setPassword(config.getPassword()); + } + + /** + * Assigns unique IDs to each content object. + * + * @param contents the list of content objects + */ + public static void setIDs(List contents) { + for (IObject object : contents) { + object.setRecognizedStructureId(StaticLayoutContainers.incrementContentId()); + } + } + + /** + * Sets index values for all content objects across all pages. + * + * @param contents the document contents organized by page + */ + public static void setIndexesForDocumentContents(List> contents) { + for (List pageContents : contents) { + setIndexesForContentsList(pageContents); + } + } + + /** + * Sets index values for content objects in a list. + * + * @param contents the list of content objects + */ + public static void setIndexesForContentsList(List contents) { + for (int index = 0; index < contents.size(); index++) { + contents.get(index).setIndex(index); + } + } + + /** + * Creates a new list with null objects removed. + * + * @param contents the list that may contain null objects + * @return a new list without null objects + */ + public static List removeNullObjectsFromList(List contents) { + List newContents = new ArrayList<>(); + for (IObject content : contents) { + if (content != null) { + newContents.add(content); + } + } + return newContents; + } + + private static void calculateDocumentInfo() { + PDDocument document = StaticResources.getDocument(); + LOGGER.log(Level.INFO, () -> "Number of pages: " + document.getNumberOfPages()); + COSTrailer trailer = document.getDocument().getTrailer(); + GFCosInfo info = getInfo(trailer); + LOGGER.log(Level.INFO, () -> "Author: " + (info.getAuthor() != null ? info.getAuthor() : info.getXMPCreator())); + LOGGER.log(Level.INFO, () -> "Title: " + (info.getTitle() != null ? info.getTitle() : info.getXMPTitle())); + LOGGER.log(Level.INFO, () -> "Creation date: " + (info.getCreationDate() != null ? info.getCreationDate() : info.getXMPCreateDate())); + LOGGER.log(Level.INFO, () -> "Modification date: " + (info.getModDate() != null ? info.getModDate() : info.getXMPModifyDate())); + } + + private static GFCosInfo getInfo(COSTrailer trailer) { + COSObject object = trailer.getKey(ASAtom.INFO); + return new GFCosInfo((COSDictionary) (object != null && object.getType() == COSObjType.COS_DICT ? object.getDirectBase() : COSDictionary.construct().get())); + } + + /** + * Gets a debug string representation of a text node. + * + * @param textNode the text node to describe + * @return a string with font, size, color, and content information + */ + public static String getContentsValueForTextNode(SemanticTextNode textNode) { + return String.format("%s: font %s, text size %.2f, text color %s, text content \"%s\"", + textNode.getSemanticType().getValue(), textNode.getFontName(), + textNode.getFontSize(), Arrays.toString(TextNodeUtils.getTextColorOrDefault(textNode)), + textNode.getValue().length() > 15 ? textNode.getValue().substring(0, 15) + "..." : textNode.getValue()); + } + + /** + * Gets the bounding box for a page. + * + * @param pageNumber the page number (0-indexed) + * @return the page bounding box, or null if not available + */ + public static BoundingBox getPageBoundingBox(int pageNumber) { + PDDocument document = StaticResources.getDocument(); + if (document == null) { + return null; + } + double[] cropBox = document.getPage(pageNumber).getCropBox(); + if (cropBox == null) { + return null; + } + return new BoundingBox(pageNumber, cropBox); + } + + /** + * Sorts page contents by their bounding box positions. + * + * @param contents the list of content objects to sort + * @return a new sorted list of content objects + */ + public static List sortPageContents(List contents) { + if (contents == null || contents.isEmpty()) { + return contents; + } + List sortedContents = new ArrayList<>(contents); + sortedContents.sort((o1, o2) -> { + BoundingBox b1 = o1.getBoundingBox(); + BoundingBox b2 = o2.getBoundingBox(); + if (b1 == null && b2 == null) { + return 0; + } + if (b1 == null) { + return 1; + } + if (b2 == null) { + return -1; + } + if (!Objects.equals(b1.getPageNumber(), b2.getPageNumber())) { + return b1.getPageNumber() - b2.getPageNumber(); + } + if (!Objects.equals(b1.getLastPageNumber(), b2.getLastPageNumber())) { + return b1.getLastPageNumber() - b2.getLastPageNumber(); + } + if (!Objects.equals(b1.getTopY(), b2.getTopY())) { + return b2.getTopY() - b1.getTopY() > 0 ? 1 : -1; + } + if (!Objects.equals(b1.getLeftX(), b2.getLeftX())) { + return b1.getLeftX() - b2.getLeftX() > 0 ? 1 : -1; + } + if (!Objects.equals(b1.getBottomY(), b2.getBottomY())) { + return b1.getBottomY() - b2.getBottomY() > 0 ? 1 : -1; + } + if (!Objects.equals(b1.getRightX(), b2.getRightX())) { + return b1.getRightX() - b2.getRightX() > 0 ? 1 : -1; + } + return 0; + }); + return sortedContents; + } + + /** + * Sorts document contents according to the configured reading order. + * + * @param contents the document contents organized by page + * @param config the configuration containing reading order settings + */ + public static void sortContents(List> contents, Config config) { + String readingOrder = config.getReadingOrder(); + + // xycut: XY-Cut++ sorting (per-page, stateless — safe to parallelize) + if (Config.READING_ORDER_XYCUT.equals(readingOrder)) { + int totalPages = StaticContainers.getDocument().getNumberOfPages(); + IntStream pages = IntStream.range(0, totalPages); + if (config.getThreads() > 1) { + pages.parallel().forEach(pageNumber -> + contents.set(pageNumber, XYCutPlusPlusSorter.sort(contents.get(pageNumber)))); + } else { + pages.forEach(pageNumber -> + contents.set(pageNumber, XYCutPlusPlusSorter.sort(contents.get(pageNumber)))); + } + return; + } + + // Log warning for unknown reading order values + if (!Config.READING_ORDER_OFF.equals(readingOrder)) { + LOGGER.log(Level.WARNING, "Unknown reading order value ''{0}'', using default ''off''", readingOrder); + } + + // off: skip sorting (keep PDF COS object order) + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/ExtractionResult.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/ExtractionResult.java new file mode 100644 index 0000000..a33d6fb --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/ExtractionResult.java @@ -0,0 +1,64 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import com.fasterxml.jackson.databind.JsonNode; +import org.opendataloader.pdf.hybrid.ElementMetadata; +import org.verapdf.wcag.algorithms.entities.IObject; + +import java.util.Collections; +import java.util.List; +import java.util.Map; + +/** + * Internal result of the extraction pipeline (preprocessing + content extraction + sanitization). + * Carries the extracted contents and timing metadata for use by AutoTagger. + */ +public class ExtractionResult { + + private final List> contents; + private final long extractionNs; + private final JsonNode hybridTimings; + private final Map elementMetadata; + + public ExtractionResult(List> contents, long extractionNs, JsonNode hybridTimings, + Map elementMetadata) { + this.contents = contents; + this.extractionNs = extractionNs; + this.hybridTimings = hybridTimings; + this.elementMetadata = elementMetadata != null ? elementMetadata : Collections.emptyMap(); + } + + public ExtractionResult(List> contents, long extractionNs, JsonNode hybridTimings) { + this(contents, extractionNs, hybridTimings, Collections.emptyMap()); + } + + public List> getContents() { + return contents; + } + + public long getExtractionNs() { + return extractionNs; + } + + public JsonNode getHybridTimings() { + return hybridTimings; + } + + public Map getElementMetadata() { + return elementMetadata; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/HeaderFooterProcessor.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/HeaderFooterProcessor.java new file mode 100644 index 0000000..08ac9cc --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/HeaderFooterProcessor.java @@ -0,0 +1,365 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.verapdf.wcag.algorithms.entities.INode; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticHeaderOrFooter; +import org.verapdf.wcag.algorithms.entities.SemanticTextNode; +import org.verapdf.wcag.algorithms.entities.content.LineArtChunk; +import org.verapdf.wcag.algorithms.entities.content.LineChunk; +import org.verapdf.wcag.algorithms.entities.content.TextLine; +import org.verapdf.wcag.algorithms.entities.enums.SemanticType; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.entities.lists.ListInterval; +import org.verapdf.wcag.algorithms.entities.lists.ListIntervalsCollection; +import org.verapdf.wcag.algorithms.entities.lists.info.ListItemInfo; +import org.verapdf.wcag.algorithms.entities.lists.info.ListItemTextInfo; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.ListLabelsUtils; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.NodeUtils; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.listLabelsDetection.*; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * Processor for detecting and extracting headers and footers from PDF documents. + * Identifies repeating content at the top and bottom of pages. + */ +public class HeaderFooterProcessor { + + /** + * Processes document contents to detect headers and footers. + * + * @param contents the document contents organized by page + * @param isTagged whether the document is tagged + */ + public static void processHeadersAndFooters(List> contents, boolean isTagged) { + DocumentProcessor.setIndexesForDocumentContents(contents); + List> sortedContents = new ArrayList<>(); + for (List content : contents) { + sortedContents.add(DocumentProcessor.sortPageContents(content)); + } + List> filteredSortedContents = new ArrayList<>(); + for (List content : sortedContents) { + filteredSortedContents.add(content.stream().filter(c -> !(c instanceof LineChunk) && !(c instanceof LineArtChunk)).collect(Collectors.toList())); + } + List footers = getHeadersOrFooters(filteredSortedContents, false); + List headers = getHeadersOrFooters(filteredSortedContents, true); + for (int pageNumber = 0; pageNumber < contents.size(); pageNumber++) { + contents.set(pageNumber, updatePageContents(contents.get(pageNumber), headers.get(pageNumber), footers.get(pageNumber))); + } + if (!isTagged) { + processHeadersOrFootersContents(footers); + processHeadersOrFootersContents(headers); + } + } + + private static void processHeadersOrFootersContents(List headersOrFooters) { + for (SemanticHeaderOrFooter headerOrFooter : headersOrFooters) { + if (headerOrFooter != null) { + headerOrFooter.setContents(processHeaderOrFooterContent(headerOrFooter.getContents())); + } + } + } + + private static List updatePageContents(List pageContents, SemanticHeaderOrFooter header, SemanticHeaderOrFooter footer) { + SortedSet headerAndFooterIndexes = new TreeSet<>(); + headerAndFooterIndexes.addAll(getHeaderOrFooterContentsIndexes(header)); + headerAndFooterIndexes.addAll(getHeaderOrFooterContentsIndexes(footer)); + if (headerAndFooterIndexes.isEmpty()) { + return pageContents; + } + List result = new ArrayList<>(); + if (header != null) { + result.add(header); + } + Iterator iterator = headerAndFooterIndexes.iterator(); + int nextHeaderOrFooterIndex = iterator.hasNext() ? iterator.next() : pageContents.size(); + for (int index = 0; index < pageContents.size(); index++) { + if (index < nextHeaderOrFooterIndex) { + result.add(pageContents.get(index)); + } else { + nextHeaderOrFooterIndex = iterator.hasNext() ? iterator.next() : pageContents.size(); + } + } + if (footer != null) { + result.add(footer); + } + return result; + } + + private static Set getHeaderOrFooterContentsIndexes(SemanticHeaderOrFooter header) { + if (header == null) { + return Collections.emptySet(); + } + SortedSet set = new TreeSet<>(); + for (IObject content : header.getContents()) { + set.add(content.getIndex()); + } + return set; + } + + private static List getHeadersOrFooters(List> sortedContents, boolean isHeaderDetection) { + List headersOrFooters = new ArrayList<>(sortedContents.size()); + List numberOfHeaderOrFooterContentsForEachPage = getNumberOfHeaderOrFooterContentsForEachPage(sortedContents, isHeaderDetection); + for (int pageNumber = 0; pageNumber < sortedContents.size(); pageNumber++) { + Integer currentIndex = numberOfHeaderOrFooterContentsForEachPage.get(pageNumber); + if (currentIndex == 0) { + headersOrFooters.add(null); + continue; + } + List pageContents = sortedContents.get(pageNumber); + List headerContents = filterHeaderOrFooterContents(isHeaderDetection ? pageContents.subList(0, currentIndex) : + pageContents.subList(pageContents.size() - currentIndex, pageContents.size()), pageNumber, isHeaderDetection); + if (headerContents.isEmpty()) { + headersOrFooters.add(null); + continue; + } + SemanticHeaderOrFooter semanticHeaderOrFooter = new SemanticHeaderOrFooter(isHeaderDetection ? SemanticType.HEADER : SemanticType.FOOTER); + semanticHeaderOrFooter.addContents(headerContents); + semanticHeaderOrFooter.setRecognizedStructureId(StaticLayoutContainers.incrementContentId()); + headersOrFooters.add(semanticHeaderOrFooter); + } + return headersOrFooters; + } + + private static List processHeaderOrFooterContent(List contents) { + List newContents = ParagraphProcessor.processParagraphs(contents); + newContents = ListProcessor.processListsFromTextNodes(newContents); + HeadingProcessor.processHeadings(newContents, false); + DocumentProcessor.setIDs(newContents); + CaptionProcessor.processCaptions(newContents); + return newContents; + } + + /** + * Maximum vertical gap (in points) allowed between consecutive footer/header elements. + * If a candidate element is farther than this from the previously accepted element, + * it is not included in the header/footer region. This prevents body text that happens + * to repeat across pages from being absorbed into the footer. + */ + private static final double MAX_HEADER_FOOTER_GAP = 30.0; + + private static List getNumberOfHeaderOrFooterContentsForEachPage(List> sortedContents, boolean isHeaderDetection) { + List numberOfHeaderOrFooterContentsForEachPage = new ArrayList<>(sortedContents.size()); + for (int pageNumber = 0; pageNumber < sortedContents.size(); pageNumber++) { + numberOfHeaderOrFooterContentsForEachPage.add(0); + } + int currentIndex = 0; + while (true) { + List contents = new ArrayList<>(sortedContents.size()); + for (int pageNumber = 0; pageNumber < sortedContents.size(); pageNumber++) { + if (numberOfHeaderOrFooterContentsForEachPage.get(pageNumber) != currentIndex) { + contents.add(null); + continue; + } + List pageContents = sortedContents.get(pageNumber); + int index = isHeaderDetection ? currentIndex : pageContents.size() - 1 - currentIndex; + if (index >= 0 && index < pageContents.size()) { + IObject candidate = pageContents.get(index); + if (currentIndex > 0 && !isAdjacentToExistingHeaderOrFooter( + pageContents, currentIndex, isHeaderDetection, candidate)) { + contents.add(null); + } else { + contents.add(candidate); + } + } else { + contents.add(null); + } + } + Set newIndexes = getIndexesOfHeaderOrFootersContents(contents); + if (newIndexes.isEmpty()) { + break; + } + for (Integer newIndex : newIndexes) { + numberOfHeaderOrFooterContentsForEachPage.set(newIndex, currentIndex + 1); + } + currentIndex++; + } + return numberOfHeaderOrFooterContentsForEachPage; + } + + private static boolean isAdjacentToExistingHeaderOrFooter( + List pageContents, int currentIndex, boolean isHeaderDetection, IObject candidate) { + int previousIndex = isHeaderDetection ? currentIndex - 1 : pageContents.size() - currentIndex; + if (previousIndex < 0 || previousIndex >= pageContents.size()) { + return true; + } + IObject previousElement = pageContents.get(previousIndex); + double gap; + if (isHeaderDetection) { + gap = previousElement.getBottomY() - candidate.getTopY(); + } else { + gap = candidate.getBottomY() - previousElement.getTopY(); + } + return gap <= MAX_HEADER_FOOTER_GAP; + } + + private static Set getIndexesOfHeaderOrFootersContents(List contents) { + Set result = new HashSet<>(contents.size()); + for (int pageNumber = 0; pageNumber < contents.size() - 1; pageNumber++) { + IObject currentObject = contents.get(pageNumber); + IObject nextObject = contents.get(pageNumber + 1); + if (currentObject != null && nextObject != null) { + if (arePossibleHeadersOrFooters(currentObject, nextObject, 1)) { + result.add(pageNumber); + result.add(pageNumber + 1); + } + } + } + //2-page style + for (int pageNumber = 0; pageNumber < contents.size() - 2; pageNumber++) { + IObject currentObject = contents.get(pageNumber); + IObject nextObject = contents.get(pageNumber + 2); + if (currentObject != null && nextObject != null) { + if (arePossibleHeadersOrFooters(currentObject, nextObject, 2)) { + result.add(pageNumber); + result.add(pageNumber + 2); + } + } + } + return result; + } + + /** + * Checks if a content object is a header or footer. + * + * @param content the content object to check + * @return true if the content is a header or footer, false otherwise + */ + public static boolean isHeaderOrFooter(IObject content) { + if (content instanceof INode) { + INode node = (INode) content; + if (node.getSemanticType() == SemanticType.HEADER || node.getSemanticType() == SemanticType.FOOTER) { + return true; + } + } + return false; + } + + private static List filterHeaderOrFooterContents(List contents, int pageNumber, boolean isHeaderDetection) { + BoundingBox boundingBox = DocumentProcessor.getPageBoundingBox(pageNumber); + if (boundingBox == null) { + return contents; + } + List result = new ArrayList<>(); + for (IObject content : contents) { + if (isHeaderDetection) { + if (content.getBottomY() < boundingBox.getHeight() * 2 / 3) { + continue; + } + } else { + if (content.getTopY() > boundingBox.getHeight() / 3) { + continue; + } + } + result.add(content); + } + return result; + } + + private static boolean arePossibleHeadersOrFooters(IObject object1, IObject object2, int increment) { + if (object1 instanceof SemanticTextNode && object2 instanceof SemanticTextNode) { + SemanticTextNode textNode1 = (SemanticTextNode) object1; + SemanticTextNode textNode2 = (SemanticTextNode) object2; + if (!BoundingBox.areOverlapsBoundingBoxesExcludingPages(object1.getBoundingBox(), object2.getBoundingBox())) { + return false; + } + if (!NodeUtils.areCloseNumbers(textNode1.getFontSize(), textNode2.getFontSize())) { + return false; + } + if (Objects.equals(textNode1.getValue(), textNode2.getValue())) { + return true; + } + List textNodes = new ArrayList<>(2); + textNodes.add(textNode1); + textNodes.add(textNode2); + if (getHeadersOrFootersIntervals(textNodes, increment).size() == 1) { + return true; + } + } else if (object1 instanceof TextLine && object2 instanceof TextLine) { + TextLine line1 = (TextLine) object1; + TextLine line2 = (TextLine) object2; + SemanticTextNode textNode1 = new SemanticTextNode(); + textNode1.add(line1); + SemanticTextNode textNode2 = new SemanticTextNode(); + textNode2.add(line2); + return arePossibleHeadersOrFooters(textNode1, textNode2, increment); + } else { + if (BoundingBox.areSameBoundingBoxesExcludingPages(object1.getBoundingBox(), object2.getBoundingBox())) { + return true; + } + } + return false; + } + + private static Set getHeadersOrFootersIntervals(List textNodes, int increment) { + List textChildrenInfo = new ArrayList<>(textNodes.size()); + for (int i = 0; i < textNodes.size(); i++) { + SemanticTextNode textNode = textNodes.get(i); + TextLine line = textNode.getFirstNonSpaceLine(); + TextLine secondLine = textNode.getNonSpaceLine(1); + textChildrenInfo.add(new ListItemTextInfo(i, textNode.getSemanticType(), + line, line.getValue().trim(), secondLine == null)); + } + Set intervals = getHeadersOfFooterIntervals(textChildrenInfo, increment); + return intervals; + } + + private static Set getHeadersOfFooterIntervals(List itemsInfo, int increment) { + ListIntervalsCollection listIntervals = new ListIntervalsCollection(); + listIntervals.putAll((new AlfaLettersListLabelsDetectionAlgorithm1(increment)).getItemsIntervals(itemsInfo)); + listIntervals.putAll((new AlfaLettersListLabelsDetectionAlgorithm2(increment)).getItemsIntervals(itemsInfo)); + listIntervals.putAll((new KoreanLettersListLabelsDetectionAlgorithm(increment)).getItemsIntervals(itemsInfo)); + listIntervals.putAll((new RomanNumbersListLabelsDetectionAlgorithm(increment)).getItemsIntervals(itemsInfo)); + ArabicNumbersListLabelsDetectionAlgorithm arabicNumbersListLabelsDetectionAlgorithm = new ArabicNumbersListLabelsDetectionAlgorithm(increment); + arabicNumbersListLabelsDetectionAlgorithm.setHeaderOrFooterDetection(true); + listIntervals.putAll((arabicNumbersListLabelsDetectionAlgorithm).getItemsIntervals(itemsInfo)); + ListIntervalsCollection correctIntervals = new ListIntervalsCollection(getEqualsItems(itemsInfo)); + for (ListInterval listInterval : listIntervals.getSet()) { + List labels = new LinkedList<>(); + for (ListItemInfo info : listInterval.getListItemsInfos()) { + labels.add(((ListItemTextInfo) info).getListItem()); + } + if (ListLabelsUtils.isListLabels(labels, increment)) { + correctIntervals.put(listInterval); + } + } + return correctIntervals.getSet(); + } + + private static Set getEqualsItems(List itemsInfo) { + Set listIntervals = new HashSet<>(); + String value = null; + ListInterval interval = new ListInterval(); + for (ListItemTextInfo info : itemsInfo) { + if (!Objects.equals(info.getListItem(), value)) { + if (interval.getNumberOfListItems() > 1) { + listIntervals.add(interval); + } + value = info.getListItem(); + interval = new ListInterval(); + } + interval.getListItemsInfos().add(info); + } + if (interval.getNumberOfListItems() > 1) { + listIntervals.add(interval); + } + return listIntervals; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/HeadingProcessor.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/HeadingProcessor.java new file mode 100644 index 0000000..b779c6a --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/HeadingProcessor.java @@ -0,0 +1,244 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.opendataloader.pdf.utils.BulletedParagraphUtils; +import org.opendataloader.pdf.utils.TextNodeStatistics; +import org.opendataloader.pdf.utils.TextNodeUtils; +import org.verapdf.wcag.algorithms.entities.INode; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticHeading; +import org.verapdf.wcag.algorithms.entities.SemanticTextNode; +import org.verapdf.wcag.algorithms.entities.content.LineArtChunk; +import org.verapdf.wcag.algorithms.entities.content.TextBlock; +import org.verapdf.wcag.algorithms.entities.content.TextLine; +import org.verapdf.wcag.algorithms.entities.enums.SemanticType; +import org.verapdf.wcag.algorithms.entities.lists.ListItem; +import org.verapdf.wcag.algorithms.entities.lists.PDFList; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; +import org.verapdf.wcag.algorithms.entities.text.TextStyle; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.NodeUtils; + +import java.util.*; + +/** + * Processor for detecting and classifying headings in PDF content. + * Uses font size, weight, and position to identify potential headings. + */ +public class HeadingProcessor { + private static final double HEADING_PROBABILITY = 0.75; + private static final double BULLETED_HEADING_PROBABILITY = 0.1; + + /** + * Processes content to identify and mark headings. + * + * @param contents the list of content objects to process + * @param isTableCell whether the content is inside a table cell + */ + public static void processHeadings(List contents, boolean isTableCell) { + TextNodeStatistics textNodeStatistics = new TextNodeStatistics(); + List textNodes = new LinkedList<>(); + Map textNodeToListMap = new HashMap<>(); + for (IObject content : contents) { + processContent(textNodes, content, textNodeStatistics, textNodeToListMap); + } + + int textNodesCount = textNodes.size(); + if (isTableCell && textNodesCount < 2) { + return; + } + for (int index = 0; index < textNodesCount; index++) { + SemanticTextNode textNode = textNodes.get(index); + if (textNode.getSemanticType() == SemanticType.HEADING) { + continue; + } + SemanticTextNode prevNode = index != 0 ? textNodes.get(index - 1) : null; + SemanticTextNode nextNode = index + 1 < textNodesCount ? textNodes.get(index + 1) : null; + double probability = NodeUtils.headingProbability(textNode, prevNode, nextNode, textNode); + + probability += textNodeStatistics.fontSizeRarityBoost(textNode); + probability += textNodeStatistics.fontWeightRarityBoost(textNode); + + if (BulletedParagraphUtils.isBulletedParagraph(textNode)) { + probability += BULLETED_HEADING_PROBABILITY; + } + if (probability > HEADING_PROBABILITY && textNode.getSemanticType() != SemanticType.LIST) { + textNode.setSemanticType(SemanticType.HEADING); + } + if (textNode.getSemanticType() == SemanticType.HEADING && textNode.getInitialSemanticType() == SemanticType.LIST) { + PDFList list = textNodeToListMap.get(textNode); + if (isNotHeadings(list)) { + continue; + } + int listIndex = contents.indexOf(list); + contents.remove(listIndex); + contents.addAll(listIndex, disassemblePDFList(list)); + } + } + setHeadings(contents); + } + + private static List disassemblePDFList(PDFList list) { + List contents = new LinkedList<>(); + for (ListItem item : list.getListItems()) { + SemanticTextNode node = convertListItemToSemanticTextNode(item); + node.setSemanticType(SemanticType.HEADING); + contents.add(node); + contents.addAll(item.getContents()); + } + return contents; + } + + private static SemanticTextNode convertListItemToSemanticTextNode(TextBlock textBlock) { + SemanticTextNode semanticTextNode = new SemanticTextNode(SemanticType.LIST); + for (TextLine line : textBlock.getLines()) { + semanticTextNode.add(line); + } + return semanticTextNode; + } + + private static List getTextNodesFromContents(List contents) { + List textNodes = new LinkedList<>(); + for (IObject content : contents) { + if (content instanceof SemanticTextNode) { + textNodes.add((SemanticTextNode) content); + } + } + return textNodes; + } + + private static void processContent(List textNodes, IObject content, TextNodeStatistics textNodeStatistics, + Map possibleHeadingsInList) { + if (content instanceof SemanticTextNode) { + SemanticTextNode textNode = (SemanticTextNode) content; + if (!textNode.isSpaceNode()) { + textNodes.add(textNode); + textNodeStatistics.addTextNode(textNode); + } + } else if (content instanceof TableBorder && ((TableBorder) content).isTextBlock()) { + TableBorder textBlock = (TableBorder) content; + TableBorderCell cell = textBlock.getCell(0, 0); + List cellTextNodes = getTextNodesFromContents(cell.getContents()); + if (cellTextNodes.size() == 1) { + processContent(textNodes, cellTextNodes.get(0), textNodeStatistics, possibleHeadingsInList); + } + } else if (content instanceof PDFList) { + PDFList list = (PDFList) content; + ListItem listItem = list.getFirstListItem(); + SemanticTextNode textNode = convertListItemToSemanticTextNode(listItem); + textNodes.add(textNode); + textNodeStatistics.addTextNode(textNode); + possibleHeadingsInList.put(textNode, list); + } + } + + private static boolean isNotHeadings(PDFList list) { + for (int i = 0; i < list.getListItems().size() - 1; i++) { + boolean onlyLineArtChunks = true; + List listItems = list.getListItems(); + if (listItems.get(i).getContents().isEmpty()) { + return true; + } + for (IObject item : listItems.get(i).getContents()) { + if (!(item instanceof LineArtChunk)) { + onlyLineArtChunks = false; + break; + } + } + if (onlyLineArtChunks) { + return true; + } + } + return false; + } + + private static void setHeadings(List contents) { + for (int index = 0; index < contents.size(); index++) { + IObject content = contents.get(index); + if (content instanceof SemanticTextNode && ((INode) content).getSemanticType() == SemanticType.HEADING && !(content instanceof SemanticHeading)) { + SemanticHeading heading = new SemanticHeading((SemanticTextNode) content); + contents.set(index, heading); + StaticLayoutContainers.getHeadings().add(heading); + } + if (content instanceof TableBorder) { + TableBorder table = (TableBorder) content; + if (table.isTextBlock()) { + List textBlockContents = table.getCell(0, 0).getContents(); + setHeadings(textBlockContents); + } + } + } + } + + /** + * Detects and assigns heading levels based on text style. + * Groups headings by text style and assigns levels from 1 upwards. + */ + public static void detectHeadingsLevels() { + SortedMap> map = new TreeMap<>(); + List headings = StaticLayoutContainers.getHeadings(); + List colorlessHeadings = new ArrayList<>(); + for (SemanticHeading heading : headings) { + if (TextNodeUtils.getTextColorOrNull(heading) == null) { + colorlessHeadings.add(heading); + continue; + } + TextStyle textStyle = TextStyle.getTextStyle(heading); + map.computeIfAbsent(textStyle, k -> new HashSet<>()).add(heading); + } + int level = 1; + TextStyle previousTextStyle = null; + for (Map.Entry> entry : map.entrySet()) { + if (previousTextStyle != null && previousTextStyle.compareTo(entry.getKey()) != 0) { + level++; + } + previousTextStyle = entry.getKey(); + for (SemanticHeading heading : entry.getValue()) { + heading.setHeadingLevel(level); + } + } + // Headings without color info get level based on font size relative to existing levels + for (SemanticHeading heading : colorlessHeadings) { + heading.setHeadingLevel(findClosestLevel(heading, map)); + } + } + + private static int findClosestLevel(SemanticHeading heading, SortedMap> map) { + if (map.isEmpty()) { + return 1; + } + double fontSize = heading.getFontSize(); + int bestLevel = 1; + double bestDiff = Double.MAX_VALUE; + int level = 1; + TextStyle previousStyle = null; + for (Map.Entry> entry : map.entrySet()) { + if (previousStyle != null && previousStyle.compareTo(entry.getKey()) != 0) { + level++; + } + previousStyle = entry.getKey(); + SemanticHeading representative = entry.getValue().iterator().next(); + double diff = Math.abs(representative.getFontSize() - fontSize); + if (diff < bestDiff) { + bestDiff = diff; + bestLevel = level; + } + } + return bestLevel; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/HiddenTextProcessor.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/HiddenTextProcessor.java new file mode 100644 index 0000000..b4eb5c4 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/HiddenTextProcessor.java @@ -0,0 +1,71 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.semanticalgorithms.consumers.ContrastRatioConsumer; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; + +import java.util.LinkedList; +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * Processor for detecting hidden text in PDF documents. + * Identifies text with low contrast ratio against the background. + */ +public class HiddenTextProcessor { + private static final Logger LOGGER = Logger.getLogger(HiddenTextProcessor.class.getCanonicalName()); + + private static final double MIN_CONTRAST_RATIO = 1.2d; + + /** + * Finds and marks or filters hidden text based on contrast ratio. + * + * @param contents the page contents to process + * @param isFilterHiddenText whether to filter out hidden text or just mark it + * @return the processed list of content objects + */ + public static List findHiddenText(List contents, boolean isFilterHiddenText) { + if (StaticContainers.getImagesUtils() == null) { + LOGGER.log(Level.WARNING, "Hidden-text filtering will be skipped for this document."); + return contents; + } + List result = new LinkedList<>(); + try { + ContrastRatioConsumer contrastRatioConsumer = new ContrastRatioConsumer(); + for (IObject content : contents) { + if (content instanceof TextChunk) { + TextChunk textChunk = (TextChunk) content; + contrastRatioConsumer.calculateContrastRatio(textChunk); + if (textChunk.getContrastRatio() < MIN_CONTRAST_RATIO) { + if (!isFilterHiddenText) { + textChunk.setHiddenText(true); + } else { + continue; + } + } + } + result.add(content); + } + } finally { + StaticContainers.getImagesUtils().clearRenderedPages(); + } + return result; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/HybridDocumentProcessor.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/HybridDocumentProcessor.java new file mode 100644 index 0000000..3c81aa1 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/HybridDocumentProcessor.java @@ -0,0 +1,1529 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.opendataloader.pdf.api.Config; +import org.opendataloader.pdf.entities.EnrichedImageChunk; +import org.opendataloader.pdf.entities.SemanticFormula; +import org.opendataloader.pdf.entities.SemanticPicture; +import org.opendataloader.pdf.hybrid.DoclingSchemaTransformer; +import org.opendataloader.pdf.hybrid.ElementMetadata; +import org.opendataloader.pdf.hybrid.HancomAISchemaTransformer; +import org.opendataloader.pdf.hybrid.HancomSchemaTransformer; +import org.opendataloader.pdf.hybrid.HybridClient; +import org.opendataloader.pdf.hybrid.HybridClientFactory; +import org.opendataloader.pdf.hybrid.HybridClient.HybridRequest; +import org.opendataloader.pdf.hybrid.HybridClient.HybridResponse; +import org.opendataloader.pdf.hybrid.HybridClient.OutputFormat; +import com.fasterxml.jackson.databind.JsonNode; +import org.opendataloader.pdf.hybrid.HybridConfig; +import org.opendataloader.pdf.hybrid.HybridSchemaTransformer; +import org.opendataloader.pdf.hybrid.TextSimilarity; +import org.opendataloader.pdf.hybrid.OcrWordInfo; +import org.opendataloader.pdf.hybrid.TriageLogger; +import org.opendataloader.pdf.hybrid.TriageProcessor; +import org.opendataloader.pdf.hybrid.TriageProcessor.TriageDecision; +import org.opendataloader.pdf.hybrid.TriageProcessor.TriageResult; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticTextNode; +import org.verapdf.wcag.algorithms.entities.content.ImageChunk; +import org.verapdf.wcag.algorithms.entities.content.LineChunk; +import org.verapdf.wcag.algorithms.entities.lists.PDFList; +import org.verapdf.wcag.algorithms.entities.lists.ListItem; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderRow; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.content.TextColumn; +import org.verapdf.wcag.algorithms.entities.content.TextLine; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Collections; +import java.util.EnumSet; +import java.util.HashMap; +import java.util.HashSet; +import java.util.IdentityHashMap; +import java.util.List; +import java.util.Objects; +import java.util.Map; +import java.util.Set; +import java.util.TreeSet; +import java.util.concurrent.TimeUnit; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.stream.Collectors; + +/** + * Hybrid document processor that routes pages to Java or external AI backend based on triage. + * + *

    The processing flow: + *

      + *
    1. Filter all pages using ContentFilterProcessor
    2. + *
    3. Triage all pages to determine JAVA vs BACKEND routing
    4. + *
    5. Process JAVA pages using Java processors (parallel)
    6. + *
    7. Process BACKEND pages via external API (batch async)
    8. + *
    9. Merge results maintaining page order
    10. + *
    + * + *

    The Java and Backend paths run concurrently for optimal performance. + */ +public class HybridDocumentProcessor { + + private static final Logger LOGGER = Logger.getLogger(HybridDocumentProcessor.class.getCanonicalName()); + + /** + * Stores the last hybrid server timings collected during {@link #processBackendPath}. + * Accumulated across all chunks. Reset at the start of each {@code processDocument} call. + */ + private static volatile JsonNode lastHybridTimings; + + /** + * Cumulative client-side wall-clock for {@code client.convert(...)} calls during + * the most recent {@link #processDocument} run. Includes network RTT, JSON + * (de)serialization, and any queueing — i.e. the time the user actually waited + * on the backend. May exceed the server-reported {@code total_ms} (which + * counts only on-GPU work) and is the truer figure for SLA / throughput + * reasoning. {@code null} when no backend chunks were attempted. + */ + private static volatile Long lastHybridClientMs; + + /** + * Stores element metadata from the most recent hybrid backend processing. + * Reset at the start of each {@code processDocument} call. + */ + private static volatile Map lastElementMetadata; + + /** + * Stores per-page OCR word data from the most recent hybrid backend processing. + * Used for OCR enrichment fallback when Java TextChunks are not available. + * Reset at the start of each {@code processDocument} call. + */ + private static volatile Map> lastOcrWordsByPage; + + /** + * Stores the raw merged JSON returned by the hybrid backend's most recent + * {@code HybridResponse.getJson()}. Downstream tools (e.g. opendataloader-pdfua + * evidence reports) need per-module raw outputs to file as L2 evidence. + * + *

    Single-threaded by contract: this static is overwritten on each + * {@code processDocument} call, so concurrent invocations would race. Callers + * that need per-document raw JSON must serialize {@code processDocument} + * invocations (or wrap with their own ThreadLocal). + * + *

    Multi-chunk documents (>{@link #BACKEND_CHUNK_SIZE} backend pages) currently + * keep only the last chunk's JSON. Single-chunk documents capture the full + * response. + */ + private static volatile JsonNode lastHybridRawJson; + + /** + * Snapshot of the hybrid backend's {@code /health} response taken at the + * start of the most recent {@link #processDocument} call. Downstream + * tools surface this so server-side timings can be interpreted against + * the hardware that produced them. {@code null} if hybrid was off or + * the backend did not provide a health endpoint. + */ + private static volatile JsonNode lastHybridHealth; + + /** Returns the hybrid server timings from the most recent {@link #processDocument} call. */ + public static JsonNode getLastHybridTimings() { + return lastHybridTimings; + } + + /** + * Returns cumulative client-side wall-clock for hybrid backend calls during + * the most recent {@link #processDocument} call, or {@code null} if hybrid + * was off or the backend was never invoked. Always measured client-side, so + * mock and real backends are directly comparable on the same scale. + */ + public static Long getLastHybridClientMs() { + return lastHybridClientMs; + } + + /** + * Returns the raw merged hybrid backend JSON from the most recent + * {@link #processDocument} call, or {@code null} if hybrid was not used. + */ + public static JsonNode getLastHybridRawJson() { + return lastHybridRawJson; + } + + /** + * Returns the hybrid backend's reported {@code /health} payload + * (hardware + models + version) from the most recent processing run, + * or {@code null} if hybrid was off or the backend didn't report one. + */ + public static JsonNode getLastHybridHealth() { + return lastHybridHealth; + } + + /** Returns the element metadata from the most recent {@link #processDocument} call. */ + public static Map getLastElementMetadata() { + return lastElementMetadata; + } + + /** Returns the OCR word data from the most recent {@link #processDocument} call. */ + public static Map> getLastOcrWordsByPage() { + return lastOcrWordsByPage; + } + + /** + * Maximum number of pages to send to the backend in a single request. + * Large scanned PDFs (100+ pages) cause the backend to hang when sent all at once + * due to non-linear memory/processing scaling in the AI pipeline. + * Chunking into smaller batches avoids this while adding negligible overhead + * (the model is loaded once at server startup, not per-request). + * + * @see #352 + */ + static final int BACKEND_CHUNK_SIZE = 50; + + private HybridDocumentProcessor() { + // Static utility class + } + + /** + * Processes a document using hybrid mode with triage-based routing. + * + * @param inputPdfName The path to the input PDF file. + * @param config The configuration settings. + * @param pagesToProcess The set of 0-indexed page numbers to process, or null for all pages. + * @return List of IObject lists, one per page. + * @throws IOException If an error occurs during processing. + */ + public static List> processDocument( + String inputPdfName, + Config config, + Set pagesToProcess) throws IOException { + return processDocument(inputPdfName, config, pagesToProcess, null); + } + + /** + * Processes a document using hybrid mode with triage-based routing and optional triage logging. + * + * @param inputPdfName The path to the input PDF file. + * @param config The configuration settings. + * @param pagesToProcess The set of 0-indexed page numbers to process, or null for all pages. + * @param outputDir The output directory for triage logging, or null to skip logging. + * @return List of IObject lists, one per page. + * @throws IOException If an error occurs during processing. + */ + public static List> processDocument( + String inputPdfName, + Config config, + Set pagesToProcess, + Path outputDir) throws IOException { + + lastHybridTimings = null; // Reset for this processing run + lastElementMetadata = null; + lastOcrWordsByPage = null; + lastHybridRawJson = null; + lastHybridHealth = null; + lastHybridClientMs = null; + + int totalPages = StaticContainers.getDocument().getNumberOfPages(); + LOGGER.log(Level.INFO, "Starting hybrid processing for {0} pages", totalPages); + + if (pagesToProcess != null && pagesToProcess.isEmpty()) { + LOGGER.log(Level.INFO, "Skipping hybrid processing because no valid pages were selected"); + return createEmptyContents(totalPages); + } + + // Phase 0: Check backend availability before any processing. + // Runs before triage intentionally — if the user explicitly requested hybrid mode, + // they expect the server to be available regardless of how pages would be routed. + // When the health check fails and --hybrid-fallback is enabled, route every page + // through the Java path instead of aborting the whole run (PDFDLOSP-21). + try { + getClient(config).checkAvailability(); + } catch (IOException e) { + if (config.getHybridConfig().isFallbackToJava()) { + LOGGER.log(Level.WARNING, + "Hybrid backend unavailable; falling back to Java-only processing: {0}", + e.getMessage()); + return processAllPagesAsJavaFallback( + inputPdfName, config, pagesToProcess, totalPages); + } + throw e; + } + + // Phase 1: Filter all pages and collect filtered contents + Map> filteredContents = filterAllPages(inputPdfName, config, pagesToProcess, totalPages); + + // Phase 2: Triage all pages (or skip if full mode) + Map triageResults; + if (config.getHybridConfig().isFullMode()) { + // Full mode: skip triage, route all pages to backend + LOGGER.log(Level.INFO, "Hybrid mode=full: skipping triage, all pages to backend"); + triageResults = new HashMap<>(); + for (int pageNumber : filteredContents.keySet()) { + if (shouldProcessPage(pageNumber, pagesToProcess)) { + triageResults.put(pageNumber, + TriageResult.backend(pageNumber, 1.0, TriageProcessor.TriageSignals.empty())); + } + } + } else { + // Auto mode: dynamic triage based on page content + triageResults = TriageProcessor.triageAllPages( + filteredContents, config.getHybridConfig() + ); + } + + // Log triage summary + logTriageSummary(triageResults); + + // Log triage results to JSON file if output directory is specified + if (outputDir != null) { + logTriageToFile(inputPdfName, config.getHybrid(), triageResults, outputDir); + } + + // Phase 3: Split pages by decision + Set javaPages = filterByDecision(triageResults, TriageDecision.JAVA); + Set backendPages = filterByDecision(triageResults, TriageDecision.BACKEND); + + LOGGER.log(Level.INFO, "Routing: {0} pages to Java, {1} pages to Backend", + new Object[]{javaPages.size(), backendPages.size()}); + + // Phase 4: Process sequentially (Java first, then backend) + List> contents = new ArrayList<>(); + for (int i = 0; i < totalPages; i++) { + contents.add(new ArrayList<>()); + } + + // Process Java path first + Map> javaResults = processJavaPath( + filteredContents, javaPages, config, totalPages + ); + + // Process backend path (synchronous) + Map> backendResults; + Set backendFailedPages = new HashSet<>(); + // Track SemanticPicture→EnrichedImageChunk swaps so we can rekey + // ElementMetadata after Phase 6 cross-page processors (HeaderFooter, + // List, etc.) re-run setIDs and mutate the picture's structure id. + Map pictureSwapOriginalIds = new IdentityHashMap<>(); + try { + backendResults = processBackendPath(inputPdfName, backendPages, config, backendFailedPages); + // Enrich backend results: copy StreamInfos from Java-extracted content for MCID linkage + enrichBackendResults(backendResults, filteredContents, config.getHybridConfig(), + pictureSwapOriginalIds); + } catch (Exception e) { + LOGGER.log(Level.WARNING, "Backend processing failed: {0}", e.getMessage()); + if (config.getHybridConfig().isFallbackToJava()) { + LOGGER.log(Level.INFO, "Falling back to Java processing for backend pages"); + backendResults = processJavaPath(filteredContents, backendPages, config, totalPages); + } else { + throw new IOException("Backend processing failed and fallback is disabled", e); + } + } + + // Fallback: reprocess backend-failed pages through Java path + if (!backendFailedPages.isEmpty()) { + // Log 1-indexed page numbers for human readability + List failedPages1Indexed = backendFailedPages.stream() + .map(p -> p + 1).sorted().collect(Collectors.toList()); + if (config.getHybridConfig().isFallbackToJava()) { + LOGGER.log(Level.WARNING, "Backend returned partial_success: {0} page(s) failed (pages {1}), falling back to Java path", + new Object[]{backendFailedPages.size(), failedPages1Indexed}); + Map> fallbackResults = processJavaPath( + filteredContents, backendFailedPages, config, totalPages + ); + backendResults.putAll(fallbackResults); + } else { + LOGGER.log(Level.WARNING, "Backend returned partial_success: {0} page(s) failed (pages {1}), fallback disabled — failing fast", + new Object[]{backendFailedPages.size(), failedPages1Indexed}); + failFastIfBackendFailedWithoutFallback(backendFailedPages, config.getHybridConfig()); + } + } + + // Phase 5: Merge results + mergeResults(contents, javaResults, backendResults, pagesToProcess, totalPages); + + // Phase 6: Post-processing (cross-page operations) + postProcess(contents, config, pagesToProcess, totalPages); + + // Phase 7: Final metadata rekey. setIDs runs inside HeaderFooterProcessor / + // ListProcessor / TableBorderProcessor during Phase 6 and may rewrite the + // structure id of any IObject on the page — including EnrichedImageChunks + // we just created from SemanticPicture. Without this final pass, an image + // node downstream of a list (or header/footer container that triggers + // setIDs) drops ai_score / source label / caption metadata. + if (!pictureSwapOriginalIds.isEmpty() && lastElementMetadata != null + && !lastElementMetadata.isEmpty()) { + Map oldToFinal = new HashMap<>(pictureSwapOriginalIds.size()); + for (Map.Entry e : pictureSwapOriginalIds.entrySet()) { + Long oldId = e.getValue(); + Long finalId = e.getKey().getRecognizedStructureId(); + if (oldId != null && finalId != null && !oldId.equals(finalId)) { + oldToFinal.put(oldId, finalId); + } + } + if (!oldToFinal.isEmpty()) { + Map rebuilt = new HashMap<>(lastElementMetadata); + // Two-phase apply: first detach every (oldId → meta) we plan + // to move, then re-attach under finalId. This prevents a + // finalId that coincides with another picture's oldId from + // clobbering unrelated metadata. + Map detached = new HashMap<>(oldToFinal.size()); + for (Long oldId : oldToFinal.keySet()) { + ElementMetadata meta = rebuilt.remove(oldId); + if (meta != null) { + detached.put(oldId, meta); + } + } + for (Map.Entry e : oldToFinal.entrySet()) { + Long oldId = e.getKey(); + ElementMetadata meta = detached.get(oldId); + if (meta == null) continue; + Long finalId = e.getValue(); + if (rebuilt.containsKey(finalId)) { + // Another node already owns finalId after setIDs ran. + // Re-attaching here would silently overwrite that + // node's metadata. Try to restore the detached entry + // under its original key — but only if oldId is also + // unowned. With HashMap iteration order, an earlier + // iteration in this same loop may have migrated some + // other picture *into* oldId (its finalId == this + // oldId), and rolling back would clobber that + // legitimately-migrated entry. Permanent metadata + // loss is the lesser evil there: the WARNING flags + // it for investigation. + if (!rebuilt.containsKey(oldId)) { + LOGGER.log(Level.WARNING, + "PhaseRekey: finalId {0} already owned in metadata map, keeping picture entry at oldId {1} (alt may not surface in JSON output)", + new Object[]{finalId, oldId}); + rebuilt.put(oldId, meta); + } else { + LOGGER.log(Level.WARNING, + "PhaseRekey: both finalId {0} and oldId {1} already owned in metadata map; dropping picture metadata to preserve migrated entries", + new Object[]{finalId, oldId}); + } + continue; + } + rebuilt.put(finalId, meta); + } + lastElementMetadata = Collections.unmodifiableMap(rebuilt); + } + } + + return contents; + } + + /** + * Runs the full document through the Java path when the hybrid backend health check + * fails and {@code --hybrid-fallback} is enabled. Mirrors the structure of + * {@link #processDocument} so the caller still gets a per-page result list, but + * skips triage and the backend chunk loop entirely. + */ + private static List> processAllPagesAsJavaFallback( + String inputPdfName, + Config config, + Set pagesToProcess, + int totalPages) throws IOException { + + Map> filteredContents = + filterAllPages(inputPdfName, config, pagesToProcess, totalPages); + + Set allPages = new HashSet<>(); + for (int pageNumber = 0; pageNumber < totalPages; pageNumber++) { + if (shouldProcessPage(pageNumber, pagesToProcess)) { + allPages.add(pageNumber); + } + } + + Map> javaResults = + processJavaPath(filteredContents, allPages, config, totalPages); + + List> contents = new ArrayList<>(); + for (int i = 0; i < totalPages; i++) { + contents.add(new ArrayList<>()); + } + mergeResults(contents, javaResults, new HashMap<>(), pagesToProcess, totalPages); + postProcess(contents, config, pagesToProcess, totalPages); + return contents; + } + + private static List> createEmptyContents(int totalPages) { + List> contents = new ArrayList<>(totalPages); + for (int i = 0; i < totalPages; i++) { + contents.add(new ArrayList<>()); + } + return contents; + } + + /** + * Fails fast when the backend left pages unprocessed and fallback to Java is disabled. + * Without this, the CLI would exit 0 with a sparse JSON that drops failed pages, + * making backend failures invisible to automation. + * + * @param backendFailedPages 0-indexed pages that the backend failed to process. + * @param hybridConfig Hybrid configuration; consulted for the fallback flag. + * @throws IOException if {@code backendFailedPages} is non-empty and + * {@code hybridConfig.isFallbackToJava()} returns false. The + * exception message lists the 1-indexed failed page numbers. + */ + static void failFastIfBackendFailedWithoutFallback( + Set backendFailedPages, + HybridConfig hybridConfig) throws IOException { + Objects.requireNonNull(backendFailedPages, "backendFailedPages"); + Objects.requireNonNull(hybridConfig, "hybridConfig"); + if (backendFailedPages.isEmpty() || hybridConfig.isFallbackToJava()) { + return; + } + List failedPages1Indexed = backendFailedPages.stream() + .map(p -> p + 1).sorted().collect(Collectors.toList()); + throw new IOException(String.format( + "Backend processing failed for %d page(s) with fallback disabled: pages %s", + backendFailedPages.size(), failedPages1Indexed)); + } + + /** + * Filters all pages using ContentFilterProcessor. + */ + private static Map> filterAllPages( + String inputPdfName, + Config config, + Set pagesToProcess, + int totalPages) throws IOException { + + Map> filteredContents = new HashMap<>(); + + for (int pageNumber = 0; pageNumber < totalPages; pageNumber++) { + if (!shouldProcessPage(pageNumber, pagesToProcess)) { + filteredContents.put(pageNumber, new ArrayList<>()); + continue; + } + + List pageContents = ContentFilterProcessor.getFilteredContents( + inputPdfName, + StaticContainers.getDocument().getArtifacts(pageNumber), + pageNumber, + config + ); + filteredContents.put(pageNumber, pageContents); + } + + return filteredContents; + } + + /** + * Filters triage results by decision type. + */ + private static Set filterByDecision( + Map triageResults, + TriageDecision decision) { + + return triageResults.entrySet().stream() + .filter(e -> e.getValue().getDecision() == decision) + .map(Map.Entry::getKey) + .collect(Collectors.toSet()); + } + + /** + * Processes pages using the Java processing path. + */ + private static Map> processJavaPath( + Map> filteredContents, + Set pageNumbers, + Config config, + int totalPages) { + + if (pageNumbers.isEmpty()) { + return new HashMap<>(); + } + + LOGGER.log(Level.FINE, "Processing {0} pages via Java path", pageNumbers.size()); + + // Create a working copy of contents for Java processing + List> workingContents = new ArrayList<>(); + for (int i = 0; i < totalPages; i++) { + if (pageNumbers.contains(i)) { + workingContents.add(new ArrayList<>(filteredContents.get(i))); + } else { + workingContents.add(new ArrayList<>()); + } + } + + // Apply cluster table processing if enabled + if (config.isClusterTableMethod()) { + new ClusterTableProcessor().processTables(workingContents); + } + + // Process each page through the standard Java pipeline + // Note: Sequential processing is required because StaticContainers uses ThreadLocal + for (int pageNumber : pageNumbers) { + try { + List pageContents = workingContents.get(pageNumber); + TextDecorationProcessor.processStrikethroughAndUnderlinedText(pageContents, pageNumber, config.isDetectStrikethrough()); + pageContents = TableBorderProcessor.processTableBorders(pageContents, pageNumber); + pageContents = pageContents.stream() + .filter(x -> !(x instanceof LineChunk)) + .collect(Collectors.toList()); + pageContents = TextLineProcessor.processTextLines(pageContents); + pageContents = SpecialTableProcessor.detectSpecialTables(pageContents); + workingContents.set(pageNumber, pageContents); + } catch (Exception e) { + LOGGER.log(Level.WARNING, "Error processing page {0}: {1}", + new Object[]{pageNumber, e.getMessage()}); + } + } + + // Apply cross-page processing for Java pages only + applyJavaPagePostProcessing(workingContents, pageNumbers); + + // Extract results + Map> results = new HashMap<>(); + for (int pageNumber : pageNumbers) { + results.put(pageNumber, workingContents.get(pageNumber)); + } + + return results; + } + + /** + * Applies post-processing to Java-processed pages. + */ + private static void applyJavaPagePostProcessing(List> contents, Set pageNumbers) { + // Process paragraphs, lists, and headings for each page + for (int pageNumber : pageNumbers) { + List pageContents = contents.get(pageNumber); + pageContents = ParagraphProcessor.processParagraphs(pageContents); + pageContents = ListProcessor.processListsFromTextNodes(pageContents); + HeadingProcessor.processHeadings(pageContents, false); + DocumentProcessor.setIDs(pageContents); + CaptionProcessor.processCaptions(pageContents); + contents.set(pageNumber, pageContents); + } + } + + /** + * Processes pages using the external backend. + * + * @param inputPdfName The path to the input PDF file. + * @param pageNumbers Set of 0-indexed page numbers to process. + * @param config The configuration settings. + * @param backendFailedPages Output parameter: populated with 0-indexed page numbers that + * failed during backend processing (e.g., due to Invalid code point). + * These pages can be retried via the Java processing path. + * @return Map of page number to IObject list for successfully processed pages. + * @throws IOException If an error occurs during processing. + */ + private static Map> processBackendPath( + String inputPdfName, + Set pageNumbers, + Config config, + Set backendFailedPages) throws IOException { + + if (pageNumbers.isEmpty()) { + return new HashMap<>(); + } + + LOGGER.log(Level.INFO, "Processing {0} pages via {1} backend", + new Object[]{pageNumbers.size(), config.getHybrid()}); + + // Get or create cached client + HybridClient client = getClient(config); + + // Best-effort: snapshot backend health (hardware, models, version) + // so downstream tooling can interpret server timings against the + // environment that produced them. Narrow catch to Exception so + // JVM-fatal errors (OutOfMemoryError etc.) still propagate. + try { + lastHybridHealth = client.fetchHealth(); + } catch (Exception e) { + lastHybridHealth = null; + LOGGER.log(Level.FINE, "fetchHealth failed", e); + } + + // Read PDF bytes + byte[] pdfBytes = Files.readAllBytes(Path.of(inputPdfName)); + + // Determine required output formats based on config + Set outputFormats = determineOutputFormats(config); + + // Get page heights for coordinate transformation + Map pageHeights = getPageHeights(pageNumbers); + + HybridSchemaTransformer transformer = createTransformer(config); + Map> results = new HashMap<>(); + + // Split backend pages into chunks to prevent hang on large documents (#352). + // Pages are sorted so that page_ranges sent to the server are contiguous. + List sortedPages = new ArrayList<>(new TreeSet<>(pageNumbers)); + + for (int chunkStart = 0; chunkStart < sortedPages.size(); chunkStart += BACKEND_CHUNK_SIZE) { + int chunkEnd = Math.min(chunkStart + BACKEND_CHUNK_SIZE, sortedPages.size()); + List chunkPages = sortedPages.subList(chunkStart, chunkEnd); + + // Convert 0-indexed page numbers to 1-indexed for the server API + Set chunkPages1Indexed = new HashSet<>(); + for (int page0 : chunkPages) { + chunkPages1Indexed.add(page0 + 1); + } + + if (sortedPages.size() > BACKEND_CHUNK_SIZE) { + LOGGER.log(Level.INFO, "Sending pages {0}-{1} of {2} backend pages", + new Object[]{chunkPages.get(0) + 1, chunkPages.get(chunkPages.size() - 1) + 1, + sortedPages.size()}); + } + + try { + HybridRequest request = HybridRequest.forPages(pdfBytes, chunkPages1Indexed, outputFormats) + .withCropOutput(cropOutputFor(config)); + long convertStartNs = System.nanoTime(); + HybridResponse response; + try { + response = client.convert(request); + } finally { + // Accumulate client wall-clock for this convert call whether + // it succeeded, failed with IOException, or otherwise unwound + // — the user waited that long regardless of outcome, and + // that's what this metric exists to measure (SLA / throughput). + // nanoTime() is monotonic; safe against wall-clock jumps + // (NTP / DST / manual changes). + long convertElapsedMs = TimeUnit.NANOSECONDS.toMillis( + System.nanoTime() - convertStartNs); + lastHybridClientMs = (lastHybridClientMs == null ? 0L : lastHybridClientMs) + + convertElapsedMs; + } + + // Capture hybrid server pipeline timings (last chunk wins for now; + // in single-chunk documents this is exact) + if (response.getTimings() != null) { + lastHybridTimings = response.getTimings(); + } + if (response.getJson() != null) { + lastHybridRawJson = response.getJson(); + } + + // Collect failed pages (convert from 1-indexed to 0-indexed) + if (response.hasFailedPages()) { + for (int failedPage1Indexed : response.getFailedPages()) { + int failedPage0Indexed = failedPage1Indexed - 1; + if (pageNumbers.contains(failedPage0Indexed)) { + backendFailedPages.add(failedPage0Indexed); + } + } + } + + // Build page heights subset for this chunk (1-indexed keys, matching getPageHeights) + Map chunkPageHeights = new HashMap<>(); + for (int page1 : chunkPages1Indexed) { + Double height = pageHeights.get(page1); + if (height != null) { + chunkPageHeights.put(page1, height); + } + } + + // Transform response to IObjects. + // Contract: transform() returns a list indexed by absolute page number (pageNo - 1). + // For chunk pages 51-100, the list has 100 entries with content at indices 50-99. + // This matches page0 values used below for extraction. + List> transformedContents = transformer.transform(response, chunkPageHeights); + + // Extract results for this chunk's pages (excluding failed pages) + for (int page0 : chunkPages) { + if (backendFailedPages.contains(page0)) { + continue; // Skip failed pages — they will be retried via Java path + } + if (page0 < transformedContents.size()) { + List pageContents = transformedContents.get(page0); + TextProcessor.replaceUndefinedCharacters(pageContents, config.getReplaceInvalidChars()); + // Capture transformer-assigned IDs before setIDs rewrites them + // so ElementMetadata keyed by the original ID can be migrated + // to the renumbered structure ID. + List oldIds = new ArrayList<>(pageContents.size()); + for (IObject obj : pageContents) { + oldIds.add(obj.getRecognizedStructureId()); + } + DocumentProcessor.setIDs(pageContents); + rekeyMetadata(transformer, oldIds, pageContents); + results.put(page0, pageContents); + } else { + results.put(page0, new ArrayList<>()); + } + } + } catch (IOException e) { + // Isolate chunk failures — mark pages as failed so they can be retried + // via the Java path, and continue processing remaining chunks. + LOGGER.log(Level.WARNING, "Backend chunk failed (pages {0}-{1}): {2}", + new Object[]{chunkPages.get(0) + 1, chunkPages.get(chunkPages.size() - 1) + 1, + e.getMessage()}); + for (int page0 : chunkPages) { + backendFailedPages.add(page0); + } + } + } + + // Capture element metadata and OCR words from the transformer (e.g., HancomAISchemaTransformer) + lastElementMetadata = transformer.getElementMetadata(); + lastOcrWordsByPage = transformer.getOcrWordsByPage(); + + // Note: Client is cached and reused across documents. + // HybridClientFactory.shutdown() should be called at CLI exit. + + return results; + } + + /** + * Gets or creates a hybrid client based on configuration. + * + *

    Uses HybridClientFactory to cache and reuse clients across documents. + */ + private static HybridClient getClient(Config config) { + return HybridClientFactory.getOrCreate(config.getHybrid(), config.getHybridConfig()); + } + + /** + * Resolve the per-document crop / page-image destination from the config. + * + *

    The cached client cannot hold this — it is reused across documents and + * its config reflects only the first one. Carrying it on the per-document + * {@link HybridClient.HybridRequest} keeps the destination correct (and + * needs no shared mutable state) for the document being processed. + */ + private static HybridClient.CropOutput cropOutputFor(Config config) { + HybridConfig hc = config.getHybridConfig(); + if (hc == null || !hc.isSaveCrops() || hc.getCropOutputDir() == null) { + return HybridClient.CropOutput.DISABLED; + } + return new HybridClient.CropOutput(true, hc.getCropOutputDir()); + } + + /** + * Migrate ElementMetadata entries from transformer-assigned IDs onto the + * structure IDs that {@code setIDs} just renumbered each IObject with. + * Without this, the metadata map keeps pointing at the throwaway IDs the + * transformer minted and downstream metadata lookups all miss. + */ + private static void rekeyMetadata(HybridSchemaTransformer transformer, + List oldIds, List pageContents) { + Map oldToNew = new java.util.HashMap<>(pageContents.size()); + for (int i = 0; i < pageContents.size(); i++) { + Long oldId = oldIds.get(i); + Long newId = pageContents.get(i).getRecognizedStructureId(); + if (oldId == null || newId == null || oldId.equals(newId)) continue; + oldToNew.put(oldId, newId); + } + if (!oldToNew.isEmpty()) { + transformer.rekeyMetadata(oldToNew); + } + } + + /** + * Creates a schema transformer based on configuration. + */ + private static HybridSchemaTransformer createTransformer(Config config) { + String hybrid = config.getHybrid(); + + // docling and docling-fast (deprecated) use DoclingSchemaTransformer + if (Config.HYBRID_DOCLING.equals(hybrid) || Config.HYBRID_DOCLING_FAST.equals(hybrid)) { + return new DoclingSchemaTransformer(); + } + + // hancom uses HancomSchemaTransformer + if (Config.HYBRID_HANCOM.equals(hybrid)) { + return new HancomSchemaTransformer(); + } + + // hancom-ai uses HancomAISchemaTransformer. Thread the regionlist strategy + // from HybridConfig so --regionlist-strategy is honoured instead of silently + // falling back to the transformer's default. + if (Config.HYBRID_HANCOM_AI.equals(hybrid)) { + HancomAISchemaTransformer transformer = new HancomAISchemaTransformer(); + String regionlistStrategy = config.getHybridConfig() != null + ? config.getHybridConfig().getRegionlistStrategy() : null; + if (regionlistStrategy != null) { + transformer.setRegionlistStrategy(regionlistStrategy); + } + return transformer; + } + + throw new IllegalArgumentException("Unsupported hybrid backend: " + hybrid); + } + + /** + * Gets page heights for coordinate transformation. + */ + private static Map getPageHeights(Set pageNumbers) { + Map pageHeights = new HashMap<>(); + + for (int pageNumber : pageNumbers) { + BoundingBox pageBbox = DocumentProcessor.getPageBoundingBox(pageNumber); + if (pageBbox != null) { + pageHeights.put(pageNumber + 1, pageBbox.getHeight()); // 1-indexed for transformer + } + } + + return pageHeights; + } + + /** + * Merges Java and backend results into the final contents list. + */ + /** + * Enriches backend results with MCID/StreamInfo data from Java-extracted content. + * + *

    Backend-generated IObjects (from docling) lack StreamInfo, which is required + * for PDF struct-tree tagging. This method: + *

      + *
    1. Replaces SemanticPicture with EnrichedImageChunk (copies StreamInfo + description)
    2. + *
    3. Copies StreamInfo from Java TextChunks to backend TextChunks by bbox overlap
    4. + *
    + */ + private static void enrichBackendResults( + Map> backendResults, + Map> filteredContents, + HybridConfig hybridConfig, + Map pictureSwapOriginalIds) { + + for (Map.Entry> entry : backendResults.entrySet()) { + int pageNumber = entry.getKey(); + List backendPage = entry.getValue(); + + List javaPage = filteredContents.getOrDefault(pageNumber, List.of()); + + // Collect Java-extracted ImageChunks and TextChunks for matching + List javaImageChunks = new ArrayList<>(); + List javaTextChunks = new ArrayList<>(); + collectJavaChunks(javaPage, javaImageChunks, javaTextChunks); + + // Replace SemanticPicture entries with matched EnrichedImageChunk + if (!javaImageChunks.isEmpty()) { + List enriched = new ArrayList<>(backendPage.size()); + for (IObject obj : backendPage) { + if (obj instanceof SemanticPicture) { + SemanticPicture picture = (SemanticPicture) obj; + ImageChunk matched = findMatchingImageChunk(picture, javaImageChunks); + if (matched != null) { + // Author-authored /Alt wins over AI caption. If the + // matched chunk is already an EnrichedImageChunk with + // AltSource.ORIGINAL (TaggedDocumentProcessor extracts + // the source PDF's /Alt that way), preserve it; the + // backend caption is discarded because a human-authored + // /Alt is more trustworthy than any AI description. + String alt; + EnrichedImageChunk.AltSource altSource; + if (matched instanceof EnrichedImageChunk + && ((EnrichedImageChunk) matched).getAltSource() + == EnrichedImageChunk.AltSource.ORIGINAL + && ((EnrichedImageChunk) matched).hasDescription()) { + alt = ((EnrichedImageChunk) matched).getDescription(); + altSource = EnrichedImageChunk.AltSource.ORIGINAL; + // Author /Alt wins; AI caption is intentionally + // discarded here. Logged so a future regression + // (e.g. whitespace-only original /Alt that + // passes hasDescription) is visible during + // hybrid-pipeline debugging. + if (picture.getDescription() != null + && !picture.getDescription().isEmpty()) { + LOGGER.log(Level.FINE, + "Page {0}: kept original /Alt over AI caption (orig len={1}, ai len={2})", + new Object[]{pageNumber, alt.length(), picture.getDescription().length()}); + } + } else { + alt = picture.getDescription(); + altSource = EnrichedImageChunk.AltSource.AI_GENERATED; + } + EnrichedImageChunk replacement = new EnrichedImageChunk( + matched, alt, altSource); + // Preserve the SemanticPicture's structure id so that + // ElementMetadata keyed by it (ai_score, source label, + // caption) survives the SemanticPicture → EnrichedImageChunk + // swap. Without this, downstream metadata lookups miss + // and the JSON output drops every picture-level metadata + // field except `alt`. + Long originalId = picture.getRecognizedStructureId(); + replacement.setRecognizedStructureId(originalId); + if (originalId != null) { + pictureSwapOriginalIds.put(replacement, originalId); + } + enriched.add(replacement); + } else { + // No Java ImageChunk overlapped this backend Figure. + // We preserve the SemanticPicture rather than dropping + // it: dropping silently discards the backend's caption + // and the corresponding ai-raw FIGURE evidence, and + // the page would no longer mention a region the + // backend definitively classified as a figure. + // Downstream PDF struct-tree tagging tolerates a + // missing StreamInfo (the figure is tagged from its + // bounding box) but the alt text and evidence remain. + LOGGER.fine(() -> "Page " + pageNumber + ": kept SemanticPicture without StreamInfo (no matching Java ImageChunk) at bbox [" + + String.format("%.1f,%.1f,%.1f,%.1f", picture.getLeftX(), picture.getBottomY(), picture.getRightX(), picture.getTopY()) + "]"); + enriched.add(picture); + } + } else { + enriched.add(obj); + } + } + backendPage = enriched; + entry.setValue(enriched); + } + + // Replace backend TextChunks with Java TextChunks that carry StreamInfo, + // and copy StreamInfos to SemanticFormula objects + if (!javaTextChunks.isEmpty()) { + enrichTextStreamInfos(backendPage, javaTextChunks, hybridConfig); + enrichFormulaStreamInfos(backendPage, javaTextChunks); + } else if (hybridConfig.isOcrAuto() || hybridConfig.isOcrForce()) { + // OCR-only (scanned) page: no Java TextChunks to compare against, + // so text_source cannot be inferred from stream/OCR similarity. + // Record "ocr" for every SemanticTextNode so the JSON output still + // reflects that the text came from OCR rather than the PDF stream. + markAllTextSourcesAsOcr(backendPage); + } + + // OCR fallback: log elements that still lack StreamInfo after enrichment + if (hybridConfig.isOcrAuto() || hybridConfig.isOcrForce()) { + Map> ocrWords = lastOcrWordsByPage; + if (ocrWords != null) { + List pageOcrWords = ocrWords.getOrDefault(pageNumber, List.of()); + logOcrFallbackCandidates(backendPage, pageNumber, pageOcrWords); + } + } + + final int pg = pageNumber; + final int javaTotal = javaTextChunks.size(); + LOGGER.fine(() -> "Page " + pg + ": enrichment complete — " + + javaTotal + " Java TextChunks available"); + } + } + + /** + * Logs backend elements that still lack StreamInfo after enrichment and could + * benefit from OCR fallback. Walks the IObject tree recursively to find + * SemanticTextNodes with no StreamInfo in any of their TextChunks. + * + *

    This is Phase A (logging only). Phase B will actually insert invisible + * text operators into the content stream for these elements. + */ + private static void logOcrFallbackCandidates( + List backendPage, int pageNumber, List ocrWords) { + int candidateCount = 0; + int ocrWordMatchCount = 0; + + for (IObject obj : backendPage) { + if (obj instanceof SemanticTextNode) { + SemanticTextNode textNode = (SemanticTextNode) obj; + boolean hasStreamInfo = false; + for (TextColumn col : textNode.getColumns()) { + for (TextLine line : col.getLines()) { + for (TextChunk chunk : line.getTextChunks()) { + if (!chunk.getStreamInfos().isEmpty()) { + hasStreamInfo = true; + break; + } + } + if (hasStreamInfo) break; + } + if (hasStreamInfo) break; + } + if (!hasStreamInfo) { + candidateCount++; + // Count OCR words that overlap with this text node's bbox + double nLeft = textNode.getLeftX(); + double nRight = textNode.getRightX(); + double nBottom = textNode.getBottomY(); + double nTop = textNode.getTopY(); + double tol = 5.0; + int matchedWords = 0; + for (OcrWordInfo word : ocrWords) { + BoundingBox wb = word.getBbox(); + double cx = (wb.getLeftX() + wb.getRightX()) / 2.0; + double cy = (wb.getBottomY() + wb.getTopY()) / 2.0; + if (cx >= nLeft - tol && cx <= nRight + tol + && cy >= nBottom - tol && cy <= nTop + tol) { + matchedWords++; + } + } + if (matchedWords > 0) { + ocrWordMatchCount += matchedWords; + final int mw = matchedWords; + LOGGER.fine(() -> "Page " + pageNumber + ": OCR fallback candidate — " + + "SemanticTextNode at [" + + String.format("%.1f,%.1f,%.1f,%.1f", nLeft, nBottom, nRight, nTop) + + "] has " + mw + " matching OCR words"); + } + } + } + } + + if (candidateCount > 0) { + final int cc = candidateCount; + final int owm = ocrWordMatchCount; + LOGGER.info(() -> "Page " + pageNumber + ": " + cc + + " element(s) need OCR fallback, " + owm + " OCR words available"); + } + } + + /** + * Collects ImageChunks and TextChunks from Java-filtered page contents. + */ + private static void collectJavaChunks(List javaPage, + List imageChunks, + List textChunks) { + for (IObject obj : javaPage) { + if (obj instanceof ImageChunk) { + imageChunks.add((ImageChunk) obj); + } else if (obj instanceof TextChunk) { + // Raw TextChunk from ContentFilterProcessor (pre-paragraph processing) + textChunks.add((TextChunk) obj); + } else if (obj instanceof SemanticTextNode) { + // TextChunks wrapped in SemanticTextNode (post-paragraph processing) + SemanticTextNode textNode = (SemanticTextNode) obj; + for (TextColumn col : textNode.getColumns()) { + for (TextLine line : col.getLines()) { + textChunks.addAll(line.getTextChunks()); + } + } + } + } + } + + /** + * Replaces backend TextChunks with Java TextChunks that have StreamInfo. + * + *

    Backend-generated TextChunks lack StreamInfo (needed for MCID/struct-tree). + * For each backend SemanticTextNode, we find Java TextChunks whose centers fall + * within the node's bbox and replace the backend TextChunk with the Java ones. + * This preserves the backend's structural decisions (heading/paragraph/reading order) + * while using the Java TextChunks that carry StreamInfo. + */ + private static void enrichTextStreamInfos(List backendPage, List javaTextChunks, + HybridConfig config) { + if (javaTextChunks.isEmpty()) return; + + Set usedJavaIndices = new HashSet<>(); + enrichTextStreamInfosRecursive(backendPage, javaTextChunks, usedJavaIndices, config); + } + + /** + * Recursively walks the IObject tree and replaces TextChunks in SemanticTextNodes + * with Java TextChunks that carry StreamInfo. Handles TableBorder cells, PDFList items, + * and any other container that holds nested IObjects. + */ + private static void enrichTextStreamInfosRecursive( + List objects, List javaTextChunks, Set usedJavaIndices, + HybridConfig config) { + + for (IObject obj : objects) { + if (obj instanceof SemanticFormula) { + // Formula inside table/list — enrich StreamInfos by bbox overlap + enrichSingleFormula((SemanticFormula) obj, javaTextChunks); + } else if (obj instanceof SemanticTextNode) { + enrichSingleTextNode((SemanticTextNode) obj, javaTextChunks, usedJavaIndices, config); + } else if (obj instanceof TableBorder) { + TableBorder table = (TableBorder) obj; + for (int rowNumber = 0; rowNumber < table.getNumberOfRows(); rowNumber++) { + TableBorderRow row = table.getRow(rowNumber); + for (int colNumber = 0; colNumber < table.getNumberOfColumns(); colNumber++) { + TableBorderCell cell = row.getCell(colNumber); + if (cell.getRowNumber() == rowNumber && cell.getColNumber() == colNumber) { + enrichTextStreamInfosRecursive(cell.getContents(), javaTextChunks, usedJavaIndices, config); + } + } + } + } else if (obj instanceof PDFList) { + PDFList list = (PDFList) obj; + for (ListItem item : list.getListItems()) { + // Enrich ListItem's own text lines (used by AutoTaggingProcessor for Lbl/LBody) + if (config == null || !config.isOcrForce()) { + for (TextLine line : item.getLines()) { + for (TextChunk backendChunk : line.getTextChunks()) { + if (backendChunk.getStreamInfos().isEmpty()) { + matchAndReplaceStreamInfos(backendChunk, javaTextChunks, usedJavaIndices, config); + } + } + } + } + // Enrich nested contents (images, paragraphs, sub-lists) + enrichTextStreamInfosRecursive(item.getContents(), javaTextChunks, usedJavaIndices, config); + } + } + } + } + + /** + * Replaces a single SemanticTextNode's TextChunks with matching Java TextChunks. + * In OCR auto mode, compares stream vs OCR text similarity before deciding. + * In OCR force mode, always keeps OCR text (backend TextChunks). + * Records the text source decision in ElementMetadata. + */ + private static void enrichSingleTextNode( + SemanticTextNode textNode, List javaTextChunks, Set usedJavaIndices, + HybridConfig config) { + + // Force mode: always keep OCR text, don't replace with stream + if (config != null && config.isOcrForce()) { + recordTextSource(textNode, "ocr", null); + return; + } + + double nLeft = textNode.getLeftX(); + double nRight = textNode.getRightX(); + double nBottom = textNode.getBottomY(); + double nTop = textNode.getTopY(); + + List matched = new ArrayList<>(); + double tol = 5.0; + for (int i = 0; i < javaTextChunks.size(); i++) { + if (usedJavaIndices.contains(i)) continue; + TextChunk javaChunk = javaTextChunks.get(i); + if (javaChunk.getStreamInfos().isEmpty()) continue; + + double jCx = javaChunk.getCenterX(); + double jCy = javaChunk.getCenterY(); + + if (jCx >= nLeft - tol && jCx <= nRight + tol && jCy >= nBottom - tol && jCy <= nTop + tol) { + matched.add(javaChunk); + usedJavaIndices.add(i); + } + } + + if (matched.isEmpty()) { + LOGGER.fine(() -> "enrichSingleTextNode: no Java TextChunk matched for backend node at bbox [" + + String.format("%.1f,%.1f,%.1f,%.1f", nLeft, nBottom, nRight, nTop) + "]"); + recordTextSource(textNode, "ocr-fallback", null); + return; + } + + // Auto mode: compare stream vs OCR text similarity + if (config != null && config.isOcrAuto()) { + String streamText = extractTextFromChunks(matched); + String ocrText = extractTextFromNode(textNode); + double sim = TextSimilarity.similarity(streamText, ocrText); + + if (!TextSimilarity.trustStream(streamText, ocrText, TextSimilarity.DEFAULT_THRESHOLD)) { + // Stream text is corrupted — keep OCR text (backend TextChunks) + LOGGER.fine(() -> "OCR auto: stream text untrusted (sim=" + + String.format("%.2f", sim) + + "), keeping OCR for node at [" + + String.format("%.1f,%.1f,%.1f,%.1f", nLeft, nBottom, nRight, nTop) + "]"); + recordTextSource(textNode, "ocr", sim); + return; + } + recordTextSource(textNode, "stream", sim); + } else { + recordTextSource(textNode, "stream", null); + } + + // Off mode or auto mode with trusted stream: replace with Java TextChunks + textNode.getColumns().clear(); + TextColumn newCol = new TextColumn(); + for (TextChunk tc : matched) { + newCol.add(new TextLine(tc)); + } + textNode.getColumns().add(newCol); + } + + /** + * Records "ocr" as the text source for every SemanticTextNode in the page, + * used on scanned pages where there are no Java TextChunks to compare with. + * Mirrors {@link #enrichTextStreamInfosRecursive} in how it descends into + * TableBorder/PDFList — the shared IObject tree has no generic children API, + * so both walks enumerate the containers they know about. + */ + private static void markAllTextSourcesAsOcr(List objects) { + if (objects == null) return; + for (IObject obj : objects) { + if (obj instanceof SemanticTextNode) { + recordTextSource((SemanticTextNode) obj, "ocr", null); + } else if (obj instanceof TableBorder) { + TableBorder table = (TableBorder) obj; + for (int rowNumber = 0; rowNumber < table.getNumberOfRows(); rowNumber++) { + TableBorderRow row = table.getRow(rowNumber); + for (int colNumber = 0; colNumber < table.getNumberOfColumns(); colNumber++) { + TableBorderCell cell = row.getCell(colNumber); + if (cell.getRowNumber() == rowNumber && cell.getColNumber() == colNumber) { + markAllTextSourcesAsOcr(cell.getContents()); + } + } + } + } else if (obj instanceof PDFList) { + PDFList list = (PDFList) obj; + for (ListItem item : list.getListItems()) { + markAllTextSourcesAsOcr(item.getContents()); + } + } + } + } + + /** + * Records the text source decision in ElementMetadata for a SemanticTextNode. + * + * @param textNode the text node whose metadata to update + * @param source "stream", "ocr", or "ocr-fallback" + * @param similarity the stream-OCR similarity score, or null if not applicable + */ + private static void recordTextSource(SemanticTextNode textNode, String source, Double similarity) { + if (lastElementMetadata == null || textNode.getRecognizedStructureId() == null) return; + ElementMetadata meta = lastElementMetadata.get(textNode.getRecognizedStructureId()); + if (meta == null) return; + meta.setTextSource(source); + if (similarity != null) { + meta.setStreamOcrSimilarity(similarity); + } + } + + /** + * Extracts concatenated text from a list of TextChunks. + */ + private static String extractTextFromChunks(List chunks) { + StringBuilder sb = new StringBuilder(); + for (TextChunk tc : chunks) { + if (sb.length() > 0) sb.append(' '); + sb.append(tc.getValue()); + } + return sb.toString().trim(); + } + + /** + * Extracts concatenated text from a SemanticTextNode's columns/lines/chunks. + */ + private static String extractTextFromNode(SemanticTextNode node) { + StringBuilder sb = new StringBuilder(); + for (TextColumn col : node.getColumns()) { + for (TextLine line : col.getLines()) { + for (TextChunk chunk : line.getTextChunks()) { + if (sb.length() > 0) sb.append(' '); + sb.append(chunk.getValue()); + } + } + } + return sb.toString().trim(); + } + + /** + * Copies StreamInfos from matching Java TextChunks to a backend TextChunk that lacks them. + * Used for ListItem lines where the text is stored directly in TextLine/TextChunk + * rather than in a SemanticTextNode wrapper. + * In OCR auto mode, compares stream vs OCR text similarity before copying. + */ + private static void matchAndReplaceStreamInfos( + TextChunk backendChunk, List javaTextChunks, Set usedJavaIndices, + HybridConfig config) { + double bCx = backendChunk.getCenterX(); + double bCy = backendChunk.getCenterY(); + double tol = 5.0; + for (int i = 0; i < javaTextChunks.size(); i++) { + if (usedJavaIndices.contains(i)) continue; + TextChunk javaChunk = javaTextChunks.get(i); + if (javaChunk.getStreamInfos().isEmpty()) continue; + double jCx = javaChunk.getCenterX(); + double jCy = javaChunk.getCenterY(); + if (Math.abs(bCx - jCx) <= tol && Math.abs(bCy - jCy) <= tol) { + // In auto mode, check if stream text is trustworthy + if (config != null && config.isOcrAuto()) { + String streamText = javaChunk.getValue(); + String ocrText = backendChunk.getValue(); + if (!TextSimilarity.trustStream(streamText, ocrText, TextSimilarity.DEFAULT_THRESHOLD)) { + LOGGER.fine(() -> "OCR auto: stream text untrusted for ListItem chunk, keeping OCR"); + return; + } + } + backendChunk.getStreamInfos().addAll(javaChunk.getStreamInfos()); + usedJavaIndices.add(i); + return; + } + } + } + + /** + * Copies StreamInfos from Java TextChunks to SemanticFormula objects by bbox overlap. + * + *

    SemanticFormula (from backend) has no StreamInfo. We find all Java TextChunks + * whose centers fall within the formula's bbox and copy their StreamInfos directly + * to the formula's StreamInfo list (inherited from BaseObject). + */ + private static void enrichFormulaStreamInfos(List backendPage, List javaTextChunks) { + for (IObject obj : backendPage) { + if (obj instanceof SemanticFormula) { + enrichSingleFormula((SemanticFormula) obj, javaTextChunks); + } + } + } + + /** + * Copies StreamInfos from Java TextChunks to a SemanticFormula by bbox overlap. + * Allows reuse of Java chunks since formula content often IS the text content. + */ + private static void enrichSingleFormula(SemanticFormula formula, List javaTextChunks) { + if (!formula.getStreamInfos().isEmpty()) return; + + double fLeft = formula.getLeftX(); + double fRight = formula.getRightX(); + double fBottom = formula.getBottomY(); + double fTop = formula.getTopY(); + double tol = 5.0; + + for (TextChunk javaChunk : javaTextChunks) { + if (javaChunk.getStreamInfos().isEmpty()) continue; + double jCx = javaChunk.getCenterX(); + double jCy = javaChunk.getCenterY(); + + if (jCx >= fLeft - tol && jCx <= fRight + tol && jCy >= fBottom - tol && jCy <= fTop + tol) { + formula.getStreamInfos().addAll(javaChunk.getStreamInfos()); + } + } + } + + /** + * Finds the ImageChunk whose center point lies within the SemanticPicture's bounding box. + * Returns null if no candidate's center is contained (with 1pt tolerance). + */ + private static ImageChunk findMatchingImageChunk(SemanticPicture picture, List candidates) { + double picLeft = picture.getLeftX(); + double picRight = picture.getRightX(); + double picBottom = picture.getBottomY(); + double picTop = picture.getTopY(); + + ImageChunk best = null; + double bestDist = Double.MAX_VALUE; + + for (ImageChunk chunk : candidates) { + double cx = chunk.getCenterX(); + double cy = chunk.getCenterY(); + // Center-point containment (with 1pt tolerance) + if (cx >= picLeft - 1 && cx <= picRight + 1 && cy >= picBottom - 1 && cy <= picTop + 1) { + double dist = Math.hypot(cx - picture.getCenterX(), cy - picture.getCenterY()); + if (dist < bestDist) { + bestDist = dist; + best = chunk; + } + } + } + return best; + } + + private static void mergeResults( + List> contents, + Map> javaResults, + Map> backendResults, + Set pagesToProcess, + int totalPages) { + + for (int pageNumber = 0; pageNumber < totalPages; pageNumber++) { + if (!shouldProcessPage(pageNumber, pagesToProcess)) { + continue; + } + + List pageContents; + if (javaResults.containsKey(pageNumber)) { + pageContents = javaResults.get(pageNumber); + } else if (backendResults.containsKey(pageNumber)) { + pageContents = backendResults.get(pageNumber); + } else { + pageContents = new ArrayList<>(); + } + + contents.set(pageNumber, pageContents); + } + } + + /** + * Applies post-processing operations that span multiple pages. + */ + private static void postProcess( + List> contents, + Config config, + Set pagesToProcess, + int totalPages) { + + // Cross-page operations + HeaderFooterProcessor.processHeadersAndFooters(contents, false); + for (int pageNumber = 0; pageNumber < totalPages; pageNumber++) { + contents.set(pageNumber, ListProcessor.processListsFromTextNodes(contents.get(pageNumber))); + } + ListProcessor.checkNeighborLists(contents); + TableBorderProcessor.checkNeighborTables(contents); + HeadingProcessor.detectHeadingsLevels(); + LevelProcessor.detectLevels(contents); + } + + /** + * Checks if a page should be processed. + */ + private static boolean shouldProcessPage(int pageNumber, Set pagesToProcess) { + return pagesToProcess == null || pagesToProcess.contains(pageNumber); + } + + /** + * Determines the output formats to request from the hybrid backend. + * + *

    Only JSON is requested. Markdown and HTML are generated by Java processors + * from the IObject structure, which allows consistent application of: + *

      + *
    • Reading order algorithms (XYCutPlusPlusSorter)
    • + *
    • Page separators and other formatting options
    • + *
    + * + * @param config The configuration settings (unused, kept for API compatibility). + * @return Set containing only JSON format. + */ + private static Set determineOutputFormats(Config config) { + return EnumSet.of(OutputFormat.JSON); + } + + /** + * Logs a summary of triage decisions. + */ + private static void logTriageSummary(Map triageResults) { + long javaCount = triageResults.values().stream() + .filter(r -> r.getDecision() == TriageDecision.JAVA) + .count(); + long backendCount = triageResults.values().stream() + .filter(r -> r.getDecision() == TriageDecision.BACKEND) + .count(); + + LOGGER.log(Level.INFO, "Triage summary: JAVA={0}, BACKEND={1}", new Object[]{javaCount, backendCount}); + + // Log individual decisions at FINE level + for (Map.Entry entry : triageResults.entrySet()) { + TriageResult result = entry.getValue(); + LOGGER.log(Level.FINE, "Page {0}: {1} (confidence={2})", + new Object[]{entry.getKey(), result.getDecision(), result.getConfidence()}); + } + } + + /** + * Logs triage results to a JSON file for benchmark evaluation. + * + * @param inputPdfName The path to the input PDF file. + * @param hybridBackend The hybrid backend used. + * @param triageResults Map of page number to triage result. + * @param outputDir The output directory for the triage log. + */ + private static void logTriageToFile( + String inputPdfName, + String hybridBackend, + Map triageResults, + Path outputDir) { + + try { + String documentName = Path.of(inputPdfName).getFileName().toString(); + TriageLogger triageLogger = new TriageLogger(); + triageLogger.logToFile(outputDir, documentName, hybridBackend, triageResults); + } catch (IOException e) { + LOGGER.log(Level.WARNING, "Failed to write triage log: {0}", e.getMessage()); + } + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/LevelProcessor.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/LevelProcessor.java new file mode 100644 index 0000000..c34bb44 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/LevelProcessor.java @@ -0,0 +1,148 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.opendataloader.pdf.utils.BulletedParagraphUtils; +import org.opendataloader.pdf.utils.levels.*; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticHeading; +import org.verapdf.wcag.algorithms.entities.SemanticTextNode; +import org.verapdf.wcag.algorithms.entities.lists.ListItem; +import org.verapdf.wcag.algorithms.entities.lists.PDFList; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderRow; + +import java.util.Collections; +import java.util.List; +import java.util.Stack; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class LevelProcessor { + + private static final Logger LOGGER = Logger.getLogger(LevelProcessor.class.getCanonicalName()); + + private static boolean isDocTitleSet = false; + + public static void detectLevels(List> contents) { + setLevels(contents, new Stack<>()); + } + + private static void setLevels(List> contents, Stack levelInfos) { + int levelInfosSize = levelInfos.size(); + for (List pageContents : contents) { + for (IObject content : pageContents) { + if (content instanceof SemanticHeading) { + setLevelForHeading((SemanticHeading) content); + continue; + } + LevelInfo levelInfo = null; + Integer index = null; + if (content instanceof PDFList) { + PDFList previousList = ((PDFList) content).getPreviousList(); + if (previousList != null) { + if (previousList.getLevel() == null) { + LOGGER.log(Level.WARNING, "List without detected level"); + } else { + index = Integer.parseInt(previousList.getLevel()) - 1; + } + } + if (index == null) { + levelInfo = new ListLevelInfo((PDFList) content); + } + } else if (content instanceof TableBorder) { + TableBorder previousTable = ((TableBorder) content).getPreviousTable(); + if (previousTable != null) { + if (previousTable.getLevel() == null) { + LOGGER.log(Level.WARNING, "Table without detected level"); + } else { + index = Integer.parseInt(previousTable.getLevel()) - 1; + } + } + if (index == null) { + TableBorder table = (TableBorder) content; + setLevelForTable(table); + if (!table.isTextBlock()) { + levelInfo = new TableLevelInfo(table); + } + } + } else if (content instanceof SemanticTextNode) { + if (BulletedParagraphUtils.isBulletedParagraph((SemanticTextNode) content)) { + if (BulletedParagraphUtils.isBulletedLineArtParagraph((SemanticTextNode) content)) { + levelInfo = new LineArtBulletParagraphLevelInfo((SemanticTextNode) content); + } else { + levelInfo = new TextBulletParagraphLevelInfo((SemanticTextNode) content); + } + } + } + if (levelInfo == null && index == null) { + continue; + } + if (index == null) { + index = getLevelInfoIndex(levelInfos, levelInfo); + } + if (index == null) { + content.setLevel(String.valueOf(levelInfos.size() + 1)); + levelInfos.add(levelInfo); + } else { + content.setLevel(String.valueOf(index + 1)); + for (int i = Math.max(index + 1, levelInfosSize); i < levelInfos.size(); i++) { + levelInfos.pop(); + } + } + if (content instanceof PDFList) { + for (ListItem listItem : ((PDFList) content).getListItems()) { + setLevels(Collections.singletonList(listItem.getContents()), levelInfos); + } + } + } + } + isDocTitleSet = false; + } + + private static void setLevelForHeading(SemanticHeading heading) { + if (heading.getHeadingLevel() == 1 && !isDocTitleSet) { + heading.setLevel("Doctitle"); + isDocTitleSet = true; + } else { + heading.setLevel("Subtitle"); + } + } + + private static Integer getLevelInfoIndex(Stack levelInfos, LevelInfo levelInfo) { + for (int index = 0; index < levelInfos.size(); index++) { + LevelInfo currentLevelInfo = levelInfos.get(index); + if (LevelInfo.areSameLevelsInfos(currentLevelInfo, levelInfo)) { + return index; + } + } + return null; + } + + private static void setLevelForTable(TableBorder tableBorder) { + for (int rowNumber = 0; rowNumber < tableBorder.getNumberOfRows(); rowNumber++) { + TableBorderRow row = tableBorder.getRow(rowNumber); + for (int colNumber = 0; colNumber < tableBorder.getNumberOfColumns(); colNumber++) { + TableBorderCell tableBorderCell = row.getCell(colNumber); + if (tableBorderCell.getRowNumber() == rowNumber && tableBorderCell.getColNumber() == colNumber) { + setLevels(Collections.singletonList(tableBorderCell.getContents()), new Stack<>()); + } + } + } + } + +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/ListProcessor.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/ListProcessor.java new file mode 100644 index 0000000..3365f9b --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/ListProcessor.java @@ -0,0 +1,573 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.opendataloader.pdf.utils.BulletedParagraphUtils; +import org.verapdf.as.ASAtom; +import org.verapdf.wcag.algorithms.entities.INode; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticTextNode; +import org.verapdf.wcag.algorithms.entities.content.*; +import org.verapdf.wcag.algorithms.entities.enums.SemanticType; +import org.verapdf.wcag.algorithms.entities.enums.TextAlignment; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.entities.lists.ListInterval; +import org.verapdf.wcag.algorithms.entities.lists.ListItem; +import org.verapdf.wcag.algorithms.entities.lists.PDFList; +import org.verapdf.wcag.algorithms.entities.lists.TextListInterval; +import org.verapdf.wcag.algorithms.entities.lists.info.ListItemInfo; +import org.verapdf.wcag.algorithms.entities.lists.info.ListItemTextInfo; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.ChunksMergeUtils; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.ListLabelsUtils; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.ListUtils; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.NodeUtils; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.listLabelsDetection.NumberingStyleNames; + +import java.util.*; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class ListProcessor { + + private static final Logger LOGGER = Logger.getLogger(ListProcessor.class.getCanonicalName()); + + private static final double LIST_ITEM_PROBABILITY = 0.7; + private static final double LIST_ITEM_BASELINE_DIFFERENCE = 1.2; + private static final double LIST_ITEM_X_INTERVAL_RATIO = 0.3; + private static final Pattern ATTACHMENTS_PATTERN = Pattern.compile("^붙\\s*임\\s*(?=.)"); + + /** + * Maximum number of intervals to scan backward when matching a TextLine to an existing list. + * Prevents O(n²) scaling on large documents. A higher value is safer but slower. + */ + private static final int MAX_LIST_INTERVAL_LOOKBACK = 500; + + private static final Map listNumberingMap = new HashMap<>(); + + static { + listNumberingMap.put(NumberingStyleNames.ENGLISH_LETTERS, ASAtom.ORDERED); + listNumberingMap.put(NumberingStyleNames.ENGLISH_LETTERS_UPPER_CASE, ASAtom.UPPER_ALPHA); + listNumberingMap.put(NumberingStyleNames.ENGLISH_LETTERS_LOWER_CASE, ASAtom.LOWER_ALPHA); + listNumberingMap.put(NumberingStyleNames.ROMAN_NUMBERS_LOWER_CASE, ASAtom.LOWER_ROMAN); + listNumberingMap.put(NumberingStyleNames.ROMAN_NUMBERS, ASAtom.ORDERED); + listNumberingMap.put(NumberingStyleNames.ROMAN_NUMBERS_UPPER_CASE, ASAtom.UPPER_ROMAN); + listNumberingMap.put(NumberingStyleNames.KOREAN_LETTERS, ASAtom.ORDERED); + listNumberingMap.put(NumberingStyleNames.ARABIC_NUMBERS, ASAtom.DECIMAL); + listNumberingMap.put(NumberingStyleNames.CIRCLED_ARABIC_NUMBERS, ASAtom.ORDERED); + listNumberingMap.put(NumberingStyleNames.UNORDERED,ASAtom.UNORDERED); + listNumberingMap.put(NumberingStyleNames.UNKNOWN, ASAtom.NONE); + } + + public static ASAtom getListNumbering(String numberingStyle) { + return listNumberingMap.get(numberingStyle); + } + + public static void processLists(List> contents, boolean isTableCell) { + List intervalsList = getTextLabelListIntervals(contents); + for (TextListInterval interval : intervalsList) { + for (ListItemTextInfo info : interval.getListItemsInfos()) { + info.getListItemValue().setListLine(true); + } + } + for (TextListInterval interval : intervalsList) { +// if (interval.getNumberOfColumns() > 1/*== interval.getNumberOfListItems()*/) {//to fix bounding box for multi-column lists +// continue; +// } + if (!isCorrectList(interval)) {//todo move to arabic number list recognition + continue; + } + Integer currentPageNumber = interval.getListItemsInfos().get(0).getPageNumber(); + int index = 0; + PDFList previousList = null; + interval.setCommonSuffixLengthToAllInfos(); + for (int i = 0; i < interval.getNumberOfListItems(); i++) { + ListItemInfo currentInfo = interval.getListItemsInfos().get(i); + if (!Objects.equals(currentInfo.getPageNumber(), currentPageNumber)) { + PDFList list = calculateList(interval, index, i - 1, contents.get(isTableCell ? 0 : currentPageNumber)); + for (ListItem listItem : list.getListItems()) { + listItem.setContents(processListItemContent(listItem.getContents())); + } + if (previousList != null) { + PDFList.setListConnected(previousList, list); + } + currentPageNumber = currentInfo.getPageNumber(); + index = i; + previousList = list; + } + } + PDFList list = calculateList(interval, index, interval.getNumberOfListItems() - 1, contents.get(isTableCell ? 0 : currentPageNumber)); + for (ListItem listItem : list.getListItems()) { + listItem.setContents(processListItemContent(listItem.getContents())); + } + if (previousList != null) { + PDFList.setListConnected(previousList, list); + } + } + contents.replaceAll(DocumentProcessor::removeNullObjectsFromList); + } + + private static List processListItemContent(List contents) { + List newContents = ParagraphProcessor.processParagraphs(contents); + newContents = ListProcessor.processListsFromTextNodes(newContents); + DocumentProcessor.setIDs(newContents); + List> contentsList = new ArrayList<>(1); + contentsList.add(newContents); + ListProcessor.checkNeighborLists(contentsList); + newContents = contentsList.get(0); + return newContents; + } + + private static void processTextNodeListItemContent(List contents) { + DocumentProcessor.setIDs(contents); + } + + private static List getTextLabelListIntervals(List> contents) { + List listIntervals = new ArrayList<>(); + for (List pageContents : contents) { + for (int i = 0; i < pageContents.size(); i++) { + IObject content = pageContents.get(i); + if (!(content instanceof TextLine)) { + continue; + } + TextLine line = (TextLine) content; + String value = line.getValue(); + if (value.isEmpty() || line.isHiddenText()) { + continue; + } + ListItemTextInfo listItemTextInfo = createListItemTextInfo(i, line, value); + processListItem(listIntervals, listItemTextInfo); + } + } + LinkedHashSet intervalsList = new LinkedHashSet<>(); + for (TextListInterval interval : listIntervals) { + if (interval != null && interval.getListItemsInfos().size() > 1) { + intervalsList.add(interval); + } + } + List result = new ArrayList<>(intervalsList); + Collections.reverse(result); + return result; + } + + private static void processListItem(List listIntervals, ListItemTextInfo listItemTextInfo) { + double maxXGap = getMaxXGap(listItemTextInfo.getListItemValue().getFontSize()); + boolean isSingle = true; + boolean shouldHaveSameLeft = false; + boolean shouldHaveSameLeftDifference = false; + boolean isUnordered = true; + Double previousLeftDifference = null; + int minIndex = Math.max(0, listIntervals.size() - MAX_LIST_INTERVAL_LOOKBACK); + for (int index = listIntervals.size() - 1; index >= minIndex; index--) { + TextListInterval interval = listIntervals.get(index); + ListItemTextInfo preivousListItemTextInfo = interval.getLastListItemInfo(); + if (Objects.equals(listItemTextInfo.getPageNumber(), preivousListItemTextInfo.getPageNumber()) && + listItemTextInfo.getListItemValue().getTopY() > preivousListItemTextInfo.getListItemValue().getTopY()) { + break; + } + double leftDifference = listItemTextInfo.getListItemValue().getLeftX() - + preivousListItemTextInfo.getListItemValue().getLeftX(); + boolean haveSameLeft = NodeUtils.areCloseNumbers(leftDifference, 0, maxXGap); + try { + if (NodeUtils.areCloseNumbers(leftDifference, 0, 4 * maxXGap) && + ListLabelsUtils.isTwoListItemsOfOneList(interval, listItemTextInfo, + !haveSameLeft, isUnordered)) { + listIntervals.add(interval); + isSingle = false; + break; + } + } catch (StringIndexOutOfBoundsException e) { + // Malformed label cannot be matched; treat as new list (isSingle remains true) + LOGGER.log(Level.WARNING, "Malformed list label, starting new list: " + listItemTextInfo.getListItemValue().getValue(), e); + break; + } + if (shouldHaveSameLeftDifference && !NodeUtils.areCloseNumbers(previousLeftDifference, leftDifference)) { + break; + } + if (leftDifference > maxXGap) { + isUnordered = false; + shouldHaveSameLeftDifference = true; + } + previousLeftDifference = leftDifference; + if (haveSameLeft) { + shouldHaveSameLeft = true; + } else if (shouldHaveSameLeft) { + isUnordered = false; +// break; + } + if (interval.getListItemsInfos().size() > 1 && haveSameLeft && + !NumberingStyleNames.UNORDERED.equals(interval.getNumberingStyle())) { + isUnordered = false; + } + } + if (isSingle) { + TextListInterval listInterval = new TextListInterval(); + listInterval.getListItemsInfos().add(listItemTextInfo); + listIntervals.add(listInterval); + } + } + + private static ListItemTextInfo createListItemTextInfo(int i, TextLine line, String value) { + Matcher matcher = ATTACHMENTS_PATTERN.matcher(value); + if (matcher.find()) { + int length = matcher.group().length(); + line = new TextLine(line); + line.getBoundingBox().setLeftX(line.getSymbolStartCoordinate(length)); + value = value.substring(length); + } + return new ListItemTextInfo(i, SemanticType.PARAGRAPH, + line, value, true); + } + + private static PDFList calculateList(TextListInterval interval, int startIndex, int endIndex, List pageContents) { + PDFList list = new PDFList(); + list.setNumberingStyle(interval.getNumberingStyle()); + list.setCommonPrefix(interval.getCommonPrefix()); + boolean isListSet = false; + for (int index = startIndex; index <= endIndex; index++) { + ListItemTextInfo currentInfo = interval.getListItemsInfos().get(index); + int nextIndex = index != endIndex ? interval.getListItemsInfos().get(index + 1).getIndex() : pageContents.size(); + ListItem listItem = new ListItem(new BoundingBox(), null); + IObject object = pageContents.get(currentInfo.getIndex()); + if (object == null || object instanceof PDFList) { + LOGGER.log(Level.INFO, "List item is connected with different lists"); + continue; + } + pageContents.set(currentInfo.getIndex(), isListSet ? null : list); + isListSet = true; + if (object instanceof SemanticTextNode) { + SemanticTextNode textNode = (SemanticTextNode) object; + for (TextLine textLine : textNode.getFirstColumn().getLines()) { + listItem.add(textLine); + } + } else { + TextLine textLine = (TextLine) object; + listItem.add(textLine); + } + if (index != endIndex) { + addContentToListItem(nextIndex, currentInfo, pageContents, listItem); + } else { + addContentToLastPageListItem(nextIndex, currentInfo, pageContents, listItem); + } + listItem.setLabelLength(currentInfo.getLabelLength()); + list.add(listItem); + } + if (list.getListItems().isEmpty()) { + LOGGER.log(Level.WARNING, "List is not added to contents"); + } + return list; + } + + private static void addContentToListItem(int nextIndex, ListItemInfo currentInfo, List pageContents, + ListItem listItem) { + boolean isListItem = true; + TextLine previousTextLine = null; + for (int index = currentInfo.getIndex() + 1; index < nextIndex; index++) { + IObject content = pageContents.get(index); + if (content instanceof TextLine) { + TextLine currentTextLine = (TextLine) content; + if (previousTextLine != null) { + if (isListItem && isListItemLine(listItem, previousTextLine, currentTextLine)) { + listItem.add(previousTextLine); + } else { + isListItem = false; + listItem.getContents().add(previousTextLine); + } + } + previousTextLine = currentTextLine; + } else if (content != null) { + if (previousTextLine != null) { + if (isListItem && isListItemLine(listItem, previousTextLine, null)) { + listItem.add(previousTextLine); + } else { + isListItem = false; + listItem.getContents().add(previousTextLine); + } + previousTextLine = null; + } + listItem.getContents().add(content); + } + pageContents.set(index, null); + } + if (previousTextLine != null) { + if (isListItem && isListItemLine(listItem, previousTextLine, null)) { + listItem.add(previousTextLine); + } else { + listItem.getContents().add(previousTextLine); + } + } + } + + private static void addContentToLastPageListItem(int nextIndex, ListItemInfo currentInfo, List pageContents, + ListItem listItem) { + TextLine previousTextLine = null; + Integer previousIndex = null; + for (int index = currentInfo.getIndex() + 1; index < nextIndex; index++) { + IObject content = pageContents.get(index); + if (!(content instanceof TextLine)) { + continue; + } + TextLine nextLine = (TextLine) content; + if (previousTextLine != null) { + if (isListItemLine(listItem, previousTextLine, nextLine)) { + listItem.add(previousTextLine); + pageContents.set(previousIndex, null); + } else { + previousTextLine = null; + break; + } + } + previousTextLine = nextLine; + previousIndex = index; + } + if (previousTextLine != null) { + if (isListItemLine(listItem, previousTextLine, null)) { + listItem.add(previousTextLine); + pageContents.set(previousIndex, null); + } + } + } + + private static boolean isListItemLine(ListItem listItem, TextLine currentLine, TextLine nextLine) { + TextLine listLine = listItem.getLastLine(); + if (ChunksMergeUtils.mergeLeadingProbability(listLine, currentLine) < LIST_ITEM_PROBABILITY) { + return false; + } + if (nextLine != null) { + if (Math.abs(listLine.getBaseLine() - currentLine.getBaseLine()) > + LIST_ITEM_BASELINE_DIFFERENCE * Math.abs(currentLine.getBaseLine() - nextLine.getBaseLine())) { + return false; + } + } + if (listItem.getLinesNumber() > 1) { + TextAlignment alignment = ChunksMergeUtils.getAlignment(listLine, currentLine); + if (alignment != TextAlignment.JUSTIFY && alignment != TextAlignment.LEFT) { + return false; + } + } else { + double maxXGap = getMaxXGap(listLine.getFontSize()); + if (currentLine.getLeftX() < listLine.getLeftX() - maxXGap) { + return false; + } + } + if (BulletedParagraphUtils.isLabeledLine(currentLine)) { + return false; + } + if (currentLine.isListLine()) { + return false; + } + return true; + } + + private static double getMaxXGap(double fontSize) { + return fontSize * LIST_ITEM_X_INTERVAL_RATIO; + } + + public static List processListsFromTextNodes(List contents) { + List textNodes = new ArrayList<>(); + List textNodesIndexes = new ArrayList<>(); + for (int index = 0; index < contents.size(); index++) { + IObject content = contents.get(index); + if (content instanceof SemanticTextNode) { + textNodes.add((SemanticTextNode) content); + textNodesIndexes.add(index); + } + } + List textChildrenInfo = calculateTextChildrenInfo(textNodes); + List nodes = new LinkedList<>(textNodes); + Set intervals = ListUtils.getChildrenListIntervals(ListLabelsUtils.getListItemsIntervals(textChildrenInfo), nodes); + for (ListInterval interval : intervals) { + updateListInterval(interval, textNodesIndexes); + TextListInterval textListInterval = new TextListInterval(interval); + if (!isCorrectList(textListInterval)) { + continue; + } + textListInterval.setCommonSuffixLengthToAllInfos(); + PDFList list = calculateList(textListInterval, 0, interval.getNumberOfListItems() - 1, contents); + for (ListItem listItem : list.getListItems()) { + processTextNodeListItemContent(listItem.getContents()); + } + } + return DocumentProcessor.removeNullObjectsFromList(contents); + } + + private static List calculateTextChildrenInfo(List textNodes) { + List textChildrenInfo = new ArrayList<>(textNodes.size()); + for (int i = 0; i < textNodes.size(); i++) { + SemanticTextNode textNode = textNodes.get(i); + if (textNode.isSpaceNode() || textNode.isEmpty()) { + continue; + } + TextLine line = textNode.getFirstNonSpaceLine(); + TextLine secondLine = textNode.getNonSpaceLine(1); + textChildrenInfo.add(new ListItemTextInfo(i, textNode.getSemanticType(), + line, line.getValue(), secondLine == null)); + } + return textChildrenInfo; + } + + private static void updateListInterval(ListInterval interval, List textNodesIndexes) { + for (ListItemInfo itemInfo : interval.getListItemsInfos()) { + itemInfo.setIndex(textNodesIndexes.get(itemInfo.getIndex())); + } + } + + private static boolean isCorrectList(TextListInterval interval) {//move inside arabic numeration detection + return !isDoubles(interval); + } + + private static boolean isDoubles(TextListInterval interval) { + for (ListItemTextInfo listItemTextInfo : interval.getListItemsInfos()) { + if (listItemTextInfo != null) { + if (!listItemTextInfo.getListItemValue().getValue().matches("^\\d+\\.\\d+$")) { + return false; + } + } else { + return false; + } + } + return true; + } + + public static void checkNeighborLists(List> contents) { + PDFList previousList = null; + SemanticTextNode middleContent = null; + for (List pageContents : contents) { + DocumentProcessor.setIndexesForContentsList(pageContents); + for (IObject content : pageContents) { + if (content instanceof PDFList) { + PDFList currentList = (PDFList) content; + if (previousList != null) { + if (previousList.getNextList() == null && currentList.getPreviousList() == null) { + if (isNeighborLists(previousList, currentList, middleContent)) { + if (middleContent != null) { + addMiddleContentToList(previousList, currentList, middleContent, pageContents); + } + if (Objects.equals(previousList.getPageNumber(), currentList.getPageNumber()) && + BoundingBox.areHorizontalOverlapping(previousList.getBoundingBox(), currentList.getBoundingBox())) { + previousList.add(currentList); + pageContents.set(currentList.getIndex(), null); + currentList = null; + } else { + PDFList.setListConnected(previousList, currentList); + } + } + } else if (Objects.equals(previousList.getNextListId(), currentList.getRecognizedStructureId())) { + if (middleContent != null && isMiddleContentPartOfList(previousList, middleContent, currentList)) { + addMiddleContentToList(previousList, currentList, middleContent, pageContents); + } + } + } + if (currentList != null) { + previousList = currentList; + } + middleContent = null; + } else { + if (!HeaderFooterProcessor.isHeaderOrFooter(content) && + !(content instanceof LineChunk) && !(content instanceof LineArtChunk) && + !(content instanceof ImageChunk)) { + if (middleContent == null && content instanceof SemanticTextNode) { + middleContent = (SemanticTextNode) content; + } else { + middleContent = null; + previousList = null; + } + } + } + } + } + contents.replaceAll(DocumentProcessor::removeNullObjectsFromList); + } + + private static void addMiddleContentToList(PDFList previousList, PDFList currentList, SemanticTextNode middleContent, List pageContents) { + ListItem lastListItem = previousList.getLastListItem(); + if (Objects.equals(lastListItem.getPageNumber(), middleContent.getPageNumber()) && + BoundingBox.areHorizontalOverlapping(lastListItem.getBoundingBox(), middleContent.getBoundingBox())) { + for (TextColumn textColumn : middleContent.getColumns()) { + lastListItem.add(textColumn.getLines()); + } + previousList.getBoundingBox().union(middleContent.getBoundingBox()); + pageContents.set(middleContent.getIndex(), null); + } else { + if (middleContent.getTopY() > currentList.getTopY()) { + addFirstLBodyToList(currentList, middleContent); + pageContents.set(middleContent.getIndex(), null); + } + } + } + + private static void addFirstLBodyToList(PDFList currentList, SemanticTextNode middleContent) { + ListItem listItem = new ListItem(new BoundingBox(), middleContent.getRecognizedStructureId()); + for (TextColumn textColumn : middleContent.getColumns()) { + listItem.add(textColumn.getLines()); + } + currentList.add(0, listItem); + } + + public static boolean isNeighborLists(PDFList previousList, PDFList currentList, SemanticTextNode middleContent) { + List textChildrenInfo = getTextChildrenInfosForNeighborLists(previousList, currentList); + Set listIntervals = ListLabelsUtils.getListItemsIntervals(textChildrenInfo); + if (listIntervals.size() != 1) { + return false; + } + ListInterval interval = listIntervals.iterator().next(); + if (interval.getNumberOfListItems() != textChildrenInfo.size()) { + return false; + } + if (middleContent != null && !isMiddleContentPartOfList(previousList, middleContent, currentList)) { + return false; + } + return true; + } + + private static boolean isMiddleContentPartOfList(PDFList previousList, SemanticTextNode middleContent, PDFList currentList) { + if (middleContent.getLeftX() < currentList.getLeftX()) { + return false; + } + if (!Objects.equals(middleContent.getPageNumber(), currentList.getPageNumber())) { + return false; + } + for (ListItem listItem : currentList.getListItems()) { + if (listItem.getLinesNumber() > 1) { + double xInterval = getMaxXGap(Math.max(listItem.getFontSize(), middleContent.getFontSize())); + if (!NodeUtils.areCloseNumbers(listItem.getSecondLine().getLeftX(), middleContent.getLeftX(), xInterval)) { + return false; + } + break; + } + } + return true; + } + + private static List getTextChildrenInfosForNeighborLists(PDFList previousList, PDFList currentList) { + List textChildrenInfo = new ArrayList<>(4); + if (previousList.getNumberOfListItems() > 1) { + textChildrenInfo.add(createListItemTextInfoFromListItem(0, previousList.getPenultListItem())); + } + textChildrenInfo.add(createListItemTextInfoFromListItem(1, previousList.getLastListItem())); + textChildrenInfo.add(createListItemTextInfoFromListItem(2, currentList.getFirstListItem())); + if (currentList.getNumberOfListItems() > 1) { + textChildrenInfo.add(createListItemTextInfoFromListItem(3, currentList.getSecondListItem())); + } + return textChildrenInfo; + } + + private static ListItemTextInfo createListItemTextInfoFromListItem(int index, ListItem listItem) { + TextLine line = listItem.getFirstLine(); + return new ListItemTextInfo(index, SemanticType.LIST_ITEM, line, line.getValue(), listItem.getLinesNumber() == 1); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/PDFStreamWriter.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/PDFStreamWriter.java new file mode 100644 index 0000000..b22de3d --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/PDFStreamWriter.java @@ -0,0 +1,102 @@ +package org.opendataloader.pdf.processors; + +import org.apache.pdfbox.io.IOUtils; +import org.verapdf.as.ASAtom; +import org.verapdf.cos.*; +import org.verapdf.operator.InlineImageOperator; +import org.verapdf.operator.Operator; +import org.verapdf.parser.Operators; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.io.PrintWriter; +import java.util.List; +import java.util.Map; + +public class PDFStreamWriter { + + public PDFStreamWriter() { + + } + + public byte[] write(List tokens) throws IOException { + try (ByteArrayOutputStream out = new ByteArrayOutputStream(); + PrintWriter printWriter = new PrintWriter(out)) { + for (Object rawToken : tokens) { + write(rawToken, printWriter, out); + } + return out.toByteArray(); + } + } + + private void write(Object rawToken, PrintWriter printWriter, OutputStream out) throws IOException { + if (rawToken instanceof COSArray) { + out.write("[".getBytes()); + for (COSObject item : (COSArray) rawToken) { + write(item.getDirectBase(), printWriter, out); + } + out.write("]".getBytes()); + out.write(" ".getBytes()); + } else if (rawToken instanceof COSDictionary) { + out.write("<<".getBytes()); + for (Map.Entry item : ((COSDictionary)rawToken).getEntrySet()) { + out.write(item.getKey().toString().getBytes()); + out.write(" ".getBytes()); + write(item.getValue(), printWriter, out); + } + out.write(">>".getBytes()); + out.write(" ".getBytes()); + } else if (rawToken instanceof COSString) { + COSString string = (COSString) rawToken; + if (string.isHexadecimal()) { + out.write("<".getBytes()); + out.write(string.getHexString().getBytes()); + out.write(">".getBytes()); + out.write(" ".getBytes()); + } else { + out.write("(".getBytes()); + byte[] bytes = ((COSString) rawToken).get(); + for (byte currentByte : bytes) { + if (currentByte == 40 || currentByte == 41 || currentByte == 92) { + out.write('\\'); + } + if (currentByte == 13) { + out.write('\\'); + out.write('r'); + } else { + out.write(currentByte); + } + } + out.write(")".getBytes()); + out.write(" ".getBytes()); + } + } else if (rawToken instanceof COSBoolean) { + out.write(((COSBoolean) rawToken).getBoolean().toString().getBytes()); + out.write(" ".getBytes()); + } else if (rawToken instanceof COSBase) { + out.write(rawToken.toString().getBytes()); + out.write(" ".getBytes()); + } else if (rawToken instanceof COSObject) { + write(((COSObject) rawToken).getDirectBase(), printWriter, out); + } else if (rawToken instanceof Operator) { + Operator operator = (Operator) rawToken; + out.write(((Operator) rawToken).getOperator().getBytes()); + out.write("\n".getBytes()); + if (Operators.BI.equals(operator.getOperator())) { + InlineImageOperator inlineImageOperator = (InlineImageOperator) operator; + for (Map.Entry item : inlineImageOperator.getImageParameters().getEntrySet()) { + out.write(item.getKey().toString().getBytes()); + out.write(" ".getBytes()); + write(item.getValue(), printWriter, out); + } + out.write(Operators.ID.getBytes()); + out.write("\n".getBytes()); + IOUtils.copy(inlineImageOperator.getImageData(), out); + out.write("\n".getBytes()); + out.write(Operators.EI.getBytes()); + out.write("\n".getBytes()); + } + } + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/ParagraphProcessor.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/ParagraphProcessor.java new file mode 100644 index 0000000..e2b4400 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/ParagraphProcessor.java @@ -0,0 +1,542 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.opendataloader.pdf.utils.BulletedParagraphUtils; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticParagraph; +import org.verapdf.wcag.algorithms.entities.content.TextBlock; +import org.verapdf.wcag.algorithms.entities.content.TextColumn; +import org.verapdf.wcag.algorithms.entities.content.TextLine; +import org.verapdf.wcag.algorithms.entities.enums.TextAlignment; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.CaptionUtils; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.ChunksMergeUtils; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.NodeUtils; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.TextChunkUtils; + +import java.util.*; + +public class ParagraphProcessor { + + public static final double DIFFERENT_LINES_PROBABILITY = 0.75; + + public static List processParagraphs(List contents) { + DocumentProcessor.setIndexesForContentsList(contents); + List blocks = new ArrayList<>(); + for (IObject content : contents) { + if (content instanceof TextLine) { + blocks.add(new TextBlock((TextLine) content)); + } + } + blocks = detectParagraphsWithJustifyAlignments(blocks); + blocks = detectFirstAndLastLinesOfParagraphsWithJustifyAlignments(blocks); + blocks = detectParagraphsWithLeftAlignments(blocks, true); + blocks = detectParagraphsWithLeftAlignments(blocks, false); + blocks = detectFirstLinesOfParagraphWithLeftAlignments(blocks); + blocks = detectParagraphsWithCenterAlignments(blocks); + blocks = detectParagraphsWithRightAlignments(blocks); + blocks = detectTwoLinesParagraphs(blocks); + blocks = processOtherLines(blocks); + return getContentsWithDetectedParagraphs(contents, blocks); + } + + private static List getContentsWithDetectedParagraphs(List contents, List blocks) { + List newContents = new ArrayList<>(); + Iterator iterator = blocks.iterator(); + TextBlock currentBlock = iterator.hasNext() ? iterator.next() : null; + Integer currentIndex = currentBlock != null ? currentBlock.getFirstLine().getIndex() : null; + for (int index = 0; index < contents.size(); index++) { + IObject content = contents.get(index); + if (!(content instanceof TextLine)) { + newContents.add(content); + } else if (Objects.equals(currentIndex, index)) { + newContents.add(createParagraphFromTextBlock(currentBlock)); + currentBlock = iterator.hasNext() ? iterator.next() : null; + currentIndex = currentBlock != null ? currentBlock.getFirstLine().getIndex() : null; + } + } + return newContents; + } + + private static List detectParagraphsWithJustifyAlignments(List textBlocks) { + List newBlocks = new ArrayList<>(); + if (!textBlocks.isEmpty()) { + newBlocks.add(textBlocks.get(0)); + } + if (textBlocks.size() > 1) { + for (int i = 1; i < textBlocks.size(); i++) { + TextBlock previousBlock = newBlocks.get(newBlocks.size() - 1); + TextBlock nextBlock = textBlocks.get(i); + TextAlignment textAlignment = ChunksMergeUtils.getAlignment(previousBlock.getLastLine(), nextBlock.getFirstLine()); + double probability = getDifferentLinesProbability(previousBlock, nextBlock, false, false); + if (textAlignment == TextAlignment.JUSTIFY && probability > DIFFERENT_LINES_PROBABILITY && + areTextBlocksHaveSameTextSize(previousBlock, nextBlock)) { + previousBlock.add(nextBlock.getLines()); + previousBlock.setTextAlignment(TextAlignment.JUSTIFY); + } else { + newBlocks.add(nextBlock); + } + } + } + return newBlocks; + } + + private static List detectParagraphsWithCenterAlignments(List textBlocks) { + List newBlocks = new ArrayList<>(); + if (!textBlocks.isEmpty()) { + newBlocks.add(textBlocks.get(0)); + } + if (textBlocks.size() > 1) { + for (int i = 1; i < textBlocks.size(); i++) { + TextBlock previousBlock = newBlocks.get(newBlocks.size() - 1); + TextBlock nextBlock = textBlocks.get(i); + if (areLinesOfParagraphsWithCenterAlignments(previousBlock, nextBlock)) { + previousBlock.add(nextBlock.getLines()); + previousBlock.setTextAlignment(TextAlignment.CENTER); + } else { + newBlocks.add(nextBlock); + } + } + } + return newBlocks; + } + + private static boolean areLinesOfParagraphsWithCenterAlignments(TextBlock previousBlock, TextBlock nextBlock) { + TextAlignment textAlignment = ChunksMergeUtils.getAlignment(previousBlock.getLastLine(), nextBlock.getFirstLine()); + if (textAlignment != TextAlignment.CENTER) { + return false; + } + double probability = getDifferentLinesProbability(previousBlock, nextBlock, true, false); + if (probability < DIFFERENT_LINES_PROBABILITY) { + return false; + } + if (!areTextBlocksHaveSameTextSize(previousBlock, nextBlock)) { + return false; + } + return true; + } + + private static List detectFirstAndLastLinesOfParagraphsWithJustifyAlignments(List textBlocks) { + List newBlocks = new ArrayList<>(); + if (!textBlocks.isEmpty()) { + newBlocks.add(textBlocks.get(0)); + } + if (textBlocks.size() > 1) { + for (int i = 1; i < textBlocks.size(); i++) { + TextBlock previousBlock = newBlocks.get(newBlocks.size() - 1); + TextBlock nextBlock = textBlocks.get(i); + TextAlignment textAlignment = ChunksMergeUtils.getAlignment(previousBlock.getLastLine(), nextBlock.getFirstLine()); + double probability = getDifferentLinesProbability(previousBlock, nextBlock, false, false); + if (isFirstLineOfBlock(previousBlock, nextBlock, textAlignment, probability)) { + previousBlock.add(nextBlock.getLines()); + previousBlock.setTextAlignment(TextAlignment.JUSTIFY); + previousBlock.setHasStartLine(true); + previousBlock.setHasEndLine(nextBlock.isHasEndLine()); + } else if (isLastLineOfBlock(previousBlock, nextBlock, textAlignment, probability)) { + previousBlock.add(nextBlock.getLines()); + previousBlock.setHasEndLine(true); + } else { + newBlocks.add(nextBlock); + } + } + } + return newBlocks; + } + + private static List detectParagraphsWithLeftAlignments(List textBlocks, boolean checkStyle) { + List newBlocks = new ArrayList<>(); + if (!textBlocks.isEmpty()) { + newBlocks.add(textBlocks.get(0)); + } + if (textBlocks.size() > 1) { + for (int i = 1; i < textBlocks.size(); i++) { + TextBlock previousBlock = newBlocks.get(newBlocks.size() - 1); + TextBlock nextBlock = textBlocks.get(i); + if (areLinesOfParagraphsWithLeftAlignments(previousBlock, nextBlock, checkStyle)) { + previousBlock.add(nextBlock.getLines()); + previousBlock.setTextAlignment(TextAlignment.LEFT); + previousBlock.setHasEndLine(false); + } else { + newBlocks.add(nextBlock); + } + } + } + return newBlocks; + } + + private static boolean areLinesOfParagraphsWithRightAlignments(TextBlock previousBlock, TextBlock nextBlock) { + TextAlignment textAlignment = ChunksMergeUtils.getAlignment(previousBlock.getLastLine(), nextBlock.getFirstLine()); + if (textAlignment != TextAlignment.RIGHT) { + return false; + } + double probability = getDifferentLinesProbability(previousBlock, nextBlock, false, false); + if (probability < DIFFERENT_LINES_PROBABILITY) { + return false; + } + if (previousBlock.getLinesNumber() != 1 && previousBlock.getTextAlignment() != TextAlignment.RIGHT) { + return false; + } + if (!areTextBlocksHaveSameTextSize(previousBlock, nextBlock)) { + return false; + } + if (nextBlock.getLinesNumber() != 1 && nextBlock.getTextAlignment() != TextAlignment.RIGHT) { + return false; + } + return true; + } + + private static boolean areLinesOfParagraphsWithLeftAlignments(TextBlock previousBlock, TextBlock nextBlock, boolean checkStyle) { + TextAlignment textAlignment = ChunksMergeUtils.getAlignment(previousBlock.getLastLine(), nextBlock.getFirstLine()); + if (textAlignment != TextAlignment.LEFT) { + return false; + } + boolean haveSameStyle = TextChunkUtils.areTextChunksHaveSameStyle(previousBlock.getLastLine().getFirstTextChunk(), + nextBlock.getFirstLine().getFirstTextChunk()); + if (checkStyle && !haveSameStyle) { + return false; + } + if (!areTextBlocksHaveSameTextSize(previousBlock, nextBlock)) { + return false; + } + if (BulletedParagraphUtils.isLabeledLine(nextBlock.getFirstLine())) { + return false; + } + boolean areShouldBeCloseLines = false; + if (previousBlock.getLinesNumber() != 1) { + if (previousBlock.getTextAlignment() == TextAlignment.JUSTIFY) { + if (!haveSameStyle) { + return false; + } + areShouldBeCloseLines = true; + } else if (previousBlock.getTextAlignment() != TextAlignment.LEFT) { + return false; + } + } + if (nextBlock.getLinesNumber() != 1) { + if (nextBlock.getTextAlignment() == TextAlignment.JUSTIFY) { + if (!haveSameStyle) { + return false; + } + areShouldBeCloseLines = true; + } else if (nextBlock.getTextAlignment() != TextAlignment.LEFT) { + return false; + } + } + double probability = getDifferentLinesProbability(previousBlock, nextBlock, true, areShouldBeCloseLines); + if (probability < DIFFERENT_LINES_PROBABILITY) { + return false; + } + return true; + } + + private static List detectFirstLinesOfParagraphWithLeftAlignments(List textBlocks) { + List newBlocks = new ArrayList<>(); + if (!textBlocks.isEmpty()) { + newBlocks.add(textBlocks.get(0)); + } + if (textBlocks.size() > 1) { + for (int i = 1; i < textBlocks.size(); i++) { + TextBlock previousBlock = newBlocks.get(newBlocks.size() - 1); + TextBlock nextBlock = textBlocks.get(i); + if (isFirstLineOfParagraphWithLeftAlignment(previousBlock, nextBlock)) { + previousBlock.add(nextBlock.getLines()); + previousBlock.setTextAlignment(TextAlignment.LEFT); + previousBlock.setHasStartLine(true); + } else { + newBlocks.add(nextBlock); + } + } + } + return newBlocks; + } + + private static boolean isFirstLineOfParagraphWithLeftAlignment(TextBlock previousBlock, TextBlock nextBlock) { + double probability = getDifferentLinesProbability(previousBlock, nextBlock, false, false); + if (previousBlock.getLinesNumber() != 1) { + return false; + } + if (probability < DIFFERENT_LINES_PROBABILITY) { + return false; + } + if (!areTextBlocksHaveSameTextSize(previousBlock, nextBlock)) { + return false; + } + if (BulletedParagraphUtils.isLabeledLine(nextBlock.getFirstLine())) { + return false; + } + if (nextBlock.isHasStartLine()) { + return false; + } + if (nextBlock.getTextAlignment() != TextAlignment.LEFT) { + return false; + } + if (!CaptionUtils.areOverlapping(previousBlock.getLastLine(), nextBlock.getFirstLine().getBoundingBox())) { + return false; + } + return true; + } + + private static List detectTwoLinesParagraphs(List textBlocks) { + List newBlocks = new ArrayList<>(); + if (!textBlocks.isEmpty()) { + newBlocks.add(textBlocks.get(0)); + } + if (textBlocks.size() > 1) { + for (int i = 1; i < textBlocks.size(); i++) { + TextBlock previousBlock = newBlocks.get(newBlocks.size() - 1); + TextBlock nextBlock = textBlocks.get(i); + if (isTwoLinesParagraph(previousBlock, nextBlock)) { + previousBlock.add(nextBlock.getLines()); + previousBlock.setTextAlignment(TextAlignment.LEFT); + previousBlock.setHasStartLine(true); + previousBlock.setHasEndLine(true); + } else { + newBlocks.add(nextBlock); + } + } + } + return newBlocks; + } + + private static boolean isTwoLinesParagraph(TextBlock previousBlock, TextBlock nextBlock) { + if (previousBlock.getLinesNumber() != 1 || nextBlock.getLinesNumber() != 1) { + return false; + } + double probability = getDifferentLinesProbability(previousBlock, nextBlock, false, false); + if (probability < DIFFERENT_LINES_PROBABILITY) { + return false; + } + if (!areTextBlocksHaveSameTextSize(previousBlock, nextBlock)) { + return false; + } + if (BulletedParagraphUtils.isLabeledLine(nextBlock.getFirstLine())) { + return false; + } + if (previousBlock.getLastLine().getLeftX() < nextBlock.getFirstLine().getLeftX() || + previousBlock.getLastLine().getRightX() < nextBlock.getFirstLine().getRightX()) { + return false; + } + return true; + } + + private static boolean isFirstLineOfBulletedParagraphWithLeftAlignment(TextBlock previousBlock, TextBlock nextBlock) { + double probability = getDifferentLinesProbability(previousBlock, nextBlock, false, false); + if (probability < DIFFERENT_LINES_PROBABILITY) { + return false; + } + if (previousBlock.getLinesNumber() != 1) { + return false; + } + if (nextBlock.isHasStartLine()) { + return false; + } + if (BulletedParagraphUtils.isLabeledLine(nextBlock.getFirstLine())) { + return false; + } + if (!BulletedParagraphUtils.isLabeledLine(previousBlock.getFirstLine())) { + return false; + } + if (previousBlock.getLastLine().getLeftX() > nextBlock.getFirstLine().getLeftX()) { + return false; + } + if (nextBlock.getTextAlignment() != TextAlignment.LEFT && nextBlock.getLinesNumber() != 1) { + return false; + } + if (!CaptionUtils.areOverlapping(previousBlock.getLastLine(), nextBlock.getFirstLine().getBoundingBox())) { + return false; + } + return true; + } + + private static List detectParagraphsWithRightAlignments(List textBlocks) { + List newBlocks = new ArrayList<>(); + if (!textBlocks.isEmpty()) { + newBlocks.add(textBlocks.get(0)); + } + if (textBlocks.size() > 1) { + for (int i = 1; i < textBlocks.size(); i++) { + TextBlock previousBlock = newBlocks.get(newBlocks.size() - 1); + TextBlock nextBlock = textBlocks.get(i); + if (areLinesOfParagraphsWithRightAlignments(previousBlock, nextBlock)) { + previousBlock.add(nextBlock.getLines()); + previousBlock.setTextAlignment(TextAlignment.RIGHT); + } else { + newBlocks.add(nextBlock); + } + } + } + return newBlocks; + } + + private static List detectBulletedParagraphsWithLeftAlignments(List textBlocks) { + List newBlocks = new ArrayList<>(); + if (!textBlocks.isEmpty()) { + newBlocks.add(textBlocks.get(0)); + } + if (textBlocks.size() > 1) { + for (int i = 1; i < textBlocks.size(); i++) { + TextBlock previousBlock = newBlocks.get(newBlocks.size() - 1); + TextBlock nextBlock = textBlocks.get(i); + if (isFirstLineOfBulletedParagraphWithLeftAlignment(previousBlock, nextBlock)) { + previousBlock.add(nextBlock.getLines()); + previousBlock.setTextAlignment(TextAlignment.LEFT); + previousBlock.setHasStartLine(true); + } else { + newBlocks.add(nextBlock); + } + } + } + return newBlocks; + } + + private static List processOtherLines(List textBlocks) { + List newBlocks = new ArrayList<>(); + if (!textBlocks.isEmpty()) { + newBlocks.add(textBlocks.get(0)); + } + if (textBlocks.size() > 1) { + for (int i = 1; i < textBlocks.size(); i++) { + TextBlock previousBlock = newBlocks.get(newBlocks.size() - 1); + TextBlock nextBlock = textBlocks.get(i); + if (isOneParagraph(previousBlock, nextBlock)) { + previousBlock.add(nextBlock.getLines()); + } else { + newBlocks.add(nextBlock); + } + } + } + return newBlocks; + } + + private static boolean isOneParagraph(TextBlock previousBlock, TextBlock nextBlock) { + if (!areCloseStyle(previousBlock, nextBlock)) { + return false; + } + double probability = getDifferentLinesProbability(previousBlock, nextBlock, false, false); + if (probability < DIFFERENT_LINES_PROBABILITY) { + return false; + } + if (!areTextBlocksHaveSameTextSize(previousBlock, nextBlock)) { + return false; + } + if (BulletedParagraphUtils.isLabeledLine(nextBlock.getFirstLine())) { + return false; + } + if (!CaptionUtils.areOverlapping(previousBlock.getLastLine(), nextBlock.getFirstLine().getBoundingBox())) { + return false; + } + if (previousBlock.getLinesNumber() != 1 && previousBlock.getTextAlignment() != null) { + return false; + } + if (nextBlock.getLinesNumber() != 1 && nextBlock.getTextAlignment() != null) { + return false; + } + return true; + } + + private static boolean isFirstLineOfBlock(TextBlock previousBlock, TextBlock nextBlock, TextAlignment textAlignment, + double probability) { + if (previousBlock.getLinesNumber() != 1) { + return false; + } + if (textAlignment != TextAlignment.RIGHT) { + return false; + } + if (!areTextBlocksHaveSameTextSize(previousBlock, nextBlock)) { + return false; + } + if (nextBlock.getTextAlignment() != TextAlignment.JUSTIFY) { + return false; + } + if (nextBlock.isHasStartLine()) { + return false; + } + if (probability < DIFFERENT_LINES_PROBABILITY) { + return false; + } + return true; + } + + private static boolean isLastLineOfBlock(TextBlock previousBlock, TextBlock nextBlock, TextAlignment textAlignment, + double probability) { + if (nextBlock.getLinesNumber() != 1) { + return false; + } + if (textAlignment != TextAlignment.LEFT) { + return false; + } + if (!areTextBlocksHaveSameTextSize(previousBlock, nextBlock)) { + return false; + } + if (previousBlock.getTextAlignment() != TextAlignment.JUSTIFY) { + return false; + } + if (previousBlock.isHasEndLine()) { + return false; + } + if (probability < DIFFERENT_LINES_PROBABILITY) { + return false; + } + return true; + } + + public static SemanticParagraph createParagraphFromTextBlock(TextBlock textBlock) { + SemanticParagraph textParagraph = new SemanticParagraph(); + textParagraph.getColumns().add(new TextColumn()); + textParagraph.getLastColumn().getBlocks().add(textBlock); + textParagraph.setBoundingBox(textBlock.getBoundingBox()); + textParagraph.setCorrectSemanticScore(1.0); + textParagraph.setHiddenText(textBlock.isHiddenText()); + return textParagraph; + } + + private static double getDifferentLinesProbability(TextBlock previousBlock, TextBlock nextBlock, + boolean areSupportNotSingleLines, boolean areShouldBeCloseLines) { + if (previousBlock.isHiddenText() != nextBlock.isHiddenText()) { + return 0; + } + if (previousBlock.getLinesNumber() == 1 && nextBlock.getLinesNumber() == 1) { + return ChunksMergeUtils.mergeLeadingProbability(previousBlock.getLastLine(), nextBlock.getFirstLine()); + } + if (previousBlock.getLinesNumber() == 1) { + return ChunksMergeUtils.mergeLeadingProbability(previousBlock.getLastLine(), nextBlock, areShouldBeCloseLines); + } + if (nextBlock.getLinesNumber() == 1) { + return ChunksMergeUtils.mergeLeadingProbability(previousBlock, nextBlock.getFirstLine(), areShouldBeCloseLines); + } + if (areSupportNotSingleLines) { + return ChunksMergeUtils.mergeLeadingProbability(previousBlock, nextBlock); + } + return 0; + } + + private static boolean areCloseStyle(TextBlock previousBlock, TextBlock nextBlock) { + return NodeUtils.areCloseNumbers(previousBlock.getFontSize(), nextBlock.getFontSize(), 1e-1) && + NodeUtils.areCloseNumbers(previousBlock.getFirstLine().getFirstTextChunk().getFontWeight(), + nextBlock.getFirstLine().getFirstTextChunk().getFontWeight(), 1e-1); + } + + private static boolean areTextBlocksHaveSameTextSize(TextBlock firstBlock, TextBlock secondBlock) { + for (Double textSize1 : firstBlock.getTextSizes()) { + for (Double textSize2 : secondBlock.getTextSizes()) { + if (NodeUtils.areCloseNumbers(textSize1, textSize2)) { + return true; + } + } + } + return false; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/ProcessingResult.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/ProcessingResult.java new file mode 100644 index 0000000..19e87c8 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/ProcessingResult.java @@ -0,0 +1,80 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import com.fasterxml.jackson.databind.JsonNode; + +/** + * Result of {@link DocumentProcessor#processFile} containing optional metadata + * collected during processing. + * + *

    Currently carries hybrid-server pipeline timings when hybrid mode is used. + * The timings JSON has the structure: + *

    {
    + *   "layout":          {"total_s": 1.2, "avg_s": 0.12, "count": 10},
    + *   "ocr":             {"total_s": 2.1, "avg_s": 0.21, "count": 10},
    + *   "table_structure":  {"total_s": 0.8, "avg_s": 0.40, "count": 2},
    + *   "doc_enrich":       {"total_s": 5.3, "avg_s": 5.30, "count": 1},
    + *   ...
    + * }
    + */ +public class ProcessingResult { + + private static final ProcessingResult EMPTY = new ProcessingResult(null, 0, 0); + + private final JsonNode hybridTimings; + private final long extractionNs; + private final long outputNs; + + public ProcessingResult(JsonNode hybridTimings, long extractionNs, long outputNs) { + this.hybridTimings = hybridTimings; + this.extractionNs = extractionNs; + this.outputNs = outputNs; + } + + /** Returns an empty result. */ + public static ProcessingResult empty() { + return EMPTY; + } + + /** + * Per-step pipeline timings from the hybrid server, or {@code null} if + * hybrid mode was not used or the server did not return timings. + */ + public JsonNode getHybridTimings() { + return hybridTimings; + } + + /** Time spent on data extraction (parsing + layout analysis + content extraction), in nanoseconds. */ + public long getExtractionNs() { + return extractionNs; + } + + /** Time spent on output generation (auto-tagging + JSON/MD/HTML export), in nanoseconds. */ + public long getOutputNs() { + return outputNs; + } + + /** Extraction time in milliseconds. */ + public long getExtractionMs() { + return extractionNs / 1_000_000; + } + + /** Output generation time in milliseconds. */ + public long getOutputMs() { + return outputNs / 1_000_000; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/SpecialTableProcessor.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/SpecialTableProcessor.java new file mode 100644 index 0000000..b44a873 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/SpecialTableProcessor.java @@ -0,0 +1,100 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.content.TextLine; +import org.verapdf.wcag.algorithms.entities.enums.SemanticType; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderRow; + +import java.util.ArrayList; +import java.util.List; + +public class SpecialTableProcessor { + + private static final String KOREAN_TABLE_REGEX = "\\(?(수신|경유|제목)\\)?.*"; + + public static List detectSpecialTables(List contents) { + detectSpecialKoreanTables(contents); + return DocumentProcessor.removeNullObjectsFromList(contents); + } + + private static void detectSpecialKoreanTables(List contents) { + List lines = new ArrayList<>(); + Integer index = null; + for (int currentIndex = 0; currentIndex < contents.size(); currentIndex++) { + IObject content = contents.get(currentIndex); + if (content instanceof TextLine) { + TextLine line = ((TextLine) content); + if (line.getValue().matches(KOREAN_TABLE_REGEX)) { + lines.add(line); + contents.set(currentIndex, null); + if (index == null) { + index = currentIndex; + } + } else if (!lines.isEmpty()) { + contents.set(index, detectSpecialKoreanTable(lines)); + lines.clear(); + } + } else if (!lines.isEmpty()) { + contents.set(index, detectSpecialKoreanTable(lines)); + lines.clear(); + } + } + if (!lines.isEmpty()) { + contents.set(index, detectSpecialKoreanTable(lines)); + } + } + + private static TableBorder detectSpecialKoreanTable(List lines) { + TableBorder table = new TableBorder(lines.size(), 2); + for (int rowNumber = 0; rowNumber < lines.size(); rowNumber++) { + TextLine line = lines.get(rowNumber); + BoundingBox box = line.getBoundingBox(); + int index = line.getValue().indexOf(":"); + boolean isOneCellRow = index == -1; + TableBorderRow tableBorderRow = new TableBorderRow(rowNumber, 2, null); + table.getRows()[rowNumber] = tableBorderRow; + if (isOneCellRow) { + TableBorderCell tableBorderCell = new TableBorderCell(rowNumber, 0, 1, 2, null); + tableBorderCell.setSemanticType(SemanticType.TABLE_CELL); + tableBorderCell.addContentObject(line); + tableBorderCell.setBoundingBox(box); + tableBorderRow.getCells()[0] = tableBorderCell; + tableBorderRow.getCells()[1] = tableBorderCell; + } else { + TableBorderCell cell1 = new TableBorderCell(rowNumber, 0, 1, 1, null); + cell1.setSemanticType(SemanticType.TABLE_CELL); + TextLine line1 = new TextLine(line, 0, index - 1); + cell1.addContentObject(line1); + cell1.setBoundingBox(line1.getBoundingBox()); + tableBorderRow.getCells()[0] = cell1; + TableBorderCell cell2 = new TableBorderCell(rowNumber, 1, 1, 1, null); + cell2.setSemanticType(SemanticType.TABLE_CELL); + TextLine line2 = new TextLine(line, index + 1, line.getValue().length()); + cell2.addContentObject(line2); + cell2.setBoundingBox(line2.getBoundingBox()); + tableBorderRow.getCells()[1] = cell2; + } + tableBorderRow.setBoundingBox(box); + table.getBoundingBox().union(box); + } + return TableBorderProcessor.normalizeAndProcessTableBorder(new ArrayList<>(lines), table, table.getPageNumber()); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/TableBorderProcessor.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/TableBorderProcessor.java new file mode 100644 index 0000000..8897ecf --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/TableBorderProcessor.java @@ -0,0 +1,253 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.content.LineArtChunk; +import org.verapdf.wcag.algorithms.entities.content.LineChunk; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderRow; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.NodeUtils; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.TextChunkUtils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +public class TableBorderProcessor { + + private static final double LINE_ART_PERCENT = 0.9; + private static final double NEIGHBOUR_TABLE_EPSILON = 0.2; + + /** + * Maximum depth for nested table processing. + * Real-world PDFs rarely have tables nested more than 2-3 levels. + * This limit prevents stack overflow from malicious or malformed PDFs. + */ + private static final int MAX_NESTED_TABLE_DEPTH = 10; + + /** + * Thread-local counter for tracking current nesting depth. + */ + private static final ThreadLocal currentDepth = ThreadLocal.withInitial(() -> 0); + + public static List processTableBorders(List contents, int pageNumber) { + // Check if TableBordersCollection exists (may be null if no borders detected during preprocessing) + if (StaticContainers.getTableBordersCollection() == null) { + return new ArrayList<>(contents); + } + + // Check depth limit to prevent stack overflow from deeply nested tables + int depth = currentDepth.get(); + if (depth >= MAX_NESTED_TABLE_DEPTH) { + // Exceeded maximum nesting depth - return contents without further table processing + return new ArrayList<>(contents); + } + + try { + currentDepth.set(depth + 1); + + List newContents = new ArrayList<>(); + Set processedTableBorders = new LinkedHashSet<>(); + for (IObject content : contents) { + TableBorder tableBorder = addContentToTableBorder(content); + if (tableBorder != null) { + if (content instanceof LineChunk && tableBorder.isOneCellTable()) { + continue; + } + if (!processedTableBorders.contains(tableBorder)) { + processedTableBorders.add(tableBorder); + newContents.add(tableBorder); + } + if (content instanceof TextChunk) { + TextChunk textChunk = (TextChunk) content; + TextChunk textChunkPart = getTextChunkPartBeforeTable(textChunk, tableBorder); + if (textChunkPart != null && !textChunkPart.isEmpty() && !textChunkPart.isWhiteSpaceChunk()) { + newContents.add(textChunkPart); + } + textChunkPart = getTextChunkPartAfterTable(textChunk, tableBorder); + if (textChunkPart != null && !textChunkPart.isEmpty() && !textChunkPart.isWhiteSpaceChunk()) { + newContents.add(textChunkPart); + } + } + } else { + newContents.add(content); + } + } + Map normalizedTables = new HashMap<>(); + for (TableBorder border : processedTableBorders) { + StaticContainers.getTableBordersCollection().removeTableBorder(border, pageNumber); + TableBorder normalizedTable = normalizeAndProcessTableBorder(contents, border, pageNumber); + normalizedTables.put(border, normalizedTable); + // Remove the outer table while processing its contents, then restore the page index + // with the final instance so later lookups still see the normalized table. +// StaticContainers.getTableBordersCollection().getTableBorders(pageNumber).add(normalizedTable); + } + for (int index = 0; index < newContents.size(); index++) { + IObject content = newContents.get(index); + if (content instanceof TableBorder && normalizedTables.containsKey(content)) { + newContents.set(index, normalizedTables.get(content)); + } + } + return newContents; + } finally { + // Reset depth when exiting this level (clean up ThreadLocal) + if (depth == 0) { + currentDepth.remove(); + } else { + currentDepth.set(depth); + } + } + } + + private static TableBorder addContentToTableBorder(IObject content) { + if (StaticContainers.getTableBordersCollection() == null) { + return null; + } + TableBorder tableBorder = StaticContainers.getTableBordersCollection().getTableBorder(content.getBoundingBox()); + if (tableBorder != null) { + if (content instanceof LineChunk) { + return tableBorder; + } + if (content instanceof LineArtChunk && BoundingBox.areSameBoundingBoxes(tableBorder.getBoundingBox(), content.getBoundingBox())) { + return tableBorder; + } + Set tableBorderCells = tableBorder.getTableBorderCells(content); + if (!tableBorderCells.isEmpty()) { + if (tableBorderCells.size() > 1 && content instanceof TextChunk) { + TextChunk textChunk = (TextChunk) content; + for (TableBorderCell tableBorderCell : tableBorderCells) { + TextChunk currentTextChunk = getTextChunkPartForTableCell(textChunk, tableBorderCell); + if (currentTextChunk != null && !currentTextChunk.isEmpty()) { + tableBorderCell.addContentObject(currentTextChunk); + } + } + } else { + for (TableBorderCell tableBorderCell : tableBorderCells) { + if (content instanceof LineArtChunk && + tableBorderCell.getBoundingBox().getIntersectionPercent(content.getBoundingBox()) > LINE_ART_PERCENT) { + return tableBorder; + } + tableBorderCell.addContentObject(content); + break; + } + } + return tableBorder; + } + if (content instanceof LineArtChunk) { + return tableBorder; + } + } + return null; + } + + public static void processTableBorder(TableBorder tableBorder, int pageNumber) { + processTableBorderContents(tableBorder, pageNumber); + } + + static TableBorder normalizeAndProcessTableBorder(List rawPageContents, TableBorder tableBorder, int pageNumber) { + TableBorder normalizedTable = TableStructureNormalizer.normalize(rawPageContents, tableBorder); + processTableBorderContents(normalizedTable, pageNumber); + return normalizedTable; + } + + private static void processTableBorderContents(TableBorder tableBorder, int pageNumber) { + for (int rowNumber = 0; rowNumber < tableBorder.getNumberOfRows(); rowNumber++) { + TableBorderRow row = tableBorder.getRow(rowNumber); + for (int colNumber = 0; colNumber < tableBorder.getNumberOfColumns(); colNumber++) { + TableBorderCell tableBorderCell = row.getCell(colNumber); + if (tableBorderCell.getRowNumber() == rowNumber && tableBorderCell.getColNumber() == colNumber) { + tableBorderCell.setContents(processTableCellContent(tableBorderCell.getContents(), pageNumber)); + } + } + } + } + + private static List processTableCellContent(List contents, int pageNumber) { + List newContents = TableBorderProcessor.processTableBorders(contents, pageNumber); + newContents = TextLineProcessor.processTextLines(newContents); + List> contentsList = new ArrayList<>(1); + contentsList.add(newContents); + ListProcessor.processLists(contentsList, true); + newContents = contentsList.get(0); + newContents = ParagraphProcessor.processParagraphs(newContents); + newContents = ListProcessor.processListsFromTextNodes(newContents); + HeadingProcessor.processHeadings(newContents, true); + DocumentProcessor.setIDs(newContents); + CaptionProcessor.processCaptions(newContents); + contentsList.set(0, newContents); + ListProcessor.checkNeighborLists(contentsList); + newContents = contentsList.get(0); + return newContents; + } + + public static void checkNeighborTables(List> contents) { + TableBorder previousTable = null; + for (List iObjects : contents) { + for (IObject content : iObjects) { + if (content instanceof TableBorder && !((TableBorder) content).isTextBlock()) { + TableBorder currentTable = (TableBorder) content; + if (previousTable != null) { + checkNeighborTables(previousTable, currentTable); + } + previousTable = currentTable; + } else { + if (!HeaderFooterProcessor.isHeaderOrFooter(content) && + !(content instanceof LineChunk) && !(content instanceof LineArtChunk)) { + previousTable = null; + } + } + } + } + } + + private static void checkNeighborTables(TableBorder previousTable, TableBorder currentTable) { + if (currentTable.getNumberOfColumns() != previousTable.getNumberOfColumns()) { + return; + } + if (!NodeUtils.areCloseNumbers(currentTable.getWidth(), previousTable.getWidth(), NEIGHBOUR_TABLE_EPSILON)) { + return; + } + for (int columnNumber = 0; columnNumber < previousTable.getNumberOfColumns(); columnNumber++) { + TableBorderCell cell1 = previousTable.getCell(0, columnNumber); + TableBorderCell cell2 = currentTable.getCell(0, columnNumber); + if (!NodeUtils.areCloseNumbers(cell1.getWidth(), cell2.getWidth(), NEIGHBOUR_TABLE_EPSILON)) { + return; + } + } + previousTable.setNextTable(currentTable); + currentTable.setPreviousTable(previousTable); + } + + private static TextChunk getTextChunkPartForTableCell(TextChunk textChunk, TableBorderCell cell) { + return TextChunkUtils.getTextChunkPartForRange(textChunk, cell.getLeftX(), cell.getRightX(), true); + } + + public static TextChunk getTextChunkPartBeforeTable(TextChunk textChunk, TableBorder table) { + return TextChunkUtils.getTextChunkPartBeforeBoundingBox(textChunk, table.getBoundingBox()); + } + + public static TextChunk getTextChunkPartAfterTable(TextChunk textChunk, TableBorder table) { + return TextChunkUtils.getTextChunkPartAfterBoundingBox(textChunk, table.getBoundingBox()); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/TableOfContentsProcessor.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/TableOfContentsProcessor.java new file mode 100644 index 0000000..c3622ea --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/TableOfContentsProcessor.java @@ -0,0 +1,221 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.verapdf.wcag.algorithms.entities.*; +import org.verapdf.wcag.algorithms.entities.content.*; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.semanticalgorithms.tocs.TOCIInfo; +import org.verapdf.wcag.algorithms.semanticalgorithms.tocs.TOCInterval; +import org.verapdf.wcag.algorithms.semanticalgorithms.consumers.TOCDetectionConsumer; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.NodeUtils; + +import java.util.*; + +public class TableOfContentsProcessor { + + private static final double TOC_ITEM_X_INTERVAL_RATIO = 0.3; + + private final Set pageLabels = new HashSet<>(); + + public void processTableOfContents(List> contents) { + pageLabels.clear(); + calculatePageLabels(); + List intervalsList = getTocIntervals(contents); + for (TOCInterval interval : intervalsList) { + for (TOCIInfo info : interval.getTOCItemsInfos()) { + info.getTOCItemValue().setListLine(true); + } + } + for (TOCInterval interval : intervalsList) { + Integer currentPageNumber = interval.getTOCItemsInfos().get(0).getPageNumber(); + int index = 0; + SemanticTOC previousTOC = null; + for (int i = 0; i < interval.getNumberOfTOCItems(); i++) { + TOCIInfo currentInfo = interval.getTOCItemsInfos().get(i); + if (!Objects.equals(currentInfo.getPageNumber(), currentPageNumber)) { + SemanticTOC toc = calculateTableOfContents(interval, index, i - 1, + contents.get(currentPageNumber)); + processTOC(previousTOC, toc); + currentPageNumber = currentInfo.getPageNumber(); + index = i; + previousTOC = toc; + } + } + SemanticTOC toc = calculateTableOfContents(interval, index, interval.getNumberOfTOCItems() - 1, + contents.get(currentPageNumber)); + processTOC(previousTOC, toc); + } + contents.replaceAll(DocumentProcessor::removeNullObjectsFromList); + } + + private static void processTOC(SemanticTOC previousTOC, SemanticTOC toc) { + for (IObject tocItem : toc.getTOCItems()) { + if (tocItem instanceof SemanticTOCI) { + SemanticTOCI toci = (SemanticTOCI) tocItem; + toci.setContents(processTOCItemContent(toci.getContents())); + } else { + // + } + } + if (previousTOC != null) { + SemanticTOC.setTOCConnected(previousTOC, toc); + } + } + + private void calculatePageLabels() { + for (int pageNumber = 0; pageNumber < StaticContainers.getDocument().getNumberOfPages(); pageNumber++) { + String pageLabel = StaticContainers.getDocument().getPage(pageNumber).getPageLabel(); + if (pageLabel != null) { + pageLabels.add(pageLabel); + } + } + } + + private static List processTOCItemContent(List contents) { + List newContents = ParagraphProcessor.processParagraphs(contents); + DocumentProcessor.setIDs(newContents); + return newContents; + } + + private List getTocIntervals(List> contents) { + List tocIntervals = new ArrayList<>(); + for (List pageContents : contents) { + for (int i = 0; i < pageContents.size(); i++) { + IObject content = pageContents.get(i); + if (!(content instanceof TextLine)) { + continue; + } + TextLine line = (TextLine) content; + String value = line.getValue(); + if (value.isEmpty() || line.isHiddenText()) { + continue; + } + TOCIInfo tocItemTextInfo = createTOCIInfo(i, line, value); + processTOCItem(tocIntervals, tocItemTextInfo); + } + } + LinkedHashSet intervalsList = new LinkedHashSet<>(); + for (TOCInterval interval : tocIntervals) { + if (interval != null && interval.getTOCItemsInfos().size() > 2) { + intervalsList.add(interval); + } + } + List result = new ArrayList<>(intervalsList); + Collections.reverse(result); + return result; + } + + private void processTOCItem(List tocIntervals, TOCIInfo tocItemTextInfo) { + if (!hasPageNumber(tocItemTextInfo)) { + return; + } + boolean isSingle = true; + if (!tocIntervals.isEmpty()) { + TOCInterval interval = tocIntervals.get(tocIntervals.size() - 1); + if (isTwoTOCItemsOfOneTOC(interval, tocItemTextInfo)) { + tocIntervals.add(interval); + isSingle = false; + } + } + if (isSingle) { + TOCInterval tocInterval = new TOCInterval(); + tocInterval.getTOCItemsInfos().add(tocItemTextInfo); + tocIntervals.add(tocInterval); + } + } + + private static boolean isTwoTOCItemsOfOneTOC(TOCInterval interval, TOCIInfo currentItem) { + double maxXGap = getMaxXGap(currentItem.getTOCItemValue().getFontSize()); + TOCIInfo previousItem = interval.getLastTOCItemInfo(); + if (previousItem == null) { + return false; + } + if (Objects.equals(currentItem.getPageNumber(), previousItem.getPageNumber()) && + currentItem.getTOCItemValue().getTopY() > previousItem.getTOCItemValue().getTopY()) { + return false; + } + if (!NodeUtils.areCloseNumbers(previousItem.getTOCItemValue().getRightX(), + currentItem.getTOCItemValue().getRightX(), maxXGap)) { + return false; + } + interval.getTOCItemsInfos().add(currentItem); + return true; + } + + private boolean hasPageNumber(TOCIInfo tocItem) { + String textValue = tocItem.getText(); + if (textValue.matches(".+[" + TOCDetectionConsumer.SPACES + "\\.]\\d+") && !textValue.matches(".*\\d+\\.\\d+")) { + return true; + } + for (String pageLabel : pageLabels) { + if (textValue.length() > pageLabel.length() && textValue.endsWith(pageLabel)) { + return true; + } + } + return false; + } + + private static TOCIInfo createTOCIInfo(int i, TextLine line, String value) { + TOCIInfo tociInfo = new TOCIInfo(); + tociInfo.setIndex(i); + tociInfo.setTOCItemValue(line); + tociInfo.setText(value); + return tociInfo; + } + + private static SemanticTOC calculateTableOfContents(TOCInterval interval, int startIndex, int endIndex, + List pageContents) { + SemanticTOC toc = new SemanticTOC(); + for (int index = startIndex; index <= endIndex; index++) { + TOCIInfo currentInfo = interval.getTOCItemsInfos().get(index); + SemanticTOCI tocItem = new SemanticTOCI(new BoundingBox(), null); + TextLine textLine = (TextLine) pageContents.get(currentInfo.getIndex()); + if (index != startIndex) { + int nextIndex = interval.getTOCItemsInfos().get(index - 1).getIndex(); + addContentToTOCItem(nextIndex, currentInfo, pageContents, tocItem); + } else { + // + } + pageContents.set(interval.getTOCItemsInfos().get(index).getIndex(), index == startIndex ? toc : null); + tocItem.add(textLine); + toc.add(tocItem); + } + return toc; + } + + private static void addContentToTOCItem(int nextIndex, TOCIInfo currentInfo, List pageContents, + SemanticTOCI tocItem) { + + List lines = new LinkedList<>(); + for (int index = currentInfo.getIndex() - 1; index > nextIndex; index--) { + IObject content = pageContents.get(index); + if (content instanceof TextLine) { + TextLine currentTextLine = (TextLine) content; + lines.add(0, currentTextLine); + } else if (content != null) { + tocItem.getContents().add(0, content); + } + pageContents.set(index, null); + } + tocItem.add(lines); + } + + private static double getMaxXGap(double fontSize) { + return fontSize * TOC_ITEM_X_INTERVAL_RATIO; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/TableStructureNormalizer.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/TableStructureNormalizer.java new file mode 100644 index 0000000..6f00d9e --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/TableStructureNormalizer.java @@ -0,0 +1,510 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.content.LineArtChunk; +import org.verapdf.wcag.algorithms.entities.content.LineChunk; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.content.TextLine; +import org.verapdf.wcag.algorithms.entities.enums.SemanticType; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderRow; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.TextChunkUtils; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; + +class TableStructureNormalizer { + + private static final int MAX_UNDERSEGMENTED_ROWS = 2; + private static final int MIN_UNDERSEGMENTED_COLUMNS = 3; + private static final int MIN_UNDERSEGMENTED_TEXT_LINES = 8; + private static final int MIN_ROW_BAND_MISMATCH = 2; + private static final int OVERSIZED_CELL_LINE_COUNT = 4; + private static final double MIN_ROW_BAND_EPSILON = 3.0; + private static final double ROW_BAND_EPSILON_RATIO = 0.6; + private static final double ROW_BAND_ASSIGNMENT_EPSILON = 6.0; + private static final double ROW_ORDER_EPSILON = 1.5; + private static final Comparator CONTENT_COMPARATOR = + Comparator.comparingDouble(IObject::getCenterY).reversed() + .thenComparingDouble(IObject::getLeftX); + private static final Comparator TEXT_LINE_COMPARATOR = + Comparator.comparingDouble(TextLine::getCenterY).reversed() + .thenComparingDouble(TextLine::getLeftX); + + static TableBorder normalize(List rawPageContents, TableBorder tableBorder) { + if (rawPageContents == null || rawPageContents.isEmpty()) { + return tableBorder; + } + if (tableBorder.isTextBlock()) { + return tableBorder; + } + if (tableBorder.getNumberOfRows() > MAX_UNDERSEGMENTED_ROWS || + tableBorder.getNumberOfColumns() < MIN_UNDERSEGMENTED_COLUMNS) { + return tableBorder; + } + + List columnSnapshots = collectColumnSnapshots(rawPageContents, tableBorder); + int denseColumns = countDenseColumns(columnSnapshots); + if (denseColumns < 2) { + return tableBorder; + } + + List rowBands = collectRowBands(tableBorder, columnSnapshots); + if (rowBands.size() < tableBorder.getNumberOfRows() + MIN_ROW_BAND_MISMATCH) { + return tableBorder; + } + + TableBorder rebuiltTable = rebuildTable(tableBorder, rowBands); + if (!isReplacementQualityBetter(tableBorder, rebuiltTable)) { + return tableBorder; + } + + return rebuiltTable; + } + + private static List collectColumnSnapshots(List rawPageContents, TableBorder tableBorder) { + List columnSnapshots = new ArrayList<>(tableBorder.getNumberOfColumns()); + for (int columnNumber = 0; columnNumber < tableBorder.getNumberOfColumns(); columnNumber++) { + columnSnapshots.add(new ColumnSnapshot()); + } + + for (IObject content : rawPageContents) { + if (content == null || !isInsideTableBounds(content, tableBorder)) { + continue; + } + + if (content instanceof TextChunk) { + addTextChunkToColumns((TextChunk) content, tableBorder, columnSnapshots); + } else if (!(content instanceof LineChunk) && !(content instanceof LineArtChunk)) { + int columnNumber = findBestColumn(content, tableBorder); + if (columnNumber >= 0) { + columnSnapshots.get(columnNumber).addContent(content); + } + } + } + + for (ColumnSnapshot columnSnapshot : columnSnapshots) { + columnSnapshot.finalizeSnapshot(); + } + return columnSnapshots; + } + + private static void addTextChunkToColumns(TextChunk textChunk, TableBorder tableBorder, + List columnSnapshots) { + for (int columnNumber = 0; columnNumber < tableBorder.getNumberOfColumns(); columnNumber++) { + TextChunk columnTextChunk = TextChunkUtils.getTextChunkPartForRange(textChunk, + tableBorder.getLeftX(columnNumber), tableBorder.getRightX(columnNumber), true); + if (columnTextChunk != null && !columnTextChunk.isEmpty() && !columnTextChunk.isWhiteSpaceChunk()) { + columnSnapshots.get(columnNumber).addContent(columnTextChunk); + } + } + } + + private static int findBestColumn(IObject content, TableBorder tableBorder) { + double centerX = content.getCenterX(); + for (int columnNumber = 0; columnNumber < tableBorder.getNumberOfColumns(); columnNumber++) { + if (centerX >= tableBorder.getLeftX(columnNumber) && centerX <= tableBorder.getRightX(columnNumber)) { + return columnNumber; + } + } + + int closestColumn = -1; + double closestDistance = Double.MAX_VALUE; + for (int columnNumber = 0; columnNumber < tableBorder.getNumberOfColumns(); columnNumber++) { + double columnCenter = (tableBorder.getLeftX(columnNumber) + tableBorder.getRightX(columnNumber)) / 2; + double distance = Math.abs(centerX - columnCenter); + if (distance < closestDistance) { + closestDistance = distance; + closestColumn = columnNumber; + } + } + return closestColumn; + } + + private static boolean isInsideTableBounds(IObject content, TableBorder tableBorder) { + return content.getCenterX() >= tableBorder.getLeftX() && content.getCenterX() <= tableBorder.getRightX() && + content.getCenterY() >= tableBorder.getBottomY() && content.getCenterY() <= tableBorder.getTopY(); + } + + private static int countDenseColumns(List columnSnapshots) { + int denseColumns = 0; + for (ColumnSnapshot columnSnapshot : columnSnapshots) { + if (columnSnapshot.meaningfulLineCount >= MIN_UNDERSEGMENTED_TEXT_LINES) { + denseColumns++; + } + } + return denseColumns; + } + + private static List collectRowBands(TableBorder tableBorder, List columnSnapshots) { + List textLines = new ArrayList<>(); + for (ColumnSnapshot columnSnapshot : columnSnapshots) { + textLines.addAll(columnSnapshot.textLines); + } + textLines.sort(TEXT_LINE_COMPARATOR); + + List rowBands = new ArrayList<>(); + for (TextLine textLine : textLines) { + RowBand matchingBand = findMatchingRowBand(rowBands, textLine); + if (matchingBand == null) { + matchingBand = new RowBand(tableBorder.getNumberOfColumns()); + rowBands.add(matchingBand); + } + matchingBand.addLine(textLine); + } + + for (int columnNumber = 0; columnNumber < columnSnapshots.size(); columnNumber++) { + for (IObject content : columnSnapshots.get(columnNumber).contents) { + RowBand matchingBand = findBestRowBand(rowBands, content); + if (matchingBand != null) { + matchingBand.addContent(columnNumber, content); + } + } + } + + rowBands.removeIf(rowBand -> rowBand.isEmpty()); + rowBands.sort(Comparator.comparingDouble(RowBand::getCenterY).reversed()); + rowBands.forEach(RowBand::sortContents); + return rowBands; + } + + private static RowBand findMatchingRowBand(List rowBands, TextLine textLine) { + for (RowBand rowBand : rowBands) { + double epsilon = Math.max(MIN_ROW_BAND_EPSILON, + Math.min(rowBand.getAverageHeight(), textLine.getHeight()) * ROW_BAND_EPSILON_RATIO); + if (Math.abs(rowBand.getCenterY() - textLine.getCenterY()) <= epsilon || + rowBand.hasVerticalOverlap(textLine.getTopY(), textLine.getBottomY())) { + return rowBand; + } + } + return null; + } + + private static RowBand findBestRowBand(List rowBands, IObject content) { + RowBand bestBand = null; + double bestDistance = Double.MAX_VALUE; + for (RowBand rowBand : rowBands) { + if (rowBand.hasVerticalOverlap(content.getTopY(), content.getBottomY())) { + double distance = Math.abs(rowBand.getCenterY() - content.getCenterY()); + if (distance < bestDistance) { + bestDistance = distance; + bestBand = rowBand; + } + } + } + if (bestBand != null) { + return bestBand; + } + + for (RowBand rowBand : rowBands) { + double distance = Math.abs(rowBand.getCenterY() - content.getCenterY()); + if (distance < bestDistance && distance <= ROW_BAND_ASSIGNMENT_EPSILON + rowBand.getAverageHeight()) { + bestDistance = distance; + bestBand = rowBand; + } + } + return bestBand; + } + + private static TableBorder rebuildTable(TableBorder originalTable, List rowBands) { + TableBorder rebuiltTable = new TableBorder(rowBands.size(), originalTable.getNumberOfColumns()); + rebuiltTable.setRecognizedStructureId(originalTable.getRecognizedStructureId()); + rebuiltTable.setBoundingBox(new BoundingBox(originalTable.getBoundingBox())); + rebuiltTable.setNode(originalTable.getNode()); + rebuiltTable.setIndex(originalTable.getIndex()); + rebuiltTable.setLevel(originalTable.getLevel()); + rebuiltTable.setPreviousTable(originalTable.getPreviousTable()); + rebuiltTable.setNextTable(originalTable.getNextTable()); + + for (int rowNumber = 0; rowNumber < rowBands.size(); rowNumber++) { + RowBand rowBand = rowBands.get(rowNumber); + TableBorderRow rebuiltRow = new TableBorderRow(rowNumber, originalTable.getNumberOfColumns(), + originalTable.getRecognizedStructureId()); + rebuiltRow.setBoundingBox(rowBand.createRowBoundingBox(originalTable)); + rebuiltTable.getRows()[rowNumber] = rebuiltRow; + + for (int columnNumber = 0; columnNumber < originalTable.getNumberOfColumns(); columnNumber++) { + TableBorderCell rebuiltCell = new TableBorderCell(rowNumber, columnNumber, 1, 1, + originalTable.getRecognizedStructureId()); + rebuiltCell.setSemanticType(rowNumber == 0 ? SemanticType.TABLE_HEADER : SemanticType.TABLE_CELL); + rebuiltCell.setContents(rowBand.getContents(columnNumber)); + rebuiltCell.setBoundingBox(rowBand.createCellBoundingBox(originalTable, columnNumber)); + rebuiltRow.getCells()[columnNumber] = rebuiltCell; + } + } + + rebuiltTable.calculateCoordinatesUsingBoundingBoxesOfRowsAndColumns(); + return rebuiltTable; + } + + private static boolean isReplacementQualityBetter(TableBorder originalTable, TableBorder rebuiltTable) { + int originalNonEmptyRows = countNonEmptyRows(originalTable); + int rebuiltNonEmptyRows = countNonEmptyRows(rebuiltTable); + if (rebuiltNonEmptyRows <= originalNonEmptyRows) { + return false; + } + + int originalNonEmptyColumns = countNonEmptyColumns(originalTable); + int rebuiltNonEmptyColumns = countNonEmptyColumns(rebuiltTable); + if (rebuiltNonEmptyColumns < originalNonEmptyColumns) { + return false; + } + + if (!hasMonotonicRowOrder(rebuiltTable)) { + return false; + } + + TableLineStats originalLineStats = collectTableLineStats(originalTable); + TableLineStats rebuiltLineStats = collectTableLineStats(rebuiltTable); + + return rebuiltLineStats.oversizedCellCount < originalLineStats.oversizedCellCount || + rebuiltLineStats.maxMeaningfulTextLines < originalLineStats.maxMeaningfulTextLines; + } + + private static int countNonEmptyRows(TableBorder tableBorder) { + int count = 0; + for (int rowNumber = 0; rowNumber < tableBorder.getNumberOfRows(); rowNumber++) { + boolean hasContent = false; + for (int columnNumber = 0; columnNumber < tableBorder.getNumberOfColumns(); columnNumber++) { + TableBorderCell cell = tableBorder.getRow(rowNumber).getCell(columnNumber); + if (cell != null && cell.getRowNumber() == rowNumber && cell.getColNumber() == columnNumber && + hasMeaningfulContent(cell.getContents())) { + hasContent = true; + break; + } + } + if (hasContent) { + count++; + } + } + return count; + } + + private static int countNonEmptyColumns(TableBorder tableBorder) { + int count = 0; + for (int columnNumber = 0; columnNumber < tableBorder.getNumberOfColumns(); columnNumber++) { + boolean hasContent = false; + for (int rowNumber = 0; rowNumber < tableBorder.getNumberOfRows(); rowNumber++) { + TableBorderCell cell = tableBorder.getRow(rowNumber).getCell(columnNumber); + if (cell != null && cell.getRowNumber() == rowNumber && cell.getColNumber() == columnNumber && + hasMeaningfulContent(cell.getContents())) { + hasContent = true; + break; + } + } + if (hasContent) { + count++; + } + } + return count; + } + + private static boolean hasMeaningfulContent(List contents) { + if (contents == null) { + return false; + } + for (IObject content : contents) { + if (content instanceof TextChunk) { + if (!((TextChunk) content).isWhiteSpaceChunk() && !((TextChunk) content).isEmpty()) { + return true; + } + } else if (content instanceof TextLine) { + if (!((TextLine) content).isSpaceLine() && !((TextLine) content).isEmpty()) { + return true; + } + } else if (!(content instanceof LineChunk) && !(content instanceof LineArtChunk)) { + return true; + } + } + return false; + } + + private static boolean hasMonotonicRowOrder(TableBorder tableBorder) { + double previousCenterY = Double.POSITIVE_INFINITY; + double previousBottomY = Double.POSITIVE_INFINITY; + for (int rowNumber = 0; rowNumber < tableBorder.getNumberOfRows(); rowNumber++) { + TableBorderRow row = tableBorder.getRow(rowNumber); + double currentCenterY = row.getBoundingBox().getCenterY(); + if (currentCenterY >= previousCenterY) { + return false; + } + if (row.getTopY() > previousBottomY + ROW_ORDER_EPSILON) { + return false; + } + previousCenterY = currentCenterY; + previousBottomY = row.getBottomY(); + } + return true; + } + + private static TableLineStats collectTableLineStats(TableBorder tableBorder) { + int oversizedCellCount = 0; + int maxMeaningfulTextLines = 0; + for (int rowNumber = 0; rowNumber < tableBorder.getNumberOfRows(); rowNumber++) { + for (int columnNumber = 0; columnNumber < tableBorder.getNumberOfColumns(); columnNumber++) { + TableBorderCell cell = tableBorder.getRow(rowNumber).getCell(columnNumber); + if (cell != null && cell.getRowNumber() == rowNumber && cell.getColNumber() == columnNumber) { + int meaningfulTextLines = countMeaningfulTextLines(cell.getContents()); + if (meaningfulTextLines >= OVERSIZED_CELL_LINE_COUNT) { + oversizedCellCount++; + } + maxMeaningfulTextLines = Math.max(maxMeaningfulTextLines, meaningfulTextLines); + } + } + } + return new TableLineStats(oversizedCellCount, maxMeaningfulTextLines); + } + + private static int countMeaningfulTextLines(List contents) { + if (contents == null || contents.isEmpty()) { + return 0; + } + + List orderedContents = new ArrayList<>(contents); + orderedContents.sort(CONTENT_COMPARATOR); + int count = 0; + for (IObject content : TextLineProcessor.processTextLines(orderedContents)) { + if (content instanceof TextLine) { + TextLine textLine = (TextLine) content; + if (!textLine.isEmpty() && !textLine.isSpaceLine()) { + count++; + } + } + } + return count; + } + + private static final class ColumnSnapshot { + + private final List contents = new ArrayList<>(); + private final List textLines = new ArrayList<>(); + private int meaningfulLineCount; + + private void addContent(IObject content) { + contents.add(content); + } + + private void finalizeSnapshot() { + contents.sort(CONTENT_COMPARATOR); + List textCandidates = new ArrayList<>(); + for (IObject content : contents) { + if (content instanceof TextChunk || content instanceof TextLine) { + textCandidates.add(content); + } + } + for (IObject content : TextLineProcessor.processTextLines(textCandidates)) { + if (content instanceof TextLine) { + TextLine textLine = (TextLine) content; + if (!textLine.isEmpty() && !textLine.isSpaceLine()) { + textLines.add(textLine); + meaningfulLineCount++; + } + } + } + } + } + + private static final class TableLineStats { + + private final int oversizedCellCount; + private final int maxMeaningfulTextLines; + + private TableLineStats(int oversizedCellCount, int maxMeaningfulTextLines) { + this.oversizedCellCount = oversizedCellCount; + this.maxMeaningfulTextLines = maxMeaningfulTextLines; + } + } + + private static final class RowBand { + + private final List> contentsByColumn; + private double topY = Double.NEGATIVE_INFINITY; + private double bottomY = Double.POSITIVE_INFINITY; + private double centerY; + private double averageHeight; + private int lineCount; + + private RowBand(int columnCount) { + this.contentsByColumn = new ArrayList<>(columnCount); + for (int columnNumber = 0; columnNumber < columnCount; columnNumber++) { + this.contentsByColumn.add(new ArrayList<>()); + } + } + + private void addLine(TextLine textLine) { + updateBounds(textLine.getTopY(), textLine.getBottomY(), textLine.getCenterY(), textLine.getHeight()); + } + + private void addContent(int columnNumber, IObject content) { + contentsByColumn.get(columnNumber).add(content); + updateBounds(content.getTopY(), content.getBottomY(), content.getCenterY(), content.getHeight()); + } + + private void updateBounds(double contentTopY, double contentBottomY, double contentCenterY, double height) { + topY = Math.max(topY, contentTopY); + bottomY = Math.min(bottomY, contentBottomY); + centerY = ((centerY * lineCount) + contentCenterY) / (lineCount + 1); + averageHeight = ((averageHeight * lineCount) + height) / (lineCount + 1); + lineCount++; + } + + private boolean hasVerticalOverlap(double contentTopY, double contentBottomY) { + return contentBottomY <= topY + ROW_ORDER_EPSILON && contentTopY >= bottomY - ROW_ORDER_EPSILON; + } + + private boolean isEmpty() { + for (List contents : contentsByColumn) { + if (!contents.isEmpty()) { + return false; + } + } + return true; + } + + private void sortContents() { + for (List contents : contentsByColumn) { + contents.sort(CONTENT_COMPARATOR); + } + } + + private List getContents(int columnNumber) { + return new ArrayList<>(contentsByColumn.get(columnNumber)); + } + + private BoundingBox createRowBoundingBox(TableBorder tableBorder) { + return new BoundingBox(tableBorder.getPageNumber(), tableBorder.getLeftX(), bottomY, + tableBorder.getRightX(), topY); + } + + private BoundingBox createCellBoundingBox(TableBorder tableBorder, int columnNumber) { + return new BoundingBox(tableBorder.getPageNumber(), tableBorder.getLeftX(columnNumber), bottomY, + tableBorder.getRightX(columnNumber), topY); + } + + private double getCenterY() { + return centerY; + } + + private double getAverageHeight() { + return averageHeight; + } + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/TaggedDocumentProcessor.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/TaggedDocumentProcessor.java new file mode 100644 index 0000000..65344c2 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/TaggedDocumentProcessor.java @@ -0,0 +1,497 @@ +package org.opendataloader.pdf.processors; + +import org.opendataloader.pdf.api.Config; +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.opendataloader.pdf.entities.EnrichedImageChunk; +import org.opendataloader.pdf.entities.SemanticFootnote; +import org.verapdf.gf.model.impl.sa.GFSANode; +import org.verapdf.wcag.algorithms.entities.*; +import org.verapdf.wcag.algorithms.entities.content.ImageChunk; +import org.verapdf.wcag.algorithms.entities.content.TextBlock; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.content.TextLine; +import org.verapdf.wcag.algorithms.entities.enums.SemanticType; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.entities.geometry.MultiBoundingBox; +import org.verapdf.wcag.algorithms.entities.lists.ListItem; +import org.verapdf.wcag.algorithms.entities.lists.PDFList; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderRow; +import org.verapdf.wcag.algorithms.semanticalgorithms.consumers.TableChecker; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; + +import java.util.*; + +public class TaggedDocumentProcessor { + + private static List> contents; + private static Stack> contentsStack = new Stack<>(); + private static Set pagesToProcess; + + public static List> processDocument(String inputPdfName, Config config, Set pages) { + pagesToProcess = pages; + contentsStack.clear(); + contents = new ArrayList<>(); + int totalPages = StaticContainers.getDocument().getNumberOfPages(); + for (int pageNumber = 0; pageNumber < totalPages; pageNumber++) { + contents.add(new ArrayList<>()); + } + ITree tree = StaticContainers.getDocument().getTree(); + processStructElem(tree.getRoot(), null); + List> artifacts = collectArtifacts(totalPages); + for (int pageNumber = 0; pageNumber < totalPages; pageNumber++) { + if (!shouldProcessPage(pageNumber)) { + continue; + } + artifacts.set(pageNumber, TextLineProcessor.processTextLines(artifacts.get(pageNumber))); + } + + HeaderFooterProcessor.processHeadersAndFooters(artifacts, true); + for (int pageNumber = 0; pageNumber < totalPages; pageNumber++) { + if (!shouldProcessPage(pageNumber)) { + continue; + } + DocumentProcessor.setIDs(artifacts.get(pageNumber)); + contents.get(pageNumber).addAll(artifacts.get(pageNumber)); + } + for (int pageNumber = 0; pageNumber < totalPages; pageNumber++) { + if (!shouldProcessPage(pageNumber)) { + continue; + } + List pageContents = TextLineProcessor.processTextLines(contents.get(pageNumber)); + contents.set(pageNumber, ParagraphProcessor.processParagraphs(pageContents)); + } + return contents; + } + + private static List> collectArtifacts(int totalPages) { + List> artifacts = new ArrayList<>(); + for (int pageNumber = 0; pageNumber < totalPages; pageNumber++) { + artifacts.add(new ArrayList<>()); + if (!shouldProcessPage(pageNumber)) { + continue; + } + for (IObject content : StaticContainers.getDocument().getArtifacts(pageNumber)) { + if (content instanceof ImageChunk) { + artifacts.get(pageNumber).add(content); + } else if (content instanceof TextChunk) { + TextChunk textChunk = (TextChunk) content; + if (!textChunk.isWhiteSpaceChunk() && !textChunk.isEmpty()) { + artifacts.get(pageNumber).add(content); + } + } + } + } + return artifacts; + } + + /** + * Checks if a page should be processed based on the filter. + * + * @param pageNumber 0-indexed page number + * @return true if the page should be processed + */ + private static boolean shouldProcessPage(int pageNumber) { + return pagesToProcess == null || pagesToProcess.contains(pageNumber); + } + + private static void processStructElem(INode node, INode parent) { + if (node instanceof SemanticFigure) { + processImage((SemanticFigure) node, parent); + return; + } + if (node instanceof SemanticSpan) { + processTextChunk((SemanticSpan) node); + } + if (node.getInitialSemanticType() == null) { + for (INode child : node.getChildren()) { + processStructElem(child, node); + } + return; + } + switch (node.getInitialSemanticType()) { + case CAPTION: + processCaption(node); + break; + case HEADING: + case TITLE: + processHeading(node); + break; + case LIST: + processList(node); + break; + case NUMBER_HEADING: + processNumberedHeading(node); + break; + case PARAGRAPH: + processParagraph(node); + break; + case TABLE: + processTable(node); + break; + case TABLE_OF_CONTENT: + addObjectToContent(processTOC(node)); + break; + case NOTE: + case FENOTE: + processFootnote(node); + break; + default: + for (INode child : node.getChildren()) { + processStructElem(child, node); + } + } + } + + private static void addObjectToContent(IObject object) { + Integer pageNumber = object.getPageNumber(); + if (pageNumber != null && shouldProcessPage(pageNumber)) { + if (contentsStack.isEmpty()) { + contents.get(pageNumber).add(object); + } else { + contentsStack.peek().add(object); + } + } + object.setRecognizedStructureId(StaticLayoutContainers.incrementContentId()); + } + + private static void processParagraph(INode paragraph) { + addObjectToContent(createParagraph(paragraph)); + } + + private static SemanticParagraph createParagraph(INode paragraph) { + List contents = new ArrayList<>(); + processChildContents(paragraph, contents); + contents = TextLineProcessor.processTextLines(contents); + TextBlock textBlock = new TextBlock(new MultiBoundingBox()); + for (IObject content : contents) { + if (content instanceof TextLine) { + textBlock.add((TextLine)content); + } else { + addObjectToContent(content); + } + } + return ParagraphProcessor.createParagraphFromTextBlock(textBlock); + } + + private static void processHeading(INode node) { + SemanticHeading heading = new SemanticHeading(createParagraph(node)); + heading.setHeadingLevel(1);//update + addObjectToContent(heading); + } + + private static void processFootnote(INode node) { + SemanticFootnote footnote = new SemanticFootnote(createParagraph(node)); + addObjectToContent(footnote); + } + + private static void processNumberedHeading(INode node) { + SemanticHeading heading = new SemanticHeading(createParagraph(node)); + GFSANode gfsaNode = (GFSANode) node; + String headingLevel = gfsaNode.getStructElem().getstandardType(); + heading.setHeadingLevel(Integer.parseInt(headingLevel.substring(1))); + addObjectToContent(heading); + } + + private static void processList(INode node) { + PDFList list = new PDFList(); + list.setBoundingBox(new MultiBoundingBox()); + for (INode child : node.getChildren()) { + if (child.getInitialSemanticType() == SemanticType.LIST) { + processList(child); + } else if (child.getInitialSemanticType() == SemanticType.LIST_ITEM) { + ListItem listItem = processListItem(child); + if (listItem.getPageNumber() != null) { + list.add(listItem); + } + } else { + processStructElem(child, node); + } + } + addObjectToContent(list); + } + + private static ListItem processListItem(INode node) { + ListItem listItem = new ListItem(new MultiBoundingBox(), null); + List contents = new ArrayList<>(); + listItem.setLabelLength(calculateLabelLength(node)); + processChildContents(node, contents); + contents = TextLineProcessor.processTextLines(contents); + for (IObject content : contents) { + if (content instanceof TextLine) { + listItem.add((TextLine)content); + } else { + listItem.getContents().add(content); + } + } + listItem.setRecognizedStructureId(StaticLayoutContainers.incrementContentId()); + return listItem; + } + + private static int calculateLabelLength(INode listItem) { + List children = listItem.getChildren(); + if (!children.isEmpty()) { + INode firstChild = children.get(0); + if (firstChild.getInitialSemanticType() == SemanticType.LIST_LABEL) { + return getTextChunksLength(firstChild); + } + } + return 0; + } + + private static int getTextChunksLength(INode node) { + int result = 0; + for (INode child : node.getChildren()) { + if (child instanceof SemanticSpan) { + result += (((SemanticSpan)child).getColumns().get(0).getFirstLine().getFirstTextChunk().getValue().length()); + } else { + result += getTextChunksLength(child); + } + } + return result; + } + + private static void processTable(INode tableNode) { + List tableRows = processTableRows(tableNode); + if (tableRows.isEmpty()) { + return; + } + int numberOfRows = tableRows.size(); + int numberOfColumns = TableChecker.getNumberOfColumns(tableRows.get(0)); + List> table = new ArrayList<>(numberOfRows); + for (int rowNumber = 0; rowNumber < numberOfRows; rowNumber++) { + addTableRow(numberOfColumns, table); + } + BoundingBox tableBoundingBox = new MultiBoundingBox(); + for (int rowNumber = 0; rowNumber < tableRows.size(); rowNumber++) { + int columnNumber = 0; + for (INode elem : tableRows.get(rowNumber).getChildren()) { + SemanticType type = elem.getInitialSemanticType(); + if (SemanticType.TABLE_CELL != type && SemanticType.TABLE_HEADER != type) { + continue; + } + while (columnNumber < numberOfColumns && table.get(rowNumber).get(columnNumber) != null) { + ++columnNumber; + } + TableBorderCell cell = new TableBorderCell(elem, rowNumber, columnNumber); + cell.setSemanticType(type); + processTableCell(cell, elem); + tableBoundingBox.union(cell.getBoundingBox()); + for (int i = 0; i < cell.getRowSpan(); i++) { + if (rowNumber + i >= numberOfRows) { + numberOfRows++; + addTableRow(numberOfColumns, table); + } + for (int j = 0; j < cell.getColSpan(); j++) { + if (columnNumber + j >= numberOfColumns) { + addTableColumn(table); + numberOfColumns++; + } + table.get(rowNumber + i).set(columnNumber + j, cell); + } + } + columnNumber += cell.getColSpan(); + } + } + if (tableBoundingBox.isEmpty()) { + //empty table + return; + } + TableBorder tableBorder = new TableBorder(tableBoundingBox, createRowsForTable(table, numberOfRows, numberOfColumns), + numberOfRows, numberOfColumns); + setBoundingBoxesForTableRowsAndTableCells(tableBorder); + addObjectToContent(tableBorder); + } + + private static List processTableRows(INode table) { + List listTR = new LinkedList<>(); + for (INode elem : table.getChildren()) { + SemanticType type = elem.getInitialSemanticType(); + if (SemanticType.TABLE_ROW == type) { + listTR.add(elem); + processTableRowsChildren(elem); + } else if (SemanticType.TABLE_FOOTER == type || SemanticType.TABLE_BODY == type || + SemanticType.TABLE_HEADERS == type) { + for (INode child : elem.getChildren()) { + if (SemanticType.TABLE_ROW == child.getInitialSemanticType()) { + listTR.add(child); + processTableRowsChildren(child); + } else { + processStructElem(child, elem); + } + } + } else { + processStructElem(elem, table); + } + } + return listTR; + } + + private static void processTableRowsChildren(INode tableRow) { + for (INode tableCell : tableRow.getChildren()) { + SemanticType tableCellType = tableCell.getInitialSemanticType(); + if (SemanticType.TABLE_CELL != tableCellType && SemanticType.TABLE_HEADER != tableCellType) { + processStructElem(tableCell, tableRow); + } + } + } + + private static void addTableRow(int numberOfColumns, List> table) { + List row = new ArrayList<>(numberOfColumns); + table.add(row); + for (int columnNumber = 0; columnNumber < numberOfColumns; columnNumber++) { + row.add(null); + } + } + + private static void addTableColumn(List> table) { + for (List tableBorderCells : table) { + tableBorderCells.add(null); + } + } + + private static void processTableCell(TableBorderCell cell, INode elem) { + List rawContents = new ArrayList<>(); + processChildContents(elem, rawContents); + List processed = TextLineProcessor.processTextLines(rawContents); + TextBlock textBlock = new TextBlock(new MultiBoundingBox()); + for (IObject content : processed) { + if (content instanceof TextLine) { + textBlock.add((TextLine) content); + } else { + cell.getContents().add(content); + } + } + if (!textBlock.isEmpty()) { + cell.getContents().add(ParagraphProcessor.createParagraphFromTextBlock(textBlock)); + } + BoundingBox cellBoundingBox = new MultiBoundingBox(); + for (IObject content : cell.getContents()) { + cellBoundingBox.union(content.getBoundingBox()); + } + cell.setBoundingBox(cellBoundingBox); + cell.setRecognizedStructureId(StaticLayoutContainers.incrementContentId()); + } + + private static void processChildContents(INode elem, List contents) { + contentsStack.add(contents); + for (INode childChild : elem.getChildren()) { + processStructElem(childChild, elem); + } + contentsStack.pop(); + } + + private static TableBorderRow[] createRowsForTable(List> table, int numberOfRows, int numberOfColumns) { + TableBorderRow[] rows = new TableBorderRow[numberOfRows]; + for (int rowNumber = 0; rowNumber < numberOfRows; rowNumber++) { + rows[rowNumber] = new TableBorderRow(rowNumber, numberOfColumns, null); + } + for (int rowNumber = 0; rowNumber < numberOfRows; rowNumber++) { + for (int colNumber = 0; colNumber < numberOfColumns; colNumber++) { + rows[rowNumber].getCells()[colNumber] = table.get(rowNumber).get(colNumber); + if (rows[rowNumber].getCell(colNumber) == null) { + TableBorderCell cell = new TableBorderCell(rowNumber, colNumber, 1, 1, 0L); + cell.setSemanticType(SemanticType.TABLE_CELL); + cell.setRecognizedStructureId(StaticLayoutContainers.incrementContentId()); + rows[rowNumber].getCells()[colNumber] = cell; + } + } + } + return rows; + } + + private static void setBoundingBoxesForTableRowsAndTableCells(TableBorder tableBorder) { + BoundingBox boundingBox = new BoundingBox(tableBorder.getPageNumber(), + tableBorder.getTopY(), tableBorder.getLeftX(), tableBorder.getTopY(), tableBorder.getLeftX()); + for (int rowNumber = 0; rowNumber < tableBorder.getNumberOfRows(); rowNumber++) { + BoundingBox rowBoundingBox = new MultiBoundingBox(); + for (int colNumber = 0; colNumber < tableBorder.getNumberOfColumns(); colNumber++) { + TableBorderCell cell = tableBorder.getCell(rowNumber, colNumber); + if (cell.getColNumber() == colNumber && cell.getRowNumber() == rowNumber) { + if (cell.getBoundingBox().isEmpty()) { + cell.setBoundingBox(boundingBox); + } else { + rowBoundingBox.union(tableBorder.getCell(rowNumber, colNumber).getBoundingBox()); + } + } + } + tableBorder.getRow(rowNumber).setBoundingBox(rowBoundingBox.isEmpty() ? boundingBox : rowBoundingBox); + } + for (int rowNumber = 0; rowNumber < tableBorder.getNumberOfRows(); rowNumber++) { + for (int columnNumber = 0; columnNumber < tableBorder.getNumberOfColumns(); columnNumber++) { + TableBorderCell cell = tableBorder.getCell(rowNumber, columnNumber); + if (cell.getRowNumber() == rowNumber && cell.getColNumber() == columnNumber && cell.getBoundingBox().isEmpty()) { + cell.setBoundingBox(boundingBox); + } + } + } + } + + private static void processCaption(INode node) { + SemanticCaption caption = new SemanticCaption(createParagraph(node)); + addObjectToContent(caption); + } + + private static SemanticTOC processTOC(INode node) { + SemanticTOC toc = new SemanticTOC(); + toc.setBoundingBox(new MultiBoundingBox()); + for (INode child : node.getChildren()) { + if (child.getInitialSemanticType() == SemanticType.TABLE_OF_CONTENT) { + toc.add(processTOC(child)); + } else if (child.getInitialSemanticType() == SemanticType.TABLE_OF_CONTENT_ITEM) { + SemanticTOCI tocItem = processTOCItem(child); + if (tocItem.getPageNumber() != null) { + toc.add(tocItem); + } + } else { + processStructElem(child, node); + } + } + return toc; + } + + private static SemanticTOCI processTOCItem(INode node) { + SemanticTOCI tocItem = new SemanticTOCI(new MultiBoundingBox(), null); + List contents = new ArrayList<>(); + processChildContents(node, contents); + contents = TextLineProcessor.processTextLines(contents); + for (IObject content : contents) { + if (content instanceof TextLine) { + tocItem.add((TextLine)content); + } else { + tocItem.getContents().add(content); + } + } + tocItem.setRecognizedStructureId(StaticLayoutContainers.incrementContentId()); + return tocItem; + } + + private static void processImage(SemanticFigure image, INode parent) { + GFSANode parentNode = (GFSANode) parent; + List images = image.getImages(); + if (!images.isEmpty()) { + String alt = parentNode.getStructElem().getStructElemDictionary().getAlternateDescription(); + ImageChunk imageChunk = images.get(0); + addObjectToContent(alt == null ? imageChunk : new EnrichedImageChunk(imageChunk, alt)); + } + } + + private static void processTextChunk(SemanticSpan semanticSpan) { + addObjectToContent(semanticSpan.getColumns().get(0).getFirstLine().getFirstTextChunk()); + } + + private static List getContents(INode node) { + List result = new ArrayList<>(); + for (INode child : node.getChildren()) { + if (child instanceof SemanticSpan) { + result.add(((SemanticSpan)child).getColumns().get(0).getFirstLine().getFirstTextChunk()); + } else if (child instanceof SemanticFigure) { + processImage((SemanticFigure)child, node); + } else { + result.addAll(getContents(child)); + } + } + return result; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/TextDecorationProcessor.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/TextDecorationProcessor.java new file mode 100644 index 0000000..87187e6 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/TextDecorationProcessor.java @@ -0,0 +1,301 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.content.LineArtChunk; +import org.verapdf.wcag.algorithms.entities.content.LineChunk; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.NodeUtils; + +import java.util.*; + +/** + * Detects strikethrough and underlined text by finding horizontal line or line-art rules that + * pass through the vertical center or baseline of text chunks. Marks affected TextChunks by + * setting their isStrikethroughText or isUnderlinedText fields to true. + * + * Filters to avoid false positives: + * 1. Rule-to-text-height ratio (rejects thick background fills/borders) + * 2. Rule-to-text width ratio (rejects rules wider than text) + * 3. Vertical center or baseline alignment + * 4. Horizontal overlap requirement + * 5. Multi-chunk matching using the combined text width + */ +public class TextDecorationProcessor { + + private static final double VERTICAL_CENTER_TOLERANCE = 0.2; + private static final double MIN_HORIZONTAL_OVERLAP_RATIO = 0.8; + private static final double MAX_LINE_TO_TEXT_WIDTH_RATIO = 1.5; + + // Real strikethrough marks are thin rules. Text-height rectangles commonly + // come from glyph bounds, filled artifacts, backgrounds, or table artwork. + private static final double MAX_RULE_THICKNESS = 2.0; + private static final double MAX_RULE_TO_TEXT_HEIGHT_RATIO = 0.25; + + /** + * Detects strikethrough and underlined lines among page contents and sets affected + * TextChunk isStrikethroughText or isUnderlinedText field to true. + * + * @param pageContents the list of content objects for a page + * @param pageNumber the number of a page + * @param detectStrikethrough wether strikethrough text should be detected + */ + public static void processStrikethroughAndUnderlinedText(List pageContents, int pageNumber, boolean detectStrikethrough) { + if (pageContents == null) { + return; + } + + SortedSet horizontalLines = StaticContainers.getLinesCollection() != null ? + StaticContainers.getLinesCollection().getHorizontalLines(pageNumber) : Collections.emptySortedSet(); + List horizontalRules = new ArrayList<>(); + + for (LineChunk lineChunk : horizontalLines) { + HorizontalRuleCandidate rule = HorizontalRuleCandidate.fromLineChunk(lineChunk); + if (rule != null) { + horizontalRules.add(rule); + } + } + + List textChunks = new ArrayList<>(); + for (IObject content : pageContents) { +// if (content instanceof LineArtChunk) { +// HorizontalRuleCandidate rule = HorizontalRuleCandidate.fromLineArtChunk((LineArtChunk) content); +// if (rule != null) { +// horizontalRules.add(rule); +// } +// } else + if (content instanceof TextChunk) { + textChunks.add((TextChunk) content); + } + } + + if (horizontalRules.isEmpty() || textChunks.isEmpty()) { + return; + } + + for (HorizontalRuleCandidate rule : horizontalRules) { + List strikethroughMatches = new ArrayList<>(); + List underlineMatches = new ArrayList<>(); + + for (TextChunk textChunk : textChunks) { + if (textChunk.isWhiteSpaceChunk() || textChunk.isEmpty()) { + continue; + } + if (detectStrikethrough && isStrikethroughRule(rule, textChunk)) { + strikethroughMatches.add(textChunk); + } + if (isUnderlineRule(rule, textChunk)) { + underlineMatches.add(textChunk); + } + } + + if (detectStrikethrough && isValidMatch(rule, strikethroughMatches)) { + for (TextChunk chunk : strikethroughMatches) { + if (!chunk.getIsStrikethroughText()) { + chunk.setIsStrikethroughText(); + } + } + } + + if (isValidMatch(rule, underlineMatches)) { + for (TextChunk chunk : underlineMatches) { + if (!chunk.getIsUnderlinedText()) { + chunk.setIsUnderlinedText(); + } + } + } + } + + } + + /** + * Determines whether a horizontal line is a strikethrough for the given text chunk. + */ + static boolean isStrikethroughLine(LineChunk line, TextChunk textChunk) { + HorizontalRuleCandidate rule = HorizontalRuleCandidate.fromLineChunk(line); + return rule != null && isStrikethroughRule(rule, textChunk) && isValidMatch(rule, Collections.singletonList(textChunk)); + } + + /** + * Determines whether a line-art rectangle is a strikethrough for the given text chunk. + */ +// static boolean isStrikethroughLineArt(LineArtChunk lineArt, TextChunk textChunk) { +// HorizontalRuleCandidate rule = HorizontalRuleCandidate.fromLineArtChunk(lineArt); +// // Line-art rectangles are also used for table/background artwork, so +// // apply the width-ratio guard even for direct single-chunk checks. +// return rule != null && isStrikethroughRule(rule, textChunk) && isValidMatch(rule, List.of(textChunk)); +// } + + /** + * Determines whether a horizontal line is an underlined for the given text chunk. + */ + public static boolean isUnderlineLine(LineChunk line, TextChunk textChunk) { + HorizontalRuleCandidate rule = HorizontalRuleCandidate.fromLineChunk(line); + return rule != null && isUnderlineRule(rule, textChunk) && isValidMatch(rule, Collections.singletonList(textChunk)); + } + + /** + * Determines whether a line-art rectangle is an underlined for the given text chunk. + */ +// public static boolean isUnderlineLineArt(LineArtChunk lineArt, TextChunk textChunk) { +// HorizontalRuleCandidate rule = HorizontalRuleCandidate.fromLineArtChunk(lineArt); +// return rule != null && isUnderlineRule(rule, textChunk) && isValidMatch(rule, List.of(textChunk)); +// } + +// private static boolean isHorizontalLineArt(LineArtChunk lineArt) { +// BoundingBox bbox = lineArt.getBoundingBox(); +// return bbox != null && bbox.getWidth() > bbox.getHeight(); +// } + + private static boolean isStrikethroughRule(HorizontalRuleCandidate rule, TextChunk textChunk) { + if (rule == null || textChunk == null) { + return false; + } + + double textHeight = textChunk.getHeight(); + + if (textHeight <= 0) { + return false; + } + + // LineChunk thickness is stroke width; LineArtChunk thickness is rectangle + // height. In both cases, strikethrough marks should stay thin relative to text. + double maxRuleThickness = Math.min(MAX_RULE_THICKNESS, textHeight * MAX_RULE_TO_TEXT_HEIGHT_RATIO); + if (rule.thickness > maxRuleThickness) { + return false; + } + + // Check vertical position: the line's Y should be near the vertical center of the text + double textCenterY = textChunk.getCenterY(); + double lineY = rule.centerY; + double tolerance = textHeight * VERTICAL_CENTER_TOLERANCE; + + if (Math.abs(lineY - textCenterY) > tolerance) { + return false; + } + + // Check horizontal overlap + double textLeftX = textChunk.getLeftX(); + double textRightX = textChunk.getRightX(); + double lineLeftX = rule.leftX; + double lineRightX = rule.rightX; + + double overlapLeft = Math.max(textLeftX, lineLeftX); + double overlapRight = Math.min(textRightX, lineRightX); + double overlapWidth = overlapRight - overlapLeft; + + if (overlapWidth <= 0) { + return false; + } + + double textWidth = textChunk.getWidth(); + if (textWidth <= 0 || (overlapWidth / textWidth) < MIN_HORIZONTAL_OVERLAP_RATIO) { + return false; + } + + return true; + } + + private static boolean isUnderlineRule(HorizontalRuleCandidate rule, TextChunk textChunk) { + if (rule == null || textChunk == null) { + return false; + } + double textHeight = textChunk.getHeight(); + if (textHeight <= 0) return false; + + // Thickness: line width must be less than eps[2] * textHeight + // (eps[2] = 0.3, i.e. 30% of text height) + if (rule.thickness >= NodeUtils.UNDERLINED_TEXT_EPSILONS[2] * textHeight) { + return false; + } + + // Vertical position: line must be between the baseline and + // (baseline - eps[1] * textHeight) + double baseline = textChunk.getBaseLine(); + double lineY = rule.centerY; + double lowerBound = baseline - NodeUtils.UNDERLINED_TEXT_EPSILONS[1] * textHeight; + // Assuming Y increases upward, baseline is above the descender zone. + // lineY should be <= baseline and >= lowerBound. + if (lineY > baseline || lineY < lowerBound) { + return false; + } + + // Horizontal overlap: at least eps[0] * textWidth overlap + double textLeftX = textChunk.getLeftX(); + double textRightX = textChunk.getRightX(); + double overlap = Math.min(rule.rightX - textLeftX, textRightX - rule.leftX); + if (overlap <= NodeUtils.UNDERLINED_TEXT_EPSILONS[0] * textChunk.getWidth()) { + return false; + } + + return true; + } + + private static boolean isValidMatch(HorizontalRuleCandidate rule, List matchingChunks) { + if (matchingChunks.isEmpty()) { + return false; + } + + // Validate against the combined span of all matched chunks. This accepts + // split text on one visual line while still rejecting table separators + // and background rules that extend far past the text group. + double textGroupWidth = 0.0; + for (TextChunk chunk : matchingChunks) { + textGroupWidth += chunk.getWidth(); + } + return textGroupWidth > 0 && rule.width / textGroupWidth <= MAX_LINE_TO_TEXT_WIDTH_RATIO; + } + + /** + * Normalized geometry for either LineChunk or LineArtChunk. + */ + private static class HorizontalRuleCandidate { + private final double leftX; + private final double rightX; + private final double centerY; + private final double width; + private final double thickness; + + private HorizontalRuleCandidate(double leftX, double rightX, double centerY, double width, double thickness) { + this.leftX = leftX; + this.rightX = rightX; + this.centerY = centerY; + this.width = width; + this.thickness = thickness; + } + + private static HorizontalRuleCandidate fromLineChunk(LineChunk line) { + if (line == null || line.getBoundingBox() == null || !line.isHorizontalLine()) { + return null; + } + BoundingBox bbox = line.getBoundingBox(); + return new HorizontalRuleCandidate(line.getLeftX(), line.getRightX(), line.getCenterY(), + bbox.getWidth(), line.getWidth()); + } + +// private static HorizontalRuleCandidate fromLineArtChunk(LineArtChunk lineArt) { +// if (lineArt == null || !isHorizontalLineArt(lineArt)) { +// return null; +// } +// BoundingBox bbox = lineArt.getBoundingBox(); +// return new HorizontalRuleCandidate(lineArt.getLeftX(), lineArt.getRightX(), lineArt.getCenterY(), +// bbox.getWidth(), bbox.getHeight()); +// } + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/TextLineProcessor.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/TextLineProcessor.java new file mode 100644 index 0000000..6e71c40 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/TextLineProcessor.java @@ -0,0 +1,150 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticTextNode; +import org.verapdf.wcag.algorithms.entities.content.LineArtChunk; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.content.TextLine; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.ChunksMergeUtils; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.ListUtils; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.TextChunkUtils; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.IdentityHashMap; +import java.util.List; +import java.util.Set; + +public class TextLineProcessor { + + private static final double ONE_LINE_PROBABILITY = 0.75; + private static final Comparator TEXT_CHUNK_COMPARATOR = + Comparator.comparingDouble(o -> o.getBoundingBox().getLeftX()); + + public static List processTextLines(List contents) { + List newContents = new ArrayList<>(); + // Track which TextChunk immediately follows a whitespace chunk in stream order, + // using reference identity so lookups are immune to TextChunk.equals() semantics. + // Stream order may differ from visual (leftX) order in rare PDFs, but whitespace + // chunks originate from the same PDF text operator as their adjacent text chunks, + // so stream-order adjacency is reliable for this signal. + Set chunksAfterWhitespace = Collections.newSetFromMap(new IdentityHashMap<>()); + TextLine previousLine = new TextLine(new TextChunk("")); + boolean isSeparateLine = false; + boolean pendingWhitespace = false; + for (IObject content : contents) { + if (content instanceof TextChunk) { + TextChunk textChunk = (TextChunk) content; + if (textChunk.isWhiteSpaceChunk() || textChunk.isEmpty()) { + if (textChunk.isWhiteSpaceChunk()) { + pendingWhitespace = true; + } + continue; + } + if (pendingWhitespace) { + chunksAfterWhitespace.add(textChunk); + pendingWhitespace = false; + } + TextLine currentLine = new TextLine(textChunk); + double oneLineProbability = ChunksMergeUtils.countOneLineProbability(new SemanticTextNode(), previousLine, currentLine); + isSeparateLine |= (oneLineProbability < ONE_LINE_PROBABILITY) || previousLine.isHiddenText() != currentLine.isHiddenText(); + if (isSeparateLine) { + previousLine.setBoundingBox(new BoundingBox(previousLine.getBoundingBox())); + previousLine = currentLine; + newContents.add(previousLine); + } else { + previousLine.add(currentLine); + } + isSeparateLine = false; + } else { + if (content instanceof TableBorder) { + isSeparateLine = true; + } + newContents.add(content); + pendingWhitespace = false; + } + } + for (int i = 0; i < newContents.size(); i++) { + IObject content = newContents.get(i); + if (content instanceof TextLine) { + TextLine textLine = (TextLine) content; + textLine.getTextChunks().sort(TEXT_CHUNK_COMPARATOR); + double threshold = textLine.getFontSize() * TextChunkUtils.TEXT_LINE_SPACE_RATIO; + newContents.set(i, getTextLineWithSpaces(textLine, threshold, chunksAfterWhitespace)); + } + } + linkTextLinesWithConnectedLineArtBullet(newContents); + return newContents; + } + + private static TextLine getTextLineWithSpaces(TextLine textLine, double threshold, + Set chunksAfterWhitespace) { + List textChunks = textLine.getTextChunks(); + TextChunk currentTextChunk = textChunks.get(0); + double previousEnd = currentTextChunk.getTextEnd(); + TextLine newLine = new TextLine(); + newLine.add(currentTextChunk); + for (int i = 1; i < textChunks.size(); i++) { + currentTextChunk = textChunks.get(i); + double currentStart = currentTextChunk.getTextStart(); + boolean hasGap = currentStart - previousEnd > threshold; + boolean hadWhitespace = chunksAfterWhitespace.contains(currentTextChunk); + if (hasGap || hadWhitespace) { + TextChunk spaceChunk = new TextChunk(new BoundingBox(currentTextChunk.getBoundingBox()), " ", currentTextChunk.getFontName(), + currentTextChunk.getFontSize(), currentTextChunk.getFontWeight(), currentTextChunk.getItalicAngle(), currentTextChunk.getBaseLine(), + currentTextChunk.getFontColor(), null, currentTextChunk.getSlantDegree()); + spaceChunk.setTextStart(previousEnd); + spaceChunk.setTextEnd(currentStart); + spaceChunk.adjustSymbolEndsToBoundingBox(null); + newLine.add(spaceChunk); + } + previousEnd = currentTextChunk.getTextEnd(); + newLine.add(currentTextChunk); + } + + return newLine; + } + + private static void linkTextLinesWithConnectedLineArtBullet(List contents) { + LineArtChunk lineArtChunk = null; + for (IObject content : contents) { + if (content instanceof LineArtChunk) { + lineArtChunk = (LineArtChunk) content; + continue; + } + if (content instanceof TableBorder) { + lineArtChunk = null; + } + if (content instanceof TextLine && lineArtChunk != null) { + TextLine textLine = (TextLine) content; + if (isLineConnectedWithLineArt(textLine, lineArtChunk)) { + textLine.setConnectedLineArtLabel(lineArtChunk); + } + lineArtChunk = null; + } + } + } + + private static boolean isLineConnectedWithLineArt(TextLine textLine, LineArtChunk lineArt) { + return lineArt.getRightX() <= textLine.getLeftX() && lineArt.getBoundingBox().getHeight() < + ListUtils.LIST_LABEL_HEIGHT_EPSILON * textLine.getBoundingBox().getHeight(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/TextProcessor.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/TextProcessor.java new file mode 100644 index 0000000..f1ea435 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/TextProcessor.java @@ -0,0 +1,161 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.verapdf.gf.model.factory.chunks.ChunkParser; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.content.ImageChunk; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.ChunksMergeUtils; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.NodeUtils; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.TextChunkUtils; + +import java.util.Comparator; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +public class TextProcessor { + + private static final double MIN_TEXT_INTERSECTION_PERCENT = 0.5; + private static final double MAX_TOP_DECORATION_IMAGE_EPSILON = 0.3; + private static final double MAX_BOTTOM_DECORATION_IMAGE_EPSILON = 0.1; + private static final double MAX_LEFT_DECORATION_IMAGE_EPSILON = 0.1; + private static final double MAX_RIGHT_DECORATION_IMAGE_EPSILON = 1.5; + private static final double NEIGHBORS_TEXT_CHUNKS_EPSILON = 0.1; + private static final double TEXT_MIN_HEIGHT = 1; + + public static void replaceUndefinedCharacters(List contents, String replacementCharacterString) { + if (ChunkParser.REPLACEMENT_CHARACTER_STRING.equals(replacementCharacterString)) { + return; + } + for (IObject object : contents) { + if (object instanceof TextChunk) { + TextChunk textChunk = ((TextChunk) object); + if (textChunk.getValue().contains(ChunkParser.REPLACEMENT_CHARACTER_STRING)) { + textChunk.setValue(textChunk.getValue().replace(ChunkParser.REPLACEMENT_CHARACTER_STRING, replacementCharacterString)); + } + } + } + } + + public static double measureReplacementCharRatio(List contents) { + char replacementChar = ChunkParser.REPLACEMENT_CHARACTER_STRING.charAt(0); + int totalChars = 0; + int replacementChars = 0; + for (IObject object : contents) { + if (object instanceof TextChunk) { + String value = ((TextChunk) object).getValue(); + totalChars += value.length(); + for (int i = 0; i < value.length(); i++) { + if (value.charAt(i) == replacementChar) { + replacementChars++; + } + } + } + } + if (totalChars == 0) { + return 0.0; + } + return (double) replacementChars / totalChars; + } + + public static void filterTinyText(List contents) { + for (int i = 0; i < contents.size(); i++) { + IObject object = contents.get(i); + if (object instanceof TextChunk) { + TextChunk textChunk = ((TextChunk) object); + if (textChunk.getBoundingBox().getHeight() <= TEXT_MIN_HEIGHT) { + contents.set(i, null); + } + } + } + } + + public static void trimTextChunksWhiteSpaces(List contents) { + for (int i = 0; i < contents.size(); i++) { + IObject object = contents.get(i); + if (object instanceof TextChunk) { + contents.set(i, ChunksMergeUtils.getTrimTextChunk((TextChunk) object)); + } + } + } + + public static void mergeCloseTextChunks(List contents) { + for (int i = 0; i < contents.size() - 1; i++) { + IObject object = contents.get(i); + IObject nextObject = contents.get(i + 1); + if (object instanceof TextChunk && nextObject instanceof TextChunk) { + TextChunk textChunk = (TextChunk) object; + TextChunk nextTextChunk = (TextChunk) nextObject; + if (TextChunkUtils.areTextChunksHaveSameStyle(textChunk, nextTextChunk) && + TextChunkUtils.areTextChunksHaveSameBaseLine(textChunk, nextTextChunk) && + areNeighborsTextChunks(textChunk, nextTextChunk)) { + contents.set(i, null); + contents.set(i + 1, TextChunkUtils.unionTextChunks(textChunk, nextTextChunk)); + } + } + } + } + + public static void removeSameTextChunks(List contents) { + DocumentProcessor.setIndexesForContentsList(contents); + List sortedTextChunks = contents.stream().filter(c -> c instanceof TextChunk).sorted( + Comparator.comparing(x -> ((TextChunk) x).getValue())).collect(Collectors.toList()); + TextChunk lastTextChunk = null; + for (IObject object : sortedTextChunks) { + if (object instanceof TextChunk) { + TextChunk currentTextChunk = (TextChunk) object; + if (lastTextChunk != null && areSameTextChunks(lastTextChunk, currentTextChunk)) { + contents.set(lastTextChunk.getIndex(), null); + } + lastTextChunk = currentTextChunk; + } + } + } + + public static boolean areSameTextChunks(TextChunk firstTextChunk, TextChunk secondTextChunk) { + return Objects.equals(firstTextChunk.getValue(), secondTextChunk.getValue()) && + NodeUtils.areCloseNumbers(firstTextChunk.getWidth(), secondTextChunk.getWidth()) && + NodeUtils.areCloseNumbers(firstTextChunk.getHeight(), secondTextChunk.getHeight()) && + firstTextChunk.getBoundingBox().getIntersectionPercent(secondTextChunk.getBoundingBox()) > MIN_TEXT_INTERSECTION_PERCENT; + } + + public static void removeTextDecorationImages(List contents) { + TextChunk lastTextChunk = null; + for (int index = 0; index < contents.size(); index++) { + IObject object = contents.get(index); + if (object instanceof TextChunk) { + lastTextChunk = (TextChunk) object; + } else if (object instanceof ImageChunk && lastTextChunk != null && + isTextChunkDecorationImage((ImageChunk) object, lastTextChunk)) { + contents.set(index, null); + } + } + } + + public static boolean isTextChunkDecorationImage(ImageChunk imageChunk, TextChunk textChunk) { + return NodeUtils.areCloseNumbers(imageChunk.getTopY(), textChunk.getTopY(), MAX_TOP_DECORATION_IMAGE_EPSILON * textChunk.getHeight()) && + NodeUtils.areCloseNumbers(imageChunk.getBottomY(), textChunk.getBottomY(), MAX_BOTTOM_DECORATION_IMAGE_EPSILON * textChunk.getHeight()) && + (NodeUtils.areCloseNumbers(imageChunk.getLeftX(), textChunk.getLeftX(), MAX_LEFT_DECORATION_IMAGE_EPSILON * textChunk.getHeight()) || imageChunk.getLeftX() > textChunk.getLeftX()) && + (NodeUtils.areCloseNumbers(imageChunk.getRightX(), textChunk.getRightX(), MAX_RIGHT_DECORATION_IMAGE_EPSILON * textChunk.getHeight()) || imageChunk.getRightX() < textChunk.getRightX()); + } + + private static boolean areNeighborsTextChunks(TextChunk firstTextChunk, TextChunk secondTextChunk) { + return NodeUtils.areCloseNumbers(firstTextChunk.getTextEnd(), secondTextChunk.getTextStart(), + NEIGHBORS_TEXT_CHUNKS_EPSILON * firstTextChunk.getBoundingBox().getHeight()); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/readingorder/XYCutPlusPlusSorter.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/readingorder/XYCutPlusPlusSorter.java new file mode 100644 index 0000000..45c340d --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/processors/readingorder/XYCutPlusPlusSorter.java @@ -0,0 +1,651 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors.readingorder; + +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; + +/** + * XY-Cut++ algorithm for reading order detection based on arXiv:2504.10258. + *

    + * An enhanced XY-Cut implementation that handles: + *

      + *
    • Cross-layout elements (headers, footers spanning multiple columns)
    • + *
    • Adaptive axis selection based on density ratios
    • + *
    • L-shaped region handling
    • + *
    + *

    + * This is a simplified geometric implementation without semantic type priorities. + *

    + * Algorithm overview: + *

      + *
    1. Pre-mask: Identify cross-layout elements (width > beta * maxWidth, overlaps >= 2)
    2. + *
    3. Compute density ratio to determine split direction preference
    4. + *
    5. Recursive segmentation with adaptive XY/YX-Cut
    6. + *
    7. Merge cross-layout elements at appropriate positions
    8. + *
    + */ +public class XYCutPlusPlusSorter { + + /** Default beta multiplier for cross-layout detection threshold. + * Higher value = fewer elements detected as cross-layout. + * 2.0 means element must be 2x wider than maxWidth to be considered cross-layout (effectively disabled). */ + static final double DEFAULT_BETA = 2.0; + + /** Default density threshold for adaptive axis selection. */ + static final double DEFAULT_DENSITY_THRESHOLD = 0.9; + + /** Minimum horizontal overlap ratio to count as overlapping. */ + static final double OVERLAP_THRESHOLD = 0.1; + + /** Minimum number of overlaps required for cross-layout classification. */ + static final int MIN_OVERLAP_COUNT = 2; + + /** Minimum gap size (in points) required to perform a cut. + * Prevents splitting on insignificant gaps (e.g., 1-pixel gaps). */ + static final double MIN_GAP_THRESHOLD = 5.0; + + /** Width ratio threshold for narrow outlier filtering. + * Elements narrower than this fraction of the region width are considered + * potential outliers that may bridge column gaps (e.g., page numbers, footnote markers). */ + static final double NARROW_ELEMENT_WIDTH_RATIO = 0.1; + + private XYCutPlusPlusSorter() { + // Utility class - prevent instantiation + } + + // ========== PUBLIC API ========== + + /** + * Sort objects using XY-Cut++ algorithm with default parameters. + * + * @param objects List of objects to sort + * @return Sorted list of objects in reading order + */ + public static List sort(List objects) { + return sort(objects, DEFAULT_BETA, DEFAULT_DENSITY_THRESHOLD); + } + + /** + * Sort objects using XY-Cut++ algorithm with custom parameters. + * + * @param objects List of objects to sort + * @param beta Cross-layout detection threshold multiplier + * @param densityThreshold Density ratio threshold for axis selection + * @return Sorted list of objects in reading order + */ + public static List sort(List objects, double beta, double densityThreshold) { + if (objects == null || objects.size() <= 1) { + return objects; + } + + // Filter out objects with null bounding boxes + List validObjects = new ArrayList<>(); + for (IObject obj : objects) { + if (obj != null && obj.getBoundingBox() != null) { + validObjects.add(obj); + } + } + if (validObjects.size() <= 1) { + return validObjects; + } + + // Phase 1: Pre-mask cross-layout elements + List crossLayoutElements = identifyCrossLayoutElements(validObjects, beta); + List remainingObjects = new ArrayList<>(validObjects); + remainingObjects.removeAll(crossLayoutElements); + + if (remainingObjects.isEmpty()) { + // All objects are cross-layout, just sort by Y + return sortByYThenX(validObjects); + } + + // Phase 2: Compute density ratio for adaptive axis selection + double densityRatio = computeDensityRatio(remainingObjects); + boolean preferHorizontalFirst = densityRatio > densityThreshold; + + // Phase 3: Recursive segmentation with adaptive axis + List sortedMain = recursiveSegment(remainingObjects, preferHorizontalFirst); + + // Phase 4: Merge cross-layout elements back at appropriate positions + return mergeCrossLayoutElements(sortedMain, crossLayoutElements); + } + + // ========== PHASE 1: CROSS-LAYOUT DETECTION ========== + + /** + * Identify cross-layout elements that span multiple regions. + * An element is cross-layout if: + * 1. Its width exceeds beta * maxWidth (where maxWidth is the widest element) + * 2. It horizontally overlaps with at least MIN_OVERLAP_COUNT other elements + * + * Using maxWidth instead of median ensures only truly wide elements + * (like titles spanning the full page) are detected as cross-layout. + * + * @param objects List of objects to analyze + * @param beta Threshold multiplier for width comparison (e.g., 0.7 = 70% of max width) + * @return List of cross-layout elements + */ + static List identifyCrossLayoutElements(List objects, double beta) { + List crossLayoutElements = new ArrayList<>(); + + if (objects.size() < 3) { + // Need at least 3 objects for meaningful cross-layout detection + return crossLayoutElements; + } + + // Calculate max width among all objects + double maxWidth = 0; + for (IObject obj : objects) { + BoundingBox bbox = obj.getBoundingBox(); + if (bbox != null) { + double width = bbox.getWidth(); + maxWidth = Math.max(maxWidth, width); + } + } + + // Threshold: element must be at least beta * maxWidth to be cross-layout + // With beta=0.7, element must be at least 70% as wide as the widest element + double threshold = beta * maxWidth; + + for (IObject obj : objects) { + BoundingBox bbox = obj.getBoundingBox(); + if (bbox == null) { + continue; + } + + double width = bbox.getWidth(); + + // Criterion 1: Width exceeds threshold (close to max width) + if (width >= threshold) { + // Criterion 2: Overlaps with at least MIN_OVERLAP_COUNT other elements + if (hasMinimumOverlaps(obj, objects, MIN_OVERLAP_COUNT)) { + crossLayoutElements.add(obj); + } + } + } + + return crossLayoutElements; + } + + /** + * Check if an element horizontally overlaps with at least minCount other elements. + * + * @param element The element to check + * @param objects All objects including the element + * @param minCount Minimum number of overlaps required + * @return true if the element overlaps with at least minCount other elements + */ + static boolean hasMinimumOverlaps(IObject element, List objects, int minCount) { + BoundingBox elementBox = element.getBoundingBox(); + if (elementBox == null) { + return false; + } + + int overlapCount = 0; + for (IObject other : objects) { + if (other == element) { + continue; + } + + BoundingBox otherBox = other.getBoundingBox(); + if (otherBox == null) { + continue; + } + + double overlapRatio = calculateHorizontalOverlapRatio(elementBox, otherBox); + if (overlapRatio >= OVERLAP_THRESHOLD) { + overlapCount++; + if (overlapCount >= minCount) { + return true; + } + } + } + + return false; + } + + /** + * Calculate the horizontal overlap ratio between two bounding boxes. + * The ratio is relative to the smaller box's width. + * + * @param box1 First bounding box + * @param box2 Second bounding box + * @return Overlap ratio (0.0 to 1.0) + */ + static double calculateHorizontalOverlapRatio(BoundingBox box1, BoundingBox box2) { + double overlapLeft = Math.max(box1.getLeftX(), box2.getLeftX()); + double overlapRight = Math.min(box1.getRightX(), box2.getRightX()); + double overlapWidth = Math.max(0, overlapRight - overlapLeft); + + if (overlapWidth <= 0) { + return 0; + } + + double width1 = box1.getWidth(); + double width2 = box2.getWidth(); + double smallerWidth = Math.min(width1, width2); + + return smallerWidth > 0 ? overlapWidth / smallerWidth : 0; + } + + // ========== PHASE 2: DENSITY RATIO COMPUTATION ========== + + /** + * Compute the density ratio to determine split direction preference. + * Density = total content area / bounding region area. + * Higher density suggests content-dense layouts (newspapers) -> prefer horizontal splits. + * Lower density suggests sparse layouts -> prefer vertical splits. + * + * @param objects List of objects + * @return Density ratio (0.0 to 1.0) + */ + static double computeDensityRatio(List objects) { + if (objects == null || objects.isEmpty()) { + return 1.0; // Default to XY-Cut + } + + BoundingBox regionBounds = calculateBoundingRegion(objects); + if (regionBounds == null) { + return 1.0; + } + + double regionArea = regionBounds.getArea(); + + if (regionArea <= 0) { + return 1.0; + } + + double contentArea = calculateTotalArea(objects); + return Math.min(1.0, contentArea / regionArea); + } + + /** + * Calculate the bounding box that encompasses all objects. + * + * @param objects List of objects + * @return Bounding box encompassing all objects, or null if no valid objects + */ + static BoundingBox calculateBoundingRegion(List objects) { + BoundingBox boundingBox = new BoundingBox(); + + for (IObject obj : objects) { + BoundingBox bbox = obj.getBoundingBox(); + boundingBox.union(bbox); + } + + return boundingBox.isEmpty() ? null : boundingBox; + } + + /** + * Calculate the total area covered by all objects. + * + * @param objects List of objects + * @return Total area + */ + static double calculateTotalArea(List objects) { + double totalArea = 0; + for (IObject obj : objects) { + BoundingBox bbox = obj.getBoundingBox(); + if (bbox != null) { + totalArea += bbox.getArea(); + } + } + return totalArea; + } + + // ========== PHASE 3: RECURSIVE SEGMENTATION ========== + + /** + * Recursively segment and sort objects using adaptive XY/YX-Cut. + *

    + * The algorithm uses projection-based gap detection to find clean cuts. + * For two-column academic paper layouts: + * 1. First try horizontal cut to separate header from body + * 2. Then try vertical cut to separate columns + *

    + * The algorithm prefers horizontal cuts first (Y-axis split) when there's a significant + * horizontal gap, which properly handles layouts with wide headers followed by columns. + * + * @param objects List of objects to segment + * @param preferHorizontalFirst Initial preference (used as tiebreaker) + * @return Sorted list of objects + */ + static List recursiveSegment(List objects, boolean preferHorizontalFirst) { + if (objects == null || objects.size() <= 1) { + return objects != null ? new ArrayList<>(objects) : new ArrayList<>(); + } + + // Find best cuts in both directions using projection-based detection + CutInfo horizontalCut = findBestHorizontalCutWithProjection(objects); + CutInfo verticalCut = findBestVerticalCutWithProjection(objects); + + // Choose cut direction based on gap sizes + // Apply minimum gap threshold to avoid splitting on insignificant gaps + boolean hasValidHorizontalCut = horizontalCut.gap >= MIN_GAP_THRESHOLD; + boolean hasValidVerticalCut = verticalCut.gap >= MIN_GAP_THRESHOLD; + + boolean useHorizontalCut; + if (hasValidHorizontalCut && hasValidVerticalCut) { + // Both cuts available - prefer larger gap + useHorizontalCut = horizontalCut.gap > verticalCut.gap; + } else if (hasValidHorizontalCut) { + useHorizontalCut = true; + } else if (hasValidVerticalCut) { + useHorizontalCut = false; + } else { + // No valid cuts found - sort by Y then X (reading order) + return sortByYThenX(objects); + } + + if (useHorizontalCut) { + List> groups = splitByHorizontalCut(objects, horizontalCut.position); + // Safety: if split produced only one group, fall back to prevent infinite recursion + if (groups.size() <= 1) { + return sortByYThenX(objects); + } + return flatMapRecursive(groups, preferHorizontalFirst); + } else { + List> groups = splitByVerticalCut(objects, verticalCut.position); + // Safety: if split produced only one group, fall back to prevent infinite recursion + if (groups.size() <= 1) { + return sortByYThenX(objects); + } + return flatMapRecursive(groups, preferHorizontalFirst); + } + } + + /** + * Container for cut information including position and gap size. + */ + private static class CutInfo { + final double position; + final double gap; + + CutInfo(double position, double gap) { + this.position = position; + this.gap = gap; + } + } + + /** + * Recursively process groups and flatten results. + */ + private static List flatMapRecursive(List> groups, boolean preferHorizontalFirst) { + List result = new ArrayList<>(); + for (List group : groups) { + result.addAll(recursiveSegment(group, preferHorizontalFirst)); + } + return result; + } + + /** + * Find the best vertical cut using projection profile. + * Projects all objects onto the X-axis and finds the largest gap. + * + * @param objects List of objects + * @return CutInfo containing position and gap size + */ + private static CutInfo findBestVerticalCutWithProjection(List objects) { + if (objects.size() < 2) { + return new CutInfo(0, 0); + } + + CutInfo edgeCut = findVerticalCutByEdges(objects); + + // If the edge gap is already significant, use it directly. + if (edgeCut.gap >= MIN_GAP_THRESHOLD) { + return edgeCut; + } + + // When edge gap is small, narrow outlier elements (e.g., page numbers, + // footnote markers) may bridge an otherwise clear column gap. + // Retry without elements narrower than 10% of the region width. + if (objects.size() >= 3) { + BoundingBox region = calculateBoundingRegion(objects); + if (region != null) { + double regionWidth = region.getWidth(); + double narrowThreshold = regionWidth * NARROW_ELEMENT_WIDTH_RATIO; + List filtered = new ArrayList<>(); + for (IObject obj : objects) { + BoundingBox bbox = obj.getBoundingBox(); + double width = bbox.getWidth(); + if (width >= narrowThreshold) { + filtered.add(obj); + } + } + if (filtered.size() >= 2 && filtered.size() < objects.size()) { + CutInfo filteredCut = findVerticalCutByEdges(filtered); + if (filteredCut.gap > edgeCut.gap && filteredCut.gap >= MIN_GAP_THRESHOLD) { + return filteredCut; + } + } + } + } + + return edgeCut; + } + + /** + * Find vertical cut by edge gaps. + * Finds the largest gap between rightX of one element and leftX of the next. + */ + private static CutInfo findVerticalCutByEdges(List objects) { + List sorted = new ArrayList<>(objects); + sorted.sort(Comparator.comparingDouble((IObject o) -> o.getBoundingBox().getLeftX()) + .thenComparingDouble(o -> o.getBoundingBox().getRightX())); + + double largestGap = 0; + double cutPosition = 0; + Double prevRight = null; + + for (IObject obj : sorted) { + double left = obj.getLeftX(); + double right = obj.getRightX(); + + if (prevRight != null && left > prevRight) { + double gap = left - prevRight; + if (gap > largestGap) { + largestGap = gap; + cutPosition = (prevRight + left) / 2.0; + } + } + + prevRight = (prevRight == null) ? right : Math.max(prevRight, right); + } + + return new CutInfo(cutPosition, largestGap); + } + + /** + * Find the best horizontal cut using projection profile. + * Projects all objects onto the Y-axis and finds the largest gap. + * + * @param objects List of objects + * @return CutInfo containing position and gap size + */ + private static CutInfo findBestHorizontalCutWithProjection(List objects) { + if (objects.size() < 2) { + return new CutInfo(0, 0); + } + + // Sort by topY descending (PDF: top to bottom) + List sorted = new ArrayList<>(objects); + sorted.sort(Comparator.comparingDouble((IObject o) -> -o.getBoundingBox().getTopY()) + .thenComparingDouble(o -> -o.getBoundingBox().getBottomY())); + + double largestGap = 0; + double cutPosition = 0; + Double prevBottom = null; + + for (IObject obj : sorted) { + double top = obj.getTopY(); + double bottom = obj.getBottomY(); + + if (prevBottom != null && prevBottom > top) { + double gap = prevBottom - top; + if (gap > largestGap) { + largestGap = gap; + cutPosition = (prevBottom + top) / 2.0; + } + } + + prevBottom = (prevBottom == null) ? bottom : Math.min(prevBottom, bottom); + } + + return new CutInfo(cutPosition, largestGap); + } + + /** + * Split objects by a horizontal cut at the given Y coordinate. + * Objects above the cut come first, then objects below. + * + * @param objects List of objects to split + * @param cutY Y coordinate of the cut + * @return List of two groups: [above, below] + */ + static List> splitByHorizontalCut(List objects, double cutY) { + List above = new ArrayList<>(); + List below = new ArrayList<>(); + + for (IObject obj : objects) { + // Use center Y to determine which group + double centerY = obj.getCenterY(); + if (centerY > cutY) { + above.add(obj); + } else { + below.add(obj); + } + } + + List> groups = new ArrayList<>(); + if (!above.isEmpty()) { + groups.add(above); + } + if (!below.isEmpty()) { + groups.add(below); + } + return groups; + } + + /** + * Split objects by a vertical cut at the given X coordinate. + * Objects to the left come first, then objects to the right. + * + * @param objects List of objects to split + * @param cutX X coordinate of the cut + * @return List of two groups: [left, right] + */ + static List> splitByVerticalCut(List objects, double cutX) { + List left = new ArrayList<>(); + List right = new ArrayList<>(); + + for (IObject obj : objects) { + // Use center X to determine which group + double centerX = obj.getCenterX(); + if (centerX < cutX) { + left.add(obj); + } else { + right.add(obj); + } + } + + List> groups = new ArrayList<>(); + if (!left.isEmpty()) { + groups.add(left); + } + if (!right.isEmpty()) { + groups.add(right); + } + return groups; + } + + // ========== PHASE 4: MERGING ========== + + /** + * Merge cross-layout elements back into the sorted content at appropriate positions. + * Cross-layout elements are inserted based on their Y position relative to surrounding content. + * + * @param sortedMain Main content sorted by reading order + * @param crossLayoutElements Cross-layout elements to merge + * @return Merged list with cross-layout elements in correct positions + */ + static List mergeCrossLayoutElements(List sortedMain, List crossLayoutElements) { + if (crossLayoutElements.isEmpty()) { + return sortedMain; + } + + if (sortedMain.isEmpty()) { + return sortByYThenX(crossLayoutElements); + } + + // Sort cross-layout elements by Y (top to bottom) + List sortedCrossLayout = sortByYThenX(crossLayoutElements); + + List result = new ArrayList<>(); + int mainIndex = 0; + int crossIndex = 0; + + while (mainIndex < sortedMain.size() || crossIndex < sortedCrossLayout.size()) { + if (crossIndex >= sortedCrossLayout.size()) { + // No more cross-layout elements, add remaining main + result.add(sortedMain.get(mainIndex++)); + } else if (mainIndex >= sortedMain.size()) { + // No more main elements, add remaining cross-layout + result.add(sortedCrossLayout.get(crossIndex++)); + } else { + // Compare Y positions (PDF: higher Y = top) + IObject mainObj = sortedMain.get(mainIndex); + IObject crossObj = sortedCrossLayout.get(crossIndex); + + double mainTopY = mainObj.getTopY(); + double crossTopY = crossObj.getTopY(); + + if (crossTopY >= mainTopY) { + // Cross-layout element is above or at same level, add it first + result.add(crossObj); + crossIndex++; + } else { + // Main element is above, add it first + result.add(mainObj); + mainIndex++; + } + } + } + + return result; + } + + // ========== UTILITY METHODS ========== + + /** + * Sort objects by Y coordinate (top to bottom), then X coordinate (left to right). + * + * @param objects List of objects to sort + * @return Sorted list + */ + static List sortByYThenX(List objects) { + List sorted = new ArrayList<>(objects); + sorted.sort(Comparator + .comparingDouble((IObject o) -> -o.getBoundingBox().getTopY()) // Higher Y first (top) + .thenComparingDouble(o -> o.getBoundingBox().getLeftX())); // Lower X first (left) + return sorted; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/text/TextGenerator.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/text/TextGenerator.java new file mode 100644 index 0000000..67d5bac --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/text/TextGenerator.java @@ -0,0 +1,268 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.text; + +import org.opendataloader.pdf.api.Config; +import org.verapdf.wcag.algorithms.entities.*; +import org.verapdf.wcag.algorithms.entities.lists.ListItem; +import org.verapdf.wcag.algorithms.entities.lists.PDFList; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderRow; + +import java.io.Closeable; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.stream.Collectors; + +/** + * Generates a plain text representation of the extracted PDF contents. + */ +public class TextGenerator implements Closeable { + + private static final Logger LOGGER = Logger.getLogger(TextGenerator.class.getCanonicalName()); + private static final String INDENT = " "; + + private final java.io.Writer textWriter; + private final String textFileName; + private final String lineSeparator = System.lineSeparator(); + private final String textPageSeparator; + /** + * Page numbers (1-based) selected by --pages; an empty set means all pages. + * Sourced from the raw {@link Config#getPageNumbers()} list (not the + * validated set built by {@code DocumentProcessor.getValidPageNumbers}). + * Safe to compare against {@code pageIndex + 1} because the surrounding + * loop is bounded by the document's actual page count, so out-of-range + * values from the raw list are never tested for membership. + */ + private final Set selectedPageNumbers; + private final boolean includeHeaderFooter; + + public TextGenerator(File inputPdf, Config config) throws IOException { + String cutPdfFileName = inputPdf.getName(); + this.textFileName = config.getOutputFolder() + File.separator + cutPdfFileName.substring(0, cutPdfFileName.length() - 3) + "txt"; + this.textWriter = new FileWriter(textFileName, StandardCharsets.UTF_8); + this.textPageSeparator = config.getTextPageSeparator(); + this.selectedPageNumbers = new HashSet<>(config.getPageNumbers()); + this.includeHeaderFooter = config.isIncludeHeaderFooter(); + } + + /** + * Creates a TextGenerator that writes to an arbitrary Writer (e.g., stdout). + */ + public TextGenerator(java.io.Writer writer, Config config) { + this.textFileName = null; + this.textWriter = writer; + this.textPageSeparator = config.getTextPageSeparator(); + this.selectedPageNumbers = new HashSet<>(config.getPageNumbers()); + this.includeHeaderFooter = config.isIncludeHeaderFooter(); + } + + public void writeToText(List> contents) { + try { + for (int pageIndex = 0; pageIndex < contents.size(); pageIndex++) { + if (selectedPageNumbers.isEmpty() || selectedPageNumbers.contains(pageIndex + 1)) { + writePageSeparator(pageIndex); + } + List pageContents = contents.get(pageIndex); + writeContents(pageContents, 0); + if (pageIndex < contents.size() - 1) { + textWriter.write(lineSeparator); + } + } + LOGGER.log(Level.INFO, "Created {0}", textFileName); + } catch (Exception e) { + LOGGER.log(Level.WARNING, "Unable to create text output: " + e.getMessage()); + } + } + + private void writePageSeparator(int pageIndex) throws IOException { + if (!textPageSeparator.isEmpty()) { + textWriter.write(textPageSeparator.contains(Config.PAGE_NUMBER_STRING) + ? textPageSeparator.replace(Config.PAGE_NUMBER_STRING, String.valueOf(pageIndex + 1)) + : textPageSeparator); + textWriter.write(lineSeparator); + } + } + + private void writeContents(List contents, int indentLevel) throws IOException { + for (int index = 0; index < contents.size(); index++) { + write(contents.get(index), indentLevel); + if (index < contents.size() - 1) { + textWriter.write(lineSeparator); + } + } + } + + private void write(IObject object, int indentLevel) throws IOException { + if (object instanceof SemanticHeaderOrFooter) { + if (includeHeaderFooter) { + writeHeaderOrFooter((SemanticHeaderOrFooter) object, indentLevel); + } + } else if (object instanceof SemanticHeading) { + writeMultiline(((SemanticHeading) object).getValue(), indentLevel); + } else if (object instanceof SemanticParagraph) { + writeMultiline(((SemanticParagraph) object).getValue(), indentLevel); + } else if (object instanceof SemanticTextNode) { + writeMultiline(((SemanticTextNode) object).getValue(), indentLevel); + } else if (object instanceof PDFList) { + writeList((PDFList) object, indentLevel); + } else if (object instanceof SemanticTOC) { + writeTOC((SemanticTOC) object, indentLevel); + } else if (object instanceof TableBorder) { + writeTable((TableBorder) object, indentLevel); + } + } + + private void writeHeaderOrFooter(SemanticHeaderOrFooter headerOrFooter, int indentLevel) throws IOException { + writeContents(headerOrFooter.getContents(), indentLevel); + } + + private void writeList(PDFList list, int indentLevel) throws IOException { + for (ListItem item : list.getListItems()) { + writeMultiline(item.toString(), indentLevel); + if (!item.getContents().isEmpty()) { + writeContents(item.getContents(), indentLevel + 1); + } + } + } + + private void writeTOC(SemanticTOC toc, int indentLevel) throws IOException { + for (IObject item : toc.getTOCItems()) { + if (item instanceof SemanticTOC) { + writeTOC((SemanticTOC)item, indentLevel + 1); + } else if (item instanceof SemanticTOCI) { + SemanticTOCI tocItem = (SemanticTOCI) item; + writeMultiline(tocItem.toString(), indentLevel); + if (!tocItem.getContents().isEmpty()) { + writeContents(tocItem.getContents(), indentLevel + 1); + } + } + } + } + + private void writeTable(TableBorder table, int indentLevel) throws IOException { + String indent = indent(indentLevel); + for (TableBorderRow row : table.getRows()) { + String rowText = Arrays.stream(row.getCells()) + .map(cell -> compactWhitespace(collectPlainText(cell.getContents()))) + .filter(text -> !text.isEmpty()) + .collect(Collectors.joining("\t")); + if (rowText.isEmpty()) { + continue; + } + textWriter.write(indent); + textWriter.write(rowText); + textWriter.write(lineSeparator); + } + } + + private String collectPlainText(List contents) { + StringBuilder builder = new StringBuilder(); + for (IObject content : contents) { + String piece = extractPlainText(content); + if (piece.isEmpty()) { + continue; + } + if (builder.length() > 0) { + builder.append(' '); + } + builder.append(piece); + } + return builder.toString(); + } + + private String extractPlainText(IObject content) { + if (content instanceof SemanticHeaderOrFooter) { + if (includeHeaderFooter) { + return collectPlainText(((SemanticHeaderOrFooter) content).getContents()); + } + return ""; + } else if (content instanceof SemanticHeading) { + return sanitize(((SemanticHeading) content).getValue()); + } else if (content instanceof SemanticParagraph) { + return sanitize(((SemanticParagraph) content).getValue()); + } else if (content instanceof SemanticTextNode) { + return sanitize(((SemanticTextNode) content).getValue()); + } else if (content instanceof PDFList) { + PDFList list = (PDFList) content; + return list.getListItems().stream() + .map(item -> compactWhitespace(collectPlainText(item.getContents()))) + .filter(text -> !text.isEmpty()) + .collect(Collectors.joining(" ")); + } else if (content instanceof TableBorder) { + TableBorder table = (TableBorder) content; + return Arrays.stream(table.getRows()) + .map(row -> Arrays.stream(row.getCells()) + .map(cell -> compactWhitespace(collectPlainText(cell.getContents()))) + .filter(text -> !text.isEmpty()) + .collect(Collectors.joining(" "))) + .filter(text -> !text.isEmpty()) + .collect(Collectors.joining(" ")); + } + return ""; + } + + private void writeMultiline(String value, int indentLevel) throws IOException { + if (value == null) { + return; + } + String sanitized = sanitize(value); + String indent = indent(indentLevel); + String[] lines = sanitized.split("\r?\n", -1); + for (String line : lines) { + if (line.isBlank()) { + continue; + } + textWriter.write(indent); + textWriter.write(line); + textWriter.write(lineSeparator); + } + } + + private String indent(int level) { + if (level <= 0) { + return ""; + } + return INDENT.repeat(level); + } + + private String sanitize(String value) { + return value == null ? "" : value.replace("\u0000", " "); + } + + private String compactWhitespace(String value) { + if (value == null) { + return ""; + } + String sanitized = sanitize(value); + return sanitized.replaceAll("\\s+", " ").trim(); + } + + @Override + public void close() throws IOException { + if (textWriter != null) { + textWriter.close(); + } + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/Base64ImageUtils.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/Base64ImageUtils.java new file mode 100644 index 0000000..91756f7 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/Base64ImageUtils.java @@ -0,0 +1,100 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.utils; + +import org.opendataloader.pdf.containers.StaticLayoutContainers; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.util.Base64; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * Utility class for converting images to Base64 data URIs. + */ +public final class Base64ImageUtils { + private static final Logger LOGGER = Logger.getLogger(Base64ImageUtils.class.getCanonicalName()); + + /** + * Maximum image file size for Base64 embedding (10MB). + * Larger images will be skipped to prevent memory exhaustion. + */ + public static final long MAX_EMBEDDED_IMAGE_SIZE = 10L * 1024 * 1024; + + private Base64ImageUtils() { + // Private constructor to prevent instantiation + } + + /** + * Converts an image file to a Base64 data URI string. + * Images larger than {@link #MAX_EMBEDDED_IMAGE_SIZE} will be skipped. + * + * @param imageFile The image file to convert + * @param format The image format (png, jpeg) + * @return The Base64 data URI string, or null if conversion fails or image is too large + */ + public static String toDataUri(File imageFile, String format) { + try { + // Embedded mode keeps encoded image bytes in memory keyed by the path + // generators expect — no disk roundtrip in production. + byte[] fileContent = StaticLayoutContainers.getEmbeddedImageBytes(imageFile.getPath()); + if (fileContent == null) { + // Disk fallback: runs in external mode (where files exist on disk) and + // also serves unit tests that prepare PNG files directly and bypass + // the in-memory pipeline (see ImageSerializerTest, MarkdownGenerator tests). + long fileSize = imageFile.length(); + if (fileSize > MAX_EMBEDDED_IMAGE_SIZE) { + LOGGER.log(Level.WARNING, "Image too large to embed ({0} bytes, max {1} bytes): {2}", + new Object[]{fileSize, MAX_EMBEDDED_IMAGE_SIZE, imageFile.getName()}); + return null; + } + fileContent = Files.readAllBytes(imageFile.toPath()); + } else if (fileContent.length > MAX_EMBEDDED_IMAGE_SIZE) { + LOGGER.log(Level.WARNING, "Image too large to embed ({0} bytes, max {1} bytes): {2}", + new Object[]{(long) fileContent.length, MAX_EMBEDDED_IMAGE_SIZE, imageFile.getName()}); + return null; + } + String base64 = Base64.getEncoder().encodeToString(fileContent); + String mimeType = getMimeType(format); + return String.format("data:%s;base64,%s", mimeType, base64); + } catch (IOException e) { + LOGGER.log(Level.WARNING, "Unable to convert image to Base64: " + e.getMessage()); + return null; + } + } + + /** + * Gets the MIME type for the given image format. + * + * @param format The image format (png, jpeg) + * @return The corresponding MIME type + */ + public static String getMimeType(String format) { + if (format == null) { + return "image/png"; + } + switch (format.toLowerCase()) { + case "jpeg": + case "jpg": + return "image/jpeg"; + case "png": + default: + return "image/png"; + } + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/BulletedParagraphUtils.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/BulletedParagraphUtils.java new file mode 100644 index 0000000..ba07100 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/BulletedParagraphUtils.java @@ -0,0 +1,160 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.utils; + +import org.verapdf.wcag.algorithms.entities.SemanticTextNode; +import org.verapdf.wcag.algorithms.entities.content.TextLine; + +import java.util.HashSet; +import java.util.Set; + +/** + * Utility class for detecting and processing bulleted paragraphs and list items. + * Provides methods to identify various bullet and label formats including symbols, + * numbers, Korean characters, and special Unicode characters. + */ +public class BulletedParagraphUtils { + private static final String POSSIBLE_LABELS = "∘*+-.=‐‑‒–—―•‣․‧※⁃⁎→↳⇒⇨⇾∙■□▢▣▤▥▦▧▨▩▪▬▭▮▯▰▱▲△▴▵▶▷▸▹►▻▼▽▾▿◀◁◂◃◄◅◆◇◈◉◊○◌◍" + + "◎●◐◑◒◓◔◕◖◗◘◙◢◣◤◥◦◧◨◩◪◫◬◭◮◯◰◱◲◳◴◵◶◷◸◹◺◻◼◽◾◿★☆☐☑☒☓☛☞♠♡♢♣♤♥♦♧⚪⚫⚬✓✔✕✖✗✘✙✚✛✜✝✞✟✦✧✨❍❏❐❑" + + "❒❖➔➙➛➜➝➞➟➠➡➢➣➤➥➦➧➨➩➪➭➮➯➱⬛⬜⬝⬞⬟⬠⬡⬢⬣⬤⬥⬦⬧⬨⬩⬪⬫⬬⬭⬮⬯⭐⭑⭒⭓⭔⭕⭖⭗⭘⭙⯀⯁⯂⯃⯄⯅⯆⯇⯈⯌⯍⯎⯏⯐〇" + + "󰁾󰋪󰋫󰋬󰋭󰋮󰋯󰋰󰋱󰋲󰋳󰋴󰋵󰋶󰋷󰋸󰋹󰋺󰋻󰋼"; + private static final Set BULLET_REGEXES = new HashSet<>(); + private static final Set ARABIC_NUMBER_REGEXES = new HashSet<>(); + private static final String KOREAN_NUMBERS_REGEX = "[가나다라마바사아자차카타파하거너더러머버서어저처커터퍼허고노도로모보소오조초코토포호구누두루무부수우주추쿠투푸후그느드르므브스으즈츠크트프흐기니디리미비시이지치키티피히]"; + /** Regular expression for Korean chapter patterns like 제1장, 제2조, 제3절. */ + public static final String KOREAN_CHAPTER_REGEX = "^(제\\d+[장조절]).*"; + + /** + * Gets the first character label from a text node. + * + * @param semanticTextNode the text node to extract the label from + * @return the first character of the text node value + */ + public static String getLabel(SemanticTextNode semanticTextNode) { + return semanticTextNode.getValue().substring(0, 1); + } + + /** + * Checks if a text node starts with a bullet or list marker. + * + * @param textNode the text node to check + * @return true if the first line is bulleted, false otherwise + */ + public static boolean isBulletedParagraph(SemanticTextNode textNode) { + return isBulletedLine(textNode.getFirstLine()); + } + + /** + * Checks if a text line starts with a bullet or list marker. + * + * @param textLine the text line to check + * @return true if the line is bulleted, false otherwise + */ + public static boolean isBulletedLine(TextLine textLine) { + if (isLabeledLine(textLine)) { + return true; + } + return false; + } + + /** + * Checks if a text line starts with a recognized label character or pattern. + * + * @param textLine the text line to check + * @return true if the line has a recognized label, false otherwise + */ + public static boolean isLabeledLine(TextLine textLine) { + String value = textLine.getValue(); + if (value == null || value.isEmpty()) { + return false; + } + char character = value.charAt(0); + if (POSSIBLE_LABELS.indexOf(character) != -1) { + return true; + } + if (textLine.getConnectedLineArtLabel() != null) { + return true; + } + for (String regex : BULLET_REGEXES) { + if (value.matches(regex)) { + return true; + } + } + return false; + } + + /** + * Checks if a text node has a connected line art label (graphical bullet). + * + * @param textNode the text node to check + * @return true if the first line has a connected line art label, false otherwise + */ + public static boolean isBulletedLineArtParagraph(SemanticTextNode textNode) { + return textNode.getFirstLine().getConnectedLineArtLabel() != null; + } + + /** + * Finds the matching regex pattern for a text node's label. + * + * @param textNode the text node to analyze + * @return the matching regex pattern, or null if no pattern matches + */ + public static String getLabelRegex(SemanticTextNode textNode) { + String value = textNode.getFirstLine().getValue(); + for (String regex : BULLET_REGEXES) { + if (value.matches(regex)) { + return regex; + } + } + return null; + } + + static { + ARABIC_NUMBER_REGEXES.add("^\\d+[ \\.\\]\\)>].*"); + BULLET_REGEXES.add("^\\(\\d+\\).*"); + ARABIC_NUMBER_REGEXES.add("^<\\d+>.*"); + ARABIC_NUMBER_REGEXES.add("^\\[\\d+\\].*"); + ARABIC_NUMBER_REGEXES.add("^{\\d+}.*"); + ARABIC_NUMBER_REGEXES.add("^【\\d+】.*"); + BULLET_REGEXES.add("^\\d+[\\.\\)]\\s+.*"); + BULLET_REGEXES.add("^[ㄱㄴㄷㄹㅁㅂㅅㅇㅈㅊㅋㅌㅍㅎ][\\.\\)\\]>].*"); + BULLET_REGEXES.add("^" + KOREAN_NUMBERS_REGEX + "\\..+"); + BULLET_REGEXES.add("^" + KOREAN_NUMBERS_REGEX + "[)\\]>].*"); + BULLET_REGEXES.add("^" + KOREAN_NUMBERS_REGEX + "(-\\d+).*"); + BULLET_REGEXES.add("^\\(" + KOREAN_NUMBERS_REGEX + "\\).*"); + BULLET_REGEXES.add("^<" + KOREAN_NUMBERS_REGEX + ">.*"); + BULLET_REGEXES.add("^\\[" + KOREAN_NUMBERS_REGEX + "\\].*"); + BULLET_REGEXES.add("^[{]" + KOREAN_NUMBERS_REGEX + "[}].*"); + BULLET_REGEXES.add(KOREAN_CHAPTER_REGEX); + BULLET_REGEXES.add("^법\\.(제\\d+조).*"); + BULLET_REGEXES.add("^[\u0049]\\..*");//"^[Ⅰ-Ⅻ]" + BULLET_REGEXES.add("^[\u2160-\u216B].*");//"^[Ⅰ-Ⅻ]" + BULLET_REGEXES.add("^[\u2170-\u217B].*");//"^[ⅰ-ⅻ]" + BULLET_REGEXES.add("^[\u2460-\u2473].*");//"^[①-⑳]" + BULLET_REGEXES.add("^[\u2474-\u2487].*");//"^[⑴-⒇]" + BULLET_REGEXES.add("^[\u2488-\u249B].*");//"^[⒈-⒛]" + BULLET_REGEXES.add("^[\u249C-\u24B5].*");//"^[⒜-⒵]" + BULLET_REGEXES.add("^[\u24B6-\u24CF].*");//"^[Ⓐ-Ⓩ]" + BULLET_REGEXES.add("^[\u24D0-\u24E9].*");//"^[ⓐ-ⓩ]" + BULLET_REGEXES.add("^[\u24F5-\u24FE].*");//"^[⓵-⓾]" + BULLET_REGEXES.add("^[\u2776-\u277F].*");//"^[❶-❿]" + BULLET_REGEXES.add("^[\u2780-\u2789].*");//"^[➀-➉]" + BULLET_REGEXES.add("^[\u278A-\u2793].*");//"^[➊-➓]" + BULLET_REGEXES.add("^[\u326E-\u327B].*");//"^[㉮-㉻]" + BULLET_REGEXES.add("^[\uF081-\uF08A].*");//"^[-]" + BULLET_REGEXES.add("^[\uF08C-\uF095].*");//"^[-]" + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/ContentSanitizer.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/ContentSanitizer.java new file mode 100644 index 0000000..b08b083 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/ContentSanitizer.java @@ -0,0 +1,322 @@ +package org.opendataloader.pdf.utils; + +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticHeaderOrFooter; +import org.verapdf.wcag.algorithms.entities.SemanticTextNode; +import org.verapdf.wcag.algorithms.entities.content.TextBlock; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.content.TextColumn; +import org.verapdf.wcag.algorithms.entities.content.TextLine; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.entities.lists.ListItem; +import org.verapdf.wcag.algorithms.entities.lists.PDFList; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderRow; + +import java.util.Comparator; +import java.util.List; +import java.util.ArrayList; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.regex.Matcher; + +public class ContentSanitizer { + private static final Logger LOGGER = Logger.getLogger(ContentSanitizer.class.getName()); + private final List rules; + private final boolean contentSafetyEnabled; + + public ContentSanitizer(List rules) { + this.rules = rules; + this.contentSafetyEnabled = true; + } + + public ContentSanitizer(List rules, boolean contentSafetyEnabled) { + this.rules = rules; + this.contentSafetyEnabled = contentSafetyEnabled; + } + + public void sanitizeContents(List> contents) { + if (!contentSafetyEnabled) { + return; + } + + for (List pageContents : contents) { + for (IObject obj : pageContents) { + processObject(obj); + } + } + } + + private void processObject(IObject obj) { + if (obj instanceof SemanticTextNode) { + processSemanticTextNode((SemanticTextNode) obj); + } else if (obj instanceof TextLine) { + processTextLine((TextLine) obj); + } else if (obj instanceof PDFList) { + processPDFList((PDFList) obj); + } else if (obj instanceof TableBorder) { + processTableBorder((TableBorder) obj); + } else if (obj instanceof SemanticHeaderOrFooter) { + processSemanticHeaderOrFooter((SemanticHeaderOrFooter) obj); + } + } + + private void processSemanticHeaderOrFooter(SemanticHeaderOrFooter headerOrFooter) { + for (IObject obj : headerOrFooter.getContents()) { + processObject(obj); + } + } + + private void processPDFList(PDFList pdfList) { + for (ListItem listItem : pdfList.getListItems()) { + for (TextLine textLine : listItem.getLines()) { + processTextLine(textLine); + } + for (IObject obj : listItem.getContents()) { + processObject(obj); + } + } + } + + private void processTableBorder(TableBorder tableBorder) { + for (TableBorderRow row : tableBorder.getRows()) { + TableBorderCell[] cells = row.getCells(); + for (int columnNumber = 0; columnNumber < cells.length; columnNumber++) { + TableBorderCell cell = cells[columnNumber]; + if (cell.getColNumber() == columnNumber && cell.getRowNumber() == row.getRowNumber()) { + for (IObject obj : cell.getContents()) { + processObject(obj); + } + } + } + } + } + + private void processSemanticTextNode(SemanticTextNode node) { + for (TextColumn textColumn : node.getColumns()) { + for (TextBlock textBlock : textColumn.getBlocks()) { + for (TextLine textLine : textBlock.getLines()) { + processTextLine(textLine); + } + } + } + } + + private void processTextLine(TextLine textLine) { + if (textLine == null || textLine.getTextChunks() == null || textLine.getTextChunks().isEmpty()) { + return; + } + String originalText = textLine.getValue(); + if (originalText.isEmpty()) { + return; + } + + List replacements = findAllReplacements(originalText); + if (replacements.isEmpty()) { + return; + } + List textChunks = textLine.getTextChunks(); + List newChunks = applyReplacementsToChunks(textChunks, replacements); + + textChunks.clear(); + textChunks.addAll(newChunks); + } + + protected List applyReplacementsToChunks(List originalChunks, + List replacements) { + List newChunks = new ArrayList<>(); + List chunkInfos = getChunkInfos(originalChunks); + int currentChunkIndex = 0; + int currentPosition = 0; + replacements.sort(Comparator.comparingInt((ReplacementInfo a) -> a.originalStart) + .thenComparing(Comparator.comparingInt((ReplacementInfo a) -> a.originalEnd).reversed())); + removeOverlappingReplacements(replacements); + for (ReplacementInfo replacement : replacements) { + while (currentPosition < replacement.originalStart && currentChunkIndex < chunkInfos.size()) { + ChunkInfo info = chunkInfos.get(currentChunkIndex); + if (currentPosition >= info.start && currentPosition < info.end) { + int chunkStart = currentPosition - info.start; + int chunkEnd = Math.min(info.end, replacement.originalStart) - info.start; + + if (chunkStart < chunkEnd) { + TextChunk chunk = originalChunks.get(currentChunkIndex); + TextChunk subChunk = TextChunk.getTextChunk(chunk, chunkStart, chunkEnd); + if (isNotEmptyChunk(subChunk)) { + newChunks.add(subChunk); + } + } + currentPosition = Math.min(info.end, replacement.originalStart); + + if (currentPosition >= info.end) { + currentChunkIndex++; + } + } else { + currentChunkIndex++; + } + } + int endChunkIndex = findEndChunkIndex(currentChunkIndex, chunkInfos, replacement); + String replacementText = replacement.replacementText; + if (!replacementText.isEmpty()) { + newChunks.add(createReplacementChunk(originalChunks, currentChunkIndex, replacementText, endChunkIndex, replacement, chunkInfos)); + } + currentPosition = replacement.originalEnd; + currentChunkIndex = endChunkIndex; + if (currentChunkIndex < chunkInfos.size() && currentPosition == chunkInfos.get(endChunkIndex).end) { + currentChunkIndex++; + } + + } + if (currentChunkIndex < chunkInfos.size()) { + ChunkInfo info = chunkInfos.get(currentChunkIndex); + + if (currentPosition >= info.start && currentPosition < info.end) { + int chunkStart = currentPosition - info.start; + TextChunk chunk = originalChunks.get(currentChunkIndex); + TextChunk subChunk = TextChunk.getTextChunk(chunk, chunkStart, info.length); + if (isNotEmptyChunk(subChunk)) { + newChunks.add(subChunk); + } + currentChunkIndex++; + } + while (currentChunkIndex < originalChunks.size()) { + info = chunkInfos.get(currentChunkIndex); + if (currentPosition < info.start) { + TextChunk chunk = originalChunks.get(currentChunkIndex); + if (isNotEmptyChunk(chunk)) { + newChunks.add(chunk); + } + } + currentChunkIndex++; + } + } + + return newChunks; + } + + private static boolean doReplacementsOverlap(ReplacementInfo a, ReplacementInfo b) { + return Math.max(a.originalStart, b.originalStart) < Math.min(a.originalEnd, b.originalEnd); + } + + private static void removeOverlappingReplacements(List replacements) { + if (replacements.size() <= 1) { + return; + } + + int index = 1; + ReplacementInfo lastReplacement = replacements.get(0); + + for (int i = 1; i < replacements.size(); i++) { + ReplacementInfo cur = replacements.get(i); + if (!doReplacementsOverlap(lastReplacement, cur)) { + replacements.set(index++, cur); + lastReplacement = cur; + } else { + LOGGER.log(Level.INFO,"Dropping overlapping replacement: " + cur.replacementText + + " (start = " + cur.originalStart + ", end = " + cur.originalEnd + ") overlaps with " + + lastReplacement.replacementText + " (start = " + lastReplacement.originalStart + + ", end = " + lastReplacement.originalEnd + ")"); + } + } + replacements.subList(index, replacements.size()).clear(); + } + + private TextChunk createReplacementChunk(List originalChunks, int currentChunkIndex, String replacementText, + int endChunkIndex, ReplacementInfo replacement, List chunkInfos) { + TextChunk sourceChunk = originalChunks.get(currentChunkIndex); + TextChunk replacementChunk = new TextChunk(sourceChunk); + replacementChunk.setValue(replacementText); + updateBBoxForReplacement(replacementChunk, originalChunks, currentChunkIndex, endChunkIndex, replacement.originalStart, replacement.originalEnd, chunkInfos); + return replacementChunk; + } + + private int findEndChunkIndex(int currentChunkIndex, List chunkInfos, ReplacementInfo replacement) { + int endChunkIndex = -1; + for (int i = currentChunkIndex; i < chunkInfos.size(); i++) { + ChunkInfo info = chunkInfos.get(i); + if (replacement.originalEnd > info.start && + replacement.originalEnd <= info.end) { + endChunkIndex = i; + break; + } + } + if (endChunkIndex == -1) { + endChunkIndex = chunkInfos.size() - 1; + } + return endChunkIndex; + } + + private boolean isNotEmptyChunk(TextChunk chunk) { + return chunk != null && chunk.getValue() != null && !chunk.getValue().isEmpty(); + } + + protected List findAllReplacements(String originalText) { + List replacements = new ArrayList<>(); + + for (SanitizationRule rule : rules) { + Matcher matcher = rule.getPattern().matcher(originalText); + while (matcher.find()) { + replacements.add(new ReplacementInfo(matcher.start(), matcher.end(), rule.getReplacement())); + } + } + return replacements; + } + + private void updateBBoxForReplacement(TextChunk replacementChunk, + List originalChunks, + int startChunkIndex, int endChunkIndex, + int replacementStart, int replacementEnd, + List chunkInfos) { + TextChunk firstChunk = originalChunks.get(startChunkIndex); + TextChunk lastChunk = originalChunks.get(endChunkIndex); + ChunkInfo firstInfo = chunkInfos.get(startChunkIndex); + ChunkInfo lastInfo = chunkInfos.get(endChunkIndex); + int startInFirstChunk = replacementStart - firstInfo.start; + int endInLastChunk = replacementEnd - lastInfo.start; + double left = firstChunk.getSymbolStartCoordinate(startInFirstChunk); + double right = lastChunk.getSymbolStartCoordinate(endInLastChunk); + + BoundingBox bBox = replacementChunk.getBoundingBox(); + bBox.setLeftX(left); + bBox.setRightX(right); + replacementChunk.adjustSymbolEndsToBoundingBox(null); + } + + protected static class ReplacementInfo { + int originalStart; + int originalEnd; + String replacementText; + + ReplacementInfo(int originalStart, int originalEnd, String replacementText) { + this.originalStart = originalStart; + this.originalEnd = originalEnd; + this.replacementText = replacementText; + } + } + + private static class ChunkInfo { + int start; + int end; + int length; + + ChunkInfo(int start, int length) { + this.start = start; + this.length = length; + this.end = start + length; + } + } + + private List getChunkInfos(List textChunks) { + List infos = new ArrayList<>(); + int currentPosition = 0; + + for (TextChunk chunk : textChunks) { + String chunkText = chunk.getValue() != null ? chunk.getValue() : ""; + int chunkLength = chunkText.length(); + infos.add(new ChunkInfo(currentPosition, chunkLength)); + currentPosition += chunkLength; + } + + return infos; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/FileUtils.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/FileUtils.java new file mode 100644 index 0000000..806743c --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/FileUtils.java @@ -0,0 +1,31 @@ +package org.opendataloader.pdf.utils; + +/** + * File-name utility helpers shared across the PDF processing pipeline. + */ +public class FileUtils { + + private FileUtils() { + // utility class — no instances + } + + /** + * Returns the base name of {@code fileName} by stripping the last extension. + * + *

    Uses {@link String#lastIndexOf(int) lastIndexOf('.')} so it correctly handles: + *

      + *
    • Uppercase extensions — {@code "my_paper.PDF"} → {@code "my_paper"}
    • + *
    • Multi-dot filenames — {@code "report.v1.2.pdf"} → {@code "report.v1.2"}
    • + *
    • No extension — {@code "myfile"} → {@code "myfile"}
    • + *
    • Hidden files / dot at index 0 — {@code ".hidden"} → {@code ".hidden"}
    • + *
    + * + * @param fileName the plain file name (not a full path) + * @return the file name without its last extension, or the original string if no + * extension is present or the only dot is at position 0 + */ + public static String getBaseName(String fileName) { + int dotIndex = fileName.lastIndexOf('.'); + return dotIndex > 0 ? fileName.substring(0, dotIndex) : fileName; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/GeneratorUtils.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/GeneratorUtils.java new file mode 100644 index 0000000..34e68d8 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/GeneratorUtils.java @@ -0,0 +1,53 @@ +package org.opendataloader.pdf.utils; + +import org.opendataloader.pdf.html.HtmlGenerator; +import org.opendataloader.pdf.markdown.MarkdownGenerator; +import org.verapdf.wcag.algorithms.entities.SemanticTextNode; +import org.verapdf.wcag.algorithms.entities.content.TextBlock; +import org.verapdf.wcag.algorithms.entities.content.TextColumn; +import org.verapdf.wcag.algorithms.entities.content.TextLine; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.TextChunkUtils; + +import java.util.List; + +public class GeneratorUtils { + + public static String getTextFromTextNode(SemanticTextNode textNode, OutputType outputType) { + StringBuilder stringBuilder = new StringBuilder(); + for (TextColumn column : textNode.getColumns()) { + List blocks = column.getBlocks(); + for (int i = 0; i < blocks.size() - 1; i++) { + TextBlock block = blocks.get(i); + stringBuilder.append(getTextFromLines(block.getLines(), outputType)); + TextChunkUtils.formatLineEnd(stringBuilder); + } + stringBuilder.append(getTextFromLines(blocks.get(blocks.size() - 1).getLines(), outputType)); + } + return stringBuilder.toString(); + } + + public static String getTextFromLines(List textLines, OutputType outputType) { + StringBuilder stringBuilder = new StringBuilder(); + for (int i = 0; i < textLines.size() - 1; i++) { + TextLine line = textLines.get(i); + switch (outputType) { + case MD: + MarkdownGenerator.getTextFromLineForMarkdown(line, stringBuilder); + break; + case HTML: + HtmlGenerator.getTextFromLineForHTML(line, stringBuilder); + break; + } + TextChunkUtils.formatLineEnd(stringBuilder); + } + switch (outputType) { + case MD: + MarkdownGenerator.getTextFromLineForMarkdown(textLines.get(textLines.size() - 1), stringBuilder); + break; + case HTML: + HtmlGenerator.getTextFromLineForHTML(textLines.get(textLines.size() - 1), stringBuilder); + break; + } + return stringBuilder.toString(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/ImagesUtils.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/ImagesUtils.java new file mode 100644 index 0000000..4b5ace6 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/ImagesUtils.java @@ -0,0 +1,200 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.utils; + +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.opendataloader.pdf.entities.SemanticPicture; +import org.opendataloader.pdf.markdown.MarkdownSyntax; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.ObjectKey; +import org.verapdf.wcag.algorithms.entities.SemanticHeaderOrFooter; +import org.verapdf.wcag.algorithms.entities.content.ImageChunk; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.entities.lists.ListItem; +import org.verapdf.wcag.algorithms.entities.lists.PDFList; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderRow; +import org.verapdf.wcag.algorithms.semanticalgorithms.consumers.ContrastRatioConsumer; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.StreamInfo; + +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class ImagesUtils { + private static final Logger LOGGER = Logger.getLogger(ImagesUtils.class.getCanonicalName()); + + /** + * Tracks whether the images output directory has already been created for this + * ImagesUtils instance, so we only invoke {@link #createImagesDirectory(String)} + * once per document — matching the previous behaviour that piggy-backed on the + * (now removed) {@code contrastRatioConsumer} field as a "first call" sentinel. + */ + private boolean imagesDirectoryInitialized = false; + + public void createImagesDirectory(String path) { + // Embedded mode is self-contained: no external image directory is created. + if (StaticLayoutContainers.isEmbedImages()) { + return; + } + File directory = new File(path); + if (!directory.exists()) { + directory.mkdirs(); + } + } + + public void write(List> contents) { + for (int pageNumber = 0; pageNumber < StaticContainers.getDocument().getNumberOfPages(); pageNumber++) { + for (IObject content : contents.get(pageNumber)) { + writeFromContents(content); + } + } + } + + private void writeFromContents(IObject content) { + if (content instanceof ImageChunk) { + writeImage((ImageChunk) content); + } else if (content instanceof SemanticPicture) { + writePicture((SemanticPicture) content); + } else if (content instanceof PDFList) { + for (ListItem listItem : ((PDFList) content).getListItems()) { + for (IObject item : listItem.getContents()) { + writeFromContents(item); + } + } + } else if (content instanceof TableBorder) { + for (TableBorderRow row : ((TableBorder) content).getRows()) { + TableBorderCell[] cells = row.getCells(); + for (int columnNumber = 0; columnNumber < cells.length; columnNumber++) { + TableBorderCell cell = cells[columnNumber]; + if (cell.getColNumber() == columnNumber && cell.getRowNumber() == row.getRowNumber()) { + for (IObject item : cell.getContents()) { + writeFromContents(item); + } + } + } + } + } else if (content instanceof SemanticHeaderOrFooter) { + for (IObject item : ((SemanticHeaderOrFooter) content).getContents()) { + writeFromContents(item); + } + } + } + + protected void writeImage(ImageChunk chunk) { + int currentImageIndex = StaticLayoutContainers.incrementImageIndex(); + ensureImagesDirectoryInitialized(); + String imageFormat = StaticLayoutContainers.getImageFormat(); + String fileName = String.format(MarkdownSyntax.IMAGE_FILE_NAME_FORMAT, StaticLayoutContainers.getImagesDirectory(), + File.separator, currentImageIndex, imageFormat); + chunk.setIndex(currentImageIndex); + StreamInfo streamInfo = chunk.getStreamInfos() != null && !chunk.getStreamInfos().isEmpty() ? chunk.getStreamInfos().get(0) : null; + createImageFile(chunk.getBoundingBox(), fileName, imageFormat, streamInfo != null ? streamInfo.getXImageObjectKey() : null); + } + + protected void writePicture(SemanticPicture picture) { + int pictureIndex = picture.getPictureIndex(); + ensureImagesDirectoryInitialized(); + String imageFormat = StaticLayoutContainers.getImageFormat(); + String fileName = String.format(MarkdownSyntax.IMAGE_FILE_NAME_FORMAT, StaticLayoutContainers.getImagesDirectory(), + File.separator, pictureIndex, imageFormat); + createImageFile(picture.getBoundingBox(), fileName, imageFormat, null); + } + + private void ensureImagesDirectoryInitialized() { + if (!imagesDirectoryInitialized) { + createImagesDirectory(StaticLayoutContainers.getImagesDirectory()); + imagesDirectoryInitialized = true; + } + } + + /** + * Issue #458 hotfix: no longer keeps a long-lived reference to + * {@link ContrastRatioConsumer} on this instance. The consumer is + * retrieved per call from {@link StaticLayoutContainers} (which caches + * it in a ThreadLocal), used to fetch the page sub-image, and then + * dropped — letting the JVM reclaim the rendered BufferedImage as + * soon as {@link #writeBufferedImageToFile} returns. + */ + private void createImageFile(BoundingBox imageBox, String fileName, String imageFormat, ObjectKey xImageObjectKey) { + if (StaticContainers.getImagesUtils() == null) { + LOGGER.log(Level.WARNING, "Image extraction will be skipped for this document."); + return; + } + BufferedImage targetImage = null; + if (xImageObjectKey != null) { + targetImage = StaticContainers.getImagesUtils().getXObjectImage(imageBox.getPageNumber(), xImageObjectKey); + } + if (targetImage == null) { + targetImage = StaticContainers.getImagesUtils().getPageSubImage(imageBox); + } + if (targetImage == null) { + return; + } + writeBufferedImageToFile(targetImage, fileName, imageFormat); + } + + /** + * Writes the given {@link BufferedImage} to disk (or embed cache) and + * always invokes {@link BufferedImage#flush()} afterwards — even on + * I/O failure — so the raster data and any cached resources become + * eligible for GC. + * + * Hotfix for issue #458: without flush(), large page-sub-images + * accumulate on the heap and trigger {@code OutOfMemoryError}. + * + * Package-private to allow direct unit testing of the flush contract. + */ + void writeBufferedImageToFile(BufferedImage targetImage, String fileName, String imageFormat) { + try { + try { + if (StaticLayoutContainers.isEmbedImages()) { + // Embedded mode: encode in memory and cache for downstream base64 inlining; + // no disk write — output is a single self-contained file. + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + ImageIO.write(targetImage, imageFormat, buffer); + StaticLayoutContainers.cacheEmbeddedImageBytes(fileName, buffer.toByteArray()); + } else { + File outputFile = new File(fileName); + ImageIO.write(targetImage, imageFormat, outputFile); + } + } catch (IOException e) { + // Same catch covers both branches — encoding-to-buffer (embedded) + // and writing-to-disk (external). Keep the message neutral. + LOGGER.log(Level.WARNING, "Unable to encode image: " + e.getMessage()); + } + } finally { + // Issue #458: release raster + cached resources so they can be GC'd + // even if encoding/writing fails. + targetImage.flush(); + } + } + + public static boolean isImageFileExists(String fileName) { + if (StaticLayoutContainers.isEmbedImages() && StaticLayoutContainers.hasEmbeddedImageBytes(fileName)) { + return true; + } + File outputFile = new File(fileName); + return outputFile.exists(); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/ModeWeightStatistics.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/ModeWeightStatistics.java new file mode 100644 index 0000000..0b8f810 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/ModeWeightStatistics.java @@ -0,0 +1,75 @@ +package org.opendataloader.pdf.utils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +public class ModeWeightStatistics { + private final double scoreMax; + private final double scoreMin; + private final double modeMin; + private final double modeMax; + private final Map countMap = new HashMap<>(); + private List> sorted = new ArrayList<>(); + private List higherScores = new ArrayList<>(); + private boolean isInitHigherScores = false; + + public ModeWeightStatistics(double scoreMin, double scoreMax, double modeMin, double modeMax) { + this.scoreMin = scoreMin; + this.scoreMax = scoreMax; + this.modeMin = modeMin; + this.modeMax = modeMax; + } + + public void addScore(double score) { + countMap.merge(score, 1L, Long::sum); + } + + public double getBoost(double score) { + initHigherScores(); + int n = higherScores.size(); + if (n == 0) { + return 0.0; + } + for (int i = 0; i < n; i++) { + if (Double.compare(higherScores.get(i), score) == 0) { + return (double) (i + 1) / n; + } + } + return 0.0; + } + + public void sortByFrequency() { + sorted = new ArrayList<>(countMap.entrySet()); + sorted.sort((a, b) -> Long.compare(b.getValue(), a.getValue())); + } + + public double getMode() { + for (Map.Entry entry : sorted) { + double value = entry.getKey(); + if (value >= modeMin && value <= modeMax) { + return value; + } + } + return 0.0; + } + + private void initHigherScores() { + if (isInitHigherScores) { + return; + } + + sortByFrequency(); + double mode = getMode(); + + higherScores = sorted.stream() + .map(Map.Entry::getKey) + .filter(s -> s > mode && s >= scoreMin && s <= scoreMax) + .sorted() + .collect(Collectors.toList()); + + isInitHigherScores = true; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/OutputType.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/OutputType.java new file mode 100644 index 0000000..780a32f --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/OutputType.java @@ -0,0 +1,9 @@ +package org.opendataloader.pdf.utils; + +public enum OutputType { + TXT, + MD, + HTML, + JSON, + PDF +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/SanitizationRule.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/SanitizationRule.java new file mode 100644 index 0000000..a96ed2b --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/SanitizationRule.java @@ -0,0 +1,21 @@ +package org.opendataloader.pdf.utils; + +import java.util.regex.Pattern; + +public class SanitizationRule { + private final Pattern pattern; + private final String replacement; + + public SanitizationRule(Pattern pattern, String replacement) { + this.pattern = pattern; + this.replacement = replacement; + } + + public Pattern getPattern() { + return pattern; + } + + public String getReplacement() { + return replacement; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/TextNodeStatistics.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/TextNodeStatistics.java new file mode 100644 index 0000000..92db752 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/TextNodeStatistics.java @@ -0,0 +1,47 @@ +package org.opendataloader.pdf.utils; + +import org.verapdf.wcag.algorithms.entities.SemanticTextNode; + +public class TextNodeStatistics { + private final ModeWeightStatistics fontSizeStatistics; + private final ModeWeightStatistics fontWeightStatistics; + private final TextNodeStatisticsConfig config; + + public TextNodeStatistics() { + this(new TextNodeStatisticsConfig()); + } + + public TextNodeStatistics(TextNodeStatisticsConfig config) { + this.config = config; + + double sizeScoreMin = config.fontSizeHeadingMin; + double sizeScoreMax = config.fontSizeHeadingMax; + double sizeModeMin = config.fontSizeDominantMin; + double sizeModeMax = config.fontSizeDominantMax; + fontSizeStatistics = new ModeWeightStatistics(sizeScoreMin, sizeScoreMax, sizeModeMin, sizeModeMax); + + double weightScoreMin = config.fontWeightHeadingMin; + double weightScoreMax = config.fontWeightHeadingMax; + double weightModeMin = config.fontWeightDominantMin; + double weightModeMax = config.fontWeightDominantMax; + fontWeightStatistics = new ModeWeightStatistics(weightScoreMin, weightScoreMax, weightModeMin, weightModeMax); + } + + public void addTextNode(SemanticTextNode textNode) { + if (textNode == null) { + return; + } + fontSizeStatistics.addScore(textNode.getFontSize()); + fontWeightStatistics.addScore(textNode.getFontWeight()); + } + + public double fontSizeRarityBoost(SemanticTextNode textNode) { + double boost = fontSizeStatistics.getBoost(textNode.getFontSize()); + return boost * config.fontSizeRarityBoost; + } + + public double fontWeightRarityBoost(SemanticTextNode textNode) { + double boost = fontWeightStatistics.getBoost(textNode.getFontWeight()); + return boost * config.fontWeightRarityBoost; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/TextNodeStatisticsConfig.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/TextNodeStatisticsConfig.java new file mode 100644 index 0000000..9dc35f7 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/TextNodeStatisticsConfig.java @@ -0,0 +1,20 @@ +package org.opendataloader.pdf.utils; + +/** + * Configuration holder that exposes the scoring constants used by {@link TextNodeStatistics}. + * The defaults mimic the legacy hard-coded probabilities but callers may override them + * to tune heading detection without touching the algorithm code. + */ +public class TextNodeStatisticsConfig { + public double fontSizeDominantMin = 10.0; + public double fontSizeDominantMax = 13.0; + public double fontSizeHeadingMin = 10.0; + public double fontSizeHeadingMax = 32.0; + public double fontSizeRarityBoost = 0.5; + + public double fontWeightDominantMin = 395.0; + public double fontWeightDominantMax = 405.0; + public double fontWeightHeadingMin = 400.0; + public double fontWeightHeadingMax = 900.0; + public double fontWeightRarityBoost = 0.3; +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/TextNodeUtils.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/TextNodeUtils.java new file mode 100644 index 0000000..b60102f --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/TextNodeUtils.java @@ -0,0 +1,55 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.utils; + +import org.verapdf.wcag.algorithms.entities.SemanticTextNode; + +import java.util.logging.Level; +import java.util.logging.Logger; + +public class TextNodeUtils { + private static final Logger LOGGER = Logger.getLogger(TextNodeUtils.class.getName()); + private static final double[] DEFAULT_TEXT_COLOR = {0.0, 0.0, 0.0}; + + /** + * Returns the text color, falling back to default black on NPE. + * Hybrid backend nodes may lack color info; returning a default + * keeps heading detection and line merging working normally. + */ + public static double[] getTextColorOrDefault(SemanticTextNode textNode) { + try { + double[] color = textNode.getTextColor(); + return color != null ? color : DEFAULT_TEXT_COLOR; + } catch (NullPointerException e) { + LOGGER.log(Level.FINE, "textColor unavailable, using default black", e); + return DEFAULT_TEXT_COLOR; + } + } + + /** + * Returns the raw text color, or null if unavailable. + * Use this for serialization where omitting the field is preferred + * over writing a fabricated default. + */ + public static double[] getTextColorOrNull(SemanticTextNode textNode) { + try { + return textNode.getTextColor(); + } catch (NullPointerException e) { + LOGGER.log(Level.FINE, "textColor unavailable", e); + return null; + } + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/levels/LevelInfo.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/levels/LevelInfo.java new file mode 100644 index 0000000..9ec32ba --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/levels/LevelInfo.java @@ -0,0 +1,107 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.utils.levels; + +import org.opendataloader.pdf.utils.BulletedParagraphUtils; +import org.verapdf.wcag.algorithms.entities.content.LineArtChunk; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.NodeUtils; + +import java.util.Objects; + +public class LevelInfo { + + protected static final double X_GAP_MULTIPLIER = 0.3; + + private final double left; + private final double right; + + public LevelInfo(double left, double right) { + this.left = left; + this.right = right; + } + + public static boolean areSameLevelsInfos(LevelInfo levelInfo1, LevelInfo levelInfo2) { + if (levelInfo1.isTable() || levelInfo2.isTable()) { + return false; + } + boolean checkBoundingBox = false; + if (levelInfo1.isList() && levelInfo2.isList()) { + ListLevelInfo listLevelInfo1 = (ListLevelInfo) levelInfo1; + ListLevelInfo listLevelInfo2 = (ListLevelInfo) levelInfo2; + if (Objects.equals(listLevelInfo1.getNumberingStyle(), listLevelInfo2.getNumberingStyle()) && + Objects.equals(listLevelInfo1.getCommonPrefix(), listLevelInfo2.getCommonPrefix())) { + checkBoundingBox = true; + } + } else if (levelInfo1.isTextBulletParagraph() && levelInfo2.isTextBulletParagraph()) { + TextBulletParagraphLevelInfo textBulletParagraphLevelInfo1 = (TextBulletParagraphLevelInfo) levelInfo1; + TextBulletParagraphLevelInfo textBulletParagraphLevelInfo2 = (TextBulletParagraphLevelInfo) levelInfo2; + if (Objects.equals(textBulletParagraphLevelInfo1.getLabel(), textBulletParagraphLevelInfo2.getLabel())) { + checkBoundingBox = true; + } + if (textBulletParagraphLevelInfo1.getLabelRegex() != null && Objects.equals(textBulletParagraphLevelInfo1.getLabelRegex(), textBulletParagraphLevelInfo2.getLabelRegex())) { + if (Objects.equals(textBulletParagraphLevelInfo1.getLabelRegex(), BulletedParagraphUtils.KOREAN_CHAPTER_REGEX)) { + return true; + } + checkBoundingBox = true; + } + } else if (levelInfo1.isLineArtBulletParagraph() && levelInfo2.isLineArtBulletParagraph()) { + LineArtBulletParagraphLevelInfo lineArtBulletParagraphLevelInfo1 = (LineArtBulletParagraphLevelInfo) levelInfo1; + LineArtBulletParagraphLevelInfo lineArtBulletParagraphLevelInfo2 = (LineArtBulletParagraphLevelInfo) levelInfo2; + LineArtChunk bullet1 = lineArtBulletParagraphLevelInfo1.getBullet(); + LineArtChunk bullet2 = lineArtBulletParagraphLevelInfo2.getBullet(); + if (LineArtChunk.areHaveSameSizes(bullet1, bullet2)) { + checkBoundingBox = true; + } + } + return checkBoundingBox ? checkBoundingBoxes(levelInfo1, levelInfo2) : false; + } + + public static boolean checkBoundingBoxes(LevelInfo levelInfo1, LevelInfo levelInfo2) { + if (levelInfo1.right < levelInfo2.left || levelInfo2.right < levelInfo1.left) { + + } else { + if (!NodeUtils.areCloseNumbers(levelInfo1.left, levelInfo2.left, getMaxXGap(levelInfo1, levelInfo2)) && + !NodeUtils.areCloseNumbers(levelInfo1.right, levelInfo2.right, getMaxXGap(levelInfo1, levelInfo2))) { + return false; + } + } + return true; + } + + public boolean isTable() { + return false; + } + + public boolean isList() { + return false; + } + + public boolean isLineArtBulletParagraph() { + return false; + } + + public boolean isTextBulletParagraph() { + return false; + } + + public double getMaxXGap() { + return 0; + } + + public static double getMaxXGap(LevelInfo levelInfo1, LevelInfo levelInfo2) { + return Math.max(levelInfo1.getMaxXGap(), levelInfo2.getMaxXGap()); + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/levels/LineArtBulletParagraphLevelInfo.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/levels/LineArtBulletParagraphLevelInfo.java new file mode 100644 index 0000000..06556b0 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/levels/LineArtBulletParagraphLevelInfo.java @@ -0,0 +1,44 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.utils.levels; + +import org.verapdf.wcag.algorithms.entities.SemanticTextNode; +import org.verapdf.wcag.algorithms.entities.content.LineArtChunk; + +public class LineArtBulletParagraphLevelInfo extends LevelInfo { + private final LineArtChunk bullet; + private final double maxFontSize; + + public LineArtBulletParagraphLevelInfo(SemanticTextNode textNode) { + super(0, 0); + this.bullet = textNode.getFirstLine().getConnectedLineArtLabel(); + this.maxFontSize = textNode.getMaxFontSize(); + } + + @Override + public boolean isLineArtBulletParagraph() { + return true; + } + + public LineArtChunk getBullet() { + return bullet; + } + + @Override + public double getMaxXGap() { + return maxFontSize * X_GAP_MULTIPLIER; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/levels/ListLevelInfo.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/levels/ListLevelInfo.java new file mode 100644 index 0000000..7fe9c5a --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/levels/ListLevelInfo.java @@ -0,0 +1,50 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.utils.levels; + +import org.verapdf.wcag.algorithms.entities.lists.PDFList; + +public class ListLevelInfo extends LevelInfo { + private final String commonPrefix; + private final String numberingStyle; + private final double maxFontSize; + + public ListLevelInfo(PDFList pdfList) { + super(pdfList.getFirstListItem().getFirstLine().getLeftX(), pdfList.getRightX()); +// this.label = pdfList.getFirstListItem().getFirstLine().getValue().substring(0, 1); + commonPrefix = pdfList.getCommonPrefix(); + numberingStyle = pdfList.getNumberingStyle(); + this.maxFontSize = pdfList.getFirstListItem().getFontSize(); + } + + @Override + public boolean isList() { + return true; + } + + public String getCommonPrefix() { + return commonPrefix; + } + + public String getNumberingStyle() { + return numberingStyle; + } + + @Override + public double getMaxXGap() { + return maxFontSize * X_GAP_MULTIPLIER; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/levels/TableLevelInfo.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/levels/TableLevelInfo.java new file mode 100644 index 0000000..018a9a8 --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/levels/TableLevelInfo.java @@ -0,0 +1,29 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.utils.levels; + +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; + +public class TableLevelInfo extends LevelInfo { + public TableLevelInfo(TableBorder table) { + super(0, 0); + } + + @Override + public boolean isTable() { + return true; + } +} diff --git a/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/levels/TextBulletParagraphLevelInfo.java b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/levels/TextBulletParagraphLevelInfo.java new file mode 100644 index 0000000..6eed1ee --- /dev/null +++ b/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/utils/levels/TextBulletParagraphLevelInfo.java @@ -0,0 +1,50 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.utils.levels; + +import org.opendataloader.pdf.utils.BulletedParagraphUtils; +import org.verapdf.wcag.algorithms.entities.SemanticTextNode; + +public class TextBulletParagraphLevelInfo extends LevelInfo { + private final String label; + private final String labelRegex; + private final double maxFontSize; + + public TextBulletParagraphLevelInfo(SemanticTextNode semanticTextNode) { + super(semanticTextNode.getFirstLine().getLeftX(), semanticTextNode.getRightX()); + this.labelRegex = BulletedParagraphUtils.getLabelRegex(semanticTextNode); + this.label = BulletedParagraphUtils.getLabel(semanticTextNode); + this.maxFontSize = semanticTextNode.getMaxFontSize(); + } + + @Override + public boolean isTextBulletParagraph() { + return true; + } + + public String getLabel() { + return label; + } + + public String getLabelRegex() { + return labelRegex; + } + + @Override + public double getMaxXGap() { + return maxFontSize * X_GAP_MULTIPLIER; + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/EmbedImagesIntegrationTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/EmbedImagesIntegrationTest.java new file mode 100644 index 0000000..95532ea --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/EmbedImagesIntegrationTest.java @@ -0,0 +1,231 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; +import org.opendataloader.pdf.api.Config; +import org.opendataloader.pdf.processors.DocumentProcessor; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; + +import static org.junit.jupiter.api.Assertions.*; + +/** + * Integration tests for the --embed-images feature. + * Tests the full pipeline from Config to output files. + */ +class EmbedImagesIntegrationTest { + + private static final String SAMPLE_PDF_WITH_IMAGES = "../../samples/pdf/1901.03003.pdf"; + private static final String SAMPLE_PDF_BASENAME = "1901.03003"; + private static final String SAMPLE_PDF_IMAGES_DIR = SAMPLE_PDF_BASENAME + "_images"; + private static final String BASE64_DATA_URI_PREFIX = "data:image/png;base64,"; + private static final String BASE64_JPEG_PREFIX = "data:image/jpeg;base64,"; + + @TempDir + Path tempDir; + + @BeforeEach + void setUp() { + // Ensure sample PDF exists + File samplePdf = new File(SAMPLE_PDF_WITH_IMAGES); + if (!samplePdf.exists()) { + System.out.println("Warning: Sample PDF not found at " + samplePdf.getAbsolutePath()); + } + } + + @AfterEach + void tearDown() { + // Cleanup is handled by @TempDir + } + + @Test + void testEmbedImagesInJsonOutput() throws IOException { + // Given + File samplePdf = new File(SAMPLE_PDF_WITH_IMAGES); + if (!samplePdf.exists()) { + System.out.println("Skipping test: Sample PDF not found"); + return; + } + + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setImageOutput(Config.IMAGE_OUTPUT_EMBEDDED); + config.setImageFormat("png"); + config.setGenerateJSON(true); + config.setGenerateHtml(false); + config.setGenerateMarkdown(false); + + // When + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + // Then + Path jsonOutput = tempDir.resolve(SAMPLE_PDF_BASENAME + ".json"); + assertTrue(Files.exists(jsonOutput), "JSON output should exist"); + + String jsonContent = Files.readString(jsonOutput); + assertTrue(jsonContent.contains("\"type\" : \"image\""), + "Sample PDF should produce at least one image entry"); + assertTrue( + jsonContent.contains(BASE64_DATA_URI_PREFIX) || jsonContent.contains(BASE64_JPEG_PREFIX), + "JSON should contain Base64 data URI for images when embedImages is true"); + assertTrue(jsonContent.contains("\"format\""), "JSON should contain format field"); + + Path imagesDir = tempDir.resolve(SAMPLE_PDF_IMAGES_DIR); + assertFalse(Files.exists(imagesDir), + "Embedded mode must be self-contained: external image directory should not be created"); + } + + @Test + void testEmbedImagesInHtmlOutput() throws IOException { + // Given + File samplePdf = new File(SAMPLE_PDF_WITH_IMAGES); + if (!samplePdf.exists()) { + System.out.println("Skipping test: Sample PDF not found"); + return; + } + + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setImageOutput(Config.IMAGE_OUTPUT_EMBEDDED); + config.setImageFormat("png"); + config.setGenerateJSON(false); + config.setGenerateHtml(true); + + // When + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + // Then + Path htmlOutput = tempDir.resolve(SAMPLE_PDF_BASENAME + ".html"); + assertTrue(Files.exists(htmlOutput), "HTML output should exist"); + + String htmlContent = Files.readString(htmlOutput); + assertTrue(htmlContent.contains(" tag"); + assertTrue(htmlContent.contains("src=\"data:image/"), + "HTML img tags should use Base64 data URI when embedImages is true"); + + Path imagesDir = tempDir.resolve(SAMPLE_PDF_IMAGES_DIR); + assertFalse(Files.exists(imagesDir), + "Embedded mode must be self-contained: external image directory should not be created"); + } + + @Test + void testEmbedImagesInMarkdownOutput() throws IOException { + // Given + File samplePdf = new File(SAMPLE_PDF_WITH_IMAGES); + if (!samplePdf.exists()) { + System.out.println("Skipping test: Sample PDF not found"); + return; + } + + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setImageOutput(Config.IMAGE_OUTPUT_EMBEDDED); + config.setImageFormat("png"); + config.setGenerateJSON(false); + config.setAddImageToMarkdown(true); + + // When + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + // Then + Path mdOutput = tempDir.resolve(SAMPLE_PDF_BASENAME + ".md"); + assertTrue(Files.exists(mdOutput), "Markdown output should exist"); + + String mdContent = Files.readString(mdOutput); + assertTrue(mdContent.contains("!["), + "Sample PDF should produce at least one markdown image block"); + assertTrue(mdContent.contains("](data:image/"), + "Markdown images should use Base64 data URI when embedImages is true"); + + Path imagesDir = tempDir.resolve(SAMPLE_PDF_IMAGES_DIR); + assertFalse(Files.exists(imagesDir), + "Embedded mode must be self-contained: external image directory should not be created"); + } + + @Test + void testNoEmbedImagesUsesFilePaths() throws IOException { + // Given + File samplePdf = new File(SAMPLE_PDF_WITH_IMAGES); + if (!samplePdf.exists()) { + System.out.println("Skipping test: Sample PDF not found"); + return; + } + + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setImageOutput(Config.IMAGE_OUTPUT_EXTERNAL); + config.setGenerateJSON(true); + + // When + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + // Then + Path jsonOutput = tempDir.resolve(SAMPLE_PDF_BASENAME + ".json"); + assertTrue(Files.exists(jsonOutput), "JSON output should exist"); + + String jsonContent = Files.readString(jsonOutput); + assertTrue(jsonContent.contains("\"type\" : \"image\""), + "Sample PDF should produce at least one image entry"); + assertTrue(jsonContent.contains("\"source\""), "JSON should contain source field for file path"); + assertFalse(jsonContent.contains("\"data\" : \"data:image"), "JSON should not contain Base64 data"); + + Path imagesDir = tempDir.resolve(SAMPLE_PDF_IMAGES_DIR); + assertTrue(Files.exists(imagesDir), + "External mode must extract images to disk: image directory should be created"); + } + + @Test + void testEmbedImagesWithJpegFormat() throws IOException { + // Given + File samplePdf = new File(SAMPLE_PDF_WITH_IMAGES); + if (!samplePdf.exists()) { + System.out.println("Skipping test: Sample PDF not found"); + return; + } + + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setImageOutput(Config.IMAGE_OUTPUT_EMBEDDED); + config.setImageFormat("jpeg"); + config.setGenerateJSON(true); + + // When + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + // Then + Path jsonOutput = tempDir.resolve(SAMPLE_PDF_BASENAME + ".json"); + assertTrue(Files.exists(jsonOutput), "JSON output should exist"); + + String jsonContent = Files.readString(jsonOutput); + assertTrue(jsonContent.contains("\"type\" : \"image\""), + "Sample PDF should produce at least one image entry"); + assertTrue(jsonContent.contains(BASE64_JPEG_PREFIX), + "JSON should contain JPEG Base64 data URI when imageFormat is jpeg"); + assertTrue(jsonContent.contains("\"format\" : \"jpeg\""), "Format field should be jpeg"); + + Path imagesDir = tempDir.resolve(SAMPLE_PDF_IMAGES_DIR); + assertFalse(Files.exists(imagesDir), + "Embedded mode must be self-contained: external image directory should not be created"); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/HybridBackendFailureIntegrationTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/HybridBackendFailureIntegrationTest.java new file mode 100644 index 0000000..8b2da3e --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/HybridBackendFailureIntegrationTest.java @@ -0,0 +1,238 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf; + +import mockwebserver3.MockResponse; +import mockwebserver3.MockWebServer; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; +import org.opendataloader.pdf.api.Config; +import org.opendataloader.pdf.api.OpenDataLoaderPDF; +import org.opendataloader.pdf.hybrid.HybridClientFactory; +import org.opendataloader.pdf.hybrid.HybridConfig; +import org.opendataloader.pdf.processors.DocumentProcessor; + +import java.io.File; +import java.io.IOException; +import java.net.ServerSocket; +import java.nio.file.Files; +import java.nio.file.Path; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +/** + * End-to-end test for the fail-fast contract on hybrid backend failures. + * + *

    Wires a real PDF through {@link DocumentProcessor#processFile} with a mocked + * hybrid backend, verifying that the failure surfaces as an {@link IOException} + * all the way to the caller — guarding the call site at which + * {@code HybridDocumentProcessor.processDocument} invokes the fail-fast helper. + * The {@code HybridDocumentProcessorTest} suite covers the helper in isolation; + * this test covers the wiring. + */ +class HybridBackendFailureIntegrationTest { + + private static final String SAMPLE_PDF = "../../samples/pdf/lorem.pdf"; + + @TempDir + Path tempDir; + + private MockWebServer server; + private File samplePdf; + + @BeforeEach + void setUp() throws IOException { + // HybridClientFactory keeps a process-wide cache keyed by backend name, + // so any earlier test that touched docling-fast leaves a client wired + // to its own URL. Clear it before standing up our MockWebServer URL. + HybridClientFactory.shutdown(); + + server = new MockWebServer(); + server.start(); + samplePdf = new File(SAMPLE_PDF); + assertTrue(samplePdf.exists(), "Sample PDF not found at " + samplePdf.getAbsolutePath()); + } + + @AfterEach + void tearDown() throws IOException { + try { + // Guard against partial @BeforeEach failure leaving server unassigned + // (HybridClientFactory.shutdown() or `new MockWebServer()` could throw + // before the assignment). JUnit 5 still calls tearDown, so the guard + // prevents an NPE from masking the real setup failure. + if (server != null) { + server.close(); + } + } finally { + // Drop the cached HybridClient holding the mock server's URL so other + // tests don't accidentally reuse it. Runs even if server.shutdown() + // throws, so the cache never leaks the mock URL into other tests. + OpenDataLoaderPDF.shutdown(); + } + } + + @Test + void backendPartialSuccessFailsFastWhenFallbackDisabled() { + // /health probe (Phase 0 checkAvailability) + server.enqueue(new MockResponse.Builder().code(200).body("ok").build()); + // /v1/convert/file response — the single page of lorem.pdf is marked + // failed. Listing just the requested pages keeps the test's intent + // explicit instead of relying on the processor's intersection logic. + String partialSuccess = "{" + + "\"status\": \"partial_success\"," + + "\"document\": {\"json_content\": {\"pages\": {}}}," + + "\"processing_time\": 0.5," + + "\"errors\": [\"Unknown page: pipeline terminated early\"]," + + "\"failed_pages\": [1]" + + "}"; + server.enqueue(new MockResponse.Builder() + .body(partialSuccess) + .addHeader("Content-Type", "application/json") + .build()); + + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(true); + config.setHybrid("docling-fast"); + // Full mode routes every page to the backend, so the mocked response + // covers all of them without depending on triage decisions. + config.getHybridConfig().setMode(HybridConfig.MODE_FULL); + config.getHybridConfig().setUrl(server.url("").toString().replaceAll("/$", "")); + // setFallbackToJava is false by default; assert to document the precondition. + assertFalse(config.getHybridConfig().isFallbackToJava(), + "fallback should be disabled by default for this scenario"); + + IOException ex = assertThrows(IOException.class, + () -> DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config)); + + assertTrue(ex.getMessage().contains("page(s) with fallback disabled"), + "exception should mention fallback context: " + ex.getMessage()); + } + + /** + * PDFDLOSP-21 case 1 (P0): backend is entirely unreachable and + * {@code --hybrid-fallback} is ON. {@code processDocument} must catch the + * health-check IOException and route every page through the Java path so the + * run completes normally and writes a valid JSON output. + */ + @Test + void serverAbsent_withFallback_processesWithJava() throws IOException { + // Reserve a port and immediately close the socket so connection attempts + // hit a closed port (most reliable connection-refused simulation that + // does not depend on platform DNS quirks). + int closedPort = reserveClosedPort(); + String unreachableUrl = "http://127.0.0.1:" + closedPort; + + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(true); + config.setHybrid("docling-fast"); + config.getHybridConfig().setMode(HybridConfig.MODE_FULL); + config.getHybridConfig().setUrl(unreachableUrl); + config.getHybridConfig().setFallbackToJava(true); + + assertDoesNotThrow( + () -> DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config), + "with --hybrid-fallback the run must succeed when the backend is absent"); + + Path jsonOutput = tempDir.resolve("lorem.json"); + assertTrue(Files.exists(jsonOutput), + "Java-fallback path should still produce JSON output at " + jsonOutput); + assertTrue(Files.size(jsonOutput) > 0L, + "JSON output must not be empty when fallback ran successfully"); + } + + /** + * PDFDLOSP-21 case 2 (P0): backend is entirely unreachable and + * {@code --hybrid-fallback} is OFF. The run must fail fast with an + * {@link IOException} whose message points the user at the new + * {@code --hybrid-fallback} escape hatch (DoclingFastServerClient patch). + */ + @Test + void serverAbsent_withoutFallback_failsFastWithHelpfulMessage() throws IOException { + int closedPort = reserveClosedPort(); + String unreachableUrl = "http://127.0.0.1:" + closedPort; + + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(true); + config.setHybrid("docling-fast"); + config.getHybridConfig().setMode(HybridConfig.MODE_FULL); + config.getHybridConfig().setUrl(unreachableUrl); + // Document the precondition: fallback stays off, so health-check failure + // must propagate. + assertFalse(config.getHybridConfig().isFallbackToJava(), + "fallback must be disabled for the fail-fast scenario"); + + IOException ex = assertThrows(IOException.class, + () -> DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config)); + + String msg = ex.getMessage() == null ? "" : ex.getMessage(); + assertTrue(msg.contains("Hybrid server is not available"), + "exception should identify the health-check failure: " + msg); + assertTrue(msg.contains("--hybrid-fallback"), + "exception should point user to --hybrid-fallback escape hatch: " + msg); + } + + /** + * PDFDLOSP-21 case 3 (P0): same as case 1 but with an aggressive 1 ms + * timeout. The fallback path must be triggered by any IOException raised + * from {@code checkAvailability()} — connection refused, connect timeout, + * read timeout — so this guards H-6/H-7 equivalence: timeout-driven failures + * are recovered just like connection-refused failures. + */ + @Test + void serverAbsent_withFallbackAndTinyTimeout_processesWithJava() throws IOException { + int closedPort = reserveClosedPort(); + String unreachableUrl = "http://127.0.0.1:" + closedPort; + + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(true); + config.setHybrid("docling-fast"); + config.getHybridConfig().setMode(HybridConfig.MODE_FULL); + config.getHybridConfig().setUrl(unreachableUrl); + config.getHybridConfig().setFallbackToJava(true); + config.getHybridConfig().setTimeoutMs(1); + + assertDoesNotThrow( + () -> DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config), + "fallback must handle timeout-driven health-check failures too"); + + Path jsonOutput = tempDir.resolve("lorem.json"); + assertTrue(Files.exists(jsonOutput), + "Java-fallback path should still produce JSON output at " + jsonOutput); + assertTrue(Files.size(jsonOutput) > 0L, + "JSON output must not be empty when fallback ran with tiny timeout"); + } + + /** + * Binds an ephemeral port and releases it. Subsequent connect() attempts to + * the returned port number are extremely likely to be refused, giving a + * deterministic "backend unreachable" condition without relying on + * unrouteable IPs (which can hang on some hosts). + */ + private static int reserveClosedPort() throws IOException { + try (ServerSocket socket = new ServerSocket(0)) { + return socket.getLocalPort(); + } + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/ImageDirIntegrationTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/ImageDirIntegrationTest.java new file mode 100644 index 0000000..7fccda0 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/ImageDirIntegrationTest.java @@ -0,0 +1,255 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; +import org.opendataloader.pdf.api.Config; +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.opendataloader.pdf.processors.DocumentProcessor; + +import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; + +import static org.junit.jupiter.api.Assertions.*; + +/** + * Integration tests for the --image-dir feature. + * Tests the full pipeline from Config to actual image file placement. + */ +class ImageDirIntegrationTest { + + private static final String SAMPLE_PDF_WITH_IMAGES = "../../samples/pdf/1901.03003.pdf"; + private static final String SAMPLE_PDF_BASENAME = "1901.03003"; + + @TempDir + Path tempDir; + + @AfterEach + void tearDown() { + StaticLayoutContainers.clearContainers(); + } + + @Test + void testCustomImageDir_imagesWrittenToCustomPath() throws Exception { + File samplePdf = new File(SAMPLE_PDF_WITH_IMAGES); + if (!samplePdf.exists()) { + System.out.println("Skipping test: Sample PDF not found"); + return; + } + + Path outputDir = tempDir.resolve("output"); + Path customImageDir = tempDir.resolve("my-custom-images"); + + Config config = new Config(); + config.setOutputFolder(outputDir.toString()); + config.setImageDir(customImageDir.toString()); + config.setImageOutput(Config.IMAGE_OUTPUT_EXTERNAL); + config.setGenerateJSON(true); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + // Verify images in custom directory + assertTrue(Files.exists(customImageDir), "Custom image dir should be created"); + assertTrue(Files.list(customImageDir).findAny().isPresent(), "Images should exist in custom dir"); + + // Verify default directory NOT created + Path defaultImageDir = outputDir.resolve(SAMPLE_PDF_BASENAME + "_images"); + assertFalse(Files.exists(defaultImageDir), "Default dir should NOT be created when custom dir is specified"); + } + + @Test + void testDefaultImageDir_imagesWrittenToDefaultPath() throws Exception { + File samplePdf = new File(SAMPLE_PDF_WITH_IMAGES); + if (!samplePdf.exists()) { + System.out.println("Skipping test: Sample PDF not found"); + return; + } + + Path outputDir = tempDir.resolve("output"); + + Config config = new Config(); + config.setOutputFolder(outputDir.toString()); + // imageDir not set - should use default + config.setImageOutput(Config.IMAGE_OUTPUT_EXTERNAL); + config.setGenerateJSON(true); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + // Verify images in default directory + Path defaultImageDir = outputDir.resolve(SAMPLE_PDF_BASENAME + "_images"); + assertTrue(Files.exists(defaultImageDir), "Default image dir should be created"); + assertTrue(Files.list(defaultImageDir).findAny().isPresent(), "Images should exist in default dir"); + } + + @Test + void testCustomImageDir_jsonReferencesCorrectPath() throws Exception { + File samplePdf = new File(SAMPLE_PDF_WITH_IMAGES); + if (!samplePdf.exists()) { + System.out.println("Skipping test: Sample PDF not found"); + return; + } + + Path customImageDir = tempDir.resolve("custom-images"); + + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setImageDir(customImageDir.toString()); + config.setImageOutput(Config.IMAGE_OUTPUT_EXTERNAL); + config.setGenerateJSON(true); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path jsonOutput = tempDir.resolve(SAMPLE_PDF_BASENAME + ".json"); + assertTrue(Files.exists(jsonOutput), "JSON output should exist"); + + String jsonContent = Files.readString(jsonOutput); + + // JSON should reference custom-images directory + if (jsonContent.contains("\"source\"")) { + assertTrue(jsonContent.contains("custom-images/imageFile"), + "JSON source should reference custom image directory"); + } + } + + @Test + void testCustomImageDir_markdownReferencesCorrectPath() throws Exception { + File samplePdf = new File(SAMPLE_PDF_WITH_IMAGES); + if (!samplePdf.exists()) { + System.out.println("Skipping test: Sample PDF not found"); + return; + } + + Path customImageDir = tempDir.resolve("my-images"); + + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setImageDir(customImageDir.toString()); + config.setImageOutput(Config.IMAGE_OUTPUT_EXTERNAL); + config.setGenerateJSON(false); + config.setAddImageToMarkdown(true); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path mdOutput = tempDir.resolve(SAMPLE_PDF_BASENAME + ".md"); + assertTrue(Files.exists(mdOutput), "Markdown output should exist"); + + String mdContent = Files.readString(mdOutput); + + // Markdown should reference custom image directory + if (mdContent.contains("![")) { + assertTrue(mdContent.contains("my-images/imageFile"), + "Markdown should reference custom image directory"); + } + } + + /** + * Regression test for #405: when the input filename contains characters that + * have special meaning in CommonMark link destinations (spaces, parens, etc.), + * the on-disk directory keeps the original filename and the rendered Markdown + * link wraps the destination in angle brackets per CommonMark §6.4 so it stays + * a single, parseable token. + */ + @Test + void testDefaultImageDir_markdownLinkUsesAngleBracketDestination() throws Exception { + File samplePdf = new File(SAMPLE_PDF_WITH_IMAGES); + if (!samplePdf.exists()) { + System.out.println("Skipping test: Sample PDF not found"); + return; + } + + // Copy the sample PDF under a filename containing CommonMark-reserved chars. + String unsafeStem = "my paper (draft) [v2]"; + Path renamed = tempDir.resolve(unsafeStem + ".pdf"); + Files.copy(samplePdf.toPath(), renamed); + + Path outputDir = tempDir.resolve("output"); + + Config config = new Config(); + config.setOutputFolder(outputDir.toString()); + config.setImageOutput(Config.IMAGE_OUTPUT_EXTERNAL); + config.setGenerateJSON(false); + config.setAddImageToMarkdown(true); + + DocumentProcessor.processFile(renamed.toAbsolutePath().toString(), config); + + // The on-disk image directory keeps the original filename — we don't rewrite + // user input. The rendered destination uses the angle-bracket form. + Path imageDir = outputDir.resolve(unsafeStem + "_images"); + assertTrue(Files.exists(imageDir), + "On-disk image directory should keep the original filename"); + + Path mdOutput = outputDir.resolve(unsafeStem + ".md"); + assertTrue(Files.exists(mdOutput), "Markdown output should exist"); + + String mdContent = Files.readString(mdOutput); + assertTrue(mdContent.contains("!["), + "Test precondition: sample must produce markdown image syntax"); + + // Inside `<...>` the path stays byte-identical to the on-disk directory. + String expectedDestination = "<" + unsafeStem + "_images/imageFile"; + assertTrue(mdContent.contains(expectedDestination), + "Markdown link should wrap the path in angle brackets; expected '" + expectedDestination + "'"); + // The raw unwrapped form must NOT appear inside a link destination — that + // is the exact bug #405 reports. + assertFalse(mdContent.contains("(" + unsafeStem + "_images/"), + "Raw unwrapped directory name must not appear as a Markdown link destination"); + } + + /** + * #405 reproduces equally through the `--image-dir` path. A user-provided + * directory name with spaces or parens lands verbatim on disk (we respect the + * user's input) and the Markdown link wraps it in angle brackets. + */ + @Test + void testCustomImageDir_markdownLinkUsesAngleBracketDestination() throws Exception { + File samplePdf = new File(SAMPLE_PDF_WITH_IMAGES); + if (!samplePdf.exists()) { + System.out.println("Skipping test: Sample PDF not found"); + return; + } + + Path customImageDir = tempDir.resolve("my pictures (v2)"); + + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setImageDir(customImageDir.toString()); + config.setImageOutput(Config.IMAGE_OUTPUT_EXTERNAL); + config.setGenerateJSON(false); + config.setAddImageToMarkdown(true); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + // On-disk directory keeps the user-provided name verbatim. + assertTrue(Files.exists(customImageDir), + "Custom image directory should keep the user-provided name"); + + Path mdOutput = tempDir.resolve(SAMPLE_PDF_BASENAME + ".md"); + assertTrue(Files.exists(mdOutput), "Markdown output should exist"); + + String mdContent = Files.readString(mdOutput); + assertTrue(mdContent.contains("!["), + "Test precondition: sample must produce markdown image syntax"); + + String expectedDestination = " 0, + "Sample PDF must have at least one detected header/footer for this " + + "test to be meaningful; got " + countWithFlag + ". " + + "If detection regressed, pick a different fixture PDF."); + assertEquals(0, countWithoutFlag, + "JSON output must not contain header/footer elements when " + + "--include-header-footer is disabled (default). " + + "Got " + countWithoutFlag + " element(s)."); + } + + private int runAndCountHeaderFooter(Path outputDir, boolean includeHeaderFooter) throws IOException { + Config config = new Config(); + config.setOutputFolder(outputDir.toString()); + config.setGenerateJSON(true); + config.setIncludeHeaderFooter(includeHeaderFooter); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path jsonOutput = outputDir.resolve(OUTPUT_BASENAME + ".json"); + assertTrue(Files.exists(jsonOutput), "JSON output missing at " + jsonOutput); + + JsonNode root = new ObjectMapper().readTree(Files.readString(jsonOutput)); + return countHeaderFooterTypes(root); + } + + private static int countHeaderFooterTypes(JsonNode node) { + if (node == null) { + return 0; + } + int count = 0; + if (node.isObject()) { + JsonNode type = node.get("type"); + if (type != null) { + String typeName = type.asText(); + if ("header".equals(typeName) || "footer".equals(typeName)) { + count++; + } + } + java.util.Iterator iter = node.elements(); + while (iter.hasNext()) { + count += countHeaderFooterTypes(iter.next()); + } + } else if (node.isArray()) { + for (JsonNode child : node) { + count += countHeaderFooterTypes(child); + } + } + return count; + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/IntegrationTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/IntegrationTest.java new file mode 100644 index 0000000..65dc1bd --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/IntegrationTest.java @@ -0,0 +1,84 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; +import org.opendataloader.pdf.processors.DocumentProcessor; +import org.opendataloader.pdf.api.Config; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.stream.Stream; + +public class IntegrationTest { + + static Stream integrationTestParams() { + return Stream.of( + Arguments.of("lorem.pdf")); + } + + @ParameterizedTest(name = "{index}: ({0}) => {0}") + @MethodSource("integrationTestParams") + public void test(String fileName) throws IOException { + Path pdfPath = Paths.get("../../samples/pdf", fileName); + Path jsonPath = Paths.get("../../samples/json", fileName.replace(".pdf", ".json")); + File pdfFile = pdfPath.toFile(); + File jsonFile = jsonPath.toFile(); + + Config config = new Config(); + config.setOutputFolder("../../samples/json"); + DocumentProcessor.processFile(pdfFile.getAbsolutePath(), config); + + Path resultPath = Paths.get("../../samples/json", fileName.replace(".pdf", ".json")); + File resultJson = resultPath.toFile(); + + ObjectMapper mapper = new ObjectMapper(); + JsonNode tree1 = mapper.readTree(new FileInputStream(jsonFile)); + JsonNode tree2 = mapper.readTree(new FileInputStream(resultJson)); + checkJsonNodes(tree1, tree2); + } + + private static void checkJsonNodes(JsonNode node1, JsonNode node2) { + Assertions.assertEquals(node1.get("type"), node2.get("type")); + checkArrayFields(node1, node2, "kids"); + checkArrayFields(node1, node2, "rows"); + checkArrayFields(node1, node2, "cells"); + checkArrayFields(node1, node2, "list items"); + } + + private static void checkArrayFields(JsonNode node1, JsonNode node2, String fieldName) { + JsonNode child1 = node1.get(fieldName); + JsonNode child2 = node2.get(fieldName); + Assertions.assertEquals(child1 != null, child2 != null); + if (child1 != null && child2 != null) { + ArrayNode array1 = (ArrayNode) child1; + ArrayNode array2 = (ArrayNode) child2; + Assertions.assertEquals(array1.size(), array2.size()); + for (int i = 0; i < array2.size(); i++) { + checkJsonNodes(array1.get(i), array2.get(i)); + } + } + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/Issue336IntegrationTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/Issue336IntegrationTest.java new file mode 100644 index 0000000..2876e6b --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/Issue336IntegrationTest.java @@ -0,0 +1,263 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; +import org.opendataloader.pdf.api.Config; +import org.opendataloader.pdf.processors.DocumentProcessor; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +class Issue336IntegrationTest { + + private static final String SAMPLE_PDF = "../../samples/pdf/issue-336-conto-economico-bialetti.pdf"; + private static final String OUTPUT_BASENAME = "issue-336-conto-economico-bialetti"; + + @TempDir + Path tempDir; + + private File samplePdf; + + @BeforeEach + void setUp() { + samplePdf = new File(SAMPLE_PDF); + assertTrue(samplePdf.exists(), "Sample PDF not found at " + samplePdf.getAbsolutePath()); + } + + @Test + void testSpreadsheetExportedTableKeepsFinancialRowsSeparatedAcrossStandardOutputs() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(true); + config.setGenerateMarkdown(true); + config.setGenerateHtml(true); + config.setGenerateText(true); + config.setGeneratePDF(true); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path jsonOutput = tempDir.resolve(OUTPUT_BASENAME + ".json"); + Path markdownOutput = tempDir.resolve(OUTPUT_BASENAME + ".md"); + Path htmlOutput = tempDir.resolve(OUTPUT_BASENAME + ".html"); + Path textOutput = tempDir.resolve(OUTPUT_BASENAME + ".txt"); + Path annotatedPdfOutput = tempDir.resolve(OUTPUT_BASENAME + "_annotated.pdf"); + + assertTrue(Files.exists(jsonOutput), "JSON output should exist"); + assertTrue(Files.exists(markdownOutput), "Markdown output should exist"); + assertTrue(Files.exists(htmlOutput), "HTML output should exist"); + assertTrue(Files.exists(textOutput), "Text output should exist"); + assertTrue(Files.exists(annotatedPdfOutput), "Annotated PDF output should exist"); + assertTrue(Files.size(annotatedPdfOutput) > 0, "Annotated PDF output should not be empty"); + + assertJsonContainsExpectedRow(jsonOutput); + assertMarkdownTableContainsExpectedRow(markdownOutput); + assertHtmlTableContainsExpectedRow(htmlOutput); + assertTextContainsExpectedRow(textOutput); + } + + @Test + void testSpreadsheetExportedTableKeepsFinancialRowsSeparatedInMarkdownHtmlOutput() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(false); + config.setUseHTMLInMarkdown(true); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path markdownOutput = tempDir.resolve(OUTPUT_BASENAME + ".md"); + assertTrue(Files.exists(markdownOutput), "Markdown-with-HTML output should exist"); + assertHtmlTableContainsExpectedRow(markdownOutput); + } + + @Test + void testSpreadsheetExportedTableKeepsFinancialRowsSeparatedInMarkdownImageMode() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(false); + config.setAddImageToMarkdown(true); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path markdownOutput = tempDir.resolve(OUTPUT_BASENAME + ".md"); + assertTrue(Files.exists(markdownOutput), "Markdown-with-images output should exist"); + assertMarkdownTableContainsExpectedRow(markdownOutput); + } + + private static void assertJsonContainsExpectedRow(Path jsonOutput) throws IOException { + JsonNode root = new ObjectMapper().readTree(Files.readString(jsonOutput)); + List> rows = extractTableRows(root); + + assertTrue(rows.contains(expectedFinancialRow()), + "Expected the financial statement row to be extracted as its own table row"); + } + + private static void assertMarkdownTableContainsExpectedRow(Path markdownOutput) throws IOException { + String markdown = Files.readString(markdownOutput); + String escapedLabel = Pattern.quote(expectedFinancialRow().get(0)); + String rowPattern = "(?m)^\\|\\s*" + escapedLabel + + "\\s*\\|\\s*1\\.942\\.000\\s*\\|\\s*117\\.000\\s*\\|\\s*2\\.538\\.000\\s*\\|\\s*-3\\.970\\.000\\s*\\|\\s*$"; + + assertTrue(Pattern.compile(rowPattern).matcher(markdown).find(), + "Expected the financial statement row to remain a single Markdown table row"); + } + + private static void assertHtmlTableContainsExpectedRow(Path htmlOutput) throws IOException { + String html = Files.readString(htmlOutput); + Matcher rowMatcher = Pattern.compile("(?is)]*>.*?").matcher(html); + List expectedRow = expectedFinancialRow(); + boolean found = false; + while (rowMatcher.find()) { + String rowText = normalizeText(rowMatcher.group().replaceAll("(?is)<[^>]+>", " ")); + if (containsExpectedValues(rowText, expectedRow)) { + found = true; + break; + } + } + + assertTrue(found, + "Expected the financial statement row to remain a single HTML table row"); + } + + private static void assertTextContainsExpectedRow(Path textOutput) throws IOException { + String text = Files.readString(textOutput); + String expectedLine = String.join("\t", expectedFinancialRow()); + + assertTrue(text.contains(expectedLine), + "Expected the financial statement row to remain a single plain-text table row"); + } + + private static List expectedFinancialRow() { + return List.of( + "2) Variazione rimanenze prodotti in corso di lavor., semilavorati e finiti", + "1.942.000", + "117.000", + "2.538.000", + "-3.970.000" + ); + } + + private static boolean containsExpectedValues(String value, List expectedValues) { + for (String expectedValue : expectedValues) { + if (!value.contains(expectedValue)) { + return false; + } + } + return true; + } + + private static List> extractTableRows(JsonNode root) { + List tables = new ArrayList<>(); + collectTables(root, tables); + + List> rows = new ArrayList<>(); + for (JsonNode table : tables) { + JsonNode tableRows = table.get("rows"); + if (tableRows == null || !tableRows.isArray()) { + continue; + } + for (JsonNode row : tableRows) { + JsonNode cells = row.get("cells"); + if (cells == null || !cells.isArray()) { + continue; + } + List rowTexts = new ArrayList<>(); + for (JsonNode cell : cells) { + rowTexts.add(normalizeText(collectContent(cell))); + } + rows.add(rowTexts); + } + } + + return rows; + } + + private static void collectTables(JsonNode node, List tables) { + if (node == null) { + return; + } + if (node.isObject()) { + JsonNode type = node.get("type"); + if (type != null && "table".equals(type.asText())) { + tables.add(node); + } + node.fields().forEachRemaining(entry -> collectTables(entry.getValue(), tables)); + return; + } + if (node.isArray()) { + for (JsonNode child : node) { + collectTables(child, tables); + } + } + } + + private static String collectContent(JsonNode node) { + StringBuilder builder = new StringBuilder(); + appendContent(node, builder); + return builder.toString(); + } + + private static void appendContent(JsonNode node, StringBuilder builder) { + if (node == null) { + return; + } + if (node.isObject()) { + JsonNode content = node.get("content"); + if (content != null && !content.asText().isBlank()) { + if (builder.length() > 0) { + builder.append(' '); + } + builder.append(content.asText()); + } + + JsonNode listItems = node.get("list items"); + if (listItems != null && listItems.isArray()) { + for (JsonNode listItem : listItems) { + appendContent(listItem, builder); + } + } + + JsonNode kids = node.get("kids"); + if (kids != null && kids.isArray()) { + for (JsonNode kid : kids) { + appendContent(kid, builder); + } + } + return; + } + if (node.isArray()) { + for (JsonNode child : node) { + appendContent(child, builder); + } + } + } + + private static String normalizeText(String value) { + return value == null ? "" : value.replaceAll("\\s+", " ").trim(); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/Issue408IntegrationTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/Issue408IntegrationTest.java new file mode 100644 index 0000000..44814a3 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/Issue408IntegrationTest.java @@ -0,0 +1,98 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; +import org.opendataloader.pdf.api.Config; +import org.opendataloader.pdf.processors.DocumentProcessor; + +import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +/** + * Regression test for #408: after `processFile` returns, the input PDF must no + * longer be locked by the JVM. The fix in #410 closes the underlying PDDocument + * (and the verapdf-internal temp PDF stream) so that callers can immediately + * delete the source file. On Windows this surfaced as "file in use by another + * process"; POSIX systems allow unlink with open FDs but the leak was real. + * + * The test deletes the input PDF after processing; on Windows CI this asserts + * that the OS file handle has been released (a regression would throw a + * FileSystemException). POSIX runs document the contract even when the OS would + * tolerate a stray FD. + */ +class Issue408IntegrationTest { + + private static final String SAMPLE_PDF = "../../samples/pdf/1901.03003.pdf"; + + @TempDir + Path tempDir; + + @Test + void testProcessFile_releasesInputFileLock() throws Exception { + File source = new File(SAMPLE_PDF); + assertTrue(source.exists(), "Sample PDF not found at " + source.getAbsolutePath()); + + Path inputPdf = tempDir.resolve("input.pdf"); + Files.copy(source.toPath(), inputPdf); + + Path outputDir = tempDir.resolve("output"); + + Config config = new Config(); + config.setOutputFolder(outputDir.toString()); + config.setGenerateJSON(true); + + DocumentProcessor.processFile(inputPdf.toAbsolutePath().toString(), config); + + // On Windows a leaked file handle would cause Files.delete to throw + // FileSystemException("The process cannot access the file..."). + // On POSIX delete always succeeds, but this still documents the contract + // so a future refactor that re-leaks the handle fails on Windows CI. + Files.delete(inputPdf); + assertFalse(Files.exists(inputPdf), + "Input PDF must be deletable immediately after processFile returns"); + } + + @Test + void testProcessFile_canBeCalledRepeatedlyOnTheSameJvm() throws Exception { + File source = new File(SAMPLE_PDF); + assertTrue(source.exists(), "Sample PDF not found at " + source.getAbsolutePath()); + + // Running processFile in a loop exercises the cleanup path's idempotency: + // each call clears the static containers, and the next call must + // re-initialize them via preprocessing without NPE. + for (int i = 0; i < 3; i++) { + Path inputPdf = tempDir.resolve("input-" + i + ".pdf"); + Files.copy(source.toPath(), inputPdf); + + Path outputDir = tempDir.resolve("output-" + i); + + Config config = new Config(); + config.setOutputFolder(outputDir.toString()); + config.setGenerateJSON(true); + + DocumentProcessor.processFile(inputPdf.toAbsolutePath().toString(), config); + + // Verify cleanup ran on every iteration, not just the last one. + Files.delete(inputPdf); + } + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/PageSeparatorIntegrationTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/PageSeparatorIntegrationTest.java new file mode 100644 index 0000000..be0dba1 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/PageSeparatorIntegrationTest.java @@ -0,0 +1,657 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; +import org.opendataloader.pdf.api.Config; +import org.opendataloader.pdf.processors.DocumentProcessor; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; + +import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assumptions.assumeTrue; + +/** + * Integration tests for page separator options (--markdown-page-separator, --text-page-separator, --html-page-separator). + * Tests the full pipeline from Config to output files. + */ +class PageSeparatorIntegrationTest { + + private static final String SAMPLE_PDF = "../../samples/pdf/1901.03003.pdf"; + private static final String OUTPUT_BASENAME = "1901.03003"; + + @TempDir + Path tempDir; + + private File samplePdf; + + @BeforeEach + void setUp() { + samplePdf = new File(SAMPLE_PDF); + assumeTrue(samplePdf.exists(), "Sample PDF not found at " + samplePdf.getAbsolutePath()); + } + + // --- Markdown Page Separator Tests --- + + @Test + void testMarkdownPageSeparatorSimple() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(false); + config.setGenerateMarkdown(true); + config.setMarkdownPageSeparator("---"); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path mdOutput = tempDir.resolve(OUTPUT_BASENAME + ".md"); + assertTrue(Files.exists(mdOutput), "Markdown output should exist"); + + String mdContent = Files.readString(mdOutput); + assertTrue(mdContent.contains("---"), "Markdown should contain the page separator '---'"); + } + + @Test + void testMarkdownPageSeparatorWithPageNumber() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(false); + config.setGenerateMarkdown(true); + config.setMarkdownPageSeparator(""); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path mdOutput = tempDir.resolve(OUTPUT_BASENAME + ".md"); + assertTrue(Files.exists(mdOutput), "Markdown output should exist"); + + String mdContent = Files.readString(mdOutput); + assertTrue(mdContent.contains(""), "Markdown should contain page separator with page number 1"); + } + + @Test + void testMarkdownPageSeparatorEmpty() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(false); + config.setGenerateMarkdown(true); + // Default empty separator - no separator should be added + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path mdOutput = tempDir.resolve(OUTPUT_BASENAME + ".md"); + assertTrue(Files.exists(mdOutput), "Markdown output should exist"); + + String mdContent = Files.readString(mdOutput); + assertFalse(mdContent.contains(""}, {@code "data-page=\"1\""}) + * so page 1 does not falsely match inside page 10..15. + */ + private static int countOccurrences(String haystack, String needle) { + int count = 0; + int idx = 0; + while ((idx = haystack.indexOf(needle, idx)) != -1) { + count++; + idx += needle.length(); + } + return count; + } + + private static String mdMarker(int page) { + return ""; + } + + private static String textMarker(int page) { + return "[Page " + page + "]"; + } + + private static String htmlMarker(int page) { + return "data-page="" + page + """; + } + + @Test + void testMarkdownPageSeparatorRespectsPagesFilter() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(false); + config.setGenerateMarkdown(true); + config.setMarkdownPageSeparator(""); + config.setPages("1,3"); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path mdOutput = tempDir.resolve(OUTPUT_BASENAME + ".md"); + String mdContent = Files.readString(mdOutput); + + for (int page = 1; page <= SAMPLE_PAGE_COUNT; page++) { + int expected = (page == 1 || page == 3) ? 1 : 0; + assertEquals(expected, countOccurrences(mdContent, mdMarker(page)), + "Markdown page " + page + " marker count mismatch"); + } + } + + @Test + void testTextPageSeparatorRespectsPagesFilter() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(false); + config.setGenerateText(true); + config.setTextPageSeparator("[Page %page-number%]"); + config.setPages("1,3"); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path txtOutput = tempDir.resolve(OUTPUT_BASENAME + ".txt"); + String txtContent = Files.readString(txtOutput); + + for (int page = 1; page <= SAMPLE_PAGE_COUNT; page++) { + int expected = (page == 1 || page == 3) ? 1 : 0; + assertEquals(expected, countOccurrences(txtContent, textMarker(page)), + "Text page " + page + " marker count mismatch"); + } + } + + @Test + void testHtmlPageSeparatorRespectsPagesFilter() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(false); + config.setGenerateHtml(true); + config.setHtmlPageSeparator("

    "); + config.setPages("1,3"); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path htmlOutput = tempDir.resolve(OUTPUT_BASENAME + ".html"); + String htmlContent = Files.readString(htmlOutput); + + for (int page = 1; page <= SAMPLE_PAGE_COUNT; page++) { + int expected = (page == 1 || page == 3) ? 1 : 0; + assertEquals(expected, countOccurrences(htmlContent, htmlMarker(page)), + "HTML page " + page + " marker count mismatch"); + } + } + + // No-filter regression guard: every page must emit its separator exactly once when --pages + // is unset. Ensures the filter change does not regress to "select none" when the set is empty. + + @Test + void testMarkdownPageSeparatorWithoutPagesFilterEmitsAllPages() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(false); + config.setGenerateMarkdown(true); + config.setMarkdownPageSeparator(""); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path mdOutput = tempDir.resolve(OUTPUT_BASENAME + ".md"); + String mdContent = Files.readString(mdOutput); + + for (int page = 1; page <= SAMPLE_PAGE_COUNT; page++) { + assertEquals(1, countOccurrences(mdContent, mdMarker(page)), + "Markdown page " + page + " marker should appear exactly once without filter"); + } + } + + @Test + void testTextPageSeparatorWithoutPagesFilterEmitsAllPages() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(false); + config.setGenerateText(true); + config.setTextPageSeparator("[Page %page-number%]"); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path txtOutput = tempDir.resolve(OUTPUT_BASENAME + ".txt"); + String txtContent = Files.readString(txtOutput); + + for (int page = 1; page <= SAMPLE_PAGE_COUNT; page++) { + assertEquals(1, countOccurrences(txtContent, textMarker(page)), + "Text page " + page + " marker should appear exactly once without filter"); + } + } + + @Test + void testHtmlPageSeparatorWithoutPagesFilterEmitsAllPages() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(false); + config.setGenerateHtml(true); + config.setHtmlPageSeparator("
    "); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path htmlOutput = tempDir.resolve(OUTPUT_BASENAME + ".html"); + String htmlContent = Files.readString(htmlOutput); + + for (int page = 1; page <= SAMPLE_PAGE_COUNT; page++) { + assertEquals(1, countOccurrences(htmlContent, htmlMarker(page)), + "HTML page " + page + " marker should appear exactly once without filter"); + } + } + + // Boundary scenarios — lock in contract corners most likely to regress in future refactors. + + @Test + void testMarkdownPageSeparatorLastPageOnly() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(false); + config.setGenerateMarkdown(true); + config.setMarkdownPageSeparator(""); + config.setPages(String.valueOf(SAMPLE_PAGE_COUNT)); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path mdOutput = tempDir.resolve(OUTPUT_BASENAME + ".md"); + String mdContent = Files.readString(mdOutput); + + for (int page = 1; page <= SAMPLE_PAGE_COUNT; page++) { + int expected = (page == SAMPLE_PAGE_COUNT) ? 1 : 0; + assertEquals(expected, countOccurrences(mdContent, mdMarker(page)), + "Markdown page " + page + " marker count mismatch for last-page-only selection"); + } + } + + @Test + void testMarkdownPageSeparatorWithOutOfRangePages() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(false); + config.setGenerateMarkdown(true); + config.setMarkdownPageSeparator(""); + // Mix valid + out-of-range: the in-range page must still emit; the out-of-range page must not. + config.setPages("1,99"); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path mdOutput = tempDir.resolve(OUTPUT_BASENAME + ".md"); + String mdContent = Files.readString(mdOutput); + + assertEquals(1, countOccurrences(mdContent, mdMarker(1)), "Page 1 marker should appear once"); + assertEquals(0, countOccurrences(mdContent, mdMarker(99)), "Out-of-range page 99 marker must not appear"); + for (int page = 2; page <= SAMPLE_PAGE_COUNT; page++) { + assertEquals(0, countOccurrences(mdContent, mdMarker(page)), + "Markdown page " + page + " marker must not appear"); + } + } + + @Test + void testMarkdownPageSeparatorWithNonContiguousPages() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(false); + config.setGenerateMarkdown(true); + config.setMarkdownPageSeparator(""); + config.setPages("1,4,5"); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path mdOutput = tempDir.resolve(OUTPUT_BASENAME + ".md"); + String mdContent = Files.readString(mdOutput); + + for (int page = 1; page <= SAMPLE_PAGE_COUNT; page++) { + int expected = (page == 1 || page == 4 || page == 5) ? 1 : 0; + assertEquals(expected, countOccurrences(mdContent, mdMarker(page)), + "Markdown page " + page + " marker count mismatch for non-contiguous selection"); + } + } + + @Test + void testMarkdownEmptyPageSeparatorWithPagesFilter() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(false); + config.setGenerateMarkdown(true); + // Empty separator combined with --pages: the filter must not introduce any marker. + config.setPages("1,3"); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path mdOutput = tempDir.resolve(OUTPUT_BASENAME + ".md"); + String mdContent = Files.readString(mdOutput); + + for (int page = 1; page <= SAMPLE_PAGE_COUNT; page++) { + assertEquals(0, countOccurrences(mdContent, mdMarker(page)), + "Markdown page " + page + " marker must not appear with empty separator"); + } + } + + // Boundary scenarios — Text format + + @Test + void testTextPageSeparatorLastPageOnly() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(false); + config.setGenerateText(true); + config.setTextPageSeparator("[Page %page-number%]"); + config.setPages(String.valueOf(SAMPLE_PAGE_COUNT)); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path txtOutput = tempDir.resolve(OUTPUT_BASENAME + ".txt"); + String txtContent = Files.readString(txtOutput); + + for (int page = 1; page <= SAMPLE_PAGE_COUNT; page++) { + int expected = (page == SAMPLE_PAGE_COUNT) ? 1 : 0; + assertEquals(expected, countOccurrences(txtContent, textMarker(page)), + "Text page " + page + " marker count mismatch for last-page-only selection"); + } + } + + @Test + void testTextPageSeparatorWithOutOfRangePages() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(false); + config.setGenerateText(true); + config.setTextPageSeparator("[Page %page-number%]"); + config.setPages("1,99"); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path txtOutput = tempDir.resolve(OUTPUT_BASENAME + ".txt"); + String txtContent = Files.readString(txtOutput); + + assertEquals(1, countOccurrences(txtContent, textMarker(1)), "Page 1 marker should appear once"); + assertEquals(0, countOccurrences(txtContent, textMarker(99)), "Out-of-range page 99 marker must not appear"); + for (int page = 2; page <= SAMPLE_PAGE_COUNT; page++) { + assertEquals(0, countOccurrences(txtContent, textMarker(page)), + "Text page " + page + " marker must not appear"); + } + } + + @Test + void testTextPageSeparatorWithNonContiguousPages() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(false); + config.setGenerateText(true); + config.setTextPageSeparator("[Page %page-number%]"); + config.setPages("1,4,5"); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path txtOutput = tempDir.resolve(OUTPUT_BASENAME + ".txt"); + String txtContent = Files.readString(txtOutput); + + for (int page = 1; page <= SAMPLE_PAGE_COUNT; page++) { + int expected = (page == 1 || page == 4 || page == 5) ? 1 : 0; + assertEquals(expected, countOccurrences(txtContent, textMarker(page)), + "Text page " + page + " marker count mismatch for non-contiguous selection"); + } + } + + @Test + void testTextEmptyPageSeparatorWithPagesFilter() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(false); + config.setGenerateText(true); + config.setPages("1,3"); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path txtOutput = tempDir.resolve(OUTPUT_BASENAME + ".txt"); + String txtContent = Files.readString(txtOutput); + + for (int page = 1; page <= SAMPLE_PAGE_COUNT; page++) { + assertEquals(0, countOccurrences(txtContent, textMarker(page)), + "Text page " + page + " marker must not appear with empty separator"); + } + } + + // Boundary scenarios — HTML format + + @Test + void testHtmlPageSeparatorLastPageOnly() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(false); + config.setGenerateHtml(true); + config.setHtmlPageSeparator("
    "); + config.setPages(String.valueOf(SAMPLE_PAGE_COUNT)); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path htmlOutput = tempDir.resolve(OUTPUT_BASENAME + ".html"); + String htmlContent = Files.readString(htmlOutput); + + for (int page = 1; page <= SAMPLE_PAGE_COUNT; page++) { + int expected = (page == SAMPLE_PAGE_COUNT) ? 1 : 0; + assertEquals(expected, countOccurrences(htmlContent, htmlMarker(page)), + "HTML page " + page + " marker count mismatch for last-page-only selection"); + } + } + + @Test + void testHtmlPageSeparatorWithOutOfRangePages() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(false); + config.setGenerateHtml(true); + config.setHtmlPageSeparator("
    "); + config.setPages("1,99"); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path htmlOutput = tempDir.resolve(OUTPUT_BASENAME + ".html"); + String htmlContent = Files.readString(htmlOutput); + + assertEquals(1, countOccurrences(htmlContent, htmlMarker(1)), "Page 1 marker should appear once"); + assertEquals(0, countOccurrences(htmlContent, htmlMarker(99)), "Out-of-range page 99 marker must not appear"); + for (int page = 2; page <= SAMPLE_PAGE_COUNT; page++) { + assertEquals(0, countOccurrences(htmlContent, htmlMarker(page)), + "HTML page " + page + " marker must not appear"); + } + } + + @Test + void testHtmlPageSeparatorWithNonContiguousPages() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(false); + config.setGenerateHtml(true); + config.setHtmlPageSeparator("
    "); + config.setPages("1,4,5"); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path htmlOutput = tempDir.resolve(OUTPUT_BASENAME + ".html"); + String htmlContent = Files.readString(htmlOutput); + + for (int page = 1; page <= SAMPLE_PAGE_COUNT; page++) { + int expected = (page == 1 || page == 4 || page == 5) ? 1 : 0; + assertEquals(expected, countOccurrences(htmlContent, htmlMarker(page)), + "HTML page " + page + " marker count mismatch for non-contiguous selection"); + } + } + + @Test + void testHtmlEmptyPageSeparatorWithPagesFilter() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(false); + config.setGenerateHtml(true); + config.setPages("1,3"); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path htmlOutput = tempDir.resolve(OUTPUT_BASENAME + ".html"); + String htmlContent = Files.readString(htmlOutput); + + for (int page = 1; page <= SAMPLE_PAGE_COUNT; page++) { + assertEquals(0, countOccurrences(htmlContent, htmlMarker(page)), + "HTML page " + page + " marker must not appear with empty separator"); + } + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/PagesOptionIntegrationTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/PagesOptionIntegrationTest.java new file mode 100644 index 0000000..38497eb --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/PagesOptionIntegrationTest.java @@ -0,0 +1,344 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; +import org.opendataloader.pdf.api.Config; +import org.opendataloader.pdf.hybrid.HybridClientFactory; +import org.opendataloader.pdf.processors.DocumentProcessor; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.HashSet; +import java.util.Set; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assumptions.assumeTrue; + +/** + * Integration tests for the --pages option. + * Tests the full pipeline from Config to output files with page filtering. + */ +class PagesOptionIntegrationTest { + + private static final String SAMPLE_PDF = "../../samples/pdf/1901.03003.pdf"; + private static final String OUTPUT_BASENAME = "1901.03003"; + private static final String JSON_EXT = ".json"; + private static final String JSON_OUTPUT_EXISTS_MSG = "JSON output should exist"; + private static final String PAGE_1_CONTENT_MSG = "Page 1 should have content"; + private static final String PAGE_3_CONTENT_MSG = "Page 3 should have content"; + private static final String TAGGED_PDF_NOT_FOUND_MSG = "Tagged PDF not found at "; + + @TempDir + Path tempDir; + + private File samplePdf; + + @BeforeEach + void setUp() { + HybridClientFactory.shutdown(); + samplePdf = new File(SAMPLE_PDF); + assumeTrue(samplePdf.exists(), "Sample PDF not found at " + samplePdf.getAbsolutePath()); + } + + @Test + void testPagesOptionSinglePage() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(true); + config.setPages("1"); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path jsonOutput = tempDir.resolve(OUTPUT_BASENAME + JSON_EXT); + assertTrue(Files.exists(jsonOutput), JSON_OUTPUT_EXISTS_MSG); + + JsonNode root = parseJson(jsonOutput); + Set pagesInOutput = getPageNumbersFromKids(root); + + assertEquals(Set.of(1), pagesInOutput, "Only page 1 should have content when --pages=1"); + } + + @Test + void testPagesOptionMultiplePages() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(true); + config.setPages("1,3,5"); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path jsonOutput = tempDir.resolve(OUTPUT_BASENAME + JSON_EXT); + assertTrue(Files.exists(jsonOutput), JSON_OUTPUT_EXISTS_MSG); + + JsonNode root = parseJson(jsonOutput); + Set pagesInOutput = getPageNumbersFromKids(root); + + assertTrue(pagesInOutput.contains(1), PAGE_1_CONTENT_MSG); + assertTrue(pagesInOutput.contains(3), PAGE_3_CONTENT_MSG); + assertTrue(pagesInOutput.contains(5), "Page 5 should have content"); + assertFalse(pagesInOutput.contains(2), "Page 2 should NOT have content"); + assertFalse(pagesInOutput.contains(4), "Page 4 should NOT have content"); + } + + @Test + void testPagesOptionPageRange() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(true); + config.setPages("1-3"); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path jsonOutput = tempDir.resolve(OUTPUT_BASENAME + JSON_EXT); + assertTrue(Files.exists(jsonOutput), JSON_OUTPUT_EXISTS_MSG); + + JsonNode root = parseJson(jsonOutput); + Set pagesInOutput = getPageNumbersFromKids(root); + + assertTrue(pagesInOutput.contains(1), PAGE_1_CONTENT_MSG); + assertTrue(pagesInOutput.contains(2), "Page 2 should have content"); + assertTrue(pagesInOutput.contains(3), PAGE_3_CONTENT_MSG); + assertFalse(pagesInOutput.contains(4), "Page 4 should NOT have content"); + } + + @Test + void testPagesOptionMixedRangeAndSingle() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(true); + config.setPages("1,3-5"); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path jsonOutput = tempDir.resolve(OUTPUT_BASENAME + JSON_EXT); + assertTrue(Files.exists(jsonOutput), JSON_OUTPUT_EXISTS_MSG); + + JsonNode root = parseJson(jsonOutput); + Set pagesInOutput = getPageNumbersFromKids(root); + + assertTrue(pagesInOutput.contains(1), PAGE_1_CONTENT_MSG); + assertFalse(pagesInOutput.contains(2), "Page 2 should NOT have content"); + assertTrue(pagesInOutput.contains(3), PAGE_3_CONTENT_MSG); + assertTrue(pagesInOutput.contains(4), "Page 4 should have content"); + assertTrue(pagesInOutput.contains(5), "Page 5 should have content"); + } + + @Test + void testPagesOptionAllPages() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(true); + // No pages option - all pages should be processed + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path jsonOutput = tempDir.resolve(OUTPUT_BASENAME + JSON_EXT); + assertTrue(Files.exists(jsonOutput), JSON_OUTPUT_EXISTS_MSG); + + JsonNode root = parseJson(jsonOutput); + Set pagesInOutput = getPageNumbersFromKids(root); + + // 15-page document should have content from many pages + assertTrue(pagesInOutput.size() > 5, "All pages should have content when no --pages option"); + } + + @Test + void testPagesOptionMarkdown() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(false); + config.setGenerateMarkdown(true); + config.setMarkdownPageSeparator(""); + config.setPages("1,3"); + + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path mdOutput = tempDir.resolve(OUTPUT_BASENAME + ".md"); + assertTrue(Files.exists(mdOutput), "Markdown output should exist"); + + String mdContent = Files.readString(mdOutput); + assertTrue(mdContent.contains(""), "Should contain page 1 separator"); + assertTrue(mdContent.contains(""), "Should contain page 3 separator"); + // Page 2 is skipped, so its separator shouldn't appear + // Note: Page separators are added between pages, so we verify page 1 and 3 content exists + } + + @Test + void testPagesOptionExceedsDocumentPages() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(true); + config.setPages("1,100,200"); // 100, 200 don't exist in 15-page document + + // Should not throw - just warn and process existing pages + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path jsonOutput = tempDir.resolve(OUTPUT_BASENAME + JSON_EXT); + assertTrue(Files.exists(jsonOutput), JSON_OUTPUT_EXISTS_MSG); + + JsonNode root = parseJson(jsonOutput); + Set pagesInOutput = getPageNumbersFromKids(root); + + assertTrue(pagesInOutput.contains(1), "Only page 1 should have content (100, 200 don't exist)"); + assertFalse(pagesInOutput.contains(100), "Page 100 should NOT exist"); + assertFalse(pagesInOutput.contains(200), "Page 200 should NOT exist"); + } + + @Test + void testPagesOptionAllPagesExceedDocument() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(true); + config.setPages("100,200"); // All pages don't exist + + // Should not throw - just warn and produce empty result + DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config); + + Path jsonOutput = tempDir.resolve(OUTPUT_BASENAME + JSON_EXT); + assertTrue(Files.exists(jsonOutput), JSON_OUTPUT_EXISTS_MSG); + + JsonNode root = parseJson(jsonOutput); + Set pagesInOutput = getPageNumbersFromKids(root); + + assertTrue(pagesInOutput.isEmpty(), "No pages should have content when all requested pages don't exist"); + } + + @Test + void testPagesOptionAllPagesExceedDocumentInHybridMode() throws IOException { + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(true); + config.setImageOutput(Config.IMAGE_OUTPUT_OFF); + config.setHybrid(Config.HYBRID_DOCLING_FAST); + config.getHybridConfig().setUrl("http://127.0.0.1:1"); + config.setPages("100,200"); // All pages don't exist + + assertDoesNotThrow(() -> DocumentProcessor.processFile(samplePdf.getAbsolutePath(), config), + "Hybrid mode should not require backend availability when no valid pages remain"); + + Path jsonOutput = tempDir.resolve(OUTPUT_BASENAME + JSON_EXT); + assertTrue(Files.exists(jsonOutput), JSON_OUTPUT_EXISTS_MSG); + + JsonNode root = parseJson(jsonOutput); + Set pagesInOutput = getPageNumbersFromKids(root); + + assertTrue(pagesInOutput.isEmpty(), + "No pages should have content when all requested pages don't exist, even in hybrid mode"); + } + + // ===== Tagged PDF Tests (using struct-tree) ===== + + private static final String TAGGED_PDF = "../../samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-04_Presentation.pdf"; + private static final String TAGGED_OUTPUT_BASENAME = "PDFUA-Ref-2-04_Presentation"; + + @Test + void testPagesOptionTaggedPdfSinglePage() throws IOException { + File taggedPdf = new File(TAGGED_PDF); + assumeTrue(taggedPdf.exists(), TAGGED_PDF_NOT_FOUND_MSG + taggedPdf.getAbsolutePath()); + + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(true); + config.setUseStructTree(true); + config.setPages("1"); + + DocumentProcessor.processFile(taggedPdf.getAbsolutePath(), config); + + Path jsonOutput = tempDir.resolve(TAGGED_OUTPUT_BASENAME + JSON_EXT); + assertTrue(Files.exists(jsonOutput), JSON_OUTPUT_EXISTS_MSG); + + JsonNode root = parseJson(jsonOutput); + Set pagesInOutput = getPageNumbersFromKids(root); + + assertEquals(Set.of(1), pagesInOutput, "Only page 1 should have content when --pages=1"); + } + + @Test + void testPagesOptionTaggedPdfMultiplePages() throws IOException { + File taggedPdf = new File(TAGGED_PDF); + assumeTrue(taggedPdf.exists(), TAGGED_PDF_NOT_FOUND_MSG + taggedPdf.getAbsolutePath()); + + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(true); + config.setUseStructTree(true); + config.setPages("1,2"); + + DocumentProcessor.processFile(taggedPdf.getAbsolutePath(), config); + + Path jsonOutput = tempDir.resolve(TAGGED_OUTPUT_BASENAME + JSON_EXT); + assertTrue(Files.exists(jsonOutput), JSON_OUTPUT_EXISTS_MSG); + + JsonNode root = parseJson(jsonOutput); + Set pagesInOutput = getPageNumbersFromKids(root); + + assertTrue(pagesInOutput.contains(1), PAGE_1_CONTENT_MSG); + assertTrue(pagesInOutput.contains(2), "Page 2 should have content"); + } + + @Test + void testPagesOptionTaggedPdfAllPages() throws IOException { + File taggedPdf = new File(TAGGED_PDF); + assumeTrue(taggedPdf.exists(), TAGGED_PDF_NOT_FOUND_MSG + taggedPdf.getAbsolutePath()); + + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateJSON(true); + config.setUseStructTree(true); + // No pages option - all pages should be processed + + DocumentProcessor.processFile(taggedPdf.getAbsolutePath(), config); + + Path jsonOutput = tempDir.resolve(TAGGED_OUTPUT_BASENAME + JSON_EXT); + assertTrue(Files.exists(jsonOutput), JSON_OUTPUT_EXISTS_MSG); + + JsonNode root = parseJson(jsonOutput); + Set pagesInOutput = getPageNumbersFromKids(root); + + assertFalse(pagesInOutput.isEmpty(), "All pages should have content when no --pages option"); + } + + private JsonNode parseJson(Path jsonPath) throws IOException { + ObjectMapper mapper = new ObjectMapper(); + return mapper.readTree(Files.newInputStream(jsonPath)); + } + + /** + * Extracts all unique page numbers from the 'kids' array in the JSON output. + * Each kid element has a 'page number' field. + */ + private Set getPageNumbersFromKids(JsonNode root) { + Set pageNumbers = new HashSet<>(); + JsonNode kids = root.get("kids"); + if (kids != null && kids.isArray()) { + for (JsonNode kid : kids) { + JsonNode pageNumber = kid.get("page number"); + if (pageNumber != null && pageNumber.isInt()) { + pageNumbers.add(pageNumber.asInt()); + } + } + } + return pageNumbers; + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/api/AutoTaggerTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/api/AutoTaggerTest.java new file mode 100644 index 0000000..46fe11e --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/api/AutoTaggerTest.java @@ -0,0 +1,62 @@ +package org.opendataloader.pdf.api; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; +import org.verapdf.pd.PDDocument; + +import java.io.File; +import java.nio.file.Path; + +import static org.assertj.core.api.Assertions.assertThat; + +class AutoTaggerTest { + + private static final String TEST_PDF = new File("src/test/resources/cid-font-no-tounicode.pdf").getAbsolutePath(); + + @Test + void tagReturnsDocumentWithStructTree() throws Exception { + Config config = new Config(); + + try (TaggingResult result = AutoTagger.tag(TEST_PDF, config, null)) { + PDDocument doc = result.getDocument(); + assertThat(doc).isNotNull(); + assertThat(doc.getCatalog().getKey(org.verapdf.as.ASAtom.STRUCT_TREE_ROOT).empty()) + .as("Tagged PDF should have StructTreeRoot") + .isFalse(); + } + } + + @Test + void tagTimingsArePositive() throws Exception { + Config config = new Config(); + + try (TaggingResult result = AutoTagger.tag(TEST_PDF, config, null)) { + assertThat(result.getExtractionNs()).isGreaterThan(0); + assertThat(result.getTaggingNs()).isGreaterThan(0); + } + } + + @Test + void saveToWritesFile(@TempDir Path tempDir) throws Exception { + Config config = new Config(); + String outputPath = tempDir.resolve("output_tagged.pdf").toString(); + + try (TaggingResult result = AutoTagger.tag(TEST_PDF, config, null)) { + result.saveTo(outputPath); + } + + assertThat(new File(outputPath)).exists(); + assertThat(new File(outputPath).length()).isGreaterThan(0); + } + + @Test + void tagIgnoresOutputFormatFlags() throws Exception { + Config config = new Config(); + config.setGenerateJSON(true); + config.setGenerateMarkdown(true); + + try (TaggingResult result = AutoTagger.tag(TEST_PDF, config, null)) { + assertThat(result.getDocument()).isNotNull(); + } + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/api/ConfigTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/api/ConfigTest.java new file mode 100644 index 0000000..0fdcec0 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/api/ConfigTest.java @@ -0,0 +1,338 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.api; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +class ConfigTest { + + @Test + void testDefaultValues() { + Config config = new Config(); + + // Verify default values (new defaults: external, xycut) + assertFalse(config.isEmbedImages()); + assertFalse(config.isImageOutputOff()); + assertEquals(Config.IMAGE_OUTPUT_EXTERNAL, config.getImageOutput()); + assertEquals(Config.IMAGE_FORMAT_PNG, config.getImageFormat()); + assertEquals(Config.READING_ORDER_XYCUT, config.getReadingOrder()); + } + + @Test + void testSetImageOutputAffectsIsEmbedImages() { + Config config = new Config(); + + config.setImageOutput(Config.IMAGE_OUTPUT_EMBEDDED); + assertTrue(config.isEmbedImages()); + assertFalse(config.isImageOutputOff()); + + config.setImageOutput(Config.IMAGE_OUTPUT_EXTERNAL); + assertFalse(config.isEmbedImages()); + assertFalse(config.isImageOutputOff()); + + config.setImageOutput(Config.IMAGE_OUTPUT_OFF); + assertFalse(config.isEmbedImages()); + assertTrue(config.isImageOutputOff()); + } + + @Test + void testSetImageFormat() { + Config config = new Config(); + + config.setImageFormat("jpeg"); + assertEquals("jpeg", config.getImageFormat()); + + config.setImageFormat("png"); + assertEquals("png", config.getImageFormat()); + } + + @ParameterizedTest + @ValueSource(strings = {"png", "PNG", "jpeg", "JPEG"}) + void testIsValidImageFormat_withValidFormats(String format) { + assertTrue(Config.isValidImageFormat(format)); + } + + @ParameterizedTest + @ValueSource(strings = {"bmp", "gif", "tiff", "webp", "invalid", ""}) + void testIsValidImageFormat_withInvalidFormats(String format) { + assertFalse(Config.isValidImageFormat(format)); + } + + @Test + void testIsValidImageFormat_withNull() { + assertFalse(Config.isValidImageFormat(null)); + } + + @Test + void testGetImageFormatOptions() { + String options = Config.getImageFormatOptions(", "); + + assertTrue(options.contains("png")); + assertTrue(options.contains("jpeg")); + assertFalse(options.contains("webp")); + } + + @Test + void testImageFormatConstants() { + assertEquals("png", Config.IMAGE_FORMAT_PNG); + assertEquals("jpeg", Config.IMAGE_FORMAT_JPEG); + } + + @Test + void testSetImageFormatNormalizesToLowercase() { + Config config = new Config(); + + config.setImageFormat("PNG"); + assertEquals("png", config.getImageFormat()); + + config.setImageFormat("JPEG"); + assertEquals("jpeg", config.getImageFormat()); + } + + @Test + void testSetImageFormatWithNullDefaultsToPng() { + Config config = new Config(); + + config.setImageFormat(null); + assertEquals("png", config.getImageFormat()); + } + + @ParameterizedTest + @ValueSource(strings = {"bmp", "gif", "webp", "invalid"}) + void testSetImageFormatThrowsExceptionForInvalidFormat(String format) { + Config config = new Config(); + + IllegalArgumentException exception = assertThrows( + IllegalArgumentException.class, + () -> config.setImageFormat(format) + ); + assertTrue(exception.getMessage().contains("Unsupported image format")); + assertTrue(exception.getMessage().contains(format)); + } + + @Test + void testSetImageOutput() { + Config config = new Config(); + + config.setImageOutput(Config.IMAGE_OUTPUT_EXTERNAL); + assertEquals(Config.IMAGE_OUTPUT_EXTERNAL, config.getImageOutput()); + assertFalse(config.isEmbedImages()); + + config.setImageOutput(Config.IMAGE_OUTPUT_EMBEDDED); + assertEquals(Config.IMAGE_OUTPUT_EMBEDDED, config.getImageOutput()); + assertTrue(config.isEmbedImages()); + } + + @ParameterizedTest + @ValueSource(strings = {"off", "OFF", "embedded", "EMBEDDED", "external", "EXTERNAL"}) + void testIsValidImageOutput_withValidModes(String mode) { + assertTrue(Config.isValidImageOutput(mode)); + } + + @ParameterizedTest + @ValueSource(strings = {"base64", "file", "invalid", ""}) + void testIsValidImageOutput_withInvalidModes(String mode) { + assertFalse(Config.isValidImageOutput(mode)); + } + + @Test + void testGetImageOutputOptions() { + String options = Config.getImageOutputOptions(", "); + + assertTrue(options.contains("off")); + assertTrue(options.contains("embedded")); + assertTrue(options.contains("external")); + } + + @Test + void testImageOutputConstants() { + assertEquals("off", Config.IMAGE_OUTPUT_OFF); + assertEquals("embedded", Config.IMAGE_OUTPUT_EMBEDDED); + assertEquals("external", Config.IMAGE_OUTPUT_EXTERNAL); + } + + @Test + void testSetImageOutputNormalizesToLowercase() { + Config config = new Config(); + + config.setImageOutput("EXTERNAL"); + assertEquals("external", config.getImageOutput()); + + config.setImageOutput("EMBEDDED"); + assertEquals("embedded", config.getImageOutput()); + } + + @Test + void testSetImageOutputWithNullDefaultsToExternal() { + Config config = new Config(); + + config.setImageOutput(null); + assertEquals(Config.IMAGE_OUTPUT_EXTERNAL, config.getImageOutput()); + } + + @ParameterizedTest + @ValueSource(strings = {"base64", "file", "invalid"}) + void testSetImageOutputThrowsExceptionForInvalidMode(String mode) { + Config config = new Config(); + + IllegalArgumentException exception = assertThrows( + IllegalArgumentException.class, + () -> config.setImageOutput(mode) + ); + assertTrue(exception.getMessage().contains("Unsupported image output mode")); + assertTrue(exception.getMessage().contains(mode)); + } + + // Test existing Config fields to ensure new fields don't break them + @Test + void testExistingConfigFields() { + Config config = new Config(); + + // Test default values + assertTrue(config.isGenerateJSON()); + assertFalse(config.isGenerateMarkdown()); + assertFalse(config.isGenerateHtml()); + assertFalse(config.isGeneratePDF()); + assertFalse(config.isKeepLineBreaks()); + + // Test setting values + config.setGenerateJSON(false); + assertFalse(config.isGenerateJSON()); + + config.setGenerateMarkdown(true); + assertTrue(config.isGenerateMarkdown()); + + config.setGenerateHtml(true); + assertTrue(config.isGenerateHtml()); + } + + // ===== Pages Option Tests ===== + + @Test + void testDefaultPages() { + Config config = new Config(); + assertNull(config.getPages()); + assertTrue(config.getPageNumbers().isEmpty()); + } + + @Test + void testSetPages_singlePage() { + Config config = new Config(); + config.setPages("1"); + assertEquals("1", config.getPages()); + assertEquals(List.of(1), config.getPageNumbers()); + } + + @Test + void testSetPages_commaSeparated() { + Config config = new Config(); + config.setPages("1,3,5"); + assertEquals(List.of(1, 3, 5), config.getPageNumbers()); + } + + @Test + void testSetPages_range() { + Config config = new Config(); + config.setPages("1-5"); + assertEquals(List.of(1, 2, 3, 4, 5), config.getPageNumbers()); + } + + @Test + void testSetPages_mixed() { + Config config = new Config(); + config.setPages("1,3,5-7"); + assertEquals(List.of(1, 3, 5, 6, 7), config.getPageNumbers()); + } + + @Test + void testSetPages_complexMixed() { + Config config = new Config(); + config.setPages("1-3,5,7-9"); + assertEquals(List.of(1, 2, 3, 5, 7, 8, 9), config.getPageNumbers()); + } + + @Test + void testSetPages_withSpaces() { + Config config = new Config(); + config.setPages(" 1 , 3 , 5 - 7 "); + assertEquals(List.of(1, 3, 5, 6, 7), config.getPageNumbers()); + } + + @ParameterizedTest + @ValueSource(strings = {"abc", "1-", "-5", "5-3", "0", "-1", "1,,3", "1-2-3", ""}) + void testSetPages_invalidFormat(String invalidPages) { + Config config = new Config(); + if (invalidPages.isEmpty()) { + // Empty string should not throw, just set as-is + config.setPages(invalidPages); + assertTrue(config.getPageNumbers().isEmpty()); + } else { + assertThrows(IllegalArgumentException.class, () -> config.setPages(invalidPages)); + } + } + + @Test + void testSetPages_nullAndEmpty() { + Config config = new Config(); + + config.setPages(null); + assertNull(config.getPages()); + assertTrue(config.getPageNumbers().isEmpty()); + + config.setPages(""); + assertTrue(config.getPageNumbers().isEmpty()); + + config.setPages(" "); + assertTrue(config.getPageNumbers().isEmpty()); + } + + @Test + void testSetPages_reverseRangeThrows() { + Config config = new Config(); + IllegalArgumentException exception = assertThrows( + IllegalArgumentException.class, + () -> config.setPages("5-3") + ); + assertTrue(exception.getMessage().contains("start page cannot be greater than end page")); + } + + @Test + void testSetPages_zeroPageThrows() { + Config config = new Config(); + IllegalArgumentException exception = assertThrows( + IllegalArgumentException.class, + () -> config.setPages("0") + ); + assertTrue(exception.getMessage().contains("Page numbers must be positive")); + } + + @Test + void testSetPages_negativePageThrows() { + Config config = new Config(); + IllegalArgumentException exception = assertThrows( + IllegalArgumentException.class, + () -> config.setPages("-1") + ); + // This will throw "Invalid page range format" because "-1" looks like a range + assertTrue(exception.getMessage().contains("Invalid page range format")); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/api/FilterConfigTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/api/FilterConfigTest.java new file mode 100644 index 0000000..fb7a767 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/api/FilterConfigTest.java @@ -0,0 +1,20 @@ +package org.opendataloader.pdf.api; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class FilterConfigTest { + + @Test + void defaultsKeepInvisibleContentFiltersEnabledButSensitiveDataDisabled() { + FilterConfig config = new FilterConfig(); + + assertFalse(config.isFilterHiddenText()); + assertTrue(config.isFilterOutOfPage()); + assertTrue(config.isFilterTinyText()); + assertTrue(config.isFilterHiddenOCG()); + assertFalse(config.isFilterSensitiveData()); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/api/cli/CLIOptionsContentSafetyTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/api/cli/CLIOptionsContentSafetyTest.java new file mode 100644 index 0000000..b3c07af --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/api/cli/CLIOptionsContentSafetyTest.java @@ -0,0 +1,102 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.api.cli; + +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.CommandLineParser; +import org.apache.commons.cli.DefaultParser; +import org.apache.commons.cli.Options; +import org.junit.jupiter.api.Test; +import org.opendataloader.pdf.api.Config; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import static org.junit.jupiter.api.Assertions.*; + +class CLIOptionsContentSafetyTest { + + private Config parseArgs(String... args) throws Exception { + Options options = CLIOptions.defineOptions(); + CommandLineParser parser = new DefaultParser(); + CommandLine commandLine = parser.parse(options, args); + return CLIOptions.createConfigFromCommandLine(commandLine); + } + + @Test + void sanitizeFlagEnablesSensitiveDataFilter() throws Exception { + Config config = parseArgs("--output-dir", "/tmp", "--sanitize"); + assertTrue(config.getFilterConfig().isFilterSensitiveData(), + "--sanitize should set filterSensitiveData to true"); + } + + @Test + void defaultDoesNotEnableSensitiveDataFilter() throws Exception { + Config config = parseArgs("--output-dir", "/tmp"); + assertFalse(config.getFilterConfig().isFilterSensitiveData(), + "Without --sanitize, filterSensitiveData should remain false"); + } + + @Test + void sanitizeWithContentSafetyOffAllStillEnablesSanitize() throws Exception { + Config config = parseArgs("--output-dir", "/tmp", "--content-safety-off", "all", "--sanitize"); + assertTrue(config.getFilterConfig().isFilterSensitiveData(), + "--sanitize should set filterSensitiveData=true even when --content-safety-off all is used"); + assertFalse(config.getFilterConfig().isFilterHiddenText(), + "--content-safety-off all should disable filterHiddenText"); + assertFalse(config.getFilterConfig().isFilterOutOfPage(), + "--content-safety-off all should disable filterOutOfPage"); + assertFalse(config.getFilterConfig().isFilterTinyText(), + "--content-safety-off all should disable filterTinyText"); + assertFalse(config.getFilterConfig().isFilterHiddenOCG(), + "--content-safety-off all should disable filterHiddenOCG"); + } + + @Test + void contentSafetyOffAllDoesNotTouchSensitiveData() throws Exception { + Config config = parseArgs("--output-dir", "/tmp", "--content-safety-off", "all"); + assertFalse(config.getFilterConfig().isFilterSensitiveData(), + "--content-safety-off all should not enable filterSensitiveData (stays false)"); + } + + @Test + void deprecatedSensitiveDataValueIsAccepted() throws Exception { + Config config = parseArgs("--output-dir", "/tmp", "--content-safety-off", "sensitive-data"); + assertFalse(config.getFilterConfig().isFilterSensitiveData(), + "Deprecated sensitive-data value should not enable sanitization"); + } + + @Test + void deprecatedSensitiveDataValuePrintsWarning() throws Exception { + PrintStream originalErr = System.err; + ByteArrayOutputStream errContent = new ByteArrayOutputStream(); + System.setErr(new PrintStream(errContent)); + try { + parseArgs("--output-dir", "/tmp", "--content-safety-off", "sensitive-data"); + assertTrue(errContent.toString().contains("deprecated"), + "Should print a deprecation warning to stderr"); + } finally { + System.setErr(originalErr); + } + } + + @Test + void sanitizeWithDeprecatedSensitiveDataStillEnablesSanitize() throws Exception { + Config config = parseArgs("--output-dir", "/tmp", "--content-safety-off", "sensitive-data", "--sanitize"); + assertTrue(config.getFilterConfig().isFilterSensitiveData(), + "--sanitize should win over deprecated --content-safety-off sensitive-data"); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/api/cli/CLIOptionsTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/api/cli/CLIOptionsTest.java new file mode 100644 index 0000000..f673a6d --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/api/cli/CLIOptionsTest.java @@ -0,0 +1,782 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.api.cli; + +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.CommandLineParser; +import org.apache.commons.cli.DefaultParser; +import org.apache.commons.cli.Options; +import org.apache.commons.cli.ParseException; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; +import org.opendataloader.pdf.api.Config; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.PrintStream; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +class CLIOptionsTest { + + @TempDir + Path tempDir; + + private File testPdf; + private Options options; + private CommandLineParser parser; + + @BeforeEach + void setUp() throws IOException { + testPdf = tempDir.resolve("test.pdf").toFile(); + Files.createFile(testPdf.toPath()); + options = CLIOptions.defineOptions(); + parser = new DefaultParser(); + } + + @Test + void testDefineOptions_containsImageOutputOption() { + assertTrue(options.hasOption("image-output")); + } + + @Test + void testDefineOptions_containsImageFormatOption() { + assertTrue(options.hasOption("image-format")); + } + + @Test + void testCreateConfig_withImageOutputEmbedded() throws ParseException { + String[] args = {"--image-output", "embedded", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + Config config = CLIOptions.createConfigFromCommandLine(cmd); + + assertTrue(config.isEmbedImages()); + assertEquals(Config.IMAGE_OUTPUT_EMBEDDED, config.getImageOutput()); + } + + @Test + void testCreateConfig_withImageOutputExternal() throws ParseException { + String[] args = {"--image-output", "external", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + Config config = CLIOptions.createConfigFromCommandLine(cmd); + + assertFalse(config.isEmbedImages()); + assertEquals(Config.IMAGE_OUTPUT_EXTERNAL, config.getImageOutput()); + } + + @Test + void testCreateConfig_defaultImageOutput() throws ParseException { + // Default should be external + String[] args = {testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + Config config = CLIOptions.createConfigFromCommandLine(cmd); + + assertFalse(config.isEmbedImages()); + assertFalse(config.isImageOutputOff()); + assertEquals(Config.IMAGE_OUTPUT_EXTERNAL, config.getImageOutput()); + } + + @Test + void testCreateConfig_withImageOutputOff() throws ParseException { + String[] args = {"--image-output", "off", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + Config config = CLIOptions.createConfigFromCommandLine(cmd); + + assertFalse(config.isEmbedImages()); + assertTrue(config.isImageOutputOff()); + assertEquals(Config.IMAGE_OUTPUT_OFF, config.getImageOutput()); + } + + @ParameterizedTest + @ValueSource(strings = {"png", "jpeg"}) + void testCreateConfig_withValidImageFormat(String format) throws ParseException { + String[] args = {"--image-format", format, testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + Config config = CLIOptions.createConfigFromCommandLine(cmd); + + assertEquals(format, config.getImageFormat()); + } + + @Test + void testCreateConfig_withUppercaseImageFormat() throws ParseException { + String[] args = {"--image-format", "JPEG", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + Config config = CLIOptions.createConfigFromCommandLine(cmd); + + assertEquals("jpeg", config.getImageFormat()); + } + + @Test + void testCreateConfig_withInvalidImageFormat() throws ParseException { + String[] args = {"--image-format", "bmp", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + assertThrows(IllegalArgumentException.class, () -> { + CLIOptions.createConfigFromCommandLine(cmd); + }); + } + + @Test + void testCreateConfig_withEmptyImageFormat() throws ParseException { + String[] args = {"--image-format", "", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + assertThrows(IllegalArgumentException.class, () -> { + CLIOptions.createConfigFromCommandLine(cmd); + }); + } + + @Test + void testCreateConfig_withImageOutputAndImageFormat() throws ParseException { + String[] args = {"--image-output", "embedded", "--image-format", "jpeg", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + Config config = CLIOptions.createConfigFromCommandLine(cmd); + + assertTrue(config.isEmbedImages()); + assertEquals("jpeg", config.getImageFormat()); + } + + @Test + void testCreateConfig_imageFormatWithExternalOutput() throws ParseException { + String[] args = {"--image-output", "external", "--image-format", "jpeg", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + Config config = CLIOptions.createConfigFromCommandLine(cmd); + + assertFalse(config.isEmbedImages()); + assertEquals("jpeg", config.getImageFormat()); + } + + @Test + void testCreateConfig_withWebpImageFormat_shouldFail() throws ParseException { + // WebP is not supported + String[] args = {"--image-format", "webp", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + assertThrows(IllegalArgumentException.class, () -> { + CLIOptions.createConfigFromCommandLine(cmd); + }); + } + + @Test + void testDefaultImageFormat() throws ParseException { + String[] args = {testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + Config config = CLIOptions.createConfigFromCommandLine(cmd); + + assertEquals(Config.IMAGE_FORMAT_PNG, config.getImageFormat()); + } + + @Test + void testCreateConfig_withInvalidImageOutput() throws ParseException { + String[] args = {"--image-output", "invalid", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + assertThrows(IllegalArgumentException.class, () -> { + CLIOptions.createConfigFromCommandLine(cmd); + }); + } + + @Test + void testCreateConfig_withUppercaseImageOutput() throws ParseException { + String[] args = {"--image-output", "EMBEDDED", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + Config config = CLIOptions.createConfigFromCommandLine(cmd); + + assertTrue(config.isEmbedImages()); + } + + @Test + void testCreateConfig_defaultReadingOrder() throws ParseException { + // Default should be xycut (new default) + String[] args = {testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + Config config = CLIOptions.createConfigFromCommandLine(cmd); + + assertEquals(Config.READING_ORDER_XYCUT, config.getReadingOrder()); + } + + @Test + void testCreateConfig_withReadingOrderOff() throws ParseException { + String[] args = {"--reading-order", "off", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + Config config = CLIOptions.createConfigFromCommandLine(cmd); + + assertEquals(Config.READING_ORDER_OFF, config.getReadingOrder()); + } + + // ===== Pages Option Tests ===== + + @Test + void testDefineOptions_containsPagesOption() { + assertTrue(options.hasOption("pages")); + } + + @Test + void testCreateConfig_withPages() throws ParseException { + String[] args = {"--pages", "1,3,5-7", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + Config config = CLIOptions.createConfigFromCommandLine(cmd); + + assertEquals("1,3,5-7", config.getPages()); + assertEquals(List.of(1, 3, 5, 6, 7), config.getPageNumbers()); + } + + @Test + void testCreateConfig_withSinglePage() throws ParseException { + String[] args = {"--pages", "5", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + Config config = CLIOptions.createConfigFromCommandLine(cmd); + + assertEquals("5", config.getPages()); + assertEquals(List.of(5), config.getPageNumbers()); + } + + @Test + void testCreateConfig_withPageRange() throws ParseException { + String[] args = {"--pages", "1-10", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + Config config = CLIOptions.createConfigFromCommandLine(cmd); + + assertEquals("1-10", config.getPages()); + assertEquals(List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), config.getPageNumbers()); + } + + @Test + void testCreateConfig_defaultPages() throws ParseException { + String[] args = {testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + Config config = CLIOptions.createConfigFromCommandLine(cmd); + + assertNull(config.getPages()); + assertTrue(config.getPageNumbers().isEmpty()); + } + + @Test + void testCreateConfig_withInvalidPages() throws ParseException { + String[] args = {"--pages", "abc", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + assertThrows(IllegalArgumentException.class, () -> { + CLIOptions.createConfigFromCommandLine(cmd); + }); + } + + @Test + void testCreateConfig_withReversePageRange() throws ParseException { + String[] args = {"--pages", "5-3", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + assertThrows(IllegalArgumentException.class, () -> { + CLIOptions.createConfigFromCommandLine(cmd); + }); + } + + // ===== Image Directory Option Tests ===== + + @Test + void testDefineOptions_containsImageDirOption() { + assertTrue(options.hasOption("image-dir")); + } + + @Test + void testCreateConfig_withImageDir() throws ParseException { + Path customDir = tempDir.resolve("custom-images"); + String[] args = {"--image-dir", customDir.toString(), testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + Config config = CLIOptions.createConfigFromCommandLine(cmd); + + assertEquals(customDir.toString(), config.getImageDir()); + } + + @Test + void testCreateConfig_defaultImageDir() throws ParseException { + String[] args = {testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + Config config = CLIOptions.createConfigFromCommandLine(cmd); + + assertNull(config.getImageDir()); // null means use default + } + + @Test + void testCreateConfig_withImageDirAndOutputDir() throws ParseException { + Path outputDir = tempDir.resolve("output"); + Path imageDir = tempDir.resolve("images"); + String[] args = {"-o", outputDir.toString(), "--image-dir", imageDir.toString(), testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + Config config = CLIOptions.createConfigFromCommandLine(cmd); + + assertEquals(outputDir.toString(), config.getOutputFolder()); + assertEquals(imageDir.toString(), config.getImageDir()); + } + + @Test + void testCreateConfig_withEmptyImageDir() throws ParseException { + String[] args = {"--image-dir", "", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + Config config = CLIOptions.createConfigFromCommandLine(cmd); + + assertNull(config.getImageDir()); // empty string treated as null (use default) + } + + @Test + void testCreateConfig_withWhitespaceImageDir() throws ParseException { + String[] args = {"--image-dir", " ", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + Config config = CLIOptions.createConfigFromCommandLine(cmd); + + assertNull(config.getImageDir()); // whitespace-only treated as null (use default) + } + + // ===== Hybrid Mode Option Tests ===== + + @Test + void testDefineOptions_containsHybridModeOption() { + assertTrue(options.hasOption("hybrid-mode")); + } + + @Test + void testDefineOptions_containsHybridOcrOption() { + // --hybrid-ocr is deprecated but still accepted for backward compatibility + assertTrue(options.hasOption("hybrid-ocr")); + } + + @Test + void testCreateConfig_withHybridModeAuto() throws ParseException { + String[] args = {"--hybrid", "docling", "--hybrid-mode", "auto", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + Config config = CLIOptions.createConfigFromCommandLine(cmd); + + assertEquals("auto", config.getHybridConfig().getMode()); + assertFalse(config.getHybridConfig().isFullMode()); + } + + @Test + void testCreateConfig_withHybridModeFull() throws ParseException { + String[] args = {"--hybrid", "docling", "--hybrid-mode", "full", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + Config config = CLIOptions.createConfigFromCommandLine(cmd); + + assertEquals("full", config.getHybridConfig().getMode()); + assertTrue(config.getHybridConfig().isFullMode()); + } + + @Test + void testCreateConfig_withInvalidHybridMode() throws ParseException { + String[] args = {"--hybrid-mode", "invalid", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + assertThrows(IllegalArgumentException.class, () -> { + CLIOptions.createConfigFromCommandLine(cmd); + }); + } + + @Test + void testCreateConfig_withDeprecatedHybridOcr() throws ParseException { + // --hybrid-ocr is deprecated; it should print a warning but not throw + String[] args = {"--hybrid", "docling", "--hybrid-ocr", "force", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + // Should not throw, just prints deprecation warning + Config config = CLIOptions.createConfigFromCommandLine(cmd); + assertNotNull(config); + } + + @Test + void testCreateConfig_defaultHybridMode() throws ParseException { + String[] args = {"--hybrid", "docling", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + Config config = CLIOptions.createConfigFromCommandLine(cmd); + + assertEquals("auto", config.getHybridConfig().getMode()); + } + + @Test + void testCreateConfig_withDoclingBackend() throws ParseException { + String[] args = {"--hybrid", "docling", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + Config config = CLIOptions.createConfigFromCommandLine(cmd); + + assertEquals("docling", config.getHybrid()); + assertTrue(config.isHybridEnabled()); + } + + @Test + void testCreateConfig_defaultHybridFallbackIsFalse() throws ParseException { + String[] args = {"--hybrid", "docling", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + Config config = CLIOptions.createConfigFromCommandLine(cmd); + + assertFalse(config.getHybridConfig().isFallbackToJava(), + "hybrid fallback should be disabled by default to fail-fast when server is unavailable"); + } + + @Test + void testCreateConfig_withHybridFallbackExplicit() throws ParseException { + String[] args = {"--hybrid", "docling", "--hybrid-fallback", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + Config config = CLIOptions.createConfigFromCommandLine(cmd); + + assertTrue(config.getHybridConfig().isFallbackToJava(), + "hybrid fallback should be enabled when explicitly passed"); + } + + @Test + void testDefineOptions_containsHybridHancomAiRegionlistStrategy() { + assertTrue(options.hasOption("hybrid-hancom-ai-regionlist-strategy")); + } + + @Test + void testDefineOptions_containsHybridHancomAiOcrStrategy() { + assertTrue(options.hasOption("hybrid-hancom-ai-ocr-strategy")); + } + + @Test + void testDefineOptions_containsHybridHancomAiImageCache() { + assertTrue(options.hasOption("hybrid-hancom-ai-image-cache")); + } + + @Test + void testDefineOptions_containsHybridHancomAiSaveCrops() { + assertTrue(options.hasOption("hybrid-hancom-ai-save-crops")); + } + + @Test + void testDefineOptions_containsHybridHancomAiCropOutputDir() { + assertTrue(options.hasOption("hybrid-hancom-ai-crop-output-dir")); + } + + @Test + void testCreateConfig_withHybridHancomAiRegionlistStrategy() throws ParseException { + String[] args = {"--hybrid", "hancom-ai", + "--hybrid-hancom-ai-regionlist-strategy", "list-only", + testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + Config config = CLIOptions.createConfigFromCommandLine(cmd); + assertEquals("list-only", config.getHybridConfig().getRegionlistStrategy()); + } + + @Test + void testCreateConfig_withHybridHancomAiOcrStrategy() throws ParseException { + String[] args = {"--hybrid", "hancom-ai", + "--hybrid-hancom-ai-ocr-strategy", "force", + testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + Config config = CLIOptions.createConfigFromCommandLine(cmd); + assertEquals("force", config.getHybridConfig().getOcrStrategy()); + } + + @Test + void testCreateConfig_withHybridHancomAiImageCache() throws ParseException { + String[] args = {"--hybrid", "hancom-ai", + "--hybrid-hancom-ai-image-cache", "disk", + testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + Config config = CLIOptions.createConfigFromCommandLine(cmd); + assertEquals("disk", config.getHybridConfig().getImageCache()); + } + + @Test + void testCreateConfig_withHybridHancomAiSaveCrops() throws ParseException { + String[] args = {"--hybrid", "hancom-ai", + "--hybrid-hancom-ai-save-crops", + testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + Config config = CLIOptions.createConfigFromCommandLine(cmd); + assertTrue(config.getHybridConfig().isSaveCrops()); + } + + @Test + void testCreateConfig_withHybridHancomAiCropOutputDir() throws ParseException { + String[] args = {"--hybrid", "hancom-ai", + "--hybrid-hancom-ai-crop-output-dir", "/tmp/crops", + testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + Config config = CLIOptions.createConfigFromCommandLine(cmd); + assertEquals("/tmp/crops", config.getHybridConfig().getCropOutputDir()); + } + + @Test + void testCreateConfig_hybridHancomAiRegionlistStrategy_invalidValue_throws() { + String[] args = {"--hybrid", "hancom-ai", + "--hybrid-hancom-ai-regionlist-strategy", "bogus", + testPdf.getAbsolutePath()}; + IllegalArgumentException ex = assertThrows(IllegalArgumentException.class, () -> { + CommandLine cmd = parser.parse(options, args); + CLIOptions.createConfigFromCommandLine(cmd); + }); + assertTrue(ex.getMessage().contains("--hybrid-hancom-ai-regionlist-strategy"), + "Error should name the offending CLI flag, got: " + ex.getMessage()); + assertTrue(ex.getMessage().contains("table-first") && ex.getMessage().contains("list-only"), + "Error should list valid values, got: " + ex.getMessage()); + } + + @Test + void testCreateConfig_hybridHancomAiOcrStrategy_invalidValue_throws() { + String[] args = {"--hybrid", "hancom-ai", + "--hybrid-hancom-ai-ocr-strategy", "bogus", + testPdf.getAbsolutePath()}; + IllegalArgumentException ex = assertThrows(IllegalArgumentException.class, () -> { + CommandLine cmd = parser.parse(options, args); + CLIOptions.createConfigFromCommandLine(cmd); + }); + assertTrue(ex.getMessage().contains("--hybrid-hancom-ai-ocr-strategy"), + "Error should name the offending CLI flag, got: " + ex.getMessage()); + } + + @Test + void testCreateConfig_hybridHancomAiImageCache_invalidValue_throws() { + String[] args = {"--hybrid", "hancom-ai", + "--hybrid-hancom-ai-image-cache", "bogus", + testPdf.getAbsolutePath()}; + IllegalArgumentException ex = assertThrows(IllegalArgumentException.class, () -> { + CommandLine cmd = parser.parse(options, args); + CLIOptions.createConfigFromCommandLine(cmd); + }); + assertTrue(ex.getMessage().contains("--hybrid-hancom-ai-image-cache"), + "Error should name the offending CLI flag, got: " + ex.getMessage()); + } + + @Test + void testCreateConfig_hybridHancomAiOption_withoutHancomAi_throws() { + String[] args = {"--hybrid-hancom-ai-regionlist-strategy", "list-only", + testPdf.getAbsolutePath()}; + // No --hybrid set, defaults to off. + IllegalArgumentException ex = assertThrows(IllegalArgumentException.class, () -> { + CommandLine cmd = parser.parse(options, args); + CLIOptions.createConfigFromCommandLine(cmd); + }); + assertTrue(ex.getMessage().contains("--hybrid-hancom-ai-"), + "Error should mention the offending prefix, got: " + ex.getMessage()); + assertTrue(ex.getMessage().contains("hancom-ai"), + "Error should mention required backend, got: " + ex.getMessage()); + } + + @Test + void testCreateConfig_hybridHancomAiOption_withDoclingFast_throws() { + String[] args = {"--hybrid", "docling-fast", + "--hybrid-hancom-ai-ocr-strategy", "force", + testPdf.getAbsolutePath()}; + assertThrows(IllegalArgumentException.class, () -> { + CommandLine cmd = parser.parse(options, args); + CLIOptions.createConfigFromCommandLine(cmd); + }); + } + + @Test + void testCreateConfig_withThreadsZero_throws() throws ParseException { + String[] args = {"--threads", "0", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + assertThrows(IllegalArgumentException.class, () -> { + CLIOptions.createConfigFromCommandLine(cmd); + }); + } + + @Test + void testCreateConfig_withInvalidTableMethod_throws() throws ParseException { + String[] args = {"--table-method", "invalid", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + assertThrows(IllegalArgumentException.class, () -> { + CLIOptions.createConfigFromCommandLine(cmd); + }); + } + + @Test + void testAddAllTo_registersAllOptions() { + Options ext = new Options(); + CLIOptions.addAllTo(ext); + assertTrue(ext.hasOption("hybrid")); + assertTrue(ext.hasOption("hybrid-mode")); + assertTrue(ext.hasOption("hybrid-hancom-ai-regionlist-strategy")); + assertTrue(ext.hasOption("format")); + assertTrue(ext.hasOption("threads")); + } + + @Test + void testApplyAllTo_appliesCoreOptions() throws ParseException { + Options ext = new Options(); + CLIOptions.addAllTo(ext); + ext.addOption(null, "downstream-only", true, "Downstream-specific"); + + // Use --hybrid off so normalize() does not reset threads to 1. + String[] args = {"--hybrid", "off", + "--threads", "2", + "--downstream-only", "value"}; + CommandLine cmd = parser.parse(ext, args); + + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + CLIOptions.applyAllTo(config, cmd); + + assertEquals("off", config.getHybrid()); + assertEquals(2, config.getThreads()); + // downstream-only is not consumed by applyAllTo — that is the caller's job. + assertEquals("value", cmd.getOptionValue("downstream-only")); + } + + @Test + void testAddAllTo_preservesPreexistingDownstreamOptions() { + Options ext = new Options(); + ext.addOption(null, "ua-foo", true, "Pdfua-specific option"); + ext.addOption(null, "ua-bar", false, "Pdfua-specific flag"); + CLIOptions.addAllTo(ext); + + assertTrue(ext.hasOption("ua-foo")); + assertTrue(ext.hasOption("ua-bar")); + assertTrue(ext.hasOption("hybrid")); + assertTrue(ext.hasOption("threads")); + } + + @Test + void testAddAllTo_calledTwice_isIdempotent() { + Options ext = new Options(); + CLIOptions.addAllTo(ext); + int afterFirst = ext.getOptions().size(); + // commons-cli's Options.addOption silently replaces by long-name, so calling + // addAllTo twice does not throw and does not duplicate. Pin this so a future + // commons-cli upgrade that changes the behavior surfaces here. + CLIOptions.addAllTo(ext); + assertEquals(afterFirst, ext.getOptions().size()); + } + + // ===== --format spec separation ===== + + @Test + void testDefineOptions_markdownWithHtmlIsExportedAsBooleanFlag() { + // --markdown-with-html is the official way to enable HTML-in-Markdown. + assertTrue(options.hasOption("markdown-with-html")); + } + + @Test + void testCreateConfig_formatMarkdownPlusMarkdownWithHtml() throws ParseException { + String[] args = {"--format", "markdown", "--markdown-with-html", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + + Config config = CLIOptions.createConfigFromCommandLine(cmd); + + assertTrue(config.isGenerateMarkdown()); + assertTrue(config.isUseHTMLInMarkdown()); + } + + @Test + void testCreateConfig_formatMarkdownWithHtmlEmitsDeprecationWarning() throws ParseException { + String stderr = captureStderr(() -> { + String[] args = {"--format", "markdown-with-html", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + Config config = CLIOptions.createConfigFromCommandLine(cmd); + assertTrue(config.isGenerateMarkdown()); + assertTrue(config.isUseHTMLInMarkdown()); + }); + assertTrue(stderr.contains("--format markdown-with-html is deprecated"), + "expected deprecation warning, got: " + stderr); + } + + @Test + void testCreateConfig_formatMarkdownWithImagesEmitsDeprecationWarning() throws ParseException { + // --format markdown-with-images used to look distinct but produced the same output + // as --format markdown. Now it warns and behaves the same; image extraction is controlled by + // --image-output instead. + String stderr = captureStderr(() -> { + String[] args = {"--format", "markdown-with-images", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + Config config = CLIOptions.createConfigFromCommandLine(cmd); + assertTrue(config.isGenerateMarkdown()); + }); + assertTrue(stderr.contains("--format markdown-with-images is deprecated"), + "expected deprecation warning, got: " + stderr); + } + + @Test + void testCreateConfig_formatMarkdownAloneDoesNotWarn() throws ParseException { + String stderr = captureStderr(() -> { + String[] args = {"--format", "markdown", testPdf.getAbsolutePath()}; + CommandLine cmd = parser.parse(options, args); + Config config = CLIOptions.createConfigFromCommandLine(cmd); + assertTrue(config.isGenerateMarkdown()); + assertFalse(config.isUseHTMLInMarkdown()); + }); + assertFalse(stderr.contains("deprecated"), "expected no deprecation warning, got: " + stderr); + } + + @Test + void testCreateConfig_formatUnsupportedValueErrorDropsDeprecatedNames() { + String[] args = {"--format", "bogus", testPdf.getAbsolutePath()}; + IllegalArgumentException ex = assertThrows(IllegalArgumentException.class, () -> { + CommandLine cmd = parser.parse(options, args); + CLIOptions.createConfigFromCommandLine(cmd); + }); + String msg = ex.getMessage(); + assertFalse(msg.contains("markdown-with-html"), + "deprecated value must not appear in supported-values list: " + msg); + assertFalse(msg.contains("markdown-with-images"), + "deprecated value must not appear in supported-values list: " + msg); + } + + private static String captureStderr(ThrowingRunnable r) { + PrintStream originalErr = System.err; + ByteArrayOutputStream buf = new ByteArrayOutputStream(); + try (PrintStream captured = new PrintStream(buf, true, StandardCharsets.UTF_8)) { + System.setErr(captured); + r.run(); + } catch (Exception e) { + throw new RuntimeException(e); + } finally { + System.setErr(originalErr); + } + return buf.toString(StandardCharsets.UTF_8); + } + + @FunctionalInterface + private interface ThrowingRunnable { + void run() throws Exception; + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/containers/StaticLayoutContainersTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/containers/StaticLayoutContainersTest.java new file mode 100644 index 0000000..fa01b39 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/containers/StaticLayoutContainersTest.java @@ -0,0 +1,202 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.containers; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.verapdf.wcag.algorithms.semanticalgorithms.consumers.ContrastRatioConsumer; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.ImagesUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.logging.Handler; +import java.util.logging.Level; +import java.util.logging.LogRecord; +import java.util.logging.Logger; +import java.util.stream.Collectors; + +import static org.junit.jupiter.api.Assertions.*; + +class StaticLayoutContainersTest { + + @BeforeEach + void setUp() { + StaticLayoutContainers.clearContainers(); + } + + @Test + void testClearContainers_resetsEmbedImages() { + StaticLayoutContainers.setEmbedImages(true); + assertTrue(StaticLayoutContainers.isEmbedImages()); + + StaticLayoutContainers.clearContainers(); + + assertFalse(StaticLayoutContainers.isEmbedImages()); + } + + @Test + void testClearContainers_resetsImageFormat() { + StaticLayoutContainers.setImageFormat("jpeg"); + assertEquals("jpeg", StaticLayoutContainers.getImageFormat()); + + StaticLayoutContainers.clearContainers(); + + assertEquals("png", StaticLayoutContainers.getImageFormat()); + } + + @Test + void testSetAndGetEmbedImages() { + assertFalse(StaticLayoutContainers.isEmbedImages()); + + StaticLayoutContainers.setEmbedImages(true); + assertTrue(StaticLayoutContainers.isEmbedImages()); + + StaticLayoutContainers.setEmbedImages(false); + assertFalse(StaticLayoutContainers.isEmbedImages()); + } + + @Test + void testSetAndGetImageFormat() { + assertEquals("png", StaticLayoutContainers.getImageFormat()); + + StaticLayoutContainers.setImageFormat("jpeg"); + assertEquals("jpeg", StaticLayoutContainers.getImageFormat()); + + StaticLayoutContainers.setImageFormat("png"); + assertEquals("png", StaticLayoutContainers.getImageFormat()); + } + + @Test + void testGetImageFormat_withNullValue_returnsDefaultPng() { + StaticLayoutContainers.setImageFormat(null); + + assertEquals("png", StaticLayoutContainers.getImageFormat()); + } + + @Test + void testIsEmbedImages_withNullValue_returnsFalse() { + // After clearContainers, embedImages is set to false + // This test verifies the Boolean.TRUE.equals() null-safe check + assertFalse(StaticLayoutContainers.isEmbedImages()); + } + + @Test + void testSetImagesDirectory() { + assertEquals("", StaticLayoutContainers.getImagesDirectory()); + + StaticLayoutContainers.setImagesDirectory("/path/to/images"); + assertEquals("/path/to/images", StaticLayoutContainers.getImagesDirectory()); + } + + @Test + void testIncrementImageIndex() { + StaticLayoutContainers.resetImageIndex(); + + assertEquals(1, StaticLayoutContainers.incrementImageIndex()); + assertEquals(2, StaticLayoutContainers.incrementImageIndex()); + assertEquals(3, StaticLayoutContainers.incrementImageIndex()); + } + + @Test + void testResetImageIndex() { + StaticLayoutContainers.incrementImageIndex(); + StaticLayoutContainers.incrementImageIndex(); + + StaticLayoutContainers.resetImageIndex(); + + assertEquals(1, StaticLayoutContainers.incrementImageIndex()); + } + + @Test + void testCurrentContentId() { + StaticLayoutContainers.setCurrentContentId(100); + assertEquals(100, StaticLayoutContainers.getCurrentContentId()); + + long id = StaticLayoutContainers.incrementContentId(); + assertEquals(100, id); + assertEquals(101, StaticLayoutContainers.getCurrentContentId()); + } + + /** + * Regression guard for issue #458 (OOM). + * + * Before the hotfix, a failed {@link ContrastRatioConsumer} construction + * was logged at {@link Level#WARNING} with only the message string — + * the throwable was dropped, and image extraction plus hidden-text + * filtering were then silently disabled for the rest of the document. + * That made OOM and PDFBox failures very hard to diagnose downstream. + * + * The hotfix raises the level to {@link Level#SEVERE} and passes the + * causing {@link Throwable} so the full stack trace is preserved. + * This test attaches a capturing {@link Handler} to the StaticLayoutContainers + * logger, forces an initialization failure via a non-existent PDF path, + * and asserts the published {@link LogRecord} reflects both contract + * changes plus the {@code isContrastRatioConsumerFailedToCreate} latch. + */ + @Test + void getContrastRatioConsumer_logsSevereWithThrowableOnInitFailure() { + Logger logger = Logger.getLogger(StaticContainers.class.getCanonicalName()); + List captured = new ArrayList<>(); + Handler capture = new Handler() { + @Override + public void publish(LogRecord record) { + captured.add(record); + } + @Override public void flush() { } + @Override public void close() throws SecurityException { } + }; + Level previousLevel = logger.getLevel(); + boolean previousUseParent = logger.getUseParentHandlers(); + logger.addHandler(capture); + logger.setLevel(Level.ALL); + logger.setUseParentHandlers(false); + try { + String bogusPath = "/nonexistent/issue458-oom-trigger.pdf"; + StaticContainers.setFileName(bogusPath); + ImagesUtils result = StaticContainers.getImagesUtils(); + + assertNull(result, + "getImagesUtils must return null after init failure (issue #458)"); + + LogRecord severe = captured.stream() + .filter(r -> r.getLevel() == Level.SEVERE) + .findFirst() + .orElseThrow(() -> new AssertionError( + "Expected a SEVERE log record on ImagesUtils init failure (issue #458). " + + "Captured levels: " + captured.stream().map(LogRecord::getLevel).collect(Collectors.toList()))); + assertNotNull(severe.getThrown(), + "SEVERE log record must include the causing Throwable so the stack trace is preserved (issue #458)"); + assertTrue(severe.getMessage().contains(bogusPath), + "SEVERE log message must mention the source PDF path for diagnosability: was '" + severe.getMessage() + "'"); + + // The latch is part of the documented silent-skip behaviour the hotfix + // makes visible — it must be set so callers know subsequent gets will + // short-circuit to null without re-attempting construction. + ImagesUtils second = StaticContainers.getImagesUtils(); + assertNull(second, + "After init failure, subsequent calls must keep returning null without retrying (issue #458)"); + long severeCount = captured.stream().filter(r -> r.getLevel() == Level.SEVERE).count(); + assertEquals(1, severeCount, + "SEVERE must be logged exactly once — the latch prevents repeated init attempts"); + } finally { + logger.removeHandler(capture); + logger.setLevel(previousLevel); + logger.setUseParentHandlers(previousUseParent); + StaticLayoutContainers.clearContainers(); + } + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/entities/PictureDescriptionE2ETest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/entities/PictureDescriptionE2ETest.java new file mode 100644 index 0000000..13814b9 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/entities/PictureDescriptionE2ETest.java @@ -0,0 +1,317 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.entities; + +import org.junit.jupiter.api.Test; +import org.opendataloader.pdf.html.HtmlGenerator; +import org.opendataloader.pdf.markdown.MarkdownGenerator; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; + +import java.io.StringWriter; +import java.lang.reflect.Method; + +import static org.junit.jupiter.api.Assertions.*; + +/** + * E2E tests verifying that picture descriptions are emitted as alt text + * (not as separate caption text) in Markdown and HTML output. + * + *

    Tests use reflection to call writePicture() directly, bypassing + * file I/O and PDF processing setup. + */ +class PictureDescriptionE2ETest { + + private static final BoundingBox BBOX = new BoundingBox(0, 0, 100, 100); + + // ------------------------------------------------------------------------- + // Markdown output + // ------------------------------------------------------------------------- + + @Test + void markdown_withDescription_altTextContainsDescription() throws Exception { + String description = "A bar chart showing quarterly sales"; + SemanticPicture picture = new SemanticPicture(BBOX, 1, description); + + StringWriter writer = new StringWriter(); + String output = invokeMarkdownWritePicture(writer, picture, "image_dir", "imageFile1.png"); + + // alt text must contain the sanitized description + assertTrue(output.contains("![A bar chart showing quarterly sales]"), + "Expected alt text with description, got: " + output); + } + + @Test + void markdown_withDescription_noItalicCaption() throws Exception { + String description = "A scatter plot of temperature vs humidity"; + SemanticPicture picture = new SemanticPicture(BBOX, 1, description); + + StringWriter writer = new StringWriter(); + String output = invokeMarkdownWritePicture(writer, picture, "image_dir", "imageFile1.png"); + + // old behaviour was to append *caption* below the image — must not exist + assertFalse(output.contains("*A scatter plot"), + "Italic caption must not appear below image, got: " + output); + assertFalse(output.contains("*" + description + "*"), + "Italic caption must not appear below image, got: " + output); + } + + @Test + void markdown_withoutDescription_fallbackAltText() throws Exception { + SemanticPicture picture = new SemanticPicture(BBOX, 3); + + StringWriter writer = new StringWriter(); + String output = invokeMarkdownWritePicture(writer, picture, "image_dir", "imageFile3.png"); + + assertTrue(output.contains("![image 3]"), + "Expected fallback alt text 'image 3', got: " + output); + } + + @Test + void markdown_descriptionWithSpecialChars_sanitizedInAlt() throws Exception { + String description = "Chart titled \"Q4 Results\" & profit"; + SemanticPicture picture = new SemanticPicture(BBOX, 1, description); + + StringWriter writer = new StringWriter(); + String output = invokeMarkdownWritePicture(writer, picture, "image_dir", "imageFile1.png"); + + // Special chars must be stripped from alt text + assertFalse(output.contains("\""), "Double quotes must not appear in output: " + output); + assertFalse(output.contains("<"), "< must not appear in output: " + output); + assertFalse(output.contains(">"), "> must not appear in output: " + output); + assertFalse(output.contains("&"), "& must not appear in output: " + output); + + // Sanitized text should be in alt + assertTrue(output.contains("![Chart titled Q4 Results revenue profit]"), + "Expected sanitized alt text, got: " + output); + } + + @Test + void markdown_descriptionWithNewline_sanitizedInAlt() throws Exception { + String description = "Line one\nLine two"; + SemanticPicture picture = new SemanticPicture(BBOX, 1, description); + + StringWriter writer = new StringWriter(); + String output = invokeMarkdownWritePicture(writer, picture, "image_dir", "imageFile1.png"); + + assertTrue(output.contains("![Line one Line two]"), + "Newline in description must be replaced with space, got: " + output); + } + + @Test + void markdown_sameDescriptionInAltAndNoSeparateCaption() throws Exception { + String description = "A pie chart showing market share"; + SemanticPicture picture = new SemanticPicture(BBOX, 1, description); + + StringWriter writer = new StringWriter(); + String output = invokeMarkdownWritePicture(writer, picture, "image_dir", "imageFile1.png"); + + // Must appear exactly once (in alt), not twice (alt + caption) + long count = output.chars() + .filter(c -> output.indexOf("A pie chart") == output.lastIndexOf("A pie chart") ? true : false) + .count(); + int firstIdx = output.indexOf("A pie chart showing market share"); + int lastIdx = output.lastIndexOf("A pie chart showing market share"); + assertEquals(firstIdx, lastIdx, + "Description must appear exactly once (alt only), got: " + output); + } + + // ------------------------------------------------------------------------- + // HTML output + // ------------------------------------------------------------------------- + + @Test + void html_withDescription_altAttributeContainsDescription() throws Exception { + String description = "A line graph of monthly revenue"; + SemanticPicture picture = new SemanticPicture(BBOX, 1, description); + + String output = invokeHtmlWritePicture(picture, "image_dir", "imageFile1.png"); + + assertTrue(output.contains("alt=\"A line graph of monthly revenue\""), + "Expected alt attribute with description, got: " + output); + } + + @Test + void html_withDescription_noFigcaption() throws Exception { + String description = "A line graph of monthly revenue"; + SemanticPicture picture = new SemanticPicture(BBOX, 1, description); + + String output = invokeHtmlWritePicture(picture, "image_dir", "imageFile1.png"); + + assertFalse(output.contains("

    "), + "No figcaption expected (alt-only, consistent with Markdown), got: " + output); + } + + @Test + void html_withDescription_altContainsSanitizedDescription() throws Exception { + String description = "Histogram of response times"; + SemanticPicture picture = new SemanticPicture(BBOX, 1, description); + + String output = invokeHtmlWritePicture(picture, "image_dir", "imageFile1.png"); + + String sanitized = picture.sanitizeDescription(); + assertTrue(output.contains("alt=\"" + sanitized + "\""), + "alt must contain sanitized description, got: " + output); + assertFalse(output.contains("
    "), + "No figcaption expected, got: " + output); + } + + @Test + void html_withoutDescription_fallbackAltText() throws Exception { + SemanticPicture picture = new SemanticPicture(BBOX, 2); + + String output = invokeHtmlWritePicture(picture, "image_dir", "imageFile2.png"); + + assertTrue(output.contains("alt=\"figure2\""), + "Expected fallback alt text 'figure2', got: " + output); + assertFalse(output.contains("
    "), + "No figcaption expected when no description, got: " + output); + } + + @Test + void html_descriptionWithSpecialChars_sanitizedInAlt() throws Exception { + String description = "Chart titled \"Q4\" bold & more"; + SemanticPicture picture = new SemanticPicture(BBOX, 1, description); + + String output = invokeHtmlWritePicture(picture, "image_dir", "imageFile1.png"); + + // Sanitized: no special chars + assertFalse(output.contains("\"Q4\""), "Double quotes must be removed: " + output); + assertFalse(output.contains(""), "HTML tags must be removed: " + output); + assertFalse(output.contains("&"), "& must be removed before insertion: " + output); + + String sanitized = picture.sanitizeDescription(); + assertTrue(output.contains("alt=\"" + sanitized + "\""), + "alt must contain sanitized text, got: " + output); + assertFalse(output.contains("
    "), + "No figcaption expected, got: " + output); + } + + // ------------------------------------------------------------------------- + // Helpers — invoke writePicture via reflection with a mock image file + // ------------------------------------------------------------------------- + + /** + * Invokes MarkdownGenerator.writePicture() via a test subclass that overrides + * the image-existence check and image-path resolution. + */ + private String invokeMarkdownWritePicture(StringWriter writer, SemanticPicture picture, + String imageDir, String imageName) throws Exception { + // Use a test subclass that bypasses file I/O + MarkdownGenerator generator = new TestMarkdownGenerator(writer, imageDir, imageName); + Method method = MarkdownGenerator.class.getDeclaredMethod("writePicture", SemanticPicture.class); + method.setAccessible(true); + method.invoke(generator, picture); + return writer.toString(); + } + + /** + * Invokes HtmlGenerator.writePicture() via a test subclass that overrides + * the image-existence check and image-path resolution. + */ + private String invokeHtmlWritePicture(SemanticPicture picture, + String imageDir, String imageName) throws Exception { + StringWriter writer = new StringWriter(); + HtmlGenerator generator = new TestHtmlGenerator(writer, imageDir, imageName); + Method method = HtmlGenerator.class.getDeclaredMethod("writePicture", SemanticPicture.class); + method.setAccessible(true); + method.invoke(generator, picture); + return writer.toString(); + } + + // ------------------------------------------------------------------------- + // Test subclasses that bypass StaticLayoutContainers / file system + // ------------------------------------------------------------------------- + + /** + * MarkdownGenerator subclass that writes to a StringWriter and + * overrides image-path lookups to return predictable values. + */ + static class TestMarkdownGenerator extends MarkdownGenerator { + + private final String imageDir; + private final String imageName; + + TestMarkdownGenerator(StringWriter writer, String imageDir, String imageName) { + super(writer, buildMinimalConfig()); + this.imageDir = imageDir; + this.imageName = imageName; + this.isImageSupported = true; + } + + @Override + protected void writePicture(SemanticPicture picture) { + try { + // Build paths directly, bypassing StaticLayoutContainers + String imageSource = imageDir + "/" + imageName; + String altText = picture.hasDescription() + ? picture.sanitizeDescription() + : "image " + picture.getPictureIndex(); + String imageString = String.format("![%s](%s)", altText, imageSource); + markdownWriter.write(getCorrectMarkdownString(imageString)); + } catch (java.io.IOException e) { + throw new RuntimeException(e); + } + } + + private static org.opendataloader.pdf.api.Config buildMinimalConfig() { + org.opendataloader.pdf.api.Config config = new org.opendataloader.pdf.api.Config(); + config.setOutputFolder(System.getProperty("java.io.tmpdir")); + return config; + } + } + + /** + * HtmlGenerator subclass that writes to a StringWriter and + * overrides writePicture() to bypass StaticLayoutContainers / file system. + */ + static class TestHtmlGenerator extends HtmlGenerator { + + private final String imageDir; + private final String imageName; + private final StringWriter stringWriter; + + TestHtmlGenerator(StringWriter writer, String imageDir, String imageName) throws java.io.IOException { + super(createTempFile(), buildMinimalConfig()); + this.imageDir = imageDir; + this.imageName = imageName; + this.stringWriter = writer; + } + + @Override + protected void writePicture(SemanticPicture picture) { + String imageSource = imageDir + "/" + imageName; + String altText = picture.hasDescription() + ? picture.sanitizeDescription() + : "figure" + picture.getPictureIndex(); + + stringWriter.write("
    \n"); + stringWriter.write(String.format("\"%s\"%n", imageSource, altText)); + stringWriter.write("
    \n"); + } + + private static java.io.File createTempFile() throws java.io.IOException { + java.io.File f = java.io.File.createTempFile("test", ".html"); + f.deleteOnExit(); + return f; + } + + private static org.opendataloader.pdf.api.Config buildMinimalConfig() { + org.opendataloader.pdf.api.Config config = new org.opendataloader.pdf.api.Config(); + config.setOutputFolder(System.getProperty("java.io.tmpdir")); + return config; + } + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/entities/SemanticPictureTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/entities/SemanticPictureTest.java new file mode 100644 index 0000000..d1480a8 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/entities/SemanticPictureTest.java @@ -0,0 +1,227 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.entities; + +import org.junit.jupiter.api.Test; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; + +import static org.junit.jupiter.api.Assertions.*; + +class SemanticPictureTest { + + private static final BoundingBox BBOX = new BoundingBox(0, 0, 100, 100); + + // --- hasDescription --- + + @Test + void hasDescription_nullDescription_returnsFalse() { + SemanticPicture picture = new SemanticPicture(BBOX, 1); + assertFalse(picture.hasDescription()); + } + + @Test + void hasDescription_emptyDescription_returnsFalse() { + SemanticPicture picture = new SemanticPicture(BBOX, 1, ""); + assertFalse(picture.hasDescription()); + } + + @Test + void hasDescription_nonEmptyDescription_returnsTrue() { + SemanticPicture picture = new SemanticPicture(BBOX, 1, "A bar chart"); + assertTrue(picture.hasDescription()); + } + + // --- sanitizeDescription: no description --- + + @Test + void sanitizeDescription_noDescription_returnsEmpty() { + SemanticPicture picture = new SemanticPicture(BBOX, 1); + assertEquals("", picture.sanitizeDescription()); + } + + @Test + void sanitizeDescription_emptyDescription_returnsEmpty() { + SemanticPicture picture = new SemanticPicture(BBOX, 1, ""); + assertEquals("", picture.sanitizeDescription()); + } + + // --- sanitizeDescription: clean input --- + + @Test + void sanitizeDescription_cleanText_returnsUnchanged() { + SemanticPicture picture = new SemanticPicture(BBOX, 1, "A bar chart showing sales data"); + assertEquals("A bar chart showing sales data", picture.sanitizeDescription()); + } + + @Test + void sanitizeDescription_textWithNumbers_returnsUnchanged() { + SemanticPicture picture = new SemanticPicture(BBOX, 1, "Figure 3: Q1 2025 results 42%"); + assertEquals("Figure 3: Q1 2025 results 42%", picture.sanitizeDescription()); + } + + // --- sanitizeDescription: HTML attribute delimiters --- + + @Test + void sanitizeDescription_doubleQuotes_removed() { + SemanticPicture picture = new SemanticPicture(BBOX, 1, "hell \"world\" my friend"); + assertEquals("hell world my friend", picture.sanitizeDescription()); + } + + @Test + void sanitizeDescription_htmlTags_removed() { + SemanticPicture picture = new SemanticPicture(BBOX, 1, "hell \"world\" my friend! "); + assertEquals("hell world my friend! this is god@%", picture.sanitizeDescription()); + } + + @Test + void sanitizeDescription_ampersand_removedAndWhitespaceCollapsed() { + // & removed → "Sales Marketing" → whitespace collapsed → "Sales Marketing" + SemanticPicture picture = new SemanticPicture(BBOX, 1, "Sales & Marketing"); + String result = picture.sanitizeDescription(); + assertFalse(result.contains("&")); + assertFalse(result.contains(" ")); // no double space after collapse + assertEquals("Sales Marketing", result); + } + + // --- sanitizeDescription: Markdown alt delimiters --- + + @Test + void sanitizeDescription_squareBrackets_removed() { + SemanticPicture picture = new SemanticPicture(BBOX, 1, "See [figure 1] for details"); + assertEquals("See figure 1 for details", picture.sanitizeDescription()); + } + + // --- sanitizeDescription: newlines --- + + @Test + void sanitizeDescription_newline_replacedWithSpace() { + SemanticPicture picture = new SemanticPicture(BBOX, 1, "Line one\nLine two"); + assertEquals("Line one Line two", picture.sanitizeDescription()); + } + + @Test + void sanitizeDescription_carriageReturn_replacedWithSpace() { + SemanticPicture picture = new SemanticPicture(BBOX, 1, "Line one\rLine two"); + assertEquals("Line one Line two", picture.sanitizeDescription()); + } + + @Test + void sanitizeDescription_crLf_replacedWithSingleSpace() { + SemanticPicture picture = new SemanticPicture(BBOX, 1, "Line one\r\nLine two"); + assertEquals("Line one Line two", picture.sanitizeDescription()); + } + + @Test + void sanitizeDescription_multipleNewlines_collapsedToSingleSpace() { + SemanticPicture picture = new SemanticPicture(BBOX, 1, "Line one\n\nLine two"); + assertEquals("Line one Line two", picture.sanitizeDescription()); + } + + // --- sanitizeDescription: null character --- + + @Test + void sanitizeDescription_nullChar_removed() { + SemanticPicture picture = new SemanticPicture(BBOX, 1, "hello\u0000world"); + assertEquals("helloworld", picture.sanitizeDescription()); + } + + // --- sanitizeDescription: whitespace collapsing & trim --- + + @Test + void sanitizeDescription_leadingTrailingWhitespace_trimmed() { + SemanticPicture picture = new SemanticPicture(BBOX, 1, " hello world "); + assertEquals("hello world", picture.sanitizeDescription()); + } + + @Test + void sanitizeDescription_consecutiveSpaces_collapsed() { + SemanticPicture picture = new SemanticPicture(BBOX, 1, "hello world"); + assertEquals("hello world", picture.sanitizeDescription()); + } + + // --- sanitizeDescription: combined real-world cases --- + + @Test + void sanitizeDescription_aiGeneratedWithSpecialChars() { + // Typical AI model output with mixed special characters + SemanticPicture picture = new SemanticPicture(BBOX, 1, + "A bar chart titled \"Q4 Results\" showing & trends.\nValues range from $10M to $50M."); + String result = picture.sanitizeDescription(); + assertFalse(result.contains("\"")); + assertFalse(result.contains("<")); + assertFalse(result.contains(">")); + assertFalse(result.contains("&")); + assertFalse(result.contains("\n")); + assertFalse(result.contains(" ")); + assertEquals("A bar chart titled Q4 Results showing revenue profit trends. Values range from $10M to $50M.", result); + } + + @Test + void sanitizeDescription_onlySpecialChars_returnsEmpty() { + SemanticPicture picture = new SemanticPicture(BBOX, 1, "\"<>&[]"); + assertEquals("", picture.sanitizeDescription()); + } + + @Test + void sanitizeDescription_onlyWhitespace_returnsEmpty() { + SemanticPicture picture = new SemanticPicture(BBOX, 1, " \n\r\t "); + // \t is not removed but trim handles edges; collapsed whitespace → trimmed to empty or near-empty + assertTrue(picture.sanitizeDescription().isBlank()); + } + + // --- sanitizeDescription: idempotency --- + + @Test + void sanitizeDescription_idempotent() { + SemanticPicture picture = new SemanticPicture(BBOX, 1, + "hell \"world\" & [link]"); + String once = picture.sanitizeDescription(); + SemanticPicture picture2 = new SemanticPicture(BBOX, 1, once); + assertEquals(once, picture2.sanitizeDescription()); + } + + // --- sanitizeDescription: safe for Markdown alt --- + + @Test + void sanitizeDescription_safeForMarkdownAlt() { + SemanticPicture picture = new SemanticPicture(BBOX, 1, + "Chart [showing] data \"here\" bold & more"); + String result = picture.sanitizeDescription(); + // Must not contain Markdown alt-breaking chars + assertFalse(result.contains("[")); + assertFalse(result.contains("]")); + // Must be embeddable in ![...](path) without breaking + String markdown = "![" + result + "](image.png)"; + assertTrue(markdown.startsWith("![")); + assertTrue(markdown.endsWith("](image.png)")); + } + + // --- sanitizeDescription: safe for HTML attribute --- + + @Test + void sanitizeDescription_safeForHtmlAttribute() { + SemanticPicture picture = new SemanticPicture(BBOX, 1, + "Title: \"Hello\" & Co."); + String result = picture.sanitizeDescription(); + assertFalse(result.contains("\"")); + assertFalse(result.contains("<")); + assertFalse(result.contains(">")); + assertFalse(result.contains("&")); + // Safe to embed in alt="..." + String html = "\"""; + assertTrue(html.contains("alt=\"")); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/html/HtmlGeneratorTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/html/HtmlGeneratorTest.java new file mode 100644 index 0000000..721f924 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/html/HtmlGeneratorTest.java @@ -0,0 +1,151 @@ +package org.opendataloader.pdf.html; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.awt.Color; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Stream; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; +import org.opendataloader.pdf.entities.SemanticFormula; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.content.TextLine; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.NodeUtils; + +class HtmlGeneratorTest { + /** + * Creates a TextChunk with the given style properties. + * Assumptions about internal representation: + * - setFontColor(double[]) expects RGB in range [0.0, 1.0]. + * - setItalicAngle(0.0) → isItalic() == false, non‑zero → true. + * - setFontWeight(double) is stored and getRoundedFontWeight() rounds it. + */ + private TextChunk createChunk(String text, boolean strikethrough, boolean underlined) { + BoundingBox dummyBox = new BoundingBox(0, 0, 10, 20, 30); + TextChunk chunk = new TextChunk(dummyBox, text, 12, 100.0); + + if (strikethrough) { + chunk.setIsStrikethroughText(); // sets the flag to true + } + + if (underlined) { + chunk.setIsUnderlinedText(); // sets the flag to true + } + return chunk; + } + + /** + * Builds the expected style attribute value for a given combination. + * The order matches getTextStyle(): strikethrough → italic → color → weight. + */ + private String expectedStyle(boolean strikethrough, boolean underlined) { + StringBuilder style = new StringBuilder(); + if (strikethrough && underlined) { + style.append("text-decoration: line-through underline; "); + } else if (strikethrough) { + style.append("text-decoration: line-through; "); + } else if (underlined) { + style.append("text-decoration: underline; "); + } + return style.toString().trim(); + } + + static Stream styleCombinations() { + List args = new ArrayList<>(); + boolean[] bools = { false, true }; + for (boolean s : bools) { + for (boolean i : bools) { + args.add(Arguments.of(s, i)); + } + } + return args.stream(); + } + + @ParameterizedTest(name = "strikethrough={0}, underlined={1}") + @MethodSource("styleCombinations") + void testAllStyleCombinations(boolean strikethrough, boolean underlined) { + TextChunk chunk = createChunk("A", strikethrough, underlined); + TextLine line = new TextLine(chunk); + StringBuilder sb = new StringBuilder(); + + HtmlGenerator.getTextFromLineForHTML(line, sb); + + String expected; + if (strikethrough || underlined) { + String styleAttr = expectedStyle(strikethrough, underlined); + expected = "A"; + } else { + expected = "A"; + } + assertEquals(expected, sb.toString()); + } + + @Test + void testEmptyLine() { + TextLine line = new TextLine(); + StringBuilder sb = new StringBuilder(); + HtmlGenerator.getTextFromLineForHTML(line, sb); + assertEquals("", sb.toString()); + } + + @Test + void testPdfTextIsEscapedForHtmlBodyContext() { + TextChunk chunk = createChunk("&", false, false); + TextLine line = new TextLine(chunk); + StringBuilder sb = new StringBuilder(); + + HtmlGenerator.getTextFromLineForHTML(line, sb); + + assertEquals("<script>alert(1)</script>&", sb.toString()); + } + + @Test + void testStyledPdfTextIsEscapedInsideSpan() { + TextChunk chunk = createChunk("", false, true); + TextLine line = new TextLine(chunk); + StringBuilder sb = new StringBuilder(); + + HtmlGenerator.getTextFromLineForHTML(line, sb); + + assertEquals( + "<img src=x onerror=alert(1)>", + sb.toString()); + } + + @Test + void testHtmlTextEscapingHandlesTitleCharactersAndNull() { + assertEquals("report <draft> & notes", HtmlGenerator.escapeHtmlText("report & notes")); + assertEquals("", HtmlGenerator.escapeHtmlText(null)); + } + + @Test + void testAmpersandIsEscapedExactlyOnce() { + TextChunk chunk = new TextChunk(new BoundingBox(0, 0, 10, 20, 30), + "< & &", 12, 100.0); + chunk.setFontWeight(400.0); + TextLine line = new TextLine(chunk); + StringBuilder sb = new StringBuilder(); + + HtmlGenerator.getTextFromLineForHTML(line, sb); + + assertEquals("&lt; & &amp;", sb.toString()); + } + + @Test + void testFormulaLatexIsEscaped() { + String formulaLatex = "x < y & z"; + String result = HtmlGenerator.escapeHtmlText(formulaLatex); + assertEquals("x < y & z", result); + } + + @Test + void testHtmlAttributeEscapingHandlesQuotesAndNewlines() { + assertEquals("quote" and null byte", + HtmlGenerator.escapeHtmlAttribute("quote\" and\u0000\nnull byte")); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/DiskPageImageCacheTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/DiskPageImageCacheTest.java new file mode 100644 index 0000000..c2e17ab --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/DiskPageImageCacheTest.java @@ -0,0 +1,103 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.concurrent.atomic.AtomicInteger; + +import static org.junit.jupiter.api.Assertions.*; + +class DiskPageImageCacheTest { + + private static BufferedImage createTestImage() { + return new BufferedImage(10, 10, BufferedImage.TYPE_INT_RGB); + } + + @Test + void getOrFetch_writesToDisk(@TempDir Path tempDir) throws IOException { + try (DiskPageImageCache cache = new DiskPageImageCache(tempDir)) { + AtomicInteger fetchCount = new AtomicInteger(0); + + BufferedImage img = cache.getOrFetch(0, idx -> { + fetchCount.incrementAndGet(); + return createTestImage(); + }); + + assertNotNull(img); + assertEquals(1, fetchCount.get()); + assertTrue(Files.exists(tempDir.resolve("page-0.png")), "PNG file should exist on disk"); + } + } + + @Test + void getOrFetch_secondCallReadsFromDisk(@TempDir Path tempDir) throws IOException { + try (DiskPageImageCache cache = new DiskPageImageCache(tempDir)) { + AtomicInteger fetchCount = new AtomicInteger(0); + + cache.getOrFetch(0, idx -> { + fetchCount.incrementAndGet(); + return createTestImage(); + }); + assertEquals(1, fetchCount.get()); + + // Second call should read from disk, not call fetcher + BufferedImage img2 = cache.getOrFetch(0, idx -> { + fetchCount.incrementAndGet(); + return createTestImage(); + }); + + assertNotNull(img2); + assertEquals(1, fetchCount.get(), "Fetcher should not be called on second access"); + } + } + + @Test + void evict_isNoOp(@TempDir Path tempDir) throws IOException { + try (DiskPageImageCache cache = new DiskPageImageCache(tempDir)) { + cache.getOrFetch(0, idx -> createTestImage()); + cache.evict(0); + + assertTrue(Files.exists(tempDir.resolve("page-0.png")), + "File should still exist after evict (no-op)"); + } + } + + @Test + void close_deletesTempFiles(@TempDir Path tempDir) throws IOException { + // Create a subdirectory inside tempDir to simulate real usage + Path cacheDir = tempDir.resolve("odl-cache"); + Files.createDirectory(cacheDir); + + DiskPageImageCache cache = new DiskPageImageCache(cacheDir); + cache.getOrFetch(0, idx -> createTestImage()); + cache.getOrFetch(1, idx -> createTestImage()); + + assertTrue(Files.exists(cacheDir.resolve("page-0.png"))); + assertTrue(Files.exists(cacheDir.resolve("page-1.png"))); + + cache.close(); + + assertFalse(Files.exists(cacheDir.resolve("page-0.png")), "Files should be deleted"); + assertFalse(Files.exists(cacheDir.resolve("page-1.png")), "Files should be deleted"); + assertFalse(Files.exists(cacheDir), "Directory should be deleted"); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/DoclingFastServerClientTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/DoclingFastServerClientTest.java new file mode 100644 index 0000000..43d9b50 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/DoclingFastServerClientTest.java @@ -0,0 +1,241 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import com.fasterxml.jackson.databind.ObjectMapper; +import okhttp3.OkHttpClient; +import mockwebserver3.MockResponse; +import mockwebserver3.MockWebServer; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.opendataloader.pdf.hybrid.HybridClient.HybridRequest; +import org.opendataloader.pdf.hybrid.HybridClient.HybridResponse; + +import java.io.IOException; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +/** + * Unit tests for DoclingFastServerClient partial_success handling. + */ +class DoclingFastServerClientTest { + + private MockWebServer server; + private DoclingFastServerClient client; + + @BeforeEach + void setUp() throws IOException { + server = new MockWebServer(); + server.start(); + String baseUrl = server.url("").toString(); + // Remove trailing slash + if (baseUrl.endsWith("/")) { + baseUrl = baseUrl.substring(0, baseUrl.length() - 1); + } + client = new DoclingFastServerClient(baseUrl, new OkHttpClient(), new ObjectMapper()); + } + + @AfterEach + void tearDown() throws IOException { + client.shutdown(); + server.close(); + } + + @Test + void testSuccessResponseHasNoFailedPages() throws IOException { + String responseJson = "{" + + "\"status\": \"success\"," + + "\"document\": {\"json_content\": {\"pages\": {\"1\": {}, \"2\": {}, \"3\": {}}}}," + + "\"processing_time\": 1.5," + + "\"errors\": []," + + "\"failed_pages\": []" + + "}"; + + server.enqueue(new MockResponse.Builder() + .body(responseJson) + .addHeader("Content-Type", "application/json") + .build()); + + HybridRequest request = HybridRequest.allPages(new byte[]{0x25, 0x50, 0x44, 0x46}); + HybridResponse response = client.convert(request); + + assertFalse(response.hasFailedPages()); + assertEquals(Collections.emptyList(), response.getFailedPages()); + } + + @Test + void testPartialSuccessResponseWithFailedPages() throws IOException { + String responseJson = "{" + + "\"status\": \"partial_success\"," + + "\"document\": {\"json_content\": {\"pages\": {\"1\": {}, \"2\": {}, \"4\": {}, \"5\": {}}}}," + + "\"processing_time\": 2.0," + + "\"errors\": [\"Unknown page: pipeline terminated early\"]," + + "\"failed_pages\": [3]" + + "}"; + + server.enqueue(new MockResponse.Builder() + .body(responseJson) + .addHeader("Content-Type", "application/json") + .build()); + + HybridRequest request = HybridRequest.allPages(new byte[]{0x25, 0x50, 0x44, 0x46}); + HybridResponse response = client.convert(request); + + assertTrue(response.hasFailedPages()); + assertEquals(Collections.singletonList(3), response.getFailedPages()); + } + + @Test + void testPartialSuccessMultipleFailedPages() throws IOException { + String responseJson = "{" + + "\"status\": \"partial_success\"," + + "\"document\": {\"json_content\": {\"pages\": {\"1\": {}, \"3\": {}, \"5\": {}}}}," + + "\"processing_time\": 3.0," + + "\"errors\": [\"Unknown page: pipeline terminated early\", \"Unknown page: pipeline terminated early\"]," + + "\"failed_pages\": [2, 4]" + + "}"; + + server.enqueue(new MockResponse.Builder() + .body(responseJson) + .addHeader("Content-Type", "application/json") + .build()); + + HybridRequest request = HybridRequest.allPages(new byte[]{0x25, 0x50, 0x44, 0x46}); + HybridResponse response = client.convert(request); + + assertTrue(response.hasFailedPages()); + assertEquals(Arrays.asList(2, 4), response.getFailedPages()); + } + + @Test + void testFailureResponseThrowsIOException() { + String responseJson = "{" + + "\"status\": \"failure\"," + + "\"errors\": [\"PDF conversion failed: ValueError: corrupted file\"]" + + "}"; + + server.enqueue(new MockResponse.Builder() + .body(responseJson) + .addHeader("Content-Type", "application/json") + .build()); + + HybridRequest request = HybridRequest.allPages(new byte[]{0x25, 0x50, 0x44, 0x46}); + + IOException exception = assertThrows(IOException.class, () -> client.convert(request)); + assertTrue(exception.getMessage().contains("processing failed")); + } + + @Test + void testLegacyResponseWithoutFailedPagesField() throws IOException { + // Older server versions may not include failed_pages field + String responseJson = "{" + + "\"status\": \"success\"," + + "\"document\": {\"json_content\": {\"pages\": {\"1\": {}, \"2\": {}}}}," + + "\"processing_time\": 1.0" + + "}"; + + server.enqueue(new MockResponse.Builder() + .body(responseJson) + .addHeader("Content-Type", "application/json") + .build()); + + HybridRequest request = HybridRequest.allPages(new byte[]{0x25, 0x50, 0x44, 0x46}); + HybridResponse response = client.convert(request); + + assertFalse(response.hasFailedPages()); + assertEquals(Collections.emptyList(), response.getFailedPages()); + } + + @Test + void testMalformedFailedPagesValues() throws IOException { + // Server returns mixed valid/invalid values in failed_pages array + String responseJson = "{" + + "\"status\": \"partial_success\"," + + "\"document\": {\"json_content\": {\"pages\": {\"1\": {}, \"2\": {}}}}," + + "\"processing_time\": 1.0," + + "\"errors\": [\"error\"]," + + "\"failed_pages\": [3, \"bad\", null, 5]" + + "}"; + + server.enqueue(new MockResponse.Builder() + .body(responseJson) + .addHeader("Content-Type", "application/json") + .build()); + + HybridRequest request = HybridRequest.allPages(new byte[]{0x25, 0x50, 0x44, 0x46}); + HybridResponse response = client.convert(request); + + assertTrue(response.hasFailedPages()); + // Only valid integer values should be extracted + assertEquals(Arrays.asList(3, 5), response.getFailedPages()); + } + + @Test + void testCheckAvailabilitySucceeds() throws IOException { + server.enqueue(new MockResponse.Builder().code(200).body("ok").build()); + + // Should not throw + client.checkAvailability(); + } + + @Test + void testCheckAvailabilityFailsWhenServerUnavailable() throws IOException { + // Shut down the server to simulate unavailability + server.close(); + + IOException exception = assertThrows(IOException.class, () -> client.checkAvailability()); + assertTrue(exception.getMessage().contains("Hybrid server is not available")); + assertTrue(exception.getMessage().contains("pip install"), + "Error message should include install instructions for self-service resolution"); + assertTrue(exception.getMessage().contains("opendataloader-pdf-hybrid --port 5002"), + "Error message should include server start command"); + } + + @Test + void testCheckAvailabilityFailsOnUnhealthyServer() { + server.enqueue(new MockResponse.Builder().code(503).build()); + + IOException exception = assertThrows(IOException.class, () -> client.checkAvailability()); + assertTrue(exception.getMessage().contains("returned HTTP 503")); + assertTrue(exception.getMessage().contains("starting up or unhealthy")); + } + + @Test + void testPartialSuccessAllPagesFailed() throws IOException { + String responseJson = "{" + + "\"status\": \"partial_success\"," + + "\"document\": {\"json_content\": {\"pages\": {}}}," + + "\"processing_time\": 2.0," + + "\"errors\": [\"error1\", \"error2\", \"error3\"]," + + "\"failed_pages\": [1, 2, 3]" + + "}"; + + server.enqueue(new MockResponse.Builder() + .body(responseJson) + .addHeader("Content-Type", "application/json") + .build()); + + HybridRequest request = HybridRequest.allPages(new byte[]{0x25, 0x50, 0x44, 0x46}); + HybridResponse response = client.convert(request); + + assertTrue(response.hasFailedPages()); + assertEquals(Arrays.asList(1, 2, 3), response.getFailedPages()); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/DoclingSchemaTransformerTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/DoclingSchemaTransformerTest.java new file mode 100644 index 0000000..38fb6a7 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/DoclingSchemaTransformerTest.java @@ -0,0 +1,768 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.opendataloader.pdf.entities.SemanticFormula; +import org.opendataloader.pdf.entities.SemanticPicture; +import org.opendataloader.pdf.hybrid.HybridClient.HybridResponse; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticHeading; +import org.verapdf.wcag.algorithms.entities.SemanticParagraph; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Unit tests for DoclingSchemaTransformer. + */ +public class DoclingSchemaTransformerTest { + + private DoclingSchemaTransformer transformer; + private ObjectMapper objectMapper; + + @BeforeEach + void setUp() { + transformer = new DoclingSchemaTransformer(); + objectMapper = new ObjectMapper(); + StaticLayoutContainers.setCurrentContentId(1L); + } + + @Test + void testGetBackendType() { + Assertions.assertEquals("docling", transformer.getBackendType()); + } + + @Test + void testTransformNullJson() { + HybridResponse response = new HybridResponse("", null, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertTrue(result.isEmpty()); + } + + @Test + void testTransformEmptyJson() { + ObjectNode json = objectMapper.createObjectNode(); + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertTrue(result.get(0).isEmpty()); + } + + @Test + void testTransformSimpleParagraph() { + ObjectNode json = createDoclingDocument(); + ArrayNode texts = json.putArray("texts"); + + ObjectNode textNode = texts.addObject(); + textNode.put("label", "text"); + textNode.put("text", "Hello World"); + addProvenance(textNode, 1, 100, 700, 200, 750); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(1, result.get(0).size()); + Assertions.assertTrue(result.get(0).get(0) instanceof SemanticParagraph); + + SemanticParagraph paragraph = (SemanticParagraph) result.get(0).get(0); + Assertions.assertEquals("Hello World", paragraph.getValue()); + } + + @Test + void testTransformSectionHeader() { + ObjectNode json = createDoclingDocument(); + ArrayNode texts = json.putArray("texts"); + + ObjectNode headerNode = texts.addObject(); + headerNode.put("label", "section_header"); + headerNode.put("text", "Introduction"); + addProvenance(headerNode, 1, 100, 750, 300, 780); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(1, result.get(0).size()); + Assertions.assertTrue(result.get(0).get(0) instanceof SemanticHeading); + + SemanticHeading heading = (SemanticHeading) result.get(0).get(0); + Assertions.assertEquals("Introduction", heading.getValue()); + } + + @Test + void testFilterPageHeaderFooter() { + ObjectNode json = createDoclingDocument(); + ArrayNode texts = json.putArray("texts"); + + // Add page header - should be filtered + ObjectNode headerNode = texts.addObject(); + headerNode.put("label", "page_header"); + headerNode.put("text", "Chapter 1"); + addProvenance(headerNode, 1, 100, 800, 200, 820); + + // Add page footer - should be filtered + ObjectNode footerNode = texts.addObject(); + footerNode.put("label", "page_footer"); + footerNode.put("text", "Page 1"); + addProvenance(footerNode, 1, 100, 20, 150, 40); + + // Add regular text - should be kept + ObjectNode textNode = texts.addObject(); + textNode.put("label", "text"); + textNode.put("text", "Content"); + addProvenance(textNode, 1, 100, 400, 200, 450); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(1, result.get(0).size()); + Assertions.assertTrue(result.get(0).get(0) instanceof SemanticParagraph); + } + + @Test + void testTransformCaption() { + ObjectNode json = createDoclingDocument(); + ArrayNode texts = json.putArray("texts"); + + ObjectNode captionNode = texts.addObject(); + captionNode.put("label", "caption"); + captionNode.put("text", "Figure 1: Sample image"); + addProvenance(captionNode, 1, 100, 300, 300, 320); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(1, result.get(0).size()); + Assertions.assertTrue(result.get(0).get(0) instanceof SemanticParagraph); + } + + @Test + void testTransformFootnote() { + ObjectNode json = createDoclingDocument(); + ArrayNode texts = json.putArray("texts"); + + ObjectNode footnoteNode = texts.addObject(); + footnoteNode.put("label", "footnote"); + footnoteNode.put("text", "1. Reference source"); + addProvenance(footnoteNode, 1, 100, 50, 300, 70); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(1, result.get(0).size()); + Assertions.assertTrue(result.get(0).get(0) instanceof SemanticParagraph); + } + + @Test + void testTransformSimpleTable() { + ObjectNode json = createDoclingDocument(); + ArrayNode tables = json.putArray("tables"); + + ObjectNode tableNode = tables.addObject(); + tableNode.put("label", "table"); + addProvenance(tableNode, 1, 50, 200, 350, 400); + + // Add data with grid + ObjectNode data = tableNode.putObject("data"); + ArrayNode grid = data.putArray("grid"); + + // 2x2 table + ArrayNode row1 = grid.addArray(); + row1.addObject().put("text", "A1"); + row1.addObject().put("text", "B1"); + + ArrayNode row2 = grid.addArray(); + row2.addObject().put("text", "A2"); + row2.addObject().put("text", "B2"); + + // Add table cells + ArrayNode tableCells = data.putArray("table_cells"); + addTableCell(tableCells, 0, 0, 1, 1, "A1"); + addTableCell(tableCells, 0, 1, 1, 1, "B1"); + addTableCell(tableCells, 1, 0, 1, 1, "A2"); + addTableCell(tableCells, 1, 1, 1, 1, "B2"); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(1, result.get(0).size()); + Assertions.assertTrue(result.get(0).get(0) instanceof TableBorder); + + TableBorder table = (TableBorder) result.get(0).get(0); + Assertions.assertEquals(2, table.getNumberOfRows()); + Assertions.assertEquals(2, table.getNumberOfColumns()); + } + + @Test + void testTransformTableWithSpans() { + ObjectNode json = createDoclingDocument(); + ArrayNode tables = json.putArray("tables"); + + ObjectNode tableNode = tables.addObject(); + tableNode.put("label", "table"); + addProvenance(tableNode, 1, 50, 200, 350, 400); + + ObjectNode data = tableNode.putObject("data"); + ArrayNode grid = data.putArray("grid"); + + // 2x3 table + ArrayNode row1 = grid.addArray(); + row1.addObject(); + row1.addObject(); + row1.addObject(); + + ArrayNode row2 = grid.addArray(); + row2.addObject(); + row2.addObject(); + row2.addObject(); + + ArrayNode tableCells = data.putArray("table_cells"); + // First cell spans 2 columns + addTableCell(tableCells, 0, 0, 1, 2, "Header"); + addTableCell(tableCells, 0, 2, 1, 1, "C1"); + addTableCell(tableCells, 1, 0, 1, 1, "A2"); + addTableCell(tableCells, 1, 1, 1, 1, "B2"); + addTableCell(tableCells, 1, 2, 1, 1, "C2"); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(1, result.get(0).size()); + Assertions.assertTrue(result.get(0).get(0) instanceof TableBorder); + + TableBorder table = (TableBorder) result.get(0).get(0); + Assertions.assertEquals(2, table.getNumberOfRows()); + Assertions.assertEquals(3, table.getNumberOfColumns()); + + // Check first cell has colspan 2 + Assertions.assertEquals(2, table.getRow(0).getCell(0).getColSpan()); + } + + @Test + void testTransformMultiplePages() { + ObjectNode json = createDoclingDocument(); + ArrayNode texts = json.putArray("texts"); + + // Text on page 1 + ObjectNode text1 = texts.addObject(); + text1.put("label", "text"); + text1.put("text", "Page 1 content"); + addProvenance(text1, 1, 100, 700, 200, 750); + + // Text on page 2 + ObjectNode text2 = texts.addObject(); + text2.put("label", "text"); + text2.put("text", "Page 2 content"); + addProvenance(text2, 2, 100, 700, 200, 750); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + pageHeights.put(2, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(2, result.size()); + Assertions.assertEquals(1, result.get(0).size()); + Assertions.assertEquals(1, result.get(1).size()); + + Assertions.assertTrue(result.get(0).get(0) instanceof SemanticParagraph); + Assertions.assertTrue(result.get(1).get(0) instanceof SemanticParagraph); + + SemanticParagraph p1 = (SemanticParagraph) result.get(0).get(0); + SemanticParagraph p2 = (SemanticParagraph) result.get(1).get(0); + + Assertions.assertEquals("Page 1 content", p1.getValue()); + Assertions.assertEquals("Page 2 content", p2.getValue()); + } + + @Test + void testCoordinateTransformBottomLeft() { + ObjectNode json = createDoclingDocument(); + ArrayNode texts = json.putArray("texts"); + + ObjectNode textNode = texts.addObject(); + textNode.put("label", "text"); + textNode.put("text", "Test"); + + // Add provenance with BOTTOMLEFT coordinates + ArrayNode prov = textNode.putArray("prov"); + ObjectNode provItem = prov.addObject(); + provItem.put("page_no", 1); + ObjectNode bbox = provItem.putObject("bbox"); + bbox.put("l", 100.0); + bbox.put("t", 750.0); // top + bbox.put("r", 200.0); + bbox.put("b", 700.0); // bottom + bbox.put("coord_origin", "BOTTOMLEFT"); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(1, result.get(0).size()); + + IObject obj = result.get(0).get(0); + Assertions.assertEquals(100.0, obj.getLeftX(), 0.01); + Assertions.assertEquals(700.0, obj.getBottomY(), 0.01); + Assertions.assertEquals(200.0, obj.getRightX(), 0.01); + Assertions.assertEquals(750.0, obj.getTopY(), 0.01); + } + + @Test + void testCoordinateTransformTopLeft() { + ObjectNode json = createDoclingDocument(); + ArrayNode texts = json.putArray("texts"); + + ObjectNode textNode = texts.addObject(); + textNode.put("label", "text"); + textNode.put("text", "Test"); + + // Add provenance with TOPLEFT coordinates + ArrayNode prov = textNode.putArray("prov"); + ObjectNode provItem = prov.addObject(); + provItem.put("page_no", 1); + ObjectNode bbox = provItem.putObject("bbox"); + bbox.put("l", 100.0); + bbox.put("t", 92.0); // distance from top (92 px from top = 750 from bottom for page height 842) + bbox.put("r", 200.0); + bbox.put("b", 142.0); // distance from top (142 px from top = 700 from bottom) + bbox.put("coord_origin", "TOPLEFT"); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(1, result.get(0).size()); + + IObject obj = result.get(0).get(0); + Assertions.assertEquals(100.0, obj.getLeftX(), 0.01); + Assertions.assertEquals(700.0, obj.getBottomY(), 0.01); + Assertions.assertEquals(200.0, obj.getRightX(), 0.01); + Assertions.assertEquals(750.0, obj.getTopY(), 0.01); + } + + @Test + void testReadingOrderSort() { + ObjectNode json = createDoclingDocument(); + ArrayNode texts = json.putArray("texts"); + + // Add texts in reverse order + ObjectNode text3 = texts.addObject(); + text3.put("label", "text"); + text3.put("text", "Third"); + addProvenance(text3, 1, 100, 100, 200, 150); + + ObjectNode text1 = texts.addObject(); + text1.put("label", "text"); + text1.put("text", "First"); + addProvenance(text1, 1, 100, 700, 200, 750); + + ObjectNode text2 = texts.addObject(); + text2.put("label", "text"); + text2.put("text", "Second"); + addProvenance(text2, 1, 100, 400, 200, 450); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(3, result.get(0).size()); + + // Should be sorted top to bottom + SemanticParagraph p1 = (SemanticParagraph) result.get(0).get(0); + SemanticParagraph p2 = (SemanticParagraph) result.get(0).get(1); + SemanticParagraph p3 = (SemanticParagraph) result.get(0).get(2); + + Assertions.assertEquals("First", p1.getValue()); + Assertions.assertEquals("Second", p2.getValue()); + Assertions.assertEquals("Third", p3.getValue()); + } + + @Test + void testMixedContent() { + ObjectNode json = createDoclingDocument(); + + // Add texts + ArrayNode texts = json.putArray("texts"); + ObjectNode heading = texts.addObject(); + heading.put("label", "section_header"); + heading.put("text", "Title"); + addProvenance(heading, 1, 100, 750, 300, 780); + + ObjectNode para = texts.addObject(); + para.put("label", "text"); + para.put("text", "Body text"); + addProvenance(para, 1, 100, 600, 300, 650); + + // Add table + ArrayNode tables = json.putArray("tables"); + ObjectNode tableNode = tables.addObject(); + tableNode.put("label", "table"); + addProvenance(tableNode, 1, 100, 300, 300, 500); + + ObjectNode data = tableNode.putObject("data"); + ArrayNode grid = data.putArray("grid"); + ArrayNode row1 = grid.addArray(); + row1.addObject().put("text", "Cell"); + + ArrayNode tableCells = data.putArray("table_cells"); + addTableCell(tableCells, 0, 0, 1, 1, "Cell"); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(3, result.get(0).size()); + + // Sorted by reading order: heading (top), paragraph, table (bottom) + Assertions.assertTrue(result.get(0).get(0) instanceof SemanticHeading); + Assertions.assertTrue(result.get(0).get(1) instanceof SemanticParagraph); + Assertions.assertTrue(result.get(0).get(2) instanceof TableBorder); + } + + @Test + void testTransformPage() { + ObjectNode pageContent = objectMapper.createObjectNode(); + ArrayNode texts = pageContent.putArray("texts"); + + ObjectNode textNode = texts.addObject(); + textNode.put("label", "text"); + textNode.put("text", "Single page content"); + addProvenance(textNode, 1, 100, 700, 200, 750); + + List result = transformer.transformPage(1, pageContent, 842.0); + + Assertions.assertEquals(1, result.size()); + Assertions.assertTrue(result.get(0) instanceof SemanticParagraph); + } + + @Test + void testTextMissingProv() { + ObjectNode json = createDoclingDocument(); + ArrayNode texts = json.putArray("texts"); + + // Text without provenance - should be skipped + ObjectNode textNode = texts.addObject(); + textNode.put("label", "text"); + textNode.put("text", "No position"); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertTrue(result.get(0).isEmpty()); + } + + @Test + void testTableMissingData() { + ObjectNode json = createDoclingDocument(); + ArrayNode tables = json.putArray("tables"); + + // Table without data - should be skipped + ObjectNode tableNode = tables.addObject(); + tableNode.put("label", "table"); + addProvenance(tableNode, 1, 100, 200, 300, 400); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertTrue(result.get(0).isEmpty()); + } + + @Test + void testTransformFormula() { + ObjectNode json = createDoclingDocument(); + ArrayNode texts = json.putArray("texts"); + + ObjectNode formulaNode = texts.addObject(); + formulaNode.put("label", "formula"); + formulaNode.put("text", "\\frac{f(x+h) - f(x)}{h}"); + addProvenance(formulaNode, 1, 226, 144, 377, 168); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(1, result.get(0).size()); + Assertions.assertTrue(result.get(0).get(0) instanceof SemanticFormula); + + SemanticFormula formula = (SemanticFormula) result.get(0).get(0); + Assertions.assertEquals("\\frac{f(x+h) - f(x)}{h}", formula.getLatex()); + } + + @Test + void testTransformFormulaWithComplexLatex() { + ObjectNode json = createDoclingDocument(); + ArrayNode texts = json.putArray("texts"); + + ObjectNode formulaNode = texts.addObject(); + formulaNode.put("label", "formula"); + formulaNode.put("text", "\\lim_{h \\to 0} \\frac{f(x+h) - f(x)}{h} = f'(x)"); + addProvenance(formulaNode, 1, 237, 84, 365, 114); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(1, result.get(0).size()); + Assertions.assertTrue(result.get(0).get(0) instanceof SemanticFormula); + + SemanticFormula formula = (SemanticFormula) result.get(0).get(0); + Assertions.assertEquals("\\lim_{h \\to 0} \\frac{f(x+h) - f(x)}{h} = f'(x)", formula.getLatex()); + } + + @Test + void testMixedContentWithFormula() { + ObjectNode json = createDoclingDocument(); + ArrayNode texts = json.putArray("texts"); + + // Add paragraph before formula + ObjectNode para = texts.addObject(); + para.put("label", "text"); + para.put("text", "The forward difference is defined as"); + addProvenance(para, 1, 90, 180, 468, 190); + + // Add formula + ObjectNode formulaNode = texts.addObject(); + formulaNode.put("label", "formula"); + formulaNode.put("text", "Q_f(h) = \\frac{f(x+h) - f(x)}{h}"); + addProvenance(formulaNode, 1, 226, 144, 377, 168); + + // Add paragraph after formula + ObjectNode paraAfter = texts.addObject(); + paraAfter.put("label", "text"); + paraAfter.put("text", "in which h is called the step size"); + addProvenance(paraAfter, 1, 90, 125, 291, 135); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(3, result.get(0).size()); + + // Sorted by reading order: paragraph (top), formula, paragraph (bottom) + Assertions.assertTrue(result.get(0).get(0) instanceof SemanticParagraph); + Assertions.assertTrue(result.get(0).get(1) instanceof SemanticFormula); + Assertions.assertTrue(result.get(0).get(2) instanceof SemanticParagraph); + + SemanticFormula formula = (SemanticFormula) result.get(0).get(1); + Assertions.assertEquals("Q_f(h) = \\frac{f(x+h) - f(x)}{h}", formula.getLatex()); + } + + @Test + void testTransformPictureWithDescription() { + ObjectNode json = createDoclingDocument(); + ArrayNode pictures = json.putArray("pictures"); + + ObjectNode pictureNode = pictures.addObject(); + addProvenance(pictureNode, 1, 100, 300, 400, 500); + + // Add annotations with description + ArrayNode annotations = pictureNode.putArray("annotations"); + ObjectNode descAnnotation = annotations.addObject(); + descAnnotation.put("kind", "description"); + descAnnotation.put("text", "A bar chart showing quarterly sales data from Q1 to Q4"); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(1, result.get(0).size()); + Assertions.assertTrue(result.get(0).get(0) instanceof SemanticPicture); + + SemanticPicture picture = (SemanticPicture) result.get(0).get(0); + Assertions.assertTrue(picture.hasDescription()); + Assertions.assertEquals("A bar chart showing quarterly sales data from Q1 to Q4", picture.getDescription()); + Assertions.assertEquals(1, picture.getPictureIndex()); + } + + @Test + void testTransformPictureWithoutDescription() { + ObjectNode json = createDoclingDocument(); + ArrayNode pictures = json.putArray("pictures"); + + ObjectNode pictureNode = pictures.addObject(); + addProvenance(pictureNode, 1, 100, 300, 400, 500); + // No annotations + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(1, result.get(0).size()); + Assertions.assertTrue(result.get(0).get(0) instanceof SemanticPicture); + + SemanticPicture picture = (SemanticPicture) result.get(0).get(0); + Assertions.assertFalse(picture.hasDescription()); + Assertions.assertEquals("", picture.getDescription()); + } + + @Test + void testTransformMultiplePicturesWithDescriptions() { + ObjectNode json = createDoclingDocument(); + ArrayNode pictures = json.putArray("pictures"); + + // First picture with description + ObjectNode picture1 = pictures.addObject(); + addProvenance(picture1, 1, 100, 600, 300, 700); + ArrayNode annotations1 = picture1.putArray("annotations"); + ObjectNode desc1 = annotations1.addObject(); + desc1.put("kind", "description"); + desc1.put("text", "A flow chart showing the process flow"); + + // Second picture without description + ObjectNode picture2 = pictures.addObject(); + addProvenance(picture2, 1, 100, 300, 300, 400); + + // Third picture with description + ObjectNode picture3 = pictures.addObject(); + addProvenance(picture3, 1, 100, 100, 300, 200); + ArrayNode annotations3 = picture3.putArray("annotations"); + ObjectNode desc3 = annotations3.addObject(); + desc3.put("kind", "description"); + desc3.put("text", "A pie chart showing market share distribution"); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(3, result.get(0).size()); + + // Pictures should be sorted by reading order (top to bottom) + SemanticPicture pic1 = (SemanticPicture) result.get(0).get(0); + SemanticPicture pic2 = (SemanticPicture) result.get(0).get(1); + SemanticPicture pic3 = (SemanticPicture) result.get(0).get(2); + + Assertions.assertTrue(pic1.hasDescription()); + Assertions.assertFalse(pic2.hasDescription()); + Assertions.assertTrue(pic3.hasDescription()); + } + + // Helper methods + + private ObjectNode createDoclingDocument() { + ObjectNode json = objectMapper.createObjectNode(); + json.put("schema_name", "DoclingDocument"); + json.put("version", "1.0.0"); + return json; + } + + private void addProvenance(ObjectNode node, int pageNo, double l, double b, double r, double t) { + ArrayNode prov = node.putArray("prov"); + ObjectNode provItem = prov.addObject(); + provItem.put("page_no", pageNo); + ObjectNode bbox = provItem.putObject("bbox"); + bbox.put("l", l); + bbox.put("t", t); + bbox.put("r", r); + bbox.put("b", b); + bbox.put("coord_origin", "BOTTOMLEFT"); + } + + private void addTableCell(ArrayNode tableCells, int row, int col, int rowSpan, int colSpan, String text) { + ObjectNode cell = tableCells.addObject(); + cell.put("start_row_offset_idx", row); + cell.put("end_row_offset_idx", row + rowSpan); + cell.put("start_col_offset_idx", col); + cell.put("end_col_offset_idx", col + colSpan); + cell.put("row_span", rowSpan); + cell.put("col_span", colSpan); + cell.put("text", text); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/ElementMetadataTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/ElementMetadataTest.java new file mode 100644 index 0000000..538abd5 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/ElementMetadataTest.java @@ -0,0 +1,144 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +/** + * Unit tests for ElementMetadata JSON serialization. + */ +public class ElementMetadataTest { + + private final ObjectMapper mapper = new ObjectMapper(); + + @Test + void defaultValuesProduceEmptyJson() throws Exception { + ElementMetadata meta = new ElementMetadata(); + String json = mapper.writeValueAsString(meta); + assertEquals("{}", json); + } + + @Test + void onlyNonDefaultFieldsAppearInJson() throws Exception { + ElementMetadata meta = new ElementMetadata() + .setAiScore(0.85) + .setSourceLabel(3) + .setHeadingInferenceMethod("bbox-height") + .setBboxHeightPx(24.5); + + String json = mapper.writeValueAsString(meta); + JsonNode node = mapper.readTree(json); + + assertEquals(0.85, node.get("aiScore").asDouble(), 0.001); + assertEquals(3, node.get("sourceLabel").asInt()); + assertEquals("bbox-height", node.get("headingInferenceMethod").asText()); + assertEquals(24.5, node.get("bboxHeightPx").asDouble(), 0.001); + + // Default fields must be absent + assertFalse(node.has("matchedWordCount")); + assertFalse(node.has("tsr")); + assertFalse(node.has("caption")); + assertFalse(node.has("regionlistResolution")); + assertFalse(node.has("wordMatchMethod")); + } + + @Test + void tsrMetadataSerializesCorrectly() throws Exception { + ElementMetadata.TsrMetadata tsr = new ElementMetadata.TsrMetadata() + .setNumCells(12) + .setHtml("
    A
    ") + .setRunTimeMs(150); + + ElementMetadata meta = new ElementMetadata() + .setSourceLabel(5) + .setTsr(tsr); + + String json = mapper.writeValueAsString(meta); + JsonNode node = mapper.readTree(json); + + assertTrue(node.has("tsr")); + assertEquals(12, node.get("tsr").get("numCells").asInt()); + assertEquals(150, node.get("tsr").get("runTimeMs").asLong()); + } + + @Test + void captionMetadataSerializesCorrectly() throws Exception { + ElementMetadata.CaptionMetadata caption = new ElementMetadata.CaptionMetadata() + .setText("Figure 1: Overview") + .setLanguage("en"); + + ElementMetadata meta = new ElementMetadata() + .setCaption(caption); + + String json = mapper.writeValueAsString(meta); + JsonNode node = mapper.readTree(json); + + assertTrue(node.has("caption")); + assertEquals("Figure 1: Overview", node.get("caption").get("text").asText()); + assertEquals("en", node.get("caption").get("language").asText()); + // runTimeMs is default (0), should be absent + assertFalse(node.get("caption").has("runTimeMs")); + } + + @Test + void regionlistResolutionSerializesCorrectly() throws Exception { + ElementMetadata.RegionlistResolution resolution = new ElementMetadata.RegionlistResolution() + .setStrategy("table-first") + .setTsrAttempted(true) + .setTsrResult("success"); + + ElementMetadata meta = new ElementMetadata() + .setRegionlistResolution(resolution); + + String json = mapper.writeValueAsString(meta); + JsonNode node = mapper.readTree(json); + + assertTrue(node.has("regionlistResolution")); + assertEquals("table-first", node.get("regionlistResolution").get("strategy").asText()); + assertTrue(node.get("regionlistResolution").get("tsrAttempted").asBoolean()); + assertEquals("success", node.get("regionlistResolution").get("tsrResult").asText()); + } + + @Test + void fluentSettersReturnSameInstance() { + ElementMetadata meta = new ElementMetadata(); + ElementMetadata returned = meta.setAiScore(0.5).setSourceLabel(2); + assertTrue(meta == returned); + } + + @Test + void roundTripDeserialization() throws Exception { + ElementMetadata original = new ElementMetadata() + .setAiScore(0.92) + .setSourceLabel(7) + .setWordMatchMethod("bbox-intersection") + .setMatchedWordCount(5); + + String json = mapper.writeValueAsString(original); + ElementMetadata deserialized = mapper.readValue(json, ElementMetadata.class); + + assertEquals(original.getAiScore(), deserialized.getAiScore(), 0.001); + assertEquals(original.getSourceLabel(), deserialized.getSourceLabel()); + assertEquals(original.getWordMatchMethod(), deserialized.getWordMatchMethod()); + assertEquals(original.getMatchedWordCount(), deserialized.getMatchedWordCount()); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/HancomAIClientRequestIdTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/HancomAIClientRequestIdTest.java new file mode 100644 index 0000000..c7c50be --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/HancomAIClientRequestIdTest.java @@ -0,0 +1,86 @@ +package org.opendataloader.pdf.hybrid; + +import com.fasterxml.jackson.databind.ObjectMapper; +import okhttp3.OkHttpClient; +import mockwebserver3.MockResponse; +import mockwebserver3.MockWebServer; +import mockwebserver3.RecordedRequest; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.io.ByteArrayOutputStream; +import java.security.MessageDigest; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +class HancomAIClientRequestIdTest { + + private MockWebServer server; + private HancomAIClient client; + + @BeforeEach + void setUp() throws Exception { + server = new MockWebServer(); + server.start(); + client = new HancomAIClient( + server.url("").toString().replaceAll("/$", ""), + new OkHttpClient(), + new ObjectMapper() + ); + } + + @AfterEach + void tearDown() throws Exception { + server.close(); + } + + @Test + void callModule_request_id_includes_sha_short() throws Exception { + byte[] pdfBytes = "PDF_CONTENT_FOR_TEST".getBytes(); + String shaShort = sha256Hex(pdfBytes).substring(0, 12); + + server.enqueue(new MockResponse.Builder() + .code(200) + .body("{\"SUCCESS\":true,\"RESULT\":[]}") + .build()); + + // invokeCallModule is a package-private test hook added by the patch. + client.invokeCallModule(pdfBytes, "DOCUMENT_LAYOUT_WITH_OCR"); + + RecordedRequest req = server.takeRequest(); + String body = req.getBody().utf8(); + assertTrue(body.contains("odl-" + shaShort + "-dla-ocr"), + "REQUEST_ID should include sha_short and module short name; body=" + body); + } + + @Test + void callImageCaptioning_request_id_includes_page_obj() throws Exception { + byte[] pdfBytes = "PDF_CONTENT_FOR_TEST".getBytes(); + String shaShort = sha256Hex(pdfBytes).substring(0, 12); + client.setSourcePdfShaShort(shaShort); // test hook + + server.enqueue(new MockResponse.Builder() + .code(200) + .body("{\"SUCCESS\":true,\"RESULT\":[[{\"caption\":\"x\"}]]}") + .build()); + + client.invokeCallImageCaptioning(new byte[]{1, 2, 3}, /*pageNum*/ 2, /*objectId*/ 7); + + RecordedRequest req = server.takeRequest(); + String body = req.getBody().utf8(); + assertTrue(body.contains("odl-" + shaShort + "-p2-o7-caption"), + "image REQUEST_ID format mismatch; body=" + body); + } + + private static String bytesToHex(byte[] bytes) { + StringBuilder sb = new StringBuilder(bytes.length * 2); + for (byte b : bytes) sb.append(String.format("%02x", b)); + return sb.toString(); + } + + private static String sha256Hex(byte[] b) throws Exception { + MessageDigest md = MessageDigest.getInstance("SHA-256"); + return bytesToHex(md.digest(b)); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/HancomAISchemaTransformerTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/HancomAISchemaTransformerTest.java new file mode 100644 index 0000000..c4aa59a --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/HancomAISchemaTransformerTest.java @@ -0,0 +1,1575 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.opendataloader.pdf.entities.SemanticFootnote; +import org.opendataloader.pdf.entities.SemanticPicture; +import org.opendataloader.pdf.hybrid.HybridClient.HybridResponse; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticCaption; +import org.verapdf.wcag.algorithms.entities.SemanticHeading; +import org.verapdf.wcag.algorithms.entities.SemanticParagraph; +import org.verapdf.wcag.algorithms.entities.lists.ListItem; +import org.verapdf.wcag.algorithms.entities.lists.PDFList; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Unit tests for HancomAISchemaTransformer heading level inference. + * + *

    Tests that label 1 (ParaTitle) and label 4 (RegionTitle) headings + * are assigned H2~H6 based on bbox height (font-size proxy), while + * label 0 (DocTitle) always maps to H1. + */ +public class HancomAISchemaTransformerTest { + + private HancomAISchemaTransformer transformer; + private ObjectMapper objectMapper; + + @BeforeEach + void setUp() { + transformer = new HancomAISchemaTransformer(); + objectMapper = new ObjectMapper(); + StaticLayoutContainers.setCurrentContentId(1L); + } + + // --- Label 0 (DocTitle) always H1 --- + + @Test + void titleLabel0_alwaysH1() { + ObjectNode json = createHancomAIJson( + createObject(0, "Document Title", 100, 50, 500, 100) + ); + + List> result = transform(json); + + assertThat(result).hasSize(1); + assertThat(result.get(0)).hasSize(1); + SemanticHeading heading = (SemanticHeading) result.get(0).get(0); + assertThat(heading.getHeadingLevel()).isEqualTo(1); + assertThat(heading.getValue()).isEqualTo("Document Title"); + } + + // --- Single heading size defaults to H2 --- + + @Test + void singleHeadingSize_label1_defaultsToH2() { + ObjectNode json = createHancomAIJson( + createObject(1, "Only Heading", 100, 200, 500, 250) + ); + + List> result = transform(json); + + assertThat(result.get(0)).hasSize(1); + SemanticHeading heading = (SemanticHeading) result.get(0).get(0); + assertThat(heading.getHeadingLevel()).isEqualTo(2); + } + + @Test + void singleHeadingSize_label4_defaultsToH2() { + ObjectNode json = createHancomAIJson( + createObject(4, "Only Subheading", 100, 200, 500, 240) + ); + + List> result = transform(json); + + assertThat(result.get(0)).hasSize(1); + SemanticHeading heading = (SemanticHeading) result.get(0).get(0); + assertThat(heading.getHeadingLevel()).isEqualTo(2); + } + + // --- Two different heading sizes → H2 and H3 --- + + @Test + void twoDifferentHeightHeadings_tallIsH2_shortIsH3() { + // Taller bbox (height 60px) = bigger font = H2 + // Shorter bbox (height 30px) = smaller font = H3 + ObjectNode json = createHancomAIJson( + createObject(1, "Big Section", 100, 100, 500, 160), // height=60 + createObject(1, "Small Section", 100, 300, 500, 330) // height=30 + ); + + List> result = transform(json); + + assertThat(result.get(0)).hasSize(2); + + // Results are sorted by reading order (top to bottom), so Big Section first + SemanticHeading big = (SemanticHeading) result.get(0).get(0); + SemanticHeading small = (SemanticHeading) result.get(0).get(1); + + assertThat(big.getValue()).isEqualTo("Big Section"); + assertThat(big.getHeadingLevel()).isEqualTo(2); + + assertThat(small.getValue()).isEqualTo("Small Section"); + assertThat(small.getHeadingLevel()).isEqualTo(3); + } + + // --- Same height → same level --- + + @Test + void sameHeight_sameLevelHeading() { + ObjectNode json = createHancomAIJson( + createObject(1, "Section A", 100, 100, 500, 150), // height=50 + createObject(1, "Section B", 100, 300, 500, 350) // height=50 + ); + + List> result = transform(json); + + assertThat(result.get(0)).hasSize(2); + SemanticHeading a = (SemanticHeading) result.get(0).get(0); + SemanticHeading b = (SemanticHeading) result.get(0).get(1); + + assertThat(a.getHeadingLevel()).isEqualTo(b.getHeadingLevel()); + assertThat(a.getHeadingLevel()).isEqualTo(2); + } + + // --- Mixed label 1 and label 4 share the same height pool --- + + @Test + void mixedLabel1And4_shareHeightPool() { + ObjectNode json = createHancomAIJson( + createObject(1, "Para Title", 100, 100, 500, 160), // height=60 → H2 + createObject(4, "Region Title", 100, 300, 500, 330) // height=30 → H3 + ); + + List> result = transform(json); + + assertThat(result.get(0)).hasSize(2); + SemanticHeading paraTitle = (SemanticHeading) result.get(0).get(0); + SemanticHeading regionTitle = (SemanticHeading) result.get(0).get(1); + + assertThat(paraTitle.getHeadingLevel()).isEqualTo(2); + assertThat(regionTitle.getHeadingLevel()).isEqualTo(3); + } + + // --- Three different heights → H2, H3, H4 --- + + @Test + void threeDifferentHeights_H2H3H4() { + ObjectNode json = createHancomAIJson( + createObject(1, "Large", 100, 100, 500, 200), // height=100 → H2 + createObject(1, "Medium", 100, 300, 500, 360), // height=60 → H3 + createObject(4, "Small", 100, 500, 500, 530) // height=30 → H4 + ); + + List> result = transform(json); + + assertThat(result.get(0)).hasSize(3); + SemanticHeading large = (SemanticHeading) result.get(0).get(0); + SemanticHeading medium = (SemanticHeading) result.get(0).get(1); + SemanticHeading small = (SemanticHeading) result.get(0).get(2); + + assertThat(large.getHeadingLevel()).isEqualTo(2); + assertThat(medium.getHeadingLevel()).isEqualTo(3); + assertThat(small.getHeadingLevel()).isEqualTo(4); + } + + // --- Cap at H6 --- + + @Test + void moreThanFiveSizes_cappedAtH6() { + // 6 different sizes → H2, H3, H4, H5, H6, H6 (capped) + ObjectNode json = createHancomAIJson( + createObject(1, "Size1", 100, 50, 500, 110), // height=60 + createObject(1, "Size2", 100, 150, 500, 200), // height=50 + createObject(1, "Size3", 100, 250, 500, 290), // height=40 + createObject(1, "Size4", 100, 350, 500, 380), // height=30 + createObject(1, "Size5", 100, 450, 500, 470), // height=20 + createObject(1, "Size6", 100, 550, 500, 560) // height=10 + ); + + List> result = transform(json); + + assertThat(result.get(0)).hasSize(6); + + // Sorted by reading order (top to bottom, which matches our order) + assertThat(((SemanticHeading) result.get(0).get(0)).getHeadingLevel()).isEqualTo(2); + assertThat(((SemanticHeading) result.get(0).get(1)).getHeadingLevel()).isEqualTo(3); + assertThat(((SemanticHeading) result.get(0).get(2)).getHeadingLevel()).isEqualTo(4); + assertThat(((SemanticHeading) result.get(0).get(3)).getHeadingLevel()).isEqualTo(5); + assertThat(((SemanticHeading) result.get(0).get(4)).getHeadingLevel()).isEqualTo(6); + assertThat(((SemanticHeading) result.get(0).get(5)).getHeadingLevel()).isEqualTo(6); + } + + // --- Document-wide inference (across pages) --- + + @Test + void headingLevels_consistentAcrossPages() { + // Page 0: large heading (height=60) + // Page 1: small heading (height=30) + // Both should share same height pool → H2 and H3 + ObjectNode json = createHancomAIJsonMultiPage( + new ObjectNode[][]{ + {createObject(1, "Page1 Heading", 100, 100, 500, 160)}, // height=60 + {createObject(1, "Page2 Heading", 100, 100, 500, 130)} // height=30 + } + ); + + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + pageHeights.put(2, 842.0); + + HybridResponse response = new HybridResponse("", json, null); + List> result = transformer.transform(response, pageHeights); + + assertThat(result).hasSize(2); + SemanticHeading page1Heading = (SemanticHeading) result.get(0).get(0); + SemanticHeading page2Heading = (SemanticHeading) result.get(1).get(0); + + assertThat(page1Heading.getHeadingLevel()).isEqualTo(2); + assertThat(page2Heading.getHeadingLevel()).isEqualTo(3); + } + + @Test + void headingLevels_sameHeightDifferentPages_sameLevel() { + // Same height on different pages → same level + ObjectNode json = createHancomAIJsonMultiPage( + new ObjectNode[][]{ + {createObject(1, "Page1 Heading", 100, 100, 500, 150)}, // height=50 + {createObject(4, "Page2 Heading", 100, 100, 500, 150)} // height=50 + } + ); + + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + pageHeights.put(2, 842.0); + + HybridResponse response = new HybridResponse("", json, null); + List> result = transformer.transform(response, pageHeights); + + assertThat(result).hasSize(2); + SemanticHeading h1 = (SemanticHeading) result.get(0).get(0); + SemanticHeading h2 = (SemanticHeading) result.get(1).get(0); + + assertThat(h1.getHeadingLevel()).isEqualTo(h2.getHeadingLevel()); + assertThat(h1.getHeadingLevel()).isEqualTo(2); + } + + // --- Title (label 0) is not affected by inference --- + + @Test + void titleH1_notAffectedByOtherHeadingSizes() { + // Title + heading: title stays H1 regardless + ObjectNode json = createHancomAIJson( + createObject(0, "Doc Title", 100, 50, 500, 120), // label 0 → always H1 + createObject(1, "Chapter", 100, 200, 500, 260), // height=60 → H2 + createObject(1, "Subsection", 100, 400, 500, 430) // height=30 → H3 + ); + + List> result = transform(json); + + assertThat(result.get(0)).hasSize(3); + SemanticHeading title = (SemanticHeading) result.get(0).get(0); + SemanticHeading chapter = (SemanticHeading) result.get(0).get(1); + SemanticHeading subsection = (SemanticHeading) result.get(0).get(2); + + assertThat(title.getHeadingLevel()).isEqualTo(1); + assertThat(chapter.getHeadingLevel()).isEqualTo(2); + assertThat(subsection.getHeadingLevel()).isEqualTo(3); + } + + // --- No heading level skipping --- + + @Test + void noHeadingLevelSkipping() { + // Even with very different heights, levels are sequential: H2, H3, H4 + ObjectNode json = createHancomAIJson( + createObject(1, "Huge", 100, 100, 500, 300), // height=200 + createObject(1, "Tiny", 100, 400, 500, 410), // height=10 + createObject(1, "Medium", 100, 500, 500, 550) // height=50 + ); + + List> result = transform(json); + + assertThat(result.get(0)).hasSize(3); + + // Sorted by reading order: Huge(top=100), Tiny(top=400), Medium(top=500) + SemanticHeading huge = (SemanticHeading) result.get(0).get(0); + SemanticHeading tiny = (SemanticHeading) result.get(0).get(1); + SemanticHeading medium = (SemanticHeading) result.get(0).get(2); + + assertThat(huge.getHeadingLevel()).isEqualTo(2); // tallest → H2 + assertThat(medium.getHeadingLevel()).isEqualTo(3); // middle → H3 + assertThat(tiny.getHeadingLevel()).isEqualTo(4); // shortest → H4 + + // No skipping: levels are 2, 3, 4 (no gap) + } + + // --- List grouping (label 3) --- + + @Test + void consecutiveLabel3_groupedIntoSinglePDFList() { + ObjectNode json = createHancomAIJson( + createObject(3, "First item", 100, 100, 500, 130), + createObject(3, "Second item", 100, 150, 500, 180), + createObject(3, "Third item", 100, 200, 500, 230) + ); + + List> result = transform(json); + + assertThat(result.get(0)).hasSize(1); + assertThat(result.get(0).get(0)).isInstanceOf(PDFList.class); + + PDFList list = (PDFList) result.get(0).get(0); + assertThat(list.getListItems()).hasSize(3); + assertThat(list.getListItems().get(0).getFirstLine().getValue()).isEqualTo("First item"); + assertThat(list.getListItems().get(1).getFirstLine().getValue()).isEqualTo("Second item"); + assertThat(list.getListItems().get(2).getFirstLine().getValue()).isEqualTo("Third item"); + } + + @Test + void nonLabel3_breaksListIntoSeparateInstances() { + ObjectNode json = createHancomAIJson( + createObject(3, "Item A", 100, 100, 500, 130), + createObject(3, "Item B", 100, 150, 500, 180), + createObject(2, "A paragraph", 100, 200, 500, 230), // label 2 breaks the run + createObject(3, "Item C", 100, 250, 500, 280), + createObject(3, "Item D", 100, 300, 500, 330) + ); + + List> result = transform(json); + + assertThat(result.get(0)).hasSize(3); // PDFList, paragraph, PDFList + assertThat(result.get(0).get(0)).isInstanceOf(PDFList.class); + assertThat(result.get(0).get(1)).isInstanceOf(SemanticParagraph.class); + assertThat(result.get(0).get(2)).isInstanceOf(PDFList.class); + + PDFList list1 = (PDFList) result.get(0).get(0); + PDFList list2 = (PDFList) result.get(0).get(2); + assertThat(list1.getListItems()).hasSize(2); + assertThat(list2.getListItems()).hasSize(2); + } + + @Test + void singleLabel3_stillWrappedInPDFList() { + ObjectNode json = createHancomAIJson( + createObject(3, "Solo item", 100, 100, 500, 130) + ); + + List> result = transform(json); + + assertThat(result.get(0)).hasSize(1); + assertThat(result.get(0).get(0)).isInstanceOf(PDFList.class); + + PDFList list = (PDFList) result.get(0).get(0); + assertThat(list.getListItems()).hasSize(1); + } + + @Test + void bulletPrefix_setsLabelLength() { + ObjectNode json = createHancomAIJson( + createObject(3, "\u2022 Bullet item", 100, 100, 500, 130), // bullet char + space = 2 + createObject(3, "1. Numbered item", 100, 150, 500, 180), // "1. " = 3 + createObject(3, "a) Letter item", 100, 200, 500, 230) // "a) " = 3 + ); + + List> result = transform(json); + + PDFList list = (PDFList) result.get(0).get(0); + assertThat(list.getListItems()).hasSize(3); + assertThat(list.getListItems().get(0).getLabelLength()).isEqualTo(2); + assertThat(list.getListItems().get(1).getLabelLength()).isEqualTo(3); + assertThat(list.getListItems().get(2).getLabelLength()).isEqualTo(3); + } + + @Test + void noBulletPrefix_labelLengthZero() { + ObjectNode json = createHancomAIJson( + createObject(3, "Plain text item", 100, 100, 500, 130) + ); + + List> result = transform(json); + + PDFList list = (PDFList) result.get(0).get(0); + assertThat(list.getListItems().get(0).getLabelLength()).isEqualTo(0); + } + + @Test + void dashBulletPrefix_setsLabelLength() { + ObjectNode json = createHancomAIJson( + createObject(3, "- Dash item", 100, 100, 500, 130), + createObject(3, "\u2013 En-dash item", 100, 150, 500, 180), + createObject(3, "\u2014 Em-dash item", 100, 200, 500, 230) + ); + + List> result = transform(json); + + PDFList list = (PDFList) result.get(0).get(0); + assertThat(list.getListItems().get(0).getLabelLength()).isEqualTo(2); // "- " + assertThat(list.getListItems().get(1).getLabelLength()).isEqualTo(2); // "\u2013 " + assertThat(list.getListItems().get(2).getLabelLength()).isEqualTo(2); // "\u2014 " + } + + @Test + void pdfList_hasBoundingBoxUnion() { + ObjectNode json = createHancomAIJson( + createObject(3, "Item 1", 100, 100, 500, 130), + createObject(3, "Item 2", 80, 150, 520, 180) + ); + + List> result = transform(json); + + PDFList list = (PDFList) result.get(0).get(0); + assertThat(list.getBoundingBox()).isNotNull(); + // Union bbox should encompass both items + // After coordinate conversion: leftX should be min(100, 80)*0.24 = 19.2 + // rightX should be max(500, 520)*0.24 = 124.8 + assertThat(list.getBoundingBox().getLeftX()).isLessThanOrEqualTo( + list.getListItems().get(0).getBoundingBox().getLeftX()); + assertThat(list.getBoundingBox().getRightX()).isGreaterThanOrEqualTo( + list.getListItems().get(1).getBoundingBox().getRightX()); + } + + @Test + void pdfList_hasRecognizedStructureId() { + ObjectNode json = createHancomAIJson( + createObject(3, "Item", 100, 100, 500, 130) + ); + + List> result = transform(json); + + PDFList list = (PDFList) result.get(0).get(0); + assertThat(list.getRecognizedStructureId()).isNotNull(); + } + + @Test + void multiDigitNumberBullet_setsLabelLength() { + ObjectNode json = createHancomAIJson( + createObject(3, "12. Twelfth item", 100, 100, 500, 130), + createObject(3, "3) Third item", 100, 150, 500, 180) + ); + + List> result = transform(json); + + PDFList list = (PDFList) result.get(0).get(0); + assertThat(list.getListItems().get(0).getLabelLength()).isEqualTo(4); // "12. " + assertThat(list.getListItems().get(1).getLabelLength()).isEqualTo(3); // "3) " + } + + // --- Helper methods --- + + private List> transform(ObjectNode json) { + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + return transformer.transform(response, pageHeights); + } + + /** + * Creates an object node representing a Hancom AI detected object. + * bbox format: [left, top, right, bottom] + */ + private ObjectNode createObject(int label, String text, double left, double top, + double right, double bottom) { + ObjectNode obj = objectMapper.createObjectNode(); + obj.put("label", label); + obj.put("ocrtext", text); + // Hancom AI DLA reports each object's overall detection confidence + // in the "confidence" field (numeric, 0..1). + obj.put("confidence", 0.95); + + ArrayNode bbox = obj.putArray("bbox"); + bbox.add(left); + bbox.add(top); + bbox.add(right); + bbox.add(bottom); + + return obj; + } + + /** + * Creates an object node with a specific AI score value. + */ + private ObjectNode createObjectWithConfidence(int label, String text, double left, double top, + double right, double bottom, double confidence) { + ObjectNode obj = objectMapper.createObjectNode(); + obj.put("label", label); + obj.put("ocrtext", text); + obj.put("confidence", confidence); + + ArrayNode bbox = obj.putArray("bbox"); + bbox.add(left); + bbox.add(top); + bbox.add(right); + bbox.add(bottom); + + return obj; + } + + /** + * Creates Hancom AI JSON with a single page containing given objects. + */ + private ObjectNode createHancomAIJson(ObjectNode... objects) { + ObjectNode json = objectMapper.createObjectNode(); + ArrayNode dlaOcr = json.putArray("DOCUMENT_LAYOUT_WITH_OCR"); + ArrayNode pages = dlaOcr.addArray(); + + ObjectNode page = pages.addObject(); + page.put("page_number", 0); + page.put("image_height", 3508); + ArrayNode objectsArray = page.putArray("objects"); + for (ObjectNode obj : objects) { + objectsArray.add(obj); + } + + return json; + } + + /** + * Creates Hancom AI JSON with multiple pages. + * Each inner array is the objects for that page. + */ + private ObjectNode createHancomAIJsonMultiPage(ObjectNode[][] pageObjects) { + ObjectNode json = objectMapper.createObjectNode(); + ArrayNode dlaOcr = json.putArray("DOCUMENT_LAYOUT_WITH_OCR"); + ArrayNode pages = dlaOcr.addArray(); + + for (int i = 0; i < pageObjects.length; i++) { + ObjectNode page = pages.addObject(); + page.put("page_number", i); + page.put("image_height", 3508); + ArrayNode objectsArray = page.putArray("objects"); + for (ObjectNode obj : pageObjects[i]) { + objectsArray.add(obj); + } + } + + return json; + } + + // --- Cell-word bbox intersection matching (Task 4) --- + + /** + * Helper: creates a Hancom AI JSON with DLA+OCR objects AND TABLE_STRUCTURE_RECOGNITION data. + * Uses the new per-table entry format with dla_bbox and tsr sub-object. + * + *

    For backward-compat with existing tests where cell bboxes are in page pixels: + * dla_bbox is set to tableBbox (so overlap checks work correctly), and the cell bboxes + * are adjusted by subtracting the table origin so they become crop-relative. + * The tsr.table_bbox is set to a zero-origin version of tableBbox. + */ + private ObjectNode createHancomAIJsonWithTable(ObjectNode[] dlaObjects, + double[] tableBbox, + ObjectNode[] tsrCells) { + // Make cell bboxes crop-relative by subtracting table origin + double originLeft = tableBbox[0]; + double originTop = tableBbox[1]; + ObjectNode[] adjustedCells = new ObjectNode[tsrCells.length]; + for (int i = 0; i < tsrCells.length; i++) { + adjustedCells[i] = tsrCells[i].deepCopy(); + com.fasterxml.jackson.databind.node.ArrayNode cellBbox = + (com.fasterxml.jackson.databind.node.ArrayNode) adjustedCells[i].get("bbox"); + if (cellBbox != null && cellBbox.size() >= 4) { + double l = cellBbox.get(0).asDouble() - originLeft; + double t = cellBbox.get(1).asDouble() - originTop; + double r = cellBbox.get(2).asDouble() - originLeft; + double b = cellBbox.get(3).asDouble() - originTop; + cellBbox.removeAll(); + cellBbox.add(l); cellBbox.add(t); cellBbox.add(r); cellBbox.add(b); + } + } + // tsr.table_bbox in crop coords (zero-origin) + double[] cropTableBbox = {0, 0, tableBbox[2] - tableBbox[0], tableBbox[3] - tableBbox[1]}; + return createHancomAIJsonWithTableAndOffset(dlaObjects, tableBbox, cropTableBbox, adjustedCells); + } + + /** + * Helper: creates Hancom AI JSON with separate dla_bbox (page coords) and crop-relative cells. + * @param dlaBbox the padded DLA bbox in page pixels [left, top, right, bottom] + * @param tsrTableBbox the table_bbox in crop-image coords + * @param tsrCells cells with crop-relative bboxes + */ + private ObjectNode createHancomAIJsonWithTableAndOffset(ObjectNode[] dlaObjects, + double[] dlaBbox, + double[] tsrTableBbox, + ObjectNode[] tsrCells) { + ObjectNode json = objectMapper.createObjectNode(); + + // DLA+OCR + ArrayNode dlaOcr = json.putArray("DOCUMENT_LAYOUT_WITH_OCR"); + ArrayNode dlaPages = dlaOcr.addArray(); + ObjectNode dlaPage = dlaPages.addObject(); + dlaPage.put("page_number", 0); + dlaPage.put("image_height", 3508); + ArrayNode objectsArray = dlaPage.putArray("objects"); + for (ObjectNode obj : dlaObjects) { + objectsArray.add(obj); + } + + // TABLE_STRUCTURE_RECOGNITION — new per-table entry format + ArrayNode tsr = json.putArray("TABLE_STRUCTURE_RECOGNITION"); + ObjectNode tableEntry = tsr.addObject(); + tableEntry.put("page_number", 0); + tableEntry.put("object_id", 0); + tableEntry.put("label", 9); + + ArrayNode dlaBboxArr = tableEntry.putArray("dla_bbox"); + for (double v : dlaBbox) dlaBboxArr.add(v); + + ObjectNode tsrObj = tableEntry.putObject("tsr"); + tsrObj.put("page_number", 0); + tsrObj.put("num_cells", tsrCells.length); + + ArrayNode tbbox = tsrObj.putArray("table_bbox"); + for (double v : tsrTableBbox) tbbox.add(v); + + ArrayNode cellsArray = tsrObj.putArray("cells"); + for (ObjectNode cell : tsrCells) { + cellsArray.add(cell); + } + + return json; + } + + /** + * Helper: creates a TSR cell node with array-format rowspan/colspan (real API format). + * rowspan/colspan are arrays of row/col indices this cell spans. + */ + private ObjectNode createTsrCell(int row, int col, int rowspan, int colspan, + String text, double left, double top, + double right, double bottom) { + ObjectNode cell = objectMapper.createObjectNode(); + cell.put("cell_id", row * 10 + col); // synthetic cell_id + cell.put("text", text); + + // Array-format rowspan: [startRow, startRow+1, ..., startRow+rowspan-1] + ArrayNode rsArr = cell.putArray("rowspan"); + for (int i = 0; i < rowspan; i++) rsArr.add(row + i); + + // Array-format colspan: [startCol, startCol+1, ..., startCol+colspan-1] + ArrayNode csArr = cell.putArray("colspan"); + for (int i = 0; i < colspan; i++) csArr.add(col + i); + + ArrayNode bbox = cell.putArray("bbox"); + bbox.add(left); + bbox.add(top); + bbox.add(right); + bbox.add(bottom); + return cell; + } + + /** + * Helper: extract text from a TableBorderCell's first content object (SemanticParagraph). + */ + private String getCellText(TableBorder table, int row, int col) { + TableBorderCell cell = table.getCell(row, col); + if (cell == null || cell.getContents() == null || cell.getContents().isEmpty()) { + return ""; + } + IObject content = cell.getContents().get(0); + if (content instanceof SemanticParagraph) { + return ((SemanticParagraph) content).getValue(); + } + return ""; + } + + @Test + void tableCellText_comesFromBboxWordMatching_notTsrTextField() { + // DLA+OCR words positioned inside specific cells + // Table at pixel coords [100, 100, 500, 300] (2 rows x 2 cols) + // Cell (0,0): [100,100,300,200], Cell (0,1): [300,100,500,200] + // Cell (1,0): [100,200,300,300], Cell (1,1): [300,200,500,300] + ObjectNode word1 = createObject(2, "Hello", 120, 120, 280, 180); // inside cell (0,0) + ObjectNode word2 = createObject(2, "World", 320, 120, 480, 180); // inside cell (0,1) + ObjectNode word3 = createObject(2, "Foo", 120, 220, 280, 280); // inside cell (1,0) + ObjectNode word4 = createObject(2, "Bar", 320, 220, 480, 280); // inside cell (1,1) + + // TSR cells have WRONG text (to prove we use bbox matching, not TSR text) + ObjectNode tsrCell00 = createTsrCell(0, 0, 1, 1, "WRONG0", 100, 100, 300, 200); + ObjectNode tsrCell01 = createTsrCell(0, 1, 1, 1, "WRONG1", 300, 100, 500, 200); + ObjectNode tsrCell10 = createTsrCell(1, 0, 1, 1, "WRONG2", 100, 200, 300, 300); + ObjectNode tsrCell11 = createTsrCell(1, 1, 1, 1, "WRONG3", 300, 200, 500, 300); + + double[] tableBbox = {100, 100, 500, 300}; + ObjectNode json = createHancomAIJsonWithTable( + new ObjectNode[]{word1, word2, word3, word4}, + tableBbox, + new ObjectNode[]{tsrCell00, tsrCell01, tsrCell10, tsrCell11} + ); + + List> result = transform(json); + + // Find the TableBorder in results + TableBorder table = null; + for (IObject obj : result.get(0)) { + if (obj instanceof TableBorder) { + table = (TableBorder) obj; + break; + } + } + assertThat(table).isNotNull(); + + // Cell text should come from DLA words, NOT TSR text field + assertThat(getCellText(table, 0, 0)).isEqualTo("Hello"); + assertThat(getCellText(table, 0, 1)).isEqualTo("World"); + assertThat(getCellText(table, 1, 0)).isEqualTo("Foo"); + assertThat(getCellText(table, 1, 1)).isEqualTo("Bar"); + } + + @Test + void tableCellText_wordStraddlingTwoCells_assignedToMajorityOverlap() { + // Word bbox straddles cell (0,0) and cell (0,1), but majority is in (0,0) + // Table: [100, 100, 500, 300], 1 row x 2 cols + // Cell (0,0): [100,100,300,300], Cell (0,1): [300,100,500,300] + // Word at [120, 120, 310, 280] → overlaps (0,0) by 180x160=28800, (0,1) by 10x160=1600 + // 28800/(190*160)=0.947 > 0.5 → assigned to (0,0) + // 1600/(190*160)=0.053 < 0.5 → NOT assigned to (0,1) + ObjectNode word = createObject(2, "Straddler", 120, 120, 310, 280); + + ObjectNode tsrCell0 = createTsrCell(0, 0, 1, 1, "TSR0", 100, 100, 300, 300); + ObjectNode tsrCell1 = createTsrCell(0, 1, 1, 1, "TSR1", 300, 100, 500, 300); + + double[] tableBbox = {100, 100, 500, 300}; + ObjectNode json = createHancomAIJsonWithTable( + new ObjectNode[]{word}, + tableBbox, + new ObjectNode[]{tsrCell0, tsrCell1} + ); + + List> result = transform(json); + + TableBorder table = null; + for (IObject obj : result.get(0)) { + if (obj instanceof TableBorder) { + table = (TableBorder) obj; + break; + } + } + assertThat(table).isNotNull(); + + // Word assigned to cell (0,0) where majority overlap is + assertThat(getCellText(table, 0, 0)).isEqualTo("Straddler"); + // Cell (0,1) should fall back to TSR text since no matching words + assertThat(getCellText(table, 0, 1)).isEqualTo("TSR1"); + } + + @Test + void tableCellText_noMatchingWords_fallsBackToTsrText() { + // No DLA words on this page — cells should use TSR text field as fallback + ObjectNode tsrCell0 = createTsrCell(0, 0, 1, 1, "Fallback Text", 100, 100, 300, 200); + ObjectNode tsrCell1 = createTsrCell(0, 1, 1, 1, "Also Fallback", 300, 100, 500, 200); + + double[] tableBbox = {100, 100, 500, 200}; + ObjectNode json = createHancomAIJsonWithTable( + new ObjectNode[]{}, // no DLA words + tableBbox, + new ObjectNode[]{tsrCell0, tsrCell1} + ); + + List> result = transform(json); + + TableBorder table = null; + for (IObject obj : result.get(0)) { + if (obj instanceof TableBorder) { + table = (TableBorder) obj; + break; + } + } + assertThat(table).isNotNull(); + + assertThat(getCellText(table, 0, 0)).isEqualTo("Fallback Text"); + assertThat(getCellText(table, 0, 1)).isEqualTo("Also Fallback"); + } + + @Test + void tableCellText_multipleWordsInCell_sortedByReadingOrder() { + // Two words in cell (0,0): one higher up, one lower + // They should be joined in reading order (top-to-bottom, left-to-right) + ObjectNode word1 = createObject(2, "First", 120, 120, 280, 150); // higher (top=120) + ObjectNode word2 = createObject(2, "Second", 120, 160, 280, 190); // lower (top=160) + + ObjectNode tsrCell = createTsrCell(0, 0, 1, 1, "WRONG", 100, 100, 300, 200); + double[] tableBbox = {100, 100, 300, 200}; + + ObjectNode json = createHancomAIJsonWithTable( + new ObjectNode[]{word2, word1}, // intentionally reversed to test sorting + tableBbox, + new ObjectNode[]{tsrCell} + ); + + List> result = transform(json); + + TableBorder table = null; + for (IObject obj : result.get(0)) { + if (obj instanceof TableBorder) { + table = (TableBorder) obj; + break; + } + } + assertThat(table).isNotNull(); + + // Words should be sorted: First (higher) then Second (lower) + assertThat(getCellText(table, 0, 0)).isEqualTo("First Second"); + } + + // --- Task 5: Caption mapping (label 8 and 11) --- + + @Test + void caption_tableName_becomesSemanticCaption() { + // label 8 (TableName) → SemanticCaption + ObjectNode json = createHancomAIJson( + createObject(8, "Table 1: Revenue", 100, 300, 500, 330) + ); + + List> result = transform(json); + + assertThat(result.get(0)).hasSize(1); + assertThat(result.get(0).get(0)).isInstanceOf(SemanticCaption.class); + SemanticCaption caption = (SemanticCaption) result.get(0).get(0); + assertThat(caption.getValue()).isEqualTo("Table 1: Revenue"); + } + + @Test + void caption_figureName_becomesSemanticCaption() { + // label 11 (FigureName) → SemanticCaption + ObjectNode json = createHancomAIJson( + createObject(11, "Figure 3: Architecture", 100, 400, 500, 430) + ); + + List> result = transform(json); + + assertThat(result.get(0)).hasSize(1); + assertThat(result.get(0).get(0)).isInstanceOf(SemanticCaption.class); + SemanticCaption caption = (SemanticCaption) result.get(0).get(0); + assertThat(caption.getValue()).isEqualTo("Figure 3: Architecture"); + } + + @Test + void caption_linkedToNearestFloat() { + // label 8 near a table → linkedContentId matches table's recognizedStructureId + // Table at pixel [100, 100, 500, 300], caption label 8 at [100, 310, 500, 340] + // Also a figure far away at [100, 800, 500, 1000] + ObjectNode[] dlaObjects = { + createObject(8, "Table 1: Data", 100, 310, 500, 340), + createObject(10, "", 100, 800, 500, 1000) + }; + + ObjectNode tsrCell = createTsrCell(0, 0, 1, 1, "cell", 100, 100, 500, 300); + double[] tableBbox = {100, 100, 500, 300}; + ObjectNode json = createHancomAIJsonWithTable( + dlaObjects, + tableBbox, + new ObjectNode[]{tsrCell} + ); + + List> result = transform(json); + + // Find caption and table + SemanticCaption caption = null; + TableBorder table = null; + for (IObject obj : result.get(0)) { + if (obj instanceof SemanticCaption) caption = (SemanticCaption) obj; + if (obj instanceof TableBorder) table = (TableBorder) obj; + } + + assertThat(caption).isNotNull(); + assertThat(table).isNotNull(); + assertThat(caption.getLinkedContentId()).isEqualTo(table.getRecognizedStructureId()); + } + + // --- Task 6: Footnote (label 13) --- + + @Test + void footnote_becomesSemanticFootnote() { + // label 13 → SemanticFootnote (not SemanticParagraph) + ObjectNode json = createHancomAIJson( + createObject(13, "1. See reference [3].", 100, 700, 500, 720) + ); + + List> result = transform(json); + + assertThat(result.get(0)).hasSize(1); + assertThat(result.get(0).get(0)).isInstanceOf(SemanticFootnote.class); + SemanticFootnote footnote = (SemanticFootnote) result.get(0).get(0); + assertThat(footnote.getValue()).isEqualTo("1. See reference [3]."); + } + + // --- Task 7: Regionlist (label 7) → Table/List --- + + @Test + void regionlist_withTsrOverlap_returnsNull() { + // label 7 with overlapping TSR → null (table handled separately by transformTablePage) + // DLA object at [100, 100, 500, 300] (label 7), TSR table covers same area + ObjectNode regionObj = createObject(7, "Table data here", 100, 100, 500, 300); + + ObjectNode tsrCell = createTsrCell(0, 0, 1, 1, "cell", 100, 100, 500, 300); + double[] tableBbox = {100, 100, 500, 300}; + ObjectNode json = createHancomAIJsonWithTable( + new ObjectNode[]{regionObj}, + tableBbox, + new ObjectNode[]{tsrCell} + ); + + List> result = transform(json); + + // label 7 region should be skipped (null), only the TSR table should appear + for (IObject obj : result.get(0)) { + // No PDFList or SemanticParagraph from label 7 — only the TableBorder from TSR + assertThat(obj).isNotInstanceOf(PDFList.class); + assertThat(obj).isNotInstanceOf(SemanticParagraph.class); + } + // TSR table should still be present + assertThat(result.get(0).stream().anyMatch(o -> o instanceof TableBorder)).isTrue(); + } + + @Test + void regionlist_withoutTsr_becomesList() { + // label 7 without any TSR data → PDFList from newline-split text + ObjectNode json = createHancomAIJson( + createObject(7, "First line\nSecond line\nThird line", 100, 100, 500, 200) + ); + + List> result = transform(json); + + assertThat(result.get(0)).hasSize(1); + assertThat(result.get(0).get(0)).isInstanceOf(PDFList.class); + + PDFList list = (PDFList) result.get(0).get(0); + assertThat(list.getListItems()).hasSize(3); + assertThat(list.getListItems().get(0).getFirstLine().getValue()).isEqualTo("First line"); + assertThat(list.getListItems().get(1).getFirstLine().getValue()).isEqualTo("Second line"); + assertThat(list.getListItems().get(2).getFirstLine().getValue()).isEqualTo("Third line"); + } + + @Test + void regionlist_withoutTsr_singleLine_becomesSingleItemList() { + // label 7 with single line text → PDFList with one item + ObjectNode json = createHancomAIJson( + createObject(7, "Solo table text", 100, 100, 500, 130) + ); + + List> result = transform(json); + + assertThat(result.get(0)).hasSize(1); + assertThat(result.get(0).get(0)).isInstanceOf(PDFList.class); + + PDFList list = (PDFList) result.get(0).get(0); + assertThat(list.getListItems()).hasSize(1); + assertThat(list.getListItems().get(0).getFirstLine().getValue()).isEqualTo("Solo table text"); + } + + @Test + void regionlist_withoutTsr_emptyText_returnsNull() { + // label 7 with empty text → null + ObjectNode json = createHancomAIJson( + createObject(7, "", 100, 100, 500, 200) + ); + + List> result = transform(json); + + assertThat(result.get(0)).isEmpty(); + } + + // --- Task E: regionlistStrategy --- + + @Test + void regionlistStrategy_listOnly_withTsrOverlap_stillBecomesList() { + // list-only strategy: label 7 with overlapping TSR should NOT be skipped + // — it should become a PDFList regardless of TSR presence + transformer.setRegionlistStrategy(HybridConfig.REGIONLIST_LIST_ONLY); + + ObjectNode regionObj = createObject(7, "Row 1\nRow 2\nRow 3", 100, 100, 500, 300); + + ObjectNode tsrCell = createTsrCell(0, 0, 1, 1, "cell", 100, 100, 500, 300); + double[] tableBbox = {100, 100, 500, 300}; + ObjectNode json = createHancomAIJsonWithTable( + new ObjectNode[]{regionObj}, + tableBbox, + new ObjectNode[]{tsrCell} + ); + + List> result = transform(json); + + // Should find a PDFList from label 7 (not skipped despite TSR overlap) + boolean hasList = result.get(0).stream().anyMatch(o -> o instanceof PDFList); + assertThat(hasList).isTrue(); + + PDFList list = (PDFList) result.get(0).stream() + .filter(o -> o instanceof PDFList).findFirst().orElse(null); + assertThat(list).isNotNull(); + assertThat(list.getListItems()).hasSize(3); + assertThat(list.getListItems().get(0).getFirstLine().getValue()).isEqualTo("Row 1"); + } + + @Test + void regionlistStrategy_tableFirst_withTsrOverlap_skipsLabel7() { + // table-first (default): label 7 with TSR overlap is skipped (existing behavior) + transformer.setRegionlistStrategy(HybridConfig.REGIONLIST_TABLE_FIRST); + + ObjectNode regionObj = createObject(7, "Table data here", 100, 100, 500, 300); + + ObjectNode tsrCell = createTsrCell(0, 0, 1, 1, "cell", 100, 100, 500, 300); + double[] tableBbox = {100, 100, 500, 300}; + ObjectNode json = createHancomAIJsonWithTable( + new ObjectNode[]{regionObj}, + tableBbox, + new ObjectNode[]{tsrCell} + ); + + List> result = transform(json); + + // No PDFList from label 7 — only the TableBorder from TSR + for (IObject obj : result.get(0)) { + assertThat(obj).isNotInstanceOf(PDFList.class); + } + assertThat(result.get(0).stream().anyMatch(o -> o instanceof TableBorder)).isTrue(); + } + + @Test + void regionlistStrategy_defaultIsTableFirst() { + // Default strategy should be table-first + HancomAISchemaTransformer freshTransformer = new HancomAISchemaTransformer(); + assertThat(freshTransformer.getRegionlistStrategy()).isEqualTo(HybridConfig.REGIONLIST_TABLE_FIRST); + } + + // --- Label 9 (Table) handled by TSR, returns null from transformObject --- + + @Test + void label9_table_returnsNull() { + // label 9 = Table → handled by transformTablePage(), transformObject returns null + ObjectNode json = createHancomAIJson( + createObject(9, "Some table text", 100, 100, 500, 300) + ); + + List> result = transform(json); + + assertThat(result.get(0)).isEmpty(); + } + + // --- Label 10 (Figure) creates SemanticPicture --- + + @Test + void label10_figure_createsPicture() { + // label 10 = Figure → SemanticPicture + ObjectNode json = createHancomAIJson( + createObject(10, "", 100, 100, 500, 400) + ); + + List> result = transform(json); + + assertThat(result.get(0)).hasSize(1); + assertThat(result.get(0).get(0)).isInstanceOf(SemanticPicture.class); + } + + // --- Task 8: AI score → correctSemanticScore --- + + @Test + void aiScore_mappedToCorrectSemanticScore() { + // object with score 0.85 → correctSemanticScore = 0.85 + ObjectNode obj = createObjectWithConfidence(2, "Test paragraph", 100, 100, 500, 130, 0.85); + ObjectNode json = createHancomAIJson(obj); + + List> result = transform(json); + + assertThat(result.get(0)).hasSize(1); + SemanticParagraph para = (SemanticParagraph) result.get(0).get(0); + assertThat(para.getCorrectSemanticScore()).isEqualTo(0.85); + } + + @Test + void aiScore_defaultsTo1WhenMissing() { + // object without score field → correctSemanticScore stays at the + // factory default (1.0); ElementMetadata.aiScore stays at sentinel. + ObjectNode obj = objectMapper.createObjectNode(); + obj.put("label", 2); + obj.put("ocrtext", "No score field"); + ArrayNode bbox = obj.putArray("bbox"); + bbox.add(100); bbox.add(100); bbox.add(500); bbox.add(130); + + ObjectNode json = createHancomAIJson(obj); + + List> result = transform(json); + + assertThat(result.get(0)).hasSize(1); + SemanticParagraph para = (SemanticParagraph) result.get(0).get(0); + assertThat(para.getCorrectSemanticScore()).isEqualTo(1.0); + } + + @Test + void aiScore_appliedToHeading() { + // heading with score 0.72 → correctSemanticScore = 0.72 + ObjectNode obj = createObjectWithConfidence(0, "Title", 100, 50, 500, 100, 0.72); + ObjectNode json = createHancomAIJson(obj); + + List> result = transform(json); + + SemanticHeading heading = (SemanticHeading) result.get(0).get(0); + assertThat(heading.getCorrectSemanticScore()).isEqualTo(0.72); + } + + // --- Task D: Array rowspan/colspan and crop-to-page bbox conversion --- + + @Test + void arrayRowspan_parsedCorrectly() { + // rowspan [1, 2] → startRow=1, rowspan=2 + // colspan [0] → startCol=0, colspan=1 + // This cell spans rows 1 and 2, column 0 only + ObjectNode cell = objectMapper.createObjectNode(); + cell.put("cell_id", 3); + ArrayNode rs = cell.putArray("rowspan"); + rs.add(1); rs.add(2); + ArrayNode cs = cell.putArray("colspan"); + cs.add(0); + ArrayNode bbox = cell.putArray("bbox"); + bbox.add(21); bbox.add(126); bbox.add(143); bbox.add(237); + + // Also need a cell at (0,0) to make a valid table + ObjectNode cell00 = objectMapper.createObjectNode(); + cell00.put("cell_id", 0); + ArrayNode rs00 = cell00.putArray("rowspan"); + rs00.add(0); + ArrayNode cs00 = cell00.putArray("colspan"); + cs00.add(0); + ArrayNode bbox00 = cell00.putArray("bbox"); + bbox00.add(21); bbox00.add(15); bbox00.add(143); bbox00.add(126); + + // Build TSR entry + ObjectNode json = objectMapper.createObjectNode(); + ArrayNode dlaOcr = json.putArray("DOCUMENT_LAYOUT_WITH_OCR"); + ArrayNode dlaPages = dlaOcr.addArray(); + ObjectNode dlaPage = dlaPages.addObject(); + dlaPage.put("page_number", 0); + dlaPage.put("image_height", 3508); + dlaPage.putArray("objects"); + + ArrayNode tsr = json.putArray("TABLE_STRUCTURE_RECOGNITION"); + ObjectNode tableEntry = tsr.addObject(); + tableEntry.put("page_number", 0); + ArrayNode dlaBbox = tableEntry.putArray("dla_bbox"); + dlaBbox.add(183); dlaBbox.add(607); dlaBbox.add(1590); dlaBbox.add(1533); + ObjectNode tsrObj = tableEntry.putObject("tsr"); + tsrObj.put("page_number", 0); + tsrObj.put("num_cells", 2); + ArrayNode tbbox = tsrObj.putArray("table_bbox"); + tbbox.add(21); tbbox.add(13); tbbox.add(1349); tbbox.add(875); + ArrayNode cellsArray = tsrObj.putArray("cells"); + cellsArray.add(cell00); + cellsArray.add(cell); + + List> result = transform(json); + + TableBorder table = null; + for (IObject obj : result.get(0)) { + if (obj instanceof TableBorder) { + table = (TableBorder) obj; + break; + } + } + assertThat(table).isNotNull(); + // Table should have 3 rows (indices 0, 1, 2) and 1 column + assertThat(table.getNumberOfRows()).isEqualTo(3); + assertThat(table.getNumberOfColumns()).isEqualTo(1); + + // Cell at (1, 0) should span 2 rows + TableBorderCell spanCell = table.getCell(1, 0); + assertThat(spanCell).isNotNull(); + assertThat(spanCell.getRowSpan()).isEqualTo(2); + assertThat(spanCell.getColSpan()).isEqualTo(1); + } + + @Test + void cropToPageBboxConversion_withKnownOffset() { + // DLA bbox (crop origin): [100, 200, 500, 600] in page pixels + // Cell bbox in crop coords: [10, 20, 90, 80] + // Expected page-level pixel coords: [110, 220, 190, 280] + // Expected PDF points: [110*0.24, pageH - 280*0.24, 190*0.24, pageH - 220*0.24] + double[] dlaBbox = {100, 200, 500, 600}; + double[] tsrTableBbox = {0, 0, 400, 400}; // crop-relative + + ObjectNode cell = objectMapper.createObjectNode(); + cell.put("cell_id", 0); + ArrayNode rs = cell.putArray("rowspan"); + rs.add(0); + ArrayNode cs = cell.putArray("colspan"); + cs.add(0); + ArrayNode bbox = cell.putArray("bbox"); + bbox.add(10); bbox.add(20); bbox.add(90); bbox.add(80); + + ObjectNode json = createHancomAIJsonWithTableAndOffset( + new ObjectNode[]{}, + dlaBbox, + tsrTableBbox, + new ObjectNode[]{cell} + ); + + List> result = transform(json); + + TableBorder table = null; + for (IObject obj : result.get(0)) { + if (obj instanceof TableBorder) { + table = (TableBorder) obj; + break; + } + } + assertThat(table).isNotNull(); + + // Cell bbox should be converted from crop to page coords + TableBorderCell c = table.getCell(0, 0); + assertThat(c).isNotNull(); + assertThat(c.getBoundingBox()).isNotNull(); + + // Page pixel coords: left=110, top=220, right=190, bottom=280 + // PDF points: left=110*0.24=26.4, right=190*0.24=45.6 + // topY = 842 - 220*0.24 = 842 - 52.8 = 789.2 + // bottomY = 842 - 280*0.24 = 842 - 67.2 = 774.8 + double pageHeight = 842.0; + double expectedLeft = 110.0 * 72.0 / 300.0; + double expectedRight = 190.0 * 72.0 / 300.0; + double expectedTopY = pageHeight - (220.0 * 72.0 / 300.0); + double expectedBottomY = pageHeight - (280.0 * 72.0 / 300.0); + + assertThat(c.getBoundingBox().getLeftX()).isEqualTo(expectedLeft, org.assertj.core.api.Assertions.within(0.01)); + assertThat(c.getBoundingBox().getRightX()).isEqualTo(expectedRight, org.assertj.core.api.Assertions.within(0.01)); + assertThat(c.getBoundingBox().getTopY()).isEqualTo(expectedTopY, org.assertj.core.api.Assertions.within(0.01)); + assertThat(c.getBoundingBox().getBottomY()).isEqualTo(expectedBottomY, org.assertj.core.api.Assertions.within(0.01)); + } + + @Test + void backwardCompat_integerRowspanColspan_stillWorks() { + // Test backward compatibility with integer rowspan/colspan format + ObjectNode cell = objectMapper.createObjectNode(); + cell.put("row", 0); + cell.put("col", 0); + cell.put("rowspan", 2); + cell.put("colspan", 1); + cell.put("text", "Merged cell"); + ArrayNode bbox = cell.putArray("bbox"); + bbox.add(100); bbox.add(100); bbox.add(300); bbox.add(300); + + ObjectNode cell2 = objectMapper.createObjectNode(); + cell2.put("row", 0); + cell2.put("col", 1); + cell2.put("rowspan", 1); + cell2.put("colspan", 1); + cell2.put("text", "Normal cell"); + ArrayNode bbox2 = cell2.putArray("bbox"); + bbox2.add(300); bbox2.add(100); bbox2.add(500); bbox2.add(200); + + double[] dlaBbox = {100, 100, 500, 300}; + + ObjectNode json = objectMapper.createObjectNode(); + ArrayNode dlaOcr = json.putArray("DOCUMENT_LAYOUT_WITH_OCR"); + ArrayNode dlaPages = dlaOcr.addArray(); + ObjectNode dlaPage = dlaPages.addObject(); + dlaPage.put("page_number", 0); + dlaPage.put("image_height", 3508); + dlaPage.putArray("objects"); + + ArrayNode tsr = json.putArray("TABLE_STRUCTURE_RECOGNITION"); + ObjectNode tableEntry = tsr.addObject(); + tableEntry.put("page_number", 0); + ArrayNode dlaBboxArr = tableEntry.putArray("dla_bbox"); + for (double v : dlaBbox) dlaBboxArr.add(v); + ObjectNode tsrObj = tableEntry.putObject("tsr"); + tsrObj.put("page_number", 0); + tsrObj.put("num_cells", 2); + ArrayNode tbbox = tsrObj.putArray("table_bbox"); + tbbox.add(0); tbbox.add(0); tbbox.add(400); tbbox.add(200); + ArrayNode cellsArray = tsrObj.putArray("cells"); + cellsArray.add(cell); + cellsArray.add(cell2); + + List> result = transform(json); + + TableBorder table = null; + for (IObject obj : result.get(0)) { + if (obj instanceof TableBorder) { + table = (TableBorder) obj; + break; + } + } + assertThat(table).isNotNull(); + assertThat(table.getNumberOfRows()).isEqualTo(2); + assertThat(table.getNumberOfColumns()).isEqualTo(2); + + TableBorderCell mergedCell = table.getCell(0, 0); + assertThat(mergedCell).isNotNull(); + assertThat(mergedCell.getRowSpan()).isEqualTo(2); + assertThat(mergedCell.getColSpan()).isEqualTo(1); + } + + @Test + void multipleTablesPerPage_allProduced() { + // Two tables on the same page + ObjectNode json = objectMapper.createObjectNode(); + ArrayNode dlaOcr = json.putArray("DOCUMENT_LAYOUT_WITH_OCR"); + ArrayNode dlaPages = dlaOcr.addArray(); + ObjectNode dlaPage = dlaPages.addObject(); + dlaPage.put("page_number", 0); + dlaPage.put("image_height", 3508); + dlaPage.putArray("objects"); + + ArrayNode tsr = json.putArray("TABLE_STRUCTURE_RECOGNITION"); + + // Table 1 + ObjectNode entry1 = tsr.addObject(); + entry1.put("page_number", 0); + entry1.put("object_id", 1); + ArrayNode dlaBbox1 = entry1.putArray("dla_bbox"); + dlaBbox1.add(100); dlaBbox1.add(100); dlaBbox1.add(500); dlaBbox1.add(300); + ObjectNode tsr1 = entry1.putObject("tsr"); + tsr1.put("page_number", 0); + tsr1.put("num_cells", 1); + ArrayNode tbbox1 = tsr1.putArray("table_bbox"); + tbbox1.add(0); tbbox1.add(0); tbbox1.add(400); tbbox1.add(200); + ArrayNode cells1 = tsr1.putArray("cells"); + ObjectNode c1 = cells1.addObject(); + c1.put("cell_id", 0); + ArrayNode rs1 = c1.putArray("rowspan"); rs1.add(0); + ArrayNode cs1 = c1.putArray("colspan"); cs1.add(0); + ArrayNode b1 = c1.putArray("bbox"); + b1.add(0); b1.add(0); b1.add(400); b1.add(200); + + // Table 2 + ObjectNode entry2 = tsr.addObject(); + entry2.put("page_number", 0); + entry2.put("object_id", 2); + ArrayNode dlaBbox2 = entry2.putArray("dla_bbox"); + dlaBbox2.add(100); dlaBbox2.add(500); dlaBbox2.add(500); dlaBbox2.add(700); + ObjectNode tsr2 = entry2.putObject("tsr"); + tsr2.put("page_number", 0); + tsr2.put("num_cells", 1); + ArrayNode tbbox2 = tsr2.putArray("table_bbox"); + tbbox2.add(0); tbbox2.add(0); tbbox2.add(400); tbbox2.add(200); + ArrayNode cells2 = tsr2.putArray("cells"); + ObjectNode c2 = cells2.addObject(); + c2.put("cell_id", 0); + ArrayNode rs2 = c2.putArray("rowspan"); rs2.add(0); + ArrayNode cs2 = c2.putArray("colspan"); cs2.add(0); + ArrayNode b2 = c2.putArray("bbox"); + b2.add(0); b2.add(0); b2.add(400); b2.add(200); + + List> result = transform(json); + + long tableCount = result.get(0).stream().filter(o -> o instanceof TableBorder).count(); + assertThat(tableCount).isEqualTo(2); + } + + // --- Task G: ElementMetadata --- + + @Test + void metadata_paragraphHasConfidenceAndSourceLabel() { + ObjectNode obj = createObjectWithConfidence(2, "Test paragraph", 100, 100, 500, 130, 0.88); + ObjectNode json = createHancomAIJson(obj); + + List> result = transform(json); + + assertThat(result.get(0)).hasSize(1); + IObject iobj = result.get(0).get(0); + assertThat(iobj.getRecognizedStructureId()).isNotNull(); + + Map metadata = transformer.getElementMetadata(); + assertThat(metadata).containsKey(iobj.getRecognizedStructureId()); + + ElementMetadata meta = metadata.get(iobj.getRecognizedStructureId()); + assertThat(meta.getAiScore()).isEqualTo(0.88); + assertThat(meta.getSourceLabel()).isEqualTo(2); + assertThat(meta.getHeadingInferenceMethod()).isNull(); + } + + @Test + void metadata_headingHasBboxHeightInference() { + ObjectNode json = createHancomAIJson( + createObjectWithConfidence(1, "Section Title", 100, 100, 500, 160, 0.92) + ); + + List> result = transform(json); + + SemanticHeading heading = (SemanticHeading) result.get(0).get(0); + Map metadata = transformer.getElementMetadata(); + ElementMetadata meta = metadata.get(heading.getRecognizedStructureId()); + + assertThat(meta).isNotNull(); + assertThat(meta.getSourceLabel()).isEqualTo(1); + assertThat(meta.getHeadingInferenceMethod()).isEqualTo("bbox-height"); + assertThat(meta.getBboxHeightPx()).isEqualTo(60.0); // 160 - 100 + } + + @Test + void metadata_titleHasFixedInference() { + ObjectNode json = createHancomAIJson( + createObject(0, "Document Title", 100, 50, 500, 100) + ); + + List> result = transform(json); + + SemanticHeading heading = (SemanticHeading) result.get(0).get(0); + Map metadata = transformer.getElementMetadata(); + ElementMetadata meta = metadata.get(heading.getRecognizedStructureId()); + + assertThat(meta).isNotNull(); + assertThat(meta.getHeadingInferenceMethod()).isEqualTo("fixed"); + assertThat(meta.getBboxHeightPx()).isNull(); + } + + @Test + void metadata_tableHasTsrMetadata() { + ObjectNode tsrCell = createTsrCell(0, 0, 1, 1, "cell", 100, 100, 300, 200); + double[] tableBbox = {100, 100, 300, 200}; + ObjectNode json = createHancomAIJsonWithTable( + new ObjectNode[]{}, + tableBbox, + new ObjectNode[]{tsrCell} + ); + + // Add num_cells to the tsr object + // The helper already sets num_cells = tsrCells.length + + List> result = transform(json); + + TableBorder table = null; + for (IObject obj : result.get(0)) { + if (obj instanceof TableBorder) { + table = (TableBorder) obj; + break; + } + } + assertThat(table).isNotNull(); + + Map metadata = transformer.getElementMetadata(); + ElementMetadata meta = metadata.get(table.getRecognizedStructureId()); + + assertThat(meta).isNotNull(); + assertThat(meta.getSourceLabel()).isEqualTo(9); + assertThat(meta.getTsr()).isNotNull(); + assertThat(meta.getTsr().getNumCells()).isEqualTo(1); + } + + @Test + void metadata_figureHasCaptionMetadata() { + // Create figure with caption from FIGURE_CAPTIONS + ObjectNode json = objectMapper.createObjectNode(); + + // DLA+OCR with a figure object + ArrayNode dlaOcr = json.putArray("DOCUMENT_LAYOUT_WITH_OCR"); + ArrayNode dlaPages = dlaOcr.addArray(); + ObjectNode page = dlaPages.addObject(); + page.put("page_number", 0); + page.put("image_height", 3508); + ArrayNode objects = page.putArray("objects"); + ObjectNode figObj = objects.addObject(); + figObj.put("label", 10); + figObj.put("ocrtext", ""); + figObj.put("confidence", 0.91); + figObj.put("object_id", 5); + ArrayNode bbox = figObj.putArray("bbox"); + bbox.add(100); bbox.add(100); bbox.add(500); bbox.add(400); + + // FIGURE_CAPTIONS + ArrayNode figureCaptions = json.putArray("FIGURE_CAPTIONS"); + ObjectNode cap = figureCaptions.addObject(); + cap.put("page_number", 0); + cap.put("object_id", 5); + cap.put("caption", "A beautiful chart"); + + List> result = transform(json); + + SemanticPicture pic = (SemanticPicture) result.get(0).get(0); + Map metadata = transformer.getElementMetadata(); + ElementMetadata meta = metadata.get(pic.getRecognizedStructureId()); + + assertThat(meta).isNotNull(); + assertThat(meta.getSourceLabel()).isEqualTo(10); + assertThat(meta.getCaption()).isNotNull(); + assertThat(meta.getCaption().getText()).isEqualTo("A beautiful chart"); + assertThat(meta.getCaption().getLanguage()).isEqualTo("en"); + } + + @Test + void metadata_regionlistHasResolution() { + // label 7 without TSR → list-only style resolution + ObjectNode json = createHancomAIJson( + createObjectWithConfidence(7, "Line one\nLine two", 100, 100, 500, 200, 0.80) + ); + + List> result = transform(json); + + assertThat(result.get(0)).hasSize(1); + IObject iobj = result.get(0).get(0); + + Map metadata = transformer.getElementMetadata(); + ElementMetadata meta = metadata.get(iobj.getRecognizedStructureId()); + + assertThat(meta).isNotNull(); + assertThat(meta.getSourceLabel()).isEqualTo(7); + assertThat(meta.getRegionlistResolution()).isNotNull(); + assertThat(meta.getRegionlistResolution().getStrategy()).isEqualTo("table-first"); + assertThat(meta.getRegionlistResolution().isTsrAttempted()).isTrue(); + assertThat(meta.getRegionlistResolution().getTsrResult()).isEqualTo("no-cells"); + } + + @Test + void metadata_clearedBetweenTransformCalls() { + // First transform + ObjectNode json1 = createHancomAIJson( + createObject(2, "First call", 100, 100, 500, 130) + ); + transform(json1); + assertThat(transformer.getElementMetadata()).hasSize(1); + + // Second transform should clear previous metadata + ObjectNode json2 = createHancomAIJson( + createObject(2, "Second call A", 100, 100, 500, 130), + createObject(2, "Second call B", 100, 200, 500, 230) + ); + transform(json2); + assertThat(transformer.getElementMetadata()).hasSize(2); + } + + @Test + void tableCellText_pageHeaderFooterWords_excluded() { + // Words with label 14 (page header), 15 (page footer), 17 (page number) should not + // be matched to cells even if their bbox overlaps + ObjectNode headerWord = createObject(14, "HEADER", 120, 120, 280, 180); + ObjectNode footerWord = createObject(15, "FOOTER", 120, 120, 280, 180); + ObjectNode pageNumWord = createObject(17, "42", 120, 120, 280, 180); + + ObjectNode tsrCell = createTsrCell(0, 0, 1, 1, "Fallback", 100, 100, 300, 200); + double[] tableBbox = {100, 100, 300, 200}; + + ObjectNode json = createHancomAIJsonWithTable( + new ObjectNode[]{headerWord, footerWord, pageNumWord}, + tableBbox, + new ObjectNode[]{tsrCell} + ); + + List> result = transform(json); + + TableBorder table = null; + for (IObject obj : result.get(0)) { + if (obj instanceof TableBorder) { + table = (TableBorder) obj; + break; + } + } + assertThat(table).isNotNull(); + + // Furniture words excluded, so falls back to TSR text + assertThat(getCellText(table, 0, 0)).isEqualTo("Fallback"); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/HancomClientTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/HancomClientTest.java new file mode 100644 index 0000000..1b9bc83 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/HancomClientTest.java @@ -0,0 +1,266 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import com.fasterxml.jackson.databind.ObjectMapper; +import mockwebserver3.MockResponse; +import mockwebserver3.MockWebServer; +import mockwebserver3.RecordedRequest; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.opendataloader.pdf.hybrid.HybridClient.HybridRequest; +import org.opendataloader.pdf.hybrid.HybridClient.HybridResponse; + +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; +import java.util.concurrent.TimeUnit; + +/** + * Unit tests for HancomClient. + * + *

    Uses MockWebServer to simulate Hancom API responses. + */ +public class HancomClientTest { + + private MockWebServer mockServer; + private HancomClient client; + private ObjectMapper objectMapper; + + private static final byte[] SAMPLE_PDF_BYTES = "%PDF-1.4 sample".getBytes(); + + @BeforeEach + void setUp() throws IOException { + mockServer = new MockWebServer(); + mockServer.start(); + + HybridConfig config = new HybridConfig(); + config.setUrl(mockServer.url("/").toString()); + config.setTimeoutMs(5000); + + client = new HancomClient(config); + objectMapper = new ObjectMapper(); + } + + @AfterEach + void tearDown() throws IOException { + client.shutdown(); + mockServer.close(); + } + + @Test + void testDefaultUrlConfiguration() { + Assertions.assertEquals( + "https://dataloader.cloud.hancom.com/studio-lite/api", + HancomClient.DEFAULT_URL + ); + } + + @Test + void testConvertFullWorkflow() throws Exception { + // Mock upload response (Hancom API format: data.fileId) + String uploadResponse = "{\"codeNum\":0,\"code\":\"file.upload.success\",\"data\":{\"fileId\":\"test-file-123\",\"fileName\":\"test.pdf\"}}"; + mockServer.enqueue(new MockResponse.Builder() + .body(uploadResponse) + .addHeader("Content-Type", "application/json") + .build()); + + // Mock visualinfo response + String visualInfoResponse = createVisualInfoResponse(); + mockServer.enqueue(new MockResponse.Builder() + .body(visualInfoResponse) + .addHeader("Content-Type", "application/json") + .build()); + + // Mock delete response + mockServer.enqueue(new MockResponse.Builder().code(200).build()); + + HybridRequest request = HybridRequest.allPages(SAMPLE_PDF_BYTES); + HybridResponse response = client.convert(request); + + Assertions.assertNotNull(response); + Assertions.assertNotNull(response.getJson()); + + // Verify 3 requests: upload, visualinfo, delete + Assertions.assertEquals(3, mockServer.getRequestCount()); + + // Verify upload request + RecordedRequest uploadReq = mockServer.takeRequest(1, TimeUnit.SECONDS); + Assertions.assertTrue(uploadReq.getTarget().contains("/v1/dl/files/upload")); + Assertions.assertTrue(uploadReq.getHeaders().get("Content-Type").contains("multipart/form-data")); + + // Verify visualinfo request + RecordedRequest visualInfoReq = mockServer.takeRequest(1, TimeUnit.SECONDS); + Assertions.assertTrue(visualInfoReq.getTarget().contains("/v1/dl/files/test-file-123/visualinfo")); + Assertions.assertTrue(visualInfoReq.getTarget().contains("engine=pdf_ai_dl")); + Assertions.assertTrue(visualInfoReq.getTarget().contains("dlaMode=ENABLED")); + Assertions.assertTrue(visualInfoReq.getTarget().contains("ocrMode=FORCE")); + + // Verify delete request + RecordedRequest deleteReq = mockServer.takeRequest(1, TimeUnit.SECONDS); + Assertions.assertTrue(deleteReq.getTarget().contains("/v1/dl/files/test-file-123")); + Assertions.assertEquals("DELETE", deleteReq.getMethod()); + } + + @Test + void testConvertWithCleanupOnProcessingError() throws Exception { + // Mock upload response (Hancom API format: data.fileId) + String uploadResponse = "{\"codeNum\":0,\"code\":\"file.upload.success\",\"data\":{\"fileId\":\"test-file-456\",\"fileName\":\"test.pdf\"}}"; + mockServer.enqueue(new MockResponse.Builder() + .body(uploadResponse) + .addHeader("Content-Type", "application/json") + .build()); + + // Mock visualinfo error response + mockServer.enqueue(new MockResponse.Builder() + .code(500) + .body("{\"error\": \"Internal server error\"}") + .build()); + + // Mock delete response - should still be called + mockServer.enqueue(new MockResponse.Builder().code(200).build()); + + HybridRequest request = HybridRequest.allPages(SAMPLE_PDF_BYTES); + + Assertions.assertThrows(IOException.class, () -> { + client.convert(request); + }); + + // Verify delete was still called (cleanup) + Assertions.assertEquals(3, mockServer.getRequestCount()); + } + + @Test + void testConvertWithSpecificPages() throws Exception { + // Mock upload response (Hancom API format: data.fileId) + String uploadResponse = "{\"codeNum\":0,\"code\":\"file.upload.success\",\"data\":{\"fileId\":\"test-file-pages\",\"fileName\":\"test.pdf\"}}"; + mockServer.enqueue(new MockResponse.Builder() + .body(uploadResponse) + .addHeader("Content-Type", "application/json") + .build()); + + // Mock visualinfo response + String visualInfoResponse = createVisualInfoResponse(); + mockServer.enqueue(new MockResponse.Builder() + .body(visualInfoResponse) + .addHeader("Content-Type", "application/json") + .build()); + + // Mock delete response + mockServer.enqueue(new MockResponse.Builder().code(200).build()); + + Set pages = new HashSet<>(); + pages.add(1); + pages.add(3); + HybridRequest request = HybridRequest.forPages(SAMPLE_PDF_BYTES, pages); + + HybridResponse response = client.convert(request); + + Assertions.assertNotNull(response); + } + + @Test + void testUploadFailure() throws Exception { + // Mock upload error + mockServer.enqueue(new MockResponse.Builder() + .code(400) + .body("{\"error\": \"Invalid file format\"}") + .build()); + + HybridRequest request = HybridRequest.allPages(SAMPLE_PDF_BYTES); + + Assertions.assertThrows(IOException.class, () -> { + client.convert(request); + }); + + // Only upload was called (no visualinfo or delete) + Assertions.assertEquals(1, mockServer.getRequestCount()); + } + + @Test + void testDeleteFailureIsIgnored() throws Exception { + // Mock upload response (Hancom API format: data.fileId) + String uploadResponse = "{\"codeNum\":0,\"code\":\"file.upload.success\",\"data\":{\"fileId\":\"test-file-del\",\"fileName\":\"test.pdf\"}}"; + mockServer.enqueue(new MockResponse.Builder() + .body(uploadResponse) + .addHeader("Content-Type", "application/json") + .build()); + + // Mock visualinfo response + String visualInfoResponse = createVisualInfoResponse(); + mockServer.enqueue(new MockResponse.Builder() + .body(visualInfoResponse) + .addHeader("Content-Type", "application/json") + .build()); + + // Mock delete failure - should be ignored + mockServer.enqueue(new MockResponse.Builder().code(404).build()); + + HybridRequest request = HybridRequest.allPages(SAMPLE_PDF_BYTES); + HybridResponse response = client.convert(request); + + // Should succeed despite delete failure + Assertions.assertNotNull(response); + Assertions.assertEquals(3, mockServer.getRequestCount()); + } + + @Test + void testConvertAsync() throws Exception { + // Mock responses (Hancom API format: data.fileId) + String uploadResponse = "{\"codeNum\":0,\"code\":\"file.upload.success\",\"data\":{\"fileId\":\"async-file\",\"fileName\":\"test.pdf\"}}"; + mockServer.enqueue(new MockResponse.Builder() + .body(uploadResponse) + .addHeader("Content-Type", "application/json") + .build()); + + String visualInfoResponse = createVisualInfoResponse(); + mockServer.enqueue(new MockResponse.Builder() + .body(visualInfoResponse) + .addHeader("Content-Type", "application/json") + .build()); + + mockServer.enqueue(new MockResponse.Builder().code(200).build()); + + HybridRequest request = HybridRequest.allPages(SAMPLE_PDF_BYTES); + HybridResponse response = client.convertAsync(request).get(10, TimeUnit.SECONDS); + + Assertions.assertNotNull(response); + } + + private String createVisualInfoResponse() { + return "{\n" + + " \"runtime\": 1234,\n" + + " \"version\": \"1.0\",\n" + + " \"metadata\": {\n" + + " \"fileId\": \"test-file\",\n" + + " \"fileName\": \"test.pdf\",\n" + + " \"numOfPages\": 1\n" + + " },\n" + + " \"elements\": [\n" + + " {\n" + + " \"id\": \"1\",\n" + + " \"category\": {\"type\": \"PARAGRAPH\", \"label\": \"text\"},\n" + + " \"content\": {\"text\": \"Hello World\"},\n" + + " \"bbox\": {\"left\": 100, \"top\": 100, \"width\": 200, \"height\": 50},\n" + + " \"pageIndex\": 0\n" + + " }\n" + + " ],\n" + + " \"pageSizes\": [{\"width\": 612, \"height\": 792}]\n" + + "}"; + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/HancomSchemaTransformerTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/HancomSchemaTransformerTest.java new file mode 100644 index 0000000..36ec32a --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/HancomSchemaTransformerTest.java @@ -0,0 +1,623 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.opendataloader.pdf.entities.SemanticFormula; +import org.opendataloader.pdf.entities.SemanticPicture; +import org.opendataloader.pdf.hybrid.HybridClient.HybridResponse; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticHeading; +import org.verapdf.wcag.algorithms.entities.SemanticParagraph; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ObjectNode; + +/** + * Unit tests for HancomSchemaTransformer. + * + *

    Tests the transformation of Hancom VisualInfoDto JSON format to + * OpenDataLoader IObject hierarchy. + */ +public class HancomSchemaTransformerTest { + + private HancomSchemaTransformer transformer; + private ObjectMapper objectMapper; + + @BeforeEach + void setUp() { + transformer = new HancomSchemaTransformer(); + objectMapper = new ObjectMapper(); + StaticLayoutContainers.setCurrentContentId(1L); + } + + @Test + void testGetBackendType() { + Assertions.assertEquals("hancom", transformer.getBackendType()); + } + + @Test + void testTransformNullJson() { + HybridResponse response = new HybridResponse("", null, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertTrue(result.isEmpty()); + } + + @Test + void testTransformEmptyJson() { + ObjectNode json = objectMapper.createObjectNode(); + json.putArray("elements"); + json.putArray("pageSizes"); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertTrue(result.get(0).isEmpty()); + } + + @Test + void testTransformSimpleParagraph() { + ObjectNode json = createVisualInfoDto(); + ArrayNode elements = (ArrayNode) json.get("elements"); + + addElement(elements, "PARAGRAPH", "text", "Hello World", 0, 100, 92, 100, 50); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(1, result.get(0).size()); + Assertions.assertTrue(result.get(0).get(0) instanceof SemanticParagraph); + + SemanticParagraph paragraph = (SemanticParagraph) result.get(0).get(0); + Assertions.assertEquals("Hello World", paragraph.getValue()); + } + + @Test + void testTransformHeading() { + ObjectNode json = createVisualInfoDto(); + ArrayNode elements = (ArrayNode) json.get("elements"); + + addElement(elements, "HEADING", "heading", "Introduction", 0, 100, 62, 200, 30); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(1, result.get(0).size()); + Assertions.assertTrue(result.get(0).get(0) instanceof SemanticHeading); + + SemanticHeading heading = (SemanticHeading) result.get(0).get(0); + Assertions.assertEquals("Introduction", heading.getValue()); + } + + @Test + void testFilterPageHeaderFooter() { + ObjectNode json = createVisualInfoDto(); + ArrayNode elements = (ArrayNode) json.get("elements"); + + // Add page header - should be filtered + addElement(elements, "PAGE_HEADER", "header", "Chapter 1", 0, 100, 22, 100, 20); + + // Add page footer - should be filtered + addElement(elements, "PAGE_FOOTER", "footer", "Page 1", 0, 100, 802, 50, 20); + + // Add regular text - should be kept + addElement(elements, "PARAGRAPH", "text", "Content", 0, 100, 400, 100, 50); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(1, result.get(0).size()); + Assertions.assertTrue(result.get(0).get(0) instanceof SemanticParagraph); + } + + @Test + void testTransformFormula() { + ObjectNode json = createVisualInfoDto(); + ArrayNode elements = (ArrayNode) json.get("elements"); + + addElement(elements, "FORMULA", "formula", "\\frac{x+y}{z}", 0, 200, 300, 150, 40); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(1, result.get(0).size()); + Assertions.assertTrue(result.get(0).get(0) instanceof SemanticFormula); + + SemanticFormula formula = (SemanticFormula) result.get(0).get(0); + Assertions.assertEquals("\\frac{x+y}{z}", formula.getLatex()); + } + + @Test + void testTransformFigure() { + ObjectNode json = createVisualInfoDto(); + ArrayNode elements = (ArrayNode) json.get("elements"); + + addElement(elements, "FIGURE", "figure", "", 0, 100, 200, 300, 200); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(1, result.get(0).size()); + Assertions.assertTrue(result.get(0).get(0) instanceof SemanticPicture); + } + + @Test + void testTransformSimpleTable() { + ObjectNode json = createVisualInfoDto(); + ArrayNode elements = (ArrayNode) json.get("elements"); + + // Add a 2x2 table with Hancom API structure: content.table.cells + ObjectNode tableElement = addTableElement(elements, 0, 50, 200, 300, 200); + ArrayNode cells = addTableContentStructure(tableElement); + + addTableCell(cells, "A1", 0, 0, 1, 1, 50, 200, 150, 100); + addTableCell(cells, "B1", 0, 1, 1, 1, 200, 200, 150, 100); + addTableCell(cells, "A2", 1, 0, 1, 1, 50, 300, 150, 100); + addTableCell(cells, "B2", 1, 1, 1, 1, 200, 300, 150, 100); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(1, result.get(0).size()); + Assertions.assertTrue(result.get(0).get(0) instanceof TableBorder); + + TableBorder table = (TableBorder) result.get(0).get(0); + Assertions.assertEquals(2, table.getNumberOfRows()); + Assertions.assertEquals(2, table.getNumberOfColumns()); + } + + @Test + void testTransformTableWithSpans() { + ObjectNode json = createVisualInfoDto(); + ArrayNode elements = (ArrayNode) json.get("elements"); + + // Add a table with colspan using Hancom API structure + ObjectNode tableElement = addTableElement(elements, 0, 50, 200, 300, 200); + ArrayNode cells = addTableContentStructure(tableElement); + + // First cell spans 2 columns + addTableCell(cells, "Header", 0, 0, 1, 2, 50, 200, 300, 100); + addTableCell(cells, "A2", 1, 0, 1, 1, 50, 300, 150, 100); + addTableCell(cells, "B2", 1, 1, 1, 1, 200, 300, 150, 100); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(1, result.get(0).size()); + Assertions.assertTrue(result.get(0).get(0) instanceof TableBorder); + + TableBorder table = (TableBorder) result.get(0).get(0); + Assertions.assertEquals(2, table.getNumberOfRows()); + Assertions.assertEquals(2, table.getNumberOfColumns()); + Assertions.assertEquals(2, table.getRow(0).getCell(0).getColSpan()); + } + + @Test + void testTransformTableWithSpansReusesSameCellInstanceAcrossCoveredSlots() { + ObjectNode json = createVisualInfoDto(); + ArrayNode elements = (ArrayNode) json.get("elements"); + + ObjectNode tableElement = addTableElement(elements, 0, 50, 200, 300, 200); + ArrayNode cells = addTableContentStructure(tableElement); + + addTableCell(cells, "Header", 0, 0, 1, 2, 50, 200, 300, 100); + addTableCell(cells, "A2", 1, 0, 1, 1, 50, 300, 150, 100); + addTableCell(cells, "B2", 1, 1, 1, 1, 200, 300, 150, 100); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + TableBorder table = (TableBorder) result.get(0).get(0); + Assertions.assertSame(table.getRow(0).getCell(0), table.getRow(0).getCell(1)); + Assertions.assertEquals(2, table.getRow(0).getCell(0).getColSpan()); + } + + @Test + void testTransformTableWithRowspanReusesSameCellInstanceAcrossRows() { + ObjectNode json = createVisualInfoDto(); + ArrayNode elements = (ArrayNode) json.get("elements"); + + ObjectNode tableElement = addTableElement(elements, 0, 50, 200, 300, 200); + ArrayNode cells = addTableContentStructure(tableElement); + + // Create a 2x2 table with cell at (0,0) spanning 2 rows + addTableCell(cells, "Spanning", 0, 0, 2, 1, 50, 200, 150, 200); + addTableCell(cells, "B1", 0, 1, 1, 1, 200, 200, 100, 100); + addTableCell(cells, "B2", 1, 1, 1, 1, 200, 100, 100, 100); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + TableBorder table = (TableBorder) result.get(0).get(0); + + // Verify that the spanning cell is reused across covered rows + TableBorderCell spanningCell = table.getRow(0).getCell(0); + Assertions.assertSame(spanningCell, table.getRow(1).getCell(0), + "Cell at (0,0) should be the same instance at (1,0)"); + + // Verify the rowspan value is correct + Assertions.assertEquals(2, spanningCell.getRowSpan(), + "Spanning cell should report rowspan=2"); + } + + @Test + void testTransformMultiplePages() { + ObjectNode json = createVisualInfoDto(); + ArrayNode elements = (ArrayNode) json.get("elements"); + ArrayNode pageSizes = (ArrayNode) json.get("pageSizes"); + + // Add second page size + ObjectNode page2Size = pageSizes.addObject(); + page2Size.put("width", 612.0); + page2Size.put("height", 842.0); + + // Text on page 1 (pageIndex = 0) + addElement(elements, "PARAGRAPH", "text", "Page 1 content", 0, 100, 100, 200, 50); + + // Text on page 2 (pageIndex = 1) + addElement(elements, "PARAGRAPH", "text", "Page 2 content", 1, 100, 100, 200, 50); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + pageHeights.put(2, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(2, result.size()); + Assertions.assertEquals(1, result.get(0).size()); + Assertions.assertEquals(1, result.get(1).size()); + + SemanticParagraph p1 = (SemanticParagraph) result.get(0).get(0); + SemanticParagraph p2 = (SemanticParagraph) result.get(1).get(0); + + Assertions.assertEquals("Page 1 content", p1.getValue()); + Assertions.assertEquals("Page 2 content", p2.getValue()); + } + + @Test + void testBoundingBoxTransformation() { + // Hancom uses TOPLEFT origin: (left, top, width, height) + // OpenDataLoader uses BOTTOMLEFT origin: (left, bottom, right, top) + // For page height 842: + // top=92, height=50 -> bottomY = 842 - 92 - 50 = 700, topY = 842 - 92 = 750 + ObjectNode json = createVisualInfoDto(); + ArrayNode elements = (ArrayNode) json.get("elements"); + + addElement(elements, "PARAGRAPH", "text", "Test", 0, 100, 92, 100, 50); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(1, result.get(0).size()); + + IObject obj = result.get(0).get(0); + Assertions.assertEquals(100.0, obj.getLeftX(), 0.01); + Assertions.assertEquals(200.0, obj.getRightX(), 0.01); // left + width + Assertions.assertEquals(700.0, obj.getBottomY(), 0.01); // pageHeight - top - height + Assertions.assertEquals(750.0, obj.getTopY(), 0.01); // pageHeight - top + } + + @Test + void testReadingOrderSort() { + ObjectNode json = createVisualInfoDto(); + ArrayNode elements = (ArrayNode) json.get("elements"); + + // Add texts in reverse order (bottom to top) + addElement(elements, "PARAGRAPH", "text", "Third", 0, 100, 700, 100, 50); // bottom + addElement(elements, "PARAGRAPH", "text", "First", 0, 100, 92, 100, 50); // top + addElement(elements, "PARAGRAPH", "text", "Second", 0, 100, 400, 100, 50); // middle + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(3, result.get(0).size()); + + // Should be sorted top to bottom (highest topY first) + SemanticParagraph p1 = (SemanticParagraph) result.get(0).get(0); + SemanticParagraph p2 = (SemanticParagraph) result.get(0).get(1); + SemanticParagraph p3 = (SemanticParagraph) result.get(0).get(2); + + Assertions.assertEquals("First", p1.getValue()); + Assertions.assertEquals("Second", p2.getValue()); + Assertions.assertEquals("Third", p3.getValue()); + } + + @Test + void testMixedContent() { + ObjectNode json = createVisualInfoDto(); + ArrayNode elements = (ArrayNode) json.get("elements"); + + // Add heading at top + addElement(elements, "HEADING", "heading", "Title", 0, 100, 50, 200, 30); + + // Add paragraph in middle + addElement(elements, "PARAGRAPH", "text", "Body text", 0, 100, 150, 300, 50); + + // Add table at bottom using Hancom API structure + ObjectNode tableElement = addTableElement(elements, 0, 100, 300, 200, 150); + ArrayNode cells = addTableContentStructure(tableElement); + addTableCell(cells, "Cell", 0, 0, 1, 1, 100, 300, 200, 150); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(3, result.get(0).size()); + + // Sorted by reading order: heading (top), paragraph, table (bottom) + Assertions.assertTrue(result.get(0).get(0) instanceof SemanticHeading); + Assertions.assertTrue(result.get(0).get(1) instanceof SemanticParagraph); + Assertions.assertTrue(result.get(0).get(2) instanceof TableBorder); + } + + @Test + void testTransformListItem() { + ObjectNode json = createVisualInfoDto(); + ArrayNode elements = (ArrayNode) json.get("elements"); + + addElement(elements, "LIST_ITEM", "list", "First item", 0, 100, 200, 200, 30); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(1, result.get(0).size()); + // LIST_ITEM is treated as SemanticParagraph + Assertions.assertTrue(result.get(0).get(0) instanceof SemanticParagraph); + } + + @Test + void testElementMissingBbox() { + ObjectNode json = createVisualInfoDto(); + ArrayNode elements = (ArrayNode) json.get("elements"); + + // Element without bbox - should be skipped + ObjectNode element = elements.addObject(); + element.put("id", "1"); + ObjectNode category = element.putObject("category"); + category.put("type", "PARAGRAPH"); + category.put("label", "text"); + ObjectNode content = element.putObject("content"); + content.put("text", "No position"); + element.put("pageIndex", 0); + // No bbox + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertTrue(result.get(0).isEmpty()); + } + + @Test + void testTransformPage() { + ObjectNode pageContent = createVisualInfoDto(); + ArrayNode elements = (ArrayNode) pageContent.get("elements"); + + addElement(elements, "PARAGRAPH", "text", "Single page content", 0, 100, 100, 200, 50); + + List result = transformer.transformPage(1, pageContent, 842.0); + + Assertions.assertEquals(1, result.size()); + Assertions.assertTrue(result.get(0) instanceof SemanticParagraph); + } + + @Test + void testTransformWithHtmlContent() { + ObjectNode json = createVisualInfoDto(); + ArrayNode elements = (ArrayNode) json.get("elements"); + + // Add element with HTML content + ObjectNode element = elements.addObject(); + element.put("id", "1"); + ObjectNode category = element.putObject("category"); + category.put("type", "PARAGRAPH"); + category.put("label", "text"); + ObjectNode content = element.putObject("content"); + content.put("text", "Plain text"); + content.put("html", "

    HTML content

    "); + content.put("markdown", "**Markdown** content"); + ObjectNode bbox = element.putObject("bbox"); + bbox.put("left", 100); + bbox.put("top", 100); + bbox.put("width", 200); + bbox.put("height", 50); + element.put("pageIndex", 0); + + HybridResponse response = new HybridResponse("", json, null); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + List> result = transformer.transform(response, pageHeights); + + Assertions.assertEquals(1, result.size()); + Assertions.assertEquals(1, result.get(0).size()); + // Should use text content for SemanticParagraph + SemanticParagraph para = (SemanticParagraph) result.get(0).get(0); + Assertions.assertEquals("Plain text", para.getValue()); + } + + // Helper methods + + private ObjectNode createVisualInfoDto() { + ObjectNode json = objectMapper.createObjectNode(); + json.put("runtime", 1000); + json.put("version", "1.0"); + + ObjectNode metadata = json.putObject("metadata"); + metadata.put("fileId", "test-file-id"); + metadata.put("fileName", "test.pdf"); + + json.putArray("elements"); + + ArrayNode pageSizes = json.putArray("pageSizes"); + ObjectNode page1Size = pageSizes.addObject(); + page1Size.put("width", 612.0); + page1Size.put("height", 842.0); + + return json; + } + + private void addElement(ArrayNode elements, String type, String label, String text, + int pageIndex, double left, double top, double width, double height) { + ObjectNode element = elements.addObject(); + element.put("id", String.valueOf(elements.size())); + + ObjectNode category = element.putObject("category"); + category.put("type", type); + category.put("label", label); + + ObjectNode content = element.putObject("content"); + content.put("text", text); + + ObjectNode bbox = element.putObject("bbox"); + bbox.put("left", left); + bbox.put("top", top); + bbox.put("width", width); + bbox.put("height", height); + + element.put("pageIndex", pageIndex); + } + + private ObjectNode addTableElement(ArrayNode elements, int pageIndex, + double left, double top, double width, double height) { + ObjectNode element = elements.addObject(); + element.put("id", String.valueOf(elements.size())); + + ObjectNode category = element.putObject("category"); + category.put("type", "TABLE"); + category.put("label", "table"); + + // Create content object (not array) - will be populated by addTableContentStructure + element.putObject("content"); + + ObjectNode bbox = element.putObject("bbox"); + bbox.put("left", left); + bbox.put("top", top); + bbox.put("width", width); + bbox.put("height", height); + + element.put("pageIndex", pageIndex); + + return element; + } + + /** + * Creates the Hancom API table content structure: content.table.cells + * Returns the cells ArrayNode for adding cells. + */ + private ArrayNode addTableContentStructure(ObjectNode tableElement) { + ObjectNode content = (ObjectNode) tableElement.get("content"); + content.put("text", ""); + content.put("html", "
    "); + ObjectNode tableNode = content.putObject("table"); + return tableNode.putArray("cells"); + } + + private void addTableCell(ArrayNode cells, String text, int row, int col, + int rowSpan, int colSpan, + double left, double top, double width, double height) { + ObjectNode cell = cells.addObject(); + cell.put("cellId", row + "-" + col); + cell.put("text", text); + + ArrayNode rowspanArr = cell.putArray("rowspan"); + for (int i = 0; i < rowSpan; i++) { + rowspanArr.add(row + i); + } + + ArrayNode colspanArr = cell.putArray("colspan"); + for (int i = 0; i < colSpan; i++) { + colspanArr.add(col + i); + } + + ObjectNode bbox = cell.putObject("bbox"); + bbox.put("left", left); + bbox.put("top", top); + bbox.put("width", width); + bbox.put("height", height); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/HealthCheckTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/HealthCheckTest.java new file mode 100644 index 0000000..d5b2e31 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/HealthCheckTest.java @@ -0,0 +1,248 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import okhttp3.OkHttpClient; +import mockwebserver3.MockResponse; +import mockwebserver3.MockWebServer; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.net.ServerSocket; + +import static org.junit.jupiter.api.Assertions.*; + +/** + * Tests for hybrid server health check (issue #225). + * + *

    Verifies that the client fails fast with a clear error message + * when the hybrid server is not available, instead of hanging for 30 seconds. + */ +class HealthCheckTest { + + private MockWebServer server; + + @BeforeEach + void setUp() throws IOException { + server = new MockWebServer(); + } + + @AfterEach + void tearDown() throws IOException { + if (server != null) { + server.close(); + } + } + + @Test + void testDoclingHealthCheckSucceeds() throws IOException { + server.start(); + server.enqueue(new MockResponse.Builder() + .body("{\"status\": \"ok\"}") + .addHeader("Content-Type", "application/json") + .build()); + + String baseUrl = stripTrailingSlash(server.url("").toString()); + DoclingFastServerClient client = new DoclingFastServerClient( + baseUrl, new OkHttpClient(), new ObjectMapper()); + + try { + assertDoesNotThrow(() -> client.checkAvailability()); + } finally { + client.shutdown(); + } + } + + @Test + void testDoclingHealthCheckFailsWhenServerDown() throws IOException { + // Find an unused port, then don't start any server on it + int unusedPort; + try (ServerSocket s = new ServerSocket(0)) { + unusedPort = s.getLocalPort(); + } + + String baseUrl = "http://localhost:" + unusedPort; + DoclingFastServerClient client = new DoclingFastServerClient( + baseUrl, new OkHttpClient(), new ObjectMapper()); + + try { + IOException exception = assertThrows(IOException.class, client::checkAvailability); + assertTrue(exception.getMessage().contains("not available"), + "Error message should indicate server is not available"); + assertTrue(exception.getMessage().contains(String.valueOf(unusedPort)), + "Error message should include the server URL"); + assertTrue(exception.getMessage().contains("opendataloader-pdf-hybrid"), + "Error message should suggest how to start the server"); + } finally { + client.shutdown(); + } + } + + @Test + void testDoclingHealthCheckFailsOnServerError() throws IOException { + server.start(); + server.enqueue(new MockResponse.Builder().code(503).build()); + + String baseUrl = stripTrailingSlash(server.url("").toString()); + DoclingFastServerClient client = new DoclingFastServerClient( + baseUrl, new OkHttpClient(), new ObjectMapper()); + + try { + IOException exception = assertThrows(IOException.class, client::checkAvailability); + assertTrue(exception.getMessage().contains("returned HTTP 503"), + "Error message should include the HTTP status code"); + assertTrue(exception.getMessage().contains("reachable but"), + "Error message should indicate server is reachable but unhealthy"); + } finally { + client.shutdown(); + } + } + + @Test + void testHancomHealthCheckSucceeds() throws IOException { + server.start(); + server.enqueue(new MockResponse.Builder().code(200).build()); + + String baseUrl = stripTrailingSlash(server.url("").toString()); + HancomClient client = new HancomClient( + baseUrl, new OkHttpClient(), new ObjectMapper()); + + try { + assertDoesNotThrow(() -> client.checkAvailability()); + } finally { + client.shutdown(); + } + } + + @Test + void testHancomHealthCheckFailsWhenServerDown() throws IOException { + int unusedPort; + try (ServerSocket s = new ServerSocket(0)) { + unusedPort = s.getLocalPort(); + } + + String baseUrl = "http://localhost:" + unusedPort; + HancomClient client = new HancomClient( + baseUrl, new OkHttpClient(), new ObjectMapper()); + + try { + IOException exception = assertThrows(IOException.class, client::checkAvailability); + assertTrue(exception.getMessage().contains("not available"), + "Error message should indicate server is not available"); + } finally { + client.shutdown(); + } + } + + @Test + void testHealthCheckTimesOutQuickly() throws IOException { + // Uses TEST-NET IP (RFC 5737) to trigger a connect timeout. + // Some CI environments may reject packets instantly instead of timing out, + // but the upper-bound assertion (< 10s) still holds in either case. + String baseUrl = "http://192.0.2.1:9999"; + DoclingFastServerClient client = new DoclingFastServerClient( + baseUrl, new OkHttpClient(), new ObjectMapper()); + + try { + long start = System.currentTimeMillis(); + assertThrows(IOException.class, client::checkAvailability); + long elapsed = System.currentTimeMillis() - start; + + // Should fail within ~5 seconds (3s timeout + overhead), not 30 seconds + assertTrue(elapsed < 10_000, + "Health check should timeout quickly, took " + elapsed + "ms"); + } finally { + client.shutdown(); + } + } + + // -- fetchHealth() on HancomAIClient ------------------------------------ + // + // checkAvailability() above is the fail-fast probe used before the run + // starts; fetchHealth() is the best-effort snapshot captured during the + // run for downstream tooling to attach to its evidence report. It must + // never throw — a null return is the documented signal that the backend + // doesn't expose /health or returned something unreadable. + + @Test + void testHancomFetchHealthReturnsParsedJsonOnSuccess() throws IOException { + server.start(); + server.enqueue(new MockResponse.Builder() + .body("{\"hardware\":{\"cpu\":\"Xeon\"},\"backend_version\":\"v1\"}") + .addHeader("Content-Type", "application/json") + .build()); + + String baseUrl = stripTrailingSlash(server.url("").toString()); + HancomAIClient client = new HancomAIClient( + baseUrl, new OkHttpClient(), new ObjectMapper()); + + JsonNode health = client.fetchHealth(); + assertNotNull(health, "expected parsed /health JSON"); + assertEquals("Xeon", health.path("hardware").path("cpu").asText()); + assertEquals("v1", health.path("backend_version").asText()); + } + + @Test + void testHancomFetchHealthReturnsNullOnNotFound() throws IOException { + server.start(); + server.enqueue(new MockResponse.Builder().code(404).build()); + + String baseUrl = stripTrailingSlash(server.url("").toString()); + HancomAIClient client = new HancomAIClient( + baseUrl, new OkHttpClient(), new ObjectMapper()); + + assertNull(client.fetchHealth(), + "non-2xx response should be treated as 'no health' (null), not throw"); + } + + @Test + void testHancomFetchHealthReturnsNullOnNonJsonBody() throws IOException { + server.start(); + server.enqueue(new MockResponse.Builder() + .body("not json at all") + .addHeader("Content-Type", "text/plain") + .build()); + + String baseUrl = stripTrailingSlash(server.url("").toString()); + HancomAIClient client = new HancomAIClient( + baseUrl, new OkHttpClient(), new ObjectMapper()); + + assertNull(client.fetchHealth(), + "unparseable body should be treated as 'no health' (null), not throw"); + } + + @Test + void testHancomFetchHealthReturnsNullWhenServerDown() throws IOException { + int unusedPort; + try (ServerSocket s = new ServerSocket(0)) { + unusedPort = s.getLocalPort(); + } + + HancomAIClient client = new HancomAIClient( + "http://localhost:" + unusedPort, new OkHttpClient(), new ObjectMapper()); + + assertNull(client.fetchHealth(), + "connection failure should be treated as 'no health' (null), not throw"); + } + + private static String stripTrailingSlash(String url) { + return url.endsWith("/") ? url.substring(0, url.length() - 1) : url; + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/HybridClientFactoryTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/HybridClientFactoryTest.java new file mode 100644 index 0000000..8e9d9dc --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/HybridClientFactoryTest.java @@ -0,0 +1,187 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; + +import static org.junit.jupiter.api.Assertions.*; + +/** + * Unit tests for HybridClientFactory. + */ +class HybridClientFactoryTest { + + @Test + void testCreateDoclingFastClient() { + HybridConfig config = new HybridConfig(); + HybridClient client = HybridClientFactory.create("docling-fast", config); + + assertNotNull(client); + assertInstanceOf(DoclingFastServerClient.class, client); + + // Cleanup + ((DoclingFastServerClient) client).shutdown(); + } + + @Test + void testCreateDoclingFastClientCaseInsensitive() { + HybridConfig config = new HybridConfig(); + + HybridClient client1 = HybridClientFactory.create("DOCLING-FAST", config); + assertInstanceOf(DoclingFastServerClient.class, client1); + ((DoclingFastServerClient) client1).shutdown(); + + HybridClient client2 = HybridClientFactory.create("Docling-Fast", config); + assertInstanceOf(DoclingFastServerClient.class, client2); + ((DoclingFastServerClient) client2).shutdown(); + } + + @Test + void testCreateHancomClient() { + HybridConfig config = new HybridConfig(); + HybridClient client = HybridClientFactory.create("hancom", config); + + assertNotNull(client); + assertInstanceOf(HancomClient.class, client); + + // Cleanup + ((HancomClient) client).shutdown(); + } + + @Test + void testCreateHancomClientCaseInsensitive() { + HybridConfig config = new HybridConfig(); + + HybridClient client1 = HybridClientFactory.create("HANCOM", config); + assertInstanceOf(HancomClient.class, client1); + ((HancomClient) client1).shutdown(); + + HybridClient client2 = HybridClientFactory.create("Hancom", config); + assertInstanceOf(HancomClient.class, client2); + ((HancomClient) client2).shutdown(); + } + + @Test + void testCreateAzureClientThrowsUnsupported() { + HybridConfig config = new HybridConfig(); + + UnsupportedOperationException exception = assertThrows( + UnsupportedOperationException.class, + () -> HybridClientFactory.create("azure", config) + ); + + assertTrue(exception.getMessage().contains("not yet implemented")); + } + + @Test + void testCreateGoogleClientThrowsUnsupported() { + HybridConfig config = new HybridConfig(); + + UnsupportedOperationException exception = assertThrows( + UnsupportedOperationException.class, + () -> HybridClientFactory.create("google", config) + ); + + assertTrue(exception.getMessage().contains("not yet implemented")); + } + + @ParameterizedTest + @ValueSource(strings = {"unknown", "invalid", "other", "pdf", "docling"}) + void testCreateUnknownBackendThrows(String backend) { + HybridConfig config = new HybridConfig(); + + IllegalArgumentException exception = assertThrows( + IllegalArgumentException.class, + () -> HybridClientFactory.create(backend, config) + ); + + assertTrue(exception.getMessage().contains("Unknown hybrid backend")); + assertTrue(exception.getMessage().contains(backend)); + } + + @Test + void testCreateNullBackendThrows() { + HybridConfig config = new HybridConfig(); + + assertThrows(IllegalArgumentException.class, + () -> HybridClientFactory.create(null, config)); + } + + @Test + void testCreateEmptyBackendThrows() { + HybridConfig config = new HybridConfig(); + + assertThrows(IllegalArgumentException.class, + () -> HybridClientFactory.create("", config)); + } + + @Test + void testIsSupportedDoclingFast() { + assertTrue(HybridClientFactory.isSupported("docling-fast")); + assertTrue(HybridClientFactory.isSupported("DOCLING-FAST")); + assertTrue(HybridClientFactory.isSupported("Docling-Fast")); + } + + @Test + void testIsSupportedHancom() { + assertTrue(HybridClientFactory.isSupported("hancom")); + assertTrue(HybridClientFactory.isSupported("HANCOM")); + assertTrue(HybridClientFactory.isSupported("Hancom")); + } + + @Test + void testIsSupportedUnsupportedBackends() { + assertFalse(HybridClientFactory.isSupported("docling")); + assertFalse(HybridClientFactory.isSupported("azure")); + assertFalse(HybridClientFactory.isSupported("google")); + assertFalse(HybridClientFactory.isSupported("unknown")); + } + + @Test + void testIsSupportedNullAndEmpty() { + assertFalse(HybridClientFactory.isSupported(null)); + assertFalse(HybridClientFactory.isSupported("")); + } + + @Test + void testGetSupportedBackends() { + String supported = HybridClientFactory.getSupportedBackends(); + + assertTrue(supported.contains("docling-fast")); + assertTrue(supported.contains("hancom")); + assertFalse(supported.contains("docling,")); + } + + @Test + void testGetAllKnownBackends() { + String allKnown = HybridClientFactory.getAllKnownBackends(); + + assertTrue(allKnown.contains("docling-fast")); + assertTrue(allKnown.contains("hancom")); + assertTrue(allKnown.contains("azure")); + assertTrue(allKnown.contains("google")); + } + + @Test + void testBackendConstants() { + assertEquals("docling-fast", HybridClientFactory.BACKEND_DOCLING_FAST); + assertEquals("hancom", HybridClientFactory.BACKEND_HANCOM); + assertEquals("azure", HybridClientFactory.BACKEND_AZURE); + assertEquals("google", HybridClientFactory.BACKEND_GOOGLE); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/MemoryPageImageCacheTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/MemoryPageImageCacheTest.java new file mode 100644 index 0000000..ac28a18 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/MemoryPageImageCacheTest.java @@ -0,0 +1,101 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import org.junit.jupiter.api.Test; + +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.util.concurrent.atomic.AtomicInteger; + +import static org.junit.jupiter.api.Assertions.*; + +class MemoryPageImageCacheTest { + + private static BufferedImage createTestImage() { + return new BufferedImage(10, 10, BufferedImage.TYPE_INT_RGB); + } + + @Test + void getOrFetch_storesAndReturns() throws IOException { + try (MemoryPageImageCache cache = new MemoryPageImageCache()) { + AtomicInteger fetchCount = new AtomicInteger(0); + BufferedImage img = cache.getOrFetch(0, idx -> { + fetchCount.incrementAndGet(); + return createTestImage(); + }); + + assertNotNull(img); + assertEquals(1, fetchCount.get()); + + // Second call should use cached value, not call fetcher + BufferedImage img2 = cache.getOrFetch(0, idx -> { + fetchCount.incrementAndGet(); + return createTestImage(); + }); + + assertNotNull(img2); + assertSame(img, img2, "Should return same cached instance"); + assertEquals(1, fetchCount.get(), "Fetcher should not be called again"); + } + } + + @Test + void evict_removesEntry() throws IOException { + try (MemoryPageImageCache cache = new MemoryPageImageCache()) { + AtomicInteger fetchCount = new AtomicInteger(0); + + cache.getOrFetch(0, idx -> { + fetchCount.incrementAndGet(); + return createTestImage(); + }); + assertEquals(1, fetchCount.get()); + + cache.evict(0); + + // After eviction, fetcher should be called again + cache.getOrFetch(0, idx -> { + fetchCount.incrementAndGet(); + return createTestImage(); + }); + assertEquals(2, fetchCount.get(), "Fetcher should be called again after eviction"); + } + } + + @Test + void evict_nonExistentPage_noError() throws IOException { + try (MemoryPageImageCache cache = new MemoryPageImageCache()) { + assertDoesNotThrow(() -> cache.evict(99)); + } + } + + @Test + void close_clearsAllEntries() throws IOException { + MemoryPageImageCache cache = new MemoryPageImageCache(); + AtomicInteger fetchCount = new AtomicInteger(0); + + cache.getOrFetch(0, idx -> { fetchCount.incrementAndGet(); return createTestImage(); }); + cache.getOrFetch(1, idx -> { fetchCount.incrementAndGet(); return createTestImage(); }); + assertEquals(2, fetchCount.get()); + + cache.close(); + + // After close, fetcher should be called again for both pages + cache.getOrFetch(0, idx -> { fetchCount.incrementAndGet(); return createTestImage(); }); + cache.getOrFetch(1, idx -> { fetchCount.incrementAndGet(); return createTestImage(); }); + assertEquals(4, fetchCount.get(), "Fetcher should be called again after close"); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/OcrStrategyTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/OcrStrategyTest.java new file mode 100644 index 0000000..0145b96 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/OcrStrategyTest.java @@ -0,0 +1,304 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.opendataloader.pdf.hybrid.HybridClient.HybridResponse; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; + +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +/** + * Tests for OCR strategy option (HybridConfig) and OCR word data exposure + * (HancomAISchemaTransformer.getOcrWordsByPage). + */ +public class OcrStrategyTest { + + @Nested + class HybridConfigOcrStrategy { + + @Test + void defaultOcrStrategy_isAuto() { + HybridConfig config = new HybridConfig(); + assertThat(config.getOcrStrategy()).isEqualTo(HybridConfig.OCR_AUTO); + } + + @Test + void setOcrStrategy_auto() { + HybridConfig config = new HybridConfig(); + config.setOcrStrategy(HybridConfig.OCR_AUTO); + assertThat(config.getOcrStrategy()).isEqualTo("auto"); + assertThat(config.isOcrAuto()).isTrue(); + assertThat(config.isOcrForce()).isFalse(); + } + + @Test + void setOcrStrategy_force() { + HybridConfig config = new HybridConfig(); + config.setOcrStrategy(HybridConfig.OCR_FORCE); + assertThat(config.getOcrStrategy()).isEqualTo("force"); + assertThat(config.isOcrForce()).isTrue(); + assertThat(config.isOcrAuto()).isFalse(); + } + + @Test + void setOcrStrategy_off() { + HybridConfig config = new HybridConfig(); + config.setOcrStrategy(HybridConfig.OCR_AUTO); + config.setOcrStrategy(HybridConfig.OCR_OFF); + assertThat(config.getOcrStrategy()).isEqualTo("off"); + assertThat(config.isOcrAuto()).isFalse(); + assertThat(config.isOcrForce()).isFalse(); + } + + @Test + void constants_haveExpectedValues() { + assertThat(HybridConfig.OCR_OFF).isEqualTo("off"); + assertThat(HybridConfig.OCR_AUTO).isEqualTo("auto"); + assertThat(HybridConfig.OCR_FORCE).isEqualTo("force"); + } + } + + @Nested + class TransformerOcrWordsByPage { + + private HancomAISchemaTransformer transformer; + private ObjectMapper objectMapper; + + @BeforeEach + void setUp() { + transformer = new HancomAISchemaTransformer(); + objectMapper = new ObjectMapper(); + StaticLayoutContainers.setCurrentContentId(1L); + } + + @org.junit.jupiter.api.AfterEach + void tearDown() { + // Reset shared static state so later tests don't inherit our content IDs. + StaticLayoutContainers.setCurrentContentId(1L); + } + + @Test + void ocrWordsByPage_populatedAfterTransform() { + // Create a page with two DLA+OCR paragraph objects + ObjectNode json = objectMapper.createObjectNode(); + ArrayNode dlaOcr = json.putArray("DOCUMENT_LAYOUT_WITH_OCR"); + ArrayNode pages = dlaOcr.addArray(); + ObjectNode page = pages.addObject(); + page.put("page_number", 0); + page.put("image_height", 3508); + ArrayNode objects = page.putArray("objects"); + + // Paragraph object with words array + ObjectNode obj = objects.addObject(); + obj.put("label", 2); + obj.put("ocrtext", "Hello World"); + ArrayNode bbox = obj.putArray("bbox"); + bbox.add(100); bbox.add(100); bbox.add(500); bbox.add(130); + ArrayNode words = obj.putArray("words"); + ObjectNode w1 = words.addObject(); + w1.put("text", "Hello"); + ArrayNode wb1 = w1.putArray("bbox"); + wb1.add(100); wb1.add(100); wb1.add(200); wb1.add(130); + ObjectNode w2 = words.addObject(); + w2.put("text", "World"); + ArrayNode wb2 = w2.putArray("bbox"); + wb2.add(250); wb2.add(100); wb2.add(500); wb2.add(130); + + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + HybridResponse response = new HybridResponse("", json, Collections.emptyMap()); + transformer.transform(response, pageHeights); + + Map> ocrWords = transformer.getOcrWordsByPage(); + assertThat(ocrWords).isNotNull(); + assertThat(ocrWords).containsKey(0); + assertThat(ocrWords.get(0)).hasSize(2); + assertThat(ocrWords.get(0).get(0).getText()).isEqualTo("Hello"); + assertThat(ocrWords.get(0).get(1).getText()).isEqualTo("World"); + } + + @Test + void ocrWordsByPage_fallbackToObjectLevel_whenNoWordsArray() { + // Object without words array → falls back to object-level ocrtext + bbox + ObjectNode json = objectMapper.createObjectNode(); + ArrayNode dlaOcr = json.putArray("DOCUMENT_LAYOUT_WITH_OCR"); + ArrayNode pages = dlaOcr.addArray(); + ObjectNode page = pages.addObject(); + page.put("page_number", 0); + page.put("image_height", 3508); + ArrayNode objects = page.putArray("objects"); + + ObjectNode obj = objects.addObject(); + obj.put("label", 2); + obj.put("ocrtext", "Whole paragraph"); + ArrayNode bbox = obj.putArray("bbox"); + bbox.add(100); bbox.add(100); bbox.add(500); bbox.add(130); + + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + HybridResponse response = new HybridResponse("", json, Collections.emptyMap()); + transformer.transform(response, pageHeights); + + Map> ocrWords = transformer.getOcrWordsByPage(); + assertThat(ocrWords).containsKey(0); + assertThat(ocrWords.get(0)).hasSize(1); + assertThat(ocrWords.get(0).get(0).getText()).isEqualTo("Whole paragraph"); + } + + @Test + void ocrWordsByPage_excludesFurnitureLabels() { + // Labels 14, 15, 17 should be excluded from OCR words + ObjectNode json = objectMapper.createObjectNode(); + ArrayNode dlaOcr = json.putArray("DOCUMENT_LAYOUT_WITH_OCR"); + ArrayNode pages = dlaOcr.addArray(); + ObjectNode page = pages.addObject(); + page.put("page_number", 0); + page.put("image_height", 3508); + ArrayNode objects = page.putArray("objects"); + + // Header (label 14) - should be excluded + ObjectNode header = objects.addObject(); + header.put("label", 14); + header.put("ocrtext", "Page Header"); + ArrayNode hbbox = header.putArray("bbox"); + hbbox.add(100); hbbox.add(10); hbbox.add(500); hbbox.add(30); + + // Actual content (label 2) - should be included + ObjectNode content = objects.addObject(); + content.put("label", 2); + content.put("ocrtext", "Content"); + ArrayNode cbbox = content.putArray("bbox"); + cbbox.add(100); cbbox.add(100); cbbox.add(500); cbbox.add(130); + + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + HybridResponse response = new HybridResponse("", json, Collections.emptyMap()); + transformer.transform(response, pageHeights); + + Map> ocrWords = transformer.getOcrWordsByPage(); + assertThat(ocrWords.get(0)).hasSize(1); + assertThat(ocrWords.get(0).get(0).getText()).isEqualTo("Content"); + } + + @Test + void ocrWordsByPage_clearedBetweenTransformCalls() { + // First transform + ObjectNode json1 = createSimpleJson("First"); + HybridResponse response1 = new HybridResponse("", json1, Collections.emptyMap()); + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + transformer.transform(response1, pageHeights); + assertThat(transformer.getOcrWordsByPage().get(0)).hasSize(1); + + // Second transform should replace previous data + ObjectNode json2 = createSimpleJson("Second"); + HybridResponse response2 = new HybridResponse("", json2, Collections.emptyMap()); + transformer.transform(response2, pageHeights); + assertThat(transformer.getOcrWordsByPage().get(0)).hasSize(1); + assertThat(transformer.getOcrWordsByPage().get(0).get(0).getText()).isEqualTo("Second"); + } + + @Test + void ocrWordsByPage_wordInfoHasBbox() { + ObjectNode json = objectMapper.createObjectNode(); + ArrayNode dlaOcr = json.putArray("DOCUMENT_LAYOUT_WITH_OCR"); + ArrayNode pages = dlaOcr.addArray(); + ObjectNode page = pages.addObject(); + page.put("page_number", 0); + page.put("image_height", 3508); + ArrayNode objects = page.putArray("objects"); + + ObjectNode obj = objects.addObject(); + obj.put("label", 2); + obj.put("ocrtext", "Test"); + ArrayNode bbox = obj.putArray("bbox"); + bbox.add(100); bbox.add(200); bbox.add(300); bbox.add(250); + + Map pageHeights = new HashMap<>(); + pageHeights.put(1, 842.0); + + HybridResponse response = new HybridResponse("", json, Collections.emptyMap()); + transformer.transform(response, pageHeights); + + OcrWordInfo word = transformer.getOcrWordsByPage().get(0).get(0); + assertThat(word.getBbox()).isNotNull(); + // Verify bbox was converted from pixel to PDF points + // left = 100 * 72/300 = 24.0, right = 300 * 72/300 = 72.0 + assertThat(word.getBbox().getLeftX()).isCloseTo(24.0, org.assertj.core.api.Assertions.within(0.01)); + assertThat(word.getBbox().getRightX()).isCloseTo(72.0, org.assertj.core.api.Assertions.within(0.01)); + } + + private ObjectNode createSimpleJson(String text) { + ObjectNode json = objectMapper.createObjectNode(); + ArrayNode dlaOcr = json.putArray("DOCUMENT_LAYOUT_WITH_OCR"); + ArrayNode pages = dlaOcr.addArray(); + ObjectNode page = pages.addObject(); + page.put("page_number", 0); + page.put("image_height", 3508); + ArrayNode objects = page.putArray("objects"); + ObjectNode obj = objects.addObject(); + obj.put("label", 2); + obj.put("ocrtext", text); + ArrayNode bbox = obj.putArray("bbox"); + bbox.add(100); bbox.add(100); bbox.add(500); bbox.add(130); + return json; + } + } + + @Nested + class HybridSchemaTransformerDefault { + + @Test + void defaultGetOcrWordsByPage_returnsEmptyMap() { + // The interface default should return empty map + HybridSchemaTransformer transformer = new HybridSchemaTransformer() { + @Override + public List> transform(HybridResponse response, Map pageHeights) { + return Collections.emptyList(); + } + + @Override + public List transformPage(int pageNumber, com.fasterxml.jackson.databind.JsonNode pageContent, double pageHeight) { + return Collections.emptyList(); + } + + @Override + public String getBackendType() { + return "test"; + } + }; + + assertThat(transformer.getOcrWordsByPage()).isEmpty(); + } + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/TextSimilarityTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/TextSimilarityTest.java new file mode 100644 index 0000000..d7122f6 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/TextSimilarityTest.java @@ -0,0 +1,84 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class TextSimilarityTest { + + @Test + void identical_strings_return_1() { + assertEquals(1.0, TextSimilarity.similarity("hello", "hello")); + } + + @Test + void completely_different_return_low() { + assertTrue(TextSimilarity.similarity("abc", "xyz") < 0.5); + } + + @Test + void corrupted_unicode_detected() { + assertFalse(TextSimilarity.trustStream(",QWURGXFWLRQ", "Introduction", 0.5)); + } + + @Test + void similar_strings_trust_stream() { + assertTrue(TextSimilarity.trustStream("Introduction to Biology", "Introduction to Biology", 0.5)); + } + + @Test + void minor_ocr_error_still_trusts_stream() { + assertTrue(TextSimilarity.trustStream("Introduction", "Introductlon", 0.5)); + } + + @Test + void null_stream_returns_false() { + assertFalse(TextSimilarity.trustStream(null, "text", 0.5)); + } + + @Test + void null_ocr_returns_true() { + assertTrue(TextSimilarity.trustStream("text", null, 0.5)); + } + + @Test + void empty_stream_returns_false() { + assertFalse(TextSimilarity.trustStream("", "text", 0.5)); + } + + @Test + void both_null_returns_zero_similarity() { + assertEquals(0.0, TextSimilarity.similarity(null, null)); + } + + @Test + void both_empty_strings_are_identical() { + assertEquals(1.0, TextSimilarity.similarity("", "")); + } + + @Test + void one_empty_one_nonempty_returns_zero() { + assertEquals(0.0, TextSimilarity.similarity("", "hello")); + assertEquals(0.0, TextSimilarity.similarity("hello", "")); + } + + @Test + void default_threshold_is_0_5() { + assertEquals(0.5, TextSimilarity.DEFAULT_THRESHOLD); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/TriageLoggerTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/TriageLoggerTest.java new file mode 100644 index 0000000..6d2f436 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/TriageLoggerTest.java @@ -0,0 +1,257 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; +import org.opendataloader.pdf.hybrid.TriageProcessor.TriageDecision; +import org.opendataloader.pdf.hybrid.TriageProcessor.TriageResult; +import org.opendataloader.pdf.hybrid.TriageProcessor.TriageSignals; + +import java.io.IOException; +import java.io.StringWriter; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.HashMap; +import java.util.Map; + +/** + * Unit tests for TriageLogger. + */ +public class TriageLoggerTest { + + private TriageLogger triageLogger; + private ObjectMapper objectMapper; + + @BeforeEach + public void setUp() { + triageLogger = new TriageLogger(); + objectMapper = new ObjectMapper(); + } + + @Test + public void testCreateTriageJsonWithEmptyResults() throws IOException { + Map triageResults = new HashMap<>(); + + ObjectNode json = triageLogger.createTriageJson("test.pdf", "docling", triageResults); + + Assertions.assertEquals("test.pdf", json.get("document").asText()); + Assertions.assertEquals("docling", json.get("hybrid").asText()); + Assertions.assertEquals(0, json.get("triage").size()); + Assertions.assertEquals(0, json.get("summary").get("totalPages").asInt()); + Assertions.assertEquals(0, json.get("summary").get("javaPages").asInt()); + Assertions.assertEquals(0, json.get("summary").get("backendPages").asInt()); + } + + @Test + public void testCreateTriageJsonWithResults() throws IOException { + Map triageResults = new HashMap<>(); + TriageSignals signals1 = new TriageSignals(2, 45, 0.04, 0, false, false); + TriageSignals signals2 = new TriageSignals(28, 32, 0.875, 4, true, false); + + triageResults.put(0, TriageResult.java(0, 0.95, signals1)); + triageResults.put(1, TriageResult.backend(1, 0.82, signals2)); + + ObjectNode json = triageLogger.createTriageJson("example.pdf", "docling", triageResults); + + Assertions.assertEquals("example.pdf", json.get("document").asText()); + Assertions.assertEquals("docling", json.get("hybrid").asText()); + + // Check triage array + JsonNode triageArray = json.get("triage"); + Assertions.assertEquals(2, triageArray.size()); + + // Check first page (page 1, 1-indexed) + JsonNode page1 = triageArray.get(0); + Assertions.assertEquals(1, page1.get("page").asInt()); // 1-indexed + Assertions.assertEquals("JAVA", page1.get("decision").asText()); + Assertions.assertEquals(0.95, page1.get("confidence").asDouble(), 0.001); + + // Check signals for page 1 + JsonNode signals1Json = page1.get("signals"); + Assertions.assertEquals(2, signals1Json.get("lineChunkCount").asInt()); + Assertions.assertEquals(45, signals1Json.get("textChunkCount").asInt()); + Assertions.assertEquals(0.04, signals1Json.get("lineToTextRatio").asDouble(), 0.001); + Assertions.assertEquals(0, signals1Json.get("alignedLineGroups").asInt()); + Assertions.assertFalse(signals1Json.get("hasTableBorder").asBoolean()); + Assertions.assertFalse(signals1Json.get("hasSuspiciousPattern").asBoolean()); + + // Check second page (page 2, 1-indexed) + JsonNode page2 = triageArray.get(1); + Assertions.assertEquals(2, page2.get("page").asInt()); // 1-indexed + Assertions.assertEquals("BACKEND", page2.get("decision").asText()); + Assertions.assertEquals(0.82, page2.get("confidence").asDouble(), 0.001); + + // Check signals for page 2 + JsonNode signals2Json = page2.get("signals"); + Assertions.assertEquals(28, signals2Json.get("lineChunkCount").asInt()); + Assertions.assertEquals(32, signals2Json.get("textChunkCount").asInt()); + Assertions.assertEquals(0.875, signals2Json.get("lineToTextRatio").asDouble(), 0.001); + Assertions.assertEquals(4, signals2Json.get("alignedLineGroups").asInt()); + Assertions.assertTrue(signals2Json.get("hasTableBorder").asBoolean()); + Assertions.assertFalse(signals2Json.get("hasSuspiciousPattern").asBoolean()); + + // Check summary + JsonNode summary = json.get("summary"); + Assertions.assertEquals(2, summary.get("totalPages").asInt()); + Assertions.assertEquals(1, summary.get("javaPages").asInt()); + Assertions.assertEquals(1, summary.get("backendPages").asInt()); + } + + @Test + public void testToJsonString() throws IOException { + Map triageResults = new HashMap<>(); + TriageSignals signals = TriageSignals.empty(); + triageResults.put(0, TriageResult.java(0, 0.9, signals)); + + String jsonString = triageLogger.toJsonString("test.pdf", "docling", triageResults); + + // Verify it's valid JSON + JsonNode json = objectMapper.readTree(jsonString); + Assertions.assertEquals("test.pdf", json.get("document").asText()); + Assertions.assertEquals("docling", json.get("hybrid").asText()); + } + + @Test + public void testLogToWriter() throws IOException { + Map triageResults = new HashMap<>(); + TriageSignals signals = new TriageSignals(5, 20, 0.2, 1, false, true); + triageResults.put(0, TriageResult.backend(0, 0.85, signals)); + + StringWriter writer = new StringWriter(); + triageLogger.logToWriter(writer, "output.pdf", "docling", triageResults); + + String jsonString = writer.toString(); + JsonNode json = objectMapper.readTree(jsonString); + + Assertions.assertEquals("output.pdf", json.get("document").asText()); + Assertions.assertEquals(1, json.get("triage").size()); + Assertions.assertTrue(json.get("triage").get(0).get("signals").get("hasSuspiciousPattern").asBoolean()); + } + + @Test + public void testLogToFile(@TempDir Path tempDir) throws IOException { + Map triageResults = new HashMap<>(); + TriageSignals signals1 = TriageSignals.empty(); + TriageSignals signals2 = new TriageSignals(10, 10, 0.5, 3, true, false); + TriageSignals signals3 = TriageSignals.empty(); + + triageResults.put(0, TriageResult.java(0, 0.9, signals1)); + triageResults.put(1, TriageResult.backend(1, 0.95, signals2)); + triageResults.put(2, TriageResult.java(2, 0.88, signals3)); + + triageLogger.logToFile(tempDir, "document.pdf", "docling", triageResults); + + // Verify file was created + Path outputPath = tempDir.resolve(TriageLogger.DEFAULT_FILENAME); + Assertions.assertTrue(Files.exists(outputPath)); + + // Verify content + String content = Files.readString(outputPath); + JsonNode json = objectMapper.readTree(content); + + Assertions.assertEquals("document.pdf", json.get("document").asText()); + Assertions.assertEquals("docling", json.get("hybrid").asText()); + Assertions.assertEquals(3, json.get("triage").size()); + Assertions.assertEquals(3, json.get("summary").get("totalPages").asInt()); + Assertions.assertEquals(2, json.get("summary").get("javaPages").asInt()); + Assertions.assertEquals(1, json.get("summary").get("backendPages").asInt()); + } + + @Test + public void testPageOrdering() throws IOException { + Map triageResults = new HashMap<>(); + TriageSignals signals = TriageSignals.empty(); + + // Add pages in non-sequential order + triageResults.put(4, TriageResult.java(4, 0.9, signals)); + triageResults.put(0, TriageResult.java(0, 0.9, signals)); + triageResults.put(2, TriageResult.backend(2, 0.8, signals)); + triageResults.put(1, TriageResult.java(1, 0.9, signals)); + triageResults.put(3, TriageResult.backend(3, 0.85, signals)); + + ObjectNode json = triageLogger.createTriageJson("test.pdf", "docling", triageResults); + JsonNode triageArray = json.get("triage"); + + // Verify pages are in ascending order (1-indexed) + Assertions.assertEquals(1, triageArray.get(0).get("page").asInt()); + Assertions.assertEquals(2, triageArray.get(1).get("page").asInt()); + Assertions.assertEquals(3, triageArray.get(2).get("page").asInt()); + Assertions.assertEquals(4, triageArray.get(3).get("page").asInt()); + Assertions.assertEquals(5, triageArray.get(4).get("page").asInt()); + } + + @Test + public void testDifferentHybridBackends() throws IOException { + Map triageResults = new HashMap<>(); + TriageSignals signals = TriageSignals.empty(); + triageResults.put(0, TriageResult.java(0, 0.9, signals)); + + // Test with different backends + ObjectNode doclingJson = triageLogger.createTriageJson("test.pdf", "docling", triageResults); + Assertions.assertEquals("docling", doclingJson.get("hybrid").asText()); + + ObjectNode hancomJson = triageLogger.createTriageJson("test.pdf", "hancom", triageResults); + Assertions.assertEquals("hancom", hancomJson.get("hybrid").asText()); + + ObjectNode azureJson = triageLogger.createTriageJson("test.pdf", "azure", triageResults); + Assertions.assertEquals("azure", azureJson.get("hybrid").asText()); + } + + @Test + public void testSummaryWithAllJavaPages() throws IOException { + Map triageResults = new HashMap<>(); + TriageSignals signals = TriageSignals.empty(); + + for (int i = 0; i < 5; i++) { + triageResults.put(i, TriageResult.java(i, 0.9, signals)); + } + + ObjectNode json = triageLogger.createTriageJson("test.pdf", "docling", triageResults); + JsonNode summary = json.get("summary"); + + Assertions.assertEquals(5, summary.get("totalPages").asInt()); + Assertions.assertEquals(5, summary.get("javaPages").asInt()); + Assertions.assertEquals(0, summary.get("backendPages").asInt()); + } + + @Test + public void testSummaryWithAllBackendPages() throws IOException { + Map triageResults = new HashMap<>(); + TriageSignals signals = new TriageSignals(10, 5, 0.67, 4, true, true); + + for (int i = 0; i < 3; i++) { + triageResults.put(i, TriageResult.backend(i, 0.9, signals)); + } + + ObjectNode json = triageLogger.createTriageJson("test.pdf", "docling", triageResults); + JsonNode summary = json.get("summary"); + + Assertions.assertEquals(3, summary.get("totalPages").asInt()); + Assertions.assertEquals(0, summary.get("javaPages").asInt()); + Assertions.assertEquals(3, summary.get("backendPages").asInt()); + } + + @Test + public void testDefaultFilename() { + Assertions.assertEquals("triage.json", TriageLogger.DEFAULT_FILENAME); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/TriageProcessorIntegrationTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/TriageProcessorIntegrationTest.java new file mode 100644 index 0000000..e76377e --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/TriageProcessorIntegrationTest.java @@ -0,0 +1,234 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.opendataloader.pdf.api.Config; +import org.opendataloader.pdf.hybrid.TriageProcessor.TriageDecision; +import org.opendataloader.pdf.hybrid.TriageProcessor.TriageResult; +import org.opendataloader.pdf.processors.ContentFilterProcessor; +import org.opendataloader.pdf.processors.DocumentProcessor; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +/** + * Integration test for TriageProcessor accuracy using real benchmark PDFs. + * + *

    This test loads actual PDF files and measures triage accuracy + * against known ground truth (documents with tables). + */ +public class TriageProcessorIntegrationTest { + + private static final Path BENCHMARK_PDF_DIR = Paths.get("../../tests/benchmark/pdfs"); + + /** + * Documents that have tables (from TriageProcessorBenchmarkTest). + */ + private static final Set DOCUMENTS_WITH_TABLES = new HashSet<>(Arrays.asList( + "01030000000045", "01030000000046", "01030000000047", "01030000000051", + "01030000000052", "01030000000053", "01030000000064", "01030000000078", + "01030000000081", "01030000000082", "01030000000083", "01030000000084", + "01030000000088", "01030000000089", "01030000000090", "01030000000110", + "01030000000116", "01030000000117", "01030000000119", "01030000000120", + "01030000000121", "01030000000122", "01030000000127", "01030000000128", + "01030000000130", "01030000000132", "01030000000146", "01030000000147", + "01030000000149", "01030000000150", "01030000000165", "01030000000166", + "01030000000170", "01030000000178", "01030000000180", "01030000000182", + "01030000000187", "01030000000188", "01030000000189", "01030000000190", + "01030000000197", "01030000000200" + )); + + private static boolean benchmarkPdfsAvailable = false; + + /** + * Minimum file size to consider a PDF valid (not a Git LFS stub). + * Git LFS stubs are typically small text files (~130 bytes). + */ + private static final long MIN_PDF_SIZE = 1024; + + @BeforeAll + static void checkBenchmarkDir() { + if (!Files.exists(BENCHMARK_PDF_DIR) || !Files.isDirectory(BENCHMARK_PDF_DIR)) { + System.out.println("Benchmark PDF directory not found: " + BENCHMARK_PDF_DIR.toAbsolutePath()); + System.out.println("Skipping integration tests. Run 'git lfs pull' to fetch test PDFs."); + return; + } + + // Check if PDFs are actual files (not Git LFS stubs) + File samplePdf = BENCHMARK_PDF_DIR.resolve("01030000000001.pdf").toFile(); + if (samplePdf.exists() && samplePdf.length() > MIN_PDF_SIZE) { + benchmarkPdfsAvailable = true; + } else { + System.out.println("Benchmark PDFs appear to be Git LFS stubs (size: " + + (samplePdf.exists() ? samplePdf.length() : 0) + " bytes)"); + System.out.println("Skipping integration tests. Run 'git lfs pull' to fetch actual PDFs."); + } + } + + @Test + public void testTriageAccuracyOnBenchmarkPDFs() throws IOException { + if (!benchmarkPdfsAvailable) { + System.out.println("Skipping test: benchmark PDFs not available"); + return; + } + + File[] pdfFiles = BENCHMARK_PDF_DIR.toFile().listFiles((dir, name) -> name.endsWith(".pdf")); + if (pdfFiles == null || pdfFiles.length == 0) { + System.out.println("No PDF files found in benchmark directory"); + return; + } + + int tp = 0, fp = 0, fn = 0, tn = 0; + List falseNegatives = new ArrayList<>(); + List falsePositives = new ArrayList<>(); + + for (File pdfFile : pdfFiles) { + String docId = pdfFile.getName().replace(".pdf", ""); + boolean hasTable = DOCUMENTS_WITH_TABLES.contains(docId); + + try { + TriageDecision decision = triageDocument(pdfFile); + boolean predictedTable = (decision == TriageDecision.BACKEND); + + if (hasTable && predictedTable) { + tp++; + } else if (!hasTable && predictedTable) { + fp++; + falsePositives.add(docId); + } else if (hasTable && !predictedTable) { + fn++; + falseNegatives.add(docId); + } else { + tn++; + } + } catch (Exception e) { + System.err.println("Error processing " + docId + ": " + e.getMessage()); + } + } + + // Calculate metrics + double precision = tp + fp > 0 ? (double) tp / (tp + fp) : 0; + double recall = tp + fn > 0 ? (double) tp / (tp + fn) : 0; + double f1 = precision + recall > 0 ? 2 * precision * recall / (precision + recall) : 0; + double accuracy = (double) (tp + tn) / (tp + tn + fp + fn); + + // Print results + System.out.println("\n========== Triage Accuracy Results =========="); + System.out.println("Total documents: " + (tp + tn + fp + fn)); + System.out.println("Documents with tables: " + DOCUMENTS_WITH_TABLES.size()); + System.out.println(); + System.out.println("Confusion Matrix:"); + System.out.println(" TP (correct BACKEND): " + tp); + System.out.println(" TN (correct JAVA): " + tn); + System.out.println(" FP (wrong BACKEND): " + fp); + System.out.println(" FN (wrong JAVA): " + fn); + System.out.println(); + System.out.printf("Precision: %.2f%% (%d/%d)%n", precision * 100, tp, tp + fp); + System.out.printf("Recall: %.2f%% (%d/%d)%n", recall * 100, tp, tp + fn); + System.out.printf("F1 Score: %.2f%%%n", f1 * 100); + System.out.printf("Accuracy: %.2f%%%n", accuracy * 100); + System.out.println(); + + if (!falseNegatives.isEmpty()) { + System.out.println("False Negatives (missed tables): " + falseNegatives); + } + if (!falsePositives.isEmpty()) { + System.out.println("False Positives (wrong detection): " + falsePositives); + } + System.out.println("==============================================\n"); + + // Assertions - prioritize recall (minimize FN) over precision + // False negatives are worse than false positives because: + // - FN: Tables are missed and processed incorrectly by Java path + // - FP: Backend processes correctly, just slightly slower + Assertions.assertTrue(recall >= 0.90, "Recall should be at least 90%, was: " + recall); + // Precision threshold is lower because FP is acceptable (backend handles it) + Assertions.assertTrue(precision >= 0.20, "Precision should be at least 20%, was: " + precision); + } + + /** + * Triage a single document and return the decision. + * Returns BACKEND if any page is routed to BACKEND. + */ + private TriageDecision triageDocument(File pdfFile) throws IOException { + String pdfPath = pdfFile.getAbsolutePath(); + Config config = new Config(); + + // Use DocumentProcessor.preprocessing to properly initialize + DocumentProcessor.preprocessing(pdfPath, config); + + int numPages = StaticContainers.getDocument().getNumberOfPages(); + + for (int pageNum = 0; pageNum < numPages; pageNum++) { + // Filter page contents + List filteredContents = ContentFilterProcessor.getFilteredContents( + pdfPath, + StaticContainers.getDocument().getArtifacts(pageNum), + pageNum, + config + ); + + // Triage the page + TriageResult result = TriageProcessor.classifyPage( + filteredContents, pageNum, new HybridConfig() + ); + + // If any page is BACKEND, the whole document needs BACKEND + if (result.getDecision() == TriageDecision.BACKEND) { + return TriageDecision.BACKEND; + } + } + + return TriageDecision.JAVA; + } + + @Test + public void testSingleDocumentTriage() throws IOException { + if (!benchmarkPdfsAvailable) { + return; + } + + // Test a known table document + File tableDoc = BENCHMARK_PDF_DIR.resolve("01030000000045.pdf").toFile(); + if (tableDoc.exists()) { + TriageDecision decision = triageDocument(tableDoc); + // This document has a table, so it should ideally be BACKEND + Assertions.assertEquals(TriageDecision.BACKEND, decision, + "Document 01030000000045 has a table and should be routed to BACKEND"); + } + + // Test a known non-table document + File nonTableDoc = BENCHMARK_PDF_DIR.resolve("01030000000001.pdf").toFile(); + if (nonTableDoc.exists()) { + TriageDecision decision = triageDocument(nonTableDoc); + Assertions.assertEquals(TriageDecision.JAVA, decision, + "Document 01030000000001 has no table and should be routed to JAVA"); + } + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/TriageProcessorTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/TriageProcessorTest.java new file mode 100644 index 0000000..dcd2ee6 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/hybrid/TriageProcessorTest.java @@ -0,0 +1,396 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.hybrid; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.opendataloader.pdf.hybrid.TriageProcessor.TriageDecision; +import org.opendataloader.pdf.hybrid.TriageProcessor.TriageResult; +import org.opendataloader.pdf.hybrid.TriageProcessor.TriageSignals; +import org.opendataloader.pdf.hybrid.TriageProcessor.TriageThresholds; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.content.LineChunk; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.entities.tables.TableBordersCollection; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderRow; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.SortedSet; +import java.util.TreeSet; + +/** + * Unit tests for TriageProcessor. + */ +public class TriageProcessorTest { + + @BeforeEach + public void setUp() { + StaticContainers.setIsIgnoreCharactersWithoutUnicode(false); + StaticContainers.setIsDataLoader(true); + StaticLayoutContainers.clearContainers(); + StaticLayoutContainers.setCurrentContentId(1L); + StaticContainers.setTableBordersCollection(new TableBordersCollection()); + } + + @Test + public void testEmptyContentReturnsJava() { + List contents = new ArrayList<>(); + TriageResult result = TriageProcessor.classifyPage(contents, 0, new HybridConfig()); + + Assertions.assertEquals(TriageDecision.JAVA, result.getDecision()); + Assertions.assertEquals(0, result.getPageNumber()); + Assertions.assertTrue(result.getConfidence() > 0.5); + Assertions.assertEquals(0, result.getSignals().getLineChunkCount()); + Assertions.assertEquals(0, result.getSignals().getTextChunkCount()); + } + + @Test + public void testNullContentReturnsJava() { + TriageResult result = TriageProcessor.classifyPage(null, 0, new HybridConfig()); + + Assertions.assertEquals(TriageDecision.JAVA, result.getDecision()); + Assertions.assertEquals(0, result.getSignals().getLineChunkCount()); + } + + @Test + public void testSimpleTextReturnsJava() { + List contents = new ArrayList<>(); + // Add simple text chunks in normal reading order + contents.add(createTextChunk(10, 100, 200, 120, "Hello")); + contents.add(createTextChunk(10, 80, 200, 100, "World")); + + TriageResult result = TriageProcessor.classifyPage(contents, 0, new HybridConfig()); + + Assertions.assertEquals(TriageDecision.JAVA, result.getDecision()); + Assertions.assertEquals(2, result.getSignals().getTextChunkCount()); + Assertions.assertEquals(0, result.getSignals().getLineChunkCount()); + Assertions.assertFalse(result.getSignals().hasTableBorder()); + } + + @Test + public void testHighLineRatioReturnsBackend() { + List contents = new ArrayList<>(); + // Add one text chunk + contents.add(createTextChunk(10, 100, 200, 120, "Header")); + // Add multiple line chunks (> 30% of total) + contents.add(createLineChunk(10, 90, 200, 90)); + contents.add(createLineChunk(10, 80, 200, 80)); + contents.add(createLineChunk(10, 70, 200, 70)); + + TriageResult result = TriageProcessor.classifyPage(contents, 0, new HybridConfig()); + + Assertions.assertEquals(TriageDecision.BACKEND, result.getDecision()); + Assertions.assertEquals(3, result.getSignals().getLineChunkCount()); + Assertions.assertEquals(1, result.getSignals().getTextChunkCount()); + Assertions.assertTrue(result.getSignals().getLineToTextRatio() > 0.3); + } + + @Test + public void testTableBorderPresenceReturnsBackend() { + // Set up TableBordersCollection with a table on page 0 + TableBordersCollection collection = new TableBordersCollection(); + StaticContainers.setTableBordersCollection(collection); + + // Create a 2x2 table border + TableBorder tableBorder = new TableBorder(2, 2); + tableBorder.setRecognizedStructureId(1L); + tableBorder.setBoundingBox(new BoundingBox(0, 10.0, 10.0, 100.0, 100.0)); + setupTableBorderRows(tableBorder); + + SortedSet tables = new TreeSet<>(new TableBorder.TableBordersComparator()); + tables.add(tableBorder); + collection.getTableBorders().add(tables); + + List contents = new ArrayList<>(); + contents.add(createTextChunk(20, 20, 50, 40, "Cell")); + + TriageResult result = TriageProcessor.classifyPage(contents, 0, new HybridConfig()); + + Assertions.assertEquals(TriageDecision.BACKEND, result.getDecision()); + Assertions.assertTrue(result.getSignals().hasTableBorder()); + Assertions.assertEquals(1.0, result.getConfidence()); + } + + @Test + public void testSuspiciousPatternDetectedButDisabled() { + // Note: SuspiciousPattern signal is disabled (Experiment 003, 2026-01-03) + // Signal is still detected but doesn't trigger BACKEND routing + List contents = new ArrayList<>(); + // Add text chunks on the same baseline with large gap (table-like pattern) + contents.add(createTextChunk(10, 100, 50, 120, "Col1")); + contents.add(createTextChunk(200, 100, 250, 120, "Col2")); // Large horizontal gap + + TriageResult result = TriageProcessor.classifyPage(contents, 0, new HybridConfig()); + + // Signal is detected but routing to JAVA (signal disabled) + Assertions.assertEquals(TriageDecision.JAVA, result.getDecision()); + Assertions.assertTrue(result.getSignals().hasSuspiciousPattern()); + } + + @Test + public void testAlignedLineGroupsDetectedButDisabled() { + // Note: AlignedLineGroups signal is disabled (Experiment 004D, 2026-01-03) + // Signal is still detected but doesn't trigger BACKEND routing + List contents = new ArrayList<>(); + TriageThresholds thresholds = new TriageThresholds(); + thresholds.setAlignedLineGroupsThreshold(3); + thresholds.setGridGapMultiplier(3.0); + + // Create three rows of aligned text with gaps (table-like structure) + // Row 1 + contents.add(createTextChunk(10, 100, 50, 120, "A1")); + contents.add(createTextChunk(200, 100, 250, 120, "B1")); + + // Row 2 + contents.add(createTextChunk(10, 70, 50, 90, "A2")); + contents.add(createTextChunk(200, 70, 250, 90, "B2")); + + // Row 3 + contents.add(createTextChunk(10, 40, 50, 60, "A3")); + contents.add(createTextChunk(200, 40, 250, 60, "B3")); + + TriageResult result = TriageProcessor.classifyPage(contents, 0, thresholds); + + // Signal is detected but routing to JAVA (signal disabled) + Assertions.assertEquals(TriageDecision.JAVA, result.getDecision()); + Assertions.assertTrue(result.getSignals().getAlignedLineGroups() >= 3); + } + + @Test + public void testTriageAllPagesWithMap() { + Map> pageContents = new HashMap<>(); + + // Page 0: Simple text + List page0 = new ArrayList<>(); + page0.add(createTextChunk(10, 100, 200, 120, "Simple")); + pageContents.put(0, page0); + + // Page 1: High line ratio (should route to backend) + List page1 = new ArrayList<>(); + page1.add(createTextChunk(10, 100, 200, 120, "Header")); + page1.add(createLineChunk(10, 90, 200, 90)); + page1.add(createLineChunk(10, 80, 200, 80)); + page1.add(createLineChunk(10, 70, 200, 70)); + pageContents.put(1, page1); + + Map results = TriageProcessor.triageAllPages(pageContents, new HybridConfig()); + + Assertions.assertEquals(2, results.size()); + Assertions.assertEquals(TriageDecision.JAVA, results.get(0).getDecision()); + Assertions.assertEquals(TriageDecision.BACKEND, results.get(1).getDecision()); + } + + @Test + public void testTriageAllPagesWithList() { + List> pagesContents = new ArrayList<>(); + + // Page 0: Simple text + List page0 = new ArrayList<>(); + page0.add(createTextChunk(10, 100, 200, 120, "Simple")); + pagesContents.add(page0); + + // Page 1: Empty (should route to Java) + pagesContents.add(new ArrayList<>()); + + Map results = TriageProcessor.triageAllPages(pagesContents, new HybridConfig()); + + Assertions.assertEquals(2, results.size()); + Assertions.assertEquals(TriageDecision.JAVA, results.get(0).getDecision()); + Assertions.assertEquals(TriageDecision.JAVA, results.get(1).getDecision()); + } + + @Test + public void testCustomThresholds() { + List contents = new ArrayList<>(); + // Add line chunks that would trigger BACKEND with default threshold (0.3) + // but not with raised threshold (0.5) + contents.add(createTextChunk(10, 100, 200, 120, "Text1")); + contents.add(createTextChunk(10, 80, 200, 100, "Text2")); + contents.add(createLineChunk(10, 70, 200, 70)); + + // With default threshold (0.3), line ratio is 1/3 = 0.33 > 0.3 -> BACKEND + TriageThresholds defaultThresholds = new TriageThresholds(); + TriageResult result1 = TriageProcessor.classifyPage(contents, 0, defaultThresholds); + Assertions.assertEquals(TriageDecision.BACKEND, result1.getDecision()); + + // With raised threshold (0.5), line ratio is 0.33 < 0.5 -> JAVA + TriageThresholds raisedThresholds = new TriageThresholds(); + raisedThresholds.setLineRatioThreshold(0.5); + TriageResult result2 = TriageProcessor.classifyPage(contents, 0, raisedThresholds); + Assertions.assertEquals(TriageDecision.JAVA, result2.getDecision()); + } + + @Test + public void testOutOfReadingOrderReturnsBackend() { + List contents = new ArrayList<>(); + // Text chunks with overlapping Y coordinates (out of normal reading order) + // This pattern suggests multi-column or table layout + contents.add(createTextChunk(10, 80, 50, 100, "First")); + contents.add(createTextChunk(10, 110, 50, 130, "Overlapping")); // topY(130) > bottomY of first(100) but < topY(100) + + // The second chunk's topY (130) is above the first chunk's bottomY (100) + // which indicates out of reading order + TriageResult result = TriageProcessor.classifyPage(contents, 0, new HybridConfig()); + + // This should detect the overlapping pattern + Assertions.assertNotNull(result); + Assertions.assertNotNull(result.getSignals()); + } + + @Test + public void testTriageSignalsEmpty() { + TriageSignals signals = TriageSignals.empty(); + + Assertions.assertEquals(0, signals.getLineChunkCount()); + Assertions.assertEquals(0, signals.getTextChunkCount()); + Assertions.assertEquals(0.0, signals.getLineToTextRatio()); + Assertions.assertEquals(0, signals.getAlignedLineGroups()); + Assertions.assertFalse(signals.hasTableBorder()); + Assertions.assertFalse(signals.hasSuspiciousPattern()); + } + + @Test + public void testTriageResultFactoryMethods() { + TriageSignals signals = TriageSignals.empty(); + + TriageResult javaResult = TriageResult.java(5, 0.95, signals); + Assertions.assertEquals(5, javaResult.getPageNumber()); + Assertions.assertEquals(TriageDecision.JAVA, javaResult.getDecision()); + Assertions.assertEquals(0.95, javaResult.getConfidence()); + + TriageResult backendResult = TriageResult.backend(3, 0.8, signals); + Assertions.assertEquals(3, backendResult.getPageNumber()); + Assertions.assertEquals(TriageDecision.BACKEND, backendResult.getDecision()); + Assertions.assertEquals(0.8, backendResult.getConfidence()); + } + + @Test + public void testThresholdsGettersAndSetters() { + TriageThresholds thresholds = new TriageThresholds(); + + // Test defaults + Assertions.assertEquals(TriageProcessor.DEFAULT_LINE_RATIO_THRESHOLD, + thresholds.getLineRatioThreshold()); + Assertions.assertEquals(TriageProcessor.DEFAULT_ALIGNED_LINE_GROUPS_THRESHOLD, + thresholds.getAlignedLineGroupsThreshold()); + Assertions.assertEquals(TriageProcessor.DEFAULT_GRID_GAP_MULTIPLIER, + thresholds.getGridGapMultiplier()); + + // Test setters + thresholds.setLineRatioThreshold(0.5); + thresholds.setAlignedLineGroupsThreshold(5); + thresholds.setGridGapMultiplier(4.0); + + Assertions.assertEquals(0.5, thresholds.getLineRatioThreshold()); + Assertions.assertEquals(5, thresholds.getAlignedLineGroupsThreshold()); + Assertions.assertEquals(4.0, thresholds.getGridGapMultiplier()); + } + + @Test + public void testExtractSignalsDirectly() { + List contents = new ArrayList<>(); + contents.add(createTextChunk(10, 100, 200, 120, "Hello")); + contents.add(createLineChunk(10, 90, 200, 90)); + + TriageThresholds thresholds = new TriageThresholds(); + TriageSignals signals = TriageProcessor.extractSignals(contents, 0, thresholds); + + Assertions.assertEquals(1, signals.getLineChunkCount()); + Assertions.assertEquals(1, signals.getTextChunkCount()); + Assertions.assertEquals(0.5, signals.getLineToTextRatio(), 0.01); + } + + @Test + public void testClassifyPageHighReplacementRatioRoutesToBackend() { + StaticLayoutContainers.clearContainers(); + StaticLayoutContainers.setReplacementCharRatio(0, 0.5); + + List contents = new ArrayList<>(); + contents.add(createTextChunk(10, 100, 200, 120, "text")); + + TriageResult result = TriageProcessor.classifyPage(contents, 0, new HybridConfig()); + + Assertions.assertEquals(TriageDecision.BACKEND, result.getDecision()); + Assertions.assertEquals(1.0, result.getConfidence(), 0.001); + } + + @Test + public void testClassifyPageLowReplacementRatioNoEffect() { + StaticLayoutContainers.clearContainers(); + StaticLayoutContainers.setReplacementCharRatio(0, 0.1); + + List contents = new ArrayList<>(); + contents.add(createTextChunk(10, 100, 200, 120, "normal text")); + + TriageResult result = TriageProcessor.classifyPage(contents, 0, new HybridConfig()); + + Assertions.assertEquals(TriageDecision.JAVA, result.getDecision()); + } + + @Test + public void testClassifyPageExactThresholdRoutesToBackend() { + StaticLayoutContainers.clearContainers(); + StaticLayoutContainers.setReplacementCharRatio(0, 0.3); + + List contents = new ArrayList<>(); + contents.add(createTextChunk(10, 100, 200, 120, "text")); + + TriageResult result = TriageProcessor.classifyPage(contents, 0, new HybridConfig()); + + Assertions.assertEquals(TriageDecision.BACKEND, result.getDecision()); + Assertions.assertEquals(1.0, result.getConfidence(), 0.001); + } + + // Helper methods + + private TextChunk createTextChunk(double leftX, double bottomY, double rightX, double topY, String text) { + BoundingBox bbox = new BoundingBox(0, leftX, bottomY, rightX, topY); + TextChunk chunk = new TextChunk(bbox, text, topY - bottomY, bottomY); + chunk.adjustSymbolEndsToBoundingBox(null); + return chunk; + } + + private LineChunk createLineChunk(double x1, double y1, double x2, double y2) { + return new LineChunk(0, x1, y1, x2, y2); + } + + private void setupTableBorderRows(TableBorder tableBorder) { + TableBorderRow row1 = new TableBorderRow(0, 2, 0L); + row1.setBoundingBox(new BoundingBox(0, 10.0, 55.0, 100.0, 100.0)); + row1.getCells()[0] = new TableBorderCell(0, 0, 1, 1, 0L); + row1.getCells()[0].setBoundingBox(new BoundingBox(0, 10.0, 55.0, 55.0, 100.0)); + row1.getCells()[1] = new TableBorderCell(0, 1, 1, 1, 0L); + row1.getCells()[1].setBoundingBox(new BoundingBox(0, 55.0, 55.0, 100.0, 100.0)); + tableBorder.getRows()[0] = row1; + + TableBorderRow row2 = new TableBorderRow(1, 2, 0L); + row2.setBoundingBox(new BoundingBox(0, 10.0, 10.0, 100.0, 55.0)); + row2.getCells()[0] = new TableBorderCell(1, 0, 1, 1, 0L); + row2.getCells()[0].setBoundingBox(new BoundingBox(0, 10.0, 10.0, 55.0, 55.0)); + row2.getCells()[1] = new TableBorderCell(1, 1, 1, 1, 0L); + row2.getCells()[1].setBoundingBox(new BoundingBox(0, 55.0, 10.0, 100.0, 55.0)); + tableBorder.getRows()[1] = row2; + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/json/serializers/ElementMetadataSerializerTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/json/serializers/ElementMetadataSerializerTest.java new file mode 100644 index 0000000..f9844b3 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/json/serializers/ElementMetadataSerializerTest.java @@ -0,0 +1,236 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.json.serializers; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleModule; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.opendataloader.pdf.hybrid.ElementMetadata; +import org.verapdf.wcag.algorithms.entities.SemanticHeading; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; + +import java.util.HashMap; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.*; + +class ElementMetadataSerializerTest { + + private ObjectMapper objectMapper; + + @BeforeEach + void setUp() { + objectMapper = new ObjectMapper(); + SimpleModule module = new SimpleModule(); + module.addSerializer(SemanticHeading.class, new HeadingSerializer(SemanticHeading.class)); + module.addSerializer(Double.class, new DoubleSerializer(Double.class)); + objectMapper.registerModule(module); + } + + @AfterEach + void tearDown() { + SerializerUtil.clearElementMetadata(); + } + + private SemanticHeading createHeading(long id) { + SemanticHeading heading = new SemanticHeading(); + heading.setBoundingBox(new BoundingBox(0, 0, 0, 100, 100)); + heading.setRecognizedStructureId(id); + heading.setHeadingLevel(2); + return heading; + } + + @Test + void testMetadataWrittenWhenPresent() throws JsonProcessingException { + long id = 42L; + Map metadata = new HashMap<>(); + metadata.put(id, new ElementMetadata() + .setAiScore(0.85) + .setSourceLabel(3)); + SerializerUtil.setElementMetadata(metadata); + + SemanticHeading heading = createHeading(id); + String json = objectMapper.writeValueAsString(heading); + + assertTrue(json.contains("\"ai_score\":0.85"), "Should contain ai_score field"); + assertTrue(json.contains("\"source label\":3"), "Should contain source label field"); + } + + @Test + void testNoMetadataFieldsWhenMapEmpty() throws JsonProcessingException { + // No metadata set — backward compat + SemanticHeading heading = createHeading(42L); + String json = objectMapper.writeValueAsString(heading); + + assertFalse(json.contains("\"ai_score\""), "Should not contain ai_score without metadata"); + assertFalse(json.contains("\"source label\""), "Should not contain source label without metadata"); + } + + @Test + void testAiScoreOmittedWhenUnset() throws JsonProcessingException { + long id = 10L; + Map metadata = new HashMap<>(); + // No setAiScore() — leaves the sentinel default (-1.0) + metadata.put(id, new ElementMetadata() + .setSourceLabel(5)); + SerializerUtil.setElementMetadata(metadata); + + SemanticHeading heading = createHeading(id); + String json = objectMapper.writeValueAsString(heading); + + assertFalse(json.contains("\"ai_score\""), "ai_score should be omitted when not provided"); + assertTrue(json.contains("\"source label\":5"), "source label should still appear"); + } + + @Test + void testSourceLabelOmittedWhenNegative() throws JsonProcessingException { + long id = 11L; + Map metadata = new HashMap<>(); + metadata.put(id, new ElementMetadata() + .setAiScore(0.5) + .setSourceLabel(-1)); + SerializerUtil.setElementMetadata(metadata); + + SemanticHeading heading = createHeading(id); + String json = objectMapper.writeValueAsString(heading); + + assertTrue(json.contains("\"ai_score\":0.5")); + assertFalse(json.contains("\"source label\""), "sourceLabel=-1 should be omitted"); + } + + @Test + void testHeadingInferenceMetadata() throws JsonProcessingException { + long id = 20L; + Map metadata = new HashMap<>(); + metadata.put(id, new ElementMetadata() + .setHeadingInferenceMethod("bbox-height") + .setBboxHeightPx(24.5)); + SerializerUtil.setElementMetadata(metadata); + + SemanticHeading heading = createHeading(id); + String json = objectMapper.writeValueAsString(heading); + + assertTrue(json.contains("\"heading inference\""), "Should contain heading inference block"); + assertTrue(json.contains("\"method\":\"bbox-height\"")); + assertTrue(json.contains("\"bbox height px\":24.5")); + } + + @Test + void testTsrMetadata() throws JsonProcessingException { + long id = 30L; + Map metadata = new HashMap<>(); + ElementMetadata.TsrMetadata tsr = new ElementMetadata.TsrMetadata() + .setNumCells(12) + .setHtml("
    a
    ") + .setRunTimeMs(150); + metadata.put(id, new ElementMetadata().setTsr(tsr)); + SerializerUtil.setElementMetadata(metadata); + + SemanticHeading heading = createHeading(id); + String json = objectMapper.writeValueAsString(heading); + + assertTrue(json.contains("\"tsr\"")); + assertTrue(json.contains("\"num cells\":12")); + assertTrue(json.contains("\"html\"")); + assertTrue(json.contains("\"run time ms\":150")); + } + + @Test + void testCaptionMetadata() throws JsonProcessingException { + long id = 40L; + Map metadata = new HashMap<>(); + ElementMetadata.CaptionMetadata caption = new ElementMetadata.CaptionMetadata() + .setText("Figure 1: Example") + .setLanguage("en") + .setRunTimeMs(200); + metadata.put(id, new ElementMetadata().setCaption(caption)); + SerializerUtil.setElementMetadata(metadata); + + SemanticHeading heading = createHeading(id); + String json = objectMapper.writeValueAsString(heading); + + assertTrue(json.contains("\"caption\"")); + assertTrue(json.contains("\"text\":\"Figure 1: Example\"")); + assertTrue(json.contains("\"language\":\"en\"")); + assertTrue(json.contains("\"run time ms\":200")); + } + + @Test + void testRegionlistResolutionMetadata() throws JsonProcessingException { + long id = 50L; + Map metadata = new HashMap<>(); + ElementMetadata.RegionlistResolution rl = new ElementMetadata.RegionlistResolution() + .setStrategy("table-first") + .setTsrAttempted(true) + .setTsrResult("success"); + metadata.put(id, new ElementMetadata().setRegionlistResolution(rl)); + SerializerUtil.setElementMetadata(metadata); + + SemanticHeading heading = createHeading(id); + String json = objectMapper.writeValueAsString(heading); + + assertTrue(json.contains("\"regionlist resolution\"")); + assertTrue(json.contains("\"strategy\":\"table-first\"")); + assertTrue(json.contains("\"tsr attempted\":true")); + assertTrue(json.contains("\"tsr result\":\"success\"")); + } + + @Test + void testWordMatchMetadata() throws JsonProcessingException { + long id = 60L; + Map metadata = new HashMap<>(); + metadata.put(id, new ElementMetadata() + .setWordMatchMethod("bbox-intersection") + .setMatchedWordCount(15)); + SerializerUtil.setElementMetadata(metadata); + + SemanticHeading heading = createHeading(id); + String json = objectMapper.writeValueAsString(heading); + + assertTrue(json.contains("\"word match\"")); + assertTrue(json.contains("\"method\":\"bbox-intersection\"")); + assertTrue(json.contains("\"matched words\":15")); + } + + @Test + void testNoMetadataForUnknownId() throws JsonProcessingException { + Map metadata = new HashMap<>(); + metadata.put(99L, new ElementMetadata().setAiScore(0.5)); + SerializerUtil.setElementMetadata(metadata); + + SemanticHeading heading = createHeading(1L); // different ID + String json = objectMapper.writeValueAsString(heading); + + assertFalse(json.contains("\"ai_score\""), "Should not write metadata for unmatched ID"); + } + + @Test + void testClearElementMetadataRemovesState() throws JsonProcessingException { + long id = 42L; + Map metadata = new HashMap<>(); + metadata.put(id, new ElementMetadata().setAiScore(0.5)); + SerializerUtil.setElementMetadata(metadata); + SerializerUtil.clearElementMetadata(); + + SemanticHeading heading = createHeading(id); + String json = objectMapper.writeValueAsString(heading); + + assertFalse(json.contains("\"ai_score\""), "After clear, metadata should not be written"); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/json/serializers/ImageSerializerTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/json/serializers/ImageSerializerTest.java new file mode 100644 index 0000000..08d885a --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/json/serializers/ImageSerializerTest.java @@ -0,0 +1,145 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.json.serializers; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleModule; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.verapdf.wcag.algorithms.entities.content.ImageChunk; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; + +import javax.imageio.ImageIO; +import java.awt.Color; +import java.awt.Graphics2D; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; +import java.nio.file.Path; + +import static org.junit.jupiter.api.Assertions.*; + +class ImageSerializerTest { + + @TempDir + Path tempDir; + + private ObjectMapper objectMapper; + private String imagesDirectory; + + @BeforeEach + void setUp() throws IOException { + StaticLayoutContainers.clearContainers(); + + imagesDirectory = tempDir.toString(); + StaticLayoutContainers.setImagesDirectory(imagesDirectory); + + // Create a test image file + createTestImageFile(1, "png"); + + // Configure ObjectMapper with ImageSerializer + objectMapper = new ObjectMapper(); + SimpleModule module = new SimpleModule(); + module.addSerializer(ImageChunk.class, new ImageSerializer(ImageChunk.class)); + objectMapper.registerModule(module); + } + + @AfterEach + void tearDown() { + StaticLayoutContainers.clearContainers(); + } + + private void createTestImageFile(int index, String format) throws IOException { + BufferedImage image = new BufferedImage(10, 10, BufferedImage.TYPE_INT_RGB); + Graphics2D g2d = image.createGraphics(); + g2d.setColor(Color.RED); + g2d.fillRect(0, 0, 10, 10); + g2d.dispose(); + + String fileName = String.format("%s%simageFile%d.%s", imagesDirectory, File.separator, index, format); + File outputFile = new File(fileName); + ImageIO.write(image, format, outputFile); + } + + private ImageChunk createImageChunk(int index) { + BoundingBox bbox = new BoundingBox(0, 0, 0, 100, 100); + ImageChunk imageChunk = new ImageChunk(bbox); + imageChunk.setIndex(index); + return imageChunk; + } + + @Test + void testSerializeWithEmbedImagesTrueOutputsDataField() throws JsonProcessingException { + StaticLayoutContainers.setEmbedImages(true); + StaticLayoutContainers.setImageFormat("png"); + + ImageChunk imageChunk = createImageChunk(1); + String json = objectMapper.writeValueAsString(imageChunk); + + assertTrue(json.contains("\"data\":\"data:image/png;base64,")); + assertTrue(json.contains("\"format\":\"png\"")); + assertFalse(json.contains("\"source\":")); + } + + @Test + void testSerializeWithEmbedImagesFalseOutputsSourceField() throws JsonProcessingException { + StaticLayoutContainers.setEmbedImages(false); + StaticLayoutContainers.setImageFormat("png"); + + ImageChunk imageChunk = createImageChunk(1); + String json = objectMapper.writeValueAsString(imageChunk); + + assertTrue(json.contains("\"source\":")); + assertFalse(json.contains("\"data\":")); + assertFalse(json.contains("\"format\":")); + } + + @Test + void testSerializeWithJpegFormat() throws IOException { + createTestImageFile(2, "jpeg"); + StaticLayoutContainers.setEmbedImages(true); + StaticLayoutContainers.setImageFormat("jpeg"); + + ImageChunk imageChunk = createImageChunk(2); + String json = objectMapper.writeValueAsString(imageChunk); + + assertTrue(json.contains("\"data\":\"data:image/jpeg;base64,")); + assertTrue(json.contains("\"format\":\"jpeg\"")); + } + + @Test + void testSerializeWithNonExistentImageNoSourceOrData() throws JsonProcessingException { + StaticLayoutContainers.setEmbedImages(true); + + ImageChunk imageChunk = createImageChunk(999); // Non-existent image + String json = objectMapper.writeValueAsString(imageChunk); + + assertFalse(json.contains("\"source\":")); + assertFalse(json.contains("\"data\":")); + } + + @Test + void testSerializeContainsTypeField() throws JsonProcessingException { + ImageChunk imageChunk = createImageChunk(1); + String json = objectMapper.writeValueAsString(imageChunk); + + assertTrue(json.contains("\"type\":\"image\"")); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/json/serializers/LineArtSerializerTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/json/serializers/LineArtSerializerTest.java new file mode 100644 index 0000000..1f6b915 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/json/serializers/LineArtSerializerTest.java @@ -0,0 +1,86 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.json.serializers; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.Test; +import org.opendataloader.pdf.json.JsonName; +import org.opendataloader.pdf.json.ObjectMapperHolder; +import org.verapdf.wcag.algorithms.entities.content.LineArtChunk; +import org.verapdf.wcag.algorithms.entities.enums.SemanticType; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; + +import static org.junit.jupiter.api.Assertions.*; + +class LineArtSerializerTest { + + @Test + void lineArtChunkIsNotSerializedAsImage() throws JsonProcessingException { + // Verify that LineArtChunk no longer produces {"type":"image",...}. + // The old LineArtSerializer wrote type=image, misleading RAG consumers + // who expected an image source path that was never written. + ObjectMapper objectMapper = ObjectMapperHolder.getObjectMapper(); + LineArtChunk chunk = new LineArtChunk(new BoundingBox(0, 0, 0, 100, 100)); + + String json = objectMapper.writeValueAsString(chunk); + + assertFalse(json.contains("\"type\":\"image\""), + "LineArtChunk must not be serialized with type=image after removing LineArtSerializer"); + } + + @Test + void tableCellSerializerSkipsLineArtChunkChildren() throws JsonProcessingException { + // Regression test: TableBorderProcessor can add LineArtChunk to a cell's contents + // when the chunk overlaps a cell by ≤ LINE_ART_PERCENT (90%). Without the guard + // in TableCellSerializer, Jackson would throw (no serializer) or emit POJO garbage. + TableBorderCell cell = new TableBorderCell(0, 0, 1, 1, 0L); + cell.setBoundingBox(new BoundingBox(0, 0.0, 0.0, 100.0, 100.0)); + cell.addContentObject(new LineArtChunk(new BoundingBox(0, 0.0, 0.0, 50.0, 50.0))); + + ObjectMapper objectMapper = ObjectMapperHolder.getObjectMapper(); + String json = objectMapper.writeValueAsString(cell); + JsonNode node = objectMapper.readTree(json); + + // kids array must be empty — the only child was a LineArtChunk + JsonNode kids = node.get("kids"); + assertNotNull(kids, "kids field must be present"); + assertTrue(kids.isArray() && kids.isEmpty(), + "TableBorderCell kids must be empty when its only child is a LineArtChunk"); + assertFalse(json.contains("lineChunks"), + "LineArtChunk POJO fields must not appear in serialized output"); + } + + @Test + void tableCellSerializerMarksFirstRowCellsAsHeaders() throws JsonProcessingException { + ObjectMapper objectMapper = ObjectMapperHolder.getObjectMapper(); + TableBorderCell headerCell = new TableBorderCell(0, 0, 1, 1, 0L); + headerCell.setBoundingBox(new BoundingBox(0, 0.0, 0.0, 100.0, 100.0)); + headerCell.setSemanticType(SemanticType.TABLE_HEADER); + TableBorderCell bodyCell = new TableBorderCell(1, 0, 1, 1, 0L); + bodyCell.setBoundingBox(new BoundingBox(0, 0.0, 0.0, 100.0, 100.0)); + + JsonNode headerNode = objectMapper.readTree(objectMapper.writeValueAsString(headerCell)); + JsonNode bodyNode = objectMapper.readTree(objectMapper.writeValueAsString(bodyCell)); + + assertTrue(headerNode.path(JsonName.IS_HEADER).asBoolean(), + "First-row table cells must be serialized as headers"); + assertFalse(bodyNode.has(JsonName.IS_HEADER), + "Body table cells must not include is_header"); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/markdown/MarkdownGeneratorTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/markdown/MarkdownGeneratorTest.java new file mode 100644 index 0000000..39d62d0 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/markdown/MarkdownGeneratorTest.java @@ -0,0 +1,183 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.markdown; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; + +import static org.junit.jupiter.api.Assertions.*; + +/** + * Tests for MarkdownGenerator, particularly heading level handling. + *

    + * Per Markdown specification, heading levels should be 1-6. + * Levels outside this range should be normalized: + * - Levels > 6 are capped to 6 + * - Levels < 1 are normalized to 1 + */ +public class MarkdownGeneratorTest { + + /** + * Tests that heading levels 1-6 produce the correct number of # symbols. + */ + @ParameterizedTest + @ValueSource(ints = {1, 2, 3, 4, 5, 6}) + void testValidHeadingLevels(int level) { + String expected = "#".repeat(level) + " "; + String actual = generateHeadingPrefix(level); + assertEquals(expected, actual, "Heading level " + level + " should produce " + level + " # symbols"); + } + + /** + * Tests that heading levels > 6 are capped to 6 (Markdown specification compliance). + * Regression test for issue #222 (derived from #221). + */ + @ParameterizedTest + @ValueSource(ints = {7, 8, 10, 15, 100}) + void testHeadingLevelsCappedAt6(int level) { + String expected = "###### "; // 6 # symbols (max allowed in Markdown) + String actual = generateHeadingPrefix(level); + assertEquals(expected, actual, + "Heading level " + level + " should be capped to 6 # symbols per Markdown spec"); + } + + /** + * Tests that heading level 0 or negative is normalized to 1. + */ + @ParameterizedTest + @ValueSource(ints = {0, -1, -5}) + void testHeadingLevelsMinimumIs1(int level) { + String expected = "# "; // 1 # symbol (minimum) + String actual = generateHeadingPrefix(level); + assertEquals(expected, actual, + "Heading level " + level + " should be normalized to 1 # symbol"); + } + + /** + * Verifies that level 6 is the maximum. + */ + @Test + void testMaxHeadingLevelIs6() { + assertEquals("###### ", generateHeadingPrefix(6)); + assertEquals("###### ", generateHeadingPrefix(7)); + assertEquals("###### ", generateHeadingPrefix(999)); + } + + /** + * Verifies that level 1 is the minimum. + */ + @Test + void testMinHeadingLevelIs1() { + assertEquals("# ", generateHeadingPrefix(1)); + assertEquals("# ", generateHeadingPrefix(0)); + assertEquals("# ", generateHeadingPrefix(-1)); + } + + /** + * Helper method that mirrors the heading prefix generation logic in + * MarkdownGenerator.writeHeading(). + *

    + * This must be kept in sync with the actual implementation. + * The logic is: Math.min(6, Math.max(1, headingLevel)) + */ + private String generateHeadingPrefix(int headingLevel) { + // This mirrors MarkdownGenerator.writeHeading() logic + int level = Math.min(6, Math.max(1, headingLevel)); + + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < level; i++) { + sb.append(MarkdownSyntax.HEADING_LEVEL); + } + sb.append(MarkdownSyntax.SPACE); + return sb.toString(); + } + + // ----- formatMarkdownLinkDestination (#405) ----- + + @Test + void testFormatLinkDestination_wrapsSafePathsInAngleBrackets() { + // Even paths with no reserved chars get wrapped — uniform output is easier + // to reason about than "sometimes bare, sometimes angle-bracketed". + assertEquals("", + MarkdownGenerator.formatMarkdownLinkDestination("imageFile1.png")); + assertEquals("", + MarkdownGenerator.formatMarkdownLinkDestination("output/sub.dir/imageFile1.png")); + } + + @Test + void testFormatLinkDestination_keepsSpacesVerbatim() { + // The whole point: inside `<...>`, spaces are legal per CommonMark §6.4. + assertEquals("", + MarkdownGenerator.formatMarkdownLinkDestination("my paper_images/imageFile1.png")); + } + + @Test + void testFormatLinkDestination_keepsParensAndBracketsVerbatim() { + assertEquals("", + MarkdownGenerator.formatMarkdownLinkDestination("draft (v2) [rc]/imageFile1.png")); + } + + @Test + void testFormatLinkDestination_keepsApostropheAndDoubleQuoteVerbatim() { + // Common real-world filename — `John's "draft".pdf`. + assertEquals("", + MarkdownGenerator.formatMarkdownLinkDestination("John's \"draft\"_images/imageFile1.png")); + } + + @Test + void testFormatLinkDestination_keepsPercentAndHashVerbatim() { + // No percent-decoding happens inside `<...>`, so a literal `%` or `#` + // in a directory name renders correctly without double-encoding. + assertEquals("<100% (final)#1/imageFile1.png>", + MarkdownGenerator.formatMarkdownLinkDestination("100% (final)#1/imageFile1.png")); + } + + @Test + void testFormatLinkDestination_escapesAngleBracketsInPath() { + // `<` and `>` inside the destination must be backslash-escaped — they + // would otherwise terminate the angle-bracket form prematurely. + assertEquals("c/imageFile1.png>", + MarkdownGenerator.formatMarkdownLinkDestination("ac/imageFile1.png")); + } + + @Test + void testFormatLinkDestination_escapesBackslashInPath() { + // Backslash itself must be escaped to round-trip cleanly. + assertEquals("", + MarkdownGenerator.formatMarkdownLinkDestination("a\\b/imageFile1.png")); + } + + @Test + void testFormatLinkDestination_replacesNewlinesWithSpaces() { + // Newlines have no representable form in a link destination per spec. + assertEquals("", + MarkdownGenerator.formatMarkdownLinkDestination("a\nb/imageFile1.png")); + assertEquals("", + MarkdownGenerator.formatMarkdownLinkDestination("a\rb/imageFile1.png")); + } + + @Test + void testFormatLinkDestination_passesThroughNonAscii() { + assertEquals("<문서/imageFile1.png>", + MarkdownGenerator.formatMarkdownLinkDestination("문서/imageFile1.png")); + } + + @Test + void testFormatLinkDestination_handlesNull() { + assertNull(MarkdownGenerator.formatMarkdownLinkDestination(null)); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/markdown/MarkdownTableTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/markdown/MarkdownTableTest.java new file mode 100644 index 0000000..8f65ca5 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/markdown/MarkdownTableTest.java @@ -0,0 +1,277 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.markdown; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; +import org.opendataloader.pdf.api.Config; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; +import org.verapdf.wcag.algorithms.entities.SemanticParagraph; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.content.TextColumn; +import org.verapdf.wcag.algorithms.entities.content.TextLine; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderRow; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +/** + * Tests for Markdown table generation, specifically verifying correct handling + * of merged cells (colspan/rowspan). + * + *

    Merged cells occur in practice via: + *

    + */ +public class MarkdownTableTest { + + @TempDir + Path tempDir; + + @BeforeAll + static void initStaticContainers() { + StaticContainers.updateContainers(null); + } + + /** + * Simulates the exact table structure created by SpecialTableProcessor + * for Korean documents. When a row has no ':' separator (e.g., "수신"), + * the processor creates a single cell with the same object assigned to + * both column positions — producing a colspan-like merged cell. + * + *

    Before fix: content was written twice (e.g., "|수신|수신|"). + * After fix: content written once, spanned column gets empty space (e.g., "|수신| |"). + * + * @see org.opendataloader.pdf.processors.SpecialTableProcessor + */ + @Test + void testKoreanSpecialTableMergedRow() throws IOException { + // Reproduce SpecialTableProcessor: 3 rows, 2 columns + // "수신" (no colon → one cell spanning 2 columns) + // "경유" (no colon → one cell spanning 2 columns) + // "제목: 테스트" (has colon → two separate cells) + TableBorderRow row0 = new TableBorderRow(0, 2, null); + TableBorderCell cell00 = new TableBorderCell(0, 0, 1, 2, null); + addTextContent(cell00, "수신"); + row0.getCells()[0] = cell00; + row0.getCells()[1] = cell00; // same object, like SpecialTableProcessor + + TableBorderRow row1 = new TableBorderRow(1, 2, null); + TableBorderCell cell10 = new TableBorderCell(1, 0, 1, 2, null); + addTextContent(cell10, "경유"); + row1.getCells()[0] = cell10; + row1.getCells()[1] = cell10; + + TableBorderRow row2 = new TableBorderRow(2, 2, null); + TableBorderCell cell20 = new TableBorderCell(2, 0, 1, 1, null); + addTextContent(cell20, "제목"); + TableBorderCell cell21 = new TableBorderCell(2, 1, 1, 1, null); + addTextContent(cell21, "테스트"); + row2.getCells()[0] = cell20; + row2.getCells()[1] = cell21; + + TableBorder table = new TableBorder(null, new TableBorderRow[]{row0, row1, row2}, 3, 2); + String markdown = generateMarkdownTable(table); + String[] lines = markdown.split("\n"); + + // Row 0 (header): "수신" must appear exactly once + assertEquals(1, countOccurrences(lines[0], "수신"), + "Merged cell '수신' should appear once. Got: " + lines[0]); + + // Row 1 (after header + separator): "경유" must appear exactly once + assertEquals(1, countOccurrences(lines[2], "경유"), + "Merged cell '경유' should appear once. Got: " + lines[2]); + + // Row 2: "제목" and "테스트" in separate cells + String row2Line = lines[3]; + assertTrue(row2Line.contains("제목") && row2Line.contains("테스트"), + "Split row should contain both cells. Got: " + row2Line); + } + + /** + * A 3-column table where cell (0,0) has colspan=2 should produce + * 3 column separators per row in the header separator line, + * and the content row should not duplicate the merged cell's content. + * + * Before fix: the merged cell content was written twice because + * getCells() returns duplicated references for spanned columns. + */ + @Test + void testColspanCellsAreNotDuplicated() throws IOException { + // Row 0: [A (colspan=2)] [B] — 3 columns + // Row 1: [C] [D] [E] + TableBorderCell cell00 = new TableBorderCell(0, 0, 2, 1, null); + addTextContent(cell00, "A"); + TableBorderCell cell02 = new TableBorderCell(0, 2, 1, 1, null); + addTextContent(cell02, "B"); + + TableBorderRow row0 = new TableBorderRow(0, 3, null); + row0.getCells()[0] = cell00; + row0.getCells()[1] = cell00; // colspan duplicate + row0.getCells()[2] = cell02; + + TableBorderCell cell10 = new TableBorderCell(1, 0, 1, 1, null); + addTextContent(cell10, "C"); + TableBorderCell cell11 = new TableBorderCell(1, 1, 1, 1, null); + addTextContent(cell11, "D"); + TableBorderCell cell12 = new TableBorderCell(1, 2, 1, 1, null); + addTextContent(cell12, "E"); + + TableBorderRow row1 = new TableBorderRow(1, 3, null); + row1.getCells()[0] = cell10; + row1.getCells()[1] = cell11; + row1.getCells()[2] = cell12; + + TableBorder table = new TableBorder(null, new TableBorderRow[]{row0, row1}, 2, 3); + String markdown = generateMarkdownTable(table); + String[] lines = markdown.split("\n"); + + assertTrue(lines.length >= 3, "Expected at least 3 lines, got: " + lines.length); + + // Header row: content "A" should appear once + String headerRow = lines[0]; + assertEquals(1, countOccurrences(headerRow, "A"), + "Merged cell content 'A' should appear exactly once in header row. Got: " + headerRow); + + // Header separator: |---|---|---| + assertEquals(3, countOccurrences(lines[1], "---"), + "Header separator should have 3 columns. Got: " + lines[1]); + + // Data row: |C|D|E| + assertTrue(lines[2].contains("C") && lines[2].contains("D") && lines[2].contains("E"), + "Data row should contain C, D, E. Got: " + lines[2]); + } + + /** + * A simple 2x2 table without any merged cells should work correctly. + */ + @Test + void testSimpleTableWithoutMergedCells() throws IOException { + TableBorderCell cell00 = new TableBorderCell(0, 0, 1, 1, null); + addTextContent(cell00, "H1"); + TableBorderCell cell01 = new TableBorderCell(0, 1, 1, 1, null); + addTextContent(cell01, "H2"); + TableBorderRow row0 = new TableBorderRow(0, 2, null); + row0.getCells()[0] = cell00; + row0.getCells()[1] = cell01; + + TableBorderCell cell10 = new TableBorderCell(1, 0, 1, 1, null); + addTextContent(cell10, "V1"); + TableBorderCell cell11 = new TableBorderCell(1, 1, 1, 1, null); + addTextContent(cell11, "V2"); + TableBorderRow row1 = new TableBorderRow(1, 2, null); + row1.getCells()[0] = cell10; + row1.getCells()[1] = cell11; + + TableBorder table = new TableBorder(null, new TableBorderRow[]{row0, row1}, 2, 2); + String markdown = generateMarkdownTable(table); + String[] lines = markdown.split("\n"); + + assertEquals(3, lines.length, "Simple 2x2 table should produce 3 lines"); + assertTrue(lines[0].contains("H1") && lines[0].contains("H2"), "Header row: " + lines[0]); + assertEquals(2, countOccurrences(lines[1], "---"), "Separator columns: " + lines[1]); + assertTrue(lines[2].contains("V1") && lines[2].contains("V2"), "Data row: " + lines[2]); + } + + /** + * A table with rowspan should not duplicate the cell content in subsequent rows. + */ + @Test + void testRowspanCellsAreNotDuplicated() throws IOException { + // Row 0: [A (rowspan=2)] [B] + // Row 1: [A (span)] [C] + // Row 2: [D] [E] + TableBorderCell cell00 = new TableBorderCell(0, 0, 1, 2, null); + addTextContent(cell00, "A"); + TableBorderCell cell01 = new TableBorderCell(0, 1, 1, 1, null); + addTextContent(cell01, "B"); + TableBorderRow row0 = new TableBorderRow(0, 2, null); + row0.getCells()[0] = cell00; + row0.getCells()[1] = cell01; + + TableBorderCell cell11 = new TableBorderCell(1, 1, 1, 1, null); + addTextContent(cell11, "C"); + TableBorderRow row1 = new TableBorderRow(1, 2, null); + row1.getCells()[0] = cell00; // rowspan duplicate + row1.getCells()[1] = cell11; + + TableBorderCell cell20 = new TableBorderCell(2, 0, 1, 1, null); + addTextContent(cell20, "D"); + TableBorderCell cell21 = new TableBorderCell(2, 1, 1, 1, null); + addTextContent(cell21, "E"); + TableBorderRow row2 = new TableBorderRow(2, 2, null); + row2.getCells()[0] = cell20; + row2.getCells()[1] = cell21; + + TableBorder table = new TableBorder(null, new TableBorderRow[]{row0, row1, row2}, 3, 2); + String markdown = generateMarkdownTable(table); + String[] lines = markdown.split("\n"); + + assertTrue(lines.length >= 4, "Should have 4+ lines for 3-row table"); + // Row 1 (index 2 after header+separator) should NOT contain 'A' + String row1Line = lines[2]; + assertEquals(0, countOccurrences(row1Line, "A"), + "Rowspan cell 'A' should not appear in row 1. Got: " + row1Line); + assertTrue(row1Line.contains("C"), "Row 1 should contain 'C'. Got: " + row1Line); + } + + private void addTextContent(TableBorderCell cell, String text) { + TextChunk chunk = new TextChunk(text); + TextLine line = new TextLine(chunk); + TextColumn column = new TextColumn(line); + BoundingBox bbox = new BoundingBox(null, 0, 0, 100, 10); + SemanticParagraph paragraph = new SemanticParagraph(bbox, List.of(column)); + cell.addContentObject(paragraph); + } + + private String generateMarkdownTable(TableBorder table) throws IOException { + File dummyPdf = tempDir.resolve("test.pdf").toFile(); + Files.createFile(dummyPdf.toPath()); + Config config = new Config(); + config.setOutputFolder(tempDir.toString()); + config.setGenerateMarkdown(true); + + try (MarkdownGenerator generator = new MarkdownGenerator(dummyPdf, config)) { + generator.writeTable(table); + } + + File mdFile = tempDir.resolve("test.md").toFile(); + return Files.readString(mdFile.toPath()).trim(); + } + + private long countOccurrences(String str, String sub) { + int count = 0; + int idx = 0; + while ((idx = str.indexOf(sub, idx)) != -1) { + count++; + idx += sub.length(); + } + return count; + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/CaptionProcessorTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/CaptionProcessorTest.java new file mode 100644 index 0000000..b88b81e --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/CaptionProcessorTest.java @@ -0,0 +1,50 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticCaption; +import org.verapdf.wcag.algorithms.entities.SemanticParagraph; +import org.verapdf.wcag.algorithms.entities.content.ImageChunk; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.content.TextLine; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.entities.maps.AccumulatedNodeMapper; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; + +import java.util.ArrayList; +import java.util.List; + +public class CaptionProcessorTest { + + @Test + public void testProcessCaptions() { + StaticContainers.setIsIgnoreCharactersWithoutUnicode(false); + StaticContainers.setIsDataLoader(true); + StaticContainers.setAccumulatedNodeMapper(new AccumulatedNodeMapper()); + List contents = new ArrayList<>(); + SemanticParagraph paragraph = new SemanticParagraph(); + contents.add(paragraph); + paragraph.add(new TextLine(new TextChunk(new BoundingBox(1, 10.0, 10.0, 20.0, 20.0), + "test", 10, 10.0))); + contents.add(new ImageChunk(new BoundingBox(1, 10.0, 20.0, 20.0, 30.0))); + CaptionProcessor.processCaptions(contents); + Assertions.assertEquals(2, contents.size()); + Assertions.assertTrue(contents.get(0) instanceof SemanticCaption); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/CidFontDetectionTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/CidFontDetectionTest.java new file mode 100644 index 0000000..4630019 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/CidFontDetectionTest.java @@ -0,0 +1,167 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Assumptions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.opendataloader.pdf.api.Config; +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.List; +import java.util.logging.Handler; +import java.util.logging.Level; +import java.util.logging.LogRecord; +import java.util.logging.Logger; + +/** + * Integration test for CID font extraction failure detection. + * + * Tests the full pipeline: PDF parsing -> ContentFilterProcessor -> + * measurement -> StaticLayoutContainers storage -> warning log. + */ +public class CidFontDetectionTest { + + private static final Path CID_PDF_PATH = Paths.get( + "src/test/resources/cid-font-no-tounicode.pdf"); + + private static boolean pdfAvailable = false; + + @BeforeAll + static void checkFixture() { + pdfAvailable = Files.exists(CID_PDF_PATH) && Files.isRegularFile(CID_PDF_PATH); + if (!pdfAvailable) { + System.out.println("CID font test PDF not found: " + CID_PDF_PATH.toAbsolutePath()); + System.out.println("Skipping integration tests. Generate fixture first."); + } + } + + @Test + public void testCidPdfHighReplacementRatioDetected() throws IOException { + Assumptions.assumeTrue(pdfAvailable, "CID font test PDF not available"); + + String pdfPath = CID_PDF_PATH.toAbsolutePath().toString(); + Config config = new Config(); + + DocumentProcessor.preprocessing(pdfPath, config); + StaticLayoutContainers.clearContainers(); + + int numPages = StaticContainers.getDocument().getNumberOfPages(); + Assertions.assertTrue(numPages > 0, "PDF should have at least 1 page"); + + // Process page 0 through ContentFilterProcessor + List filteredContents = ContentFilterProcessor.getFilteredContents( + pdfPath, + StaticContainers.getDocument().getArtifacts(0), + 0, + config + ); + + // Verify ratio was stored + double ratio = StaticLayoutContainers.getReplacementCharRatio(0); + Assertions.assertTrue(ratio >= 0.3, + "CID font PDF should have >= 30% replacement characters, got " + + String.format("%.1f%%", ratio * 100)); + } + + @Test + public void testCidPdfWarningLogEmitted() throws IOException { + Assumptions.assumeTrue(pdfAvailable, "CID font test PDF not available"); + + // Capture warning logs + Logger logger = Logger.getLogger(ContentFilterProcessor.class.getCanonicalName()); + List warnings = new ArrayList<>(); + Handler handler = new Handler() { + @Override public void publish(LogRecord r) { + if (r.getLevel() == Level.WARNING) { + warnings.add(r.getMessage()); + } + } + @Override public void flush() {} + @Override public void close() {} + }; + logger.addHandler(handler); + + try { + String pdfPath = CID_PDF_PATH.toAbsolutePath().toString(); + Config config = new Config(); + + DocumentProcessor.preprocessing(pdfPath, config); + StaticLayoutContainers.clearContainers(); + + ContentFilterProcessor.getFilteredContents( + pdfPath, + StaticContainers.getDocument().getArtifacts(0), + 0, + config + ); + + boolean hasReplacementWarning = warnings.stream() + .anyMatch(w -> w.contains("replacement characters") + && w.contains("--hybrid docling-fast") + && !w.contains("--hybrid-mode for OCR fallback")); + Assertions.assertTrue(hasReplacementWarning, + "Expected WARNING log about replacement characters with actionable hybrid guidance"); + } finally { + logger.removeHandler(handler); + } + } + + /** + * Unit-level boundary tests (no PDF fixture needed). + */ + @Test + public void testBoundaryBelowThreshold29percent() { + // 29 replacement chars out of 100 = 0.29 (below threshold) + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < 29; i++) sb.append('\uFFFD'); + for (int i = 0; i < 71; i++) sb.append('A'); + + List contents = new ArrayList<>(); + contents.add(new TextChunk(new BoundingBox(1, 10.0, 10.0, 500.0, 20.0), + sb.toString(), 10, 10.0)); + + double ratio = TextProcessor.measureReplacementCharRatio(contents); + Assertions.assertTrue(ratio < 0.3, + "29% should be below threshold, got " + ratio); + } + + @Test + public void testBoundaryAtThreshold30percent() { + // 30 replacement chars out of 100 = 0.30 (at threshold) + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < 30; i++) sb.append('\uFFFD'); + for (int i = 0; i < 70; i++) sb.append('A'); + + List contents = new ArrayList<>(); + contents.add(new TextChunk(new BoundingBox(1, 10.0, 10.0, 500.0, 20.0), + sb.toString(), 10, 10.0)); + + double ratio = TextProcessor.measureReplacementCharRatio(contents); + Assertions.assertTrue(ratio >= 0.3, + "30% should be at threshold, got " + ratio); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/ContentFilterProcessorTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/ContentFilterProcessorTest.java new file mode 100644 index 0000000..463e6d7 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/ContentFilterProcessorTest.java @@ -0,0 +1,113 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; + +import java.util.ArrayList; +import java.util.List; + +public class ContentFilterProcessorTest { + + /** + * Regression test for issue #150: short text chunks with abnormally wide bounding boxes. + * + * When PDF streams have text rendered in non-sequential order within a single Tj/TJ + * operation, VeraPDF may calculate incorrect bounding boxes where rightX extends far + * beyond the actual character width. For example, a single character "4" with height 10 + * might get a width of 42 instead of ~7. + * + * This causes the text to span multiple table cells incorrectly, leading to text being + * dropped or assigned to wrong cells (the "프로트롬빈 시간" row in issue #150 where + * numbers like "4" and "6" were missing). + * + * The fix should detect and correct these abnormal bounding boxes for short text (1-3 chars) + * where actualWidth > expectedWidth * 3. + */ + @Test + public void testShortTextWithAbnormallyWideBoundingBox() { + // Given: A single character "4" with height 10 but abnormally wide bbox (width=42) + double height = 10.0; + double leftX = 180.0; + double abnormalRightX = 222.0; // Width = 42, expected ~7 for single char + TextChunk textChunk = new TextChunk( + new BoundingBox(0, leftX, 100.0, abnormalRightX, 100.0 + height), + "4", height, 100.0); + + double actualWidth = textChunk.getBoundingBox().getWidth(); + double expectedMaxWidth = 1 * height * 0.7 * 3; // char_count * height * 0.7 * threshold(3x) + + // This assertion documents the bug: the width is abnormally large + // When fixAbnormalTextChunkBoundingBoxes() is implemented, this should be corrected + Assertions.assertTrue(actualWidth > expectedMaxWidth, + "This test documents that the bounding box width (" + actualWidth + + ") is abnormally large compared to expected max (" + expectedMaxWidth + + ") for a single character. A fix should correct this."); + } + + /** + * Regression test for issue #150: normal text chunks should not be affected. + * + * Text chunks with reasonable widths (width <= expectedWidth * 3) should not + * have their bounding boxes modified. + */ + @Test + public void testNormalTextWidthNotAbnormal() { + // Given: A two-character text "AB" with reasonable width + double height = 10.0; + double leftX = 100.0; + double normalRightX = 115.0; // Width = 15, reasonable for 2 chars + TextChunk textChunk = new TextChunk( + new BoundingBox(0, leftX, 100.0, normalRightX, 100.0 + height), + "AB", height, 100.0); + + double actualWidth = textChunk.getBoundingBox().getWidth(); + double expectedMaxWidth = 2 * height * 0.7 * 3; // char_count * height * 0.7 * threshold(3x) + + // Normal width should be within expected range + Assertions.assertTrue(actualWidth <= expectedMaxWidth, + "Normal text chunk width (" + actualWidth + ") should not exceed threshold (" + + expectedMaxWidth + ")"); + } + + /** + * Regression test for issue #150: long text (>3 chars) should not be considered abnormal. + * + * The fix should only target short text chunks (1-3 characters) where the width + * calculation is clearly wrong. Longer text can legitimately have wider bounding boxes. + */ + @Test + public void testLongTextNotTargetedForCorrection() { + // Given: A 5-character text "Hello" with a wide bbox - this is plausible for longer text + double height = 10.0; + double leftX = 100.0; + double rightX = 200.0; // Width = 100 + TextChunk textChunk = new TextChunk( + new BoundingBox(0, leftX, 100.0, rightX, 100.0 + height), + "Hello", height, 100.0); + + // For text with more than 3 characters, the fix should not apply + // regardless of the width-to-height ratio + Assertions.assertEquals(5, textChunk.getValue().length(), + "Long text should have 5 characters"); + Assertions.assertEquals(100.0, textChunk.getBoundingBox().getWidth(), 0.01, + "Long text width should remain unchanged"); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/DocumentProcessorBaseNameTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/DocumentProcessorBaseNameTest.java new file mode 100644 index 0000000..cbb5aea --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/DocumentProcessorBaseNameTest.java @@ -0,0 +1,106 @@ + +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.opendataloader.pdf.utils.FileUtils; + +/** + * Unit tests for the base-name extraction logic introduced to replace the + * hard-coded {@code fileName.length() - 4} assumption (see issue #405). + * + *

    The helper mirrors the expression used in {@link DocumentProcessor}, + * {@link AutoTaggingProcessor}, and {@link org.opendataloader.pdf.pdf.PDFWriter}: + *

    + *   int dotIndex = fileName.lastIndexOf('.');
    + *   String baseName = dotIndex > 0 ? fileName.substring(0, dotIndex) : fileName;
    + * 
    + * + *

    Tested cases: + *

      + *
    • Standard lowercase {@code .pdf} extension
    • + *
    • Uppercase {@code .PDF} extension (was broken by {@code length() - 4})
    • + *
    • Multi-dot filenames, e.g. {@code report.v1.2.pdf}
    • + *
    • Filenames without any extension (edge case — keep full name)
    • + *
    • Extension-only names, e.g. {@code .hidden} (dot at index 0 → keep full name)
    • + *
    + */ +public class DocumentProcessorBaseNameTest { + + + @Test + public void testStandardLowercasePdfExtension() { + Assertions.assertEquals("my_paper", FileUtils.getBaseName("my_paper.pdf")); + } + + @Test + public void testUppercasePdfExtension() { + // length() - 4 would give "my_p" for "my_paper.PDF" — lastIndexOf fixes this + Assertions.assertEquals("my_paper", FileUtils.getBaseName("my_paper.PDF")); + } + + @Test + public void testMixedCaseExtension() { + Assertions.assertEquals("my_paper", FileUtils.getBaseName("my_paper.Pdf")); + } + + @Test + public void testMultiDotFilename() { + // e.g. report.v1.2.pdf — only the final extension should be stripped + Assertions.assertEquals("report.v1.2", FileUtils.getBaseName("report.v1.2.pdf")); + } + + @Test + public void testMultiDotFilenameUppercase() { + Assertions.assertEquals("report.v1.2", FileUtils.getBaseName("report.v1.2.PDF")); + } + + @Test + public void testFilenameWithSpaces() { + // Spaces in the stem are kept verbatim; only the extension is removed + Assertions.assertEquals("my paper", FileUtils.getBaseName("my paper.pdf")); + } + + @Test + public void testFilenameWithSpacesUppercase() { + Assertions.assertEquals("my paper", FileUtils.getBaseName("my paper.PDF")); + } + + @Test + public void testNoExtension() { + // No dot → keep the full filename unchanged + Assertions.assertEquals("myfile", FileUtils.getBaseName("myfile")); + } + + @Test + public void testDotOnlyAtStart() { + // Dot at index 0 means dotIndex == 0 (not > 0) → keep the full name + Assertions.assertEquals(".hidden", FileUtils.getBaseName(".hidden")); + } + + @Test + public void testSingleCharBaseName() { + Assertions.assertEquals("a", FileUtils.getBaseName("a.pdf")); + } + + @Test + public void testNonPdfExtension() { + // The logic is extension-agnostic — strips whatever is after the last dot + Assertions.assertEquals("archive", FileUtils.getBaseName("archive.tar")); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/DocumentProcessorMagicNumberTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/DocumentProcessorMagicNumberTest.java new file mode 100644 index 0000000..8d49419 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/DocumentProcessorMagicNumberTest.java @@ -0,0 +1,149 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; +import org.opendataloader.pdf.api.Config; +import org.opendataloader.pdf.exceptions.InvalidPdfFileException; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +/** + * Regression tests for DocumentProcessor.preprocessing: every "input is not + * a usable PDF" failure mode must surface as a typed InvalidPdfFileException + * with a user-facing message, never a raw veraPDF IOException. + * + *

    Two failure modes are covered: + *

      + *
    • Missing {@code %PDF-} header (JPEG, empty file): caught by the + * magic-number guard before veraPDF is invoked. Message ends with + * {@code (missing %PDF- header)}.
    • + *
    • Header present but body corrupt or truncated: caught when + * {@code new PDDocument(pdfName)} fails inside veraPDF. Message ends + * with {@code (corrupted or truncated content)}, and the original + * IOException is preserved as the cause for diagnostics.
    • + *
    + */ +class DocumentProcessorMagicNumberTest { + + @TempDir + Path tempDir; + + @Test + void preprocessingRejectsJpegContentWithInvalidPdfFileException() throws IOException { + Path jpgAsPdf = tempDir.resolve("fake.pdf"); + // JPEG SOI + JFIF APP0 segment header — definitely not PDF. + Files.write(jpgAsPdf, new byte[]{ + (byte) 0xFF, (byte) 0xD8, (byte) 0xFF, (byte) 0xE0, + 0x00, 0x10, 'J', 'F', 'I', 'F', 0x00 + }); + + InvalidPdfFileException thrown = assertThrows( + InvalidPdfFileException.class, + () -> DocumentProcessor.preprocessing(jpgAsPdf.toString(), new Config())); + + String message = thrown.getMessage(); + assertNotNull(message); + assertTrue(message.contains("fake.pdf"), + "Message must include the file name; got: " + message); + assertTrue(message.contains("%PDF-"), + "Message must mention the %PDF- header; got: " + message); + } + + @Test + void preprocessingClassifiesBomPrefixedTruncatedPdfAsCorrupted() throws IOException { + Path bomPdf = tempDir.resolve("bom.pdf"); + // UTF-8 BOM + spaces + valid PDF header. The magic-number guard must + // accept this (1024-byte search window). veraPDF will still reject + // the file because the body is incomplete — but that failure must + // surface as InvalidPdfFileException with the "corrupted or + // truncated" message, not as a raw IOException and not with the + // missing-header wording. + byte[] prefix = new byte[]{(byte) 0xEF, (byte) 0xBB, (byte) 0xBF, ' ', ' '}; + byte[] header = "%PDF-1.4\n".getBytes(StandardCharsets.US_ASCII); + byte[] content = new byte[prefix.length + header.length]; + System.arraycopy(prefix, 0, content, 0, prefix.length); + System.arraycopy(header, 0, content, prefix.length, header.length); + Files.write(bomPdf, content); + + InvalidPdfFileException thrown = assertThrows( + InvalidPdfFileException.class, + () -> DocumentProcessor.preprocessing(bomPdf.toString(), new Config())); + + String message = thrown.getMessage(); + assertNotNull(message); + assertTrue(message.contains("bom.pdf"), + "Message must include the file name; got: " + message); + assertTrue(message.contains("corrupted or truncated"), + "Body-corruption case must use the 'corrupted or truncated' wording, " + + "not the missing-header wording; got: " + message); + assertFalse(message.contains("missing %PDF- header"), + "Header IS present (just preceded by BOM/whitespace) — must not " + + "be misreported as missing; got: " + message); + assertInstanceOf(IOException.class, thrown.getCause(), + "Original veraPDF IOException must be preserved as cause for diagnostics"); + } + + @Test + void preprocessingRejectsEmptyFile() throws IOException { + Path empty = tempDir.resolve("empty.pdf"); + Files.write(empty, new byte[0]); + + assertThrows(InvalidPdfFileException.class, + () -> DocumentProcessor.preprocessing(empty.toString(), new Config())); + } + + @Test + void preprocessingRejectsTruncatedPdfWithInvalidPdfFileException() throws IOException { + // Simulates a real download that was interrupted near the end of + // the file: valid %PDF- header at the start, plausible body bytes, + // but the trailing xref table that veraPDF requires is gone. + Path truncated = tempDir.resolve("truncated.pdf"); + byte[] head = "%PDF-1.6\n".getBytes(StandardCharsets.US_ASCII); + byte[] body = new byte[1024]; + for (int i = 0; i < body.length; i++) { + body[i] = (byte) ('a' + (i % 26)); + } + byte[] content = new byte[head.length + body.length]; + System.arraycopy(head, 0, content, 0, head.length); + System.arraycopy(body, 0, content, head.length, body.length); + Files.write(truncated, content); + + InvalidPdfFileException thrown = assertThrows( + InvalidPdfFileException.class, + () -> DocumentProcessor.preprocessing(truncated.toString(), new Config())); + + String message = thrown.getMessage(); + assertNotNull(message); + assertTrue(message.contains("truncated.pdf"), + "Message must include the file name; got: " + message); + assertTrue(message.contains("corrupted or truncated"), + "Truncated PDF must surface the 'corrupted or truncated' message; got: " + + message); + assertInstanceOf(IOException.class, thrown.getCause(), + "Original veraPDF IOException must be preserved as cause for diagnostics"); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/HeaderFooterProcessorTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/HeaderFooterProcessorTest.java new file mode 100644 index 0000000..afa4946 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/HeaderFooterProcessorTest.java @@ -0,0 +1,201 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.verapdf.tools.StaticResources; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticHeaderOrFooter; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.content.TextLine; +import org.verapdf.wcag.algorithms.entities.enums.SemanticType; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; + +import java.util.ArrayList; +import java.util.List; + +public class HeaderFooterProcessorTest { + + private void initContainers() { + StaticContainers.setIsDataLoader(true); + StaticContainers.setIsIgnoreCharactersWithoutUnicode(false); + StaticResources.setDocument(null); + StaticLayoutContainers.clearContainers(); + } + + @Test + public void testProcessHeadersAndFooters() { + initContainers(); + List> contents = new ArrayList<>(); + List page1Contents = new ArrayList<>(); + page1Contents.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 30.0, 20.0, 40.0), + "Header", 10, 30.0))); + page1Contents.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 20.0, 20.0, 30.0), + "Text", 10, 20.0))); + page1Contents.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 10.0, 20.0, 20.0), + "Footer1", 10, 10.0))); + List page2Contents = new ArrayList<>(); + page2Contents.add(new TextLine(new TextChunk(new BoundingBox(1, 10.0, 30.0, 20.0, 40.0), + "Header", 10, 30.0))); + page2Contents.add(new TextLine(new TextChunk(new BoundingBox(1, 10.0, 20.0, 20.0, 30.0), + "Different Text", 10, 20.0))); + page2Contents.add(new TextLine(new TextChunk(new BoundingBox(1, 10.0, 10.0, 20.0, 20.0), + "Footer2", 10, 10.0))); + contents.add(page1Contents); + contents.add(page2Contents); + HeaderFooterProcessor.processHeadersAndFooters(contents, false); + + Assertions.assertEquals(3, contents.get(0).size()); + Assertions.assertEquals(3, contents.get(1).size()); + + Assertions.assertTrue(contents.get(0).get(0) instanceof SemanticHeaderOrFooter); + Assertions.assertEquals(SemanticType.HEADER, ((SemanticHeaderOrFooter) contents.get(0).get(0)).getSemanticType()); + Assertions.assertTrue(contents.get(1).get(0) instanceof SemanticHeaderOrFooter); + Assertions.assertEquals(SemanticType.HEADER, ((SemanticHeaderOrFooter) contents.get(1).get(0)).getSemanticType()); + Assertions.assertTrue(contents.get(0).get(2) instanceof SemanticHeaderOrFooter); + Assertions.assertEquals(SemanticType.FOOTER, ((SemanticHeaderOrFooter) contents.get(0).get(2)).getSemanticType()); + Assertions.assertTrue(contents.get(1).get(2) instanceof SemanticHeaderOrFooter); + Assertions.assertEquals(SemanticType.FOOTER, ((SemanticHeaderOrFooter) contents.get(1).get(2)).getSemanticType()); + } + + /** + * Tests that body text repeated on adjacent pages is not absorbed into the footer. + * Reproduces #385: pages 19-20 of CERAGEM PDF have identical note text + * "※ 출수 중 출수 버튼을 터치하면 출수가 정지됩니다." at y=116 above the actual + * footer at y=34. The note was incorrectly classified as footer because it matched + * across pages. Page height is 595 (A4-like). + */ + @Test + public void testRepeatedBodyTextNotAbsorbedIntoFooter() { + initContainers(); + // Simulate 4 pages (17-20) with A4-like height (595pt) + // Page bounding box: [0, 0, 420, 595] + // Footer line at y=35 (bottom), body note at y=117 (well above footer) + double pageHeight = 595.0; + double footerY = 35.0; + double bodyNoteY = 117.0; + + List> contents = new ArrayList<>(); + for (int page = 0; page < 4; page++) { + List pageContents = new ArrayList<>(); + // Body heading at top + pageContents.add(new TextLine(new TextChunk( + new BoundingBox(page, 37.0, pageHeight - 60, 300.0, pageHeight - 30), + "Section " + (page + 1), 12, pageHeight - 30))); + // Body paragraph in middle + pageContents.add(new TextLine(new TextChunk( + new BoundingBox(page, 37.0, pageHeight / 2, 300.0, pageHeight / 2 + 30), + "Body content page " + (page + 1), 10, pageHeight / 2 + 30))); + + // Repeated body note — same text on pages 2 and 3 (simulating pages 19-20) + if (page == 2 || page == 3) { + pageContents.add(new TextLine(new TextChunk( + new BoundingBox(page, 223.0, bodyNoteY, 360.0, bodyNoteY + 18), + "※ Repeated note text", 6.5, bodyNoteY + 18))); + } + + // Actual footer line (repeating pattern across all pages) + String footerText = (page % 2 == 0) + ? "CGM BALANCE " + (page + 17) + : (page + 17) + " CERAGEM BALANCE USER MANUAL"; + pageContents.add(new TextLine(new TextChunk( + new BoundingBox(page, 37.0, footerY, 280.0, footerY + 9), + footerText, 7.5, footerY + 9))); + + contents.add(pageContents); + } + + HeaderFooterProcessor.processHeadersAndFooters(contents, false); + + // Verify: each page should have footer detected + for (int page = 0; page < 4; page++) { + List pageContent = contents.get(page); + IObject lastElement = pageContent.get(pageContent.size() - 1); + Assertions.assertTrue(lastElement instanceof SemanticHeaderOrFooter, + "Page " + page + ": last element should be footer"); + SemanticHeaderOrFooter footer = (SemanticHeaderOrFooter) lastElement; + Assertions.assertEquals(SemanticType.FOOTER, footer.getSemanticType()); + + // Critical: footer should contain only 1 element (the actual footer line), + // NOT the repeated body note + Assertions.assertEquals(1, footer.getContents().size(), + "Page " + page + ": footer should contain only the footer line, " + + "not absorb the repeated body note. Got " + footer.getContents().size() + " elements."); + } + + // Verify: the repeated note text on pages 2-3 should still be in body content + for (int page = 2; page <= 3; page++) { + List pageContent = contents.get(page); + boolean foundNote = false; + for (IObject obj : pageContent) { + if (!(obj instanceof SemanticHeaderOrFooter) && obj instanceof TextLine) { + TextLine line = (TextLine) obj; + if (line.getValue().contains("Repeated note")) { + foundNote = true; + break; + } + } + } + Assertions.assertTrue(foundNote, + "Page " + page + ": repeated note text should remain in body, not be absorbed into footer"); + } + } + + /** + * Positive control: two closely spaced footer lines (gap < 30pt) should be + * grouped into a single footer. Ensures the proximity check does not reject + * legitimate multi-line footers. + */ + @Test + public void testCloseFooterLinesAreGrouped() { + initContainers(); + List> contents = new ArrayList<>(); + for (int page = 0; page < 3; page++) { + List pageContents = new ArrayList<>(); + // Body text at top + pageContents.add(new TextLine(new TextChunk( + new BoundingBox(page, 37.0, 500.0, 300.0, 530.0), + "Body text page " + (page + 1), 10, 530.0))); + + // Two footer lines close together (11pt gap between nearest edges) + // Line 1: y=[55, 67] Line 2: y=[35, 44] gap = 55-44 = 11pt + pageContents.add(new TextLine(new TextChunk( + new BoundingBox(page, 37.0, 55.0, 280.0, 67.0), + "Copyright 2026", 7.5, 67.0))); + pageContents.add(new TextLine(new TextChunk( + new BoundingBox(page, 37.0, 35.0, 280.0, 44.0), + "Company Footer", 7.5, 44.0))); + + contents.add(pageContents); + } + + HeaderFooterProcessor.processHeadersAndFooters(contents, false); + + for (int page = 0; page < 3; page++) { + List pageContent = contents.get(page); + IObject lastElement = pageContent.get(pageContent.size() - 1); + Assertions.assertTrue(lastElement instanceof SemanticHeaderOrFooter, + "Page " + page + ": last element should be footer"); + SemanticHeaderOrFooter footer = (SemanticHeaderOrFooter) lastElement; + Assertions.assertEquals(SemanticType.FOOTER, footer.getSemanticType()); + Assertions.assertEquals(2, footer.getContents().size(), + "Page " + page + ": footer should contain both close footer lines (gap=11pt < 30pt)"); + } + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/HeadingProcessorTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/HeadingProcessorTest.java new file mode 100644 index 0000000..6fe3aa1 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/HeadingProcessorTest.java @@ -0,0 +1,74 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticHeading; +import org.verapdf.wcag.algorithms.entities.SemanticParagraph; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.content.TextLine; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; + +import java.util.ArrayList; +import java.util.List; + +public class HeadingProcessorTest { + + @Test + public void testProcessHeadings() { + StaticContainers.setIsDataLoader(true); + StaticLayoutContainers.setHeadings(new ArrayList<>()); + List contents = new ArrayList<>(); + SemanticParagraph paragraph1 = new SemanticParagraph(); + contents.add(paragraph1); + paragraph1.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 30.0, 20.0, 40.0), + "HEADING", "Font1", 20, 700, 0, 30.0, new double[]{0.0}, + null, 0))); + SemanticParagraph paragraph2 = new SemanticParagraph(); + contents.add(paragraph2); + paragraph2.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 20.0, 20.0, 30.0), + "Paragraph", "Font1", 10, 700, 0, 20.0, new double[]{0.5}, + null, 0))); + HeadingProcessor.processHeadings(contents, false); + Assertions.assertEquals(2, contents.size()); + Assertions.assertTrue(contents.get(0) instanceof SemanticHeading); + } + + @Test + public void testDetectHeadingsLevels() { + StaticContainers.setIsDataLoader(true); + List headings = new ArrayList<>(); + StaticLayoutContainers.setHeadings(headings); + SemanticHeading heading1 = new SemanticHeading(); + headings.add(heading1); + heading1.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 30.0, 20.0, 40.0), + "HEADING", "Font1", 20, 700, 0, 30.0, new double[]{0.0}, + null, 0))); + SemanticHeading heading2 = new SemanticHeading(); + headings.add(heading2); + heading2.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 20.0, 20.0, 30.0), + "Paragraph", "Font1", 10, 700, 0, 20.0, new double[]{0.5}, + null, 0))); + HeadingProcessor.detectHeadingsLevels(); + Assertions.assertEquals(2, headings.size()); + Assertions.assertEquals(1, headings.get(0).getHeadingLevel()); + Assertions.assertEquals(2, headings.get(1).getHeadingLevel()); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/HybridDocumentProcessorTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/HybridDocumentProcessorTest.java new file mode 100644 index 0000000..34d256e --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/HybridDocumentProcessorTest.java @@ -0,0 +1,595 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.opendataloader.pdf.api.Config; +import org.opendataloader.pdf.hybrid.HancomAISchemaTransformer; +import org.opendataloader.pdf.hybrid.HybridClient.HybridRequest; +import org.opendataloader.pdf.hybrid.HybridClient.OutputFormat; +import org.opendataloader.pdf.hybrid.HybridConfig; +import org.opendataloader.pdf.hybrid.HybridSchemaTransformer; +import org.opendataloader.pdf.hybrid.TriageProcessor.TriageDecision; +import org.opendataloader.pdf.hybrid.TriageProcessor.TriageResult; +import org.opendataloader.pdf.hybrid.TriageProcessor.TriageSignals; + +import java.util.ArrayList; +import java.util.EnumSet; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.TreeSet; + +/** + * Unit tests for HybridDocumentProcessor. + * + *

    Note: Full integration tests require a running docling-fast server. + * These tests focus on the triage-based routing logic. + */ +public class HybridDocumentProcessorTest { + + @Test + public void testHybridModeEnabled() { + Config config = new Config(); + config.setHybrid("docling-fast"); + + Assertions.assertTrue(config.isHybridEnabled()); + Assertions.assertEquals("docling-fast", config.getHybrid()); + } + + @Test + public void testHybridModeDisabled() { + Config config = new Config(); + config.setHybrid("off"); + + Assertions.assertFalse(config.isHybridEnabled()); + Assertions.assertEquals("off", config.getHybrid()); + } + + @Test + public void testHybridModeDefaultIsOff() { + Config config = new Config(); + + Assertions.assertFalse(config.isHybridEnabled()); + Assertions.assertEquals("off", config.getHybrid()); + } + + @Test + public void testHybridConfigDefaults() { + HybridConfig config = new HybridConfig(); + + Assertions.assertEquals(HybridConfig.DEFAULT_TIMEOUT_MS, config.getTimeoutMs()); + Assertions.assertEquals(HybridConfig.DEFAULT_MAX_CONCURRENT_REQUESTS, config.getMaxConcurrentRequests()); + Assertions.assertFalse(config.isFallbackToJava(), "fallback should be disabled by default to fail-fast when hybrid server is unavailable"); + Assertions.assertNull(config.getUrl()); + } + + @Test + public void testHybridConfigEffectiveUrl() { + HybridConfig config = new HybridConfig(); + + // Default URL for docling-fast + Assertions.assertEquals(HybridConfig.DOCLING_FAST_DEFAULT_URL, config.getEffectiveUrl("docling-fast")); + + // Custom URL overrides default + config.setUrl("http://custom:8080"); + Assertions.assertEquals("http://custom:8080", config.getEffectiveUrl("docling-fast")); + } + + @Test + public void testTriageResultFilterByDecision() { + Map triageResults = new HashMap<>(); + + TriageSignals emptySignals = TriageSignals.empty(); + triageResults.put(0, TriageResult.java(0, 0.9, emptySignals)); + triageResults.put(1, TriageResult.backend(1, 0.8, emptySignals)); + triageResults.put(2, TriageResult.java(2, 0.95, emptySignals)); + triageResults.put(3, TriageResult.backend(3, 0.85, emptySignals)); + + // Filter by JAVA + Set javaPages = new HashSet<>(); + for (Map.Entry entry : triageResults.entrySet()) { + if (entry.getValue().getDecision() == TriageDecision.JAVA) { + javaPages.add(entry.getKey()); + } + } + + // Filter by BACKEND + Set backendPages = new HashSet<>(); + for (Map.Entry entry : triageResults.entrySet()) { + if (entry.getValue().getDecision() == TriageDecision.BACKEND) { + backendPages.add(entry.getKey()); + } + } + + Assertions.assertEquals(2, javaPages.size()); + Assertions.assertTrue(javaPages.contains(0)); + Assertions.assertTrue(javaPages.contains(2)); + + Assertions.assertEquals(2, backendPages.size()); + Assertions.assertTrue(backendPages.contains(1)); + Assertions.assertTrue(backendPages.contains(3)); + } + + @Test + public void testPageNumberConversion() { + // Test 0-indexed to 1-indexed conversion for API + Set zeroIndexed = new HashSet<>(); + zeroIndexed.add(0); + zeroIndexed.add(2); + zeroIndexed.add(5); + + Set oneIndexed = new HashSet<>(); + for (Integer page : zeroIndexed) { + oneIndexed.add(page + 1); + } + + Assertions.assertEquals(3, oneIndexed.size()); + Assertions.assertTrue(oneIndexed.contains(1)); + Assertions.assertTrue(oneIndexed.contains(3)); + Assertions.assertTrue(oneIndexed.contains(6)); + } + + @Test + public void testShouldProcessPageWithNullFilter() { + // null filter means process all pages + Assertions.assertTrue(shouldProcessPage(0, null)); + Assertions.assertTrue(shouldProcessPage(5, null)); + Assertions.assertTrue(shouldProcessPage(100, null)); + } + + @Test + public void testShouldProcessPageWithFilter() { + Set filter = new HashSet<>(); + filter.add(0); + filter.add(2); + filter.add(5); + + Assertions.assertTrue(shouldProcessPage(0, filter)); + Assertions.assertFalse(shouldProcessPage(1, filter)); + Assertions.assertTrue(shouldProcessPage(2, filter)); + Assertions.assertFalse(shouldProcessPage(3, filter)); + Assertions.assertFalse(shouldProcessPage(4, filter)); + Assertions.assertTrue(shouldProcessPage(5, filter)); + } + + @Test + public void testInvalidHybridBackendThrows() { + Config config = new Config(); + Assertions.assertThrows(IllegalArgumentException.class, () -> { + config.setHybrid("invalid"); + }); + } + + @Test + public void testHybridConfigTimeout() { + HybridConfig config = new HybridConfig(); + config.setTimeoutMs(60000); + Assertions.assertEquals(60000, config.getTimeoutMs()); + + config.setTimeoutMs(0); + Assertions.assertEquals(0, config.getTimeoutMs()); + + Assertions.assertThrows(IllegalArgumentException.class, () -> { + config.setTimeoutMs(-1000); + }); + } + + @Test + public void testHybridConfigMaxConcurrentRequests() { + HybridConfig config = new HybridConfig(); + config.setMaxConcurrentRequests(8); + Assertions.assertEquals(8, config.getMaxConcurrentRequests()); + + Assertions.assertThrows(IllegalArgumentException.class, () -> { + config.setMaxConcurrentRequests(0); + }); + } + + @Test + public void testHybridConfigFallbackToggle() { + HybridConfig config = new HybridConfig(); + + // Default is false (fail-fast when hybrid server is unavailable) + Assertions.assertFalse(config.isFallbackToJava()); + + config.setFallbackToJava(true); + Assertions.assertTrue(config.isFallbackToJava()); + + config.setFallbackToJava(false); + Assertions.assertFalse(config.isFallbackToJava()); + } + + // Helper method matching HybridDocumentProcessor logic + private static boolean shouldProcessPage(int pageNumber, Set pagesToProcess) { + return pagesToProcess == null || pagesToProcess.contains(pageNumber); + } + + // ===== OutputFormat Tests ===== + + @Test + public void testOutputFormatApiValue() { + Assertions.assertEquals("json", OutputFormat.JSON.getApiValue()); + Assertions.assertEquals("md", OutputFormat.MARKDOWN.getApiValue()); + Assertions.assertEquals("html", OutputFormat.HTML.getApiValue()); + } + + @Test + public void testHybridRequestDefaultOutputFormats() { + byte[] pdfBytes = new byte[]{1, 2, 3}; + HybridRequest request = HybridRequest.allPages(pdfBytes); + + // Default should include all formats + Set formats = request.getOutputFormats(); + Assertions.assertEquals(3, formats.size()); + Assertions.assertTrue(formats.contains(OutputFormat.JSON)); + Assertions.assertTrue(formats.contains(OutputFormat.MARKDOWN)); + Assertions.assertTrue(formats.contains(OutputFormat.HTML)); + Assertions.assertTrue(request.wantsJson()); + Assertions.assertTrue(request.wantsMarkdown()); + Assertions.assertTrue(request.wantsHtml()); + } + + @Test + public void testHybridRequestWithJsonOnly() { + byte[] pdfBytes = new byte[]{1, 2, 3}; + Set jsonOnly = EnumSet.of(OutputFormat.JSON); + HybridRequest request = HybridRequest.allPages(pdfBytes, jsonOnly); + + Set formats = request.getOutputFormats(); + Assertions.assertEquals(1, formats.size()); + Assertions.assertTrue(formats.contains(OutputFormat.JSON)); + Assertions.assertFalse(formats.contains(OutputFormat.MARKDOWN)); + Assertions.assertTrue(request.wantsJson()); + Assertions.assertFalse(request.wantsMarkdown()); + } + + @Test + public void testHybridRequestWithMarkdownOnly() { + byte[] pdfBytes = new byte[]{1, 2, 3}; + Set mdOnly = EnumSet.of(OutputFormat.MARKDOWN); + HybridRequest request = HybridRequest.allPages(pdfBytes, mdOnly); + + Set formats = request.getOutputFormats(); + Assertions.assertEquals(1, formats.size()); + Assertions.assertFalse(formats.contains(OutputFormat.JSON)); + Assertions.assertTrue(formats.contains(OutputFormat.MARKDOWN)); + Assertions.assertFalse(request.wantsJson()); + Assertions.assertTrue(request.wantsMarkdown()); + } + + @Test + public void testHybridRequestEmptyFormatsFallsBackToAll() { + byte[] pdfBytes = new byte[]{1, 2, 3}; + Set empty = EnumSet.noneOf(OutputFormat.class); + HybridRequest request = HybridRequest.allPages(pdfBytes, empty); + + // Empty should fallback to all formats + Set formats = request.getOutputFormats(); + Assertions.assertEquals(3, formats.size()); + Assertions.assertTrue(formats.contains(OutputFormat.JSON)); + Assertions.assertTrue(formats.contains(OutputFormat.MARKDOWN)); + Assertions.assertTrue(formats.contains(OutputFormat.HTML)); + } + + @Test + public void testHybridRequestNullFormatsFallsBackToAll() { + byte[] pdfBytes = new byte[]{1, 2, 3}; + HybridRequest request = HybridRequest.allPages(pdfBytes, null); + + // null should fallback to all formats + Set formats = request.getOutputFormats(); + Assertions.assertEquals(3, formats.size()); + Assertions.assertTrue(formats.contains(OutputFormat.JSON)); + Assertions.assertTrue(formats.contains(OutputFormat.MARKDOWN)); + Assertions.assertTrue(formats.contains(OutputFormat.HTML)); + } + + @Test + public void testHybridRequestWithHtmlOnly() { + byte[] pdfBytes = new byte[]{1, 2, 3}; + Set htmlOnly = EnumSet.of(OutputFormat.HTML); + HybridRequest request = HybridRequest.allPages(pdfBytes, htmlOnly); + + Set formats = request.getOutputFormats(); + Assertions.assertEquals(1, formats.size()); + Assertions.assertFalse(formats.contains(OutputFormat.JSON)); + Assertions.assertFalse(formats.contains(OutputFormat.MARKDOWN)); + Assertions.assertTrue(formats.contains(OutputFormat.HTML)); + Assertions.assertFalse(request.wantsJson()); + Assertions.assertFalse(request.wantsMarkdown()); + Assertions.assertTrue(request.wantsHtml()); + } + + // ===== HybridConfig Mode Tests ===== + + @Test + public void testHybridConfigModeDefaults() { + HybridConfig config = new HybridConfig(); + + Assertions.assertEquals(HybridConfig.MODE_AUTO, config.getMode()); + Assertions.assertFalse(config.isFullMode()); + } + + @Test + public void testHybridConfigModeFullMode() { + HybridConfig config = new HybridConfig(); + config.setMode(HybridConfig.MODE_FULL); + + Assertions.assertEquals(HybridConfig.MODE_FULL, config.getMode()); + Assertions.assertTrue(config.isFullMode()); + } + + @Test + public void testDoclingBackendEnabled() { + Config config = new Config(); + config.setHybrid("docling"); + + Assertions.assertTrue(config.isHybridEnabled()); + Assertions.assertEquals("docling", config.getHybrid()); + } + + @Test + public void testDoclingEffectiveUrl() { + HybridConfig config = new HybridConfig(); + + // docling uses same URL as docling-fast + Assertions.assertEquals(HybridConfig.DOCLING_FAST_DEFAULT_URL, config.getEffectiveUrl("docling")); + Assertions.assertEquals(HybridConfig.DOCLING_FAST_DEFAULT_URL, config.getEffectiveUrl("docling-fast")); + } + + @Test + public void testHancomAIBackendEnabled() { + Config config = new Config(); + config.setHybrid("hancom-ai"); + + Assertions.assertTrue(config.isHybridEnabled()); + Assertions.assertEquals("hancom-ai", config.getHybrid()); + } + + @Test + public void testCreateTransformerReturnsHancomAISchemaTransformer() throws Exception { + Config config = new Config(); + config.setHybrid("hancom-ai"); + + // createTransformer is private static — use reflection to verify it returns the correct type + java.lang.reflect.Method method = HybridDocumentProcessor.class.getDeclaredMethod("createTransformer", Config.class); + method.setAccessible(true); + HybridSchemaTransformer transformer = (HybridSchemaTransformer) method.invoke(null, config); + + Assertions.assertNotNull(transformer); + Assertions.assertInstanceOf(HancomAISchemaTransformer.class, transformer); + } + + // ===== Backend Chunk Splitting Tests ===== + + /** Helper that mirrors the chunk-splitting logic in processBackendPath. */ + private static List> splitIntoChunks(Set pageNumbers, int chunkSize) { + List sorted = new ArrayList<>(new TreeSet<>(pageNumbers)); + List> chunks = new ArrayList<>(); + for (int i = 0; i < sorted.size(); i += chunkSize) { + chunks.add(sorted.subList(i, Math.min(i + chunkSize, sorted.size()))); + } + return chunks; + } + + @Test + public void testChunkSplitting_zeroPages() { + List> chunks = splitIntoChunks(new HashSet<>(), + HybridDocumentProcessor.BACKEND_CHUNK_SIZE); + Assertions.assertTrue(chunks.isEmpty()); + } + + @Test + public void testChunkSplitting_exactlyChunkSize() { + Set pages = new HashSet<>(); + for (int i = 0; i < HybridDocumentProcessor.BACKEND_CHUNK_SIZE; i++) { + pages.add(i); + } + List> chunks = splitIntoChunks(pages, + HybridDocumentProcessor.BACKEND_CHUNK_SIZE); + + Assertions.assertEquals(1, chunks.size()); + Assertions.assertEquals(HybridDocumentProcessor.BACKEND_CHUNK_SIZE, chunks.get(0).size()); + } + + @Test + public void testChunkSplitting_chunkSizePlusOne() { + int size = HybridDocumentProcessor.BACKEND_CHUNK_SIZE + 1; + Set pages = new HashSet<>(); + for (int i = 0; i < size; i++) { + pages.add(i); + } + List> chunks = splitIntoChunks(pages, + HybridDocumentProcessor.BACKEND_CHUNK_SIZE); + + Assertions.assertEquals(2, chunks.size()); + Assertions.assertEquals(HybridDocumentProcessor.BACKEND_CHUNK_SIZE, chunks.get(0).size()); + Assertions.assertEquals(1, chunks.get(1).size()); + } + + @Test + public void testChunkSplitting_singlePage() { + Set pages = new HashSet<>(); + pages.add(42); + List> chunks = splitIntoChunks(pages, + HybridDocumentProcessor.BACKEND_CHUNK_SIZE); + + Assertions.assertEquals(1, chunks.size()); + Assertions.assertEquals(1, chunks.get(0).size()); + Assertions.assertEquals(42, (int) chunks.get(0).get(0)); + } + + @Test + public void testChunkSplitting_nonContiguousPages() { + // Simulate triage routing every 5th page to backend + Set pages = new HashSet<>(); + for (int i = 0; i < 300; i += 5) { + pages.add(i); + } + // 60 pages total → 2 chunks (50 + 10) + List> chunks = splitIntoChunks(pages, + HybridDocumentProcessor.BACKEND_CHUNK_SIZE); + + Assertions.assertEquals(2, chunks.size()); + Assertions.assertEquals(HybridDocumentProcessor.BACKEND_CHUNK_SIZE, chunks.get(0).size()); + Assertions.assertEquals(10, chunks.get(1).size()); + + // Verify sorted order + for (List chunk : chunks) { + for (int i = 1; i < chunk.size(); i++) { + Assertions.assertTrue(chunk.get(i) > chunk.get(i - 1), + "Pages within chunk should be sorted"); + } + } + } + + @Test + public void testChunkSplitting_largeDocument() { + // 154 pages like the reporter's PDF + Set pages = new HashSet<>(); + for (int i = 0; i < 154; i++) { + pages.add(i); + } + List> chunks = splitIntoChunks(pages, + HybridDocumentProcessor.BACKEND_CHUNK_SIZE); + + Assertions.assertEquals(4, chunks.size()); // 50 + 50 + 50 + 4 + Assertions.assertEquals(50, chunks.get(0).size()); + Assertions.assertEquals(50, chunks.get(1).size()); + Assertions.assertEquals(50, chunks.get(2).size()); + Assertions.assertEquals(4, chunks.get(3).size()); + + // All pages accounted for + Set allChunked = new HashSet<>(); + for (List chunk : chunks) { + allChunked.addAll(chunk); + } + Assertions.assertEquals(pages, allChunked); + } + + // failFastIfBackendFailedWithoutFallback — fail-fast contract for backend failures. + + @Test + public void testFailFast_EmptyFailedPages_NoFallback_DoesNotThrow() throws Exception { + // Contract: no failed pages means processing succeeded — never throw, + // regardless of fallback flag. + HybridConfig config = new HybridConfig(); + config.setFallbackToJava(false); + + HybridDocumentProcessor.failFastIfBackendFailedWithoutFallback(new HashSet<>(), config); + } + + @Test + public void testFailFast_EmptyFailedPages_WithFallback_DoesNotThrow() throws Exception { + HybridConfig config = new HybridConfig(); + config.setFallbackToJava(true); + + HybridDocumentProcessor.failFastIfBackendFailedWithoutFallback(new HashSet<>(), config); + } + + @Test + public void testFailFast_NonEmptyFailedPages_WithFallback_DoesNotThrow() throws Exception { + // Contract: when fallback is enabled, failed pages are reprocessed via Java + // path elsewhere — this helper must stay silent and never throw. + HybridConfig config = new HybridConfig(); + config.setFallbackToJava(true); + + Set failed = new HashSet<>(); + failed.add(0); + failed.add(3); + + HybridDocumentProcessor.failFastIfBackendFailedWithoutFallback(failed, config); + } + + @Test + public void testFailFast_AllPagesFailed_NoFallback_ThrowsWithPageNumbers() { + // Contract: backend left every page unprocessed and fallback is disabled — + // throw so the caller (CLI / library wrapper) can surface a non-zero exit + // instead of producing an empty result silently. + HybridConfig config = new HybridConfig(); + config.setFallbackToJava(false); + + Set failed = new HashSet<>(); + for (int i = 0; i < 21; i++) { + failed.add(i); + } + + java.io.IOException ex = Assertions.assertThrows(java.io.IOException.class, () -> + HybridDocumentProcessor.failFastIfBackendFailedWithoutFallback(failed, config)); + + // Message must carry enough information that automation reading stderr can + // identify which pages failed without re-running with verbose logs. + // Anchor on the rendered list prefix/suffix so the assertion fails if the + // list itself disappears — a bare contains("1") would pass on "1 page(s)". + Assertions.assertTrue(ex.getMessage().contains("21 page(s)"), + "message should include failed page count: " + ex.getMessage()); + Assertions.assertTrue(ex.getMessage().contains("[1, 2,"), + "message should render 1-indexed page list starting at 1: " + ex.getMessage()); + Assertions.assertTrue(ex.getMessage().contains(", 21]"), + "message should render 1-indexed page list ending at 21: " + ex.getMessage()); + Assertions.assertTrue(ex.getMessage().contains("fallback disabled"), + "message should explain why processing failed: " + ex.getMessage()); + } + + @Test + public void testFailFast_PartialPagesFailed_NoFallback_ThrowsWithPageNumbers() { + // Contract: partial failure is treated the same as total failure when + // fallback is disabled — any unprocessed page must surface as a non-zero + // exit, otherwise downstream consumers cannot tell a sparse result from + // a successful one. + HybridConfig config = new HybridConfig(); + config.setFallbackToJava(false); + + Set failed = new HashSet<>(); + failed.add(1); // page 2 (1-indexed) + failed.add(5); // page 6 + failed.add(20); // page 21 + + java.io.IOException ex = Assertions.assertThrows(java.io.IOException.class, () -> + HybridDocumentProcessor.failFastIfBackendFailedWithoutFallback(failed, config)); + + Assertions.assertTrue(ex.getMessage().contains("3 page(s)"), + "message should include failed page count: " + ex.getMessage()); + // The exact rendered list — both that the right pages are present and + // that they are sorted 1-indexed ascending. + Assertions.assertTrue(ex.getMessage().contains("[2, 6, 21]"), + "message should render sorted 1-indexed list [2, 6, 21]: " + ex.getMessage()); + } + + @Test + public void testFailFast_SinglePageFailed_RendersSingleElementList() { + // Contract guard for single-element list rendering. Keeps the + // [] form honest when only one page failed (the most common + // partial-failure case in practice). + HybridConfig config = new HybridConfig(); + config.setFallbackToJava(false); + + Set failed = new HashSet<>(); + failed.add(6); // page 7 (1-indexed) + + java.io.IOException ex = Assertions.assertThrows(java.io.IOException.class, () -> + HybridDocumentProcessor.failFastIfBackendFailedWithoutFallback(failed, config)); + + Assertions.assertTrue(ex.getMessage().contains("1 page(s)"), + "message should include failed page count: " + ex.getMessage()); + Assertions.assertTrue(ex.getMessage().contains("[7]"), + "message should render single-element list as [7]: " + ex.getMessage()); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/LevelProcessorTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/LevelProcessorTest.java new file mode 100644 index 0000000..b64466b --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/LevelProcessorTest.java @@ -0,0 +1,159 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticParagraph; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.content.TextLine; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.entities.lists.ListItem; +import org.verapdf.wcag.algorithms.entities.lists.PDFList; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderRow; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.listLabelsDetection.NumberingStyleNames; + +import java.util.ArrayList; +import java.util.List; + +public class LevelProcessorTest { + + @Test + public void testDetectLevelsForParagraphs() { + StaticContainers.setIsDataLoader(true); + StaticLayoutContainers.setHeadings(new ArrayList<>()); + List> contents = new ArrayList<>(); + List pageContents = new ArrayList<>(); + contents.add(pageContents); + SemanticParagraph paragraph1 = new SemanticParagraph(); + pageContents.add(paragraph1); + paragraph1.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 30.0, 20.0, 40.0), + "- test", "Font1", 20, 700, 0, 30.0, new double[]{0.0}, + null, 0))); + SemanticParagraph paragraph2 = new SemanticParagraph(); + pageContents.add(paragraph2); + paragraph2.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 20.0, 20.0, 30.0), + "+ test", "Font1", 10, 700, 0, 20.0, new double[]{0.5}, + null, 0))); + LevelProcessor.detectLevels(contents); + Assertions.assertEquals(2, contents.get(0).size()); + Assertions.assertEquals("1", contents.get(0).get(0).getLevel()); + Assertions.assertEquals("2", contents.get(0).get(1).getLevel()); + } + + @Test + public void testDetectLevelsForLists() { + StaticContainers.setIsDataLoader(true); + StaticLayoutContainers.setHeadings(new ArrayList<>()); + List> contents = new ArrayList<>(); + List pageContents = new ArrayList<>(); + contents.add(pageContents); + PDFList list1 = new PDFList(); + list1.setNumberingStyle(NumberingStyleNames.ARABIC_NUMBERS); + PDFList list2 = new PDFList(); + list2.setNumberingStyle(NumberingStyleNames.ARABIC_NUMBERS); + PDFList list3 = new PDFList(); + list3.setNumberingStyle(NumberingStyleNames.UNORDERED); + pageContents.add(list1); + pageContents.add(list2); + pageContents.add(list3); + ListItem listItem1 = new ListItem(new BoundingBox(), 1l); + listItem1.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 70.0, 20.0, 80.0), + "1. test", 10, 70.0))); + list1.add(listItem1); + ListItem listItem2 = new ListItem(new BoundingBox(), 2l); + listItem2.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 60.0, 20.0, 70.0), + "2. test", 10, 60.0))); + list1.add(listItem2); + ListItem listItem3 = new ListItem(new BoundingBox(), 3l); + listItem3.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 50.0, 20.0, 60.0), + "3. test", 10, 50.0))); + list2.add(listItem3); + ListItem listItem4 = new ListItem(new BoundingBox(), 4l); + listItem4.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 40.0, 20.0, 50.0), + "4. test", 10, 40.0))); + list1.add(listItem2); + ListItem listItem5 = new ListItem(new BoundingBox(), 3l); + listItem5.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 30.0, 20.0, 40.0), + "- test", 10, 30.0))); + list3.add(listItem5); + ListItem listItem6 = new ListItem(new BoundingBox(), 4l); + listItem6.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 20.0, 20.0, 30.0), + "- test", 10, 20.0))); + list3.add(listItem6); + LevelProcessor.detectLevels(contents); + Assertions.assertEquals(3, contents.get(0).size()); + Assertions.assertEquals("1", contents.get(0).get(0).getLevel()); + Assertions.assertEquals("1", contents.get(0).get(1).getLevel()); + Assertions.assertEquals("2", contents.get(0).get(2).getLevel()); + } + + @Test + public void testDetectLevelsForTables() { + StaticContainers.setIsDataLoader(true); + StaticLayoutContainers.setHeadings(new ArrayList<>()); + List> contents = new ArrayList<>(); + List pageContents1 = new ArrayList<>(); + contents.add(pageContents1); + TableBorder tableBorder1 = new TableBorder(2, 2); + tableBorder1.setRecognizedStructureId(1l); + tableBorder1.setBoundingBox(new BoundingBox(0, 10.0, 10.0, 30.0, 30.0)); + TableBorderRow row1 = new TableBorderRow(0, 2, 0l); + row1.setBoundingBox(new BoundingBox(0, 10.0, 20.0, 30.0, 30.0)); + row1.getCells()[0] = new TableBorderCell(0, 0, 1, 1, 0l); + row1.getCells()[0].setBoundingBox(new BoundingBox(0, 10.0, 20.0, 20.0, 30.0)); + row1.getCells()[1] = new TableBorderCell(0, 1, 1, 1, 0l); + row1.getCells()[1].setBoundingBox(new BoundingBox(0, 20.0, 20.0, 30.0, 30.0)); + tableBorder1.getRows()[0] = row1; + TableBorderRow row2 = new TableBorderRow(0, 2, 0l); + row2.setBoundingBox(new BoundingBox(0, 10.0, 10.0, 30.0, 20.0)); + row2.getCells()[0] = new TableBorderCell(0, 0, 1, 1, 0l); + row2.getCells()[0].setBoundingBox(new BoundingBox(0, 10.0, 10.0, 20.0, 20.0)); + row2.getCells()[1] = new TableBorderCell(0, 1, 1, 1, 0l); + row2.getCells()[1].setBoundingBox(new BoundingBox(0, 20.0, 10.0, 30.0, 20.0)); + tableBorder1.getRows()[1] = row2; + pageContents1.add(tableBorder1); + + List pageContents2 = new ArrayList<>(); + contents.add(pageContents2); + TableBorder tableBorder2 = new TableBorder(2, 2); + tableBorder2.setRecognizedStructureId(2l); + tableBorder2.setBoundingBox(new BoundingBox(1, 10.0, 10.0, 30.0, 30.0)); + row1 = new TableBorderRow(0, 2, 0l); + row1.setBoundingBox(new BoundingBox(1, 10.0, 20.0, 30.0, 30.0)); + row1.getCells()[0] = new TableBorderCell(0, 0, 1, 1, 0l); + row1.getCells()[0].setBoundingBox(new BoundingBox(1, 10.0, 20.0, 20.0, 30.0)); + row1.getCells()[1] = new TableBorderCell(0, 1, 1, 1, 0l); + row1.getCells()[1].setBoundingBox(new BoundingBox(1, 20.0, 20.0, 30.0, 30.0)); + tableBorder2.getRows()[0] = row1; + row2 = new TableBorderRow(0, 2, 0l); + row2.setBoundingBox(new BoundingBox(1, 10.0, 10.0, 30.0, 20.0)); + row2.getCells()[0] = new TableBorderCell(1, 0, 1, 1, 0l); + row2.getCells()[0].setBoundingBox(new BoundingBox(1, 10.0, 10.0, 20.0, 20.0)); + row2.getCells()[1] = new TableBorderCell(1, 1, 1, 1, 0l); + row2.getCells()[1].setBoundingBox(new BoundingBox(1, 20.0, 10.0, 30.0, 20.0)); + tableBorder2.getRows()[1] = row2; + pageContents2.add(tableBorder2); + LevelProcessor.detectLevels(contents); + Assertions.assertEquals("1", contents.get(0).get(0).getLevel()); + Assertions.assertEquals("2", contents.get(1).get(0).getLevel()); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/ListProcessorTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/ListProcessorTest.java new file mode 100644 index 0000000..71b77f1 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/ListProcessorTest.java @@ -0,0 +1,149 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticParagraph; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.content.TextLine; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.entities.lists.ListItem; +import org.verapdf.wcag.algorithms.entities.lists.PDFList; +import org.verapdf.wcag.algorithms.entities.maps.AccumulatedNodeMapper; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; + +import java.util.ArrayList; +import java.util.List; + +public class ListProcessorTest { + + @Test + public void testProcessLists() { + StaticContainers.setIsIgnoreCharactersWithoutUnicode(false); + StaticContainers.setIsDataLoader(true); + List pageContents = new ArrayList<>(); + List> contents = new ArrayList<>(); + contents.add(pageContents); + pageContents.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 30.0, 20.0, 40.0), + "1. test", 10, 30.0))); + pageContents.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 20.0, 20.0, 30.0), + "2. test", 10, 20.0))); + ListProcessor.processLists(contents, false); + Assertions.assertEquals(1, contents.get(0).size()); + Assertions.assertTrue(contents.get(0).get(0) instanceof PDFList); + } + + @Test + public void testProcessListsFromTextNodes() { + StaticContainers.setIsIgnoreCharactersWithoutUnicode(false); + StaticContainers.setIsDataLoader(true); + StaticContainers.setAccumulatedNodeMapper(new AccumulatedNodeMapper()); + List contents = new ArrayList<>(); + SemanticParagraph paragraph1 = new SemanticParagraph(); + contents.add(paragraph1); + paragraph1.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 30.0, 20.0, 40.0), + "1. test", 10, 30.0))); + SemanticParagraph paragraph2 = new SemanticParagraph(); + contents.add(paragraph2); + paragraph2.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 20.0, 20.0, 30.0), + "2. test", 10, 20.0))); + contents = ListProcessor.processListsFromTextNodes(contents); + Assertions.assertEquals(1, contents.size()); + Assertions.assertTrue(contents.get(0) instanceof PDFList); + } + + @Test + public void testCheckNeighborLists() { + StaticContainers.setIsDataLoader(true); + List pageContents = new ArrayList<>(); + List> contents = new ArrayList<>(); + contents.add(pageContents); + PDFList list1 = new PDFList(); + PDFList list2 = new PDFList(); + pageContents.add(list1); + pageContents.add(list2); + ListItem listItem1 = new ListItem(new BoundingBox(), 1l); + listItem1.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 50.0, 20.0, 60.0), + "1. test", 10, 50.0))); + list1.add(listItem1); + ListItem listItem2 = new ListItem(new BoundingBox(), 2l); + listItem2.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 40.0, 20.0, 50.0), + "2. test", 10, 40.0))); + list1.add(listItem2); + ListItem listItem3 = new ListItem(new BoundingBox(), 3l); + listItem3.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 30.0, 20.0, 40.0), + "3. test", 10, 30.0))); + list2.add(listItem3); + ListItem listItem4 = new ListItem(new BoundingBox(), 4l); + listItem4.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 20.0, 20.0, 30.0), + "4. test", 10, 20.0))); + list2.add(listItem4); + ListProcessor.checkNeighborLists(contents); + contents.set(0, DocumentProcessor.removeNullObjectsFromList(contents.get(0))); + Assertions.assertEquals(1, contents.size()); + Assertions.assertEquals(1, contents.get(0).size()); + Assertions.assertTrue(contents.get(0).get(0) instanceof PDFList); + Assertions.assertEquals(4, ((PDFList) contents.get(0).get(0)).getNumberOfListItems()); + } + + @Test + public void testProcessListsWithSingleCharacterLabels() { + StaticContainers.setIsIgnoreCharactersWithoutUnicode(false); + StaticContainers.setIsDataLoader(true); + List pageContents = new ArrayList<>(); + List> contents = new ArrayList<>(); + contents.add(pageContents); + pageContents.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 50.0, 20.0, 60.0), + "1", 10, 50.0))); + pageContents.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 40.0, 20.0, 50.0), + "가. 첫 번째 항목", 10, 40.0))); + pageContents.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 30.0, 20.0, 40.0), + "나. 두 번째 항목", 10, 30.0))); + pageContents.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 20.0, 20.0, 30.0), + ")", 10, 20.0))); + int originalSize = pageContents.size(); + ListProcessor.processLists(contents, false); + Assertions.assertFalse(contents.get(0).isEmpty(), + "Content should not be empty after processing"); + Assertions.assertTrue(contents.get(0).size() <= originalSize, + "Content size should not exceed original size"); + } + + @Test + public void testProcessListsWithEdgeCaseLabels() { + StaticContainers.setIsIgnoreCharactersWithoutUnicode(false); + StaticContainers.setIsDataLoader(true); + List pageContents = new ArrayList<>(); + List> contents = new ArrayList<>(); + contents.add(pageContents); + pageContents.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 50.0, 20.0, 60.0), + "a", 10, 50.0))); + pageContents.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 40.0, 20.0, 50.0), + "b", 10, 40.0))); + pageContents.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 30.0, 20.0, 40.0), + "1)", 10, 30.0))); + pageContents.add(new TextLine(new TextChunk(new BoundingBox(0, 10.0, 20.0, 20.0, 30.0), + "2)", 10, 20.0))); + int originalSize = pageContents.size(); + ListProcessor.processLists(contents, false); + Assertions.assertFalse(contents.get(0).isEmpty(), + "Content should not be empty after processing"); + Assertions.assertTrue(contents.get(0).size() <= originalSize, + "Content size should not exceed original size"); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/ParagraphProcessorTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/ParagraphProcessorTest.java new file mode 100644 index 0000000..593650d --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/ParagraphProcessorTest.java @@ -0,0 +1,103 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticParagraph; +import org.verapdf.wcag.algorithms.entities.content.TextBlock; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.content.TextLine; +import org.verapdf.wcag.algorithms.entities.enums.TextAlignment; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; + +import java.util.ArrayList; +import java.util.List; + +public class ParagraphProcessorTest { + + @Test + public void testProcessParagraphs() { + StaticContainers.setIsDataLoader(true); + List contents = new ArrayList<>(); + contents.add(new TextLine(new TextChunk(new BoundingBox(1, 10.0, 30.0, 20.0, 40.0), + "test", 10, 30.0))); + contents.add(new TextLine(new TextChunk(new BoundingBox(1, 10.0, 20.0, 20.0, 30.0), + "test", 10, 20.0))); + contents.add(new TextLine(new TextChunk(new BoundingBox(1, 10.0, 10.0, 20.0, 20.0), + "test", 10, 10.0))); + contents = ParagraphProcessor.processParagraphs(contents); + Assertions.assertEquals(1, contents.size()); + Assertions.assertTrue(contents.get(0) instanceof SemanticParagraph); + } + + /** + * Regression test for PR `#567`: right-alignment detection must claim adjacent single-line + * blocks before the two-line paragraph heuristic. + * + *

    Two adjacent single-line TextLines with right-aligned geometry (identical rightX, + * differing leftX) satisfy BOTH detection predicates: + *

      + *
    • {`@code` areLinesOfParagraphsWithRightAlignments} → would set {`@link` TextAlignment#RIGHT}
    • + *
    • {`@code` isTwoLinesParagraph} → would set {`@link` TextAlignment#LEFT}
    • + *
    + * + *

    After the reorder ({`@code` detectParagraphsWithRightAlignments} before + * {`@code` detectTwoLinesParagraphs}), the right-alignment pass must claim the blocks first, + * so the merged paragraph carries {`@link` TextAlignment#RIGHT}. + * If the detection order were reversed the block would be LEFT-aligned instead. + */ + @Test + public void testRightAlignmentTakesPrecedenceOverTwoLineHeuristic() { + StaticContainers.setIsDataLoader(true); + + // Line 1 – shorter, flush right: leftX=15, rightX=20 + // Line 2 – longer, flush right: leftX=10, rightX=20 + // + // Geometry properties: + // • Both lines share rightX=20 → ChunksMergeUtils.getAlignment() == RIGHT + // • line1.leftX(15) ≥ line2.leftX(10) → isTwoLinesParagraph leftX check passes + // • line1.rightX(20) ≥ line2.rightX(20) → isTwoLinesParagraph rightX check passes + // • Lines are vertically adjacent (line height = font size = 10) + // • Same font size (10) → areTextBlocksHaveSameTextSize passes + // + // Both heuristics would match, so the test verifies which one wins after the reorder. + List contents = new ArrayList<>(); + contents.add(new TextLine(new TextChunk( + new BoundingBox(1, 15.0, 20.0, 20.0, 30.0), "short", 10, 20.0))); + contents.add(new TextLine(new TextChunk( + new BoundingBox(1, 10.0, 10.0, 20.0, 20.0), "longer line", 10, 10.0))); + + contents = ParagraphProcessor.processParagraphs(contents); + + // The two right-aligned lines must be merged into exactly one paragraph. + Assertions.assertEquals(1, contents.size(), + "Two right-aligned single lines should be merged into one paragraph"); + Assertions.assertInstanceOf(SemanticParagraph.class, contents.get(0)); + + // The merged block must carry TextAlignment.RIGHT because detectParagraphsWithRightAlignments + // now runs before detectTwoLinesParagraphs. If the order were reversed, the block would + // be LEFT-aligned (set by isTwoLinesParagraph). + SemanticParagraph para = (SemanticParagraph) contents.get(0); + TextBlock block = para.getLastColumn().getBlocks().get(0); + Assertions.assertEquals(TextAlignment.RIGHT, block.getTextAlignment(), + "detectParagraphsWithRightAlignments must claim the blocks before " + + "detectTwoLinesParagraphs; expected TextAlignment.RIGHT but got: " + + block.getTextAlignment()); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/SpecialTableProcessorTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/SpecialTableProcessorTest.java new file mode 100644 index 0000000..4bb0f3e --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/SpecialTableProcessorTest.java @@ -0,0 +1,52 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.content.TextLine; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.entities.tables.TableBordersCollection; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; + +import java.util.ArrayList; +import java.util.List; + +public class SpecialTableProcessorTest { + + @Test + public void testDetectSpecialTables() { + StaticContainers.setTableBordersCollection(new TableBordersCollection()); + StaticContainers.setIsIgnoreCharactersWithoutUnicode(false); + StaticContainers.setIsDataLoader(true); + StaticLayoutContainers.setCurrentContentId(0); + List contents = new ArrayList<>(); + contents.add(new TextLine(new TextChunk(new BoundingBox(1, 10.0, 30.0, 20.0, 40.0), + "수신", 10, 30.0))); + contents.add(new TextLine(new TextChunk(new BoundingBox(1, 10.0, 20.0, 20.0, 30.0), + "경유", 10, 20.0))); + contents.add(new TextLine(new TextChunk(new BoundingBox(1, 10.0, 10.0, 20.0, 20.0), + "제목", 10, 10.0))); + contents = SpecialTableProcessor.detectSpecialTables(contents); + Assertions.assertEquals(1, contents.size()); + Assertions.assertTrue(contents.get(0) instanceof TableBorder); + } + +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/TableBorderProcessorTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/TableBorderProcessorTest.java new file mode 100644 index 0000000..c3edbf0 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/TableBorderProcessorTest.java @@ -0,0 +1,389 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.SemanticParagraph; +import org.verapdf.wcag.algorithms.entities.content.ImageChunk; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.entities.tables.TableBordersCollection; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorder; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderCell; +import org.verapdf.wcag.algorithms.entities.tables.tableBorders.TableBorderRow; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.StreamInfo; + +import java.time.Duration; +import java.util.ArrayList; +import java.util.List; +import java.util.SortedSet; +import java.util.TreeSet; + +import static org.junit.jupiter.api.Assertions.assertTimeout; + +public class TableBorderProcessorTest { + + @Test + public void testProcessTableBorders() { + StaticContainers.setIsIgnoreCharactersWithoutUnicode(false); + StaticContainers.setIsDataLoader(true); + StaticLayoutContainers.setCurrentContentId(2l); + TableBordersCollection tableBordersCollection = new TableBordersCollection(); + StaticContainers.setTableBordersCollection(tableBordersCollection); + List contents = new ArrayList<>(); + TableBorder tableBorder = new TableBorder(2, 2); + SortedSet tables = new TreeSet<>(new TableBorder.TableBordersComparator()); + tables.add(tableBorder); + tableBordersCollection.getTableBorders().add(tables); + tableBorder.setRecognizedStructureId(1l); + tableBorder.setBoundingBox(new BoundingBox(0, 10.0, 10.0, 30.0, 30.0)); + TableBorderRow row1 = new TableBorderRow(0, 2, 0l); + row1.setBoundingBox(new BoundingBox(0, 10.0, 20.0, 30.0, 30.0)); + row1.getCells()[0] = new TableBorderCell(0, 0, 1, 1, 0l); + row1.getCells()[0].setBoundingBox(new BoundingBox(0, 10.0, 20.0, 20.0, 30.0)); + row1.getCells()[1] = new TableBorderCell(0, 1, 1, 1, 0l); + row1.getCells()[1].setBoundingBox(new BoundingBox(0, 20.0, 20.0, 30.0, 30.0)); + tableBorder.getRows()[0] = row1; + TableBorderRow row2 = new TableBorderRow(0, 2, 0l); + row2.setBoundingBox(new BoundingBox(0, 10.0, 10.0, 30.0, 20.0)); + row2.getCells()[0] = new TableBorderCell(1, 0, 1, 1, 0l); + row2.getCells()[0].setBoundingBox(new BoundingBox(0, 10.0, 10.0, 20.0, 20.0)); + row2.getCells()[1] = new TableBorderCell(1, 1, 1, 1, 0l); + row2.getCells()[1].setBoundingBox(new BoundingBox(0, 20.0, 10.0, 30.0, 20.0)); + tableBorder.getRows()[1] = row2; + tableBorder.calculateCoordinatesUsingBoundingBoxesOfRowsAndColumns(); + TextChunk textChunk = new TextChunk(new BoundingBox(0, 11.0, 21.0, 29.0, 29.0), + "test", 10, 21.0); + // xObjectName is null because test TextChunks are not backed by a real PDF stream + textChunk.getStreamInfos().add(new StreamInfo(0, null, 0, "test".length())); + contents.add(textChunk); + textChunk.adjustSymbolEndsToBoundingBox(null); + contents.add(new ImageChunk(new BoundingBox(0, 11.0, 11.0, 19.0, 19.0))); + contents = TableBorderProcessor.processTableBorders(contents, 0); + Assertions.assertEquals(1, contents.size()); + Assertions.assertTrue(contents.get(0) instanceof TableBorder); + TableBorder resultBorder = (TableBorder) contents.get(0); +// Assertions.assertSame(resultBorder, +// tableBordersCollection.getTableBorder(resultBorder.getBoundingBox())); + List cellContents = resultBorder.getRow(0).getCell(0).getContents(); + Assertions.assertEquals(1, cellContents.size()); + Assertions.assertTrue(cellContents.get(0) instanceof SemanticParagraph); + Assertions.assertEquals("te", ((SemanticParagraph) cellContents.get(0)).getValue()); + cellContents = resultBorder.getRow(0).getCell(1).getContents(); + Assertions.assertEquals(1, cellContents.size()); + Assertions.assertTrue(cellContents.get(0) instanceof SemanticParagraph); + Assertions.assertEquals("st", ((SemanticParagraph) cellContents.get(0)).getValue()); + cellContents = resultBorder.getRow(1).getCell(0).getContents(); + Assertions.assertEquals(1, cellContents.size()); + Assertions.assertTrue(cellContents.get(0) instanceof ImageChunk); + } + + @Test + public void testCheckNeighborTables() { + List> contents = new ArrayList<>(); + List pageContents1 = new ArrayList<>(); + contents.add(pageContents1); + TableBorder tableBorder1 = new TableBorder(2, 2); + tableBorder1.setRecognizedStructureId(1l); + tableBorder1.setBoundingBox(new BoundingBox(0, 10.0, 10.0, 30.0, 30.0)); + TableBorderRow row1 = new TableBorderRow(0, 2, 0l); + row1.setBoundingBox(new BoundingBox(0, 10.0, 20.0, 30.0, 30.0)); + row1.getCells()[0] = new TableBorderCell(0, 0, 1, 1, 0l); + row1.getCells()[0].setBoundingBox(new BoundingBox(0, 10.0, 20.0, 20.0, 30.0)); + row1.getCells()[1] = new TableBorderCell(0, 1, 1, 1, 0l); + row1.getCells()[1].setBoundingBox(new BoundingBox(0, 20.0, 20.0, 30.0, 30.0)); + tableBorder1.getRows()[0] = row1; + TableBorderRow row2 = new TableBorderRow(0, 2, 0l); + row2.setBoundingBox(new BoundingBox(0, 10.0, 10.0, 30.0, 20.0)); + row2.getCells()[0] = new TableBorderCell(1, 0, 1, 1, 0l); + row2.getCells()[0].setBoundingBox(new BoundingBox(0, 10.0, 10.0, 20.0, 20.0)); + row2.getCells()[1] = new TableBorderCell(1, 1, 1, 1, 0l); + row2.getCells()[1].setBoundingBox(new BoundingBox(0, 20.0, 10.0, 30.0, 20.0)); + tableBorder1.getRows()[1] = row2; + pageContents1.add(tableBorder1); + + List pageContents2 = new ArrayList<>(); + contents.add(pageContents2); + TableBorder tableBorder2 = new TableBorder(2, 2); + tableBorder2.setRecognizedStructureId(2l); + tableBorder2.setBoundingBox(new BoundingBox(1, 10.0, 10.0, 30.0, 30.0)); + row1 = new TableBorderRow(0, 2, 0l); + row1.setBoundingBox(new BoundingBox(1, 10.0, 20.0, 30.0, 30.0)); + row1.getCells()[0] = new TableBorderCell(0, 0, 1, 1, 0l); + row1.getCells()[0].setBoundingBox(new BoundingBox(1, 10.0, 20.0, 20.0, 30.0)); + row1.getCells()[1] = new TableBorderCell(0, 1, 1, 1, 0l); + row1.getCells()[1].setBoundingBox(new BoundingBox(1, 20.0, 20.0, 30.0, 30.0)); + tableBorder2.getRows()[0] = row1; + row2 = new TableBorderRow(0, 2, 0l); + row2.setBoundingBox(new BoundingBox(1, 10.0, 10.0, 30.0, 20.0)); + row2.getCells()[0] = new TableBorderCell(1, 0, 1, 1, 0l); + row2.getCells()[0].setBoundingBox(new BoundingBox(1, 10.0, 10.0, 20.0, 20.0)); + row2.getCells()[1] = new TableBorderCell(1, 1, 1, 1, 0l); + row2.getCells()[1].setBoundingBox(new BoundingBox(1, 20.0, 10.0, 30.0, 20.0)); + tableBorder2.getRows()[1] = row2; + pageContents2.add(tableBorder2); + + TableBorderProcessor.checkNeighborTables(contents); + Assertions.assertEquals(2, contents.size()); + Assertions.assertEquals(1, contents.get(0).size()); + Assertions.assertTrue(contents.get(0).get(0) instanceof TableBorder); + Assertions.assertEquals(2l, ((TableBorder) contents.get(0).get(0)).getNextTableId()); + Assertions.assertEquals(1, contents.get(1).size()); + Assertions.assertTrue(contents.get(1).get(0) instanceof TableBorder); + Assertions.assertEquals(1l, ((TableBorder) contents.get(1).get(0)).getPreviousTableId()); + } + + @Test + public void testNormalSmallTableDoesNotTriggerStructuralNormalization() { + StaticContainers.setIsIgnoreCharactersWithoutUnicode(false); + StaticContainers.setIsDataLoader(true); + StaticLayoutContainers.setCurrentContentId(300L); + TableBordersCollection tableBordersCollection = new TableBordersCollection(); + StaticContainers.setTableBordersCollection(tableBordersCollection); + + TableBorder tableBorder = createTable(0, 10.0, 10.0, 110.0, 70.0, 2, 2, 30L); + SortedSet tables = new TreeSet<>(new TableBorder.TableBordersComparator()); + tables.add(tableBorder); + tableBordersCollection.getTableBorders().add(tables); + + List contents = new ArrayList<>(); + contents.add(createTextChunk(0, 15.0, 48.0, 45.0, 58.0, "r1c1")); + contents.add(createTextChunk(0, 65.0, 48.0, 95.0, 58.0, "r1c2")); + contents.add(createTextChunk(0, 15.0, 22.0, 45.0, 32.0, "r2c1")); + contents.add(createTextChunk(0, 65.0, 22.0, 95.0, 32.0, "r2c2")); + + TableBorder resultBorder = getSingleResultTable(contents, 0); + + Assertions.assertEquals(2, resultBorder.getNumberOfRows()); + Assertions.assertEquals("r1c1", ((SemanticParagraph) resultBorder.getCell(0, 0).getContents().get(0)).getValue()); + Assertions.assertEquals("r2c2", ((SemanticParagraph) resultBorder.getCell(1, 1).getContents().get(0)).getValue()); + } + + @Test + public void testUndersegmentedFiveColumnTableIsRebuiltFromRawPageContents() { + StaticContainers.setIsIgnoreCharactersWithoutUnicode(false); + StaticContainers.setIsDataLoader(true); + StaticLayoutContainers.setCurrentContentId(400L); + TableBordersCollection tableBordersCollection = new TableBordersCollection(); + StaticContainers.setTableBordersCollection(tableBordersCollection); + + TableBorder tableBorder = createTable(0, 10.0, 10.0, 260.0, 110.0, 2, 5, 40L); + SortedSet tables = new TreeSet<>(new TableBorder.TableBordersComparator()); + tables.add(tableBorder); + tableBordersCollection.getTableBorders().add(tables); + + List contents = new ArrayList<>(); + double[] rowBottoms = {94.0, 84.0, 74.0, 64.0, 54.0, 44.0, 34.0, 24.0}; + for (int rowIndex = 0; rowIndex < rowBottoms.length; rowIndex++) { + double bottomY = rowBottoms[rowIndex]; + double topY = bottomY + 6.0; + for (int columnNumber = 0; columnNumber < 5; columnNumber++) { + double leftX = 15.0 + (columnNumber * 50.0); + contents.add(createTextChunk(0, leftX, bottomY, leftX + 25.0, topY, + "r" + (rowIndex + 1) + "c" + (columnNumber + 1))); + } + } + + TableBorder resultBorder = getSingleResultTable(contents, 0); + + Assertions.assertEquals(8, resultBorder.getNumberOfRows()); +// Assertions.assertSame(resultBorder, +// tableBordersCollection.getTableBorder(resultBorder.getBoundingBox())); + Assertions.assertEquals("r1c1", ((SemanticParagraph) resultBorder.getCell(0, 0).getContents().get(0)).getValue()); + Assertions.assertEquals("r3c3", ((SemanticParagraph) resultBorder.getCell(2, 2).getContents().get(0)).getValue()); + Assertions.assertEquals("r8c5", ((SemanticParagraph) resultBorder.getCell(7, 4).getContents().get(0)).getValue()); + } + + @Test + public void testNormalizationKeepsOriginalTableWhenRebuildLosesColumns() { + TableBorder tableBorder = createTable(0, 10.0, 10.0, 260.0, 110.0, 2, 5, 50L); + populateOriginalTableContents(tableBorder); + + List rawPageContents = new ArrayList<>(); + double[] rowBottoms = {94.0, 84.0, 74.0, 64.0, 54.0, 44.0, 34.0, 24.0}; + for (int rowIndex = 0; rowIndex < rowBottoms.length; rowIndex++) { + double bottomY = rowBottoms[rowIndex]; + double topY = bottomY + 6.0; + rawPageContents.add(createTextChunk(0, 15.0, bottomY, 40.0, topY, "left-" + rowIndex)); + rawPageContents.add(createTextChunk(0, 65.0, bottomY, 90.0, topY, "mid-" + rowIndex)); + } + + TableBorder normalizedTable = TableStructureNormalizer.normalize(rawPageContents, tableBorder); + + Assertions.assertSame(tableBorder, normalizedTable); + Assertions.assertEquals(2, normalizedTable.getNumberOfRows()); + } + + @Test + public void testTextBlockTableIsNeverNormalized() { + TableBorder tableBorder = createTable(0, 10.0, 10.0, 110.0, 50.0, 1, 1, 60L); + List cellContents = new ArrayList<>(); + cellContents.add(createTextChunk(0, 15.0, 20.0, 90.0, 30.0, "single cell text")); + tableBorder.getCell(0, 0).setContents(cellContents); + + List rawPageContents = new ArrayList<>(); + rawPageContents.add(createTextChunk(0, 15.0, 20.0, 90.0, 30.0, "single cell text")); + rawPageContents.add(createTextChunk(0, 15.0, 32.0, 90.0, 42.0, "more text")); + + TableBorder normalizedTable = TableStructureNormalizer.normalize(rawPageContents, tableBorder); + + Assertions.assertSame(tableBorder, normalizedTable); + Assertions.assertTrue(normalizedTable.isTextBlock()); + } + + // ========== RECURSION DEPTH LIMIT TESTS ========== + + /** + * Test that processTableBorders completes within reasonable time even with + * deeply nested table structures. This is a defensive measure against + * malicious PDFs that could cause stack overflow through deeply nested tables. + *

    + * Real-world PDFs rarely have tables nested more than 2-3 levels deep. + * A depth limit of 10 provides safety margin while supporting legitimate use cases. + */ + @Test + public void testProcessTableBordersDepthLimitNoStackOverflow() { + StaticContainers.setIsIgnoreCharactersWithoutUnicode(false); + StaticContainers.setIsDataLoader(true); + StaticLayoutContainers.setCurrentContentId(100L); + + // Even with complex nested structures, processing should complete quickly + // This test verifies that the depth limit prevents runaway recursion + assertTimeout(Duration.ofSeconds(5), () -> { + TableBordersCollection tableBordersCollection = new TableBordersCollection(); + StaticContainers.setTableBordersCollection(tableBordersCollection); + + // Create a simple table to process + List contents = new ArrayList<>(); + TableBorder tableBorder = createSimpleTable(0, 10.0, 10.0, 100.0, 100.0, 10L); + SortedSet tables = new TreeSet<>(new TableBorder.TableBordersComparator()); + tables.add(tableBorder); + tableBordersCollection.getTableBorders().add(tables); + + TextChunk textChunk = new TextChunk( + new BoundingBox(0, 15.0, 15.0, 95.0, 95.0), + "test content", 10, 15.0); + textChunk.getStreamInfos().add(new StreamInfo(0, null, 0, "test content".length())); + textChunk.adjustSymbolEndsToBoundingBox(null); + contents.add(textChunk); + + // Should complete without stack overflow + List result = TableBorderProcessor.processTableBorders(contents, 0); + Assertions.assertNotNull(result); + }); + } + + /** + * Test that normal table processing still works correctly with depth tracking. + * Verifies that the depth limit doesn't interfere with legitimate nested tables. + */ + @Test + public void testProcessTableBordersNormalNestedTableProcessedCorrectly() { + StaticContainers.setIsIgnoreCharactersWithoutUnicode(false); + StaticContainers.setIsDataLoader(true); + StaticLayoutContainers.setCurrentContentId(200L); + TableBordersCollection tableBordersCollection = new TableBordersCollection(); + StaticContainers.setTableBordersCollection(tableBordersCollection); + + // Create outer table + TableBorder outerTable = createSimpleTable(0, 10.0, 10.0, 200.0, 200.0, 20L); + SortedSet tables = new TreeSet<>(new TableBorder.TableBordersComparator()); + tables.add(outerTable); + tableBordersCollection.getTableBorders().add(tables); + + List contents = new ArrayList<>(); + TextChunk textChunk = new TextChunk( + new BoundingBox(0, 15.0, 15.0, 95.0, 95.0), + "outer content", 10, 15.0); + textChunk.getStreamInfos().add(new StreamInfo(0, null, 0, "outer content".length())); + textChunk.adjustSymbolEndsToBoundingBox(null); + contents.add(textChunk); + + // Process should complete successfully + List result = TableBorderProcessor.processTableBorders(contents, 0); + + Assertions.assertEquals(1, result.size()); + Assertions.assertTrue(result.get(0) instanceof TableBorder); + } + + /** + * Helper method to create a simple 2x2 table for testing. + */ + private TableBorder createSimpleTable(int pageNumber, double leftX, double bottomY, + double rightX, double topY, long structureId) { + return createTable(pageNumber, leftX, bottomY, rightX, topY, 2, 2, structureId); + } + + private TableBorder createTable(int pageNumber, double leftX, double bottomY, + double rightX, double topY, int rows, int columns, long structureId) { + TableBorder table = new TableBorder(rows, columns); + table.setRecognizedStructureId(structureId); + table.setBoundingBox(new BoundingBox(pageNumber, leftX, bottomY, rightX, topY)); + + double columnWidth = (rightX - leftX) / columns; + double rowHeight = (topY - bottomY) / rows; + for (int rowNumber = 0; rowNumber < rows; rowNumber++) { + double rowTopY = topY - (rowNumber * rowHeight); + double rowBottomY = rowTopY - rowHeight; + TableBorderRow row = new TableBorderRow(rowNumber, columns, 0L); + row.setBoundingBox(new BoundingBox(pageNumber, leftX, rowBottomY, rightX, rowTopY)); + table.getRows()[rowNumber] = row; + + for (int columnNumber = 0; columnNumber < columns; columnNumber++) { + double cellLeftX = leftX + (columnNumber * columnWidth); + double cellRightX = cellLeftX + columnWidth; + TableBorderCell cell = new TableBorderCell(rowNumber, columnNumber, 1, 1, 0L); + cell.setBoundingBox(new BoundingBox(pageNumber, cellLeftX, rowBottomY, cellRightX, rowTopY)); + row.getCells()[columnNumber] = cell; + } + } + + table.calculateCoordinatesUsingBoundingBoxesOfRowsAndColumns(); + return table; + } + + private void populateOriginalTableContents(TableBorder table) { + for (int rowNumber = 0; rowNumber < table.getNumberOfRows(); rowNumber++) { + for (int columnNumber = 0; columnNumber < table.getNumberOfColumns(); columnNumber++) { + TableBorderCell cell = table.getCell(rowNumber, columnNumber); + cell.setContents(new ArrayList<>(List.of(createTextChunk(0, + cell.getLeftX() + 2.0, cell.getBottomY() + 5.0, cell.getLeftX() + 28.0, + cell.getBottomY() + 15.0, "orig-" + rowNumber + "-" + columnNumber)))); + } + } + } + + private TableBorder getSingleResultTable(List contents, int pageNumber) { + List processedContents = TableBorderProcessor.processTableBorders(contents, pageNumber); + Assertions.assertEquals(1, processedContents.size()); + Assertions.assertTrue(processedContents.get(0) instanceof TableBorder); + return (TableBorder) processedContents.get(0); + } + + private TextChunk createTextChunk(int pageNumber, double leftX, double bottomY, double rightX, + double topY, String value) { + TextChunk textChunk = new TextChunk(new BoundingBox(pageNumber, leftX, bottomY, rightX, topY), + value, topY - bottomY, bottomY); + textChunk.getStreamInfos().add(new StreamInfo(0, null, 0, value.length())); + textChunk.adjustSymbolEndsToBoundingBox(null); + return textChunk; + } + +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/TextDecorationProcessorTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/TextDecorationProcessorTest.java new file mode 100644 index 0000000..f3b290b --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/TextDecorationProcessorTest.java @@ -0,0 +1,496 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.content.LineArtChunk; +import org.verapdf.wcag.algorithms.entities.content.LineChunk; +import org.verapdf.wcag.algorithms.entities.content.LinesCollection; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; + +import java.util.ArrayList; +import java.util.List; + +public class TextDecorationProcessorTest { + + @BeforeEach + public void setUp() { + StaticContainers.setIsIgnoreCharactersWithoutUnicode(false); + StaticContainers.setIsDataLoader(true); + StaticContainers.setTableBordersCollection(null); + StaticContainers.setLinesCollection(new LinesCollection()); + } + + @Test + public void testStrikethroughDetected() { + List contents = new ArrayList<>(); + + // Text chunk: "apple" at y=[100, 120], x=[10, 60] + TextChunk textChunk = new TextChunk(new BoundingBox(0, 10.0, 100.0, 60.0, 120.0), + "apple", 12, 100.0); + contents.add(textChunk); + + // Horizontal line through the center (y=110), matching the text width + LineChunk line = LineChunk.createLineChunk(0, 10.0, 110.0, 60.0, 110.0, 1.0, + LineChunk.BUTT_CAP_STYLE); + StaticContainers.getLinesCollection().getHorizontalLines(0).add(line); + + TextDecorationProcessor.processStrikethroughAndUnderlinedText(contents, 0, true); + + Assertions.assertTrue(textChunk.getIsStrikethroughText(), "Text chunk should have isStrikethroughText set to true"); + } + + @Test + public void testStrikethroughDetectedForSecondPage() { + List contents = new ArrayList<>(); + + // Text chunk: "apple" at y=[100, 120], x=[10, 60] + TextChunk textChunk = new TextChunk(new BoundingBox(1, 10.0, 100.0, 60.0, 120.0), + "apple", 12, 100.0); + contents.add(textChunk); + + // Horizontal line through the center (y=110), matching the text width + LineChunk line = LineChunk.createLineChunk(1, 10.0, 110.0, 60.0, 110.0, 1.0, + LineChunk.BUTT_CAP_STYLE); + StaticContainers.getLinesCollection().getHorizontalLines(1).add(line); + + TextDecorationProcessor.processStrikethroughAndUnderlinedText(contents, 1, true); + + Assertions.assertTrue(textChunk.getIsStrikethroughText(), "Text chunk should have isStrikethroughText set to true"); + } + + @Test + public void testLineFromDifferentPageIgnored() { + List contents = new ArrayList<>(); + TextChunk textChunk = new TextChunk(new BoundingBox(0, 10.0, 100.0, 60.0, 120.0), + "apple", 12, 100.0); + contents.add(textChunk); + + LineChunk line = LineChunk.createLineChunk(0, 10.0, 110.0, 60.0, 110.0, 1.0, + LineChunk.BUTT_CAP_STYLE); + StaticContainers.getLinesCollection().getHorizontalLines(1).add(line); + + TextDecorationProcessor.processStrikethroughAndUnderlinedText(contents, 0, true); + + Assertions.assertFalse(textChunk.getIsStrikethroughText(), + "Line from another page must not affect current page processing"); + } + + @Test + public void testUnderlineNotDetectedAsStrikethrough() { + List contents = new ArrayList<>(); + + TextChunk textChunk = new TextChunk(new BoundingBox(0, 10.0, 100.0, 60.0, 120.0), + "apple", 12, 100.0); + contents.add(textChunk); + + // Horizontal line near the bottom (y=101 — underline position) + LineChunk line = LineChunk.createLineChunk(0, 10.0, 101.0, 60.0, 101.0, 1.0, + LineChunk.BUTT_CAP_STYLE); + StaticContainers.getLinesCollection().getHorizontalLines(0).add(line); + + TextDecorationProcessor.processStrikethroughAndUnderlinedText(contents, 0, true); + + Assertions.assertFalse(textChunk.getIsStrikethroughText(), "Underline should not be detected as strikethrough"); + } + + @Test + public void testLineAboveTextNotDetected() { + List contents = new ArrayList<>(); + + TextChunk textChunk = new TextChunk(new BoundingBox(0, 10.0, 100.0, 60.0, 120.0), + "apple", 12, 100.0); + contents.add(textChunk); + + // Line above the text (y=130) + LineChunk line = LineChunk.createLineChunk(0, 10.0, 130.0, 60.0, 130.0, 1.0, + LineChunk.BUTT_CAP_STYLE); + StaticContainers.getLinesCollection().getHorizontalLines(0).add(line); + + TextDecorationProcessor.processStrikethroughAndUnderlinedText(contents, 0, true); + + Assertions.assertFalse(textChunk.getIsStrikethroughText(), "Line above text should not be detected as strikethrough"); + } + + @Test + public void testPartialHorizontalOverlapNotDetected() { + List contents = new ArrayList<>(); + + TextChunk textChunk = new TextChunk(new BoundingBox(0, 10.0, 100.0, 60.0, 120.0), + "apple", 12, 100.0); + contents.add(textChunk); + + // Line only covers half the text width: x=[10, 30] + LineChunk line = LineChunk.createLineChunk(0, 10.0, 110.0, 30.0, 110.0, 1.0, + LineChunk.BUTT_CAP_STYLE); + StaticContainers.getLinesCollection().getHorizontalLines(0).add(line); + + TextDecorationProcessor.processStrikethroughAndUnderlinedText(contents, 0, true); + + Assertions.assertFalse(textChunk.getIsStrikethroughText(), "Partial horizontal overlap should not be detected as strikethrough"); + } + + @Test + public void testNoLinesNoChange() { + List contents = new ArrayList<>(); + + TextChunk textChunk = new TextChunk(new BoundingBox(0, 10.0, 100.0, 60.0, 120.0), + "hello", 12, 100.0); + contents.add(textChunk); + + TextDecorationProcessor.processStrikethroughAndUnderlinedText(contents, 0, true); + + Assertions.assertFalse(textChunk.getIsStrikethroughText(), "Text should remain unchanged when no lines exist"); + } + + @Test + public void testVerticalLineIgnored() { + List contents = new ArrayList<>(); + + TextChunk textChunk = new TextChunk(new BoundingBox(0, 10.0, 100.0, 60.0, 120.0), + "hello", 12, 100.0); + contents.add(textChunk); + + // Vertical line — should be ignored + LineChunk line = LineChunk.createLineChunk(0, 35.0, 100.0, 35.0, 120.0, 1.0, + LineChunk.BUTT_CAP_STYLE); + StaticContainers.getLinesCollection().getHorizontalLines(0).add(line); + + TextDecorationProcessor.processStrikethroughAndUnderlinedText(contents, 0, true); + + Assertions.assertFalse(textChunk.getIsStrikethroughText(), "Vertical line should not trigger strikethrough"); + } + + @Test + public void testWideLineSpanningMultipleChunksDetected() { + List contents = new ArrayList<>(); + + // Two text chunks at different horizontal positions + TextChunk chunk1 = new TextChunk(new BoundingBox(0, 10.0, 100.0, 60.0, 120.0), + "apple", 12, 100.0); + TextChunk chunk2 = new TextChunk(new BoundingBox(0, 70.0, 100.0, 130.0, 120.0), + "orange", 12, 100.0); + contents.add(chunk1); + contents.add(chunk2); + + // A thin line spanning multiple chunks on one visual text line. + LineChunk line = LineChunk.createLineChunk(0, 10.0, 110.0, 130.0, 110.0, 1.0, + LineChunk.BUTT_CAP_STYLE); + StaticContainers.getLinesCollection().getHorizontalLines(0).add(line); + + TextDecorationProcessor.processStrikethroughAndUnderlinedText(contents, 0, true); + + Assertions.assertTrue(chunk1.getIsStrikethroughText(), + "Thin line matching multiple chunks should be detected"); + Assertions.assertTrue(chunk2.getIsStrikethroughText(), + "Thin line matching multiple chunks should be detected"); + } + +// @Test +// public void testWideLineArtSpanningMultipleChunksDetected() { +// List contents = new ArrayList<>(); +// +// TextChunk chunk1 = new TextChunk(new BoundingBox(0, 10.0, 100.0, 40.0, 120.0), +// "hello", 12, 100.0); +// TextChunk chunk2 = new TextChunk(new BoundingBox(0, 45.0, 100.0, 90.0, 120.0), +// "world", 12, 100.0); +// contents.add(chunk1); +// contents.add(chunk2); +// +// LineArtChunk lineArt = new LineArtChunk(new BoundingBox(0, 10.0, 109.5, 90.0, 110.5)); +// contents.add(lineArt); +// +// TextDecorationProcessor.processStrikethroughAndUnderlinedText(contents, 0, true); +// +// Assertions.assertTrue(chunk1.getIsStrikethroughText(), +// "Line-art strikethrough should support multiple chunks on one visual line"); +// Assertions.assertTrue(chunk2.getIsStrikethroughText(), +// "Line-art strikethrough should support multiple chunks on one visual line"); +// } + + @Test + public void testLineMuchWiderThanTextRejected() { + List contents = new ArrayList<>(); + + // Text chunk: x=[50, 80] (width=30) + TextChunk textChunk = new TextChunk(new BoundingBox(0, 50.0, 100.0, 80.0, 120.0), + "hi", 12, 100.0); + contents.add(textChunk); + + // Line: x=[10, 200] (width=190, much wider than text) — structural separator + LineChunk line = LineChunk.createLineChunk(0, 10.0, 110.0, 200.0, 110.0, 1.0, + LineChunk.BUTT_CAP_STYLE); + StaticContainers.getLinesCollection().getHorizontalLines(0).add(line); + + TextDecorationProcessor.processStrikethroughAndUnderlinedText(contents, 0, true); + + Assertions.assertFalse(textChunk.getIsStrikethroughText(), "Line much wider than text should be rejected as structural separator"); + } + + @Test + public void testThickLineRejectedAsBackgroundFill() { + List contents = new ArrayList<>(); + + // Text chunk: height = 120-100 = 20 + TextChunk textChunk = new TextChunk(new BoundingBox(0, 10.0, 100.0, 60.0, 120.0), + "hello", 12, 100.0); + contents.add(textChunk); + + // Line with stroke=30.0. This is a background fill or table cell shading, + // not a strikethrough. + LineChunk line = LineChunk.createLineChunk(0, 10.0, 110.0, 60.0, 110.0, 30.0, + LineChunk.BUTT_CAP_STYLE); + StaticContainers.getLinesCollection().getHorizontalLines(0).add(line); + + TextDecorationProcessor.processStrikethroughAndUnderlinedText(contents, 0, true); + + Assertions.assertFalse(textChunk.getIsStrikethroughText(), "Thick line should be rejected"); + } + + @Test + public void testTextHeightLineRejectedAsGlyphArtifact() { + List contents = new ArrayList<>(); + + TextChunk textChunk = new TextChunk(new BoundingBox(0, 10.0, 100.0, 60.0, 120.0), + "hello", 12, 100.0); + contents.add(textChunk); + + // Centered but text-height-ish rules are often extracted glyph/vector + // artifacts, not strikethrough marks. + LineChunk line = LineChunk.createLineChunk(0, 10.0, 110.0, 60.0, 110.0, 10.0, + LineChunk.BUTT_CAP_STYLE); + StaticContainers.getLinesCollection().getHorizontalLines(0).add(line); + + TextDecorationProcessor.processStrikethroughAndUnderlinedText(contents, 0, true); + + Assertions.assertFalse(textChunk.getIsStrikethroughText(), "Text-height line should be rejected"); + } + + @Test + public void testThinLineAcceptedAsStrikethrough() { + // Thin line (stroke=0.6, textHeight=20 → ratio=0.03) — typical strikethrough + TextChunk textChunk = new TextChunk(new BoundingBox(0, 10.0, 100.0, 60.0, 120.0), + "test", 12, 100.0); + LineChunk line = LineChunk.createLineChunk(0, 10.0, 110.0, 60.0, 110.0, 0.6, + LineChunk.BUTT_CAP_STYLE); + + Assertions.assertTrue(TextDecorationProcessor.isStrikethroughLine(line, textChunk), + "Thin line at center should be detected as strikethrough"); + } + + @Test + public void testNullLineInputsAreIgnored() { + TextChunk textChunk = new TextChunk(new BoundingBox(0, 10.0, 100.0, 60.0, 120.0), + "test", 12, 100.0); + + Assertions.assertFalse(TextDecorationProcessor.isStrikethroughLine(null, textChunk), + "Null LineChunk should not throw or match"); +// Assertions.assertFalse(TextDecorationProcessor.isStrikethroughLineArt(null, textChunk), +// "Null LineArtChunk should not throw or match"); + } + +// @Test +// public void testThinLineArtDetectedAsStrikethrough() { +// List contents = new ArrayList<>(); +// +// TextChunk textChunk = new TextChunk(new BoundingBox(0, 10.0, 100.0, 60.0, 120.0), +// "test", 12, 100.0); +// contents.add(textChunk); +// +// // Thin horizontal rectangle through the text center. +// LineArtChunk lineArt = new LineArtChunk(new BoundingBox(0, 10.0, 109.5, 60.0, 110.5)); +// contents.add(lineArt); +// +// TextDecorationProcessor.processStrikethroughAndUnderlinedText(contents, 0, true); +// +// Assertions.assertTrue(textChunk.getIsStrikethroughText(), "Thin centered line art should trigger strikethrough"); +// } + +// @Test +// public void testWideLineArtHelperRejected() { +// TextChunk textChunk = new TextChunk(new BoundingBox(0, 50.0, 100.0, 80.0, 120.0), +// "hi", 12, 100.0); +// LineArtChunk lineArt = new LineArtChunk(new BoundingBox(0, 10.0, 109.5, 200.0, 110.5)); +// +// Assertions.assertFalse(TextDecorationProcessor.isStrikethroughLineArt(lineArt, textChunk), +// "Direct line-art helper should reject rules much wider than the text"); +// } + +// @Test +// public void testUnderlineLineArtNotDetectedAsStrikethrough() { +// List contents = new ArrayList<>(); +// +// TextChunk textChunk = new TextChunk(new BoundingBox(0, 10.0, 100.0, 60.0, 120.0), +// "test", 12, 100.0); +// contents.add(textChunk); +// +// // Thin horizontal rectangle near the text bottom. +// LineArtChunk lineArt = new LineArtChunk(new BoundingBox(0, 10.0, 100.5, 60.0, 101.5)); +// contents.add(lineArt); +// +// TextDecorationProcessor.processStrikethroughAndUnderlinedText(contents, 0, true); +// +// Assertions.assertFalse(textChunk.getIsStrikethroughText(), "Underline-position line art should be ignored"); +// } + +// @Test +// public void testTallLineArtRejectedAsBackgroundFill() { +// List contents = new ArrayList<>(); +// +// TextChunk textChunk = new TextChunk(new BoundingBox(0, 10.0, 100.0, 60.0, 120.0), +// "test", 12, 100.0); +// contents.add(textChunk); +// +// // Height=30, far thicker than a strikethrough rule. +// LineArtChunk lineArt = new LineArtChunk(new BoundingBox(0, 10.0, 95.0, 60.0, 125.0)); +// contents.add(lineArt); +// +// TextDecorationProcessor.processStrikethroughAndUnderlinedText(contents, 0, true); +// +// Assertions.assertFalse(textChunk.getIsStrikethroughText(), "Tall line art should be rejected"); +// } + +// @Test +// public void testLargeBackgroundLineArtRejected() { +// List contents = new ArrayList<>(); +// +// TextChunk textChunk = new TextChunk(new BoundingBox(0, 50.0, 100.0, 80.0, 120.0), +// "hi", 12, 100.0); +// contents.add(textChunk); +// +// // Thin but much wider than the text, so it is likely a separator or background shape. +// LineArtChunk lineArt = new LineArtChunk(new BoundingBox(0, 10.0, 109.5, 200.0, 110.5)); +// contents.add(lineArt); +// +// TextDecorationProcessor.processStrikethroughAndUnderlinedText(contents, 0, true); +// +// Assertions.assertFalse(textChunk.getIsStrikethroughText(), "Large background-like line art should be rejected"); +// } + + @Test + public void testIsStrikethroughLineAtExactCenter() { + TextChunk textChunk = new TextChunk(new BoundingBox(0, 10.0, 100.0, 60.0, 120.0), + "test", 12, 100.0); + // Line exactly at center y=110, matching text width + LineChunk line = LineChunk.createLineChunk(0, 10.0, 110.0, 60.0, 110.0, 1.0, + LineChunk.BUTT_CAP_STYLE); + + Assertions.assertTrue(TextDecorationProcessor.isStrikethroughLine(line, textChunk), + "Line at exact center should be detected as strikethrough"); + } + + @Test + public void testUnderlineDetected() { + TextChunk textChunk = new TextChunk(new BoundingBox(0, 10.0, 100.0, 60.0, 120.0), + "apple", 12, 100.0); + // Thin line in the underline zone: baseline to baseline - 0.35*height = [93,100] + LineChunk line = LineChunk.createLineChunk(0, 12.0, 97.0, 58.0, 97.0, 1.0, + LineChunk.BUTT_CAP_STYLE); + + Assertions.assertTrue(TextDecorationProcessor.isUnderlineLine(line, textChunk), + "Thin line at underline position should be detected"); + } + + @Test + public void testUnderlineNotDetectedWhenTooThick() { + // Height=20, max underline thickness = 0.3*20 = 6.0 + TextChunk textChunk = new TextChunk(new BoundingBox(0, 10.0, 100.0, 60.0, 120.0), + "apple", 12, 100.0); + // Line thickness=8.0 (>6.0) + LineChunk line = LineChunk.createLineChunk(0, 12.0, 97.0, 58.0, 97.0, 8.0, + LineChunk.BUTT_CAP_STYLE); + + Assertions.assertFalse(TextDecorationProcessor.isUnderlineLine(line, textChunk), + "Thick underline should be rejected"); + } + + @Test + public void testUnderlineNotDetectedAboveBaseline() { + TextChunk textChunk = new TextChunk(new BoundingBox(0, 10.0, 100.0, 60.0, 120.0), + "apple", 12, 100.0); + // Line y=105 (above baseline=100) + LineChunk line = LineChunk.createLineChunk(0, 12.0, 105.0, 58.0, 105.0, 1.0, + LineChunk.BUTT_CAP_STYLE); + + Assertions.assertFalse(TextDecorationProcessor.isUnderlineLine(line, textChunk), + "Line above baseline must not be an underline"); + } + + @Test + public void testUnderlineNotDetectedTooFarBelowBaseline() { + // Height=20, lower bound = 100 - 0.35*20 = 93. y=92 is below that. + TextChunk textChunk = new TextChunk(new BoundingBox(0, 10.0, 100.0, 60.0, 120.0), + "apple", 12, 100.0); + LineChunk line = LineChunk.createLineChunk(0, 12.0, 92.0, 58.0, 92.0, 1.0, + LineChunk.BUTT_CAP_STYLE); + + Assertions.assertFalse(TextDecorationProcessor.isUnderlineLine(line, textChunk), + "Line too far below baseline must not be an underline"); + } + + @Test + public void testUnderlineNotDetectedWithInsufficientOverlap() { + // Text width=50, min overlap = 0.08*50 = 4 + TextChunk textChunk = new TextChunk(new BoundingBox(0, 10.0, 100.0, 60.0, 120.0), + "apple", 12, 100.0); + // Line from x=10 to x=13, overlap = min(3, 50) = 3 < 4 + LineChunk line = LineChunk.createLineChunk(0, 10.0, 97.0, 13.0, 97.0, 1.0, + LineChunk.BUTT_CAP_STYLE); + + Assertions.assertFalse(TextDecorationProcessor.isUnderlineLine(line, textChunk), + "Line with too little horizontal overlap must be rejected"); + } + + @Test + public void testUnderlineDetectedWhenStrikethroughDisabled() { + // Even though strikethrough processing is off, the helper method itself must + // still recognise an underline – i.e. the detection logic is independent. + TextChunk textChunk = new TextChunk(new BoundingBox(0, 10.0, 100.0, 60.0, 120.0), + "hello", 12, 100.0); + LineChunk line = LineChunk.createLineChunk(0, 12.0, 97.0, 58.0, 97.0, 1.0, + LineChunk.BUTT_CAP_STYLE); + + Assertions.assertTrue(TextDecorationProcessor.isUnderlineLine(line, textChunk), + "Underline helper should return true regardless of the strikethrough flag"); + } + +// @Test +// public void testUnderlineLineArtDetected() { +// TextChunk textChunk = new TextChunk(new BoundingBox(0, 10.0, 100.0, 60.0, 120.0), +// "world", 12, 100.0); +// // Thin horizontal rectangle in the underline zone: y bottom=97, top=98, thickness=1 +// LineArtChunk lineArt = new LineArtChunk(new BoundingBox(0, 12.0, 97.0, 58.0, 98.0)); +// +// Assertions.assertTrue(TextDecorationProcessor.isUnderlineLineArt(lineArt, textChunk), +// "Thin line‑art in underline zone must be detected"); +// } + +// @Test +// public void testUnderlineLineArtTooThickRejected() { +// TextChunk textChunk = new TextChunk(new BoundingBox(0, 10.0, 100.0, 60.0, 120.0), +// "test", 12, 100.0); +// // Tall rectangle (height=10, which is > 0.3*20=6) +// LineArtChunk lineArt = new LineArtChunk(new BoundingBox(0, 12.0, 90.0, 58.0, 100.0)); +// +// Assertions.assertFalse(TextDecorationProcessor.isUnderlineLineArt(lineArt, textChunk), +// "Overly tall line‑art must be rejected"); +// } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/TextLineProcessorTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/TextLineProcessorTest.java new file mode 100644 index 0000000..0cf9b4b --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/TextLineProcessorTest.java @@ -0,0 +1,154 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.content.TextLine; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; + +import java.util.ArrayList; +import java.util.List; + +public class TextLineProcessorTest { + + @Test + public void testProcessTextLines() { + StaticContainers.setIsIgnoreCharactersWithoutUnicode(false); + StaticContainers.setIsDataLoader(true); + List contents = new ArrayList<>(); + contents.add(new TextChunk(new BoundingBox(0, 10.0, 30.0, 20.0, 40.0), + "test", 10, 30.0)); + contents.add(new TextChunk(new BoundingBox(0, 20.0, 30.0, 30.0, 40.0), + "test", 10, 30.0)); + contents.add(new TextChunk(new BoundingBox(0, 10.0, 20.0, 20.0, 30.0), + "test", 10, 20.0)); + contents = TextLineProcessor.processTextLines(contents); + Assertions.assertEquals(2, contents.size()); + Assertions.assertTrue(contents.get(0) instanceof TextLine); + Assertions.assertEquals("testtest", ((TextLine) contents.get(0)).getValue()); + Assertions.assertTrue(contents.get(1) instanceof TextLine); + Assertions.assertEquals("test", ((TextLine) contents.get(1)).getValue()); + } + + /** + * Regression test for issue #150: text chunks on the same line should be sorted by leftX. + * + * When PDF streams render text in non-sequential order (e.g., "A:" content appears + * after "Q:" content in the stream but should appear before it visually), + * TextLineProcessor should sort chunks by leftX to produce correct reading order. + */ + @Test + public void testProcessTextLinesSortsChunksByLeftX() { + StaticContainers.setIsIgnoreCharactersWithoutUnicode(false); + StaticContainers.setIsDataLoader(true); + List contents = new ArrayList<>(); + + // Simulate chunks arriving in wrong stream order but on the same line. + // In the PDF stream, "content" appears first, then "Q:" appears second, + // but "Q:" is physically to the left of "content". + TextChunk contentChunk = new TextChunk(new BoundingBox(0, 100.0, 300.0, 200.0, 310.0), + "content", 10, 300.0); + TextChunk labelChunk = new TextChunk(new BoundingBox(0, 10.0, 300.0, 40.0, 310.0), + "Q:", 10, 300.0); + + // Add in wrong order (as they might appear in PDF stream) + contents.add(contentChunk); + contents.add(labelChunk); + + contents = TextLineProcessor.processTextLines(contents); + + Assertions.assertEquals(1, contents.size()); + Assertions.assertTrue(contents.get(0) instanceof TextLine); + + TextLine textLine = (TextLine) contents.get(0); + // After sorting by leftX, "Q:" (at x=10) should come before "content" (at x=100) + Assertions.assertTrue(textLine.getValue().startsWith("Q:"), + "Text line should start with 'Q:' (leftmost chunk), but got: " + textLine.getValue()); + } + + /** + * Regression test for issue #358: when a whitespace chunk exists between two text chunks + * but the physical gap is smaller than the threshold, a space should still be inserted + * because the PDF explicitly contains a space character at that position. + */ + @Test + public void testProcessTextLinesPreservesSpaceFromWhitespaceChunk() { + StaticContainers.setIsIgnoreCharactersWithoutUnicode(false); + StaticContainers.setIsDataLoader(true); + List contents = new ArrayList<>(); + + // "Evolution" at x=46..85.5, font size 9.5 (threshold = 9.5*0.17 = 1.615) + TextChunk chunk1 = new TextChunk(new BoundingBox(0, 46.0, 300.0, 85.5, 310.0), + "Evolution", 9.5, 300.0); + // Whitespace chunk at x=85.5..87.9 — will be dropped by isWhiteSpaceChunk() + TextChunk spaceChunk = new TextChunk(new BoundingBox(0, 85.5, 300.0, 87.9, 310.0), + " ", 9.5, 300.0); + // "Of" at x=86.0..94.4 — gap from chunk1 = 0.5 < threshold 1.615, so no gap-based space + TextChunk chunk2 = new TextChunk(new BoundingBox(0, 86.0, 300.0, 94.4, 310.0), + "Of", 9.5, 300.0); + + contents.add(chunk1); + contents.add(spaceChunk); + contents.add(chunk2); + + contents = TextLineProcessor.processTextLines(contents); + + Assertions.assertEquals(1, contents.size()); + Assertions.assertTrue(contents.get(0) instanceof TextLine); + + TextLine textLine = (TextLine) contents.get(0); + // Space must be preserved even though the physical gap is below threshold + Assertions.assertEquals("Evolution Of", textLine.getValue(), + "Space from whitespace chunk should be preserved, but got: " + textLine.getValue()); + } + + /** + * Regression test for issue #150: spaces should be inserted between sorted chunks + * when there is a physical gap between them. + */ + @Test + public void testProcessTextLinesAddsSpacesBetweenDistantChunks() { + StaticContainers.setIsIgnoreCharactersWithoutUnicode(false); + StaticContainers.setIsDataLoader(true); + List contents = new ArrayList<>(); + + // Two chunks on the same line with a significant gap between them + TextChunk chunk1 = new TextChunk(new BoundingBox(0, 10.0, 300.0, 30.0, 310.0), + "A:", 10, 300.0); + TextChunk chunk2 = new TextChunk(new BoundingBox(0, 50.0, 300.0, 150.0, 310.0), + "answer text", 10, 300.0); + + contents.add(chunk1); + contents.add(chunk2); + + contents = TextLineProcessor.processTextLines(contents); + + Assertions.assertEquals(1, contents.size()); + Assertions.assertTrue(contents.get(0) instanceof TextLine); + + TextLine textLine = (TextLine) contents.get(0); + // There should be a space between "A:" and "answer text" due to the gap + Assertions.assertTrue(textLine.getValue().contains("A:") && textLine.getValue().contains("answer text"), + "Both chunks should be present in the text line: " + textLine.getValue()); + Assertions.assertNotEquals("A:answer text", textLine.getValue(), + "There should be a space between chunks when there is a physical gap"); + } + +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/TextProcessorTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/TextProcessorTest.java new file mode 100644 index 0000000..31a1629 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/TextProcessorTest.java @@ -0,0 +1,239 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.content.ImageChunk; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; + +import java.util.ArrayList; +import java.util.List; + +public class TextProcessorTest { + + @Test + public void testReplaceUndefinedCharacters() { + // Simulate backend results containing U+FFFD (replacement character) + List contents = new ArrayList<>(); + contents.add(new TextChunk(new BoundingBox(1, 10.0, 10.0, 100.0, 20.0), + "Hello \uFFFD World", 10, 10.0)); + contents.add(new TextChunk(new BoundingBox(1, 10.0, 30.0, 100.0, 40.0), + "No issues here", 10, 10.0)); + + TextProcessor.replaceUndefinedCharacters(contents, "?"); + + Assertions.assertEquals("Hello ? World", ((TextChunk) contents.get(0)).getValue()); + Assertions.assertEquals("No issues here", ((TextChunk) contents.get(1)).getValue()); + } + + @Test + public void testReplaceUndefinedCharactersSkipsWhenDefault() { + // When replacement string equals REPLACEMENT_CHARACTER_STRING, should be a no-op + List contents = new ArrayList<>(); + contents.add(new TextChunk(new BoundingBox(1, 10.0, 10.0, 100.0, 20.0), + "Hello \uFFFD World", 10, 10.0)); + + TextProcessor.replaceUndefinedCharacters(contents, "\uFFFD"); + + // Should remain unchanged + Assertions.assertEquals("Hello \uFFFD World", ((TextChunk) contents.get(0)).getValue()); + } + + @Test + public void testReplaceUndefinedCharactersMultipleOccurrences() { + List contents = new ArrayList<>(); + contents.add(new TextChunk(new BoundingBox(1, 10.0, 10.0, 100.0, 20.0), + "\uFFFD first \uFFFD second \uFFFD", 10, 10.0)); + + TextProcessor.replaceUndefinedCharacters(contents, "*"); + + Assertions.assertEquals("* first * second *", ((TextChunk) contents.get(0)).getValue()); + } + + @Test + public void testReplaceUndefinedCharactersWithRegexSpecialChars() { + // Verify that regex-special characters in replacement string work correctly + List contents = new ArrayList<>(); + contents.add(new TextChunk(new BoundingBox(1, 10.0, 10.0, 100.0, 20.0), + "Hello \uFFFD World", 10, 10.0)); + + TextProcessor.replaceUndefinedCharacters(contents, "$"); + + Assertions.assertEquals("Hello $ World", ((TextChunk) contents.get(0)).getValue()); + } + + @Test + public void testReplaceUndefinedCharactersSkipsNonTextChunks() { + List contents = new ArrayList<>(); + contents.add(new ImageChunk(new BoundingBox(1, 10.0, 10.0, 100.0, 20.0))); + contents.add(new TextChunk(new BoundingBox(1, 10.0, 30.0, 100.0, 40.0), + "Hello \uFFFD", 10, 10.0)); + + TextProcessor.replaceUndefinedCharacters(contents, "?"); + + Assertions.assertTrue(contents.get(0) instanceof ImageChunk); + Assertions.assertEquals("Hello ?", ((TextChunk) contents.get(1)).getValue()); + } + + @Test + public void testRemoveSameTextChunks() { + List contents = new ArrayList<>(); + contents.add(new TextChunk(new BoundingBox(1, 10.0, 10.0, 20.0, 20.0), + "test", 10, 10.0)); + contents.add(new TextChunk(new BoundingBox(1, 10.0, 10.0, 20.0, 20.0), + "test", 10, 10.0)); + TextProcessor.removeSameTextChunks(contents); + contents = DocumentProcessor.removeNullObjectsFromList(contents); + Assertions.assertEquals(1, contents.size()); + } + + @Test + public void testRemoveTextDecorationImages() { + List contents = new ArrayList<>(); + contents.add(new TextChunk(new BoundingBox(1, 10.0, 10.0, 20.0, 20.0), + "test", 10, 10.0)); + contents.add(new ImageChunk(new BoundingBox(1, 10.0, 10.0, 20.0, 20.0))); + TextProcessor.removeTextDecorationImages(contents); + contents = DocumentProcessor.removeNullObjectsFromList(contents); + Assertions.assertEquals(1, contents.size()); + Assertions.assertTrue(contents.get(0) instanceof TextChunk); + } + + /** + * Regression test for issue #150: text chunks with a large horizontal gap + * should remain separate. + */ + @Test + public void testMergeCloseTextChunksSeparatedByLargeGapNotMerged() { + List contents = new ArrayList<>(); + String fontName = "Arial"; + + // First chunk: "4" at x=180, physically in one table cell + TextChunk chunk1 = new TextChunk(new BoundingBox(0, 180.0, 100.0, 190.0, 110.0), + "4", 10, 100.0); + chunk1.adjustSymbolEndsToBoundingBox(null); + chunk1.setFontName(fontName); + chunk1.setFontWeight(400); + + // Second chunk: "6" at x=350, physically in a different table cell + TextChunk chunk2 = new TextChunk(new BoundingBox(0, 350.0, 100.0, 360.0, 110.0), + "6", 10, 100.0); + chunk2.adjustSymbolEndsToBoundingBox(null); + chunk2.setFontName(fontName); + chunk2.setFontWeight(400); + + contents.add(chunk1); + contents.add(chunk2); + + TextProcessor.mergeCloseTextChunks(contents); + contents = DocumentProcessor.removeNullObjectsFromList(contents); + + Assertions.assertEquals(2, contents.size(), + "Text chunks separated by a large gap should not be merged"); + Assertions.assertEquals("4", ((TextChunk) contents.get(0)).getValue()); + Assertions.assertEquals("6", ((TextChunk) contents.get(1)).getValue()); + } + + /** + * Regression test for issue #150: adjacent text chunks should still be merged. + */ + @Test + public void testMergeCloseTextChunksAdjacentMerged() { + List contents = new ArrayList<>(); + String fontName = "Arial"; + + // First chunk: "Hel" at x=10 + TextChunk chunk1 = new TextChunk(new BoundingBox(0, 10.0, 100.0, 30.0, 110.0), + "Hel", 10, 100.0); + chunk1.adjustSymbolEndsToBoundingBox(null); + chunk1.setFontName(fontName); + chunk1.setFontWeight(400); + chunk1.setTextEnd(30.0); + + // Second chunk: "lo" at x=30, immediately adjacent + TextChunk chunk2 = new TextChunk(new BoundingBox(0, 30.0, 100.0, 45.0, 110.0), + "lo", 10, 100.0); + chunk2.adjustSymbolEndsToBoundingBox(null); + chunk2.setFontName(fontName); + chunk2.setFontWeight(400); + chunk2.setTextStart(30.0); + + contents.add(chunk1); + contents.add(chunk2); + + TextProcessor.mergeCloseTextChunks(contents); + contents = DocumentProcessor.removeNullObjectsFromList(contents); + + // Adjacent chunks should be merged + Assertions.assertEquals(1, contents.size(), + "Adjacent text chunks should be merged"); + Assertions.assertEquals("Hello", ((TextChunk) contents.get(0)).getValue()); + } + + @Test + public void testMeasureReplacementCharRatioAllReplacement() { + List contents = new ArrayList<>(); + contents.add(new TextChunk(new BoundingBox(1, 10.0, 10.0, 100.0, 20.0), + "\uFFFD\uFFFD\uFFFD", 10, 10.0)); + + double ratio = TextProcessor.measureReplacementCharRatio(contents); + Assertions.assertEquals(1.0, ratio, 0.001); + } + + @Test + public void testMeasureReplacementCharRatioNoReplacement() { + List contents = new ArrayList<>(); + contents.add(new TextChunk(new BoundingBox(1, 10.0, 10.0, 100.0, 20.0), + "Hello World", 10, 10.0)); + + double ratio = TextProcessor.measureReplacementCharRatio(contents); + Assertions.assertEquals(0.0, ratio, 0.001); + } + + @Test + public void testMeasureReplacementCharRatioMixed() { + List contents = new ArrayList<>(); + // 3 replacement chars out of 10 total = 0.3 + contents.add(new TextChunk(new BoundingBox(1, 10.0, 10.0, 100.0, 20.0), + "\uFFFD\uFFFD\uFFFDAbcdefg", 10, 10.0)); + + double ratio = TextProcessor.measureReplacementCharRatio(contents); + Assertions.assertEquals(0.3, ratio, 0.001); + } + + @Test + public void testMeasureReplacementCharRatioEmptyContents() { + List contents = new ArrayList<>(); + + double ratio = TextProcessor.measureReplacementCharRatio(contents); + Assertions.assertEquals(0.0, ratio, 0.001); + } + + @Test + public void testMeasureReplacementCharRatioNonTextChunksIgnored() { + List contents = new ArrayList<>(); + contents.add(new ImageChunk(new BoundingBox(1, 10.0, 10.0, 100.0, 20.0))); + contents.add(new TextChunk(new BoundingBox(1, 10.0, 30.0, 100.0, 40.0), + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD", 10, 10.0)); + + double ratio = TextProcessor.measureReplacementCharRatio(contents); + // Only TextChunks counted: 5/5 = 1.0 + Assertions.assertEquals(1.0, ratio, 0.001); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/readingorder/XYCutPlusPlusSorterTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/readingorder/XYCutPlusPlusSorterTest.java new file mode 100644 index 0000000..ac64d8d --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/readingorder/XYCutPlusPlusSorterTest.java @@ -0,0 +1,914 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.processors.readingorder; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.verapdf.wcag.algorithms.entities.IObject; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.content.TextLine; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; + +import java.time.Duration; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +/** + * Unit tests for XYCutPlusPlusSorter. + */ +class XYCutPlusPlusSorterTest { + + @BeforeEach + void setUp() { + StaticContainers.setIsIgnoreCharactersWithoutUnicode(false); + StaticContainers.setIsDataLoader(true); + } + + // ========== BASIC FUNCTIONALITY TESTS ========== + + @Test + void sort_nullList_returnsNull() { + List result = XYCutPlusPlusSorter.sort(null); + assertNull(result); + } + + @Test + void sort_emptyList_returnsEmpty() { + List result = XYCutPlusPlusSorter.sort(new ArrayList<>()); + assertTrue(result.isEmpty()); + } + + @Test + void sort_singleObject_returnsSame() { + List objects = new ArrayList<>(); + objects.add(createTextLine(10, 90, 20, 80, "A")); + + List result = XYCutPlusPlusSorter.sort(objects); + + assertEquals(1, result.size()); + assertEquals("A", getText(result.get(0))); + } + + @Test + void sort_singleColumn_topToBottom() { + // Single column layout - objects should be sorted top to bottom + // PDF coordinate: Y increases upward + List objects = new ArrayList<>(); + objects.add(createTextLine(10, 70, 100, 60, "C")); // bottom + objects.add(createTextLine(10, 90, 100, 80, "A")); // top + objects.add(createTextLine(10, 80, 100, 70, "B")); // middle + + List result = XYCutPlusPlusSorter.sort(objects); + + assertEquals(3, result.size()); + assertEquals("A", getText(result.get(0))); + assertEquals("B", getText(result.get(1))); + assertEquals("C", getText(result.get(2))); + } + + // ========== CROSS-LAYOUT DETECTION TESTS ========== + + @Test + void identifyCrossLayoutElements_wideHeader_detected() { + // Wide header spanning full width, with narrow columns below + // Header: width=180 (the widest element), Column items: width=40 + // Using maxWidth-based detection: maxWidth=180, beta=0.7, threshold=126 + // Header width 180 >= 126, and overlaps with multiple elements -> detected + List objects = new ArrayList<>(); + objects.add(createTextLine(10, 95, 190, 85, "Header")); // Wide header + objects.add(createTextLine(10, 75, 50, 65, "Col1-A")); // Left column + objects.add(createTextLine(10, 55, 50, 45, "Col1-B")); + objects.add(createTextLine(100, 75, 140, 65, "Col2-A")); // Right column + objects.add(createTextLine(100, 55, 140, 45, "Col2-B")); + + // Use beta=0.7 to detect elements that are at least 70% of max width + List crossLayout = XYCutPlusPlusSorter.identifyCrossLayoutElements(objects, 0.7); + + assertEquals(1, crossLayout.size()); + assertEquals("Header", getText(crossLayout.get(0))); + } + + @Test + void identifyCrossLayoutElements_narrowElements_notDetected() { + // All elements have similar widths - no cross-layout + List objects = new ArrayList<>(); + objects.add(createTextLine(10, 90, 50, 80, "A")); + objects.add(createTextLine(10, 70, 50, 60, "B")); + objects.add(createTextLine(10, 50, 50, 40, "C")); + + List crossLayout = XYCutPlusPlusSorter.identifyCrossLayoutElements(objects, 1.3); + + assertTrue(crossLayout.isEmpty()); + } + + @Test + void identifyCrossLayoutElements_wideButNoOverlaps_notDetected() { + // Wide element but doesn't horizontally overlap with others + List objects = new ArrayList<>(); + objects.add(createTextLine(10, 95, 190, 85, "Wide")); // Wide, at top + objects.add(createTextLine(200, 70, 250, 60, "A")); // Far right, no overlap + objects.add(createTextLine(260, 70, 310, 60, "B")); // Far right, no overlap + + List crossLayout = XYCutPlusPlusSorter.identifyCrossLayoutElements(objects, 1.3); + + assertTrue(crossLayout.isEmpty()); + } + + @Test + void hasMinimumOverlaps_sufficientOverlaps_returnsTrue() { + List objects = new ArrayList<>(); + IObject wide = createTextLine(10, 90, 190, 80, "Wide"); + objects.add(wide); + objects.add(createTextLine(20, 70, 60, 60, "A")); // Overlaps with wide + objects.add(createTextLine(100, 70, 140, 60, "B")); // Overlaps with wide + + boolean result = XYCutPlusPlusSorter.hasMinimumOverlaps(wide, objects, 2); + + assertTrue(result); + } + + @Test + void hasMinimumOverlaps_insufficientOverlaps_returnsFalse() { + List objects = new ArrayList<>(); + IObject element = createTextLine(10, 90, 50, 80, "Element"); + objects.add(element); + objects.add(createTextLine(100, 70, 140, 60, "A")); // No horizontal overlap + + boolean result = XYCutPlusPlusSorter.hasMinimumOverlaps(element, objects, 2); + + assertFalse(result); + } + + // ========== DENSITY RATIO TESTS ========== + + @Test + void computeDensityRatio_denseLayout_highRatio() { + // Tightly packed elements - high density + List objects = new ArrayList<>(); + objects.add(createTextLine(0, 100, 100, 50, "A")); // 100x50 = 5000 + objects.add(createTextLine(0, 50, 100, 0, "B")); // 100x50 = 5000 + // Total area: 10000, Region: 100x100 = 10000, Density = 1.0 + + double density = XYCutPlusPlusSorter.computeDensityRatio(objects); + + assertTrue(density > 0.9); + } + + @Test + void computeDensityRatio_sparseLayout_lowRatio() { + // Widely spaced small elements - low density + List objects = new ArrayList<>(); + objects.add(createTextLine(0, 100, 10, 90, "A")); // 10x10 = 100 + objects.add(createTextLine(90, 10, 100, 0, "B")); // 10x10 = 100 + // Total area: 200, Region: 100x100 = 10000, Density = 0.02 + + double density = XYCutPlusPlusSorter.computeDensityRatio(objects); + + assertTrue(density < 0.5); + } + + @Test + void computeDensityRatio_emptyList_defaultRatio() { + double density = XYCutPlusPlusSorter.computeDensityRatio(new ArrayList<>()); + + assertEquals(1.0, density, 0.001); + } + + // ========== SPLIT TESTS ========== + + @Test + void splitByHorizontalCut_validCut_correctGroups() { + List objects = new ArrayList<>(); + objects.add(createTextLine(10, 90, 100, 80, "Top")); + objects.add(createTextLine(10, 40, 100, 30, "Bottom")); + + List> groups = XYCutPlusPlusSorter.splitByHorizontalCut(objects, 60.0); + + assertEquals(2, groups.size()); + assertEquals(1, groups.get(0).size()); + assertEquals(1, groups.get(1).size()); + assertEquals("Top", getText(groups.get(0).get(0))); + assertEquals("Bottom", getText(groups.get(1).get(0))); + } + + @Test + void splitByVerticalCut_validCut_correctGroups() { + List objects = new ArrayList<>(); + objects.add(createTextLine(10, 90, 40, 80, "Left")); + objects.add(createTextLine(80, 90, 110, 80, "Right")); + + List> groups = XYCutPlusPlusSorter.splitByVerticalCut(objects, 60.0); + + assertEquals(2, groups.size()); + assertEquals(1, groups.get(0).size()); + assertEquals(1, groups.get(1).size()); + assertEquals("Left", getText(groups.get(0).get(0))); + assertEquals("Right", getText(groups.get(1).get(0))); + } + + // ========== INTEGRATION TESTS ========== + + @Test + void sort_twoColumns_leftColumnFirst() { + // Two-column layout with clear X gap + // [A] [B] + // [C] [D] + List objects = new ArrayList<>(); + objects.add(createTextLine(10, 90, 40, 80, "A")); // left column, top + objects.add(createTextLine(80, 90, 110, 80, "B")); // right column, top + objects.add(createTextLine(10, 70, 40, 60, "C")); // left column, bottom + objects.add(createTextLine(80, 70, 110, 60, "D")); // right column, bottom + + List result = XYCutPlusPlusSorter.sort(objects); + + // With default density threshold, should process left column first + assertEquals(4, result.size()); + assertEquals("A", getText(result.get(0))); + assertEquals("C", getText(result.get(1))); + assertEquals("B", getText(result.get(2))); + assertEquals("D", getText(result.get(3))); + } + + @Test + void sort_twoColumnsWithHeader_headerFirst() { + // [ HEADER ] + // [Col1] [Col2] + List objects = new ArrayList<>(); + objects.add(createTextLine(10, 95, 190, 85, "Header")); // Wide header + objects.add(createTextLine(10, 75, 50, 65, "Col1-A")); // Left column + objects.add(createTextLine(10, 55, 50, 45, "Col1-B")); + objects.add(createTextLine(100, 75, 140, 65, "Col2-A")); // Right column + objects.add(createTextLine(100, 55, 140, 45, "Col2-B")); + + List result = XYCutPlusPlusSorter.sort(objects); + + // Header should come first as cross-layout element + assertEquals(5, result.size()); + assertEquals("Header", getText(result.get(0))); + // Then left column + assertEquals("Col1-A", getText(result.get(1))); + assertEquals("Col1-B", getText(result.get(2))); + // Then right column + assertEquals("Col2-A", getText(result.get(3))); + assertEquals("Col2-B", getText(result.get(4))); + } + + @Test + void sort_headerAndFooter_correctPositions() { + // [ HEADER ] + // [Col1] [Col2] + // [ FOOTER ] + List objects = new ArrayList<>(); + objects.add(createTextLine(10, 95, 190, 85, "Header")); + objects.add(createTextLine(10, 75, 50, 65, "Col1")); + objects.add(createTextLine(100, 75, 140, 65, "Col2")); + objects.add(createTextLine(10, 15, 190, 5, "Footer")); + + List result = XYCutPlusPlusSorter.sort(objects); + + assertEquals(4, result.size()); + assertEquals("Header", getText(result.get(0))); + // Columns in middle + assertTrue(getText(result.get(1)).startsWith("Col")); + assertTrue(getText(result.get(2)).startsWith("Col")); + assertEquals("Footer", getText(result.get(3))); + } + + @Test + void sort_horizontalSections_largerYGap_horizontalCutFirst() { + // Layout with larger Y gap than X gap + // [A] [B] <- top row (Y: 80-90) + // <- Y gap = 40 + // [C] [D] <- bottom row (Y: 30-40) + // X gap between columns = 10 (30 to 40) + // Since Y gap (40) > X gap (10), horizontal cut is chosen first + List objects = new ArrayList<>(); + objects.add(createTextLine(10, 90, 30, 80, "A")); + objects.add(createTextLine(40, 90, 60, 80, "B")); + objects.add(createTextLine(10, 40, 30, 30, "C")); + objects.add(createTextLine(40, 40, 60, 30, "D")); + + List result = XYCutPlusPlusSorter.sort(objects); + + // Larger Y gap -> horizontal cut first -> row-by-row reading + // Top row: A -> B, then bottom row: C -> D + assertEquals(4, result.size()); + assertEquals("A", getText(result.get(0))); + assertEquals("B", getText(result.get(1))); + assertEquals("C", getText(result.get(2))); + assertEquals("D", getText(result.get(3))); + } + + @Test + void sort_withCustomParameters_respectsParameters() { + // Test with high beta (less likely to detect cross-layout) + List objects = new ArrayList<>(); + objects.add(createTextLine(10, 95, 190, 85, "Header")); + objects.add(createTextLine(10, 75, 50, 65, "A")); + objects.add(createTextLine(100, 75, 140, 65, "B")); + + // With very high beta, header should not be detected as cross-layout + List result = XYCutPlusPlusSorter.sort(objects, 10.0, 0.9); + + // Header not treated specially, so order depends on axis preference + assertEquals(3, result.size()); + } + + // ========== BOUNDING REGION TESTS ========== + + @Test + void calculateBoundingRegion_multipleObjects_correctBounds() { + List objects = new ArrayList<>(); + objects.add(createTextLine(10, 90, 50, 80, "A")); // leftX=10, rightX=50 + objects.add(createTextLine(30, 70, 100, 60, "B")); // leftX=30, rightX=100 + + BoundingBox region = XYCutPlusPlusSorter.calculateBoundingRegion(objects); + + assertNotNull(region); + assertEquals(10.0, region.getLeftX(), 0.001); // min leftX + assertEquals(100.0, region.getRightX(), 0.001); // max rightX + assertEquals(60.0, region.getBottomY(), 0.001); // min bottomY + assertEquals(90.0, region.getTopY(), 0.001); // max topY + } + + @Test + void calculateTotalArea_multipleObjects_sumOfAreas() { + List objects = new ArrayList<>(); + objects.add(createTextLine(0, 20, 10, 10, "A")); // 10 x 10 = 100 + objects.add(createTextLine(0, 40, 20, 20, "B")); // 20 x 20 = 400 + + double area = XYCutPlusPlusSorter.calculateTotalArea(objects); + + assertEquals(500.0, area, 0.001); + } + + // ========== MERGE TESTS ========== + + @Test + void mergeCrossLayoutElements_emptyCrossLayout_returnsSortedMain() { + List main = new ArrayList<>(); + main.add(createTextLine(10, 90, 50, 80, "A")); + main.add(createTextLine(10, 70, 50, 60, "B")); + + List result = XYCutPlusPlusSorter.mergeCrossLayoutElements(main, new ArrayList<>()); + + assertEquals(2, result.size()); + assertEquals("A", getText(result.get(0))); + assertEquals("B", getText(result.get(1))); + } + + @Test + void mergeCrossLayoutElements_crossLayoutAtTop_insertsFirst() { + List main = new ArrayList<>(); + main.add(createTextLine(10, 70, 50, 60, "Content")); + + List crossLayout = new ArrayList<>(); + crossLayout.add(createTextLine(10, 90, 190, 80, "Header")); + + List result = XYCutPlusPlusSorter.mergeCrossLayoutElements(main, crossLayout); + + assertEquals(2, result.size()); + assertEquals("Header", getText(result.get(0))); + assertEquals("Content", getText(result.get(1))); + } + + // ========== REAL-WORLD LAYOUT TESTS ========== + + /** + * Test based on actual academic paper layout (2408.02509v1.pdf). + * This paper has: + * - Title at top (wide, cross-layout) + * - Authors below title + * - Two-column layout for content + * - ArXiv sidebar on left (narrow, vertical) + * + * Expected reading order: + * 1. Title (ID 95): "Practical Attacks against Black-box..." + * 2. Authors (ID 96): "Slobodan Jenko..." + * 3. Abstract - left column (ID 97): "Abstract—Modern code..." + * 4. Section heading (ID 98): "1. Introduction" + * 5. Intro para 1 - left (ID 99): "Code completion aims..." + * 6. Intro para 2 - left (ID 100): "Given the widespread..." + * 7. Right column para 1 (ID 101): "bilities even under..." + * 8. Right column para 2 (ID 102): "Our Practical Threat Model..." + * 9. Right column para 3 (ID 103): "The attacker's goal..." + * 10. Right column para 4 (ID 104): "Key Challenges..." + * 11. ArXiv sidebar (ID 105): "arXiv:2408.02509v1..." + */ + @Test + void sort_academicPaperTwoColumn_correctReadingOrder() { + List objects = new ArrayList<>(); + + // Create objects based on actual bounding boxes from 2408.02509v1.pdf + // BoundingBox format: [leftX, bottomY, rightX, topY] + + // ID 95: Title (cross-layout, wide) + objects.add(createTextLineWithId(119.725, 697.936, 492.279, 679.722, "Title", 95)); + + // ID 96: Authors + objects.add(createTextLineWithId(129.831, 653.915, 482.17, 609.655, "Authors", 96)); + + // ID 97: Abstract - LEFT column (tall block) + objects.add(createTextLineWithId(53.397, 598.418, 298.579, 322.175, "Abstract", 97)); + + // ID 98: Section heading "1. Introduction" - LEFT column + objects.add(createTextLineWithId(54.0, 310.895, 134.124, 295.283, "Introduction", 98)); + + // ID 99: Introduction paragraph - LEFT column + objects.add(createTextLineWithId(53.75, 285.545, 298.663, 116.696, "IntroPara1", 99)); + + // ID 100: Continuation paragraph - LEFT column (bottom) + objects.add(createTextLineWithId(53.64, 117.383, 298.66, 71.733, "IntroPara2", 100)); + + // ID 101: RIGHT column - "bilities even under..." (top) + objects.add(createTextLineWithId(314.64, 598.982, 559.748, 474.932, "RightPara1", 101)); + + // ID 102: RIGHT column - "Our Practical Threat Model..." + objects.add(createTextLineWithId(315.0, 470.417, 559.662, 323.607, "RightPara2", 102)); + + // ID 103: RIGHT column - "The attacker's goal..." + objects.add(createTextLineWithId(315.0, 324.708, 559.657, 223.058, "RightPara3", 103)); + + // ID 104: RIGHT column - "Key Challenges..." (bottom) + objects.add(createTextLineWithId(314.64, 218.543, 559.657, 71.733, "RightPara4", 104)); + + // ID 105: ArXiv sidebar (very narrow, on left margin) + objects.add(createTextLineWithId(14.04, 579.2, 36.36, 237.0, "ArXivSidebar", 105)); + + List result = XYCutPlusPlusSorter.sort(objects); + + assertEquals(11, result.size()); + + // Find positions for all elements + int titlePos = findPosition(result, "Title"); + int authorsPos = findPosition(result, "Authors"); + int abstractPos = findPosition(result, "Abstract"); + int introPos = findPosition(result, "Introduction"); + int introPara1Pos = findPosition(result, "IntroPara1"); + int introPara2Pos = findPosition(result, "IntroPara2"); + int rightPara1Pos = findPosition(result, "RightPara1"); + int rightPara2Pos = findPosition(result, "RightPara2"); + int rightPara3Pos = findPosition(result, "RightPara3"); + int rightPara4Pos = findPosition(result, "RightPara4"); + // Note: ArXivSidebar position is flexible (similar to MORAN paper's 667) + + // Verify key ordering: + // 1. Title -> Authors (header section) + assertTrue(titlePos < authorsPos, "Title should come before Authors"); + + // 2. Authors -> Abstract (header before body) + assertTrue(authorsPos < abstractPos, "Authors should come before Abstract"); + + // 3. LEFT column content should come before RIGHT column + assertTrue(abstractPos < rightPara1Pos, "Abstract should come before right column"); + assertTrue(introPos < rightPara1Pos, "Introduction should come before right column"); + assertTrue(introPara1Pos < rightPara1Pos, "IntroPara1 should come before right column"); + assertTrue(introPara2Pos < rightPara1Pos, "IntroPara2 should come before right column"); + + // 4. Left column internal order (top to bottom) + assertTrue(abstractPos < introPos, "Abstract should come before Introduction"); + assertTrue(introPos < introPara1Pos, "Introduction should come before IntroPara1"); + assertTrue(introPara1Pos < introPara2Pos, "IntroPara1 should come before IntroPara2"); + + // 5. Right column internal order (top to bottom) + assertTrue(rightPara1Pos < rightPara2Pos, "RightPara1 should come before RightPara2"); + assertTrue(rightPara2Pos < rightPara3Pos, "RightPara2 should come before RightPara3"); + assertTrue(rightPara3Pos < rightPara4Pos, "RightPara3 should come before RightPara4"); + } + + /** + * Test two-column layout where columns have overlapping Y ranges. + * This simulates the common academic paper layout where left and right + * columns have content at the same vertical positions. + */ + @Test + void sort_twoColumnsOverlappingY_leftColumnFirst() { + List objects = new ArrayList<>(); + + // Left column: X range 50-300 + objects.add(createTextLine(50, 600, 300, 500, "Left1")); + objects.add(createTextLine(50, 490, 300, 400, "Left2")); + objects.add(createTextLine(50, 390, 300, 300, "Left3")); + + // Right column: X range 310-560 (clear gap at X=300-310) + objects.add(createTextLine(310, 600, 560, 500, "Right1")); + objects.add(createTextLine(310, 490, 560, 400, "Right2")); + objects.add(createTextLine(310, 390, 560, 300, "Right3")); + + List result = XYCutPlusPlusSorter.sort(objects); + + assertEquals(6, result.size()); + + // Should read left column first, then right column + assertEquals("Left1", getText(result.get(0))); + assertEquals("Left2", getText(result.get(1))); + assertEquals("Left3", getText(result.get(2))); + assertEquals("Right1", getText(result.get(3))); + assertEquals("Right2", getText(result.get(4))); + assertEquals("Right3", getText(result.get(5))); + } + + // ========== NARROW BRIDGE ELEMENT TEST (Issue #294) ========== + + /** + * Test two-column layout where a narrow element (e.g., page number) bridges the gap + * between columns. The narrow outlier filter should detect the column gap despite + * the bridge element. + * + * Layout (X axis): + * Left column: [50-300] with 2 paragraphs + * Right column: [320-560] with 2 paragraphs + * Bridge element: [302-318] (narrow marker in the column gap, same Y range) + * + * All elements share the same Y band (550-600) so no horizontal cut is available. + * Without filtering, edge vertical gap = 2 (300→302 and 318→320), below MIN_GAP_THRESHOLD. + * Without filtering, the algorithm falls through to sortByYThenX which interleaves columns. + * With narrow outlier filtering, bridge (width=16) is removed (< 10% of region width=510), + * revealing gap = 20 (300→320), enabling correct column detection via vertical cut. + */ + @Test + void sort_twoColumnsWithNarrowBridge_leftColumnFirst() { + List objects = new ArrayList<>(); + + // Left column paragraphs — overlapping Y ranges, no horizontal gap possible + objects.add(createTextLine(50, 600, 300, 570, "L1")); + objects.add(createTextLine(50, 572, 300, 550, "L2")); + + // Right column paragraphs — same Y range as left, overlapping + objects.add(createTextLine(320, 600, 560, 570, "R1")); + objects.add(createTextLine(320, 572, 560, 550, "R2")); + + // Narrow bridge element in the column gap, within the same Y range. + // Spans 302-318, making edge gaps: 300→302=2pt and 318→320=2pt (both < 5pt threshold) + objects.add(createTextLine(302, 585, 318, 575, "PageNum")); + + List result = XYCutPlusPlusSorter.sort(objects); + + assertEquals(5, result.size()); + + int l1 = findPosition(result, "L1"); + int l2 = findPosition(result, "L2"); + int r1 = findPosition(result, "R1"); + int r2 = findPosition(result, "R2"); + + // Left column should come before right column + assertTrue(l2 < r1, "Left column should come before right column. L2@" + l2 + " R1@" + r1); + + // Internal order within each column + assertTrue(l1 < l2, "L1 before L2"); + assertTrue(r1 < r2, "R1 before R2"); + } + + // ========== 1901.03003.pdf READING ORDER TEST ========== + + /** + * Test based on actual academic paper layout (1901.03003.pdf - MORAN paper). + * + * Expected reading order (IDs): + * 667, 646, 647, 648, 649, 650, [653-662 as group], 656, 663, 664, 665, 666 + * + * Images 653-662 should be grouped together but internal order is flexible. + */ + @Test + void sort_1901_03003_moran_paper_correctReadingOrder() { + List objects = new ArrayList<>(); + + // Create objects based on actual bounding boxes from 1901.03003.json + // BoundingBox format in JSON: [leftX, bottomY, rightX, topY] + + // ID 667: ArXiv sidebar - narrow, on left margin + objects.add(createTextLineWithId(14.04, 577.52, 36.36, 232.0, "667", 667)); + + // ID 646: Title - cross-layout, wide + objects.add(createTextLineWithId(130.151, 688.839, 465.077, 652.242, "646", 646)); + + // ID 647: Authors + objects.add(createTextLineWithId(82.271, 630.323, 516.716, 567.65, "647", 647)); + + // ID 648: Abstract heading + objects.add(createTextLineWithId(145.995, 544.182, 190.48, 528.628, "648", 648)); + + // ID 649: Abstract content - LEFT column + objects.add(createTextLineWithId(50.112, 512.148, 286.362, 173.942, "649", 649)); + + // ID 650: Keywords - LEFT column + objects.add(createTextLineWithId(50.112, 156.766, 286.359, 129.636, "650", 650)); + + // Images 653-662 on RIGHT side (3x3 grid) + objects.add(createTextLineWithId(315.944, 538.682, 386.808, 496.162, "653", 653)); + objects.add(createTextLineWithId(315.945, 495.167, 386.807, 452.648, "654", 654)); + objects.add(createTextLineWithId(315.945, 451.652, 386.808, 409.132, "655", 655)); + objects.add(createTextLineWithId(392.918, 538.682, 463.783, 496.162, "657", 657)); + objects.add(createTextLineWithId(392.918, 495.166, 463.783, 452.646, "658", 658)); + objects.add(createTextLineWithId(392.918, 451.65, 463.783, 409.13, "659", 659)); + objects.add(createTextLineWithId(469.89, 538.683, 540.76, 496.163, "660", 660)); + objects.add(createTextLineWithId(469.889, 495.167, 540.76, 452.647, "661", 661)); + objects.add(createTextLineWithId(469.89, 451.652, 540.759, 409.131, "662", 662)); + + // ID 656: Figure caption - below images + objects.add(createTextLineWithId(308.862, 410.306, 545.115, 360.946, "656", 656)); + + // ID 663: Introduction heading - RIGHT column + objects.add(createTextLineWithId(308.862, 343.869, 385.698, 328.315, "663", 663)); + + // ID 664-666: Introduction paragraphs - RIGHT column + objects.add(createTextLineWithId(308.862, 321.771, 545.109, 200.233, "664", 664)); + objects.add(createTextLineWithId(308.862, 199.651, 545.109, 105.211, "665", 665)); + objects.add(createTextLineWithId(308.862, 104.629, 545.109, 77.935, "666", 666)); + + List result = XYCutPlusPlusSorter.sort(objects); + + // Expected order: 667, 646, 647, 648, 649, 650, [images 653-662], 656, 663, 664, 665, 666 + // Images should be grouped but internal order is flexible + + // Find positions (pos667 is not checked since ArXiv sidebar order is flexible) + int pos646 = findPosition(result, "646"); + int pos647 = findPosition(result, "647"); + int pos648 = findPosition(result, "648"); + int pos649 = findPosition(result, "649"); + int pos650 = findPosition(result, "650"); + int pos656 = findPosition(result, "656"); + int pos663 = findPosition(result, "663"); + int pos664 = findPosition(result, "664"); + int pos665 = findPosition(result, "665"); + int pos666 = findPosition(result, "666"); + + // Find image positions + int[] imgPositions = { + findPosition(result, "653"), + findPosition(result, "654"), + findPosition(result, "655"), + findPosition(result, "657"), + findPosition(result, "658"), + findPosition(result, "659"), + findPosition(result, "660"), + findPosition(result, "661"), + findPosition(result, "662") + }; + int minImgPos = Arrays.stream(imgPositions).min().getAsInt(); + int maxImgPos = Arrays.stream(imgPositions).max().getAsInt(); + + // Verify ordering constraints + // Note: 667 (ArXiv sidebar) is a special element, order is flexible + + // 1. 646 -> 647 (Title -> Authors) + assertTrue(pos646 < pos647, "646 should come before 647. Got: 646@" + pos646 + ", 647@" + pos647); + + // 2. 647 -> 648 -> 649 -> 650 + assertTrue(pos647 < pos648, "647 should come before 648. Got: 647@" + pos647 + ", 648@" + pos648); + assertTrue(pos648 < pos649, "648 should come before 649. Got: 648@" + pos648 + ", 649@" + pos649); + assertTrue(pos649 < pos650, "649 should come before 650. Got: 649@" + pos649 + ", 650@" + pos650); + + // 3. Images 653-662 should be grouped together (consecutive) + assertEquals(8, maxImgPos - minImgPos, + "All 9 images should be consecutive (span of 8). Got span: " + (maxImgPos - minImgPos)); + + // 4. 650 -> [images] -> 656 -> 663 -> 664 -> 665 -> 666 + assertTrue(pos650 < minImgPos, "650 should come before images. Got: 650@" + pos650 + ", images start@" + minImgPos); + assertTrue(maxImgPos < pos656, "Images should come before 656. Got: images end@" + maxImgPos + ", 656@" + pos656); + assertTrue(pos656 < pos663, "656 should come before 663. Got: 656@" + pos656 + ", 663@" + pos663); + assertTrue(pos663 < pos664, "663 should come before 664. Got: 663@" + pos663 + ", 664@" + pos664); + assertTrue(pos664 < pos665, "664 should come before 665. Got: 664@" + pos664 + ", 665@" + pos665); + assertTrue(pos665 < pos666, "665 should come before 666. Got: 665@" + pos665 + ", 666@" + pos666); + } + + // ========== HELPER METHODS ========== + + private int findPosition(List objects, String text) { + for (int i = 0; i < objects.size(); i++) { + if (getText(objects.get(i)).equals(text)) { + return i; + } + } + return -1; + } + + private IObject createTextLineWithId(double leftX, double topY, double rightX, double bottomY, String text, int id) { + return createTextLine(leftX, topY, rightX, bottomY, text); + } + + /** + * Helper method to create a TextLine with the specified bounding box and text. + * BoundingBox constructor: (pageNumber, leftX, bottomY, rightX, topY) + */ + private IObject createTextLine(double leftX, double topY, double rightX, double bottomY, String text) { + BoundingBox bbox = new BoundingBox(0, leftX, bottomY, rightX, topY); + TextChunk chunk = new TextChunk(bbox, text, 10, rightX - leftX); + return new TextLine(chunk); + } + + /** + * Helper method to extract text from a TextLine. + */ + private String getText(IObject obj) { + if (obj instanceof TextLine) { + TextLine textLine = (TextLine) obj; + if (!textLine.getTextChunks().isEmpty()) { + return textLine.getTextChunks().get(0).getValue(); + } + } + return ""; + } + + // ========== INFINITE RECURSION PREVENTION TESTS (Issue #179) ========== + + /** + * Test that demonstrates the infinite recursion bug condition. + *

    + * The bug occurs when: + * 1. A gap is found between object edges (leftX/rightX or topY/bottomY) + * 2. But all objects' centers fall on the same side of the cut position + * 3. This causes all objects to be placed in one group + * 4. The same gap is found again, leading to infinite recursion + *

    + * Example: Two objects where one is very wide and one is narrow + * - Wide object: leftX=0, rightX=200 (centerX=100) + * - Narrow object: leftX=202, rightX=204 (centerX=203) + * - Gap between 200 and 202 → cutPosition = 201 + * - Wide centerX=100 < 201 → left group + * - Narrow centerX=203 >= 201 → right group [OK, this works] + *

    + * But if: + * - Wide object: leftX=0, rightX=200 (centerX=100) + * - Another wide object: leftX=202, rightX=402 (centerX=302) + * This should also work... + *

    + * The real problematic case is when objects overlap in one dimension + * but have a gap in another, and the gap-based cut doesn't actually + * separate the objects by their centers. + */ + @Test + void sort_noStackOverflowWithComplexLayout_issue179() { + // This test ensures that the algorithm completes within a reasonable time + // even with potentially problematic layouts + List objects = new ArrayList<>(); + + // Create a layout where vertical gap exists but horizontal cut might not separate well + // Simulating complex multi-column layout with overlapping regions + for (int i = 0; i < 20; i++) { + // Left column items + objects.add(createTextLine(50, 700 - i * 30, 250, 690 - i * 30, "L" + i)); + // Right column items + objects.add(createTextLine(260, 700 - i * 30, 450, 690 - i * 30, "R" + i)); + } + + // Should complete without StackOverflowError + assertTimeout(Duration.ofSeconds(5), () -> { + List result = XYCutPlusPlusSorter.sort(objects); + assertEquals(40, result.size()); + }); + } + + /** + * Test case that specifically triggers the edge-vs-center mismatch bug. + *

    + * The gap detection uses edges (leftX, rightX) but split uses centers. + * When a very wide object has a small gap to a narrow object, + * the center of the wide object might be far from the gap. + */ + @Test + void sort_wideAndNarrowObjects_noInfiniteRecursion() { + List objects = new ArrayList<>(); + + // Wide object: leftX=0, rightX=100, centerX=50 + // Very narrow object at edge: leftX=101, rightX=102, centerX=101.5 + // Gap = 1pt at position 100.5 + // Both centers should be separated correctly + + objects.add(createTextLine(0, 100, 100, 90, "Wide")); + objects.add(createTextLine(101, 100, 102, 90, "Narrow")); + + assertTimeout(Duration.ofSeconds(2), () -> { + List result = XYCutPlusPlusSorter.sort(objects); + assertEquals(2, result.size()); + }); + } + + /** + * Test with objects that have edges creating a gap but centers on same side. + * This is the exact condition that can cause infinite recursion. + *

    + * Object A: leftX=0, rightX=300, centerX=150 + * Object B: leftX=301, rightX=310, centerX=305.5 + * Gap at 300-301, cutPosition=300.5 + * A.centerX=150 < 300.5 → left + * B.centerX=305.5 >= 300.5 → right + * This case works fine. + *

    + * But with slightly different coords: + * Object A: leftX=0, rightX=150, centerX=75 + * Object B: leftX=151, rightX=155, centerX=153 + * Object C: leftX=156, rightX=160, centerX=158 + * (B and C are narrow, close together) + * Gap1: 150-151, cutPosition1=150.5 + * All centers < 150.5? No, B and C have centers > 150.5 + *

    + * The issue occurs in Y-axis with overlapping objects... + */ + @Test + void sort_manySmallGaps_noInfiniteRecursion() { + List objects = new ArrayList<>(); + + // Create many small objects with tiny gaps between them + // This stress tests the gap detection and splitting logic + for (int i = 0; i < 10; i++) { + double x = i * 12; // 12pt apart, objects are 10pt wide + objects.add(createTextLine(x, 100, x + 10, 90, "O" + i)); + } + + assertTimeout(Duration.ofSeconds(2), () -> { + List result = XYCutPlusPlusSorter.sort(objects); + assertEquals(10, result.size()); + }); + } + + /** + * Test case where horizontal cut finds a gap but all objects have + * centers above the cut position (PDF Y coordinates: higher = top). + */ + @Test + void sort_horizontalGapWithCentersOnOneSide_noInfiniteRecursion() { + List objects = new ArrayList<>(); + + // Tall object: bottomY=0, topY=200, centerY=100 + // Short object below: bottomY=-10, topY=-5, centerY=-7.5 + // Gap between -5 and 0, cutPosition=-2.5 + // Tall centerY=100 > -2.5 → above group + // Short centerY=-7.5 < -2.5 → below group + // Wait, in PDF coordinates, this is reversed... + // Let me reconsider... + + // PDF: topY > bottomY, and larger Y is "above" on page + // Object A: bottomY=50, topY=150, centerY=100 (tall) + // Object B: bottomY=0, topY=10, centerY=5 (short, at bottom) + // Vertical gap: 10 to 50, gap=40 + // cutPosition = (10+50)/2 = 30 + // A.centerY=100 > 30 → above + // B.centerY=5 < 30 → below (actually, in horizontal cut, centerY > cutY means above) + // Wait, I need to check the actual logic... + + // In findBestHorizontalCutWithProjection: + // prevBottom tracks the lowest point seen so far (scanning top to bottom) + // gap = prevBottom - top (when there's a gap) + + // Let's create objects that might trigger the issue + objects.add(createTextLine(50, 200, 150, 100, "TallA")); // bottomY=100, topY=200 + objects.add(createTextLine(50, 90, 150, 80, "ShortB")); // bottomY=80, topY=90 + objects.add(createTextLine(200, 200, 300, 100, "TallC")); // bottomY=100, topY=200 + + assertTimeout(Duration.ofSeconds(2), () -> { + List result = XYCutPlusPlusSorter.sort(objects); + assertEquals(3, result.size()); + }); + } + + /** + * Regression test for issue #179: StackOverflowError in XYCutPlusPlusSorter. + *

    + * This test creates a layout that was reported to cause infinite recursion + * in v1.10.0. The exact reproduction requires objects where the split + * operation doesn't make progress (all objects end up in one group). + */ + @Test + void sort_issue179_regressionTest() { + List objects = new ArrayList<>(); + + // Simulate a complex document layout with many elements + // that might trigger the edge case + for (int row = 0; row < 5; row++) { + for (int col = 0; col < 3; col++) { + double x = 50 + col * 180; + double y = 700 - row * 100; + // Varying widths to create complex gap patterns + double width = 50 + (col * 30); + objects.add(createTextLine(x, y, x + width, y - 20, "R" + row + "C" + col)); + } + } + + // Add some cross-layout elements + objects.add(createTextLine(50, 750, 500, 730, "Header")); + objects.add(createTextLine(50, 50, 500, 30, "Footer")); + + assertTimeout(Duration.ofSeconds(5), () -> { + List result = XYCutPlusPlusSorter.sort(objects); + assertEquals(17, result.size()); // 15 grid + 2 header/footer + }); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/regression/ToUnicodeRegressionTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/regression/ToUnicodeRegressionTest.java new file mode 100644 index 0000000..0656cba --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/regression/ToUnicodeRegressionTest.java @@ -0,0 +1,80 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.regression; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.verapdf.pd.font.cmap.ToUnicodeInterval; + +/** + * Regression tests for veraPDF ToUnicodeInterval byte overflow bug (Issue #166). + * + *

    This bug caused incorrect Korean text extraction for CID fonts with bfrange + * entries that cross byte boundaries (e.g., 0xFF -> 0x00 carry). + * + *

    Fixed in veraPDF 1.31.x. These tests ensure the fix doesn't regress. + * + *

    Note: Tests directly use veraPDF internal API ({@code ToUnicodeInterval}). + * If this class is moved in a future veraPDF release, update the import accordingly. + * + * @see Issue #166 + */ +class ToUnicodeRegressionTest { + + /** + * Verifies that bfrange carry works correctly for Korean CID fonts. + * + *

    bfrange: {@code <1ce6> <1ce7> } + *

      + *
    • CID 0x1CE6 -> U+B2FF (닿)
    • + *
    • CID 0x1CE7 -> U+B300 (대) — requires carry from 0xFF to 0x00 in low byte
    • + *
    + * + *

    Before fix: returned U+B200 (눀) due to byte overflow without carry. + * This also caused spurious spaces in page numbers (e.g. "31" → "3 1") + * because the corrupted glyph widths affected text chunk bounding boxes. + */ + @Test + public void testIssue166ToUnicodeIntervalByteCarry() { + byte[] startingValue = new byte[] { (byte) 0xB2, (byte) 0xFF }; + ToUnicodeInterval interval = new ToUnicodeInterval(0x1CE6, 0x1CE7, startingValue); + + Assertions.assertEquals("\uB2FF", interval.toUnicode(0x1CE6), + "First mapping should be U+B2FF"); + Assertions.assertEquals("\uB300", interval.toUnicode(0x1CE7), + "Second mapping should be U+B300 (대), not U+B200 (눀)"); + } + + /** + * Verifies byte carry at the U+00FF -> U+0100 boundary. + * + * bfrange: {@code <0001> <0002> <00FF>} + * - CID 0x0001 -> U+00FF + * - CID 0x0002 -> U+0100 — requires carry + * + * Before fix: returned U+0000 (NULL) due to byte overflow. + */ + @Test + public void testIssue166ToUnicodeIntervalByteCarryAtLowBoundary() { + byte[] startingValue = new byte[] { (byte) 0x00, (byte) 0xFF }; + ToUnicodeInterval interval = new ToUnicodeInterval(0x0001, 0x0002, startingValue); + + Assertions.assertEquals("\u00FF", interval.toUnicode(0x0001), + "First mapping should be U+00FF"); + Assertions.assertEquals("\u0100", interval.toUnicode(0x0002), + "Second mapping should be U+0100, not U+0000"); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/utils/Base64ImageUtilsTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/utils/Base64ImageUtilsTest.java new file mode 100644 index 0000000..c333714 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/utils/Base64ImageUtilsTest.java @@ -0,0 +1,128 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.utils; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Base64; + +import static org.junit.jupiter.api.Assertions.*; + +class Base64ImageUtilsTest { + + @TempDir + Path tempDir; + + @Test + void testToDataUri_withPngFormat() throws IOException { + // Given + byte[] testContent = "PNG image content".getBytes(); + File testFile = tempDir.resolve("test.png").toFile(); + Files.write(testFile.toPath(), testContent); + + // When + String dataUri = Base64ImageUtils.toDataUri(testFile, "png"); + + // Then + assertNotNull(dataUri); + assertTrue(dataUri.startsWith("data:image/png;base64,")); + String expectedBase64 = Base64.getEncoder().encodeToString(testContent); + assertEquals("data:image/png;base64," + expectedBase64, dataUri); + } + + @Test + void testToDataUri_withJpegFormat() throws IOException { + // Given + byte[] testContent = "JPEG image content".getBytes(); + File testFile = tempDir.resolve("test.jpg").toFile(); + Files.write(testFile.toPath(), testContent); + + // When + String dataUri = Base64ImageUtils.toDataUri(testFile, "jpeg"); + + // Then + assertNotNull(dataUri); + assertTrue(dataUri.startsWith("data:image/jpeg;base64,")); + } + + @Test + void testToDataUri_withNonExistentFile() { + // Given + File nonExistentFile = new File("/non/existent/file.png"); + + // When + String dataUri = Base64ImageUtils.toDataUri(nonExistentFile, "png"); + + // Then + assertNull(dataUri); + } + + @ParameterizedTest + @CsvSource({ + "png, image/png", + "PNG, image/png", + "jpeg, image/jpeg", + "JPEG, image/jpeg", + "jpg, image/jpeg", + "JPG, image/jpeg" + }) + void testGetMimeType_withValidFormats(String format, String expectedMimeType) { + assertEquals(expectedMimeType, Base64ImageUtils.getMimeType(format)); + } + + @Test + void testGetMimeType_withNullFormat() { + assertEquals("image/png", Base64ImageUtils.getMimeType(null)); + } + + @Test + void testGetMimeType_withUnknownFormat() { + // Unknown formats default to PNG + assertEquals("image/png", Base64ImageUtils.getMimeType("bmp")); + assertEquals("image/png", Base64ImageUtils.getMimeType("gif")); + assertEquals("image/png", Base64ImageUtils.getMimeType("webp")); + assertEquals("image/png", Base64ImageUtils.getMimeType("unknown")); + } + + @Test + void testMaxEmbeddedImageSizeConstant() { + // Verify the constant is 10MB + assertEquals(10L * 1024 * 1024, Base64ImageUtils.MAX_EMBEDDED_IMAGE_SIZE); + } + + @Test + void testToDataUriWithImageAtSizeLimit() throws IOException { + // Given: Create a file exactly at the size limit + // Note: We use a smaller size for test performance (1KB instead of 10MB) + byte[] content = new byte[1024]; + File testFile = tempDir.resolve("at_limit.png").toFile(); + Files.write(testFile.toPath(), content); + + // When + String dataUri = Base64ImageUtils.toDataUri(testFile, "png"); + + // Then: Should succeed for files under the limit + assertNotNull(dataUri); + assertTrue(dataUri.startsWith("data:image/png;base64,")); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/utils/ContentSanitizerTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/utils/ContentSanitizerTest.java new file mode 100644 index 0000000..556baf8 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/utils/ContentSanitizerTest.java @@ -0,0 +1,114 @@ +package org.opendataloader.pdf.utils; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.opendataloader.pdf.api.FilterConfig; +import org.verapdf.wcag.algorithms.entities.content.TextChunk; +import org.verapdf.wcag.algorithms.entities.content.TextLine; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.semanticalgorithms.utils.StreamInfo; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class ContentSanitizerTest { + private ContentSanitizer sanitizer; + + @BeforeEach + void setUp() { + FilterConfig filterConfig = new FilterConfig(); + sanitizer = new ContentSanitizer(filterConfig.getFilterRules()); + } + + TextChunk createTextChunk(String value, double left, double bottom, double right, double top) { + TextChunk chunk = new TextChunk(new BoundingBox(left, bottom, right, top), value,10, 10); + chunk.getStreamInfos().add(new StreamInfo(0, null, 0, value.length())); + chunk.adjustSymbolEndsToBoundingBox(null); + return chunk; + } + + private void assertChunksContainValues(List chunks, String... expectedValues) { + assertEquals(expectedValues.length, chunks.size(), + "Wrong number of chunks"); + + for (int i = 0; i < expectedValues.length; i++) { + assertEquals(expectedValues[i], chunks.get(i).getValue(), + "Chunk " + i + " contains wrong value"); + } + } + + @Test + void testMultipleReplacementsInSingleChunk() { + TextChunk chunk = createTextChunk( + "Email: test@gmail.com, IP: 192.168.1.1", 0f, 40f, 100f, 20f); + List originalChunks = Collections.singletonList(chunk); + + List replacements = sanitizer.findAllReplacements(chunk.getValue()); + List result = sanitizer.applyReplacementsToChunks( + originalChunks, replacements); + + assertChunksContainValues(result, "Email: ", "email@example.com", ", IP: ", "0.0.0.0"); + } + + @Test + void testReplaceCoveringMultipleFullChunks() { + List originalChunks = new ArrayList<>(); + originalChunks.add(createTextChunk("User: ", 0f, 60f, 10f, 20f)); + originalChunks.add(createTextChunk("john", 60f, 60f, 100f, 20f)); + originalChunks.add(createTextChunk(".doe@", 100f, 60f, 140f, 20f)); + originalChunks.add(createTextChunk("example.com", 140f, 60f, 220f, 20f)); + TextLine line = new TextLine(); + for (TextChunk chunk : originalChunks) { + line.add(chunk); + } + + List replacements = sanitizer.findAllReplacements(line.getValue()); + + List result = sanitizer.applyReplacementsToChunks( + originalChunks, replacements); + + assertChunksContainValues(result, "User: ", "email@example.com"); + } + + @Test + void testReplaceCoveringPartsOfChunks() { + List originalChunks = new ArrayList<>(); + originalChunks.add(createTextChunk("User: john", 0f, 60f, 100, 20f)); + originalChunks.add(createTextChunk(".doe@", 100f, 60f, 140f, 20f)); + originalChunks.add(createTextChunk("example.com. Hi!", 140f, 60f, 250f, 20f)); + TextLine line = new TextLine(); + for (TextChunk chunk : originalChunks) { + line.add(chunk); + } + + List replacements = sanitizer.findAllReplacements(line.getValue()); + + List result = sanitizer.applyReplacementsToChunks( + originalChunks, replacements); + + assertChunksContainValues(result, "User: ", "email@example.com", ". Hi!"); + } + + @Test + void testReplaceCoveringOneFullChunkInArray() { + List originalChunks = new ArrayList<>(); + originalChunks.add(createTextChunk("User: ", 0f, 60f, 10f, 20f)); + originalChunks.add(createTextChunk("john.doe@example.com", 20f, 60f, 140f, 20f)); + originalChunks.add(createTextChunk(". Hi!", 150f, 60f, 180f, 20f)); + originalChunks.add(createTextChunk(" Hello!", 180f, 60f, 210f, 20f)); + TextLine line = new TextLine(); + for (TextChunk chunk : originalChunks) { + line.add(chunk); + } + + List replacements = sanitizer.findAllReplacements(line.getValue()); + + List result = sanitizer.applyReplacementsToChunks( + originalChunks, replacements); + + assertChunksContainValues(result, "User: ", "email@example.com", ". Hi!", " Hello!"); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/utils/ImageFormatSupportTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/utils/ImageFormatSupportTest.java new file mode 100644 index 0000000..f06f1ac --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/utils/ImageFormatSupportTest.java @@ -0,0 +1,128 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.utils; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; + +import javax.imageio.ImageIO; +import java.awt.Color; +import java.awt.Graphics2D; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; +import java.nio.file.Path; +import java.util.Arrays; + +import static org.junit.jupiter.api.Assertions.*; + +/** + * Tests for image format support in Java ImageIO. + * This test verifies which image formats can actually be written by the JVM. + */ +class ImageFormatSupportTest { + + @TempDir + Path tempDir; + + /** + * Creates a simple test image for format testing. + */ + private BufferedImage createTestImage() { + BufferedImage image = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB); + Graphics2D g2d = image.createGraphics(); + g2d.setColor(Color.RED); + g2d.fillRect(0, 0, 50, 50); + g2d.setColor(Color.BLUE); + g2d.fillRect(50, 0, 50, 50); + g2d.setColor(Color.GREEN); + g2d.fillRect(0, 50, 50, 50); + g2d.setColor(Color.YELLOW); + g2d.fillRect(50, 50, 50, 50); + g2d.dispose(); + return image; + } + + @Test + void testPngFormatIsSupported() throws IOException { + BufferedImage testImage = createTestImage(); + File outputFile = tempDir.resolve("test.png").toFile(); + + boolean result = ImageIO.write(testImage, "png", outputFile); + + assertTrue(result, "PNG format should be supported by ImageIO"); + assertTrue(outputFile.exists(), "PNG file should be created"); + assertTrue(outputFile.length() > 0, "PNG file should have content"); + } + + @Test + void testJpegFormatIsSupported() throws IOException { + BufferedImage testImage = createTestImage(); + File outputFile = tempDir.resolve("test.jpeg").toFile(); + + boolean result = ImageIO.write(testImage, "jpeg", outputFile); + + assertTrue(result, "JPEG format should be supported by ImageIO"); + assertTrue(outputFile.exists(), "JPEG file should be created"); + assertTrue(outputFile.length() > 0, "JPEG file should have content"); + } + + @Test + void testWebpFormatIsNotSupported() throws IOException { + BufferedImage testImage = createTestImage(); + File outputFile = tempDir.resolve("test.webp").toFile(); + + // WebP is NOT supported by default Java ImageIO + boolean result = ImageIO.write(testImage, "webp", outputFile); + + assertFalse(result, "WebP format should NOT be supported by standard ImageIO"); + } + + @Test + void testListAvailableWriterFormats() { + String[] writerFormats = ImageIO.getWriterFormatNames(); + System.out.println("Available ImageIO writer formats: " + Arrays.toString(writerFormats)); + + // PNG and JPEG should always be available + assertTrue(Arrays.asList(writerFormats).contains("png"), "PNG should be available"); + assertTrue(Arrays.asList(writerFormats).contains("JPEG") || Arrays.asList(writerFormats).contains("jpeg"), + "JPEG should be available"); + } + + @ParameterizedTest + @ValueSource(strings = {"png", "jpeg", "jpg", "gif", "bmp"}) + void testStandardFormatsAreSupported(String format) throws IOException { + BufferedImage testImage = createTestImage(); + File outputFile = tempDir.resolve("test." + format).toFile(); + + boolean result = ImageIO.write(testImage, format, outputFile); + + assertTrue(result, format.toUpperCase() + " format should be supported by ImageIO"); + assertTrue(outputFile.exists(), format.toUpperCase() + " file should be created"); + } + + @Test + void testUnsupportedFormatReturnsFalse() throws IOException { + BufferedImage testImage = createTestImage(); + File outputFile = tempDir.resolve("test.xyz").toFile(); + + boolean result = ImageIO.write(testImage, "xyz_unsupported_format", outputFile); + + assertFalse(result, "Unsupported format should return false"); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/utils/ImagesUtilsTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/utils/ImagesUtilsTest.java new file mode 100644 index 0000000..6e76ca1 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/utils/ImagesUtilsTest.java @@ -0,0 +1,380 @@ +/* + * Copyright 2025-2026 Hancom Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.opendataloader.pdf.utils; + +import org.junit.jupiter.api.Test; +import org.opendataloader.pdf.containers.StaticLayoutContainers; +import org.verapdf.wcag.algorithms.entities.content.ImageChunk; +import org.verapdf.wcag.algorithms.entities.geometry.BoundingBox; +import org.verapdf.wcag.algorithms.semanticalgorithms.containers.StaticContainers; + +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; +import java.lang.ref.WeakReference; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.concurrent.atomic.AtomicInteger; + +import static org.junit.jupiter.api.Assertions.*; + +class ImagesUtilsTest { + + @Test + void testCreateImagesDirectory() throws IOException { + StaticLayoutContainers.clearContainers(); + // Given + Path tempDir = Files.createTempDirectory("test"); + File testPdf = new File("../../samples/pdf/lorem.pdf"); + String outputFolder = tempDir.toString(); + + // When + try { + Path path = Paths.get(testPdf.getPath()); + StaticLayoutContainers.setImagesDirectory(outputFolder + File.separator + path.getFileName().toString().substring(0, path.getFileName().toString().length() - 4) + "_images"); + ImagesUtils imagesUtils = new ImagesUtils(); + imagesUtils.createImagesDirectory(StaticLayoutContainers.getImagesDirectory()); + // Then - verify images directory was created in createImagesDirectory() + String expectedImagesDirName = testPdf.getName().substring(0, testPdf.getName().length() - 4) + "_images"; + Path expectedImagesPath = Path.of(outputFolder, expectedImagesDirName); + + assertTrue(Files.exists(expectedImagesPath), "Images directory should be created in constructor"); + assertTrue(Files.isDirectory(expectedImagesPath), "Images path should be a directory"); + } finally { + // Cleanup + Files.walk(tempDir) + .sorted((a, b) -> b.compareTo(a)) + .forEach(p -> { + try { + Files.deleteIfExists(p); + } catch (IOException e) { + // ignore + } + }); + } + } + + @Test + void testWriteImageInitializesImagesUtils() throws IOException { + StaticLayoutContainers.clearContainers(); + // Given + Path tempDir = Files.createTempDirectory("htmlgen-test"); + File testPdf = new File("../../samples/pdf/lorem.pdf"); + String outputFolder = tempDir.toString(); + // When + try { + // Then - if ContrastRatioConsumer wasn't initialized, + // it would be null and cause NPE when used + Path path = Paths.get(testPdf.getAbsolutePath()); + ImagesUtils imagesUtils = new ImagesUtils(); + // Issue #458 hotfix: ImagesUtils no longer keeps a local ContrastRatioConsumer + // field/getter. Verify the consumer is created in StaticLayoutContainers' + // ThreadLocal on first writeImage call (same observable semantic as before). + StaticLayoutContainers.setImagesDirectory(outputFolder + File.separator + path.getFileName().toString().substring(0, path.getFileName().toString().length() - 4) + "_images"); + ImageChunk imageChunk = new ImageChunk(new BoundingBox(0)); + // Initializing contrastRatioConsumer inside writeImage() via StaticLayoutContainers. + StaticContainers.setPassword(""); + StaticContainers.setFileName(testPdf.getAbsolutePath()); + imagesUtils.writeImage(imageChunk); + // Verify file was created + Path pngPath = Path.of(StaticLayoutContainers.getImagesDirectory(), "imageFile1.png"); + // PNG file is created + assertTrue(Files.exists(pngPath), "PNG file created successfully"); + } finally { + // Cleanup + StaticContainers.closeImagesUtils(); + Files.walk(tempDir) + .sorted((a, b) -> b.compareTo(a)) + .forEach(p -> { + try { + Files.deleteIfExists(p); + } catch (IOException e) { + // ignore + } + }); + } + } + + /** + * Regression guard for issue #458 (OOM). + * + * After writing a BufferedImage to disk (or to the in-memory embed cache), + * ImagesUtils MUST invoke {@link BufferedImage#flush()} so the underlying + * raster data and any cached resources become eligible for GC. + * Otherwise large images accumulate on the heap and trigger + * {@code java.lang.OutOfMemoryError: Java heap space}. + * + * Verifies the contract via a package-private seam + * {@code writeBufferedImageToFile(BufferedImage, String, String)}. + */ + @Test + void writeBufferedImageToFile_callsFlushOnSuccess() throws IOException { + StaticLayoutContainers.clearContainers(); + Path tempDir = Files.createTempDirectory("flush-test"); + try { + AtomicInteger flushCalls = new AtomicInteger(0); + BufferedImage tracking = new BufferedImage(8, 8, BufferedImage.TYPE_INT_RGB) { + @Override + public void flush() { + flushCalls.incrementAndGet(); + super.flush(); + } + }; + String fileName = tempDir.resolve("flush_image.png").toString(); + + ImagesUtils imagesUtils = new ImagesUtils(); + imagesUtils.writeBufferedImageToFile(tracking, fileName, "png"); + + assertEquals(1, flushCalls.get(), + "BufferedImage.flush() must be invoked exactly once after writing to release raster memory (issue #458)"); + assertTrue(Files.exists(Path.of(fileName)), "PNG file should be written"); + } finally { + Files.walk(tempDir) + .sorted((a, b) -> b.compareTo(a)) + .forEach(p -> { + try { + Files.deleteIfExists(p); + } catch (IOException e) { + // ignore + } + }); + } + } + + /** + * Regression guard for issue #458 (OOM). + * + * If the underlying {@link javax.imageio.ImageIO#write} call throws + * an IOException, {@link BufferedImage#flush()} MUST still be invoked + * (try-finally semantics) — otherwise an error path leaks raster memory. + */ + @Test + void writeBufferedImageToFile_callsFlushEvenOnIoError() throws IOException { + StaticLayoutContainers.clearContainers(); + Path tempDir = Files.createTempDirectory("flush-test-err"); + try { + AtomicInteger flushCalls = new AtomicInteger(0); + BufferedImage tracking = new BufferedImage(8, 8, BufferedImage.TYPE_INT_RGB) { + @Override + public void flush() { + flushCalls.incrementAndGet(); + super.flush(); + } + }; + // Unsupported format triggers ImageIO.write to return false / NPE / IOException paths; + // additionally, target file path points to a non-writable location via an unsupported format + // and a bogus directory to force a write failure. + String fileName = tempDir.resolve("does/not/exist/img.png").toString(); + + ImagesUtils imagesUtils = new ImagesUtils(); + // Should not throw, but MUST still flush. + imagesUtils.writeBufferedImageToFile(tracking, fileName, "png"); + + assertEquals(1, flushCalls.get(), + "BufferedImage.flush() must be invoked even when ImageIO.write fails (issue #458)"); + } finally { + Files.walk(tempDir) + .sorted((a, b) -> b.compareTo(a)) + .forEach(p -> { + try { + Files.deleteIfExists(p); + } catch (IOException e) { + // ignore + } + }); + } + } + + /** + * Regression guard for issue #458 (OOM) — embedded mode. + * + * The {@link ImagesUtils#writeBufferedImageToFile} contract must hold + * symmetrically for the {@code isEmbedImages() == true} branch: + * the image is encoded into an in-memory buffer (no file is written) + * and {@link BufferedImage#flush()} must still be invoked exactly once. + * Without this, embedded-mode runs accumulate raster memory just like + * the disk-mode branch did before the hotfix. + */ + @Test + void writeBufferedImageToFile_callsFlushInEmbeddedMode() throws IOException { + StaticLayoutContainers.clearContainers(); + try { + StaticLayoutContainers.setEmbedImages(true); + AtomicInteger flushCalls = new AtomicInteger(0); + BufferedImage tracking = new BufferedImage(8, 8, BufferedImage.TYPE_INT_RGB) { + @Override + public void flush() { + flushCalls.incrementAndGet(); + super.flush(); + } + }; + String fileName = "embedded/page1_image1.png"; + + ImagesUtils imagesUtils = new ImagesUtils(); + imagesUtils.writeBufferedImageToFile(tracking, fileName, "png"); + + assertEquals(1, flushCalls.get(), + "BufferedImage.flush() must also be invoked in embedded mode (issue #458)"); + assertTrue(StaticLayoutContainers.hasEmbeddedImageBytes(fileName), + "Embedded mode must populate the in-memory bytes cache instead of writing to disk"); + assertNotNull(StaticLayoutContainers.getEmbeddedImageBytes(fileName), + "Embedded bytes must be retrievable from the cache"); + } finally { + StaticLayoutContainers.clearContainers(); + } + } + + /** + * Regression guard for issue #458 (OOM) — directory-init sentinel. + * + * After M2, ImagesUtils uses an explicit {@code imagesDirectoryInitialized} + * boolean instead of piggy-backing on the (now removed) + * {@code contrastRatioConsumer} field to decide whether to call + * {@link ImagesUtils#createImagesDirectory(String)}. The sentinel must + * fire exactly once regardless of which entry point — {@code writeImage} + * or {@code writePicture} — comes first, so that downstream image writes + * never race on missing directories and {@code mkdirs} is not called + * repeatedly across pages. + * + * We verify by subclassing ImagesUtils to count {@code createImagesDirectory} + * invocations and calling the package-private {@code ensureImagesDirectoryInitialized} + * twice in succession. + */ + @Test + void ensureImagesDirectoryInitialized_createsDirectoryExactlyOnce() throws Exception { + StaticLayoutContainers.clearContainers(); + Path tempDir = Files.createTempDirectory("sentinel-test"); + try { + String imagesDir = tempDir.resolve("doc_images").toString(); + StaticLayoutContainers.setImagesDirectory(imagesDir); + + AtomicInteger createCalls = new AtomicInteger(0); + ImagesUtils imagesUtils = new ImagesUtils() { + @Override + public void createImagesDirectory(String path) { + createCalls.incrementAndGet(); + super.createImagesDirectory(path); + } + }; + + // Invoke the sentinel twice via reflection on the package-private helper, + // simulating writeImage followed by writePicture (or vice versa). + java.lang.reflect.Method ensure = + ImagesUtils.class.getDeclaredMethod("ensureImagesDirectoryInitialized"); + ensure.setAccessible(true); + ensure.invoke(imagesUtils); + ensure.invoke(imagesUtils); + + assertEquals(1, createCalls.get(), + "createImagesDirectory must be called exactly once per ImagesUtils instance regardless of how many writeImage/writePicture calls follow (issue #458 — M2 sentinel)"); + assertTrue(Files.isDirectory(Path.of(imagesDir)), + "Images directory should have been materialised on disk"); + } finally { + StaticLayoutContainers.clearContainers(); + Files.walk(tempDir) + .sorted((a, b) -> b.compareTo(a)) + .forEach(p -> { + try { + Files.deleteIfExists(p); + } catch (IOException e) { + // ignore + } + }); + } + } + + /** + * Regression guard for issue #458 (OOM). + * + * After {@link ImagesUtils#writeBufferedImageToFile} returns, the + * {@link BufferedImage} MUST not be retained by the ImagesUtils + * instance (no strong reference from a field). We verify this by + * holding only a {@link WeakReference} to the image, dropping the + * strong local reference, hinting the GC, and asserting the + * referent has been collected. + * + * Without M2 (removal of the {@code contrastRatioConsumer} field) / + * without M0 ({@code flush()} in finally), the BufferedImage's + * underlying raster would remain reachable through the cached + * {@code ContrastRatioConsumer} and accumulate across pages. + */ + @Test + // The `image = null` below is a deliberate, load-bearing assignment: it drops the + // only strong reference so the WeakReference can be collected. PMD flags it as an + // UnusedAssignment, but removing it would defeat the GC check, so suppress here. + @SuppressWarnings("PMD.UnusedAssignment") + void writeBufferedImageToFile_doesNotRetainImageReference() throws IOException { + StaticLayoutContainers.clearContainers(); + Path tempDir = Files.createTempDirectory("retain-test"); + try { + // Structural assertion: ImagesUtils MUST NOT have a contrastRatioConsumer field. + // A regression that re-introduces this field would cause the GC test to pass + // spuriously (weak-ref collected) while still accumulating BufferedImages + // in the ContrastRatioConsumer's internal cache across pages. + java.lang.reflect.Field[] fields = ImagesUtils.class.getDeclaredFields(); + for (java.lang.reflect.Field field : fields) { + assertFalse(field.getName().equals("contrastRatioConsumer"), + "ImagesUtils MUST NOT declare a 'contrastRatioConsumer' field (issue #458 — M2 regression guard)"); + assertFalse(field.getType().getSimpleName().equals("ContrastRatioConsumer"), + "ImagesUtils MUST NOT declare a field of type ContrastRatioConsumer (issue #458 — M2 regression guard)"); + } + + String fileName = tempDir.resolve("retained.png").toString(); + ImagesUtils imagesUtils = new ImagesUtils(); + + WeakReference weakRef; + { + BufferedImage image = new BufferedImage(32, 32, BufferedImage.TYPE_INT_RGB); + weakRef = new WeakReference<>(image); + imagesUtils.writeBufferedImageToFile(image, fileName, "png"); + // Drop the only strong reference held by this test frame. + image = null; + } + + // Coax the GC. We can't guarantee immediate collection, but a few + // explicit nudges are sufficient for a freshly allocated 4 KB image. + boolean collected = false; + for (int i = 0; i < 20; i++) { + System.gc(); + try { + Thread.sleep(10); + } catch (InterruptedException ie) { + Thread.currentThread().interrupt(); + break; + } + if (weakRef.get() == null) { + collected = true; + break; + } + } + + assertTrue(collected, + "BufferedImage written via writeBufferedImageToFile must be GC-eligible " + + "after the call returns (issue #458 — no field/static retention)"); + } finally { + Files.walk(tempDir) + .sorted((a, b) -> b.compareTo(a)) + .forEach(p -> { + try { + Files.deleteIfExists(p); + } catch (IOException e) { + // ignore + } + }); + } + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/utils/ModeWeightStatisticsTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/utils/ModeWeightStatisticsTest.java new file mode 100644 index 0000000..cd1e94a --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/utils/ModeWeightStatisticsTest.java @@ -0,0 +1,55 @@ +package org.opendataloader.pdf.utils; + +import org.assertj.core.data.Offset; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +class ModeWeightStatisticsTest { + + @Test + void getModeReturnsMostFrequentScoreWithinRange() { + ModeWeightStatistics statistics = new ModeWeightStatistics(10.0, 32.0, 9.0, 14.0); + statistics.addScore(10.0); + statistics.addScore(12.0); + statistics.addScore(12.0); + statistics.addScore(12.0); + statistics.addScore(14.0); + statistics.sortByFrequency(); + + double mode = statistics.getMode(); + + assertThat(mode).isCloseTo(12.0, Offset.offset(0.001)); + } + + @Test + void getModeReturnsNaNWhenNoScoresWithinRange() { + ModeWeightStatistics statistics = new ModeWeightStatistics(10.0, 32.0, 9.0, 13.0); + statistics.addScore(5.0); + statistics.addScore(7.0); + statistics.sortByFrequency(); + + double mode = statistics.getMode(); + + assertThat(mode).isCloseTo(0.0, Offset.offset(0.001)); + } + + @Test + void getBoostGivesFractionalRankForScoresAboveMode() { + ModeWeightStatistics statistics = new ModeWeightStatistics(10.0, 32.0, 9.0, 13.0); + statistics.addScore(12.0); + statistics.addScore(12.0); + statistics.addScore(12.0); + statistics.addScore(10.0); + statistics.addScore(14.0); + statistics.addScore(16.0); + + double boostForFourteen = statistics.getBoost(14.0); + double boostForSixteen = statistics.getBoost(16.0); + double boostForMode = statistics.getBoost(12.0); + + assertThat(boostForFourteen).isCloseTo(0.5, Offset.offset(0.001)); + assertThat(boostForSixteen).isCloseTo(1.0, Offset.offset(0.001)); + assertThat(boostForMode).isCloseTo(0.0, Offset.offset(0.001)); + } +} diff --git a/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/utils/TextNodeStatisticsTest.java b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/utils/TextNodeStatisticsTest.java new file mode 100644 index 0000000..594597f --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/utils/TextNodeStatisticsTest.java @@ -0,0 +1,82 @@ +package org.opendataloader.pdf.utils; + +import org.assertj.core.data.Offset; +import org.junit.jupiter.api.Test; +import org.verapdf.wcag.algorithms.entities.SemanticTextNode; + +import static org.assertj.core.api.Assertions.assertThat; + +class TextNodeStatisticsTest { + + @Test + void fontSizeRarityBoostUsesRelativeRankOfScoresAboveBodyMode() { + TextNodeStatisticsConfig config = new TextNodeStatisticsConfig(); + TextNodeStatistics statistics = new TextNodeStatistics(config); + + StubSemanticTextNode body = new StubSemanticTextNode(12.0, 400.0); + StubSemanticTextNode bodySecond = new StubSemanticTextNode(12.0, 400.0); + StubSemanticTextNode smallBody = new StubSemanticTextNode(10.0, 395.0); + StubSemanticTextNode mediumHeading = new StubSemanticTextNode(14.0, 410.0); + StubSemanticTextNode largeHeading = new StubSemanticTextNode(16.0, 430.0); + + statistics.addTextNode(body); + statistics.addTextNode(bodySecond); + statistics.addTextNode(smallBody); + statistics.addTextNode(mediumHeading); + statistics.addTextNode(largeHeading); + + double boostForBody = statistics.fontSizeRarityBoost(body); + double boostForMediumHeading = statistics.fontSizeRarityBoost(mediumHeading); + double boostForLargeHeading = statistics.fontSizeRarityBoost(largeHeading); + + assertThat(boostForBody).isCloseTo(0.0, Offset.offset(0.001)); + assertThat(boostForMediumHeading).isCloseTo(config.fontSizeRarityBoost / 2, Offset.offset(0.001)); + assertThat(boostForLargeHeading).isCloseTo(config.fontSizeRarityBoost, Offset.offset(0.001)); + } + + @Test + void fontWeightRarityBoostUsesDominantWeightWindow() { + TextNodeStatisticsConfig config = new TextNodeStatisticsConfig(); + TextNodeStatistics statistics = new TextNodeStatistics(config); + + StubSemanticTextNode body = new StubSemanticTextNode(12.0, 400.0); + StubSemanticTextNode bodySecond = new StubSemanticTextNode(12.0, 400.0); + StubSemanticTextNode bodyWithinTolerance = new StubSemanticTextNode(11.0, 395.0); + StubSemanticTextNode slightlyBolder = new StubSemanticTextNode(14.0, 410.0); + StubSemanticTextNode boldHeading = new StubSemanticTextNode(16.0, 430.0); + + statistics.addTextNode(body); + statistics.addTextNode(bodySecond); + statistics.addTextNode(bodyWithinTolerance); + statistics.addTextNode(slightlyBolder); + statistics.addTextNode(boldHeading); + + double boostForBody = statistics.fontWeightRarityBoost(body); + double boostForSlightlyBolder = statistics.fontWeightRarityBoost(slightlyBolder); + double boostForBoldHeading = statistics.fontWeightRarityBoost(boldHeading); + + assertThat(boostForBody).isCloseTo(0.0, Offset.offset(0.001)); + assertThat(boostForSlightlyBolder).isCloseTo(config.fontWeightRarityBoost / 2, Offset.offset(0.001)); + assertThat(boostForBoldHeading).isCloseTo(config.fontWeightRarityBoost, Offset.offset(0.001)); + } + + private static class StubSemanticTextNode extends SemanticTextNode { + private final double fontSize; + private final double fontWeight; + + StubSemanticTextNode(double fontSize, double fontWeight) { + this.fontSize = fontSize; + this.fontWeight = fontWeight; + } + + @Override + public double getFontSize() { + return fontSize; + } + + @Override + public double getFontWeight() { + return fontWeight; + } + } +} diff --git a/java/opendataloader-pdf-core/src/test/resources/cid-font-no-tounicode.pdf b/java/opendataloader-pdf-core/src/test/resources/cid-font-no-tounicode.pdf new file mode 100644 index 0000000..d7b6659 Binary files /dev/null and b/java/opendataloader-pdf-core/src/test/resources/cid-font-no-tounicode.pdf differ diff --git a/java/opendataloader-pdf-core/src/test/resources/generate-cid-test-pdf.py b/java/opendataloader-pdf-core/src/test/resources/generate-cid-test-pdf.py new file mode 100644 index 0000000..a2595a3 --- /dev/null +++ b/java/opendataloader-pdf-core/src/test/resources/generate-cid-test-pdf.py @@ -0,0 +1,336 @@ +#!/usr/bin/env python3 +""" +Generate a minimal PDF with a Type0 (CID) font that has NO ToUnicode CMap. + +When parsed by veraPDF, this PDF will emit U+FFFD (replacement character) for +text characters because there is no ToUnicode mapping and the encoding is +Identity-H (raw CID values with no inherent Unicode mapping). + +Strategy: + Use reportlab to generate a PDF with an embedded TTF font as a Type0/CID font, + then post-process the raw bytes to: + 1. Change the encoding to /Identity-H (removing any Unicode-based CMap) + 2. Strip any /ToUnicode references + This ensures proper font metrics (widths, bounding boxes) while preventing + Unicode mapping. + +Usage: + python3 generate-cid-test-pdf.py [output.pdf] + +Output defaults to cid-font-no-tounicode.pdf in the same directory. + +Requirements: + pip install reportlab +""" +import os +import re +import struct +import sys + + +def find_ttf_font(): + """Find a TrueType font on the system.""" + candidates = [ + "/System/Library/Fonts/Supplemental/Times New Roman.ttf", + "/System/Library/Fonts/Supplemental/Arial.ttf", + "/Library/Fonts/Arial.ttf", + "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", + "/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf", + ] + for path in candidates: + if os.path.exists(path): + return path + return None + + +def read_ttf_tables(font_path): + """Read TrueType font and extract key tables for embedding.""" + with open(font_path, 'rb') as f: + data = f.read() + return data + + +def build_pdf_with_real_font(output_path, font_path): + """Build a PDF with Type0/CID font using a real TTF font program. + + The font is embedded as CIDFontType2 with Identity-H encoding and + no ToUnicode CMap, so veraPDF cannot map CID values to Unicode. + """ + font_data = read_ttf_tables(font_path) + + # Parse the TTF to get unitsPerEm and some metrics + # Read offset table + sfVersion, numTables = struct.unpack('>IH', font_data[0:6]) + + tables = {} + for i in range(numTables): + offset = 12 + i * 16 + tag = font_data[offset:offset+4].decode('ascii', errors='replace') + checksum, tbl_offset, tbl_length = struct.unpack('>III', font_data[offset+4:offset+16]) + tables[tag] = (tbl_offset, tbl_length) + + # Read head table for unitsPerEm + if 'head' in tables: + ho, hl = tables['head'] + head_data = font_data[ho:ho+hl] + units_per_em = struct.unpack('>H', head_data[18:20])[0] + x_min, y_min, x_max, y_max = struct.unpack('>hhhh', head_data[36:44]) + else: + units_per_em = 1000 + x_min, y_min, x_max, y_max = 0, -200, 1000, 800 + + # Read hhea for ascent/descent + if 'hhea' in tables: + ho, hl = tables['hhea'] + hhea_data = font_data[ho:ho+hl] + ascent = struct.unpack('>h', hhea_data[4:6])[0] + descent = struct.unpack('>h', hhea_data[6:8])[0] + num_hmtx = struct.unpack('>H', hhea_data[34:36])[0] + else: + ascent, descent, num_hmtx = 800, -200, 0 + + # Read hmtx for glyph widths + widths = [] + if 'hmtx' in tables: + ho, hl = tables['hmtx'] + hmtx_data = font_data[ho:ho+hl] + for i in range(min(num_hmtx, 256)): + aw = struct.unpack('>H', hmtx_data[i*4:i*4+2])[0] + widths.append(aw) + + # Scale factor to convert from font units to 1000-unit space + scale = 1000.0 / units_per_em + + # Default width (most common) + default_width = int(widths[0] * scale) if widths else 600 + + # Build width array for CIDs we'll use (32-127, ASCII printable range) + # CID values = glyph IDs in Identity-H encoding + # We'll use glyph IDs for common ASCII characters + # In most fonts, glyph IDs for ASCII chars are in a predictable range + + # Read cmap to find glyph IDs for ASCII characters + glyph_ids = {} + if 'cmap' in tables: + co, cl = tables['cmap'] + cmap_data = font_data[co:co+cl] + num_subtables = struct.unpack('>H', cmap_data[2:4])[0] + + for i in range(num_subtables): + so = 4 + i * 8 + platform_id, encoding_id, subtable_offset = struct.unpack('>HHI', cmap_data[so:so+8]) + + # Prefer Windows Unicode BMP (3,1) or Unicode (0,3) + if (platform_id == 3 and encoding_id == 1) or (platform_id == 0): + st_data = cmap_data[subtable_offset:] + fmt = struct.unpack('>H', st_data[0:2])[0] + + if fmt == 4: + seg_count = struct.unpack('>H', st_data[6:8])[0] // 2 + end_codes = [] + for j in range(seg_count): + end_codes.append(struct.unpack('>H', st_data[14 + j*2:16 + j*2])[0]) + + start_offset = 14 + seg_count * 2 + 2 + start_codes = [] + for j in range(seg_count): + start_codes.append(struct.unpack('>H', st_data[start_offset + j*2:start_offset + 2 + j*2])[0]) + + delta_offset = start_offset + seg_count * 2 + deltas = [] + for j in range(seg_count): + deltas.append(struct.unpack('>h', st_data[delta_offset + j*2:delta_offset + 2 + j*2])[0]) + + range_offset_start = delta_offset + seg_count * 2 + range_offsets = [] + for j in range(seg_count): + range_offsets.append(struct.unpack('>H', st_data[range_offset_start + j*2:range_offset_start + 2 + j*2])[0]) + + for j in range(seg_count): + for code in range(start_codes[j], end_codes[j] + 1): + if 32 <= code <= 126: + if range_offsets[j] == 0: + gid = (code + deltas[j]) & 0xFFFF + else: + idx = range_offset_start + j * 2 + range_offsets[j] + (code - start_codes[j]) * 2 + gid = struct.unpack('>H', st_data[idx:idx+2])[0] + if gid != 0: + gid = (gid + deltas[j]) & 0xFFFF + glyph_ids[code] = gid + break + + # Build the text content using glyph IDs (CID values) + text1 = "The quick brown fox jumps over the lazy dog 0123456789" + text2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz" + + def text_to_hex_cids(text): + hex_str = "" + for ch in text: + code = ord(ch) + gid = glyph_ids.get(code, 0) + hex_str += f"{gid:04X}" + return hex_str + + hex1 = text_to_hex_cids(text1) + hex2 = text_to_hex_cids(text2) + + # Build W array for the glyph IDs we use + used_gids = set() + for ch in text1 + text2: + gid = glyph_ids.get(ord(ch), 0) + used_gids.add(gid) + + w_entries = [] + for gid in sorted(used_gids): + if gid < len(widths): + w = int(widths[gid] * scale) + else: + w = default_width + w_entries.append(f"{gid} [{w}]") + w_array = " ".join(w_entries) + + # Scale font metrics + s_ascent = int(ascent * scale) + s_descent = int(descent * scale) + s_xmin = int(x_min * scale) + s_ymin = int(y_min * scale) + s_xmax = int(x_max * scale) + s_ymax = int(y_max * scale) + + # Build PDF content stream + content_stream = f"""BT +/F1 14 Tf +72 700 Td +<{hex1}> Tj +0 -20 Td +<{hex2}> Tj +0 -20 Td +<{hex1}> Tj +0 -20 Td +<{hex2}> Tj +0 -20 Td +<{hex1}> Tj +ET""".encode() + + # Build PDF objects + catalog_id = 1 + pages_id = 2 + page_id = 3 + contents_id = 4 + type0_font_id = 5 + cid_font_id = 6 + font_descriptor_id = 7 + font_file_id = 8 + + objects = {} + objects[catalog_id] = f"<< /Type /Catalog /Pages {pages_id} 0 R >>".encode() + objects[pages_id] = f"<< /Type /Pages /Kids [{page_id} 0 R] /Count 1 >>".encode() + objects[page_id] = ( + f"<< /Type /Page /Parent {pages_id} 0 R /MediaBox [0 0 612 792] " + f"/Contents {contents_id} 0 R " + f"/Resources << /Font << /F1 {type0_font_id} 0 R >> >> >>" + ).encode() + + # No /ToUnicode reference - this is the key + objects[type0_font_id] = ( + f"<< /Type /Font /Subtype /Type0 /BaseFont /AAAAAA+TestCIDFont " + f"/Encoding /Identity-H " + f"/DescendantFonts [{cid_font_id} 0 R] >>" + ).encode() + + objects[cid_font_id] = ( + f"<< /Type /Font /Subtype /CIDFontType2 /BaseFont /AAAAAA+TestCIDFont " + f"/CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> " + f"/FontDescriptor {font_descriptor_id} 0 R " + f"/DW {default_width} " + f"/W [{w_array}] >>" + ).encode() + + objects[font_descriptor_id] = ( + f"<< /Type /FontDescriptor /FontName /AAAAAA+TestCIDFont /Flags 4 " + f"/FontBBox [{s_xmin} {s_ymin} {s_xmax} {s_ymax}] " + f"/ItalicAngle 0 /Ascent {s_ascent} " + f"/Descent {s_descent} /CapHeight 700 /StemV 80 " + f"/FontFile2 {font_file_id} 0 R >>" + ).encode() + + # Build PDF bytes + pdf = b"%PDF-1.4\n%\xe2\xe3\xcf\xd3\n" + offsets = {} + + # Write non-stream objects first + for obj_id in sorted(objects.keys()): + offsets[obj_id] = len(pdf) + data = objects[obj_id] + pdf += f"{obj_id} 0 obj\n".encode() + pdf += data + pdf += b"\nendobj\n" + + # Write content stream + offsets[contents_id] = len(pdf) + pdf += f"{contents_id} 0 obj\n".encode() + pdf += f"<< /Length {len(content_stream)} >>\n".encode() + pdf += b"stream\n" + pdf += content_stream + pdf += b"\nendstream\n" + pdf += b"endobj\n" + + # Write font file stream + offsets[font_file_id] = len(pdf) + pdf += f"{font_file_id} 0 obj\n".encode() + pdf += f"<< /Length {len(font_data)} /Length1 {len(font_data)} >>\n".encode() + pdf += b"stream\n" + pdf += font_data + pdf += b"\nendstream\n" + pdf += b"endobj\n" + + # xref table + xref_offset = len(pdf) + max_obj = max(offsets.keys()) + pdf += b"xref\n" + pdf += f"0 {max_obj + 1}\n".encode() + pdf += b"0000000000 65535 f \n" + for i in range(1, max_obj + 1): + if i in offsets: + pdf += f"{offsets[i]:010d} 00000 n \n".encode() + else: + pdf += b"0000000000 00000 f \n" + + # trailer + pdf += b"trailer\n" + pdf += f"<< /Size {max_obj + 1} /Root {catalog_id} 0 R >>\n".encode() + pdf += b"startxref\n" + pdf += f"{xref_offset}\n".encode() + pdf += b"%%EOF\n" + + with open(output_path, 'wb') as f: + f.write(pdf) + + return len(pdf), len(used_gids) + + +def main(): + script_dir = os.path.dirname(os.path.abspath(__file__)) + default_output = os.path.join(script_dir, "cid-font-no-tounicode.pdf") + output_path = sys.argv[1] if len(sys.argv) > 1 else default_output + + font_path = find_ttf_font() + if font_path is None: + print("ERROR: No suitable TrueType font found on system", file=sys.stderr) + sys.exit(1) + + print(f"Using font: {font_path}") + print("Generating PDF with Type0/CID font (no ToUnicode)...") + size, num_glyphs = build_pdf_with_real_font(output_path, font_path) + print(f"Generated: {output_path} ({size} bytes)") + print() + print("Key properties:") + print(" - Type0 font with Identity-H encoding") + print(" - CIDFontType2 descendant with real TrueType font program") + print(" - No /ToUnicode CMap") + print(f" - {num_glyphs} unique glyphs used") + print(" - 5 lines of text, all characters should map to U+FFFD in veraPDF") + + +if __name__ == "__main__": + main() diff --git a/java/pom.xml b/java/pom.xml new file mode 100644 index 0000000..c9eaed7 --- /dev/null +++ b/java/pom.xml @@ -0,0 +1,275 @@ + + + + 4.0.0 + + org.opendataloader + opendataloader-pdf-parent + 0.0.0 + pom + + OpenDataLoader PDF + OpenDataLoader PDF + https://github.com/opendataloader-project/opendataloader-pdf + + + + Apache License, Version 2.0 + https://www.apache.org/licenses/LICENSE-2.0 + + + + + + opendataloader-project + open.dataloader@hancom.com + opendataloader-project + https://github.com/opendataloader-project + + + + + scm:git:git://github.com/opendataloader-project/opendataloader-pdf.git + + scm:git:ssh://github.com:opendataloader-project/opendataloader-pdf.git + + https://github.com/opendataloader-project/opendataloader-pdf/tree/main + + + + 11 + 11 + UTF-8 + 1.31.99 + 1.31.33 + 2.22.0 + 6.1.0 + 3.27.7 + 5.4.0 + 1.11.0 + 3.15.0 + 1.7.3 + 0.8.15 + 3.4.0 + 3.12.0 + 3.6.2 + 3.2.8 + 3.5.6 + 0.11.0 + 3.6.0 + 4.10.2.0 + + + + opendataloader-pdf-core + opendataloader-pdf-cli + + + + + + + com.squareup.okhttp3 + okhttp-bom + ${okhttp.version} + pom + import + + + org.verapdf + wcag-algorithms + ${verapdf.wcag.algs.version} + + + org.jacoco + jacoco-maven-plugin + + + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.databind.version} + + + org.junit.jupiter + junit-jupiter + ${junit.jupiter.version} + test + + + org.assertj + assertj-core + ${assertj.version} + test + + + commons-cli + commons-cli + ${commons.cli.version} + + + + + + + + true + + vera-dev + Vera development + https://artifactory.openpreservation.org/artifactory/vera-dev + + + + + + false + + vera-dev + Vera development + https://artifactory.openpreservation.org/artifactory/vera-dev + + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire.plugin.version} + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler.plugin.version} + + ${maven.compiler.source} + + + + org.codehaus.mojo + flatten-maven-plugin + ${flatten.plugin.version} + + + org.jacoco + jacoco-maven-plugin + ${jacoco.plugin.version} + + + org.apache.maven.plugins + maven-source-plugin + ${maven-source.plugin.version} + + + org.apache.maven.plugins + maven-javadoc-plugin + ${maven-javadoc.plugin.version} + + all,-missing + + + + org.apache.maven.plugins + maven-shade-plugin + ${maven-shade.plugin.version} + + + org.apache.maven.plugins + maven-gpg-plugin + ${maven-gpg.plugin.version} + + + org.sonatype.central + central-publishing-maven-plugin + ${central-publishing.plugin.version} + + + org.apache.maven.plugins + maven-checkstyle-plugin + ${checkstyle.plugin.version} + + ${project.basedir}/../checkstyle.xml + true + true + + + + com.github.spotbugs + spotbugs-maven-plugin + ${spotbugs.plugin.version} + + Max + Medium + + + + + + + org.apache.maven.plugins + maven-deploy-plugin + 3.1.4 + + true + + + + + + + + license-header + + + + com.mycila + license-maven-plugin + +

    ${project.basedir}/../LICENSE_TEMPLATE/license.txt
    + + **/*.java + pom.xml + + + + + prepare-package + + format + + + + + + + + + + diff --git a/node/opendataloader-pdf/.gitignore b/node/opendataloader-pdf/.gitignore new file mode 100644 index 0000000..3c6a5e3 --- /dev/null +++ b/node/opendataloader-pdf/.gitignore @@ -0,0 +1,38 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +temp +*.jar +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +# turbo +.turbo + +# tsconfig +tsconfig.tsbuildinfo + +# docs +THIRD_PARTY +NOTICE +README.md +LICENSE diff --git a/node/opendataloader-pdf/.npmrc b/node/opendataloader-pdf/.npmrc new file mode 100644 index 0000000..e69de29 diff --git a/node/opendataloader-pdf/.prettierrc.json b/node/opendataloader-pdf/.prettierrc.json new file mode 100644 index 0000000..243b265 --- /dev/null +++ b/node/opendataloader-pdf/.prettierrc.json @@ -0,0 +1,7 @@ +{ + "singleQuote": true, + "trailingComma": "all", + "tabWidth": 2, + "semi": true, + "printWidth": 100 +} diff --git a/node/opendataloader-pdf/eslint.config.js b/node/opendataloader-pdf/eslint.config.js new file mode 100644 index 0000000..93af3d8 --- /dev/null +++ b/node/opendataloader-pdf/eslint.config.js @@ -0,0 +1,32 @@ +import eslint from "@eslint/js"; +import tseslint from "@typescript-eslint/eslint-plugin"; +import tsparser from "@typescript-eslint/parser"; +import globals from "globals"; + +export default [ + eslint.configs.recommended, + { + files: ["src/**/*.ts"], + languageOptions: { + globals: { + ...globals.node, + }, + parser: tsparser, + parserOptions: { + ecmaVersion: "latest", + sourceType: "module", + }, + }, + plugins: { + "@typescript-eslint": tseslint, + }, + rules: { + ...tseslint.configs.recommended.rules, + "no-unused-vars": "off", + "@typescript-eslint/no-unused-vars": "warn", + }, + }, + { + ignores: ["dist/**", "lib/**", "node_modules/**"], + }, +]; diff --git a/node/opendataloader-pdf/package.json b/node/opendataloader-pdf/package.json new file mode 100644 index 0000000..8235f94 --- /dev/null +++ b/node/opendataloader-pdf/package.json @@ -0,0 +1,86 @@ +{ + "name": "@opendataloader/pdf", + "version": "0.0.0", + "description": "A Node.js wrapper for the opendataloader-pdf Java CLI.", + "main": "./dist/index.cjs", + "module": "./dist/index.js", + "types": "./dist/index.d.ts", + "type": "module", + "bin": { + "opendataloader-pdf": "./dist/cli.js" + }, + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/index.cjs" + } + }, + "scripts": { + "setup": "node ./scripts/setup.cjs", + "build": "pnpm run setup && tsup", + "test": "vitest --run", + "format": "prettier --write \"**/*.{ts,js,json,md}\"", + "lint": "eslint \"src/**/*.ts\"", + "lint:fix": "eslint \"src/**/*.ts\" --fix" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/opendataloader-project/opendataloader-pdf.git" + }, + "keywords": [ + "pdf", + "markdown", + "html", + "convert", + "pdf-convert", + "pdf-parser", + "pdf-parsing", + "pdf-to-json", + "pdf-to-markdown", + "pdf-to-html" + ], + "author": "opendataloader-project", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/opendataloader-project/opendataloader-pdf/issues" + }, + "homepage": "https://github.com/opendataloader-project/opendataloader-pdf#readme", + "engines": { + "node": ">=20.19.0" + }, + "publishConfig": { + "access": "public" + }, + "dependencies": { + "commander": "^15.0.0" + }, + "devDependencies": { + "@eslint/js": "^10.0.1", + "@types/node": "^26.0.0", + "@typescript-eslint/eslint-plugin": "^8.58.2", + "@typescript-eslint/parser": "^8.58.2", + "eslint": "^10.2.0", + "glob": "^13.0.6", + "globals": "^17.5.0", + "prettier": "^3.8.3", + "tsup": "^8.5.1", + "typescript": "^6.0.2", + "vite": "^8.0.8", + "vitest": "^4.1.4" + }, + "pnpm": { + "overrides": { + "minimatch@<10.2.3": ">=10.2.3", + "flatted@<3.4.2": ">=3.4.2", + "postcss@<8.5.10": ">=8.5.10" + } + }, + "files": [ + "dist", + "lib", + "LICENSE", + "NOTICE", + "README.md", + "THIRD_PARTY" + ] +} diff --git a/node/opendataloader-pdf/pnpm-lock.yaml b/node/opendataloader-pdf/pnpm-lock.yaml new file mode 100644 index 0000000..78237fd --- /dev/null +++ b/node/opendataloader-pdf/pnpm-lock.yaml @@ -0,0 +1,2673 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +overrides: + minimatch@<10.2.3: '>=10.2.3' + flatted@<3.4.2: '>=3.4.2' + postcss@<8.5.10: '>=8.5.10' + +importers: + + .: + dependencies: + commander: + specifier: ^15.0.0 + version: 15.0.0 + devDependencies: + '@eslint/js': + specifier: ^10.0.1 + version: 10.0.1(eslint@10.5.0) + '@types/node': + specifier: ^26.0.0 + version: 26.0.0 + '@typescript-eslint/eslint-plugin': + specifier: ^8.58.2 + version: 8.61.1(@typescript-eslint/parser@8.61.1(eslint@10.5.0)(typescript@6.0.3))(eslint@10.5.0)(typescript@6.0.3) + '@typescript-eslint/parser': + specifier: ^8.58.2 + version: 8.61.1(eslint@10.5.0)(typescript@6.0.3) + eslint: + specifier: ^10.2.0 + version: 10.5.0 + glob: + specifier: ^13.0.6 + version: 13.0.6 + globals: + specifier: ^17.5.0 + version: 17.6.0 + prettier: + specifier: ^3.8.3 + version: 3.8.4 + tsup: + specifier: ^8.5.1 + version: 8.5.1(postcss@8.5.15)(tsx@4.20.5)(typescript@6.0.3) + typescript: + specifier: ^6.0.2 + version: 6.0.3 + vite: + specifier: ^8.0.8 + version: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(tsx@4.20.5) + vitest: + specifier: ^4.1.4 + version: 4.1.9(@types/node@26.0.0)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(tsx@4.20.5)) + +packages: + + '@emnapi/core@1.10.0': + resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} + + '@emnapi/runtime@1.10.0': + resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} + + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} + + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.27.7': + resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.27.7': + resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.27.7': + resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.27.7': + resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.27.7': + resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.27.7': + resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.27.7': + resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.27.7': + resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.27.7': + resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.27.7': + resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.27.7': + resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.27.7': + resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.27.7': + resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.27.7': + resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.27.7': + resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.27.7': + resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.27.7': + resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-arm64@0.27.7': + resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.7': + resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-arm64@0.27.7': + resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.7': + resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/openharmony-arm64@0.27.7': + resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.27.7': + resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.27.7': + resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.27.7': + resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.27.7': + resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.23.5': + resolution: {integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@eslint/config-helpers@0.6.0': + resolution: {integrity: sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@eslint/core@1.2.1': + resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@eslint/js@10.0.1': + resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + peerDependencies: + eslint: ^10.0.0 + peerDependenciesMeta: + eslint: + optional: true + + '@eslint/object-schema@3.0.5': + resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@eslint/plugin-kit@0.7.2': + resolution: {integrity: sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@humanfs/core@0.19.2': + resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.8': + resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==} + engines: {node: '>=18.18.0'} + + '@humanfs/types@0.15.0': + resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@napi-rs/wasm-runtime@1.1.5': + resolution: {integrity: sha512-AWPoBRJ9tsnVhor4sjO7rkni+7p+2IAEFj6cx06UgP10jkQHqay/36uRV/bFkgrh18D9vb4cr8Q0Pthskgzy+Q==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 + + '@oxc-project/types@0.133.0': + resolution: {integrity: sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==} + + '@rolldown/binding-android-arm64@1.0.3': + resolution: {integrity: sha512-454rs7jHngixp/NMxd5srYD57OnzSlZ/eFTETjORQHLwJG1lRtmNOJcBerZlfu4GjKqeq8aCCIQrMdHyhI51Hw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.0.3': + resolution: {integrity: sha512-PcAhP+ynjURNyy8SKGl5DQP94aGuB/7JrXJb/t7P+hanXvQVMWzUvRRhBAcg/lNRadBhoUPqSoP4xw5tR/KBEA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.0.3': + resolution: {integrity: sha512-9YpfeUvSE2RS7wysJ81uOZkXJz7f7Q55H2Gvp3VEw/EsahqDtrphrZ0EwDLK5vvKOzaCrBsjF8JmnMLcUt78Gg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.0.3': + resolution: {integrity: sha512-yB1IlAsSNHncV6SCTL27/MVGR5htvQsoGxIv5KMGXALp+Ll1wYsn+x98M9MW7qa+NdSbvrrY7ANI4wLJ0n1e6g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.0.3': + resolution: {integrity: sha512-Yi30IVAAfLUCy2MseFjbB1jAMDl1VMCAas5StnYp8da9+CKvMd2H2cbEjWcw5NPaPqzvYkVIaF1nNUG+b7u/sw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.0.3': + resolution: {integrity: sha512-jsO7R8To+AdlYgUmN5sHSCZbfhtMBkO0WUx8iORQnPcMMdgr7qM2DQmMwgabs3GhNztdmoKkMKQFHD6DTMCIQw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-arm64-musl@1.0.3': + resolution: {integrity: sha512-VWkUHwWriDciit80wleYwKILoR/KMvxh/IdwS/paX+ZgpuRpCrKLUdadJbc0NpBEiyhpYawsJ73j9aCvOH+f7Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-ppc64-gnu@1.0.3': + resolution: {integrity: sha512-5f1laC0SlIR0yDbFCd8acUhvJIag6N3zC5P7oUPN6wX0aOma+uKJ0wBDH5aq7I1PVI2ttTlhJwzwRIBnLiSGEg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + + '@rolldown/binding-linux-s390x-gnu@1.0.3': + resolution: {integrity: sha512-Iq4ko0r4XsgbrF/LunNgHtAGLRRVE2kXonAXQ/MV0mC6jQpMOhW1SvtZja2EhC/kd05++bP78dsqBeIQyYJ6Yg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + + '@rolldown/binding-linux-x64-gnu@1.0.3': + resolution: {integrity: sha512-B8m6tD5+/N5FeNQFbKlLA/2yVq9ycQP1SeedyEYYKWBNR3ZQbkvIUcNnDNM03lO1l5F2roiiFJGgvoLLyZXtSg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-linux-x64-musl@1.0.3': + resolution: {integrity: sha512-pSdpdUJHkuCxun9LE7jvgUB9qsRgaiyNNCX7m/AvHTcq67AiT/Yhoxvw5zPfhrM8k/BfP8ce/hMOpthKDpEUow==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-openharmony-arm64@1.0.3': + resolution: {integrity: sha512-OXXS3RKJgX2uLwM+gYyuH5omcH8fL1LJs96pZGgtetVCahON57+d4SJHzTgZiOjxgGkSnpXpOsWuPDGAKAigEg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.0.3': + resolution: {integrity: sha512-JTtb8BWFynicNSoPrehsCzBtOKjZ6jhMiPFEmOiuXg1Fl8dn2KHQob+GuPSGR0dryQa1PQJbzjF3dqO/whhjLg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.0.3': + resolution: {integrity: sha512-gEdFFEN70A/jxb2svrWsN3aDL7OUtmvlOy+6fa2jxG8K0wQ1ZbdeLGnidov6Yu5/733dI5ySfzFlQ/cb0bSz1g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.0.3': + resolution: {integrity: sha512-eXB7CHuaQdqmJcc3koCNtNPmT/bj2gc999kUFgBxG8Ac0NdgXc4rkCHhqrgrhN3zddvvvrgzj1e90SuSfmyIXA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.0.1': + resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} + + '@rollup/rollup-android-arm-eabi@4.60.1': + resolution: {integrity: sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.60.1': + resolution: {integrity: sha512-YjG/EwIDvvYI1YvYbHvDz/BYHtkY4ygUIXHnTdLhG+hKIQFBiosfWiACWortsKPKU/+dUwQQCKQM3qrDe8c9BA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.60.1': + resolution: {integrity: sha512-mjCpF7GmkRtSJwon+Rq1N8+pI+8l7w5g9Z3vWj4T7abguC4Czwi3Yu/pFaLvA3TTeMVjnu3ctigusqWUfjZzvw==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.60.1': + resolution: {integrity: sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.60.1': + resolution: {integrity: sha512-czw90wpQq3ZsAVBlinZjAYTKduOjTywlG7fEeWKUA7oCmpA8xdTkxZZlwNJKWqILlq0wehoZcJYfBvOyhPTQ6w==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.60.1': + resolution: {integrity: sha512-KVB2rqsxTHuBtfOeySEyzEOB7ltlB/ux38iu2rBQzkjbwRVlkhAGIEDiiYnO2kFOkJp+Z7pUXKyrRRFuFUKt+g==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.60.1': + resolution: {integrity: sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.60.1': + resolution: {integrity: sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.60.1': + resolution: {integrity: sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.60.1': + resolution: {integrity: sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.60.1': + resolution: {integrity: sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-loong64-musl@4.60.1': + resolution: {integrity: sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.60.1': + resolution: {integrity: sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-ppc64-musl@4.60.1': + resolution: {integrity: sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.60.1': + resolution: {integrity: sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.60.1': + resolution: {integrity: sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.60.1': + resolution: {integrity: sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.60.1': + resolution: {integrity: sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.60.1': + resolution: {integrity: sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openbsd-x64@4.60.1': + resolution: {integrity: sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.60.1': + resolution: {integrity: sha512-4Cv23ZrONRbNtbZa37mLSueXUCtN7MXccChtKpUnQNgF010rjrjfHx3QxkS2PI7LqGT5xXyYs1a7LbzAwT0iCA==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.60.1': + resolution: {integrity: sha512-i1okWYkA4FJICtr7KpYzFpRTHgy5jdDbZiWfvny21iIKky5YExiDXP+zbXzm3dUcFpkEeYNHgQ5fuG236JPq0g==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.60.1': + resolution: {integrity: sha512-u09m3CuwLzShA0EYKMNiFgcjjzwqtUMLmuCJLeZWjjOYA3IT2Di09KaxGBTP9xVztWyIWjVdsB2E9goMjZvTQg==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.60.1': + resolution: {integrity: sha512-k+600V9Zl1CM7eZxJgMyTUzmrmhB/0XZnF4pRypKAlAgxmedUA+1v9R+XOFv56W4SlHEzfeMtzujLJD22Uz5zg==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.60.1': + resolution: {integrity: sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ==} + cpu: [x64] + os: [win32] + + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + + '@tybys/wasm-util@0.10.2': + resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} + + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + '@types/esrecurse@4.3.1': + resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/node@26.0.0': + resolution: {integrity: sha512-vf2YFi1iY9lHGwNJMs01biZFbKJkrZR1T6/MlzjhJLPdntOHLhTrDSnSVcdtvjihi4VQNlrFRIxLsDBlQpAipA==} + + '@typescript-eslint/eslint-plugin@8.61.1': + resolution: {integrity: sha512-ZPlVl3PB3et/59Ne0fv/sci6ZXz4T4Hp4nTJ56i/Y0gR89ARb+KphojTq6j+56E5PIezmOIOOWyY+aWQFd+IkQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.61.1 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/parser@8.61.1': + resolution: {integrity: sha512-PJ5vePq5/ognBbrIcoC5+SHO5dfpeLPzP9FpLkzWrguoYQEeeSjlJpVwOpo1JRSTEi7dRcwNy4h4dzV70PqHcg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/project-service@8.61.1': + resolution: {integrity: sha512-PrC4JYGmR241lYnfhmKGTXkFqv8+ymbTFgSAY0fVXpY82/QkMw5TZPl+vGzuDDU2QYJk9fIDOBTntF+yDv9LEA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/scope-manager@8.61.1': + resolution: {integrity: sha512-L2bdIeoQS8FlKAvONAr20w6OcLXeB+qiDKbAooS9A0Ben+iSIkBef0FxqwKWYqt5sa0i4KJtxVyVmhMylKzF5w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.61.1': + resolution: {integrity: sha512-UN/H4di+OO7EWx2ovME+8t31YO+KVnK0RRKEHR3kOt21/Ay8BOq3M1OMvWs5vNiqcFCYGYoxK3MXPZzmMUE+yg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/type-utils@8.61.1': + resolution: {integrity: sha512-GYRicKmVK0C4fsKgaACaknOUAq9Oa2kwsjnpFhFcS/5p4Ht5IP9OVLbgIgcK4SRk92nVHFluurg1lumD9dBcLw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/types@8.61.1': + resolution: {integrity: sha512-G+CRlPqLv7Bz1IZVs03x5K59F1veqL0EJUROAdGhKsEq8qOiRiZbI+HUojPq5l0fEGOKModD9br6lObhB8zkoA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.61.1': + resolution: {integrity: sha512-u+oQD3BqYWPc8YV9Zab4vaJElJuwOLPRc10Jm1o/qS+6Qwen14HCWwx0Seo4LnSn2wxea2Ik8DxPt2/FHmuhrg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/utils@8.61.1': + resolution: {integrity: sha512-1+P/3Dj6jvtybE1q0HQ6yBt/gq+oKJyLdEv4HdnqasaEXRSYCAsD59mXEVQnM/ULNdQxbX77tdG4jPRjIS6knA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/visitor-keys@8.61.1': + resolution: {integrity: sha512-6fJ9MHWtK14C1DSkiMlHUSOmrVebL7150xZJBlJiL62jjhIA4JmOq6flwBgDxIdBKKdoiZRel+dfPD5MLfny3w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@vitest/expect@4.1.9': + resolution: {integrity: sha512-vl/rYsUKcBr3SnQn166+XR5ZQcgMx3DQhFWdfli/cWpLnLUmbxZvyrJZotLFUryib+LtArYMSTJ5RbQ57ZqrlA==} + + '@vitest/mocker@4.1.9': + resolution: {integrity: sha512-EVkXzBjrPGM+cK8/ANWgBrkUCfJfb38/EfTSO8h7pWvKkyPkpWxvR7BkD2MyItMF62C97zAEoqdpUixwR/e+Rw==} + peerDependencies: + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@4.1.9': + resolution: {integrity: sha512-s0iufns3iIFitdgm+YR7g1whCAaGtXz459VS9/PqyKDEEFgYIhsHOQmXgIgDuYCt7DeQmiZT0Qe2OA2p4ZPu5A==} + + '@vitest/runner@4.1.9': + resolution: {integrity: sha512-KXLMDtc7oe70+3mJfGrPUWPesswH+3sTxAMAMl8DG7I8IUQT4XW718dY5ID3vPUcmlu27CcKfY4P3h3I29SLJg==} + + '@vitest/snapshot@4.1.9': + resolution: {integrity: sha512-Jc7RKGNBo8Z28WYIm0Niej4xdSPByRf6mU58VpHQkd6Zh05rlnA+twjbK5HyeIGHxrzsc3mJgS43uM0CZKzaIA==} + + '@vitest/spy@4.1.9': + resolution: {integrity: sha512-fHpsS6mIi+PiEW+vcRVOMkX1oSaPKne3VOclSFICPcGOmfKgXPU5iAah+wcNcj2xPrCCmfq99IDGf+EojhhvhA==} + + '@vitest/utils@4.1.9': + resolution: {integrity: sha512-A51o8ymO5PpqlWNnBP9ZHPXDIpuMtTLlGSjN7la4US+LJzoUMyhwjA5QXlm39JexgwHKW4Xjs8Z2d3dLCXOeuA==} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.17.0: + resolution: {integrity: sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.15.0: + resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + + brace-expansion@5.0.6: + resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} + engines: {node: 18 || 20 || >=22} + + bundle-require@5.1.0: + resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.18' + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + commander@15.0.0: + resolution: {integrity: sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==} + engines: {node: '>=22.12.0'} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + es-module-lexer@2.1.0: + resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==} + + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + engines: {node: '>=18'} + hasBin: true + + esbuild@0.27.7: + resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} + engines: {node: '>=18'} + hasBin: true + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-scope@9.1.2: + resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + 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-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint@10.5.0: + resolution: {integrity: sha512-1y+7C+vi12bUK1IpZeaV3gsH9fHLBmPvYmPx42pvT/E9yG0IC8g3PUZZgp0+JLJl7ZDK0flc2gc+Aw9dpCvIsQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@11.2.0: + resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + engines: {node: '>=12.0.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + fix-dts-default-cjs-exports@1.0.1: + resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + get-tsconfig@4.14.0: + resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@13.0.6: + resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} + engines: {node: 18 || 20 || >=22} + + globals@17.6.0: + resolution: {integrity: sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA==} + engines: {node: '>=18'} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + 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==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} + + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lru-cache@11.3.5: + resolution: {integrity: sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==} + engines: {node: 20 || >=22} + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} + + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} + + mlly@1.8.2: + resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.12: + resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + obug@2.1.3: + resolution: {integrity: sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==} + engines: {node: '>=12.20.0'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-scurry@2.0.2: + resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} + engines: {node: 18 || 20 || >=22} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + postcss-load-config@6.0.1: + resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} + engines: {node: '>= 18'} + peerDependencies: + jiti: '>=1.21.0' + postcss: '>=8.5.10' + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + jiti: + optional: true + postcss: + optional: true + tsx: + optional: true + yaml: + optional: true + + postcss@8.5.15: + resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier@3.8.4: + resolution: {integrity: sha512-N2MylSdi48+5N/6S5j+maeHbUSIzzZ5uOcX5Hm4QpV8Dkb1HFjfAKTKX6yNPJQD9AhcT3ifHNB66tWTTJDi11Q==} + engines: {node: '>=14'} + hasBin: true + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + rolldown@1.0.3: + resolution: {integrity: sha512-i00lAJ2ks1BYr7rjNjKC7BcqAS7nVfiT3QX1SI5aY+AFHblCmaUf9OE9dbdzDvW6dJxbi2ZCZiy9v3CcwOiX3g==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + rollup@4.60.1: + resolution: {integrity: sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + semver@7.8.4: + resolution: {integrity: sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==} + engines: {node: '>=10'} + hasBin: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + std-env@4.1.0: + resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} + + sucrase@3.35.1: + resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + + tinyexec@1.2.4: + resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} + engines: {node: '>=18'} + + tinyglobby@0.2.16: + resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} + engines: {node: '>=12.0.0'} + + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + + tinyrainbow@3.1.0: + resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} + engines: {node: '>=14.0.0'} + + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tsup@8.5.1: + resolution: {integrity: sha512-xtgkqwdhpKWr3tKPmCkvYmS9xnQK3m3XgxZHwSUjvfTjp7YfXe5tT3GgWi0F2N+ZSMsOeWeZFh7ZZFg5iPhing==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@microsoft/api-extractor': ^7.36.0 + '@swc/core': ^1 + postcss: '>=8.5.10' + typescript: '>=4.5.0' + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + + tsx@4.20.5: + resolution: {integrity: sha512-+wKjMNU9w/EaQayHXb7WA7ZaHY6hN8WgfvHNQ3t1PnU91/7O8TcTnIhCDYTZwnt8JsO9IBqZ30Ln1r7pPF52Aw==} + engines: {node: '>=18.0.0'} + hasBin: true + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + typescript@6.0.3: + resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} + engines: {node: '>=14.17'} + hasBin: true + + ufo@1.6.3: + resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} + + undici-types@8.3.0: + resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + vite@8.0.16: + resolution: {integrity: sha512-h9bXPmJichP5fLmVQo3PyaGSDE2n3aPuomeAlVRm0JLmt4rY6zmPKd59HYI4LNW8oTK7tlTsuC7l/m7awx9Jcw==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.1.18 + esbuild: ^0.27.0 || ^0.28.0 + jiti: '>=1.21.0' + less: ^4.0.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true + jiti: + optional: true + less: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@4.1.9: + resolution: {integrity: sha512-nE3/LEyc0z87uHYLZebqCUOaJr2hdtuPp7BQ4BosVFnfltxgAvMG08NyrSGlPpOUWvR27c5flSmYFTNr78L9GQ==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.9 + '@vitest/browser-preview': 4.1.9 + '@vitest/browser-webdriverio': 4.1.9 + '@vitest/coverage-istanbul': 4.1.9 + '@vitest/coverage-v8': 4.1.9 + '@vitest/ui': 4.1.9 + happy-dom: '*' + jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + +snapshots: + + '@emnapi/core@1.10.0': + dependencies: + '@emnapi/wasi-threads': 1.2.1 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.10.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@esbuild/aix-ppc64@0.25.12': + optional: true + + '@esbuild/aix-ppc64@0.27.7': + optional: true + + '@esbuild/android-arm64@0.25.12': + optional: true + + '@esbuild/android-arm64@0.27.7': + optional: true + + '@esbuild/android-arm@0.25.12': + optional: true + + '@esbuild/android-arm@0.27.7': + optional: true + + '@esbuild/android-x64@0.25.12': + optional: true + + '@esbuild/android-x64@0.27.7': + optional: true + + '@esbuild/darwin-arm64@0.25.12': + optional: true + + '@esbuild/darwin-arm64@0.27.7': + optional: true + + '@esbuild/darwin-x64@0.25.12': + optional: true + + '@esbuild/darwin-x64@0.27.7': + optional: true + + '@esbuild/freebsd-arm64@0.25.12': + optional: true + + '@esbuild/freebsd-arm64@0.27.7': + optional: true + + '@esbuild/freebsd-x64@0.25.12': + optional: true + + '@esbuild/freebsd-x64@0.27.7': + optional: true + + '@esbuild/linux-arm64@0.25.12': + optional: true + + '@esbuild/linux-arm64@0.27.7': + optional: true + + '@esbuild/linux-arm@0.25.12': + optional: true + + '@esbuild/linux-arm@0.27.7': + optional: true + + '@esbuild/linux-ia32@0.25.12': + optional: true + + '@esbuild/linux-ia32@0.27.7': + optional: true + + '@esbuild/linux-loong64@0.25.12': + optional: true + + '@esbuild/linux-loong64@0.27.7': + optional: true + + '@esbuild/linux-mips64el@0.25.12': + optional: true + + '@esbuild/linux-mips64el@0.27.7': + optional: true + + '@esbuild/linux-ppc64@0.25.12': + optional: true + + '@esbuild/linux-ppc64@0.27.7': + optional: true + + '@esbuild/linux-riscv64@0.25.12': + optional: true + + '@esbuild/linux-riscv64@0.27.7': + optional: true + + '@esbuild/linux-s390x@0.25.12': + optional: true + + '@esbuild/linux-s390x@0.27.7': + optional: true + + '@esbuild/linux-x64@0.25.12': + optional: true + + '@esbuild/linux-x64@0.27.7': + optional: true + + '@esbuild/netbsd-arm64@0.25.12': + optional: true + + '@esbuild/netbsd-arm64@0.27.7': + optional: true + + '@esbuild/netbsd-x64@0.25.12': + optional: true + + '@esbuild/netbsd-x64@0.27.7': + optional: true + + '@esbuild/openbsd-arm64@0.25.12': + optional: true + + '@esbuild/openbsd-arm64@0.27.7': + optional: true + + '@esbuild/openbsd-x64@0.25.12': + optional: true + + '@esbuild/openbsd-x64@0.27.7': + optional: true + + '@esbuild/openharmony-arm64@0.25.12': + optional: true + + '@esbuild/openharmony-arm64@0.27.7': + optional: true + + '@esbuild/sunos-x64@0.25.12': + optional: true + + '@esbuild/sunos-x64@0.27.7': + optional: true + + '@esbuild/win32-arm64@0.25.12': + optional: true + + '@esbuild/win32-arm64@0.27.7': + optional: true + + '@esbuild/win32-ia32@0.25.12': + optional: true + + '@esbuild/win32-ia32@0.27.7': + optional: true + + '@esbuild/win32-x64@0.25.12': + optional: true + + '@esbuild/win32-x64@0.27.7': + optional: true + + '@eslint-community/eslint-utils@4.9.1(eslint@10.5.0)': + dependencies: + eslint: 10.5.0 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.2': {} + + '@eslint/config-array@0.23.5': + dependencies: + '@eslint/object-schema': 3.0.5 + debug: 4.4.3 + minimatch: 10.2.5 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.6.0': + dependencies: + '@eslint/core': 1.2.1 + + '@eslint/core@1.2.1': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/js@10.0.1(eslint@10.5.0)': + optionalDependencies: + eslint: 10.5.0 + + '@eslint/object-schema@3.0.5': {} + + '@eslint/plugin-kit@0.7.2': + dependencies: + '@eslint/core': 1.2.1 + levn: 0.4.1 + + '@humanfs/core@0.19.2': + dependencies: + '@humanfs/types': 0.15.0 + + '@humanfs/node@0.16.8': + dependencies: + '@humanfs/core': 0.19.2 + '@humanfs/types': 0.15.0 + '@humanwhocodes/retry': 0.4.3 + + '@humanfs/types@0.15.0': {} + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@napi-rs/wasm-runtime@1.1.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@tybys/wasm-util': 0.10.2 + optional: true + + '@oxc-project/types@0.133.0': {} + + '@rolldown/binding-android-arm64@1.0.3': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.3': + optional: true + + '@rolldown/binding-darwin-x64@1.0.3': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.3': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.3': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.3': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.3': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.0.3': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.0.3': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.3': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.3': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.3': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.3': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.1.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.3': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.3': + optional: true + + '@rolldown/pluginutils@1.0.1': {} + + '@rollup/rollup-android-arm-eabi@4.60.1': + optional: true + + '@rollup/rollup-android-arm64@4.60.1': + optional: true + + '@rollup/rollup-darwin-arm64@4.60.1': + optional: true + + '@rollup/rollup-darwin-x64@4.60.1': + optional: true + + '@rollup/rollup-freebsd-arm64@4.60.1': + optional: true + + '@rollup/rollup-freebsd-x64@4.60.1': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.60.1': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.60.1': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.60.1': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.60.1': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.60.1': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.60.1': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.60.1': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.60.1': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.60.1': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.60.1': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.60.1': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.60.1': + optional: true + + '@rollup/rollup-linux-x64-musl@4.60.1': + optional: true + + '@rollup/rollup-openbsd-x64@4.60.1': + optional: true + + '@rollup/rollup-openharmony-arm64@4.60.1': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.60.1': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.60.1': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.60.1': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.60.1': + optional: true + + '@standard-schema/spec@1.1.0': {} + + '@tybys/wasm-util@0.10.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/deep-eql@4.0.2': {} + + '@types/esrecurse@4.3.1': {} + + '@types/estree@1.0.8': {} + + '@types/estree@1.0.9': {} + + '@types/json-schema@7.0.15': {} + + '@types/node@26.0.0': + dependencies: + undici-types: 8.3.0 + + '@typescript-eslint/eslint-plugin@8.61.1(@typescript-eslint/parser@8.61.1(eslint@10.5.0)(typescript@6.0.3))(eslint@10.5.0)(typescript@6.0.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.61.1(eslint@10.5.0)(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.61.1 + '@typescript-eslint/type-utils': 8.61.1(eslint@10.5.0)(typescript@6.0.3) + '@typescript-eslint/utils': 8.61.1(eslint@10.5.0)(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.61.1 + eslint: 10.5.0 + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.61.1(eslint@10.5.0)(typescript@6.0.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.61.1 + '@typescript-eslint/types': 8.61.1 + '@typescript-eslint/typescript-estree': 8.61.1(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.61.1 + debug: 4.4.3 + eslint: 10.5.0 + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.61.1(typescript@6.0.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.61.1(typescript@6.0.3) + '@typescript-eslint/types': 8.61.1 + debug: 4.4.3 + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.61.1': + dependencies: + '@typescript-eslint/types': 8.61.1 + '@typescript-eslint/visitor-keys': 8.61.1 + + '@typescript-eslint/tsconfig-utils@8.61.1(typescript@6.0.3)': + dependencies: + typescript: 6.0.3 + + '@typescript-eslint/type-utils@8.61.1(eslint@10.5.0)(typescript@6.0.3)': + dependencies: + '@typescript-eslint/types': 8.61.1 + '@typescript-eslint/typescript-estree': 8.61.1(typescript@6.0.3) + '@typescript-eslint/utils': 8.61.1(eslint@10.5.0)(typescript@6.0.3) + debug: 4.4.3 + eslint: 10.5.0 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.61.1': {} + + '@typescript-eslint/typescript-estree@8.61.1(typescript@6.0.3)': + dependencies: + '@typescript-eslint/project-service': 8.61.1(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.61.1(typescript@6.0.3) + '@typescript-eslint/types': 8.61.1 + '@typescript-eslint/visitor-keys': 8.61.1 + debug: 4.4.3 + minimatch: 10.2.5 + semver: 7.8.4 + tinyglobby: 0.2.17 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.61.1(eslint@10.5.0)(typescript@6.0.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0) + '@typescript-eslint/scope-manager': 8.61.1 + '@typescript-eslint/types': 8.61.1 + '@typescript-eslint/typescript-estree': 8.61.1(typescript@6.0.3) + eslint: 10.5.0 + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.61.1': + dependencies: + '@typescript-eslint/types': 8.61.1 + eslint-visitor-keys: 5.0.1 + + '@vitest/expect@4.1.9': + dependencies: + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.1.9 + '@vitest/utils': 4.1.9 + chai: 6.2.2 + tinyrainbow: 3.1.0 + + '@vitest/mocker@4.1.9(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(tsx@4.20.5))': + dependencies: + '@vitest/spy': 4.1.9 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(tsx@4.20.5) + + '@vitest/pretty-format@4.1.9': + dependencies: + tinyrainbow: 3.1.0 + + '@vitest/runner@4.1.9': + dependencies: + '@vitest/utils': 4.1.9 + pathe: 2.0.3 + + '@vitest/snapshot@4.1.9': + dependencies: + '@vitest/pretty-format': 4.1.9 + '@vitest/utils': 4.1.9 + magic-string: 0.30.21 + pathe: 2.0.3 + + '@vitest/spy@4.1.9': {} + + '@vitest/utils@4.1.9': + dependencies: + '@vitest/pretty-format': 4.1.9 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 + + acorn-jsx@5.3.2(acorn@8.17.0): + dependencies: + acorn: 8.17.0 + + acorn@8.17.0: {} + + ajv@6.15.0: + 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 + + any-promise@1.3.0: {} + + assertion-error@2.0.1: {} + + balanced-match@4.0.4: {} + + brace-expansion@5.0.6: + dependencies: + balanced-match: 4.0.4 + + bundle-require@5.1.0(esbuild@0.27.7): + dependencies: + esbuild: 0.27.7 + load-tsconfig: 0.2.5 + + cac@6.7.14: {} + + chai@6.2.2: {} + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + commander@15.0.0: {} + + commander@4.1.1: {} + + confbox@0.1.8: {} + + consola@3.4.2: {} + + convert-source-map@2.0.0: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + deep-is@0.1.4: {} + + detect-libc@2.1.2: {} + + es-module-lexer@2.1.0: {} + + esbuild@0.25.12: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 + optional: true + + esbuild@0.27.7: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.7 + '@esbuild/android-arm': 0.27.7 + '@esbuild/android-arm64': 0.27.7 + '@esbuild/android-x64': 0.27.7 + '@esbuild/darwin-arm64': 0.27.7 + '@esbuild/darwin-x64': 0.27.7 + '@esbuild/freebsd-arm64': 0.27.7 + '@esbuild/freebsd-x64': 0.27.7 + '@esbuild/linux-arm': 0.27.7 + '@esbuild/linux-arm64': 0.27.7 + '@esbuild/linux-ia32': 0.27.7 + '@esbuild/linux-loong64': 0.27.7 + '@esbuild/linux-mips64el': 0.27.7 + '@esbuild/linux-ppc64': 0.27.7 + '@esbuild/linux-riscv64': 0.27.7 + '@esbuild/linux-s390x': 0.27.7 + '@esbuild/linux-x64': 0.27.7 + '@esbuild/netbsd-arm64': 0.27.7 + '@esbuild/netbsd-x64': 0.27.7 + '@esbuild/openbsd-arm64': 0.27.7 + '@esbuild/openbsd-x64': 0.27.7 + '@esbuild/openharmony-arm64': 0.27.7 + '@esbuild/sunos-x64': 0.27.7 + '@esbuild/win32-arm64': 0.27.7 + '@esbuild/win32-ia32': 0.27.7 + '@esbuild/win32-x64': 0.27.7 + + escape-string-regexp@4.0.0: {} + + eslint-scope@9.1.2: + dependencies: + '@types/esrecurse': 4.3.1 + '@types/estree': 1.0.9 + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@5.0.1: {} + + eslint@10.5.0: + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.23.5 + '@eslint/config-helpers': 0.6.0 + '@eslint/core': 1.2.1 + '@eslint/plugin-kit': 0.7.2 + '@humanfs/node': 0.16.8 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.9 + ajv: 6.15.0 + cross-spawn: 7.0.6 + debug: 4.4.3 + escape-string-regexp: 4.0.0 + eslint-scope: 9.1.2 + eslint-visitor-keys: 5.0.1 + espree: 11.2.0 + esquery: 1.7.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + minimatch: 10.2.5 + natural-compare: 1.4.0 + optionator: 0.9.4 + transitivePeerDependencies: + - supports-color + + espree@11.2.0: + dependencies: + acorn: 8.17.0 + acorn-jsx: 5.3.2(acorn@8.17.0) + eslint-visitor-keys: 5.0.1 + + esquery@1.7.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.9 + + esutils@2.0.3: {} + + expect-type@1.3.0: {} + + fast-deep-equal@3.1.3: {} + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fdir@6.5.0(picomatch@4.0.4): + optionalDependencies: + picomatch: 4.0.4 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + fix-dts-default-cjs-exports@1.0.1: + dependencies: + magic-string: 0.30.21 + mlly: 1.8.2 + rollup: 4.60.1 + + flat-cache@4.0.1: + dependencies: + flatted: 3.4.2 + keyv: 4.5.4 + + flatted@3.4.2: {} + + fsevents@2.3.3: + optional: true + + get-tsconfig@4.14.0: + dependencies: + resolve-pkg-maps: 1.0.0 + optional: true + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@13.0.6: + dependencies: + minimatch: 10.2.5 + minipass: 7.1.3 + path-scurry: 2.0.2 + + globals@17.6.0: {} + + ignore@5.3.2: {} + + ignore@7.0.5: {} + + imurmurhash@0.1.4: {} + + is-extglob@2.1.1: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + isexe@2.0.0: {} + + joycon@3.1.1: {} + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lightningcss-android-arm64@1.32.0: + optional: true + + lightningcss-darwin-arm64@1.32.0: + optional: true + + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss@1.32.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 + + lilconfig@3.1.3: {} + + lines-and-columns@1.2.4: {} + + load-tsconfig@0.2.5: {} + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lru-cache@11.3.5: {} + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + minimatch@10.2.5: + dependencies: + brace-expansion: 5.0.6 + + minipass@7.1.3: {} + + mlly@1.8.2: + dependencies: + acorn: 8.17.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.3 + + ms@2.1.3: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nanoid@3.3.12: {} + + natural-compare@1.4.0: {} + + object-assign@4.1.1: {} + + obug@2.1.3: {} + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + path-scurry@2.0.2: + dependencies: + lru-cache: 11.3.5 + minipass: 7.1.3 + + pathe@2.0.3: {} + + picocolors@1.1.1: {} + + picomatch@4.0.4: {} + + pirates@4.0.7: {} + + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.8.2 + pathe: 2.0.3 + + postcss-load-config@6.0.1(postcss@8.5.15)(tsx@4.20.5): + dependencies: + lilconfig: 3.1.3 + optionalDependencies: + postcss: 8.5.15 + tsx: 4.20.5 + + postcss@8.5.15: + dependencies: + nanoid: 3.3.12 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + prettier@3.8.4: {} + + punycode@2.3.1: {} + + readdirp@4.1.2: {} + + resolve-from@5.0.0: {} + + resolve-pkg-maps@1.0.0: + optional: true + + rolldown@1.0.3: + dependencies: + '@oxc-project/types': 0.133.0 + '@rolldown/pluginutils': 1.0.1 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.3 + '@rolldown/binding-darwin-arm64': 1.0.3 + '@rolldown/binding-darwin-x64': 1.0.3 + '@rolldown/binding-freebsd-x64': 1.0.3 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.3 + '@rolldown/binding-linux-arm64-gnu': 1.0.3 + '@rolldown/binding-linux-arm64-musl': 1.0.3 + '@rolldown/binding-linux-ppc64-gnu': 1.0.3 + '@rolldown/binding-linux-s390x-gnu': 1.0.3 + '@rolldown/binding-linux-x64-gnu': 1.0.3 + '@rolldown/binding-linux-x64-musl': 1.0.3 + '@rolldown/binding-openharmony-arm64': 1.0.3 + '@rolldown/binding-wasm32-wasi': 1.0.3 + '@rolldown/binding-win32-arm64-msvc': 1.0.3 + '@rolldown/binding-win32-x64-msvc': 1.0.3 + + rollup@4.60.1: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.60.1 + '@rollup/rollup-android-arm64': 4.60.1 + '@rollup/rollup-darwin-arm64': 4.60.1 + '@rollup/rollup-darwin-x64': 4.60.1 + '@rollup/rollup-freebsd-arm64': 4.60.1 + '@rollup/rollup-freebsd-x64': 4.60.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.60.1 + '@rollup/rollup-linux-arm-musleabihf': 4.60.1 + '@rollup/rollup-linux-arm64-gnu': 4.60.1 + '@rollup/rollup-linux-arm64-musl': 4.60.1 + '@rollup/rollup-linux-loong64-gnu': 4.60.1 + '@rollup/rollup-linux-loong64-musl': 4.60.1 + '@rollup/rollup-linux-ppc64-gnu': 4.60.1 + '@rollup/rollup-linux-ppc64-musl': 4.60.1 + '@rollup/rollup-linux-riscv64-gnu': 4.60.1 + '@rollup/rollup-linux-riscv64-musl': 4.60.1 + '@rollup/rollup-linux-s390x-gnu': 4.60.1 + '@rollup/rollup-linux-x64-gnu': 4.60.1 + '@rollup/rollup-linux-x64-musl': 4.60.1 + '@rollup/rollup-openbsd-x64': 4.60.1 + '@rollup/rollup-openharmony-arm64': 4.60.1 + '@rollup/rollup-win32-arm64-msvc': 4.60.1 + '@rollup/rollup-win32-ia32-msvc': 4.60.1 + '@rollup/rollup-win32-x64-gnu': 4.60.1 + '@rollup/rollup-win32-x64-msvc': 4.60.1 + fsevents: 2.3.3 + + semver@7.8.4: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + siginfo@2.0.0: {} + + source-map-js@1.2.1: {} + + source-map@0.7.6: {} + + stackback@0.0.2: {} + + std-env@4.1.0: {} + + sucrase@3.35.1: + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + commander: 4.1.1 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.7 + tinyglobby: 0.2.16 + ts-interface-checker: 0.1.13 + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + tinybench@2.9.0: {} + + tinyexec@0.3.2: {} + + tinyexec@1.2.4: {} + + tinyglobby@0.2.16: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + + tinyrainbow@3.1.0: {} + + tree-kill@1.2.2: {} + + ts-api-utils@2.5.0(typescript@6.0.3): + dependencies: + typescript: 6.0.3 + + ts-interface-checker@0.1.13: {} + + tslib@2.8.1: + optional: true + + tsup@8.5.1(postcss@8.5.15)(tsx@4.20.5)(typescript@6.0.3): + dependencies: + bundle-require: 5.1.0(esbuild@0.27.7) + cac: 6.7.14 + chokidar: 4.0.3 + consola: 3.4.2 + debug: 4.4.3 + esbuild: 0.27.7 + fix-dts-default-cjs-exports: 1.0.1 + joycon: 3.1.1 + picocolors: 1.1.1 + postcss-load-config: 6.0.1(postcss@8.5.15)(tsx@4.20.5) + resolve-from: 5.0.0 + rollup: 4.60.1 + source-map: 0.7.6 + sucrase: 3.35.1 + tinyexec: 0.3.2 + tinyglobby: 0.2.16 + tree-kill: 1.2.2 + optionalDependencies: + postcss: 8.5.15 + typescript: 6.0.3 + transitivePeerDependencies: + - jiti + - supports-color + - tsx + - yaml + + tsx@4.20.5: + dependencies: + esbuild: 0.25.12 + get-tsconfig: 4.14.0 + optionalDependencies: + fsevents: 2.3.3 + optional: true + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + typescript@6.0.3: {} + + ufo@1.6.3: {} + + undici-types@8.3.0: {} + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(tsx@4.20.5): + dependencies: + lightningcss: 1.32.0 + picomatch: 4.0.4 + postcss: 8.5.15 + rolldown: 1.0.3 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 26.0.0 + esbuild: 0.27.7 + fsevents: 2.3.3 + tsx: 4.20.5 + + vitest@4.1.9(@types/node@26.0.0)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(tsx@4.20.5)): + dependencies: + '@vitest/expect': 4.1.9 + '@vitest/mocker': 4.1.9(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(tsx@4.20.5)) + '@vitest/pretty-format': 4.1.9 + '@vitest/runner': 4.1.9 + '@vitest/snapshot': 4.1.9 + '@vitest/spy': 4.1.9 + '@vitest/utils': 4.1.9 + es-module-lexer: 2.1.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.3 + pathe: 2.0.3 + picomatch: 4.0.4 + std-env: 4.1.0 + tinybench: 2.9.0 + tinyexec: 1.2.4 + tinyglobby: 0.2.17 + tinyrainbow: 3.1.0 + vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(tsx@4.20.5) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 26.0.0 + transitivePeerDependencies: + - msw + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + word-wrap@1.2.5: {} + + yocto-queue@0.1.0: {} diff --git a/node/opendataloader-pdf/scripts/setup.cjs b/node/opendataloader-pdf/scripts/setup.cjs new file mode 100644 index 0000000..4d3e8fa --- /dev/null +++ b/node/opendataloader-pdf/scripts/setup.cjs @@ -0,0 +1,62 @@ +const fs = require('fs'); +const path = require('path'); +const { globSync } = require('glob'); + +const rootDir = path.resolve(__dirname, '..'); +const javaDir = path.resolve(rootDir, '../../java'); +const sourceJarGlob = path + .join(javaDir, 'opendataloader-pdf-cli/target/opendataloader-pdf-cli-*.jar') + .replace(/\\/g, '/'); + +console.log(`Searching for JAR file in: ${sourceJarGlob}`); + +const sourceJarPaths = globSync(sourceJarGlob); +if (sourceJarPaths.length === 0) { + console.error( + "Could not find the JAR file. Please run 'mvn package' in the 'java/' directory first.", + ); + process.exit(1); +} +if (sourceJarPaths.length > 1) { + console.error(`Found multiple JAR files, expected one: ${sourceJarPaths}`); + process.exit(1); +} + +const sourceJarPath = sourceJarPaths[0]; +console.log(`Found source JAR: ${sourceJarPath}`); + +const destJarDir = path.join(rootDir, 'lib').replace(/\\/g, '/'); +if (!fs.existsSync(destJarDir)) { + fs.mkdirSync(destJarDir, { recursive: true }); +} +const destJarPath = path.join(destJarDir, 'opendataloader-pdf-cli.jar').replace(/\\/g, '/'); +console.log(`Copying JAR to ${destJarPath}`); +fs.copyFileSync(sourceJarPath, destJarPath); + +// Copy README.md, LICENSE, NOTICE, and THIRD_PARTY +const readmeSrc = path.resolve(rootDir, '../../README.md'); +const licenseSrc = path.resolve(rootDir, '../../LICENSE'); +const noticeSrc = path.resolve(rootDir, '../../NOTICE'); +const thirdPartySrc = path.resolve(rootDir, '../../THIRD_PARTY'); + +const readmeDest = path.join(rootDir, 'README.md').replace(/\\/g, '/'); +const licenseDest = path.join(rootDir, 'LICENSE').replace(/\\/g, '/'); +const noticeDest = path.join(rootDir, 'NOTICE').replace(/\\/g, '/'); +const thirdPartyDest = path.join(rootDir, 'THIRD_PARTY').replace(/\\/g, '/'); + +console.log(`Copying README.md to ${readmeDest}`); +fs.copyFileSync(readmeSrc, readmeDest); + +console.log(`Copying LICENSE to ${licenseDest}`); +fs.copyFileSync(licenseSrc, licenseDest); + +console.log(`Copying NOTICE to ${noticeDest}`); +fs.copyFileSync(noticeSrc, noticeDest); + +console.log(`Copying THIRD_PARTY directory to ${thirdPartyDest}`); +if (fs.existsSync(thirdPartyDest)) { + fs.rmSync(thirdPartyDest, { recursive: true, force: true }); +} +fs.cpSync(thirdPartySrc, thirdPartyDest, { recursive: true }); + +console.log('Package preparation complete.'); diff --git a/node/opendataloader-pdf/src/cli-options.generated.ts b/node/opendataloader-pdf/src/cli-options.generated.ts new file mode 100644 index 0000000..20581b1 --- /dev/null +++ b/node/opendataloader-pdf/src/cli-options.generated.ts @@ -0,0 +1,41 @@ +// AUTO-GENERATED FROM options.json - DO NOT EDIT DIRECTLY +// Run `npm run generate-options` to regenerate + +import { Command } from 'commander'; + +/** + * Register all CLI options on the given Commander program. + */ +export function registerCliOptions(program: Command): void { + program.option('-o, --output-dir ', 'Directory where output files are written. Default: input file directory'); + program.option('-p, --password ', 'Password for encrypted PDF files'); + program.option('-f, --format ', 'Output formats (comma-separated). Values: json, text, html, pdf, markdown, tagged-pdf. Default: json. For HTML inside Markdown use --markdown-with-html. For image extraction control use --image-output.'); + program.option('-q, --quiet', 'Suppress console logging output'); + program.option('--content-safety-off ', 'Disable content safety filters. Values: all, hidden-text, off-page, tiny, hidden-ocg'); + program.option('--sanitize', 'Enable sensitive data sanitization. Replaces emails, phone numbers, IPs, credit cards, and URLs with placeholders'); + program.option('--keep-line-breaks', 'Preserve original line breaks in extracted text'); + program.option('--replace-invalid-chars ', 'Replacement character for invalid/unrecognized characters. Default: space'); + program.option('--use-struct-tree', 'Use PDF structure tree (tagged PDF) for reading order and semantic structure. Output quality depends on tag quality'); + program.option('--table-method ', 'Table detection method. Values: default (border-based), cluster (border + cluster). Default: default'); + program.option('--reading-order ', 'Reading order algorithm. Values: off, xycut. Default: xycut'); + program.option('--markdown-page-separator ', 'Separator between pages in Markdown output. Use %page-number% for page numbers. Default: none'); + program.option('--markdown-with-html', 'Allow HTML tags inside Markdown output for complex structures such as multi-row-span tables. Implies --format markdown.'); + program.option('--text-page-separator ', 'Separator between pages in text output. Use %page-number% for page numbers. Default: none'); + program.option('--html-page-separator ', 'Separator between pages in HTML output. Use %page-number% for page numbers. Default: none'); + program.option('--image-output ', 'Image output mode. Values: off (no images), embedded (Base64 data URIs), external (file references). Default: external'); + program.option('--image-format ', 'Output format for extracted images. Values: png, jpeg. Default: png'); + program.option('--image-dir ', 'Directory for extracted images (applies only with --image-output external)'); + program.option('--pages ', 'Pages to extract (e.g., "1,3,5-7"). Default: all pages'); + program.option('--include-header-footer', 'Include page headers and footers in output'); + program.option('--detect-strikethrough', 'Detect strikethrough text and wrap with ~~ in Markdown output or tag in HTML output (experimental)'); + program.option('--hybrid ', 'Hybrid backend (requires a running server). Quick start: pip install "opendataloader-pdf[hybrid]" && opendataloader-pdf-hybrid --port 5002. For remote servers use --hybrid-url. Values: off (default), docling-fast, hancom-ai'); + program.option('--hybrid-mode ', 'Hybrid triage mode. Values: auto (default, dynamic triage), full (skip triage, all pages to backend)'); + program.option('--hybrid-url ', 'Hybrid backend server URL (overrides default)'); + program.option('--hybrid-timeout ', 'Hybrid backend request timeout in milliseconds (0 = no timeout). Default: 0'); + program.option('--hybrid-fallback', 'Opt in to Java fallback on hybrid backend error (default: disabled)'); + program.option('--hybrid-hancom-ai-regionlist-strategy ', 'DLA label 7 (regionlist) handling. Requires --hybrid=hancom-ai. Values: table-first (default; check TSR overlap), list-only (skip TSR, always treat as list)'); + program.option('--hybrid-hancom-ai-ocr-strategy ', 'OCR strategy. Requires --hybrid=hancom-ai. Values: off (stream-only), auto (default; stream first, OCR fallback), force (OCR-only)'); + program.option('--hybrid-hancom-ai-image-cache ', 'Page image cache backing. Requires --hybrid=hancom-ai. Values: memory (default), disk'); + program.option('--to-stdout', 'Write output to stdout instead of file (single format only)'); + program.option('--threads ', 'Number of worker threads for per-page processing. Default: 1 (sequential, stable). Values >1 (experimental) run pages in parallel for faster throughput; output may vary slightly on some PDFs. Capped at the number of available CPU cores. Applies to the native Java pipeline only; ignored in --hybrid mode'); +} diff --git a/node/opendataloader-pdf/src/cli.ts b/node/opendataloader-pdf/src/cli.ts new file mode 100644 index 0000000..ddefef6 --- /dev/null +++ b/node/opendataloader-pdf/src/cli.ts @@ -0,0 +1,83 @@ +#!/usr/bin/env node +import { Command, CommanderError } from 'commander'; +import { _runForCli } from './index.js'; +import { CliOptions, buildConvertOptions } from './convert-options.generated.js'; +import { registerCliOptions } from './cli-options.generated.js'; + +function createProgram(): Command { + const program = new Command(); + + program + .name('opendataloader-pdf') + .usage('[options] ') + .description('Convert PDFs using the OpenDataLoader CLI.') + .showHelpAfterError("Use '--help' to see available options.") + .showSuggestionAfterError(false) + .argument('', 'Input files or directories to convert'); + + // Register CLI options from auto-generated file + registerCliOptions(program); + + program.configureOutput({ + writeErr: (str) => { + console.error(str.trimEnd()); + }, + outputError: (str, write) => { + write(str); + }, + }); + + return program; +} + +async function main(): Promise { + const program = createProgram(); + + program.exitOverride(); + + try { + program.parse(process.argv); + } catch (err) { + if (err instanceof CommanderError) { + if (err.code === 'commander.helpDisplayed') { + return 0; + } + return err.exitCode ?? 1; + } + + const message = err instanceof Error ? err.message : String(err); + console.error(message); + console.error("Use '--help' to see available options."); + return 1; + } + + const cliOptions = program.opts(); + const inputPaths = program.args; + const convertOptions = buildConvertOptions(cliOptions); + + try { + // _runForCli streams stdout/stderr to the parent process as they arrive; + // we deliberately do not re-print anything here. (Issue #398.) + await _runForCli(inputPaths, convertOptions); + return 0; + } catch (err) { + // Subprocess-exit errors are already on the user's terminal via the live + // stderr stream — re-printing would duplicate output and risk leaking + // anything sensitive Java logged (e.g. a --password value echoed by an + // underlying library). Wrapper-side failures (JAR not found, java not in + // PATH, bad input path) still need to be surfaced. + const isJavaExit = + err instanceof Error && (err as Error & { isJavaExit?: boolean }).isJavaExit === true; + if (!isJavaExit) { + const message = err instanceof Error ? err.message : String(err); + console.error(message); + } + return 1; + } +} + +main().then((code) => { + if (code !== 0) { + process.exit(code); + } +}); diff --git a/node/opendataloader-pdf/src/convert-options.generated.ts b/node/opendataloader-pdf/src/convert-options.generated.ts new file mode 100644 index 0000000..d15d56c --- /dev/null +++ b/node/opendataloader-pdf/src/convert-options.generated.ts @@ -0,0 +1,325 @@ +// AUTO-GENERATED FROM options.json - DO NOT EDIT DIRECTLY +// Run `npm run generate-options` to regenerate + +/** + * Options for the convert function. + */ +export interface ConvertOptions { + /** Directory where output files are written. Default: input file directory */ + outputDir?: string; + /** Password for encrypted PDF files */ + password?: string; + /** Output formats (comma-separated). Values: json, text, html, pdf, markdown, tagged-pdf. Default: json. For HTML inside Markdown use --markdown-with-html. For image extraction control use --image-output. */ + format?: string | string[]; + /** Suppress console logging output */ + quiet?: boolean; + /** Disable content safety filters. Values: all, hidden-text, off-page, tiny, hidden-ocg */ + contentSafetyOff?: string | string[]; + /** Enable sensitive data sanitization. Replaces emails, phone numbers, IPs, credit cards, and URLs with placeholders */ + sanitize?: boolean; + /** Preserve original line breaks in extracted text */ + keepLineBreaks?: boolean; + /** Replacement character for invalid/unrecognized characters. Default: space */ + replaceInvalidChars?: string; + /** Use PDF structure tree (tagged PDF) for reading order and semantic structure. Output quality depends on tag quality */ + useStructTree?: boolean; + /** Table detection method. Values: default (border-based), cluster (border + cluster). Default: default */ + tableMethod?: string; + /** Reading order algorithm. Values: off, xycut. Default: xycut */ + readingOrder?: string; + /** Separator between pages in Markdown output. Use %page-number% for page numbers. Default: none */ + markdownPageSeparator?: string; + /** Allow HTML tags inside Markdown output for complex structures such as multi-row-span tables. Implies --format markdown. */ + markdownWithHtml?: boolean; + /** Separator between pages in text output. Use %page-number% for page numbers. Default: none */ + textPageSeparator?: string; + /** Separator between pages in HTML output. Use %page-number% for page numbers. Default: none */ + htmlPageSeparator?: string; + /** Image output mode. Values: off (no images), embedded (Base64 data URIs), external (file references). Default: external */ + imageOutput?: string; + /** Output format for extracted images. Values: png, jpeg. Default: png */ + imageFormat?: string; + /** Directory for extracted images (applies only with --image-output external) */ + imageDir?: string; + /** Pages to extract (e.g., "1,3,5-7"). Default: all pages */ + pages?: string; + /** Include page headers and footers in output */ + includeHeaderFooter?: boolean; + /** Detect strikethrough text and wrap with ~~ in Markdown output or tag in HTML output (experimental) */ + detectStrikethrough?: boolean; + /** Hybrid backend (requires a running server). Quick start: pip install "opendataloader-pdf[hybrid]" && opendataloader-pdf-hybrid --port 5002. For remote servers use --hybrid-url. Values: off (default), docling-fast, hancom-ai */ + hybrid?: string; + /** Hybrid triage mode. Values: auto (default, dynamic triage), full (skip triage, all pages to backend) */ + hybridMode?: string; + /** Hybrid backend server URL (overrides default) */ + hybridUrl?: string; + /** Hybrid backend request timeout in milliseconds (0 = no timeout). Default: 0 */ + hybridTimeout?: string; + /** Opt in to Java fallback on hybrid backend error (default: disabled) */ + hybridFallback?: boolean; + /** DLA label 7 (regionlist) handling. Requires --hybrid=hancom-ai. Values: table-first (default; check TSR overlap), list-only (skip TSR, always treat as list) */ + hybridHancomAiRegionlistStrategy?: string; + /** OCR strategy. Requires --hybrid=hancom-ai. Values: off (stream-only), auto (default; stream first, OCR fallback), force (OCR-only) */ + hybridHancomAiOcrStrategy?: string; + /** Page image cache backing. Requires --hybrid=hancom-ai. Values: memory (default), disk */ + hybridHancomAiImageCache?: string; + /** Write output to stdout instead of file (single format only) */ + toStdout?: boolean; + /** Number of worker threads for per-page processing. Default: 1 (sequential, stable). Values >1 (experimental) run pages in parallel for faster throughput; output may vary slightly on some PDFs. Capped at the number of available CPU cores. Applies to the native Java pipeline only; ignored in --hybrid mode */ + threads?: string; +} + +/** + * Options as parsed from CLI (all values are strings from commander). + */ +export interface CliOptions { + outputDir?: string; + password?: string; + format?: string; + quiet?: boolean; + contentSafetyOff?: string; + sanitize?: boolean; + keepLineBreaks?: boolean; + replaceInvalidChars?: string; + useStructTree?: boolean; + tableMethod?: string; + readingOrder?: string; + markdownPageSeparator?: string; + markdownWithHtml?: boolean; + textPageSeparator?: string; + htmlPageSeparator?: string; + imageOutput?: string; + imageFormat?: string; + imageDir?: string; + pages?: string; + includeHeaderFooter?: boolean; + detectStrikethrough?: boolean; + hybrid?: string; + hybridMode?: string; + hybridUrl?: string; + hybridTimeout?: string; + hybridFallback?: boolean; + hybridHancomAiRegionlistStrategy?: string; + hybridHancomAiOcrStrategy?: string; + hybridHancomAiImageCache?: string; + toStdout?: boolean; + threads?: string; +} + +/** + * Convert CLI options to ConvertOptions. + */ +export function buildConvertOptions(cliOptions: CliOptions): ConvertOptions { + const convertOptions: ConvertOptions = {}; + + if (cliOptions.outputDir) { + convertOptions.outputDir = cliOptions.outputDir; + } + if (cliOptions.password) { + convertOptions.password = cliOptions.password; + } + if (cliOptions.format) { + convertOptions.format = cliOptions.format; + } + if (cliOptions.quiet) { + convertOptions.quiet = true; + } + if (cliOptions.contentSafetyOff) { + convertOptions.contentSafetyOff = cliOptions.contentSafetyOff; + } + if (cliOptions.sanitize) { + convertOptions.sanitize = true; + } + if (cliOptions.keepLineBreaks) { + convertOptions.keepLineBreaks = true; + } + if (cliOptions.replaceInvalidChars) { + convertOptions.replaceInvalidChars = cliOptions.replaceInvalidChars; + } + if (cliOptions.useStructTree) { + convertOptions.useStructTree = true; + } + if (cliOptions.tableMethod) { + convertOptions.tableMethod = cliOptions.tableMethod; + } + if (cliOptions.readingOrder) { + convertOptions.readingOrder = cliOptions.readingOrder; + } + if (cliOptions.markdownPageSeparator) { + convertOptions.markdownPageSeparator = cliOptions.markdownPageSeparator; + } + if (cliOptions.markdownWithHtml) { + convertOptions.markdownWithHtml = true; + } + if (cliOptions.textPageSeparator) { + convertOptions.textPageSeparator = cliOptions.textPageSeparator; + } + if (cliOptions.htmlPageSeparator) { + convertOptions.htmlPageSeparator = cliOptions.htmlPageSeparator; + } + if (cliOptions.imageOutput) { + convertOptions.imageOutput = cliOptions.imageOutput; + } + if (cliOptions.imageFormat) { + convertOptions.imageFormat = cliOptions.imageFormat; + } + if (cliOptions.imageDir) { + convertOptions.imageDir = cliOptions.imageDir; + } + if (cliOptions.pages) { + convertOptions.pages = cliOptions.pages; + } + if (cliOptions.includeHeaderFooter) { + convertOptions.includeHeaderFooter = true; + } + if (cliOptions.detectStrikethrough) { + convertOptions.detectStrikethrough = true; + } + if (cliOptions.hybrid) { + convertOptions.hybrid = cliOptions.hybrid; + } + if (cliOptions.hybridMode) { + convertOptions.hybridMode = cliOptions.hybridMode; + } + if (cliOptions.hybridUrl) { + convertOptions.hybridUrl = cliOptions.hybridUrl; + } + if (cliOptions.hybridTimeout) { + convertOptions.hybridTimeout = cliOptions.hybridTimeout; + } + if (cliOptions.hybridFallback) { + convertOptions.hybridFallback = true; + } + if (cliOptions.hybridHancomAiRegionlistStrategy) { + convertOptions.hybridHancomAiRegionlistStrategy = cliOptions.hybridHancomAiRegionlistStrategy; + } + if (cliOptions.hybridHancomAiOcrStrategy) { + convertOptions.hybridHancomAiOcrStrategy = cliOptions.hybridHancomAiOcrStrategy; + } + if (cliOptions.hybridHancomAiImageCache) { + convertOptions.hybridHancomAiImageCache = cliOptions.hybridHancomAiImageCache; + } + if (cliOptions.toStdout) { + convertOptions.toStdout = true; + } + if (cliOptions.threads) { + convertOptions.threads = cliOptions.threads; + } + + return convertOptions; +} + +/** + * Build CLI arguments array from ConvertOptions. + */ +export function buildArgs(options: ConvertOptions): string[] { + const args: string[] = []; + + if (options.outputDir) { + args.push('--output-dir', options.outputDir); + } + if (options.password) { + args.push('--password', options.password); + } + if (options.format) { + if (Array.isArray(options.format)) { + if (options.format.length > 0) { + args.push('--format', options.format.join(',')); + } + } else { + args.push('--format', options.format); + } + } + if (options.quiet) { + args.push('--quiet'); + } + if (options.contentSafetyOff) { + if (Array.isArray(options.contentSafetyOff)) { + if (options.contentSafetyOff.length > 0) { + args.push('--content-safety-off', options.contentSafetyOff.join(',')); + } + } else { + args.push('--content-safety-off', options.contentSafetyOff); + } + } + if (options.sanitize) { + args.push('--sanitize'); + } + if (options.keepLineBreaks) { + args.push('--keep-line-breaks'); + } + if (options.replaceInvalidChars) { + args.push('--replace-invalid-chars', options.replaceInvalidChars); + } + if (options.useStructTree) { + args.push('--use-struct-tree'); + } + if (options.tableMethod) { + args.push('--table-method', options.tableMethod); + } + if (options.readingOrder) { + args.push('--reading-order', options.readingOrder); + } + if (options.markdownPageSeparator) { + args.push('--markdown-page-separator', options.markdownPageSeparator); + } + if (options.markdownWithHtml) { + args.push('--markdown-with-html'); + } + if (options.textPageSeparator) { + args.push('--text-page-separator', options.textPageSeparator); + } + if (options.htmlPageSeparator) { + args.push('--html-page-separator', options.htmlPageSeparator); + } + if (options.imageOutput) { + args.push('--image-output', options.imageOutput); + } + if (options.imageFormat) { + args.push('--image-format', options.imageFormat); + } + if (options.imageDir) { + args.push('--image-dir', options.imageDir); + } + if (options.pages) { + args.push('--pages', options.pages); + } + if (options.includeHeaderFooter) { + args.push('--include-header-footer'); + } + if (options.detectStrikethrough) { + args.push('--detect-strikethrough'); + } + if (options.hybrid) { + args.push('--hybrid', options.hybrid); + } + if (options.hybridMode) { + args.push('--hybrid-mode', options.hybridMode); + } + if (options.hybridUrl) { + args.push('--hybrid-url', options.hybridUrl); + } + if (options.hybridTimeout) { + args.push('--hybrid-timeout', options.hybridTimeout); + } + if (options.hybridFallback) { + args.push('--hybrid-fallback'); + } + if (options.hybridHancomAiRegionlistStrategy) { + args.push('--hybrid-hancom-ai-regionlist-strategy', options.hybridHancomAiRegionlistStrategy); + } + if (options.hybridHancomAiOcrStrategy) { + args.push('--hybrid-hancom-ai-ocr-strategy', options.hybridHancomAiOcrStrategy); + } + if (options.hybridHancomAiImageCache) { + args.push('--hybrid-hancom-ai-image-cache', options.hybridHancomAiImageCache); + } + if (options.toStdout) { + args.push('--to-stdout'); + } + if (options.threads) { + args.push('--threads', options.threads); + } + + return args; +} diff --git a/node/opendataloader-pdf/src/index.ts b/node/opendataloader-pdf/src/index.ts new file mode 100644 index 0000000..25f39d2 --- /dev/null +++ b/node/opendataloader-pdf/src/index.ts @@ -0,0 +1,246 @@ +import { spawn } from 'child_process'; +import * as path from 'path'; +import * as fs from 'fs'; +import { StringDecoder } from 'string_decoder'; +import { fileURLToPath } from 'url'; + +// Re-export types and utilities from auto-generated file +export type { ConvertOptions } from './convert-options.generated.js'; +export { buildArgs } from './convert-options.generated.js'; +import type { ConvertOptions } from './convert-options.generated.js'; +import { buildArgs } from './convert-options.generated.js'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +const JAR_NAME = 'opendataloader-pdf-cli.jar'; + +interface JarExecutionOptions { + /** + * When true, forwards Java's stdout and stderr chunks to the parent + * process in real time as well as accumulating them. Used by the bundled + * CLI so long-running conversions show progress as it happens. + */ + streamOutput?: boolean; +} + +function executeJar(args: string[], executionOptions: JarExecutionOptions = {}): Promise { + const { streamOutput = false } = executionOptions; + + return new Promise((resolve, reject) => { + const jarPath = path.join(__dirname, '..', 'lib', JAR_NAME); + + if (!fs.existsSync(jarPath)) { + return reject( + new Error(`JAR file not found at ${jarPath}. Please run the build script first.`), + ); + } + + const command = 'java'; + // Force headless AWT so macOS doesn't surface a Dock icon (and steal focus) + // every time the JVM touches ImageIO/PDFBox rendering. Safe on all OSes — + // the CLI never opens a UI window, only manipulates BufferedImages. + const commandArgs = [ + '-Djava.awt.headless=true', + '-Dapple.awt.UIElement=true', + '-jar', + jarPath, + ...args, + ]; + + const javaProcess = spawn(command, commandArgs); + + let stdout = ''; + let stderr = ''; + // StringDecoder buffers incomplete multi-byte UTF-8 sequences across + // chunk boundaries — Buffer.toString() alone would emit replacement + // characters when, e.g., a 3-byte Korean codepoint splits across two + // 'data' events. One decoder per stream so they don't share state. + const stdoutDecoder = new StringDecoder('utf8'); + const stderrDecoder = new StringDecoder('utf8'); + + javaProcess.stdout.on('data', (data: Buffer) => { + const chunk = stdoutDecoder.write(data); + if (chunk.length === 0) return; + if (streamOutput) { + // Stream-only: don't also accumulate, or a multi-hour conversion + // would buffer its entire (potentially gigabyte) stdout in memory + // for no consumer. + process.stdout.write(chunk); + } else { + stdout += chunk; + } + }); + + javaProcess.stderr.on('data', (data: Buffer) => { + const chunk = stderrDecoder.write(data); + if (chunk.length === 0) return; + if (streamOutput) { + process.stderr.write(chunk); + } + // stderr is always accumulated (progress logs are small and we need + // them for error messages on non-zero exit). + stderr += chunk; + }); + + javaProcess.on('close', (code) => { + // Flush any trailing bytes the decoder is still holding (always emit + // them — if we drop them on error paths, error messages with non-ASCII + // characters lose their tail). + const stdoutTail = stdoutDecoder.end(); + const stderrTail = stderrDecoder.end(); + if (stdoutTail.length > 0) { + if (streamOutput) { + process.stdout.write(stdoutTail); + } else { + stdout += stdoutTail; + } + } + if (stderrTail.length > 0) { + if (streamOutput) process.stderr.write(stderrTail); + stderr += stderrTail; + } + + if (code === 0) { + resolve(stdout); + } else { + const errorOutput = stderr || stdout; + const error = new Error( + `The opendataloader-pdf CLI exited with code ${code}.\n\n${errorOutput}`, + ); + // Tag so the CLI can suppress re-printing this message — Java's + // stderr was already streamed live to the parent in CLI mode, and + // re-printing risks leaking anything sensitive Java logged + // (e.g. a --password value echoed by an underlying library). + (error as Error & { isJavaExit?: boolean }).isJavaExit = true; + reject(error); + } + }); + + javaProcess.on('error', (err: Error) => { + if (err.message.includes('ENOENT')) { + reject( + new Error( + "'java' command not found. Please ensure Java is installed and in your system's PATH.", + ), + ); + } else { + reject(err); + } + }); + }); +} + +function buildJarArgs( + inputPaths: string | string[], + options: ConvertOptions, +): string[] | Error { + const inputList = Array.isArray(inputPaths) ? inputPaths : [inputPaths]; + if (inputList.length === 0) { + return new Error('At least one input path must be provided.'); + } + + for (const input of inputList) { + if (!fs.existsSync(input)) { + return new Error(`Input file or folder not found: ${input}`); + } + } + + return [...inputList, ...buildArgs(options)]; +} + +export function convert( + inputPaths: string | string[], + options: ConvertOptions = {}, +): Promise { + const argsOrError = buildJarArgs(inputPaths, options); + if (argsOrError instanceof Error) { + return Promise.reject(argsOrError); + } + // Library API: never streams to the parent process. Returns the full stdout + // string so callers can do `const out = await convert(...)` without surprise + // side-effects on process.stdout / process.stderr. + return executeJar(argsOrError, { streamOutput: false }); +} + +/** + * Internal entry point used by the bundled CLI. Streams Java's stdout and + * stderr to the parent process in real time (so long-running conversions like + * hybrid mode show progress as it happens) and resolves without a stdout + * payload — preventing the caller from re-printing what was already streamed. + * + * Not part of the public API: do not import this from application code. Use + * {@link convert} instead. + * + * @internal + */ +export async function _runForCli( + inputPaths: string | string[], + options: ConvertOptions = {}, +): Promise { + const argsOrError = buildJarArgs(inputPaths, options); + if (argsOrError instanceof Error) { + throw argsOrError; + } + await executeJar(argsOrError, { streamOutput: true }); +} + +/** + * @deprecated Use `convert()` and `ConvertOptions` instead. This function will be removed in a future version. + */ +export interface RunOptions { + outputFolder?: string; + password?: string; + replaceInvalidChars?: string; + generateMarkdown?: boolean; + generateHtml?: boolean; + generateAnnotatedPdf?: boolean; + keepLineBreaks?: boolean; + contentSafetyOff?: string; + htmlInMarkdown?: boolean; + addImageToMarkdown?: boolean; + noJson?: boolean; + debug?: boolean; + useStructTree?: boolean; +} + +/** + * @deprecated Use `convert()` instead. This function will be removed in a future version. + */ +export function run(inputPath: string, options: RunOptions = {}): Promise { + console.warn( + 'Warning: run() is deprecated and will be removed in a future version. Use convert() instead.', + ); + + // Build format array based on legacy boolean options + const formats: string[] = []; + if (!options.noJson) { + formats.push('json'); + } + if (options.generateMarkdown) { + if (options.addImageToMarkdown) { + formats.push('markdown-with-images'); + } else if (options.htmlInMarkdown) { + formats.push('markdown-with-html'); + } else { + formats.push('markdown'); + } + } + if (options.generateHtml) { + formats.push('html'); + } + if (options.generateAnnotatedPdf) { + formats.push('pdf'); + } + + return convert(inputPath, { + outputDir: options.outputFolder, + password: options.password, + replaceInvalidChars: options.replaceInvalidChars, + keepLineBreaks: options.keepLineBreaks, + contentSafetyOff: options.contentSafetyOff, + useStructTree: options.useStructTree, + format: formats.length > 0 ? formats : undefined, + quiet: !options.debug, + }); +} diff --git a/node/opendataloader-pdf/test/convert-options.test.ts b/node/opendataloader-pdf/test/convert-options.test.ts new file mode 100644 index 0000000..16306cc --- /dev/null +++ b/node/opendataloader-pdf/test/convert-options.test.ts @@ -0,0 +1,227 @@ +/** + * Unit tests for auto-generated convert-options functions + */ + +import { describe, it, expect } from 'vitest'; +import { + buildArgs, + buildConvertOptions, + ConvertOptions, + CliOptions, +} from '../src/convert-options.generated'; + +describe('buildArgs()', () => { + it('should return empty array for empty options', () => { + const args = buildArgs({}); + expect(args).toEqual([]); + }); + + it('should handle string options', () => { + const args = buildArgs({ + outputDir: '/output', + password: 'secret', + readingOrder: 'xycut', + }); + expect(args).toEqual([ + '--output-dir', '/output', + '--password', 'secret', + '--reading-order', 'xycut', + ]); + }); + + it('should handle boolean options', () => { + const args = buildArgs({ + quiet: true, + keepLineBreaks: true, + }); + expect(args).toEqual([ + '--quiet', + '--keep-line-breaks', + ]); + }); + + it('should handle sanitize boolean', () => { + const options: ConvertOptions = { sanitize: true }; + const args = buildArgs(options); + expect(args).toEqual(['--sanitize']); + }); + + it('should not include sanitize when false', () => { + const options: ConvertOptions = { sanitize: false }; + const args = buildArgs(options); + expect(args).toEqual([]); + }); + + it('should handle list options with string value', () => { + const args = buildArgs({ + format: 'json,markdown', + contentSafetyOff: 'all', + }); + expect(args).toEqual([ + '--format', 'json,markdown', + '--content-safety-off', 'all', + ]); + }); + + it('should handle list options with array value', () => { + const args = buildArgs({ + format: ['json', 'markdown', 'html'], + contentSafetyOff: ['hidden-text', 'off-page'], + }); + expect(args).toEqual([ + '--format', 'json,markdown,html', + '--content-safety-off', 'hidden-text,off-page', + ]); + }); + + it('should handle all options together', () => { + const options: ConvertOptions = { + outputDir: '/output', + password: 'secret', + format: ['json', 'markdown'], + quiet: true, + contentSafetyOff: 'all', + keepLineBreaks: true, + replaceInvalidChars: '_', + useStructTree: true, + tableMethod: 'cluster', + readingOrder: 'xycut', + markdownPageSeparator: '---', + textPageSeparator: '\\n\\n', + htmlPageSeparator: '
    ', + imageOutput: 'external', + imageFormat: 'jpeg', + sanitize: true, + }; + + const args = buildArgs(options); + + expect(args).toContain('--output-dir'); + expect(args).toContain('/output'); + expect(args).toContain('--password'); + expect(args).toContain('secret'); + expect(args).toContain('--format'); + expect(args).toContain('json,markdown'); + expect(args).toContain('--quiet'); + expect(args).toContain('--content-safety-off'); + expect(args).toContain('all'); + expect(args).toContain('--keep-line-breaks'); + expect(args).toContain('--replace-invalid-chars'); + expect(args).toContain('_'); + expect(args).toContain('--use-struct-tree'); + expect(args).toContain('--table-method'); + expect(args).toContain('cluster'); + expect(args).toContain('--reading-order'); + expect(args).toContain('xycut'); + expect(args).toContain('--markdown-page-separator'); + expect(args).toContain('---'); + expect(args).toContain('--image-output'); + expect(args).toContain('external'); + expect(args).toContain('--image-format'); + expect(args).toContain('jpeg'); + expect(args).toContain('--sanitize'); + }); + + it('should not include undefined options', () => { + const args = buildArgs({ + outputDir: '/output', + quiet: false, + keepLineBreaks: false, + }); + expect(args).toEqual(['--output-dir', '/output']); + }); + + it('should skip empty arrays for list options', () => { + const args = buildArgs({ + format: [], + contentSafetyOff: [], + outputDir: '/output', + }); + expect(args).toEqual(['--output-dir', '/output']); + }); +}); + +describe('buildConvertOptions()', () => { + it('should return empty object for empty CLI options', () => { + const result = buildConvertOptions({}); + expect(result).toEqual({}); + }); + + it('should convert string options', () => { + const cliOptions: CliOptions = { + outputDir: '/output', + password: 'secret', + readingOrder: 'xycut', + imageFormat: 'png', + }; + const result = buildConvertOptions(cliOptions); + expect(result).toEqual({ + outputDir: '/output', + password: 'secret', + readingOrder: 'xycut', + imageFormat: 'png', + }); + }); + + it('should convert boolean options', () => { + const cliOptions: CliOptions = { + quiet: true, + keepLineBreaks: true, + useStructTree: true, + }; + const result = buildConvertOptions(cliOptions); + expect(result).toEqual({ + quiet: true, + keepLineBreaks: true, + useStructTree: true, + }); + }); + + it('should not include false boolean options', () => { + const cliOptions: CliOptions = { + outputDir: '/output', + quiet: false, + keepLineBreaks: false, + }; + const result = buildConvertOptions(cliOptions); + expect(result).toEqual({ + outputDir: '/output', + }); + }); + + it('should pass through all provided options', () => { + const cliOptions: CliOptions = { + outputDir: '/output', + password: 'secret', + format: 'json,markdown', + quiet: true, + contentSafetyOff: 'all', + keepLineBreaks: true, + replaceInvalidChars: '_', + useStructTree: true, + tableMethod: 'cluster', + readingOrder: 'xycut', + markdownPageSeparator: '---', + textPageSeparator: '\\n', + htmlPageSeparator: '
    ', + imageOutput: 'external', + imageFormat: 'jpeg', + }; + const result = buildConvertOptions(cliOptions); + expect(result.outputDir).toBe('/output'); + expect(result.password).toBe('secret'); + expect(result.format).toBe('json,markdown'); + expect(result.quiet).toBe(true); + expect(result.contentSafetyOff).toBe('all'); + expect(result.keepLineBreaks).toBe(true); + expect(result.replaceInvalidChars).toBe('_'); + expect(result.useStructTree).toBe(true); + expect(result.tableMethod).toBe('cluster'); + expect(result.readingOrder).toBe('xycut'); + expect(result.markdownPageSeparator).toBe('---'); + expect(result.textPageSeparator).toBe('\\n'); + expect(result.htmlPageSeparator).toBe('
    '); + expect(result.imageOutput).toBe('external'); + expect(result.imageFormat).toBe('jpeg'); + }); +}); diff --git a/node/opendataloader-pdf/test/convert.integration.test.ts b/node/opendataloader-pdf/test/convert.integration.test.ts new file mode 100644 index 0000000..c307045 --- /dev/null +++ b/node/opendataloader-pdf/test/convert.integration.test.ts @@ -0,0 +1,43 @@ +/** + * Integration tests that actually run the JAR (slow) + */ + +import { describe, it, expect, beforeAll, afterAll } from 'vitest'; +import { convert } from '../src/index'; +import * as path from 'path'; +import * as fs from 'fs'; +import { fileURLToPath } from 'url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +const rootDir = path.resolve(__dirname, '..', '..', '..'); +const inputPdf = path.join(rootDir, 'samples', 'pdf', '1901.03003.pdf'); +const tempDir = path.join(__dirname, 'temp', 'convert'); + +describe('convert() integration', () => { + beforeAll(() => { + if (fs.existsSync(tempDir)) { + fs.rmSync(tempDir, { recursive: true, force: true }); + } + fs.mkdirSync(tempDir, { recursive: true }); + }); + + afterAll(() => { + if (fs.existsSync(tempDir)) { + fs.rmSync(tempDir, { recursive: true, force: true }); + } + }); + + it('should generate output file', async () => { + await convert(inputPdf, { + outputDir: tempDir, + format: 'json', + quiet: true, + }); + + const outputFile = path.join(tempDir, '1901.03003.json'); + expect(fs.existsSync(outputFile)).toBe(true); + expect(fs.statSync(outputFile).size).toBeGreaterThan(0); + }, 30000); +}); diff --git a/node/opendataloader-pdf/test/executeJar.unit.test.ts b/node/opendataloader-pdf/test/executeJar.unit.test.ts new file mode 100644 index 0000000..1f43b19 --- /dev/null +++ b/node/opendataloader-pdf/test/executeJar.unit.test.ts @@ -0,0 +1,288 @@ +/** + * Unit tests for the JAR execution layer's stdout/stderr handling. + * + * These tests use a fake child process (no real Java) so we can deterministically + * assert the streaming/buffering contract: + * - convert() — library API: never writes to process.stdout, returns full stdout + * - _runForCli() — CLI helper: streams stdout/stderr to the parent in real time, + * does not return the stdout payload (the caller must not re-print it) + * + * Issue #398 reproducer: a long-running conversion (think hybrid mode, 1h+) must + * surface progress via stderr without the CLI double-printing the result on close. + */ + +import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'; +import { EventEmitter } from 'events'; + +// Mock child_process so we control spawn() entirely (no real Java process). +vi.mock('child_process', () => ({ + spawn: vi.fn(), +})); + +// Mock fs so JAR-file-exists and input-file-exists checks always pass. +vi.mock('fs', () => ({ + existsSync: vi.fn().mockReturnValue(true), +})); + +import { spawn } from 'child_process'; +import { convert, _runForCli } from '../src/index'; + +class FakeProcess extends EventEmitter { + stdout = new EventEmitter() as EventEmitter & { pipe?: unknown }; + stderr = new EventEmitter() as EventEmitter & { pipe?: unknown }; +} + +function makeFakeSpawn(): { + proc: FakeProcess; + spawnMock: ReturnType; +} { + const proc = new FakeProcess(); + const spawnMock = spawn as unknown as ReturnType; + spawnMock.mockReturnValue(proc as unknown as ReturnType); + return { proc, spawnMock }; +} + +/** Yield to the microtask queue so Promise callbacks fire. */ +const tick = () => new Promise((r) => setImmediate(r)); + +describe('executeJar — library API (convert)', () => { + let stdoutSpy: ReturnType; + let stderrSpy: ReturnType; + + beforeEach(() => { + stdoutSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true); + stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation(() => true); + }); + + afterEach(() => { + stdoutSpy.mockRestore(); + stderrSpy.mockRestore(); + vi.clearAllMocks(); + }); + + it('returns the full stdout string on success', async () => { + const { proc } = makeFakeSpawn(); + const promise = convert('input.pdf', { quiet: true }); + + proc.stdout.emit('data', Buffer.from('Lorem ')); + proc.stdout.emit('data', Buffer.from('ipsum dolor')); + proc.emit('close', 0); + + await expect(promise).resolves.toBe('Lorem ipsum dolor'); + }); + + it('does not write to process.stdout (no streaming side-effect)', async () => { + const { proc } = makeFakeSpawn(); + const promise = convert('input.pdf', { quiet: true }); + + proc.stdout.emit('data', Buffer.from('result text')); + proc.emit('close', 0); + + await promise; + + expect(stdoutSpy).not.toHaveBeenCalled(); + }); + + it('does not write to process.stderr (no streaming side-effect)', async () => { + // Library callers should not have stderr leaked into their parent process. + // Java's --quiet silences stderr at the source for typical library use, + // but the contract holds even if Java emits to stderr. + const { proc } = makeFakeSpawn(); + const promise = convert('input.pdf', { quiet: true }); + + proc.stderr.emit('data', Buffer.from('정보: progress')); + proc.stdout.emit('data', Buffer.from('result')); + proc.emit('close', 0); + + await promise; + + expect(stderrSpy).not.toHaveBeenCalled(); + }); + + it('rejects with stderr in the error message on non-zero exit', async () => { + const { proc } = makeFakeSpawn(); + const promise = convert('input.pdf', { quiet: true }); + + proc.stderr.emit('data', Buffer.from('Java stack trace')); + proc.emit('close', 1); + + await expect(promise).rejects.toThrow(/exited with code 1/); + await expect(promise).rejects.toThrow(/Java stack trace/); + }); + + it('tags the rejection with isJavaExit so the CLI can suppress re-printing', async () => { + // The CLI relies on this tag to avoid duplicating stderr that was already + // streamed live (and to avoid re-surfacing anything sensitive Java logged). + // Library callers can ignore the tag — message and behavior are unchanged. + const { proc } = makeFakeSpawn(); + const promise = convert('input.pdf', { quiet: true }); + + proc.stderr.emit('data', Buffer.from('Bad password: hunter2')); + proc.emit('close', 1); + + await expect(promise).rejects.toMatchObject({ isJavaExit: true }); + }); + + it('reassembles multi-byte UTF-8 codepoints split across chunks', async () => { + // Java's progress logs are localized; '정' = 0xEC 0xA0 0x95 (3 bytes). + // If the OS hands us this codepoint split across two 'data' events, a + // naive Buffer.toString() emits two replacement characters. Streaming + // is meant to be byte-faithful to what Java printed, so we must + // reassemble across the boundary. + const { proc } = makeFakeSpawn(); + const promise = convert('input.pdf', { quiet: true }); + + proc.stdout.emit('data', Buffer.from([0xEC, 0xA0])); // first 2 bytes of '정' + proc.stdout.emit('data', Buffer.from([0x95])); // last byte of '정' + proc.stdout.emit('data', Buffer.from('보', 'utf8')); // a clean codepoint + proc.emit('close', 0); + + await expect(promise).resolves.toBe('정보'); + }); +}); + +describe('executeJar — CLI helper (_runForCli)', () => { + let stdoutSpy: ReturnType; + let stderrSpy: ReturnType; + + beforeEach(() => { + stdoutSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true); + stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation(() => true); + }); + + afterEach(() => { + stdoutSpy.mockRestore(); + stderrSpy.mockRestore(); + vi.clearAllMocks(); + }); + + it('streams stdout chunks to process.stdout in real time', async () => { + // The defining requirement for hybrid-mode-style long runs: the user must + // see output as it arrives, not buffered until the process closes. + const { proc } = makeFakeSpawn(); + const promise = _runForCli(['input.pdf']); + + proc.stdout.emit('data', Buffer.from('chunk1')); + await tick(); + expect(stdoutSpy).toHaveBeenCalledWith('chunk1'); + expect(stdoutSpy).toHaveBeenCalledTimes(1); + + proc.stdout.emit('data', Buffer.from('chunk2')); + await tick(); + expect(stdoutSpy).toHaveBeenCalledTimes(2); + + proc.emit('close', 0); + await promise; + + // Critical: process.stdout was called exactly twice — once per chunk. + // No extra "final flush" call. That's how we avoid the #398 double-write. + expect(stdoutSpy).toHaveBeenCalledTimes(2); + }); + + it('streams stderr chunks to process.stderr in real time', async () => { + const { proc } = makeFakeSpawn(); + const promise = _runForCli(['input.pdf']); + + proc.stderr.emit('data', Buffer.from('정보: Number of pages: 14\n')); + await tick(); + expect(stderrSpy).toHaveBeenCalledWith('정보: Number of pages: 14\n'); + + proc.stderr.emit('data', Buffer.from('정보: Processing 14 pages\n')); + await tick(); + expect(stderrSpy).toHaveBeenCalledTimes(2); + + proc.emit('close', 0); + await promise; + }); + + it('preserves true interleaving of stderr and stdout chunks as they arrive', async () => { + // Hybrid mode emits progress logs on stderr *throughout* the run, with + // result chunks landing on stdout in between. Both streams must reach the + // parent in arrival order without one buffering the other. + const { proc } = makeFakeSpawn(); + const promise = _runForCli(['input.pdf']); + + const calls: string[] = []; + stdoutSpy.mockImplementation(((chunk: Buffer) => { + calls.push('OUT:' + chunk.toString()); + return true; + }) as never); + stderrSpy.mockImplementation(((chunk: Buffer) => { + calls.push('ERR:' + chunk.toString()); + return true; + }) as never); + + proc.stderr.emit('data', Buffer.from('progress 1')); + await tick(); + proc.stdout.emit('data', Buffer.from('result A')); + await tick(); + proc.stderr.emit('data', Buffer.from('progress 2')); + await tick(); + proc.stdout.emit('data', Buffer.from('result B')); + await tick(); + proc.emit('close', 0); + await promise; + + expect(calls).toEqual([ + 'ERR:progress 1', + 'OUT:result A', + 'ERR:progress 2', + 'OUT:result B', + ]); + }); + + it('resolves without returning the stdout payload (caller must not re-print)', async () => { + // _runForCli's contract: streaming has the side-effect, the resolved value + // carries no stdout text. This is what blocks the CLI from double-printing. + const { proc } = makeFakeSpawn(); + const promise = _runForCli(['input.pdf']); + + proc.stdout.emit('data', Buffer.from('result text')); + proc.emit('close', 0); + + const resolved = await promise; + + expect(resolved).toBeUndefined(); + }); + + it('rejects with stderr in the error message on non-zero exit', async () => { + const { proc } = makeFakeSpawn(); + const promise = _runForCli(['input.pdf']); + + proc.stderr.emit('data', Buffer.from('boom')); + proc.emit('close', 2); + + await expect(promise).rejects.toThrow(/exited with code 2/); + await expect(promise).rejects.toThrow(/boom/); + }); + + it('forwards multi-byte UTF-8 to process.stderr without splitting codepoints', async () => { + // Defining the streaming contract for non-ASCII progress logs. Without a + // StringDecoder, splitting '정' (0xEC 0xA0 0x95) across two chunks would + // emit two replacement characters to the user's terminal — exactly the + // failure mode the comment in index.ts warns about. + const { proc } = makeFakeSpawn(); + const promise = _runForCli(['input.pdf']); + + const forwarded: string[] = []; + stderrSpy.mockImplementation(((chunk: string) => { + forwarded.push(chunk); + return true; + }) as never); + + proc.stderr.emit('data', Buffer.from([0xEC, 0xA0])); // partial '정' + await tick(); + proc.stderr.emit('data', Buffer.from([0x95])); // completes '정' + await tick(); + proc.stderr.emit('data', Buffer.from('보', 'utf8')); + await tick(); + proc.emit('close', 0); + await promise; + + // No replacement characters anywhere in what the user saw. + const joined = forwarded.join(''); + expect(joined).toBe('정보'); + expect(joined).not.toContain('�'); + }); +}); + diff --git a/node/opendataloader-pdf/test/run.integration.test.ts b/node/opendataloader-pdf/test/run.integration.test.ts new file mode 100644 index 0000000..47648c9 --- /dev/null +++ b/node/opendataloader-pdf/test/run.integration.test.ts @@ -0,0 +1,67 @@ +import { describe, it, expect, beforeAll, afterAll } from 'vitest'; +import { run, convert } from '../src/index'; +import * as path from 'path'; +import * as fs from 'fs'; +import { fileURLToPath } from 'url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +const rootDir = path.resolve(__dirname, '..', '..', '..'); +const inputPdf = path.join(rootDir, 'samples', 'pdf', '1901.03003.pdf'); +const tempDir = path.join(__dirname, 'temp', 'run'); + +describe('opendataloader-pdf', () => { + beforeAll(() => { + // Clean up previous test runs + if (fs.existsSync(tempDir)) { + fs.rmSync(tempDir, { recursive: true, force: true }); + } + fs.mkdirSync(tempDir, { recursive: true }); + }); + + afterAll(() => { + // Clean up after tests + if (fs.existsSync(tempDir)) { + fs.rmSync(tempDir, { recursive: true, force: true }); + } + }); + + it('should process PDF and generate markdown output', async () => { + console.log(`[TEST] Running opendataloader-pdf test...`); + console.log(`[TEST] Input PDF: ${inputPdf}`); + console.log(`[TEST] Output directory: ${tempDir}`); + + await run(inputPdf, { + outputFolder: tempDir, + generateMarkdown: true, + generateHtml: true, + generateAnnotatedPdf: true, + debug: true, + }); + + expect(fs.existsSync(path.join(tempDir, '1901.03003.json'))).toBe(true); + expect(fs.existsSync(path.join(tempDir, '1901.03003.md'))).toBe(true); + expect(fs.existsSync(path.join(tempDir, '1901.03003.html'))).toBe(true); + expect(fs.existsSync(path.join(tempDir, '1901.03003_annotated.pdf'))).toBe(true); + }, 30000); // 30 second timeout for this test + + it('should convert PDF with explicit formats using quiet mode', async () => { + const convertDir = path.join(tempDir, 'convert'); + if (fs.existsSync(convertDir)) { + fs.rmSync(convertDir, { recursive: true, force: true }); + } + fs.mkdirSync(convertDir); + + await convert([inputPdf], { + outputDir: convertDir, + format: ['json', 'text', 'html', 'pdf', 'markdown'], + }); + + expect(fs.existsSync(path.join(convertDir, '1901.03003.json'))).toBe(true); + expect(fs.existsSync(path.join(convertDir, '1901.03003.txt'))).toBe(true); + expect(fs.existsSync(path.join(convertDir, '1901.03003.html'))).toBe(true); + expect(fs.existsSync(path.join(convertDir, '1901.03003.md'))).toBe(true); + expect(fs.existsSync(path.join(convertDir, '1901.03003_annotated.pdf'))).toBe(true); + }, 30000); +}); diff --git a/node/opendataloader-pdf/test/streaming.integration.test.ts b/node/opendataloader-pdf/test/streaming.integration.test.ts new file mode 100644 index 0000000..131e93e --- /dev/null +++ b/node/opendataloader-pdf/test/streaming.integration.test.ts @@ -0,0 +1,169 @@ +/** + * Integration tests for the stdout/stderr streaming contract. + * + * Runs the bundled CLI as a real subprocess against a multi-page sample PDF. + * Asserts the user-facing behavior that mock unit tests cannot prove: + * - CLI never double-prints stdout (regression test for #398) + * - Java's progress logs reach the parent's stderr in real time, before the + * stdout payload finishes — the property that makes hour-long hybrid runs + * observable + * - Library API does not leak Java's output to the parent's stdout + */ + +import { describe, it, expect, beforeAll } from 'vitest'; +import { spawn, spawnSync } from 'child_process'; +import * as path from 'path'; +import * as fs from 'fs'; +import * as os from 'os'; +import { fileURLToPath, pathToFileURL } from 'url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +const rootDir = path.resolve(__dirname, '..', '..', '..'); +const cliPath = path.resolve(__dirname, '..', 'dist', 'cli.js'); +const jarPath = path.resolve(__dirname, '..', 'lib', 'opendataloader-pdf-cli.jar'); +const samplePdf = path.join(rootDir, 'samples', 'pdf', '2408.02509v1.pdf'); + +interface Capture { + stdout: string; + stderr: string; + /** Wall-clock ms (since process spawn) of each chunk we received. */ + timeline: Array<{ stream: 'out' | 'err'; size: number; at: number }>; + exitCode: number | null; +} + +function captureSubprocess(command: string, args: string[]): Promise { + return new Promise((resolve, reject) => { + const proc = spawn(command, args); + const start = Date.now(); + const cap: Capture = { stdout: '', stderr: '', timeline: [], exitCode: null }; + + proc.stdout.on('data', (chunk: Buffer) => { + cap.stdout += chunk.toString(); + cap.timeline.push({ stream: 'out', size: chunk.length, at: Date.now() - start }); + }); + proc.stderr.on('data', (chunk: Buffer) => { + cap.stderr += chunk.toString(); + cap.timeline.push({ stream: 'err', size: chunk.length, at: Date.now() - start }); + }); + proc.on('close', (code) => { + cap.exitCode = code; + resolve(cap); + }); + proc.on('error', reject); + }); +} + +const runCli = (args: string[]) => captureSubprocess('node', [cliPath, ...args]); +const runJar = (args: string[]) => captureSubprocess('java', ['-jar', jarPath, ...args]); + +describe('CLI streaming contract', () => { + beforeAll(() => { + // Self-contained: build dist on demand so `pnpm test` works on a fresh + // checkout without a separate `pnpm build` step. The JAR has to come from + // the Maven build (it's not something Vitest should rebuild), so we still + // surface a clear error if it's missing. + if (!fs.existsSync(cliPath)) { + const result = spawnSync( + 'pnpm', + ['exec', 'tsup', '--no-dts', 'src/index.ts', 'src/cli.ts', + '--format', 'esm,cjs', '--shims', '--out-dir', 'dist'], + { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' }, + ); + if (result.status !== 0) { + throw new Error('Failed to build dist for streaming integration test'); + } + } + if (!fs.existsSync(jarPath)) { + throw new Error( + `Bundled JAR not found at ${jarPath} — build the Java module first ` + + `(\`mvn package\` in java/, then \`pnpm run setup\` in this package).`, + ); + } + if (!fs.existsSync(samplePdf)) { + throw new Error(`Sample PDF not found at ${samplePdf}`); + } + }, 60000); + + it('prints --to-stdout output exactly once (regression for #398)', async () => { + // Ground truth: invoke the JAR directly with --quiet so stderr is empty + // and stdout carries only the result payload. The Node CLI must produce + // the same bytes — no more, no less. Comparing against the JAR rather + // than another Node-CLI run prevents a symmetric-mutation regression + // (e.g., trimming/appending in both code paths) from sneaking past. + const referenceCap = await runJar([samplePdf, '--quiet', '--format', 'text', '--to-stdout']); + expect(referenceCap.exitCode).toBe(0); + const referenceStdout = referenceCap.stdout; + expect(referenceStdout.length).toBeGreaterThan(1000); + + const cap = await runCli([samplePdf, '--format', 'text', '--to-stdout']); + expect(cap.exitCode).toBe(0); + + // Defining check: the no-flag Node CLI must produce the *exact same* + // stdout bytes as the JAR. Pre-fix this came out at 2x because of + // double-write. Length-only comparison would miss byte-substituting + // mutations of identical length, so we compare the full payload. + expect(cap.stdout).toBe(referenceStdout); + }, 60000); + + it('forwards Java progress logs to stderr in real time before stdout completes', async () => { + const cap = await runCli([samplePdf, '--format', 'text', '--to-stdout']); + expect(cap.exitCode).toBe(0); + + // Java emits a "Number of pages" line during preprocessing — long before + // text extraction finishes — to stderr. + expect(cap.stderr).toMatch(/Number of pages/); + + // The property that makes long runs observable: at least one stderr chunk + // arrives before stdout finishes streaming. We compare *event indices* + // (arrival order in cap.timeline) rather than millisecond timestamps to + // stay deterministic — two events scheduled in the same tick will share + // an `at` value but always have distinct indices. + const firstErrIdx = cap.timeline.findIndex((e) => e.stream === 'err'); + let lastOutIdx = -1; + for (let i = cap.timeline.length - 1; i >= 0; i--) { + if (cap.timeline[i].stream === 'out') { + lastOutIdx = i; + break; + } + } + expect(firstErrIdx).toBeGreaterThanOrEqual(0); + expect(lastOutIdx).toBeGreaterThanOrEqual(0); + expect(firstErrIdx).toBeLessThan(lastOutIdx); + }, 60000); + + it('library convert() does not leak to the parent process stdio', async () => { + // Spawn a tiny Node script that imports convert() and calls it. We capture + // *that* process's stdio: convert() must not write to stdout/stderr itself. + // The import specifier is a file:// URL so the harness works on Windows + // (where path.resolve yields backslashes that ESM rejects). + const distIndexUrl = pathToFileURL(path.resolve(__dirname, '..', 'dist', 'index.js')).href; + const harness = ` + import { convert } from '${distIndexUrl}'; + const out = await convert(${JSON.stringify(samplePdf)}, { + format: ['text'], toStdout: true, quiet: true, + }); + // One intended write at the end so we can distinguish "the marker" + // from any leakage caused by executeJar forwarding to process.stdout. + process.stdout.write('LEN=' + out.length + '\\n'); + `; + + // Place the harness in an isolated tmpdir — survives Ctrl-C / OOM cleanly + // (OS reaps tmpdir trees) instead of polluting the source tree. + const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'odl-pdf-issue398-')); + const tmpScript = path.join(tmpDir, 'harness.mjs'); + fs.writeFileSync(tmpScript, harness); + try { + const cap = await captureSubprocess('node', [tmpScript]); + expect(cap.exitCode).toBe(0); + // The only line on stdout must be our LEN= marker. Anything else means + // executeJar leaked Java's stdout into the parent. + expect(cap.stdout.trim().split('\n')).toHaveLength(1); + expect(cap.stdout).toMatch(/^LEN=\d+\n$/); + expect(cap.stderr).toBe(''); + } finally { + fs.rmSync(tmpDir, { recursive: true, force: true }); + } + }, 60000); +}); diff --git a/node/opendataloader-pdf/tsconfig.json b/node/opendataloader-pdf/tsconfig.json new file mode 100644 index 0000000..3f1958a --- /dev/null +++ b/node/opendataloader-pdf/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "target": "es2023", + "module": "NodeNext", + "moduleResolution": "NodeNext", + "outDir": "./dist", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "declaration": true, + "skipLibCheck": true, + "strict": true, + "stripInternal": true, + "types": ["node"], + "ignoreDeprecations": "6.0" + }, + "include": ["src/**/*.ts"] +} diff --git a/node/opendataloader-pdf/tsup.config.ts b/node/opendataloader-pdf/tsup.config.ts new file mode 100644 index 0000000..48f7904 --- /dev/null +++ b/node/opendataloader-pdf/tsup.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from 'tsup'; + +export default defineConfig({ + clean: true, + dts: true, + entry: ['src/index.ts', 'src/cli.ts'], + format: ['esm', 'cjs'], + shims: true, + sourcemap: true, + outDir: 'dist', + splitting: false, +}); diff --git a/node/opendataloader-pdf/vitest.config.ts b/node/opendataloader-pdf/vitest.config.ts new file mode 100644 index 0000000..be8fd28 --- /dev/null +++ b/node/opendataloader-pdf/vitest.config.ts @@ -0,0 +1,8 @@ +/// +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + // Your test configuration options go here + }, +}); diff --git a/options.json b/options.json new file mode 100644 index 0000000..35b1bb7 --- /dev/null +++ b/options.json @@ -0,0 +1,252 @@ +{ + "options": [ + { + "name": "output-dir", + "shortName": "o", + "type": "string", + "required": false, + "default": null, + "description": "Directory where output files are written. Default: input file directory" + }, + { + "name": "password", + "shortName": "p", + "type": "string", + "required": false, + "default": null, + "description": "Password for encrypted PDF files" + }, + { + "name": "format", + "shortName": "f", + "type": "string", + "required": false, + "default": null, + "description": "Output formats (comma-separated). Values: json, text, html, pdf, markdown, tagged-pdf. Default: json. For HTML inside Markdown use --markdown-with-html. For image extraction control use --image-output." + }, + { + "name": "quiet", + "shortName": "q", + "type": "boolean", + "required": false, + "default": false, + "description": "Suppress console logging output" + }, + { + "name": "content-safety-off", + "shortName": null, + "type": "string", + "required": false, + "default": null, + "description": "Disable content safety filters. Values: all, hidden-text, off-page, tiny, hidden-ocg" + }, + { + "name": "sanitize", + "shortName": null, + "type": "boolean", + "required": false, + "default": false, + "description": "Enable sensitive data sanitization. Replaces emails, phone numbers, IPs, credit cards, and URLs with placeholders" + }, + { + "name": "keep-line-breaks", + "shortName": null, + "type": "boolean", + "required": false, + "default": false, + "description": "Preserve original line breaks in extracted text" + }, + { + "name": "replace-invalid-chars", + "shortName": null, + "type": "string", + "required": false, + "default": " ", + "description": "Replacement character for invalid/unrecognized characters. Default: space" + }, + { + "name": "use-struct-tree", + "shortName": null, + "type": "boolean", + "required": false, + "default": false, + "description": "Use PDF structure tree (tagged PDF) for reading order and semantic structure. Output quality depends on tag quality" + }, + { + "name": "table-method", + "shortName": null, + "type": "string", + "required": false, + "default": "default", + "description": "Table detection method. Values: default (border-based), cluster (border + cluster). Default: default" + }, + { + "name": "reading-order", + "shortName": null, + "type": "string", + "required": false, + "default": "xycut", + "description": "Reading order algorithm. Values: off, xycut. Default: xycut" + }, + { + "name": "markdown-page-separator", + "shortName": null, + "type": "string", + "required": false, + "default": null, + "description": "Separator between pages in Markdown output. Use %page-number% for page numbers. Default: none" + }, + { + "name": "markdown-with-html", + "shortName": null, + "type": "boolean", + "required": false, + "default": false, + "description": "Allow HTML tags inside Markdown output for complex structures such as multi-row-span tables. Implies --format markdown." + }, + { + "name": "text-page-separator", + "shortName": null, + "type": "string", + "required": false, + "default": null, + "description": "Separator between pages in text output. Use %page-number% for page numbers. Default: none" + }, + { + "name": "html-page-separator", + "shortName": null, + "type": "string", + "required": false, + "default": null, + "description": "Separator between pages in HTML output. Use %page-number% for page numbers. Default: none" + }, + { + "name": "image-output", + "shortName": null, + "type": "string", + "required": false, + "default": "external", + "description": "Image output mode. Values: off (no images), embedded (Base64 data URIs), external (file references). Default: external" + }, + { + "name": "image-format", + "shortName": null, + "type": "string", + "required": false, + "default": "png", + "description": "Output format for extracted images. Values: png, jpeg. Default: png" + }, + { + "name": "image-dir", + "shortName": null, + "type": "string", + "required": false, + "default": null, + "description": "Directory for extracted images (applies only with --image-output external)" + }, + { + "name": "pages", + "shortName": null, + "type": "string", + "required": false, + "default": null, + "description": "Pages to extract (e.g., \"1,3,5-7\"). Default: all pages" + }, + { + "name": "include-header-footer", + "shortName": null, + "type": "boolean", + "required": false, + "default": false, + "description": "Include page headers and footers in output" + }, + { + "name": "detect-strikethrough", + "shortName": null, + "type": "boolean", + "required": false, + "default": false, + "description": "Detect strikethrough text and wrap with ~~ in Markdown output or tag in HTML output (experimental)" + }, + { + "name": "hybrid", + "shortName": null, + "type": "string", + "required": false, + "default": "off", + "description": "Hybrid backend (requires a running server). Quick start: pip install \"opendataloader-pdf[hybrid]\" && opendataloader-pdf-hybrid --port 5002. For remote servers use --hybrid-url. Values: off (default), docling-fast, hancom-ai" + }, + { + "name": "hybrid-mode", + "shortName": null, + "type": "string", + "required": false, + "default": "auto", + "description": "Hybrid triage mode. Values: auto (default, dynamic triage), full (skip triage, all pages to backend)" + }, + { + "name": "hybrid-url", + "shortName": null, + "type": "string", + "required": false, + "default": null, + "description": "Hybrid backend server URL (overrides default)" + }, + { + "name": "hybrid-timeout", + "shortName": null, + "type": "string", + "required": false, + "default": "0", + "description": "Hybrid backend request timeout in milliseconds (0 = no timeout). Default: 0" + }, + { + "name": "hybrid-fallback", + "shortName": null, + "type": "boolean", + "required": false, + "default": false, + "description": "Opt in to Java fallback on hybrid backend error (default: disabled)" + }, + { + "name": "hybrid-hancom-ai-regionlist-strategy", + "shortName": null, + "type": "string", + "required": false, + "default": "table-first", + "description": "DLA label 7 (regionlist) handling. Requires --hybrid=hancom-ai. Values: table-first (default; check TSR overlap), list-only (skip TSR, always treat as list)" + }, + { + "name": "hybrid-hancom-ai-ocr-strategy", + "shortName": null, + "type": "string", + "required": false, + "default": "auto", + "description": "OCR strategy. Requires --hybrid=hancom-ai. Values: off (stream-only), auto (default; stream first, OCR fallback), force (OCR-only)" + }, + { + "name": "hybrid-hancom-ai-image-cache", + "shortName": null, + "type": "string", + "required": false, + "default": "memory", + "description": "Page image cache backing. Requires --hybrid=hancom-ai. Values: memory (default), disk" + }, + { + "name": "to-stdout", + "shortName": null, + "type": "boolean", + "required": false, + "default": false, + "description": "Write output to stdout instead of file (single format only)" + }, + { + "name": "threads", + "shortName": null, + "type": "string", + "required": false, + "default": "1", + "description": "Number of worker threads for per-page processing. Default: 1 (sequential, stable). Values >1 (experimental) run pages in parallel for faster throughput; output may vary slightly on some PDFs. Capped at the number of available CPU cores. Applies to the native Java pipeline only; ignored in --hybrid mode" + } + ] +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..b486d1a --- /dev/null +++ b/package.json @@ -0,0 +1,14 @@ +{ + "name": "opendataloader-pdf-workspace", + "private": true, + "description": "OpenDataLoader PDF - Monorepo workspace", + "scripts": { + "build-java": "bash scripts/build-java.sh", + "export-options": "npm run build-java && java -Djava.awt.headless=true -Dapple.awt.UIElement=true -jar java/opendataloader-pdf-cli/target/opendataloader-pdf-cli-0.0.0.jar --export-options > options.json", + "generate-options": "node scripts/generate-options.mjs", + "sync-options": "npm run export-options && npm run generate-options", + "generate-schema": "node scripts/generate-schema.mjs", + "sync-schema": "npm run generate-schema", + "sync": "npm run sync-options && npm run sync-schema" + } +} diff --git a/python/opendataloader-pdf-mcp/README.md b/python/opendataloader-pdf-mcp/README.md new file mode 100644 index 0000000..6c71554 --- /dev/null +++ b/python/opendataloader-pdf-mcp/README.md @@ -0,0 +1,114 @@ +# OpenDataLoader PDF MCP Server + +MCP (Model Context Protocol) server for [OpenDataLoader PDF](https://github.com/opendataloader-project/opendataloader-pdf). + +Enables AI agents to convert PDFs to Markdown, JSON, HTML, and more via MCP. + +## Prerequisites + +- Java 11+ +- Python 3.10+ + +## Installation + +```bash +pip install opendataloader-pdf-mcp +``` + +## Usage + +### Claude Desktop + +Add to your Claude Desktop config (`claude_desktop_config.json`): + +```json +{ + "mcpServers": { + "opendataloader-pdf": { + "command": "uvx", + "args": ["opendataloader-pdf-mcp"] + } + } +} +``` + +### Claude Code + +```bash +claude mcp add opendataloader-pdf -- uvx opendataloader-pdf-mcp +``` + +### OpenAI Codex + +```bash +codex --mcp-config mcp.json +``` + +`mcp.json`: + +```json +{ + "mcpServers": { + "opendataloader-pdf": { + "command": "uvx", + "args": ["opendataloader-pdf-mcp"] + } + } +} +``` + +### Cursor + +Add to `.cursor/mcp.json` in your project: + +```json +{ + "mcpServers": { + "opendataloader-pdf": { + "command": "uvx", + "args": ["opendataloader-pdf-mcp"] + } + } +} +``` + +### Windsurf + +Add to `~/.codeium/windsurf/mcp_config.json`: + +```json +{ + "mcpServers": { + "opendataloader-pdf": { + "command": "uvx", + "args": ["opendataloader-pdf-mcp"] + } + } +} +``` + +### Other MCP Clients + +Any MCP-compatible client can use this server. The command is: + +```bash +uvx opendataloader-pdf-mcp +``` + +## Tools + +### convert_pdf + +Convert a PDF file to the specified format. + +**Parameters:** + +- `input_path` (required): Path to the input PDF file +- `format`: Output format — `json`, `text`, `html`, `markdown` (default), `markdown-with-html`, `markdown-with-images` +- `pages`: Pages to extract (e.g., `"1,3,5-7"`) +- `password`: Password for encrypted PDFs +- All other [OpenDataLoader PDF options](https://opendataloader.org/docs/options) are supported + +## License + +Apache-2.0 diff --git a/python/opendataloader-pdf-mcp/pyproject.toml b/python/opendataloader-pdf-mcp/pyproject.toml new file mode 100644 index 0000000..5007e71 --- /dev/null +++ b/python/opendataloader-pdf-mcp/pyproject.toml @@ -0,0 +1,21 @@ +[project] +name = "opendataloader-pdf-mcp" +version = "0.0.0" +description = "MCP server for OpenDataLoader PDF — convert PDFs to Markdown, JSON, HTML, and more" +readme = "README.md" +license = "Apache-2.0" +requires-python = ">=3.10" +dependencies = [ + "mcp[cli]>=1.27.0,<2", + "opendataloader-pdf", +] + +[project.scripts] +opendataloader-pdf-mcp = "opendataloader_pdf_mcp.server:main" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.build.targets.wheel] +packages = ["src/opendataloader_pdf_mcp"] diff --git a/python/opendataloader-pdf-mcp/src/opendataloader_pdf_mcp/__init__.py b/python/opendataloader-pdf-mcp/src/opendataloader_pdf_mcp/__init__.py new file mode 100644 index 0000000..ee8c530 --- /dev/null +++ b/python/opendataloader-pdf-mcp/src/opendataloader_pdf_mcp/__init__.py @@ -0,0 +1 @@ +"""MCP server for OpenDataLoader PDF.""" diff --git a/python/opendataloader-pdf-mcp/src/opendataloader_pdf_mcp/server.py b/python/opendataloader-pdf-mcp/src/opendataloader_pdf_mcp/server.py new file mode 100644 index 0000000..bd1558f --- /dev/null +++ b/python/opendataloader-pdf-mcp/src/opendataloader_pdf_mcp/server.py @@ -0,0 +1,180 @@ +"""MCP server for OpenDataLoader PDF.""" + +import tempfile +from pathlib import Path +from typing import Any + +from mcp.server.fastmcp import FastMCP + +import opendataloader_pdf + +mcp = FastMCP("opendataloader-pdf") + + +@mcp.tool() +def convert_pdf( + input_path: str, + format: str = "markdown", + password: str | None = None, + pages: str | None = None, + keep_line_breaks: bool = False, + sanitize: bool = False, + content_safety_off: str | None = None, + replace_invalid_chars: str | None = None, + use_struct_tree: bool = False, + table_method: str | None = None, + reading_order: str | None = None, + markdown_page_separator: str | None = None, + text_page_separator: str | None = None, + html_page_separator: str | None = None, + image_output: str | None = None, + image_format: str | None = None, + include_header_footer: bool = False, + detect_strikethrough: bool = False, + hybrid: str | None = None, + hybrid_mode: str | None = None, + hybrid_url: str | None = None, + hybrid_timeout: str | None = None, + hybrid_fallback: bool = False, + image_dir: str | None = None, +) -> str: + """Convert a PDF file to the specified format. + + Args: + input_path: Path to the input PDF file. + format: Output format. Values: json, text, html, markdown, + markdown-with-html, markdown-with-images. Default: markdown. + password: Password for encrypted PDF files. + pages: Pages to extract (e.g., "1,3,5-7"). Default: all pages. + keep_line_breaks: Preserve original line breaks in extracted text. + sanitize: Replace emails, phone numbers, IPs, credit cards, URLs with placeholders. + content_safety_off: Disable content safety filters. + Values: all, hidden-text, off-page, tiny, hidden-ocg. + replace_invalid_chars: Replacement character for invalid/unrecognized characters. + use_struct_tree: Use PDF structure tree for reading order and semantic structure. + table_method: Table detection method. Values: default, cluster. + reading_order: Reading order algorithm. Values: off, xycut. + markdown_page_separator: Separator between pages in Markdown output. + Use %page-number% for page numbers. + text_page_separator: Separator between pages in text output. + html_page_separator: Separator between pages in HTML output. + image_output: Image output mode. Values: off, embedded, external. + image_format: Image format. Values: png, jpeg. + include_header_footer: Include page headers and footers in output. + detect_strikethrough: Detect strikethrough text (experimental). + hybrid: Hybrid backend. Values: off, docling-fast. + hybrid_mode: Hybrid triage mode. Values: auto, full. + hybrid_url: Hybrid backend server URL. + hybrid_timeout: Hybrid backend timeout in milliseconds. + hybrid_fallback: Enable Java fallback on hybrid backend error. + image_dir: Directory path to save extracted images. + + Returns: + The converted content as text. + """ + input_file = Path(input_path).expanduser().resolve() + if not input_file.is_file(): + raise FileNotFoundError(f"Input file not found: {input_path}") + + # Determine output file extension from format + ext_map = { + "json": ".json", + "text": ".txt", + "html": ".html", + "markdown": ".md", + "markdown-with-html": ".md", + "markdown-with-images": ".md", + } + if format not in ext_map: + raise ValueError( + f"Unsupported format: {format!r}. " + f"Supported formats: {', '.join(ext_map)}" + ) + ext = ext_map[format] + + with tempfile.TemporaryDirectory() as tmp_dir: + kwargs: dict[str, Any] = { + "input_path": str(input_file), + "output_dir": tmp_dir, + "format": format, + "quiet": True, + } + + # Only pass non-default values + if password is not None: + kwargs["password"] = password + if pages is not None: + kwargs["pages"] = pages + if keep_line_breaks: + kwargs["keep_line_breaks"] = True + if sanitize: + kwargs["sanitize"] = True + if content_safety_off is not None: + kwargs["content_safety_off"] = content_safety_off + if replace_invalid_chars is not None: + kwargs["replace_invalid_chars"] = replace_invalid_chars + if use_struct_tree: + kwargs["use_struct_tree"] = True + if table_method is not None: + kwargs["table_method"] = table_method + if reading_order is not None: + kwargs["reading_order"] = reading_order + if markdown_page_separator is not None: + kwargs["markdown_page_separator"] = markdown_page_separator + if text_page_separator is not None: + kwargs["text_page_separator"] = text_page_separator + if html_page_separator is not None: + kwargs["html_page_separator"] = html_page_separator + if format == "markdown-with-images" and image_output is None: + # Force embedded images so they survive the temp directory cleanup + kwargs["image_output"] = "embedded" + elif image_output is not None: + kwargs["image_output"] = image_output + if image_format is not None: + kwargs["image_format"] = image_format + if include_header_footer: + kwargs["include_header_footer"] = True + if detect_strikethrough: + kwargs["detect_strikethrough"] = True + if hybrid is not None: + kwargs["hybrid"] = hybrid + if hybrid_mode is not None: + kwargs["hybrid_mode"] = hybrid_mode + if hybrid_url is not None: + kwargs["hybrid_url"] = hybrid_url + if hybrid_timeout is not None: + kwargs["hybrid_timeout"] = hybrid_timeout + if hybrid_fallback: + kwargs["hybrid_fallback"] = True + if image_dir is not None: + kwargs["image_dir"] = image_dir + + opendataloader_pdf.convert(**kwargs) + + # Find and read the output file + stem = input_file.stem + output_file = Path(tmp_dir) / f"{stem}{ext}" + + if not output_file.is_file(): + files = [f for f in Path(tmp_dir).iterdir() if f.is_file()] + if not files: + raise RuntimeError( + "Conversion completed but no output file was generated." + ) + matching_ext = sorted(f for f in files if f.suffix == ext) + if not matching_ext: + raise RuntimeError( + f"Conversion completed but no '{ext}' output file was generated." + ) + output_file = matching_ext[0] + + return output_file.read_text(encoding="utf-8") + + +def main(): + """Run the MCP server.""" + mcp.run() + + +if __name__ == "__main__": + main() diff --git a/python/opendataloader-pdf-mcp/tests/conftest.py b/python/opendataloader-pdf-mcp/tests/conftest.py new file mode 100644 index 0000000..12f4df7 --- /dev/null +++ b/python/opendataloader-pdf-mcp/tests/conftest.py @@ -0,0 +1,17 @@ +"""Shared test fixtures for opendataloader-pdf-mcp tests.""" + +from pathlib import Path + +import pytest + + +@pytest.fixture +def input_pdf(): + """Return path to the sample lorem PDF.""" + return Path(__file__).resolve().parents[3] / "samples" / "pdf" / "lorem.pdf" + + +@pytest.fixture +def input_pdf_academic(): + """Return path to the sample academic PDF.""" + return Path(__file__).resolve().parents[3] / "samples" / "pdf" / "1901.03003.pdf" diff --git a/python/opendataloader-pdf-mcp/tests/test_convert_pdf.py b/python/opendataloader-pdf-mcp/tests/test_convert_pdf.py new file mode 100644 index 0000000..13e71db --- /dev/null +++ b/python/opendataloader-pdf-mcp/tests/test_convert_pdf.py @@ -0,0 +1,95 @@ +"""Tests for the convert_pdf MCP tool.""" + +import pytest +from unittest.mock import patch + +from opendataloader_pdf_mcp.server import convert_pdf, mcp + + +class TestConvertPdfValidation: + """Tests for input validation.""" + + def test_nonexistent_file_raises_error(self): + """Should raise FileNotFoundError for missing files.""" + with pytest.raises(FileNotFoundError): + convert_pdf(input_path="/nonexistent/file.pdf") + + def test_directory_raises_error(self, tmp_path): + """Should raise FileNotFoundError for directories.""" + with pytest.raises(FileNotFoundError): + convert_pdf(input_path=str(tmp_path)) + + def test_unsupported_format_raises_error(self, input_pdf): + """Should raise ValueError for unsupported formats.""" + with pytest.raises(ValueError, match="Unsupported format"): + convert_pdf(input_path=str(input_pdf), format="docx") + + +class TestConvertPdfFormats: + """Tests for output format support.""" + + def test_markdown_output(self, input_pdf): + """Should convert PDF to Markdown.""" + result = convert_pdf(input_path=str(input_pdf), format="markdown") + assert len(result) > 0 + assert "Lorem" in result + + def test_json_output(self, input_pdf): + """Should convert PDF to JSON.""" + import json + + result = convert_pdf(input_path=str(input_pdf), format="json") + parsed = json.loads(result) + assert isinstance(parsed, (dict, list)) + + def test_html_output(self, input_pdf): + """Should convert PDF to HTML.""" + result = convert_pdf(input_path=str(input_pdf), format="html") + assert "<" in result + assert ">" in result + + def test_text_output(self, input_pdf): + """Should convert PDF to plain text.""" + result = convert_pdf(input_path=str(input_pdf), format="text") + assert len(result) > 0 + assert "Lorem" in result + + def test_default_format_is_markdown(self, input_pdf): + """Default format should be markdown.""" + result = convert_pdf(input_path=str(input_pdf)) + assert "Lorem" in result + + +class TestConvertPdfOptions: + """Tests for optional parameters passed through to convert().""" + + def test_pages_option(self, input_pdf_academic): + """Should extract only specified pages.""" + result_all = convert_pdf(input_path=str(input_pdf_academic), format="text") + result_page1 = convert_pdf(input_path=str(input_pdf_academic), format="text", pages="1") + assert len(result_page1) < len(result_all) + + def test_quiet_is_always_true(self, input_pdf, tmp_path): + """convert() should always be called with quiet=True.""" + fake_output = tmp_path / "lorem.md" + fake_output.write_text("mocked") + + with patch("opendataloader_pdf_mcp.server.opendataloader_pdf.convert") as mock_convert, \ + patch("opendataloader_pdf_mcp.server.tempfile.TemporaryDirectory") as mock_tmpdir: + mock_tmpdir.return_value.__enter__ = lambda self: str(tmp_path) + mock_tmpdir.return_value.__exit__ = lambda *args: None + result = convert_pdf(input_path=str(input_pdf)) + mock_convert.assert_called_once() + kwargs = mock_convert.call_args[1] + assert kwargs["quiet"] is True + + +class TestMcpToolRegistration: + """Tests for MCP server tool registration.""" + + def test_convert_pdf_tool_is_registered(self): + """convert_pdf should be registered as an MCP tool.""" + # FastMCP does not expose a public tool-listing API as of v1.x; + # _tool_manager is the only way to introspect registered tools. + tool_names = [tool.name for tool in mcp._tool_manager.list_tools()] + assert "convert_pdf" in tool_names diff --git a/python/opendataloader-pdf-mcp/uv.lock b/python/opendataloader-pdf-mcp/uv.lock new file mode 100644 index 0000000..5a327d1 --- /dev/null +++ b/python/opendataloader-pdf-mcp/uv.lock @@ -0,0 +1,840 @@ +version = 1 +revision = 3 +requires-python = ">=3.10" + +[[package]] +name = "annotated-doc" +version = "0.0.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/57/ba/046ceea27344560984e26a590f90bc7f4a75b06701f653222458922b558c/annotated_doc-0.0.4.tar.gz", hash = "sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4", size = 7288, upload-time = "2025-11-10T22:07:42.062Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320", size = 5303, upload-time = "2025-11-10T22:07:40.673Z" }, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, +] + +[[package]] +name = "anyio" +version = "4.13.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "idna" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/14/2c5dd9f512b66549ae92767a9c7b330ae88e1932ca57876909410251fe13/anyio-4.13.0.tar.gz", hash = "sha256:334b70e641fd2221c1505b3890c69882fe4a2df910cba14d97019b90b24439dc", size = 231622, upload-time = "2026-03-24T12:59:09.671Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/42/e921fccf5015463e32a3cf6ee7f980a6ed0f395ceeaa45060b61d86486c2/anyio-4.13.0-py3-none-any.whl", hash = "sha256:08b310f9e24a9594186fd75b4f73f4a4152069e3853f1ed8bfbf58369f4ad708", size = 114353, upload-time = "2026-03-24T12:59:08.246Z" }, +] + +[[package]] +name = "attrs" +version = "26.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/8e/82a0fe20a541c03148528be8cac2408564a6c9a0cc7e9171802bc1d26985/attrs-26.1.0.tar.gz", hash = "sha256:d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32", size = 952055, upload-time = "2026-03-19T14:22:25.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl", hash = "sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309", size = 67548, upload-time = "2026-03-19T14:22:23.645Z" }, +] + +[[package]] +name = "certifi" +version = "2026.4.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/25/ee/6caf7a40c36a1220410afe15a1cc64993a1f864871f698c0f93acb72842a/certifi-2026.4.22.tar.gz", hash = "sha256:8d455352a37b71bf76a79caa83a3d6c25afee4a385d632127b6afb3963f1c580", size = 137077, upload-time = "2026-04-22T11:26:11.191Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/30/7cd8fdcdfbc5b869528b079bfb76dcdf6056b1a2097a662e5e8c04f42965/certifi-2026.4.22-py3-none-any.whl", hash = "sha256:3cb2210c8f88ba2318d29b0388d1023c8492ff72ecdde4ebdaddbb13a31b1c4a", size = 135707, upload-time = "2026-04-22T11:26:09.372Z" }, +] + +[[package]] +name = "cffi" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser", marker = "implementation_name != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/d7/516d984057745a6cd96575eea814fe1edd6646ee6efd552fb7b0921dec83/cffi-2.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44", size = 184283, upload-time = "2025-09-08T23:22:08.01Z" }, + { url = "https://files.pythonhosted.org/packages/9e/84/ad6a0b408daa859246f57c03efd28e5dd1b33c21737c2db84cae8c237aa5/cffi-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49", size = 180504, upload-time = "2025-09-08T23:22:10.637Z" }, + { url = "https://files.pythonhosted.org/packages/50/bd/b1a6362b80628111e6653c961f987faa55262b4002fcec42308cad1db680/cffi-2.0.0-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c", size = 208811, upload-time = "2025-09-08T23:22:12.267Z" }, + { url = "https://files.pythonhosted.org/packages/4f/27/6933a8b2562d7bd1fb595074cf99cc81fc3789f6a6c05cdabb46284a3188/cffi-2.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb", size = 216402, upload-time = "2025-09-08T23:22:13.455Z" }, + { url = "https://files.pythonhosted.org/packages/05/eb/b86f2a2645b62adcfff53b0dd97e8dfafb5c8aa864bd0d9a2c2049a0d551/cffi-2.0.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0", size = 203217, upload-time = "2025-09-08T23:22:14.596Z" }, + { url = "https://files.pythonhosted.org/packages/9f/e0/6cbe77a53acf5acc7c08cc186c9928864bd7c005f9efd0d126884858a5fe/cffi-2.0.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4", size = 203079, upload-time = "2025-09-08T23:22:15.769Z" }, + { url = "https://files.pythonhosted.org/packages/98/29/9b366e70e243eb3d14a5cb488dfd3a0b6b2f1fb001a203f653b93ccfac88/cffi-2.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453", size = 216475, upload-time = "2025-09-08T23:22:17.427Z" }, + { url = "https://files.pythonhosted.org/packages/21/7a/13b24e70d2f90a322f2900c5d8e1f14fa7e2a6b3332b7309ba7b2ba51a5a/cffi-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495", size = 218829, upload-time = "2025-09-08T23:22:19.069Z" }, + { url = "https://files.pythonhosted.org/packages/60/99/c9dc110974c59cc981b1f5b66e1d8af8af764e00f0293266824d9c4254bc/cffi-2.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5", size = 211211, upload-time = "2025-09-08T23:22:20.588Z" }, + { url = "https://files.pythonhosted.org/packages/49/72/ff2d12dbf21aca1b32a40ed792ee6b40f6dc3a9cf1644bd7ef6e95e0ac5e/cffi-2.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb", size = 218036, upload-time = "2025-09-08T23:22:22.143Z" }, + { url = "https://files.pythonhosted.org/packages/e2/cc/027d7fb82e58c48ea717149b03bcadcbdc293553edb283af792bd4bcbb3f/cffi-2.0.0-cp310-cp310-win32.whl", hash = "sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a", size = 172184, upload-time = "2025-09-08T23:22:23.328Z" }, + { url = "https://files.pythonhosted.org/packages/33/fa/072dd15ae27fbb4e06b437eb6e944e75b068deb09e2a2826039e49ee2045/cffi-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739", size = 182790, upload-time = "2025-09-08T23:22:24.752Z" }, + { url = "https://files.pythonhosted.org/packages/12/4a/3dfd5f7850cbf0d06dc84ba9aa00db766b52ca38d8b86e3a38314d52498c/cffi-2.0.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe", size = 184344, upload-time = "2025-09-08T23:22:26.456Z" }, + { url = "https://files.pythonhosted.org/packages/4f/8b/f0e4c441227ba756aafbe78f117485b25bb26b1c059d01f137fa6d14896b/cffi-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c", size = 180560, upload-time = "2025-09-08T23:22:28.197Z" }, + { url = "https://files.pythonhosted.org/packages/b1/b7/1200d354378ef52ec227395d95c2576330fd22a869f7a70e88e1447eb234/cffi-2.0.0-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92", size = 209613, upload-time = "2025-09-08T23:22:29.475Z" }, + { url = "https://files.pythonhosted.org/packages/b8/56/6033f5e86e8cc9bb629f0077ba71679508bdf54a9a5e112a3c0b91870332/cffi-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93", size = 216476, upload-time = "2025-09-08T23:22:31.063Z" }, + { url = "https://files.pythonhosted.org/packages/dc/7f/55fecd70f7ece178db2f26128ec41430d8720f2d12ca97bf8f0a628207d5/cffi-2.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5", size = 203374, upload-time = "2025-09-08T23:22:32.507Z" }, + { url = "https://files.pythonhosted.org/packages/84/ef/a7b77c8bdc0f77adc3b46888f1ad54be8f3b7821697a7b89126e829e676a/cffi-2.0.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664", size = 202597, upload-time = "2025-09-08T23:22:34.132Z" }, + { url = "https://files.pythonhosted.org/packages/d7/91/500d892b2bf36529a75b77958edfcd5ad8e2ce4064ce2ecfeab2125d72d1/cffi-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26", size = 215574, upload-time = "2025-09-08T23:22:35.443Z" }, + { url = "https://files.pythonhosted.org/packages/44/64/58f6255b62b101093d5df22dcb752596066c7e89dd725e0afaed242a61be/cffi-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9", size = 218971, upload-time = "2025-09-08T23:22:36.805Z" }, + { url = "https://files.pythonhosted.org/packages/ab/49/fa72cebe2fd8a55fbe14956f9970fe8eb1ac59e5df042f603ef7c8ba0adc/cffi-2.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414", size = 211972, upload-time = "2025-09-08T23:22:38.436Z" }, + { url = "https://files.pythonhosted.org/packages/0b/28/dd0967a76aab36731b6ebfe64dec4e981aff7e0608f60c2d46b46982607d/cffi-2.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743", size = 217078, upload-time = "2025-09-08T23:22:39.776Z" }, + { url = "https://files.pythonhosted.org/packages/2b/c0/015b25184413d7ab0a410775fdb4a50fca20f5589b5dab1dbbfa3baad8ce/cffi-2.0.0-cp311-cp311-win32.whl", hash = "sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5", size = 172076, upload-time = "2025-09-08T23:22:40.95Z" }, + { url = "https://files.pythonhosted.org/packages/ae/8f/dc5531155e7070361eb1b7e4c1a9d896d0cb21c49f807a6c03fd63fc877e/cffi-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5", size = 182820, upload-time = "2025-09-08T23:22:42.463Z" }, + { url = "https://files.pythonhosted.org/packages/95/5c/1b493356429f9aecfd56bc171285a4c4ac8697f76e9bbbbb105e537853a1/cffi-2.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d", size = 177635, upload-time = "2025-09-08T23:22:43.623Z" }, + { url = "https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", size = 185271, upload-time = "2025-09-08T23:22:44.795Z" }, + { url = "https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", size = 181048, upload-time = "2025-09-08T23:22:45.938Z" }, + { url = "https://files.pythonhosted.org/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", size = 212529, upload-time = "2025-09-08T23:22:47.349Z" }, + { url = "https://files.pythonhosted.org/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", size = 220097, upload-time = "2025-09-08T23:22:48.677Z" }, + { url = "https://files.pythonhosted.org/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", size = 207983, upload-time = "2025-09-08T23:22:50.06Z" }, + { url = "https://files.pythonhosted.org/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", size = 206519, upload-time = "2025-09-08T23:22:51.364Z" }, + { url = "https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", size = 219572, upload-time = "2025-09-08T23:22:52.902Z" }, + { url = "https://files.pythonhosted.org/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", size = 222963, upload-time = "2025-09-08T23:22:54.518Z" }, + { url = "https://files.pythonhosted.org/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", size = 221361, upload-time = "2025-09-08T23:22:55.867Z" }, + { url = "https://files.pythonhosted.org/packages/7b/2b/2b6435f76bfeb6bbf055596976da087377ede68df465419d192acf00c437/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", size = 172932, upload-time = "2025-09-08T23:22:57.188Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", size = 183557, upload-time = "2025-09-08T23:22:58.351Z" }, + { url = "https://files.pythonhosted.org/packages/95/31/9f7f93ad2f8eff1dbc1c3656d7ca5bfd8fb52c9d786b4dcf19b2d02217fa/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", size = 177762, upload-time = "2025-09-08T23:22:59.668Z" }, + { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230, upload-time = "2025-09-08T23:23:00.879Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043, upload-time = "2025-09-08T23:23:02.231Z" }, + { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446, upload-time = "2025-09-08T23:23:03.472Z" }, + { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101, upload-time = "2025-09-08T23:23:04.792Z" }, + { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948, upload-time = "2025-09-08T23:23:06.127Z" }, + { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422, upload-time = "2025-09-08T23:23:07.753Z" }, + { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499, upload-time = "2025-09-08T23:23:09.648Z" }, + { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928, upload-time = "2025-09-08T23:23:10.928Z" }, + { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302, upload-time = "2025-09-08T23:23:12.42Z" }, + { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909, upload-time = "2025-09-08T23:23:14.32Z" }, + { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402, upload-time = "2025-09-08T23:23:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780, upload-time = "2025-09-08T23:23:16.761Z" }, + { url = "https://files.pythonhosted.org/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", size = 185320, upload-time = "2025-09-08T23:23:18.087Z" }, + { url = "https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", size = 181487, upload-time = "2025-09-08T23:23:19.622Z" }, + { url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049, upload-time = "2025-09-08T23:23:20.853Z" }, + { url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793, upload-time = "2025-09-08T23:23:22.08Z" }, + { url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300, upload-time = "2025-09-08T23:23:23.314Z" }, + { url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244, upload-time = "2025-09-08T23:23:24.541Z" }, + { url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828, upload-time = "2025-09-08T23:23:26.143Z" }, + { url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926, upload-time = "2025-09-08T23:23:27.873Z" }, + { url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328, upload-time = "2025-09-08T23:23:44.61Z" }, + { url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650, upload-time = "2025-09-08T23:23:45.848Z" }, + { url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687, upload-time = "2025-09-08T23:23:47.105Z" }, + { url = "https://files.pythonhosted.org/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", size = 188773, upload-time = "2025-09-08T23:23:29.347Z" }, + { url = "https://files.pythonhosted.org/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", size = 185013, upload-time = "2025-09-08T23:23:30.63Z" }, + { url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593, upload-time = "2025-09-08T23:23:31.91Z" }, + { url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354, upload-time = "2025-09-08T23:23:33.214Z" }, + { url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480, upload-time = "2025-09-08T23:23:34.495Z" }, + { url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584, upload-time = "2025-09-08T23:23:36.096Z" }, + { url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443, upload-time = "2025-09-08T23:23:37.328Z" }, + { url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437, upload-time = "2025-09-08T23:23:38.945Z" }, + { url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487, upload-time = "2025-09-08T23:23:40.423Z" }, + { url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726, upload-time = "2025-09-08T23:23:41.742Z" }, + { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195, upload-time = "2025-09-08T23:23:43.004Z" }, +] + +[[package]] +name = "click" +version = "8.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bb/63/f9e1ea081ce35720d8b92acde70daaedace594dc93b693c869e0d5910718/click-8.3.3.tar.gz", hash = "sha256:398329ad4837b2ff7cbe1dd166a4c0f8900c3ca3a218de04466f38f6497f18a2", size = 328061, upload-time = "2026-04-22T15:11:27.506Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ae/44/c1221527f6a71a01ec6fbad7fa78f1d50dfa02217385cf0fa3eec7087d59/click-8.3.3-py3-none-any.whl", hash = "sha256:a2bf429bb3033c89fa4936ffb35d5cb471e3719e1f3c8a7c3fff0b8314305613", size = 110502, upload-time = "2026-04-22T15:11:25.044Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "cryptography" +version = "48.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/12/45/870e7f4bef50e5f53b9f51d4428aee5290eedf58ba443f16b1ebb7ab8e66/cryptography-48.0.1.tar.gz", hash = "sha256:266f4ee051abb2f725b74ef8072b521ce1feacf685a3364fa6a6b45548db791a", size = 832989, upload-time = "2026-06-09T22:32:31.8Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1b/bc/ee4137cbbe105652c0ee4252792b78fc8e7afa4b8e61d9d5dc05a7f45731/cryptography-48.0.1-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:3e4a1a3232eef2e6c732827d5722db29a0cc8b27af2a4d865b094cf954be9ca1", size = 8008324, upload-time = "2026-06-09T22:31:00.702Z" }, + { url = "https://files.pythonhosted.org/packages/d5/85/6379d42181bfc713094f081360fc5784d6c816b599d45e7f082502d173ce/cryptography-48.0.1-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:32143b24adb918f078134e1e230f1eb8cc04886b92c28b5f0041aaf3e5699225", size = 4696243, upload-time = "2026-06-09T22:32:33.446Z" }, + { url = "https://files.pythonhosted.org/packages/9c/87/c85d147b53323c7eb4d850920c8901377323c2a0ff8d79c262d4fee89aa2/cryptography-48.0.1-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f0d27a5696721ef7a672b8c810f6aded391058e0b9486e63e6d93baf765da691", size = 4713235, upload-time = "2026-06-09T22:31:40.141Z" }, + { url = "https://files.pythonhosted.org/packages/79/58/67cbf8cf1ee7c54b439ca07bbecf8362c07afc11a3724fea70f745784add/cryptography-48.0.1-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:eb86ce1af36fe65041b6db9a8bb064ee621a7e5fded0f80d475ec243477cd242", size = 4702323, upload-time = "2026-06-09T22:31:42.191Z" }, + { url = "https://files.pythonhosted.org/packages/89/c6/24266ac10c47f6cd2a865f4446062b466da1d1f10b27189eac00e61bf0c9/cryptography-48.0.1-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:b024e784ad6c077ee0147b35ea9cbfc1e34e1fd4c1dcca214c2794d73a12df08", size = 5300085, upload-time = "2026-06-09T22:31:58.703Z" }, + { url = "https://files.pythonhosted.org/packages/d2/bb/cc4b78784f97efc8c5874c2a9743708d172be6663024b34a0467885ae0c8/cryptography-48.0.1-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3752f2dbc8f07a30aad2932c986cea495b03bb554887828225da104f732852b6", size = 4746137, upload-time = "2026-06-09T22:31:31.01Z" }, + { url = "https://files.pythonhosted.org/packages/1f/52/0c44de3f5267f8fbe8e835138017522a333436166e406f0db9b9e6e3033f/cryptography-48.0.1-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:bd81490cd5801d755cf97bb68ac191f14b708470b1c7cf4580f669b9c9264cd8", size = 4333867, upload-time = "2026-06-09T22:32:28.096Z" }, + { url = "https://files.pythonhosted.org/packages/9a/2e/772d7adbfa931537bc401640b7cac9976bff689bda187833e5d63b428e49/cryptography-48.0.1-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:66fd0771e7b9c6dcd44cf1120690d2338d16d72795cf40cae2786a39eba65429", size = 4701805, upload-time = "2026-06-09T22:31:38.284Z" }, + { url = "https://files.pythonhosted.org/packages/f8/a3/b06844f303873493c963caf581c04df31c7035e0c1b0f02c4814d319ec80/cryptography-48.0.1-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:3fd2ca57062b241c856670b073487d2e86c4637937ca5601e48f97bf8e11fc8f", size = 5258461, upload-time = "2026-06-09T22:31:04.187Z" }, + { url = "https://files.pythonhosted.org/packages/9f/13/8b765e2e12b07c74941caadb9d1c8fdc006c4dfbf2b8f2d610519758954d/cryptography-48.0.1-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:0ee6ea481db1ab889cba043ec1eda17bb9c1ea79db6722f779c3667f9f70322f", size = 4745488, upload-time = "2026-06-09T22:32:30.07Z" }, + { url = "https://files.pythonhosted.org/packages/2e/aa/48972bce55049b32a94f4907eda4d75fa385aad8a39506cc2fc72196ecf0/cryptography-48.0.1-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f2ceef93cb096aa3c4cc4b5c94ca6131f9196d28c64d6111533402a9b2054d41", size = 4830256, upload-time = "2026-06-09T22:31:43.868Z" }, + { url = "https://files.pythonhosted.org/packages/47/a2/e5079a032fb85cf6005046ca92bbd78b0c82dad2b5751ab8c311659da06f/cryptography-48.0.1-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:9bd3f92d76217892b15df84ca256c2c113d386fdda7a7d8691aeeced976507c6", size = 4979117, upload-time = "2026-06-09T22:31:05.845Z" }, + { url = "https://files.pythonhosted.org/packages/b7/a0/8f50cae9c74e718ed769d63ed5c74bd0ea830c9550a74629cebd1b9c7bc7/cryptography-48.0.1-cp311-abi3-win32.whl", hash = "sha256:b9a32b876490d66c8bcc9963ef220199569748434ab01a9d6aaeabf88e7f5158", size = 3304154, upload-time = "2026-06-09T22:32:16.845Z" }, + { url = "https://files.pythonhosted.org/packages/c5/69/0572c77dbace6fef72f33755bd52ea399c71367250d366237f8691826b9e/cryptography-48.0.1-cp311-abi3-win_amd64.whl", hash = "sha256:39489bfca54c7a1f6b297efcd8bc608ab92d16c4ca631b0cad4da46724588b24", size = 3817138, upload-time = "2026-06-09T22:32:00.388Z" }, + { url = "https://files.pythonhosted.org/packages/42/06/3e768b4c3bc78201583fa35a0e18f640dd782ff41afba88f8545481a8874/cryptography-48.0.1-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:f817adc181390bd54f2f700107a7419040fb7c1bdf2fc26f36551a06a68c3345", size = 7989830, upload-time = "2026-06-09T22:31:07.8Z" }, + { url = "https://files.pythonhosted.org/packages/8a/13/6476736484b94041110c8340a3eb63962fea4975baea8cb4a512adb44d4d/cryptography-48.0.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d5d30989c6917b478b5817902e85fddaea2261efa8648383d965381ccb9e1ac4", size = 4689201, upload-time = "2026-06-09T22:31:09.745Z" }, + { url = "https://files.pythonhosted.org/packages/79/62/65a87f34d2a431546e2509b85d55e8c90df86d668f6731da64d538512ac2/cryptography-48.0.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:df637c05205ea7c1d7fbcbe54bbfea648a52951155f997af13d895d0ecc96991", size = 4702822, upload-time = "2026-06-09T22:32:24.409Z" }, + { url = "https://files.pythonhosted.org/packages/7f/59/810b5204b0a9b10f4b6bc06bd551a8b609803cd931806bc3b71884b225e5/cryptography-48.0.1-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:869c3b8a53bfe27147832df48b32adadf558249d50e76cb3769d40e986b13265", size = 4694875, upload-time = "2026-06-09T22:32:08.737Z" }, + { url = "https://files.pythonhosted.org/packages/24/dc/d8ca05ffea724eec6d232ea6f18e74c269eb6bdfdcc9bfba689790d1325f/cryptography-48.0.1-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:e361afba8918070d376df76f408a4f67fec0ee9cff81a99e48fe9a233ef59e17", size = 5290385, upload-time = "2026-06-09T22:31:15.212Z" }, + { url = "https://files.pythonhosted.org/packages/03/8c/3be6cb4da181f5bb6c19cf560c2359d60644a6b5fc5b57854e528f47b296/cryptography-48.0.1-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:d069066deead00ac7f090be101be875a06855908f7ec004c27b8fefb4acfb411", size = 4737082, upload-time = "2026-06-09T22:32:22.66Z" }, + { url = "https://files.pythonhosted.org/packages/aa/f6/d5f60a5a1434dbfd949e227fd0065d194c7e6b6ac526b17f5c06152b8231/cryptography-48.0.1-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:09f73a725d582cef64b91281a322cd798d14a33b2b6f2b7ad9531dc336d84c02", size = 4325328, upload-time = "2026-06-09T22:32:10.777Z" }, + { url = "https://files.pythonhosted.org/packages/17/b7/ba75dd947a14b6ad907b01ae8f6b5b348cdd1b48142f0063dee9e20c1d9d/cryptography-48.0.1-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:15254441469dd6bf027039453288e2072124f8b6603563f5d759e1c9b69273fa", size = 4694530, upload-time = "2026-06-09T22:31:53.105Z" }, + { url = "https://files.pythonhosted.org/packages/62/29/50d6b9e8aff12d8b67afaeb3569335e32dc83a5723e3bbded24fdac9f809/cryptography-48.0.1-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:8ace4507d1e6533c125f4fac754f8bb8b6a74c08e92179dabd7e16571a3efbf3", size = 5245046, upload-time = "2026-06-09T22:31:25.774Z" }, + { url = "https://files.pythonhosted.org/packages/9f/04/618f4115cfc0add0838c82507aa18a346089428da8653ad38b3ff36f5cb3/cryptography-48.0.1-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:b4e391975f038e66432328639620a4aff2d307513b004f1ca06d6225bced815c", size = 4736660, upload-time = "2026-06-09T22:32:12.676Z" }, + { url = "https://files.pythonhosted.org/packages/24/9c/06e062462a0de28a3b3911322eded4c16deb9f441b1b7575d3dc59488ab5/cryptography-48.0.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:42fcd8e26fe555d9b3577a135f5091fefa0aa4e99129c23fb56787a1bd4ada72", size = 4822229, upload-time = "2026-06-09T22:31:17.062Z" }, + { url = "https://files.pythonhosted.org/packages/f4/be/0561971eaaee4b8a0e7d5113c536921063ab91aaf23278ac374eaf881e11/cryptography-48.0.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1400da5e32a43253392277eac7490a60e497d810a63dd5608d71bbd7af507c9", size = 4966364, upload-time = "2026-06-09T22:31:32.842Z" }, + { url = "https://files.pythonhosted.org/packages/a4/27/728c77876f12b000820b69ae490f3c4083775e79e07827e9e60be07ad209/cryptography-48.0.1-cp314-cp314t-win32.whl", hash = "sha256:0df56b056bc17c1b7d6821dfa65216e62bd232d8ab05eb3db44e71d235651471", size = 3278498, upload-time = "2026-06-09T22:31:29.154Z" }, + { url = "https://files.pythonhosted.org/packages/06/e3/79a612c6d7b1e6ee0edd43633d53035bec2cfb78c82b76f7864f39e36f34/cryptography-48.0.1-cp314-cp314t-win_amd64.whl", hash = "sha256:9de21387aa95e2a895823d0745b430bed4f33503ba9ab5e0b5311f33e37d66d2", size = 3798790, upload-time = "2026-06-09T22:31:56.697Z" }, + { url = "https://files.pythonhosted.org/packages/ca/6c/00fa2a95997164c8b2072ce327c23d4ab20809ccc323ea5fab91e53a4bba/cryptography-48.0.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:4fdc69f8e4316bcf0c8c8ec1f26f285d12e8142d88d96c876a59a03be3f6ae67", size = 7987408, upload-time = "2026-06-09T22:32:20.777Z" }, + { url = "https://files.pythonhosted.org/packages/b0/d9/45f309a7e4e5f3f8f121d6d3be9e94024a7726ec598d6e08ae04edb2f04d/cryptography-48.0.1-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:48fe40804d4caa2288f24e70ca8c64c42dd826da0ad7e4f1b41b2128d679e6c8", size = 4690196, upload-time = "2026-06-09T22:31:54.74Z" }, + { url = "https://files.pythonhosted.org/packages/5f/9f/a1bc8bcc798811b8527eb374bbccf30a3f3e806829d967118222bf1125eb/cryptography-48.0.1-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:86be3b1b0b6bf09482fb50a979c508d2950ed95f5621ec77f4e385962006b83a", size = 4696782, upload-time = "2026-06-09T22:31:45.615Z" }, + { url = "https://files.pythonhosted.org/packages/66/c2/81a4fb4e4373c500bb526bc337ac5719dd31dd15b970b84a238168c6aa08/cryptography-48.0.1-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:4ab0a343c807bbcd90c971cd1ecf072937cd01847a9e002bef88fb47ac6be577", size = 4696618, upload-time = "2026-06-09T22:31:11.564Z" }, + { url = "https://files.pythonhosted.org/packages/e5/0b/aa68b221dde92d09cb29a024ede17550ee21e77a404e59fc093c82bb51e1/cryptography-48.0.1-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:9621de99d2da096006b629979efd8ae7eb2d8b822488d0c89ee4000c306c59b1", size = 5289970, upload-time = "2026-06-09T22:31:20.368Z" }, + { url = "https://files.pythonhosted.org/packages/78/13/fba657f958d2af66ea959a4ba01212632089249d34af1ae48054136344d7/cryptography-48.0.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:88c852a0ae366e262e5a1744b685e6a433dc8788dd2a277e418bf4904203609d", size = 4731873, upload-time = "2026-06-09T22:31:22.253Z" }, + { url = "https://files.pythonhosted.org/packages/4c/4c/9a964756d24a26b3e34dfcb16f961b89838786e6700b635b0d1e3adff4b6/cryptography-48.0.1-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:43c5835e2cb98c8733d86f57d6fc879b613f5c3478607281c3e36daffc6dd8a6", size = 4330804, upload-time = "2026-06-09T22:31:36.56Z" }, + { url = "https://files.pythonhosted.org/packages/4b/0f/a10f3a6eb12950a10e3a874070283aa2dd5875b2bfd15fad8a3e17b3f13e/cryptography-48.0.1-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:fe0180af5bf9236518a087e35bf2d9a347d5f5f51e63c579d683ddff424e3d46", size = 4696217, upload-time = "2026-06-09T22:31:13.351Z" }, + { url = "https://files.pythonhosted.org/packages/f3/6f/5cd12f951165ea73ef85266775d97e4c763b2474ccfd816dd69d3a18d6f8/cryptography-48.0.1-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:b7a2d1a937a738a881737cec135a38bb61470589b17515b9f73f571d0ae10401", size = 5245252, upload-time = "2026-06-09T22:32:02.193Z" }, + { url = "https://files.pythonhosted.org/packages/68/ab/8aaa12e4516ec4464033ab79b6f3b592bd5a92102467c4ace8a0d970203f/cryptography-48.0.1-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:b74ca3b8e5ecdd833bf6a002ca41b4793bb27fb8f1c06ffaf2643c9e9140e31b", size = 4731388, upload-time = "2026-06-09T22:32:04.019Z" }, + { url = "https://files.pythonhosted.org/packages/1b/24/50027ea4dca85ec1f40688f3c24fb32ccacd520583c9592c3cc95628e6fb/cryptography-48.0.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2c37f2461406063b417837f5f3daab668652acd82423efcd7f0a9f04be972de1", size = 4824186, upload-time = "2026-06-09T22:32:18.707Z" }, + { url = "https://files.pythonhosted.org/packages/52/41/04cb5eb17085ade6f50cc611fb657df6a0f5885350de8764ece89c050197/cryptography-48.0.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:86fe77abb1bd87afb251d4d02ada7ecf53a32cee9b67d976abb2e45a13297475", size = 4964539, upload-time = "2026-06-09T22:31:18.793Z" }, + { url = "https://files.pythonhosted.org/packages/36/bf/ed70785c496e89d7e73b7cda2d21f2447fd6d4e821714b8d04ff217fed92/cryptography-48.0.1-cp39-abi3-win32.whl", hash = "sha256:6b2c0c3e6ccf3ade7750f836ef3ee36eea250cc467d45c256895573ac08cc6f1", size = 3282307, upload-time = "2026-06-09T22:30:53.162Z" }, + { url = "https://files.pythonhosted.org/packages/b3/ff/371ea7d252656ee1eb6d83eeeef3d1d0c6baf1d6497687d081ea03814670/cryptography-48.0.1-cp39-abi3-win_amd64.whl", hash = "sha256:9a49ca6c81417f6a5edb50375a60cccdd70fa0a91a5211829dbea74eba94d2ac", size = 3793408, upload-time = "2026-06-09T22:32:15.191Z" }, + { url = "https://files.pythonhosted.org/packages/a9/d3/eb4e394e587341fdad09a09101fa76478ead3a78b0ad63e55c22f0d75c02/cryptography-48.0.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:08a597acce1ff37f347400087776599e2348a3a8bc53b44120e463cd274efe4a", size = 3951747, upload-time = "2026-06-09T22:31:23.871Z" }, + { url = "https://files.pythonhosted.org/packages/e0/4a/3f43451b4f858bfceaaaffc649e6e787e8d4fb332a1d443af39ab02cc8f1/cryptography-48.0.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:735824ec41b7f74a7c45fb1591349333e4c696cb6c044e5f46356e560143e4cd", size = 4641226, upload-time = "2026-06-09T22:31:02.532Z" }, + { url = "https://files.pythonhosted.org/packages/73/4e/855584c2c23b09e4ce2d3b9c30e983e679cd60b068c513c6bbdb91e11782/cryptography-48.0.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:92a46e1d638daa264ba2971c0b0489c9409787943efae4d60ffda3d091ef832c", size = 4668958, upload-time = "2026-06-09T22:32:06.213Z" }, + { url = "https://files.pythonhosted.org/packages/42/3b/d35750e41d803d1e516fd6d6011f065424924da7af1748cef4cc9cb3ede1/cryptography-48.0.1-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:7e234ac052af99f2700826a5c29ea99d9c1b1f80341cde62d11c8154dc8e0bd9", size = 4640793, upload-time = "2026-06-09T22:32:26.331Z" }, + { url = "https://files.pythonhosted.org/packages/ca/aa/cdb7181fe865285e87e96825aaab239400f1de0c3bfba9bd9769b79f1a92/cryptography-48.0.1-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:33842cf0888951cef5bc7ac724ab844a42044c1727b967b7f8997289a0464f92", size = 4668505, upload-time = "2026-06-09T22:31:27.534Z" }, + { url = "https://files.pythonhosted.org/packages/5d/8c/ce3823c06c2804f194f9e64f0d67fa3f4094a39f2bb1a990cd03603af8fc/cryptography-48.0.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:6184ca7b174f28d7c703f1290d4b297217c45355f77a98f67e9b7f14549ac54a", size = 3742204, upload-time = "2026-06-09T22:31:34.773Z" }, +] + +[[package]] +name = "exceptiongroup" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", size = 16740, upload-time = "2025-11-21T23:01:53.443Z" }, +] + +[[package]] +name = "h11" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, +] + +[[package]] +name = "httpx" +version = "0.28.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "certifi" }, + { name = "httpcore" }, + { name = "idna" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, +] + +[[package]] +name = "httpx-sse" +version = "0.4.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/4c/751061ffa58615a32c31b2d82e8482be8dd4a89154f003147acee90f2be9/httpx_sse-0.4.3.tar.gz", hash = "sha256:9b1ed0127459a66014aec3c56bebd93da3c1bc8bb6618c8082039a44889a755d", size = 15943, upload-time = "2025-10-10T21:48:22.271Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/fd/6668e5aec43ab844de6fc74927e155a3b37bf40d7c3790e49fc0406b6578/httpx_sse-0.4.3-py3-none-any.whl", hash = "sha256:0ac1c9fe3c0afad2e0ebb25a934a59f4c7823b60792691f779fad2c5568830fc", size = 8960, upload-time = "2025-10-10T21:48:21.158Z" }, +] + +[[package]] +name = "idna" +version = "3.15" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/77/7b3966d0b9d1d31a36ddf1746926a11dface89a83409bf1483f0237aa758/idna-3.15.tar.gz", hash = "sha256:ca962446ea538f7092a95e057da437618e886f4d349216d2b1e294abfdb65fdc", size = 199245, upload-time = "2026-05-12T22:45:57.011Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/23/408243171aa9aaba178d3e2559159c24c1171a641aa83b67bdd3394ead8e/idna-3.15-py3-none-any.whl", hash = "sha256:048adeaf8c2d788c40fee287673ccaa74c24ffd8dcf09ffa555a2fbb59f10ac8", size = 72340, upload-time = "2026-05-12T22:45:55.733Z" }, +] + +[[package]] +name = "jsonschema" +version = "4.26.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b3/fc/e067678238fa451312d4c62bf6e6cf5ec56375422aee02f9cb5f909b3047/jsonschema-4.26.0.tar.gz", hash = "sha256:0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326", size = 366583, upload-time = "2026-01-07T13:41:07.246Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/90/f63fb5873511e014207a475e2bb4e8b2e570d655b00ac19a9a0ca0a385ee/jsonschema-4.26.0-py3-none-any.whl", hash = "sha256:d489f15263b8d200f8387e64b4c3a75f06629559fb73deb8fdfb525f2dab50ce", size = 90630, upload-time = "2026-01-07T13:41:05.306Z" }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2025.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855, upload-time = "2025-09-08T01:34:59.186Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" }, +] + +[[package]] +name = "markdown-it-py" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mdurl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3", size = 73070, upload-time = "2025-08-11T12:57:52.854Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321, upload-time = "2025-08-11T12:57:51.923Z" }, +] + +[[package]] +name = "mcp" +version = "1.27.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "httpx" }, + { name = "httpx-sse" }, + { name = "jsonschema" }, + { name = "pydantic" }, + { name = "pydantic-settings" }, + { name = "pyjwt", extra = ["crypto"] }, + { name = "python-multipart" }, + { name = "pywin32", marker = "sys_platform == 'win32'" }, + { name = "sse-starlette" }, + { name = "starlette" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, + { name = "uvicorn", marker = "sys_platform != 'emscripten'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8b/eb/c0cfc62075dc6e1ec1c64d352ae09ac051d9334311ed226f1f425312848a/mcp-1.27.0.tar.gz", hash = "sha256:d3dc35a7eec0d458c1da4976a48f982097ddaab87e278c5511d5a4a56e852b83", size = 607509, upload-time = "2026-04-02T14:48:08.88Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9c/46/f6b4ad632c67ef35209a66127e4bddc95759649dd595f71f13fba11bdf9a/mcp-1.27.0-py3-none-any.whl", hash = "sha256:5ce1fa81614958e267b21fb2aa34e0aea8e2c6ede60d52aba45fd47246b4d741", size = 215967, upload-time = "2026-04-02T14:48:07.24Z" }, +] + +[package.optional-dependencies] +cli = [ + { name = "python-dotenv" }, + { name = "typer" }, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, +] + +[[package]] +name = "opendataloader-pdf" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/89/7904cbff3befb0219b30486d80254409cb4f14b82364f7d7c763f3e4687f/opendataloader_pdf-2.3.0.tar.gz", hash = "sha256:4abb0737c70b6b6a42b04748945b598f3776d2af7bb26ed275ed1e1f26629ee2", size = 22474091, upload-time = "2026-04-21T12:16:04.512Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5f/a4/e8b350bbea4f56d990dbf6b599c7cfb43c5ed3914b0d9efab6ac62c24474/opendataloader_pdf-2.3.0-py3-none-any.whl", hash = "sha256:1a6245d3f774dab2414ae759b1fc04edfad2f6e17b3c9f9b386b74a58604e20d", size = 22487135, upload-time = "2026-04-21T12:16:01.724Z" }, +] + +[[package]] +name = "opendataloader-pdf-mcp" +version = "0.0.0" +source = { editable = "." } +dependencies = [ + { name = "mcp", extra = ["cli"] }, + { name = "opendataloader-pdf" }, +] + +[package.metadata] +requires-dist = [ + { name = "mcp", extras = ["cli"], specifier = ">=1.27.0,<2" }, + { name = "opendataloader-pdf" }, +] + +[[package]] +name = "pycparser" +version = "3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" }, +] + +[[package]] +name = "pydantic" +version = "2.13.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d9/e4/40d09941a2cebcb20609b86a559817d5b9291c49dd6f8c87e5feffbe703a/pydantic-2.13.3.tar.gz", hash = "sha256:af09e9d1d09f4e7fe37145c1f577e1d61ceb9a41924bf0094a36506285d0a84d", size = 844068, upload-time = "2026-04-20T14:46:43.632Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/0a/fd7d723f8f8153418fb40cf9c940e82004fce7e987026b08a68a36dd3fe7/pydantic-2.13.3-py3-none-any.whl", hash = "sha256:6db14ac8dfc9a1e57f87ea2c0de670c251240f43cb0c30a5130e9720dc612927", size = 471981, upload-time = "2026-04-20T14:46:41.402Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.46.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2a/ef/f7abb56c49382a246fd2ce9c799691e3c3e7175ec74b14d99e798bcddb1a/pydantic_core-2.46.3.tar.gz", hash = "sha256:41c178f65b8c29807239d47e6050262eb6bf84eb695e41101e62e38df4a5bc2c", size = 471412, upload-time = "2026-04-20T14:40:56.672Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/98/b50eb9a411e87483b5c65dba4fa430a06bac4234d3403a40e5a9905ebcd0/pydantic_core-2.46.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:1da3786b8018e60349680720158cc19161cc3b4bdd815beb0a321cd5ce1ad5b1", size = 2108971, upload-time = "2026-04-20T14:43:51.945Z" }, + { url = "https://files.pythonhosted.org/packages/08/4b/f364b9d161718ff2217160a4b5d41ce38de60aed91c3689ebffa1c939d23/pydantic_core-2.46.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cc0988cb29d21bf4a9d5cf2ef970b5c0e38d8d8e107a493278c05dc6c1dda69f", size = 1949588, upload-time = "2026-04-20T14:44:10.386Z" }, + { url = "https://files.pythonhosted.org/packages/8f/8b/30bd03ee83b2f5e29f5ba8e647ab3c456bf56f2ec72fdbcc0215484a0854/pydantic_core-2.46.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27f9067c3bfadd04c55484b89c0d267981b2f3512850f6f66e1e74204a4e4ce3", size = 1975986, upload-time = "2026-04-20T14:43:57.106Z" }, + { url = "https://files.pythonhosted.org/packages/3c/54/13ccf954d84ec275d5d023d5786e4aa48840bc9f161f2838dc98e1153518/pydantic_core-2.46.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a642ac886ecf6402d9882d10c405dcf4b902abeb2972cd5fb4a48c83cd59279a", size = 2055830, upload-time = "2026-04-20T14:44:15.499Z" }, + { url = "https://files.pythonhosted.org/packages/be/0e/65f38125e660fdbd72aa858e7dfae893645cfa0e7b13d333e174a367cd23/pydantic_core-2.46.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:79f561438481f28681584b89e2effb22855e2179880314bcddbf5968e935e807", size = 2222340, upload-time = "2026-04-20T14:41:51.353Z" }, + { url = "https://files.pythonhosted.org/packages/d1/88/f3ab7739efe0e7e80777dbb84c59eb98518e3f57ea433206194c2e425272/pydantic_core-2.46.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57a973eae4665352a47cf1a99b4ee864620f2fe663a217d7a8da68a1f3a5bfda", size = 2280727, upload-time = "2026-04-20T14:41:30.461Z" }, + { url = "https://files.pythonhosted.org/packages/2a/6d/c228219080817bec4982f9531cadb18da6aaa770fdeb114f49c237ac2c9f/pydantic_core-2.46.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83d002b97072a53ea150d63e0a3adfae5670cef5aa8a6e490240e482d3b22e57", size = 2092158, upload-time = "2026-04-20T14:44:07.305Z" }, + { url = "https://files.pythonhosted.org/packages/0f/b1/525a16711e7c6d61635fac3b0bd54600b5c5d9f60c6fc5aaab26b64a2297/pydantic_core-2.46.3-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:b40ddd51e7c44b28cfaef746c9d3c506d658885e0a46f9eeef2ee815cbf8e045", size = 2116626, upload-time = "2026-04-20T14:42:34.118Z" }, + { url = "https://files.pythonhosted.org/packages/ef/7c/17d30673351439a6951bf54f564cf2443ab00ae264ec9df00e2efd710eb5/pydantic_core-2.46.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ac5ec7fb9b87f04ee839af2d53bcadea57ded7d229719f56c0ed895bff987943", size = 2160691, upload-time = "2026-04-20T14:41:14.023Z" }, + { url = "https://files.pythonhosted.org/packages/86/66/af8adbcbc0886ead7f1a116606a534d75a307e71e6e08226000d51b880d2/pydantic_core-2.46.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a3b11c812f61b3129c4905781a2601dfdfdea5fe1e6c1cfb696b55d14e9c054f", size = 2182543, upload-time = "2026-04-20T14:40:48.886Z" }, + { url = "https://files.pythonhosted.org/packages/b0/37/6de71e0f54c54a4190010f57deb749e1ddf75c568ada3b1320b70067f121/pydantic_core-2.46.3-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:1108da631e602e5b3c38d6d04fe5bb3bfa54349e6918e3ca6cf570b2e2b2f9d4", size = 2324513, upload-time = "2026-04-20T14:42:36.121Z" }, + { url = "https://files.pythonhosted.org/packages/51/b1/9fc74ce94f603d5ef59ff258ca9c2c8fb902fb548d340a96f77f4d1c3b7f/pydantic_core-2.46.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:de885175515bcfa98ae618c1df7a072f13d179f81376c8007112af20567fd08a", size = 2361853, upload-time = "2026-04-20T14:43:24.886Z" }, + { url = "https://files.pythonhosted.org/packages/40/d0/4c652fc592db35f100279ee751d5a145aca1b9a7984b9684ba7c1b5b0535/pydantic_core-2.46.3-cp310-cp310-win32.whl", hash = "sha256:d11058e3201527d41bc6b545c79187c9e4bf85e15a236a6007f0e991518882b7", size = 1980465, upload-time = "2026-04-20T14:44:46.239Z" }, + { url = "https://files.pythonhosted.org/packages/27/b8/a920453c38afbe1f355e1ea0b0d94a0a3e0b0879d32d793108755fa171d5/pydantic_core-2.46.3-cp310-cp310-win_amd64.whl", hash = "sha256:3612edf65c8ea67ac13616c4d23af12faef1ae435a8a93e5934c2a0cbbdd1fd6", size = 2073884, upload-time = "2026-04-20T14:43:01.201Z" }, + { url = "https://files.pythonhosted.org/packages/22/a2/1ba90a83e85a3f94c796b184f3efde9c72f2830dcda493eea8d59ba78e6d/pydantic_core-2.46.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ab124d49d0459b2373ecf54118a45c28a1e6d4192a533fbc915e70f556feb8e5", size = 2106740, upload-time = "2026-04-20T14:41:20.932Z" }, + { url = "https://files.pythonhosted.org/packages/b6/f6/99ae893c89a0b9d3daec9f95487aa676709aa83f67643b3f0abaf4ab628a/pydantic_core-2.46.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cca67d52a5c7a16aed2b3999e719c4bcf644074eac304a5d3d62dd70ae7d4b2c", size = 1948293, upload-time = "2026-04-20T14:43:42.115Z" }, + { url = "https://files.pythonhosted.org/packages/3e/b8/2e8e636dc9e3f16c2e16bf0849e24be82c5ee82c603c65fc0326666328fc/pydantic_core-2.46.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c024e08c0ba23e6fd68c771a521e9d6a792f2ebb0fa734296b36394dc30390e", size = 1973222, upload-time = "2026-04-20T14:41:57.841Z" }, + { url = "https://files.pythonhosted.org/packages/34/36/0e730beec4d83c5306f417afbd82ff237d9a21e83c5edf675f31ed84c1fe/pydantic_core-2.46.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6645ce7eec4928e29a1e3b3d5c946621d105d3e79f0c9cddf07c2a9770949287", size = 2053852, upload-time = "2026-04-20T14:40:43.077Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f0/3071131f47e39136a17814576e0fada9168569f7f8c0e6ac4d1ede6a4958/pydantic_core-2.46.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a712c7118e6c5ea96562f7b488435172abb94a3c53c22c9efc1412264a45cbbe", size = 2221134, upload-time = "2026-04-20T14:43:03.349Z" }, + { url = "https://files.pythonhosted.org/packages/2f/a9/a2dc023eec5aa4b02a467874bad32e2446957d2adcab14e107eab502e978/pydantic_core-2.46.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:69a868ef3ff206343579021c40faf3b1edc64b1cc508ff243a28b0a514ccb050", size = 2279785, upload-time = "2026-04-20T14:41:19.285Z" }, + { url = "https://files.pythonhosted.org/packages/0a/44/93f489d16fb63fbd41c670441536541f6e8cfa1e5a69f40bc9c5d30d8c90/pydantic_core-2.46.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc7e8c32db809aa0f6ea1d6869ebc8518a65d5150fdfad8bcae6a49ae32a22e2", size = 2089404, upload-time = "2026-04-20T14:43:10.108Z" }, + { url = "https://files.pythonhosted.org/packages/2a/78/8692e3aa72b2d004f7a5d937f1dfdc8552ba26caf0bec75f342c40f00dec/pydantic_core-2.46.3-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:3481bd1341dc85779ee506bc8e1196a277ace359d89d28588a9468c3ecbe63fa", size = 2114898, upload-time = "2026-04-20T14:44:51.475Z" }, + { url = "https://files.pythonhosted.org/packages/6a/62/e83133f2e7832532060175cebf1f13748f4c7e7e7165cdd1f611f174494b/pydantic_core-2.46.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8690eba565c6d68ffd3a8655525cbdd5246510b44a637ee2c6c03a7ebfe64d3c", size = 2157856, upload-time = "2026-04-20T14:43:46.64Z" }, + { url = "https://files.pythonhosted.org/packages/6d/ec/6a500e3ad7718ee50583fae79c8651f5d37e3abce1fa9ae177ae65842c53/pydantic_core-2.46.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4de88889d7e88d50d40ee5b39d5dac0bcaef9ba91f7e536ac064e6b2834ecccf", size = 2180168, upload-time = "2026-04-20T14:42:00.302Z" }, + { url = "https://files.pythonhosted.org/packages/d8/53/8267811054b1aa7fc1dc7ded93812372ef79a839f5e23558136a6afbfde1/pydantic_core-2.46.3-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:e480080975c1ef7f780b8f99ed72337e7cc5efea2e518a20a692e8e7b278eb8b", size = 2322885, upload-time = "2026-04-20T14:41:05.253Z" }, + { url = "https://files.pythonhosted.org/packages/c8/c1/1c0acdb3aa0856ddc4ecc55214578f896f2de16f400cf51627eb3c26c1c4/pydantic_core-2.46.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:de3a5c376f8cd94da9a1b8fd3dd1c16c7a7b216ed31dc8ce9fd7a22bf13b836e", size = 2360328, upload-time = "2026-04-20T14:41:43.991Z" }, + { url = "https://files.pythonhosted.org/packages/f0/d0/ef39cd0f4a926814f360e71c1adeab48ad214d9727e4deb48eedfb5bce1a/pydantic_core-2.46.3-cp311-cp311-win32.whl", hash = "sha256:fc331a5314ffddd5385b9ee9d0d2fee0b13c27e0e02dad71b1ae5d6561f51eeb", size = 1979464, upload-time = "2026-04-20T14:43:12.215Z" }, + { url = "https://files.pythonhosted.org/packages/18/9c/f41951b0d858e343f1cf09398b2a7b3014013799744f2c4a8ad6a3eec4f2/pydantic_core-2.46.3-cp311-cp311-win_amd64.whl", hash = "sha256:b5b9c6cf08a8a5e502698f5e153056d12c34b8fb30317e0c5fd06f45162a6346", size = 2070837, upload-time = "2026-04-20T14:41:47.707Z" }, + { url = "https://files.pythonhosted.org/packages/9f/1e/264a17cd582f6ed50950d4d03dd5fefd84e570e238afe1cb3e25cf238769/pydantic_core-2.46.3-cp311-cp311-win_arm64.whl", hash = "sha256:5dfd51cf457482f04ec49491811a2b8fd5b843b64b11eecd2d7a1ee596ea78a6", size = 2053647, upload-time = "2026-04-20T14:42:27.535Z" }, + { url = "https://files.pythonhosted.org/packages/4b/cb/5b47425556ecc1f3fe18ed2a0083188aa46e1dd812b06e406475b3a5d536/pydantic_core-2.46.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b11b59b3eee90a80a36701ddb4576d9ae31f93f05cb9e277ceaa09e6bf074a67", size = 2101946, upload-time = "2026-04-20T14:40:52.581Z" }, + { url = "https://files.pythonhosted.org/packages/a1/4f/2fb62c2267cae99b815bbf4a7b9283812c88ca3153ef29f7707200f1d4e5/pydantic_core-2.46.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:af8653713055ea18a3abc1537fe2ebc42f5b0bbb768d1eb79fd74eb47c0ac089", size = 1951612, upload-time = "2026-04-20T14:42:42.996Z" }, + { url = "https://files.pythonhosted.org/packages/50/6e/b7348fd30d6556d132cddd5bd79f37f96f2601fe0608afac4f5fb01ec0b3/pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:75a519dab6d63c514f3a81053e5266c549679e4aa88f6ec57f2b7b854aceb1b0", size = 1977027, upload-time = "2026-04-20T14:42:02.001Z" }, + { url = "https://files.pythonhosted.org/packages/82/11/31d60ee2b45540d3fb0b29302a393dbc01cd771c473f5b5147bcd353e593/pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a6cd87cb1575b1ad05ba98894c5b5c96411ef678fa2f6ed2576607095b8d9789", size = 2063008, upload-time = "2026-04-20T14:44:17.952Z" }, + { url = "https://files.pythonhosted.org/packages/8a/db/3a9d1957181b59258f44a2300ab0f0be9d1e12d662a4f57bb31250455c52/pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f80a55484b8d843c8ada81ebf70a682f3f00a3d40e378c06cf17ecb44d280d7d", size = 2233082, upload-time = "2026-04-20T14:40:57.934Z" }, + { url = "https://files.pythonhosted.org/packages/9c/e1/3277c38792aeb5cfb18c2f0c5785a221d9ff4e149abbe1184d53d5f72273/pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3861f1731b90c50a3266316b9044f5c9b405eecb8e299b0a7120596334e4fe9c", size = 2304615, upload-time = "2026-04-20T14:42:12.584Z" }, + { url = "https://files.pythonhosted.org/packages/5e/d5/e3d9717c9eba10855325650afd2a9cba8e607321697f18953af9d562da2f/pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb528e295ed31570ac3dcc9bfdd6e0150bc11ce6168ac87a8082055cf1a67395", size = 2094380, upload-time = "2026-04-20T14:43:05.522Z" }, + { url = "https://files.pythonhosted.org/packages/a1/20/abac35dedcbfd66c6f0b03e4e3564511771d6c9b7ede10a362d03e110d9b/pydantic_core-2.46.3-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:367508faa4973b992b271ba1494acaab36eb7e8739d1e47be5035fb1ea225396", size = 2135429, upload-time = "2026-04-20T14:41:55.549Z" }, + { url = "https://files.pythonhosted.org/packages/6c/a5/41bfd1df69afad71b5cf0535055bccc73022715ad362edbc124bc1e021d7/pydantic_core-2.46.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ad3c826fe523e4becf4fe39baa44286cff85ef137c729a2c5e269afbfd0905d", size = 2174582, upload-time = "2026-04-20T14:41:45.96Z" }, + { url = "https://files.pythonhosted.org/packages/79/65/38d86ea056b29b2b10734eb23329b7a7672ca604df4f2b6e9c02d4ee22fe/pydantic_core-2.46.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ec638c5d194ef8af27db69f16c954a09797c0dc25015ad6123eb2c73a4d271ca", size = 2187533, upload-time = "2026-04-20T14:40:55.367Z" }, + { url = "https://files.pythonhosted.org/packages/b6/55/a1129141678a2026badc539ad1dee0a71d06f54c2f06a4bd68c030ac781b/pydantic_core-2.46.3-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:28ed528c45446062ee66edb1d33df5d88828ae167de76e773a3c7f64bd14e976", size = 2332985, upload-time = "2026-04-20T14:44:13.05Z" }, + { url = "https://files.pythonhosted.org/packages/d7/60/cb26f4077719f709e54819f4e8e1d43f4091f94e285eb6bd21e1190a7b7c/pydantic_core-2.46.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aed19d0c783886d5bd86d80ae5030006b45e28464218747dcf83dabfdd092c7b", size = 2373670, upload-time = "2026-04-20T14:41:53.421Z" }, + { url = "https://files.pythonhosted.org/packages/6b/7e/c3f21882bdf1d8d086876f81b5e296206c69c6082551d776895de7801fa0/pydantic_core-2.46.3-cp312-cp312-win32.whl", hash = "sha256:06d5d8820cbbdb4147578c1fe7ffcd5b83f34508cb9f9ab76e807be7db6ff0a4", size = 1966722, upload-time = "2026-04-20T14:44:30.588Z" }, + { url = "https://files.pythonhosted.org/packages/57/be/6b5e757b859013ebfbd7adba02f23b428f37c86dcbf78b5bb0b4ffd36e99/pydantic_core-2.46.3-cp312-cp312-win_amd64.whl", hash = "sha256:c3212fda0ee959c1dd04c60b601ec31097aaa893573a3a1abd0a47bcac2968c1", size = 2072970, upload-time = "2026-04-20T14:42:54.248Z" }, + { url = "https://files.pythonhosted.org/packages/bf/f8/a989b21cc75e9a32d24192ef700eea606521221a89faa40c919ce884f2b1/pydantic_core-2.46.3-cp312-cp312-win_arm64.whl", hash = "sha256:f1f8338dd7a7f31761f1f1a3c47503a9a3b34eea3c8b01fa6ee96408affb5e72", size = 2035963, upload-time = "2026-04-20T14:44:20.4Z" }, + { url = "https://files.pythonhosted.org/packages/9b/3c/9b5e8eb9821936d065439c3b0fb1490ffa64163bfe7e1595985a47896073/pydantic_core-2.46.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:12bc98de041458b80c86c56b24df1d23832f3e166cbaff011f25d187f5c62c37", size = 2102109, upload-time = "2026-04-20T14:41:24.219Z" }, + { url = "https://files.pythonhosted.org/packages/91/97/1c41d1f5a19f241d8069f1e249853bcce378cdb76eec8ab636d7bc426280/pydantic_core-2.46.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:85348b8f89d2c3508b65b16c3c33a4da22b8215138d8b996912bb1532868885f", size = 1951820, upload-time = "2026-04-20T14:42:14.236Z" }, + { url = "https://files.pythonhosted.org/packages/30/b4/d03a7ae14571bc2b6b3c7b122441154720619afe9a336fa3a95434df5e2f/pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1105677a6df914b1fb71a81b96c8cce7726857e1717d86001f29be06a25ee6f8", size = 1977785, upload-time = "2026-04-20T14:42:31.648Z" }, + { url = "https://files.pythonhosted.org/packages/ae/0c/4086f808834b59e3c8f1aa26df8f4b6d998cdcf354a143d18ef41529d1fe/pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:87082cd65669a33adeba5470769e9704c7cf026cc30afb9cc77fd865578ebaad", size = 2062761, upload-time = "2026-04-20T14:40:37.093Z" }, + { url = "https://files.pythonhosted.org/packages/fa/71/a649be5a5064c2df0db06e0a512c2281134ed2fcc981f52a657936a7527c/pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60e5f66e12c4f5212d08522963380eaaeac5ebd795826cfd19b2dfb0c7a52b9c", size = 2232989, upload-time = "2026-04-20T14:42:59.254Z" }, + { url = "https://files.pythonhosted.org/packages/a2/84/7756e75763e810b3a710f4724441d1ecc5883b94aacb07ca71c5fb5cfb69/pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b6cdf19bf84128d5e7c37e8a73a0c5c10d51103a650ac585d42dd6ae233f2b7f", size = 2303975, upload-time = "2026-04-20T14:41:32.287Z" }, + { url = "https://files.pythonhosted.org/packages/6c/35/68a762e0c1e31f35fa0dac733cbd9f5b118042853698de9509c8e5bf128b/pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:031bb17f4885a43773c8c763089499f242aee2ea85cf17154168775dccdecf35", size = 2095325, upload-time = "2026-04-20T14:42:47.685Z" }, + { url = "https://files.pythonhosted.org/packages/77/bf/1bf8c9a8e91836c926eae5e3e51dce009bf495a60ca56060689d3df3f340/pydantic_core-2.46.3-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:bcf2a8b2982a6673693eae7348ef3d8cf3979c1d63b54fca7c397a635cc68687", size = 2133368, upload-time = "2026-04-20T14:41:22.766Z" }, + { url = "https://files.pythonhosted.org/packages/e5/50/87d818d6bab915984995157ceb2380f5aac4e563dddbed6b56f0ed057aba/pydantic_core-2.46.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28e8cf2f52d72ced402a137145923a762cbb5081e48b34312f7a0c8f55928ec3", size = 2173908, upload-time = "2026-04-20T14:42:52.044Z" }, + { url = "https://files.pythonhosted.org/packages/91/88/a311fb306d0bd6185db41fa14ae888fb81d0baf648a761ae760d30819d33/pydantic_core-2.46.3-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:17eaface65d9fc5abb940003020309c1bf7a211f5f608d7870297c367e6f9022", size = 2186422, upload-time = "2026-04-20T14:43:29.55Z" }, + { url = "https://files.pythonhosted.org/packages/8f/79/28fd0d81508525ab2054fef7c77a638c8b5b0afcbbaeee493cf7c3fef7e1/pydantic_core-2.46.3-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:93fd339f23408a07e98950a89644f92c54d8729719a40b30c0a30bb9ebc55d23", size = 2332709, upload-time = "2026-04-20T14:42:16.134Z" }, + { url = "https://files.pythonhosted.org/packages/b3/21/795bf5fe5c0f379308b8ef19c50dedab2e7711dbc8d0c2acf08f1c7daa05/pydantic_core-2.46.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:23cbdb3aaa74dfe0837975dbf69b469753bbde8eacace524519ffdb6b6e89eb7", size = 2372428, upload-time = "2026-04-20T14:41:10.974Z" }, + { url = "https://files.pythonhosted.org/packages/45/b3/ed14c659cbe7605e3ef063077680a64680aec81eb1a04763a05190d49b7f/pydantic_core-2.46.3-cp313-cp313-win32.whl", hash = "sha256:610eda2e3838f401105e6326ca304f5da1e15393ae25dacae5c5c63f2c275b13", size = 1965601, upload-time = "2026-04-20T14:41:42.128Z" }, + { url = "https://files.pythonhosted.org/packages/ef/bb/adb70d9a762ddd002d723fbf1bd492244d37da41e3af7b74ad212609027e/pydantic_core-2.46.3-cp313-cp313-win_amd64.whl", hash = "sha256:68cc7866ed863db34351294187f9b729964c371ba33e31c26f478471c52e1ed0", size = 2071517, upload-time = "2026-04-20T14:43:36.096Z" }, + { url = "https://files.pythonhosted.org/packages/52/eb/66faefabebfe68bd7788339c9c9127231e680b11906368c67ce112fdb47f/pydantic_core-2.46.3-cp313-cp313-win_arm64.whl", hash = "sha256:f64b5537ac62b231572879cd08ec05600308636a5d63bcbdb15063a466977bec", size = 2035802, upload-time = "2026-04-20T14:43:38.507Z" }, + { url = "https://files.pythonhosted.org/packages/7f/db/a7bcb4940183fda36022cd18ba8dd12f2dff40740ec7b58ce7457befa416/pydantic_core-2.46.3-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:afa3aa644f74e290cdede48a7b0bee37d1c35e71b05105f6b340d484af536d9b", size = 2097614, upload-time = "2026-04-20T14:44:38.374Z" }, + { url = "https://files.pythonhosted.org/packages/24/35/e4066358a22e3e99519db370494c7528f5a2aa1367370e80e27e20283543/pydantic_core-2.46.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ced3310e51aa425f7f77da8bbbb5212616655bedbe82c70944320bc1dbe5e018", size = 1951896, upload-time = "2026-04-20T14:40:53.996Z" }, + { url = "https://files.pythonhosted.org/packages/87/92/37cf4049d1636996e4b888c05a501f40a43ff218983a551d57f9d5e14f0d/pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e29908922ce9da1a30b4da490bd1d3d82c01dcfdf864d2a74aacee674d0bfa34", size = 1979314, upload-time = "2026-04-20T14:41:49.446Z" }, + { url = "https://files.pythonhosted.org/packages/d8/36/9ff4d676dfbdfb2d591cf43f3d90ded01e15b1404fd101180ed2d62a2fd3/pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0c9ff69140423eea8ed2d5477df3ba037f671f5e897d206d921bc9fdc39613e7", size = 2056133, upload-time = "2026-04-20T14:42:23.574Z" }, + { url = "https://files.pythonhosted.org/packages/bc/f0/405b442a4d7ba855b06eec8b2bf9c617d43b8432d099dfdc7bf999293495/pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b675ab0a0d5b1c8fdb81195dc5bcefea3f3c240871cdd7ff9a2de8aa50772eb2", size = 2228726, upload-time = "2026-04-20T14:44:22.816Z" }, + { url = "https://files.pythonhosted.org/packages/e7/f8/65cd92dd5a0bd89ba277a98ecbfaf6fc36bbd3300973c7a4b826d6ab1391/pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0087084960f209a9a4af50ecd1fb063d9ad3658c07bb81a7a53f452dacbfb2ba", size = 2301214, upload-time = "2026-04-20T14:44:48.792Z" }, + { url = "https://files.pythonhosted.org/packages/fd/86/ef96a4c6e79e7a2d0410826a68fbc0eccc0fd44aa733be199d5fcac3bb87/pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed42e6cc8e1b0e2b9b96e2276bad70ae625d10d6d524aed0c93de974ae029f9f", size = 2099927, upload-time = "2026-04-20T14:41:40.196Z" }, + { url = "https://files.pythonhosted.org/packages/6d/53/269caf30e0096e0a8a8f929d1982a27b3879872cca2d917d17c2f9fdf4fe/pydantic_core-2.46.3-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:f1771ce258afb3e4201e67d154edbbae712a76a6081079fe247c2f53c6322c22", size = 2128789, upload-time = "2026-04-20T14:41:15.868Z" }, + { url = "https://files.pythonhosted.org/packages/00/b0/1a6d9b6a587e118482910c244a1c5acf4d192604174132efd12bf0ac486f/pydantic_core-2.46.3-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a7610b6a5242a6c736d8ad47fd5fff87fcfe8f833b281b1c409c3d6835d9227f", size = 2173815, upload-time = "2026-04-20T14:44:25.152Z" }, + { url = "https://files.pythonhosted.org/packages/87/56/e7e00d4041a7e62b5a40815590114db3b535bf3ca0bf4dca9f16cef25246/pydantic_core-2.46.3-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:ff5e7783bcc5476e1db448bf268f11cb257b1c276d3e89f00b5727be86dd0127", size = 2181608, upload-time = "2026-04-20T14:41:28.933Z" }, + { url = "https://files.pythonhosted.org/packages/e8/22/4bd23c3d41f7c185d60808a1de83c76cf5aeabf792f6c636a55c3b1ec7f9/pydantic_core-2.46.3-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:9d2e32edcc143bc01e95300671915d9ca052d4f745aa0a49c48d4803f8a85f2c", size = 2326968, upload-time = "2026-04-20T14:42:03.962Z" }, + { url = "https://files.pythonhosted.org/packages/24/ac/66cd45129e3915e5ade3b292cb3bc7fd537f58f8f8dbdaba6170f7cabb74/pydantic_core-2.46.3-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:6e42d83d1c6b87fa56b521479cff237e626a292f3b31b6345c15a99121b454c1", size = 2369842, upload-time = "2026-04-20T14:41:35.52Z" }, + { url = "https://files.pythonhosted.org/packages/a2/51/dd4248abb84113615473aa20d5545b7c4cd73c8644003b5259686f93996c/pydantic_core-2.46.3-cp314-cp314-win32.whl", hash = "sha256:07bc6d2a28c3adb4f7c6ae46aa4f2d2929af127f587ed44057af50bf1ce0f505", size = 1959661, upload-time = "2026-04-20T14:41:00.042Z" }, + { url = "https://files.pythonhosted.org/packages/20/eb/59980e5f1ae54a3b86372bd9f0fa373ea2d402e8cdcd3459334430f91e91/pydantic_core-2.46.3-cp314-cp314-win_amd64.whl", hash = "sha256:8940562319bc621da30714617e6a7eaa6b98c84e8c685bcdc02d7ed5e7c7c44e", size = 2071686, upload-time = "2026-04-20T14:43:16.471Z" }, + { url = "https://files.pythonhosted.org/packages/8c/db/1cf77e5247047dfee34bc01fa9bca134854f528c8eb053e144298893d370/pydantic_core-2.46.3-cp314-cp314-win_arm64.whl", hash = "sha256:5dcbbcf4d22210ced8f837c96db941bdb078f419543472aca5d9a0bb7cddc7df", size = 2026907, upload-time = "2026-04-20T14:43:31.732Z" }, + { url = "https://files.pythonhosted.org/packages/57/c0/b3df9f6a543276eadba0a48487b082ca1f201745329d97dbfa287034a230/pydantic_core-2.46.3-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:d0fe3dce1e836e418f912c1ad91c73357d03e556a4d286f441bf34fed2dbeecf", size = 2095047, upload-time = "2026-04-20T14:42:37.982Z" }, + { url = "https://files.pythonhosted.org/packages/66/57/886a938073b97556c168fd99e1a7305bb363cd30a6d2c76086bf0587b32a/pydantic_core-2.46.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:9ce92e58abc722dac1bf835a6798a60b294e48eb0e625ec9fd994b932ac5feee", size = 1934329, upload-time = "2026-04-20T14:43:49.655Z" }, + { url = "https://files.pythonhosted.org/packages/0b/7c/b42eaa5c34b13b07ecb51da21761297a9b8eb43044c864a035999998f328/pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a03e6467f0f5ab796a486146d1b887b2dc5e5f9b3288898c1b1c3ad974e53e4a", size = 1974847, upload-time = "2026-04-20T14:42:10.737Z" }, + { url = "https://files.pythonhosted.org/packages/e6/9b/92b42db6543e7de4f99ae977101a2967b63122d4b6cf7773812da2d7d5b5/pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2798b6ba041b9d70acfb9071a2ea13c8456dd1e6a5555798e41ba7b0790e329c", size = 2041742, upload-time = "2026-04-20T14:40:44.262Z" }, + { url = "https://files.pythonhosted.org/packages/0f/19/46fbe1efabb5aa2834b43b9454e70f9a83ad9c338c1291e48bdc4fecf167/pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9be3e221bdc6d69abf294dcf7aff6af19c31a5cdcc8f0aa3b14be29df4bd03b1", size = 2236235, upload-time = "2026-04-20T14:41:27.307Z" }, + { url = "https://files.pythonhosted.org/packages/77/da/b3f95bc009ad60ec53120f5d16c6faa8cabdbe8a20d83849a1f2b8728148/pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f13936129ce841f2a5ddf6f126fea3c43cd128807b5a59588c37cf10178c2e64", size = 2282633, upload-time = "2026-04-20T14:44:33.271Z" }, + { url = "https://files.pythonhosted.org/packages/cc/6e/401336117722e28f32fb8220df676769d28ebdf08f2f4469646d404c43a3/pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28b5f2ef03416facccb1c6ef744c69793175fd27e44ef15669201601cf423acb", size = 2109679, upload-time = "2026-04-20T14:44:41.065Z" }, + { url = "https://files.pythonhosted.org/packages/fc/53/b289f9bc8756a32fe718c46f55afaeaf8d489ee18d1a1e7be1db73f42cc4/pydantic_core-2.46.3-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:830d1247d77ad23852314f069e9d7ddafeec5f684baf9d7e7065ed46a049c4e6", size = 2108342, upload-time = "2026-04-20T14:42:50.144Z" }, + { url = "https://files.pythonhosted.org/packages/10/5b/8292fc7c1f9111f1b2b7c1b0dcf1179edcd014fc3ea4517499f50b829d71/pydantic_core-2.46.3-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0793c90c1a3c74966e7975eaef3ed30ebdff3260a0f815a62a22adc17e4c01c", size = 2157208, upload-time = "2026-04-20T14:42:08.133Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9e/f80044e9ec07580f057a89fc131f78dda7a58751ddf52bbe05eaf31db50f/pydantic_core-2.46.3-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:d2d0aead851b66f5245ec0c4fb2612ef457f8bbafefdf65a2bf9d6bac6140f47", size = 2167237, upload-time = "2026-04-20T14:42:25.412Z" }, + { url = "https://files.pythonhosted.org/packages/f8/84/6781a1b037f3b96be9227edbd1101f6d3946746056231bf4ac48cdff1a8d/pydantic_core-2.46.3-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:2f40e4246676beb31c5ce77c38a55ca4e465c6b38d11ea1bd935420568e0b1ab", size = 2312540, upload-time = "2026-04-20T14:40:40.313Z" }, + { url = "https://files.pythonhosted.org/packages/3e/db/19c0839feeb728e7df03255581f198dfdf1c2aeb1e174a8420b63c5252e5/pydantic_core-2.46.3-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:cf489cf8986c543939aeee17a09c04d6ffb43bfef8ca16fcbcc5cfdcbed24dba", size = 2369556, upload-time = "2026-04-20T14:41:09.427Z" }, + { url = "https://files.pythonhosted.org/packages/e0/15/3228774cb7cd45f5f721ddf1b2242747f4eb834d0c491f0c02d606f09fed/pydantic_core-2.46.3-cp314-cp314t-win32.whl", hash = "sha256:ffe0883b56cfc05798bf994164d2b2ff03efe2d22022a2bb080f3b626176dd56", size = 1949756, upload-time = "2026-04-20T14:41:25.717Z" }, + { url = "https://files.pythonhosted.org/packages/b8/2a/c79cf53fd91e5a87e30d481809f52f9a60dd221e39de66455cf04deaad37/pydantic_core-2.46.3-cp314-cp314t-win_amd64.whl", hash = "sha256:706d9d0ce9cf4593d07270d8e9f53b161f90c57d315aeec4fb4fd7a8b10240d8", size = 2051305, upload-time = "2026-04-20T14:43:18.627Z" }, + { url = "https://files.pythonhosted.org/packages/0b/db/d8182a7f1d9343a032265aae186eb063fe26ca4c40f256b21e8da4498e89/pydantic_core-2.46.3-cp314-cp314t-win_arm64.whl", hash = "sha256:77706aeb41df6a76568434701e0917da10692da28cb69d5fb6919ce5fdb07374", size = 2026310, upload-time = "2026-04-20T14:41:01.778Z" }, + { url = "https://files.pythonhosted.org/packages/66/7f/03dbad45cd3aa9083fbc93c210ae8b005af67e4136a14186950a747c6874/pydantic_core-2.46.3-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:9715525891ed524a0a1eb6d053c74d4d4ad5017677fb00af0b7c2644a31bae46", size = 2105683, upload-time = "2026-04-20T14:42:19.779Z" }, + { url = "https://files.pythonhosted.org/packages/26/22/4dc186ac8ea6b257e9855031f51b62a9637beac4d68ac06bee02f046f836/pydantic_core-2.46.3-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:9d2f400712a99a013aff420ef1eb9be077f8189a36c1e3ef87660b4e1088a874", size = 1940052, upload-time = "2026-04-20T14:43:59.274Z" }, + { url = "https://files.pythonhosted.org/packages/0d/ca/d376391a5aff1f2e8188960d7873543608130a870961c2b6b5236627c116/pydantic_core-2.46.3-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd2aab0e2e9dc2daf36bd2686c982535d5e7b1d930a1344a7bb6e82baab42a76", size = 1988172, upload-time = "2026-04-20T14:41:17.469Z" }, + { url = "https://files.pythonhosted.org/packages/0e/6b/523b9f85c23788755d6ab949329de692a2e3a584bc6beb67fef5e035aa9d/pydantic_core-2.46.3-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e9d76736da5f362fabfeea6a69b13b7f2be405c6d6966f06b2f6bfff7e64531", size = 2128596, upload-time = "2026-04-20T14:40:41.707Z" }, + { url = "https://files.pythonhosted.org/packages/34/42/f426db557e8ab2791bc7562052299944a118655496fbff99914e564c0a94/pydantic_core-2.46.3-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:b12dd51f1187c2eb489af8e20f880362db98e954b54ab792fa5d92e8bcc6b803", size = 2091877, upload-time = "2026-04-20T14:43:27.091Z" }, + { url = "https://files.pythonhosted.org/packages/5c/4f/86a832a9d14df58e663bfdf4627dc00d3317c2bd583c4fb23390b0f04b8e/pydantic_core-2.46.3-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:f00a0961b125f1a47af7bcc17f00782e12f4cd056f83416006b30111d941dfa3", size = 1932428, upload-time = "2026-04-20T14:40:45.781Z" }, + { url = "https://files.pythonhosted.org/packages/11/1a/fe857968954d93fb78e0d4b6df5c988c74c4aaa67181c60be7cfe327c0ca/pydantic_core-2.46.3-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57697d7c056aca4bbb680200f96563e841a6386ac1129370a0102592f4dddff5", size = 1997550, upload-time = "2026-04-20T14:44:02.425Z" }, + { url = "https://files.pythonhosted.org/packages/17/eb/9d89ad2d9b0ba8cd65393d434471621b98912abb10fbe1df08e480ba57b5/pydantic_core-2.46.3-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd35aa21299def8db7ef4fe5c4ff862941a9a158ca7b63d61e66fe67d30416b4", size = 2137657, upload-time = "2026-04-20T14:42:45.149Z" }, + { url = "https://files.pythonhosted.org/packages/1f/da/99d40830684f81dec901cac521b5b91c095394cc1084b9433393cde1c2df/pydantic_core-2.46.3-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:13afdd885f3d71280cf286b13b310ee0f7ccfefd1dbbb661514a474b726e2f25", size = 2107973, upload-time = "2026-04-20T14:42:06.175Z" }, + { url = "https://files.pythonhosted.org/packages/99/a5/87024121818d75bbb2a98ddbaf638e40e7a18b5e0f5492c9ca4b1b316107/pydantic_core-2.46.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:f91c0aff3e3ee0928edd1232c57f643a7a003e6edf1860bc3afcdc749cb513f3", size = 1947191, upload-time = "2026-04-20T14:43:14.319Z" }, + { url = "https://files.pythonhosted.org/packages/60/62/0c1acfe10945b83a6a59d19fbaa92f48825381509e5701b855c08f13db76/pydantic_core-2.46.3-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6529d1d128321a58d30afcc97b49e98836542f68dd41b33c2e972bb9e5290536", size = 2123791, upload-time = "2026-04-20T14:43:22.766Z" }, + { url = "https://files.pythonhosted.org/packages/75/3e/3b2393b4c8f44285561dc30b00cf307a56a2eff7c483a824db3b8221ca51/pydantic_core-2.46.3-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:975c267cff4f7e7272eacbe50f6cc03ca9a3da4c4fbd66fffd89c94c1e311aa1", size = 2153197, upload-time = "2026-04-20T14:44:27.932Z" }, + { url = "https://files.pythonhosted.org/packages/ba/75/5af02fb35505051eee727c061f2881c555ab4f8ddb2d42da715a42c9731b/pydantic_core-2.46.3-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:2b8e4f2bbdf71415c544b4b1138b8060db7b6611bc927e8064c769f64bed651c", size = 2181073, upload-time = "2026-04-20T14:43:20.729Z" }, + { url = "https://files.pythonhosted.org/packages/10/92/7e0e1bd9ca3c68305db037560ca2876f89b2647deb2f8b6319005de37505/pydantic_core-2.46.3-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:e61ea8e9fff9606d09178f577ff8ccdd7206ff73d6552bcec18e1033c4254b85", size = 2315886, upload-time = "2026-04-20T14:44:04.826Z" }, + { url = "https://files.pythonhosted.org/packages/b8/d8/101655f27eaf3e44558ead736b2795d12500598beed4683f279396fa186e/pydantic_core-2.46.3-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b504bda01bafc69b6d3c7a0c7f039dcf60f47fab70e06fe23f57b5c75bdc82b8", size = 2360528, upload-time = "2026-04-20T14:40:47.431Z" }, + { url = "https://files.pythonhosted.org/packages/07/0f/1c34a74c8d07136f0d729ffe5e1fdab04fbdaa7684f61a92f92511a84a15/pydantic_core-2.46.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:b00b76f7142fc60c762ce579bd29c8fa44aaa56592dd3c54fab3928d0d4ca6ff", size = 2184144, upload-time = "2026-04-20T14:42:57Z" }, +] + +[[package]] +name = "pydantic-settings" +version = "2.14.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydantic" }, + { name = "python-dotenv" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5c/b5/8f48e906c3e0205276e8bd8cb7512217a87b2685304d64be27cad5b3019f/pydantic_settings-2.14.2.tar.gz", hash = "sha256:c19dd64b19097f1de80184f0cc7b0272a13ae6e170cbf240a3e27e381ed14a5f", size = 237700, upload-time = "2026-06-19T13:44:56.324Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/c1/6e422f34e569cf8e18df68d1939c81c099d2b61e4f7d9621c8a77560799c/pydantic_settings-2.14.2-py3-none-any.whl", hash = "sha256:a20c97b37910b6550d5ea50fbcc2d4187defe58cd57070b73863d069419c9440", size = 61715, upload-time = "2026-06-19T13:44:55.02Z" }, +] + +[[package]] +name = "pygments" +version = "2.20.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f", size = 4955991, upload-time = "2026-03-29T13:29:33.898Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = 1231151, upload-time = "2026-03-29T13:29:30.038Z" }, +] + +[[package]] +name = "pyjwt" +version = "2.13.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3b/81/58d0ac84e1ef3a3843791d6954d94c0b33d526c75eeb1efbce9d0a4c4077/pyjwt-2.13.0.tar.gz", hash = "sha256:41571c89ca91598c79e8ef18a2d07367d4810fbbd6f637794879baf1b7703423", size = 107515, upload-time = "2026-05-21T19:54:36.618Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/5e/ecf12fdb62546d64385c158514e9b2b671f7832108ef2ecd2020ce0af2d1/pyjwt-2.13.0-py3-none-any.whl", hash = "sha256:66adcc2aff09b3f1bbd95fc1e1577df8ac8723c978552fd43304c8a290ac5728", size = 31274, upload-time = "2026-05-21T19:54:35.362Z" }, +] + +[package.optional-dependencies] +crypto = [ + { name = "cryptography" }, +] + +[[package]] +name = "python-dotenv" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, +] + +[[package]] +name = "python-multipart" +version = "0.0.31" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/64/7e/9b35ad8f3d9ca680f7c87a88f19612fdd8da9796c4d3b46e560ac79dcc4a/python_multipart-0.0.31.tar.gz", hash = "sha256:fc631183bb13e56db3158a4909908dfb2e23565286744e798241e63750e5d680", size = 46689, upload-time = "2026-06-04T08:27:49.014Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5e/1e/7f7f299527a5a8ad90acd5f2f78dfa6c8495c6301a3205106ea68a84de96/python_multipart-0.0.31-py3-none-any.whl", hash = "sha256:8408153d68a9773291fc1da39a8b85a50044bddbabd2dd72e9229776b7b15e28", size = 29996, upload-time = "2026-06-04T08:27:47.804Z" }, +] + +[[package]] +name = "pywin32" +version = "311" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/40/44efbb0dfbd33aca6a6483191dae0716070ed99e2ecb0c53683f400a0b4f/pywin32-311-cp310-cp310-win32.whl", hash = "sha256:d03ff496d2a0cd4a5893504789d4a15399133fe82517455e78bad62efbb7f0a3", size = 8760432, upload-time = "2025-07-14T20:13:05.9Z" }, + { url = "https://files.pythonhosted.org/packages/5e/bf/360243b1e953bd254a82f12653974be395ba880e7ec23e3731d9f73921cc/pywin32-311-cp310-cp310-win_amd64.whl", hash = "sha256:797c2772017851984b97180b0bebe4b620bb86328e8a884bb626156295a63b3b", size = 9590103, upload-time = "2025-07-14T20:13:07.698Z" }, + { url = "https://files.pythonhosted.org/packages/57/38/d290720e6f138086fb3d5ffe0b6caa019a791dd57866940c82e4eeaf2012/pywin32-311-cp310-cp310-win_arm64.whl", hash = "sha256:0502d1facf1fed4839a9a51ccbcc63d952cf318f78ffc00a7e78528ac27d7a2b", size = 8778557, upload-time = "2025-07-14T20:13:11.11Z" }, + { url = "https://files.pythonhosted.org/packages/7c/af/449a6a91e5d6db51420875c54f6aff7c97a86a3b13a0b4f1a5c13b988de3/pywin32-311-cp311-cp311-win32.whl", hash = "sha256:184eb5e436dea364dcd3d2316d577d625c0351bf237c4e9a5fabbcfa5a58b151", size = 8697031, upload-time = "2025-07-14T20:13:13.266Z" }, + { url = "https://files.pythonhosted.org/packages/51/8f/9bb81dd5bb77d22243d33c8397f09377056d5c687aa6d4042bea7fbf8364/pywin32-311-cp311-cp311-win_amd64.whl", hash = "sha256:3ce80b34b22b17ccbd937a6e78e7225d80c52f5ab9940fe0506a1a16f3dab503", size = 9508308, upload-time = "2025-07-14T20:13:15.147Z" }, + { url = "https://files.pythonhosted.org/packages/44/7b/9c2ab54f74a138c491aba1b1cd0795ba61f144c711daea84a88b63dc0f6c/pywin32-311-cp311-cp311-win_arm64.whl", hash = "sha256:a733f1388e1a842abb67ffa8e7aad0e70ac519e09b0f6a784e65a136ec7cefd2", size = 8703930, upload-time = "2025-07-14T20:13:16.945Z" }, + { url = "https://files.pythonhosted.org/packages/e7/ab/01ea1943d4eba0f850c3c61e78e8dd59757ff815ff3ccd0a84de5f541f42/pywin32-311-cp312-cp312-win32.whl", hash = "sha256:750ec6e621af2b948540032557b10a2d43b0cee2ae9758c54154d711cc852d31", size = 8706543, upload-time = "2025-07-14T20:13:20.765Z" }, + { url = "https://files.pythonhosted.org/packages/d1/a8/a0e8d07d4d051ec7502cd58b291ec98dcc0c3fff027caad0470b72cfcc2f/pywin32-311-cp312-cp312-win_amd64.whl", hash = "sha256:b8c095edad5c211ff31c05223658e71bf7116daa0ecf3ad85f3201ea3190d067", size = 9495040, upload-time = "2025-07-14T20:13:22.543Z" }, + { url = "https://files.pythonhosted.org/packages/ba/3a/2ae996277b4b50f17d61f0603efd8253cb2d79cc7ae159468007b586396d/pywin32-311-cp312-cp312-win_arm64.whl", hash = "sha256:e286f46a9a39c4a18b319c28f59b61de793654af2f395c102b4f819e584b5852", size = 8710102, upload-time = "2025-07-14T20:13:24.682Z" }, + { url = "https://files.pythonhosted.org/packages/a5/be/3fd5de0979fcb3994bfee0d65ed8ca9506a8a1260651b86174f6a86f52b3/pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d", size = 8705700, upload-time = "2025-07-14T20:13:26.471Z" }, + { url = "https://files.pythonhosted.org/packages/e3/28/e0a1909523c6890208295a29e05c2adb2126364e289826c0a8bc7297bd5c/pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d", size = 9494700, upload-time = "2025-07-14T20:13:28.243Z" }, + { url = "https://files.pythonhosted.org/packages/04/bf/90339ac0f55726dce7d794e6d79a18a91265bdf3aa70b6b9ca52f35e022a/pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a", size = 8709318, upload-time = "2025-07-14T20:13:30.348Z" }, + { url = "https://files.pythonhosted.org/packages/c9/31/097f2e132c4f16d99a22bfb777e0fd88bd8e1c634304e102f313af69ace5/pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee", size = 8840714, upload-time = "2025-07-14T20:13:32.449Z" }, + { url = "https://files.pythonhosted.org/packages/90/4b/07c77d8ba0e01349358082713400435347df8426208171ce297da32c313d/pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87", size = 9656800, upload-time = "2025-07-14T20:13:34.312Z" }, + { url = "https://files.pythonhosted.org/packages/c0/d2/21af5c535501a7233e734b8af901574572da66fcc254cb35d0609c9080dd/pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42", size = 8932540, upload-time = "2025-07-14T20:13:36.379Z" }, +] + +[[package]] +name = "referencing" +version = "0.37.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/22/f5/df4e9027acead3ecc63e50fe1e36aca1523e1719559c499951bb4b53188f/referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8", size = 78036, upload-time = "2025-10-13T15:30:48.871Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl", hash = "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231", size = 26766, upload-time = "2025-10-13T15:30:47.625Z" }, +] + +[[package]] +name = "rich" +version = "15.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c0/8f/0722ca900cc807c13a6a0c696dacf35430f72e0ec571c4275d2371fca3e9/rich-15.0.0.tar.gz", hash = "sha256:edd07a4824c6b40189fb7ac9bc4c52536e9780fbbfbddf6f1e2502c31b068c36", size = 230680, upload-time = "2026-04-12T08:24:00.75Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl", hash = "sha256:33bd4ef74232fb73fe9279a257718407f169c09b78a87ad3d296f548e27de0bb", size = 310654, upload-time = "2026-04-12T08:24:02.83Z" }, +] + +[[package]] +name = "rpds-py" +version = "0.30.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/af/3f2f423103f1113b36230496629986e0ef7e199d2aa8392452b484b38ced/rpds_py-0.30.0.tar.gz", hash = "sha256:dd8ff7cf90014af0c0f787eea34794ebf6415242ee1d6fa91eaba725cc441e84", size = 69469, upload-time = "2025-11-30T20:24:38.837Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/06/0c/0c411a0ec64ccb6d104dcabe0e713e05e153a9a2c3c2bd2b32ce412166fe/rpds_py-0.30.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:679ae98e00c0e8d68a7fda324e16b90fd5260945b45d3b824c892cec9eea3288", size = 370490, upload-time = "2025-11-30T20:21:33.256Z" }, + { url = "https://files.pythonhosted.org/packages/19/6a/4ba3d0fb7297ebae71171822554abe48d7cab29c28b8f9f2c04b79988c05/rpds_py-0.30.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4cc2206b76b4f576934f0ed374b10d7ca5f457858b157ca52064bdfc26b9fc00", size = 359751, upload-time = "2025-11-30T20:21:34.591Z" }, + { url = "https://files.pythonhosted.org/packages/cd/7c/e4933565ef7f7a0818985d87c15d9d273f1a649afa6a52ea35ad011195ea/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:389a2d49eded1896c3d48b0136ead37c48e221b391c052fba3f4055c367f60a6", size = 389696, upload-time = "2025-11-30T20:21:36.122Z" }, + { url = "https://files.pythonhosted.org/packages/5e/01/6271a2511ad0815f00f7ed4390cf2567bec1d4b1da39e2c27a41e6e3b4de/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:32c8528634e1bf7121f3de08fa85b138f4e0dc47657866630611b03967f041d7", size = 403136, upload-time = "2025-11-30T20:21:37.728Z" }, + { url = "https://files.pythonhosted.org/packages/55/64/c857eb7cd7541e9b4eee9d49c196e833128a55b89a9850a9c9ac33ccf897/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f207f69853edd6f6700b86efb84999651baf3789e78a466431df1331608e5324", size = 524699, upload-time = "2025-11-30T20:21:38.92Z" }, + { url = "https://files.pythonhosted.org/packages/9c/ed/94816543404078af9ab26159c44f9e98e20fe47e2126d5d32c9d9948d10a/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:67b02ec25ba7a9e8fa74c63b6ca44cf5707f2fbfadae3ee8e7494297d56aa9df", size = 412022, upload-time = "2025-11-30T20:21:40.407Z" }, + { url = "https://files.pythonhosted.org/packages/61/b5/707f6cf0066a6412aacc11d17920ea2e19e5b2f04081c64526eb35b5c6e7/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c0e95f6819a19965ff420f65578bacb0b00f251fefe2c8b23347c37174271f3", size = 390522, upload-time = "2025-11-30T20:21:42.17Z" }, + { url = "https://files.pythonhosted.org/packages/13/4e/57a85fda37a229ff4226f8cbcf09f2a455d1ed20e802ce5b2b4a7f5ed053/rpds_py-0.30.0-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:a452763cc5198f2f98898eb98f7569649fe5da666c2dc6b5ddb10fde5a574221", size = 404579, upload-time = "2025-11-30T20:21:43.769Z" }, + { url = "https://files.pythonhosted.org/packages/f9/da/c9339293513ec680a721e0e16bf2bac3db6e5d7e922488de471308349bba/rpds_py-0.30.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e0b65193a413ccc930671c55153a03ee57cecb49e6227204b04fae512eb657a7", size = 421305, upload-time = "2025-11-30T20:21:44.994Z" }, + { url = "https://files.pythonhosted.org/packages/f9/be/522cb84751114f4ad9d822ff5a1aa3c98006341895d5f084779b99596e5c/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:858738e9c32147f78b3ac24dc0edb6610000e56dc0f700fd5f651d0a0f0eb9ff", size = 572503, upload-time = "2025-11-30T20:21:46.91Z" }, + { url = "https://files.pythonhosted.org/packages/a2/9b/de879f7e7ceddc973ea6e4629e9b380213a6938a249e94b0cdbcc325bb66/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:da279aa314f00acbb803da1e76fa18666778e8a8f83484fba94526da5de2cba7", size = 598322, upload-time = "2025-11-30T20:21:48.709Z" }, + { url = "https://files.pythonhosted.org/packages/48/ac/f01fc22efec3f37d8a914fc1b2fb9bcafd56a299edbe96406f3053edea5a/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7c64d38fb49b6cdeda16ab49e35fe0da2e1e9b34bc38bd78386530f218b37139", size = 560792, upload-time = "2025-11-30T20:21:50.024Z" }, + { url = "https://files.pythonhosted.org/packages/e2/da/4e2b19d0f131f35b6146425f846563d0ce036763e38913d917187307a671/rpds_py-0.30.0-cp310-cp310-win32.whl", hash = "sha256:6de2a32a1665b93233cde140ff8b3467bdb9e2af2b91079f0333a0974d12d464", size = 221901, upload-time = "2025-11-30T20:21:51.32Z" }, + { url = "https://files.pythonhosted.org/packages/96/cb/156d7a5cf4f78a7cc571465d8aec7a3c447c94f6749c5123f08438bcf7bc/rpds_py-0.30.0-cp310-cp310-win_amd64.whl", hash = "sha256:1726859cd0de969f88dc8673bdd954185b9104e05806be64bcd87badbe313169", size = 235823, upload-time = "2025-11-30T20:21:52.505Z" }, + { url = "https://files.pythonhosted.org/packages/4d/6e/f964e88b3d2abee2a82c1ac8366da848fce1c6d834dc2132c3fda3970290/rpds_py-0.30.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a2bffea6a4ca9f01b3f8e548302470306689684e61602aa3d141e34da06cf425", size = 370157, upload-time = "2025-11-30T20:21:53.789Z" }, + { url = "https://files.pythonhosted.org/packages/94/ba/24e5ebb7c1c82e74c4e4f33b2112a5573ddc703915b13a073737b59b86e0/rpds_py-0.30.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dc4f992dfe1e2bc3ebc7444f6c7051b4bc13cd8e33e43511e8ffd13bf407010d", size = 359676, upload-time = "2025-11-30T20:21:55.475Z" }, + { url = "https://files.pythonhosted.org/packages/84/86/04dbba1b087227747d64d80c3b74df946b986c57af0a9f0c98726d4d7a3b/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:422c3cb9856d80b09d30d2eb255d0754b23e090034e1deb4083f8004bd0761e4", size = 389938, upload-time = "2025-11-30T20:21:57.079Z" }, + { url = "https://files.pythonhosted.org/packages/42/bb/1463f0b1722b7f45431bdd468301991d1328b16cffe0b1c2918eba2c4eee/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07ae8a593e1c3c6b82ca3292efbe73c30b61332fd612e05abee07c79359f292f", size = 402932, upload-time = "2025-11-30T20:21:58.47Z" }, + { url = "https://files.pythonhosted.org/packages/99/ee/2520700a5c1f2d76631f948b0736cdf9b0acb25abd0ca8e889b5c62ac2e3/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12f90dd7557b6bd57f40abe7747e81e0c0b119bef015ea7726e69fe550e394a4", size = 525830, upload-time = "2025-11-30T20:21:59.699Z" }, + { url = "https://files.pythonhosted.org/packages/e0/ad/bd0331f740f5705cc555a5e17fdf334671262160270962e69a2bdef3bf76/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:99b47d6ad9a6da00bec6aabe5a6279ecd3c06a329d4aa4771034a21e335c3a97", size = 412033, upload-time = "2025-11-30T20:22:00.991Z" }, + { url = "https://files.pythonhosted.org/packages/f8/1e/372195d326549bb51f0ba0f2ecb9874579906b97e08880e7a65c3bef1a99/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33f559f3104504506a44bb666b93a33f5d33133765b0c216a5bf2f1e1503af89", size = 390828, upload-time = "2025-11-30T20:22:02.723Z" }, + { url = "https://files.pythonhosted.org/packages/ab/2b/d88bb33294e3e0c76bc8f351a3721212713629ffca1700fa94979cb3eae8/rpds_py-0.30.0-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:946fe926af6e44f3697abbc305ea168c2c31d3e3ef1058cf68f379bf0335a78d", size = 404683, upload-time = "2025-11-30T20:22:04.367Z" }, + { url = "https://files.pythonhosted.org/packages/50/32/c759a8d42bcb5289c1fac697cd92f6fe01a018dd937e62ae77e0e7f15702/rpds_py-0.30.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:495aeca4b93d465efde585977365187149e75383ad2684f81519f504f5c13038", size = 421583, upload-time = "2025-11-30T20:22:05.814Z" }, + { url = "https://files.pythonhosted.org/packages/2b/81/e729761dbd55ddf5d84ec4ff1f47857f4374b0f19bdabfcf929164da3e24/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9a0ca5da0386dee0655b4ccdf46119df60e0f10da268d04fe7cc87886872ba7", size = 572496, upload-time = "2025-11-30T20:22:07.713Z" }, + { url = "https://files.pythonhosted.org/packages/14/f6/69066a924c3557c9c30baa6ec3a0aa07526305684c6f86c696b08860726c/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8d6d1cc13664ec13c1b84241204ff3b12f9bb82464b8ad6e7a5d3486975c2eed", size = 598669, upload-time = "2025-11-30T20:22:09.312Z" }, + { url = "https://files.pythonhosted.org/packages/5f/48/905896b1eb8a05630d20333d1d8ffd162394127b74ce0b0784ae04498d32/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3896fa1be39912cf0757753826bc8bdc8ca331a28a7c4ae46b7a21280b06bb85", size = 561011, upload-time = "2025-11-30T20:22:11.309Z" }, + { url = "https://files.pythonhosted.org/packages/22/16/cd3027c7e279d22e5eb431dd3c0fbc677bed58797fe7581e148f3f68818b/rpds_py-0.30.0-cp311-cp311-win32.whl", hash = "sha256:55f66022632205940f1827effeff17c4fa7ae1953d2b74a8581baaefb7d16f8c", size = 221406, upload-time = "2025-11-30T20:22:13.101Z" }, + { url = "https://files.pythonhosted.org/packages/fa/5b/e7b7aa136f28462b344e652ee010d4de26ee9fd16f1bfd5811f5153ccf89/rpds_py-0.30.0-cp311-cp311-win_amd64.whl", hash = "sha256:a51033ff701fca756439d641c0ad09a41d9242fa69121c7d8769604a0a629825", size = 236024, upload-time = "2025-11-30T20:22:14.853Z" }, + { url = "https://files.pythonhosted.org/packages/14/a6/364bba985e4c13658edb156640608f2c9e1d3ea3c81b27aa9d889fff0e31/rpds_py-0.30.0-cp311-cp311-win_arm64.whl", hash = "sha256:47b0ef6231c58f506ef0b74d44e330405caa8428e770fec25329ed2cb971a229", size = 229069, upload-time = "2025-11-30T20:22:16.577Z" }, + { url = "https://files.pythonhosted.org/packages/03/e7/98a2f4ac921d82f33e03f3835f5bf3a4a40aa1bfdc57975e74a97b2b4bdd/rpds_py-0.30.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a161f20d9a43006833cd7068375a94d035714d73a172b681d8881820600abfad", size = 375086, upload-time = "2025-11-30T20:22:17.93Z" }, + { url = "https://files.pythonhosted.org/packages/4d/a1/bca7fd3d452b272e13335db8d6b0b3ecde0f90ad6f16f3328c6fb150c889/rpds_py-0.30.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6abc8880d9d036ecaafe709079969f56e876fcf107f7a8e9920ba6d5a3878d05", size = 359053, upload-time = "2025-11-30T20:22:19.297Z" }, + { url = "https://files.pythonhosted.org/packages/65/1c/ae157e83a6357eceff62ba7e52113e3ec4834a84cfe07fa4b0757a7d105f/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca28829ae5f5d569bb62a79512c842a03a12576375d5ece7d2cadf8abe96ec28", size = 390763, upload-time = "2025-11-30T20:22:21.661Z" }, + { url = "https://files.pythonhosted.org/packages/d4/36/eb2eb8515e2ad24c0bd43c3ee9cd74c33f7ca6430755ccdb240fd3144c44/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a1010ed9524c73b94d15919ca4d41d8780980e1765babf85f9a2f90d247153dd", size = 408951, upload-time = "2025-11-30T20:22:23.408Z" }, + { url = "https://files.pythonhosted.org/packages/d6/65/ad8dc1784a331fabbd740ef6f71ce2198c7ed0890dab595adb9ea2d775a1/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8d1736cfb49381ba528cd5baa46f82fdc65c06e843dab24dd70b63d09121b3f", size = 514622, upload-time = "2025-11-30T20:22:25.16Z" }, + { url = "https://files.pythonhosted.org/packages/63/8e/0cfa7ae158e15e143fe03993b5bcd743a59f541f5952e1546b1ac1b5fd45/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d948b135c4693daff7bc2dcfc4ec57237a29bd37e60c2fabf5aff2bbacf3e2f1", size = 414492, upload-time = "2025-11-30T20:22:26.505Z" }, + { url = "https://files.pythonhosted.org/packages/60/1b/6f8f29f3f995c7ffdde46a626ddccd7c63aefc0efae881dc13b6e5d5bb16/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47f236970bccb2233267d89173d3ad2703cd36a0e2a6e92d0560d333871a3d23", size = 394080, upload-time = "2025-11-30T20:22:27.934Z" }, + { url = "https://files.pythonhosted.org/packages/6d/d5/a266341051a7a3ca2f4b750a3aa4abc986378431fc2da508c5034d081b70/rpds_py-0.30.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:2e6ecb5a5bcacf59c3f912155044479af1d0b6681280048b338b28e364aca1f6", size = 408680, upload-time = "2025-11-30T20:22:29.341Z" }, + { url = "https://files.pythonhosted.org/packages/10/3b/71b725851df9ab7a7a4e33cf36d241933da66040d195a84781f49c50490c/rpds_py-0.30.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a8fa71a2e078c527c3e9dc9fc5a98c9db40bcc8a92b4e8858e36d329f8684b51", size = 423589, upload-time = "2025-11-30T20:22:31.469Z" }, + { url = "https://files.pythonhosted.org/packages/00/2b/e59e58c544dc9bd8bd8384ecdb8ea91f6727f0e37a7131baeff8d6f51661/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:73c67f2db7bc334e518d097c6d1e6fed021bbc9b7d678d6cc433478365d1d5f5", size = 573289, upload-time = "2025-11-30T20:22:32.997Z" }, + { url = "https://files.pythonhosted.org/packages/da/3e/a18e6f5b460893172a7d6a680e86d3b6bc87a54c1f0b03446a3c8c7b588f/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5ba103fb455be00f3b1c2076c9d4264bfcb037c976167a6047ed82f23153f02e", size = 599737, upload-time = "2025-11-30T20:22:34.419Z" }, + { url = "https://files.pythonhosted.org/packages/5c/e2/714694e4b87b85a18e2c243614974413c60aa107fd815b8cbc42b873d1d7/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7cee9c752c0364588353e627da8a7e808a66873672bcb5f52890c33fd965b394", size = 563120, upload-time = "2025-11-30T20:22:35.903Z" }, + { url = "https://files.pythonhosted.org/packages/6f/ab/d5d5e3bcedb0a77f4f613706b750e50a5a3ba1c15ccd3665ecc636c968fd/rpds_py-0.30.0-cp312-cp312-win32.whl", hash = "sha256:1ab5b83dbcf55acc8b08fc62b796ef672c457b17dbd7820a11d6c52c06839bdf", size = 223782, upload-time = "2025-11-30T20:22:37.271Z" }, + { url = "https://files.pythonhosted.org/packages/39/3b/f786af9957306fdc38a74cef405b7b93180f481fb48453a114bb6465744a/rpds_py-0.30.0-cp312-cp312-win_amd64.whl", hash = "sha256:a090322ca841abd453d43456ac34db46e8b05fd9b3b4ac0c78bcde8b089f959b", size = 240463, upload-time = "2025-11-30T20:22:39.021Z" }, + { url = "https://files.pythonhosted.org/packages/f3/d2/b91dc748126c1559042cfe41990deb92c4ee3e2b415f6b5234969ffaf0cc/rpds_py-0.30.0-cp312-cp312-win_arm64.whl", hash = "sha256:669b1805bd639dd2989b281be2cfd951c6121b65e729d9b843e9639ef1fd555e", size = 230868, upload-time = "2025-11-30T20:22:40.493Z" }, + { url = "https://files.pythonhosted.org/packages/ed/dc/d61221eb88ff410de3c49143407f6f3147acf2538c86f2ab7ce65ae7d5f9/rpds_py-0.30.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f83424d738204d9770830d35290ff3273fbb02b41f919870479fab14b9d303b2", size = 374887, upload-time = "2025-11-30T20:22:41.812Z" }, + { url = "https://files.pythonhosted.org/packages/fd/32/55fb50ae104061dbc564ef15cc43c013dc4a9f4527a1f4d99baddf56fe5f/rpds_py-0.30.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e7536cd91353c5273434b4e003cbda89034d67e7710eab8761fd918ec6c69cf8", size = 358904, upload-time = "2025-11-30T20:22:43.479Z" }, + { url = "https://files.pythonhosted.org/packages/58/70/faed8186300e3b9bdd138d0273109784eea2396c68458ed580f885dfe7ad/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2771c6c15973347f50fece41fc447c054b7ac2ae0502388ce3b6738cd366e3d4", size = 389945, upload-time = "2025-11-30T20:22:44.819Z" }, + { url = "https://files.pythonhosted.org/packages/bd/a8/073cac3ed2c6387df38f71296d002ab43496a96b92c823e76f46b8af0543/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0a59119fc6e3f460315fe9d08149f8102aa322299deaa5cab5b40092345c2136", size = 407783, upload-time = "2025-11-30T20:22:46.103Z" }, + { url = "https://files.pythonhosted.org/packages/77/57/5999eb8c58671f1c11eba084115e77a8899d6e694d2a18f69f0ba471ec8b/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:76fec018282b4ead0364022e3c54b60bf368b9d926877957a8624b58419169b7", size = 515021, upload-time = "2025-11-30T20:22:47.458Z" }, + { url = "https://files.pythonhosted.org/packages/e0/af/5ab4833eadc36c0a8ed2bc5c0de0493c04f6c06de223170bd0798ff98ced/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:692bef75a5525db97318e8cd061542b5a79812d711ea03dbc1f6f8dbb0c5f0d2", size = 414589, upload-time = "2025-11-30T20:22:48.872Z" }, + { url = "https://files.pythonhosted.org/packages/b7/de/f7192e12b21b9e9a68a6d0f249b4af3fdcdff8418be0767a627564afa1f1/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9027da1ce107104c50c81383cae773ef5c24d296dd11c99e2629dbd7967a20c6", size = 394025, upload-time = "2025-11-30T20:22:50.196Z" }, + { url = "https://files.pythonhosted.org/packages/91/c4/fc70cd0249496493500e7cc2de87504f5aa6509de1e88623431fec76d4b6/rpds_py-0.30.0-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:9cf69cdda1f5968a30a359aba2f7f9aa648a9ce4b580d6826437f2b291cfc86e", size = 408895, upload-time = "2025-11-30T20:22:51.87Z" }, + { url = "https://files.pythonhosted.org/packages/58/95/d9275b05ab96556fefff73a385813eb66032e4c99f411d0795372d9abcea/rpds_py-0.30.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a4796a717bf12b9da9d3ad002519a86063dcac8988b030e405704ef7d74d2d9d", size = 422799, upload-time = "2025-11-30T20:22:53.341Z" }, + { url = "https://files.pythonhosted.org/packages/06/c1/3088fc04b6624eb12a57eb814f0d4997a44b0d208d6cace713033ff1a6ba/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5d4c2aa7c50ad4728a094ebd5eb46c452e9cb7edbfdb18f9e1221f597a73e1e7", size = 572731, upload-time = "2025-11-30T20:22:54.778Z" }, + { url = "https://files.pythonhosted.org/packages/d8/42/c612a833183b39774e8ac8fecae81263a68b9583ee343db33ab571a7ce55/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ba81a9203d07805435eb06f536d95a266c21e5b2dfbf6517748ca40c98d19e31", size = 599027, upload-time = "2025-11-30T20:22:56.212Z" }, + { url = "https://files.pythonhosted.org/packages/5f/60/525a50f45b01d70005403ae0e25f43c0384369ad24ffe46e8d9068b50086/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:945dccface01af02675628334f7cf49c2af4c1c904748efc5cf7bbdf0b579f95", size = 563020, upload-time = "2025-11-30T20:22:58.2Z" }, + { url = "https://files.pythonhosted.org/packages/0b/5d/47c4655e9bcd5ca907148535c10e7d489044243cc9941c16ed7cd53be91d/rpds_py-0.30.0-cp313-cp313-win32.whl", hash = "sha256:b40fb160a2db369a194cb27943582b38f79fc4887291417685f3ad693c5a1d5d", size = 223139, upload-time = "2025-11-30T20:23:00.209Z" }, + { url = "https://files.pythonhosted.org/packages/f2/e1/485132437d20aa4d3e1d8b3fb5a5e65aa8139f1e097080c2a8443201742c/rpds_py-0.30.0-cp313-cp313-win_amd64.whl", hash = "sha256:806f36b1b605e2d6a72716f321f20036b9489d29c51c91f4dd29a3e3afb73b15", size = 240224, upload-time = "2025-11-30T20:23:02.008Z" }, + { url = "https://files.pythonhosted.org/packages/24/95/ffd128ed1146a153d928617b0ef673960130be0009c77d8fbf0abe306713/rpds_py-0.30.0-cp313-cp313-win_arm64.whl", hash = "sha256:d96c2086587c7c30d44f31f42eae4eac89b60dabbac18c7669be3700f13c3ce1", size = 230645, upload-time = "2025-11-30T20:23:03.43Z" }, + { url = "https://files.pythonhosted.org/packages/ff/1b/b10de890a0def2a319a2626334a7f0ae388215eb60914dbac8a3bae54435/rpds_py-0.30.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:eb0b93f2e5c2189ee831ee43f156ed34e2a89a78a66b98cadad955972548be5a", size = 364443, upload-time = "2025-11-30T20:23:04.878Z" }, + { url = "https://files.pythonhosted.org/packages/0d/bf/27e39f5971dc4f305a4fb9c672ca06f290f7c4e261c568f3dea16a410d47/rpds_py-0.30.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:922e10f31f303c7c920da8981051ff6d8c1a56207dbdf330d9047f6d30b70e5e", size = 353375, upload-time = "2025-11-30T20:23:06.342Z" }, + { url = "https://files.pythonhosted.org/packages/40/58/442ada3bba6e8e6615fc00483135c14a7538d2ffac30e2d933ccf6852232/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdc62c8286ba9bf7f47befdcea13ea0e26bf294bda99758fd90535cbaf408000", size = 383850, upload-time = "2025-11-30T20:23:07.825Z" }, + { url = "https://files.pythonhosted.org/packages/14/14/f59b0127409a33c6ef6f5c1ebd5ad8e32d7861c9c7adfa9a624fc3889f6c/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:47f9a91efc418b54fb8190a6b4aa7813a23fb79c51f4bb84e418f5476c38b8db", size = 392812, upload-time = "2025-11-30T20:23:09.228Z" }, + { url = "https://files.pythonhosted.org/packages/b3/66/e0be3e162ac299b3a22527e8913767d869e6cc75c46bd844aa43fb81ab62/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f3587eb9b17f3789ad50824084fa6f81921bbf9a795826570bda82cb3ed91f2", size = 517841, upload-time = "2025-11-30T20:23:11.186Z" }, + { url = "https://files.pythonhosted.org/packages/3d/55/fa3b9cf31d0c963ecf1ba777f7cf4b2a2c976795ac430d24a1f43d25a6ba/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39c02563fc592411c2c61d26b6c5fe1e51eaa44a75aa2c8735ca88b0d9599daa", size = 408149, upload-time = "2025-11-30T20:23:12.864Z" }, + { url = "https://files.pythonhosted.org/packages/60/ca/780cf3b1a32b18c0f05c441958d3758f02544f1d613abf9488cd78876378/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51a1234d8febafdfd33a42d97da7a43f5dcb120c1060e352a3fbc0c6d36e2083", size = 383843, upload-time = "2025-11-30T20:23:14.638Z" }, + { url = "https://files.pythonhosted.org/packages/82/86/d5f2e04f2aa6247c613da0c1dd87fcd08fa17107e858193566048a1e2f0a/rpds_py-0.30.0-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:eb2c4071ab598733724c08221091e8d80e89064cd472819285a9ab0f24bcedb9", size = 396507, upload-time = "2025-11-30T20:23:16.105Z" }, + { url = "https://files.pythonhosted.org/packages/4b/9a/453255d2f769fe44e07ea9785c8347edaf867f7026872e76c1ad9f7bed92/rpds_py-0.30.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6bdfdb946967d816e6adf9a3d8201bfad269c67efe6cefd7093ef959683c8de0", size = 414949, upload-time = "2025-11-30T20:23:17.539Z" }, + { url = "https://files.pythonhosted.org/packages/a3/31/622a86cdc0c45d6df0e9ccb6becdba5074735e7033c20e401a6d9d0e2ca0/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c77afbd5f5250bf27bf516c7c4a016813eb2d3e116139aed0096940c5982da94", size = 565790, upload-time = "2025-11-30T20:23:19.029Z" }, + { url = "https://files.pythonhosted.org/packages/1c/5d/15bbf0fb4a3f58a3b1c67855ec1efcc4ceaef4e86644665fff03e1b66d8d/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:61046904275472a76c8c90c9ccee9013d70a6d0f73eecefd38c1ae7c39045a08", size = 590217, upload-time = "2025-11-30T20:23:20.885Z" }, + { url = "https://files.pythonhosted.org/packages/6d/61/21b8c41f68e60c8cc3b2e25644f0e3681926020f11d06ab0b78e3c6bbff1/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c5f36a861bc4b7da6516dbdf302c55313afa09b81931e8280361a4f6c9a2d27", size = 555806, upload-time = "2025-11-30T20:23:22.488Z" }, + { url = "https://files.pythonhosted.org/packages/f9/39/7e067bb06c31de48de3eb200f9fc7c58982a4d3db44b07e73963e10d3be9/rpds_py-0.30.0-cp313-cp313t-win32.whl", hash = "sha256:3d4a69de7a3e50ffc214ae16d79d8fbb0922972da0356dcf4d0fdca2878559c6", size = 211341, upload-time = "2025-11-30T20:23:24.449Z" }, + { url = "https://files.pythonhosted.org/packages/0a/4d/222ef0b46443cf4cf46764d9c630f3fe4abaa7245be9417e56e9f52b8f65/rpds_py-0.30.0-cp313-cp313t-win_amd64.whl", hash = "sha256:f14fc5df50a716f7ece6a80b6c78bb35ea2ca47c499e422aa4463455dd96d56d", size = 225768, upload-time = "2025-11-30T20:23:25.908Z" }, + { url = "https://files.pythonhosted.org/packages/86/81/dad16382ebbd3d0e0328776d8fd7ca94220e4fa0798d1dc5e7da48cb3201/rpds_py-0.30.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:68f19c879420aa08f61203801423f6cd5ac5f0ac4ac82a2368a9fcd6a9a075e0", size = 362099, upload-time = "2025-11-30T20:23:27.316Z" }, + { url = "https://files.pythonhosted.org/packages/2b/60/19f7884db5d5603edf3c6bce35408f45ad3e97e10007df0e17dd57af18f8/rpds_py-0.30.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ec7c4490c672c1a0389d319b3a9cfcd098dcdc4783991553c332a15acf7249be", size = 353192, upload-time = "2025-11-30T20:23:29.151Z" }, + { url = "https://files.pythonhosted.org/packages/bf/c4/76eb0e1e72d1a9c4703c69607cec123c29028bff28ce41588792417098ac/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f251c812357a3fed308d684a5079ddfb9d933860fc6de89f2b7ab00da481e65f", size = 384080, upload-time = "2025-11-30T20:23:30.785Z" }, + { url = "https://files.pythonhosted.org/packages/72/87/87ea665e92f3298d1b26d78814721dc39ed8d2c74b86e83348d6b48a6f31/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac98b175585ecf4c0348fd7b29c3864bda53b805c773cbf7bfdaffc8070c976f", size = 394841, upload-time = "2025-11-30T20:23:32.209Z" }, + { url = "https://files.pythonhosted.org/packages/77/ad/7783a89ca0587c15dcbf139b4a8364a872a25f861bdb88ed99f9b0dec985/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3e62880792319dbeb7eb866547f2e35973289e7d5696c6e295476448f5b63c87", size = 516670, upload-time = "2025-11-30T20:23:33.742Z" }, + { url = "https://files.pythonhosted.org/packages/5b/3c/2882bdac942bd2172f3da574eab16f309ae10a3925644e969536553cb4ee/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4e7fc54e0900ab35d041b0601431b0a0eb495f0851a0639b6ef90f7741b39a18", size = 408005, upload-time = "2025-11-30T20:23:35.253Z" }, + { url = "https://files.pythonhosted.org/packages/ce/81/9a91c0111ce1758c92516a3e44776920b579d9a7c09b2b06b642d4de3f0f/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47e77dc9822d3ad616c3d5759ea5631a75e5809d5a28707744ef79d7a1bcfcad", size = 382112, upload-time = "2025-11-30T20:23:36.842Z" }, + { url = "https://files.pythonhosted.org/packages/cf/8e/1da49d4a107027e5fbc64daeab96a0706361a2918da10cb41769244b805d/rpds_py-0.30.0-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:b4dc1a6ff022ff85ecafef7979a2c6eb423430e05f1165d6688234e62ba99a07", size = 399049, upload-time = "2025-11-30T20:23:38.343Z" }, + { url = "https://files.pythonhosted.org/packages/df/5a/7ee239b1aa48a127570ec03becbb29c9d5a9eb092febbd1699d567cae859/rpds_py-0.30.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4559c972db3a360808309e06a74628b95eaccbf961c335c8fe0d590cf587456f", size = 415661, upload-time = "2025-11-30T20:23:40.263Z" }, + { url = "https://files.pythonhosted.org/packages/70/ea/caa143cf6b772f823bc7929a45da1fa83569ee49b11d18d0ada7f5ee6fd6/rpds_py-0.30.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:0ed177ed9bded28f8deb6ab40c183cd1192aa0de40c12f38be4d59cd33cb5c65", size = 565606, upload-time = "2025-11-30T20:23:42.186Z" }, + { url = "https://files.pythonhosted.org/packages/64/91/ac20ba2d69303f961ad8cf55bf7dbdb4763f627291ba3d0d7d67333cced9/rpds_py-0.30.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:ad1fa8db769b76ea911cb4e10f049d80bf518c104f15b3edb2371cc65375c46f", size = 591126, upload-time = "2025-11-30T20:23:44.086Z" }, + { url = "https://files.pythonhosted.org/packages/21/20/7ff5f3c8b00c8a95f75985128c26ba44503fb35b8e0259d812766ea966c7/rpds_py-0.30.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:46e83c697b1f1c72b50e5ee5adb4353eef7406fb3f2043d64c33f20ad1c2fc53", size = 553371, upload-time = "2025-11-30T20:23:46.004Z" }, + { url = "https://files.pythonhosted.org/packages/72/c7/81dadd7b27c8ee391c132a6b192111ca58d866577ce2d9b0ca157552cce0/rpds_py-0.30.0-cp314-cp314-win32.whl", hash = "sha256:ee454b2a007d57363c2dfd5b6ca4a5d7e2c518938f8ed3b706e37e5d470801ed", size = 215298, upload-time = "2025-11-30T20:23:47.696Z" }, + { url = "https://files.pythonhosted.org/packages/3e/d2/1aaac33287e8cfb07aab2e6b8ac1deca62f6f65411344f1433c55e6f3eb8/rpds_py-0.30.0-cp314-cp314-win_amd64.whl", hash = "sha256:95f0802447ac2d10bcc69f6dc28fe95fdf17940367b21d34e34c737870758950", size = 228604, upload-time = "2025-11-30T20:23:49.501Z" }, + { url = "https://files.pythonhosted.org/packages/e8/95/ab005315818cc519ad074cb7784dae60d939163108bd2b394e60dc7b5461/rpds_py-0.30.0-cp314-cp314-win_arm64.whl", hash = "sha256:613aa4771c99f03346e54c3f038e4cc574ac09a3ddfb0e8878487335e96dead6", size = 222391, upload-time = "2025-11-30T20:23:50.96Z" }, + { url = "https://files.pythonhosted.org/packages/9e/68/154fe0194d83b973cdedcdcc88947a2752411165930182ae41d983dcefa6/rpds_py-0.30.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:7e6ecfcb62edfd632e56983964e6884851786443739dbfe3582947e87274f7cb", size = 364868, upload-time = "2025-11-30T20:23:52.494Z" }, + { url = "https://files.pythonhosted.org/packages/83/69/8bbc8b07ec854d92a8b75668c24d2abcb1719ebf890f5604c61c9369a16f/rpds_py-0.30.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a1d0bc22a7cdc173fedebb73ef81e07faef93692b8c1ad3733b67e31e1b6e1b8", size = 353747, upload-time = "2025-11-30T20:23:54.036Z" }, + { url = "https://files.pythonhosted.org/packages/ab/00/ba2e50183dbd9abcce9497fa5149c62b4ff3e22d338a30d690f9af970561/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d08f00679177226c4cb8c5265012eea897c8ca3b93f429e546600c971bcbae7", size = 383795, upload-time = "2025-11-30T20:23:55.556Z" }, + { url = "https://files.pythonhosted.org/packages/05/6f/86f0272b84926bcb0e4c972262f54223e8ecc556b3224d281e6598fc9268/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5965af57d5848192c13534f90f9dd16464f3c37aaf166cc1da1cae1fd5a34898", size = 393330, upload-time = "2025-11-30T20:23:57.033Z" }, + { url = "https://files.pythonhosted.org/packages/cb/e9/0e02bb2e6dc63d212641da45df2b0bf29699d01715913e0d0f017ee29438/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a4e86e34e9ab6b667c27f3211ca48f73dba7cd3d90f8d5b11be56e5dbc3fb4e", size = 518194, upload-time = "2025-11-30T20:23:58.637Z" }, + { url = "https://files.pythonhosted.org/packages/ee/ca/be7bca14cf21513bdf9c0606aba17d1f389ea2b6987035eb4f62bd923f25/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5d3e6b26f2c785d65cc25ef1e5267ccbe1b069c5c21b8cc724efee290554419", size = 408340, upload-time = "2025-11-30T20:24:00.2Z" }, + { url = "https://files.pythonhosted.org/packages/c2/c7/736e00ebf39ed81d75544c0da6ef7b0998f8201b369acf842f9a90dc8fce/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:626a7433c34566535b6e56a1b39a7b17ba961e97ce3b80ec62e6f1312c025551", size = 383765, upload-time = "2025-11-30T20:24:01.759Z" }, + { url = "https://files.pythonhosted.org/packages/4a/3f/da50dfde9956aaf365c4adc9533b100008ed31aea635f2b8d7b627e25b49/rpds_py-0.30.0-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:acd7eb3f4471577b9b5a41baf02a978e8bdeb08b4b355273994f8b87032000a8", size = 396834, upload-time = "2025-11-30T20:24:03.687Z" }, + { url = "https://files.pythonhosted.org/packages/4e/00/34bcc2565b6020eab2623349efbdec810676ad571995911f1abdae62a3a0/rpds_py-0.30.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fe5fa731a1fa8a0a56b0977413f8cacac1768dad38d16b3a296712709476fbd5", size = 415470, upload-time = "2025-11-30T20:24:05.232Z" }, + { url = "https://files.pythonhosted.org/packages/8c/28/882e72b5b3e6f718d5453bd4d0d9cf8df36fddeb4ddbbab17869d5868616/rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:74a3243a411126362712ee1524dfc90c650a503502f135d54d1b352bd01f2404", size = 565630, upload-time = "2025-11-30T20:24:06.878Z" }, + { url = "https://files.pythonhosted.org/packages/3b/97/04a65539c17692de5b85c6e293520fd01317fd878ea1995f0367d4532fb1/rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:3e8eeb0544f2eb0d2581774be4c3410356eba189529a6b3e36bbbf9696175856", size = 591148, upload-time = "2025-11-30T20:24:08.445Z" }, + { url = "https://files.pythonhosted.org/packages/85/70/92482ccffb96f5441aab93e26c4d66489eb599efdcf96fad90c14bbfb976/rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:dbd936cde57abfee19ab3213cf9c26be06d60750e60a8e4dd85d1ab12c8b1f40", size = 556030, upload-time = "2025-11-30T20:24:10.956Z" }, + { url = "https://files.pythonhosted.org/packages/20/53/7c7e784abfa500a2b6b583b147ee4bb5a2b3747a9166bab52fec4b5b5e7d/rpds_py-0.30.0-cp314-cp314t-win32.whl", hash = "sha256:dc824125c72246d924f7f796b4f63c1e9dc810c7d9e2355864b3c3a73d59ade0", size = 211570, upload-time = "2025-11-30T20:24:12.735Z" }, + { url = "https://files.pythonhosted.org/packages/d0/02/fa464cdfbe6b26e0600b62c528b72d8608f5cc49f96b8d6e38c95d60c676/rpds_py-0.30.0-cp314-cp314t-win_amd64.whl", hash = "sha256:27f4b0e92de5bfbc6f86e43959e6edd1425c33b5e69aab0984a72047f2bcf1e3", size = 226532, upload-time = "2025-11-30T20:24:14.634Z" }, + { url = "https://files.pythonhosted.org/packages/69/71/3f34339ee70521864411f8b6992e7ab13ac30d8e4e3309e07c7361767d91/rpds_py-0.30.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c2262bdba0ad4fc6fb5545660673925c2d2a5d9e2e0fb603aad545427be0fc58", size = 372292, upload-time = "2025-11-30T20:24:16.537Z" }, + { url = "https://files.pythonhosted.org/packages/57/09/f183df9b8f2d66720d2ef71075c59f7e1b336bec7ee4c48f0a2b06857653/rpds_py-0.30.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ee6af14263f25eedc3bb918a3c04245106a42dfd4f5c2285ea6f997b1fc3f89a", size = 362128, upload-time = "2025-11-30T20:24:18.086Z" }, + { url = "https://files.pythonhosted.org/packages/7a/68/5c2594e937253457342e078f0cc1ded3dd7b2ad59afdbf2d354869110a02/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3adbb8179ce342d235c31ab8ec511e66c73faa27a47e076ccc92421add53e2bb", size = 391542, upload-time = "2025-11-30T20:24:20.092Z" }, + { url = "https://files.pythonhosted.org/packages/49/5c/31ef1afd70b4b4fbdb2800249f34c57c64beb687495b10aec0365f53dfc4/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:250fa00e9543ac9b97ac258bd37367ff5256666122c2d0f2bc97577c60a1818c", size = 404004, upload-time = "2025-11-30T20:24:22.231Z" }, + { url = "https://files.pythonhosted.org/packages/e3/63/0cfbea38d05756f3440ce6534d51a491d26176ac045e2707adc99bb6e60a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9854cf4f488b3d57b9aaeb105f06d78e5529d3145b1e4a41750167e8c213c6d3", size = 527063, upload-time = "2025-11-30T20:24:24.302Z" }, + { url = "https://files.pythonhosted.org/packages/42/e6/01e1f72a2456678b0f618fc9a1a13f882061690893c192fcad9f2926553a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:993914b8e560023bc0a8bf742c5f303551992dcb85e247b1e5c7f4a7d145bda5", size = 413099, upload-time = "2025-11-30T20:24:25.916Z" }, + { url = "https://files.pythonhosted.org/packages/b8/25/8df56677f209003dcbb180765520c544525e3ef21ea72279c98b9aa7c7fb/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58edca431fb9b29950807e301826586e5bbf24163677732429770a697ffe6738", size = 392177, upload-time = "2025-11-30T20:24:27.834Z" }, + { url = "https://files.pythonhosted.org/packages/4a/b4/0a771378c5f16f8115f796d1f437950158679bcd2a7c68cf251cfb00ed5b/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:dea5b552272a944763b34394d04577cf0f9bd013207bc32323b5a89a53cf9c2f", size = 406015, upload-time = "2025-11-30T20:24:29.457Z" }, + { url = "https://files.pythonhosted.org/packages/36/d8/456dbba0af75049dc6f63ff295a2f92766b9d521fa00de67a2bd6427d57a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ba3af48635eb83d03f6c9735dfb21785303e73d22ad03d489e88adae6eab8877", size = 423736, upload-time = "2025-11-30T20:24:31.22Z" }, + { url = "https://files.pythonhosted.org/packages/13/64/b4d76f227d5c45a7e0b796c674fd81b0a6c4fbd48dc29271857d8219571c/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:dff13836529b921e22f15cb099751209a60009731a68519630a24d61f0b1b30a", size = 573981, upload-time = "2025-11-30T20:24:32.934Z" }, + { url = "https://files.pythonhosted.org/packages/20/91/092bacadeda3edf92bf743cc96a7be133e13a39cdbfd7b5082e7ab638406/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:1b151685b23929ab7beec71080a8889d4d6d9fa9a983d213f07121205d48e2c4", size = 599782, upload-time = "2025-11-30T20:24:35.169Z" }, + { url = "https://files.pythonhosted.org/packages/d1/b7/b95708304cd49b7b6f82fdd039f1748b66ec2b21d6a45180910802f1abf1/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ac37f9f516c51e5753f27dfdef11a88330f04de2d564be3991384b2f3535d02e", size = 562191, upload-time = "2025-11-30T20:24:36.853Z" }, +] + +[[package]] +name = "shellingham" +version = "1.5.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310, upload-time = "2023-10-24T04:13:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload-time = "2023-10-24T04:13:38.866Z" }, +] + +[[package]] +name = "sse-starlette" +version = "3.3.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "starlette" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/26/8c/f9290339ef6d79badbc010f067cd769d6601ec11a57d78569c683fb4dd87/sse_starlette-3.3.4.tar.gz", hash = "sha256:aaf92fc067af8a5427192895ac028e947b484ac01edbc3caf00e7e7137c7bef1", size = 32427, upload-time = "2026-03-29T09:00:23.307Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/7f/3de5402f39890ac5660b86bcf5c03f9d855dad5c4ed764866d7b592b46fd/sse_starlette-3.3.4-py3-none-any.whl", hash = "sha256:84bb06e58939a8b38d8341f1bc9792f06c2b53f48c608dd207582b664fc8f3c1", size = 14330, upload-time = "2026-03-29T09:00:21.846Z" }, +] + +[[package]] +name = "starlette" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/e3/7c1dc7381d9f8ab7d854328ebfa884e62cb3f3d8549ddfd37c7814f42afa/starlette-1.3.1.tar.gz", hash = "sha256:05d0213193f2fbaae60e2ecb593b4add4262ad4e46536b54abe36f11a71724e0", size = 2703240, upload-time = "2026-06-12T09:23:11.602Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/bb/2799cc2ede3ed41131f8975621e7213dfc7ef4acbbaadfa440f32500c370/starlette-1.3.1-py3-none-any.whl", hash = "sha256:c7372aae11c3c3f26a42df7bd626cec2f47d03483d261d369516a615a53714c6", size = 73632, upload-time = "2026-06-12T09:23:10.017Z" }, +] + +[[package]] +name = "typer" +version = "0.24.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-doc" }, + { name = "click" }, + { name = "rich" }, + { name = "shellingham" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/b8/9ebb531b6c2d377af08ac6746a5df3425b21853a5d2260876919b58a2a4a/typer-0.24.2.tar.gz", hash = "sha256:ec070dcfca1408e85ee203c6365001e818c3b7fffe686fd07ff2d68095ca0480", size = 119849, upload-time = "2026-04-22T17:45:34.413Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/d1/9484b497e0a0410b901c12b8251c3e746e1e863f7d28419ffe06f7892fda/typer-0.24.2-py3-none-any.whl", hash = "sha256:b618bc3d721f9a8d30f3e05565be26416d06e9bcc29d49bc491dc26aba674fa8", size = 55977, upload-time = "2026-04-22T17:45:33.055Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, +] + +[[package]] +name = "typing-inspection" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload-time = "2025-10-01T02:14:40.154Z" }, +] + +[[package]] +name = "uvicorn" +version = "0.46.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "h11" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1f/93/041fca8274050e40e6791f267d82e0e2e27dd165627bd640d3e0e378d877/uvicorn-0.46.0.tar.gz", hash = "sha256:fb9da0926999cc6cb22dc7cd71a94a632f078e6ae47ff683c5c420750fb7413d", size = 88758, upload-time = "2026-04-23T07:16:00.151Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/a3/5b1562db76a5a488274b2332a97199b32d0442aca0ed193697fd47786316/uvicorn-0.46.0-py3-none-any.whl", hash = "sha256:bbebbcbed972d162afca128605223022bedd345b7bc7855ce66deb31487a9048", size = 70926, upload-time = "2026-04-23T07:15:58.355Z" }, +] diff --git a/python/opendataloader-pdf/.gitignore b/python/opendataloader-pdf/.gitignore new file mode 100644 index 0000000..6068e0f --- /dev/null +++ b/python/opendataloader-pdf/.gitignore @@ -0,0 +1,13 @@ +# Build artifacts +dist/ +build/ +*.egg-info/ + +# Ignore JAR file +*.jar + +# Docs +README.md +LICENSE +NOTICE +THIRD_PARTY/ diff --git a/python/opendataloader-pdf/hatch_build.py b/python/opendataloader-pdf/hatch_build.py new file mode 100644 index 0000000..4a56181 --- /dev/null +++ b/python/opendataloader-pdf/hatch_build.py @@ -0,0 +1,69 @@ +"""Custom build hook for hatch to copy JAR and license files.""" + +import glob +import shutil +from pathlib import Path + +from hatchling.builders.hooks.plugin.interface import BuildHookInterface + + +class CustomBuildHook(BuildHookInterface): + def initialize(self, version, build_data): + root_dir = Path(self.root) + pkg_dir = root_dir / "src/opendataloader_pdf" + dest_jar_dir = pkg_dir / "jar" + dest_jar_path = dest_jar_dir / "opendataloader-pdf-cli.jar" + license_path = pkg_dir / "LICENSE" + notice_path = pkg_dir / "NOTICE" + third_party_dest = pkg_dir / "THIRD_PARTY" + + readme_path = root_dir / "README.md" + + # sdist-install code path: when users `pip install .tar.gz`, + # the extracted sdist already contains JAR/LICENSE/NOTICE/THIRD_PARTY + # (force-included via [tool.hatch.build] artifacts in pyproject.toml), + # and there is no java/ tree to rebuild from. Do not remove — sdist + # installs would break with a spurious "mvn package" error. + if ( + dest_jar_path.exists() + and license_path.exists() + and notice_path.exists() + and third_party_dest.exists() + and readme_path.exists() + ): + print("All required files already exist (building from sdist), skipping copy") + return + + # --- Copy JAR --- + print(f"Root DIR: {root_dir}") + source_jar_glob = str( + root_dir / "../../java/opendataloader-pdf-cli/target/opendataloader-pdf-cli-*.jar" + ) + resolved_glob_path = Path(source_jar_glob).resolve() + print(f"Searching for JAR file in: {resolved_glob_path}") + + source_jar_paths = glob.glob(source_jar_glob) + if not source_jar_paths: + raise RuntimeError( + f"Could not find the JAR file. Please run 'mvn package' in the 'java/' directory first. Searched in: {resolved_glob_path}" + ) + if len(source_jar_paths) > 1: + raise RuntimeError(f"Found multiple JAR files, expected one: {source_jar_paths}") + source_jar_path = source_jar_paths[0] + print(f"Found source JAR: {source_jar_path}") + + dest_jar_dir.mkdir(parents=True, exist_ok=True) + print(f"Copying JAR to {dest_jar_path}") + shutil.copy(source_jar_path, dest_jar_path) + + # --- Copy LICENSE, NOTICE --- + # README is copied by build-python.sh before this hook runs, because + # hatchling validates [project.readme] during metadata parsing, which + # happens before build hooks. Do not copy README here. + shutil.copy(root_dir / "../../LICENSE", license_path) + shutil.copy(root_dir / "../../NOTICE", notice_path) + third_party_src = root_dir / "../../THIRD_PARTY" + print(f"Copying THIRD_PARTY directory to {third_party_dest}") + if third_party_dest.exists(): + shutil.rmtree(third_party_dest) + shutil.copytree(third_party_src, third_party_dest) diff --git a/python/opendataloader-pdf/pyproject.toml b/python/opendataloader-pdf/pyproject.toml new file mode 100644 index 0000000..d2864e5 --- /dev/null +++ b/python/opendataloader-pdf/pyproject.toml @@ -0,0 +1,79 @@ +[project] +name = "opendataloader-pdf" +version = "0.0.0" +description = "A Python wrapper for the opendataloader-pdf Java CLI." +readme = "README.md" +license = "Apache-2.0" +requires-python = ">=3.10" +authors = [ + { name = "opendataloader-project", email = "open.dataloader@hancom.com" } +] +classifiers = [ + "Programming Language :: Python :: 3", + "Operating System :: OS Independent", +] +dependencies = [] + +[project.optional-dependencies] +hybrid = [ + "docling[easyocr]>=2.91.0", + "fastapi>=0.136.1", + "uvicorn>=0.46.0", + "python-multipart>=0.0.28", +] + +[project.scripts] +opendataloader-pdf = "opendataloader_pdf.wrapper:main" +opendataloader-pdf-hybrid = "opendataloader_pdf.hybrid_server:main" + +[project.urls] +Homepage = "https://github.com/opendataloader-project/opendataloader-pdf" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +# Shared by wheel and sdist: force-include gitignored build outputs +# (JAR, LICENSE, NOTICE, THIRD_PARTY) that hatch_build.py copies at build time. +[tool.hatch.build] +artifacts = [ + "src/opendataloader_pdf/jar/*.jar", + "src/opendataloader_pdf/LICENSE", + "src/opendataloader_pdf/NOTICE", + "src/opendataloader_pdf/THIRD_PARTY/**", +] + +[tool.hatch.build.targets.wheel] +packages = ["src/opendataloader_pdf"] + +[tool.hatch.build.targets.sdist] +include = [ + "src/opendataloader_pdf/**", + "README.md", + "hatch_build.py", +] + +[tool.hatch.build.hooks.custom] +path = "hatch_build.py" + +[dependency-groups] +dev = [ + "pytest>=9.0.3", + "pytest-asyncio>=1.3.0", + "httpx>=0.28.1", +] + +[tool.uv] +package = true + +[tool.black] +line-length = 100 + +[tool.ruff] +line-length = 100 +target-version = "py310" +exclude = ["dist", "build"] + +[tool.ruff.lint] +select = ["E", "F", "I"] +ignore = [] diff --git a/python/opendataloader-pdf/src/opendataloader_pdf/__init__.py b/python/opendataloader-pdf/src/opendataloader_pdf/__init__.py new file mode 100644 index 0000000..34b3636 --- /dev/null +++ b/python/opendataloader-pdf/src/opendataloader_pdf/__init__.py @@ -0,0 +1,3 @@ +from .wrapper import run, convert, run_jar + +__all__ = ["run", "convert", "run_jar"] diff --git a/python/opendataloader-pdf/src/opendataloader_pdf/__main__.py b/python/opendataloader-pdf/src/opendataloader_pdf/__main__.py new file mode 100644 index 0000000..cd9e8d5 --- /dev/null +++ b/python/opendataloader-pdf/src/opendataloader_pdf/__main__.py @@ -0,0 +1,5 @@ +from .wrapper import main + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/python/opendataloader-pdf/src/opendataloader_pdf/cli_options_generated.py b/python/opendataloader-pdf/src/opendataloader_pdf/cli_options_generated.py new file mode 100644 index 0000000..1a8d5fa --- /dev/null +++ b/python/opendataloader-pdf/src/opendataloader_pdf/cli_options_generated.py @@ -0,0 +1,308 @@ +# AUTO-GENERATED FROM options.json - DO NOT EDIT DIRECTLY +# Run `npm run generate-options` to regenerate + +""" +CLI option definitions for opendataloader-pdf. +""" +from typing import Any, Dict, List + + +# Option metadata list +CLI_OPTIONS: List[Dict[str, Any]] = [ + { + "name": "output-dir", + "python_name": "output_dir", + "short_name": "o", + "type": "string", + "required": False, + "default": None, + "description": "Directory where output files are written. Default: input file directory", + }, + { + "name": "password", + "python_name": "password", + "short_name": "p", + "type": "string", + "required": False, + "default": None, + "description": "Password for encrypted PDF files", + }, + { + "name": "format", + "python_name": "format", + "short_name": "f", + "type": "string", + "required": False, + "default": None, + "description": "Output formats (comma-separated). Values: json, text, html, pdf, markdown, tagged-pdf. Default: json. For HTML inside Markdown use --markdown-with-html. For image extraction control use --image-output.", + }, + { + "name": "quiet", + "python_name": "quiet", + "short_name": "q", + "type": "boolean", + "required": False, + "default": False, + "description": "Suppress console logging output", + }, + { + "name": "content-safety-off", + "python_name": "content_safety_off", + "short_name": None, + "type": "string", + "required": False, + "default": None, + "description": "Disable content safety filters. Values: all, hidden-text, off-page, tiny, hidden-ocg", + }, + { + "name": "sanitize", + "python_name": "sanitize", + "short_name": None, + "type": "boolean", + "required": False, + "default": False, + "description": "Enable sensitive data sanitization. Replaces emails, phone numbers, IPs, credit cards, and URLs with placeholders", + }, + { + "name": "keep-line-breaks", + "python_name": "keep_line_breaks", + "short_name": None, + "type": "boolean", + "required": False, + "default": False, + "description": "Preserve original line breaks in extracted text", + }, + { + "name": "replace-invalid-chars", + "python_name": "replace_invalid_chars", + "short_name": None, + "type": "string", + "required": False, + "default": " ", + "description": "Replacement character for invalid/unrecognized characters. Default: space", + }, + { + "name": "use-struct-tree", + "python_name": "use_struct_tree", + "short_name": None, + "type": "boolean", + "required": False, + "default": False, + "description": "Use PDF structure tree (tagged PDF) for reading order and semantic structure. Output quality depends on tag quality", + }, + { + "name": "table-method", + "python_name": "table_method", + "short_name": None, + "type": "string", + "required": False, + "default": "default", + "description": "Table detection method. Values: default (border-based), cluster (border + cluster). Default: default", + }, + { + "name": "reading-order", + "python_name": "reading_order", + "short_name": None, + "type": "string", + "required": False, + "default": "xycut", + "description": "Reading order algorithm. Values: off, xycut. Default: xycut", + }, + { + "name": "markdown-page-separator", + "python_name": "markdown_page_separator", + "short_name": None, + "type": "string", + "required": False, + "default": None, + "description": "Separator between pages in Markdown output. Use %%page-number%% for page numbers. Default: none", + }, + { + "name": "markdown-with-html", + "python_name": "markdown_with_html", + "short_name": None, + "type": "boolean", + "required": False, + "default": False, + "description": "Allow HTML tags inside Markdown output for complex structures such as multi-row-span tables. Implies --format markdown.", + }, + { + "name": "text-page-separator", + "python_name": "text_page_separator", + "short_name": None, + "type": "string", + "required": False, + "default": None, + "description": "Separator between pages in text output. Use %%page-number%% for page numbers. Default: none", + }, + { + "name": "html-page-separator", + "python_name": "html_page_separator", + "short_name": None, + "type": "string", + "required": False, + "default": None, + "description": "Separator between pages in HTML output. Use %%page-number%% for page numbers. Default: none", + }, + { + "name": "image-output", + "python_name": "image_output", + "short_name": None, + "type": "string", + "required": False, + "default": "external", + "description": "Image output mode. Values: off (no images), embedded (Base64 data URIs), external (file references). Default: external", + }, + { + "name": "image-format", + "python_name": "image_format", + "short_name": None, + "type": "string", + "required": False, + "default": "png", + "description": "Output format for extracted images. Values: png, jpeg. Default: png", + }, + { + "name": "image-dir", + "python_name": "image_dir", + "short_name": None, + "type": "string", + "required": False, + "default": None, + "description": "Directory for extracted images (applies only with --image-output external)", + }, + { + "name": "pages", + "python_name": "pages", + "short_name": None, + "type": "string", + "required": False, + "default": None, + "description": "Pages to extract (e.g., \"1,3,5-7\"). Default: all pages", + }, + { + "name": "include-header-footer", + "python_name": "include_header_footer", + "short_name": None, + "type": "boolean", + "required": False, + "default": False, + "description": "Include page headers and footers in output", + }, + { + "name": "detect-strikethrough", + "python_name": "detect_strikethrough", + "short_name": None, + "type": "boolean", + "required": False, + "default": False, + "description": "Detect strikethrough text and wrap with ~~ in Markdown output or tag in HTML output (experimental)", + }, + { + "name": "hybrid", + "python_name": "hybrid", + "short_name": None, + "type": "string", + "required": False, + "default": "off", + "description": "Hybrid backend (requires a running server). Quick start: pip install \"opendataloader-pdf[hybrid]\" && opendataloader-pdf-hybrid --port 5002. For remote servers use --hybrid-url. Values: off (default), docling-fast, hancom-ai", + }, + { + "name": "hybrid-mode", + "python_name": "hybrid_mode", + "short_name": None, + "type": "string", + "required": False, + "default": "auto", + "description": "Hybrid triage mode. Values: auto (default, dynamic triage), full (skip triage, all pages to backend)", + }, + { + "name": "hybrid-url", + "python_name": "hybrid_url", + "short_name": None, + "type": "string", + "required": False, + "default": None, + "description": "Hybrid backend server URL (overrides default)", + }, + { + "name": "hybrid-timeout", + "python_name": "hybrid_timeout", + "short_name": None, + "type": "string", + "required": False, + "default": "0", + "description": "Hybrid backend request timeout in milliseconds (0 = no timeout). Default: 0", + }, + { + "name": "hybrid-fallback", + "python_name": "hybrid_fallback", + "short_name": None, + "type": "boolean", + "required": False, + "default": False, + "description": "Opt in to Java fallback on hybrid backend error (default: disabled)", + }, + { + "name": "hybrid-hancom-ai-regionlist-strategy", + "python_name": "hybrid_hancom_ai_regionlist_strategy", + "short_name": None, + "type": "string", + "required": False, + "default": "table-first", + "description": "DLA label 7 (regionlist) handling. Requires --hybrid=hancom-ai. Values: table-first (default; check TSR overlap), list-only (skip TSR, always treat as list)", + }, + { + "name": "hybrid-hancom-ai-ocr-strategy", + "python_name": "hybrid_hancom_ai_ocr_strategy", + "short_name": None, + "type": "string", + "required": False, + "default": "auto", + "description": "OCR strategy. Requires --hybrid=hancom-ai. Values: off (stream-only), auto (default; stream first, OCR fallback), force (OCR-only)", + }, + { + "name": "hybrid-hancom-ai-image-cache", + "python_name": "hybrid_hancom_ai_image_cache", + "short_name": None, + "type": "string", + "required": False, + "default": "memory", + "description": "Page image cache backing. Requires --hybrid=hancom-ai. Values: memory (default), disk", + }, + { + "name": "to-stdout", + "python_name": "to_stdout", + "short_name": None, + "type": "boolean", + "required": False, + "default": False, + "description": "Write output to stdout instead of file (single format only)", + }, + { + "name": "threads", + "python_name": "threads", + "short_name": None, + "type": "string", + "required": False, + "default": "1", + "description": "Number of worker threads for per-page processing. Default: 1 (sequential, stable). Values >1 (experimental) run pages in parallel for faster throughput; output may vary slightly on some PDFs. Capped at the number of available CPU cores. Applies to the native Java pipeline only; ignored in --hybrid mode", + }, +] + + +def add_options_to_parser(parser) -> None: + """Add all CLI options to an argparse.ArgumentParser.""" + for opt in CLI_OPTIONS: + flags = [] + if opt["short_name"]: + flags.append(f'-{opt["short_name"]}') + flags.append(f'--{opt["name"]}') + + kwargs = {"help": opt["description"]} + if opt["type"] == "boolean": + kwargs["action"] = "store_true" + else: + kwargs["default"] = None + + parser.add_argument(*flags, **kwargs) diff --git a/python/opendataloader-pdf/src/opendataloader_pdf/convert_generated.py b/python/opendataloader-pdf/src/opendataloader_pdf/convert_generated.py new file mode 100644 index 0000000..a8921cf --- /dev/null +++ b/python/opendataloader-pdf/src/opendataloader_pdf/convert_generated.py @@ -0,0 +1,162 @@ +# AUTO-GENERATED FROM options.json - DO NOT EDIT DIRECTLY +# Run `npm run generate-options` to regenerate + +""" +Auto-generated convert function for opendataloader-pdf. +""" +from typing import List, Optional, Union + +from .runner import run_jar + + +def convert( + input_path: Union[str, List[str]], + output_dir: Optional[str] = None, + password: Optional[str] = None, + format: Optional[Union[str, List[str]]] = None, + quiet: bool = False, + content_safety_off: Optional[Union[str, List[str]]] = None, + sanitize: bool = False, + keep_line_breaks: bool = False, + replace_invalid_chars: Optional[str] = None, + use_struct_tree: bool = False, + table_method: Optional[str] = None, + reading_order: Optional[str] = None, + markdown_page_separator: Optional[str] = None, + markdown_with_html: bool = False, + text_page_separator: Optional[str] = None, + html_page_separator: Optional[str] = None, + image_output: Optional[str] = None, + image_format: Optional[str] = None, + image_dir: Optional[str] = None, + pages: Optional[str] = None, + include_header_footer: bool = False, + detect_strikethrough: bool = False, + hybrid: Optional[str] = None, + hybrid_mode: Optional[str] = None, + hybrid_url: Optional[str] = None, + hybrid_timeout: Optional[str] = None, + hybrid_fallback: bool = False, + hybrid_hancom_ai_regionlist_strategy: Optional[str] = None, + hybrid_hancom_ai_ocr_strategy: Optional[str] = None, + hybrid_hancom_ai_image_cache: Optional[str] = None, + to_stdout: bool = False, + threads: Optional[str] = None, +) -> None: + """ + Convert PDF(s) into the requested output format(s). + + Args: + input_path: One or more input PDF file paths or directories + output_dir: Directory where output files are written. Default: input file directory + password: Password for encrypted PDF files + format: Output formats (comma-separated). Values: json, text, html, pdf, markdown, tagged-pdf. Default: json. For HTML inside Markdown use --markdown-with-html. For image extraction control use --image-output. + quiet: Suppress console logging output + content_safety_off: Disable content safety filters. Values: all, hidden-text, off-page, tiny, hidden-ocg + sanitize: Enable sensitive data sanitization. Replaces emails, phone numbers, IPs, credit cards, and URLs with placeholders + keep_line_breaks: Preserve original line breaks in extracted text + replace_invalid_chars: Replacement character for invalid/unrecognized characters. Default: space + use_struct_tree: Use PDF structure tree (tagged PDF) for reading order and semantic structure. Output quality depends on tag quality + table_method: Table detection method. Values: default (border-based), cluster (border + cluster). Default: default + reading_order: Reading order algorithm. Values: off, xycut. Default: xycut + markdown_page_separator: Separator between pages in Markdown output. Use %page-number% for page numbers. Default: none + markdown_with_html: Allow HTML tags inside Markdown output for complex structures such as multi-row-span tables. Implies --format markdown. + text_page_separator: Separator between pages in text output. Use %page-number% for page numbers. Default: none + html_page_separator: Separator between pages in HTML output. Use %page-number% for page numbers. Default: none + image_output: Image output mode. Values: off (no images), embedded (Base64 data URIs), external (file references). Default: external + image_format: Output format for extracted images. Values: png, jpeg. Default: png + image_dir: Directory for extracted images (applies only with --image-output external) + pages: Pages to extract (e.g., "1,3,5-7"). Default: all pages + include_header_footer: Include page headers and footers in output + detect_strikethrough: Detect strikethrough text and wrap with ~~ in Markdown output or tag in HTML output (experimental) + hybrid: Hybrid backend (requires a running server). Quick start: pip install "opendataloader-pdf[hybrid]" && opendataloader-pdf-hybrid --port 5002. For remote servers use --hybrid-url. Values: off (default), docling-fast, hancom-ai + hybrid_mode: Hybrid triage mode. Values: auto (default, dynamic triage), full (skip triage, all pages to backend) + hybrid_url: Hybrid backend server URL (overrides default) + hybrid_timeout: Hybrid backend request timeout in milliseconds (0 = no timeout). Default: 0 + hybrid_fallback: Opt in to Java fallback on hybrid backend error (default: disabled) + hybrid_hancom_ai_regionlist_strategy: DLA label 7 (regionlist) handling. Requires --hybrid=hancom-ai. Values: table-first (default; check TSR overlap), list-only (skip TSR, always treat as list) + hybrid_hancom_ai_ocr_strategy: OCR strategy. Requires --hybrid=hancom-ai. Values: off (stream-only), auto (default; stream first, OCR fallback), force (OCR-only) + hybrid_hancom_ai_image_cache: Page image cache backing. Requires --hybrid=hancom-ai. Values: memory (default), disk + to_stdout: Write output to stdout instead of file (single format only) + threads: Number of worker threads for per-page processing. Default: 1 (sequential, stable). Values >1 (experimental) run pages in parallel for faster throughput; output may vary slightly on some PDFs. Capped at the number of available CPU cores. Applies to the native Java pipeline only; ignored in --hybrid mode + """ + args: List[str] = [] + + # Build input paths + if isinstance(input_path, list): + args.extend(input_path) + else: + args.append(input_path) + + if output_dir: + args.extend(["--output-dir", output_dir]) + if password: + args.extend(["--password", password]) + if format: + if isinstance(format, list): + if format: + args.extend(["--format", ",".join(format)]) + else: + args.extend(["--format", format]) + if quiet: + args.append("--quiet") + if content_safety_off: + if isinstance(content_safety_off, list): + if content_safety_off: + args.extend(["--content-safety-off", ",".join(content_safety_off)]) + else: + args.extend(["--content-safety-off", content_safety_off]) + if sanitize: + args.append("--sanitize") + if keep_line_breaks: + args.append("--keep-line-breaks") + if replace_invalid_chars: + args.extend(["--replace-invalid-chars", replace_invalid_chars]) + if use_struct_tree: + args.append("--use-struct-tree") + if table_method: + args.extend(["--table-method", table_method]) + if reading_order: + args.extend(["--reading-order", reading_order]) + if markdown_page_separator: + args.extend(["--markdown-page-separator", markdown_page_separator]) + if markdown_with_html: + args.append("--markdown-with-html") + if text_page_separator: + args.extend(["--text-page-separator", text_page_separator]) + if html_page_separator: + args.extend(["--html-page-separator", html_page_separator]) + if image_output: + args.extend(["--image-output", image_output]) + if image_format: + args.extend(["--image-format", image_format]) + if image_dir: + args.extend(["--image-dir", image_dir]) + if pages: + args.extend(["--pages", pages]) + if include_header_footer: + args.append("--include-header-footer") + if detect_strikethrough: + args.append("--detect-strikethrough") + if hybrid: + args.extend(["--hybrid", hybrid]) + if hybrid_mode: + args.extend(["--hybrid-mode", hybrid_mode]) + if hybrid_url: + args.extend(["--hybrid-url", hybrid_url]) + if hybrid_timeout: + args.extend(["--hybrid-timeout", hybrid_timeout]) + if hybrid_fallback: + args.append("--hybrid-fallback") + if hybrid_hancom_ai_regionlist_strategy: + args.extend(["--hybrid-hancom-ai-regionlist-strategy", hybrid_hancom_ai_regionlist_strategy]) + if hybrid_hancom_ai_ocr_strategy: + args.extend(["--hybrid-hancom-ai-ocr-strategy", hybrid_hancom_ai_ocr_strategy]) + if hybrid_hancom_ai_image_cache: + args.extend(["--hybrid-hancom-ai-image-cache", hybrid_hancom_ai_image_cache]) + if to_stdout: + args.append("--to-stdout") + if threads: + args.extend(["--threads", threads]) + + run_jar(args, quiet) diff --git a/python/opendataloader-pdf/src/opendataloader_pdf/hybrid_server.py b/python/opendataloader-pdf/src/opendataloader_pdf/hybrid_server.py new file mode 100644 index 0000000..73dc0ee --- /dev/null +++ b/python/opendataloader-pdf/src/opendataloader_pdf/hybrid_server.py @@ -0,0 +1,1035 @@ +#!/usr/bin/env python3 +"""Fast docling server using DocumentConverter singleton. + +A lightweight FastAPI server optimized for hybrid PDF processing: +1. Using a single DocumentConverter instance (no per-request initialization) +2. Returns only JSON (DoclingDocument format) - markdown/HTML generated by Java + +Usage: + opendataloader-pdf-hybrid [--port PORT] [--host HOST] [--ocr-lang LANG] + [--force-ocr | --no-ocr] [--ocr-engine ENGINE] [--psm N] + [--device DEVICE] + [--enrich-formula] [--enrich-picture-description] + [--max-file-size MB] + + # Default: http://localhost:5002 + opendataloader-pdf-hybrid + + # Custom port + opendataloader-pdf-hybrid --port 5003 + + # Disable OCR when the PDF already has reliable embedded text (#387) + opendataloader-pdf-hybrid --no-ocr + + # Use Tesseract for a language EasyOCR doesn't support (#439) + opendataloader-pdf-hybrid --ocr-engine tesseract --ocr-lang mal + + # Chinese + English OCR with force full-page OCR + opendataloader-pdf-hybrid --ocr-lang "ch_sim,en" --force-ocr + + # Korean OCR + opendataloader-pdf-hybrid --ocr-lang "ko" + + # Explicitly use Apple Silicon GPU (MPS) + opendataloader-pdf-hybrid --device mps + + # Force CPU-only processing + opendataloader-pdf-hybrid --device cpu + + # With formula enrichment (LaTeX extraction) + opendataloader-pdf-hybrid --enrich-formula + + # With picture description (alt text generation) + opendataloader-pdf-hybrid --enrich-picture-description + + # Combined: OCR + enrichments + opendataloader-pdf-hybrid --ocr-lang "en" --enrich-formula --enrich-picture-description + +API Endpoints: + GET /health - Health check + POST /v1/convert/file - Convert PDF to JSON + +The /v1/convert/file endpoint parameters: + - files: PDF file (multipart/form-data) + - page_ranges: Page range to process (optional) + +Requirements: + Install with hybrid extra: pip install opendataloader-pdf[hybrid] +""" + +import argparse +import asyncio +import logging +import os +import re +import sys +import tempfile +import threading +import time +import traceback + +# Enable docling per-step pipeline profiling (layout, ocr, table_structure, etc.) +# Must be set before docling settings singleton is instantiated. +os.environ.setdefault("DOCLING_DEBUG_PROFILE_PIPELINE_TIMINGS", "true") +from contextlib import asynccontextmanager +from typing import Any, Optional + +logging.basicConfig( + level=logging.INFO, + format="%(asctime)s - %(levelname)s - %(message)s", +) +logger = logging.getLogger(__name__) + +# Configuration +DEFAULT_HOST = "0.0.0.0" +DEFAULT_PORT = 5002 +MAX_FILE_SIZE = 0 # No file size limit by default (0 = unlimited) +UPLOAD_CHUNK_SIZE = 1024 * 1024 # 1MB chunks for streaming upload + +# OCR engine kinds we filter out from `--ocr-engine` choices. +# `kserve_v2_ocr` requires a separate KServe v2 / Triton inference server, which +# is unsuitable for the local hybrid mode this server is designed for. +# Single source of truth shared by `create_converter`, `main()` argparse, and tests +# to avoid drift between production and test code. +_OCR_ENGINE_DENYLIST = frozenset({"kserve_v2_ocr"}) + + +def _non_negative_int(value: str) -> int: + """Argparse type validator that rejects negative integers.""" + parsed = int(value) + if parsed < 0: + raise argparse.ArgumentTypeError("--max-file-size must be >= 0") + return parsed + + +# Global converter instance (initialized on startup with CLI options) +converter = None + +# Serialize converter.convert() calls. The converter singleton was designed for +# sequential use; this lock keeps that guarantee while allowing the event loop +# to stay responsive via asyncio.to_thread(). +_convert_lock = threading.Lock() + +# Regex matching lone surrogates (U+D800..U+DFFF) and null characters +_INVALID_UNICODE_RE = re.compile(r"[\ud800-\udfff\x00]") + + +def _extract_failed_pages_from_errors(errors: list[str]) -> list[int]: + """Extract failed page numbers from error messages. + + Docling error messages follow the pattern "Page N: " (e.g., + "Page 26: std::bad_alloc") or, when no error description is available, + a bare "Page N" with no colon. Even when docling includes failed pages + in the pages dict as empty entries, the error messages reliably + indicate which pages actually failed. + + Args: + errors: List of error message strings. + + Returns: + Sorted list of 1-indexed page numbers that failed. + """ + failed = set() + page_pattern = re.compile(r"^Page\s+(\d+)(?::|$)") + for msg in errors: + m = page_pattern.match(msg) + if m: + failed.add(int(m.group(1))) + return sorted(failed) + + +def extract_timings(result: Any) -> dict[str, Any]: + """Extract per-step pipeline timings from a Docling ConversionResult. + + Requires DOCLING_DEBUG_PROFILE_PIPELINE_TIMINGS=true (set at module level). + Returns a dict keyed by step name (e.g. "layout", "ocr", "table_structure") + with total_s, avg_s, and count for each step. + """ + timings_out: dict[str, Any] = {} + raw_timings = getattr(result, "timings", None) + if not raw_timings: + return timings_out + for name, item in raw_timings.items(): + try: + timings_out[name] = { + "total_s": round(item.total(), 4), + "avg_s": round(item.avg(), 4) if item.count > 0 else 0.0, + "count": item.count, + } + except Exception: + # Gracefully skip if ProfilingItem API changes + pass + return timings_out + + +def build_conversion_response( + status_value: str, + json_content: dict, + processing_time: float, + errors: list[str], + requested_pages: tuple[int, int] | None, + total_pages: int | None = None, + timings: dict[str, Any] | None = None, +) -> dict: + """Build a structured conversion response with status and failed page info. + + When Docling encounters errors (e.g., std::bad_alloc in PDF preprocessing), + it may still include failed pages as empty entries in the pages dict. + This function combines two strategies to detect failed pages: + 1. Parse page numbers from error messages ("Page N: ") + 2. Detect pages missing from the output pages dict (gap detection) + Both results are merged (union) since each catches a different failure mode. + + Args: + status_value: Docling ConversionStatus value as string (e.g., "success", "partial_success"). + json_content: The exported document dict from Docling. + processing_time: Time taken for conversion in seconds. + errors: List of error message strings from Docling. + requested_pages: Tuple of (start, end) 1-indexed page range, or None for all pages. + total_pages: Total page count of the input document (from Docling InputDocument). + Used to detect boundary page failures when requested_pages is None. + + Returns: + Response dict with status, document, errors, failed_pages, and processing_time. + """ + failed_pages: list[int] = [] + + if status_value == "partial_success": + # Strategy 1: Extract failed pages from error messages (reliable — + # docling may include failed pages as empty entries in the pages dict, + # making gap detection ineffective) + error_failed = set(_extract_failed_pages_from_errors(errors)) + + # Strategy 2: Detect pages missing from the pages dict (catches + # failures that don't produce "Page N:" error messages) + gap_failed: set[int] = set() + pages_dict = json_content.get("pages", {}) + present_pages = set() + for k in pages_dict.keys(): + try: + present_pages.add(int(k)) + except (ValueError, TypeError): + logger.warning("Unexpected non-integer page key in Docling output: %r", k) + + if requested_pages: + expected_pages = set(range(requested_pages[0], requested_pages[1] + 1)) + elif total_pages is not None: + expected_pages = set(range(1, total_pages + 1)) + elif present_pages: + logger.warning( + "No page range or total_pages available; boundary page failures cannot be detected" + ) + expected_pages = set(range(min(present_pages), max(present_pages) + 1)) + else: + expected_pages = set() + + gap_failed = expected_pages - present_pages + + # Union: each strategy catches a different failure mode + failed_pages = sorted(error_failed | gap_failed) + + response: dict[str, Any] = { + "status": status_value, + "document": { + "json_content": json_content, + }, + "processing_time": processing_time, + "errors": errors, + "failed_pages": failed_pages, + } + + if timings: + response["timings"] = timings + + return response + + +def sanitize_unicode(data: Any) -> Any: + """Recursively replace lone surrogates and null characters with U+FFFD. + + Docling OCR can produce lone surrogates (U+D800-U+DFFF) and null characters + from PDFs with malformed font encodings. These pass through json.dumps(ensure_ascii=False) + but fail on .encode('utf-8') in Starlette's JSONResponse.render(), causing + UnicodeEncodeError and a 500 response. + + This mirrors the Java-side TextProcessor.replaceUndefinedCharacters(). + + Args: + data: Arbitrary data structure (dict, list, str, or primitive) from + Docling's export_to_dict() output. + + Returns: + The same structure with problematic characters replaced by U+FFFD. + """ + if isinstance(data, str): + return _INVALID_UNICODE_RE.sub("\ufffd", data) + if isinstance(data, dict): + return {k: sanitize_unicode(v) for k, v in data.items()} + if isinstance(data, list): + return [sanitize_unicode(item) for item in data] + return data + + +def _get_loop_setting() -> str: + """Return the uvicorn event loop setting appropriate for the current platform. + + uvloop is not supported on Windows, so we force 'asyncio' there. + On other platforms, 'auto' lets uvicorn use uvloop if available. + """ + if sys.platform == "win32": + return "asyncio" + return "auto" + + +def _check_dependencies(): + """Check if hybrid dependencies are installed.""" + missing = [] + try: + import uvicorn # noqa: F401 + except ImportError: + missing.append("uvicorn") + try: + import fastapi # noqa: F401 + except ImportError: + missing.append("fastapi") + try: + import docling # noqa: F401 + except ImportError: + missing.append("docling") + + if missing: + raise ImportError( + f"Missing dependencies: {', '.join(missing)}. " + "Install with: pip install opendataloader-pdf[hybrid]" + ) + + +def _check_ocr_engine_available(engine_kind: str) -> tuple[bool, str]: + """Probe runtime prerequisites for the selected OCR engine. + + Called at startup so a missing binary or Python package surfaces before the + first request rather than mid-conversion. Returns (ok, error_message). + + `easyocr` ships with the `[hybrid]` extra and `auto` defers engine choice to + docling at conversion time, so both are treated as always available. Other + engines pull in extra system or Python dependencies that are not declared + in pyproject and must be installed by the user. + """ + import importlib.util + import shutil + + if engine_kind in ("auto", "easyocr"): + return True, "" + + if engine_kind == "tesseract": + # docling's TesseractCliOcrOptions shells out to the `tesseract` binary. + if shutil.which("tesseract") is None: + return False, ( + "OCR engine 'tesseract' selected but the `tesseract` binary was not " + "found on PATH. Install Tesseract for your platform " + "(e.g., `brew install tesseract`, `apt install tesseract-ocr`, " + "`choco install tesseract`) and ensure the language data files for " + "your --ocr-lang are installed (e.g., `tesseract-ocr-mal` for Malayalam)." + ) + return True, "" + + if engine_kind == "tesserocr": + if importlib.util.find_spec("tesserocr") is None: + return False, ( + "OCR engine 'tesserocr' selected but the `tesserocr` Python package " + "is not installed. Install it with `pip install tesserocr` " + "(libtesseract must also be available at runtime; on Windows install " + "a wheel that matches your installed Tesseract major version)." + ) + return True, "" + + if engine_kind == "rapidocr": + # rapidocr's default backend is ONNX Runtime; docling 2.91 imports + # `from rapidocr import EngineType, RapidOCR` and routes through it. + if importlib.util.find_spec("rapidocr") is None: + return False, ( + "OCR engine 'rapidocr' selected but the `rapidocr` Python package " + "is not installed. Install it with `pip install rapidocr onnxruntime`." + ) + if importlib.util.find_spec("onnxruntime") is None: + return False, ( + "OCR engine 'rapidocr' selected but `onnxruntime` is not installed. " + "rapidocr's default backend requires it. Install with " + "`pip install onnxruntime` (or, for GPU, `pip install onnxruntime-gpu`)." + ) + return True, "" + + if engine_kind == "ocrmac": + if sys.platform != "darwin": + return False, ( + "OCR engine 'ocrmac' selected but this is not macOS " + f"(platform={sys.platform!r}). The ocrmac engine uses Apple's Vision " + "framework and only runs on macOS." + ) + if importlib.util.find_spec("ocrmac") is None: + return False, ( + "OCR engine 'ocrmac' selected but the `ocrmac` Python package " + "is not installed. Install it with `pip install ocrmac`." + ) + return True, "" + + # Unknown engine kind — fail closed. argparse `choices` filters the CLI + # surface, so this branch is reachable via direct programmatic calls or + # when docling registers a new engine kind we haven't added a probe for. + # Falling through to True would silently green-light unverified engines + # and defer the failure to the first conversion request. + return False, ( + f"OCR engine {engine_kind!r} is not recognized by the availability " + "probe. Add a probe branch for this engine kind in " + "`_check_ocr_engine_available()`." + ) + + +def create_converter( + force_full_page_ocr: bool = False, + disable_ocr: bool = False, + ocr_engine: str = "easyocr", + psm: int | None = None, + ocr_lang: list[str] | None = None, + enrich_formula: bool = False, + enrich_picture_description: bool = False, + picture_description_prompt: str | None = None, + device: str = "auto", +): + """Create a DocumentConverter with the specified options. + + Args: + force_full_page_ocr: If True, force OCR on all pages regardless of text content. + If False (default), OCR only where needed. + disable_ocr: If True, disable OCR entirely (do_ocr=False). Useful when input PDFs + already have reliable embedded text — prevents duplicate text extraction + from images (charts, diagrams, screenshots). Mutually exclusive with + force_full_page_ocr at the CLI level. + ocr_engine: OCR engine kind to use. Engine availability is delegated to docling's + factory (`get_ocr_factory`). Each engine has its own license, language + coverage, and accuracy characteristics; this project does not validate + engine accuracy. Default: "easyocr" (preserves prior behavior). + psm: Tesseract Page Segmentation Mode. Only applied when ocr_engine is + "tesseract" or "tesserocr". Ignored otherwise. Range and semantics + are owned by Tesseract / docling; see `tesseract --help-extra`. + ocr_lang: List of OCR language codes. The code system depends on the chosen engine + (EasyOCR uses 'ko,en', Tesseract uses 'kor,eng', RapidOCR uses + 'english,chinese', ocrmac uses 'en-US'). If None, the engine's default + languages are used. + enrich_formula: If True, enable formula enrichment (LaTeX extraction). + enrich_picture_description: If True, enable picture description (alt text generation). + picture_description_prompt: Custom prompt forwarded to the VLM. If None or blank/whitespace-only, docling's default prompt is used. + device: Accelerator device for model inference. Options: "auto", "cpu", "cuda", "mps", "xpu". + "auto" lets Docling select the best available device. Default: "auto". + """ + from docling.datamodel.accelerator_options import AcceleratorOptions + from docling.datamodel.base_models import InputFormat + from docling.datamodel.pipeline_options import ( + AcceleratorOptions, + PdfPipelineOptions, + PictureDescriptionVlmOptions, + TableFormerMode, + TableStructureOptions, + TesseractCliOcrOptions, + TesseractOcrOptions, + ) + from docling.document_converter import DocumentConverter, PdfFormatOption + from docling.models.factories import get_ocr_factory + + # Delegate engine selection to docling's factory. We block external plugins for + # security/reproducibility; the module-level _OCR_ENGINE_DENYLIST filters + # engines unsuitable for hybrid local mode (e.g., remote inference servers). + ocr_factory = get_ocr_factory(allow_external_plugins=False) + if ocr_engine in _OCR_ENGINE_DENYLIST: + # Programmatic callers (importing this module) bypass argparse `choices`, + # so enforce the denylist here too. Without this, the module-level claim + # that `_OCR_ENGINE_DENYLIST` is shared across CLI and create_converter + # would only be true at the CLI layer. + available = sorted(set(ocr_factory.registered_kind) - _OCR_ENGINE_DENYLIST) + raise ValueError( + f"OCR engine '{ocr_engine}' is not supported in hybrid local mode " + f"(filtered by _OCR_ENGINE_DENYLIST). Available engines: {available}" + ) + try: + ocr_options = ocr_factory.create_options( + kind=ocr_engine, + force_full_page_ocr=force_full_page_ocr, + ) + except RuntimeError as e: + # Library-friendly error type so programmatic callers can catch and retry + # with a different engine. main() relies on argparse `choices` to gate + # invalid CLI input, so this branch is reached only via direct calls. + available = sorted(set(ocr_factory.registered_kind) - _OCR_ENGINE_DENYLIST) + raise ValueError( + f"Unknown ocr_engine '{ocr_engine}': {e}\nAvailable engines: {available}" + ) from e + + if ocr_lang: + ocr_options.lang = ocr_lang + + # Tesseract-only: Page Segmentation Mode + if psm is not None and isinstance( + ocr_options, (TesseractOcrOptions, TesseractCliOcrOptions) + ): + ocr_options.psm = psm + + # Configure picture description options with custom prompt. + # When picture_description_prompt is None or blank, omit the field so + # docling's built-in default prompt is used. A blank string would otherwise + # silently produce empty-prompt output — same class of silent-flag bug + # as PDFDLOSP-20 reported. + picture_description_options = None + if enrich_picture_description: + vlm_kwargs: dict[str, Any] = { + "repo_id": "HuggingFaceTB/SmolVLM-256M-Instruct", + } + if picture_description_prompt and picture_description_prompt.strip(): + vlm_kwargs["prompt"] = picture_description_prompt + picture_description_options = PictureDescriptionVlmOptions(**vlm_kwargs) + + pipeline_kwargs = { + "do_ocr": not disable_ocr, + "do_table_structure": True, + "ocr_options": ocr_options, + "table_structure_options": TableStructureOptions(mode=TableFormerMode.ACCURATE), + "do_formula_enrichment": enrich_formula, + "do_picture_description": enrich_picture_description, + "generate_picture_images": enrich_picture_description, + "accelerator_options": AcceleratorOptions(device=device), + } + if picture_description_options is not None: + pipeline_kwargs["picture_description_options"] = picture_description_options + + if device != "auto": + pipeline_kwargs["accelerator_options"] = AcceleratorOptions(device=device) + + pipeline_options = PdfPipelineOptions(**pipeline_kwargs) + + return DocumentConverter( + format_options={ + InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options) + } + ) + + +def create_app( + force_ocr: bool = False, + disable_ocr: bool = False, + ocr_engine: str = "easyocr", + psm: int | None = None, + ocr_lang: list[str] | None = None, + enrich_formula: bool = False, + enrich_picture_description: bool = False, + picture_description_prompt: str | None = None, + max_file_size: int = MAX_FILE_SIZE, + device: str = "auto", +): + """Create and configure the FastAPI application. + + Args: + force_ocr: If True, force full-page OCR on all pages. + disable_ocr: If True, disable OCR entirely. Mutually exclusive with force_ocr at CLI. + ocr_engine: OCR engine kind (delegated to docling's get_ocr_factory). Default: "easyocr". + psm: Tesseract Page Segmentation Mode. Only applied for Tesseract engines. + ocr_lang: List of OCR language codes (engine-specific format). + enrich_formula: If True, enable formula enrichment (LaTeX extraction). + enrich_picture_description: If True, enable picture description (alt text generation). + picture_description_prompt: Custom prompt forwarded to the VLM. If None or blank/whitespace-only, docling's default prompt is used. + max_file_size: Maximum file size in bytes. 0 means no limit (default). + device: Accelerator device for model inference ("auto", "cpu", "cuda", "mps", "xpu"). + """ + from fastapi import FastAPI, File, Form, UploadFile + from fastapi.responses import JSONResponse + + # Profile converters: initialized lazily on first /v1/profile/file request + profile_converters: dict[str, Any] = {} + + @asynccontextmanager + async def lifespan(_app: FastAPI): + """Lifespan context manager for startup and shutdown events.""" + global converter + lang_str = ",".join(ocr_lang) if ocr_lang else "default" + enrichments = [] + if enrich_formula: + enrichments.append("formula") + if enrich_picture_description: + enrichments.append("picture-description") + enrichment_str = ",".join(enrichments) if enrichments else "none" + logger.info( + f"Initializing DocumentConverter " + f"(do_ocr={not disable_ocr}, ocr_engine={ocr_engine}, force_ocr={force_ocr}, " + f"lang={lang_str}, enrichments={enrichment_str}, device={device})..." + ) + start = time.perf_counter() + + converter = create_converter( + force_full_page_ocr=force_ocr, + disable_ocr=disable_ocr, + ocr_engine=ocr_engine, + psm=psm, + ocr_lang=ocr_lang, + enrich_formula=enrich_formula, + enrich_picture_description=enrich_picture_description, + picture_description_prompt=picture_description_prompt, + device=device, + ) + + elapsed = time.perf_counter() - start + logger.info(f"DocumentConverter initialized in {elapsed:.2f}s") + yield + # Cleanup on shutdown (if needed) + + app = FastAPI( + title="Docling Fast Server", + description="Fast PDF conversion using docling SDK with singleton pattern", + version="1.0.0", + lifespan=lifespan, + ) + + @app.get("/health") + def health(): + """Health check endpoint.""" + return {"status": "ok"} + + @app.post("/v1/convert/file") + async def convert_file( + files: UploadFile = File(...), + page_ranges: Optional[str] = Form(default=None), + ): + """Convert PDF file to JSON (DoclingDocument format). + + Only JSON output is provided - markdown and HTML are generated by + Java processors for consistent reading order application. + + Args: + files: The PDF file to convert + page_ranges: Page range string "start-end" (e.g., "1-5") (optional) + + Returns: + JSON response with document content. + """ + global converter + + if converter is None: + return JSONResponse( + {"status": "failure", "errors": ["Server not initialized"]}, + status_code=503, + ) + + # Parse page_ranges string to tuple + page_range_tuple = None + if page_ranges: + try: + parts = page_ranges.split("-") + if len(parts) == 2: + page_range_tuple = (int(parts[0]), int(parts[1])) + except ValueError: + pass + + # Stream upload to temp file and enforce size incrementally + tmp_path = None + total_size = 0 + with tempfile.NamedTemporaryFile(suffix=".pdf", delete=False) as tmp: + tmp_path = tmp.name + while True: + chunk = await files.read(UPLOAD_CHUNK_SIZE) + if not chunk: + break + total_size += len(chunk) + if max_file_size > 0 and total_size > max_file_size: + tmp.close() + os.unlink(tmp_path) + return JSONResponse( + { + "status": "failure", + "errors": [f"File size exceeds maximum allowed ({max_file_size // (1024*1024)}MB)"], + }, + status_code=413, + ) + tmp.write(chunk) + + try: + def _do_convert(): + with _convert_lock: + t0 = time.perf_counter() + if page_range_tuple: + res = converter.convert(tmp_path, page_range=page_range_tuple) + else: + res = converter.convert(tmp_path) + return res, time.perf_counter() - t0 + + result, processing_time = await asyncio.to_thread(_do_convert) + + # Export to JSON (DoclingDocument format) + json_content = result.document.export_to_dict() + + # Sanitize lone surrogates and null chars from OCR output to prevent + # UnicodeEncodeError in Starlette's JSONResponse.render() + json_content = sanitize_unicode(json_content) + + # Extract status and errors from Docling ConversionResult + from docling.datamodel.base_models import ConversionStatus + + status_value = result.status.value if hasattr(result.status, "value") else str(result.status) + errors = [getattr(e, "error_message", str(e)) for e in result.errors] if result.errors else [] + + # Get total page count for accurate failed-page detection + input_page_count = getattr(result.input, "page_count", None) if result.input else None + + if result.status == ConversionStatus.PARTIAL_SUCCESS: + logger.warning( + "Docling returned partial_success: %d error(s), failed_pages will be reported", + len(errors), + ) + + # Extract per-step pipeline timings (layout, ocr, table_structure, etc.) + step_timings = extract_timings(result) + + response = build_conversion_response( + status_value=status_value, + json_content=json_content, + processing_time=processing_time, + errors=errors, + requested_pages=page_range_tuple, + total_pages=input_page_count, + timings=step_timings, + ) + + return JSONResponse(response) + + except Exception as e: + logger.error(f"PDF conversion failed: {e}\n{traceback.format_exc()}") + return JSONResponse( + { + "status": "failure", + "errors": ["PDF conversion failed. Check server logs for details."], + }, + status_code=500, + ) + finally: + if tmp_path and os.path.exists(tmp_path): + os.unlink(tmp_path) + + def _ensure_profile_converters(): + """Lazily initialize profile converters on first use.""" + if profile_converters: + return + profiles = { + "base": dict(enrich_formula=False, enrich_picture_description=False), + "picture": dict(enrich_formula=False, enrich_picture_description=True), + "formula": dict(enrich_formula=True, enrich_picture_description=False), + } + for name, opts in profiles.items(): + logger.info(f"Initializing profile converter: {name} ({opts})") + t0 = time.perf_counter() + profile_converters[name] = create_converter( + force_full_page_ocr=force_ocr, + disable_ocr=disable_ocr, + ocr_engine=ocr_engine, + psm=psm, + ocr_lang=ocr_lang, + picture_description_prompt=picture_description_prompt, + device=device, + **opts, + ) + logger.info(f" {name} initialized in {time.perf_counter() - t0:.2f}s") + + @app.post("/v1/profile/file") + async def profile_file( + files: UploadFile = File(...), + ): + """Run the same PDF through base / +picture / +picture+formula converters. + + Returns per-profile timings for cost comparison. + """ + _ensure_profile_converters() + + # Stream upload to temp file + tmp_path = None + with tempfile.NamedTemporaryFile(suffix=".pdf", delete=False) as tmp: + tmp_path = tmp.name + while True: + chunk = await files.read(UPLOAD_CHUNK_SIZE) + if not chunk: + break + tmp.write(chunk) + + try: + results = {} + for profile_name, conv in profile_converters.items(): + def _run(c=conv): + with _convert_lock: + t0 = time.perf_counter() + res = c.convert(tmp_path) + return res, time.perf_counter() - t0 + + result, wall_time = await asyncio.to_thread(_run) + timings = extract_timings(result) + + # Count pictures and formulas + json_content = result.document.export_to_dict() + pictures = json_content.get("pictures", []) + pics_total = len(pictures) + pics_described = sum( + 1 for p in pictures + if p.get("captions") or p.get("annotations") + ) + texts = json_content.get("texts", []) + formulas_total = sum(1 for t in texts if t.get("label") == "formula") + tables_total = len(json_content.get("tables", [])) + + results[profile_name] = { + "wall_time_s": round(wall_time, 3), + "timings": timings, + "pictures": { + "total": pics_total, + "with_description": pics_described, + }, + "formulas": formulas_total, + "tables": tables_total, + } + + return JSONResponse({"status": "success", "profiles": results}) + + except Exception as e: + logger.error(f"Profile failed: {e}\n{traceback.format_exc()}") + return JSONResponse( + {"status": "failure", "errors": ["Internal server error"]}, + status_code=500, + ) + finally: + if tmp_path and os.path.exists(tmp_path): + os.unlink(tmp_path) + + return app + + +def main(): + """Run the server.""" + _check_dependencies() + import uvicorn + + parser = argparse.ArgumentParser(description="Docling Fast Server for opendataloader-pdf") + parser.add_argument( + "--host", + default=DEFAULT_HOST, + help=f"Host to bind to (default: {DEFAULT_HOST})", + ) + parser.add_argument( + "--port", + type=int, + default=DEFAULT_PORT, + help=f"Port to bind to (default: {DEFAULT_PORT})", + ) + parser.add_argument( + "--log-level", + default="info", + choices=["debug", "info", "warning", "error"], + help="Log level (default: info)", + ) + # OCR mode: --force-ocr and --no-ocr are mutually exclusive (opposite intents) + ocr_mode_group = parser.add_mutually_exclusive_group() + ocr_mode_group.add_argument( + "--force-ocr", + action="store_true", + help="Force full-page OCR on all pages, even pages with embedded text. " + "Use for scanned PDFs where embedded text is unreliable. " + "Mutually exclusive with --no-ocr.", + ) + ocr_mode_group.add_argument( + "--no-ocr", + action="store_true", + # ASCII only: argparse --help crashes with UnicodeEncodeError on + # non-UTF-8 consoles (e.g. cp949 on Korean Windows) if help text + # contains characters the locale codec cannot encode. + help="Disable OCR entirely. Use when input PDFs already have reliable embedded text - " + "prevents duplicate text extraction from images (charts, diagrams, screenshots). " + "Mutually exclusive with --force-ocr.", + ) + + # Engine selection — delegated to docling's factory. + # Choices are computed at parse time; the module-level _OCR_ENGINE_DENYLIST + # filters engines unsuitable for hybrid local mode (single source of truth + # shared with create_converter and tests). + try: + from docling.models.factories import get_ocr_factory as _get_ocr_factory + _ocr_engine_choices = sorted( + set(_get_ocr_factory(allow_external_plugins=False).registered_kind) + - _OCR_ENGINE_DENYLIST + ) + except ImportError: + _ocr_engine_choices = ["easyocr"] + parser.add_argument( + "--ocr-engine", + type=str, + default="easyocr", + choices=_ocr_engine_choices, + help=f"OCR engine. Available: {', '.join(_ocr_engine_choices)}. " + "Use 'auto' for engine auto-selection per page (delegates the choice to docling). " + "Each engine has its own license, language coverage, and accuracy characteristics; " + "this server does not validate engine accuracy. " + "Default: easyocr (preserves prior behavior).", + ) + parser.add_argument( + "--psm", + type=int, + default=None, + help="Tesseract Page Segmentation Mode. Applied only when --ocr-engine is " + "'tesseract' or 'tesserocr'; ignored for other engines. See " + "`tesseract --help-extra` for valid values.", + ) + parser.add_argument( + "--ocr-lang", + type=str, + default=None, + help="OCR languages (comma-separated). Code system depends on --ocr-engine: " + "EasyOCR uses ISO 639-1 ('ko,en'), Tesseract uses ISO 639-2 ('kor,eng'), " + "RapidOCR uses 'english,chinese', ocrmac uses BCP-47 ('en-US'). " + "If omitted, the engine's default languages are used.", + ) + parser.add_argument( + "--enrich-formula", + action="store_true", + default=False, + help="Enable formula enrichment model (LaTeX extraction)", + ) + parser.add_argument( + "--no-enrich-formula", + action="store_false", + dest="enrich_formula", + ) + parser.add_argument( + "--enrich-picture-description", + action="store_true", + default=False, + help="Enable picture description model (alt text generation using SmolVLM)", + ) + parser.add_argument( + "--no-enrich-picture-description", + action="store_false", + dest="enrich_picture_description", + ) + parser.add_argument( + "--picture-description-prompt", + type=str, + default=None, + help="Custom prompt for picture description. If unset or blank/whitespace-only, uses docling's default prompt.", + ) + parser.add_argument( + "--max-file-size", + type=_non_negative_int, + default=MAX_FILE_SIZE, + help="Maximum upload file size in MB. 0 means no limit (default: 0).", + ) + parser.add_argument( + "--device", + type=str, + default="auto", + choices=["auto", "cpu", "cuda", "mps", "xpu"], + help="Accelerator device for model inference: auto (default), cpu, cuda, mps (Apple Silicon), xpu (Intel GPU).", + ) + args = parser.parse_args() + + # Parse ocr_lang + ocr_lang = None + if args.ocr_lang: + ocr_lang = [lang.strip() for lang in args.ocr_lang.split(",") if lang.strip()] + + # Warn when --no-ocr makes other OCR flags inert. We let it through (rather + # than failing) because the combination is unambiguous — OCR is off — but + # silently dropping user-supplied flags is unfriendly. + if args.no_ocr: + # argparse cannot distinguish explicit `--ocr-engine easyocr` from the + # implicit default; peek at argv so an explicitly-typed default value + # is still treated as a user-supplied (inert) flag and reported. + argv = sys.argv[1:] + ocr_engine_explicit = any( + t == "--ocr-engine" or t.startswith("--ocr-engine=") for t in argv + ) + ignored = [] + if ocr_engine_explicit: + ignored.append(f"--ocr-engine {args.ocr_engine}") + if ocr_lang: + ignored.append(f"--ocr-lang {args.ocr_lang}") + if args.psm is not None: + ignored.append(f"--psm {args.psm}") + if ignored: + logger.warning( + "OCR is disabled (--no-ocr); the following flag(s) will have no " + "effect: %s", + ", ".join(ignored), + ) + + # Probe engine availability at startup (only when OCR is on). A missing + # `tesseract` binary or Python package surfaces here as a clear, actionable + # error rather than as a deferred runtime exception during the first request. + if not args.no_ocr: + ok, err = _check_ocr_engine_available(args.ocr_engine) + if not ok: + logger.error(err) + sys.exit(2) + + # Build enrichment log message + enrichments = [] + if args.enrich_formula: + enrichments.append("formula") + if args.enrich_picture_description: + enrichments.append("picture-description") + + # Log accelerator detection + try: + import torch + if torch.cuda.is_available(): + gpu_name = torch.cuda.get_device_name(0) + cuda_version = torch.version.cuda + logger.info(f"Accelerator: CUDA - {gpu_name} (CUDA {cuda_version})") + elif hasattr(torch.backends, "mps") and torch.backends.mps.is_available(): + logger.info("Accelerator: MPS (Apple Silicon)") + elif hasattr(torch, "xpu") and torch.xpu.is_available(): + logger.info("Accelerator: XPU (Intel GPU)") + else: + logger.info("Accelerator: CPU (no GPU detected)") + except ImportError: + logger.info("Accelerator: CPU (PyTorch not installed)") + if args.device != "auto": + logger.info(f"Device override: --device {args.device}") + + # Convert MB to bytes (0 stays 0 = unlimited) + max_file_size_bytes = args.max_file_size * 1024 * 1024 if args.max_file_size > 0 else 0 + + logger.info(f"Starting Docling Fast Server on http://{args.host}:{args.port}") + psm_str = f", psm={args.psm}" if args.psm is not None else "" + logger.info( + f"OCR settings: do_ocr={not args.no_ocr}, ocr_engine={args.ocr_engine}, " + f"force_ocr={args.force_ocr}, lang={ocr_lang or 'default'}{psm_str}" + ) + if max_file_size_bytes > 0: + logger.info(f"Max file size: {args.max_file_size}MB") + else: + logger.info("Max file size: unlimited") + if enrichments: + logger.info(f"Enrichments enabled: {', '.join(enrichments)}") + + app = create_app( + force_ocr=args.force_ocr, + disable_ocr=args.no_ocr, + ocr_engine=args.ocr_engine, + psm=args.psm, + ocr_lang=ocr_lang, + enrich_formula=args.enrich_formula, + enrich_picture_description=args.enrich_picture_description, + picture_description_prompt=args.picture_description_prompt, + max_file_size=max_file_size_bytes, + device=args.device, + ) + uvicorn.run( + app, + host=args.host, + port=args.port, + log_level=args.log_level, + loop=_get_loop_setting(), + ) + + +if __name__ == "__main__": + main() diff --git a/python/opendataloader-pdf/src/opendataloader_pdf/runner.py b/python/opendataloader-pdf/src/opendataloader_pdf/runner.py new file mode 100644 index 0000000..13f515b --- /dev/null +++ b/python/opendataloader-pdf/src/opendataloader_pdf/runner.py @@ -0,0 +1,103 @@ +""" +Low-level JAR runner for opendataloader-pdf. +""" +import subprocess +import sys +import importlib.resources as resources +from typing import List + +# The consistent name of the JAR file bundled with the package +_JAR_NAME = "opendataloader-pdf-cli.jar" + + +def run_jar(args: List[str], quiet: bool = False) -> str: + """Run the opendataloader-pdf JAR with the given arguments.""" + try: + # Access the embedded JAR inside the package + jar_ref = resources.files("opendataloader_pdf").joinpath("jar", _JAR_NAME) + with resources.as_file(jar_ref) as jar_path: + # Force headless AWT so macOS doesn't surface a Dock icon (and + # steal focus) every time the JVM touches ImageIO/PDFBox + # rendering. Safe on all OSes — the CLI never opens a UI window, + # only manipulates BufferedImages. + command = [ + "java", + "-Djava.awt.headless=true", + "-Dapple.awt.UIElement=true", + "-jar", + str(jar_path), + *args, + ] + + if quiet: + # Quiet mode → suppress the JAR's log stream (stderr) but + # relay its stdout to the caller: --to-stdout content and the + # folder summary line arrive on stdout, and swallowing them + # breaks pipe consumers (`... --quiet --to-stdout | jq`). + result = subprocess.run( + command, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + text=True, + check=True, + encoding="utf-8", + errors="replace", + ) + if result.stdout: + if hasattr(sys.stdout, "buffer"): + sys.stdout.buffer.write( + result.stdout.encode("utf-8", errors="replace") + ) + sys.stdout.buffer.flush() + else: + sys.stdout.write(result.stdout) + return result.stdout + + # Streaming mode → live output + with subprocess.Popen( + command, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + text=True, + encoding="utf-8", + errors="replace", + ) as process: + output_lines: List[str] = [] + for line in process.stdout: + if hasattr(sys.stdout, "buffer"): + sys.stdout.buffer.write(line.encode("utf-8", errors="replace")) + sys.stdout.buffer.flush() + else: + sys.stdout.write(line) + output_lines.append(line) + + return_code = process.wait() + captured_output = "".join(output_lines) + + if return_code: + raise subprocess.CalledProcessError( + return_code, command, output=captured_output + ) + return captured_output + + except FileNotFoundError: + print( + "Error: 'java' command not found. Please ensure Java is installed and in your system's PATH.", + file=sys.stderr, + ) + raise + + except subprocess.CalledProcessError as error: + print("Error running opendataloader-pdf CLI.", file=sys.stderr) + print(f"Return code: {error.returncode}", file=sys.stderr) + # Streaming mode already wrote the JAR's output live to stdout, so + # re-printing the captured copy would duplicate it. Only surface the + # captured streams in quiet mode, where the caller has not seen them. + # Note: CalledProcessError.output and .stdout are aliases for the same + # attribute — printing both produces the same content twice. + if quiet: + if error.stdout: + print(f"Stdout: {error.stdout}", file=sys.stderr) + if error.stderr: + print(f"Stderr: {error.stderr}", file=sys.stderr) + raise diff --git a/python/opendataloader-pdf/src/opendataloader_pdf/wrapper.py b/python/opendataloader-pdf/src/opendataloader_pdf/wrapper.py new file mode 100644 index 0000000..9210754 --- /dev/null +++ b/python/opendataloader-pdf/src/opendataloader_pdf/wrapper.py @@ -0,0 +1,117 @@ +import argparse +import subprocess +import sys +import warnings +from typing import List, Optional + +from .cli_options_generated import add_options_to_parser +from .convert_generated import convert +from .runner import run_jar + +# Re-export for backward compatibility +__all__ = ["convert", "run", "run_jar", "main"] + + +# Deprecated : Use `convert()` instead. This function will be removed in a future version. +def run( + input_path: str, + output_folder: Optional[str] = None, + password: Optional[str] = None, + replace_invalid_chars: Optional[str] = None, + generate_markdown: bool = False, + generate_html: bool = False, + generate_annotated_pdf: bool = False, + keep_line_breaks: bool = False, + content_safety_off: Optional[str] = None, + html_in_markdown: bool = False, + add_image_to_markdown: bool = False, + no_json: bool = False, + debug: bool = False, + use_struct_tree: bool = False, +): + """ + Runs the opendataloader-pdf with the given arguments. + + .. deprecated:: + Use :func:`convert` instead. This function will be removed in a future version. + + Args: + input_path: Path to the input PDF file or folder. + output_folder: Path to the output folder. Defaults to the input folder. + password: Password for the PDF file. + replace_invalid_chars: Character to replace invalid or unrecognized characters (e.g., , \\u0000) with. + generate_markdown: If True, generates a Markdown output file. + generate_html: If True, generates an HTML output file. + generate_annotated_pdf: If True, generates an annotated PDF output file. + keep_line_breaks: If True, keeps line breaks in the output. + html_in_markdown: If True, uses HTML in the Markdown output. + add_image_to_markdown: If True, adds images to the Markdown output. + no_json: If True, disable the JSON output. + debug: If True, prints all messages from the CLI to the console during execution. + use_struct_tree: If True, enable processing structure tree (disabled by default) + + Raises: + FileNotFoundError: If the 'java' command is not found or input_path is invalid. + subprocess.CalledProcessError: If the CLI tool returns a non-zero exit code. + """ + warnings.warn( + "run() is deprecated and will be removed in a future version. Use convert() instead.", + DeprecationWarning, + stacklevel=2, + ) + + # Build format list based on legacy boolean options + formats: List[str] = [] + if not no_json: + formats.append("json") + if generate_markdown: + if add_image_to_markdown: + formats.append("markdown-with-images") + elif html_in_markdown: + formats.append("markdown-with-html") + else: + formats.append("markdown") + if generate_html: + formats.append("html") + if generate_annotated_pdf: + formats.append("pdf") + + convert( + input_path=input_path, + output_dir=output_folder, + password=password, + replace_invalid_chars=replace_invalid_chars, + keep_line_breaks=keep_line_breaks, + content_safety_off=content_safety_off, + use_struct_tree=use_struct_tree, + format=formats if formats else None, + quiet=not debug, + ) + + +def main(argv=None) -> int: + """CLI entry point for running the wrapper from the command line.""" + parser = argparse.ArgumentParser( + description="Run the opendataloader-pdf CLI using the bundled JAR." + ) + parser.add_argument( + "input_path", nargs="+", help="Path to the input PDF file or directory." + ) + + # Register CLI options from auto-generated module + add_options_to_parser(parser) + + args = parser.parse_args(argv) + + try: + convert(**vars(args)) + return 0 + except FileNotFoundError as err: + print(err, file=sys.stderr) + return 1 + except subprocess.CalledProcessError as err: + return err.returncode or 1 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/python/opendataloader-pdf/tests/conftest.py b/python/opendataloader-pdf/tests/conftest.py new file mode 100644 index 0000000..bc9d196 --- /dev/null +++ b/python/opendataloader-pdf/tests/conftest.py @@ -0,0 +1,23 @@ +import shutil +from pathlib import Path + +import pytest + + +@pytest.fixture +def input_pdf(): + return Path(__file__).resolve().parents[3] / "samples" / "pdf" / "1901.03003.pdf" + + +@pytest.fixture +def output_dir(): + path = ( + Path(__file__).resolve().parents[3] + / "python" + / "opendataloader-pdf" + / "tests" + / "temp" + ) + path.mkdir(exist_ok=True) + yield path + shutil.rmtree(path, ignore_errors=True) diff --git a/python/opendataloader-pdf/tests/test_cli_options.py b/python/opendataloader-pdf/tests/test_cli_options.py new file mode 100644 index 0000000..ec5d367 --- /dev/null +++ b/python/opendataloader-pdf/tests/test_cli_options.py @@ -0,0 +1,142 @@ +"""Unit tests for auto-generated cli_options module""" + +import pytest +from opendataloader_pdf.cli_options_generated import CLI_OPTIONS, add_options_to_parser + + +class TestCLIOptions: + """Tests for CLI_OPTIONS metadata list""" + + def test_cli_options_is_list(self): + """CLI_OPTIONS should be a list""" + assert isinstance(CLI_OPTIONS, list) + + def test_cli_options_not_empty(self): + """CLI_OPTIONS should not be empty""" + assert len(CLI_OPTIONS) > 0 + + def test_each_option_has_required_fields(self): + """Each option should have all required fields""" + required_fields = [ + "name", + "python_name", + "short_name", + "type", + "required", + "default", + "description", + ] + for opt in CLI_OPTIONS: + for field in required_fields: + assert field in opt, f"Option {opt.get('name', 'unknown')} missing field: {field}" + + def test_option_types_are_valid(self): + """Option types should be 'string' or 'boolean'""" + valid_types = {"string", "boolean"} + for opt in CLI_OPTIONS: + assert opt["type"] in valid_types, f"Invalid type for {opt['name']}: {opt['type']}" + + def test_python_name_is_snake_case(self): + """Python names should be snake_case (no hyphens)""" + for opt in CLI_OPTIONS: + assert "-" not in opt["python_name"], f"Python name should not contain hyphen: {opt['python_name']}" + + def test_known_options_exist(self): + """Known options should exist in the list""" + option_names = {opt["name"] for opt in CLI_OPTIONS} + expected_options = { + "output-dir", + "password", + "format", + "quiet", + "content-safety-off", + "keep-line-breaks", + "image-output", + "image-format", + } + for expected in expected_options: + assert expected in option_names, f"Expected option not found: {expected}" + + def test_sanitize_option_exists(self): + option_names = [opt["name"] for opt in CLI_OPTIONS] + assert "sanitize" in option_names + sanitize_opt = next(opt for opt in CLI_OPTIONS if opt["name"] == "sanitize") + assert sanitize_opt["type"] == "boolean" + assert sanitize_opt["default"] == False + + + +class TestAddOptionsToParser: + """Tests for add_options_to_parser function""" + + def test_adds_all_options(self): + """Should add all options to argparse parser""" + import argparse + + parser = argparse.ArgumentParser() + add_options_to_parser(parser) + + # Parse empty args to get defaults + args = parser.parse_args([]) + + # Check that all options are added + for opt in CLI_OPTIONS: + python_name = opt["python_name"] + assert hasattr(args, python_name.replace("-", "_")), f"Option {python_name} not added to parser" + + def test_boolean_options_default_to_false(self): + """Boolean options should default to False""" + import argparse + + parser = argparse.ArgumentParser() + add_options_to_parser(parser) + args = parser.parse_args([]) + + for opt in CLI_OPTIONS: + if opt["type"] == "boolean": + python_name = opt["python_name"].replace("-", "_") + assert getattr(args, python_name) is False, f"Boolean option {python_name} should default to False" + + def test_string_options_default_to_none(self): + """String options should default to None""" + import argparse + + parser = argparse.ArgumentParser() + add_options_to_parser(parser) + args = parser.parse_args([]) + + for opt in CLI_OPTIONS: + if opt["type"] == "string": + python_name = opt["python_name"].replace("-", "_") + assert getattr(args, python_name) is None, f"String option {python_name} should default to None" + + def test_short_options_work(self): + """Short option flags should work""" + import argparse + + parser = argparse.ArgumentParser() + add_options_to_parser(parser) + + # Test with -o (short for --output-dir) + args = parser.parse_args(["-o", "/output"]) + assert args.output_dir == "/output" + + # Test with -f (short for --format) + args = parser.parse_args(["-f", "json"]) + assert args.format == "json" + + # Test with -q (short for --quiet) + args = parser.parse_args(["-q"]) + assert args.quiet is True + + def test_long_options_work(self): + """Long option flags should work""" + import argparse + + parser = argparse.ArgumentParser() + add_options_to_parser(parser) + + args = parser.parse_args(["--output-dir", "/output", "--format", "json,markdown", "--quiet"]) + assert args.output_dir == "/output" + assert args.format == "json,markdown" + assert args.quiet is True diff --git a/python/opendataloader-pdf/tests/test_convert_integration.py b/python/opendataloader-pdf/tests/test_convert_integration.py new file mode 100644 index 0000000..83c4d0f --- /dev/null +++ b/python/opendataloader-pdf/tests/test_convert_integration.py @@ -0,0 +1,16 @@ +"""Integration tests that actually run the JAR (slow)""" + +import opendataloader_pdf + + +def test_convert_generates_output(input_pdf, output_dir): + """Verify that convert() actually generates output files""" + opendataloader_pdf.convert( + input_path=str(input_pdf), + output_dir=str(output_dir), + format="json", + quiet=True, + ) + output = output_dir / "1901.03003.json" + assert output.exists(), f"Output file not found at {output}" + assert output.stat().st_size > 0, "Output file is empty" diff --git a/python/opendataloader-pdf/tests/test_hybrid_server.py b/python/opendataloader-pdf/tests/test_hybrid_server.py new file mode 100644 index 0000000..f082791 --- /dev/null +++ b/python/opendataloader-pdf/tests/test_hybrid_server.py @@ -0,0 +1,91 @@ +"""Tests for hybrid_server.""" + +import logging +import sys +from unittest.mock import MagicMock, patch + + +def test_gpu_detected_logging(caplog): + """GPU detection should log GPU name and CUDA version when available.""" + mock_torch = MagicMock() + mock_torch.cuda.is_available.return_value = True + mock_torch.cuda.get_device_name.return_value = "NVIDIA A100" + mock_torch.version.cuda = "12.1" + + with patch.dict("sys.modules", {"torch": mock_torch}): + # Re-import to pick up the mock + import importlib + from opendataloader_pdf import hybrid_server + + importlib.reload(hybrid_server) + + with caplog.at_level(logging.INFO): + # Simulate the GPU detection block from main() + try: + import torch + if torch.cuda.is_available(): + gpu_name = torch.cuda.get_device_name(0) + cuda_version = torch.version.cuda + logging.getLogger(__name__).info( + f"GPU detected: {gpu_name} (CUDA {cuda_version})" + ) + except ImportError: + pass + + assert "GPU detected: NVIDIA A100 (CUDA 12.1)" in caplog.text + + +def test_no_gpu_logging(caplog): + """Should log CPU fallback when no GPU is available.""" + mock_torch = MagicMock() + mock_torch.cuda.is_available.return_value = False + + with patch.dict("sys.modules", {"torch": mock_torch}): + with caplog.at_level(logging.INFO): + try: + import torch + if torch.cuda.is_available(): + pass + else: + logging.getLogger(__name__).info("No GPU detected, using CPU.") + except ImportError: + pass + + assert "No GPU detected, using CPU." in caplog.text + + +def test_no_pytorch_logging(caplog): + """Should log CPU fallback when PyTorch is not installed.""" + with patch.dict("sys.modules", {"torch": None}): + with caplog.at_level(logging.INFO): + try: + import torch # noqa: F811 + if torch.cuda.is_available(): + pass + else: + logging.getLogger(__name__).info("No GPU detected, using CPU.") + except (ImportError, TypeError): + logging.getLogger(__name__).info( + "No GPU detected, using CPU. (PyTorch not installed)" + ) + + assert "No GPU detected, using CPU. (PyTorch not installed)" in caplog.text + + +def test_get_loop_setting_returns_asyncio_on_windows(): + """On Windows, should return 'asyncio' to avoid uvloop errors (#323).""" + from opendataloader_pdf.hybrid_server import _get_loop_setting + + with patch("sys.platform", "win32"): + assert _get_loop_setting() == "asyncio" + + +def test_get_loop_setting_returns_auto_on_non_windows(): + """On non-Windows platforms, should return 'auto' (uvloop if available).""" + from opendataloader_pdf.hybrid_server import _get_loop_setting + + with patch("sys.platform", "darwin"): + assert _get_loop_setting() == "auto" + + with patch("sys.platform", "linux"): + assert _get_loop_setting() == "auto" diff --git a/python/opendataloader-pdf/tests/test_hybrid_server_nonblocking.py b/python/opendataloader-pdf/tests/test_hybrid_server_nonblocking.py new file mode 100644 index 0000000..bc5082f --- /dev/null +++ b/python/opendataloader-pdf/tests/test_hybrid_server_nonblocking.py @@ -0,0 +1,139 @@ +"""Tests for hybrid_server non-blocking conversion. + +Verifies that converter.convert() runs in a thread pool rather than blocking +the event loop. This is the root cause of issue #301: the Java client's +3-second health check times out when the server is busy with a synchronous +conversion call inside an async endpoint. +""" + +import asyncio +import threading +import time +from unittest.mock import MagicMock, patch + +import pytest + + +@pytest.fixture +def mock_docling(): + """Mock docling modules so tests don't need the actual dependency.""" + mock_converter = MagicMock() + mock_result = MagicMock() + mock_result.status.value = "success" + mock_result.errors = [] + mock_result.input.page_count = 1 + mock_result.document.export_to_dict.return_value = { + "pages": {"1": {}}, + "body": {}, + } + + # Track which thread the conversion runs on + convert_thread_name = {} + + def tracking_convert(path, page_range=None): + convert_thread_name["thread"] = threading.current_thread().name + time.sleep(2) + return mock_result + + mock_converter.convert = tracking_convert + mock_converter._convert_thread = convert_thread_name + + mock_conversion_status = MagicMock() + mock_conversion_status.PARTIAL_SUCCESS = "partial_success" + + with patch.dict("sys.modules", { + "docling": MagicMock(), + "docling.datamodel.base_models": MagicMock( + InputFormat=MagicMock(PDF="pdf"), + ConversionStatus=mock_conversion_status, + ), + "docling.datamodel.pipeline_options": MagicMock(), + "docling.document_converter": MagicMock(), + "uvicorn": MagicMock(), + }): + yield mock_converter + + +@pytest.fixture +def app_with_converter(mock_docling): + """Create a FastAPI app with the mock converter.""" + import importlib + from opendataloader_pdf import hybrid_server + + importlib.reload(hybrid_server) + + app = hybrid_server.create_app() + hybrid_server.converter = mock_docling + return app + + +@pytest.mark.asyncio +async def test_convert_runs_in_thread_pool(app_with_converter, mock_docling): + """converter.convert() must run in a worker thread, not on the event loop. + + When converter.convert() runs directly on the async event loop thread, + it blocks all concurrent request handling — including /health checks. + The fix wraps converter.convert() with asyncio.to_thread() so it runs + in a separate thread. + + Reproduces issue #301. + """ + from httpx import ASGITransport, AsyncClient + + transport = ASGITransport(app=app_with_converter) + async with AsyncClient(transport=transport, base_url="http://test") as client: + event_loop_thread = threading.current_thread().name + + response = await client.post( + "/v1/convert/file", + files={"files": ("test.pdf", b"%PDF-1.4 minimal", "application/pdf")}, + ) + + assert response.status_code == 200 + + convert_thread = mock_docling._convert_thread.get("thread") + assert convert_thread is not None, "converter.convert() was not called" + assert convert_thread != event_loop_thread, ( + f"converter.convert() ran on the event loop thread '{event_loop_thread}'. " + f"It must run in a worker thread via asyncio.to_thread() to avoid " + f"blocking /health and other endpoints during long conversions." + ) + + +@pytest.mark.asyncio +async def test_health_responds_during_conversion(app_with_converter): + """Health endpoint must respond quickly even during active conversion. + + This is the user-facing symptom of issue #301: the Java CLI gets + SocketTimeoutException when the hybrid server is busy processing + another document. Mock sleep is 2s; health must respond under 0.2s. + """ + from httpx import ASGITransport, AsyncClient + + transport = ASGITransport(app=app_with_converter) + async with AsyncClient(transport=transport, base_url="http://test") as client: + # Start conversion (takes 2s in mock) + convert_task = asyncio.create_task( + client.post( + "/v1/convert/file", + files={"files": ("test.pdf", b"%PDF-1.4 minimal", "application/pdf")}, + ) + ) + + # Wait for conversion to start in the worker thread + await asyncio.sleep(0.3) + + # Health check should respond quickly — well under the 2s conversion + start = time.monotonic() + health_response = await client.get("/health") + health_time = time.monotonic() - start + + assert health_response.status_code == 200 + assert health_response.json() == {"status": "ok"} + assert health_time < 0.2, ( + f"Health endpoint took {health_time:.2f}s during conversion. " + f"Expected < 0.2s. The event loop is likely blocked." + ) + + convert_response = await convert_task + assert convert_response.status_code == 200 diff --git a/python/opendataloader-pdf/tests/test_hybrid_server_ocr_options.py b/python/opendataloader-pdf/tests/test_hybrid_server_ocr_options.py new file mode 100644 index 0000000..c795619 --- /dev/null +++ b/python/opendataloader-pdf/tests/test_hybrid_server_ocr_options.py @@ -0,0 +1,447 @@ +"""Tests for the OCR option surface added to the hybrid server. + +Covers: + * `create_converter` delegation to docling's `get_ocr_factory` + * Defaults preserve prior behavior (do_ocr=True, engine=easyocr) + * `disable_ocr=True` -> do_ocr=False (#387) + * Engine selection produces the matching OcrOptions subclass (#436, #439) + * `psm` is applied only for Tesseract engines (silently ignored otherwise) + * Unknown / denylisted engines exit with a clear message + * argparse `--no-ocr` and `--force-ocr` are mutually exclusive + * argparse `--ocr-engine` choices exclude `kserve_v2_ocr` +""" + +import argparse +import io +from contextlib import redirect_stderr +from unittest.mock import patch + +import pytest + +from opendataloader_pdf import hybrid_server + + +# ---------- create_converter: factory delegation ---------- + +def _capture_pipeline_options(**kwargs): + """Call create_converter while mocking the docling document_converter so we + can introspect the PdfPipelineOptions instance that would be passed in. + """ + captured = {} + + def fake_pdf_format_option(*, pipeline_options): + captured["pipeline_options"] = pipeline_options + return object() + + with patch( + "docling.document_converter.DocumentConverter" + ) as mock_dc, patch( + "docling.document_converter.PdfFormatOption", side_effect=fake_pdf_format_option + ): + mock_dc.return_value = object() + hybrid_server.create_converter(**kwargs) + + return captured["pipeline_options"] + + +def test_defaults_preserve_prior_behavior(): + """No flags -> do_ocr=True, EasyOcrOptions (matches pre-change behavior).""" + from docling.datamodel.pipeline_options import EasyOcrOptions + + opts = _capture_pipeline_options() + assert opts.do_ocr is True + assert isinstance(opts.ocr_options, EasyOcrOptions) + + +def test_disable_ocr_sets_do_ocr_false(): + """`disable_ocr=True` -> do_ocr=False (#387).""" + opts = _capture_pipeline_options(disable_ocr=True) + assert opts.do_ocr is False + + +def test_ocr_engine_tesseract_yields_tesseract_options(): + """`ocr_engine='tesseract'` -> TesseractCliOcrOptions (#439 path).""" + from docling.datamodel.pipeline_options import TesseractCliOcrOptions + + opts = _capture_pipeline_options(ocr_engine="tesseract") + assert isinstance(opts.ocr_options, TesseractCliOcrOptions) + + +def test_ocr_engine_rapidocr_yields_rapidocr_options(): + """`ocr_engine='rapidocr'` -> RapidOcrOptions (#436 path).""" + from docling.datamodel.pipeline_options import RapidOcrOptions + + opts = _capture_pipeline_options(ocr_engine="rapidocr") + assert isinstance(opts.ocr_options, RapidOcrOptions) + + +def test_force_full_page_ocr_propagates_to_engine_options(): + """`force_full_page_ocr=True` flows to the engine's options instance.""" + opts = _capture_pipeline_options( + ocr_engine="rapidocr", force_full_page_ocr=True + ) + assert opts.ocr_options.force_full_page_ocr is True + + +def test_ocr_lang_overrides_engine_default(): + """A non-empty ocr_lang list replaces the engine's default lang.""" + opts = _capture_pipeline_options( + ocr_engine="tesseract", ocr_lang=["mal", "eng"] + ) + assert opts.ocr_options.lang == ["mal", "eng"] + + +def test_psm_is_applied_to_tesseract(): + """`psm` is applied when the engine is Tesseract.""" + opts = _capture_pipeline_options(ocr_engine="tesseract", psm=6) + assert opts.ocr_options.psm == 6 + + +def test_psm_is_ignored_for_non_tesseract_engines(): + """`psm` is silently ignored for engines that do not expose it.""" + # EasyOcrOptions has no `psm` field; passing psm should not raise. + opts = _capture_pipeline_options(ocr_engine="easyocr", psm=6) + assert not hasattr(opts.ocr_options, "psm") + + +def test_ocr_engine_auto_yields_auto_options(): + """`ocr_engine='auto'` -> OcrAutoOptions; engine choice is deferred to docling.""" + from docling.datamodel.pipeline_options import OcrAutoOptions + + opts = _capture_pipeline_options(ocr_engine="auto") + assert isinstance(opts.ocr_options, OcrAutoOptions) + + +def test_unknown_engine_raises_value_error_with_clear_message(): + """An unknown engine kind raises ValueError listing valid engines. + + ValueError (not SystemExit) keeps the function library-friendly: programmatic + callers can catch and retry with a different engine. main() relies on + argparse `choices` to gate invalid CLI input separately. + """ + with pytest.raises(ValueError) as excinfo: + _capture_pipeline_options(ocr_engine="bogus-engine") + msg = str(excinfo.value) + assert "bogus-engine" in msg + assert "Available engines" in msg + + +def test_create_converter_rejects_denylisted_engine(): + """Programmatic callers cannot bypass `_OCR_ENGINE_DENYLIST` via create_converter(). + + The CLI layer rejects denylisted engines via argparse `choices`. This test + locks in the same enforcement at the function-call layer, so importing the + module and passing `ocr_engine="kserve_v2_ocr"` directly fails with a clear + ValueError instead of building a converter that fails opaquely on the first + request. + """ + with pytest.raises(ValueError) as excinfo: + _capture_pipeline_options(ocr_engine="kserve_v2_ocr") + msg = str(excinfo.value) + assert "kserve_v2_ocr" in msg + assert "hybrid local mode" in msg + assert "Available engines" in msg + # Must also mention the denylist explicitly so a future maintainer searching + # for the constant lands here. + assert "_OCR_ENGINE_DENYLIST" in msg + + +# ---------- argparse: --no-ocr / --force-ocr / --ocr-engine / --psm ---------- + +def _build_parser_subset(): + """Reconstruct the OCR-relevant argparse subset from main(). + + Mirrors the layout in hybrid_server.main() so changes to the CLI surface + are caught by these tests. Uses the same `_OCR_ENGINE_DENYLIST` module + constant as production code so tests stay in sync with main() automatically. + """ + from docling.models.factories import get_ocr_factory + + parser = argparse.ArgumentParser() + ocr_mode = parser.add_mutually_exclusive_group() + ocr_mode.add_argument("--force-ocr", action="store_true") + ocr_mode.add_argument("--no-ocr", action="store_true") + + choices = sorted( + set(get_ocr_factory(allow_external_plugins=False).registered_kind) + - hybrid_server._OCR_ENGINE_DENYLIST + ) + parser.add_argument( + "--ocr-engine", default="easyocr", choices=choices + ) + parser.add_argument("--psm", type=int, default=None) + parser.add_argument("--ocr-lang", default=None) + return parser + + +def test_argparse_defaults(): + """No flags -> no_ocr=False, force_ocr=False, engine=easyocr, psm=None.""" + args = _build_parser_subset().parse_args([]) + assert args.no_ocr is False + assert args.force_ocr is False + assert args.ocr_engine == "easyocr" + assert args.psm is None + + +def test_argparse_no_ocr_and_force_ocr_are_mutually_exclusive(): + """Passing both --no-ocr and --force-ocr exits with an argparse error.""" + err = io.StringIO() + with pytest.raises(SystemExit), redirect_stderr(err): + _build_parser_subset().parse_args(["--no-ocr", "--force-ocr"]) + assert "not allowed with argument" in err.getvalue() + + +def test_argparse_kserve_engine_is_rejected(): + """`--ocr-engine kserve_v2_ocr` is rejected (denylist filter).""" + err = io.StringIO() + with pytest.raises(SystemExit), redirect_stderr(err): + _build_parser_subset().parse_args(["--ocr-engine", "kserve_v2_ocr"]) + assert "invalid choice" in err.getvalue() + + +def test_argparse_tesseract_path_for_issue_439(): + """The CLI invocation that resolves #439 parses cleanly.""" + args = _build_parser_subset().parse_args( + ["--ocr-engine", "tesseract", "--ocr-lang", "mal", "--force-ocr"] + ) + assert args.ocr_engine == "tesseract" + assert args.ocr_lang == "mal" + assert args.force_ocr is True + assert args.no_ocr is False + + +def test_argparse_psm_accepted_as_integer(): + """`--psm 6` is parsed as an integer. + + Range and semantics belong to Tesseract / docling; this server passes the + integer through unchanged. Out-of-range values surface from docling / + Tesseract at conversion time, not here. + """ + args = _build_parser_subset().parse_args( + ["--ocr-engine", "tesseract", "--psm", "6"] + ) + assert args.psm == 6 + + +# ---------- _check_ocr_engine_available ---------- + +def test_engine_check_easyocr_always_ok(): + """easyocr ships with the `[hybrid]` extra; check is a no-op.""" + ok, msg = hybrid_server._check_ocr_engine_available("easyocr") + assert ok is True + assert msg == "" + + +def test_engine_check_auto_always_ok(): + """`auto` defers engine choice to docling; check is a no-op.""" + ok, msg = hybrid_server._check_ocr_engine_available("auto") + assert ok is True + assert msg == "" + + +def test_engine_check_unknown_kind_returns_false(): + """Unknown engine kinds fail closed instead of silently passing. + + Before this contract was tightened, the helper returned `(True, "")` for any + engine name it did not recognize, so a docling release that registered a + new engine kind would slip past the probe and fail at first conversion. + Locks in the fail-closed behavior. + """ + ok, msg = hybrid_server._check_ocr_engine_available("hypothetical_new_engine") + assert ok is False + assert "hypothetical_new_engine" in msg + # Maintainer-targeted hint: where to add the probe branch. + assert "_check_ocr_engine_available" in msg + + +def test_engine_check_tesseract_missing_binary(): + """`tesseract` engine without the binary on PATH fails with an actionable message.""" + with patch("shutil.which", return_value=None): + ok, msg = hybrid_server._check_ocr_engine_available("tesseract") + assert ok is False + assert "tesseract" in msg.lower() + assert "PATH" in msg + + +def test_engine_check_tesseract_present(): + """`tesseract` engine passes when the binary resolves on PATH.""" + with patch("shutil.which", return_value="/usr/bin/tesseract"): + ok, msg = hybrid_server._check_ocr_engine_available("tesseract") + assert ok is True + assert msg == "" + + +def test_engine_check_tesserocr_missing_package(): + """`tesserocr` engine without the Python package fails with install hint.""" + with patch("importlib.util.find_spec", return_value=None): + ok, msg = hybrid_server._check_ocr_engine_available("tesserocr") + assert ok is False + assert "tesserocr" in msg + assert "pip install" in msg + + +def test_engine_check_rapidocr_missing_package(): + """`rapidocr` engine without the Python package fails with install hint.""" + with patch("importlib.util.find_spec", return_value=None): + ok, msg = hybrid_server._check_ocr_engine_available("rapidocr") + assert ok is False + assert "rapidocr" in msg + assert "onnxruntime" in msg + + +def test_engine_check_rapidocr_missing_onnxruntime(): + """`rapidocr` installed without `onnxruntime` fails with a backend-specific hint.""" + # Return a truthy spec for rapidocr, None for onnxruntime, None for anything else. + def fake_find_spec(name): + return object() if name == "rapidocr" else None + + with patch("importlib.util.find_spec", side_effect=fake_find_spec): + ok, msg = hybrid_server._check_ocr_engine_available("rapidocr") + assert ok is False + assert "onnxruntime" in msg + # The message should not duplicate the "rapidocr is not installed" wording. + assert "rapidocr` Python package" not in msg + + +def test_engine_check_ocrmac_off_macos(): + """`ocrmac` selected on a non-Darwin platform fails with a clear platform message.""" + with patch("sys.platform", "linux"): + ok, msg = hybrid_server._check_ocr_engine_available("ocrmac") + assert ok is False + assert "macOS" in msg + + +def test_engine_check_ocrmac_on_macos_missing_package(): + """`ocrmac` on macOS without the `ocrmac` Python package fails with install hint.""" + with patch("sys.platform", "darwin"), patch( + "importlib.util.find_spec", return_value=None + ): + ok, msg = hybrid_server._check_ocr_engine_available("ocrmac") + assert ok is False + assert "ocrmac" in msg + assert "pip install" in msg + # Should NOT be the platform-mismatch message. + assert "macOS only" not in msg and "not macOS" not in msg + + +# ---------- --no-ocr ignored-flag warning ---------- + +def _run_main_to_warning(argv, monkeypatch, caplog): + """Drive `main()` far enough to capture the --no-ocr warning, then short-circuit. + + `main()` ends in `uvicorn.run(...)`; we patch `create_app` and `uvicorn.run` + so the function returns cleanly after argparse + the warning logic without + starting a server. + """ + monkeypatch.setattr("sys.argv", ["opendataloader-pdf-hybrid", *argv]) + + # Skip dep import checks — pytest already runs inside the [hybrid] env. + monkeypatch.setattr(hybrid_server, "_check_dependencies", lambda: None) + + # Avoid building a real DocumentConverter / FastAPI app. + monkeypatch.setattr(hybrid_server, "create_app", lambda **kwargs: object()) + + # Stub uvicorn so main() returns instead of starting a server. + fake_uvicorn = type("FakeUvicorn", (), {"run": staticmethod(lambda *a, **k: None)}) + monkeypatch.setitem(__import__("sys").modules, "uvicorn", fake_uvicorn) + + caplog.set_level("WARNING", logger=hybrid_server.logger.name) + hybrid_server.main() + + +def test_no_ocr_warns_when_engine_explicitly_set(monkeypatch, caplog): + """`--no-ocr --ocr-engine tesseract` warns that --ocr-engine has no effect.""" + _run_main_to_warning( + ["--no-ocr", "--ocr-engine", "tesseract"], monkeypatch, caplog + ) + warnings = [r.message for r in caplog.records if r.levelname == "WARNING"] + assert any("--ocr-engine tesseract" in w for w in warnings), warnings + + +def test_no_ocr_warns_when_engine_explicitly_set_to_easyocr(monkeypatch, caplog): + """Explicit `--ocr-engine easyocr` under --no-ocr is still inert and must warn. + + argparse cannot distinguish "user typed easyocr" from "default was used", so + main() inspects argv directly. This regression test locks the path in. + """ + _run_main_to_warning( + ["--no-ocr", "--ocr-engine", "easyocr"], monkeypatch, caplog + ) + warnings = [r.message for r in caplog.records if r.levelname == "WARNING"] + assert any("--ocr-engine easyocr" in w for w in warnings), warnings + + +def test_no_ocr_no_warning_when_engine_left_default(monkeypatch, caplog): + """`--no-ocr` without --ocr-engine does not falsely report easyocr as inert.""" + _run_main_to_warning(["--no-ocr"], monkeypatch, caplog) + warnings = [r.message for r in caplog.records if r.levelname == "WARNING"] + # No "--ocr-engine" mention because the user did not type it. + assert not any("--ocr-engine" in w for w in warnings), warnings + + +def test_no_ocr_warns_when_ocr_lang_set(monkeypatch, caplog): + """`--no-ocr --ocr-lang ko` warns that --ocr-lang has no effect.""" + _run_main_to_warning(["--no-ocr", "--ocr-lang", "ko"], monkeypatch, caplog) + warnings = [r.message for r in caplog.records if r.levelname == "WARNING"] + assert any("--ocr-lang" in w for w in warnings), warnings + + +def test_no_ocr_warns_when_psm_set(monkeypatch, caplog): + """`--no-ocr --psm 6` warns that --psm has no effect.""" + _run_main_to_warning(["--no-ocr", "--psm", "6"], monkeypatch, caplog) + warnings = [r.message for r in caplog.records if r.levelname == "WARNING"] + assert any("--psm 6" in w for w in warnings), warnings + + +def test_no_ocr_alone_emits_no_warning(monkeypatch, caplog): + """`--no-ocr` on its own does not warn — there are no inert flags to call out.""" + _run_main_to_warning(["--no-ocr"], monkeypatch, caplog) + warnings = [ + r.message + for r in caplog.records + if r.levelname == "WARNING" and "no effect" in r.message + ] + assert warnings == [] + + +# ---------- main() exits when engine prerequisites are missing ---------- + +def test_main_exits_when_tesseract_binary_missing(monkeypatch, caplog): + """Selecting `--ocr-engine tesseract` without the binary on PATH exits at startup.""" + monkeypatch.setattr( + "sys.argv", ["opendataloader-pdf-hybrid", "--ocr-engine", "tesseract"] + ) + monkeypatch.setattr(hybrid_server, "_check_dependencies", lambda: None) + monkeypatch.setattr(hybrid_server, "create_app", lambda **kwargs: object()) + monkeypatch.setattr("shutil.which", lambda _name: None) + fake_uvicorn = type("FakeUvicorn", (), {"run": staticmethod(lambda *a, **k: None)}) + monkeypatch.setitem(__import__("sys").modules, "uvicorn", fake_uvicorn) + + caplog.set_level("ERROR", logger=hybrid_server.logger.name) + with pytest.raises(SystemExit) as excinfo: + hybrid_server.main() + assert excinfo.value.code == 2 + errors = [r.message for r in caplog.records if r.levelname == "ERROR"] + assert any("tesseract" in e.lower() for e in errors), errors + + +def test_main_skips_engine_check_when_no_ocr(monkeypatch, caplog): + """`--no-ocr --ocr-engine tesseract` skips the binary check entirely.""" + called = {"which": False} + + def spy_which(_name): + called["which"] = True + return None # Would fail the check if it were called. + + monkeypatch.setattr( + "sys.argv", + ["opendataloader-pdf-hybrid", "--no-ocr", "--ocr-engine", "tesseract"], + ) + monkeypatch.setattr(hybrid_server, "_check_dependencies", lambda: None) + monkeypatch.setattr(hybrid_server, "create_app", lambda **kwargs: object()) + monkeypatch.setattr("shutil.which", spy_which) + fake_uvicorn = type("FakeUvicorn", (), {"run": staticmethod(lambda *a, **k: None)}) + monkeypatch.setitem(__import__("sys").modules, "uvicorn", fake_uvicorn) + + hybrid_server.main() # must not raise SystemExit + assert called["which"] is False diff --git a/python/opendataloader-pdf/tests/test_hybrid_server_partial_success.py b/python/opendataloader-pdf/tests/test_hybrid_server_partial_success.py new file mode 100644 index 0000000..26fe9bf --- /dev/null +++ b/python/opendataloader-pdf/tests/test_hybrid_server_partial_success.py @@ -0,0 +1,299 @@ +"""Tests for PARTIAL_SUCCESS handling in hybrid server responses. + +Validates that when Docling encounters errors during PDF preprocessing +(e.g., Invalid code point), the hybrid server correctly reports: +- partial_success status instead of success +- list of failed page numbers +- error messages from Docling +""" + +from opendataloader_pdf.hybrid_server import ( + _extract_failed_pages_from_errors, + build_conversion_response, +) + + +class TestBuildConversionResponse: + """Tests for the build_conversion_response function.""" + + def test_success_status(self): + """Fully successful conversion should return status=success.""" + response = build_conversion_response( + status_value="success", + json_content={"pages": {"1": {}, "2": {}, "3": {}}}, + processing_time=1.5, + errors=[], + requested_pages=None, + ) + assert response["status"] == "success" + assert response["failed_pages"] == [] + assert response["processing_time"] == 1.5 + + def test_partial_success_status(self): + """PARTIAL_SUCCESS should return status=partial_success with failed pages.""" + response = build_conversion_response( + status_value="partial_success", + json_content={"pages": {"1": {}, "2": {}, "4": {}, "5": {}}}, + processing_time=2.0, + errors=["Unknown page: pipeline terminated early"], + requested_pages=(1, 5), + ) + assert response["status"] == "partial_success" + assert response["failed_pages"] == [3] + assert response["errors"] == ["Unknown page: pipeline terminated early"] + + def test_partial_success_multiple_failed_pages(self): + """Multiple failed pages should all be reported.""" + response = build_conversion_response( + status_value="partial_success", + json_content={"pages": {"1": {}, "3": {}, "5": {}}}, + processing_time=3.0, + errors=[ + "Unknown page: pipeline terminated early", + "Unknown page: pipeline terminated early", + ], + requested_pages=(1, 5), + ) + assert response["status"] == "partial_success" + assert sorted(response["failed_pages"]) == [2, 4] + + def test_partial_success_no_page_range_with_total_pages(self): + """When total_pages is provided, boundary page failures are detected.""" + # 5-page document, page 1 (first) and page 5 (last) failed + response = build_conversion_response( + status_value="partial_success", + json_content={"pages": {"2": {}, "3": {}, "4": {}}}, + processing_time=2.0, + errors=["error1", "error2"], + requested_pages=None, + total_pages=5, + ) + assert response["status"] == "partial_success" + assert response["failed_pages"] == [1, 5] + + def test_partial_success_no_page_range_fallback(self): + """When no page range or total_pages, interior gaps are still detected.""" + response = build_conversion_response( + status_value="partial_success", + json_content={"pages": {"1": {}, "2": {}, "4": {}, "5": {}}}, + processing_time=2.0, + errors=["Unknown page: pipeline terminated early"], + requested_pages=None, + ) + assert response["status"] == "partial_success" + assert response["failed_pages"] == [3] + + def test_success_no_errors_field(self): + """Successful conversion should have empty errors list.""" + response = build_conversion_response( + status_value="success", + json_content={"pages": {"1": {}, "2": {}}}, + processing_time=1.0, + errors=[], + requested_pages=None, + ) + assert response["errors"] == [] + + def test_document_field_present(self): + """Response should contain document.json_content.""" + json_content = {"pages": {"1": {}}, "body": {"text": "hello"}} + response = build_conversion_response( + status_value="success", + json_content=json_content, + processing_time=1.0, + errors=[], + requested_pages=None, + ) + assert response["document"]["json_content"] == json_content + + def test_partial_success_first_page_failed_with_page_range(self): + """First page failure should be detected when page range is specified.""" + response = build_conversion_response( + status_value="partial_success", + json_content={"pages": {"2": {}, "3": {}}}, + processing_time=1.0, + errors=["error"], + requested_pages=(1, 3), + ) + assert response["failed_pages"] == [1] + + def test_partial_success_last_page_failed_with_page_range(self): + """Last page failure should be detected when page range is specified.""" + response = build_conversion_response( + status_value="partial_success", + json_content={"pages": {"1": {}, "2": {}}}, + processing_time=1.0, + errors=["error"], + requested_pages=(1, 3), + ) + assert response["failed_pages"] == [3] + + def test_partial_success_all_pages_failed(self): + """All pages failing should report every page in failed_pages.""" + response = build_conversion_response( + status_value="partial_success", + json_content={"pages": {}}, + processing_time=2.0, + errors=["error1", "error2", "error3"], + requested_pages=(1, 3), + ) + assert response["status"] == "partial_success" + assert response["failed_pages"] == [1, 2, 3] + + def test_partial_success_all_pages_failed_with_total_pages(self): + """All pages failing with total_pages should report every page.""" + response = build_conversion_response( + status_value="partial_success", + json_content={"pages": {}}, + processing_time=2.0, + errors=["error1", "error2"], + requested_pages=None, + total_pages=3, + ) + assert response["status"] == "partial_success" + assert response["failed_pages"] == [1, 2, 3] + + def test_failure_status_no_failed_pages_detection(self): + """Failure status should not trigger failed page detection.""" + response = build_conversion_response( + status_value="failure", + json_content={"pages": {"1": {}}}, + processing_time=1.0, + errors=["PDF conversion failed"], + requested_pages=(1, 3), + ) + assert response["status"] == "failure" + assert response["failed_pages"] == [] + + def test_partial_success_missing_pages_key(self): + """json_content without 'pages' key should mark all requested pages as failed.""" + response = build_conversion_response( + status_value="partial_success", + json_content={"body": {"text": "hello"}}, + processing_time=1.0, + errors=["error"], + requested_pages=(1, 3), + ) + assert response["status"] == "partial_success" + assert response["failed_pages"] == [1, 2, 3] + + +class TestExtractFailedPagesFromErrors: + """Tests for error message-based failed page detection.""" + + def test_std_bad_alloc_errors(self): + """Page numbers should be extracted from 'Page N: std::bad_alloc' messages.""" + errors = [ + "Page 26: std::bad_alloc", + "Page 27: std::bad_alloc", + "Page 28: std::bad_alloc", + ] + assert _extract_failed_pages_from_errors(errors) == [26, 27, 28] + + def test_mixed_error_formats(self): + """Only 'Page N:' prefixed messages should be matched.""" + errors = [ + "Page 5: Invalid code point", + "Unknown page: pipeline terminated early", + "Page 10: std::bad_alloc", + ] + assert _extract_failed_pages_from_errors(errors) == [5, 10] + + def test_no_page_errors(self): + """Non-page errors should return empty list.""" + errors = [ + "Unknown page: pipeline terminated early", + "General error occurred", + ] + assert _extract_failed_pages_from_errors(errors) == [] + + def test_bare_page_no_colon(self): + """Bare 'Page N' (no colon) should be matched when error_msg is empty.""" + assert _extract_failed_pages_from_errors(["Page 26"]) == [26] + + +class TestBuildConversionResponseErrorParsing: + """Tests for failed page detection via error message parsing. + + When docling includes failed pages as empty entries in the pages dict, + gap detection fails. Error message parsing handles this case. + """ + + def test_failed_pages_with_empty_entries_in_pages_dict(self): + """Failed pages present as empty entries should still be detected via errors.""" + response = build_conversion_response( + status_value="partial_success", + json_content={"pages": {"1": {}, "2": {}, "3": {}, "4": {}, "5": {}}}, + processing_time=2.0, + errors=["Page 4: std::bad_alloc", "Page 5: std::bad_alloc"], + requested_pages=(1, 5), + ) + assert response["failed_pages"] == [4, 5] + + def test_boundary_pages_detected_via_errors(self): + """Boundary page failures should be detected even without page range.""" + response = build_conversion_response( + status_value="partial_success", + json_content={"pages": {"1": {}, "2": {}, "3": {}, "4": {}, "5": {}}}, + processing_time=2.0, + errors=["Page 4: std::bad_alloc", "Page 5: std::bad_alloc"], + requested_pages=None, + total_pages=None, + ) + assert response["failed_pages"] == [4, 5] + + def test_both_strategies_combined(self): + """Union of error-parsed and gap-detected pages should be reported. + + Page 2 is missing from dict (gap), pages 4-5 have error messages + but are present as empty entries. All three must appear. + """ + response = build_conversion_response( + status_value="partial_success", + json_content={"pages": {"1": {}, "3": {}, "4": {}, "5": {}}}, + processing_time=2.0, + errors=["Page 4: std::bad_alloc", "Page 5: std::bad_alloc"], + requested_pages=(1, 5), + ) + assert response["failed_pages"] == [2, 4, 5] + + def test_overlap_between_gap_and_error_is_deduplicated(self): + """Same page from gap and error parsing should appear once.""" + response = build_conversion_response( + status_value="partial_success", + json_content={"pages": {"1": {}, "3": {}}}, + processing_time=1.0, + errors=["Page 2: std::bad_alloc"], + requested_pages=(1, 3), + ) + assert response["failed_pages"] == [2] + + def test_duplicate_page_in_errors(self): + """Duplicate page numbers in error messages should be deduplicated.""" + errors = [ + "Page 3: std::bad_alloc", + "Page 3: Invalid code point", + ] + assert _extract_failed_pages_from_errors(errors) == [3] + + def test_no_page_pattern_errors_falls_back_to_gap(self): + """When errors lack 'Page N:' pattern, gap detection should still work.""" + response = build_conversion_response( + status_value="partial_success", + json_content={"pages": {"1": {}, "3": {}}}, + processing_time=1.0, + errors=["Unknown page: pipeline terminated early"], + requested_pages=(1, 3), + ) + assert response["failed_pages"] == [2] + + def test_empty_errors_with_partial_success(self): + """Partial success with no error messages should still detect gaps.""" + response = build_conversion_response( + status_value="partial_success", + json_content={"pages": {"1": {}, "3": {}}}, + processing_time=1.0, + errors=[], + requested_pages=(1, 3), + ) + assert response["failed_pages"] == [2] diff --git a/python/opendataloader-pdf/tests/test_hybrid_server_picture_description.py b/python/opendataloader-pdf/tests/test_hybrid_server_picture_description.py new file mode 100644 index 0000000..0435f10 --- /dev/null +++ b/python/opendataloader-pdf/tests/test_hybrid_server_picture_description.py @@ -0,0 +1,101 @@ +"""Tests for `--picture-description-prompt` propagation in the hybrid server. + +Covers PDFDLOSP-20: the CLI accepted `--picture-description-prompt` without +error but the prompt was never written into `PictureDescriptionVlmOptions`, +so output was byte-identical regardless of the user's prompt. These tests +lock in both halves of the contract: + + * A custom prompt reaches `PictureDescriptionVlmOptions.prompt`. + * Omitting the prompt preserves docling's built-in default. + * Blank / whitespace-only prompts are treated as "not provided" so they + never silently inject an empty prompt into the VLM. + * The whole feature is gated by `enrich_picture_description=True`. +""" + +from unittest.mock import patch + +import pytest + +from opendataloader_pdf import hybrid_server + + +def _capture_pipeline_options(**kwargs): + """Build a converter while mocking out docling's heavy bits so we can + introspect the PdfPipelineOptions instance. + """ + captured = {} + + def fake_pdf_format_option(*, pipeline_options): + captured["pipeline_options"] = pipeline_options + return object() + + with patch( + "docling.document_converter.DocumentConverter" + ) as mock_dc, patch( + "docling.document_converter.PdfFormatOption", side_effect=fake_pdf_format_option + ): + mock_dc.return_value = object() + hybrid_server.create_converter(**kwargs) + + return captured["pipeline_options"] + + +def test_custom_prompt_is_forwarded_to_vlm_options(): + """The user-supplied prompt must end up on PictureDescriptionVlmOptions. + + Regression for PDFDLOSP-20. + """ + opts = _capture_pipeline_options( + enrich_picture_description=True, + picture_description_prompt="HELLO WORLD", + ) + assert opts.picture_description_options is not None + assert opts.picture_description_options.prompt == "HELLO WORLD" + + +def test_default_prompt_is_preserved_when_user_omits_flag(): + """When no prompt is given, docling's built-in default must survive. + + Locks the current docling default. If a docling upgrade changes the + phrase, this canary fires — at which point we decide whether to track + the new default or pin our own. + """ + opts = _capture_pipeline_options(enrich_picture_description=True) + assert opts.picture_description_options is not None + assert ( + opts.picture_description_options.prompt + == "Describe this image in a few sentences." + ) + + +@pytest.mark.parametrize("blank", ["", " ", "\t\n"]) +def test_blank_prompt_falls_back_to_default(blank): + """Empty / whitespace-only prompts must not inject an empty prompt. + + Otherwise we recreate the same class of silent-flag misbehavior that + PDFDLOSP-20 reported. + """ + opts = _capture_pipeline_options( + enrich_picture_description=True, + picture_description_prompt=blank, + ) + assert opts.picture_description_options is not None + assert ( + opts.picture_description_options.prompt + == "Describe this image in a few sentences." + ) + + +def test_prompt_ignored_when_enrichment_disabled(): + """Without --enrich-picture-description, the prompt has no destination. + + Docling populates a default `picture_description_options` object on + `PdfPipelineOptions` even when do_picture_description=False, so we + assert on the gate (`do_picture_description`) rather than identity of + the options object. + """ + opts = _capture_pipeline_options( + enrich_picture_description=False, + picture_description_prompt="HELLO WORLD", + ) + assert opts.do_picture_description is False diff --git a/python/opendataloader-pdf/tests/test_hybrid_server_unicode.py b/python/opendataloader-pdf/tests/test_hybrid_server_unicode.py new file mode 100644 index 0000000..1450921 --- /dev/null +++ b/python/opendataloader-pdf/tests/test_hybrid_server_unicode.py @@ -0,0 +1,86 @@ +"""Tests for Unicode sanitization in hybrid server responses. + +Validates that lone surrogates and null characters from Docling OCR output +are sanitized before JSON serialization to prevent UnicodeEncodeError in +Starlette's JSONResponse.render(). +""" + +import json + +import pytest + +from opendataloader_pdf.hybrid_server import sanitize_unicode + + +class TestSanitizeUnicode: + """Tests for the sanitize_unicode function.""" + + def test_lone_surrogate_replaced(self): + """Lone surrogates should be replaced with U+FFFD.""" + data = {"text": "Hello \ud800 World"} + result = sanitize_unicode(data) + assert "\ud800" not in result["text"] + assert "\ufffd" in result["text"] + + def test_all_surrogate_range_replaced(self): + """All surrogate code points (U+D800 to U+DFFF) should be replaced.""" + data = {"text": "\ud800\udbff\udc00\udfff"} + result = sanitize_unicode(data) + assert result["text"] == "\ufffd" * 4 + + def test_null_character_replaced(self): + """Null characters should be replaced with U+FFFD.""" + data = {"text": "Hello\x00World"} + result = sanitize_unicode(data) + assert "\x00" not in result["text"] + assert result["text"] == "Hello\ufffdWorld" + + def test_nested_dict_sanitized(self): + """Nested dictionaries should be sanitized recursively.""" + data = {"level1": {"level2": {"text": "bad\ud800char"}}} + result = sanitize_unicode(data) + assert "\ud800" not in result["level1"]["level2"]["text"] + assert "\ufffd" in result["level1"]["level2"]["text"] + + def test_list_sanitized(self): + """Lists within the data should be sanitized.""" + data = {"items": ["good", "bad\ud800text", "also\x00bad"]} + result = sanitize_unicode(data) + assert result["items"][0] == "good" + assert "\ud800" not in result["items"][1] + assert "\x00" not in result["items"][2] + + def test_clean_data_unchanged(self): + """Clean data without problematic characters should pass through unchanged.""" + data = {"text": "Hello World", "number": 42, "flag": True, "nothing": None} + result = sanitize_unicode(data) + assert result == data + + def test_non_string_values_preserved(self): + """Non-string values (int, float, bool, None) should be preserved as-is.""" + data = {"int": 42, "float": 3.14, "bool": True, "none": None} + result = sanitize_unicode(data) + assert result == data + + def test_sanitized_output_json_serializable(self): + """Sanitized output must survive json.dumps + encode('utf-8') without error.""" + data = { + "status": "success", + "document": { + "json_content": { + "body": {"text": "OCR text with \ud800 lone surrogate and \x00 null"} + } + }, + } + result = sanitize_unicode(data) + # This is the exact operation that Starlette's JSONResponse.render() performs + json_bytes = json.dumps(result, ensure_ascii=False).encode("utf-8") + assert isinstance(json_bytes, bytes) + + def test_mixed_valid_and_invalid_unicode(self): + """Valid Unicode (including CJK, emoji) should be preserved alongside sanitization.""" + data = {"text": "Valid \u4e16\u754c \ud800 text"} + result = sanitize_unicode(data) + assert "\u4e16\u754c" in result["text"] # CJK preserved + assert "\ud800" not in result["text"] # surrogate removed + assert "\ufffd" in result["text"] # replacement added diff --git a/python/opendataloader-pdf/tests/test_runner.py b/python/opendataloader-pdf/tests/test_runner.py new file mode 100644 index 0000000..deb2671 --- /dev/null +++ b/python/opendataloader-pdf/tests/test_runner.py @@ -0,0 +1,153 @@ +"""Unit tests for runner.py error-handling behaviour. + +Regression: when the JAR fails, the streaming branch already wrote the +JAR's stdout to the console live, so the except handler must not re-emit +the captured copy. The quiet branch, conversely, has not surfaced anything +yet and is allowed to print the captured streams — but only once +(``CalledProcessError.output`` and ``.stdout`` are the same attribute). +""" + +import io +import subprocess +from unittest.mock import MagicMock + +import pytest + +from opendataloader_pdf import runner + + +class _FakeAsFile: + def __init__(self, path): + self._path = path + + def __enter__(self): + return self._path + + def __exit__(self, *_args): + return False + + +@pytest.fixture +def patched_jar(monkeypatch, tmp_path): + """Bypass the real resources lookup so run_jar reaches subprocess.""" + fake_jar = tmp_path / "opendataloader-pdf-cli.jar" + fake_jar.write_bytes(b"") + fake_traversable = MagicMock() + fake_traversable.joinpath = lambda *_a, **_kw: fake_jar + monkeypatch.setattr(runner.resources, "files", lambda _pkg: fake_traversable) + monkeypatch.setattr(runner.resources, "as_file", lambda p: _FakeAsFile(p)) + + +def test_streaming_failure_does_not_duplicate_output(monkeypatch, capsys, patched_jar): + """Streaming mode prints JAR output live; the except handler must not + re-emit the captured copy on stderr.""" + jar_output = "Invalid page range format: '-10'\nusage: [options] ...\n" + + fake_process = MagicMock() + fake_process.stdout = iter([jar_output]) + fake_process.wait.return_value = 2 + fake_process.__enter__ = lambda self: self + fake_process.__exit__ = lambda self, *_a: False + + monkeypatch.setattr(runner.subprocess, "Popen", lambda *_a, **_kw: fake_process) + + with pytest.raises(subprocess.CalledProcessError): + runner.run_jar(["--bogus"], quiet=False) + + captured = capsys.readouterr() + # JAR text appears exactly once: the live streaming write. + assert "Invalid page range format" in captured.out + assert captured.out.count("usage: [options]") == 1 + # The except handler did NOT re-emit the captured copy on stderr. + assert "Invalid page range format" not in captured.err + assert "usage: [options]" not in captured.err + # Meta info is still surfaced. + assert "Error running opendataloader-pdf CLI." in captured.err + assert "Return code: 2" in captured.err + + +def test_quiet_success_relays_stdout_but_not_stderr(monkeypatch, capsys, patched_jar): + """Quiet mode must relay the JAR's stdout (--to-stdout payload, folder + summary line) to the caller while still suppressing the JAR's log + stream (stderr). Regression: --quiet + --to-stdout produced no output, + breaking pipe consumers.""" + result = subprocess.CompletedProcess( + args=["java", "-jar", "fake.jar"], + returncode=0, + stdout="extracted text payload\n", + stderr="[INFO] java log noise\n", + ) + monkeypatch.setattr(runner.subprocess, "run", MagicMock(return_value=result)) + + returned = runner.run_jar(["doc.pdf", "--quiet", "--to-stdout"], quiet=True) + + captured = capsys.readouterr() + # Payload reaches the caller's stdout exactly once. + assert captured.out.count("extracted text payload") == 1 + # The JAR's log stream stays suppressed (that is what quiet means). + assert "java log noise" not in captured.out + assert "java log noise" not in captured.err + # Return value is unchanged for library callers. + assert returned == "extracted text payload\n" + + +def test_quiet_relays_through_stdout_buffer_byte_path(monkeypatch, patched_jar): + """The production CLI writes the relayed payload through + ``sys.stdout.buffer`` (bytes), not the ``sys.stdout.write`` (str) + fallback. ``capsys`` replaces ``sys.stdout`` with an object whose + ``.buffer`` semantics differ, so the sibling test only exercises the + str branch. This drives the real byte-relay path and asserts the + payload is encoded to UTF-8 and written exactly once, intact — covering + the ``encode("utf-8", "replace")`` step that the str branch skips. + """ + payload = "héllo 한글 payload\n" # non-ASCII: exercises the utf-8 encode + result = subprocess.CompletedProcess( + args=["java", "-jar", "fake.jar"], + returncode=0, + stdout=payload, + stderr="[INFO] java log noise\n", + ) + monkeypatch.setattr(runner.subprocess, "run", MagicMock(return_value=result)) + + # Fake stdout with a real binary buffer, mirroring a genuine TextIOWrapper + # (hasattr(sys.stdout, "buffer") is True), so run_jar takes the byte path. + fake_stdout = MagicMock() + fake_stdout.buffer = io.BytesIO() + monkeypatch.setattr(runner.sys, "stdout", fake_stdout) + + returned = runner.run_jar(["doc.pdf", "--quiet", "--to-stdout"], quiet=True) + + written = fake_stdout.buffer.getvalue() + # Byte path was taken: payload written as UTF-8 exactly once, intact. + assert written == payload.encode("utf-8") + assert written.decode("utf-8") == payload + # The str fallback branch was NOT used. + fake_stdout.write.assert_not_called() + fake_stdout.buffer.flush() # buffer is flushed by run_jar; no error + # Return value is unchanged for library callers. + assert returned == payload + + +def test_quiet_failure_prints_captured_streams_once(monkeypatch, capsys, patched_jar): + """Quiet mode captures output, so the except handler surfaces it — but + must avoid the old bug where Output and Stdout (aliases) both printed.""" + error = subprocess.CalledProcessError( + returncode=2, + cmd=["java", "-jar", "fake.jar"], + output="captured stdout text", + stderr="captured stderr text", + ) + monkeypatch.setattr(runner.subprocess, "run", MagicMock(side_effect=error)) + + with pytest.raises(subprocess.CalledProcessError): + runner.run_jar(["--bogus"], quiet=True) + + err = capsys.readouterr().err + assert err.count("captured stdout text") == 1 + assert err.count("captured stderr text") == 1 + # The pre-fix code printed both "Output:" and "Stdout:" with the same text. + assert "Output:" not in err + assert "Stdout: captured stdout text" in err + assert "Stderr: captured stderr text" in err + assert "Error running opendataloader-pdf CLI." in err + assert "Return code: 2" in err diff --git a/python/opendataloader-pdf/uv.lock b/python/opendataloader-pdf/uv.lock new file mode 100644 index 0000000..41b9035 --- /dev/null +++ b/python/opendataloader-pdf/uv.lock @@ -0,0 +1,3641 @@ +version = 1 +revision = 3 +requires-python = ">=3.10" +resolution-markers = [ + "python_full_version >= '3.14' and sys_platform == 'win32'", + "python_full_version >= '3.14' and sys_platform == 'emscripten'", + "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'win32'", + "python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten'", + "python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version < '3.11'", +] + +[[package]] +name = "accelerate" +version = "1.13.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "huggingface-hub" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "packaging" }, + { name = "psutil" }, + { name = "pyyaml" }, + { name = "safetensors" }, + { name = "torch" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ca/14/787e5498cd062640f0f3d92ef4ae4063174f76f9afd29d13fc52a319daae/accelerate-1.13.0.tar.gz", hash = "sha256:d631b4e0f5b3de4aff2d7e9e6857d164810dfc3237d54d017f075122d057b236", size = 402835, upload-time = "2026-03-04T19:34:12.359Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/46/02ac5e262d4af18054b3e922b2baedbb2a03289ee792162de60a865defc5/accelerate-1.13.0-py3-none-any.whl", hash = "sha256:cf1a3efb96c18f7b152eb0fa7490f3710b19c3f395699358f08decca2b8b62e0", size = 383744, upload-time = "2026-03-04T19:34:10.313Z" }, +] + +[[package]] +name = "annotated-doc" +version = "0.0.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/57/ba/046ceea27344560984e26a590f90bc7f4a75b06701f653222458922b558c/annotated_doc-0.0.4.tar.gz", hash = "sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4", size = 7288, upload-time = "2025-11-10T22:07:42.062Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320", size = 5303, upload-time = "2025-11-10T22:07:40.673Z" }, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, +] + +[[package]] +name = "antlr4-python3-runtime" +version = "4.9.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3e/38/7859ff46355f76f8d19459005ca000b6e7012f2f1ca597746cbcd1fbfe5e/antlr4-python3-runtime-4.9.3.tar.gz", hash = "sha256:f224469b4168294902bb1efa80a8bf7855f24c99aef99cbefc1bcd3cce77881b", size = 117034, upload-time = "2021-11-06T17:52:23.524Z" } + +[[package]] +name = "anyio" +version = "4.13.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "idna" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/14/2c5dd9f512b66549ae92767a9c7b330ae88e1932ca57876909410251fe13/anyio-4.13.0.tar.gz", hash = "sha256:334b70e641fd2221c1505b3890c69882fe4a2df910cba14d97019b90b24439dc", size = 231622, upload-time = "2026-03-24T12:59:09.671Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/42/e921fccf5015463e32a3cf6ee7f980a6ed0f395ceeaa45060b61d86486c2/anyio-4.13.0-py3-none-any.whl", hash = "sha256:08b310f9e24a9594186fd75b4f73f4a4152069e3853f1ed8bfbf58369f4ad708", size = 114353, upload-time = "2026-03-24T12:59:08.246Z" }, +] + +[[package]] +name = "attrs" +version = "26.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/8e/82a0fe20a541c03148528be8cac2408564a6c9a0cc7e9171802bc1d26985/attrs-26.1.0.tar.gz", hash = "sha256:d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32", size = 952055, upload-time = "2026-03-19T14:22:25.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl", hash = "sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309", size = 67548, upload-time = "2026-03-19T14:22:23.645Z" }, +] + +[[package]] +name = "backports-asyncio-runner" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8e/ff/70dca7d7cb1cbc0edb2c6cc0c38b65cba36cccc491eca64cabd5fe7f8670/backports_asyncio_runner-1.2.0.tar.gz", hash = "sha256:a5aa7b2b7d8f8bfcaa2b57313f70792df84e32a2a746f585213373f900b42162", size = 69893, upload-time = "2025-07-02T02:27:15.685Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/59/76ab57e3fe74484f48a53f8e337171b4a2349e506eabe136d7e01d059086/backports_asyncio_runner-1.2.0-py3-none-any.whl", hash = "sha256:0da0a936a8aeb554eccb426dc55af3ba63bcdc69fa1a600b5bb305413a4477b5", size = 12313, upload-time = "2025-07-02T02:27:14.263Z" }, +] + +[[package]] +name = "beautifulsoup4" +version = "4.14.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "soupsieve" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c3/b0/1c6a16426d389813b48d95e26898aff79abbde42ad353958ad95cc8c9b21/beautifulsoup4-4.14.3.tar.gz", hash = "sha256:6292b1c5186d356bba669ef9f7f051757099565ad9ada5dd630bd9de5fa7fb86", size = 627737, upload-time = "2025-11-30T15:08:26.084Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl", hash = "sha256:0918bfe44902e6ad8d57732ba310582e98da931428d231a5ecb9e7c703a735bb", size = 107721, upload-time = "2025-11-30T15:08:24.087Z" }, +] + +[[package]] +name = "certifi" +version = "2026.4.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/25/ee/6caf7a40c36a1220410afe15a1cc64993a1f864871f698c0f93acb72842a/certifi-2026.4.22.tar.gz", hash = "sha256:8d455352a37b71bf76a79caa83a3d6c25afee4a385d632127b6afb3963f1c580", size = 137077, upload-time = "2026-04-22T11:26:11.191Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/30/7cd8fdcdfbc5b869528b079bfb76dcdf6056b1a2097a662e5e8c04f42965/certifi-2026.4.22-py3-none-any.whl", hash = "sha256:3cb2210c8f88ba2318d29b0388d1023c8492ff72ecdde4ebdaddbb13a31b1c4a", size = 135707, upload-time = "2026-04-22T11:26:09.372Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/a1/67fe25fac3c7642725500a3f6cfe5821ad557c3abb11c9d20d12c7008d3e/charset_normalizer-3.4.7.tar.gz", hash = "sha256:ae89db9e5f98a11a4bf50407d4363e7b09b31e55bc117b4f7d80aab97ba009e5", size = 144271, upload-time = "2026-04-02T09:28:39.342Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/08/0f303cb0b529e456bb116f2d50565a482694fbb94340bf56d44677e7ed03/charset_normalizer-3.4.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cdd68a1fb318e290a2077696b7eb7a21a49163c455979c639bf5a5dcdc46617d", size = 315182, upload-time = "2026-04-02T09:25:40.673Z" }, + { url = "https://files.pythonhosted.org/packages/24/47/b192933e94b546f1b1fe4df9cc1f84fcdbf2359f8d1081d46dd029b50207/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e17b8d5d6a8c47c85e68ca8379def1303fd360c3e22093a807cd34a71cd082b8", size = 209329, upload-time = "2026-04-02T09:25:42.354Z" }, + { url = "https://files.pythonhosted.org/packages/c2/b4/01fa81c5ca6141024d89a8fc15968002b71da7f825dd14113207113fabbd/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:511ef87c8aec0783e08ac18565a16d435372bc1ac25a91e6ac7f5ef2b0bff790", size = 231230, upload-time = "2026-04-02T09:25:44.281Z" }, + { url = "https://files.pythonhosted.org/packages/20/f7/7b991776844dfa058017e600e6e55ff01984a063290ca5622c0b63162f68/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:007d05ec7321d12a40227aae9e2bc6dca73f3cb21058999a1df9e193555a9dcc", size = 225890, upload-time = "2026-04-02T09:25:45.475Z" }, + { url = "https://files.pythonhosted.org/packages/20/e7/bed0024a0f4ab0c8a9c64d4445f39b30c99bd1acd228291959e3de664247/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cf29836da5119f3c8a8a70667b0ef5fdca3bb12f80fd06487cfa575b3909b393", size = 216930, upload-time = "2026-04-02T09:25:46.58Z" }, + { url = "https://files.pythonhosted.org/packages/e2/ab/b18f0ab31cdd7b3ddb8bb76c4a414aeb8160c9810fdf1bc62f269a539d87/charset_normalizer-3.4.7-cp310-cp310-manylinux_2_31_armv7l.whl", hash = "sha256:12d8baf840cc7889b37c7c770f478adea7adce3dcb3944d02ec87508e2dcf153", size = 202109, upload-time = "2026-04-02T09:25:48.031Z" }, + { url = "https://files.pythonhosted.org/packages/82/e5/7e9440768a06dfb3075936490cb82dbf0ee20a133bf0dd8551fa096914ec/charset_normalizer-3.4.7-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d560742f3c0d62afaccf9f41fe485ed69bd7661a241f86a3ef0f0fb8b1a397af", size = 214684, upload-time = "2026-04-02T09:25:49.245Z" }, + { url = "https://files.pythonhosted.org/packages/71/94/8c61d8da9f062fdf457c80acfa25060ec22bf1d34bbeaca4350f13bcfd07/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b14b2d9dac08e28bb8046a1a0434b1750eb221c8f5b87a68f4fa11a6f97b5e34", size = 212785, upload-time = "2026-04-02T09:25:50.671Z" }, + { url = "https://files.pythonhosted.org/packages/66/cd/6e9889c648e72c0ab2e5967528bb83508f354d706637bc7097190c874e13/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:bc17a677b21b3502a21f66a8cc64f5bfad4df8a0b8434d661666f8ce90ac3af1", size = 203055, upload-time = "2026-04-02T09:25:51.802Z" }, + { url = "https://files.pythonhosted.org/packages/92/2e/7a951d6a08aefb7eb8e1b54cdfb580b1365afdd9dd484dc4bee9e5d8f258/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:750e02e074872a3fad7f233b47734166440af3cdea0add3e95163110816d6752", size = 232502, upload-time = "2026-04-02T09:25:53.388Z" }, + { url = "https://files.pythonhosted.org/packages/58/d5/abcf2d83bf8e0a1286df55cd0dc1d49af0da4282aa77e986df343e7de124/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:4e5163c14bffd570ef2affbfdd77bba66383890797df43dc8b4cc7d6f500bf53", size = 214295, upload-time = "2026-04-02T09:25:54.765Z" }, + { url = "https://files.pythonhosted.org/packages/47/3a/7d4cd7ed54be99973a0dc176032cba5cb1f258082c31fa6df35cff46acfc/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6ed74185b2db44f41ef35fd1617c5888e59792da9bbc9190d6c7300617182616", size = 227145, upload-time = "2026-04-02T09:25:55.904Z" }, + { url = "https://files.pythonhosted.org/packages/1d/98/3a45bf8247889cf28262ebd3d0872edff11565b2a1e3064ccb132db3fbb0/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:94e1885b270625a9a828c9793b4d52a64445299baa1fea5a173bf1d3dd9a1a5a", size = 218884, upload-time = "2026-04-02T09:25:57.074Z" }, + { url = "https://files.pythonhosted.org/packages/ad/80/2e8b7f8915ed5c9ef13aa828d82738e33888c485b65ebf744d615040c7ea/charset_normalizer-3.4.7-cp310-cp310-win32.whl", hash = "sha256:6785f414ae0f3c733c437e0f3929197934f526d19dfaa75e18fdb4f94c6fb374", size = 148343, upload-time = "2026-04-02T09:25:58.199Z" }, + { url = "https://files.pythonhosted.org/packages/35/1b/3b8c8c77184af465ee9ad88b5aea46ea6b2e1f7b9dc9502891e37af21e30/charset_normalizer-3.4.7-cp310-cp310-win_amd64.whl", hash = "sha256:6696b7688f54f5af4462118f0bfa7c1621eeb87154f77fa04b9295ce7a8f2943", size = 159174, upload-time = "2026-04-02T09:25:59.322Z" }, + { url = "https://files.pythonhosted.org/packages/be/c1/feb40dca40dbb21e0a908801782d9288c64fc8d8e562c2098e9994c8c21b/charset_normalizer-3.4.7-cp310-cp310-win_arm64.whl", hash = "sha256:66671f93accb62ed07da56613636f3641f1a12c13046ce91ffc923721f23c008", size = 147805, upload-time = "2026-04-02T09:26:00.756Z" }, + { url = "https://files.pythonhosted.org/packages/c2/d7/b5b7020a0565c2e9fa8c09f4b5fa6232feb326b8c20081ccded47ea368fd/charset_normalizer-3.4.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7641bb8895e77f921102f72833904dcd9901df5d6d72a2ab8f31d04b7e51e4e7", size = 309705, upload-time = "2026-04-02T09:26:02.191Z" }, + { url = "https://files.pythonhosted.org/packages/5a/53/58c29116c340e5456724ecd2fff4196d236b98f3da97b404bc5e51ac3493/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:202389074300232baeb53ae2569a60901f7efadd4245cf3a3bf0617d60b439d7", size = 206419, upload-time = "2026-04-02T09:26:03.583Z" }, + { url = "https://files.pythonhosted.org/packages/b2/02/e8146dc6591a37a00e5144c63f29fb7c97a734ea8a111190783c0e60ab63/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:30b8d1d8c52a48c2c5690e152c169b673487a2a58de1ec7393196753063fcd5e", size = 227901, upload-time = "2026-04-02T09:26:04.738Z" }, + { url = "https://files.pythonhosted.org/packages/fb/73/77486c4cd58f1267bf17db420e930c9afa1b3be3fe8c8b8ebbebc9624359/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:532bc9bf33a68613fd7d65e4b1c71a6a38d7d42604ecf239c77392e9b4e8998c", size = 222742, upload-time = "2026-04-02T09:26:06.36Z" }, + { url = "https://files.pythonhosted.org/packages/a1/fa/f74eb381a7d94ded44739e9d94de18dc5edc9c17fb8c11f0a6890696c0a9/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2fe249cb4651fd12605b7288b24751d8bfd46d35f12a20b1ba33dea122e690df", size = 214061, upload-time = "2026-04-02T09:26:08.347Z" }, + { url = "https://files.pythonhosted.org/packages/dc/92/42bd3cefcf7687253fb86694b45f37b733c97f59af3724f356fa92b8c344/charset_normalizer-3.4.7-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:65bcd23054beab4d166035cabbc868a09c1a49d1efe458fe8e4361215df40265", size = 199239, upload-time = "2026-04-02T09:26:09.823Z" }, + { url = "https://files.pythonhosted.org/packages/4c/3d/069e7184e2aa3b3cddc700e3dd267413dc259854adc3380421c805c6a17d/charset_normalizer-3.4.7-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:08e721811161356f97b4059a9ba7bafb23ea5ee2255402c42881c214e173c6b4", size = 210173, upload-time = "2026-04-02T09:26:10.953Z" }, + { url = "https://files.pythonhosted.org/packages/62/51/9d56feb5f2e7074c46f93e0ebdbe61f0848ee246e2f0d89f8e20b89ebb8f/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e060d01aec0a910bdccb8be71faf34e7799ce36950f8294c8bf612cba65a2c9e", size = 209841, upload-time = "2026-04-02T09:26:12.142Z" }, + { url = "https://files.pythonhosted.org/packages/d2/59/893d8f99cc4c837dda1fe2f1139079703deb9f321aabcb032355de13b6c7/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:38c0109396c4cfc574d502df99742a45c72c08eff0a36158b6f04000043dbf38", size = 200304, upload-time = "2026-04-02T09:26:13.711Z" }, + { url = "https://files.pythonhosted.org/packages/7d/1d/ee6f3be3464247578d1ed5c46de545ccc3d3ff933695395c402c21fa6b77/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:1c2a768fdd44ee4a9339a9b0b130049139b8ce3c01d2ce09f67f5a68048d477c", size = 229455, upload-time = "2026-04-02T09:26:14.941Z" }, + { url = "https://files.pythonhosted.org/packages/54/bb/8fb0a946296ea96a488928bdce8ef99023998c48e4713af533e9bb98ef07/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:1a87ca9d5df6fe460483d9a5bbf2b18f620cbed41b432e2bddb686228282d10b", size = 210036, upload-time = "2026-04-02T09:26:16.478Z" }, + { url = "https://files.pythonhosted.org/packages/9a/bc/015b2387f913749f82afd4fcba07846d05b6d784dd16123cb66860e0237d/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:d635aab80466bc95771bb78d5370e74d36d1fe31467b6b29b8b57b2a3cd7d22c", size = 224739, upload-time = "2026-04-02T09:26:17.751Z" }, + { url = "https://files.pythonhosted.org/packages/17/ab/63133691f56baae417493cba6b7c641571a2130eb7bceba6773367ab9ec5/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ae196f021b5e7c78e918242d217db021ed2a6ace2bc6ae94c0fc596221c7f58d", size = 216277, upload-time = "2026-04-02T09:26:18.981Z" }, + { url = "https://files.pythonhosted.org/packages/06/6d/3be70e827977f20db77c12a97e6a9f973631a45b8d186c084527e53e77a4/charset_normalizer-3.4.7-cp311-cp311-win32.whl", hash = "sha256:adb2597b428735679446b46c8badf467b4ca5f5056aae4d51a19f9570301b1ad", size = 147819, upload-time = "2026-04-02T09:26:20.295Z" }, + { url = "https://files.pythonhosted.org/packages/20/d9/5f67790f06b735d7c7637171bbfd89882ad67201891b7275e51116ed8207/charset_normalizer-3.4.7-cp311-cp311-win_amd64.whl", hash = "sha256:8e385e4267ab76874ae30db04c627faaaf0b509e1ccc11a95b3fc3e83f855c00", size = 159281, upload-time = "2026-04-02T09:26:21.74Z" }, + { url = "https://files.pythonhosted.org/packages/ca/83/6413f36c5a34afead88ce6f66684d943d91f233d76dd083798f9602b75ae/charset_normalizer-3.4.7-cp311-cp311-win_arm64.whl", hash = "sha256:d4a48e5b3c2a489fae013b7589308a40146ee081f6f509e047e0e096084ceca1", size = 147843, upload-time = "2026-04-02T09:26:22.901Z" }, + { url = "https://files.pythonhosted.org/packages/0c/eb/4fc8d0a7110eb5fc9cc161723a34a8a6c200ce3b4fbf681bc86feee22308/charset_normalizer-3.4.7-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:eca9705049ad3c7345d574e3510665cb2cf844c2f2dcfe675332677f081cbd46", size = 311328, upload-time = "2026-04-02T09:26:24.331Z" }, + { url = "https://files.pythonhosted.org/packages/f8/e3/0fadc706008ac9d7b9b5be6dc767c05f9d3e5df51744ce4cc9605de7b9f4/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6178f72c5508bfc5fd446a5905e698c6212932f25bcdd4b47a757a50605a90e2", size = 208061, upload-time = "2026-04-02T09:26:25.568Z" }, + { url = "https://files.pythonhosted.org/packages/42/f0/3dd1045c47f4a4604df85ec18ad093912ae1344ac706993aff91d38773a2/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e1421b502d83040e6d7fb2fb18dff63957f720da3d77b2fbd3187ceb63755d7b", size = 229031, upload-time = "2026-04-02T09:26:26.865Z" }, + { url = "https://files.pythonhosted.org/packages/dc/67/675a46eb016118a2fbde5a277a5d15f4f69d5f3f5f338e5ee2f8948fcf43/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:edac0f1ab77644605be2cbba52e6b7f630731fc42b34cb0f634be1a6eface56a", size = 225239, upload-time = "2026-04-02T09:26:28.044Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5649fd1c7bade02f320a462fdefd0b4bd3ce036065836d4f42e0de958038e116", size = 216589, upload-time = "2026-04-02T09:26:29.239Z" }, + { url = "https://files.pythonhosted.org/packages/b1/f1/6d2b0b261b6c4ceef0fcb0d17a01cc5bc53586c2d4796fa04b5c540bc13d/charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:203104ed3e428044fd943bc4bf45fa73c0730391f9621e37fe39ecf477b128cb", size = 202733, upload-time = "2026-04-02T09:26:30.5Z" }, + { url = "https://files.pythonhosted.org/packages/6f/c0/7b1f943f7e87cc3db9626ba17807d042c38645f0a1d4415c7a14afb5591f/charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:298930cec56029e05497a76988377cbd7457ba864beeea92ad7e844fe74cd1f1", size = 212652, upload-time = "2026-04-02T09:26:31.709Z" }, + { url = "https://files.pythonhosted.org/packages/38/dd/5a9ab159fe45c6e72079398f277b7d2b523e7f716acc489726115a910097/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:708838739abf24b2ceb208d0e22403dd018faeef86ddac04319a62ae884c4f15", size = 211229, upload-time = "2026-04-02T09:26:33.282Z" }, + { url = "https://files.pythonhosted.org/packages/d5/ff/531a1cad5ca855d1c1a8b69cb71abfd6d85c0291580146fda7c82857caa1/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:0f7eb884681e3938906ed0434f20c63046eacd0111c4ba96f27b76084cd679f5", size = 203552, upload-time = "2026-04-02T09:26:34.845Z" }, + { url = "https://files.pythonhosted.org/packages/c1/4c/a5fb52d528a8ca41f7598cb619409ece30a169fbdf9cdce592e53b46c3a6/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4dc1e73c36828f982bfe79fadf5919923f8a6f4df2860804db9a98c48824ce8d", size = 230806, upload-time = "2026-04-02T09:26:36.152Z" }, + { url = "https://files.pythonhosted.org/packages/59/7a/071feed8124111a32b316b33ae4de83d36923039ef8cf48120266844285b/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:aed52fea0513bac0ccde438c188c8a471c4e0f457c2dd20cdbf6ea7a450046c7", size = 212316, upload-time = "2026-04-02T09:26:37.672Z" }, + { url = "https://files.pythonhosted.org/packages/fd/35/f7dba3994312d7ba508e041eaac39a36b120f32d4c8662b8814dab876431/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:fea24543955a6a729c45a73fe90e08c743f0b3334bbf3201e6c4bc1b0c7fa464", size = 227274, upload-time = "2026-04-02T09:26:38.93Z" }, + { url = "https://files.pythonhosted.org/packages/8a/2d/a572df5c9204ab7688ec1edc895a73ebded3b023bb07364710b05dd1c9be/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bb6d88045545b26da47aa879dd4a89a71d1dce0f0e549b1abcb31dfe4a8eac49", size = 218468, upload-time = "2026-04-02T09:26:40.17Z" }, + { url = "https://files.pythonhosted.org/packages/86/eb/890922a8b03a568ca2f336c36585a4713c55d4d67bf0f0c78924be6315ca/charset_normalizer-3.4.7-cp312-cp312-win32.whl", hash = "sha256:2257141f39fe65a3fdf38aeccae4b953e5f3b3324f4ff0daf9f15b8518666a2c", size = 148460, upload-time = "2026-04-02T09:26:41.416Z" }, + { url = "https://files.pythonhosted.org/packages/35/d9/0e7dffa06c5ab081f75b1b786f0aefc88365825dfcd0ac544bdb7b2b6853/charset_normalizer-3.4.7-cp312-cp312-win_amd64.whl", hash = "sha256:5ed6ab538499c8644b8a3e18debabcd7ce684f3fa91cf867521a7a0279cab2d6", size = 159330, upload-time = "2026-04-02T09:26:42.554Z" }, + { url = "https://files.pythonhosted.org/packages/9e/5d/481bcc2a7c88ea6b0878c299547843b2521ccbc40980cb406267088bc701/charset_normalizer-3.4.7-cp312-cp312-win_arm64.whl", hash = "sha256:56be790f86bfb2c98fb742ce566dfb4816e5a83384616ab59c49e0604d49c51d", size = 147828, upload-time = "2026-04-02T09:26:44.075Z" }, + { url = "https://files.pythonhosted.org/packages/c1/3b/66777e39d3ae1ddc77ee606be4ec6d8cbd4c801f65e5a1b6f2b11b8346dd/charset_normalizer-3.4.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f496c9c3cc02230093d8330875c4c3cdfc3b73612a5fd921c65d39cbcef08063", size = 309627, upload-time = "2026-04-02T09:26:45.198Z" }, + { url = "https://files.pythonhosted.org/packages/2e/4e/b7f84e617b4854ade48a1b7915c8ccfadeba444d2a18c291f696e37f0d3b/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ea948db76d31190bf08bd371623927ee1339d5f2a0b4b1b4a4439a65298703c", size = 207008, upload-time = "2026-04-02T09:26:46.824Z" }, + { url = "https://files.pythonhosted.org/packages/c4/bb/ec73c0257c9e11b268f018f068f5d00aa0ef8c8b09f7753ebd5f2880e248/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a277ab8928b9f299723bc1a2dabb1265911b1a76341f90a510368ca44ad9ab66", size = 228303, upload-time = "2026-04-02T09:26:48.397Z" }, + { url = "https://files.pythonhosted.org/packages/85/fb/32d1f5033484494619f701e719429c69b766bfc4dbc61aa9e9c8c166528b/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3bec022aec2c514d9cf199522a802bd007cd588ab17ab2525f20f9c34d067c18", size = 224282, upload-time = "2026-04-02T09:26:49.684Z" }, + { url = "https://files.pythonhosted.org/packages/fa/07/330e3a0dda4c404d6da83b327270906e9654a24f6c546dc886a0eb0ffb23/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e044c39e41b92c845bc815e5ae4230804e8e7bc29e399b0437d64222d92809dd", size = 215595, upload-time = "2026-04-02T09:26:50.915Z" }, + { url = "https://files.pythonhosted.org/packages/e3/7c/fc890655786e423f02556e0216d4b8c6bcb6bdfa890160dc66bf52dee468/charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:f495a1652cf3fbab2eb0639776dad966c2fb874d79d87ca07f9d5f059b8bd215", size = 201986, upload-time = "2026-04-02T09:26:52.197Z" }, + { url = "https://files.pythonhosted.org/packages/d8/97/bfb18b3db2aed3b90cf54dc292ad79fdd5ad65c4eae454099475cbeadd0d/charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e712b419df8ba5e42b226c510472b37bd57b38e897d3eca5e8cfd410a29fa859", size = 211711, upload-time = "2026-04-02T09:26:53.49Z" }, + { url = "https://files.pythonhosted.org/packages/6f/a5/a581c13798546a7fd557c82614a5c65a13df2157e9ad6373166d2a3e645d/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7804338df6fcc08105c7745f1502ba68d900f45fd770d5bdd5288ddccb8a42d8", size = 210036, upload-time = "2026-04-02T09:26:54.975Z" }, + { url = "https://files.pythonhosted.org/packages/8c/bf/b3ab5bcb478e4193d517644b0fb2bf5497fbceeaa7a1bc0f4d5b50953861/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:481551899c856c704d58119b5025793fa6730adda3571971af568f66d2424bb5", size = 202998, upload-time = "2026-04-02T09:26:56.303Z" }, + { url = "https://files.pythonhosted.org/packages/e7/4e/23efd79b65d314fa320ec6017b4b5834d5c12a58ba4610aa353af2e2f577/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f59099f9b66f0d7145115e6f80dd8b1d847176df89b234a5a6b3f00437aa0832", size = 230056, upload-time = "2026-04-02T09:26:57.554Z" }, + { url = "https://files.pythonhosted.org/packages/b9/9f/1e1941bc3f0e01df116e68dc37a55c4d249df5e6fa77f008841aef68264f/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:f59ad4c0e8f6bba240a9bb85504faa1ab438237199d4cce5f622761507b8f6a6", size = 211537, upload-time = "2026-04-02T09:26:58.843Z" }, + { url = "https://files.pythonhosted.org/packages/80/0f/088cbb3020d44428964a6c97fe1edfb1b9550396bf6d278330281e8b709c/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:3dedcc22d73ec993f42055eff4fcfed9318d1eeb9a6606c55892a26964964e48", size = 226176, upload-time = "2026-04-02T09:27:00.437Z" }, + { url = "https://files.pythonhosted.org/packages/6a/9f/130394f9bbe06f4f63e22641d32fc9b202b7e251c9aef4db044324dac493/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:64f02c6841d7d83f832cd97ccf8eb8a906d06eb95d5276069175c696b024b60a", size = 217723, upload-time = "2026-04-02T09:27:02.021Z" }, + { url = "https://files.pythonhosted.org/packages/73/55/c469897448a06e49f8fa03f6caae97074fde823f432a98f979cc42b90e69/charset_normalizer-3.4.7-cp313-cp313-win32.whl", hash = "sha256:4042d5c8f957e15221d423ba781e85d553722fc4113f523f2feb7b188cc34c5e", size = 148085, upload-time = "2026-04-02T09:27:03.192Z" }, + { url = "https://files.pythonhosted.org/packages/5d/78/1b74c5bbb3f99b77a1715c91b3e0b5bdb6fe302d95ace4f5b1bec37b0167/charset_normalizer-3.4.7-cp313-cp313-win_amd64.whl", hash = "sha256:3946fa46a0cf3e4c8cb1cc52f56bb536310d34f25f01ca9b6c16afa767dab110", size = 158819, upload-time = "2026-04-02T09:27:04.454Z" }, + { url = "https://files.pythonhosted.org/packages/68/86/46bd42279d323deb8687c4a5a811fd548cb7d1de10cf6535d099877a9a9f/charset_normalizer-3.4.7-cp313-cp313-win_arm64.whl", hash = "sha256:80d04837f55fc81da168b98de4f4b797ef007fc8a79ab71c6ec9bc4dd662b15b", size = 147915, upload-time = "2026-04-02T09:27:05.971Z" }, + { url = "https://files.pythonhosted.org/packages/97/c8/c67cb8c70e19ef1960b97b22ed2a1567711de46c4ddf19799923adc836c2/charset_normalizer-3.4.7-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:c36c333c39be2dbca264d7803333c896ab8fa7d4d6f0ab7edb7dfd7aea6e98c0", size = 309234, upload-time = "2026-04-02T09:27:07.194Z" }, + { url = "https://files.pythonhosted.org/packages/99/85/c091fdee33f20de70d6c8b522743b6f831a2f1cd3ff86de4c6a827c48a76/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1c2aed2e5e41f24ea8ef1590b8e848a79b56f3a5564a65ceec43c9d692dc7d8a", size = 208042, upload-time = "2026-04-02T09:27:08.749Z" }, + { url = "https://files.pythonhosted.org/packages/87/1c/ab2ce611b984d2fd5d86a5a8a19c1ae26acac6bad967da4967562c75114d/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:54523e136b8948060c0fa0bc7b1b50c32c186f2fceee897a495406bb6e311d2b", size = 228706, upload-time = "2026-04-02T09:27:09.951Z" }, + { url = "https://files.pythonhosted.org/packages/a8/29/2b1d2cb00bf085f59d29eb773ce58ec2d325430f8c216804a0a5cd83cbca/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:715479b9a2802ecac752a3b0efa2b0b60285cf962ee38414211abdfccc233b41", size = 224727, upload-time = "2026-04-02T09:27:11.175Z" }, + { url = "https://files.pythonhosted.org/packages/47/5c/032c2d5a07fe4d4855fea851209cca2b6f03ebeb6d4e3afdb3358386a684/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bd6c2a1c7573c64738d716488d2cdd3c00e340e4835707d8fdb8dc1a66ef164e", size = 215882, upload-time = "2026-04-02T09:27:12.446Z" }, + { url = "https://files.pythonhosted.org/packages/2c/c2/356065d5a8b78ed04499cae5f339f091946a6a74f91e03476c33f0ab7100/charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:c45e9440fb78f8ddabcf714b68f936737a121355bf59f3907f4e17721b9d1aae", size = 200860, upload-time = "2026-04-02T09:27:13.721Z" }, + { url = "https://files.pythonhosted.org/packages/0c/cd/a32a84217ced5039f53b29f460962abb2d4420def55afabe45b1c3c7483d/charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3534e7dcbdcf757da6b85a0bbf5b6868786d5982dd959b065e65481644817a18", size = 211564, upload-time = "2026-04-02T09:27:15.272Z" }, + { url = "https://files.pythonhosted.org/packages/44/86/58e6f13ce26cc3b8f4a36b94a0f22ae2f00a72534520f4ae6857c4b81f89/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e8ac484bf18ce6975760921bb6148041faa8fef0547200386ea0b52b5d27bf7b", size = 211276, upload-time = "2026-04-02T09:27:16.834Z" }, + { url = "https://files.pythonhosted.org/packages/8f/fe/d17c32dc72e17e155e06883efa84514ca375f8a528ba2546bee73fc4df81/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:a5fe03b42827c13cdccd08e6c0247b6a6d4b5e3cdc53fd1749f5896adcdc2356", size = 201238, upload-time = "2026-04-02T09:27:18.229Z" }, + { url = "https://files.pythonhosted.org/packages/6a/29/f33daa50b06525a237451cdb6c69da366c381a3dadcd833fa5676bc468b3/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:2d6eb928e13016cea4f1f21d1e10c1cebd5a421bc57ddf5b1142ae3f86824fab", size = 230189, upload-time = "2026-04-02T09:27:19.445Z" }, + { url = "https://files.pythonhosted.org/packages/b6/6e/52c84015394a6a0bdcd435210a7e944c5f94ea1055f5cc5d56c5fe368e7b/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:e74327fb75de8986940def6e8dee4f127cc9752bee7355bb323cc5b2659b6d46", size = 211352, upload-time = "2026-04-02T09:27:20.79Z" }, + { url = "https://files.pythonhosted.org/packages/8c/d7/4353be581b373033fb9198bf1da3cf8f09c1082561e8e922aa7b39bf9fe8/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:d6038d37043bced98a66e68d3aa2b6a35505dc01328cd65217cefe82f25def44", size = 227024, upload-time = "2026-04-02T09:27:22.063Z" }, + { url = "https://files.pythonhosted.org/packages/30/45/99d18aa925bd1740098ccd3060e238e21115fffbfdcb8f3ece837d0ace6c/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7579e913a5339fb8fa133f6bbcfd8e6749696206cf05acdbdca71a1b436d8e72", size = 217869, upload-time = "2026-04-02T09:27:23.486Z" }, + { url = "https://files.pythonhosted.org/packages/5c/05/5ee478aa53f4bb7996482153d4bfe1b89e0f087f0ab6b294fcf92d595873/charset_normalizer-3.4.7-cp314-cp314-win32.whl", hash = "sha256:5b77459df20e08151cd6f8b9ef8ef1f961ef73d85c21a555c7eed5b79410ec10", size = 148541, upload-time = "2026-04-02T09:27:25.146Z" }, + { url = "https://files.pythonhosted.org/packages/48/77/72dcb0921b2ce86420b2d79d454c7022bf5be40202a2a07906b9f2a35c97/charset_normalizer-3.4.7-cp314-cp314-win_amd64.whl", hash = "sha256:92a0a01ead5e668468e952e4238cccd7c537364eb7d851ab144ab6627dbbe12f", size = 159634, upload-time = "2026-04-02T09:27:26.642Z" }, + { url = "https://files.pythonhosted.org/packages/c6/a3/c2369911cd72f02386e4e340770f6e158c7980267da16af8f668217abaa0/charset_normalizer-3.4.7-cp314-cp314-win_arm64.whl", hash = "sha256:67f6279d125ca0046a7fd386d01b311c6363844deac3e5b069b514ba3e63c246", size = 148384, upload-time = "2026-04-02T09:27:28.271Z" }, + { url = "https://files.pythonhosted.org/packages/94/09/7e8a7f73d24dba1f0035fbbf014d2c36828fc1bf9c88f84093e57d315935/charset_normalizer-3.4.7-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:effc3f449787117233702311a1b7d8f59cba9ced946ba727bdc329ec69028e24", size = 330133, upload-time = "2026-04-02T09:27:29.474Z" }, + { url = "https://files.pythonhosted.org/packages/8d/da/96975ddb11f8e977f706f45cddd8540fd8242f71ecdb5d18a80723dcf62c/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fbccdc05410c9ee21bbf16a35f4c1d16123dcdeb8a1d38f33654fa21d0234f79", size = 216257, upload-time = "2026-04-02T09:27:30.793Z" }, + { url = "https://files.pythonhosted.org/packages/e5/e8/1d63bf8ef2d388e95c64b2098f45f84758f6d102a087552da1485912637b/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:733784b6d6def852c814bce5f318d25da2ee65dd4839a0718641c696e09a2960", size = 234851, upload-time = "2026-04-02T09:27:32.44Z" }, + { url = "https://files.pythonhosted.org/packages/9b/40/e5ff04233e70da2681fa43969ad6f66ca5611d7e669be0246c4c7aaf6dc8/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a89c23ef8d2c6b27fd200a42aa4ac72786e7c60d40efdc76e6011260b6e949c4", size = 233393, upload-time = "2026-04-02T09:27:34.03Z" }, + { url = "https://files.pythonhosted.org/packages/be/c1/06c6c49d5a5450f76899992f1ee40b41d076aee9279b49cf9974d2f313d5/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6c114670c45346afedc0d947faf3c7f701051d2518b943679c8ff88befe14f8e", size = 223251, upload-time = "2026-04-02T09:27:35.369Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9f/f2ff16fb050946169e3e1f82134d107e5d4ae72647ec8a1b1446c148480f/charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:a180c5e59792af262bf263b21a3c49353f25945d8d9f70628e73de370d55e1e1", size = 206609, upload-time = "2026-04-02T09:27:36.661Z" }, + { url = "https://files.pythonhosted.org/packages/69/d5/a527c0cd8d64d2eab7459784fb4169a0ac76e5a6fc5237337982fd61347e/charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3c9a494bc5ec77d43cea229c4f6db1e4d8fe7e1bbffa8b6f0f0032430ff8ab44", size = 220014, upload-time = "2026-04-02T09:27:38.019Z" }, + { url = "https://files.pythonhosted.org/packages/7e/80/8a7b8104a3e203074dc9aa2c613d4b726c0e136bad1cc734594b02867972/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8d828b6667a32a728a1ad1d93957cdf37489c57b97ae6c4de2860fa749b8fc1e", size = 218979, upload-time = "2026-04-02T09:27:39.37Z" }, + { url = "https://files.pythonhosted.org/packages/02/9a/b759b503d507f375b2b5c153e4d2ee0a75aa215b7f2489cf314f4541f2c0/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:cf1493cd8607bec4d8a7b9b004e699fcf8f9103a9284cc94962cb73d20f9d4a3", size = 209238, upload-time = "2026-04-02T09:27:40.722Z" }, + { url = "https://files.pythonhosted.org/packages/c2/4e/0f3f5d47b86bdb79256e7290b26ac847a2832d9a4033f7eb2cd4bcf4bb5b/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:0c96c3b819b5c3e9e165495db84d41914d6894d55181d2d108cc1a69bfc9cce0", size = 236110, upload-time = "2026-04-02T09:27:42.33Z" }, + { url = "https://files.pythonhosted.org/packages/96/23/bce28734eb3ed2c91dcf93abeb8a5cf393a7b2749725030bb630e554fdd8/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:752a45dc4a6934060b3b0dab47e04edc3326575f82be64bc4fc293914566503e", size = 219824, upload-time = "2026-04-02T09:27:43.924Z" }, + { url = "https://files.pythonhosted.org/packages/2c/6f/6e897c6984cc4d41af319b077f2f600fc8214eb2fe2d6bcb79141b882400/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:8778f0c7a52e56f75d12dae53ae320fae900a8b9b4164b981b9c5ce059cd1fcb", size = 233103, upload-time = "2026-04-02T09:27:45.348Z" }, + { url = "https://files.pythonhosted.org/packages/76/22/ef7bd0fe480a0ae9b656189ec00744b60933f68b4f42a7bb06589f6f576a/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ce3412fbe1e31eb81ea42f4169ed94861c56e643189e1e75f0041f3fe7020abe", size = 225194, upload-time = "2026-04-02T09:27:46.706Z" }, + { url = "https://files.pythonhosted.org/packages/c5/a7/0e0ab3e0b5bc1219bd80a6a0d4d72ca74d9250cb2382b7c699c147e06017/charset_normalizer-3.4.7-cp314-cp314t-win32.whl", hash = "sha256:c03a41a8784091e67a39648f70c5f97b5b6a37f216896d44d2cdcb82615339a0", size = 159827, upload-time = "2026-04-02T09:27:48.053Z" }, + { url = "https://files.pythonhosted.org/packages/7a/1d/29d32e0fb40864b1f878c7f5a0b343ae676c6e2b271a2d55cc3a152391da/charset_normalizer-3.4.7-cp314-cp314t-win_amd64.whl", hash = "sha256:03853ed82eeebbce3c2abfdbc98c96dc205f32a79627688ac9a27370ea61a49c", size = 174168, upload-time = "2026-04-02T09:27:49.795Z" }, + { url = "https://files.pythonhosted.org/packages/de/32/d92444ad05c7a6e41fb2036749777c163baf7a0301a040cb672d6b2b1ae9/charset_normalizer-3.4.7-cp314-cp314t-win_arm64.whl", hash = "sha256:c35abb8bfff0185efac5878da64c45dafd2b37fb0383add1be155a763c1f083d", size = 153018, upload-time = "2026-04-02T09:27:51.116Z" }, + { url = "https://files.pythonhosted.org/packages/db/8f/61959034484a4a7c527811f4721e75d02d653a35afb0b6054474d8185d4c/charset_normalizer-3.4.7-py3-none-any.whl", hash = "sha256:3dce51d0f5e7951f8bb4900c257dad282f49190fdbebecd4ba99bcc41fef404d", size = 61958, upload-time = "2026-04-02T09:28:37.794Z" }, +] + +[[package]] +name = "click" +version = "8.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bb/63/f9e1ea081ce35720d8b92acde70daaedace594dc93b693c869e0d5910718/click-8.3.3.tar.gz", hash = "sha256:398329ad4837b2ff7cbe1dd166a4c0f8900c3ca3a218de04466f38f6497f18a2", size = 328061, upload-time = "2026-04-22T15:11:27.506Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ae/44/c1221527f6a71a01ec6fbad7fa78f1d50dfa02217385cf0fa3eec7087d59/click-8.3.3-py3-none-any.whl", hash = "sha256:a2bf429bb3033c89fa4936ffb35d5cb471e3719e1f3c8a7c3fff0b8314305613", size = 110502, upload-time = "2026-04-22T15:11:25.044Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "colorlog" +version = "6.10.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a2/61/f083b5ac52e505dfc1c624eafbf8c7589a0d7f32daa398d2e7590efa5fda/colorlog-6.10.1.tar.gz", hash = "sha256:eb4ae5cb65fe7fec7773c2306061a8e63e02efc2c72eba9d27b0fa23c94f1321", size = 17162, upload-time = "2025-10-16T16:14:11.978Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/c1/e419ef3723a074172b68aaa89c9f3de486ed4c2399e2dbd8113a4fdcaf9e/colorlog-6.10.1-py3-none-any.whl", hash = "sha256:2d7e8348291948af66122cff006c9f8da6255d224e7cf8e37d8de2df3bad8c9c", size = 11743, upload-time = "2025-10-16T16:14:10.512Z" }, +] + +[[package]] +name = "cuda-bindings" +version = "13.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cuda-pathfinder", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'emscripten' and sys_platform != 'win32')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/fe/7351d7e586a8b4c9f89731bfe4cf0148223e8f9903ff09571f78b3fb0682/cuda_bindings-13.2.0-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:08b395f79cb89ce0cd8effff07c4a1e20101b873c256a1aeb286e8fd7bd0f556", size = 5744254, upload-time = "2026-03-11T00:12:29.798Z" }, + { url = "https://files.pythonhosted.org/packages/aa/ef/184aa775e970fc089942cd9ec6302e6e44679d4c14549c6a7ea45bf7f798/cuda_bindings-13.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6f3682ec3c4769326aafc67c2ba669d97d688d0b7e63e659d36d2f8b72f32d6", size = 6329075, upload-time = "2026-03-11T00:12:32.319Z" }, + { url = "https://files.pythonhosted.org/packages/e0/a9/3a8241c6e19483ac1f1dcf5c10238205dcb8a6e9d0d4d4709240dff28ff4/cuda_bindings-13.2.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:721104c603f059780d287969be3d194a18d0cc3b713ed9049065a1107706759d", size = 5730273, upload-time = "2026-03-11T00:12:37.18Z" }, + { url = "https://files.pythonhosted.org/packages/e9/94/2748597f47bb1600cd466b20cab4159f1530a3a33fe7f70fee199b3abb9e/cuda_bindings-13.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1eba9504ac70667dd48313395fe05157518fd6371b532790e96fbb31bbb5a5e1", size = 6313924, upload-time = "2026-03-11T00:12:39.462Z" }, + { url = "https://files.pythonhosted.org/packages/52/c8/b2589d68acf7e3d63e2be330b84bc25712e97ed799affbca7edd7eae25d6/cuda_bindings-13.2.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e865447abfb83d6a98ad5130ed3c70b1fc295ae3eeee39fd07b4ddb0671b6788", size = 5722404, upload-time = "2026-03-11T00:12:44.041Z" }, + { url = "https://files.pythonhosted.org/packages/1f/92/f899f7bbb5617bb65ec52a6eac1e9a1447a86b916c4194f8a5001b8cde0c/cuda_bindings-13.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:46d8776a55d6d5da9dd6e9858fba2efcda2abe6743871dee47dd06eb8cb6d955", size = 6320619, upload-time = "2026-03-11T00:12:45.939Z" }, + { url = "https://files.pythonhosted.org/packages/df/93/eef988860a3ca985f82c4f3174fc0cdd94e07331ba9a92e8e064c260337f/cuda_bindings-13.2.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6629ca2df6f795b784752409bcaedbd22a7a651b74b56a165ebc0c9dcbd504d0", size = 5614610, upload-time = "2026-03-11T00:12:50.337Z" }, + { url = "https://files.pythonhosted.org/packages/18/23/6db3aba46864aee357ab2415135b3fe3da7e9f1fa0221fa2a86a5968099c/cuda_bindings-13.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7dca0da053d3b4cc4869eff49c61c03f3c5dbaa0bcd712317a358d5b8f3f385d", size = 6149914, upload-time = "2026-03-11T00:12:52.374Z" }, + { url = "https://files.pythonhosted.org/packages/c0/87/87a014f045b77c6de5c8527b0757fe644417b184e5367db977236a141602/cuda_bindings-13.2.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a6464b30f46692d6c7f65d4a0e0450d81dd29de3afc1bb515653973d01c2cd6e", size = 5685673, upload-time = "2026-03-11T00:12:56.371Z" }, + { url = "https://files.pythonhosted.org/packages/ee/5e/c0fe77a73aaefd3fff25ffaccaac69c5a63eafdf8b9a4c476626ef0ac703/cuda_bindings-13.2.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f4af9f3e1be603fa12d5ad6cfca7844c9d230befa9792b5abdf7dd79979c3626", size = 6191386, upload-time = "2026-03-11T00:12:58.965Z" }, + { url = "https://files.pythonhosted.org/packages/5f/58/ed2c3b39c8dd5f96aa7a4abef0d47a73932c7a988e30f5fa428f00ed0da1/cuda_bindings-13.2.0-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:df850a1ff8ce1b3385257b08e47b70e959932f5f432d0a4e46a355962b4e4771", size = 5507469, upload-time = "2026-03-11T00:13:04.063Z" }, + { url = "https://files.pythonhosted.org/packages/1f/01/0c941b112ceeb21439b05895eace78ca1aa2eaaf695c8521a068fd9b4c00/cuda_bindings-13.2.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e8a16384c6494e5485f39314b0b4afb04bee48d49edb16d5d8593fd35bbd231b", size = 6059693, upload-time = "2026-03-11T00:13:06.003Z" }, +] + +[[package]] +name = "cuda-pathfinder" +version = "1.5.3" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d3/d6/ac63065d33dd700fee7ebd7d287332401b54e31b9346e142f871e1f0b116/cuda_pathfinder-1.5.3-py3-none-any.whl", hash = "sha256:dff021123aedbb4117cc7ec81717bbfe198fb4e8b5f1ee57e0e084fec5c8577d", size = 49991, upload-time = "2026-04-14T20:09:27.037Z" }, +] + +[[package]] +name = "cuda-toolkit" +version = "13.0.2" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/57/b2/453099f5f3b698d7d0eab38916aac44c7f76229f451709e2eb9db6615dcd/cuda_toolkit-13.0.2-py2.py3-none-any.whl", hash = "sha256:b198824cf2f54003f50d64ada3a0f184b42ca0846c1c94192fa269ecd97a66eb", size = 2364, upload-time = "2025-12-19T23:24:07.328Z" }, +] + +[package.optional-dependencies] +cudart = [ + { name = "nvidia-cuda-runtime", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" }, +] +cufft = [ + { name = "nvidia-cufft", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" }, +] +cufile = [ + { name = "nvidia-cufile", marker = "sys_platform == 'linux'" }, +] +cupti = [ + { name = "nvidia-cuda-cupti", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" }, +] +curand = [ + { name = "nvidia-curand", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" }, +] +cusolver = [ + { name = "nvidia-cusolver", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" }, +] +cusparse = [ + { name = "nvidia-cusparse", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" }, +] +nvjitlink = [ + { name = "nvidia-nvjitlink", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" }, +] +nvrtc = [ + { name = "nvidia-cuda-nvrtc", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" }, +] +nvtx = [ + { name = "nvidia-nvtx", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" }, +] + +[[package]] +name = "defusedxml" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520, upload-time = "2021-03-08T10:59:26.269Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload-time = "2021-03-08T10:59:24.45Z" }, +] + +[[package]] +name = "dill" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/81/e1/56027a71e31b02ddc53c7d65b01e68edf64dea2932122fe7746a516f75d5/dill-0.4.1.tar.gz", hash = "sha256:423092df4182177d4d8ba8290c8a5b640c66ab35ec7da59ccfa00f6fa3eea5fa", size = 187315, upload-time = "2026-01-19T02:36:56.85Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/77/dc8c558f7593132cf8fefec57c4f60c83b16941c574ac5f619abb3ae7933/dill-0.4.1-py3-none-any.whl", hash = "sha256:1e1ce33e978ae97fcfcff5638477032b801c46c7c65cf717f95fbc2248f79a9d", size = 120019, upload-time = "2026-01-19T02:36:55.663Z" }, +] + +[[package]] +name = "docling" +version = "2.94.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "docling-slim", extra = ["standard"] }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5d/f0/65e3a93436b1d10a0f2c22cb7d910e2387126800e4fa1d53f5895e7ca323/docling-2.94.0.tar.gz", hash = "sha256:13b87660a5f7d96a85e863da631bbf83e6496bd74ef5e950ca780dacdbe82b48", size = 8633, upload-time = "2026-05-18T10:16:32.384Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/31/9a78c780232fbdac64072c560e0f58a5edb3a30d7f9909f82506afb41e38/docling-2.94.0-py3-none-any.whl", hash = "sha256:e5f0c79091d4654f9b9a8b28dc064e421253295b3dbefd3424831c7ccc00a23a", size = 4757, upload-time = "2026-05-18T10:16:31.054Z" }, +] + +[package.optional-dependencies] +easyocr = [ + { name = "docling-slim", extra = ["feat-ocr-easyocr"] }, +] + +[[package]] +name = "docling-core" +version = "2.74.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "defusedxml" }, + { name = "jsonref" }, + { name = "jsonschema" }, + { name = "latex2mathml" }, + { name = "pandas", version = "2.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "pandas", version = "3.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "pillow" }, + { name = "pydantic" }, + { name = "pydantic-settings" }, + { name = "pyyaml" }, + { name = "tabulate" }, + { name = "typer" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e8/94/4856d01de4afd565d0ea12198f157f634cf65dc373a4ee97cb0d789f8554/docling_core-2.74.1.tar.gz", hash = "sha256:46bf298686f2c51ddd69b6935a27dff1cc80838f2f5f1a8823492d99cf1a357b", size = 319269, upload-time = "2026-04-22T14:33:45.241Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/c3/5f8c9a9b0cad437cb7e6ffcd48ccc309b2290cea6aac067569bf61b84743/docling_core-2.74.1-py3-none-any.whl", hash = "sha256:e6464078012b3d45f4e0accd101fcb277063903f355eabbb9aee8de00527a789", size = 276973, upload-time = "2026-04-22T14:33:43.366Z" }, +] + +[package.optional-dependencies] +chunking = [ + { name = "semchunk" }, + { name = "transformers" }, + { name = "tree-sitter" }, + { name = "tree-sitter-c" }, + { name = "tree-sitter-javascript" }, + { name = "tree-sitter-python" }, + { name = "tree-sitter-typescript" }, +] + +[[package]] +name = "docling-ibm-models" +version = "3.13.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "accelerate" }, + { name = "docling-core" }, + { name = "huggingface-hub" }, + { name = "jsonlines" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "pillow" }, + { name = "pydantic" }, + { name = "rtree" }, + { name = "safetensors", extra = ["torch"] }, + { name = "torch" }, + { name = "torchvision" }, + { name = "tqdm" }, + { name = "transformers" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c1/25/84166f5751d7837612138966669019a4ef67c09bf6d3ef8d3cc1aa0e6268/docling_ibm_models-3.13.2.tar.gz", hash = "sha256:195e02dd119df34d2ce5f76ac614da82825851013e4898db7b0468cdf8740a3d", size = 98655, upload-time = "2026-04-23T11:04:23.517Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/fc/584f75ca31aa6694fed5338ecb54dc4c8341704b1e5b7b6a4528651f12fa/docling_ibm_models-3.13.2-py3-none-any.whl", hash = "sha256:5fa0838bf15a4e06d2fcb686d756a6f4c329ea0a8820d085f06d07abe96269ed", size = 94013, upload-time = "2026-04-23T11:04:22.227Z" }, +] + +[[package]] +name = "docling-parse" +version = "5.10.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "docling-core" }, + { name = "pillow" }, + { name = "pydantic" }, + { name = "pywin32", marker = "sys_platform == 'win32'" }, + { name = "tabulate" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5a/0c/48a9bf8f935903e3cb7e69f25026b0c376b1788097cce2c94b5b496ec26c/docling_parse-5.10.0.tar.gz", hash = "sha256:5f953f673893f801f742558c0d6329d903fa4bbf4e60415c757dcb36dcba90dc", size = 6651220, upload-time = "2026-04-22T09:01:36.991Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ff/1d/086597a6cf953150e27bc1c6f32ea01d9734af28db6efc5feaa892373535/docling_parse-5.10.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:0a7726170b9dfcaed04902352780272a1f6283248279c09601edb3c7c3ab0f67", size = 9110442, upload-time = "2026-04-22T09:00:55.955Z" }, + { url = "https://files.pythonhosted.org/packages/47/9b/bbb99211aeac737f07ee62943db2f205bec3855dd84408856621b4b9dff6/docling_parse-5.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b7aac9696359984ad18d5a7abaed2a8f1a297cb738ff960104ae999239571c4", size = 9833510, upload-time = "2026-04-22T09:00:58.141Z" }, + { url = "https://files.pythonhosted.org/packages/31/54/f45648728add59a387ba989fc7562d2327f9de59491a31b9e4188be9b78a/docling_parse-5.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8409a754a9a96f017316e57297536142d05da792f33e9f5b2ba93330a8d3528e", size = 10106128, upload-time = "2026-04-22T09:01:00.928Z" }, + { url = "https://files.pythonhosted.org/packages/d1/c3/cda016c1cfab766751c346340e2d315bb208775cd051d2ffaeeef672ca75/docling_parse-5.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:162a6aeb9cf497546aa520faad22b42939ec516cdaee0cdbd6421d2e89aaf38d", size = 10909729, upload-time = "2026-04-22T09:01:02.961Z" }, + { url = "https://files.pythonhosted.org/packages/78/7a/a60dde1f6b1f1c9679d8c327931f298b6757f053d58d1b34af57f40919b7/docling_parse-5.10.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:64619b98472c6a0c609de9a7095a7a8fc5970e92758f523264bc827946e74ed8", size = 9111152, upload-time = "2026-04-22T09:01:05.332Z" }, + { url = "https://files.pythonhosted.org/packages/b2/d2/a775e15c2dae0996633cbfc1cfa03f92c06d9b5b0f7b688f2fb4993cd2d5/docling_parse-5.10.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d4f166e227e8218f410c9ef976902fd3f29b6655705f288f1ba051582788e2c5", size = 9780057, upload-time = "2026-04-22T09:01:07.425Z" }, + { url = "https://files.pythonhosted.org/packages/2e/90/ecab13d6123b957bc15de353fe2e3d9ade99d01fae8c8fdd03204f1b7d8b/docling_parse-5.10.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c5983907a5b36a7242150537f8565958fe095829c5ab33ac72f368d1b97b21c3", size = 10158565, upload-time = "2026-04-22T09:01:09.266Z" }, + { url = "https://files.pythonhosted.org/packages/8e/49/56ca316fb35606720452e72f3e1c83f05974f0d56521c2512ffd1987bea2/docling_parse-5.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:966eebb69a4b73f20af461c5ee261097fd2dd923ffe18cd360ab999b23619130", size = 10910103, upload-time = "2026-04-22T09:01:11.641Z" }, + { url = "https://files.pythonhosted.org/packages/aa/4f/4d8fdbece925b978070e6eb23f8c0ae24f8e9e0cd4a849813128a03297f2/docling_parse-5.10.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:10f2c564552c2a0d1ccbf38ea250bc1608abfb88a5b907ac49f3331157a4b77b", size = 9112861, upload-time = "2026-04-22T09:01:14.017Z" }, + { url = "https://files.pythonhosted.org/packages/aa/fc/caf8ee42d0f15f6369a528b76b31377527d89e69ca9512657c665b63b464/docling_parse-5.10.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b8f886566264793a084046b6d3ee75156510bfbee14360f700c5ddf38f113bad", size = 9780836, upload-time = "2026-04-22T09:01:15.77Z" }, + { url = "https://files.pythonhosted.org/packages/00/de/bb6df3de415a639c2d84650924b488748404b39e0ed244b9a8c6dbc1a9b6/docling_parse-5.10.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6fd6668f4a0c27916ddc1ffada1dd483d34a2033bdb0794e81b1ebf4f5766f32", size = 10158920, upload-time = "2026-04-22T09:01:17.554Z" }, + { url = "https://files.pythonhosted.org/packages/db/4c/19a87434865c4c9dcb65f6b1e39f76c0b0acd3ecb6a420e4f5233ac89a2d/docling_parse-5.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:c6ae34923f3d084ac3ff47cf2edd998439299c7bd4f1e2a8d2245d5e0697b0bf", size = 10912106, upload-time = "2026-04-22T09:01:19.704Z" }, + { url = "https://files.pythonhosted.org/packages/70/5c/a9e822d319beaef6ecfd915e5e44d4ce92bf70ec9b9fb2ebaac573e5cd7e/docling_parse-5.10.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:f7221d8f5567d135818b78683625cef72e2a32833a446bcc9c83409792163522", size = 9112853, upload-time = "2026-04-22T09:01:21.921Z" }, + { url = "https://files.pythonhosted.org/packages/89/83/ec0d68f045c5ab1de4aa9ee7c8fa3c7c5b1b112dafbd6aef16e30fbbf126/docling_parse-5.10.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e9209826a4c5bbfbebd479aa237ac6f43973fc75a68b8b7e5731b1720b248b92", size = 9781281, upload-time = "2026-04-22T09:01:24.067Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ba/c5f4de11adcd82ce93c21df4fb297f6ac93bf0953bd1f3b9796b97b81cd4/docling_parse-5.10.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c4a3bc04e954c7d271f54126d5a42f015ceac7a9fd22943c21751d172253d3f9", size = 10158786, upload-time = "2026-04-22T09:01:25.816Z" }, + { url = "https://files.pythonhosted.org/packages/ad/ca/ecc4736915b33a086687d0713ba34d98bd8c60172f70099c3d5ba1661a16/docling_parse-5.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:83edd224024e9f891e541aa0785103d6ae9f545d398d4053e37f8628444cf6b5", size = 10911860, upload-time = "2026-04-22T09:01:27.793Z" }, + { url = "https://files.pythonhosted.org/packages/d2/7f/aba616fc276a8f185e08af042e7b06e95772003ddcb40909f0eda1fe0afb/docling_parse-5.10.0-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:e83f16fbca028cb542a2feac57f91c3b39c70119eba851d90fc1566b67a725ab", size = 9113491, upload-time = "2026-04-22T09:01:29.565Z" }, + { url = "https://files.pythonhosted.org/packages/63/a1/bfee88c1d047f1202c36453c5059d280554a226f93bd891d80a32c2aa364/docling_parse-5.10.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2eddc44dcb448a7b9bae7ca95bccb9a97f978814a952e8b735b54b320ce34297", size = 9781242, upload-time = "2026-04-22T09:01:31.253Z" }, + { url = "https://files.pythonhosted.org/packages/ba/04/5aafd5feaaeb1d5e1d65cc56420438b39dcd3222294e79e215c2dcce2ab5/docling_parse-5.10.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:26c4e23d1b8d81ee2ceba0feabf0615daa989283acd0c393f69fd143c8a5bd8d", size = 10159041, upload-time = "2026-04-22T09:01:33.31Z" }, + { url = "https://files.pythonhosted.org/packages/68/3f/92abde5e78fafa77bc769e3c453e4493be517fe55d57d529b266acf24d92/docling_parse-5.10.0-cp314-cp314-win_amd64.whl", hash = "sha256:2ea22eff632cc9e21e0e9bebce86cf856fc05259267026cd94dd5403bc8da6fe", size = 11322350, upload-time = "2026-04-22T09:01:35.272Z" }, +] + +[[package]] +name = "docling-slim" +version = "2.94.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "docling-core" }, + { name = "filetype" }, + { name = "pluggy" }, + { name = "pydantic" }, + { name = "pydantic-settings" }, + { name = "requests" }, + { name = "tqdm" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b6/ef/b93ea3e4f949f8613b1d44924a8c63c3839c48b299ddb84465ac4f92acd6/docling_slim-2.94.0.tar.gz", hash = "sha256:4e5ba7972b7d13220a029cd9988d4b1ef638e3961c7912b86dc4377fea7842f8", size = 399693, upload-time = "2026-05-18T10:15:02.109Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/fc/0550015c6087671eb149770d14a51fd80a794672eff162b7921d2cf9ebb1/docling_slim-2.94.0-py3-none-any.whl", hash = "sha256:9c90e7e381eb9d70e8e64bc01cb1dec875c7d6f6e66d2ac39df14f5bb4a4a3d1", size = 519383, upload-time = "2026-05-18T10:14:59.928Z" }, +] + +[package.optional-dependencies] +feat-ocr-easyocr = [ + { name = "easyocr" }, + { name = "scikit-image", version = "0.25.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "scikit-image", version = "0.26.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +standard = [ + { name = "accelerate" }, + { name = "beautifulsoup4" }, + { name = "defusedxml" }, + { name = "docling-core", extra = ["chunking"] }, + { name = "docling-ibm-models" }, + { name = "docling-parse" }, + { name = "httpx" }, + { name = "huggingface-hub" }, + { name = "lxml" }, + { name = "marko" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "openpyxl" }, + { name = "pillow" }, + { name = "polyfactory" }, + { name = "pylatexenc" }, + { name = "pypdfium2" }, + { name = "python-docx" }, + { name = "python-pptx" }, + { name = "rapidocr" }, + { name = "rich" }, + { name = "rtree" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "torch" }, + { name = "torchvision" }, + { name = "typer" }, + { name = "websockets" }, +] + +[[package]] +name = "easyocr" +version = "1.7.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ninja" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "opencv-python-headless" }, + { name = "pillow" }, + { name = "pyclipper" }, + { name = "python-bidi" }, + { name = "pyyaml" }, + { name = "scikit-image", version = "0.25.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "scikit-image", version = "0.26.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "shapely" }, + { name = "torch" }, + { name = "torchvision" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/bb/84/4a2cab0e6adde6a85e7ba543862e5fc0250c51f3ac721a078a55cdcff250/easyocr-1.7.2-py3-none-any.whl", hash = "sha256:5be12f9b0e595d443c9c3d10b0542074b50f0ec2d98b141a109cd961fd1c177c", size = 2870178, upload-time = "2024-09-24T11:34:43.554Z" }, +] + +[[package]] +name = "et-xmlfile" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d3/38/af70d7ab1ae9d4da450eeec1fa3918940a5fafb9055e934af8d6eb0c2313/et_xmlfile-2.0.0.tar.gz", hash = "sha256:dab3f4764309081ce75662649be815c4c9081e88f0837825f90fd28317d4da54", size = 17234, upload-time = "2024-10-25T17:25:40.039Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/8b/5fe2cc11fee489817272089c4203e679c63b570a5aaeb18d852ae3cbba6a/et_xmlfile-2.0.0-py3-none-any.whl", hash = "sha256:7a91720bc756843502c3b7504c77b8fe44217c85c537d85037f0f536151b2caa", size = 18059, upload-time = "2024-10-25T17:25:39.051Z" }, +] + +[[package]] +name = "exceptiongroup" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", size = 16740, upload-time = "2025-11-21T23:01:53.443Z" }, +] + +[[package]] +name = "faker" +version = "40.15.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "tzdata", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7f/13/6741787bd91c4109c7bed047d68273965cd52ce8a5f773c471b949334b6d/faker-40.15.0.tar.gz", hash = "sha256:20f3a6ec8c266b74d4c554e34118b21c3c2056c0b4a519d15c8decb3a4e6e795", size = 1967447, upload-time = "2026-04-17T20:05:27.555Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/a7/a600f8f30d4505e89166de51dd121bd540ab8e560e8cf0901de00a81de8c/faker-40.15.0-py3-none-any.whl", hash = "sha256:71ab3c3370da9d2205ab74ffb0fd51273063ad562b3a3bb69d0026a20923e318", size = 2004447, upload-time = "2026-04-17T20:05:25.437Z" }, +] + +[[package]] +name = "fastapi" +version = "0.136.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-doc" }, + { name = "pydantic" }, + { name = "starlette" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5d/45/c130091c2dfa061bbfe3150f2a5091ef1adf149f2a8d2ae769ecaf6e99a2/fastapi-0.136.1.tar.gz", hash = "sha256:7af665ad7acfa0a3baf8983d393b6b471b9da10ede59c60045f49fbc89a0fa7f", size = 397448, upload-time = "2026-04-23T16:49:44.046Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/ff/2e4eca3ade2c22fe1dea7043b8ee9dabe47753349eb1b56a202de8af6349/fastapi-0.136.1-py3-none-any.whl", hash = "sha256:a6e9d7eeada96c93a4d69cb03836b44fa34e2854accb7244a1ece36cd4781c3f", size = 117683, upload-time = "2026-04-23T16:49:42.437Z" }, +] + +[[package]] +name = "filelock" +version = "3.29.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b5/fe/997687a931ab51049acce6fa1f23e8f01216374ea81374ddee763c493db5/filelock-3.29.0.tar.gz", hash = "sha256:69974355e960702e789734cb4871f884ea6fe50bd8404051a3530bc07809cf90", size = 57571, upload-time = "2026-04-19T15:39:10.068Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/47/dd9a212ef6e343a6857485ffe25bba537304f1913bdbed446a23f7f592e1/filelock-3.29.0-py3-none-any.whl", hash = "sha256:96f5f6344709aa1572bbf631c640e4ebeeb519e08da902c39a001882f30ac258", size = 39812, upload-time = "2026-04-19T15:39:08.752Z" }, +] + +[[package]] +name = "filetype" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/29/745f7d30d47fe0f251d3ad3dc2978a23141917661998763bebb6da007eb1/filetype-1.2.0.tar.gz", hash = "sha256:66b56cd6474bf41d8c54660347d37afcc3f7d1970648de365c102ef77548aadb", size = 998020, upload-time = "2022-11-02T17:34:04.141Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/79/1b8fa1bb3568781e84c9200f951c735f3f157429f44be0495da55894d620/filetype-1.2.0-py2.py3-none-any.whl", hash = "sha256:7ce71b6880181241cf7ac8697a2f1eb6a8bd9b429f7ad6d27b8db9ba5f1c2d25", size = 19970, upload-time = "2022-11-02T17:34:01.425Z" }, +] + +[[package]] +name = "fsspec" +version = "2026.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e1/cf/b50ddf667c15276a9ab15a70ef5f257564de271957933ffea49d2cdbcdfb/fsspec-2026.3.0.tar.gz", hash = "sha256:1ee6a0e28677557f8c2f994e3eea77db6392b4de9cd1f5d7a9e87a0ae9d01b41", size = 313547, upload-time = "2026-03-27T19:11:14.892Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/1f/5f4a3cd9e4440e9d9bc78ad0a91a1c8d46b4d429d5239ebe6793c9fe5c41/fsspec-2026.3.0-py3-none-any.whl", hash = "sha256:d2ceafaad1b3457968ed14efa28798162f1638dbb5d2a6868a2db002a5ee39a4", size = 202595, upload-time = "2026-03-27T19:11:13.595Z" }, +] + +[[package]] +name = "h11" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, +] + +[[package]] +name = "hf-xet" +version = "1.4.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/53/92/ec9ad04d0b5728dca387a45af7bc98fbb0d73b2118759f5f6038b61a57e8/hf_xet-1.4.3.tar.gz", hash = "sha256:8ddedb73c8c08928c793df2f3401ec26f95be7f7e516a7bee2fbb546f6676113", size = 670477, upload-time = "2026-03-31T22:40:07.874Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/43/724d307b34e353da0abd476e02f72f735cdd2bc86082dee1b32ea0bfee1d/hf_xet-1.4.3-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:7551659ba4f1e1074e9623996f28c3873682530aee0a846b7f2f066239228144", size = 3800935, upload-time = "2026-03-31T22:39:49.618Z" }, + { url = "https://files.pythonhosted.org/packages/2b/d2/8bee5996b699262edb87dbb54118d287c0e1b2fc78af7cdc41857ba5e3c4/hf_xet-1.4.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:bee693ada985e7045997f05f081d0e12c4c08bd7626dc397f8a7c487e6c04f7f", size = 3558942, upload-time = "2026-03-31T22:39:47.938Z" }, + { url = "https://files.pythonhosted.org/packages/c3/a1/e993d09cbe251196fb60812b09a58901c468127b7259d2bf0f68bf6088eb/hf_xet-1.4.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:21644b404bb0100fe3857892f752c4d09642586fd988e61501c95bbf44b393a3", size = 4207657, upload-time = "2026-03-31T22:39:39.69Z" }, + { url = "https://files.pythonhosted.org/packages/64/44/9eb6d21e5c34c63e5e399803a6932fa983cabdf47c0ecbcfe7ea97684b8c/hf_xet-1.4.3-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:987f09cfe418237812896a6736b81b1af02a3a6dcb4b4944425c4c4fca7a7cf8", size = 3986765, upload-time = "2026-03-31T22:39:37.936Z" }, + { url = "https://files.pythonhosted.org/packages/ea/7b/8ad6f16fdb82f5f7284a34b5ec48645bd575bdcd2f6f0d1644775909c486/hf_xet-1.4.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:60cf7fc43a99da0a853345cf86d23738c03983ee5249613a6305d3e57a5dca74", size = 4188162, upload-time = "2026-03-31T22:39:58.382Z" }, + { url = "https://files.pythonhosted.org/packages/1b/c4/39d6e136cbeea9ca5a23aad4b33024319222adbdc059ebcda5fc7d9d5ff4/hf_xet-1.4.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2815a49a7a59f3e2edf0cf113ae88e8cb2ca2a221bf353fb60c609584f4884d4", size = 4424525, upload-time = "2026-03-31T22:40:00.225Z" }, + { url = "https://files.pythonhosted.org/packages/46/f2/adc32dae6bdbc367853118b9878139ac869419a4ae7ba07185dc31251b76/hf_xet-1.4.3-cp313-cp313t-win_amd64.whl", hash = "sha256:42ee323265f1e6a81b0e11094564fb7f7e0ec75b5105ffd91ae63f403a11931b", size = 3671610, upload-time = "2026-03-31T22:40:10.42Z" }, + { url = "https://files.pythonhosted.org/packages/e2/19/25d897dcc3f81953e0c2cde9ec186c7a0fee413eb0c9a7a9130d87d94d3a/hf_xet-1.4.3-cp313-cp313t-win_arm64.whl", hash = "sha256:27c976ba60079fb8217f485b9c5c7fcd21c90b0367753805f87cb9f3cdc4418a", size = 3528529, upload-time = "2026-03-31T22:40:09.106Z" }, + { url = "https://files.pythonhosted.org/packages/ec/36/3e8f85ca9fe09b8de2b2e10c63b3b3353d7dda88a0b3d426dffbe7b8313b/hf_xet-1.4.3-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:5251d5ece3a81815bae9abab41cf7ddb7bcb8f56411bce0827f4a3071c92fdc6", size = 3801019, upload-time = "2026-03-31T22:39:56.651Z" }, + { url = "https://files.pythonhosted.org/packages/b5/9c/defb6cb1de28bccb7bd8d95f6e60f72a3d3fa4cb3d0329c26fb9a488bfe7/hf_xet-1.4.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1feb0f3abeacee143367c326a128a2e2b60868ec12a36c225afb1d6c5a05e6d2", size = 3558746, upload-time = "2026-03-31T22:39:54.766Z" }, + { url = "https://files.pythonhosted.org/packages/c1/bd/8d001191893178ff8e826e46ad5299446e62b93cd164e17b0ffea08832ec/hf_xet-1.4.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8b301fc150290ca90b4fccd079829b84bb4786747584ae08b94b4577d82fb791", size = 4207692, upload-time = "2026-03-31T22:39:46.246Z" }, + { url = "https://files.pythonhosted.org/packages/ce/48/6790b402803250e9936435613d3a78b9aaeee7973439f0918848dde58309/hf_xet-1.4.3-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:d972fbe95ddc0d3c0fc49b31a8a69f47db35c1e3699bf316421705741aab6653", size = 3986281, upload-time = "2026-03-31T22:39:44.648Z" }, + { url = "https://files.pythonhosted.org/packages/51/56/ea62552fe53db652a9099eda600b032d75554d0e86c12a73824bfedef88b/hf_xet-1.4.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c5b48db1ee344a805a1b9bd2cda9b6b65fe77ed3787bd6e87ad5521141d317cd", size = 4187414, upload-time = "2026-03-31T22:40:04.951Z" }, + { url = "https://files.pythonhosted.org/packages/7d/f5/bc1456d4638061bea997e6d2db60a1a613d7b200e0755965ec312dc1ef79/hf_xet-1.4.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:22bdc1f5fb8b15bf2831440b91d1c9bbceeb7e10c81a12e8d75889996a5c9da8", size = 4424368, upload-time = "2026-03-31T22:40:06.347Z" }, + { url = "https://files.pythonhosted.org/packages/e4/76/ab597bae87e1f06d18d3ecb8ed7f0d3c9a37037fc32ce76233d369273c64/hf_xet-1.4.3-cp314-cp314t-win_amd64.whl", hash = "sha256:0392c79b7cf48418cd61478c1a925246cf10639f4cd9d94368d8ca1e8df9ea07", size = 3672280, upload-time = "2026-03-31T22:40:16.401Z" }, + { url = "https://files.pythonhosted.org/packages/62/05/2e462d34e23a09a74d73785dbed71cc5dbad82a72eee2ad60a72a554155d/hf_xet-1.4.3-cp314-cp314t-win_arm64.whl", hash = "sha256:681c92a07796325778a79d76c67011764ecc9042a8c3579332b61b63ae512075", size = 3528945, upload-time = "2026-03-31T22:40:14.995Z" }, + { url = "https://files.pythonhosted.org/packages/ac/9f/9c23e4a447b8f83120798f9279d0297a4d1360bdbf59ef49ebec78fe2545/hf_xet-1.4.3-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:d0da85329eaf196e03e90b84c2d0aca53bd4573d097a75f99609e80775f98025", size = 3805048, upload-time = "2026-03-31T22:39:53.105Z" }, + { url = "https://files.pythonhosted.org/packages/0b/f8/7aacb8e5f4a7899d39c787b5984e912e6c18b11be136ef13947d7a66d265/hf_xet-1.4.3-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:e23717ce4186b265f69afa66e6f0069fe7efbf331546f5c313d00e123dc84583", size = 3562178, upload-time = "2026-03-31T22:39:51.295Z" }, + { url = "https://files.pythonhosted.org/packages/df/9a/a24b26dc8a65f0ecc0fe5be981a19e61e7ca963b85e062c083f3a9100529/hf_xet-1.4.3-cp37-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc360b70c815bf340ed56c7b8c63aacf11762a4b099b2fe2c9bd6d6068668c08", size = 4212320, upload-time = "2026-03-31T22:39:42.922Z" }, + { url = "https://files.pythonhosted.org/packages/53/60/46d493db155d2ee2801b71fb1b0fd67696359047fdd8caee2c914cc50c79/hf_xet-1.4.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:39f2d2e9654cd9b4319885733993807aab6de9dfbd34c42f0b78338d6617421f", size = 3991546, upload-time = "2026-03-31T22:39:41.335Z" }, + { url = "https://files.pythonhosted.org/packages/bc/f5/067363e1c96c6b17256910830d1b54099d06287e10f4ec6ec4e7e08371fc/hf_xet-1.4.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:49ad8a8cead2b56051aa84d7fce3e1335efe68df3cf6c058f22a65513885baac", size = 4193200, upload-time = "2026-03-31T22:40:01.936Z" }, + { url = "https://files.pythonhosted.org/packages/42/4b/53951592882d9c23080c7644542fda34a3813104e9e11fa1a7d82d419cb8/hf_xet-1.4.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7716d62015477a70ea272d2d68cd7cad140f61c52ee452e133e139abfe2c17ba", size = 4429392, upload-time = "2026-03-31T22:40:03.492Z" }, + { url = "https://files.pythonhosted.org/packages/8a/21/75a6c175b4e79662ad8e62f46a40ce341d8d6b206b06b4320d07d55b188c/hf_xet-1.4.3-cp37-abi3-win_amd64.whl", hash = "sha256:6b591fcad34e272a5b02607485e4f2a1334aebf1bc6d16ce8eb1eb8978ac2021", size = 3677359, upload-time = "2026-03-31T22:40:13.619Z" }, + { url = "https://files.pythonhosted.org/packages/8a/7c/44314ecd0e89f8b2b51c9d9e5e7a60a9c1c82024ac471d415860557d3cd8/hf_xet-1.4.3-cp37-abi3-win_arm64.whl", hash = "sha256:7c2c7e20bcfcc946dc67187c203463f5e932e395845d098cc2a93f5b67ca0b47", size = 3533664, upload-time = "2026-03-31T22:40:12.152Z" }, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, +] + +[[package]] +name = "httpx" +version = "0.28.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "certifi" }, + { name = "httpcore" }, + { name = "idna" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, +] + +[[package]] +name = "huggingface-hub" +version = "1.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "filelock" }, + { name = "fsspec" }, + { name = "hf-xet", marker = "platform_machine == 'AMD64' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64'" }, + { name = "httpx" }, + { name = "packaging" }, + { name = "pyyaml" }, + { name = "tqdm" }, + { name = "typer" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dc/89/e7aa12d8a6b9259bed10671abb25ae6fa437c0f88a86ecbf59617bae7759/huggingface_hub-1.11.0.tar.gz", hash = "sha256:15fb3713c7f9cdff7b808a94fd91664f661ab142796bb48c9cd9493e8d166278", size = 761749, upload-time = "2026-04-16T13:07:39.73Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/37/02/4f3f8997d1ea7fe0146b343e5e14bd065fa87af790d07e5576d31b31cc18/huggingface_hub-1.11.0-py3-none-any.whl", hash = "sha256:42a6de0afbfeb5e022222d36398f029679db4eb4778801aafda32257ae9131ab", size = 645499, upload-time = "2026-04-16T13:07:37.716Z" }, +] + +[[package]] +name = "idna" +version = "3.15" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/77/7b3966d0b9d1d31a36ddf1746926a11dface89a83409bf1483f0237aa758/idna-3.15.tar.gz", hash = "sha256:ca962446ea538f7092a95e057da437618e886f4d349216d2b1e294abfdb65fdc", size = 199245, upload-time = "2026-05-12T22:45:57.011Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/23/408243171aa9aaba178d3e2559159c24c1171a641aa83b67bdd3394ead8e/idna-3.15-py3-none-any.whl", hash = "sha256:048adeaf8c2d788c40fee287673ccaa74c24ffd8dcf09ffa555a2fbb59f10ac8", size = 72340, upload-time = "2026-05-12T22:45:55.733Z" }, +] + +[[package]] +name = "imageio" +version = "2.37.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "pillow" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/84/93bcd1300216ea50811cee96873b84a1bebf8d0489ffaf7f2a3756bab866/imageio-2.37.3.tar.gz", hash = "sha256:bbb37efbfc4c400fcd534b367b91fcd66d5da639aaa138034431a1c5e0a41451", size = 389673, upload-time = "2026-03-09T11:31:12.573Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/fa/391e437a34e55095173dca5f24070d89cbc233ff85bf1c29c93248c6588d/imageio-2.37.3-py3-none-any.whl", hash = "sha256:46f5bb8522cd421c0f5ae104d8268f569d856b29eb1a13b92829d1970f32c9f0", size = 317646, upload-time = "2026-03-09T11:31:10.771Z" }, +] + +[[package]] +name = "iniconfig" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20503, upload-time = "2025-10-18T21:55:43.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484, upload-time = "2025-10-18T21:55:41.639Z" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, +] + +[[package]] +name = "jsonlines" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/35/87/bcda8e46c88d0e34cad2f09ee2d0c7f5957bccdb9791b0b934ec84d84be4/jsonlines-4.0.0.tar.gz", hash = "sha256:0c6d2c09117550c089995247f605ae4cf77dd1533041d366351f6f298822ea74", size = 11359, upload-time = "2023-09-01T12:34:44.187Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/62/d9ba6323b9202dd2fe166beab8a86d29465c41a0288cbe229fac60c1ab8d/jsonlines-4.0.0-py3-none-any.whl", hash = "sha256:185b334ff2ca5a91362993f42e83588a360cf95ce4b71a73548502bda52a7c55", size = 8701, upload-time = "2023-09-01T12:34:42.563Z" }, +] + +[[package]] +name = "jsonref" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/0d/c1f3277e90ccdb50d33ed5ba1ec5b3f0a242ed8c1b1a85d3afeb68464dca/jsonref-1.1.0.tar.gz", hash = "sha256:32fe8e1d85af0fdefbebce950af85590b22b60f9e95443176adbde4e1ecea552", size = 8814, upload-time = "2023-01-16T16:10:04.455Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/ec/e1db9922bceb168197a558a2b8c03a7963f1afe93517ddd3cf99f202f996/jsonref-1.1.0-py3-none-any.whl", hash = "sha256:590dc7773df6c21cbf948b5dac07a72a251db28b0238ceecce0a2abfa8ec30a9", size = 9425, upload-time = "2023-01-16T16:10:02.255Z" }, +] + +[[package]] +name = "jsonschema" +version = "4.26.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b3/fc/e067678238fa451312d4c62bf6e6cf5ec56375422aee02f9cb5f909b3047/jsonschema-4.26.0.tar.gz", hash = "sha256:0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326", size = 366583, upload-time = "2026-01-07T13:41:07.246Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/90/f63fb5873511e014207a475e2bb4e8b2e570d655b00ac19a9a0ca0a385ee/jsonschema-4.26.0-py3-none-any.whl", hash = "sha256:d489f15263b8d200f8387e64b4c3a75f06629559fb73deb8fdfb525f2dab50ce", size = 90630, upload-time = "2026-01-07T13:41:05.306Z" }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2025.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855, upload-time = "2025-09-08T01:34:59.186Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" }, +] + +[[package]] +name = "latex2mathml" +version = "3.81.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3b/62/35bb816c5c19d4d0cde5bdfb82ebb996306243d5f94e03f201658c629960/latex2mathml-3.81.0.tar.gz", hash = "sha256:4b959cdc3cac8686bc0e3e5aece8127dfb1b81ca1241bed8e00ef31b82bb4022", size = 77584, upload-time = "2026-04-15T00:55:27.977Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/b1/c488b530994c4f68e46efa99a4d6ca6741aaf158e35779fe6c4d8a9a427d/latex2mathml-3.81.0-py3-none-any.whl", hash = "sha256:d317710393fe20579aea39cfe8928fa2ad9b8780896e585326c75e89c1d1d1a4", size = 79185, upload-time = "2026-04-15T00:55:29.301Z" }, +] + +[[package]] +name = "lazy-loader" +version = "0.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/49/ac/21a1f8aa3777f5658576777ea76bfb124b702c520bbe90edf4ae9915eafa/lazy_loader-0.5.tar.gz", hash = "sha256:717f9179a0dbed357012ddad50a5ad3d5e4d9a0b8712680d4e687f5e6e6ed9b3", size = 15294, upload-time = "2026-03-06T15:45:09.054Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/a1/8d812e53a5da1687abb10445275d41a8b13adb781bbf7196ddbcf8d88505/lazy_loader-0.5-py3-none-any.whl", hash = "sha256:ab0ea149e9c554d4ffeeb21105ac60bed7f3b4fd69b1d2360a4add51b170b005", size = 8044, upload-time = "2026-03-06T15:45:07.668Z" }, +] + +[[package]] +name = "lxml" +version = "6.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/28/30/9abc9e34c657c33834eaf6cd02124c61bdf5944d802aa48e69be8da3585d/lxml-6.1.0.tar.gz", hash = "sha256:bfd57d8008c4965709a919c3e9a98f76c2c7cb319086b3d26858250620023b13", size = 4197006, upload-time = "2026-04-18T04:32:51.613Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/6e/ee8fc0e01202eb3dd2b9e1ea4f0910d72425d35c66187c63931d7a3ea73f/lxml-6.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:41dcc4c7b10484257cbd6c37b83ddb26df2b0e5aff5ac00d095689015af868ec", size = 8540733, upload-time = "2026-04-18T04:27:33.185Z" }, + { url = "https://files.pythonhosted.org/packages/54/e8/325fe9b942824c773dffe1baf0c35b046a763851fdff4393af4450bceeb7/lxml-6.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a31286dbb5e74c8e9a5344465b77ab4c5bd511a253b355b5ca2fae7e579fafec", size = 4602805, upload-time = "2026-04-18T04:27:36.097Z" }, + { url = "https://files.pythonhosted.org/packages/2d/81/221aa3ea4a40370bb0358fa454cbe7e5a837e522f7630c24dfef3f9a73b0/lxml-6.1.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1bc4cc83fb7f66ffb16f74d6dd0162e144333fc36ebcce32246f80c8735b2551", size = 5002652, upload-time = "2026-04-18T04:27:30.603Z" }, + { url = "https://files.pythonhosted.org/packages/c6/e1/fdbfb9019542f1875c093576df7f37adc2983c8ba7ecf17e5f14490bc107/lxml-6.1.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:20cf4d0651987c906a2f5cba4e3a8d6ba4bfdf973cfe2a96c0d6053888ea2ecd", size = 5155332, upload-time = "2026-04-18T04:27:33.507Z" }, + { url = "https://files.pythonhosted.org/packages/56/b1/4087c782fff397cd03abf9c551069be59bb04a7e548c50fb7b9c4cdaca28/lxml-6.1.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ffb34ea45a82dd637c2c97ae1bbb920850c1e59bcae79ce1c15af531d83e7215", size = 5057226, upload-time = "2026-04-18T04:27:37.567Z" }, + { url = "https://files.pythonhosted.org/packages/5d/66/516c79dec8417f3a972327330254c0b5fac93d5c3ecfd8a5b43650a5a4d9/lxml-6.1.0-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a1d9b99e5b2597e4f5aed2484fef835256fa1b68a19e4265c97628ef4bf8bcf4", size = 5287588, upload-time = "2026-04-18T04:27:41.4Z" }, + { url = "https://files.pythonhosted.org/packages/94/1d/e578f4cbeb42b9df9f29b0d44a45a7cdfa3a5ae300dd59ec68e3602d29bb/lxml-6.1.0-cp310-cp310-manylinux_2_28_i686.whl", hash = "sha256:d43aa26dcda363f21e79afa0668f5029ed7394b3bb8c92a6927a3d34e8b610ea", size = 5412438, upload-time = "2026-04-18T04:27:45.589Z" }, + { url = "https://files.pythonhosted.org/packages/47/5b/2aa68307d6d15959e84d4882f9c04f2da63127eac463e1594166f681ef77/lxml-6.1.0-cp310-cp310-manylinux_2_31_armv7l.whl", hash = "sha256:6262b87f9e5c1e5fe501d6c153247289af42eb44ad7660b9b3de17baaf92d6f6", size = 4770997, upload-time = "2026-04-18T04:27:49.853Z" }, + { url = "https://files.pythonhosted.org/packages/ae/c9/3e51fc1228310a836b4eb32595ae00154ab12197fca944676a3ab3b163ea/lxml-6.1.0-cp310-cp310-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d1392c569c032f78a11a25d1de1c43fff13294c793b39e19d84fade3045cbbc3", size = 5359678, upload-time = "2026-04-18T04:31:56.184Z" }, + { url = "https://files.pythonhosted.org/packages/b5/91/ab8bc834f977fbbd310e697b120787c153db026f9151e02a88d2645d4e5b/lxml-6.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:045e387d1f4f42a418380930fa3f45c73c9b392faf67e495e58902e68e8f44a7", size = 5107890, upload-time = "2026-04-18T04:32:00.387Z" }, + { url = "https://files.pythonhosted.org/packages/bb/10/8a143cfa3ac99cb5b0523ff6d0429a9c9dddf25ffeae09caa3866c7964d9/lxml-6.1.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:9f93d5b8b07f73e8c77e3c6556a3db269918390c804b5e5fcdd4858232cc8f16", size = 4803977, upload-time = "2026-04-18T04:32:05.099Z" }, + { url = "https://files.pythonhosted.org/packages/45/fd/ee02faf52fa39c2fe32f824628958b9aa86dff21343dc3161f0e3c6ccd15/lxml-6.1.0-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:de550d129f18d8ab819651ffe4f38b1b713c7e116707de3c0c6400d0ef34fbc1", size = 5350277, upload-time = "2026-04-18T04:32:09.176Z" }, + { url = "https://files.pythonhosted.org/packages/85/8c/b3481364b8554b5d36d540189a87fc71e94b0b01c24f8f152bd662dd2e45/lxml-6.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c08da09dc003c9e8c70e06b53a11db6fb3b250c21c4236b03c7d7b443c318e7a", size = 5309717, upload-time = "2026-04-18T04:32:13.303Z" }, + { url = "https://files.pythonhosted.org/packages/74/e8/a6b21927077a9127afa17473b6576b322616f34ac50ee4f577e763b75ec0/lxml-6.1.0-cp310-cp310-win32.whl", hash = "sha256:37448bf9c7d7adfc5254763901e2bbd6bb876228dfc1fc7f66e58c06368a7544", size = 3598491, upload-time = "2026-04-18T04:27:24.288Z" }, + { url = "https://files.pythonhosted.org/packages/ea/82/14dea800d041274d96c07d49ff9191f011d1427450850de19bf541e2cc12/lxml-6.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:2593a0a6621545b9095b71ad74ed4226eba438a7d9fc3712a99bdb15508cf93a", size = 4020906, upload-time = "2026-04-18T04:27:27.53Z" }, + { url = "https://files.pythonhosted.org/packages/f2/ba/d3539aaf4d9d21456b9a7b902816623227d05d63e7c5aafd8834c4b9bed6/lxml-6.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:e80807d72f96b96ad5588cb85c75616e4f2795a7737d4630784c51497beb7776", size = 3667787, upload-time = "2026-04-18T04:27:29.407Z" }, + { url = "https://files.pythonhosted.org/packages/5e/5d/3bccad330292946f97962df9d5f2d3ae129cce6e212732a781e856b91e07/lxml-6.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:cec05be8c876f92a5aa07b01d60bbb4d11cfbdd654cad0561c0d7b5c043a61b9", size = 8526232, upload-time = "2026-04-18T04:27:40.389Z" }, + { url = "https://files.pythonhosted.org/packages/a7/51/adc8826570a112f83bb4ddb3a2ab510bbc2ccd62c1b9fe1f34fae2d90b57/lxml-6.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9c03e048b6ce8e77b09c734e931584894ecd58d08296804ca2d0b184c933ce50", size = 4595448, upload-time = "2026-04-18T04:27:44.208Z" }, + { url = "https://files.pythonhosted.org/packages/54/84/5a9ec07cbe1d2334a6465f863b949a520d2699a755738986dcd3b6b89e3f/lxml-6.1.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:942454ff253da14218f972b23dc72fa4edf6c943f37edd19cd697618b626fac5", size = 4923771, upload-time = "2026-04-18T04:32:17.402Z" }, + { url = "https://files.pythonhosted.org/packages/a7/23/851cfa33b6b38adb628e45ad51fb27105fa34b2b3ba9d1d4aa7a9428dfe0/lxml-6.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d036ee7b99d5148072ac7c9b847193decdfeac633db350363f7bce4fff108f0e", size = 5068101, upload-time = "2026-04-18T04:32:21.437Z" }, + { url = "https://files.pythonhosted.org/packages/b0/38/41bf99c2023c6b79916ba057d83e9db21d642f473cac210201222882d38b/lxml-6.1.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3ae5d8d5427f3cc317e7950f2da7ad276df0cfa37b8de2f5658959e618ea8512", size = 5002573, upload-time = "2026-04-18T04:32:25.373Z" }, + { url = "https://files.pythonhosted.org/packages/c2/20/053aa10bdc39747e1e923ce2d45413075e84f70a136045bb09e5eaca41d3/lxml-6.1.0-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:363e47283bde87051b821826e71dde47f107e08614e1aa312ba0c5711e77738c", size = 5202816, upload-time = "2026-04-18T04:32:29.393Z" }, + { url = "https://files.pythonhosted.org/packages/9a/da/bc710fad8bf04b93baee752c192eaa2210cd3a84f969d0be7830fea55802/lxml-6.1.0-cp311-cp311-manylinux_2_28_i686.whl", hash = "sha256:f504d861d9f2a8f94020130adac88d66de93841707a23a86244263d1e54682f5", size = 5329999, upload-time = "2026-04-18T04:32:34.019Z" }, + { url = "https://files.pythonhosted.org/packages/b3/cb/bf035dedbdf7fab49411aa52e4236f3445e98d38647d85419e6c0d2806b9/lxml-6.1.0-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:23a5dc68e08ed13331d61815c08f260f46b4a60fdd1640bbeb82cf89a9d90289", size = 4659643, upload-time = "2026-04-18T04:32:37.932Z" }, + { url = "https://files.pythonhosted.org/packages/5c/4f/22be31f33727a5e4c7b01b0a874503026e50329b259d3587e0b923cf964b/lxml-6.1.0-cp311-cp311-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f15401d8d3dbf239e23c818afc10c7207f7b95f9a307e092122b6f86dd43209a", size = 5265963, upload-time = "2026-04-18T04:32:41.881Z" }, + { url = "https://files.pythonhosted.org/packages/c8/2b/d44d0e5c79226017f4ab8c87a802ebe4f89f97e6585a8e4166dffcdd7b6e/lxml-6.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:fcf3da95e93349e0647d48d4b36a12783105bcc74cb0c416952f9988410846a3", size = 5045444, upload-time = "2026-04-18T04:32:44.512Z" }, + { url = "https://files.pythonhosted.org/packages/d3/c3/3f034fec1594c331a6dbf9491238fdcc9d66f68cc529e109ec75b97197e1/lxml-6.1.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:0d082495c5fcf426e425a6e28daaba1fcb6d8f854a4ff01effb1f1f381203eb9", size = 4712703, upload-time = "2026-04-18T04:32:47.16Z" }, + { url = "https://files.pythonhosted.org/packages/12/16/0b83fccc158218aca75a7aa33e97441df737950734246b9fffa39301603d/lxml-6.1.0-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:e3c4f84b24a1fcba435157d111c4b755099c6ff00a3daee1ad281817de75ed11", size = 5252745, upload-time = "2026-04-18T04:32:50.427Z" }, + { url = "https://files.pythonhosted.org/packages/dd/ee/12e6c1b39a77666c02eaa77f94a870aaf63c4ac3a497b2d52319448b01c6/lxml-6.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:976a6b39b1b13e8c354ad8d3f261f3a4ac6609518af91bdb5094760a08f132c4", size = 5226822, upload-time = "2026-04-18T04:32:53.437Z" }, + { url = "https://files.pythonhosted.org/packages/34/20/c7852904858b4723af01d2fc14b5d38ff57cb92f01934a127ebd9a9e51aa/lxml-6.1.0-cp311-cp311-win32.whl", hash = "sha256:857efde87d365706590847b916baff69c0bc9252dc5af030e378c9800c0b10e3", size = 3594026, upload-time = "2026-04-18T04:27:31.903Z" }, + { url = "https://files.pythonhosted.org/packages/02/05/d60c732b56da5085175c07c74b2df4e6d181b0c9a61e1691474f06ef4b39/lxml-6.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:183bfb45a493081943be7ea2b5adfc2b611e1cf377cefa8b8a8be404f45ef9a7", size = 4025114, upload-time = "2026-04-18T04:27:34.077Z" }, + { url = "https://files.pythonhosted.org/packages/c2/df/c84dcc175fd690823436d15b41cb920cd5ba5e14cd8bfb00949d5903b320/lxml-6.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:19f4164243fc206d12ed3d866e80e74f5bc3627966520da1a5f97e42c32a3f39", size = 3667742, upload-time = "2026-04-18T04:27:38.45Z" }, + { url = "https://files.pythonhosted.org/packages/d2/d4/9326838b59dc36dfae42eec9656b97520f9997eee1de47b8316aaeed169c/lxml-6.1.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d2f17a16cd8751e8eb233a7e41aecdf8e511712e00088bf9be455f604cd0d28d", size = 8570663, upload-time = "2026-04-18T04:27:48.253Z" }, + { url = "https://files.pythonhosted.org/packages/d8/a4/053745ce1f8303ccbb788b86c0db3a91b973675cefc42566a188637b7c40/lxml-6.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f0cea5b1d3e6e77d71bd2b9972eb2446221a69dc52bb0b9c3c6f6e5700592d93", size = 4624024, upload-time = "2026-04-18T04:27:52.594Z" }, + { url = "https://files.pythonhosted.org/packages/90/97/a517944b20f8fd0932ad2109482bee4e29fe721416387a363306667941f6/lxml-6.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fc46da94826188ed45cb53bd8e3fc076ae22675aea2087843d4735627f867c6d", size = 4930895, upload-time = "2026-04-18T04:32:56.29Z" }, + { url = "https://files.pythonhosted.org/packages/94/7c/e08a970727d556caa040a44773c7b7e3ad0f0d73dedc863543e9a8b931f2/lxml-6.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9147d8e386ec3b82c3b15d88927f734f565b0aaadef7def562b853adca45784a", size = 5093820, upload-time = "2026-04-18T04:32:58.94Z" }, + { url = "https://files.pythonhosted.org/packages/88/ee/2a5c2aa2c32016a226ca25d3e1056a8102ea6e1fe308bf50213586635400/lxml-6.1.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5715e0e28736a070f3f34a7ccc09e2fdcba0e3060abbcf61a1a5718ff6d6b105", size = 5005790, upload-time = "2026-04-18T04:33:01.272Z" }, + { url = "https://files.pythonhosted.org/packages/e3/38/a0db9be8f38ad6043ab9429487c128dd1d30f07956ef43040402f8da49e8/lxml-6.1.0-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4937460dc5df0cdd2f06a86c285c28afda06aefa3af949f9477d3e8df430c485", size = 5630827, upload-time = "2026-04-18T04:33:04.036Z" }, + { url = "https://files.pythonhosted.org/packages/31/ba/3c13d3fc24b7cacf675f808a3a1baabf43a30d0cd24c98f94548e9aa58eb/lxml-6.1.0-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bc783ee3147e60a25aa0445ea82b3e8aabb83b240f2b95d32cb75587ff781814", size = 5240445, upload-time = "2026-04-18T04:33:06.87Z" }, + { url = "https://files.pythonhosted.org/packages/55/ba/eeef4ccba09b2212fe239f46c1692a98db1878e0872ae320756488878a94/lxml-6.1.0-cp312-cp312-manylinux_2_28_i686.whl", hash = "sha256:40d9189f80075f2e1f88db21ef815a2b17b28adf8e50aaf5c789bfe737027f32", size = 5350121, upload-time = "2026-04-18T04:33:09.365Z" }, + { url = "https://files.pythonhosted.org/packages/7e/01/1da87c7b587c38d0cbe77a01aae3b9c1c49ed47d76918ef3db8fc151b1ca/lxml-6.1.0-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:05b9b8787e35bec69e68daf4952b2e6dfcfb0db7ecf1a06f8cdfbbac4eb71aad", size = 4694949, upload-time = "2026-04-18T04:33:11.628Z" }, + { url = "https://files.pythonhosted.org/packages/a1/88/7db0fe66d5aaf128443ee1623dec3db1576f3e4c17751ec0ef5866468590/lxml-6.1.0-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0f0f08beb0182e3e9a86fae124b3c47a7b41b7b69b225e1377db983802404e54", size = 5243901, upload-time = "2026-04-18T04:33:13.95Z" }, + { url = "https://files.pythonhosted.org/packages/00/a8/1346726af7d1f6fca1f11223ba34001462b0a3660416986d37641708d57c/lxml-6.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:73becf6d8c81d4c76b1014dbd3584cb26d904492dcf73ca85dc8bff08dcd6d2d", size = 5048054, upload-time = "2026-04-18T04:33:16.965Z" }, + { url = "https://files.pythonhosted.org/packages/2e/b7/85057012f035d1a0c87e02f8c723ca3c3e6e0728bcf4cb62080b21b1c1e3/lxml-6.1.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:1ae225f66e5938f4fa29d37e009a3bb3b13032ac57eb4eb42afa44f6e4054e69", size = 4777324, upload-time = "2026-04-18T04:33:19.832Z" }, + { url = "https://files.pythonhosted.org/packages/75/6c/ad2f94a91073ef570f33718040e8e160d5fb93331cf1ab3ca1323f939e2d/lxml-6.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:690022c7fae793b0489aa68a658822cea83e0d5933781811cabbf5ea3bcfe73d", size = 5645702, upload-time = "2026-04-18T04:33:22.436Z" }, + { url = "https://files.pythonhosted.org/packages/3b/89/0bb6c0bd549c19004c60eea9dc554dd78fd647b72314ef25d460e0d208c6/lxml-6.1.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:63aeafc26aac0be8aff14af7871249e87ea1319be92090bfd632ec68e03b16a5", size = 5232901, upload-time = "2026-04-18T04:33:26.21Z" }, + { url = "https://files.pythonhosted.org/packages/a1/d9/d609a11fb567da9399f525193e2b49847b5a409cdebe737f06a8b7126bdc/lxml-6.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:264c605ab9c0e4aa1a679636f4582c4d3313700009fac3ec9c3412ed0d8f3e1d", size = 5261333, upload-time = "2026-04-18T04:33:28.984Z" }, + { url = "https://files.pythonhosted.org/packages/a6/3a/ac3f99ec8ac93089e7dd556f279e0d14c24de0a74a507e143a2e4b496e7c/lxml-6.1.0-cp312-cp312-win32.whl", hash = "sha256:56971379bc5ee8037c5a0f09fa88f66cdb7d37c3e38af3e45cf539f41131ac1f", size = 3596289, upload-time = "2026-04-18T04:27:42.819Z" }, + { url = "https://files.pythonhosted.org/packages/f2/a7/0a915557538593cb1bbeedcd40e13c7a261822c26fecbbdb71dad0c2f540/lxml-6.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:bba078de0031c219e5dd06cf3e6bf8fb8e6e64a77819b358f53bb132e3e03366", size = 3997059, upload-time = "2026-04-18T04:27:46.764Z" }, + { url = "https://files.pythonhosted.org/packages/92/96/a5dc078cf0126fbfbc35611d77ecd5da80054b5893e28fb213a5613b9e1d/lxml-6.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:c3592631e652afa34999a088f98ba7dfc7d6aff0d535c410bea77a71743f3819", size = 3659552, upload-time = "2026-04-18T04:27:51.133Z" }, + { url = "https://files.pythonhosted.org/packages/08/03/69347590f1cf4a6d5a4944bb6099e6d37f334784f16062234e1f892fdb1d/lxml-6.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a0092f2b107b69601adf562a57c956fbb596e05e3e6651cabd3054113b007e45", size = 8559689, upload-time = "2026-04-18T04:31:57.785Z" }, + { url = "https://files.pythonhosted.org/packages/3f/58/25e00bb40b185c974cfe156c110474d9a8a8390d5f7c92a4e328189bb60e/lxml-6.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:fc7140d7a7386e6b545d41b7358f4d02b656d4053f5fa6859f92f4b9c2572c4d", size = 4617892, upload-time = "2026-04-18T04:32:01.78Z" }, + { url = "https://files.pythonhosted.org/packages/f5/54/92ad98a94ac318dc4f97aaac22ff8d1b94212b2ae8af5b6e9b354bf825f7/lxml-6.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:419c58fc92cc3a2c3fa5f78c63dbf5da70c1fa9c1b25f25727ecee89a96c7de2", size = 4923489, upload-time = "2026-04-18T04:33:31.401Z" }, + { url = "https://files.pythonhosted.org/packages/15/3b/a20aecfab42bdf4f9b390590d345857ad3ffd7c51988d1c89c53a0c73faf/lxml-6.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:37fabd1452852636cf38ecdcc9dd5ca4bba7a35d6c53fa09725deeb894a87491", size = 5082162, upload-time = "2026-04-18T04:33:34.262Z" }, + { url = "https://files.pythonhosted.org/packages/45/26/2cdb3d281ac1bd175603e290cbe4bad6eff127c0f8de90bafd6f8548f0fd/lxml-6.1.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a2853c8b2170cc6cd54a6b4d50d2c1a8a7aeca201f23804b4898525c7a152cfc", size = 4993247, upload-time = "2026-04-18T04:33:36.674Z" }, + { url = "https://files.pythonhosted.org/packages/f6/05/d735aef963740022a08185c84821f689fc903acb3d50326e6b1e9886cc22/lxml-6.1.0-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8e369cbd690e788c8d15e56222d91a09c6a417f49cbc543040cba0fe2e25a79e", size = 5613042, upload-time = "2026-04-18T04:33:39.205Z" }, + { url = "https://files.pythonhosted.org/packages/ee/b8/ead7c10efff731738c72e59ed6eb5791854879fbed7ae98781a12006263a/lxml-6.1.0-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e69aa6805905807186eb00e66c6d97a935c928275182eb02ee40ba00da9623b2", size = 5228304, upload-time = "2026-04-18T04:33:41.647Z" }, + { url = "https://files.pythonhosted.org/packages/6b/10/e9842d2ec322ea65f0a7270aa0315a53abed06058b88ef1b027f620e7a5f/lxml-6.1.0-cp313-cp313-manylinux_2_28_i686.whl", hash = "sha256:4bd1bdb8a9e0e2dd229de19b5f8aebac80e916921b4b2c6ef8a52bc131d0c1f9", size = 5341578, upload-time = "2026-04-18T04:33:44.596Z" }, + { url = "https://files.pythonhosted.org/packages/89/54/40d9403d7c2775fa7301d3ddd3464689bfe9ba71acc17dfff777071b4fdc/lxml-6.1.0-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:cbd7b79cdcb4986ad78a2662625882747f09db5e4cd7b2ae178a88c9c51b3dfe", size = 4700209, upload-time = "2026-04-18T04:33:47.552Z" }, + { url = "https://files.pythonhosted.org/packages/85/b2/bbdcc2cf45dfc7dfffef4fd97e5c47b15919b6a365247d95d6f684ef5e82/lxml-6.1.0-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:43e4d297f11080ec9d64a4b1ad7ac02b4484c9f0e2179d9c4ef78e886e747b88", size = 5232365, upload-time = "2026-04-18T04:33:50.249Z" }, + { url = "https://files.pythonhosted.org/packages/48/5a/b06875665e53aaba7127611a7bed3b7b9658e20b22bc2dd217a0b7ab0091/lxml-6.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cc16682cc987a3da00aa56a3aa3075b08edb10d9b1e476938cfdbee8f3b67181", size = 5043654, upload-time = "2026-04-18T04:33:52.71Z" }, + { url = "https://files.pythonhosted.org/packages/e9/9c/e71a069d09641c1a7abeb30e693f828c7c90a41cbe3d650b2d734d876f85/lxml-6.1.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:d6d8efe71429635f0559579092bb5e60560d7b9115ee38c4adbea35632e7fa24", size = 4769326, upload-time = "2026-04-18T04:33:55.244Z" }, + { url = "https://files.pythonhosted.org/packages/cc/06/7a9cd84b3d4ed79adf35f874750abb697dec0b4a81a836037b36e47c091a/lxml-6.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7e39ab3a28af7784e206d8606ec0e4bcad0190f63a492bca95e94e5a4aef7f6e", size = 5635879, upload-time = "2026-04-18T04:33:58.509Z" }, + { url = "https://files.pythonhosted.org/packages/cc/f0/9d57916befc1e54c451712c7ee48e9e74e80ae4d03bdce49914e0aee42cd/lxml-6.1.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:9eb667bf50856c4a58145f8ca2d5e5be160191e79eb9e30855a476191b3c3495", size = 5224048, upload-time = "2026-04-18T04:34:00.943Z" }, + { url = "https://files.pythonhosted.org/packages/99/75/90c4eefda0c08c92221fe0753db2d6699a4c628f76ff4465ec20dea84cc1/lxml-6.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7f4a77d6f7edf9230cee3e1f7f6764722a41604ee5681844f18db9a81ea0ec33", size = 5250241, upload-time = "2026-04-18T04:34:03.365Z" }, + { url = "https://files.pythonhosted.org/packages/5e/73/16596f7e4e38fa33084b9ccbccc22a15f82a290a055126f2c1541236d2ff/lxml-6.1.0-cp313-cp313-win32.whl", hash = "sha256:28902146ffbe5222df411c5d19e5352490122e14447e98cd118907ee3fd6ee62", size = 3596938, upload-time = "2026-04-18T04:31:56.206Z" }, + { url = "https://files.pythonhosted.org/packages/8e/63/981401c5680c1eb30893f00a19641ac80db5d1e7086c62cb4b13ed813038/lxml-6.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:4a1503c56e4e2b38dc76f2f2da7bae69670c0f1933e27cfa34b2fa5876410b16", size = 3995728, upload-time = "2026-04-18T04:31:58.763Z" }, + { url = "https://files.pythonhosted.org/packages/e7/e8/c358a38ac3e541d16a1b527e4e9cb78c0419b0506a070ace11777e5e8404/lxml-6.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:e0af85773850417d994d019741239b901b22c6680206f46a34766926e466141d", size = 3658372, upload-time = "2026-04-18T04:32:03.629Z" }, + { url = "https://files.pythonhosted.org/packages/eb/45/cee4cf203ef0bab5c52afc118da61d6b460c928f2893d40023cfa27e0b80/lxml-6.1.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:ab863fd37458fed6456525f297d21239d987800c46e67da5ef04fc6b3dd93ac8", size = 8576713, upload-time = "2026-04-18T04:32:06.831Z" }, + { url = "https://files.pythonhosted.org/packages/8a/a7/eda05babeb7e046839204eaf254cd4d7c9130ce2bbf0d9e90ea41af5654d/lxml-6.1.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:6fd8b1df8254ff4fd93fd31da1fc15770bde23ac045be9bb1f87425702f61cc9", size = 4623874, upload-time = "2026-04-18T04:32:10.755Z" }, + { url = "https://files.pythonhosted.org/packages/e7/e9/db5846de9b436b91890a62f29d80cd849ea17948a49bf532d5278ee69a9e/lxml-6.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:47024feaae386a92a146af0d2aeed65229bf6fff738e6a11dda6b0015fb8fd03", size = 4949535, upload-time = "2026-04-18T04:34:06.657Z" }, + { url = "https://files.pythonhosted.org/packages/5a/ba/0d3593373dcae1d68f40dc3c41a5a92f2544e68115eb2f62319a4c2a6500/lxml-6.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3f00972f84450204cd5d93a5395965e348956aaceaadec693a22ec743f8ae3eb", size = 5086881, upload-time = "2026-04-18T04:34:09.556Z" }, + { url = "https://files.pythonhosted.org/packages/43/76/759a7484539ad1af0d125a9afe9c3fb5f82a8779fd1f5f56319d9e4ea2fd/lxml-6.1.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97faa0860e13b05b15a51fb4986421ef7a30f0b3334061c416e0981e9450ca4c", size = 5031305, upload-time = "2026-04-18T04:34:12.336Z" }, + { url = "https://files.pythonhosted.org/packages/dc/b9/c1f0daf981a11e47636126901fd4ab82429e18c57aeb0fc3ad2940b42d8b/lxml-6.1.0-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:972a6451204798675407beaad97b868d0c733d9a74dafefc63120b81b8c2de28", size = 5647522, upload-time = "2026-04-18T04:34:14.89Z" }, + { url = "https://files.pythonhosted.org/packages/31/e6/1f533dcd205275363d9ba3511bcec52fa2df86abf8abe6a5f2c599f0dc31/lxml-6.1.0-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fe022f20bc4569ec66b63b3fb275a3d628d9d32da6326b2982584104db6d3086", size = 5239310, upload-time = "2026-04-18T04:34:17.652Z" }, + { url = "https://files.pythonhosted.org/packages/c3/8c/4175fb709c78a6e315ed814ed33be3defd8b8721067e70419a6cf6f971da/lxml-6.1.0-cp314-cp314-manylinux_2_28_i686.whl", hash = "sha256:75c4c7c619a744f972f4451bf5adf6d0fb00992a1ffc9fd78e13b0bc817cc99f", size = 5350799, upload-time = "2026-04-18T04:34:20.529Z" }, + { url = "https://files.pythonhosted.org/packages/fd/77/6ffdebc5994975f0dde4acb59761902bd9d9bb84422b9a0bd239a7da9ca8/lxml-6.1.0-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:3648f20d25102a22b6061c688beb3a805099ea4beb0a01ce62975d926944d292", size = 4697693, upload-time = "2026-04-18T04:34:23.541Z" }, + { url = "https://files.pythonhosted.org/packages/f8/f1/565f36bd5c73294602d48e04d23f81ff4c8736be6ba5e1d1ec670ac9be80/lxml-6.1.0-cp314-cp314-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:77b9f99b17cbf14026d1e618035077060fc7195dd940d025149f3e2e830fbfcb", size = 5250708, upload-time = "2026-04-18T04:34:26.001Z" }, + { url = "https://files.pythonhosted.org/packages/5a/11/a68ab9dd18c5c499404deb4005f4bc4e0e88e5b72cd755ad96efec81d18d/lxml-6.1.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:32662519149fd7a9db354175aa5e417d83485a8039b8aaa62f873ceee7ea4cad", size = 5084737, upload-time = "2026-04-18T04:34:28.32Z" }, + { url = "https://files.pythonhosted.org/packages/ab/78/e8f41e2c74f4af564e6a0348aea69fb6daaefa64bc071ef469823d22cc18/lxml-6.1.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:73d658216fc173cf2c939e90e07b941c5e12736b0bf6a99e7af95459cfe8eabb", size = 4737817, upload-time = "2026-04-18T04:34:30.784Z" }, + { url = "https://files.pythonhosted.org/packages/06/2d/aa4e117aa2ce2f3b35d9ff246be74a2f8e853baba5d2a92c64744474603a/lxml-6.1.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:ac4db068889f8772a4a698c5980ec302771bb545e10c4b095d4c8be26749616f", size = 5670753, upload-time = "2026-04-18T04:34:33.675Z" }, + { url = "https://files.pythonhosted.org/packages/08/f5/dd745d50c0409031dbfcc4881740542a01e54d6f0110bd420fa7782110b8/lxml-6.1.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:45e9dfbd1b661eb64ba0d4dbe762bd210c42d86dd1e5bd2bdf89d634231beb43", size = 5238071, upload-time = "2026-04-18T04:34:36.12Z" }, + { url = "https://files.pythonhosted.org/packages/3e/74/ad424f36d0340a904665867dab310a3f1f4c96ff4039698de83b77f44c1f/lxml-6.1.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:89e8d73d09ac696a5ba42ec69787913d53284f12092f651506779314f10ba585", size = 5264319, upload-time = "2026-04-18T04:34:39.035Z" }, + { url = "https://files.pythonhosted.org/packages/53/36/a15d8b3514ec889bfd6aa3609107fcb6c9189f8dc347f1c0b81eded8d87c/lxml-6.1.0-cp314-cp314-win32.whl", hash = "sha256:ebe33f4ec1b2de38ceb225a1749a2965855bffeef435ba93cd2d5d540783bf2f", size = 3657139, upload-time = "2026-04-18T04:32:20.006Z" }, + { url = "https://files.pythonhosted.org/packages/1a/a4/263ebb0710851a3c6c937180a9a86df1206fdfe53cc43005aa2237fd7736/lxml-6.1.0-cp314-cp314-win_amd64.whl", hash = "sha256:398443df51c538bd578529aa7e5f7afc6c292644174b47961f3bf87fe5741120", size = 4064195, upload-time = "2026-04-18T04:32:23.876Z" }, + { url = "https://files.pythonhosted.org/packages/80/68/2000f29d323b6c286de077ad20b429fc52272e44eae6d295467043e56012/lxml-6.1.0-cp314-cp314-win_arm64.whl", hash = "sha256:8c8984e1d8c4b3949e419158fda14d921ff703a9ed8a47236c6eb7a2b6cb4946", size = 3741870, upload-time = "2026-04-18T04:32:27.922Z" }, + { url = "https://files.pythonhosted.org/packages/30/e9/21383c7c8d43799f0da90224c0d7c921870d476ec9b3e01e1b2c0b8237c5/lxml-6.1.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:1081dd10bc6fa437db2500e13993abf7cc30716d0a2f40e65abb935f02ec559c", size = 8827548, upload-time = "2026-04-18T04:32:15.094Z" }, + { url = "https://files.pythonhosted.org/packages/a5/01/c6bc11cd587030dd4f719f65c5657960649fe3e19196c844c75bf32cd0d6/lxml-6.1.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:dabecc48db5f42ba348d1f5d5afdc54c6c4cc758e676926c7cd327045749517d", size = 4735866, upload-time = "2026-04-18T04:32:18.924Z" }, + { url = "https://files.pythonhosted.org/packages/f3/01/757132fff5f4acf25463b5298f1a46099f3a94480b806547b29ce5e385de/lxml-6.1.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e3dd5fe19c9e0ac818a9c7f132a5e43c1339ec1cbbfecb1a938bd3a47875b7c9", size = 4969476, upload-time = "2026-04-18T04:34:41.889Z" }, + { url = "https://files.pythonhosted.org/packages/fd/fb/1bc8b9d27ed64be7c8903db6c89e74dc8c2cd9ec630a7462e4654316dc5b/lxml-6.1.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9e7b0a4ca6dcc007a4cef00a761bba2dea959de4bd2df98f926b33c92ca5dfb9", size = 5103719, upload-time = "2026-04-18T04:34:44.797Z" }, + { url = "https://files.pythonhosted.org/packages/d5/e7/5bf82fa28133536a54601aae633b14988e89ed61d4c1eb6b899b023233aa/lxml-6.1.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d27bbe326c6b539c64b42638b18bc6003a8d88f76213a97ac9ed4f885efeab7", size = 5027890, upload-time = "2026-04-18T04:34:47.634Z" }, + { url = "https://files.pythonhosted.org/packages/2d/20/e048db5d4b4ea0366648aa595f26bb764b2670903fc585b87436d0a5032c/lxml-6.1.0-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c4e425db0c5445ef0ad56b0eec54f89b88b2d884656e536a90b2f52aecb4ca86", size = 5596008, upload-time = "2026-04-18T04:34:51.503Z" }, + { url = "https://files.pythonhosted.org/packages/9a/c2/d10807bc8da4824b39e5bd01b5d05c077b6fd01bd91584167edf6b269d22/lxml-6.1.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4b89b098105b8599dc57adac95d1813409ac476d3c948a498775d3d0c6124bfb", size = 5224451, upload-time = "2026-04-18T04:34:54.263Z" }, + { url = "https://files.pythonhosted.org/packages/3c/15/2ebea45bea427e7f0057e9ce7b2d62c5aba20c6b001cca89ed0aadb3ad41/lxml-6.1.0-cp314-cp314t-manylinux_2_28_i686.whl", hash = "sha256:c4a699432846df86cc3de502ee85f445ebad748a1c6021d445f3e514d2cd4b1c", size = 5312135, upload-time = "2026-04-18T04:34:56.818Z" }, + { url = "https://files.pythonhosted.org/packages/31/e2/87eeae151b0be2a308d49a7ec444ff3eb192b14251e62addb29d0bf3778f/lxml-6.1.0-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:30e7b2ed63b6c8e97cca8af048589a788ab5c9c905f36d9cf1c2bb549f450d2f", size = 4639126, upload-time = "2026-04-18T04:34:59.704Z" }, + { url = "https://files.pythonhosted.org/packages/a3/51/8a3f6a20902ad604dd746ec7b4000311b240d389dac5e9d95adefd349e0c/lxml-6.1.0-cp314-cp314t-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:022981127642fe19866d2907d76241bb07ed21749601f727d5d5dd1ce5d1b773", size = 5232579, upload-time = "2026-04-18T04:35:02.658Z" }, + { url = "https://files.pythonhosted.org/packages/6d/d2/650d619bdbe048d2c3f2c31edb00e35670a5e2d65b4fe3b61bce37b19121/lxml-6.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:23cad0cc86046d4222f7f418910e46b89971c5a45d3c8abfad0f64b7b05e4a9b", size = 5084206, upload-time = "2026-04-18T04:35:05.175Z" }, + { url = "https://files.pythonhosted.org/packages/dd/8a/672ca1a3cbeabd1f511ca275a916c0514b747f4b85bdaae103b8fa92f307/lxml-6.1.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:21c3302068f50d1e8728c67c87ba92aa87043abee517aa2576cca1855326b405", size = 4758906, upload-time = "2026-04-18T04:35:08.098Z" }, + { url = "https://files.pythonhosted.org/packages/be/f1/ef4b691da85c916cb2feb1eec7414f678162798ac85e042fa164419ac05c/lxml-6.1.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:be10838781cb3be19251e276910cd508fe127e27c3242e50521521a0f3781690", size = 5620553, upload-time = "2026-04-18T04:35:11.23Z" }, + { url = "https://files.pythonhosted.org/packages/59/17/94e81def74107809755ac2782fdad4404420f1c92ca83433d117a6d5acf0/lxml-6.1.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:2173a7bffe97667bbf0767f8a99e587740a8c56fdf3befac4b09cb29a80276fd", size = 5229458, upload-time = "2026-04-18T04:35:14.254Z" }, + { url = "https://files.pythonhosted.org/packages/21/55/c4be91b0f830a871fc1b0d730943d56013b683d4671d5198260e2eae722b/lxml-6.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c6854e9cf99c84beb004eecd7d3a3868ef1109bf2b1df92d7bc11e96a36c2180", size = 5247861, upload-time = "2026-04-18T04:35:17.006Z" }, + { url = "https://files.pythonhosted.org/packages/c2/ca/77123e4d77df3cb1e968ade7b1f808f5d3a5c1c96b18a33895397de292c1/lxml-6.1.0-cp314-cp314t-win32.whl", hash = "sha256:00750d63ef0031a05331b9223463b1c7c02b9004cef2346a5b2877f0f9494dd2", size = 3897377, upload-time = "2026-04-18T04:32:07.656Z" }, + { url = "https://files.pythonhosted.org/packages/64/ce/3554833989d074267c063209bae8b09815e5656456a2d332b947806b05ff/lxml-6.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:80410c3a7e3c617af04de17caa9f9f20adaa817093293d69eae7d7d0522836f5", size = 4392701, upload-time = "2026-04-18T04:32:12.113Z" }, + { url = "https://files.pythonhosted.org/packages/2b/a0/9b916c68c0e57752c07f8f64b30138d9d4059dbeb27b90274dedbea128ff/lxml-6.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:26dd9f57ee3bd41e7d35b4c98a2ffd89ed11591649f421f0ec19f67d50ec67ac", size = 3817120, upload-time = "2026-04-18T04:32:15.803Z" }, + { url = "https://files.pythonhosted.org/packages/f2/88/55143966481409b1740a3ac669e611055f49efd68087a5ce41582325db3e/lxml-6.1.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:546b66c0dd1bb8d9fa89d7123e5fa19a8aff3a1f2141eb22df96112afb17b842", size = 3930134, upload-time = "2026-04-18T04:32:35.008Z" }, + { url = "https://files.pythonhosted.org/packages/b5/97/28b985c2983938d3cb696dd5501423afb90a8c3e869ef5d3c62569282c0f/lxml-6.1.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5cfa1a34df366d9dc0d5eaf420f4cf2bb1e1bebe1066d1c2fc28c179f8a4004c", size = 4210749, upload-time = "2026-04-18T04:36:03.626Z" }, + { url = "https://files.pythonhosted.org/packages/29/67/dfab2b7d58214921935ccea7ce9b3df9b7d46f305d12f0f532ac7cf6b804/lxml-6.1.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:db88156fcf544cdbf0d95588051515cfdfd4c876fc66444eb98bceb5d6db76de", size = 4318463, upload-time = "2026-04-18T04:36:06.309Z" }, + { url = "https://files.pythonhosted.org/packages/32/a2/4ac7eb32a4d997dd352c32c32399aae27b3f268d440e6f9cfa405b575d2f/lxml-6.1.0-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:07f98f5496f96bf724b1e3c933c107f0cbf2745db18c03d2e13a291c3afd2635", size = 4251124, upload-time = "2026-04-18T04:36:09.056Z" }, + { url = "https://files.pythonhosted.org/packages/33/ef/d6abd850bb4822f9b720cfe36b547a558e694881010ff7d012191e8769c6/lxml-6.1.0-pp311-pypy311_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4642e04449a1e164b5ff71ffd901ddb772dfabf5c9adf1b7be5dffe1212bc037", size = 4401758, upload-time = "2026-04-18T04:36:11.803Z" }, + { url = "https://files.pythonhosted.org/packages/40/44/3ee09a5b60cb44c4f2fbc1c9015cfd6ff5afc08f991cab295d3024dcbf2d/lxml-6.1.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:7da13bb6fbadfafb474e0226a30570a3445cfd47c86296f2446dafbd77079ace", size = 3508860, upload-time = "2026-04-18T04:32:48.619Z" }, +] + +[[package]] +name = "markdown-it-py" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mdurl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3", size = 73070, upload-time = "2025-08-11T12:57:52.854Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321, upload-time = "2025-08-11T12:57:51.923Z" }, +] + +[[package]] +name = "marko" +version = "2.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e3/2f/050b6d485f052ddf17d76a41f9334d6fb2a8a85df35347a12d97ed3bc5c1/marko-2.2.2.tar.gz", hash = "sha256:6940308e655f63733ca518c47a68ec9510279dbb916c83616e4c4b5829f052e8", size = 143641, upload-time = "2026-01-05T11:04:41.935Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/f8/36d79bac5701e6786f9880c61bbe57574760a13c1af84ab71e5ed21faecc/marko-2.2.2-py3-none-any.whl", hash = "sha256:f064ae8c10416285ad1d96048dc11e98ef04e662d3342ae416f662b70aa7959e", size = 42701, upload-time = "2026-01-05T11:04:40.75Z" }, +] + +[[package]] +name = "markupsafe" +version = "3.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/4b/3541d44f3937ba468b75da9eebcae497dcf67adb65caa16760b0a6807ebb/markupsafe-3.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559", size = 11631, upload-time = "2025-09-27T18:36:05.558Z" }, + { url = "https://files.pythonhosted.org/packages/98/1b/fbd8eed11021cabd9226c37342fa6ca4e8a98d8188a8d9b66740494960e4/markupsafe-3.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419", size = 12057, upload-time = "2025-09-27T18:36:07.165Z" }, + { url = "https://files.pythonhosted.org/packages/40/01/e560d658dc0bb8ab762670ece35281dec7b6c1b33f5fbc09ebb57a185519/markupsafe-3.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ba88449deb3de88bd40044603fafffb7bc2b055d626a330323a9ed736661695", size = 22050, upload-time = "2025-09-27T18:36:08.005Z" }, + { url = "https://files.pythonhosted.org/packages/af/cd/ce6e848bbf2c32314c9b237839119c5a564a59725b53157c856e90937b7a/markupsafe-3.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f42d0984e947b8adf7dd6dde396e720934d12c506ce84eea8476409563607591", size = 20681, upload-time = "2025-09-27T18:36:08.881Z" }, + { url = "https://files.pythonhosted.org/packages/c9/2a/b5c12c809f1c3045c4d580b035a743d12fcde53cf685dbc44660826308da/markupsafe-3.0.3-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c0c0b3ade1c0b13b936d7970b1d37a57acde9199dc2aecc4c336773e1d86049c", size = 20705, upload-time = "2025-09-27T18:36:10.131Z" }, + { url = "https://files.pythonhosted.org/packages/cf/e3/9427a68c82728d0a88c50f890d0fc072a1484de2f3ac1ad0bfc1a7214fd5/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0303439a41979d9e74d18ff5e2dd8c43ed6c6001fd40e5bf2e43f7bd9bbc523f", size = 21524, upload-time = "2025-09-27T18:36:11.324Z" }, + { url = "https://files.pythonhosted.org/packages/bc/36/23578f29e9e582a4d0278e009b38081dbe363c5e7165113fad546918a232/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:d2ee202e79d8ed691ceebae8e0486bd9a2cd4794cec4824e1c99b6f5009502f6", size = 20282, upload-time = "2025-09-27T18:36:12.573Z" }, + { url = "https://files.pythonhosted.org/packages/56/21/dca11354e756ebd03e036bd8ad58d6d7168c80ce1fe5e75218e4945cbab7/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:177b5253b2834fe3678cb4a5f0059808258584c559193998be2601324fdeafb1", size = 20745, upload-time = "2025-09-27T18:36:13.504Z" }, + { url = "https://files.pythonhosted.org/packages/87/99/faba9369a7ad6e4d10b6a5fbf71fa2a188fe4a593b15f0963b73859a1bbd/markupsafe-3.0.3-cp310-cp310-win32.whl", hash = "sha256:2a15a08b17dd94c53a1da0438822d70ebcd13f8c3a95abe3a9ef9f11a94830aa", size = 14571, upload-time = "2025-09-27T18:36:14.779Z" }, + { url = "https://files.pythonhosted.org/packages/d6/25/55dc3ab959917602c96985cb1253efaa4ff42f71194bddeb61eb7278b8be/markupsafe-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:c4ffb7ebf07cfe8931028e3e4c85f0357459a3f9f9490886198848f4fa002ec8", size = 15056, upload-time = "2025-09-27T18:36:16.125Z" }, + { url = "https://files.pythonhosted.org/packages/d0/9e/0a02226640c255d1da0b8d12e24ac2aa6734da68bff14c05dd53b94a0fc3/markupsafe-3.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:e2103a929dfa2fcaf9bb4e7c091983a49c9ac3b19c9061b6d5427dd7d14d81a1", size = 13932, upload-time = "2025-09-27T18:36:17.311Z" }, + { url = "https://files.pythonhosted.org/packages/08/db/fefacb2136439fc8dd20e797950e749aa1f4997ed584c62cfb8ef7c2be0e/markupsafe-3.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad", size = 11631, upload-time = "2025-09-27T18:36:18.185Z" }, + { url = "https://files.pythonhosted.org/packages/e1/2e/5898933336b61975ce9dc04decbc0a7f2fee78c30353c5efba7f2d6ff27a/markupsafe-3.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a", size = 12058, upload-time = "2025-09-27T18:36:19.444Z" }, + { url = "https://files.pythonhosted.org/packages/1d/09/adf2df3699d87d1d8184038df46a9c80d78c0148492323f4693df54e17bb/markupsafe-3.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50", size = 24287, upload-time = "2025-09-27T18:36:20.768Z" }, + { url = "https://files.pythonhosted.org/packages/30/ac/0273f6fcb5f42e314c6d8cd99effae6a5354604d461b8d392b5ec9530a54/markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf", size = 22940, upload-time = "2025-09-27T18:36:22.249Z" }, + { url = "https://files.pythonhosted.org/packages/19/ae/31c1be199ef767124c042c6c3e904da327a2f7f0cd63a0337e1eca2967a8/markupsafe-3.0.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f", size = 21887, upload-time = "2025-09-27T18:36:23.535Z" }, + { url = "https://files.pythonhosted.org/packages/b2/76/7edcab99d5349a4532a459e1fe64f0b0467a3365056ae550d3bcf3f79e1e/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a", size = 23692, upload-time = "2025-09-27T18:36:24.823Z" }, + { url = "https://files.pythonhosted.org/packages/a4/28/6e74cdd26d7514849143d69f0bf2399f929c37dc2b31e6829fd2045b2765/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115", size = 21471, upload-time = "2025-09-27T18:36:25.95Z" }, + { url = "https://files.pythonhosted.org/packages/62/7e/a145f36a5c2945673e590850a6f8014318d5577ed7e5920a4b3448e0865d/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a", size = 22923, upload-time = "2025-09-27T18:36:27.109Z" }, + { url = "https://files.pythonhosted.org/packages/0f/62/d9c46a7f5c9adbeeeda52f5b8d802e1094e9717705a645efc71b0913a0a8/markupsafe-3.0.3-cp311-cp311-win32.whl", hash = "sha256:0db14f5dafddbb6d9208827849fad01f1a2609380add406671a26386cdf15a19", size = 14572, upload-time = "2025-09-27T18:36:28.045Z" }, + { url = "https://files.pythonhosted.org/packages/83/8a/4414c03d3f891739326e1783338e48fb49781cc915b2e0ee052aa490d586/markupsafe-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:de8a88e63464af587c950061a5e6a67d3632e36df62b986892331d4620a35c01", size = 15077, upload-time = "2025-09-27T18:36:29.025Z" }, + { url = "https://files.pythonhosted.org/packages/35/73/893072b42e6862f319b5207adc9ae06070f095b358655f077f69a35601f0/markupsafe-3.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:3b562dd9e9ea93f13d53989d23a7e775fdfd1066c33494ff43f5418bc8c58a5c", size = 13876, upload-time = "2025-09-27T18:36:29.954Z" }, + { url = "https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e", size = 11615, upload-time = "2025-09-27T18:36:30.854Z" }, + { url = "https://files.pythonhosted.org/packages/9a/81/7e4e08678a1f98521201c3079f77db69fb552acd56067661f8c2f534a718/markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce", size = 12020, upload-time = "2025-09-27T18:36:31.971Z" }, + { url = "https://files.pythonhosted.org/packages/1e/2c/799f4742efc39633a1b54a92eec4082e4f815314869865d876824c257c1e/markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d", size = 24332, upload-time = "2025-09-27T18:36:32.813Z" }, + { url = "https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d", size = 22947, upload-time = "2025-09-27T18:36:33.86Z" }, + { url = "https://files.pythonhosted.org/packages/2c/54/887f3092a85238093a0b2154bd629c89444f395618842e8b0c41783898ea/markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a", size = 21962, upload-time = "2025-09-27T18:36:35.099Z" }, + { url = "https://files.pythonhosted.org/packages/c9/2f/336b8c7b6f4a4d95e91119dc8521402461b74a485558d8f238a68312f11c/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b", size = 23760, upload-time = "2025-09-27T18:36:36.001Z" }, + { url = "https://files.pythonhosted.org/packages/32/43/67935f2b7e4982ffb50a4d169b724d74b62a3964bc1a9a527f5ac4f1ee2b/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f", size = 21529, upload-time = "2025-09-27T18:36:36.906Z" }, + { url = "https://files.pythonhosted.org/packages/89/e0/4486f11e51bbba8b0c041098859e869e304d1c261e59244baa3d295d47b7/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b", size = 23015, upload-time = "2025-09-27T18:36:37.868Z" }, + { url = "https://files.pythonhosted.org/packages/2f/e1/78ee7a023dac597a5825441ebd17170785a9dab23de95d2c7508ade94e0e/markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d", size = 14540, upload-time = "2025-09-27T18:36:38.761Z" }, + { url = "https://files.pythonhosted.org/packages/aa/5b/bec5aa9bbbb2c946ca2733ef9c4ca91c91b6a24580193e891b5f7dbe8e1e/markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c", size = 15105, upload-time = "2025-09-27T18:36:39.701Z" }, + { url = "https://files.pythonhosted.org/packages/e5/f1/216fc1bbfd74011693a4fd837e7026152e89c4bcf3e77b6692fba9923123/markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f", size = 13906, upload-time = "2025-09-27T18:36:40.689Z" }, + { url = "https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", size = 11622, upload-time = "2025-09-27T18:36:41.777Z" }, + { url = "https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", size = 12029, upload-time = "2025-09-27T18:36:43.257Z" }, + { url = "https://files.pythonhosted.org/packages/00/07/575a68c754943058c78f30db02ee03a64b3c638586fba6a6dd56830b30a3/markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", size = 24374, upload-time = "2025-09-27T18:36:44.508Z" }, + { url = "https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", size = 22980, upload-time = "2025-09-27T18:36:45.385Z" }, + { url = "https://files.pythonhosted.org/packages/7f/71/544260864f893f18b6827315b988c146b559391e6e7e8f7252839b1b846a/markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", size = 21990, upload-time = "2025-09-27T18:36:46.916Z" }, + { url = "https://files.pythonhosted.org/packages/c2/28/b50fc2f74d1ad761af2f5dcce7492648b983d00a65b8c0e0cb457c82ebbe/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", size = 23784, upload-time = "2025-09-27T18:36:47.884Z" }, + { url = "https://files.pythonhosted.org/packages/ed/76/104b2aa106a208da8b17a2fb72e033a5a9d7073c68f7e508b94916ed47a9/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", size = 21588, upload-time = "2025-09-27T18:36:48.82Z" }, + { url = "https://files.pythonhosted.org/packages/b5/99/16a5eb2d140087ebd97180d95249b00a03aa87e29cc224056274f2e45fd6/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", size = 23041, upload-time = "2025-09-27T18:36:49.797Z" }, + { url = "https://files.pythonhosted.org/packages/19/bc/e7140ed90c5d61d77cea142eed9f9c303f4c4806f60a1044c13e3f1471d0/markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", size = 14543, upload-time = "2025-09-27T18:36:51.584Z" }, + { url = "https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", size = 15113, upload-time = "2025-09-27T18:36:52.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3a/fa34a0f7cfef23cf9500d68cb7c32dd64ffd58a12b09225fb03dd37d5b80/markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", size = 13911, upload-time = "2025-09-27T18:36:53.513Z" }, + { url = "https://files.pythonhosted.org/packages/e4/d7/e05cd7efe43a88a17a37b3ae96e79a19e846f3f456fe79c57ca61356ef01/markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", size = 11658, upload-time = "2025-09-27T18:36:54.819Z" }, + { url = "https://files.pythonhosted.org/packages/99/9e/e412117548182ce2148bdeacdda3bb494260c0b0184360fe0d56389b523b/markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", size = 12066, upload-time = "2025-09-27T18:36:55.714Z" }, + { url = "https://files.pythonhosted.org/packages/bc/e6/fa0ffcda717ef64a5108eaa7b4f5ed28d56122c9a6d70ab8b72f9f715c80/markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", size = 25639, upload-time = "2025-09-27T18:36:56.908Z" }, + { url = "https://files.pythonhosted.org/packages/96/ec/2102e881fe9d25fc16cb4b25d5f5cde50970967ffa5dddafdb771237062d/markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", size = 23569, upload-time = "2025-09-27T18:36:57.913Z" }, + { url = "https://files.pythonhosted.org/packages/4b/30/6f2fce1f1f205fc9323255b216ca8a235b15860c34b6798f810f05828e32/markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", size = 23284, upload-time = "2025-09-27T18:36:58.833Z" }, + { url = "https://files.pythonhosted.org/packages/58/47/4a0ccea4ab9f5dcb6f79c0236d954acb382202721e704223a8aafa38b5c8/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", size = 24801, upload-time = "2025-09-27T18:36:59.739Z" }, + { url = "https://files.pythonhosted.org/packages/6a/70/3780e9b72180b6fecb83a4814d84c3bf4b4ae4bf0b19c27196104149734c/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", size = 22769, upload-time = "2025-09-27T18:37:00.719Z" }, + { url = "https://files.pythonhosted.org/packages/98/c5/c03c7f4125180fc215220c035beac6b9cb684bc7a067c84fc69414d315f5/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", size = 23642, upload-time = "2025-09-27T18:37:01.673Z" }, + { url = "https://files.pythonhosted.org/packages/80/d6/2d1b89f6ca4bff1036499b1e29a1d02d282259f3681540e16563f27ebc23/markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", size = 14612, upload-time = "2025-09-27T18:37:02.639Z" }, + { url = "https://files.pythonhosted.org/packages/2b/98/e48a4bfba0a0ffcf9925fe2d69240bfaa19c6f7507b8cd09c70684a53c1e/markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", size = 15200, upload-time = "2025-09-27T18:37:03.582Z" }, + { url = "https://files.pythonhosted.org/packages/0e/72/e3cc540f351f316e9ed0f092757459afbc595824ca724cbc5a5d4263713f/markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", size = 13973, upload-time = "2025-09-27T18:37:04.929Z" }, + { url = "https://files.pythonhosted.org/packages/33/8a/8e42d4838cd89b7dde187011e97fe6c3af66d8c044997d2183fbd6d31352/markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe", size = 11619, upload-time = "2025-09-27T18:37:06.342Z" }, + { url = "https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026", size = 12029, upload-time = "2025-09-27T18:37:07.213Z" }, + { url = "https://files.pythonhosted.org/packages/da/ef/e648bfd021127bef5fa12e1720ffed0c6cbb8310c8d9bea7266337ff06de/markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737", size = 24408, upload-time = "2025-09-27T18:37:09.572Z" }, + { url = "https://files.pythonhosted.org/packages/41/3c/a36c2450754618e62008bf7435ccb0f88053e07592e6028a34776213d877/markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97", size = 23005, upload-time = "2025-09-27T18:37:10.58Z" }, + { url = "https://files.pythonhosted.org/packages/bc/20/b7fdf89a8456b099837cd1dc21974632a02a999ec9bf7ca3e490aacd98e7/markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d", size = 22048, upload-time = "2025-09-27T18:37:11.547Z" }, + { url = "https://files.pythonhosted.org/packages/9a/a7/591f592afdc734f47db08a75793a55d7fbcc6902a723ae4cfbab61010cc5/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda", size = 23821, upload-time = "2025-09-27T18:37:12.48Z" }, + { url = "https://files.pythonhosted.org/packages/7d/33/45b24e4f44195b26521bc6f1a82197118f74df348556594bd2262bda1038/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf", size = 21606, upload-time = "2025-09-27T18:37:13.485Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0e/53dfaca23a69fbfbbf17a4b64072090e70717344c52eaaaa9c5ddff1e5f0/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe", size = 23043, upload-time = "2025-09-27T18:37:14.408Z" }, + { url = "https://files.pythonhosted.org/packages/46/11/f333a06fc16236d5238bfe74daccbca41459dcd8d1fa952e8fbd5dccfb70/markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9", size = 14747, upload-time = "2025-09-27T18:37:15.36Z" }, + { url = "https://files.pythonhosted.org/packages/28/52/182836104b33b444e400b14f797212f720cbc9ed6ba34c800639d154e821/markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581", size = 15341, upload-time = "2025-09-27T18:37:16.496Z" }, + { url = "https://files.pythonhosted.org/packages/6f/18/acf23e91bd94fd7b3031558b1f013adfa21a8e407a3fdb32745538730382/markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4", size = 14073, upload-time = "2025-09-27T18:37:17.476Z" }, + { url = "https://files.pythonhosted.org/packages/3c/f0/57689aa4076e1b43b15fdfa646b04653969d50cf30c32a102762be2485da/markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab", size = 11661, upload-time = "2025-09-27T18:37:18.453Z" }, + { url = "https://files.pythonhosted.org/packages/89/c3/2e67a7ca217c6912985ec766c6393b636fb0c2344443ff9d91404dc4c79f/markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175", size = 12069, upload-time = "2025-09-27T18:37:19.332Z" }, + { url = "https://files.pythonhosted.org/packages/f0/00/be561dce4e6ca66b15276e184ce4b8aec61fe83662cce2f7d72bd3249d28/markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634", size = 25670, upload-time = "2025-09-27T18:37:20.245Z" }, + { url = "https://files.pythonhosted.org/packages/50/09/c419f6f5a92e5fadde27efd190eca90f05e1261b10dbd8cbcb39cd8ea1dc/markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50", size = 23598, upload-time = "2025-09-27T18:37:21.177Z" }, + { url = "https://files.pythonhosted.org/packages/22/44/a0681611106e0b2921b3033fc19bc53323e0b50bc70cffdd19f7d679bb66/markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e", size = 23261, upload-time = "2025-09-27T18:37:22.167Z" }, + { url = "https://files.pythonhosted.org/packages/5f/57/1b0b3f100259dc9fffe780cfb60d4be71375510e435efec3d116b6436d43/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5", size = 24835, upload-time = "2025-09-27T18:37:23.296Z" }, + { url = "https://files.pythonhosted.org/packages/26/6a/4bf6d0c97c4920f1597cc14dd720705eca0bf7c787aebc6bb4d1bead5388/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523", size = 22733, upload-time = "2025-09-27T18:37:24.237Z" }, + { url = "https://files.pythonhosted.org/packages/14/c7/ca723101509b518797fedc2fdf79ba57f886b4aca8a7d31857ba3ee8281f/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc", size = 23672, upload-time = "2025-09-27T18:37:25.271Z" }, + { url = "https://files.pythonhosted.org/packages/fb/df/5bd7a48c256faecd1d36edc13133e51397e41b73bb77e1a69deab746ebac/markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d", size = 14819, upload-time = "2025-09-27T18:37:26.285Z" }, + { url = "https://files.pythonhosted.org/packages/1a/8a/0402ba61a2f16038b48b39bccca271134be00c5c9f0f623208399333c448/markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9", size = 15426, upload-time = "2025-09-27T18:37:27.316Z" }, + { url = "https://files.pythonhosted.org/packages/70/bc/6f1c2f612465f5fa89b95bead1f44dcb607670fd42891d8fdcd5d039f4f4/markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa", size = 14146, upload-time = "2025-09-27T18:37:28.327Z" }, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, +] + +[[package]] +name = "mpire" +version = "2.10.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pygments" }, + { name = "pywin32", marker = "sys_platform == 'win32'" }, + { name = "tqdm" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3a/93/80ac75c20ce54c785648b4ed363c88f148bf22637e10c9863db4fbe73e74/mpire-2.10.2.tar.gz", hash = "sha256:f66a321e93fadff34585a4bfa05e95bd946cf714b442f51c529038eb45773d97", size = 271270, upload-time = "2024-05-07T14:00:31.815Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/14/1db1729ad6db4999c3a16c47937d601fcb909aaa4224f5eca5a2f145a605/mpire-2.10.2-py3-none-any.whl", hash = "sha256:d627707f7a8d02aa4c7f7d59de399dec5290945ddf7fbd36cbb1d6ebb37a51fb", size = 272756, upload-time = "2024-05-07T14:00:29.633Z" }, +] + +[package.optional-dependencies] +dill = [ + { name = "multiprocess" }, +] + +[[package]] +name = "mpmath" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f", size = 508106, upload-time = "2023-03-07T16:47:11.061Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", size = 536198, upload-time = "2023-03-07T16:47:09.197Z" }, +] + +[[package]] +name = "multiprocess" +version = "0.70.19" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "dill" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a2/f2/e783ac7f2aeeed14e9e12801f22529cc7e6b7ab80928d6dcce4e9f00922d/multiprocess-0.70.19.tar.gz", hash = "sha256:952021e0e6c55a4a9fe4cd787895b86e239a40e76802a789d6305398d3975897", size = 2079989, upload-time = "2026-01-19T06:47:39.744Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/b6/10832f96b499690854e574360be342a282f5f7dba58eff791299ff6c0637/multiprocess-0.70.19-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:02e5c35d7d6cd2bdc89c1858867f7bde4012837411023a4696c148c1bdd7c80e", size = 135131, upload-time = "2026-01-19T06:47:20.479Z" }, + { url = "https://files.pythonhosted.org/packages/99/50/faef2d8106534b0dc4a0b772668a1a99682696ebf17d3c0f13f2ed6a656a/multiprocess-0.70.19-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:79576c02d1207ec405b00cabf2c643c36070800cca433860e14539df7818b2aa", size = 135131, upload-time = "2026-01-19T06:47:21.879Z" }, + { url = "https://files.pythonhosted.org/packages/94/b1/0b71d18b76bf423c2e8ee00b31db37d17297ab3b4db44e188692afdca628/multiprocess-0.70.19-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c6b6d78d43a03b68014ca1f0b7937d965393a670c5de7c29026beb2258f2f896", size = 135134, upload-time = "2026-01-19T06:47:23.262Z" }, + { url = "https://files.pythonhosted.org/packages/7e/aa/714635c727dbfc251139226fa4eaf1b07f00dc12d9cd2eb25f931adaf873/multiprocess-0.70.19-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1bbf1b69af1cf64cd05f65337d9215b88079ec819cd0ea7bac4dab84e162efe7", size = 144743, upload-time = "2026-01-19T06:47:24.562Z" }, + { url = "https://files.pythonhosted.org/packages/0f/e1/155f6abf5e6b5d9cef29b6d0167c180846157a4aca9b9bee1a217f67c959/multiprocess-0.70.19-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:5be9ec7f0c1c49a4f4a6fd20d5dda4aeabc2d39a50f4ad53720f1cd02b3a7c2e", size = 144738, upload-time = "2026-01-19T06:47:26.636Z" }, + { url = "https://files.pythonhosted.org/packages/af/cb/f421c2869d75750a4f32301cc20c4b63fab6376e9a75c8e5e655bdeb3d9b/multiprocess-0.70.19-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1c3dce098845a0db43b32a0b76a228ca059a668071cfeaa0f40c36c0b1585d45", size = 144741, upload-time = "2026-01-19T06:47:27.985Z" }, + { url = "https://files.pythonhosted.org/packages/e3/45/8004d1e6b9185c1a444d6b55ac5682acf9d98035e54386d967366035a03a/multiprocess-0.70.19-py310-none-any.whl", hash = "sha256:97404393419dcb2a8385910864eedf47a3cadf82c66345b44f036420eb0b5d87", size = 134948, upload-time = "2026-01-19T06:47:32.325Z" }, + { url = "https://files.pythonhosted.org/packages/86/c2/dec9722dc3474c164a0b6bcd9a7ed7da542c98af8cabce05374abab35edd/multiprocess-0.70.19-py311-none-any.whl", hash = "sha256:928851ae7973aea4ce0eaf330bbdafb2e01398a91518d5c8818802845564f45c", size = 144457, upload-time = "2026-01-19T06:47:33.711Z" }, + { url = "https://files.pythonhosted.org/packages/71/70/38998b950a97ea279e6bd657575d22d1a2047256caf707d9a10fbce4f065/multiprocess-0.70.19-py312-none-any.whl", hash = "sha256:3a56c0e85dd5025161bac5ce138dcac1e49174c7d8e74596537e729fd5c53c28", size = 150281, upload-time = "2026-01-19T06:47:35.037Z" }, + { url = "https://files.pythonhosted.org/packages/7f/74/d2c27e03cb84251dfe7249b8e82923643c6d48fa4883b9476b025e7dc7eb/multiprocess-0.70.19-py313-none-any.whl", hash = "sha256:8d5eb4ec5017ba2fab4e34a747c6d2c2b6fecfe9e7236e77988db91580ada952", size = 156414, upload-time = "2026-01-19T06:47:35.915Z" }, + { url = "https://files.pythonhosted.org/packages/a0/61/af9115673a5870fd885247e2f1b68c4f1197737da315b520a91c757a861a/multiprocess-0.70.19-py314-none-any.whl", hash = "sha256:e8cc7fbdff15c0613f0a1f1f8744bef961b0a164c0ca29bdff53e9d2d93c5e5f", size = 160318, upload-time = "2026-01-19T06:47:37.497Z" }, + { url = "https://files.pythonhosted.org/packages/7e/82/69e539c4c2027f1e1697e09aaa2449243085a0edf81ae2c6341e84d769b6/multiprocess-0.70.19-py39-none-any.whl", hash = "sha256:0d4b4397ed669d371c81dcd1ef33fd384a44d6c3de1bd0ca7ac06d837720d3c5", size = 133477, upload-time = "2026-01-19T06:47:38.619Z" }, +] + +[[package]] +name = "networkx" +version = "3.4.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] +sdist = { url = "https://files.pythonhosted.org/packages/fd/1d/06475e1cd5264c0b870ea2cc6fdb3e37177c1e565c43f56ff17a10e3937f/networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1", size = 2151368, upload-time = "2024-10-21T12:39:38.695Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f", size = 1723263, upload-time = "2024-10-21T12:39:36.247Z" }, +] + +[[package]] +name = "networkx" +version = "3.6.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14' and sys_platform == 'win32'", + "python_full_version >= '3.14' and sys_platform == 'emscripten'", + "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'win32'", + "python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten'", + "python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", +] +sdist = { url = "https://files.pythonhosted.org/packages/6a/51/63fe664f3908c97be9d2e4f1158eb633317598cfa6e1fc14af5383f17512/networkx-3.6.1.tar.gz", hash = "sha256:26b7c357accc0c8cde558ad486283728b65b6a95d85ee1cd66bafab4c8168509", size = 2517025, upload-time = "2025-12-08T17:02:39.908Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl", hash = "sha256:d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762", size = 2068504, upload-time = "2025-12-08T17:02:38.159Z" }, +] + +[[package]] +name = "ninja" +version = "1.13.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/73/79a0b22fc731989c708068427579e840a6cf4e937fe7ae5c5d0b7356ac22/ninja-1.13.0.tar.gz", hash = "sha256:4a40ce995ded54d9dc24f8ea37ff3bf62ad192b547f6c7126e7e25045e76f978", size = 242558, upload-time = "2025-08-11T15:10:19.421Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/74/d02409ed2aa865e051b7edda22ad416a39d81a84980f544f8de717cab133/ninja-1.13.0-py3-none-macosx_10_9_universal2.whl", hash = "sha256:fa2a8bfc62e31b08f83127d1613d10821775a0eb334197154c4d6067b7068ff1", size = 310125, upload-time = "2025-08-11T15:09:50.971Z" }, + { url = "https://files.pythonhosted.org/packages/8e/de/6e1cd6b84b412ac1ef327b76f0641aeb5dcc01e9d3f9eee0286d0c34fd93/ninja-1.13.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3d00c692fb717fd511abeb44b8c5d00340c36938c12d6538ba989fe764e79630", size = 177467, upload-time = "2025-08-11T15:09:52.767Z" }, + { url = "https://files.pythonhosted.org/packages/c8/83/49320fb6e58ae3c079381e333575fdbcf1cca3506ee160a2dcce775046fa/ninja-1.13.0-py3-none-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:be7f478ff9f96a128b599a964fc60a6a87b9fa332ee1bd44fa243ac88d50291c", size = 187834, upload-time = "2025-08-11T15:09:54.115Z" }, + { url = "https://files.pythonhosted.org/packages/56/c7/ba22748fb59f7f896b609cd3e568d28a0a367a6d953c24c461fe04fc4433/ninja-1.13.0-py3-none-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:60056592cf495e9a6a4bea3cd178903056ecb0943e4de45a2ea825edb6dc8d3e", size = 202736, upload-time = "2025-08-11T15:09:55.745Z" }, + { url = "https://files.pythonhosted.org/packages/79/22/d1de07632b78ac8e6b785f41fa9aad7a978ec8c0a1bf15772def36d77aac/ninja-1.13.0-py3-none-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:1c97223cdda0417f414bf864cfb73b72d8777e57ebb279c5f6de368de0062988", size = 179034, upload-time = "2025-08-11T15:09:57.394Z" }, + { url = "https://files.pythonhosted.org/packages/ed/de/0e6edf44d6a04dabd0318a519125ed0415ce437ad5a1ec9b9be03d9048cf/ninja-1.13.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fb46acf6b93b8dd0322adc3a4945452a4e774b75b91293bafcc7b7f8e6517dfa", size = 180716, upload-time = "2025-08-11T15:09:58.696Z" }, + { url = "https://files.pythonhosted.org/packages/54/28/938b562f9057aaa4d6bfbeaa05e81899a47aebb3ba6751e36c027a7f5ff7/ninja-1.13.0-py3-none-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:4be9c1b082d244b1ad7ef41eb8ab088aae8c109a9f3f0b3e56a252d3e00f42c1", size = 146843, upload-time = "2025-08-11T15:10:00.046Z" }, + { url = "https://files.pythonhosted.org/packages/2a/fb/d06a3838de4f8ab866e44ee52a797b5491df823901c54943b2adb0389fbb/ninja-1.13.0-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:6739d3352073341ad284246f81339a384eec091d9851a886dfa5b00a6d48b3e2", size = 154402, upload-time = "2025-08-11T15:10:01.657Z" }, + { url = "https://files.pythonhosted.org/packages/31/bf/0d7808af695ceddc763cf251b84a9892cd7f51622dc8b4c89d5012779f06/ninja-1.13.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:11be2d22027bde06f14c343f01d31446747dbb51e72d00decca2eb99be911e2f", size = 552388, upload-time = "2025-08-11T15:10:03.349Z" }, + { url = "https://files.pythonhosted.org/packages/9d/70/c99d0c2c809f992752453cce312848abb3b1607e56d4cd1b6cded317351a/ninja-1.13.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:aa45b4037b313c2f698bc13306239b8b93b4680eb47e287773156ac9e9304714", size = 472501, upload-time = "2025-08-11T15:10:04.735Z" }, + { url = "https://files.pythonhosted.org/packages/9f/43/c217b1153f0e499652f5e0766da8523ce3480f0a951039c7af115e224d55/ninja-1.13.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:5f8e1e8a1a30835eeb51db05cf5a67151ad37542f5a4af2a438e9490915e5b72", size = 638280, upload-time = "2025-08-11T15:10:06.512Z" }, + { url = "https://files.pythonhosted.org/packages/8c/45/9151bba2c8d0ae2b6260f71696330590de5850e5574b7b5694dce6023e20/ninja-1.13.0-py3-none-musllinux_1_2_ppc64le.whl", hash = "sha256:3d7d7779d12cb20c6d054c61b702139fd23a7a964ec8f2c823f1ab1b084150db", size = 642420, upload-time = "2025-08-11T15:10:08.35Z" }, + { url = "https://files.pythonhosted.org/packages/3c/fb/95752eb635bb8ad27d101d71bef15bc63049de23f299e312878fc21cb2da/ninja-1.13.0-py3-none-musllinux_1_2_riscv64.whl", hash = "sha256:d741a5e6754e0bda767e3274a0f0deeef4807f1fec6c0d7921a0244018926ae5", size = 585106, upload-time = "2025-08-11T15:10:09.818Z" }, + { url = "https://files.pythonhosted.org/packages/c1/31/aa56a1a286703800c0cbe39fb4e82811c277772dc8cd084f442dd8e2938a/ninja-1.13.0-py3-none-musllinux_1_2_s390x.whl", hash = "sha256:e8bad11f8a00b64137e9b315b137d8bb6cbf3086fbdc43bf1f90fd33324d2e96", size = 707138, upload-time = "2025-08-11T15:10:11.366Z" }, + { url = "https://files.pythonhosted.org/packages/34/6f/5f5a54a1041af945130abdb2b8529cbef0cdcbbf9bcf3f4195378319d29a/ninja-1.13.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:b4f2a072db3c0f944c32793e91532d8948d20d9ab83da9c0c7c15b5768072200", size = 581758, upload-time = "2025-08-11T15:10:13.295Z" }, + { url = "https://files.pythonhosted.org/packages/95/97/51359c77527d45943fe7a94d00a3843b81162e6c4244b3579fe8fc54cb9c/ninja-1.13.0-py3-none-win32.whl", hash = "sha256:8cfbb80b4a53456ae8a39f90ae3d7a2129f45ea164f43fadfa15dc38c4aef1c9", size = 267201, upload-time = "2025-08-11T15:10:15.158Z" }, + { url = "https://files.pythonhosted.org/packages/29/45/c0adfbfb0b5895aa18cec400c535b4f7ff3e52536e0403602fc1a23f7de9/ninja-1.13.0-py3-none-win_amd64.whl", hash = "sha256:fb8ee8719f8af47fed145cced4a85f0755dd55d45b2bddaf7431fa89803c5f3e", size = 309975, upload-time = "2025-08-11T15:10:16.697Z" }, + { url = "https://files.pythonhosted.org/packages/df/93/a7b983643d1253bb223234b5b226e69de6cda02b76cdca7770f684b795f5/ninja-1.13.0-py3-none-win_arm64.whl", hash = "sha256:3c0b40b1f0bba764644385319028650087b4c1b18cdfa6f45cb39a3669b81aa9", size = 290806, upload-time = "2025-08-11T15:10:18.018Z" }, +] + +[[package]] +name = "numpy" +version = "2.2.6" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] +sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440, upload-time = "2025-05-17T22:38:04.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/3e/ed6db5be21ce87955c0cbd3009f2803f59fa08df21b5df06862e2d8e2bdd/numpy-2.2.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b412caa66f72040e6d268491a59f2c43bf03eb6c96dd8f0307829feb7fa2b6fb", size = 21165245, upload-time = "2025-05-17T21:27:58.555Z" }, + { url = "https://files.pythonhosted.org/packages/22/c2/4b9221495b2a132cc9d2eb862e21d42a009f5a60e45fc44b00118c174bff/numpy-2.2.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e41fd67c52b86603a91c1a505ebaef50b3314de0213461c7a6e99c9a3beff90", size = 14360048, upload-time = "2025-05-17T21:28:21.406Z" }, + { url = "https://files.pythonhosted.org/packages/fd/77/dc2fcfc66943c6410e2bf598062f5959372735ffda175b39906d54f02349/numpy-2.2.6-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:37e990a01ae6ec7fe7fa1c26c55ecb672dd98b19c3d0e1d1f326fa13cb38d163", size = 5340542, upload-time = "2025-05-17T21:28:30.931Z" }, + { url = "https://files.pythonhosted.org/packages/7a/4f/1cb5fdc353a5f5cc7feb692db9b8ec2c3d6405453f982435efc52561df58/numpy-2.2.6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:5a6429d4be8ca66d889b7cf70f536a397dc45ba6faeb5f8c5427935d9592e9cf", size = 6878301, upload-time = "2025-05-17T21:28:41.613Z" }, + { url = "https://files.pythonhosted.org/packages/eb/17/96a3acd228cec142fcb8723bd3cc39c2a474f7dcf0a5d16731980bcafa95/numpy-2.2.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efd28d4e9cd7d7a8d39074a4d44c63eda73401580c5c76acda2ce969e0a38e83", size = 14297320, upload-time = "2025-05-17T21:29:02.78Z" }, + { url = "https://files.pythonhosted.org/packages/b4/63/3de6a34ad7ad6646ac7d2f55ebc6ad439dbbf9c4370017c50cf403fb19b5/numpy-2.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc7b73d02efb0e18c000e9ad8b83480dfcd5dfd11065997ed4c6747470ae8915", size = 16801050, upload-time = "2025-05-17T21:29:27.675Z" }, + { url = "https://files.pythonhosted.org/packages/07/b6/89d837eddef52b3d0cec5c6ba0456c1bf1b9ef6a6672fc2b7873c3ec4e2e/numpy-2.2.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74d4531beb257d2c3f4b261bfb0fc09e0f9ebb8842d82a7b4209415896adc680", size = 15807034, upload-time = "2025-05-17T21:29:51.102Z" }, + { url = "https://files.pythonhosted.org/packages/01/c8/dc6ae86e3c61cfec1f178e5c9f7858584049b6093f843bca541f94120920/numpy-2.2.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8fc377d995680230e83241d8a96def29f204b5782f371c532579b4f20607a289", size = 18614185, upload-time = "2025-05-17T21:30:18.703Z" }, + { url = "https://files.pythonhosted.org/packages/5b/c5/0064b1b7e7c89137b471ccec1fd2282fceaae0ab3a9550f2568782d80357/numpy-2.2.6-cp310-cp310-win32.whl", hash = "sha256:b093dd74e50a8cba3e873868d9e93a85b78e0daf2e98c6797566ad8044e8363d", size = 6527149, upload-time = "2025-05-17T21:30:29.788Z" }, + { url = "https://files.pythonhosted.org/packages/a3/dd/4b822569d6b96c39d1215dbae0582fd99954dcbcf0c1a13c61783feaca3f/numpy-2.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:f0fd6321b839904e15c46e0d257fdd101dd7f530fe03fd6359c1ea63738703f3", size = 12904620, upload-time = "2025-05-17T21:30:48.994Z" }, + { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963, upload-time = "2025-05-17T21:31:19.36Z" }, + { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743, upload-time = "2025-05-17T21:31:41.087Z" }, + { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616, upload-time = "2025-05-17T21:31:50.072Z" }, + { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579, upload-time = "2025-05-17T21:32:01.712Z" }, + { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005, upload-time = "2025-05-17T21:32:23.332Z" }, + { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570, upload-time = "2025-05-17T21:32:47.991Z" }, + { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548, upload-time = "2025-05-17T21:33:11.728Z" }, + { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521, upload-time = "2025-05-17T21:33:39.139Z" }, + { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866, upload-time = "2025-05-17T21:33:50.273Z" }, + { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455, upload-time = "2025-05-17T21:34:09.135Z" }, + { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348, upload-time = "2025-05-17T21:34:39.648Z" }, + { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362, upload-time = "2025-05-17T21:35:01.241Z" }, + { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103, upload-time = "2025-05-17T21:35:10.622Z" }, + { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382, upload-time = "2025-05-17T21:35:21.414Z" }, + { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462, upload-time = "2025-05-17T21:35:42.174Z" }, + { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618, upload-time = "2025-05-17T21:36:06.711Z" }, + { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511, upload-time = "2025-05-17T21:36:29.965Z" }, + { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783, upload-time = "2025-05-17T21:36:56.883Z" }, + { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506, upload-time = "2025-05-17T21:37:07.368Z" }, + { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190, upload-time = "2025-05-17T21:37:26.213Z" }, + { url = "https://files.pythonhosted.org/packages/f9/5c/6657823f4f594f72b5471f1db1ab12e26e890bb2e41897522d134d2a3e81/numpy-2.2.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0811bb762109d9708cca4d0b13c4f67146e3c3b7cf8d34018c722adb2d957c84", size = 20867828, upload-time = "2025-05-17T21:37:56.699Z" }, + { url = "https://files.pythonhosted.org/packages/dc/9e/14520dc3dadf3c803473bd07e9b2bd1b69bc583cb2497b47000fed2fa92f/numpy-2.2.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:287cc3162b6f01463ccd86be154f284d0893d2b3ed7292439ea97eafa8170e0b", size = 14143006, upload-time = "2025-05-17T21:38:18.291Z" }, + { url = "https://files.pythonhosted.org/packages/4f/06/7e96c57d90bebdce9918412087fc22ca9851cceaf5567a45c1f404480e9e/numpy-2.2.6-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:f1372f041402e37e5e633e586f62aa53de2eac8d98cbfb822806ce4bbefcb74d", size = 5076765, upload-time = "2025-05-17T21:38:27.319Z" }, + { url = "https://files.pythonhosted.org/packages/73/ed/63d920c23b4289fdac96ddbdd6132e9427790977d5457cd132f18e76eae0/numpy-2.2.6-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:55a4d33fa519660d69614a9fad433be87e5252f4b03850642f88993f7b2ca566", size = 6617736, upload-time = "2025-05-17T21:38:38.141Z" }, + { url = "https://files.pythonhosted.org/packages/85/c5/e19c8f99d83fd377ec8c7e0cf627a8049746da54afc24ef0a0cb73d5dfb5/numpy-2.2.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f92729c95468a2f4f15e9bb94c432a9229d0d50de67304399627a943201baa2f", size = 14010719, upload-time = "2025-05-17T21:38:58.433Z" }, + { url = "https://files.pythonhosted.org/packages/19/49/4df9123aafa7b539317bf6d342cb6d227e49f7a35b99c287a6109b13dd93/numpy-2.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bc23a79bfabc5d056d106f9befb8d50c31ced2fbc70eedb8155aec74a45798f", size = 16526072, upload-time = "2025-05-17T21:39:22.638Z" }, + { url = "https://files.pythonhosted.org/packages/b2/6c/04b5f47f4f32f7c2b0e7260442a8cbcf8168b0e1a41ff1495da42f42a14f/numpy-2.2.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e3143e4451880bed956e706a3220b4e5cf6172ef05fcc397f6f36a550b1dd868", size = 15503213, upload-time = "2025-05-17T21:39:45.865Z" }, + { url = "https://files.pythonhosted.org/packages/17/0a/5cd92e352c1307640d5b6fec1b2ffb06cd0dabe7d7b8227f97933d378422/numpy-2.2.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4f13750ce79751586ae2eb824ba7e1e8dba64784086c98cdbbcc6a42112ce0d", size = 18316632, upload-time = "2025-05-17T21:40:13.331Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3b/5cba2b1d88760ef86596ad0f3d484b1cbff7c115ae2429678465057c5155/numpy-2.2.6-cp313-cp313-win32.whl", hash = "sha256:5beb72339d9d4fa36522fc63802f469b13cdbe4fdab4a288f0c441b74272ebfd", size = 6244532, upload-time = "2025-05-17T21:43:46.099Z" }, + { url = "https://files.pythonhosted.org/packages/cb/3b/d58c12eafcb298d4e6d0d40216866ab15f59e55d148a5658bb3132311fcf/numpy-2.2.6-cp313-cp313-win_amd64.whl", hash = "sha256:b0544343a702fa80c95ad5d3d608ea3599dd54d4632df855e4c8d24eb6ecfa1c", size = 12610885, upload-time = "2025-05-17T21:44:05.145Z" }, + { url = "https://files.pythonhosted.org/packages/6b/9e/4bf918b818e516322db999ac25d00c75788ddfd2d2ade4fa66f1f38097e1/numpy-2.2.6-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0bca768cd85ae743b2affdc762d617eddf3bcf8724435498a1e80132d04879e6", size = 20963467, upload-time = "2025-05-17T21:40:44Z" }, + { url = "https://files.pythonhosted.org/packages/61/66/d2de6b291507517ff2e438e13ff7b1e2cdbdb7cb40b3ed475377aece69f9/numpy-2.2.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:fc0c5673685c508a142ca65209b4e79ed6740a4ed6b2267dbba90f34b0b3cfda", size = 14225144, upload-time = "2025-05-17T21:41:05.695Z" }, + { url = "https://files.pythonhosted.org/packages/e4/25/480387655407ead912e28ba3a820bc69af9adf13bcbe40b299d454ec011f/numpy-2.2.6-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:5bd4fc3ac8926b3819797a7c0e2631eb889b4118a9898c84f585a54d475b7e40", size = 5200217, upload-time = "2025-05-17T21:41:15.903Z" }, + { url = "https://files.pythonhosted.org/packages/aa/4a/6e313b5108f53dcbf3aca0c0f3e9c92f4c10ce57a0a721851f9785872895/numpy-2.2.6-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:fee4236c876c4e8369388054d02d0e9bb84821feb1a64dd59e137e6511a551f8", size = 6712014, upload-time = "2025-05-17T21:41:27.321Z" }, + { url = "https://files.pythonhosted.org/packages/b7/30/172c2d5c4be71fdf476e9de553443cf8e25feddbe185e0bd88b096915bcc/numpy-2.2.6-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1dda9c7e08dc141e0247a5b8f49cf05984955246a327d4c48bda16821947b2f", size = 14077935, upload-time = "2025-05-17T21:41:49.738Z" }, + { url = "https://files.pythonhosted.org/packages/12/fb/9e743f8d4e4d3c710902cf87af3512082ae3d43b945d5d16563f26ec251d/numpy-2.2.6-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f447e6acb680fd307f40d3da4852208af94afdfab89cf850986c3ca00562f4fa", size = 16600122, upload-time = "2025-05-17T21:42:14.046Z" }, + { url = "https://files.pythonhosted.org/packages/12/75/ee20da0e58d3a66f204f38916757e01e33a9737d0b22373b3eb5a27358f9/numpy-2.2.6-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:389d771b1623ec92636b0786bc4ae56abafad4a4c513d36a55dce14bd9ce8571", size = 15586143, upload-time = "2025-05-17T21:42:37.464Z" }, + { url = "https://files.pythonhosted.org/packages/76/95/bef5b37f29fc5e739947e9ce5179ad402875633308504a52d188302319c8/numpy-2.2.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8e9ace4a37db23421249ed236fdcdd457d671e25146786dfc96835cd951aa7c1", size = 18385260, upload-time = "2025-05-17T21:43:05.189Z" }, + { url = "https://files.pythonhosted.org/packages/09/04/f2f83279d287407cf36a7a8053a5abe7be3622a4363337338f2585e4afda/numpy-2.2.6-cp313-cp313t-win32.whl", hash = "sha256:038613e9fb8c72b0a41f025a7e4c3f0b7a1b5d768ece4796b674c8f3fe13efff", size = 6377225, upload-time = "2025-05-17T21:43:16.254Z" }, + { url = "https://files.pythonhosted.org/packages/67/0e/35082d13c09c02c011cf21570543d202ad929d961c02a147493cb0c2bdf5/numpy-2.2.6-cp313-cp313t-win_amd64.whl", hash = "sha256:6031dd6dfecc0cf9f668681a37648373bddd6421fff6c66ec1624eed0180ee06", size = 12771374, upload-time = "2025-05-17T21:43:35.479Z" }, + { url = "https://files.pythonhosted.org/packages/9e/3b/d94a75f4dbf1ef5d321523ecac21ef23a3cd2ac8b78ae2aac40873590229/numpy-2.2.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0b605b275d7bd0c640cad4e5d30fa701a8d59302e127e5f79138ad62762c3e3d", size = 21040391, upload-time = "2025-05-17T21:44:35.948Z" }, + { url = "https://files.pythonhosted.org/packages/17/f4/09b2fa1b58f0fb4f7c7963a1649c64c4d315752240377ed74d9cd878f7b5/numpy-2.2.6-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:7befc596a7dc9da8a337f79802ee8adb30a552a94f792b9c9d18c840055907db", size = 6786754, upload-time = "2025-05-17T21:44:47.446Z" }, + { url = "https://files.pythonhosted.org/packages/af/30/feba75f143bdc868a1cc3f44ccfa6c4b9ec522b36458e738cd00f67b573f/numpy-2.2.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce47521a4754c8f4593837384bd3424880629f718d87c5d44f8ed763edd63543", size = 16643476, upload-time = "2025-05-17T21:45:11.871Z" }, + { url = "https://files.pythonhosted.org/packages/37/48/ac2a9584402fb6c0cd5b5d1a91dcf176b15760130dd386bbafdbfe3640bf/numpy-2.2.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d042d24c90c41b54fd506da306759e06e568864df8ec17ccc17e9e884634fd00", size = 12812666, upload-time = "2025-05-17T21:45:31.426Z" }, +] + +[[package]] +name = "numpy" +version = "2.4.4" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14' and sys_platform == 'win32'", + "python_full_version >= '3.14' and sys_platform == 'emscripten'", + "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'win32'", + "python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten'", + "python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", +] +sdist = { url = "https://files.pythonhosted.org/packages/d7/9f/b8cef5bffa569759033adda9481211426f12f53299629b410340795c2514/numpy-2.4.4.tar.gz", hash = "sha256:2d390634c5182175533585cc89f3608a4682ccb173cc9bb940b2881c8d6f8fa0", size = 20731587, upload-time = "2026-03-29T13:22:01.298Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/c6/4218570d8c8ecc9704b5157a3348e486e84ef4be0ed3e38218ab473c83d2/numpy-2.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f983334aea213c99992053ede6168500e5f086ce74fbc4acc3f2b00f5762e9db", size = 16976799, upload-time = "2026-03-29T13:18:15.438Z" }, + { url = "https://files.pythonhosted.org/packages/dd/92/b4d922c4a5f5dab9ed44e6153908a5c665b71acf183a83b93b690996e39b/numpy-2.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:72944b19f2324114e9dc86a159787333b77874143efcf89a5167ef83cfee8af0", size = 14971552, upload-time = "2026-03-29T13:18:18.606Z" }, + { url = "https://files.pythonhosted.org/packages/8a/dc/df98c095978fa6ee7b9a9387d1d58cbb3d232d0e69ad169a4ce784bde4fd/numpy-2.4.4-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:86b6f55f5a352b48d7fbfd2dbc3d5b780b2d79f4d3c121f33eb6efb22e9a2015", size = 5476566, upload-time = "2026-03-29T13:18:21.532Z" }, + { url = "https://files.pythonhosted.org/packages/28/34/b3fdcec6e725409223dd27356bdf5a3c2cc2282e428218ecc9cb7acc9763/numpy-2.4.4-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:ba1f4fc670ed79f876f70082eff4f9583c15fb9a4b89d6188412de4d18ae2f40", size = 6806482, upload-time = "2026-03-29T13:18:23.634Z" }, + { url = "https://files.pythonhosted.org/packages/68/62/63417c13aa35d57bee1337c67446761dc25ea6543130cf868eace6e8157b/numpy-2.4.4-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8a87ec22c87be071b6bdbd27920b129b94f2fc964358ce38f3822635a3e2e03d", size = 15973376, upload-time = "2026-03-29T13:18:26.677Z" }, + { url = "https://files.pythonhosted.org/packages/cf/c5/9fcb7e0e69cef59cf10c746b84f7d58b08bc66a6b7d459783c5a4f6101a6/numpy-2.4.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:df3775294accfdd75f32c74ae39fcba920c9a378a2fc18a12b6820aa8c1fb502", size = 16925137, upload-time = "2026-03-29T13:18:30.14Z" }, + { url = "https://files.pythonhosted.org/packages/7e/43/80020edacb3f84b9efdd1591120a4296462c23fd8db0dde1666f6ef66f13/numpy-2.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0d4e437e295f18ec29bc79daf55e8a47a9113df44d66f702f02a293d93a2d6dd", size = 17329414, upload-time = "2026-03-29T13:18:33.733Z" }, + { url = "https://files.pythonhosted.org/packages/fd/06/af0658593b18a5f73532d377188b964f239eb0894e664a6c12f484472f97/numpy-2.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6aa3236c78803afbcb255045fbef97a9e25a1f6c9888357d205ddc42f4d6eba5", size = 18658397, upload-time = "2026-03-29T13:18:37.511Z" }, + { url = "https://files.pythonhosted.org/packages/e6/ce/13a09ed65f5d0ce5c7dd0669250374c6e379910f97af2c08c57b0608eee4/numpy-2.4.4-cp311-cp311-win32.whl", hash = "sha256:30caa73029a225b2d40d9fae193e008e24b2026b7ee1a867b7ee8d96ca1a448e", size = 6239499, upload-time = "2026-03-29T13:18:40.372Z" }, + { url = "https://files.pythonhosted.org/packages/bd/63/05d193dbb4b5eec1eca73822d80da98b511f8328ad4ae3ca4caf0f4db91d/numpy-2.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:6bbe4eb67390b0a0265a2c25458f6b90a409d5d069f1041e6aff1e27e3d9a79e", size = 12614257, upload-time = "2026-03-29T13:18:42.95Z" }, + { url = "https://files.pythonhosted.org/packages/87/c5/8168052f080c26fa984c413305012be54741c9d0d74abd7fbeeccae3889f/numpy-2.4.4-cp311-cp311-win_arm64.whl", hash = "sha256:fcfe2045fd2e8f3cb0ce9d4ba6dba6333b8fa05bb8a4939c908cd43322d14c7e", size = 10486775, upload-time = "2026-03-29T13:18:45.835Z" }, + { url = "https://files.pythonhosted.org/packages/28/05/32396bec30fb2263770ee910142f49c1476d08e8ad41abf8403806b520ce/numpy-2.4.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:15716cfef24d3a9762e3acdf87e27f58dc823d1348f765bbea6bef8c639bfa1b", size = 16689272, upload-time = "2026-03-29T13:18:49.223Z" }, + { url = "https://files.pythonhosted.org/packages/c5/f3/a983d28637bfcd763a9c7aafdb6d5c0ebf3d487d1e1459ffdb57e2f01117/numpy-2.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:23cbfd4c17357c81021f21540da84ee282b9c8fba38a03b7b9d09ba6b951421e", size = 14699573, upload-time = "2026-03-29T13:18:52.629Z" }, + { url = "https://files.pythonhosted.org/packages/9b/fd/e5ecca1e78c05106d98028114f5c00d3eddb41207686b2b7de3e477b0e22/numpy-2.4.4-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:8b3b60bb7cba2c8c81837661c488637eee696f59a877788a396d33150c35d842", size = 5204782, upload-time = "2026-03-29T13:18:55.579Z" }, + { url = "https://files.pythonhosted.org/packages/de/2f/702a4594413c1a8632092beae8aba00f1d67947389369b3777aed783fdca/numpy-2.4.4-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:e4a010c27ff6f210ff4c6ef34394cd61470d01014439b192ec22552ee867f2a8", size = 6552038, upload-time = "2026-03-29T13:18:57.769Z" }, + { url = "https://files.pythonhosted.org/packages/7f/37/eed308a8f56cba4d1fdf467a4fc67ef4ff4bf1c888f5fc980481890104b1/numpy-2.4.4-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f9e75681b59ddaa5e659898085ae0eaea229d054f2ac0c7e563a62205a700121", size = 15670666, upload-time = "2026-03-29T13:19:00.341Z" }, + { url = "https://files.pythonhosted.org/packages/0a/0d/0e3ecece05b7a7e87ab9fb587855548da437a061326fff64a223b6dcb78a/numpy-2.4.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:81f4a14bee47aec54f883e0cad2d73986640c1590eb9bfaaba7ad17394481e6e", size = 16645480, upload-time = "2026-03-29T13:19:03.63Z" }, + { url = "https://files.pythonhosted.org/packages/34/49/f2312c154b82a286758ee2f1743336d50651f8b5195db18cdb63675ff649/numpy-2.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:62d6b0f03b694173f9fcb1fb317f7222fd0b0b103e784c6549f5e53a27718c44", size = 17020036, upload-time = "2026-03-29T13:19:07.428Z" }, + { url = "https://files.pythonhosted.org/packages/7b/e9/736d17bd77f1b0ec4f9901aaec129c00d59f5d84d5e79bba540ef12c2330/numpy-2.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fbc356aae7adf9e6336d336b9c8111d390a05df88f1805573ebb0807bd06fd1d", size = 18368643, upload-time = "2026-03-29T13:19:10.775Z" }, + { url = "https://files.pythonhosted.org/packages/63/f6/d417977c5f519b17c8a5c3bc9e8304b0908b0e21136fe43bf628a1343914/numpy-2.4.4-cp312-cp312-win32.whl", hash = "sha256:0d35aea54ad1d420c812bfa0385c71cd7cc5bcf7c65fed95fc2cd02fe8c79827", size = 5961117, upload-time = "2026-03-29T13:19:13.464Z" }, + { url = "https://files.pythonhosted.org/packages/2d/5b/e1deebf88ff431b01b7406ca3583ab2bbb90972bbe1c568732e49c844f7e/numpy-2.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:b5f0362dc928a6ecd9db58868fca5e48485205e3855957bdedea308f8672ea4a", size = 12320584, upload-time = "2026-03-29T13:19:16.155Z" }, + { url = "https://files.pythonhosted.org/packages/58/89/e4e856ac82a68c3ed64486a544977d0e7bdd18b8da75b78a577ca31c4395/numpy-2.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:846300f379b5b12cc769334464656bc882e0735d27d9726568bc932fdc49d5ec", size = 10221450, upload-time = "2026-03-29T13:19:18.994Z" }, + { url = "https://files.pythonhosted.org/packages/14/1d/d0a583ce4fefcc3308806a749a536c201ed6b5ad6e1322e227ee4848979d/numpy-2.4.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:08f2e31ed5e6f04b118e49821397f12767934cfdd12a1ce86a058f91e004ee50", size = 16684933, upload-time = "2026-03-29T13:19:22.47Z" }, + { url = "https://files.pythonhosted.org/packages/c1/62/2b7a48fbb745d344742c0277f01286dead15f3f68e4f359fbfcf7b48f70f/numpy-2.4.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e823b8b6edc81e747526f70f71a9c0a07ac4e7ad13020aa736bb7c9d67196115", size = 14694532, upload-time = "2026-03-29T13:19:25.581Z" }, + { url = "https://files.pythonhosted.org/packages/e5/87/499737bfba066b4a3bebff24a8f1c5b2dee410b209bc6668c9be692580f0/numpy-2.4.4-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:4a19d9dba1a76618dd86b164d608566f393f8ec6ac7c44f0cc879011c45e65af", size = 5199661, upload-time = "2026-03-29T13:19:28.31Z" }, + { url = "https://files.pythonhosted.org/packages/cd/da/464d551604320d1491bc345efed99b4b7034143a85787aab78d5691d5a0e/numpy-2.4.4-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:d2a8490669bfe99a233298348acc2d824d496dee0e66e31b66a6022c2ad74a5c", size = 6547539, upload-time = "2026-03-29T13:19:30.97Z" }, + { url = "https://files.pythonhosted.org/packages/7d/90/8d23e3b0dafd024bf31bdec225b3bb5c2dbfa6912f8a53b8659f21216cbf/numpy-2.4.4-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:45dbed2ab436a9e826e302fcdcbe9133f9b0006e5af7168afb8963a6520da103", size = 15668806, upload-time = "2026-03-29T13:19:33.887Z" }, + { url = "https://files.pythonhosted.org/packages/d1/73/a9d864e42a01896bb5974475438f16086be9ba1f0d19d0bb7a07427c4a8b/numpy-2.4.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c901b15172510173f5cb310eae652908340f8dede90fff9e3bf6c0d8dfd92f83", size = 16632682, upload-time = "2026-03-29T13:19:37.336Z" }, + { url = "https://files.pythonhosted.org/packages/34/fb/14570d65c3bde4e202a031210475ae9cde9b7686a2e7dc97ee67d2833b35/numpy-2.4.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:99d838547ace2c4aace6c4f76e879ddfe02bb58a80c1549928477862b7a6d6ed", size = 17019810, upload-time = "2026-03-29T13:19:40.963Z" }, + { url = "https://files.pythonhosted.org/packages/8a/77/2ba9d87081fd41f6d640c83f26fb7351e536b7ce6dd9061b6af5904e8e46/numpy-2.4.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0aec54fd785890ecca25a6003fd9a5aed47ad607bbac5cd64f836ad8666f4959", size = 18357394, upload-time = "2026-03-29T13:19:44.859Z" }, + { url = "https://files.pythonhosted.org/packages/a2/23/52666c9a41708b0853fa3b1a12c90da38c507a3074883823126d4e9d5b30/numpy-2.4.4-cp313-cp313-win32.whl", hash = "sha256:07077278157d02f65c43b1b26a3886bce886f95d20aabd11f87932750dfb14ed", size = 5959556, upload-time = "2026-03-29T13:19:47.661Z" }, + { url = "https://files.pythonhosted.org/packages/57/fb/48649b4971cde70d817cf97a2a2fdc0b4d8308569f1dd2f2611959d2e0cf/numpy-2.4.4-cp313-cp313-win_amd64.whl", hash = "sha256:5c70f1cc1c4efbe316a572e2d8b9b9cc44e89b95f79ca3331553fbb63716e2bf", size = 12317311, upload-time = "2026-03-29T13:19:50.67Z" }, + { url = "https://files.pythonhosted.org/packages/ba/d8/11490cddd564eb4de97b4579ef6bfe6a736cc07e94c1598590ae25415e01/numpy-2.4.4-cp313-cp313-win_arm64.whl", hash = "sha256:ef4059d6e5152fa1a39f888e344c73fdc926e1b2dd58c771d67b0acfbf2aa67d", size = 10222060, upload-time = "2026-03-29T13:19:54.229Z" }, + { url = "https://files.pythonhosted.org/packages/99/5d/dab4339177a905aad3e2221c915b35202f1ec30d750dd2e5e9d9a72b804b/numpy-2.4.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4bbc7f303d125971f60ec0aaad5e12c62d0d2c925f0ab1273debd0e4ba37aba5", size = 14822302, upload-time = "2026-03-29T13:19:57.585Z" }, + { url = "https://files.pythonhosted.org/packages/eb/e4/0564a65e7d3d97562ed6f9b0fd0fb0a6f559ee444092f105938b50043876/numpy-2.4.4-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:4d6d57903571f86180eb98f8f0c839fa9ebbfb031356d87f1361be91e433f5b7", size = 5327407, upload-time = "2026-03-29T13:20:00.601Z" }, + { url = "https://files.pythonhosted.org/packages/29/8d/35a3a6ce5ad371afa58b4700f1c820f8f279948cca32524e0a695b0ded83/numpy-2.4.4-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:4636de7fd195197b7535f231b5de9e4b36d2c440b6e566d2e4e4746e6af0ca93", size = 6647631, upload-time = "2026-03-29T13:20:02.855Z" }, + { url = "https://files.pythonhosted.org/packages/f4/da/477731acbd5a58a946c736edfdabb2ac5b34c3d08d1ba1a7b437fa0884df/numpy-2.4.4-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ad2e2ef14e0b04e544ea2fa0a36463f847f113d314aa02e5b402fdf910ef309e", size = 15727691, upload-time = "2026-03-29T13:20:06.004Z" }, + { url = "https://files.pythonhosted.org/packages/e6/db/338535d9b152beabeb511579598418ba0212ce77cf9718edd70262cc4370/numpy-2.4.4-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a285b3b96f951841799528cd1f4f01cd70e7e0204b4abebac9463eecfcf2a40", size = 16681241, upload-time = "2026-03-29T13:20:09.417Z" }, + { url = "https://files.pythonhosted.org/packages/e2/a9/ad248e8f58beb7a0219b413c9c7d8151c5d285f7f946c3e26695bdbbe2df/numpy-2.4.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:f8474c4241bc18b750be2abea9d7a9ec84f46ef861dbacf86a4f6e043401f79e", size = 17085767, upload-time = "2026-03-29T13:20:13.126Z" }, + { url = "https://files.pythonhosted.org/packages/b5/1a/3b88ccd3694681356f70da841630e4725a7264d6a885c8d442a697e1146b/numpy-2.4.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4e874c976154687c1f71715b034739b45c7711bec81db01914770373d125e392", size = 18403169, upload-time = "2026-03-29T13:20:17.096Z" }, + { url = "https://files.pythonhosted.org/packages/c2/c9/fcfd5d0639222c6eac7f304829b04892ef51c96a75d479214d77e3ce6e33/numpy-2.4.4-cp313-cp313t-win32.whl", hash = "sha256:9c585a1790d5436a5374bac930dad6ed244c046ed91b2b2a3634eb2971d21008", size = 6083477, upload-time = "2026-03-29T13:20:20.195Z" }, + { url = "https://files.pythonhosted.org/packages/d5/e3/3938a61d1c538aaec8ed6fd6323f57b0c2d2d2219512434c5c878db76553/numpy-2.4.4-cp313-cp313t-win_amd64.whl", hash = "sha256:93e15038125dc1e5345d9b5b68aa7f996ec33b98118d18c6ca0d0b7d6198b7e8", size = 12457487, upload-time = "2026-03-29T13:20:22.946Z" }, + { url = "https://files.pythonhosted.org/packages/97/6a/7e345032cc60501721ef94e0e30b60f6b0bd601f9174ebd36389a2b86d40/numpy-2.4.4-cp313-cp313t-win_arm64.whl", hash = "sha256:0dfd3f9d3adbe2920b68b5cd3d51444e13a10792ec7154cd0a2f6e74d4ab3233", size = 10292002, upload-time = "2026-03-29T13:20:25.909Z" }, + { url = "https://files.pythonhosted.org/packages/6e/06/c54062f85f673dd5c04cbe2f14c3acb8c8b95e3384869bb8cc9bff8cb9df/numpy-2.4.4-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:f169b9a863d34f5d11b8698ead99febeaa17a13ca044961aa8e2662a6c7766a0", size = 16684353, upload-time = "2026-03-29T13:20:29.504Z" }, + { url = "https://files.pythonhosted.org/packages/4c/39/8a320264a84404c74cc7e79715de85d6130fa07a0898f67fb5cd5bd79908/numpy-2.4.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:2483e4584a1cb3092da4470b38866634bafb223cbcd551ee047633fd2584599a", size = 14704914, upload-time = "2026-03-29T13:20:33.547Z" }, + { url = "https://files.pythonhosted.org/packages/91/fb/287076b2614e1d1044235f50f03748f31fa287e3dbe6abeb35cdfa351eca/numpy-2.4.4-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:2d19e6e2095506d1736b7d80595e0f252d76b89f5e715c35e06e937679ea7d7a", size = 5210005, upload-time = "2026-03-29T13:20:36.45Z" }, + { url = "https://files.pythonhosted.org/packages/63/eb/fcc338595309910de6ecabfcef2419a9ce24399680bfb149421fa2df1280/numpy-2.4.4-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:6a246d5914aa1c820c9443ddcee9c02bec3e203b0c080349533fae17727dfd1b", size = 6544974, upload-time = "2026-03-29T13:20:39.014Z" }, + { url = "https://files.pythonhosted.org/packages/44/5d/e7e9044032a716cdfaa3fba27a8e874bf1c5f1912a1ddd4ed071bf8a14a6/numpy-2.4.4-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:989824e9faf85f96ec9c7761cd8d29c531ad857bfa1daa930cba85baaecf1a9a", size = 15684591, upload-time = "2026-03-29T13:20:42.146Z" }, + { url = "https://files.pythonhosted.org/packages/98/7c/21252050676612625449b4807d6b695b9ce8a7c9e1c197ee6216c8a65c7c/numpy-2.4.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:27a8d92cd10f1382a67d7cf4db7ce18341b66438bdd9f691d7b0e48d104c2a9d", size = 16637700, upload-time = "2026-03-29T13:20:46.204Z" }, + { url = "https://files.pythonhosted.org/packages/b1/29/56d2bbef9465db24ef25393383d761a1af4f446a1df9b8cded4fe3a5a5d7/numpy-2.4.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e44319a2953c738205bf3354537979eaa3998ed673395b964c1176083dd46252", size = 17035781, upload-time = "2026-03-29T13:20:50.242Z" }, + { url = "https://files.pythonhosted.org/packages/e3/2b/a35a6d7589d21f44cea7d0a98de5ddcbb3d421b2622a5c96b1edf18707c3/numpy-2.4.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:e892aff75639bbef0d2a2cfd55535510df26ff92f63c92cd84ef8d4ba5a5557f", size = 18362959, upload-time = "2026-03-29T13:20:54.019Z" }, + { url = "https://files.pythonhosted.org/packages/64/c9/d52ec581f2390e0f5f85cbfd80fb83d965fc15e9f0e1aec2195faa142cde/numpy-2.4.4-cp314-cp314-win32.whl", hash = "sha256:1378871da56ca8943c2ba674530924bb8ca40cd228358a3b5f302ad60cf875fc", size = 6008768, upload-time = "2026-03-29T13:20:56.912Z" }, + { url = "https://files.pythonhosted.org/packages/fa/22/4cc31a62a6c7b74a8730e31a4274c5dc80e005751e277a2ce38e675e4923/numpy-2.4.4-cp314-cp314-win_amd64.whl", hash = "sha256:715d1c092715954784bc79e1174fc2a90093dc4dc84ea15eb14dad8abdcdeb74", size = 12449181, upload-time = "2026-03-29T13:20:59.548Z" }, + { url = "https://files.pythonhosted.org/packages/70/2e/14cda6f4d8e396c612d1bf97f22958e92148801d7e4f110cabebdc0eef4b/numpy-2.4.4-cp314-cp314-win_arm64.whl", hash = "sha256:2c194dd721e54ecad9ad387c1d35e63dce5c4450c6dc7dd5611283dda239aabb", size = 10496035, upload-time = "2026-03-29T13:21:02.524Z" }, + { url = "https://files.pythonhosted.org/packages/b1/e8/8fed8c8d848d7ecea092dc3469643f9d10bc3a134a815a3b033da1d2039b/numpy-2.4.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2aa0613a5177c264ff5921051a5719d20095ea586ca88cc802c5c218d1c67d3e", size = 14824958, upload-time = "2026-03-29T13:21:05.671Z" }, + { url = "https://files.pythonhosted.org/packages/05/1a/d8007a5138c179c2bf33ef44503e83d70434d2642877ee8fbb230e7c0548/numpy-2.4.4-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:42c16925aa5a02362f986765f9ebabf20de75cdefdca827d14315c568dcab113", size = 5330020, upload-time = "2026-03-29T13:21:08.635Z" }, + { url = "https://files.pythonhosted.org/packages/99/64/ffb99ac6ae93faf117bcbd5c7ba48a7f45364a33e8e458545d3633615dda/numpy-2.4.4-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:874f200b2a981c647340f841730fc3a2b54c9d940566a3c4149099591e2c4c3d", size = 6650758, upload-time = "2026-03-29T13:21:10.949Z" }, + { url = "https://files.pythonhosted.org/packages/6e/6e/795cc078b78a384052e73b2f6281ff7a700e9bf53bcce2ee579d4f6dd879/numpy-2.4.4-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c9b39d38a9bd2ae1becd7eac1303d031c5c110ad31f2b319c6e7d98b135c934d", size = 15729948, upload-time = "2026-03-29T13:21:14.047Z" }, + { url = "https://files.pythonhosted.org/packages/5f/86/2acbda8cc2af5f3d7bfc791192863b9e3e19674da7b5e533fded124d1299/numpy-2.4.4-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b268594bccac7d7cf5844c7732e3f20c50921d94e36d7ec9b79e9857694b1b2f", size = 16679325, upload-time = "2026-03-29T13:21:17.561Z" }, + { url = "https://files.pythonhosted.org/packages/bc/59/cafd83018f4aa55e0ac6fa92aa066c0a1877b77a615ceff1711c260ffae8/numpy-2.4.4-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:ac6b31e35612a26483e20750126d30d0941f949426974cace8e6b5c58a3657b0", size = 17084883, upload-time = "2026-03-29T13:21:21.106Z" }, + { url = "https://files.pythonhosted.org/packages/f0/85/a42548db84e65ece46ab2caea3d3f78b416a47af387fcbb47ec28e660dc2/numpy-2.4.4-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:8e3ed142f2728df44263aaf5fb1f5b0b99f4070c553a0d7f033be65338329150", size = 18403474, upload-time = "2026-03-29T13:21:24.828Z" }, + { url = "https://files.pythonhosted.org/packages/ed/ad/483d9e262f4b831000062e5d8a45e342166ec8aaa1195264982bca267e62/numpy-2.4.4-cp314-cp314t-win32.whl", hash = "sha256:dddbbd259598d7240b18c9d87c56a9d2fb3b02fe266f49a7c101532e78c1d871", size = 6155500, upload-time = "2026-03-29T13:21:28.205Z" }, + { url = "https://files.pythonhosted.org/packages/c7/03/2fc4e14c7bd4ff2964b74ba90ecb8552540b6315f201df70f137faa5c589/numpy-2.4.4-cp314-cp314t-win_amd64.whl", hash = "sha256:a7164afb23be6e37ad90b2f10426149fd75aee07ca55653d2aa41e66c4ef697e", size = 12637755, upload-time = "2026-03-29T13:21:31.107Z" }, + { url = "https://files.pythonhosted.org/packages/58/78/548fb8e07b1a341746bfbecb32f2c268470f45fa028aacdbd10d9bc73aab/numpy-2.4.4-cp314-cp314t-win_arm64.whl", hash = "sha256:ba203255017337d39f89bdd58417f03c4426f12beed0440cfd933cb15f8669c7", size = 10566643, upload-time = "2026-03-29T13:21:34.339Z" }, + { url = "https://files.pythonhosted.org/packages/6b/33/8fae8f964a4f63ed528264ddf25d2b683d0b663e3cba26961eb838a7c1bd/numpy-2.4.4-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:58c8b5929fcb8287cbd6f0a3fae19c6e03a5c48402ae792962ac465224a629a4", size = 16854491, upload-time = "2026-03-29T13:21:38.03Z" }, + { url = "https://files.pythonhosted.org/packages/bc/d0/1aabee441380b981cf8cdda3ae7a46aa827d1b5a8cce84d14598bc94d6d9/numpy-2.4.4-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:eea7ac5d2dce4189771cedb559c738a71512768210dc4e4753b107a2048b3d0e", size = 14895830, upload-time = "2026-03-29T13:21:41.509Z" }, + { url = "https://files.pythonhosted.org/packages/a5/b8/aafb0d1065416894fccf4df6b49ef22b8db045187949545bced89c034b8e/numpy-2.4.4-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:51fc224f7ca4d92656d5a5eb315f12eb5fe2c97a66249aa7b5f562528a3be38c", size = 5400927, upload-time = "2026-03-29T13:21:44.747Z" }, + { url = "https://files.pythonhosted.org/packages/d6/77/063baa20b08b431038c7f9ff5435540c7b7265c78cf56012a483019ca72d/numpy-2.4.4-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:28a650663f7314afc3e6ec620f44f333c386aad9f6fc472030865dc0ebb26ee3", size = 6715557, upload-time = "2026-03-29T13:21:47.406Z" }, + { url = "https://files.pythonhosted.org/packages/c7/a8/379542d45a14f149444c5c4c4e7714707239ce9cc1de8c2803958889da14/numpy-2.4.4-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:19710a9ca9992d7174e9c52f643d4272dcd1558c5f7af7f6f8190f633bd651a7", size = 15804253, upload-time = "2026-03-29T13:21:50.753Z" }, + { url = "https://files.pythonhosted.org/packages/a2/c8/f0a45426d6d21e7ea3310a15cf90c43a14d9232c31a837702dba437f3373/numpy-2.4.4-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9b2aec6af35c113b05695ebb5749a787acd63cafc83086a05771d1e1cd1e555f", size = 16753552, upload-time = "2026-03-29T13:21:54.344Z" }, + { url = "https://files.pythonhosted.org/packages/04/74/f4c001f4714c3ad9ce037e18cf2b9c64871a84951eaa0baf683a9ca9301c/numpy-2.4.4-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f2cf083b324a467e1ab358c105f6cad5ea950f50524668a80c486ff1db24e119", size = 12509075, upload-time = "2026-03-29T13:21:57.644Z" }, +] + +[[package]] +name = "nvidia-cublas" +version = "13.1.0.3" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/a5/fce49e2ae977e0ccc084e5adafceb4f0ac0c8333cb6863501618a7277f67/nvidia_cublas-13.1.0.3-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:c86fc7f7ae36d7528288c5d88098edcb7b02c633d262e7ddbb86b0ad91be5df2", size = 542851226, upload-time = "2025-10-09T08:59:04.818Z" }, + { url = "https://files.pythonhosted.org/packages/e7/44/423ac00af4dd95a5aeb27207e2c0d9b7118702149bf4704c3ddb55bb7429/nvidia_cublas-13.1.0.3-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:ee8722c1f0145ab246bccb9e452153b5e0515fd094c3678df50b2a0888b8b171", size = 423133236, upload-time = "2025-10-09T08:59:32.536Z" }, +] + +[[package]] +name = "nvidia-cuda-cupti" +version = "13.0.85" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/2a/80353b103fc20ce05ef51e928daed4b6015db4aaa9162ed0997090fe2250/nvidia_cuda_cupti-13.0.85-py3-none-manylinux_2_25_aarch64.whl", hash = "sha256:796bd679890ee55fb14a94629b698b6db54bcfd833d391d5e94017dd9d7d3151", size = 10310827, upload-time = "2025-09-04T08:26:42.012Z" }, + { url = "https://files.pythonhosted.org/packages/33/6d/737d164b4837a9bbd202f5ae3078975f0525a55730fe871d8ed4e3b952b0/nvidia_cuda_cupti-13.0.85-py3-none-manylinux_2_25_x86_64.whl", hash = "sha256:4eb01c08e859bf924d222250d2e8f8b8ff6d3db4721288cf35d14252a4d933c8", size = 10715597, upload-time = "2025-09-04T08:26:51.312Z" }, +] + +[[package]] +name = "nvidia-cuda-nvrtc" +version = "13.0.88" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c3/68/483a78f5e8f31b08fb1bb671559968c0ca3a065ac7acabfc7cee55214fd6/nvidia_cuda_nvrtc-13.0.88-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:ad9b6d2ead2435f11cbb6868809d2adeeee302e9bb94bcf0539c7a40d80e8575", size = 90215200, upload-time = "2025-09-04T08:28:44.204Z" }, + { url = "https://files.pythonhosted.org/packages/b7/dc/6bb80850e0b7edd6588d560758f17e0550893a1feaf436807d64d2da040f/nvidia_cuda_nvrtc-13.0.88-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d27f20a0ca67a4bb34268a5e951033496c5b74870b868bacd046b1b8e0c3267b", size = 43015449, upload-time = "2025-09-04T08:28:20.239Z" }, +] + +[[package]] +name = "nvidia-cuda-runtime" +version = "13.0.96" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/87/4f/17d7b9b8e285199c58ce28e31b5c5bbaa4d8271af06a89b6405258245de2/nvidia_cuda_runtime-13.0.96-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ef9bcbe90493a2b9d810e43d249adb3d02e98dd30200d86607d8d02687c43f55", size = 2261060, upload-time = "2025-10-09T08:55:15.78Z" }, + { url = "https://files.pythonhosted.org/packages/2e/24/d1558f3b68b1d26e706813b1d10aa1d785e4698c425af8db8edc3dced472/nvidia_cuda_runtime-13.0.96-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7f82250d7782aa23b6cfe765ecc7db554bd3c2870c43f3d1821f1d18aebf0548", size = 2243632, upload-time = "2025-10-09T08:55:36.117Z" }, +] + +[[package]] +name = "nvidia-cudnn-cu13" +version = "9.20.0.48" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cublas", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'emscripten' and sys_platform != 'win32')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/c5/83384d846b2fd17c44bd499b36c75a45ed4f095fbbb2252294e89cea5c5c/nvidia_cudnn_cu13-9.20.0.48-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:e31454ae00094b0c55319d9d15b6fa2fc50a9e1c0f5c8c80fb75258234e731e1", size = 444574296, upload-time = "2026-03-09T19:28:27.751Z" }, + { url = "https://files.pythonhosted.org/packages/6e/5e/edb9c0ae051602c3ccaffe424256463636d639e27d7f302dde9975ef9e7a/nvidia_cudnn_cu13-9.20.0.48-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:0c45dd8eeb50b603f07995b1b300c62ffe6a1980482b82b3bcf94a4ca9d49304", size = 366173588, upload-time = "2026-03-09T19:29:34.474Z" }, +] + +[[package]] +name = "nvidia-cufft" +version = "12.0.0.61" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-nvjitlink", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'emscripten' and sys_platform != 'win32')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/ae/f417a75c0259e85c1d2f83ca4e960289a5f814ed0cea74d18c353d3e989d/nvidia_cufft-12.0.0.61-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2708c852ef8cd89d1d2068bdbece0aa188813a0c934db3779b9b1faa8442e5f5", size = 214053554, upload-time = "2025-09-04T08:31:38.196Z" }, + { url = "https://files.pythonhosted.org/packages/a8/2f/7b57e29836ea8714f81e9898409196f47d772d5ddedddf1592eadb8ab743/nvidia_cufft-12.0.0.61-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6c44f692dce8fd5ffd3e3df134b6cdb9c2f72d99cf40b62c32dde45eea9ddad3", size = 214085489, upload-time = "2025-09-04T08:31:56.044Z" }, +] + +[[package]] +name = "nvidia-cufile" +version = "1.15.1.6" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/70/4f193de89a48b71714e74602ee14d04e4019ad36a5a9f20c425776e72cd6/nvidia_cufile-1.15.1.6-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:08a3ecefae5a01c7f5117351c64f17c7c62efa5fffdbe24fc7d298da19cd0b44", size = 1223672, upload-time = "2025-09-04T08:32:22.779Z" }, + { url = "https://files.pythonhosted.org/packages/ab/73/cc4a14c9813a8a0d509417cf5f4bdaba76e924d58beb9864f5a7baceefbf/nvidia_cufile-1.15.1.6-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:bdc0deedc61f548bddf7733bdc216456c2fdb101d020e1ab4b88d232d5e2f6d1", size = 1136992, upload-time = "2025-09-04T08:32:14.119Z" }, +] + +[[package]] +name = "nvidia-curand" +version = "10.4.0.35" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/72/7c2ae24fb6b63a32e6ae5d241cc65263ea18d08802aaae087d9f013335a2/nvidia_curand-10.4.0.35-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:133df5a7509c3e292aaa2b477afd0194f06ce4ea24d714d616ff36439cee349a", size = 61962106, upload-time = "2025-08-04T10:21:41.128Z" }, + { url = "https://files.pythonhosted.org/packages/a5/9f/be0a41ca4a4917abf5cb9ae0daff1a6060cc5de950aec0396de9f3b52bc5/nvidia_curand-10.4.0.35-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:1aee33a5da6e1db083fe2b90082def8915f30f3248d5896bcec36a579d941bfc", size = 59544258, upload-time = "2025-08-04T10:22:03.992Z" }, +] + +[[package]] +name = "nvidia-cusolver" +version = "12.0.4.66" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cublas", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'emscripten' and sys_platform != 'win32')" }, + { name = "nvidia-cusparse", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'emscripten' and sys_platform != 'win32')" }, + { name = "nvidia-nvjitlink", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'emscripten' and sys_platform != 'win32')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/c3/b30c9e935fc01e3da443ec0116ed1b2a009bb867f5324d3f2d7e533e776b/nvidia_cusolver-12.0.4.66-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:02c2457eaa9e39de20f880f4bd8820e6a1cfb9f9a34f820eb12a155aa5bc92d2", size = 223467760, upload-time = "2025-09-04T08:33:04.222Z" }, + { url = "https://files.pythonhosted.org/packages/5f/67/cba3777620cdacb99102da4042883709c41c709f4b6323c10781a9c3aa34/nvidia_cusolver-12.0.4.66-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:0a759da5dea5c0ea10fd307de75cdeb59e7ea4fcb8add0924859b944babf1112", size = 200941980, upload-time = "2025-09-04T08:33:22.767Z" }, +] + +[[package]] +name = "nvidia-cusparse" +version = "12.6.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-nvjitlink", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'emscripten' and sys_platform != 'win32')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/94/5c26f33738ae35276672f12615a64bd008ed5be6d1ebcb23579285d960a9/nvidia_cusparse-12.6.3.3-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:80bcc4662f23f1054ee334a15c72b8940402975e0eab63178fc7e670aa59472c", size = 162155568, upload-time = "2025-09-04T08:33:42.864Z" }, + { url = "https://files.pythonhosted.org/packages/fa/18/623c77619c31d62efd55302939756966f3ecc8d724a14dab2b75f1508850/nvidia_cusparse-12.6.3.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2b3c89c88d01ee0e477cb7f82ef60a11a4bcd57b6b87c33f789350b59759360b", size = 145942937, upload-time = "2025-09-04T08:33:58.029Z" }, +] + +[[package]] +name = "nvidia-cusparselt-cu13" +version = "0.8.1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/e1/cdc1797eadf82d3a9a575a19b33fdc871a97edbec42c00b5b5e914f4aff4/nvidia_cusparselt_cu13-0.8.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:4dca476c50bf4780d46cd0bfbd82e2bc10a08e4fef7950917ce8d7578d22a23f", size = 221051344, upload-time = "2025-09-05T18:49:51.289Z" }, + { url = "https://files.pythonhosted.org/packages/34/7d/2661f2fb3ac4302f3a246f5fc030213ac60c1fe0bce84f9783dbd831dbb7/nvidia_cusparselt_cu13-0.8.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:786ce87568c303fadb5afcc7102d454cd3040d75f6f8626f5db460d1871f4dd0", size = 170148586, upload-time = "2025-09-05T18:50:50.248Z" }, +] + +[[package]] +name = "nvidia-nccl-cu13" +version = "2.29.7" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/0d/daf50d44177ee0cbc7ff0a0c91eb5ff676c82be42f9a970bc7597f440c3a/nvidia_nccl_cu13-2.29.7-py3-none-manylinux_2_18_aarch64.whl", hash = "sha256:674a12383e3c38a1bcccae7d4f3633b37852230b6047883cb2f4c2d1b36d9bf5", size = 206014712, upload-time = "2026-03-03T05:34:20.843Z" }, + { url = "https://files.pythonhosted.org/packages/67/f4/58e4e91b6919367c7aafb8e36fce9aad1a3047e536bf7e2fd560927d3a4c/nvidia_nccl_cu13-2.29.7-py3-none-manylinux_2_18_x86_64.whl", hash = "sha256:edd81538446786ec3b73972543e53bb43bcaf0bfc8ef76cb679fcc390ffe136d", size = 205976000, upload-time = "2026-03-03T05:36:24.472Z" }, +] + +[[package]] +name = "nvidia-nvjitlink" +version = "13.0.88" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/7a/123e033aaff487c77107195fa5a2b8686795ca537935a24efae476c41f05/nvidia_nvjitlink-13.0.88-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:13a74f429e23b921c1109976abefacc69835f2f433ebd323d3946e11d804e47b", size = 40713933, upload-time = "2025-09-04T08:35:43.553Z" }, + { url = "https://files.pythonhosted.org/packages/ab/2c/93c5250e64df4f894f1cbb397c6fd71f79813f9fd79d7cd61de3f97b3c2d/nvidia_nvjitlink-13.0.88-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e931536ccc7d467a98ba1d8b89ff7fa7f1fa3b13f2b0069118cd7f47bff07d0c", size = 38768748, upload-time = "2025-09-04T08:35:20.008Z" }, +] + +[[package]] +name = "nvidia-nvshmem-cu13" +version = "3.4.5" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dc/0f/05cc9c720236dcd2db9c1ab97fff629e96821be2e63103569da0c9b72f19/nvidia_nvshmem_cu13-3.4.5-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6dc2a197f38e5d0376ad52cd1a2a3617d3cdc150fd5966f4aee9bcebb1d68fe9", size = 60215947, upload-time = "2025-09-06T00:32:20.022Z" }, + { url = "https://files.pythonhosted.org/packages/3c/35/a9bf80a609e74e3b000fef598933235c908fcefcef9026042b8e6dfde2a9/nvidia_nvshmem_cu13-3.4.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:290f0a2ee94c9f3687a02502f3b9299a9f9fe826e6d0287ee18482e78d495b80", size = 60412546, upload-time = "2025-09-06T00:32:41.564Z" }, +] + +[[package]] +name = "nvidia-nvtx" +version = "13.0.85" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/f3/d86c845465a2723ad7e1e5c36dcd75ddb82898b3f53be47ebd429fb2fa5d/nvidia_nvtx-13.0.85-py3-none-manylinux1_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:4936d1d6780fbe68db454f5e72a42ff64d1fd6397df9f363ae786930fd5c1cd4", size = 148047, upload-time = "2025-09-04T08:29:01.761Z" }, + { url = "https://files.pythonhosted.org/packages/a8/64/3708a90d1ebe202ffdeb7185f878a3c84d15c2b2c31858da2ce0583e2def/nvidia_nvtx-13.0.85-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cb7780edb6b14107373c835bf8b72e7a178bac7367e23da7acb108f973f157a6", size = 148878, upload-time = "2025-09-04T08:28:53.627Z" }, +] + +[[package]] +name = "omegaconf" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "antlr4-python3-runtime" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/09/48/6388f1bb9da707110532cb70ec4d2822858ddfb44f1cdf1233c20a80ea4b/omegaconf-2.3.0.tar.gz", hash = "sha256:d5d4b6d29955cc50ad50c46dc269bcd92c6e00f5f90d23ab5fee7bfca4ba4cc7", size = 3298120, upload-time = "2022-12-08T20:59:22.753Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e3/94/1843518e420fa3ed6919835845df698c7e27e183cb997394e4a670973a65/omegaconf-2.3.0-py3-none-any.whl", hash = "sha256:7b4df175cdb08ba400f45cae3bdcae7ba8365db4d165fc65fd04b050ab63b46b", size = 79500, upload-time = "2022-12-08T20:59:19.686Z" }, +] + +[[package]] +name = "opencv-python" +version = "4.13.0.92" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/6f/5a28fef4c4a382be06afe3938c64cc168223016fa520c5abaf37e8862aa5/opencv_python-4.13.0.92-cp37-abi3-macosx_13_0_arm64.whl", hash = "sha256:caf60c071ec391ba51ed00a4a920f996d0b64e3e46068aac1f646b5de0326a19", size = 46247052, upload-time = "2026-02-05T07:01:25.046Z" }, + { url = "https://files.pythonhosted.org/packages/08/ac/6c98c44c650b8114a0fb901691351cfb3956d502e8e9b5cd27f4ee7fbf2f/opencv_python-4.13.0.92-cp37-abi3-macosx_14_0_x86_64.whl", hash = "sha256:5868a8c028a0b37561579bfb8ac1875babdc69546d236249fff296a8c010ccf9", size = 32568781, upload-time = "2026-02-05T07:01:41.379Z" }, + { url = "https://files.pythonhosted.org/packages/3e/51/82fed528b45173bf629fa44effb76dff8bc9f4eeaee759038362dfa60237/opencv_python-4.13.0.92-cp37-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0bc2596e68f972ca452d80f444bc404e08807d021fbba40df26b61b18e01838a", size = 47685527, upload-time = "2026-02-05T06:59:11.24Z" }, + { url = "https://files.pythonhosted.org/packages/db/07/90b34a8e2cf9c50fe8ed25cac9011cde0676b4d9d9c973751ac7616223a2/opencv_python-4.13.0.92-cp37-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:402033cddf9d294693094de5ef532339f14ce821da3ad7df7c9f6e8316da32cf", size = 70460872, upload-time = "2026-02-05T06:59:19.162Z" }, + { url = "https://files.pythonhosted.org/packages/02/6d/7a9cc719b3eaf4377b9c2e3edeb7ed3a81de41f96421510c0a169ca3cfd4/opencv_python-4.13.0.92-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:bccaabf9eb7f897ca61880ce2869dcd9b25b72129c28478e7f2a5e8dee945616", size = 46708208, upload-time = "2026-02-05T06:59:15.419Z" }, + { url = "https://files.pythonhosted.org/packages/fd/55/b3b49a1b97aabcfbbd6c7326df9cb0b6fa0c0aefa8e89d500939e04aa229/opencv_python-4.13.0.92-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:620d602b8f7d8b8dab5f4b99c6eb353e78d3fb8b0f53db1bd258bb1aa001c1d5", size = 72927042, upload-time = "2026-02-05T06:59:23.389Z" }, + { url = "https://files.pythonhosted.org/packages/fb/17/de5458312bcb07ddf434d7bfcb24bb52c59635ad58c6e7c751b48949b009/opencv_python-4.13.0.92-cp37-abi3-win32.whl", hash = "sha256:372fe164a3148ac1ca51e5f3ad0541a4a276452273f503441d718fab9c5e5f59", size = 30932638, upload-time = "2026-02-05T07:02:14.98Z" }, + { url = "https://files.pythonhosted.org/packages/e9/a5/1be1516390333ff9be3a9cb648c9f33df79d5096e5884b5df71a588af463/opencv_python-4.13.0.92-cp37-abi3-win_amd64.whl", hash = "sha256:423d934c9fafb91aad38edf26efb46da91ffbc05f3f59c4b0c72e699720706f5", size = 40212062, upload-time = "2026-02-05T07:02:12.724Z" }, +] + +[[package]] +name = "opencv-python-headless" +version = "4.13.0.92" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/42/2310883be3b8826ac58c3f2787b9358a2d46923d61f88fedf930bc59c60c/opencv_python_headless-4.13.0.92-cp37-abi3-macosx_13_0_arm64.whl", hash = "sha256:1a7d040ac656c11b8c38677cc8cccdc149f98535089dbe5b081e80a4e5903209", size = 46247192, upload-time = "2026-02-05T07:01:35.187Z" }, + { url = "https://files.pythonhosted.org/packages/2d/1e/6f9e38005a6f7f22af785df42a43139d0e20f169eb5787ce8be37ee7fcc9/opencv_python_headless-4.13.0.92-cp37-abi3-macosx_14_0_x86_64.whl", hash = "sha256:3e0a6f0a37994ec6ce5f59e936be21d5d6384a4556f2d2da9c2f9c5dc948394c", size = 32568914, upload-time = "2026-02-05T07:01:51.989Z" }, + { url = "https://files.pythonhosted.org/packages/21/76/9417a6aef9def70e467a5bf560579f816148a4c658b7d525581b356eda9e/opencv_python_headless-4.13.0.92-cp37-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5c8cfc8e87ed452b5cecb9419473ee5560a989859fe1d10d1ce11ae87b09a2cb", size = 33703709, upload-time = "2026-02-05T10:24:46.469Z" }, + { url = "https://files.pythonhosted.org/packages/92/ce/bd17ff5772938267fd49716e94ca24f616ff4cb1ff4c6be13085108037be/opencv_python_headless-4.13.0.92-cp37-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0525a3d2c0b46c611e2130b5fdebc94cf404845d8fa64d2f3a3b679572a5bd22", size = 56016764, upload-time = "2026-02-05T10:26:48.904Z" }, + { url = "https://files.pythonhosted.org/packages/8f/b4/b7bcbf7c874665825a8c8e1097e93ea25d1f1d210a3e20d4451d01da30aa/opencv_python_headless-4.13.0.92-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:eb60e36b237b1ebd40a912da5384b348df8ed534f6f644d8e0b4f103e272ba7d", size = 35010236, upload-time = "2026-02-05T10:28:11.031Z" }, + { url = "https://files.pythonhosted.org/packages/4b/33/b5db29a6c00eb8f50708110d8d453747ca125c8b805bc437b289dbdcc057/opencv_python_headless-4.13.0.92-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:0bd48544f77c68b2941392fcdf9bcd2b9cdf00e98cb8c29b2455d194763cf99e", size = 60391106, upload-time = "2026-02-05T10:30:14.236Z" }, + { url = "https://files.pythonhosted.org/packages/fb/c3/52cfea47cd33e53e8c0fbd6e7c800b457245c1fda7d61660b4ffe9596a7f/opencv_python_headless-4.13.0.92-cp37-abi3-win32.whl", hash = "sha256:a7cf08e5b191f4ebb530791acc0825a7986e0d0dee2a3c491184bd8599848a4b", size = 30812232, upload-time = "2026-02-05T07:02:29.594Z" }, + { url = "https://files.pythonhosted.org/packages/4a/90/b338326131ccb2aaa3c2c85d00f41822c0050139a4bfe723cfd95455bd2d/opencv_python_headless-4.13.0.92-cp37-abi3-win_amd64.whl", hash = "sha256:77a82fe35ddcec0f62c15f2ba8a12ecc2ed4207c17b0902c7a3151ae29f37fb6", size = 40070414, upload-time = "2026-02-05T07:02:26.448Z" }, +] + +[[package]] +name = "opendataloader-pdf" +version = "0.0.0" +source = { editable = "." } + +[package.optional-dependencies] +hybrid = [ + { name = "docling", extra = ["easyocr"] }, + { name = "fastapi" }, + { name = "python-multipart" }, + { name = "uvicorn" }, +] + +[package.dev-dependencies] +dev = [ + { name = "httpx" }, + { name = "pytest" }, + { name = "pytest-asyncio" }, +] + +[package.metadata] +requires-dist = [ + { name = "docling", extras = ["easyocr"], marker = "extra == 'hybrid'", specifier = ">=2.91.0" }, + { name = "fastapi", marker = "extra == 'hybrid'", specifier = ">=0.136.1" }, + { name = "python-multipart", marker = "extra == 'hybrid'", specifier = ">=0.0.28" }, + { name = "uvicorn", marker = "extra == 'hybrid'", specifier = ">=0.46.0" }, +] +provides-extras = ["hybrid"] + +[package.metadata.requires-dev] +dev = [ + { name = "httpx", specifier = ">=0.28.1" }, + { name = "pytest", specifier = ">=9.0.3" }, + { name = "pytest-asyncio", specifier = ">=1.3.0" }, +] + +[[package]] +name = "openpyxl" +version = "3.1.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "et-xmlfile" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/f9/88d94a75de065ea32619465d2f77b29a0469500e99012523b91cc4141cd1/openpyxl-3.1.5.tar.gz", hash = "sha256:cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050", size = 186464, upload-time = "2024-06-28T14:03:44.161Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/da/977ded879c29cbd04de313843e76868e6e13408a94ed6b987245dc7c8506/openpyxl-3.1.5-py2.py3-none-any.whl", hash = "sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2", size = 250910, upload-time = "2024-06-28T14:03:41.161Z" }, +] + +[[package]] +name = "packaging" +version = "26.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/df/de/0d2b39fb4af88a0258f3bac87dfcbb48e73fbdea4a2ed0e2213f9a4c2f9a/packaging-26.1.tar.gz", hash = "sha256:f042152b681c4bfac5cae2742a55e103d27ab2ec0f3d88037136b6bfe7c9c5de", size = 215519, upload-time = "2026-04-14T21:12:49.362Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7a/c2/920ef838e2f0028c8262f16101ec09ebd5969864e5a64c4c05fad0617c56/packaging-26.1-py3-none-any.whl", hash = "sha256:5d9c0669c6285e491e0ced2eee587eaf67b670d94a19e94e3984a481aba6802f", size = 95831, upload-time = "2026-04-14T21:12:47.56Z" }, +] + +[[package]] +name = "pandas" +version = "2.3.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "python-dateutil", marker = "python_full_version < '3.11'" }, + { name = "pytz", marker = "python_full_version < '3.11'" }, + { name = "tzdata", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/33/01/d40b85317f86cf08d853a4f495195c73815fdf205eef3993821720274518/pandas-2.3.3.tar.gz", hash = "sha256:e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b", size = 4495223, upload-time = "2025-09-29T23:34:51.853Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/f7/f425a00df4fcc22b292c6895c6831c0c8ae1d9fac1e024d16f98a9ce8749/pandas-2.3.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:376c6446ae31770764215a6c937f72d917f214b43560603cd60da6408f183b6c", size = 11555763, upload-time = "2025-09-29T23:16:53.287Z" }, + { url = "https://files.pythonhosted.org/packages/13/4f/66d99628ff8ce7857aca52fed8f0066ce209f96be2fede6cef9f84e8d04f/pandas-2.3.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e19d192383eab2f4ceb30b412b22ea30690c9e618f78870357ae1d682912015a", size = 10801217, upload-time = "2025-09-29T23:17:04.522Z" }, + { url = "https://files.pythonhosted.org/packages/1d/03/3fc4a529a7710f890a239cc496fc6d50ad4a0995657dccc1d64695adb9f4/pandas-2.3.3-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5caf26f64126b6c7aec964f74266f435afef1c1b13da3b0636c7518a1fa3e2b1", size = 12148791, upload-time = "2025-09-29T23:17:18.444Z" }, + { url = "https://files.pythonhosted.org/packages/40/a8/4dac1f8f8235e5d25b9955d02ff6f29396191d4e665d71122c3722ca83c5/pandas-2.3.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dd7478f1463441ae4ca7308a70e90b33470fa593429f9d4c578dd00d1fa78838", size = 12769373, upload-time = "2025-09-29T23:17:35.846Z" }, + { url = "https://files.pythonhosted.org/packages/df/91/82cc5169b6b25440a7fc0ef3a694582418d875c8e3ebf796a6d6470aa578/pandas-2.3.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4793891684806ae50d1288c9bae9330293ab4e083ccd1c5e383c34549c6e4250", size = 13200444, upload-time = "2025-09-29T23:17:49.341Z" }, + { url = "https://files.pythonhosted.org/packages/10/ae/89b3283800ab58f7af2952704078555fa60c807fff764395bb57ea0b0dbd/pandas-2.3.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:28083c648d9a99a5dd035ec125d42439c6c1c525098c58af0fc38dd1a7a1b3d4", size = 13858459, upload-time = "2025-09-29T23:18:03.722Z" }, + { url = "https://files.pythonhosted.org/packages/85/72/530900610650f54a35a19476eca5104f38555afccda1aa11a92ee14cb21d/pandas-2.3.3-cp310-cp310-win_amd64.whl", hash = "sha256:503cf027cf9940d2ceaa1a93cfb5f8c8c7e6e90720a2850378f0b3f3b1e06826", size = 11346086, upload-time = "2025-09-29T23:18:18.505Z" }, + { url = "https://files.pythonhosted.org/packages/c1/fa/7ac648108144a095b4fb6aa3de1954689f7af60a14cf25583f4960ecb878/pandas-2.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:602b8615ebcc4a0c1751e71840428ddebeb142ec02c786e8ad6b1ce3c8dec523", size = 11578790, upload-time = "2025-09-29T23:18:30.065Z" }, + { url = "https://files.pythonhosted.org/packages/9b/35/74442388c6cf008882d4d4bdfc4109be87e9b8b7ccd097ad1e7f006e2e95/pandas-2.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8fe25fc7b623b0ef6b5009149627e34d2a4657e880948ec3c840e9402e5c1b45", size = 10833831, upload-time = "2025-09-29T23:38:56.071Z" }, + { url = "https://files.pythonhosted.org/packages/fe/e4/de154cbfeee13383ad58d23017da99390b91d73f8c11856f2095e813201b/pandas-2.3.3-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b468d3dad6ff947df92dcb32ede5b7bd41a9b3cceef0a30ed925f6d01fb8fa66", size = 12199267, upload-time = "2025-09-29T23:18:41.627Z" }, + { url = "https://files.pythonhosted.org/packages/bf/c9/63f8d545568d9ab91476b1818b4741f521646cbdd151c6efebf40d6de6f7/pandas-2.3.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b98560e98cb334799c0b07ca7967ac361a47326e9b4e5a7dfb5ab2b1c9d35a1b", size = 12789281, upload-time = "2025-09-29T23:18:56.834Z" }, + { url = "https://files.pythonhosted.org/packages/f2/00/a5ac8c7a0e67fd1a6059e40aa08fa1c52cc00709077d2300e210c3ce0322/pandas-2.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37b5848ba49824e5c30bedb9c830ab9b7751fd049bc7914533e01c65f79791", size = 13240453, upload-time = "2025-09-29T23:19:09.247Z" }, + { url = "https://files.pythonhosted.org/packages/27/4d/5c23a5bc7bd209231618dd9e606ce076272c9bc4f12023a70e03a86b4067/pandas-2.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:db4301b2d1f926ae677a751eb2bd0e8c5f5319c9cb3f88b0becbbb0b07b34151", size = 13890361, upload-time = "2025-09-29T23:19:25.342Z" }, + { url = "https://files.pythonhosted.org/packages/8e/59/712db1d7040520de7a4965df15b774348980e6df45c129b8c64d0dbe74ef/pandas-2.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:f086f6fe114e19d92014a1966f43a3e62285109afe874f067f5abbdcbb10e59c", size = 11348702, upload-time = "2025-09-29T23:19:38.296Z" }, + { url = "https://files.pythonhosted.org/packages/9c/fb/231d89e8637c808b997d172b18e9d4a4bc7bf31296196c260526055d1ea0/pandas-2.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d21f6d74eb1725c2efaa71a2bfc661a0689579b58e9c0ca58a739ff0b002b53", size = 11597846, upload-time = "2025-09-29T23:19:48.856Z" }, + { url = "https://files.pythonhosted.org/packages/5c/bd/bf8064d9cfa214294356c2d6702b716d3cf3bb24be59287a6a21e24cae6b/pandas-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3fd2f887589c7aa868e02632612ba39acb0b8948faf5cc58f0850e165bd46f35", size = 10729618, upload-time = "2025-09-29T23:39:08.659Z" }, + { url = "https://files.pythonhosted.org/packages/57/56/cf2dbe1a3f5271370669475ead12ce77c61726ffd19a35546e31aa8edf4e/pandas-2.3.3-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ecaf1e12bdc03c86ad4a7ea848d66c685cb6851d807a26aa245ca3d2017a1908", size = 11737212, upload-time = "2025-09-29T23:19:59.765Z" }, + { url = "https://files.pythonhosted.org/packages/e5/63/cd7d615331b328e287d8233ba9fdf191a9c2d11b6af0c7a59cfcec23de68/pandas-2.3.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b3d11d2fda7eb164ef27ffc14b4fcab16a80e1ce67e9f57e19ec0afaf715ba89", size = 12362693, upload-time = "2025-09-29T23:20:14.098Z" }, + { url = "https://files.pythonhosted.org/packages/a6/de/8b1895b107277d52f2b42d3a6806e69cfef0d5cf1d0ba343470b9d8e0a04/pandas-2.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a68e15f780eddf2b07d242e17a04aa187a7ee12b40b930bfdd78070556550e98", size = 12771002, upload-time = "2025-09-29T23:20:26.76Z" }, + { url = "https://files.pythonhosted.org/packages/87/21/84072af3187a677c5893b170ba2c8fbe450a6ff911234916da889b698220/pandas-2.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:371a4ab48e950033bcf52b6527eccb564f52dc826c02afd9a1bc0ab731bba084", size = 13450971, upload-time = "2025-09-29T23:20:41.344Z" }, + { url = "https://files.pythonhosted.org/packages/86/41/585a168330ff063014880a80d744219dbf1dd7a1c706e75ab3425a987384/pandas-2.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:a16dcec078a01eeef8ee61bf64074b4e524a2a3f4b3be9326420cabe59c4778b", size = 10992722, upload-time = "2025-09-29T23:20:54.139Z" }, + { url = "https://files.pythonhosted.org/packages/cd/4b/18b035ee18f97c1040d94debd8f2e737000ad70ccc8f5513f4eefad75f4b/pandas-2.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:56851a737e3470de7fa88e6131f41281ed440d29a9268dcbf0002da5ac366713", size = 11544671, upload-time = "2025-09-29T23:21:05.024Z" }, + { url = "https://files.pythonhosted.org/packages/31/94/72fac03573102779920099bcac1c3b05975c2cb5f01eac609faf34bed1ca/pandas-2.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdcd9d1167f4885211e401b3036c0c8d9e274eee67ea8d0758a256d60704cfe8", size = 10680807, upload-time = "2025-09-29T23:21:15.979Z" }, + { url = "https://files.pythonhosted.org/packages/16/87/9472cf4a487d848476865321de18cc8c920b8cab98453ab79dbbc98db63a/pandas-2.3.3-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e32e7cc9af0f1cc15548288a51a3b681cc2a219faa838e995f7dc53dbab1062d", size = 11709872, upload-time = "2025-09-29T23:21:27.165Z" }, + { url = "https://files.pythonhosted.org/packages/15/07/284f757f63f8a8d69ed4472bfd85122bd086e637bf4ed09de572d575a693/pandas-2.3.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:318d77e0e42a628c04dc56bcef4b40de67918f7041c2b061af1da41dcff670ac", size = 12306371, upload-time = "2025-09-29T23:21:40.532Z" }, + { url = "https://files.pythonhosted.org/packages/33/81/a3afc88fca4aa925804a27d2676d22dcd2031c2ebe08aabd0ae55b9ff282/pandas-2.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4e0a175408804d566144e170d0476b15d78458795bb18f1304fb94160cabf40c", size = 12765333, upload-time = "2025-09-29T23:21:55.77Z" }, + { url = "https://files.pythonhosted.org/packages/8d/0f/b4d4ae743a83742f1153464cf1a8ecfafc3ac59722a0b5c8602310cb7158/pandas-2.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:93c2d9ab0fc11822b5eece72ec9587e172f63cff87c00b062f6e37448ced4493", size = 13418120, upload-time = "2025-09-29T23:22:10.109Z" }, + { url = "https://files.pythonhosted.org/packages/4f/c7/e54682c96a895d0c808453269e0b5928a07a127a15704fedb643e9b0a4c8/pandas-2.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:f8bfc0e12dc78f777f323f55c58649591b2cd0c43534e8355c51d3fede5f4dee", size = 10993991, upload-time = "2025-09-29T23:25:04.889Z" }, + { url = "https://files.pythonhosted.org/packages/f9/ca/3f8d4f49740799189e1395812f3bf23b5e8fc7c190827d55a610da72ce55/pandas-2.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:75ea25f9529fdec2d2e93a42c523962261e567d250b0013b16210e1d40d7c2e5", size = 12048227, upload-time = "2025-09-29T23:22:24.343Z" }, + { url = "https://files.pythonhosted.org/packages/0e/5a/f43efec3e8c0cc92c4663ccad372dbdff72b60bdb56b2749f04aa1d07d7e/pandas-2.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:74ecdf1d301e812db96a465a525952f4dde225fdb6d8e5a521d47e1f42041e21", size = 11411056, upload-time = "2025-09-29T23:22:37.762Z" }, + { url = "https://files.pythonhosted.org/packages/46/b1/85331edfc591208c9d1a63a06baa67b21d332e63b7a591a5ba42a10bb507/pandas-2.3.3-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6435cb949cb34ec11cc9860246ccb2fdc9ecd742c12d3304989017d53f039a78", size = 11645189, upload-time = "2025-09-29T23:22:51.688Z" }, + { url = "https://files.pythonhosted.org/packages/44/23/78d645adc35d94d1ac4f2a3c4112ab6f5b8999f4898b8cdf01252f8df4a9/pandas-2.3.3-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:900f47d8f20860de523a1ac881c4c36d65efcb2eb850e6948140fa781736e110", size = 12121912, upload-time = "2025-09-29T23:23:05.042Z" }, + { url = "https://files.pythonhosted.org/packages/53/da/d10013df5e6aaef6b425aa0c32e1fc1f3e431e4bcabd420517dceadce354/pandas-2.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a45c765238e2ed7d7c608fc5bc4a6f88b642f2f01e70c0c23d2224dd21829d86", size = 12712160, upload-time = "2025-09-29T23:23:28.57Z" }, + { url = "https://files.pythonhosted.org/packages/bd/17/e756653095a083d8a37cbd816cb87148debcfcd920129b25f99dd8d04271/pandas-2.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c4fc4c21971a1a9f4bdb4c73978c7f7256caa3e62b323f70d6cb80db583350bc", size = 13199233, upload-time = "2025-09-29T23:24:24.876Z" }, + { url = "https://files.pythonhosted.org/packages/04/fd/74903979833db8390b73b3a8a7d30d146d710bd32703724dd9083950386f/pandas-2.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:ee15f284898e7b246df8087fc82b87b01686f98ee67d85a17b7ab44143a3a9a0", size = 11540635, upload-time = "2025-09-29T23:25:52.486Z" }, + { url = "https://files.pythonhosted.org/packages/21/00/266d6b357ad5e6d3ad55093a7e8efc7dd245f5a842b584db9f30b0f0a287/pandas-2.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1611aedd912e1ff81ff41c745822980c49ce4a7907537be8692c8dbc31924593", size = 10759079, upload-time = "2025-09-29T23:26:33.204Z" }, + { url = "https://files.pythonhosted.org/packages/ca/05/d01ef80a7a3a12b2f8bbf16daba1e17c98a2f039cbc8e2f77a2c5a63d382/pandas-2.3.3-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6d2cefc361461662ac48810cb14365a365ce864afe85ef1f447ff5a1e99ea81c", size = 11814049, upload-time = "2025-09-29T23:27:15.384Z" }, + { url = "https://files.pythonhosted.org/packages/15/b2/0e62f78c0c5ba7e3d2c5945a82456f4fac76c480940f805e0b97fcbc2f65/pandas-2.3.3-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ee67acbbf05014ea6c763beb097e03cd629961c8a632075eeb34247120abcb4b", size = 12332638, upload-time = "2025-09-29T23:27:51.625Z" }, + { url = "https://files.pythonhosted.org/packages/c5/33/dd70400631b62b9b29c3c93d2feee1d0964dc2bae2e5ad7a6c73a7f25325/pandas-2.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c46467899aaa4da076d5abc11084634e2d197e9460643dd455ac3db5856b24d6", size = 12886834, upload-time = "2025-09-29T23:28:21.289Z" }, + { url = "https://files.pythonhosted.org/packages/d3/18/b5d48f55821228d0d2692b34fd5034bb185e854bdb592e9c640f6290e012/pandas-2.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6253c72c6a1d990a410bc7de641d34053364ef8bcd3126f7e7450125887dffe3", size = 13409925, upload-time = "2025-09-29T23:28:58.261Z" }, + { url = "https://files.pythonhosted.org/packages/a6/3d/124ac75fcd0ecc09b8fdccb0246ef65e35b012030defb0e0eba2cbbbe948/pandas-2.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:1b07204a219b3b7350abaae088f451860223a52cfb8a6c53358e7948735158e5", size = 11109071, upload-time = "2025-09-29T23:32:27.484Z" }, + { url = "https://files.pythonhosted.org/packages/89/9c/0e21c895c38a157e0faa1fb64587a9226d6dd46452cac4532d80c3c4a244/pandas-2.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2462b1a365b6109d275250baaae7b760fd25c726aaca0054649286bcfbb3e8ec", size = 12048504, upload-time = "2025-09-29T23:29:31.47Z" }, + { url = "https://files.pythonhosted.org/packages/d7/82/b69a1c95df796858777b68fbe6a81d37443a33319761d7c652ce77797475/pandas-2.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0242fe9a49aa8b4d78a4fa03acb397a58833ef6199e9aa40a95f027bb3a1b6e7", size = 11410702, upload-time = "2025-09-29T23:29:54.591Z" }, + { url = "https://files.pythonhosted.org/packages/f9/88/702bde3ba0a94b8c73a0181e05144b10f13f29ebfc2150c3a79062a8195d/pandas-2.3.3-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a21d830e78df0a515db2b3d2f5570610f5e6bd2e27749770e8bb7b524b89b450", size = 11634535, upload-time = "2025-09-29T23:30:21.003Z" }, + { url = "https://files.pythonhosted.org/packages/a4/1e/1bac1a839d12e6a82ec6cb40cda2edde64a2013a66963293696bbf31fbbb/pandas-2.3.3-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2e3ebdb170b5ef78f19bfb71b0dc5dc58775032361fa188e814959b74d726dd5", size = 12121582, upload-time = "2025-09-29T23:30:43.391Z" }, + { url = "https://files.pythonhosted.org/packages/44/91/483de934193e12a3b1d6ae7c8645d083ff88dec75f46e827562f1e4b4da6/pandas-2.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:d051c0e065b94b7a3cea50eb1ec32e912cd96dba41647eb24104b6c6c14c5788", size = 12699963, upload-time = "2025-09-29T23:31:10.009Z" }, + { url = "https://files.pythonhosted.org/packages/70/44/5191d2e4026f86a2a109053e194d3ba7a31a2d10a9c2348368c63ed4e85a/pandas-2.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:3869faf4bd07b3b66a9f462417d0ca3a9df29a9f6abd5d0d0dbab15dac7abe87", size = 13202175, upload-time = "2025-09-29T23:31:59.173Z" }, +] + +[[package]] +name = "pandas" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14' and sys_platform == 'win32'", + "python_full_version >= '3.14' and sys_platform == 'emscripten'", + "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'win32'", + "python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten'", + "python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", +] +dependencies = [ + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "python-dateutil", marker = "python_full_version >= '3.11'" }, + { name = "tzdata", marker = "(python_full_version >= '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.11' and sys_platform == 'win32')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/da/99/b342345300f13440fe9fe385c3c481e2d9a595ee3bab4d3219247ac94e9a/pandas-3.0.2.tar.gz", hash = "sha256:f4753e73e34c8d83221ba58f232433fca2748be8b18dbca02d242ed153945043", size = 4645855, upload-time = "2026-03-31T06:48:30.816Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/97/35/6411db530c618e0e0005187e35aa02ce60ae4c4c4d206964a2f978217c27/pandas-3.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a727a73cbdba2f7458dc82449e2315899d5140b449015d822f515749a46cbbe0", size = 10326926, upload-time = "2026-03-31T06:46:08.29Z" }, + { url = "https://files.pythonhosted.org/packages/c4/d3/b7da1d5d7dbdc5ef52ed7debd2b484313b832982266905315dad5a0bf0b1/pandas-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dbbd4aa20ca51e63b53bbde6a0fa4254b1aaabb74d2f542df7a7959feb1d760c", size = 9926987, upload-time = "2026-03-31T06:46:11.724Z" }, + { url = "https://files.pythonhosted.org/packages/52/77/9b1c2d6070b5dbe239a7bc889e21bfa58720793fb902d1e070695d87c6d0/pandas-3.0.2-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:339dda302bd8369dedeae979cb750e484d549b563c3f54f3922cb8ff4978c5eb", size = 10757067, upload-time = "2026-03-31T06:46:14.903Z" }, + { url = "https://files.pythonhosted.org/packages/20/17/ec40d981705654853726e7ac9aea9ddbb4a5d9cf54d8472222f4f3de06c2/pandas-3.0.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:61c2fd96d72b983a9891b2598f286befd4ad262161a609c92dc1652544b46b76", size = 11258787, upload-time = "2026-03-31T06:46:17.683Z" }, + { url = "https://files.pythonhosted.org/packages/90/e3/3f1126d43d3702ca8773871a81c9f15122a1f412342cc56284ffda5b1f70/pandas-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c934008c733b8bbea273ea308b73b3156f0181e5b72960790b09c18a2794fe1e", size = 11771616, upload-time = "2026-03-31T06:46:20.532Z" }, + { url = "https://files.pythonhosted.org/packages/2e/cf/0f4e268e1f5062e44a6bda9f925806721cd4c95c2b808a4c82ebe914f96b/pandas-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:60a80bb4feacbef5e1447a3f82c33209c8b7e07f28d805cfd1fb951e5cb443aa", size = 12337623, upload-time = "2026-03-31T06:46:23.754Z" }, + { url = "https://files.pythonhosted.org/packages/44/a0/97a6339859d4acb2536efb24feb6708e82f7d33b2ed7e036f2983fcced82/pandas-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:ed72cb3f45190874eb579c64fa92d9df74e98fd63e2be7f62bce5ace0ade61df", size = 9897372, upload-time = "2026-03-31T06:46:26.703Z" }, + { url = "https://files.pythonhosted.org/packages/8f/eb/781516b808a99ddf288143cec46b342b3016c3414d137da1fdc3290d8860/pandas-3.0.2-cp311-cp311-win_arm64.whl", hash = "sha256:f12b1a9e332c01e09510586f8ca9b108fd631fd656af82e452d7315ef6df5f9f", size = 9154922, upload-time = "2026-03-31T06:46:30.284Z" }, + { url = "https://files.pythonhosted.org/packages/f3/b0/c20bd4d6d3f736e6bd6b55794e9cd0a617b858eaad27c8f410ea05d953b7/pandas-3.0.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:232a70ebb568c0c4d2db4584f338c1577d81e3af63292208d615907b698a0f18", size = 10347921, upload-time = "2026-03-31T06:46:33.36Z" }, + { url = "https://files.pythonhosted.org/packages/35/d0/4831af68ce30cc2d03c697bea8450e3225a835ef497d0d70f31b8cdde965/pandas-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:970762605cff1ca0d3f71ed4f3a769ea8f85fc8e6348f6e110b8fea7e6eb5a14", size = 9888127, upload-time = "2026-03-31T06:46:36.253Z" }, + { url = "https://files.pythonhosted.org/packages/61/a9/16ea9346e1fc4a96e2896242d9bc674764fb9049b0044c0132502f7a771e/pandas-3.0.2-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:aff4e6f4d722e0652707d7bcb190c445fe58428500c6d16005b02401764b1b3d", size = 10399577, upload-time = "2026-03-31T06:46:39.224Z" }, + { url = "https://files.pythonhosted.org/packages/c4/a8/3a61a721472959ab0ce865ef05d10b0d6bfe27ce8801c99f33d4fa996e65/pandas-3.0.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ef8b27695c3d3dc78403c9a7d5e59a62d5464a7e1123b4e0042763f7104dc74f", size = 10880030, upload-time = "2026-03-31T06:46:42.412Z" }, + { url = "https://files.pythonhosted.org/packages/da/65/7225c0ea4d6ce9cb2160a7fb7f39804871049f016e74782e5dade4d14109/pandas-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f8d68083e49e16b84734eb1a4dcae4259a75c90fb6e2251ab9a00b61120c06ab", size = 11409468, upload-time = "2026-03-31T06:46:45.2Z" }, + { url = "https://files.pythonhosted.org/packages/fa/5b/46e7c76032639f2132359b5cf4c785dd8cf9aea5ea64699eac752f02b9db/pandas-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:32cc41f310ebd4a296d93515fcac312216adfedb1894e879303987b8f1e2b97d", size = 11936381, upload-time = "2026-03-31T06:46:48.293Z" }, + { url = "https://files.pythonhosted.org/packages/7b/8b/721a9cff6fa6a91b162eb51019c6243b82b3226c71bb6c8ef4a9bd65cbc6/pandas-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:a4785e1d6547d8427c5208b748ae2efb64659a21bd82bf440d4262d02bfa02a4", size = 9744993, upload-time = "2026-03-31T06:46:51.488Z" }, + { url = "https://files.pythonhosted.org/packages/d5/18/7f0bd34ae27b28159aa80f2a6799f47fda34f7fb938a76e20c7b7fe3b200/pandas-3.0.2-cp312-cp312-win_arm64.whl", hash = "sha256:08504503f7101300107ecdc8df73658e4347586db5cfdadabc1592e9d7e7a0fd", size = 9056118, upload-time = "2026-03-31T06:46:54.548Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ca/3e639a1ea6fcd0617ca4e8ca45f62a74de33a56ae6cd552735470b22c8d3/pandas-3.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b5918ba197c951dec132b0c5929a00c0bf05d5942f590d3c10a807f6e15a57d3", size = 10321105, upload-time = "2026-03-31T06:46:57.327Z" }, + { url = "https://files.pythonhosted.org/packages/0b/77/dbc82ff2fb0e63c6564356682bf201edff0ba16c98630d21a1fb312a8182/pandas-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d606a041c89c0a474a4702d532ab7e73a14fe35c8d427b972a625c8e46373668", size = 9864088, upload-time = "2026-03-31T06:46:59.935Z" }, + { url = "https://files.pythonhosted.org/packages/5c/2b/341f1b04bbca2e17e13cd3f08c215b70ef2c60c5356ef1e8c6857449edc7/pandas-3.0.2-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:710246ba0616e86891b58ab95f2495143bb2bc83ab6b06747c74216f583a6ac9", size = 10369066, upload-time = "2026-03-31T06:47:02.792Z" }, + { url = "https://files.pythonhosted.org/packages/12/c5/cbb1ffefb20a93d3f0e1fdcda699fb84976210d411b008f97f48bf6ce27e/pandas-3.0.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5d3cfe227c725b1f3dff4278b43d8c784656a42a9325b63af6b1492a8232209e", size = 10876780, upload-time = "2026-03-31T06:47:06.205Z" }, + { url = "https://files.pythonhosted.org/packages/98/fe/2249ae5e0a69bd0ddf17353d0a5d26611d70970111f5b3600cdc8be883e7/pandas-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c3b723df9087a9a9a840e263ebd9f88b64a12075d1bf2ea401a5a42f254f084d", size = 11375181, upload-time = "2026-03-31T06:47:09.383Z" }, + { url = "https://files.pythonhosted.org/packages/de/64/77a38b09e70b6464883b8d7584ab543e748e42c1b5d337a2ee088e0df741/pandas-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a3096110bf9eac0070b7208465f2740e2d8a670d5cb6530b5bb884eca495fd39", size = 11928899, upload-time = "2026-03-31T06:47:12.686Z" }, + { url = "https://files.pythonhosted.org/packages/5e/52/42855bf626868413f761addd574acc6195880ae247a5346477a4361c3acb/pandas-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:07a10f5c36512eead51bc578eb3354ad17578b22c013d89a796ab5eee90cd991", size = 9746574, upload-time = "2026-03-31T06:47:15.64Z" }, + { url = "https://files.pythonhosted.org/packages/88/39/21304ae06a25e8bf9fc820d69b29b2c495b2ae580d1e143146c309941760/pandas-3.0.2-cp313-cp313-win_arm64.whl", hash = "sha256:5fdbfa05931071aba28b408e59226186b01eb5e92bea2ab78b65863ca3228d84", size = 9047156, upload-time = "2026-03-31T06:47:18.595Z" }, + { url = "https://files.pythonhosted.org/packages/72/20/7defa8b27d4f330a903bb68eea33be07d839c5ea6bdda54174efcec0e1d2/pandas-3.0.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:dbc20dea3b9e27d0e66d74c42b2d0c1bed9c2ffe92adea33633e3bedeb5ac235", size = 10756238, upload-time = "2026-03-31T06:47:22.012Z" }, + { url = "https://files.pythonhosted.org/packages/e9/95/49433c14862c636afc0e9b2db83ff16b3ad92959364e52b2955e44c8e94c/pandas-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b75c347eff42497452116ce05ef461822d97ce5b9ff8df6edacb8076092c855d", size = 10408520, upload-time = "2026-03-31T06:47:25.197Z" }, + { url = "https://files.pythonhosted.org/packages/3b/f8/462ad2b5881d6b8ec8e5f7ed2ea1893faa02290d13870a1600fe72ad8efc/pandas-3.0.2-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d1478075142e83a5571782ad007fb201ed074bdeac7ebcc8890c71442e96adf7", size = 10324154, upload-time = "2026-03-31T06:47:28.097Z" }, + { url = "https://files.pythonhosted.org/packages/0a/65/d1e69b649cbcddda23ad6e4c40ef935340f6f652a006e5cbc3555ac8adb3/pandas-3.0.2-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5880314e69e763d4c8b27937090de570f1fb8d027059a7ada3f7f8e98bdcb677", size = 10714449, upload-time = "2026-03-31T06:47:30.85Z" }, + { url = "https://files.pythonhosted.org/packages/47/a4/85b59bc65b8190ea3689882db6cdf32a5003c0ccd5a586c30fdcc3ffc4fc/pandas-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b5329e26898896f06035241a626d7c335daa479b9bbc82be7c2742d048e41172", size = 11338475, upload-time = "2026-03-31T06:47:34.026Z" }, + { url = "https://files.pythonhosted.org/packages/1e/c4/bc6966c6e38e5d9478b935272d124d80a589511ed1612a5d21d36f664c68/pandas-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:81526c4afd31971f8b62671442a4b2b51e0aa9acc3819c9f0f12a28b6fcf85f1", size = 11786568, upload-time = "2026-03-31T06:47:36.941Z" }, + { url = "https://files.pythonhosted.org/packages/e8/74/09298ca9740beed1d3504e073d67e128aa07e5ca5ca2824b0c674c0b8676/pandas-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:7cadd7e9a44ec13b621aec60f9150e744cfc7a3dd32924a7e2f45edff31823b0", size = 10488652, upload-time = "2026-03-31T06:47:40.612Z" }, + { url = "https://files.pythonhosted.org/packages/bb/40/c6ea527147c73b24fc15c891c3fcffe9c019793119c5742b8784a062c7db/pandas-3.0.2-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:db0dbfd2a6cdf3770aa60464d50333d8f3d9165b2f2671bcc299b72de5a6677b", size = 10326084, upload-time = "2026-03-31T06:47:43.834Z" }, + { url = "https://files.pythonhosted.org/packages/95/25/bdb9326c3b5455f8d4d3549fce7abcf967259de146fe2cf7a82368141948/pandas-3.0.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0555c5882688a39317179ab4a0ed41d3ebc8812ab14c69364bbee8fb7a3f6288", size = 9914146, upload-time = "2026-03-31T06:47:46.67Z" }, + { url = "https://files.pythonhosted.org/packages/8d/77/3a227ff3337aa376c60d288e1d61c5d097131d0ac71f954d90a8f369e422/pandas-3.0.2-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:01f31a546acd5574ef77fe199bc90b55527c225c20ccda6601cf6b0fd5ed597c", size = 10444081, upload-time = "2026-03-31T06:47:49.681Z" }, + { url = "https://files.pythonhosted.org/packages/15/88/3cdd54fa279341afa10acf8d2b503556b1375245dccc9315659f795dd2e9/pandas-3.0.2-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:deeca1b5a931fdf0c2212c8a659ade6d3b1edc21f0914ce71ef24456ca7a6535", size = 10897535, upload-time = "2026-03-31T06:47:53.033Z" }, + { url = "https://files.pythonhosted.org/packages/06/9d/98cc7a7624f7932e40f434299260e2917b090a579d75937cb8a57b9d2de3/pandas-3.0.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:0f48afd9bb13300ffb5a3316973324c787054ba6665cda0da3fbd67f451995db", size = 11446992, upload-time = "2026-03-31T06:47:56.193Z" }, + { url = "https://files.pythonhosted.org/packages/9a/cd/19ff605cc3760e80602e6826ddef2824d8e7050ed80f2e11c4b079741dc3/pandas-3.0.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6c4d8458b97a35717b62469a4ea0e85abd5ed8687277f5ccfc67f8a5126f8c53", size = 11968257, upload-time = "2026-03-31T06:47:59.137Z" }, + { url = "https://files.pythonhosted.org/packages/db/60/aba6a38de456e7341285102bede27514795c1eaa353bc0e7638b6b785356/pandas-3.0.2-cp314-cp314-win_amd64.whl", hash = "sha256:b35d14bb5d8285d9494fe93815a9e9307c0876e10f1e8e89ac5b88f728ec8dcf", size = 9865893, upload-time = "2026-03-31T06:48:02.038Z" }, + { url = "https://files.pythonhosted.org/packages/08/71/e5ec979dd2e8a093dacb8864598c0ff59a0cee0bbcdc0bfec16a51684d4f/pandas-3.0.2-cp314-cp314-win_arm64.whl", hash = "sha256:63d141b56ef686f7f0d714cfb8de4e320475b86bf4b620aa0b7da89af8cbdbbb", size = 9188644, upload-time = "2026-03-31T06:48:05.045Z" }, + { url = "https://files.pythonhosted.org/packages/f1/6c/7b45d85db19cae1eb524f2418ceaa9d85965dcf7b764ed151386b7c540f0/pandas-3.0.2-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:140f0cffb1fa2524e874dde5b477d9defe10780d8e9e220d259b2c0874c89d9d", size = 10776246, upload-time = "2026-03-31T06:48:07.789Z" }, + { url = "https://files.pythonhosted.org/packages/a8/3e/7b00648b086c106e81766f25322b48aa8dfa95b55e621dbdf2fdd413a117/pandas-3.0.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ae37e833ff4fed0ba352f6bdd8b73ba3ab3256a85e54edfd1ab51ae40cca0af8", size = 10424801, upload-time = "2026-03-31T06:48:10.897Z" }, + { url = "https://files.pythonhosted.org/packages/da/6e/558dd09a71b53b4008e7fc8a98ec6d447e9bfb63cdaeea10e5eb9b2dabe8/pandas-3.0.2-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4d888a5c678a419a5bb41a2a93818e8ed9fd3172246555c0b37b7cc27027effd", size = 10345643, upload-time = "2026-03-31T06:48:13.7Z" }, + { url = "https://files.pythonhosted.org/packages/be/e3/921c93b4d9a280409451dc8d07b062b503bbec0531d2627e73a756e99a82/pandas-3.0.2-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b444dc64c079e84df91baa8bf613d58405645461cabca929d9178f2cd392398d", size = 10743641, upload-time = "2026-03-31T06:48:16.659Z" }, + { url = "https://files.pythonhosted.org/packages/56/ca/fd17286f24fa3b4d067965d8d5d7e14fe557dd4f979a0b068ac0deaf8228/pandas-3.0.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:4544c7a54920de8eeacaa1466a6b7268ecfbc9bc64ab4dbb89c6bbe94d5e0660", size = 11361993, upload-time = "2026-03-31T06:48:19.475Z" }, + { url = "https://files.pythonhosted.org/packages/e4/a5/2f6ed612056819de445a433ca1f2821ac3dab7f150d569a59e9cc105de1d/pandas-3.0.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:734be7551687c00fbd760dc0522ed974f82ad230d4a10f54bf51b80d44a08702", size = 11815274, upload-time = "2026-03-31T06:48:22.695Z" }, + { url = "https://files.pythonhosted.org/packages/00/2f/b622683e99ec3ce00b0854bac9e80868592c5b051733f2cf3a868e5fea26/pandas-3.0.2-cp314-cp314t-win_amd64.whl", hash = "sha256:57a07209bebcbcf768d2d13c9b78b852f9a15978dac41b9e6421a81ad4cdd276", size = 10888530, upload-time = "2026-03-31T06:48:25.806Z" }, + { url = "https://files.pythonhosted.org/packages/cb/2b/f8434233fab2bd66a02ec014febe4e5adced20e2693e0e90a07d118ed30e/pandas-3.0.2-cp314-cp314t-win_arm64.whl", hash = "sha256:5371b72c2d4d415d08765f32d689217a43227484e81b2305b52076e328f6f482", size = 9455341, upload-time = "2026-03-31T06:48:28.418Z" }, +] + +[[package]] +name = "pillow" +version = "12.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/21/c2bcdd5906101a30244eaffc1b6e6ce71a31bd0742a01eb89e660ebfac2d/pillow-12.2.0.tar.gz", hash = "sha256:a830b1a40919539d07806aa58e1b114df53ddd43213d9c8b75847eee6c0182b5", size = 46987819, upload-time = "2026-04-01T14:46:17.687Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3a/aa/d0b28e1c811cd4d5f5c2bfe2e022292bd255ae5744a3b9ac7d6c8f72dd75/pillow-12.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:a4e8f36e677d3336f35089648c8955c51c6d386a13cf6ee9c189c5f5bd713a9f", size = 5354355, upload-time = "2026-04-01T14:42:15.402Z" }, + { url = "https://files.pythonhosted.org/packages/27/8e/1d5b39b8ae2bd7650d0c7b6abb9602d16043ead9ebbfef4bc4047454da2a/pillow-12.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e589959f10d9824d39b350472b92f0ce3b443c0a3442ebf41c40cb8361c5b97", size = 4695871, upload-time = "2026-04-01T14:42:18.234Z" }, + { url = "https://files.pythonhosted.org/packages/f0/c5/dcb7a6ca6b7d3be41a76958e90018d56c8462166b3ef223150360850c8da/pillow-12.2.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a52edc8bfff4429aaabdf4d9ee0daadbbf8562364f940937b941f87a4290f5ff", size = 6269734, upload-time = "2026-04-01T14:42:20.608Z" }, + { url = "https://files.pythonhosted.org/packages/ea/f1/aa1bb13b2f4eba914e9637893c73f2af8e48d7d4023b9d3750d4c5eb2d0c/pillow-12.2.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:975385f4776fafde056abb318f612ef6285b10a1f12b8570f3647ad0d74b48ec", size = 8076080, upload-time = "2026-04-01T14:42:23.095Z" }, + { url = "https://files.pythonhosted.org/packages/a1/2a/8c79d6a53169937784604a8ae8d77e45888c41537f7f6f65ed1f407fe66d/pillow-12.2.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bd9c0c7a0c681a347b3194c500cb1e6ca9cab053ea4d82a5cf45b6b754560136", size = 6382236, upload-time = "2026-04-01T14:42:25.82Z" }, + { url = "https://files.pythonhosted.org/packages/b5/42/bbcb6051030e1e421d103ce7a8ecadf837aa2f39b8f82ef1a8d37c3d4ebc/pillow-12.2.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:88d387ff40b3ff7c274947ed3125dedf5262ec6919d83946753b5f3d7c67ea4c", size = 7070220, upload-time = "2026-04-01T14:42:28.68Z" }, + { url = "https://files.pythonhosted.org/packages/3f/e1/c2a7d6dd8cfa6b231227da096fd2d58754bab3603b9d73bf609d3c18b64f/pillow-12.2.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:51c4167c34b0d8ba05b547a3bb23578d0ba17b80a5593f93bd8ecb123dd336a3", size = 6493124, upload-time = "2026-04-01T14:42:31.579Z" }, + { url = "https://files.pythonhosted.org/packages/5f/41/7c8617da5d32e1d2f026e509484fdb6f3ad7efaef1749a0c1928adbb099e/pillow-12.2.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:34c0d99ecccea270c04882cb3b86e7b57296079c9a4aff88cb3b33563d95afaa", size = 7194324, upload-time = "2026-04-01T14:42:34.615Z" }, + { url = "https://files.pythonhosted.org/packages/2d/de/a777627e19fd6d62f84070ee1521adde5eeda4855b5cf60fe0b149118bca/pillow-12.2.0-cp310-cp310-win32.whl", hash = "sha256:b85f66ae9eb53e860a873b858b789217ba505e5e405a24b85c0464822fe88032", size = 6376363, upload-time = "2026-04-01T14:42:37.19Z" }, + { url = "https://files.pythonhosted.org/packages/e7/34/fc4cb5204896465842767b96d250c08410f01f2f28afc43b257de842eed5/pillow-12.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:673aa32138f3e7531ccdbca7b3901dba9b70940a19ccecc6a37c77d5fdeb05b5", size = 7083523, upload-time = "2026-04-01T14:42:39.62Z" }, + { url = "https://files.pythonhosted.org/packages/2d/a0/32852d36bc7709f14dc3f64f929a275e958ad8c19a6deba9610d458e28b3/pillow-12.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:3e080565d8d7c671db5802eedfb438e5565ffa40115216eabb8cd52d0ecce024", size = 2463318, upload-time = "2026-04-01T14:42:42.063Z" }, + { url = "https://files.pythonhosted.org/packages/68/e1/748f5663efe6edcfc4e74b2b93edfb9b8b99b67f21a854c3ae416500a2d9/pillow-12.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:8be29e59487a79f173507c30ddf57e733a357f67881430449bb32614075a40ab", size = 5354347, upload-time = "2026-04-01T14:42:44.255Z" }, + { url = "https://files.pythonhosted.org/packages/47/a1/d5ff69e747374c33a3b53b9f98cca7889fce1fd03d79cdc4e1bccc6c5a87/pillow-12.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:71cde9a1e1551df7d34a25462fc60325e8a11a82cc2e2f54578e5e9a1e153d65", size = 4695873, upload-time = "2026-04-01T14:42:46.452Z" }, + { url = "https://files.pythonhosted.org/packages/df/21/e3fbdf54408a973c7f7f89a23b2cb97a7ef30c61ab4142af31eee6aebc88/pillow-12.2.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f490f9368b6fc026f021db16d7ec2fbf7d89e2edb42e8ec09d2c60505f5729c7", size = 6280168, upload-time = "2026-04-01T14:42:49.228Z" }, + { url = "https://files.pythonhosted.org/packages/d3/f1/00b7278c7dd52b17ad4329153748f87b6756ec195ff786c2bdf12518337d/pillow-12.2.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8bd7903a5f2a4545f6fd5935c90058b89d30045568985a71c79f5fd6edf9b91e", size = 8088188, upload-time = "2026-04-01T14:42:51.735Z" }, + { url = "https://files.pythonhosted.org/packages/ad/cf/220a5994ef1b10e70e85748b75649d77d506499352be135a4989c957b701/pillow-12.2.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3997232e10d2920a68d25191392e3a4487d8183039e1c74c2297f00ed1c50705", size = 6394401, upload-time = "2026-04-01T14:42:54.343Z" }, + { url = "https://files.pythonhosted.org/packages/e9/bd/e51a61b1054f09437acfbc2ff9106c30d1eb76bc1453d428399946781253/pillow-12.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e74473c875d78b8e9d5da2a70f7099549f9eb37ded4e2f6a463e60125bccd176", size = 7079655, upload-time = "2026-04-01T14:42:56.954Z" }, + { url = "https://files.pythonhosted.org/packages/6b/3d/45132c57d5fb4b5744567c3817026480ac7fc3ce5d4c47902bc0e7f6f853/pillow-12.2.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:56a3f9c60a13133a98ecff6197af34d7824de9b7b38c3654861a725c970c197b", size = 6503105, upload-time = "2026-04-01T14:42:59.847Z" }, + { url = "https://files.pythonhosted.org/packages/7d/2e/9df2fc1e82097b1df3dce58dc43286aa01068e918c07574711fcc53e6fb4/pillow-12.2.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:90e6f81de50ad6b534cab6e5aef77ff6e37722b2f5d908686f4a5c9eba17a909", size = 7203402, upload-time = "2026-04-01T14:43:02.664Z" }, + { url = "https://files.pythonhosted.org/packages/bd/2e/2941e42858ebb67e50ae741473de81c2984e6eff7b397017623c676e2e8d/pillow-12.2.0-cp311-cp311-win32.whl", hash = "sha256:8c984051042858021a54926eb597d6ee3012393ce9c181814115df4c60b9a808", size = 6378149, upload-time = "2026-04-01T14:43:05.274Z" }, + { url = "https://files.pythonhosted.org/packages/69/42/836b6f3cd7f3e5fa10a1f1a5420447c17966044c8fbf589cc0452d5502db/pillow-12.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:6e6b2a0c538fc200b38ff9eb6628228b77908c319a005815f2dde585a0664b60", size = 7082626, upload-time = "2026-04-01T14:43:08.557Z" }, + { url = "https://files.pythonhosted.org/packages/c2/88/549194b5d6f1f494b485e493edc6693c0a16f4ada488e5bd974ed1f42fad/pillow-12.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:9a8a34cc89c67a65ea7437ce257cea81a9dad65b29805f3ecee8c8fe8ff25ffe", size = 2463531, upload-time = "2026-04-01T14:43:10.743Z" }, + { url = "https://files.pythonhosted.org/packages/58/be/7482c8a5ebebbc6470b3eb791812fff7d5e0216c2be3827b30b8bb6603ed/pillow-12.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2d192a155bbcec180f8564f693e6fd9bccff5a7af9b32e2e4bf8c9c69dbad6b5", size = 5308279, upload-time = "2026-04-01T14:43:13.246Z" }, + { url = "https://files.pythonhosted.org/packages/d8/95/0a351b9289c2b5cbde0bacd4a83ebc44023e835490a727b2a3bd60ddc0f4/pillow-12.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f3f40b3c5a968281fd507d519e444c35f0ff171237f4fdde090dd60699458421", size = 4695490, upload-time = "2026-04-01T14:43:15.584Z" }, + { url = "https://files.pythonhosted.org/packages/de/af/4e8e6869cbed569d43c416fad3dc4ecb944cb5d9492defaed89ddd6fe871/pillow-12.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:03e7e372d5240cc23e9f07deca4d775c0817bffc641b01e9c3af208dbd300987", size = 6284462, upload-time = "2026-04-01T14:43:18.268Z" }, + { url = "https://files.pythonhosted.org/packages/e9/9e/c05e19657fd57841e476be1ab46c4d501bffbadbafdc31a6d665f8b737b6/pillow-12.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b86024e52a1b269467a802258c25521e6d742349d760728092e1bc2d135b4d76", size = 8094744, upload-time = "2026-04-01T14:43:20.716Z" }, + { url = "https://files.pythonhosted.org/packages/2b/54/1789c455ed10176066b6e7e6da1b01e50e36f94ba584dc68d9eebfe9156d/pillow-12.2.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7371b48c4fa448d20d2714c9a1f775a81155050d383333e0a6c15b1123dda005", size = 6398371, upload-time = "2026-04-01T14:43:23.443Z" }, + { url = "https://files.pythonhosted.org/packages/43/e3/fdc657359e919462369869f1c9f0e973f353f9a9ee295a39b1fea8ee1a77/pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:62f5409336adb0663b7caa0da5c7d9e7bdbaae9ce761d34669420c2a801b2780", size = 7087215, upload-time = "2026-04-01T14:43:26.758Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f8/2f6825e441d5b1959d2ca5adec984210f1ec086435b0ed5f52c19b3b8a6e/pillow-12.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:01afa7cf67f74f09523699b4e88c73fb55c13346d212a59a2db1f86b0a63e8c5", size = 6509783, upload-time = "2026-04-01T14:43:29.56Z" }, + { url = "https://files.pythonhosted.org/packages/67/f9/029a27095ad20f854f9dba026b3ea6428548316e057e6fc3545409e86651/pillow-12.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fc3d34d4a8fbec3e88a79b92e5465e0f9b842b628675850d860b8bd300b159f5", size = 7212112, upload-time = "2026-04-01T14:43:32.091Z" }, + { url = "https://files.pythonhosted.org/packages/be/42/025cfe05d1be22dbfdb4f264fe9de1ccda83f66e4fc3aac94748e784af04/pillow-12.2.0-cp312-cp312-win32.whl", hash = "sha256:58f62cc0f00fd29e64b29f4fd923ffdb3859c9f9e6105bfc37ba1d08994e8940", size = 6378489, upload-time = "2026-04-01T14:43:34.601Z" }, + { url = "https://files.pythonhosted.org/packages/5d/7b/25a221d2c761c6a8ae21bfa3874988ff2583e19cf8a27bf2fee358df7942/pillow-12.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:7f84204dee22a783350679a0333981df803dac21a0190d706a50475e361c93f5", size = 7084129, upload-time = "2026-04-01T14:43:37.213Z" }, + { url = "https://files.pythonhosted.org/packages/10/e1/542a474affab20fd4a0f1836cb234e8493519da6b76899e30bcc5d990b8b/pillow-12.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:af73337013e0b3b46f175e79492d96845b16126ddf79c438d7ea7ff27783a414", size = 2463612, upload-time = "2026-04-01T14:43:39.421Z" }, + { url = "https://files.pythonhosted.org/packages/4a/01/53d10cf0dbad820a8db274d259a37ba50b88b24768ddccec07355382d5ad/pillow-12.2.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:8297651f5b5679c19968abefd6bb84d95fe30ef712eb1b2d9b2d31ca61267f4c", size = 4100837, upload-time = "2026-04-01T14:43:41.506Z" }, + { url = "https://files.pythonhosted.org/packages/0f/98/f3a6657ecb698c937f6c76ee564882945f29b79bad496abcba0e84659ec5/pillow-12.2.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:50d8520da2a6ce0af445fa6d648c4273c3eeefbc32d7ce049f22e8b5c3daecc2", size = 4176528, upload-time = "2026-04-01T14:43:43.773Z" }, + { url = "https://files.pythonhosted.org/packages/69/bc/8986948f05e3ea490b8442ea1c1d4d990b24a7e43d8a51b2c7d8b1dced36/pillow-12.2.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:766cef22385fa1091258ad7e6216792b156dc16d8d3fa607e7545b2b72061f1c", size = 3640401, upload-time = "2026-04-01T14:43:45.87Z" }, + { url = "https://files.pythonhosted.org/packages/34/46/6c717baadcd62bc8ed51d238d521ab651eaa74838291bda1f86fe1f864c9/pillow-12.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5d2fd0fa6b5d9d1de415060363433f28da8b1526c1c129020435e186794b3795", size = 5308094, upload-time = "2026-04-01T14:43:48.438Z" }, + { url = "https://files.pythonhosted.org/packages/71/43/905a14a8b17fdb1ccb58d282454490662d2cb89a6bfec26af6d3520da5ec/pillow-12.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:56b25336f502b6ed02e889f4ece894a72612fe885889a6e8c4c80239ff6e5f5f", size = 4695402, upload-time = "2026-04-01T14:43:51.292Z" }, + { url = "https://files.pythonhosted.org/packages/73/dd/42107efcb777b16fa0393317eac58f5b5cf30e8392e266e76e51cff28c3d/pillow-12.2.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f1c943e96e85df3d3478f7b691f229887e143f81fedab9b20205349ab04d73ed", size = 6280005, upload-time = "2026-04-01T14:43:54.242Z" }, + { url = "https://files.pythonhosted.org/packages/a8/68/b93e09e5e8549019e61acf49f65b1a8530765a7f812c77a7461bca7e4494/pillow-12.2.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:03f6fab9219220f041c74aeaa2939ff0062bd5c364ba9ce037197f4c6d498cd9", size = 8090669, upload-time = "2026-04-01T14:43:57.335Z" }, + { url = "https://files.pythonhosted.org/packages/4b/6e/3ccb54ce8ec4ddd1accd2d89004308b7b0b21c4ac3d20fa70af4760a4330/pillow-12.2.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5cdfebd752ec52bf5bb4e35d9c64b40826bc5b40a13df7c3cda20a2c03a0f5ed", size = 6395194, upload-time = "2026-04-01T14:43:59.864Z" }, + { url = "https://files.pythonhosted.org/packages/67/ee/21d4e8536afd1a328f01b359b4d3997b291ffd35a237c877b331c1c3b71c/pillow-12.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:eedf4b74eda2b5a4b2b2fb4c006d6295df3bf29e459e198c90ea48e130dc75c3", size = 7082423, upload-time = "2026-04-01T14:44:02.74Z" }, + { url = "https://files.pythonhosted.org/packages/78/5f/e9f86ab0146464e8c133fe85df987ed9e77e08b29d8d35f9f9f4d6f917ba/pillow-12.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:00a2865911330191c0b818c59103b58a5e697cae67042366970a6b6f1b20b7f9", size = 6505667, upload-time = "2026-04-01T14:44:05.381Z" }, + { url = "https://files.pythonhosted.org/packages/ed/1e/409007f56a2fdce61584fd3acbc2bbc259857d555196cedcadc68c015c82/pillow-12.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1e1757442ed87f4912397c6d35a0db6a7b52592156014706f17658ff58bbf795", size = 7208580, upload-time = "2026-04-01T14:44:08.39Z" }, + { url = "https://files.pythonhosted.org/packages/23/c4/7349421080b12fb35414607b8871e9534546c128a11965fd4a7002ccfbee/pillow-12.2.0-cp313-cp313-win32.whl", hash = "sha256:144748b3af2d1b358d41286056d0003f47cb339b8c43a9ea42f5fea4d8c66b6e", size = 6375896, upload-time = "2026-04-01T14:44:11.197Z" }, + { url = "https://files.pythonhosted.org/packages/3f/82/8a3739a5e470b3c6cbb1d21d315800d8e16bff503d1f16b03a4ec3212786/pillow-12.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:390ede346628ccc626e5730107cde16c42d3836b89662a115a921f28440e6a3b", size = 7081266, upload-time = "2026-04-01T14:44:13.947Z" }, + { url = "https://files.pythonhosted.org/packages/c3/25/f968f618a062574294592f668218f8af564830ccebdd1fa6200f598e65c5/pillow-12.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:8023abc91fba39036dbce14a7d6535632f99c0b857807cbbbf21ecc9f4717f06", size = 2463508, upload-time = "2026-04-01T14:44:16.312Z" }, + { url = "https://files.pythonhosted.org/packages/4d/a4/b342930964e3cb4dce5038ae34b0eab4653334995336cd486c5a8c25a00c/pillow-12.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:042db20a421b9bafecc4b84a8b6e444686bd9d836c7fd24542db3e7df7baad9b", size = 5309927, upload-time = "2026-04-01T14:44:18.89Z" }, + { url = "https://files.pythonhosted.org/packages/9f/de/23198e0a65a9cf06123f5435a5d95cea62a635697f8f03d134d3f3a96151/pillow-12.2.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:dd025009355c926a84a612fecf58bb315a3f6814b17ead51a8e48d3823d9087f", size = 4698624, upload-time = "2026-04-01T14:44:21.115Z" }, + { url = "https://files.pythonhosted.org/packages/01/a6/1265e977f17d93ea37aa28aa81bad4fa597933879fac2520d24e021c8da3/pillow-12.2.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:88ddbc66737e277852913bd1e07c150cc7bb124539f94c4e2df5344494e0a612", size = 6321252, upload-time = "2026-04-01T14:44:23.663Z" }, + { url = "https://files.pythonhosted.org/packages/3c/83/5982eb4a285967baa70340320be9f88e57665a387e3a53a7f0db8231a0cd/pillow-12.2.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d362d1878f00c142b7e1a16e6e5e780f02be8195123f164edf7eddd911eefe7c", size = 8126550, upload-time = "2026-04-01T14:44:26.772Z" }, + { url = "https://files.pythonhosted.org/packages/4e/48/6ffc514adce69f6050d0753b1a18fd920fce8cac87620d5a31231b04bfc5/pillow-12.2.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2c727a6d53cb0018aadd8018c2b938376af27914a68a492f59dfcaca650d5eea", size = 6433114, upload-time = "2026-04-01T14:44:29.615Z" }, + { url = "https://files.pythonhosted.org/packages/36/a3/f9a77144231fb8d40ee27107b4463e205fa4677e2ca2548e14da5cf18dce/pillow-12.2.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:efd8c21c98c5cc60653bcb311bef2ce0401642b7ce9d09e03a7da87c878289d4", size = 7115667, upload-time = "2026-04-01T14:44:32.773Z" }, + { url = "https://files.pythonhosted.org/packages/c1/fc/ac4ee3041e7d5a565e1c4fd72a113f03b6394cc72ab7089d27608f8aaccb/pillow-12.2.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9f08483a632889536b8139663db60f6724bfcb443c96f1b18855860d7d5c0fd4", size = 6538966, upload-time = "2026-04-01T14:44:35.252Z" }, + { url = "https://files.pythonhosted.org/packages/c0/a8/27fb307055087f3668f6d0a8ccb636e7431d56ed0750e07a60547b1e083e/pillow-12.2.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dac8d77255a37e81a2efcbd1fc05f1c15ee82200e6c240d7e127e25e365c39ea", size = 7238241, upload-time = "2026-04-01T14:44:37.875Z" }, + { url = "https://files.pythonhosted.org/packages/ad/4b/926ab182c07fccae9fcb120043464e1ff1564775ec8864f21a0ebce6ac25/pillow-12.2.0-cp313-cp313t-win32.whl", hash = "sha256:ee3120ae9dff32f121610bb08e4313be87e03efeadfc6c0d18f89127e24d0c24", size = 6379592, upload-time = "2026-04-01T14:44:40.336Z" }, + { url = "https://files.pythonhosted.org/packages/c2/c4/f9e476451a098181b30050cc4c9a3556b64c02cf6497ea421ac047e89e4b/pillow-12.2.0-cp313-cp313t-win_amd64.whl", hash = "sha256:325ca0528c6788d2a6c3d40e3568639398137346c3d6e66bb61db96b96511c98", size = 7085542, upload-time = "2026-04-01T14:44:43.251Z" }, + { url = "https://files.pythonhosted.org/packages/00/a4/285f12aeacbe2d6dc36c407dfbbe9e96d4a80b0fb710a337f6d2ad978c75/pillow-12.2.0-cp313-cp313t-win_arm64.whl", hash = "sha256:2e5a76d03a6c6dcef67edabda7a52494afa4035021a79c8558e14af25313d453", size = 2465765, upload-time = "2026-04-01T14:44:45.996Z" }, + { url = "https://files.pythonhosted.org/packages/bf/98/4595daa2365416a86cb0d495248a393dfc84e96d62ad080c8546256cb9c0/pillow-12.2.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:3adc9215e8be0448ed6e814966ecf3d9952f0ea40eb14e89a102b87f450660d8", size = 4100848, upload-time = "2026-04-01T14:44:48.48Z" }, + { url = "https://files.pythonhosted.org/packages/0b/79/40184d464cf89f6663e18dfcf7ca21aae2491fff1a16127681bf1fa9b8cf/pillow-12.2.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:6a9adfc6d24b10f89588096364cc726174118c62130c817c2837c60cf08a392b", size = 4176515, upload-time = "2026-04-01T14:44:51.353Z" }, + { url = "https://files.pythonhosted.org/packages/b0/63/703f86fd4c422a9cf722833670f4f71418fb116b2853ff7da722ea43f184/pillow-12.2.0-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:6a6e67ea2e6feda684ed370f9a1c52e7a243631c025ba42149a2cc5934dec295", size = 3640159, upload-time = "2026-04-01T14:44:53.588Z" }, + { url = "https://files.pythonhosted.org/packages/71/e0/fb22f797187d0be2270f83500aab851536101b254bfa1eae10795709d283/pillow-12.2.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:2bb4a8d594eacdfc59d9e5ad972aa8afdd48d584ffd5f13a937a664c3e7db0ed", size = 5312185, upload-time = "2026-04-01T14:44:56.039Z" }, + { url = "https://files.pythonhosted.org/packages/ba/8c/1a9e46228571de18f8e28f16fabdfc20212a5d019f3e3303452b3f0a580d/pillow-12.2.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:80b2da48193b2f33ed0c32c38140f9d3186583ce7d516526d462645fd98660ae", size = 4695386, upload-time = "2026-04-01T14:44:58.663Z" }, + { url = "https://files.pythonhosted.org/packages/70/62/98f6b7f0c88b9addd0e87c217ded307b36be024d4ff8869a812b241d1345/pillow-12.2.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22db17c68434de69d8ecfc2fe821569195c0c373b25cccb9cbdacf2c6e53c601", size = 6280384, upload-time = "2026-04-01T14:45:01.5Z" }, + { url = "https://files.pythonhosted.org/packages/5e/03/688747d2e91cfbe0e64f316cd2e8005698f76ada3130d0194664174fa5de/pillow-12.2.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7b14cc0106cd9aecda615dd6903840a058b4700fcb817687d0ee4fc8b6e389be", size = 8091599, upload-time = "2026-04-01T14:45:04.5Z" }, + { url = "https://files.pythonhosted.org/packages/f6/35/577e22b936fcdd66537329b33af0b4ccfefaeabd8aec04b266528cddb33c/pillow-12.2.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8cbeb542b2ebc6fcdacabf8aca8c1a97c9b3ad3927d46b8723f9d4f033288a0f", size = 6396021, upload-time = "2026-04-01T14:45:07.117Z" }, + { url = "https://files.pythonhosted.org/packages/11/8d/d2532ad2a603ca2b93ad9f5135732124e57811d0168155852f37fbce2458/pillow-12.2.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4bfd07bc812fbd20395212969e41931001fd59eb55a60658b0e5710872e95286", size = 7083360, upload-time = "2026-04-01T14:45:09.763Z" }, + { url = "https://files.pythonhosted.org/packages/5e/26/d325f9f56c7e039034897e7380e9cc202b1e368bfd04d4cbe6a441f02885/pillow-12.2.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:9aba9a17b623ef750a4d11b742cbafffeb48a869821252b30ee21b5e91392c50", size = 6507628, upload-time = "2026-04-01T14:45:12.378Z" }, + { url = "https://files.pythonhosted.org/packages/5f/f7/769d5632ffb0988f1c5e7660b3e731e30f7f8ec4318e94d0a5d674eb65a4/pillow-12.2.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:deede7c263feb25dba4e82ea23058a235dcc2fe1f6021025dc71f2b618e26104", size = 7209321, upload-time = "2026-04-01T14:45:15.122Z" }, + { url = "https://files.pythonhosted.org/packages/6a/7a/c253e3c645cd47f1aceea6a8bacdba9991bf45bb7dfe927f7c893e89c93c/pillow-12.2.0-cp314-cp314-win32.whl", hash = "sha256:632ff19b2778e43162304d50da0181ce24ac5bb8180122cbe1bf4673428328c7", size = 6479723, upload-time = "2026-04-01T14:45:17.797Z" }, + { url = "https://files.pythonhosted.org/packages/cd/8b/601e6566b957ca50e28725cb6c355c59c2c8609751efbecd980db44e0349/pillow-12.2.0-cp314-cp314-win_amd64.whl", hash = "sha256:4e6c62e9d237e9b65fac06857d511e90d8461a32adcc1b9065ea0c0fa3a28150", size = 7217400, upload-time = "2026-04-01T14:45:20.529Z" }, + { url = "https://files.pythonhosted.org/packages/d6/94/220e46c73065c3e2951bb91c11a1fb636c8c9ad427ac3ce7d7f3359b9b2f/pillow-12.2.0-cp314-cp314-win_arm64.whl", hash = "sha256:b1c1fbd8a5a1af3412a0810d060a78b5136ec0836c8a4ef9aa11807f2a22f4e1", size = 2554835, upload-time = "2026-04-01T14:45:23.162Z" }, + { url = "https://files.pythonhosted.org/packages/b6/ab/1b426a3974cb0e7da5c29ccff4807871d48110933a57207b5a676cccc155/pillow-12.2.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:57850958fe9c751670e49b2cecf6294acc99e562531f4bd317fa5ddee2068463", size = 5314225, upload-time = "2026-04-01T14:45:25.637Z" }, + { url = "https://files.pythonhosted.org/packages/19/1e/dce46f371be2438eecfee2a1960ee2a243bbe5e961890146d2dee1ff0f12/pillow-12.2.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:d5d38f1411c0ed9f97bcb49b7bd59b6b7c314e0e27420e34d99d844b9ce3b6f3", size = 4698541, upload-time = "2026-04-01T14:45:28.355Z" }, + { url = "https://files.pythonhosted.org/packages/55/c3/7fbecf70adb3a0c33b77a300dc52e424dc22ad8cdc06557a2e49523b703d/pillow-12.2.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5c0a9f29ca8e79f09de89293f82fc9b0270bb4af1d58bc98f540cc4aedf03166", size = 6322251, upload-time = "2026-04-01T14:45:30.924Z" }, + { url = "https://files.pythonhosted.org/packages/1c/3c/7fbc17cfb7e4fe0ef1642e0abc17fc6c94c9f7a16be41498e12e2ba60408/pillow-12.2.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1610dd6c61621ae1cf811bef44d77e149ce3f7b95afe66a4512f8c59f25d9ebe", size = 8127807, upload-time = "2026-04-01T14:45:33.908Z" }, + { url = "https://files.pythonhosted.org/packages/ff/c3/a8ae14d6defd2e448493ff512fae903b1e9bd40b72efb6ec55ce0048c8ce/pillow-12.2.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a34329707af4f73cf1782a36cd2289c0368880654a2c11f027bcee9052d35dd", size = 6433935, upload-time = "2026-04-01T14:45:36.623Z" }, + { url = "https://files.pythonhosted.org/packages/6e/32/2880fb3a074847ac159d8f902cb43278a61e85f681661e7419e6596803ed/pillow-12.2.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8e9c4f5b3c546fa3458a29ab22646c1c6c787ea8f5ef51300e5a60300736905e", size = 7116720, upload-time = "2026-04-01T14:45:39.258Z" }, + { url = "https://files.pythonhosted.org/packages/46/87/495cc9c30e0129501643f24d320076f4cc54f718341df18cc70ec94c44e1/pillow-12.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:fb043ee2f06b41473269765c2feae53fc2e2fbf96e5e22ca94fb5ad677856f06", size = 6540498, upload-time = "2026-04-01T14:45:41.879Z" }, + { url = "https://files.pythonhosted.org/packages/18/53/773f5edca692009d883a72211b60fdaf8871cbef075eaa9d577f0a2f989e/pillow-12.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:f278f034eb75b4e8a13a54a876cc4a5ab39173d2cdd93a638e1b467fc545ac43", size = 7239413, upload-time = "2026-04-01T14:45:44.705Z" }, + { url = "https://files.pythonhosted.org/packages/c9/e4/4b64a97d71b2a83158134abbb2f5bd3f8a2ea691361282f010998f339ec7/pillow-12.2.0-cp314-cp314t-win32.whl", hash = "sha256:6bb77b2dcb06b20f9f4b4a8454caa581cd4dd0643a08bacf821216a16d9c8354", size = 6482084, upload-time = "2026-04-01T14:45:47.568Z" }, + { url = "https://files.pythonhosted.org/packages/ba/13/306d275efd3a3453f72114b7431c877d10b1154014c1ebbedd067770d629/pillow-12.2.0-cp314-cp314t-win_amd64.whl", hash = "sha256:6562ace0d3fb5f20ed7290f1f929cae41b25ae29528f2af1722966a0a02e2aa1", size = 7225152, upload-time = "2026-04-01T14:45:50.032Z" }, + { url = "https://files.pythonhosted.org/packages/ff/6e/cf826fae916b8658848d7b9f38d88da6396895c676e8086fc0988073aaf8/pillow-12.2.0-cp314-cp314t-win_arm64.whl", hash = "sha256:aa88ccfe4e32d362816319ed727a004423aab09c5cea43c01a4b435643fa34eb", size = 2556579, upload-time = "2026-04-01T14:45:52.529Z" }, + { url = "https://files.pythonhosted.org/packages/4e/b7/2437044fb910f499610356d1352e3423753c98e34f915252aafecc64889f/pillow-12.2.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0538bd5e05efec03ae613fd89c4ce0368ecd2ba239cc25b9f9be7ed426b0af1f", size = 5273969, upload-time = "2026-04-01T14:45:55.538Z" }, + { url = "https://files.pythonhosted.org/packages/f6/f4/8316e31de11b780f4ac08ef3654a75555e624a98db1056ecb2122d008d5a/pillow-12.2.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:394167b21da716608eac917c60aa9b969421b5dcbbe02ae7f013e7b85811c69d", size = 4659674, upload-time = "2026-04-01T14:45:58.093Z" }, + { url = "https://files.pythonhosted.org/packages/d4/37/664fca7201f8bb2aa1d20e2c3d5564a62e6ae5111741966c8319ca802361/pillow-12.2.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5d04bfa02cc2d23b497d1e90a0f927070043f6cbf303e738300532379a4b4e0f", size = 5288479, upload-time = "2026-04-01T14:46:01.141Z" }, + { url = "https://files.pythonhosted.org/packages/49/62/5b0ed78fce87346be7a5cfcfaaad91f6a1f98c26f86bdbafa2066c647ef6/pillow-12.2.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0c838a5125cee37e68edec915651521191cef1e6aa336b855f495766e77a366e", size = 7032230, upload-time = "2026-04-01T14:46:03.874Z" }, + { url = "https://files.pythonhosted.org/packages/c3/28/ec0fc38107fc32536908034e990c47914c57cd7c5a3ece4d8d8f7ffd7e27/pillow-12.2.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4a6c9fa44005fa37a91ebfc95d081e8079757d2e904b27103f4f5fa6f0bf78c0", size = 5355404, upload-time = "2026-04-01T14:46:06.33Z" }, + { url = "https://files.pythonhosted.org/packages/5e/8b/51b0eddcfa2180d60e41f06bd6d0a62202b20b59c68f5a132e615b75aecf/pillow-12.2.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:25373b66e0dd5905ed63fa3cae13c82fbddf3079f2c8bf15c6fb6a35586324c1", size = 6002215, upload-time = "2026-04-01T14:46:08.83Z" }, + { url = "https://files.pythonhosted.org/packages/bc/60/5382c03e1970de634027cee8e1b7d39776b778b81812aaf45b694dfe9e28/pillow-12.2.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:bfa9c230d2fe991bed5318a5f119bd6780cda2915cca595393649fc118ab895e", size = 7080946, upload-time = "2026-04-01T14:46:11.734Z" }, +] + +[[package]] +name = "pluggy" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, +] + +[[package]] +name = "polyfactory" +version = "3.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "faker" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/85/68/7717bd9e63ed254617a7d3dc9260904fb736d6ea203e58ffddcb186c64e4/polyfactory-3.3.0.tar.gz", hash = "sha256:237258b6ff43edf362ffd1f68086bb796466f786adfa002b0ac256dbf2246e9a", size = 348668, upload-time = "2026-02-22T09:46:28.01Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dd/34/b6f19941adcdaf415b5e8a8d577499f5b6a76b59cbae37f9b125a9ffe9f2/polyfactory-3.3.0-py3-none-any.whl", hash = "sha256:686abcaa761930d3df87b91e95b26b8d8cb9fdbbbe0b03d5f918acff5c72606e", size = 62707, upload-time = "2026-02-22T09:46:25.985Z" }, +] + +[[package]] +name = "psutil" +version = "7.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/c6/d1ddf4abb55e93cebc4f2ed8b5d6dbad109ecb8d63748dd2b20ab5e57ebe/psutil-7.2.2.tar.gz", hash = "sha256:0746f5f8d406af344fd547f1c8daa5f5c33dbc293bb8d6a16d80b4bb88f59372", size = 493740, upload-time = "2026-01-28T18:14:54.428Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/08/510cbdb69c25a96f4ae523f733cdc963ae654904e8db864c07585ef99875/psutil-7.2.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2edccc433cbfa046b980b0df0171cd25bcaeb3a68fe9022db0979e7aa74a826b", size = 130595, upload-time = "2026-01-28T18:14:57.293Z" }, + { url = "https://files.pythonhosted.org/packages/d6/f5/97baea3fe7a5a9af7436301f85490905379b1c6f2dd51fe3ecf24b4c5fbf/psutil-7.2.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e78c8603dcd9a04c7364f1a3e670cea95d51ee865e4efb3556a3a63adef958ea", size = 131082, upload-time = "2026-01-28T18:14:59.732Z" }, + { url = "https://files.pythonhosted.org/packages/37/d6/246513fbf9fa174af531f28412297dd05241d97a75911ac8febefa1a53c6/psutil-7.2.2-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1a571f2330c966c62aeda00dd24620425d4b0cc86881c89861fbc04549e5dc63", size = 181476, upload-time = "2026-01-28T18:15:01.884Z" }, + { url = "https://files.pythonhosted.org/packages/b8/b5/9182c9af3836cca61696dabe4fd1304e17bc56cb62f17439e1154f225dd3/psutil-7.2.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:917e891983ca3c1887b4ef36447b1e0873e70c933afc831c6b6da078ba474312", size = 184062, upload-time = "2026-01-28T18:15:04.436Z" }, + { url = "https://files.pythonhosted.org/packages/16/ba/0756dca669f5a9300d0cbcbfae9a4c30e446dfc7440ffe43ded5724bfd93/psutil-7.2.2-cp313-cp313t-win_amd64.whl", hash = "sha256:ab486563df44c17f5173621c7b198955bd6b613fb87c71c161f827d3fb149a9b", size = 139893, upload-time = "2026-01-28T18:15:06.378Z" }, + { url = "https://files.pythonhosted.org/packages/1c/61/8fa0e26f33623b49949346de05ec1ddaad02ed8ba64af45f40a147dbfa97/psutil-7.2.2-cp313-cp313t-win_arm64.whl", hash = "sha256:ae0aefdd8796a7737eccea863f80f81e468a1e4cf14d926bd9b6f5f2d5f90ca9", size = 135589, upload-time = "2026-01-28T18:15:08.03Z" }, + { url = "https://files.pythonhosted.org/packages/81/69/ef179ab5ca24f32acc1dac0c247fd6a13b501fd5534dbae0e05a1c48b66d/psutil-7.2.2-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:eed63d3b4d62449571547b60578c5b2c4bcccc5387148db46e0c2313dad0ee00", size = 130664, upload-time = "2026-01-28T18:15:09.469Z" }, + { url = "https://files.pythonhosted.org/packages/7b/64/665248b557a236d3fa9efc378d60d95ef56dd0a490c2cd37dafc7660d4a9/psutil-7.2.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7b6d09433a10592ce39b13d7be5a54fbac1d1228ed29abc880fb23df7cb694c9", size = 131087, upload-time = "2026-01-28T18:15:11.724Z" }, + { url = "https://files.pythonhosted.org/packages/d5/2e/e6782744700d6759ebce3043dcfa661fb61e2fb752b91cdeae9af12c2178/psutil-7.2.2-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fa4ecf83bcdf6e6c8f4449aff98eefb5d0604bf88cb883d7da3d8d2d909546a", size = 182383, upload-time = "2026-01-28T18:15:13.445Z" }, + { url = "https://files.pythonhosted.org/packages/57/49/0a41cefd10cb7505cdc04dab3eacf24c0c2cb158a998b8c7b1d27ee2c1f5/psutil-7.2.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e452c464a02e7dc7822a05d25db4cde564444a67e58539a00f929c51eddda0cf", size = 185210, upload-time = "2026-01-28T18:15:16.002Z" }, + { url = "https://files.pythonhosted.org/packages/dd/2c/ff9bfb544f283ba5f83ba725a3c5fec6d6b10b8f27ac1dc641c473dc390d/psutil-7.2.2-cp314-cp314t-win_amd64.whl", hash = "sha256:c7663d4e37f13e884d13994247449e9f8f574bc4655d509c3b95e9ec9e2b9dc1", size = 141228, upload-time = "2026-01-28T18:15:18.385Z" }, + { url = "https://files.pythonhosted.org/packages/f2/fc/f8d9c31db14fcec13748d373e668bc3bed94d9077dbc17fb0eebc073233c/psutil-7.2.2-cp314-cp314t-win_arm64.whl", hash = "sha256:11fe5a4f613759764e79c65cf11ebdf26e33d6dd34336f8a337aa2996d71c841", size = 136284, upload-time = "2026-01-28T18:15:19.912Z" }, + { url = "https://files.pythonhosted.org/packages/e7/36/5ee6e05c9bd427237b11b3937ad82bb8ad2752d72c6969314590dd0c2f6e/psutil-7.2.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ed0cace939114f62738d808fdcecd4c869222507e266e574799e9c0faa17d486", size = 129090, upload-time = "2026-01-28T18:15:22.168Z" }, + { url = "https://files.pythonhosted.org/packages/80/c4/f5af4c1ca8c1eeb2e92ccca14ce8effdeec651d5ab6053c589b074eda6e1/psutil-7.2.2-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:1a7b04c10f32cc88ab39cbf606e117fd74721c831c98a27dc04578deb0c16979", size = 129859, upload-time = "2026-01-28T18:15:23.795Z" }, + { url = "https://files.pythonhosted.org/packages/b5/70/5d8df3b09e25bce090399cf48e452d25c935ab72dad19406c77f4e828045/psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:076a2d2f923fd4821644f5ba89f059523da90dc9014e85f8e45a5774ca5bc6f9", size = 155560, upload-time = "2026-01-28T18:15:25.976Z" }, + { url = "https://files.pythonhosted.org/packages/63/65/37648c0c158dc222aba51c089eb3bdfa238e621674dc42d48706e639204f/psutil-7.2.2-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b0726cecd84f9474419d67252add4ac0cd9811b04d61123054b9fb6f57df6e9e", size = 156997, upload-time = "2026-01-28T18:15:27.794Z" }, + { url = "https://files.pythonhosted.org/packages/8e/13/125093eadae863ce03c6ffdbae9929430d116a246ef69866dad94da3bfbc/psutil-7.2.2-cp36-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:fd04ef36b4a6d599bbdb225dd1d3f51e00105f6d48a28f006da7f9822f2606d8", size = 148972, upload-time = "2026-01-28T18:15:29.342Z" }, + { url = "https://files.pythonhosted.org/packages/04/78/0acd37ca84ce3ddffaa92ef0f571e073faa6d8ff1f0559ab1272188ea2be/psutil-7.2.2-cp36-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b58fabe35e80b264a4e3bb23e6b96f9e45a3df7fb7eed419ac0e5947c61e47cc", size = 148266, upload-time = "2026-01-28T18:15:31.597Z" }, + { url = "https://files.pythonhosted.org/packages/b4/90/e2159492b5426be0c1fef7acba807a03511f97c5f86b3caeda6ad92351a7/psutil-7.2.2-cp37-abi3-win_amd64.whl", hash = "sha256:eb7e81434c8d223ec4a219b5fc1c47d0417b12be7ea866e24fb5ad6e84b3d988", size = 137737, upload-time = "2026-01-28T18:15:33.849Z" }, + { url = "https://files.pythonhosted.org/packages/8c/c7/7bb2e321574b10df20cbde462a94e2b71d05f9bbda251ef27d104668306a/psutil-7.2.2-cp37-abi3-win_arm64.whl", hash = "sha256:8c233660f575a5a89e6d4cb65d9f938126312bca76d8fe087b947b3a1aaac9ee", size = 134617, upload-time = "2026-01-28T18:15:36.514Z" }, +] + +[[package]] +name = "pyclipper" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/21/3c06205bb407e1f79b73b7b4dfb3950bd9537c4f625a68ab5cc41177f5bc/pyclipper-1.4.0.tar.gz", hash = "sha256:9882bd889f27da78add4dd6f881d25697efc740bf840274e749988d25496c8e1", size = 54489, upload-time = "2025-12-01T13:15:35.015Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/9f/a10173d32ecc2ce19a04d018163f3ca22a04c0c6ad03b464dcd32f9152a8/pyclipper-1.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:bafad70d2679c187120e8c44e1f9a8b06150bad8c0aecf612ad7dfbfa9510f73", size = 264510, upload-time = "2025-12-01T13:14:46.551Z" }, + { url = "https://files.pythonhosted.org/packages/e0/c2/5490ddc4a1f7ceeaa0258f4266397e720c02db515b2ca5bc69b85676f697/pyclipper-1.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0b74a9dd44b22a7fd35d65fb1ceeba57f3817f34a97a28c3255556362e491447", size = 139498, upload-time = "2025-12-01T13:14:48.31Z" }, + { url = "https://files.pythonhosted.org/packages/3b/0a/bea9102d1d75634b1a5702b0e92982451a1eafca73c4845d3dbe27eba13d/pyclipper-1.4.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0a4d2736fb3c42e8eb1d38bf27a720d1015526c11e476bded55138a977c17d9d", size = 970974, upload-time = "2025-12-01T13:14:49.799Z" }, + { url = "https://files.pythonhosted.org/packages/8b/1b/097f8776d5b3a10eb7b443b632221f4ed825d892e79e05682f4b10a1a59c/pyclipper-1.4.0-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b3b3630051b53ad2564cb079e088b112dd576e3d91038338ad1cc7915e0f14dc", size = 943315, upload-time = "2025-12-01T13:14:51.266Z" }, + { url = "https://files.pythonhosted.org/packages/fd/4d/17d6a3f1abf0f368d58f2309e80ee3761afb1fd1342f7780ab32ba4f0b1d/pyclipper-1.4.0-cp310-cp310-win32.whl", hash = "sha256:8d42b07a2f6cfe2d9b87daf345443583f00a14e856927782fde52f3a255e305a", size = 95286, upload-time = "2025-12-01T13:14:52.922Z" }, + { url = "https://files.pythonhosted.org/packages/53/ca/b30138427ed122ec9b47980b943164974a2ec606fa3f71597033b9a9f9a6/pyclipper-1.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:6a97b961f182b92d899ca88c1bb3632faea2e00ce18d07c5f789666ebb021ca4", size = 104227, upload-time = "2025-12-01T13:14:54.013Z" }, + { url = "https://files.pythonhosted.org/packages/de/e3/64cf7794319b088c288706087141e53ac259c7959728303276d18adc665d/pyclipper-1.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:adcb7ca33c5bdc33cd775e8b3eadad54873c802a6d909067a57348bcb96e7a2d", size = 264281, upload-time = "2025-12-01T13:14:55.47Z" }, + { url = "https://files.pythonhosted.org/packages/34/cd/44ec0da0306fa4231e76f1c2cb1fa394d7bde8db490a2b24d55b39865f69/pyclipper-1.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fd24849d2b94ec749ceac7c34c9f01010d23b6e9d9216cf2238b8481160e703d", size = 139426, upload-time = "2025-12-01T13:14:56.683Z" }, + { url = "https://files.pythonhosted.org/packages/ad/88/d8f6c6763ea622fe35e19c75d8b39ed6c55191ddc82d65e06bc46b26cb8e/pyclipper-1.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1b6c8d75ba20c6433c9ea8f1a0feb7e4d3ac06a09ad1fd6d571afc1ddf89b869", size = 989649, upload-time = "2025-12-01T13:14:58.28Z" }, + { url = "https://files.pythonhosted.org/packages/ff/e9/ea7d68c8c4af3842d6515bedcf06418610ad75f111e64c92c1d4785a1513/pyclipper-1.4.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:58e29d7443d7cc0e83ee9daf43927730386629786d00c63b04fe3b53ac01462c", size = 962842, upload-time = "2025-12-01T13:15:00.044Z" }, + { url = "https://files.pythonhosted.org/packages/4e/b7/0b4a272d8726e51ab05e2b933d8cc47f29757fb8212e38b619e170e6015c/pyclipper-1.4.0-cp311-cp311-win32.whl", hash = "sha256:a8d2b5fb75ebe57e21ce61e79a9131edec2622ff23cc665e4d1d1f201bc1a801", size = 95098, upload-time = "2025-12-01T13:15:01.359Z" }, + { url = "https://files.pythonhosted.org/packages/3a/76/4901de2919198bb2bd3d989f86d4a1dff363962425bb2d63e24e6c990042/pyclipper-1.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:e9b973467d9c5fa9bc30bb6ac95f9f4d7c3d9fc25f6cf2d1cc972088e5955c01", size = 104362, upload-time = "2025-12-01T13:15:02.439Z" }, + { url = "https://files.pythonhosted.org/packages/90/1b/7a07b68e0842324d46c03e512d8eefa9cb92ba2a792b3b4ebf939dafcac3/pyclipper-1.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:222ac96c8b8281b53d695b9c4fedc674f56d6d4320ad23f1bdbd168f4e316140", size = 265676, upload-time = "2025-12-01T13:15:04.15Z" }, + { url = "https://files.pythonhosted.org/packages/6b/dd/8bd622521c05d04963420ae6664093f154343ed044c53ea260a310c8bb4d/pyclipper-1.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f3672dbafbb458f1b96e1ee3e610d174acb5ace5bd2ed5d1252603bb797f2fc6", size = 140458, upload-time = "2025-12-01T13:15:05.76Z" }, + { url = "https://files.pythonhosted.org/packages/7a/06/6e3e241882bf7d6ab23d9c69ba4e85f1ec47397cbbeee948a16cf75e21ed/pyclipper-1.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d1f807e2b4760a8e5c6d6b4e8c1d71ef52b7fe1946ff088f4fa41e16a881a5ca", size = 978235, upload-time = "2025-12-01T13:15:06.993Z" }, + { url = "https://files.pythonhosted.org/packages/cf/f4/3418c1cd5eea640a9fa2501d4bc0b3655fa8d40145d1a4f484b987990a75/pyclipper-1.4.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce1f83c9a4e10ea3de1959f0ae79e9a5bd41346dff648fee6228ba9eaf8b3872", size = 961388, upload-time = "2025-12-01T13:15:08.467Z" }, + { url = "https://files.pythonhosted.org/packages/ac/94/c85401d24be634af529c962dd5d781f3cb62a67cd769534df2cb3feee97a/pyclipper-1.4.0-cp312-cp312-win32.whl", hash = "sha256:3ef44b64666ebf1cb521a08a60c3e639d21b8c50bfbe846ba7c52a0415e936f4", size = 95169, upload-time = "2025-12-01T13:15:10.098Z" }, + { url = "https://files.pythonhosted.org/packages/97/77/dfea08e3b230b82ee22543c30c35d33d42f846a77f96caf7c504dd54fab1/pyclipper-1.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:d1e5498d883b706a4ce636247f0d830c6eb34a25b843a1b78e2c969754ca9037", size = 104619, upload-time = "2025-12-01T13:15:11.592Z" }, + { url = "https://files.pythonhosted.org/packages/67/d0/cbce7d47de1e6458f66a4d999b091640134deb8f2c7351eab993b70d2e10/pyclipper-1.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d49df13cbb2627ccb13a1046f3ea6ebf7177b5504ec61bdef87d6a704046fd6e", size = 264342, upload-time = "2025-12-01T13:15:12.697Z" }, + { url = "https://files.pythonhosted.org/packages/ce/cc/742b9d69d96c58ac156947e1b56d0f81cbacbccf869e2ac7229f2f86dc4e/pyclipper-1.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:37bfec361e174110cdddffd5ecd070a8064015c99383d95eb692c253951eee8a", size = 139839, upload-time = "2025-12-01T13:15:13.911Z" }, + { url = "https://files.pythonhosted.org/packages/db/48/dd301d62c1529efdd721b47b9e5fb52120fcdac5f4d3405cfc0d2f391414/pyclipper-1.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:14c8bdb5a72004b721c4e6f448d2c2262d74a7f0c9e3076aeff41e564a92389f", size = 972142, upload-time = "2025-12-01T13:15:15.477Z" }, + { url = "https://files.pythonhosted.org/packages/07/bf/d493fd1b33bb090fa64e28c1009374d5d72fa705f9331cd56517c35e381e/pyclipper-1.4.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f2a50c22c3a78cb4e48347ecf06930f61ce98cf9252f2e292aa025471e9d75b1", size = 952789, upload-time = "2025-12-01T13:15:17.042Z" }, + { url = "https://files.pythonhosted.org/packages/cf/88/b95ea8ea21ddca34aa14b123226a81526dd2faaa993f9aabd3ed21231604/pyclipper-1.4.0-cp313-cp313-win32.whl", hash = "sha256:c9a3faa416ff536cee93417a72bfb690d9dea136dc39a39dbbe1e5dadf108c9c", size = 94817, upload-time = "2025-12-01T13:15:18.724Z" }, + { url = "https://files.pythonhosted.org/packages/ba/42/0a1920d276a0e1ca21dc0d13ee9e3ba10a9a8aa3abac76cd5e5a9f503306/pyclipper-1.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:d4b2d7c41086f1927d14947c563dfc7beed2f6c0d9af13c42fe3dcdc20d35832", size = 104007, upload-time = "2025-12-01T13:15:19.763Z" }, + { url = "https://files.pythonhosted.org/packages/1a/20/04d58c70f3ccd404f179f8dd81d16722a05a3bf1ab61445ee64e8218c1f8/pyclipper-1.4.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:7c87480fc91a5af4c1ba310bdb7de2f089a3eeef5fe351a3cedc37da1fcced1c", size = 265167, upload-time = "2025-12-01T13:15:20.844Z" }, + { url = "https://files.pythonhosted.org/packages/bd/2e/a570c1abe69b7260ca0caab4236ce6ea3661193ebf8d1bd7f78ccce537a5/pyclipper-1.4.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:81d8bb2d1fb9d66dc7ea4373b176bb4b02443a7e328b3b603a73faec088b952e", size = 139966, upload-time = "2025-12-01T13:15:22.036Z" }, + { url = "https://files.pythonhosted.org/packages/e8/3b/e0859e54adabdde8a24a29d3f525ebb31c71ddf2e8d93edce83a3c212ffc/pyclipper-1.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:773c0e06b683214dcfc6711be230c83b03cddebe8a57eae053d4603dd63582f9", size = 968216, upload-time = "2025-12-01T13:15:23.18Z" }, + { url = "https://files.pythonhosted.org/packages/f6/6b/e3c4febf0a35ae643ee579b09988dd931602b5bf311020535fd9e5b7e715/pyclipper-1.4.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9bc45f2463d997848450dbed91c950ca37c6cf27f84a49a5cad4affc0b469e39", size = 954198, upload-time = "2025-12-01T13:15:24.522Z" }, + { url = "https://files.pythonhosted.org/packages/fc/74/728efcee02e12acb486ce9d56fa037120c9bf5b77c54bbdbaa441c14a9d9/pyclipper-1.4.0-cp314-cp314-win32.whl", hash = "sha256:0b8c2105b3b3c44dbe1a266f64309407fe30bf372cf39a94dc8aaa97df00da5b", size = 96951, upload-time = "2025-12-01T13:15:25.79Z" }, + { url = "https://files.pythonhosted.org/packages/e3/d7/7f4354e69f10a917e5c7d5d72a499ef2e10945312f5e72c414a0a08d2ae4/pyclipper-1.4.0-cp314-cp314-win_amd64.whl", hash = "sha256:6c317e182590c88ec0194149995e3d71a979cfef3b246383f4e035f9d4a11826", size = 106782, upload-time = "2025-12-01T13:15:26.945Z" }, + { url = "https://files.pythonhosted.org/packages/63/60/fc32c7a3d7f61a970511ec2857ecd09693d8ac80d560ee7b8e67a6d268c9/pyclipper-1.4.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:f160a2c6ba036f7eaf09f1f10f4fbfa734234af9112fb5187877efed78df9303", size = 269880, upload-time = "2025-12-01T13:15:28.117Z" }, + { url = "https://files.pythonhosted.org/packages/49/df/c4a72d3f62f0ba03ec440c4fff56cd2d674a4334d23c5064cbf41c9583f6/pyclipper-1.4.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:a9f11ad133257c52c40d50de7a0ca3370a0cdd8e3d11eec0604ad3c34ba549e9", size = 141706, upload-time = "2025-12-01T13:15:30.134Z" }, + { url = "https://files.pythonhosted.org/packages/c5/0b/cf55df03e2175e1e2da9db585241401e0bc98f76bee3791bed39d0313449/pyclipper-1.4.0-cp314-cp314t-win32.whl", hash = "sha256:bbc827b77442c99deaeee26e0e7f172355ddb097a5e126aea206d447d3b26286", size = 105308, upload-time = "2025-12-01T13:15:31.225Z" }, + { url = "https://files.pythonhosted.org/packages/8f/dc/53df8b6931d47080b4fe4ee8450d42e660ee1c5c1556c7ab73359182b769/pyclipper-1.4.0-cp314-cp314t-win_amd64.whl", hash = "sha256:29dae3e0296dff8502eeb7639fcfee794b0eec8590ba3563aee28db269da6b04", size = 117608, upload-time = "2025-12-01T13:15:32.69Z" }, + { url = "https://files.pythonhosted.org/packages/18/59/81050abdc9e5b90ffc2c765738c5e40e9abd8e44864aaa737b600f16c562/pyclipper-1.4.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:98b2a40f98e1fc1b29e8a6094072e7e0c7dfe901e573bf6cfc6eb7ce84a7ae87", size = 126495, upload-time = "2025-12-01T13:15:33.743Z" }, +] + +[[package]] +name = "pydantic" +version = "2.13.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d9/e4/40d09941a2cebcb20609b86a559817d5b9291c49dd6f8c87e5feffbe703a/pydantic-2.13.3.tar.gz", hash = "sha256:af09e9d1d09f4e7fe37145c1f577e1d61ceb9a41924bf0094a36506285d0a84d", size = 844068, upload-time = "2026-04-20T14:46:43.632Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/0a/fd7d723f8f8153418fb40cf9c940e82004fce7e987026b08a68a36dd3fe7/pydantic-2.13.3-py3-none-any.whl", hash = "sha256:6db14ac8dfc9a1e57f87ea2c0de670c251240f43cb0c30a5130e9720dc612927", size = 471981, upload-time = "2026-04-20T14:46:41.402Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.46.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2a/ef/f7abb56c49382a246fd2ce9c799691e3c3e7175ec74b14d99e798bcddb1a/pydantic_core-2.46.3.tar.gz", hash = "sha256:41c178f65b8c29807239d47e6050262eb6bf84eb695e41101e62e38df4a5bc2c", size = 471412, upload-time = "2026-04-20T14:40:56.672Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/98/b50eb9a411e87483b5c65dba4fa430a06bac4234d3403a40e5a9905ebcd0/pydantic_core-2.46.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:1da3786b8018e60349680720158cc19161cc3b4bdd815beb0a321cd5ce1ad5b1", size = 2108971, upload-time = "2026-04-20T14:43:51.945Z" }, + { url = "https://files.pythonhosted.org/packages/08/4b/f364b9d161718ff2217160a4b5d41ce38de60aed91c3689ebffa1c939d23/pydantic_core-2.46.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cc0988cb29d21bf4a9d5cf2ef970b5c0e38d8d8e107a493278c05dc6c1dda69f", size = 1949588, upload-time = "2026-04-20T14:44:10.386Z" }, + { url = "https://files.pythonhosted.org/packages/8f/8b/30bd03ee83b2f5e29f5ba8e647ab3c456bf56f2ec72fdbcc0215484a0854/pydantic_core-2.46.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27f9067c3bfadd04c55484b89c0d267981b2f3512850f6f66e1e74204a4e4ce3", size = 1975986, upload-time = "2026-04-20T14:43:57.106Z" }, + { url = "https://files.pythonhosted.org/packages/3c/54/13ccf954d84ec275d5d023d5786e4aa48840bc9f161f2838dc98e1153518/pydantic_core-2.46.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a642ac886ecf6402d9882d10c405dcf4b902abeb2972cd5fb4a48c83cd59279a", size = 2055830, upload-time = "2026-04-20T14:44:15.499Z" }, + { url = "https://files.pythonhosted.org/packages/be/0e/65f38125e660fdbd72aa858e7dfae893645cfa0e7b13d333e174a367cd23/pydantic_core-2.46.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:79f561438481f28681584b89e2effb22855e2179880314bcddbf5968e935e807", size = 2222340, upload-time = "2026-04-20T14:41:51.353Z" }, + { url = "https://files.pythonhosted.org/packages/d1/88/f3ab7739efe0e7e80777dbb84c59eb98518e3f57ea433206194c2e425272/pydantic_core-2.46.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57a973eae4665352a47cf1a99b4ee864620f2fe663a217d7a8da68a1f3a5bfda", size = 2280727, upload-time = "2026-04-20T14:41:30.461Z" }, + { url = "https://files.pythonhosted.org/packages/2a/6d/c228219080817bec4982f9531cadb18da6aaa770fdeb114f49c237ac2c9f/pydantic_core-2.46.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83d002b97072a53ea150d63e0a3adfae5670cef5aa8a6e490240e482d3b22e57", size = 2092158, upload-time = "2026-04-20T14:44:07.305Z" }, + { url = "https://files.pythonhosted.org/packages/0f/b1/525a16711e7c6d61635fac3b0bd54600b5c5d9f60c6fc5aaab26b64a2297/pydantic_core-2.46.3-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:b40ddd51e7c44b28cfaef746c9d3c506d658885e0a46f9eeef2ee815cbf8e045", size = 2116626, upload-time = "2026-04-20T14:42:34.118Z" }, + { url = "https://files.pythonhosted.org/packages/ef/7c/17d30673351439a6951bf54f564cf2443ab00ae264ec9df00e2efd710eb5/pydantic_core-2.46.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ac5ec7fb9b87f04ee839af2d53bcadea57ded7d229719f56c0ed895bff987943", size = 2160691, upload-time = "2026-04-20T14:41:14.023Z" }, + { url = "https://files.pythonhosted.org/packages/86/66/af8adbcbc0886ead7f1a116606a534d75a307e71e6e08226000d51b880d2/pydantic_core-2.46.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a3b11c812f61b3129c4905781a2601dfdfdea5fe1e6c1cfb696b55d14e9c054f", size = 2182543, upload-time = "2026-04-20T14:40:48.886Z" }, + { url = "https://files.pythonhosted.org/packages/b0/37/6de71e0f54c54a4190010f57deb749e1ddf75c568ada3b1320b70067f121/pydantic_core-2.46.3-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:1108da631e602e5b3c38d6d04fe5bb3bfa54349e6918e3ca6cf570b2e2b2f9d4", size = 2324513, upload-time = "2026-04-20T14:42:36.121Z" }, + { url = "https://files.pythonhosted.org/packages/51/b1/9fc74ce94f603d5ef59ff258ca9c2c8fb902fb548d340a96f77f4d1c3b7f/pydantic_core-2.46.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:de885175515bcfa98ae618c1df7a072f13d179f81376c8007112af20567fd08a", size = 2361853, upload-time = "2026-04-20T14:43:24.886Z" }, + { url = "https://files.pythonhosted.org/packages/40/d0/4c652fc592db35f100279ee751d5a145aca1b9a7984b9684ba7c1b5b0535/pydantic_core-2.46.3-cp310-cp310-win32.whl", hash = "sha256:d11058e3201527d41bc6b545c79187c9e4bf85e15a236a6007f0e991518882b7", size = 1980465, upload-time = "2026-04-20T14:44:46.239Z" }, + { url = "https://files.pythonhosted.org/packages/27/b8/a920453c38afbe1f355e1ea0b0d94a0a3e0b0879d32d793108755fa171d5/pydantic_core-2.46.3-cp310-cp310-win_amd64.whl", hash = "sha256:3612edf65c8ea67ac13616c4d23af12faef1ae435a8a93e5934c2a0cbbdd1fd6", size = 2073884, upload-time = "2026-04-20T14:43:01.201Z" }, + { url = "https://files.pythonhosted.org/packages/22/a2/1ba90a83e85a3f94c796b184f3efde9c72f2830dcda493eea8d59ba78e6d/pydantic_core-2.46.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ab124d49d0459b2373ecf54118a45c28a1e6d4192a533fbc915e70f556feb8e5", size = 2106740, upload-time = "2026-04-20T14:41:20.932Z" }, + { url = "https://files.pythonhosted.org/packages/b6/f6/99ae893c89a0b9d3daec9f95487aa676709aa83f67643b3f0abaf4ab628a/pydantic_core-2.46.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cca67d52a5c7a16aed2b3999e719c4bcf644074eac304a5d3d62dd70ae7d4b2c", size = 1948293, upload-time = "2026-04-20T14:43:42.115Z" }, + { url = "https://files.pythonhosted.org/packages/3e/b8/2e8e636dc9e3f16c2e16bf0849e24be82c5ee82c603c65fc0326666328fc/pydantic_core-2.46.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c024e08c0ba23e6fd68c771a521e9d6a792f2ebb0fa734296b36394dc30390e", size = 1973222, upload-time = "2026-04-20T14:41:57.841Z" }, + { url = "https://files.pythonhosted.org/packages/34/36/0e730beec4d83c5306f417afbd82ff237d9a21e83c5edf675f31ed84c1fe/pydantic_core-2.46.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6645ce7eec4928e29a1e3b3d5c946621d105d3e79f0c9cddf07c2a9770949287", size = 2053852, upload-time = "2026-04-20T14:40:43.077Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f0/3071131f47e39136a17814576e0fada9168569f7f8c0e6ac4d1ede6a4958/pydantic_core-2.46.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a712c7118e6c5ea96562f7b488435172abb94a3c53c22c9efc1412264a45cbbe", size = 2221134, upload-time = "2026-04-20T14:43:03.349Z" }, + { url = "https://files.pythonhosted.org/packages/2f/a9/a2dc023eec5aa4b02a467874bad32e2446957d2adcab14e107eab502e978/pydantic_core-2.46.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:69a868ef3ff206343579021c40faf3b1edc64b1cc508ff243a28b0a514ccb050", size = 2279785, upload-time = "2026-04-20T14:41:19.285Z" }, + { url = "https://files.pythonhosted.org/packages/0a/44/93f489d16fb63fbd41c670441536541f6e8cfa1e5a69f40bc9c5d30d8c90/pydantic_core-2.46.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc7e8c32db809aa0f6ea1d6869ebc8518a65d5150fdfad8bcae6a49ae32a22e2", size = 2089404, upload-time = "2026-04-20T14:43:10.108Z" }, + { url = "https://files.pythonhosted.org/packages/2a/78/8692e3aa72b2d004f7a5d937f1dfdc8552ba26caf0bec75f342c40f00dec/pydantic_core-2.46.3-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:3481bd1341dc85779ee506bc8e1196a277ace359d89d28588a9468c3ecbe63fa", size = 2114898, upload-time = "2026-04-20T14:44:51.475Z" }, + { url = "https://files.pythonhosted.org/packages/6a/62/e83133f2e7832532060175cebf1f13748f4c7e7e7165cdd1f611f174494b/pydantic_core-2.46.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8690eba565c6d68ffd3a8655525cbdd5246510b44a637ee2c6c03a7ebfe64d3c", size = 2157856, upload-time = "2026-04-20T14:43:46.64Z" }, + { url = "https://files.pythonhosted.org/packages/6d/ec/6a500e3ad7718ee50583fae79c8651f5d37e3abce1fa9ae177ae65842c53/pydantic_core-2.46.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4de88889d7e88d50d40ee5b39d5dac0bcaef9ba91f7e536ac064e6b2834ecccf", size = 2180168, upload-time = "2026-04-20T14:42:00.302Z" }, + { url = "https://files.pythonhosted.org/packages/d8/53/8267811054b1aa7fc1dc7ded93812372ef79a839f5e23558136a6afbfde1/pydantic_core-2.46.3-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:e480080975c1ef7f780b8f99ed72337e7cc5efea2e518a20a692e8e7b278eb8b", size = 2322885, upload-time = "2026-04-20T14:41:05.253Z" }, + { url = "https://files.pythonhosted.org/packages/c8/c1/1c0acdb3aa0856ddc4ecc55214578f896f2de16f400cf51627eb3c26c1c4/pydantic_core-2.46.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:de3a5c376f8cd94da9a1b8fd3dd1c16c7a7b216ed31dc8ce9fd7a22bf13b836e", size = 2360328, upload-time = "2026-04-20T14:41:43.991Z" }, + { url = "https://files.pythonhosted.org/packages/f0/d0/ef39cd0f4a926814f360e71c1adeab48ad214d9727e4deb48eedfb5bce1a/pydantic_core-2.46.3-cp311-cp311-win32.whl", hash = "sha256:fc331a5314ffddd5385b9ee9d0d2fee0b13c27e0e02dad71b1ae5d6561f51eeb", size = 1979464, upload-time = "2026-04-20T14:43:12.215Z" }, + { url = "https://files.pythonhosted.org/packages/18/9c/f41951b0d858e343f1cf09398b2a7b3014013799744f2c4a8ad6a3eec4f2/pydantic_core-2.46.3-cp311-cp311-win_amd64.whl", hash = "sha256:b5b9c6cf08a8a5e502698f5e153056d12c34b8fb30317e0c5fd06f45162a6346", size = 2070837, upload-time = "2026-04-20T14:41:47.707Z" }, + { url = "https://files.pythonhosted.org/packages/9f/1e/264a17cd582f6ed50950d4d03dd5fefd84e570e238afe1cb3e25cf238769/pydantic_core-2.46.3-cp311-cp311-win_arm64.whl", hash = "sha256:5dfd51cf457482f04ec49491811a2b8fd5b843b64b11eecd2d7a1ee596ea78a6", size = 2053647, upload-time = "2026-04-20T14:42:27.535Z" }, + { url = "https://files.pythonhosted.org/packages/4b/cb/5b47425556ecc1f3fe18ed2a0083188aa46e1dd812b06e406475b3a5d536/pydantic_core-2.46.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b11b59b3eee90a80a36701ddb4576d9ae31f93f05cb9e277ceaa09e6bf074a67", size = 2101946, upload-time = "2026-04-20T14:40:52.581Z" }, + { url = "https://files.pythonhosted.org/packages/a1/4f/2fb62c2267cae99b815bbf4a7b9283812c88ca3153ef29f7707200f1d4e5/pydantic_core-2.46.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:af8653713055ea18a3abc1537fe2ebc42f5b0bbb768d1eb79fd74eb47c0ac089", size = 1951612, upload-time = "2026-04-20T14:42:42.996Z" }, + { url = "https://files.pythonhosted.org/packages/50/6e/b7348fd30d6556d132cddd5bd79f37f96f2601fe0608afac4f5fb01ec0b3/pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:75a519dab6d63c514f3a81053e5266c549679e4aa88f6ec57f2b7b854aceb1b0", size = 1977027, upload-time = "2026-04-20T14:42:02.001Z" }, + { url = "https://files.pythonhosted.org/packages/82/11/31d60ee2b45540d3fb0b29302a393dbc01cd771c473f5b5147bcd353e593/pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a6cd87cb1575b1ad05ba98894c5b5c96411ef678fa2f6ed2576607095b8d9789", size = 2063008, upload-time = "2026-04-20T14:44:17.952Z" }, + { url = "https://files.pythonhosted.org/packages/8a/db/3a9d1957181b59258f44a2300ab0f0be9d1e12d662a4f57bb31250455c52/pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f80a55484b8d843c8ada81ebf70a682f3f00a3d40e378c06cf17ecb44d280d7d", size = 2233082, upload-time = "2026-04-20T14:40:57.934Z" }, + { url = "https://files.pythonhosted.org/packages/9c/e1/3277c38792aeb5cfb18c2f0c5785a221d9ff4e149abbe1184d53d5f72273/pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3861f1731b90c50a3266316b9044f5c9b405eecb8e299b0a7120596334e4fe9c", size = 2304615, upload-time = "2026-04-20T14:42:12.584Z" }, + { url = "https://files.pythonhosted.org/packages/5e/d5/e3d9717c9eba10855325650afd2a9cba8e607321697f18953af9d562da2f/pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb528e295ed31570ac3dcc9bfdd6e0150bc11ce6168ac87a8082055cf1a67395", size = 2094380, upload-time = "2026-04-20T14:43:05.522Z" }, + { url = "https://files.pythonhosted.org/packages/a1/20/abac35dedcbfd66c6f0b03e4e3564511771d6c9b7ede10a362d03e110d9b/pydantic_core-2.46.3-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:367508faa4973b992b271ba1494acaab36eb7e8739d1e47be5035fb1ea225396", size = 2135429, upload-time = "2026-04-20T14:41:55.549Z" }, + { url = "https://files.pythonhosted.org/packages/6c/a5/41bfd1df69afad71b5cf0535055bccc73022715ad362edbc124bc1e021d7/pydantic_core-2.46.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ad3c826fe523e4becf4fe39baa44286cff85ef137c729a2c5e269afbfd0905d", size = 2174582, upload-time = "2026-04-20T14:41:45.96Z" }, + { url = "https://files.pythonhosted.org/packages/79/65/38d86ea056b29b2b10734eb23329b7a7672ca604df4f2b6e9c02d4ee22fe/pydantic_core-2.46.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ec638c5d194ef8af27db69f16c954a09797c0dc25015ad6123eb2c73a4d271ca", size = 2187533, upload-time = "2026-04-20T14:40:55.367Z" }, + { url = "https://files.pythonhosted.org/packages/b6/55/a1129141678a2026badc539ad1dee0a71d06f54c2f06a4bd68c030ac781b/pydantic_core-2.46.3-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:28ed528c45446062ee66edb1d33df5d88828ae167de76e773a3c7f64bd14e976", size = 2332985, upload-time = "2026-04-20T14:44:13.05Z" }, + { url = "https://files.pythonhosted.org/packages/d7/60/cb26f4077719f709e54819f4e8e1d43f4091f94e285eb6bd21e1190a7b7c/pydantic_core-2.46.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aed19d0c783886d5bd86d80ae5030006b45e28464218747dcf83dabfdd092c7b", size = 2373670, upload-time = "2026-04-20T14:41:53.421Z" }, + { url = "https://files.pythonhosted.org/packages/6b/7e/c3f21882bdf1d8d086876f81b5e296206c69c6082551d776895de7801fa0/pydantic_core-2.46.3-cp312-cp312-win32.whl", hash = "sha256:06d5d8820cbbdb4147578c1fe7ffcd5b83f34508cb9f9ab76e807be7db6ff0a4", size = 1966722, upload-time = "2026-04-20T14:44:30.588Z" }, + { url = "https://files.pythonhosted.org/packages/57/be/6b5e757b859013ebfbd7adba02f23b428f37c86dcbf78b5bb0b4ffd36e99/pydantic_core-2.46.3-cp312-cp312-win_amd64.whl", hash = "sha256:c3212fda0ee959c1dd04c60b601ec31097aaa893573a3a1abd0a47bcac2968c1", size = 2072970, upload-time = "2026-04-20T14:42:54.248Z" }, + { url = "https://files.pythonhosted.org/packages/bf/f8/a989b21cc75e9a32d24192ef700eea606521221a89faa40c919ce884f2b1/pydantic_core-2.46.3-cp312-cp312-win_arm64.whl", hash = "sha256:f1f8338dd7a7f31761f1f1a3c47503a9a3b34eea3c8b01fa6ee96408affb5e72", size = 2035963, upload-time = "2026-04-20T14:44:20.4Z" }, + { url = "https://files.pythonhosted.org/packages/9b/3c/9b5e8eb9821936d065439c3b0fb1490ffa64163bfe7e1595985a47896073/pydantic_core-2.46.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:12bc98de041458b80c86c56b24df1d23832f3e166cbaff011f25d187f5c62c37", size = 2102109, upload-time = "2026-04-20T14:41:24.219Z" }, + { url = "https://files.pythonhosted.org/packages/91/97/1c41d1f5a19f241d8069f1e249853bcce378cdb76eec8ab636d7bc426280/pydantic_core-2.46.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:85348b8f89d2c3508b65b16c3c33a4da22b8215138d8b996912bb1532868885f", size = 1951820, upload-time = "2026-04-20T14:42:14.236Z" }, + { url = "https://files.pythonhosted.org/packages/30/b4/d03a7ae14571bc2b6b3c7b122441154720619afe9a336fa3a95434df5e2f/pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1105677a6df914b1fb71a81b96c8cce7726857e1717d86001f29be06a25ee6f8", size = 1977785, upload-time = "2026-04-20T14:42:31.648Z" }, + { url = "https://files.pythonhosted.org/packages/ae/0c/4086f808834b59e3c8f1aa26df8f4b6d998cdcf354a143d18ef41529d1fe/pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:87082cd65669a33adeba5470769e9704c7cf026cc30afb9cc77fd865578ebaad", size = 2062761, upload-time = "2026-04-20T14:40:37.093Z" }, + { url = "https://files.pythonhosted.org/packages/fa/71/a649be5a5064c2df0db06e0a512c2281134ed2fcc981f52a657936a7527c/pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60e5f66e12c4f5212d08522963380eaaeac5ebd795826cfd19b2dfb0c7a52b9c", size = 2232989, upload-time = "2026-04-20T14:42:59.254Z" }, + { url = "https://files.pythonhosted.org/packages/a2/84/7756e75763e810b3a710f4724441d1ecc5883b94aacb07ca71c5fb5cfb69/pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b6cdf19bf84128d5e7c37e8a73a0c5c10d51103a650ac585d42dd6ae233f2b7f", size = 2303975, upload-time = "2026-04-20T14:41:32.287Z" }, + { url = "https://files.pythonhosted.org/packages/6c/35/68a762e0c1e31f35fa0dac733cbd9f5b118042853698de9509c8e5bf128b/pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:031bb17f4885a43773c8c763089499f242aee2ea85cf17154168775dccdecf35", size = 2095325, upload-time = "2026-04-20T14:42:47.685Z" }, + { url = "https://files.pythonhosted.org/packages/77/bf/1bf8c9a8e91836c926eae5e3e51dce009bf495a60ca56060689d3df3f340/pydantic_core-2.46.3-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:bcf2a8b2982a6673693eae7348ef3d8cf3979c1d63b54fca7c397a635cc68687", size = 2133368, upload-time = "2026-04-20T14:41:22.766Z" }, + { url = "https://files.pythonhosted.org/packages/e5/50/87d818d6bab915984995157ceb2380f5aac4e563dddbed6b56f0ed057aba/pydantic_core-2.46.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28e8cf2f52d72ced402a137145923a762cbb5081e48b34312f7a0c8f55928ec3", size = 2173908, upload-time = "2026-04-20T14:42:52.044Z" }, + { url = "https://files.pythonhosted.org/packages/91/88/a311fb306d0bd6185db41fa14ae888fb81d0baf648a761ae760d30819d33/pydantic_core-2.46.3-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:17eaface65d9fc5abb940003020309c1bf7a211f5f608d7870297c367e6f9022", size = 2186422, upload-time = "2026-04-20T14:43:29.55Z" }, + { url = "https://files.pythonhosted.org/packages/8f/79/28fd0d81508525ab2054fef7c77a638c8b5b0afcbbaeee493cf7c3fef7e1/pydantic_core-2.46.3-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:93fd339f23408a07e98950a89644f92c54d8729719a40b30c0a30bb9ebc55d23", size = 2332709, upload-time = "2026-04-20T14:42:16.134Z" }, + { url = "https://files.pythonhosted.org/packages/b3/21/795bf5fe5c0f379308b8ef19c50dedab2e7711dbc8d0c2acf08f1c7daa05/pydantic_core-2.46.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:23cbdb3aaa74dfe0837975dbf69b469753bbde8eacace524519ffdb6b6e89eb7", size = 2372428, upload-time = "2026-04-20T14:41:10.974Z" }, + { url = "https://files.pythonhosted.org/packages/45/b3/ed14c659cbe7605e3ef063077680a64680aec81eb1a04763a05190d49b7f/pydantic_core-2.46.3-cp313-cp313-win32.whl", hash = "sha256:610eda2e3838f401105e6326ca304f5da1e15393ae25dacae5c5c63f2c275b13", size = 1965601, upload-time = "2026-04-20T14:41:42.128Z" }, + { url = "https://files.pythonhosted.org/packages/ef/bb/adb70d9a762ddd002d723fbf1bd492244d37da41e3af7b74ad212609027e/pydantic_core-2.46.3-cp313-cp313-win_amd64.whl", hash = "sha256:68cc7866ed863db34351294187f9b729964c371ba33e31c26f478471c52e1ed0", size = 2071517, upload-time = "2026-04-20T14:43:36.096Z" }, + { url = "https://files.pythonhosted.org/packages/52/eb/66faefabebfe68bd7788339c9c9127231e680b11906368c67ce112fdb47f/pydantic_core-2.46.3-cp313-cp313-win_arm64.whl", hash = "sha256:f64b5537ac62b231572879cd08ec05600308636a5d63bcbdb15063a466977bec", size = 2035802, upload-time = "2026-04-20T14:43:38.507Z" }, + { url = "https://files.pythonhosted.org/packages/7f/db/a7bcb4940183fda36022cd18ba8dd12f2dff40740ec7b58ce7457befa416/pydantic_core-2.46.3-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:afa3aa644f74e290cdede48a7b0bee37d1c35e71b05105f6b340d484af536d9b", size = 2097614, upload-time = "2026-04-20T14:44:38.374Z" }, + { url = "https://files.pythonhosted.org/packages/24/35/e4066358a22e3e99519db370494c7528f5a2aa1367370e80e27e20283543/pydantic_core-2.46.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ced3310e51aa425f7f77da8bbbb5212616655bedbe82c70944320bc1dbe5e018", size = 1951896, upload-time = "2026-04-20T14:40:53.996Z" }, + { url = "https://files.pythonhosted.org/packages/87/92/37cf4049d1636996e4b888c05a501f40a43ff218983a551d57f9d5e14f0d/pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e29908922ce9da1a30b4da490bd1d3d82c01dcfdf864d2a74aacee674d0bfa34", size = 1979314, upload-time = "2026-04-20T14:41:49.446Z" }, + { url = "https://files.pythonhosted.org/packages/d8/36/9ff4d676dfbdfb2d591cf43f3d90ded01e15b1404fd101180ed2d62a2fd3/pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0c9ff69140423eea8ed2d5477df3ba037f671f5e897d206d921bc9fdc39613e7", size = 2056133, upload-time = "2026-04-20T14:42:23.574Z" }, + { url = "https://files.pythonhosted.org/packages/bc/f0/405b442a4d7ba855b06eec8b2bf9c617d43b8432d099dfdc7bf999293495/pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b675ab0a0d5b1c8fdb81195dc5bcefea3f3c240871cdd7ff9a2de8aa50772eb2", size = 2228726, upload-time = "2026-04-20T14:44:22.816Z" }, + { url = "https://files.pythonhosted.org/packages/e7/f8/65cd92dd5a0bd89ba277a98ecbfaf6fc36bbd3300973c7a4b826d6ab1391/pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0087084960f209a9a4af50ecd1fb063d9ad3658c07bb81a7a53f452dacbfb2ba", size = 2301214, upload-time = "2026-04-20T14:44:48.792Z" }, + { url = "https://files.pythonhosted.org/packages/fd/86/ef96a4c6e79e7a2d0410826a68fbc0eccc0fd44aa733be199d5fcac3bb87/pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed42e6cc8e1b0e2b9b96e2276bad70ae625d10d6d524aed0c93de974ae029f9f", size = 2099927, upload-time = "2026-04-20T14:41:40.196Z" }, + { url = "https://files.pythonhosted.org/packages/6d/53/269caf30e0096e0a8a8f929d1982a27b3879872cca2d917d17c2f9fdf4fe/pydantic_core-2.46.3-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:f1771ce258afb3e4201e67d154edbbae712a76a6081079fe247c2f53c6322c22", size = 2128789, upload-time = "2026-04-20T14:41:15.868Z" }, + { url = "https://files.pythonhosted.org/packages/00/b0/1a6d9b6a587e118482910c244a1c5acf4d192604174132efd12bf0ac486f/pydantic_core-2.46.3-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a7610b6a5242a6c736d8ad47fd5fff87fcfe8f833b281b1c409c3d6835d9227f", size = 2173815, upload-time = "2026-04-20T14:44:25.152Z" }, + { url = "https://files.pythonhosted.org/packages/87/56/e7e00d4041a7e62b5a40815590114db3b535bf3ca0bf4dca9f16cef25246/pydantic_core-2.46.3-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:ff5e7783bcc5476e1db448bf268f11cb257b1c276d3e89f00b5727be86dd0127", size = 2181608, upload-time = "2026-04-20T14:41:28.933Z" }, + { url = "https://files.pythonhosted.org/packages/e8/22/4bd23c3d41f7c185d60808a1de83c76cf5aeabf792f6c636a55c3b1ec7f9/pydantic_core-2.46.3-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:9d2e32edcc143bc01e95300671915d9ca052d4f745aa0a49c48d4803f8a85f2c", size = 2326968, upload-time = "2026-04-20T14:42:03.962Z" }, + { url = "https://files.pythonhosted.org/packages/24/ac/66cd45129e3915e5ade3b292cb3bc7fd537f58f8f8dbdaba6170f7cabb74/pydantic_core-2.46.3-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:6e42d83d1c6b87fa56b521479cff237e626a292f3b31b6345c15a99121b454c1", size = 2369842, upload-time = "2026-04-20T14:41:35.52Z" }, + { url = "https://files.pythonhosted.org/packages/a2/51/dd4248abb84113615473aa20d5545b7c4cd73c8644003b5259686f93996c/pydantic_core-2.46.3-cp314-cp314-win32.whl", hash = "sha256:07bc6d2a28c3adb4f7c6ae46aa4f2d2929af127f587ed44057af50bf1ce0f505", size = 1959661, upload-time = "2026-04-20T14:41:00.042Z" }, + { url = "https://files.pythonhosted.org/packages/20/eb/59980e5f1ae54a3b86372bd9f0fa373ea2d402e8cdcd3459334430f91e91/pydantic_core-2.46.3-cp314-cp314-win_amd64.whl", hash = "sha256:8940562319bc621da30714617e6a7eaa6b98c84e8c685bcdc02d7ed5e7c7c44e", size = 2071686, upload-time = "2026-04-20T14:43:16.471Z" }, + { url = "https://files.pythonhosted.org/packages/8c/db/1cf77e5247047dfee34bc01fa9bca134854f528c8eb053e144298893d370/pydantic_core-2.46.3-cp314-cp314-win_arm64.whl", hash = "sha256:5dcbbcf4d22210ced8f837c96db941bdb078f419543472aca5d9a0bb7cddc7df", size = 2026907, upload-time = "2026-04-20T14:43:31.732Z" }, + { url = "https://files.pythonhosted.org/packages/57/c0/b3df9f6a543276eadba0a48487b082ca1f201745329d97dbfa287034a230/pydantic_core-2.46.3-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:d0fe3dce1e836e418f912c1ad91c73357d03e556a4d286f441bf34fed2dbeecf", size = 2095047, upload-time = "2026-04-20T14:42:37.982Z" }, + { url = "https://files.pythonhosted.org/packages/66/57/886a938073b97556c168fd99e1a7305bb363cd30a6d2c76086bf0587b32a/pydantic_core-2.46.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:9ce92e58abc722dac1bf835a6798a60b294e48eb0e625ec9fd994b932ac5feee", size = 1934329, upload-time = "2026-04-20T14:43:49.655Z" }, + { url = "https://files.pythonhosted.org/packages/0b/7c/b42eaa5c34b13b07ecb51da21761297a9b8eb43044c864a035999998f328/pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a03e6467f0f5ab796a486146d1b887b2dc5e5f9b3288898c1b1c3ad974e53e4a", size = 1974847, upload-time = "2026-04-20T14:42:10.737Z" }, + { url = "https://files.pythonhosted.org/packages/e6/9b/92b42db6543e7de4f99ae977101a2967b63122d4b6cf7773812da2d7d5b5/pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2798b6ba041b9d70acfb9071a2ea13c8456dd1e6a5555798e41ba7b0790e329c", size = 2041742, upload-time = "2026-04-20T14:40:44.262Z" }, + { url = "https://files.pythonhosted.org/packages/0f/19/46fbe1efabb5aa2834b43b9454e70f9a83ad9c338c1291e48bdc4fecf167/pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9be3e221bdc6d69abf294dcf7aff6af19c31a5cdcc8f0aa3b14be29df4bd03b1", size = 2236235, upload-time = "2026-04-20T14:41:27.307Z" }, + { url = "https://files.pythonhosted.org/packages/77/da/b3f95bc009ad60ec53120f5d16c6faa8cabdbe8a20d83849a1f2b8728148/pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f13936129ce841f2a5ddf6f126fea3c43cd128807b5a59588c37cf10178c2e64", size = 2282633, upload-time = "2026-04-20T14:44:33.271Z" }, + { url = "https://files.pythonhosted.org/packages/cc/6e/401336117722e28f32fb8220df676769d28ebdf08f2f4469646d404c43a3/pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28b5f2ef03416facccb1c6ef744c69793175fd27e44ef15669201601cf423acb", size = 2109679, upload-time = "2026-04-20T14:44:41.065Z" }, + { url = "https://files.pythonhosted.org/packages/fc/53/b289f9bc8756a32fe718c46f55afaeaf8d489ee18d1a1e7be1db73f42cc4/pydantic_core-2.46.3-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:830d1247d77ad23852314f069e9d7ddafeec5f684baf9d7e7065ed46a049c4e6", size = 2108342, upload-time = "2026-04-20T14:42:50.144Z" }, + { url = "https://files.pythonhosted.org/packages/10/5b/8292fc7c1f9111f1b2b7c1b0dcf1179edcd014fc3ea4517499f50b829d71/pydantic_core-2.46.3-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0793c90c1a3c74966e7975eaef3ed30ebdff3260a0f815a62a22adc17e4c01c", size = 2157208, upload-time = "2026-04-20T14:42:08.133Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9e/f80044e9ec07580f057a89fc131f78dda7a58751ddf52bbe05eaf31db50f/pydantic_core-2.46.3-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:d2d0aead851b66f5245ec0c4fb2612ef457f8bbafefdf65a2bf9d6bac6140f47", size = 2167237, upload-time = "2026-04-20T14:42:25.412Z" }, + { url = "https://files.pythonhosted.org/packages/f8/84/6781a1b037f3b96be9227edbd1101f6d3946746056231bf4ac48cdff1a8d/pydantic_core-2.46.3-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:2f40e4246676beb31c5ce77c38a55ca4e465c6b38d11ea1bd935420568e0b1ab", size = 2312540, upload-time = "2026-04-20T14:40:40.313Z" }, + { url = "https://files.pythonhosted.org/packages/3e/db/19c0839feeb728e7df03255581f198dfdf1c2aeb1e174a8420b63c5252e5/pydantic_core-2.46.3-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:cf489cf8986c543939aeee17a09c04d6ffb43bfef8ca16fcbcc5cfdcbed24dba", size = 2369556, upload-time = "2026-04-20T14:41:09.427Z" }, + { url = "https://files.pythonhosted.org/packages/e0/15/3228774cb7cd45f5f721ddf1b2242747f4eb834d0c491f0c02d606f09fed/pydantic_core-2.46.3-cp314-cp314t-win32.whl", hash = "sha256:ffe0883b56cfc05798bf994164d2b2ff03efe2d22022a2bb080f3b626176dd56", size = 1949756, upload-time = "2026-04-20T14:41:25.717Z" }, + { url = "https://files.pythonhosted.org/packages/b8/2a/c79cf53fd91e5a87e30d481809f52f9a60dd221e39de66455cf04deaad37/pydantic_core-2.46.3-cp314-cp314t-win_amd64.whl", hash = "sha256:706d9d0ce9cf4593d07270d8e9f53b161f90c57d315aeec4fb4fd7a8b10240d8", size = 2051305, upload-time = "2026-04-20T14:43:18.627Z" }, + { url = "https://files.pythonhosted.org/packages/0b/db/d8182a7f1d9343a032265aae186eb063fe26ca4c40f256b21e8da4498e89/pydantic_core-2.46.3-cp314-cp314t-win_arm64.whl", hash = "sha256:77706aeb41df6a76568434701e0917da10692da28cb69d5fb6919ce5fdb07374", size = 2026310, upload-time = "2026-04-20T14:41:01.778Z" }, + { url = "https://files.pythonhosted.org/packages/66/7f/03dbad45cd3aa9083fbc93c210ae8b005af67e4136a14186950a747c6874/pydantic_core-2.46.3-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:9715525891ed524a0a1eb6d053c74d4d4ad5017677fb00af0b7c2644a31bae46", size = 2105683, upload-time = "2026-04-20T14:42:19.779Z" }, + { url = "https://files.pythonhosted.org/packages/26/22/4dc186ac8ea6b257e9855031f51b62a9637beac4d68ac06bee02f046f836/pydantic_core-2.46.3-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:9d2f400712a99a013aff420ef1eb9be077f8189a36c1e3ef87660b4e1088a874", size = 1940052, upload-time = "2026-04-20T14:43:59.274Z" }, + { url = "https://files.pythonhosted.org/packages/0d/ca/d376391a5aff1f2e8188960d7873543608130a870961c2b6b5236627c116/pydantic_core-2.46.3-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd2aab0e2e9dc2daf36bd2686c982535d5e7b1d930a1344a7bb6e82baab42a76", size = 1988172, upload-time = "2026-04-20T14:41:17.469Z" }, + { url = "https://files.pythonhosted.org/packages/0e/6b/523b9f85c23788755d6ab949329de692a2e3a584bc6beb67fef5e035aa9d/pydantic_core-2.46.3-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e9d76736da5f362fabfeea6a69b13b7f2be405c6d6966f06b2f6bfff7e64531", size = 2128596, upload-time = "2026-04-20T14:40:41.707Z" }, + { url = "https://files.pythonhosted.org/packages/34/42/f426db557e8ab2791bc7562052299944a118655496fbff99914e564c0a94/pydantic_core-2.46.3-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:b12dd51f1187c2eb489af8e20f880362db98e954b54ab792fa5d92e8bcc6b803", size = 2091877, upload-time = "2026-04-20T14:43:27.091Z" }, + { url = "https://files.pythonhosted.org/packages/5c/4f/86a832a9d14df58e663bfdf4627dc00d3317c2bd583c4fb23390b0f04b8e/pydantic_core-2.46.3-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:f00a0961b125f1a47af7bcc17f00782e12f4cd056f83416006b30111d941dfa3", size = 1932428, upload-time = "2026-04-20T14:40:45.781Z" }, + { url = "https://files.pythonhosted.org/packages/11/1a/fe857968954d93fb78e0d4b6df5c988c74c4aaa67181c60be7cfe327c0ca/pydantic_core-2.46.3-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57697d7c056aca4bbb680200f96563e841a6386ac1129370a0102592f4dddff5", size = 1997550, upload-time = "2026-04-20T14:44:02.425Z" }, + { url = "https://files.pythonhosted.org/packages/17/eb/9d89ad2d9b0ba8cd65393d434471621b98912abb10fbe1df08e480ba57b5/pydantic_core-2.46.3-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd35aa21299def8db7ef4fe5c4ff862941a9a158ca7b63d61e66fe67d30416b4", size = 2137657, upload-time = "2026-04-20T14:42:45.149Z" }, + { url = "https://files.pythonhosted.org/packages/1f/da/99d40830684f81dec901cac521b5b91c095394cc1084b9433393cde1c2df/pydantic_core-2.46.3-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:13afdd885f3d71280cf286b13b310ee0f7ccfefd1dbbb661514a474b726e2f25", size = 2107973, upload-time = "2026-04-20T14:42:06.175Z" }, + { url = "https://files.pythonhosted.org/packages/99/a5/87024121818d75bbb2a98ddbaf638e40e7a18b5e0f5492c9ca4b1b316107/pydantic_core-2.46.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:f91c0aff3e3ee0928edd1232c57f643a7a003e6edf1860bc3afcdc749cb513f3", size = 1947191, upload-time = "2026-04-20T14:43:14.319Z" }, + { url = "https://files.pythonhosted.org/packages/60/62/0c1acfe10945b83a6a59d19fbaa92f48825381509e5701b855c08f13db76/pydantic_core-2.46.3-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6529d1d128321a58d30afcc97b49e98836542f68dd41b33c2e972bb9e5290536", size = 2123791, upload-time = "2026-04-20T14:43:22.766Z" }, + { url = "https://files.pythonhosted.org/packages/75/3e/3b2393b4c8f44285561dc30b00cf307a56a2eff7c483a824db3b8221ca51/pydantic_core-2.46.3-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:975c267cff4f7e7272eacbe50f6cc03ca9a3da4c4fbd66fffd89c94c1e311aa1", size = 2153197, upload-time = "2026-04-20T14:44:27.932Z" }, + { url = "https://files.pythonhosted.org/packages/ba/75/5af02fb35505051eee727c061f2881c555ab4f8ddb2d42da715a42c9731b/pydantic_core-2.46.3-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:2b8e4f2bbdf71415c544b4b1138b8060db7b6611bc927e8064c769f64bed651c", size = 2181073, upload-time = "2026-04-20T14:43:20.729Z" }, + { url = "https://files.pythonhosted.org/packages/10/92/7e0e1bd9ca3c68305db037560ca2876f89b2647deb2f8b6319005de37505/pydantic_core-2.46.3-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:e61ea8e9fff9606d09178f577ff8ccdd7206ff73d6552bcec18e1033c4254b85", size = 2315886, upload-time = "2026-04-20T14:44:04.826Z" }, + { url = "https://files.pythonhosted.org/packages/b8/d8/101655f27eaf3e44558ead736b2795d12500598beed4683f279396fa186e/pydantic_core-2.46.3-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b504bda01bafc69b6d3c7a0c7f039dcf60f47fab70e06fe23f57b5c75bdc82b8", size = 2360528, upload-time = "2026-04-20T14:40:47.431Z" }, + { url = "https://files.pythonhosted.org/packages/07/0f/1c34a74c8d07136f0d729ffe5e1fdab04fbdaa7684f61a92f92511a84a15/pydantic_core-2.46.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:b00b76f7142fc60c762ce579bd29c8fa44aaa56592dd3c54fab3928d0d4ca6ff", size = 2184144, upload-time = "2026-04-20T14:42:57Z" }, +] + +[[package]] +name = "pydantic-settings" +version = "2.14.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydantic" }, + { name = "python-dotenv" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5c/b5/8f48e906c3e0205276e8bd8cb7512217a87b2685304d64be27cad5b3019f/pydantic_settings-2.14.2.tar.gz", hash = "sha256:c19dd64b19097f1de80184f0cc7b0272a13ae6e170cbf240a3e27e381ed14a5f", size = 237700, upload-time = "2026-06-19T13:44:56.324Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/c1/6e422f34e569cf8e18df68d1939c81c099d2b61e4f7d9621c8a77560799c/pydantic_settings-2.14.2-py3-none-any.whl", hash = "sha256:a20c97b37910b6550d5ea50fbcc2d4187defe58cd57070b73863d069419c9440", size = 61715, upload-time = "2026-06-19T13:44:55.02Z" }, +] + +[[package]] +name = "pygments" +version = "2.20.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f", size = 4955991, upload-time = "2026-03-29T13:29:33.898Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = 1231151, upload-time = "2026-03-29T13:29:30.038Z" }, +] + +[[package]] +name = "pylatexenc" +version = "2.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5d/ab/34ec41718af73c00119d0351b7a2531d2ebddb51833a36448fc7b862be60/pylatexenc-2.10.tar.gz", hash = "sha256:3dd8fd84eb46dc30bee1e23eaab8d8fb5a7f507347b23e5f38ad9675c84f40d3", size = 162597, upload-time = "2021-04-06T07:56:07.854Z" } + +[[package]] +name = "pypdfium2" +version = "5.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bc/13/ee794b8a810b7226426c8b50d6c28637c059e7da0caf9936164f352ef858/pypdfium2-5.7.1.tar.gz", hash = "sha256:3b3b20a56048dbe3fd4bf397f9bec854c834668bc47ef6a7d9041b23bb04317b", size = 266791, upload-time = "2026-04-20T15:01:02.598Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d6/f7/e87ba0eec9cd4e9eedd4bbb867515da970525ca8c105dd5e254758216ee3/pypdfium2-5.7.1-py3-none-android_23_arm64_v8a.whl", hash = "sha256:8008f45e8adc4fc1ec2a51e018e01cd0692d4859bdbb28e88be221804f329468", size = 3367033, upload-time = "2026-04-20T15:00:22.847Z" }, + { url = "https://files.pythonhosted.org/packages/f6/e1/a4b9be9a09fa9857958357ced51afb25518f6a48e4e68fdc9a091f0f2259/pypdfium2-5.7.1-py3-none-android_23_armeabi_v7a.whl", hash = "sha256:892fcb5a618f5f551fffdb968ac2d64911953c3ba0f9aa628239705af68dbe15", size = 2824449, upload-time = "2026-04-20T15:00:24.913Z" }, + { url = "https://files.pythonhosted.org/packages/7b/5d/c91abb2610316a1622f86ddf706fcd04d34c7e6923c3fa8fa145c8f7a372/pypdfium2-5.7.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7431847d45dedc3c7ffede15b58ac611e996a0cdcd61318a0190d46b9980ac2b", size = 3443730, upload-time = "2026-04-20T15:00:26.664Z" }, + { url = "https://files.pythonhosted.org/packages/50/8b/b9eefed83d6a0a59384ee64d25c1515e831c234c3ed6b8c6dfc8f99f4875/pypdfium2-5.7.1-py3-none-macosx_11_0_x86_64.whl", hash = "sha256:548bd09c9f97565ae8ddba30bb65823cbf791b84e4cdb63ed582aec2c289dbe2", size = 3626483, upload-time = "2026-04-20T15:00:28.629Z" }, + { url = "https://files.pythonhosted.org/packages/5b/98/6d62723e1f58d66e7e0073c4f12048f9d5dcd478369da0990db08e677dd5/pypdfium2-5.7.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18a15ad0918acc3ea98778394f0331b9ad2a1b7384ab3d8d8c63422ffd01ed13", size = 3610098, upload-time = "2026-04-20T15:00:30.344Z" }, + { url = "https://files.pythonhosted.org/packages/0b/4a/f72b42578f30971c29915e33ee598ed451aa6f0c2808a71526c1b81afd8d/pypdfium2-5.7.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1df04564659d807fb38810d9bd1ac18419d8acbb5f87f2cb20675d7332635b18", size = 3340119, upload-time = "2026-04-20T15:00:32.19Z" }, + { url = "https://files.pythonhosted.org/packages/0d/64/de69c5feed470617f243e61cac841bfd1b5273d575c3d3b49b27f738e334/pypdfium2-5.7.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a146d036a6b085a406aa256548b827b63016714fd77f8e11b7f704c1175e8cc", size = 3738864, upload-time = "2026-04-20T15:00:33.798Z" }, + { url = "https://files.pythonhosted.org/packages/07/ce/69ff10766565c5ffcb66cebe780ce3bc4fe7cc16b218df8c240075881c66/pypdfium2-5.7.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3397b0d705b6858c87dec1dc9c44d4c7094601a9b231097f441b64d1a7d5ff0b", size = 4169839, upload-time = "2026-04-20T15:00:35.973Z" }, + { url = "https://files.pythonhosted.org/packages/03/4b/fff16a831a6f07aad02da0d02b620c455310b8bf4e2642909175dcb7ccae/pypdfium2-5.7.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc2cdf603ac766b91b7c1b455197ec1c3471089d75f999b046edb65ed6cedd80", size = 3657630, upload-time = "2026-04-20T15:00:38.407Z" }, + { url = "https://files.pythonhosted.org/packages/9b/58/d3148917616164cfad347b0b509342737ed80e060afab07523ffeac2a05f/pypdfium2-5.7.1-py3-none-manylinux_2_27_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1b1a6a5f3320b59138e7570a3f78840540383d058ac180a9a21f924ad3bd7f83", size = 3088898, upload-time = "2026-04-20T15:00:40.109Z" }, + { url = "https://files.pythonhosted.org/packages/e4/1d/387ca4dfe9865a8d61114dae2debba4d86eed07cdc6a31c5527a049583be/pypdfium2-5.7.1-py3-none-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:91b809c40a5fc248107d13fbcf1dd2c64dbc8e572693a9b93e350bf31efda92b", size = 2955404, upload-time = "2026-04-20T15:00:41.921Z" }, + { url = "https://files.pythonhosted.org/packages/ad/87/4afc2bfe35d71942f1bf9e774086f74af66a0a4e56338f39a7cbc5b8721c/pypdfium2-5.7.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:85611ef61cbc0f5e04de8f99fec0f3db3920b09f46c62afa08c9caa21a74b353", size = 4126600, upload-time = "2026-04-20T15:00:44.079Z" }, + { url = "https://files.pythonhosted.org/packages/b1/c4/872eef4cb8f0d8ebbf967ca713254ac71c75878a1d5798bc2b8d23104e52/pypdfium2-5.7.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:b2764ab909f9b444d4e643be90b064c4053e6828c28bfd47639fc84526ba244d", size = 3742636, upload-time = "2026-04-20T15:00:46.009Z" }, + { url = "https://files.pythonhosted.org/packages/10/6d/3805a53623a72e20b68e6814b37582994298b231628656ff227fa1158a1f/pypdfium2-5.7.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:fcea3cc20b7cca7d84ceee68b9c6ef7fe773fb71c145542769dc2ceb27e9698a", size = 4332743, upload-time = "2026-04-20T15:00:47.829Z" }, + { url = "https://files.pythonhosted.org/packages/92/61/3e3f8ae7ad04400bc3c6a75bbf59db500eaf9dff05477d1b25ff4a36363b/pypdfium2-5.7.1-py3-none-musllinux_1_2_ppc64le.whl", hash = "sha256:f04546bc314973397148805d44f8e660e81aa80c2a87e12afb892c11493ded6c", size = 4377471, upload-time = "2026-04-20T15:00:49.443Z" }, + { url = "https://files.pythonhosted.org/packages/8d/e0/1026f297b5be292cae7095aa4814d57faa3faba0b49552afcaa11a1c2e4e/pypdfium2-5.7.1-py3-none-musllinux_1_2_riscv64.whl", hash = "sha256:66275c8a854969bdf905abc7599e5623d62739c44604d69788ff5457082d275b", size = 3919215, upload-time = "2026-04-20T15:00:51.2Z" }, + { url = "https://files.pythonhosted.org/packages/e8/5d/7d6d5b392fa42a997aadf127e3b2c25739199141054b33f759ba5d02e653/pypdfium2-5.7.1-py3-none-musllinux_1_2_s390x.whl", hash = "sha256:bbed8f32040ce3b3236a512265976017c2465ea6643a1730f008b39e0339b8ce", size = 4263089, upload-time = "2026-04-20T15:00:53.105Z" }, + { url = "https://files.pythonhosted.org/packages/2e/b8/d51bd4a1d426fa5b99d4516c77cc1892a8fbfd5a93a823e2679cf9b09ee0/pypdfium2-5.7.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:c55d3df09bd0d72a1d192107dcbf80bcb2791662a3eca3b084001f947d3040d5", size = 4175967, upload-time = "2026-04-20T15:00:54.757Z" }, + { url = "https://files.pythonhosted.org/packages/30/52/06a6358856374ae4400ee1ad0ddaa01d5c31fcd6e8f4577e6a3ed1c40343/pypdfium2-5.7.1-py3-none-win32.whl", hash = "sha256:4f6bbe1211c5883c8fc9ce11008347e5b96ec6571456d959ae289cecdb2867f0", size = 3629154, upload-time = "2026-04-20T15:00:56.916Z" }, + { url = "https://files.pythonhosted.org/packages/6f/13/e0dbc9377d976d8b03ed0dd07fe9892e06d09fcf4f6a0e66df49366227d7/pypdfium2-5.7.1-py3-none-win_amd64.whl", hash = "sha256:fdf117af26bd310f4f176b3cf0e2e23f0f800e48dcf2bcf6c2cca0de3326f5cb", size = 3747295, upload-time = "2026-04-20T15:00:59.15Z" }, + { url = "https://files.pythonhosted.org/packages/bc/67/4759522f5bca0ac4cda9f42c7f3f818aa826568793bd8b4532d2d2ffa515/pypdfium2-5.7.1-py3-none-win_arm64.whl", hash = "sha256:622821698fcc30fc560bd4eead6df9e6b846de9876b82861bed0091c09a4c27b", size = 3540903, upload-time = "2026-04-20T15:01:00.994Z" }, +] + +[[package]] +name = "pytest" +version = "9.0.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, + { name = "pygments" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7d/0d/549bd94f1a0a402dc8cf64563a117c0f3765662e2e668477624baeec44d5/pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c", size = 1572165, upload-time = "2026-04-07T17:16:18.027Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d4/24/a372aaf5c9b7208e7112038812994107bc65a84cd00e0354a88c2c77a617/pytest-9.0.3-py3-none-any.whl", hash = "sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5d9", size = 375249, upload-time = "2026-04-07T17:16:16.13Z" }, +] + +[[package]] +name = "pytest-asyncio" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "backports-asyncio-runner", marker = "python_full_version < '3.11'" }, + { name = "pytest" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/90/2c/8af215c0f776415f3590cac4f9086ccefd6fd463befeae41cd4d3f193e5a/pytest_asyncio-1.3.0.tar.gz", hash = "sha256:d7f52f36d231b80ee124cd216ffb19369aa168fc10095013c6b014a34d3ee9e5", size = 50087, upload-time = "2025-11-10T16:07:47.256Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/35/f8b19922b6a25bc0880171a2f1a003eaeb93657475193ab516fd87cac9da/pytest_asyncio-1.3.0-py3-none-any.whl", hash = "sha256:611e26147c7f77640e6d0a92a38ed17c3e9848063698d5c93d5aa7aa11cebff5", size = 15075, upload-time = "2025-11-10T16:07:45.537Z" }, +] + +[[package]] +name = "python-bidi" +version = "0.6.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ed/e3/c0c8bf6fca79ac946a28d57f116e3b9e5b10a4469b6f70bf73f3744c49bf/python_bidi-0.6.7.tar.gz", hash = "sha256:c10065081c0e137975de5d9ba2ff2306286dbf5e0c586d4d5aec87c856239b41", size = 45503, upload-time = "2025-10-22T09:52:49.624Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/c3/cdbece686fab47d4d04f2c15d372b3d3f3308da2e535657bf4bbd5afef50/python_bidi-0.6.7-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:94dbfd6a6ec0ae64b5262290bf014d6063f9ac8688bda9ec668dc175378d2c80", size = 274857, upload-time = "2025-10-22T09:51:57.298Z" }, + { url = "https://files.pythonhosted.org/packages/aa/19/1cd52f04345717613eafe8b23dd1ce8799116f7cc54b23aaefa27db298d6/python_bidi-0.6.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d8274ff02d447cca026ba00f56070ba15f95e184b2d028ee0e4b6c9813d2aaf9", size = 264682, upload-time = "2025-10-22T09:51:48.203Z" }, + { url = "https://files.pythonhosted.org/packages/c7/39/f46dae8bd298ffecaf169ea8871c1e63c6116e1b0178ca4eab2cb99d1c13/python_bidi-0.6.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:24afff65c581a5d6f658a9ec027d6719d19a1d8a4401000fdb22d2eeb677b8e3", size = 293680, upload-time = "2025-10-22T09:50:57.091Z" }, + { url = "https://files.pythonhosted.org/packages/96/ed/c4e2c684bf8f226de4d0070780073fc7f3f97def3ad06f11b4c021bfa965/python_bidi-0.6.7-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8678c2272e7bd60a75f781409e900c9ddb9f01f55c625d83ae0d49dfc6a2674f", size = 302625, upload-time = "2025-10-22T09:51:05.378Z" }, + { url = "https://files.pythonhosted.org/packages/83/fa/3b5be9187515a4c28ad358c2f2785f968d4de090389f08a11c826ae1c17f/python_bidi-0.6.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4cd82e65b5aeb31bd73534e61ece1cab625f4bcbdc13bc4ddc5f8cbfb37c24a", size = 441183, upload-time = "2025-10-22T09:51:14.014Z" }, + { url = "https://files.pythonhosted.org/packages/d7/c7/023028ca45e674b67abee29a049fb3b7aac74873181940a1d34ad27e23cd/python_bidi-0.6.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dde1c3f3edb1f0095dcbf79cf8a0bb768f9539e809d0ad010d78200eea97d42a", size = 326788, upload-time = "2025-10-22T09:51:22.58Z" }, + { url = "https://files.pythonhosted.org/packages/d3/30/0753601fdad405e806c89cfa9603ff75241f8c7196cfe2cb37c43e34cdbd/python_bidi-0.6.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c463ae15e94b1c6a8a50bd671d6166b0b0d779fd1e56cbf46d8a4a84c9aa2d0", size = 302036, upload-time = "2025-10-22T09:51:40.341Z" }, + { url = "https://files.pythonhosted.org/packages/c6/38/e83901206c7161e4fa14f52d1244eb54bad2b9a959be62af7b472cded20a/python_bidi-0.6.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f9fa1257e075eeeed67d21f95e411036b7ca2b5c78f757d4ac66485c191720a", size = 315484, upload-time = "2025-10-22T09:51:32.285Z" }, + { url = "https://files.pythonhosted.org/packages/98/89/cd73185ad92990261b050a30753a693ad22a72ad5dc61b4e3845c58eff75/python_bidi-0.6.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9adeec7cab0f2c2c291bd7faf9fa3fa233365fd0bf1c1c27a6ddd6cc563d4b32", size = 474003, upload-time = "2025-10-22T09:52:06.535Z" }, + { url = "https://files.pythonhosted.org/packages/9f/38/03fd74c68cae08d08a32a4bc2031300a882a7ceab39b7e7fc5a5e37f5b7c/python_bidi-0.6.7-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:3b96744e4709f4445788a3645cea7ef8d7520ccd4fa8bbbfb3b650702e12c1e6", size = 567114, upload-time = "2025-10-22T09:52:17.534Z" }, + { url = "https://files.pythonhosted.org/packages/98/44/e196002ba8317d48ebab4750092a61287574195a3f685232059aa776edf4/python_bidi-0.6.7-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:8860d67dc04dc530b8b4f588f38b7341a76f2ec44a45685a2d54e9dcffa5d15a", size = 493810, upload-time = "2025-10-22T09:52:28.683Z" }, + { url = "https://files.pythonhosted.org/packages/e8/e2/1d495515d3fea0ecdd8bbb50e573282826ba074bceb2c0430206f94cde68/python_bidi-0.6.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:a4319f478ab1b90bbbe9921606ecb7baa0ebf0b332e821d41c3abdf1a30f0c35", size = 465208, upload-time = "2025-10-22T09:52:39.411Z" }, + { url = "https://files.pythonhosted.org/packages/89/c7/fc5b25d017677793435c415c7884f9c60ce7705bd35565280cca3be69fa9/python_bidi-0.6.7-cp310-cp310-win32.whl", hash = "sha256:8d4e621caadfdbc73d36eabdb2f392da850d28c58b020738411d09dda6208509", size = 157426, upload-time = "2025-10-22T09:52:58.114Z" }, + { url = "https://files.pythonhosted.org/packages/85/be/bd323950b98d40ab45f97630c3bfb5ed3a7416b2f71c250bcc1ed1267eb0/python_bidi-0.6.7-cp310-cp310-win_amd64.whl", hash = "sha256:fd87d112eda1f0528074e1f7c0312881816cb75854133021124269a27c6c48dc", size = 161038, upload-time = "2025-10-22T09:52:50.44Z" }, + { url = "https://files.pythonhosted.org/packages/ec/de/c30a13ad95239507af472a5fc2cadd2e5e172055068f12ac39b37922c7f8/python_bidi-0.6.7-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a8892a7da0f617135fe9c92dc7070d13a0f96ab3081f9db7ff5b172a3905bd78", size = 274420, upload-time = "2025-10-22T09:51:58.262Z" }, + { url = "https://files.pythonhosted.org/packages/ad/9f/be5efef7eea5f1e2a6415c4052a988f594dcf5a11a15103f2718d324a35b/python_bidi-0.6.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:06650a164e63e94dc8a291cc9d415b4027cb1cce125bc9b02dac0f34d535ed47", size = 264586, upload-time = "2025-10-22T09:51:49.255Z" }, + { url = "https://files.pythonhosted.org/packages/87/ec/2c374b6de35870817ffb3512c0666ea8c3794ef923b5586c69451e0e5395/python_bidi-0.6.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6df7be07af867ec1d121c92ea827efad4d77b25457c06eeab477b601e82b2340", size = 293672, upload-time = "2025-10-22T09:50:58.504Z" }, + { url = "https://files.pythonhosted.org/packages/29/1a/722d7d7128bdc9a530351a0d2fdf2ff5f4af66a865a6bca925f99832e2cc/python_bidi-0.6.7-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:73a88dc333efc42281bd800d5182c8625c6e11d109fc183fe3d7a11d48ab1150", size = 302643, upload-time = "2025-10-22T09:51:06.419Z" }, + { url = "https://files.pythonhosted.org/packages/24/d7/5b9b593dd58fc745233d8476e9f4e0edd437547c78c58340619868470349/python_bidi-0.6.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f24189dc3aea3a0a94391a047076e1014306b39ba17d7a38ebab510553cd1a97", size = 441692, upload-time = "2025-10-22T09:51:15.39Z" }, + { url = "https://files.pythonhosted.org/packages/08/b9/16e7a1db5f022da6654e89875d231ec2e044d42ef7b635feeff61cee564c/python_bidi-0.6.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a507fe6928a27a308e04ebf2065719b7850d1bf9ff1924f4e601ef77758812bd", size = 326933, upload-time = "2025-10-22T09:51:23.631Z" }, + { url = "https://files.pythonhosted.org/packages/e0/a6/45aaec301292c6a07a9cc3168f5d1a92c8adc2ef36a3cd1f227b9caa980c/python_bidi-0.6.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fbbffb948a32f9783d1a28bc0c53616f0a76736ed1e7c1d62e3e99a8dfaab869", size = 302034, upload-time = "2025-10-22T09:51:41.347Z" }, + { url = "https://files.pythonhosted.org/packages/71/a3/7e42cce6e153c21b4e5cc96d429a5910909823f6fedd174b64ff67bc76a7/python_bidi-0.6.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f7e507e1e798ebca77ddc9774fd405107833315ad802cfdaa1ab07b6d9154fc8", size = 315738, upload-time = "2025-10-22T09:51:33.409Z" }, + { url = "https://files.pythonhosted.org/packages/43/7c/a5e4c0acc8e6ca61953b4add0576f0483f63b809b5389154e5da13927b0b/python_bidi-0.6.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:849a57d39feaf897955d0b19bbf4796bea53d1bcdf83b82e0a7b059167eb2049", size = 473968, upload-time = "2025-10-22T09:52:07.624Z" }, + { url = "https://files.pythonhosted.org/packages/b1/aa/a18bc3cbab7a0e598cbe7b89f2c0913aedcc66dcafce9a4c357465c87859/python_bidi-0.6.7-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:5ebc19f24e65a1f5c472e26d88e78b9d316e293bc6f205f32de4c4e99276336e", size = 567038, upload-time = "2025-10-22T09:52:18.594Z" }, + { url = "https://files.pythonhosted.org/packages/92/46/fc6c54a8b5bfbee50e650f885ddef4f8c4f92880467ea0bc2bf133747048/python_bidi-0.6.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:24388c77cb00b8aa0f9c84beb7e3e523a3dac4f786ece64a1d8175a07b24da72", size = 493970, upload-time = "2025-10-22T09:52:29.815Z" }, + { url = "https://files.pythonhosted.org/packages/e3/f1/2c15f5b938b2e087e4e950cc14dcead5bedbaabfc6c576dac15739bc0c91/python_bidi-0.6.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:19737d217088ef27014f98eac1827c5913e6fb1dea96332ed84ede61791070d9", size = 465161, upload-time = "2025-10-22T09:52:40.517Z" }, + { url = "https://files.pythonhosted.org/packages/56/d7/73a70a1fb819152485521b8dfe627e14ba9d3d5a65213244ab099adf3600/python_bidi-0.6.7-cp311-cp311-win32.whl", hash = "sha256:95c9de7ebc55ffb777548f2ecaf4b96b0fa0c92f42bf4d897b9f4cd164ec7394", size = 157033, upload-time = "2025-10-22T09:52:59.228Z" }, + { url = "https://files.pythonhosted.org/packages/68/84/06999dc54ea047fe33209af7150df4202ab7ad52deeb66b2c2040ac07884/python_bidi-0.6.7-cp311-cp311-win_amd64.whl", hash = "sha256:898db0ea3e4aaa95b7fecba02a7560dfbf368f9d85053f2875f6d610c4d4ec2c", size = 161282, upload-time = "2025-10-22T09:52:51.467Z" }, + { url = "https://files.pythonhosted.org/packages/e5/03/5b2f3e73501d0f41ebc2b075b49473047c6cdfc3465cf890263fc69e3915/python_bidi-0.6.7-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:11c51579e01f768446a7e13a0059fea1530936a707abcbeaad9467a55cb16073", size = 272536, upload-time = "2025-10-22T09:51:59.721Z" }, + { url = "https://files.pythonhosted.org/packages/31/77/c6048e938a73e5a7c6fa3d5e3627a5961109daa728c2e7d050567cecdc26/python_bidi-0.6.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:47deaada8949af3a790f2cd73b613f9bfa153b4c9450f91c44a60c3109a81f73", size = 263258, upload-time = "2025-10-22T09:51:50.328Z" }, + { url = "https://files.pythonhosted.org/packages/57/56/ed4dc501cab7de70ce35cd435c86278e4eb1caf238c80bc72297767c9219/python_bidi-0.6.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b38ddfab41d10e780edb431edc30aec89bee4ce43d718e3896e99f33dae5c1d3", size = 292700, upload-time = "2025-10-22T09:50:59.628Z" }, + { url = "https://files.pythonhosted.org/packages/77/6a/1bf06d7544c940ffddd97cd0e02c55348a92163c5495fa18e34217dfbebe/python_bidi-0.6.7-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2a93b0394cc684d64356b0475858c116f1e335ffbaba388db93bf47307deadfa", size = 300881, upload-time = "2025-10-22T09:51:07.507Z" }, + { url = "https://files.pythonhosted.org/packages/22/1d/ce7577a8f50291c06e94f651ac5de0d1678fc2642af26a5dad9901a0244f/python_bidi-0.6.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ec1694134961b71ac05241ac989b49ccf08e232b5834d5fc46f8a7c3bb1c13a9", size = 439125, upload-time = "2025-10-22T09:51:16.559Z" }, + { url = "https://files.pythonhosted.org/packages/a3/87/4cf6dcd58e22f0fd904e7a161c6b73a5f9d17d4d49073fcb089ba62f1469/python_bidi-0.6.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8047c33b85f7790474a1f488bef95689f049976a4e1c6f213a8d075d180a93e4", size = 325816, upload-time = "2025-10-22T09:51:25.12Z" }, + { url = "https://files.pythonhosted.org/packages/2a/0a/4028a088e29ce8f1673e85ec9f64204fc368355c3207e6a71619c2b4579a/python_bidi-0.6.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d9de35eb5987da27dd81e371c52142dd8e924bd61c1006003071ea05a735587", size = 300550, upload-time = "2025-10-22T09:51:42.739Z" }, + { url = "https://files.pythonhosted.org/packages/1f/05/cac15eba462d5a2407ac4ef1c792c45a948652b00c6bd81eaab3834a62d2/python_bidi-0.6.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a99d898ad1a399d9c8cab5561b3667fd24f4385820ac90c3340aa637aa5adfc9", size = 313017, upload-time = "2025-10-22T09:51:34.905Z" }, + { url = "https://files.pythonhosted.org/packages/4b/b1/3ba91b9ea60fa54a9aa730a5fe432bd73095d55be371244584fc6818eae1/python_bidi-0.6.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5debaab33562fdfc79ffdbd8d9c51cf07b8529de0e889d8cd145d78137aab21e", size = 472798, upload-time = "2025-10-22T09:52:09.079Z" }, + { url = "https://files.pythonhosted.org/packages/50/40/4bf5fb7255e35c218174f322a4d4c80b63b2604d73adc6e32f843e700824/python_bidi-0.6.7-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:c11c62a3cdb9d1426b1536de9e3446cb09c7d025bd4df125275cae221f214899", size = 565234, upload-time = "2025-10-22T09:52:19.703Z" }, + { url = "https://files.pythonhosted.org/packages/bd/81/ad23fb85bff69d0a25729cd3834254b87c3c7caa93d657c8f8edcbed08f6/python_bidi-0.6.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:6c051f2d28ca542092d01da8b5fe110fb6191ff58d298a54a93dc183bece63bf", size = 491844, upload-time = "2025-10-22T09:52:31.216Z" }, + { url = "https://files.pythonhosted.org/packages/65/85/103baaf142b2838f583b71904a2454fa31bd2a912ff505c25874f45d6c3e/python_bidi-0.6.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:95867a07c5dee0ea2340fe1d0e4f6d9f5c5687d473193b6ee6f86fa44aac45d1", size = 463753, upload-time = "2025-10-22T09:52:41.943Z" }, + { url = "https://files.pythonhosted.org/packages/54/c3/6a5c3b9f42a6b188430c83a7e70a76bc7c0db3354302fce7c8ed94a0c062/python_bidi-0.6.7-cp312-cp312-win32.whl", hash = "sha256:4c73cd980d45bb967799c7f0fc98ea93ae3d65b21ef2ba6abef6a057720bf483", size = 155820, upload-time = "2025-10-22T09:53:00.254Z" }, + { url = "https://files.pythonhosted.org/packages/45/c4/683216398ee3abf6b9bb0f26ae15c696fabbe36468ba26d5271f0c11b343/python_bidi-0.6.7-cp312-cp312-win_amd64.whl", hash = "sha256:d524a4ba765bae9b950706472a77a887a525ed21144fe4b41f6190f6e57caa2c", size = 159966, upload-time = "2025-10-22T09:52:52.547Z" }, + { url = "https://files.pythonhosted.org/packages/25/a5/8ad0a448d42fd5d01dd127c1dc5ab974a8ea6e20305ac89a3356dacd3bdf/python_bidi-0.6.7-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1c061207212cd1db27bf6140b96dcd0536246f1e13e99bb5d03f4632f8e2ad7f", size = 272129, upload-time = "2025-10-22T09:52:00.761Z" }, + { url = "https://files.pythonhosted.org/packages/e6/c0/a13981fc0427a0d35e96fc4e31fbb0f981b28d0ce08416f98f42d51ea3bc/python_bidi-0.6.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a2eb8fca918c7381531035c3aae31c29a1c1300ab8a63cad1ec3a71331096c78", size = 263174, upload-time = "2025-10-22T09:51:51.401Z" }, + { url = "https://files.pythonhosted.org/packages/9c/32/74034239d0bca32c315cac5c3ec07ef8eb44fa0e8cea1585cad85f5b8651/python_bidi-0.6.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:414004fe9cba33d288ff4a04e1c9afe6a737f440595d01b5bbed00d750296bbd", size = 292496, upload-time = "2025-10-22T09:51:00.708Z" }, + { url = "https://files.pythonhosted.org/packages/83/fa/d6c853ed2668b1c12d66e71d4f843d0710d1ccaecc17ce09b35d2b1382a7/python_bidi-0.6.7-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5013ba963e9da606c4c03958cc737ebd5f8b9b8404bd71ab0d580048c746f875", size = 300727, upload-time = "2025-10-22T09:51:09.152Z" }, + { url = "https://files.pythonhosted.org/packages/9c/8d/55685bddfc1fbfa6e28e1c0be7df4023e504de7d2ac1355a3fa610836bc1/python_bidi-0.6.7-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad5f0847da00687f52d2b81828e8d887bdea9eb8686a9841024ea7a0e153028e", size = 438823, upload-time = "2025-10-22T09:51:17.844Z" }, + { url = "https://files.pythonhosted.org/packages/9f/54/db9e70443f89e3ec6fa70dcd16809c3656d1efe7946076dcd59832f722df/python_bidi-0.6.7-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:26a8fe0d532b966708fc5f8aea0602107fde4745a8a5ae961edd3cf02e807d07", size = 325721, upload-time = "2025-10-22T09:51:26.132Z" }, + { url = "https://files.pythonhosted.org/packages/55/c5/98ac9c00f17240f9114c756791f0cd9ba59a5d4b5d84fd1a6d0d50604e82/python_bidi-0.6.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6323e943c7672b271ad9575a2232508f17e87e81a78d7d10d6e93040e210eddf", size = 300493, upload-time = "2025-10-22T09:51:43.783Z" }, + { url = "https://files.pythonhosted.org/packages/0b/cb/382538dd7c656eb50408802b9a9466dbd3432bea059410e65a6c14bc79f9/python_bidi-0.6.7-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:349b89c3110bd25aa56d79418239ca4785d4bcc7a596e63bb996a9696fc6a907", size = 312889, upload-time = "2025-10-22T09:51:36.011Z" }, + { url = "https://files.pythonhosted.org/packages/50/8d/dbc784cecd9b2950ba99c8fef0387ae588837e4e2bfd543be191d18bf9f6/python_bidi-0.6.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e7cad66317f12f0fd755fe41ee7c6b06531d2189a9048a8f37addb5109f7e3e3", size = 472798, upload-time = "2025-10-22T09:52:10.446Z" }, + { url = "https://files.pythonhosted.org/packages/83/e6/398d59075265717d2950622ede1d366aff88ffcaa67a30b85709dea72206/python_bidi-0.6.7-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:49639743f1230648fd4fb47547f8a48ada9c5ca1426b17ac08e3be607c65394c", size = 564974, upload-time = "2025-10-22T09:52:22.416Z" }, + { url = "https://files.pythonhosted.org/packages/7c/8e/2b939be0651bc2b69c234dc700723a26b93611d5bdd06b253d67d9da3557/python_bidi-0.6.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4636d572b357ab9f313c5340915c1cf51e3e54dd069351e02b6b76577fd1a854", size = 491711, upload-time = "2025-10-22T09:52:32.322Z" }, + { url = "https://files.pythonhosted.org/packages/8f/05/f53739ab2ce2eee0c855479a31b64933f6ff6164f3ddc611d04e4b79d922/python_bidi-0.6.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d7310312a68fdb1a8249cf114acb5435aa6b6a958b15810f053c1df5f98476e4", size = 463536, upload-time = "2025-10-22T09:52:43.142Z" }, + { url = "https://files.pythonhosted.org/packages/77/c6/800899e2764f723c2ea9172eabcc1a31ffb8b4bb71ea5869158fd83bd437/python_bidi-0.6.7-cp313-cp313-win32.whl", hash = "sha256:ec985386bc3cd54155f2ef0434fccbfd743617ed6fc1a84dae2ab1de6062e0c6", size = 155786, upload-time = "2025-10-22T09:53:01.357Z" }, + { url = "https://files.pythonhosted.org/packages/30/ba/a811c12c1a4b8fa7c0c0963d92c042284c2049b1586615af6b1774b786d9/python_bidi-0.6.7-cp313-cp313-win_amd64.whl", hash = "sha256:f57726b5a90d818625e6996f5116971b7a4ceb888832337d0e2cf43d1c362a90", size = 159863, upload-time = "2025-10-22T09:52:53.537Z" }, + { url = "https://files.pythonhosted.org/packages/6f/a5/cda302126e878be162bf183eb0bd6dc47ca3e680fb52111e49c62a8ea1eb/python_bidi-0.6.7-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:b0bee27fb596a0f518369c275a965d0448c39a0730e53a030b311bb10562d4d5", size = 271899, upload-time = "2025-10-22T09:52:01.758Z" }, + { url = "https://files.pythonhosted.org/packages/4d/4b/9c15ca0fe795a5c55a39daa391524ac74e26d9187493632d455257771023/python_bidi-0.6.7-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:6c19ab378fefb1f09623f583fcfa12ed42369a998ddfbd39c40908397243c56b", size = 262235, upload-time = "2025-10-22T09:51:52.379Z" }, + { url = "https://files.pythonhosted.org/packages/0f/5e/25b25be64bff05272aa28d8bef2fbbad8415db3159a41703eb2e63dc9824/python_bidi-0.6.7-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:630cee960ba9e3016f95a8e6f725a621ddeff6fd287839f5693ccfab3f3a9b5c", size = 471983, upload-time = "2025-10-22T09:52:12.182Z" }, + { url = "https://files.pythonhosted.org/packages/4d/78/a9363f5da1b10d9211514b96ea47ecc95c797ed5ac566684bfece0666082/python_bidi-0.6.7-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:0dbb4bbae212cca5bcf6e522fe8f572aff7d62544557734c2f810ded844d9eea", size = 565016, upload-time = "2025-10-22T09:52:23.515Z" }, + { url = "https://files.pythonhosted.org/packages/0d/ed/37dcb7d3dc250ecdff8120b026c37fcdbeada4111e4d7148c053180bcf54/python_bidi-0.6.7-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:1dd0a5ec0d8710905cebb4c9e5018aa8464395a33cb32a3a6c2a951bf1984fe5", size = 491180, upload-time = "2025-10-22T09:52:33.505Z" }, + { url = "https://files.pythonhosted.org/packages/40/a3/50d1f6060a7a500768768f5f8735cb68deba36391248dbf13d5d2c9c0885/python_bidi-0.6.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4ea928c31c7364098f853f122868f6f2155d6840661f7ea8b2ccfdf6084eb9f4", size = 463126, upload-time = "2025-10-22T09:52:44.28Z" }, + { url = "https://files.pythonhosted.org/packages/d2/47/712cd7d1068795c57fdf6c4acca00716688aa8b4e353b30de2ed8f599fd6/python_bidi-0.6.7-cp314-cp314-win32.whl", hash = "sha256:f7c055a50d068b3a924bd33a327646346839f55bcb762a26ec3fde8ea5d40564", size = 155793, upload-time = "2025-10-22T09:53:02.7Z" }, + { url = "https://files.pythonhosted.org/packages/c3/e8/1f86bf699b20220578351f9b7b635ed8b6e84dd51ad3cca08b89513ae971/python_bidi-0.6.7-cp314-cp314-win_amd64.whl", hash = "sha256:8a17631e3e691eec4ae6a370f7b035cf0a5767f4457bd615d11728c23df72e43", size = 159821, upload-time = "2025-10-22T09:52:54.95Z" }, + { url = "https://files.pythonhosted.org/packages/b8/4e/6135798d84b62eea70c0f9435301c2a4ba854e87be93a3fcd1d935266d24/python_bidi-0.6.7-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c9a679b24f5c6f366a0dec75745e1abeae2f597f033d0d54c74cbe62e7e6ae28", size = 276275, upload-time = "2025-10-22T09:52:05.078Z" }, + { url = "https://files.pythonhosted.org/packages/74/83/2123596d43e552af9e2806e361646fa579f34a1d1e9e2c1707a0ab6a02dd/python_bidi-0.6.7-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:05fe5971110013610f0db40505d0b204edc756e92eafac1372a464f8b9162b11", size = 266951, upload-time = "2025-10-22T09:51:56.216Z" }, + { url = "https://files.pythonhosted.org/packages/5c/8c/8d1e1501717227a6d52fc7b9c47a3de61486b024fbdd4821bfad724c0699/python_bidi-0.6.7-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17572944e6d8fb616d111fc702c759da2bf7cedab85a3e4fa2af0c9eb95ed438", size = 295745, upload-time = "2025-10-22T09:51:04.438Z" }, + { url = "https://files.pythonhosted.org/packages/fd/ff/ef04e7f9067c2c5d862b9f8d9a192486c500c8aa295f0fb756c25ab47fc8/python_bidi-0.6.7-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3b63d19f3f56ff7f99bce5ca9ef8c811dbf0f509d8e84c1bc06105ed26a49528", size = 304123, upload-time = "2025-10-22T09:51:12.559Z" }, + { url = "https://files.pythonhosted.org/packages/be/72/b973895e257a7d4cc8365ab094612f6ee885df863a4964d8865b9f534b67/python_bidi-0.6.7-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1350033431d75be749273236dcfc808e54404cd6ece6204cdb1bc4ccc163455", size = 442484, upload-time = "2025-10-22T09:51:21.575Z" }, + { url = "https://files.pythonhosted.org/packages/c1/1a/68ca9d10bc309828e8cdb2d57a30dd7e5753ac8520c8d7a0322daeb9eef7/python_bidi-0.6.7-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c5fb99f774748de283fadf915106f130b74be1bade934b7f73a7a8488b95da1", size = 329149, upload-time = "2025-10-22T09:51:31.232Z" }, + { url = "https://files.pythonhosted.org/packages/03/40/ab450c06167a7de596d99b1ba5cee2c605b3ff184baccf08210ede706b1b/python_bidi-0.6.7-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d28e2bdcadf5b6161bb4ee9313ce41eac746ba57e744168bf723a415a11af05", size = 303529, upload-time = "2025-10-22T09:51:46.997Z" }, + { url = "https://files.pythonhosted.org/packages/ec/c5/585b5c413e3b77a32500fb877ea30aa23c45a6064dbd7fe77d87b72cd90b/python_bidi-0.6.7-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c3777ae3e088e94df854fbcbd8d59f9239b74aac036cb6bbd19f8035c8e42478", size = 317753, upload-time = "2025-10-22T09:51:39.272Z" }, + { url = "https://files.pythonhosted.org/packages/f9/05/b7b4b447890d614ccb40633f4d65f334bcf9fe3ad13be33aaa54dcbc34f3/python_bidi-0.6.7-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:77bb4cbadf4121db395189065c58c9dd5d1950257cc1983004e6df4a3e2f97ad", size = 476054, upload-time = "2025-10-22T09:52:15.856Z" }, + { url = "https://files.pythonhosted.org/packages/ca/94/64f6d2c09c4426918345b54ca8902f94b663eadd744c9dd89070f546c9bc/python_bidi-0.6.7-pp311-pypy311_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:f1fe71c203f66bc169a393964d5702f9251cfd4d70279cb6453fdd42bd2e675f", size = 568365, upload-time = "2025-10-22T09:52:27.556Z" }, + { url = "https://files.pythonhosted.org/packages/fc/d2/c39a6b82aa0fcedac7cbe6078b78bb9089b43d903f8e00859e42b504bb8e/python_bidi-0.6.7-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:d87ed09e5c9b6d2648e8856a4e556147b9d3cd4d63905fa664dd6706bc414256", size = 495292, upload-time = "2025-10-22T09:52:38.306Z" }, + { url = "https://files.pythonhosted.org/packages/0a/8d/a80f37ab92118e305d7b574306553599f81534c50b4eb23ef34ebe09c09c/python_bidi-0.6.7-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:766d5f5a686eb99b53168a7bdfb338035931a609bdbbcb537cef9e050a86f359", size = 467159, upload-time = "2025-10-22T09:52:48.603Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "python-docx" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "lxml" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a9/f7/eddfe33871520adab45aaa1a71f0402a2252050c14c7e3009446c8f4701c/python_docx-1.2.0.tar.gz", hash = "sha256:7bc9d7b7d8a69c9c02ca09216118c86552704edc23bac179283f2e38f86220ce", size = 5723256, upload-time = "2025-06-16T20:46:27.921Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/00/1e03a4989fa5795da308cd774f05b704ace555a70f9bf9d3be057b680bcf/python_docx-1.2.0-py3-none-any.whl", hash = "sha256:3fd478f3250fbbbfd3b94fe1e985955737c145627498896a8a6bf81f4baf66c7", size = 252987, upload-time = "2025-06-16T20:46:22.506Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, +] + +[[package]] +name = "python-multipart" +version = "0.0.31" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/64/7e/9b35ad8f3d9ca680f7c87a88f19612fdd8da9796c4d3b46e560ac79dcc4a/python_multipart-0.0.31.tar.gz", hash = "sha256:fc631183bb13e56db3158a4909908dfb2e23565286744e798241e63750e5d680", size = 46689, upload-time = "2026-06-04T08:27:49.014Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5e/1e/7f7f299527a5a8ad90acd5f2f78dfa6c8495c6301a3205106ea68a84de96/python_multipart-0.0.31-py3-none-any.whl", hash = "sha256:8408153d68a9773291fc1da39a8b85a50044bddbabd2dd72e9229776b7b15e28", size = 29996, upload-time = "2026-06-04T08:27:47.804Z" }, +] + +[[package]] +name = "python-pptx" +version = "1.0.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "lxml" }, + { name = "pillow" }, + { name = "typing-extensions" }, + { name = "xlsxwriter" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/52/a9/0c0db8d37b2b8a645666f7fd8accea4c6224e013c42b1d5c17c93590cd06/python_pptx-1.0.2.tar.gz", hash = "sha256:479a8af0eaf0f0d76b6f00b0887732874ad2e3188230315290cd1f9dd9cc7095", size = 10109297, upload-time = "2024-08-07T17:33:37.772Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/4f/00be2196329ebbff56ce564aa94efb0fbc828d00de250b1980de1a34ab49/python_pptx-1.0.2-py3-none-any.whl", hash = "sha256:160838e0b8565a8b1f67947675886e9fea18aa5e795db7ae531606d68e785cba", size = 472788, upload-time = "2024-08-07T17:33:28.192Z" }, +] + +[[package]] +name = "pytz" +version = "2026.1.post1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/56/db/b8721d71d945e6a8ac63c0fc900b2067181dbb50805958d4d4661cf7d277/pytz-2026.1.post1.tar.gz", hash = "sha256:3378dde6a0c3d26719182142c56e60c7f9af7e968076f31aae569d72a0358ee1", size = 321088, upload-time = "2026-03-03T07:47:50.683Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/99/781fe0c827be2742bcc775efefccb3b048a3a9c6ce9aec0cbf4a101677e5/pytz-2026.1.post1-py2.py3-none-any.whl", hash = "sha256:f2fd16142fda348286a75e1a524be810bb05d444e5a081f37f7affc635035f7a", size = 510489, upload-time = "2026-03-03T07:47:49.167Z" }, +] + +[[package]] +name = "pywin32" +version = "311" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/40/44efbb0dfbd33aca6a6483191dae0716070ed99e2ecb0c53683f400a0b4f/pywin32-311-cp310-cp310-win32.whl", hash = "sha256:d03ff496d2a0cd4a5893504789d4a15399133fe82517455e78bad62efbb7f0a3", size = 8760432, upload-time = "2025-07-14T20:13:05.9Z" }, + { url = "https://files.pythonhosted.org/packages/5e/bf/360243b1e953bd254a82f12653974be395ba880e7ec23e3731d9f73921cc/pywin32-311-cp310-cp310-win_amd64.whl", hash = "sha256:797c2772017851984b97180b0bebe4b620bb86328e8a884bb626156295a63b3b", size = 9590103, upload-time = "2025-07-14T20:13:07.698Z" }, + { url = "https://files.pythonhosted.org/packages/57/38/d290720e6f138086fb3d5ffe0b6caa019a791dd57866940c82e4eeaf2012/pywin32-311-cp310-cp310-win_arm64.whl", hash = "sha256:0502d1facf1fed4839a9a51ccbcc63d952cf318f78ffc00a7e78528ac27d7a2b", size = 8778557, upload-time = "2025-07-14T20:13:11.11Z" }, + { url = "https://files.pythonhosted.org/packages/7c/af/449a6a91e5d6db51420875c54f6aff7c97a86a3b13a0b4f1a5c13b988de3/pywin32-311-cp311-cp311-win32.whl", hash = "sha256:184eb5e436dea364dcd3d2316d577d625c0351bf237c4e9a5fabbcfa5a58b151", size = 8697031, upload-time = "2025-07-14T20:13:13.266Z" }, + { url = "https://files.pythonhosted.org/packages/51/8f/9bb81dd5bb77d22243d33c8397f09377056d5c687aa6d4042bea7fbf8364/pywin32-311-cp311-cp311-win_amd64.whl", hash = "sha256:3ce80b34b22b17ccbd937a6e78e7225d80c52f5ab9940fe0506a1a16f3dab503", size = 9508308, upload-time = "2025-07-14T20:13:15.147Z" }, + { url = "https://files.pythonhosted.org/packages/44/7b/9c2ab54f74a138c491aba1b1cd0795ba61f144c711daea84a88b63dc0f6c/pywin32-311-cp311-cp311-win_arm64.whl", hash = "sha256:a733f1388e1a842abb67ffa8e7aad0e70ac519e09b0f6a784e65a136ec7cefd2", size = 8703930, upload-time = "2025-07-14T20:13:16.945Z" }, + { url = "https://files.pythonhosted.org/packages/e7/ab/01ea1943d4eba0f850c3c61e78e8dd59757ff815ff3ccd0a84de5f541f42/pywin32-311-cp312-cp312-win32.whl", hash = "sha256:750ec6e621af2b948540032557b10a2d43b0cee2ae9758c54154d711cc852d31", size = 8706543, upload-time = "2025-07-14T20:13:20.765Z" }, + { url = "https://files.pythonhosted.org/packages/d1/a8/a0e8d07d4d051ec7502cd58b291ec98dcc0c3fff027caad0470b72cfcc2f/pywin32-311-cp312-cp312-win_amd64.whl", hash = "sha256:b8c095edad5c211ff31c05223658e71bf7116daa0ecf3ad85f3201ea3190d067", size = 9495040, upload-time = "2025-07-14T20:13:22.543Z" }, + { url = "https://files.pythonhosted.org/packages/ba/3a/2ae996277b4b50f17d61f0603efd8253cb2d79cc7ae159468007b586396d/pywin32-311-cp312-cp312-win_arm64.whl", hash = "sha256:e286f46a9a39c4a18b319c28f59b61de793654af2f395c102b4f819e584b5852", size = 8710102, upload-time = "2025-07-14T20:13:24.682Z" }, + { url = "https://files.pythonhosted.org/packages/a5/be/3fd5de0979fcb3994bfee0d65ed8ca9506a8a1260651b86174f6a86f52b3/pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d", size = 8705700, upload-time = "2025-07-14T20:13:26.471Z" }, + { url = "https://files.pythonhosted.org/packages/e3/28/e0a1909523c6890208295a29e05c2adb2126364e289826c0a8bc7297bd5c/pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d", size = 9494700, upload-time = "2025-07-14T20:13:28.243Z" }, + { url = "https://files.pythonhosted.org/packages/04/bf/90339ac0f55726dce7d794e6d79a18a91265bdf3aa70b6b9ca52f35e022a/pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a", size = 8709318, upload-time = "2025-07-14T20:13:30.348Z" }, + { url = "https://files.pythonhosted.org/packages/c9/31/097f2e132c4f16d99a22bfb777e0fd88bd8e1c634304e102f313af69ace5/pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee", size = 8840714, upload-time = "2025-07-14T20:13:32.449Z" }, + { url = "https://files.pythonhosted.org/packages/90/4b/07c77d8ba0e01349358082713400435347df8426208171ce297da32c313d/pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87", size = 9656800, upload-time = "2025-07-14T20:13:34.312Z" }, + { url = "https://files.pythonhosted.org/packages/c0/d2/21af5c535501a7233e734b8af901574572da66fcc254cb35d0609c9080dd/pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42", size = 8932540, upload-time = "2025-07-14T20:13:36.379Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" }, + { url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" }, + { url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" }, + { url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" }, + { url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" }, + { url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" }, + { url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" }, + { url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" }, + { url = "https://files.pythonhosted.org/packages/6d/16/a95b6757765b7b031c9374925bb718d55e0a9ba8a1b6a12d25962ea44347/pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e", size = 185826, upload-time = "2025-09-25T21:31:58.655Z" }, + { url = "https://files.pythonhosted.org/packages/16/19/13de8e4377ed53079ee996e1ab0a9c33ec2faf808a4647b7b4c0d46dd239/pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824", size = 175577, upload-time = "2025-09-25T21:32:00.088Z" }, + { url = "https://files.pythonhosted.org/packages/0c/62/d2eb46264d4b157dae1275b573017abec435397aa59cbcdab6fc978a8af4/pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c", size = 775556, upload-time = "2025-09-25T21:32:01.31Z" }, + { url = "https://files.pythonhosted.org/packages/10/cb/16c3f2cf3266edd25aaa00d6c4350381c8b012ed6f5276675b9eba8d9ff4/pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00", size = 882114, upload-time = "2025-09-25T21:32:03.376Z" }, + { url = "https://files.pythonhosted.org/packages/71/60/917329f640924b18ff085ab889a11c763e0b573da888e8404ff486657602/pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d", size = 806638, upload-time = "2025-09-25T21:32:04.553Z" }, + { url = "https://files.pythonhosted.org/packages/dd/6f/529b0f316a9fd167281a6c3826b5583e6192dba792dd55e3203d3f8e655a/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a", size = 767463, upload-time = "2025-09-25T21:32:06.152Z" }, + { url = "https://files.pythonhosted.org/packages/f2/6a/b627b4e0c1dd03718543519ffb2f1deea4a1e6d42fbab8021936a4d22589/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4", size = 794986, upload-time = "2025-09-25T21:32:07.367Z" }, + { url = "https://files.pythonhosted.org/packages/45/91/47a6e1c42d9ee337c4839208f30d9f09caa9f720ec7582917b264defc875/pyyaml-6.0.3-cp311-cp311-win32.whl", hash = "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b", size = 142543, upload-time = "2025-09-25T21:32:08.95Z" }, + { url = "https://files.pythonhosted.org/packages/da/e3/ea007450a105ae919a72393cb06f122f288ef60bba2dc64b26e2646fa315/pyyaml-6.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf", size = 158763, upload-time = "2025-09-25T21:32:09.96Z" }, + { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, + { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, + { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, + { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, + { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, + { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, + { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" }, + { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" }, + { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" }, + { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" }, + { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" }, + { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" }, + { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" }, + { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" }, + { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8c/f4bd7f6465179953d3ac9bc44ac1a8a3e6122cf8ada906b4f96c60172d43/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", size = 181814, upload-time = "2025-09-25T21:32:35.712Z" }, + { url = "https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", size = 173809, upload-time = "2025-09-25T21:32:36.789Z" }, + { url = "https://files.pythonhosted.org/packages/92/b5/47e807c2623074914e29dabd16cbbdd4bf5e9b2db9f8090fa64411fc5382/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", size = 766454, upload-time = "2025-09-25T21:32:37.966Z" }, + { url = "https://files.pythonhosted.org/packages/02/9e/e5e9b168be58564121efb3de6859c452fccde0ab093d8438905899a3a483/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", size = 836355, upload-time = "2025-09-25T21:32:39.178Z" }, + { url = "https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", size = 794175, upload-time = "2025-09-25T21:32:40.865Z" }, + { url = "https://files.pythonhosted.org/packages/dd/3f/5989debef34dc6397317802b527dbbafb2b4760878a53d4166579111411e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", size = 755228, upload-time = "2025-09-25T21:32:42.084Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ce/af88a49043cd2e265be63d083fc75b27b6ed062f5f9fd6cdc223ad62f03e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", size = 789194, upload-time = "2025-09-25T21:32:43.362Z" }, + { url = "https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", size = 156429, upload-time = "2025-09-25T21:32:57.844Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f4/a4541072bb9422c8a883ab55255f918fa378ecf083f5b85e87fc2b4eda1b/pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", size = 143912, upload-time = "2025-09-25T21:32:59.247Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f9/07dd09ae774e4616edf6cda684ee78f97777bdd15847253637a6f052a62f/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", size = 189108, upload-time = "2025-09-25T21:32:44.377Z" }, + { url = "https://files.pythonhosted.org/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", size = 183641, upload-time = "2025-09-25T21:32:45.407Z" }, + { url = "https://files.pythonhosted.org/packages/7b/5b/3babb19104a46945cf816d047db2788bcaf8c94527a805610b0289a01c6b/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", size = 831901, upload-time = "2025-09-25T21:32:48.83Z" }, + { url = "https://files.pythonhosted.org/packages/8b/cc/dff0684d8dc44da4d22a13f35f073d558c268780ce3c6ba1b87055bb0b87/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", size = 861132, upload-time = "2025-09-25T21:32:50.149Z" }, + { url = "https://files.pythonhosted.org/packages/b1/5e/f77dc6b9036943e285ba76b49e118d9ea929885becb0a29ba8a7c75e29fe/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", size = 839261, upload-time = "2025-09-25T21:32:51.808Z" }, + { url = "https://files.pythonhosted.org/packages/ce/88/a9db1376aa2a228197c58b37302f284b5617f56a5d959fd1763fb1675ce6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", size = 805272, upload-time = "2025-09-25T21:32:52.941Z" }, + { url = "https://files.pythonhosted.org/packages/da/92/1446574745d74df0c92e6aa4a7b0b3130706a4142b2d1a5869f2eaa423c6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", size = 829923, upload-time = "2025-09-25T21:32:54.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7a/1c7270340330e575b92f397352af856a8c06f230aa3e76f86b39d01b416a/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", size = 174062, upload-time = "2025-09-25T21:32:55.767Z" }, + { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" }, +] + +[[package]] +name = "rapidocr" +version = "3.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorlog" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "omegaconf" }, + { name = "opencv-python" }, + { name = "pillow" }, + { name = "pyclipper" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "shapely" }, + { name = "six" }, + { name = "tqdm" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/4a/fa521d947f0fc7bb304bf11bec4cb66266bd81494588b4cb48dc01001719/rapidocr-3.8.1-py3-none-any.whl", hash = "sha256:650044b1fbce9e6bae5cae462dcf8be754cde11e2f23fc51f65dcc08deae2c46", size = 15080319, upload-time = "2026-04-11T07:13:22.56Z" }, +] + +[[package]] +name = "referencing" +version = "0.37.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/22/f5/df4e9027acead3ecc63e50fe1e36aca1523e1719559c499951bb4b53188f/referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8", size = 78036, upload-time = "2025-10-13T15:30:48.871Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl", hash = "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231", size = 26766, upload-time = "2025-10-13T15:30:47.625Z" }, +] + +[[package]] +name = "regex" +version = "2026.4.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cb/0e/3a246dbf05666918bd3664d9d787f84a9108f6f43cc953a077e4a7dfdb7e/regex-2026.4.4.tar.gz", hash = "sha256:e08270659717f6973523ce3afbafa53515c4dc5dcad637dc215b6fd50f689423", size = 416000, upload-time = "2026-04-03T20:56:28.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/59/fd98f8fd54b3feaa76a855324c676c17668c5a1121ec91b7ec96b01bf865/regex-2026.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:74fa82dcc8143386c7c0392e18032009d1db715c25f4ba22d23dc2e04d02a20f", size = 489403, upload-time = "2026-04-03T20:52:39.742Z" }, + { url = "https://files.pythonhosted.org/packages/6c/64/d0f222f68e3579d50babf0e4fcc9c9639ef0587fecc00b15e1e46bfc32fa/regex-2026.4.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a85b620a388d6c9caa12189233109e236b3da3deffe4ff11b84ae84e218a274f", size = 291208, upload-time = "2026-04-03T20:52:42.943Z" }, + { url = "https://files.pythonhosted.org/packages/16/7f/3fab9709b0b0060ba81a04b8a107b34147cd14b9c5551b772154d6505504/regex-2026.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2895506ebe32cc63eeed8f80e6eae453171cfccccab35b70dc3129abec35a5b8", size = 289214, upload-time = "2026-04-03T20:52:44.648Z" }, + { url = "https://files.pythonhosted.org/packages/14/bc/f5dcf04fd462139dcd75495c02eee22032ef741cfa151386a39c3f5fc9b5/regex-2026.4.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6780f008ee81381c737634e75c24e5a6569cc883c4f8e37a37917ee79efcafd9", size = 785505, upload-time = "2026-04-03T20:52:46.35Z" }, + { url = "https://files.pythonhosted.org/packages/37/36/8a906e216d5b4de7ec3788c1d589b45db40c1c9580cd7b326835cfc976d4/regex-2026.4.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:88e9b048345c613f253bea4645b2fe7e579782b82cac99b1daad81e29cc2ed8e", size = 852129, upload-time = "2026-04-03T20:52:48.661Z" }, + { url = "https://files.pythonhosted.org/packages/a5/bb/bad2d79be0917a6ef31f5e0f161d9265cb56fd90a3ae1d2e8d991882a48b/regex-2026.4.4-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:be061028481186ba62a0f4c5f1cc1e3d5ab8bce70c89236ebe01023883bc903b", size = 899578, upload-time = "2026-04-03T20:52:50.61Z" }, + { url = "https://files.pythonhosted.org/packages/1a/b9/7cd0ceb58cd99c70806241636640ae15b4a3fe62e22e9b99afa67a0d7965/regex-2026.4.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d2228c02b368d69b724c36e96d3d1da721561fb9cc7faa373d7bf65e07d75cb5", size = 793634, upload-time = "2026-04-03T20:52:53Z" }, + { url = "https://files.pythonhosted.org/packages/2c/fb/c58e3ea40ed183806ccbac05c29a3e8c2f88c1d3a66ed27860d5cad7c62d/regex-2026.4.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0540e5b733618a2f84e9cb3e812c8afa82e151ca8e19cf6c4e95c5a65198236f", size = 786210, upload-time = "2026-04-03T20:52:54.713Z" }, + { url = "https://files.pythonhosted.org/packages/54/a9/53790fc7a6c948a7be2bc7214fd9cabdd0d1ba561b0f401c91f4ff0357f0/regex-2026.4.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cf9b1b2e692d4877880388934ac746c99552ce6bf40792a767fd42c8c99f136d", size = 769930, upload-time = "2026-04-03T20:52:56.825Z" }, + { url = "https://files.pythonhosted.org/packages/e3/3c/29ca44729191c79f5476538cd0fa04fa2553b3c45508519ecea4c7afa8f6/regex-2026.4.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:011bb48bffc1b46553ac704c975b3348717f4e4aa7a67522b51906f99da1820c", size = 774892, upload-time = "2026-04-03T20:52:58.934Z" }, + { url = "https://files.pythonhosted.org/packages/3e/db/6ae74ef8a4cfead341c367e4eed45f71fb1aaba35827a775eed4f1ba4f74/regex-2026.4.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8512fcdb43f1bf18582698a478b5ab73f9c1667a5b7548761329ef410cd0a760", size = 848816, upload-time = "2026-04-03T20:53:00.684Z" }, + { url = "https://files.pythonhosted.org/packages/53/9a/f7f2c1c6b610d7c6de1c3dc5951effd92c324b1fde761af2044b4721020f/regex-2026.4.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:867bddc63109a0276f5a31999e4c8e0eb7bbbad7d6166e28d969a2c1afeb97f9", size = 758363, upload-time = "2026-04-03T20:53:02.155Z" }, + { url = "https://files.pythonhosted.org/packages/dd/55/e5386d393bbf8b43c8b084703a46d635e7b2bdc6e0f5909a2619ea1125f1/regex-2026.4.4-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:1b9a00b83f3a40e09859c78920571dcb83293c8004079653dd22ec14bbfa98c7", size = 837122, upload-time = "2026-04-03T20:53:03.727Z" }, + { url = "https://files.pythonhosted.org/packages/01/da/cc78710ea2e60b10bacfcc9beb18c67514200ab03597b3b2b319995785c2/regex-2026.4.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e355be718caf838aa089870259cf1776dc2a4aa980514af9d02c59544d9a8b22", size = 782140, upload-time = "2026-04-03T20:53:05.608Z" }, + { url = "https://files.pythonhosted.org/packages/a2/5f/c7bcba41529105d6c2ca7080ecab7184cd00bee2e1ad1fdea80e618704ea/regex-2026.4.4-cp310-cp310-win32.whl", hash = "sha256:33bfda9684646d323414df7abe5692c61d297dbb0530b28ec66442e768813c59", size = 266225, upload-time = "2026-04-03T20:53:07.342Z" }, + { url = "https://files.pythonhosted.org/packages/eb/26/a745729c2c49354ec4f4bce168f29da932ca01b4758227686cc16c7dde1b/regex-2026.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:0709f22a56798457ae317bcce42aacee33c680068a8f14097430d9f9ba364bee", size = 278393, upload-time = "2026-04-03T20:53:08.65Z" }, + { url = "https://files.pythonhosted.org/packages/87/8b/4327eeb9dbb4b098ebecaf02e9f82b79b6077beeb54c43d9a0660cf7c44c/regex-2026.4.4-cp310-cp310-win_arm64.whl", hash = "sha256:ee9627de8587c1a22201cb16d0296ab92b4df5cdcb5349f4e9744d61db7c7c98", size = 270470, upload-time = "2026-04-03T20:53:10.018Z" }, + { url = "https://files.pythonhosted.org/packages/e0/7a/617356cbecdb452812a5d42f720d6d5096b360d4a4c1073af700ea140ad2/regex-2026.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b4c36a85b00fadb85db9d9e90144af0a980e1a3d2ef9cd0f8a5bef88054657c6", size = 489415, upload-time = "2026-04-03T20:53:11.645Z" }, + { url = "https://files.pythonhosted.org/packages/20/e6/bf057227144d02e3ba758b66649e87531d744dda5f3254f48660f18ae9d8/regex-2026.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dcb5453ecf9cd58b562967badd1edbf092b0588a3af9e32ee3d05c985077ce87", size = 291205, upload-time = "2026-04-03T20:53:13.289Z" }, + { url = "https://files.pythonhosted.org/packages/eb/3b/637181b787dd1a820ba1c712cee2b4144cd84a32dc776ca067b12b2d70c8/regex-2026.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6aa809ed4dc3706cc38594d67e641601bd2f36d5555b2780ff074edfcb136cf8", size = 289225, upload-time = "2026-04-03T20:53:16.002Z" }, + { url = "https://files.pythonhosted.org/packages/05/21/bac05d806ed02cd4b39d9c8e5b5f9a2998c94c3a351b7792e80671fa5315/regex-2026.4.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:33424f5188a7db12958246a54f59a435b6cb62c5cf9c8d71f7cc49475a5fdada", size = 792434, upload-time = "2026-04-03T20:53:17.414Z" }, + { url = "https://files.pythonhosted.org/packages/d9/17/c65d1d8ae90b772d5758eb4014e1e011bb2db353fc4455432e6cc9100df7/regex-2026.4.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7d346fccdde28abba117cc9edc696b9518c3307fbfcb689e549d9b5979018c6d", size = 861730, upload-time = "2026-04-03T20:53:18.903Z" }, + { url = "https://files.pythonhosted.org/packages/ad/64/933321aa082a2c6ee2785f22776143ba89840189c20d3b6b1d12b6aae16b/regex-2026.4.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:415a994b536440f5011aa77e50a4274d15da3245e876e5c7f19da349caaedd87", size = 906495, upload-time = "2026-04-03T20:53:20.561Z" }, + { url = "https://files.pythonhosted.org/packages/01/ea/4c8d306e9c36ac22417336b1e02e7b358152c34dc379673f2d331143725f/regex-2026.4.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:21e5eb86179b4c67b5759d452ea7c48eb135cd93308e7a260aa489ed2eb423a4", size = 799810, upload-time = "2026-04-03T20:53:22.961Z" }, + { url = "https://files.pythonhosted.org/packages/29/ce/7605048f00e1379eba89d610c7d644d8f695dc9b26d3b6ecfa3132b872ff/regex-2026.4.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:312ec9dd1ae7d96abd8c5a36a552b2139931914407d26fba723f9e53c8186f86", size = 774242, upload-time = "2026-04-03T20:53:25.015Z" }, + { url = "https://files.pythonhosted.org/packages/e9/77/283e0d5023fde22cd9e86190d6d9beb21590a452b195ffe00274de470691/regex-2026.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a0d2b28aa1354c7cd7f71b7658c4326f7facac106edd7f40eda984424229fd59", size = 781257, upload-time = "2026-04-03T20:53:26.918Z" }, + { url = "https://files.pythonhosted.org/packages/8b/fb/7f3b772be101373c8626ed34c5d727dcbb8abd42a7b1219bc25fd9a3cc04/regex-2026.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:349d7310eddff40429a099c08d995c6d4a4bfaf3ff40bd3b5e5cb5a5a3c7d453", size = 854490, upload-time = "2026-04-03T20:53:29.065Z" }, + { url = "https://files.pythonhosted.org/packages/85/30/56547b80f34f4dd2986e1cdd63b1712932f63b6c4ce2f79c50a6cd79d1c2/regex-2026.4.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:e7ab63e9fe45a9ec3417509e18116b367e89c9ceb6219222a3396fa30b147f80", size = 763544, upload-time = "2026-04-03T20:53:30.917Z" }, + { url = "https://files.pythonhosted.org/packages/ac/2f/ce060fdfea8eff34a8997603532e44cdb7d1f35e3bc253612a8707a90538/regex-2026.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fe896e07a5a2462308297e515c0054e9ec2dd18dfdc9427b19900b37dfe6f40b", size = 844442, upload-time = "2026-04-03T20:53:32.463Z" }, + { url = "https://files.pythonhosted.org/packages/e5/44/810cb113096a1dacbe82789fbfab2823f79d19b7f1271acecb7009ba9b88/regex-2026.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:eb59c65069498dbae3c0ef07bbe224e1eaa079825a437fb47a479f0af11f774f", size = 789162, upload-time = "2026-04-03T20:53:34.039Z" }, + { url = "https://files.pythonhosted.org/packages/20/96/9647dd7f2ecf6d9ce1fb04dfdb66910d094e10d8fe53e9c15096d8aa0bd2/regex-2026.4.4-cp311-cp311-win32.whl", hash = "sha256:2a5d273181b560ef8397c8825f2b9d57013de744da9e8257b8467e5da8599351", size = 266227, upload-time = "2026-04-03T20:53:35.601Z" }, + { url = "https://files.pythonhosted.org/packages/33/80/74e13262460530c3097ff343a17de9a34d040a5dc4de9cf3a8241faab51c/regex-2026.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:9542ccc1e689e752594309444081582f7be2fdb2df75acafea8a075108566735", size = 278399, upload-time = "2026-04-03T20:53:37.021Z" }, + { url = "https://files.pythonhosted.org/packages/1c/3c/39f19f47f19dcefa3403f09d13562ca1c0fd07ab54db2bc03148f3f6b46a/regex-2026.4.4-cp311-cp311-win_arm64.whl", hash = "sha256:b5f9fb784824a042be3455b53d0b112655686fdb7a91f88f095f3fee1e2a2a54", size = 270473, upload-time = "2026-04-03T20:53:38.633Z" }, + { url = "https://files.pythonhosted.org/packages/e5/28/b972a4d3df61e1d7bcf1b59fdb3cddef22f88b6be43f161bb41ebc0e4081/regex-2026.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c07ab8794fa929e58d97a0e1796b8b76f70943fa39df225ac9964615cf1f9d52", size = 490434, upload-time = "2026-04-03T20:53:40.219Z" }, + { url = "https://files.pythonhosted.org/packages/84/20/30041446cf6dc3e0eab344fc62770e84c23b6b68a3b657821f9f80cb69b4/regex-2026.4.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2c785939dc023a1ce4ec09599c032cc9933d258a998d16ca6f2b596c010940eb", size = 292061, upload-time = "2026-04-03T20:53:41.862Z" }, + { url = "https://files.pythonhosted.org/packages/62/c8/3baa06d75c98c46d4cc4262b71fd2edb9062b5665e868bca57859dadf93a/regex-2026.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1b1ce5c81c9114f1ce2f9288a51a8fd3aeea33a0cc440c415bf02da323aa0a76", size = 289628, upload-time = "2026-04-03T20:53:43.701Z" }, + { url = "https://files.pythonhosted.org/packages/31/87/3accf55634caad8c0acab23f5135ef7d4a21c39f28c55c816ae012931408/regex-2026.4.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:760ef21c17d8e6a4fe8cf406a97cf2806a4df93416ccc82fc98d25b1c20425be", size = 796651, upload-time = "2026-04-03T20:53:45.379Z" }, + { url = "https://files.pythonhosted.org/packages/f6/0c/aaa2c83f34efedbf06f61cb1942c25f6cf1ee3b200f832c4d05f28306c2e/regex-2026.4.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7088fcdcb604a4417c208e2169715800d28838fefd7455fbe40416231d1d47c1", size = 865916, upload-time = "2026-04-03T20:53:47.064Z" }, + { url = "https://files.pythonhosted.org/packages/d9/f6/8c6924c865124643e8f37823eca845dc27ac509b2ee58123685e71cd0279/regex-2026.4.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:07edca1ba687998968f7db5bc355288d0c6505caa7374f013d27356d93976d13", size = 912287, upload-time = "2026-04-03T20:53:49.422Z" }, + { url = "https://files.pythonhosted.org/packages/11/0e/a9f6f81013e0deaf559b25711623864970fe6a098314e374ccb1540a4152/regex-2026.4.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:993f657a7c1c6ec51b5e0ba97c9817d06b84ea5fa8d82e43b9405de0defdc2b9", size = 801126, upload-time = "2026-04-03T20:53:51.096Z" }, + { url = "https://files.pythonhosted.org/packages/71/61/3a0cc8af2dc0c8deb48e644dd2521f173f7e6513c6e195aad9aa8dd77ac5/regex-2026.4.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:2b69102a743e7569ebee67e634a69c4cb7e59d6fa2e1aa7d3bdbf3f61435f62d", size = 776788, upload-time = "2026-04-03T20:53:52.889Z" }, + { url = "https://files.pythonhosted.org/packages/64/0b/8bb9cbf21ef7dee58e49b0fdb066a7aded146c823202e16494a36777594f/regex-2026.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dac006c8b6dda72d86ea3d1333d45147de79a3a3f26f10c1cf9287ca4ca0ac3", size = 785184, upload-time = "2026-04-03T20:53:55.627Z" }, + { url = "https://files.pythonhosted.org/packages/99/c2/d3e80e8137b25ee06c92627de4e4d98b94830e02b3e6f81f3d2e3f504cf5/regex-2026.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:50a766ee2010d504554bfb5f578ed2e066898aa26411d57e6296230627cdefa0", size = 859913, upload-time = "2026-04-03T20:53:57.249Z" }, + { url = "https://files.pythonhosted.org/packages/bc/e6/9d5d876157d969c804622456ef250017ac7a8f83e0e14f903b9e6df5ce95/regex-2026.4.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:9e2f5217648f68e3028c823df58663587c1507a5ba8419f4fdfc8a461be76043", size = 765732, upload-time = "2026-04-03T20:53:59.428Z" }, + { url = "https://files.pythonhosted.org/packages/82/80/b568935b4421388561c8ed42aff77247285d3ae3bb2a6ca22af63bae805e/regex-2026.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:39d8de85a08e32632974151ba59c6e9140646dcc36c80423962b1c5c0a92e244", size = 852152, upload-time = "2026-04-03T20:54:01.505Z" }, + { url = "https://files.pythonhosted.org/packages/39/29/f0f81217e21cd998245da047405366385d5c6072048038a3d33b37a79dc0/regex-2026.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:55d9304e0e7178dfb1e106c33edf834097ddf4a890e2f676f6c5118f84390f73", size = 789076, upload-time = "2026-04-03T20:54:03.323Z" }, + { url = "https://files.pythonhosted.org/packages/49/1d/1d957a61976ab9d4e767dd4f9d04b66cc0c41c5e36cf40e2d43688b5ae6f/regex-2026.4.4-cp312-cp312-win32.whl", hash = "sha256:04bb679bc0bde8a7bfb71e991493d47314e7b98380b083df2447cda4b6edb60f", size = 266700, upload-time = "2026-04-03T20:54:05.639Z" }, + { url = "https://files.pythonhosted.org/packages/c5/5c/bf575d396aeb58ea13b06ef2adf624f65b70fafef6950a80fc3da9cae3bc/regex-2026.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:db0ac18435a40a2543dbb3d21e161a6c78e33e8159bd2e009343d224bb03bb1b", size = 277768, upload-time = "2026-04-03T20:54:07.312Z" }, + { url = "https://files.pythonhosted.org/packages/c9/27/049df16ec6a6828ccd72add3c7f54b4df029669bea8e9817df6fff58be90/regex-2026.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:4ce255cc05c1947a12989c6db801c96461947adb7a59990f1360b5983fab4983", size = 270568, upload-time = "2026-04-03T20:54:09.484Z" }, + { url = "https://files.pythonhosted.org/packages/9d/83/c4373bc5f31f2cf4b66f9b7c31005bd87fe66f0dce17701f7db4ee79ee29/regex-2026.4.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:62f5519042c101762509b1d717b45a69c0139d60414b3c604b81328c01bd1943", size = 490273, upload-time = "2026-04-03T20:54:11.202Z" }, + { url = "https://files.pythonhosted.org/packages/46/f8/fe62afbcc3cf4ad4ac9adeaafd98aa747869ae12d3e8e2ac293d0593c435/regex-2026.4.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3790ba9fb5dd76715a7afe34dbe603ba03f8820764b1dc929dd08106214ed031", size = 291954, upload-time = "2026-04-03T20:54:13.412Z" }, + { url = "https://files.pythonhosted.org/packages/5a/92/4712b9fe6a33d232eeb1c189484b80c6c4b8422b90e766e1195d6e758207/regex-2026.4.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8fae3c6e795d7678963f2170152b0d892cf6aee9ee8afc8c45e6be38d5107fe7", size = 289487, upload-time = "2026-04-03T20:54:15.824Z" }, + { url = "https://files.pythonhosted.org/packages/88/2c/f83b93f85e01168f1070f045a42d4c937b69fdb8dd7ae82d307253f7e36e/regex-2026.4.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:298c3ec2d53225b3bf91142eb9691025bab610e0c0c51592dde149db679b3d17", size = 796646, upload-time = "2026-04-03T20:54:18.229Z" }, + { url = "https://files.pythonhosted.org/packages/df/55/61a2e17bf0c4dc57e11caf8dd11771280d8aaa361785f9e3bc40d653f4a7/regex-2026.4.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e9638791082eaf5b3ac112c587518ee78e083a11c4b28012d8fe2a0f536dfb17", size = 865904, upload-time = "2026-04-03T20:54:20.019Z" }, + { url = "https://files.pythonhosted.org/packages/45/32/1ac8ed1b5a346b5993a3d256abe0a0f03b0b73c8cc88d928537368ac65b6/regex-2026.4.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ae3e764bd4c5ff55035dc82a8d49acceb42a5298edf6eb2fc4d328ee5dd7afae", size = 912304, upload-time = "2026-04-03T20:54:22.403Z" }, + { url = "https://files.pythonhosted.org/packages/26/47/2ee5c613ab546f0eddebf9905d23e07beb933416b1246c2d8791d01979b4/regex-2026.4.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ffa81f81b80047ba89a3c69ae6a0f78d06f4a42ce5126b0eb2a0a10ad44e0b2e", size = 801126, upload-time = "2026-04-03T20:54:24.308Z" }, + { url = "https://files.pythonhosted.org/packages/75/cd/41dacd129ca9fd20bd7d02f83e0fad83e034ac8a084ec369c90f55ef37e2/regex-2026.4.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f56ebf9d70305307a707911b88469213630aba821e77de7d603f9d2f0730687d", size = 776772, upload-time = "2026-04-03T20:54:26.319Z" }, + { url = "https://files.pythonhosted.org/packages/89/6d/5af0b588174cb5f46041fa7dd64d3fd5cd2fe51f18766703d1edc387f324/regex-2026.4.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:773d1dfd652bbffb09336abf890bfd64785c7463716bf766d0eb3bc19c8b7f27", size = 785228, upload-time = "2026-04-03T20:54:28.387Z" }, + { url = "https://files.pythonhosted.org/packages/b7/3b/f5a72b7045bd59575fc33bf1345f156fcfd5a8484aea6ad84b12c5a82114/regex-2026.4.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:d51d20befd5275d092cdffba57ded05f3c436317ee56466c8928ac32d960edaf", size = 860032, upload-time = "2026-04-03T20:54:30.641Z" }, + { url = "https://files.pythonhosted.org/packages/39/a4/72a317003d6fcd7a573584a85f59f525dfe8f67e355ca74eb6b53d66a5e2/regex-2026.4.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:0a51cdb3c1e9161154f976cb2bef9894bc063ac82f31b733087ffb8e880137d0", size = 765714, upload-time = "2026-04-03T20:54:32.789Z" }, + { url = "https://files.pythonhosted.org/packages/25/1e/5672e16f34dbbcb2560cc7e6a2fbb26dfa8b270711e730101da4423d3973/regex-2026.4.4-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:ae5266a82596114e41fb5302140e9630204c1b5f325c770bec654b95dd54b0aa", size = 852078, upload-time = "2026-04-03T20:54:34.546Z" }, + { url = "https://files.pythonhosted.org/packages/f7/0d/c813f0af7c6cc7ed7b9558bac2e5120b60ad0fa48f813e4d4bd55446f214/regex-2026.4.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c882cd92ec68585e9c1cf36c447ec846c0d94edd706fe59e0c198e65822fd23b", size = 789181, upload-time = "2026-04-03T20:54:36.642Z" }, + { url = "https://files.pythonhosted.org/packages/ea/6d/a344608d1adbd2a95090ddd906cec09a11be0e6517e878d02a5123e0917f/regex-2026.4.4-cp313-cp313-win32.whl", hash = "sha256:05568c4fbf3cb4fa9e28e3af198c40d3237cf6041608a9022285fe567ec3ad62", size = 266690, upload-time = "2026-04-03T20:54:38.343Z" }, + { url = "https://files.pythonhosted.org/packages/31/07/54049f89b46235ca6f45cd6c88668a7050e77d4a15555e47dd40fde75263/regex-2026.4.4-cp313-cp313-win_amd64.whl", hash = "sha256:3384df51ed52db0bea967e21458ab0a414f67cdddfd94401688274e55147bb81", size = 277733, upload-time = "2026-04-03T20:54:40.11Z" }, + { url = "https://files.pythonhosted.org/packages/0e/21/61366a8e20f4d43fb597708cac7f0e2baadb491ecc9549b4980b2be27d16/regex-2026.4.4-cp313-cp313-win_arm64.whl", hash = "sha256:acd38177bd2c8e69a411d6521760806042e244d0ef94e2dd03ecdaa8a3c99427", size = 270565, upload-time = "2026-04-03T20:54:41.883Z" }, + { url = "https://files.pythonhosted.org/packages/f1/1e/3a2b9672433bef02f5d39aa1143ca2c08f311c1d041c464a42be9ae648dc/regex-2026.4.4-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:f94a11a9d05afcfcfa640e096319720a19cc0c9f7768e1a61fceee6a3afc6c7c", size = 494126, upload-time = "2026-04-03T20:54:43.602Z" }, + { url = "https://files.pythonhosted.org/packages/4e/4b/c132a4f4fe18ad3340d89fcb56235132b69559136036b845be3c073142ed/regex-2026.4.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:36bcb9d6d1307ab629edc553775baada2aefa5c50ccc0215fbfd2afcfff43141", size = 293882, upload-time = "2026-04-03T20:54:45.41Z" }, + { url = "https://files.pythonhosted.org/packages/f4/5f/eaa38092ce7a023656280f2341dbbd4ad5f05d780a70abba7bb4f4bea54c/regex-2026.4.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:261c015b3e2ed0919157046d768774ecde57f03d8fa4ba78d29793447f70e717", size = 292334, upload-time = "2026-04-03T20:54:47.051Z" }, + { url = "https://files.pythonhosted.org/packages/5f/f6/dd38146af1392dac33db7074ab331cec23cced3759167735c42c5460a243/regex-2026.4.4-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c228cf65b4a54583763645dcd73819b3b381ca8b4bb1b349dee1c135f4112c07", size = 811691, upload-time = "2026-04-03T20:54:49.074Z" }, + { url = "https://files.pythonhosted.org/packages/7a/f0/dc54c2e69f5eeec50601054998ec3690d5344277e782bd717e49867c1d29/regex-2026.4.4-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:dd2630faeb6876fb0c287f664d93ddce4d50cd46c6e88e60378c05c9047e08ca", size = 871227, upload-time = "2026-04-03T20:54:51.035Z" }, + { url = "https://files.pythonhosted.org/packages/a1/af/cb16bd5dc61621e27df919a4449bbb7e5a1034c34d307e0a706e9cc0f3e3/regex-2026.4.4-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6a50ab11b7779b849472337191f3a043e27e17f71555f98d0092fa6d73364520", size = 917435, upload-time = "2026-04-03T20:54:52.994Z" }, + { url = "https://files.pythonhosted.org/packages/5c/71/8b260897f22996b666edd9402861668f45a2ca259f665ac029e6104a2d7d/regex-2026.4.4-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0734f63afe785138549fbe822a8cfeaccd1bae814c5057cc0ed5b9f2de4fc883", size = 816358, upload-time = "2026-04-03T20:54:54.884Z" }, + { url = "https://files.pythonhosted.org/packages/1c/60/775f7f72a510ef238254906c2f3d737fc80b16ca85f07d20e318d2eea894/regex-2026.4.4-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c4ee50606cb1967db7e523224e05f32089101945f859928e65657a2cbb3d278b", size = 785549, upload-time = "2026-04-03T20:54:57.01Z" }, + { url = "https://files.pythonhosted.org/packages/58/42/34d289b3627c03cf381e44da534a0021664188fa49ba41513da0b4ec6776/regex-2026.4.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6c1818f37be3ca02dcb76d63f2c7aaba4b0dc171b579796c6fbe00148dfec6b1", size = 801364, upload-time = "2026-04-03T20:54:58.981Z" }, + { url = "https://files.pythonhosted.org/packages/fc/20/f6ecf319b382a8f1ab529e898b222c3f30600fcede7834733c26279e7465/regex-2026.4.4-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:f5bfc2741d150d0be3e4a0401a5c22b06e60acb9aa4daa46d9e79a6dcd0f135b", size = 866221, upload-time = "2026-04-03T20:55:00.88Z" }, + { url = "https://files.pythonhosted.org/packages/92/6a/9f16d3609d549bd96d7a0b2aee1625d7512ba6a03efc01652149ef88e74d/regex-2026.4.4-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:504ffa8a03609a087cad81277a629b6ce884b51a24bd388a7980ad61748618ff", size = 772530, upload-time = "2026-04-03T20:55:03.213Z" }, + { url = "https://files.pythonhosted.org/packages/fa/f6/aa9768bc96a4c361ac96419fbaf2dcdc33970bb813df3ba9b09d5d7b6d96/regex-2026.4.4-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:70aadc6ff12e4b444586e57fc30771f86253f9f0045b29016b9605b4be5f7dfb", size = 856989, upload-time = "2026-04-03T20:55:05.087Z" }, + { url = "https://files.pythonhosted.org/packages/4d/b4/c671db3556be2473ae3e4bb7a297c518d281452871501221251ea4ecba57/regex-2026.4.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f4f83781191007b6ef43b03debc35435f10cad9b96e16d147efe84a1d48bdde4", size = 803241, upload-time = "2026-04-03T20:55:07.162Z" }, + { url = "https://files.pythonhosted.org/packages/2a/5c/83e3b1d89fa4f6e5a1bc97b4abd4a9a97b3c1ac7854164f694f5f0ba98a0/regex-2026.4.4-cp313-cp313t-win32.whl", hash = "sha256:e014a797de43d1847df957c0a2a8e861d1c17547ee08467d1db2c370b7568baa", size = 269921, upload-time = "2026-04-03T20:55:09.62Z" }, + { url = "https://files.pythonhosted.org/packages/28/07/077c387121f42cdb4d92b1301133c0d93b5709d096d1669ab847dda9fe2e/regex-2026.4.4-cp313-cp313t-win_amd64.whl", hash = "sha256:b15b88b0d52b179712632832c1d6e58e5774f93717849a41096880442da41ab0", size = 281240, upload-time = "2026-04-03T20:55:11.521Z" }, + { url = "https://files.pythonhosted.org/packages/9d/22/ead4a4abc7c59a4d882662aa292ca02c8b617f30b6e163bc1728879e9353/regex-2026.4.4-cp313-cp313t-win_arm64.whl", hash = "sha256:586b89cdadf7d67bf86ae3342a4dcd2b8d70a832d90c18a0ae955105caf34dbe", size = 272440, upload-time = "2026-04-03T20:55:13.365Z" }, + { url = "https://files.pythonhosted.org/packages/f0/f5/ed97c2dc47b5fbd4b73c0d7d75f9ebc8eca139f2bbef476bba35f28c0a77/regex-2026.4.4-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:2da82d643fa698e5e5210e54af90181603d5853cf469f5eedf9bfc8f59b4b8c7", size = 490343, upload-time = "2026-04-03T20:55:15.241Z" }, + { url = "https://files.pythonhosted.org/packages/80/e9/de4828a7385ec166d673a5790ad06ac48cdaa98bc0960108dd4b9cc1aef7/regex-2026.4.4-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:54a1189ad9d9357760557c91103d5e421f0a2dabe68a5cdf9103d0dcf4e00752", size = 291909, upload-time = "2026-04-03T20:55:17.558Z" }, + { url = "https://files.pythonhosted.org/packages/b4/d6/5cfbfc97f3201a4d24b596a77957e092030dcc4205894bc035cedcfce62f/regex-2026.4.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:76d67d5afb1fe402d10a6403bae668d000441e2ab115191a804287d53b772951", size = 289692, upload-time = "2026-04-03T20:55:20.561Z" }, + { url = "https://files.pythonhosted.org/packages/8e/ac/f2212d9fd56fe897e36d0110ba30ba2d247bd6410c5bd98499c7e5a1e1f2/regex-2026.4.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e7cd3e4ee8d80447a83bbc9ab0c8459781fa77087f856c3e740d7763be0df27f", size = 796979, upload-time = "2026-04-03T20:55:22.56Z" }, + { url = "https://files.pythonhosted.org/packages/c9/e3/a016c12675fbac988a60c7e1c16e67823ff0bc016beb27bd7a001dbdabc6/regex-2026.4.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2e19e18c568d2866d8b6a6dfad823db86193503f90823a8f66689315ba28fbe8", size = 866744, upload-time = "2026-04-03T20:55:24.646Z" }, + { url = "https://files.pythonhosted.org/packages/af/a4/0b90ca4cf17adc3cb43de80ec71018c37c88ad64987e8d0d481a95ca60b5/regex-2026.4.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7698a6f38730fd1385d390d1ed07bb13dce39aa616aca6a6d89bea178464b9a4", size = 911613, upload-time = "2026-04-03T20:55:27.033Z" }, + { url = "https://files.pythonhosted.org/packages/8e/3b/2b3dac0b82d41ab43aa87c6ecde63d71189d03fe8854b8ca455a315edac3/regex-2026.4.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:173a66f3651cdb761018078e2d9487f4cf971232c990035ec0eb1cdc6bf929a9", size = 800551, upload-time = "2026-04-03T20:55:29.532Z" }, + { url = "https://files.pythonhosted.org/packages/25/fe/5365eb7aa0e753c4b5957815c321519ecab033c279c60e1b1ae2367fa810/regex-2026.4.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fa7922bbb2cc84fa062d37723f199d4c0cd200245ce269c05db82d904db66b83", size = 776911, upload-time = "2026-04-03T20:55:31.526Z" }, + { url = "https://files.pythonhosted.org/packages/aa/b3/7fb0072156bba065e3b778a7bc7b0a6328212be5dd6a86fd207e0c4f2dab/regex-2026.4.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:59f67cd0a0acaf0e564c20bbd7f767286f23e91e2572c5703bf3e56ea7557edb", size = 785751, upload-time = "2026-04-03T20:55:33.797Z" }, + { url = "https://files.pythonhosted.org/packages/02/1a/9f83677eb699273e56e858f7bd95acdbee376d42f59e8bfca2fd80d79df3/regex-2026.4.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:475e50f3f73f73614f7cba5524d6de49dee269df00272a1b85e3d19f6d498465", size = 860484, upload-time = "2026-04-03T20:55:35.745Z" }, + { url = "https://files.pythonhosted.org/packages/3b/7a/93937507b61cfcff8b4c5857f1b452852b09f741daa9acae15c971d8554e/regex-2026.4.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:a1c0c7d67b64d85ac2e1879923bad2f08a08f3004055f2f406ef73c850114bd4", size = 765939, upload-time = "2026-04-03T20:55:37.972Z" }, + { url = "https://files.pythonhosted.org/packages/86/ea/81a7f968a351c6552b1670ead861e2a385be730ee28402233020c67f9e0f/regex-2026.4.4-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:1371c2ccbb744d66ee63631cc9ca12aa233d5749972626b68fe1a649dd98e566", size = 851417, upload-time = "2026-04-03T20:55:39.92Z" }, + { url = "https://files.pythonhosted.org/packages/4c/7e/323c18ce4b5b8f44517a36342961a0306e931e499febbd876bb149d900f0/regex-2026.4.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:59968142787042db793348a3f5b918cf24ced1f23247328530e063f89c128a95", size = 789056, upload-time = "2026-04-03T20:55:42.303Z" }, + { url = "https://files.pythonhosted.org/packages/c0/af/e7510f9b11b1913b0cd44eddb784b2d650b2af6515bfce4cffcc5bfd1d38/regex-2026.4.4-cp314-cp314-win32.whl", hash = "sha256:59efe72d37fd5a91e373e5146f187f921f365f4abc1249a5ab446a60f30dd5f8", size = 272130, upload-time = "2026-04-03T20:55:44.995Z" }, + { url = "https://files.pythonhosted.org/packages/9a/51/57dae534c915e2d3a21490e88836fa2ae79dde3b66255ecc0c0a155d2c10/regex-2026.4.4-cp314-cp314-win_amd64.whl", hash = "sha256:e0aab3ff447845049d676827d2ff714aab4f73f340e155b7de7458cf53baa5a4", size = 280992, upload-time = "2026-04-03T20:55:47.316Z" }, + { url = "https://files.pythonhosted.org/packages/0a/5e/abaf9f4c3792e34edb1434f06717fae2b07888d85cb5cec29f9204931bf8/regex-2026.4.4-cp314-cp314-win_arm64.whl", hash = "sha256:a7a5bb6aa0cf62208bb4fa079b0c756734f8ad0e333b425732e8609bd51ee22f", size = 273563, upload-time = "2026-04-03T20:55:49.273Z" }, + { url = "https://files.pythonhosted.org/packages/ff/06/35da85f9f217b9538b99cbb170738993bcc3b23784322decb77619f11502/regex-2026.4.4-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:97850d0638391bdc7d35dc1c1039974dcb921eaafa8cc935ae4d7f272b1d60b3", size = 494191, upload-time = "2026-04-03T20:55:51.258Z" }, + { url = "https://files.pythonhosted.org/packages/54/5b/1bc35f479eef8285c4baf88d8c002023efdeebb7b44a8735b36195486ae7/regex-2026.4.4-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:ee7337f88f2a580679f7bbfe69dc86c043954f9f9c541012f49abc554a962f2e", size = 293877, upload-time = "2026-04-03T20:55:53.214Z" }, + { url = "https://files.pythonhosted.org/packages/39/5b/f53b9ad17480b3ddd14c90da04bfb55ac6894b129e5dea87bcaf7d00e336/regex-2026.4.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7429f4e6192c11d659900c0648ba8776243bf396ab95558b8c51a345afeddde6", size = 292410, upload-time = "2026-04-03T20:55:55.736Z" }, + { url = "https://files.pythonhosted.org/packages/bb/56/52377f59f60a7c51aa4161eecf0b6032c20b461805aca051250da435ffc9/regex-2026.4.4-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dc4f10fbd5dd13dcf4265b4cc07d69ca70280742870c97ae10093e3d66000359", size = 811831, upload-time = "2026-04-03T20:55:57.802Z" }, + { url = "https://files.pythonhosted.org/packages/dd/63/8026310bf066f702a9c361f83a8c9658f3fe4edb349f9c1e5d5273b7c40c/regex-2026.4.4-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a152560af4f9742b96f3827090f866eeec5becd4765c8e0d3473d9d280e76a5a", size = 871199, upload-time = "2026-04-03T20:56:00.333Z" }, + { url = "https://files.pythonhosted.org/packages/20/9f/a514bbb00a466dbb506d43f187a04047f7be1505f10a9a15615ead5080ee/regex-2026.4.4-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:54170b3e95339f415d54651f97df3bff7434a663912f9358237941bbf9143f55", size = 917649, upload-time = "2026-04-03T20:56:02.445Z" }, + { url = "https://files.pythonhosted.org/packages/cb/6b/8399f68dd41a2030218839b9b18360d79b86d22b9fab5ef477c7f23ca67c/regex-2026.4.4-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:07f190d65f5a72dcb9cf7106bfc3d21e7a49dd2879eda2207b683f32165e4d99", size = 816388, upload-time = "2026-04-03T20:56:04.595Z" }, + { url = "https://files.pythonhosted.org/packages/1e/9c/103963f47c24339a483b05edd568594c2be486188f688c0170fd504b2948/regex-2026.4.4-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9a2741ce5a29d3c84b0b94261ba630ab459a1b847a0d6beca7d62d188175c790", size = 785746, upload-time = "2026-04-03T20:56:07.13Z" }, + { url = "https://files.pythonhosted.org/packages/fa/ee/7f6054c0dec0cee3463c304405e4ff42e27cff05bf36fcb34be549ab17bd/regex-2026.4.4-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:b26c30df3a28fd9793113dac7385a4deb7294a06c0f760dd2b008bd49a9139bc", size = 801483, upload-time = "2026-04-03T20:56:09.365Z" }, + { url = "https://files.pythonhosted.org/packages/30/c2/51d3d941cf6070dc00c3338ecf138615fc3cce0421c3df6abe97a08af61a/regex-2026.4.4-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:421439d1bee44b19f4583ccf42670ca464ffb90e9fdc38d37f39d1ddd1e44f1f", size = 866331, upload-time = "2026-04-03T20:56:12.039Z" }, + { url = "https://files.pythonhosted.org/packages/16/e8/76d50dcc122ac33927d939f350eebcfe3dbcbda96913e03433fc36de5e63/regex-2026.4.4-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:b40379b53ecbc747fd9bdf4a0ea14eb8188ca1bd0f54f78893a39024b28f4863", size = 772673, upload-time = "2026-04-03T20:56:14.558Z" }, + { url = "https://files.pythonhosted.org/packages/a5/6e/5f6bf75e20ea6873d05ba4ec78378c375cbe08cdec571c83fbb01606e563/regex-2026.4.4-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:08c55c13d2eef54f73eeadc33146fb0baaa49e7335eb1aff6ae1324bf0ddbe4a", size = 857146, upload-time = "2026-04-03T20:56:16.663Z" }, + { url = "https://files.pythonhosted.org/packages/0b/33/3c76d9962949e487ebba353a18e89399f292287204ac8f2f4cfc3a51c233/regex-2026.4.4-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:9776b85f510062f5a75ef112afe5f494ef1635607bf1cc220c1391e9ac2f5e81", size = 803463, upload-time = "2026-04-03T20:56:18.923Z" }, + { url = "https://files.pythonhosted.org/packages/19/eb/ef32dcd2cb69b69bc0c3e55205bce94a7def48d495358946bc42186dcccc/regex-2026.4.4-cp314-cp314t-win32.whl", hash = "sha256:385edaebde5db5be103577afc8699fea73a0e36a734ba24870be7ffa61119d74", size = 275709, upload-time = "2026-04-03T20:56:20.996Z" }, + { url = "https://files.pythonhosted.org/packages/a0/86/c291bf740945acbf35ed7dbebf8e2eea2f3f78041f6bd7cdab80cb274dc0/regex-2026.4.4-cp314-cp314t-win_amd64.whl", hash = "sha256:5d354b18839328927832e2fa5f7c95b7a3ccc39e7a681529e1685898e6436d45", size = 285622, upload-time = "2026-04-03T20:56:23.641Z" }, + { url = "https://files.pythonhosted.org/packages/d5/e7/ec846d560ae6a597115153c02ca6138a7877a1748b2072d9521c10a93e58/regex-2026.4.4-cp314-cp314t-win_arm64.whl", hash = "sha256:af0384cb01a33600c49505c27c6c57ab0b27bf84a74e28524c92ca897ebdac9d", size = 275773, upload-time = "2026-04-03T20:56:26.07Z" }, +] + +[[package]] +name = "requests" +version = "2.33.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5f/a4/98b9c7c6428a668bf7e42ebb7c79d576a1c3c1e3ae2d47e674b468388871/requests-2.33.1.tar.gz", hash = "sha256:18817f8c57c6263968bc123d237e3b8b08ac046f5456bd1e307ee8f4250d3517", size = 134120, upload-time = "2026-03-30T16:09:15.531Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/8e/7540e8a2036f79a125c1d2ebadf69ed7901608859186c856fa0388ef4197/requests-2.33.1-py3-none-any.whl", hash = "sha256:4e6d1ef462f3626a1f0a0a9c42dd93c63bad33f9f1c1937509b8c5c8718ab56a", size = 64947, upload-time = "2026-03-30T16:09:13.83Z" }, +] + +[[package]] +name = "rich" +version = "15.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c0/8f/0722ca900cc807c13a6a0c696dacf35430f72e0ec571c4275d2371fca3e9/rich-15.0.0.tar.gz", hash = "sha256:edd07a4824c6b40189fb7ac9bc4c52536e9780fbbfbddf6f1e2502c31b068c36", size = 230680, upload-time = "2026-04-12T08:24:00.75Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl", hash = "sha256:33bd4ef74232fb73fe9279a257718407f169c09b78a87ad3d296f548e27de0bb", size = 310654, upload-time = "2026-04-12T08:24:02.83Z" }, +] + +[[package]] +name = "rpds-py" +version = "0.30.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/af/3f2f423103f1113b36230496629986e0ef7e199d2aa8392452b484b38ced/rpds_py-0.30.0.tar.gz", hash = "sha256:dd8ff7cf90014af0c0f787eea34794ebf6415242ee1d6fa91eaba725cc441e84", size = 69469, upload-time = "2025-11-30T20:24:38.837Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/06/0c/0c411a0ec64ccb6d104dcabe0e713e05e153a9a2c3c2bd2b32ce412166fe/rpds_py-0.30.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:679ae98e00c0e8d68a7fda324e16b90fd5260945b45d3b824c892cec9eea3288", size = 370490, upload-time = "2025-11-30T20:21:33.256Z" }, + { url = "https://files.pythonhosted.org/packages/19/6a/4ba3d0fb7297ebae71171822554abe48d7cab29c28b8f9f2c04b79988c05/rpds_py-0.30.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4cc2206b76b4f576934f0ed374b10d7ca5f457858b157ca52064bdfc26b9fc00", size = 359751, upload-time = "2025-11-30T20:21:34.591Z" }, + { url = "https://files.pythonhosted.org/packages/cd/7c/e4933565ef7f7a0818985d87c15d9d273f1a649afa6a52ea35ad011195ea/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:389a2d49eded1896c3d48b0136ead37c48e221b391c052fba3f4055c367f60a6", size = 389696, upload-time = "2025-11-30T20:21:36.122Z" }, + { url = "https://files.pythonhosted.org/packages/5e/01/6271a2511ad0815f00f7ed4390cf2567bec1d4b1da39e2c27a41e6e3b4de/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:32c8528634e1bf7121f3de08fa85b138f4e0dc47657866630611b03967f041d7", size = 403136, upload-time = "2025-11-30T20:21:37.728Z" }, + { url = "https://files.pythonhosted.org/packages/55/64/c857eb7cd7541e9b4eee9d49c196e833128a55b89a9850a9c9ac33ccf897/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f207f69853edd6f6700b86efb84999651baf3789e78a466431df1331608e5324", size = 524699, upload-time = "2025-11-30T20:21:38.92Z" }, + { url = "https://files.pythonhosted.org/packages/9c/ed/94816543404078af9ab26159c44f9e98e20fe47e2126d5d32c9d9948d10a/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:67b02ec25ba7a9e8fa74c63b6ca44cf5707f2fbfadae3ee8e7494297d56aa9df", size = 412022, upload-time = "2025-11-30T20:21:40.407Z" }, + { url = "https://files.pythonhosted.org/packages/61/b5/707f6cf0066a6412aacc11d17920ea2e19e5b2f04081c64526eb35b5c6e7/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c0e95f6819a19965ff420f65578bacb0b00f251fefe2c8b23347c37174271f3", size = 390522, upload-time = "2025-11-30T20:21:42.17Z" }, + { url = "https://files.pythonhosted.org/packages/13/4e/57a85fda37a229ff4226f8cbcf09f2a455d1ed20e802ce5b2b4a7f5ed053/rpds_py-0.30.0-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:a452763cc5198f2f98898eb98f7569649fe5da666c2dc6b5ddb10fde5a574221", size = 404579, upload-time = "2025-11-30T20:21:43.769Z" }, + { url = "https://files.pythonhosted.org/packages/f9/da/c9339293513ec680a721e0e16bf2bac3db6e5d7e922488de471308349bba/rpds_py-0.30.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e0b65193a413ccc930671c55153a03ee57cecb49e6227204b04fae512eb657a7", size = 421305, upload-time = "2025-11-30T20:21:44.994Z" }, + { url = "https://files.pythonhosted.org/packages/f9/be/522cb84751114f4ad9d822ff5a1aa3c98006341895d5f084779b99596e5c/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:858738e9c32147f78b3ac24dc0edb6610000e56dc0f700fd5f651d0a0f0eb9ff", size = 572503, upload-time = "2025-11-30T20:21:46.91Z" }, + { url = "https://files.pythonhosted.org/packages/a2/9b/de879f7e7ceddc973ea6e4629e9b380213a6938a249e94b0cdbcc325bb66/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:da279aa314f00acbb803da1e76fa18666778e8a8f83484fba94526da5de2cba7", size = 598322, upload-time = "2025-11-30T20:21:48.709Z" }, + { url = "https://files.pythonhosted.org/packages/48/ac/f01fc22efec3f37d8a914fc1b2fb9bcafd56a299edbe96406f3053edea5a/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7c64d38fb49b6cdeda16ab49e35fe0da2e1e9b34bc38bd78386530f218b37139", size = 560792, upload-time = "2025-11-30T20:21:50.024Z" }, + { url = "https://files.pythonhosted.org/packages/e2/da/4e2b19d0f131f35b6146425f846563d0ce036763e38913d917187307a671/rpds_py-0.30.0-cp310-cp310-win32.whl", hash = "sha256:6de2a32a1665b93233cde140ff8b3467bdb9e2af2b91079f0333a0974d12d464", size = 221901, upload-time = "2025-11-30T20:21:51.32Z" }, + { url = "https://files.pythonhosted.org/packages/96/cb/156d7a5cf4f78a7cc571465d8aec7a3c447c94f6749c5123f08438bcf7bc/rpds_py-0.30.0-cp310-cp310-win_amd64.whl", hash = "sha256:1726859cd0de969f88dc8673bdd954185b9104e05806be64bcd87badbe313169", size = 235823, upload-time = "2025-11-30T20:21:52.505Z" }, + { url = "https://files.pythonhosted.org/packages/4d/6e/f964e88b3d2abee2a82c1ac8366da848fce1c6d834dc2132c3fda3970290/rpds_py-0.30.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a2bffea6a4ca9f01b3f8e548302470306689684e61602aa3d141e34da06cf425", size = 370157, upload-time = "2025-11-30T20:21:53.789Z" }, + { url = "https://files.pythonhosted.org/packages/94/ba/24e5ebb7c1c82e74c4e4f33b2112a5573ddc703915b13a073737b59b86e0/rpds_py-0.30.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dc4f992dfe1e2bc3ebc7444f6c7051b4bc13cd8e33e43511e8ffd13bf407010d", size = 359676, upload-time = "2025-11-30T20:21:55.475Z" }, + { url = "https://files.pythonhosted.org/packages/84/86/04dbba1b087227747d64d80c3b74df946b986c57af0a9f0c98726d4d7a3b/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:422c3cb9856d80b09d30d2eb255d0754b23e090034e1deb4083f8004bd0761e4", size = 389938, upload-time = "2025-11-30T20:21:57.079Z" }, + { url = "https://files.pythonhosted.org/packages/42/bb/1463f0b1722b7f45431bdd468301991d1328b16cffe0b1c2918eba2c4eee/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07ae8a593e1c3c6b82ca3292efbe73c30b61332fd612e05abee07c79359f292f", size = 402932, upload-time = "2025-11-30T20:21:58.47Z" }, + { url = "https://files.pythonhosted.org/packages/99/ee/2520700a5c1f2d76631f948b0736cdf9b0acb25abd0ca8e889b5c62ac2e3/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12f90dd7557b6bd57f40abe7747e81e0c0b119bef015ea7726e69fe550e394a4", size = 525830, upload-time = "2025-11-30T20:21:59.699Z" }, + { url = "https://files.pythonhosted.org/packages/e0/ad/bd0331f740f5705cc555a5e17fdf334671262160270962e69a2bdef3bf76/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:99b47d6ad9a6da00bec6aabe5a6279ecd3c06a329d4aa4771034a21e335c3a97", size = 412033, upload-time = "2025-11-30T20:22:00.991Z" }, + { url = "https://files.pythonhosted.org/packages/f8/1e/372195d326549bb51f0ba0f2ecb9874579906b97e08880e7a65c3bef1a99/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33f559f3104504506a44bb666b93a33f5d33133765b0c216a5bf2f1e1503af89", size = 390828, upload-time = "2025-11-30T20:22:02.723Z" }, + { url = "https://files.pythonhosted.org/packages/ab/2b/d88bb33294e3e0c76bc8f351a3721212713629ffca1700fa94979cb3eae8/rpds_py-0.30.0-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:946fe926af6e44f3697abbc305ea168c2c31d3e3ef1058cf68f379bf0335a78d", size = 404683, upload-time = "2025-11-30T20:22:04.367Z" }, + { url = "https://files.pythonhosted.org/packages/50/32/c759a8d42bcb5289c1fac697cd92f6fe01a018dd937e62ae77e0e7f15702/rpds_py-0.30.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:495aeca4b93d465efde585977365187149e75383ad2684f81519f504f5c13038", size = 421583, upload-time = "2025-11-30T20:22:05.814Z" }, + { url = "https://files.pythonhosted.org/packages/2b/81/e729761dbd55ddf5d84ec4ff1f47857f4374b0f19bdabfcf929164da3e24/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9a0ca5da0386dee0655b4ccdf46119df60e0f10da268d04fe7cc87886872ba7", size = 572496, upload-time = "2025-11-30T20:22:07.713Z" }, + { url = "https://files.pythonhosted.org/packages/14/f6/69066a924c3557c9c30baa6ec3a0aa07526305684c6f86c696b08860726c/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8d6d1cc13664ec13c1b84241204ff3b12f9bb82464b8ad6e7a5d3486975c2eed", size = 598669, upload-time = "2025-11-30T20:22:09.312Z" }, + { url = "https://files.pythonhosted.org/packages/5f/48/905896b1eb8a05630d20333d1d8ffd162394127b74ce0b0784ae04498d32/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3896fa1be39912cf0757753826bc8bdc8ca331a28a7c4ae46b7a21280b06bb85", size = 561011, upload-time = "2025-11-30T20:22:11.309Z" }, + { url = "https://files.pythonhosted.org/packages/22/16/cd3027c7e279d22e5eb431dd3c0fbc677bed58797fe7581e148f3f68818b/rpds_py-0.30.0-cp311-cp311-win32.whl", hash = "sha256:55f66022632205940f1827effeff17c4fa7ae1953d2b74a8581baaefb7d16f8c", size = 221406, upload-time = "2025-11-30T20:22:13.101Z" }, + { url = "https://files.pythonhosted.org/packages/fa/5b/e7b7aa136f28462b344e652ee010d4de26ee9fd16f1bfd5811f5153ccf89/rpds_py-0.30.0-cp311-cp311-win_amd64.whl", hash = "sha256:a51033ff701fca756439d641c0ad09a41d9242fa69121c7d8769604a0a629825", size = 236024, upload-time = "2025-11-30T20:22:14.853Z" }, + { url = "https://files.pythonhosted.org/packages/14/a6/364bba985e4c13658edb156640608f2c9e1d3ea3c81b27aa9d889fff0e31/rpds_py-0.30.0-cp311-cp311-win_arm64.whl", hash = "sha256:47b0ef6231c58f506ef0b74d44e330405caa8428e770fec25329ed2cb971a229", size = 229069, upload-time = "2025-11-30T20:22:16.577Z" }, + { url = "https://files.pythonhosted.org/packages/03/e7/98a2f4ac921d82f33e03f3835f5bf3a4a40aa1bfdc57975e74a97b2b4bdd/rpds_py-0.30.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a161f20d9a43006833cd7068375a94d035714d73a172b681d8881820600abfad", size = 375086, upload-time = "2025-11-30T20:22:17.93Z" }, + { url = "https://files.pythonhosted.org/packages/4d/a1/bca7fd3d452b272e13335db8d6b0b3ecde0f90ad6f16f3328c6fb150c889/rpds_py-0.30.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6abc8880d9d036ecaafe709079969f56e876fcf107f7a8e9920ba6d5a3878d05", size = 359053, upload-time = "2025-11-30T20:22:19.297Z" }, + { url = "https://files.pythonhosted.org/packages/65/1c/ae157e83a6357eceff62ba7e52113e3ec4834a84cfe07fa4b0757a7d105f/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca28829ae5f5d569bb62a79512c842a03a12576375d5ece7d2cadf8abe96ec28", size = 390763, upload-time = "2025-11-30T20:22:21.661Z" }, + { url = "https://files.pythonhosted.org/packages/d4/36/eb2eb8515e2ad24c0bd43c3ee9cd74c33f7ca6430755ccdb240fd3144c44/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a1010ed9524c73b94d15919ca4d41d8780980e1765babf85f9a2f90d247153dd", size = 408951, upload-time = "2025-11-30T20:22:23.408Z" }, + { url = "https://files.pythonhosted.org/packages/d6/65/ad8dc1784a331fabbd740ef6f71ce2198c7ed0890dab595adb9ea2d775a1/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8d1736cfb49381ba528cd5baa46f82fdc65c06e843dab24dd70b63d09121b3f", size = 514622, upload-time = "2025-11-30T20:22:25.16Z" }, + { url = "https://files.pythonhosted.org/packages/63/8e/0cfa7ae158e15e143fe03993b5bcd743a59f541f5952e1546b1ac1b5fd45/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d948b135c4693daff7bc2dcfc4ec57237a29bd37e60c2fabf5aff2bbacf3e2f1", size = 414492, upload-time = "2025-11-30T20:22:26.505Z" }, + { url = "https://files.pythonhosted.org/packages/60/1b/6f8f29f3f995c7ffdde46a626ddccd7c63aefc0efae881dc13b6e5d5bb16/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47f236970bccb2233267d89173d3ad2703cd36a0e2a6e92d0560d333871a3d23", size = 394080, upload-time = "2025-11-30T20:22:27.934Z" }, + { url = "https://files.pythonhosted.org/packages/6d/d5/a266341051a7a3ca2f4b750a3aa4abc986378431fc2da508c5034d081b70/rpds_py-0.30.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:2e6ecb5a5bcacf59c3f912155044479af1d0b6681280048b338b28e364aca1f6", size = 408680, upload-time = "2025-11-30T20:22:29.341Z" }, + { url = "https://files.pythonhosted.org/packages/10/3b/71b725851df9ab7a7a4e33cf36d241933da66040d195a84781f49c50490c/rpds_py-0.30.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a8fa71a2e078c527c3e9dc9fc5a98c9db40bcc8a92b4e8858e36d329f8684b51", size = 423589, upload-time = "2025-11-30T20:22:31.469Z" }, + { url = "https://files.pythonhosted.org/packages/00/2b/e59e58c544dc9bd8bd8384ecdb8ea91f6727f0e37a7131baeff8d6f51661/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:73c67f2db7bc334e518d097c6d1e6fed021bbc9b7d678d6cc433478365d1d5f5", size = 573289, upload-time = "2025-11-30T20:22:32.997Z" }, + { url = "https://files.pythonhosted.org/packages/da/3e/a18e6f5b460893172a7d6a680e86d3b6bc87a54c1f0b03446a3c8c7b588f/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5ba103fb455be00f3b1c2076c9d4264bfcb037c976167a6047ed82f23153f02e", size = 599737, upload-time = "2025-11-30T20:22:34.419Z" }, + { url = "https://files.pythonhosted.org/packages/5c/e2/714694e4b87b85a18e2c243614974413c60aa107fd815b8cbc42b873d1d7/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7cee9c752c0364588353e627da8a7e808a66873672bcb5f52890c33fd965b394", size = 563120, upload-time = "2025-11-30T20:22:35.903Z" }, + { url = "https://files.pythonhosted.org/packages/6f/ab/d5d5e3bcedb0a77f4f613706b750e50a5a3ba1c15ccd3665ecc636c968fd/rpds_py-0.30.0-cp312-cp312-win32.whl", hash = "sha256:1ab5b83dbcf55acc8b08fc62b796ef672c457b17dbd7820a11d6c52c06839bdf", size = 223782, upload-time = "2025-11-30T20:22:37.271Z" }, + { url = "https://files.pythonhosted.org/packages/39/3b/f786af9957306fdc38a74cef405b7b93180f481fb48453a114bb6465744a/rpds_py-0.30.0-cp312-cp312-win_amd64.whl", hash = "sha256:a090322ca841abd453d43456ac34db46e8b05fd9b3b4ac0c78bcde8b089f959b", size = 240463, upload-time = "2025-11-30T20:22:39.021Z" }, + { url = "https://files.pythonhosted.org/packages/f3/d2/b91dc748126c1559042cfe41990deb92c4ee3e2b415f6b5234969ffaf0cc/rpds_py-0.30.0-cp312-cp312-win_arm64.whl", hash = "sha256:669b1805bd639dd2989b281be2cfd951c6121b65e729d9b843e9639ef1fd555e", size = 230868, upload-time = "2025-11-30T20:22:40.493Z" }, + { url = "https://files.pythonhosted.org/packages/ed/dc/d61221eb88ff410de3c49143407f6f3147acf2538c86f2ab7ce65ae7d5f9/rpds_py-0.30.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f83424d738204d9770830d35290ff3273fbb02b41f919870479fab14b9d303b2", size = 374887, upload-time = "2025-11-30T20:22:41.812Z" }, + { url = "https://files.pythonhosted.org/packages/fd/32/55fb50ae104061dbc564ef15cc43c013dc4a9f4527a1f4d99baddf56fe5f/rpds_py-0.30.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e7536cd91353c5273434b4e003cbda89034d67e7710eab8761fd918ec6c69cf8", size = 358904, upload-time = "2025-11-30T20:22:43.479Z" }, + { url = "https://files.pythonhosted.org/packages/58/70/faed8186300e3b9bdd138d0273109784eea2396c68458ed580f885dfe7ad/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2771c6c15973347f50fece41fc447c054b7ac2ae0502388ce3b6738cd366e3d4", size = 389945, upload-time = "2025-11-30T20:22:44.819Z" }, + { url = "https://files.pythonhosted.org/packages/bd/a8/073cac3ed2c6387df38f71296d002ab43496a96b92c823e76f46b8af0543/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0a59119fc6e3f460315fe9d08149f8102aa322299deaa5cab5b40092345c2136", size = 407783, upload-time = "2025-11-30T20:22:46.103Z" }, + { url = "https://files.pythonhosted.org/packages/77/57/5999eb8c58671f1c11eba084115e77a8899d6e694d2a18f69f0ba471ec8b/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:76fec018282b4ead0364022e3c54b60bf368b9d926877957a8624b58419169b7", size = 515021, upload-time = "2025-11-30T20:22:47.458Z" }, + { url = "https://files.pythonhosted.org/packages/e0/af/5ab4833eadc36c0a8ed2bc5c0de0493c04f6c06de223170bd0798ff98ced/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:692bef75a5525db97318e8cd061542b5a79812d711ea03dbc1f6f8dbb0c5f0d2", size = 414589, upload-time = "2025-11-30T20:22:48.872Z" }, + { url = "https://files.pythonhosted.org/packages/b7/de/f7192e12b21b9e9a68a6d0f249b4af3fdcdff8418be0767a627564afa1f1/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9027da1ce107104c50c81383cae773ef5c24d296dd11c99e2629dbd7967a20c6", size = 394025, upload-time = "2025-11-30T20:22:50.196Z" }, + { url = "https://files.pythonhosted.org/packages/91/c4/fc70cd0249496493500e7cc2de87504f5aa6509de1e88623431fec76d4b6/rpds_py-0.30.0-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:9cf69cdda1f5968a30a359aba2f7f9aa648a9ce4b580d6826437f2b291cfc86e", size = 408895, upload-time = "2025-11-30T20:22:51.87Z" }, + { url = "https://files.pythonhosted.org/packages/58/95/d9275b05ab96556fefff73a385813eb66032e4c99f411d0795372d9abcea/rpds_py-0.30.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a4796a717bf12b9da9d3ad002519a86063dcac8988b030e405704ef7d74d2d9d", size = 422799, upload-time = "2025-11-30T20:22:53.341Z" }, + { url = "https://files.pythonhosted.org/packages/06/c1/3088fc04b6624eb12a57eb814f0d4997a44b0d208d6cace713033ff1a6ba/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5d4c2aa7c50ad4728a094ebd5eb46c452e9cb7edbfdb18f9e1221f597a73e1e7", size = 572731, upload-time = "2025-11-30T20:22:54.778Z" }, + { url = "https://files.pythonhosted.org/packages/d8/42/c612a833183b39774e8ac8fecae81263a68b9583ee343db33ab571a7ce55/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ba81a9203d07805435eb06f536d95a266c21e5b2dfbf6517748ca40c98d19e31", size = 599027, upload-time = "2025-11-30T20:22:56.212Z" }, + { url = "https://files.pythonhosted.org/packages/5f/60/525a50f45b01d70005403ae0e25f43c0384369ad24ffe46e8d9068b50086/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:945dccface01af02675628334f7cf49c2af4c1c904748efc5cf7bbdf0b579f95", size = 563020, upload-time = "2025-11-30T20:22:58.2Z" }, + { url = "https://files.pythonhosted.org/packages/0b/5d/47c4655e9bcd5ca907148535c10e7d489044243cc9941c16ed7cd53be91d/rpds_py-0.30.0-cp313-cp313-win32.whl", hash = "sha256:b40fb160a2db369a194cb27943582b38f79fc4887291417685f3ad693c5a1d5d", size = 223139, upload-time = "2025-11-30T20:23:00.209Z" }, + { url = "https://files.pythonhosted.org/packages/f2/e1/485132437d20aa4d3e1d8b3fb5a5e65aa8139f1e097080c2a8443201742c/rpds_py-0.30.0-cp313-cp313-win_amd64.whl", hash = "sha256:806f36b1b605e2d6a72716f321f20036b9489d29c51c91f4dd29a3e3afb73b15", size = 240224, upload-time = "2025-11-30T20:23:02.008Z" }, + { url = "https://files.pythonhosted.org/packages/24/95/ffd128ed1146a153d928617b0ef673960130be0009c77d8fbf0abe306713/rpds_py-0.30.0-cp313-cp313-win_arm64.whl", hash = "sha256:d96c2086587c7c30d44f31f42eae4eac89b60dabbac18c7669be3700f13c3ce1", size = 230645, upload-time = "2025-11-30T20:23:03.43Z" }, + { url = "https://files.pythonhosted.org/packages/ff/1b/b10de890a0def2a319a2626334a7f0ae388215eb60914dbac8a3bae54435/rpds_py-0.30.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:eb0b93f2e5c2189ee831ee43f156ed34e2a89a78a66b98cadad955972548be5a", size = 364443, upload-time = "2025-11-30T20:23:04.878Z" }, + { url = "https://files.pythonhosted.org/packages/0d/bf/27e39f5971dc4f305a4fb9c672ca06f290f7c4e261c568f3dea16a410d47/rpds_py-0.30.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:922e10f31f303c7c920da8981051ff6d8c1a56207dbdf330d9047f6d30b70e5e", size = 353375, upload-time = "2025-11-30T20:23:06.342Z" }, + { url = "https://files.pythonhosted.org/packages/40/58/442ada3bba6e8e6615fc00483135c14a7538d2ffac30e2d933ccf6852232/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdc62c8286ba9bf7f47befdcea13ea0e26bf294bda99758fd90535cbaf408000", size = 383850, upload-time = "2025-11-30T20:23:07.825Z" }, + { url = "https://files.pythonhosted.org/packages/14/14/f59b0127409a33c6ef6f5c1ebd5ad8e32d7861c9c7adfa9a624fc3889f6c/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:47f9a91efc418b54fb8190a6b4aa7813a23fb79c51f4bb84e418f5476c38b8db", size = 392812, upload-time = "2025-11-30T20:23:09.228Z" }, + { url = "https://files.pythonhosted.org/packages/b3/66/e0be3e162ac299b3a22527e8913767d869e6cc75c46bd844aa43fb81ab62/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f3587eb9b17f3789ad50824084fa6f81921bbf9a795826570bda82cb3ed91f2", size = 517841, upload-time = "2025-11-30T20:23:11.186Z" }, + { url = "https://files.pythonhosted.org/packages/3d/55/fa3b9cf31d0c963ecf1ba777f7cf4b2a2c976795ac430d24a1f43d25a6ba/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39c02563fc592411c2c61d26b6c5fe1e51eaa44a75aa2c8735ca88b0d9599daa", size = 408149, upload-time = "2025-11-30T20:23:12.864Z" }, + { url = "https://files.pythonhosted.org/packages/60/ca/780cf3b1a32b18c0f05c441958d3758f02544f1d613abf9488cd78876378/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51a1234d8febafdfd33a42d97da7a43f5dcb120c1060e352a3fbc0c6d36e2083", size = 383843, upload-time = "2025-11-30T20:23:14.638Z" }, + { url = "https://files.pythonhosted.org/packages/82/86/d5f2e04f2aa6247c613da0c1dd87fcd08fa17107e858193566048a1e2f0a/rpds_py-0.30.0-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:eb2c4071ab598733724c08221091e8d80e89064cd472819285a9ab0f24bcedb9", size = 396507, upload-time = "2025-11-30T20:23:16.105Z" }, + { url = "https://files.pythonhosted.org/packages/4b/9a/453255d2f769fe44e07ea9785c8347edaf867f7026872e76c1ad9f7bed92/rpds_py-0.30.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6bdfdb946967d816e6adf9a3d8201bfad269c67efe6cefd7093ef959683c8de0", size = 414949, upload-time = "2025-11-30T20:23:17.539Z" }, + { url = "https://files.pythonhosted.org/packages/a3/31/622a86cdc0c45d6df0e9ccb6becdba5074735e7033c20e401a6d9d0e2ca0/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c77afbd5f5250bf27bf516c7c4a016813eb2d3e116139aed0096940c5982da94", size = 565790, upload-time = "2025-11-30T20:23:19.029Z" }, + { url = "https://files.pythonhosted.org/packages/1c/5d/15bbf0fb4a3f58a3b1c67855ec1efcc4ceaef4e86644665fff03e1b66d8d/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:61046904275472a76c8c90c9ccee9013d70a6d0f73eecefd38c1ae7c39045a08", size = 590217, upload-time = "2025-11-30T20:23:20.885Z" }, + { url = "https://files.pythonhosted.org/packages/6d/61/21b8c41f68e60c8cc3b2e25644f0e3681926020f11d06ab0b78e3c6bbff1/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c5f36a861bc4b7da6516dbdf302c55313afa09b81931e8280361a4f6c9a2d27", size = 555806, upload-time = "2025-11-30T20:23:22.488Z" }, + { url = "https://files.pythonhosted.org/packages/f9/39/7e067bb06c31de48de3eb200f9fc7c58982a4d3db44b07e73963e10d3be9/rpds_py-0.30.0-cp313-cp313t-win32.whl", hash = "sha256:3d4a69de7a3e50ffc214ae16d79d8fbb0922972da0356dcf4d0fdca2878559c6", size = 211341, upload-time = "2025-11-30T20:23:24.449Z" }, + { url = "https://files.pythonhosted.org/packages/0a/4d/222ef0b46443cf4cf46764d9c630f3fe4abaa7245be9417e56e9f52b8f65/rpds_py-0.30.0-cp313-cp313t-win_amd64.whl", hash = "sha256:f14fc5df50a716f7ece6a80b6c78bb35ea2ca47c499e422aa4463455dd96d56d", size = 225768, upload-time = "2025-11-30T20:23:25.908Z" }, + { url = "https://files.pythonhosted.org/packages/86/81/dad16382ebbd3d0e0328776d8fd7ca94220e4fa0798d1dc5e7da48cb3201/rpds_py-0.30.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:68f19c879420aa08f61203801423f6cd5ac5f0ac4ac82a2368a9fcd6a9a075e0", size = 362099, upload-time = "2025-11-30T20:23:27.316Z" }, + { url = "https://files.pythonhosted.org/packages/2b/60/19f7884db5d5603edf3c6bce35408f45ad3e97e10007df0e17dd57af18f8/rpds_py-0.30.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ec7c4490c672c1a0389d319b3a9cfcd098dcdc4783991553c332a15acf7249be", size = 353192, upload-time = "2025-11-30T20:23:29.151Z" }, + { url = "https://files.pythonhosted.org/packages/bf/c4/76eb0e1e72d1a9c4703c69607cec123c29028bff28ce41588792417098ac/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f251c812357a3fed308d684a5079ddfb9d933860fc6de89f2b7ab00da481e65f", size = 384080, upload-time = "2025-11-30T20:23:30.785Z" }, + { url = "https://files.pythonhosted.org/packages/72/87/87ea665e92f3298d1b26d78814721dc39ed8d2c74b86e83348d6b48a6f31/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac98b175585ecf4c0348fd7b29c3864bda53b805c773cbf7bfdaffc8070c976f", size = 394841, upload-time = "2025-11-30T20:23:32.209Z" }, + { url = "https://files.pythonhosted.org/packages/77/ad/7783a89ca0587c15dcbf139b4a8364a872a25f861bdb88ed99f9b0dec985/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3e62880792319dbeb7eb866547f2e35973289e7d5696c6e295476448f5b63c87", size = 516670, upload-time = "2025-11-30T20:23:33.742Z" }, + { url = "https://files.pythonhosted.org/packages/5b/3c/2882bdac942bd2172f3da574eab16f309ae10a3925644e969536553cb4ee/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4e7fc54e0900ab35d041b0601431b0a0eb495f0851a0639b6ef90f7741b39a18", size = 408005, upload-time = "2025-11-30T20:23:35.253Z" }, + { url = "https://files.pythonhosted.org/packages/ce/81/9a91c0111ce1758c92516a3e44776920b579d9a7c09b2b06b642d4de3f0f/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47e77dc9822d3ad616c3d5759ea5631a75e5809d5a28707744ef79d7a1bcfcad", size = 382112, upload-time = "2025-11-30T20:23:36.842Z" }, + { url = "https://files.pythonhosted.org/packages/cf/8e/1da49d4a107027e5fbc64daeab96a0706361a2918da10cb41769244b805d/rpds_py-0.30.0-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:b4dc1a6ff022ff85ecafef7979a2c6eb423430e05f1165d6688234e62ba99a07", size = 399049, upload-time = "2025-11-30T20:23:38.343Z" }, + { url = "https://files.pythonhosted.org/packages/df/5a/7ee239b1aa48a127570ec03becbb29c9d5a9eb092febbd1699d567cae859/rpds_py-0.30.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4559c972db3a360808309e06a74628b95eaccbf961c335c8fe0d590cf587456f", size = 415661, upload-time = "2025-11-30T20:23:40.263Z" }, + { url = "https://files.pythonhosted.org/packages/70/ea/caa143cf6b772f823bc7929a45da1fa83569ee49b11d18d0ada7f5ee6fd6/rpds_py-0.30.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:0ed177ed9bded28f8deb6ab40c183cd1192aa0de40c12f38be4d59cd33cb5c65", size = 565606, upload-time = "2025-11-30T20:23:42.186Z" }, + { url = "https://files.pythonhosted.org/packages/64/91/ac20ba2d69303f961ad8cf55bf7dbdb4763f627291ba3d0d7d67333cced9/rpds_py-0.30.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:ad1fa8db769b76ea911cb4e10f049d80bf518c104f15b3edb2371cc65375c46f", size = 591126, upload-time = "2025-11-30T20:23:44.086Z" }, + { url = "https://files.pythonhosted.org/packages/21/20/7ff5f3c8b00c8a95f75985128c26ba44503fb35b8e0259d812766ea966c7/rpds_py-0.30.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:46e83c697b1f1c72b50e5ee5adb4353eef7406fb3f2043d64c33f20ad1c2fc53", size = 553371, upload-time = "2025-11-30T20:23:46.004Z" }, + { url = "https://files.pythonhosted.org/packages/72/c7/81dadd7b27c8ee391c132a6b192111ca58d866577ce2d9b0ca157552cce0/rpds_py-0.30.0-cp314-cp314-win32.whl", hash = "sha256:ee454b2a007d57363c2dfd5b6ca4a5d7e2c518938f8ed3b706e37e5d470801ed", size = 215298, upload-time = "2025-11-30T20:23:47.696Z" }, + { url = "https://files.pythonhosted.org/packages/3e/d2/1aaac33287e8cfb07aab2e6b8ac1deca62f6f65411344f1433c55e6f3eb8/rpds_py-0.30.0-cp314-cp314-win_amd64.whl", hash = "sha256:95f0802447ac2d10bcc69f6dc28fe95fdf17940367b21d34e34c737870758950", size = 228604, upload-time = "2025-11-30T20:23:49.501Z" }, + { url = "https://files.pythonhosted.org/packages/e8/95/ab005315818cc519ad074cb7784dae60d939163108bd2b394e60dc7b5461/rpds_py-0.30.0-cp314-cp314-win_arm64.whl", hash = "sha256:613aa4771c99f03346e54c3f038e4cc574ac09a3ddfb0e8878487335e96dead6", size = 222391, upload-time = "2025-11-30T20:23:50.96Z" }, + { url = "https://files.pythonhosted.org/packages/9e/68/154fe0194d83b973cdedcdcc88947a2752411165930182ae41d983dcefa6/rpds_py-0.30.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:7e6ecfcb62edfd632e56983964e6884851786443739dbfe3582947e87274f7cb", size = 364868, upload-time = "2025-11-30T20:23:52.494Z" }, + { url = "https://files.pythonhosted.org/packages/83/69/8bbc8b07ec854d92a8b75668c24d2abcb1719ebf890f5604c61c9369a16f/rpds_py-0.30.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a1d0bc22a7cdc173fedebb73ef81e07faef93692b8c1ad3733b67e31e1b6e1b8", size = 353747, upload-time = "2025-11-30T20:23:54.036Z" }, + { url = "https://files.pythonhosted.org/packages/ab/00/ba2e50183dbd9abcce9497fa5149c62b4ff3e22d338a30d690f9af970561/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d08f00679177226c4cb8c5265012eea897c8ca3b93f429e546600c971bcbae7", size = 383795, upload-time = "2025-11-30T20:23:55.556Z" }, + { url = "https://files.pythonhosted.org/packages/05/6f/86f0272b84926bcb0e4c972262f54223e8ecc556b3224d281e6598fc9268/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5965af57d5848192c13534f90f9dd16464f3c37aaf166cc1da1cae1fd5a34898", size = 393330, upload-time = "2025-11-30T20:23:57.033Z" }, + { url = "https://files.pythonhosted.org/packages/cb/e9/0e02bb2e6dc63d212641da45df2b0bf29699d01715913e0d0f017ee29438/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a4e86e34e9ab6b667c27f3211ca48f73dba7cd3d90f8d5b11be56e5dbc3fb4e", size = 518194, upload-time = "2025-11-30T20:23:58.637Z" }, + { url = "https://files.pythonhosted.org/packages/ee/ca/be7bca14cf21513bdf9c0606aba17d1f389ea2b6987035eb4f62bd923f25/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5d3e6b26f2c785d65cc25ef1e5267ccbe1b069c5c21b8cc724efee290554419", size = 408340, upload-time = "2025-11-30T20:24:00.2Z" }, + { url = "https://files.pythonhosted.org/packages/c2/c7/736e00ebf39ed81d75544c0da6ef7b0998f8201b369acf842f9a90dc8fce/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:626a7433c34566535b6e56a1b39a7b17ba961e97ce3b80ec62e6f1312c025551", size = 383765, upload-time = "2025-11-30T20:24:01.759Z" }, + { url = "https://files.pythonhosted.org/packages/4a/3f/da50dfde9956aaf365c4adc9533b100008ed31aea635f2b8d7b627e25b49/rpds_py-0.30.0-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:acd7eb3f4471577b9b5a41baf02a978e8bdeb08b4b355273994f8b87032000a8", size = 396834, upload-time = "2025-11-30T20:24:03.687Z" }, + { url = "https://files.pythonhosted.org/packages/4e/00/34bcc2565b6020eab2623349efbdec810676ad571995911f1abdae62a3a0/rpds_py-0.30.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fe5fa731a1fa8a0a56b0977413f8cacac1768dad38d16b3a296712709476fbd5", size = 415470, upload-time = "2025-11-30T20:24:05.232Z" }, + { url = "https://files.pythonhosted.org/packages/8c/28/882e72b5b3e6f718d5453bd4d0d9cf8df36fddeb4ddbbab17869d5868616/rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:74a3243a411126362712ee1524dfc90c650a503502f135d54d1b352bd01f2404", size = 565630, upload-time = "2025-11-30T20:24:06.878Z" }, + { url = "https://files.pythonhosted.org/packages/3b/97/04a65539c17692de5b85c6e293520fd01317fd878ea1995f0367d4532fb1/rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:3e8eeb0544f2eb0d2581774be4c3410356eba189529a6b3e36bbbf9696175856", size = 591148, upload-time = "2025-11-30T20:24:08.445Z" }, + { url = "https://files.pythonhosted.org/packages/85/70/92482ccffb96f5441aab93e26c4d66489eb599efdcf96fad90c14bbfb976/rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:dbd936cde57abfee19ab3213cf9c26be06d60750e60a8e4dd85d1ab12c8b1f40", size = 556030, upload-time = "2025-11-30T20:24:10.956Z" }, + { url = "https://files.pythonhosted.org/packages/20/53/7c7e784abfa500a2b6b583b147ee4bb5a2b3747a9166bab52fec4b5b5e7d/rpds_py-0.30.0-cp314-cp314t-win32.whl", hash = "sha256:dc824125c72246d924f7f796b4f63c1e9dc810c7d9e2355864b3c3a73d59ade0", size = 211570, upload-time = "2025-11-30T20:24:12.735Z" }, + { url = "https://files.pythonhosted.org/packages/d0/02/fa464cdfbe6b26e0600b62c528b72d8608f5cc49f96b8d6e38c95d60c676/rpds_py-0.30.0-cp314-cp314t-win_amd64.whl", hash = "sha256:27f4b0e92de5bfbc6f86e43959e6edd1425c33b5e69aab0984a72047f2bcf1e3", size = 226532, upload-time = "2025-11-30T20:24:14.634Z" }, + { url = "https://files.pythonhosted.org/packages/69/71/3f34339ee70521864411f8b6992e7ab13ac30d8e4e3309e07c7361767d91/rpds_py-0.30.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c2262bdba0ad4fc6fb5545660673925c2d2a5d9e2e0fb603aad545427be0fc58", size = 372292, upload-time = "2025-11-30T20:24:16.537Z" }, + { url = "https://files.pythonhosted.org/packages/57/09/f183df9b8f2d66720d2ef71075c59f7e1b336bec7ee4c48f0a2b06857653/rpds_py-0.30.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ee6af14263f25eedc3bb918a3c04245106a42dfd4f5c2285ea6f997b1fc3f89a", size = 362128, upload-time = "2025-11-30T20:24:18.086Z" }, + { url = "https://files.pythonhosted.org/packages/7a/68/5c2594e937253457342e078f0cc1ded3dd7b2ad59afdbf2d354869110a02/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3adbb8179ce342d235c31ab8ec511e66c73faa27a47e076ccc92421add53e2bb", size = 391542, upload-time = "2025-11-30T20:24:20.092Z" }, + { url = "https://files.pythonhosted.org/packages/49/5c/31ef1afd70b4b4fbdb2800249f34c57c64beb687495b10aec0365f53dfc4/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:250fa00e9543ac9b97ac258bd37367ff5256666122c2d0f2bc97577c60a1818c", size = 404004, upload-time = "2025-11-30T20:24:22.231Z" }, + { url = "https://files.pythonhosted.org/packages/e3/63/0cfbea38d05756f3440ce6534d51a491d26176ac045e2707adc99bb6e60a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9854cf4f488b3d57b9aaeb105f06d78e5529d3145b1e4a41750167e8c213c6d3", size = 527063, upload-time = "2025-11-30T20:24:24.302Z" }, + { url = "https://files.pythonhosted.org/packages/42/e6/01e1f72a2456678b0f618fc9a1a13f882061690893c192fcad9f2926553a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:993914b8e560023bc0a8bf742c5f303551992dcb85e247b1e5c7f4a7d145bda5", size = 413099, upload-time = "2025-11-30T20:24:25.916Z" }, + { url = "https://files.pythonhosted.org/packages/b8/25/8df56677f209003dcbb180765520c544525e3ef21ea72279c98b9aa7c7fb/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58edca431fb9b29950807e301826586e5bbf24163677732429770a697ffe6738", size = 392177, upload-time = "2025-11-30T20:24:27.834Z" }, + { url = "https://files.pythonhosted.org/packages/4a/b4/0a771378c5f16f8115f796d1f437950158679bcd2a7c68cf251cfb00ed5b/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:dea5b552272a944763b34394d04577cf0f9bd013207bc32323b5a89a53cf9c2f", size = 406015, upload-time = "2025-11-30T20:24:29.457Z" }, + { url = "https://files.pythonhosted.org/packages/36/d8/456dbba0af75049dc6f63ff295a2f92766b9d521fa00de67a2bd6427d57a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ba3af48635eb83d03f6c9735dfb21785303e73d22ad03d489e88adae6eab8877", size = 423736, upload-time = "2025-11-30T20:24:31.22Z" }, + { url = "https://files.pythonhosted.org/packages/13/64/b4d76f227d5c45a7e0b796c674fd81b0a6c4fbd48dc29271857d8219571c/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:dff13836529b921e22f15cb099751209a60009731a68519630a24d61f0b1b30a", size = 573981, upload-time = "2025-11-30T20:24:32.934Z" }, + { url = "https://files.pythonhosted.org/packages/20/91/092bacadeda3edf92bf743cc96a7be133e13a39cdbfd7b5082e7ab638406/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:1b151685b23929ab7beec71080a8889d4d6d9fa9a983d213f07121205d48e2c4", size = 599782, upload-time = "2025-11-30T20:24:35.169Z" }, + { url = "https://files.pythonhosted.org/packages/d1/b7/b95708304cd49b7b6f82fdd039f1748b66ec2b21d6a45180910802f1abf1/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ac37f9f516c51e5753f27dfdef11a88330f04de2d564be3991384b2f3535d02e", size = 562191, upload-time = "2025-11-30T20:24:36.853Z" }, +] + +[[package]] +name = "rtree" +version = "1.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/95/09/7302695875a019514de9a5dd17b8320e7a19d6e7bc8f85dcfb79a4ce2da3/rtree-1.4.1.tar.gz", hash = "sha256:c6b1b3550881e57ebe530cc6cffefc87cd9bf49c30b37b894065a9f810875e46", size = 52425, upload-time = "2025-08-13T19:32:01.413Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/d9/108cd989a4c0954e60b3cdc86fd2826407702b5375f6dfdab2802e5fed98/rtree-1.4.1-py3-none-macosx_10_9_x86_64.whl", hash = "sha256:d672184298527522d4914d8ae53bf76982b86ca420b0acde9298a7a87d81d4a4", size = 468484, upload-time = "2025-08-13T19:31:50.593Z" }, + { url = "https://files.pythonhosted.org/packages/f3/cf/2710b6fd6b07ea0aef317b29f335790ba6adf06a28ac236078ed9bd8a91d/rtree-1.4.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:a7e48d805e12011c2cf739a29d6a60ae852fb1de9fc84220bbcef67e6e595d7d", size = 436325, upload-time = "2025-08-13T19:31:52.367Z" }, + { url = "https://files.pythonhosted.org/packages/55/e1/4d075268a46e68db3cac51846eb6a3ab96ed481c585c5a1ad411b3c23aad/rtree-1.4.1-py3-none-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:efa8c4496e31e9ad58ff6c7df89abceac7022d906cb64a3e18e4fceae6b77f65", size = 459789, upload-time = "2025-08-13T19:31:53.926Z" }, + { url = "https://files.pythonhosted.org/packages/d1/75/e5d44be90525cd28503e7f836d077ae6663ec0687a13ba7810b4114b3668/rtree-1.4.1-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:12de4578f1b3381a93a655846900be4e3d5f4cd5e306b8b00aa77c1121dc7e8c", size = 507644, upload-time = "2025-08-13T19:31:55.164Z" }, + { url = "https://files.pythonhosted.org/packages/fd/85/b8684f769a142163b52859a38a486493b05bafb4f2fb71d4f945de28ebf9/rtree-1.4.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:b558edda52eca3e6d1ee629042192c65e6b7f2c150d6d6cd207ce82f85be3967", size = 1454478, upload-time = "2025-08-13T19:31:56.808Z" }, + { url = "https://files.pythonhosted.org/packages/e9/a4/c2292b95246b9165cc43a0c3757e80995d58bc9b43da5cb47ad6e3535213/rtree-1.4.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:f155bc8d6bac9dcd383481dee8c130947a4866db1d16cb6dff442329a038a0dc", size = 1555140, upload-time = "2025-08-13T19:31:58.031Z" }, + { url = "https://files.pythonhosted.org/packages/74/25/5282c8270bfcd620d3e73beb35b40ac4ab00f0a898d98ebeb41ef0989ec8/rtree-1.4.1-py3-none-win_amd64.whl", hash = "sha256:efe125f416fd27150197ab8521158662943a40f87acab8028a1aac4ad667a489", size = 389358, upload-time = "2025-08-13T19:31:59.247Z" }, + { url = "https://files.pythonhosted.org/packages/3f/50/0a9e7e7afe7339bd5e36911f0ceb15fed51945836ed803ae5afd661057fd/rtree-1.4.1-py3-none-win_arm64.whl", hash = "sha256:3d46f55729b28138e897ffef32f7ce93ac335cb67f9120125ad3742a220800f0", size = 355253, upload-time = "2025-08-13T19:32:00.296Z" }, +] + +[[package]] +name = "safetensors" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/29/9c/6e74567782559a63bd040a236edca26fd71bc7ba88de2ef35d75df3bca5e/safetensors-0.7.0.tar.gz", hash = "sha256:07663963b67e8bd9f0b8ad15bb9163606cd27cc5a1b96235a50d8369803b96b0", size = 200878, upload-time = "2025-11-19T15:18:43.199Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fa/47/aef6c06649039accf914afef490268e1067ed82be62bcfa5b7e886ad15e8/safetensors-0.7.0-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:c82f4d474cf725255d9e6acf17252991c3c8aac038d6ef363a4bf8be2f6db517", size = 467781, upload-time = "2025-11-19T15:18:35.84Z" }, + { url = "https://files.pythonhosted.org/packages/e8/00/374c0c068e30cd31f1e1b46b4b5738168ec79e7689ca82ee93ddfea05109/safetensors-0.7.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:94fd4858284736bb67a897a41608b5b0c2496c9bdb3bf2af1fa3409127f20d57", size = 447058, upload-time = "2025-11-19T15:18:34.416Z" }, + { url = "https://files.pythonhosted.org/packages/f1/06/578ffed52c2296f93d7fd2d844cabfa92be51a587c38c8afbb8ae449ca89/safetensors-0.7.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e07d91d0c92a31200f25351f4acb2bc6aff7f48094e13ebb1d0fb995b54b6542", size = 491748, upload-time = "2025-11-19T15:18:09.79Z" }, + { url = "https://files.pythonhosted.org/packages/ae/33/1debbbb70e4791dde185edb9413d1fe01619255abb64b300157d7f15dddd/safetensors-0.7.0-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8469155f4cb518bafb4acf4865e8bb9d6804110d2d9bdcaa78564b9fd841e104", size = 503881, upload-time = "2025-11-19T15:18:16.145Z" }, + { url = "https://files.pythonhosted.org/packages/8e/1c/40c2ca924d60792c3be509833df711b553c60effbd91da6f5284a83f7122/safetensors-0.7.0-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:54bef08bf00a2bff599982f6b08e8770e09cc012d7bba00783fc7ea38f1fb37d", size = 623463, upload-time = "2025-11-19T15:18:21.11Z" }, + { url = "https://files.pythonhosted.org/packages/9b/3a/13784a9364bd43b0d61eef4bea2845039bc2030458b16594a1bd787ae26e/safetensors-0.7.0-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:42cb091236206bb2016d245c377ed383aa7f78691748f3bb6ee1bfa51ae2ce6a", size = 532855, upload-time = "2025-11-19T15:18:25.719Z" }, + { url = "https://files.pythonhosted.org/packages/a0/60/429e9b1cb3fc651937727befe258ea24122d9663e4d5709a48c9cbfceecb/safetensors-0.7.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac7252938f0696ddea46f5e855dd3138444e82236e3be475f54929f0c510d48", size = 507152, upload-time = "2025-11-19T15:18:33.023Z" }, + { url = "https://files.pythonhosted.org/packages/3c/a8/4b45e4e059270d17af60359713ffd83f97900d45a6afa73aaa0d737d48b6/safetensors-0.7.0-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1d060c70284127fa805085d8f10fbd0962792aed71879d00864acda69dbab981", size = 541856, upload-time = "2025-11-19T15:18:31.075Z" }, + { url = "https://files.pythonhosted.org/packages/06/87/d26d8407c44175d8ae164a95b5a62707fcc445f3c0c56108e37d98070a3d/safetensors-0.7.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:cdab83a366799fa730f90a4ebb563e494f28e9e92c4819e556152ad55e43591b", size = 674060, upload-time = "2025-11-19T15:18:37.211Z" }, + { url = "https://files.pythonhosted.org/packages/11/f5/57644a2ff08dc6325816ba7217e5095f17269dada2554b658442c66aed51/safetensors-0.7.0-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:672132907fcad9f2aedcb705b2d7b3b93354a2aec1b2f706c4db852abe338f85", size = 771715, upload-time = "2025-11-19T15:18:38.689Z" }, + { url = "https://files.pythonhosted.org/packages/86/31/17883e13a814bd278ae6e266b13282a01049b0c81341da7fd0e3e71a80a3/safetensors-0.7.0-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:5d72abdb8a4d56d4020713724ba81dac065fedb7f3667151c4a637f1d3fb26c0", size = 714377, upload-time = "2025-11-19T15:18:40.162Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d8/0c8a7dc9b41dcac53c4cbf9df2b9c83e0e0097203de8b37a712b345c0be5/safetensors-0.7.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b0f6d66c1c538d5a94a73aa9ddca8ccc4227e6c9ff555322ea40bdd142391dd4", size = 677368, upload-time = "2025-11-19T15:18:41.627Z" }, + { url = "https://files.pythonhosted.org/packages/05/e5/cb4b713c8a93469e3c5be7c3f8d77d307e65fe89673e731f5c2bfd0a9237/safetensors-0.7.0-cp38-abi3-win32.whl", hash = "sha256:c74af94bf3ac15ac4d0f2a7c7b4663a15f8c2ab15ed0fc7531ca61d0835eccba", size = 326423, upload-time = "2025-11-19T15:18:45.74Z" }, + { url = "https://files.pythonhosted.org/packages/5d/e6/ec8471c8072382cb91233ba7267fd931219753bb43814cbc71757bfd4dab/safetensors-0.7.0-cp38-abi3-win_amd64.whl", hash = "sha256:d1239932053f56f3456f32eb9625590cc7582e905021f94636202a864d470755", size = 341380, upload-time = "2025-11-19T15:18:44.427Z" }, + { url = "https://files.pythonhosted.org/packages/a7/6a/4d08d89a6fcbe905c5ae68b8b34f0791850882fc19782d0d02c65abbdf3b/safetensors-0.7.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4729811a6640d019a4b7ba8638ee2fd21fa5ca8c7e7bdf0fed62068fcaac737", size = 492430, upload-time = "2025-11-19T15:18:11.884Z" }, + { url = "https://files.pythonhosted.org/packages/dd/29/59ed8152b30f72c42d00d241e58eaca558ae9dbfa5695206e2e0f54c7063/safetensors-0.7.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:12f49080303fa6bb424b362149a12949dfbbf1e06811a88f2307276b0c131afd", size = 503977, upload-time = "2025-11-19T15:18:17.523Z" }, + { url = "https://files.pythonhosted.org/packages/d3/0b/4811bfec67fa260e791369b16dab105e4bae82686120554cc484064e22b4/safetensors-0.7.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0071bffba4150c2f46cae1432d31995d77acfd9f8db598b5d1a2ce67e8440ad2", size = 623890, upload-time = "2025-11-19T15:18:22.666Z" }, + { url = "https://files.pythonhosted.org/packages/58/5b/632a58724221ef03d78ab65062e82a1010e1bef8e8e0b9d7c6d7b8044841/safetensors-0.7.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:473b32699f4200e69801bf5abf93f1a4ecd432a70984df164fc22ccf39c4a6f3", size = 531885, upload-time = "2025-11-19T15:18:27.146Z" }, +] + +[package.optional-dependencies] +torch = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "packaging" }, + { name = "torch" }, +] + +[[package]] +name = "scikit-image" +version = "0.25.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] +dependencies = [ + { name = "imageio", marker = "python_full_version < '3.11'" }, + { name = "lazy-loader", marker = "python_full_version < '3.11'" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "packaging", marker = "python_full_version < '3.11'" }, + { name = "pillow", marker = "python_full_version < '3.11'" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "tifffile", version = "2025.5.10", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c7/a8/3c0f256012b93dd2cb6fda9245e9f4bff7dc0486880b248005f15ea2255e/scikit_image-0.25.2.tar.gz", hash = "sha256:e5a37e6cd4d0c018a7a55b9d601357e3382826d3888c10d0213fc63bff977dde", size = 22693594, upload-time = "2025-02-18T18:05:24.538Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/cb/016c63f16065c2d333c8ed0337e18a5cdf9bc32d402e4f26b0db362eb0e2/scikit_image-0.25.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d3278f586793176599df6a4cf48cb6beadae35c31e58dc01a98023af3dc31c78", size = 13988922, upload-time = "2025-02-18T18:04:11.069Z" }, + { url = "https://files.pythonhosted.org/packages/30/ca/ff4731289cbed63c94a0c9a5b672976603118de78ed21910d9060c82e859/scikit_image-0.25.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:5c311069899ce757d7dbf1d03e32acb38bb06153236ae77fcd820fd62044c063", size = 13192698, upload-time = "2025-02-18T18:04:15.362Z" }, + { url = "https://files.pythonhosted.org/packages/39/6d/a2aadb1be6d8e149199bb9b540ccde9e9622826e1ab42fe01de4c35ab918/scikit_image-0.25.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be455aa7039a6afa54e84f9e38293733a2622b8c2fb3362b822d459cc5605e99", size = 14153634, upload-time = "2025-02-18T18:04:18.496Z" }, + { url = "https://files.pythonhosted.org/packages/96/08/916e7d9ee4721031b2f625db54b11d8379bd51707afaa3e5a29aecf10bc4/scikit_image-0.25.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4c464b90e978d137330be433df4e76d92ad3c5f46a22f159520ce0fdbea8a09", size = 14767545, upload-time = "2025-02-18T18:04:22.556Z" }, + { url = "https://files.pythonhosted.org/packages/5f/ee/c53a009e3997dda9d285402f19226fbd17b5b3cb215da391c4ed084a1424/scikit_image-0.25.2-cp310-cp310-win_amd64.whl", hash = "sha256:60516257c5a2d2f74387c502aa2f15a0ef3498fbeaa749f730ab18f0a40fd054", size = 12812908, upload-time = "2025-02-18T18:04:26.364Z" }, + { url = "https://files.pythonhosted.org/packages/c4/97/3051c68b782ee3f1fb7f8f5bb7d535cf8cb92e8aae18fa9c1cdf7e15150d/scikit_image-0.25.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f4bac9196fb80d37567316581c6060763b0f4893d3aca34a9ede3825bc035b17", size = 14003057, upload-time = "2025-02-18T18:04:30.395Z" }, + { url = "https://files.pythonhosted.org/packages/19/23/257fc696c562639826065514d551b7b9b969520bd902c3a8e2fcff5b9e17/scikit_image-0.25.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:d989d64ff92e0c6c0f2018c7495a5b20e2451839299a018e0e5108b2680f71e0", size = 13180335, upload-time = "2025-02-18T18:04:33.449Z" }, + { url = "https://files.pythonhosted.org/packages/ef/14/0c4a02cb27ca8b1e836886b9ec7c9149de03053650e9e2ed0625f248dd92/scikit_image-0.25.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2cfc96b27afe9a05bc92f8c6235321d3a66499995675b27415e0d0c76625173", size = 14144783, upload-time = "2025-02-18T18:04:36.594Z" }, + { url = "https://files.pythonhosted.org/packages/dd/9b/9fb556463a34d9842491d72a421942c8baff4281025859c84fcdb5e7e602/scikit_image-0.25.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24cc986e1f4187a12aa319f777b36008764e856e5013666a4a83f8df083c2641", size = 14785376, upload-time = "2025-02-18T18:04:39.856Z" }, + { url = "https://files.pythonhosted.org/packages/de/ec/b57c500ee85885df5f2188f8bb70398481393a69de44a00d6f1d055f103c/scikit_image-0.25.2-cp311-cp311-win_amd64.whl", hash = "sha256:b4f6b61fc2db6340696afe3db6b26e0356911529f5f6aee8c322aa5157490c9b", size = 12791698, upload-time = "2025-02-18T18:04:42.868Z" }, + { url = "https://files.pythonhosted.org/packages/35/8c/5df82881284459f6eec796a5ac2a0a304bb3384eec2e73f35cfdfcfbf20c/scikit_image-0.25.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8db8dd03663112783221bf01ccfc9512d1cc50ac9b5b0fe8f4023967564719fb", size = 13986000, upload-time = "2025-02-18T18:04:47.156Z" }, + { url = "https://files.pythonhosted.org/packages/ce/e6/93bebe1abcdce9513ffec01d8af02528b4c41fb3c1e46336d70b9ed4ef0d/scikit_image-0.25.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:483bd8cc10c3d8a7a37fae36dfa5b21e239bd4ee121d91cad1f81bba10cfb0ed", size = 13235893, upload-time = "2025-02-18T18:04:51.049Z" }, + { url = "https://files.pythonhosted.org/packages/53/4b/eda616e33f67129e5979a9eb33c710013caa3aa8a921991e6cc0b22cea33/scikit_image-0.25.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d1e80107bcf2bf1291acfc0bf0425dceb8890abe9f38d8e94e23497cbf7ee0d", size = 14178389, upload-time = "2025-02-18T18:04:54.245Z" }, + { url = "https://files.pythonhosted.org/packages/6b/b5/b75527c0f9532dd8a93e8e7cd8e62e547b9f207d4c11e24f0006e8646b36/scikit_image-0.25.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a17e17eb8562660cc0d31bb55643a4da996a81944b82c54805c91b3fe66f4824", size = 15003435, upload-time = "2025-02-18T18:04:57.586Z" }, + { url = "https://files.pythonhosted.org/packages/34/e3/49beb08ebccda3c21e871b607c1cb2f258c3fa0d2f609fed0a5ba741b92d/scikit_image-0.25.2-cp312-cp312-win_amd64.whl", hash = "sha256:bdd2b8c1de0849964dbc54037f36b4e9420157e67e45a8709a80d727f52c7da2", size = 12899474, upload-time = "2025-02-18T18:05:01.166Z" }, + { url = "https://files.pythonhosted.org/packages/e6/7c/9814dd1c637f7a0e44342985a76f95a55dd04be60154247679fd96c7169f/scikit_image-0.25.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7efa888130f6c548ec0439b1a7ed7295bc10105458a421e9bf739b457730b6da", size = 13921841, upload-time = "2025-02-18T18:05:03.963Z" }, + { url = "https://files.pythonhosted.org/packages/84/06/66a2e7661d6f526740c309e9717d3bd07b473661d5cdddef4dd978edab25/scikit_image-0.25.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:dd8011efe69c3641920614d550f5505f83658fe33581e49bed86feab43a180fc", size = 13196862, upload-time = "2025-02-18T18:05:06.986Z" }, + { url = "https://files.pythonhosted.org/packages/4e/63/3368902ed79305f74c2ca8c297dfeb4307269cbe6402412668e322837143/scikit_image-0.25.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28182a9d3e2ce3c2e251383bdda68f8d88d9fff1a3ebe1eb61206595c9773341", size = 14117785, upload-time = "2025-02-18T18:05:10.69Z" }, + { url = "https://files.pythonhosted.org/packages/cd/9b/c3da56a145f52cd61a68b8465d6a29d9503bc45bc993bb45e84371c97d94/scikit_image-0.25.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8abd3c805ce6944b941cfed0406d88faeb19bab3ed3d4b50187af55cf24d147", size = 14977119, upload-time = "2025-02-18T18:05:13.871Z" }, + { url = "https://files.pythonhosted.org/packages/8a/97/5fcf332e1753831abb99a2525180d3fb0d70918d461ebda9873f66dcc12f/scikit_image-0.25.2-cp313-cp313-win_amd64.whl", hash = "sha256:64785a8acefee460ec49a354706db0b09d1f325674107d7fa3eadb663fb56d6f", size = 12885116, upload-time = "2025-02-18T18:05:17.844Z" }, + { url = "https://files.pythonhosted.org/packages/10/cc/75e9f17e3670b5ed93c32456fda823333c6279b144cd93e2c03aa06aa472/scikit_image-0.25.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:330d061bd107d12f8d68f1d611ae27b3b813b8cdb0300a71d07b1379178dd4cd", size = 13862801, upload-time = "2025-02-18T18:05:20.783Z" }, +] + +[[package]] +name = "scikit-image" +version = "0.26.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14' and sys_platform == 'win32'", + "python_full_version >= '3.14' and sys_platform == 'emscripten'", + "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'win32'", + "python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten'", + "python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", +] +dependencies = [ + { name = "imageio", marker = "python_full_version >= '3.11'" }, + { name = "lazy-loader", marker = "python_full_version >= '3.11'" }, + { name = "networkx", version = "3.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "packaging", marker = "python_full_version >= '3.11'" }, + { name = "pillow", marker = "python_full_version >= '3.11'" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "tifffile", version = "2026.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, + { name = "tifffile", version = "2026.4.11", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/b4/2528bb43c67d48053a7a649a9666432dc307d66ba02e3a6d5c40f46655df/scikit_image-0.26.0.tar.gz", hash = "sha256:f5f970ab04efad85c24714321fcc91613fcb64ef2a892a13167df2f3e59199fa", size = 22729739, upload-time = "2025-12-20T17:12:21.824Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/16/8a407688b607f86f81f8c649bf0d68a2a6d67375f18c2d660aba20f5b648/scikit_image-0.26.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b1ede33a0fb3731457eaf53af6361e73dd510f449dac437ab54573b26788baf0", size = 12355510, upload-time = "2025-12-20T17:10:31.628Z" }, + { url = "https://files.pythonhosted.org/packages/6b/f9/7efc088ececb6f6868fd4475e16cfafc11f242ce9ab5fc3557d78b5da0d4/scikit_image-0.26.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7af7aa331c6846bd03fa28b164c18d0c3fd419dbb888fb05e958ac4257a78fdd", size = 12056334, upload-time = "2025-12-20T17:10:34.559Z" }, + { url = "https://files.pythonhosted.org/packages/9f/1e/bc7fb91fb5ff65ef42346c8b7ee8b09b04eabf89235ab7dbfdfd96cbd1ea/scikit_image-0.26.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9ea6207d9e9d21c3f464efe733121c0504e494dbdc7728649ff3e23c3c5a4953", size = 13297768, upload-time = "2025-12-20T17:10:37.733Z" }, + { url = "https://files.pythonhosted.org/packages/a5/2a/e71c1a7d90e70da67b88ccc609bd6ae54798d5847369b15d3a8052232f9d/scikit_image-0.26.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:74aa5518ccea28121f57a95374581d3b979839adc25bb03f289b1bc9b99c58af", size = 13711217, upload-time = "2025-12-20T17:10:40.935Z" }, + { url = "https://files.pythonhosted.org/packages/d4/59/9637ee12c23726266b91296791465218973ce1ad3e4c56fc81e4d8e7d6e1/scikit_image-0.26.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d5c244656de905e195a904e36dbc18585e06ecf67d90f0482cbde63d7f9ad59d", size = 14337782, upload-time = "2025-12-20T17:10:43.452Z" }, + { url = "https://files.pythonhosted.org/packages/e7/5c/a3e1e0860f9294663f540c117e4bf83d55e5b47c281d475cc06227e88411/scikit_image-0.26.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:21a818ee6ca2f2131b9e04d8eb7637b5c18773ebe7b399ad23dcc5afaa226d2d", size = 14805997, upload-time = "2025-12-20T17:10:45.93Z" }, + { url = "https://files.pythonhosted.org/packages/d3/c6/2eeacf173da041a9e388975f54e5c49df750757fcfc3ee293cdbbae1ea0a/scikit_image-0.26.0-cp311-cp311-win_amd64.whl", hash = "sha256:9490360c8d3f9a7e85c8de87daf7c0c66507960cf4947bb9610d1751928721c7", size = 11878486, upload-time = "2025-12-20T17:10:48.246Z" }, + { url = "https://files.pythonhosted.org/packages/c3/a4/a852c4949b9058d585e762a66bf7e9a2cd3be4795cd940413dfbfbb0ce79/scikit_image-0.26.0-cp311-cp311-win_arm64.whl", hash = "sha256:0baa0108d2d027f34d748e84e592b78acc23e965a5de0e4bb03cf371de5c0581", size = 11346518, upload-time = "2025-12-20T17:10:50.575Z" }, + { url = "https://files.pythonhosted.org/packages/99/e8/e13757982264b33a1621628f86b587e9a73a13f5256dad49b19ba7dc9083/scikit_image-0.26.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d454b93a6fa770ac5ae2d33570f8e7a321bb80d29511ce4b6b78058ebe176e8c", size = 12376452, upload-time = "2025-12-20T17:10:52.796Z" }, + { url = "https://files.pythonhosted.org/packages/e3/be/f8dd17d0510f9911f9f17ba301f7455328bf13dae416560126d428de9568/scikit_image-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3409e89d66eff5734cd2b672d1c48d2759360057e714e1d92a11df82c87cba37", size = 12061567, upload-time = "2025-12-20T17:10:55.207Z" }, + { url = "https://files.pythonhosted.org/packages/b3/2b/c70120a6880579fb42b91567ad79feb4772f7be72e8d52fec403a3dde0c6/scikit_image-0.26.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c717490cec9e276afb0438dd165b7c3072d6c416709cc0f9f5a4c1070d23a44", size = 13084214, upload-time = "2025-12-20T17:10:57.468Z" }, + { url = "https://files.pythonhosted.org/packages/f4/a2/70401a107d6d7466d64b466927e6b96fcefa99d57494b972608e2f8be50f/scikit_image-0.26.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7df650e79031634ac90b11e64a9eedaf5a5e06fcd09bcd03a34be01745744466", size = 13561683, upload-time = "2025-12-20T17:10:59.49Z" }, + { url = "https://files.pythonhosted.org/packages/13/a5/48bdfd92794c5002d664e0910a349d0a1504671ef5ad358150f21643c79a/scikit_image-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cefd85033e66d4ea35b525bb0937d7f42d4cdcfed2d1888e1570d5ce450d3932", size = 14112147, upload-time = "2025-12-20T17:11:02.083Z" }, + { url = "https://files.pythonhosted.org/packages/ee/b5/ac71694da92f5def5953ca99f18a10fe98eac2dd0a34079389b70b4d0394/scikit_image-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3f5bf622d7c0435884e1e141ebbe4b2804e16b2dd23ae4c6183e2ea99233be70", size = 14661625, upload-time = "2025-12-20T17:11:04.528Z" }, + { url = "https://files.pythonhosted.org/packages/23/4d/a3cc1e96f080e253dad2251bfae7587cf2b7912bcd76fd43fd366ff35a87/scikit_image-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:abed017474593cd3056ae0fe948d07d0747b27a085e92df5474f4955dd65aec0", size = 11911059, upload-time = "2025-12-20T17:11:06.61Z" }, + { url = "https://files.pythonhosted.org/packages/35/8a/d1b8055f584acc937478abf4550d122936f420352422a1a625eef2c605d8/scikit_image-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:4d57e39ef67a95d26860c8caf9b14b8fb130f83b34c6656a77f191fa6d1d04d8", size = 11348740, upload-time = "2025-12-20T17:11:09.118Z" }, + { url = "https://files.pythonhosted.org/packages/4f/48/02357ffb2cca35640f33f2cfe054a4d6d5d7a229b88880a64f1e45c11f4e/scikit_image-0.26.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a2e852eccf41d2d322b8e60144e124802873a92b8d43a6f96331aa42888491c7", size = 12346329, upload-time = "2025-12-20T17:11:11.599Z" }, + { url = "https://files.pythonhosted.org/packages/67/b9/b792c577cea2c1e94cda83b135a656924fc57c428e8a6d302cd69aac1b60/scikit_image-0.26.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:98329aab3bc87db352b9887f64ce8cdb8e75f7c2daa19927f2e121b797b678d5", size = 12031726, upload-time = "2025-12-20T17:11:13.871Z" }, + { url = "https://files.pythonhosted.org/packages/07/a9/9564250dfd65cb20404a611016db52afc6268b2b371cd19c7538ea47580f/scikit_image-0.26.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:915bb3ba66455cf8adac00dc8fdf18a4cd29656aec7ddd38cb4dda90289a6f21", size = 13094910, upload-time = "2025-12-20T17:11:16.2Z" }, + { url = "https://files.pythonhosted.org/packages/a3/b8/0d8eeb5a9fd7d34ba84f8a55753a0a3e2b5b51b2a5a0ade648a8db4a62f7/scikit_image-0.26.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b36ab5e778bf50af5ff386c3ac508027dc3aaeccf2161bdf96bde6848f44d21b", size = 13660939, upload-time = "2025-12-20T17:11:18.464Z" }, + { url = "https://files.pythonhosted.org/packages/2f/d6/91d8973584d4793d4c1a847d388e34ef1218d835eeddecfc9108d735b467/scikit_image-0.26.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:09bad6a5d5949c7896c8347424c4cca899f1d11668030e5548813ab9c2865dcb", size = 14138938, upload-time = "2025-12-20T17:11:20.919Z" }, + { url = "https://files.pythonhosted.org/packages/39/9a/7e15d8dc10d6bbf212195fb39bdeb7f226c46dd53f9c63c312e111e2e175/scikit_image-0.26.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:aeb14db1ed09ad4bee4ceb9e635547a8d5f3549be67fc6c768c7f923e027e6cd", size = 14752243, upload-time = "2025-12-20T17:11:23.347Z" }, + { url = "https://files.pythonhosted.org/packages/8f/58/2b11b933097bc427e42b4a8b15f7de8f24f2bac1fd2779d2aea1431b2c31/scikit_image-0.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:ac529eb9dbd5954f9aaa2e3fe9a3fd9661bfe24e134c688587d811a0233127f1", size = 11906770, upload-time = "2025-12-20T17:11:25.297Z" }, + { url = "https://files.pythonhosted.org/packages/ad/ec/96941474a18a04b69b6f6562a5bd79bd68049fa3728d3b350976eccb8b93/scikit_image-0.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:a2d211bc355f59725efdcae699b93b30348a19416cc9e017f7b2fb599faf7219", size = 11342506, upload-time = "2025-12-20T17:11:27.399Z" }, + { url = "https://files.pythonhosted.org/packages/03/e5/c1a9962b0cf1952f42d32b4a2e48eed520320dbc4d2ff0b981c6fa508b6b/scikit_image-0.26.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:9eefb4adad066da408a7601c4c24b07af3b472d90e08c3e7483d4e9e829d8c49", size = 12663278, upload-time = "2025-12-20T17:11:29.358Z" }, + { url = "https://files.pythonhosted.org/packages/ae/97/c1a276a59ce8e4e24482d65c1a3940d69c6b3873279193b7ebd04e5ee56b/scikit_image-0.26.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:6caec76e16c970c528d15d1c757363334d5cb3069f9cea93d2bead31820511f3", size = 12405142, upload-time = "2025-12-20T17:11:31.282Z" }, + { url = "https://files.pythonhosted.org/packages/d4/4a/f1cbd1357caef6c7993f7efd514d6e53d8fd6f7fe01c4714d51614c53289/scikit_image-0.26.0-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a07200fe09b9d99fcdab959859fe0f7db8df6333d6204344425d476850ce3604", size = 12942086, upload-time = "2025-12-20T17:11:33.683Z" }, + { url = "https://files.pythonhosted.org/packages/5b/6f/74d9fb87c5655bd64cf00b0c44dc3d6206d9002e5f6ba1c9aeb13236f6bf/scikit_image-0.26.0-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:92242351bccf391fc5df2d1529d15470019496d2498d615beb68da85fe7fdf37", size = 13265667, upload-time = "2025-12-20T17:11:36.11Z" }, + { url = "https://files.pythonhosted.org/packages/a7/73/faddc2413ae98d863f6fa2e3e14da4467dd38e788e1c23346cf1a2b06b97/scikit_image-0.26.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:52c496f75a7e45844d951557f13c08c81487c6a1da2e3c9c8a39fcde958e02cc", size = 14001966, upload-time = "2025-12-20T17:11:38.55Z" }, + { url = "https://files.pythonhosted.org/packages/02/94/9f46966fa042b5d57c8cd641045372b4e0df0047dd400e77ea9952674110/scikit_image-0.26.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:20ef4a155e2e78b8ab973998e04d8a361d49d719e65412405f4dadd9155a61d9", size = 14359526, upload-time = "2025-12-20T17:11:41.087Z" }, + { url = "https://files.pythonhosted.org/packages/5d/b4/2840fe38f10057f40b1c9f8fb98a187a370936bf144a4ac23452c5ef1baf/scikit_image-0.26.0-cp313-cp313t-win_amd64.whl", hash = "sha256:c9087cf7d0e7f33ab5c46d2068d86d785e70b05400a891f73a13400f1e1faf6a", size = 12287629, upload-time = "2025-12-20T17:11:43.11Z" }, + { url = "https://files.pythonhosted.org/packages/22/ba/73b6ca70796e71f83ab222690e35a79612f0117e5aaf167151b7d46f5f2c/scikit_image-0.26.0-cp313-cp313t-win_arm64.whl", hash = "sha256:27d58bc8b2acd351f972c6508c1b557cfed80299826080a4d803dd29c51b707e", size = 11647755, upload-time = "2025-12-20T17:11:45.279Z" }, + { url = "https://files.pythonhosted.org/packages/51/44/6b744f92b37ae2833fd423cce8f806d2368859ec325a699dc30389e090b9/scikit_image-0.26.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:63af3d3a26125f796f01052052f86806da5b5e54c6abef152edb752683075a9c", size = 12365810, upload-time = "2025-12-20T17:11:47.357Z" }, + { url = "https://files.pythonhosted.org/packages/40/f5/83590d9355191f86ac663420fec741b82cc547a4afe7c4c1d986bf46e4db/scikit_image-0.26.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ce00600cd70d4562ed59f80523e18cdcc1fae0e10676498a01f73c255774aefd", size = 12075717, upload-time = "2025-12-20T17:11:49.483Z" }, + { url = "https://files.pythonhosted.org/packages/72/48/253e7cf5aee6190459fe136c614e2cbccc562deceb4af96e0863f1b8ee29/scikit_image-0.26.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6381edf972b32e4f54085449afde64365a57316637496c1325a736987083e2ab", size = 13161520, upload-time = "2025-12-20T17:11:51.58Z" }, + { url = "https://files.pythonhosted.org/packages/73/c3/cec6a3cbaadfdcc02bd6ff02f3abfe09eaa7f4d4e0a525a1e3a3f4bce49c/scikit_image-0.26.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c6624a76c6085218248154cc7e1500e6b488edcd9499004dd0d35040607d7505", size = 13684340, upload-time = "2025-12-20T17:11:53.708Z" }, + { url = "https://files.pythonhosted.org/packages/d4/0d/39a776f675d24164b3a267aa0db9f677a4cb20127660d8bf4fd7fef66817/scikit_image-0.26.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f775f0e420faac9c2aa6757135f4eb468fb7b70e0b67fa77a5e79be3c30ee331", size = 14203839, upload-time = "2025-12-20T17:11:55.89Z" }, + { url = "https://files.pythonhosted.org/packages/ee/25/2514df226bbcedfe9b2caafa1ba7bc87231a0c339066981b182b08340e06/scikit_image-0.26.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ede4d6d255cc5da9faeb2f9ba7fedbc990abbc652db429f40a16b22e770bb578", size = 14770021, upload-time = "2025-12-20T17:11:58.014Z" }, + { url = "https://files.pythonhosted.org/packages/8d/5b/0671dc91c0c79340c3fe202f0549c7d3681eb7640fe34ab68a5f090a7c7f/scikit_image-0.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:0660b83968c15293fd9135e8d860053ee19500d52bf55ca4fb09de595a1af650", size = 12023490, upload-time = "2025-12-20T17:12:00.013Z" }, + { url = "https://files.pythonhosted.org/packages/65/08/7c4cb59f91721f3de07719085212a0b3962e3e3f2d1818cbac4eeb1ea53e/scikit_image-0.26.0-cp314-cp314-win_arm64.whl", hash = "sha256:b8d14d3181c21c11170477a42542c1addc7072a90b986675a71266ad17abc37f", size = 11473782, upload-time = "2025-12-20T17:12:01.983Z" }, + { url = "https://files.pythonhosted.org/packages/49/41/65c4258137acef3d73cb561ac55512eacd7b30bb4f4a11474cad526bc5db/scikit_image-0.26.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:cde0bbd57e6795eba83cb10f71a677f7239271121dc950bc060482834a668ad1", size = 12686060, upload-time = "2025-12-20T17:12:03.886Z" }, + { url = "https://files.pythonhosted.org/packages/e7/32/76971f8727b87f1420a962406388a50e26667c31756126444baf6668f559/scikit_image-0.26.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:163e9afb5b879562b9aeda0dd45208a35316f26cc7a3aed54fd601604e5cf46f", size = 12422628, upload-time = "2025-12-20T17:12:05.921Z" }, + { url = "https://files.pythonhosted.org/packages/37/0d/996febd39f757c40ee7b01cdb861867327e5c8e5f595a634e8201462d958/scikit_image-0.26.0-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:724f79fd9b6cb6f4a37864fe09f81f9f5d5b9646b6868109e1b100d1a7019e59", size = 12962369, upload-time = "2025-12-20T17:12:07.912Z" }, + { url = "https://files.pythonhosted.org/packages/48/b4/612d354f946c9600e7dea012723c11d47e8d455384e530f6daaaeb9bf62c/scikit_image-0.26.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3268f13310e6857508bd87202620df996199a016a1d281b309441d227c822394", size = 13272431, upload-time = "2025-12-20T17:12:10.255Z" }, + { url = "https://files.pythonhosted.org/packages/0a/6e/26c00b466e06055a086de2c6e2145fe189ccdc9a1d11ccc7de020f2591ad/scikit_image-0.26.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:fac96a1f9b06cd771cbbb3cd96c5332f36d4efd839b1d8b053f79e5887acde62", size = 14016362, upload-time = "2025-12-20T17:12:12.793Z" }, + { url = "https://files.pythonhosted.org/packages/47/88/00a90402e1775634043c2a0af8a3c76ad450866d9fa444efcc43b553ba2d/scikit_image-0.26.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:2c1e7bd342f43e7a97e571b3f03ba4c1293ea1a35c3f13f41efdc8a81c1dc8f2", size = 14364151, upload-time = "2025-12-20T17:12:14.909Z" }, + { url = "https://files.pythonhosted.org/packages/da/ca/918d8d306bd43beacff3b835c6d96fac0ae64c0857092f068b88db531a7c/scikit_image-0.26.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b702c3bb115e1dcf4abf5297429b5c90f2189655888cbed14921f3d26f81d3a4", size = 12413484, upload-time = "2025-12-20T17:12:17.046Z" }, + { url = "https://files.pythonhosted.org/packages/dc/cd/4da01329b5a8d47ff7ec3c99a2b02465a8017b186027590dc7425cee0b56/scikit_image-0.26.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0608aa4a9ec39e0843de10d60edb2785a30c1c47819b67866dd223ebd149acaf", size = 11769501, upload-time = "2025-12-20T17:12:19.339Z" }, +] + +[[package]] +name = "scipy" +version = "1.15.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0f/37/6964b830433e654ec7485e45a00fc9a27cf868d622838f6b6d9c5ec0d532/scipy-1.15.3.tar.gz", hash = "sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf", size = 59419214, upload-time = "2025-05-08T16:13:05.955Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/2f/4966032c5f8cc7e6a60f1b2e0ad686293b9474b65246b0c642e3ef3badd0/scipy-1.15.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:a345928c86d535060c9c2b25e71e87c39ab2f22fc96e9636bd74d1dbf9de448c", size = 38702770, upload-time = "2025-05-08T16:04:20.849Z" }, + { url = "https://files.pythonhosted.org/packages/a0/6e/0c3bf90fae0e910c274db43304ebe25a6b391327f3f10b5dcc638c090795/scipy-1.15.3-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:ad3432cb0f9ed87477a8d97f03b763fd1d57709f1bbde3c9369b1dff5503b253", size = 30094511, upload-time = "2025-05-08T16:04:27.103Z" }, + { url = "https://files.pythonhosted.org/packages/ea/b1/4deb37252311c1acff7f101f6453f0440794f51b6eacb1aad4459a134081/scipy-1.15.3-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:aef683a9ae6eb00728a542b796f52a5477b78252edede72b8327a886ab63293f", size = 22368151, upload-time = "2025-05-08T16:04:31.731Z" }, + { url = "https://files.pythonhosted.org/packages/38/7d/f457626e3cd3c29b3a49ca115a304cebb8cc6f31b04678f03b216899d3c6/scipy-1.15.3-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:1c832e1bd78dea67d5c16f786681b28dd695a8cb1fb90af2e27580d3d0967e92", size = 25121732, upload-time = "2025-05-08T16:04:36.596Z" }, + { url = "https://files.pythonhosted.org/packages/db/0a/92b1de4a7adc7a15dcf5bddc6e191f6f29ee663b30511ce20467ef9b82e4/scipy-1.15.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:263961f658ce2165bbd7b99fa5135195c3a12d9bef045345016b8b50c315cb82", size = 35547617, upload-time = "2025-05-08T16:04:43.546Z" }, + { url = "https://files.pythonhosted.org/packages/8e/6d/41991e503e51fc1134502694c5fa7a1671501a17ffa12716a4a9151af3df/scipy-1.15.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2abc762b0811e09a0d3258abee2d98e0c703eee49464ce0069590846f31d40", size = 37662964, upload-time = "2025-05-08T16:04:49.431Z" }, + { url = "https://files.pythonhosted.org/packages/25/e1/3df8f83cb15f3500478c889be8fb18700813b95e9e087328230b98d547ff/scipy-1.15.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ed7284b21a7a0c8f1b6e5977ac05396c0d008b89e05498c8b7e8f4a1423bba0e", size = 37238749, upload-time = "2025-05-08T16:04:55.215Z" }, + { url = "https://files.pythonhosted.org/packages/93/3e/b3257cf446f2a3533ed7809757039016b74cd6f38271de91682aa844cfc5/scipy-1.15.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5380741e53df2c566f4d234b100a484b420af85deb39ea35a1cc1be84ff53a5c", size = 40022383, upload-time = "2025-05-08T16:05:01.914Z" }, + { url = "https://files.pythonhosted.org/packages/d1/84/55bc4881973d3f79b479a5a2e2df61c8c9a04fcb986a213ac9c02cfb659b/scipy-1.15.3-cp310-cp310-win_amd64.whl", hash = "sha256:9d61e97b186a57350f6d6fd72640f9e99d5a4a2b8fbf4b9ee9a841eab327dc13", size = 41259201, upload-time = "2025-05-08T16:05:08.166Z" }, + { url = "https://files.pythonhosted.org/packages/96/ab/5cc9f80f28f6a7dff646c5756e559823614a42b1939d86dd0ed550470210/scipy-1.15.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:993439ce220d25e3696d1b23b233dd010169b62f6456488567e830654ee37a6b", size = 38714255, upload-time = "2025-05-08T16:05:14.596Z" }, + { url = "https://files.pythonhosted.org/packages/4a/4a/66ba30abe5ad1a3ad15bfb0b59d22174012e8056ff448cb1644deccbfed2/scipy-1.15.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:34716e281f181a02341ddeaad584205bd2fd3c242063bd3423d61ac259ca7eba", size = 30111035, upload-time = "2025-05-08T16:05:20.152Z" }, + { url = "https://files.pythonhosted.org/packages/4b/fa/a7e5b95afd80d24313307f03624acc65801846fa75599034f8ceb9e2cbf6/scipy-1.15.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b0334816afb8b91dab859281b1b9786934392aa3d527cd847e41bb6f45bee65", size = 22384499, upload-time = "2025-05-08T16:05:24.494Z" }, + { url = "https://files.pythonhosted.org/packages/17/99/f3aaddccf3588bb4aea70ba35328c204cadd89517a1612ecfda5b2dd9d7a/scipy-1.15.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6db907c7368e3092e24919b5e31c76998b0ce1684d51a90943cb0ed1b4ffd6c1", size = 25152602, upload-time = "2025-05-08T16:05:29.313Z" }, + { url = "https://files.pythonhosted.org/packages/56/c5/1032cdb565f146109212153339f9cb8b993701e9fe56b1c97699eee12586/scipy-1.15.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:721d6b4ef5dc82ca8968c25b111e307083d7ca9091bc38163fb89243e85e3889", size = 35503415, upload-time = "2025-05-08T16:05:34.699Z" }, + { url = "https://files.pythonhosted.org/packages/bd/37/89f19c8c05505d0601ed5650156e50eb881ae3918786c8fd7262b4ee66d3/scipy-1.15.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39cb9c62e471b1bb3750066ecc3a3f3052b37751c7c3dfd0fd7e48900ed52982", size = 37652622, upload-time = "2025-05-08T16:05:40.762Z" }, + { url = "https://files.pythonhosted.org/packages/7e/31/be59513aa9695519b18e1851bb9e487de66f2d31f835201f1b42f5d4d475/scipy-1.15.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:795c46999bae845966368a3c013e0e00947932d68e235702b5c3f6ea799aa8c9", size = 37244796, upload-time = "2025-05-08T16:05:48.119Z" }, + { url = "https://files.pythonhosted.org/packages/10/c0/4f5f3eeccc235632aab79b27a74a9130c6c35df358129f7ac8b29f562ac7/scipy-1.15.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:18aaacb735ab38b38db42cb01f6b92a2d0d4b6aabefeb07f02849e47f8fb3594", size = 40047684, upload-time = "2025-05-08T16:05:54.22Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a7/0ddaf514ce8a8714f6ed243a2b391b41dbb65251affe21ee3077ec45ea9a/scipy-1.15.3-cp311-cp311-win_amd64.whl", hash = "sha256:ae48a786a28412d744c62fd7816a4118ef97e5be0bee968ce8f0a2fba7acf3bb", size = 41246504, upload-time = "2025-05-08T16:06:00.437Z" }, + { url = "https://files.pythonhosted.org/packages/37/4b/683aa044c4162e10ed7a7ea30527f2cbd92e6999c10a8ed8edb253836e9c/scipy-1.15.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6ac6310fdbfb7aa6612408bd2f07295bcbd3fda00d2d702178434751fe48e019", size = 38766735, upload-time = "2025-05-08T16:06:06.471Z" }, + { url = "https://files.pythonhosted.org/packages/7b/7e/f30be3d03de07f25dc0ec926d1681fed5c732d759ac8f51079708c79e680/scipy-1.15.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:185cd3d6d05ca4b44a8f1595af87f9c372bb6acf9c808e99aa3e9aa03bd98cf6", size = 30173284, upload-time = "2025-05-08T16:06:11.686Z" }, + { url = "https://files.pythonhosted.org/packages/07/9c/0ddb0d0abdabe0d181c1793db51f02cd59e4901da6f9f7848e1f96759f0d/scipy-1.15.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:05dc6abcd105e1a29f95eada46d4a3f251743cfd7d3ae8ddb4088047f24ea477", size = 22446958, upload-time = "2025-05-08T16:06:15.97Z" }, + { url = "https://files.pythonhosted.org/packages/af/43/0bce905a965f36c58ff80d8bea33f1f9351b05fad4beaad4eae34699b7a1/scipy-1.15.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:06efcba926324df1696931a57a176c80848ccd67ce6ad020c810736bfd58eb1c", size = 25242454, upload-time = "2025-05-08T16:06:20.394Z" }, + { url = "https://files.pythonhosted.org/packages/56/30/a6f08f84ee5b7b28b4c597aca4cbe545535c39fe911845a96414700b64ba/scipy-1.15.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05045d8b9bfd807ee1b9f38761993297b10b245f012b11b13b91ba8945f7e45", size = 35210199, upload-time = "2025-05-08T16:06:26.159Z" }, + { url = "https://files.pythonhosted.org/packages/0b/1f/03f52c282437a168ee2c7c14a1a0d0781a9a4a8962d84ac05c06b4c5b555/scipy-1.15.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271e3713e645149ea5ea3e97b57fdab61ce61333f97cfae392c28ba786f9bb49", size = 37309455, upload-time = "2025-05-08T16:06:32.778Z" }, + { url = "https://files.pythonhosted.org/packages/89/b1/fbb53137f42c4bf630b1ffdfc2151a62d1d1b903b249f030d2b1c0280af8/scipy-1.15.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6cfd56fc1a8e53f6e89ba3a7a7251f7396412d655bca2aa5611c8ec9a6784a1e", size = 36885140, upload-time = "2025-05-08T16:06:39.249Z" }, + { url = "https://files.pythonhosted.org/packages/2e/2e/025e39e339f5090df1ff266d021892694dbb7e63568edcfe43f892fa381d/scipy-1.15.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0ff17c0bb1cb32952c09217d8d1eed9b53d1463e5f1dd6052c7857f83127d539", size = 39710549, upload-time = "2025-05-08T16:06:45.729Z" }, + { url = "https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl", hash = "sha256:52092bc0472cfd17df49ff17e70624345efece4e1a12b23783a1ac59a1b728ed", size = 40966184, upload-time = "2025-05-08T16:06:52.623Z" }, + { url = "https://files.pythonhosted.org/packages/73/18/ec27848c9baae6e0d6573eda6e01a602e5649ee72c27c3a8aad673ebecfd/scipy-1.15.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2c620736bcc334782e24d173c0fdbb7590a0a436d2fdf39310a8902505008759", size = 38728256, upload-time = "2025-05-08T16:06:58.696Z" }, + { url = "https://files.pythonhosted.org/packages/74/cd/1aef2184948728b4b6e21267d53b3339762c285a46a274ebb7863c9e4742/scipy-1.15.3-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:7e11270a000969409d37ed399585ee530b9ef6aa99d50c019de4cb01e8e54e62", size = 30109540, upload-time = "2025-05-08T16:07:04.209Z" }, + { url = "https://files.pythonhosted.org/packages/5b/d8/59e452c0a255ec352bd0a833537a3bc1bfb679944c4938ab375b0a6b3a3e/scipy-1.15.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:8c9ed3ba2c8a2ce098163a9bdb26f891746d02136995df25227a20e71c396ebb", size = 22383115, upload-time = "2025-05-08T16:07:08.998Z" }, + { url = "https://files.pythonhosted.org/packages/08/f5/456f56bbbfccf696263b47095291040655e3cbaf05d063bdc7c7517f32ac/scipy-1.15.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:0bdd905264c0c9cfa74a4772cdb2070171790381a5c4d312c973382fc6eaf730", size = 25163884, upload-time = "2025-05-08T16:07:14.091Z" }, + { url = "https://files.pythonhosted.org/packages/a2/66/a9618b6a435a0f0c0b8a6d0a2efb32d4ec5a85f023c2b79d39512040355b/scipy-1.15.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79167bba085c31f38603e11a267d862957cbb3ce018d8b38f79ac043bc92d825", size = 35174018, upload-time = "2025-05-08T16:07:19.427Z" }, + { url = "https://files.pythonhosted.org/packages/b5/09/c5b6734a50ad4882432b6bb7c02baf757f5b2f256041da5df242e2d7e6b6/scipy-1.15.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9deabd6d547aee2c9a81dee6cc96c6d7e9a9b1953f74850c179f91fdc729cb7", size = 37269716, upload-time = "2025-05-08T16:07:25.712Z" }, + { url = "https://files.pythonhosted.org/packages/77/0a/eac00ff741f23bcabd352731ed9b8995a0a60ef57f5fd788d611d43d69a1/scipy-1.15.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dde4fc32993071ac0c7dd2d82569e544f0bdaff66269cb475e0f369adad13f11", size = 36872342, upload-time = "2025-05-08T16:07:31.468Z" }, + { url = "https://files.pythonhosted.org/packages/fe/54/4379be86dd74b6ad81551689107360d9a3e18f24d20767a2d5b9253a3f0a/scipy-1.15.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f77f853d584e72e874d87357ad70f44b437331507d1c311457bed8ed2b956126", size = 39670869, upload-time = "2025-05-08T16:07:38.002Z" }, + { url = "https://files.pythonhosted.org/packages/87/2e/892ad2862ba54f084ffe8cc4a22667eaf9c2bcec6d2bff1d15713c6c0703/scipy-1.15.3-cp313-cp313-win_amd64.whl", hash = "sha256:b90ab29d0c37ec9bf55424c064312930ca5f4bde15ee8619ee44e69319aab163", size = 40988851, upload-time = "2025-05-08T16:08:33.671Z" }, + { url = "https://files.pythonhosted.org/packages/1b/e9/7a879c137f7e55b30d75d90ce3eb468197646bc7b443ac036ae3fe109055/scipy-1.15.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3ac07623267feb3ae308487c260ac684b32ea35fd81e12845039952f558047b8", size = 38863011, upload-time = "2025-05-08T16:07:44.039Z" }, + { url = "https://files.pythonhosted.org/packages/51/d1/226a806bbd69f62ce5ef5f3ffadc35286e9fbc802f606a07eb83bf2359de/scipy-1.15.3-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:6487aa99c2a3d509a5227d9a5e889ff05830a06b2ce08ec30df6d79db5fcd5c5", size = 30266407, upload-time = "2025-05-08T16:07:49.891Z" }, + { url = "https://files.pythonhosted.org/packages/e5/9b/f32d1d6093ab9eeabbd839b0f7619c62e46cc4b7b6dbf05b6e615bbd4400/scipy-1.15.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:50f9e62461c95d933d5c5ef4a1f2ebf9a2b4e83b0db374cb3f1de104d935922e", size = 22540030, upload-time = "2025-05-08T16:07:54.121Z" }, + { url = "https://files.pythonhosted.org/packages/e7/29/c278f699b095c1a884f29fda126340fcc201461ee8bfea5c8bdb1c7c958b/scipy-1.15.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:14ed70039d182f411ffc74789a16df3835e05dc469b898233a245cdfd7f162cb", size = 25218709, upload-time = "2025-05-08T16:07:58.506Z" }, + { url = "https://files.pythonhosted.org/packages/24/18/9e5374b617aba742a990581373cd6b68a2945d65cc588482749ef2e64467/scipy-1.15.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a769105537aa07a69468a0eefcd121be52006db61cdd8cac8a0e68980bbb723", size = 34809045, upload-time = "2025-05-08T16:08:03.929Z" }, + { url = "https://files.pythonhosted.org/packages/e1/fe/9c4361e7ba2927074360856db6135ef4904d505e9b3afbbcb073c4008328/scipy-1.15.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db984639887e3dffb3928d118145ffe40eff2fa40cb241a306ec57c219ebbbb", size = 36703062, upload-time = "2025-05-08T16:08:09.558Z" }, + { url = "https://files.pythonhosted.org/packages/b7/8e/038ccfe29d272b30086b25a4960f757f97122cb2ec42e62b460d02fe98e9/scipy-1.15.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:40e54d5c7e7ebf1aa596c374c49fa3135f04648a0caabcb66c52884b943f02b4", size = 36393132, upload-time = "2025-05-08T16:08:15.34Z" }, + { url = "https://files.pythonhosted.org/packages/10/7e/5c12285452970be5bdbe8352c619250b97ebf7917d7a9a9e96b8a8140f17/scipy-1.15.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5e721fed53187e71d0ccf382b6bf977644c533e506c4d33c3fb24de89f5c3ed5", size = 38979503, upload-time = "2025-05-08T16:08:21.513Z" }, + { url = "https://files.pythonhosted.org/packages/81/06/0a5e5349474e1cbc5757975b21bd4fad0e72ebf138c5592f191646154e06/scipy-1.15.3-cp313-cp313t-win_amd64.whl", hash = "sha256:76ad1fb5f8752eabf0fa02e4cc0336b4e8f021e2d5f061ed37d6d264db35e3ca", size = 40308097, upload-time = "2025-05-08T16:08:27.627Z" }, +] + +[[package]] +name = "scipy" +version = "1.17.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14' and sys_platform == 'win32'", + "python_full_version >= '3.14' and sys_platform == 'emscripten'", + "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'win32'", + "python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten'", + "python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", +] +dependencies = [ + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7a/97/5a3609c4f8d58b039179648e62dd220f89864f56f7357f5d4f45c29eb2cc/scipy-1.17.1.tar.gz", hash = "sha256:95d8e012d8cb8816c226aef832200b1d45109ed4464303e997c5b13122b297c0", size = 30573822, upload-time = "2026-02-23T00:26:24.851Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/75/b4ce781849931fef6fd529afa6b63711d5a733065722d0c3e2724af9e40a/scipy-1.17.1-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:1f95b894f13729334fb990162e911c9e5dc1ab390c58aa6cbecb389c5b5e28ec", size = 31613675, upload-time = "2026-02-23T00:16:00.13Z" }, + { url = "https://files.pythonhosted.org/packages/f7/58/bccc2861b305abdd1b8663d6130c0b3d7cc22e8d86663edbc8401bfd40d4/scipy-1.17.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:e18f12c6b0bc5a592ed23d3f7b891f68fd7f8241d69b7883769eb5d5dfb52696", size = 28162057, upload-time = "2026-02-23T00:16:09.456Z" }, + { url = "https://files.pythonhosted.org/packages/6d/ee/18146b7757ed4976276b9c9819108adbc73c5aad636e5353e20746b73069/scipy-1.17.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:a3472cfbca0a54177d0faa68f697d8ba4c80bbdc19908c3465556d9f7efce9ee", size = 20334032, upload-time = "2026-02-23T00:16:17.358Z" }, + { url = "https://files.pythonhosted.org/packages/ec/e6/cef1cf3557f0c54954198554a10016b6a03b2ec9e22a4e1df734936bd99c/scipy-1.17.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:766e0dc5a616d026a3a1cffa379af959671729083882f50307e18175797b3dfd", size = 22709533, upload-time = "2026-02-23T00:16:25.791Z" }, + { url = "https://files.pythonhosted.org/packages/4d/60/8804678875fc59362b0fb759ab3ecce1f09c10a735680318ac30da8cd76b/scipy-1.17.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:744b2bf3640d907b79f3fd7874efe432d1cf171ee721243e350f55234b4cec4c", size = 33062057, upload-time = "2026-02-23T00:16:36.931Z" }, + { url = "https://files.pythonhosted.org/packages/09/7d/af933f0f6e0767995b4e2d705a0665e454d1c19402aa7e895de3951ebb04/scipy-1.17.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43af8d1f3bea642559019edfe64e9b11192a8978efbd1539d7bc2aaa23d92de4", size = 35349300, upload-time = "2026-02-23T00:16:49.108Z" }, + { url = "https://files.pythonhosted.org/packages/b4/3d/7ccbbdcbb54c8fdc20d3b6930137c782a163fa626f0aef920349873421ba/scipy-1.17.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cd96a1898c0a47be4520327e01f874acfd61fb48a9420f8aa9f6483412ffa444", size = 35127333, upload-time = "2026-02-23T00:17:01.293Z" }, + { url = "https://files.pythonhosted.org/packages/e8/19/f926cb11c42b15ba08e3a71e376d816ac08614f769b4f47e06c3580c836a/scipy-1.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4eb6c25dd62ee8d5edf68a8e1c171dd71c292fdae95d8aeb3dd7d7de4c364082", size = 37741314, upload-time = "2026-02-23T00:17:12.576Z" }, + { url = "https://files.pythonhosted.org/packages/95/da/0d1df507cf574b3f224ccc3d45244c9a1d732c81dcb26b1e8a766ae271a8/scipy-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:d30e57c72013c2a4fe441c2fcb8e77b14e152ad48b5464858e07e2ad9fbfceff", size = 36607512, upload-time = "2026-02-23T00:17:23.424Z" }, + { url = "https://files.pythonhosted.org/packages/68/7f/bdd79ceaad24b671543ffe0ef61ed8e659440eb683b66f033454dcee90eb/scipy-1.17.1-cp311-cp311-win_arm64.whl", hash = "sha256:9ecb4efb1cd6e8c4afea0daa91a87fbddbce1b99d2895d151596716c0b2e859d", size = 24599248, upload-time = "2026-02-23T00:17:34.561Z" }, + { url = "https://files.pythonhosted.org/packages/35/48/b992b488d6f299dbe3f11a20b24d3dda3d46f1a635ede1c46b5b17a7b163/scipy-1.17.1-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:35c3a56d2ef83efc372eaec584314bd0ef2e2f0d2adb21c55e6ad5b344c0dcb8", size = 31610954, upload-time = "2026-02-23T00:17:49.855Z" }, + { url = "https://files.pythonhosted.org/packages/b2/02/cf107b01494c19dc100f1d0b7ac3cc08666e96ba2d64db7626066cee895e/scipy-1.17.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:fcb310ddb270a06114bb64bbe53c94926b943f5b7f0842194d585c65eb4edd76", size = 28172662, upload-time = "2026-02-23T00:18:01.64Z" }, + { url = "https://files.pythonhosted.org/packages/cf/a9/599c28631bad314d219cf9ffd40e985b24d603fc8a2f4ccc5ae8419a535b/scipy-1.17.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:cc90d2e9c7e5c7f1a482c9875007c095c3194b1cfedca3c2f3291cdc2bc7c086", size = 20344366, upload-time = "2026-02-23T00:18:12.015Z" }, + { url = "https://files.pythonhosted.org/packages/35/f5/906eda513271c8deb5af284e5ef0206d17a96239af79f9fa0aebfe0e36b4/scipy-1.17.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:c80be5ede8f3f8eded4eff73cc99a25c388ce98e555b17d31da05287015ffa5b", size = 22704017, upload-time = "2026-02-23T00:18:21.502Z" }, + { url = "https://files.pythonhosted.org/packages/da/34/16f10e3042d2f1d6b66e0428308ab52224b6a23049cb2f5c1756f713815f/scipy-1.17.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e19ebea31758fac5893a2ac360fedd00116cbb7628e650842a6691ba7ca28a21", size = 32927842, upload-time = "2026-02-23T00:18:35.367Z" }, + { url = "https://files.pythonhosted.org/packages/01/8e/1e35281b8ab6d5d72ebe9911edcdffa3f36b04ed9d51dec6dd140396e220/scipy-1.17.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:02ae3b274fde71c5e92ac4d54bc06c42d80e399fec704383dcd99b301df37458", size = 35235890, upload-time = "2026-02-23T00:18:49.188Z" }, + { url = "https://files.pythonhosted.org/packages/c5/5c/9d7f4c88bea6e0d5a4f1bc0506a53a00e9fcb198de372bfe4d3652cef482/scipy-1.17.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8a604bae87c6195d8b1045eddece0514d041604b14f2727bbc2b3020172045eb", size = 35003557, upload-time = "2026-02-23T00:18:54.74Z" }, + { url = "https://files.pythonhosted.org/packages/65/94/7698add8f276dbab7a9de9fb6b0e02fc13ee61d51c7c3f85ac28b65e1239/scipy-1.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f590cd684941912d10becc07325a3eeb77886fe981415660d9265c4c418d0bea", size = 37625856, upload-time = "2026-02-23T00:19:00.307Z" }, + { url = "https://files.pythonhosted.org/packages/a2/84/dc08d77fbf3d87d3ee27f6a0c6dcce1de5829a64f2eae85a0ecc1f0daa73/scipy-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:41b71f4a3a4cab9d366cd9065b288efc4d4f3c0b37a91a8e0947fb5bd7f31d87", size = 36549682, upload-time = "2026-02-23T00:19:07.67Z" }, + { url = "https://files.pythonhosted.org/packages/bc/98/fe9ae9ffb3b54b62559f52dedaebe204b408db8109a8c66fdd04869e6424/scipy-1.17.1-cp312-cp312-win_arm64.whl", hash = "sha256:f4115102802df98b2b0db3cce5cb9b92572633a1197c77b7553e5203f284a5b3", size = 24547340, upload-time = "2026-02-23T00:19:12.024Z" }, + { url = "https://files.pythonhosted.org/packages/76/27/07ee1b57b65e92645f219b37148a7e7928b82e2b5dbeccecb4dff7c64f0b/scipy-1.17.1-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:5e3c5c011904115f88a39308379c17f91546f77c1667cea98739fe0fccea804c", size = 31590199, upload-time = "2026-02-23T00:19:17.192Z" }, + { url = "https://files.pythonhosted.org/packages/ec/ae/db19f8ab842e9b724bf5dbb7db29302a91f1e55bc4d04b1025d6d605a2c5/scipy-1.17.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:6fac755ca3d2c3edcb22f479fceaa241704111414831ddd3bc6056e18516892f", size = 28154001, upload-time = "2026-02-23T00:19:22.241Z" }, + { url = "https://files.pythonhosted.org/packages/5b/58/3ce96251560107b381cbd6e8413c483bbb1228a6b919fa8652b0d4090e7f/scipy-1.17.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:7ff200bf9d24f2e4d5dc6ee8c3ac64d739d3a89e2326ba68aaf6c4a2b838fd7d", size = 20325719, upload-time = "2026-02-23T00:19:26.329Z" }, + { url = "https://files.pythonhosted.org/packages/b2/83/15087d945e0e4d48ce2377498abf5ad171ae013232ae31d06f336e64c999/scipy-1.17.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:4b400bdc6f79fa02a4d86640310dde87a21fba0c979efff5248908c6f15fad1b", size = 22683595, upload-time = "2026-02-23T00:19:30.304Z" }, + { url = "https://files.pythonhosted.org/packages/b4/e0/e58fbde4a1a594c8be8114eb4aac1a55bcd6587047efc18a61eb1f5c0d30/scipy-1.17.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2b64ca7d4aee0102a97f3ba22124052b4bd2152522355073580bf4845e2550b6", size = 32896429, upload-time = "2026-02-23T00:19:35.536Z" }, + { url = "https://files.pythonhosted.org/packages/f5/5f/f17563f28ff03c7b6799c50d01d5d856a1d55f2676f537ca8d28c7f627cd/scipy-1.17.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:581b2264fc0aa555f3f435a5944da7504ea3a065d7029ad60e7c3d1ae09c5464", size = 35203952, upload-time = "2026-02-23T00:19:42.259Z" }, + { url = "https://files.pythonhosted.org/packages/8d/a5/9afd17de24f657fdfe4df9a3f1ea049b39aef7c06000c13db1530d81ccca/scipy-1.17.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:beeda3d4ae615106d7094f7e7cef6218392e4465cc95d25f900bebabfded0950", size = 34979063, upload-time = "2026-02-23T00:19:47.547Z" }, + { url = "https://files.pythonhosted.org/packages/8b/13/88b1d2384b424bf7c924f2038c1c409f8d88bb2a8d49d097861dd64a57b2/scipy-1.17.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6609bc224e9568f65064cfa72edc0f24ee6655b47575954ec6339534b2798369", size = 37598449, upload-time = "2026-02-23T00:19:53.238Z" }, + { url = "https://files.pythonhosted.org/packages/35/e5/d6d0e51fc888f692a35134336866341c08655d92614f492c6860dc45bb2c/scipy-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:37425bc9175607b0268f493d79a292c39f9d001a357bebb6b88fdfaff13f6448", size = 36510943, upload-time = "2026-02-23T00:20:50.89Z" }, + { url = "https://files.pythonhosted.org/packages/2a/fd/3be73c564e2a01e690e19cc618811540ba5354c67c8680dce3281123fb79/scipy-1.17.1-cp313-cp313-win_arm64.whl", hash = "sha256:5cf36e801231b6a2059bf354720274b7558746f3b1a4efb43fcf557ccd484a87", size = 24545621, upload-time = "2026-02-23T00:20:55.871Z" }, + { url = "https://files.pythonhosted.org/packages/6f/6b/17787db8b8114933a66f9dcc479a8272e4b4da75fe03b0c282f7b0ade8cd/scipy-1.17.1-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:d59c30000a16d8edc7e64152e30220bfbd724c9bbb08368c054e24c651314f0a", size = 31936708, upload-time = "2026-02-23T00:19:58.694Z" }, + { url = "https://files.pythonhosted.org/packages/38/2e/524405c2b6392765ab1e2b722a41d5da33dc5c7b7278184a8ad29b6cb206/scipy-1.17.1-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:010f4333c96c9bb1a4516269e33cb5917b08ef2166d5556ca2fd9f082a9e6ea0", size = 28570135, upload-time = "2026-02-23T00:20:03.934Z" }, + { url = "https://files.pythonhosted.org/packages/fd/c3/5bd7199f4ea8556c0c8e39f04ccb014ac37d1468e6cfa6a95c6b3562b76e/scipy-1.17.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:2ceb2d3e01c5f1d83c4189737a42d9cb2fc38a6eeed225e7515eef71ad301dce", size = 20741977, upload-time = "2026-02-23T00:20:07.935Z" }, + { url = "https://files.pythonhosted.org/packages/d9/b8/8ccd9b766ad14c78386599708eb745f6b44f08400a5fd0ade7cf89b6fc93/scipy-1.17.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:844e165636711ef41f80b4103ed234181646b98a53c8f05da12ca5ca289134f6", size = 23029601, upload-time = "2026-02-23T00:20:12.161Z" }, + { url = "https://files.pythonhosted.org/packages/6d/a0/3cb6f4d2fb3e17428ad2880333cac878909ad1a89f678527b5328b93c1d4/scipy-1.17.1-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:158dd96d2207e21c966063e1635b1063cd7787b627b6f07305315dd73d9c679e", size = 33019667, upload-time = "2026-02-23T00:20:17.208Z" }, + { url = "https://files.pythonhosted.org/packages/f3/c3/2d834a5ac7bf3a0c806ad1508efc02dda3c8c61472a56132d7894c312dea/scipy-1.17.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:74cbb80d93260fe2ffa334efa24cb8f2f0f622a9b9febf8b483c0b865bfb3475", size = 35264159, upload-time = "2026-02-23T00:20:23.087Z" }, + { url = "https://files.pythonhosted.org/packages/4d/77/d3ed4becfdbd217c52062fafe35a72388d1bd82c2d0ba5ca19d6fcc93e11/scipy-1.17.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:dbc12c9f3d185f5c737d801da555fb74b3dcfa1a50b66a1a93e09190f41fab50", size = 35102771, upload-time = "2026-02-23T00:20:28.636Z" }, + { url = "https://files.pythonhosted.org/packages/bd/12/d19da97efde68ca1ee5538bb261d5d2c062f0c055575128f11a2730e3ac1/scipy-1.17.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:94055a11dfebe37c656e70317e1996dc197e1a15bbcc351bcdd4610e128fe1ca", size = 37665910, upload-time = "2026-02-23T00:20:34.743Z" }, + { url = "https://files.pythonhosted.org/packages/06/1c/1172a88d507a4baaf72c5a09bb6c018fe2ae0ab622e5830b703a46cc9e44/scipy-1.17.1-cp313-cp313t-win_amd64.whl", hash = "sha256:e30bdeaa5deed6bc27b4cc490823cd0347d7dae09119b8803ae576ea0ce52e4c", size = 36562980, upload-time = "2026-02-23T00:20:40.575Z" }, + { url = "https://files.pythonhosted.org/packages/70/b0/eb757336e5a76dfa7911f63252e3b7d1de00935d7705cf772db5b45ec238/scipy-1.17.1-cp313-cp313t-win_arm64.whl", hash = "sha256:a720477885a9d2411f94a93d16f9d89bad0f28ca23c3f8daa521e2dcc3f44d49", size = 24856543, upload-time = "2026-02-23T00:20:45.313Z" }, + { url = "https://files.pythonhosted.org/packages/cf/83/333afb452af6f0fd70414dc04f898647ee1423979ce02efa75c3b0f2c28e/scipy-1.17.1-cp314-cp314-macosx_10_14_x86_64.whl", hash = "sha256:a48a72c77a310327f6a3a920092fa2b8fd03d7deaa60f093038f22d98e096717", size = 31584510, upload-time = "2026-02-23T00:21:01.015Z" }, + { url = "https://files.pythonhosted.org/packages/ed/a6/d05a85fd51daeb2e4ea71d102f15b34fedca8e931af02594193ae4fd25f7/scipy-1.17.1-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:45abad819184f07240d8a696117a7aacd39787af9e0b719d00285549ed19a1e9", size = 28170131, upload-time = "2026-02-23T00:21:05.888Z" }, + { url = "https://files.pythonhosted.org/packages/db/7b/8624a203326675d7746a254083a187398090a179335b2e4a20e2ddc46e83/scipy-1.17.1-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:3fd1fcdab3ea951b610dc4cef356d416d5802991e7e32b5254828d342f7b7e0b", size = 20342032, upload-time = "2026-02-23T00:21:09.904Z" }, + { url = "https://files.pythonhosted.org/packages/c9/35/2c342897c00775d688d8ff3987aced3426858fd89d5a0e26e020b660b301/scipy-1.17.1-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:7bdf2da170b67fdf10bca777614b1c7d96ae3ca5794fd9587dce41eb2966e866", size = 22678766, upload-time = "2026-02-23T00:21:14.313Z" }, + { url = "https://files.pythonhosted.org/packages/ef/f2/7cdb8eb308a1a6ae1e19f945913c82c23c0c442a462a46480ce487fdc0ac/scipy-1.17.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:adb2642e060a6549c343603a3851ba76ef0b74cc8c079a9a58121c7ec9fe2350", size = 32957007, upload-time = "2026-02-23T00:21:19.663Z" }, + { url = "https://files.pythonhosted.org/packages/0b/2e/7eea398450457ecb54e18e9d10110993fa65561c4f3add5e8eccd2b9cd41/scipy-1.17.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:eee2cfda04c00a857206a4330f0c5e3e56535494e30ca445eb19ec624ae75118", size = 35221333, upload-time = "2026-02-23T00:21:25.278Z" }, + { url = "https://files.pythonhosted.org/packages/d9/77/5b8509d03b77f093a0d52e606d3c4f79e8b06d1d38c441dacb1e26cacf46/scipy-1.17.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:d2650c1fb97e184d12d8ba010493ee7b322864f7d3d00d3f9bb97d9c21de4068", size = 35042066, upload-time = "2026-02-23T00:21:31.358Z" }, + { url = "https://files.pythonhosted.org/packages/f9/df/18f80fb99df40b4070328d5ae5c596f2f00fffb50167e31439e932f29e7d/scipy-1.17.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:08b900519463543aa604a06bec02461558a6e1cef8fdbb8098f77a48a83c8118", size = 37612763, upload-time = "2026-02-23T00:21:37.247Z" }, + { url = "https://files.pythonhosted.org/packages/4b/39/f0e8ea762a764a9dc52aa7dabcfad51a354819de1f0d4652b6a1122424d6/scipy-1.17.1-cp314-cp314-win_amd64.whl", hash = "sha256:3877ac408e14da24a6196de0ddcace62092bfc12a83823e92e49e40747e52c19", size = 37290984, upload-time = "2026-02-23T00:22:35.023Z" }, + { url = "https://files.pythonhosted.org/packages/7c/56/fe201e3b0f93d1a8bcf75d3379affd228a63d7e2d80ab45467a74b494947/scipy-1.17.1-cp314-cp314-win_arm64.whl", hash = "sha256:f8885db0bc2bffa59d5c1b72fad7a6a92d3e80e7257f967dd81abb553a90d293", size = 25192877, upload-time = "2026-02-23T00:22:39.798Z" }, + { url = "https://files.pythonhosted.org/packages/96/ad/f8c414e121f82e02d76f310f16db9899c4fcde36710329502a6b2a3c0392/scipy-1.17.1-cp314-cp314t-macosx_10_14_x86_64.whl", hash = "sha256:1cc682cea2ae55524432f3cdff9e9a3be743d52a7443d0cba9017c23c87ae2f6", size = 31949750, upload-time = "2026-02-23T00:21:42.289Z" }, + { url = "https://files.pythonhosted.org/packages/7c/b0/c741e8865d61b67c81e255f4f0a832846c064e426636cd7de84e74d209be/scipy-1.17.1-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:2040ad4d1795a0ae89bfc7e8429677f365d45aa9fd5e4587cf1ea737f927b4a1", size = 28585858, upload-time = "2026-02-23T00:21:47.706Z" }, + { url = "https://files.pythonhosted.org/packages/ed/1b/3985219c6177866628fa7c2595bfd23f193ceebbe472c98a08824b9466ff/scipy-1.17.1-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:131f5aaea57602008f9822e2115029b55d4b5f7c070287699fe45c661d051e39", size = 20757723, upload-time = "2026-02-23T00:21:52.039Z" }, + { url = "https://files.pythonhosted.org/packages/c0/19/2a04aa25050d656d6f7b9e7b685cc83d6957fb101665bfd9369ca6534563/scipy-1.17.1-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:9cdc1a2fcfd5c52cfb3045feb399f7b3ce822abdde3a193a6b9a60b3cb5854ca", size = 23043098, upload-time = "2026-02-23T00:21:56.185Z" }, + { url = "https://files.pythonhosted.org/packages/86/f1/3383beb9b5d0dbddd030335bf8a8b32d4317185efe495374f134d8be6cce/scipy-1.17.1-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e3dcd57ab780c741fde8dc68619de988b966db759a3c3152e8e9142c26295ad", size = 33030397, upload-time = "2026-02-23T00:22:01.404Z" }, + { url = "https://files.pythonhosted.org/packages/41/68/8f21e8a65a5a03f25a79165ec9d2b28c00e66dc80546cf5eb803aeeff35b/scipy-1.17.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a9956e4d4f4a301ebf6cde39850333a6b6110799d470dbbb1e25326ac447f52a", size = 35281163, upload-time = "2026-02-23T00:22:07.024Z" }, + { url = "https://files.pythonhosted.org/packages/84/8d/c8a5e19479554007a5632ed7529e665c315ae7492b4f946b0deb39870e39/scipy-1.17.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:a4328d245944d09fd639771de275701ccadf5f781ba0ff092ad141e017eccda4", size = 35116291, upload-time = "2026-02-23T00:22:12.585Z" }, + { url = "https://files.pythonhosted.org/packages/52/52/e57eceff0e342a1f50e274264ed47497b59e6a4e3118808ee58ddda7b74a/scipy-1.17.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a77cbd07b940d326d39a1d1b37817e2ee4d79cb30e7338f3d0cddffae70fcaa2", size = 37682317, upload-time = "2026-02-23T00:22:18.513Z" }, + { url = "https://files.pythonhosted.org/packages/11/2f/b29eafe4a3fbc3d6de9662b36e028d5f039e72d345e05c250e121a230dd4/scipy-1.17.1-cp314-cp314t-win_amd64.whl", hash = "sha256:eb092099205ef62cd1782b006658db09e2fed75bffcae7cc0d44052d8aa0f484", size = 37345327, upload-time = "2026-02-23T00:22:24.442Z" }, + { url = "https://files.pythonhosted.org/packages/07/39/338d9219c4e87f3e708f18857ecd24d22a0c3094752393319553096b98af/scipy-1.17.1-cp314-cp314t-win_arm64.whl", hash = "sha256:200e1050faffacc162be6a486a984a0497866ec54149a01270adc8a59b7c7d21", size = 25489165, upload-time = "2026-02-23T00:22:29.563Z" }, +] + +[[package]] +name = "semchunk" +version = "3.2.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mpire", extra = ["dill"] }, + { name = "tqdm" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a9/a0/ce7e3d6cc76498fd594e667d10a03f17d7cced129e46869daec23523bf5a/semchunk-3.2.5.tar.gz", hash = "sha256:ee15e9a06a69a411937dd8fcf0a25d7ef389c5195863140436872a02c95b0218", size = 17667, upload-time = "2025-10-28T02:12:38.025Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/95/12d226ee4d207cb1f77a216baa7e1a8bae2639733c140abe8d0316d23a18/semchunk-3.2.5-py3-none-any.whl", hash = "sha256:fd09cc5f380bd010b8ca773bd81893f7eaf11d37dd8362a83d46cedaf5dae076", size = 13048, upload-time = "2025-10-28T02:12:36.724Z" }, +] + +[[package]] +name = "setuptools" +version = "81.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0d/1c/73e719955c59b8e424d015ab450f51c0af856ae46ea2da83eba51cc88de1/setuptools-81.0.0.tar.gz", hash = "sha256:487b53915f52501f0a79ccfd0c02c165ffe06631443a886740b91af4b7a5845a", size = 1198299, upload-time = "2026-02-06T21:10:39.601Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/e3/c164c88b2e5ce7b24d667b9bd83589cf4f3520d97cad01534cd3c4f55fdb/setuptools-81.0.0-py3-none-any.whl", hash = "sha256:fdd925d5c5d9f62e4b74b30d6dd7828ce236fd6ed998a08d81de62ce5a6310d6", size = 1062021, upload-time = "2026-02-06T21:10:37.175Z" }, +] + +[[package]] +name = "shapely" +version = "2.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4d/bc/0989043118a27cccb4e906a46b7565ce36ca7b57f5a18b78f4f1b0f72d9d/shapely-2.1.2.tar.gz", hash = "sha256:2ed4ecb28320a433db18a5bf029986aa8afcfd740745e78847e330d5d94922a9", size = 315489, upload-time = "2025-09-24T13:51:41.432Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/89/c3548aa9b9812a5d143986764dededfa48d817714e947398bdda87c77a72/shapely-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7ae48c236c0324b4e139bea88a306a04ca630f49be66741b340729d380d8f52f", size = 1825959, upload-time = "2025-09-24T13:50:00.682Z" }, + { url = "https://files.pythonhosted.org/packages/ce/8a/7ebc947080442edd614ceebe0ce2cdbd00c25e832c240e1d1de61d0e6b38/shapely-2.1.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:eba6710407f1daa8e7602c347dfc94adc02205ec27ed956346190d66579eb9ea", size = 1629196, upload-time = "2025-09-24T13:50:03.447Z" }, + { url = "https://files.pythonhosted.org/packages/c8/86/c9c27881c20d00fc409e7e059de569d5ed0abfcec9c49548b124ebddea51/shapely-2.1.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ef4a456cc8b7b3d50ccec29642aa4aeda959e9da2fe9540a92754770d5f0cf1f", size = 2951065, upload-time = "2025-09-24T13:50:05.266Z" }, + { url = "https://files.pythonhosted.org/packages/50/8a/0ab1f7433a2a85d9e9aea5b1fbb333f3b09b309e7817309250b4b7b2cc7a/shapely-2.1.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e38a190442aacc67ff9f75ce60aec04893041f16f97d242209106d502486a142", size = 3058666, upload-time = "2025-09-24T13:50:06.872Z" }, + { url = "https://files.pythonhosted.org/packages/bb/c6/5a30ffac9c4f3ffd5b7113a7f5299ccec4713acd5ee44039778a7698224e/shapely-2.1.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:40d784101f5d06a1fd30b55fc11ea58a61be23f930d934d86f19a180909908a4", size = 3966905, upload-time = "2025-09-24T13:50:09.417Z" }, + { url = "https://files.pythonhosted.org/packages/9c/72/e92f3035ba43e53959007f928315a68fbcf2eeb4e5ededb6f0dc7ff1ecc3/shapely-2.1.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f6f6cd5819c50d9bcf921882784586aab34a4bd53e7553e175dece6db513a6f0", size = 4129260, upload-time = "2025-09-24T13:50:11.183Z" }, + { url = "https://files.pythonhosted.org/packages/42/24/605901b73a3d9f65fa958e63c9211f4be23d584da8a1a7487382fac7fdc5/shapely-2.1.2-cp310-cp310-win32.whl", hash = "sha256:fe9627c39c59e553c90f5bc3128252cb85dc3b3be8189710666d2f8bc3a5503e", size = 1544301, upload-time = "2025-09-24T13:50:12.521Z" }, + { url = "https://files.pythonhosted.org/packages/e1/89/6db795b8dd3919851856bd2ddd13ce434a748072f6fdee42ff30cbd3afa3/shapely-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:1d0bfb4b8f661b3b4ec3565fa36c340bfb1cda82087199711f86a88647d26b2f", size = 1722074, upload-time = "2025-09-24T13:50:13.909Z" }, + { url = "https://files.pythonhosted.org/packages/8f/8d/1ff672dea9ec6a7b5d422eb6d095ed886e2e523733329f75fdcb14ee1149/shapely-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:91121757b0a36c9aac3427a651a7e6567110a4a67c97edf04f8d55d4765f6618", size = 1820038, upload-time = "2025-09-24T13:50:15.628Z" }, + { url = "https://files.pythonhosted.org/packages/4f/ce/28fab8c772ce5db23a0d86bf0adaee0c4c79d5ad1db766055fa3dab442e2/shapely-2.1.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:16a9c722ba774cf50b5d4541242b4cce05aafd44a015290c82ba8a16931ff63d", size = 1626039, upload-time = "2025-09-24T13:50:16.881Z" }, + { url = "https://files.pythonhosted.org/packages/70/8b/868b7e3f4982f5006e9395c1e12343c66a8155c0374fdc07c0e6a1ab547d/shapely-2.1.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cc4f7397459b12c0b196c9efe1f9d7e92463cbba142632b4cc6d8bbbbd3e2b09", size = 3001519, upload-time = "2025-09-24T13:50:18.606Z" }, + { url = "https://files.pythonhosted.org/packages/13/02/58b0b8d9c17c93ab6340edd8b7308c0c5a5b81f94ce65705819b7416dba5/shapely-2.1.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:136ab87b17e733e22f0961504d05e77e7be8c9b5a8184f685b4a91a84efe3c26", size = 3110842, upload-time = "2025-09-24T13:50:21.77Z" }, + { url = "https://files.pythonhosted.org/packages/af/61/8e389c97994d5f331dcffb25e2fa761aeedfb52b3ad9bcdd7b8671f4810a/shapely-2.1.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:16c5d0fc45d3aa0a69074979f4f1928ca2734fb2e0dde8af9611e134e46774e7", size = 4021316, upload-time = "2025-09-24T13:50:23.626Z" }, + { url = "https://files.pythonhosted.org/packages/d3/d4/9b2a9fe6039f9e42ccf2cb3e84f219fd8364b0c3b8e7bbc857b5fbe9c14c/shapely-2.1.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6ddc759f72b5b2b0f54a7e7cde44acef680a55019eb52ac63a7af2cf17cb9cd2", size = 4178586, upload-time = "2025-09-24T13:50:25.443Z" }, + { url = "https://files.pythonhosted.org/packages/16/f6/9840f6963ed4decf76b08fd6d7fed14f8779fb7a62cb45c5617fa8ac6eab/shapely-2.1.2-cp311-cp311-win32.whl", hash = "sha256:2fa78b49485391224755a856ed3b3bd91c8455f6121fee0db0e71cefb07d0ef6", size = 1543961, upload-time = "2025-09-24T13:50:26.968Z" }, + { url = "https://files.pythonhosted.org/packages/38/1e/3f8ea46353c2a33c1669eb7327f9665103aa3a8dfe7f2e4ef714c210b2c2/shapely-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:c64d5c97b2f47e3cd9b712eaced3b061f2b71234b3fc263e0fcf7d889c6559dc", size = 1722856, upload-time = "2025-09-24T13:50:28.497Z" }, + { url = "https://files.pythonhosted.org/packages/24/c0/f3b6453cf2dfa99adc0ba6675f9aaff9e526d2224cbd7ff9c1a879238693/shapely-2.1.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fe2533caae6a91a543dec62e8360fe86ffcdc42a7c55f9dfd0128a977a896b94", size = 1833550, upload-time = "2025-09-24T13:50:30.019Z" }, + { url = "https://files.pythonhosted.org/packages/86/07/59dee0bc4b913b7ab59ab1086225baca5b8f19865e6101db9ebb7243e132/shapely-2.1.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ba4d1333cc0bc94381d6d4308d2e4e008e0bd128bdcff5573199742ee3634359", size = 1643556, upload-time = "2025-09-24T13:50:32.291Z" }, + { url = "https://files.pythonhosted.org/packages/26/29/a5397e75b435b9895cd53e165083faed5d12fd9626eadec15a83a2411f0f/shapely-2.1.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0bd308103340030feef6c111d3eb98d50dc13feea33affc8a6f9fa549e9458a3", size = 2988308, upload-time = "2025-09-24T13:50:33.862Z" }, + { url = "https://files.pythonhosted.org/packages/b9/37/e781683abac55dde9771e086b790e554811a71ed0b2b8a1e789b7430dd44/shapely-2.1.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1e7d4d7ad262a48bb44277ca12c7c78cb1b0f56b32c10734ec9a1d30c0b0c54b", size = 3099844, upload-time = "2025-09-24T13:50:35.459Z" }, + { url = "https://files.pythonhosted.org/packages/d8/f3/9876b64d4a5a321b9dc482c92bb6f061f2fa42131cba643c699f39317cb9/shapely-2.1.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e9eddfe513096a71896441a7c37db72da0687b34752c4e193577a145c71736fc", size = 3988842, upload-time = "2025-09-24T13:50:37.478Z" }, + { url = "https://files.pythonhosted.org/packages/d1/a0/704c7292f7014c7e74ec84eddb7b109e1fbae74a16deae9c1504b1d15565/shapely-2.1.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:980c777c612514c0cf99bc8a9de6d286f5e186dcaf9091252fcd444e5638193d", size = 4152714, upload-time = "2025-09-24T13:50:39.9Z" }, + { url = "https://files.pythonhosted.org/packages/53/46/319c9dc788884ad0785242543cdffac0e6530e4d0deb6c4862bc4143dcf3/shapely-2.1.2-cp312-cp312-win32.whl", hash = "sha256:9111274b88e4d7b54a95218e243282709b330ef52b7b86bc6aaf4f805306f454", size = 1542745, upload-time = "2025-09-24T13:50:41.414Z" }, + { url = "https://files.pythonhosted.org/packages/ec/bf/cb6c1c505cb31e818e900b9312d514f381fbfa5c4363edfce0fcc4f8c1a4/shapely-2.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:743044b4cfb34f9a67205cee9279feaf60ba7d02e69febc2afc609047cb49179", size = 1722861, upload-time = "2025-09-24T13:50:43.35Z" }, + { url = "https://files.pythonhosted.org/packages/c3/90/98ef257c23c46425dc4d1d31005ad7c8d649fe423a38b917db02c30f1f5a/shapely-2.1.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b510dda1a3672d6879beb319bc7c5fd302c6c354584690973c838f46ec3e0fa8", size = 1832644, upload-time = "2025-09-24T13:50:44.886Z" }, + { url = "https://files.pythonhosted.org/packages/6d/ab/0bee5a830d209adcd3a01f2d4b70e587cdd9fd7380d5198c064091005af8/shapely-2.1.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8cff473e81017594d20ec55d86b54bc635544897e13a7cfc12e36909c5309a2a", size = 1642887, upload-time = "2025-09-24T13:50:46.735Z" }, + { url = "https://files.pythonhosted.org/packages/2d/5e/7d7f54ba960c13302584c73704d8c4d15404a51024631adb60b126a4ae88/shapely-2.1.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fe7b77dc63d707c09726b7908f575fc04ff1d1ad0f3fb92aec212396bc6cfe5e", size = 2970931, upload-time = "2025-09-24T13:50:48.374Z" }, + { url = "https://files.pythonhosted.org/packages/f2/a2/83fc37e2a58090e3d2ff79175a95493c664bcd0b653dd75cb9134645a4e5/shapely-2.1.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7ed1a5bbfb386ee8332713bf7508bc24e32d24b74fc9a7b9f8529a55db9f4ee6", size = 3082855, upload-time = "2025-09-24T13:50:50.037Z" }, + { url = "https://files.pythonhosted.org/packages/44/2b/578faf235a5b09f16b5f02833c53822294d7f21b242f8e2d0cf03fb64321/shapely-2.1.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a84e0582858d841d54355246ddfcbd1fce3179f185da7470f41ce39d001ee1af", size = 3979960, upload-time = "2025-09-24T13:50:51.74Z" }, + { url = "https://files.pythonhosted.org/packages/4d/04/167f096386120f692cc4ca02f75a17b961858997a95e67a3cb6a7bbd6b53/shapely-2.1.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:dc3487447a43d42adcdf52d7ac73804f2312cbfa5d433a7d2c506dcab0033dfd", size = 4142851, upload-time = "2025-09-24T13:50:53.49Z" }, + { url = "https://files.pythonhosted.org/packages/48/74/fb402c5a6235d1c65a97348b48cdedb75fb19eca2b1d66d04969fc1c6091/shapely-2.1.2-cp313-cp313-win32.whl", hash = "sha256:9c3a3c648aedc9f99c09263b39f2d8252f199cb3ac154fadc173283d7d111350", size = 1541890, upload-time = "2025-09-24T13:50:55.337Z" }, + { url = "https://files.pythonhosted.org/packages/41/47/3647fe7ad990af60ad98b889657a976042c9988c2807cf322a9d6685f462/shapely-2.1.2-cp313-cp313-win_amd64.whl", hash = "sha256:ca2591bff6645c216695bdf1614fca9c82ea1144d4a7591a466fef64f28f0715", size = 1722151, upload-time = "2025-09-24T13:50:57.153Z" }, + { url = "https://files.pythonhosted.org/packages/3c/49/63953754faa51ffe7d8189bfbe9ca34def29f8c0e34c67cbe2a2795f269d/shapely-2.1.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2d93d23bdd2ed9dc157b46bc2f19b7da143ca8714464249bef6771c679d5ff40", size = 1834130, upload-time = "2025-09-24T13:50:58.49Z" }, + { url = "https://files.pythonhosted.org/packages/7f/ee/dce001c1984052970ff60eb4727164892fb2d08052c575042a47f5a9e88f/shapely-2.1.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:01d0d304b25634d60bd7cf291828119ab55a3bab87dc4af1e44b07fb225f188b", size = 1642802, upload-time = "2025-09-24T13:50:59.871Z" }, + { url = "https://files.pythonhosted.org/packages/da/e7/fc4e9a19929522877fa602f705706b96e78376afb7fad09cad5b9af1553c/shapely-2.1.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8d8382dd120d64b03698b7298b89611a6ea6f55ada9d39942838b79c9bc89801", size = 3018460, upload-time = "2025-09-24T13:51:02.08Z" }, + { url = "https://files.pythonhosted.org/packages/a1/18/7519a25db21847b525696883ddc8e6a0ecaa36159ea88e0fef11466384d0/shapely-2.1.2-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:19efa3611eef966e776183e338b2d7ea43569ae99ab34f8d17c2c054d3205cc0", size = 3095223, upload-time = "2025-09-24T13:51:04.472Z" }, + { url = "https://files.pythonhosted.org/packages/48/de/b59a620b1f3a129c3fecc2737104a0a7e04e79335bd3b0a1f1609744cf17/shapely-2.1.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:346ec0c1a0fcd32f57f00e4134d1200e14bf3f5ae12af87ba83ca275c502498c", size = 4030760, upload-time = "2025-09-24T13:51:06.455Z" }, + { url = "https://files.pythonhosted.org/packages/96/b3/c6655ee7232b417562bae192ae0d3ceaadb1cc0ffc2088a2ddf415456cc2/shapely-2.1.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6305993a35989391bd3476ee538a5c9a845861462327efe00dd11a5c8c709a99", size = 4170078, upload-time = "2025-09-24T13:51:08.584Z" }, + { url = "https://files.pythonhosted.org/packages/a0/8e/605c76808d73503c9333af8f6cbe7e1354d2d238bda5f88eea36bfe0f42a/shapely-2.1.2-cp313-cp313t-win32.whl", hash = "sha256:c8876673449f3401f278c86eb33224c5764582f72b653a415d0e6672fde887bf", size = 1559178, upload-time = "2025-09-24T13:51:10.73Z" }, + { url = "https://files.pythonhosted.org/packages/36/f7/d317eb232352a1f1444d11002d477e54514a4a6045536d49d0c59783c0da/shapely-2.1.2-cp313-cp313t-win_amd64.whl", hash = "sha256:4a44bc62a10d84c11a7a3d7c1c4fe857f7477c3506e24c9062da0db0ae0c449c", size = 1739756, upload-time = "2025-09-24T13:51:12.105Z" }, + { url = "https://files.pythonhosted.org/packages/fc/c4/3ce4c2d9b6aabd27d26ec988f08cb877ba9e6e96086eff81bfea93e688c7/shapely-2.1.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:9a522f460d28e2bf4e12396240a5fc1518788b2fcd73535166d748399ef0c223", size = 1831290, upload-time = "2025-09-24T13:51:13.56Z" }, + { url = "https://files.pythonhosted.org/packages/17/b9/f6ab8918fc15429f79cb04afa9f9913546212d7fb5e5196132a2af46676b/shapely-2.1.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1ff629e00818033b8d71139565527ced7d776c269a49bd78c9df84e8f852190c", size = 1641463, upload-time = "2025-09-24T13:51:14.972Z" }, + { url = "https://files.pythonhosted.org/packages/a5/57/91d59ae525ca641e7ac5551c04c9503aee6f29b92b392f31790fcb1a4358/shapely-2.1.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f67b34271dedc3c653eba4e3d7111aa421d5be9b4c4c7d38d30907f796cb30df", size = 2970145, upload-time = "2025-09-24T13:51:16.961Z" }, + { url = "https://files.pythonhosted.org/packages/8a/cb/4948be52ee1da6927831ab59e10d4c29baa2a714f599f1f0d1bc747f5777/shapely-2.1.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:21952dc00df38a2c28375659b07a3979d22641aeb104751e769c3ee825aadecf", size = 3073806, upload-time = "2025-09-24T13:51:18.712Z" }, + { url = "https://files.pythonhosted.org/packages/03/83/f768a54af775eb41ef2e7bec8a0a0dbe7d2431c3e78c0a8bdba7ab17e446/shapely-2.1.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1f2f33f486777456586948e333a56ae21f35ae273be99255a191f5c1fa302eb4", size = 3980803, upload-time = "2025-09-24T13:51:20.37Z" }, + { url = "https://files.pythonhosted.org/packages/9f/cb/559c7c195807c91c79d38a1f6901384a2878a76fbdf3f1048893a9b7534d/shapely-2.1.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:cf831a13e0d5a7eb519e96f58ec26e049b1fad411fc6fc23b162a7ce04d9cffc", size = 4133301, upload-time = "2025-09-24T13:51:21.887Z" }, + { url = "https://files.pythonhosted.org/packages/80/cd/60d5ae203241c53ef3abd2ef27c6800e21afd6c94e39db5315ea0cbafb4a/shapely-2.1.2-cp314-cp314-win32.whl", hash = "sha256:61edcd8d0d17dd99075d320a1dd39c0cb9616f7572f10ef91b4b5b00c4aeb566", size = 1583247, upload-time = "2025-09-24T13:51:23.401Z" }, + { url = "https://files.pythonhosted.org/packages/74/d4/135684f342e909330e50d31d441ace06bf83c7dc0777e11043f99167b123/shapely-2.1.2-cp314-cp314-win_amd64.whl", hash = "sha256:a444e7afccdb0999e203b976adb37ea633725333e5b119ad40b1ca291ecf311c", size = 1773019, upload-time = "2025-09-24T13:51:24.873Z" }, + { url = "https://files.pythonhosted.org/packages/a3/05/a44f3f9f695fa3ada22786dc9da33c933da1cbc4bfe876fe3a100bafe263/shapely-2.1.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:5ebe3f84c6112ad3d4632b1fd2290665aa75d4cef5f6c5d77c4c95b324527c6a", size = 1834137, upload-time = "2025-09-24T13:51:26.665Z" }, + { url = "https://files.pythonhosted.org/packages/52/7e/4d57db45bf314573427b0a70dfca15d912d108e6023f623947fa69f39b72/shapely-2.1.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5860eb9f00a1d49ebb14e881f5caf6c2cf472c7fd38bd7f253bbd34f934eb076", size = 1642884, upload-time = "2025-09-24T13:51:28.029Z" }, + { url = "https://files.pythonhosted.org/packages/5a/27/4e29c0a55d6d14ad7422bf86995d7ff3f54af0eba59617eb95caf84b9680/shapely-2.1.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b705c99c76695702656327b819c9660768ec33f5ce01fa32b2af62b56ba400a1", size = 3018320, upload-time = "2025-09-24T13:51:29.903Z" }, + { url = "https://files.pythonhosted.org/packages/9f/bb/992e6a3c463f4d29d4cd6ab8963b75b1b1040199edbd72beada4af46bde5/shapely-2.1.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a1fd0ea855b2cf7c9cddaf25543e914dd75af9de08785f20ca3085f2c9ca60b0", size = 3094931, upload-time = "2025-09-24T13:51:32.699Z" }, + { url = "https://files.pythonhosted.org/packages/9c/16/82e65e21070e473f0ed6451224ed9fa0be85033d17e0c6e7213a12f59d12/shapely-2.1.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:df90e2db118c3671a0754f38e36802db75fe0920d211a27481daf50a711fdf26", size = 4030406, upload-time = "2025-09-24T13:51:34.189Z" }, + { url = "https://files.pythonhosted.org/packages/7c/75/c24ed871c576d7e2b64b04b1fe3d075157f6eb54e59670d3f5ffb36e25c7/shapely-2.1.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:361b6d45030b4ac64ddd0a26046906c8202eb60d0f9f53085f5179f1d23021a0", size = 4169511, upload-time = "2025-09-24T13:51:36.297Z" }, + { url = "https://files.pythonhosted.org/packages/b1/f7/b3d1d6d18ebf55236eec1c681ce5e665742aab3c0b7b232720a7d43df7b6/shapely-2.1.2-cp314-cp314t-win32.whl", hash = "sha256:b54df60f1fbdecc8ebc2c5b11870461a6417b3d617f555e5033f1505d36e5735", size = 1602607, upload-time = "2025-09-24T13:51:37.757Z" }, + { url = "https://files.pythonhosted.org/packages/9a/f6/f09272a71976dfc138129b8faf435d064a811ae2f708cb147dccdf7aacdb/shapely-2.1.2-cp314-cp314t-win_amd64.whl", hash = "sha256:0036ac886e0923417932c2e6369b6c52e38e0ff5d9120b90eef5cd9a5fc5cae9", size = 1796682, upload-time = "2025-09-24T13:51:39.233Z" }, +] + +[[package]] +name = "shellingham" +version = "1.5.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310, upload-time = "2023-10-24T04:13:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload-time = "2023-10-24T04:13:38.866Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "soupsieve" +version = "2.8.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7b/ae/2d9c981590ed9999a0d91755b47fc74f74de286b0f5cee14c9269041e6c4/soupsieve-2.8.3.tar.gz", hash = "sha256:3267f1eeea4251fb42728b6dfb746edc9acaffc4a45b27e19450b676586e8349", size = 118627, upload-time = "2026-01-20T04:27:02.457Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/2c/1462b1d0a634697ae9e55b3cecdcb64788e8b7d63f54d923fcd0bb140aed/soupsieve-2.8.3-py3-none-any.whl", hash = "sha256:ed64f2ba4eebeab06cc4962affce381647455978ffc1e36bb79a545b91f45a95", size = 37016, upload-time = "2026-01-20T04:27:01.012Z" }, +] + +[[package]] +name = "starlette" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/e3/7c1dc7381d9f8ab7d854328ebfa884e62cb3f3d8549ddfd37c7814f42afa/starlette-1.3.1.tar.gz", hash = "sha256:05d0213193f2fbaae60e2ecb593b4add4262ad4e46536b54abe36f11a71724e0", size = 2703240, upload-time = "2026-06-12T09:23:11.602Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/bb/2799cc2ede3ed41131f8975621e7213dfc7ef4acbbaadfa440f32500c370/starlette-1.3.1-py3-none-any.whl", hash = "sha256:c7372aae11c3c3f26a42df7bd626cec2f47d03483d261d369516a615a53714c6", size = 73632, upload-time = "2026-06-12T09:23:10.017Z" }, +] + +[[package]] +name = "sympy" +version = "1.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mpmath" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/d3/803453b36afefb7c2bb238361cd4ae6125a569b4db67cd9e79846ba2d68c/sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517", size = 7793921, upload-time = "2025-04-27T18:05:01.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5", size = 6299353, upload-time = "2025-04-27T18:04:59.103Z" }, +] + +[[package]] +name = "tabulate" +version = "0.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/46/58/8c37dea7bbf769b20d58e7ace7e5edfe65b849442b00ffcdd56be88697c6/tabulate-0.10.0.tar.gz", hash = "sha256:e2cfde8f79420f6deeffdeda9aaec3b6bc5abce947655d17ac662b126e48a60d", size = 91754, upload-time = "2026-03-04T18:55:34.402Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl", hash = "sha256:f0b0622e567335c8fabaaa659f1b33bcb6ddfe2e496071b743aa113f8774f2d3", size = 39814, upload-time = "2026-03-04T18:55:31.284Z" }, +] + +[[package]] +name = "tifffile" +version = "2025.5.10" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/44/d0/18fed0fc0916578a4463f775b0fbd9c5fed2392152d039df2fb533bfdd5d/tifffile-2025.5.10.tar.gz", hash = "sha256:018335d34283aa3fd8c263bae5c3c2b661ebc45548fde31504016fcae7bf1103", size = 365290, upload-time = "2025-05-10T19:22:34.386Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/06/bd0a6097da704a7a7c34a94cfd771c3ea3c2f405dd214e790d22c93f6be1/tifffile-2025.5.10-py3-none-any.whl", hash = "sha256:e37147123c0542d67bc37ba5cdd67e12ea6fbe6e86c52bee037a9eb6a064e5ad", size = 226533, upload-time = "2025-05-10T19:22:27.279Z" }, +] + +[[package]] +name = "tifffile" +version = "2026.3.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.11.*' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", +] +dependencies = [ + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c5/cb/2f6d79c7576e22c116352a801f4c3c8ace5957e9aced862012430b62e14f/tifffile-2026.3.3.tar.gz", hash = "sha256:d9a1266bed6f2ee1dd0abde2018a38b4f8b2935cb843df381d70ac4eac5458b7", size = 388745, upload-time = "2026-03-03T19:14:38.134Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/e4/e804505f87627cd8cdae9c010c47c4485fd8c1ce31a7dd0ab7fcc4707377/tifffile-2026.3.3-py3-none-any.whl", hash = "sha256:e8be15c94273113d31ecb7aa3a39822189dd11c4967e3cc88c178f1ad2fd1170", size = 243960, upload-time = "2026-03-03T19:14:35.808Z" }, +] + +[[package]] +name = "tifffile" +version = "2026.4.11" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14' and sys_platform == 'win32'", + "python_full_version >= '3.14' and sys_platform == 'emscripten'", + "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32'", + "python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'emscripten'", + "python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32'", +] +dependencies = [ + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d7/4a/e687f5957fead200faad58dbf9c9431a2bbb118040e96f5fb8a55f7ebc50/tifffile-2026.4.11.tar.gz", hash = "sha256:17758ff0c0d4db385792a083ad3ca51fcb0f4d942642f4d8f8bc1287fdcf17bc", size = 394956, upload-time = "2026-04-12T01:57:28.793Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/9f/74f110b4271ded519c7add4341cbabc824de26817ff1c345b3109df9e99c/tifffile-2026.4.11-py3-none-any.whl", hash = "sha256:9b94ffeddb39e97601af646345e8808f885773de01b299e480ed6d3a41509ec9", size = 248227, upload-time = "2026-04-12T01:57:26.969Z" }, +] + +[[package]] +name = "tokenizers" +version = "0.22.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "huggingface-hub" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/73/6f/f80cfef4a312e1fb34baf7d85c72d4411afde10978d4657f8cdd811d3ccc/tokenizers-0.22.2.tar.gz", hash = "sha256:473b83b915e547aa366d1eee11806deaf419e17be16310ac0a14077f1e28f917", size = 372115, upload-time = "2026-01-05T10:45:15.988Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/97/5dbfabf04c7e348e655e907ed27913e03db0923abb5dfdd120d7b25630e1/tokenizers-0.22.2-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:544dd704ae7238755d790de45ba8da072e9af3eea688f698b137915ae959281c", size = 3100275, upload-time = "2026-01-05T10:41:02.158Z" }, + { url = "https://files.pythonhosted.org/packages/2e/47/174dca0502ef88b28f1c9e06b73ce33500eedfac7a7692108aec220464e7/tokenizers-0.22.2-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:1e418a55456beedca4621dbab65a318981467a2b188e982a23e117f115ce5001", size = 2981472, upload-time = "2026-01-05T10:41:00.276Z" }, + { url = "https://files.pythonhosted.org/packages/d6/84/7990e799f1309a8b87af6b948f31edaa12a3ed22d11b352eaf4f4b2e5753/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2249487018adec45d6e3554c71d46eb39fa8ea67156c640f7513eb26f318cec7", size = 3290736, upload-time = "2026-01-05T10:40:32.165Z" }, + { url = "https://files.pythonhosted.org/packages/78/59/09d0d9ba94dcd5f4f1368d4858d24546b4bdc0231c2354aa31d6199f0399/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:25b85325d0815e86e0bac263506dd114578953b7b53d7de09a6485e4a160a7dd", size = 3168835, upload-time = "2026-01-05T10:40:38.847Z" }, + { url = "https://files.pythonhosted.org/packages/47/50/b3ebb4243e7160bda8d34b731e54dd8ab8b133e50775872e7a434e524c28/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfb88f22a209ff7b40a576d5324bf8286b519d7358663db21d6246fb17eea2d5", size = 3521673, upload-time = "2026-01-05T10:40:56.614Z" }, + { url = "https://files.pythonhosted.org/packages/e0/fa/89f4cb9e08df770b57adb96f8cbb7e22695a4cb6c2bd5f0c4f0ebcf33b66/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c774b1276f71e1ef716e5486f21e76333464f47bece56bbd554485982a9e03e", size = 3724818, upload-time = "2026-01-05T10:40:44.507Z" }, + { url = "https://files.pythonhosted.org/packages/64/04/ca2363f0bfbe3b3d36e95bf67e56a4c88c8e3362b658e616d1ac185d47f2/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df6c4265b289083bf710dff49bc51ef252f9d5be33a45ee2bed151114a56207b", size = 3379195, upload-time = "2026-01-05T10:40:51.139Z" }, + { url = "https://files.pythonhosted.org/packages/2e/76/932be4b50ef6ccedf9d3c6639b056a967a86258c6d9200643f01269211ca/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:369cc9fc8cc10cb24143873a0d95438bb8ee257bb80c71989e3ee290e8d72c67", size = 3274982, upload-time = "2026-01-05T10:40:58.331Z" }, + { url = "https://files.pythonhosted.org/packages/1d/28/5f9f5a4cc211b69e89420980e483831bcc29dade307955cc9dc858a40f01/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:29c30b83d8dcd061078b05ae0cb94d3c710555fbb44861139f9f83dcca3dc3e4", size = 9478245, upload-time = "2026-01-05T10:41:04.053Z" }, + { url = "https://files.pythonhosted.org/packages/6c/fb/66e2da4704d6aadebf8cb39f1d6d1957df667ab24cff2326b77cda0dcb85/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:37ae80a28c1d3265bb1f22464c856bd23c02a05bb211e56d0c5301a435be6c1a", size = 9560069, upload-time = "2026-01-05T10:45:10.673Z" }, + { url = "https://files.pythonhosted.org/packages/16/04/fed398b05caa87ce9b1a1bb5166645e38196081b225059a6edaff6440fac/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:791135ee325f2336f498590eb2f11dc5c295232f288e75c99a36c5dbce63088a", size = 9899263, upload-time = "2026-01-05T10:45:12.559Z" }, + { url = "https://files.pythonhosted.org/packages/05/a1/d62dfe7376beaaf1394917e0f8e93ee5f67fea8fcf4107501db35996586b/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:38337540fbbddff8e999d59970f3c6f35a82de10053206a7562f1ea02d046fa5", size = 10033429, upload-time = "2026-01-05T10:45:14.333Z" }, + { url = "https://files.pythonhosted.org/packages/fd/18/a545c4ea42af3df6effd7d13d250ba77a0a86fb20393143bbb9a92e434d4/tokenizers-0.22.2-cp39-abi3-win32.whl", hash = "sha256:a6bf3f88c554a2b653af81f3204491c818ae2ac6fbc09e76ef4773351292bc92", size = 2502363, upload-time = "2026-01-05T10:45:20.593Z" }, + { url = "https://files.pythonhosted.org/packages/65/71/0670843133a43d43070abeb1949abfdef12a86d490bea9cd9e18e37c5ff7/tokenizers-0.22.2-cp39-abi3-win_amd64.whl", hash = "sha256:c9ea31edff2968b44a88f97d784c2f16dc0729b8b143ed004699ebca91f05c48", size = 2747786, upload-time = "2026-01-05T10:45:18.411Z" }, + { url = "https://files.pythonhosted.org/packages/72/f4/0de46cfa12cdcbcd464cc59fde36912af405696f687e53a091fb432f694c/tokenizers-0.22.2-cp39-abi3-win_arm64.whl", hash = "sha256:9ce725d22864a1e965217204946f830c37876eee3b2ba6fc6255e8e903d5fcbc", size = 2612133, upload-time = "2026-01-05T10:45:17.232Z" }, + { url = "https://files.pythonhosted.org/packages/84/04/655b79dbcc9b3ac5f1479f18e931a344af67e5b7d3b251d2dcdcd7558592/tokenizers-0.22.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:753d47ebd4542742ef9261d9da92cd545b2cacbb48349a1225466745bb866ec4", size = 3282301, upload-time = "2026-01-05T10:40:34.858Z" }, + { url = "https://files.pythonhosted.org/packages/46/cd/e4851401f3d8f6f45d8480262ab6a5c8cb9c4302a790a35aa14eeed6d2fd/tokenizers-0.22.2-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e10bf9113d209be7cd046d40fbabbaf3278ff6d18eb4da4c500443185dc1896c", size = 3161308, upload-time = "2026-01-05T10:40:40.737Z" }, + { url = "https://files.pythonhosted.org/packages/6f/6e/55553992a89982cd12d4a66dddb5e02126c58677ea3931efcbe601d419db/tokenizers-0.22.2-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64d94e84f6660764e64e7e0b22baa72f6cd942279fdbb21d46abd70d179f0195", size = 3718964, upload-time = "2026-01-05T10:40:46.56Z" }, + { url = "https://files.pythonhosted.org/packages/59/8c/b1c87148aa15e099243ec9f0cf9d0e970cc2234c3257d558c25a2c5304e6/tokenizers-0.22.2-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f01a9c019878532f98927d2bacb79bbb404b43d3437455522a00a30718cdedb5", size = 3373542, upload-time = "2026-01-05T10:40:52.803Z" }, +] + +[[package]] +name = "tomli" +version = "2.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/22/de/48c59722572767841493b26183a0d1cc411d54fd759c5607c4590b6563a6/tomli-2.4.1.tar.gz", hash = "sha256:7c7e1a961a0b2f2472c1ac5b69affa0ae1132c39adcb67aba98568702b9cc23f", size = 17543, upload-time = "2026-03-25T20:22:03.828Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/11/db3d5885d8528263d8adc260bb2d28ebf1270b96e98f0e0268d32b8d9900/tomli-2.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f8f0fc26ec2cc2b965b7a3b87cd19c5c6b8c5e5f436b984e85f486d652285c30", size = 154704, upload-time = "2026-03-25T20:21:10.473Z" }, + { url = "https://files.pythonhosted.org/packages/6d/f7/675db52c7e46064a9aa928885a9b20f4124ecb9bc2e1ce74c9106648d202/tomli-2.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4ab97e64ccda8756376892c53a72bd1f964e519c77236368527f758fbc36a53a", size = 149454, upload-time = "2026-03-25T20:21:12.036Z" }, + { url = "https://files.pythonhosted.org/packages/61/71/81c50943cf953efa35bce7646caab3cf457a7d8c030b27cfb40d7235f9ee/tomli-2.4.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96481a5786729fd470164b47cdb3e0e58062a496f455ee41b4403be77cb5a076", size = 237561, upload-time = "2026-03-25T20:21:13.098Z" }, + { url = "https://files.pythonhosted.org/packages/48/c1/f41d9cb618acccca7df82aaf682f9b49013c9397212cb9f53219e3abac37/tomli-2.4.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a881ab208c0baf688221f8cecc5401bd291d67e38a1ac884d6736cbcd8247e9", size = 243824, upload-time = "2026-03-25T20:21:14.569Z" }, + { url = "https://files.pythonhosted.org/packages/22/e4/5a816ecdd1f8ca51fb756ef684b90f2780afc52fc67f987e3c61d800a46d/tomli-2.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47149d5bd38761ac8be13a84864bf0b7b70bc051806bc3669ab1cbc56216b23c", size = 242227, upload-time = "2026-03-25T20:21:15.712Z" }, + { url = "https://files.pythonhosted.org/packages/6b/49/2b2a0ef529aa6eec245d25f0c703e020a73955ad7edf73e7f54ddc608aa5/tomli-2.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ec9bfaf3ad2df51ace80688143a6a4ebc09a248f6ff781a9945e51937008fcbc", size = 247859, upload-time = "2026-03-25T20:21:17.001Z" }, + { url = "https://files.pythonhosted.org/packages/83/bd/6c1a630eaca337e1e78c5903104f831bda934c426f9231429396ce3c3467/tomli-2.4.1-cp311-cp311-win32.whl", hash = "sha256:ff2983983d34813c1aeb0fa89091e76c3a22889ee83ab27c5eeb45100560c049", size = 97204, upload-time = "2026-03-25T20:21:18.079Z" }, + { url = "https://files.pythonhosted.org/packages/42/59/71461df1a885647e10b6bb7802d0b8e66480c61f3f43079e0dcd315b3954/tomli-2.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ee18d9ebdb417e384b58fe414e8d6af9f4e7a0ae761519fb50f721de398dd4e", size = 108084, upload-time = "2026-03-25T20:21:18.978Z" }, + { url = "https://files.pythonhosted.org/packages/b8/83/dceca96142499c069475b790e7913b1044c1a4337e700751f48ed723f883/tomli-2.4.1-cp311-cp311-win_arm64.whl", hash = "sha256:c2541745709bad0264b7d4705ad453b76ccd191e64aa6f0fc66b69a293a45ece", size = 95285, upload-time = "2026-03-25T20:21:20.309Z" }, + { url = "https://files.pythonhosted.org/packages/c1/ba/42f134a3fe2b370f555f44b1d72feebb94debcab01676bf918d0cb70e9aa/tomli-2.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c742f741d58a28940ce01d58f0ab2ea3ced8b12402f162f4d534dfe18ba1cd6a", size = 155924, upload-time = "2026-03-25T20:21:21.626Z" }, + { url = "https://files.pythonhosted.org/packages/dc/c7/62d7a17c26487ade21c5422b646110f2162f1fcc95980ef7f63e73c68f14/tomli-2.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7f86fd587c4ed9dd76f318225e7d9b29cfc5a9d43de44e5754db8d1128487085", size = 150018, upload-time = "2026-03-25T20:21:23.002Z" }, + { url = "https://files.pythonhosted.org/packages/5c/05/79d13d7c15f13bdef410bdd49a6485b1c37d28968314eabee452c22a7fda/tomli-2.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ff18e6a727ee0ab0388507b89d1bc6a22b138d1e2fa56d1ad494586d61d2eae9", size = 244948, upload-time = "2026-03-25T20:21:24.04Z" }, + { url = "https://files.pythonhosted.org/packages/10/90/d62ce007a1c80d0b2c93e02cab211224756240884751b94ca72df8a875ca/tomli-2.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:136443dbd7e1dee43c68ac2694fde36b2849865fa258d39bf822c10e8068eac5", size = 253341, upload-time = "2026-03-25T20:21:25.177Z" }, + { url = "https://files.pythonhosted.org/packages/1a/7e/caf6496d60152ad4ed09282c1885cca4eea150bfd007da84aea07bcc0a3e/tomli-2.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5e262d41726bc187e69af7825504c933b6794dc3fbd5945e41a79bb14c31f585", size = 248159, upload-time = "2026-03-25T20:21:26.364Z" }, + { url = "https://files.pythonhosted.org/packages/99/e7/c6f69c3120de34bbd882c6fba7975f3d7a746e9218e56ab46a1bc4b42552/tomli-2.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5cb41aa38891e073ee49d55fbc7839cfdb2bc0e600add13874d048c94aadddd1", size = 253290, upload-time = "2026-03-25T20:21:27.46Z" }, + { url = "https://files.pythonhosted.org/packages/d6/2f/4a3c322f22c5c66c4b836ec58211641a4067364f5dcdd7b974b4c5da300c/tomli-2.4.1-cp312-cp312-win32.whl", hash = "sha256:da25dc3563bff5965356133435b757a795a17b17d01dbc0f42fb32447ddfd917", size = 98141, upload-time = "2026-03-25T20:21:28.492Z" }, + { url = "https://files.pythonhosted.org/packages/24/22/4daacd05391b92c55759d55eaee21e1dfaea86ce5c571f10083360adf534/tomli-2.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:52c8ef851d9a240f11a88c003eacb03c31fc1c9c4ec64a99a0f922b93874fda9", size = 108847, upload-time = "2026-03-25T20:21:29.386Z" }, + { url = "https://files.pythonhosted.org/packages/68/fd/70e768887666ddd9e9f5d85129e84910f2db2796f9096aa02b721a53098d/tomli-2.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:f758f1b9299d059cc3f6546ae2af89670cb1c4d48ea29c3cacc4fe7de3058257", size = 95088, upload-time = "2026-03-25T20:21:30.677Z" }, + { url = "https://files.pythonhosted.org/packages/07/06/b823a7e818c756d9a7123ba2cda7d07bc2dd32835648d1a7b7b7a05d848d/tomli-2.4.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:36d2bd2ad5fb9eaddba5226aa02c8ec3fa4f192631e347b3ed28186d43be6b54", size = 155866, upload-time = "2026-03-25T20:21:31.65Z" }, + { url = "https://files.pythonhosted.org/packages/14/6f/12645cf7f08e1a20c7eb8c297c6f11d31c1b50f316a7e7e1e1de6e2e7b7e/tomli-2.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:eb0dc4e38e6a1fd579e5d50369aa2e10acfc9cace504579b2faabb478e76941a", size = 149887, upload-time = "2026-03-25T20:21:33.028Z" }, + { url = "https://files.pythonhosted.org/packages/5c/e0/90637574e5e7212c09099c67ad349b04ec4d6020324539297b634a0192b0/tomli-2.4.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c7f2c7f2b9ca6bdeef8f0fa897f8e05085923eb091721675170254cbc5b02897", size = 243704, upload-time = "2026-03-25T20:21:34.51Z" }, + { url = "https://files.pythonhosted.org/packages/10/8f/d3ddb16c5a4befdf31a23307f72828686ab2096f068eaf56631e136c1fdd/tomli-2.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f3c6818a1a86dd6dca7ddcaaf76947d5ba31aecc28cb1b67009a5877c9a64f3f", size = 251628, upload-time = "2026-03-25T20:21:36.012Z" }, + { url = "https://files.pythonhosted.org/packages/e3/f1/dbeeb9116715abee2485bf0a12d07a8f31af94d71608c171c45f64c0469d/tomli-2.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d312ef37c91508b0ab2cee7da26ec0b3ed2f03ce12bd87a588d771ae15dcf82d", size = 247180, upload-time = "2026-03-25T20:21:37.136Z" }, + { url = "https://files.pythonhosted.org/packages/d3/74/16336ffd19ed4da28a70959f92f506233bd7cfc2332b20bdb01591e8b1d1/tomli-2.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:51529d40e3ca50046d7606fa99ce3956a617f9b36380da3b7f0dd3dd28e68cb5", size = 251674, upload-time = "2026-03-25T20:21:38.298Z" }, + { url = "https://files.pythonhosted.org/packages/16/f9/229fa3434c590ddf6c0aa9af64d3af4b752540686cace29e6281e3458469/tomli-2.4.1-cp313-cp313-win32.whl", hash = "sha256:2190f2e9dd7508d2a90ded5ed369255980a1bcdd58e52f7fe24b8162bf9fedbd", size = 97976, upload-time = "2026-03-25T20:21:39.316Z" }, + { url = "https://files.pythonhosted.org/packages/6a/1e/71dfd96bcc1c775420cb8befe7a9d35f2e5b1309798f009dca17b7708c1e/tomli-2.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d65a2fbf9d2f8352685bc1364177ee3923d6baf5e7f43ea4959d7d8bc326a36", size = 108755, upload-time = "2026-03-25T20:21:40.248Z" }, + { url = "https://files.pythonhosted.org/packages/83/7a/d34f422a021d62420b78f5c538e5b102f62bea616d1d75a13f0a88acb04a/tomli-2.4.1-cp313-cp313-win_arm64.whl", hash = "sha256:4b605484e43cdc43f0954ddae319fb75f04cc10dd80d830540060ee7cd0243cd", size = 95265, upload-time = "2026-03-25T20:21:41.219Z" }, + { url = "https://files.pythonhosted.org/packages/3c/fb/9a5c8d27dbab540869f7c1f8eb0abb3244189ce780ba9cd73f3770662072/tomli-2.4.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:fd0409a3653af6c147209d267a0e4243f0ae46b011aa978b1080359fddc9b6cf", size = 155726, upload-time = "2026-03-25T20:21:42.23Z" }, + { url = "https://files.pythonhosted.org/packages/62/05/d2f816630cc771ad836af54f5001f47a6f611d2d39535364f148b6a92d6b/tomli-2.4.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:a120733b01c45e9a0c34aeef92bf0cf1d56cfe81ed9d47d562f9ed591a9828ac", size = 149859, upload-time = "2026-03-25T20:21:43.386Z" }, + { url = "https://files.pythonhosted.org/packages/ce/48/66341bdb858ad9bd0ceab5a86f90eddab127cf8b046418009f2125630ecb/tomli-2.4.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:559db847dc486944896521f68d8190be1c9e719fced785720d2216fe7022b662", size = 244713, upload-time = "2026-03-25T20:21:44.474Z" }, + { url = "https://files.pythonhosted.org/packages/df/6d/c5fad00d82b3c7a3ab6189bd4b10e60466f22cfe8a08a9394185c8a8111c/tomli-2.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01f520d4f53ef97964a240a035ec2a869fe1a37dde002b57ebc4417a27ccd853", size = 252084, upload-time = "2026-03-25T20:21:45.62Z" }, + { url = "https://files.pythonhosted.org/packages/00/71/3a69e86f3eafe8c7a59d008d245888051005bd657760e96d5fbfb0b740c2/tomli-2.4.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7f94b27a62cfad8496c8d2513e1a222dd446f095fca8987fceef261225538a15", size = 247973, upload-time = "2026-03-25T20:21:46.937Z" }, + { url = "https://files.pythonhosted.org/packages/67/50/361e986652847fec4bd5e4a0208752fbe64689c603c7ae5ea7cb16b1c0ca/tomli-2.4.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ede3e6487c5ef5d28634ba3f31f989030ad6af71edfb0055cbbd14189ff240ba", size = 256223, upload-time = "2026-03-25T20:21:48.467Z" }, + { url = "https://files.pythonhosted.org/packages/8c/9a/b4173689a9203472e5467217e0154b00e260621caa227b6fa01feab16998/tomli-2.4.1-cp314-cp314-win32.whl", hash = "sha256:3d48a93ee1c9b79c04bb38772ee1b64dcf18ff43085896ea460ca8dec96f35f6", size = 98973, upload-time = "2026-03-25T20:21:49.526Z" }, + { url = "https://files.pythonhosted.org/packages/14/58/640ac93bf230cd27d002462c9af0d837779f8773bc03dee06b5835208214/tomli-2.4.1-cp314-cp314-win_amd64.whl", hash = "sha256:88dceee75c2c63af144e456745e10101eb67361050196b0b6af5d717254dddf7", size = 109082, upload-time = "2026-03-25T20:21:50.506Z" }, + { url = "https://files.pythonhosted.org/packages/d5/2f/702d5e05b227401c1068f0d386d79a589bb12bf64c3d2c72ce0631e3bc49/tomli-2.4.1-cp314-cp314-win_arm64.whl", hash = "sha256:b8c198f8c1805dc42708689ed6864951fd2494f924149d3e4bce7710f8eb5232", size = 96490, upload-time = "2026-03-25T20:21:51.474Z" }, + { url = "https://files.pythonhosted.org/packages/45/4b/b877b05c8ba62927d9865dd980e34a755de541eb65fffba52b4cc495d4d2/tomli-2.4.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:d4d8fe59808a54658fcc0160ecfb1b30f9089906c50b23bcb4c69eddc19ec2b4", size = 164263, upload-time = "2026-03-25T20:21:52.543Z" }, + { url = "https://files.pythonhosted.org/packages/24/79/6ab420d37a270b89f7195dec5448f79400d9e9c1826df982f3f8e97b24fd/tomli-2.4.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7008df2e7655c495dd12d2a4ad038ff878d4ca4b81fccaf82b714e07eae4402c", size = 160736, upload-time = "2026-03-25T20:21:53.674Z" }, + { url = "https://files.pythonhosted.org/packages/02/e0/3630057d8eb170310785723ed5adcdfb7d50cb7e6455f85ba8a3deed642b/tomli-2.4.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1d8591993e228b0c930c4bb0db464bdad97b3289fb981255d6c9a41aedc84b2d", size = 270717, upload-time = "2026-03-25T20:21:55.129Z" }, + { url = "https://files.pythonhosted.org/packages/7a/b4/1613716072e544d1a7891f548d8f9ec6ce2faf42ca65acae01d76ea06bb0/tomli-2.4.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:734e20b57ba95624ecf1841e72b53f6e186355e216e5412de414e3c51e5e3c41", size = 278461, upload-time = "2026-03-25T20:21:56.228Z" }, + { url = "https://files.pythonhosted.org/packages/05/38/30f541baf6a3f6df77b3df16b01ba319221389e2da59427e221ef417ac0c/tomli-2.4.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8a650c2dbafa08d42e51ba0b62740dae4ecb9338eefa093aa5c78ceb546fcd5c", size = 274855, upload-time = "2026-03-25T20:21:57.653Z" }, + { url = "https://files.pythonhosted.org/packages/77/a3/ec9dd4fd2c38e98de34223b995a3b34813e6bdadf86c75314c928350ed14/tomli-2.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:504aa796fe0569bb43171066009ead363de03675276d2d121ac1a4572397870f", size = 283144, upload-time = "2026-03-25T20:21:59.089Z" }, + { url = "https://files.pythonhosted.org/packages/ef/be/605a6261cac79fba2ec0c9827e986e00323a1945700969b8ee0b30d85453/tomli-2.4.1-cp314-cp314t-win32.whl", hash = "sha256:b1d22e6e9387bf4739fbe23bfa80e93f6b0373a7f1b96c6227c32bef95a4d7a8", size = 108683, upload-time = "2026-03-25T20:22:00.214Z" }, + { url = "https://files.pythonhosted.org/packages/12/64/da524626d3b9cc40c168a13da8335fe1c51be12c0a63685cc6db7308daae/tomli-2.4.1-cp314-cp314t-win_amd64.whl", hash = "sha256:2c1c351919aca02858f740c6d33adea0c5deea37f9ecca1cc1ef9e884a619d26", size = 121196, upload-time = "2026-03-25T20:22:01.169Z" }, + { url = "https://files.pythonhosted.org/packages/5a/cd/e80b62269fc78fc36c9af5a6b89c835baa8af28ff5ad28c7028d60860320/tomli-2.4.1-cp314-cp314t-win_arm64.whl", hash = "sha256:eab21f45c7f66c13f2a9e0e1535309cee140182a9cdae1e041d02e47291e8396", size = 100393, upload-time = "2026-03-25T20:22:02.137Z" }, + { url = "https://files.pythonhosted.org/packages/7b/61/cceae43728b7de99d9b847560c262873a1f6c98202171fd5ed62640b494b/tomli-2.4.1-py3-none-any.whl", hash = "sha256:0d85819802132122da43cb86656f8d1f8c6587d54ae7dcaf30e90533028b49fe", size = 14583, upload-time = "2026-03-25T20:22:03.012Z" }, +] + +[[package]] +name = "torch" +version = "2.12.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cuda-bindings", marker = "sys_platform == 'linux'" }, + { name = "cuda-toolkit", extra = ["cudart", "cufft", "cufile", "cupti", "curand", "cusolver", "cusparse", "nvjitlink", "nvrtc", "nvtx"], marker = "sys_platform == 'linux'" }, + { name = "filelock" }, + { name = "fsspec" }, + { name = "jinja2" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "networkx", version = "3.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "nvidia-cublas", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cudnn-cu13", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cusparselt-cu13", marker = "sys_platform == 'linux'" }, + { name = "nvidia-nccl-cu13", marker = "sys_platform == 'linux'" }, + { name = "nvidia-nvshmem-cu13", marker = "sys_platform == 'linux'" }, + { name = "setuptools" }, + { name = "sympy" }, + { name = "triton", marker = "sys_platform == 'linux'" }, + { name = "typing-extensions" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/db/ed/ff0c4f8cef63977a646dc80e40c05cae873f4097b12dc87e1cd7e1cecf42/torch-2.12.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:ec56e82be6a8b0c036771a77f7d32ad3c299770571af9815b3dafe61434389d5", size = 87967927, upload-time = "2026-06-17T21:08:43.16Z" }, + { url = "https://files.pythonhosted.org/packages/85/1b/c8ecf60c9dba535f9ea341c359c600c0bd877a7ca14b3296f13316321847/torch-2.12.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:42cd7339bf266f14944710e8274be63e7e012bb937834a8d85a8327a9860eba6", size = 426366829, upload-time = "2026-06-17T21:07:18.574Z" }, + { url = "https://files.pythonhosted.org/packages/ab/d6/73d4a3f27e00526e98086f3a64ab609af1345cca62367749fbc3c8e4b83c/torch-2.12.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a7817f0f89a796d9de239d06f69faf5d7e19a6a5db6710a5ead777c912f9f50a", size = 532144834, upload-time = "2026-06-17T21:08:00.633Z" }, + { url = "https://files.pythonhosted.org/packages/e3/51/4010c8fa6f9d1f42c054a321970ca95ec58e4e4494f5b53a34c3f3c9e310/torch-2.12.1-cp310-cp310-win_amd64.whl", hash = "sha256:2af3d9cc866e0a15ae7635ff0a9c61d6624a353ad657f5bcd8d86c26cdc64693", size = 122949863, upload-time = "2026-06-17T21:08:39.016Z" }, + { url = "https://files.pythonhosted.org/packages/59/38/7028d3be540f1dcdf41660a2b01d0c51d2cb73915fe370d84e4d277a6d47/torch-2.12.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:ef81f503912effea2ce3d9b12a2e3a6ed488943e91271c90c7a829f60baf6aa2", size = 87975425, upload-time = "2026-06-17T21:08:34.094Z" }, + { url = "https://files.pythonhosted.org/packages/5a/e3/750b3e3548635ceac03ba255daa26dbc7ed66ca3484dc4b4d955ab7f4501/torch-2.12.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:107df6888624bdea41508f9aeb6149d9333c737a5530ceecb56c904e811369ae", size = 426379894, upload-time = "2026-06-17T21:06:55.077Z" }, + { url = "https://files.pythonhosted.org/packages/dc/ca/ed24783da629ff3e640ba3f70a7639e9045d3d88b93ee6bc47b8a28a1f2c/torch-2.12.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:6e29e7e74d05bda7d955c75e99459f878ebd970ef851b4057edbd3b34a5eb4a3", size = 532169264, upload-time = "2026-06-17T21:08:17.65Z" }, + { url = "https://files.pythonhosted.org/packages/46/61/c63f0158446f3a98ea672b004d761b848911eba567ea4a624c7db5aadc04/torch-2.12.1-cp311-cp311-win_amd64.whl", hash = "sha256:a513506cfda3c1c78dabeb6574c1597538c0254b3d39af174dde35d8177f4ce3", size = 122953086, upload-time = "2026-06-17T21:08:27.69Z" }, + { url = "https://files.pythonhosted.org/packages/f0/54/efb7ebca77970012b0cc21687a55d70eb2ba514b2c2b8e18d9fb1222f3be/torch-2.12.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:d2dd0f2c5f7ccbddaf34cade0deaf476808368f902b9cdb7f36a2ab42301bc0e", size = 87991951, upload-time = "2026-06-17T21:07:49.309Z" }, + { url = "https://files.pythonhosted.org/packages/1e/00/4210d76ca7424981f04033ebe7e48816ab83287a62538747a58825db770c/torch-2.12.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:2de4e19b88a481482c6c75291f2d6a52eda3ce51f311b29aa9b68499c830c07c", size = 426382721, upload-time = "2026-06-17T21:06:41.842Z" }, + { url = "https://files.pythonhosted.org/packages/76/1f/bc9f5a5aa569307076365f25afcebacb22e9c754b1bcfbaaa146627c7fda/torch-2.12.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:649e4ced014ba646f76f8cb9c9726735a6323eb321b7919f942790a923f90921", size = 532261322, upload-time = "2026-06-17T21:06:06.673Z" }, + { url = "https://files.pythonhosted.org/packages/9e/49/c549461daa008159d006a76a991fbc2f26fa8bac27a4030c858463dcb20f/torch-2.12.1-cp312-cp312-win_amd64.whl", hash = "sha256:e86550597877fb272ddc52db2f85b82cb601ea7bd932576a0340152cae2200b3", size = 122988095, upload-time = "2026-06-17T21:07:44.9Z" }, + { url = "https://files.pythonhosted.org/packages/ff/4a/0300261818e1560d72cc160ac826005507e8b7ca0a35788b591436d05b4a/torch-2.12.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:c75e93173c700bccd6bfcc4a9d19ce242ab6dacd1f1781483027a16239b9e650", size = 87992358, upload-time = "2026-06-17T21:07:40.299Z" }, + { url = "https://files.pythonhosted.org/packages/30/a7/874a5ca05e8f159211dca7921060f7057acc1adb26431e119fd150623efc/torch-2.12.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:fcb61ccd20784b62bdd78ec84238a5cfb383b4994902e03bac95505ab360884c", size = 426386134, upload-time = "2026-06-17T21:07:31.481Z" }, + { url = "https://files.pythonhosted.org/packages/e1/75/20bb8fe9c1ad6538cce8cd0391b51927ae5af0b17ed1eab44b8824465dc1/torch-2.12.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:f4afc8083dff08719edbea346644476e3cec0cf40ebe256be0ee5d5b7c7e8c0d", size = 532268019, upload-time = "2026-06-17T21:05:37.925Z" }, + { url = "https://files.pythonhosted.org/packages/d1/fa/824ddb662af55b2eabc0dbb7b57c7c0b1bcd93693754a2b8509ec4d16490/torch-2.12.1-cp313-cp313-win_amd64.whl", hash = "sha256:f92609e3b3ce72f25e2eb780d043ced2480c1a86c47c852604fc7a9108648386", size = 122987777, upload-time = "2026-06-17T21:07:09.49Z" }, + { url = "https://files.pythonhosted.org/packages/63/b7/1b49fe7086ea36839cc80abc43174c43d0ab6f676c0891c871c162f44fe3/torch-2.12.1-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:e9b6f7d2dd66ea87a3ae620069d31335d594c06effb1a383bdd21cfe61e44ece", size = 88010025, upload-time = "2026-06-17T21:07:03.934Z" }, + { url = "https://files.pythonhosted.org/packages/d7/06/5b44063a6545036dcc680d2d303b137d9176cfb2cc1e1863e3ef94abeb52/torch-2.12.1-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:7973ccd3d2cd35c74449213f7bded199bec6c6247e705cbeda7407af79703d91", size = 426392891, upload-time = "2026-06-17T21:05:52.261Z" }, + { url = "https://files.pythonhosted.org/packages/f8/dd/c9ce9a4b0eb3c5bb92d9ea56766e2c22559f0b45171149188494edcce80f/torch-2.12.1-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:c64ac4aac16be5e296dcd912305605804b203333c690bf98c55bc09494ee92ad", size = 532272494, upload-time = "2026-06-17T21:06:22.72Z" }, + { url = "https://files.pythonhosted.org/packages/21/7c/f3a601fc1b1f663ff269bfe553654e638651939aa6563e8daa7167c33098/torch-2.12.1-cp314-cp314-win_amd64.whl", hash = "sha256:f6dc4caf7eb4adb38a2d9f536b51db56310fdd1254e69a2d96767e1367c892b3", size = 122987254, upload-time = "2026-06-17T21:06:33.199Z" }, + { url = "https://files.pythonhosted.org/packages/e6/8c/b8087556cf81ddd808dbeb34afb8396d7ae7a1694ab489f08b1a0004e7d0/torch-2.12.1-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:2afbb2bdaa8a95040e733f05492ddf133c3967c9b7ce0abd218d704b6cab437d", size = 88303173, upload-time = "2026-06-17T21:05:06.603Z" }, + { url = "https://files.pythonhosted.org/packages/4a/07/fe09d1699fbed2afa10ebc692ff2b99d113f2605b6748cea633989e2789a/torch-2.12.1-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:97eba061fcb042fed191400b15568990073d67eaacaa6ee9b7ca01dd8b790fe9", size = 426404009, upload-time = "2026-06-17T21:04:57.557Z" }, + { url = "https://files.pythonhosted.org/packages/2e/f7/0ce4f6c1962c60ded7270e0a9eb560fb615c92b89d332cf9e3dff36d5ecc/torch-2.12.1-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:3867b861391701012adb2df93360efb88494dca245a185e3bb7624495cfe3f33", size = 532184292, upload-time = "2026-06-17T21:05:17.526Z" }, + { url = "https://files.pythonhosted.org/packages/70/db/e384c12aba30320ca92aaaf557456cbcb26f04b4df307728bb8f019f5000/torch-2.12.1-cp314-cp314t-win_amd64.whl", hash = "sha256:dd15595f8fc764cffde8c6361a3beb6ef69a028c851b1b3e70e077f615980d4e", size = 123231142, upload-time = "2026-06-17T21:05:27.061Z" }, +] + +[[package]] +name = "torchvision" +version = "0.27.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "pillow" }, + { name = "torch" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/c9/10/8e3e5a70dded1f86368bc987d93fa0436e73a79060aead75a8783b040ebd/torchvision-0.27.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:68ba63b48af92f06db995adb23d8411993dba1dee705a4e92411b83a00930b7f", size = 1852109, upload-time = "2026-06-17T21:09:34.966Z" }, + { url = "https://files.pythonhosted.org/packages/4c/32/1a3eddb92e6d8ae69f38a20c60b7788c67c6ef32d6d4d1dc5d5fbd1f109c/torchvision-0.27.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:aabe47970a00a3c0574360bfbd4ca3d6162a51f3fa1283a29cd528018dd13088", size = 7829870, upload-time = "2026-06-17T21:09:18.695Z" }, + { url = "https://files.pythonhosted.org/packages/13/1c/6b45992279b4177d26b5b851f554ee5d99115e7bd02eeb99459ad41027bf/torchvision-0.27.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a9ea9a8abdd23466a5f1c09523cb27dc61e36c16fc7e5e88b337ca54f530b1ef", size = 7658441, upload-time = "2026-06-17T21:09:23.803Z" }, + { url = "https://files.pythonhosted.org/packages/7e/6b/09d2d6f04c3465a346202624a09cfcfb954f2b334d19de886a63056f86f9/torchvision-0.27.1-cp310-cp310-win_amd64.whl", hash = "sha256:d0b00ae58379e6c936ce4816b1b8b94cefb1bd1c2a88eccbadfc993de7a430ca", size = 3493503, upload-time = "2026-06-17T21:09:28.426Z" }, + { url = "https://files.pythonhosted.org/packages/64/46/bc0ebd93282aeedc1759f054a252c6fadf14b42a0535db3233c85cce4ae5/torchvision-0.27.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:ad8743a9c12c8c124ad0a1491e54c3ca0c749e91e374e3d92136060b22c9e0f4", size = 1852118, upload-time = "2026-06-17T21:09:32.448Z" }, + { url = "https://files.pythonhosted.org/packages/b2/00/752adc57b6aa8bb833f5b0672acb9538aa5535d64998b9d8dd48ee51fa80/torchvision-0.27.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:a726707e4cbe438fcc507d787af7acf6bca52de30bf4b03579f1dfc0675da829", size = 7831256, upload-time = "2026-06-17T21:09:26.767Z" }, + { url = "https://files.pythonhosted.org/packages/fa/8a/c474fb27faba02e84dc40e0ac9ea1aa828d6d3557a378f7d0a22468bb2a3/torchvision-0.27.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a1d6a123009af59ad288459f579f67a65cbe8f59372dc7b97e41bc01a6a9b767", size = 7659995, upload-time = "2026-06-17T21:09:25.325Z" }, + { url = "https://files.pythonhosted.org/packages/eb/7c/e254f8e242a921adc2cc62c11674fa8a16d33e0a1b6c6f5436cb91628ee7/torchvision-0.27.1-cp311-cp311-win_amd64.whl", hash = "sha256:f3b57a984283896f15c9698562418282f828332886c77315bf269936e6ba0280", size = 3807497, upload-time = "2026-06-17T21:09:31.234Z" }, + { url = "https://files.pythonhosted.org/packages/88/82/2e8fdc19e4f0bbe31d403a55d78318bcea4afcd3083e1e4700ef61ebb893/torchvision-0.27.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:448abfc3baba984da4577f737209e445da6be93e3b5f4799d90162bf61e3f485", size = 1852105, upload-time = "2026-06-17T21:09:33.695Z" }, + { url = "https://files.pythonhosted.org/packages/43/42/103fa8f9366cfd1329fe449d6b1a25a640c0c17862ed48f21c4af94af322/torchvision-0.27.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:9edfb5a549fc2f30ccadb24eca907901e92e426c91a59316be6703a9360e5098", size = 7830902, upload-time = "2026-06-17T21:09:29.739Z" }, + { url = "https://files.pythonhosted.org/packages/97/70/fa6052a42110a3657fc94073648da6171220469f4bf9f27e6a0b9378075c/torchvision-0.27.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ae3d49e57c4abc8eafc1a1971f80fc4948a6268fa69340737ca4466936def080", size = 7664211, upload-time = "2026-06-17T21:09:17.206Z" }, + { url = "https://files.pythonhosted.org/packages/d0/95/27aca854da7e536a339f46bab1ef67823ac2ac97c59ab2b3203b373d46cf/torchvision-0.27.1-cp312-cp312-win_amd64.whl", hash = "sha256:0b6e3aa98b7433506bbce1d0d05cb13ec787fc6eb8c5fbd998b26ce05f047543", size = 4079076, upload-time = "2026-06-17T21:09:15.907Z" }, + { url = "https://files.pythonhosted.org/packages/32/bb/b21e0f598ca191bb2a9e9fda2fee37c06ad113313b43c6769dbefa0e921d/torchvision-0.27.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:d60311a6d08df905f9656a3a312f0a8f55f0d46321bc737bad30a8dec9644309", size = 1852110, upload-time = "2026-06-17T21:09:22.577Z" }, + { url = "https://files.pythonhosted.org/packages/2f/90/d61171daa5d6cd5f9315f84f9ef947b047a9fdf283d53241327045a8dd6d/torchvision-0.27.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:08aa33bc8e062cca32aefa90ac714916c5a855cbe1ab4c6148fc0453eb40ca5a", size = 7789476, upload-time = "2026-06-17T21:09:13.105Z" }, + { url = "https://files.pythonhosted.org/packages/b8/dc/b21d7801562c23a770e7037989814582f22ca4db479204293561de4b62e8/torchvision-0.27.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:916448be4b19676677b0dbf47d08f68b7955ea0abec7fc79340c31e217a824ba", size = 7664256, upload-time = "2026-06-17T21:09:07.549Z" }, + { url = "https://files.pythonhosted.org/packages/b9/b3/4386976ff77eda55f0aed504a288564f3ff8d170b6db49ee22e172eddfac/torchvision-0.27.1-cp313-cp313-win_amd64.whl", hash = "sha256:18bc906235bfa901c135acd239f05b8c8ab90d502830cf1ef2cba3301e1f8a23", size = 4150710, upload-time = "2026-06-17T21:09:14.457Z" }, + { url = "https://files.pythonhosted.org/packages/ff/74/1d237c61f665bf46d02e15f67c9d40be42b1b634f87164b9cefd257450e7/torchvision-0.27.1-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:9f5ef59ad60e695796eca6b64e97cb9b21b9d5463cac5ac0ef86cfb72b6e5db9", size = 1852112, upload-time = "2026-06-17T21:09:21.445Z" }, + { url = "https://files.pythonhosted.org/packages/24/84/f0d772e7ed85891f084755bd5d7f6f7fd279992a02652c653c1c8429dd84/torchvision-0.27.1-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:ab2f8047c2da5bf6742fec6da86840e5feaeb0cea76930d0536f3520df31e166", size = 7789751, upload-time = "2026-06-17T21:09:11.51Z" }, + { url = "https://files.pythonhosted.org/packages/76/68/3febd41b6eef453a83fb7a0178446334fbb0405eb4b0c40b00efaf99a2dc/torchvision-0.27.1-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:b44ef28ad1963f8cba5bf82f3564c454c74be300df9f79efa43f773312d17d6c", size = 7664350, upload-time = "2026-06-17T21:09:04.486Z" }, + { url = "https://files.pythonhosted.org/packages/52/49/a23e199faf29e42a90f7d6b76437ade5d17e3185da3c64d368973ba8243e/torchvision-0.27.1-cp314-cp314-win_amd64.whl", hash = "sha256:b3e9bc71854fddbf94ddb69ed8d88983945f3f28f78ee104214b0088669af66a", size = 4177297, upload-time = "2026-06-17T21:09:10.273Z" }, + { url = "https://files.pythonhosted.org/packages/ba/48/b3240eaf0fe3676dcf677ce8930ef477fe77d7f69ebe58ca8d0941384952/torchvision-0.27.1-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:c2fd9902f23b56b6ac667213171672fb6c89287ff011918b04af053852a2c4eb", size = 1852118, upload-time = "2026-06-17T21:09:20.223Z" }, + { url = "https://files.pythonhosted.org/packages/73/01/6c8f3158994a9e5bb0c7b1bacc361d60e015ad79487af88fa4d7ce72c2b6/torchvision-0.27.1-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:8abb6d5cacd56486ca2240e5580750e53ac559412e472ea6a3cee83231a77ca7", size = 7791242, upload-time = "2026-06-17T21:09:02.062Z" }, + { url = "https://files.pythonhosted.org/packages/1b/e6/f66733fc411a9ce070c0d899c1ae562ff11654a0bc708511e23efe9d6872/torchvision-0.27.1-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:d11da1ce8a5cc7fc527f2d5e0fe25efba93687897fe9339382b593910b1d1c6e", size = 7664934, upload-time = "2026-06-17T21:09:06.221Z" }, + { url = "https://files.pythonhosted.org/packages/90/aa/d6179812ec52b70a7a8f5e99fe7937895d28c535106df1ca0d03f5f51425/torchvision-0.27.1-cp314-cp314t-win_amd64.whl", hash = "sha256:12deaee20d0d9dec6302025d3f93354266befeb692f5c50bca0137b395598b9e", size = 4284412, upload-time = "2026-06-17T21:09:08.989Z" }, +] + +[[package]] +name = "tqdm" +version = "4.67.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/09/a9/6ba95a270c6f1fbcd8dac228323f2777d886cb206987444e4bce66338dd4/tqdm-4.67.3.tar.gz", hash = "sha256:7d825f03f89244ef73f1d4ce193cb1774a8179fd96f31d7e1dcde62092b960bb", size = 169598, upload-time = "2026-02-03T17:35:53.048Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/16/e1/3079a9ff9b8e11b846c6ac5c8b5bfb7ff225eee721825310c91b3b50304f/tqdm-4.67.3-py3-none-any.whl", hash = "sha256:ee1e4c0e59148062281c49d80b25b67771a127c85fc9676d3be5f243206826bf", size = 78374, upload-time = "2026-02-03T17:35:50.982Z" }, +] + +[[package]] +name = "transformers" +version = "5.6.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "huggingface-hub" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "packaging" }, + { name = "pyyaml" }, + { name = "regex" }, + { name = "safetensors" }, + { name = "tokenizers" }, + { name = "tqdm" }, + { name = "typer" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a4/e9/c6c80a07690142a7d05444271f47b9f3c8aac7dea01d52e1137ee480ad78/transformers-5.6.2.tar.gz", hash = "sha256:e657134c3e5a6bc00a3c35f4e2674bb51adfcd89898495b788a18552bac2b91a", size = 8311867, upload-time = "2026-04-23T18:33:29.332Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/95/0b0218149b0d6f14df35f5b8f676fa83df4f19ed253c3cc447107ef86eca/transformers-5.6.2-py3-none-any.whl", hash = "sha256:f8d3a1bb96778fed9b8aabfd0dd6e19843e4b0f2bb6b59f32b8a92051b0f348f", size = 10364898, upload-time = "2026-04-23T18:33:26.081Z" }, +] + +[[package]] +name = "tree-sitter" +version = "0.25.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/66/7c/0350cfc47faadc0d3cf7d8237a4e34032b3014ddf4a12ded9933e1648b55/tree-sitter-0.25.2.tar.gz", hash = "sha256:fe43c158555da46723b28b52e058ad444195afd1db3ca7720c59a254544e9c20", size = 177961, upload-time = "2025-09-25T17:37:59.751Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/d4/f7ffb855cb039b7568aba4911fbe42e4c39c0e4398387c8e0d8251489992/tree_sitter-0.25.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72a510931c3c25f134aac2daf4eb4feca99ffe37a35896d7150e50ac3eee06c7", size = 146749, upload-time = "2025-09-25T17:37:16.475Z" }, + { url = "https://files.pythonhosted.org/packages/9a/58/f8a107f9f89700c0ab2930f1315e63bdedccbb5fd1b10fcbc5ebadd54ac8/tree_sitter-0.25.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:44488e0e78146f87baaa009736886516779253d6d6bac3ef636ede72bc6a8234", size = 137766, upload-time = "2025-09-25T17:37:18.138Z" }, + { url = "https://files.pythonhosted.org/packages/19/fb/357158d39f01699faea466e8fd5a849f5a30252c68414bddc20357a9ac79/tree_sitter-0.25.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c2f8e7d6b2f8489d4a9885e3adcaef4bc5ff0a275acd990f120e29c4ab3395c5", size = 599809, upload-time = "2025-09-25T17:37:19.169Z" }, + { url = "https://files.pythonhosted.org/packages/c5/a4/68ae301626f2393a62119481cb660eb93504a524fc741a6f1528a4568cf6/tree_sitter-0.25.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20b570690f87f1da424cd690e51cc56728d21d63f4abd4b326d382a30353acc7", size = 627676, upload-time = "2025-09-25T17:37:20.715Z" }, + { url = "https://files.pythonhosted.org/packages/69/fe/4c1bef37db5ca8b17ca0b3070f2dff509468a50b3af18f17665adcab42b9/tree_sitter-0.25.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:a0ec41b895da717bc218a42a3a7a0bfcfe9a213d7afaa4255353901e0e21f696", size = 624281, upload-time = "2025-09-25T17:37:21.823Z" }, + { url = "https://files.pythonhosted.org/packages/d4/30/3283cb7fa251cae2a0bf8661658021a789810db3ab1b0569482d4a3671fd/tree_sitter-0.25.2-cp310-cp310-win_amd64.whl", hash = "sha256:7712335855b2307a21ae86efe949c76be36c6068d76df34faa27ce9ee40ff444", size = 127295, upload-time = "2025-09-25T17:37:22.977Z" }, + { url = "https://files.pythonhosted.org/packages/88/90/ceb05e6de281aebe82b68662890619580d4ffe09283ebd2ceabcf5df7b4a/tree_sitter-0.25.2-cp310-cp310-win_arm64.whl", hash = "sha256:a925364eb7fbb9cdce55a9868f7525a1905af512a559303bd54ef468fd88cb37", size = 113991, upload-time = "2025-09-25T17:37:23.854Z" }, + { url = "https://files.pythonhosted.org/packages/7c/22/88a1e00b906d26fa8a075dd19c6c3116997cb884bf1b3c023deb065a344d/tree_sitter-0.25.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b8ca72d841215b6573ed0655b3a5cd1133f9b69a6fa561aecad40dca9029d75b", size = 146752, upload-time = "2025-09-25T17:37:24.775Z" }, + { url = "https://files.pythonhosted.org/packages/57/1c/22cc14f3910017b7a76d7358df5cd315a84fe0c7f6f7b443b49db2e2790d/tree_sitter-0.25.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cc0351cfe5022cec5a77645f647f92a936b38850346ed3f6d6babfbeeeca4d26", size = 137765, upload-time = "2025-09-25T17:37:26.103Z" }, + { url = "https://files.pythonhosted.org/packages/1c/0c/d0de46ded7d5b34631e0f630d9866dab22d3183195bf0f3b81de406d6622/tree_sitter-0.25.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1799609636c0193e16c38f366bda5af15b1ce476df79ddaae7dd274df9e44266", size = 604643, upload-time = "2025-09-25T17:37:27.398Z" }, + { url = "https://files.pythonhosted.org/packages/34/38/b735a58c1c2f60a168a678ca27b4c1a9df725d0bf2d1a8a1c571c033111e/tree_sitter-0.25.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3e65ae456ad0d210ee71a89ee112ac7e72e6c2e5aac1b95846ecc7afa68a194c", size = 632229, upload-time = "2025-09-25T17:37:28.463Z" }, + { url = "https://files.pythonhosted.org/packages/32/f6/cda1e1e6cbff5e28d8433578e2556d7ba0b0209d95a796128155b97e7693/tree_sitter-0.25.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:49ee3c348caa459244ec437ccc7ff3831f35977d143f65311572b8ba0a5f265f", size = 629861, upload-time = "2025-09-25T17:37:29.593Z" }, + { url = "https://files.pythonhosted.org/packages/f9/19/427e5943b276a0dd74c2a1f1d7a7393443f13d1ee47dedb3f8127903c080/tree_sitter-0.25.2-cp311-cp311-win_amd64.whl", hash = "sha256:56ac6602c7d09c2c507c55e58dc7026b8988e0475bd0002f8a386cce5e8e8adc", size = 127304, upload-time = "2025-09-25T17:37:30.549Z" }, + { url = "https://files.pythonhosted.org/packages/eb/d9/eef856dc15f784d85d1397a17f3ee0f82df7778efce9e1961203abfe376a/tree_sitter-0.25.2-cp311-cp311-win_arm64.whl", hash = "sha256:b3d11a3a3ac89bb8a2543d75597f905a9926f9c806f40fcca8242922d1cc6ad5", size = 113990, upload-time = "2025-09-25T17:37:31.852Z" }, + { url = "https://files.pythonhosted.org/packages/3c/9e/20c2a00a862f1c2897a436b17edb774e831b22218083b459d0d081c9db33/tree_sitter-0.25.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ddabfff809ffc983fc9963455ba1cecc90295803e06e140a4c83e94c1fa3d960", size = 146941, upload-time = "2025-09-25T17:37:34.813Z" }, + { url = "https://files.pythonhosted.org/packages/ef/04/8512e2062e652a1016e840ce36ba1cc33258b0dcc4e500d8089b4054afec/tree_sitter-0.25.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c0c0ab5f94938a23fe81928a21cc0fac44143133ccc4eb7eeb1b92f84748331c", size = 137699, upload-time = "2025-09-25T17:37:36.349Z" }, + { url = "https://files.pythonhosted.org/packages/47/8a/d48c0414db19307b0fb3bb10d76a3a0cbe275bb293f145ee7fba2abd668e/tree_sitter-0.25.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dd12d80d91d4114ca097626eb82714618dcdfacd6a5e0955216c6485c350ef99", size = 607125, upload-time = "2025-09-25T17:37:37.725Z" }, + { url = "https://files.pythonhosted.org/packages/39/d1/b95f545e9fc5001b8a78636ef942a4e4e536580caa6a99e73dd0a02e87aa/tree_sitter-0.25.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b43a9e4c89d4d0839de27cd4d6902d33396de700e9ff4c5ab7631f277a85ead9", size = 635418, upload-time = "2025-09-25T17:37:38.922Z" }, + { url = "https://files.pythonhosted.org/packages/de/4d/b734bde3fb6f3513a010fa91f1f2875442cdc0382d6a949005cd84563d8f/tree_sitter-0.25.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fbb1706407c0e451c4f8cc016fec27d72d4b211fdd3173320b1ada7a6c74c3ac", size = 631250, upload-time = "2025-09-25T17:37:40.039Z" }, + { url = "https://files.pythonhosted.org/packages/46/f2/5f654994f36d10c64d50a192239599fcae46677491c8dd53e7579c35a3e3/tree_sitter-0.25.2-cp312-cp312-win_amd64.whl", hash = "sha256:6d0302550bbe4620a5dc7649517c4409d74ef18558276ce758419cf09e578897", size = 127156, upload-time = "2025-09-25T17:37:41.132Z" }, + { url = "https://files.pythonhosted.org/packages/67/23/148c468d410efcf0a9535272d81c258d840c27b34781d625f1f627e2e27d/tree_sitter-0.25.2-cp312-cp312-win_arm64.whl", hash = "sha256:0c8b6682cac77e37cfe5cf7ec388844957f48b7bd8d6321d0ca2d852994e10d5", size = 113984, upload-time = "2025-09-25T17:37:42.074Z" }, + { url = "https://files.pythonhosted.org/packages/8c/67/67492014ce32729b63d7ef318a19f9cfedd855d677de5773476caf771e96/tree_sitter-0.25.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0628671f0de69bb279558ef6b640bcfc97864fe0026d840f872728a86cd6b6cd", size = 146926, upload-time = "2025-09-25T17:37:43.041Z" }, + { url = "https://files.pythonhosted.org/packages/4e/9c/a278b15e6b263e86c5e301c82a60923fa7c59d44f78d7a110a89a413e640/tree_sitter-0.25.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f5ddcd3e291a749b62521f71fc953f66f5fd9743973fd6dd962b092773569601", size = 137712, upload-time = "2025-09-25T17:37:44.039Z" }, + { url = "https://files.pythonhosted.org/packages/54/9a/423bba15d2bf6473ba67846ba5244b988cd97a4b1ea2b146822162256794/tree_sitter-0.25.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bd88fbb0f6c3a0f28f0a68d72df88e9755cf5215bae146f5a1bdc8362b772053", size = 607873, upload-time = "2025-09-25T17:37:45.477Z" }, + { url = "https://files.pythonhosted.org/packages/ed/4c/b430d2cb43f8badfb3a3fa9d6cd7c8247698187b5674008c9d67b2a90c8e/tree_sitter-0.25.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b878e296e63661c8e124177cc3084b041ba3f5936b43076d57c487822426f614", size = 636313, upload-time = "2025-09-25T17:37:46.68Z" }, + { url = "https://files.pythonhosted.org/packages/9d/27/5f97098dbba807331d666a0997662e82d066e84b17d92efab575d283822f/tree_sitter-0.25.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d77605e0d353ba3fe5627e5490f0fbfe44141bafa4478d88ef7954a61a848dae", size = 631370, upload-time = "2025-09-25T17:37:47.993Z" }, + { url = "https://files.pythonhosted.org/packages/d4/3c/87caaed663fabc35e18dc704cd0e9800a0ee2f22bd18b9cbe7c10799895d/tree_sitter-0.25.2-cp313-cp313-win_amd64.whl", hash = "sha256:463c032bd02052d934daa5f45d183e0521ceb783c2548501cf034b0beba92c9b", size = 127157, upload-time = "2025-09-25T17:37:48.967Z" }, + { url = "https://files.pythonhosted.org/packages/d5/23/f8467b408b7988aff4ea40946a4bd1a2c1a73d17156a9d039bbaff1e2ceb/tree_sitter-0.25.2-cp313-cp313-win_arm64.whl", hash = "sha256:b3f63a1796886249bd22c559a5944d64d05d43f2be72961624278eff0dcc5cb8", size = 113975, upload-time = "2025-09-25T17:37:49.922Z" }, + { url = "https://files.pythonhosted.org/packages/07/e3/d9526ba71dfbbe4eba5e51d89432b4b333a49a1e70712aa5590cd22fc74f/tree_sitter-0.25.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:65d3c931013ea798b502782acab986bbf47ba2c452610ab0776cf4a8ef150fc0", size = 146776, upload-time = "2025-09-25T17:37:50.898Z" }, + { url = "https://files.pythonhosted.org/packages/42/97/4bd4ad97f85a23011dd8a535534bb1035c4e0bac1234d58f438e15cff51f/tree_sitter-0.25.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:bda059af9d621918efb813b22fb06b3fe00c3e94079c6143fcb2c565eb44cb87", size = 137732, upload-time = "2025-09-25T17:37:51.877Z" }, + { url = "https://files.pythonhosted.org/packages/b6/19/1e968aa0b1b567988ed522f836498a6a9529a74aab15f09dd9ac1e41f505/tree_sitter-0.25.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eac4e8e4c7060c75f395feec46421eb61212cb73998dbe004b7384724f3682ab", size = 609456, upload-time = "2025-09-25T17:37:52.925Z" }, + { url = "https://files.pythonhosted.org/packages/48/b6/cf08f4f20f4c9094006ef8828555484e842fc468827ad6e56011ab668dbd/tree_sitter-0.25.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:260586381b23be33b6191a07cea3d44ecbd6c01aa4c6b027a0439145fcbc3358", size = 636772, upload-time = "2025-09-25T17:37:54.647Z" }, + { url = "https://files.pythonhosted.org/packages/57/e2/d42d55bf56360987c32bc7b16adb06744e425670b823fb8a5786a1cea991/tree_sitter-0.25.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7d2ee1acbacebe50ba0f85fff1bc05e65d877958f00880f49f9b2af38dce1af0", size = 631522, upload-time = "2025-09-25T17:37:55.833Z" }, + { url = "https://files.pythonhosted.org/packages/03/87/af9604ebe275a9345d88c3ace0cf2a1341aa3f8ef49dd9fc11662132df8a/tree_sitter-0.25.2-cp314-cp314-win_amd64.whl", hash = "sha256:4973b718fcadfb04e59e746abfbb0288694159c6aeecd2add59320c03368c721", size = 130864, upload-time = "2025-09-25T17:37:57.453Z" }, + { url = "https://files.pythonhosted.org/packages/a6/6e/e64621037357acb83d912276ffd30a859ef117f9c680f2e3cb955f47c680/tree_sitter-0.25.2-cp314-cp314-win_arm64.whl", hash = "sha256:b8d4429954a3beb3e844e2872610d2a4800ba4eb42bb1990c6a4b1949b18459f", size = 117470, upload-time = "2025-09-25T17:37:58.431Z" }, +] + +[[package]] +name = "tree-sitter-c" +version = "0.24.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a6/c9/3834f3d9278251aea7312274971bc4c45b17aec2490fd4b884d93bd7019a/tree_sitter_c-0.24.2.tar.gz", hash = "sha256:1628584df0299b5a340aa63f8e67b6c97c91517f52fa7e7a4c557e40adb330a9", size = 228397, upload-time = "2026-04-22T08:06:14.491Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/28/c1/26ed17730ec2c17bedc1b673349e5e0a466c578e3eb0327c3b73cf52bf97/tree_sitter_c-0.24.2-cp310-abi3-macosx_10_9_x86_64.whl", hash = "sha256:4d4579a8b54f0a442f903d88d3304cab77cd5c2031d4015baa4f2f8e15d6dcb7", size = 81016, upload-time = "2026-04-22T08:06:07.208Z" }, + { url = "https://files.pythonhosted.org/packages/c1/1c/1140db75e7e375cda3c68792a33826c4fd40b5b98c3259d93c75f6c8368f/tree_sitter_c-0.24.2-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:97bc80a224d48215d4e6e6376bf30d114f4c317b8145ff1b02afe785d4ba7bdd", size = 86213, upload-time = "2026-04-22T08:06:08.136Z" }, + { url = "https://files.pythonhosted.org/packages/e9/8c/0dfb88d726f8821d1c4c36042f092be974a800afd734307a595b8604190c/tree_sitter_c-0.24.2-cp310-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:5041ef67eb68ce6bc8bb0b1f8ef3a5585ce523dae0c7eec109ab0627dd75aede", size = 94264, upload-time = "2026-04-22T08:06:08.918Z" }, + { url = "https://files.pythonhosted.org/packages/87/78/47dc570e7aee6b0a1ecc2520b30639cc2b06003154c9ab0672d86bf720d5/tree_sitter_c-0.24.2-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c098bedcd5ac86ff93fa734d51d1dd86aed40fd5ed7d634c7af11380a0469969", size = 94560, upload-time = "2026-04-22T08:06:09.852Z" }, + { url = "https://files.pythonhosted.org/packages/29/37/75d59d3f74f4cfc00f04472917e933d8a9c9fdc6eff980ef9552e010e6aa/tree_sitter_c-0.24.2-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:82842c5a5f2acd93f4de10038c33ac179c8979defc39376f990348d6289e933b", size = 94023, upload-time = "2026-04-22T08:06:10.682Z" }, + { url = "https://files.pythonhosted.org/packages/64/57/8fc655d5a446a70a637e92b98bd2fdaab88bf5bb5b36076ac4add544808d/tree_sitter_c-0.24.2-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e2b42e8e22202c251f8629306f9321233542e07a6e01611b5fe83489272143eb", size = 94160, upload-time = "2026-04-22T08:06:11.497Z" }, + { url = "https://files.pythonhosted.org/packages/c1/f7/72a1d6b42dd31fd37e03ff67e7dc5ee572301499e6b216002b8dd42a1714/tree_sitter_c-0.24.2-cp310-abi3-win_amd64.whl", hash = "sha256:abb549225091f7b25df2dd3a0143ece6e208f7055d8bcb4700b41ee79b9ef1e1", size = 84669, upload-time = "2026-04-22T08:06:12.347Z" }, + { url = "https://files.pythonhosted.org/packages/e2/9d/7475d9ae8ef679aa36c7dfe6c903ab78e573651c68b6ef9862d6a3f994db/tree_sitter_c-0.24.2-cp310-abi3-win_arm64.whl", hash = "sha256:4a2f4371cd816cc3153458f69062135ebb2ea5f275ddd90494e5c823d778204a", size = 82956, upload-time = "2026-04-22T08:06:13.364Z" }, +] + +[[package]] +name = "tree-sitter-javascript" +version = "0.25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/59/e0/e63103c72a9d3dfd89a31e02e660263ad84b7438e5f44ee82e443e65bbde/tree_sitter_javascript-0.25.0.tar.gz", hash = "sha256:329b5414874f0588a98f1c291f1b28138286617aa907746ffe55adfdcf963f38", size = 132338, upload-time = "2025-09-01T07:13:44.792Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/df/5106ac250cd03661ebc3cc75da6b3d9f6800a3606393a0122eca58038104/tree_sitter_javascript-0.25.0-cp310-abi3-macosx_10_9_x86_64.whl", hash = "sha256:b70f887fb269d6e58c349d683f59fa647140c410cfe2bee44a883b20ec92e3dc", size = 64052, upload-time = "2025-09-01T07:13:36.865Z" }, + { url = "https://files.pythonhosted.org/packages/b1/8f/6b4b2bc90d8ab3955856ce852cc9d1e82c81d7ab9646385f0e75ffd5b5d3/tree_sitter_javascript-0.25.0-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:8264a996b8845cfce06965152a013b5d9cbb7d199bc3503e12b5682e62bb1de1", size = 66440, upload-time = "2025-09-01T07:13:37.962Z" }, + { url = "https://files.pythonhosted.org/packages/5f/c4/7da74ecdcd8a398f88bd003a87c65403b5fe0e958cdd43fbd5fd4a398fcf/tree_sitter_javascript-0.25.0-cp310-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9dc04ba91fc8583344e57c1f1ed5b2c97ecaaf47480011b92fbeab8dda96db75", size = 99728, upload-time = "2025-09-01T07:13:38.755Z" }, + { url = "https://files.pythonhosted.org/packages/96/c8/97da3af4796495e46421e9344738addb3602fa6426ea695be3fcbadbee37/tree_sitter_javascript-0.25.0-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:199d09985190852e0912da2b8d26c932159be314bc04952cf917ed0e4c633e6b", size = 106072, upload-time = "2025-09-01T07:13:39.798Z" }, + { url = "https://files.pythonhosted.org/packages/13/be/c964e8130be08cc9bd6627d845f0e4460945b158429d39510953bbcb8fcc/tree_sitter_javascript-0.25.0-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:dfcf789064c58dc13c0a4edb550acacfc6f0f280577f1e7a00de3e89fc7f8ddc", size = 104388, upload-time = "2025-09-01T07:13:40.866Z" }, + { url = "https://files.pythonhosted.org/packages/ee/89/9b773dee0f8961d1bb8d7baf0a204ab587618df19897c1ef260916f318ec/tree_sitter_javascript-0.25.0-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:1b852d3aee8a36186dbcc32c798b11b4869f9b5041743b63b65c2ef793db7a54", size = 98377, upload-time = "2025-09-01T07:13:41.838Z" }, + { url = "https://files.pythonhosted.org/packages/3b/dc/d90cb1790f8cec9b4878d278ad9faf7c8f893189ce0f855304fd704fc274/tree_sitter_javascript-0.25.0-cp310-abi3-win_amd64.whl", hash = "sha256:e5ed840f5bd4a3f0272e441d19429b26eedc257abe5574c8546da6b556865e3c", size = 62975, upload-time = "2025-09-01T07:13:42.828Z" }, + { url = "https://files.pythonhosted.org/packages/2e/1f/f9eba1038b7d4394410f3c0a6ec2122b590cd7acb03f196e52fa57ebbe72/tree_sitter_javascript-0.25.0-cp310-abi3-win_arm64.whl", hash = "sha256:622a69d677aa7f6ee2931d8c77c981a33f0ebb6d275aa9d43d3397c879a9bb0b", size = 61668, upload-time = "2025-09-01T07:13:43.803Z" }, +] + +[[package]] +name = "tree-sitter-python" +version = "0.25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b8/8b/c992ff0e768cb6768d5c96234579bf8842b3a633db641455d86dd30d5dac/tree_sitter_python-0.25.0.tar.gz", hash = "sha256:b13e090f725f5b9c86aa455a268553c65cadf325471ad5b65cd29cac8a1a68ac", size = 159845, upload-time = "2025-09-11T06:47:58.159Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cf/64/a4e503c78a4eb3ac46d8e72a29c1b1237fa85238d8e972b063e0751f5a94/tree_sitter_python-0.25.0-cp310-abi3-macosx_10_9_x86_64.whl", hash = "sha256:14a79a47ddef72f987d5a2c122d148a812169d7484ff5c75a3db9609d419f361", size = 73790, upload-time = "2025-09-11T06:47:47.652Z" }, + { url = "https://files.pythonhosted.org/packages/e6/1d/60d8c2a0cc63d6ec4ba4e99ce61b802d2e39ef9db799bdf2a8f932a6cd4b/tree_sitter_python-0.25.0-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:480c21dbd995b7fe44813e741d71fed10ba695e7caab627fb034e3828469d762", size = 76691, upload-time = "2025-09-11T06:47:49.038Z" }, + { url = "https://files.pythonhosted.org/packages/aa/cb/d9b0b67d037922d60cbe0359e0c86457c2da721bc714381a63e2c8e35eba/tree_sitter_python-0.25.0-cp310-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:86f118e5eecad616ecdb81d171a36dde9bef5a0b21ed71ea9c3e390813c3baf5", size = 108133, upload-time = "2025-09-11T06:47:50.499Z" }, + { url = "https://files.pythonhosted.org/packages/40/bd/bf4787f57e6b2860f3f1c8c62f045b39fb32d6bac4b53d7a9e66de968440/tree_sitter_python-0.25.0-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:be71650ca2b93b6e9649e5d65c6811aad87a7614c8c1003246b303f6b150f61b", size = 110603, upload-time = "2025-09-11T06:47:51.985Z" }, + { url = "https://files.pythonhosted.org/packages/5d/25/feff09f5c2f32484fbce15db8b49455c7572346ce61a699a41972dea7318/tree_sitter_python-0.25.0-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e6d5b5799628cc0f24691ab2a172a8e676f668fe90dc60468bee14084a35c16d", size = 108998, upload-time = "2025-09-11T06:47:53.046Z" }, + { url = "https://files.pythonhosted.org/packages/75/69/4946da3d6c0df316ccb938316ce007fb565d08f89d02d854f2d308f0309f/tree_sitter_python-0.25.0-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:71959832fc5d9642e52c11f2f7d79ae520b461e63334927e93ca46cd61cd9683", size = 107268, upload-time = "2025-09-11T06:47:54.388Z" }, + { url = "https://files.pythonhosted.org/packages/ed/a2/996fc2dfa1076dc460d3e2f3c75974ea4b8f02f6bc925383aaae519920e8/tree_sitter_python-0.25.0-cp310-abi3-win_amd64.whl", hash = "sha256:9bcde33f18792de54ee579b00e1b4fe186b7926825444766f849bf7181793a76", size = 76073, upload-time = "2025-09-11T06:47:55.773Z" }, + { url = "https://files.pythonhosted.org/packages/07/19/4b5569d9b1ebebb5907d11554a96ef3fa09364a30fcfabeff587495b512f/tree_sitter_python-0.25.0-cp310-abi3-win_arm64.whl", hash = "sha256:0fbf6a3774ad7e89ee891851204c2e2c47e12b63a5edbe2e9156997731c128bb", size = 74169, upload-time = "2025-09-11T06:47:56.747Z" }, +] + +[[package]] +name = "tree-sitter-typescript" +version = "0.23.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1e/fc/bb52958f7e399250aee093751e9373a6311cadbe76b6e0d109b853757f35/tree_sitter_typescript-0.23.2.tar.gz", hash = "sha256:7b167b5827c882261cb7a50dfa0fb567975f9b315e87ed87ad0a0a3aedb3834d", size = 773053, upload-time = "2024-11-11T02:36:11.396Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/28/95/4c00680866280e008e81dd621fd4d3f54aa3dad1b76b857a19da1b2cc426/tree_sitter_typescript-0.23.2-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:3cd752d70d8e5371fdac6a9a4df9d8924b63b6998d268586f7d374c9fba2a478", size = 286677, upload-time = "2024-11-11T02:35:58.839Z" }, + { url = "https://files.pythonhosted.org/packages/8f/2f/1f36fda564518d84593f2740d5905ac127d590baf5c5753cef2a88a89c15/tree_sitter_typescript-0.23.2-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:c7cc1b0ff5d91bac863b0e38b1578d5505e718156c9db577c8baea2557f66de8", size = 302008, upload-time = "2024-11-11T02:36:00.733Z" }, + { url = "https://files.pythonhosted.org/packages/96/2d/975c2dad292aa9994f982eb0b69cc6fda0223e4b6c4ea714550477d8ec3a/tree_sitter_typescript-0.23.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b1eed5b0b3a8134e86126b00b743d667ec27c63fc9de1b7bb23168803879e31", size = 351987, upload-time = "2024-11-11T02:36:02.669Z" }, + { url = "https://files.pythonhosted.org/packages/49/d1/a71c36da6e2b8a4ed5e2970819b86ef13ba77ac40d9e333cb17df6a2c5db/tree_sitter_typescript-0.23.2-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e96d36b85bcacdeb8ff5c2618d75593ef12ebaf1b4eace3477e2bdb2abb1752c", size = 344960, upload-time = "2024-11-11T02:36:04.443Z" }, + { url = "https://files.pythonhosted.org/packages/7f/cb/f57b149d7beed1a85b8266d0c60ebe4c46e79c9ba56bc17b898e17daf88e/tree_sitter_typescript-0.23.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:8d4f0f9bcb61ad7b7509d49a1565ff2cc363863644a234e1e0fe10960e55aea0", size = 340245, upload-time = "2024-11-11T02:36:06.473Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ab/dd84f0e2337296a5f09749f7b5483215d75c8fa9e33738522e5ed81f7254/tree_sitter_typescript-0.23.2-cp39-abi3-win_amd64.whl", hash = "sha256:3f730b66396bc3e11811e4465c41ee45d9e9edd6de355a58bbbc49fa770da8f9", size = 278015, upload-time = "2024-11-11T02:36:07.631Z" }, + { url = "https://files.pythonhosted.org/packages/9f/e4/81f9a935789233cf412a0ed5fe04c883841d2c8fb0b7e075958a35c65032/tree_sitter_typescript-0.23.2-cp39-abi3-win_arm64.whl", hash = "sha256:05db58f70b95ef0ea126db5560f3775692f609589ed6f8dd0af84b7f19f1cbb7", size = 274052, upload-time = "2024-11-11T02:36:09.514Z" }, +] + +[[package]] +name = "triton" +version = "3.7.1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/ea/629cc37436ca5df93ce98956d09cd2ca1498bfee8ef4972d2fe48b9f958c/triton-3.7.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3daf64305d6cea88d3334c65ebc9bcd0c64c9564a977084366aa768d57cbcf64", size = 184551013, upload-time = "2026-06-17T20:03:37.551Z" }, + { url = "https://files.pythonhosted.org/packages/15/76/c79c34311625227a288df3e483fc5cdf3d596624cbd4b4758c4cbdc14af3/triton-3.7.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ee89fbf782ec2ad50391dd1cf26cbea4f4467154c37f4773026da8fc31c0f58e", size = 197596267, upload-time = "2026-06-17T19:53:06.898Z" }, + { url = "https://files.pythonhosted.org/packages/7b/f9/19d842d06a08559534fa1eaab6ca551b1bcf40f06620bddec1babaa2772d/triton-3.7.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d4a0e1cd4c4a76370ed74a8432a53cea28716827d19e40ffc732233e35ceb3f6", size = 184664887, upload-time = "2026-06-17T20:03:42.913Z" }, + { url = "https://files.pythonhosted.org/packages/cd/5e/fce69606f7f240297f163e25539906732b199530d486ce67ae319877e821/triton-3.7.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6744957e9fd610a29680ec2346057d0c86948ed3812468670719f391e94b44a5", size = 197701306, upload-time = "2026-06-17T19:53:13.673Z" }, + { url = "https://files.pythonhosted.org/packages/94/fa/f856e24deb462d5f18bd4b5a746957862ab9b6ee5834bda60605ec348366/triton-3.7.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9497f2e696ee368862a181a90b2dcc03ca978cc4f602abd67c7d81022a6988e1", size = 184692359, upload-time = "2026-06-17T20:03:48.288Z" }, + { url = "https://files.pythonhosted.org/packages/c4/6f/fb96d15db6f36d6eae4cafb998c2e0353bf59d7c4ea1662d7497f269134a/triton-3.7.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7e40869937a68206ec70d7f25bb7ec6433cb083f9135e1f36dbd318dc449a728", size = 197719725, upload-time = "2026-06-17T19:53:20.419Z" }, + { url = "https://files.pythonhosted.org/packages/00/42/c5089d4d9327fcd1e862c599cc2927f39418f84dd11a84cb2ccff9d4787a/triton-3.7.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cdbfc09d9ec58bc5e68321525653220de7515c199e7a8097a97c85e62b52cd0a", size = 184694629, upload-time = "2026-06-17T20:03:53.444Z" }, + { url = "https://files.pythonhosted.org/packages/07/42/2c3ac59253ae8892b6f307875263dd23dc875cdf732d3aea40d6d41fb7cb/triton-3.7.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:58c0e131da05134a2a4788ccbcc0c1105cf0f54c8e98f19e34cd465396dc15eb", size = 197729241, upload-time = "2026-06-17T19:53:27.801Z" }, + { url = "https://files.pythonhosted.org/packages/40/71/e01aa7ad573883ed9456f130226babdec70b005e098c4d6226a6238e761b/triton-3.7.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fe4ea396a06171f1f1f58cbd39c70b09294398f7dd7c620939bab54ad6f934fa", size = 184705764, upload-time = "2026-06-17T20:03:59.064Z" }, + { url = "https://files.pythonhosted.org/packages/a4/09/5683146fda6a2b569deb78ccfd8fbfea8bfe55f726b081c0a6bb18dd6f28/triton-3.7.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2020153b08280415ec0da6607834e79166442147e78e144df06b508c75b186d2", size = 197729537, upload-time = "2026-06-17T19:53:35.516Z" }, + { url = "https://files.pythonhosted.org/packages/e9/f8/448220c3092019f9fdfab39ec47985968181d67da34b44f6a7f6280a5cbb/triton-3.7.1-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c58e4c61f0c73b5dba3b5d19b4a7093c32f90dc18b2a7f121a7c16ccd31107b7", size = 184814760, upload-time = "2026-06-17T20:04:04.984Z" }, + { url = "https://files.pythonhosted.org/packages/f0/ac/229b7d4589d2e5937310e72c6d46e89599d16a4a12b479ffa1499fee8eb8/triton-3.7.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:10ba85fa2cca4a2fbdeb36bf1cb082f2c252bda55bf9fccd74f65ec5bc647e68", size = 197824404, upload-time = "2026-06-17T19:53:42.772Z" }, +] + +[[package]] +name = "typer" +version = "0.21.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-doc" }, + { name = "click" }, + { name = "rich" }, + { name = "shellingham" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f2/1e/a27cc02a0cd715118c71fa2aef2c687fdefc3c28d90fd0dd789c5118154c/typer-0.21.2.tar.gz", hash = "sha256:1abd95a3b675e17ff61b0838ac637fe9478d446d62ad17fa4bb81ea57cc54028", size = 120426, upload-time = "2026-02-10T19:33:46.182Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b8/cc/d59f893fbdfb5f58770c05febfc4086a46875f1084453621c35605cec946/typer-0.21.2-py3-none-any.whl", hash = "sha256:c3d8de54d00347ef90b82131ca946274f017cffb46683ae3883c360fa958f55c", size = 56728, upload-time = "2026-02-10T19:33:48.01Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, +] + +[[package]] +name = "typing-inspection" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload-time = "2025-10-01T02:14:40.154Z" }, +] + +[[package]] +name = "tzdata" +version = "2026.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/19/f5/cd531b2d15a671a40c0f66cf06bc3570a12cd56eef98960068ebbad1bf5a/tzdata-2026.1.tar.gz", hash = "sha256:67658a1903c75917309e753fdc349ac0efd8c27db7a0cb406a25be4840f87f98", size = 197639, upload-time = "2026-04-03T11:25:22.002Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b0/70/d460bd685a170790ec89317e9bd33047988e4bce507b831f5db771e142de/tzdata-2026.1-py2.py3-none-any.whl", hash = "sha256:4b1d2be7ac37ceafd7327b961aa3a54e467efbdb563a23655fbfe0d39cfc42a9", size = 348952, upload-time = "2026-04-03T11:25:20.313Z" }, +] + +[[package]] +name = "urllib3" +version = "2.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" }, +] + +[[package]] +name = "uvicorn" +version = "0.46.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "h11" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1f/93/041fca8274050e40e6791f267d82e0e2e27dd165627bd640d3e0e378d877/uvicorn-0.46.0.tar.gz", hash = "sha256:fb9da0926999cc6cb22dc7cd71a94a632f078e6ae47ff683c5c420750fb7413d", size = 88758, upload-time = "2026-04-23T07:16:00.151Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/a3/5b1562db76a5a488274b2332a97199b32d0442aca0ed193697fd47786316/uvicorn-0.46.0-py3-none-any.whl", hash = "sha256:bbebbcbed972d162afca128605223022bedd345b7bc7855ce66deb31487a9048", size = 70926, upload-time = "2026-04-23T07:15:58.355Z" }, +] + +[[package]] +name = "websockets" +version = "16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/04/24/4b2031d72e840ce4c1ccb255f693b15c334757fc50023e4db9537080b8c4/websockets-16.0.tar.gz", hash = "sha256:5f6261a5e56e8d5c42a4497b364ea24d94d9563e8fbd44e78ac40879c60179b5", size = 179346, upload-time = "2026-01-10T09:23:47.181Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/74/221f58decd852f4b59cc3354cccaf87e8ef695fede361d03dc9a7396573b/websockets-16.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:04cdd5d2d1dacbad0a7bf36ccbcd3ccd5a30ee188f2560b7a62a30d14107b31a", size = 177343, upload-time = "2026-01-10T09:22:21.28Z" }, + { url = "https://files.pythonhosted.org/packages/19/0f/22ef6107ee52ab7f0b710d55d36f5a5d3ef19e8a205541a6d7ffa7994e5a/websockets-16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8ff32bb86522a9e5e31439a58addbb0166f0204d64066fb955265c4e214160f0", size = 175021, upload-time = "2026-01-10T09:22:22.696Z" }, + { url = "https://files.pythonhosted.org/packages/10/40/904a4cb30d9b61c0e278899bf36342e9b0208eb3c470324a9ecbaac2a30f/websockets-16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:583b7c42688636f930688d712885cf1531326ee05effd982028212ccc13e5957", size = 175320, upload-time = "2026-01-10T09:22:23.94Z" }, + { url = "https://files.pythonhosted.org/packages/9d/2f/4b3ca7e106bc608744b1cdae041e005e446124bebb037b18799c2d356864/websockets-16.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7d837379b647c0c4c2355c2499723f82f1635fd2c26510e1f587d89bc2199e72", size = 183815, upload-time = "2026-01-10T09:22:25.469Z" }, + { url = "https://files.pythonhosted.org/packages/86/26/d40eaa2a46d4302becec8d15b0fc5e45bdde05191e7628405a19cf491ccd/websockets-16.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:df57afc692e517a85e65b72e165356ed1df12386ecb879ad5693be08fac65dde", size = 185054, upload-time = "2026-01-10T09:22:27.101Z" }, + { url = "https://files.pythonhosted.org/packages/b0/ba/6500a0efc94f7373ee8fefa8c271acdfd4dca8bd49a90d4be7ccabfc397e/websockets-16.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2b9f1e0d69bc60a4a87349d50c09a037a2607918746f07de04df9e43252c77a3", size = 184565, upload-time = "2026-01-10T09:22:28.293Z" }, + { url = "https://files.pythonhosted.org/packages/04/b4/96bf2cee7c8d8102389374a2616200574f5f01128d1082f44102140344cc/websockets-16.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:335c23addf3d5e6a8633f9f8eda77efad001671e80b95c491dd0924587ece0b3", size = 183848, upload-time = "2026-01-10T09:22:30.394Z" }, + { url = "https://files.pythonhosted.org/packages/02/8e/81f40fb00fd125357814e8c3025738fc4ffc3da4b6b4a4472a82ba304b41/websockets-16.0-cp310-cp310-win32.whl", hash = "sha256:37b31c1623c6605e4c00d466c9d633f9b812ea430c11c8a278774a1fde1acfa9", size = 178249, upload-time = "2026-01-10T09:22:32.083Z" }, + { url = "https://files.pythonhosted.org/packages/b4/5f/7e40efe8df57db9b91c88a43690ac66f7b7aa73a11aa6a66b927e44f26fa/websockets-16.0-cp310-cp310-win_amd64.whl", hash = "sha256:8e1dab317b6e77424356e11e99a432b7cb2f3ec8c5ab4dabbcee6add48f72b35", size = 178685, upload-time = "2026-01-10T09:22:33.345Z" }, + { url = "https://files.pythonhosted.org/packages/f2/db/de907251b4ff46ae804ad0409809504153b3f30984daf82a1d84a9875830/websockets-16.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:31a52addea25187bde0797a97d6fc3d2f92b6f72a9370792d65a6e84615ac8a8", size = 177340, upload-time = "2026-01-10T09:22:34.539Z" }, + { url = "https://files.pythonhosted.org/packages/f3/fa/abe89019d8d8815c8781e90d697dec52523fb8ebe308bf11664e8de1877e/websockets-16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:417b28978cdccab24f46400586d128366313e8a96312e4b9362a4af504f3bbad", size = 175022, upload-time = "2026-01-10T09:22:36.332Z" }, + { url = "https://files.pythonhosted.org/packages/58/5d/88ea17ed1ded2079358b40d31d48abe90a73c9e5819dbcde1606e991e2ad/websockets-16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:af80d74d4edfa3cb9ed973a0a5ba2b2a549371f8a741e0800cb07becdd20f23d", size = 175319, upload-time = "2026-01-10T09:22:37.602Z" }, + { url = "https://files.pythonhosted.org/packages/d2/ae/0ee92b33087a33632f37a635e11e1d99d429d3d323329675a6022312aac2/websockets-16.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:08d7af67b64d29823fed316505a89b86705f2b7981c07848fb5e3ea3020c1abe", size = 184631, upload-time = "2026-01-10T09:22:38.789Z" }, + { url = "https://files.pythonhosted.org/packages/c8/c5/27178df583b6c5b31b29f526ba2da5e2f864ecc79c99dae630a85d68c304/websockets-16.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7be95cfb0a4dae143eaed2bcba8ac23f4892d8971311f1b06f3c6b78952ee70b", size = 185870, upload-time = "2026-01-10T09:22:39.893Z" }, + { url = "https://files.pythonhosted.org/packages/87/05/536652aa84ddc1c018dbb7e2c4cbcd0db884580bf8e95aece7593fde526f/websockets-16.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d6297ce39ce5c2e6feb13c1a996a2ded3b6832155fcfc920265c76f24c7cceb5", size = 185361, upload-time = "2026-01-10T09:22:41.016Z" }, + { url = "https://files.pythonhosted.org/packages/6d/e2/d5332c90da12b1e01f06fb1b85c50cfc489783076547415bf9f0a659ec19/websockets-16.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1c1b30e4f497b0b354057f3467f56244c603a79c0d1dafce1d16c283c25f6e64", size = 184615, upload-time = "2026-01-10T09:22:42.442Z" }, + { url = "https://files.pythonhosted.org/packages/77/fb/d3f9576691cae9253b51555f841bc6600bf0a983a461c79500ace5a5b364/websockets-16.0-cp311-cp311-win32.whl", hash = "sha256:5f451484aeb5cafee1ccf789b1b66f535409d038c56966d6101740c1614b86c6", size = 178246, upload-time = "2026-01-10T09:22:43.654Z" }, + { url = "https://files.pythonhosted.org/packages/54/67/eaff76b3dbaf18dcddabc3b8c1dba50b483761cccff67793897945b37408/websockets-16.0-cp311-cp311-win_amd64.whl", hash = "sha256:8d7f0659570eefb578dacde98e24fb60af35350193e4f56e11190787bee77dac", size = 178684, upload-time = "2026-01-10T09:22:44.941Z" }, + { url = "https://files.pythonhosted.org/packages/84/7b/bac442e6b96c9d25092695578dda82403c77936104b5682307bd4deb1ad4/websockets-16.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:71c989cbf3254fbd5e84d3bff31e4da39c43f884e64f2551d14bb3c186230f00", size = 177365, upload-time = "2026-01-10T09:22:46.787Z" }, + { url = "https://files.pythonhosted.org/packages/b0/fe/136ccece61bd690d9c1f715baaeefd953bb2360134de73519d5df19d29ca/websockets-16.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8b6e209ffee39ff1b6d0fa7bfef6de950c60dfb91b8fcead17da4ee539121a79", size = 175038, upload-time = "2026-01-10T09:22:47.999Z" }, + { url = "https://files.pythonhosted.org/packages/40/1e/9771421ac2286eaab95b8575b0cb701ae3663abf8b5e1f64f1fd90d0a673/websockets-16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:86890e837d61574c92a97496d590968b23c2ef0aeb8a9bc9421d174cd378ae39", size = 175328, upload-time = "2026-01-10T09:22:49.809Z" }, + { url = "https://files.pythonhosted.org/packages/18/29/71729b4671f21e1eaa5d6573031ab810ad2936c8175f03f97f3ff164c802/websockets-16.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9b5aca38b67492ef518a8ab76851862488a478602229112c4b0d58d63a7a4d5c", size = 184915, upload-time = "2026-01-10T09:22:51.071Z" }, + { url = "https://files.pythonhosted.org/packages/97/bb/21c36b7dbbafc85d2d480cd65df02a1dc93bf76d97147605a8e27ff9409d/websockets-16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e0334872c0a37b606418ac52f6ab9cfd17317ac26365f7f65e203e2d0d0d359f", size = 186152, upload-time = "2026-01-10T09:22:52.224Z" }, + { url = "https://files.pythonhosted.org/packages/4a/34/9bf8df0c0cf88fa7bfe36678dc7b02970c9a7d5e065a3099292db87b1be2/websockets-16.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a0b31e0b424cc6b5a04b8838bbaec1688834b2383256688cf47eb97412531da1", size = 185583, upload-time = "2026-01-10T09:22:53.443Z" }, + { url = "https://files.pythonhosted.org/packages/47/88/4dd516068e1a3d6ab3c7c183288404cd424a9a02d585efbac226cb61ff2d/websockets-16.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:485c49116d0af10ac698623c513c1cc01c9446c058a4e61e3bf6c19dff7335a2", size = 184880, upload-time = "2026-01-10T09:22:55.033Z" }, + { url = "https://files.pythonhosted.org/packages/91/d6/7d4553ad4bf1c0421e1ebd4b18de5d9098383b5caa1d937b63df8d04b565/websockets-16.0-cp312-cp312-win32.whl", hash = "sha256:eaded469f5e5b7294e2bdca0ab06becb6756ea86894a47806456089298813c89", size = 178261, upload-time = "2026-01-10T09:22:56.251Z" }, + { url = "https://files.pythonhosted.org/packages/c3/f0/f3a17365441ed1c27f850a80b2bc680a0fa9505d733fe152fdf5e98c1c0b/websockets-16.0-cp312-cp312-win_amd64.whl", hash = "sha256:5569417dc80977fc8c2d43a86f78e0a5a22fee17565d78621b6bb264a115d4ea", size = 178693, upload-time = "2026-01-10T09:22:57.478Z" }, + { url = "https://files.pythonhosted.org/packages/cc/9c/baa8456050d1c1b08dd0ec7346026668cbc6f145ab4e314d707bb845bf0d/websockets-16.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:878b336ac47938b474c8f982ac2f7266a540adc3fa4ad74ae96fea9823a02cc9", size = 177364, upload-time = "2026-01-10T09:22:59.333Z" }, + { url = "https://files.pythonhosted.org/packages/7e/0c/8811fc53e9bcff68fe7de2bcbe75116a8d959ac699a3200f4847a8925210/websockets-16.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:52a0fec0e6c8d9a784c2c78276a48a2bdf099e4ccc2a4cad53b27718dbfd0230", size = 175039, upload-time = "2026-01-10T09:23:01.171Z" }, + { url = "https://files.pythonhosted.org/packages/aa/82/39a5f910cb99ec0b59e482971238c845af9220d3ab9fa76dd9162cda9d62/websockets-16.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e6578ed5b6981005df1860a56e3617f14a6c307e6a71b4fff8c48fdc50f3ed2c", size = 175323, upload-time = "2026-01-10T09:23:02.341Z" }, + { url = "https://files.pythonhosted.org/packages/bd/28/0a25ee5342eb5d5f297d992a77e56892ecb65e7854c7898fb7d35e9b33bd/websockets-16.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:95724e638f0f9c350bb1c2b0a7ad0e83d9cc0c9259f3ea94e40d7b02a2179ae5", size = 184975, upload-time = "2026-01-10T09:23:03.756Z" }, + { url = "https://files.pythonhosted.org/packages/f9/66/27ea52741752f5107c2e41fda05e8395a682a1e11c4e592a809a90c6a506/websockets-16.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0204dc62a89dc9d50d682412c10b3542d748260d743500a85c13cd1ee4bde82", size = 186203, upload-time = "2026-01-10T09:23:05.01Z" }, + { url = "https://files.pythonhosted.org/packages/37/e5/8e32857371406a757816a2b471939d51c463509be73fa538216ea52b792a/websockets-16.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:52ac480f44d32970d66763115edea932f1c5b1312de36df06d6b219f6741eed8", size = 185653, upload-time = "2026-01-10T09:23:06.301Z" }, + { url = "https://files.pythonhosted.org/packages/9b/67/f926bac29882894669368dc73f4da900fcdf47955d0a0185d60103df5737/websockets-16.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6e5a82b677f8f6f59e8dfc34ec06ca6b5b48bc4fcda346acd093694cc2c24d8f", size = 184920, upload-time = "2026-01-10T09:23:07.492Z" }, + { url = "https://files.pythonhosted.org/packages/3c/a1/3d6ccdcd125b0a42a311bcd15a7f705d688f73b2a22d8cf1c0875d35d34a/websockets-16.0-cp313-cp313-win32.whl", hash = "sha256:abf050a199613f64c886ea10f38b47770a65154dc37181bfaff70c160f45315a", size = 178255, upload-time = "2026-01-10T09:23:09.245Z" }, + { url = "https://files.pythonhosted.org/packages/6b/ae/90366304d7c2ce80f9b826096a9e9048b4bb760e44d3b873bb272cba696b/websockets-16.0-cp313-cp313-win_amd64.whl", hash = "sha256:3425ac5cf448801335d6fdc7ae1eb22072055417a96cc6b31b3861f455fbc156", size = 178689, upload-time = "2026-01-10T09:23:10.483Z" }, + { url = "https://files.pythonhosted.org/packages/f3/1d/e88022630271f5bd349ed82417136281931e558d628dd52c4d8621b4a0b2/websockets-16.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:8cc451a50f2aee53042ac52d2d053d08bf89bcb31ae799cb4487587661c038a0", size = 177406, upload-time = "2026-01-10T09:23:12.178Z" }, + { url = "https://files.pythonhosted.org/packages/f2/78/e63be1bf0724eeb4616efb1ae1c9044f7c3953b7957799abb5915bffd38e/websockets-16.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:daa3b6ff70a9241cf6c7fc9e949d41232d9d7d26fd3522b1ad2b4d62487e9904", size = 175085, upload-time = "2026-01-10T09:23:13.511Z" }, + { url = "https://files.pythonhosted.org/packages/bb/f4/d3c9220d818ee955ae390cf319a7c7a467beceb24f05ee7aaaa2414345ba/websockets-16.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:fd3cb4adb94a2a6e2b7c0d8d05cb94e6f1c81a0cf9dc2694fb65c7e8d94c42e4", size = 175328, upload-time = "2026-01-10T09:23:14.727Z" }, + { url = "https://files.pythonhosted.org/packages/63/bc/d3e208028de777087e6fb2b122051a6ff7bbcca0d6df9d9c2bf1dd869ae9/websockets-16.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:781caf5e8eee67f663126490c2f96f40906594cb86b408a703630f95550a8c3e", size = 185044, upload-time = "2026-01-10T09:23:15.939Z" }, + { url = "https://files.pythonhosted.org/packages/ad/6e/9a0927ac24bd33a0a9af834d89e0abc7cfd8e13bed17a86407a66773cc0e/websockets-16.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:caab51a72c51973ca21fa8a18bd8165e1a0183f1ac7066a182ff27107b71e1a4", size = 186279, upload-time = "2026-01-10T09:23:17.148Z" }, + { url = "https://files.pythonhosted.org/packages/b9/ca/bf1c68440d7a868180e11be653c85959502efd3a709323230314fda6e0b3/websockets-16.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:19c4dc84098e523fd63711e563077d39e90ec6702aff4b5d9e344a60cb3c0cb1", size = 185711, upload-time = "2026-01-10T09:23:18.372Z" }, + { url = "https://files.pythonhosted.org/packages/c4/f8/fdc34643a989561f217bb477cbc47a3a07212cbda91c0e4389c43c296ebf/websockets-16.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:a5e18a238a2b2249c9a9235466b90e96ae4795672598a58772dd806edc7ac6d3", size = 184982, upload-time = "2026-01-10T09:23:19.652Z" }, + { url = "https://files.pythonhosted.org/packages/dd/d1/574fa27e233764dbac9c52730d63fcf2823b16f0856b3329fc6268d6ae4f/websockets-16.0-cp314-cp314-win32.whl", hash = "sha256:a069d734c4a043182729edd3e9f247c3b2a4035415a9172fd0f1b71658a320a8", size = 177915, upload-time = "2026-01-10T09:23:21.458Z" }, + { url = "https://files.pythonhosted.org/packages/8a/f1/ae6b937bf3126b5134ce1f482365fde31a357c784ac51852978768b5eff4/websockets-16.0-cp314-cp314-win_amd64.whl", hash = "sha256:c0ee0e63f23914732c6d7e0cce24915c48f3f1512ec1d079ed01fc629dab269d", size = 178381, upload-time = "2026-01-10T09:23:22.715Z" }, + { url = "https://files.pythonhosted.org/packages/06/9b/f791d1db48403e1f0a27577a6beb37afae94254a8c6f08be4a23e4930bc0/websockets-16.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:a35539cacc3febb22b8f4d4a99cc79b104226a756aa7400adc722e83b0d03244", size = 177737, upload-time = "2026-01-10T09:23:24.523Z" }, + { url = "https://files.pythonhosted.org/packages/bd/40/53ad02341fa33b3ce489023f635367a4ac98b73570102ad2cdd770dacc9a/websockets-16.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:b784ca5de850f4ce93ec85d3269d24d4c82f22b7212023c974c401d4980ebc5e", size = 175268, upload-time = "2026-01-10T09:23:25.781Z" }, + { url = "https://files.pythonhosted.org/packages/74/9b/6158d4e459b984f949dcbbb0c5d270154c7618e11c01029b9bbd1bb4c4f9/websockets-16.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:569d01a4e7fba956c5ae4fc988f0d4e187900f5497ce46339c996dbf24f17641", size = 175486, upload-time = "2026-01-10T09:23:27.033Z" }, + { url = "https://files.pythonhosted.org/packages/e5/2d/7583b30208b639c8090206f95073646c2c9ffd66f44df967981a64f849ad/websockets-16.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:50f23cdd8343b984957e4077839841146f67a3d31ab0d00e6b824e74c5b2f6e8", size = 185331, upload-time = "2026-01-10T09:23:28.259Z" }, + { url = "https://files.pythonhosted.org/packages/45/b0/cce3784eb519b7b5ad680d14b9673a31ab8dcb7aad8b64d81709d2430aa8/websockets-16.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:152284a83a00c59b759697b7f9e9cddf4e3c7861dd0d964b472b70f78f89e80e", size = 186501, upload-time = "2026-01-10T09:23:29.449Z" }, + { url = "https://files.pythonhosted.org/packages/19/60/b8ebe4c7e89fb5f6cdf080623c9d92789a53636950f7abacfc33fe2b3135/websockets-16.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:bc59589ab64b0022385f429b94697348a6a234e8ce22544e3681b2e9331b5944", size = 186062, upload-time = "2026-01-10T09:23:31.368Z" }, + { url = "https://files.pythonhosted.org/packages/88/a8/a080593f89b0138b6cba1b28f8df5673b5506f72879322288b031337c0b8/websockets-16.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:32da954ffa2814258030e5a57bc73a3635463238e797c7375dc8091327434206", size = 185356, upload-time = "2026-01-10T09:23:32.627Z" }, + { url = "https://files.pythonhosted.org/packages/c2/b6/b9afed2afadddaf5ebb2afa801abf4b0868f42f8539bfe4b071b5266c9fe/websockets-16.0-cp314-cp314t-win32.whl", hash = "sha256:5a4b4cc550cb665dd8a47f868c8d04c8230f857363ad3c9caf7a0c3bf8c61ca6", size = 178085, upload-time = "2026-01-10T09:23:33.816Z" }, + { url = "https://files.pythonhosted.org/packages/9f/3e/28135a24e384493fa804216b79a6a6759a38cc4ff59118787b9fb693df93/websockets-16.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b14dc141ed6d2dde437cddb216004bcac6a1df0935d79656387bd41632ba0bbd", size = 178531, upload-time = "2026-01-10T09:23:35.016Z" }, + { url = "https://files.pythonhosted.org/packages/72/07/c98a68571dcf256e74f1f816b8cc5eae6eb2d3d5cfa44d37f801619d9166/websockets-16.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:349f83cd6c9a415428ee1005cadb5c2c56f4389bc06a9af16103c3bc3dcc8b7d", size = 174947, upload-time = "2026-01-10T09:23:36.166Z" }, + { url = "https://files.pythonhosted.org/packages/7e/52/93e166a81e0305b33fe416338be92ae863563fe7bce446b0f687b9df5aea/websockets-16.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:4a1aba3340a8dca8db6eb5a7986157f52eb9e436b74813764241981ca4888f03", size = 175260, upload-time = "2026-01-10T09:23:37.409Z" }, + { url = "https://files.pythonhosted.org/packages/56/0c/2dbf513bafd24889d33de2ff0368190a0e69f37bcfa19009ef819fe4d507/websockets-16.0-pp311-pypy311_pp73-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f4a32d1bd841d4bcbffdcb3d2ce50c09c3909fbead375ab28d0181af89fd04da", size = 176071, upload-time = "2026-01-10T09:23:39.158Z" }, + { url = "https://files.pythonhosted.org/packages/a5/8f/aea9c71cc92bf9b6cc0f7f70df8f0b420636b6c96ef4feee1e16f80f75dd/websockets-16.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0298d07ee155e2e9fda5be8a9042200dd2e3bb0b8a38482156576f863a9d457c", size = 176968, upload-time = "2026-01-10T09:23:41.031Z" }, + { url = "https://files.pythonhosted.org/packages/9a/3f/f70e03f40ffc9a30d817eef7da1be72ee4956ba8d7255c399a01b135902a/websockets-16.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a653aea902e0324b52f1613332ddf50b00c06fdaf7e92624fbf8c77c78fa5767", size = 178735, upload-time = "2026-01-10T09:23:42.259Z" }, + { url = "https://files.pythonhosted.org/packages/6f/28/258ebab549c2bf3e64d2b0217b973467394a9cea8c42f70418ca2c5d0d2e/websockets-16.0-py3-none-any.whl", hash = "sha256:1637db62fad1dc833276dded54215f2c7fa46912301a24bd94d45d46a011ceec", size = 171598, upload-time = "2026-01-10T09:23:45.395Z" }, +] + +[[package]] +name = "xlsxwriter" +version = "3.2.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/46/2c/c06ef49dc36e7954e55b802a8b231770d286a9758b3d936bd1e04ce5ba88/xlsxwriter-3.2.9.tar.gz", hash = "sha256:254b1c37a368c444eac6e2f867405cc9e461b0ed97a3233b2ac1e574efb4140c", size = 215940, upload-time = "2025-09-16T00:16:21.63Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3a/0c/3662f4a66880196a590b202f0db82d919dd2f89e99a27fadef91c4a33d41/xlsxwriter-3.2.9-py3-none-any.whl", hash = "sha256:9a5db42bc5dff014806c58a20b9eae7322a134abb6fce3c92c181bfb275ec5b3", size = 175315, upload-time = "2025-09-16T00:16:20.108Z" }, +] diff --git a/samples/image/example_annotated_pdf.png b/samples/image/example_annotated_pdf.png new file mode 100644 index 0000000..a1edacf Binary files /dev/null and b/samples/image/example_annotated_pdf.png differ diff --git a/samples/json/lorem.json b/samples/json/lorem.json new file mode 100644 index 0000000..6f83027 --- /dev/null +++ b/samples/json/lorem.json @@ -0,0 +1,29 @@ +{ + "file name" : "lorem.pdf", + "number of pages" : 1, + "author" : "leebd-public", + "title" : null, + "creation date" : "D:20251010112501+09'00'", + "modification date" : "D:20251010112501+09'00'", + "kids" : [ { + "type" : "heading", + "id" : 1, + "level" : "Doctitle", + "page number" : 1, + "bounding box" : [ 200.891, 706.938, 394.152, 745.132 ], + "heading level" : 1, + "font" : "Pretendard-Regular", + "font size" : 32.005, + "text color" : "[0.0]", + "content" : "Lorem Ipsum" + }, { + "type" : "paragraph", + "id" : 2, + "page number" : 1, + "bounding box" : [ 85.034, 567.936, 502.306, 659.761 ], + "font" : "Pretendard-Regular", + "font size" : 9.949, + "text color" : "[0.0]", + "content" : "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." + } ] +} \ No newline at end of file diff --git a/samples/pdf/1901.03003.pdf b/samples/pdf/1901.03003.pdf new file mode 100644 index 0000000..f3db63a Binary files /dev/null and b/samples/pdf/1901.03003.pdf differ diff --git a/samples/pdf/2408.02509v1.pdf b/samples/pdf/2408.02509v1.pdf new file mode 100644 index 0000000..2c74073 Binary files /dev/null and b/samples/pdf/2408.02509v1.pdf differ diff --git a/samples/pdf/abcd.png b/samples/pdf/abcd.png new file mode 100644 index 0000000..0dd1608 --- /dev/null +++ b/samples/pdf/abcd.png @@ -0,0 +1,2 @@ +PNG + diff --git a/samples/pdf/chinese_scan.pdf b/samples/pdf/chinese_scan.pdf new file mode 100644 index 0000000..55fe532 --- /dev/null +++ b/samples/pdf/chinese_scan.pdf @@ -0,0 +1,79 @@ +%PDF-1.3 +% ReportLab Generated PDF document (opensource) +1 0 obj +<< +/F1 2 0 R +>> +endobj +2 0 obj +<< +/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font +>> +endobj +3 0 obj +<< +/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 3508 /Length 243208 /Subtype /Image + /Type /XObject /Width 2480 +>> +stream +Gb"-VH$iTa]g)M%n$4@O(>K)fXfg8ZX0u?J=r"ScW(!hSWn1F=WaE-L>B)*0\0?O_L8]X(M@^=172,k='L\7k(hb$'+G>i0hrd&8T#W\'A29PuLsP6+5/PP,rV=+PR<.MOH$R]g\eT`PbK.c'mM5d&zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzJ81:1O\spdzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz:_b`@19.qizzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzTV=1s19.qizzzzzzzzzzzzzzzzFqGT0):dOEzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!'X"N/W_\D?0_;zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!;Nf;4*Ks6LE(?V-(!D.cTSsfom5_b_olKY29$lUtdm^qqZ2fE#F2Z`sZ!!!!uSIHMr`.t$,3clc!.B2a4@/FtcEuQuO'K]@]euei,s8CiU=0JdpVCJCO\G2ne?>A<-F_mh%rTdf,'bs_A-[kmcNP5X4euZD4`QaO%'.:dXY]8^C/R#MpfWa=r+[`9A.0'>J!!&\?2/(>Zb!@@MSm:+=^^apdAAlO_2/:Y9nA>d;];^\!j,Q4\2sQu]m\uL11,C_]*Y(0fJ84Mc?]?+[OJZY%VQqSb+:Z#&+!l>A(7m_&/:phMZMrUeR=mie4u;%L\gHYe:rpYUIM\IRs/%R9m\Zo%g29/$81LT>2H1GarIMg%#EgMaidQ>YNiF]t(8z!-WfUs7t!9N8X$*^TO"o?[1O`F@@Yon\l;O<8KO!2\-?5/Qu+FboCiP6'\\WP?7;;db]3*IF2kXm'4Tg'e@_\CBI!EDTr>p7FOkXfhrVZ95n(bHpnuM,jpYOH1HV<%tAP5%-nGd4TY[OUqE?6%13GhFs='.]am'BQ7pcF0n9,TX(=>XI=K^`^DB]R=$/#/6t:]LIq!!)fY3<&^5UPtkgo$B&(p``o6+92++eLVX1s8LpUMjFA9gMbOuD7auY_M!me27h^t$QaZ]Z#\*:gMOF=qJ"`pnV.Jlda_7']D_HXUL!itqsUFFcg]o2/"@0J,(,Ws2qbWVgM1GC]2Hg>UIPVuiq(NR'.9Y88PW%+?@2'>r^\^Pb*@b%hsIl+V3ZnFDV[?SSi@6$0OR/Q:^VJ]VbWeWo'arpgH0CtkMkWXaJNU;@Y?pa5eFhF#?`qR7Mi*DcgiLeDD7P8JSQpO`3b?Hu'P8aB.CnZ:M^f8H<_0dlcu[Jm-Ru3BbZ?A+4nR*'s,$?o='pA5g&m!!)M`4U#T.oo&rmK.[tl)1-pc.SdXLD4@ad\TU<]LIl!5LMB*>Od"&-_GdL_@-r;n3AftRl5-7XBC`t@5t3[_O"VY\`@+TIh5AC/R,Z"hRpClTO?g"NNpN\Y$SefeZ)X.aBZB&nXMU\-;L(5Xphdfqt=$>*i2s1.,deC6_dWk55=%C2#Ddno(&5,CDNDA;56Uk\[dR;b7#+5Q0hB)&X;f4n[=J0>BVonDO&uIt,nB8Y:G)fp?&pqUs7^bK?=9V"6;X095ElXjdBkN:oEfWZN@[:ROIcsciOiLf)J9q+&C?b\dH)[;(\ct=a;S,^JID`n!je+$LTVEGG!PLQO.,<"NK]C2>TPEWj/F6:]']"7XmHRmt'cCfc7k`?rTC=]I(/$E0dm^-]WP-6I&LR*/K'O6"P[F'l]3,[N]:`I$7Es;0^k09C9C:eVhSBIJ2?7PuiATg:;:fBZ95bV^E+X]CEb[;&^;@/p9-!!"-Q`PogDATZJ$>S5gFPD=mpDVDI3CplM#fV;]4%4u/Td%OmC$4uHf^MoQ?VSncU704l`Op?WDf]A(n$SOPQ5B;NcFF]1a7aT=b(#mshO^<+-#$O&g)EU;bioCFe&li5(&&jJqCkV_P3d!D*Pkh"#m!eM6:4#4uYEEeZ)WmQ7Z=NE8fT_F(`^an^0iKN>XNad%E\RYm>I!jVCM`=fX]pp)8V&uA./cX4D6H0jM&i=(UX$GmnDS-k$q31IYZm^oGsViDTKU0kZaTlt2aH"]0G-Vp>Hm02P/losEb,GNmGH"pOqH9:N$e"V+?^A-\5$VNWI[&BoO(A*B:=0GrDEokH?9:%89\1i:>cC?oddn`3!1hkC*0k9'gpYFG.J,R>&?OYg;WAP(az<*YnND.5a#='$HsXBDlM(%*I\9h)*EZs:"Ce!c'3LMkqZFfWS_0dS+l`ufeYCr4o6CX8M2ZQcaSkjm)e?[b"OF]9"Q*]ItAC>3(fH"aBf]qQ6+pu$ekm-No,Hg^:1hi9"DhgP6)G\-jMoink@$(l6r(+iu?PKuU_/mTC?5C2tcJqATe]Y&2)/R,Z"mbG>pJ,Jhm&L7/GmJG:$+/QUVnTef"@EDarg7^lh)Du9r^]4;rSpP@qNZG=8m^i#952r8fYq<':-r6VZQ[r1"OR-SUkN]csAf3XA9*'&'#:HT-sN]QI(m<2U8?G0[YHDT3OJcuO*hgP64Wo*gL\)f*+LB7GU!!'fqQTR*MBur`?:S/\6Ut2>5PEdY"-6AeCP>eASSOSSWFm7=crquSK#;98f.#a+RXN4t9eLQ>92!4c2hiIg#Xgd.jAlro$l_)u*dYd?=%'qE2JdX%Tncrtfk!rCq..X/%F*5FDqh^;1hZUS8cDJq1%J-@zq!jN&-ElESkiU-ZO#ud>BTaE"HB_S'cpJ>_LK7iU%iR8Q_>%Z7GpXG7VbWcn5Q!3h5-%u3H"\Y'p0ORf3=cRS@Pl2g+[a!Drqg$8HG0.:Rid%I_5EoSqTUtV/7#i/c'gKn"U2la`Sl3$ND0?IU%,&)W)9>\oCI$EF-eI_(67>k1M2:bjP>%;mG5DKUe-bJl[N]]o?bj'<`[eO&m!!)NK,nE^V`UhG@s7t!g%'#4+=b9XBuTcr$Q-7?bCUc9$jf="k-oVa+uk-C-V%%EE#GO!O>Datn>6jNa;XVbecP"TSN&!.Z.EH"cauR"p\C4Z[b3>0N'O6cptEf<8P/imt8<]+lhsPZbD5iPHp9RRC.mg9b"kCfu%qX^:876fUE$$SJq3R?FS"Icq"YHkN#k2pR;$1cH-a[6(/!!!#Wa(nc!6cY-'e%^D4dA'3]o#W8QTB47_kN(^*?b_']k06=`79d6fLDC[B(D[d(g9bSM\ohHDV+[0#R5=$dO$=,<$lC[+nDM.Qo2d1J?+bE%bEa`Tnr#-3W6CFO>P.._Tfi.+*l^F-1'mK)]htqeX&ln'd"rD`meh@ofWeq1aZMC91\7E+:5Z_+cHWKkSqj2^M'nm^\?TusFQq68JHm6@lD^\uV]!eD;56U7`hlFt14B#kE3_-!YTTH:.p&lYZXupQ6ia$k>JrhusK(P\Z"gPcd,*e40&r[!ClFET`RkM&Rsf(@4.MA!QRMz!!(c:LF/+K4ETW'NMWqSA5]j6(Pd1tclqX:o`$Em/3Nn'e)T%sfs9_XM%e&o:N5sR8#LRO"qNlh:kBG2Q%r,(2D(B\8!/Rm\g2Q*;')0pb0EBKfk6pU:,un?FUp_7nBIF]V`bQ]1hfkI`oNfnzJ35Z>MW^ZP2J`Y_`6W`!`>9n#fY;q9W2+n@qFd,*8U_IEEcQ3[6e.i1X]jPmG:tKu/D!!c>]E2YGAQck/$C4#0jT(gB:jSfc1@^O6f3=dh8FqiniV"us7%32&N2+^j4S:A+1cLSb*k2'L4;+"hE5s[lS;ahfk%E+_KX(e/R&huQA5MAz]2B\2HM$DbIJO?k2Jgg;8[E'U?G(N&G'W$i2W;V1$TDqVe@KegW9W5dmk*-DMRR9HU:p'j4.4<9sEVQ.M%M'/4Y^?R<\3rR"p.iq<(!Bq9M\c<3p2]p?gUaqWXpJ,IbobKBVUb,X:L3'#hjtH0(<&%N[KBe:S8qq"3$2p[@!haH.QTa,Z]QH#bko^ARQFH1U0PZX`h%jl+/(aiOkH!-rj8)`DLqIHULAEM+(c'gMJmj*:"T7?icnh]'Ko?C/"U.'uRJ5;+ZC6$^$3d-f`%2f.,#4t#XQ^OJ"5k2teaDr*Uugb;io7nW5PrjnQz!8'`^6^KH5Ic,b^`a1dmW1stfWO'83bK\2P3qqENA)fpnP"g,eg,3'q[*qd.DU_fT1M4jEdA"T[='\g`h8I`SWI6BmH1*.FBdub+.ml%.At*R[Vt%e4W=S*zm-<6olFPCZA-/%8:`JYZlBFnAlZnu:4N$Jdp0k\e%9q+&;:acjV<%ku\@^P.=R5:ViF)uDLp[11lq!a>.qWQ*U^C5HQ4$.f6RPjE_YKtP@Nui6XT9tDK_sn^nY%@C0oCDHQY?i6LQ7cIS@)7Gu^A;TuZt\R@Nup8rfIO/<'GQri$=csz!.Np"4l`j5mBO\Qj_D;gSf^":m+C-;gF`,"pg_I2.GL/dOGCh$IuS+Rab4*ZE7k2/BD/p56Q<\8gPc'.9(aOE)D2V"*Kc8+X3+flG?+2$jKMk2oukbr&!5I<62lU@QZ'os_^7/Qskj4$.c%;Y/7SiofLf-f=!+cTN)p2JLV#rql-p7ptt,"nU+!m^qqJ]mfLj(N6eVqsV:\*lr]S4ng5Zq2RkPhQ9b6YBU3NzWkc'0I9!P,%3(V6iQB>2\,Hqq7Q9lINFc^6`kP`WH"^&Pd8?bZ_ra,CnBn%S\=7UC)R($Y*r>;Ug-qXr8%Q(!KBrV#!fIrJVA\:eq,^%Q3fTY[1ChANpP1g\/mcm;>Ne?3(=p=@m$@h\4*3d'^uAS%.-q<]C$G9mhb0ui8L5frqU.&n\3d'_Pb$hc[9:%8.1Z:\@5CRtuq^FrTR^-Jpd'M%^4#XTKX&b'IDV;>WfOKu%#)C*nbfO?QDVTKtO[mCu_l:+Uac[nWPE_@qFReA0FmIV<]c/'`(DR[UHKqK7f>E.68$#`ZNugHYB$1#DQ!!riRNI"RiAAggz!0l*(2/ArDmAhrPh=gQ3$#DO2II4GoqXj%Dp=jN#s8Mm;IItpG))FTD$PtF#^3k2C^M_l=N>jel()DoO4Z]S`3co%,8P)cVd?Z@g2K.HBT:`lAmFj7=`JPE%kKfb\F69BmIQDZ=fJ)Ir0>-f-B:j%CbWPO/l`Q.X^A$K2P:7q50#%,?Mkd:QX]d;\[OdCi`S6gPcuJ*c4obHO!s];U5(%TeAnDl"55dK_k(F6n[(:ADdd6>e2s/`"Q?*/J%gL_[iMV%m9?sr;?I<$eMRhJ&Dph7(&qaHKpeJ>LM&%]_FTG?.,!nVHp/`ZjKiMd\KHN\MMMj,FS)X]6B;sI-@8ZarK>B6bm*zr"Mhq3]6ci^5DO/hu2teBE-/!hgLi=i@^FODVi#d\i_Zks8D]8kb*j?BTTt/$HSuDUknlVJI'l6f[V=HGpV#UbK^-OX"YkW"GLBr%WTon?b"fn"uRl9)C6+LW3#V1auT\q4#4_jQ*[^djA,GTL"2N`TUb$7ZA>*L)k>\"ZN7*)cOfZRqHAHV`)lWGMaDu[eoL)Vu8oUf3EAk1k3*.+542BhZP0R3dKr\cT`L'p[#64-=7T"neNf\`!Yh]XW%cL;?J7@S/?sRqs:Xb76\4:-(0OCP;J[iFS"Y>V>_!\b.&7p4;7bq!!!!Ie'=/4I8'@e##j7$%)=.;8ES!rT6&R8UDN4X]r7;,C_b"kV:*t'.oQfrG3iWT%pDMZY5(d0"GN;RPjiqG@,G"jo+r2^C&92,kKAHIJT1rLFuoGpj`GVpt>@_lI9P(\om9&=WRnMzPj,*9LX)MV^EQU)o?B3')`EXLdFu!DQS)Q)GOF7c;l>Wr4*J],+ThoWGikE,HM$E@cTV$XHL%]b?$G,$QX5!`3TmbaeLG=;:7XF%B$@2EL[gBclDV)QTcH4<9JH#bP)$2CZ_h?ZR^'8([VVAc,iRD.J,fJBSf9M"&H.%:M'o0J'BX=,1(Sg$\`XUgU#D[Cq9OO3NH01O8++O23LE*VO?@,+lBke,Br:#;iK!]?=]6.S(UI[.Lq47BfqXVF%uPil2ZE+/ZEU+uQ6^]0`[CXUjP!ll@/Ci%M;H"aBf]qY5/bsM^F)AI\F2eg]NeuW$5onOW<34dm&k2__%*]\7O"`F`"%g;q5!!!#A'S"eDANuhAZ>A4"lH1%)o?\3Bhj#]n2K.HbbT&Eu\p!IE)>g*7<+@!'UIUAYkrsOl<9dZW%q^7RTncO5+ZhctHhZrTm'4TS%tM@fhY[Bq9=pu-79"TSN&!!)@b%QNBsk\'p0e#$-iU>LFsD&&i`AXYf2H4%p[jQ+gm>;sC*p$:5eB:jU43pNYNrT[IN>]RsZf3a$Z?$Gu*dA(pShJ^+#f%@6;B?ZaJB[NOW2k)BJ.674bPG8GF55OIp>IIL=Ioh]S0>BX'KIVo6A,c>V^ICljm+J`9(@'elJ$`%1(+kE$M@ts\"(ofHeZ2cTE*tM;e7dThVet1sK*De=Y[PGe%mM$\h!P2DX&c@_N]XCBVbU#Oq;hGA^V=0mJhkr;2gb8b5(39X2_R6S4"Dgsba:+4STIads0^HbS"RDu[r0U7n;ZtlCTk]AK/hR"4,ScNMi/[,r:)+.RV]TAqsM)bS2kYRhiOu?IUhH]o=tG=PcH;7z@&LIJWT)2/>[`54Zc>BplEPjQ5L2CtUT/^C"lQ)Xi1TkC95&.lGQIjY)*$/JJ\L;X`c2kD'Lrn%JJpnW/0)HgS5]*Htcd`ME$=e>RB43Tl'jW2-47.c7aUj7CS]J)l_^Q?ab-Y$HChrUr>7PZ'3Jo[94H]'5f5mR_@&g>_,O?iTuS$"chXLZ-#GjY,$&mDbTmST``H`JYDu\*WJJl`\&erWo]/YMQ]`,:ujlKtru:c9(JGDdrbI!!!#7cD*[X#1:crUIUBJRRLl5Qk:oRNR&+U2f;l8PH7rqWX:B2]]"SaU/i3lDS1Amo#b8n207s+IH?_q1,C_!c'gM.hRq0!s1Ej]r^S&YFF9giET>'=CoLpbNmZ:!gi5h1XV-Ydph_!5G]7nIh7@_L3cm@TfOK-_IJ79X[NgelU3lY&M$(]\e#.ESdcJhC%o"go46N,TicEXec(7(F8$rRAE'Sl$IY-9dA#0YLQ33+U+2K^YGFmY`mX.L9q+?CkbI+SWpYnUYHY8#pu@E2&C2A=cp:[edVjX4gM$8?*BRUZWlh/:&A#RJem!39EiQa615m,/.R?2k^]42GD3h:B@8PP[4N@f8Kl),n-*o0`(G4""#gU=fSL)WUB**HNO>\;rK(L@rNLMm(L!oX.^"sgo,[?AJcYIO/ocpJ:',`OS^z!*(KI^9tf5GMc[`lb<5\X4A3!l!7CW5s_&&Fg`6D?@DLsako?@?!=^T*AqfQ#q&^#.^Nd6^?1l"@^g]T0O[>qFpD:u5V=_F:JqsClen)&W?S2n\ZN>8g8eZ+Zpr]#"bbi"0_(P]cb^P.Aqj]WroJkY-[TBUL6!=)Ri*ZC(+W]u4=zJ@$.REb'Q>Fk'Jn+1:t.W4S'XXeOrO$bNzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzr."(hH$mifrqQ"/P)(u]=B\pEWTMo,WM65hWnL@YZkV-?WiDo#F,\XtrT-F6LblhQ&u*^+hf`l=J#cG"`(hLGQR+!2Sa7UqRrSi0n]?Bm$BG'IiSXBG6,#P]D#6rCR>m12GZE6O\(hgb\)d\TTH@Ue[E'EA+5z!'n@ar:!&Y#D[?]b'im+2h$4)R@0J?[524+!%!upmdAr:A&m]SQWlAn-X1nCHFIeJ*<*k/g%j^NPP,InpogKh,R5(S2SX=rNkL&Hzz."Iq^T>U]/;58kHX#7>V#7hl?-rE=%cMRJ(YH8E+'.bLYBCOiqEXlm:Y+:lEB()CCs!h0WUc^h"DVSpoDu]kUKY'?p("WPWE$!b1,C4LQHXb%q=QEB$[()\T?q>]67=18<$*&Q'Gp*q$nE+(j/dp-oEm4H=I'Xz!!!!'g9YFQ]R!qoDV^D9&C]>>$O`.WN]m-lF8,+YZYZ.-Q1X_@(+i]#B!TgZ7iNCgj2R(D]&GrbT3]-V[=MW\q"T[9JUr@n*ZiRq2h1;0p\t!7IuYL/nsaR3R5Sp9baC8"c^m:DmTf:cq#C!NdjIhV0P]+9JHH.#l-cD>bEc//<]t]s@"(D%)`R38='lCI%l\H(++3R/25XHfOc>o;_Hm-WD^_)]MD9tNm<6fh7Il4g*p@@\A,ennt7BU8h0RMV5:"7,peBh+$=cZ*Zc@B*.7/-[BjMl*^4sRac&?E%NRU;EokI2gUE(qqYBqm^3j&l>RXt5Js_G6`5L0TeF`D*bfn;tltl?r"pG1P`J6\SkTecR-mM?AnmXeHPEQXm&sW4)FmIVD.p(#d3HO9&O[&mDF2N_A9:%8r0*EO6ntBjMXKbYWG0bpr>IMc.R+nu^UXX/8[VbGFJ,AUl"1pa@m[P\Tj2MOlKAXFnJ"@8?gpp?4:oR>=EI'?M;!L-J/P*NSNLaAUz!!!",=hT1V2Yg7cHFZ\:J1s]]-;Ehd$!&p2pi(:d`_9$l0"(EVf\*o_o9Lq1P*hVM6JWP;C+.Q`]mFs]#H"_P5'5PfD8sTnp=jL9FZX^/OSd_e]6>4HF`;^>8C!IoV!4*U,2`l=mPV.F4LM.^DAM\e%(8(,l87:C2q\od2bTgOT9Y?n>DZf@"'N6a]b9]r6RHHajJET:S$9BAN6PUKs83rf6\z!5KSRWMrU]2O2no[r1$%4<>+J;S@C!j["*7pZ';TbM=X:Q%okl5'ZQ>1c4jQV+V%'*!co['3.M])C=.+2JnoL+snY6IR@u3d'N)&c57Toc6)8B_h5\>IJA$]6E_KA&llc4*UA_eXJL9MV5Uks*f'3FF8I`;GpCb8kODUH<+(4Qu+QNb!r,J?D>SlPh?_rMD?%e)<0`h[dgHhOPEYOCo8]/OW_aSql+Q7PmG`!-_nCt*a6CeWE2FtfJ5Q7TF!+('C`Vd/8Shal7`Ufd7bEb#`*<6'>z!+7RA7anJD2gOr.J,fN5B5cY>=h/Qajf+Ch9--9E=AMl\I+.Db^Fi\j5C;A+"ZJA!jk9M'lc7#b>%KfbOI2t1IJWm6dnaSae"fR!8sLkX?bSWT0$YYl4^m'OBd8\b?G1ZQd)+G?A!Q>>NfLSehmRc_G+m3:Sj%SVf]mn^p=5?;rVQ&u%EsT>B4pPp7:"@&I&O8urH]7r(YMcQ.TJ*,\s0hZ%mTu"nU,#hMA=BM#64`(z!166VeIEKS87)+q[g"7FtG4""[:5P8e=74S;;`\LPbaDu2Ht_'1TF)D`a>nP?h07>rdS+>PA&jT>.Qr+MY^!*8RQBanGOA_"gM,3WD]R7mX/BKBT^:*U"-2F2_SnGz!!!",S?/eC\ac;$ac[rrb.miA]<^L=cTNXoYL@/A'.6OS\$Kbq,!G<]77C4X=A]htE8Z6m7o_AL#7#U%HHJ84fWepU7YXblW-;sW=0GqZH0qM1EcSIt]=Tg_*Zc@lD&]Kbfkifgt^r(pRif<8PkE8e`l'*f$hgq%Xob*=L/X]q^+DI>Y-]qqTW`)o^SLQ3<4:3gC:fWh`XQjm1R4?VE#)?14%o?PY,cTV#-mKBS:AT(6'6gN7$@no)cz!!!#7.!+OpO]Ue$[Vac2AnDf\CZ3-ac'pZdp\39br;QZlK*Mp1G^P.29PWdRPEXJ)DdO/Yk'XJRa2bsiif!@r0mk_7l-lQRo\Aig\#gRE+k4!l)*8UL84uUV>.(@CM7^C3q&.C.>IMVHWH36[H1/H@N6O/IWC`:#l2YXd&(OII3ogaJi\Vs.%h&l2-0+"Eba`b=O$EWRGOJl+a-SGd0"W>M$31&+z5S8.t_M.0FJ)8#XTjbinnaZ.(<7,A93B9+q4hH"2Acpe5W[q;YAF\ZuCY,`F^4!W&\+e:F8'd\cF8>CgRl>8?KnVra73s3)Uo(#$AnHq2%1*??;Pf7q;18d##TaI1umG,7Yo#U\#lXfParr036<`YMH'5e*,b67kGz!8tte2Jh$MF6CgN#7`-iG[A+33A<-@,U>cWM2@'\9MAD`GjO4i4>=]nlF)&[JN:/V#irVLg-h@0r)^38n4^VBg+J,ardi5+g8\$',OHN*joB-saEkh"TAna,V1(UMJ5LJN2@XDQ9Yr6cE!ieu_#SjG8%*a2Q#S+cCQUGh;]Yhd<@`g`E&MOs80aIXZ`M[r)qEYKhneqs:Z>rg.jt4tH5uc'pXn*YE#kft7$ont;JAS&nTG\4);kahTHm&$90O\u!7Gzz-?+0Q[nc@f?olu/-OffI#J9+c5Pse')901+isI?PHM-R%W$k#:ma7ebCjFC#6"WW%$LM=`O3,.(84lKH84\!pi'DU4GXtBH[;4C>T0Mf1laq)m^Tz!!"^(*V5tAgU=NakcKYgW.Y'>U&P&j:/4PV$t[SGH19aCrpm>!Yq@X]V+R!k4*Ku8RlC!V%Lij^-05tFY$>\O^hq5aHtYi5Jt-7Bj[2\*.%rbt:/&hM2OcUAC?5.`TjA_k;Ya-"%hDqG]k?f]>LA$+$g,d-^O#S<*BSEa5(*.tl-ktO>m^uK$k3XT%hF_YMMdCQNK9,r9MA,T:/4GTbK.cGbfn;Vc;o+(<@G@C?U#dUB8U]h``YDG>,kON98*TNz!!!"8bfkIu`ufeI8GNuN<]Ce&,!;VIc,[k;b*4>*=0C>mIJ]^*L]%)JY$SefqtBE5LkrRN\AZ>(['V[O7T&:H:j$(*(/^&\UYHWRR[P_Ka2Z-U]6>nf3&i$'i:"G\hRe"#\om=Nba@qTDnd/)fTX/+gY:-';8,(QGO@#db*k2'e1[buVe9ONA:_-T6:/hZ.3iWYW`;^)$C2N[m?jCS'aLEnKDb#8YN@HIGWo(Hbi4a`VbS[*2K%;P?*[D,:cG'B%0,4-_9qOu(ImCY&WgjQ,CC"&]]\_o'A$lu(RdD<_EDm6j?1Qo>)91-$G&p?YqQKC-"k5*O`O.LaXY.Q?krn])`oNu^<*<1!7LoMcm@bs&9#G#S^ij[1%/*A&!IzzYV@s*Tmce00r4^\Q4I99I_BS"qsM)bN!cYb92&#qfW_%hIbD#mG#+R=gM`!_M-I99cGs)<1c@&3d0lBY[Km0%hE/g>LU-^d!B$VYY$EOsT0Ih>AK*;0;GpCRFQfA][(:DGAk9m`ldj0-DJj?#@::MT*ZH'!:9"Z?MA;U=D4:<58ON.@3J.AkCGl?D:.NCUPIZo+.`q9V3ImcZd-F!+UXC20aTi;ioYz!!#[F\ok&2;?-l8euY:QLMd>%%j$rk@+BYgil-g-gN_Zk(Dk]/AP;]9/Z;aC%Lik)3>06YF!fs8,9nFk'e?.\OZRo5kg8;J`J^QcQWAQWG'6&ur4(_]d,0?QrK6BbbWl+%6ZtCu`XLtF2Jq084kTD'qsnGq8F.WaCrQi=6E`WT`>&mz!#0lpc^pERo6l%8%BjI!rh3+J_t-9.>/#Bp]uOl1e##hi=gFiLeEb\f1SeJH6:1M=j^g$%Up84;5;1dXhnQq2>=KBbI-@Y7Z]t%"M\kj5Xden]%NRSmqVU&O]6*;3J,dmN)Du9*'NV-<]61e]I/*oE">I]%SDT@bXPp&ql1s*O:j2[4I'@j[:CTUWQO^KeH\58kcKhjo.,UXt[fXcc$+.AI[0erLc6cI8#?+T[TTgLl##6Y1rhnNM$S=#Zl+-`f;Y?J?VLaa`CCi$2.LPH<,Kbn&lGFI8V++5CBk<;7r%g;q5z!2/g[YM^<3&n6)Snt@C,k4_W38OX!@7=T6U:4!dL`:hIhkam$Zr$Pj05g9k_\l00No/H#Re\auMWOc_<0nA=SI[ibS;IF'_kHMR-nk09AW4Pi00^`<"&]6@fo=0>d_B^gc@f<:f_\Q#P+=0Gr\?iHU?hN?obdA`6="TSN&zT^^^NJ%rXf+!2SCGX_1s-9-;AUi#[rM\e%TCu^5>iV.Tjkg;cCd]d/t$7qggU:tqHX++%V(DPq>Anrdl),1A9N]#V\a70i>IJ?f:t`L,F+I>U*3RRh,k@W/z!!!!5Id>UhQe1gd)NE\jabQ>#f@SV4q9T9Q(0J$8-\M85kXq*il2Lj9KS5$XrVJNkgt2f[d6aE8h7.I"/?IWaRqFoab&=uK:7XEp&&.huMu$KimbG@Z;UWt?;)Zt3BiB(Z$SepSmd@Bg&L0a^;G/XslfR>qqcWK`zz'Ri:En:Pa9^NA_g7TIYg+0*k+F)l<,Za7!DZ8+0j;H$MXP*-Fj&n5UTq]H=V_l\$rh`ntEC%c*D0G:B6ADe#6+g3CR`7XO0uAi5(%d]?K-FHWrS?_OM,ODs'0(lH$ioY$HBbC-L/)hd>M)2f795?]W=Nai0/S=,OD'h-)-pK7edaSq?l1dAg1s):^7@]TS\N=^WgY`lZ=oWD^?OmG%ldLB7GUz!)WG"))B.(&4fDcZM.&F_XG8>/r+8nI-?4i'.ho5'4C(QV/h#kJ,ONg9C/f`YsNkdcC$K/Wj*<$I-?.c$Y7@1MKY?mG!gXg?9:IfB0+p)\#.&ebpWTgAooEa2jSPa`Zc)`r5ESBkZ`MB+]t`-UAWg3dR5<)hPVAS'!$LCYnrS"(#^p\1"MD:u3@cV@]QCoJ-Di.DR&cCM$6^OH.X"ckki7un^V[s:"q3dQ.")d%+Ok05[8;56VB/jMT7z!!!"L6;F<'PU]\UaAeYj[:mt)hD8RbbEjlkc'5sBrqlC1CZ-K/GJ_:T'+Lq(PEXIt>;o]cEokIe2Y(jOo:a#_n%>DXe[TVZgi^r85;2>?hnIqEHtYo97+J;;AXel19esBLY[PHAcR8Nbzz$FttKLlXarB\9OtP:'.4\8^E\[;5g;j,YETNgr1T/het5/1`>!-70lZ+ZVPC4["58OsSE!cH;FP$5G%hD_*cJpQ?gq.b2.RlXngi'j@M1SbhH7?bF(cc^m:HrVH1KGO@jg7`NEd,pjt9V57a6A7T=ck<,Vi9V'/7ET;eZ4f_&IaiqsCY=M8XMR#2,]mKKkhnFO7o&\>u:[d2UJ).\Yiha$V=:5^J?XGgQ[;4A0;f,o2ETB&lcp60!eZ+mZJZKHW3Zi)ck3#+@DV_=1d)X0s5%RJQo]r]qQHtH+[I--;PhOtbEp`s*#%&UC:0(^N_8st^A,S)0g?OtntGaeVb"tSb^As"(ZdIp3,l[3lG:hfQ+I%UsIDFgc=-^J5\MCD=qR5.2n@V.gro?TXfI>JWhrVQaiAi&eQ;GSlMm>;IC]idGOOB8['4cC?CADAs4P)4\&Eu!VsQ%S,4"=t!I\Y2RPelhDr:!Mm="Wjd5,F\"9\k_]QmFY.5s.Cp>NoEb&YFgR@.2\=W38h=XdEd-dR1=Z>+9#G.(X52_d$A/hZSkrVL#3@CL.1\oQoTfs>=>I=4P^U?f4&f8:H;5(1!J8]bOJ6fH7EMQ(c?F&V'I?bX19@PbiR#nuC0.TWWanVoru,-_WDgHTfQlIC2Q)P.HSEo0o3<'E,`,@gZHnaa[qLW=V.ara&N8hG%kOTiaa)lGf3E^!I0VXEudn%LTX\p+sS)e0%aBBT2!EUoe'z!!!!5>mUfDT7-F$3ka(KA&lO+6s7=LI-C:kgLYL\0/(KP?76dSFNC.P&qO2"aFu;iWmtk=[V[PTd@VN1:SZ=EDV\JSou7qhjQ,B(0[u[WHcj>[Pn.05Gd3j'7cd!Y1HZb*nDHT.:J^e]USHkarq3J]ltfNrH),]Tij#bnEH-!KX&i@D.9!+&31Q519Zr3K&X=hG8p8q&I=#I2Y:a+laQia$pWp#[q+q%kz!!%nTD;2L!X]e_qgDW5$FEVi9\r<'Qcqck$6rlNuoVc?\/i:Y)3Y[0nkgH;#AM?1B<14pd1t:@;>rFZ`k"L[9WHe=-[q3aKb(i``4BYHOS)m$!;Ss!*DpaiN%52)&>WgH/713ZQ?M2%,$PtF[:$KuZk*b&Uogg.*^4rg*Zfe/qK5"e5;>AaGOG+onliJ[/md\6u:L)`;@U>IIKpZsURsH:jWo&![P#^A6o\\Xumb6_tPM>,W*m;,L2?rqWJ_Ikf]`=L2Va`/>gtl-G.YmFsQO/PYEEYct@`?@,C).-AIHU&"Q]M??=Ks66GRoFs25+"@aS&TDc2Z;L,lzz90%FsFP![$F/L__gMsO7I-@+_GJ(W&c^d-6'GM8Tf[[$(GO=*AE8X"S^4)%\2n%kQlpFJ#Qn`*bs8Mm!$PogM^&%K\J)@k^mu\hb:7XH-n*bc)qXre)i:-7*kih7*q"UY\UpRM9N/W_>bfoG?m$u+\>sri/%ojYbcY>;*XK3sM,s=CS3B9)C+X&0Z-6aWX,U>bl]5Z_\GVtO'4h>Rh^?s[aY?A2DiPL;tVG.^I4k]^fMGaEOo?S?sCYH.pN9#[/?4_nX-_Ge7V+[.umFjF5euW2kH<%"HPmLC&sr.fT@leK_.LW]M+`I-r5-&s_QmB2=DUIL*X43sf'r:<]sB4n'.X/i9rQ<@!I<")ei?DgPh`JYO>]Qdp4.O1U_1N!SbEjmOOL(VMj2]o$cmCM(+8XAT+";>:[r/j:8-,23ep`l5p]YHiB@?Dd#Za5FB8,`;W?[_UtcCI&kldp(9aH9E!:)u6/Qn21;=KsYpcIdKjVGQI<9Gg*_/mX^Qc'gLg5;(520>7"@Cq3#p)L>F!5(a@F8]T1,9sJgiLg+4LK%\2HfdmM%dl=5qOQ9W`urMl;t`,]m>FgW2j5BHbk:;H:hd\AQ>d39e#>ll<7Sm'`\46z!15;d.;AD9c(-q?<\IW,4o=TPRl5+=Un,5JqoW*Q\+!>WjQ':=:a($9,taEch7L-"[pOM\rUZZ]P`o-UL)NBpCoj\fM#`Z$"Kpu1/IK?&rj2fn-*Pq,pRgU?LrTgRhD$k3ZrZe2?[X)6OqV/3AUj2QC_UFro;rqKt`KM.Xa)-adaa,Wbt:JXcWV]IsF:o-c!n^L2b]qf:Vi&,<$W*cM.%2q?Vpb6osH1U/I"e;-SF`uX.fs@UIe8rr!QffscL.G*9T/CCbfs52>#Kb.B^MMi*`b3VhQ*iYqlD1?=`/,.=aajO!RMIITz!!!#G002/*CY,`.M\j\q:ZUg+3e%!OSW&1BlJ&9N&eaacp;S%i<2`XPKbn'/f<3q[!a[;NL6s,-4KGDqsV^"5&fG1]u.[9KnkGM-rE=Qa3C#.-R0kRh@\j$.k@Z'ZY"O3F*6ct0qm:ceZ14N*??/AEcMSfP+%h#If+G'B4lAUA]g5tIJU=B>&eP%@YXI^?M(sCb8/"5?G:f4e##k2ChLP6!=p560YAjVhqqd:KPI>VQX77FW<[U71S2aAR`ClOMp#sf`R:i*g[QJ_RE[k.n>ePIV`.LR@*]5G6OH:$!B<0O^4:T8Eo`%DO<$E+R%IXfzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!'h,/()Af9^jodArRKbU!1%ih`f9NKa4iZ_^q0OAl`XArGpPF0f\V/rXa0O#]mBAJpV6`Vm+ASAW$m"J"$ARJ%NMurh7D+c<-niOz!/eFRPa#@ZC3B"%IHo=].orb(ZtWH\FL8`66=JBXIJ[rtrHA5?rP?=dg"G&h$_01r,!A*Fp4:3'a8bI4s)N1%F)Z*fo^oM=!)FlBq0QD@3kgAGYh7NB@"gGZ/nF3#4HTF:?[Vacnp!1h)aspGnR"J#+7ZG?Q.soIOJ)j,YE0,OHM6Tsedj13);ANCIFH5QCca!!'faPpoX$I3$YggY:QsTeL6=^:cX"MAIq[HM)%GZV-T8.9.&)hk)'m(*^+i!hVgSJ`0VcG:X:(FH@5D9=6%;[RlY\,=BLs(K.8YSrVb:8X:?73,UXto4"*J(C=Pqp/H.eUm$N?(p?^J=@)2nArka?sa,_=WIJ^HQ,6RuH!!(q+<2WJ3H)Y6CjN7**#DLZ?T7&&IPEI4bL4k4.O))/WOX!B=V`[+*D1A\VRr?$'!HdbbfuC]ABc;unf3a$0?G3q&?=h9DR5/?2an`mIo^l.a_;07\KLrV,3pcHaQu?G:g_,.(=gTgOUbn'L4AS(ht_KYYC=DV_mlp9?,3^0c?bAJr%:Mp(tilRa1:;f;'\^$p:q(XF7E2,pPN:5MO$\2K@g)-MCcUSFT3p=X)N%1!6DASaq08b1^^&]q.Z[qs`Ed1m?0e=])0_r"L[.p"Y,2@%@Ib=becYjp=OHd/q8`\sTr_*IS`nDV9*jiY]b>I8'`n(p3#2%C"f&f,eh0FQ*c7aIl*4jF)B$=,?[SR=m$95->[:WH!I&b^F6Cj%1;%2AQJ$J2MOaYBpPYB[fON7H`T?9TIl=Nho^qc>IJOf2q"!Oi$em(G1Q_N.R5.2hlf$f"KXOW+'%FCV>L/pkrb:hP((K7BaD7umVG(0u@`>KW^M`Lr$mIkHj_Ohmo?Z1^HW9Ij^"#VVNugFs',-@B,WRkfDVhC\0O]PjU4#)Y^OKTR\#-"(T2&^!?HT(#O46MnkF-ZWI/'pn`LWQj%:9*_hnFNEigr;[X;W>az:T$*fg*j^^=0GrdhQc.bKRB`k/iqZK+1c:A1+Nf.O8\tMb5f9QlDr\D%Ndl>[VT)LVL841(GB+%=a4(P=g`%s2^]'Bh;_#qS.5PMUOI\IW?GCqP2E(9sh7MjqSQiI7Oa>neKqkF'[Vab+lln5AZW!bs\O.rKW`7HE:#!'k-iVB(lE#UmCZ=#T'XelMI_rt=8sC_I)r.`1MjY#@LX+n4GtDK?A(e>T&LVgJ1+((X)IpO&ojGoY#=E8cBW+O>G6E:Mr,8sLmJ@TBF-Z/qVMY?nnGG.i1mAt/Io<[9&nZS_hSb4@q2:.U;Fgc`<9MYFQrSjj1BO(?F+7gm+J_aqtf,mhgMMjF54?LCB8?*9(%]9<+WMqL&0(QEYI;U5b1NV?]EU"k9h;$dDDVSnl;\LKO:`m.[-Vh$nZt`%hj3f.$7u6pcZ<=r32Jr$Sn7^1A6+_=-`)kqo5Q,]JQnd'f:D[BB]tD"$mFl^Pi'@s9puW>+'Qig#4n7bZ4sRunL%r:la-HE&H1X).-U'rHe'jRXOLVg1aN2HW[r5WeHM,LM1OoArf:RQl\REC1A]pCaQndW.s8&)W`9c0`VteN2@Ddhb.p!L7R25_ER5<*8Tk-Ded.u->",U/9+nAX6(DQ0V73X[FGC=PpPq40TkWXHGL\S^'-8Pf0,Rl@BdKIgHB\Gf^tCblD;$q-04]6B`g:maeDF\N7R.,):WY8he9J*(/X\aY1^+!5F;Q4(6](GFM&Yg&Xs+^9<+7ueROh)0!!bhCn7BD_Dii]E3Ilk:^>0Oa)"0k85%)d0aoWAUDM'`O.d92R@5@EVZD2f.,SQPih.\8\,JO^GeJW19=QioI[nl`:l!Xf:oca,V1HI/k]F.5HEL5Q+PWahrlE(FrN['WYHImd8cue6^=BgVqX-&"Pb(WpFWkgpu#(:62GWYKHMm'H_i&Z*?6JBsh.;+,u(P;BHu&.g9`ERseOF8sLl+AAH23aNRLLo:b0-="`XnlKXg"K.QK#rVGi`eW5WLg<@dbUnf:+HUL+aJ9nm7RA2Tr$2:?uGPBap@u&@9iY1M)WDe,C(RP^Jn'G(8RUT4!!#:3p$TH\._e]mr:8&)Nog:FZ=JggGPo:0#9.fTVadGDQ_&#=F/$(Ao:[O-T!V-!Y-+p"!.F_9d9lI"++@n[]XaWQ9Fg)PMTba?ILH\^r)&DmmkhN^im1lc!)[(qML"3A6?eo=l:7Y9];iPN;4[$JMP9rop6%]AQA7V&FQ,OKKI&Pgj^sUP,^!O?u'ubQ6:/9)i++>W=kID&29Q!Us4P@M^jl.Ec"q8jc;LJa'C3>t8O0b6pj_C?HJqATmB<-9i@`=3`Dr0!mJtCg0*&sVJR8iS,B:foE(_nV&z:T*sEIp`"g\rbu?eX)DFp$-*T$Y.5;;77;-m4dHPAq<7GYV%1H7Aho&\%B:S-@RGOM`Mrjlag*WooD0O_hZ5Q:HLcTc@&[`uk5a3W(-"<8$e&eP^!U.n0L&A9KcMQW4(AR1]pW`QC\U]9.=;$g#tO,f59:#3@$7ngemldmdp\0-A;*W?!7mip&LIelVU68i.dfesXkc^["j^4>qOhgZU"_Rt0cAG+s$Ms$ZX1#(#=s1BoSat'Y4Fa%B*DV\i/nI"D]f*8"Sbs:hUIJS%g[oTV7L9J%c^6#sMm98n,j?+dHV\p?iWMuk;1H=oJ&Ea)aG.;__RQ*Oald%0L_D_3d1$o`m\WBbQ6cFo3/hna^'KA4'q+sAiSRj_.iUJB,p[?uu[Lr&7=LN&!`JYP%+-/8n\U:>\b.'cl$MKM!:qLo8Wk9#o/O65-%B,fLoF3d"I<&#jE.R"^Z%pkdh)`;B+<#"/F0@f?#GO3s*;l/JZ.DEsefgpSf;"6^3p"*R&3FgRA?2ONf^DGd``(.AsE<6+?!!)MQldDVfnsac1aG5X[s5auJMA7Y]`l=IoaL,g8jQ1uM'.6sG8@pQ9+0*W0f[nKD6OeuWIC7O1o"/(:-+:A"4)*+gfh7MU9h]4D1,;bA6\QaTNp%0:HM".^)@miLA5rHc$m>$.Fi\3r>T8X=2?V(McCI%fS=GgIY-+p?c^m#,;k8<7;#rnPaG3q=q,!8X,TlmHnLa7QEhbL-edMoo1V"*U"Chm0.j(e=B]R3nVl-H+__IDCo:[$>)81CkQCXroat-tRGjf3a"bY]73VX\nmjUV6u5pM2a;r-7W2hgP6iCfu-NA7fH9/u+U@'aN'F*BVu`D6#itM"=jFmbPj+&f/Olz^]a4W]#'O>WNRY(7=#R@(j$oSPLCG1LT5DrJJI1^no[-17KfiFK[_X@5fjl59*Be_UGk'e!f"_7`DkhV(+)3?L51Fo"LYA+Uq,!i6nA,?%7jUfo9M.p_C0sGeNfJS[br=b_ATF8bX(p=nV/8\'[.9oqZ*?(8[g"kIirml#5Ju.`_3JK2c"cc_%E4XM!gHbaC9-K_GHBlS$qC3$IA.-.uZ?O)-Q_*N)Z'.U0?_XC>QE2U7)8f5\ik*V)JGZa>WkX-IUB5b;i!!!"L-e6YA9?k"lAIXC_&Xf-b.`@8`1X)7)X]F2\@7-lj$5G%X^UMLK*BR<'=L!/CAoDVVj2[5(/NE4U]c.\$'d"NiPa%E$R[TA$Od23.d:dPRA#8POVqu&bfuWa@]mCnG+j)F'-Vg0kGjsYBX]nl0>e+b.3d#S/o:]N?q5(/@3\k=\jS`u8MA;t[SUb-[)Y7G0RR0elPY1GM!S4?,<&]T-XMS2kofkb!A(\REA[dHT/[;a:<[EuX$'@tP0%@c6O\W]9KACSu=@f!:El$Q#h8&oS"t(I:>Q-F>F49b.aFfnalOfQ\+=)2JcBONTfL*$-c6BYkjEO:O2aq+uurHLdbFeuXuY20M-")^?G>8#K+QP0o:-1WJ;1(s4K.LC24j/K6fsYatp]:M7T6PdG0hFRnM78pTqMY28e,:Z;b[Mi3KkhTJ5Q&m[f@Q*-Mi>gVX0V3-pR[@W;J0K-POkJTJ,QdVBNeS0)Du8oCaq%icCCc)_Zgp%USFU)rl;Ngj%O?g?G1Y?<%fmXoi!qrmZ^L1qs:X9GG/>W

    [:Vm)NAu(,pc!-,E7M8#S%?YFQnse.p?&_C=Vt@dt\DRRZWa&aI;qOP:'/K'@-IIlO=`um+J^V(ZM4ir;#sT.?ec%gc>br;rfeZ2crR=ptaB?I*q9W^WO;7XL>nDQ`)7n4H^fs>>Ac[Pomp[Y(JZN.h_`6%2)V=UB`=]qXtSJ&\<"9\kKol"'AB]8"3ZZG;)0/'M?bEi,!dnc/S9c>m(eDS/qHhH[sc9(L-p=a2ZN[MLbj72K.I-ON]-Rz:T&l!"Q`scC=T=u[9B."6Q7mt,l[8rk]l.-%@`%c*??a+">!iiFDPcp7@HA_m$PGid%E[W['VZRRju#Fcm_njaGQ<;?T*06*rYQuJB*]mc`^GA8;N=fO#\4DKo4"VhVWeZ9ucG[k*DF'WID9ohnJ[7n%S\EjBfdP-/0#E,dX8sV102?Ccd`R7usY`&1^hb1q>^=TuJ8uC2m$@54ll;J!=5G]6;Fk^#V\2X>aqGm,Z9PenCS$W+Dq='qN<@$T%@I%XRRS*B.k@Te:R*D0`#&3XhKl5Hn(o9ZNYGhD(,'"\jlNmspMTM*8O,PVSND&Tio6],U+03FW77hEUP=rY1a*spW`:QH\3u/dUIL4uHi[XUzSf[LdcW>SI(;Hc*+*I.J5Q15Ksn/shU43p[Vad8K*VAQr2s;8Er5RtaN2HTfN<,'&`;0X_(VPr-,hh.eC<"Cpiu[G3t>Trcn;3l(U]OGZMi3K!DsZ,]EfI'rKSG5]0:eMPn!/S'-b'R9WQkN0%jNZBpR0D1!#l@s:IJYRI#Vh#gIE'XB^L_1jOCo'LS%d&_Tkh<[pZ^_0ah&gC$:XYt4]K;Q?D5tgIZa7!`gS%G@hnuj0_#dhaXjLh#=#KZ?[mGcU3e';(-M!jrp%I-Yb@j%$4Gq;;i\o);)JI?^0et3\DkC!24O>$q%XnA`Mhf;r+R#2-"VX5%:/Q7XTpR(:,9]Qu"0"pUOFPaWbjGZ6X,U3!'8Wi%`sWnbg9D':&Gp)[mU(D@J2Ue)4[@r'YsYt`!u"d9<;&Y;b5WMuj1-Vc3u]!P5S\)2Yh;G1Sa&%/KB[;)[JWP*ZQg,gL2'Z,62FEFn%]=S]=Za97!5Q-h0P%%g)Ms!I0,V1K?p0Q[s`0W,a/ml?*/8qN,%0-A.!!%8,Zu4]'q8HJh9:J!b\nTV?jcM#mWYg2m_).oWO-[Q(f;r,]^i]geZEgK1X/r3H?m^A'e5T=i33TQo:ZO./sI*qb_HOG\"h6>46Kc)g9k_]=6GcC5-[X61cRHs3Ddu5=\m2abZ$5N-M6WUc]2f((@hjGi_@q1CKDCIPESr5K.nZ#8%H$4@HK&"c'pYY9j)5#4@;U.W6bskbKJ)F-OA^3obVa520`7i?J7,&X#`'nBrU(3ZpWRiQ?._;ep1sc5pE.+gGNPKDk005R44fmI%NRSU\`jsX6Y1o]R4cjsF([j%,mkmH6V!1YXjEHD[^OAG09;$L;k(6_KaL-^NV(TEcqo!m(C`M]oCoYfUZ7auBAU=K7s,M@gk^fDnaZ.C%nDTtAS#Gl;US:5Ir>>fz!!!!DkM3Uh_@L:#F7].ph[:MUl_,aV.:p\g'gC.3R9V?s0"gUko&NBM=a'2d`@ltugY7Wh!I4M8D1M`l=K_5Vb6J7Wb>AB?+^#?3Y[IXWR&(jmSt;O@R/$LKkOA!1^q`2W+.kW=mMnEe>/R)cI/"[E(%jMXX5taQ7**+0$cR-VlYJ4XX!pd+#>FRlBZL1!,N(Ea=9d2fH"RCl!6"ek%d-F6?;6CMPjf2t:$kW#dGHmHr`:BiB^:IJ``g1-RMd:`6fcl&rmeU5*'_#<`n+`hnO>%g;TQ6",7bR5/@Im+J01>R'mGV+,d0VXIU-6DmSL,`EJ`cHc91'`\46z!&/$5e'hG^\fO"\Yg8U-:h'7kjhcd22E!T')"mn,qdRO%Z/>+X]672D,qU^N>.&)r$Y:+r+R[meA,OaUfa.rkdB3\"72A$c,75,5TPSK?nDV6nAnGXXl9tQtAik5)P[<>KL#3^9jN/)&%J%)ITgFI-U8#$(W=?k[^jH"SEW3Y*\om=N\W8g!-ALtR>+UnsT=K.(_?FdM$&GZOL=&u=e^]prb[l+a]6E_.#9fB+Za1#F#ghGAlsQ#"n`J(8h%_1>H72t/G-.U;-/XGgb*9GWjbdT%8C?XLdYEUi&-fa+@a/:JN1nF09?gX2cdkKTJdc_ukaNc!OZ,r[;TY$@\hM1Pm=>$G4[TO_J>OZ.2bHHn'CY+1,s6gN=*HhZr&I:1a6Ac)5j=+7r0q=5gR"]m9EMA4HBJ8kPhz!!",HET"V5p@F\:6Sh@u1cd[dXZ6:XpYW8.&*"Ir&q;!WrPTk$imh"Z04NGY-:.F,-O*^VA8:kSsKdTltU&b19Up=MYUuDo;,95oGLt[oIsC24\T9'!85)\s5CWN^"Uina?+XUeNl-V_T/guTb*=K$mbE*YjGC@T\"B:"5X7SJBP:pejJPeG^3o_h+!4:hP*;).;GtrkdeIC'K`tfZM@r_f-7's8Y1VB/\g>83_a?aWhS4P9Q=%=Ojlu%*q!mD![r5WfI/2jFPPb(@gU(Z.?(flWB2``2/,&H1qtKp%_K;hj[pt"S?C$["C+q\lm)Vkk4aU3K;]2%R,/\(D6FStu#X.fa,M27T%j+!:>IQ4@a9R0a4F+5%VJ*%M0k(:S?H%d:FX2fmrVDfD1??2&MN@h_3%Q&J^o1,*,[8`O*r:jiQc_9I3&"F3:S09;62kX;L0Y<,NuiWAmbL3`$8H2EXB?cq:02i'`f9n&;,^EBOX!A.q0EuAGZ5p_hb)SPeXjiWDn-[+n2[:[[P"Uc+DrV,4JqXnX]^4!+e[HML+*rNuE(Re%fS$cs:If&j+n%\nJ5,$,V[.`e8X*XI(.J0IRKa[2pe3>%[?`0e.BM*Ag1^hRaY[Kn9"?p,TU#3_/W=2#d`f4PF.0'>Jz!!$uBPt"\N;[%.s4$>DI-AJ)Vjl#'YS=D-g-XXW;D:bp2^E=Y>]AK2CHWV&!CMRXr59_U2*8-&CtLH@.r)s7,t\GMPq,p29,1#9IZ%n>rr'5Z`UB'm)a#]6Er?&XBP=?]Sg2dKI6p7%T309"$[gmoldr=5[\IOg15r(S:S'[W)52gX-7C9Uc'gN%G3q>>r4%ZCMlWm/c%)CWT"_qQn)(kj%LrsZ&!)U*UA6E"2O:3f5tjsE9&fN^/1pJI,)q&']LWgZcDOI1BW`N%K#m0=kP+Q/b@f.mdEm=-euaiH0E1k;^\dcohm-h:W`?)JV(O68KM\$'f<68L9[M[T(+g.C#uDSLC"%fbY4bjACAE#;hG9b-.;XT:OM@&P:J^-i,diR9=M9$'AkMVOP#.&FUT"Ok:g(;LkDkf(7ut.:;?bamepF]t(f;H$N%%%`O]4]FTp=0=+,V^HHBM<2X1%kMb5R*!F"(f1a&M2@p]I/[+NP>!]1ordInf<4Xp+R!bB`#MmfCme+o"?f_0]Be:bGN[;EJ+D[Bldr>45C`[h]mFes$NL/,z!9A/aJ,]BEpYQ?C]reB;PSXa.kb1R>8JNaV'Y^u^[!_Zb$$L`C!AEp(iW)0g_<@l9&mRX\ki_P+>0<9H6-;m+f-mSXc4YD;07/nDVio:LC\Tajnq,mZ_A1Sl(8moB&bD:f'PJ7!*N-h20W4_Uc'SjQ*[A==?gr"4;crB.58YPb)nmhPdBOYcogep@dlX+!2RX0<_9LTAI>4T8L7*n`#B=-hcua]4&U3V+[.MT0E5"5QB4[?6YZeXB@@Y#3jX:PF)foCe$MElg$(S!J8E;"BATV"j+0n0TM$kjo74s)_$SF@[b6#$-kX]#Y&LXL!3rIdBJ<++e.O^cV2Vop[ihP'Juk09C,p\4\i[;(ubU]`iFlD="#Pq,r2MJI8E0E;(Qz!:XjBe16`!!_'-96]$^;0='qUbEi,%nY9Vj(+`RL04-pBQiHc0Imo]]<5_M),Fe[hGFgt^\Pbs?sdBt>4KKChu(@U!5JT\B$S5MatsA$\kED`D=k+^Va%M1%@!eh$@ZBaQr%ajSU8>.?RV=K]^dW!="PGR`k.;Gtrh5QAsbVi;WSrqc;gR(QG"ZC5oC26glF4Xn%3%3!91q(6P:FqW*_Ob!:/4PYRPa!$9*+n>Y]Ju&nYSKtpu()gY\DQ5h0H':RPej`=!d((oM\*8.k`P/_fDhnQpZ)W`))FSbXo/>JTRT6>C$6K6\)B4mXjrr)`jbdO=\Gk'edldlKALjo0jKg.nghjF-&eLT4`1a'-r6O?AQS=E9`-ne`ur:tDUF>VYZ#mgnD#bY(e5CZES;Rs8Sh'*q9Sih;V^k"(A[a6>D:$7:09.E>\?rX=9IHSnHfcAUkjN%q%4+rh%$5?lFVQHu&KqK42BFYL^]YT'qqLsZYlDIrs@:B'g`9#1/f@5Cka=PRq1q]%,Dr/.snF3*R8C%9_p[6RF:6uC]:q]/=3qL_ThHo0?FhrY5ls"lfG8d/N4k/*8=5iQ_W*R$DK\&ZbXb.[Kabfno!?(97WGk'dI1drr#l(KXfRu+ZBBe3085QCYFAV.k=7(/#On%\nJnnN7*nB$kAR@PFKpd*Bq>1On83%FKYkb0j%OLO+ss1P*H;3-;MC1qgM'OP3S)]Kaq#&N,,p$'r'a734U<7%Kr=fkoEJA]KfOH%RsElR`rc7co^_VI/PC7>hr'lZ8As+J=MT%I3Q/_ZL,R.!usU+4'"jHK()'&73uP3F6TFFEH?MF]jRnRq;0Oa[5&()Eiro02<`Z_1Dii\ank*7use"aX@`:s+0$U!h+VLZ-8jHPL$k3YWhl^>$?>\qRp[2=pC6bY[!rr<$z!4`V)5*B%^NbG]S3Ce@;,9>#]Mp?[t4X4(B]?FI;N_V\Bp<]W8EOQXWC)m&]-oB0nRf?)-+aCoI/Xp8%I@giaXP:'/gDt=Sf8r,KHQA7]f[r:0LCR>_$IdV1?O$uV^fn-FWD`*%X\ki_R:M@Bp!BY9W9cFUb(]2.BT!WXHM-Rro&WLNH$++UW4WtbFK#?@\ZTi+\lh5bSiqFdV.nbs[9R-9A46I\LXIDMTgFI33(HKZ2fIQWc_!@IVUN/<5u.k$gm2"PrUAbJqtAsaK.>#<8kK_&GI4TYcmGbWzzO:)=%$`d7+')PDjkierhYo#V\6V1i#oA6eHnB+h;@`>(:UK&T=o]aht6%`q(Y,qq#1^E9=m/#khRoaIdnF1Btb44N4ZV.`Hj$o?9CtZ,\n#96`MK_`5fHI0B.l>u=>Gk4:+_-QS4`okY":W#[]4B"rrWY#TW/udiLSdPD>e.^&ck%JU)1Fl#ldi2t1WiUR$mV]A`j_XsdQA^ub>'6>#S@X\=U('k!.(S7+sS>!041l*o=hiKH]8q$=Hcde=A]?`/+DN8#DE9#4*Bi,Nl,bbWg/SpnNU9jG0NFAXB;_o7W2YJI*!p@WDZ16#klV4[=Oo6q9[:6F0\HlZY*("N'A]A8C5*mRZSIbiVrfQ$6N00lKGr\5R;V/.D!tqs8D]LljA17lkpmR\4D`+c_!Fgi&gu>z!!&)gLlICr?b\f%R;?e[Y<#:U83Jde276/J2U&8%WTf-H)s$]uYseTcriTP=<$]2*q/VlYAV?<%m,o!Q%am^KZtLWD'(bD#O,jf%jm(Bsfd3CC.kg6cqbuAcn!H$&K']p_gI11MqXc5[FoD/ZSU.4`L0`_[G'<"$A\NQfmbYW-_%(b9U0JrG$L9<\h'E]uW*^"\/QgOA)aeOjB+<1V85^0%-$[_X9AJQapW$!j^]X>i-91?Qt4Z"oLP&9_A>-o\")UTZaCtMR'VI75l1q"n?F,V[C:`=^p&kkkg8PDg:O,o?]NMTc;/1`>+0_"c$f,btSGOOCbY"8M4c'gNL`VnR![FMEc]BnnN=A,*PRkJ$V:uO\a.4OMZT75dH,FabHb:o237+l2Ueaz!._3Y$O^I&b_2ghV3jtriq6-b_o"i$hhTUmHZrc6Vu?D\A!%s(KHg!Jan+N2$aj.4fCI22c#;CI+hLg7*2J@qPs[8,#$kJ===LF\^K-J;lI;e\2pfI6>Qk<@)T564J,[+7oUe?tAkQmacH^b*:a6CV^e7DBD_s.(1XgB$Ia4HDbZaW#bp?J"0oZLNWPrD1]bVK3WQ7$!LU%BOeZ2c&me?NH84Z;([VZshEP=_2Q7T!t;l?Ig3BB2N1u5`cl\'2?P*2hEWM8]2.QbJ__=mTrX?';a*JrftkK[Y8XBiG=Jd(A3d\*Mhd\TSma,V-"+sn+Q9oJf:`uh^Uh;uMPo[&0n$OWJQRsJaW@cECg421aoH\G>%;Pd"7Vb_MZFk']4('"=7z!5Ngb#RFgrKI3+E^p.Ci`+7@g%jgZ"]>lQoR:P`oF*Di[c@&-9$lQqKc^[!o9U<&m[-lb^ZWtJ-(CpucQIdWV:=2EnIJUm&rV"uaC==7aE.Fe2DNg=#g9k^!8h2EmW2M,,0$/gJX"/7a6\c.de$E=K2E!In,=iaVK.QLi)mX=h!n&tno"95;JiDoUk,)#LM\e&;fu4qfV2JMfkbTKTY$E8R%j*u_p?^Juf<F6it(J\"TSN&zn1E\clDj?#=kEbaC=T=qbEhPO]D([FZaXl1p@S"LoCJa7f,m5+r;?A36:+"RC+?EBVPU+8-76aP`^WEeL4k5mH1T&1g\_!Kq\Lnl4ETeKPEXJVace16ji`uB/M6eXo&Rp!FQl]6@cuUZFc0D*<2icCI([OZ?bUpHj1%!ag,(*%72D4(i:TpWd"NP;jN/($CWr/#C=Dc/MH*1^mdBKM$C!i:j(+j69he?1I!em@Y#1sKOSJ:Zs436X)PR07hPX/Ag=Y'I(NIQ[-*gWjeuTaq.7U=Lcu?pqIGDPbHaR!u=,RLc<^[];oMGK#Ra^NRYp4$@eM3A`LMFd!kKiC)jUC[:9W_M).d'e<>Kc;3sq%i'rho[$dLC@SP:bfn;p=b;*\WBTJ`zzaRuW?]9\KmaY0R]8)VLCE$E``ZY(!e0qqgWAl#$_eZq5-8P+;#]h=\EBp;n3AP$FF9hi_YHK`1t#?e4kbEo8(^Mr-u+`Y5Dq6EX,&J7mC>WDuN%C04sDr*V=^t>o%%Hj%,'!]I<)\C#K%TGCZ"$;SM6f7FUXRRhi9T^P*%4XVJ;P#)g9k]D,h$FnT0CZc!cL=hJ=W5OJ,+g.)^]J8]WP[SATd+W't%2QDV`HQ>8%V=#5(fN%)#V.7\GNO$9pkg]"4n:$p@Q7BRJt:79WeqN#k,C,U=YY`/c!)js/$SF3/XmfHGX*-Vke;/=.tp1,C^"^+E9\N:u^LA]`>p8'@2M4+$\f2fIPdR[8=7gV$?lJs2C^/j*ZdmbF5;=]"p&7r'EVVU]nI:zzEZ+&cSL[pQ/Hj$mBhL-_F&,kajT3/7/c^q+1hlgBO+`WJ[26ookDi?8ETE)`Gg:r,eO^?-8hnueT;F)%1C!N5/ULt*+U:1<_nF1B4B35p5If--LMPmAMQ'E(W@qfYfB$He2f(@t]il7$$ceGh5ZcgduSnk$TMT?1t:lY8@jU3/(TNA='WqYpI&(M@;5_4WC`SeRb<@Dr.2f@\$nB[[hRpCh%>ILc^Q$8Lr?G2eURl>7lfd3GiUnik_.gkuE9hjBMCNo@18Wh_[Mi.t$Tg:97Dr3a(I8f(heZ3_5:?\D2EH6*ZhgV9P5oXTQeP/?o,e>lY(2)UX_r;?@H'bME*m-jDhc4<'ao]Y#:CSspu9&K2.KSP>hc$'4HC=J=\egWaFS_ncB5!#Mq<"XRh=.;*bj>u$p^sUPl)4*u,?+4^BMNebGd,a9Kr;#pl=j5.8L$^cJTI+,0FKu;q3Fg&;k(BlK_Tg>bI:?r+qXEH20ojAslIDr7C=J$?Af/S-6.Hqja4J'iJ)3;J#[pjj[pV%&"%peYKH]cC?mGm\N1_I/+gHH=S;/ctPpZ#C<=*UEcKu]Q\X&cKDl*3Y0_B4:*_-b$pK*TRZIbqYYX$D4;$D#,\c>N13`N%g:TN\SH[FWp[\pb0F7Ni!A#GJYZ"Ueqq:u[$I.M@HFkgQD'e']@%"7sk4oTWq&^q%fZ7A;k,oU@m[)?9a;z!)Pt%Eq6A=]8@CXc@.Y"htQTsQY*?eLCSoum'[%s,s=D>`JPDIlId5F^$J(Lr?d:=bYgZ-ip[69iCtc71QC\3_"\kRN=Vp7u77TiQ"pV(u5Xi#%l"/&(amO[ak[B$$/hW0e]D<7'%8if,.-jTBTm!qhm@$o&6:Vd<"jfWUoARRlG15uN',N9+QsCKkTe_dsQ:2Z>gant]U*H9OMVd]ufkI/3=>Slf,uq>0r"R4L3Q2'sXs-n+<@bEi_]5.l47lH,5;p[6kLET>'89:*qk0k9S&YsX6Sl.NE+:I"fr9?)8JjDfBff:m`o"5A`B,+fpVqOBhXH75EIpYUJ`^T(GCVMRo-4[&W5$/P.Bb?Y*p3RAV:5[UJ@Z3aJG?"lNLVVO\Yh7lGAnH8UhW6U;RRFI:8.Id^/hUJCaG2gS90`S:h;-4&q6tHD;Gsg-QCa\NYY15Uq<+B`]Y%eIg""W\GOODTm2?"(;q#*&q1X=i@I;dV/:_Ko_M.Xo1P(9!k#Js4jclMICC9]1eH?!X#g_?9HG5R4Fg&?!8l$7.T9PK.U<9m*DJ6]m=K,TPE#WUIUC5hnOZ-/mVYiDI(#+r@1gIPUot#$)Z.L;56Ti@\PEFgY:I!r@b2F-`SLR3Vh]b;$]RkJ>RW@=Y<^S'[*dtf.R'W=gM_>BW+/qr0'phF6?K=J&RlBg-kKam5=h/RLn?&+Hg$mtfW32p%SV[;*n.QS594KssbU*AhGkMK;E:nDV9?"Uc*1-rE=i`ii==cCR1Gk0K[G4t0O6Ql]RkTV7+t]=N4T?L;Sr%oiYZ%F*$:7O:`jiSDQ9UV'?_aTJ!Q1IVkLR.h77?WT%:]WdF^ZEY*GO!\WI/3@/o&VYd2n-&sTrp.Y^juC\pM9S&LH[HTMC`&EPkCd)uo/gS24df+/9QsW+7(r,$(gLAT)M5&$8l5T0G!M&T)JHH-h(NDb[M2@)D[V`'O]m=k.7d8?tob.aBaH.RHcoQ=7aDt$:o[#._52;o'%ttCnqSZfZTTQ-PX&aUN1s9DIT322@@`bcW)A[%%UOY)bTaMVe&@*6U&*:",2Gn5iz!!!"L>Rt&5['I!cJ*Hk4^6Vl'=P2?].c]mB>c^4#hJjWB!MdAKd4?[hgI9:%9EHM*^hH1Kh*H_[@2=dl_)2#<;P@;=Q`_MSO&#P6Aeldi2uio5Wp;H$MP'e@;<\p*ULQ572G4Z#;bSZTu$)!_ek0RhZk/E,s^ChS$OOd)(E?=c*Cp+672kKfb^G3m<-rl'd3?aF?=<)cg$oMEeXn`#7dPLIiBs/ZcDeg,=OgY92U2a[I23IiB9Mi.tX9%g@Q4!D8k`JYPcLLnYpbq?(b8!Q?9&cKA"<'.4FQLZ1m'8keeJ'pq/&++nL/F^8$/*;`Tr^;)r:,QZ=38S+XMnetSh7t9M\e&1d@01N]Qphq'`\46z!!'_fMA.MVIRi^5%u"3@[;2*fDr-3X)traXT76cXgU?M9fs?_]5CW@pSQruYT0@\GT.IE[`4[\;(S:2Y">X=0K>`oB%N&Wj#9r:S44ahFa%_eYuKF7un])-VdpWEojH0]2"q[H1gIQ#7hl#H$N8P!s8WiI/"6f'bqAqoC_G$\@=MuBi7i,8kKFPrCS1WF"Nq+*-c[WNLm96PkXh&Z@C=IR_6)D>BodVs^=lFFBCs\h@XGP0Gc"0+u%"';trV,3N,;!01d*V1t*W5GfV+[0;\&0^]'2\Z(os7fQs$&u5*(co_5+U"K,U=YBD;-tl7VgGJM+AAWpRRVTUo:hXp3i=8@I!XBAKYnB7i*$I5,":Y?2'B$N/28?UH0oB4H'#7p4hm3VPIc@Z\-LXIt1.riFZ$-ES,mSRb8CRVTnJNQ%WS=X#?Y"nQu4i)l,Km@uj*^4srkg6$q",[sI>IH)B^_1A_zzHophKm,#C#UONLm+sQZ`@Is6NIqRtO[$r2912u/:eI/M:194K[ArU;4Ap3e.:"AK,;c@o.grYkZQ(`Q8C=T>+0DFqms3Eq0S3DAt_M&Aa044/.jKrOD)Z#dm>e+n:U.("&baC80lI9h6`XO"R]Q`i$^]+(Fldi3(f<8PX8sL#89%9nC:W43?3K`h#E;ghQF*$po4aLYli+Zn>1ulfI1#nmUrn4r0o@C$JWOW3A(f6kj!PYPFGOI0/'7K.H!a]2>4aZm%Wjp]d*q+PoB3Fg>sb)\#^i=YNZL@+?Z`lWBW1`M?HH"R\?-,g<2^qU[i^+t;95?**r>g1o7d\n%N[a"T$1nHQo&Li*t)ZIg9o(+7ZSTBc$sMElg,+Wzz!.[=^Hp%FEg>1T@clVG/TV*Fd-0g'c$a*aF1,1N2clQamEcSJNI7\1k[m#'+@,f+]lnhLtG,A*Z=Bf#$`Drs>/MJkT]S3`"[,JoXBBa]fSit'IafWpd;8&^scThFHg..6'iT6,O!s]au*@#%5N#DP!2L"RoOVqjuhS4P)+)tS0%NII$e%-KOR58JReZ)TJ6;=RC[_VS%f2]:Uq=FM4m1enQ;$Pk:$;nRgpPu'p@JrHXAM>rLs.LAf`HQX";<2d*PTQ`f!B$P4J27P2JP)z!!!#g9bAEfcMsQOET;eI4jkL[B$D5UG-!u=!c,`.$PubnH7W7,8;n.\B!5OSC=T>\C$GWrrlpok(WpLH[&J`@8l&6T4F+5agNiANH27$-VP\AUFN5g`Ou)t/n#m]S&-.hLB[D;&V2cQX)VQ3AiUGgDr(YeSF__<\Wr2em;)'jP6[8DJj?o>.%82<0o4CI!g=K1eoXX\T;DIXH"FI2&L_P]R'7NE7@5/[Vap8H`,>u`/p(B5aQiBRPfhC7'?^t#-s/ie+5q$e4!`d&iLtFVh\TjG"oOA?`U./)`sjJ*C)sJ,]@FB][C%kn/?bO-tNC[kD$uFFaJspp7!>JFe@gSij"-/C]6[Dr7,o,(`_[pd;D_1*cLn4p5+9e2TgM$jd@Pe_ZP<@drW&`/#"0[r0/ZC-Wh'HGlu#Y4YUc[p%6Da9MS/o[&DM#]"5AZ=V3;C=L>Pd;e$UGrKZubQT41zzO:uVXGNTd2G44:)BTKt/dBI%H1GcAMH1Me)?JODo^153DoB4GDF*#g"",Vkkg+V'*r:k9nb*Bl!%6Je%S1J".%NHH.b*4@(W)9>H]mJ(r486se1Jq"HL3Bcr]7MMS,T,pgOM`mT8U()@Yu&eYlm'GqZXrrr]5LPCP[PTV+m+Y>9?&,mD+e2$jjjf;Lg@[f8m7ZSV(H1PY8[ndnWaiVY":/3@WmG>O'%II#Q!Ri>SIJUrQTE"h%kg6#XFp%dFzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!#0NH+!uSND&@cs?\PJ4)kd)RY(prq,i)6TY?i(_7ZMB\'7fE,`%T*&%H1E40.>e%nQBl,rO5ssLo&V2<[^NXDrr.Xq$L!f9a,g8mdn^o@Cj>XIeccK*Dc[S2aqj?Z\qG>[6seeHZU+]O]-Ip$:5ug9p7kRlB%ZCEE(>>rclN4L9A$^l?d"`e6UO5K[.F.eCDoA"pAF0QTC1LF,E$KniSrip[;&]M1cTs^\5(51$QA=+6-Rj.eCE)LFdB@Hce@+,$L,Tj)lFcBJPkCmm*,;7:!+Lu*es@ozz!(KIN8rE*r[6UQ\PsRf(,[4K^DB6KLFn=`iq)jqfl-lPu9*5D/<)2rA_hVjKROq^M#^`PXUemaO_Wk]l)E!!Bp"(WkVXV4eW-QFB)5Eg`NROb!j1Addeu^gC\86/MaHJ!tS2kY4jJmGcFQgMAlIN(ALA!$2P*;(_>e!&nR[+nt)`26D.][stfPb3",A8K8?Bm$BmdT2QLA'h\\9$hnR@0J>V59HBQ%anqrLKd?*BSG?)t^4nbE"YZR&tQB@!0(p?;NBfD!7B(YcE;GB@p@66-CR5b#!b5Q13fX))$GSG#_?qQ]JTfsAo'HM-RBa2].Q,=R!.IJGrT];UHOLCWF02/Cde)"qY+3,%M6d=a8dar&iD,:,B3\o?WFXJ%0r/2hA!,gFi`RlC.$c]]a&n%\n*]=i#;"nV1RkUf?/2H6_XNM#?$^<8?Qi^B)JoB+-1K<)chr;Pfb!.]NIKz!!!"LD\a*]NVNGIZSn[5?bX`XN?()]/e>ANiPUGp.qLlnc-;4YbPD,2hg9Zq)T#3;\om>iY[PGcK*RUd>ISK5GO?GN`5fnG3&ilY3]\lG/gVf4&=_+se*2phUnfYN^-kF["p>'RH[FY\F6E>gj6P9uRl5+eNugHam\@T6Y/Rr@'6IY;U[r:HC4b*ID/tA0AbaC8T=-f/r1QK52J^mf`l?"D.n5L:-!:lJhS$O/jLalpPGKnBH`WtsJVGi?ZaEN^>n)%cGCs%tk/<-3kSIl4@3Z?b$;90'J*?_6Kl'JK*F%pmHs:`iM8:S,9ugCcd.!nZ"&P1$5GJm8nRSN_$UB66:/UqqS%CT$5SL6.jdnXEq`]1`ufdZ[/=9\rFKZ?'M2%pB'r[!<%5Fi$PtF+ac&W*cA>*=6[.qOV'BU]Y(oVr,DbOCa,`Ibr%i8tHhZqHSP21pqK/$ijsIb^EO]Dm!`n`?!scbWjOIIo(cH2t1fsKs+e5*o29PgZT7=/ZftFmA(P_5$3]a>k,cku1X$\8gOS=Q&oSX^&D70#tD:feS!Po]=8_4$,OmhnT3@WDcm$>e,(I*]a/X`JZZnh?4#eL4t=M77G26`)*)%ekSh0&iKfthT2n!GOF6hpb4iE8k+Xd$Y?.#A;!X)q!]FL+Q2qYf3VciNupT0F`kBFq=9q0B+>tF\7sEh,tjOtR5/@BhRtDo-6lPl-qt*Tj:TM]rTM[,[di%rc;&%ih*p9\\/ot_fJ2c/Od__"B$;+Km#OC1..WWB2`EZ'$O\*oh$%g&o;'3mmZA_aNa02>mE(P>1t7;6K[;DG?I<"C%b&omP:sPd%3%4d"%i\$#Q+>m4aZnhqXs1(7%6,R?G(Nf]=Y[_>iE4a4QMHS\g/ULZBMo$.&*e$Q.SBzz!#Q=(\ohL5)d6tZ04);!VMmec&E(ld<:MGbH?qXPdQ>jgGAg1dXil-=BZH,RR>#_FcDa?;\T28Io#[(C=f.l^js.!rA4H6NM2@AQQjT@SS^i%\!ZrL+QJL'?1cRHs0$!a6c)A_O(e4ef%88P']W4l&6E=.h"qDVTTKiP:_ilHDWbmlLXq^DA`V+=^W8)L:HTuXBrT/q2_9N7:L1RDituCqU])(V$?S`o+Ra?gph>jCZj$9s6J:?\oUcqr9$aE:Q;a]f,F@Yg?=$s>#\l`WM>@,IVbWeGd>`"t[L$l1rVQ&u(GB+-FmIVrLCZO14C5aLl0n'_(`4).)B'2"&KMl4)]QuW),!_"(3G%^OQ:[p$:eeT0Ic#o\R9.f=Vjia"F[V`WqiPOWqO5I[")\EYo+!4:\R\$*W]m=h;k+Y;&fSQ5?EH.U7I0p>ioCMQpF)sEip?\YNS$Fiqf&-JuTDtjlWEb?\9P:>-Z_iUj0ekD!ICMUt$E@t6RgY$AN>bY=aPs>;d%Nf1bA+r/A]afAl^;ZC>IKdDZ(.kMH?jd5O1K>kL8Uq^BP8g/em6";H,5;O\QjZ&OHLn_Z?#@"mHG\6/hm_6/!hQkWZ4HQhFzz!&,+>#7kF]pTrK"p9'N+FU+#Kb[r8sm]ZAg[ZY-aagI@h!Y(@SVTc'8F4B\a;PKXJpg94XV,HrSYP'l@iI=BONX\`S?.LG5U/EK,BGZ9K7a7V\k\eWdF$?EVIWnfjjHM;hcNApnn4eAl-b8%&bpuckn5?i--98rA;V-S._#UE<(?Yl3/HP2LMJ`@;FdIn9ZX8sOD$\o+S/4-*m,Q?J,AqV);Tfa$31&+z!!$:\@`/QGHTsTOTMD%=3Hq#[;a$@)GO?H705K.?)&*d\V%7M$]OUaiR,YQ9TkJeH^LtRl66@/b3#NZ"(iFI@sZF?J7K2OgtRVfp&]@:=WmAhTX2;[,YmH7LIf.jIe!$pTFcq9*!#?')9F9\9&ebqBPEU]!7"p7]"jMsr)+p^%VG\_0ldmdp\FAt%s6eXNDtE,9.p&mD0k84S!s^Z".#+UF-p^kn_a-4re0rL`P?e^DARc`dp\t-g1X!1Af2gOt7L=;G\9[].iSia9PqEsg3]U&?fpo*t2e##j@!EJ?W1_VSYd_WacRO@Gr,\eV/a]Oohp[@!8P8DJQ?=$sTRk"%e7?_#)Hot,Qm$)A\1h(??:2,AaOqLSHRV6@CUj87Qga>mhctl6K9"T<9?EmtYq!mD+eZ#mm3;$*sK=P/KP`KH0mqW-S6NI/ez!!",Ls8MoaQ7Z<9T0@\dcCGb)?3CKhWq3,nW[>sCQgnF5qW\2^o^D/3q1+qi@+eE>`'I7kUXeu`0+37PFhY@"JLo@Uqtk%%/PSBMdg6NFc_$gJ=Vj7M+GbPW;Gti_P:+\H3HMKQhhgbbepo7Bcps-=%?gaS%2LKs:g,Gk1t)$CN6JE69Q2BUp?eobL+c73r>*DajQ'iX%(3@FH1L$QMY+5ec!lOo6<7WppoUEc@O-+rN@c"XU\Rl2"?'JFN*fHggPH5&"3;p?gV@B@",0kAK1krTr2n+!7,j^qd1YYit:aIMpMYc];Z8kF[6W0V0^B.4eA"<)f(nXN];JpZ^/)2fIP8ET4p69q-8$hR-lW<(8ommOU?UjQ%T>Ln=:dIf9*LVJ=Y]V)m_[P:'MDWfJ#t-7C8j3&k$GPPe":RPJX--j=D95?Y3q$#$[@Q^BgVWoTmS;ls4\D&cK6A3H0M!Mjbtb081g'.S3MLP0bFeaSXn$LbZM#ch7?247Ap8@0<`EW+0/*_Y9$;1D.@'3If+H%9N%D+q0`#/KrIML[^Om0`([KAC\AJn8dGp^]mEh$CZn\-,sPN4`\hP_W)!9fn%Z2Ll+1P,Y,8R?dmdN]-DjM,VI49$`f9?>@DdhVEI^8EX'WJcg=1g@WD-\;2f>^VA#dpG&'`2NL0UB:!Tr[uX]sI[#15e,,5YIiP5"G&f;r,='qI:%hO?HBMTgGDo]c;Lo*."oeZ7/KoB+:TI30[M5i%L/e`+Q+[4t+V@BE_@"B.aH'[coU9:@9nnko.S$2!rYgGG>HPY1Z[HcI6e2HF7!V6W`N6)UNS,UFba'JE/,&J5UAr,[/sT]Z?EXY*tpI.ZW")Emf\fu%IS?4VJ^pp%3r6in)Q<05tfR65ffLd.q>[5e0TiBt=m\g#:2`9#qr,EtZL?i6oCV9GHF0FJK_iouA]t)Jj,\-Sr(p\bTqS0R1c;=^QimBhz!!!"\KbGh/3'03o5(2/8e^`-te)0%I/1`>!-71H%ObjQ9I!e&)(`4)\C!N>8^N&:'iClCsaK?,BS""3"\u7\IP"pCPI"Ya*<`TM5$'JL[DgJ@cYA`[RV$/rHQBj"pj9`'/Pq#cH=[[R^]!+dE(Ddl&'bq].9V'5[h>QWhX+q3-?GCsfjN3U4p$-\dfJ1p"If8q@$Qb)Yhe&>$7!90G*V;l=-bH_*?FmbG>tHnJ,(c(SX<(oW3(.8kha>HhL$WhW$!]Y2#C-=mskfgh)ES__\E,"YL'AKi%tF6?oZr\qqpgoFFC!n7YXmtGXI]-2C%e"rAH72"Yl5Ee`nfKl4KGbaiEhnSW_hSa=P0mR!h4%SWoM?=8Rr3*)A"_AXIJ\2AG0&LKn@,9MdKA@-=gR\\b@ctULc\8_*<6'>z!!#9&n/?kDiPM7CAdM['C>HJ/2Q`YX4Z#;bIHJbAr-gfHU:(m2mbO?Yel3/c^3hs@e_.9AfiR/:7!APJdCF=2Oh%dYg9k_?e?`f6ZnWk'X]dTu>/uXD[C;GBg?YHN`/,.1h0\k^.=C1uZ"k9__?SH/%@H$2(ToHHbTSE^V#;Za_7uu5u26qiDe-aJoL*%qK>e-#/RaBDX.k<+nc(BLbR@Pe7H>%,2/DG;Bj_F)GVb`peoF(rr;#R-s4d>B*.9!)l4AU.ce4IM@>_S!V\jPF63<0$Zz!!)(DN*.CH*I9,4+1+/D<'U7I2f.,SJ-O8QA]pC=p6H5LWi7&^GL?'ToS*eoZEM2b'jS%T$-U;@4DET^Fc2ZN>WEocB-S)i#0GONDd_dd.bioB'%HqRcV9hS-Sce4msDf9Pq=4]fp%UHS`6$4VJ8P)7i`"=4`0Js;cW5-<+&,?[%-CObPpn7r;#G8&=/Y(C=]IX2nNU!\Ng\%udhDC@tF&J`6FrkF/tCAB5>DM[2IFs2_6rhS4QTJ,fLno&Rp`-659t\>J\>H?uU+q;jm#2)tX:z!!!#[5'!SkTGi!H,5]BiY0E$(A5b%eeH#n[a]&mXPeX>4A0,UOjMQVp:9FO$C://e,([7?SG1.I3>_5]_2aqV8JGOF6810EXV^\u/'M`aR6G1c'9_HRfB#Y9-SpY3/q?bCXBk2o,rq8.gnLCP?!Xs3c=Ti<5BTPH\i`e0lIZ%o;UFAj];)]9O82KeHE]j$12[<%j*Y$R5_NjgU?I3af(!cSPu<<2AblTku/pndj5A4%p,;c1,:U\SiknYpYDW:P?u"QXZH!aGOKe,B'\$MniaZPr=l&2&*7<6CO-)3qXfW84Dp<"Z^:Wm;a").W,U_4UIL5(ET.+\jLQil9D#*:8rg*LW?+Z1'(lBR(sAC-YHg$#lJB4$;b-ENoSe]dUT$u)j@]s$$oVeG5\cKn%6Z:!j'/s.Ok2PmzzN/\gQ&W#McLCY.9(4mKl/mVB%6Rb&8flCm:k^4#mY=0JdRL.-t6&U@;>J,YtaW)ffUFQeggXfXp0QBmh(LCV"Co;;;hhRpP89he?9luX=\QVf@uPi#8BW`1FtLR.'X=F=h6V+[/Tc*D0=1B.,.B[G]$dA&2>Dqqjb--h]%c`LE\jE"[XBWm3>rQ$PR=q>K$XI5#Zj5]1CPUTP>Ct\dap[b+l:f*5bZ\%UG[;DXA&+.rMS+'G:_M'k,X5($o:M-$]S3(qTrE$*B)Aa3f,%.oqprM:nGOF7KAkEuP9Fl8fFJNfOCnt=HEoY3$GBJ%nA_TCu)sUB5h6h$b]Z'sPz!!!",Cubk]5U.$r=sWl>ZtN=:Og6%>IJ\3H^U7h,dchOpp[?ui`4AoBoB+:t=OW`\.[';jE#+R3bH6nid9[@Vp@dWE\N5-5YXT,HS2lep*AqSr`+ih'jN%r'>t$!l[V`()@k(#?817TETMWeAF6?G";j3E/j5]/aIJOWn(?XrKqtT^AZY.V@\8d-6%j!j#\O=>qg1A]N9b4'>C=T=ajiWie^4L4UZj@3P(25-A,_XJoAu@!kmHEc$A`kLFZ6XiE>X>c>mFmh:4F-L.Q>,F.6\#.7GEuj_OsOSmP6L53FKe+nIkYYu*kP=`4P6D\Ik_g61f_Z0m-Vi14F6\+rD#XA.l1P^gLW79N/7-!Af%.9Xqt:qnaC#6ZRq07RV>@:o?'*8%:^-4Plm>Gq6lekml<%4n$:X/X&)FjAYIqjUzz?u0AO&L8YKmG#*G,?)UTLF+ArgY(6d4p\`nZ6&l(b82Mbk]A\@?aUY:^OH,\=>MiuFSYLhX>kEJG?l#O-!KT-eDV?'BYZg2;l>YQqY7F3do^e)Q)*!ks)<"!d\sX2Vd[Jtg,Ps]X]r9?;U1gpV]mEE2(r@*A4H)h?E<8:RiZ=sYq@^aE6!tZ?+Y8k]@qP3XK7^>>:+f_Ak&Y.^p<.HQVW"K$PtEpX]e`XLYmRX9r*17kg:W@/%bBUA^Nm*j5XumCfh^QU7t',;+hrpI[js_d:HLkE1n-r>HU.UTp&GZ!Yu2CbpoHdm*AhGkn@=sTR7:%dBr9hG'3i5#^$m3B7"l])ce%g)UJZ)DA=a"Kh`H`40@nX)p?53]eHj:[LC2\fg5[%,k3h';\f1b)=JSkYoY?"[neq`5z!!!"LZ&tkPnFG\a\om>EeN$rYP*'M0Wl\S-!&Hns[RD'1kkk%)8/\#1^o!7\tke-RZ6[CgFYreS//9cr(CfHhVE7&gc0XHq_W2e5T4>:ULBS:S,e9:REh%S%A*djJ?VAWnKFu*GK5%]J_Thl;Y/o%NIHi5C\-JV-^i].WcR,kb/2&lU!p)VGEh%AS%^.X$qp^CsAT8d?#QLRL'9,b^uCVSOQ=Ap[tOdX-hC-<2rnhUCje7ZXtaAh-\;2AC3cD,I%AT^5!i&X&lJ3JOW?hqdd0Rh>6d.;nmd0VQ^II1e?4^]RTsq=Ku>:mUF1B\keaR7SrfOTHKB9*BSFWcC[>)A\81$'Im'Q-rHmgkb1A!j>AOolL;r?T2&20"TSN&z!5<"Y1kMO!Unp_N$4BlE%LtfD*GGXc";Hhj3@@Uo<4J_#p$3D1(T0=GM\e&ALkXs5Q-1ciVlo\hUDiHi4aY37>Vmce4$3%\D9eY3@r?0jZY%I*mFnsbgQojgf\"h-9dM/71HSU:<0>O(F=YV'0gec+GOOCj;;OZq%^FIZp?eoN5ScMI*hC[-rVc\kej/,+YD7T&nqC4#[duiqW/'fnZ%II2VbS7pg3>jiWiMGOEfk"l9/7"9n^Qm+lkf(!$;'QX4RA:-9hsBJB28X$If47._jR'dh6T3+gjPf_M2[CRN_W,9Gk^VHS[Zhe9\PB8@VTjJ5lol,/**Dr&f%)=KKbH1.lsE#UnlYqfJda*6psF>c1J\%+<]UYK*OS(5*mp0VN5#,GBZ*0eZ2b)?G)Z.E8$FT-UB'3H)SC18qtKR.gp\\BHF2@M@"T[4;7bqz^mOnUi7tkaN>jfgs&ldH=lH?`JMI:lUPErrH1PWK\X/YLn4/ahBG!2PWJum3G^-`I>7q_ga,dJ\PEpu]PUS(RH"^Mj?@rFk$unj`H?s>V'&E.U5u(0M;Gr\Imk%bPYebX,kKXgGOFQ-$B[J$+)IM3@lI8E$*GjQCF[SWNpkI2DdB-T[@[g?#?9Ktr:q;rZo?\-&f:>-USk<0h=j<IN&S7T/g+:Hs^&;>310+X)Ee@-B_;/g7>To_%n5Y[PG3,=gs=PE&BDk$GfO9ta&;E\^oSFBR&H7m.fLjS8A,?DTDVP026S04);aIe`?e]9b-UEcZ;CF`eF+5BPM[?0m3LEokGfmbH4Bi9T!udgaJMgp:W(HV%Zf>4hP\g:(tUWmquV4F&^:$K)Zu(Z6nke2G?+X4,Z=V3K7Ri873+Kr:XP>dQh7BHPp9DfN8sLmXY$D^uS;sjif;DW!i-\Is'()hn46PC+s`NWqW/VG9V;\naZ-Xh1#1jjX$ebQS)R<]4oKV1&N,ikFqf1+O-B7fBR6O=jbM'O3SlI;f7jJl4\,W:#*\omj4FlqiK()@[O`QFDo@qB4_D/F-"@q0:i>J>K1H[GW^Pq#e5;PcjB)K^0^B[EDDP:!D9\*i+d]Bkom:S0fXD4p4'?+Y9s^Sq[32fBJ8+ZVQn9q+%WF)%L;,c^T$ZrHdBFPj>1ld`$`?C7!78KQ"rH_X&i'Ws/2o?b_*9OZd]d]$.m6QO)%"U>8?HfRCoPR4+VSXl>E]D'7^6t,R6;n$XM.AK_GZEi+4cXc"OKsKJ&o&\&`2/=\s50]QU^Nf:CoLeo+H29k`NlW8acU7Ns%u/Z@AP3mm1aqlV[&EcS%_JM#Rge+%;Q?RqW'fVF,!?G_)`DM?Kme>r,T]T^=rJ>]5&Ak*M-C]<%om*:4>\]EO6t>fH)Pt;@N``Z!<<*"!!!"XTWkZIbKF\ji5'e]B5__'C=T>cX=TJCDr/,U'Wt<.7SZ^=<]fD5:!+DqV9Y]_rlKUPhS"8[KpUFe(%T`/,MLX68N(5?8RnM(haIlK@>CDJh'@.oW<==BLs%P/8c=!p-+pl5Vm/bY[c22X'.efO+m4FU0j(WD]R=p$0E/kt4KA:1ak_RMAWb/3Y[A/hX:uP:!AYV+R#)JqDXUqT;1_O1pY",cac%]UGpt8b,\=iVX=n=0Grl?e$kAh6q/>Hg0V5PD2,Q^LL>384\P-Z*1n$@NSJLqP<`Uop)g7ogio">.&,0R%$3er)ad]bHu-@LID/6T93^9R%[\b!n),A5;lnauILDLmi(hqt&DdMFQC]R'7.51,OVP1U0RoVmtBRp/^Jc1@U4I]+rKEF)rmQ)C`tgVh%KR$\_j/Nc/nl-lP]JUn=R5.l7:0(&)TV+VjN*c>k5Rl>8/F`hhHELA_%g-9$E:c_HiNs5N^G5qUCz!$k0.8_LIbPJZs9K"#[U8u\M0oB&C8rVQ=^heu7b%XSiVkiaG(q5X,Od6la])3I%G>e"a(^&%QfTBe[pYD\;HX)QL_8Q++DQ+28kRj2hMr:qfM.'+Lo=BLr[S"$"@SsYo?qXs/%:S(h+If83@KBeaCPiCB&B5G[D62gZQ'aAtTPaRqBUIG\ncdALXAQ5DIC6'QaBG!0]OGk)88mS]?^A3Kuqt8QJ,rV7SM5Jh(="ir9G;6\3kl)<3=L;`R9>6'iS1_6^c'knC$lLfgHs4CR042$H-HXkHJ'DR'.5.TrZtk@d(I$(HM-P0IrEi8Oa^qJ(\.:j@pu:EDVYpS7Q6RK26=FObEnPG=,t%;-!lJthS!D$C!H9,m`Ef$O4?76lr\+WR*q@WH?slepDsN*IAtFH@PC^N:ic-f8QJN25fqJ)%j_l99FqP0YF(E5+Cu?>=0<5qZ*q*lj]dh,'_5(!2+'Y9cU/p$,4p5cWO$*T%O2sR!pW5BD8lb3i=nCe#V*C)+HLrW?dCt&+j<'3k2`EZro>m%='j_X$6ckueK3/0=;kC#MjlOJ$TN.pe+XSO*O*N.#&H1XM5H69-OGE+A+=\*A(((TM'hk2]=[m9+i6YN,>038DeSoftZY.V,PURiA['6c22_Jq+`/1S4/R,YSCpot.+59E&UWG@PT5Q6]i$QjfK*R+TXfSV\]Qp96LQ\U7."4YIY$JYs5P;^4l^"bQkMX1/q=%@,*r:q6BNQGOEsjK>hD4AD#PeR#+QuS!B7MDf8E_k09Bnhn@JJe[p$DiM[PE=sS)0j-%c=;HK'GP=([,>$;j;KQ2!O_U-'Ui8BA$+&_QOq=ImOu2AtIm6jWgB`8'-QgF4QOz!!#9GP*4hmmf(a.'=e\9Q)V+_J^B/CPu,aoZDOg!-!FotGW2G.QLAcC?>gHpg@*]*mgi9u"$`#6tLW];eM6*ic?0Ql,ZH@"]OL]63G*N#SC'eZ+mTS^R,VN/S2==Wl`0:>4j(7=Qo@CF3oSa_.RbsDXkaVb-4^4!Vt8Zc1(UeI,t0:97eh)aAPl2SrOc#)@P4fauSV-HK"*_O_J3Q'!=W)2HpP:,(mKMGh=eu`($9q!mN*nT^.&#CL^Q)f8#B@&cjcd.XUZI[UX_83sMOcaagKYQ0mf`_Qa9!=5HAp2h2@Bs*KT_1YU;,L3WO=`%9M='&Jsa7m3L,OFS/V'6G@3cupQ]N_j_m-h7Od%*7B)X,+362d9,@(]@37We#H]Xhn10"N:keLk.=(p4=r1FDBdft!h96=]hMN""O2-HUV,LH]tPTQ]_VFm@J=Z1]8f`9S915C2rm`f8;dmFkRN:?d%;dGN!`?b1>NX2`?(6apshau7YWN\+HtPWmQ[P*31eRslLk2$1LG_AAJ8Jbie`E[L=]9]26*8A"22a=uh3\fKOu6$@enMWV1c[S,;56U^nn$"1$%M+OML+s\`Q#niWU8]aMeoF$'e7S(a_mJ3o?a5H:P\9&m&XI-aiTAS3-aqc`+Hc0o7h*n_E:fPTb,^i@7F'KI/%[>O6Z:414/_2H@Kkj^+HOfXD=h6V$^4Ci4oB)n4&H[mHEcT`kG<"_JeudpN8pQP!f=49]bq7F)l;!;cDp]IJNHqUIUBX]tKIH3V)df5=\.2l*73VIh+O&9mQ^6[Ig4jc9p(0e(HulW^5L1`B)_]D4AlPCMR_N);O$&:7aSYDV_ma*BUP7p%e4B`c%4GqXe3/YA2Ufip"e$GONP3*S[l29-Zj!mroh!q!_]M!n"j#6*',I*^4sBDnurKr1H[bJqJ^/_6.%R;W:_aIefhEM9=qU[E:k9HXX5c$lqB.X2`?(6PC(FfFO;3N>=1[@)2o81cIA&B@!0Nk"e5?PeTrt$lHcdlHl5W`ge5%.B-@M>&4k$EBkBMSVPW^,n0Z+.h4k>USAP2N#4:$YF.6i.f%hCVJ#C8IrGKiA0?F+7'`!-V%TJJVV5s[fR+%>bIm-JPF'6V`7oBb/:Rl>7,4aM5KqXnpmcD>`NeL\ScdP=$OT-V?O]q[et[FNGOFN&MV#@X@i5pfkT/Ih/R#MhXV.6Eo^_+e/7fk[C6YFH2"f2)3BXn'g_/p=%oAG",4HK/StTqm2@1J]W.\5;8:;lBj1D/="m$lH3mn(u"$7,a1^nk_CIP9s!:Se]`),-P5%Qfl\e4$,O1UED-lZrjq`Xa\:lbI2]fB%F3455S%O,34(Q1[TZ7Trh4WLXP?(IFupn\miX9]6E_L^ZXbAdYH,B7>kDV?)a%@Z=OEY`$[N7Y^]L^s5,nHiU1j$8HXI36_84[FIZDGoOl9J%N!&4HRz^jAQ,4FXRlJth8f&o@3qYJ:(:>bIa_TMM1Dlq*GV^V?;9.gZRkis0%P*BR;tYk1&bW;(#g_X]jA%NRU+Unm5&<.3l%bEjjuas[dV@gnKTZJcjV,=dbBQhf[&5PUF#@`/Ouhj'*7()HHOI]HPRrq>_`*Lg\p4HqH)[RoT'Pnf&OI.c#klrE.4:`YO*1"`-N?)X9uOFP!Hnt&i12E&!I[;*QZoNq.8X$uU+DV_ngIM?D5_ku_KWT34+8=dlDOX%X??g_)nc>0jFY%?k=h4lkK7c%!66A8T<7?U1S*A`?8l6Ypl06;JjB')Ji\"X0rV,2"Ce,X&I,IGaQ,\5`AnJJcdtV^+h2&_9;U?k(Q'a$3V=/#tr.u(7Uc2Ud*h&=X,Rge$A&aI)=,a7nOH@8,JCgSgPKT:GCM]]e4OhEla2Z,R/tU=W2]K9KR^"r@N[Q.u`73$4z!!%8il&lVmER,T+XK;2*'S7W(QE\N>?*$knR$a6F%2uHc*?6';T1Ea_LDKi:_uXT.](N+*Y@P+C?[4&h(QOMW>oC?=U&5mqAG5BCl:UKsZ%F\iH1GM--b9WqhS$V9F`3rcnkdcCD-LE^-RU9qd3XDL%:U'0N)*lZ"!=ec+j2Ib=RmE;89AWkK\PTq?\fTY?kMhPFtgQlg#7L\i`qWj.gqor]"jTds0F:j48>f8i]kq*a=_PKodbc[IrA[Vjp$EHe+MTmTN\AJ8W$+V1E-LR$c1HaiXebKE7EY?nnqXict`YASsOhS"7DAbPNG-bX*o.62\;mG#)j*?EChPh8*_3rdMiqi#HnXfX0Z+'`(ZQ1N@qTHO*F_$X#RUt+8GH:Nb;Y$JYVgU5jWl*LF>`4#PGf*m,i#*AM#V\h\TU6OO80VbNZ#T7h[lqMAQ#F6:^*bE!`0T"X.f"U-\pcK&?_ES41.3-hI7]6g#*D/S1@V>LrJ'M;/G2.o7TJHH.[?+Ujf(8gX_2X?f(802O,^.oR::_7X,`XR+>)Dl+MIK&*1Zo%b\[8Wtu1@>W$pcMM_%$ZP?3a29T7Rfj*C=J&hbU=cgP*(N_T7?j.Ip,/DGkgc:)/[qt*m,RVaNu_kje:A\fji$\i=Fhnd8Ar2OG/CB,=[XM[i.GXG]%D:7RdSHLm#uS5@8Tg'Gr2.V>EU@%)AZWhnH0Y.1a)q)Y6e6R$>_ad&U6Onr&pI\[a.'&BR;kX]sDQ8Jf2eaW'IFf/*5P*Uk=)6pAD$$dqtPEV1tpDQ,-d`8?qSj._MQG,3irNt!ABura,'M)%hIh>lKuuoL[m:C,'g,I8mi]DAh9k+P@<8c1L_l9$rdRkJ*\-s*PkgLT-OFV5WE0R4`9p?c)XH!t2mUXdlFFM4q"BfhZ%j2R(4%B0S5reAE>e.o_tN5ehB.(t$:(+eD<:?_Wh:5d-\,Wm=7U&"N[cHa^OO(HIu;7Ve%\e_fn/h:H7J*cRi7@l7!SqhW=Hh1$gb_eoFC,LuQ>$>*r/mZsITSn_dN)kchGok+hkje99PIQmtB92C"f-LrMEcP',Xi.*@t&H=l>j9n9;]s$l,uH-HM(D!M%_7/D`Kh)p8mUrA&aHFCg2T2$spVn-*63#2b7[uW`IXgM"1(5l4E+%RA5jsRMBK6Cqa'4jIt8[g"J?UhDKb\2;M),k$aRCLDCVc04m"J'=q@*CtPCt,67cEzTG5dT7R4]`jr9$;/XnY8d_1?]p?^bi2BoJ>c'#fO/pSjbF*"[nZJtUrDJhXQe>O0:?:`aSpH8*!X]qmBnDV82*iZSnBQeRmJcuPWR8HPrNZD[nY=hM]j&89Vn`%OA>%FkO:)rh$:f^\#aS/$\q4P7qr;=j240truGOM^%Pc`rD7q.bL.hCIGEMH&r)0mX$c^H_,$Cb.%>Gn9m-kqc7LD'G_AIY6Y:S*f!D4EY0MJ]D5'L2TlU[\"d_hMl*Vr8IK&#FJYk0060Nd%@([;$&JU2fa#g2Qr_mF'/_#7%Tic)c/L%(]1ZmYG^+SqiJ^KS6L6]CP-?:7?_L!=&T)z!0bl57WA.l@J6@`l.`\N/n7RQ;c=DHZ8C#c$n]mf%jbOg?M=*d$I,f`[f6:'mkp,r<;oV+L`_*@6+I1`>83\U9QhJ'lddZeTp)-R[r1cV;\Tu_DV_m(TscFNWWWG-aJ_h'an*k;D;)3$2*Q1nio8tM<[s_)C)*ME1N;8;jdN$,&&!Gj3ZC$*Y?sM:`VtF6W$2!u.?K=:ZH\jtZZF[1HZpKGHhm4Yhtadn]'?,SJj+VZYaY6MLPl,U7ReHA:R8&ehpX%cc-"0AH;Q`(VbWd\/jTAi\[hOcWDcrMGl.2O^100Pr4%u'(E#.BrU@]8c.".K^AO6H=![4)3HjbVlt[gp.ETHDJj(M.:7S7:cSJdF?HSp-j"Ne@8tU!CNsm'l=;W!Xi9RS]32GH`BOVJ11UZ?Q3Ia7OIi$rEH_B_z!)SR:Se8oZ`-h7.=6^ie4&eGVIY^.b_eZ5&-i"6-/`2/^k6bi[#H\If(hRpsR=0#B(gtZ.sI0Bi\Zbe16]rL/PiM$1rCs%tk=tT`mgqA'D6\c.$Y66@+X82AMCHQ*10mOgD]68$lTuuV1qbF*#jQ*!=lK]]^*XW7G5(1RSS1ImQXLaW>5AeZ2#jji`ulR$ZHYN0&hCpI:E>BS?d.p?gV4EYFGIdGi9n6RP[$/8Rc"gU1g`\mfbbp]X#VjiWkAh'%K\H"^&pLcf.b#_&\3NfJ&8^6QE2z!!!!I'm.P'ZEgboCtMRpEb54fJt8IgqXs.h`Z'C'l)2"/hj.A]FEFn,:ULA4B@#0.q"0c*()?jureiGD?rcmdfi)BiR%L"sb"KiDVbNZ#s./H<+!CUYj,`33$OdGSKs_g.iTogaW`:QX6Q6u6]mKKGhj/QYjGEH>f!K-i[]lkpXd#buoa_Oc^88N/39t>:Dd`$kEkM^A):'d%Q*_Y-lD>Mi)FB3b]cAfKc.:B?s14I#01FS1)ll[;&^T<*05!3isM8"`j(g^$XR`+"5-i:NpbsQni6qkg?.1%NP9>kFXgs3]:m2\42Gr/23?e=gM]qBH+8#a?tlC^Tg`;amZfI]mB8?I/j6Iz.']XCRDSs<^\!I--RWQMQ7]LZeP^YQio&`;9T,@2T$H=(B#&otp[@"k=?/6KjiWkd>*e=5k-EGdIH@.k`D9-3>[43^++3R/Pi%IuVP^Y)9?BPlSXoSkc^d.aD/O91YAnI:LCYK4nqR_tQ?Z5Xm-O*=r9$:eldhn)[+_a_3)9G;X0;;/d&d$,mc)3DF)uDp4F,AV=Yka^TjkuuoB4GLp?\3Uqbj*Vn4G4BkFq>3mX0`9dErRcjKD.7@kmUKgH8F[p?5ENOCX2;NZ9Lt9K.c6.P-.!SQ8?d*d[D^3obMmG![C4aQtsl-#DHksh>k.QKMWc4"hHe-Qg''X5th1@e8qQ>3)%N2iTZWEQ;a5!Ju=ldsIT5GoQW\tC!$DHsi!OW(QEh`cm4b`u)2Z*BQDe!\-:Xp!02&"Pk12Ch"7l;X$[AE9HL*&qnfmB1NncMU=.Q7QGt=^,*g,[!f;:lmruL,`_n4@X0AE]_!pQTG3hba'[jOVP<'a[FVKdX#uRtq=`Q]'c,RbHLtm9.TI1?Fm@IjqtBCqe%I85Xp@B?b*FW+m+=&G#H5[*<,h^+ktRX*8LYMp)9I%RP(u(X3)hQNNt:pWp?$!M>ISL@`ng1NNlcOC='/RlS=D.DHqmEH]ta2W.UNK&4*K[d$dHi:RQl:NR5/?<96TRJKhc5J7"i"N'e%:EVA1-Cd.mB\Kn4e)#8=(Yn(p49Q'(Z7I_:_JnkaL^e&@u,D7olHq[58c=]t!c_@kVT#qfPskjIm,l03Knrr(d5@(Idr@q/G8;R3X8Kh'gNa?tZOOm^T'['ZX)V!.%+B@!1Fqtp9cpmaEiDZB_7lK2.nr-8#M7H=1mm9Eq&ol[F9>Gg_PXqU*-qt986B$?X11M>,@jj^8.=W'k*94)%5;]i@dF=cc,1`c^@knP[I@-,r;1l-;O'.-E"Z$Dm%G@nHkZXs[H'&E?\B_65Wq*nk2FF^I*N:fQm[;2]RdbEXSj?`\YNo(7p(^+RjsL!&(X-.:E;lmgDl/H1ubL]fCut<0XE]lVIJ``;I!kS]n`0&n].7eDB\pDtN#=E64?TF#Z6]?X.rB!jIor8?W$o5p)`MZYf2f"W2%4QdNm5Qm&tI)8fk6q^VFnDu`Kfr,Y)"#->GlYHQ^NO&:n-=d=0GpZ'VJ5MiRP2Ca%H/%Kt"NMX&)8,8ftmlY:a.oR+5ot4EUDij_RF"o2#NDBHA'-(<5f9il\Lrgq.ckXrN;1nFQ6]Xm4QDUNg3r.MC10<@dnu6+`nq7d91%oO1J-#Mg;l6XAelhRogbUBZ/ADVVa!]*%3b_lI?BGajn\,CI)5\@BUt!rr<$zR+C<2/C3uccs]D$48h=nDMfq;d6VBTeIE8;mBfN[;4B/>Y4P8V+Zdd2,a/KW`H6*:/4P6TD1tt=s_%=GpkQLaC"lDr?Z=r'bs`\G&>fB$O_l^2fD=AnAL.sCb+1IT89_U0NV?-k09Br]+S/I>cBDj:>+=,B3Vf\WU<@ie>ueoi4smr/hV$ZDW9!JfX"g=mFMkSZtPTAnrkFs[^W`L>.&+i@TBF-;&;TY))F`lD%%F$gX+#eB[<85frfPdg8/:rKnY5^B@seJ,)&BO6i"Ipd%Nhl8q-d8kH#Nn.Q_h?nFQ70N/XPCT]G0Eg1f8J;GpEL]mE7.HYdNbX&lK<(V[VtoJZ[Go?X%XqC-p5:73k+Gt54bIG0!mGtC-Te#-!J$>&:l.e!"4ZY$I'%@W(C@F^U1\_1eol%NOa,nN\6+)?TI[h];>CKs8Mu.ZiL.,z!)1\kfidAR`PR<:=ipR8n+2[39(quP[#+FF+u_H)rVH3bo1?s=_F!^TD)2+ir[Nu6A:!t9=oJ3iq3/-qaV'Hbnge\(RPd_km3sG3nFcJQ^]40qFYTgtEDAn*UsJs>=BKhEoP&cS5]phlW[7WURt'_"D&t0,"S4a?H=0JG1;1c-C#iq;WhZ*CP?#mo*AUo(#$A7T4^A^Qd2Q^=&2T._`F.M+'Dr[f\j7qK!4Z`/=uH?r1U$CuREMCK#F%hAsQH2-mfN>jh%T0Ii#n6tVVk_>N^B?l/:'>FD8b>1=tADk7SP-:+u.P<@!#Qlt49q'#'K_"6J;h&KE4j$-YKY+k.\$pQH5QG):IXZbCp[;2YiJmV[k2XLCB-lloX!_q*l%;@<\!Vf#K=X?r>30>nHIakB:mFs!nG/V@o2,EYA%fRVX6[EDo@C!G6f![i6$DG:*Vr5qD`5i6+ZR`[u<]):br6%]@NHM$F[jQ&.;il'fnLFZ'3hP*FHh05YJ7ueQt%AQ!j@sL-8)LpD:bgt?gl-cF)8qH6_S2kX;FoM"^+FNh.]6Wbq1&>;;GH*dr)?9a;zrZNI0,1JcQB[`i<_P!($Dr7SlEIQ`TFas8PVkg+6)/[I9aS=k`?hgFL/6fPV:PYm#O,jh+dHoPm%C[S<4ad%/>.&,CRH`G5X-A;J"Y3ZWA/f8@>Z%%jVbX58FI:diC]F>(cQ\Q*MY$T:s7Y2c.oraMZ>rT2bI_ueMV$4V=Yj)bgH=!-a[o)L1khDcD]tK\rPq^%+KnT\YJlf*[\UOMR*BSG?&%1;Dqb?h\?5.51[S?ZF;tj91-i+#Iz!!%HCpu@DM*Z%eT;J#+@V(.6qcl]lCmE/%e.p$WLaH>Z3T._T@d'4J!\[cTqDXH2f2_/2Se"G#;cC?o4%RK3XFlk?aah/^4#\&Wr;hhoe>Q4O_'g=a`bfM@W56VlRtjV+<0Ns/<^DEH'dc_J/E>\@^Q,>Qo$GV)9U0D+lL>4,o]QmfE71OR\lZtKV5<^aQ*H/75Hq\rSt%KaS]uXK7(imHj0d9q(/+kGPN+H$O[\f&*$5Ki@uFpLQ:/r+q,sSMXtlBA'&+H/@E7XP0@8L[&1h',he3[op`#^Al!_%cAFeH=QY/V1:`IV,+E?>sUbB<)hAbLC`WZlhpSM*Zc@mNugH3q!`h:#Me+ip@$o-md>Pfd%M[SN_l'/4kQ#M=74nVpZJ/uMU1'^U=?/@8#oEfg$%I`mHFMi6]#h_B455rZY.V5Vb`enC$uQK(Di?\4nT"XVbYLZate)A!<<*"zN,$@k)=.Z$Rl5+Wh&O]1o('e]++Nh?7;XurF6Ci*^Nb'NlENoreu\,cWRK.`44Pp(VKYpm:;k2no8gWpqR!\q>.o6)KaJR[eZ7;q6\f*fLVAHr#(c9DFr#1fH>Yl%)omnFkWU.(!o[;36ihgWM"&PJE@3ICJ$*^>$pAb0nzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!#Yp?^HgGOF7^Ua/ktj<%gGJ-"9*?T3*X!<0MiFm?>SjiXJsT,&+TR(=jLzz!!$C8P9s!Z1GcADZPu,Xr.YY"p?papR(ts2+sP6g[;4C^Vk8G/naS%Z/2VLE!<,8N6:/oq;SIPShS"9NH1T&*NI!f@?+RCQa,Uf\:Af%8q=Ee4jQ)](,qE#t(bf=trU5bU^]4;F8Xc?<\@=L+$O\I8X0Q<[>$>*q.9#BGKaZh]5Yzz8u":]g6ck0c8;cEAG]_=ZV5X=MXSKC"@AEnp5J[U\bVbWdPN#4hsp+O2YZ=Cq8TV*F02BOV\5k!RCB?cnldl-cE*C5K!l/)QMn^])qd/^]HXXY">[B:jUZn8M;b8s72R)tT-#-VTn8SGac[,ZLgFNV5>He>TipheKRdd%Ng0K=c9l()Id"TLP5^WMul6Rp2a`R=u"bRVGNa^'kr=m,O-k*]S,sfWeqa9UW2!cQ;WIT7?i#]1D-XoCMS&C3O1-N+&4)XfZSeK&+%_>?Y4Y-B=+HV;gYLZM!\DT:MTpjiR`2#+E+ln#c3Eca-RKl)1/BYU*M_DIkD6g9bR?HFaD%,@/3A%9^$4U8"H%a:EkLFm@KHp\-UO3ro<]z!!!!k^-DVlK0;*"YcrBIn=cgc,ZVmF*Vlrr7[nXGo]X\=^E7jm_3QZW,Yg"_Oc`MD>WH4[)]P8JY?i*XWMS+RhgWa5b]e/N$k3YG=#`6%HMmR.99q.)mC1tJS2fKpmJYtZK921VQS2^[IJYoW0ekOC2)@$E-RX]+-C#ARrK1F/bKJ)Ob+c`Z#mp7T4FR'jlFCrsb2L6nfoB+;-S,_r,s-(mJ-Vp<>@Aoi%ZY%nqrM9\2`U"WkX&c>XFc/)OGJ$M2-?J=n3I:=r^V>8CGW9!ZFLb;!65TZoJ,X`R`f4ii[S<,CTl/\t-0gK%J,_\oeUn&811JEn$rk@l55lGmN#=F1d+VAI0em\7fWk>l[^3PjDi#m$.9c"T^fr%eZ1otoacCJHlY>qW(AnIp&)^#7U3RU^&m*sl'Sj%SF)E)j0?k^!0jN3Ue-%GpiVoJ9.!PhN2B==An>NkVL\^IzzV$7li@W$'9j[!n.0mN1qp;m!XWDgglF\ko]QX>3``t4Q&Q7adBi\S3P;f-)WKu'H$?+P-WG4"#]8Y.hWRdpf3,sMq%#AgPI[n^H/q=EdUnh4@a<-X[h43?L$M\QTsp=jNPp:3Eb;o>32GQ:/3-M[S#&mZ%eZ)&%ur@!c*XWO1>E%(e[6>uX]r8:0kY-3,<*#p8k;Ji3,g!iL:_Wr)B0X=QRV`Uk_^**==(`\p7'(m99q,;jd#Ga!s]=?=8Va\YIs\FIJ[+ID=Ig9n8nZ]2M>.>!/'C=]KNl06=i;6)gd8sLk=VscNq\@=NL0[o0XF@o\/Uu\5mQ7\;E8^lFla(CAS5@19hX$"nhhk.,^F.Q03Yh7IkK)&[^FGrp60JN"Yc'tV+S_Cf+qhc+=%NRU+hdb`,(bpV"hGd.bV5L6;SirR851eNBHJQ/Tb0qhhrqYaJ*jBFeEofoW*4sU7gpkbSb).3X_hJVm4aY1Tjn$i+IecFI];@ZD?!2I74HprP7O=&:qc^r9hEd;c+Z\`l"mbOqKIQjp25"aSl'c$`YJ\!g"2`L#7Y$ANsj5Y4\rdCJuUPj]Kf^%.mj5T(^]qa=\R-%A(#l!]=_fi_BrHe!dU9/HVEjE!VW066&AEr'NkG8+K`JYP>,MF12X4OO^^NA]QopkIGNo$F"Yr`MUtX+l)pa/N"8$IrmVL[kPkjkXAGzz!%$<\,=gfX_DNISM?H%]>j@,&?,4B@!YYk7@scU5hIldu10YCEfEY$/65YHP/!;T[6P[r1$E.ZomLY$8AqPul6uku=lgPnsrWVbWdl"m"JU2f@F/f+K)cG-#q6H96eCDJj>1/*HNNZY.V,BHDZ`QRFmILROX!=g;F)KfUO*@87UdgLT$FBt?-RM2mU&^3oa2%3,$/hK7r6:]i6Kjr*Q:F)lzz5Y6Jge:a!KPD9YjcIt'mhE:L07Rfk""q:ubP5bi6.!b@B7FS,.fhihSH;s[OGTQ^rs8DEaq=@H\;-@%).]ZjeG4!/#$XI%D=0,N/If4SH\OQ7TL[O$4RoLXY&)FmD1FoZ!LYfdqT=q7F^0/#`=97+L"[=N@RAOOkCY#R9'K^L)R)YTj4S6LE$SpH0^?2,9p[7-YX&>dOPju0`?XI0KiP5Bb0>/oFa\TNP6HDn@[EV(JD;3(QhmdYn@sM+"e>Q78>,[UBMi1E6oK:XXgRC&in%TA6zz!%8/8LRR#hjibonc+j&5$[u%b)rj;O/mW5'es1QdZ*DQC2lG-7CtUT;8!,nj/M2ss)X#D:X'FhL+[]@_^4#l.9Q[A&4S7!o6`^pVo?bO=+1##XQ\U`X$Q$*pb*4>roB&bi-/"HVkKfdP==p/#?Fk5M7`4*74Ohd+O]Br=C"'P0heKQE]mBA(k,2"Ietj[E;NZb*?%E8uo?^dTG-UViY$KLYSe[hRBp+_S8Apf,QC`jA)Dk";`6QYg\hB')WQ33,c-=JVUr%',]Eo&X^4-%W_1Mtu>[/Hs,'7Q_zz!.\L2KS40oY[QG'IA]l5p@@dcIJ``ULC])M6_gBMhS+E-OH>QoS=G_(Oe&&6St=4sFa`u:B=dFg2`I(npEFQQH!gphFgc3":]G^+I<\8[#qS-KQG"9etV4"g/JoNnGmVIjCN$'VmI8[GY*&9dp+GMa/7V;O"+/2&Y0-RX];:gs3$g73I^\cA\`N/`gVM2?NLjpbptldk1@Q`7`BGB_rUFmISY=(NA3J03?TCMQSTd'eZhF69\F"qDV$]-U.Ma?q9%2@noilI**ZbHo&AB?lan6C!ig>:*<"0b8^&iWZs>Ff4$jzz!!&6Er-X$@),+Rg,r6(n]mB@O8sLkm$dHr@]tM*Rh4jY*803*DfJ.R?WL1iQB?Z_dPkjI2Dj4VZ9--_"(TTsu4>]#WR([7]4LD&35]68[eZGpSeui;Z0QNK]8eTCu%WV(4Yj4T+0ULKCW`Te#a)j2XK'Zq"0Re'h7U\RL8Bpu)I[:3'rY-@HZ%3d$=K9rF6$6WR5'SK-U3>HqXk:p$r7-l#KP:8Y?cVhiKf3HJfQNZIbaX>X^(B/BL[[nj&7!<<*"z!!"E]o()A(jGJp82,[O4Z*Yq]-ZX*VlTq1)B;4S6ras(&;O3Y*OgY@#%os1V#)%hB1Z?PXCm;MICT57dG]pLcdcI[>9.Qf-e0f"qq]pcutYV^hB.hk-IoET>('[uiEojIle6QX6PIB=I'__hZne04);iEUU!5[_5(VI(YJV^3B%;:fU%WLo$rENj\E,r<*0%zzTX<@V@g@AC\S^(Z;`@4DP+7<_o,=AKi?Dp"2eQ8oGcncZ(Pu-=V['R"l.k3)KC.KnVrl:lr+5:scO]:SAC?)]O&[zz!!&5p8P)Ki'%_I&lK.*fLmQH3bVW)4Zt9.t<8r.jgt^[.6\_hR=]no'qYILc&+r9Fm'#l5f\"h(:S-cPajd:gg$&hP$rgKm/l";aeC)cC`t6_Id?,I->2A&cSLJHD-mhgJQmL,p55&'`;@ld2?Cil-gS;c?,Bjlbe;*^#g>?7ek13d^R:*M7]MU8"@jICpm`CtLEl.k<[2;W_=dC#d3mls'u>3)HCrb!aNVF*"[nZBCB6W$;`]%_d)OQEV.&^V@N[)kVmX=^RX5ei"&896A(+%J6fKH[>u$"hf3Q-94)Sg.%\ZeEsJ?Aa@pL>>S-]c)1(%naY*\q"aa5mGmX&*YT2SJ#QVZW_ek):0goAmEq\a:_/![+?+ZDnJK6gqLn$M%:X9e.=pTfe%NHmmBbMjh1t/(aQl&14YGq#B:6R#!I!pFNg,qP_IaY#`XG.&s.RZZmLm2OtB][C%n)(mPPEV2sQ^eS0bKa*?Y8\NcgjnUp8D&LNK'4/$!V>t9Nol?$PsTq[]^d%pq`X#P3;Q+gT6+kk2q^G4jpT%lBg53BuB4PhRkjSc['<*%*$LY7:]t@PqQL9[=mrjNLTE=l,f,:23qm/AZmkjN-ZX_CMTWt\om>=.n8uPhnFMA"*BrL\VSErCXoG]90E7Tzz-Bsg^eu2Fjp>GT>p$5Maib/-F2`D6R#r-BTV(uX(qYKl#reW[MgU8\<\4p+DDXNlH@i@7Aq!Qs"i@f!Oh-%'ra_SfR`J`F+=g`uOLG3,OJ>5Vq)L=od_SSW'bn5Q9KaS]3SCO$\KnV*\Yi(-E5%*-2.9#C,q=ETM8K##7nDQ`oHS6cqE,fmN[r:0cbEj;6HM%.2oB>CO@Ak!7LMkkT/NZ$U,paiq2E!Z[4>8J9gY;VPTgR"h/Yi=[W\Qm^qWulkg,6:"q?2,>jUHa:_k](>m&4:+IM0-$ET77=SrVK`3$04ap=kXc'e:UX-5pc/o&Soo[;=NZSIOj.oMR9UMC>/k9/"i<:dX_LIa2I[mIS[<-Ve>+cO/tm&*6;ZMr^Ri(+j"7C=T=Qk?Re/IX]"qDGrj1DV[/;&HDe2z!!&[Fj+f%?bRUZ2rr)_1X*XI()7"hI&^NfPs&)ZiOI)<#PEV2mOcbfiP*hUR',)#k&b5MXdm*j,j7;I%d2qtBF%rm'*Gf#,Bm\Zh?a'eg$3olUJr_s7a;.8SM)+?G4i/n#KNn55an;YGEa==[QEcQ3[C\IDme5smu.3X!#W)9>b2bqLkH;:%oaiY\iIU$B.<`kE..)-%q\odMYJHK`*C3&I\)>95cT3p^&Q)@BJlJpogT:[cVVd6oX'rl#uW0-M'zz!!$DSDJj@YWTh1sorn/cG_mC1q2;#CUHoiu'gI:OmdXeTM4L3nSiqFb9*PV+f;r+Ri=0YPUkt_9T5ro?e5X07RPeldZa4;jT&$bf;gWk<2VM#ZPb@[/7knuQm.\+m&P#,737$7fLrAS'8+R$aY<]n`-_KZ"(g2mY)D,9aihk+Ls/'ZkTddZ'@P9Rrq>)b(#GoEA&cmQ'hZp9bmIFK:grV:V':1T\T6ebP59Ubs'Fi]hVR)r)\s2)DVVaa^\Aa*C6Y6YXOXkmFQnsRQ'M-IFW$c/J,Xhp-X?t4%NU_g_VEpOl:Y8[FOBB%;:@PB&euY:"5A:rsGd%e*.V!+(-ZMRYESIp=;m(N+^k)+nLhq5+kYYA_b+.FlYeK\TmG#,A%Ao3T]mKK'PbF,36%]A.!P2VP3^u$CT9Lp3QHk,IrNaVPA]pBc3=qIS\"p?&SU%,.SQ`F9e[KJS)OfSbYnEm-Jo`go7Hh]tM*Um,Z9Pr85hj3FcK++hV>sAL16lo]ahY@^`_Rg9t$'%hF^.'e6Ei/6B!EPbn$EleoU3FCP(;r5g=Y-r47*X&lLieZ1?,Zq05mB/YaL^6WOK'GM64>e"bQrr&F[Sduo,I.lp[gUD*";Gsg+ZE@HC_AY)/+.AXe)Aa2+*Zc@6&E)sCIJE>U\^&TpM/g9mtb[44E"-e"h\%iNn1\q:]s3cO#-]W.3U+$Z>sHhHZ(g%FiE^!2GT.I4$g]Le;6nU"uuU^98<\$h6cLFu]55VFKN@6J(3q!d5dU[/L33lFXZ,S+JH1jRBlc3i#mkN1eW?G)Xh30XYHZ`'*ZRDD/HkiaF26MI?`%Rf!hdo*0cMeCtZ,D%E_nu(]XO9z!!(s=bEm$UU07"75Af$:bK.b4S!Vbio_76mk8+OQq>'i3H$Qs2\_5Zh=]nnll051HWUJ]W91VU0NK&pXNfJpOq")frn(tbDiSb@_'I9FS[$NXcf'p!aY#qqq>tGh..*!a&043ih[p6Xp\]ROA9UR(=W*$=!N7Q/Co]ahc5Q7%XNK.K$Z=QM[]-''m\4Ml2r0)1L-RXU'0ekEB"2:/"9q)KT87+\b7p]M.XQ@4qp7'(m7`[qcn@)D&>TEW&h*I5O9k'l5L!Cqp/54gpQ-h`fGA'T@8oh2DZo%VTH*PH4P:)VC4Z6+X)A!H&YEIqdO7Ns&Rl5*lZp$-coa5E+K7egO0Qn&JbX:dbm7#T;QB$qEkH>6dqic$[`i6SokaGrANB^c&olrf?r.g2\hU#?-?7D+?mNnGfHc@tk.bSXkZDFd*VbWe)4:7@P1M!9(X&lK"(DV'PNfK.dNYjj$Xu+-fA53$_O$Aj:KSG6P_g,3F<-NM/(1++DXdYiB6.EMjms=]oa^7Ksa,cQ(53bd59$3emK7pqiY$F+4+[L9OCa%DK^\q2o/JM'.o?a"t*/.IXP*1J"h7@aXq\64p3e%":aq\:nP_[Bh(;7Dpq2ieJddlA7L\bbWZH1*Xl7Vk<;6aTLZY.V,W9Wp5a4/V;W$o4pWcc%pV2E3f\"i\CV+3'ROUNiG^LTRjN%qt]5H3$RBY6)T7=#m0rX[>p$558.[_#I26_/b:4@TYP:'.ZH/m.k?C;T0zzrb96d_WoXMUC[mU#W)nr$?XtVE(WYB8tr)UWA-t98a6YqGk$AC:\XrQ)fo^ARQFJHH/JIk`l@Vcu_Qm+)N%l<:Q.U&2e?)B-ch^1u2uV5:$Q=c"!G,93=`kmJDHM,_V5a2RR*711L]J+>&nP\)XlD==q*=MoJz!!!$!"?o"5r"Q5k6D3T*k-f$TW]b_&S3;5m`f1r:rr->7@BX%QNfT5s8P.%Jbfn8R;oh>j5BCmel)!J%jLD_0=0GqaL5%m8@k9WcW()5bI]TOH*2EpN@q42.Y!%.*bfIl`?QD:U[.$u2L(+ULA/0RikpQI6C>QUK<)f*EgRpZ#l-#DH2fIQ#jN%od0Q$jdMg6c\Ckn;+T06:G42X=m;*HlT?OBLJBg7eTC?1/b&]6o>&/WHhZr6^3obOn`/B5DngYnY.QZZdQI/S%mJ?`>>t@f`uk*pB\U"7:Zn/EVh+D8D26/XH?tl1?_2+PAS$#WlIB6krDgCpeupN$VU4EfG3i=b^Gg&c=?KLq7lQ7+XfYFMs8CjTaf\/'p"*QWL<3QB=f$rg-OLTK))I#^#O)_m>JKIM&"T)%qV*GZt\"A:tE4#ldAG/Y-)S2A]g7j^OO#@)Np8H=LbI"19C07f,$@3f<:g,#GQ`$6K(uQP9s"%=6@Vg-c4a)4,JF\%KHJ/z!!)JaK*Moj>?eE=V`$FkCt1b(4Htm@p#s0jrN?eCZP;Mp=0GqA9beb9'c%Qc^3o__'.,+@F2m:*-bOUj\S:u9X$HGh0O#.8L59&3_HIcR3okKhcWl+M6*QF9L6F>kWoI8-.eM3!_\f7,=XH0F\P]+sK!Fa&$_ikd@d&]R$N()DB!rV+I<3]T28'GSVM)o)=AMbo8,V<+70GN;b%`3&T%)Du9*QasWj`aL7mqXs.]H"^(FT`1rkWsX?MP#QthS/iNYFQnt.h6FgXk+Qn`++C=S3a3'04fGOGM3z!!!#gT#o*rR5Jaqs1$h+b3J`YIqPg<+qHO;2Hurf3CnG3_8.W$cBc7]h7C#.)lSI#a,\P9`Qik-8sO;O^2:a\+:hIK)Y6dN6_;35_qFCs!XAscf<8Q19-kqr9hnGq,J+gp='(A#ne9GdgWg$7*jC'0gU<+?ID^dKHn=$Q=0MDoG\nsDo(2J+B^60nr(p^"'>7;CiF'O-;=gT$^L<[io/k4r^cu)5Ee+B`i,+.\liG^o2*#nKmIL`W0*F5VjrMX'GMssk.Gj&(]6=5Tz!!!"DT.$T>QBmiWNut9dOG=_fT4]%*d8%QT9:+:1R:aF]oBA%#V@:=A/^PsX[CILWGdqc#8$LH1GKp@8eq.p1u/_fXl?GTmZV&h6fC+F?d(e.4fsooB+;d2/AWqLLn&X`-h:F)-[]\=0Gs+q>&aqY^ZOsf$ka(HKa!&5sR[8)oaMS]W*^t/c,@"aN#BPr9iB&iU8BO0'r%UIXW40a9q6rLXOqnVQ67LGA\!/bHa7;kjKa#l-eS_DA!g)al\UaQr'-a.Fa@?X]29_:r(2p8bR_6o_@rdTk/,ChzzJG4f1]=UBj:o6o(()s6r6eAJHqsClM/ml?j\)2WrG3kT_Q^=nZDbs8,6psFjI!fsTEb8p\_YTsB]uB@)m*sP7`5KUGY@!'=L&LP^+4mZ$UHNMM\5CBOK=XDkWkauLiUZ*RI'?_N:7\c!1ums!`f1r"k2pI1X:bI'ji`u02Jf&PT+:npmFrd-+`p#uAP):2aiP,q%NRZVYgC[\.p(.V/Gskko]]l*N1k`'>?a=be/5moXf;Iz!!%QLa526bf6m9&r0Kea@ddF(=$pg`V2D9Q7B$cn[>VZZD3_%_C@AiK"@9":YpG4\(.*h5cj\Sp[bpcLq0fI(k2il-gG77F3ATftY(b4;5JI.4tA2fCH#@:SVs99q,kmBpkK%]kHB]6A2Wd%T!j=4b2GY1h0l4(XSmL(,q$4`N7u*#pflr#S"IBU!sd<'Bm@]D?HXG3uk`lXkCl\9@8nb!=tC)Es6lk005KcR2M[(u*kKl=GXXDV]&8YLM'$nI_'--Vp=MQ=Q!q3?hrc?G'B#QrZ@LfY2c\Sp*!2SXl>5_1;[nb4`Zf_TL5(G_Qg3D5B93&cOcbd3I(!S-&og.piEH,t9cU;#S`JPCqR)OptPLlt8*h&Od._Z6HWlD`!pJr2:=BHD<_Nr#4Y(r#Y4^&&PT-HMl:n=ao\KZ[%[ENRPcCL4)3r^4_h3G06o+M'e._gI2]m=hk^FgF;2f79EXE*+%AP9??%0-A.!!!#W4V/VSrLa,f8,a@3B[NR.$RAU\buD`E+'6mpZEhoh'4RRtI?XqM/U\KK&WuK0EY`WGY$EiPENZ]W_#jGZRl>8Wma@lfIJ9;\\9@8nb&3%Sp!DXT@&<@'@:A]X?[lWVcGnF&eW]ks6UN`Vk-TH50PAZNH'>X/PPR)*3d%H"klh1m1i(Z9l"b'M]6X![S]u1_4k(n>\]]QR1]7d4UIPikYFV4iAu)?lp?gV?<1Q7'If4U]$7AW@PhW3A>$@A152b(uA*&-&95;5l>7]7Ufu6i;?+RBdj3$;WeO/f\\YBiG"abTC3R?F3HK`sfJ$$*Hd%Ng1D8`oRbZ85.W>J^.13Vnl"0Gk@;o6\kJMIi_Aq7oLu;[DQeh%\8X_DjQ#91Cj5]<=05X`1Xaaoe^[ZI.cnipldi2F>)IN+^"`4U8X%A]JGAP4-5[*Loh`uS27=Rkkies%DUbVI+[aH2-IbBr',)z!!(sUnDq\)7n6(!It+#%WJ>)Wa,_=c.R<1BSTVB'P@([Eh&JS(<;pi]ba:,2-9TGap;DZSo)`rnh7ImS-f2=N?i>t&gpeLTXS)&>?QRh%LF+Arb6R[uLEDt5q-RXtTcu4fZ$t.CcC-U`VRL-[(1Yfl\@B'4hpjHjf0eX@Z3:RL89Y]R2Ru;!M\[m",JCI_Q[18_VMt:fe8>p<)Hsh#FkNifP9u$&40(krGe!Z_$13e.;>!b*_rXric^m9/)-mG*TcWL[j7@G@f^JJL*pQOMfVL=)[Wg`F`7/)#sX:!!!#7HS7982Q]p-6Sm'H_1S!m/1`>/Q62@Pk'F@Gc-eT5md=DmFD6"D]mKKSQ?Ca/W`:RG9tI1:pJQ$PEfCtpPWN8cB,;*jTVq=\=0Kc50<[48:n`Je3F_B%khC=YnE.o\:H@:BF([j`$oD5#p!Ce$aSGGjb8ID=J,d41\58kcg5WGD*h&=XFQ^piS\=%Bia`L9cC?n/"W,;(m9^ehBOJp@\u*U:p!A^>4"@#4CY-jbm^BR49(sAiHC-iSrVH9W05j_@Z=Pnjqh9cZaq%mOGDi4[J,VRjK;PNCp?^I2L94[hY/[MR<'=3.HcX2?-;6*=!SQ>^HDpVgb;l\MhJJ"J5&5C+1cd[$::XASl@X_ADr//&qsV;'?+Y:&PUSipn:Pt\W`H7%o)cmtW]WI`hE7Pc`!#)!"U,)*qYFg?(:O8Dz!<+.?LLu\c04)`QSU+l\PpoX$BsVjA9'rt!^:rkS:j;6V:$70Y3JVV4^k(X\L0S3B[VbRN9q+%8:Wo,mQmPOr-nR#&/Pi!&XZiel*\&^J^0J\030cdUlCkCg^D>FqCg\_oR[(97#6tM$B\?Ar9he@Lf<:gAULR2"P0T'm%NJ;+g=k9;]QmGfJTrdhI.2^8`nK-MB,bp6eb.:nYV95,r9^uNN:!d>jYq#.Yft0b&+SKKaX<_%"H"!KIc\]ejj_J?0BG7%6JfA#c^["*Q9j&*mL!iLDAitCWe[Tuf\E]>K-:QBp.!S"@q0$1YAN?Gp\PI>Z_$jA6PC+H`L"TYGCKPeBDK[7e#-"-eucp+.Io(=UKFd1ni*OqI!k#FV+[-nIN\[kz!0BQE&'Z@E7ugO]Yct?&C[.E4CSj1:m*OGDjia!r<$ZSQg/WKcW3#Ofo[?Uu]S>3,g^RCA/lSX+T(teEnaUXpBb6h0^]-r<1#g:2-tE_=%Pie_G@bH?/i>`EgWY[M7jlhp+Uc]g=&.om&c$IUog[r5WAR.`p^o2=1-1J-`Z6^KE2WXL&boH5(39@[kXm(3d:!sg">-:h2iUeHXl5oMRR99KF,f8T@sf+h>*aOIefhFn#`F_A`_(">IJ>sO)3[c=c%=rmTk*WmFns;>mLE1z!9=:46Sh)+:ltT8]Um6=Z*CPhc_F!klA8QRG&9B,eX%S:OX!Abm2C#%%3%4H4/6H.s%GrSXt.@=BLsgU^0^j:1d((?&MjnC=U.Q#MZ\(X'MV?5('lg^/1Lib)rmAqFWi<]%X!%s38cdLFuiA:rX3iFm]Y5p>'iTil-g+c!%Plq<#p@H"t0I"YrE62Jp[M,-eT3>7Z^OM^r#?X>5HR:J?T&k2n"S1h=ATbRba6XSt+V?5rQE`>`C.i;s)`]6S>fMhQM/VCl./3T?G*6:/M1,2j@:;?1gn+Lq=Ebk3csTbrVQ-TnY2fR@[+'apo#[igtgdta/rRTRW'DMz!!&+oW/"u>8WtLC"Oc!ao^2Zrb')a\"[)lTbK?)#Me3,"'_q!t^GO6eX]nj512bl,o3=O5&JGgVZ!p/`g)V1Sdjh1?,UB=HTiJ-o%1*?gDPjnV7D_G449>,DaBKp'_BUmZ2[:>W)*g6PW0a8Y%qe:2d7$ObE>U0M//:qh>Vr:<^0AFJBgVHjH-z!!$OSlChhalI@DqfP0NoSb9A&GOM-IoChS+qSPLAn=XOHWh,fRg8F"ZX3$PQB.3H.B'e0TkuNUL@q.TBkTH?0.8n+-b=cJ@rUnOHmtq23Wb%ML?*rd3),<<@TgOV#X9sgYkJnZo4Fd?XC20bbJ,K(]fg'1ikK9&?ZGEhXbHr4U[iW,%k>"ZC9BCu;[C%.m3cSY@!Y$),>d@ms\t"*>l;_=m1-mPK5LdTg6b[nARl3,UaJ)+]AT&DR5SoNM+Qkss8DD9XfSUg$VtR6d$HCmb0)IZY%<.]c*=uDn^MgAt$C@K\'L-AaiVY3I.;paK`S@fT&QBqFBn(/6%OF!iZET0CZ*R:!)hqGJRobVW-io3_*55h,Rr't8[7&akIU8(2;&hf<;+O-B72Qn6k>6iHu^X&c>PK4e_Ui:"DW:<&-IM(rM'#($7Eon3Vb`(*;[Va/Y>ET=.udQVg=PT3k&4Z#,X=FBP$B&[%6n?oQ5E:%tMQ^=&\o[F&gidIqarq>)bnf#:BqJ2(sWMul?Q7]GJYu0D9%3%4hO(hub7"bt'usD=62i7Kkf%rd=D(e^Y8Mbn508fOR[A]BZ*!DV\3o/,S:\+3):=R2i>+UIIkG!X/pu.mjCB"U.Vi2GLjeDk;1E[=A/Jf>%=]9.j-c2/Loas8Msg8P,>@fSL7hjIggJ+[NeeX2ru`pp-604`oGeD;sG[OamaPs74>d9%`^rbF?l7=R'h;#7hkd_2&'kz!+9-PM\fHDaP!4P!u&8hT93"^IJ^cXNN-'`T%8pEddlMCo450$Z6&;um;6KKVd,n&[C)'VO8>r]YHPMeS`ef3;OnbEC+uk5qY&b3e6]h7C#&"1]mK']I.?2bmH7qmC"]7OO7VP\)gKJF3gd-rnRA&+P,st&T^3t@TTL%;H'%!pqbI_ue.W*,90l5Jr\K.eOY$ALT1M-am"Cthbl:Li]DV`ao7XV&R3N_9^^3K1bnG)R.+#@Mf`[Nq4Z<")2qH$_L-9c`JhpS>o)qE=mNfK.j/nJSBA,lT0za=d&Hm>d3eiidk2q<'EGr3CG/dTsJ.rVl]_B@!0_If9+q#7mCiIJVsBMkH`9Yct@qkiasDhBXBnV5C-4T979BW&Q2#,pXbS`l:J;7_X?MqUMWJc^m;ko(!EecCI%@o]X[C4*E/^^3o4qWNND,R;l*W;@cJq9N;&=Gh&fol#sUViPO+/ac_?<)e6m]]&bOjj0Q+)0F,l2&X#^>X5r*Ei%PR>.%"C1ZdFh=B\mGh7D-uaG/;6hnCUtp?^I2Nmb@Q>Ofe_C94SaMY'As)"H\/'15YqKSP=!.oo>588G9Z=gM_^2P5HpWHNmr#7efZ-@GH3o]W!_Ylb4@1pCI^9$6SX].6p`W:&NLC"!(b#,mRs04'%^\oh_(P%u\\U)k3i(tcHEDtV@(;P_Bn)`KMbF4mj110V;5m4t&;\jA_M87r:.h]mDVT*IJ``m[r3)_TU7lYJ4DrraEW?#d+!7-]kP`h1R$]',oTq[N[R@Kcu#)\J&O,JpSM2@(HM@'k)%h/sW%Ls8j?bCXBlg+H;iPV-DDdL/*q;fY]#7_a+Zt\!P,tmmcaTW%fa?b^u.?\8so8,OOa5+1@>Lj4ONQ-u!/$HEIJHCCRJJo!9Ro?h9@ASOWXf_Rc6e.V`D6!4H5('j`mDW9dGjo+g^.OY?@:b^u?=@=l/QO$EV'X_-i[;m0Ljm07q2m#__c^Fb=goB*$MG4t4ObE+:i`Fj&F^3pp3VHR/,rpn5cb#51tXMu0Y%Ls!7f<-@cBp=rjM&WZdb%mW/H#JF=0>f][V]7AE0@oJrN^"X`)i7r#fhuJDq;"XG2GFNk%8f#cscV4e`-JZ>R>?%Z:2cWF*#fJT`-mtcHa_fLFXHXVbWf4a2L8.o$+@8UP?$f%im]1l"b-QD/r\hm?ag5U(HN!]JiF/Quf9!-hJ,%t-fhCQYR[Z6SQ48$*ghC-tM2@'RrUc8/m+A#'0s.BRWKP7gnaZ-`d\M^hZ\fJJMAr$&3u)Yh\lFc"`d2=aeu`LcP8F5so?TYeeubum/&[o.hWK"XMDhkWeZ)H>6HtrV`GPYE_[l(_WDgNYH2/C4P-(kRUIUA=b>>+hfN=9HpsRW?gesCe$X/7]=N:&If20Bh!""eR?9X4eVf_83H@OJm,>j;eZ8JB[8aOTi[H:(`Rg7K;mUiFDAdWW`/2Kg^%BfA4*9[/Rorou)S>cQ7a.Dbf%+"9'BDBe'H@dO=HDsc'gMTaSl#1cZ$2P&Jc-_WDY$fa`ZmudBe`$c'pZlr'.)SS^MDK0)_kY^YZa/eN'@B@"#&fi%_<5Pse'_oq6b*ZfV7Ll2-+oC(PLgXu/*M6)^X4#V*<`"jq.W9a-1>.&,,io4G$itEM[nLfYo])IU#?b+^f=)ZQbc1g+FDsV\OGUI'mc'pYm:E;TE<:77G1hkCVKWFn=b:dF[_1MuNq\C(gHK)l"OsNaN#K7qZo("OoD"mARAQ[E1d6a!XW/>ddr,4jNW`?*"X&c)k)=;XIi/aP1o'Q=$k(_<0"3%j!iXqXeJ4&!&ermQ>gfkkXi5Y?nmL%1S;QLkpnEM3!]n9MA-*7k)euYe+l95uRJsJ02iP9OsNc>1D6lW>,+XJ+-`CIrqZQlq^)h$,pX`U3cq;jNun,fjjQGm#nnnG%3$Y+c_!F/*Z+:"\eo0pB4jQ];V83^KDqBfp?ZK[fX>YOap@6\ZI5RU&N;;<9:,ABn]B]Sz!!!"\/Y5.S.Y$/d@q1_Yl/YlB;,OZ3bplo(W,a8nMnEYaPa'[l712a]bAu^e20c$@l-ejh=)7.upKgHd:#36pS%.#Bp@]iW_UC/frqsp0m*__gGpAe$0eoqKf<4E%S+3RLNufmJ)7>*mMi3MgIOJ6uR('Q6`[PP5k:0K3kUE9Km+B_Ah;.S*Y$JZ:So(Sq@g8P3eFTY6?8$NLTL!:'fV_LeUI+eQqY'7,:ErE*7ZDD8Z6@A2soJ8H[GGN#1ClA3(!DT_PMU.a:O($"b(&e(.9F/.Gh)aX=(+rj:l-cCgp8^/12765P5!#m\H1U1X9e`]\B<6c>K[ZhpNu^;_m`m7tfs8SM:i4pnOV.H`mJHV5)UV3D/?)mbZH41(%=eEVpP9D+C=T=15/ihRQK##!LCP=S;`2*,)AX*crW!]d>e"Y*[YknQMMd9H3O,i!`ss%HbUiK?;aj2HX)!Cu)`Cs*?pVf!Cc0nH=0KP`*&(bc:f*5[h/pu=PdqTPHioDJFU3Uk)^\^$U!B4QG,cH\&Se+s#L\T29&O'jRfWi=FTp-a%s3.4GK3*"_S_h7Il<^OC$c`,_!24*NSsdU^1G"](aSc0egld@3(5HM6_$%t)(kzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzJ:FX<1M10A$31&+zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!%OcQBICdI/*3gIet_/'1!-!m+J]t?+N.HqD>etJIYVU9_nPNYEphF[VOKt6\c0-\T9.11BIOVz!!(*6P*2")o]_S&SS?QMATp2V.;$hn-!gmnC[5IV=mokJXtP,4Hr>F%dU6%]C4Pk[XZ@q#EtcrVQ?(H1NAp1X^C2eu^rRk+"JTb1"hg_o'ACF#dN3?0-,V=Kl0u5_*m&bEaaQldpXWj@R@Hzz!-g^R,piN^dnf87f8("`;H$N#40SD'V+[.+/M1gUCi!s*oB+:Jrk*1,54)sQ3cuoTZ=L@Xe`tY`j65^Z\T?r$R$au$G5M"#l;s]g_hMgLSB:Ua%+2@l96I6:#7euGN&4hRH<$N0Gbu@>l/CSE",_:l3I'i=.Ih/0,=RM+4a6=!`^^%0z!!!"DD_,80gsXVK<`fP8)O-DJP2/^C%]s7GR)St;Ma*^&r`o*Ys8N/3:GNK$Y'8.`JAIg85d"Hnt4`S$WG(st)e.*1<'hqQo_^]489S"&0h]mD\SfO.75NupTP))c6Za=QZ1qY9j,R"GVSo]X\JEhneY&2RXiLo([MkNAbLfn9YFA=JGk/&oQIR5"pK.6E;7lIN'V*?C^D3>guWn%Y3grqbraBf/gj&'_%HR50LBWIFKWLCZ>eKnkG=bEueZN02.VSig/W=>ApI[C,\4A&leK)uos=z!5SJ?s8Mu>HCKf.K*Q&*_R]].H>$bsU5W?bC=T\[WG@V\s892@'/7dc#7pCgc`\TjW)00XNuf1q2^p1)2E"U(9'PBrF5t9"F6CiZ]"5%O^Y[)SWGg\.c'pZlo?TYGQ0Ru(cfOKHXB@>BjnnDHLVA'*7X"V%^]//:CDS'd3>HYQKF-pB[r:.V?+RC`.UTo;/=[(Jz!!!"lk3VGN@::>&2^:eNaQsN=+n\[J`l:K)gq%Xo[+bHOgM\iuA]pC-2h?(i`Pjhu3bI5#Pq0J8Knq'#>?Y4q\R!lm%i+0LCNJ#nKd&sC-o!)DR\Xrgrr)`bCsetG`F$kI-ia5Iz!5Nqhl-cEnUcHSpIp]n%Zf:/?Inia6enuHC(:Ii"RKEd)LmRM_[;-9p4qnMj3&ilQ1/bakime[Tp?p`ej+u;P^+J?GGS;8F,!nU_6ncs^qXs0P:7^+PHaeS'LC+1m(/uKIYo`2gi1S".5CU9=g!cip/!FTt/1_Pg>%Fd%!<<*"z!8\5)F#K(!3Ki29r=9S,Timdi>)F(IWoTqQ*kH1@13mS:>RtstE\^;D;l;*FWWWJ/R5*GK?+MGHbEXUPbr=P$J\$$lC>+E?rVQ=j+quP.9[?@CRSotS.Da82&$8p:Se=tL>'2`j4aXWIQJ[2lh-;0+zz]Jl":P$5>4X]/LoN>e(LR$c\IrJt2e%kUYQKT]+@XGCtZ*iSie`/WkslC7q?R?='%-3aH7_/O[b2QFP4IVO$Zca^zzn=KIQn%WYfW8[+0SDB%c5X!W0euW"!2iY5Q[CpVB8d5BX)Dt,n7Hr6sc+AI:G^-_L0D=VW6QVjWCR,sI;Pcul?=&B,]R0CUm-EZj@`E4!Ec##:ejD\!m'FndhuWlYz!!)(j_83soB?sntHM,RS3tEDsI/;fpX]O0ek[K3AiZo*ClD6`GoluZr-Np'YQnA&OF>Id6pY?=i;,OLp;s[3O3GPXu1"GbaC7WSB[!#U`O8?l4GU!/9^L=XW/,fqXWak`^WTm8Js^>\.!%hDu\b3"7mj%@))agGi?Mn2.!L%.os`bM\[mjmbBf)@nrX[?0P@b8.i2s)_4mj>Zjic<",3C9:2t&$NL/,z!0E0]5(&_Tjcspn^OG";b\u=KQ&XH,)).&)\()GAs:Y2P.lOb'TgTtNg)6HAf)Ep>K)9G^EZa6us^L>"am0;RIWTUk\hnS'1Yi9,W/jK=,PBdhmLeg/Jzz+QIK\4Z"iH0H7?h0O]QI2uN+"]:PUckr(>94Z"oLZ>ed>A&aH^D6M:.9Me5n^:q<7?bVboLIOd(bKWD$5!f*BR:aFH&3ZnMBZ*?<.i.)sW7mob(+$\W=hHomr0OR.<8rB56l7GA8/fMEn])a5-mJ]#mq-R"(bqaOKaKJ>]L])iSG9(&EcMctbEa`\=ktpkSND%;N]:n01hUH6%hF`!:S3ArL5M#TP\,mo2cb)fX^8]PmM_uX]Y2"$NbCbXWDf^`G$EP!=ee@rO2eO4k!D3Fzzj=]+i&!bW`#j'6rO,o>tX/-^"U!ol5PKdjmWg3#'V)hnpGgZ$#5s[eh"q@lF[+)8B'eEH@h6hi/PF@q$I/%Y@:mEM1?GCrkS5R*(h7@`%X/[*Z*F8[c=f[f$>!N&bF/+mqO!nE`;2K%<;<\lP_6fkbJ_Y3BO9hX4Dip*m$HG+\"^4-$lfuH]Y9N3[/>G+4^NE'_CrUj6;G/fIYBuLAa#RC_COah5tW0,LS8(Bt4>[.\R?`I'SAZR+HNlZjM'u\@NH7/anz!!()GZF:lYVG%k=kZh't]m&q:KnY3nUh7l?Bl1n)Y'T4@St;Nc))3NfW)]m!1:Xj-/hSapD,O;2j`7ksQBp^ZSMMO3e##j)/t#QIF`ML82sS86$f9asJUrAlEH0+BaWaNkJ*=ZIrGQ[0,UDHuUIT3>DAtNP4F?e'k]lCB.6[E+Xa0O#b#mYLjhZb/LpYV0iJ/LumFl.$Po>R,-ia5Iz!6AHO[iS_K8.fFsXKRD^=gQ-/[(CJH-KDVI]'=*AY'T<)6%`^;\T?r&S9)8nK7eC7f[7@b%1!6d))aK8=nt=jC=R(beu`XD!rr<$z!;K(+hKl-&XfX@#f%38jY$>[]g=NK5PAsd5BVDbl=mD]#EH-[?(KMI,g"@6@!AoZ>GkC4IET>%rC=Ge$\'U9a9E+eRYNeEmgTkeW6:XO9S]*[+C[3&-:VBgjFNuds?hF7ZI97`ui9)U&Pc%p?aBjT0Ig3Iq(Y7cs=8,M.b>68X#Gl>DiGuh7?U72H/q8i[2b)qWjh16=aW&luMLI24\.l/QsFS1iD)N4DU_?"onW'z!-g/.@m)Xm,!pc:/Q9o_2(Konn(kTWLALVuDm^OOV&oKdB:gVc/M/O`XNIB:VM9k]5C)h4$1'kKaVhQZmjhNHKq3ec_$OQjj0Q+gbJKT9Wa)-99@!_f0dT>+"n/Iaj_\6T%"WY>bf_44GsFT*Z1.uzz_##T#l_2Xs5<#fuQ5M#ES=#H"',)$PPq&V`ZE^Y@%M%''OR[XqYHP-7_mX4(Sd$Mg1257:Ol?&.=Kujo[R#MBq3GtH>#i?L^^H$*pVhI,S*qS:dI+OGOJl*/eJ[-q=c]*ZPtZ18-\Z-0k,fp[W(1lNO'M+LQ3H@?Cl:`G;hXh^qdb6V+[_/iDru[p$1'H1hb6j%3'3B^9)#e9lZ)%0+/-q_fH(i#s!8"i98R`)`;B+0lOEmR50*RWiodEShOTio&\&#>[5RF4*Tl5S`e=kMeKB#Z&+e&LW79NaK277T<[P6REP`!041$SY'Td+)C]7%*Z>h2-^V:WQY^JU^]!kqXCG;4=Kt5K%V*P>h7@app$:5e]Qn!p&CEqD[qO/5@rkI77n918Is(53k09C)ET9Mi='%=>\#WT6hRe!Xf@TcIX&l!gTi"ZaEH,t)#mn_qa\)M,UE1lp-7'tOH1N@D3]\fC/1;np+Xp?fJ3j+bj"Rt6;)+0HkcZtN=SX/L?#4!rfI4Un^,*\(6ac*?k-eb.:_6\d,r#7VTId9_2kjjM<2bqU\PzzJD=_dW`9q?-lJt4rVBZ?>oP_?PiEN4?@:S?F_7W"A^I5EP@R_OIJ9Lf`RPoNi+=HPHcL4t?+SND&YcCJUnS@O.LIW07F9MCD:rC.MbHM!<.lauW"$OmQ1VtAS.ldi2=S=MBEL;p2dXbR)`"N]Ntl_3U^G3mkT*7S*B3^,aACtZ,:WDTE[)3lZOz!!!!aY4MYC6^*[rA6#ZuM%X-$?`gWj:+ue+nO(RR)8il-i-Y@$bXic=VNaig#(hmdYngrZHiT>#^K1*e,5HQctnR]c)HmcmWC5tXb,BUP6T.!etDY?kKpX1e(FVUe+_I=5[GrUnNOe#(6>*ZcBF5q=H9ETcHR9q+$ia"8kp+$Y3j<2oouz!!!#0cA`c%euW$7m-K,ro]`DXYMQs>pW8UHY?nmL#mlHELkpnEM3!]n9MA,P8kMZH8PMq0hEOu=G)8,OATW$9G^+I0:lrH,s.`)FDV_ncmd;\O+#n4I_hJWT[r42f1""UO@V`C`8K)rnjX-H`ldi3"EKf^^lBQpe/6QFu5&$/TA/Y&VfhCu5p$5MP8h%[.W`;^([]$q^RP/#3jm?_lp6U1M<6Sg'mPI_C?FQl\oD43=tVDQZ&LRp_[?9)S*@A,hU1K3V5VbWdEP.PE:kK=&BG6$*geA;A,HVCR0N=m+J^8?B2N7AkZO#GbB($D4%.S0U?z!!%P!L`BV04`onLKnY5Df\X;gNTqH)+()^-Feu:\XPWc-e/g)\`::iC8jUN0#:*br"0VbbL;/mZ%fZ=HPgcej6P]m0hazzG]2ZeHK_J8[gEftTO]otgc/fU:S0gV?IXW7'/CfMFI?AE;5#h&\"[9HJkGMfA]cENYdLlep?YpO_?'];z!!'[PEaV$e0JK_?`JR8[D;2Kn:/3^I]:5:Z>jJeCoB+_+=Nk/91`Q8cpfL^'.ToK71s,6I_hSbhQa;2ArX>ZDiPL;e`'j"QZ*CQ6X&`4iC"]egrc2kH3d#Pq6hg$)WuSUQYjhD]fC#T?LDme*X@>?0-73?jeu]B#2AAY"1h^8rW0!+&C"&rYl`/dQGL,lqS=H+.M?s7_z!!)MLP1/]i;,L22NRLLb.YWP/(tII"hd7u[>./8#=0GqA;P*-q^%K`LUIH[]=^,)8"9]RuZ$5ZnnoCm>]pb''PbN@"qXs=4\YF.Zba:--&2lF)%j!j[+/a/@au\j^X]r88Nf--cm&7(B?FtC*W8qMQZpTTYK*Dc7<2bniI&XIMWpSKGB0ZFoZa-!8n`%OLD[!4L^KqpTN"mEVDcD#_zzs!Tn-*Z?+Bhl^6HRErB_irT;b%IY>X**fsj?)=a,Xf[A68*6Y:Y$>-@p$qRoQS4to;SR\ZN9]/p9cJ@`j)/B?Za*DQ)![95E-He[od57u^E)KnVtEVG1^IQuW*$Fo'i2q=>Q>l_q7BJ,l!lio?(ap@IkhDhqZucE^]QrnA>d%+I+EV8k_p+q!d89mFsKZ?Fk7ChuDleUITWb#R_"RNE<5c2.43"R@]kT[<8BBS[N@fo(r%F[":DgqK2,Y[9^@cZ*CR]kUr$?EcR3'\``lXTP[r)pN3d'^5rqu/mhaU"%(`4MZ3dT;S;<#]TG;?;P3?b`p[c`/M=qtKOqf<0#"A]kk>,J,pB8s7i<_1Qcff)#(*-RC&Vec!XU/+Qkip$-+SPTE&l7UA>G<79(8u'#1]=V=j=E8M*P`#i\%I0Vez!!!!AGKGF/:c300mo?DhFm7=C4]P=a['XYrTRj1`'eNV]m+J_uSaue.GL]&VS2_[-D8hDLJ,8f:YncS`+mf#U!?9K'WLBN*n8*F6Y?F!;6aS!E=[JFI!#(qF6?-f+z!!!"\]B&I-W"^dB0s(6JPs.#\gdfrNQANZF>X;m<[;?+"F4;%]=hSRoXhcHa_ado1[IJADr;#r+@kLrl.*oN"I-8eG%j!j#R$a7Y(V+[f,dR:?gMd,glRtEM4Ki))>-(g\orA]A(FPR7F`;;UNK$rIs5T/)ZtH;*$h[kKfb[EC(qWD;-t2=9^E11c4ioDn_>oLqC6Do4DKb":#1@DV\J#.9*6B6:+!C'@Z[Qq=CIXS#RQPNugH+DU#.Hgsp,fVQ&mBiWa-V]7'R"Pq#dEZXUn2*Be^JIq8(;B$?Y$n*b2i^+&<$-MdA3PR_A>m=q.`\mp:?fHPt)Nb"C"2X0/V.IJ``/0O_hm7>nTjg#DAb]Q<8]A]pD4l-i.?hPqDVI!A,ddN^q>?G3eL:q:UXNL?@V`&lGN>s$_GUjE%?G!$SN><6]5rl,RF"hsE^^#0DID@Uc'Vq3C!+QBlE+DR,UR"NnP=D;+d\q3`sezzOOMF@0dF;/a@%'j*qSR@?b_'gSiqF\*^/fNjsH,D\om>TK*P2E5(2t\7:9Mr14_/@3]]/Wjg*o[-1_77/RUX%o3HmG#*G>_QlP]RTV$M\e%TC=Posb/VFjs(kX(-@G=!#O/*bXB;`o04106Q%:i3hJ?tCX3Ot_#27>?Mm7*O1A/)^'e<eYSg:6[A6ZD=\-YB!m^Z/Xl+M2SnJ%Xkis'UISh7N`C#+-l"=;oV\=1\oQniYpm@Fp!D4OLRCSir[U6[ldFd2h!dAk_;Pd"-EV&>;X3P'Wk+P.tlI;f.cE2Nlp)tS�%H4Ybe1mls$Sq2(pVdbdeGD`,"/4@7,2:lC">\UIUAGkP=JtZcL5/!X/oZ8")8KP*K_`zzQrgGkLH^1bpt5U,I/*4!h7M:B?b^jUilRB3%i@!nF6ChkldjUsnu_QS`ujd*\MN'0Sta'pmG%[6YCGdF;QjE?Pq,q5]5OIoX]r8h%3,$*dq?[Z)4NO$&t,@THe-ZpoBtGHNugIToCE=q#RCbEHN!]JL`$pB'cS)B&kGPa84lKPB&fcf+!mTNB5q1H'lDsjj$ij4R$bt9aO&:1&P<2up%n5SV25ZUm+F17#P,Ns!kE7,538HIq;O$WY$G8&S#)sXPEV38bMG9A458E?a<60E(D]di'`N&$K?T^'OfZ2f:`jcC@Cc*Z9<_4?Pa?qW]R].kC"Sq=EeL-WH#Zgt^VkCT!ck.,!A0Dr&"TW+___F`MG?B[W]u(LMPECtPt;oB*Tn\3,06;!6?IbSD'6q>'3G.smjo]mB@,++>V?Yb8unebRtPf]_#<IO>(qe'lpB@!0/*BU]+TgJ&>q=,a9RMpIpb/=V(CZf!S:c1:*m@7)#90?=D0nmWItIkKWJ^]uu]nHh$)aHVJ:mb*=JgW`uH#V;oUWCKYfQl;b_`9@p4GcdC2Czz^egq(SW!cGcT_6m]C3K2dn`4(q>#_uL"Un3R$a7\j2R?5;b#GXb*4>uh]cu28kQ*^ViGfKSt;O+#7nOsqfZifjUcLqbY_.,NAo^u=+!#<`f(6>.U9N)`@fuRfX5L]PEXJmn%Tqb*Na`iE,`&X::\7(c'o_4,QIfEz!!%&FH1U/RA]h[^lDraQG98\We<2+N:7XH=`3**6:/7B8@trW!/M6A3m$JTZ3HM'(]mB;5cVI/*b3`=OX*sm=no:Dt&eu-mhhG_`3crH#]m6psH8l-i0$.r]ZTrop>Q*#(#@GNmO%3Kf;Y9BF<]?[_Utldr=EeE#c:S$GWUil0s;iZ'd,zz5TZ/UQM0Jo^mJ&lD^tX]QW\2NBQm1j2[54W)5q\#.A3mir8oR\N#bET3o%!AGc)f/^:eJ3h9O4]QnQ'NG=S6D;$g^f'K`h4rZM&jHM)lk0K[glg)/pc'h@r2Jq-QAc)2g4*U,Joj?_I*BSF\h7@ah`f6^)fs50Q5!IGm:%S)P*]eCVc^m;=pKW)bF6:]gmF)+:z!!!"EdATp;EXG26I/M/Q`-[MT?lcYSGX,Q-)l5CW^CeM8/kKh[1NSEjAHiW9>.&*Vqc"LU4+@,&eZ2ch_o!-#'%57X`Fl*].fKuHMBh-H-baVpTqN8T>W?cbaLZN[eui;Ze@bV>RjS,Ia#`4l@Jd#)z!!!"LJ!n*f5Z_#g'+r-s/.[1%eQ:k3jcKd9WYZ@].oqnZM\IVGCY(26PqF[AG)Nkh)*`S_ol#pMX&lK*?UsJAiN[=Y5"BO+<8YESMXTlo\PQ$t;nF5oO%3!;gmdBLlIX[#_s+3@4pue9!]Y(nA*W,U"T:VYR"?&.0o#i]0'7]29GHC42\T28X8KPu@4*9[oj4D)nb*=Jo5;`E@z!!)LFpp]CZSN:mk:9%^[1NEA7T@eBL"h5M'lIjGjmtIFu*aSON.S:*\<@rmbBh#gXV`-+!9CGAP:_!e^\feRPic5rZ-9_E956-.TNMDq"Qt>m0ni4?@DYCL(,*'DH3fB25Nkca[8;hkTf1[mFnt7kFcJ6Sk>!KZZAl!;lnXBDl1XB;`Mldc.C%\,S&.PNRGqXs/un(s%aN_W/;\U=4YPEV2N;BnYid+DC&f;kNs(`!l6qA__KI+u)H$Pk:\1M;`-A$97ShMP.O_uhikU7u1d3lhs^,1@jsLECuLHKMTA[!(ija]:#H0&eG3"Z'c7=LrV=p?gTF+$T&[miNMhI-8eGnF5qW\@C&s^lpK*Mq*kBQjql.rsqY?nngmbGA4rO7)t93M"n:4#!@ie2]S8sLl;b;H(LPhc[b*MLc&"Il2>qpZhS"9*S]B/@e=nT>zzGada74B0@@ajJaS"&W@IX\6SSSTB3I/)Ki;MVi+-]d%9:*)5J=QP,nkcSZ0&O9bY:XZc?HY_5p?cX=*_Z+OIJ``k1d(g=z!!%7YjMsB)q!d7&9Q7Z=p14W7%RQND_1UD>ril]tQV+Tikk?`-j3]d,gX]su7TD.sK)`MZif3a#E==3Xdo&\'LrL-t_HQG4U^]:4TNd9i^6\fKH*WQ0?z!'E.0@id[>_?;mjn%\nj\;`]NoM`IEoFe;U1:<>[as894fi]VY^aCbQUkW'rahk[<%;k+P,t\om&miZ'\Zp,mHDTL!bI6V["Tzz+Q^X+oT)69Gk-.DPUTP4mNWh8=gDR0Zf..]qR'_IJk8O*-7TNJ4tO_^$k+srPEhDEdH-nl-0BDlE`+5hZtN]N]ZL(183YJuVFDqHXG*\):"gtC*`Hd1!1LCP@f==LRd*dZha$(Idszz:Q>:>LT2$--^KNkGBr5$#7jFm/?*`)fW_'48S)LG^A$K2N>aZ0$o(2a]V'<5gpmFd!PeR'bL34[GO=+,p?^Jji8CiDYc+M!`5KUdoQ9bKZ7.4ONuhX;Wmg4Nh_?i?TqS.r04$bgq!c:_)lHK(^2W$tgYWQ0NlXS3m+C9Q;=c>]bkKXh?^\#\Eo`%X(V^-k!h"hdB9ET("q7a)f\5rD+[^u4ATl9b:S'[_e+lNufm2D0Z>g+Y0]+[3P6=zzTFlIJ#r^q>,=[WRbD-QJWZ9OSofrBDKYUjiT`5p7+0d.OZ\n1c.$M3a*NLbfoG(X-^,=UIL5:pGm?ZOjcNQ'dqPYP6;Kf3a$``_hH$FmCO5SpTlcnb"S?5BGs\3P^7P%h&iqH)PE/[;/iH^L4kZgBUbmcU.pH)J&Sdrn+Jcp,Wccz!!!#gmm\@5Jh;93o&\'Vg6sm7.eg97p?pa@\o_ZJ<>QGf-)J2&s1\843N1`ip;uBhZ*CR3:S5@Bk>"]E9QG/o7Ri+iDjE+PRl48is5]A>9NSB(^Kup=(Dg`E^A0/f4a6=alo&V.-nS*+qsHPBhUBs&BRr2T(&ps%9muE:f9@N*cH_n;D6e.nL%[Y$X097Cq`A`g_H6d]\1QS9j-]Jmf(Nsrts>B^4!V"]m@!aW)9>NI8c%<.?]dS+DLrZ!lg0:ZZPH[SND%e3HO?JeZ3+e@F[6':#7lE#p!0b4^%%()sM9MCCM]5m"*e&>h;N`@RPPq-M'=l`*#dF!XT'iIf>ET>%W=&lG1?!5UV="ghQT)hjc]JmbYXX/H=^f0+@$c`mQtkn(tb3k6Ctez!!#eNnk^"$b^lD5=jt>sJ,QcQ=hAio.o%7['&R$k(;?X9]MY&)Ds;I%5B+moZoc%gupk8QKFmQGOO*B49,?]z!-lZJpH8))Z06YI#mgnY4*I]*X&`\=U2hM+-DkqOf&tAO2_<7sb*$IH!H"0K"pYAp3B8P]F6CjAp@_Pdma7ebp*$9-7urrb;b!jZ2Jq1AmG%UeZ)V$D7aW;13ldfnaWK7]63G:<46Jf_MV:5O&AkR.TE@>S9:MlKettN$,8.t=IpVmg?e68U,p[&D@l8)>iKaiVYFl?4Of5nAcD>N:Wcim\%n:'%IW#^Z_\W&;q%UAq2$pO2YX2oV\5G#K@OclP>rj>;p.Bcaj"djDD2!rr<$z!'DG9e]cH(<:/>CA+D@:Y-+p#QS):QHL9FoJcuN3YFm\@fu*VK's<9h6pl7:uSpYUJ(*,4*3V:BW*P'L`]NZHZjUS=J09q(//lapraXqN0X>e5#+,U=WZ+sJWl/i>LD1G_tZaSPtPn\uM[2l^)kY#=&Y?b`D4,gko>c's98JHlZ)=M&bDn%\mOkKY)0Sl`'f:/7*6<>NlN4"&="ba:+07ufF>n<6X3;3j%Pclf5)'7$PGi5(':jibiL5PjT=SC2@jd@s(QQ7Y1Gq!d\*\&Cij52qN[N3-lGrq>)bio&%K1Za`J;l5q!Eqf!-H)^&kT7="mC&7Jdb43oV91MH@g,Q3$k+Ue::`n$DH"^YriffeQMVACE2fIQ;+/5ufqf_KeeoIX=JUt,N_uhj@k+TYF#ntf913rG$9@#qO*nmJc)nWlVoB4H/FC5(Kz!!)M1+qHQI^3Sq;`t&g]pu@EHc_3^]b$;#>P:"FhAkhUBXd`3qXB;b)p[>.idckj2CXuHkD:bq]M9?=8,7cZV\ifW@GMeZ+lIDp_NeE+?3B9)K7tqEiP1.:iP:%k<=DBKFB$@Jm=o\O&z!:\J^%lM2kH)QgiQ.<'F^MMk(OWm5s?+X]lmAa0ej:\4(oGor47)itbH"V0?6_gBM_uTB(Tn.cGf<8Nl%1NaW&!)R(M3!]n8P)KH9@N-I=c_ehHh9:P'E?:(/3Q.%e;28c`5L<\=OHa>rVI`]+emM@$Q%*Y3HO,oJLt*7Lj*1l-1;8D7:+8,=0>f-mNA-Sq8O@l-qDFE.3m[eUMCf+C8B@lpYL6D[a:1m5'm,L;(jRU3Q]Gt^FVQ%m3eVk%rL%-WSQJ-8WtK8*u+bUz!!#.+a?r[@6lr?F0k,esgf_1.V:d.<+X&.(P`X9m:6F5&6%bC?2`J5EqtJi)B23_#X:lQn>c_$^q7494dS'/*i-FqVal>-%QH!j<`]R5QZ=SqlfrJ2XjQ'j0c:*($qWFK#cC[=Nh7@`Up?XefqXgUWQYtZmH2mmBW2QYJKS7k)<1Qd^IX\5%Y8;+M7Ri+L.5!7@_1N!Pg]ITZ%N[aBB$Hbn;l9KU5QB\k\GuU0z!'he":_Oh5LLt+/Fmn0mFribjYh:>mnaZ;;ePkbhh;&/8"*:J98kQ*\UP;ZLZ=M)8i*]bY,nIDYPa%EDFmH&Kn=;Xbb#`(_@ga)*X;l`UXg\_*Nu9`C-J^C20d\g,SqdXT#7gD!osNe$[-+,dW:Nh)>6+^(z!!&s[LRR.W4B/N9pZ^-s[Vad-D+7!Lkp8B]Y''']EljOp;bYg?qtn";].:kNW`?ZTn"/(YP)%ag>[6(<[;/#'kTf2\`eO6#*AClOr04Bi\Y=O%1GeXUB:i11lJ/qVl&@7:6`ig!$31&+z!:gODM8Z5L]`e+L,X;dNhe.GHI4B\X]V4aKSCr\27\g0MJ^4#mY?eW#0UO6e%SirtJPD92>z!!!!ijImpQ2\1n/O+6o[G@e[Y?@"%E,/Wu8`5KSpX]igm[;+5)7l5,8X]m`pnAQ2N]RB[c'f0XO6cBfEm,Vm%?B^P8N#n<-\%B8!BP=>,hQUEUj`n1Je]\6WjIlPRz!!!!sIa:BR(`W(ni8EPI[;3s'>-?PkET9OeqXrs5$5G&G\og[CN_)f6l5e'707WEF3D7EDSqk&[rqlD8X+q3-DX!\k)M\hFQLD_A!<\R=lJus9XBB/)OGUi>;0QC`g(4B-_\Xc5f0)J/0$B!Z^M?@*,kRNjFrD;2M$dbNC'2(0k$,9oSi0k/)i^]2#afs4nqG+CdCp?L2/TqS.j+$PXENu)FSc7rNEWn6Pm1Gd!C#mgpta!/7>kKfbbGjqC$>qB6jd+dZV4<39>(WQtrtkb(4o*;&C>SithJB*SD:z!!*!Unp;FHB:g:Bi5(&kSNCIWE;K7nVpjm(XL`TBRehn:Tj5-KJUrB\SAipQ94bRfA]e*hXlbk'VPL"ECtN^a^4#QCT#sF\io4dug,-,6;HBRho][U0E-$)!rhs)4Z?Y-3/:[)ukEI8E>-r7eGRDoFkiU-Z=05[!Lcc@Oz!!!#[2Y'ZXCro$d4UrZIT'5>!VD5eFIJU=pZYJ!gEW,`VMruuPDVV`'O)MUVl-^l9()kFbom6R,++7,Hn^WQWDrkAub!QgU'4j*WR#Tq-;;[>ap/-g,NK(&:TgH3_Dr&!I)OFO*<(U6`qWk=H@Q[(SH0CqhLRL,<.Lo4@0]!4%[)V$f9S!meCe3XVG4J%/R,ZbZDq?NL(5-jO[1%WP*4hjlhftJYKDJB7uhuhq"^UjI.;p"\$u-Bh7@b+p?hJGpV21UqRq7M@Uio3PEWsUT9Y\>cm+J^Wc'iqLk)CEF\p*W"gUD*Fgt;].z!!%P!%D1\pl07Fc^\kAu^3TG*B;;2qloV53O7H+Ufsh;-\d?a"Hdn`%NQ\K7nk`\#hZ=!/:7Q"T;5O2ULIudYgdt+11/X-uQ'IZ$QIDlF*^&ZB]=3ufe(7rVSQ!f#gUA+[Co@ctY?sM``dJhJbL9P`d,0hSmH&=]2\E=\"FKe*0W!4?6fb!5i0W_TU+qHrho2*go,)zz3/Cl2cl[c8d4c70c[Yq(hbg4tRYS=ce#%NgnoNs;dHPcEFUAzz#I-oC3cEk;_f4]6n%Z@#W)A)g6Vj==gZoQS3:)UB<*5n++hX#7ns@D;)?O/CdZT0?QKfXZ'9.q[)Lb'O'_kHdTbFmIU9)MUF"&%,,0;GsuAh:-@cM\[mB;Gu"%]6E]r;l5MbVF67R,=db&%M#qj$or%PWg.nZil-iMn)+/dOX#%['IA42/F2'"YDI\bJ,aq"l/Uf6l.?q6DTqea]_LKEOcbbde]U))G#)<`.R*8=2/9)IJS*/qM,Q+0]R0D@Rr?#Tpl<&Yat$uBN]hOMPTtX'10]7oXg_?6>a_%LCA0;$ObWu1BKJ,E6cU]=XCZF\iYtD1Nr-;=gM]l?bUpZk05g)DVi#TIKEAD;=X2H.4H_1l02>R=iu/:ZfRn??tO#JGUnr?P%%m0_Sa8Y6:-9VK*)2X:S'\ZGOJj&5;kqX+'s52_F\XU:!,p*AV/]'cke5@q0(/LH[qEfW\eM/ml#$Q2F#q-RYgk;lA>)Q(*:X]i]_`L3Z0\8\-aB+Z+'r8)eh.CV)j90UnUp,o]PNuh>D:qM)KY3b;t4LAJ1I[2T&T5sPcc.,sgpj+Ju^>-Fi`l,fc3d#2^RPj(013D_VnP*oMVTgWp]Mc(Jc&*5dQ7Q1E8&mz!!"oTa-9@N%im?3JG+\4euVa+%<^aQOW#%%/mZ'(j++4Hf<1u$p[-_eUIUC:kKfXbR?a&f\8c!h&!+8Bk@tu(]iJWS[;+6VPI3OaIIk]BXluF$q=8+Mc(TFH#9S>$7>J7W[.iI-?g/[sC[l8Hmt;HRT&?S&p"&-BN>n]dQ"n[=_1s+]3+U*l#nnZ`p"*Oi2f:`si4umEkH8.))AX)()&X;6+.o'n/Dc9.bY7gHd797i*%Lq:^(93L;%ON[(D.5k)B'M.'QiK])=b+A^OEkWO3dUkis-#3e=f6bHM-Qg-rD0<.`u)h!rr<$z!9C_8hKe;+kFinXG1=7qQX>1j?G*eRYXt$*B((s7/R>r0p[6iD#mjYWRj3E4s+#V"qtA7Re'ld34B/N9chO\TbEgg@b^fj$*1)F%3HCqNJ$j%Ab.8qAaiS\je.L^m>-uAbirK,[z!!".VX&lL]PKuT82Jd'SgA(I<8WtKX;=EATl_*d0P8,TK3%b`LQ_R'3NZUJL\#03+zzzzzzzzzzzzzzzzzz!;JMEp@cf!&HDe2zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!a/t4S*`gAJj&eYgtHOp/Wz!!%Ns9s<13p'=jTIFQ'J^oCD8G3I<3Rr?"Y4*KtT.8tEXghGXte9l[mqt97k*?B!,T=DD@`f1oj?bTdCe(J:d'?6"N-f,s8?_>BID;44:*N_56d\Qm@q^3[9jn9hJaN2HL;O3];kj@bS`AtAAeZ(lc![UL**&;'Grr)`Ce'fn@&HDe2z!$EB1l#cgsmiOH(fIO/<;R'\"GB\6I(RK1(b13Uu[r:0O:1X=+$4NK[m)&4)s7JDNA:qji`ulX]dS-,fFfXSiqG#<2h(eZ"MCS(A1Hs9Is;MT_`^DI;G8ezz+>:m]bZqYs@E"*=$^anp=L"KJr].0YU-\=]mJkF[+h3I-XC(+mtKbIVi^e6eT;7>q0e!V;BMkV3=Ku=IY:#T'>Id2!8sR?p)VAbOzzJ378lY$K#)(Y9^_.brh7(+`RLgU$pPJ:IXmQ*#`J(D\B0Qd-\#n:>EA\860XlIBpA[Vad]o\@d:bfmH$[$[5JYcog$b('HipT.N(mbYW-$e!MQPrkiYG^MM[8kM]N4,R(53'KMi4?WPaPq2b*m@-7cG%+pTV3>iQ\5?!B'GP)d4tn[0s8MuV^UJ.=Ie`E+fMS0$)!2,eVH1?JT7-F$qE*KBET797*gg'XZ"$9sIhsH5?bbHTZ,L?T^OCUaAB9iU-Ap>T)7OA29$=gb&ea3jm&V`M5AG[tIk-6VzzaKtU/hlkgL<[q.O=MK=`2Jq/ijiWjeW2S(id'IB2cC?o$A]pCmnf9)*Vfh=Vjn9SiT6p>#W@tMuF*"\2ZT`a0lm[;<^OP/7L5+^Jj0RS#efs,&Of`6ASo&Tl_/qYMe;bP2jDlhtk`7t-B\dLabEe`kDWuD#k09AC^)OBFF3d!np$1(tM?aY5Cs2^D9jhA%FYesE[eeuadl4W3o#i[D<[pS"*\H\JNZ;chKE(uPz!!%;n[;4AdQ7T"qD#3hj(E"*Y;uNt2a6M3UVlh[PW6dd/r:;1H2Bae0;13L_-RU9K?XFb!b,706YUV9T@`XWS[\R^p%ulF&nac7VV3McC\9msf\QhcKlL!tUh/!fU<3Z.gc,%f&8(ADDQRuE"Vkhc+o[]u9piriPhS4QTMi3MA8,VR'>e#koAPuE(p$1(mb#5'.RJ8cM#mgq/47gZPcWG1<0E;(Qz!'m-PfBXA7DCi[DB4kj!+!7hiP*;*AFQoMpH($X.q?3\G8[:XEDV]&#_lpfN8p58D*pW4_068b^_o&6KWDXH]./6Mq+j@5&+/,\Y<;%2k2tpm=fu#?@`=5H,N[+8(C/Jl7qQ8M$1?W]="`*fLJFF'3N(\-'AlfJhqX`Y2bj8N";$'T5C_Oom&-J)Ou:jp?ajL>3(Pq,n:Y[oosz!!!"L]OoEW2#FXHL&Ms6eRH7ip"!b">H*:JOZFMi/83Fn+J1*BSG#\'EE#YVZl]0k5s>5C2t#fm6fV[V]5AB/@fihd;,WN>jg:M2.*ERVB7);U.#Gm\Sp@hUG_%X-/X9_hKmAbnGiOhz!!)R(]j<@U32&d!()C2g()7R\^:^US]692ReI'F?a\A3\OlL_5HM[O9>M&/0Dn^3f*h&@Zp#1ZJb3$J`M4cThHB3.:J#_hJV!?7K6lo^1DBmb))uT.;GaT*5qS]Lzz5X'5bo]ZE,>-?Au7UEm/j=*Yl8WK1eC/Ii*2/Cd-'7+qL?+kR7ME['D6Y/q?1i(Yn,9nF;JN>jaoCL/):IIT=N>a[=1++HIK*Mp!.u97I03>Q:lo&e=CuV^kGqBOA55t=edB.HR=V8T.eS2+Z5@6qqo*G%OcVG2,hai*^!\iM1Hdla+X&!Q,3%1U>Q4X$HhQf/Z=Jf>1oda_YH6WpHah\aAb!7eI]InZM\e$!=Kk&,IK'0?d*U.,Ql%Q^(eb>hCW,,i'U"WB+sS=NhnCZls8Moa`JYQ4pu@F)2fD`3nmEMR(Z0`B]eYkRX/e5Mg`?\#z!!!#7r^rD'+bLi:0C=/Ybr93tC"&s4G=$YE0O[;YEog&e3b@,f]B>lO-;>t_13Mk]'?(Oq&KVu7N>aYm4aQb2F6ZEgc`I=4bR.TN`_`V]DuRqVKH?[mq"MAIp0E8\N)QS)toGkL@P"`-)Hrd:QsW`?+\5ncPg,`?`To[W@cM`3a\4C%,\3Y.40NQq0q<^W28U"d"mZ[-WsH0r#k[(l24zzGsQh*]K5MkHhX[cI@<$/-C`5H0uL^mg5B:@Qgp@Vm$idM`Po6#f1n7%ieoJ6/kJ`11g>%gg,63c'!/T3*/7^7VXo4B0PnjQ,t2o?Xm^fs3u#%c+^=92A@0<^Ro8zznDm#-7Xk)=,=[Wr\ki"aeR`F"CtUR*:7-5bidSGeVb\,bg:)!mR@,K7Wh1^):rA"sZY3P>k+V+mYEoL'CtW9@G?OiSnk]i-O0GiBfuJ1U._ZGY[9^Cfea)n]C7hGZM2@('Bk\G&)'=A+Z0X"kFZNfCC2-F99PA,'jia!O*^.)[o4B'd+*m[^3Y1oTo/""j/@Hr;4`TK"aH7_1c_%s`bEaACNW]If":#0iOi/UqAeW(?+iWr=R@/B7?;)bkaVGY]I=>kGJd#`%KaS\*$Z*pPQS2^KrKQ\Br4:u,jIlPRz!!(sAZt@Q$R@&5DGSo9do\[JNH)RE2Rl4C`'O'SV_hYPnYJ:'OYI:F0WC;^\Q(SN#l5OZS@<@ETRYRc;VTLX76NI/ez!5R&1-724=-<+[4[-*nn)A?_r%Q@`?90_m$pm*nm\u1Zd-t55;qW(A>mC88:8c:ZbV\'WYLe]B3_ma[7)k??tbIH1MH6^]4<13h=R7.eR:a`SY9OOi;Li6aq!k/t4Lt[)cp?ffZWUe#(9gIJWRjg;.*@BO"f4SNd&nc(7(&DO6KJ+chhB!WW3#zJ>^OC^\jhO:`T+,8$e3s4^,I@D/X@]?+Y8c]6FTIkNqQ:^2ttc2Klrj#n%P%got5)^4#lRT0@\nil)iqDM3^t77Kb(Q\RJ4d(j>pO$EWr`8uk,=0@dQ\X8/,LPM3J>?:"DZ"(hEb09"A9q!n9?6(e3LsZ]eH)UMdRMa8erGp`Mh5c'QJm6NI/ez!5R&nrVH1^:/3PmWF*DhC2.Ld9Odi&Te[-1?bX14)l`GU#7hm.fZf*IFhc_LLCYok>[:WHB4kjijcBH>k+dr4@IYr^I\V?G'CkXBW0Zlpe;5Nd9j8TgP*::/4Q6s8BE`9!`eVmFnt5=!pb5BXEC4o2%(n0;[3sT71Nb.nP++j9_9(.f]PLz!!*#SJqJ^!PURiP'5(t@/R,[Ep/!c4H"b*M%;foM*bsoYN>jK&/tu@>6A=!o?S=JG"U1k-`%bcA(phr'Smm0A9k"Qk)E#ZZ*a5sd6mp:,XR['/gZ=Q[SAF\Zug"+H;2+tZpFmE)7HeC=gh6^m[q?F]lcT_4W5!Ih:rQ(*G:$83*U\s`05E0iJH)P-2n;bRWVbNXM*XVlIz!!&U2Z*CS,lIAhr7t(7+amGeGaR=DQ6eRi^hS+DB7Z%E]*mBq*5'i`jb<*=nb%rMrq?F(]Pg+(nMf$d-GOF8Nmd=ub4aI&&kDp]LDR`)N.Vk"*Tl+acb,[Nc$WWaQAn5H)1;Cgk<9teerV>WK`CPH=Knb?E<'5U*F?(Cf-ia5Iz!-ehs-RUigekDVS[;4C>``VC1aH(W1NZC4*-(4JsgMaj[18hcEZt@ROHG//h%i%!=fH:]j/6VPt[;0fnqAH%5%j!R>SLh3(&)Fg>X8;(iMT1VpbJ.=f>fMdE/'^]!lKbXgQ3E"gBRG3?Ho7gWDlWEU`5G&J:-ndMTe0HT:nQmqSNCnmS2"N./0bZ/zz:Rh"KoX8VkWe6Ru0?2#O.`[&6iI=!uSd&U5$q3#/-HL9EDqz!!!"LVb0uja\8"g+=WGF$8Yo2,+jhnFNnkQ'm1<.1=='t!.tT7-F$giUc-0d\CMpu;lf8KJ3=z!!!"j.URSnKfUKZ;PhOLHhVQ-.'<&M*kHCR9"C'Oo?^@07Tn>RoB+<'ajd:gQ%M*YTu,6S9>s1m:X:n6f#WK9J,[![O,T#S];[B-BP;)C)fNB_rYdFlY[GhN61UZ=cHh+J%p##[o?9#4aiTVCpVsOoH0CtkMr^p!>rSn26Vj43@Hf5>C!T/YG3u;Ldoj"ha\),#zznFRP]I(23Y.T`dC@2P5qji9K*rquQqSqnOWL0-0:@U`fC8sPVN,tjPgO2<`9L[+R/6%]Bt\8alanDfQoEjnTAS!H"]NEB,QTI8j03GGD]OWi0'r/pEf%&;nbEaa&n_1Bdb@8A]J/Cklg9k_JhgYIIcd-OIL(,:L+gOS.LPhG*T7S6RH)Q,QDkTLOF?5tLb1X+6bONY@!<<*"z^f+^ZKF-r=X@.mX!15:*'!V]=Y\Y?G0NfeS$$#kjb3dhg=fT-RYg'bEg8&ila!5%J*ElFPZ,OHVTll.TK)hmp'uV.PIg0Nd/U/5%aC_0/"uTZ?c'(VCUiRR3Tc,ZY,=NirK,[z!!)'foB+:r#>'UW(I!$/=DeX\Z2BuEB"KDAEBa6_,>2Z2FQegmZa6sM;Pd!bWN#G79Cku*`FZrA%CL"(Rqp>;:RjDlUe)61Y]T-X7ueROYND()$?:'*^:q>PTAnDhh7In.YOM%#Fg58VQOcXSgUFBQq>L'FCRijOE]_`qBLG7A*+mj-@A\CsSNBmgn(P1mY4D\pz!!!#[3@e16Pd-S5k2s*nkK_j(ar:(1%lNY=fs>^CDf9QRX$6=:"1_%\f[afBZ*Ejp\\aLU9@U.KP_\PsqSIpo/&e&@GLj(3'm]#11>Pn-s*r\6H*^f>"TSN&z!6ABQDr:!Jl70[`B4kk&MpZq8?^Z[ESig09.QcddHG.%6kK^A;SN:o!ZEhs`(?M7an)'JN,=[X=14XLmW0!I:3d0jloqe_sHf^sdq\u.fF/DKj+qDjb`=][.i&MzzH,\a[LC4hH<'Y$or;!ldPkDEETc,S4c.tMSaH7]fpXulcCKtGk4ETrBZ0H8H^4#ma'j-]Urr)TKZIm4<8':m5kFjo@eZ2ch_SW%AU>k4nPEV3ZdaBm+1,:XAjY_J@[V_5?03bkYitdApW+[S?Vl-F?,pgOM`^W?aKS5#7h8KeX%NX9/A]p5_9;YCN&fM[gmLp9KUe]$Yo]T_nQUQ1upg2)%j2[3r3L@CHLRpVR;E"?sJ,U[Q3'%QZ%M%'QLPh-phH%*OK*H?foB+<:\')#4a2^^$r:8#aNgLddz!!!!AG6J-RH$O\7_bb[`:Jt.k<3KWA4?Yh8(+e+PIJ[j,F*%Q6H0F%oF-ThG+(ea14V)[TE@HuNSNM0QgU,quiQChJ,taC5IiFu>7zz\L8^KUf+$]l9q^LT0Du),!A(pVNZmMT7&UI.a#K;A7HeoSMb2KEZ\.)j1BBqNp0S?GoeGGA7W&_f?WU9Y#7hm"WD%]uPqg5/m/6\NE_\h`5GRoGmbQXp?Pb>"E5^f;zz\KrFDU.1+\G"g@+5(%%RMm'=f@HGFa'-2C63TZsLrUu_,N-=UB`Q-#gDFGTr,U=XGARua-8UDMiDr3`]3F]o4NGk.gP"5)iPa%D9[;*ene##icJ7uJ%kF6?:p:scaok7/IkY^,j&7>hpUSif$fo0]q4Sqm%)eOrpa5($IBJ%6hcjItkF-r[!:;GrZu4P02O]6E_0/mVYK_:dL%0JLlI4OiR>7f`Siz!!)T(jQ,Cac't1o2_AZ!&"PXtSmgaThgb+A'4aXWNLBRYXz!!$shSPIe>>rsjiVH&T;Ts:l-ji`ulQ[*h#>ePI6U$!gGMYc%BY6>.9f;V\=mTunm.2.bL1c/aa&@qK@kFnTCU!Cs/b1=Ic&(ePb8`l^.GOC]B?+bD:Vm;qDqFR!4))Fa/J%<]U%pcJO8VIKd_uLP^Cipef/I_UMdneMtC<8ile'jdED0k[-4c9M&.jcT44uQB==gM^\Eq1H%jItVRN>$)s1he^Xc5b:LrrN0#z!!#.+/mc1=0A%g_^AP->],\Cf6:-9O7]2T>Q`$aZ3\%^irOPGR"qDV$Qf#K'f0M232.FK0\TLYCp,)&+k+Q"gDO#R>5C_O'c)k3Z4?P`j)L$E"YcohKrLKIKP_DJ[%aF^qW)9=SQX5(0`?Rm5BPaXH5W.DM3&s"07un_V0XQ0!l>^f`l5D7"W-BCP6/f\7gUD+imHq#q@+3&Tl\--]OFrfM>?5&dCO7,V[r5X,Tm,t^Fr;+sz!!!#W?V.HQ?bUp`T7?jfrX_c(mG>OgJ2+01[uQH-[Bs0EC46RYJ0j*Y0ulgbS)@!<3KV6rC*__Tu*p9\$D86/R$Y?*icr?[VOKt)@+PZ7Ri-b9*WWE*oDcUr5rQ$3Y1&N@=o;!aP/Q[>IJ@QEF8bHz!!!#O7GG7f%E$OYK*H%>Au/\WSipYKCY,`BI9NBI!s?6L]]?fMQS5g]H2I=&jkAq^BEo!G=L;b(ghYf]I>.pca,cPjKaS^*oU`rH99rQ.^AI?1lJjprY#qre"1^;2s#ip%.@mQV!grU.(!AX=T9uZu4]'0":',ZrWPSF/I`.oB+Q5>:]Gh)R:hbQ0>IG5BRq#7C=T=V9qan-&eYhacR_5(n6l+bkr!5*aS$&b0k,gp[BAKIiNd(R^k%g>ouSSRaQ6cYrO!Bh!WW3#z!5Q=se'hkZV'oTYnCF^GD<]`N9cMdQe>ZC?)V%YrB'/s_lX+r!(%qK)X&b4;MR'ThP9s"7#=i.M3dUF3\Q?4t&@ZK/ipQ4e?Z"T.Yn`VhG3[RKG51'T0>tI7*?Dh7kKYhoas[LcS=J(fM)@pHo,1l9RZNUbA]b_[`OSm=5(-+0,MB;06`$kTOWo]!/\6#d:24OD?EY0C*#BE8k005'*BM8BT7?jNp45Z)j2[5\qWk>']^^`(0WlZ2Si_/AkX%#+//(qc"pSht0d\5:9ISN(\[c"ZH<'jXzz!-"HYJ,l"%Pq#eVkS#O"d]?S-)%7Cr+0:HD3o/c4LI[:?;7U`/Cf/fbYJ-ISeVL*QXBAI[nb;deqoie^Iefhq97,(6j2[5\o[?ST1hbh0k%:trP9s#JB)V!F8IH7_e>H*7'e<=@hai!:G]Ii1Ent_IAnFq=dbVNZc^[#%CtUSKBsnCZ]tM*2HA;M$z!!!#W:reV=GBJ$[;51uns86AR[lSZsaC&]A`f7Dc<9X#O8WtL/B[NPNTgFK2Q^aK!Y[PEXmsqE8WD]R'.mH6_Hd-A+QS)S)?Jg5/mA%_tg3;G&QgK`t/mW3ts4#QJCq#1"X'E2UG^-_e%GuX3D7TTBq=DbF++O2cS_gAhlI>(trVL3]?Fb*Q8fId\TV&f<6j:NuBmuPU3&uU;i03f=5h\o&\&!>?dFC;oZr$WD/j?P:'.dO,l6,R[>KBoCVZS2C9e!%i[E#lWc8[d(l<0/Vf"49UINmmC1uU=gP!=]tO!r<*NR2n[$lr\om=W^\p&5+@&GNA&jUDSi]Z@>,P,deuW"akjsusD;%t&H?B;c5a5q?2X)4ldef%o[U$GF5XibmdBMJZ*?dM'Z^6pOX!f&:@6H(8$cgPS=Q4oQS5PTMU]ek8mHr,J#cYShRIRcNZC1k))B.L`C8WD$NL/,z!.Ykf<`YMu3;)mh5F[(X;56U/o#W96[V\Z19/Cp7b>PCkIJ`^qoR=fSAoDT@:T0bPS(=LTL(,(`G-%C`i&.9`$Q$PMeluL2rUp$[lgN`GDlGVpzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!%N^AbPKDT7$3dpoiF.LCP?1F@S!`i8EOR*BW,iGL))U&J5V'qt<`V8ht`p-oh>1!]kJhFSkcK9/cnPz!!!"*,3e@Vrr2o[c_!FBjN,lP=2Vnl/DZH)k0KZ,9#KhaIr=M2?76j9*br*ocsc+_SZ>r%W]:!#ldh&OLbNq9?[hf>bcP$SVQ6b5I!iS(SYANqc->Y2\[+9=[^NW>7un,i%^pILzzi'jM@WE--)e[]baZ=V4FqHqOnc9m?sp%%[ZFH?9%]m@)&^1l&nWMuk_mc_XKk2n"NC>616F[qsYM2=hAWbC8%\_*YV.VcB&>.&+6(L`LS9nItK9PtpuaR\H92,CKb[<8rrh6("n@d1T,z!!!#7$cplK[7Z]6V$ch1#9Va3F2u_R(2h<]/[FQ&q68Y&qt@F5fC!#GqU``H)_YI+E<#q9q"T*!8sP[,Q'7DqQBmi(R/#UUK>7Hcqr#;C/hSai-;.WS$uRZ(+mOd*P6L^>#.r?HhZsI`5II0R@0IPE(3;d;GpD'A7S5%LcBT[Y$BYdB@"GK$iBV_2fn+T6e`C$f\"h)#I\6hRQ`o!3X0qXHTO8LaqN1!9,FjWH7lR@feT[FY=t?>U7e1hUVu`po+U:dlR^Yi>BfMj\X%+Bzz]MOcTPC)rc;.pRlg"Y9]q<+B9m^`sVp?[nN#6Y/D3o8K?pWT$]ikJo1@Bm)B.4H_1l06mSg%gA`B&W"=WW+]>)Dl,hDmd0!lP`W;p?^Ie[_7.gH942M=eU6=nje`^eM7'GPq1jGOlOKB*NRL9EH,u`.p&%CXK8MCN>iZO)/3cn$TgKbXDA3J8'jJ.b]lW@3K6j\#X&b,o/\6,m.]37e/6KN-m>`2KNZC3)iPGcGYZOP'X5]Mba2^DmqGa:hM3^Q=U-726d]M.Mp-fB$_o.+Sr:mO1p$UYJfm<7A-ab:MJ]/k:pAOfdo4LFTL-1kM!XI&jYgdDC]S`gt&SB?sVY<(Ri;QceaP]60(i]6CHd[C%!hET>&*Qh^!\n)S^T41jn7[i<_mjPo0.`5+/]h)EdE"-z!!$>#T7-F$QWi]R=f!sj\hnC[c>h60dZeN6E^Q.jUkKfKIbEXU@lg(T]n;SAGCi+$S_:I2g]#.QsP_;0kl-lO7p&&:^TpjS#WFp.(NK0#O]&`nlz!!'f-C\-]5R]1tBXf[TgiMokWiPUFdNd#Se/?pYDWDf^*TDIWB$PtEP/iIJ![]ONiL4t?',)+nRfXl?GARq]6Samfj_$;&1"5:.uVn:I'RlBH?>IJ?&Y'D0I1ph`1qQa(g11eb$3E+;_S=H+!r8Sl>E:`5:$bE;q.kBqf\)*8m=0>eBFGH$uo2'FG%.3ioc9i*^31tQ3nE[9mY5:f3naZ/6l01Xd$ig8-z!-j'kVl/.F;+!,?q&rMNG`^2i=mYHP/#Wmg1qkkOrJPa%E>Zo$#dLPd[(h)9-(.'F1^hKc-675R"b3A)p:.Olo14T+'LH_TH[bEkZf!s]DD:6Y-+pJ]VhZ?U#Y7m!X?X&_qg9[n.C`f1opK@HYdNtuH%`\B:\?+4^B*.R\KfghoLPk]X[V]7%S%'*J_o$Um=gDRpk*'r,Y:4nfh$*iZz!!)f?Z\Pql=]rk>@DRO!qTk.YMUK^9c16TZZSOEKeI6`Bgd9')_;BbB]l>(4`5ELTLN`+@3Sskn\ofeQ%lO=b:kaskO.IS=h"(9c2rD]rp?gUIQGtIH**]s8"hjT:.$Vq<1aaY@?Gf+#3d()=]2,"\=g`!E3O)8G1-9[G.-b[Nz!!!#7$fLC)ZQK0JQS)PV&eYVA/g"gXr:8#a7F\,N!kD9J4sEr>If`sZ0Y%\>Y"U2g-iL5j8A4*9\Jmskp4pqV\JeAK0kT2mgVY$+.+FJaA[b$]$o)jMG'8&d^3sPr4d543(n6;\eS8`0B4[CB^&?`sF7Xh#WtE9O9_MDe=uCeZJ)fhTjQ'")3)T8c&Ece.-*oE7zzTLnb&Q\(j%T1.HfD]ZK:pMRP3^juTAXtBquSVLO^E^g#89BMpBRl8N85bgf.PQ;!MTc5q.e>HgcKqjBZ=Fnda[6R[4K)40=0C?&R5e2>^Ie5S2YAXAs7Z?pp*@%TKq7aod1(TA&MlU0t]%4,LH1Ib6=r$2DR3O4$rK>hG,=]`u%3%3!9M@!ZM@k-te#-"'c(U"<6\_!-G7H]Ym^07(;$o?D3-]dsRoiMGio4EYAL1RZjHEBX=5GKn!<<*"z!)B%D;6aS!c.lj]Y$I?2.N`E5\jD)XZH7WIJ3p/YG^.="HhQeTFM&T0F<8#Cs8G@Vb.O77SAa3qDg2uNNMnaRhE63iI3J4/gt^\mCY)Ui>ZpB[$m.ZqQb?_]$O`c!Cl6Y084iN4><:`,WG'8%T5"/V`IJ``kg=e#6bEjl3n`!!dCJ(b4Y*u8i>ISM4]sedXz!!!#3KOSG$a,V1@H"X)Fq<+AS]!)#P3,h-h:IFa#h7IkI3aN:S3Y1&TD4?Q]Z65u:QPOYC?@,Z5C^E8nV62"[r:/i_.>(/?R`&1OX!B7KrPh<>INmd1M9CbWF`nt"e)@UUQ7T:WDmJ:"TSN&z!5-*&1,>F`H#hrbNO(cg\]3_1EISY@_:dZ2/h>63B:6Cpn:'1W`?)XCXt%6f!tE1]teolin1MG[;+7?]#$su*c9%7Y5+MlE<&^I:Rlb,"gkP>&XSK;_1q*GSN:nVj+%!s7oT7`S32)&CtZ*d6.,Cg,=bEYR%'Qq^)H":(Vc(R5("1]'QiN`Sa4n2GO*gSo6b]Kgc6r4dXT;j=@Ic.W:/4QeY-'cF3MrnQ_WRVE3/h3nq5)YbhP<`,ldrHg=Y$d));llB4i#;9Cm"l,s2^'=_Gd8*H_c(HVp\9*SI@(^&>Nbl\o%F7ipBrGAj7O.t*))Kup`[+V,:h!s;c7BVEtr='pB@R[RtfSR0!Uam"0GlnQ2YW2QXE,N8>?Nz!!!#go$I?J>bPo_WWs%UZuhekcC[>)ZtF/i.pKEi[T7ho3co%QDJm0%h;-oKplbQfglRU/.k<,]ks@2-Pa%DPj2T42++3QD<`YLuMnW/9W1[%f"qMcVeOdrM/Id"AlUN%F,j-41G0DLsM1[Hsg=Y%_]Qc1"(d7K;rr)`;@GcS7]nqaAm+J_l;^m0le>cNL8WtKdW%\8B1a0B-pcC[?$pYUJX\om?,h7Gs=6/ge]ilK0Y`5K^:5CNAb2)R6S4ZtSW1HRZ[2`GsAaH=WV2/:VP)fp%?ZEgdS%q849>+/'[8kDSdZ]^K7&eYi:io4EWA%-=0`4]6<2P$*jBeLOsh)+aL#"^@m&5o4u]]2hF"Z10(fhZJ)TqMa>fRFQakA6C_M+Fk*[&5?YF4h7AH"M-:#Ra[7FMRO#qdo?KE8)&XcE[_G.Ubr,rLK]P@sf%/F3=&qV:q#CBpz!!#iWKS0J0=4`luCMLjh2E!I+cCD.]C]D0-i*arnkc.muEk?PaQ;%Pd"AG:C:&aU?))Lj/F`VVf"8$lMW>o_f*ia?->KO-tq/V+2`/J/8@l;`Q;U=3\\TR5hnF1Bi[A5d)lBJ'=UZc@\il-YteU/:;O,o@4>)J,lO>$PH56(P%XT=.c3GG=+Lc1B\5@&0b*=L=VtrL\=:QYg2:;C"pKr:72;(Hq8sN#uF-pn'^--Dk4Z$uZJEkfhFmpp$Bjr86O@;TjEIf+GU8u;3[me]Ab]Y$:Lm]:fI@)2n#Fp.jGz!!)M?)),HKN*XSk/!lKbAD)Fmc(Rk#1s+"ec'sIq*ZcACA*(ju!s8YeFNo#gSi_/!d,j=r6hA[(;lBWkl`Z3_0E1!m5MY)Np[$RSm+=$g:X?(CYMQp;;m[GU'(Y86,N\ltaiVY=Bk\G&)4GP^K*DcAO7oDCQ`=,jY'a3_I/0$X=/sg9eC7GP7T9qA6o@j5mbPLaDVamWp:beAU,Y,f%NX96F6BDpRp93'k0K\"o?TYeZe+=cG$jj;[&mQAf"0D:KN"jLldr=Ye##j=r#Ve@UIG^'CM(=qnabebi]QB#;5)=Z(#P$+A&e0.gXj(i!<<*"z!5)]K@q3]H.3k#m2`EZ'2WO,hCMdpjFL#>mLAsA_o4-W><9W5S^YI\UEF\g?h^ML$aR.T^>q:"cU[q;LjlGJrT0?O5B5_^\pLTR"*^",`U4jTYiJ/M@r4=Lmc'hX)6]W9O;GpCDh3>YAgq!%4GMajQ(01;+gM^8**#osZVo?2^L$#*/H1p1OeC;uWCC't@z!!(q;eYc1bRCmq?eQ3OQjPu:cWG1@K^:6tf7-RYhERa`\q/Q13'?-@SBMH&'%9oFK[!<<*"z^rp-Md\S^^B\'8QV:sS:J%of0ac[sm`e*bX@FM)J@\\R._i>a!jMhcV7`b*qSieHD;)u.Bo$F2.Uu-XuX_c[rEhRO8arNZn=SFAO8!PT+Q;b`on`.ZFL5$I4LW2nV8EeR&PO-Z=b%feGH'W?J&8JV!c^m;uqtIS/\'H#5PqQKnd%EZP:S-(+P+A-q#F$Z9VU-Xgrql/@'.;(o2/E$Yjm1O%hnFO9JHH.q214rR73_[esgn<Z(6flIUjb$-IjIs,p\_hl5D/aHuk/K'gpd,j7AS%^a]o',*g%3RHLkoDeq*jmXXJMN%1\BhSS,,g>M2<*4Gd-=8CMW6B]m=PQ^>7e08.>k3C#$5'CohaCdbD3IZYW8qA7T3j4EthlTKs;CV@jcIE=L`FW39>41hH7c]*=9Ji`pED&qt/*=ir(FfCbz!!"Dk>ISL8Ob>ol:JmK=EMDf.d@s'M]8f!1?QX^gOYXFmp$2CT.uTlI%oo[\*Zc@cHM"GHZ-eGUL(>@YhfGfqZY.UurV"uLFiot"p\F!EDr/,e/1f!r4WE[A++B`l@9lo&Rn+3PK\(g4_0U,3>MMI$norQ7_d"@ON$/(YP0e+4^l$z!!!!kTQ]_VaXCTfil+C=&T_NS"q;KjE9l)WoiYH62_bh;8kRgOIJ]@4S=CQdMs#6^r:rX2#&1f/Zlh7b2K-7uL@.,F9qdu1?Fb*QLfVo16q"u5N>i*2(f7VTeUigRqOK]l*^"[DoDPAW?qeRTci=aN2GO7X9ojf)%hrRmRon=]o3]H@!/i.k6?9EH,u\Oc^.q49u?(]Q<7r=RO%[$Y!htJ7q:i*u>`[q=Ed-lWhd1LC3.dQe-`ENMDnsNZL?pLfONVz!!!#FWT2$[CF25oIXXa#8PDgBGC^(LVG/jnT/u&qk4\2s=0CDmH#p+Od%EKX1,;`;Sht/E4q5U'HKLnsSig/hHM,@A,N!n?c+Hije^Ua-]A:)CRjABk'H\F3DV_mq4aZH"7]iep04);YGOCV?94lD8Z!t\0c'pX64F$AN\T?B*?1[gb%g`Q!LkpkINfK$U91hfK:/4ih<,/g%1G_tLF..7BbsRc':Z!fLFJ?(>*uZ&Dp[6iV2f=H.:7O<&iSh%jrHcl>o]aiDIgnFEU+pS)n!,D)%NII46%]A&c9d3l'o!2=.[JQHA[6U;]QmGAHM?6>NMp5AXZWsMQ^5][!<<*"zJ7YRTVcTp"9r84!#7`SbaH&RbW0n`5^3nW#IHiM%eh#(r:S0hQ28GkIoYcS"Ej2%&Rm%;&nTs>k\[f9"VbbnV^f@IF_SbhKuHQRq-AQD7b#\^2;U_PtGW+M3,[-6.RUL>GoS1!<<*"z!/-tnqFNIIb*sdDG5hDb4$,MarJ`bm.&&os'bCqLH#)\H?[\2`N'VaQ]Qs,0i(KChl-k8)Dp\)ra,_=GH.]7#XE;L(q'oac][ko67ueQDU5gpPR['mEWFmE)BD*QWtBLG6V`JPE'.CEX(MO9bJrQh>NB?m$0Q$`2hAX8d2+qFhWz!!!!1JqJ\5hcsWYk09B\.p(hlPl_]0X9b*4@(ZY.UGO:]nW;4Mzz!/8uUU9D<-lEtEZ$D"S=djBEgHd.EIr9$:eN6fSdB\B\fk4mZ\iM;r0a;Is`K!)jH*bRd["V]m@)fF5at>h%L_dDQJfpo[?UD5.Yn&QE9-+ihF'1TgOUri8)"hldPHg,ti^cp"/TFNg4U3`4)sK2TgcY1qWFQiL(0=kc_!G*B77,ITpmrW1*R5L0k,ge7mTF,`oWncSt8D1DZgI1U#O9K>e!USG&KifDJjJjoafa#Jij_Iz!!!!aPGb=VHs3U;S=Q3hgpg3pI90M%]Q5GrSm9eBFn4Tb\X\[BoZ<:EA]g67L=N;(9ClT#]#irWo2'pdIm)\OlL+'mlfasrNZ0oPl_C\g0NlGh4LEI(c-(]aBJE`"Cmj)-hgYI)30ts&"TSN&z!72>q(tbig.m7B=7JH6+US=LT.@uookj7Z;3O`hXZM3eC/*`ZdHM".@nb2A)"V$qZD42G&A&\rUlcWFVo?]`%r3L"[R\G@"M\qe9k'd4YH"]boXpV_;^]4:[E@ss,$31&+z!0C8O7`O`DWuEm/:hUKqY$JXA#7_SMr:]O4c'gLgVE6k$(XG/n%j!h]Hd;AFW'Y02B\B\&Pqf+.Q[\SjOoG$UXK7YC'.-E"qIo0DWQI_j)`RK]o$UBg4S2(mTgK(`c\Qim-76m3hg4Uji`oY2%g;q5z!!"*?jd1uJ4#Ud!^qmk'`l=lBKaNeX2]uE?d7qe%@g[AB0]N\t_43;YTV8jd<\(UMfWO];%iTdeZM@CiF?tN[!PX0;QL@&'MIffY2c\ENU?'*A*Uqg9bR6/hN3@!WW3#z!#2gM)`GdIjRh]cGmDQ]1IhqZ\$su\n\7u`b*A7&h7@aXgn'q%.Gr2"W)4eq7:*Dbo_\*lJ$/B>PtE?_hW;qI!s/PB"d>+4P+.rAI$Bn]'c@m7lI;eq,=e%P?+Q8TX&lJ?B9V<5iH"0a?[]=AQ^2/'>!0kn!<<*"z^e8@[MA7m!ftW$Oeu/E=mBa70Q33F(=^l(CVG3O0F":=pS<8pW[r:*6^pXN>PaebWM4B.\0GHOs`BD5(c;-h_P,io8tWj5Z1A4^+sk2.`PJPuXN=(Z)fMZRfQX*Z>Y(,3p)1LRpYU[a7/pQh9qB3d'`/V4Z4!<9W&DX8YuPMA7Y!\\6b,Dp-\3/,N7\UDu+;5PlV'brTDgpk@`)j`3bhV-\p9URY2:/5Z[[$a%%EdW8I4r#mrlDqZ@4aLel3IUb2&TraqM\__$"S.hKSc-\]YNT;:aH.QW?ai!pY$AM\mFn[G[HcV^qhPh/B$?XI@D`:F:X:CaSliS3s/]SB?Lptu"pPia"6+YN="g.-FSP@a7C3C%z!!!!aM:J=h$Q5:Yr:.gJH[:"Lo'4Qqhg[jH1Xgpr$6r'$PYLHCrm8.2H;!S!X]r9W3X38^o_\*l2e`L(+NbIaK\G/6NZC44;YNr#$l1I#W-Q03?bTdh%J]ht(NUWYB[ECr=p4m+z!!(r&UfOPnp?`e8(MDu%rmS,^7jITO8sLl?IIuj/^ZqGH?FtB_hg[4a]\'##.);uk]52;"b*OdMjQ+gp@Dd^zzSpLJ=!WDlfMi3KLZ-JIV7m?b0PER@iAnPbGV6QB3k09Br=0GrqR0MS&j,9nFk@\MJ]B8asKcH]142qP-6j6,T,'WW'#4?U8b_hR/d5&AlU+[^tm*BJ<.eu_EkaiqsC'AKm.,CX?o]h&2(z!!!!NIJWRb#0>?YjJbqQnL3/+m8X[^MMT?*\QNaG9PfaO=+^63SGQ+1!V_Q'G@Q?G08:.krd+ljF[\-RZs[c;*s\h7%V,XBrZXuNj6;b)szzTX]=@W`JIaVbWf=qsR!R\9-t5R5/>aO`BF$RCu/lzzWDf]i175"aFi)&6mHs;+3q_gjO,/TGDkAZt[9EP&gM\SIZZPH[+X&"pm\hDBFQq6Kn`,rh?bUUEc?&0oq>'hLI/#B=+X&Eh/L)Jb4$-ZWa#PLp-S$]?Cf.02Z*CRn$GV&gqXNUd2f78*B?m"R'.+R$FSke!Q*Xt1@q4r_qEN,l6P[k82c!":.>h,ap;$tU.(qW#31*V,b:gVp]@jlEGB:1d_[etr.Zq[2BR@0A,QCOHrVb^;BQ!1<8aN2HFb0iDPp[@"+%j1fAb:dEmRI5plR?E_rR$aflc_-r(gUD,$rV,2^c^m:=i./GO]8MT*4:s6BA&jUt*`4e5hV51fD@n0*"TSN&z!/bXJ[[H])q_A\AN/XiA[Ak[Pa?tm,Mk,W0^3nW+6e&MZ=!O%!eZ5#lh<]EcN#IVkHgeY7St9hGP@MXn<=7m56R*d!VG3PgHM-Qo4*R8WFiqbFkO.0<%j!ihMMd:PO&&MG-SmPWX]EW7TYn[b!s/Nl5uDgGNZJ0!pV1@bR#u<6Vb`pk\T6ed%3*6i6\c/B4*T!)gY:WC5<(XtiPUGudF"\]CdY`^Hd/!:Z3RY>TH3LW]=0Obr/gf7Ekf%BWhNLuGOg3"Z.Azzd*omf%kCY[A4j;)jIo^Z=n6-U7Op;+c-FTMh6q(KWb9YL,=dca11eVs^]2#kmFiRBFrWYkeB?%YgY:K/cS$t+nBn"$Z*CQ0T0>t@8^U.:AAY'=WFU#mN^HW>OI1Cfl;dYUfi>(Rc(7(F_Lr3t#7_Gpfju@io>_r&<,1R?6T%Y3;)A1=<69qYe6GWKz!!!"LU7bD`>.&)ks8@H1cCN,Od*U-@??ntO%:3@InnjZ_V1`8c@CL.13e%!OG^-`c14K.G=_HNrl&u*$0<-e#qe#-"%io2.,,D1T"/ml>?p?Yr<%>u9b4C$:ugMahamSKN:Fir7bFo1n"LCYIjJ,[*AO3a@YG6.jK`R0U$ML+jS8O>a1EcQ28C8tI>cHOKHHRb&=EmL2eJPNq6HUTeh7oU-ZQ2Ark4Zs;s4LfP"eee>aT`G/pncTi$LCP4ZaG?\-r:3Kl\f(*9bt(TWAKF$_BM(.%c"PsK>-hhci8A!a[5r0Y1o2aK-ia5Iz!%Dqqj"[VT+.e&I@da2Q"8h=L6-LZV5LW.>$U/mPp5`&]JS[WHP1EclMaO,l4mA'^JH%j&e*A98kR@`/NsQ56AoR;T/iFS4qL<`W6nbq`kQ>e+mo`.FG-W$&h%GOF6@9:q)EZXtYOa[6(/z!!#8UPFJ%'I/%[V0E:_1eOrM,dMh0-j^i(;V[OtTY2$R/kOL4dmd;\@*%*,3a,_>**M]#XFR7X71GdLi[U5gm<:^e4))B.o@rgh^-.uVhd\Zj8mr,?=T,5o&dIIQVje2te$)^OhHMHu<:/4QuF(HCRG3i>WCH0Fh\bN4b?n'opj>F"SiBk\A:?8T$XfOal-:Vk`;qUIU@l:S-q4ij*Xgc80+YG^FcB"9aC3KnY;;p[6jag9bSb6.Y&""V#U5MO.s^Z-Vq[aQ]R;j4*U*t\T6fMM%ek[/R>r0lI;fqg*?/bzz?48hS3MT**edTt*rql/38%Q4?aC,Pg%_fZk=p*?Y?#+:o/L-rfVbRu6W-m'gnA>c$QudbK:\X>8Y>V3S4=34;oLMVJ1SRX2/mU:I>N=Rmq-8i=O"Vml9i"P$QabU"Y#98HX&lL=ET9O5!AY2arql/D=B[nGf#0[MHmRmd3#,)P/5\SDhl2>>)d6BIrV"ua8n+_0PtKT9DdQYL;56TH5s_AiQnQit6$[.X`0oo?WKT)Kg9bR?XqDQgBPVC!B4j/3_?AubgdW^;qc37aqWk>ECE!6Rz!!!iZ1Ga*fJ,u,=P5CNB-ftMe*C?<`&`TY^E$XJ2:\ojj@h5N>A_??,rAVU//rl)pu[r:/1*l_O"H>1'@GSBe=M"*#ECf2hiX433<%AL8[r7lUZYS0qP:'.4^3nV[cS$Oh7!o0tio7nA0.tt;N/Xj>/G\qo@DdgKe&Ad`CeRW#:J"+ik;5:`gt10Pm+J`"[r9lH?LH^chkEOIc*-2q0k7T1*'SaP`e\d'f"H%]JrYH[p[>:j\[(?6>kG,D@FRS,(>'btmd>?nH$am"3B>29oB+a5gVi41g=_-Q72eW&P&Pm"2dlS2o&SScJfkz!.YXs/Qu[p@jD#=rr)TKf-`(O^3k4\[V`3T^TOt-.Oo2OL_6B,LECuDj'@"0:/9*-6%c=F\RK+D0;sPWKI0E^aHN@uNJb&TcW6oBWDY#f,c!u#e44=kXB#a/4:ap4SVN4F3Dt[r1#:fW_&)7XTn;:7R]AS?+S;I$_fq=j"n0b.(Y)o.jes.bqad>;Hmt]68$Wl_^MTah;k>FS,.p11`,]PUWAlddb?sApf)A:f*6)[;b(k;`Y-`z!!!!'\T-Y!K*DcWPq(=sH1Q]B"F[.XB4oC,ipus3YJ9_2o28`%Eok(9rU2uNr6rR$j64mckK]XqqsV;ur;6Tu"2i$oUSFRt',-Z.%E5R]%1TF:UP:`WN>jgjGOM+eoe0U^Uc_,sb0'"jOX%EI\`,H&C8,<<;Gpb)>Z=[e=NKCWhqQmiXFBB[+a8-Sd?`tqI/f6elXmFnte=&4RKid7eQT;hVXo]aiE+4L7$hE4cIIf6jjj&K@("[,"qe>Q6eQjOQXjNXt>-)9Y_cU6gK?i^6-z!'p(1Lkp@nal@aGOJjOBW.:2)]L:L)4I+e/VBF\S/h(6=]nmqR@3=(l"OjG.4H^&M2>\h<)hAbLC]#iKDkcIY@#%niPL9^-Veo2G\l$:@Hl4:bEjlkk[>lCo"MPq7Pn.6]3I,_:iU>&+5,)gU:sfn)8-:ZK;)aqe+0BAS5X'2tlRhcbpWSC(]?+n]Tnf!It(@QSP4Ul-cJ)SMGUHjDc^L4B2'ePlUjbz!'lZeFEB?d!2QNY/R)D)mu%a&BW7/WLPd\+8!PQ(au`ZT%lI>drr&,H2E!J5[/OD:4UF"n->)>[Ok/+7Gu&=3$5GI8fO.eMuN_TijctJa/dbUjQ'kAhn6:IJqC"&X/8jf4aV?uHMZ*g:LdjC_SX0-hnJL>jlPI[Z$cBq]mF0r@?2HmMN3^WMi15!89k"'BhCui>$>*UH?r%M7TNQUo!VRfmP@I$j_+COjthnFC3=9+C3"?8@Uc&[.uK62`'X4ehtQg:]mBA:R58LLmbPKpj$qFZBWR#5\RairM\e$I5,qV`q>99eBWO?^#g8S!u*T*spp$5DB1s+M,];V2J1_5S)N&:JLKaphG1ss'BjV>J*a?ot.z!!%Q+7ZSTBs1r(B=cF@ZajNupTHO,neeoP%K4RW>1%Edt%M>icaKm-JQM[SW5]--"!E`C30_":#2/qYFO.E8g+aV*\[oA1SC]mFtJ@'1pK:iSW<3,mfr++J+_\oll=KiY6TD8qMP@Z29K'c",id@t6tRcPJ/g=b/eD;07/nDWAW*'JU)1c/0:?m^&qchg)KOjPQ01esZ,IIuu/52<[Co?`aQ=6eZjzz-ojuF6O+&=<-5g==IOe6Oo"n:T.Ra[`C/&8jhC<..s^:rQ\Y"c]j'f9RjASnr:og(P:)\J=YaC#!$1O#D;W)+g9k^=h!]OK`f2EGVA/k2gTkD62K.Hb:S0h7-;>*V:S0fk)B,V#"O'N24LAS:MTQcU,'6n%e#&*[Eo4TZ\jpr-cp8Nu%[]bk!<<*"z5`&rZ*]e8u^nU.s`7hM.MschP>\;3I@Hi1l-G&fq\T?p`+4[Dn0CN-jo$F2.Uma/V.^NH,jV?k^4nI%Ugg&6DE,`%j\+d.;a4@D!4*Bi<6%]BTpYL7^s$-5F4$8D#IJc;9JImnSGj%jQ+@m)16r60o7)4Bg"i5eH1_gQ5`.A'=Pq&H"oH#.I,1:fmTpH<_+I.VAh@%*iFZuDS4I]k;4$,MCiqrD((XAUmT@oXc\`V0t;nB@/0=5'!HD%Q((Da)*0Cd!fs@Tr:rTo@E=Y%GfWepD`X)VFz!!)R)47f.a^%I]O@`u6n]tMZ^_+^4M_:`@TiR+sNaYUINtP`6tJTGO3t%euW$+Y$JAIC=T=aldi2MGk%O'-m0YJqRk,+f[rof2@UQ]W,CG&EggO!B$['NEBi7),p0^3d@q7"8r13Gs".SMK][7'$.bM(6DH'S7[r1#d/KHlo:s+SPPqA$;LK[jVeq1*/YGS@`@qa3C!WW3#z!(U.tArT`0"H=A(,io:Z6j%*5cMf\"gp2/4Q$qtBD-[ckef$Bli5aD_M&@nSN<%+S?/t-;+6L+cW"ClioB)!r:A7>A&l#rhnDdP11,G!Kh^+Jq9X!5[`N*6$`W"6C69%_Z=V5%Pq2Uthgb=aeU.&Y,pak6Vl+0=A_gGL6[a?0;H$L_Cj5@)%1WmAp\-n"porEGl`\&-"pWr9Pn1:Qn`.[/\'qE]ZX(1d.H(:-z!!%NSf:RQlWB[@rLXN"l4+$0dY]oPB\Ha+C&,l=eT8d\Mhn!mlNZ<38I-@&<^8ZM0X]r:$F_*bDGOOC6G1<9W&#HM.Vl/bN^>=6NI!kjlL$6cH3Qp=X(iV_r5=3-=AG,<>l+z!!!#]3-k(jI.G%%s*j>MotX>:HjVkLp/:DOUka%@);X.itj=Q\7V3Sq!&=W!WW3#z!16HnK'SC82mcX3+0'rS+6q5GEbE^iD/A8.f"#kbEm'6X`Por[]Y2"bf9Q0YQX>2%\+\kBj.C_i8YoOO,"6m-IH+2B))]L:7#6b9:\T6f]WDgEPm96r7g#U8=`C:kf-7:/o=Kp`R`uhc]^)&;#m.08]3EEE+LK^CsLKZ@q\9qt9H@"&;9pN`;Yp$gbA(q4gz!!!!oZ"(faRFermn"061j?n&LEo`$:q,$[\%6BDnQWiH;eT7A]r;@;ZjHWV:,Yhd#64`(z!;9O+FK'XUT9580]d!8K*VSsZ06`jPo:aX19f'6JHu%ojST<3qq9V-Cjs]!?h;-Q.d^%JiM9),CCZa:EUe-b\j,G!::/=YeJ,4]X6`m.;F7e^pT4W#;>.&,4g9o,161U_[+Wh$kz!!%O`Ie_k,jn\gA%m=H%`>nKCb&X';l02nrBdkJ[M2@(/EH0CRd?0QRTqS02JUpn+?9Nf;r*OsPFm.2G?+Y9^?b_';U.*P/:Y3(+k6#Aop?cmu3A_g=ET0Ar)pbuoY?ieND35@re>\Y;rOM*_bH\3D7$]9#-Ms^thVKk;/kQ.gGPCI)V`pdLcisptfG*38ldt5K2202qXecNB&N]GMi2ZMShS(9[;4lc*L[KZ3HCq#NTXO;k09*b)-HhR72qHgm`3A<-@/1g/E]mJbO85;oT9hcA]M%O<1AOT'XMXH^Xa,V1@Z&9>I#((f@Pcq=<"39b[%F)g1=2a,_<\lh)DL-qIB_`;;oe!=C,FPdk\kJk^C+H0eET2Z,^1,'=*:'UPB&:+A95_Ldl&tn+H3&k*p:RNJ.`V%M')rZ*'.Kc`2KM]6@'(kjRtIWDY%qAt:u*ioB'?XR;=#B`%MjPtii1XI*L`2FjN3NKPNT11c=dOm()Gb'+VZ:T_!RlI77#F%T&^ghpplo^qCsnesK0kYPKaJ,fKA1.ZC5g)gh*z!!!!Q<_,bPfe+n@eud$7aQVjOq"XXFjQ'IMB">I_.8TrdPUWB!=K8S!il-g+eN7s@B^E8"XeSCIcC[=NqtBD):S,4@ku(ns?ta4e<)ch5Ci!!I;G'Q=Z7N#]19)HQDSkMYQ^-1/An5GJVP]5h,U"L\&;`ZY#3PD[R@6<&S?#B&:(>a%@qgLT=IX.P$D:F47!\u)8thrPp&kHtz!!!"h-mU(6A]pApR8UG-eLO_(M!]BJ6XsS7AG,E+s5)\,$]50;*uZ"7=m1>E*^&(X_6dn'6A`P7h-D"7b/V/Dqj&mBrntVF3EA.hr4#F=Bfmq@cA)T,";E@e9^2*GpYWHZmRo4H,f^W8(1p*"](;V"[r/T&+)8'-%EXC&UnkA8h-061TgOUt[]"5,+sJ5reZ1'YZ(jgMlAbuIz!!!!Yf@I'.eOcJ>%3!;jBm/W+042FEX3[.f_pG?Qn&gnG_hJU>1M4l'l-gG$>e"\-]'\7]n(Y>?`/,.?c^qgror>;qmbPL!@q&o3jbQi6;q'1C1,:VLQ#`.5Em0:gX6-:WVor(]@q0#DU8#NA_J\2@'bCpqrquSU-Vs0f^L)(4\mDaWOk@Q]a,UlX.Cj7ba?TLIc'pZ8(d@f[,A#ns+[_JG7>hpe]Qg\MQ.;p:H['e6K7Eq"p[`boVoeb]2Jq.rh%_SLr8u7n2V!6BZ,`*?@[Pm,3bk5RI&K"USXU-a8P*XN[]RO-lJggOUe-ctUIU5kXm_uGGOEt_>?@fck2s*\_ZkNtzz!9]6"NrJh6O4F&X2Jq0d`l?.&G320DX]m0R03PU!\A7]i5QCYf:qe1VF3p$?8Nnsk3Vh&m+&r@j;P],32nX;!;Fi>3ZCG)6,nk#TC12VK=Mi3L>]D_QP$PtE((bhV+mFo+A-C$&\lJ9)HVG3PCP*.B]?G1YbXB8>j+Sbm+cRgn?G32/=o]RI!n(Y=tR(2_sntCc-PRm`\]C081lM&^2#7!2&e4:V:B:jUamID;pKV0:U6`MebD36)\'EOS"X&V6)m$JbuQS)R&MTW=#LDKaD.u[?o%i%Du6W^?kdAp?PC=T?GGeSEIG]`/riV25Z=5H'OET9Ma:J^)I,"7A?>IMc$zz!.am**'#4l%>kcE8uu@43dXGFnt@!\CiFB6Ok$SHcnHUdiQ!$iS3(r_OsNcPX]r8UkKa&'pE)VKgs==8_M&B?_R%(p_0>>&M2I0get,T.8kMZH;:_>`bfn:Jkt>U<=]%YQ<%g?Q*??.<)&X>2HMdF')`MY>\T6fe\T>L!^.45*h7%=[NZC44Y@#%\fs4t6q*bE5WoVelq9VIRaG93;[EHh>:$K>nZ!q`jB169=iYugKToQ?][r13[(E\M&]kc6&@S<7QFi8j,Yrd$tU"d%pQ`giM;l7e3ldoujiS/:cPs^iNA*p0U+6r7\X_cLY%i)"BghpL`<)&nI@RRE6qJ,Q[`Nu0rY-+o:)`Ep^/MAc\]mKJlfK0'5z!!"^hZ"(g8FQd+p"_c>[8T&I:bVL=Z(`9c2qt(T6>5;c?WDe'g,QVS#@Iir,Rn7[_72%i'H!<2id$pK=h7AM59On%8&&Wt&#Io4#2ds#WG/AB9ke[r6'Nd=co2S2kY$L0+:_c^m;.[NN:#0/"t=?3@NY](;UgQ7T<66kdVOXR;a/W$G-=?+Y9:UK9(\SDBZQ^A6AfIlX6Izz@(=G)bUm&-]_'WF((^?!gt]X@mQ2pLF/n+MRc>C3jQ,BJp$1Y,kubE4SX&[cd!VcheG7HaQS(;*Y6S6UGdoe]e[B=!/+\?Wq;`4^Qh]jHYGS+kkigNiq9Z(=W,CG&aWOko>^l_OG?Z#CLko`lU4mEZABC!,o%+FVntGW^Xm1;t0>IEol\QAt*A+?G"[jN3T-H/t+SchUePBQV7PX]d$6+_WaF[7g:-XQ8fo.IpYL78q!d6,rqPN*"UeA7?G1IFdco5YpZU!l^?e`P@))aEK@H%pPr!U6q9\Zla4kp7M6C#^2^'8hj2R'#Ie]UOeZ.mOlIDreX]m`pG-P6"VG1^KS/E@hm\"e)z!!!"L:#b0l4hKe9)5?rc^DLoVc#Z<@D%XW0Tk`Za-l#r:!)H1&:\3Y:K&SeZMK--;%Q&2`JG/><7#ui!V3NTFOYSB`7f#/uo<1LgY#nrPhXlMk2@__2UW1BN.p0"4dA+QDRO>q[boV>'BRPekmZ0VD\TE!-,4Zal56PPH8M4$SXIe2^HZgV=B7;^YZh5XJUe>rHJzz1IX]"FQh)fh;(67F@jlS77W:R&K`*uZ*fT443G/"eLW;bo[6BDb*8l*X&dE0/UR3X3H=&s5QCX;\,7[+o]X[imUY0UR,-(Qs/\DU?!UaL]tH;Sc,duid\Vlu'G/<_p9+Alr8_3!=@id5Pa.NAA]pB?X]ektQ&e&uaN9Vno;oZRq=:&>T`6EG](Egk#OMrJ_Q0lSW\c>'n/MhS`5K^sN66o&,UCGkVk8A-M*4REAnD5O#4C-Kj+e_*&/RgH['*ZPMA<$_R?HT1dGNi2aH.QSa(DO:jlP$r?b^*kNnG'ezzctECXrE`f:(/OC)>[4j^l/M1#Dc9Rf^\kBR+ZMI65lq#/Fm[m_mc5T_N]9+jHmBs_jRq,3[lBQ6cCJ`L,:P&jlH+QngU>?];r=KKT,'"^o^1CWd\KILrV#"Dq==h%*aH!]8QkT*-_JmOOO2A$M%_7#p=Nm.dqYF8GII(/#&9!OM)ha!WataV%NTd<1IL%NdkcbNPE;3e.-V/%^5SRPhWUN/ipIlD^\_eBL_J`f8#u)e\IYLYVoVh<)3'H7R$)a?;XJXJB_7z!!!"L,CK7AGA_;9n%S\%4g1Y\0/'kOf.I0CK@IJTCUoY\X]suTE:T.`o^k_=-7Q-r'`VIMFK+]*p@$m'A&\rCA\S*5bM4jd2/CbO$ObG2Des6+p'#Kmh;(S]*#TP/Ve[[jP`h3hiSfpZ*a#gb[1ZETKOl;A7VY%[4Pb"go/kuf!&RM\W[g]>3,$hnss'uG5^Sgs4P,7];%GKIf+Ha4Bf.-eOGN:A^>+i#mgq2lIAg:oCVYp3,mg#Rl?=bg0i0p2n.EA`JPD"0O[:cjekkEC1fa&rr4SgXXIMgGlRdAUS=LRXP9^QV]6ACAbX,T+t&j7M]kZW*o%O$X&lL^J,e@$CIna?)J"=]FMrtI8P,=-CKBK8NUPZ5j6TnIJ,T6:/+a?22n+Ic@)!@/e4J3\4C;TMD%=?+P+q4F$AbiPWXfHL'-6B*STBj3ZPPK%'r(z!8pZk)&^3fp06(I<=;r0Z=M'SUIOLn-RL2gs8MoaD;2KN?G*d:bLNUmldMcX_1N!as!V]XUt#mqLQ3E=>!33/(RP*tpY4T,Et'!B6p7KP^A?"*&cJ=>1M4_,I!g=K=7l(S;JNo9at&J[calK!%_90^(+i_>h;-o3bt\+_eZ)X&Mm[?PY&)dsO$32=SN:oYeud]@IJ\\N"Hu3dET;fM!"^NTogEGj:7^HKgoOX7EPQ*sAssJenqjJQ\#Kt._M&AUA)>m)_9'XoKCtl9gjJ_<2i`g=dC27BV@*A(z^]aZ9rcRPXec,'BI/3=<%NM^\QR,:jLl-I9rk]$rS3;3Whi>Q#a,V/j>e"_r,P%N_0ekH2-8]Gb,WId9OBXlNAo_8ZhtJ44J@f2jd0=dU?KA=R58L*LV\KA".UADS8Zu[=k[coe/XecFnBNHJa!49z!&26L*BQlY.])C'Th:Fk7=P4.=,gK2-RX-,hVG'KkK]WfhaV%Tq"XVS++7,QaSpSNW)9=#fO`6l%1Nb(,fkAm^%^BIUMJMd@=FU6[q\*Y3?[Xd`/^9eFOfsFlKrL.&KaS]ce*jediu0jogp:Y>++Eund@s(!2fCm%kg5_RBDh`,Dr&!IkK]X^k\+tt(I*3)aNV`H&=9[BoCZS)pf*Ii-0+"E`!IA&*#oM$i909Ii4smQ)`Gp45@='Ul)1.skg6#0]mA/*:H)p:"qm[mHhOPn97mEXHL\rjCY#STSt>As*^BMb,?sU;'TU7iRW."[0Y.5az!6h]\cQ5#(2tc44OsNcpl-m\na61mI96]j]]m]eOWDf^,ba?eX<@`t4?S3r`hVR+7G*/5^g9tkQm*EpKPUQ(odndGhfi%`,q[./Vkg?0scRq4Q^F/-S=D,?"sluOOWtDZ4o=TPEe*cDbu;&`rCoj'Lq9<_6:+"49MADb<-WYtpfak,]6=2Oq3*1%mb>3he##it(GD@:Bp+a'l@K0I(+i^sFmIT\#7cPnU@-R4=-ZTNS+6%=U),,gc'pZ8G\kNXas?bODn`1RT:VW,RMC07m#!lKmK<[s?,(hoFFF)^n_Lg$Y@#%N7($ja14=L57q-\ai'fc='cT5XX=X(uB:g%YJ9GE%a;DYkrd3sb2f@D!$]Bp484\Oc1&aD<=0I)C`>?RR)7+bgp)>r.LdP?p,edj['oVN^>\_2Iij`1(G4#(pj#_DKe>>qZdj"]k&Na6G);h`2M`La]SNAe-:R)6P/mW5;!-Jsq^Rq-jph^XVEOTiASpKZNGB\7h;/Fmh_4`S?C=Gf3mPR*KC;Og`_<=3InLL.(([31`Dt([SP#K5E&HA1#z!5NPTY?ied]!V==8Y81p+sJ4O.t@?`i%Lo&.?:?[_TIS!K_K<2l%?O6@S)at0@/*dc,adH.HLj2O!*Xa)C"[&DDnM\[mb.jMcD)1WABRE?B;b_N4U2Cjec;kj.RbEaa/n[5s?]/t=6gqQmP,":RA(0>X"3o./WPE*PrIQ%-rL4c;!VM9bWS3(q4hnFNqhVM2/:At+^cT?@=gn[N*$5G%h-Z8+E@Ddh[S'W`^1j'!\3]bt\*GOKrgR\JqKm)NEFX%t8z!0EJ2ouo5o]8GooB4Gh)<\biVl-HJad4Vc18iTr7uups%.&*,j@NQCh7nI>6Ou=ZY$ALU2/58LjHJSYZ=V4FmFnsprUnc(FmAVmgMciMdA(@#T"TLFrog,<`'<+.s8@0!ICFRtmTmGJmEhOoRl5,TJ,]8AT76Wn-_@8;XdWqGOFcK'-FRf)c^pE84T+]d%dHIj8)O"SQnE2A5#aK3T`>&m!!!#"=0GXh0H!*(]Z,inl03'=Zr,HJnaX`+A5Z<'p$1(=Yp)Vom,#E;ch7kh3)H\Y0j1Psj2P,c5;cj`[`Zb8qX8q6C[jMZGI$K$h7FCP;lo97Zi2KYQ/mPo*rVCZA?$U@,@U`e=8kN8jR^`A0rV#O,91C[Ykg1lGb^V%Afdj,nMn5X:q"XWo\2_l><)cgb6pt-Zf^7G&Dr/-Pp$,QI"!eB4j2[4=@IDp]F2N_A.p&nOmC1ukc^_uY7RXU>B?jbrI(B#T<*&?%6O3r'&7'sELIXg'`l,fO!%\bN!!!!]LpF=lC=]I8*u;8#g!\l.Nn3%"HWRmKD>X%oF"B4jk"PGXdMXiQBP_&S?rL17BTWru@B6#LqC2:d@XZ?F0q8^o3b30R*&cnG?[hf^=n2@]lT,5c%WO$O?G(O+Q7`".moQ)MMJ-qc^)[t)()7Q!(DiF.S=G_(OdVW:T#tKj@[/_1qW=8cMKY6)Xie!$HhZs-?[I+Y`/20SpMSWf6%lUcj[s#QqOdfc7g[(9q9XqR#kd0;io20UH&a0Y(G;eRZ(;IH2f>.%D>X%o`^XaF>ISLl:n@8gecN$[\T78f;D6tm:mWhBQJ\d3q9Y$90C!4:>i0X0rH%MU6P!2#?G0dbL>o6(em!(cmFujGaH>I0:L(`S.I$$Y-a%AgIYGaPnB@:V8P)Ksm$1hT(XjE_C6TsSd)+2>4U%\j7iO0lKFDAK^k'c(O6Qt5(=OIl3>(N_&MZ!pb%um\d*TSD^l'!^*]S,saH7_$6g`-qtt[V_p;S_ekrI5.%k^A;T]KF)_^bZVJsjWB!MiToe[ILF)4U6[<$IaG)p/%N:CX]stQ(ehI,.2Z?X5TJ!'N;ieQ4!b(2z!9=CBI.N>F;Y8I;:[)O91c/1&m+ApoY=4"jqt:b&YplFn"9\k;\[fiI4*U+7as_(hS=D-/2AUB[Rs]U2j>s#(M\`_brG`VK:g:Q_6+ntIoq`\[.=4"1@cmQ'IW+SfSgi)\a!.lI;ee$Q"9eiJ6PX(p@5W[efX*o+*F7h;,\ejmI!9Wg.;sOq5g0`&0jKX+qaBaIGJAaNfInSq>@D$.S\XT7?jN;do_,z5^qYQj^nIuqA(Yda@<%%SSI\obR+YTVG,Cbrgl9"A.,5+PtFhJ2h)OqWRGLsF3d#DnA>d[s0X9tHM$Du:JXc5*[dDK%imi]\Erb\n`*YBWY69(A)";#Ml^L8>);u4++!A13A$GKNQm6u`l;]=tYhMVk-%uC6)^DF_XD)`4$U"<;umrEqf:kdDN>?abT"S)`MZ!ql3f*B$Lb$K\N)Md=hlB/6F$)&GIR7#64`(!!!"Lr#dmUVG3PE@P08ccThI-YJ:(:-0?SHGXAB@B0K;n-9+)TO:RmDGHTA\I$LqGa>gc[IiJ(Wa[:gn26C6VU&!1$dA,g;En8DX9t9R>(gWLrh"f"klrdd2]YI\=#:Vh]]B\/qF#PB=[`JYPis5-B`)Y9ZW[V[O$]XY%C\o_Y7:F"-1LPg"?p6b#J>n7GVV53g4kkXi5Ac)2a6eADBoA+WJ9qOUTm$tJ!f8AB:@Qo,1W1T^>KaS^"?G1[Vk09QlT^_I?]6E_``l9>N,U=`bVkp5$A7T4_AnpQs'GKRsXn_\dHhZrbVJb;*/Qt>^mbEX4-[+t8]lE(%EL]^l2JqNrOePsL%>q=SeZ1'A_L_q!XHtk(+$+B!5kP`Wio2/*;4]L,p!co4H$f+U.4H_25;oa0$2Mq,hKVEPC[g8uat&"ugt^oKiZ-dX%Zum9(AgV?m-LB%OU:kNHDe"3j/dX,\1TeK0.S*"I-@&<^+&fA,@6)*KaG4O"euHHLtap-JG>Zm56(Z`z'GrPZ0eP(2no9l4!hS]!)P&s6f%nNq5Q<:hl.WPGh,.C^4pm9urUj676:&V*CHcjfU.&s;DR,/pp[6kLFi8@Y)>VW^ZY%<#GO=*!*ZdLhmbG3cfC%D&n+>knf<8Nt>N4]'e'ldPZEhW;.AN-WSdu8;$BjdphnD6",pb/r/i#1;3&p]]V+X=>*o4,5bCTm*1sSH+2f;kDK=Lj(ocNJ:8Y[1]C1uB/@c4Om[;+5i;cBe42DuX,Js7R>(+h#M=Y0XnOq1Qb?WpL;<_l`hp\3"XbS3Q?FEI/_CY-MPGiHXJ/Wo?G%W\!*p[dule>SN#mgU3o34*%@*o).AqW36#QS(.t?YAIfXhU+RTcT#;W-WT4nT,h^-RC'-6q$)rS)+]'h"DG@0$LSFnR-/'a_LgIb$>o:^V^Id2Grba>(Y>5Rob8P)KRW`2hZ/QJfMCi!pZSIQPp8;8$)+0RCuUT@S&6Kq[,I:)YRh-Rd@R2h&!%rORQr:oe;k)C<=Rb"Z'+)3.YIiDn4r1=K7^U`WX2/CdEO$EWRDV_lM8sE/\\@T8;.p&lrldk'QVe'>L4so(Y'T=Zg+b%gL!9Uq8)uos=!!!!&)Th1\9@>^Fc6AYEp4"o:a?o0:+h>h7>J9kN_7?EqJL`Dee1Ul5a**8sPX*Ph\kLQk(2pC6U:C`"Pp[T58(g5'5f&M6^o:C1uk=7un]`Gu%43NH#k-/tLh%?U+(qJ,]8Ao"X;0Qe/aqZC)chHt_EOI:^W7^+[o;q,#m_\_Ae;kCl0EXHZS3d%fbC'\g1Ed)_/HJc;VX4WT(RTd"-8S-)-,=bFf-Vk7j54k+A?BHt//R)8G;!.E9XF-s01\L29rFY>@p$.B,_7T0M4*9]5#nnZ0SiqGRZ=W$!XXkZEk005D=0C>kGr%!&9H;&,0eit@$0(0nbfj$n8MW%V;GpE28(#`3int+P%D?cA`hc=pr;?JQ*^.)Ymp=D7BQh[k3>3c8'L.D%qtBF0Z/bH%5@:HlXcSVUUV6m>lKag,St;PI^PCNp$+E&$UC2.A(J`TV.KoWCR5.5/W;ZYcccWdF:6=MVO.SLX:3f@?3$TUk,/hft38NTSitE(>PEV3L8LLZQH+p7?.k=8W&LGoSd_mT&Pa!H=b1P?KnLH%`9Q:j*\om>m[;-R3?5,>.id2C6\#WT6Si:SZ3;81:)'\o7D'o;`z4OENP]2u[lFnq]0=gM_nbBS>Zao_SArq:H3cGa&!ElFWIe?k1O\q:4u]"5Jq(7og6RC'?.g`j3V+)4))7F';&kJ8-b^9HXf57X:="^hkg@;F]'%D3QZ"=Tg'28lk9e!.#K]Y'DkPEh,u4*O^`%NIITjEU7fi9!DWmu&ah:\NHEp:NW^d%Nh4m[5kD*#)hAj?.!$d^%N54s,1AJW>!1gt]"/4c'Xqh"DG@0$Nk)(LJ$0]97OUG9,[p.IL`R=)?[%Z&U'X"QDIScOKsUzpm9(Eb*!-!(A`B3fOMs^=d7%Pb`qoAiQduUp@P:iOOg?:tdqNqLO$N&ga\e]kUEaW-mfl,tf6N:b3RAq9X!5[`M#0HrlZ*q,$tOp#N1LTfNs(s!<#i0Z6/)E)E!4fZbr2]EB^$+E&$UC5PLJ%6![g2!m+O+D[,z!5J^(qsV:$5?&LYCfpBdM2@)S1.b&/p@P;4`TQ[F]Bs<)dP;0qj?!\`^]!k1p+f,!6[.nL+ktE>/C+1fLT7[^CY,_s?J+N`8]MT.`#lEkQk`]X99@f?/r@1L6j[t[TE@rY^bEjl#CL)q1CXT#8qTNjP,(GmbPKdO82!^3bHSQfpY>ne8Z-_;GpD'0C!pumFnsj$t88?Q*Q*fhK^Jq!CQFOD;)?o5';!jeM3ge?TrSe\8gg4[V*pXYJ:'?rpS[TGHE\ZIf+Fn1,Li;epqnTI/1)G.uU5sQWebdQcp0\+'[p\,.m^ElcX3ljN*J+5>%.g@H[3Q>1f5RQ"Pbr7:d.N`l?0*SWXMc>.(B4FWEtW6S.(Ylg*kPB:C7'p(WH0-+\"ta#cOA4Dr#d\4Z3QfRiI.>/lAIC+C/ll#(1FaJmo&NBqc3'1>?,(j%otiI+WfR,Sd/O"@bLS68TrhP.:pao`m*e,ac\LAeEC3L8leK%WNZ`K*6PC+H]6E^M]QeF-bM-sMIK/arh(m8=HhLQUlE.PP;MnJW>ZjS4\paA4LJ#>@$BonPGsXhaM%V,!!]+K71c)@fkN:$YnmJD'^OCQX]Nim1nDM-CmbQ09BW"UrPe%ksG'$,s\OfLiQ!la#+8Y2rO4mdhToL*QUAdllJ)[mC[ljni$Zi6_:B0OQO6g[W4e^N%"&WF\X@u#.*squJ!!!#W32*%>l?E%1'.6P^;Ed*$=^B\*=&>mZlWI#;=D-qJEho:T-@G@&(KLk^Pn-$#lBH,JJ]NUagpkaX@Ai9UXcTTT)Oh7[`9["Yq;`4":SpgR@e$Grq+u'Ub>40=3MI`bhf6RA3!3?`e]!<8\>[3LNSAW4\jP#t^0'kL$1EX2SokL>+X/i:laX3KfAnK2iSWXMctqXs-G'gFoIHWi5a[\mMT@?-a3B?IAYXB8nDC[-%2X=r4D-hZA^/QoA)[pnDc!<<*"!!!u^0eoqYoB,=NL@*a)f,kONqcgCgQ'J1p$_G>cc$&5:kK]VK5K\$JjP8CU%onf$dX$1aj`^4?Qn^tJI-fK?I50L!f@O*,.P/k,.j^g9p0"4oM\[ngM65^h^4!WkMU_t*^juTQN@lh9a,_QAs06SD]S+KO8sc:XSII[uW4[=/9uMWj8;H0,ktik:F#h"DG@/kkd)`uiL-mCsdR\[a.`'e<>/ORR:sC=OdO[["TX,9I6mz@(=_9e@'5K(/fGOfk5AqrFA3b3]qZVT^EY[PET9W>\$e'naX&r@*^7NqY'*4Bd]gLHb@W6h\!Th3VJt.KKVj<2bnGQtW>WMA7Z&&GGSMDbbN\N-r=B+Kd_Fqjffm8sV$-Ck(T8B,nB)Z(:\eEFoq;>#_J=AcA#@aKWdA8eijWPe1MTUe,aH?L=$>Itd:$P2SGi=A'd*V:On;)l+d9:X6FDPc0I!g#8+0*WZQo6hJ&RKeJ-"Re1k!Rt[h!Ar248%pZ4?P`8@UeCgp>eT-/R'R2c_!F/GBa>S6^*^tA\r68Y[Q2mLf728IdbdcPO=fTU7TXdF660^KuKd:7XE]$Ug$n1IcgSB?hJ%`LtM33fCMJk_NJE-Qah;=4+MV2K16A\Et^^>r\;JZ&l.IB\9P_SZSkeGt25NjY@*n\?X8[)#6u.z!+W!0)\Zu9W"BXTU:kmAhS!LVZ"(i>%RWB.XD-.\[T9kY'T0-!Y]AjJ'f&b7SisIdn3H&%kKfbRHTZB3N8,Hp*Be>t]Zlp)+$P)Ir;#qCDr(m5&&3>W?@7-J;GpD-C2/'@H=gcd3jg.1SWT$X[YmqFPEY%dihE0A7'3,TTPN/^?+=k4jN3U4p[6kEC"(M,9C6*Id)%Tb4Cd`%/QmSXXDZRh=-m3kF-jK0Tjl?k.70:M=10Jm"7r5']C3J7'GDj7p'H6_-;9M2=h]9om[1BqLU!@Vet>;2/PC'+r-4oOlPh'E/R,ZjneI)KM4E)ncpJ=(BRNYHTf1$Uq9UL]HrBBuJHH/2fpW5V4U%Sg7lt\JJF'jCT0@G,G4auqfijFX4Ud0$2bf_t;*$14]!R`3j?iqJz%.qLT?`9U2U9[ANLu`r38t=m2q%V?+Y96N)oH=U$BkU[;4CTG"8G@-;9e7lp0(,HArXO&RfLSM?*e`a=bsqVUV.I1,/B)WV?Fa#qfS]lJ^]1cJ"6:/67'2nK0c36q`fWGOKj(H7H<@2JhTeAR,Zboc&e-Y-XK8W_ac\/R,[-Z&G6pLY=#Gk#J8sF9kZraD80fE!b3`"hriY!4NXDHLT%o#ScW)BILZ:2-nj%[.#\`H2^?b\dEi^EU"2p$A01bC:RI,di@$/%=L#EX+7e[3e;"LAX;,QTp>\\O3\90.Rp(WH<*)573?soXuXbj*cCbeYSg@n!.^ET+cg@`=3>EWD#Fkbk&%lA/c*o$',NjLMGu%NHn?X(UTU1`s;Pm91N;CB9W\O<>p9'N33>e<^[d0k,gkU2Ls=RRKCs0JIIgPUTX6,ds9T'rF]p-4?G/HWJgeQ'J1p&)`!@#ODj\:SFJUEXcljTC:XMX1bYq4(R1GtDoL;mC$NZou(.pXI]IqAV_XDHB:Y?Kfc"X"o`hL"]?L#(P>X=mMOT";O_rHasIOis(EbP@Xpg9n8dD?8=oA]nQ%MS9#clO+L]Pkd0Wq+u&Jp[6kl_o"k>YG\:29MCD9J]W;Gb(3V/Vn^D3U$\=0Io!2JCIQcC"2Kp6+()Z:>r(.TPs2%mU!=&O@0XHhZrnQZVcbLP:Fb0CS;q/U)-`W`(klg9kK^Eh.t*OUhTqzYg_1*>NI&XJubs]m<;i;Pd"MHNme!q>:&%Iq,ADpP4KYLNi1Aq$@@lnJIE"]m0(ACrE]&L?u/Fj?pn/6[^]:YqWJUT:^G7>]I_=,VTmLHO<4YNq;7g0?UHj]d:M347Bg,)cV9j*9#PTA$VG)[;&ht9Kj-jz^`E^j*)Iu98bsb;W2Um7$@i$IQVH#\%t'$<(G=cO`=\lLL\?,ZmbPKDJQ8aOD;MpNc^m;?NZI`_o+O2>+<]V)c'q!b6/ge]&J5UP;,K&&0l_2Q#mgo08P,n\WG-'\b/@;)/6O`Tp?Y/%%co]Q3OPPUSN;$3(8I(-lRlJSB\]4%Ie]TVPR'rmXZVHrW1Hh%N]aYfp=#QCQ+KIl^Z#6/f:*;GTue=gM`61pf_ff<1D+<3BKZfK"loL:CQtDV\LaW;#.q:Lch5IB-_i^8u"s$XTqk,TeMW^BnW.[&Hp-=Wr5=ACq&.+"GdB>??i`;PcuDc0c:\J/6Va[JWb9nDV:([7gEo=t*suD,8"3_El*LN9n#FP9u$kfrA%&fqp`L$u%LZp$L#FOX$tE-6EQpzTUW-gYG\:rqYA\:n`('m\U!f/ZHZHWGt!)!N/W]bN>fpMEa_Wl*&e5\[-'dcB9<]^TuW1CmEc^r_;bB:Ph`Z%AN=ci:Af2(h/g9k]D,U@',HgTOpd\TU[lBe5#+[ur)np(WH<*'l`SF61Q0L9rB>?)9i,+rJa9FuO95,p02[Y4Qe(QF;2=bHh*k=@:?IRmbPKjWKN[;.;'7(]"2e5[)kpKnYr%qfsl%^jQ'j(!rkJZRPZI(Y1B^Z)`r`>SjX%S-a1M5:m?qTk0KZ2)Y&Z%mEhA.T3'uYHMl9($El5X0/jKhnIl#4CpI>#qJh2fG;a`EmgR.lLfMqYY^2Ta))LPhh<90g]BP]6E^-r:%Tr/IrAQSND&Xep*#a-'VjrCY$.>kDjP5ru\cuVj9i8p5k'JCTkG6d#RNU4!/eGp?f.sbDmT)2E!HOcb_a6T`G/pl;`k&(GG3d2nRoGHa7)1W`9MC_MEUmgD%QYZ=Sq;c"\%4)-Q0Q%3@Xaj;;noF66.`p<:iIs/^*Nq=SIJ3$\='pAUYD\P3*gNq3(:n_YDRcq\IdMD8LtWgFm[m_)8^"Yd'qn]gStASPLoKSJ"F?LccDELejD5K1@uo=PpfMhgpqLgkA&B"]6DeTERD%$a4/U<9d44^Ap3Ut=[mRWFZ!d2RYLBG4nPYEISs6I`*$hHZj@BmaACki>ISL@-.+QNLYf[h;qCTC>r`6&&!q""=q?m6Tm,_I_:3I_(GDr`X])-XWI9c"?;XiKIU7sN1M4t)4e\RC.4H^ndF$RL?XLNpH+.\Ie0gNua;<#@4*F;@&OA$V^21<.UdA'4nnL\+^]ZR]4DCq19mq"N9*7uS9.LHBP;Le3"J>dtp.UN:O!S2YAXr+aid?*Y;NZ=M'mf;p+-lCiL?Uj?]dAu=GNrtOI9Z"MB(c#XP2?2='QjX@NPf8blOehDP@7"fmKBpg_fDV_n#@=5u`@6IS.^!2BI-X%?`S1oR"%?^`"'I[A2_RUT96Np7]:F27=^&=p/V_!d=5X7Sb9\\'CB[NPCQ&b7d[l:;HlIDrsTIj?S0WD7<`5*HLA4Y:`JMG+%'A\WcV-gudZIaU-",uJR]jH+mYTYicR$_!hH?D7ERPelfMQAFaMd)BG@235Vb25>rM\[m"VPDi;cuJ*cFme&\iPUF_AdeY>!!!#g*7F(nD;)A=rXkh-$rdie:S)B;Zm%qr*'/0i?YtLrr]Tr$L(,*EiQPEMp>j>ZEZ1(eVb`rKk\+t]aQXb2.p'H1o;4B#=&9F8r@+aYHp';L4^D?@[sL#K8cIJld8AZ)rUf@'o&Y^Oc\e!B?\E/8+!2RP-RUoHKaJQr]m?]CYNhfQ8P*5p?Ku&jN>eWbjOD]/*^+hJ,FcB:VFgI-X&lLumG$7.T8<:>qo^F_p$1)VlA^R%SND$jVJU'2Zr!G_8k8CR2qnNeHhMc;2r8dhfW\e(EH,T&%fcS0!!)MYaSKFL.u#R2bEa_YYJ"OM[;+7ir;?-EaubEOGc?B?*bDQ$Wr.pTTgr-,JZc,.B9[EVhbohaD8U2'8sR5/?2JS(%,Oa9H^3d'`C^OKU9`[g`Nh`i;/_XaeZX]q\UZFIHUSNhV\o!$eF^FiG5>ILWl)k^7&:H^No34O8*k3>Wp%j,]MoK?^JFLnntgT':`n\l;V`&FtCHN!^5JHH-,-aqt[`76BP:7=#]QlO`)Za2kF\5cIo$paa,CmG;HDNNg@G@V@>Ts_2p+@U.T3'u\3`%]5(?sqpIDnhk9*Fr_Hp$/6EU&R6E=4k35GP,$HgF[\FA9rR5qPBBBd@s'XI!j-JBFMRCJAnq#J,atuNqcDaWJ@WZZUV-k2J1/M%?$p;\@B$a/R#)Cl.`[c6:-8q6#s)_qYBr4H@!^H^X0B(qF3mA0VVW%HD;$9,0sr&PIq1KPdNk_Kl3Vc_`3,IkIC_upRdK(OLJ*paH2$-=CY,^p\o_XV8&mrM$GH)[97#+PUTP4\q4TZYD7#KZ=W^oeURPjfDbaG:RsQ.lg&o`eua;nmY-CM7Rfke`l9>N,U=`bVl$>'A7Wb2Orb"Fp"'aeM@embG?op$1(KkKY)0G3n\4rt``Sp=jL00h_8^Zf7b(@Jooj=W<0](+ri?h^#8$;56U"E3O/BP*48*GAk/NVaH4L-Vg0c24k*a*jfh@=rg,gVTaj+.^:)FQ]`KZNT'q@Hec7K&JGq8C?\b&B,F"q;L3eBGtRa"@b)DoK0>D"2.R&Go1>c@>lk?aJeFi7FP:@gJ9S;bR+W'1\=^o'qio8tICPnQ;LFt;9EVoIsIJ``_]#\GmFnuFl`\'^I+l5Qj$p_;eV+AI(8m\aRqW;9/**ZXM$kRY.`sXUfU02HbEa`\hH1!f#K*Uc>#*jroQINuMp&tk$cVpO9_YX]d'U/:Df>*r?@,E8^m-Q[Ia4HDZ*CRRKH2aSJF$CGC/kA4ML5*cWCO5e>2hT6:6&>T4?4?eO_U-EokH\Ka[eMl(^2t:Jn`Im7j'.,pXb[Sio1$1^\qhK1"\=NJ@ua3e./,IJ``o\T>fe\J87Y/OETEY?no$:[c9*LW7?Rb((^,Ng-0V`PkQ>1*p^II*eNPaiVXb76>PNLg8h8XaKs8?[hgIJHZQ?1Gc_W]_$N\]"6Us(oksIFBOr.CtZ+jk)7:BXc!uKAj*3Ngt_o.qemF4Ss#8b^OLaHd@3(5Ic/"m>l1PeT`YK-Qn`**348BF2/(?EmFntIWN!n8,gQ*%2/:2ETBtq2r6nG+)&)M1GM^FjkF+8DIe1fCBk_9a45R`%?bK?Tfs50B?+OSB#+A/Sp2@\@VG*b"eZ(:NZg55Img^0g+DY\aDV_l)!OL4QbIj'Wh7?Uh>WE\%<2idTI[IO2H7#U_/)QdC,U>d+79FoHr'oI8VG*E+Zt\!bUnkZK"ojq!`7091:KC5M!*W`?)XD;$gbhH\iSZS#?'*'AJmeG./-adY2*C>ZaR::CW$j2UH;UDrfO;7?>hTL"4-9q/S3jiVGp[N.AKjS\iFrr2lt!K]O\e_Ri]j`%B*Y1=X(0L5Qg'#-#s(I`OhEt^bFc&3ot!]FuR4PS%^:T$sY9FWV'WZ(k(-?4f"Yg>\=`,B#JH^Bk0eZ*1M@2AnDzaNr?L*oD>54Y)Md?;SqlbtZKV=g`"0iJ2FW$Pr*a\b"UeF%n5Hh7\/Z`JPC_#7m+Rilp!8bEkp1/)U;dtmeS2_)[4KAh>WDc<85_fgi)Aa3&C?5$ZoL4ZRWL#D`G';/Rb%FCA9_[u26UO5cg`Gj1s8D[mIJIfQfWeqAX/i;t^9MS3\ie4"qXs1IldrUm2TL42eu^qi'/qjibK>"IbH>-_SiLj]X*h'V]peWV-LS798!!B9oMdIc?+"EI,N!c]M(;Z1a:TF4*3;:COH]2'E,fMk?Pg\='f5*>j]QHW]\1(R&rO\g)b3:aQk;G<2-%>?L/b$D)/jG39@?iD"9_Dc0VN@<[N6J2i^W4ojJ3in5_/th/hZS[mWIjHmF%hhBXr?U?45XAz!!!#[6VX%.Q&inqGOKF/+\nOeTmle1_$;'\^[9OMPMS)\='&JniKPci%NRTpR$_Q4!n#EC,1O8No7d_qqWb,b(+WEZ)5q]Deu"1bDsjr74k/Dq;"XLc0D@<"1U;AI]bDW6FbrfWh2ClWRLa;Gts,dA)3jq.IUi(+rjjG>E#+Y2-'UV_l^I-723q?uf"CY$@t%crlo'I9Je4-F[m.<0<<*/R,[5X"#$Tl#3BEcqjh2=KPc7k0KZYU7s24gOP5qX;;rYz!6B*..ulN)g=/`iq"sq!*^!ORD&b]b<;kA#ZY.IG.FYP3a%nquo_76m^OH-m%A(s96q$hFpkZ"Fm9%#GE?!Ls*??.p>1*'J[W_%AH*4`g\B*"bh7GU`gpm.SGc_02H1IaKP>#Bo,=[Vo^3obJFUZl81t]EaY>pA4^3t@1>.&CNe9'p$_)>;SrVQ>ia#.e0*2&-57uhh=G_ksq8sLlp/0l8U)sckW>cLc&b*=J9C=K2'kK\\a%JoqeYLfm\GN[6lbMruDHM(1=SN#DMj3!W;R`#=/z!$E"/>Za2+Y#MB`./78Q^='#;cs,$z!!!"8+=/<[:[7U^gs`/sYC5R$h7L*kzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!&X6=f3b^f]fIr*1TqI;dG26OUJ7495s[e^SHo2qz!!!#gmo?W%76bqWk=n@:=GPN\+MNIbiK%F2s:]:S'['[I<(lLQ-#VJ,fLW`JTKm>IA4rd*PVmr!*3EDPlBPFWH0:`B55k-&#nnXZSN8Vf3&n+*6G=!D'(Yqg^OPgr-_?p$SN:n>o?B4L%3%3@eu\K+cY$d!BJiCoAu<(f?FXt5e>ZAJY$?gDNn,\c/Va<+z!!(p\j6>eWbB>aYf%do`o5h9XDFd=>d\TU]ka7s5Y-*Q*SNGGj?FtFM/l83kdcKSW?Tro7["64O0ek7a[Zj/Okg;a+C.>3WSiB"#_s61&eU+p/tjE3r59//.UDnl7ZJP)kI)#Z_hQlZFRsk2qTW^Y*c[A2AcJqz!!%QI.4d%:o&\&\7!Sb1pQZ!J[;4BSM2BV00l=nMa.GSGrqG<"s5Jqi\p!IE\o_Z".R:CVeO1?T_og,6X]i,kmhHlbhRR]?p#mKGoT=]]T957u,/2LRhVN_]rr)DgT7?i#f)g^.?+P,4Fd$0WiegS$U=H;GgLf4Y1M/I\g@U".55=QXmsb0$\",U)Sih;Hcd+6e+;@rhZCQ\$4r<+62PObf>hkMj:EDZFFSkcK?XM^Na,b/n[Va!@'k48*5Q:G[\)+,dYF[_-CpS[2&mKSAaq_1J`f;(o[Vab;2/8q`V-.<$X&lK*WD^^2CT9XN!jcOc2LYpOQj+$?BRG1T-`87`QC,#o2AcJqz!!%Os.l/ufCY,`7cH^Loc8BNogPZk$g=tB*#O)^.%L!4U/5i:"X/g$@s)E+$.pB;niPL;>S=JYga,UZ=E5h7[W_%AgMEP9F?5trYHPI1VbWf:^OQ9<%3(1oN8@TOgU9iJEJ&jp?@(i^]n'L=q.234YF.1Z/ml>?rquSU-;A70[]M=*>YTTWbRc3P.G_RXbBd"'`SS+Ej7_lpMuRBpgK'\"D46Sk@=o_^GOXNV"/fVb131q;]mKM98UA_Ch^ng.z!'i_&Dr*VP\@"tr/n&0s-?[YYb\Yb*NS+heeajd*oBs6Z]"#8[4lbVaA4@%4$PogAV+U@Abo8QW=Kc$o;\NikTRd`re9\'&j2R(4$Q#,N1hkD!ace)42.!\*Q#,-U>;rC-D.,U"Rr?"q,OH;=qHQ((lBH,ih6CIF-&9ob#7hl_bm#)JP*-Fj'&rBKJ+Vr%Df>(dJ,F7P((lChgb*XVlIz!9QjE8Z>XdNr"TJfs50`W_rcdb:dHlh3+JF8CF63cmbPMLlIDq2T0Aj@iCtLH3O26GRH[0lG*'!HDGMdi7Xgbl`l-d.clc+o'Mpo1F`JX44]G?qmBp+4+6UXiX(RJI2Mh/'9[naY/=f>Z?H?+&3JbE"aoq,"o/6MDiV+ZPAZG@)!TcRr,lCe1Xz!+<72Unn%ipV6"HE;'#!'.6O3k%/p+5s]Mp=(<]l[r1#bUD,1W89EHm$iXkkXI7pd@hJX(='k.AX4Q"/@t4LRBCQMoEt8cl9h&*/p!m-/i+CS.Kc;sg<302!k!*\7Yaem']mA5J`F\>aWJ9^iL8jL4M\e$)43e58>e+lq(Hm6FfJ\@g\T1+KqXMTJ>BMK:$H]RNrVaus+Q")R99,$mim?2W>IRV5MGf>OT3OMOS9WV3mP&)S%4*9[_Y47Pp5;)ABZ<,MP9f"O[no+k54ad$DeZ)X+hVNVRmQGRL`.\R8Y$JY_p[2>W\akJ[Z(K"[/N#Ccr!X4uWb:.J+$Vqf-0'L'e'g`qd3U(b7J%<,ioB(Zio3A5W2QYNLkr:>YQk[[gq.b`0JN"mp$:T_3ICJ$fZ\d@p2/QmD8V);.p&nOl)1/$I=7+."Hi)'"Uk>)j,]`mGD[O+c^u#CE;T?G0n_N'Sih92)]L:?d+]--[U5H8nrd@BZT(Vb#mjD"5)kM['K\VI$8I5/TlBP]`KMZFmb+p:AGF>$^PI<7ePQ;Hz!.]PH5no?j0rp^g@4aPeC9B`f1p5T0=8.&u%>HoCL9m%@bqqlo'mHa'W*Zf4WH5*h2E?@hI9XJ32r',K`hi46Q.5G_r]XdC][;4Ba=tWp]5Wsd_mi*"mXBD=dptK`%jl$d%p>qWJau'+hTE!tP)?9a;zJ/:RfC?i`o'+5L&+P\,r9NlK:IM2mU>F`g]q<2rp>aN7JOYbW?:lDq+sCt\B3%mCgfC=Kb5j0GQ<\ohd7\:sTP+Wqo#DV_l7*^!9u[ofnEnlU_.12"lP$fanFH>"@#3q>);JnrJk-#GPR?soWi0".j:hRn-_]HAl@oTHPeZe/>*8sC`*Y$Ar''rtE>?GCr;ERhF3feDLMBR)*E/JfTr_TqJ,0:R>Vk7hQUG+rr)^I?+P.Xrr%M'KMnX=.65'?qWljQTS7^clm_\TCTkE`;Vu'/QH?l#p6b5Pqi$Jm.TNLiAn$gh1^C@2n(t?gN>a[[m;%=tCd=LK16'\V8*lI&8;HM-@G?=$qVeg%,K)O?td/mh6Jat'[JCu!dSDa.V%:s7tTH>*9Rp#Z/j5CU7:IJs*Alr:9]BRf[<;0A@\#7m7[KK)sO*?A_cIJ`a"aUgA7Gk#74>nd8=z!.]Q[HhZsYX]nm*+MDRBY,SD"ZGF8'qrF7>g9bR(b\ElGTqQMD?,qsGXdOVr/?+EI\(BB;FL>nABC"N_84+oPZ:.B8&qZ3Y?EIF**?)LrUeQ7Q+j(eQ--OdWV+W2THGJ7ma\A)49U]e5;kE0,>\n./0H'#m[ldt#2*ftlCn#Dc'gNOrXh'iPPUk8IpQCk]liXAei)'Yb@WP$WbG%j%YWV?$\uAn7:#SmK!MBc6!]WDb\r_D]=A8g^51b8e.pVG3PGf-p\"z!5Lg=EH,?7q5'SpZuP-GJcuP)8(/M#*j]M*?FtCJJHH-0?+P.Tp?g5Rd-0]Wq"XXFjCHXg1G_u%8k_p[;58loV+d:4U-X*O](f,"j5In22f@F?naY;CF6BQ'X/8U\2Lk^RCM\eQohbJ<;p4L#>IJ@1FlCW:4,8TH)fG]TqsV_A/WYLp3a`Tn[bIZ#qW,a3]c9_:B9u\Cm+-pi?H2$-=D*3Jgr;QT^14`H+m[VT).41hLmX.DJ$emS$m9ZGBh9hnGiY[G9hJ,HQmkKZGM%\5e3g<\(u0JN"4K*Mu#&TMf1U4Gis4Ztqa1K.Qi(&odJ'OQ\$naZ.3Oc^e1+[JC[=0GpnF6:]\IJYp=fW\i($9=2QqGNOMEe!uR\)PAbbO'FkE"I@RVoGK$NKPlmLY@nBJd^>BDn"E0l?]B\M(?YZgScLWejG.0^\q3HQeJi_-Z1Ji]DVKfT*5Q9OBib`DOg+:fNqljZH\U_;p$LMOh\[2TgOUbV$-(WL4/jULGJ&?UIX'Tgq9YBY$&*NB%s735M&9A7ARR`=VB?]`JYP=D4HcP11eTB\KJ?=k2quY>p!A2[c+!Zd]fuG1a//ssU&'Zs4lCirTmFkS&>e5%A>^*n_nu>h;&\lo9=`kdbctr;?J1h7@athS$.tYfOo,f\"i0KS5SSP`1P0FZhQE4Ztec=aVNuDK56#L5#m9"l6\._q3Mla2dAaOWu'C#eP?Oi`WU"IJ),l++Eunn(tas"^&*Cc)d7m-D!DLW\,h0p@e3.qXj=Op(em1'16Zoma=Ku>1E=WHd'PFg5'-\VEU8"C#M&dZ[YLDa!P*3cJ/PZgr8nU4O=Am^#&1s.n$PF*d`>KuI]'/?kE=%He,rdmZcCI&KY@#%`iIX%LJ,fKAT7?jNI/.f&Q&-S,@U,Di"98E%z5dnn8L[Nm(bK/VfFZi^/B$D6,B4j5<`JPD6?+ZtO5Wps-G^+J3e)%cb[r'-mjSbc":S*f!rVZSpP[V!1*^",Xje`>/?g_W_jQ'kE9Pn:hX&gsPR@ssH2`KFBE6DM.gT5A[eh()9@2iR$nV(#=/&fQI`'eT\HMI!'nK")WD/.?fBmo!$@EAu[z!!!"$cDpQajQ,CtoB1&EY[PkL4XX!p\:",CX]r8dK7cNY6R*g#Q1p%`1NYB-156;]Y/L)(n.>UM4qq@\#,9e7-VkdHH?AoL?%7?R+!7,gHhX[M^OH"Lj`2L0eO0@^mtT:YT[kRuqo5D>!8Ke+ao]LB7GUz!-2Q!HDp@sP*/G%.&"TRnF/->]2e0j69me$V+R"@pTM@2>44!,Tm:,)^3t;r#CCgp^q`2S$uJR!1a+"cYE%k<4*N5*l<)9an$TfQnRDChm>Xe/gaEph=CC'=e`h2@p5+W_QK6W%@n.F%d%Nfb)o?3uGOKFcWKEr1A&]@X"8,Ijz!!#8ZnjtudrVH1BIZYgC:7O:P;Klp.6\V2+T^h'_B:[sM4Z#r.QnUhoS,rj$.0')'P>?!KZmGBATm6+e9&H$mB3HOnS4#b5aL(j=mr)*2p%q*N*EQQnA]pAs[BG]j;cCI,jr4O1LMX"gY-+ofI3gM`S8.8mZ*ES[(;?>?rN=mb+WVS=HZ37j.6\l8du?-Vhl7m,#F&AM\VCj&P<0?@7*CLK7efq4lP,&CR6YZ3dL;W^4#meDVZdk@P1ce@+qu%A&jVkrLj2kz!+;K^GODF0GPh+$F6:\L^3oaKJ,Zukc^nXeNh&CahV[3T+<]VArVI`]+V>:udF$A3naT1B8SMmQR@0ITe3eHHfV-dY+sS.>a@`?+E<(3N%@+Y;a,[PsH9$9IoVkMG:[4Vg.TA+0Y;*t=Fm@IJYDss4YPIeQMn;o.Eq2H@?:cS`IH'r[C=K3!KaXqc(+WGPaH7]M_a['`WLI&#d][unjNa;XD)R&aLs-5A.\mL/Z"$93UPX%cDTJhXX#.pP>N,m^*(^";af1\74k+fRzzZ5"H'n*]Umj2MQ(af&(3m./$VT7:b#L2>PK-/5XE4*D#C%lYg:p!A2RHhZsM4]B+EI;pF?\[a0hqrt#N>'k?!l_/b'oMPJYmbQV9l/a0:,t4]%-hYidca6p3@ShgYI)gb[sIiY-;9.fW_W@)7U/+'Nf/$gXMDI.N?G[ml>qejqGAioH>5rgteb)Rc?PR%U';E%-=8lA0fnE$8,U91N1g0b3@3-aqc*.#V`)&>]B=gOuaG3-j]9esqYT:__q8GiV4W>YA*z!!!#?>9A:cOaKncAB9j^T$M`HU.(!)+EGFi%hF`bk\+*gEH6(4D%$ZC*r<'<]m=g4\(KHihnFO9T4aAejS:TRkYS=?DIG^#cThG/qA(JU^qp_O8MW%VAD2<,&$9!@VQ"tQgTY+=qXWmtTnBX3Y*%;<>q=2BftBn:*pRZ"1GdR"*OTi,k1[4Yb>@BJT=$@=LA`Ro9AJ4+@K*PJ\>j:YC]l2fBP:'0&qYK'YE?ck[kg?.q:S'\*NK$Y'84ZKN:/+I-aN2GM`k;&$MDugc\l*P9[Z6Ml"<8r7LG_iPF3aL@??0.aJ^]/a\;Gp80Cf:iR$O[Vp`He*KL=BH*IG3tabId,9,CLieG3GtG<6ackk"E=Y[2[[)a0>IFj\A+FM7%Q1A]rP@T[:&\[:*J&LU!s`QD(pVPN#499%W2$<-g0k4.TAs&oQ$\?_=$0n4/Z]?6NI/ez+:foZjXSunDf9e=1[:[GG3q&33'H`Co8XH)jiWj/a]##W.O6AhpZU!lNn^pTdg$C)A/iQIp!FdftP.P;[[VbU,a,_=S]"0A`2f$u6otmijnh`GYUnf:/7+D#,GZtYd"-"6Yn1/;9UTD2Nb&Z2RsJb+(+nmE9gARF_[kj%.a>,OjuOLTd&bNa4Y-9K/$HU[]J`i[5(1$?G4FS2'RSujif?,NugGf`[P9/]_X/OSOZqDAuBtJl;\_"FQq43*l?WoP*2?*Sq/)Q5jb=\gi;@bXAQ0P'fRPg:u1Le9.ZfCE)YsZ37,9e>m=2Te(Q_/d)mC-[N)a%&T<1h_st)g^@:9OWmDM_M&A9fs4'FXXj]:3]^k7U?+f]d8B=_$PtG:c`)]RL/+Y1F$G@GLCWFqZ>\X7ZIoaQr1J<^(;<$*T4]fK'ITmn_7URkRRa7R!n9S1PUI\6B@X"^B#hH2rOSPWSG+TT3,h-3?F=NJZ\K).]8X(Dq/Z.02Aj$@@m82[.`\p=Cm+#GBQ]E+2fG_2[D02mO8*"A_Z=M(]YVk]eJ5#hDW/%fugK&4;W)9>6Nh]ncgY(7?4[!*LXnp;]=^PBLN&>D%a9\%]=3fO8#")M=r;#sGd*njdZTR/YT7&$gCAsP.C:.j/Q309roZ09jlCe1Xz!+:.\IJ&kQ2EQEfHikt&-0:C[L#7n*uYbW\Be*1BP\p&AG%jbPQT4]G]H.pp$'fe85"euY9ue$&mz?t5n(Te7rMb(JAFV+N$Z,T(32]mAlI++.HcneWrcFE;M%+uhVESiC^VYCS"mcsFD3an2`A]9]jU,t/^E/+(!_^%K+9*bn\aQZhZD8a_B.hL!SiNerULp$:4r*Cl&*TiF^Re3epZN>`[a10?.l4^Fr`!n9Su*BU.4.:p1HNNmQf:3DX91M5i.d!NC'\;?Uf?X6:Il.0Bt+frW.cVKRjoaaL8e$3CQ))F95=d,4UaVS%eP9s!ZgmEC9z!!!#OR//7LY)W49@IPa%F)o^pAO9_J9M1S;e1a@K$"9hnHDO,o?^NXcL-%13I5p\-mlil$it4+@/$f1h_mR@m8Ng$99e"gs(+guXa;JMgX&dbT:@fRmTiO'de0qj@C=fV*php0)gpqL(7#;P^qj]Zf1eC9>HK`5"$Y:;b?XHNJ1I,3pEjupY*\+>28sLmJ/JA(!2_1(96psFBWDZ/SE,p!AG%u<'r&#]!8_jkR(KK-i=l8YQ>Er'"mhL`^9h=Nep0/O35F"TSN&z><73/[(X/dnl3%gOWmY";4f<:Y^iP:!H%Lrt(aGL]_/C-qhHDn?,$Pk:l`%c_tX4\+!'4ompejF"O3WISrKlu_4fr;>ne]RZ-\[^kA25oq,HM$E;>Ai9.XWML&Yd+mHhGNG)iTgFHTfUqFgJ,JhlKo'MD%i*rNs*Z2R3+2jj""d3j0QCC>Zq[ZX(+WEZl.E7N7oRHFgpjV7QX6gM1G`7DCoKU@ldVoon*cla7mB5QlIDr9421@89*V8[Won;X]@h`;#BChoq=u12TtUTrtQ$9#hD^3g_sGn`%NQ^3/_j0str&6:4,jX6/,!HT/3rQ^MQ=tjL=fl>%37TX<*l0XbEpQK%n4^8^9WJ&)l?2#[A^%&b*=L#+^TKZV8U^MlE&&!GjH>72pq<7q\z!5Q@.^V@OiZa5$)qnWLZBGfMsp!AAF"SFi>Kjr#Yq>'h(k`QJBU#X1SQPG_RnF18K:_2*HhC>03-Vh$&?tO$5TL"3@^]FZH=L)nKL@nBZe'h5%AT)L:lI76jUDXUS&0TF[[2rMYBMkU9qtBDOlF;05C,osc(+i5FCF!nH<54o)EclL>g%Oa`Dtrh\@OHB`cp>?[\)cQ.P3iV2HBp*bU=ZY>N>f-9cb=YoimXf$e'lcU@Ua_4HmVX\m-a;E(]W:$F2i$P%>N4t@Uc'XG3t_UCUAtHm+=$1AnuS_hSamNZ>#$03"msn`.Y!\'K!cd.$OD(Ddma=&/3H'h46*/WYp^%J7gs^MMfArPF6rJUr@r:/"??:8^`V8]f&paNVm+k?3L6H$Q@`4?>Ma,UDIIp$3u#S63OT]s"WC''*D%%o#Ygo()?L-SoMe-qtnD6dqf#%s;Eh(\one*d[MEe\6J/*]\6dV[!/"rc3m0]mB@YH4OLdkK]W^Bq&9:("]Y;Yt^]Gfeus;@R]bB]g)AWUT%1icC6agm+Y*q-?\V'8\N%!J,apK[Nca-_84Bb27#)Ec'gML=^P5bH1GKEitj.BjNsSf`c$YBL9R2\;;7Kr?e>AO$XoAR>Gbh>EO1)^^%^%R:&Is*[pNYARU$GPrUnc2QbnFa^[];__hJVYMi0AIHN4$Gzp_UGfq=:I]UMAA]WB?7/fs@TbnZDchd,00XGo?L_6pq:9R,EcbHS')B9aP]QnR@-GtTL=3ARPd-5XuF-aT9iX7R%)d*]bIf9,YJHM0@kMjI=%0R@]\-t?2dNi=C0V`HqJ,asXMQ-8F\SCbPYJ$6=K@ngYq2Wjmm+J_ce=;MbS=D]Yg9_J=8f5i>.U'3X3;QFC4uI&=A]pC==1'nZgfb05LsN+F/0Sn'Ei%P87>cn:6,VW$5/+I"0Y1\jMQMA7XVSqF$8d/3S+b;jP_4*EI-Ep1lDntC8DCog,%rZD0?HK^eTC\.sKA&aJTYSaBrMi2AuU4moX^4#l*,UA`k,hI@@T:_aRVl-'X.Q&TsXGRfI5'c^0A)9qJ=$rAZC3>4'It/%(B:lDq,2i)d*geKj:pLC`.HBqr03^A@+Fj!3pF[nh0P[;(th]u3]]onYD:c87&"z!!!#o2j,\jC8cOUo#_'hd\TTP*o&%@q9OPT9O<&0--_(3=q?m:FVK#eghEEms8Mt.bE.esNUm$4Cf:khEtJurIJWT@UgRVo\@B%lmFnP[W`ut#c'pYOO'nV%HMmR.SiqGc?K[r1"Wco<6p_nj1Jjd0=\\oaq(HUaka:+),&q;d`8N9mAL-Za(MTKu>tI!g>.Z4Qn6CjTPtT^fp66Dr;'3,ugigKX$=fs>f-J'i#=R2c4aMpTl/L\H%YpOCS(Lgr0<]NaenHms%>HQn3/FkT08MHlN?8iK,VL/-%o#[0)`DLD=-MK$fr7oJo^m7cK;d[B3d:!s,CB+NgK4)hFEH%+7fr_kz!5Kk:M2=u&:<')044/"Z(kS?%3%2^FVb"rM\ft!:7XE`1MM9o]Qrd.#7hklmWJR1z!!%tCR[T[D`FR)R-1[I@h7@`GS=#naK*TTZPiff_^3&V&Ft*I+$+%L;2/>%-S0)"KGYu0?'Q.f+J,fJV%7X,b8Pr:Md%J5/[;3aXB7*&0G!KDA?VaJDCf_Pk5NBu_irQh.`Og<\\pE+@W-1gm>E3m?+Zt_RVfR>qL,#*MA40T1/[Z*c"6c>LCT`@>A@pZU"B\'9<\T?pBFB$jZZYJ1!jfVn$bY.3OX]so0Q'7n6Pq&'d>0Z?#UaE3kCS$WL&34"KZ=U.$*:aha15jn[498'=-t1u%4VoYOi9p#>X&c@"9q/S+eZ)?52WE"b[;&]38&q\IdD:G?9oYd8S@iRbVY9E3kB(.@DVa$r=7/]RlI@\0aW'1!jKrLA(@q_6z!!!"d.R$&1FQq5.TA2&$YTRkJ<%i0'lB6nMJ,fE'0k85ISND&U`f5?=m+J[UbOk&JeLRq#QnZ?ApSCNLWqXVj++BUCLc&u!PjLDJhJ>[,P9s"EEH.sTUINFm/]CIud@s't11g*hBr;HTEDeZS*p4j"?f86(]Gu>n:^U8I->i!)?#_FOABD!Ar<(UqJU!$gt^2I5Asl8N/S2"/dDiiCKgUV*WUCHhW`?*c)22>rz!!%NqeC,JFW_fC@:8c:i$l_$:+S3]hV9iJHht<;#K7h(dRl:duJ,&Nle>ZA>PUN64p\"4(F[YnU^?*P)RuqcpQ%I;P4.?g?hqG>FLT@JVgc@AQ[rq#fj^C@)Y@"J?^V7e-dEut"eu^qi91heh#9qoF34jA$HKNEhXn'#KokLmLeb"T0dA"VDdA&if4UW#V-pOe:[AoAX4LN+m.p(5%OL9j2ILmPAhS"8[obgl5=>:m>+%p'\hRqOW>u&eWET;k2#W%(1VP^e;f.LjS11eUQH[At[[NZh:@)@R'D;2MlnF.!u/G\.>7=bLD>[1Ohh;.DJXkT[F(X[9lhRs-mX9&A%z!+7+:-Vr%P&TjL#D1[Cmo/a^;e1Y5eV@]/Z7ZAL3A7VVdl[AN`GNS#"B[NPjEu)Rs%NP99ku72jk$&'$*`V9mFmRc.m+Sq'P*1ttNun8kcT`@d[W(1l]`Zce?+X%5:2-;\3!8&co?EdX=D?m>Q'r5Se`kP\eUo1q-JDj(jIsZ9aHeD^WXjED11`#I-S%MN6OfR0[;+6\5C^C=YM@YQmNh)0Z+.[[*BH#,.a#W8%ENe6HLV"9z!!&mb2/?7clIB\"W)9HfSYf,N^Adup6\Z$Fl)10Or;?+H[K!:(TgJNoEc&U8fIt.-$p4-Ag*S!f69Wo?++J*5cMR>&Za[DfG'5K8U-t7r%^rT\CIS%a[@cB0>A4?PaE&JoX:onq"+MiE]2\%#>48l`$!\P]+kSND$:1hb7f?[ob,h7>[lmT:N;kgc`#EgFH0`Z&!^>gXfDzz>1)SVlC,n'J,Nr%W.P$P"7)&ISdmbPK\\o\5h&'sQ0N4!KT1+t:6bGVWIzzr+i.)Ur:T!HMHu!f5o^qcYZXsXf4?0MXq*3H5?/)f)gX+;D$f_?o#!+e+MIY&EF6A`7:MQ%soBE0F:7*_DlI;fL_81Df'_5RFC?jcqLW>Gthn47+$5G$M4$,M`30YppY($?G_hScsp@aN+NQp2dp[6k@tp,6rokg6"jQ!S?GDLm@iekT3qaiVZ\]6BU2goaqp4A=neWDe,l\3BfV1R"ie6;g]ZN>aZbKMnX=SNV>N8dR#N>e-T1bpsY&`mS_Y[M`GFad'9kOnsG3$O]o%SCOZAgLf4Y1M/I\g@U".55=QXmsb0$\",U)Sih;Hcd+6e+@)oJa2Gp7a2a+%1Gq$I4[!)@e_/e]`90_r>dTHJMgP$UaeM@eDVr1qlg&oqpi1<9XB;_oN:l_]+2@L">P7:3qt]EID6nd3&mH_9)6oOJNZHl_D-M"f)Y7#5B%X_>DmIJ?qI(\FXe3g>c/M0]1F*?s)AXd\Y+3mB(Y+3D!"Bp[I[6UMnhk`F_IV8\Ws/`h(4k56(Z`z4;T&$GjsC!T=MJAkWP=#f<=*1qtG0s2.Xc>D4^o3X&dK@,+sXAJqDe5gm"K_cCN_%GON\>/#Q(/13Da,cCI$M?G'CX;h]Or*p"-DMGpEJfk/SO4*G:^9T=8ci'H+6TE4%g(T4jZ^]2]V8%lULJ,JiWET>(3mG#*qoB,/WQ*[s/cZL`V2/4Bh,n3c[$k-)g^+G9`3AMd&,,b.o4DE08J\$9g_M)j8'(shX>NNA#\o]Y[Lq%;Z"/43.io8slU8$_cg1S^$ftW%:k09B^041kU?8a#fohYVgz!-fZ@LPLp24'$8@;rPTIVbEMQe*6KC?at'kQtQCFfs,%B8I=kB]mI_U'cT)LgpLqLOX!BAS2kZdo&UfLDVVpPpYj#F@:7*Eho1WHp%?"HqmP.@b'L'spPOT$Y?jAgjiEQ/Q(9Qtn&$J,fN%k$YVpUIJt*s&Z:(Te;21Ct[8+/CD:d#Kt+oIefg@BhY*\=i:3eY[Ko:_n!Ck.kPW<'#PMQ\T6fmhL>CtZ#']YEom=2n%RhWW:n5lPD"V9H\]r[Ue2AdhV/2J'ZGg$J.7`9'=kJCDpjPc!edQfJV;lI+JB$,-Nls_]m"th@@hgpo5&S/ZS`p#oDZWDm[Wj=ZSRfsCVG/@\LK]>m^qq(g=O9"'4kP&Y$EiYL!Ms[b_hao7_*U'(10e,3d"W7CtZ('a6qcqGO*h^FmIVdC=R?EEH-)B]R9O\rmE1oO!+H[:ROI,tjP/]QhgbUC7,&z!6ECC_hY9oYHGN3IeVZB;c?WF7u%Kj,%!3?gj*u0hS%(*2Jq.bmmTuGb+1W')3`cpA3NufrV,4".8_IYYBF.922A`QSX]t?H[V%erk09B-ZuG'F%4bc56@f1Agt^['2Jh$>6O3-0qrXAd`f;'$GOF8Zldm4^(Y\9-XdeDq):tWR&#Coq(RG@;*iKTP4Wc0AL`&!\f_UO,z!!!#&WS#kUDnl7ZB[NQ8+$WeUY+CHF2pWdKC#=F?]oi"!*BGJ#))5TR)%l#\I&J`Krd:R(o&\%""9dp?j6Q$#2fE$!=O!9l1L4/8]Dt!7kb)uf>Sn,$9G%6K[#sInQRe%4TDTW?&KsY"4?VDn\GodT'jQY3.qZ7cn(bGu^GpT&6Z:elAR6TmbEd9jE=l\,*c%TFQ`aGq@eK$:ld`&fXBDm\X]p#6d\Um>^7TlNWAp5aj2Ofc5(2\DV-CBEnauGfpY)B4O2Nn_]QeE`pI,k/E8cEFEHM'LBiA6'4*Rj/SgR;T/U+\W/ml>/]?NfFm+M%P"3r:uO(:EDWCE9l)WX&lK^5ra/\Uo1-RmbPM2h;+DM>q5hj7f:8SpYC%2DJnGboH"b1JGCNhL3*.TpElnq9\Zla32<@FDYd+SiqFtSs+WifJ0E3.ET]*q=pEGaP*!<<*"z3SoGt(CCs2/Di@H*BQ/hRIp,n2`E[l^uWV$%5k!-DQI$Lb'#L(H1Jn4Q$Ci^?G1+%ifb9d]68&fo][l-Y2$I&gVJLI:S0i=]mKLV?b_'hr;!'3;o=e:QAg)2nOY?u.p&kjC..2O)`DMGUou"5Nn?R_Q]m)WLIT"\z!!#9EViqO+e>Q5B;GtMDB?m$0AVq9WY'8^@]6E`+acf4Do@@,a=`N%d*W,U"(GSml>Zk^*X*-3P0r7L-C=B&>OfY1#eB8$M>+%-W9F^I60>CKOlK!@G?G%\UX]`!mn`.ZL1a;ObV+[.5;Jc$keOm)ASN$dqXs0t?=(?nBuS*2h\u$`Q]6?:GZ_4jz!!!!a%MfZi13);Ajki?i6(9cL;C3ULbEpQ%6E*>,$rLZsk0BNeZ-;k)e"*#!PQGH5Ff3W?#nuA,OI\IW2K+VRbef15\om>IGOJjRL$.LVPBeA$8h*oFChe38&u\R^Vb<@/b3*?ZQ5,a>nO@%QVM>u_aT0FG@+CiNk:S1CO2JqNrOg^/Hn%ZQK]]:VC@J9'@VR@$M'U17X54o<]11eU]KnWYU4>Bm)jtX""NAo^u9$BA@mSk*HFEBWbie4fY;H$L-',+kcA&H4%`GjYDF2u>AkMX1/X&lJG4*GG<:7]o3T<;>'`q"2-O,pcm\Rb@'j\)/Y?C.b9SiqF2b[t,CB$73%k`$N?Ctb3ffe=NEil-h<-rG]LsS;ckarHN*hfnPE,P27.N-zz)%@WL=F%SbU-sj-2fEH1d]H_4V+S:=jaR*o2s&q8^%GE,]q+#pJ%qM0lJgfDq=8*\WqYi2:VOCn:nYVheZ2VI;lpd=:f*6iI)qBmenS7QNAo]jg2G?2J`X"fKS5RA>?4\Jniq5:7d@@OH!FW\/O'h7?Jg./>]5;)r:KXR\)2X=q;5MlH5Tj`KgdB(`*sUSDC"[a'XdCY$_HVM5R$.^+Wtj2]J"XEjF"9$%u/C8@]&W>djEp8gAfPNM-?*&pcoA]@3X!nMt2GAjBUBO1%',+pn[a'ZBrV#!3Znm1/GT#eVET<"B9MJ6H6bR?k2P$U,5!H7moCAS4C=Fs#"LNH&o:_^:GEstM-rIj=gG0\6"jXP"hE(mFei/q!mA\/mPo,jiZuF[i[e]q#'sZd*U.\aN3#dfVG==['VZ45#cEk/"SHSid(7afn0M?r;HTmr;=j24*U&D1!uY-G3RGO1M4iB2pOA>I++uhT6K.;Ve42B:S0hYf!f$In]Y&FYP;Jj[]c:;WFks[.__#\/QsR)3B9*VOgh-ofs>=L:_tckXBZ1n)t`jt^38ntSND&6`?;n#(GB*JKnYBL+XSN_/hSb"+[K?Ji[i$5T_$nK*QhF+U1A:bZFFN+j5\*i',;5s*Zcr:*-%B0If/ut]mJaWe&@4]:S'Zt^&efUO-M4sMMq)(T7.FO>&mpLz!!!!>Vb`r1Rl@Nu?Ti&I*96,o&e_qYrd4;gmUaS-l'.SsFfIRhjQ&.,`/'M:&=]5AId4mjgU([)]Wd`hQ^mA&Eo]b1Kp7a`,"&YY5."nEQ=`'"pOO&_ZtPSlS8>"j\om>'P"hB%8P`.63U5qr/"8:I+"GRWS9*'>p!&7mW`2P1pAY$fmF/6bqhL&!NN@KgaqYjaW7U"GL\7P-lmXD6b+>MI7!NsdS"#lU9\e[ZD?&%\9=]-,8\)`c&;q/eWji]T'jN'iP*nfHs$rX8XC1NCETV.rUV+N2U>.&*V]@@_He'hkj[a'ZBo?KG[[BOoG@[S,M_]f<*8E%Y283(e4Nuu\M^sC>&T!D*ToYuk0N>aYm3,mg&TgM'@kbIh:f;jtd-Qi2Rb*^39fs@T)]!`k+Wig^[)1O6",t&UMpr>U0@#g8-kKfd0@f*F8Z*eB!QL0TcYddHhs&td#IIcGj_1DiUVVKt^6sg^!90O$iz!!%&PK*MqLbEl#=J2NqSnFcJAfs@UQKl-85\X+pSC8B"L9q0Wg:NO3A$G?9(].6p`0V2i3cJ@=4e'mpdq=E4A?b^gRhNK<_6:+!_+sLK*@[+h?;c?V[e:[Ol8sLkuf5J=lL>H#%aiVYFou.Oi8go6>9-#MJ*6,t:77BY!KnUs+*8\5IkN^TukK]Xio()A@n-BF2e/l.`kD,Lg%o#\iqt]EIAVA@Sc6lAW&1?54K6b<&@%RRXmn2LGsN,*Sn7flR0i;tH^QnaZ(]pR_62aQD;;X@lF5?83d&TT7q=kM^r2'Cjnq`m_85*R0>@o+&(fH>C23$c"Ug2'/Xjj:EV/80M]*P!.@'88UjQiL9T6'?h=_B8Y[N1\3uU8.[.s.irVI$C2H6;eeZ)W9/R+O&OK`oq=s^H5m-K,jj@M_`)TdaA`JPC/%S`8UX!^D[m+ASc5P"!`DhhVE/^/u.B[B#Dqr<`%g*/XHU8"AmfNF@JX\b^CWHG?2gpqL/Y-)db$5G%$h+XHF)/hdF!8jci7*k0Ap&rIG0WTUS=K[9UR*r?Y[m3cCUW!g7'Qr[]J?tm+s1R@_hScaOOgI6:Y`U:$5HJ$!sS5`$+"j<09U=(d5%$a!^H2L"TEZMah.$HSI.^#lFYA5)!"$bz!!".b779OkrUndbX4g12.Kp%^B.T7)Q?c>RSpD,fs6nH@t3dS7CLKs2K%=&N9]F"h7.I"H;Rr3e>Z@aQVFVe\$#7h_T)2@[;4Ap%aCJ%:Zi;b:d_*RR3IDcr*+P(Eo]dQJ+MaCoAn",S+^`.54mH6IoYdbW):GJi>JBH\i3:QU"-2F2moe'4aZlrrq8T3A&\p-[QeKS,b6<8qI^G,k=;MA7YmW`@6lQ=U]2>e+lU%*8ush7Alp?L$.GDtWnE[jIqW_j\)/%`q,mB^\tT]B^ON]3ete3l?2%#!BHb:o\9sAr1JH$i8EP\m;9H8/Bin+\8al:p\"3e7>-E:I^::ART5\o>[1OWQ7^XrC:A*:D"gIr91rKqAkc6(Pkm`To:bdABQiGf"?%bb29D"8u^ujja+=Ki7P;EeN%O-q9Z]qlRI[5m+A"QLjZ.-mG#+:j!ekMq0>M%8ATl]Q-[DYP*VDGUAujhLSglC\@B$seW!8+ZNV6?Inr6b.4M5hQS.PbZrs_IZ*CQW%`=HWBM_NeGcE07?!U_X4Et8/+>oTGD46RlRRB=Rz!!!#)TbAeK(sK$`gS$ui/gq7p]f@Tchl-l5qT%g_m?bLdYd\TSg%p63iXB@@Pf/IsD@*uA5+@98@DI%r'("?e%'IYYQgc-T1C-3U'k2p:>WZWCPOghg/*6d-EC[5g!4*gC-H.4>$^0^)PBNCN^FfH=AbNf*Rq+u'Lp?U=+4`5E-e1n>5[7see&+/8h^T9M2dNfc#W8/7sHm.M^:LHQ/aG0fsz!'iHiXN/mPoZF,53W7W$kdOb;odm]LV1Hjc2i=&t=s-r@]K1[2u9RNr7_$]mI5(f<.^\-RU9];>k>g+"AIVE,\V`h7Il,V`"%=3qhsq-V(IN_hNL+_7b3iatdhfZn_5;eUi1I8[9ffqTjZj;a"Td9:$E$S36sN1G9h"*b+DG]%*iKB9e.'"M*6m\A*ue,Td?nz!!(]6T:_a'H(/M3o`"gd`JYQ$dA+`X5Q16?YJ8AP2_R?YhKTcX54ndKo+jeGo:aEt27'NdChq4[/Zu7Zb%]G.=nBUj(Y\3OqYJdH?XJ1Bg8fIFHiO$8cW.#HeO_k`3&pQrf.UX>dYQ_kGItDrN>XNAq-PBB:iRZ#6Q&ss,Tj$%(DeI^IL8T**&1F`^%^BI`FdGfD=pFNgcnboN/YuO41EYTk09Bt*ha`4ll;W.S1M;`Le[]a6Rms@(l-lPA83d+KUQL`#6NI/ez+<+3+XYS.Vl:_b)h7C"bo:[a>Zr!3+gU=5<:"bN*]B3D3Gd0Yn&ou?f2/ANBoLu*Jn`.Y?aX.5tLP#gBC@'7'hnO0k`ju)P\om=bH?q(R\JV3EX)#^EA3RA4c'fRJc,%>(.>RGgO$5FmG?qK@FASQne/"1+l\27QqLdz!!';JPObDKY?mKJbEOFh)]P8\qps#I2Jh#BBrX[a*YpYF+5u2;q=Ee&?G1Z]VP[tZf1-p2,cd.Z<@Tsf=C[F)&J=-IPuB.jDr,m1hS$=4f?RqgSNTGjI=:3#SUBXY'e>NpCXf;F0cl_nX^8]P``'sXNZC4Dkiet(7^6FASj.^B]_qKjgZ=f(W)+Wo1t7E!==#%MCXt&5"]ndWkic\1L1c/J3sXq92fIP(09oeG15Q5G*3_fF`gMr"*AhGkXHMh?,eHpWh]!7DA>CLH:]LIqzaG*C2LO+5kahkgjnr&h-Xd]iLj,H!^V?RMMBOOj5ETkamH2=XI[oOSKB07t&^j,D/`VfQ'b5t%d%aDAaq"XWnhKhgql.ihUp.Zf6Y$BY_>s#S4X8$lke*0OqoC;@5LNN*\hgYI)o"!Vi[`jM-WDZ/pr&N3KQS2pA>4D%Ncr02qYJ6B'g:)!mS=FDtGc[&=]m94HCrC5E,2$I$c%k`E^L&T]/3#[ODV_nSet$PaC-L.ncVJ.q9:%7O'bt;8+>Y>CElkZ/FOE5G:]LIqzaG*C2L]7;Mn$;G>'.:/oDr#f>9Fq*k_[dM@AKOjJ9Tc6VPi-[[LO\hqn(!WiGQ=]?tQo]k2?D_BLE]Qd<0LcUBcP7MNe]XdV/YJ:(*Z$2THX\b^CH1C%t.4H_5gUELOprOnUBWN$m+()3X4]udoi5*tOaX[,5^K%VQ`FWGZfSgA#QOGrGk!Mq94IJ-H?M0l!I/.fPp8FO]q,$`;1"NF/@tt>tpu72bA5m'ZN\t.1Hmespz!+\GDj[8.:^ARfuCRfT\h0`n-4F*0g-;Bq>@8lmIZY*'ZqT"U:;]i#BZ_m2UW;>l6ZXn8lBBN3k:1`/>W`?*1(%F0;]6DS[YQkRRTJ:p1&J61uoCMQP*tm`e&#o/o.4H^KY-,q1J,Jh,`\qBlZrF#&Ad"_^$lLfgNaAhk[C!#0/Vu-oB[NQ[qQ*i+X:g](ntCsW/M_FmfRe?GamO1U51J39[nrbb\Q#G#RqB;#9P%*coWQ%/P(ai4C8?:4@[h]5i.6.Hb.oW8\n&H9q+q%kz!6Bmgb(nQI;b&:iX]m`DmAoiPl4#Sp&/uQ=Rp*ILYpE,t7q,q:JH?">JFhsMT9PS94t>1`24e":h7L-YlVaQO);i##Tq5?\m^qqVO]IP]8X&_=3g2i'n)(>Cd*\UYjl^qc8+p8rBMh\QcPc`\msiM(.Tiq5c'pXdD8FE=bK7jt2R7)J.a+Tm<^&>k/56&I62S;rZc0u*bHO^cLWZuEp<8(6?W+.n#YWJmiCK*Ia0-Q`Zqz!!(]6HBUkZn'V:>!bBD5F67.P?_%_X\AYNnrr2o&WSP11>LJaaW2D`MldnqqW5a3uG^-`fS""5l?+Y9Jju;bd^Rm/d5$;IR]QpADDO#V5NZC4R*r=iN+,hQ`NZULbq^WUDCbR_em9[MSRHskk5('m-]$kQU_M'`j7n:UJqt?H0cJlg$ea9lY]3?,>[IU$.B:jUL[,^6.FQ^pi$Ni1[I>OD]%kV%rYe9Eum8n2fCSQ:@j2[328!qs]r7-@bFZHDjr53-k09BjgB<=f(9U[e0N0m1&=st?P6\#(-=*6W8`f.1,5r#/WJ,HQfd*^7gP(dtZQk'r.p[>:B-,0=6B?jW3RM"hAmAB#5ja,Nqg9`T6inCeUAZ'I]rO,:?1F8WA%3%4LAQ;m&&)FX/QRqjL(LL:@lTKUg3'04JT0GQhI7s5GO/=O8\u:BTj!*l&kISKU`g>sbRP\0XEb.pocBmkcCIltr90o:jG.4:[(g!-0-BKBk@_HscThF\$QhNXo^>k.+KCVe%3%26$k1W&UkQ*M5#_rBqY(32='pAe`S%P:EH/*a[8OL6c[YrCN:o-k6Z:ho.5!_/f=?"f;BlV\))=T<3-OXj/MWWT2YH_7PeEHQ&!cH[2fIPXDh6!N8@cd>+]_hX3b*?f>&9E6Y+%:a-CZmWf*."fMg_KYG';%E!N^V=!^DX)X%V1JjY%N@<"R4aqsR[W^finn@gWLi0.DVR4XgTcfdp[6./+N:"m`PlC>@qn4"moQi]oR7i")Cbt^Hm>r/^qdauH1T0GUIUBrf[5HrI[FgN-)4,"/fAA%>VL1lqXs/%5>OjBq<=fLA0Y[.Pk";6d28c-Z:R6%_hJU]#rQ_k=FKGlkih6>hgSecM]&j@1X1\]\T4Nrs8I&iB1RX=[ea`Y9n*Bp=NB;Xh]V,PC]Y*=RUIC%SH2d`P:'#@>3BK;Q"nLg#]48kk1WJDHo&@WH^4#nDN1oWZrR'$?lJFK*Fm@JeFmG@e(6%Jrt/o2W5;hqk/9nq^5+Fm$u:UTrBsn%C)ajj'Fol-lQaHNXo<4`K?:FAiF9+042FmYC,R"l`7L^b_LZ;`>9<`fWo']fq$FVOASkPl8SWn#7oD6@->h+1ObCQ1:13FUe-d21fYnN-UZ(4M@3,'P]Uk`Qp6)7WT3Idq=Dos99h!'*^)55``JM7S@FWkFQoOf1gdtEM\[m"2"+O:`dDGl9$6kpgRC-?Y&bnR0401ZXB?J1dfBOTaGNuu<]-$HHMI!'\sM@5@#ZOOT")9ifpB3Q%2BNebl7S<%i[ECo&RpYeu_#Vl;UkfQq[[0NMrHpL@V#a8sGEKoI__5.e1U)P:)E-o:Q'\B;SZ]?bY+,dz!!!#QV5C+24*Kufn%Vr=SQ7R]dR<+`Vkg+6%hF`pmG$sN'[-/!O86Ts+)'Pc9hkSt\6Z^iB!brAlH,`Z)`KZSXB)H,8t!he.pFc_G5CjqZ9&j=QR>S#kS3gd^],lmZ\O9iC2$Ua]k>dmTc*%\`l5oFp!m./b@'l"`C=%CIf4SH$5I+1T76XYl79ne\P&8AFm.19.M;_Kf-9^A_MT`YK-&D'qXo&Y"_WaEO?`f1op:<-:$7n;10;+%cgX]i,f%j1'g\UF?u=fcrBlIrj(:KU_dm*0Tt-ls1/[r*cqUkih@?bUn*B;;O'q>'^Ph`p-CXB_qUq3mFef3*pAF6Ch1G3fJ?#RCqO(O'4i>+54b)]K_HU@RjE=g;FicJH9E">'B9&-)\1z+J[H9eB=1303Y`]GOOBLRi!U^'IYYVk"LuE)iD7OmuA;D8oL2Y)`QWZAW*7+iu(9T7]KCo^]!kqWPR4c5X9jXMi3O;oB+;P8uaZN%3%31\T6f.9:$\aIf/cu96&,%dEs]K&JZ#q&J5Tn)B'5$o&Rn+dD^eI(\[:Q/%upi\5WkS1*g@"U12riFYg1CCdaO<e..$4:uP0?/N8<:Rr+5!LRm&AP`'hh]FO[5fV#@SN:o3GA=T@daQYm:7R\+N$_8fM!N2S7Fbm+]"q]T@$g^0SZ>_P%6a<*G.,ZgC'X$!SN;`I0k.tN"Zpqr'URpV7utSu;"(S4_uis9(%^qaq"a*Fjb$2]Zk6q[@cFh5gXHaB*UgZ4Ni>+j8ij"'B]naK]PH+Oo/[$Tz!!#RSl07s2hqttckLd%L4*9\Z?Ii,3X/kQI5Q5>DAkf.sU7u8GSunU`,?:aCBu,B)0ekDN2Y,*OhoJuHo&S1X__J3>rqY_4g<,[2)bKpUpYC&U]e_UCB$HdldF!:;13JnZh!T,S@?u0Y\rSuS>D-O`%q.(=;:/3TXc8;h&@UNU%q!mD;??dJPFu6R*Z?Fj&>uU2m/G/>a=1t0gl-lP!ORf@34_@;K.V3h`;/,@aEhmI#WlZtPoJ"ct/_12I!>Ht\UibkLA]pAk;l36n@`?9<`CTfr4aZI"$T^!s1#j6j[@osC=u'ajaH7_4RnKM8hKZr6?`a;.z!!)XPHhOO9`^-f6A]mi;1s(W%o-G\/X]_u"/e>!`Ue$U_.omLdHh?N!ogH5a55E-#;;"KTC?hs-]9KG]=q7>=eB92m*#_`U#g9bQm(<1Fek085FlK*>WXj4H-Z':?3d'7(N]aK^@mbIX9q=E0pkPFl;lL^M(mC1so3co'8rr(A/6<:3l8>n(Jh84UIMY+eZ)ND9&`TiG'6p\iooSScF6K813Mm3l-u\r.!b=?5pO-6zzR)I1k92>H7OZ.48If9-1h7Hbc9"$'<:J]l^I=(A8[FLg/3&mEkHe)#YYcogP%17N2Hu'Ca/_n!a1XhKYp@dq%UPB\3ZX]?P-RV]^5$]PXgU1fuo+JHt/mZVl5JLm*H1U1X9!EWK=lSr0_iBb;\R'-*CM9&.HV-h"(cld&JcuO@(L+7[Oj8[4\ohf[p&[-)+sNa_Y?mW'p:pY,]@FO=83E?jS]8^jgS*)d,V:TB4f-d*o.W'\p<]L#iW8Vl-_E50d\K^56DcpT`F"gl,tg.5g2tQ+1&h1OR>*),5]q>2`Z-gKOA-fSBs60lI/j6IzJ@'(A.ePmail-fd*&qp7p?hQVZnj9cD<&WqEYdNZFZOFiom/A8OhAo.*nF1j&u^XSLMcdo:,s5:_G2XO7EjDV^$L7ttUgU:tdP>q,FoMkS^il)9eFIJBr#7%:7d-P,nLp(%4NK9-]MM_aj,qLSu1c4jdbEq5GdF$A$OEnGHp[$R3M62.!mT6Su2(q&lz!!#:Xe@pA.G4"!XSN?HAq=@`E>pUdCjnIY^Dqqk-`lU1n?bYma^]0QL=)8loXCB;7,p.X7YuTBDANEgLZ$#B`11eV0?+\ZOhhZMFm+o:_?b_%NZ_r0DlkpZYBnl\A?+Y9Z]708-JURC>0eQhICmBCHmAsEp@c5%QIXZ`K*=)WFz!!!#)=Ai$p9MA-GoR$;ufo<2j^OP/?!<<*"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[PMI8O9lRIUnso!FWgHtP`h3XTL"2jF63T."CuX+3RdNYa#eJ2ki(K_R$ahW8o/<[ldi1^n(qp1^]4?7z!!'+^cThGGe>Ub*5Q!3^p?^naQ[="'a[;gnO3[Dja,V0-6US10_NlcXNZ:(-gY4e=.ERP6;,L1k%k6[591s'PY2(1Lr/n+%hu/k#kEH-mP/^!Y*GO3s*mZb\K(Z2fHbIeT35CT,kRVLZWN*Ei5V)#\PMA-pjGjq\2V_Y@uMCDOhpu$dk043EV80`HRlLib9Iq(?pQE1il-hr`l;1.8,rViz5ScD&k`GZ6DqD-tQ-ZpUfqSJYEokGi;c+H=]m=hU[V]VUI.?3MN5C'[=*g]XeZ)]R>VRI^*:N7IZgs%Rl)10/h;(Fb6F&YNs2csp01,4%"U51rPk";6WEHR)3')Ndpac_L;J/mb(GFXK?U*qA/epNrp8hB$il$Zec^["ZOHILW2Vl(QpeEd,4qaq]D^A6oi;59-n5Ftl;BJEo1!1fgT5(.`X#A"(>gNCMZi4sp+277r6IbBO0K7djj\tK0*z!!'=Cl-lQlleh!XX2i2u.A*N9VlsC<[R>rbnn@"!Ko[69Ak!RU2f?j+0;"/\MjE%/3nCB8,6OlGYMR6V(JSb?F6CiSKb5P!Qs0I'KU`E$p$'pQX+U9GVk8F$nJ!QYo^Ut^3X&u&@nW.@/X%!#r:*:C`2OS0ArM$9gU([)C@5DV]/_r7:REiP7\NFslI8\O>ch2;bEjk$YN#!<0"q^9c:D2&=Y`!]d@s(pi'epEq:?,6IJ99ng+$+&jG`o.l3(S&B$IV,#5)=XTmZ\,NugG>YGhmG0$&3>[;':/2us!Zz!*SFSjid5fn)2$7FcHY0"gr*q8f#L;2m920d/sU`aQb'EQ8J7l[HtSSq=;A<_'[]4$lUrn#&rbN*A^moDc!9&'m2iOil$]I?h?+K>.&+eOB/JeV72Dn+EQ_kXct84Ur^H/&+(=rs4=_u?Q#u%jSAE1-<7g'l^%At-saEk^V@OC6<+-m#-*%:gpqK:A>GNK:S0gfh7C#*DRXN>1tK(//mZ&e#M^(Nbe3cBfoUO&n3?pBO"?.Hp?gW"Z2O:?5L"*2g9k_%SY8E+=trPJz!!#8"HMmQCI/Q-Ae>S<0&eYi,;_7+UR:BtJT7$3dXPTaE'CCXb'.6PrMMDZ^1::JCHIe\]m1/aMc'ulj)`MZYfZ9j[P>#^Zc(<,/l7@P`q<+C)X_T.&5("bGWa36FOc;47/mKet2K.G73B>caECt/`q5+R1euW#O))GfI,5@Om)!uIbf.hI8=9f'9oljs?Uc^FqJ,\6Fa[u2Dh5S5!@:@p!D0u<]p[dIf;l$BCP9pI11"q32\?cBBddq%(ao:b9gQ-3`r/R,YoCdbt"Ue.)ISP6)-*QGpo3Fgrpn5cl9itHd0C1']RKhUZY.V&Q#*4\>uOX!>[1Op(n-[n<.+Q,Vt(O:fBnELDe-4^'sk*$$'MpZ',E$S?:HqXj$X_$1>e=PdFDn`7e*H!XX=%o#Sc:k)j3Ai.+Kp!5>5LB7GUz5h7u8i5!0]#;9AoFSke!LCYI2"U,&7#JYNR+tP8r+sJ3\.Olbl-8$o'+X&!X.4I8;3AiZOm1m<;2E;T%aRXi^!4^O5j_I/3@(4gUII%-Ps/Y8#9K0Ahs@:X&61[Zen!Ht]p&eM:YaNS1^T=2m_ZYLZEG]QeG&cdu.TiSj(DYVTq;Zs2/%am#,N]>ugc.5#s+2`ISGUSHl6e#2:NSTSVR\8gP`WR:S=qTA(fr:#?\BD_G\'e31E/^0eLgPcnAip#\V]DM*8&']"4cd,BVmbm$-@`8[)#&-K]\oj95?!LY&h7KS]MKg2"LSQ>Grqq'3#SNh+Qn[KoO$7=4ZtYXH7>tI^U5O*Uc<2!gH8_qieABeB%l'mN]Ws"/.`b&bF'4e>IUu[I/d\Sas-N3oAHhZr6^OH.Pjia\PSJcYAi^Mo+/mc1m(=o&fPuHk#$lNNQN&o@`GBMBae5Z70?;!2%i4sn9iGh@fbXfG2W.T^i:f*7Q/XWPB[r/LlX&lK.dSsU^@'*V?S=Q5DcB>Vi_hScGi(&_CTfs_S"'8RU!X/oF.or`NWD_`jKaS\4s/TI2f*pZ4ADtaAFZsp6fWg_O5W05m)(El^$hL(WN4(&.d&0[3b'(j]!WW3#!!!!af';)'[jCM:Xi7)`W%`MfA6HBks8G&LY?\VI7LUqV]J/4,d\TTJ@I&kq',)$$+.npfR%0\:P*2P5()CZ7W$0L(eB*-D;-t4)O0(aJXFU`>;/&C=T>P>$"h5BT_Yp[jHM:mo<8"Qg[G8OW`f6HA@D_TsbBN@-Fo(ap)`MYj846#."@\Cr=qR6?BDCuTiY7WT>Z=[eGa@4$IpZFk,2hkC[kCmiAG#*5f%mhOz!!!"l-F6-DbLCoQEcQ36HM(fkSN"[LiSgXc$c1KWQ/T8nD$PtET3]\bH,Y7@;ZlafpQqeZjbq\%*?FP,ihBBg\%o=_c\rQ58kKF$%i=-uR58KaCtUR`il%do.$M5@VjkXW0B`2F0)A!'>I.q$d[HA`PEAP&[E)m]i9p$9532"oWdLs(+'P[DWD'o[0-Ao@5m*s@-2Go@KEPFCb8-(EIJ&k'pqJg2HLp8nRB89PJ)>ti)oN;Eb@'bn\JmJFe/;K(3O2?#I&QQ\HYR<\e>ZBcFaN8p)):J$+X(iFEV&A>=6c)";'IG<8UM-_&KqVf"U.&6n3DYNil$[VVObk'Z)RQGLkpjUM\`k8]8IgqIf-^b\+d:Gf0o'<+$L)?$5*F^*Zc@9'9efNR$Ui=u82ufVBQ'U8bZ434UE036.LIDk9%7mbkp6*Zc@Q=0C>`@u%%#W`P3d[r.bn14TJ#'\)8k4)8J;trnbkhoq(>m[D!0*7b5S)cJUo!p&Y98.4;a\TIkKIn5('k\(*\4t#Sf^HkK]WV(G?ghE+$S<%C9]n*\h-BmbPM"L_]sjz!2.:a^\jh=YgnmJbZ%P@P^ES'0h5pc#7_^Z%1USWGn/#Q*^"[D(.^teaL"mnQVuJcI&IqDg:Y;feZ3QCSOVntJ%6!N6Vj43+j1QQ?9BDU_Xak;kPFIF;#pn>:ql]i!Go5KD/oB'3(Pl:3Il=mfVdEuR8ULY4?P_c3&iTG0H_Lrb*=Jic^sh#o%LKefD>1+`GeP=0L>/lA1Q*MLYB*g@G.qtJ,T&,YHRETa,e1]One]r0be(j>-qrd_amHp'I35/`JXs3*r,O*m,#G1e'h6*q`=OLS"9ufz!!'gE#nnX605Sgu05m*[76=+o^\mY\Te]QD9X3Y9^(r^[+$+K*9]]ruEojZM3csR^V7`r%TuW39GAqLtqJ+cnXkZ2tCF(;SlE"T3-m,HqjR].-5-dfLg@M"I`,_8]ba:+GXY!\]6lm@*BTSNVkKTJDX1\,V>M@Enil-iHHWRjLq9\'Xi$(UIaN2?2=ONZ:o:\&-;S>ku50>7T>IW2+V^EH,tRm3i2:mbPL`lcUOkY@0fo;"[/nU6\f*f:EN?dA)Ig=-Rao-mhZWUct$7Sh:h0c)#9@=^fUG3O293[V`EO;.Ro3^..qFO$EVG*VjK;%i%I6FI+Xf5!*k!2rm=,z!!!!Wo'85k])15'5r2RHd0)omntIc2Uhh3u3/9m&@8@NZC2:h?'lR54lpY,69Z("l_'h1FisJu.E7;aUQhraZ(dQTAiOu#R%pFOdS#WB4nP$X2Jeb>>SJ56@YB_m;K0MtPRe31$Hf`7WO1hU#7__%HT*f(3bQ_Xq0@:4HBT[MjIlY\%VQ8ng9bS"epHl!Vkm"5I(Yr<>K.8(/b5SA#mo._=4`<,[EF>k.9"7;GB]@WF$=^.baH(dm5fIZgqA(/6:+"J@q1^cP#>4Wjn)b#3B:5i./n#d"pSDDE+-eI*UFjTz!!!#&US!&8ft-F,['[3WKaTDJIeD5m3_.`ld5lI;(`OE`BnOFsToBsJdTao-rBmo"4u>)QZu"F$b+\CfbNk]-S'eAW*)EUpcrZtZ;slaDne]=[F7=Ku?+hhH0BlC>iZRh+>`D4CI9:7XH"VrCI>1.BADX>Y+[86Mco\T7B.ePlHaquNNU;l^J=WlB*ZPJ7c-HgUBtH1L#n\uSu?VB*7S)a!4M%8l:U/QpJlHmespz!+[2/If$8<_R<[XDUrR/=0Gq&Rmi5N9hnHLT?"piPqH?G3TT>b((h.PV)@3-aqcTjm;/RtXum/Y51V?D9gog#KALbN-EZE'?*B5/(d^Wq,cSldon_Fjd'WZJm7(I$/2hDf9PS.9IImk09AGs3CW>:_C@s,uS*RI&M:Ib3nQFX(Ubdm-/Z7LQ3<4m`-E!S2YBCeu`/i]Y&W?I00NP*^>,Oil);qN)_d-(/J,)I&Qfc/M0]p5nr3aA7VM2$hEfG6h0@"_M&Al&b3eG[;(tO?k+,6Ct,C\p-3[1H9RXA[`kd@t'o:]?ne_Q?tIVT'Ll$M>u2B[@m^Kd.feeVVmIN>dX8nTDs/`l,fO_,9JY3]]09g/L!'HK@NE.m,b)d_s_mfoo/p<661.,U>cJ7u)kTMeAK'r]bf*0H_Lrg9k][5!Gl>SN:lVd&pZd`*]#\9:#AKq,o#&9_4tKR^\F!N>l*`6i[2ez!)iRZh3E2ghgP6i[G$S"Nm=+QYL77=Y$I;'+$Fr2lKYBsq"a*FCMupc&l?o[\?Eo:]T$@;X`*OWV0E\G5psC@"e@GD8!9qsV9YWBnM2CY.X6gS2[eA+.^);IEJ^S&3M]"2h;]'&^0Wp7Oho1AZBfe\[NQCmf[W`QAfCY#TU6680t`f,$/4`oo71,UrfOBd/"[96+>gU?M)F3dQF5KQg33Td#B\b*#le>ZCEiYR!ko$AgaVSprkC=T>i:RAPLVkp\Q%Y+02^*0\$f^%Kr\j2MQL3gAn-D9J4s1TLE807TDVW`#\9qsV9A[[_X*RE:bL%3)HT\[%aMNj#N;^\mY3$[e`@d&BsAV?c*\X]kCsVk2'$FD4*s%/IjqIM&T;$P'',kg?0,'s:cMma+<39b+@6^OE/#dJs'p^ZKOVo'jXdoZt[uJ2\1?9q<-f&:-7jMb!'+fG&\RLb:U2&<6N%qH0@?Y]G!e,VhH4KDV_m(e84CMz?UKel2br4cp?p`uDG1:b\S0g1F[ib`7uiOTs6"n2B>B#un\;tr%4cq7j"'GY#.;E41e3gtLE:a%OmtW"<$n/kNYsY8QQ*bD_2R_nIQX2/Lr3"./B@!.iDcb;]8X%Ibs*Vk2+:k#"Bi82t2gG;of42q)>IR@s2QbI9s6te.`5=Z[lr[/jY$JZ:8"nM:?$khaV9,mDIi^Xmkg6j%Bsh^+hKe:T*N;8V./9\$U$5QsMfuaE[=.rG_SX/!)`EAp@JTKU++3RoN#=Du:S'[po]SSn#)-^VpV6b,h07bI8'SY$&$8d.:AOq0-7Uk`mF8+6qtBD=GOBkYrV)(B,Q-2JBAfo$hO6WVqLSkYQ7Q/O)ADu"N>jg2_iqJrGO2umiSVc5%NX')A]ki@=u:<_b]$tRoDega^H_SYUKtHQ\aI&p.V\k.d)\186g-JG#B\pY(ES"sd@i?l2I:R[AX.7AzJ?Ra_%3+<=cr$Q-`U1u7pKX+m7pg8T'cAlIh7>J(E84ra4mLV#S,E/8$SJB>QH*(X-&%<>a[Kc]Qs,8:#/\%I(=%EY&2q%m;BQ'2L+`L*)BPe\p*Ta)jqaASAd,%6U1VKoCQ/=i0e5L8ToOJo?\L>T@FMu7Pnu9oYLthN5aY's8=&>proB*a\hKon_9F0I!\E(APqhEFqCY,^Jh/q+'f3He-?+\[i>G$<6aXp`*%$+$ElU%56f`RPAUbVYt9q=?QgRiRz^1F0:SJkl5:7j^5DBCr`Cp>XH1RrXBBh=_'HI<3j#FY"hhgQ:tMPp%9d)hJ!+*lq0p$1*)o[?UB>Z'qRhN*-XU[1_2;-Y0R@qV[/N+MlIGiXuW@LL*:^2;W5>`RMqj$OV7>1C*(k@D<^2Jq0dmGEU[1pM>tk#JH_-3*D`X&kf4\^Z1Bl'\etbjt24kFQdfn9*#D6W<%&HNZh\I<6GESL"de2/6*W/mWetmQG$tLt>s[/aT#aB?oMUMo,elq<+BR?b\d('(/$[$7+[2MWUU@He9:[KTaGb^i8X1++5timbE$DIiU&,hra3HOWJ3]9A#I`@lAMc=I$_YOVJDhu5MLmb5'aW=:9@CR^*>*'(<*X]k8[p=a;c\T?rR]ijpQ5QCQ*"hVnpB:MiMl\\(*G+!B*J;O*nkJrYD[bG[MB5MX:lJRdp*[uU1daEF)o]aiZZtU3RHdYJ5Q)EaZ.osTg_@OnC"Ucf[c.RdmnaCnpHf:c%?$0.=AS0/ROYgmiJ-!9Z<<*"!!!'W)S8tiJe#)BsDnc$ZHu5?G*nmG`QXU>u8"UfKm'.;Xnk.%lGC4Zsb.$8W4'ah\4S4Cnr*f;rmO1(+^$2D`8rkKCoD%@,kLe_"q=Edi[26RjAP,hOY$IOrmrpPu%9g/S'oQWp5_A=*^HRsrl`RilD*UrYk+V#iXUsG!?>A4qXB9K,V3`Oj1Zk8-k2rArkmF'I/[sO+i.DP(n\c(c7ueQNG3kGB;r3$(rC)V[/RQ4SHj_iKfW]Ymjr=VG(FqY_rlHO[be'IRpt$,.W`>NNH#hd79UILW[OqDt'c%Qc8FrQt*h(LR2/(>Zgu5n]%\HCq.XZ4cYg(kGRPcTUl'O28Z4q*%U.$KZ^4#laeh@((!!%OTj+nq?87%LOJ,]9.m;KZ-7XT'B9-/EVmC*nf4(6!ZRPelX?RCgN0r!^u_FJ,$o'1,aT&o?^bf^$+a^YJ+0`F`-$H2%FN[Dnl8AqeCmYN]QI(fX?ne7oi18U@;[biue<2kU1Mg!=(abnA?2'Ca`*@gU:sW'qTd?\JE+TJ*FC_)4lO/33UoZdTT]QE'NHd,:n$Sr.A+2/6+GSmNObnA,?B#t0ZNN'+I0YtMQDh(#30q>'I>Tk0K8%h1/(nA8;5?+Y8+'ta>-X(/C>*dAfgMuEM8Tj)``fU*rqIGokr3d:">hgP5.)DpZs(LN[hBi=0>(+`Q!*gKa+_o?G1ZMl#,r.l.@VU2JlVdeJs$[C=fVZ<;X"orN,5G;QBW_^HXXCe5K/FW.kK7_[R^1Tna\XnY@1GaU!,0>q9*'p0E;(Q!.\>tSTDL?k*tU@,=dcQ]5l"\Dn>21o_(:djtpu238%<4!8:G4be@ko%si.DPhpu-umrqPMY)II;%3bd$<\))Gs_[et:^OCTVo$HdY[jNs:#"Kb`FPNHp*r:L2r1LP^VaMi5++!Y6B.!j(IItolcMP[-O2O(P)O[(QE,<%PkF[6Qf#lMdBLT>u.ho_@kpJ'r-?&\h*]uF5I,g2FQKd$jM\b]ff3ZS(iUIC`;#/iZHDL$:?@;:^)7(4!4s;/X*C#"#pq`CVCY"Xp93/6&STK1OB?TgeE<>!&R>6N'1qC2,=8G[.gpjUaSN!!!!Kg\1$hj$8tmFmc^'[gR![J>IH(h;71/hb-MRlZ/QRqTIfCILYo13:,sUAfXZ(dE]2tF\)4pi`Z*s1mM)_cT*$*TbV=Bj>OtZgbI/bOZtWICo='2-_M,rE\F\!-POhP:0VJQo$NL/,!:\NbqWXpXrD;2KYcg;#dS<.R20+Y0dY?l7jDgq;IP00#rIV;o2ctb&%rM1Nbr,K,ZeWRdnhK`ao9s&C*d-N&/C&QDsil-h"gMOEqE-N5^c't'5!Vp$84S7BpLX)MV5@.3^7ZAn1r\)"\,5sGpp$1(7HKh82Np><(B5CT3SBJ7'kL-2"%m&pIK&W;Jo#YnMk^m_M*]e`GoOPa^e##jWcZI1`If9*h"'<6?hdQQc!!%Q9[Vt'[]Qs,DhY$>es*I4dl`Rk&9Q+fE3pEGZe3!-3ZhN='a,T=LUHpk4>WSupkA5^-(+n7FF-'.ef^mSF^42*ftDYs.pM\`hdU5NK3_1MuZ>%(;!cu384qX1ua`[a+8W1tj&'N:o)N?)N2>.(Z>CDjeUat)um4K;Ga>5g78SND$Jpp,M_55=B?TAG_,E@LYuje5!/hS#,ACXf9pHA6tQ#4a[;^$XO]gQ?Cq)Ae@U&n:!jLJFF'3@V;tSpP&e8/puE]ZeM+B]dU2>NubOH"co7Q(<]USio/!Ic4]f\i=W_[V]N._hSaU[DJ[!U#3RHFR7YbnVTY/?:edTp=X*=cU%=DqY.c)>uJek4ba$C8UpZu+3T0-c'pXNCXt%[V`f@u#[Z-t;Sp2Hnk?kK'75!sYX**aZ2/Ce0pu@EB^3k3l@bLA"9q+%`kg6#:868[LTtpmK>S%GAe"?W(AactO5+>3!)<@LK^-$N4nDWnp_S]W(-bB3C]An`7%m5((gnJ@\Y$@B$Ieq],O,^te3BcrS,GE!D'j/+nEI.L7b[lj6m!rr<$!.55=qWO^E?"fKQ)@U4\nKKc3HO?\qqqFF4F-Lb0k6f'p=\rNhfmt+TpH$JH+F%82^2R*jn0dR/$?B+SuZkk`Yh,X_o9V#XC,[Jn_o6F3U]=)\;_KG1qI>,oGzW)R!0C`,6RAFns.cT:Bn/B'rDIf9,VqsM)fkKdMLI!L,$^3/bm2Jq.n06KVkX&lJ7)de*nod3D%Zte-+mFntE2IQFUmA!14rq3IEIDc^fm'kl$Vk8G7jN3V/F9u+@cqck$UtB'*Al"1(IX&AUA7PlYUIRnpEmI+jX_Z=Y78i^CZd17-TL4JEnVXUWds2ld?pI1:'qU1i94l:5iulo@a,V/J$O\JnSat,q>k.p$:4*(2Md31Tq3O&91eElIEq8*F#M&8X(Y7SN(Uu_hJW:ZfKbMbEdSH`>?.`nKm:je#-"A_%2"!cT_5:]Z6U+H#d/j0"jkkA`oaCB$?'d4S6uf,o+Td&'_VM?G1Z]GJ3Od)fals-_>Q,QPPn;Rr?$OqsM(o++R_tns?Pprd(i'ZfIhIgUGK7AWB"Spl@W8VuiG<%o!HN1oP!/QJpLF\uTu>f!3*i_PUT/cj(Y?Yb2WI*[qWjd'S`ooWlXmMn=]R*ErFmb&6n;eOLX&<'4[8RPfj/))?^@r.>J?-uKGV?6s`-7HL+r^A-]Gan5&PX&gB*G]5:#b.*Y2JHJQI>TO4P!!!#g'l)I0C%@F1n%JJP]QnS(ER:@En[7lUiPRG]H0_TAp=X)N=J/-C)T.:=/+l<6^A;S"T]S2Jq+XEu9eM=cTtPdFMQ`HVG-5VkEokGSf>SP5S8>94]6;1"`6-@m7ueQ,%iI*26qPA?RYS%L[AmZQL.V4;p$9qo3HN)m%<5D!HM-Q'lp/a=de*0sqsM)b]Qs+S+-Jbth6D#nbgTjfog9`;Nf3>\"ft)&h7Ill*^.qq1=VN5,4f#H3Y.pHl0]j7=,*D1auEbrO21\GaMsT8_N_*BU]CdA$7Plmc#8o^C[%bDBPTrUhEE9q6FaH(-^/b-0(S4ET>dD/mtI7&s@j55t?;Uu^G4p9uRR8nI1ZrVH2FLL_:u=OoSk(dEIsp$1(k6Q.gsFN,22`#>4srqTf6.$O>if:RScdQ::a9rUeS29T0-:k@r_U@7))QDVi$O;SsfI>]TPkB;b(^fWeq6M*5LsS3?W%1YMc.?i@!<4dDRnG3RF$*\qTd[$$=.ObX,O5Q#Id&XAL"XBiI3jHEB"Vl3b)Ar^r5k)tKH`f1oR8%^0PZtT!gLEDh[g%*KfV*EPqe#2A+6QDBhc,rDW^%U/^O$#6Nr?iS-ldjm'k?Y<"_3nr-=gUP3d\P"#JHOB-[9'fBk+TUIcTDkncHn_?[%?guGpiXm!!'f9jKm/rMdnY@470EIY$CPE*BV0EP>4.f.2Jp%1M0>-(Fzn'ogROkn2`frS,LV3K6\V4*af_'iC]=4gs":a[b0EB'D9.l>k*Lk;r:8$j)Dt.EKIU!%gj/(R3?FcMd'.-,R`5-(KHJsPo`d6^>dAg3Id^eF=='\h*Vd$l_q/*UsB:1q<(2ia?ot.!!!"B]h^ifUe[IAam7WTO$5U7Dsho7Nh)q5hgYIi@Wri6bVAeVf+59+gU8]e')n"JYd&?:eqJg33B$c_9/"P7:O^\[(T!IfgpCcoHKrJ#!sb,kOCEDV_n/g1o0<%2q(%9Jr%l%o(i-pY?^RG4Ws;k:uCIg9bS!#'jlZldi12hrjoL-U-aeK9F-e=aB5AkFNXYObZE^]6@&#mjdTA;:O*p;m3dtWnhmV4eqHQ:JmXk3W,aZGMRCAX&dIne"fR!Y$JXl=gFidg6Qq(\pCj@E/!!!#7Y'7\c(W7-):I"f"`niK4TdABr@7,G,^&S*/a&g46[V]g3Y$LlUGMBQC@pkbEW)9><+\qh,?iKV_FFfDj2kG0C=g>ce2rC.%[S"e3kKK>-bFa:`q,p1?$u1]"o0Wt*]du]TQGljk&\hBET>'\iSU_!o]JI=H*!pr4LAnUY!%.*%(BpBkgBG.k;W/Q7cISE8e\.hg^-uPUYY5Nt:.*`u]T/>ISLDK?aEc<.ZDhQGc"K.G-Wtr0'o?WRt.&:>hh$*_Oc,*::5mIc4LEr>_&Z"0._FNTgs-_Gd,qMmFHcsYY=EQR'G_hRQ``uaKY7j!0OF3d!NVGsq,YjgV,+5VA5^!lZ@[F\`[7ZGR(Osoc]1^M\JcC8]@GZr7seEk,1'B?>DAS2Ae/hFD(=iIY$qsV:Lp6':I[OoR%3V1VeEQ$CM'C48Rc_I)AP&HA+BE]m3kB4orVo3n=bsOjR:`4+F]B#,Jnnrr2>J5?*kb$>K47gZP/#r0ZM\h.Tjj[4)NG2d(UIL4aGi4/>J*dgDTC=(*ltrh$UW2PrTAHVMYOGi#OObIobV?Bn4Qbd3[;&]5]0bs)CR0_WzliQXgo1jV7_?gl&'J2+_kg3ES^Z],(q!mST=,W*-qh1M9HfbqM-NfONBokS>[$,M8qlUJfEbs8D]4b#bZH;/5o*:H^S$06UpWW+XGJZ"1,eo=/f#c8t9mN*0[e55F9YM\i:L9q+'.Yepsoa:#j*^?rA`rpuc^PhP&X,=habJ,NHgiVW)YJ#Kg*@uGKM*I#GJb*n(iP:'.$%p3W)^3uETh=SLrOriPL1M<$F+YPf@`=3`hgG$hLE?AoK9SoMaffkUis@c=Vq+.CANQ.K8^9q==f)Dl-SGc/7LhE,3_i[?qDV:J[HGQQprN`kr"#9J,_fTVV"kQLHiF!CRRqTe5siGj;=eQ9XIX(Z_)X]r7s.L_mJM_DfsWDf].:HWX+h0-t^mB'R"$6RVhFq0J,]?c.hBC7nW=QlbEaaShgbZbq-'QYeZ6I_o#i>eVdI2fThL@[/P9bLYqi3NS3(q4>\7lGIJ0'fDdLgYDS>_oHg\FWi4soi5QCZ>_1U3P#_pMoQ^fmHd_5D34(?-an`.[)p"!>W`f.Iu`Z*Cqa\0n@m^h_e=SXu?Sp-p@Ml.^-kIHR/F*dd7Y`Kp>A:OZ4.eYW61?iN1XaFY.,[:M(AW"\%fldPa$;cQnY5`10OPOf=qe#eu;U2^]P*`d\KGiCcT)eN]XNgSt=]IXEj%0rpTlQ>(5_aV'Q;<):-4efs>b5k*4Ds=3!q=jIn__oSCI9E;e-i]mAdG:P/i\@Qc$>+8XU(r\a<\UIUB:4F-Mil-nhATE!"\T<)5(C>HID)`MXc/1_4UA?pl%ns9[)5Ji`UW/!$$p`bKVU&;3-b8)^83-46+n@]l)G3lQ]4r\h+n8.HCog9NH=:k=[n4a=^8a&*.5Q15\cTXG_HRG>&6F1:Ki\s"Po_IJ"F$IX<7>pTGn%Nu4g1?68036o?Fas;ChkpG7,B)NN5P*)TkFHg'c'gMrT+9.]_A&b$!F$`)5I`p`%Gn6A#Z1F#&6>bso[."L"V_?->.KBGK!!"LkZ=V3?FQft+m^k^]nAACd?$YOsV7tqAeNWls;sNY3Tc%EF)R-uB-P)UD>2K%;0Q7j/(N#k-nfUB^5o$U/aPnY`-C!n:$$mj\g5(3:'#6IDhr[dkHc^m;ceZ8H"F3irmU)c>9Q6("\!@9o1"U0Z%G$+1?55oZfPebcd2sgUF)ElQ!s@Im_JO4#^XihCO[Lo#TEiJ%\PKDr//&RVT(J?>]ItS9a7b6\c/r^.;pdeuiY.FLit(Nn.t-^CTJ!;QEj#K+C.*FH7;h>dOmeDu]ki1$X`rTD=-Ft*EdXE!/kBBhtu:)_?Z2X,W6GX2JfnthKq%*s3*ZEEVoIsiP?r.M0ej[Q0!:9r:.hN>%.7*q9OPN%4E[k9Mac=hg1N,<-$]Aqs?=[gpg7C9rHNQbsP8gmBg,e2fR]jP!5,a[;0,jbr$Sjn3J]"'PkjU.C$<4H"d'#.Om+_^&Iloo;cEto&]-5nEnLgK*NKG0["YrfRP.)cPqS50#%,?@V\0dKG25Uo:C$89K$hGr/Z@*ULV?)l*X=m$lG*)W#u!%7jZuW7j!/d4REHGGtG=pL]4saJ,]TN!!!!aL&9e\%jk#>o[6Ac4oP$%K*DeMhnOZu^4#nNl1VAs!<*``><$2ZK._DAQ$^>LJF@!nULPQhS":!=38sk;q$fk[lt<3pUo]T\@__<%"jT&6U;Pq,qEB[NPUY?lL5$-crGfWj8DFfW:bdgeG&TRHRjpR#HN3UaWPDS#)0`uffDe9+M:endstream +endobj +4 0 obj +<< +/Contents 8 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 7 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << +/FormXob.ef002d04d0234b03e85fc59d14b5729f 3 0 R +>> +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +5 0 obj +<< +/PageMode /UseNone /Pages 7 0 R /Type /Catalog +>> +endobj +6 0 obj +<< +/Author (anonymous) /CreationDate (D:20260120114430+09'00') /Creator (anonymous) /Keywords () /ModDate (D:20260120114430+09'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (unspecified) /Title (untitled) /Trapped /False +>> +endobj +7 0 obj +<< +/Count 1 /Kids [ 4 0 R ] /Type /Pages +>> +endobj +8 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 137 +>> +stream +Gap@DYn"W)$jCj)`VY8:G&?NG#Wf45ARJ9^CfLW<5Cb5*dS4oerZS2K"1T+?X$@Aq6S'+t"8>-#o'Apa^RT#*Ukg#jO/@&INn:4Dn''M<)XD4)k<6IrSsrjT7+q6~>endstream +endobj +xref +0 9 +0000000000 65535 f +0000000061 00000 n +0000000092 00000 n +0000000199 00000 n +0000243602 00000 n +0000243868 00000 n +0000243936 00000 n +0000244197 00000 n +0000244256 00000 n +trailer +<< +/ID +[<2464d2a8d6f6bf49e455c33bdb6a123a><2464d2a8d6f6bf49e455c33bdb6a123a>] +% ReportLab generated PDF document -- digest (opensource) + +/Info 6 0 R +/Root 5 0 R +/Size 9 +>> +startxref +244483 +%%EOF diff --git a/samples/pdf/empty.pdf b/samples/pdf/empty.pdf new file mode 100644 index 0000000..e69de29 diff --git a/samples/pdf/fake-jpg.pdf b/samples/pdf/fake-jpg.pdf new file mode 100644 index 0000000..d00e75f Binary files /dev/null and b/samples/pdf/fake-jpg.pdf differ diff --git a/samples/pdf/invalid-chars.pdf b/samples/pdf/invalid-chars.pdf new file mode 100644 index 0000000..2e7f12f Binary files /dev/null and b/samples/pdf/invalid-chars.pdf differ diff --git a/samples/pdf/issue-336-conto-economico-bialetti.pdf b/samples/pdf/issue-336-conto-economico-bialetti.pdf new file mode 100644 index 0000000..052fb8e Binary files /dev/null and b/samples/pdf/issue-336-conto-economico-bialetti.pdf differ diff --git a/samples/pdf/lorem.pdf b/samples/pdf/lorem.pdf new file mode 100644 index 0000000..eb189ec Binary files /dev/null and b/samples/pdf/lorem.pdf differ diff --git a/samples/pdf/mixed/note.png b/samples/pdf/mixed/note.png new file mode 100644 index 0000000..0dd1608 --- /dev/null +++ b/samples/pdf/mixed/note.png @@ -0,0 +1,2 @@ +PNG + diff --git a/samples/pdf/mixed/ok.pdf b/samples/pdf/mixed/ok.pdf new file mode 100644 index 0000000..ed26600 Binary files /dev/null and b/samples/pdf/mixed/ok.pdf differ diff --git a/samples/pdf/password-protected.pdf b/samples/pdf/password-protected.pdf new file mode 100644 index 0000000..a2fff31 Binary files /dev/null and b/samples/pdf/password-protected.pdf differ diff --git a/samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-01_Magazine-danish.pdf b/samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-01_Magazine-danish.pdf new file mode 100644 index 0000000..701a4a6 Binary files /dev/null and b/samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-01_Magazine-danish.pdf differ diff --git a/samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-02_Invoice.pdf b/samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-02_Invoice.pdf new file mode 100644 index 0000000..8291e4b Binary files /dev/null and b/samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-02_Invoice.pdf differ diff --git a/samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-03_AcademicAbstract.pdf b/samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-03_AcademicAbstract.pdf new file mode 100644 index 0000000..08aff48 Binary files /dev/null and b/samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-03_AcademicAbstract.pdf differ diff --git a/samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-04_Presentation.pdf b/samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-04_Presentation.pdf new file mode 100644 index 0000000..0fc56d8 --- /dev/null +++ b/samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-04_Presentation.pdf @@ -0,0 +1,18585 @@ +%PDF-1.4 % +1 0 obj +</Producer(Adobe PDF Library 15.0)/Title(DocEng 2019: PDF-Workshop, Tagged PDF slides)/Trapped/False>> +endobj +2 0 obj +</MarkInfo<>/Metadata 3 0 R/Names 4 0 R/Outlines 118 0 R/Pages 11 0 R/StructTreeRoot 127 0 R/Type/Catalog/ViewerPreferences<>>> +endobj +3 0 obj +<>stream + + + + + application/pdf + + + DocEng 2019: PDF-Workshop, Tagged PDF slides + + + + + PDF Association + + + + + PDF Association + + + 2019-12-19T19:08:10+01:00 + 2019-12-19T19:13:23+01:00 + 2019-12-19T19:13:23+01:00 + Adobe InDesign 15.0 (Macintosh) + uuid:be88e5ed-e41e-fa4a-86b8-3463d272260d + xmp.did:3a00b162-ea4a-41f6-9777-9b89241e87c5 + xmp.id:1a1c53ed-c90e-4266-a7b5-951b9ee0e362 + proof:pdf + + xmp.iid:bb62f20b-dabf-4a4d-82d5-a9544a6b5993 + xmp.did:9a5ef493-7b87-40e0-a7e4-dd0514be3a51 + xmp.did:3a00b162-ea4a-41f6-9777-9b89241e87c5 + default + + + + + converted + from application/x-indesign to application/pdf + Adobe InDesign 15.0 (Macintosh) + / + 2019-12-19T19:08:10+01:00 + + + + Adobe PDF Library 15.0 + False + 1 + + + + http://ns.adobe.com/pdf/1.3/ + pdf + Adobe PDF + + + + internal + A name object indicating whether the document has been modified to include trapping information + Trapped + Text + + + + + + http://ns.adobe.com/xap/1.0/mm/ + xmpMM + XMP Media Management + + + + internal + UUID based identifier for specific incarnation of a document + InstanceID + URI + + + internal + The common identifier for all versions and renditions of a document. + OriginalDocumentID + URI + + + internal + A reference to the original document from which this one is derived. It is a minimal reference; missing components can be assumed to be unchanged. For example, a new version might only need to specify the instance ID and version number of the previous version, or a rendition might only need to specify the instance ID and rendition class of the original. + DerivedFrom + ResourceRef + + + + + + + Identifies a portion of a document. This can be a position at which the document has been changed since the most recent event history (stEvt:changed). For a resource within an xmpMM:Ingredients list, the ResourceRef uses this type to identify both the portion of the containing document that refers to the resource, and the portion of the referenced resource that is referenced. + http://ns.adobe.com/xap/1.0/sType/Part# + stPart + Part + + + + + + http://www.aiim.org/pdfua/ns/id/ + pdfuaid + PDF/UA ID Schema + + + + internal + Part of PDF/UA standard + part + Open Choice of Integer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +endstream +endobj +4 0 obj +<> +endobj +5 0 obj +<> +endobj +6 0 obj +<>/PageWidthList<>>>>>/Resources 114 0 R/Rotate 0/StructParents 7/Tabs/S/Thumb 117 0 R/TrimBox[0 0 1920 1080]/Type/Page>> +endobj +7 0 obj +[8 0 R] +endobj +8 0 obj +<>/Border[0 0 0]/Contents<68747470733A2F2F7777772E706466612E6F72672F7265736F757263652F70646675612D696E2D612D6E75747368656C6C2F>/H/N/Rect[695.735 169.04 1348.97 131.21]/StructParent 8/Subtype/Link/Type/Annot>> +endobj +9 0 obj +<> +endobj +10 0 obj +<>stream +x\[su K;ErIѲɖC(zT$M%9wIۂA]213}\s:};կpNjWG?}{vz:8?z+vv{_#ӝ\z__syr:<\?vOWuWLWm-$Jwbxg3~}qjcMoˍc{rjzwֽX߻OϻM[66^s؄S7Ã^cozŃ%o߿ᱏ9rL@ͶlrgMx ߾#g<۝쟀/]Ya2>dvb22ƛhW׫Uo?QX0'ٲ}N^ԋU1+}=Թ5]xd՚ĺ>$:YejKB[0ߋ l{0qjrxϖoّ^  uǶ/Q{wb1xd + `C> B73v4S8`0xq&!lXN¤$*S\`vpwQ5Of.AqfHӇN UU9:f񘊲QuDEPXbc-Ҏe͘+um({jL~9't<5iAZEGPy 8hAmQf:PL:hHь0Ȧ5(v0f%ajƾ.䱳BvTM^~Wel +y;UclĀaL3M J鼕eY 6-L"{=_Z1HN"`a*#o㢪Mta:W8VR/ ̻4j Nd`[hu !%A#&dZRr d x ? zSKus`w rexMDˡ$x*r @` ܆8#pI_Paۼ<fF !&\)C"):C&TmSCz8)o +썥s'GK +,J(Bg("d>B"P<pd4}[{SCA5Ԑh09p.( 35)qPd@,qXoMFb"JM9neESŝrbX-bU|2d`mYL^w.f?}-80Jċ^B[Be `$vi&6X4u +3yðZǁ8hU"-S  +&[D"8D ,E Z%X4V¥Z Mt>JkH.z)*ʲ"5IxᬩQ-)2C}UW c4\Q"G"Dي2⓹uCR;6Ҥt}bE # l%R@Ju]@Ϟ"҂*@ӕEϠ>>PH;:[ +gi)VDrPc}?ӌl Z 5˹ɞ f&=]e;($s aX^lɳ܉P8|AyneaA|XΒet#8~Adj=H‚DVOpR"#!AKdAӈJ͂b%x$QoRND4.85K_ PH=GnuPiEgzD "s[eST31ގjY< V$211OVXB(0K-#b?uƊ[[g'z''Br9 1>E8o$7q=w H0sV vݾPfa"%+BSĊ vć5Sf>D +fn8'㼃(b޷d #Ex!)z J!z5yQe@!}R"ij0Q(جۋ{Vy5Q#b-* 3i`PFJ&FՂ5uG@,⍍bA|z.CBGi:v h=eH-Y<)%4",FHA,ʼnWa$J$4'b|-h y:B"iu 3Z \m mN.ORIԭ\}hgUd!v\z 6 9O~%}}G·It?ûu<9*ծP! 7fbL{eHhY健WSZ̳[xGE l;Y4@ RلjN7Xuxa\06$[M>X:uu]]b;vJu(x[imeMܱVGqB͊$zR`yBKYݮIvUdm;{Hr껠9\A2louh#ZP##\)m\mr-Nyr%"#p%h1Jk1 6ڬuKJ7$u:AÇGysVԮ>| 1Xf+i%6}/N3j2p;ԋGu,a lCJK@ +[Nā~F@ጞDzjkOʩ^ !=EW +UlLVb7Əb 3KԮLhY*/) DbeVJW[qM'Vi/Z٣\V J( 3$Vj $t +n +jV rpg;nPFe4#eF̕qX`[W8E$ Ixjm f.d/C!~>+d+RJ8 559[bl12ab`A0IКD-,\Z ?a%OmIHy^x"8eiHaϴ18^ڥ@^v R[1KPD5 k֚zA H%2β[⋕PEH6W(eb-D?sdZ%%Rp6gV[l8,h-9Y,q̯9+!/lEr @]AMthƽjڽ,'%;țVRYZL |:X%+|vK%@i2P&.:IΦғ,6^`a_>2+wBXθޒC/WT%w&vgblwڧu?>Ӻ>mOoݧuQoܨe6qO;~imyܨu-tm-p-ڱ4wE~_l-ڟC[;vhbηh|Zx 8*)]``fAW#تd pI)jUF蘒I8q?|XM̘lh>ΊDdݘMͫԱ}AFaS'̏|Hh|C;QÅ%&ZC. 9wݥ.e7x(庖ǁݬAjf:DJLBP'Sx^~SUn\`?_j\?|%8_%8ܵ&~pJ~s +CP>R"nKBݷUK^j|S Y RK⠟ݜ.*:*CiC3ht8kq(iYdu2:vcsET%wV3ۡ\cnAˠ%},3@b)ϒ jjB2s[g;w<1YU*ufQ}'xNV` 5ZK=|~x]BQ S9B/Fa/R ̸[7x^%@CO99W]t̥옳TJ@3bM;ċ|f@ɩۂ($t¯,py"?yeJ+Fm˙F,@?rbs8ǃ9MiX73yb"2I0Φ x $o㤋mwRڊ* &vKaDZpL*$@K7 +7~dHDQ&*F1qù]=>zxퟬĵkh"IbW!pM哧gֻgg8M'dz7WWCr/İCuA͚nG/w?}s-pzè .{rX߹XV2Ɠ;~f^^^6D5}َ"ygqSor5ǵ% hAK} eXʁ Wc1Qo nUxAvAǷhNkKrH\l)sC青3n,m4/6\؟]mnq3Rr//ۿ8[&\H0mvt]LjMa*14(O?^Cgu6k+@g/| :I~`v#*=z~;=j"pAEw'Wӳӫ;4E.-ix+k&3HI^Uo%%!fi($ԧ:dE-'!V23nM.vsD2nٟ/ oou]7GyqWJףo?vO ޤ{|I⯳~Yx ?h[eMY&dxm.ogaMv=o6ݳW8ow~uwВ +wM$.76u^=xVUOU$gcR_9mYIZx4ŇZSH4EO+Jke7V}w׻^97^SJ"?>4-+>x|v]p+W//?>:c e}r3;wn{>h + Mo|x +endstream +endobj +11 0 obj +<> +endobj +12 0 obj +<>/PageWidthList<>>>>>/Resources<>/ExtGState<>/GS1<>>>/ColorSpace<>/Properties<>>>>>/Rotate 0/StructParents 0/Tabs/S/Thumb 33 0 R/TrimBox[0 0 1920 1080]/Type/Page>> +endobj +13 0 obj +[14 0 R] +endobj +14 0 obj +<>/Border[0 0 0]/Contents<7777772E706466612E6F7267>/H/N/Rect[683.21 56.3865 777.177 36.2104]/StructParent 1/Subtype/Link/Type/Annot>> +endobj +15 0 obj +<> +endobj +16 0 obj +<>/Length 4841>>stream +x[nIv$W2ޏ`uհ= n^4`SFJH#^{/>Ȫ)5 fn@̛q޸9{ųޜ}ݜ}o7n.9?}{jBӛͳ7`L77&ĿCsɹ|m)b_tΕ)/˙Bw[skݥ)(M5ԝ/yٟQyn>TD''W~w7Y}6xɉ ξ}/>yw~oN?Oo^H;| a'N>@/O=;/WO._m컯V|w=1 P#RWfjNN f.Wwodnzz< +O^7 D*'7oa4,U/^yiwo.)D&˧|񿸉Գk,.w XCufLY is><]4lt)-gl +slq!b3HœJ>w]x7L"'\ꎸظj!r\gLws@:#,$uTL!Np@:"8"kZ7$1) ykqBw>\ITX7`${ cX(ՌiOb-/a6|vMm33 IL$ks,H*t2*2< p\1V3 @ۡ%QTl +Cu%@Zf⛂/:bj!XeHsàY5dn'fdaL }58$ǍD1CXbR4Qɑ^"ws+D=S)2*%BgVW`PhEISPqb1\6VXyKM*'kyhJˑA0A  Bº.[!I#Tk7]ؖ%Y\ +>jq M:flx\Y.!o.g% VLCך~ys/YMVp&V +`8*Fp%+26#YЏ8NèɊ`YXѯ=&[!cB%)PK*K^H~ј{],=+n@n$m-:C%.y Ve6.HgՄ2T\'3۱l\ +(qTv%| ]Q92]+,^ԉ?d][E O7@j)ZVan[>ux-Y,uw'nŸ?#OwA"T%̪wYA(p>L2my"EkT `Cc,v8x fֵZL$[.lKؗwX茶P07H|e"itӨ㛰k>—yђ$-J☂wOoʿsŶgQVe^p8%[z'($bliu8 ޴ȾPE{Pg]$'T [qA?&[Ȩ +“/D +v% L0[Ek}Ҙ\5Yte\/4tkom e(;&p u39~`fiJf>"qt/dPM&({v$FEˤlUF +! +[_VK&7,* z Wg!r\K>#Z:LK$?"y6 /ꁞe<|r~-itzG`BWtUyR ذ +sFKVA +ڴQ2ML3(ihKY'&s ugdiD]m8hFz|īFR5RP;Y[ 8h8ձ]e!6= +!jː iGn54>*JsX%(9JVBlIoK[q`B pě, ;e_Ɩg9:|Nnp}לc&AH7y+l5h j,h=mql~,ɞƋ9;D(bĝ_FtuC8,[;aKD]ъk%،CXnchau X=ݬPX2-E@@ݵ"VWj[R^o%yG._K*6JR(`%|mFYc޵R>J>QFɇ(.6JmmFFIF-d((`m|]wQ}wQ.?FmvQX5 +H8 +y4(׫jgoU4qPD鸈*z\Doxn=ˤHȶJoW:^80NJߕV }OUe-erQ8W=~{u~u+_ݯY_ݯtWu_ݯtWVtJ?e]/.~:ˠFVɍ46Z9 8m$񽧑8V?Q3#k⃨8ZgY[[,F0%OH# Q79jv z|]y㒥{+ګaBu*^Ak}(EDR?|0p\K5/3s˳*`Mit)){HeBeOso0U^%E!#N \e_q5g[f99ol9}OQi>[u;}<6hiU(pӇ6<)IJqf9vj?~'aے)EC<u}ψmgD<y9P䁎L<8"ix2'2˩_r%u.4ҽŒ@x?bxN?ןoa9KNcُ,YϺs=Y1pxF,M"C TQ'%?~S*~䋃ou9'SiKhw~ΟrW ʎc9> +endobj +18 0 obj +<> +endobj +19 0 obj +<>stream +HLT TWIa@5c3)JE=j/(" /D jtEUAEլX]Zkkwq)JZoGm;sw# 7 A2r]l3tM|jiQXU;9YΏFN{^M>CHH25:ˤNUTNTGf4BYkRK zcYSi\x3b`Q7Fu>?lҘů/4h! M&Ax'!bEeD ESD"AHƒ < ‹$|BMj" %kT2R1'6'I $7ȓ$L&I+rs+qAST}~Ldb",BV"d\ݸoCݵ=<,=~+ <+X ^a|3{7S8[_Ұ~/S>?E>_ڰ)uBxe + + +>V<;Jk-0pddv=zݪ[2zyuxuteD4FPS@7F)fox'@lP$а&@>XЄ(ID4N:"}EvG)(@ +l\ +Tz㋣ 4 &wXˈXk;Z A+ZСZ~)#j-y{A$4TBTRWrj 1G=<ZSk C5X@Zt]UFh/O+U Io`L?jۥٓaMTB[[;BDmāXJ+a+9wixD6!=c TqD/lrbv|2TB-l=zjJp +e CA.9*`1tH T>vgHms tZyxIW Qqi.ݜQ=MaR"2ں 7Zf(׮LV-xZuan<, +ǥP0FA~R"Aa~bwFʒ ୂ0ņdHaS^>v8Y vvol8%}走(c*Օiԙ:+;ZSZ +UrW?VQd;{ +qc2YCV-N||A̅P龕lކ>,j,bq)Vj-_TRZ,XsEtQШRؖb1 ւ SdTոMx={xuI/Uęn QgvJ+E3:VUB + HDJ1T(*:ŦC$A%:UOSoN:ӫs>kfgqٝywg󾿏zڦG9?̳R6#΂ vTrm ؙn>=)2[Tut6k&RZg ^ @=ը߄)~ Hgo 6׮,WUof.9)K4IQt RO)͑OoHv2iڽEy@)ɾ|wר`čnm;Dn~ӝR%îڣ +wTHHëW3Ӵ߯waarMhG5%;Cg"̂(%%v{Ş}^~[KɉA- Mjܨ 81fqg2\JԸNT;ȵw +ҶN.=pO}FԶS͹X+E_`ꀵzBEU_d ĺ|g/=Y i>8ZX,f`lt`>F'esk7tKH>E-@ .3(.b돔JO? X3-Wk HwY +!Q,5, 2>#D$fœ+H'gƺC4& +2cOw[UXPL-rn IoXT`PAh |k,( hd9Vm!b@2,ˠ +:SS@%&U[ Jj {)Z;t\l=>-M4K_a2)z,Py[5̣^?tA?߽i};6rI}[?Nb_ōQUl,,M#1!л4O-)R@3Cq7\!7*QP`A6辟F)>^tFyS<XDR$=VZoV }nۨGDTo\ޮ);sr߽ Q"wG:C? + ʬer{X `\tJu9Q'_< +M5rjhUWQbUZl oo(H\6#= +Q"]!jW!+{/z'/^-X:|۫ t=m0&C%`v +endstream +endobj +20 0 obj +<>stream +H\Ao0>*ػE(OHʼnL8ɠ>E|33:_o7Ѝ&fGsBƛ?v!47z$]ϣ?máϪyWsj؅\M ÷?0Y.Mk='oImz7^bzLӷ<ԍu8kit-3M?4_u̪/fxNWxM^rjTԖЖl,d+YG0{eˢeM5-jZִiYǢ}"?"ݐ7aO{9r1C.G=8xjZVjZVjeҿpO{""" \\\\\\o'v2"ҧ§ҧ§ҧ§ҧ§ҧ§ҧ§[aoӆqLzs1tdwLR0 +endstream +endobj +21 0 obj +<> +endobj +22 0 obj +<> +endobj +23 0 obj +<>stream +HlUyPWFViUڝȢ5nt1+JB Ȍ Q֠E)E]/@C. +BA-Wọ*cjkwy}# IR5>LZdHXk2:M@GCFgM24 2&ߚnG[BA᝽F4&)R'b5(g˄D]\fAk4m6D]Fo$4/obsC|Ic'&֘dH4u /74 4( GVBXN "daOF +b-!Zfʤ$D̘ MDF <>s O߫Tͪa**Io0 +ƛc^XVVތᙝdW5RXp}pL*vPCOh*rBh+g~yhUy^ ^2w[v56Y#OD^@E.O:Dumy3|θ%3MQ{A~v=@@ dzzQA%u$, l|,ur|{Pi'gFqpTrY4//S^^;6;95W +Iu~7d}vƅumXym叮3^;f[ǃ+8 _DM9~TGS3W]׀,zzU}`0k7֝ )5 6oks Rx^fq( Ʃ꼃f?>TWm[EiCC~OTL/yӇ +sEsW9y{tKqZT>ÚyIuk~lEiç"khc`R^uZ> +V!EZl +ml^s.LU$6kEkp"kՈ['XW=x-#ѣm۳vQ9ndp!ᒸrvݠgBF4wܹwEK_c)0v6d2>X HՏX4ZT0QPyHk߹S8Wkce`w.ڙxL+/ +@+'h,PN캌A\ި?TC +SQQrLwwȝ@ ?o5L9_:k ++#{3\vܖez(gd3~;J Q7* +EE/UeTַK@ +OwŖce@/*vM}p9X;!SʳO?oݺgx0MgHoG'mhj܁Q= +KKI\c|ǘnyfCIEq?%fSܖA+4W1!Ɣp!0x~1hRk5+qHA$PJ8Ocab ~bQl7bj+j]C+W" yydH-[߹Vb~#%٘7p~ۜ-'#S2|g-o>Ӏ4 Sn^G܆$߬9~;6&S߫2nj]퇷-[y\xv|i_ƫ~{l~3X-y;Cwn`#`Y3kY7~7ݘwn[vά Yqk2~!7{ ƭ?~pR~[>qlŪbۧm;w:܂xn\9O14Yby +endstream +endobj +24 0 obj +<>stream +H\j0 ~ +C_#%m!nJX㤇t0Cؒ>,GU}m7l;kzy^K t!>+\_ +endstream +endobj +25 0 obj +<> +endobj +26 0 obj +<> +endobj +27 0 obj +<> +endobj +28 0 obj +<>stream +HLT PWf{ L5$ E4  baVdZ7R*eĬ"od#*- øhRU]};sy$IB#׭[6+JiHFS3ڤab +nd4rn(fS\b\YPCOBRݞoq}ģcueeY5lJ”)?LF, ߂6}O1m4'\x}?Jgt!/ +qm} +)ȥ?DѾZJ9Q-iB9)d>-6AL;tu9 l]ŷ!NyOh)*C_(O1oj|gi/Z`Gǐ /ȇG8(Q_jDWZ3 zLEpƨͺ*yZ88lz( zvJQ <^_RVP[#O6+w5\5j/Sqg4/g5)ҮV*Vo>UFjmC]l$0y~g.h<\Ay7$ЍK+F@Nj\ ͉:o:9ҍBh-b[i %9LC2BӈD/KӜ3^̲-vQ71cYl9,|F?G}AUAy4s|t83/7 muogɃh4wyvxDlיky4ܾ$vxe*̱M\ixtipҋD*J_--Z6G͈PUsNsCз<b5X%c1wL3ˣ3| +JJF!fF #MR|] +>W2vO+p;:c2d[a#՗W(/ex}sAVck2s>~2tJOM̊W-wL_QO%o+HM>'?x&w BUD>w幺 +mKd+ 6nV +l8cJ/(crBnr֑<@wC"*cXC;ĝ]PK\<`DnD@JP v]0F0z(MGUaJRU;~=Kdl,3YBpL7Z_+]čl' =l^0Hj^z+dY {NGі?gn_[z&([-fZ;`m<8(3yM ҏ>UNO-@4 +LLC]:Q:5V\;>靠ZA%^,z1 ;U45/<(={TIc)NGu`;0TUAa(C)&{Ǒ12^`δ2ePD|/;Ls9dol +u`Ox5m` K=ڶghX A '!hYzBR8m6ԠA_4H>jB/|zn$hq )hiRyM[FO@S\U_Fr&GK霳iX*+Oho0\Z%T!.4x>Hq=Ïה9)Yl課оr( VE܉eo%|' +#$dBi!AF*zgN\RcPʲ# %f!kbT@iב)h)A9a@K[Lm@ARk!hZ@; 4ukф38b?)SQ;^~`LlOjv sz>O$VIZ,H?'^(oX +m?ߍ +&m Ϋg9<z.]O0j%GCS|0Pʍd _ý~?z#Axv fKW.c{1ˁ BH% 1b1)I+7AX"[$N=CRD,l5b9=rﰄMjJrq3N"BiT=Hdr}oA\#P +E`]VC@1=# *BBwH-u j p?Xg?1JdEZ:FUFlJZO,0| r5>VHd¥ʄ̌_e2wKƽ,)bbeXC30? Hș|OViz: D 1@=o2$B0t1mrFb$[|E6Ň[}DRcI)1CࣩiO`|_e_ڏHYX >x` 3L&j֕ߤG|Xh6DB ik +񑚌{-[ WqHêۈ;ȟQʛtoM D`Gg?U &w9?b0 06(loJR{<89MPy5=zwsRFHԝ &Ld6FS*W`%~>&]}e2:6DѡWuVJkz8yzq)U]ihՈ^G| /6˸M8Ri/ aZ:^Y[zOԡW%pHfo+v])r va:@cZu2FV:o>lPF74 w_(Ms)2j88Ӌ$tƙ5n df0ifX+YT("8R@+↘Cwl_|K彻˻>?*~~DP<8_BMꖭ¤ۻ!68wmǃF{['# 1<~vqesf%>ZniK|7 ]O-BR&7,iGK)rU._7[x}FRwO$ "h\B5A=10O1s Ǩp _"`:xt`] d6!c>v~JPNt^e혈1<| -9y6=؇@2ZLPհ#֞əх;g?>[@UZ(M~͢h"Y9~XnI49f7yq4(WSVe@̈́lDJ!hTJ)+)h9x䔦B{&:iH?qpe|uY\R,iA)4#Uu`⯬!Px$j$iIMYj4yaw`8b.8&~^h/QU=kwZTkWDS;̉evL`[Zz"I})[D$1 1,S5Kih<١mQ-g YӋ)C>y`]PpVD;;)2,ށ +; 7I;!\ҊҎR8W_, O +=h!7CP7!;P;Ƹ*BLv7xaΌ ^CVr[ ~?O]mmɭ3Zh b3M>stream +H\۪0}\}?Z=A/tajڋd$L}50s׷cc)\> vk=$i||ާp=[R&oާiުv +Imlks|71 5jepR_k0Y`v%Jؕ+aWgGggGOOGOOGOOGOOGOOGOOGGe'NY,e"KRf)T_Y,e'N(:Q#;R(|nGяE?x?OOOOOE6 +Ky^GTfYk>3h_72sohy+]>w68 O +endstream +endobj +30 0 obj +[/ICCBased 31 0 R] +endobj +31 0 obj +<>stream +HyTSwoɞc [5laQIBHADED2mtFOE.c}08׎8GNg9w߽'0 ֠Jb  + 2y.-;!KZ ^i"L0- @8(r;q7Ly&Qq4j|9 +V)gB0iW8#8wթ8_٥ʨQQj@&A)/g>'Kt;\ ӥ$պFZUn(4T%)뫔0C&Zi8bxEB;Pӓ̹A om?W= +x-[0}y)7ta>jT7@tܛ`q2ʀ&6ZLĄ?_yxg)˔zçLU*uSkSeO4?׸c. R ߁-25 S>ӣVd`rn~Y&+`;A4 A9=-tl`;~p Gp| [`L`< "A YA+Cb(R,*T2B- +ꇆnQt}MA0alSx k&^>0|>_',G!"F$H:R!zFQd?r 9\A&G rQ hE]a4zBgE#H *B=0HIpp0MxJ$D1D, VĭKĻYdE"EI2EBGt4MzNr!YK ?%_&#(0J:EAiQ(()ӔWT6U@P+!~mD eԴ!hӦh/']B/ҏӿ?a0nhF!X8܌kc&5S6lIa2cKMA!E#ƒdV(kel }}Cq9 +N')].uJr + wG xR^[oƜchg`>b$*~ :Eb~,m,-ݖ,Y¬*6X[ݱF=3뭷Y~dó ti zf6~`{v.Ng#{}}jc1X6fm;'_9 r:8q:˜O:ϸ8uJqnv=MmR 4 +n3ܣkGݯz=[==<=GTB(/S,]6*-W:#7*e^YDY}UjAyT`#D="b{ų+ʯ:!kJ4Gmt}uC%K7YVfFY .=b?SƕƩȺy چ k5%4m7lqlioZlG+Zz͹mzy]?uuw|"űNwW&e֥ﺱ*|j5kyݭǯg^ykEklD_p߶7Dmo꿻1ml{Mś nLl<9O[$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! +zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km +endstream +endobj +32 0 obj +<>stream + + + + + application/pdf + + + PDFA Logo 2018 Print + + + 2018-09-26T15:46:17+02:00 + 2018-09-26T15:46:17+02:00 + 2018-09-26T15:46:17+02:00 + Adobe Illustrator CS6 (Macintosh) + uuid:a264ed8f-8b0b-324e-a007-84e968484cc3 + xmp.did:02801174072068118083968AFD8C127C + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + 1 + + uuid:3ffc5838-4114-fc4d-bede-52091bd12227 + xmp.did:F87F117407206811822AA6FB8002C0A5 + uuid:5D20892493BFDB11914A8590D31508C8 + 1 + proof:pdf + + + + + saved + xmp.iid:F77F117407206811822AA6FB8002C0A5 + 2018-09-26T13:01:29+02:00 + Adobe Illustrator CS6 (Macintosh) + / + + + saved + xmp.iid:02801174072068118083968AFD8C127C + 2018-09-26T15:46:12+02:00 + Adobe Illustrator CS6 (Macintosh) + / + + + + Print + Document + False + False + 1 + + 800.000000 + 500.000000 + Pixels + + + + Cyan + Magenta + Yellow + Black + + + + + + Standard-Farbfeldgruppe + 0 + + + + Adobe PDF library 10.01 + False + PDF/X-4 + PDF/X-4 + + + + +endstream +endobj +33 0 obj +<>stream +8;Z\u_0*X<%#4e-iaY_dKO\(t1dXsuhDMm"enMoBj-mJL,LO$[kEuR2Vbb1HB)[9@ +^40OHc'IBcLHVjDN&g5h%rYrI@HQ3J`9Fg$ZL90fQq`3lGXuadYf0GAaZ/$s +?:$0m(G*t6;k\=Ud=5n4[bMB[&c0QK9L-F4E]A6a2e5MEkd%ti?9j]S6Ra8@aCBB) +:`a9VWkkm%,lXsE<:/4DeTsG(?5?KQipe#HHaFI?\4iEK:anJihS_eic$Zri4-7+(Kc"pr=VcF"ibI160Y$,5d~> +endstream +endobj +34 0 obj +[/Indexed/DeviceRGB 255 35 0 R] +endobj +35 0 obj +<>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> +endstream +endobj +36 0 obj +<>/PageWidthList<>>>>>/Resources<>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/Rotate 0/StructParents 2/Tabs/S/Thumb 51 0 R/TrimBox[0 0 1920 1080]/Type/Page>> +endobj +37 0 obj +[38 0 R 40 0 R 42 0 R 44 0 R] +endobj +38 0 obj +<>/Border[0 0 0]/Contents/H/N/Rect[340 748.4 1238.59 685.35]/StructParent 3/Subtype/Link/Type/Annot>> +endobj +39 0 obj +<> +endobj +40 0 obj +<>/Border[0 0 0]/H/N/Rect[340 663.4 887.593 600.35]/StructParent 4/Subtype/Link/Type/Annot/Contents<416476616E7461676573206F662054616767656420504446>>> +endobj +41 0 obj +<> +endobj +42 0 obj +<>/Border[0 0 0]/H/N/Rect[340 578.4 783.294 515.35]/StructParent 5/Subtype/Link/Type/Annot/Contents<467574757265206F662054616767656420504446>>> +endobj +43 0 obj +<> +endobj +44 0 obj +<>/Border[0 0 0]/H/N/Rect[340 493.4 1090.89 430.35]/StructParent 6/Subtype/Link/Type/Annot/Contents<486F7720746F2067657420546167676564202F2061636365737369626C65205044463F>>> +endobj +45 0 obj +<> +endobj +46 0 obj +<>stream +HWێ]G}_яO/(/F̌=h.g,gUόDBAȲuv_ZUt}n>>W ?ݭ/_e+ίn? .%Ei wz|[}p>=;uxÃ;z{p1>vOBgbŭ6|> k?r[vN{v/ܛ:ξp3|skgQzoTZs5:_{hq}s}v8[/ӏ.~t(kgu>\,t_} oL|=`zr?<1rq3nxu!Hki3LsD\kHZ6a%gڎazy.xsx5h1fbǰR%$>iX5"dm ?vGkJ+ZA#v^15Sqp<(<-t eL1x+cwX\.8/+ i]] C<&Γz[nizX'53L*s Z  4E`mCIdЁdN;XJH%Gb4 n@jfX*.Htmݪ ĜڮNѰ#:oaU7Oc[`2]/N1n7ĎSb7i0)s Oz|BTq9Q:e7́TtJp@ЍNv t 7\ QW&{M`Ρb[k7kf{qzĶHo#ExB4(nŲq MJ=ҘLMzIbv-8| |s`6c#5\.g37\l$$h:-w]+L xNeFߠU uȏ^ jD鸆q">QX٭#4$ Le X;Zi<3DA-r*j%4 )hvJ=*hRB+E`Ye]F+L&Q*LW%|ɕ^:v1R(r6W `8hvDu`dr iHXvIAiU#>O&Ad>Z>+T-^$g62g&R)> ?u:f%Q3C᭲7 jO2M2ـ䊖&┬b7>]=6PؚY +q`[ZyE)xl]'UGɬ._UĪ<‍XYLV$!'|)7`LLzLBs7!`M1PIS nއSpnOe8LAU"|#α\p=\F04-}Py4jm`orLc[ç@@G;jg a{4*q<ۢc\lx6->\F*cVmYsZg7}i(] +5o˄4>yp'>-NR6:Te{i|,j-1v<I7AuxF+UvsjM̰A }]ӊۛ xB- $8a3tzߤ8v/۝h@x:[Ͳ +CXB_z3aaw=b0h>xHO[- Z23:EAlAJVY!t.<{,Za4VWnkH ^Ǜq`i)Y,/MrNU I]wa,MwWUWs*ҍVlUJ1x VyD> +rRB, +Bef)ƢP&n}R}PDTJ2{, +8U5@uSvP'yzjUb i *-KE9D)WXo^+9S֋ cE+f@b-Qc1ٓF͂MXQHR!*K¶[㥩e|M3h/"Y:wXi7 hQG PJv i1 +"qN(-1C$T4!QYڵTdj-/Dȫ<(,,>Āj Jِ^Qu|Cځ;R.:a'Q|i6ge*ҖzjW‹N>;=]H]l.;X5ow>@q's^S\.C1=m)E݁`O-v0s"MrD*̠[Rbz+4] ): +4\jjEi$34ܶQ +QGF)Ho,t8A^ۖsCdFBV MF|'9^˔~9 @> +Au*~;;v5Q/I}&bSe8ǜ@s]>jG,'m$lPcoxz2G\(RID6X99A R)2J[|㪈"47#RUD@!eHpG (r|"q8V!ɭ8ap$2^?Ȱm Z%i`HN 7C߅`ItLBF4\oT/B8T{"^ IRD8GJ7)B22B,.n0iьf)W@A6^ToS-%-&ٌAX?^Y +8%Ԇ%KF\YOwNܒoZ S||t&hA0 % l̊xm¨ F^10xFAJJW Ugw4)KPϗh[vvc+d@?w2XQ[=MC@6ڰlm 5 +j%9k^OT-.Ya5U!#cD( UnjG9PMqɐHqY!uXFm]([vIoH# $ynݭ7J}yI%t.vуH2”UxTvHTch/4ľ'>ߓ B$PRN%R!ۄJz8PaAtK (ڰRDKi;>+ +P F5!@UM, y?P(,U +C3{T* أmi"=;Fآ#Z_JOV 򍫪IAtL ^G--Jp(`g(Yt2'ҤҞǘ(vju; Od}y‘ѕ`t9ءehFM׉+T7y1u1 63=,(P(})TK(3W9EoJOow^xZ]hch]UHMPr@.1CmRYenjzK 0Sd&!8GJTE˚5e*Z9B&fRбЈr^ +X`I^Ty7ZlwM?׃7_?Wvy8^fu~q^lnCPs fغ0u|Ouo?xrv=fI-iAvjq`k<=޼|5[wT a*_z#O=5_6ʩLVMtO~Z]?O/Sr܏op~ wqcs0lz?gvRuۨfQg-ubDpOfo?l>o-ۊy hթԦ}}}buX]%P3Y RcЇWeRX DF]6|;鷇'`ɯG:ٝwG" +s)6g.L3&OOIC^ӐMC;djog7ۛF C">h7seJ2S`Tkf{)r +endstream +endobj +47 0 obj +<> +endobj +48 0 obj +<> +endobj +49 0 obj +<> +endobj +50 0 obj +<>stream + + + + + application/pdf + + + PDFA Logo 2018 Print + + + 2018-09-26T15:46:17+02:00 + 2018-09-26T15:46:17+02:00 + 2018-09-26T15:46:17+02:00 + Adobe Illustrator CS6 (Macintosh) + uuid:a264ed8f-8b0b-324e-a007-84e968484cc3 + xmp.did:02801174072068118083968AFD8C127C + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + 1 + + uuid:3ffc5838-4114-fc4d-bede-52091bd12227 + xmp.did:F87F117407206811822AA6FB8002C0A5 + uuid:5D20892493BFDB11914A8590D31508C8 + 1 + proof:pdf + + + + + saved + xmp.iid:F77F117407206811822AA6FB8002C0A5 + 2018-09-26T13:01:29+02:00 + Adobe Illustrator CS6 (Macintosh) + / + + + saved + xmp.iid:02801174072068118083968AFD8C127C + 2018-09-26T15:46:12+02:00 + Adobe Illustrator CS6 (Macintosh) + / + + + + Print + Document + False + False + 1 + + 800.000000 + 500.000000 + Pixels + + + + Cyan + Magenta + Yellow + Black + + + + + + Standard-Farbfeldgruppe + 0 + + + + Adobe PDF library 10.01 + False + PDF/X-4 + PDF/X-4 + + + + +endstream +endobj +51 0 obj +<>stream +8;Z\u9bN%3%#&aD=h7cD2_i(VpSeRoV\WC?4Wl&;2*>?R/D'3o0.1T4Q!%_pgO=p\h!_n7d0?\(L0B&ju +F$T9r8/TrEiO=,>faN2>l2kQFD6NHL4dNTRJT"T`j_#a`)N>,8r9t2$S\jUT/PS<@ +>Q1s9>;U3LCkZ<4niPU7mb$Tc8u5G=%uAkD8dL,J7&X'SPs+/4\0>B??&Z[W +endstream +endobj +52 0 obj +<>/PageWidthList<>>>>>/Resources 54 0 R/Rotate 0/StructParents 9/Tabs/S/Thumb 62 0 R/TrimBox[0 0 1920 1080]/Type/Page>> +endobj +53 0 obj +<>stream +x\n%Gv\^Ṽh@%` !^HbYM,i[9FUn-AbFDf w8w|ͳϮo/^Nog7>;ٗ峯|{ˮ_wgo}No6[9<n8<;3N^n WLWm-$JwjW<5=w.߿9vlvgcй{lٽlObhwlNv鮎K̸ÍWׯߞ/>bIϯ~ۜj 8BM&Ug}IزͶlrgM }G~y؝ϰg/>7d}8WCl=dqe7vͿl.7ɶk•?lL5>ȖC>hmwjû^mBO1 `Sz_kroq5k +6pG˲'AM$N%} S>U,;6[2|:{pʈ6fס{Ml֘|st%x.;8 /C[.85;OB=ϙrD_˸(v^]+pO^)nq"dK mEgq$S +L+ζ$n:%86|b19NG_c<!cÕkތ}L,(;)/74`0yq&AlhN$$"AS\`uPwQ%MV.AvfCʻpӇNUQ9:jXQqG@CPHXbc-RaX+um*{JT~&daB֮%% +t`QL wa1tlUL t4*]Et!B"8#CgmD^P@'I[Ptm @wDց>vc@{!/j 4#m~υd +GqR\gZcb-s>`H 51"YX5}rĺDNL".t&"`,Lm0.cGΌr8AP<5d[N 7 恠uFn f:A cքJ$/"4Mr(š{S.,iGMOc#PTs_ˍ݅8c,;Wjw`t8aPsgZyL;ܤjT,I:aL^0Vv ZH0C8a0%QBy2Kp#gVqD2#E0V\AgcgZ0%D"PKM ;kjTiKt#Ae>˩E+SŇNUa"!OdEЍ4)iJl[ U˹ʞ3BLĞ[&͢9:Kh-YDOɜD:Ax 6,gk TĢ_zpE ak2` +&%zkDiq^v8;m@ %bt]#HieB('Gp)D%S0iD%fA<7wNф4N.p;%K_ PH>E=GnuR(iEgzD "[%SD3ߎpY&bYڸBwr;ങE I<:uh4a+hB[k$Q5XX|"؈/Ħ2t䦡aGLHS%̓TBIcH/bdԌR^X&IB$@O3pҞ({قĀ *$rӺnY+ ǓжAtq+ b`1Yx'CMB0c'p1?yn~?͏d~__O>0T^AO}OS?y_SR +%ƨ|va"MBqqÞ)0=n$U y`dN}4vFM,̆N]V6RP\n02•nN&2?=FRDPڐzLi(&Wo)EQZ I1/ q JVe-7J)9̂JuI BbR^rBS9bY]x[S7ɓ~!pJQ2!_< kq )/EV +L,H3Z|4U?IzGX\$=EV +UlLCz+GQ D3Aj8y&ʬ%aX*f)Jj+,ZtlL}m2KgYB!tdx?.)GVm(%+X ԬpD`g;8n3Wͯ2U#JθJZJE8XUM;N?@ iOJ7ctufHP񭂇 +VtVdz-JԑT!CËE@,;y͌F&,IDҍE;c(s +l?^n TF ~i_:&E^3 ۜ($tN·,p y"_r+˔2N|g=/4?X/6t)gS֍ "{ckis1 N$LgSg}s̶к[[ClEmzRq28z + {bfS)03!K?a3Ѵ|S<ݮ~>0{O~k!אD .ĮCK=_>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> +endobj +55 0 obj +<> +endobj +56 0 obj +<> +endobj +57 0 obj +<> +endobj +58 0 obj +<>stream +H$KAw#7HO-T&! +?6!:#.̮佃\:K/AAKBxtV5DSyl_%A""J6AAV9 -7sp>stream +H\j >w[- 9MF'ШL!o]~KASf|pk"8 Z|mdx׌K(kgG< +Fɇ_rRCz1,bޱ~b'UFk2ɄEpi\Z`ptu~]{ez:7)SfWnD*q|RLT9Wd&q +endstream +endobj +60 0 obj +<> +endobj +61 0 obj +<>stream + + + + + application/pdf + + + PDFA Logo 2018 Print + + + 2018-09-26T15:46:17+02:00 + 2018-09-26T15:46:17+02:00 + 2018-09-26T15:46:17+02:00 + Adobe Illustrator CS6 (Macintosh) + uuid:a264ed8f-8b0b-324e-a007-84e968484cc3 + xmp.did:02801174072068118083968AFD8C127C + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + 1 + + uuid:3ffc5838-4114-fc4d-bede-52091bd12227 + xmp.did:F87F117407206811822AA6FB8002C0A5 + uuid:5D20892493BFDB11914A8590D31508C8 + 1 + proof:pdf + + + + + saved + xmp.iid:F77F117407206811822AA6FB8002C0A5 + 2018-09-26T13:01:29+02:00 + Adobe Illustrator CS6 (Macintosh) + / + + + saved + xmp.iid:02801174072068118083968AFD8C127C + 2018-09-26T15:46:12+02:00 + Adobe Illustrator CS6 (Macintosh) + / + + + + Print + Document + False + False + 1 + + 800.000000 + 500.000000 + Pixels + + + + Cyan + Magenta + Yellow + Black + + + + + + Standard-Farbfeldgruppe + 0 + + + + Adobe PDF library 10.01 + False + PDF/X-4 + PDF/X-4 + + + + +endstream +endobj +62 0 obj +<>stream +8;Z\74*&7^%"7;qb>`g#b$67O#cVd.-J(eR95pF=O?belY-W`tn&CDC+2dl5ckFLW +59AZf5;C-ObN%GTcbL3ebi@O2kp9IH7`Lo$St7OTl`LgGCBdo%-h>W[94K8[kFC,@ +FLpW4+(3X!:`q08d5k1-793:(*-[c,t#^LJ\[+ +LQlF/U'O]CMbt:t^&p,mo,P:G\8U(C.0f$bPa?D.9"f'L_bKp\_5O.0.1Y6;nOMVY +G&ZR1^-HZPqrEAjF?N'6jU\_(H3n[K<1tf?[;o:;TQ(e4NNgtdeHhmGL(K?MkeNcu9W5)$7 +endstream +endobj +63 0 obj +<>/PageWidthList<>>>>>/Resources 65 0 R/Rotate 0/StructParents 10/Tabs/S/Thumb 72 0 R/TrimBox[0 0 1920 1080]/Type/Page>> +endobj +64 0 obj +<>stream +x\ruKJqJ%+L/$ A.I0 vI A]wL|gxwNN~<˷WG?:;zrՋˋ~{ũ_<={_[6<|}hhΆN.?}s8xكաu5fGz/Xp.@ǾDϥсqǒy) S.Ycp$\)Gư̋T-rZscAL #Xbhw&tLǑt9O9>9r=K;>|b8IkiB_Ń~ObApe4dSr@@7qΉ&{ó?5?,^I0fl&(5{?;?>' ; ڈ8av^] pǃ*Ah| {V3VTxlE٨A"}!s(i|,1ALymiGf앆=5& /AM?lFS*; ymP9h-L΢@Tl;ԋOY aI^oRHqX '; (h!TSJ)tV<{H CLWI}svt NCK23n#2R$$~=)9@jk= f&=][e;($s aX^ɳOpR!#!AKdAӌJ͂b%x$QoRND4/.p;5K_ P>H=GuQidzD "2{eS]T31ގjY< V$219OVXB(0K=#b?uƊ[[WЛf'0'Br9 1>E8o$7⍻ʁ:E,&]G/ԦU` ʽЯ,w@T4"4yDhm]$/aET ®BYN 渞 3X5JQ0iHʤ^+8i^C^g0 O,h_.l0L! +>6➪klFa|LdqvisJ'ELFa䄭 }'F`Mcxc#X˔Q9!;ZOR j4OJ &"9Rs~P;K}qU|X' I,>Ig7&s^6nz[}N#@81| .6bZ[FYywդii\zf=!RO +,Oh)+;9IWEoS)7C@"S?͡2HueC@}Ki(j-B "p$cIy"Z֧Ǖ's6KEp?[J)(m䦢򘗂ؼrkz6=E:Gw,(|aQ^`F &߽$tN%^C{L"EJzIiM){fTzΓo /+d+RJ8 55\^ZvL4X4 ڐHESųqK\Ks!6Ұ-=is0\~Q4⛣14Lcȫ`َ Zj+3f CCdZSC/DP",Mf/_*G +t\>HH(Z&D=?ȴKJ6l -J l4y:ZKNV}ku GYub4 ᵬ^]Hr2]U@޴~J ƝJ@dQt9%+wK%@i2P&v|%A:m֏@z2vIF2{x׎_>maeBc/֭S +sWڽrޫO>I֯Oէ>Tj}|g6׮QomѧO>6GynԺEhOmц{h_DZyӢgCk-ڼnҡ +VlVdy1J4Vj)CZӋE@,ْ;y͌FHDԺJGޗd=L2:| qQ[t<ݜŠ\[f78p<9SԞ܌X +zJ(zx}fܵ{=^p軮Lթ@Ğ{UzQ5!Ü{HSx`[EILEp쉛NcUzkAj,7fR9ts^嫙ńkqNL"`6>m#.&wcm؟'gm ×n'U8A.aW[0 +dc,1Yr2dsmj/n^v[y5FnMY{ԉU!^׆o +߯i*u] J +N*WÇU}+R N[ V {Z +< <KYx^|q;5쾫R\W rMjZUtPa5UJ $EAkY SIJ$SL/YI;ͥ5ǻJafա1e>HL SAZx7̚6پJ=c8#U$ c͢N*NV` 5ZK󙓥ܻeܦ/oX*#$b]jکuhqN>+ܮ}u:Q:,h=FӾtLŋf@W3QH]oY0D\5W)ew=/4`<~/6 )gS͋L"G^ii[&LE)ނ(ͫ9i-VP[b[`C\8?]1ɪtM,@j #V&n]"D}'P1/:-Tc^v{loC\ &q$XCgNF~;+< w~˫W-9 1lkP]Ps?<w_:^=9?>o:-paAc` osXs>s'Ke_)鋓C"2= ~l85M`wd{ :KD+v_;8Cb+r s*Sqb1ZӠY?._Sۃφ:n_~Hu)wYlbA@|ﲣ:FlunիĤh<tƺYgj24>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> +endobj +66 0 obj +<> +endobj +67 0 obj +<> +endobj +68 0 obj +<>stream +H|T PSWp(던Luu}TպV`QDAGHb]EQ)VUD* aw-<ֺti/{'ؙgs2n ˲~갠߄6tZ}dƋ +v8ΛwnvN?7#ЌH?8žjU*lҴ!Aoթ³ͺt"}d4f]*Y2'TdnNf0 1 fS.}YFU.ˌg)Tf:y bBL0Kp&Y0,f*(dah&"2֖f03??]41ى|}q̔K{YwbQ9z͸C8x +{J'9%c0'"'ddԢ)D> (n>CY@/&w+0HJ~W+.fyZ0wE-8,G\w$T`D4(2R I;<0li"9_; Ke>؁y2rp$!8=d Kd:-46p Cb38Ď%|Ԑu]4Tv Ň./ɸ8>[=8.E-=cd)jƠ=0٪wDL" V[n\=6<~HIXz{WY=To#F1[xyDa TSIX!>dT ̦0L| DεxB˰zMV}%FsNDUlo'UBEt)F9y`R +>4Ƽd>˦mL|ֺ%N ~°@G\{ic˞e[gN Ty;NƓC1jr{- %wf'U"-$58{3'wSȳd!VomgVdEawB1g\rqYkRM"jv_l#k +G0b%RXCPhL>Z!JCLuȲM)Ys|8ѬZYfmftAY6[ƲӂژۤUa#8"5_ʟj!,X2,& $ \VvƱlۖ-Y2,}/>_pHjrl;ly9 >{@n.G8_M-1|gwREzn| P˕vR쏶 ,!M_|ضl馷**{L޵hM&LٴP7Wbiªh!s +oXj:D_['z$DOXwޤd %> ~a`Cp{Y]-L6H1zDw*x/h/-?9@ (jziRJ#u8h?;Cx_ͨ\Oq(fREwj)V<-Ќ.)ڽD\kM՚xW~WDam-ݖL+KOSNͮVT$T7W(ϜAu +ՊAZ.miV|uLrxT6y-]!Uʲ-ZPVv*K*ׇ'BĀ 3 c1l4flwn{cZ`$ @_Wb!xnݓλOg2H7O+ͪR\ M=ZwJ=VT. vLuIm͗J@Y_O^}'E5"eIZay^yuwvO`Gt} +endstream +endobj +69 0 obj +<>stream +H\j0 ~ +CIR +9u{V'='YI[7,2y9"t L,S"Ay[OdVy"y r՜29߼"SYB^:ڍ (۵eݡs xs1f0@DeuU p}қ.*#4E07sd4*hK| fmA|D.9~I˂ 8%)5FVh_bEs)ʥ8\Č?^iΫ)5կs朘Tgibݡc6%>8Z%h_b' +endstream +endobj +70 0 obj +<> +endobj +71 0 obj +<>stream + + + + + application/pdf + + + PDFA Logo 2018 Print + + + 2018-09-26T15:46:17+02:00 + 2018-09-26T15:46:17+02:00 + 2018-09-26T15:46:17+02:00 + Adobe Illustrator CS6 (Macintosh) + uuid:a264ed8f-8b0b-324e-a007-84e968484cc3 + xmp.did:02801174072068118083968AFD8C127C + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + 1 + + uuid:3ffc5838-4114-fc4d-bede-52091bd12227 + xmp.did:F87F117407206811822AA6FB8002C0A5 + uuid:5D20892493BFDB11914A8590D31508C8 + 1 + proof:pdf + + + + + saved + xmp.iid:F77F117407206811822AA6FB8002C0A5 + 2018-09-26T13:01:29+02:00 + Adobe Illustrator CS6 (Macintosh) + / + + + saved + xmp.iid:02801174072068118083968AFD8C127C + 2018-09-26T15:46:12+02:00 + Adobe Illustrator CS6 (Macintosh) + / + + + + Print + Document + False + False + 1 + + 800.000000 + 500.000000 + Pixels + + + + Cyan + Magenta + Yellow + Black + + + + + + Standard-Farbfeldgruppe + 0 + + + + Adobe PDF library 10.01 + False + PDF/X-4 + PDF/X-4 + + + + +endstream +endobj +72 0 obj +<>stream +8;Z]"_%hSF%#-Q64ndq\*kP%6&UM<@fBB2,A=X&6Lpha.K^`0gLC/nl^X5H"BRa:4 +2eZIDeM5\L#]Kc?eff*Q:[F3,l_kaFg"-f'>7tC`$@"suI%a#2#%MshN7RFYFPZa/ +i2+8&nFi^^'d+I]]TL_&Z>99YYuN0-=R3-P.XhN/mlRraM+%u6g_<8RhWR9Qk(Y"r +kG]`SRu_iZ(Xn0;n7e&I//8W<@uLH8bYC54_YB1UE)7/t`[m2+=M[MsIrG["")WP$ +IKYPbh.1oS-<0de(+8NA[_i0_[P`aeW2s*ZV!5tkL_P!/P*JY9Z6'Wt30Xu[V2.qs +O"0#qcNt/&$p*"K`J(%.U$L@.JO)dJe_/G&cN+$o(,39~> +endstream +endobj +73 0 obj +<>/PageWidthList<>>>>>/Resources 78 0 R/Rotate 0/StructParents 11/Tabs/S/Thumb 81 0 R/TrimBox[0 0 1920 1080]/Type/Page>> +endobj +74 0 obj +[75 0 R] +endobj +75 0 obj +<>/Border[0 0 0]/Contents<68747470733A2F2F7777772E706466612E6F72672F6465726976696E672D68746D6C2D66726F6D2D7064662D616E2D616C676F726974686D2F>/H/N/Rect[787.653 169.04 1543.34 131.21]/StructParent 12/Subtype/Link/Type/Annot>> +endobj +76 0 obj +<> +endobj +77 0 obj +<>stream +x\ru +g*l'bQ@ #G|A.Z{\ietL}Y67/On>뷷G?>=o9o~'_<>}nM+-97lLg:WLWm-$JwtvɗWg3~=~s`MoooǷ݋g0yMݫ/NI\ش}Ŷ7AؾĊ7_|5xRo;?l|t7O\9prL@ͶlrgM O~sq|r>{j:Nichq{lVc1D۽9jӛlQX<ఘ'9}N.7rzlS1؀[ b\[qiڇb]nYNXc$xy}+2H{IcV%")N6f9qyQ΁w9\lb&NC91;|st8%x.XܗK$_vp'J9b.ejc5WbGYC[}qab28.)qg#Nr- =jE,cZW`SF9d\g(Tu`1q&{Ϳ5?,^I0fl&0)5{?;߻ށ' ; ڈ8av^]C'pǃ*Ah| {V3VTxlE٨A"}!s(i|,1ALqmiGf앺=5&:`S x 4X -O"#y Byl•1YDnZL O6DPC"W<N>$xp \5zAᘾ Ɔ(5I{;xsOUwʍZ!!k+"gWrcv6KkIāUp'*ݢp.c H3|"OMh6AbS_1 Q!2lE)/yCP\b!٨UCHa%\DJ8D1D 8hb,'!Rd.'+ΚUےb(H;D!g9u9Fue*~*B_l(S/>gQ7%zAl#MjJ?O'aZ408P*NVB*TG[) -4 1]Y 3M pZ`_|qDD('95'3I!U8P +1#4A홼R,!@!c:bGNI KtK.( r(vႆX4 "SA$bBQLɉ^'rz "D"@Dbk)NB.E2dJf4D,!ZG&TMK:Y +S$R1\3Ya'`#NyNpVLLq "2h(=ϹS6չA5bA˜*#3-dh%$1"Qgؼu6*~az2 sqqM($SF*y*x1C9/&N)|:ˀ 3g` i&¯!Xr/+ˣ1MM^ Zy`1K|mQ3k#HPij҉9'"s;MRw2נ +NWF& 42 '%K<uͺj=Q5*Y}\!;p".I2u48a+hB_k$Q-XXz"H,ħ2$tcGNS%͓RBIs(bdԜR_x&I¯$@O3pҙ({9ƀ*$i_0V$mDJiʥ؇|XEL,bǥPm#:O|jc/77Ӽ+r>L'}S?ԏ~>TTB@Ɇ4ܘϊ.2YI.N q3gmDx<_Mi13nEXMu%mv.i"T&% ҄j?4. 0am-Hmw|*=m$Mڳzw·QPq&*0ʛc& LS( 6$zR`yBKYݮI*N.h-W|9E:5}+t[]HCQkJad+%N&2?=<0!X.Q\WBM-Fi#7=Ǽƕ]ە P$nUS$s,Ι%> <3 Ĥ{) SIP9ew:1_oP=b'=B=f*wCxTAd aR"_4Y(lU:I3zz4U?)zGB$=EW +ULׇNb7Əbf%T&4pZ,ZYKJg*fiJj'"tnL{}JgUBatdD?!)HDVm(%+ ԬpD`g7nPͯ22T#J͸JZJG8XU-;N?@!iOZ7c ݆}V&/X(3/9S ڲ pXsZrz-X_sWC.^84o/r\ @UAMth^e5zZEJ2v6-wbTxV,*lV՘`p|?"Mf$_Il#]oh!W =`k/ Y][ryu)K-i]}yʥ,T=sޫO>Iէ>Pj}`6E6m>ЧO}m֧#4jبumӢ?E٢KS-ZZ~Ѣֿͫ@ֿW/:vޢ- uoK*XYy{U(*Y\@Zի:diq/yfSb53&Aj0Z"Y7fS*u5zfQ44%$yG1jgoѩws2 ʚ̮qRr=!LW5d Pp%9k*{Pw]S=ȳ4V;꣸1j*C"j1:V[5@AyxF&1'n#:UZ[^EHAk:e@zhW-_,&܉sb:Z]]dܒu<2~8\Ǫ0|6{2]{%@&>e!5CVV\^] +aRvky/ϵԔ%?V_+WAjf:DJLBQ'~Tx^*zy%+w*:9׏_ V H%8o%8|X%8<Ah)xOeanqxIJ\(ְJq k_/p5!AjIWӥBdTe(-yg-8%-+L_p25NfY'l7:_DOUr k5s Z/dK?K +0dT_J w̉n˭#o?9n;Y;3?RN0,$dPS˨41Y|}1#̫-3P@ r$^f0K-0c_;5n| q"'qON\:Jǜmx/7|#Ѵ/|"cՌmA..·,p +y"_r+˔2N|o?X#_l;vOpSϦ4Db "2I0YΦ x $sʶл[[CmEm~q:z $B4q%oXػDϠb\"uF5ǸĞv=!Հ &q$v?pP3۳}_Ⱦׯoo\y/İCuA͖_L9pGʇ>¦ܾ=8:vwӂ8ݳj'1|,9yXV2/ Mw̼>9?> oɐ)a˸K!yq`Q2y~dCAvOS1Qo nUxAvAGhNkGrH\lWawJ2 oA YVk4Nj~~}ӋxjnOTo:n߭G[$a.;c&_[jXi^%&FoFl{z͓gO8?0`N#UNA +{l7$7S3uJ`>2a ?(BcΊ5;\~,ï'wE1ޥ>~ρwHVR[/ߞ۞g}wuz: g7yyC]ϝuoe6PZqd!k&),] g_x`B9N>oRzF)M+ׁoThCj&YC8Z.FgvC>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> +endobj +79 0 obj +<> +endobj +80 0 obj +<>stream + + + + + application/pdf + + + PDFA Logo 2018 Print + + + 2018-09-26T15:46:17+02:00 + 2018-09-26T15:46:17+02:00 + 2018-09-26T15:46:17+02:00 + Adobe Illustrator CS6 (Macintosh) + uuid:a264ed8f-8b0b-324e-a007-84e968484cc3 + xmp.did:02801174072068118083968AFD8C127C + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + 1 + + uuid:3ffc5838-4114-fc4d-bede-52091bd12227 + xmp.did:F87F117407206811822AA6FB8002C0A5 + uuid:5D20892493BFDB11914A8590D31508C8 + 1 + proof:pdf + + + + + saved + xmp.iid:F77F117407206811822AA6FB8002C0A5 + 2018-09-26T13:01:29+02:00 + Adobe Illustrator CS6 (Macintosh) + / + + + saved + xmp.iid:02801174072068118083968AFD8C127C + 2018-09-26T15:46:12+02:00 + Adobe Illustrator CS6 (Macintosh) + / + + + + Print + Document + False + False + 1 + + 800.000000 + 500.000000 + Pixels + + + + Cyan + Magenta + Yellow + Black + + + + + + Standard-Farbfeldgruppe + 0 + + + + Adobe PDF library 10.01 + False + PDF/X-4 + PDF/X-4 + + + + +endstream +endobj +81 0 obj +<>stream +8;Z]!]5b_B%#-K4<4_WE0!e0/&Q1oCek"mKYYIT<%nO?$MFb6Jn55E=Jqm\E@31g9 +*r!,SQt!DPU%djVi!$nuL["F,.M7B^NGf2pq@Ul]4X#[E#nc]lG%e1H6-W(k<^"XZ +L@]?1q6rr8@B$g4"mJ;r?BY*!j[U'p'B4+&kMj5$p&F?0?fa+?PfRAF`dP_t"j@Je +k9)QP2K6rp#ip?g.&ca8TXbE3d.1pp,i9XPSqei[_/0tKK\,,I^?)l]LCam:kjZl,fVitkC2Ukl&3f`5[%O9tR97uc2]+PG[ +pXf'Gl%n%KPrCSb:D@U%)pq??K=s'aV]b(8,1`QJc_8^QEuJ/&lnL([>J::A +croX5~> +endstream +endobj +82 0 obj +<>/PageWidthList<>>>>>/Resources 90 0 R/Rotate 0/StructParents 13/Tabs/S/Thumb 98 0 R/TrimBox[0 0 1920 1080]/Type/Page>> +endobj +83 0 obj +[84 0 R 86 0 R] +endobj +84 0 obj +<>/Border[0 0 0]/Contents<706466612E6F7267>/H/N/Rect[1186.39 663.4 1360.24 600.35]/StructParent 14/Subtype/Link/Type/Annot>> +endobj +85 0 obj +<> +endobj +86 0 obj +<>/Border[0 0 0]/Contents<68747470733A2F2F7777772E706466612E6F72672F7265736F757263652F7461676765642D7064662D626573742D70726163746963652D67756964652D73796E7461782F>/H/N/Rect[853.172 169.04 1744.28 131.21]/StructParent 15/Subtype/Link/Type/Annot>> +endobj +87 0 obj +<> +endobj +88 0 obj +<>stream +x\Yusn#]sE0b%V€ Fk9g8CqG׼ȿK}zDFbd.gVݣg_^<ߝW'xݏׯoOrdw~q:y[vf;ۿ}xuNoV-?nNV'3{w_|bZ}ok %yWg/V_?>s֏/_mz~fؾ./n7ήwˍuܽܿl=owblش}z1{gÅׯ^e=է_>^}ͣG?|cmN$lf[k6&x\j ń߽#e\NgɗMǮV88>jb=L=Mݫ_VWd۵p廕X0'ٲ}N_xՋUSѾ\Zl\xCW-8]fCf].hYvXcx'hy}32rcRpЧ|u2ˎշ- +>l^=8ev.WfסkMl֘|st%Ҹ/;8 n/C[.85+OB=ϙrD_˸(v^]+pO^)nq"dK mEgq$S +L+ζ$n:%86b19NG_c<!cÕkތ}L,(Kv4Si.`L2М`7)I-IDރAE4IX@qOFؙ *M:;TE Dn質Q"Rc)F C!Mc Ǝ} ,K=7cԵG) P嚐j9 L6P .B>sFp^Afo߳*]"<$ oZo__z[L}qI*y]h.G*USU !BN31zt.Sͨӥ@R:oآV% @ H^Opt +!Ǘ+ԋMY aJ^oHrX';4Ȏh&DQJV#XiT,zaԣUphZ`_|qkDD('1%'3MC xj9WČgbIqh`#@-i;S2'NP(/-,47 YnK*bQ/O q[h5B G 0~'%zkDiq^v8;m@ %bt]#HieB('Gp)D%S0iD%fA<7wNф4N.p9%K_ PHޓE=GnuR(iEgzD "[%SD3ߎpY0T>4?齘O}bW(p7Fd {iHy<_Mi3nY:ٶ+Y4mT%'% Rj_4uaL07[e|~Zc֩kim*G o 7VQfk6iX|$2Da٬hr Lv}NRUېw HwAch~@]Q(^W[ ̥4c4m0A54 Jx[WEHNۊ+VPKQ|c cL܉-1y:@)yΙbՖ]âڒձ`c|Uxa+R1pQM4hZDz*x3Vdw G;~S˖+V1tU2L*Nјp׎t?t g`lwӺR:ciN;Z6?XuQG i㇯Ev|im}<jݢDh-ц,ю?y%Z(ϯ?AֿS/*v^ +-uO *XYyzUG(*I\RGRի:diry8fS`13Ar0$I7FS,u{zQvI4!Ў6ϞS)a.:5=IqG΃kl4%Q]O0[ +E #US>pP +X]G*QŌQRlNQ;<հڪ! +zȳ 42p=q iXOzIE^Q 9Bo`b?'&L?ZzV lҗ[ \r?tYzKZ}63YJVpO<1,1Xr9$)K&,\n!ZJʒv\*,upE2}YLpg<|'Lp}2m3O N ?-:AT`x )C0AR?9QnC׾_`kBTВ8j7K#? +ΨP# ! ]#.ΚpRZV<:>>k|@IJNnLu)Ďjfc j/DK?K0D_Jwc7:ۛ[=G޾2s\wLvg|B$`YDI4^ Qj>cGh.ӇvXz@ x .5njuغ^$8'XnWh>E;c(s +lxW#Ѵ7"b֌mNN)"98bȇ+ܿ2ߦ|2C;ycsx߱{ MXx6a8Y 8>SIt6e[!֣.fJb+RlLrKa&ǹp *8' n6 3GQ2HDQ]c{q>"U!@\]EoJ]/ϞoYz;+Ϗ!w\?q wօѴz.v[So/wWX׻gn?F&4Y;L ;\eyσe_2c|t@̛Ӌ݆&A'UaԡR>ps{ZQ3ydCBv͆'QN6QnnUx!Av)A@;!po99<-d Xhд/w ?DPayF8>ďHv)ܿfR4pTA}oң2FlUUbi4Pj nڴa. 5-O*u/*(%eTKA<4`"-|Vfg|~hs/> ,ΠhW10Az\orP9?&Fu;vWKM]݄z ONJ鞩l{PݣIa_ptps һy7{QWޒ'˛l|/=Fə@aҷ g~7r>\vzşrv/gѻݥ;wP 6;6t_3:j}dQ|A2z$/HjtgVAf^|qtJ[﮼սAچI,mտ}ѩot*ŋG'WI5V_ۉ k mwqCEjjBsl Z&<k„5T[%JDȪ +͐R[.ڭ;^_|ڟ0R٫i> +?w`ž(QOŠ]*#/uO6ۼp3棓u8P's_)ٟlutRp az1`R=a=৘FC,g_q(=HCf0KLEWKgKeCuwz؇>;_s$Ӣ+XtrP⅁@> +endobj +90 0 obj +<>/ExtGState<>/Font<>/ProcSet[/PDF/Text/ImageC]/Properties<>/XObject<>>> +endobj +91 0 obj +<> +endobj +92 0 obj +<> +endobj +93 0 obj +<>stream + + + + + application/pdf + + + PDFA Logo 2018 Print + + + 2018-09-26T15:46:17+02:00 + 2018-09-26T15:46:17+02:00 + 2018-09-26T15:46:17+02:00 + Adobe Illustrator CS6 (Macintosh) + uuid:a264ed8f-8b0b-324e-a007-84e968484cc3 + xmp.did:02801174072068118083968AFD8C127C + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + 1 + + uuid:3ffc5838-4114-fc4d-bede-52091bd12227 + xmp.did:F87F117407206811822AA6FB8002C0A5 + uuid:5D20892493BFDB11914A8590D31508C8 + 1 + proof:pdf + + + + + saved + xmp.iid:F77F117407206811822AA6FB8002C0A5 + 2018-09-26T13:01:29+02:00 + Adobe Illustrator CS6 (Macintosh) + / + + + saved + xmp.iid:02801174072068118083968AFD8C127C + 2018-09-26T15:46:12+02:00 + Adobe Illustrator CS6 (Macintosh) + / + + + + Print + Document + False + False + 1 + + 800.000000 + 500.000000 + Pixels + + + + Cyan + Magenta + Yellow + Black + + + + + + Standard-Farbfeldgruppe + 0 + + + + Adobe PDF library 10.01 + False + PDF/X-4 + PDF/X-4 + + + + +endstream +endobj +94 0 obj +<>stream +Adobed + +#"#"&&&&&,,,,,,,,,,,,,,,,,,,,,#"&&&&&,,,,,,,,,,,,,,,,,,,,,Ly"  +  +  +k!1A"Q2aqB#Rbr3Cd$Sc +%&'()*456789:DEFGHIJTUVWXYZefghijstuvwxyz!1AQaq"2B#Rbr +$%&'()*3456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?""" """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ ?Њ""" """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ ?ъ""" """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ ?Ҋ""" """ """ """ """ """ """ """ """ """ """ """ """ ".La٠7@qEϨ O_H0zfx>(!MVl3*x祾>˦dOcEAw - +3ě:/X?K}H>-"dže$fQ>7CF?q*cEpG%465ꆢ~~D"1ShmŶz~*hj27JlI=}3?q7.\TuǍQ)ouCzfXŎLȼWQ>zts+\C Jc6ر"@DDD@DDD@DDD@ӊ""" """ """ """ """ """ """ """ """ "".}G[B"2Cmo]pJLʪ$}d/^<4Yq}#@w5FdxH6vD}7~T{G Ia4q02Mz/}ndNEtx#˞CK"S +:cU%ul\l>-?\,b~j>W_N^Ź 6O]eǛ~ǗE+=cbֳîIj. S59E|]u}kȵP)HRH.<8q~wG!5IEV`407oR?kGy>+ \Jg0}.y{jw}SWU#n >iߑSNg;ցU5S1!ڼ@rʓe\@ j\]G\TJ\†r/6a;- .Ttiqԭ=Ftj´3Eu?1j~o_QJZ sl]s5+ydCH>>'e߭/q긙zy h7.o"ļ wiuO/&RL76bA$ +Jcan!Ǟl &Wat.Y,=65Hpm%ڽ^,Iٲ2]ץpft0\ksY0U ok/=e+9MImXӝ^sG/{y^d^|54f(/k;]j:*ְSZXk[\6f3xQrg.;E$_9Z^n6;;DE" """ """ Պ""" """ """ MMPV .lO^|h݁Eəγlaeay=M{efKchh\oM-W%0y=H-co_QBN,&dž1я[*+ cI\?l "'؋0P䣬-YE!{'_7bOwT!cn;5ĩ&UݎGzF)j$s-rn=VUz[sWT^c~:r,Bj[K[U/J&}c%tǩi$  xnYs5eTyamkg֫O>/=%.wwx kA:#֙_ض!v3Y3-`p7=և<؍ɻ۝[%`daL;Wvd_/nv]~+77a.kM6g88˭vyuebWFJWRzn=vݝVG\(KI {fLЎϴz 8n|M23nN!`A3Y=6ı^!'/ߋٞw]ܫŊ0vRf6{tVv'0I&ZCGqzgE+1Y ZHo'qIלּ[e -td@Ck^Ǫj12X/+fy /y;MZrqnrvW$EFzR2J!nZ۪^h6浮>G氼3>ژ ^ jpyCi:[^]7̥J7&S(c\]yc ;n7\* W9Ϥ?|lĜ5aGnfǥV7W ps9 qc.F^2W[ X=.c)cuX1A,/m'o^ s`5@ǐ{Xr\M5^$hcsNp n7]Kb>+q0UWV<4 s)-ݵYEק Μt.ȿ3^ð.]<9`,|Gc;:W|-n[vSbih;;Z}KѡcN͍uC8K[.})ui)Z?qi|Y̹ԴQ;FnMV{q1%W8*jac,t{L+f{glXm{R'Ku[t"=|I^5(Z",D@DDD@DDD@DD֊""" """ """ .~a4)T3[%tgb/g܍A\j@=Kñpi-6p-sv9H7z: GRRׯz:݄֌H\7]ʥ<ԠUXa{hEp]S:@4I\RK #{y o#Y86wr^>g1e-kWg!q6\?}(XkKH-EQѕ%M;S48 q/-Em۝.9'Vdʦh:guf-b© ۞|w4MQs"cRֵ|<v֗76cjw qnw\8/Y"yi,@viߝ~:R +xJы,|\y8<FdaoDY#X>>o[35fŚN l 'zWp@xOi vuV1>fx$OmQ^Ytbu}BY誐Yy¢!#ʜ4~E'$&6=F+D(V~^$Ϳ8ũ4>)\Q?RlJ|J%{ $ .~ o7qڤP¡)* kK XrU}GЪ'6VV3)g 'X smm24@ [ds% 7=?je_(y%MHc58+/In齁v}3MmVtqHH-|-I!#wc.YNjRϪR1nJ %hZ]2~|YM#ZCqxg4eV:" #uyK,1f&%i~ez980d\ӫP\}j<,_O3e:TxV] dZ[$w{|/YTqiom  ŭ!cv~ɘtSRN[iqn94&9uz{kG[4fjN"7.iüҥ-lfy Ld9.+*ep +eH,6\1hh 1nXֻ }3K.`"څf9cl|lƣRKJ~CIsψD+Q9xSҵ$/jJfk~vrR{1;νWkw^JXwy}qe8uB)2UU +**l)eEZ!} %qc }*:|כܧ94_.T;pk{CeѠ؊Ȭg֖>eɭpEx(9fѫQQSmj^5 +YtT17LLF|ͭ2/16=KY=d"3: Ɛ6_ +^v$=bgy +H@&Jx]՘hT=%,ֺiznv\}l۟/_[s6nhr3chG/ޗI#J4ާV3nzGevs_ZJuప5սDE] >\FAm$9m$|` h'`ùd|P W mZ+}ȰWG8L6mw{/m?hNV|Ocȃ"; +#GH7?W%ax}}0Jch2󳝱<.hŪ蛨l oCl\VDB\ѫkig=|~iYxWǛZ|B5csa %ogHZdp$ON|UGA{G?IqK4ي.0bs{TCM'=m95$xAŶ. &g1N^kucp'lAF2BU[6# +6@tgdv$. Sc_%DDD@DDD@DD׊""" """ """ +gնXs$7cyy-zXI]#wWA @e 5^r<\/ZH! +İJAE}=ĤkFJۅn}09vh;Rs+RϖSV.юYʼn:2=:I7k.ϏF)^/}EP+2 @M3$aՄI_= ˔ql#VM/A6#\w-巫ԲOꚷAXRD=_^))\^$looZI&igbz.Z)p904ѭ +PRۂy*C<I 3pޛk$h6?N; EN6{+6##eQ@Yhah6g7as_)b=U)Jê76}#k#础E~umf=S< N##[xϹyks@{;lpVPճp ooJ{gtG>CW4$n7}yn{%xQp|2f')j;\n-">Eys8Ne50i6 oB0ڪm{~xЗѕ>Iyy7 ix]=3Ċ3f񽽣CHiW8{dsD"m7+njp1դ(srJסbT7s#@Bz2?"/ (Ů+|BV^UR|Ωe.$} +)}B$RfLy. B.[hT'mZ$V&_W1\Ma༽Jn[/f_;.Znl;rB.gg+D+]͚G2VAnC`:/N +])6vr^nQY v/L0٨_`)E{4r]ʧVc~yiyι]ʆ +I-i3nV!^Oy:rnx&.G΋vzmØ8 Dcqw{e/s&cfr{؋%sp>ϩHrbRHv~?Wk{5[!aZ6#ťŦ2HnO:.l1PHٍ6hyLP׆ׯN%๒Z/flnj.1N>ݏBp*YCMnNPȰN!kveSexG8\\ߚ6©*fr5?)^T[zHbe~o)Pʉpn:k}o˕ŕ&_1ZbՐFH6"|Zea6u[]fZM-n^/j*+Ѣc–o7hip:E@ Ɯ )** 6{Uzxk\aXE2N_*Teclׇz yٟg)hXiUbqZF0RMݾ0I( J k/G1\>w[=|E=K3{)i&P],ɍV}5C-$O EԊMKtY SaJɨǛMogʹ[n(i+n^t; wfCM4}5iD1Ť +qgSx88Mew^PEW*/F..䪅֪t;[|Wީ\f[H""" """ ""Њ""" """ """ ޒNږ7Z>xׂȅQ^*lJ:?H/REynMb'?*9/=ul>LFfC= 7^Z:M-}^V\ׇ +"'eANmmZ-/s"3XxKp@9^+ys0:+]yf2vӨX4ف\A$,[ KO,nVUnQR{][~rm^Yk@7 n^1fJ<[/!ٮ6_uK4ϸuV1TcUFZjұ* +8#P==#~^>gzQ %wuß2p漺:9^\SĞxHű9čl6MaNkmr>B ^=kGk|UL$\2zh.yi7.Mq<穈z7-lPslݷɮc'$ikץo-ïɜb55CE cu *\[W\}[ymkKTߛ-̾1Lqtד@uO#(whCAG`G9hcAc#vH.杇Ym$'ܫ+Nz4 㑥{~b^ﮘlw}Kǜ2z6U0v8e[V`01w=4uH]) )7cpëuYY[_."_&Zw;|Jp3Ycor:/Olƣu 'M70ӧMuu$['yoÿ5Ŵ$^/䪒!I0#\m\ۏ^X^y1Q2:j.X&q".:];θۗ>hG&Ւm.16Vl".kb!pܠTv>ԯ<n_fiK\Șnc@h\*xmTJ@|.:va{cs,s9}Żٺ9&at:&rWm]|X{оM%v&L0X[5<GP\P!m ]1(e<&ot8DW;J0TҧUVPjܲ +0hj +Z,boMHԾG}&c 4XXG$88.誉k>Z69zbE3Uo \:tks.'刨p>–GڴA؞C 9߼Y˗>һ0bQvH7ei(7\m[vi/z_#=̪T/lkO/Z|J|I10 uPGGC&mDzOCrexq{[j]z}۵94ʯ[=~1ewaO>CH"opzOϥ ׵]IZ6: Z(̏[sm̓FcOtYk~˧pxI'dma'cZ;,ˊTECk  u- T ceuWtrbx̍7D֛ 2QUJVMי-&!U[u64^=ax Hp=oP]3 /?Iw?j-h(:MYƥjyʜnk7dy1/0qc҇"8$ Ǭ+*u}i=%yɷ]_0Nt#oLMC;YSC+耹#NxEEN7.TsCCOZM z)g)% [:^+ans5۷QqobGqm? .$ v6ς S\Ԁl07>+2RU5*cTwfIO#ȃrW[%E=s&cmK[[6V3Utk +)I^9T@@vEG`,lo{E=Ez>b^M+n}kcUIՄ9,N=͹5Շfhhan!aRKw;w)jLZQ]9XWt+Xt r6>>xiZwgmtpTWZLsbt8G}jεU.! +")׫J.Pi,؀@DDD@DDD@DDъ""" """ """ ڠϩ +WFgt_ ҥ7j^ +3pKbO,/;/r<09>9Fbmcf^6 JVbEZrN#?H.]'lWh0tPɈv^ QQL֙uY@P7J-9b0 =04tdd4\ ?'`Oą/do+tt#}ʹsĘ4a7Cyugyz\Q  ͑JQ(ub3ɯ,H`l,p{/ {EֶB}u vplz 4Wh!ka*v%x_f{|c]v*a q.Ι#㧐mz͙wCu(݊ԏo]t_)ʯrr m0VSIOE}k1Z1{nuKalC.>4|չW2Z˷=GN(i?P\im;g []a+##&n(mxCX靭7]*. +;c𨍰ŧDFyZ~n÷M;a#`:w.8q7s k jbMӛύ-' l7Jp?{xxpX<8c%Zu8avGu4d1ݠuqsJMgV5J;]EL3&",xʵn\j[}Uʶv8]qD*r +-Z9.IWGf׷;6 ,Gmi5:Nby rxOzgZSꨫsYq , z=:,J2jp I&^)0,BJ:*m7ƫj]_? ^繣΍{MIg[lSAEMQKؐ|$̎Wl\: ژJb-nY +|J>NGeiuNPJ)w\Q:O:Ik;_wri6SDw;fK[A{\znq%1jݳv{cqMTIE~ |+i&'_U+qk[xi1mfͿӎKZ̲/}2Ko{K͒^&9kx%6gZ@pك2UY//qxX@ 1yJRL8Ag{_XcٵRy8\WRD,g7更 aw̟oUBH7n9C+ӛw:Ȫk!7D@w&:Eyԑr_5qeL$c4mnZ򧃃k-/n׹nI,VSbwLTGb.@]E;"/@""" """ ""Ҋ""" """ ".qB͘ @pEۏ +0oweH.E3 hs3`=aTg6C&FǪ 6;h,M(1oYlS&˽Dv])vQr^ŃY0Ji&!- n֠35ě7+v.T76/cSu#|:5>BIV@O'4}[+u6by 罽VH9YPr-|W +[y֜Wu4cܱm,n1ZR|U +Y%qHm/e,+B ˍs-ħ9ԕHרY8kĭzFIH>畹,ìÂx͘7"g8i݉qc:AFwߜllٔkP|gofr +=1E_dw5U4 h~w)8_6]c#ktHFnHEQd}cI-M#pM:>q-R|V(=NG"vVBLGDO 9tӻ[-W;xjri~fwxc|F "9xkic{MfcV.7K0wqq/K9-lFܧjqҞ&3PQv]Is͹,99t'=E^o^Xv0wEaS/V/}l9qVJ;R3qg/rT'6UlLJqJr\n~ }Opfy]wvD>^cyڢ9tPms娀/䭻e[J 8w˴y[&t:Gܹē"nch ""QU/ K#}G) ì\t6ǏF>o -y;UQ͋:К2Z:knP٨|8TV~;eR#l2)Ak^Yg`A6jv_y]Q y&׷tv^YO%U6!.9sZn;,/vm "X^=ʂ:g<ګy+-9XN7$ a,դ*>6/oǐ+"tHN N2 ī!:n j8%+xjZ̔4}q>#&;]uxg6kHUs,:Of熼\ yn+PUa0c <Ǚыwޞ5$ל|Y!e~bBw B],uJvU6ϚxaI f:n{rLX_RM<ީ^"Y i|דRiP?RXi< 3a^oFu6ްeK˝ztX8[ZWLK E,$k-mSA4%c=C@/_R[#dKF:CInL4`ШOhno{Kٝ:Jqp7qwlW+mK-,yum1em\7QRZRSc=&ln~_aL_[.䓧Z6y܍6zGF-{ +$KS}L󷬕ӂA;w믖uKA9AsaϪ_Aղs $ oUXw^Ǚ34=Nm^Uf8˝~VjVaI!H\?`]v!U,vc.~Z4TN7z-y-*ex&~-tߕ/M`CrAqh ~¾k{;x^/LUu4,_qq>^ wQ~7-t׎6,D,ql"Rw֯ 58L ֳAQzNۗoP3])]-ڿb<>Hrgkws = OZNݍp gW9ݾlێSeL3oiDey5I f0Ie3<6oE?Ov8ˋ㒾Cwhmq.gnUI"v=R"ֹ?XVnѵ4Q܊.Aؔ\+ƥGiۅaiC#Y!~8=pAW3ue˅VfָlYߑEUGJ*YT<ۿƔ4Zشnçl(5&(\IMn:Ś[xcm`o"]ǂ6XF: sn}YXc+QTܫﭭE\C ]5xj+`騑ڬ7@#+_G:yc|@ۛmc޹V]cF68Sʇ\-~~VY pmUky!)/bVJj\|£fxOܮ*3>`*;WQQA'aՏwU3_4"zCgJP"McbWU %ᚎ78fḱx>+Çquqd_\w<ȿ?ri(UF:7SOqˍk+4wb{JQme/Nc;q%ĒI׳-kG놐I$˞-\{F@UweUh w|@^Zn8xݳ@"Q}v+҅n B1a-a-S䞚K+9;7`>b dUB=؍t)sż#Wau8]OK cgTT$=ceͣVNZD㫵ccaq粴2= K齮"/ϲeP% ͚se8FIiƸ&kXrƚKL<~Θv1*kG/H!QŪ1G=@ru\ʢ˕^GCJG;,vꊪR[D@!!H^X8f!#LcIiM! sD]ojF~ %pHWNAE[~I$uTC(Z~>tF *N"bϧî{f;X[ޮ":\AFږ;\D4im7֢C V*x.}Wˑ%tGc_L&_|6M{yr|*hX{ۋ۪{Ncs}Jm\KpTA /e{6 +B':$]zEwCfJ3 ׿ ęjr=ijpJtUE+_v3Q u}4 큵\TO ]o]J0:# ч2p$j0b:: HKZ -HׂY)52dΣw% \q$QbE6+C5{Dnv.l{ǡcmΗ 6V+ǨVH0EKow=ͿRQ=ۭ~JΔ+ dqyy Ni6)Qv ŵ>5<]ē|Yn_%㱊h;)&&;zזlSZouKWSh5à]v>Ptl.l(Mp5l<.MwwS_Wb˳۟zNSIFVIF@xp; k^ ueK4u'/}QsU-Zߕf}{W{+L}JY@<Y9m"g5Gw;j+쎾/ZTYo߯% j&<|Ts.!EeP&/ܝƙ]Tf +7f],zF:^?F=P0PmKWظ#.#s̪<UnWabr3q/\^lg%_ѱ~p)S7fϣt5s]FNXպzǂv>&y)o־sa8st>}`\eXtSZf6; +{^̀ O[v6BVp~KׯYͭ:rU=J0}{+5l=t]k*+#sFiEp(Qn} 34)7gpCM}L.\/XWX3֍$09WFtK-Ѱ:}wkz,wzk:J&Ѹo3OSVetqf]^ .K'u.w2w+זBݲކ˕Mj뇼J0c qcZv/T!7rx-/a7Mۢ1OV,% \-!_:#Iۅ0ahqz\.tz}C+݋^Hmx{3YI?Z'p +CM19k+w̴? 1.-VVz4C~Ⱦ8ۃ/kCGxoTPQӗk^}[)j((@x`; +x}?f_0H>Ve+c0ʹeGTX@٫LM5v<H`YlĹB3;Y*̵/.p 6^u/M\т\}LkCz+Td O]zݤbWj[]< &ߴ20iv89Ls'V,V AtT\W<ͅrO+Ԡrj*^"{sϩ  (g&9y住2b:`]}`}C}[龜:X[zy)LKGzׇ=^'!MY[ط2]N/,덬;԰nmۀ՘ٻN{YJ$Φݮdg8+ 4diW^Һjlf7D"ȲDDlTưL*S8uUGTg(F 7kkQչ2t#/ }K7Q+&C 1C&&s(u͏7۝ҍz8p$i TSSỦcǤ.o! n撚Fnn}آ=r,Mxo̔_cN4*Ie}9pd9o h~[]6}54cZX58[+vygR7Ws,a{[ݖsbۿNIN%>ۚ:0A#YFY׵}K1:$tv7 Q{~—ayC{E`_&Lj"xwOrŭMjD,swwx.bǧƪ3Z[>;coQخz7A^\dm6۫_- ۏ^Y!aW-{0>kNݠC6Iά%J\4]SYv'ԾE5=Ί^ՠ̎;ܬ,J[g8Ys{;msf óz {\[v .3@lM50i?_3d~6z0)0KE|.m^4hlP!๶t(L@`6vs =b:='tc:6+ݧ"5wI#v"Wӂ\YmZ/.p|޻8sO {{/L7h'eKdxԫrX\zGَ~y$3n׈W§'Dyyt]qn%Tle'QU|U +=>o.JsfZ\H.mg"֫c=l6]1 ӥaOoZGRzp>p\nW%d(rK݉T6*1רSr|AUChĒvbױmW'U;H` 6m漌%`{Yx7W@HpWmTH{y_mMq2QMIg$Zl!tT^;Jʒ{ -]Z>-1g&oXϧskܸFȳ]w[v2~wV$;8V2;w5-۸ OMu-WRυ<9,n27~UrUH^KI$$+AUw6j9"ɭ/6 +D'ʈqƁ,L;j78!V;qB:nָs[hT饍D~E{Bz'֞=|8)=*dQV;1;ToAw.Jp6_ +SY(`hE,aDgҎ}-_Vx1$Z'ײ6Fl{>~rԔDb-su1tX\SΔ6R#ǒ.6#mج+E#JsRkmd|*V@c6S&䚌~HC ;[ܾxVv j)t,I#W7h{7XE4Tq+I\-8cy[jkiGVvεWJ%=j.\V;cF6Vr{|eaCňґ{YW5lHK'Em;ǎqI+|&b8b6Qf80{?˵PԈ{2y/'1$cn.wS7VO^,OH=oY=2LKC=9(ԥFin CCfF FeDev.J2O:au ( `*,t/ ne df׹54鳁7lء Zrv2#'doRL2P\ yPP`Z`wv8͞s}[]L:A v]eږI(%sZfDkH['s$ڭ,aD`q {W*Z=RM]FͧsUɘalv&_GEp3P֏}|4T&%,w)fI#67헆{M"gZKmU^ĭ٥#Zg/V@w1][|zl8==[4܎ǝϖ%êpSIOq#moDciKUh+e\jC%[SXl .6No8 o#bV rG~CSK + ,zӋWQe:juY`:vAT%II7ǣEqԨ# zuv+Bntx61O#E3&`2Ǐ|4 pIj^R@@6| +^5O*mk-E[\*AW>EJtmx/`6uz+]T(hZj̗8i/coo} F»r5X#NauơgM~aXF3fiR'0ԏNM~G|]L]::IeiTe@J {Y {Cu#rfߙ{H˒fe)ڟLuzԃ.l6{vsWoZJO@f˗-oTqr*zIZܭnL25UPtytR8۟-ճabZ%sx{o%I`as{\r^%m,ѷj +]!ȡ aor(bnh@ȭهKwtLRr;.ZKS{IL[icѦaON6b~p<eƳT'd0;B+F懢SԤ9 ]'uZ 8/8Z]]Ji 5=y񻪣 huBQPJwӷ:^G6:䝀 Ω%."+OS+ao"nmKUJP|s:u,Cn@S kE6V3eë~%S+cI+FWKCڃOOM2@}HV^SmcS&mkZ >(PD੤5XMk _4\LJcu;/$sWU+C-ja k۟/| {9v>w~krE>5^!#[i_Ub&CZ ]JR~&v\#EvZ,:f=odwSfJJjzZv|2wjV]uMnasy%'{B +DNnǒʮԱ+Qsj%;gŤYwەE؆RwH{/J-V\, A>60QSGvдKZwt.f,F6H;D>⣷ӛM2_⅚%*I~K)MV#aap}69n%iΥ3}E̦`w0ԟ|YSDbl}',[Zw2ڍx;5wy)0.!VjiC<^p]vqtX۹6Pu5wr+\j+<cRe|EeMokjw2\۝vl\r\[ǒ!YKuDL17Dvmb)RKbQzHs.FRאFϰ?Z`zm Ŷ[1l.O^7LTja/s,m;+)& k4&c*X^v=NIq/F-øF9YZ4x+_ S ߹E:Z&ŃyӴCf< t_fep +wUK$4,nMNg)f-mkqi3*wFZ ࣶ:7&i7<"+KAQZ\ Xϔŧc]k?Ir J-{ץ9*V{",HDDD@DDD@DD֊""" ""8;}~eb xy9upb"W(Rt^l^y,lP7]~KR,OH *N0ډlv+$j۟}p<9ؔ: {_`oE kDA؃mw9EeS:wy^+@gc&g.cGG:Fݵq.e;3דهhE)s(e]#ΖuG +;8vi5H<9 tV. !-Y]]U/mCFhEu3K~@Ete>u cwoˡ|a͋S-ߐtߟXy0U`gc +(RJjwв 9^}W[Puq)~kLfv 'jD{2(JZ4UjHiUכ%p2DZ^0/~fUYI>W^]4ocV  [i.k@vn'~kfHXeuS"X Gyk_.'99NuaMi>ݬyR'k65}`>宵6*~&"1;rmޯN5q"zEL -io0ӜQ+=<Hs=1Fm\=P5{D,C].d wGqlIgʡF+xo5]Rzʕfimk,d5A:ؼMn uX/:f^]bHnY{8mq9Bc,rQ)m{nO1CohǏyg)U9iTM=yWYzFSU\{8Sߚ:)^3}c +0wxG WۢAVeK.6Dpj,X Q{upwRw5tmd:ooQ[㝯(Qe)YN/QV': @Dhդ[2ƝPX;);Q\0\X \ϟ5e2E\'T5xFh;y׈C / [W=6m{t}3MM-~62΄'w ͵pSX--#]F3 1_{\C| #.l.ߺ9G[ϹUFZ.kG}#2$V|.{73HbF1[`mWe41C&3KmQznZΪՒߞ5b~D[}#lwW[GI %<6qHdyY,3acY tS7UV.˵Q H.\Qc?e'F{/3;1{r읱E=p_g^M|ʜՏlϫk\4[nKMPWjfr'`@*(嶇 $ߚ 7J擸+]\4!aN-OI|4=PIZB#uCW˒.fsī2w bsq- a5׫SWFGui$F4v3qTvzya4w :>)-حiڙ6$7+$WM۔O-ÍʈpB+%0YC,rMf;d NnmV*^˹UY2_5ֽۛӗ%v9";$aD}=CIm:ׁZNY!n}TwvsNr,ҷZ}UW`.ZLm.v:zշ]JȢ05wVM=i& |8}zxac],nWW׎Y#w;AmW%3ck,emY2cck׫dO&\}gs-awg~W]vOI#cknʹXn!3gkG&qn^ xu8w/6Z"`$݇N)߯V(ekcL0%+sWGԊ,EebLX2^GW:6<G= QEujSi+6ۺ;frs+9;r"c=,?gzYX xtF?l" <.mN<UŜ\5ORK`dzDc{T9ՒRX 4FSXFکƻn͹yz⽤sG u[$u.9-tD nl"G\6ܹ+_|"[ഓkoZ9c,YuocpVNKNpiLŠV6_ +e6`Y G%-o/*ɟܐ5E\Nn {Wo#0N*Y ߺYs/c8 qpힿ3ZY)X޵pvZV88dl15_,3u΢{޺&;b+/n>ZWԬ k\H~K:? <ͭznNsފVre}flRfp66Z|EA\9rI^V Fk3N&bDE" """ """ ׊""" ""cZzsy{ԑ[H:f^fyدF#p2N̘|out۠X]ҵ,sX 7XGܽp?e nEл8kr*ˆHߓg3.XM"rjSik ףaNq;l8EꞾ;[./6\J*(,tơvq0[. TXl, x{._oJɛȰ_溹f14#=Ss: FC0w+WS97ure $i6- VSnK6u*N.*NeQv4O;Ⱦ85#XrF^OYhtz8ĸX:r]_lKQ;;b,wXJg+g{nDs, 3_!n8ߞÄa101o~vJ:FJ%ǹs 4#h{de r^G2mV)ak ;0M{毜kԲ{&qarCg(s& Xflyk{ȷѣJxI=؍1^Pe'M+zm}׏e7h75# sD]'գ\-6^kF.n#!FavOhjEmzfl*|7_hr`X*R:j7ּ ʹXs`qf YE!㲰g/SuHۂ7#I*m+rǼ~Umb m6fxc@%ҍm%zQwVU +j]_1k!}lnWC3t5OkwtؒMmEܙ-ͭ+[p|GP^bYZ$l8t$Ekcå/' +\-i>e{{89Sa]QuQjs&ꖲ^@K*GבR5G>jTpRAS]JoRs4+0ד%\Uǥ#+,oyiXcVffHوv~ާ~x6V.VEQ1Y"?nI9K([Ba~Xt-N 5ӫ4Y+Sų isd Ova;(׋aSaoQqxR1a9Z*89-cc}VNÚ>%`I_ 4qV/<+4>%* $ bXV(V-%\zZ؄r.ik#F,i{/'_k]=`l`L[gյU<;+e4;&rupj 70ݚ-ݶ\U-r֛]X>V1o ~wrQE6⽼*qvm\a;*:ڸDs6~m{%/jTyK.,4oomH$ֳq+/FH۝ak.j:ؤ\ZXlv.F:QSWcwZ멆0 ܎Kƪ-6 nQuV<ũ8}VKs!SL0{j7Qhbn1=YyTDŲM>&PƝm$lN ,Q =I(4X,D/u,b=ϫܻQHky,q۝f”E-1gnb*ת5-v6;.wc57/FjGLJn7 +t!XEm@P[ *Zc3+oMC +ZX;G6_WJ 2'++WĩFH"v*)M蔓Wk7֨Ӽ))JSv?3)LfڽyyeUzI" +@Wy mDbG]W%|]J=ZDTRe;~0*aص VVXR/'\M[P{vG?ѫ)BYM.ss*8}qU#ha/ۅ)cikkX{.CtsζMNk맆R\Ko/'3+J:0lRш␶)d&=]⩕F;+2DM mʽaTVUdK$pH?96Zv{x1Πj]>kø{_YQp΃{~GZQxuD۞s#^%cKtg52#c9:U}Rb*Z1S@TQGè=Ecy -ic˵u#7~cݸc+˫'-ytz +Bs}n!S$[!_o _R gI*y 6+,5sE۽YpRWC0lꑱl_u*2zxS+]j\L]l@HMx:޳ KN8\nIuWvϬO-*uj \N+o +*0"u,O=qmz /W 8~i>jaG^jBsF&^ĺq.%ClH5di1IA`r^s^ҚF[hW|:F/8)XY'32cuAqۮ0tN.-潮 gLs_ R<Y."ꆍ >Zhu$kn\u9t0U 1SWXCcnnon{\]daF 4X^ñ'qwXX\_uE6]YydžXZ5ϖ}8\[]&f9mJRNx8]zqVDajoT{ṁ6+E,4 l9xl_ ,\nl ;Xntuf ` qbJ[mÈ:JSïMV:JO|Gs(g:&<B^f-WSN^uMkHcKԽ|G4@=nDTu[5iξIH#{u{[YX 6U͖0Iq8;]!O=[-~)/:|w^rɶ*Jx7bzŗ{;Қ"V<{~E_yX 7Zq5s<͗gpkKͱO;ˢ +r ,DV7{vnCKYj6$.Ν1u[YQT)=d4uHk/zX4ZGCӧEas*f0O+IֵX$57 <,M y/7A;KioۓಶdmCFFv]|"`s7q$XTӮkɖFcͷYԒb5fR#2X=x+05J,5_61eXf,~*PkvW15uqM~tݤrEu+*Lm؏v,b #^˧j]5A.< +urS1Wȧիk*,U5[kZےy~hr)h۞^.VDGAKbV*sUQKtּ +\{JjnE>Wӱش#պHLIs6$uk%~ Xe.۞ޯR\O~2db9^m~C4=F:WNvѕa:BqijggWk$  /qZ*H61woHrP89z\{O5i'ZZgFww7:&uYP^d!iy mYv*0ln:PT1^oR+}18zҲ*Yp,ytfF4voLJ{,:xN6nWn^N2og3tf.vQ5ůd~<Ƴ /h6!yNjR^F"⊓sWAA /kts?&pm׵6_[m˱y }HoVmF!."$q%=Nqk*W2n%Nv26;='ַYN*R6/*o `ֳ_ˬ6xr^'-4JGFrvse3Ԙ cc,@ X_?etC=mVLf S[HF1.pܯDd*avsn2~ uRZj{b4ت,h5t^+]gH^ ,Z{u0N5/3[$ݧ1TҲnz6lOԫewF tYdU `C+E n9}Eg*1. w:--nޜU; .HpoplZʗ: ͚vm~Z|]dhqmܒwpŅKMZ14ZØ$mp2ԄTԟ߇48lxqds=*u.(Z,p`豞 3kA"6^1@u"G=,UTU)j𱗳_rt4kVw sFc8Я#u~ȝ-B3+ 5p NLbI[T_vS]\C'7s6<R,̬3ppea)~Ֆiju= MZI{uv ,Ȁ9^et2JvOP>`;l91.`mb4i &ԢiIZ惥jpN>i0WPE̒lֹyJ/Ժ9aps-WUӗ3=E]ZunI{2N{WW*1JJf=^F\̭(8 1C;cvȾVm#map|}Kp {\jQҞq2|mfdlq^oo\w)f\J l0ɡkdV)>)\Ƿqk +Ia<[AJs ݭ jdcq+ÊxKr[Tڬ+1R1*L!}mDc^~c.R))а^$'Tx6GfQ[1J&G*jxZ]{=bK%)qkscF74 X\m8ÁCÚc~:TQ{%]p9pi\7cn{_~&5Q myqԯWN Mpps{Z@iԬ[Aɝx?bޤX[QN4mn7콞>K @':z(ۘrv] |9] x% ̘lQE#eƽ6n_kj1e1})9c)Sͩxv)|UӜr%K I/+\; +Q**&/O*pY,,sM\+W1UF̐Ԝant$jYZo{͸0vSEN$c!s=Cpsv 2%8q M$;ﺑ^u |VNQ{Km#8q%/C$i"Uՠu?XMq  n)hR{8lZG)rE;XAc׹;-69ҳi kȜT} =#L:>^X|k[/ߣq~Ea,kE{| +Jx"}#Ԏ3{:J[ݦN$aS -Mw݈ 6C!t]ۂl6c/5.  x])h'klnMGZI-8#ҳT,A>v#Jwau+"ЯS̴ИtN$_Vߥ2!s%3XA`zb=˧ĚTRN2 G,WX7tnR!쉽n{鸟I*k$Vw{LNʸkp el} ;{.qsݽ7+F.6gB׫d}'J'M$V]v748^r_>R,[sڭ<3R;%lR9A7>Hib2C+?Ez?LNJ,XoZ*eTOtb/{H.&䯈dq/>oRcݺyw\C+Uan[U|Klo{ΪjO&[ھXp}lH1.A}v勈R>B״ŗY1,fkH=BQۂgM\وlMЯvL}n9R*RUPŒjr6pc)ΔN$/ W)gq*Qj eį +^º6wjr,>*Ѱ90جWω6( v9x餆tu4{X&=<+M:;nm`e&R2Q< ,l97V=SGB66mp٧n.%;}qost;ێˉ)]OO8L766Ԭ$$NJV)@﷈Y VMŌxFp.M7:8T7. ̸ 6]sc,Xqb2660E.w }LӢ@c{v:3}~`ECvm ?"{Ow[ꙑp (SAPҳpA \8+p9)][ +ҥ3W<h%naԓD{Zqhꬽiù2fjOR̛{7lusYc+.m <l_Gs"xS'd3'K±~jq\9o#f+sC qֱA A:[r5QYq8lGLUT7krêhd=ը~k%m&5+_ܑpMyMzyS&cUrR16y'hKQF1 xvr=ܱ,OpIlwi]?*9 *CWEZm{)`8; +?kdh|{i.6ed{Ǣ+b0N$՟",9Mŭ^v?0q `nk|@;o=Ya> 㺠D ќaD͚GQz5஬i}l9|F-> Pv}^(]b%H꟨ ?QٖC&PF\ c8uِJ#[GlUAf|F!\&N̓Xm[ezK+Swy=#͵bR=Me\B4yyVo{]zDb,}5lRu̓^'8@S6gݭqaqѱ79v˝@o6c$p } 7k6])wgݺ0:"/gbDDD@DDD@DDҊ""" ""~;~aCctUi$2/1UH^.%U[@#q6Kqd>lqƒ]#4s;~_ұBSErc*KGk<I!y\aUXKYh>W;¡IňTOIhhu{o༵\\׹](L&6UO,.{[xme e2'ӥoث4f(hlq./m]7 <&n =Cja{[E}lmG jsm#1\<{Itxĸ14:Gy܅O\x#Iloo4yjGӣo4ke_-#E#bM5 eZֲM3~X(xEx|r9g5:zL9yɹ*%%kX9SʩIxm2uuVŠ9`\vp7,T:g8ױ0xЕN)(;8y8l|ZW ٲZ6`5zW(5R9>tcxeskZ={JƤzq9)gZͼ2 Edm^pjg!L,xU׽"׶ 7s,λ8ZXnSvn䜞X$nq +(7N$Sph#ր ɵ3uٓ©V^Q܅rE[UAg8ͮm],ĕ,O~X'$5NZ9%d$hM!EvWV#ON)RDrpxl:&b/4p՜U|~/°з{<sbVzKḽM@܏W}eHaO'We3;'Ku><uk%ȧ6Ԯ̮y&MZ"lhuv6 h{G=`{~^? MFtlX*K^Zoyf5QMFEA8&u擪8YucN +)eq:Jg'6R8Mqc6!p+*:LaJah%.l~}gVJIŝ}c/G5H +!`""5ˊ! \r*UC\>;ܱ#lH?p/֛TOk^IN\޼J75]#u)IA-u\S6%mdnաۛtenpִ:"b|+HmCL26siZu/K&Mok#qSZ(֩F..R}|2̌va8@ŽZYέa\B15ᯈrM_ q" {wZ{V7*yM|)(Y65{\@#ve$Qvkl CpKiKnK2,#qZ0Rhy ~z0)84csaT$ub +f:ylHh17nMֲ\DzNf).F^eeu9vNi׳^:LpͩwlJjqJ77oͼc|9v͌` ,_>+7.zeBr#*mɨ>aln8_Dacv vW9GxKYڗ!K硦MMh@BjsΝw_Zyb1v2I"2Bݑ0z +\Fy{@7iTׇ:uki-[ݝYt8]F"54]X1 ka.n\mֺ&-&Vq,bo~fş5Ѿ ٗTiôᇧtyk~)C8'('r\A/ZxħM]v)ZU+K/~K)^{JE>2uqRejJlv_7=eJeʼ5ʵ-eC:ͭqS"1L26eTKoy{ixGʸ!>$F_|e~I 6#= ;qıN +xysbצ{_rM$0\(]/>f#kkzq:xkFQV"-kobHWVu+{H4WSb3,NlZ/kei\ ۼ9u9*ŹYo-ξef'1}!%-_i'6 " t77/MxKviJWZ)y-{oaXE4{y 履|Tͬn/J*m$_liph -IISy+ta"(:MߚiT9Kk\DžXmFamg9ʹq5'{5-DDss{f#ގEͽkNZ;L V>+!笟EÈFêRi& +Y6Ax][x0*@^бpq_,9ej .tTPY57vo ++_E<*ܸ_byY2=ʔ)ѣ7%fsO]Y,"_; m^ 35"sPiu,I}˳s#KP:Aao^O32 o~"ndn+߃} m_ 򿜷 +fVc~]|W𲮞PKݶ+J\V딸kKs vecchu@r-rVeT52&Weszp c,+X!(Wq{Y."ԼWDM U~'Jڃ=m^^Pt3㵬 +τ+YF 'ѷ/QXLF˼A7'?*ᢣ |"@ܢ}Nq\`[Ykknktĵ ߧ1fZo"Cp4VG]tS 8^V" +}{K7זS>?Џ~D_<qcsȔ^o&̵}NYj 3oW ?_Jf'x_ g u$x7(5/е餙>;J &)I/A_M c0^A:E^gp +WII(c[(mcn{#NMY +7N\} \_fRiw!xy;k1ɱ;X5-5i4ٓwn\s9iF8:wxORuD؄XoHroZLˉ㭊 H6_.o<.J8,RBD>={GXڣCpP'm*`5X ĆvaȄKE껮"}yu]`.j{bx[ k+o.fJT! 's q{m]+9MLu1u+E>*<ۢU3sI#m}GEWNjh HԚf5UIݽ.u[NXhw1m$]/07'WA=Pf\7> Ua5-@ߘ$tjԆG{G7TPh"W+ +uDB#>7;z*kۧםG4\8kUfAٲ&`:v[a{Plia&3ZKem4WC(줱89}"yr* 8ӯ~JmE> 9֍_݆>ʴ_PVk#X M/?1Rв e!װؖ^#URecZFv7}K0XZL.-~}4WTZxNg/My  0כv73ax9f7M,n24:cّjF <+e,Aˍg.U(hj]g7z7e.< ZIh! +ǘQ̊䎶϶;E[,uUƧqzb*ɂR㘣pX<M7XH |8y_R>~nѥ6MZ^mU#'M[|R˹[A% 9 ]g6=Ξ#8gUTCUTU@}"ya +d88-$x097ryjlN5biu,z-Dn2z b{_PwNKଌX,;w0;/r˰dn^hXe5gW"jqriƴ8L+1*jH=C{ (cFE]ŪC$-c\{Ks^)KpZjKiP^n\䭧[na>E+Y;{+g+G]YKU=u]Dk0`,O/k^`wj\.C[`=(vnWg=S)&E|8wC@&Rq+ٖ͎p:X2Q:Ap]_@~mw#_ܾBz.:cİVқ>6 l:/*l&k4}.}ayZfcF>+WGI~U*mFhԜv~ f~zVLT9u<#`-b=ohذj b&G>KoyXyk;*.RkKN}Rև>+e[CEBBN$.U8W !Jd#d\TQJ WN˂釮Œ:Gȯ'.M[#K\9naK<)y{xuH"an9^t6dNa؞${8\=:]J@A=73BpCL dؐ nBUkL%cnnz߱YH:s{+ UƞFt 7Xlr۟vF|.Qi0Z7hy b{Ȱ %bSS8X:t[{x5Cl 8 -{KN?%V_n14znYFܙ5eO;pEaIG#i!lB̙lL0t~"aߵ6(5zyuWf(aMv3*#*N2% -^]>" cNt O6z̯.IǪ0Qbrꚲr@7Q#nֻuZ`ki'Ҷ8nSI$NIi(ih%nXsGؽ$|;uwA" """ ""Պ""" ""o~ynDB\sh7}XgGr>pUFn7 xscYbjJ-4 (t)-ߤَ:8_Yyfc٧m #6 #.iH)kIt/*NP+ѥm+(F"#ΐ޵ȹૃ?qAٷYF^.f[xhah 7:HÞylr9AEm1VM%x^8Nh+mdt6WosC0AbZK W9%$]ġ锸6$rLx~pnv.-2Ä`tݶ٠mkOR{>8hHs7k[yN7Xvu,{z~nZ)7]_sϘfnODX4\7iq6cdWxomr谬P ys M w=a1U' ]kGAz#\9j˘l15sqaarUĜ3hθúPWI`Jkx:jv:aF'N᳈ 7Ly,ۏ_]8N^8ZnmiHm |ՙÇS`xu{1fq[x'V׉8 K~:\8d25ۃ+s`cs 4Xۑ>Jgzb [m6p6˘8+pֱ<ɖ ot%4mlc heL."t +4q㌥{s`m]̟+r4HIoW,J'.%úߝS<"S¨^GEKSw&ěxe.;瘉:ݹpNcsMS820 u2O-֝gؔh֔g奮wr-m&^4isH/:N;,nkjdz]n.r6η%y,*^ˣо5.#ğxS.ךH-KʤXKV+$潮cHbR-XUX̕//1.7[ ץHJ|9V)4ɹo{YWEs>ֽ׹s )Vm..Rlr'`v.A4<$`fat-cK7MU&vq[ %~d񽃰һNn>~R8ס/4p&l5 !6݆n^'p|&luX=oVi+gr3kHoNI.wԸxWnӊ+Y^Xo01mc{csׁͧs=vƜBe nMrSh_o=:4'-}k>9wx`$Q]/BWeڌf'wYͶlmk:C=w+¾4 H=}9-؉FQk_ wX5Pݭ aVu|NF@z$M~V+X/pC{^ےKT 5L~#qٽgˑz=xyTC= +yhV-?9'< ߭ уBy[1zoc p~B^QTgl!p6؞CسMʸư!~D'l}^:_Yq7r~ |pOGK{~3]Wc"p!S <7𾱀[_8EJ9& ?U)]~GI/ݛ}kD]S8|<$e{#H^FfZj{㦥SnƍlZ=.->mCeGv7&ҾG&fy|ɑyiy!kKϭ6S>dҗiM ^MxRf2䑥$^s+ҌgB+=5DbJ+aK#k[л.⯤v2yzh7YɞKD6.wjf559ZfHtd䤜maR`48wO*ip6Dg#`>%0&tTF,=wNe$Wlr8~غJkALd7Τ-:v]%t;E-;Kc .;w$eZ7pX""" """ """ ?֊""" ""K2r>}bԋ8WSERz|EW6䣍!ɸM\ao<0 MQ ZYm{@?)-JcmӹCJ63r K kc˘;5u[6 /kŝk]j(ה;pwm!RipNs4iny-ߘs¼)X)^4j'KAIml +1r +Pf2xM3Dcll}WJU9];Aukە^DΘ3pjxqZl;YxY/t{{mlۭX-24XnҾe>Y0KA7Qus3`388nvt,wf:L@!_lՙ1vmu2;as{qU%gl` ڥq$EF O̬Dsl >\马\Ջi=[$x ^W4mz;EgO-l߉~kU

    Һ-!d0n2ڽ~.eC6md'܅L׿b?vrZ˖ X \o`܊A++ 7}%lp~!+e6m6J1z]N#Zٶ|Y3i5 E7V\W3lH1↺(i WNf4:1 of,a6m_/k,.{I6 -m˻_s(̡ΐ@|snS(hF^W5S IsN@{ߚ5d{|r(G]o$d1jL/ > +IQ`fIQuysXzY^_{s{Z[ںCvm@[N2{DB[D.<'6){kY_P4JlzD\Xw!` nn9zv$H:"}Em5#U=JU>x^Y'#!GwE}w>GX9 +Γ;{\85V~Y? `z͇{lű)1z!O^k^k_UGE۷tDEB" +*/W/`scL^6ogT.OL+|?1~ ,fݷ*lKLȘtC?F}ZpIL&6<"8bTҌ٢p֚aaŋ6'#}G{<($Fxu/n( qnſybSw^v~qILK4$-/H'0\!}Ԯ^!`usZO$ܝ[nl 1hԲ(<',svG 719x,Fd4ΔwunF]3w[˧xw= +԰GYuk- 1c`ª]IpSV( 9! :s Q3d`SMsyv8,nҫ/xYʢ⽝ TTK*~hatgFDn$,SuxdYi꣞cKٽ?RR7]ƫ(*li~I.lYвq.8L-xs+}k#?8[+\ ]{Xmy\,8n%9g:kytVnL68^j]~_I_cDn, +a6Q>, kw1hmy.9#3Qq}bܽC#ܬ֏zcVES0䧑#f E6 at/{}ۇ ~a>ftӑ8:ںmᆭ2Ĩ:(ߧҍRiJG1ʇԃw'^Fȕy{Y3N<&XQ嶭vK";%Yiy8};| Y&jYQei/$\XlWdZ ;#*pSVkuXMyܫ5arEiW6ul(㛚EQR褶UQ[\rfb OVUw V= W2=UPU;WK[aQ +lIe2s`sHGZ%lT7&~4X @ W.9%[ +odlo_a]3./h170#e[ YɈ~+|+ҧM?rVo9GW"n)kBxpnnO.wRk>L ҇ɏ(_ ~4"1$mqɴAg+=64aߪɑkP\A'Mf"}Ճ kG&B>JY R9 1ݧXVom"&ܾ^zT"Qp2O'vksnYw8+(gi"Šg~>x@R$xFҌKy13o٩zpy"f~ZV~#6E*/\TF@c^JejlMMs!R./>IT(O#,fj*NE**~}Lߩ +R^X߽_F0H>^}E]7|ھ}w>/!^􇍙5c/0ڊ4< ;ej|1GwI }R6 +.?~7Zp'Fq*9FJͫ׾NJrVhW; XXY.IR _S1?da8?FxV?qFqB0O5_kz]ir"_fs#h

    +,WyhJVmv~af0n@[U]wbZlM7"ۍߒq뎥IBrf)SMIQfF8sqb&^u~_e=Uc<Γvfm~eYx 6/0ٙ^G^z#F#7px]cz)ZF8UZnxgGቄvp!kYx{29w`d؛rӨ65|M'3-y)#LuIK7=2 +ݯlt]qYgq~bOPvnj.f.2~lc@h.Ma:lWN|q$nTZFvMs%Ú=w_GWtsUqh7[qae&.oȩf4ٮ]w_v;lsYqWBȃ@ؓcpqw.ɖjpNK /#5WZف1϶ܕrQU#"[oگ*!:W18s^2a ظ u'Č+%xr^OMR[ęV뢦m{toSY*fxQGp |;[5pW_m/6bb@k+ mWF~!v[[X[b96` Mx~F9(,ӪTi_S.uu19k0ȯ;8Yj֖=x#Wr=E}[KVqy}q9Ťrtsja !1:߳;zǩ|8qT:G}k;p<Mzޫ~y8>lc˵r!wWL؞Zև^9+}ci'sD[k+8|k|n`i^2K#]J4qRZ[mu|}By/fᩡ#oGVvPİM A]4C9G\st҈\=;wr] 8eIߞ6vZyeRM1JfjfFBw>ʛ欪,詶௹M$OozFCWҾ"V*)&A1 +I.s.S(\LT`eqz,h>*S"}ofJlWPiH;׻cNgXMTTRm6[[ɻ)gIEI3@ii/˼B2 JGN]vHAvY\`5UE^AB%檨T**Pk[*8eUNjQ/tB @4,r+0Zq@#~?WJ\Ζ.ٜ0 H<nK .%2ѱmA<_:'WᏤ02@z5f+R0UtqeѸߟUmR+Z\ؼS񇱏:#~כ OMasI V{,&٧B^\w&ۯzCX[eq娫7K44!q6nq%tn@7Vk3E]Up{k{_vÃZcQ6p KluXY5R|s1bنG?m~XƲx[))Vݜ{k_\ZʳN9Nvf9YMw`azWͿ!*>^:|d],UvSDLo]/(!Ɔ!o;%66Io-joo)pz=Uה143ÎǺ z=h{4Mn\f:a$t:FqՋ~IK2fCelҲn 㵹l[ÜD4ZǞyQd׉IھtrEn+?psCu8oÅMN4j\=lSX-&m ʺEauA/^y5M:>/u3f7hS5wO6iRD%ñcz:+{ {¸ MO$Sҽ6"oW}O1?^Y<^<':AC2q},>c8NK6gA:?| +Jj#PXmsYɞV7/N ۑ~Y48J)ZWv1/[hhhOfL0jhn&Vn8b3;{օ߃Yv$cL'&ܒrW +d,s6ջ{9m}RzqGw̕CpX=(6ٰԶO Dz˼1WS5ĆWΉKZn/PƏ]=zOK7wwSBv[{֫#1ə$8ș^wh)P*VezX9gkٺæN Ӧnut4ʝPYzȍQM䣛9~4ZSyf9?5QQ=DDD@DDD@DDъ""" ""pFoڼ%o2A#:>T!]@ۙ*(ΓUw=y^& 8v !wǬWI&PQKs;x7)=*կRnoWc<,Ksŀ.h"ޢyG +K$ maFY Y> +SH;ְ, +F|BO9wp}Gwq\ZnQ +6b(ŒmY=d SrFh/s_~$dlMVtx^nBe .7WR=/~VMgyVՓԹj a KoQ.+R!l1.w)=k6h{E%CTZOz):eT$=dnFXŨ!& Zݶ_ e_l0ݪ۝񝀅rK:qp\dtZUVʈU@Iod +* YT rT(UU9D UEUD( +K*BW%[YQWEE^hѢȄ]!T( +K]TrK* +Z +横 +YPUQTT +eE[(]RR +t{%T&ʈdԸ@r)R +k%PP.Uui PT%V닐sTmʩ@UE^JeC -d( +%PTU@9NK@P,EUD+T*򪥎l3K E{V6_C%70LRF# +fs<$" """ """ ?Ҋ""" ""Tecoy *ZP(8X6!Plk6|jxcd6PmXڂؖr2T9]FSwfMRS5,l4Wim]qI=TPxVHj[ϧ>λWiU8Ym{rimD "R0_ˬpcǢLlF VOAGM'X[oRWVN3Ob,,lB7Q@Zw:.2I 35<Ͷ+TDn7X ҥGs$iq~ R]dCA +Y]gN] NvrURPZ4XQWj0H7~*%+#]*ТY.kQ5ӽ w,w/685d9=7L6ՌdGdZlo=yrwx-> ]Y>Y5ho[21j J.khb9wu /mv9Jͽ^ε-w̕ٮ}'X|WJ^oR  !"~ۀN7qzp<5窋Sh27nM')/U6pVOh.rq~v&^t1eFe7Fե:sIfӽjJѩWKuz~>.U'p"@u-d*%抜TTNh + \y* +TU@VꄡT!DU!,UoeĔ*Tܡ**J@WrDd%;* * +YUB@DT^JP@TD@. (*[tJ* *wDdPQ[TTUTD@,*^ʼygeA]UBP%ǚBRʄ 97uUe˒NIER**+(Wȕ"@UqrWYURP6Tj$]H}o-fѿصәp|F"K"6Z5堛$QDDD@DDD@DDԊ""" """ /NHSOTGܤ,qܮ'ؤ"᠎[YYTS Jk{]:l +1Jcv5_"a*b<薟pf_, v']?.2P6BLx hNn|LzMM##`kZ 0Hߪ\R+-5\e,eq +.VGյ)X. ؤq Ѥy_|^'1$ise2[ā{y8Uhv,zxuQ2ld,ˁOW[%CFCVn~!Z2Vu04q4plZ6n.tq0;UAhܦmHxpVWkדcM.gJfn^_*La{j0TjZ;øSN"PêA1ڰu7jq$s{O4슽}G5wĹcH|Z>Kg8~].O81At6}B.7 +n(IvS?b" +4戀* +]9@,wB +""怨\29 (U +dl!P *P4"uRU +9*]Pt@ +** +D@P*K!.PtTU@9P +d@US5B^JEUD@U!@QTn{P $C_EV@U/uB*A@Rʁr*)一7@URȈUK *҈Ǐ)_][*?׎[Y+_b̵A{^Ekw78r ,D@DDD@DDD@Պ""" """ .>kR4|l-gZҽC%4~nlB/DUғJqy"luwfZ@NW]1ӊ7K8%`U|1Q4\#eTI[}~0 y5,pk܁˒Iq LY-v Sǵ8PחSZܑОzqٙ^[95fZqa K Ϟ61`6*uD6 E6^OU f~wmEVX0Vݬ8\V:I4b@ŜCKM;;˚_Y czXsqRLl {pEP)xzj3FozxP\2= fOF.r U;m7==RӞwR{:R0n,sUEDQUNh +@ +BJ+U&ʍ@SK!* +Q*!P +*,""B]jPT* +"QP$yQUD*('5PrF@.s@*r@rP%VT(Ar 7\$$E@EVqV5t&@J + 9\YPlWQ\B'QPYuH4` R" """ """ ?֊""" """ =\fHӵ? )?:V|Y?6z6 KZ5,9ưY'xs6Sbzc_+Xd&1927[ssş6+"1÷V7EɄSS;ݱ 0{pp/.N̾G !:-dP={*-~`4GtX]׳MRQ G mV|YVSd)4Ylϣ=5^}_*=ھԨ}j=%(@ +UBB" UD@",BQRˑT@QUy (PQT!ZBDT *P" B"]TU (P(TKESWKhBZY 94jq(IߵЅ1л8pB&1F[ֽYu+s51O=j!F8v 4Z(z,~%Q5)0Ȑ_ȑmޫ$Jc-m,6" sO"y +*=|@?jtEQQD@UQPDD"e[ @UPy!NH*<0 ,uD;(vU渕TR +rTUT@BPh@VRR +@q]PʖHsO-: 0hu[$Dq)'%|ۦPD@DDD@DDD@׊""" """ 2WTtytk hmInV% np6oIb0azz/+Į]ºo(nUy],TUay5zHҀ(|(p/jr}/BUT +U.tUWTU*D&ʜK*@QVB&]տk0l{X;ɵ.@ ED,S/;f*tfQzAp9=V$4ӰLp-O2ZZnM/٢8[JIc,Z湦c},P^4lt۳_ !׿X\uMd&yߐ ;ĢE%tp6pZE8"2^HZjJj2ZZ &X֗ڨW3`Xi*Ůtֳ4n"vթfeF0LeBd5f60I_c8~!,:&iy#u u1Jl)t60Kmf_'`:{!yvS؋ot.+OCYE {ILѠB[:k/,Ee$8@Hj2Z-`:|t.#P=X.Iq }ܞ^YMQ%TdlEkumOp1vYĴ97V]FHfb?1j0j='0 1nijUC7tQ^S0okH  F6,[ G1ny,2O% bX[&)K'Y&L;~Pʁ%[iUS#nf(GbOif ̌1:ˎ36%<ۘ]54,p15ѵ[dsm? $x+L;Ŝ~pEl Hiu8٭=MޥVg%TCQSR&b͘$ y_c0|0v8ɨgOX`It} [?,s/LO_$Wţ@\t٦L6ɔT0\[`xujh*|Ξek#Y%{CڵkZ%ruIq#?AQq^u0y)1 #9`J葏laشm 3^55rVFD#'Oܘw8qu*IfYi|Ze&mclK.sv |së`0icLо ep[ kϽ߅~]ác*88Y#܀x39~Ue)'wW 6hugptPUGd$wt@WPDUD@@!@WdT***.˒u[( +TTUwEBUy+eDTʉT樈 +QQ꤮* +H{Do+h +?T"w*,"" """ ""Њ""" """ i߳m֭HL3Z;:X+ݏpJOئv9՗bN]iyUTjQ.*]y>nWGsÍi.{^pv*w v@rj** +9*U[Q9@ +]DD@XZĪ0ZсP4Lt\nm7u]lÌUpl2C1wkj}M$ieq&@7ׂ-nn9W/K1H$kܑnc̹(ITC,0rJHGא76Ťh&$,|3#C/pֽv6uej Vy*iC /|o:/Tv}(&#1]quncmfKQT;ceAGRƻFˎdsY7 8NCOT3EIr6sX֑v$.(GhZ1xk:y>=? 42&iĞn|&.S&lܲSi !wk\54}ͤ/icW$XBX/"{-" + D`lla<o+db1a 3sgBKuNm-̯2UT@; B ǀHU˕ܙbX1Sa7E \/%{$rbS*$1bC{Ed r~h ,Qb01/ s:a.:+0pLK%%v+]$r=̘.Ѥ^0+ lZ\׶Bd/Ks$V0ؚS5R rӱ5Ԁ9zPMv7>.`tJcKy>wcj2Jț,F_" :oU2I2w׹W;:>f5I\o;\ڻsS r4=-pi &aa} $9tq" EP! cCZV7hjh概IMNY,aqޥ~*c=،dQ`A瑪u=KM' 2FHsKP\[i%FMiUք-*lرNG ,mrK ޾%#G%4U]q]UЈ7j|IAP絒1 lp}`l{cܝs}龟H{_ejL~q2hmL{Cmխq+n-}tn#,I0t XwK\>xqI{j:fKX=򽣖G<qI % Ȫ* ( + *JTV[N =s{j{Mn|meixәjNuGբZ?֗ú203OX UK UYT *" uP4䀢*K (UQE^h  +"DB*UWTIFژ6$mπ@TTlӗjO}"" """ ""ъ""" """ +z.:z?dbf=pFHkLq?H:ky؇vfj(v3t. @vܺe|*y > +* DD8+ }v|1Qx]@rڽr^V/T>ۘ]tT + +ȀPU[RȀ +$@UUqU@y* B8ZlMTfhxbsh ++(Ģ|31-s\A;xn6ŮiVuÛG: "|4͓{4vrK,цk${nnuq]R@[X' p +7;P'NlV 7ݭOP! Xn`o -k[%<}4L'Lmlmlk[.JQ.(2R2Ck,6_H&s^Ȱ.Cqbkfx`|Zۤٷs.lMŹy䀪B@VdUE@PP] +{@"rK (ID,qV<վ[H q܉'&I"y~$8REP\0Rpoڡ|s .Z.\ACZ9x\qpo&*)㑵2F868='tR  `R;nD\$lr.@[0MdLxnD{חMƼU Vȹ1- r_ +184lw'04.9#ǐ:X M(天nik#n;9/F*|@Fx~!Y{Qft$gƨt'&zicD1hbmƨh١@0>R,Ğ2a>=Im0l~E{_AX#gǦu>p5!?E ,ӇK5yůa #/)̓ktn݃IáQpH0ol9@ UR UD@ +U9+{T +D@@DVʄ_dU,B@9Ȋtv^#fz7Y6?aԨ]DDD@DDD@DDҊ""" """ +T␗sXI0s h' VRȻWJZ)(G6wG#{\XJX s2A_\5W\Nߨ`@{|*K(JI@PU\UPVs\kwɼҰ]z/kps 9y]tqU@r\QRUouǚyQ⨠{5GwKtT}LҪq]‹gjPz\Ǘo#Y']pK`77A\d&V/(L#Ct7-uk +" (QBdD( +"B]NHo3iյ@}=I;n}MX_M$B)s@^X]rn.Z-lӇfwT"k\l@]o]J 4k;Xyξ1R5c%qi l,w Y_uuV>G<ɲPU8d$_t.'fn!zۈOs841X>w" '|KRJUgpxgE91wDjm96 ~d${H[X.nkNH.Q"qRȡqw ?0bUnND.((hM5Q>i5LT::VXH2$co"77¬ +,vqO&Pc{. M3)^一$[ũ*Y*8\a=vQzvQ$lw'049擇b=@F\G mvBqHs˃)3A!=6܎K(0uTpԇO@.i2ӆ81J-{_C{rR.ɣ횩lo"j4,.(*%@?]%Mɺ 9iqLElۇ{s 98%M`d`5X54`&6=Nq NE,q5ZHnID fO#4e(tI#bݒy7=b|?i\@"u:ÇCyS-f +|EY3/ndNip/OfKNZ[Q%pi]w/:'2 +7~ᙒ7 weK1;Tb?(Ž+'"){NGg\% gvRDд7_^ fd"zsf4{eϨpB8ʴG$FIN6T9˩ pGSTu=n.6S'd|;#S686H@|\yE>h2"kd{'186] {HzP|UFXb׀F>K l#kWTx +X2;X=!2̏0@wW`N +i .0qS>ee|a]/R J @UB""ETj*ĠWYT\E[*T%km@ UaZ|CĨ]ccuC%^uUD 5" """ """ ?ӊ""" """ -y,sgJXu;'A`nq~6v"BĪ3.p٣ %qu^֘.;l L#Լ%zݫEpex+w +UHDʨ +^tDAs\. U#[8<^뢻e;  +^QWs@?^j8o?"~\"45 ooڦq7Pӊ\v{W;TPXy>T*뱻غÐ8 {)EF)%]9[k7.}֌O&.$9R1*|&#-DM>DΜ 4|N*L{Q8i0`AiZ`^K[jce#nj O*PLlak  ayٛnYê+/.ELiL3o>[NҾR )h|r1{O">TWySN(Z?B55Rm\Qiƞظcm^Z'51cxUShb1}J$d[{r.ĝLo5dνDW [espl؆"KliGnm!c}sƲ*`Ariq>nżmsf8aXo Npwkr c2?EeUkEdvmmE5%.F_{B:3<̵2־8}"AEtaX~|5T=mf,K*\5K_+G@@2;ۥ{S7ir3)cf|I=IܝbYB +iוڻHdcN^ӹB\1؛ a +S/;Sy ]7ږ4ʓy)H ~9̨M?J> P Y]̱X+D:v*2̧]X@KL븆jq$qrz 1n*`N)۷<҆p+=y + ++se=Ƃzˍ8.|X$aLnw=/+9ǩhcӆ%'sMź\XTC-ߪp^uGMP6x}}nR4wzyO>a%iz9qM,#8e=t|8{}{6θ96O&bE{m>#jLh0㨔a!7@DʜhhT5v0{okH>YNMx}D}L +0H':cL{pkZKK~p \sYxY%GbXA ֽ SٚJZZl9 4aq$ϖYV0||n>SEՏr7f6AVͿ#⣈&2/H6]9aߨ>eF66Vzl`y~E˵OˏI龝8ŚzJlUcsXCw5uYɳ}v\o=dC䷉;Ӭ+$>a1Pfr|{-=A +- SsP[0清Dy<<&Y6_4I[\2˘stcA+H(qeW-}zY7ūY#+† [=~W l|+`W³=(,P[Gد U/!p[R~ʱ&Oƫ'{p1G{%q̂6lÌTU?sH85y68OmC9SȾ.m\bXzɣ0?};?{q1e^pT>X]P+&S`8,=i35ߢTQ+o*? 3oGmoI3N]kSRPѳ4_&izAD~p+;5eK0 , cGBB" """ """ ?Ԋ""" """ c2e+b sV\8<bkA"AIa"c2<P k$kmrrFU\`W#W+ꪨT t@ۅ_C +K #KE3qK5Ǯ{]Ŀ'eGҺXitF Ȱ6|T|C +tnct7]]N;'@;_qqԦedL3vsOp?0}70*S<`|RN!yJ6cd 88Pe @{TpfHԾyQd*.ֽ~ +P >jmPۃgwD7S%*H{TLFyŧltiV>\ b0JNaò%k~g}HW|5?VXOʒVG/9a?F ɮO)e#\RE&tf'7%%B|`Q3-/b+!h)y$2}QAP^̧/{GئAΰ*P<1y PBGm OGĈ*$y#0فo*ΎE~xO9,wVi%ܷBqIgbwL&.>NbqƕeMT*Ab?+1~3?WVr=-'r|P91|T |^nK>o|'C1D=P5sI԰;ƕ+s^υ,k~qH#ߕTQՁs>xq/'ɟfJo9tdЗrN-Lw'`}F {YD>+jx$9i}xpN eO)|:0N7A 0d.;sK̯u +P[lZd;rXG򠢉PRtto/'vYN au0hIYͰ$zAT?j%C1A湞ZCGezb>MJaT矵dU jPik)\_jsUcyc#K\qDzԨ`<ʴ3~=dISQ9f0ؐl :[);3В۱轻.,}Dm]EW]4QkA}DNfa|Bht3E3=+o`AͿC*,̏0,T%Fkoa>-.A^,j4aOɋ [ZwK˯.`ԭO Zj yG5Sv.Zcmn~4 +xGĹ8MQ,'E0hcIwu;{%p%Vϱ6'زKc{hc mos^ QkN2}$'إ23O 0LRڊLk%X~,%ڍXe\{R&՚ KI}7[ ,u>|7f[p{nIve"T +PDU@ ( +sT@ +lrEE^H +*j]Q]PUU@P@r]LYp.4:"=E8X5`Ɇyd{|(hvV7^ň!!D@DDD@DDՊ""" """ W9tN!~rL79z]ܨ^5'⅀M4:%k@ۃ TY>L.n_ +j`_w :<}z/7UT.]QWǚ@xڤZݪݓT}`+vRtP*^(Ils~ Ui  |ZԧnVΰG4ƕe'm)z:Մ|(@.;'UZKYa/VF̽`\\+d_:VI0kZv!GȓA@se78y`xw1EN>}#p%O18EåwFz4u$),cXZl9 E(|65>WܩX֋Qhs}}>="y: +:|5kNm~N%ߝ/c?ep<4A kǴ8o#{<d9"W·Qs I]o$a)l?unIH;/al2Ob8ˈbu1BǺG2 W%wd[>6Ȳ]{hѽHp,OM]Q8aþH"…\M4iY3DMb,JpSfNQF 8ԟ$oGc'*>X`*&o哂VOFd!?{]*}/+ yj6`/('5Dh QfGE3HOإ5U\ɖZ^&97dq;)"@U uƫ@{x +Y~-P +v7oجl{ɺ,{}qhi$!kqqaY7'd6*=6 n2>tåٲ 7-pݮ~"㪈"bYe$mnSa6#M񭢃;#ͮ=F㚖A]B^ʆ4٥S\މ>/z)bVYw>eʾzǗ611׀=)i DLt($3&lWw}7R'/AtOcDKM㝷/s`kϥ/=KTTr9\Q(e<?YJ^ ezTNob\UT䜐 6E@v@S$PIU`JMZt%.A|[W1ۧ1Eٳy24TK9 wOmka#}[ !!D@DDD@DD֊""" """ ^Exw#$q' "ہq|6q8!ĩK$#[cc25`lm)Vj>kz0\֩ B计@9*ETa|8 }&lR~!+)yٷp{n%Q,.xy?%aSQ3Hعwڜv ฮAInM5lz۹ki枇u{ Oe pF - h>zW}Q1>OR/J8L^ܹ۱ڟʺSohc/6\l6]@P40X *Bt@P +dS*DDR; V} "Rf,E)N=Av琰Vov[L$cbN={ Mv5t2/ ӸF ,@Yzgix4qy*p֣s vpoڦ&HPP4nT*!D +"\UPK"tTbY d{$8O4ṟȕ@P +K]cl+<6bHV3. :sG. y#V%Rx&(l>,IWtM'5{AkADT g5<=E ;$.{{m+UyI=.S\rX{epx3 Up3}cEƴӱ]G8 bvctNk˃C"N )n`Y,dUNw7ۡWwx3Y:7UCy-T4m8 +@isI_!tlq]q 3,=|p<:hvq=V=dؓ"qjg .}[e]|e6+HG@7-n}M-+|1[KoA]9o~1:-uK] +{xcxSA4iZ~D ߙP%@ʈ$F57v~MJJ2/h9zʑfHܮJT )e[%.PDT%*?py!$F򺌲mSoԐ򿠙Ϥ04ZF" """ """ ?׊""" """ HX8~m1:z9c`7ptr.n7>B@& S6!V\. ̒ܩ/x{ нM%{7 .]#@RTT]Uu_H^243^ ayهMAx]jy]jTBsUTDQR|\]IP-7*֩a#72䰋p{ski^/֐O2ֽpeWf,fLS =AߺSüuv/,kf%msnDtXl,VD?X"[1ϱSev~U4umڬRں(3/ΌZ׃wr/}7#`) $O~W<\-s7d[(Ao> JQuKbyhpiq$^k8XICQŞT0vx#нǕ%6Heݡxv:o{sE3W[X[|p0;dTV?c<{z%VI}?9ܚ!pۊI|؆ZV毀UnSpI_JekAt~**H9usf+%U2]A-,6rX'ʢaa3=ʧ$V<0bKfw+Ɏ^0L/ΆAY ]IKH,r56 zl}ƪx݋uG)<Ӓ0m`R7~A%iqhkǭhnN%H + +1HY<U4j2A)=軦7b7@y2{p}!ic ɂNR@G+s6 Ldkq{Fz͇b_ʊ&:ԔNp^B\ך%輩dO@d}EFL& BE1G( '4ZPonv\5hv,W +w;6wخ8Ot}I8#)ح#|$iST edzn]pB%CI8QgTqNGYY(⩙HZ֏I~B +nEbMR>8o̅bg,' !s}p$ ,X2WTVT;j-{\w!m2䒢8aU6|٭lq=v &35h-TDAEkg$a>!uiF׽ȷ0#G hFZ،D* d1ǬgvU r qΖX|ncN=8,?R^X; kDD WNpP{/#WWEZq`mrpg+<CRpR5i}%Eæ==Dc7w.~3W*_y7C :3cTչݓ]JnoblȚzl-h>Il64X54{OR|I*x37 qIj_a7 k,mCEOWIZgJ#y{2}vy@~L)udꐢтI8/lpjGk@$#IsL7Hy1ʂ#.-<2O{Ը?4=4\s 4r.`9<˨z+|AVt0G]Oѡa%qRc[(Mx̨yGism`A'sϲVd0sp-̯{`y#Y75 %r 'Q0ԜA41AU4Jt1sn;nv(mA n#kci-sw@m-'R*E/T_[p\=lQk-qPyyQ f!c{p,z>J¡X wxrYWYvk[ܦ^P݆ft~2}k،U30{>o+(XczªڠDYJXs!we4NjgA^^TϽLoVgE;&~Uq, +}Ob ^6rqS 6װU N]`K'/)6)2w@s$sRPV6)${ZXgEmDc̓O$Tw +oWPDߛ/B8V?ه-P1-K}UOחPk?Rr\{8&\(udpR?QS.8Ip)<kps\]##p{*ﺔ檀YW%DʖUP $lhnye¢f⑖ E- ƙ0DDD@DDD@DDЊ""" """ \ ]'dеpQwdp"oP ހݨ]lWxR88[DUEerb; p.45B}v0v~K`nu@@.Dwb.2F~'`^W +8T%`c3Y:~mm?Zib)o^Y]t^1D?\'<(K-d'S)ӾFD\-,s:Ip u[YJeU6Ʒ$V#moVuqo4PC[O}F/t->A@]+f +X`[@7ݪ坼S䌝Z[~C~6+KZȥ ǵ6]U.Da* +nj&?̗XR.-}\'ߵ&%y3<, f_+(D9@ʗe NiZK%E1h/_"= >BqJg4PFmJ ct⎶!9g^$ʘpjXX-յ"a[yCn=v59Veoe y@c3]l@tڟ{i`.%,LCg9$;&g ɟeI'^[}{;J\tx a /~Me\$ l{Hπ;jJxUO01 llA#а^kI. ύZF8/_o<G!} +xURHQɣ};-5;nZ柁wIx(!|c߱MG5Rb.2KEbϸeJ1u&d?353epPzV=lɔuLVG5őmG7~dnJ4=V7 ^a[F $d*4(U›<z$٣wgڡ>Sv$ڶlxY|< [7j)(u3+֩T/$]={qOKJo3+#کSuC)B`̘?ܧN.QBy=l²sJG=G̿^EoG){| +g;6wءL+*|i~jhg;Yԓ9B x~ lb`=]P)ׇQga9Tv97oKZo!~7}\[$ n5R~IA(s{_&XY:Z4zD'aaA8K*])^ρ#~z{h s^?mb A#3I lQ96w^`a|gdߛ\;ådycXATr%a/*Hu.o7;5E5M`p+~1ߵ1|eR>;RDv}n?bB(7 hcgIۨGM_ `| Á vKus딇iTйT[[0ˈ? _QAGVHiP cag8{6G#/k;@#n>˫зr7?5Z˶*| #_hB6oYt]:u%D@.L渪rcT.\gwq6@{._w K'$U +*ЂPUET$UQ} Ճ#W.j}F~#򥦽{4CX/ 8{䑺V֐ӹib aQ&8$s>ł|>@”7=|nNg22n %135Uh iz<eLKukZ} UyvTձѴKiEI\ߔ6ր@ `,zwV4c,OJ74+qi򌇴wT@~.x;7ah,G*@TtMicÁiԪ7&nUk#?AſoLn@OJpВ1 +]0`F1sw/8Y+7OS>, .cyCZWC\K=q,ד;W8hws?ndgm{rW3(8YXZ!sȱu1l9YH1G%Y19&yyOcoir%pFދNqEl-js^|UT$e EXG2~i|P~Whr&([ ۝$[gϕDŽ!ߡ{)dmWf:xD87S9B<(^y6 ~7J +}Ȋ@ۨ)7vri?zqwڥG3yC&8yK q`j0e\>m!wu}@~ TO4Mx1{}aS_\Hʡ,ִzPQs//ʖ6F@ p0fnTA4u߮Y`&9 +mgAyL yd{}- s5p/Z, 5#;4As_١߾Rż{bo|8Xm̒k~*B(@Y7S#ʘ +hXo;)Z%`4i|yj5)R_3Zv+ F|2{jǣ$dٯoV{`G6RgZVRvŧkXW"4~/{އ|:z\loÎ!Up򻶏%p}bS`LH< oŎ &ilzդt B+KO",T? <(jT rsUrԙCI=Zwc#qe@1bZX5ݣf7b\^BX#{20GM3@3?M lOS;8Ǭ6`[uG}v1\:8);j{cqcK @PW |2;ơwS)A|v][@qh[e򤪸܉\> +!ŸͳE`tnl?je<g  oQ2Ք3' -E3D_1ߙ:H> i&|:M > +,jWyRVOCC$|k[`uD{CuEl.h޹(_)>W0&餂(Gύv,i Nf.[59,T#1MKN &u.Db^<n4"Y.c-Oy^-%s|+Ų|dk}mp ZY0zl~JZ#l曋|ň7nXG]:,$ٲQ\<ݫoy#3G!y/26 \/xNd:)bֶ4jgu^U怰Y&pW/ŁD{uCeEUKYQWUT@/uUU˚ x-OOf{ A-76p-q""" """ Ҋ""" """ )ˉeS 5T2$2m:^ExSaU@;\UBW :ecZ Mumbnlzgץ.6>Oqz=u9 : KLro4Ƭjct3^>¼melwW;JUT"@a*uTF e{x42Hclpe!)l 'G Gfj8ooڡ2y/a ?uwl˜˙it'LLl}aT d^耰xO9Zx]F^=BݸGj|[8{CDy#M'~ PE֬nl`uq Y +AV'y?i]} ay[id5rfmvߋnyqRK5h6hh>IJ~\ՈEM#[q7; >7h(`Ǝ{4>L[`ඝ6=w^聏O9ZL.J_Q湎5q7n r<^sBCdmJ#D@ BPUzo;+10\KTƳ ݎ~G{] 31%0HA@ O.H>m 8k$?>K|tĸB=Aq4ncb5}{%\H)LcB}DWS+ +{.w)1>!byuh49I~p?=U+@y; ˔rEi j{;h.,7eQ.a~> ^-ՖH4O#s PRx(l7vpLsk-88zecTy8e٤.gn~=|IQ`cLnm'{VE%*"kz$H}Ϥny !e"A'`7Y +i`&5{%˙~+QGGL1 =K+w'įIQ'_*bUJ qI 7֞Yx^^ +d^tnvn((懂"{[\d,s{35b׶㕔UR )̃U}tƞB;X$D=G - ;qdd9g6'nޤK?"J6( +J7BP@wT 9x_ux8e+\6\W :Dn.R P` 9O?R=qpӵL,їx|S9d-7^c3ɻ'vVF] PmT+^jɺ"ϴwGԓ9Bx&ا5ǰgޏP1ti Qs28&>%#6zY{\ NVxkO̅'i{o4.cr`zs. 3QD]O mV/k aLtR2G ,c7Kir@WYr@(P"ZTTUK(PTU**" '4DQQrg1I[@˒Xn=]WiW4:FP:SK" +Fب@;M#䳢>SY>qrgT>6QXsɂmx=S~qEbDu8L93~wڦ$s +N~&qEO6|chU>y;OڡΜCaw.5H`H*]`*ZxhF&mz:( ^T 7D:jdP1$xF#dm .:s=p +$ ݓjT6غ*\w=EI|lU :Km%D@QU@@UP )t'$ 7K@URU:9*Y/eB.r 檀cU+_Nd³lrIm~RռbN*[3b]F:" """ """ ?Ԋ""" """ ,䷉Pg*hu tIU8c󊉪7r=n<8;Ƈ9<¼4Ti%h܋r}"ۮ H],FΖ0OB8lO=W6zz4K\\uQ~X<ҡ.c\{w\qp$qL.֪VBphWS/f75 ͘F@qm ~]rv@bUF{8֙ a Xw$ ,n8,훶tnCM.{1 6;qJǵRr`,b՜W$}ݬk`oHHL'g 2Js;>K]{ǚw/!Tѭnڃ~ݽܭ Gq ]I+ jcZv<ì'T>fYpù9*XCgId7sD}@)?ĸcnCI$:8GwJFNŚ iRt=w>қۆMes7r X-{<~|[~ 00Ӱ40; ,՗3FQ5Av!vQP Ç\B%D:dpzq?)8{\Q{~Ս1i(Sܞ:]sO CVZXwTQHkVr%G%82HO߱H'tc[,7O[~<j VVqdoءn 6f(=t˭y5=/LU,}ά3h#~3yFL U0;,Üg1`>G<0HYma-. zQp wd\$\$U- ,s.HkЃmNĽ`ZWCTb*F$堀E'&>湳 Of Y`Yf,Jzhp?\ %0W${m+ #wF<W|Ţ\mafomR* M cִX9%|٩$F>$a)%vG9oy0p0^ǔT:\o%3(QU@T檀UPUDUB* Rꪗ@UQU +U9"Z\䄟{ +Pk(3Ip=у%NT# +Ff@bTD@DDD@DDD@Պ""" """ /%\h^=kK\48b"_@mDb^Tswt8cY.#f{{i縗91nI$ܓ<{=KOP \iߩRi_5eAȪ%Ks*7je6>0/jo$#ݡ:R.s 9pHD@QT +UQUDK*Nh +^j +] ^"Dn ] +r@Ӛ)t^ʪP*QQu^JVtU,yCf1\}B6\iƅu~p)U; Xr{qo3W9#@#g%%LL{^&b.9*a, Ex˘:7 ƾ㝎gXA՟cХs˔o~MA\,Hƺ7; +u!D߅  oQga ,_޷?6+/`TJٲRAHxo퍲`6M;C+[-y !%4yVv5칎H7M{QbN9/.xx#h>6 P:.8ܴIF^ӷQq +b`hΒGԦH<4VײwaT3I'R~,iQI!j)aGŪ=<Zf{{{7YCFp) nzuswSorsn,E:(ecŌ6}w +x+df*Ә9, Mo;_g XwVj-[[1?\~n͘d%l:ۃ{]^CÊ*P錑vdI2%PUTu^hР] + ET +YltU@,U)uETqqd^\mu +TXXI9#` \ڛ Xٙ(JUWIZ$DDD@DDD@DD֊""" """ ""}8sb2I69#cX6k3kI%^xj^HԘT^ցMU4L-Ω 9c֟ =L<0خL T 0uHNʈgebCD+֏1gГݣu=„/ЃRw_0W֣""U9@UU*ADUTBB쨈 +.DD$""P@"RʪYPuD @PsNHT@T**\s2Qljf67_[Ү>"2B41ُhA<6ck/U67Nz$os]ȏFXcai jm<#{Ki\xyٳ +]>;~[uiuQҲ~HkhCA/m'Ա]?#Pk~j˾N8F#$J4oqo{u2ڌ>R??I۫_5p #ϑ.oRQJ;T. ,jןTj-.;w{ @Z7kA@rJ0E!7D( *bD0M&pop^SqΆ5Ƚ':O["WX 8yK$. X<3!l!D A<,wW2ԂK'ͫ"xݣ_޽=_<3v$L"R1QE`. ay +Σ|Z@;5 W_eUAcfn e3'G#蝠b۞;N `Y>02G|$ o#+Tޫ]'i% ;y͂ab}e\(aT}՚4[ᆱX[y QREاkt_d˲v6{ioq+qpݫy^6 +퇱{'puBKu;*sU"򱽴^{cуLav[ըǒ.ЂnUT*%В*]UDDDDUQT@@T*uRdJ@Ȋ5RTBTB"ZȀ"", +T* * (UP *5R$UQP *JU9*eBQEB@ETD䈀 PP(SȄ]Po4 |UU-v@Rː+]"AVaSI+B" 99FAp7d7 yQo[b^ƀȈ""" """ Њ""" """ "".+bʞ&ZO{0˶Dhimkl%< 7 +ߠ=UP97 w\NؠNj[Yq% +tqx 溸CrA_v/Mלvf交^hUK]UTU@U +Q.UD@UEK*QBD@P +UQUDNhPT (*樗U@"nU% **Ӛ],D@*(U*" (v@( +PEK+Uq@Rꤠt( + @!@ ++ +9.7@.u@ +_d@U+BPU6s ٷCTըJcnV]IP+M_OXHFRj$B +Y姚;hAؖśa1\::H{]7L[V/m>! KY$ЛȞq?v _S.{/~wu*s&%l,19O7a!i>/Wc 7>XHOL:Gg$; ÅPR>y$4kӨCeܻs3eqgCZRb$onŮm͊X%=LMM,!k`9^XٶM՟šg I@v:wlni+92bp]D&KҴ4@0eV$=ܯ,SªS:ďw { hsu _ʘ6!c㕰u+ia@h$,.hqp4fW@PQ\UQEQTK +odU^ + K+)uBFW]unqUJm x qpb.,FǦ + +l1vl9ETs^b.n'Kn5\\n`Q """ """ ?Ҋ""" """ ""K>YAl&!Zܶ0OK 6VPNpp'g*?p<U@ T% + + DURtUR耪*]hEcY˒vu?Hve7r Zƪ[PyHz =D@neT9g}2qk\7m!r<7 =K_ĩ2&n{=䀺is3\1=Zk؄5q(%s+5[mI#xkX` WXϘ^o|JL$~Wlk9=ǘU +*welb8GGyQzV-=E6\4sOBp+Ɫ&䨩`c_qqC7!Wғ} a\{ A/KYb.=f6aƞ}]+fs!D苚,9θmݧ{ V;p\K*bIܓ2յ{S7XxTD>E88x#٭G7C$}q +jV1/c5?w0ùg*qXۀCj"?d3txM}  :=fok`<@9*h<ҪhS$5n.ù-WÄ؜u13v ]7~v(5XgS XNLxEC?}bc]f 4;Vu7Y +A8,˅Rˢ*a%cd P{:;og t?Aѓel cIeh*b'Khm,_t,ke +vg CJ/~*)pxpZ^\(#cdwih#]y.ez7FEr9Ǜ8s')1$%k*bdncѢ9%e\e3?Ӽ>beuyt1~Sꦦ[[h ndQ[.\;)F l-y7% \$-/'߹zh)*# p²UULPTAUHǝs9 O 6Eh q$ܞRL2I{gD%|r@Zy5:W4 p {;X-d.)%ilښ4Ǥ<%wyb*=P!CX#,N3ft82~*nm wt/u~d%hp-UeK4 "gJ ދp.Udj\ } ]<0 1H9!AK-#PX^c 6u܎KìO +e<5 +鹇` ;d ,\K_H ]{kt6ě`,&I-3M $5, .maYVb j[UUZ"F>X_o( '3a)?tC%w]QRIA=ujy.ˍTl4D$} W*f[ML@|޺;uvTZ**eBPPWTQ☾=:*Xं`@g{G9o3oY,w4Cx JHx&t˱jt\)ُc{, ?c5G[Ks "TtxSH1j@/#@-D70H"" ijD;.1]W]n5IѺIYͺ@իk[ßEab8d i-!q;p[q{pUSAT6bdt'q&пMHXzÈkK020CZHݏ,S'Yj);C۸ ( {.h:&p+L. ?(#v#@88u^8sʉ}S5Zמ~+/p5t5%;z ֓hxJθ]?do}x`tlGu{kMN\ƎGvݮ!,mc:$b<ɗ=*j$ƌU5zآD8zMvpUQ3TFa +Nl9i7q`AGYRC{ok軘>یA\G@`0h4]pX@N`SIE\ec<ޯqh.ӫ_ 'O@MP&($mcX«snKE|XKb5n#mx66^ݵ!@ucSAsYT1&Nؕ0JCdychXKlz,ۛb/up䜠E2mNI$wuerX`gabS40x/s.Fu,y"Ϋ)kidml͍"Pֿ`ln9%@Vs|\-u/ؑq⾳ʖ="8<;Z Y#o=,kX>#eD@ \D@QEUBUP(JTU~ +\J@qUDUPJ9'4l9qtJMuK9"⪀q%9]. + +^>ĩ*zh׵é]۔u@J;"Ӛ;*Uo ]qTnR( +._uGX@sD*)u@D;; (uDP*Wr@PK +UTlM5YT d%U#W'Eaؠ.6˜gP\?sYp +*Nj7jྍݨڤzڽM 3WFnЄWӜXN7@|ڹrT tQʗC*ʪDP%,@Rꠠ*tt@UQ KB @P抅 +JVC\׀ZCmcRt1^dk))` +xsqJ;n&N- 2m^+MA4P#ZӱqkK|`rV? g>lYP8{6?Xϵv8?(A_SH@\Y4ReZVԒ#tF E'qas$t|* G!.h$|n,N>Ge;ik.ihWЃ!*AbUy]]TjU.7Acl ˚*eT$hH RAa{UETD TPUU(Tk*^.D*tvk(6md7}6T\ewv !DMUpQr& \ %Z)g+8uԾ@DDD@DDD@֊""" """ "" [xkv(ɱ#xE\,O]ܩ,u䭉_tOňہ~7ۘ dlY^{Bܧ~N_DR䪁/\yJ)wk ,PK}3st& y%مTrQTL׺Oh pkm m{V!3NZQS4nH^]y333Nk8a”̨aYlѳCp"L{.1Jٛ~cps%^e %p lykZ \Ƶˤ(~.RT)%\76B#ic-Ѓ)PŋK3|- XE_qb-*f, [PȜEC `seiB, 2gō qBbK]mdLLJڪY?U8,摸譚/`8IVV:h$C v D^W|,psK ]i8_HVG LC_m>( )g?:2GR9пLE+k WeV ,5qaPvA_Q 69ӵ^-$q +a@ϥ>pSSRGKEZާϸcc0zOLǹY.Zɽ6suV8kQ'*75><= 9[pQ k۩HCyjʙ *fwUd.-HE=s48>Fgg[퇭V9teT>0RDEɨI]ͳAMg,2Y&:ɤx`=j)g|. +LKUwC n! ;s3pe,"~"x]b/S?WVtΞ6Tl VWb$q ò#M&Usu'{׳ú[J7G_3fgbOC#S{`HZs_ƞ^A:$#Fޫ SKCG_ s4u۴\nB6WngĪp>iatyܚ=7>1!¬pPRShT%{ݻZ7X?tB]lH${+yEux:jR84;K\\$<$b2ukpcjUA,c:ϙo0q_ +{K+e{b$k&Ĵ Uљ|- {KE49w$]r>AREON㍭cG b~OoGھ0F֓rִ_-uXy?=[}E=>ǍCqԖW+xhpe +t)aV;A=lmzVD:歨8G$ŀ3P2666&ڭВLMR9cl]Jwixn}..#: +,o96 A;P "f'JZ=" {߫ f]`K($ ﵖE6ր6@OC$"k# hklyn p̹1Y^fG#C pHK{;nIl/lU`Y 'c! c=5r_8=\i"KcYn.m0fFJ*gqpi 6%{]'e[ huA2>6/ӨN YVbųQ&G-=MBڭٷ$bH2~= -\wn$_ek'M"9<5>#7wInn2F5GcSE҉dvtac]hp,O-3WL=8\%ͼJ }@Zp+3iigtl.lqrEZ\3W/RH>#yX Of-ako˗V^%'Qұ7Lmq-cP/ bXT>.{3&I-mI::9״piX lAإ5$tQcXִz@pd,h 99YVʲ' Ws0@{92QatAڽ#nM۩ 4rrG4bX ՚ٵDػH㉭tlb;]uUng< &ddl5lv4.,tX.leʸ3xt5srIWM<:VJ@"Z?<᷵7^]:FM#ii {(*AM&yh7p- I$Kl>±[-*IX`Έ8zR U_M͏&{Z]|͸nD+&kav/vB ypCnO0Y7%as (c7-kw=Ă\I$9=K3vMMRd^]vݯX .#n)V7zidʘ_rX\4\;ԮX9<םry8*=#]קn QsI(1d]9. Tpe@B%E^.F_+J6 +h-K@vy"tx(ʥ/-|j]ʢDDD@DDD@׊""" """ "" ya& YJyY9;6H' qmq|ጋ(UWu%s)q +Lc w }iyS?P \n6TNHq#rc-> [mw}p\ ߺNiuj=_Zˈr +KCPʗ@r.KYU7Vo&2$I!W7^&t|.l:g6N9um8onD@YJJ6 +N֎n06h>L[M 6) ࣢( ]P`֑Y(F\i\KY4ktQn@,!%enqz>BACu_\{ ͘ OH ?W|z\A] dpEI"M5D1?g<\$:Uló= 3ÇHHá_Pd .c//k!٦F5 {o˒)cD1k@ 04[;UT9pyb B7k +jGEE+g q#=AB B˙,jPI1Z%hǩkok +lpV4>lƏw\Ȁ1WS1 PE)k,,wػYp4X{*cBAv6^DrV^}e][3TصvlC]barrymsen%-\02,b_N靻_WFi>\ĕO&- 9٢ú9 OQI=ES馒ڝYֵf R.Skk"sd4 4q%e$SK-M]m!FJֱ<ݦFJ֓Դ5{^7]ΚY&qzv}k*crD/#cuDMpax9fLּ758H'{mBfC KL>Fpxw#I9X<#ّ|Om#e E+}>ns9&Ts2[r:bX/6+Zj*'tmslldna{rn؃>1LF#4n>7@{( *$Sb؅l'YKE]v 4WKb  4jys h imjG5YQ,ZZ +3Gٽĸդwn<pXsLZ{b'-(nis[!}.bfVT4=9~ ƸC!u48{Ec8\59y!0t`mkgpB@x~ A:hhsA.&׽kN LʪcB$s ukL۪|SȤ{Bؘٽ`h /r@ܫ1|%FH .7p`:6ln1X5̩Nc9(K&?禢tg@b G=VFGaWF(.㕺Gɹ @7[(hCe&:bǵ> 7eRfjbh] =WY~Dݸo/깟]+C$TXV>˃+lyl|t}ͮp56v纺8]dYP-T,lݔLˍs=F8->?Hdb8Kgg-.tè S r8k7SŠ=#+y M@nD+/q o/eZ34"{;F5l,9$UA{wM,؞5mԇH@X YMg +!$5W)EcnIWSM'nANZ Xv7r샘jzij+JtX`#Pa }7p= ,Q&}T1oy*,z?7[zW}f!TTlC 3&8mcY^K"ѥi2h '3N;5 򒡚.U8㥒1u@֗I(XD@DDD@DDЊ""" """ "" tm'`SnP_ɬ;P{j?PM#[vؽs^ z >nXs]][9].PFwTUbؾXCػhBOmۅל]v^6]i@uuū$K/BQt'$+40U9yżgpNή<:p NyS*ȹ,=ueTZ8d|$;H9 ͗S0?*B%5skZSA+E<e\S!p2w Y[Ա#&7kٺxx+0)?PZ~K%8͝-\>oYHSwݲ0c={Ƹ`/hXem4RTůw7nx4o,ϵN ƾ`n|m^+RRZ,ysYJzG`9r@eL3)&l]m<ÃKHB$Tf'G6TMHb E]u&IİY1f!+dSG5,s%7|q;s3?Èqؘ*wv;Kwrl@1 ,ͨ٩wf6Q$[}|2!dq*eAjqKCZ]'|vT0G|wPAI+YQG\ l}ȸ !bIp:ב(WP #2{< 9V~IZYuT[yy{\o+pwTϑycl m%ubJYZ?yAiXf +MKb(]7 iyבɠ+-c#1aՠix[{.7KtH4VjvSÞ s pяz&ɤژmͧkE\yXk7Q#yb naXfnټm{S9dT ,mXH絭nOv 4 k| s\I$4Iou]pO jh#kd: Gg:Zi owׯ0B72_00;ba~\u` -S4K ,QkZm.iДŠumtqlƞ^0xH1 #`n3*MO:f`cƐ| ^.T e5]4na,c\m%ހs5f.څzYfEϻub.eJz8}cc2w4w^I{ZލrUYOq>;[\0BΜ9XLQ4.iD>7_y\a da2B{=w?AQyr,8F mu2ܯU5͖\w'HÒ[1g6uM#;Ϊ?7 o'iUe$ܞ}FL*MPggioij7׵]I{CWr* * /dOErq\9\ӾuTq%ĸ9@ 3P+Y *TbM/d9*].䨨J *@rT@lUI$K@ *@.n.Uy r!r yƆ[?u(pq\+kcm{ ErDDD@DDD@ъ""" """ "" sM1Ť6l H#$W@-cUA+&c湤sMÁ .hݩ>GVsx+~#v88.wJ9E+3P8FKE'6l.ok诎jpڏƆh*b{IcHs`I{/vc8G┵5j+Qdqc.Wf*j#B$-QixY"`ww&؃ aqr>'C"`w+Dc2r:z;Ipw 55`G1$0M3U1cs/}x T@y9rkqm f&6׸{}6 +ݮx<⯒@Z:wL +v;-%`{ ͦ)⨐DN'Sp!oKwY=|)b+ZX9xn@cl_%d.LXݑ| $|WoUN+ C*Z$qH]<]`/{wz7 ?oMCO~ؘ={JʁUE$.M2VdHēf#Z7 T}`/vp:CO^ 9tq˩Q +T @y.7U't9l'!=L?1dھo/9/Rl$U{Tn<w EQ꫎D$Ԁ^ꊷ(U/uC.!BJ\*DnqUT5T@K UK'4($* +S *"@$y*]B]HT +.P*tz"쨨P.JJt%P%]QQQVQUt*HU斲4BJn Q.C\@9" ("\@\ L-~7]T 7T(eñJ,ML{Nk1!%" """ ""ӊ""" """ ""H̘T04 +jbmrnN#k L*RȻa:-Nu^YM amlZ ϸB]ZiF >!Uq +@UTģԻڽnQ\Ub;./BN)% _r†*u[*d*eǒU9"s@mtI'dNt +rNeEUCTl"UQP +*rT +YT5@VT)QJTUU., +t 5ɪ(ITDQUQUDDATB"T*QPdw@.ePD@ +HUTD +rBT\JUЫ9!(t$%9PWTGT4U S¥G?o<r[I0o j" """ ""Ԋ""" """ ""Et},1J D5{fc܋ %((sYd1bu8:9;mk܀@o\=ZLp.!K0v-p2 u.D DN5^viiNnzHnй :s6+e6+t lU@{.CdmdP*P.7UreĢEnYq 9lK% jR*KPQDDQD +@UQ{*^Ȁ]Q +P" B" @Q" + + *U"**DDPTBBUB" D@QUQU䨪"""r@ +UD""9* EK8U,UQ )r\zT U.(+s ג'e =.lR@ n}D@DDD@DDՊ""" """ ""NQg<=9mCE h#r 2a0 5a[xoIvr~iW˔;QتŜD&w 0W%Ϗڄ о]\=j= :U\T7 ouK]V[Yq(TU;"@VꈪsK +d)d.v@%*'4QQ +  D@TBnHDD/uTD*UD"T@PEUDQDD * DBU@"tTDtD@BQW" +*P6uP5D: +ˢB +'Z7M]K4yY3͢Tpǒ9u-FdD@DDD@DD֊""" """ ""RUA+&c湤sMÁ .D̰lR n扒0؋96#c޻::7PӴvֹ# +֫*G =gw}ʎ !ep8*ʠYˀ^hļi ?]{4o`4.^n:uUz+r% @Q9***.H4/uTQV +* (wU!* +UYEUNH*BP'$SQ9TUK 抶B**sK"9T +!U( +(,* %DDURDHD +* U@ +* +UTQUETBU$‪ )\%D@T(P9(iNѹژ π@R(,'845Ű@CD@DDD@DD׊""" """ """ '_TCW(4°#-T!'1I.ċw^:_"6tkt}w#溸~P:z!'RvYvuuF*JTK dUJU@Q.*sU@QU. +䪨@DD.hUUDNH"s@TЕUD耢4Dy!*YU;*(d;*] +%t@\P@A@QD@T*%Ӛ $DB@DDlB +Q H.WB@P\B @Q/u[!.{ANhSeBUP +M.MB`E#ˈ58Fםr95ۙ.l=U0*G[ "" """ Њ""" """ """ %Gn-<؍#x  {^ok,M.4˲E#\rZlb蚙p,Fx5B냺^׏ɨ/Yܐ +Eu讘BHH n'ؾ1xŽK<HI֟v]نt K(Q +$UTU(@;*" DT +TD@BUQ抶@QT*P*]PDeU%D%P%DDQQUPtU9 @BU@P*7DD9"Q["]Q@@U +] *uKnsUTBPTEDT*P].QRt + +[*UBUDU@P'4D9*]TB땮^ʇuUZ%@mT8N\9+'8| SCS䧙s 3aUfx@k" """ ъ""" """ """ 360Z5y<{ijtoJj7S@yPLblNXY̍upA[άuһP@Utdؕz;AK*tBI_ T8~[Tsp%r4!'n.خF]B$ SꪈUT]R + +TDrqU@ +6T@YK(**!D@UQ*t@9 B!BlPYUTU; +EUMy +*PsD9TD.K* * Q + +t@U @u*]TK* +*4Y *KQQ۠6 +){ ጷT'Թ`xqܗV]7\vT%RJE|lWٞW 5pRn Oi}KܢvbөۗV dT + (P(IU[.!U*UIPTTBA..TEDnD@.T%%RꄪTDBsD@U.)QU*.Nh6@U7@ P*]*(` +*"MD +tU/tT@Uq*qW"8]9*94/4 T{%M99RTg4r\EG%:0Ÿ`y +dqUL[ys~]d tuj1ZjWI+@h$`+םUQP<wi!|H*ISW&.ktKim{~7䀹J۟^Jxە@PAZ6͐1;X<0m$u2P.QLV'y^{6IZ^ iL%hj'Wt ;m'gR=VUÇT$[K#R1BA᣻{KPU74,Hxz3TMm%Cԕi$8&6p?P*Xn'uXX)Ƒv,Gm`xsM-p-67mqH(G<ą)1vSMLolbZM6=+±< +cl$Fw 1`{uW pYMoi9ōqﵺ!%MudԄBJ +Pʛ d8-H'S26s\-yMV"4^ڏP" """ Պ""" """ """ 7y"VEKdkdظ'K\m 谊ɞMh-9Ժ+KV5F}.#uWb/'@l,Pwj\afBN.ۗR` .w@ +]QRQP*BYUQ dȄYRQ%u^J"YDK * +9"EK@T*YURU.Q." +@*쀭늯$nwK4M 9*"lSd['uRnT渓uK9P$YP >9-H..HYU@@rAk'dj7+pdw!`lڊLmm}.AױCXߍ|2%53luu. 12VD 5־Z8n֖:^~CuOLij'c쌰H{\W%.Y9>MO]]YH$Qq \+cyFV&IYhk -lXxchjf5^pJQ{]!H#pA^P ^pRrWg]ۘܐ,/896i'׶&1bdQF/ 8Hz= n, wJ^:PCiN{ +U`ߙT]ZVxkC1w66l%c{i*<8Ghl 'F&׆+|#*tB湡Ih%g`a(+ɁMK!dS@mD mI<](xcx' 2:&L84X@x7cXVm(3b$8n_a93 (" @^{+)ISQcQ^ӴldE0@u:Zn05hwF{H>hb{a zE=]ajV؍ih! i}Cnױ|xI,p4KI,lisC%\F $t%H,Lo-Eѹ3 1 0 ]f\Vo<Ѽjw @kŋN>!Wȵ4xU_m3 81 Z...$lY[ 6bXE5mEDa,112Hظm6n9[xmN%Pk t")\F05-+ T$nې$Xz( l464YcC=}  mͰ(ӲnU|N*ts{\-s}ۙQJ*L2Je lC{DDD@DD֊""" """ """ +ᙶd^[H/ :%#cؼgTG |Ǹ\{]rYP %pW̯]Pn0,ƟutxI!v\ =Hv` NJ@Tl!%Q.]QTl"D9^ʷTJ^t슅.*7t( +dTFKBP]pnʷ@.TЛ.$SUe[b{9r\nN귺QEUNhZeTB +*5 +uEP"s@ +UJЛ)}n\Qqʩ+D(P% _uGsKeUKr@r9. n!}.-\Pl怭x_qњ)Y!c @+\u\ <\(5Q5͌snCAĞMr^7 +T 9Tm \u]KpB5Bĸ".v\I#.JuK|귷2TYprUԊk^F3mk¨&b>7/2bi?7KtCX(""" ""׊""" """ """ ط ˘|9ϑ4sKK;I'5٪UBhF}Ap@u4{FLzt`k%>k +4SraT// +iu;.;.EUʩueK!PW BUPq +]R r9.=7B,N7K.@ T+r +sU +r\muq!A䨜o!:U9 \\U4y*EBS ]rnˏ2Jm u@ou[Ĕ\ʗ@s냜Ul +UP@PeRBt +q(O\I@Ur $+q*7RSU ­n9\{{^lNJV7揵.Eʭד&lÌ'HM#% T]+qZ5\W4Iu|_ŜsaHK3Ǚzʡr^3Xd])/*Ki. +fW}LPW~˛F`Fܓ~Guln~( +b9o9/ҎdV_ WYEU/mnI4_K+4-'[|F~/*k6l5/?>;aB9"^qys}PT{ey' $4}xxK} +t`k +K;0gTtqNkIߟƯs-,F"rVq\xqLNmG Ƹp M+DLRJrAqu)@K z-܅O^Eل1b6gj3|ӃVҩݝFl&Ĵ/4c58a2a✬f)xYSZay؅k8Qk5V7[JpڷJ {);;Z:zU*fTbu%ğx;e5eʜr+eM+n{)TP\%]0n>!uWzD@DDD@Њ""" """ """ ^G[Y0QȺG7ō4knt8O[ +DMGABiy;t$Tj\.B. GW +{v]W,O%כ_eהYhVɲ4y, *U,UC7T7@U +@PRU +ZT/dS\oty*Y5J+ߒm+YǗ%Q!sUͲuJK¡" + *jRlܞH]nx&_ )#jɬoMZc>F~UΫb]FdCW/( k8Yd@VoX%sFx^2,%7B[J򪼯i |̏WDU7.D\c.꒘~7jL ,UyF:f~,ot^eOoѩc?Ỏ3B{;?}_^cW?s5IbU_#~N +3 {v _,.i7{L**/g7WQlM4]@;t SƌIb.A^TQBW9A(.V&,S9Y|;ڋx<ɎX٠r cY?41fH$~b ZM[r/Bb? >2)pFGj:u;}KUbb*QNq467!p~e7 J*bzZUԽ{qZʌhyȚA{3wCŽ+2O3o^ܤn7}[k7 S @׈d1Jnkҋ.VecL.qϢljAi/?pt. p#Y?.eU&sq/pyYgJXj+xه8 ׼r:`iEگHh517s|J C hmd;;2,zUOVς9Z|};ocZX_ M4M~0F.vϗ%kd)gO,"|DSŠZ>O.'ȘuǨ8z#P7dl@ֹgaݘ3;J{l,/8wxb &޲vf p/u|(MvT7%uuC#HjIdztI.Gtx5…笁#?*xٕh]!KJ$Fd_{\ST]_yU^S9f?cxQG笇3-^ +IWY'{]6\+<7C,E(nϚ.J=I?]Pm|#S ūd!6h>O9(Ub/Eq$.氶=^؅O̕jCNցvRuT3B. +#2bUw ~AxxwSM}OW $W%K5M=+6(dgX)~e]XF?hǗ\\\VͲǴQcQO*!o=t*3 I؞;_' lxE` 9(g'k + ME-Y3*8ߔ~!:yHdV{" YsLJ*|j=˩s>ߔQ?Jd$O ܰҵ&9y>X} kbmQʺRΣTa+R5uZf\aPa5By;zxFMN_;i;uXj|]dTs1 2:, e~ccǨ*yHu}KD3]5MTyxLߊ.eTa_%,P8.GGe{bFjWSH<=<6SJ<]:,۾>0ukVkϩ3\:˵/,p-bQNI5-ef ɵ\X[o^kK35 *)urtji!Bzrw*}beGŏF8V+ιNL&B40Y2+GĬ +Aq-a VWiF輪u67DS/bq*GHp`5 s;~C\6, +Ym.6TJI%x[nKnǝ/G/Qۅ;PI=tqQjqիL11Έnv^Jz*QF1[/HuQR:g6xkh@>F6հ\XXS#۵s]cl?%} Ar7 +f4Ζ&ZBZ6w˵翭X|:[}4H黶?3z\4=X6b0Ua >X** +ќeֻwIƱlz3DXݬs\ y9 x.87W]B[X.Qk JIlkC"^ lѽw`xi;QJ{׿a8^u>h=j^YOnzmK2ϙo8^f}*495zr!!O6s ,T,\hK{PCu @+䍘>x|IA"G-!m8Yf 3vy~"JyQy 5I։\{p~z5))t-p\[tGK#A{kp*2PL {G ;Z_ERPc-S¼%BK,*mݗ8g[ĩ,$|:w˒IPٝ|*گ4Bo Lby]9ylw[Ui+ev+N.)KV+3UN /Nk٨Sq.b4ƫwm+Bsً6+;MON㥌J vյSK%ĀOilnWfDZY}a5)[j, т,-y#^׷b7l,fsŜO]]X3Ȧ4jEf£J/c074sxX}b7سрsVӸ$iWVeQ ͽz eѸU/z1q4f}/Qս0mi7.W̨MfC$p6Fֻ8;"12A/as%Rk/(uY4 )JIq\]; H;漬{B|—OA'k/ڽƒQ-QGJ-V[8Y\zp[}ļ8ESfnzezo:12kd=Hw/"VurV3`o7 <:88efEyspqC)LLecFyFn9o?Vcs`kan[ґu=TrZp.~\b[ەձ% շ/j{;v*䳀E+ěݕjו +k ?>`}cceb8nײ}Dq-%s63yFSO[yKB 9쮬[YI=w0wܼVpTx}s̛%s0Ac8vUbp|fNAGq}n.ϡ䱦| }@u> $+q2"Z4׼6K.VK,:CVD8l"\ +tQVPJH6Mm*^Y)2[zCR:3j;|dR: { GNJ%,s V;ID1F Y'U0p-rmt9 u){+HUt&VC/Ywr}r{ywKOOٺu}rz]XYUgJ_^ޡXp.JxLM&-<rl;-I0Z[px\ %h+fEuVOD߄2$a8 sC./`+%/U,25/44'6dVjLAs,\{6O/dKVm|_1g7W +Z _eZ-ŝ{rFYpg瑼=J?IGFjn_/%0#-G}tcF>Qūqh;,`I,ׁ)K 8ͯ 1e)ZfzI-#ZUUM芒S~s[.X&fIJ-8k =7qsnt^R=tڴ{ P&P7թΓ5V6NFLgo8K*ht1̰uެ sj~pq>hOQSMN2f!1ڊr<<[sgSt5s8;n e.9z^'֬ML#$*%SUb't_0V9an2Lx"vpJ0ͭ^^%JXw fޢLlysZGZ<pTʞ$ (,$ldP޾]ٛv;c}Gb"/@""" """ ""ӊ""" """ """ -o5o0ˋ2_ NΥūܣuFf˼ӨTli\Xgh, Mc!,\GOryns5{8$ +aÛ;7.~U{c5%JN +QIiLA.E~e[*){K;Inqr7*ŸgGýri\XC #>3 ݯ<[rV+xVfsQq𣾾m }xyvSCMPidމsFmw8k-upD;9'-dԽlL|ܝ~y *zyS>e;)=WS:uJb6W Qb{Z\MHp-*$0b m'[#Jm $o|,-[cx|H8۳vmێ['ČRBqn^`4bv$F8k6}kbp,@I >bYK%e/i dZZnAœ {I=K>dhg!Mg9QI(O8Nۏ_NvX6aU7`bvۢj͌\ QQ~yu(*]8Ί5ҚmnV`8t:1n!^SY)Z,돈庻)Z_c}]G > ڧٙrQ\l +KofЎVdcVE$[:4Yl9 ;1CƜ\s6 痈I'c¬zRD;7x!u"{yAaSz>1Hɘ ulc3r 33á|qX`6`jRnGЄ#_.ϏKZa57JߴTYTfީ>A乖ⶣ3{,ƨS*=Y#ݕ"߰{;BVqF.?j7 +/CM'K1{\ KKb6&7G%®nV-ߚ򝞰v΢!pwr3+\OYrqk77{6Sm{4#īӎʷUQ2F'ˢ{b0{'vgheWs=k56O` +a1IdS[򲎲畏'vIg=ћ2ԻIQ}mj5ITG1x'Ixt .wE6POks3p+WN]GM6 CYL0 7mwYO:g d]2 exl,{ûBuɧ7C %:L%~9ZjKt e^H-DD Fz[]sՒ"/dD@DDD@DDD@Ԋ""" """ """ )oh}TS?P 3,,ϵzW1˽>BRu*6@|y unPr̒;%. ԲF@/kcnDY`))a +w;I6XiVlR,Ike{XNYN/阻Sp;*n~Ց@\w4w41~#~kӃ+ޅ4M1S8qi#s⃳1# yxY)q;) 5ձ ãwvQ6"\ʹh&PݺɊW }Z=f~,n'w[}׽sF2&}ag@BjS R9.!*VoWԸY-Jjē=kab#;kpZ Ut%wN[6Ti]uNcmiQ&gyWU2Hci=K~m^1tlk .zuf-JsO#C@7ryRMJv~p0O0 hSBxm4H8^DƢ9ô//C1J085E=!q:V_jROx.Þ!ؒ<7+|C'rL2%WiIR +էy/S*~0rW`5t٧=Yvdjnɡ]7MꞫb*@vثQݛ <_LS`S1 ^ ؍' + R \Ŧ}&x<{6 +%NZ>GT(W4i  .*Q`%m\Ut ɿ f6g]ְ؏jyeg/Q{Tc/B֮b2¿/xve~Sb{d `Ysa/>g<69.Xu`:= X8 _Bڭ}[ m;_:+O,e"Ĺ;rԿv]}[ };Úwc뜥tU:uJ< 5o.lj,q#{jRWIM.5{r`GUTKmUYםU4Ͱ/%úcԽ"u0o],z"#Xs },Pb+87h# ;}P̓LƸnOur {X6匳@'aWḭ1:Eǥ$_Y#BŌ/CMk_7$Tv XܸolnmVxj2UPs^]dﲰ1X,cYĴ[w8XlGq l s kO^\EJѱvBtmIչX./? kc {n:mNXG>b3l2nqkܴVHFWm.qo+uTy-ϣ!R0N/$H|?3arSi\\@ oc^z)fvߝ6U<[|*3[`~|s}"DDD@DDD@DDՊ""" """ """ )=_U#\Kisv@ւz_Qg#Jh`F^nHưHQлA_Lb ǩ|pG{zr]ud tʼ * +T +@JTT%T @,/rs\nU_b\ouCj *UFˋFt@۲q-^F!0+񥍿7+sRý=C\⤛ OpqeP-YwNl&vM :6Ezv3SI0j .N9ΊY`v5okF,-6e(7ţ,gjFu !8k. 7j15poqo5URD26pvGd.܀A#`:qvNgF0v9V^Һ,O&o[iM& ET3YDDRmd̫Sh+Kwu_ux4yy" 㻁aqOD ,K}xiԪ LFݬ-+UF b=E=1Lok!pj?Zf:gX/9xhCh">To#$I$" """ """ """ """ ֊""" """ """ ,䷌Ig"`TE4Oaqc 7H c?9NU 0yv[Z@Ozv+e.4萏(Aq]y_fP@U 츛u8J-n2L؅@$Jaw`en \;^Ĭ~V5vAZUyMe?ANjR<l9rYQqZK^6..Jbݒ^_9B?^\.)*]ղ\ikuQ,@]ZZXsG̨ڊ=:Cq/qµZd.q?NVMLbj>Y88WV!v!d =?b:ȧ>'/^HcGRB@aE{d1,j)-;ʦ5e."Xʳk,GGP0z+ghgرaϛ\ygMѝ`@9tbz#Ro~B6G0|@Vf%U,~;+ʶYnnO] eT>zC;"Y]Yn RgxmQp鑩bwZ}o6R:˓Fuof(2΀I\h^ziauDCkFZ6, rHc^yⵕdlesKKۍP5έ:0@a%܌&!p󆞿59X;A]O9oju9) dY0Zv#[.unCAE?أeYs;gJyf2ʊžlO[ں\6Ot]]wNB:duL|<%OWv:ѩ揟Ra^$Se#0b ;l>n>v1hiG^q氒$n{tl+JN׹q^)CX;I$tg_ްU@q{7*1Ǡiݧ'ٜSI l^p? Kt {}KzՠڄVȹKF*_L وfq-6gCo] +Fݴ~a\.)2Ɣ#H""DDD@DDD@DDD@DDD@DDD@DDD@DD׊""" """ """ /[)%dS cy('h0ƃQQ{}9ϙVL]8\/ "Aݧ5([LtClWި4I-2)?^y\pT ~QnP˅;&X3>]7?k1f@p y?>}B9*&ssFwxN g n9r#޾ٛԑi wY-+k% @fhk[mo + _j`mdg ߁&G50fǫuu7b Wq͕kOpZ_2-Q9HK.՚I>kߋ<ۑWR뤐=vY4xjk]31y QY=ރ~]k*%sc{^mSi:SMuy݃uXK#E^X",tեGQobBh*ph49kGYI nk@ = H(%c=|2F~[_e쿊C%+F$Ow,7hqԧScޯK\̏T!ݱ'm]{uQJm;zOn*ef +Ѷ儒|?|E;e +ЯMN.颖K*,D@&uKs^j]CW)<ja8s +Nx|$ +iHtR6qA5N[ftmjo‰-.O3%Bfos/XGurp0,Ĵ$g^͹[-IH$XXrc%}Eq0Gq|.F,fk{8r#Q5 iu,6!#='vsYmل [w4c.%v#\)f.7'^. ^KWr;o5iVGԂj٫ϕU5U ]'Q;>ԜlM -!̱2{<r3׺kAt?bqlh ]έ[nWx1#q .#Hdgkܱ.`끽s|qٮ\8L|;/}^Pʵg^u}cG-AFe۫o}$r|ȧ*$q_4K rWE """ """ """ """ """ """ """ """ """ ?Њ""" """ """ ""{Ѹ[غvoE}j됱='MU +QrO-u \,f\TFշe`57vE43WE' pE\etu}j> "#x {Zob8>\[mw <9Mj9[ҋO6끐u&MV_qe#`m,QcŽp|<ɮr`и em:~nksXw_D^ouRm zUd SS!VX4_ޱM)JPW蝈 ۫lZpW64mp%h]C {:}~v5G+v+"ㆁS;Q ]R:ߧ[#e)٭QU]a]B O͉lL bE8{9 7wPo71aCZ -㵗E.gK +Tޏ?.̐9; +~m#]-􁱿ԣkE^nxUB2!gFÖVeՁhydb=j1dqu:{}j-n=)MNq!gCVXhpu0QONOpc]LOp^ Mwpغ(5j*>E9QzV-˨^',OY{Y&[oV&H:)U~SW=gXCMC6#b {zΣ9Q)+*K!ib. E6V4dA" """ """ """ """ """ """ """ """ """ """ ""ъ""" """ """ "" _J |J޶iPna%2/.++#ZI/^,IL7_$;;=Jȹ%rná~J!)vh9gtW}5S,x?bq{mugHmJ7.>VIRr٭}L+.3cWka{=6~>GI>5'S= X> 3:kc-63ˣ(ԍv_6:#`qkoqmzاj*&DqqYS[FR^՜`ǩx&5"O|<}Vn⹒>stream + + + + + + + + + + + + + 01EFF179BD9B3A8EE7F48BC24314DAD7 + 026137C3565CAA73487B7040AEE53406 + 02712289FE7B720BDF7A6F366CDB31AF + 02AB821B19F85D2C6FAC56766AB80270 + 02BDE90B873C5F6870DD9F14A5E773D7 + 03DCDE9141FF509928A750B168F10ECF + 0429CAA934EE707DC450F184B1129D0D + 044E86577136AF664EED3CED8090EBED + 047BE97D07D84AB2E573AB637AB46930 + 0518420BFE3D1B5F638DF088B074DC38 + 06C3F122DD728F0579C75D194D339EF3 + 075B6FEFF7E2DC92FF34CF77C0559FFB + 076F5BF36BD8A60EE620DECEFEBFE686 + 0773E3F245022959B4F3584A71AE593C + 07806C65C4910A3DBED1594FDEF99235 + 079D758C423BC4CB66401C75011B5EEA + 07F0F2C37C4CE4CE1DC794A4B9FF5D2C + 087014E0C5F8AA16814B969DB66DF607 + 093627FF5876822A4A1B2BF93CE09A44 + 097D6C997BAA9716D1C905ADBD15EA54 + 0990629CF4056BFCBC7EC6C7B17210AD + 09BE28FC952EF59F6991A0D8D0AB5F85 + 09C52C695071DDD159674771FC77A621 + 0A1EB8F9A47C8ED66F118DEC42498493 + 0AE8701B0E93AF9F1CF3EAE5AAA4614E + 0B0AA79EDEE6157B8F631FE52ED23429 + 0BE5C77E64F5A18F335B9A60DF5D3D62 + 0BE847DD3C2E6647C3681E05F85D4587 + 0C1A264C5680BA6038DFBDE1DB3EDEF7 + 0C1BAD8E0EEEC8158E907BCA833D6CF4 + 0C59062FE1F1DA7ACF6C79CEAE349C18 + 0DE04AFEF8D07707D3CA8EFCF9B11AC2 + 0E1C15898C69ADC3B567BEBED3248EA4 + 0FD12239D45207B6E1EFD8EDC538553F + 1085BE0D0D12E65A9A4B94DB05841C22 + 1170B8E61DA33AFFC7A3A6088E60A94D + 11954E5917FF19DB0C0B5E0827E0E575 + 11C1DE2A891D49F55EE01315BDFF4611 + 11EB2DEAEBA6FB74651F1B85876BB8FE + 121165307A609F3F674208F3C0D9EAE5 + 131730218EC9DD3BA0E12FBFF079EDBF + 13B2F1BC0AFF5D2B9D17F039C5C963D4 + 14110568102311F3A89F2EDCA2542129 + 152FE3F57BE9D5857B375362FC8980D3 + 154DF7D1AB5B11928DCAD52CCA2355C4 + 155CFFF69AFDFAFDCD017CBAB236A9A3 + 1574A9AC3EE270CC7392494C14AE1013 + 15E7E8E988A87A1FE03C10F2AFCC1A8C + 16AA3ADC3B11CFF5E7E7CDD8966FA6A9 + 16FC8BEC4CC7A979E350F2B4D0489EE8 + 177C415882C4E2BE3F8350B6CD3E0BD4 + 1804AB29EFBAA59AD0F2D7AABA95EB24 + 185605446C83C8731421E49F9092ED99 + 18723AD0ADE34A22A40CC03EA1791DD0 + 187B924371FD2561A71DF15244100155 + 18FAABCB393F61B2A2C1D6CA52ECA492 + 190D8E629DB4F18220A2A5D22F85CD9C + 192C8A10CA0E3CC7B3A3956DC37CEE28 + 1A18544D18DE39B26C9817CF069A17AE + 1A3EAA2A23282EFE430E5560EF7EF86E + 1A5EBC67C333B68FE1E6CF51E770A27B + 1BA7444E5E2FF4059F9A1648C13F7E08 + 1C778FCEFF6A2A215A973C8A77F786EA + 1D4BEA1F4186A85771CE872E3DD1BD99 + 1D65441EF402F6C097CABA958FD3F080 + 1D8199C9098ADD163B60EF31A0835371 + 1DDB36795DD64F120A1FBF3D885E0B13 + 1E476FE1A6F52C0F2B8044EEB8354BDE + 1E5DC0597A5176810A33920E49F0D907 + 1ED7504D8CAED9188323523C5000197D + 1F1EC4E984C1ED4E3014DA4ABC8E2C4B + 1FC6795FA90B8D574688C753BA32D21A + 208105BC152DC9874F36AEC90F0F50A7 + 20A2F2A84412F8E12CCF655028EABA9A + 20C17BEA69ABDA98E843C665BE756E00 + 21127B6D023BB304146043E3571EFB00 + 2113D693D06285286310EE57BB202652 + 21F72819AED4E13406C4A5430ECB6547 + 229F0CD0D8A63E855F3915ECA5C5C6A0 + 23093A55199933A420F379F1CE355C12 + 23ACA271D56598C907732F1D8D1165AC + 23E4C134CFB616978F387EAFCA28721D + 250A9AC7F17AFE1FC286C1BF741D9FBE + 253F03864B97B14D2F9FC207A0E7C257 + 257C7629B7F41750316EA19492C65422 + 25A3CCEC67D21461D2B21DC47AB699F3 + 26464B236E679C2B03C6B467F90B7A35 + 26AEC2586D6C25B9660AB6B133F56B6E + 26FCEE8187F31E711C1A6F6F817CBA29 + 2772C0D4B98674390F8A14C3E5A8B8BA + 27A721BCA53B5EEDA4B9847C9A9688DE + 27DF970F1A25E086FE8CB165932A273E + 28100758208CBF4DABCCA6A32F570216 + 281387F09208C05D8AD8CB976158F9CB + 284DDBDD546B1234D1BA63FF59D65C7B + 285FC768DD05A59D5486223AA8138C24 + 287A574BE26C07B356AB68D73CBFE83A + 28828FCD933C243E2B85A313C3E9DBA7 + 2889880030CB43E7416A612D74995F58 + 28992646F46AECC3488F1F887B9AC274 + 28A662ADDEAA8BE706AEFC22F2E5F056 + 293D221FCEEA7AFBFFF9435D79DF7BB1 + 297638FD74B090A3F426D28F43D23E01 + 298AE66CDDA0676D497FD662CC46E789 + 2A111B114DFCC4A230C5A6E914B2B8DD + 2BBD47B1F402A4E34653D408814650BE + 2CD9B5BC491F845A8CD94A54AB76E99D + 2D067989657FCA8757CC398B24647EA1 + 2DA2F67FC9EFC23B3759977F01C6B09E + 2DD7E01749EC7F43F4ED3EE54BE1F150 + 2DDD87351B76953063EF40EE05B77E76 + 2E5E625D41787229A42EA78743DFED92 + 2E956B6E82C8571FA94F9F93134FC7BC + 2EA097C3390561A2A9BC3E91849A5A65 + 2EBE747BD96DD80D54C0685BC6C07B6A + 2EC5C86E3BE22BFCB6A8B086EFFD83FC + 2F4F92F6DAD6561FAF6E555A7E2E72EF + 301A5CA90FBF803B0DE116EE18186BB9 + 30962B52603565D6F8BD7A1C4CBC195D + 30CE8D1CE8817C9E4540CF99FF6490A0 + 30D064B7F0D24FC84A527305EA50170E + 30DE5CE7AA5E6649912A417C591AC722 + 30F195B254AE4EA3732AAED75E48F021 + 30FD1BAD28EBA7CE28747B0B3684856B + 3102783CAAA373DC6ADA98C6753F3D20 + 3125EEE12FFDABA1581A03F2BA5E1995 + 32D4BF9A7C628A96C676E22144B3F451 + 33212B04F682536CEF376A16160C197E + 3329B1802A82D17ABA401ABF222C47BC + 33743A05C6E6532EC0B1712581186ECE + 33CCE8F3AABC128DABC67021E409A7E6 + 358206C7573FC1FFE4A5F9E5999CB595 + 358C2AE72B5D0CD1EB0BD87C88AC14F5 + 359B49592BBA5CF704CA8093C9F5C397 + 3642E19C644894E0F63805CC23C5CDC5 + 367DC6EBA397F9F917C34AF993BE5648 + 374A932A903686C78D5E5BEEB54A8885 + 374CB181E1A3A00330A7914891DE79B1 + 37CE3A320A5609EB7E8273117203887F + 385E953D218220092A50958205707CDF + 386162D9890DCE84FED7E7EE7A9527B6 + 387900A4A8A83415CF9FA45F593A75A9 + 38FEA535781792B519A053AC23218972 + 393E075F581ED78F385493848D684C69 + 397BBD0486550405F3F078846DED6C32 + 399A8A7F0A6D7D01D6B554A7815B3EF0 + 3A0957443D389A5A8455FCB9280E43E7 + 3A127E3260A204099E6616EB60893C29 + 3ABDD69FF148F8E62C6C93A6F7E9E5A3 + 3B544AB800E35A084F21A748A0364082 + 3B6D44491F9DED4B94BD58F461F37FCB + 3B710236EA9D7FA8E136EE5B2E8A4B42 + 3BEAF3C0AE040DA35676BDB5A8B0ED54 + 3C67CE3209C0BDC40191F89A0B697D8B + 3CF6886BB569D09259AD3DC8679AC153 + 3CFAC2AE41DA7CF576180B4F6255424A + 3D1359843C609F7BDCCEE52DB158754D + 3DA1D660F094C66F02DBC7A6705011E7 + 3DA7117207A5512520BEBF1696A5D726 + 3ED942810D1E49E4F564AAD174597FDE + 3F4A16FDAD76BEE41F812E5DF9C812E1 + 3F5A306F1D5EE964C16D7534BB73C0AD + 3F988A919A3FE6145A2466AA19BF3BEF + 40052628318ECCAD81EE461D007E90F3 + 40839756CA26A8D15EFC1788DDF507EA + 40BAC43D149C8BBBB0E728E171014AB1 + 40C318E2B85D489E24F1DA72291B77A1 + 41628BB287D8D3E4B23EDFA333B0B419 + 41731B11E52196BA181D2AFE6040B32F + 41A2735151D1F926352F2C91D55D74D8 + 421B32BB790DCE35DD8B6EE0F813036C + 42C547DDE8954DFBE8007AC7CE2573E9 + 435F3E76CC4A15840C8EB069EC245573 + 43F24B66EE3FC2E130E771699E7514E2 + 442DB1BE83BDCBDC3DB041526200FBE1 + 445E180E8D447A52AE5A1C1D61355AB4 + 449E6AD65AC3F5865B7AEB5815DFE769 + 44B0A4D2F13993BE1610ED317766B6DD + 450C2D95B550FFC7D32F168D315EBF6E + 453D0DEC2428D4B9B0B465CA8E79469E + 45B28DF8F723C86DA8547E2747556FA0 + 4621900D21F3F4F664D2362A0F1ED494 + 46A9EBC27212A52B66F924D775FEBB9C + 4700541DFF89FE6DB45F242930E5C9F7 + 4725FA92E94080802F7584A66858D367 + 476E8A1002B7B1261542A41B9BA1E103 + 47AD9C1C52AD561263FA646DEAF1913F + 47B4D6D15B98C88FC82B9A44299E5EA6 + 480AAD251E94CB06EA3E378B159812AA + 4870735E59BBA8C0607E12F7D1D60ECA + 48D1C24B34686543C3DF8A61630C353E + 48F8A1AABC89FB6CF158C4E873452E23 + 4948B50F9EBDDFE51977E11148E2C732 + 496FE979A9B685A998C2DDE566B5CB71 + 49C343FD39A0B278D4EA4195CF1B93FE + 49DAD15A29DF404564226B532878984D + 4A98FA4BF6EF588936B4ADCBA336B688 + 4B237E0291B6B698C7CDC0800BBCB15E + 4B287990354CD410505BCE432B9D5353 + 4B32CBADE63C6C7482619A0F6B3542C8 + 4BD5C758D3D06A39CBBACFC3CFA34792 + 4C76329DD97020EE02840818863A8A5D + 4CBB4DCFF58F87C7C7759B370EC59A3E + 4DECD3C733779F33EC6BD8AB661ECC57 + 4E9C73B63CA6EF3870B998F24B72A6FB + 4F05222636AEE5CB1A67870FBCB0702C + 4FA00EFC292912F26BDB2E37AA3F14EB + 4FF36C393DD1ADE1D5B594CCD4B9BD0C + 500C859332011E706C095957752677E8 + 505E2FBF5F583D1B5FDC82E99A2422FD + 51741E9C75B607DFF972CCB0C0C2A6A1 + 51A5C951EA779E1C921A306903CACC26 + 528082FA00E0737832D0D1D9EDD47111 + 540F0C9B32970BA5F1CEA3DE88F6BC87 + 54CA2E310C6E58F2F3EBD3A452D584ED + 54DFE87A20AA24F28CB59B075CC519CC + 54EE2B722B6445EF50C641A7EB17E79E + 551469565A1FF5FA7436AD4C9061D264 + 555DCBBB02FF0EE86C8F658ED7B20C1D + 55DA064C4BA126FF93774BAE6AA115B2 + 55F28A1955C32B92F6D7FA939C5AC525 + 55FBF36354A42D51AC50058A52AF6F88 + 561ACBD7C20AACA71298B18C20F65E72 + 561B58BB1941FFE99A33848B08F758EB + 56366B42EC83CE2A123986E85A6D13E1 + 567DEE86E1BC52AC4DCDEEE00DA9A743 + 56A46A1D76D7FDA02D6B55EC2F9D6FD8 + 56F35E5D467E7B71F3F1AA0A1784D917 + 57CCB72D7FEADC6A0B69AE1076A99947 + 58ABEAFDAC696331D3A24BBF8FF5F6D2 + 58D4495F352F6DB0D5FFD870577BE39B + 5965561984173B94AE8C4A15EDC38679 + 598853434E87A9C7912B0087847C8922 + 5A0F8AD0A39B2700506E042642612F56 + 5A1BB3220E6683D1107959A5DD504017 + 5A33ECDEA407B62CB5B2610ABCB48157 + 5A66F9B86B4985AF90CF0BCBE363F0CD + 5A6E64267ADA55FA04513B68E96DA81C + 5A7013EB02A09D31B8B7D63B7B02EBB9 + 5B66E33BAA9554303716F9940046D368 + 5B8E4672075131A36CBD61CE4CA6587E + 5C04AC55977BC09DD531798E19575175 + 5C137449C9CFFF83B0F606003DAA531C + 5D15B59921A64C5EE1638E8133173DCA + 5DB95168DB960203C89711D76C1BD99A + 5DBAF263A5D482D800A371F3AFBEEC48 + 5F039F1B6929468669422E5E0CEDC6C0 + 5F6FC284DEA12AC743ACAFD2D7E9C345 + 602E4F36E84747F1FF4DEA86737F230B + 609CE4D28DCDFF59F5BE3D9FE7B37A3B + 60C4F3D79CAA55234AEB192BE00A015A + 6129564569D5E7FF3BE2E8481854AA44 + 61672527E6DB64E028DA43AEE526E18E + 619E3478E52AEDCBF381E8953B87FF05 + 61A9F8AE371539A8FF522B79B6A6664B + 61C1C711142AF2E18269D5858B9E3192 + 61C32FBEA9D8633A8A1ED210708352F8 + 61EC17A94173219E077F2AD408E26A2D + 61EE0B4883FF057B70DB59410799320A + 6293E2F1A5DE2401E4F03759F3507BE6 + 62B880433D58DCD0B2B67DE221DFFFBA + 62F5290BFC273DFDC4F56D4827A2FFE5 + 63087EAEBFC92B4F0A9CEDA020A7618D + 650F926ABA4A5CDE47042CEFF2CF56B3 + 654232E3F8F0E767A1E77E01E5E9B2A1 + 656DEF13CC5A22D634D8A2E805DC7F4D + 65E89A8490C6261C42B2FE415D9F01E6 + 6774D572B5F0F11BCC778B73BEFFD788 + 67DF2DCC26890AF1BB32BCB752C83BD5 + 6901471B353C0469927B80117DD71D1A + 695F20289EA2811AE71BA804C1E4D37A + 698D9CBB1EF760354B97CE1674900626 + 6A4E887EA1E5BB17E0FC7ACA7C76B7F5 + 6A872C3EB3AC1DFFBF99CF6B537BEB89 + 6AE977BE3A432AC2A45D610C337B8842 + 6B04B87081556F0644025AC9DDDA7B54 + 6B3FED23AD7F7E7D17828D812DF44E0B + 6C3394DFB38744D6F9A21C94FDE12C5A + 6CDF315557F92452EAC5667976FE5566 + 6D53D91C2C46D082091925E2F0EEF337 + 6D98505F745BEE484B842837A4D9BA91 + 6E0E4CAB145586033CD3EC7B5426D74C + 6F11BF4E057530478CA537910E0A050D + 702DCB9E5C49035ECDE8B22AF722F412 + 70B686BEF762C0A455A6D4B98E75EAC4 + 70E1AE2C2ABB055C2C3F7C470A1916E5 + 71C29B0895D1963EB7FE853A2CFA684A + 720B01742C7B7740465CBDFDD9A06580 + 72851A3B0ED9FDE61D53DE9DF3F7F23B + 72B41DCDF611B73CEECF5DD432A048C2 + 73153F1C257D1A77E0A35161B7106C73 + 73EFB2755A426DAAB585ABA44B88643F + 74915EA3C5237825104F6079B2D69F72 + 74B6CA114A85504ADC0385086DE844B0 + 74B9A5598B3CEADEA18B383235884570 + 753EF068CCB187295F3D67BECF8473D3 + 7572B33A96763F3B1C60DC3BD4DF70CE + 75C54A2719E51C00FEA372961459E826 + 776FD45F7A62B7266DC22B9FA2DFFC67 + 77D7A8F513D6CE8A383E808F324AB738 + 7867E50C36C8A6188B949BE001F15D0A + 79D187BBBF7F7889922E445C9EA0ED25 + 7B0F8276D1F84826B0747ADF5CCC51FC + 7BC3DF7C4776BC8B64C9A94E4BDE6916 + 7BDD3052E0D3023EAA0C4358B9EBB3A5 + 7C1FFF93451BF358DD7A7DC68A3B0457 + 7C3CA0784535C22D1B0D754606082479 + 7C937D22A8F52086F67879E3924030FA + 7D74CA52C96BE7BB3DAD9C73E0006D91 + 7DDE721B5F6872B67E15C3C00343058D + 7FB2DCFD978AA2E907FA6BF72F9A8D84 + 7FB9FA0278DB7592869838C673914858 + 80B30B5422981C69D8F2AB53D8D0266A + 81119A98D2896D385B582A779290E5B7 + 8297C11323CDD22FED8C62A73EA36DE8 + 8351476F4956403B02FCC3B9244E458D + 8432F812BA3BF7C4E72CE3C0D2F9F7E1 + 85105777034462B2C1C7F92FCD8E8935 + 85EC8C5C74523978494CCCD6C58980C0 + 862A2D4BDBF45F516EDFEAFEFB84FB10 + 865AEEE37E8053D94B199337EB78C445 + 87364C74C4F9D09817DB5C82BF706247 + 87DB17A85D351B05EFF18D9DA49E46B8 + 8842709F5CE7F42C08AC2410A539C619 + 893AA30EE6DC0CA8CF930BF699DADEC6 + 895EBDF9681CB3E40396966B004C8B61 + 896DED8D1F15785D0C240B5331167223 + 89852FDF58676BA5082B27EA30332BB1 + 898A5B06181A5C9E5FEAF34B351BD59E + 89B71084008E74D93A6AF94AC547D640 + 8A0D73F4238C1A3CA4F997040D116DE0 + 8AB8B859CA1B10C82C9CC381EF3DB4F7 + 8ABEDEC669BFFF9304E3935565183F75 + 8B08E6D20028897790A31EEF48D3538D + 8B6A4AFDD8693446C7EAECDB45BFA431 + 8C3CF085C262AE25F4A0A42D59BDD57A + 8CA9FCDB3E483757FE0EBE9A76749E12 + 8CC5EF276A53268B09701D421142A16C + 8CD907B6447EC1E3DAB9FDC26F24AC02 + 8DCB3B4C779BE2A9E9B8766447FD0BED + 8E912E694DCD59363B3F4B31DB3BCD35 + 8ECC6B975198625302D875CE1EDD8B0A + 8F2CD04DEFBE17609451FBD9DB0190C2 + 8F4C09374FB88B0A7F925FE58479F782 + 8FB6FFCC47C0B93BA538E4AEE4056E3D + 8FBB5C0237D2679CD6216FBA6731777C + 903C91DACE80C972B51DED18F35ECCBE + 911E18E4607F128D22B5F2D90823C1F6 + 919486587B1A535017676B8CEB40CD73 + 927B46B8D0FB30F3F989AEB17FB5DE7C + 92931F743C70B4E164212D2AED3A9C46 + 92F2F77491C24369F824EB57EBF901D6 + 9306DF926BEBAC017A2CA3D6EC0AC52A + 93A4132F1C5486B76237B883F8F9F8FB + 93B4F9ABF21272482BCBE3B3ABD4B0AC + 93B8F9C315C41745993A9A5F68BAAC2E + 943E323825981DBA1D22BAC6C68F3F44 + 94CDF8AED2F93E670F8097070E48AE96 + 94D94644E7D8BA297E5248FF22EA45BC + 9528E4A74A1B7F5A0D0D609275185ED8 + 9582079AA99CB0FF87B7A6C20E018B98 + 96576A2DCE2B15C80A03AD8A17DD6C2C + 9688F98001B07EDAF92CFA6DD0F17907 + 96D880A073B37BB191B941AC20B0A498 + 96DD111A3D53637FB782C68A1D211013 + 9771FB8ED8B149C88C937F3CF9F412ED + 977B4DF13CEDF60904A71636F022226B + 977DD673FBB44F63BAEC4D3A482D3DA3 + 981E52C9AEFB2E30D9C7DA8680FC6B76 + 98C96AC5FD9AA5BF7FE36032876651FD + 98D10E325558D3C3739A3B2096562297 + 9918D4FABC3A9AC180E7546761FBDD8D + 997CDE81986F55F706CC71CC384216E0 + 998754321B602F83A2602DA5ADBC6793 + 99E8DC9D120BE35A5D5F0D5B999C3070 + 9A65BCFCEACC1588D65231A05F7B2BD2 + 9A6727C054441A7E27B6ABD64EA92859 + 9B283028FE0A51EBD4EADAC920F32D9C + 9BD4959DEBE1A4EDA8BA96AAEAA5025D + 9C1198E782EA4156A3BCBD2A1A24A3AC + 9C15FC49F00CFA739FF49E1B0F50F653 + 9C52F1B6534314F3013E4912E540B022 + 9D62222601783B34AC9CE0334FEF3211 + 9D97ABD78B5291A06CCF86C4F4B2033C + 9DF36BCAB9CEEF7DBA5BC19F10301810 + 9E83276968A92DCC5673409D0A0B9546 + 9E85DEC2653A9519CF53FAED2D222423 + 9E89E1657EAF767B56F78B039F5D2742 + 9EB20B55D074A37E0DC9537B9AC2462C + 9F8A5042B3A19E4FDD6AB54F1A85F86F + 9F9FAE6BCAFD0BAE186288B2AB149F5C + A0166A19710181BCBBDF5645BE2E80BC + A070480DD31B1F61AE54F93AF6B47601 + A0B26250E16FDA364E47C32D0694A0F4 + A0F7E20C3C250A9A392AFA373D430A09 + A0FEE01AEBFB00E99B11333D5855F8EA + A11B997F975AF1C2828ECE3E06A01E52 + A14DE90F1177F55DFE918E628E6A5370 + A152A79D8B0AD3BCDB69C083C1816317 + A1699C829001E36AE86FB4A067A28427 + A17E6224A6858553FCFBA12732F5478E + A1832624CB85FFA3B90DC8851EFF0A95 + A1B2805D850F11231C20EC4F489DE2D1 + A206FA618FBDF04BACAF0165D9621212 + A2074A168AD570893372C68A626B9586 + A252A0D2744080DBBECBEA722C4FC04B + A2720D2603D1BAE443647D72776622CD + A2728D35B6D0600A8CBA7209A1B65F8B + A2FE28D55AD03C7B17BC4F5F827BDB22 + A303EDFFA2E8C85946323CB68D4A1D03 + A35C0AE62B6798B5AE9272739C52A4C6 + A3F2F0F4639D4271755A42C15B2E8009 + A40DE4ECA335137A1FFD121E46B9CB24 + A4A80F76D0A145811B630692E5B4C513 + A4ED539ECAF535C38C6D7C74F0A4C46B + A51E22020E5C9637AE653BDB1F59D430 + A60A4A6983D8545C3175C0C53A0390AA + A63A647AC351CA8F86E05C1F80BEB304 + A68CF444AF68BCA6FD0CB7A2D3825221 + A6C6B394D9F32A65B7D7FDA7FAB6D71D + A77B3B315E5C1516CADB82A740963CC3 + A7D3198D8FCC45F6C9C8BAFCD2606885 + A809C1737C38D086139517350AF4ACD3 + A864E1B0C28D0756A2BFA70B9825349A + A92039D9E8A6325B8476FD636D847EBF + A93049FBF10DBB3EC122C34A621BE839 + A9F9267348C546A1E5579EEC0554BD3B + AAC9269D0969268D70CE0AB2B639D8A8 + AAEA66E80A507BB1A0BB30CCA644D597 + AB17F8411204AB1EA27E24B985A4A932 + AB8C68E261DD69ACF18FD085B272B8C0 + ABD1161D98F62DDD4C442A12BC68B3F1 + AC15C564F7D9AD9588862CA03368A2AC + ACE3D168E52E2A7667FFBE335A8D625A + AD1B5E9B4C3A9207CFE4234BA75EE60F + AD478CC9C04766B56E976F058D237FCA + AD7085C8B7F4B7A13E716D3CE80314E2 + AE20A215C61A5C3A8F5BF2F31DAF1FEA + AE4D1163D1B4377B1E2F397855D1DF2F + AE607A6A9821989F79D0B69333390E70 + AE91DCFDF6BFC9469583400A32932E9D + AEBEE3973E30CACBC6A35A94A7400A58 + AF3164BF21E3965EB1D2543F304C3249 + AF6A5A6706288E665A8B919D97C1801E + AFB967478C372FC005A72FCA58C72964 + AFF547A7C09D8E377B982F198EA78177 + AFF6B32F54658DF4676E496EDD145EC2 + B01B908ED05D5500939387783ED9ECA8 + B0677889E9EFF65F744FBBC3E1CBCA14 + B080318500F8A4CB2FA6FBA6511BA989 + B1AAF32F53485EC5DD0AEBDBC01EB8BE + B232E58A7697899E5E6A0B632DEE6637 + B332AD411E18A99D6A3365A42DA83236 + B3563F7BBCFFA1FFCF41D718A2354F41 + B35B321E8ACA801428CDD61106EE6B67 + B378A3ADD7CE751F3564DC0356026130 + B39F5765FE839C58508EC5F925A2DA18 + B47D2ECA02F263F9301FDD1580875938 + B52ECA28990E65FB2A319F5311E8C76A + B56541F200ECCCA59C9D6363184C58E9 + B6405930CF5BB7EC77F6D782489967E0 + B6952ABAF782F39B51C607B136063D1C + B6E958AA096333F1AA713791DC607C0A + B73C5028F65AE829812ED7185C189FE0 + B7CDA3CFD88ED79C16F4EE98313848F7 + B7D1161CEF1B508A9BA89C00731C80C6 + B881B55E92B0598E4EE497C782161662 + B8BF64C7C995AD8730DACADD7C122B1E + B8EB20A7C9DA98348EFB86783E8D8E05 + B978245BD5BCF814E6BC7F8DE4FF95B9 + B97F5F048A4CBB453498E1FB2C6AC623 + B9970CC2932527F209413C2C484F35DD + B9C06BF78044477665DE6E5278BB4738 + BA14BA4C720C6CB090DE807FAA81F7F0 + BB7D05886837AEF6E52C85FB86F41612 + BBB734DBD3301DED1361111064F6621B + BBDEDBC8BA17E3499316D3810E3E43ED + BCA048F2DA69AF503F56C8A42B015DFD + BD96BDF67578C1E6A801C45C7BD1D080 + BDB1CC9BEEC21E79C9C693D1FBF6766C + BDF720EF454A803F6E7C7F509280F8AF + BEC382FE914A9A7AB8AE7C3A49808191 + BEEF11DB3BC2C679D91D961270BE8E3F + BF20DA8079B1E64C664982479B2BE89C + BF7A5B421F00D3CDFC19411D2A3A9202 + BF7A6FD5DE7B78C35D1AE199217F706E + BF9CBA2CD1645C2D095C77F5235D3D55 + C15864676C270929D5FE276E1B0468FD + C15BE20DC59B5ABBE2CE2FCF02A2F6CC + C1780B6D216477689D680B1E7E043E60 + C1A8E1AC6A4F7899A842C818427B38C6 + C1AEDC5F3183A74C2774261CD8A2E2DF + C1C5E8E9E69CC5B524466C499DAF762D + C1C8C8AF6F0A93330A90D8582B47E7BC + C272B0830E7F82E27F21DAA88EF1DD38 + C3218C6CDBF39445BE4F27EF692D8544 + C443F46F0DE7F3333FEC3C5DB0E577DA + C484A33630CA546568E528DEEEC0BEC6 + C4B60A5F22E088B150A913BD78ECA1EE + C505E3348D60002E6B29BBDD54CE1DAA + C52BEDBCE1DBA792601BBED89C217D43 + C57102D347840AD0D8804F68E95B4EE6 + C62F4B5E730C1629550A864B8F5872CF + C63F54DEBFEB88347C828B6E99CE15AE + C694BB9EC92AAD2EDA60717134AF1DAF + C6A3CB15A0560F4CB33FE124D37303D5 + C6B77ED20D426726B42960DF31276C7E + C7032A44A7C94FBBEBCA474CACA8E039 + C7ADF8B34BB1D956D1DE449E4405F1DC + C7E921A93A355B5C123D486803476E67 + C99928F7D99EA134FD0CB2FA5D7BA937 + C9BE66BAED5F6E2FE7073FFFC80045E3 + C9F790F07F54D5E41E2FC979563FE501 + CA5807CCEF648E544971ACBF4DCB7C48 + CA76D27C15B0FA48CC08ABD75E32F70A + CAD35C1C34A6051356CF9D041B1E36A5 + CAFE3691EC99E41FFDE7E215BDF424E2 + CB10F0219AA11D2DE6A32E73F6248F65 + CBF9CCC45C2B2985CE51A8C8ED8F70D5 + CCC6B6D547168E5E21ECC7EF5604EFF4 + CCEB9531E6B9A8923D10D2CF94B8EFC0 + CD4DC3AB41E5E35ABC23DE042D6DF77F + CDC396193CEA5DD84DDF772544BE9167 + CDC9268849BD8D220E0F25BFAAB218B0 + CE71F1B8C6445400D64C640AACE2C82C + CE8D9B25BEAAA9D416C2B91D7D852B19 + CEB3D98368A6A5BF0E69792974C0A181 + CF3918D370FC7C2E0D663833E6F080A7 + CF3B8D257F14175FC66EF0F0E2DE2AD3 + CF6B5CB82B15CE242AF65354A23177CC + CF7F70141F1FEB06A9FB0E622D7D53A4 + D007EF70AA348D98E3EDB6C34FDD19CB + D09AD9BFA5D7E59ED26669AA5C26A8F2 + D16C08F1032BBCCD03549A6ABF1F40F0 + D18EF492BA4D46AE013F54F8C005E346 + D1A55A2A6DE6900D45270635FB5EC3B6 + D232015A876C6F4A7C1511CF4516AC6B + D24C58B449055A4D7D1E185521EADE43 + D29F50E54B9350C29E0EB388D62894AD + D337373B869F72C4B3439AFC5A6E6A2F + D37A81C45B6140F38F6A364259C2906C + D3BFA3591622C7203CC7E82562F15482 + D4BF0FD26AA66BB25062B6ADB6BB3EAC + D4CBD310AC7E9E8F524CE53562DA3986 + D51301C9D0A2426E3D5CE5D0FA891673 + D56A771A44D88AE774F3488E05DA55AB + D5D5E22E89DB04B47DA9E3723285AC19 + D5F9F64E462A34AD61A8B63500689C31 + D65A579C7C8B6CC7B52664670D4BE2B0 + D6C353583FC8E7757374A4AE593FFFDB + D744AC1ECC2BF8FB13890830117A371E + D8274F95B4F767ABDE4ED702A79A4411 + D89DC59DC0E6A3F2D79BF339B722276D + D8AB5C94D0D3DED6C0C9194F232858AE + D8CE9589AA5CE40CD1FA722F543219E0 + D924E0564FE1BFF6B88714EB49988D27 + D99638D21633AFDED0CBC5DF48E5249D + D9F42E302F719E523816B6BD5D46CEEF + DA5CB3BC791618DF8A0BB50774E8601B + DA82D4DCFF65F636FCF8822D68730A8B + DAB5845BA5B1B86205D1DB756A1135BA + DB642544BD4335E4970EA86F0215C79F + DCE285870DCFEBF613A9010A23010245 + DDA86058AD3817AD1DE50867B4AF1EAF + DDEC59CA9AFD13B1C255E26FDC159AF8 + DE229EECCF89A3918D0149BDF65F688A + DF7CE5193E748C57919D75CD7D376A21 + DFF74CD8561A40A8F43F2B5BE496B59E + E0C19C7D16519DDA76014D54FF711261 + E0F7D6C3F965391FE11C7D3C071CF243 + E1207D0B99C4567E4BA4B7AAE3490990 + E131919594F1195A15FF416FD8981310 + E168E06ADEA1A506F4C50298D8ED430A + E182F62EC3A949A490FE0C6F71585AC0 + E1A064BC52BE156954D9C5DCED1650CA + E1BDFB9C97440A1250356D2F8B39D988 + E1CF25875E5AF7C2445B173CC7B6ED3C + E1DC314ECAFAA6C5AB0A6535986F141F + E3DD1D2295EC75292BA45E2927693A33 + E5222C6681882A1172542394DB38EAC2 + E550EA09C202F953CD51A5FF20BEF7F2 + E557C6AAEE53D3D0B4C479DB152C9823 + E5D30A41DFCD89E2462CE2911AF74A39 + E6AF6CCA6224B98996A12A8A5B81E43E + E6B2E9C7E250D0981CD643C25E7DC723 + E6EECC6F60E310D6DB3D485B45260E04 + E6FEC3A6AE5D3BF04368B56DEA56A59B + E732B8D2E8E38DED9A1711CA5B831846 + E747313FDBAA84D970B8B0FFB39E97AC + E78B9C0775F311619CAD34FE430C3051 + E7EB7C397BFFB1296553771590A0AEDA + E8182ED4675E672B6AFC0C486422A7B3 + E87A6592EFAC55B7F3D532BF5B98D287 + E8FEDA98E9B46B1A20A41F7515D2EA27 + E91CB54DADC6C97A6F565C820F812F2F + E95B293BAE30C4EFC5CC5FFB7E23C70A + E9CE8F6953684544A1AE9D97CF3A6436 + EA96004A3BBF52E937547EE197D0D65D + EAAD09B9AF64336CEC84528B9A7368CC + EB8AA71B976DECE1343AD837816A0E54 + EBB4992A8B3645C35422D58834E532D7 + EC1BD639AEA2E8D9B2E7CA99C32F8AFE + EC3F09C3597A0627C09249C8BFC46BB5 + ECFDB3EBA80F3F12C51C8C4720E831ED + ED0B1360EA38944BB7542F55DECA36F4 + ED8A6EFD12E3A660021D69AB60BD2AFE + EE5F6B13980FB69B75DDE567C488B979 + EE7580CAA349FD7D681D43075D5A0967 + EF68AC802FDD41FB3A03E0B9B94AC98C + F072A1BC350B8F41DC986A69A6D069F3 + F23647CA2CDD04073704EA686EFA1D75 + F28FF396F29FDE482BC550E46C0F0422 + F2AA7A7B66DE9C200A310380C56D2A89 + F36B99C2951F6C1E014F6D4CBE6E74F5 + F36D16F84B60F434CCE87DEFAB136313 + F37AC9780CBB6B93F89CA3F3E7D837AE + F39C5A0D0E7E847F5DF7FA95F61AFDC6 + F3F07C87CFC0948AEF7CB6F99803D829 + F4F9A4DA1AE683F6CAD4621458734D3A + F519B42D6EB5A99C28804AB3BCB56128 + F5636988C6D644712543CD4899D46213 + F5A64CCB6CF1749BFE7165B42CAF777A + F61424FE0ACAD503AE2B83CD04347BAA + F69889DFDDA2DE817FF32701A4F0E899 + F7791EF799632D08545C91B9D8D3C836 + F7B7D706DD3B7CF2492ECB47A380F4F4 + F86F562AD71F1AE2BDAFCB5A347383BE + F8AEF1D16D4A9E67871CC97164177597 + F93B4F8884B25160CD0567706E2A3E51 + FA710C123A9625340EA09D32FD1AE2DA + FAF33321323603B874827E53F0043984 + FB25E2C2486F69401F2B844B13D1E9BE + FB51DE6690D29CF1E18C23E4D83BA453 + FB5CD3BE15A6F28B29309F81749350BC + FD1F37231434A8DFA4BD9EB9F9443155 + FD47B85F4EBF9EB2DCA402EDF7D50D49 + FD82E877FF270F5B28535B373CF4CECF + FE5B64BEB1369D0925AB29FE7591197D + FEB556C1894B2BC400986F483FF3FD50 + FF475B4FC0B108095E0BF822C141E473 + FF5C78EBBC58A0C28684762FBDC6CC22 + FF5D0C1C5F051329691338EB933066D0 + FFA05F21C761F2EB2ADABAF0AC4032F2 + FFCFA578EE685D870EAB4DAC20EE6247 + adobe:docid:imageready:0b64feb7-3fba-11e0-96b3-fce383b5c69d + adobe:docid:imageready:0f14d91b-56c5-11bd-814b-9efdc7b2dc1c + adobe:docid:imageready:1242e065-d629-11db-a4e6-a3680e1b4eb4 + adobe:docid:imageready:29e2ee09-3f94-11e0-bb7f-e4afe268d402 + adobe:docid:imageready:47da1fb1-56ba-11bd-aba9-dd47b0768108 + adobe:docid:imageready:71734897-56b8-11bd-aba9-dd47b0768108 + adobe:docid:imageready:9398cfbb-5d93-11e0-b6b9-fd01e8a79f67 + adobe:docid:imageready:97c40bb9-56c2-11bd-aba9-dd47b0768108 + adobe:docid:imageready:a71eca80-5649-11bd-b9bf-8767b0b1ed95 + adobe:docid:indd:6543373a-7907-11de-977b-f883522df34c + adobe:docid:indd:d9e95eeb-b763-11df-82eb-83f8ca83d6f5 + adobe:docid:photoshop:00657177-b159-11e0-b532-93e929592d24 + adobe:docid:photoshop:01f145c4-1bf9-11db-af76-84f2f5b3e193 + adobe:docid:photoshop:01f18c87-a7a6-11dd-abbd-c805268b068b + adobe:docid:photoshop:01fe3f36-a1b8-11de-9917-9754896ff12a + adobe:docid:photoshop:0408e4a6-09e7-11dd-a59f-b7265f3142a5 + adobe:docid:photoshop:0427a799-85ba-11de-a381-99c2e1231163 + adobe:docid:photoshop:042ec86a-52dd-11dc-bb7f-87d1a9f02b07 + adobe:docid:photoshop:0558d1ed-5bfb-11db-ae46-b839ac5a4e87 + adobe:docid:photoshop:0609fb3e-be2e-11d9-9659-8c4f0a1832b0 + adobe:docid:photoshop:063cb0b4-e295-11d6-af7a-eaacc79d963d + adobe:docid:photoshop:064b12ce-8b60-11dd-aaa1-fe75f59ef3a8 + adobe:docid:photoshop:067f015c-6500-11dd-8c0e-da03867eaa6f + adobe:docid:photoshop:06950cf0-0829-11da-8899-fb102bae280b + adobe:docid:photoshop:076bdc5b-f337-11e0-83fa-ad968a10a347 + adobe:docid:photoshop:07a11841-fe55-11dc-92c9-bdf6594ff1a5 + adobe:docid:photoshop:08610a74-e674-11d9-b245-d0cca65a656c + adobe:docid:photoshop:08b64e8e-775c-11e1-9829-bb69b0cb9f57 + adobe:docid:photoshop:08cc93ec-8b58-11da-bcb8-e53ec5bf3a00 + adobe:docid:photoshop:08d0fa44-081c-11dc-a2b5-9e1773a6892e + adobe:docid:photoshop:094141ef-c38c-11dc-8bfb-839e33fe28b6 + adobe:docid:photoshop:09471372-d794-11d9-b402-a33820c6f95e + adobe:docid:photoshop:0999a842-b6e6-11dd-9740-d530f811e3f2 + adobe:docid:photoshop:0a899a39-0ea4-11df-a4bd-ddfa81567552 + adobe:docid:photoshop:0aff9ff6-6d64-11da-88bf-947e4ae60417 + adobe:docid:photoshop:0b04992a-1420-11d9-8070-ccfa71b3d275 + adobe:docid:photoshop:0bf3f44a-c1de-11da-a9e1-e6a2d138b6b2 + adobe:docid:photoshop:0cd387a5-ee9b-11e0-95e0-b1ac5d19dda0 + adobe:docid:photoshop:0d681a97-824c-11db-bbd6-be68c03c4b51 + adobe:docid:photoshop:0d69849f-1468-11dd-b4d5-a76ee511c599 + adobe:docid:photoshop:0d6ab660-07b0-11dd-a7e9-e31e3ec26b17 + adobe:docid:photoshop:0da2ac7c-b653-11e0-bf31-a151bb9ca726 + adobe:docid:photoshop:0dcd00b7-eb4f-11dd-976b-bcf0432bcbdd + adobe:docid:photoshop:0e19f718-22df-11dd-a19c-9c05b9136f65 + adobe:docid:photoshop:0e2877a9-4e90-11dc-bf94-d0e407ecb000 + adobe:docid:photoshop:0eae4cf9-0101-11da-bf39-ee5c9f879e11 + adobe:docid:photoshop:0f8d9f45-258c-11df-8e59-e39eaef372fb + adobe:docid:photoshop:0fc79f20-d232-11db-b1bb-aeba6ac5ef65 + adobe:docid:photoshop:1095d5e7-5bc7-11d8-b5c4-ad94fedcbdf3 + adobe:docid:photoshop:1119fac0-2e3c-11e1-8359-9d673895aa9c + adobe:docid:photoshop:11639c42-2d6e-11e1-be6d-d25e16f4b6f0 + adobe:docid:photoshop:11c2382a-e0a6-11dc-bd27-f2f24d3d2363 + adobe:docid:photoshop:11c2382c-e0a6-11dc-bd27-f2f24d3d2363 + adobe:docid:photoshop:12dd0d52-d932-11dc-895c-c26900a7a926 + adobe:docid:photoshop:131cf6ae-69ce-11db-9465-923e5ffb0d9a + adobe:docid:photoshop:1345b5f4-8d98-11da-a998-d179b6732d6d + adobe:docid:photoshop:14649981-cb7d-11dc-92a4-80c439d43b03 + adobe:docid:photoshop:14a2d855-9a74-11d9-aedb-d7d70a63bd2d + adobe:docid:photoshop:14e1071e-b653-11e0-bf31-a151bb9ca726 + adobe:docid:photoshop:15923273-fa43-11da-9121-872e36a13a10 + adobe:docid:photoshop:15e963e9-99c0-11dc-8ad5-df3ecc15eef3 + adobe:docid:photoshop:162f56b4-a07b-11db-9b6d-e4600e41f893 + adobe:docid:photoshop:1634635d-b6aa-11d9-9d93-8f8f4ce80942 + adobe:docid:photoshop:16562bc5-669e-11e1-995a-dc4ae81e4fa4 + adobe:docid:photoshop:165aef09-e346-11da-8464-e87c953e40bc + adobe:docid:photoshop:16bfc219-8b42-11e1-ba67-f92e6a52212c + adobe:docid:photoshop:172e0e62-18c1-11da-ac91-b2cdf28072d8 + adobe:docid:photoshop:179a5fc6-d465-11da-b675-db28fe4a73f8 + adobe:docid:photoshop:179bc286-edf0-11d8-a136-afba0da96bc1 + adobe:docid:photoshop:17d4cbf5-8712-11d7-8c24-ba0f09c7ada8 + adobe:docid:photoshop:17d6ebeb-68e0-11dd-a6de-e0bc65130de7 + adobe:docid:photoshop:17df7783-8b64-11da-bcb8-e53ec5bf3a00 + adobe:docid:photoshop:180bfe9d-fa43-11da-9121-872e36a13a10 + adobe:docid:photoshop:18bbd59a-02c3-11e0-a954-8a9d4a41cbc2 + adobe:docid:photoshop:1930f6b7-8ebc-11e0-b2b7-f29bd0eb2c2e + adobe:docid:photoshop:19b43075-b92a-11df-a950-dbb0c5952f58 + adobe:docid:photoshop:1a7d042a-33a4-11e0-b5a2-d8518b6126ed + adobe:docid:photoshop:1a8dcaa0-6601-11d8-8e55-f0a808080e1c + adobe:docid:photoshop:1a9dd732-cea5-11d9-979b-9183ea2fb092 + adobe:docid:photoshop:1abd4b2f-4c98-11df-b472-cdc7f219d117 + adobe:docid:photoshop:1b1e7074-69ce-11db-9465-923e5ffb0d9a + adobe:docid:photoshop:1bca738d-4d28-11df-ae11-88a6b11ac6d3 + adobe:docid:photoshop:1d584d13-eacd-11dc-858d-eb39a95b8aab + adobe:docid:photoshop:1db9e1b9-8df8-11df-9b52-a71be759a593 + adobe:docid:photoshop:1dec74ed-69ce-11db-9465-923e5ffb0d9a + adobe:docid:photoshop:1e66640d-5c00-11db-ae46-b839ac5a4e87 + adobe:docid:photoshop:1eb64e64-8da5-11da-a998-d179b6732d6d + adobe:docid:photoshop:1ee18350-9cfa-11dc-ba37-85492b5ade36 + adobe:docid:photoshop:1eff0a7c-bb0e-11db-af40-c3e7cd681b24 + adobe:docid:photoshop:1f180f7c-9b39-11e0-9189-b28a1ccdb473 + adobe:docid:photoshop:203cc94b-4adf-11db-aa4d-aa6e95f1cc6a + adobe:docid:photoshop:20b5d8f3-25bd-11e0-9bd2-aff5a0d39026 + adobe:docid:photoshop:20cd6ba9-3770-11de-870a-9fd871d6c21d + adobe:docid:photoshop:212e5c2d-2c07-11dd-90cd-949161228160 + adobe:docid:photoshop:21672e49-0a8b-11dd-baf7-d52def3e1b33 + adobe:docid:photoshop:2176cf16-4d4f-11df-ae11-88a6b11ac6d3 + adobe:docid:photoshop:21db84dc-fb17-11df-8b9c-8bf84f479941 + adobe:docid:photoshop:2236f913-0073-11dd-b152-d7d023771671 + adobe:docid:photoshop:223cce3b-7b26-11dc-8886-82a522d1a834 + adobe:docid:photoshop:22990faa-e055-11dd-b567-8be6e632a809 + adobe:docid:photoshop:22a86171-c025-11df-8404-de96191a7f58 + adobe:docid:photoshop:22b938f6-8bea-11d9-b97a-dee482338636 + adobe:docid:photoshop:242de3eb-3586-11df-8f8b-ba8d9e2be798 + adobe:docid:photoshop:257b6a5f-532d-11e0-a09e-a919746d4862 + adobe:docid:photoshop:25b3b0c8-fc09-11db-a287-845f17165879 + adobe:docid:photoshop:25df04c2-69ce-11db-9465-923e5ffb0d9a + adobe:docid:photoshop:2602c0fd-2573-11de-8712-adb55e01b9fa + adobe:docid:photoshop:2617d3fe-f6a4-11dc-9e5e-f56ac854b98c + adobe:docid:photoshop:2636f904-ef8e-11db-868a-c506262104bf + adobe:docid:photoshop:277ea692-1b44-11de-8378-e46e3e6d41ee + adobe:docid:photoshop:27a0abb6-5547-11dc-b450-c1b48872e8a5 + adobe:docid:photoshop:27dd2826-37cb-11de-a503-90d8b29c240a + adobe:docid:photoshop:28df1bbb-29c8-11df-9f6a-f8936dc01f71 + adobe:docid:photoshop:29340be7-17f4-11dd-8148-fbe7f0bac890 + adobe:docid:photoshop:29393d8b-2a83-11e1-97fb-c88bdd563f09 + adobe:docid:photoshop:2a1d84d7-fa43-11da-9121-872e36a13a10 + adobe:docid:photoshop:2a706663-0748-11da-b8b0-ac5e00cb1c12 + adobe:docid:photoshop:2ad921b3-21b7-11d9-8559-b02c16574f1f + adobe:docid:photoshop:2adce4eb-411d-11d8-8042-b02c73d50967 + adobe:docid:photoshop:2b15102d-a0a7-11df-acbe-9d06a8f4b36a + adobe:docid:photoshop:2bae712c-fa43-11da-9121-872e36a13a10 + adobe:docid:photoshop:2bd96ba5-276d-11de-8522-a03abdb99a69 + adobe:docid:photoshop:2cc6ba47-0e4b-11df-8440-f986651e470c + adobe:docid:photoshop:2ce80ace-e895-11dd-9ee4-e1adc2e38589 + adobe:docid:photoshop:2cf36c3e-ddcd-11d6-b8b2-955147430a0b + adobe:docid:photoshop:2cf8d6b8-e1fe-11d8-8423-cdfc09f69766 + adobe:docid:photoshop:2d00f117-2ccc-11e1-afb6-f1e039506ea7 + adobe:docid:photoshop:2d3e179b-dc63-11df-bfb5-f9af494b0db7 + adobe:docid:photoshop:2e53065c-a7db-11db-a30c-aa3f32f49aef + adobe:docid:photoshop:2e775e34-3b80-11dd-84b5-fa465d9a67db + adobe:docid:photoshop:2f431e56-1812-11df-bbfe-9d261f9528a1 + adobe:docid:photoshop:2fd4de6f-fa43-11da-9121-872e36a13a10 + adobe:docid:photoshop:2fd7a59b-2abe-11de-80b3-a4c4c4b363ca + adobe:docid:photoshop:30092dd3-af98-11e0-b7ca-dbfe2e61d0a3 + adobe:docid:photoshop:3019fa14-7137-11d9-8ef5-b1579f0470a7 + adobe:docid:photoshop:30b17281-8689-11dd-93dc-973a6495cc63 + adobe:docid:photoshop:30e3a653-fa43-11da-9121-872e36a13a10 + adobe:docid:photoshop:3172517c-8209-11dd-9a26-ef1d3ae9c702 + adobe:docid:photoshop:318cd3ea-69ce-11db-9465-923e5ffb0d9a + adobe:docid:photoshop:31c0cdbc-7756-11e1-9101-97a7d7840dfd + adobe:docid:photoshop:3229f2ef-af98-11e0-b7ca-dbfe2e61d0a3 + adobe:docid:photoshop:329c46e2-2cb9-11e1-afb6-f1e039506ea7 + adobe:docid:photoshop:32e4a3c8-874e-11df-914b-c718c623ea7a + adobe:docid:photoshop:3332b716-e3aa-11db-9a23-b19c16fd4982 + adobe:docid:photoshop:33a906e9-d6df-11de-b624-f750f966e224 + adobe:docid:photoshop:33ed9173-e5b6-11d6-a4ea-a0e61aa6b8f1 + adobe:docid:photoshop:35a5b358-320d-11dd-ae08-de24862c009c + adobe:docid:photoshop:36311bc2-f494-11de-958e-bed7025130bf + adobe:docid:photoshop:36612b95-2d56-11de-bb11-ca9a886c5fe6 + adobe:docid:photoshop:36f3b0ed-1a73-11da-a649-87ebf6ab01f0 + adobe:docid:photoshop:37bf4216-6de9-11d8-b263-dcb16e9ef557 + adobe:docid:photoshop:381c71bf-f6bb-1177-97a4-b0dadc41b41b + adobe:docid:photoshop:39156f25-80eb-11db-a978-c5e6e63e45de + adobe:docid:photoshop:3919dec3-e9c8-11dc-942f-f2980918d941 + adobe:docid:photoshop:3930fa80-581f-11df-9302-d6831efb5a0d + adobe:docid:photoshop:3986dd71-8144-11da-af47-f98ca342a16a + adobe:docid:photoshop:39d55d38-c7c5-11d6-b6bb-968fdaf7e16d + adobe:docid:photoshop:3a257904-fa1b-11db-a680-b672f234fe26 + adobe:docid:photoshop:3a3750d5-8572-11db-a6a2-e63bcf2f596f + adobe:docid:photoshop:3a381cd1-c82e-11db-96c4-bcabed604670 + adobe:docid:photoshop:3b4ad281-f1a5-11db-8922-d70353ace9b0 + adobe:docid:photoshop:3c121c1b-2061-11dc-ab87-8ce6f416405f + adobe:docid:photoshop:3c78a10c-fa43-11da-9121-872e36a13a10 + adobe:docid:photoshop:3ca33888-b7a4-11e2-b9e1-95a6799e8e37 + adobe:docid:photoshop:3cc3be03-94bc-1177-89b2-c5ce30f3ca6b + adobe:docid:photoshop:3e9e55f1-de8d-11d6-88e0-e5ac9c437543 + adobe:docid:photoshop:3eb9d5d0-7612-11dc-9872-87d859ee3843 + adobe:docid:photoshop:3f4b5c5b-eacc-11dc-858d-eb39a95b8aab + adobe:docid:photoshop:3f4b5c5e-eacc-11dc-858d-eb39a95b8aab + adobe:docid:photoshop:4013845a-6f7b-11de-9b6f-d56dda550408 + adobe:docid:photoshop:40d33a01-e1df-11e0-bc77-fbe244c77990 + adobe:docid:photoshop:40ffecea-e206-11d8-90e4-bb0df6ca8694 + adobe:docid:photoshop:4194748e-921c-11e0-82e4-cc8475dea2ff + adobe:docid:photoshop:420d20f8-7756-11e1-9829-bb69b0cb9f57 + adobe:docid:photoshop:422d030c-3e12-11dd-a3f3-fefa4d5e9b3f + adobe:docid:photoshop:4296683b-cf26-11db-b1b5-fcf0cb251532 + adobe:docid:photoshop:429e75f3-04dd-11e1-9ed8-b8283b8fccff + adobe:docid:photoshop:4443a34d-8f81-11da-8980-b4f7587318c1 + adobe:docid:photoshop:44f70bc9-dd59-11de-8c76-a14e6fac37ae + adobe:docid:photoshop:46620b5e-fb88-11dd-82a7-ba89bf336b7a + adobe:docid:photoshop:46620b66-fb88-11dd-82a7-ba89bf336b7a + adobe:docid:photoshop:47073a10-5f84-11dc-8e54-e4278b2940dc + adobe:docid:photoshop:47777179-72a9-11db-94d5-b112fd03cade + adobe:docid:photoshop:47f929e2-d447-11d9-ae72-f67ba455a7eb + adobe:docid:photoshop:482f6950-e119-11db-818b-9e24fabc97a1 + adobe:docid:photoshop:486b6dea-0ef9-11dd-af6b-fe449087c7f6 + adobe:docid:photoshop:48912bb8-c0db-11db-96cd-daf3d6618ae0 + adobe:docid:photoshop:48ad84f5-c68a-11da-bce6-9097d22b90c7 + adobe:docid:photoshop:4a96218b-66b9-11de-a83a-bde54db9690a + adobe:docid:photoshop:4b06dcf1-06af-11de-90ab-fd97112f18a8 + adobe:docid:photoshop:4b8ed983-863c-11da-a8d1-d221db5a105b + adobe:docid:photoshop:4c0aeecc-8d84-11da-9f99-ae414f6db1b5 + adobe:docid:photoshop:4ce2afc3-a04b-11db-96e2-80f2eeccae2f + adobe:docid:photoshop:4da0c2f5-98eb-11da-ac71-be3291a8add0 + adobe:docid:photoshop:4e0340d1-4f56-11da-8b4c-c8e689cb58c6 + adobe:docid:photoshop:4f9af5d2-1359-11e0-8fa2-89f6e7174c44 + adobe:docid:photoshop:4fdac08f-78db-11db-97ca-e3c20abf246c + adobe:docid:photoshop:50e64388-f2a8-11d8-ba37-b505723b27a5 + adobe:docid:photoshop:515a894e-1656-11dc-aa55-ea97e4dba80e + adobe:docid:photoshop:51e98ec9-874e-11df-914b-c718c623ea7a + adobe:docid:photoshop:521d4db9-9b3b-11e0-9189-b28a1ccdb473 + adobe:docid:photoshop:52db7998-3a56-11dc-80d7-84ef0cb84c20 + adobe:docid:photoshop:530d1f8d-2ff5-11e1-8fc0-fb78c9c600ed + adobe:docid:photoshop:5328d476-2539-11dd-9148-d3fd6c943eaf + adobe:docid:photoshop:53302e9e-8f66-11dc-8b8e-a0e3abc9f998 + adobe:docid:photoshop:53407071-8ecc-11dd-a22c-9e8f75aa8a93 + adobe:docid:photoshop:53d0f5d2-5bed-11dc-bcbb-d85c517add44 + adobe:docid:photoshop:544f255e-1626-11e0-ad32-feca10191eb3 + adobe:docid:photoshop:55b239dd-ca95-11de-bb83-d09779563ec9 + adobe:docid:photoshop:5601ac1d-12c9-11d9-8622-a7b066e3a82d + adobe:docid:photoshop:56c6d2c2-d19f-11db-ac8f-e75770c3f6dc + adobe:docid:photoshop:5799b84a-f22d-11dd-95e6-d94ef15f0b29 + adobe:docid:photoshop:57f9bf66-b832-11dd-8dd6-e231c74162bd + adobe:docid:photoshop:58af0871-8738-11de-862d-e6afcef5c739 + adobe:docid:photoshop:59081be0-8708-11df-92f2-a8c0dc19957a + adobe:docid:photoshop:59374361-0836-11d7-bde1-ef8a60524d83 + adobe:docid:photoshop:594c7d84-1e4c-11dd-85a3-bc9a131fed10 + adobe:docid:photoshop:5a489e66-edcb-11d9-a279-bbdba68422e0 + adobe:docid:photoshop:5aa73eb4-8f37-11d7-9bf9-ffcb9a1962d8 + adobe:docid:photoshop:5b7308e6-69ce-11db-9465-923e5ffb0d9a + adobe:docid:photoshop:5b7cd8c5-c57c-11de-a2ea-caf244eec16c + adobe:docid:photoshop:5b7cd8c6-c57c-11de-a2ea-caf244eec16c + adobe:docid:photoshop:5b9d0648-835a-11da-bbf3-bf0995c96385 + adobe:docid:photoshop:5bb25fcb-00d5-11dc-8160-fe3baaea4664 + adobe:docid:photoshop:5bd0fec6-f6d3-11d8-9fb7-8699fac9df85 + adobe:docid:photoshop:5c20a16a-0779-11dd-bd9a-fbc1eb41c56e + adobe:docid:photoshop:5c20a16e-0779-11dd-bd9a-fbc1eb41c56e + adobe:docid:photoshop:5cc067c8-6063-11dd-b32e-d18e8b22e880 + adobe:docid:photoshop:5cd6ad9c-a2db-11e1-be23-d141a9e6255a + adobe:docid:photoshop:5d55d682-fcb5-11df-8232-c2c89e4ac8d9 + adobe:docid:photoshop:5e56d3f7-1320-11e0-a9fe-a560b5ba6253 + adobe:docid:photoshop:5ef56f6b-0749-11de-8f7e-f799600ed10d + adobe:docid:photoshop:5f5b7de0-4a43-11df-bc05-e64777e8bef8 + adobe:docid:photoshop:5fb574b5-64e6-11d9-965a-d5b74233050f + adobe:docid:photoshop:5fca0d8e-86e1-11de-b1dd-9d263488e40b + adobe:docid:photoshop:604e91cf-4ac8-11dc-8e09-e8da50afd2c6 + adobe:docid:photoshop:60549f01-88cb-11d8-a38e-9bdbf62b63ce + adobe:docid:photoshop:60d2d34a-9c77-11dd-89d5-96a30d61d7ff + adobe:docid:photoshop:60d53d84-f875-11db-831e-c5f511e4f2eb + adobe:docid:photoshop:612aa002-1421-11d9-8070-ccfa71b3d275 + adobe:docid:photoshop:6141f171-b222-11d8-aa2d-8b84e1d0005f + adobe:docid:photoshop:629df61e-7763-11e1-9829-bb69b0cb9f57 + adobe:docid:photoshop:62c98226-32d9-11dc-91ad-a3de54ba595d + adobe:docid:photoshop:62e95306-f64b-11db-9410-f506e7642415 + adobe:docid:photoshop:635105d6-7b71-11de-b31b-b4a12dda2775 + adobe:docid:photoshop:638ea585-9c6e-11dd-8b97-84445de134a0 + adobe:docid:photoshop:6517155a-87a8-11dd-b7e3-84d715057fb2 + adobe:docid:photoshop:661b5d26-320c-11dd-ae08-de24862c009c + adobe:docid:photoshop:66ace648-52f0-11dd-95c0-ab76489a8f60 + adobe:docid:photoshop:674c51c8-b376-11dc-b1e4-920e83e0d8c1 + adobe:docid:photoshop:680b500c-af7d-11db-9531-ccfb979a170c + adobe:docid:photoshop:682fae73-f1f0-11d8-8ed1-88806a7f26fd + adobe:docid:photoshop:69183c62-5abc-11dd-9c85-92573e7c5027 + adobe:docid:photoshop:6a651c27-b905-11df-acd9-95873685eacf + adobe:docid:photoshop:6aaab3c6-38ee-11de-94f7-fa3cd32aac0e + adobe:docid:photoshop:6b187a4d-21ac-11df-8763-f7b32115d1d8 + adobe:docid:photoshop:6b2c0000-ea4a-11de-b065-be1724baa972 + adobe:docid:photoshop:6c69c3eb-f3ad-11d6-9658-935716e2d04b + adobe:docid:photoshop:6cc72dd4-c122-11da-9ea0-b410217bc604 + adobe:docid:photoshop:6d604580-08a7-11de-9c1b-945f77a51690 + adobe:docid:photoshop:6d6fcacd-891e-11da-b516-85660ac11f29 + adobe:docid:photoshop:6e624520-a5dd-11d9-bb86-cf6cd7fc0c61 + adobe:docid:photoshop:6e9b8479-5f83-11dc-8e54-e4278b2940dc + adobe:docid:photoshop:6e9dbbc1-f176-11db-b395-83eb43664577 + adobe:docid:photoshop:6f36e0b0-1b73-11de-af62-cec872fd2ec8 + adobe:docid:photoshop:6f905f15-8fd6-11dd-9a7c-ba946f5f1176 + adobe:docid:photoshop:6fe0c088-27f6-11db-b09a-88004c6e1c0f + adobe:docid:photoshop:70795369-69fc-11e1-92f5-81967b3809d8 + adobe:docid:photoshop:708f8750-0b05-11dc-be9e-ba5d9941eab3 + adobe:docid:photoshop:71937d3c-82ed-1177-8516-a047d8112baf + adobe:docid:photoshop:7217a572-7753-11e1-9829-bb69b0cb9f57 + adobe:docid:photoshop:729b2e17-8fd6-11dd-9a7c-ba946f5f1176 + adobe:docid:photoshop:729b2e19-8fd6-11dd-9a7c-ba946f5f1176 + adobe:docid:photoshop:72e597a8-879a-11de-862d-e6afcef5c739 + adobe:docid:photoshop:72f1fb47-ea8c-11db-95c1-b1b07aeb56a4 + adobe:docid:photoshop:72f1fb4b-ea8c-11db-95c1-b1b07aeb56a4 + adobe:docid:photoshop:7314076e-d94e-11de-9db7-c5a54f0181ab + adobe:docid:photoshop:73438da7-8d68-11d9-9021-854b8c41ccb0 + adobe:docid:photoshop:73997712-ee43-11db-b371-ce4dedc23d81 + adobe:docid:photoshop:7406ec25-a656-11dc-b599-851288844657 + adobe:docid:photoshop:745d6ce4-4db2-11d9-9000-c6cf0216aa2e + adobe:docid:photoshop:74912c93-2ca2-11dc-8f05-a8daf57f830d + adobe:docid:photoshop:74ff1bcc-b711-11dd-ad9d-9539e268e205 + adobe:docid:photoshop:7667e5ea-0607-11df-8805-b555e2a42c52 + adobe:docid:photoshop:76f143bf-a582-11e1-aa43-fddeaa22588b + adobe:docid:photoshop:77161e26-a7d6-11db-b1d2-d11ab529e114 + adobe:docid:photoshop:77e0eb4f-8f81-11db-8e54-a31beaee7dd7 + adobe:docid:photoshop:7816e441-a32e-11dc-8617-8fad2a703e45 + adobe:docid:photoshop:788aa8f6-d023-11db-b7e4-bc3a9f1faf20 + adobe:docid:photoshop:78dd09da-b4d1-11de-9d86-d9f2abaddb86 + adobe:docid:photoshop:792c94d2-0b72-11dd-8a8e-b94e9ce47b14 + adobe:docid:photoshop:79595902-a0e0-11dd-90d2-876625fe095b + adobe:docid:photoshop:79c1964e-0727-11e0-a612-80a85a34eeba + adobe:docid:photoshop:79ef6de2-944c-11d9-a189-86da94e095a6 + adobe:docid:photoshop:7a190210-93e0-11e1-aba8-9645e32eaafb + adobe:docid:photoshop:7a4ae603-5df9-11dd-a141-e9cb794e1a6e + adobe:docid:photoshop:7a515fd0-d80b-11d8-9dd9-f7c48e333c07 + adobe:docid:photoshop:7a6fdd9a-601d-11db-89dd-8a8b24500295 + adobe:docid:photoshop:7a6fdd9c-601d-11db-89dd-8a8b24500295 + adobe:docid:photoshop:7a7a817f-5736-11dd-99b5-f5eb48a9ac04 + adobe:docid:photoshop:7a98cbc8-774f-11e1-9829-bb69b0cb9f57 + adobe:docid:photoshop:7b1577a7-e117-11db-818b-9e24fabc97a1 + adobe:docid:photoshop:7b4c1c49-39df-11df-9281-e40e2ef31eb4 + adobe:docid:photoshop:7ba565f4-abb7-11da-9dab-a602a063f6a1 + adobe:docid:photoshop:7baa97f7-e5fb-11dd-88a0-bac079f2f481 + adobe:docid:photoshop:7cb19e39-1b0a-11dd-bd2b-85b1c594ae8a + adobe:docid:photoshop:7d10dca3-6a83-11dd-b6cc-c62ddd1ddd6e + adobe:docid:photoshop:7dcd90a9-f657-11da-afb3-f9a60f5494af + adobe:docid:photoshop:7e4efb16-990e-11df-8951-befad6e485d0 + adobe:docid:photoshop:7ea7681f-d02e-11db-b7e4-bc3a9f1faf20 + adobe:docid:photoshop:7eef9e4e-94ac-11e1-b334-d48e92babb9c + adobe:docid:photoshop:7f299b54-248f-11de-981b-99abda985106 + adobe:docid:photoshop:7f6c8b55-afb9-11db-91ab-f6e80ed85bab + adobe:docid:photoshop:7fff3975-601d-11db-89dd-8a8b24500295 + adobe:docid:photoshop:7fff3977-601d-11db-89dd-8a8b24500295 + adobe:docid:photoshop:80fd745e-3944-11dd-b622-e3b8f8203553 + adobe:docid:photoshop:8145c4f1-09fe-11de-8249-e266b9272b19 + adobe:docid:photoshop:828e51c4-3192-11da-92ef-83469fab69eb + adobe:docid:photoshop:82a334e5-6656-11dd-a59a-b877ef5c336b + adobe:docid:photoshop:831a2bff-2060-11dc-ab87-8ce6f416405f + adobe:docid:photoshop:83887907-e5bf-11d9-949c-fb6d550bf573 + adobe:docid:photoshop:838ab369-e531-11db-bf08-bb9b651a276f + adobe:docid:photoshop:84aad769-0fc2-11dd-987b-f72099bf740f + adobe:docid:photoshop:84c018f2-47eb-11de-ae34-b5a1bd0575a1 + adobe:docid:photoshop:84e681bd-d48f-11dd-a25a-a26ae849ad01 + adobe:docid:photoshop:856033d5-fa47-11dc-9057-ac5d3de3713a + adobe:docid:photoshop:8598b102-0c7e-11d8-9587-f4958f738f79 + adobe:docid:photoshop:863724e1-de62-11dc-a856-f265a90e1263 + adobe:docid:photoshop:863acf4a-d085-11e0-b6d6-965a56581336 + adobe:docid:photoshop:868029fd-2276-11dd-9239-c1a598344559 + adobe:docid:photoshop:8687dbdf-faf8-11dc-a186-e0f9726909ef + adobe:docid:photoshop:86cef04a-eb4f-11dd-976b-bcf0432bcbdd + adobe:docid:photoshop:87a0c2d5-5359-11db-b932-d40be5fad693 + adobe:docid:photoshop:88913599-f5f6-11dc-9249-f1a6e66441db + adobe:docid:photoshop:890403f2-5789-11da-a4c5-b01f0d18ada0 + adobe:docid:photoshop:8922d28f-7102-11dc-998b-d5977ae4c3fe + adobe:docid:photoshop:8a665864-3168-11dd-ae08-de24862c009c + adobe:docid:photoshop:8b1a6435-1e48-11dc-a2d3-f7dac7540843 + adobe:docid:photoshop:8b811db8-a2b2-11d8-aaa0-ceaf293374b5 + adobe:docid:photoshop:8c0e97ae-d228-11e0-a475-cc6a25bb4bca + adobe:docid:photoshop:8cd211ce-af60-11d8-9b36-814bf590dc1b + adobe:docid:photoshop:8ced12d1-4121-11dc-8db8-bd45412a7f4a + adobe:docid:photoshop:8d5f43cd-14a3-11dc-bd21-9083948ccbed + adobe:docid:photoshop:8e6b2801-e0ac-11dc-be02-9e982731d8c9 + adobe:docid:photoshop:8e6f3d17-16a3-11e0-9869-a7d070777029 + adobe:docid:photoshop:8f232916-cc1d-11db-b4ad-8b39ea515d9b + adobe:docid:photoshop:8ff9d64c-4418-11da-b7e6-d902366ee3d9 + adobe:docid:photoshop:90141bde-9f31-11dd-a4d9-e73c0c120975 + adobe:docid:photoshop:90474750-5a75-11dd-9db4-ccb9f54ce413 + adobe:docid:photoshop:90edf86a-65c4-11e0-872b-c8ffb8cd5267 + adobe:docid:photoshop:923f0e52-3389-11dd-950c-a80d9ad4456c + adobe:docid:photoshop:9292eb5e-6ce8-11df-8d9d-d0d5522d8976 + adobe:docid:photoshop:93b583ae-bab2-11dc-856e-857de8cde6e3 + adobe:docid:photoshop:93fe767c-1b0e-11dd-bd2b-85b1c594ae8a + adobe:docid:photoshop:9465ce21-e183-11dc-836d-8fb87bc0879a + adobe:docid:photoshop:94a75bd3-e34b-11dd-9dc9-c101a6e1a4e7 + adobe:docid:photoshop:9534310c-d1ea-11da-8bbc-b5ea1b5ad5fb + adobe:docid:photoshop:95584223-ac4c-11dd-9562-a3e25c7df58c + adobe:docid:photoshop:95a7389c-60a2-11d8-aeb4-db9805d5066b + adobe:docid:photoshop:95edf586-0ea4-11df-a4bd-ddfa81567552 + adobe:docid:photoshop:9674de00-16ad-11de-bf58-fb07ea9faf6a + adobe:docid:photoshop:96c38241-7da6-11db-b8e3-f7f79b8d06ec + adobe:docid:photoshop:9769f79a-e6a3-11d6-b066-ec4dd6909c0e + adobe:docid:photoshop:9855e9b7-1a77-11e0-a056-a14635721b97 + adobe:docid:photoshop:98835358-5312-11e0-babc-9637ababf7dc + adobe:docid:photoshop:98bc8a66-2571-11de-8712-adb55e01b9fa + adobe:docid:photoshop:9941c5b0-b4c6-11df-aa68-bdebe0189f7c + adobe:docid:photoshop:9969ac66-18b0-11de-a292-a83f151b8816 + adobe:docid:photoshop:9adb9b7a-624b-11dd-b57a-d211d7272d2d + adobe:docid:photoshop:9afbba62-dbb5-11df-93d5-fe37f92a97e8 + adobe:docid:photoshop:9bee7f23-98ea-11da-ac71-be3291a8add0 + adobe:docid:photoshop:9c29ab24-f0d0-11de-95d2-cc93dc4807fe + adobe:docid:photoshop:9c8ce1c4-2684-11dd-a051-ab8a29da1462 + adobe:docid:photoshop:9c8ce1c5-2684-11dd-a051-ab8a29da1462 + adobe:docid:photoshop:9c8ce1c9-2684-11dd-a051-ab8a29da1462 + adobe:docid:photoshop:9d09ed44-1a77-11e0-a056-a14635721b97 + adobe:docid:photoshop:9d5ac781-e2a9-11e0-9820-c5e40e10ba7f + adobe:docid:photoshop:9dba6cc5-4f9a-11dd-bb4d-ea3005ba1e5d + adobe:docid:photoshop:9e43fc1a-1fe4-11e0-bde9-c3f32c63ca84 + adobe:docid:photoshop:9e75e9a5-c12c-11dc-bf71-e0e0a0416e84 + adobe:docid:photoshop:9e956f0d-00e6-11dc-83c7-d92cb970bfd2 + adobe:docid:photoshop:9f7171b7-0d7c-11da-9f06-ae7fbb26fc59 + adobe:docid:photoshop:a0a9d204-c484-11da-aee4-aec7720da726 + adobe:docid:photoshop:a0b42d67-9b50-11d8-9ae8-e8e225a1d472 + adobe:docid:photoshop:a0c33902-b05d-11df-9671-a839c259253c + adobe:docid:photoshop:a2c5b113-394f-11df-9675-8ad275b8b170 + adobe:docid:photoshop:a2cfa0f1-67c4-11dd-8dc6-abf2ff5de843 + adobe:docid:photoshop:a3db96e5-2d69-11e1-be6d-d25e16f4b6f0 + adobe:docid:photoshop:a437e96f-ebf7-11d6-b02d-cc1f8f8b7684 + adobe:docid:photoshop:a4408ce2-9696-11dd-bb5f-df7484d5e03b + adobe:docid:photoshop:a4985975-af8d-11e0-b7ca-dbfe2e61d0a3 + adobe:docid:photoshop:a51ff05c-c6e6-11d8-b083-d8d4c6714f43 + adobe:docid:photoshop:a528a766-caae-11de-8898-dfefa1572a71 + adobe:docid:photoshop:a591346a-4b10-11dd-8c30-dad2b7495f46 + adobe:docid:photoshop:a5afafbc-4443-11df-8ceb-b00c7bcc9aab + adobe:docid:photoshop:a70563cc-8e10-11e1-901e-88a59c7f180c + adobe:docid:photoshop:a8663436-8603-11df-b4c0-9f1866b18c74 + adobe:docid:photoshop:a8b75913-9b1c-11dc-81ec-8e0e0ab54a83 + adobe:docid:photoshop:a8c0d594-1c60-11d8-a6cb-cdfe702634db + adobe:docid:photoshop:a8f63b8c-cf8e-11d9-8f38-ea3e2d6c58a2 + adobe:docid:photoshop:a91f0b3c-2855-11da-8c8a-a5a748eabfd4 + adobe:docid:photoshop:aa0763a8-06af-11de-90ab-fd97112f18a8 + adobe:docid:photoshop:aafd8f79-2d56-11de-bb11-ca9a886c5fe6 + adobe:docid:photoshop:aafd8f7e-2d56-11de-bb11-ca9a886c5fe6 + adobe:docid:photoshop:ab3db56f-073f-11db-93d0-f609d75882a4 + adobe:docid:photoshop:aba840f2-e914-11dd-803f-9838462d3791 + adobe:docid:photoshop:abac5014-6423-11dd-b1b7-f262c77e7590 + adobe:docid:photoshop:ad42dcbb-0994-11dd-9e72-c717edaed5ae + adobe:docid:photoshop:ad5b87eb-ce80-11de-bccb-a706e3fdfee1 + adobe:docid:photoshop:adfe9ee0-9aa9-11d8-8721-a599c2baff9e + adobe:docid:photoshop:ae3ca878-c2de-11d8-a406-eb69a8c918a1 + adobe:docid:photoshop:ae6a7993-e98a-11da-8068-f8a792fc8b3f + adobe:docid:photoshop:af0feeda-0d8b-11d9-bbc1-c33c37948dbb + adobe:docid:photoshop:b0328bec-60bc-11df-86c5-b7d9c58e0821 + adobe:docid:photoshop:b0622a50-2ac3-11de-86e4-9a389b200818 + adobe:docid:photoshop:b1731d25-12aa-11d8-90e4-b7c1f27d91d6 + adobe:docid:photoshop:b2617bd8-bafd-11db-a3b5-b006bd5234f2 + adobe:docid:photoshop:b306f311-990e-11df-8951-befad6e485d0 + adobe:docid:photoshop:b3544427-25c9-11dd-925d-84887b35715c + adobe:docid:photoshop:b39187f1-5734-11dd-99b5-f5eb48a9ac04 + adobe:docid:photoshop:b49ba608-4cae-11db-8d08-fb5837c6ae9c + adobe:docid:photoshop:b4a41d20-a7b9-11de-8cf3-90ac30fda3af + adobe:docid:photoshop:b588a571-5e7d-11d9-9143-d4bffe8717ac + adobe:docid:photoshop:b62cc706-9066-11df-a8b1-f03d20e18df3 + adobe:docid:photoshop:b6baf703-26d5-11df-84ba-8c7c7f5c0fcf + adobe:docid:photoshop:b76cafc6-31c8-11dd-ae08-de24862c009c + adobe:docid:photoshop:b7724cba-82db-1177-8516-a047d8112baf + adobe:docid:photoshop:b82d2084-480b-11da-9f1d-bb239c936e78 + adobe:docid:photoshop:b859cd86-0a61-11e1-959d-8e7ca06e11ed + adobe:docid:photoshop:b9d8894b-ae78-11d8-aef8-eeea27fa4fc8 + adobe:docid:photoshop:ba39640a-07b5-11dd-a7e9-e31e3ec26b17 + adobe:docid:photoshop:ba39640b-07b5-11dd-a7e9-e31e3ec26b17 + adobe:docid:photoshop:ba39640c-07b5-11dd-a7e9-e31e3ec26b17 + adobe:docid:photoshop:ba61a0d4-ee43-11d9-a4fc-f717bc3bc035 + adobe:docid:photoshop:ba787667-8053-11d9-a688-af7e29131ed1 + adobe:docid:photoshop:baa6665a-b7ea-11e0-8382-ef8eac5d4b15 + adobe:docid:photoshop:badec3b0-8d9f-11dc-aa6d-fd72ed461365 + adobe:docid:photoshop:bb6af87a-1881-11e0-b367-d759ddbac51f + adobe:docid:photoshop:bb885d59-f165-11dd-b2e7-b55f0ff3594b + adobe:docid:photoshop:bc2955b2-c523-11dc-9766-ec600096ee81 + adobe:docid:photoshop:bc66106e-ab09-11dd-a0c1-8d366f6a2cad + adobe:docid:photoshop:bc700404-626a-11dd-a82d-9333ec4b8528 + adobe:docid:photoshop:bccecc75-1ea2-11dd-b3e6-a1ffd79ec42d + adobe:docid:photoshop:bcf4f8fb-1933-11e0-b538-cd974d816c5f + adobe:docid:photoshop:bcf84d43-1a75-11e0-a056-a14635721b97 + adobe:docid:photoshop:bdacca7d-0228-11dc-97cf-b419ea1c3182 + adobe:docid:photoshop:bf1b42ff-0880-11d7-8913-9a827c8293a3 + adobe:docid:photoshop:bfe2e6ee-5412-11df-84ab-dd100cc19701 + adobe:docid:photoshop:c1422350-a306-11d7-ad63-9fa59f868483 + adobe:docid:photoshop:c17986d0-cf18-11da-b212-cd9ed8397349 + adobe:docid:photoshop:c1b701b5-db72-11db-ab1f-df74d7423f7a + adobe:docid:photoshop:c1e5d31e-ff8c-11dd-bc65-b8b21fdf13f1 + adobe:docid:photoshop:c2c9e0ea-ea82-11df-be75-e11dd22e563b + adobe:docid:photoshop:c2ebe111-1cb9-11d9-922e-936ab95f2627 + adobe:docid:photoshop:c383ded2-81e2-11e0-a365-ba810a9c6706 + adobe:docid:photoshop:c3cfa103-dc36-11dc-a754-cd1ab8e11229 + adobe:docid:photoshop:c407fd71-774a-11e1-9829-bb69b0cb9f57 + adobe:docid:photoshop:c4203496-2fb9-11de-bee1-85c8bed24635 + adobe:docid:photoshop:c46665a9-a6d8-11df-9ed0-a76ea5369d27 + adobe:docid:photoshop:c49ac98a-c70e-11d8-b083-d8d4c6714f43 + adobe:docid:photoshop:c4df783a-4b7b-11dc-a30a-e5c2aae6ba21 + adobe:docid:photoshop:c4f9b71a-8c61-11da-8a74-eea9da9dc9a0 + adobe:docid:photoshop:c576d77a-8b0a-11df-87a6-ab3df7fc99d9 + adobe:docid:photoshop:c58fedd6-e5c3-11de-b030-f3bc05878ac7 + adobe:docid:photoshop:c73186fe-b914-11df-acd9-95873685eacf + adobe:docid:photoshop:c76bbd78-5304-11dd-bc9b-b21df2d8a984 + adobe:docid:photoshop:c7907285-0601-11de-90ab-fd97112f18a8 + adobe:docid:photoshop:c860d7f2-8a97-11d9-83e5-ac2438b0cbcd + adobe:docid:photoshop:c872e7bb-307f-11d9-ac92-b68908bd11b6 + adobe:docid:photoshop:c94fbb71-030a-11df-927b-f3bd65d785fa + adobe:docid:photoshop:c9c03183-6893-11d9-ad52-b80cefac3425 + adobe:docid:photoshop:c9f9fb96-0f54-11df-aec2-8f4c8f09d8b2 + adobe:docid:photoshop:ca02057d-15c7-11da-b57e-c4dd197df79a + adobe:docid:photoshop:cbfaafa0-e3ca-11dc-b634-8524f1bfaf10 + adobe:docid:photoshop:cc2885c7-5060-11dc-afdc-98d560a3455c + adobe:docid:photoshop:ccff2b90-78f9-11d9-981c-845e7688fd6d + adobe:docid:photoshop:cdd3da26-6d93-11da-88bf-947e4ae60417 + adobe:docid:photoshop:cf878b36-dea6-11d6-af35-91df99c501ce + adobe:docid:photoshop:cf96f18d-a6f2-11dd-b2ac-cac96f638488 + adobe:docid:photoshop:cfe14cb5-2068-11da-9aa7-c40f739f4b93 + adobe:docid:photoshop:d01a3f2e-8b5e-11da-bcb8-e53ec5bf3a00 + adobe:docid:photoshop:d0669b73-1a67-11dc-ac87-85217613098a + adobe:docid:photoshop:d06d3384-064e-11df-97cb-84833991f812 + adobe:docid:photoshop:d0a0a2ca-782e-11dd-815a-848ce56bb32d + adobe:docid:photoshop:d0e21d5c-07b5-11dd-a7e9-e31e3ec26b17 + adobe:docid:photoshop:d18105f8-fddd-11dc-8ee9-caa378d28804 + adobe:docid:photoshop:d28a8b6f-0ab5-11dc-94bf-f2f562d0fb5c + adobe:docid:photoshop:d2ae19b3-2bcd-11dc-9eed-ed332b603372 + adobe:docid:photoshop:d324069c-746d-11dd-9950-cbc11fb18fcb + adobe:docid:photoshop:d3430c62-44b9-11de-80e1-d211e535d4c2 + adobe:docid:photoshop:d4231c0a-5b67-11d9-b26d-ad7e1fa72b42 + adobe:docid:photoshop:d45e4409-43e1-11de-b520-c2c6e6d28c89 + adobe:docid:photoshop:d463e214-9575-11e1-8af8-d74430b3eb60 + adobe:docid:photoshop:d4831f89-6ddc-11df-be57-a6c35e21aeca + adobe:docid:photoshop:d4b4d8e7-0a40-11e1-b889-c48654fb8bb6 + adobe:docid:photoshop:d5eb39a6-8701-11df-92f2-a8c0dc19957a + adobe:docid:photoshop:d6e08e02-089a-11de-9c1b-945f77a51690 + adobe:docid:photoshop:d6e511d2-4fec-11de-8d66-e7764826413b + adobe:docid:photoshop:d73e8897-3719-11d9-9fdd-c7ba6ecf2039 + adobe:docid:photoshop:d761ca6b-a5ab-11db-8c28-f0f05f876969 + adobe:docid:photoshop:d767c4ad-4081-11dd-b559-d5e0d2e22c6c + adobe:docid:photoshop:d7f09046-1633-11d9-9a7c-bc2827732531 + adobe:docid:photoshop:d9b2e6a0-8ce7-11dd-be12-93c5fb96f243 + adobe:docid:photoshop:d9f122a5-cea4-11d9-979b-9183ea2fb092 + adobe:docid:photoshop:da411005-2ca4-11e1-8bf8-a39b6b079452 + adobe:docid:photoshop:da5398b8-fa1a-11dc-bef8-ab52e9a7e9be + adobe:docid:photoshop:da552961-0830-11dd-8dbe-e92bb80aecdf + adobe:docid:photoshop:daa0777e-e15f-11e0-a69b-c31e0cc17585 + adobe:docid:photoshop:dae4e9a3-ff1c-11e0-bc89-98fc059fe22c + adobe:docid:photoshop:db4c3739-d291-11de-9902-88725022e8f9 + adobe:docid:photoshop:dc26db18-707c-11dd-8432-e55561c81201 + adobe:docid:photoshop:dc40b551-fbe8-11de-8e15-a3137dee8ad3 + adobe:docid:photoshop:dcd2ca40-9f40-11de-9401-8020fe406416 + adobe:docid:photoshop:dcf18a6c-9a87-11dd-9e2d-80e4367d09fe + adobe:docid:photoshop:dcf9f014-3553-11db-bd4b-b674c1914004 + adobe:docid:photoshop:dd0b872f-497f-11dc-a1b5-bbd55cdcf719 + adobe:docid:photoshop:dd0d929c-07d6-11d9-bb77-bfa7c8df5462 + adobe:docid:photoshop:ddaba3b4-3c8b-11dc-9844-c0ec535d50b9 + adobe:docid:photoshop:debfcbed-cc3e-11de-90b8-b400df0d5417 + adobe:docid:photoshop:df44a9e1-9854-11e1-ba25-d9a62f5155a9 + adobe:docid:photoshop:df523136-81dc-11de-b4bc-871de4a39779 + adobe:docid:photoshop:df738c82-07f4-11de-994c-ad88984b91b8 + adobe:docid:photoshop:dfa72e26-0708-11df-b809-c5f3fa191ccb + adobe:docid:photoshop:e14adbc1-cd45-11d8-ac42-e8f0ded048fb + adobe:docid:photoshop:e1528a49-aa48-11de-be0c-b3552b528d5d + adobe:docid:photoshop:e185fe04-e541-11de-b44f-e6fdde8fc3c1 + adobe:docid:photoshop:e1bc49f4-f5ec-11db-a028-ede1e6808e95 + adobe:docid:photoshop:e263b3a0-6913-11d7-a1f7-f7c606f79680 + adobe:docid:photoshop:e26af062-282a-11d9-9952-ed25266a1ca6 + adobe:docid:photoshop:e2a36f19-6138-11e1-899a-c64b6b1ec099 + adobe:docid:photoshop:e2e682b2-d898-11d8-a457-b45b6ffe5c75 + adobe:docid:photoshop:e3f6915e-6b3b-11dd-bb6c-c0788982e35b + adobe:docid:photoshop:e47f7650-9ecf-11dc-a169-aea226af67b1 + adobe:docid:photoshop:e4c364fc-2298-11dc-a3f1-affe78f3f1dd + adobe:docid:photoshop:e525cbd5-b72d-11da-898e-d17356aeb442 + adobe:docid:photoshop:e5b81b9e-2d80-11e1-a0bf-88c93e00f745 + adobe:docid:photoshop:e603e168-a1c1-11da-aed6-8e5e759ceb64 + adobe:docid:photoshop:e7ae34c8-77ce-11de-92d1-eb1d989b0511 + adobe:docid:photoshop:e7e7a68d-3ca7-11dd-a519-f4a69efb17d2 + adobe:docid:photoshop:e8218e4e-3d98-11da-9965-cce64476d406 + adobe:docid:photoshop:e8713839-906c-11df-a8b1-f03d20e18df3 + adobe:docid:photoshop:e879172a-c99d-11dd-9aaa-87c3750b6356 + adobe:docid:photoshop:ea8f1296-9686-11df-87e1-c92e03f7a8b2 + adobe:docid:photoshop:eb2afa93-8bbd-11df-bfcd-ba3e8bc8ae0c + adobe:docid:photoshop:eb2afa97-8bbd-11df-bfcd-ba3e8bc8ae0c + adobe:docid:photoshop:ebc833e6-f749-11df-a51a-db4db25c41d1 + adobe:docid:photoshop:eca662e6-6f72-11db-a484-ce080099c576 + adobe:docid:photoshop:ecb7b478-4926-11db-985c-af2eeb21dab0 + adobe:docid:photoshop:ed2e91e5-662a-11df-9b19-cfad73330137 + adobe:docid:photoshop:ee45e307-7e3b-11dc-baac-d64da8706edc + adobe:docid:photoshop:ee642768-5734-11dd-99b5-f5eb48a9ac04 + adobe:docid:photoshop:ee86b539-ba5d-11db-8dd9-fdce7565c567 + adobe:docid:photoshop:ee92a8f0-861b-1178-a541-bc26370db234 + adobe:docid:photoshop:eec6bd78-d21e-11e0-941e-853fe0cd0418 + adobe:docid:photoshop:eed8bccc-7f46-11e0-8ad8-f493d05e0e6e + adobe:docid:photoshop:ef2ce378-2f93-11dc-aaba-a7b78ed4eae7 + adobe:docid:photoshop:ef82f062-1bba-11dd-9b33-9c01ca6e8c53 + adobe:docid:photoshop:f0289bcc-41a1-11db-a2a3-dda0b1a5585b + adobe:docid:photoshop:f0cb01a0-a3a1-11de-9c58-ffad31d74dcb + adobe:docid:photoshop:f1a3d3b1-5862-11d7-8ce4-9c28458ba222 + adobe:docid:photoshop:f1f19329-7100-11dd-b925-9f2002d3bdac + adobe:docid:photoshop:f27ad66b-c9ad-11e0-a263-c502f1c654f7 + adobe:docid:photoshop:f2e23dae-b4c7-11df-aa68-bdebe0189f7c + adobe:docid:photoshop:f3b3dc64-7752-11e1-9829-bb69b0cb9f57 + adobe:docid:photoshop:f5cc0175-39c1-11dc-9dd7-d0c8e16ae9eb + adobe:docid:photoshop:f621b7b1-feb0-11df-95f8-fbdf23b3ba38 + adobe:docid:photoshop:f719a617-925d-11dd-98bf-994e692d3357 + adobe:docid:photoshop:f73ae512-a99e-11dc-8aa4-ef44bbfc8ba6 + adobe:docid:photoshop:f97e61aa-2e80-11db-aa77-95a2275b6be6 + adobe:docid:photoshop:fa47b922-7d65-11dd-88be-f367891bb5d6 + adobe:docid:photoshop:fafbb49c-194b-11e0-8b91-b1a951f4da79 + adobe:docid:photoshop:fb18c43b-666b-11db-8906-a3c683c347f5 + adobe:docid:photoshop:fb49bad6-95a6-11d6-a6ad-c6eadf2ed1a4 + adobe:docid:photoshop:fb5ba27b-0ba3-11e0-a0b2-d391baae5520 + adobe:docid:photoshop:fbc24a36-a224-11da-850d-a0f53d883219 + adobe:docid:photoshop:fc215221-9880-11e1-ba25-d9a62f5155a9 + adobe:docid:photoshop:fcb8b013-7106-11dd-b925-9f2002d3bdac + adobe:docid:photoshop:fdd31a60-2e37-11e1-8359-9d673895aa9c + adobe:docid:photoshop:fe58821d-5776-11df-8604-e5ea32f60741 + adobe:docid:photoshop:ff67863f-fb01-11d7-a4ce-b05c681b0d88 + adobe:docid:photoshop:ffc77a79-c641-11d7-9d81-c34bfa29b8c5 + uuid:00267F385306E011B693D8C402051E54 + uuid:00324CE2898EDD118B91C45503FF100F + uuid:003BF06B1F0EDD1198B6D535C71E3F82 + uuid:003F880ADCB8DD118B9FDB1F9EF18FC3 + uuid:005031CF843C11DE84A9EF77BB03F825 + uuid:0075C0BE4E5EDE119577856D23C39575 + uuid:00785606161EE111A31584B5805723ED + uuid:00C96064C485DD11AAA695EDE0A45C60 + uuid:00D1B9FBEA93DD11AA4AA713E01D8965 + uuid:00D4E6096C89DF11A27283EADD6A0ACD + uuid:00DC3F1ED697DD11AF18AD783C0EA38B + uuid:00E9752D6066DF1196BB85FEA0B60A41 + uuid:00F94DE476FADE11AFBDDD91A537C5BD + uuid:011A12922C2DDF11BA06BA543CB4F500 + uuid:012B2C21C9B9DF119CA8F01C9B0C0333 + uuid:0136DF5E96B2DE11BE2396725C0D2EA9 + uuid:014315f2-930d-cd49-b3d1-988cb41980cb + uuid:0164EC196DEBE011BCD3B9DC84CB7FE9 + uuid:0170068B9E49E011BDF5E7C9FD6E41C3 + uuid:01A4EB9492EBDF118CCDA9AD1DD13734 + uuid:01AF292D8ABEDF11A112D710E3A8AB13 + uuid:01F1A0F611EF11DB881EA6BE05E276D1 + uuid:020FACD0301BE011A9EFC9F735703C71 + uuid:02299D9CF384DF119234BFC76E30A78A + uuid:025A800E203ADB11AD5BF6C24FF19C5F + uuid:0261F32478B9DD1186D09AA78310AF3B + uuid:026C363E0123DF118700FB28C9241F21 + uuid:0274A75BDD7F11DDBA27D6A29DFA8049 + uuid:029715960065DE11835E94D420F09475 + uuid:02A63FF767D3DD11880D9FE2D43F121E + uuid:02BEC8B51D7CDC119756913ADF37171C + uuid:02C12C27E23BDD118B4E963368A39E26 + uuid:02D9B367829EE0118FF8E4E453DB7010 + uuid:02E56BB23746DE118E05E00A924D8CC5 + uuid:02E5C7055C1ADF1191B0945459784CE4 + uuid:02F7B4BB4511DD1190E1B8F39D6CAA32 + uuid:030793878DD511DB866B8FDD4FC5F6E8 + uuid:031123756F7CE111A46CAA872122D6CF + uuid:032642559150E111B0DEFBAFCEA80732 + uuid:0359A552D090DC119D28D3EFCC13785E + uuid:0360EBD7CE30DE119EAAC37C5A47AF2D + uuid:03C660EB7990DD11B1DBB4D7104B66E3 + uuid:03F53EB74DA6DD11A3A5D2BFE4C5EAC9 + uuid:03F78C1784C411DD99D09ECDB70CB873 + uuid:041211BA5EA2DE11A058E82132F1C32E + uuid:041327E724F0DA1197BEA81619CF4F01 + uuid:043D272A4635DE11905BA0931904557F + uuid:0446C88A4A56DC118EB38611B26FC35B + uuid:044B83BC678DDE119BC1AF72C6C78428 + uuid:045F8B34ACDEDC118986CE37F0720C16 + uuid:04733DBE38A8E01195F9F14B578BEAA2 + uuid:047C71B83946DE118E05E00A924D8CC5 + uuid:049B6674521BDF118174D58534E02F48 + uuid:04A3512F3575DF11B1DD9DF2D641939E + uuid:04C30D15439DDD119D3DB10B7AA1222C + uuid:04D4F249D297DD11AF18AD783C0EA38B + uuid:04D5593E132BE011994DCA2DC4361CA0 + uuid:04D87FD7DE5DDE11B30389E42AB163D4 + uuid:04FFD8A371D4DE118A5EE0B24F750EE5 + uuid:051EFA2BFCC7DE11AB38A489D5D89A81 + uuid:055FDCBA146BE011A3A7C1AA075D9441 + uuid:059469661D2CDE11B915E6D79FC5EE26 + uuid:0598C7DB4E72DE119A25926F78CA368E + uuid:05BDBDFBDF97DD11AF18AD783C0EA38B + uuid:0636FCEC2653DF119E0B88A22E798CF4 + uuid:0655CF3B2569DD11A2E0BCF32BFA7CFC + uuid:065A369FC56CE0118B4DD2AD3B632B90 + uuid:067D402BDB17DF11B3C7C23C35F18DBF + uuid:067F0114C5F4DF1181FBFA1FAF58F2DA + uuid:068D809E6D6DDE11BF288490FB12177D + uuid:069423C8F773DF11A361B0AB4D7F640B + uuid:069B39860476DE11AF01DE0AAA4D5B1D + uuid:06AE789055C1DC118FCCAFD862EC21B4 + uuid:06CADE1FCD57DE119AA1DA9EA00F26D4 + uuid:06D210D3AFC4DE1183328664042B691A + uuid:06FFDB37B58FDD118772C9EB7309FCC3 + uuid:07060BF03D81DE11880FE274561DC37B + uuid:0713D437E27DDE11A717CFED235EBF18 + uuid:07218203AADEE011BA4CB639D1A8BD5A + uuid:074CE3E0B88BDD11A113BB1B97AABFC1 + uuid:0753468FE4FFDF11AF70C7635490A833 + uuid:0753FE163981E011B9A0F2EC144E086A + uuid:075A22F177FADD11912DC0461BF0041B + uuid:07602076F775E011807EEB7C09A37754 + uuid:0762D0C4F5E5DE11B564E99D5CBC1D01 + uuid:0769202E525E11DC813CFF9D60E9E4E7 + uuid:07894AAA8F92DD11851AFE68E023F0F6 + uuid:0794504BD1F9DC11843DEE3817AA2F74 + uuid:07980721E15EDD11871DF65AC221ECD9 + uuid:07C636957337DA119F9FDC186F595629 + uuid:0833AA2DD60BDF1180C5C96F984067BA + uuid:0834D93FC8D0DD11963D9658049DFBF3 + uuid:08509C62B2E2DD1190DB8160D5C375F6 + uuid:0853C41F346BDE119ABD9F313386C996 + uuid:0854C63D6DA4DD11B8439A379F2C7659 + uuid:08622E65DCDADA11A86ABF41DACB3158 + uuid:086B51AC9643DF11BAC69E769F65B83A + uuid:086E188C045CDD119922D9DAFF7AFC19 + uuid:089B816F10CEDB1185B5BCE9EEBA6C72 + uuid:08A161B9819DDE11B268F1E9A6151979 + uuid:08A65F7FC8A5DD1186E88C6D82F2A6D4 + uuid:08AA775DF3C1DD11B983BFE3CE432064 + uuid:08CD4728BB26DF11BDEEDCA72E0E76E6 + uuid:08CEC0C97787DA11B97AE2B7D24758FA + uuid:09285A8BF61DDD1182FDA2AF7FA23EFE + uuid:099469661D2CDE11B915E6D79FC5EE26 + uuid:09AD07776280DD11BFAA812D7210D321 + uuid:09CD04E561FDDD11B950D2857154C52A + uuid:09ED009FB046DE1187FFAE0386C4DCB9 + uuid:0A139D1E8A5CDC119A05BD94A54C7480 + uuid:0A1E40AB3CFADE118AEBFC42BC5AC38A + uuid:0A40E1AB9E50DF11B35AA1C8ECF3DC6A + uuid:0A4167D02721DE11AB4BB39481203363 + uuid:0A78D988DD5811DC96D5E716A6F2BCF0 + uuid:0A8DCE8C8C62DC11A983B8DCBC756939 + uuid:0A8E3782BF7FDE118D6DA69028D05C15 + uuid:0AA74C2EF60BDF118C58E8AE28C2730A + uuid:0ACB9C8E8A2DDF118343CC4537EF3C12 + uuid:0AD8E63DCAA3DE11995AEDB6F551D01B + uuid:0AE16DB75F95DF11AF29BDCDCD4A6E70 + uuid:0AF89B04B961E111AAA8E77FC0D3A79B + uuid:0B00D3552B46DE118E05E00A924D8CC5 + uuid:0B17E4EF2123DF11B6D7C6919EC663DD + uuid:0B72A46EE843E1119F82F9795F755985 + uuid:0C29F1288629E1119896CB733EF41709 + uuid:0C3715264646DD1190FCDDF5879A64BE + uuid:0C3D92C4D425DE1191528DC10A240F5C + uuid:0C50712DB31ADE118FB49BF15FA5223E + uuid:0C5B484B02D7DF1193938252AE73DE67 + uuid:0C8D59530D17DE1194DDAA4BA06E12C2 + uuid:0C94372F8E1EDD118308AB1E87B8D093 + uuid:0CB3F764639CDE1183DFC60C032A1A9A + uuid:0CE6EE4B3046DE118E05E00A924D8CC5 + uuid:0D1728EEF60DE011991BE559C243BF6A + uuid:0D2D8D8CD6BCDF11807DC932CF23BA76 + uuid:0D7B49B66A18DE119188DB4702F617D0 + uuid:0DCAEF210B05DD118952FD87B0C5C382 + uuid:0DE5F61D7C52DD1182609162D5FE7927 + uuid:0DFDCF4726FBDD118F93BCD1B73D932E + uuid:0E04B6977685DD11B04B9ECD07049184 + uuid:0E387A182E46DE118E05E00A924D8CC5 + uuid:0E4C8D3F65C1DD11A10D9EA243478893 + uuid:0E6C4060E6ACDC11A31BE2F1875A55F1 + uuid:0E7DFB1C72B8DD11943BCD86EF18B9D2 + uuid:0EBAA688D0CFDE11B6D9E55E3FEF88C5 + uuid:0EC1D3E93146DE118E05E00A924D8CC5 + uuid:0EDE5F367F62DE119614CE358077696A + uuid:0EF7824E1CE7DE11A397A6E3E44FF9E3 + uuid:0F1A965EA027E1119B0C8D95D3C76BE2 + uuid:0F522B516811DF118A4AAF7E05FF69CD + uuid:0F5449A8512CDD11AEBA954637559459 + uuid:0F6E42F71D46DE118E05E00A924D8CC5 + uuid:0F81D42481C0E01188948BE4733915EE + uuid:10128C19C130DE118971F9A58BAAEB50 + uuid:1017E02B7C15E1118047D856DBDB8E75 + uuid:1054D978C0E1DF11AA8AB303BFA5E6F2 + uuid:105B484B02D7DF1193938252AE73DE67 + uuid:106F5789EEDEE011B872DF47B34C9F1C + uuid:1076B691BF78DC11BBCCBE617C756E16 + uuid:109A217E9248DE11AB5B8F95D972F6B3 + uuid:10A27F23D9D9DC1185D79E21D518B377 + uuid:10CD874F902CDE11B6DB910BFA10DC7F + uuid:10D9DC303346DE118E05E00A924D8CC5 + uuid:10ED4A8D21D1DE118D65B3AF9C7CA0BF + uuid:10F217C490B9DE119AE3890909042E9B + uuid:10F650297D72DE119793DA73B56F7EE5 + uuid:10FA2648333CE41189DFC0D869272DB5 + uuid:10FC14E1C67FDE11A17AFEE502ACD834 + uuid:10FFB0964AE3DD119EE389B3EABF1030 + uuid:11040FDFA5E7DD11B2C19E6660EE43B4 + uuid:110500CE77B0DD118BB88B63F587CB88 + uuid:11056C5AF55AE0118DE98213B6FC8AC1 + uuid:11D278A8D01AE01180B5DBFB30EE2E80 + uuid:121FBFC8FFC7DE1197EFB82A9A47DC91 + uuid:122E5FAA9713E01198BBAD67D2C5160E + uuid:12454606A5BEDF1185A8DF032299182B + uuid:1258D3615DB9DE11A6F296F6DA9FB0FC + uuid:129F4FB39B2ADE11A946BD87FD2924EA + uuid:12B74FFA1C7DE01194D48966EA8A16A3 + uuid:12BA9F7B4597E011A105A62B9D7324FD + uuid:130B2B74BA0DDD11A439A36C0A600FCD + uuid:1313CF383A84DF11B721DE58AD5D5497 + uuid:13277246F4EFE211AB71F819371C81CE + uuid:135A1960FD64DE11835E94D420F09475 + uuid:138F06AEC9C1DE11992BEC96B6BC795C + uuid:13A8CCA5F995DD11B8F2CF435A9899D0 + uuid:13BBF28B1DB8DF11A53AA0E9AB1C70AF + uuid:13ECFBEC0438DF11B1AF807C8A669D77 + uuid:13F4CA472985DE119204834F8B565AD1 + uuid:13FCF6939014DF11968F956197E31F88 + uuid:13FF97A8853DE0119CA3A4EC00FED126 + uuid:1468E87D6139DE11A665C5BF610EEC17 + uuid:146972668318DE11A828DF31A575CABC + uuid:146C5EB75A12DE11BE778783F05744AE + uuid:14A41BF72E96DD11BF36C964C968D435 + uuid:14AA46F7CE44DE11AEA38D12EC737787 + uuid:14B497EF2769DE11AF868ACBEDA1699F + uuid:14BEAC59A02ADF11AECBC7578FA1C8B8 + uuid:14C354FB2146DE118E05E00A924D8CC5 + uuid:14C90F396FB8DF11A53AA0E9AB1C70AF + uuid:14C97C8048FADB118845D98ED6E0AFE5 + uuid:14D3F5D6A14BDE119E93D454F500B452 + uuid:14E9C81292BA11DBA08880B7A11CE381 + uuid:14F55B529ABFDF118C8484887865808D + uuid:15184F57-A4C6-4398-9B40-11772084183A + uuid:153FBF43E421DD118DE6805E4FAF4697 + uuid:154B03D2AB30E011954AD2298E8EFCE2 + uuid:15553F6A9213DB1180BDFBD3D4018BA1 + uuid:15578F2F1E86DD11AF96B6D037A279B9 + uuid:156336021B56E111B606D6F4FCAC7F76 + uuid:156E6475C340DE119125F1A727F694C5 + uuid:1591B38AF13611DEAFD3FCC4561E113D + uuid:1597D557BB2ADF11A9EFC357B5985743 + uuid:15AB601F1AD2DF11A7F393ACB98B3CFF + uuid:15B81E8570D211DBADE0E05661FAF068 + uuid:15C1037383AFDF119792D12E80BC077C + uuid:15F57EF2BB7CE011A76EA1DEBD9ED397 + uuid:16387A182E46DE118E05E00A924D8CC5 + uuid:163894B448B9DE11B0D2ABA9884F4A49 + uuid:16EF8FF6FF7DE1118FA5D722C02C1C9D + uuid:16F823D0A1CFDE11963FA2CB946CFE4C + uuid:16F84B7E3246DE118E05E00A924D8CC5 + uuid:170F1F84CF5411DD91D888E94ACE48CB + uuid:17186A439927E1119B0C8D95D3C76BE2 + uuid:171DA1565CF311DE94C7D3A143DF821D + uuid:17260C2900E9DB1187A489A14823E6C8 + uuid:1733C6F5FF8DDF118C48B1BDE6AABF0E + uuid:1758D3615DB9DE11A6F296F6DA9FB0FC + uuid:175CE6642569DD11A2E0BCF32BFA7CFC + uuid:1763C9B52BD4DE11A675A61E4F11F1F8 + uuid:1777B5906A3EDD119B91B9BB721FB5CA + uuid:17A2658EE06BDF119041CCD6FEE474C9 + uuid:17F4CA472985DE119204834F8B565AD1 + uuid:1818BA45D5F0DA118DA697055230BC2F + uuid:1839546DF545DC119FD0C489666F1FD5 + uuid:18580CD102BBDE118D069AA3117B85FD + uuid:1859A6517AFEDC11ACAAE04F4DEEAF1E + uuid:186C5EB75A12DE11BE778783F05744AE + uuid:18CFD259CAD8DB11BD8EB5761D5E79A9 + uuid:18D16A9F4BDFDE11BBE28A11B52AAC2D + uuid:191A78DF66B6DD11975AF89C8C4FA88C + uuid:1948C03EA6F8DD11BF1890552B68C8DF + uuid:19501508E2EF11DD8BECCB6B4552BEA7 + uuid:196336021B56E111B606D6F4FCAC7F76 + uuid:199757E762C6DE11A6A9A6437FD9E2B9 + uuid:19B168241E28DF1194ADB5651071CB46 + uuid:19BC4CDDAD8811DDA9A4E814011A2FBC + uuid:19E481E24BF3E011B6959C2B2BA839CE + uuid:1A182B88E7A6DF11AA8F989AA3164D57 + uuid:1A2F12EF7FE6DE1190AEBAF6332FC6C0 + uuid:1A8F74B1065E11DE881197396C840813 + uuid:1A90A0BC8910DF11A361C9C7E1E4E901 + uuid:1A99EFEE3704DD11AB26EBC6F08A7A32 + uuid:1A9BDB007D5DDF11B8CAB8619C2B5907 + uuid:1A9F1B6E2D46DF11B544CA8ECC118138 + uuid:1A9F85581347DC11A96980007D7B6209 + uuid:1AAC8C5C9F55DC11A046A5B91F7222B1 + uuid:1AF7AC59B245DF11B544CA8ECC118138 + uuid:1B12345F6BC6DD118292E2654EFCB330 + uuid:1B45EE928526DB119E71DA66CBAAF73C + uuid:1B57F4ED9747DE1183A1D51599C01AD1 + uuid:1B7C61BC861511DE8D7C90F31A0B9BCF + uuid:1BA7F3715CF5DD1193D4B8ED7C4731DF + uuid:1BAA89B7F951DF119FB4A1AA799452E6 + uuid:1BBCE06F587BDE1185E79AA966EFAAA1 + uuid:1BDD26F16268DE1190DCC6DADCD1770C + uuid:1C5B31E30CF3DD119AE9FA7D3E99E341 + uuid:1C680196283CDF11A431DEF2B4EC57DC + uuid:1C68182A4875DE11A992FD2DC6E9830D + uuid:1C79290ECC45DE118B23AD30BCA96A14 + uuid:1C7E078C3B65DD119146F6FC86522DF4 + uuid:1CB80347CD8CDE11B89AE97826E8DF29 + uuid:1CC0A469339DDD1192D3E25231FB5305 + uuid:1CD0C341BFB9DE11AD46ECC15EF6FB22 + uuid:1CDEDB9DF525E111A026DACB304303E4 + uuid:1CF25C713546DE118E05E00A924D8CC5 + uuid:1CFBEA0DD0AEDD119EC3E7457FE35B22 + uuid:1D088BEA1D8BE011BCE4E8B9DAE40519 + uuid:1D4243C97491DC11B124BBBDFFB33225 + uuid:1D468B5A156711DE9D09B95D7469FFFE + uuid:1D6B620BF1BADC11AE1CB82463FA4DAE + uuid:1D6D06A3DC8BDD11911EA1F37D8753ED + uuid:1D6D9ED4F47FDE119793D90A07D6C393 + uuid:1D90BE4363FCDA11AA83B543DC89108D + uuid:1DA07817A968DE118BB9967FD266C0FD + uuid:1DBFCA60439CDE1193CDF929CA1ABF21 + uuid:1DC5EA073246DE118E05E00A924D8CC5 + uuid:1DD86AAE0D32DE119CF5D72B5817FD90 + uuid:1DEACC387EE9E011A00F8FF2EC752921 + uuid:1E02BB75D113DE11A0BAAA5541C46707 + uuid:1E11C42A48FADE11AC12D4AAFE286F5F + uuid:1E152946B76DDC119AD0F42DAE0AAFCF + uuid:1E2D9BC292B811DCAC0BD7CFBA286A6B + uuid:1E3FCF38415CDD1182A9F1CC2E6E604E + uuid:1E6EA8133451DD118E37C8083A71281D + uuid:1E71DF13FDB5DE11B9299E5C971CB542 + uuid:1E91A52C3A1FDF11817FF8EE96F826FB + uuid:1ECF5B4D396FDE118FD0E42A42BA1490 + uuid:1EE73B14201FE011A910B01926703549 + uuid:1EE7DEC2481ADF11905AD1E5E7183152 + uuid:1F14CF83DE31DE11A869B8279779C540 + uuid:1F1BC454B50CDF11925B89C9D7BFFDC2 + uuid:1F26BBD0C345DE1199B1CEAD9076B678 + uuid:1F5AF3B67229DF119FFAB26E240C71BB + uuid:1F7B20507720DD119707FC96415C4EBD + uuid:1F9501B1D304DF1190ED94C038095588 + uuid:1F95AC394748E011BC12ECADEA413AA4 + uuid:1FB4DFF8CDC9DD11A50695ED6C7774D6 + uuid:1FDA3D5BA905DD119988ECFF97F0FCAA + uuid:1FE9FDE0C88ADE11BA2EFD02AC79C3AF + uuid:2021DC31005DDF11B873C075B4FD33C0 + uuid:20323DAF3833DD11B84DB153FFCB2B25 + uuid:203F3588C325E011A825A62899B32AFE + uuid:2055A1C0C07BDD11BBC8FB1C82F02DBE + uuid:206055D9391ADD1185739174F84D64D8 + uuid:20755CD9A1BEDC11AD9FC86910038926 + uuid:207B1D511C8FDA118DDDD88B3A88E03B + uuid:208C44507E13DF11882FD35504085383 + uuid:2097108BBC84DC11939198AA96A9BBFC + uuid:20985270CFFFE011BA1DF91C457D085D + uuid:209BD17CC8BADF11BBAAE0A7039DE8AB + uuid:20A4456CCBC1DE119D73E4AFC11EC4CE + uuid:20AD1BCA27D611DCB3DCF58CB1282188 + uuid:20CA2E73CAD1DE118BBA9D205DC3FA72 + uuid:20DD6643FAC6DB11A46EA4B49D2FDE5A + uuid:20E86765A447DD1190FCDDF5879A64BE + uuid:2116C948F67ADE118ABDAC7576DAA0E0 + uuid:211F1EBF8178DE11B730CD3E72DB3FA4 + uuid:212D58E5143AE011B9AAB74B0E61D369 + uuid:215EAF9294C8DE119FDFACCB24878E07 + uuid:215ED129E2ACDD11AC3C936A2F0190A3 + uuid:21B81FDFE3B0DE11A88DBCB93F5B7576 + uuid:21BEF824177EE011A6C1CB4ABD77E1B9 + uuid:21D2A079BB5BDB11AF7B8BD5E24FC56A + uuid:21EC566FDCD6E311B55CBE23EFE9B9F0 + uuid:221AC57560F5DD11B42B8D7CECE2C827 + uuid:221D353288F7DD11809199F6C55B5021 + uuid:226AE9E80D1CDF11ACEBF49C1510D7E2 + uuid:226B9A3C4F5ADC11974DCB5CB1741D28 + uuid:227BDC9B2FAADC119028943FDADC2D16 + uuid:22809E15A050E111B0DEFBAFCEA80732 + uuid:2292EAFA92BF11DBA08880B7A11CE381 + uuid:229AD25C6B73DE11A73FD0389B748AFC + uuid:22B15C4334A8DE11A2E1D0663C34B73D + uuid:22B35C622246DE118E05E00A924D8CC5 + uuid:22C16BAA5AF3DE11B11DCE9D526E88E8 + uuid:22CC545049E2E0118701D786107F61E9 + uuid:22DE4C33190ADF11BBAB8C350B32006E + uuid:22F39C63E0FEDB11B991B9E549BBAB83 + uuid:2308B10A345ADD11B10AE55D265F3E9B + uuid:230FBF7B385EDD11A73AFB54CA37B984 + uuid:231775077E4BDD119078AC6C9A4185D4 + uuid:235B0F0A31D2DC118CA3B43372E43C0B + uuid:237A384B7BD8DF11BD17BFC74CB96127 + uuid:239C3AD2D589DF119DADA4FA602918B0 + uuid:23A07817A968DE118BB9967FD266C0FD + uuid:23BD3D5E3BF5E211ADA3A5E208A9E7B9 + uuid:23BF9B7776F8DD118B30AE29DFF09C24 + uuid:23D250C79A8FDF118DAFEB51B72C444B + uuid:240F7696E09BDF118943EC7D2E89C0BA + uuid:2416E3E238D4DC11AED8B2AA1E102295 + uuid:24540C8E6E87D81180B9D64C7ADD0A4A + uuid:245EA3048B32DF118350A0C20811A4D0 + uuid:24ABED3B1CBCDD11BD20F9FD1865895C + uuid:24B61BE3C53DDF118616A7E78976E1F0 + uuid:24BE80A7C4F3DD11A950C19DF6C562AD + uuid:24D18A04D310E011992E9E4BFD9175A2 + uuid:24D5A6167CCB11DCA28E84CDBFF0050B + uuid:25048A481828DD118DD0FF6C676D41A6 + uuid:251809F8F51EE011A71DD1885C1A9D12 + uuid:251F98C1BE36DF11B1ACFD0203331E71 + uuid:25F67A383BFFDD11A513940BD66E1892 + uuid:26238CDEA2F6DD11843989A88476A68B + uuid:2634BBCF6B89DF11A27283EADD6A0ACD + uuid:263D0318BDF7DE119830EE0370D6D803 + uuid:265A42E9D899DD119F17F92DFD9B94FC + uuid:265AF96D087BDF11A102F64E4D8DBAC0 + uuid:268662FD552E11DBBFFDB36DCBD91ADF + uuid:268AC8B528DB11DFABAEE711FBFE94F4 + uuid:268CE5F70CE2DB118A41CAFF34FFBBA8 + uuid:269AD333CD73DD11AF3A957A84E536AC + uuid:26B24CA56D6FDF118E49BD52CF84AC85 + uuid:26DF13D2F63ADE11B005C40B5B2C1CC1 + uuid:270A8A835F91E011ABB883B8B670A76F + uuid:27117A02B35CDF11BE5896B9FBB71BC3 + uuid:27CFC5E75D26DF118142ED9929F84ADA + uuid:27D3988D43DEDD118DB9EA210F03F4FF + uuid:27DA59E2AE6AE011A582E337908F6096 + uuid:27F89F1127E2DD118645D3FA1066C7BA + uuid:282AEDDB605CDE1195EC8CC9F75A2E43 + uuid:28403F4BC4D2DE11A11ED550D38F445B + uuid:284D341C3746DE118E05E00A924D8CC5 + uuid:286BA9593551DF119C93EC4D32AACFB5 + uuid:28B85E6492B811DCAC0BD7CFBA286A6B + uuid:28CE38986203DE11BC5FEFB3EB936A39 + uuid:28D51484E9B7DF1193FF89CF001C3021 + uuid:290B84B52146DE118E05E00A924D8CC5 + uuid:29485FC1716ADF11BD4FB02560D9CAD2 + uuid:297736FCCA11DC11A7BCD88A5C508651 + uuid:29B1575EAAF3DF1189E5C6EDCFF7864C + uuid:29B161B0EAACDD11BC2EEEA9E9D24792 + uuid:29B767D2616DDC11A30CDD90E4E89AE9 + uuid:29B912E493B2DE11BE2396725C0D2EA9 + uuid:29C7B102E1FFDF118B82A66050A2E612 + uuid:29D0BB1F017ADD11967E9EA932EF74A1 + uuid:29FFC34F31B4DD11B9C7AFA47E0C6811 + uuid:2A0921B9216DDD11A727A67773091824 + uuid:2A2414B4FF7BDF1198CFFB2CD00526D4 + uuid:2A463B5F2FE6DC1183409B3B045FEE21 + uuid:2A5BA287F51EE011A71DD1885C1A9D12 + uuid:2A77BB85D9CBDF1198C7E2C1557751CC + uuid:2A926DDCDFA7DF118B198306F8D20C06 + uuid:2AAEB2D48CBFDE119191D49F56E81ACD + uuid:2AD564756594DE11B4DDDF1320E4F07D + uuid:2AE709ED03F8DF11A529FEDAD5B043B3 + uuid:2AF32A445C06DD11B6EBF3C8DEE948F8 + uuid:2B09B6BD8C25DE11A3B3A425188CC0D5 + uuid:2B3370A5C0A3DD119E5CE56E71695CC2 + uuid:2C009E5FBE58DF119617B438D38764F7 + uuid:2C205C7E8234DD11A069BF111D61B76C + uuid:2C2589466F13DD119981999D14D29795 + uuid:2C2C306EE5CEDE11818BE1FEB421F2FD + uuid:2C38A646FFC911DFABAFA7B91270F624 + uuid:2C4F78A7552E11DBBFFDB36DCBD91ADF + uuid:2C62812D83C9DC11B097A3AC212109A1 + uuid:2C9BFC031E9EE111B26EEDB938B40089 + uuid:2CB24CA56D6FDF118E49BD52CF84AC85 + uuid:2CBA518212F8DE1181DBB21EA71E42A9 + uuid:2CBA8F071463DF11B160FB17AB5A3AD0 + uuid:2CC438306E8C11DFAE9CA09BE5A960A2 + uuid:2CC9AF1B8E92DD11851AFE68E023F0F6 + uuid:2CCAA1C28F2D11DEAFC8C6A03835B75D + uuid:2D1F05B02946DE118E05E00A924D8CC5 + uuid:2D2135C962A4E0118309FD8A6BC036F4 + uuid:2D25273A86B0DE119B5CFF8B367B49B4 + uuid:2D8572B1B3AEDE11A008A7E469F11D88 + uuid:2D92879BB66CDF119C87CEA1499F2097 + uuid:2DBDD1BFCE1DDF119ABEC149331D314D + uuid:2DBF74503C01DE119EDBA14779040E1A + uuid:2DC804647A07DF11B85FADFA85B832A3 + uuid:2DD16E2382E5DE11B8BDEAD7F96D7858 + uuid:2DE8D2195D4DDC11ADBADEFD96B7F140 + uuid:2DF867AF77B0DD118BB88B63F587CB88 + uuid:2E010474BFEAE0119194B69C52A9EBBC + uuid:2E0A906E1A6F11DE9AFBF59AEA3CD395 + uuid:2E2E14ECE849DD11BE81E2BC2C5AD5D8 + uuid:2E43ACB014DDDC11A60C8EEDA8A8A613 + uuid:2E4C2684A1B9DF119375AA8DDA4C9EDE + uuid:2E5709083740DE11919CA172F93BFBCE + uuid:2EB7D6B7FD2ADF11A13FABD20A7F8C21 + uuid:2EB8440C371DE11195CCE0B8F02A491F + uuid:2F5455219B7EDD11879A94957F462B55 + uuid:2F778142F413E011B5EE89981FE92456 + uuid:2F7828FA4CD3DE1187E48AEAF135C521 + uuid:2F8B1048D214DE119F7CD744AFE539FE + uuid:2F9BFC031E9EE111B26EEDB938B40089 + uuid:2FB24CA56D6FDF118E49BD52CF84AC85 + uuid:2FC0808BAE1DDD1185C1B3B2A073CCB6 + uuid:2FE4D9780F17DE119538FB32DDD803BA + uuid:30010474BFEAE0119194B69C52A9EBBC + uuid:3024EAAF43BD11DF8ED5B2107C3FBC4C + uuid:30383997EB16DE1194DDAA4BA06E12C2 + uuid:304D341C3746DE118E05E00A924D8CC5 + uuid:3074DC40A7E4DD11856FC35EEE701F57 + uuid:30D47C5DDE5ADC11B4BAA7A8812D6543 + uuid:30F7604230DFDC11A009C7FBAA892A92 + uuid:313098C2825ADF11A0198E08A850CD77 + uuid:3174407772D5E0119F3285E28EB04344 + uuid:31C1FD6AE8CCDE11AB7E8CE49332DE0D + uuid:31CB767A8E52DF119F12BB9655682B53 + uuid:32010474BFEAE0119194B69C52A9EBBC + uuid:320235EF3736DF118929DC70EE3E4E1A + uuid:320B3EA61351DF11A90BD77C23B73245 + uuid:320F86551887DE11ADEA95484EA029B0 + uuid:321D6609A479DF11B2AD9C950933489C + uuid:32640C3A5ABCDD118D6BAB9E47FC8CBF + uuid:3276A4B0E83DDE118DDFC39E64C93CD3 + uuid:327A526553C0E011956FC113C0424D13 + uuid:328C2A23A1F3DE1188FCDC0D4534976A + uuid:329EBF14943111DB9A19BF196009E84F + uuid:32AD901C1540DF11BA22EB8390E427FA + uuid:32E02D9E4771DD11A9C183080D597F94 + uuid:32EB3BAD51E2DC118B9A98C8A0DD8215 + uuid:32F27A4EFF1AE0119D41F95FC38C2614 + uuid:32FE362CB049DF119E4BB63B55608911 + uuid:331B0B7AC26EDC11BE2AC07352ECCCF2 + uuid:333AEEF3EC71DC11982DC8D8C57AA12D + uuid:33421D159417DE119764AEE8C622CAAA + uuid:3355E7CBAF53DE11B778C1DBBE1E7DC6 + uuid:3372faef-63e2-4e45-af13-a21757ccbbc7 + uuid:33B325450E83E011998ABD8726E88E90 + uuid:33E941AC1E76DE119787CFEEBC360061 + uuid:33F867AF77B0DD118BB88B63F587CB88 + uuid:3439601D8A0FDE11A2CAE72BEABD280E + uuid:346BEA978CF7DD11809199F6C55B5021 + uuid:34806D4C095CE1119004DABE2FF99586 + uuid:34A7D4A8082DDF119117DE37B5CB7D68 + uuid:34A9E73CDFA8E0119E93E8727EEEFA66 + uuid:34D375543A11DF11A3B9CA0F64C3A9A7 + uuid:34F5B7EE35B9DC11A37EC7EB0B083C4C + uuid:34FC57F66E51DE11B0659257CFE8C8AF + uuid:350A3C1E888FDF11BF5692A67E35D969 + uuid:3542669BC82EE4119025D647D2E25BCA + uuid:3573563CD8FEDD119D4AAACB49469BCA + uuid:35C28732F068E011BAE4A0F3F205CB0C + uuid:35EE06056EB9DE1187E5C224BF607677 + uuid:366000CDD781DD11BDAFF99416C816FE + uuid:366B6A36D2AEDD119EC3E7457FE35B22 + uuid:36777F43D11711DB8BF4A47972CB53F2 + uuid:369E727FB04FDE119777A241E1132B43 + uuid:36B4F67F80C9DF118326B7EBBDF28AB5 + uuid:36CC338DBF03DE11AA85DC89D1FCF295 + uuid:36F21154ABC0DD1186C9DD3C123D558C + uuid:36F5FAE2DD0711DDB5A4E201EFB25468 + uuid:371D007434AADD11AEE088F31D815A99 + uuid:377BE8223C95DF119ECEB27B407F47B9 + uuid:377FD1137FBEDD11863A82B8AB3815BC + uuid:3785128615C5DF118120961C2B385DCD + uuid:37B2DA579BFADC118FC39D64C814E620 + uuid:37DD06A87653E1118422D9075FE29A11 + uuid:37F30DE2774AE011B1A8C64D61E5A5B9 + uuid:37ced13e-35ee-7648-b557-eb3bd97c7617 + uuid:382227419650DE11828EB79B7FF87B46 + uuid:386FFDEC357DD811999DD5D34E33DD45 + uuid:38AA8D455CB3DE119313BA164CF2739E + uuid:38B660BC86EFDD11AED5FB1AC411D2F0 + uuid:38CC4EBE2610DF11A92D9A82229914F8 + uuid:38DAE72B549EDE119E93B2001C8607B3 + uuid:38DF7959A6A5DB11A7C783DEA9FDEF8A + uuid:38EFEBD32C46DE118E05E00A924D8CC5 + uuid:3939B86DDB52DF11880F815F6E810965 + uuid:395996DF12DFDC11A7D6D3E94C05AE70 + uuid:395B108AEC5FDE118F3EC99520DEB99E + uuid:39621CE3BC8CE011A4D4C9EA9FCB28F2 + uuid:39843C2AF9B3DE11AA43D7A50AEA840A + uuid:398E41A15AFBDE11B7CDF0E4012DBF7D + uuid:399642B01C46DE118E05E00A924D8CC5 + uuid:399F32716567DF119EF0D964840D1DDF + uuid:39A85F352346DE118E05E00A924D8CC5 + uuid:39C4C216FFC0DE1183479F46E7309C67 + uuid:39CF581DF994DF118A11F3D01224C1A4 + uuid:39FCA93F587BDE11890CA23DCD66B9CC + uuid:3A1257B30A14DE11959B84A298BCDF8F + uuid:3A13BF707FF7DC11A938E6CA7B9D2F49 + uuid:3A4677815E29DF11A0B087DF897F5C56 + uuid:3A4750C6131B11DD8D56D16FB255F2F5 + uuid:3A4BA5159468DC11A397FA83A3ED7C09 + uuid:3A4F51BF7911DE11A781FBA8671F5E89 + uuid:3A4FA5122068DF118C739672D3DB9AED + uuid:3A5020F1699EDE11B900A5C128F3E190 + uuid:3A67238E5EA6DC1195EFAAE766596281 + uuid:3A77E5D93A0CDF1198BDCFF24EFC6A96 + uuid:3A8CD763772EDE1192ABE09CEE95285C + uuid:3A8F4C7898B2DE11A2A6E16FF807D039 + uuid:3AD5DB0D6079DD11AFDAFBD6DAE6B089 + uuid:3AE66CA7D0EBE01183118745C311CD64 + uuid:3B45663CC068DE119987E81D29C7EAB3 + uuid:3B54F6FA85C811DE8D7C90F31A0B9BCF + uuid:3B601C280D96DF11B3B8C8C117EFA61E + uuid:3B7F0526743DDF11B5C1DB72D3CA2E00 + uuid:3BAD7872C6A5DE11BD07975AD5ACC920 + uuid:3BB550EEB760DD118B47AFEF478E93DF + uuid:3BC7FD3521AFE1118820E4E110893000 + uuid:3BDF22AD8E92DD11851AFE68E023F0F6 + uuid:3BF230DABEACDD11889FAC5282935681 + uuid:3C0D38C2AFDEE011B945C4A423A57949 + uuid:3C3870C6AF56DE11B6838FB143496DCD + uuid:3C6D8B781344DF11BB0FA369B6DB622C + uuid:3C86C36F99FADC118FC39D64C814E620 + uuid:3CB9A609F14B11DEBB0B98898AC608FA + uuid:3CBF4F29B60CDD11BB7794C3A228AE51 + uuid:3D23090D9C37E0119E6CD91BB3286C5A + uuid:3D5103E655A5DF118996AFF35D6A9C7A + uuid:3D5271DA9EE3E0119241C77544CB26A4 + uuid:3D54B8F1697DDF11B5CCA104EFBEC1EF + uuid:3D90B6044FC611DB95D9A98C0E2341EA + uuid:3DB3C619E682E011B77FE30BA566119E + uuid:3E075E7BA673DE11B838DCF729A45C34 + uuid:3E2C6F651640DA119A34C14836D5D6B6 + uuid:3E39232CD32FDD11A356BF52F56223D3 + uuid:3E451D295162DB11827CBBD5A8C451C9 + uuid:3E46F7563C5EDB11B8E7B20751C6FC5A + uuid:3E5C8557AE51DC11A6E5B79CC593882D + uuid:3E61A06F9878DE11ADFDD67EB9DD8C10 + uuid:3E9CC6B6CC31DF11A1388F3D68A4F248 + uuid:3E9E8F840020DF11B9999E84BD7762A7 + uuid:3EADC0BD4023DE11BDAEEDA0936AFBA0 + uuid:3EBDA94D2DBBDD11A646C3AB373230CF + uuid:3ECC6FE3BB35DC11A515DC224F62221E + uuid:3ED246C8D77DDE11BF1BC86AD7862F57 + uuid:3F2B35C03EDBDC118B9C8C618266B9CE + uuid:3F910E2DE01CDE11B3808BA30360FFF2 + uuid:3F9C26D6B875E011860CE7C894C3F888 + uuid:3F9D62A98869DD11BFA59ABA9022A241 + uuid:3FAAB31DC7F3DE11BFB3BB61AE1A198B + uuid:3FC414620066DE119255C9CB7898E199 + uuid:3FEFC5EF1D2CDE11B915E6D79FC5EE26 + uuid:3FF4D3B3B376DD11B6FFF6B467ACD9FE + uuid:3ce61a1e-90dd-4fc1-b29f-b4173e169197 + uuid:400A639BDA45E011BF559022CB68DB96 + uuid:4017B42DAECBDE1186239E156231D83C + uuid:4020FA8B1619DE119DEEDC329FF74F1F + uuid:405855C3070DDE11BFA9BDA3A711317A + uuid:4062B740431FE0119F84DB1DBEC49892 + uuid:40A4072D8630DE11A1F9D7B602DC81EB + uuid:40B56E81A826DE11A84EB468E816AF14 + uuid:40B712FB73EBDF11B09DBF278BD3838F + uuid:40C72BAE0EADDF11B1BFCF232FA5034C + uuid:40C9D1B0881AD411B937BBF615FBDC49 + uuid:4141A21F92C211DBA08880B7A11CE381 + uuid:41617F0171FAE011B1C696904484AE8E + uuid:4171F5CADAD2DE11947188D989F604F8 + uuid:41A85F352346DE118E05E00A924D8CC5 + uuid:41FF5625C39BDE11A1F1B24698F0C5C6 + uuid:4201C5411090DE11B123E1D45CDBF792 + uuid:42094B5B06B9DA11B2CFC5109DB52C8D + uuid:423A64C06FA1DF1192E18DE4AB537F42 + uuid:423FA522794FDD1192F9D239B5B1F9B7 + uuid:4244FD9D456DDE11ACE5EC7E68160F86 + uuid:42718ED7CB7FDE119793D90A07D6C393 + uuid:428D83D84A4EE11194E9BA8DD5E34DD8 + uuid:42A5C6F1B041DF1190BE881BF8159F39 + uuid:42C16E6C044EE111BEB0DF61568E17D3 + uuid:42DB6770318AE0118512FC672962C722 + uuid:42DD77C53BC6DD11872F9A44AC86A51A + uuid:43147600E71EDD1186618D372FE1CE15 + uuid:4338C884434A11DF9C6E94E69C30FD60 + uuid:4366BCFD5E4411DCAF5187387F50543A + uuid:4382A9900333DC11A852E56AE843AF0A + uuid:438D9E113046DE118E05E00A924D8CC5 + uuid:438F59A94760E011885CA2FD40E19378 + uuid:439A35DE2CEFDD11AAC7D161FCEC176C + uuid:43C5FD7A4C9AE1118DBA9268CE062AFA + uuid:43FCD50A8E54E011BF79FF085ADE004B + uuid:4402AABFF01DDC1183A5EA7034A5A743 + uuid:444923672CBADE11A7A688711BFDB9A6 + uuid:444AFB8292BB11DBA08880B7A11CE381 + uuid:4460413A32D9E311B2A5F3F1508E77AD + uuid:446BF93738A8DC11BB31D8D902616E04 + uuid:4478176704DFDD119667920BC9E1E183 + uuid:447D32C22C33E011908B87C104C5EE49 + uuid:4488A6BC79E911DEB2BAA1AD2839AD4C + uuid:44B083B0796FDE118606AA5A1C70E0D0 + uuid:44BEAA3334AEDC118E2EB05A69496DFD + uuid:44CA1EC4001CE011A183DAC2528E5D29 + uuid:44F17DF48A42DF118E41BC88004B2043 + uuid:450780F1B605E1119AB8B3CCC45A50FC + uuid:450916E32C7611DEAD54A9FD8FC07A37 + uuid:450E1866956ADF119700950B663DD454 + uuid:4510D067D0D1DE11B508BD0980519713 + uuid:45272DC83F74DB1190B0FC38EEBDBE9C + uuid:45327FB3F748DD1199EDCE326DEB829E + uuid:4536C8661EB8DF11A53AA0E9AB1C70AF + uuid:457D02955055DF118B59D959D9FCD50B + uuid:458D8F91F91EE011BAA98C5FD404FDDD + uuid:45A5BE313407DE11A234985B6977D949 + uuid:45AE7466D176DC11AFC0D728CABF3209 + uuid:45B952D1A760DD11B3A3AB60E7CB2E32 + uuid:45FF5625C39BDE11A1F1B24698F0C5C6 + uuid:4610D2BB5C3ADF11A1E0EE016E9F3D12 + uuid:462F4DE3D74AE111980CD23DCC274A5C + uuid:4649166503F5E011B5E0F08BB6EC0692 + uuid:468BB993F61FDE1184B5807D8AE68B53 + uuid:46B070169EABE011BB42E88B754C4AEE + uuid:46C6686D7D3CDD1182F5EB7B023EB026 + uuid:46CEB00C101311DF92CAC7279691ABDF + uuid:46E135E06305E011A766E5F2293E7D86 + uuid:46E5046B7D79DD11B6DAD14729559D83 + uuid:47233303E6D1DB11AAA7E40638EEF0FF + uuid:4747ABEF6F24E011AF0581245552D557 + uuid:4749746E7C8DE0118BF2F998D25B0134 + uuid:47D37AECE66BDA118FF0DDBAF48C02B9 + uuid:47DE5278F52CDE119FB3CAAED746FE94 + uuid:47DF11EC3B63DF11BAB3AC558E57D51A + uuid:47FC2DC027BFDE11AEB2CAA2E49F3BF0 + uuid:4849954A43FBE011B1C696904484AE8E + uuid:4852495862E0E311B7EBA640E5A616C9 + uuid:487C01D3D7F6DD11B6E1BC9B8A5E6EE2 + uuid:488E7D216417DF11AB3096DB59BE8278 + uuid:48A8B2611D05DD118D7CF1577DB622DA + uuid:48B966B3EDE4DD118CC3F0407E95283A + uuid:48CE4D616E51DE11B0659257CFE8C8AF + uuid:48E2E61A0467DE118BD2C66A5D598AF2 + uuid:48FDB35EAE9ADD11812FF65CFF7EDE23 + uuid:4926F1CF56D9E311B2A5F3F1508E77AD + uuid:4929C6EF6FEC11DD977D9C04FCB217AD + uuid:497C6A6E6DCCDE11994FB1C7F2EF2705 + uuid:49975262678DDC11A167B261005BE793 + uuid:49CC93E0F05BE011A9F4A2BA52677F1F + uuid:49E81AE519AADE119E69D5ECD2A272D0 + uuid:49E8A66A3BB5DE11809BA989B0D77432 + uuid:49ED06E4B19DDE118E5EF156A9CBBB08 + uuid:4A00A18608A1E011B3F1B4515AF4DD34 + uuid:4A53DB81B8DCDC11AE64B2EEF0C2BA3B + uuid:4A5ECF2001A0DD119E659B943BB8C1D0 + uuid:4A77707CB965E0119BB1BF1F2A175A80 + uuid:4A9A18DDD0B1DD11AF9DD61A7EB49A89 + uuid:4AACA12F3916DC11A3DCA94B2E2CA1CA + uuid:4AB8912B83C9DE118459E3AD70B5474A + uuid:4ABB4AAC934BE11187E7CEC4DA61A405 + uuid:4B0C0D1587B0DE119B5CFF8B367B49B4 + uuid:4B2B6BCFFFB3DF1199A3AFE3C6AE843F + uuid:4B86D0D4C242DC119735F91A2B9C8FD3 + uuid:4B906BAC8E0CDD11874DC9DA879CD4B1 + uuid:4BA2E1D86C8DDE119BC1AF72C6C78428 + uuid:4BACBBC6570FDD11940CBD1331260C48 + uuid:4BD64E3D591ADF119A44816E426D14CC + uuid:4C15E8230D8BE111BF8F834916FB0653 + uuid:4C1C92C0C9EBE01183118745C311CD64 + uuid:4C46E84827F5DA11B202EEF8880A3F9F + uuid:4C4A6A70BF84DC118A3180F5AB0C9AAF + uuid:4C5F65F61B82E0119986B3F1886BA740 + uuid:4C665243F995DE1197EDC24EAB65396B + uuid:4C9EA820830DDD1192DFF1DDC1F2B81A + uuid:4CA61EBB56C4DD1186ABD2BB99273205 + uuid:4CE072411961E011B1F1D164562956EF + uuid:4CF83E991098DF119553D2C99B4F75BF + uuid:4D09B0846C29DF11843DE8ED84598CA3 + uuid:4D47530DBFB1DE11838CB79BB029C533 + uuid:4D9C981BFF36E011B824F4BA8EC19276 + uuid:4DA3455A8A7DDD11BED4FA410A8D5CCD + uuid:4DACBBC6570FDD11940CBD1331260C48 + uuid:4DB2B99C3246DE118E05E00A924D8CC5 + uuid:4DCFE40F97E9DE11B6339E1DC18E821B + uuid:4DE85637B940E1119FD4C5E23B2A6F02 + uuid:4DF93B856FE6DD11B106A45AE2E6FD69 + uuid:4E28CD0BE5B0DE11ACB3A4B3E9D809A9 + uuid:4E2FA201499DDD11A931F983AD0C84B4 + uuid:4E4DB1B71B9FDF11A070D2D746E42BF9 + uuid:4E74715FBC37DE11A4F1CED0418AE169 + uuid:4E92D25D36B1DE11A236926F4718C395 + uuid:4F16598E2DDD11DBA46E8A0EC66A5A53 + uuid:4F32D8247628DF11BC23D16C8254DE17 + uuid:4F3329744D46DF1199AADCF4DFC8E031 + uuid:4F5AED2FA5F8E211B7A5BAC5EF75E8F0 + uuid:4FA964917515DE11A69F844E481960F7 + uuid:4FE5AE1F0FC6DD11B51AD7D09E41BA46 + uuid:5001F74D2A46DE118E05E00A924D8CC5 + uuid:500946BC8B27E011BA68B49C7245E90F + uuid:500BB40AE851DE11BA2DCD786B7C6468 + uuid:5010AC1E8D27DD11AF31B3EF27F2CC6D + uuid:502ADD3C8B13DD118EA79BEFBD19D7B1 + uuid:502D4D912B46DE118E05E00A924D8CC5 + uuid:5050DF8DEF99E1119A9AB97404FDCB55 + uuid:505183C44323E011BE7CD3D8CE9C6646 + uuid:50708FE7576FDE11B8F79BDBF5789606 + uuid:5085FE1C5CF1DC1184999B2D473B40C5 + uuid:50A5F355BC4BDF11A8A3F6410E93A61A + uuid:50B49959137ADE11B76EAA2CEDBA9DB1 + uuid:50E50B33C648DD11A339E617C186EEE9 + uuid:51102D2348E6DC11BA37A1F459320984 + uuid:5120E2187A93DF11BBFEE9D9128ABE86 + uuid:5127FED1F786DC119FA2F4B7532A375C + uuid:513EC2E74E3DDD1190CFED0127C96599 + uuid:5148871978E511DBBF8C80BE1E755C53 + uuid:51668C278F2211DEAFC8C6A03835B75D + uuid:51777E30ACD7DE11A1AE8A388BF11FDB + uuid:519E512F1861E11187DEEC504A15FBE2 + uuid:51A11EEB85A7DD11A19786A77EB54A52 + uuid:51B06CA2314AE011AA55DEC80D63ECBE + uuid:51FAC1DC55EC11DBB358F68EEC69EBB2 + uuid:51FBA147C29CDE11B1079A9D9C34E48A + uuid:51FBDD7E00F9DD119AA2E5CED84BE109 + uuid:5208351752C9DC118F36EE7B133BD6AB + uuid:5213267E7051E011BD08C48DA9CEC38F + uuid:5226730EE29FDC118C71BAD4899C4EC8 + uuid:523200757AD4DF11BE21ADFE6A9CD018 + uuid:524E721CE69C11DCBB7FD5E8B4068873 + uuid:5287358F5774DD1189BBEDA618DBFB25 + uuid:52932D64D71BDF11AC16982006956F20 + uuid:529382E00212DD118D76EB103648E0E4 + uuid:52A5D3054338DF1190DAEFCE2D940955 + uuid:52A83A30586811DEA6F693474E9D4384 + uuid:52B42BFAFB20DD119A8AD7C14E3F5C47 + uuid:52D84CB9CCEBE01183118745C311CD64 + uuid:52E1697C93BADE118056BC8F9753106A + uuid:52E72E233B9FDF11AF0FE66E47C2FAA1 + uuid:52E82184493DDF11A375A1271C301CEC + uuid:52E97A1B64D5DD119B88F3CA928685BB + uuid:52FF2D14337CE011BB5BE51E7B195DE5 + uuid:5315E8230D8BE111BF8F834916FB0653 + uuid:53169050531EDF11BC82E721479CC9C3 + uuid:5344B517DA0CDE11AB76806D8F41191A + uuid:5354B6A5BAEDDF11BBF7AB260196E0D9 + uuid:5372C25B2DDD11DBA46E8A0EC66A5A53 + uuid:53E437D50797DE11B2DABAB77D7740BE + uuid:53E6E71B7203DE11AE6AC00D5D2C4A29 + uuid:53EAD405055EE011B6818D741A0B17A1 + uuid:543507B6D4E5E011BCE2842CD6671D3D + uuid:54352F361D37DD119B3AA406EA888FCA + uuid:54434795E055DF11B2EDD086BAE1B5FC + uuid:5454190B1F73DF11BC75FA5B0ECAF0B5 + uuid:545E97A6E667DE11A86CCC92ECBD291E + uuid:548787E2103BDD11B44BA3B101494242 + uuid:5489824DD7E4DF11804A82E4C5968417 + uuid:54A62783BC63DC118783B3F84F11E122 + uuid:54BE1234F06FDF11B426C797E533A46E + uuid:54CFD6247C73DC118A14E690862E8B78 + uuid:54D94AB18B3ADE118883DEEA0DE3416B + uuid:54E3BAB15595DE1191E8AA31C2B4DE24 + uuid:54F6DD8D230ADD11AB33B9FAF88071F1 + uuid:54F9BB87E58ADD11B72CE8409F29B63B + uuid:551901CAD41DE111A31584B5805723ED + uuid:5534DFB71A42DE11BD46E88EEA587C7A + uuid:556D58241B1CDB1189D5B5EC4E3A9E38 + uuid:5575CE292102E01199D5CBE5A66F2D55 + uuid:5577922C3846DE118E05E00A924D8CC5 + uuid:557E3B3CE135DF119278D380A54DDC5A + uuid:557FB84CA0EEDE1185E0B06C08FF7CF8 + uuid:55BC9C0507B5DE11B9EB889DB186C96C + uuid:55CD7958CCAFE0118BEEE5E6CCFA4384 + uuid:5616A25EBA0DDC118AB39E4FD89F8A1F + uuid:565318E62FBADE11A7A688711BFDB9A6 + uuid:565C30D43A08DF11A61DB227EDDF59F8 + uuid:5675B6062F15DD11A6B89BC3CA334BC0 + uuid:56C3780774B3E4119804D70D8C24DC39 + uuid:56E82184493DDF11A375A1271C301CEC + uuid:56EDCB470FCADD11AB37AD2716A718CB + uuid:5710E290AF4EDC11A3C2F18FD91BBAF2 + uuid:5711C5B92C46DF11B544CA8ECC118138 + uuid:5730D9F9E830DE11A890DC6E06155D98 + uuid:5731D2960C32DE119CF5D72B5817FD90 + uuid:57659E439232DF11A17C9479A9CEE277 + uuid:578299FCC3D0DE119465B96E3C2E2EAA + uuid:57C4806DBD50DE1196358F28B0F95C78 + uuid:57D4D63C0537E011A635EBE38230B841 + uuid:57D84CB9CCEBE01183118745C311CD64 + uuid:57EDF1EE25FDDD11B6F490ABD348EBE1 + uuid:57EEE5B985B6DF119BCA82FEE3258D1C + uuid:57F1D33E2C56DF11B30DB48163AC36A3 + uuid:582EAF0BEE1EDF11B1CA8BA03965989E + uuid:5849D1EB1134E0118F27B36AE699ED56 + uuid:585640F50C96DF11B3B8C8C117EFA61E + uuid:58A9ACCDCA51E1118A9B920149FF9990 + uuid:58B0677D9768E011BB53C47AE8B47638 + uuid:58B81ADF0E84E011BD87EEE6520C6C5A + uuid:58D9A663AC7D11DBA5788A8273CBE291 + uuid:58E2FA9F2F26DE11B6B0F7CD741D7072 + uuid:592215AF5C04DE11AF3AAAD1462E9079 + uuid:59680BA5F854DD119AEE89FFC19F989D + uuid:5975A572B4AFDE1191F9D38249749CE2 + uuid:597B84F680E6DE1190AEBAF6332FC6C0 + uuid:59856D4640B1DD118DF7B36F1271176E + uuid:59AC78EA35F1DE1190138CE5C4DC4184 + uuid:59DF20FE1CDADC1192138BE072AE1912 + uuid:5A02C4E08832DD119122EE9D3120AAF4 + uuid:5A0E58082A6C11DDB925D63A616C9887 + uuid:5A10B6DC8349DE11AA8CDD75966B7C5B + uuid:5A3ED822F519DC1194449891B9CB355F + uuid:5A79E0672746DE118E05E00A924D8CC5 + uuid:5A897E68E330E111B226C2AAC8DFD8D0 + uuid:5A932D64D71BDF11AC16982006956F20 + uuid:5AA2DD231A4BE111980CD23DCC274A5C + uuid:5ABC9C0507B5DE11B9EB889DB186C96C + uuid:5AD62C26C0FDE111B434EAB72059CED3 + uuid:5AD94F0DE91011DB97EC9BDB4F3B5B43 + uuid:5AE14EF24012DE11B18CADD9089DDC7B + uuid:5AE70ACE295FDE11BE52E55D1D4E1AD3 + uuid:5AFD273D9DEEDD1191C79FCB5E5DBD4A + uuid:5AFF2D14337CE011BB5BE51E7B195DE5 + uuid:5B0CD778CF24DF1182C1B3E1B6A83EEB + uuid:5B123CB805EBE0118E8EEB754A336D8E + uuid:5B266B1022BFDB119AA98AF0087C85B3 + uuid:5B3EFA14DF62DD118F47D815D675BDD2 + uuid:5B54CF83D1E0DF1193D0A5DA048B99B8 + uuid:5B5A903A8F63E0119B87E6FF75E31714 + uuid:5B61FB60A925E111A52D8629DB9A6716 + uuid:5B6CC28AD15EDD11B9AE8B3F0765C8D0 + uuid:5B92864BDE31DE11A869B8279779C540 + uuid:5BA460A5B8FFDB118349B120EEE11EA2 + uuid:5BCA3564C8DBE0118AC1AC763345F55A + uuid:5C561980BB9CDA11B3538200CB3144E9 + uuid:5C65D35BBDD9DF11A2F6A2B98B635E7C + uuid:5C6E6F4D7C2EDF11BDFB8CE63EDBAEC7 + uuid:5C7449A48B91DC11831FEBD781B6ECB9 + uuid:5C75B90DD0A7DE11A499C99BFA8DD5AA + uuid:5C986A127BACDC11BBC7AABCBC64A18C + uuid:5CAE9F2FE9DCE011B0C8AB55750E54EF + uuid:5CCACA49848BDF11A453AA458107804D + uuid:5CD3A438158BDE11BA74B59B8E738172 + uuid:5CDB4EA92606E0119B159820566DD0E5 + uuid:5CEA3767A539DC1188C3CD764DFFB8B5 + uuid:5CF6D664301BDF11A5F3F3BD49993C0B + uuid:5D0C528FBA46E01183C8E802910C25E8 + uuid:5D20A57FDA47DF119C37BC94CB7E5426 + uuid:5D49AC245DBBDF11A471D02172341FA0 + uuid:5D62D40A7CB1DF11A305C846CB95C94B + uuid:5D64391711C8E0119BB0E0AEE2D1762C + uuid:5D689DD7E547DE11B32BD6844A0515EA + uuid:5D6E279F0EF8DD11BB0CD202D40FBF70 + uuid:5D7B3DE51812DF119185DEA6EC2AA3B4 + uuid:5D857F974CC1DD11A7EEBAF680EE1229 + uuid:5DA632B544C9DD11AD7E95D98496F8B1 + uuid:5DA6CE83324911DEA1B296A980BFAFA4 + uuid:5DAB2910B2C8DE119FDFACCB24878E07 + uuid:5DC7BCA90361E11187DEEC504A15FBE2 + uuid:5DD313FB8AA4E011B265AEC2CBD63518 + uuid:5DE979530038DD11957BF9CFB2CEE17D + uuid:5E163215F5EBDE118A4381E103E126D8 + uuid:5E552DB6A2C8DE1184529ECE8391BD34 + uuid:5E5640F50C96DF11B3B8C8C117EFA61E + uuid:5E56B5E6C9E7DA11854FB10E85BAC95F + uuid:5E9D9FF3CE7FDF11B6E68ED7E39BB45B + uuid:5EAC046794D8DE119E34886278BAB01F + uuid:5EBD56EDB1A4DD11991BEF5BBF8BD741 + uuid:5ED709A70EA6DD11862FDE6F8E15A5CD + uuid:5EE80C2A41A8DD119E22F96D97BBE6B2 + uuid:5F0CEB4E48AEDC118AE1D2C21B4367F3 + uuid:5F50494D7C49DE11826FBB70EB840DDA + uuid:5F59F0765B9AE111BAF6BC5D99558D99 + uuid:5FFD3B5ABEAEDE11AAA2A05F635BE30F + uuid:602DC4B6EF7DE21187D18E3572F7F96B + uuid:602E96167548DF11B95593FEFB4F0A8F + uuid:604A446A91ACDF119AC1B09FB82EDD84 + uuid:6054B70E5F74DD11830C9B4FA6CBD938 + uuid:6079332DB6FFE0118F6AA19D04677796 + uuid:607D90A22786DF11816BC823D6A7E18A + uuid:608632E43FB9DB11BA9CD1D999EFC0E5 + uuid:608CB9DBF25DE011A01DC5B6BC3F49D9 + uuid:60A7B02C9F9BDF11A20CC8BA9784A882 + uuid:60AD1AEAF96CDF1185BBB7D7C9ACD7A0 + uuid:60B9DCBC2AD0DE11A78B96BBE7615CCF + uuid:60BCB4D66DD6DD11A47DE4DAE0EFF793 + uuid:60D54FABF5DAE0118D368931F8E7C6F4 + uuid:60DA7F358095DE11B601E658958380B0 + uuid:60DB8021EBCFDD119088CB978104D2EA + uuid:60F4973B37A4DF119E73A633E16BA338 + uuid:61A2EFF96CB1DF11A8199587C081305B + uuid:61A4F9502205DD118D7CF1577DB622DA + uuid:61A5A09163EFDE1198EAB6BB1002CB82 + uuid:61D53EF38EE2DD11BEA9E4896226A586 + uuid:61F6446CD15EDF11B8A0EB190CA24ABF + uuid:620AF59A6568DD11A7E4CCA02A14236A + uuid:62125b08-dfcc-5f4c-8dc1-0da856e0f01d + uuid:6214D48E3C59DD119D2E8C64B76ECAAC + uuid:627D97213FA1DC11AF73CA979672CE51 + uuid:628565B82CBCDE11B5388CAC384C23FD + uuid:628CEE43D897DD11AF18AD783C0EA38B + uuid:6290A8977547DE11B93CFB99A6597AA0 + uuid:62B506798141DE118219B87BD895AD96 + uuid:62F104260F17DE119538FB32DDD803BA + uuid:62F99A3A85D0DE1184B7A269305F3CBD + uuid:62FF93169DA5E0119FD4DDB624F429CB + uuid:6309E53E03DADD118D71CAED85A44702 + uuid:632BE4FAEA3311DD8EEDFE841226BA5C + uuid:632BE502EA3311DD8EEDFE841226BA5C + uuid:633D91293024DE11B02E947BAC2E0059 + uuid:633FFAC25C35DD119B3AA406EA888FCA + uuid:635E9EBEF6E4DC119A659E0C947A75A5 + uuid:6367FD463646DE118E05E00A924D8CC5 + uuid:63776ADF4E19E1118846B5A7044383F6 + uuid:637D8D5D341EDE119D80CA227FB50799 + uuid:63851F4AA41DDE11AD9583101582958F + uuid:63861C9059E0E311B7EBA640E5A616C9 + uuid:638EF3A07C77E011A9F9C950ACF4D776 + uuid:63BB1A6BC782D811B488FE8F5B5CAC8E + uuid:63C475A288ED11DEB3FFF614CCD16C87 + uuid:63D2CCF573C5DF11A894FDF01CDD3577 + uuid:63E334FBC0BFDD11990DDC426F9A3A18 + uuid:63EC84B0B4E2DB11A6008A0645B59B86 + uuid:63EEEBCF70C611DBADE0E05661FAF068 + uuid:647D11D188B0DE119B5CFF8B367B49B4 + uuid:64920ABD2B62DE11B8AE8223523EF53D + uuid:6493F86C90D8DB119313A4DBA67E5958 + uuid:64A02ADA8C1CE111A909E85151E407A9 + uuid:64BD56EDB1A4DD11991BEF5BBF8BD741 + uuid:64DD01C89ABEDE11B5CEEEDFD4C3775A + uuid:64F0DA741DD8E0118856C1A207878516 + uuid:650398679F30E1118DBBF5E8B0A19711 + uuid:65169CCB345EDF1194C8D9F78654422E + uuid:65656CF46C6FDF118E49BD52CF84AC85 + uuid:65A58184AD03DF11BA1CFE2E2459F90E + uuid:65AB241D3553DF1199A0DA6B21F450B1 + uuid:65C61CE51BB5DE11822DB36BA0003BDC + uuid:660B4E2BB935DE11BA2FCF692F4F07DA + uuid:661473754A5ADE11AFC4F72E3BAE02F8 + uuid:66211d2a-e75a-6349-9313-114dc4ac619f + uuid:6665CDA9C1EAE111B6D190495D8102E7 + uuid:66E6ECE82F24DE11B02E947BAC2E0059 + uuid:66E770C8D883DD118567FD7DB7D1FB68 + uuid:66F104260F17DE119538FB32DDD803BA + uuid:66F312185D2FDF11AF4DB3E5AF59FA3A + uuid:6700F56AFFF8DC11986EC4C2F9D214CF + uuid:6704018659F6DD11BD06D93DA164657F + uuid:670D72CC3906E011B693D8C402051E54 + uuid:672190ECD13811DD85EDA6A1351547CB + uuid:67219B3D0143DE11BD46E88EEA587C7A + uuid:673A03981295DD1180D5F0B463498936 + uuid:674D5E42B2DEE011B945C4A423A57949 + uuid:678E63CC0395DD11BE5ECA6240496630 + uuid:679CAA331823DE1186CE9EE1E91B0BF6 + uuid:679D36A497D111DE9BE785C9470EE568 + uuid:67C439660F1DDF1188CEEC13B25A13F7 + uuid:67E7B4E52E15DD11A6B89BC3CA334BC0 + uuid:67FC16F71A16DF11A63A8049DFB768EF + uuid:6809E7A0C53CDB118EAB9E97FBAA3AC8 + uuid:684A446A91ACDF119AC1B09FB82EDD84 + uuid:68606F71231911DEBBC28EDA2C7DFB2E + uuid:68656CF46C6FDF118E49BD52CF84AC85 + uuid:689A3247EF7CE0119B6DD4AEA2E171E2 + uuid:68B93B8CEBF8DF11A92BC0ECBBC322AC + uuid:68C910F7FBE3DE11A416F0FE1795F9EA + uuid:68CC69B2EAE9DC11B568880105E2D85D + uuid:68DDFCCD377FDD11958095E49FBC919E + uuid:68F38B820194DF11931EA5A69C5684B1 + uuid:6907772B4D09DC11944DB5918AC7A0A1 + uuid:6922E29B5985DF11B4779C1A60E25466 + uuid:693BEA6CB8A6DF11A082860CFDE3F28E + uuid:69579B967830E1118DBBF5E8B0A19711 + uuid:69611EC3598ADF11A629EF409444B735 + uuid:69C2C353EF69DE119F30B13BCA98028B + uuid:6A1DE2471E8DDB11B96FD7C309122ADC + uuid:6A2F1E376B39DC1184A1E178A25FD2DB + uuid:6A34B7D3AEABDF11988BBB8DA5E22A4A + uuid:6A3788CD4B55DF11BAD0970D7B52CA06 + uuid:6A3E306863B2DF11A5F1CAB363841A55 + uuid:6A44313E8320DF11AAEFD6BF1D83E716 + uuid:6A6D4B9DD3BBDE1183F9F5180F278EF5 + uuid:6AA915195CC1DF11967896E4F618D8B7 + uuid:6AB118841961E11187DEEC504A15FBE2 + uuid:6AD4462FB204DD11A4539B8A658B95AB + uuid:6AD75BDA3B06E011B693D8C402051E54 + uuid:6AE53E90A6A7E111B9E1EE3B40D5FD8C + uuid:6AF52E716469DD119F2387C43516D143 + uuid:6AF68A2982B6D811BF96B330BA282B8A + uuid:6AFA35A577A8DC11AA4BEC6859C219A9 + uuid:6B028551DA31DF11A1388F3D68A4F248 + uuid:6B0650352A00DB1189D3A93B152E5FB2 + uuid:6B26E6F714A3E011B8F2B39CADF8C7BD + uuid:6B4D5E42B2DEE011B945C4A423A57949 + uuid:6B4EBD301729E011BDB8B17BF9998B56 + uuid:6BCCF93849D1DE119A839ACF3453A53A + uuid:6C05E3B396EDDF11B489AC34B4567E88 + uuid:6C149FC76466DC11BA48DBFAEF377EDF + uuid:6C1CEE99FF0CDE118B60808686D1CDA6 + uuid:6C46A34AF5B8DE11889CC23010905187 + uuid:6C707EB54C4EDF119BF69F5E7CC385D4 + uuid:6C875D7786AD11DBA35CA8F2CCD0B6EC + uuid:6CC213C806B1DF1196549C1A5C3AEAE5 + uuid:6CD54A3DE920DF1182CF9F5F63B268F6 + uuid:6CDA74E0861411DE8D7C90F31A0B9BCF + uuid:6CF3A73DB811E311AFA3B7E70729DB1C + uuid:6D96DFED2292E0119552C0C7D4DAEE3A + uuid:6DA6DF352DDBDD11B5B3DCB8F8903BE9 + uuid:6E042BB548BDDC11A44B81E4D3FFFEA0 + uuid:6E43BDE8FAA0DD11A8C7800146D9F2FD + uuid:6E47E0D0A3C911DD990ED023CA6AD342 + uuid:6E6799D7E44CDF1189FACC6921078130 + uuid:6E7775B65AB8DF11A53AA0E9AB1C70AF + uuid:6E7E4623839EE0118FF8E4E453DB7010 + uuid:6E8A7B9747E611DFB379DDDF4A362F97 + uuid:6E8E25C3648CDD11BE33CBB503803A0F + uuid:6E981E34677DDF1186D7EE6F854EC0A3 + uuid:6EA0789F003D11DDA6F2916B8F86961C + uuid:6EC910F7FBE3DE11A416F0FE1795F9EA + uuid:6EDB09A4EF99DC119FDAE1E6C9E90D52 + uuid:6EFD559AEDD8DE11BABABF60D7D7EE0A + uuid:6F0C51E18A5FDF11B6C6A84C08FFDA77 + uuid:6F5C782E2C9CDC11908C9ADAF87FE933 + uuid:6F6AD1390F40DE118A72C5A244CD82BC + uuid:6FA0A1734ED9E311B2A5F3F1508E77AD + uuid:6FA18C6BD75FDD11BC2CCAE56499F7FE + uuid:6FB0B034EB2CDE11A5FDD6FCF0A49B17 + uuid:6FBEB39B92A5E0119FD4DDB624F429CB + uuid:6FDCBDC9ECD1DE1198AC9AA9D2A3A8B4 + uuid:70066A600EE8DF119E37F514B980F394 + uuid:701F0AA1DC0FDD11B6B0DA6D17610842 + uuid:701F387CD3B7DE11B166A18981CBF27A + uuid:70267229FC18DF1199E9ED583FDA18B1 + uuid:705211814023DE11BDAEEDA0936AFBA0 + uuid:705DF8547137E011B570B9A1CFA13E00 + uuid:716920431B2DDF11AD92BB8F5DFDBC23 + uuid:717A6CAC5E11DB118A17B9396297A9FD + uuid:71B724FCE7D1DC11AB7C8BDDCD744643 + uuid:71B93B8CEBF8DF11A92BC0ECBBC322AC + uuid:71DD117642FBE011B1C696904484AE8E + uuid:720FE6261C56E111B606D6F4FCAC7F76 + uuid:722C0EBA10B5DF11B572A42404FAAE8A + uuid:722C4219484211DD8D28CD27990540EC + uuid:723644E9E3FFDF11AF70C7635490A833 + uuid:72383AB5DC06DB1188D0A56F0F9FAC9B + uuid:724AE4CE4751DF118BACAC06093E0BB4 + uuid:728CE62B1490DE119DB4AD4E599C7C23 + uuid:729A9F6B794FDC11946FC82B61223C02 + uuid:729F28DE69F4DC11AC2380CCB6841119 + uuid:72AC3E9FCEA3DE1180DB912BEB33D0D2 + uuid:72AD3ED38871DE11907DD58D2A428021 + uuid:72B60E36B44FDF11880F815F6E810965 + uuid:72B6C1A6AC87DE11AB5898EA51CEA5CB + uuid:72BAB42AB8F511DBA0B48960EE8E18AC + uuid:72E5D0AA8F93DD11A47C9C555ACA1D27 + uuid:72F0D735D2C811DDA759FF49D9A5A963 + uuid:735432F83446DE118E05E00A924D8CC5 + uuid:73DE35BD917FDF11B8D5C719020C59D1 + uuid:73E967A54765DC11A8BDEFC7140AE621 + uuid:742AAA0A1C9BDF119A90DDF60BB2FCD0 + uuid:742FDDCAF0BF11DB96ACAB58D2874C3B + uuid:745211814023DE11BDAEEDA0936AFBA0 + uuid:74541EF36C18DF11990DBF7357C10B02 + uuid:74628825F9A811DBAE18D149C142ED49 + uuid:746583581EC811DEB82CD8B338B01D3B + uuid:748835C3C9C3DF119097A6D1ECBBEDE8 + uuid:748D3C73C8B4DD11AEA1FBAA933E7B70 + uuid:748FBBC54761DE1199DC9982344E391A + uuid:74A1D27CCD37DF11AFFDE7A59348A8D0 + uuid:74A5CE9DC691DA119F92A8F9CB206A4E + uuid:74C3710F93D3DD118C1BE75E92D17F03 + uuid:74C5A1E14288DE11A7198C2D5D7A998B + uuid:74F096ADA995E1118146A6E70C0A502E + uuid:74F4F7A9E7F6DC119B47BDAE2A94F6FA + uuid:74F5F9ED648411DC9376EF86AC1B9659 + uuid:755DAEA60B58DD1191F6A08BD046A794 + uuid:7569E2563B4ADD11B0D48EA2D2D65542 + uuid:75889B152262DE11A72AF16963CD89BB + uuid:759A9F6B794FDC11946FC82B61223C02 + uuid:75A92606CC11E0119B3B985CD32CD324 + uuid:75B6602CACF1DD118629BCC78C5D8642 + uuid:75B7239DC2E2DE118A78F10A17E74984 + uuid:75BA6EE02846DE118E05E00A924D8CC5 + uuid:75DB83236C2BDE11A85793B26680797B + uuid:75DCEEF5501BDF118174D58534E02F48 + uuid:75E80B316579DF11A939CB8B2C636ED9 + uuid:75ad37b6-8a37-4fcd-a4fe-26f1aa1f11ab + uuid:760170412552DF11B0F7C22ED86D29DF + uuid:760FE6261C56E111B606D6F4FCAC7F76 + uuid:76267229FC18DF1199E9ED583FDA18B1 + uuid:7650D21DCDCF11DCBFE2B608DC9C5868 + uuid:765BEC323D10DE11BFD1F4DAA7F5E1C3 + uuid:7663CD29DE38DF118E03F1276F110EB3 + uuid:766D6EF86584E1119E8CF1B724FD8929 + uuid:76BA7252CB38DD11B12CCC48D4418D88 + uuid:76BC578468B7DF11A53AA0E9AB1C70AF + uuid:76E62AB1A1A5DE11BB97BC93DBC30F5A + uuid:76F79CA096B7DE1183488B0B74824E03 + uuid:770B1082B893E0118CB0F59C7843496D + uuid:770F6D6734F5DB11BB6C8A95A88B3144 + uuid:7726580E30E0E011A0DFF1A921A77D14 + uuid:773B38FC63F5DD11A6CCA9C34C143D29 + uuid:77487EFD3F1EDE11BE0F804836E9F523 + uuid:775D34DED925DD11867CC8DB1637346A + uuid:77668D14913FDE11A84FAF00E7C8D0F8 + uuid:777A1E7F9F10DD11BA7DA0DCEC4DD3D6 + uuid:77D8B7986C8011DEB2D0F9AD5F842D77 + uuid:77EB50A20D4DE011B799927C1DA98FAF + uuid:7803E3799B4FDE1186889A56B9D37497 + uuid:780C4ED894D011DE8EFADE9B15F6E559 + uuid:780F865B5C54DE119184FCEC7E7E1FCC + uuid:781130814856E011B154C845681AE1BC + uuid:781240E9CE75DB1190C8F0FAAC7EB527 + uuid:7816D397F232DE119122E6808B449C87 + uuid:7837951C7978E011A9B1EC2C13060BBF + uuid:784A4C9E398ADC11BB71B35A657F7EA0 + uuid:785BF1A33D44E01196A9FDAA302A4A52 + uuid:786CC4073C01E011B40E84D550759E70 + uuid:787B3D0F0C07DF11BF3BE2D4EE658A9A + uuid:7887807BCEB1DE11AD1DC7B0EFD0B2AA + uuid:78948929B329DD11B93AF0E4356E33C1 + uuid:789D87603500DD11857491263B36B1E4 + uuid:78B6D2ABA647DE1198A09E8ECD1E9DF8 + uuid:78BA610A680EDF11ADD2DC1372773797 + uuid:78D5812A1261E11187DEEC504A15FBE2 + uuid:78E06230DE31DD119D9293E81F0F46B2 + uuid:78E3C7F397E5DF119DB9E4361D824971 + uuid:78F956E9D211DF11A8CAA2358671B5B7 + uuid:792E1E0C1361E11187DEEC504A15FBE2 + uuid:7956DB51E626E311BEE7995AF20CDDB2 + uuid:795C629A9BBEDF11A112D710E3A8AB13 + uuid:7967CEA8ABADDD11BDC293BA3D5189CA + uuid:7972AD8C1461E11187DEEC504A15FBE2 + uuid:797CE7866E51DE11B0659257CFE8C8AF + uuid:7994486DC74AE111980CD23DCC274A5C + uuid:79BF86D0444CE011BCA5DB1616105822 + uuid:79D399B24B31DF11B87EB9B2F774C66B + uuid:79E152405C1FDF118B7AF0AE78A795BE + uuid:79F3974E6DCADC11947C9788F6B39F30 + uuid:7A1A8CDA6753DE11AEE6B02826E52418 + uuid:7A249F7BFEACDF11BC6E8D04CFB3FC6C + uuid:7A53A07034E0E011B6EAB49C9ED7F21C + uuid:7A70E99EB596DF11890D9D7B7F37102C + uuid:7A723F61B03AE01198329764FCC132B2 + uuid:7A7765743160DF11B7058CDA462E88D0 + uuid:7A7E669ACF65E411B159DC7A788BCEAB + uuid:7AAF04222648DF11B2D182DA734D6111 + uuid:7AC55A0AFA7DDD11BDB4D1FB4F0D7360 + uuid:7ACB18E12EFDDC11965FC0336BF324A7 + uuid:7AD5231B137C11DFB8A7B40899CC7ED1 + uuid:7AFD2554146BE011A3A7C1AA075D9441 + uuid:7B45DDBC4821E11193098FCFBECB79D1 + uuid:7B6BCF601B61E11187DEEC504A15FBE2 + uuid:7B9A8086CD9EDF11B7CADF98FCA368F1 + uuid:7B9F28DE69F4DC11AC2380CCB6841119 + uuid:7BCD6BD6D7F0DA118DA697055230BC2F + uuid:7C0400B9C2E7DC118D17CCC8742E2E78 + uuid:7C6375406C89DF11A27283EADD6A0ACD + uuid:7C66DA44A194DF11953AEBEFD43548AA + uuid:7C75CAF8FBFFDD11A77EED9F36437DB7 + uuid:7CBCCECA14FBE011B1C696904484AE8E + uuid:7CE48880D80ADD118A8EC253AF15A20A + uuid:7CE6F5D877D9DD11BABF91115DF9BDCB + uuid:7CF2E5823FB6DD11B210E84373630E75 + uuid:7CFD5111A8CADF11ABD1E3D8151858DE + uuid:7D1B60B03A21DF119A4D994F5DC86673 + uuid:7D1FF20A43C811DDAB33BFB559A80667 + uuid:7D6E29E41E76DD11850AF7EB3662A8FB + uuid:7D6F5DE42C69DD11A2E0BCF32BFA7CFC + uuid:7D7629B9259EDD119ABCD72E43629AFB + uuid:7D82A4D9F538DF1189AFCD2729466985 + uuid:7DC841FC17BFE0118211C0C91C2267D3 + uuid:7DCCEB3E9D0DDF118A1BD62C0D068F40 + uuid:7DD4A0E6DE09DF11BFE7C682DFC5D962 + uuid:7E0C6B95B61CE011955BE2D70037F110 + uuid:7E23C89B6CEFDD11B107B3B656C6BA11 + uuid:7E4EA79E3E9ADD11BB98C8968F13BDB2 + uuid:7E53A07034E0E011B6EAB49C9ED7F21C + uuid:7E88551A16A8DB11B0F5F6FF952672CC + uuid:7EB3FC4CD410DF11BCF39527C07F4034 + uuid:7EB6C214E22BDF118D96F960E4AA3DD5 + uuid:7EBAC78415A3E011B8F2B39CADF8C7BD + uuid:7EBB1121172CDD11915FF91DCAA4909A + uuid:7ECE09F59688E011AC7BD79BC0364F47 + uuid:7F0A1C0146FCDE11BC7BAEA6F800691C + uuid:7F382B6B8634E011AD868EFFDD2AB375 + uuid:7F474F6585F8DF11A328E5224BD5B913 + uuid:7F5A79F70F65DE11835E94D420F09475 + uuid:7F69BFDB9D60E11182C18D7347D5CC76 + uuid:7F8C062E24CADF1184519EAE8F64880F + uuid:7FA43EBB442DDF118EBBD3D000656823 + uuid:7FA7852B908711DD8AA29D8184628D39 + uuid:7FF5EB487C9BDD1195F4F4E8F3EDD6DC + uuid:8002989FF6DCDF11801D843198B46DA3 + uuid:80236287F441DE11AD4C902B4D3EB249 + uuid:802C693FBA6911DEB1D9DA0551F01933 + uuid:802CFFEF79F1DF11BA479126CD0215CF + uuid:803567EE1D88DE118F059539B2801DB3 + uuid:805412B01A28DF11A639F4364080EFE0 + uuid:8092BCC698D6DF11964687E3FDDCAC02 + uuid:80DECBBD2846DE118E05E00A924D8CC5 + uuid:81DD69FB7135DF11986F90A191C30A17 + uuid:81F25C46756EDC11884F971DFF13244F + uuid:81FE76278BC5DD119D98FF2CD2B0A425 + uuid:8202811E44F8DD11A801A115133A3AEC + uuid:8218F7D72BF3DB11871AC1106140771F + uuid:82243FF78E46DD1188D1BDC35DBACA85 + uuid:823002034C69DD119C1F8E912965B471 + uuid:823CA4707B58DF119F3EE4DAA45885C2 + uuid:826A2E21BA09DD118F58BD0430CEBBDD + uuid:82707127ECD5DE11A33BCD810AFBB5AC + uuid:8274AA473E19E1118846B5A7044383F6 + uuid:8274BAAAF027DF1198088BBE228526EB + uuid:827BCE418D18DE1196C5CC9633F19A39 + uuid:82974437155DDD11AF88D6B3F6EFC3C3 + uuid:82B09529C90ADF11823FC380DCAC210B + uuid:82C0F20E8D4CDE11BA9D8C77EC9C18AC + uuid:82C28D806563DF11B5498C89B5BCE50E + uuid:82FC14D39C4CDD11B767FF9B1563083E + uuid:82FC4F42DD86DE11AA0E96069EE00DF8 + uuid:82FC7F201AA9E011861F85DE1F696616 + uuid:83AEB794A6F3DE11A2FCDCF0F5878F17 + uuid:83B5749845AC11DFA995ECAAD6A702E7 + uuid:83C325A3A321DF1195F7D775DE55B86B + uuid:83E8ECD59E7AE1119B47D89068D61624 + uuid:840116378540DD118D29B1400040ED05 + uuid:84079EBB7EF1DE11A94ADCFEB40CFAB1 + uuid:84091EFA24F2DD118DA0F074275F4F86 + uuid:840B0DE6079DDC118247C435CFC136D4 + uuid:8418B9F71B19DE11ACD1FD0D79D1C48C + uuid:8426B111521BDF118174D58534E02F48 + uuid:8441626D4351DF11A00791B2C55D22C3 + uuid:844BE1DD07A9DD118768B99FC80369DD + uuid:8457E1D6136CDB1188D4CA5BD8D730D1 + uuid:845A7B70D71DDE11B2568EB4885C8C0F + uuid:84A2A1015063DD119618FC9322F5EA49 + uuid:84BF1E98A360DE1194C18245487266E3 + uuid:84F3BC90906DDF118FD3BEC75724E431 + uuid:84F685E994B9DD11B609EDFFFA623680 + uuid:850AC4FC1E42DF11832F969BB47BA373 + uuid:851DDA5F51E0DC11BD0A851B3C5DFCF2 + uuid:85650970F5ADE1119AFD8860746D6DEA + uuid:857572CA0ED7E011A34E9BB7C06B5D22 + uuid:85821B08F8FEE011A640CD785C758E2E + uuid:858968A4E5EEDD118414ED400C944065 + uuid:85A1196D737EDE119451AC86C55A028A + uuid:85CA6978161EDF11B3C7C23C35F18DBF + uuid:85CC60B9FA46DD11A598847D94F0491C + uuid:85E161BA2C44DD1190BB81A95BC350A5 + uuid:85E3D91B3170DF119EC7F1D243035CD4 + uuid:860A8578369CE011B3CAD4EF005348C1 + uuid:86266389FE01E011BFE1F9F0CA023F81 + uuid:862ADFFDBC46DF119D20C88E7FC4D9B9 + uuid:862FDA658F52DF11A958DA60E7AF79D1 + uuid:8631318ED591DE118BB0E5D058A15FA6 + uuid:863D29600E91E011B7E2BA43D2041D1F + uuid:864891583BA8E01195F9F14B578BEAA2 + uuid:865A62721A98DE1188E390279EE16E10 + uuid:86931125389ADF119BE6A44B39062E37 + uuid:869C013AAC50E0118162DC7DAAA1EF0F + uuid:86AB4FC9AF8DDF118D1C86278DA272CF + uuid:86B8C0C7B867DF118EA4C7155F4CD8C1 + uuid:86BA82CD9C6DE111BA41F8B455316ECE + uuid:86BBFE785E9AE111BAF6BC5D99558D99 + uuid:86CECBFFD057DD1195779C82C766E2BF + uuid:86E667608791DE119F4682182358AACE + uuid:86F2EA80122ADF11AD4F9E30F53067EA + uuid:86F60DDC1C49DF11B43EBA5BB716FF37 + uuid:87066C19D853E0118A29BF9999E9F508 + uuid:871A6276F573E011AE93F71A5E985A91 + uuid:872F09389114DF1184FBDEC8F1CA128D + uuid:87327FDF9D7DE111906AD27138584114 + uuid:873550E7457ADD11A9A2987509C95C9E + uuid:874583543B0DDE11A88BEAC8DA2EDB48 + uuid:875146C793EDDE1183CCC07478F94319 + uuid:875B18F3C19CDB11BC60C0F809CCB4A5 + uuid:87929005BF00DE11B94CD616E6E7C69C + uuid:87934EA84ECEDA11B28DC60E925C3FD3 + uuid:87B2C25A486BE1118EC2F27559B305C5 + uuid:87CE5E6FC241E011A932CF457C717664 + uuid:87DA9B4F05F611DCA77AACA433C34D1D + uuid:87DEB683D151DF118750883F6EEEDED0 + uuid:87E5A287C6B4DD1190C8A087567A8B86 + uuid:87ECC870A9CADF11ABD1E3D8151858DE + uuid:881538836172E011A72CE40C841B0115 + uuid:88218060511BDF118174D58534E02F48 + uuid:88682ECF5FDFDE11B366D9EF74DE4B3E + uuid:887F5DDAC8B2DE11A554833AE66D7844 + uuid:888EFC12BBA4DC11A788F61F464F954C + uuid:88CDED3A4EB0DE11B8A7E7565DE813D0 + uuid:88D46BA877B0DD118BB88B63F587CB88 + uuid:88D60A9E7AF1DF11BA479126CD0215CF + uuid:88FC4F42DD86DE11AA0E96069EE00DF8 + uuid:88FD67752F33E011A1FD8263EFD5BFFA + uuid:8916C6862DDF11DBA46E8A0EC66A5A53 + uuid:893036DD327CE011BB5BE51E7B195DE5 + uuid:896C0FCBDA32DF11A473B21C49D1757E + uuid:8998E2FC5D81DE11AB10E18A368CBC72 + uuid:89B84021ECC4E01190B18A392A9B2DE5 + uuid:89BB04786B5EDE1186EADD2B5FE8A30C + uuid:89BB70853646DE118E05E00A924D8CC5 + uuid:89F0E57BAC12E0119031D5E9F5418097 + uuid:8A5065397CCA11DCA28E84CDBFF0050B + uuid:8A5E3BF2B486DE11A8829216E4B3EF88 + uuid:8A6A675F79F011DEB2BAA1AD2839AD4C + uuid:8A8991253246DE118E05E00A924D8CC5 + uuid:8AB38CBBFF69E111AB6CA492B0234F3A + uuid:8AB3B33B3292DC11928CDAE88FF0982B + uuid:8ABDC26F8D92DD11851AFE68E023F0F6 + uuid:8AC2275DAF9ADD11812FF65CFF7EDE23 + uuid:8AC8250CBD74E01183B1C3737E3B251C + uuid:8AE0942C7F0BDE119DB88EB82536AC95 + uuid:8AEB8F71CB2FE11187D5FF2759FF64B1 + uuid:8AED5857C073DD1195798D3B4F7019D4 + uuid:8B099B843A24DD118024DCEE8F955B14 + uuid:8B62DEABA2F8E211B7A5BAC5EF75E8F0 + uuid:8B7CC22CEF2DDF11A322D278E98CEB98 + uuid:8B7D18DAD2CEDF11910DE6F1783AED6A + uuid:8C4ED4EEF4B3DF1189EE90C0D8F37DD9 + uuid:8C5B4B0A4FD0DD11B52EED21F1DF153D + uuid:8C632C6BE825DA11BB67F40C32FA7FCF + uuid:8C813F980D99DD118AA6C5B489E8CDFB + uuid:8C8B4F317E1ADF11BABCD74472CEE0AE + uuid:8CB31ECD3546DE118E05E00A924D8CC5 + uuid:8CC1F8A73A29DF119523FC6C855E1CFE + uuid:8CCA28B6E47DDD11AC43D32D64F589A1 + uuid:8CE6F65C17ECDE11A609934B6F4C4ED6 + uuid:8CF1745BD72EE311B717E7997AD90AEC + uuid:8D191EDB08B0DD11BD42822A87D7B2E1 + uuid:8D2597D0EF1ADE1190B6BBC206950356 + uuid:8D51F130C5CADD11A987E58DEF16A05C + uuid:8D62E5C5F946DF11A1ACBC2CD660C212 + uuid:8D77181767B7DE1183488B0B74824E03 + uuid:8DA62EA1E93511DDBC4FD4ACA080B6B9 + uuid:8DD643CE4023DE11BDAEEDA0936AFBA0 + uuid:8DF970660BD0DD119C4BFA6A64CFDA87 + uuid:8E056E78577BDD11A31DAE842E9CE5A6 + uuid:8E16DAC4BB05DE11888EF4B17D2611AC + uuid:8E1AD4B5FA52DF11A113C5E321E870D6 + uuid:8E3257BC3446DE118E05E00A924D8CC5 + uuid:8E4494252FBADE11A7A688711BFDB9A6 + uuid:8E4A02013946DE118E05E00A924D8CC5 + uuid:8E989E87473DDC11B1A2ED5D316D8BC7 + uuid:8EB310146D48DF11BC47A2282310DEA7 + uuid:8F2CC88210D9DF11A208A6B607576EDF + uuid:8F4877B185B8DD11943BCD86EF18B9D2 + uuid:8F565A0C536BDD11A34BC8BC9AB65AA7 + uuid:8F5EE716AC4EE011AB3FEB0F8818ED34 + uuid:8FA102EB434AE0119FAAB45593092C71 + uuid:8FB75E4A4FA5DF11B8B3F8CBC3C22A1F + uuid:8FBAA22158B0DD11ADDB988511291211 + uuid:8FC39AC27583D8119A55FED407C2AAF8 + uuid:8FE1F95A9541DE1187A3B63AEC670B7F + uuid:8FF57772795C11DD8362AF68A3F0A7EE + uuid:9038E1D49704DD11B2ADFED030C0DDB5 + uuid:9041196CFD28DE119B11F18C8D8FF67E + uuid:9075FB5D7206E0119A16D61CA9735FCC + uuid:907C21216D89DF11A27283EADD6A0ACD + uuid:90893A3E31DFDC11BECB86A5B2586ED7 + uuid:909635DE8585E011BC579D1AA12FD193 + uuid:90A480022946DE118E05E00A924D8CC5 + uuid:90ADF7D5398A11DF86119436A17CB227 + uuid:90C481A45ABB11E0A35FE9B1271AFF11 + uuid:90D3557C4419E1118846B5A7044383F6 + uuid:90F1406DEB18E011B3CDA6D635DBC7BF + uuid:91008675291FDE11912B8C0368FFC7F7 + uuid:9101571BD8DCE011A0DFC8304B774D48 + uuid:9123405377BFDF119507C604E91DC3B2 + uuid:9138AA156D5EDD119795C41888D26301 + uuid:9163CBC9DA82E0118B9D8808BF61D321 + uuid:91BB70853646DE118E05E00A924D8CC5 + uuid:91C6B9DD7D1ADF11BABCD74472CEE0AE + uuid:91C85DDBA33BDF11BB2CC26A21522482 + uuid:91D86FED2669DD119E43CF4157C41B3C + uuid:91EE4D01FDA9DD118555BD7879927BCB + uuid:91F0CEF1AE15DE11A231A30135997DBF + uuid:91F2DAB50078DF118E4BF716B2F307C8 + uuid:920948E8D2A3DF11949EEA82414C67FD + uuid:9215C3EEF31FDE1184B5807D8AE68B53 + uuid:924E3F9B6DB8DB1188899228FB3E947F + uuid:929D3EECB42DDD11A88DEA13AC5FAC5D + uuid:92A3DC997F4ADF11A63CAF6D0926EFF5 + uuid:92BF1342BC07DA11BD8486BFA3A58017 + uuid:92C91726716FE1119E57F83DD8EE33CD + uuid:92D135CB8F84E01188F183395E38DDA0 + uuid:92E81588450011DD81B6CD431C59E6AA + uuid:9328A56AEAFA11D98C60DBAABD391189 + uuid:9328FB1C2246DE118E05E00A924D8CC5 + uuid:93312F3A9EABE011BB42E88B754C4AEE + uuid:933FAD025754E011843E9FA26CBDFE3F + uuid:935EDA0EE044DE11AEA38D12EC737787 + uuid:9369042C2F46DE11BD9EE5A6639A625F + uuid:9374A053CD25E111A52D8629DB9A6716 + uuid:9378EAFCC1CBDD118B2BC1A8DC5482A3 + uuid:938BFBE564A4E0118309FD8A6BC036F4 + uuid:93B2CD1BF755DC11BE829A09659DFF50 + uuid:93B74885F527DF11881EA6879E79C74F + uuid:93D62492DF9FDE119ADABFB6E5A37954 + uuid:93E8AD8CBD32DC11BFE2E5D6CE581572 + uuid:93EAD89D899BDF11AE2DCAA2C8CB51A4 + uuid:93F0839448B2DE1191C3C665BC9BDA99 + uuid:94093C2B4EB7DE11A6D7847A12222AAF + uuid:9420197DD22DE111874A9543965275F8 + uuid:9426B64455A6DB1180039536C57E0D1F + uuid:942E46012A47DE11B864E6B1C2F75D83 + uuid:9460F05EC23FDD11B136EDD955FEF311 + uuid:947E5B29DCB0DC11B1FF94697004417B + uuid:9485F6A3A675DF11B656D19BC794C339 + uuid:949A8F3B0E45E011B7D99C20B4D2F19C + uuid:94B31ECD3546DE118E05E00A924D8CC5 + uuid:94DF719847D5DE11A70D8ACD8FC7C51D + uuid:9504C615EEA7E011AF5AA955A1316171 + uuid:9505BA3F30C0DE11A98AA555CE7863EE + uuid:952A33247B74DE11BBA19E5AEE919C47 + uuid:95865F726E47DE11B93CFB99A6597AA0 + uuid:95891EB59205DD11AAA1928F7739FE10 + uuid:958E7111132DDF11AD92BB8F5DFDBC23 + uuid:959B593D52D111DFA466AC7B9737EACE + uuid:95C7828AB891DA119F92A8F9CB206A4E + uuid:95CEA895A0C7DD11B3E7CF17B82E602B + uuid:95F268FC17B7DD11A6FFDB8AD807E447 + uuid:9603F6864F22DF1191BA98E3D07EA6E2 + uuid:9608057646E4E011BC31DE4AB2040B65 + uuid:964D6FC3F9F3DC11B7B787F67A8DC675 + uuid:9654F15B53EADC118A9B82A0D2DD7591 + uuid:967431A40D18DE1194C4ED4EEB60E7CA + uuid:96805EE10FCADD119C91F06E06802EF6 + uuid:968125ABE6D1DE118BBA9D205DC3FA72 + uuid:9682ADB0A1C2DF11B006CD02B6A7D08A + uuid:96A7271F1842DE11BB6BE96DBBAA8911 + uuid:96DE9C8D8B92DD11851AFE68E023F0F6 + uuid:9727D1E8F908DE11A557F7D361282432 + uuid:9765395A3802E011A2E38D109E2DF167 + uuid:97701BEE8C68DD11B98BD3E072A4A93E + uuid:97870473D4D0DC11AF11999D3F720584 + uuid:979C3692B21EDF118FCCDB0431E199D4 + uuid:979E80F12C46DE118E05E00A924D8CC5 + uuid:97E23D2C4B12DF11ADBDB3D48DA81215 + uuid:97FB7C9F8D69DD11BFA59ABA9022A241 + uuid:98169ECB9DCCDD119091A7DD04C2E1F6 + uuid:982703D5AFDEE011B945C4A423A57949 + uuid:98286303A71FDD11ACEC89ACF33BCD0B + uuid:982B96D05112DE119F39D5F43BF0D954 + uuid:983B6C434D7CDE119878DFC82A890B7C + uuid:984A4BB968EDE0119A32F479DA73362F + uuid:98807E91D3E8DE11811EDDF3D2EE6380 + uuid:9890F1F6D2C5DF11905CDDCA3E291AFF + uuid:9892170647A811DE853CEFEE7BD8937A + uuid:9895DF4E3EE6DE11B8BDEAD7F96D7858 + uuid:989717AE4793DA119173E453ED8FC99D + uuid:9899CD7158CEDE11B441898061B00CC8 + uuid:989EAFDA5EB4DE11BBC5DE6B5B9BD029 + uuid:98A480022946DE118E05E00A924D8CC5 + uuid:98C9B1D359C9E01191C1B89B3D3F5F0E + uuid:98C9FBD85A4DDE11A32DD8C2CD3A6994 + uuid:99171AB8F5D0DC119E8CEC75160585D9 + uuid:99383D708DB0DE119B5CFF8B367B49B4 + uuid:9970A6E809ECDC11BAF9E19A48D960FB + uuid:9980D56C8DA1DD11BFFEB5A115D52935 + uuid:99879B42EC37DA11BB10CBF611F5EEBE + uuid:999D0ED6592CE011875FEC74EAED3B90 + uuid:99A724EF2246DE118E05E00A924D8CC5 + uuid:99ACB062A6F1DD118629BCC78C5D8642 + uuid:99BC43C5789DDF118943EC7D2E89C0BA + uuid:99FD390A558CDE11AFBFF24C763D230F + uuid:9A0A33331EE2DF11B8F0BED301E9E155 + uuid:9A42583CC1A0E1119FE8BB1DBF2BCDE9 + uuid:9A4E3BC73346DE118E05E00A924D8CC5 + uuid:9A58B28BAEF6DF11A26E92D6DB19DE3D + uuid:9A7015542E46DE118E05E00A924D8CC5 + uuid:9A852FC218CADC119D59B5BD9DB71E82 + uuid:9A9382B60D96DF11B3B8C8C117EFA61E + uuid:9AE21B6B4F85DE119FE5D398F21A4413 + uuid:9AF859EEC693DE1187D8DF09AA40F280 + uuid:9B0DBC516C89DF11A27283EADD6A0ACD + uuid:9B328719E711DF11B513AADA86FAD188 + uuid:9B611790EBDCE011B0C8AB55750E54EF + uuid:9B7293F1EE1511DD93458EA9CA57A38A + uuid:9B7DC7169413E01198BBAD67D2C5160E + uuid:9B8169013A6CDB11BEEFDD803C4CB37F + uuid:9B90F1F6D2C5DF11905CDDCA3E291AFF + uuid:9BA7C44F15BDDB11A26E98349C7D0CA2 + uuid:9BF5F9EC4FD3DE1187E48AEAF135C521 + uuid:9C2CCCC08DBFDE11BFC8F73B8A884F15 + uuid:9C2EF9E247E611DFB379DDDF4A362F97 + uuid:9C2EF9E847E611DFB379DDDF4A362F97 + uuid:9C427F29C23BDE118624AC3C981C00EB + uuid:9C4C17673BB5DE11809BA989B0D77432 + uuid:9C790E6801D5DE118393BCC0F49D2243 + uuid:9C9AF8A470A4DD11B8439A379F2C7659 + uuid:9CACB062A6F1DD118629BCC78C5D8642 + uuid:9CB3A59E03D7DF1193938252AE73DE67 + uuid:9CBCF98764DDDC11A365EB903ECDBBF9 + uuid:9CF17ECCA5B5DC11AB10FFD03D5F7841 + uuid:9CFC6B7B2035DE11A097DFFA28BF514A + uuid:9D368817D859DD1199F4B1C075DFBAE5 + uuid:9D4BB8962A6E11DDB925D63A616C9887 + uuid:9D6A9164D41FDC11A97CBDE1A410D968 + uuid:9DC3029D1D46DE118E05E00A924D8CC5 + uuid:9DCBFB406187D8119C44CE4BBEA0A557 + uuid:9DD2035641DCDE11B6B3DE628C0D037F + uuid:9DDBC7358780E011B20B82CD232AAF2B + uuid:9E2B2746A85D11DF988998319CD507CD + uuid:9E41B67C0FDFE011B872DF47B34C9F1C + uuid:9E4265F82CBADE11A7A688711BFDB9A6 + uuid:9E66430EA6E1DE11B1BCEF2DB075353B + uuid:9E87E9D2E30EE0119364FE9A8E7C1E8E + uuid:9EB0BA976D1BDE119C0BC48C4EAA0090 + uuid:9EC4E2341811E0119A159514ABBDE97E + uuid:9ED58FA75D9BDC11A06AF98D3B9E72A9 + uuid:9EE579A8FF54DD11BA56D6B92CC4E8EF + uuid:9EF961D8BBD5DE119A43B4E4BA2C4471 + uuid:9EFC195D16C7DD11ACAA9014241C6D49 + uuid:9F015ED70FEA11DE8097E3A502C56252 + uuid:9F0DBC516C89DF11A27283EADD6A0ACD + uuid:9F3357A71469DE11A2BC95CFBB869132 + uuid:9F60ECFFB0F4DC1199C6F2DF64954557 + uuid:9F71A1DF3646DE118E05E00A924D8CC5 + uuid:9F7AFA590378E0118E7BD624B516CB81 + uuid:9F9056DDC3CEDF11804482FB7885E19B + uuid:9FA09D40BCE1DD119D74D36F607EA352 + uuid:9FACB062A6F1DD118629BCC78C5D8642 + uuid:9FD551B5776EDF11BF4DD0BBD7AA5946 + uuid:9FD950B8C0C7DD1188ACC346309B5937 + uuid:9FF76A7D9582DE11BB37BEE3126CDD63 + uuid:A0035181684811DF8838E22AFB3D55ED + uuid:A03B3C435C72DF118B8C8B68E712E708 + uuid:A03CCF649B0EDF11A0D29729EA0AB6B0 + uuid:A04222E484A7DD118A49CD92ACCC6A0D + uuid:A07E078AFE54DD11BA56D6B92CC4E8EF + uuid:A095DC05BAA5E11199E5E5E46B9FD060 + uuid:A0A49A1D310FE1119A19EE2BC0BD6983 + uuid:A0D36E10BEDFE011AE6BCFD5A31C68AD + uuid:A0E6536C7975E1118D0EAE8116EFC377 + uuid:A0EE4B06DD07DE118694BB95289F583C + uuid:A1423B007B77DE1190D1D387D7A0DA88 + uuid:A152DAF9F01BDF1193908CA4548BD2EE + uuid:A17C584EAB84E111B14E98BF19DDF0E5 + uuid:A18675A22DC9E01190CDCF1D7E0FB496 + uuid:A18701B4B2DEE011B945C4A423A57949 + uuid:A1C4E877620CDF11BA4BC4AC5CBA08AD + uuid:A1C8251B4EF7DF119704DE59D5EBDA41 + uuid:A1D41F019B8811DC89EFE5D00E2EB3E3 + uuid:A201A59A0274DE11AA7AB85E30C2FC4B + uuid:A228C1898CC1DB11BAA7DB2C902C19D9 + uuid:A235FFA43633DD11B84DB153FFCB2B25 + uuid:A2374B6ACECEDD11A59DDBCDE2A0CBB0 + uuid:A24A9E30FC3FE0118413A4FFB8C750A7 + uuid:A254F2A5AE2DDE11A11DA7FFC3615D01 + uuid:A2570F2FC293E0118CB0F59C7843496D + uuid:A26E37B21F2611DBAD06B9F82D8DF569 + uuid:A270FE72B2DEE011B945C4A423A57949 + uuid:A27398073F7BDE11ABB9B46C91A0C9FE + uuid:A2A7BA0F9D6DDE11893E8817AE8D822D + uuid:A2CD62038D56E1119790F60D89140178 + uuid:A2FC8323DCF5DE1199048A670A66C6B6 + uuid:A3040C378CE9DC1182B4944BC3CA1F1C + uuid:A30EDC1BEE4B11DD93458EA9CA57A38A + uuid:A3233D7639A0DD118C4EB1D76F20D61F + uuid:A32A8495FB24E011AD39CD04F92AA869 + uuid:A339CD3D6B1911DF8413A8381C46F68A + uuid:A3601AA68D60DE119947BC0B158CFCA7 + uuid:A3A81857CEB6DF11A9D8F81D08128070 + uuid:A3B0DBF5BA4BDF11A5858FDE593FA8B0 + uuid:A3C769791E08E011A8C7B939F0918B23 + uuid:A3D51830EC09DF11BC90DB220A7381E2 + uuid:A3D6B47F18B2DD11919198E04079117F + uuid:A3E7D1C3A0A2DE11809EBE2E72EFDE06 + uuid:A3F93E99A16DE0118E48C661CDBA1D10 + uuid:A42D21B7F4A3E01196FAE36605008821 + uuid:A44E1E8A87E5DE11B7C581F56C0FB051 + uuid:A45E5F78A83EDD1194B1ED2E1DD97DA6 + uuid:A487C0BB3F0311DA8293A0613B09200B + uuid:A4E07D20784FDC11946FC82B61223C02 + uuid:A51447D0F397E0118C3CC4598C4FA681 + uuid:A52B2BE2D504DE118532A753628E9587 + uuid:A52DD08FE7FFDE11A5E8EAB374A9D84C + uuid:A52FE0D63946DE118E05E00A924D8CC5 + uuid:A54598BD15CADD119C91F06E06802EF6 + uuid:A5B128149C67DF11B5A9F45C7E16B490 + uuid:A5D7AC20A534DC1182A4F3893BDCDC71 + uuid:A616C2F84B63E011B6358B6F88F10CDB + uuid:A6243BD58D77DD11AD11D198EF8B0946 + uuid:A65F66B00938DE11BB3EC722C300E070 + uuid:A66D327A3BBF11DC8215ADC1775D44BC + uuid:A66F4382FB79DE11ADD3A6E829990B73 + uuid:A686048498CAE011B7098A01E40B7264 + uuid:A68C58868DE411DC93E8F3D9B9C3303C + uuid:A69059FC7F82DD11B26983E93780E758 + uuid:A6A3C3BFE4AADE1180C3FD514FD60621 + uuid:A6B8A16E3BB5DE11809BA989B0D77432 + uuid:A6BFA1A45959DE119297EACBC3288FF7 + uuid:A6D059003DFCDD11BE96885A416C85AF + uuid:A7117F10DB79DE11B19BB84F94E0CCE9 + uuid:A75B38B1E7F4DE11AE97A4569C30AEC4 + uuid:A76374A707BFDD118883EBD5ADD733DF + uuid:A76EC4449B50DF11B44C92E5DC5A01C4 + uuid:A76F7547765FDF119F61C543DD152838 + uuid:A7893C1286CFE011B19696CD05366F97 + uuid:A7A9E20EF673E0118809AE2A7E85410B + uuid:A7BCF55494D8DE11A0429B6E61B64A50 + uuid:A7BDDBEF2E1BE011A9EFC9F735703C71 + uuid:A7C0344D922CDE11B6DB910BFA10DC7F + uuid:A7D4F7914470DE11871EB15F76B37E0E + uuid:A7DB0F2D5F7ADF11A201F0B3882AFEDB + uuid:A7DB6D739A94DD118A58F097E7D2556E + uuid:A7E089CA6775DD11A1D8E10A5C02008D + uuid:A7E64BAA5E34DE1180F6F2C73640B1AE + uuid:A7F722B36CD1DE119F22DF992446F26F + uuid:A7FD9EE3BCF5DD119062FCE4238295F6 + uuid:A833BABE193B11DC9659E07D7AF41838 + uuid:A84426686956E111B7E9B837C333A7A9 + uuid:A8693F18B657DF11883DE322E4FC4378 + uuid:A88F207393E3DE11840BA692C2A7A2D0 + uuid:A8CC6194E79CDF11B404D3029BA8DF46 + uuid:A8CD8296D7F8DF1195CC8AC4A9472649 + uuid:A9005AAE8A7FDF119CD6A0C6AE1D8074 + uuid:A9044527F170DC118348B1C841827D44 + uuid:A93CE020031611DDBCC3C7A13D5A1E42 + uuid:A942A041820DDE118028A6D1DED9DC1D + uuid:A98D86C306B5DE11B9EB889DB186C96C + uuid:A98FCD856D55DF11BA0E9527DA9EC859 + uuid:A9C425A063E5DC11AC8F97A22ED8DEE3 + uuid:A9CAB939BA50DA118E20A5D8AE3F4E98 + uuid:A9CD13FD4CF5DD118230C6E95F2EDAD7 + uuid:A9CD62038D56E1119790F60D89140178 + uuid:AA187B412D3EDA11A26F82F0A08C841D + uuid:AA197F2C565DDF1194C1835A9D57A6A6 + uuid:AA231675F4DAE011838DABA44B266DA6 + uuid:AA7C21D0AA19DC119D8DDC9D96BF3B2E + uuid:AA8E7E94A00EDF11B1CCD399BC96A2AC + uuid:AABE1F7D968BDE11B474EAC44E2D6CF1 + uuid:AAC681BF2168E011BDFEC5CFE1B23F84 + uuid:AAD21FC86C89DF11A27283EADD6A0ACD + uuid:AAE704799A5BDF1181458F8016125089 + uuid:AAEF80D4401F11DCAF999F95CF8FA3B5 + uuid:AB0C0C914333DF11A8E6A38A5488C1F3 + uuid:AB3328168103D61195B5B4694E8D0F01 + uuid:AB5101751050E0119324CAE97423559F + uuid:AB548945339ADF119BE6A44B39062E37 + uuid:AB5806885F40E011B364FC729586410D + uuid:AB7F9EA3A314DD11B9D4FA752E6E1EB4 + uuid:AB8E513CC01EE1118D2BB2B80DA226F7 + uuid:ABC311C61CB8DF11A53AA0E9AB1C70AF + uuid:ABC988A0D0C3DF1181D8F87795C0EBDC + uuid:AC044F7E33B4DF119E4CDE3EEC5B1260 + uuid:AC3A32F43CDEDA119FAEB2398213B081 + uuid:AC68EDF120BADE119A3EA3E1A97401FE + uuid:AC7E2C1F2747DE11AB48C7C86FE713E7 + uuid:AC84CEB3576FDE11B8F79BDBF5789606 + uuid:ACA6079AAAADDE119943E9CFB29BB977 + uuid:ACA9AA9E0DB3DE118052BCBDDC4BBCCE + uuid:ACA9C13D6AA0DD11A5CAB0D36BEEFBD2 + uuid:ACC3E0440A2A11DCA760A661BFF3AA01 + uuid:AD0632A8AB68DD1184DABD40760FFC1C + uuid:AD07116B485ADD118D3ABAF5DA48FAA3 + uuid:AD0B20801205DC119DA9FBB57A0509D4 + uuid:AD821971DBB1E01196138AFFE013C41F + uuid:AD96400BA8B3E411BDB08C7CE08D34AF + uuid:ADB4D413D61BDF11AC16982006956F20 + uuid:ADB8A6342EE0E0119500C872373672E0 + uuid:ADDED636E5D7DC119787CD5B25301641 + uuid:AE12EC45B980DF11AFE6F84F86565883 + uuid:AE1B1C89058ADC11B4C0F57A9F5D6694 + uuid:AE2F487015C9DE11ADA8BBEB6FC8D37D + uuid:AE363A6BEA4EDF1192DBF5680431570F + uuid:AE5BE486BF77DC118A089E5735CF5EB9 + uuid:AE6C1573D7F8DF1195CC8AC4A9472649 + uuid:AE86B9CF9592DD11A7FCF60B608912AE + uuid:AEBB2D6DFD14DF11879AB67DCB39D9FA + uuid:AEC760A81484DC11B92CB9EEBDF099E2 + uuid:AEE07D20784FDC11946FC82B61223C02 + uuid:AF6A1371AE9BDE11B5109E00302B6FDE + uuid:AF8402DD060FDE1192A88630B743BA95 + uuid:AFA5DBEBA5EADD11A931E268EEC58033 + uuid:AFA819EF2ACDE0119C30A9820ED76A7E + uuid:AFE5E935C3DEE011BE5CDB1A796662A8 + uuid:AFE67EDB2ACAE011884D9E37FEBCA207 + uuid:AFFEB253AFFEDE11A592862C0BC3D959 + uuid:B003888ABF30DE118971F9A58BAAEB50 + uuid:B00D84D55063DF1183BD84419D5831DE + uuid:B020CABC3411DF11A5D2F026B16F513A + uuid:B032C03CDA10E011992E9E4BFD9175A2 + uuid:B03512E09B7DE111906AD27138584114 + uuid:B03F15927017DD11B06099CEB28FABAE + uuid:B044565411B1E011BBDDA4BFDED1B5E0 + uuid:B095A74D81E7DB11AC04B5FF79B115A7 + uuid:B0A0227237CBE011BEA69117F7DF7145 + uuid:B0C53D6C520BDD119966EC9A5A52EB65 + uuid:B0DBCBCAD693DD11ABCDA2214E815C0B + uuid:B0F4A38D097DE011BBA9E922594FEA2F + uuid:B118FD9C3446DE118E05E00A924D8CC5 + uuid:B130141C66B1DF11AAB8DC070974B466 + uuid:B1314B18E2FADC11A39B8C07975D07B2 + uuid:B14ADCFECA79DD11B934C755FB034F39 + uuid:B16C8A8A6BA6DD11A3A5D2BFE4C5EAC9 + uuid:B20ABB75F339DC11A2B78BD6F70B02AB + uuid:B240674073B5DD11A641E377A27FBD99 + uuid:B25C6DC4BE25DE11BF5DFC1371ADB71B + uuid:B26E3051B629DC119224F138ADCAD003 + uuid:B27D6ADCFC21DE11B453E726CCA5F477 + uuid:B2F06573C541DD118A2BAF704F434930 + uuid:B3055169CFF1DC11815A91FF295096C9 + uuid:B320720DE700DF11B11CD081590171F1 + uuid:B3429378B7EFE011B32DDB1487CCF721 + uuid:B393EAB42B0AE011A2B694EC32AA5E02 + uuid:B3BE52FD4594DE11BDD7E9D308B1611F + uuid:B3D4585C2887DD119E3BBBA19C68A90F + uuid:B3E3235FBA2EDF11A8CDEE796F5F1D8F + uuid:B3E98E28B741DE1185E1952AE13EA390 + uuid:B41227A74635DE11905BA0931904557F + uuid:B41C7011DBB0E011AE3B983D4F76827C + uuid:B43B88D3622CDD11B17BDBCD4E9FF783 + uuid:B483C8EA87E5E0119089CE57AB684774 + uuid:B48CC374F6E2DC1193D6E593F704EF94 + uuid:B494675813D1DD11BBEBBB6A82598937 + uuid:B49C6EF51896E011850BD75508940061 + uuid:B4B219594392DC119738A4556AD6E114 + uuid:B4DC26C8791FDE11AEA2C220ECCC0DFF + uuid:B4E140EE9010DF119AE2E9192EFBF3B1 + uuid:B4E6DCE47067DA11A17B9BA428F6B726 + uuid:B4EC9A2F511BDF118174D58534E02F48 + uuid:B4F77E479CBCDD119E4FC263E5BC28AB + uuid:B4FD302A5F0C11DDB5BDA499E9EA1F3A + uuid:B51AC5EF7691E011ABB883B8B670A76F + uuid:B53967A30F96DF119440FF4D9544615F + uuid:B556D4A30C4DDD1188AAD77433828AA7 + uuid:B58EF03412BBDD11B29DEB80CDD92962 + uuid:B5EEE3B31822DE11BF40A5E1FC1AFB43 + uuid:B5F2402F2FF2DD119B63EFD785E0978F + uuid:B604173ACA61E0118350F554361CF6C4 + uuid:B644964D81D5DD11B1F8E3CC0D3EE224 + uuid:B6490FBD4172DE11AF62A9A557195E56 + uuid:B66A473EAC12E0119031D5E9F5418097 + uuid:B68122B38AC811DFB3B694B92663EFCB + uuid:B69E5EBCAC72DC119E6AC17918198D71 + uuid:B6AAF3D550D9DF118AB0FD3E6363931E + uuid:B6C231BCE14EDD11A8B8E9BD9DFCBE55 + uuid:B6DC8E2AA2A9DF11BD22AB3E95EBC880 + uuid:B6E9C418A29FDE119EF7C54A7376AD41 + uuid:B71494F3DD3ADD119CD2D25E1D6BF99B + uuid:B7665EDF4DDDDC1194AFF7A6573C8769 + uuid:B76EB68CAD18DD119AB3D3F932957A90 + uuid:B7B4910F4EB8DD1184E59192319C769C + uuid:B7E241490BE0E01198E1A253627DB11C + uuid:B7EB47911657DC118A73F16AFDDE94C5 + uuid:B7F8325E92B711DCAC0BD7CFBA286A6B + uuid:B7FA54C069D3DC119030EB72FE5773AE + uuid:B817E0D43CEFDB11B569A5BC76F1A641 + uuid:B850031313CDDD119358D3EBF934974E + uuid:B854A2A773DFE011A3EAB924634D1234 + uuid:B85F311C33B4DD119AF096BD25E377FE + uuid:B86F5A0F32A3DE119998FBA423EDC580 + uuid:B87772B194D9E011833FA20089605520 + uuid:B895BE688755DD11988FA63B048E017C + uuid:B898B90B9F34DF11B05AD64FBE091CB8 + uuid:B89961994B1DDD119AA8D42F7B1E0A84 + uuid:B89DFDB9806EDE1183E5ACE2B85938FA + uuid:B8A0FBC0F036DD11A488DB149422DBCA + uuid:B8A95F8CCDC0DF118FD5A731FCC5A5FE + uuid:B8C63505A65E11E0A0C3D4FA23827C6E + uuid:B8E8286830E4DD118FA0FFEFDA5BCAC9 + uuid:B9137495CA79DD11B934C755FB034F39 + uuid:B918C808210EDD1198B6D535C71E3F82 + uuid:B93D03A93346DE118E05E00A924D8CC5 + uuid:B94A2F9A55B2DE11A0F9DF64D11D0434 + uuid:B971000E3AE0E0118D54AF7EA314E301 + uuid:B976F256E1FFDF118B82A66050A2E612 + uuid:B98A09389573DF11BE79A71338E81411 + uuid:B99C57293115DB1183E59E4BAA67F024 + uuid:B99EA0DFCEFBDA11B4AAB966AB4646F6 + uuid:B9DCABC84C2DDF11BA06BA543CB4F500 + uuid:B9E29516860F11DE8D7C90F31A0B9BCF + uuid:BA4BF4A19D1ADD11BB94AD6677028219 + uuid:BA62F2AE3206DF11A968A912B3EBBF55 + uuid:BA801572353ADF1191B3C84D48B583A9 + uuid:BA900E3463DEDE118D2EF0FA1269A650 + uuid:BAC25C955D33DF11BA37A600EF202F2D + uuid:BAECF3DAC594DD118C2FEAC00FF0F777 + uuid:BB0036272AE6DF11898D818B1246985D + uuid:BB1EF37481E8DC118DF8881DDBB15AA6 + uuid:BB3702D824DBDD11B5B3DCB8F8903BE9 + uuid:BB4B6AE21CE1DB11B2D4CBD40CD4C779 + uuid:BB8F709CB256DE119EE7FD247CBF985F + uuid:BB977796CA86DE11B7F5E2F3C7B268AC + uuid:BBC6539AC3ACDC11B6DBFE53C150A6A2 + uuid:BBD4A7D33CE8DD1182E5CD1755D99AD5 + uuid:BBEC6DED5778DD11AD7DF64204BA6E0E + uuid:BC133943496CDD1191A481F510727859 + uuid:BC15A57D66A3DE11B244C12EDEC35D3B + uuid:BC1FF0EE784FDC11946FC82B61223C02 + uuid:BC2BA5547C6EDD1191E4EE082F6C4F0C + uuid:BC414DDBFFAD11DAAD7A824BC5BBCBE9 + uuid:BC6F3985CBC8E011B22ECBE534F6852D + uuid:BC8EF4B05AE5DF11994DC8E60A96C713 + uuid:BCA27BD0CF96DE11BBF7F583A7922C46 + uuid:BCD38AC2350CDF118DAC9A2C9D58DA96 + uuid:BCEC96F8D3F8DF1195CC8AC4A9472649 + uuid:BCFF09932C50DD11A10282EF7517CCC0 + uuid:BD020971E7C2DD11B9FC85B0D35B73BA + uuid:BD0E68581730DF1184C4FE0C75E02E53 + uuid:BD45C1A0E8C4E01190B18A392A9B2DE5 + uuid:BD55BD62735DE0119428A85E05DCBA23 + uuid:BD62B5D688DADE11ACBF843D1F9FD836 + uuid:BD97907419F8DE11AD29EB98F10A17C0 + uuid:BDE7D3ADA44ADD11B942826B91B46D31 + uuid:BE234C3C7349DF11B2F9E36DD8C8452B + uuid:BE30ECEB6B12E111BD179F49D5EBFE9F + uuid:BE357F6A3040DD11921EF6ECC00A133A + uuid:BE5566532CD511DAA7C7845CE1882A45 + uuid:BE9561B08539DE118C63E240A049DA21 + uuid:BE9E854B4269DD11809B8F080E44D0FE + uuid:BEA495FAFB21D811ACCCAA37804BC0B8 + uuid:BECFD854E62EDF119A548200E7F4D9B0 + uuid:BF4611C534C1DE119DACEBDB2A08568A + uuid:BF720FD8AA43DF11B5A2B0786D4FF14E + uuid:BFC8424DAA12DE11A9C9C4A4424B369F + uuid:BFDC38B07EB6DE11B327E26F2BDE0177 + uuid:BFE21C85AF73E1119367AFD391523801 + uuid:C00595D7595FDE1194738156F5E011A8 + uuid:C01FD3A38EBCDE11BEDBD9ECD054B51C + uuid:C03027DCF6B911DEB712FBA708F835B3 + uuid:C03A1B0038BDDC118A27C228F2C038E0 + uuid:C043891A3814E011BF3EDC499B88E432 + uuid:C04E0AB15F75E3119C25FF07A507AA29 + uuid:C0806E5BFCAADD11AC67AC9B82B603BD + uuid:C08DD06EDF8FE011A372BE2F044B17B1 + uuid:C09C94E695C8DE11A2DDF6A0E509E183 + uuid:C0AE3E4BA232DF11A1388F3D68A4F248 + uuid:C0AF6874BFFEDE11BA268E9760F6C405 + uuid:C0DBC9E461A7E01180CC89AD2CE51128 + uuid:C0F2538A8FC3DD11872F9A44AC86A51A + uuid:C131F3208A68DE11A87BD8ABF4CB75E2 + uuid:C14567548589E1118FBCF608D5F914DF + uuid:C155AB1115D5DF118B9498D786733505 + uuid:C1916AD393B7E41190C0B6F201ADAFD2 + uuid:C1B608EC9BE6DB1190B4B6BDB0B2B315 + uuid:C1F795C32F02E011A0BCFC60426D45BA + uuid:C20D5D23A40CDF11B50FD964665DC834 + uuid:C22DA473F011DE11B18CADD9089DDC7B + uuid:C25149FB718FDE118FFB90D72E729FC2 + uuid:C257517D1F40E01191FAE760C1DD11A6 + uuid:C27E7A7DBC4CE1118327DCAF7B4E567B + uuid:C293657DA832DF118B1A875AFFA58370 + uuid:C2C8BC84C4C0DE11AA779A12FD7117A8 + uuid:C2C8BD1686FBDD11AC32C13ABD83A143 + uuid:C2CA6C293579DF11B2AD9C950933489C + uuid:C3093F976E3ADF11BD63B063958AE9FB + uuid:C30DE5C9C209DD118F58BD0430CEBBDD + uuid:C336C9E1F506DF11B993D25DE56CAB26 + uuid:C367524D2ADADC11A6E9CC930E32BA8C + uuid:C37812C84F17DC11B314C676ACF00231 + uuid:C399988AAA2BDC1199188DD31C244FD7 + uuid:C39A6278122EDD11AA7099BD4C23D098 + uuid:C3F303FED2CC11DDA759FF49D9A5A963 + uuid:C3FA83EA45A8DC11B95FA470D5009D93 + uuid:C3FD8906A23CDD11818F9D8D7AE21979 + uuid:C44DF2AFA321DF1184BDF6EB09B147CB + uuid:C46A802BFEEADC11B34CF8282F71A33B + uuid:C47036D7DB8DE011B0A595025F357B42 + uuid:C475292156F9DE119858CC189AA5168E + uuid:C4AADD4109A6DE11AA57C4DB02F1F37E + uuid:C4B8C405C39BDE11A1F1B24698F0C5C6 + uuid:C50C5BE8676FDF119ED6D0522C80DC9C + uuid:C54997B3E54BE1118E68FFEA11B8FF32 + uuid:C54C77CC3E31E011A4CEF0CE14DBA47B + uuid:C554A170D175DD118800DFEE1CB42BA2 + uuid:C5F46C7C5085E111AF43A327F0293E20 + uuid:C60A6589010DE01199B098BED9DEFB7E + uuid:C61F2E1AA2CEDD118A71BC83C9FAEF40 + uuid:C63B551A18ABDF11A196BED1DB02FD13 + uuid:C657F7948C40DE11AE82B07C1BA09C9B + uuid:C674B73D4D9511DCAD58A78EBE278078 + uuid:C67DEAB23C92E0119552C0C7D4DAEE3A + uuid:C6964A809B69DF119390C6150B732344 + uuid:C69D854B72F0DD11A36286CF4E3B9F90 + uuid:C6D7BA63B539E01183BBC652D31CB39D + uuid:C6E1DA7134C6DD11B998C16382A8C883 + uuid:C6F7CD2BC7C4DD1190DCC3212623DC69 + uuid:C70425588945DB11B9BDC00E08C119CF + uuid:C729D4498974DE11838BA97916164EEA + uuid:C77CA102C562DF11A98FAE649B7CA0E4 + uuid:C78027F85C65DD1182CF9C513629480E + uuid:C78030AE5A20E1118CC7DBCFF57A53AE + uuid:C78A5C22AF2DDD11BC6082BDA90FB3F2 + uuid:C7B85B3A8545DD11B4F8FE5474F47628 + uuid:C86C30CAF7B5DF119A7FC51EFA65364E + uuid:C87E11CBF3ADDD11B722D621BBE2282F + uuid:C8995AE35D77DC11BA25B5006B2099A9 + uuid:C8ACF8E5DC28DF118345A007A601E742 + uuid:C8B525E44E94E0119AC4AF1F3DDDB45B + uuid:C8E2FDA62246DE118E05E00A924D8CC5 + uuid:C8E6AF4D0C36DB11AA1882B8F962CEDF + uuid:C902F624ED58DF11B09AA13AA286DFF1 + uuid:C9213F7341C9E01190CDCF1D7E0FB496 + uuid:C92F8327CED1DF11925EF8707A105F5E + uuid:C93357316AADDD11981C8C07A9FCB46F + uuid:C9408F017048E111834A8DADC5838B87 + uuid:C95E826F3E63DD119998F4D1B568D843 + uuid:C95F8E93E1ECDD11AD81A1AB84D405B4 + uuid:C972937141C7DC11A9308D8CAE550E31 + uuid:C974D1554336DD118CA58E7E12F64230 + uuid:C98C9CAB27FCDE11BDAB9119F7C77CF7 + uuid:C9B6F2E7E44EDF11BAFDAC7CDC373421 + uuid:C9CE6894B332DE118FF4DA641641199C + uuid:C9E6670A7191DD11A3FAF2032831011E + uuid:C9E68A53716FDF118E49BD52CF84AC85 + uuid:C9EAA17ABF37DF119641AE19E0ABD412 + uuid:CA09E79BFCD9DF1192ABE879604B131D + uuid:CA338EC950C9DE11B3919E8C269BDFE7 + uuid:CA4E034E7E1ADF11BABCD74472CEE0AE + uuid:CA6A61F1BD3ADD11BAEF96DFD6BBD32D + uuid:CA8438F35492DF119C3AA188202282FB + uuid:CAA77AA844A8E011A242A32924141C08 + uuid:CAE0D5E6769111DFBD20D13DC58F17C3 + uuid:CB09F63C1253DA11B919CAE4F1B89E24 + uuid:CB19CC6AAED2DE11A1FFB39D8423E0B8 + uuid:CB2EED906AC311DF8403DF34608520A8 + uuid:CB49EC3F159FDD11B928BF68C9DAD113 + uuid:CB886DF8BE96E0118521F011DD2A3368 + uuid:CB9AC4CBED4CDF1186479309F5E49ED0 + uuid:CBE09F20F0FBDC11A28BE265AD78299A + uuid:CC036BD7D19CDE11A3B4999777CE8201 + uuid:CC0EF853BDE5DF119AEF989A15E82332 + uuid:CC18FBD9041CDF11ACEBF49C1510D7E2 + uuid:CC69690D15E3E011B81B9312C0827518 + uuid:CC88307C9024E31195E5DEE05494581E + uuid:CC8DC478D45FDC11B2329FA0034D00B4 + uuid:CC8E85AC7665E0119EEFC6062240AD3E + uuid:CC9624520553DC11A367DE399E056D77 + uuid:CC9CC2FFCAA0DB1197EA9BA06676A341 + uuid:CCE7D18D7006E011ACACF4C7EB2AF2CD + uuid:CD192CB43784D811A2D2963FCB4D7BEC + uuid:CD1E7E73CA5DD91193FBC3868F13F25E + uuid:CD6D8B926B7DDF1186D7EE6F854EC0A3 + uuid:CD7181DAB289DE11ACE0974FE0FC8345 + uuid:CD8BCACE98BCDE11AE26F9D1FD1B7E18 + uuid:CDB8E6B435AA11DE87F9ABE399EE13D4 + uuid:CDBE4F10EA14DF11B86CE80DE02A00FE + uuid:CDD977CD0316E0119189DC90DDEB9B24 + uuid:CDFDC0C79D93DF118C149DF36CDA307E + uuid:CE3DCDE7245DDE11A09DB6F241A377D9 + uuid:CE3FCE3EADAFDB1194CAFAD50C9088DB + uuid:CE4C8C6B37CBE011B318D4BB086B027C + uuid:CE5A4F4F5DB8DF11A53AA0E9AB1C70AF + uuid:CE81F5F18B8ADD1192EBB014E27EB273 + uuid:CE850F17235911DDB8A999939B027CA1 + uuid:CE8A65C6B2E9DE11820DF974ED4965B5 + uuid:CEB1C1938033DE1180B2AAA64B4A44D0 + uuid:CECC404C96BCDE11AE26F9D1FD1B7E18 + uuid:CEE373F4874ADF118C8FD5B59C8C4DB5 + uuid:CF04ADBBFAB8DE11A023844701A21A6D + uuid:CF0E419C0C96DF11B3B8C8C117EFA61E + uuid:CF22012FBF0CDF11AF03DFE2B85E861B + uuid:CF3D182CED04DE119A8BC46E48B5B4ED + uuid:CF5F4C02B4B3DF11BEE9D23A73828232 + uuid:CF8D03F6CB2DDF118F95A49BE02D8F08 + uuid:CF8E06442746DE118E05E00A924D8CC5 + uuid:CF9461AE6C2CDF1182BFBEB6F574E8FA + uuid:CFB2C88F1A4AE011BDF5E7C9FD6E41C3 + uuid:CFBCB8734138E0118CC2F3DBDFC822F1 + uuid:CFE2DF57500FDE11B9C398921336EDEA + uuid:CFE68A53716FDF118E49BD52CF84AC85 + uuid:D000F9494535DE11905BA0931904557F + uuid:D0194E66B17CDF11B904C9EE9AB5485B + uuid:D02F4C842821DE11AB4BB39481203363 + uuid:D049A69CB407DF11AFF2B5C19F34DD73 + uuid:D04C74D5FF92DF11A4A4B038BA9F8BEA + uuid:D05200D5CB2CDE119FACF6B32AE746D1 + uuid:D06A50FEEEC4E01190B18A392A9B2DE5 + uuid:D07AF01CFB9EDF118618F1C113702769 + uuid:D0952AEF788ADE11ACE0974FE0FC8345 + uuid:D0959E95F62DE3118021D04C0459BC47 + uuid:D0A6C0082B2BDE11AB7689F92BA6779C + uuid:D0B9381DC5EB11DCA2EED6245E0E7E8B + uuid:D0F74D4DF21FDF1182F298D8D839FAE5 + uuid:D103B4ACCFCCDE119C91C660DEF8E17A + uuid:D14375593D3CE011A6D3E9DF0091480B + uuid:D151FA895E91DE11BDF1967A9D5E1EC3 + uuid:D15DC3CD6B7411DF90DB848384F33D25 + uuid:D16145CD32C011DB86D0CF6424D0FBC2 + uuid:D175A6E8D84DDD11884AE07479EA7813 + uuid:D1AAEDB47D0DE111BBDAE8E313C865BC + uuid:D1AD727BB391DF11B7B59B749F8F26BC + uuid:D1B307D01D7DDC11AA549DD207900CF1 + uuid:D1C1F3262A6B11DDB925D63A616C9887 + uuid:D1C50FD5300BDE11BF59C4CB8ED1CA40 + uuid:D1CB8A24BDFFDC11B7E8F526EDA1242D + uuid:D1E292315AD9DE11AA96AF115635F394 + uuid:D2266485BEBADD119C1FE2474AC6A3A9 + uuid:D24E08A3F3B4DF11A0AFE722E0AC176B + uuid:D25B3EEFBC80DD11956EA4B5A84694B7 + uuid:D281BDE9A170DE11802ABBB9D8783F2A + uuid:D2AB800E623CDE11A3FE96BF0235E340 + uuid:D2CBCEA368ABD7119151D2D5CDB17245 + uuid:D2E7F1251EBFDC11B407D3A13D9E45B0 + uuid:D31FF02BC065DF119DAED4B11B46F9FF + uuid:D349FD5DCF01DD1191EDCC66BF6D3E31 + uuid:D3759A92481B11DD8D28CD27990540EC + uuid:D3A7CD576D58DE1193F18641FDF63895 + uuid:D3AA44E4A127DD119884880D9DE318D7 + uuid:D3BF89E26D7FDF1197489DC558C6BC6A + uuid:D3C272347109DD11B77DD7C813171D4F + uuid:D3C3D799895FDE11AA49C912E235F427 + uuid:D3EA17BBD502DE11B06AC44E8A9BBF03 + uuid:D3F45F90B64811DEAADCE7CC1A7ED6A5 + uuid:D424197B9546DE11A1B69C9C4C35B5A7 + uuid:D50E419C0C96DF11B3B8C8C117EFA61E + uuid:D530FC1A0E50E01185AF8C60BE84D800 + uuid:D534FF48790ADD119A14BA15B1338740 + uuid:D53A0555A7D7E0119FDAEAC9F2A34AD0 + uuid:D5738990D71BDF11AC16982006956F20 + uuid:D58B53EB6B89DF11A27283EADD6A0ACD + uuid:D5A43BCE2446DE118E05E00A924D8CC5 + uuid:D5A4B326C122E111B5BBA3CAD8862A56 + uuid:D6106FFF2837DB11B5E2AD628E07DF01 + uuid:D62220B4D76BDE1185E2922F624AD9E5 + uuid:D623E2FCCB44DF11A659990446779642 + uuid:D63E7E4CA21BDE11BC59FF5081124FB9 + uuid:D64EB98FCE8FDD11969B8877C79DCD33 + uuid:D65AEE9F55C1DD11B983BFE3CE432064 + uuid:D65BCF04EBA3DF11AEC8ECC4B4DD4F26 + uuid:D67DE9CEB841DC11A4C59F1431608251 + uuid:D6928885DFF8DF1195CC8AC4A9472649 + uuid:D6EF40FB5568DF11AE2DDE167B97FDBE + uuid:D6F4EE68500BDD119966EC9A5A52EB65 + uuid:D71ECB2054BBDD11BE43BAA0C7DF0A8F + uuid:D722A55C2746DD1198FDA23DA8CF6A52 + uuid:D722F3137E28DF118A00B43E7F1745D9 + uuid:D76A99DD2D46DE118E05E00A924D8CC5 + uuid:D7780B82AD3AE01198329764FCC132B2 + uuid:D7DF0928EBF8DF11A92BC0ECBBC322AC + uuid:D7F77C2CE091E0118FEBC1BD7FE80A73 + uuid:D806CA89565511DCA78EFBAB494EB6C7 + uuid:D833B764414FDC11A43AAD4EEAF5F987 + uuid:D834341B7B63E1118EFC9A5EE050461C + uuid:D83A213D43A8E011A242A32924141C08 + uuid:D8408205501FDD1198C9EC5DA8B6CA8D + uuid:D883139A2F46DE118E05E00A924D8CC5 + uuid:D898829C29D8DE11BE2EB93CBA992D94 + uuid:D8B6B4501291DF11A414E39C531AB26B + uuid:D8C84D481303DE11B17FBCB1A0CBEAE0 + uuid:D8D4AD44427DDE11AE3C9BF91958E880 + uuid:D8D88832C306DF11AF8AA587C3C1C2B2 + uuid:D8E6BCBFE603DF11B0E8EF397F548FEC + uuid:D9114C06F27CDD11A27ADCA80B4F92FD + uuid:D9252850E439E011B9B5C42D6AE15155 + uuid:D92AA69DED07DE11AAD8A7824F5B43F7 + uuid:D94DA3A85C06E1118F489DAB0FDBB0BE + uuid:D954F87AFA18DF1199E9ED583FDA18B1 + uuid:D977C548A185DF11AEA7CC9CB76DA93F + uuid:D9BD17B654CDDD118E28CFC396344156 + uuid:D9C0F8FB9C90DE11AE0AC26550418DE9 + uuid:D9C8325A5E14DC11BCFF992E2F0C9E43 + uuid:D9DEC56631FCDD11BE96885A416C85AF + uuid:D9F18C333C9CDF119F2E804466B82BB8 + uuid:DA29F8D63833DD11B84DB153FFCB2B25 + uuid:DA2B43EEF855DC11BE829A09659DFF50 + uuid:DA4356719655E11185F4BB88A7E20821 + uuid:DA664FAB766CDD118BC6AB313DBE5BAF + uuid:DA8345223F5BDD11912DAA7FB7776147 + uuid:DA963F47EA98DE11880CA33A2B0576FC + uuid:DA967A6C44F5E211ADA3A5E208A9E7B9 + uuid:DABA1B3BDB79DE11B19BB84F94E0CCE9 + uuid:DACB42AC0D57DF119E6183A921B60F6D + uuid:DADAF1DD4FA3DF11B51BED44650154B6 + uuid:DAECF7908643DF11B82BEDA602730664 + uuid:DAF890E271EBDC11999FF5758F271162 + uuid:DAF8A1E81E36E011BD52EC7717D55B5F + uuid:DB394D1A586711DEA6F693474E9D4384 + uuid:DB8AF9CFD1CEDF11910DE6F1783AED6A + uuid:DB94E3E49A3411DD9022BCD89592B1ED + uuid:DB95F7BDB3A4DD11991BEF5BBF8BD741 + uuid:DBCF05965A5ADC1189E083EABAD0C054 + uuid:DC0B333D0455DC119AEEBA7DE8B81200 + uuid:DC0CB835C137DB11A5698C5F312683C1 + uuid:DC257B8C5ADDDC119438890198CE6F01 + uuid:DC275053C240DF11AD3DE0F1959BB9CC + uuid:DC2BF320512DDF11BA06BA543CB4F500 + uuid:DC364EEEEF07DE11AAD8A7824F5B43F7 + uuid:DC4F5882B0E9E011B3269AB1C0356EB4 + uuid:DC5831D67117E1118ACBC52CFB36F506 + uuid:DC6E07587D75DE118E119D6E564B4418 + uuid:DC8074239110DF11856FF25F8996A646 + uuid:DCA83BEA68D0DD11B52EED21F1DF153D + uuid:DCAF95EF5418DC11991D9081DD0FA550 + uuid:DCC3FDE185C9DE118459E3AD70B5474A + uuid:DCC9959CCCCEDF11910DE6F1783AED6A + uuid:DCCE1F5C6A7DDF1186D7EE6F854EC0A3 + uuid:DCE4FE9AB31BE1118119AFF8F68CDDE1 + uuid:DCF2F321362811DCA14E914CEB339C56 + uuid:DCF7F74BFE1E11DBB706980B4492EC22 + uuid:DD173F285D5DDF1194C1835A9D57A6A6 + uuid:DD1EEACD9CF5DB11A56C8D23356D16AC + uuid:DD2B43EEF855DC11BE829A09659DFF50 + uuid:DD3643D13746DE118E05E00A924D8CC5 + uuid:DD415EB295D9E011833FA20089605520 + uuid:DDA9CA837122E1119FAEEA2F4E77A014 + uuid:DE0C5FA950F8DD119C7388E2F822CAF7 + uuid:DE2B51B51DDFE011B872DF47B34C9F1C + uuid:DE373C29F98BDF1189DE89DD1EB5564F + uuid:DE59BDFE7D63DC11A252D8EC8E168194 + uuid:DE6E9BFA2C60E1118FB6F1C10C0F53AA + uuid:DE980A215AE6DE1190AEBAF6332FC6C0 + uuid:DEDC7A6FE299DE118058D51E8349D00E + uuid:DF0EA664E471DA1195D99CF85177EB33 + uuid:DF341B9BEE5411DA8803941B3025B829 + uuid:DF3E6C248070DE1182A4E4822D1896D0 + uuid:DF4BF7A9F697DA119D06EEDD0B0CD75F + uuid:DF94CBA467A4DD11B8439A379F2C7659 + uuid:DFB429D972A5DE11B580A970E358D09C + uuid:DFFAC8748B60DF11A5D6C5494D1F118F + uuid:E00B86C236AEDF118A3BA3427A14AB30 + uuid:E073D646AB63DD11852FAF8A5C0D60CD + uuid:E075AB88ECF5DE11926AEBC2FF05D13B + uuid:E0B26635BE91DF11B7B59B749F8F26BC + uuid:E0B4149F5DC2DE119E00B994825EB4D4 + uuid:E0B9A3470884DD11B440FA4BE94097E0 + uuid:E0CF8201C36ADD118C85EF2B0F2564BA + uuid:E0D9E4BB6B85DC119860A83F427F6A63 + uuid:E0DF88E0D51DDE11AFF2F0B2BF211704 + uuid:E0E8FD19FD09DC1182E9988DD7F97EF1 + uuid:E14D38BC8980DE11802FBDF7347E2BCD + uuid:E14DB26C9E47DE11BD50CFDD2E24F7E8 + uuid:E17A1128166CDF11A85DDBD0BB17D8AD + uuid:E1806FF218C3DE11B8EDE5DB62300198 + uuid:E18A83FB00E5DE11A79E9DD4E391CE31 + uuid:E199E028F0FADC11AB0C9CB0C186116B + uuid:E1A1CDB8D167E211AD1DC317555E6C4B + uuid:E1A86E916149E011AAB78355E6C89261 + uuid:E1AA6D282EA511DB8D9DE08AA1DBD1B4 + uuid:E1B0D40399EADE119C53A24FF402A9DD + uuid:E1EFA889B9B2DE119ADAFFBED641D007 + uuid:E1F896B492ECDD119A85D1C826247B54 + uuid:E25CE56E3D1DDD11A057863D5DE48030 + uuid:E27609DA6659E111ACF8AB7FC42E22D2 + uuid:E2797155BF78DC11BBCCBE617C756E16 + uuid:E2C23DCDE9E1DE118A78F10A17E74984 + uuid:E2C3D56F7696DE11BE7DC87E6F9C9063 + uuid:E2EC0A54465ADF11A10EEB26C5FC2C48 + uuid:E2F6CC03AF26E311BEE7995AF20CDDB2 + uuid:E30B4285ADD2DE11A1FFB39D8423E0B8 + uuid:E315F8FF2C68DD11B9A0883604D25409 + uuid:E3717B7DA22BDB11955CF8E1C0809A50 + uuid:E373617DB2CADF11B5F9D5B410AFCA09 + uuid:E37FE4776651DE11B0FF904ABD7E9C78 + uuid:E3970850424ADA11933ABDFC508CEC3E + uuid:E3BD36BC5997DE11891BA1F3B67D6AFC + uuid:E3CCC165BCE2DF11BE32FAF95C0AD0FA + uuid:E4029A3EED4A11DDB6D09B0A9CF5B514 + uuid:E43AED3DFB5CE011B41CB063F02B162D + uuid:E43CE336BAAADB11AAE38934EA825D61 + uuid:E4529CDB0587E011AF5FDA275B24B87D + uuid:E4AAD566E45DDF119B36D41797298A1D + uuid:E4B7DEE9001FDF11B6BDAB31141CBAD0 + uuid:E4CEA0152F1BE011A9EFC9F735703C71 + uuid:E4D41362EE6FDE11AA0FFE939976F766 + uuid:E4D9C16CDA04DE11AF9797CDADDEE077 + uuid:E524BA63245EE011B6818D741A0B17A1 + uuid:E578BA484BABDD1191D1C77158E2FF27 + uuid:E5797155BF78DC11BBCCBE617C756E16 + uuid:E58281810869E01197F1DD49D6E3F27D + uuid:E5ACAAC04E4EE11194E9BA8DD5E34DD8 + uuid:E5BFADBB3C61DF11A953FC3861B9A9FF + uuid:E5D64E1F241311DDBF50C49E22072263 + uuid:E5FC6ADE7D62DE119614CE358077696A + uuid:E603FC6D0289DE11B31DAAC1F1D93333 + uuid:E61386A5A9C8DF1191978567BEBB498A + uuid:E6207E7A4A1CDE119985B561E3D5A8C6 + uuid:E62B41618B86E011BD83DCE0D72154AD + uuid:E63B3D1C385EDD11A73AFB54CA37B984 + uuid:E687B8E3F9ECDF11B076F4C39C2F9754 + uuid:E6A85210D0F9DE118CEC9D0C91BD8577 + uuid:E6DB06D41B8211DF8F93CD79A2C655ED + uuid:E710B34B5B4EDD11AB3CE178BC4308B3 + uuid:E726AB67A1D7DE11A1AE8A388BF11FDB + uuid:E7382E9DE4A6DE118430D472A7C47389 + uuid:E7604D179934DE11BA33C78EE20CA33B + uuid:E766C8567592DE11900CCC65A9164B4D + uuid:E7746F1A939FDD1194A8A7C5E3FEC135 + uuid:E79A4A832DE0E0119500C872373672E0 + uuid:E7E1DA928290DE118186A311CB7DCC85 + uuid:E833B18E54E3DD11A1BA90DE18BA94B2 + uuid:E855AD280486DF118375D2DA57A8E7F2 + uuid:E86B79300398DE11A20FBE0C2E1A83C0 + uuid:E8711942FCD9DE11BEB2B63538B485CF + uuid:E8797155BF78DC11BBCCBE617C756E16 + uuid:E8B06B98C880DC11B579F4DF0C3EBBAD + uuid:E8C206385A2BE111BDE4BB48F8780D3A + uuid:E8E53D5DDD52DE11A63583E5225DA4A2 + uuid:E8FCCFED641BDE11B5EBB756DA861105 + uuid:E90701108CECDD11A766F9E05F0F38F1 + uuid:E955CEB8F079DD11B6AA81A0D174624F + uuid:E98AC9CE3D35DF11B3D0B64122426E24 + uuid:E9B56D1CCC1911DB974B99E8011E4801 + uuid:EA079D6D2C21DF11B3C7C23C35F18DBF + uuid:EA1E7A2D367ADE11928BC23B2ADBD6EF + uuid:EA2419F24D9AE1118DBA9268CE062AFA + uuid:EA2CE1D26C6EDF11BF4DD0BBD7AA5946 + uuid:EA51D841E8CEDA11B294CDAB0D6CE752 + uuid:EA5A7EA4B76BDE11B0FFDCF0E5F50557 + uuid:EA84CF2ACFC311DEBE5BFA835EFFFCB4 + uuid:EA9F40B70D51E1118009813B78715A11 + uuid:EAC17697D2B1DD11AF9DD61A7EB49A89 + uuid:EAD72BEAA8ADDD11BDC293BA3D5189CA + uuid:EAE73C41E3DCDF119A1BE0AD54EF73F5 + uuid:EAFD15F6A70AE411A3A7CA938A90D114 + uuid:EB01B3383110DF118ADBB50293FFA6F8 + uuid:EB2AC291BB84DC11939198AA96A9BBFC + uuid:EB3FD1E8EEA5DD11862FDE6F8E15A5CD + uuid:EB578C126F49DF11AF02D879EC220177 + uuid:EB69B1888606DE11B380C9DFFF5EDB6B + uuid:EB70A5594CD7DB118F5AE87241EB429D + uuid:EB8163F6CA1ADE11AF42C90A292BFA1E + uuid:EBA136F9DCC2DE119943E2ECA51B2BEC + uuid:EBCF4CECF7D6DF118D478B234E439CCC + uuid:EBF528FCE6BEDD118A8B85DE1604DED8 + uuid:EC04855384BCDE11863CF2C4171DB8E5 + uuid:EC2ED3E43D7EDE118D1FB1DE08372EB7 + uuid:EC35342154E7DE11842584502EE667D8 + uuid:EC440A673C61DF11A953FC3861B9A9FF + uuid:EC845CCEC620DF118EA6B617D0FB3CBB + uuid:EC897FCF9130E4118776B0BCC302B24C + uuid:ECB78735274DDE11B01EEA9B67CC9BAE + uuid:ECC657FD80C1DD11ACEA981203A8883E + uuid:ECDDFCC8E40DDB119CE4D46750EECF29 + uuid:ECF2CF3148CCDD1191EDC77F6E1E6D0D + uuid:ECFE55EE1E8DE011BA3783BB6FD49B33 + uuid:ED0F8DF3ED2DE311B3FCFB3110ECB106 + uuid:ED3BCEFBD909DE118D7DBDCEE5C551BE + uuid:ED54B44717FED91184928417AD28DAF0 + uuid:ED6B952B1929DC11A87A989FF1EF9301 + uuid:ED6BE8B98E77DE11838DF708618B4B79 + uuid:ED8D85735E42DD11A1DCD26843D97074 + uuid:EDB7AB3A0DF8DF11AD3ADC75175B5B04 + uuid:EDF36F0892EDDD1191368D8E8CF8166F + uuid:EE257418EA2C11DC9D72F44508055A67 + uuid:EE2B0930F7BEDC11AEEA8E30DA10306C + uuid:EE37C8BACFBA11DBB548C60FD1B0D224 + uuid:EE7C48F8F3F111DAAEEC90C1F68FD63E + uuid:EE8CBA0F2D46DE118E05E00A924D8CC5 + uuid:EEE02BD40C3CDF119993BFBF70C9057D + uuid:EEEC75A1BBE2DF11BE32FAF95C0AD0FA + uuid:EEF7F16FEF89DE11B1C4D65EF43688A3 + uuid:EF3B704B86D4DC1187D8D42517BABD21 + uuid:EF47191E90AADD119F17CB9128B3DE43 + uuid:EF7A72CF65BBDF11B4828D5678632FEC + uuid:EF9A4A832DE0E0119500C872373672E0 + uuid:EFAF9FD0A18ADE11A91A91D6A7033EDA + uuid:EFB3F5FF2687E1119393B1D1CA5FE329 + uuid:EFBA651AF05EE011A5F5D9DDB3BCBA74 + uuid:EFE92B5982DFE0119780E3E617CFD216 + uuid:EFED9F6D3BB5DE11809BA989B0D77432 + uuid:EFFDBDE385C9DE118459E3AD70B5474A + uuid:F02F94D2B47CE1118D32DAEF41DBF18C + uuid:F03B88B94143DE11A044946A9E040D90 + uuid:F080B4EABFF0DA118DA697055230BC2F + uuid:F08C582C2AD0DD118149E96B39144516 + uuid:F09708BE831EDF118AC4A001811BCC94 + uuid:F09F2613E9DEDB119D6DB676FC45D42B + uuid:F0BA6F6CF9D9DF1192ABE879604B131D + uuid:F10C79062C46DE118E05E00A924D8CC5 + uuid:F111EEDBE0C3DD11B728D90CAF385816 + uuid:F1605AF76BF4DC11AC2380CCB6841119 + uuid:F1B0B041E903E11186E0A6C6167DB995 + uuid:F1B9E5A31F68DE11A75E97F2843CBA46 + uuid:F1C813163A80E01189EBB7E34DEA33EF + uuid:F1D22B66985111DCBD2AB8FD22D3F06F + uuid:F24060ACBAF4DE11AEA2DE099117F7C2 + uuid:F2532DEC9390DD119A58B947850C8B91 + uuid:F27E37228E3DDE118480CBE208893CBE + uuid:F29DB2290916DE11B8D5C8AB8C8C14D4 + uuid:F2A6612DA2DCDC1189A1A8FD6CF2EF5D + uuid:F2A7CF474B9EDD11B89A9D3E0B652745 + uuid:F2D6EF2EB584DC11939198AA96A9BBFC + uuid:F2DCE7439692DD11A7FCF60B608912AE + uuid:F2E246D37C49DF11AC9CF655FDB30ADF + uuid:F2EC75A1BBE2DF11BE32FAF95C0AD0FA + uuid:F2ECCF947EDBDD119D77D4CFAFCA39D6 + uuid:F2F485C61192DD1197A2A37E16C85BE3 + uuid:F367D3FB2F8DDC118D0FD4DC7FF5E7B5 + uuid:F37B127E0F30DF11814293B6F073E061 + uuid:F39442A92117E01183C0ED8ECACB74CF + uuid:F39CBEE4B62311DCB80BE840D518DBA0 + uuid:F3C43B64422EE111AB7FE12965D95606 + uuid:F3D3DC842E58DD118DA1B3EB255078B5 + uuid:F41C05E33C78DC11AA90CABED078D1A9 + uuid:F4297B0AD6A7E0119054AEDAB6503153 + uuid:F4414A038842DF119DE2BAF8DFB739C8 + uuid:F4436D21EE4211DDA05AD7CCBB969395 + uuid:F472486FFE48DF11AFD0F44B53BD00B3 + uuid:F49526DAB9FEDD119830EC4068CCCA98 + uuid:F49F2613E9DEDB119D6DB676FC45D42B + uuid:F4BCB835CD84DA11AEE3C92BF541D7B5 + uuid:F4F3FA0764BBDF11B4828D5678632FEC + uuid:F4F6040DACB7DD11AB8CC0FD3B82D322 + uuid:F4FFEFC78E14DE11A6CBA927ABCABDF4 + uuid:F519885B3020DD119707FC96415C4EBD + uuid:F53BC9C8E416DD11BE9ABE1C8BB74D84 + uuid:F53CEF751C4BE111980CD23DCC274A5C + uuid:F56044073506E011B693D8C402051E54 + uuid:F565DBE78868DE11A87BD8ABF4CB75E2 + uuid:F56E4EF00821DF1184FDB13FFFC145A0 + uuid:F5CB24D0D45AE0118E1B942C8B1CB589 + uuid:F5D615C8D991E0118FEBC1BD7FE80A73 + uuid:F5E54A230C69E011BAE4A0F3F205CB0C + uuid:F5E5AB4AD49A11DB9020B3FBE099D24D + uuid:F5ED6B37E8F0DA118DA697055230BC2F + uuid:F5F45A99162CDD11915FF91DCAA4909A + uuid:F5FD6AA4E20B11DB8469FFD2C7550628 + uuid:F61231BE1B3EE111B2A3FC3479A88392 + uuid:F625341EBE14DE11B2D289656A472689 + uuid:F626B67D8860DF11A9018B722DA7EE55 + uuid:F67A7495CDCEDF11910DE6F1783AED6A + uuid:F67C30CDB77ADD11AF71EA843958E780 + uuid:F687F5C2C940DE118355BEB09A7E15BA + uuid:F688CEC7C81EDE11BDCAEAFD442BB9B7 + uuid:F68CBA0F2D46DE118E05E00A924D8CC5 + uuid:F6C288398B37E01186559DC87C6BC377 + uuid:F6CCDE5069E2DF11BB339E11763474C2 + uuid:F6D3A7D09955DD119A1384B593846576 + uuid:F7092FDE564ADE1192A1FA09F9E14EEB + uuid:F743186D6E8B11DFAE9CA09BE5A960A2 + uuid:F7607D5ED0AEE1119138BA5E617E2299 + uuid:F778A32017D5DD118DAAF81B20F8DCAB + uuid:F7970963979411E0AA3BE016BA92F3E7 + uuid:F7BE264568E9DC1189EB80B09F1BBACE + uuid:F7D80266DEB0DD11AA99F19EE1944BF1 + uuid:F7DB45588240DE11AE82B07C1BA09C9B + uuid:F80F673BE43ADF118B8DB316A394A1F9 + uuid:F836B091D059DE11803AC66BBDC241B7 + uuid:F847D28DA5B9DD1184FD87D58E7A12B1 + uuid:F87A0150E321DD118DE6805E4FAF4697 + uuid:F881A3645B8EDC118AEDED463680791A + uuid:F8838F0B3646DE118E05E00A924D8CC5 + uuid:F88C85E01F6211DBAD06B9F82D8DF569 + uuid:F8A0C7BB2F1BE011A9EFC9F735703C71 + uuid:F8B67F61CFCCDE119C91C660DEF8E17A + uuid:F8C26AF876C5DD1195938FFB194191A9 + uuid:F8C8948B2946DE118E05E00A924D8CC5 + uuid:F8F4825CCD20DF11BAFCA185A4C55DD9 + uuid:F9172BFE290CDD11B4ACE0141CDAB38A + uuid:F9191FCD2CF211DE8F0F9F3E4CB2F96D + uuid:F95C1A2E2578DC11ABB7E7B0CF34D78E + uuid:F97486C1E24FDF1183C7996710D099DC + uuid:F99A2A6E55CADE119E48AA895AAD2D83 + uuid:F9C28AB70279DE119AF4C11AE6D6D880 + uuid:F9E028AC8D86DE11AC44B5DAC8D6211E + uuid:F9F9B4FA6136DD1185F2EBC2FBBFDE1F + uuid:FA25F8056DE411DD81D4FD93EA6ACF84 + uuid:FA3056B93AA8E01195F9F14B578BEAA2 + uuid:FA59A0A7F345DD118454C27C6B2C686E + uuid:FA605AF76BF4DC11AC2380CCB6841119 + uuid:FA7A634E25F2E211BCECDEEB2A16B499 + uuid:FA8A792E3F44DF11AAF5A3AC0E82A8D4 + uuid:FA99F5D8DFF8DF1195CC8AC4A9472649 + uuid:FA9D44F8CEE3E0118C1597277039DC3E + uuid:FB0926BA00F0DE11ABC6EB7DE532ADD8 + uuid:FB15F1B5CD89D811A66BCAE379896B54 + uuid:FB403B482096DE11B9D5D0FA4B3B08BA + uuid:FB6169574598DF11924199839A6C7CFC + uuid:FB66D5244AB2DD1186A4E35B74E27B2E + uuid:FB6F068B9E49E011BDF5E7C9FD6E41C3 + uuid:FB88DE6D8610DE11BB08D609A44D78D6 + uuid:FBF0D74E9065DF118856BDA71FDAC499 + uuid:FC0AB2E06B73DE11A73FD0389B748AFC + uuid:FC138C5696CCDE11B53FAA0A80651A08 + uuid:FC22870B81CEE111BA15A74276C60E6C + uuid:FC280BD7AE72DC11823F97243639BAF6 + uuid:FC2F6234841CDD118F0CF2F69CE38C40 + uuid:FC6284395CDFDE11B366D9EF74DE4B3E + uuid:FC927F96EFD9DF11891CBF8209472500 + uuid:FC95A8992CA3DE119998FBA423EDC580 + uuid:FCA7CFCEBC84DC119FE29F83F850F256 + uuid:FCBE73390FD411DE8097E3A502C56252 + uuid:FCC438CB411DE11190F496A082ACB8B3 + uuid:FCCCD4402D37DE11893FA46A47EA0CAB + uuid:FCCCE08087E3DE11B9F9DC8249B5DA23 + uuid:FCE29D83DF54DC118ECC91634B65662B + uuid:FCFADF2D7A68DE11A87BD8ABF4CB75E2 + uuid:FD3CAB94E740DF11B86BCA79B8B8B185 + uuid:FD932583E71BDD11AB0C800EA17DBA02 + uuid:FDD4EF7D8631DF11A186C9CB6A6D6C95 + uuid:FDECAE6AE096DF1187E7BD42D17D5B2B + uuid:FDF19827BB90DE11B739D0304D5A3551 + uuid:FDFD6A7001ABE0119729BE0C738A8FD2 + uuid:FE39AC1F1DA9E0118195F757078F54BE + uuid:FE3A862C3850DD11BEDDFA5393F3E958 + uuid:FE4E366D55EBDE11B73DBE257B556A3A + uuid:FE4F702BD5B4DF11B829D936200E6B8A + uuid:FE59EA925E85DF11BC6CC644E19F2D31 + uuid:FE6003D0F07CE01187BDD1DB97D13A51 + uuid:FE81D1F20A9FDE1182C399957BA3D7DF + uuid:FE99B6D18729DE11BB0EC26859A396DC + uuid:FE9E3C299458DA11BB56DD15A535DE1B + uuid:FED7768A2A46DE118E05E00A924D8CC5 + uuid:FF05737ED74011DD9058E77DFC37DF5B + uuid:FF12190A2E07E11195FC87871E0A3C48 + uuid:FF1E4886B647DE11B799E47B6A8B90A9 + uuid:FF47D28DA5B9DD1184FD87D58E7A12B1 + uuid:FF79D4767969DF11B0C7F2016358B619 + uuid:FF8F480B02C1DE1183479F46E7309C67 + uuid:FF90717AA27BDE11B230CD44A414008D + uuid:FFCBC65828E5DB11BC3EC8BAB693B0A0 + uuid:FFE4355518A1DE11B97A955C1491AF1F + uuid:f46e7762-855c-480f-add4-25b77917e2af + uuid:faf5bdd5-ba3d-11da-ad31-d33d75182f1b + xmp.did:0022CEFAE2B2E011A523D045C5CAF208 + xmp.did:006B7D713E266811910997920F9A7541 + xmp.did:007873BD8225DF119491B0761830187C + xmp.did:00801174072068118083885AD9345809 + xmp.did:0080117407206811871FA882204C4943 + xmp.did:008011740720681187E6D3F1FEEE7E61 + xmp.did:00801174072068119109893FE15E4D07 + xmp.did:008011740720681192B08162DEA350D1 + xmp.did:0080117407206811A7BACB4923F63DF1 + xmp.did:0099D2A3072068118083FF7232A99147 + xmp.did:00AF5CB2622068118DBBCAD1BA2A55A1 + xmp.did:00C055892E236811994CF266AE840D71 + xmp.did:00E9E4423546E011949E88D01D1DBEE5 + xmp.did:00F6BB86BD2268119109B03C8042DADE + xmp.did:00F7F89DF956E011921BE2DE87A39B49 + xmp.did:0106C9E1E1CCDF11B3D2E2FA9AC69EF3 + xmp.did:01121151DF0FE111B634D2379DA4DCE9 + xmp.did:012FA4BF6AF6E111A087DB5677009DE9 + xmp.did:0132A68E5BE4E011970C9B8884C09F82 + xmp.did:014075DACAC7DB11B1C9AC2E92D63EEC + xmp.did:015285055B6FE0119058BF5C2DFF090A + xmp.did:0153B9CE159BE011A42DEC14C3EFCAEC + xmp.did:0180117407206811808388714877E726 + xmp.did:01801174072068118083C1F64789D0A3 + xmp.did:01801174072068118083C4FE05237EAC + xmp.did:01801174072068118083F8C3CE47E75D + xmp.did:01801174072068118083FA9F955E2000 + xmp.did:018011740720681181A2800D03CA677E + xmp.did:018011740720681183458E2CA23B450D + xmp.did:0180117407206811871F8EA3F2A2AE1D + xmp.did:0180117407206811871F91AE438A10BA + xmp.did:0180117407206811871F9265E6607F45 + xmp.did:0180117407206811871FA7DDB6344DDF + xmp.did:0180117407206811871FB03D861007B1 + xmp.did:0180117407206811871FB222890A0E4A + xmp.did:0180117407206811871FB3C62B0C2554 + xmp.did:0180117407206811871FC852CC88A456 + xmp.did:0180117407206811871FDB7C73EC7AF4 + xmp.did:0180117407206811871FDC2E83A29D5C + xmp.did:0180117407206811871FDDF97733816A + xmp.did:0180117407206811871FE828E122F472 + xmp.did:0180117407206811871FE8DD2340C0B0 + xmp.did:0180117407206811871FE9333920AD6A + xmp.did:0180117407206811871FEEB56D1E743B + xmp.did:0180117407206811871FF1961D211D67 + xmp.did:0180117407206811871FFA8C40027C33 + xmp.did:0180117407206811871FFBB65EC420B1 + xmp.did:0180117407206811871FFFE0F6FD6607 + xmp.did:018011740720681187E2AD1A500D39E0 + xmp.did:018011740720681188C6808AE1FD4ECD + xmp.did:018011740720681188C684EAF6EB3EED + xmp.did:018011740720681188C68CC6C803710E + xmp.did:018011740720681188C6A2A17C791225 + xmp.did:018011740720681188C6B458635781F9 + xmp.did:018011740720681188C6C612837B0247 + xmp.did:018011740720681188C6C8FB64E3077F + xmp.did:018011740720681188C6CD649893B632 + xmp.did:018011740720681188C6D36B8FEF0867 + xmp.did:018011740720681188C6DEB6A7380E02 + xmp.did:018011740720681188C6FA5072DE6169 + xmp.did:018011740720681188C6FD88E3797378 + xmp.did:01801174072068118991A4D2E16FCA21 + xmp.did:01801174072068118A6D856087352BA7 + xmp.did:01801174072068118A6D894AE997EB0E + xmp.did:01801174072068118A6DF13459D8D59D + xmp.did:01801174072068118C14CA160A1107BD + xmp.did:01801174072068118C14DAE1DD02101A + xmp.did:01801174072068118C1AF9FE79A48AD4 + xmp.did:01801174072068118CE8FAB7EAEEF1DA + xmp.did:01801174072068118D47F87005A1FB05 + xmp.did:01801174072068118DBBA05AD59D67BF + xmp.did:01801174072068118DBBC14F0DD2168D + xmp.did:01801174072068118DBBC854985CE038 + xmp.did:01801174072068118DBBEBC78ED3523A + xmp.did:01801174072068118DBBFE8AC30FEF37 + xmp.did:01801174072068118E18BAE154229D5A + xmp.did:01801174072068118F6286141DE4764A + xmp.did:01801174072068118F629A756ADA4CD0 + xmp.did:01801174072068118F62C5774A079733 + xmp.did:01801174072068118F62CAC4F27C1618 + xmp.did:01801174072068118F62DBC328695FC3 + xmp.did:01801174072068118F62E2D7B95B1B14 + xmp.did:01801174072068118F62EB2ADE46D273 + xmp.did:0180117407206811902AD3FB78EFDDF9 + xmp.did:018011740720681191098FD20CBDF1C4 + xmp.did:018011740720681191099C046A8759D2 + xmp.did:018011740720681191099DB605A7AC59 + xmp.did:018011740720681191099F8626CB41AB + xmp.did:01801174072068119109AC6131693E65 + xmp.did:01801174072068119109ADEA1A63C6C3 + xmp.did:01801174072068119109AF3A50E294F5 + xmp.did:01801174072068119109BD18F96FE5FE + xmp.did:01801174072068119109C37490BE3834 + xmp.did:01801174072068119109D5BE92FE2285 + xmp.did:01801174072068119109D8AADCC33AE2 + xmp.did:01801174072068119109DA99C2E792B3 + xmp.did:01801174072068119109DAEE9E19A282 + xmp.did:01801174072068119109DBAD7F41B23D + xmp.did:01801174072068119109E22328FDF13B + xmp.did:01801174072068119109E8810C5BC784 + xmp.did:01801174072068119109E952C7CE3CC6 + xmp.did:01801174072068119109F305646EB57D + xmp.did:01801174072068119109F541586A020D + xmp.did:01801174072068119109F730A47FD09A + xmp.did:01801174072068119109F981883825E0 + xmp.did:01801174072068119109FA297A7A5904 + xmp.did:01801174072068119109FA9234D88D4E + xmp.did:018011740720681192B08AE26BD827F7 + xmp.did:018011740720681192B08F00D0760E00 + xmp.did:018011740720681192B09184D5478EBC + xmp.did:018011740720681192B097F0C9D8B91A + xmp.did:018011740720681192B097FB589AB6DF + xmp.did:018011740720681192B09C403CFF3A3B + xmp.did:018011740720681192B0A5BCFE59DE75 + xmp.did:018011740720681192B0A9757DD3D056 + xmp.did:018011740720681192B0BAA904DE0F8D + xmp.did:018011740720681192B0C9C82D025C09 + xmp.did:018011740720681192B0D93A7E1A012D + xmp.did:018011740720681192B0DD109A0A1187 + xmp.did:018011740720681192B0E6597ACE8B8F + xmp.did:018011740720681192B0E8A60AAA7296 + xmp.did:018011740720681192B0EDBBCA87BC04 + xmp.did:018011740720681192B0F39C7BC094AF + xmp.did:018011740720681192B0F77B00BE432A + xmp.did:018011740720681192C7D0F81AAEB882 + xmp.did:018011740720681192D8E7A64109317F + xmp.did:01801174072068119311E5933D41E0BA + xmp.did:0180117407206811956CDA996C733812 + xmp.did:018011740720681195FEFFFEFFCA1EA0 + xmp.did:018011740720681197A5B386C33BAD50 + xmp.did:018011740720681197A5D5A987669EFD + xmp.did:018011740720681197A5DAF2583A0A4B + xmp.did:018011740720681197A5F6607BBC0A7C + xmp.did:018011740720681197E2D338DF4DD135 + xmp.did:0180117407206811994BE3C8EAA36895 + xmp.did:0180117407206811994CBC5AD46818FE + xmp.did:0180117407206811994CD736DBCE5A2A + xmp.did:0180117407206811994CEBF7BEB94108 + xmp.did:01801174072068119A56CF70087969A4 + xmp.did:01801174072068119A889F688513D349 + xmp.did:01801174072068119DEDC6890B672B73 + xmp.did:0180117407206811A084BF28FE3D9E61 + xmp.did:0180117407206811A456E5EBB039358F + xmp.did:0180117407206811A610925F68191C15 + xmp.did:0180117407206811A61390C44B611B3F + xmp.did:0180117407206811A613E041CF699A39 + xmp.did:0180117407206811A75BA79F2EF235A1 + xmp.did:0180117407206811A7B7C9B509533D97 + xmp.did:0180117407206811A7BA892F3C2B2780 + xmp.did:0180117407206811A7BAC1A0D730199D + xmp.did:0180117407206811A7BADF4AD3269966 + xmp.did:0180117407206811A7BAE496507CC015 + xmp.did:0180117407206811A81C97AE71B8FB6D + xmp.did:0180117407206811A961B7EAC21494B8 + xmp.did:0180117407206811A9B5D91FE83CA8E3 + xmp.did:0180117407206811AB0888EC9D8B85A6 + xmp.did:0180117407206811AB0891B79122B22D + xmp.did:0180117407206811AB08B40A0C00B04E + xmp.did:0180117407206811AB08E8E8EE3F0289 + xmp.did:0180117407206811ADA7FD28EAB4B56A + xmp.did:0180117407206811AE569E92DE925BD5 + xmp.did:0180117407206811AEC7ACE16F2ADB0F + xmp.did:0180117407206811AF3396C55E9F4535 + xmp.did:0180117407206811AFB38F92BB3DC2AA + xmp.did:0180117407206811AFFD95917D33B746 + xmp.did:0180117407206811AFFDC4BD99C4FEE6 + xmp.did:0180117407206811B181E22AFDB65FD3 + xmp.did:0180117407206811B18DCF75FC771844 + xmp.did:0180117407206811B1A481173F3B2091 + xmp.did:0180117407206811B1A4C38293BFDEA8 + xmp.did:0180117407206811B1A4D4D1BCD8A443 + xmp.did:0180117407206811B1A4F54E85412D5D + xmp.did:0180117407206811B2F4B2F0A10807CB + xmp.did:0180117407206811B34BBA3E1B4D7703 + xmp.did:0180117407206811B4B9F71F0573777A + xmp.did:0180117407206811B4F2F7704D6D8A98 + xmp.did:0180117407206811B6999C7CB007D31E + xmp.did:0180117407206811B80EEB191CE2BB99 + xmp.did:0180117407206811B8758AE2A6109F23 + xmp.did:0180117407206811B9E7B4064FBED7A5 + xmp.did:0180117407206811BA06DE2D23900A1F + xmp.did:0180117407206811BB8E98E31A3F12F9 + xmp.did:0180117407206811BCAAD4EE23A902AE + xmp.did:0180117407206811BD3592217D9108E4 + xmp.did:0180117407206811BEDC895A14142905 + xmp.did:0180117407206811BEEAF2CDF8DA2015 + xmp.did:0180117407206811BF9BEF79D798C243 + xmp.did:018CE36F7A7BDF11B7509EF0353703B4 + xmp.did:019F1ECABC2ADF11958F9AC533722675 + xmp.did:01C668CB2C3A11E0B24BF72F16719A14 + xmp.did:01C66F18E5C6E011BEF0A37AC8AFF6B8 + xmp.did:01CD58562320681188C69003DB447B4B + xmp.did:01D3BC0A0398DF118E0DFBCC39F1D70C + xmp.did:01E2ABBAC7D7DE119CC5DC2D0C352B47 + xmp.did:01E78796BCB6DF11A0F68E8017D3BBD0 + xmp.did:01E817765753E011B4ADA05F9FBFB5F3 + xmp.did:01EDA34036EEDE11A8DE8E9B24B12DAF + xmp.did:01F556562CFAE0118147AA1F55CE6EEB + xmp.did:0204746FDE39DF11B02B9194132CBA8B + xmp.did:02099B766D20DF118026852479174933 + xmp.did:022B82EA26ADDF11AAD18B5E294DA765 + xmp.did:024F733C4CD9DF1181859156DDB527B7 + xmp.did:026087D903EADF11B656F49380998864 + xmp.did:02649246152168118A6DC8429994DB80 + xmp.did:0274AA50BBD9DF11BFD1959D5E34049B + xmp.did:027CDBED1E37E2118E37E38874568DAA + xmp.did:028011740720681180838223AEF978C2 + xmp.did:02801174072068118083A5C577F079A8 + xmp.did:02801174072068118083DFDF36644483 + xmp.did:02801174072068118083E6B62CE1EF03 + xmp.did:0280117407206811822A9DB99EAC3A6B + xmp.did:0280117407206811822AD2268457245B + xmp.did:0280117407206811822AF3604ED7A7FA + xmp.did:02801174072068118425DC058100E66F + xmp.did:028011740720681188C6A298443F10AC + xmp.did:028011740720681188C6C9584A0CE4D6 + xmp.did:028011740720681188C6EA7AFA84B3CB + xmp.did:028011740720681188C6FDE500FF8673 + xmp.did:02801174072068118A6D940E793F1A10 + xmp.did:02801174072068118A6D9937AF694056 + xmp.did:02801174072068118A6DE8CC51352B1F + xmp.did:02801174072068118A87FFDBA1F29826 + xmp.did:02801174072068118BAACF3C48947CCA + xmp.did:02801174072068118C14C8C4124EEDD3 + xmp.did:02801174072068118C14CA160A1107BD + xmp.did:02801174072068118DBBE2F39C58F24B + xmp.did:02801174072068118E22CFAD9A80AC15 + xmp.did:02801174072068118E8B95801AA5B653 + xmp.did:02801174072068118F62A16D65FC175D + xmp.did:02801174072068118F62A2F6C51121F7 + xmp.did:02801174072068118F62B88BBDD1F4FF + xmp.did:02801174072068118F62D0444FDFF9FF + xmp.did:02801174072068119017A96FBDDD20D3 + xmp.did:02801174072068119109906E1CD89C48 + xmp.did:02801174072068119109AC6131693E65 + xmp.did:02801174072068119109C65A70401340 + xmp.did:02801174072068119109C94BE3FB6395 + xmp.did:02801174072068119109CFB75EA0347B + xmp.did:028011740720681192B0A966EE509B88 + xmp.did:028011740720681192B0C3F69947135E + xmp.did:028011740720681192B0DEBFF74CEF5E + xmp.did:028011740720681194578AA50D8ACBC3 + xmp.did:02801174072068119457F50BDC4298B1 + xmp.did:028011740720681197A586468563C367 + xmp.did:0280117407206811994CC3CDF5269AA3 + xmp.did:0280117407206811994CDFAA02EEDD50 + xmp.did:0280117407206811A7BAB57B7B837883 + xmp.did:0280117407206811A961869B67C9859F + xmp.did:0280117407206811AC988E10CC0CC7E7 + xmp.did:0280117407206811B840C1437888502E + xmp.did:0280117407206811BB8E98E31A3F12F9 + xmp.did:028C7A280CE5DF1180D1A9451B8CCA34 + xmp.did:0296CC95151CE011AEA8AA9AF7424CA0 + xmp.did:02B2C6FC1D00DF11B761857F54ADC13D + xmp.did:02F8422BA0EBE01194B0DEC8760B510E + xmp.did:030142E8BFD7E011B146973C1583A83C + xmp.did:03068E8C132068118083AEAC33B78D50 + xmp.did:033E5A00810DE211A8ADB26A1148B1A4 + xmp.did:034149BD5AE3DE118C7A95A6BECE17A5 + xmp.did:034EBEE178B3DF11B324D94775C41431 + xmp.did:03801174072068118083981EC9F9299E + xmp.did:03801174072068118083A2FF619D3EC1 + xmp.did:03801174072068118083AEAC33B78D50 + xmp.did:03801174072068118083B64CA7CE459E + xmp.did:0380117407206811822ADFD621F48DE4 + xmp.did:0380117407206811871F81E8BB0F82E6 + xmp.did:0380117407206811871F826402051404 + xmp.did:0380117407206811871FFAC63C818640 + xmp.did:038011740720681188C6823329C82B91 + xmp.did:03801174072068118A6D9937AF694056 + xmp.did:03801174072068118A6DD9F43BB7607D + xmp.did:03801174072068118C14A49D02AC9755 + xmp.did:03801174072068118DBBE015FB3CB881 + xmp.did:03801174072068118F62E98997340698 + xmp.did:03801174072068118F62FA26B1D2377A + xmp.did:03801174072068118FEDF87473FF36A0 + xmp.did:03801174072068119109A42C17814AFE + xmp.did:03801174072068119109E219C1666972 + xmp.did:038011740720681192B08C886B6D489C + xmp.did:038011740720681192B0AAD83694CC10 + xmp.did:038011740720681192B0B7BE67E15210 + xmp.did:038011740720681192B0DD1EFA0D88E6 + xmp.did:038011740720681192B0F9D33019F8E4 + xmp.did:03801174072068119346F274C058D55C + xmp.did:038011740720681194288658274AEA5E + xmp.did:03801174072068119457975C6F85D3CE + xmp.did:038011740720681197238F25F2FFB081 + xmp.did:038011740720681197A5AC1352A6FF54 + xmp.did:0380117407206811A237BBC8AE7066D6 + xmp.did:0380117407206811A61392B8F8BEF962 + xmp.did:0380117407206811A62AF2380AEA6A44 + xmp.did:0380117407206811A7D4DF8188E07E2E + xmp.did:0380117407206811A802A3BA24EF276F + xmp.did:0380117407206811AEE4ECC20A5D0880 + xmp.did:0380117407206811AF52D0DBA53AB1DA + xmp.did:0380117407206811BD209C3F4437B116 + xmp.did:0391CB98AF78DE118520F7DCD0D53ED3 + xmp.did:03A30ED2D246E01181FBAD6FFAB64B28 + xmp.did:03A782D89CE111DF9884BE88F83DAA1F + xmp.did:03AD83C7FB37E111A1AFD6438812FE1D + xmp.did:03C3E86C98E4DF11B11D84FE84A5BCF4 + xmp.did:03DCC0DE2242E11187A8CE10F62D9BF3 + xmp.did:03DE75BDC8EFDF1199E2EE90A8025B42 + xmp.did:03E817765753E011B4ADA05F9FBFB5F3 + xmp.did:04147C144830E111A238F3B8EC015E1C + xmp.did:046A4C3D4E59DF11ACEAEDF4366FC01B + xmp.did:04729E409DB1E111A5D6A14D3FDF7115 + xmp.did:04801174072068118083AEAC33B78D50 + xmp.did:04801174072068118083C045A5A1E25C + xmp.did:0480117407206811822AB4A8EB4B7346 + xmp.did:0480117407206811871FF0EE6AD5790B + xmp.did:048011740720681188C6B3D316FC5F20 + xmp.did:048011740720681188C6BBFAF87E6B92 + xmp.did:04801174072068118A6DEC27AEB5D46C + xmp.did:04801174072068118C14B8B7A921B342 + xmp.did:04801174072068118DBB8E5F440DA0A8 + xmp.did:04801174072068118F6291CE7E8C2677 + xmp.did:04801174072068118F62A4F770FD732A + xmp.did:04801174072068118F62DB3F26862A68 + xmp.did:0480117407206811910999E172ACEF41 + xmp.did:048011740720681192B087CB08EF012F + xmp.did:048011740720681192B0EA0E866BB245 + xmp.did:048011740720681194578AA50D8ACBC3 + xmp.did:048011740720681195FED5E9D317291E + xmp.did:0480117407206811994CF4AD3E22FF6B + xmp.did:0480117407206811A6D9CABE601DD596 + xmp.did:0480117407206811A961A4F3E166B93F + xmp.did:0480117407206811B6188380968D4DC3 + xmp.did:0480117407206811B6999C7CB007D31E + xmp.did:0480117407206811BC8AD830EE1F4BC0 + xmp.did:0496CC95151CE011AEA8AA9AF7424CA0 + xmp.did:04AB61EF072068118C14CA160A1107BD + xmp.did:04B66156752068119457D3EA51DB7841 + xmp.did:04BB01059CF711E08A9C913C073A663E + xmp.did:04E55EBD6020681188C6D9EA900BA018 + xmp.did:051CE539DA8BE011A293E089AAF95ABE + xmp.did:051D78B86502E21184DED19555EB3FE8 + xmp.did:055B4E80B3DFE0118151F44D97AD5EB3 + xmp.did:055E07793915E011BDCAB10E56B8BB01 + xmp.did:0570A0C40D24E11188AAEAA5045A2D4B + xmp.did:0580117407206811808387D48DB3A4B0 + xmp.did:058011740720681180838D77FED7457F + xmp.did:0580117407206811808396B21CCB80A1 + xmp.did:058011740720681180839CCCC9C24C7D + xmp.did:05801174072068118083AEAC33B78D50 + xmp.did:058011740720681180B4DB6FCDC6F1A9 + xmp.did:0580117407206811871F834B9271D32D + xmp.did:0580117407206811871F9617A759D4E6 + xmp.did:0580117407206811871FDCFA14F2CA87 + xmp.did:0580117407206811871FDD35491E8EDD + xmp.did:058011740720681188C6DBB8DBD34557 + xmp.did:0580117407206811891D9A76213AD321 + xmp.did:05801174072068118C14A56C815EEBE2 + xmp.did:05801174072068118C14B4DD23E1D3A1 + xmp.did:05801174072068118DBBDD8740606419 + xmp.did:05801174072068118DBBFA659908F426 + xmp.did:05801174072068118F62898800582DD4 + xmp.did:05801174072068118F628C5BC7FF1E1F + xmp.did:05801174072068118F62984C1217D466 + xmp.did:05801174072068118F62AAC437B0569A + xmp.did:05801174072068119098DA7C50E50539 + xmp.did:058011740720681192B09470F75BAE8F + xmp.did:058011740720681192B0B03D2B78CFDD + xmp.did:058011740720681192B0B61BEB8C9F01 + xmp.did:058011740720681192B0D23C6B26FA61 + xmp.did:058011740720681192B0FBBF273EF816 + xmp.did:058011740720681197A597D191AFA363 + xmp.did:058011740720681197A5DB8368FE3A9F + xmp.did:0580117407206811A19FB5BA4D4BF9C3 + xmp.did:0580117407206811A440DAC4D3AECDA0 + xmp.did:0580117407206811A7BAADB4251DCAF5 + xmp.did:0580117407206811A961C2694732FD95 + xmp.did:0580117407206811ADA39FC4783CF9F8 + xmp.did:0580117407206811B2F4B2F0A10807CB + xmp.did:05B3A7C0E52FE0119481B2AB2F1C53E4 + xmp.did:05CF7E453FCEDE11AC1FBF9D231E361F + xmp.did:05D720460FB1E01185478864776A63BE + xmp.did:05F558C2BA0DDE11966CA376FEFD02A9 + xmp.did:05F62454A04B11E0AB64DC5078560F42 + xmp.did:05cf0a5c-82f6-bf46-a007-def5fbc34765 + xmp.did:062055f4-086c-e846-9832-4089e30df7e2 + xmp.did:0629BE83ED0EE311A3E9992A0C1C99C8 + xmp.did:064147651220681192B0BACAFE6A899F + xmp.did:064318E581A6E01198E4BABA0C846270 + xmp.did:06729E409DB1E111A5D6A14D3FDF7115 + xmp.did:06801174072068118083B98A8E501C2D + xmp.did:06801174072068118083C045A5A1E25C + xmp.did:0680117407206811822AB1921B4CF57B + xmp.did:0680117407206811871FC852CC88A456 + xmp.did:06801174072068118C14EA6C2BE28AF3 + xmp.did:06801174072068118F62FD9B9E717B6E + xmp.did:06801174072068119109B5757D1049F7 + xmp.did:068011740720681192B09470F75BAE8F + xmp.did:068011740720681192B0BB675D642E18 + xmp.did:068011740720681192B0E5094E035523 + xmp.did:0680117407206811931DB3FBE9BC56F2 + xmp.did:0680117407206811935398A7741CF40E + xmp.did:0680117407206811994BE3C8EAA36895 + xmp.did:0680117407206811A613B4EE39B4D58C + xmp.did:0680117407206811B1A48ACCC66BA1E0 + xmp.did:0680117407206811B54E8C27DD2A0032 + xmp.did:0680117407206811BE34FA518E62CFAD + xmp.did:068599d7-9596-cd44-b6eb-173724e672eb + xmp.did:069AC01433C211E0AA8582F7083052C8 + xmp.did:069D1FA5F012E0119CEFBA954A5518BB + xmp.did:069E61B2CCB211DFAC2D95EB3860F061 + xmp.did:06A12A9D0B206811994CB333F17797A8 + xmp.did:06FC0B33D8A5DF1183E59C1AD22E9595 + xmp.did:06d46704-580d-5247-97dc-4b1237b19442 + xmp.did:07019CEF42C3E011A406C2A95AFDCC0E + xmp.did:07130D8FC10DDE11966CA376FEFD02A9 + xmp.did:075BCB56A276E011840CA4CB3ED18DDA + xmp.did:0780117407206811830EB14038E6D0C0 + xmp.did:0780117407206811871F9320A1FBB4A2 + xmp.did:078011740720681188C696DC609994EC + xmp.did:078011740720681188C6CAC5BEF2CC51 + xmp.did:07801174072068118C14CA160A1107BD + xmp.did:07801174072068118DBBE31A192FEEDC + xmp.did:07801174072068118F6288F23A50D5DD + xmp.did:07801174072068119109DDBC5677155C + xmp.did:07801174072068119457905C16F6CCBC + xmp.did:0780117407206811994CC7F0B5403F08 + xmp.did:07801174072068119C9EAD5C12C9A96C + xmp.did:0780117407206811A72CF339EEA0CCAD + xmp.did:0780117407206811ACAFA9536D921588 + xmp.did:0780117407206811ACAFF062A38D63AE + xmp.did:0780117407206811AF52D0DBA53AB1DA + xmp.did:0780117407206811BAB9AF2C18A25AEC + xmp.did:0780117407206811BEB789E23D201984 + xmp.did:0780117407206811BF7DF951D6D80910 + xmp.did:0796F2FF2720681192B0C5B632F0693B + xmp.did:07AF93548537DF11BB0FAD6BFD45A840 + xmp.did:07BF8AD33B6CE111AB4D8DB66373418D + xmp.did:07C3E86C98E4DF11B11D84FE84A5BCF4 + xmp.did:07CF7E453FCEDE11AC1FBF9D231E361F + xmp.did:07D85B194F21681188C696DC609994EC + xmp.did:07E436F608206811B604BCFCB496C70E + xmp.did:07E6B75F4342E1118D14E6C2BB7EB7EF + xmp.did:07E83596F169DF11B10BB08092CF1009 + xmp.did:07FC96F20C2068119109F15A3E1BF8DC + xmp.did:07bdee08-5fa7-684e-9765-12732cbd152f + xmp.did:08084073AF60E011AFA79E3A4F01158E + xmp.did:0829BE83ED0EE311A3E9992A0C1C99C8 + xmp.did:085295E7D0C2E011B1DFE84FA2B3C4DF + xmp.did:087BB396181EE111A09287FE9D314E93 + xmp.did:08801174072068118083DB8F1A026FAD + xmp.did:0880117407206811871FA0C171ADCD10 + xmp.did:0880117407206811871FB03D861007B1 + xmp.did:08801174072068118A6DE3227BBC4D54 + xmp.did:08801174072068118F628C5BC7FF1E1F + xmp.did:08801174072068119109E507B66D7E71 + xmp.did:088011740720681192B080BDF09D73D4 + xmp.did:088011740720681192B0B191B1BF16B7 + xmp.did:088011740720681192B0B2C5393C2CD2 + xmp.did:088011740720681192B0BCCE1816D9E6 + xmp.did:088011740720681192B0EF67E7BA7EFF + xmp.did:088011740720681194578AA50D8ACBC3 + xmp.did:088011740720681195FEF9BABEDC41A1 + xmp.did:0880117407206811963CF2F523F9A511 + xmp.did:08801174072068119CD7B4F693D61F5F + xmp.did:0880117407206811A195E33BF38323D9 + xmp.did:0880117407206811B4F2DD609AE7DF4C + xmp.did:0880117407206811B7D5A9154E787253 + xmp.did:0880117407206811BED5AD4290BA1ADD + xmp.did:088F6FA571206811808383758E6AB92B + xmp.did:08AB61EF072068118C14CA160A1107BD + xmp.did:08ACBE8B444FE011A1F8D0CD47726D92 + xmp.did:08B6A48ADB86E011BFE892C38C7D5217 + xmp.did:08E3F215641DE111BEFDA90463470A62 + xmp.did:0903DF26646FE1118BB89C7736205CD2 + xmp.did:09208BA5FDABDF119348E4DBC826F65F + xmp.did:092C276A5DF411E0A80E8127450A213E + xmp.did:0980117407206811859EE31FF8DDBE8D + xmp.did:0980117407206811871FD8AA5A0491ED + xmp.did:098011740720681188C68CACA9496B43 + xmp.did:09801174072068118C149339A6CC4AB2 + xmp.did:09801174072068118DBB92791FD53C0C + xmp.did:09801174072068118F628191C0B70CF7 + xmp.did:098011740720681192B0A785E26ED8C6 + xmp.did:098011740720681192B0C87ABC946BF8 + xmp.did:0980117407206811A5AEEF90061E2834 + xmp.did:0980117407206811AEE4ECC20A5D0880 + xmp.did:0980117407206811AF2DFA6B7AD3F77C + xmp.did:0980117407206811AF52D0DBA53AB1DA + xmp.did:0980117407206811B2D9C93A76126968 + xmp.did:098E98F0CE46E111B7ED8183A09C93C2 + xmp.did:09ACACF31335E111943ECBE41034123D + xmp.did:09B542E7BA21681188C696DC609994EC + xmp.did:09B67F726EDEE0118B928F8C1ADC25AA + xmp.did:09BA72544F0EE011AF14CB98EFAB4DA6 + xmp.did:09C8147318EDDF119AFEB6392A6EF808 + xmp.did:09DDD7D4D6206811BB37D81EA9E9F402 + xmp.did:09E9C33FA1A7DF11BDB8F75F4D0AA037 + xmp.did:09F558C2BA0DDE11966CA376FEFD02A9 + xmp.did:0A45DB531F206811871FBF7EE03058F8 + xmp.did:0A5CBA2C8E9BE0118FFAB26FF922A0E8 + xmp.did:0A6E4F5D5B93E1118759E0BCEB009409 + xmp.did:0A80117407206811808381C0466C6EE8 + xmp.did:0A801174072068118083A2FF619D3EC1 + xmp.did:0A80117407206811871FBF7EE03058F8 + xmp.did:0A80117407206811871FF47DC91DE11F + xmp.did:0A8011740720681188C696DC609994EC + xmp.did:0A8011740720681188C6B57AC2009D39 + xmp.did:0A8011740720681188C6C5D9DC520BD2 + xmp.did:0A801174072068118A6DC5C740EBC4EC + xmp.did:0A801174072068118DBBAF3A0AE3DE36 + xmp.did:0A801174072068118DBBBFB8978460D3 + xmp.did:0A801174072068118F62E601B48A9F82 + xmp.did:0A80117407206811A613B4EE39B4D58C + xmp.did:0A80117407206811A613EF77C4B29473 + xmp.did:0A80117407206811B1A4D0E266413BEA + xmp.did:0A80117407206811B2BE95AD9B76376B + xmp.did:0A82B28EA187DF11A8DCCB01A1F3FBBF + xmp.did:0AB09B5BDA1EDF11ACBFD6BBB96B16C4 + xmp.did:0AC16A23D8B9E1119179D5459B6950F7 + xmp.did:0AC317AD1A206811871FBF7EE03058F8 + xmp.did:0AC619C70820681192B0F57DFE59A27B + xmp.did:0B0C84B3CFA5E2119989B5588E6BE483 + xmp.did:0B130D8FC10DDE11966CA376FEFD02A9 + xmp.did:0B17FBCE3962DF11A8C28E79BD783610 + xmp.did:0B45DB531F206811871FBF7EE03058F8 + xmp.did:0B489EAEB77AE011951EFD1A20FC35EA + xmp.did:0B5D13D80A2068118C14CA160A1107BD + xmp.did:0B69760EDA57DF11B9D4AD9095F18A8B + xmp.did:0B9C17DB299A11E1A81C96221D989B07 + xmp.did:0BB593A9BD50E011BCE58ADF7B2EFAF7 + xmp.did:0BB6FEBF86FEDF11B31AE73BCB4014BA + xmp.did:0BD56242FC02E011BF99EFC45AE4665E + xmp.did:0BF11FD1DE22DF118E04DE7FDFD8DEB5 + xmp.did:0C1C9CBE57CEE1119177BD2372B6623A + xmp.did:0C4246721A236811A2AED3DEE143B6BF + xmp.did:0C45DB531F206811871FBF7EE03058F8 + xmp.did:0C4CD748BB88DF1186FF95C9CDDA7F2A + xmp.did:0C4FF102172068119B57C9B046B49FDC + xmp.did:0C5D8D508821681192B0890367546977 + xmp.did:0C63A4D7298F11E1A74FEDDA888B3F53 + xmp.did:0C7ECD41DA0511DF8AFEC5441030B132 + xmp.did:0CCECEB75323681191098B3640855984 + xmp.did:0CCF6644C8A6E011979696CECC20A286 + xmp.did:0CFC96F20C2068119109F15A3E1BF8DC + xmp.did:0D0AB914E8FCDF119A3788D07212533D + xmp.did:0D14AC8D9CE111DF82FB9410A1B83330 + xmp.did:0D1ACCC98A20681194579E004F9F0D66 + xmp.did:0D1B479D585011E1846FD261BBD39365 + xmp.did:0D3351C04D44E0119C12D20236F1E089 + xmp.did:0D34739667206811871FBF7EE03058F8 + xmp.did:0D5C3F89B5FBDF118C90BA1F626B1FCC + xmp.did:0D74D9212D72DE11943CD2EA82BEC192 + xmp.did:0D8E98F0CE46E111B7ED8183A09C93C2 + xmp.did:0D9A9BFCEE7FE01182DFD33A26DD6908 + xmp.did:0DAB61EF072068118C14CA160A1107BD + xmp.did:0DB91C9156B3DE11A45B9A087A95E94E + xmp.did:0DC2B982FBA5E011A4FEE67DFDD7FB36 + xmp.did:0DE3B14C0D2068118DBBE3913583D1DF + xmp.did:0E0434AD60CADF11AB44E43C002A7EB1 + xmp.did:0E199D238FB2DE11A28ADA09035F6A96 + xmp.did:0E1C9CBE57CEE1119177BD2372B6623A + xmp.did:0E2330CF1D206811808394B683B79160 + xmp.did:0E2383CC272068119109827B1118762F + xmp.did:0E2AC53BD72168119109CA2496A1ABE5 + xmp.did:0E4D42CCC6BDE4118F75B2307B8F5D7E + xmp.did:0E5B766FFF58E111BF7FE96085014CBA + xmp.did:0E8C8607142068118083AEAC33B78D50 + xmp.did:0E906486BCFEDE11B925D68F9F94F6F8 + xmp.did:0EAB61EF072068118C14CA160A1107BD + xmp.did:0EC371A23341DF11877FCE2896D596F9 + xmp.did:0EEB11748845E0119C12D20236F1E089 + xmp.did:0EF0E86A9B51DE118A30D748E7BE306B + xmp.did:0EF4F9F5864DE1118B64937DE7C43D18 + xmp.did:0F28793F924AE011BB98A06D80C6151F + xmp.did:0F30D59357C8E011BEF0A37AC8AFF6B8 + xmp.did:0F477C9314206811BEDCC895EAB018D5 + xmp.did:0F69615F1DFFE011BA0D8CB5C6E87ACC + xmp.did:0FBFE3419742DF11A405F9CFB185DB65 + xmp.did:0FC317AD1A206811871FBF7EE03058F8 + xmp.did:0FCB77C0DB98DF11A9B6856372635A0B + xmp.did:0FD7005002B1DF11A381BC94E43BEB1B + xmp.did:0b4e4aee-d0cf-234d-a086-8b5eaef38df0 + xmp.did:0d182bd8-8893-4d2a-9de6-f45e9ffddee4 + xmp.did:100823B1CB0FDF119A0D9CB73A16B779 + xmp.did:101C9CBE57CEE1119177BD2372B6623A + xmp.did:106CA8FF09266811A4DFE6366F22B57E + xmp.did:106DE7AA3ADDE011A90AB20599575BD6 + xmp.did:1085A4F83DD011E0A5E4E63061587FB7 + xmp.did:108C8607142068118083AEAC33B78D50 + xmp.did:109510C05D4BE011B355BFFFCE138235 + xmp.did:10C249B651206811AE568088196B6FA8 + xmp.did:10CF6644C8A6E011979696CECC20A286 + xmp.did:10E450BBC642E01188FCEF0865FE6AD3 + xmp.did:10FD0E65092068118C14CA160A1107BD + xmp.did:110899159F70DF11AD48C2D8F6D670D2 + xmp.did:110B17C51594DF11A865AA8BEFE19711 + xmp.did:112A90B7909811DF80ADCEC8AA0E941B + xmp.did:112A90BB909811DF80ADCEC8AA0E941B + xmp.did:112FE45E2F43E111A5B7A0D857352604 + xmp.did:1134739667206811871FBF7EE03058F8 + xmp.did:114B95BC7972E011B7EEAAD82DC22765 + xmp.did:1168C833A504E011AC00E7975252639A + xmp.did:11859DB9FE10DF119D64B9F1C6536ADB + xmp.did:118BAEF0A369DE1185CF931BF48C00F3 + xmp.did:118C228145D0DF11902880725A4E63E2 + xmp.did:11995992062368118257B23D2B92E3AD + xmp.did:119A01FA9E2068119022D6BA6E344F5A + xmp.did:119B03C983CA11DF8F388068874D899E + xmp.did:119DA4A99857E0118B5FCAAC01D5B2AF + xmp.did:11A4EB64D304E011ACA9FE96628951D8 + xmp.did:11A77212D348E011B6BAB55D64F5962D + xmp.did:11AED5C2273CE111BD82E45AA15E472B + xmp.did:11B593A9BD50E011BCE58ADF7B2EFAF7 + xmp.did:11F6ACA3F761DF1182D1B9AD17E74805 + xmp.did:11FB407FDBE5DF119CEFD33EC3DF08E5 + xmp.did:11FD0E65092068118C14CA160A1107BD + xmp.did:121C9CBE57CEE1119177BD2372B6623A + xmp.did:1224A136CB54E1118AA9FCE1339F6D7A + xmp.did:122FE45E2F43E111A5B7A0D857352604 + xmp.did:125DB980B791E011A9BC9893AF4A736E + xmp.did:1267AE7DA9AFE1118972B868C4837CE7 + xmp.did:12789957BE7FE011AC77AB678D025B14 + xmp.did:127941515924DF11A2CCE29A3F875792 + xmp.did:128BC47B2F20681180839613FFBBFAAC + xmp.did:128E72C61B36E011AA13EDD9B386B3B7 + xmp.did:128E8557D271E111A462F06351BEE1BC + xmp.did:12A8FC28BA7DE1119284A55EC9A88E72 + xmp.did:12B593A9BD50E011BCE58ADF7B2EFAF7 + xmp.did:12B6375A0E206811822AAEB57B3841C0 + xmp.did:12C55D8DD2CCE01183FA9F0BD546AC9B + xmp.did:12ECDFCC6918E0118317A5126B184C9C + xmp.did:12FD0E65092068118C14CA160A1107BD + xmp.did:130F0792073711E2A496EA31311299BA + xmp.did:13296BD7929AE111A9FAD16AAD7C28D8 + xmp.did:1333C5BD3420E111B7A0E92820316FCA + xmp.did:13422BA1C55AE1118D069EDA77E6B0AC + xmp.did:13443BEF112068118C149D08F70A161F + xmp.did:13813029F4B4DF11B802D46C713DC211 + xmp.did:138802412B31E111B820EFD39635D3EC + xmp.did:1390C595F649E0119FC380FD3FA1A852 + xmp.did:139534B9E0EBDF11AF7ADC785B21E360 + xmp.did:13A416BB7048E111B643FB719502872B + xmp.did:13AA875FE818E1118B23FF08337BAACC + xmp.did:13B748432EA2E0118D04E5AB37155918 + xmp.did:13C28629DDBDE111ACB8C1698976EF9C + xmp.did:13C7B5D563CDE0119BDA95D20C9589FB + xmp.did:13CC46273CC7E011A6079E241A5D815E + xmp.did:13ECBBB17E1CDF118D4EF1C33EDDA687 + xmp.did:13FB2319A088DF118C39B933A933A347 + xmp.did:13FE1320490111E2ADADF8E3C92E6B02 + xmp.did:14006bf8-cbc1-f147-8df9-681a303d3110 + xmp.did:1405155F5AB9DF1189DACB811D57ABC7 + xmp.did:1405CBF03BF711E0909EA53496E0FC1C + xmp.did:1405CBF43BF711E0909EA53496E0FC1C + xmp.did:1415A4E4F08EDF1191A5FE8834A1728C + xmp.did:141C9CBE57CEE1119177BD2372B6623A + xmp.did:1437CB2E34E9DE118EC4B76DFBF31F4B + xmp.did:143f78ae-626f-764b-8ea2-452aab0c99bb + xmp.did:144699D31EE5DF11A0D68F50E2E34A90 + xmp.did:144C62F9830311E0B62FB7127DA0FEAF + xmp.did:145F3D5A96BD11DF9A7FBB5BBBCCCBEA + xmp.did:146C32C21F2068118A6DB4DDC650E5F6 + xmp.did:148d7990-0960-7c40-8573-be98c0c8bf5f + xmp.did:149A2C74143211E08BDAEBD1A8E6A826 + xmp.did:149C8558F373E0119389FF7D0DABFC0C + xmp.did:14ACD3C81245DF118203F68C54C1A0DE + xmp.did:14CC1D4BCCC5DF118911DB8CEA0F9CB9 + xmp.did:14EBB71A132068118083AEAC33B78D50 + xmp.did:14EE5C22C36CDF1197E5FE2AEAE05669 + xmp.did:14F64E789CE111DFB2E3D6893F51AB44 + xmp.did:150899159F70DF11AD48C2D8F6D670D2 + xmp.did:154EEDF4F623DF118A3E9F535F499037 + xmp.did:154F526AB7FCDF118B1C8E78BC400721 + xmp.did:15699ECEBEAFE011A4B094F7328E1620 + xmp.did:1586A9B357A3E211B022F4E950FBC6B4 + xmp.did:1588ABA64B7EDF118BB3FD3FFFE50FBC + xmp.did:159E8302022268118DBBE87F8545CD69 + xmp.did:15A60D6946B0DF11B459F9C5D2A949D8 + xmp.did:15C74F053731E0118B4EDEFD095D4C79 + xmp.did:15C9895284D3DF11B5A1BCED77057419 + xmp.did:15EBB71A132068118083AEAC33B78D50 + xmp.did:15F12FE2F4C5DF1186D1C8377ADB48B2 + xmp.did:15FAFFF52B2068119457D5C82447A0CD + xmp.did:15FB2319A088DF118C39B933A933A347 + xmp.did:15FD0E65092068118C14CA160A1107BD + xmp.did:15b6ba64-7918-3f45-86f8-950abb019668 + xmp.did:160351370E7FDF1181B8AE21B5EA78C7 + xmp.did:16070F7F0BE3E01194ECD7FC4F209A7F + xmp.did:1630586DC9E3E0118D4BE9BCF87F398E + xmp.did:164699D31EE5DF11A0D68F50E2E34A90 + xmp.did:1675507DDCD8DD11952EC9897C80DFD8 + xmp.did:167612E912BAE011AD10F716DE4F0EFE + xmp.did:1676A34E2C206811ACAFD841B9E6979C + xmp.did:1677A958C8A7DF11B688E446FD3869C9 + xmp.did:168BC47B2F20681180839613FFBBFAAC + xmp.did:16ABDF08E643E011A54EA1A1FFB2B698 + xmp.did:16B5EA561C21681191099A139FF76C18 + xmp.did:16B92BCEDEE1E011ABB781E34B7569C6 + xmp.did:170463185620681192B0D8368D31C23C + xmp.did:170899159F70DF11AD48C2D8F6D670D2 + xmp.did:17306FF5A4D5E211A347A22AEE85530F + xmp.did:17385DBEFB20681188C696DC609994EC + xmp.did:17674B35638BDF118591B0078DD03A9E + xmp.did:179713BA272068118F62B88BBDD1F4FF + xmp.did:17A3E092B44AE011BB98A06D80C6151F + xmp.did:1833D0D35707C411BAEBAC26ED8D2ED5 + xmp.did:183888C4FDE4DF11925EE4D38FAB2E00 + xmp.did:18407EA49F74DF11B9ADF501B1FEEC5B + xmp.did:18503ACC11206811A7BADD5938E42519 + xmp.did:18813029F4B4DF11B802D46C713DC211 + xmp.did:18A6A5FAB913E01180DACEB1E4B080FC + xmp.did:18CE27CC3420E01192BAF60E2D449637 + xmp.did:18E040BF726B11E096478444BF297328 + xmp.did:18EBB71A132068118083AEAC33B78D50 + xmp.did:18F1103E54C3DF11AAE49CD88AA644AB + xmp.did:18FD0E65092068118C14CA160A1107BD + xmp.did:18FE1CEEFD20681188C696DC609994EC + xmp.did:190199FC5262E011BDD3C26ED7614871 + xmp.did:190899159F70DF11AD48C2D8F6D670D2 + xmp.did:190F2847BEF0E0118A9BA6EA72D626E7 + xmp.did:1910EBBD19206811B9E7EC5D3392470D + xmp.did:192895DB0886DF118FBF8215B1849E81 + xmp.did:192C1F6D5580DE118E06D71BE6D50B31 + xmp.did:1957E59BE7F9E01192AC901847929BEC + xmp.did:195B89EC3133E2118A6581FF27BDA713 + xmp.did:195CABB2FDD8DE1198CCB8DEB6935B47 + xmp.did:196278770A9BE01185E6CE2ED1C79073 + xmp.did:1971B4715124E11182A8FDB9299DD644 + xmp.did:198D4B85F327E011A95F93AD65E6DAF5 + xmp.did:1990B25A12216811871FAE052E76F513 + xmp.did:19BDC4EDD030E111A238F3B8EC015E1C + xmp.did:19D0A6EC3167E011B073F4CE04289083 + xmp.did:19FB2319A088DF118C39B933A933A347 + xmp.did:19FD0E65092068118C14CA160A1107BD + xmp.did:19d61e98-27fd-0443-8b6e-7377d77eb0b2 + xmp.did:1A0AA41B6576DF11A0EA8D814D891314 + xmp.did:1A0BD277C45EE011B42CE1788AE2BCA5 + xmp.did:1A15B6748E1AE111B7D1FF378EBA5033 + xmp.did:1A2541A6184CE1119FC3B1E51233686E + xmp.did:1A5A3B326B2068119109C0AB8E06FDAF + xmp.did:1A6A210EBD21681188C696DC609994EC + xmp.did:1A7A2A5E8F59E011804CC2E4C9E088FB + xmp.did:1A911DC6E31FE111969BB17CC3743599 + xmp.did:1A94536A323A11E0A7B8D76BEBDDFBE4 + xmp.did:1AAA61C531206811857EF51D78886996 + xmp.did:1AAE40E5D26711E0A16FC1B17E7100AA + xmp.did:1AAF7B7A6213E01194C8A20EE3DADB15 + xmp.did:1AB777227629E0119AD1B945C1964BAE + xmp.did:1ACC13480557E011921BE2DE87A39B49 + xmp.did:1AEBB71A132068118083AEAC33B78D50 + xmp.did:1AFFB7E90EFDE111AA9E9A5BC1B6D795 + xmp.did:1B0390D88098E111B875C576C5836730 + xmp.did:1B1EFFEC6313DF11A719F1AF52661082 + xmp.did:1B23937A3BA3E111A268C964C1959643 + xmp.did:1B39818209206811A67A9DC1E80E5213 + xmp.did:1B3ABA9900D6DE118548C91E49E7E93C + xmp.did:1B4B62D9C62068119109D77742DCC440 + xmp.did:1B4CBCBCC095E01189CBD2A609D6972A + xmp.did:1B61A465988DDF11B96ADBDD437880CB + xmp.did:1B623870283EE1118BB3DE9E3CCF5DB2 + xmp.did:1B8BC47B2F20681180839613FFBBFAAC + xmp.did:1B8E4532D5AB11E2972B9F608C03703F + xmp.did:1BA35FBDD3E1DF11A98DF895371D07C8 + xmp.did:1BA936B2FDA8DE119C209F7286AC4160 + xmp.did:1BAE87329FB0E01188E1AA94663BE5B8 + xmp.did:1BD6A30692A8E0118BA8F2782CB3F003 + xmp.did:1BE9E00FAF2AE011933E95A9CBDB21E1 + xmp.did:1BFB2319A088DF118C39B933A933A347 + xmp.did:1BFDF77BE259E1118098AD4632914BB1 + xmp.did:1C008091733CDF118839BBC600ACDD9D + xmp.did:1C01C42FF620681188C696DC609994EC + xmp.did:1C03146227226811AF6F8C15B6994DA7 + xmp.did:1C498A33A881DF11B86485F7B3FF4213 + xmp.did:1C653EFFC923E011BED2CF43647FDCC7 + xmp.did:1C6EBF246C71E011AE23C25524073F4D + xmp.did:1C6F70AADA21681192B0D74B25A6FE48 + xmp.did:1CA936B2FDA8DE119C209F7286AC4160 + xmp.did:1CCC13480557E011921BE2DE87A39B49 + xmp.did:1CCF6619A3A8DF11B402D829E1AF718C + xmp.did:1CD432F0075CDF11B590C19EA4D3919F + xmp.did:1CDCFBBD7B7CE111B0BEB930474C6B67 + xmp.did:1CDE2116A10AE111B798EE6A89479D6E + xmp.did:1CFABC7B83AEDF11976BF02EC76C78FF + xmp.did:1CFE1CEEFD20681188C696DC609994EC + xmp.did:1D012E9EC9C3DF1190EED90E3B79DA34 + xmp.did:1D0682D8122068119109A276E6305D40 + xmp.did:1D06EF8E726B11E08CB3DF7C657CD3E9 + xmp.did:1D307A7A80BADF11851194AD5EB44AB5 + xmp.did:1D39EBED82E7E0119F95E4617094B01B + xmp.did:1D51DAA7222268119109F828D8DAF436 + xmp.did:1D5FC748769DDF11A07CFCC065F27E63 + xmp.did:1D6E1784A5EFDF118F5EA1FEA851DD4E + xmp.did:1D6E4373AC5FDF11A68ED251FF23EC34 + xmp.did:1D794D3196A0E011BA5FA492FDC2C4B6 + xmp.did:1D81CCD3DF46E01181FBAD6FFAB64B28 + xmp.did:1DCAD36F0C20681192B080542646EBD1 + xmp.did:1DCB8B9A0812DF11BE11979D0FB896E3 + xmp.did:1DD8DCEFF8E1DF11B0C29F011F8D948B + xmp.did:1DDA0DAFE025E011AAA2BA205A7F56F7 + xmp.did:1DDBCEB646BCE0119CF4D82CEDF9C9E2 + xmp.did:1DE5B5A0B60EE11193BDEF643AA2079D + xmp.did:1DED8CFF57BBDF118185E1BC98F91251 + xmp.did:1E01C42FF620681188C696DC609994EC + xmp.did:1E059DA44734E011AD25903082F159FB + xmp.did:1E05E6112791E011AD7CBB3464098A77 + xmp.did:1E311072C331E11194979B80FD445456 + xmp.did:1E424F30D125E111B075EDD02FAE7909 + xmp.did:1E6BED5D142068118083AEAC33B78D50 + xmp.did:1E7745A2909711DF80ADCEC8AA0E941B + xmp.did:1E7E6F2C19E8E1119DFDF0AAA80BF1AE + xmp.did:1E80613B091FE5118B2CC47253EA7592 + xmp.did:1EB15ED9842068118DBBE1DE0D19E0B9 + xmp.did:1EC0AD1472DFE011BAC7F7CD194FE1BE + xmp.did:1EFE1CEEFD20681188C696DC609994EC + xmp.did:1F0E31230A20681192B0D4E402E58F0C + xmp.did:1F1D7FCAFE81DF11982BEF51EBA56B3D + xmp.did:1F2119CB0D28DF11B485DC92488E5BE5 + xmp.did:1F71AF8A4424DF11A45CDFEF6351A413 + xmp.did:1F7560349B4011E192EFD39D50A0C01E + xmp.did:1F7560389B4011E192EFD39D50A0C01E + xmp.did:1F96F439A17DDF11A5BB80E3C2BF9E62 + xmp.did:1F9843056202DE11A007CED31C5D911A + xmp.did:1FA8469BE665DF118DCBBE878367E83E + xmp.did:1FD7DD84AC96DF11AF7B8C47AE027F5F + xmp.did:1FDDD329BC2311E09D78E5B6B72E92C3 + xmp.did:1FE3A640427AE011A4D3C40ADA3B0913 + xmp.did:20097E60662DDF119736E0BAAF1A32B3 + xmp.did:202F428543206811AFFDE9CF455472A7 + xmp.did:20391033142068118083AEAC33B78D50 + xmp.did:2044ADD676206811871FD21234BA3CD0 + xmp.did:204A52660B20681197A5EA3B7AA659C7 + xmp.did:204C7365ACCCE011BB4EBA4BAF741CB8 + xmp.did:206BED5D142068118083AEAC33B78D50 + xmp.did:2083E2D53249DE11B242B7245CD43D11 + xmp.did:20954B6E3791E0119DE0C72DBAF511EC + xmp.did:20B881312B20681192B0EDAAC00D9FEC + xmp.did:20CC13480557E011921BE2DE87A39B49 + xmp.did:210C18881B21681188C696DC609994EC + xmp.did:212351349793DF119EE58BABBDA2F19D + xmp.did:213D01546D8911DFBDD584DDC8C95BF8 + xmp.did:21456010E93FE1118DF19C6DFE49C038 + xmp.did:21526CD64C32DE119A0AD46B4D57677F + xmp.did:2153A58CEF2EDF11B015F162565C4D20 + xmp.did:215D6A12242AE1119583FD4A981E0514 + xmp.did:216BED5D142068118083AEAC33B78D50 + xmp.did:216EA2C971D1DF11A9A9AAF92A4138CE + xmp.did:219911BF2F6BE0118B53B756951DDF56 + xmp.did:21A1E2606B69E1119BC5AC22F59AD4A8 + xmp.did:21BCF77D6204E2118B88C0833978F058 + xmp.did:22004E5C8945E111837BE511CDAD0396 + xmp.did:220C18881B21681188C696DC609994EC + xmp.did:221DA41761EBDF11B4C7FA344C4ACFF6 + xmp.did:22210C8C5319E0119A76EE7A30A1B9CC + xmp.did:2225159BDC8B11E09B5DFF3123B16F4B + xmp.did:2236E2A0C47011E2B1FCEDB464DB21E7 + xmp.did:22391033142068118083AEAC33B78D50 + xmp.did:2243C600B5BCDF119C53D099D360BF41 + xmp.did:2248DE05EF5AE011AED0888478157EEB + xmp.did:227F9ACE69BBDF11A3C3D994FB1E0DEF + xmp.did:2290EDEA89E511DF987689350325E293 + xmp.did:2299D32616E9DF119EE6A28EBD59B416 + xmp.did:22A57726BD12E1119586CA38910C2E67 + xmp.did:22BFF6B598EF11E0BD518E09C122C174 + xmp.did:22C806AD0E206811871FE8E0BEDD65C0 + xmp.did:23301B1D792068118083982FE4C6204F + xmp.did:233270CDBA206811BAC7A817D1EDAD8E + xmp.did:2339EBED82E7E0119F95E4617094B01B + xmp.did:233CA3500C07DF11AE60905F6C3D438D + xmp.did:233CDBFC62BFDE118D6FB67E48281758 + xmp.did:234A9D729421DF119109F0ACE0E21257 + xmp.did:2354DBCDC557DF11A4CDEE669799F3B1 + xmp.did:235D27118B7EE111A4C382D12C4BE1E5 + xmp.did:2372B99EE0C4DF11A4BAA9DBEB0EA131 + xmp.did:2381B37D10F2DF11AA14D86ECA20CB32 + xmp.did:2386A87CA8A8E111832BA801CB77D0B8 + xmp.did:2394DF3F13CADE119AF59113C51E0990 + xmp.did:2402730118206811B965DDDEC622804B + xmp.did:240A160F1B9AE111835787A7994F4DB5 + xmp.did:24345A846137E011A281D9E28D60DC29 + xmp.did:2452D635CC5B11E19240974EAFAEE1EE + xmp.did:246BED5D142068118083AEAC33B78D50 + xmp.did:2472B99EE0C4DF11A4BAA9DBEB0EA131 + xmp.did:24749AB17CB4E0118F5594D39951C4EA + xmp.did:2489D9C785216811A5CD8E2C727667D5 + xmp.did:249077570A206811910986D9CD6AC386 + xmp.did:249ECF072BFEDF1196FEEFF1E699BCF4 + xmp.did:24D4DC9163CADF11865BBEA8B1A148C7 + xmp.did:24DCDFF4B827E0119D7EA0B8C6F18753 + xmp.did:24DE300A77FADF11957CB6C8F2BB99C0 + xmp.did:24E23E65851CE0119B0A91B54FEB90C8 + xmp.did:24F54ECDBAC9E011B63BC6CF19B00A92 + xmp.did:250102237361DF118C2F8B603FA9D0EE + xmp.did:250F37FDBE65DF1196A2E5386EB7EFBF + xmp.did:252A728E65BBDF11B714F0C6E94ABD01 + xmp.did:253270CDBA206811BAC7A817D1EDAD8E + xmp.did:253BB8CF7046E1119E8CD6BCD32F89A5 + xmp.did:25481FF6A7206811B560FCE792BD8256 + xmp.did:25866E4DCB93DF118EC3E666F3952F73 + xmp.did:25BEC20513206811871F84AF8C99E562 + xmp.did:25E23E65851CE0119B0A91B54FEB90C8 + xmp.did:25E79850026FE3118753E8A48FC4C61D + xmp.did:25FFEA96AEBCDF119C53D099D360BF41 + xmp.did:26337EA7B505DF119F47940FE5A79D7A + xmp.did:263967D6EC86E0119165A3612045DBE6 + xmp.did:263F1CEF0AC1DF1186AAE9D42E01A0E5 + xmp.did:267A70FFD257E011A551F15593603B5A + xmp.did:26A4259B2236E111A60AFDFD3494DFC6 + xmp.did:26AE56BBFB60DF119E238757E43BEA24 + xmp.did:26DC91929B62DE118673AEAF55AC4B9D + xmp.did:26E0B8B18EA2DF1196E6B4BE421E334A + xmp.did:271B6C3D1B17DF118E43E01B5B84694F + xmp.did:2749DAC169E0DF11BAE2A9F4FA1C730E + xmp.did:2751605F3A9EDF11991F86307F06F0C5 + xmp.did:27A42225BA50E0119EC4836FE5ECCA6E + xmp.did:27C109D5ACDEDF11BAACCFE187E6E735 + xmp.did:27F361B3F23FE1118DF19C6DFE49C038 + xmp.did:282F44E5EFE9DF11A2C6F6A60B573B0E + xmp.did:284C528525EEE2118537FBF283DEA7FA + xmp.did:286748CBA8CFDF11AC52BCF55247214F + xmp.did:2871BC98AC46E011994BB9DA04640F71 + xmp.did:2877DFF125206811871F92C91D0752B0 + xmp.did:2883363E18ABE1119D4C8C98D1458D3C + xmp.did:28EEA9B79AD5DF119648F8511B7417D3 + xmp.did:28EEAF508EEFE011857193D706463FBF + xmp.did:28F5806BFD06E011883EC480562D690C + xmp.did:28FCAEE8B6F9E0118FB3F60114B64F88 + xmp.did:2928DC004423E01199ECC9B0A3B730D7 + xmp.did:29339019AE55E0119C03A862C7BF6F88 + xmp.did:295F4B73C7E0E0119883AE36044E416D + xmp.did:29736942E3E7E111841DF425904A942E + xmp.did:29848F31D665DF118981BAF63188CA1C + xmp.did:298DFD0487FCE011B611B90EF8DBFCE0 + xmp.did:29A459F88D57E1118E45F85BBAB4DA8F + xmp.did:29D021750C20681192B09EEE150B510A + xmp.did:29E506C93B276811994C9298C019EA01 + xmp.did:29ded42c-aaa8-0746-9c46-aab89629f90d + xmp.did:2A133E62CA43E1119C07EF2F0F32B02F + xmp.did:2A2A897D112068119109970771D39581 + xmp.did:2A3D854F0A2168119109FB109986C91C + xmp.did:2A474F7D19DAE011ABC1EFB64D397171 + xmp.did:2A4AA45345D2DF1185189E5A46B3E5A3 + xmp.did:2A635F4534CBE011901DD96AD9169FB8 + xmp.did:2A7F9BC3C8F5E011A67FE7D8A752AFAC + xmp.did:2A7FB2515552DF11BDA3C516F5733777 + xmp.did:2A8DADA9201EE011842A99364FEBD0F6 + xmp.did:2A9B5ABB7D25DF119491B0761830187C + xmp.did:2AAE29F7FD58E111BB8F9DC6281BDD0E + xmp.did:2AB6FB8F0D20681192B0BA0F85A3D33D + xmp.did:2ABB75037D1A11DFBF66D19AE0AB5B1B + xmp.did:2AC8E28B29A3DF119400A18B9B4C9FAF + xmp.did:2ACBDB71A8E2DF11808B86C388970AFE + xmp.did:2ACF258E325DE011A1A5CBD15F1C5D8A + xmp.did:2AD0EDC3202068118C14F3F57EB97687 + xmp.did:2ADE300A77FADF11957CB6C8F2BB99C0 + xmp.did:2AEF83285D6AE0118EFAA635AEFDADDF + xmp.did:2B0A3C04210CE1118BB8D0D4C6305803 + xmp.did:2B0D56323CB4DE118FA4962B833E7A9B + xmp.did:2B1AA3CF538FE0119333C691B7ECC124 + xmp.did:2B1D26DEA948DE11BC16EF6281DA5CD6 + xmp.did:2B44CCF91D2B681197A5BB6C7B9E1199 + xmp.did:2B47F7FACE8311E1A4CCB1433E3CE3F6 + xmp.did:2B49DAC169E0DF11BAE2A9F4FA1C730E + xmp.did:2B6115077BC9DF11A64EBB615C35DEA8 + xmp.did:2B8B4AE0132068118083AEAC33B78D50 + xmp.did:2BAA4CFC62B3E41191C3B4AB4D7594DB + xmp.did:2BAD824AE6F8DF118C299CAFA43E008F + xmp.did:2BD021750C20681192B09EEE150B510A + xmp.did:2BE4BFFEB8EEDF11B7C1CF6602A8309F + xmp.did:2BF84DC38B7BE011A3A4CE3E3923186B + xmp.did:2C27EAC7B261DF1187CFEC85A6077A87 + xmp.did:2C46390A7D4911E0A66DC919951D3F2B + xmp.did:2C514E4873D111E0B183883F507A6AA6 + xmp.did:2C76D9E54805E111AA27B947B661C864 + xmp.did:2C90511B4823E011A604D29FE708717A + xmp.did:2C990FC5072068118C14CA160A1107BD + xmp.did:2CC971D6DCE1DF1193B8A11A80F46236 + xmp.did:2CD69660F8D811E08A34F531155FB012 + xmp.did:2CF979B3C8DAE0118F54FEE4FA6B9BE3 + xmp.did:2D0F9B62D65FE011ADDDA36461497BD4 + xmp.did:2D18B920232CE0118D26A5501B52DB2B + xmp.did:2D3CD42E092068119D50B6EC82CAAA2B + xmp.did:2D65D6BC7474DF118398F5759BAB55F5 + xmp.did:2D99977BA60FDF11A663B3CC09C0547C + xmp.did:2DA1410E252168118083BAC84F2457CD + xmp.did:2DA2E4C6F3BCE011B0BBD5E3244285CA + xmp.did:2DC473A80D88E111A27BDFDDE14F6A5C + xmp.did:2DC4D985DAD7E411B3FEA50799D84EFE + xmp.did:2DC9DC8B437DDF119F2A8FE6D6E90A77 + xmp.did:2DD0EDC3202068118C14F3F57EB97687 + xmp.did:2DD6CDEC4A04E011B15AC30C24A54B64 + xmp.did:2DD7DD06DC34E211AF10888AEAD9DF4D + xmp.did:2DE1C03C5734E011AED69D90325CB47C + xmp.did:2DE476E6272EE0118717C7B7818F0867 + xmp.did:2DFA3008F145E0118E94883E6C42447E + xmp.did:2DFCC9F8BDACDF118C7CD3DE88742B47 + xmp.did:2E022BBA40206811AFEDB4DC5A5EDBC9 + xmp.did:2E07B97B68DDDD1184E79F539C3A3CA9 + xmp.did:2E09C00AAEB1DF11874DE165FC2CAE6D + xmp.did:2E229BE45760E0118647B4BD29669B78 + xmp.did:2E2E05D5EB206811B942A79AA091CB27 + xmp.did:2E2F95DB5C206811B2919DD4FBB4B4ED + xmp.did:2E4A134843CCE011907C944EF181D2E5 + xmp.did:2E53E9854520681180839B699B907CBB + xmp.did:2E7D0E247F1FE11190B5ADF6C8AD76FD + xmp.did:2E8053D8251111E390FBE5B6607B6479 + xmp.did:2EA88880F351E0119FA3C3F403909A9C + xmp.did:2EB70B5A0E28DF11B4E2B1144153ED13 + xmp.did:2ECF258E325DE011A1A5CBD15F1C5D8A + xmp.did:2ED021750C20681192B09EEE150B510A + xmp.did:2EE343CF085BE11180ECB61B3F01627C + xmp.did:2F290AB9132068119109C80A4C3147BC + xmp.did:2F2BE9891D0EE011AEC5808E67DE2706 + xmp.did:2F417DC75267E011BE62CDD64055EB42 + xmp.did:2F5260E91D206811910985FEF6C92AFB + xmp.did:2F82ABD94D22681192B0D8368D31C23C + xmp.did:2F9782BF00C8E011BEF0A37AC8AFF6B8 + xmp.did:2F99977BA60FDF11A663B3CC09C0547C + xmp.did:2FBD825F122068118C149D08F70A161F + xmp.did:2FC894ECF498E011B70887249EC6C9FC + xmp.did:2FD7E5F70B2068118C14CA160A1107BD + xmp.did:2FDEFA454AD1E011A59BDC498A75C8F7 + xmp.did:2FF6F093A03ADF119FA5A2D495BDF4CA + xmp.did:2FFDCB0493AA11E0A5F9C48554239AF0 + xmp.did:2babb524-c727-ab4f-95d9-d65d64aeab7a + xmp.did:2cd91272-c4ba-494f-9f81-e34d68b03593 + xmp.did:2ceddac3-3387-a348-9a74-7995c3eeb1a5 + xmp.did:301929B65CEE11E09B55EF992C528CB8 + xmp.did:30207C0B082068119D0EEBB18A773162 + xmp.did:307FCAFEC156E011921BE2DE87A39B49 + xmp.did:30AEA8DECADDE011A4399928ACF14F53 + xmp.did:30C39540A904DF119F2CD4E3A2525BA6 + xmp.did:30D021750C20681192B09EEE150B510A + xmp.did:30EB6D82FC0F11DF9D61AA9246C50B45 + xmp.did:311D5090367EE0119980D9C7A0723BCA + xmp.did:31552C38272068118A6DC2EB5CD0A707 + xmp.did:315B2BEDF441E111BE03A1B44FC41281 + xmp.did:315EC7B24277DF11A28CDB2E6E8DED8F + xmp.did:317371BE4FCE11DFAD1291F8D717A6FE + xmp.did:3188EF82A709E111B40DAE91BF70E9AB + xmp.did:31A5ECFE7D2511DFAADB97C6C8460709 + xmp.did:31AF7E2B78BADF11851194AD5EB44AB5 + xmp.did:31B768BD9604E1118B6FB5AC61CFF447 + xmp.did:31BD825F122068118C149D08F70A161F + xmp.did:31E36DF20606E011A9E0EF066A03BB94 + xmp.did:31F8A6A75E57DF11A073F7C6A2978EA7 + xmp.did:32054947A478DE118A05DDA10CB105D4 + xmp.did:3209B8035307E011A6C3C9B01D013BF7 + xmp.did:320AF4FDBCBB11DF9A12D89AE4A6FCDB + xmp.did:320AF505BCBB11DF9A12D89AE4A6FCDB + xmp.did:3227887259CEE1119177BD2372B6623A + xmp.did:3255DE8D57D3E011B62094144FC15E03 + xmp.did:3272A723EC40DF119CD8ABA52D5F2141 + xmp.did:329FADB3FAA2E411B813826FC0679EE5 + xmp.did:32A38B1FE8F8DF11B54DB2ED51FD1176 + xmp.did:32A7D20B7B54DF118DF0E6232428FB0B + xmp.did:32C9239C583EE011A908D06DA889FCD3 + xmp.did:32D52E0D0E2068118F62DA03125D4285 + xmp.did:32DAAC512520681192B0BE8DD628D238 + xmp.did:32F018B31320681192B0C09A9F8F6D74 + xmp.did:32F8B7A6E944E111AB69D9EE84009E7A + xmp.did:32FD9B860E206811AFFDB53FE81F50F3 + xmp.did:3300BCE939206811AFFD8D3491C4D0CF + xmp.did:3325A2A187B8E0118F8EDA00AA1CB991 + xmp.did:332CDACA9F206811994C8A8243CF6DD5 + xmp.did:338329BDAC4EE011AD01AF3BEB8114C7 + xmp.did:33A7B7EE8446E111BEC7D8495055B9FA + xmp.did:33B1A9AEA8C9DF11BDDDE2EFA301A868 + xmp.did:33bb7d08-183e-8e4d-965e-270ee3fa76c1 + xmp.did:34033CBAD556E011921BE2DE87A39B49 + xmp.did:3405B9A72CE6E2119502C4946F9D8949 + xmp.did:340EF1E17A20681188CCC0301896C619 + xmp.did:34125B444F2068119109ADEEA36B1FBD + xmp.did:3416DA124118DF11A3D7E1B62ED1AB87 + xmp.did:3424F194212068119457A748E286EBA1 + xmp.did:3427887259CEE1119177BD2372B6623A + xmp.did:342D43900A2068118C14CA160A1107BD + xmp.did:34470183DE64E011842193FB58F60D8F + xmp.did:3469A8DF112068118DBBCC81981F930D + xmp.did:346E16669F9AE011AC2F9647199FCE06 + xmp.did:34819B785B21E011970390A601241896 + xmp.did:34C73DB7BC4ADF11A46C90A73F3DB441 + xmp.did:34C7746E3520681194578AA50D8ACBC3 + xmp.did:34C8E28B29A3DF119400A18B9B4C9FAF + xmp.did:34DB45472620681188C68A3FF4E0AEAD + xmp.did:34DFA01BAE2968119109F10D857E8622 + xmp.did:35019A4F492FE0118AFDA94598BC9104 + xmp.did:3516107E111ADE11B0049C4A5E251490 + xmp.did:351A9E90A4E5DF11B802984CE894AC42 + xmp.did:352148A75D6DDF1183078C713A1AE422 + xmp.did:3522CF74A4ACDF119A4FBCED47AF13E3 + xmp.did:352D43900A2068118C14CA160A1107BD + xmp.did:353C7E32B620681192B0FA0C0917E462 + xmp.did:354FB441312068118DBBE38DD8571038 + xmp.did:35543108C5B0DE11881CE82FD620D22E + xmp.did:3568F8E68959E011BEFB8CD79963F154 + xmp.did:359CF9342756E1119610C78CA857CBA1 + xmp.did:35C95002BD91DF1183E0D3A4363E632E + xmp.did:35D38372010AE1118CC1B19039EC3CAE + xmp.did:35D3B7742252E011A3BE9A6A60E513F1 + xmp.did:35D9E739380CE011BBC3B3AA8D5125FE + xmp.did:35E1BCDDD14AE011941EDA7FF43C0D46 + xmp.did:35E38014CAFCDE119464816E8909A3C0 + xmp.did:36070C0E5DC2E0118845DE1447055626 + xmp.did:3608255F1C206811A7BAE74CB34AB8E7 + xmp.did:36098AC3F5C5DF1186D1C8377ADB48B2 + xmp.did:36142865952068119109E554154D32B1 + xmp.did:361D7D290B21DE11BB0FE41FB41C4759 + xmp.did:361E2329298F11E18F76C16CE5AAF04E + xmp.did:3620F63FD75CDE11BB4D8723939A608E + xmp.did:36232F4D813ADF11A89FA523901B3490 + xmp.did:3627887259CEE1119177BD2372B6623A + xmp.did:363A8F868D206811BA24F97E9D027B47 + xmp.did:364BBA28D1CFDD118DD8BE48143C0F0F + xmp.did:365DB957B224DF11B715938AD2CC802B + xmp.did:366BA4410632E1119B969E32821AECA8 + xmp.did:367FCAFEC156E011921BE2DE87A39B49 + xmp.did:36824B69EC6ADE11A7A7A204FEA3BE20 + xmp.did:3688C4508B39E111A9B6829A5B3FDD4D + xmp.did:3691CB020257E011921BE2DE87A39B49 + xmp.did:36AA9BF965C111DFBB4AFA1F174F757F + xmp.did:36AF18290C206811BC56E1514E765539 + xmp.did:36B56F52C0C711E0A08E9AB4E0D7C562 + xmp.did:36B76D2A931FE111A200B1AAF0A79264 + xmp.did:36BD825F122068118C149D08F70A161F + xmp.did:36BE1EF37494E0118A8FB079BE22B8F7 + xmp.did:36C863DBD4DAE1118CC1E0C7CE6212AF + xmp.did:36D0BDC12D4EE011AFE6F3E4B712C80D + xmp.did:371A889CC027DF119B78E8F19C229AD7 + xmp.did:37465BA0A3BBE01197F291F7E5D75606 + xmp.did:374FB441312068118DBBE38DD8571038 + xmp.did:3777AD23C143DF11AF0CE727C9EFF862 + xmp.did:37BD825F122068118C149D08F70A161F + xmp.did:37D922A84605E11190A9B305F44E57A9 + xmp.did:3814F5472222E1119E7CE506E0C4F7CC + xmp.did:3827887259CEE1119177BD2372B6623A + xmp.did:382F6AAEE32168119109CA2496A1ABE5 + xmp.did:383D036FCE50E111836E91728D1F165D + xmp.did:38459371F554E0119AB4BFE0E8E054D5 + xmp.did:385422653BF711E0909EA53496E0FC1C + xmp.did:3854226D3BF711E0909EA53496E0FC1C + xmp.did:3888163F0820681188C6D9EA900BA018 + xmp.did:3899A736985FDF11B2CA8214573409C4 + xmp.did:38A0129A8F21681192B08499B73FEA31 + xmp.did:38C422960C20681197A5CF02E0728B84 + xmp.did:38D0BD89F023DF1188E9BC78A3296E4D + xmp.did:38E9D35D4915DF11B1318223C6A8EDE9 + xmp.did:38FCC9D3BBC7E111A392B01B6AB9F3E7 + xmp.did:3912C3EE71CDE011BA3DD8E17B7CC528 + xmp.did:3926CCE27E0BDF11A030B481402BBCF7 + xmp.did:39279618-c810-7241-b94e-eb6074c3002f + xmp.did:392D43900A2068118C14CA160A1107BD + xmp.did:3950F4AC85A7DE118CEAEDA48A305F2F + xmp.did:397A4F09B40DDE11966CA376FEFD02A9 + xmp.did:397B173891D6E011A6609ADEF82F5EAD + xmp.did:39B0E4AA0720681192B0CBD54873552B + xmp.did:39B31F72C2A3DE1186BCED3D2B4DBEDC + xmp.did:39B57425EE78E0118E0C89F1D9CA3B5C + xmp.did:39BB885782216811BFE5BF57D4DB04A4 + xmp.did:39EAC0128F97E011962BFFAC6450C1F3 + xmp.did:39F2F33568CDDF11BAE8DB4E46B8181C + xmp.did:39FF867D192068119DC8CD0DD86E92FE + xmp.did:3A23DA5E332DE1118E0489229C4093FF + xmp.did:3A27887259CEE1119177BD2372B6623A + xmp.did:3A3E527FF1ECE111B68CB318F0720312 + xmp.did:3A4E5748B2EADF11B8F8F2DA27BD855C + xmp.did:3A5E0B035156E011B796E178D4247221 + xmp.did:3A62EBC4235111E0B173A65C0EC2E2AC + xmp.did:3A6850363F8DE011A68BE05DED48B03D + xmp.did:3A6CAF272B19E01184DD8FBD11034008 + xmp.did:3A6E16669F9AE011AC2F9647199FCE06 + xmp.did:3A6F9D92A61611DFBAD2EC08ECAC5B51 + xmp.did:3A76783CD0A8DF11B2A19D50FF21B8D9 + xmp.did:3A9529126A8FE011BCB1A86DDE40959A + xmp.did:3AB229219E4FE111ADEFFB8D9153E025 + xmp.did:3AC479BB1DE9E011A896B1B56B3DD9A0 + xmp.did:3AD0BDC12D4EE011AFE6F3E4B712C80D + xmp.did:3AFDC23E70226811B11A92B201D0FBA9 + xmp.did:3B0FA35A1616DF118A59B5E2AB087CC7 + xmp.did:3B1B85AA6CF6DE1181C1B63B905A4C52 + xmp.did:3B2D61CA3C1DE11198B19E3212C96738 + xmp.did:3B44C1030C2068119109D8AADCC33AE2 + xmp.did:3B4935695C11E011AF25AEA653FFC4B9 + xmp.did:3B4978128416DF11A899F6901DF10491 + xmp.did:3B543F372202E011AB93E785DE5AAAD7 + xmp.did:3B612268DAB6E01187C39E0D90EB37B5 + xmp.did:3B63DACFBB1FE011A8AF8AAF7A0EFDA1 + xmp.did:3B8918A11363E111822FB7E06D486BE2 + xmp.did:3B8B41A0C306E0118354D5D7FD259081 + xmp.did:3BC6CE12C370DF11850CB72DB9D2CB92 + xmp.did:3BFA778B9857E011862FE5C282544300 + xmp.did:3C1ED0B40A2068118C14CA160A1107BD + xmp.did:3C20F63FD75CDE11BB4D8723939A608E + xmp.did:3C2D43900A2068118C14CA160A1107BD + xmp.did:3C3603469AD511E08F0ABD72ABEC7BC6 + xmp.did:3C459371F554E0119AB4BFE0E8E054D5 + xmp.did:3C4E5748B2EADF11B8F8F2DA27BD855C + xmp.did:3C54B7EE4800DF11BAEACCE7A02037E4 + xmp.did:3C6BF98077C0DF11A0C6E85C52356EDC + xmp.did:3C7A44148EBCDF11967FAB8FFF3284C8 + xmp.did:3CA2C5598897DF11A1CEA3BF0E1262A7 + xmp.did:3CBB494529D1DF11A5339ABF8266E818 + xmp.did:3CCD110BF317E011838ACFA81DAB3100 + xmp.did:3CE1367468B3E111948DF052D11BCB42 + xmp.did:3CF82EB69F9FE0119BCBD8F341DF2FB9 + xmp.did:3CFF50C3440EE111AA3D8E2708E806F4 + xmp.did:3D02E62ADF8CDF1181DCCB8E8B77F31F + xmp.did:3D08902ED27ADF11B2F4C6E175BCB62D + xmp.did:3D37F11F454EE111A34AE6D6FA0B9B37 + xmp.did:3D3CBDF5B74E11E188D5EDA767F913C5 + xmp.did:3D7B9D5D023DE111BE62CEEEB0509B81 + xmp.did:3D8B41A0C306E0118354D5D7FD259081 + xmp.did:3D91B8555439DF11ABB5B5EEDCC62DBF + xmp.did:3D91CB020257E011921BE2DE87A39B49 + xmp.did:3D92D03BA4CFDD11B52AB19626D9948A + xmp.did:3D9B8EE20189E1118D5FA8E994749755 + xmp.did:3DAF307F7014DF11A458C5CFD2E93622 + xmp.did:3DB84188FA7C11DFB783F7B8A6F92664 + xmp.did:3DC5DC2AF7B4DF11B802D46C713DC211 + xmp.did:3DDE3017132FDE11AE94BE5AD4E8E9EB + xmp.did:3DE9DBAC1FE0DF11B912D7BE6B67373F + xmp.did:3E1BBDAACE60E1118E5E9D76712CE7DA + xmp.did:3E2C41CF298E11E18B5DFB3DA3CF942A + xmp.did:3E3FEFBD5148E0119D53B041F3630230 + xmp.did:3E4901925221681188C696DC609994EC + xmp.did:3E5A8A2E05C8E011A39E8A7530EDB9C3 + xmp.did:3E8A102C200C11688442D886113E168A + xmp.did:3E976770082068118DBBE3913583D1DF + xmp.did:3EB87EC31A20681189B790932B943846 + xmp.did:3EBA6728D72168118317ABB614DA433E + xmp.did:3EBF6C9212F2DE11BB659815B35D6796 + xmp.did:3ED7F83F4D12DE118ADCB03FF5C3F3B4 + xmp.did:3EE476995A28E0118FEFFAAC272DD9E7 + xmp.did:3EEE2DB5B07FE0119FBDB1C3DCB285CD + xmp.did:3EFB928C8B8FE111ADAE8F5F30467886 + xmp.did:3EFF4374A19811DFAE908FAC53CA53A3 + xmp.did:3F1C56E81875E0119074D0B14E4AADFB + xmp.did:3F1E6F155269E111B9BDABCDBF0CDBDA + xmp.did:3F2840BBDAF4DF119B9FED66B6875A77 + xmp.did:3F3B20E9D64CDF1194C6DDC2F8D81D2E + xmp.did:3F42740E15206811871F9627524275B1 + xmp.did:3F4506FC1DEDE011AC82F7E44ECCCDC7 + xmp.did:3F4901925221681188C696DC609994EC + xmp.did:3F5068DCA87DE11188FAC430D1AD6311 + xmp.did:3F6B4C626AC7E011B58A93F597C8E61A + xmp.did:3F727C802A20681188C6D9C4D0AF0270 + xmp.did:3F78088427A6E0118684D1CA18D2B426 + xmp.did:3F8016171B37E0118C1AB51C1361E9F3 + xmp.did:3F88163F0820681188C6D9EA900BA018 + xmp.did:3FA591860E20681188C6AAF8EEECA0D4 + xmp.did:3FB9609F5BA7E011979696CECC20A286 + xmp.did:3FBE3CFB20206811A472E9C34FBDCB1B + xmp.did:3FE59DD5559911E29EACEB1488FE7807 + xmp.did:3c421679-623a-e541-98c8-4fe70440dab3 + xmp.did:3c886fab-137f-d14e-bf5c-f7aacc7eb106 + xmp.did:4020F711183DE011B45A9B113C09C8C0 + xmp.did:402c0f77-e4da-a240-b512-a23a1fb491fb + xmp.did:40454C41DF1BE1119781B671D6C1F6BE + xmp.did:405E424AEEECDF11B935C9AD4A25732D + xmp.did:405FC8987522DE11BBFBFAA234DCCB65 + xmp.did:4071EA323461E5118FE2BB08C2ACA14D + xmp.did:407648AE66ECDF119B43E216FDEB188E + xmp.did:407BA1D2DE21681188C696DC609994EC + xmp.did:408D666C715CE011B2348D7764DC1797 + xmp.did:409a6bdb-0b3f-dd4b-9c75-70938c84512d + xmp.did:40BA20E1B4206811A974D177170159F4 + xmp.did:40BB217CBD84DF11A47CEBE628912B02 + xmp.did:40D933173DA9DF118BA8D9A6AC4FC818 + xmp.did:40F5E85E7ECDE011A9998254DA7B207E + xmp.did:40F731B050DEDF11BEADE949719B9232 + xmp.did:41144A9F5CBBE011A9CDC1CC5A8545F0 + xmp.did:411E6F155269E111B9BDABCDBF0CDBDA + xmp.did:4154E4AEED7CE0119A0BC76B399E0032 + xmp.did:4156DD758C9FE11199E2F14D20E8CA04 + xmp.did:41796D9DE2A6DD118E7DFB3813E70A6E + xmp.did:417DFDB0BC05E1118C86C330FD4AF7E2 + xmp.did:417F65BCE318E0118D9DF6211E37BF71 + xmp.did:4189AD4E03CBDC11AE3FBD93AC4A90B6 + xmp.did:41A8D9E589206811871FBF7EE03058F8 + xmp.did:41A9560DBA6FE0119ED2905B94864B50 + xmp.did:41AD0A8A3E53DF11BBC9F07C3C1B9502 + xmp.did:41EFF0323C53E011A057930113C3E3DE + xmp.did:4201A2E9CC7CE011ACC3F5342FA3B453 + xmp.did:42347552804DDE11B44495B80040B8DD + xmp.did:42454C41DF1BE1119781B671D6C1F6BE + xmp.did:424BB55AE956E011921BE2DE87A39B49 + xmp.did:4257FC48EE1FE111943CFFB592B83714 + xmp.did:42611933C6E9DF119366D222F59B492C + xmp.did:426956A63C7EDF11A5A4E9065FAC704C + xmp.did:427629EB1F7AE011BC6ADBE9D9257556 + xmp.did:42909406645FE011964FE99A58EBB358 + xmp.did:42A169505720681188C6D9EA900BA018 + xmp.did:42A8D9E589206811871FBF7EE03058F8 + xmp.did:42AB1B5C1F20681197A5DEA0680BC756 + xmp.did:42B79C4D1720681188C69E9C0DE8906E + xmp.did:42C4817E9C26E011B262B0F70244DA0F + xmp.did:431EDC4C6054DE11B623AC135EDE268F + xmp.did:4344A07E3B08E011A2E0827B931E15AF + xmp.did:43487F5815BCE011B0BBD5E3244285CA + xmp.did:434BDEDB59F8DF119899B9EB40ABC97F + xmp.did:4356DD758C9FE11199E2F14D20E8CA04 + xmp.did:43574DA70B20681197A5EA3B7AA659C7 + xmp.did:4374A882122068118C149D08F70A161F + xmp.did:43755A9AFC18E1119D84D715C261710C + xmp.did:438F6A44B737DF119E2BDBB77898A4FE + xmp.did:439100E54D2068119109A2DB3088B7FB + xmp.did:43A34293F69B11DFA8A998BEFB19928F + xmp.did:43E505E0A52E11E18949BC2F75572046 + xmp.did:43F731B050DEDF11BEADE949719B9232 + xmp.did:441964CCBFD1DB11B63BFBC5192B9E16 + xmp.did:441E8B361020681188C6D9EA900BA018 + xmp.did:442A5BA61738E111BC2EAA49144639E5 + xmp.did:444A30B35C35DF11B6C1EB0CD908AC7C + xmp.did:444BB55AE956E011921BE2DE87A39B49 + xmp.did:44569F2270206811B540D1205A8C4334 + xmp.did:44BA610FF715E011850FA901B4C1B675 + xmp.did:44DD59AD2520681188C6AE32EA398297 + xmp.did:44E09416B60BE1119FDFE655EE4741B9 + xmp.did:44E7544D1D2068118C97EB5E0646166B + xmp.did:44EF1CC81D5DE111BA9EA5EECCA192C4 + xmp.did:451ED0B40A2068118C14CA160A1107BD + xmp.did:453680A25EC9DF11A86DDD161CFCEB0D + xmp.did:4556DD758C9FE11199E2F14D20E8CA04 + xmp.did:45599B5D3BDFDF11AD98D0CC567A99E5 + xmp.did:4570BD20092068118C14CA160A1107BD + xmp.did:4576CCCF10F2E01181E9C4ECE5334D00 + xmp.did:4582F7613448DF11AD0C84D94E5D43BD + xmp.did:4590A1312920681188C6D159E68FEEFA + xmp.did:4598694A18206811871FDDA91FB9E95E + xmp.did:45A4F3EAA568DE1185E69FA1410AA5B4 + xmp.did:45A6E9D55D69E1119C239406340D5219 + xmp.did:45A7DCFAEDBCE011BF2AACD6B4D6CFD4 + xmp.did:45BF49C464C8E011BEF0A37AC8AFF6B8 + xmp.did:45C823427EC2E011AD47BA23B2F462DA + xmp.did:45DBE3CD4064E011BE35A96660A529B6 + xmp.did:45F62045FF1CE211BF1CBEAB02877C54 + xmp.did:461E8B361020681188C6D9EA900BA018 + xmp.did:46246AD5FA91E111862BB531A753E343 + xmp.did:46331EEE8D67DF1186D5AC0CAC7987D6 + xmp.did:463826EE1895DF118D69EC6829104E8E + xmp.did:463C55EC1F206811871F9753D344F7A3 + xmp.did:4640EA1197DCE1118E89A806EF65A4BF + xmp.did:464BB55AE956E011921BE2DE87A39B49 + xmp.did:4664B0A32931E0118364F2CA7D5EC6B3 + xmp.did:4667C1F29B4411E192E9FD709E2209FE + xmp.did:4698694A18206811871FDDA91FB9E95E + xmp.did:46A95EEE9FBFE011B0BBD5E3244285CA + xmp.did:46AB7E0D2730DF119042AD88AD5F9FC9 + xmp.did:46BD6B5B42206811871FBF7EE03058F8 + xmp.did:46E39520AEB8E011AEBCBCB1E3A15768 + xmp.did:46F5A5BA3D27DF118764DFF2BED5DF99 + xmp.did:46FDAC28978AE0118DBED2E4485D9FF1 + xmp.did:4746AD6E0D20681192B080542646EBD1 + xmp.did:476DABBEBE2068118F62B3176EE25187 + xmp.did:476F1CD16781E11188B38C1B708219C8 + xmp.did:476FA1DD1EA0E2119B6AF5DBD00059DA + xmp.did:477073BEEF5311DFAAA98C98ECCDD189 + xmp.did:478EC352F4C9E1119EA79373B9BC3BC3 + xmp.did:47978C42CFB0E0119D6F9C0C98B703B4 + xmp.did:4798694A18206811871FDDA91FB9E95E + xmp.did:479CDB52B3FBE011A7B595483F6A098A + xmp.did:47A025DDA507E011BCC496E451D7DB93 + xmp.did:47AF707BD60EDF118B00F190D25449A6 + xmp.did:47C45F90EF51E011A7FFD475429BB942 + xmp.did:47D33D95C52DDF118ED8A2DA6C6F3EAB + xmp.did:47E95EE7918BDF11B431F617D2B0D770 + xmp.did:47EC5BA76A7FDF11BAF8B52E1E51BD34 + xmp.did:47F74A29D808E1118102AC8D7C27DD42 + xmp.did:4804CD8307206811AE56F87BB2B8114A + xmp.did:480B7E46AF78DF11A825CF8DE5D91DF7 + xmp.did:4814DD170A21681188C696DC609994EC + xmp.did:48247F628A5ADF11B98189BD66F4557A + xmp.did:485C5229B748DF11893994E032BD6174 + xmp.did:4870BD20092068118C14CA160A1107BD + xmp.did:48915FC2174FE011BDBDB567509B8083 + xmp.did:4898694A18206811871FDDA91FB9E95E + xmp.did:48B3A7A23CCFDF118F31D6D8ACE6A8C6 + xmp.did:48B7BD0BD1F1DF11911DAE3F77A72C12 + xmp.did:48C65EC2E457E011A5729168D8E7A3E3 + xmp.did:48CF0A41B8B1DD118872D2642AE2DAF4 + xmp.did:48F0CFEAD8EDE111B3DFE20AB5401A84 + xmp.did:48F5EFE5AE80E0118A91AF6880B6674F + xmp.did:490F1294772068118F62CA3F9DC2F6E5 + xmp.did:491128E6FB1EE0119379A4F677F56E27 + xmp.did:49386C717734E011A019B41CBA79332B + xmp.did:4948814585206811BAB9848BFF04B50D + xmp.did:494AFE84777DDF118929E3EE1EDD477C + xmp.did:49574DA70B20681197A5EA3B7AA659C7 + xmp.did:496823831E2068118F1CFECA782915C6 + xmp.did:4978DD280123681192B0CABB2874AF0C + xmp.did:498483E5F98CE01198D0FE1F91647194 + xmp.did:498ABD1F3EAEDF11919BF6332CBAC93E + xmp.did:4998694A18206811871FDDA91FB9E95E + xmp.did:49D4AC3386B9DF1183F4AC1AAA34C68B + xmp.did:49F74A29D808E1118102AC8D7C27DD42 + xmp.did:4A0CBE8F945CE0119B94E398813E13AB + xmp.did:4A1EBCFE2F81E011A5DCFAD8B2CA8719 + xmp.did:4A3690F90B20681197A5EA3B7AA659C7 + xmp.did:4A5492E84121681197A5CC815690B972 + xmp.did:4A8C986F082068118C14CA160A1107BD + xmp.did:4A98694A18206811871FDDA91FB9E95E + xmp.did:4ABE80C3082068118C149610130B0328 + xmp.did:4B04CD8307206811AE56F87BB2B8114A + xmp.did:4B12AF1A50216811AF5C82C8D4EEE19A + xmp.did:4B1934C56019E111B99AB3CE7E755584 + xmp.did:4B1B4C0A1009DF11BD51F318E9EDA9E8 + xmp.did:4B21FE42BD6CDF11911EC27BB26DDA05 + xmp.did:4B4BB55AE956E011921BE2DE87A39B49 + xmp.did:4B6350D9190AE1119CA4F855D5CB82C4 + xmp.did:4B67294ADAABE0118527B8EAFF3D3500 + xmp.did:4B70BD20092068118C14CA160A1107BD + xmp.did:4B74A882122068118C149D08F70A161F + xmp.did:4B7FB49D5923DF11A900C4074BC8C82B + xmp.did:4B9814BC15F4DE11AF6CDAFEEE28CBC2 + xmp.did:4B98694A18206811871FDDA91FB9E95E + xmp.did:4BED9D2BC8DFDE11B9EC81691F4C5197 + xmp.did:4BF017517891E011A641DC292DAFE840 + xmp.did:4C1D49747AF9DE11B4E48706BE9DF0EA + xmp.did:4C3561B5906411E093E9D1659035C895 + xmp.did:4C4B4C369993DF119B1780512FA1807B + xmp.did:4C4D4D899EF7DD1180199D0A99EB683F + xmp.did:4C51B774A17011E0A528DEF2AC8C55C6 + xmp.did:4C6838FCF6A6DF1196A4E198EBE76935 + xmp.did:4C8C79BCDBF8DF11A111C57C46790BC9 + xmp.did:4C98694A18206811871FDDA91FB9E95E + xmp.did:4CA1D100CDC1DF11AAC7DEF7E9EA2229 + xmp.did:4CB4290587A5E5118332885826B94038 + xmp.did:4CDA76DA3520681188C6CC41240299E2 + xmp.did:4CF62045FF1CE211BF1CBEAB02877C54 + xmp.did:4D0380FF432BE01182F0EF4B48EB2E6A + xmp.did:4D0AE0E0D252E011BA4AB6EDCDCC4831 + xmp.did:4D0B9BDE36F5DD11AB2EA102057BBEF5 + xmp.did:4D1DDC43B313E011A748E9376C2E7668 + xmp.did:4D1E0DEBBD4DDF119652FA6896B533BB + xmp.did:4D3C03335437DE11BF8FBAB55C346848 + xmp.did:4D494A0217BB11E3B692B18AEB54B058 + xmp.did:4D6B6E662A11E11181B5DA14AAEB2E73 + xmp.did:4D98694A18206811871FDDA91FB9E95E + xmp.did:4DAAAEDB0A2068118F62A7CAF58A0ECF + xmp.did:4DAFC3CECF1EE211BE8DB8B3F7E00EAA + xmp.did:4DB28F7959A0DE11BAC6E034BAFE50CA + xmp.did:4DBEA27977A8DF118F21D1D567EF8AD7 + xmp.did:4DCB8A30914DE011BD63DE0802894CA1 + xmp.did:4DD9E0323FB6E011B0ACD99321186146 + xmp.did:4DFE631B1C2068119109D986A10A20A5 + xmp.did:4E0FECBC2E2068118A6DD7573F87E2BC + xmp.did:4E2A12FF272068118DBBF1E759913209 + xmp.did:4E2BAD1FE993DF1192AEA9A5E3F4B457 + xmp.did:4E533D5EEE5EDF119B819E13233C116C + xmp.did:4E5BCDD097A8E011B01BA4DFDBC23FA5 + xmp.did:4E69AE641A5EE011854793DE1DD512EE + xmp.did:4E8C986F082068118C14CA160A1107BD + xmp.did:4E96D8071320681191099262B251A4F6 + xmp.did:4E973EF258BFE411A9FAC103750747B4 + xmp.did:4E99A86EF541DF11B948936BFEB99B26 + xmp.did:4E9BA5EE0592E211A1A8BC71C3C2BC10 + xmp.did:4EAFC3CECF1EE211BE8DB8B3F7E00EAA + xmp.did:4ED51F8472C9E111820CE6452E34E927 + xmp.did:4ED803373643E011B980DE20246822FC + xmp.did:4F2BB01AB3C6E011AD3EE53AC7357D5F + xmp.did:4F2FBD5B3833E211ABC1ADC0DA5AC883 + xmp.did:4F56D5CE2A43DE11B230A3F70B3D8EA1 + xmp.did:4F5D575DFE1FE511A51DC97A91AF6BBD + xmp.did:4F5D5D093A2068119109E712EBBC724D + xmp.did:4F6BB8702C206811871FE169E7DC3C98 + xmp.did:4F8AB61DA296E0119EE8EE476D1E051E + xmp.did:4FB530695F67E0118ECB90358FBE1E8C + xmp.did:4FB5947B5EBBC311A5E5C515BE47D0F8 + xmp.did:4FC590E194BDDD11ABEE8043744BA28A + xmp.did:4d403b6d-8829-224f-86f2-bc7c63f9e736 + xmp.did:500A9AE2DD206811A613B4EE39B4D58C + xmp.did:500F5EDF2F50DF11922CB8ED6241084E + xmp.did:5032E746EBDCDD118BB0ED485B2406E3 + xmp.did:50524EC24C44E01183D4E2B1F7047647 + xmp.did:505381322485E011BD3DE9624629426F + xmp.did:50597A69706BE0119746BE45AD0E721F + xmp.did:507BD60A0B2068118DBBA622512CB8CA + xmp.did:508D3E68D809DE11B008F589BD96C980 + xmp.did:50F0464C0C2068118089E259502D6AC2 + xmp.did:50FA52B1B48011DFB826D3AA01EB6EA5 + xmp.did:510969F61E0FE0118A4E830B74E1FFC7 + xmp.did:514F67C5E3A0DF1198F8A7B931697359 + xmp.did:51546FDD1320681192B0BAA904DE0F8D + xmp.did:515BBF39122068118C149D08F70A161F + xmp.did:51709CEA4EF5E0118AEFF77CA899693B + xmp.did:5183FB70726BE0119379872BF73B437B + xmp.did:51930AC62E69DE11AA1BC216D8BAC455 + xmp.did:5196BAC754DDE011BAE8BFD67BF28627 + xmp.did:519BE5F0BA5FE011A191C9DDAE1475CA + xmp.did:51B2D0D92776E011933EE6BFA7C54C61 + xmp.did:51B82BC8222068118A6D8F7F76AB4DDC + xmp.did:51E180E6693DE011975ECA27E796C556 + xmp.did:51E19B2B4937E011A1BA9E24118AF4FF + xmp.did:51FF6CF6C089DF119F34D7C9EE19F081 + xmp.did:51FFE781FC0CDE11A770A9ABB3D9137E + xmp.did:52202EBBE2D1DF11B62FB64E37A3F729 + xmp.did:5232646C26CBDF1190EAEC1F0BACD3F2 + xmp.did:525123B14731DF11B62BB34304F99503 + xmp.did:525BBF39122068118C149D08F70A161F + xmp.did:525C70450616DF118A59B5E2AB087CC7 + xmp.did:5261C72A21266811A67E8ED38578482C + xmp.did:526567FC8325E1119633A186D2B4EF6C + xmp.did:52910D990C206811A961A044C143500B + xmp.did:52A78DE70D40DF11B592ED4FEDEAEC5D + xmp.did:52B7A3270F2068118F62A3E02945DBDA + xmp.did:52C94185CFB3DF11873FA3644F977FE3 + xmp.did:52C9A3706688E0119CB4F68A2382DBB2 + xmp.did:5304ED760E0ADF119A9FE10546950C1E + xmp.did:530A6AE28921DE11866B8CA0458DE1FB + xmp.did:530B9BDE36F5DD11AB2EA102057BBEF5 + xmp.did:5315C5669F2AE0118B90F7C5660D0A20 + xmp.did:53205F6D5238E1118696F30CED7069E4 + xmp.did:533608436CCADE11A63FB756BDDB7251 + xmp.did:5339AC183FD9DD11978C91CC1708D5EB + xmp.did:534D014492F1DE119AD9AE105FCB51B3 + xmp.did:53733AE68294DF11B9E6EB401BB77999 + xmp.did:538F8AD33C23681188C6E3B2AFCF6608 + xmp.did:53AD6C7CE8236811994CDC03CCB20552 + xmp.did:53AFA94BE4C5DF11AF76D9EA40AAE7CA + xmp.did:53CC70FD5E84E1119329CC85FF44F892 + xmp.did:53E6B8FB5C8AE011BC8FCA29DD1F435A + xmp.did:543A798F1307E011846FE8C04D3C8DEC + xmp.did:54546FDD1320681192B0BAA904DE0F8D + xmp.did:545EB8DBBC43E11187E4ADAAC3CF7D1F + xmp.did:5486A1697EDD11E088DA9F4613AD5153 + xmp.did:5489D78E1966E111BC68E08AF29E25BD + xmp.did:5496D8071320681191099262B251A4F6 + xmp.did:54C3F9F8BDAEDF11A5DC959C82ABC9E1 + xmp.did:54CFF0515F7BDF119EA689981ABBEBFA + xmp.did:54E7158DEB69E1118841DE2AB33AFE73 + xmp.did:54E79C929685DE11AE47F5AAFBD63A78 + xmp.did:54F9E800E79DE111BE69BFE9C0C0CD7F + xmp.did:553410A2EE96E2118FD8A7A01025FD91 + xmp.did:555BBF39122068118C149D08F70A161F + xmp.did:555E1046C51EE011A0908899644B66CB + xmp.did:555ae0f6-3e55-4623-8724-5d4ec7b41740 + xmp.did:556E056A4621681188C696DC609994EC + xmp.did:5575E5993879DF11B8DDA0E346A0AACF + xmp.did:557C42AE992068118F42CFE2A9EBEA82 + xmp.did:558F2E591FE3E111A7A7A76DE40B7C8E + xmp.did:559FCD3B527ADF118914DEB1351761F1 + xmp.did:55AD6C7CE8236811994CDC03CCB20552 + xmp.did:55BAE8C3DA4AE0119837C684583C0F40 + xmp.did:55C093961E2068118083EBC7D6F18424 + xmp.did:55E7132B1BB5DF11A19186F05CE04270 + xmp.did:55F4FBB99791DE11B12EF689609D0B42 + xmp.did:561C42650844E0118B57D6CDE7B92D50 + xmp.did:561C9EFD9821DF11B016B733C2ECF725 + xmp.did:561D4500A0BADF1198CCD17583B8FDBC + xmp.did:562A2793D091E011A248938433DFFFC9 + xmp.did:562C40D529206811994CD1B168EB5E61 + xmp.did:56368E8BA19EE21194DCEFEC1670396D + xmp.did:56402A691920681182ACDB24A62CF844 + xmp.did:5666D022C4EAE011ABAEB46FA81D72C8 + xmp.did:566D2ECC9DB3E111A7E8AAA3B2B460EF + xmp.did:5676C3FC081BDF1193D4BFF1E63C0B19 + xmp.did:567A03F8A2EFE011A7B3CE197EFE4829 + xmp.did:56828BAD69D5E01184AFBC72FC369E44 + xmp.did:569A638FE645E011B31B966D0E85ABCD + xmp.did:56BDC0B7BE24DF11A9E6FB78804C0B92 + xmp.did:56C94185CFB3DF11873FA3644F977FE3 + xmp.did:56EAD66EECEDE1118EBDD2792BC326D4 + xmp.did:56FD0742357AE1118349FA99D447291B + xmp.did:5710D430DBDEDF11A01B963F18D1E5FD + xmp.did:5714D17D71E1DF118FD9CA4594346858 + xmp.did:572A2793D091E011A248938433DFFFC9 + xmp.did:576085FEFF03E0119437AF301FD75868 + xmp.did:5760B17E7604DF118364C9CFC0647EE2 + xmp.did:5773E281952468118F62FBC130F2812B + xmp.did:577969B29D5011DF8B1491785F4DE9BB + xmp.did:578458179BAEE01192F1F4F0A96F38D5 + xmp.did:57875927D602E011A2A5BCE9F6860872 + xmp.did:57AE1E4A081AE0118143CB22880CF205 + xmp.did:57BF45BA36FEE011A779EAF85ACA9F5B + xmp.did:57CCE6F060CAE1119564D352D5333B81 + xmp.did:57D6B3158D35E111ADBA85EA1AC74BBE + xmp.did:5810043BA779E11198B1ED7CAC998B58 + xmp.did:581BF8E14D2068118F62E320692B2BD6 + xmp.did:58316A45F5F5DF11807F8C8A28F8A117 + xmp.did:584705D961CFE0119D8EBABB5438DA12 + xmp.did:5855B0D08898DF11AE07EDA47DA8337D + xmp.did:585BBF1B01B6DF11AA09B180E60AB9EC + xmp.did:586C37206F1EDF119898ACDBDF5F125E + xmp.did:5873E281952468118F62FBC130F2812B + xmp.did:588B5ADCDC0AE0118BD59C14EE86890A + xmp.did:588B880E28206811B699A9F2A6E6A64B + xmp.did:58B2DD181020681197A5CF02E0728B84 + xmp.did:58C5F0225DF9E011B214F5792286513E + xmp.did:58D9780C7A8EDF119A4CEF1A1CB781F4 + xmp.did:58E5C305FA3DDF1190CA8266881FE2CE + xmp.did:58E65F856559DF11AC24A4CF59A063EE + xmp.did:58F3FE65A82CE01196BDCABB5011975D + xmp.did:58F9E800E79DE111BE69BFE9C0C0CD7F + xmp.did:58FE62218DA8E111832BA801CB77D0B8 + xmp.did:591495083545E011A6508A8D953AD54D + xmp.did:592C40D529206811994CD1B168EB5E61 + xmp.did:59512F6615C7DD11897AC28FEDC73C57 + xmp.did:596D3B064F02DF119FC4E7433C363418 + xmp.did:5973E281952468118F62FBC130F2812B + xmp.did:59828590A5F3E011957E8B3834F4FAD2 + xmp.did:59B25B4D66D0DF11B523B3B7AE6AC7C0 + xmp.did:59B2DD181020681197A5CF02E0728B84 + xmp.did:59B655E71066E5118173F603034EE904 + xmp.did:59B8C167EFA3E01196589D6886C4728D + xmp.did:59CC70FD5E84E1119329CC85FF44F892 + xmp.did:59D6B3158D35E111ADBA85EA1AC74BBE + xmp.did:59D8B4E85850DF11B19CCAD5C01FAD53 + xmp.did:59D9780C7A8EDF119A4CEF1A1CB781F4 + xmp.did:59DC1710FF35DF11A2FBC640E7D898E9 + xmp.did:59E1EC2405B5E011A3BB871D74138CD2 + xmp.did:59E2FDB5FC7EDF1181B8AE21B5EA78C7 + xmp.did:59E544413D4DE011A83790B7CFBF45D6 + xmp.did:59F62428F37EDF11928CE252CAD94E87 + xmp.did:5A05066086AFDF118579D70EC7E7977F + xmp.did:5A1495083545E011A6508A8D953AD54D + xmp.did:5A4FFBC572DEE011B762C41F093CDCD4 + xmp.did:5A5EBC82CCDFDE11B9EC81691F4C5197 + xmp.did:5A6EB0B139B7E0119B82B90D0FB0B438 + xmp.did:5A7857A71A2068118F62FE65054DA858 + xmp.did:5A971BD2B40DDE11966CA376FEFD02A9 + xmp.did:5AB2DD181020681197A5CF02E0728B84 + xmp.did:5ACA778625C1E01180B9D22014B81B82 + xmp.did:5ACFE438E9A5E111B97FD799B9848AAA + xmp.did:5AD9FB666197DF118258E3F04E6D4AE5 + xmp.did:5AE9F317AB2AE0118099EFAF9826A439 + xmp.did:5AEB6AEB2FA3E5118E33F66A8BD771A6 + xmp.did:5AFE62218DA8E111832BA801CB77D0B8 + xmp.did:5B00864E4767E01197F3F9B0477D6229 + xmp.did:5B1B46E9388DE111BABCE8AB5D204B95 + xmp.did:5B4C004F5F58DF11A53B962F289D8004 + xmp.did:5B6D331385C9DF11A5F3DC003393B63A + xmp.did:5B6DD2B74584DF11B7248B7DDF794A1A + xmp.did:5B72F3DC17B4DF11AF89EBB2394F758A + xmp.did:5B7AA9246858E111BE87D05087E5802C + xmp.did:5B8427F9C7F6E01193089EB7AFCD8499 + xmp.did:5B849BF275DFE011BA5993DE83EAAF37 + xmp.did:5BB960616CC8DF11BE50C111E8F22B03 + xmp.did:5BCBBCD4DFA8E011A1C5BFCBA42739AF + xmp.did:5C146AA32C206811871FBF7EE03058F8 + xmp.did:5C25826706C1E111B8AFC8EAB9E17925 + xmp.did:5C29F469FEEBDD11AB8ED4A69948B22D + xmp.did:5C3AC076E780E111860A8B44442DFEC0 + xmp.did:5C4C700964DDE011B9D38DC322286530 + xmp.did:5C5ED522282EDF11A463BFE9B18FCAD7 + xmp.did:5C79C2F2360BDF118E2BC46506FA8698 + xmp.did:5CAC3B5AF977E011AC53A76EEAD13040 + xmp.did:5CB2DD181020681197A5CF02E0728B84 + xmp.did:5CBEFE6C11206811871F884EEE799340 + xmp.did:5CC35F20DB85E011A0088ADC2704A3EB + xmp.did:5CD9780C7A8EDF119A4CEF1A1CB781F4 + xmp.did:5CEC9C6EC13DE011A0BEF8DDCFC32D6A + xmp.did:5D05E9779B5CE111AF54E297161B5AD6 + xmp.did:5D06DA31CACFE111AC30DB1AB173EF9F + xmp.did:5D0CDBD57F76E011BA3CF330558605BE + xmp.did:5D2898863416DF119079C3694A6DFA33 + xmp.did:5D3518AA242FE011A6E6B18C85895FA1 + xmp.did:5D377513DC03E111A5D7E4289992D6E3 + xmp.did:5D4DC145718EE011B949BB5BD22F5B3D + xmp.did:5D54F6D2D769DE11A1369DAE1EDA466D + xmp.did:5D5B649BF6C0DF1186AAE9D42E01A0E5 + xmp.did:5D6946B0F8F3DE11868AA1AB4A3A26C8 + xmp.did:5D6B2172401FE1119218D05A8DD66098 + xmp.did:5D7E93F5833411E0B62FB7127DA0FEAF + xmp.did:5DCA0D82DA5DE0119024AE959D97E7BD + xmp.did:5DE7C465E499E011A42DEC14C3EFCAEC + xmp.did:5DEB50BEA655E111AF8EB7075B96BF92 + xmp.did:5E01ED757CD0DE1187EDF718B96B3EF5 + xmp.did:5E1088AD7C2BDF118F8FBA642A5109BD + xmp.did:5E15A117DF56E011921BE2DE87A39B49 + xmp.did:5E1C88E1FC20681188C696DC609994EC + xmp.did:5E2369AC8279E11198B1ED7CAC998B58 + xmp.did:5E7CAC5DC62CE0119401FB662C8F6117 + xmp.did:5E971BD2B40DDE11966CA376FEFD02A9 + xmp.did:5EB62A055ADCE011AB52B65422351742 + xmp.did:5EBFB154ADE2DF11B951B300D40303E7 + xmp.did:5EC857194DD3E0118BBCBA5E7FF86AF5 + xmp.did:5ED080139B4011E1BDF8AB7E2919F0A2 + xmp.did:5EEAAC8A3A206811B739B723BC918F82 + xmp.did:5EF6E033572FE011A924FF15510F1797 + xmp.did:5F0079D829206811B1A4D56600D919C7 + xmp.did:5F2CF7595D206811994CE68A7A8A9137 + xmp.did:5F4BFDF37F1ADF119CB8E7D742FA3A25 + xmp.did:5F554DC1928DE01198F6DEB571DE692C + xmp.did:5F6455BB3926DF118BC5928689F4BE6C + xmp.did:5F915B5B59C7E011AD3EE53AC7357D5F + xmp.did:5FB24B6A67E811DF98D1BEA7C517AF65 + xmp.did:5FCC7930492DDF11A6B3A602AE0FAF20 + xmp.did:5FE6D9D350C0DF119F38D65D70582EB3 + xmp.did:5FF86667EAFEE01180AFFEC6C6751064 + xmp.did:5bf56338-5426-9a43-a3db-fd23c03b1ffb + xmp.did:5d723d58-147f-0b46-b7c4-07effab48c63 + xmp.did:60101587-7a8d-5f49-8165-80462457d4b3 + xmp.did:6015A117DF56E011921BE2DE87A39B49 + xmp.did:6047ADFF0EC2E011AE33A676771642BD + xmp.did:60640A5C5826E01182CAD38ECEDCE268 + xmp.did:606F2DC96E24E011A47EB533D6F9C05E + xmp.did:60D73762B8206811871FDAA9E2C0A869 + xmp.did:60D9780C7A8EDF119A4CEF1A1CB781F4 + xmp.did:610079D829206811B1A4D56600D919C7 + xmp.did:611032FABB87E011B710DD0532D7B522 + xmp.did:6115A117DF56E011921BE2DE87A39B49 + xmp.did:612EA483F3CADF119600B07951353894 + xmp.did:61549BC0F27FE011900CD6D480C2EA95 + xmp.did:61818CF73DFCE0118E10A33A0426BA5A + xmp.did:618AEB8BC948DF118B438C642A7D2DC4 + xmp.did:618EAF1A4B7BE01184C0A4200CBECB5B + xmp.did:619F82D4F828E111B1F3C06F11DED1E2 + xmp.did:61A99F01F945E1118C499FE53C63BA21 + xmp.did:61D0FD3D1023DF119F4BFFB97B52B404 + xmp.did:6208B09F1664E011AD70DC996C19B8F4 + xmp.did:62177fa1-c574-464e-9fe6-8cb238bc787e + xmp.did:62272679CFEDDF11A9639E04D72D1683 + xmp.did:622E711BA7A2E511A786F4F7700740DD + xmp.did:628C3DBEEAD211E2A336EC0CC5125B4C + xmp.did:62923C091F3FE1118A949C13D139F527 + xmp.did:62AA5F6B6B8EE111BFE9802D59324A79 + xmp.did:62ACF14E6C6FE1118BB89C7736205CD2 + xmp.did:62CF124B7E6AE01186E4CAA527FEAFAB + xmp.did:62DF245D8820681192B0EAB1647D09C9 + xmp.did:630E52ED7DB6E21190DFED5140F2FD7C + xmp.did:6315A117DF56E011921BE2DE87A39B49 + xmp.did:632424910382DF11982BEF51EBA56B3D + xmp.did:6324F7C6F4F7E01187B0F8187AE52B82 + xmp.did:634A68AE14D3DF11A3F4945B73FF125F + xmp.did:634FE106FDAADF1196BFAB2AECFE2FA1 + xmp.did:635D6AA21F4DDE1185B2F0C4608269E3 + xmp.did:6363dc91-e0c9-4e6b-981c-5f3482571992 + xmp.did:63762B44082068118C14CA160A1107BD + xmp.did:638880E80920681192B0BAA904DE0F8D + xmp.did:6395943583CBDF11BAF5EC302DA3E9DF + xmp.did:639B1DD297D5DF119648F8511B7417D3 + xmp.did:63A39488A54DE011A242DF599B090667 + xmp.did:63AEF9105305E011867F89B0211E4F7A + xmp.did:63B9DF027F206811871F80898A1CC3A1 + xmp.did:63D21F2E2241E111AEBED233B2B2BBDB + xmp.did:640912E35E206811AFFDA1B78A3AA737 + xmp.did:641610FA4D1311E0A484E186B3184968 + xmp.did:6428E31D4544E111883F8B540082B352 + xmp.did:6474C83C687CDF118E1F99D69B3525CC + xmp.did:647F1DD60621681188C696DC609994EC + xmp.did:648880E80920681192B0BAA904DE0F8D + xmp.did:6494CD194F206811871FCD2199AD167E + xmp.did:649A061C5B96E01188ACC54896A64AB2 + xmp.did:649D06DE7020681188C6D9EA900BA018 + xmp.did:64C6C5C839CCDE118040C244BCAE0AC0 + xmp.did:64CF124B7E6AE01186E4CAA527FEAFAB + xmp.did:64D1F67154A011DFACB4EC20A02E03DF + xmp.did:64D83FC593206811871FBF7EE03058F8 + xmp.did:64ae0065-39fe-4869-af9c-bac59869e7f1 + xmp.did:6515A117DF56E011921BE2DE87A39B49 + xmp.did:6515EC6E98206811994C86814C2F3017 + xmp.did:6528034BDFE5DD1181E69C44F7DF0B43 + xmp.did:652F7EA911BCDD11AE16FCE8D3956588 + xmp.did:653449425AB6DF118E2180F19BD3AA0B + xmp.did:653E4C94DD2068118F62D27A6BCE2F0B + xmp.did:654E940A24D6DF11A7DEEBCD26CFA1AC + xmp.did:657104098FB1DF119ACB97369D3D276E + xmp.did:659F34731BCDDF1191BD97C1AE6A08AB + xmp.did:65B92FCFCC7EDF118519B477D8249121 + xmp.did:65C90D3351E7E1119040818FBA49EB64 + xmp.did:6622FF206708E011AAFBD2F284770826 + xmp.did:6639A478D19CDE11A7A3E19C2370F497 + xmp.did:664D5C459C7711E08A9C913C073A663E + xmp.did:66562D8A30206811822AF66E54970861 + xmp.did:668831B8132068118083AEAC33B78D50 + xmp.did:668880E80920681192B0BAA904DE0F8D + xmp.did:668C4D70961711E09F22A665483B9607 + xmp.did:66BCB3B7EAB9E011AEBCBCB1E3A15768 + xmp.did:66C8E7705A53E011B4ADA05F9FBFB5F3 + xmp.did:670FB6FEA3A9E0119D58D15062974F9E + xmp.did:671000C0792EDE11A4BEA48CD623DBC2 + xmp.did:672480888F7FDE11AEAEB3F00F80F0F2 + xmp.did:6748d57d-36e5-b04d-a348-750a0455b215 + xmp.did:6755E9F71198E011A468F772521167AC + xmp.did:676BDE0E17206811A5E4DB14138ED012 + xmp.did:67732AD79333E1119A24C6FEEB79FA2D + xmp.did:677E60494F2068118DBBE52260A278CD + xmp.did:678880E80920681192B0BAA904DE0F8D + xmp.did:679152804601E111BEF4FB361AD1BE95 + xmp.did:67C18292F735E111A7B3FA52C5C2372E + xmp.did:67C4D670BE38E011B60ABEB53C7F221E + xmp.did:67C8E7705A53E011B4ADA05F9FBFB5F3 + xmp.did:67FE1EBE8387E0119847A20086444820 + xmp.did:68033E32A59611E0AE7E90E1E54CD6BB + xmp.did:6859A8AA4C20681192B0C49A4A67C7CB + xmp.did:68613990049611E0BA12FF1AB9737D9F + xmp.did:686C661626206811871FBF7EE03058F8 + xmp.did:6883061047E0DE11BED594E577A3A979 + xmp.did:688B4219C01DE0118989DA212A212D22 + xmp.did:688E066C4B206811963CF2F523F9A511 + xmp.did:68931ADFA4CADF1191C0C59B6F52932B + xmp.did:689B1DD297D5DF119648F8511B7417D3 + xmp.did:68A8704ACB3EE111A1A2F5C3512901BD + xmp.did:68E6F0311C73E011988FD756EFFA5742 + xmp.did:691153E00F17DF118B19B73865AE5CEF + xmp.did:692CF3EC00EEDD11AC4196EEE8924C0F + xmp.did:6947A3C9B579E011BD7CE6FFB678968B + xmp.did:69656900766AE111A006B7F13B43383B + xmp.did:6966F9529C23E011BDF9E30C5CFEECDF + xmp.did:696BDE0E17206811A5E4DB14138ED012 + xmp.did:69762B44082068118C14CA160A1107BD + xmp.did:699219147DA7E11180B28105CE94C7C8 + xmp.did:699D06DE7020681188C6D9EA900BA018 + xmp.did:699F3D40D66DE0118286C365F8C4E42D + xmp.did:69A1217ACDA4E0118A47F95ACDE595C5 + xmp.did:69B10C9822E8DF11B384ADA7A32699D7 + xmp.did:69B2F9191F20681194578A02E8C9B59B + xmp.did:69B48262B0C0E0118B0698A58DE2D732 + xmp.did:69BFC33E065BE01189E8A9FA91742C9D + xmp.did:69C65DF5C0D2DF11A221DB0DBA19F42B + xmp.did:69C6EF70C9E2E0118871ADE68DD3BDA8 + xmp.did:69C8E7705A53E011B4ADA05F9FBFB5F3 + xmp.did:69D3304B192068119109B5CB68862886 + xmp.did:69E01EF54F04DE118E60E893E9F16C6A + xmp.did:69EB434F302068119109B3CAEE51E0B6 + xmp.did:6A130A232064E111890C95535BBDB7FF + xmp.did:6A14D9314FDFDE11A0BC93768BF457EE + xmp.did:6A15AFA28B206811871F8DE1CBDF9EB0 + xmp.did:6A284E091A29681192B0D53FF790F85B + xmp.did:6A30A098E94DDE118F78B354AFF5AE1C + xmp.did:6A47007B82A4E011A4FEE67DFDD7FB36 + xmp.did:6A4D00C08330E01193CDBC9F61A5086B + xmp.did:6A6CA14E4BCAE011AC77F4C223970894 + xmp.did:6A750F283A10DF119533B1B0BD8F5408 + xmp.did:6A9E5D44615BDF11B2D1E76550196FF9 + xmp.did:6ABB9F62BBB9DF119CEDD7BF9C0EE1CF + xmp.did:6ACC09578A37E111A1AFD6438812FE1D + xmp.did:6AD2DD1426CBDF119207FF631E313C1E + xmp.did:6B1563ECA06DE0119A3FB6F33E3941E7 + xmp.did:6B17FED6FDE4DF11A4E8EA4AFA5836D9 + xmp.did:6B2152EDD8CCDF119FCCD3DEB96D875E + xmp.did:6B30A098E94DDE118F78B354AFF5AE1C + xmp.did:6B43DD71B9D011DFA897EC2DD419EB70 + xmp.did:6B451632D431DF11A791C447C296D485 + xmp.did:6B4CDF46122068118DBB92791FD53C0C + xmp.did:6B675CD17B3BE011A070DAD2A1080D1B + xmp.did:6B6EE206B90CE111B2BF9AF74B0663EE + xmp.did:6B9AFF6520DADF11AD2BCBF19C02F98C + xmp.did:6BC529DA78BDDE119890F54BDDA81C84 + xmp.did:6BC5BF0B8E206811A7BAE494E9F9FFEC + xmp.did:6BE17DFD35AAE111B4CFFD6F020B35F0 + xmp.did:6BE2EEB094C7E0119881DFDBDDB5F7C6 + xmp.did:6BE5F473FB32DF11A376D712DAC48BD9 + xmp.did:6BE9EAB1BC06E1119FB4B9E49FD80B9F + xmp.did:6C0C2ED37520E0118026BD9CB3AF0FE9 + xmp.did:6C1D4CFBD8C8DF118849E21764796AE8 + xmp.did:6C1F705ED150E11191D3ABE1A15EFCE5 + xmp.did:6C27BCD42684E1119329CC85FF44F892 + xmp.did:6C3EA5425AB3DE119C2AC5829AF6E577 + xmp.did:6C5A013B2B216811910990FE46E80D18 + xmp.did:6C702183BED8E011A0C9924A4691E820 + xmp.did:6C750F283A10DF119533B1B0BD8F5408 + xmp.did:6C7D9E1E74B211E0A792FB6CA6498740 + xmp.did:6CAA2255CF57E0118F61ABAA1281E4E0 + xmp.did:6CC0CB00DE7AE111B406DEB9D0E62067 + xmp.did:6CC8E7705A53E011B4ADA05F9FBFB5F3 + xmp.did:6CDE07D55E20681198E99BCF30868C79 + xmp.did:6CE20740482068118F62C0FEBE593A57 + xmp.did:6CF7F57A4588E0118E50D901036E7887 + xmp.did:6D11BC5252CEE011913297C86D72F4BA + xmp.did:6D3EA611B6B2E01183ADBA4CDB2FFC38 + xmp.did:6D50FE54D024E111B5A2ED33E10C2559 + xmp.did:6D8831B8132068118083AEAC33B78D50 + xmp.did:6D922B47ED40E011B981E70FEEDE5BEE + xmp.did:6DA3F22F27F0DF11930E8842D7930657 + xmp.did:6DC82C0E2820681188C6A3D30DB8F116 + xmp.did:6DFDAA857FB8E0118E65FDFD304D4D5F + xmp.did:6E17B8BA0F2BE0119A92BFED6D4C3A49 + xmp.did:6E282DCA7F17E011B0739866E9AD0C81 + xmp.did:6E385BB069206811994C9DA04E065E98 + xmp.did:6E69F1C5298F11E1BBD1C39B828A5402 + xmp.did:6E6B1F2C98EE11E0BD518E09C122C174 + xmp.did:6E6B1F3098EE11E0BD518E09C122C174 + xmp.did:6E6B1F3498EE11E0BD518E09C122C174 + xmp.did:6E7CD2CED77BE011A60BCDD5CBCAB985 + xmp.did:6E854EF88859E01189ADC172C0ED21CC + xmp.did:6E95C248E420681191098918AC4FD7C5 + xmp.did:6ED5E9CD6FC4DF11B75C9BE1D5B16EA3 + xmp.did:6EE5CBDB325DE011BC86E134CA023F2D + xmp.did:6F23E955E6B2DF11B498DE7EA65C694B + xmp.did:6F50A8DE6EA6E111BD64D464E95C3F11 + xmp.did:6F50BA30D09FE011992CC820DDF69EB8 + xmp.did:6F5D5AEA453BE111ACF4D22D76E638EA + xmp.did:6F97A7E42EABE1118C62B15300F9FA22 + xmp.did:6FA34FF766C6DF11A495E0DADD8238FC + xmp.did:6FAD2A5D0E20681188C6D9C4D0AF0270 + xmp.did:6FBC13A938CAE011B365E004902CC4F8 + xmp.did:6FC8E7705A53E011B4ADA05F9FBFB5F3 + xmp.did:6FD44BF7F2A8DE119C209F7286AC4160 + xmp.did:6FD5EA4F4D2DE0118D4EDB8E509E5254 + xmp.did:6FE10108F221E1118D49C5615E251FDE + xmp.did:6FF4E4591557DF11B388DC7C60AE1023 + xmp.did:6aa4d464-3582-42f3-b32d-7665212461e6 + xmp.did:6c3872b0-283a-364c-9f1d-b045e46d9d46 + xmp.did:6f96001e-06d7-3f4a-adac-3c5030d60677 + xmp.did:703D3E0FD08FE111BCE7859962EF891B + xmp.did:70499A293598E111AAE1E7A253E7BD3B + xmp.did:70542CF4C8B0E111BD46E04D538A0FF8 + xmp.did:705B30E088F611E083F782CBB1D50FB1 + xmp.did:70625A024208E011AA5AC8AB7E99A633 + xmp.did:7064230B11DDDF118AE8866FDE69ACD7 + xmp.did:7089C6CFC8B5DF11820885489254C0E7 + xmp.did:70A31406DF206811871F81E8BB0F82E6 + xmp.did:70A7812EF177E0118C44ABEA80B85B14 + xmp.did:70A8F48786216811809FC824A61EE5E7 + xmp.did:70BC6C000A206811A7BAD4F0BC6E205B + xmp.did:70D3233031206811871FBF7EE03058F8 + xmp.did:70D66A196B64DF11B39BE2FACB6507A8 + xmp.did:70adaf04-2a82-5d4a-988b-7ef1bca055cc + xmp.did:710A7400A8EBE011B976D593E6469015 + xmp.did:710C8853F678E01184C0A4200CBECB5B + xmp.did:7125C99E1320681182FE98EF7F18BF1D + xmp.did:715C8395F2D9DF11943DD675C13F1D27 + xmp.did:7162A10113206811871FCD2199AD167E + xmp.did:7167A92FC12B6811A1CC934499CB1DD9 + xmp.did:7178548E489EDF1187848A377019B2B6 + xmp.did:718C32A0FE87E111A27BDFDDE14F6A5C + xmp.did:71922FC7B420DF11A73CD4E4A37A765C + xmp.did:7197A7E42EABE1118C62B15300F9FA22 + xmp.did:71A34FF766C6DF11A495E0DADD8238FC + xmp.did:71CAA26269CEE111A0A1CBD7E7EA61B9 + xmp.did:71DBF47FFF1CDF11ABB5EC302E26E0A8 + xmp.did:71F6DF52DC03DF11AD58B9E601FFD3D7 + xmp.did:720C8853F678E01184C0A4200CBECB5B + xmp.did:7217B8BA0F2BE0119A92BFED6D4C3A49 + xmp.did:72191300482068119006DB4D7B801BE7 + xmp.did:7220CBAB6EE7DF11A0D68F50E2E34A90 + xmp.did:723C111C508811E097A78CDC71EB349E + xmp.did:723C1120508811E097A78CDC71EB349E + xmp.did:72532c31-14f9-bf40-ae86-4784372833ec + xmp.did:726E2673F62068118F62901B2A4907D4 + xmp.did:726F3BDE2A8511E3BC48AC0C67394A8F + xmp.did:729131241F6CDF118BE7E8579E18CF61 + xmp.did:72947f67-7138-594c-b5c5-d774b22baf23 + xmp.did:730C8853F678E01184C0A4200CBECB5B + xmp.did:73504F67CB17E011A7BFFF6557FF2843 + xmp.did:7360C3BF8D206811B6999C6B4BE18F8F + xmp.did:7366949C86A5DE11A469D03DE5660500 + xmp.did:737F05FD6089E011A545EB68AEE6F466 + xmp.did:73820EA2D771DF119922E75105E0C7CF + xmp.did:7391698f-36d2-d247-bd26-2ea31d6d87ab + xmp.did:739C08B21168DF11902C8FBBD6B34A4F + xmp.did:739D7E9FEBADDF11AADEADA356222083 + xmp.did:73B57231C3E9E0119FC8E3CA42FCF1AC + xmp.did:73BF225C4131E011B2CBC77CF001FE05 + xmp.did:73F3DBA87D2511DFB8DAA291B838EA94 + xmp.did:73F9C4285FFEDF1196FEEFF1E699BCF4 + xmp.did:74117FBC20071168830CA0CFAC206BA6 + xmp.did:74117FD1200711689A14918341C03D5A + xmp.did:74117FF720071168B4F2D4360359303D + xmp.did:7420CBAB6EE7DF11A0D68F50E2E34A90 + xmp.did:7437D61FD021681188C696DC609994EC + xmp.did:745E037A2DA5DF1184BBAC8EF9CEA0E8 + xmp.did:7463DCF5E4FFE011BCACDC1D07438994 + xmp.did:748AF5D09E2068118F62E739643A5753 + xmp.did:74F17052D4DCE011B5ECA038BBBEA458 + xmp.did:74F33ECEDBBADE1191609FD758966D64 + xmp.did:74F776A110AADF11B522FC835FE72A90 + xmp.did:7527D1C3CBB4DF11B655B1F1A9C53FD3 + xmp.did:753CF8338CF2DF119B8C9A63DB697D95 + xmp.did:7540E64694C9DE11AA9E890180E6C36C + xmp.did:7582055E1F206811822A9DB99EAC3A6B + xmp.did:759368025499E0119D899925E4F60D72 + xmp.did:7597A7E42EABE1118C62B15300F9FA22 + xmp.did:759BEE3E4093DF11AF8EA8542F18F9C7 + xmp.did:759EC5FDBF66E11192B4D50FDFA7DCBB + xmp.did:75A2C2043AD611E08354924C095BC6E2 + xmp.did:75BD643B30CFDE11B3D8E04C26A71982 + xmp.did:75DEDC25312468118B72DE2C6B104274 + xmp.did:75FC0102052CE1118029CEF13AC0AB4A + xmp.did:75FC7CDC7B20681188C6D9EA900BA018 + xmp.did:76129C8869E5E1118D54CE9A3297AEA1 + xmp.did:7623F69225C51168B628F5720D780B35 + xmp.did:7631A3109686E0119D98C2D90B3468EC + xmp.did:7654C2447F63E111A46898CF376EA9B5 + xmp.did:76681C291B9CE111A0D1E0EFD2AB67E4 + xmp.did:766CF6E8BFDEE011B99E930982E706CD + xmp.did:767E991B2F83DF119773D504666A9F25 + xmp.did:76857F743F20681197A5E7B0831EA4A7 + xmp.did:76BD643B30CFDE11B3D8E04C26A71982 + xmp.did:76C0CC023F2068119109CD086EAAD59F + xmp.did:76D535ED0A206811994CAB00FAFA414B + xmp.did:76FC0102052CE1118029CEF13AC0AB4A + xmp.did:77058E810275DF1190AAD8563C512C0C + xmp.did:771BDE3F01D4DE118943FFF150E44DA9 + xmp.did:771FC345E8C1E111A878CF84CD6300B2 + xmp.did:7720CBAB6EE7DF11A0D68F50E2E34A90 + xmp.did:7758B6A31F64DE11A29AE887B09B53DD + xmp.did:7771AC8402DADF11AF6FC9737AC10B27 + xmp.did:777A8B8D2CCEDE11AC1FBF9D231E361F + xmp.did:779A6B435942DF118C0483F61AF9858E + xmp.did:77A552568610E111AC3DD4B7D8A25CF9 + xmp.did:77A8D8495F92E011B50294257EFDA589 + xmp.did:77AC74D1DD86E011BFE892C38C7D5217 + xmp.did:77BA295A173CE111A755A64CCF3AF6A2 + xmp.did:77BF225C4131E011B2CBC77CF001FE05 + xmp.did:77FA0FA81CAFDF1195B5BB7EED4EEE66 + xmp.did:77FC0102052CE1118029CEF13AC0AB4A + xmp.did:77FCDCFF0C20681188C6C677A3826B0E + xmp.did:77FEDC7DD3D7E411B3FEA50799D84EFE + xmp.did:780C8853F678E01184C0A4200CBECB5B + xmp.did:782128F744D6DF11B438C8E24DBF6844 + xmp.did:7829819D65A1E111BCC3A0D676A1A561 + xmp.did:78400BFFB097DE11A1DFC3E1EFDE9E0A + xmp.did:7868EEAF1733E011ABC3E0E298CAA13D + xmp.did:7875BC0EEFBEDE11A602AADC5AF8C5BA + xmp.did:787C135F9C9DE111BF9DD9DFCBFDF11F + xmp.did:788200B33261DF11B38F998875CC8654 + xmp.did:788AF58CDC9FDF118C00C3C968ABDC06 + xmp.did:789131241F6CDF118BE7E8579E18CF61 + xmp.did:78A5A4CB149AE111835787A7994F4DB5 + xmp.did:78BC0F6006F4E011B93CD815AD0D94C0 + xmp.did:78BC6FADDE7DE11191DD94CEC0013025 + xmp.did:78D01456F83DDF1190CA8266881FE2CE + xmp.did:7904508AD868E1119C239406340D5219 + xmp.did:7905B13A0E206811871FC0314F02A4F7 + xmp.did:790916DB092068118C14F3F57EB97687 + xmp.did:7920CBAB6EE7DF11A0D68F50E2E34A90 + xmp.did:7925336F792068118F62FB2F86618C29 + xmp.did:79352EA0C156E011A746F8EC483FDFFB + xmp.did:793AE5F91840DF11AEF7B4966E6B8813 + xmp.did:7951968373B8E0118F8EDA00AA1CB991 + xmp.did:79716790508AE011A3A3E55B7E565EE8 + xmp.did:797A8B8D2CCEDE11AC1FBF9D231E361F + xmp.did:79E4E194AB84E1118913954BAAE5FC3C + xmp.did:79F51A4782F5DF11A6FFFB445089DD04 + xmp.did:79FB201E5FC9DF11A597F1EC539FC87D + xmp.did:7A2617D26A65E111A3448730A68B0EB7 + xmp.did:7A3D731F21B0DF118BAFF8FAC2F2AE36 + xmp.did:7A7744FB63D511E0AABFC58C3D25E939 + xmp.did:7A7A501C1F206811871FE0E4CB6C52AC + xmp.did:7AB4913D6722E511847DD98655CD3253 + xmp.did:7AC1A8E47A206811BA24F97E9D027B47 + xmp.did:7ACDF09EA55CDF11B7B79D5A05569673 + xmp.did:7ACE8BF614206811AFFDE23F1424EB30 + xmp.did:7B043B7D7321E0119D96D946FB4715F7 + xmp.did:7B29C0F54820681188C6D9EA900BA018 + xmp.did:7B47B34413206811822A80BA31773630 + xmp.did:7B51EA8B1D4DDE119E89A3ED56CCD770 + xmp.did:7B78254BE0AEE011853D816FB98ABCA3 + xmp.did:7B8746672509DF11AF4499B12E8CC26D + xmp.did:7BD2A7176C34E01183C188C0B0DA4CAA + xmp.did:7BEC155F5BC4E111A669BD9B8C409492 + xmp.did:7BFB201E5FC9DF11A597F1EC539FC87D + xmp.did:7C07D8DC8E79DF11B8DDA0E346A0AACF + xmp.did:7C0802EC28E8DD11805BB1EE4F2A3FA0 + xmp.did:7C082A501C20681197A58952567F2A73 + xmp.did:7C6F110A13F4E0119A97C6F5F7FD5B9F + xmp.did:7C88C02FE53FE1118DF19C6DFE49C038 + xmp.did:7C8DC490E0226811871FAFE2B6937D3F + xmp.did:7C9C03F0A04211E08CD78C7A9D15FD14 + xmp.did:7CC8D7C745B9DF1189DACB811D57ABC7 + xmp.did:7CCBF88BF44AE0119DBA84BCA2BC436A + xmp.did:7CDC63B82E2068119109C5E97A302410 + xmp.did:7CE1F0E7B37ADF11A34EC5406310B97F + xmp.did:7CE9741F22206811AE568088196B6FA8 + xmp.did:7D15A33B4C27E0119B80CF11737E6DBA + xmp.did:7D1FC345E8C1E111A878CF84CD6300B2 + xmp.did:7D29CB155D53E011B4ADA05F9FBFB5F3 + xmp.did:7D4E139D1885E011BD3DE9624629426F + xmp.did:7D5E1B8AEAEFDF118A9DAF75AAD34E89 + xmp.did:7D5ED72279B111E19AF3D57CE9DEB3C9 + xmp.did:7D5ED72679B111E19AF3D57CE9DEB3C9 + xmp.did:7D80E02F96BFE01180AA9C5B0CFF19ED + xmp.did:7DA086F9CB66DE11A815882EAB430946 + xmp.did:7DA755F55C2068118C14E588E3F20ADB + xmp.did:7DCB2FB2AAD7DF11BC0DC196B8130A2E + xmp.did:7DCF6D0E3FA8E0119901FA132A896267 + xmp.did:7E097AC57FF1E0119DA2D2B32DA8EAFC + xmp.did:7E1DB248C56DE0119292AD055BFAFED8 + xmp.did:7E2CC435F356E011921BE2DE87A39B49 + xmp.did:7E59F95E6E206811994CB9FB5B6353A4 + xmp.did:7E702F8623CEDE11AC1FBF9D231E361F + xmp.did:7E9041CB3860E011B42CE1788AE2BCA5 + xmp.did:7ECF6D0E3FA8E0119901FA132A896267 + xmp.did:7EDE5C6E1C206811B1A4F519CDE25F28 + xmp.did:7F0EA43325E5DF11BC76BB586B198F5D + xmp.did:7F1FC345E8C1E111A878CF84CD6300B2 + xmp.did:7F29CB155D53E011B4ADA05F9FBFB5F3 + xmp.did:7F6D26F1E2FEE0119C6ABCC0BC7488E3 + xmp.did:7F8C94ED2AE5E0119ADF95DE74576FF9 + xmp.did:7F9175A3F75DDF11B956E1A7DFE599B1 + xmp.did:7F9C20F7A94AE011BB98A06D80C6151F + xmp.did:7F9C53A211206811ACB683AE4DE260D1 + xmp.did:7FBE3A3CF6F0E0119B3996CAEAF798BE + xmp.did:7FBFAB2ACFDBE1119E848C69D255D3A5 + xmp.did:7FD80270679FE2119DF2F25A7D05547F + xmp.did:7d4deb19-3998-ff4d-bc2f-c97b3c2446cf + xmp.did:7e6c044f-d146-924b-8c30-05cfd4b9aafe + xmp.did:801148D6234DE011BB98A06D80C6151F + xmp.did:801A5C852C20681180839613FFBBFAAC + xmp.did:802CC435F356E011921BE2DE87A39B49 + xmp.did:804007CE2420681180839613FFBBFAAC + xmp.did:80504C2963A4DF11B82BBA151D8DC1FE + xmp.did:8052F2A78E75E011B6B6D6DA52877FFC + xmp.did:8059655B2C2068118F62CDC0FFB60C81 + xmp.did:805F0595BD92E211A4DCB3E89AC9F855 + xmp.did:8075F5481580E011BA47DD094AF996D2 + xmp.did:8078365AE76F11E18533F1ECFAB65801 + xmp.did:807B688D0AAC11E190E19BD07C44EEE2 + xmp.did:809056B11CC7DF11B758A2A8BA83B35D + xmp.did:8090AD7B342068118DBB9D77FB701C12 + xmp.did:809E3A933B44E111BA88C94C716A6974 + xmp.did:80C93B4FEB3111DF9C439A7A28CCF362 + xmp.did:80af9a3d-eb20-3240-869c-8570c071482a + xmp.did:81089B2B45E9DF11A6B0E764E6EDBC05 + xmp.did:8120E7B5C984E111B053AE23CD93C8B3 + xmp.did:81235A963659DF118C6BDB7AAC07A25A + xmp.did:81309A5FCC76DE11AED9E5D61720DD5C + xmp.did:81313DB71285E111BBCB8609C9DD7F54 + xmp.did:8144A177F040DF1195F0F65856D8331F + xmp.did:81542656681EE1118FFEA8F400ED5D33 + xmp.did:81552F00A368DF11828DDD7967B330D3 + xmp.did:81580FE49461E011A0E2A5F0844C204E + xmp.did:815BBDB09053DF11BC1C8732308226FD + xmp.did:8166F94F8E5ADF11B2A8D5C54226B8D0 + xmp.did:817A0AB13DC7DE11A1F68531C4A44C7F + xmp.did:819E8D124E09E111B6C8C5ECB18A364B + xmp.did:81A8DCB3ABEAE011B4F5D486F65C8D25 + xmp.did:81AC7B4F75E8E011A311DB0B6646F233 + xmp.did:81B18B624CAF11E09699D59E3516ABEA + xmp.did:81B59045012CE01185A6E2BD8F968FB1 + xmp.did:81BFAB2ACFDBE1119E848C69D255D3A5 + xmp.did:81D55FF5188BE1118ECEC53161602DF3 + xmp.did:81DA1414670CDF11A061811B28A2478B + xmp.did:820348437404E11184EEFE5FD93BE455 + xmp.did:8205AFF09820681196A8F9D9696838B7 + xmp.did:820E24D92B2068118C14B7428F978057 + xmp.did:8210FDB3082068118A6DAF67FF497528 + xmp.did:8212A7BB4926681195FEFC444A5BEE9F + xmp.did:82606509298E11E1B44D8DF5B5943ABD + xmp.did:8267DC350325E111B981DAE13D209B8D + xmp.did:827DD22FA288DF118C39B933A933A347 + xmp.did:82829D346A53E211A76EBE9987E0B8A6 + xmp.did:8287D1358ED7DF1183A1C3735AAA22E6 + xmp.did:8294585637D4E0118A9EDFC6DEE43DAB + xmp.did:82965EFF44BBE111A66FDF447E5DBBF7 + xmp.did:829CF446FAA6DF1196A4E198EBE76935 + xmp.did:82ADEDBBEF34DE11969AE09D83E3F420 + xmp.did:82BB3E027098DF11BC85F9E4578441E6 + xmp.did:82E4D6A4D7B6E01180338C86A024A0D6 + xmp.did:830B9C46982568119109AFE3CF4AF35A + xmp.did:831516337350DE11A91BCF2B4BB0BB7E + xmp.did:8324F714521AE011822BABF806E9B864 + xmp.did:832892B8412068118F62F71255CC48E7 + xmp.did:833C8CE42459DE11A76AB674739B3094 + xmp.did:83447AB3B4CAE111B37CA677D5557B72 + xmp.did:835919AFB44FDE11B0DCED93F5CF0FE3 + xmp.did:83616174262068118C97EB5E0646166B + xmp.did:8380539B8D14E0119CF3A5B58614FB92 + xmp.did:838372649821681188C696DC609994EC + xmp.did:83866C9CBC5BDF119620AD6226625194 + xmp.did:838BF2091320681188C6B205E89566F4 + xmp.did:83A39AA2BF4EDF119ADACA755A69B03B + xmp.did:83B41E2DDE55DE11AD63CFBD010DF686 + xmp.did:83C9865CA269E111A67ED33D75487D10 + xmp.did:83E41DC4206B1168AA77C2505C561F83 + xmp.did:8405199C2F206811871F80F092687C74 + xmp.did:841A5C852C20681180839613FFBBFAAC + xmp.did:841BFFD5F634E0119D21CD3E9181B80B + xmp.did:842CC435F356E011921BE2DE87A39B49 + xmp.did:842F757B8120681188C688F5D09384AC + xmp.did:84331B7DDBC2E0119AA5AB5D8BC56B11 + xmp.did:847DD22FA288DF118C39B933A933A347 + xmp.did:848AB3085E27E1119E5FA2060542126E + xmp.did:84C073E25F20DE119E1CD4E3ADF72A8B + xmp.did:84C08F2E9E26E0118C2BABB207A93EFE + xmp.did:84C76E5CA61EE0119B62C1A72CDDBB2D + xmp.did:84C8C1C6D50FE011B03CB0596E1DEC4B + xmp.did:84C95075E3FBE0119B5AF02CBE935267 + xmp.did:84D05C0E3B72DF118C3A85F2086DDFA0 + xmp.did:84D94C5830A411E0BA75FDACF6D3CB35 + xmp.did:84DDD548D89FE311A2EF943AB38F8AED + xmp.did:84EF83C70B20681197A5EA3B7AA659C7 + xmp.did:84F8E8F71582E0118089EA75E890DA3C + xmp.did:84FB4C3E2740DF11BB98CE11030CC74D + xmp.did:852600B68B8BDF1198968D8BFA9A0C11 + xmp.did:853AF130AD53E11183D4CF35311FD769 + xmp.did:85447AB3B4CAE111B37CA677D5557B72 + xmp.did:854856E6F842E111BE6699D251BD57B6 + xmp.did:854D5A42092068118C14CA160A1107BD + xmp.did:85740B880E21681188C696DC609994EC + xmp.did:859515F9C633DF11BBA4AF1809F5BA86 + xmp.did:85A95516CEBCE01186B3B3E56129FCD9 + xmp.did:85B979B997E4E0118E07C315AD56A832 + xmp.did:85C6DBBD452CE0118A81AEF0FB9F6F8D + xmp.did:85CAF93392266811BEDC9678CA0435A7 + xmp.did:85F83D980E26DF11BF3EEA8A082383DA + xmp.did:861A5C852C20681180839613FFBBFAAC + xmp.did:861CB129116CDF11A081DAC65549FFF8 + xmp.did:86276cb5-d24b-8b47-81f9-76b348bf2250 + xmp.did:862C2AD4A158DF1189EEA9543E8F2E3B + xmp.did:862CC435F356E011921BE2DE87A39B49 + xmp.did:8651BE3E0CEFDE11ACD1CD62D8EF3885 + xmp.did:8656C1EE1B206811871FB68593F9AC6F + xmp.did:865B2D5F46236811994CB5207DCDF24F + xmp.did:86649C080B2CE011ADA7DD585FD5C7EE + xmp.did:866F47642AB0E011BBCA875196D3D860 + xmp.did:86740B880E21681188C696DC609994EC + xmp.did:867DD22FA288DF118C39B933A933A347 + xmp.did:8698CBE66115DE11AACB95B67971A1B2 + xmp.did:86D6104926206811AE5689AB4F94AE06 + xmp.did:870225D20E94DF1195A5FC5C316CC418 + xmp.did:870583F545FEE011B6A8EE7180B400C9 + xmp.did:873E3B1E7F2268119109BDA71F52395C + xmp.did:87447AB3B4CAE111B37CA677D5557B72 + xmp.did:874D5A42092068118C14CA160A1107BD + xmp.did:8754DB7C152EE011896D9CA4B320EC02 + xmp.did:876EF1FF082068118C14CA160A1107BD + xmp.did:87D5EE3C8922E011AFCE82DA30F5B514 + xmp.did:87DCC4C32FFA11E1B96EC339C382471D + xmp.did:87E33B19803811E09258D24CBD61FD3F + xmp.did:884D5A42092068118C14CA160A1107BD + xmp.did:88603A9963DADF1187E8D4E0EC5A930D + xmp.did:8870C5DB32DFDE118C7A95A6BECE17A5 + xmp.did:88740B880E21681188C696DC609994EC + xmp.did:889806E20657E011921BE2DE87A39B49 + xmp.did:889BA21A4149E111855DAD8969DC17AC + xmp.did:88A1231164D711DFA6978521D60DF460 + xmp.did:88AEADE70FA8E511BB46EE2D559E6AFE + xmp.did:88BB93CA299911E1ACF297D71C602DED + xmp.did:88C351403ED8E11186E3E883EB9255AD + xmp.did:88D8DC613C73E01184C0A4200CBECB5B + xmp.did:890AC9EE6B04E01186F6C96159FA26E8 + xmp.did:891A5C852C20681180839613FFBBFAAC + xmp.did:893934E58E97DF11A4F8CD98711E2A3F + xmp.did:89395A9EDE0CE0118A8FB6E7CCEEE848 + xmp.did:8943C3017AD411E084B2F7A946C32DA5 + xmp.did:89447AB3B4CAE111B37CA677D5557B72 + xmp.did:89750EC5FB6BDF11B388E1C24DFE0D54 + xmp.did:897980D131FFE01198B7823DC069C12F + xmp.did:89BCB41825F6DF11802ACA47813319CF + xmp.did:89C45F4A208ADF1195A9C4DC515AF3FD + xmp.did:89CF3AE7B717E0119C6AB37D01820637 + xmp.did:89DB88EE8521681188C696DC609994EC + xmp.did:89E36FFA7D14DF1197C89C8FF17B2D44 + xmp.did:89FD7A8B0728E111ADA69AD140FE9E00 + xmp.did:8A06BAAB66B0E011825CD794A42E8EF9 + xmp.did:8A21C5B8E7EFDF11B677B87E76E68AF4 + xmp.did:8A4478F606F4DF119425BF3C1F1749DB + xmp.did:8A6216F842FCDF119ED78B2C582C52C2 + xmp.did:8A94BBDE35206811A7BAD0C7E96E8116 + xmp.did:8AAEADE70FA8E511BB46EE2D559E6AFE + xmp.did:8AD0FEBF7954E011BB7DC31FA9F74AB4 + xmp.did:8B0045FE7576E111BB51D423AB039B46 + xmp.did:8B01E3417A20681188C6DC0217A7B5D3 + xmp.did:8B059136F82211E08408E1685824A4FB + xmp.did:8B2B9B501E20681188C6E8E9DC93EA8A + xmp.did:8B77F5482E53DF11B39389FC48E1A8C9 + xmp.did:8B90858FB573DF11BFBBF00759A3D452 + xmp.did:8BD0CC8BD42268118DBBD37DD26DADFC + xmp.did:8BD0EE5C653311E1B736BFACD3620D8F + xmp.did:8BD135E0F9BCDF1189D3A67CE1D3046A + xmp.did:8BD931BF1A6CDF11933DA1411EF6F50A + xmp.did:8BFC717F1457E0118767EBE1801FE9FE + xmp.did:8C2FC0921CC2E011AE33A676771642BD + xmp.did:8C3056AD5244E011AE3EEB69306A4F07 + xmp.did:8C4856E6F842E111BE6699D251BD57B6 + xmp.did:8C490D9608206811823F81C40FB368D9 + xmp.did:8C58FD204BD2E011A9368AF336806B32 + xmp.did:8C5F8554A4A7DF11BDB8F75F4D0AA037 + xmp.did:8C8372649821681188C696DC609994EC + xmp.did:8C9B4D348229E011908F9AD74A4EDBB3 + xmp.did:8CC42AEE2384DF11B96ED07707E47A12 + xmp.did:8CCD8DD3242068118F62C903F145A3C0 + xmp.did:8CDD768B6C5ADF1188498FD1EFE0D6A9 + xmp.did:8CE9632C7879DE119FA28FC1CF4C6D0F + xmp.did:8CF26DC84436E0118F21DEBFA61F4932 + xmp.did:8CF7A11EE048E1118B88956415476A58 + xmp.did:8CFA6888BDC9E0118A1894B66E94A91C + xmp.did:8D1BFFD5F634E0119D21CD3E9181B80B + xmp.did:8D20EE37F90FE011AB5AD171283D1655 + xmp.did:8D7280898A36DF11A3309C11A31C2A5E + xmp.did:8D805EB048FAE011AC34826A9FEB64B0 + xmp.did:8D92EA98A977E1119805DB668CF88404 + xmp.did:8D9A91A968D9E011B6A6C8590EC842C2 + xmp.did:8D9EF7514A2068118F62B8304774E5C3 + xmp.did:8DE1959C83C2E0118845DE1447055626 + xmp.did:8DEEC9AECEB7E51189E9BE36B3997CF4 + xmp.did:8E0FC9410A44DF11BEFDCD36FB7893D5 + xmp.did:8E4B52716B6CE511880DE033D23CBAAC + xmp.did:8E4CE70DE76CE1119D4AC649B2894719 + xmp.did:8E6562B76CF3DF119E0DB7062553489C + xmp.did:8E6EF1FF082068118C14CA160A1107BD + xmp.did:8E740DEC723EE011B82A95AEAAA45352 + xmp.did:8E92EA98A977E1119805DB668CF88404 + xmp.did:8E935AD20E206811822AA1DC23D37A5E + xmp.did:8E966105F320681188C696DC609994EC + xmp.did:8EBBD10B0AA2E11184F7DC5AF9CBD08D + xmp.did:8EBC07326ADFDF11BB07B143F18137D7 + xmp.did:8ECFD34D002968119109B2B3A61F48F7 + xmp.did:8EDE368A27ECDF11BCB8F3C453200441 + xmp.did:8F187CFDBA37E4118C15E5C0034A595B + xmp.did:8F1ACF29AE75E1118E58A8961F1319EA + xmp.did:8F216AF768FDE011B5F2D55194913984 + xmp.did:8F3056AD5244E011AE3EEB69306A4F07 + xmp.did:8F4DFE5AC221681188C696DC609994EC + xmp.did:8F5C464F978111E181E4DD98FD6AFC60 + xmp.did:8F6F53FD3A26DF118BC5928689F4BE6C + xmp.did:8F95AECCAE64E11199EDBE2B4F312735 + xmp.did:8FA7C4E6F0C8E011B40EF1E7982D5537 + xmp.did:8FAF591F00D3DF1185548EF48B97A94E + xmp.did:8FCCCF38B904DF119F2CD4E3A2525BA6 + xmp.did:8FE16DCB9A23DE11A635C8F315D1A853 + xmp.did:8FF0BA7C96D6DF118124CBB3F134173A + xmp.did:8dd4e35d-9f25-5d48-93ae-b29b9a447d98 + xmp.did:904BA39050DC11E1A8A38BA009D41FA2 + xmp.did:904E636A7CB7DF11A328B924F731DB67 + xmp.did:9055651CDAA4E01197A1A65F7AE4791A + xmp.did:90815380F12511DFA3AAF3A6CFACF432 + xmp.did:909495A50A20681192B0CBD54873552B + xmp.did:909D9B02B2F2DF11BD97AADAF5573B93 + xmp.did:90ABFBB47D1FE011910F93D0283BEC57 + xmp.did:90C5D5266479DF11865CEEF09851FD79 + xmp.did:90E0540C0F99DF11B25BEF1121833044 + xmp.did:90E47E696271DF118311B0C80F59CA13 + xmp.did:90E6959E6208DF11B202A51F4F00DFB9 + xmp.did:91029EFF1228DF11A509AA44CE834541 + xmp.did:910A77C8D7F2E011B05D940BC95F19BB + xmp.did:911C7F2A8A21681188109F9973D46F2A + xmp.did:911F03D9F202E01186F6C96159FA26E8 + xmp.did:9126E9F04E3BE111A9F0AC53C5BC7120 + xmp.did:912B737B36CAE1119693CF0CD89B1CEC + xmp.did:914A696C101DE1118D29FEC5BF395782 + xmp.did:9160F9572250E0118558E73318898BC6 + xmp.did:917BEC24B9B5E011A6AFE3EBB2ACA55F + xmp.did:918B85653835DF11B6C1EB0CD908AC7C + xmp.did:9191522F3E12DE11B29E8393AADA5AD1 + xmp.did:9192FF6B0A4CDF1187C0E54B36521B89 + xmp.did:919615279A43E111A909B35628CF6408 + xmp.did:919A0E71C10EE1119478F3876777A19C + xmp.did:919DA1CDF063DF11BC5D8787CF21DA71 + xmp.did:91A16E5206E9DF118464FE7C077CD0A9 + xmp.did:91C697675305E1118576EDF25932BFDD + xmp.did:91D03B52A2C5DF11AD408D720C5A42C7 + xmp.did:91DB88EE8521681188C696DC609994EC + xmp.did:91F0B932FE12E011808E9F28B306454A + xmp.did:91FF051E0FD3DF11B2D1C51F59B5FB29 + xmp.did:924AB28B2DF4E011B8458ECC82C9836A + xmp.did:924CE92A212068118A6DCBD1B0BE7EE6 + xmp.did:925AC5AC0720681192B0CBD54873552B + xmp.did:926201BC2855DE118DD69CA93F6DF858 + xmp.did:9278CBA665C2E0119329DD6668FC9FEA + xmp.did:92966105F320681188C696DC609994EC + xmp.did:92B423E31A2068119109BCD3F23227AF + xmp.did:92C0D1275C68DE11B0F481AE8B322C31 + xmp.did:92CBBD15D6206811A7BAB1FC45DDAD2B + xmp.did:92E577500821681188C696DC609994EC + xmp.did:9309562520EEDF1189DCF967BD1D0466 + xmp.did:930B08ED590DE111B8FDAF02BBA9494C + xmp.did:930DD8B928206811AFFD97A6A7E489B5 + xmp.did:933BEEDB3C33E0118E20B1AD31AED0C0 + xmp.did:933D0DCED972E011939FAF49F3385445 + xmp.did:93483629ECF2DF11903DB22C3753D5AD + xmp.did:934B877D4D49E0119669905D76CBAC93 + xmp.did:934D8ADDA974E01188B996EB31D6BA25 + xmp.did:935A631CB81BE1119B8DBF3D2D3C0101 + xmp.did:937316FC7914E0118232E88ECFEB6715 + xmp.did:9377735C065FDF1182C09C4CEAF60EBA + xmp.did:937E2D7F8FB1DF1180D69B259D881A63 + xmp.did:938AB606C7FBDF118241E5A71723C879 + xmp.did:93A16E5206E9DF118464FE7C077CD0A9 + xmp.did:93C1EBD2624FE11180FBDE43E425C516 + xmp.did:93E477BE7CD1E011989A9E8E51C4EC5B + xmp.did:93E7BC492E5CE111926EBE4102A44FEB + xmp.did:941B454859F6E011803AC866B7C1069F + xmp.did:94282AF0508811E097A78CDC71EB349E + xmp.did:944A847A363B11E0AEB2FFF11F63D948 + xmp.did:94585C9845FFE011B221B51DDB781495 + xmp.did:94658B6B3B206811871FDB7C73EC7AF4 + xmp.did:9476f99b-f5d0-9c49-a55e-78cb0ad350d2 + xmp.did:9497763E26ABE011979696CECC20A286 + xmp.did:94A9E6E40CBDE411A62FE31619ACEB56 + xmp.did:94BDB1ED6FE5E1118D54CE9A3297AEA1 + xmp.did:94FB5F2C6FBEE0118C949C067492EDE2 + xmp.did:951C5B866564E011B7F2DB0F5547F5C6 + xmp.did:9560F9572250E0118558E73318898BC6 + xmp.did:9569A224EA43E1119C07EF2F0F32B02F + xmp.did:95A96A28F3DAE111A7AAA5DE6EB18B89 + xmp.did:95AC3C120E36DF11B6D98DF338B7C12B + xmp.did:95B2C65AB684E011ABCFE78D83B50568 + xmp.did:95B8A82E37D2DD119E668BF87AB33AD5 + xmp.did:95BAFD58EB33E0118E20B1AD31AED0C0 + xmp.did:95DE2CA7D7D6DD11A0B7D636E389DFA6 + xmp.did:9608CCC1ADF5DF118DE6E60F439F0102 + xmp.did:960B676610D3E01196FCFB40DDA31A34 + xmp.did:960C29806B4D11DF90ABFB59532F5FEB + xmp.did:963D8C676B1FDF118727A7F59103C94D + xmp.did:96492472F6E0E011BE118A436AAF9AB7 + xmp.did:96591BA8B7E2DF119A52D83C080E6159 + xmp.did:9672422DDBCDDE11ABFAA0D8603A9AA1 + xmp.did:967DD1DC2B34E011B6CDA8F0B2C213CD + xmp.did:968CEE49372068118A6DC2EB5CD0A707 + xmp.did:96A1CF690920681192B0F57DFE59A27B + xmp.did:96B0C3C04858E1118EF3C77E6C6CF771 + xmp.did:96B8A82E37D2DD119E668BF87AB33AD5 + xmp.did:96C81ADD14236811AF6F8C15B6994DA7 + xmp.did:96C8249C6FFADF11B295A881C3F5AF4C + xmp.did:96E5DF7A225F11E0829CC34898E8E2FE + xmp.did:96E76A59192468118F62CC866702F2FE + xmp.did:9715B7202EA2DF1183CCD2BDF7A48505 + xmp.did:971A8BC792E5E111B136B495E2853551 + xmp.did:972DC55FAD5DE011AA3EAB40A4960498 + xmp.did:973643EE25B2E011A9E6D61C091A241B + xmp.did:9785BA49DBDADF11B163E9831471534B + xmp.did:97A9C9B89D24E0118923B656DB9CFD00 + xmp.did:97AC6FC823C0E411B3958931106E1BFC + xmp.did:97B7DD4BB41EE111916EC3033FCE98E1 + xmp.did:97B9D8E05C06E211BD8DB6F2D1F074E8 + xmp.did:97CDB28DA9FBDF11BE7B9B75940AEEE9 + xmp.did:97EBFF980B20681192B0C1BDF1A7A76F + xmp.did:97EC96DABB48DF11A409A37C5A82C998 + xmp.did:97F9D2C235206811AFFDE9CF455472A7 + xmp.did:97FC350B48C2E31194C9E7F062264167 + xmp.did:97afe843-b646-8545-b4ca-0101e2be6bf2 + xmp.did:980545A9BB78DF11A744C11565DD2948 + xmp.did:9813CE3A9E66DF11A6C3940C3CABD8FB + xmp.did:9813F54FF9FEDF11ACB788A8E08450B2 + xmp.did:982AFCB00969E111B3F69F05BCCE11EA + xmp.did:982D8E03AA7EDF119D1BBECC9F294BDE + xmp.did:983686D7057FE111BAC9A4AB7E286612 + xmp.did:9838B23ABBEF11E1B6B6837842397499 + xmp.did:984BF333FE9611DFAA4B9CF33FFC31D6 + xmp.did:9869A4B83A206811994C8C0DAA3ECFAB + xmp.did:98759349A621681188C696DC609994EC + xmp.did:98A5F5097164DF11A0D7D0695C29505A + xmp.did:98AB9F3823206811A7CCFDA98EF5A496 + xmp.did:98BE7D112CB1DF11B2FAFE5812628253 + xmp.did:98C7248301BAE111AADAB87E045B5717 + xmp.did:98C912840720681192B0E6C15935B3CD + xmp.did:98E3903835216811910993DFFC667F27 + xmp.did:992CEF020B2068119109FEECB06854FB + xmp.did:99343A4732206811871FE8DD2340C0B0 + xmp.did:9939B89EDDD2E011B01BED703C9B0C2E + xmp.did:9939D242299911E1989F903F4DB0B415 + xmp.did:99486C511B70E011B86D8010254A84D5 + xmp.did:9960F9572250E0118558E73318898BC6 + xmp.did:99664FC61C36DF11A4C4A95CF22C3B0B + xmp.did:996837C582E4DF1182A58D84AA49613A + xmp.did:996BE426E91CDF11B933FC2C1A4C2DBC + xmp.did:997028139040E111B63BA1942D69385F + xmp.did:9972B3E128B3E0119A56AB66C5E750E4 + xmp.did:99B4D846FAE7DF119D85DAE534F7C2DF + xmp.did:99B71567B261E111B6A7E482F8895D6C + xmp.did:99DF861774BEDF118EBFD6E1116D13B7 + xmp.did:99FC62910D45E0119B29F91D78E1B467 + xmp.did:9A077E58F016E011AC05F56FEA783F52 + xmp.did:9A0E6F23EB9DE1118E00F681D7D08679 + xmp.did:9A0E9E3B9BBFE011AFF8DFC27770BD90 + xmp.did:9A61FC0A002DDF11BEB3A042D0FC994F + xmp.did:9A759349A621681188C696DC609994EC + xmp.did:9A75AEC0C623681197A5F66835A3091C + xmp.did:9A8FD6619B3CE2119925D9CC22BAEF70 + xmp.did:9AA3C568FD5BDE118E7DB76DF5F44158 + xmp.did:9AC642435D2AE211AA4FF765CAD2D2A8 + xmp.did:9ACD98F7A9DFE011BAC7F7CD194FE1BE + xmp.did:9ADE5D8B387EE0119980D9C7A0723BCA + xmp.did:9AE2F3463040E1118DCC95B58796E1B2 + xmp.did:9AF7FB7C1420681194578AA50D8ACBC3 + xmp.did:9AFC1C07C3E9DF118464FE7C077CD0A9 + xmp.did:9B0545A9BB78DF11A744C11565DD2948 + xmp.did:9B0BC90E76B4DF11A365EF5257762381 + xmp.did:9B2F4B1665F2E011AF30B599DCF3AFB5 + xmp.did:9B34DC644640E01185B59559E33EB089 + xmp.did:9B56E926E621681195FED69596C72CCF + xmp.did:9B5D3DC5741BDF11B2E7B10B152EF746 + xmp.did:9B6B9E3625A0DF119176BE9D9197EAB7 + xmp.did:9B6C6226B5FEE011B5D0E8D3DB27E5E4 + xmp.did:9B7BA3AB0B20681192B080542646EBD1 + xmp.did:9B7BCAD8D683DF1191F8B8A33FD3ADF4 + xmp.did:9BA59F93AC206811B4CCE9880A1B4D83 + xmp.did:9BAD4409BF93E011BBB9E3ECD100E00D + xmp.did:9BC605AE0720681192B0CBD54873552B + xmp.did:9BCAE27235CEDF11A78EEE6DEDC81BD7 + xmp.did:9BCCC40ACAEFDF1199E2EE90A8025B42 + xmp.did:9BE8846BE47CE011BAD9E0646690CAEC + xmp.did:9BFE2BA21486E011A8B0C5C770A167CE + xmp.did:9C88E69A382068118A6DF50DC194039C + xmp.did:9CB26B993443E111B1C3CDE6ADA24500 + xmp.did:9CD939D30C7FDE1193B9F16B1DD87785 + xmp.did:9D1BECD81020681197A5F6F85A622253 + xmp.did:9D26044AA977DF1180A993884DEAFA1B + xmp.did:9D438173BD52E011BA4AB6EDCDCC4831 + xmp.did:9D477690B6B2DE11B540EAD222586A4A + xmp.did:9D53CC471839E01191A08D3508D5678E + xmp.did:9D8268E7517EDF118E0EA6ED551ED495 + xmp.did:9D8677FD557CDF1196D788D75EC869DC + xmp.did:9D8B6378A8F5DF11BD97AADAF5573B93 + xmp.did:9DA429A15120681188C6D9EA900BA018 + xmp.did:9DBF2E6B53BCDF11BF13EDD7C6A21F60 + xmp.did:9DCC7EF80415E111A8DC80E1F6441171 + xmp.did:9DEED1530021681188C696DC609994EC + xmp.did:9DF1224211206811822AE3B9CDB16A6A + xmp.did:9DFF874981BBE111A4B2BA528552D568 + xmp.did:9E0A5EBF9DB411DF9B0D808CA4D20FEC + xmp.did:9E4C6A750820681192B0FEBDA93E3C72 + xmp.did:9E5A44A108206811871FE8C12D95F69C + xmp.did:9E7D607C4F216811AF5C82C8D4EEE19A + xmp.did:9EA1AF2B9358DF11BB73AF92DE6846CC + xmp.did:9EBF2E6B53BCDF11BF13EDD7C6A21F60 + xmp.did:9EC912840720681192B0E6C15935B3CD + xmp.did:9EEE9DD0C53EE011BFBA90116FF25CC3 + xmp.did:9EF7D92FC392DF11AED6A59B0EF71149 + xmp.did:9F2C9CACEE0AE11186C29F7E56C3BAA4 + xmp.did:9F477690B6B2DE11B540EAD222586A4A + xmp.did:9F53ACD80D54E0119E1DA9C1E363878D + xmp.did:9F6D9EE0E00DDF118CA6B77357207584 + xmp.did:9F6EF0888569DE11A4BE9D93F4471CBC + xmp.did:9F822ADCF0D711DFBE96AA0FFE5462A2 + xmp.did:9F822AE4F0D711DFBE96AA0FFE5462A2 + xmp.did:9F87470B44BDE011A458C40B09B7BC40 + xmp.did:9F9BA873B43EE011B342C8C5CBE9A992 + xmp.did:9FCAE27235CEDF11A78EEE6DEDC81BD7 + xmp.did:9FD65B826D04E011AA5AC8AB7E99A633 + xmp.did:9af84ed6-2d1d-7347-9e34-3c74fc5dd0b8 + xmp.did:9ca501b2-6f06-ef42-8536-2de220368539 + xmp.did:A020731FECEBE1119451D5059AAB1E2F + xmp.did:A0397E10064FE011A157DCE09D412734 + xmp.did:A03F962F5F1DE1119935D00D8CDD8252 + xmp.did:A0438173BD52E011BA4AB6EDCDCC4831 + xmp.did:A0546D104BC511E0B78A85AD4FD2359F + xmp.did:A0704BB7182068119109F6AC020C5FF2 + xmp.did:A071CA6DB94911E19CCA971F39B32899 + xmp.did:A09624A37E7EE111A4C382D12C4BE1E5 + xmp.did:A0A6AE25202068118A6DACAAA4DD6020 + xmp.did:A0AFA84FD870E011B557BFCA0CAA97BB + xmp.did:A0B472AF092068118C14CA160A1107BD + xmp.did:A0D4F208AF206811BF4AF4186667B28C + xmp.did:A0D95375602EE011BFE4BBC5757CE984 + xmp.did:A0EED1530021681188C696DC609994EC + xmp.did:A0FB9F976F21681192B0E118D6113D9A + xmp.did:A115D635AAA2E511A786F4F7700740DD + xmp.did:A12B42D4AA49E1119A1A82F4F21C1956 + xmp.did:A14174A6A10A11E0A24BA2B8CB0DE68E + xmp.did:A14383D992BAE011B79EB2A96A4B247D + xmp.did:A1477690B6B2DE11B540EAD222586A4A + xmp.did:A1596ED0B29EE01182EDA0236AF1B786 + xmp.did:A16398DBBF5BDF11A16BA892E5C635A1 + xmp.did:A17AA5B4FC4EE01191CBCAEE4CB67D91 + xmp.did:A19B51187538E1119063BF48A3C51EAA + xmp.did:A1A376F8F05FDF1185C0CF73B26D7444 + xmp.did:A1A747644C21681188C6C2EFB22D669F + xmp.did:A1B27AFFFED3E011A8A3B9BD5823DC55 + xmp.did:A1BF88CE3743E11182ACB5664FEA4D60 + xmp.did:A1C5E8639820681188C6A894A1D908BE + xmp.did:A1EAE66D312068119098A37C55994CC0 + xmp.did:A202F0D7092068118C14CA160A1107BD + xmp.did:A21F72567D09E211BDF3E77D7562D72A + xmp.did:A23DA5AAD6B1E011A5629C3693D5C0CF + xmp.did:A261A64B6C56DF11927D83A0D1B5254A + xmp.did:A26263210D20681192B0B59A26F7999F + xmp.did:A27106D5BD7411E0A5EFD31E02B605E0 + xmp.did:A279E2A6FB206811871FAFE2B6937D3F + xmp.did:A27C6A3AA73BE111992AECDF94FDE8D3 + xmp.did:A2833C2E2444E011BD9DC1B3067CD7C5 + xmp.did:A28415440A2068118DBB9D77FB701C12 + xmp.did:A2AB0190C61CDF118291B34EB35CAD1D + xmp.did:A2B299F0726FE0118AC58FDA9DF5DA7A + xmp.did:A2B472AF092068118C14CA160A1107BD + xmp.did:A2F5C5F1E5CBDF11AD7D9A1023BE16FD + xmp.did:A30D0FBEF74F11DFAF2EB5C21BA6BB42 + xmp.did:A3126D5C17D6DE1196E4FC68B649661C + xmp.did:A32C2CD40D20681195FE95EF7EFE3E6E + xmp.did:A32C675E96BB11DF8708CDBFAA1138A4 + xmp.did:A32CD8C0D98CE1119249DD516C915D6E + xmp.did:A3396F268F37E111B7C5C6A15807B5C8 + xmp.did:A33A0B382E35E01194FA9BEB0F9B9735 + xmp.did:A34318916E06E111B040E83F6C9E9150 + xmp.did:A3501E239D2FE011A325D07E052CB137 + xmp.did:A382A88E2793DF11AAED82EACCF501B8 + xmp.did:A3A429A15120681188C6D9EA900BA018 + xmp.did:A3BBE865F3B5E111B0F5B8401F17196E + xmp.did:A3E5A304A227DF118D16BB63CD005239 + xmp.did:A3F4D7821620681192B0C5319CB69C7C + xmp.did:A3F5406E5E2EE0118600E825AAC3B0AA + xmp.did:A402F0D7092068118C14CA160A1107BD + xmp.did:A415DE43A441E111BCBAFDA504A82247 + xmp.did:A41B25DD19206811871F850BE2F5A6A4 + xmp.did:A427431973EC11E0A792FB6CA6498740 + xmp.did:A42DBA365804E111B4C3F718B1A87745 + xmp.did:A4538714DD20681195FEC8FA8A631CDC + xmp.did:A4571A95E450E011AFB9E00C7572E665 + xmp.did:A45984D679F411E19D9D919EB543E03F + xmp.did:A46569B2CBDBDF11A44CF5D6F97CD41C + xmp.did:A48499331620681188C6D9EA900BA018 + xmp.did:A48D36A70E206811822ABFFA029D9A53 + xmp.did:A491E44BE6EFE011A72BC4DCA77C5A48 + xmp.did:A4A429A15120681188C6D9EA900BA018 + xmp.did:A4B472AF092068118C14CA160A1107BD + xmp.did:A4BF9ADFE953E011BB7DC31FA9F74AB4 + xmp.did:A4BFE4C6F22BE011B403A0D9F1D68637 + xmp.did:A4DFED55942168118EF8FBCB87D04E57 + xmp.did:A4EAE66D312068119098A37C55994CC0 + xmp.did:A4EB0A6E2218E0119CEFBA954A5518BB + xmp.did:A4F9B533FBF0DF11BD97AADAF5573B93 + xmp.did:A511B8AD212068119109C4FC82D5C1CB + xmp.did:A515D635AAA2E511A786F4F7700740DD + xmp.did:A51FC041BFFFDF11BF72D4A98D9FB403 + xmp.did:A55F123E24206811A462B2919D2F5E5C + xmp.did:A57D864FFC7EDF11928CE252CAD94E87 + xmp.did:A5C0A5BF0094E1119826EA7C08188667 + xmp.did:A5CF3D2C11B6E01180C3C485EFE5BE6B + xmp.did:A5D4500BDF236811B846B0248F6C2F77 + xmp.did:A5EE2524DC61DF11A4FCF6AF0F892C25 + xmp.did:A5F0B1A348EBE0118A34ADD00EBCF069 + xmp.did:A5F9B533FBF0DF11BD97AADAF5573B93 + xmp.did:A60A9CE5B121681188C696DC609994EC + xmp.did:A611B8AD212068119109C4FC82D5C1CB + xmp.did:A614DEBAA94711DFADA888B0BC31ACC2 + xmp.did:A615D635AAA2E511A786F4F7700740DD + xmp.did:A628AAE1CB4DE0118CCDBF34AD86A220 + xmp.did:A62C24A7C0B9DE11B227A6D77EB5B234 + xmp.did:A664E9EEAE3AE1119F23A0792150D978 + xmp.did:A67C6A3AA73BE111992AECDF94FDE8D3 + xmp.did:A688D3B59AC6E011A93D9F61069A0227 + xmp.did:A6B9D224C11CE011B00CB478FFB6570F + xmp.did:A6C24E1BF5C3DF119F6D9BF4B2FB596D + xmp.did:A6C6277E1C89DE11A849D901E441D0B0 + xmp.did:A7132138298E11E18C7BE78785B82E8B + xmp.did:A76569B2CBDBDF11A44CF5D6F97CD41C + xmp.did:A78499331620681188C6D9EA900BA018 + xmp.did:A792B57D4B206811871FBF7EE03058F8 + xmp.did:A7D3418CEE0AE111AD8BD4229A939C62 + xmp.did:A7D42BADE5DBE011A3E7B1B79B561555 + xmp.did:A7E32585FDAFDF11B8B4EEBC76738E70 + xmp.did:A7E359840D35E111943ECBE41034123D + xmp.did:A7E473D0DB77E011A72BB337603AD007 + xmp.did:A7E87A2F958C11DFB77CF3AD4F00B0EF + xmp.did:A801D08B4631DF1196A2A590C8AA7993 + xmp.did:A806C3667DA0E011A4FEE67DFDD7FB36 + xmp.did:A80A45DA846AE011ABDBDC252AE9E519 + xmp.did:A80A9CE5B121681188C696DC609994EC + xmp.did:A817C161BFA411E08C7396F5C0DD6D7F + xmp.did:A81FF5AC08F0DE1196F0FE049443246D + xmp.did:A8378A1336A3DF119EE78D38E30AAF63 + xmp.did:A83A97962E2068119109C80A4C3147BC + xmp.did:A83F6E77D1D8E011B6A6C8590EC842C2 + xmp.did:A84263664D20681197A5CC815690B972 + xmp.did:A85C46E53050E011A8CF868C542065BA + xmp.did:A86F4C6E263CDF1183EEA906F471E8EE + xmp.did:A8753F0F3BD5E011A475A34EFDEEE95E + xmp.did:A88851516540E011A65582CD6946AD1F + xmp.did:A8A087DAF789E111AF959497B264FF45 + xmp.did:A8B472AF092068118C14CA160A1107BD + xmp.did:A8C0E2C1D0FBE011A7B595483F6A098A + xmp.did:A8ECE7294820681188C6E275F11AA5DE + xmp.did:A8F874C2EAD011E29DFC9148214CAB65 + xmp.did:A8FA4183082068118F62F82DE1DBB36F + xmp.did:A911DC4650E7E01197AEA7FA81354634 + xmp.did:A92B25175C34DF11ABC5C93DF330D6B5 + xmp.did:A9432DF857F7DE118BE884B676DB25DC + xmp.did:A947F2DB1A2068118A6D83BDDADBE6EE + xmp.did:A951F844D1DFDE11B9EC81691F4C5197 + xmp.did:A95C46E53050E011A8CF868C542065BA + xmp.did:A96BB4E420C2DE1197B9C27461EA39BD + xmp.did:A99FF003027DDF1185DCFB77CE2E9070 + xmp.did:A9A9E303A4E0E0119057EB1404BCA269 + xmp.did:A9C892311C8FE111B392B31FC1AA9531 + xmp.did:A9EA192F292068118DBB82DD622598DD + xmp.did:A9F9B533FBF0DF11BD97AADAF5573B93 + xmp.did:AA07B12E2A6ADF118FE0DC3DF1A3242E + xmp.did:AA55CD7E1120681192B0A8894DA43F42 + xmp.did:AA6569B2CBDBDF11A44CF5D6F97CD41C + xmp.did:AA6C5F82AE206811B840E00E6A4F6FDC + xmp.did:AA726EE4502CE1119EFFABE71B4789BD + xmp.did:AA81A45AE73CDF11A80CBD81BB684280 + xmp.did:AA9263DCFFB0DF118045897BB0D3EE9E + xmp.did:AA95ECEAFBCB11E0B8349A3729197D0F + xmp.did:AA9C16286FDBDD1193EB809E8012ABEF + xmp.did:AAB472AF092068118C14CA160A1107BD + xmp.did:AAC0E2C1D0FBE011A7B595483F6A098A + xmp.did:AAD6F828FC7CDF1185DCFB77CE2E9070 + xmp.did:AAE768FF8D6ADF118290CBB94C5CF4F0 + xmp.did:AAF2C1573B26DF118BC5928689F4BE6C + xmp.did:AB074D2D0F9DE011B929E56A1DD8643C + xmp.did:AB11ABE8292068118DBB80A320BFBF2C + xmp.did:AB31483161206811871FBF7EE03058F8 + xmp.did:AB4234A1C5F4E011A2FE8AAEB81CA112 + xmp.did:AB74F6F3922068118083DB197420851A + xmp.did:AB7E99DDA5D3DF1184108A6DF5F8799A + xmp.did:AB9CD0663720681188C6D9EA900BA018 + xmp.did:ABACBB300DDCE011A6A6B12C164BF1B7 + xmp.did:ABF374E4D91311E0AF3CE05900458AE8 + xmp.did:AC0419C6F88EE11196CFDEF802C65482 + xmp.did:AC0FF2178D7FE01192A6A33A0D45BA18 + xmp.did:AC39DCEE7B2AE011BDC1D191A6B2CD45 + xmp.did:AC4ED736C67EE011B655ABF743C739D5 + xmp.did:AC507002B137DF11B680B028963712CE + xmp.did:AC5F7C2C5D206811B4F2BD4D6AD5D039 + xmp.did:ACD6F828FC7CDF1185DCFB77CE2E9070 + xmp.did:AD118B0104E4DF119190888724FA0B17 + xmp.did:AD3773DD9D53DF11B8B4B48CEB770F68 + xmp.did:AD3ED6215B206811A914DCA9418AFBD5 + xmp.did:AD4D4DE81C2068118C97EB5E0646166B + xmp.did:AD7319D5D13DE4119062F740CF3C9EA8 + xmp.did:AD7E6F1019E1DD118094BF8DE5F58001 + xmp.did:AD92B57D4B206811871FBF7EE03058F8 + xmp.did:ADB346D795D3E011AAE9CFFDE13C8A0D + xmp.did:ADCE7A2D3E2AE111907ECA29312CB805 + xmp.did:ADD6F828FC7CDF1185DCFB77CE2E9070 + xmp.did:ADF04AB50FBFDF11A294E3FB71CD9EB8 + xmp.did:AE0C3315A52FDF119264CE0A107D0B1B + xmp.did:AE1FC868CE15E111AAA8806CABA5E096 + xmp.did:AE33AF4C4C206811871FFDCB7BB36B1C + xmp.did:AE530F50164FDF11ACEEA9281EB7EE6F + xmp.did:AE57396FF64ADF11AC3ACB0022D6CE0D + xmp.did:AE585B09659CE011B6BFD4CC3520FB5C + xmp.did:AE79391F3443DF11ACC38399C4A044B9 + xmp.did:AE8B92FB3281E011A8E58A68FB958485 + xmp.did:AEEFFB4525C3E011BEF0A37AC8AFF6B8 + xmp.did:AEFF010E2F4CE011A153D2BF7C2CEB4B + xmp.did:AF13766D8489E111A419EBDCA6D8AC58 + xmp.did:AF223C4E7ED7DD1199E1B78BB722FF90 + xmp.did:AF3F48E9A5C0DF118427E32E6F9EFF05 + xmp.did:AF3F94FC8A8111DFB58EA5992B51587C + xmp.did:AF68BFE95CBBE01182C1F2A4519DB41C + xmp.did:AF6AA0676F12E111AB23CDBC45B9DFAF + xmp.did:AF736DF8A0C0DF119CDFF931D0DC0F6B + xmp.did:AF7B4A72262068119457B94B0A19120E + xmp.did:AF7F50CA7E246811910989E2636DFD79 + xmp.did:AF8113360495DF11A12DD8C66F1CA3F8 + xmp.did:AFA2FC108995E011A6C7A01A09208ED6 + xmp.did:AFB7662F1C05E0119489B8761788EEA8 + xmp.did:AFBBB457E0B9DE1187A2C260A294EDCA + xmp.did:AFD9EA0C1BDCDE118D44940D050F6D4E + xmp.did:B01EADEA1DBBE1118C61C3FA7E29662D + xmp.did:B02DA61A6058E0118095B3CB5F9A4E45 + xmp.did:B031483161206811871FBF7EE03058F8 + xmp.did:B03E696E21C6DF11891AB4133B3B4FF4 + xmp.did:B03F48E9A5C0DF118427E32E6F9EFF05 + xmp.did:B04157016BFCDE118931F9ADD8EFAB3D + xmp.did:B05F7C2C5D206811B4F2BD4D6AD5D039 + xmp.did:B066F3A7FF10E0118596D85222857949 + xmp.did:B079391F3443DF11ACC38399C4A044B9 + xmp.did:B07D7E801F47DE118CC7815CC789D89D + xmp.did:B08B92FB3281E011A8E58A68FB958485 + xmp.did:B09C874A37DB11E09A1AECB6F8F33707 + xmp.did:B0A5EC655C1DE1119935D00D8CDD8252 + xmp.did:B0ABD4E4F1A1E111AADDD9BE4B19A9A3 + xmp.did:B0CEA8BF16206811A961D90CEE83FB59 + xmp.did:B1037F6DC648E0119044C11EAF2DD91E + xmp.did:B11D360C25F1DF119445A5FD895D781E + xmp.did:B13F48E9A5C0DF118427E32E6F9EFF05 + xmp.did:B1448B467342E11195B8DD8A60869EA9 + xmp.did:B16C4466D159E011A2349D60467845DF + xmp.did:B170A74DFDECDE11BBD9E48B4DB5638A + xmp.did:B17589E469B6E011A52D9BC902AEB663 + xmp.did:B17F50CA7E246811910989E2636DFD79 + xmp.did:B1854DB6AB37E0118B3D9D759656F948 + xmp.did:B18BA50B29D0E011BD6BE61C775B876F + xmp.did:B1A716712DBAE111B8FEABD95307C82B + xmp.did:B1A7206056CEE1119177BD2372B6623A + xmp.did:B1D6F828FC7CDF1185DCFB77CE2E9070 + xmp.did:B1EFFB4525C3E011BEF0A37AC8AFF6B8 + xmp.did:B1F836658072DF118E3AF8C296A37EAE + xmp.did:B223C75EEF80E111860A8B44442DFEC0 + xmp.did:B22E72991EDFE011BAC7F7CD194FE1BE + xmp.did:B239DCEE7B2AE011BDC1D191A6B2CD45 + xmp.did:B2461DD84E7B11E0AE7EE57423BA3D5C + xmp.did:B251B6060EFDDF11B2E3C4FD4894A392 + xmp.did:B2AF2FAA3A47E011966ED668BB03D2AA + xmp.did:B2D3562B68DADF11A00F884AD9B8C71E + xmp.did:B2E2684C49226811AB08A7F30EE532D7 + xmp.did:B2F04AB50FBFDF11A294E3FB71CD9EB8 + xmp.did:B320A735A7A4E011A929BF120BD8410B + xmp.did:B326D72B98C4DF11BA82AFFFE558943D + xmp.did:B32E3D397D2511DF8E24B415534FB3A8 + xmp.did:B36A57361D06E111A37E86E77136C1FE + xmp.did:B384A9B53760E011891BDD7B2B19AA51 + xmp.did:B385BBF73D17E111BF6AC50500EC8D4C + xmp.did:B391F437F5C7DF119600B07951353894 + xmp.did:B391F8CD01B511E1A18F97A8D26A3B0F + xmp.did:B3E6CD3F132068118083AEAC33B78D50 + xmp.did:B3FCE625EDDAE0118842B29FA6343094 + xmp.did:B40041A6F051DF11A2E9ADF0264A63A1 + xmp.did:B4084F86DDF8DF11B54DB2ED51FD1176 + xmp.did:B40B63B02179DF11925588942757E37B + xmp.did:B43A9BE516B9E011AEBCBCB1E3A15768 + xmp.did:B4453095B891E0119C438633AD9A31E7 + xmp.did:B45CAF4FD4CBE011BB0BBD49AFE979F0 + xmp.did:B48BA7A09FB5E1119C6E89DCDD4DB9F2 + xmp.did:B4A24D3FFA8FE1118E1C848D719FF97B + xmp.did:B4E0211D2220681191098EDA3A856956 + xmp.did:B4E6CD3F132068118083AEAC33B78D50 + xmp.did:B505585B4720681188C6D9EA900BA018 + xmp.did:B5320ECB5B206811A7BAE494E9F9FFEC + xmp.did:B5A517ECBFE5E1118B99A97503504C1B + xmp.did:B5B0C2465198DE1186268619AF7D6180 + xmp.did:B5B5C6053616DE11A377DFF74779306A + xmp.did:B5DE08C0C315E1119755E241D5A23E15 + xmp.did:B5F1870668E7DF119EA1DC61067ACA89 + xmp.did:B609F8673D2068118DBB9A2BD87D7921 + xmp.did:B60B63B02179DF11925588942757E37B + xmp.did:B63F12421C206811A613A58B58BE7BEA + xmp.did:B64468DD2020681192B0FB3680825E28 + xmp.did:B6566202FF0CDE11A770A9ABB3D9137E + xmp.did:B66B14327664E011BE41B15A6A029915 + xmp.did:B66D2892EF60E11183FEFBA13F4F98A4 + xmp.did:B67E6493DF206811945790C27116D4D3 + xmp.did:B6936E01CE9DE011AF4CB0B3AD39C76D + xmp.did:B6DB0B007C20681197A5FEC97E293B54 + xmp.did:B6E05DBE2E41E111B5B5C1ADEA3A5F3C + xmp.did:B6E3DB38242EE011BC6C9EE36EDD006E + xmp.did:B6E6CD3F132068118083AEAC33B78D50 + xmp.did:B6F2711BBEBBDF1196F5B44D3A9BD6F6 + xmp.did:B705585B4720681188C6D9EA900BA018 + xmp.did:B70CC0A3962E11DFBC9BA3D053D5FACD + xmp.did:B7166A241C71E0119E40DC43C5D01699 + xmp.did:B7177F65132068118083AEAC33B78D50 + xmp.did:B71CBBAB87D9E0119C59FE8CDB19D7E7 + xmp.did:B7283C04A664DE1192CE8DBDC2ED0F7E + xmp.did:B7303852DC5011E0B192AB8A8597E6C6 + xmp.did:B74ACEE3B8206811BF3094187AF8421C + xmp.did:B755B6457C84E1119594B241CA543877 + xmp.did:B7598833D620681188C6C0C998FCF1E5 + xmp.did:B77FB0F51E22E1119E19EE77D5679CE7 + xmp.did:B78BBDFC462068118DBBF48E52A50436 + xmp.did:B79004CE1E8AE111AF959497B264FF45 + xmp.did:B79400394D60E111A66DE9050C7F3C5E + xmp.did:B79554CE78A6E1119057FDEFE5671B50 + xmp.did:B7A2233E092068119109CF39C33EE918 + xmp.did:B7A4707036E3DF11AB509BEE1258BAE6 + xmp.did:B7C04010508D11E3A465E14DA8372D34 + xmp.did:B7D06549DF206811871FEC7C962926E4 + xmp.did:B7D58F9579B011E19AF3D57CE9DEB3C9 + xmp.did:B7D58F9979B011E19AF3D57CE9DEB3C9 + xmp.did:B7D58F9D79B011E19AF3D57CE9DEB3C9 + xmp.did:B7DD540D3BCEDE11AC1FBF9D231E361F + xmp.did:B80D545D0B88E0118558E08BEA92CFD0 + xmp.did:B80DE739B46FDE11BC6BFF7671AE3033 + xmp.did:B82CDDFC4FB9DF1189DACB811D57ABC7 + xmp.did:B82EAE4AF927E1118E15C8B688C66653 + xmp.did:B90E34965C61E111B4DDA07085C1D44F + xmp.did:B9298811E644E01182999DFF21132786 + xmp.did:B92B6402492EE0119CF4F6D22449B1C1 + xmp.did:B932B92E0920681188C6956C521FE498 + xmp.did:B9491A640110E01196F8F8E3534F1D53 + xmp.did:B956EA72157DDF11A762EA67B35A3A50 + xmp.did:B97A616130A2DF119D459194683E7D64 + xmp.did:B983E46D9C41DF119B86CA4DF55376C7 + xmp.did:B9961F168B61E011A295D2562FFEC2E6 + xmp.did:B9D9FBF1322068118F62A3657589B3FF + xmp.did:B9E6CD3F132068118083AEAC33B78D50 + xmp.did:BA2334AEFD53E011A54D9507E0E8BC34 + xmp.did:BA32B92E0920681188C6956C521FE498 + xmp.did:BA364F5B3B43E11182ACB5664FEA4D60 + xmp.did:BA903E531C226811B840E00E6A4F6FDC + xmp.did:BA9753AC5C89DF1187298769394E5F35 + xmp.did:BAA99C780A9AE111835787A7994F4DB5 + xmp.did:BAAB37707EDCDF11B250F589625DEF80 + xmp.did:BAB1D4E00461DE118EF4F70EBA356470 + xmp.did:BAC74A767A3BDF11B81DE3CAC7B760A2 + xmp.did:BAE6CD3F132068118083AEAC33B78D50 + xmp.did:BAE948E4A421681183A2BC64D6373250 + xmp.did:BAFCE625EDDAE0118842B29FA6343094 + xmp.did:BB04E02B48E3DF11841DFAE875AE9437 + xmp.did:BB0A14801C206811A8E584DDBD18C185 + xmp.did:BB0D6483C794DF118D69EC6829104E8E + xmp.did:BB0F008D11206811BD35B6F06AAF40D7 + xmp.did:BB1625B78953E011A54D9507E0E8BC34 + xmp.did:BB177F65132068118083AEAC33B78D50 + xmp.did:BB251EF6B780E011BFF8C28A70355E3A + xmp.did:BB2FC5F4D57EDF118305EDA1F6FD8EDF + xmp.did:BB3565E81520681192B0BAA904DE0F8D + xmp.did:BB3C84B28158DF119ED0B9B507A39113 + xmp.did:BB699D250D24E011AB00E30AF09ADEB0 + xmp.did:BB75AA48AAA911DF98C1DB094064B1FE + xmp.did:BB809E708421E011A0908899644B66CB + xmp.did:BB8FBA12034A11E3A5ECDFBFDADD6F0C + xmp.did:BB9018595671DF11AFE4B9D947965D65 + xmp.did:BBBC1FF539A4DE11A0C2DC75956E961B + xmp.did:BBDDB312AB206811AADAE549D6335493 + xmp.did:BBDE6BFAE69CE111BF50CCFEA6042E31 + xmp.did:BBE0CFA2B12068118F62B83BB8D9B324 + xmp.did:BBFFC530D12068119109C37490BE3834 + xmp.did:BC0D6483C794DF118D69EC6829104E8E + xmp.did:BC10865B5F7FE011ABCEBA0545ADD48F + xmp.did:BC14929B7521681188C696DC609994EC + xmp.did:BC73832A3B20E5119484E680A9D1D19A + xmp.did:BC7CE691D856E011921BE2DE87A39B49 + xmp.did:BC806AC3DFD7E0118AB9ECA40DAC3FF4 + xmp.did:BC854B8D7DBCDF11A1348A3D0D68C17A + xmp.did:BC89DDDD35206811BB779CBAF9EED77C + xmp.did:BC8F7BF39F16E011AC0DE62667E13BFD + xmp.did:BC9524B86286E011ADE6A85D852EE6BB + xmp.did:BC9B22EE162068118083B78A909B2B11 + xmp.did:BCC8924632206811A178B4862A3AC2C7 + xmp.did:BCFC981D30206811994CBE8060E149B2 + xmp.did:BD14929B7521681188C696DC609994EC + xmp.did:BD281BA50698DF118579E4E2563F7F34 + xmp.did:BD2C58CFD39DE01191C3E700D6E933B7 + xmp.did:BD44F04B1A20681188C6CE9135C0C173 + xmp.did:BD4FBB59F4E0DF11BD2DE370FC8E0ED8 + xmp.did:BD68E68606E9E011A3CFB9B563906728 + xmp.did:BD6ADCFCDB13DF119C3D83FF7794143A + xmp.did:BD6B1DE20174E01192F2D8B5008E758A + xmp.did:BD6DE40B2A4CE0118724D9E4A19347E0 + xmp.did:BD774EEE3E20681188C6D9EA900BA018 + xmp.did:BD88AD504EC0DD119D23A1894B39C9BC + xmp.did:BDA6310252246811AB089221FD919C60 + xmp.did:BDAE7549B960E111B147EEA823749559 + xmp.did:BDAEF7BB77D8E0118842B29FA6343094 + xmp.did:BDC6462CCEB3DF11873FA3644F977FE3 + xmp.did:BDDDB312AB206811AADAE549D6335493 + xmp.did:BDE85EF672B8E0118F8EDA00AA1CB991 + xmp.did:BDF628888D216811910981D42F740DA7 + xmp.did:BE04CABC6C2AE31193B5AFF910FF6B5A + xmp.did:BE3002B40A1CE111980DD3704E48DDCE + xmp.did:BE416C50C119DF11A80F8E9D0739BF8F + xmp.did:BE4C64FB0A2068118C14CA160A1107BD + xmp.did:BE5C1C91353CE4119DFAF0E913E69F38 + xmp.did:BEA04A1A0434E1119FF3F74B26136001 + xmp.did:BEACBAD96F2268118083DD6A9D608EBA + xmp.did:BEB28CA27120681192B0C7D55FF9068C + xmp.did:BEF8386E0B2068118C14CA160A1107BD + xmp.did:BF0FF0E5621511E085C1D1F80F173C23 + xmp.did:BF149148DE5CDE1191FCC99E878917CF + xmp.did:BF16032FDA85DE1192179C1E623E78D5 + xmp.did:BF1BD0661BEDDF119F88F5423D9DEE6B + xmp.did:BF347B8D804DDF1194D8EB13EAA37FE9 + xmp.did:BF7C797A9EA7E011B01BA4DFDBC23FA5 + xmp.did:BF9B22EE162068118083B78A909B2B11 + xmp.did:BFA932E0D2BDE4118F75B2307B8F5D7E + xmp.did:BFACBAD96F2268118083DD6A9D608EBA + xmp.did:BFB294DE4D4EE1119F57C4A5BE6AAED9 + xmp.did:BFB9CFDEFD7ADF11869BF2A815607DA5 + xmp.did:BFC0C5B40DD8DF118B1CEFE42661661E + xmp.did:BFC6462CCEB3DF11873FA3644F977FE3 + xmp.did:BFD75184AE21681188C696DC609994EC + xmp.did:C00F22CFBCF9E111BDFEDE3E305139CB + xmp.did:C03040BFDF90DF11AE82CBA880F138F9 + xmp.did:C034538D5F5AE11199CBFAB74B1F4F17 + xmp.did:C04A4C755004E111A0CEB8112A5FA2B1 + xmp.did:C04BD4E7C09BDF11AFDDE3BAE1452D92 + xmp.did:C04C64FB0A2068118C14CA160A1107BD + xmp.did:C05698F0819011E1B924A4A8CF2A245E + xmp.did:C05C1C91353CE4119DFAF0E913E69F38 + xmp.did:C074A85E06F7DE119CCA8227581679DF + xmp.did:C085439615206811871FE459E5C10885 + xmp.did:C0937B38E2FFE0118D19FADB1379B097 + xmp.did:C0B294DE4D4EE1119F57C4A5BE6AAED9 + xmp.did:C0BA93CBAD206811BFE5BF57D4DB04A4 + xmp.did:C0BE3DD3B67FDF11A113CFD856808638 + xmp.did:C0CFCD71C1D3E011B6BE8D9779943369 + xmp.did:C100D34AF3B6DE118225C3B893DC5B31 + xmp.did:C1056566FD38E111A204DF35337AB869 + xmp.did:C12C2402E064DD11AE6AB030FE2B7C4A + xmp.did:C14A4C755004E111A0CEB8112A5FA2B1 + xmp.did:C156FCEB6B216811A8ED8AEF6BA05C9B + xmp.did:C165C544C7C2DF11A123E3AF092F11A9 + xmp.did:C16B15488B21681188C696DC609994EC + xmp.did:C1774EEE3E20681188C6D9EA900BA018 + xmp.did:C17EDBBD17D0E011835FE6E78D3D4FA8 + xmp.did:C1838F8DDA0AE01197429FC76726047E + xmp.did:C19035396243DF1193B4BAAD8CB31094 + xmp.did:C1A1F0596D89E111A776DE58E356118E + xmp.did:C1A9DF14DE9CDF118817EBE6E8614D49 + xmp.did:C1B6D69A6848E011B94B87C81455C941 + xmp.did:C1B95654624411E08BAFE267FCDFB48B + xmp.did:C1BF86EBC124DF11A9E6FB78804C0B92 + xmp.did:C1C6462CCEB3DF11873FA3644F977FE3 + xmp.did:C1C685F12830E21197D5E4A8B9E20F1C + xmp.did:C1E599E6A521E011B9BAB7A0AF851ED6 + xmp.did:C1F456B1E5F0DF11A0DC84A10DADEBAB + xmp.did:C1F748A95921681188C6BD0FAC4EC9BB + xmp.did:C209892F02BBE1119990DD7013639F1E + xmp.did:C223F901DF92E211BC18E067D364DAD0 + xmp.did:C22BF9A7E57CDF11A037D04342FCD276 + xmp.did:C23565E81520681192B0BAA904DE0F8D + xmp.did:C24B38D5252668118BA3CD18E35B1F7F + xmp.did:C257DF5762B4E111A305FB68720018A4 + xmp.did:C25D84C226CEE1119E2CF7EBABAE310E + xmp.did:C26C0D495267DF11B2E5C8CA2A20B501 + xmp.did:C29423945D1AE011B769E06901DFE4F0 + xmp.did:C29C58B9EBDADF11AF20E3D3A3FCE87D + xmp.did:C2F3373FF4D6DF118025BF024460BF28 + xmp.did:C30CC6DF298E11E1AFC8CE46170FD4E8 + xmp.did:C33169927EA6E1119057FDEFE5671B50 + xmp.did:C344E12C0433E111BA358F5A89E289BB + xmp.did:C349FF862709DF118B80AA4CC2D46C47 + xmp.did:C373CEC0362068118F62D0F7010AC02F + xmp.did:C37EDBBD17D0E011835FE6E78D3D4FA8 + xmp.did:C38F0EAD67206811A26EEF0A84B9044C + xmp.did:C3A3496220E011688EF1D2162A624E2D + xmp.did:C3A3496320E011688EF1D2162A624E2D + xmp.did:C3A3E5438427E11199CCA05139BBF738 + xmp.did:C3A86B1D2147DE119A9AD286EF8C1403 + xmp.did:C3B2E8E52C01E0119F79B5FBFB8668B2 + xmp.did:C3B486656C46E0118F36BB6288C13F67 + xmp.did:C3D003939021681188C6EED62F2B361B + xmp.did:C3D78C5BE905DF119CB4A0E631D7DBDD + xmp.did:C3E779E47623DE118C65E18A859A18B5 + xmp.did:C3E99553BA2BE2118052DF928F7D1CCC + xmp.did:C4162A413005E111BDC980CE114BB613 + xmp.did:C43A18A8772168119BD28AA6FD664D48 + xmp.did:C447849EB9D8E011A0C9924A4691E820 + xmp.did:C475B06BDD7ADE1185FEBAE64D409620 + xmp.did:C479F20430A6DF119C3AB96E6BC803AD + xmp.did:C49889380C2068118DBBE3913583D1DF + xmp.did:C4AF4E884A20681188C6D9EA900BA018 + xmp.did:C4BBCF36A76AE011AA59C936E3811281 + xmp.did:C4CD137F1E0FE0118A4E830B74E1FFC7 + xmp.did:C4E203091824E1118C85CDD1B46C9C40 + xmp.did:C4E354E44C1CDF118D6FB601220BC6D2 + xmp.did:C50438F886D8E0119667D0AC9675DDAF + xmp.did:C53485763605E011B0878B10470BE98C + xmp.did:C53A1EEB2926E11195BCA7B9075E6228 + xmp.did:C53B2582BCBB11DF9A12D89AE4A6FCDB + xmp.did:C5462B90A82AE11192D7ADEDD42F4562 + xmp.did:C556FCEB6B216811A8ED8AEF6BA05C9B + xmp.did:C5652C639D4CE011A4B0BB5522D3D45B + xmp.did:C57F117407206811AE56F9DF145DFB90 + xmp.did:C5937B38E2FFE0118D19FADB1379B097 + xmp.did:C597C9E96B86DE118E3ABAA4690EC045 + xmp.did:C5D75184AE21681188C696DC609994EC + xmp.did:C5F57AC71D1F11E09B3DB2A447F5740F + xmp.did:C60BE73262A9DF11B657C71722F9785A + xmp.did:C610A98D915BDF1191C0E19BF2D4ABA1 + xmp.did:C61E588F82A2E011B542F8C04DABB545 + xmp.did:C647849EB9D8E011A0C9924A4691E820 + xmp.did:C66C0D495267DF11B2E5C8CA2A20B501 + xmp.did:C67D90E01827E111A8EFE41B623878EA + xmp.did:C69C58B9EBDADF11AF20E3D3A3FCE87D + xmp.did:C6B3A3B94A21681188C696DC609994EC + xmp.did:C6E354E44C1CDF118D6FB601220BC6D2 + xmp.did:C70A1F8A9349DE119B948BACA98BBECA + xmp.did:C7110E5F5076DF118E61ACD179D06244 + xmp.did:C715C186E720681196C6D299FAF903BB + xmp.did:C71AE4E7A267DF11BB13CBFB447480A7 + xmp.did:C720A3E020F3DE119422B5E314A66CE1 + xmp.did:C73A523D1846DF118065D80F7B596DE4 + xmp.did:C74D591B8DB8E1119240EDE1A08CEA7A + xmp.did:C78D8D2220F011E2B5A8C05675F089BA + xmp.did:C7C638916518DE11B253B453F89B7F8D + xmp.did:C7CC4562A943E0119C12D20236F1E089 + xmp.did:C7E0BC5BA529E011AB119B211930C59F + xmp.did:C7E5F38D830EDF11AD72E43AD91B55C7 + xmp.did:C7ED170E6D8CE011933FD46F77A6DE77 + xmp.did:C7FCDE82040CE111A04EE4AFB8C38083 + xmp.did:C80569A6BB2068119109D77742DCC440 + xmp.did:C82012C93C97E011B408832B6FE61C95 + xmp.did:C84CCF5DDD21681188C696DC609994EC + xmp.did:C85758D352206811871FBF7EE03058F8 + xmp.did:C8656C4D0C20681192B0CF50B4F61303 + xmp.did:C885439615206811871FE459E5C10885 + xmp.did:C8B3CA20D404E1118A02D293284C5CEF + xmp.did:C8C3AD0F9810E0119E3EED6DA52BB020 + xmp.did:C8D94497193FE011BCB2EBD6700DA6F2 + xmp.did:C8F3B716FA72E011939FAF49F3385445 + xmp.did:C9040D8138BDE411A62FE31619ACEB56 + xmp.did:C91336C6AE3CE111975DCFFF1E45CA58 + xmp.did:C92BAC37D657DF11AAACCEC463F70854 + xmp.did:C952816D83206811BCCDE187B49CA19C + xmp.did:C97C6968926AE111AC2CFE49F74F30B7 + xmp.did:C97D05025965E111B764B78B8CC76A58 + xmp.did:C9BD44900B2068118C14CA160A1107BD + xmp.did:C9C04586BC53E0119D3985FB4A82845E + xmp.did:C9C6F0C3D9A9E111B588C5939DCD2691 + xmp.did:C9CBB641565DE011B398C4BEED9575C2 + xmp.did:C9CC4562A943E0119C12D20236F1E089 + xmp.did:C9CF64FE37BCE11180DCFE0D886C1778 + xmp.did:C9E8CCFA0F5C11E0BA48D224F2326A69 + xmp.did:CA1588132050E0118558E73318898BC6 + xmp.did:CA167FBB25206811910985FEF6C92AFB + xmp.did:CA2803D4459FE111851CC52A40102C49 + xmp.did:CA38CC31E046E0119312F9CFCD5533A8 + xmp.did:CA462B90A82AE11192D7ADEDD42F4562 + xmp.did:CA67199FC42068119109D77742DCC440 + xmp.did:CA7B75907F2068118083DF8FD5225E6C + xmp.did:CA8B034392216811AB65A20D70355B6B + xmp.did:CA949CCAAFCCDF11AAA5ECB36CFA01C9 + xmp.did:CA965767E448DF11BD5AD847CAF7D20F + xmp.did:CA98F8CB7C91E21197D4C614E0E3261A + xmp.did:CA9914795148E0118D1FF4FAB72CF6C7 + xmp.did:CAA5BA052300E2118295C79BA4470A1D + xmp.did:CAA83FFC05216811910987CF0230F4F6 + xmp.did:CAB26B3347BFDF11B227F22ACDD3F69E + xmp.did:CAD23720A27DE011B2AAA058498F3016 + xmp.did:CAE271EAB3D3E0118F67DD75F39C8A4D + xmp.did:CAEE40FC0C2068118F62EA4ED2B8620E + xmp.did:CB3C8935D32FE011BF3EB0F71922FF5C + xmp.did:CB5BBB441A2068118083EE03884A9181 + xmp.did:CB67199FC42068119109D77742DCC440 + xmp.did:CBA11367AFDBDE11B680B18AED22B04C + xmp.did:CBB0B369B0216811AE56EF9E82A54D60 + xmp.did:CBCA914B2520681186C89F4E62C56BFC + xmp.did:CBEB71B80D206811871FF73D8B9221CC + xmp.did:CBEEAB899633DF1195CECCB8F131145E + xmp.did:CBFAF1BADB36DF119E05B6EBC239C5BE + xmp.did:CC20579C3A20681180839613FFBBFAAC + xmp.did:CC233AAA1220681180839CE599C3AD30 + xmp.did:CC476FB1A043E11191EF87D7B646D2D5 + xmp.did:CC49A8FC6195DE11A97FFAA811454526 + xmp.did:CC4A8DAA6244DF11AB77C876D977BC8B + xmp.did:CC4AB591A7DCDF11BF79FA62B51DF6C7 + xmp.did:CC5E84FC08206811BCC7F2991EC00E64 + xmp.did:CC663861D740E111AA2AB28BC0C003C3 + xmp.did:CC6E4409ED20DF118CE6EECE567605EB + xmp.did:CC86F379A729E011AF83D4C171EE1F29 + xmp.did:CC9F1BCA845EDF1182E794E5ABAABA86 + xmp.did:CCB3A3B94A21681188C696DC609994EC + xmp.did:CCD802C7E093E0119C33E09B12D601BF + xmp.did:CCF2C7F97C1EDF119898ACDBDF5F125E + xmp.did:CD2383FA032AE011A2BBEB2F5A3A525F + xmp.did:CD2AF5DCA5C4DF11BA82AFFFE558943D + xmp.did:CD6813070EEBDF11B9A4AA1E99D475B0 + xmp.did:CD791F5B0A2068119DD0B93340415E2D + xmp.did:CD841C752431DF11A926C54F86A2606D + xmp.did:CDB3A3B94A21681188C696DC609994EC + xmp.did:CDC0D05B9AABDF11B18AED40F31A06E4 + xmp.did:CDE1EB1E4424E2118575E1563EA05D5F + xmp.did:CDE88BCE4B6FDF11B218B00D847DC297 + xmp.did:CE153DAB66206811994C9B7F51AE0063 + xmp.did:CE1E19DFD765DF11AE3B9093F3BB1143 + xmp.did:CE4A8DAA6244DF11AB77C876D977BC8B + xmp.did:CE58F6CF24A011E19E12B87F7C1C15CF + xmp.did:CE74B033E33AE0119D87BA9069ACE126 + xmp.did:CE807746834D11E0B62FB7127DA0FEAF + xmp.did:CE999C12200C1168A613CAECC809D727 + xmp.did:CEDD717E815111E084CF9208B3BF176F + xmp.did:CF05856847206811AEE4ECC20A5D0880 + xmp.did:CF0F772E9F92E011B00AB787F8822B46 + xmp.did:CF160D2580E9DE118295C327849B2501 + xmp.did:CF37A0CCC62068118257B23D2B92E3AD + xmp.did:CF4073777D87E011B561A4A09C669CEB + xmp.did:CF87F0F119206811A7BAAF5A5E898AD6 + xmp.did:CFA6CEBA304EDF11845AA2F03EEC1F93 + xmp.did:CFD9BF7E642011E09A57C4DC582798AF + xmp.did:CFDFF474AD18E111B0C3F98FE49CA19E + xmp.did:CFE8ACA83C05E1118BB5EF9EC2706974 + xmp.did:D0243D8C84CDDF118180A8B67220D460 + xmp.did:D02BE50070C5E111AE3ABD4B5CBBBE15 + xmp.did:D0385D898772E0118C3089D479022CBD + xmp.did:D05758D352206811871FBF7EE03058F8 + xmp.did:D07157E4A170DF11AD48C2D8F6D670D2 + xmp.did:D07F8097AB88DF11ADF18AAC20F750F3 + xmp.did:D08C0C82F643E411A2A9E8BF54AB6A3F + xmp.did:D0914090A81DE111A145EF31342D0522 + xmp.did:D0A21D300D2068118F62F51F1BE14870 + xmp.did:D0A7CE91808CE011A0FC932931B9D7E7 + xmp.did:D0B31BC50D206811871F81B8681E3F37 + xmp.did:D0FF039BAC5EDE1199EBD1E902DE91C9 + xmp.did:D10E579C0B20681197A5EA3B7AA659C7 + xmp.did:D113248AE42068118BDAECB4C7294005 + xmp.did:D1221B9B4526DF11B167F777569F7487 + xmp.did:D12E4EFEF21AE111B90AA7357D1E0ABC + xmp.did:D16203B18A55E111AADBA99AFB78CE20 + xmp.did:D1882132B8A9E0118060A5737CA8CD4B + xmp.did:D196C1AF0ECEDF11ABAC8FAA866AA886 + xmp.did:D19C1D2D46A6E0119D07E07A28554E19 + xmp.did:D1C084EE5406E11197DCDE19A56A5EC4 + xmp.did:D1C97BCF69DFDE118C7A95A6BECE17A5 + xmp.did:D217B386CF51DE118702BAC19059DE69 + xmp.did:D222C9D6A6E4E0118E07C315AD56A832 + xmp.did:D24A8DAA6244DF11AB77C876D977BC8B + xmp.did:D24AA123F7BBDD11A79096FB32D753B2 + xmp.did:D267199FC42068119109D77742DCC440 + xmp.did:D276AAA6F4DAE01186C6BBBA3BF8F4AE + xmp.did:D27AE724CAD2E0119C66C1AF8049A585 + xmp.did:D28F223C6434E111BE999CB461F3D090 + xmp.did:D293BC048BBEE411B6A7B86320DBEEB2 + xmp.did:D2C71787C174DF11B9BEFFC926A1FAC0 + xmp.did:D2D750523220681188C6D9EA900BA018 + xmp.did:D2E901EB2A236811B56FCF6F10EA775C + xmp.did:D2F5CA016CDBE01195F1B37BF39DBEAF + xmp.did:D2F8AA691C37E1118462DDA61B7A9508 + xmp.did:D31F1F64A44BE111B7A2D65ED381F68F + xmp.did:D3258C3318206811B83DC55B43B113F3 + xmp.did:D3451B801E25DF11BAB9C18CADBB71B8 + xmp.did:D361197021206811B025A60412D8E311 + xmp.did:D36DB02BEF23E011A709EE79085E3A92 + xmp.did:D377CDEFE9F9E0119F53917D39FC40AA + xmp.did:D37BCA39A423E111AFD9C2B2FE1A6C5C + xmp.did:D39435776725DF118BC5928689F4BE6C + xmp.did:D3C068EC2321681192B0ED941B81D256 + xmp.did:D3D399022320681191098A39F9B5A384 + xmp.did:D3E01AC35B1BE011B74FA9432D6B3B6D + xmp.did:D3FBEA23C1C8DF119CD8E6A0E5A94A03 + xmp.did:D4054EC11920681192B0BAA904DE0F8D + xmp.did:D409BA36662EE11184A8EA502D80133B + xmp.did:D4335229C3A4E01194B19137A2998285 + xmp.did:D433EDC88323DE11BE0F8A95CE1AC6B0 + xmp.did:D44AA123F7BBDD11A79096FB32D753B2 + xmp.did:D494E0111C8DE111B3D3E856D96A0C09 + xmp.did:D495CC3D6615E011B769E06901DFE4F0 + xmp.did:D4B458ECB43A11E0B98783D89F71F9B8 + xmp.did:D5795FB4D913E111BBB7EB2638BDE311 + xmp.did:D5807B7DCD8DE111BBE0AC81A87F3E4D + xmp.did:D58C284B1638E0119CCBC45B8A98BC1C + xmp.did:D58C42943520681188C6908C2AC7828A + xmp.did:D5D1CF85811ADF11B728FE2FC0B26379 + xmp.did:D5D9C4ECE5BDE011B0BBD5E3244285CA + xmp.did:D5DE2082D6C4DF11970EB830D3504FA6 + xmp.did:D5EBF6AA2B67DF11B388947332E558C4 + xmp.did:D5EF195F2619E111B442CFE726FA0DEA + xmp.did:D6021D4FFAD9E011A6E386DFC7EAE7F0 + xmp.did:D608018C282068118A6D94CA2FB9BD94 + xmp.did:D60E615C2C3BE111BF728DC956CD1430 + xmp.did:D644863822A4E01194B19137A2998285 + xmp.did:D67FF7F2417EE011AFE5EEE6B0FC1D56 + xmp.did:D68DE4790C2068118D90BA90A5B51FF8 + xmp.did:D695CC3D6615E011B769E06901DFE4F0 + xmp.did:D69F8907111ADE11B0049C4A5E251490 + xmp.did:D6AEA4C0852168118DD5AD30F8F2BF61 + xmp.did:D6F836D92324E211A985F0BCAA6D6C31 + xmp.did:D6F8AA691C37E1118462DDA61B7A9508 + xmp.did:D7176B6D58E0E011B95EDA3E835E31DF + xmp.did:D7200B25316ADF11BBDBF2B8175EFA10 + xmp.did:D736F40B6EEBDF119CE89B15806AEDB9 + xmp.did:D7553B291820681188C69330F65606C7 + xmp.did:D76FEA384729681188C6BE54CC59F542 + xmp.did:D79444774A2068118DBBACDD367EC38B + xmp.did:D7A082228321681188C696DC609994EC + xmp.did:D7BA7372CEC1DD11A8508520D55A1819 + xmp.did:D7CBAD18E762E011B33ADAC5D4A7F693 + xmp.did:D7D51C9B7AB811E293A68D509F7953FE + xmp.did:D83C6E8818206811871FBF7EE03058F8 + xmp.did:D841E6F9C53EE111A1A2F5C3512901BD + xmp.did:D85DB58C20AAE011979696CECC20A286 + xmp.did:D883D4C80775E011B3C9FB563EB9BBC3 + xmp.did:D89648A29F0EE011952C8B18DDFA3888 + xmp.did:D89F2A646DB811DF967EA724BD208250 + xmp.did:D8B0D2C28E2EE011909FBC4937DBFAF2 + xmp.did:D8C0BD78031FDF119205B4DEDBBD05CE + xmp.did:D8D3659C0B20681188C6D9EA900BA018 + xmp.did:D8F8AA691C37E1118462DDA61B7A9508 + xmp.did:D8FC5CB2F6BADF11A50CD2C2CF0935BE + xmp.did:D8FF1AD05859E111B32AEA5FA372BBE3 + xmp.did:D92B2DCBCF89DF119C22F96AB2E9AB99 + xmp.did:D92C8A313910DF119533B1B0BD8F5408 + xmp.did:D965D4096ED6E011992885DDE47ECB5F + xmp.did:D9893FDE16206811AFFDB53FE81F50F3 + xmp.did:D9A628947F21681188C696DC609994EC + xmp.did:D9B8D1DC1E2068119109A276E6305D40 + xmp.did:D9DB0F8658B0DF11BE58DED65F859DC6 + xmp.did:D9F8AA691C37E1118462DDA61B7A9508 + xmp.did:DA12D6F84035DF11B6C1EB0CD908AC7C + xmp.did:DA27FD16811EE5118DE4F4773FFC50D7 + xmp.did:DA2BFDA2ED96E011925DC49DFDCD4B03 + xmp.did:DA30AD8C12206811910989406DF36966 + xmp.did:DA440130092068119D0EEBB18A773162 + xmp.did:DA5581532A2DDF11BC089F6AC4A2047D + xmp.did:DA67C380402068118F62A588B3F859EB + xmp.did:DA69EA8F4403E111A656AB9151E59AE4 + xmp.did:DA6CB8F65FCDDF11A396C1301E420E76 + xmp.did:DA7F3E76337411E2BF8191FA925AC58A + xmp.did:DA8321A0FE11E011A95D87703A2192F9 + xmp.did:DA8650F5431ADE11B723E134B19F4103 + xmp.did:DA95685709206811871F914CD30FE11A + xmp.did:DA9C8187D356E011AED0888478157EEB + xmp.did:DAA1D198ADB6DF11BCFD93E76A0DC2F4 + xmp.did:DAB2A2F9FB76DE11BAF5E143B0B86FF1 + xmp.did:DAB8D1DC1E2068119109A276E6305D40 + xmp.did:DAB98C776B1CDF11AE55937296C789A6 + xmp.did:DABC24F18F61E011A295D2562FFEC2E6 + xmp.did:DABDEF45262068118C97EB5E0646166B + xmp.did:DAC8507854D5DF11A094DF01E6EDE320 + xmp.did:DAE5940D7D05E1118934F041B5168C44 + xmp.did:DAEA943E344FE011A1F8D0CD47726D92 + xmp.did:DAF5DC8820101168BAC9CC7F5AF813C0 + xmp.did:DB00867DC148E211975BE3F01A671811 + xmp.did:DB1E4C1CE87ADF118CB7FEA7CD74D35B + xmp.did:DB1EDE40419DE1119D83AE71C5DE510E + xmp.did:DB44863822A4E01194B19137A2998285 + xmp.did:DB53FBBB839FE11199E2F14D20E8CA04 + xmp.did:DB6BC860392168118F62F638EA26DDDD + xmp.did:DB86D99266F1DF11A96DEFBEC8126CF0 + xmp.did:DB8E626BCE7D11DF8B89C9EB065A17D6 + xmp.did:DB92E01FD609DE11B3BF8AC1AB42AC52 + xmp.did:DBB0610ECDB1E011858B909A7BBEC1AD + xmp.did:DBED2DFADB20E011B9BAB7A0AF851ED6 + xmp.did:DBEECEEDEB2EE111866E89F51FF7D987 + xmp.did:DBF226EE2D81E011A575FF8823ABA620 + xmp.did:DC00867DC148E211975BE3F01A671811 + xmp.did:DC06AF47F48DDF11AA6EDFF6104D25DB + xmp.did:DC20F1C5317FE011B4478E2C67181E65 + xmp.did:DC27666642CFE0118B80B74689FC5078 + xmp.did:DC4F4822108DE011A1C7E8C95E0A5A44 + xmp.did:DC74AD2D0C206811B1A4827FBE321FD6 + xmp.did:DC9C8187D356E011AED0888478157EEB + xmp.did:DCB01AD910B0E11183A7E457DB59AECF + xmp.did:DCB127042362E011A65E993E5274F762 + xmp.did:DCC0E10A1F95DF11B30EEA8B8FA3A1BD + xmp.did:DCC1853A3A216811AEE4ECC20A5D0880 + xmp.did:DCD7AB139BE3DE118146C3C434C4490E + xmp.did:DD1A61D9562068118C14C3FDACD63491 + xmp.did:DD1A7DF01CABE1118C62B15300F9FA22 + xmp.did:DD299C770F5C11E0BA48D224F2326A69 + xmp.did:DD49E438D8EDE0119166A4EF72679257 + xmp.did:DD53E8D1FCDCDF11B576FFDCD43F8093 + xmp.did:DD6D99CD671C11E1A04B9A1DD512B0A5 + xmp.did:DD7B5F6AE48CDF11A2DEBA479E35EF16 + xmp.did:DD874DFD1A2068118DBB9D77FB701C12 + xmp.did:DD955CFF9CB7DE1192888A12C330E904 + xmp.did:DD9DD8FEA74AE011B332AD5E5DEC5D64 + xmp.did:DDE92DDAC650E0118A08D7EF2B386DC9 + xmp.did:DDFEFE47FCE4DF11925EE4D38FAB2E00 + xmp.did:DE0C11FBCD2068118DBBFC70171B6859 + xmp.did:DE3430FD3D31DF11A6EFFFACAB811D8F + xmp.did:DE382B3B9D68DF11AEC1C82B050F8955 + xmp.did:DE4E065A712068118F62CA3F9DC2F6E5 + xmp.did:DE50C5D8965CE0118C1587CAE9EAF166 + xmp.did:DE6C7BB2E388E011BE14A01C937459CA + xmp.did:DE8AD84318F1DF11AACDAB6F458D3A25 + xmp.did:DEEDA88847A7E011A1C5BFCBA42739AF + xmp.did:DEF1E58F809EE211BAC2F8E8A8C8D41C + xmp.did:DEF63713352068118A6DCE218B785D1E + xmp.did:DEFB9024B07DE111A27A84D479DE30FB + xmp.did:DF2D0C1EBA32E01187E7C7D9BD8790E1 + xmp.did:DF34B58B2020681192B0FA7CEE9F1EDF + xmp.did:DF44863822A4E01194B19137A2998285 + xmp.did:DF50CE57CF11E011863BBBA9CFF47D70 + xmp.did:DF899B466140E011AE5DE74C62F0E7EC + xmp.did:DF99EFE7442EE11199C8C908708099D6 + xmp.did:DFA5E7B4D002DF11A13EF5FE5D480F2F + xmp.did:DFD964BF7A84E0118C7BACDECCE5B245 + xmp.did:E01E9F4F4EA111E09220D9ED97689A20 + xmp.did:E02A6C513089E011A98CC89B2B960529 + xmp.did:E02C190E426EDF11B24DE908ACCAC095 + xmp.did:E06F786DFCB1DF1198DFB20F90D3AA6E + xmp.did:E09CDE73F5AEDF119211ACD2BF96CC47 + xmp.did:E0A799439FABE0119B6EE3ADD561B07E + xmp.did:E0DC5C40852068118F62D27A6BCE2F0B + xmp.did:E0E0C13CDBF5DF11BD97AADAF5573B93 + xmp.did:E10224E78D32E111A930DB0BCB356FFE + xmp.did:E117B04B789EDF11B5B9BF6BB5EDB67B + xmp.did:E125B3765150DE11A39F9C3EB4B9EA9D + xmp.did:E12EA86BDFB6E111981F8CF3BE858B8F + xmp.did:E131125CC67CE01187A8CC1D99263FD2 + xmp.did:E15C8DF98B5AE011BBCFC6EA4EB55BFA + xmp.did:E172018CF47EDF11928CE252CAD94E87 + xmp.did:E1721EF2DB2068119109B10BB0D0BCC2 + xmp.did:E17E45F7ADB7DF11A129982D2A81871A + xmp.did:E18B6B7881AFDF11A99089F1760612D8 + xmp.did:E18EBF79891111E0A9C68A512698490A + xmp.did:E18EBF7D891111E0A9C68A512698490A + xmp.did:E1995F0126206811909888D83ACE8C82 + xmp.did:E19F527FD12EDF11B015F162565C4D20 + xmp.did:E1B5B70E3164DF11BE18CB6AE916FAD3 + xmp.did:E22F7AF421206811BA3CA8D3EE2775E9 + xmp.did:E237CE9502D5DF11AF7C84168689AC85 + xmp.did:E2387CA9092068118A6DD7606065F06D + xmp.did:E2421EC8A62068118DBBE9BB7FD2A0C8 + xmp.did:E2425CD43840E111B430B0DC41269552 + xmp.did:E257C5098425E211907F845FA9928810 + xmp.did:E2ACC71F378EE011A5DBBA929F764093 + xmp.did:E2BB4E1CA588DF11840C9D4AECA7B503 + xmp.did:E2BB7D470F96E011BBB9E3ECD100E00D + xmp.did:E2C4BFC9F520E11195DBB3B28A34B0E2 + xmp.did:E2F26FF45DBFE111B99DF8E76F9ABF74 + xmp.did:E2F3B2A11E2068119109C04F2B24B753 + xmp.did:E30E4902BACFDF11B14EED88D48A12C2 + xmp.did:E314BA8A240FDF11A9988C04661AEF9B + xmp.did:E31FFC57541211E0BD2AF927F2DB9596 + xmp.did:E3296203214AE01188FB87BE05EED33D + xmp.did:E33EEECDC9F8E011A452DB8AC9648D02 + xmp.did:E35203ED11B7E211B0388DC576D240B6 + xmp.did:E36553242020681192B0876F326BD696 + xmp.did:E37E45F7ADB7DF11A129982D2A81871A + xmp.did:E3B0335115E3DE118C7A95A6BECE17A5 + xmp.did:E3B4931687EADF118F83BB3DF0E0A4D3 + xmp.did:E3E610B1A2F8E0118A5CD3347D1E2098 + xmp.did:E3ED134DAF21E01181AB8439334A279C + xmp.did:E42882E8F6F211DFA418AE0B3A87249F + xmp.did:E42A04D611CBDF11B47FF77509E94E6B + xmp.did:E468A4CC112068118F62E37942A12C07 + xmp.did:E475ECBD2111E111ACA7880EFA94362A + xmp.did:E49038D44F4CE011BB98A06D80C6151F + xmp.did:E4A9AF341821E01190B1BA8B59966AFE + xmp.did:E4AFC0CC7DA2DF1196E6B4BE421E334A + xmp.did:E4B8A62422FFDF11B6F3853A23909770 + xmp.did:E4B9307E8E246811910989E2636DFD79 + xmp.did:E4E4CD55C40DDE11966CA376FEFD02A9 + xmp.did:E4FA73EF6CDCDF11AA34AFD407D8E6E8 + xmp.did:E5058D4E9E2BE0119DFC94F68E9FB408 + xmp.did:E5120C9C0E6BDF11B4F18758ECB3026B + xmp.did:E54716A70864DF119845C2449507F33B + xmp.did:E551D6F574B7DE11994196785E609050 + xmp.did:E583F3DE7647E01181FBAD6FFAB64B28 + xmp.did:E589A9A91D2068119553C5952A36A291 + xmp.did:E58CF74230206811910986335CA79ACA + xmp.did:E5A1EC372220681198A7E8A9FC75773D + xmp.did:E5AB759B1D48E0118165FA311A9541D8 + xmp.did:E5B94E14A429DF118800E1F886DACF5E + xmp.did:E5C58EE7DBA4E01194B19137A2998285 + xmp.did:E5D211D17292DF11BF27FD328B26A195 + xmp.did:E5E3C307FD56E011921BE2DE87A39B49 + xmp.did:E5F40B46DD64DF11AEF4E21B49241302 + xmp.did:E61653204488DF118E8FBD716AC90F65 + xmp.did:E62DE932182068119EE6B30F72ADC93F + xmp.did:E631DB0045F4DF119A53D229F72975FC + xmp.did:E6538DCACA43E111A19AE628379934F9 + xmp.did:E66504EFB504DF119F2CD4E3A2525BA6 + xmp.did:E681E2FFD8C8E011B9EEC15FE4217A7A + xmp.did:E68D87003ADADF11BC24AC98C3D1E4A3 + xmp.did:E6B411F714EADF11938B8FA82071A5DE + xmp.did:E6B94E14A429DF118800E1F886DACF5E + xmp.did:E6C74BF40B206811BEDCEC12B17E052F + xmp.did:E6EEAC66382068119109E4A43CE530D0 + xmp.did:E6F1F7B92AE6DF11A0D68F50E2E34A90 + xmp.did:E6F41E68A13EE4118E87D0BEF2F1174B + xmp.did:E7041F041F0F11E084C9A70103495335 + xmp.did:E718A65BFD47E011ABE9C7EC05F933BB + xmp.did:E733776AC335E011B270F02B22122089 + xmp.did:E73990D353D0E2119F71867025FF39BF + xmp.did:E747C0F80F65DF119A94C5D8D188955B + xmp.did:E75D5EBE06E1E111B455C05B252524DC + xmp.did:E768F84E7E01E011AE288C17F96A6240 + xmp.did:E76A871C79F4DE11A94ED7AA9F25D7AA + xmp.did:E76AAB7C765DE011A4F184AC68B58FC3 + xmp.did:E794078DDE64DF118A53D4EFE20C3518 + xmp.did:E7996B7BC270DF1198D58253D6A2BA30 + xmp.did:E7B1EDBC29C5DE11990FF6A05A5D67B4 + xmp.did:E7DD52641A19E01195F1BA474F2C0BAE + xmp.did:E7E5FFFCB62068119109D77742DCC440 + xmp.did:E7EEAC66382068119109E4A43CE530D0 + xmp.did:E7F9FCF120EBDE11A1BEB9F496284AD8 + xmp.did:E7FB64AD98B011E2849DBE6E540D40E0 + xmp.did:E8017BD55A3911E0A9D49A9EBFE78424 + xmp.did:E806339AF844E0119C12D20236F1E089 + xmp.did:E812A371FC4CDF11BE559267F53A0BAF + xmp.did:E831493F9BB6E0118B88CFB4FBBCBB98 + xmp.did:E83E8B283232E0118EE68999D946CEB1 + xmp.did:E85203ED11B7E211B0388DC576D240B6 + xmp.did:E8C1560E9217E011AFFBA65419AF10CB + xmp.did:E8C24202CE68DF119BD7EA391D4DAE80 + xmp.did:E8D89CEDE519E0119D0089DE042C73AD + xmp.did:E8E3C307FD56E011921BE2DE87A39B49 + xmp.did:E8E4CD55C40DDE11966CA376FEFD02A9 + xmp.did:E8F5DDBCEDB0E01191FFBD2DD96ABF07 + xmp.did:E934F7E4A0BFDE1182ECFF84B4ADEBD5 + xmp.did:E96C3ADF2244E011A2C2D0B0B92C7727 + xmp.did:E9710C1D002FE01195828DEEC618B761 + xmp.did:E9785F9708206811B3A9FA077BBC5C96 + xmp.did:E99C23308620E011B678880E68030599 + xmp.did:E9B2497F4887DE11A5918C48081DB760 + xmp.did:E9C24202CE68DF119BD7EA391D4DAE80 + xmp.did:E9D7FE3B4D2068118083F286C739C2F9 + xmp.did:E9E585A18985DF11B412BBE42C504414 + xmp.did:E9F56C92BCC4E011AE5AA9DB9DA7D84B + xmp.did:E9F7ECA1092068119D0EEBB18A773162 + xmp.did:E9F8E4BCC421681188C696DC609994EC + xmp.did:EA1653204488DF118E8FBD716AC90F65 + xmp.did:EA2AC941FCCFDF118EA1D9164E9897BC + xmp.did:EA4B762978C9DF11A64EBB615C35DEA8 + xmp.did:EA4D10EC91A4E01194B19137A2998285 + xmp.did:EA77D42DA235DF11A791C447C296D485 + xmp.did:EA92B2569ED8E0118842B29FA6343094 + xmp.did:EAAFC0CC7DA2DF1196E6B4BE421E334A + xmp.did:EAB61C1166EADF11BB70D0543DF9E038 + xmp.did:EACF945535C5E11193F5C72C2A803FB2 + xmp.did:EAD2576A0D20681192B0FEBDA93E3C72 + xmp.did:EB0B4C6E584F11E1A223F4E898E577A0 + xmp.did:EB45F4318941E1119A7281FEE5F85334 + xmp.did:EB51C20896BC11DF97EEC8843B973B58 + xmp.did:EB6833B03815E11198ECF0F52285103A + xmp.did:EB6A84EAC02FDF118680AF6314DC52BB + xmp.did:EB805357E111E111B986CD3EEB724A95 + xmp.did:EB9D13B8007C11E0A51DEB87967C265B + xmp.did:EBDC4F68602AE011B53DE29EB0B539B1 + xmp.did:EBDED125DCFFE1119DA7EB3184622E6D + xmp.did:EBE3C307FD56E011921BE2DE87A39B49 + xmp.did:EC1D0D5EFF85E011A0088ADC2704A3EB + xmp.did:EC2CA6D49DCD11DFBA9A99B655D35914 + xmp.did:EC37CD1BDF19E11186FDDC0A0C802E81 + xmp.did:EC71AFD7523BE011ADC2C97F0C5D7FB8 + xmp.did:EC867B3F342068119109909B64798A91 + xmp.did:ECA9BFC8C62468118C7CECEE4312D82B + xmp.did:ECD989D5DF71E01186C4F2433814AC76 + xmp.did:ED08A00C16ACE011B4E6D3B6DBAB908B + xmp.did:ED25091EA198E011A2BADBA9D0CD73D1 + xmp.did:ED3F8071C82BE011A5AEDC8A542D4786 + xmp.did:ED48D0CBA809E11199D296F43D952D4D + xmp.did:ED507849FB2168118F62FA9F84E7B9C8 + xmp.did:ED7F117407206811A229A9B2F7593D2E + xmp.did:ED7F117407206811B28C859639FD65E0 + xmp.did:ED958E89092068118C14CA160A1107BD + xmp.did:ED9AACBEE734E011B9AEA8F83750A18E + xmp.did:EDB19C4EC3F6E01193089EB7AFCD8499 + xmp.did:EDB427EB2BE9DF118464FE7C077CD0A9 + xmp.did:EDB543427420681188C6D9EA900BA018 + xmp.did:EDC4FB204733E1118EE3DDE8D470F9A1 + xmp.did:EDCB0BBBDBD2DF11959AC657E2080A64 + xmp.did:EDE265007EB7DF11A328B924F731DB67 + xmp.did:EDF54030DFF3DF11BD97AADAF5573B93 + xmp.did:EE02E8E9FBA3E111925DE4C9387325AA + xmp.did:EE060BC9B174DF11B6A78A06DDE30A7A + xmp.did:EE162A984C16DF1185C38799BDF561B5 + xmp.did:EE30A922B496DF118BDDC63FE023ACD8 + xmp.did:EE312D94D9EE11E08DAAA756BEE363B1 + xmp.did:EE4526021487E0118277AC261C6CAC2A + xmp.did:EE4A336DBB3311DF9D58D6B09AFE33F0 + xmp.did:EE67D3C11075E01184C0A4200CBECB5B + xmp.did:EE7F11740720681188C6A0E9DA5772B1 + xmp.did:EE7F1174072068119420ED591AF1AEEA + xmp.did:EE7F117407206811994CEB8550425B9B + xmp.did:EE7F483B046FE311A8D6F0CB08942B4A + xmp.did:EE986F416B1EDF119898ACDBDF5F125E + xmp.did:EEB725A3AF23E0118923B656DB9CFD00 + xmp.did:EEC1560E9217E011AFFBA65419AF10CB + xmp.did:EECAEF1CD8EDE1118CDABAB0642B2E1C + xmp.did:EED2576A0D20681192B0FEBDA93E3C72 + xmp.did:EED76B481F2068118DBB9D77FB701C12 + xmp.did:EEF66714FCD0E011946BB31A0FA35EA6 + xmp.did:EEFB0E4AC9C0DD1193D7B9310AB884B2 + xmp.did:EF0008E2E40911DFB5AAA6008D4E8DB8 + xmp.did:EF1401295DA7E011B5A4C400485E7FAC + xmp.did:EF17D91D3220681192B08B72887FDC11 + xmp.did:EF2F7F552B47DF11AFA9D4A773444CA9 + xmp.did:EF31498187F2DF11A909C7CDCD73F8E6 + xmp.did:EF44788CC007E011911FF86EFFDC8B95 + xmp.did:EF8441C065E7DF11B8ABBBF7FFA6B0C4 + xmp.did:EF9BA0FF33A2E011BE16E9C42BC4FB48 + xmp.did:EF9F09207E51E111907EE5E4FC803020 + xmp.did:EFC9D1D477B0DF118B43CF67BE3C9F7D + xmp.did:EFDF94E38A31E2118D32F87110AF6868 + xmp.did:EFEB9AFE5B66DF11A59AC2931494C3C5 + xmp.did:EFF49EBD5EA3DF11BB78B64796273177 + xmp.did:EFF99A9ECB31E11194979B80FD445456 + xmp.did:EFFE4E62C96711E0B7298D5C97AA0999 + xmp.did:F00AE0FC0C2068118DBBDB1E9F8FD3E6 + xmp.did:F0156A7F33206811871FBF7EE03058F8 + xmp.did:F020252D40206811871FE8DD2340C0B0 + xmp.did:F025ABAFE6FBDF11A80B9B6A85F13ADC + xmp.did:F02A437A4A26DF11A0A0C6517A6F98F1 + xmp.did:F031EF1C103EE01180BDA5F0F2549ACB + xmp.did:F04377DB6C20681188C6D9EA900BA018 + xmp.did:F04D35C642B8DF118CEA9E52E1D0FAB8 + xmp.did:F04E3704E203DF11AD58B9E601FFD3D7 + xmp.did:F060DF12A02068118DBBEBC5ECF31A71 + xmp.did:F06533624FF7DF11BD97AADAF5573B93 + xmp.did:F088CA579E2AE11192D7ADEDD42F4562 + xmp.did:F0986F416B1EDF119898ACDBDF5F125E + xmp.did:F0AAC4AF8F4EDF11AD78E0E351C719E8 + xmp.did:F0B15F38B61DE511B7ADF64B16152FE2 + xmp.did:F0B555145168E0118B1385B28F882E94 + xmp.did:F0D87AC7EE56E011921BE2DE87A39B49 + xmp.did:F0E0B8324525E111AF3AE4FC28D7D09D + xmp.did:F0EC54C91EF0E011BF318C473C42BF32 + xmp.did:F12ADB23EB9BDF118389B90824D31C13 + xmp.did:F130F0727B20681192B0D8368D31C23C + xmp.did:F142821C0E38E111AC33BB0B57173429 + xmp.did:F14794675ED8DE11AD32934BC5D34032 + xmp.did:F1559C6B022CE111A89CE2C72586D6E0 + xmp.did:F168CE637E85E111A044E8688F28579E + xmp.did:F177AB1B1B2068118C97EB5E0646166B + xmp.did:F178F87B86206811BEB789E23D201984 + xmp.did:F18BB7703ED8DF11B9A3DD4262C9D78D + xmp.did:F18F93CC6279E011A4D3C40ADA3B0913 + xmp.did:F1958E89092068118C14CA160A1107BD + xmp.did:F1B427EB2BE9DF118464FE7C077CD0A9 + xmp.did:F1C1092E02C2E01185C6B675C312A0F3 + xmp.did:F1C87F3CA95EDE1199EBD1E902DE91C9 + xmp.did:F1CE1E4AAF1EE0118CCEFB9512A07562 + xmp.did:F1CEE2C5D982DF11A5A7B7DC5FFE49A3 + xmp.did:F1D21EFD7A26E011B136A7C0694161D2 + xmp.did:F1DA3A51C96711E0B7298D5C97AA0999 + xmp.did:F1DBEF37B007E011ACACB927CD8DD8FC + xmp.did:F1E4A69A072068118C14CA160A1107BD + xmp.did:F1F54030DFF3DF11BD97AADAF5573B93 + xmp.did:F200E5624898E011BC9CEB68D2D4FBFE + xmp.did:F22117C53520681180839613FFBBFAAC + xmp.did:F24030873266E111B87FA86C047D9D96 + xmp.did:F24E4A8A1B30DE11A4D995F47C139813 + xmp.did:F2540858647611E08057A48AA833837F + xmp.did:F25C8AF19B2068118F62908DFC3878E0 + xmp.did:F26533624FF7DF11BD97AADAF5573B93 + xmp.did:F265B90E424B11E0BDE9F560AB3ED5D6 + xmp.did:F28154AB487FE111A0438ED159AD6547 + xmp.did:F283F43C415DE0118FF6CDAA7F2C086E + xmp.did:F2986F416B1EDF119898ACDBDF5F125E + xmp.did:F29C0B514386DF11A279CB4F4B1246A8 + xmp.did:F2B0F9C8DE35DF11A29E83FABAED7BE1 + xmp.did:F2B8BE4857CEE1119068AF2DDDE9E523 + xmp.did:F2BEAADE093AE0119788DBBDC5B2A3F6 + xmp.did:F2CD01B0A370E0118B1598FA978C4C15 + xmp.did:F2D38B20D6A1E0118733D871EDAFE831 + xmp.did:F2D87AC7EE56E011921BE2DE87A39B49 + xmp.did:F2D9C097D12DE011A4C39FDDCFC91B6D + xmp.did:F2DB4C9496A2E0118803CCF97A69F3E2 + xmp.did:F2E4A69A072068118C14CA160A1107BD + xmp.did:F30CCD36594FE011AF25963C3B6CB4AB + xmp.did:F31FC884372068118DBB99B662A6B135 + xmp.did:F3322BBFC8E6DF11B2DAF9F8D4560A98 + xmp.did:F33AE3EA840DE1119BFEF944A86F428E + xmp.did:F342821C0E38E111AC33BB0B57173429 + xmp.did:F348C3CCC40CE011972FEB89052F1F93 + xmp.did:F3490D2C1921681188C6B7868B1364E8 + xmp.did:F34F68BE0F20681195FEA8AE1900E039 + xmp.did:F36AD3D2586CE0118286C365F8C4E42D + xmp.did:F388CA579E2AE11192D7ADEDD42F4562 + xmp.did:F38DC55F4D85E1119FF2C2C8A7245265 + xmp.did:F39A2E7C44F2DF11A5F8D165650409AC + xmp.did:F3AB522EBEC9E111B38DB9840482DDD7 + xmp.did:F3AB62003E2068119087B87693B6082A + xmp.did:F3C0C7463473E011AAA38CB4C2E918DB + xmp.did:F3D9515A41CBE011918BD866478EE47E + xmp.did:F446280F2CD9E011B1C5DFE5714861A4 + xmp.did:F44BECF3B9E8E0118D02DF4EA9C8C233 + xmp.did:F45CCBDC98EDDF11A0C7D359A49276B7 + xmp.did:F4800477A424E111B667A512A521A8DC + xmp.did:F4986F416B1EDF119898ACDBDF5F125E + xmp.did:F4BE07503650E01188FDFFA22DD2E1BF + xmp.did:F4C21AD824C5DF11947A9369D5307256 + xmp.did:F4D87AC7EE56E011921BE2DE87A39B49 + xmp.did:F4E2517C8ED8DF11A98C86E3BD0E278A + xmp.did:F4EAD9A60A76DF11A16F99A2279798B0 + xmp.did:F536FCDAEB0EE3118D2C8463322F0871 + xmp.did:F54C193BDE1DDE11B786E3E314F5B300 + xmp.did:F555338F30D7DF11AA8EE0C4969B59D4 + xmp.did:F56A33FA65D8E0119667D0AC9675DDAF + xmp.did:F56F27A4F90DDF11BA8CFE309BCB0AA6 + xmp.did:F57337FA1D206811808384D0F1D669E1 + xmp.did:F595427AEAF0E0118ED6C89280F3137D + xmp.did:F5A5EFE2353DE1119437B51943562A9A + xmp.did:F5ACBE76315011E0A972DB1A50D6A84F + xmp.did:F5B5082B9B4311E192E9FD709E2209FE + xmp.did:F5BD30D35AFADF11A3BC87EE02D6EDB8 + xmp.did:F5C288EE8C58E0118A6CFA0D378051C3 + xmp.did:F5C2DE26FD43DF11BEFDCD36FB7893D5 + xmp.did:F5C8BC0C144FE011936EB904A6390C15 + xmp.did:F5C949D4FB68DF11BB279F98F067360A + xmp.did:F5CF8E2D7490E0119A18FB12BAA81907 + xmp.did:F5E2CCA6220AE0118001A94878666B77 + xmp.did:F5E93C52891111E0A9C68A512698490A + xmp.did:F6164B44C880E011949FAF220FDE3616 + xmp.did:F618F3E299C3E211B9589A0355C58431 + xmp.did:F621EA3249BEE011821AFF81E485DB0F + xmp.did:F65398EE0B6AE011A161A7FE0780063A + xmp.did:F65EEB8B6B2068118083AC546C0EE525 + xmp.did:F66031CB5233DF11AF27B0C75DAB291C + xmp.did:F661D9FA8775E011B17A9E22BEA99AB9 + xmp.did:F675D20765A7DF11A734AD03DC0A5A56 + xmp.did:F6B501F9F5BCE411A62FE31619ACEB56 + xmp.did:F6C0C7463473E011AAA38CB4C2E918DB + xmp.did:F6CF60380D21681188C696DC609994EC + xmp.did:F6DDACC78521E11190789B1616F0B863 + xmp.did:F6F6F89DF956E011921BE2DE87A39B49 + xmp.did:F72163F6B23FE1119D90C2FCC233B7F5 + xmp.did:F724E3CB642011E09A57C4DC582798AF + xmp.did:F724E3CF642011E09A57C4DC582798AF + xmp.did:F72AF93DF62F6811B2829A31329A0A06 + xmp.did:F7308A261D206811871FBF7EE03058F8 + xmp.did:F74279974D53E011B4ADA05F9FBFB5F3 + xmp.did:F74F1800EC43E1119C07EF2F0F32B02F + xmp.did:F75D918A1120681192B08BEE29C75DD2 + xmp.did:F76097E97542DE11BDF28198A8779061 + xmp.did:F76D43AA5C1BE111B6D1A602976B56C8 + xmp.did:F772D2CE65A9DF11ADEB824D3C625F58 + xmp.did:F774F9FDDA206811857EF51D78886996 + xmp.did:F77E435B55FCDF11960D9C71D583A427 + xmp.did:F77F1174072068118016E3CF38EC96CC + xmp.did:F77F117407206811806C9A138DB80561 + xmp.did:F77F11740720681180838FBAD129F239 + xmp.did:F77F1174072068118083EB83C62BD7C1 + xmp.did:F77F1174072068118083F5C1F4AE9621 + xmp.did:F77F117407206811812BEF542ACF0A8E + xmp.did:F77F117407206811822AC2D40AA7F8BA + xmp.did:F77F11740720681182FAC26AB9889EBA + xmp.did:F77F1174072068118366C244F3E439A6 + xmp.did:F77F1174072068118403F505A828CCE1 + xmp.did:F77F1174072068118603B4EB98C19FD1 + xmp.did:F77F117407206811871F9C98AB71E639 + xmp.did:F77F117407206811871FAF8B0949E228 + xmp.did:F77F117407206811871FD6C6B3A51DD0 + xmp.did:F77F117407206811871FE2FFC5A15DAA + xmp.did:F77F117407206811871FE54CC1F6E823 + xmp.did:F77F117407206811871FFE96F47936D6 + xmp.did:F77F1174072068118892A562116D07C7 + xmp.did:F77F11740720681188C684A5B39F31B1 + xmp.did:F77F11740720681188C6B07CC95C0538 + xmp.did:F77F11740720681188C6BF6EE6007636 + xmp.did:F77F11740720681188C6C24FEED21665 + xmp.did:F77F11740720681188C6D9EA900BA018 + xmp.did:F77F11740720681188C6F83C91933163 + xmp.did:F77F1174072068118A6D90E1FCEAAC55 + xmp.did:F77F1174072068118A6D99D68D2699F7 + xmp.did:F77F1174072068118A6D9F8A4B73E034 + xmp.did:F77F1174072068118A6DBCFF8FBBF0B9 + xmp.did:F77F1174072068118A6DC1619F1BD26A + xmp.did:F77F1174072068118A6DD3EF8F086018 + xmp.did:F77F1174072068118A6DE0B41756505B + xmp.did:F77F1174072068118A6DF43387500C21 + xmp.did:F77F1174072068118BF792C16EE1E716 + xmp.did:F77F1174072068118C14CD081E66E7E8 + xmp.did:F77F1174072068118DBBA8F193EBC78B + xmp.did:F77F1174072068118DBBDA7B868B1240 + xmp.did:F77F1174072068118DBBF0860F7EDEF0 + xmp.did:F77F1174072068118F42F1D8108024F1 + xmp.did:F77F1174072068118F62C034CD13E676 + xmp.did:F77F1174072068118F62C2EC08F2ECE6 + xmp.did:F77F1174072068118F62F51F1BE14870 + xmp.did:F77F1174072068118F62FDBD9649A46B + xmp.did:F77F117407206811900D8623FB6CCF2F + xmp.did:F77F1174072068119098A37C55994CC0 + xmp.did:F77F1174072068119109835D177CA48C + xmp.did:F77F1174072068119109862065E637A5 + xmp.did:F77F11740720681191098918AC4FD7C5 + xmp.did:F77F1174072068119109A43449BFB880 + xmp.did:F77F1174072068119109A61C6B9B1188 + xmp.did:F77F1174072068119109AA3891E71C20 + xmp.did:F77F1174072068119109ADF0C62C14BB + xmp.did:F77F1174072068119109B0804915896F + xmp.did:F77F1174072068119109B80DD3093C00 + xmp.did:F77F1174072068119109BC552EB79E12 + xmp.did:F77F1174072068119109C4979E02DF05 + xmp.did:F77F1174072068119109C71CF6D9E2A4 + xmp.did:F77F1174072068119109D06A8313D563 + xmp.did:F77F1174072068119109E626B4ED1C3E + xmp.did:F77F1174072068119109E9DFED7E4777 + xmp.did:F77F1174072068119109F8FE27718D5A + xmp.did:F77F117407206811923FAFF54AA029B4 + xmp.did:F77F11740720681192B0A1AA0B2EFC15 + xmp.did:F77F11740720681192B0B6CBB13A5218 + xmp.did:F77F11740720681192B0E5594C694DCA + xmp.did:F77F11740720681192B0ECAD1A886320 + xmp.did:F77F11740720681195FE9DECE1BE0894 + xmp.did:F77F11740720681195FEA4D474CEC3A2 + xmp.did:F77F11740720681197A5B0F1D887A626 + xmp.did:F77F11740720681197A5E94B7C2456C1 + xmp.did:F77F11740720681197BA85EA9D5CE0E4 + xmp.did:F77F11740720681197F0BD1621F7266C + xmp.did:F77F11740720681198E99BCF30868C79 + xmp.did:F77F117407206811994C86D6CBBFA254 + xmp.did:F77F117407206811994C8A8243CF6DD5 + xmp.did:F77F1174072068119BD8C6C7BF63D0BE + xmp.did:F77F1174072068119C12FCC73F11446E + xmp.did:F77F1174072068119EB8F890500830B9 + xmp.did:F77F1174072068119EE6B30F72ADC93F + xmp.did:F77F1174072068119F26B3C495D382A3 + xmp.did:F77F117407206811A178B4862A3AC2C7 + xmp.did:F77F117407206811A1AFB41E9D0EF6B9 + xmp.did:F77F117407206811A613FC07C3D4EEBA + xmp.did:F77F117407206811A6FAEA435EC1AF87 + xmp.did:F77F117407206811A7BABFD19F527A0C + xmp.did:F77F117407206811A7BAF229BFA1E529 + xmp.did:F77F117407206811A961A055BC48AC60 + xmp.did:F77F117407206811A961F491C029F4B7 + xmp.did:F77F117407206811A9F8A44324AE3979 + xmp.did:F77F117407206811AAF1F360BEADB6C0 + xmp.did:F77F117407206811AB088ED073FBA775 + xmp.did:F77F117407206811AB08D0978CC83F5A + xmp.did:F77F117407206811ACAFDFF5EE53AB0D + xmp.did:F77F117407206811AD26F28600CC29DA + xmp.did:F77F117407206811AEE1E85804F1BC1E + xmp.did:F77F117407206811AEF69600F277E5BB + xmp.did:F77F117407206811B04FBAAF7885AEEF + xmp.did:F77F117407206811B13DF63E8165C28F + xmp.did:F77F117407206811B1B7AA467262CD37 + xmp.did:F77F117407206811B4AF951E2EB57A6F + xmp.did:F77F117407206811B516B5B451545A40 + xmp.did:F77F117407206811B53EA709ED3BFD59 + xmp.did:F77F117407206811B5669AC054FE53DD + xmp.did:F77F117407206811B5FEC38E6EA09CBA + xmp.did:F77F117407206811B699966B9627F209 + xmp.did:F77F117407206811B7C39BAA99E3A2CE + xmp.did:F77F117407206811B9E784E2493DEB84 + xmp.did:F77F117407206811BA24F97E9D027B47 + xmp.did:F77F117407206811BACAC3C5CAA66B7D + xmp.did:F77F117407206811BAFDD8C559CCB40F + xmp.did:F77F117407206811BB5ADC9BC13258B5 + xmp.did:F77F117407206811BB8EE28C44C74A0A + xmp.did:F77F117407206811BC5391310951E999 + xmp.did:F77F117407206811BD35A3FA96790B63 + xmp.did:F77F117407206811BEBEF1686CC8443C + xmp.did:F77F117407206811BEDCA708FFA8A08A + xmp.did:F77F117407206811BEDCC797CEDAC49E + xmp.did:F77F117407206811BEDCE96817EBFBC7 + xmp.did:F77F117407206811BF8EAA6E2CF6254A + xmp.did:F787351D35206811994CAC4A6D2CC7F7 + xmp.did:F79BCCAB5910E111A0B58E2A7910FECE + xmp.did:F79FCEE9E902E111A1F5A6C499FFC13A + xmp.did:F7A270C2A7A3DF119F139B952251B991 + xmp.did:F7C03F22EB2C11E1BF1CD14E7A6D9188 + xmp.did:F7CD0B0298DFE011956F90936EDEDF88 + xmp.did:F7CF60380D21681188C696DC609994EC + xmp.did:F7E0C957BAB2E011A991820570E4C61E + xmp.did:F7F779E831C2E31194C9E7F062264167 + xmp.did:F80CD9D099B7DD11A37EFFCB8B638CF7 + xmp.did:F8301B2C0D206811B1A4F4BFE09FA186 + xmp.did:F83CB0DC9121DF119109F0ACE0E21257 + xmp.did:F8483D814A7CE01186B4991E2FCD961C + xmp.did:F866863F1108E1118BBCD7EB45349BD3 + xmp.did:F87F117407206811808384D0F1D669E1 + xmp.did:F87F117407206811808386F774EDA757 + xmp.did:F87F117407206811808399331810C790 + xmp.did:F87F1174072068118083C52D1E41DB6A + xmp.did:F87F117407206811822AB716ED55D84E + xmp.did:F87F117407206811871FBA6453755923 + xmp.did:F87F11740720681188C6956C521FE498 + xmp.did:F87F1174072068118A6DA8311F88CD32 + xmp.did:F87F1174072068118AE4FE3FBF51A176 + xmp.did:F87F1174072068118B6FF512D7993506 + xmp.did:F87F1174072068118F62A44CE4DF69A8 + xmp.did:F87F1174072068119109AAFB9F469FD0 + xmp.did:F87F117407206811994CA9A71151591E + xmp.did:F87F1174072068119CD4DB2985335F93 + xmp.did:F87F117407206811A7BAFEB09FF99E28 + xmp.did:F87F117407206811AB08A48317E1E7A3 + xmp.did:F87F117407206811B840EEA30A7E5CB4 + xmp.did:F87F117407206811B9B1DE3DF693708F + xmp.did:F87F117407206811BFF0ACA051BFE6BC + xmp.did:F88EC374B0C011E0817FCCD4AC0A48BE + xmp.did:F88F820B1420681188C6D9EA900BA018 + xmp.did:F897582BF158E0119744C7603858FB93 + xmp.did:F89AAA29FD23E1118006B608312485C1 + xmp.did:F8B1200EC82068118F62B55C94B5F1CA + xmp.did:F8BC412B0C2068119109C80A4C3147BC + xmp.did:F8CD5A9257F6DD11953AD933D3AF4EA0 + xmp.did:F8D51B6E964AE111A162ED9905AB293E + xmp.did:F8E327E22F21681188C696DC609994EC + xmp.did:F8E4A69A072068118C14CA160A1107BD + xmp.did:F8E9EACCBB62DF119DFD9A74B3B2B92D + xmp.did:F8F0325429C1E411998DEE360DF7F56A + xmp.did:F9007828C833E0119E6C8CC2A3A03527 + xmp.did:F92117C53520681180839613FFBBFAAC + xmp.did:F93AB9C6F6BADF11A50CD2C2CF0935BE + xmp.did:F94377DB6C20681188C6D9EA900BA018 + xmp.did:F95ADF68FF56E011921BE2DE87A39B49 + xmp.did:F974D8AD50E3DE119B98A0D1FCBA1444 + xmp.did:F9760D1D9B4211E1BDF8AB7E2919F0A2 + xmp.did:F97F1174072068118083EB83C62BD7C1 + xmp.did:F97F117407206811822ACD5989FC9E9C + xmp.did:F97F117407206811871FA5CC5A0B48CB + xmp.did:F97F117407206811871FEB10CF5631D2 + xmp.did:F97F117407206811871FEB8DB824A23C + xmp.did:F97F11740720681188C6956C521FE498 + xmp.did:F97F11740720681188C6F360FFD5F687 + xmp.did:F97F1174072068118A6DC4B77CAC573A + xmp.did:F97F1174072068118A6DD0E7F2B5A213 + xmp.did:F97F1174072068118A6DF1EB259C6C29 + xmp.did:F97F1174072068118BDAA9318C4EF1FC + xmp.did:F97F1174072068118C14886BEA417E94 + xmp.did:F97F1174072068118DBBEB69C03E24DA + xmp.did:F97F1174072068118DBBF1EFF81BD277 + xmp.did:F97F1174072068118F62F51F1BE14870 + xmp.did:F97F11740720681192B08FC2E5BFA0B1 + xmp.did:F97F11740720681192B0D584A9130FDC + xmp.did:F97F11740720681192B0E118D6113D9A + xmp.did:F97F1174072068119432E1D8634E419E + xmp.did:F97F11740720681196B683A49525D009 + xmp.did:F97F1174072068119A7F833586C6F350 + xmp.did:F97F1174072068119D88FD6B5EA31D11 + xmp.did:F97F117407206811A232A9EB52F44B48 + xmp.did:F97F117407206811A6D5D23F472BAFFF + xmp.did:F97F117407206811AB39EE7D3CCB07EB + xmp.did:F97F117407206811AE56A706431183BE + xmp.did:F97F117407206811BBA9BBFE30D87AC1 + xmp.did:F98F7721465EE011978DEF38B3E75961 + xmp.did:F9C859D63749E011A89FE4958E20C48E + xmp.did:F9D07866E22EE011B24EBE4DA05E4758 + xmp.did:F9D2BC0A0398DF118E0DFBCC39F1D70C + xmp.did:F9D750E0A91EE011B9BAB7A0AF851ED6 + xmp.did:F9DC9F14122068118C149D08F70A161F + xmp.did:F9EAD2B57475E1118DFBB785E057B241 + xmp.did:F9EC7BD2DC9CE0119658EF1F297D770E + xmp.did:F9F16C12E2206811BEDC9678CA0435A7 + xmp.did:F9F6F89DF956E011921BE2DE87A39B49 + xmp.did:FA07CC11503DE011A21B8E4BEDBFA80A + xmp.did:FA130DF832216811B6D09349CCF4BD48 + xmp.did:FA1674D9791CE111A9E0D50F061E94AC + xmp.did:FA2A326B984311E08E82B3EEEC7D7DDF + xmp.did:FA5AAC3A7824E11185FE92D6C1FEFCEA + xmp.did:FA7F117407206811871F806D3B055743 + xmp.did:FA7F11740720681188C683C2B8E3A97C + xmp.did:FA7F11740720681188C6AAF38E9FB5F5 + xmp.did:FA7F1174072068118B55D8122BD4BBDA + xmp.did:FA7F1174072068118C14AF6C9BD96AB9 + xmp.did:FA7F1174072068118F628C4A209C8985 + xmp.did:FA7F1174072068119109836B7A347A79 + xmp.did:FA7F1174072068119109D4895471EB7A + xmp.did:FA7F11740720681192B0D6DC74DDAB73 + xmp.did:FA7F11740720681197A5DDC52FB107A8 + xmp.did:FA7F11740720681197A5EB894C7826D5 + xmp.did:FA7F1174072068119D68B0A7E60C0F5F + xmp.did:FA7F117407206811A964A31DC56DDF2F + xmp.did:FA7F117407206811ACAFC771317ECB1D + xmp.did:FA7F117407206811B3F3D3B4C58E7B6C + xmp.did:FA877389256CE011A37DD04CFB500E01 + xmp.did:FA9D99629294E0118A8FB079BE22B8F7 + xmp.did:FACF60380D21681188C696DC609994EC + xmp.did:FADC9F14122068118C149D08F70A161F + xmp.did:FAE4B971721DE011926BD271FF06E9F8 + xmp.did:FB0C59FB9123E011A7FAB4F0694098EE + xmp.did:FB2A61F69CE011DF83C0A65F756D654C + xmp.did:FB33C528442068119A56CF70087969A4 + xmp.did:FB536F21AB21681188C696DC609994EC + xmp.did:FB5A9AF2D439DE119E62A8486679A48D + xmp.did:FB5ADF68FF56E011921BE2DE87A39B49 + xmp.did:FB7F1174072068118083EB83C62BD7C1 + xmp.did:FB7F117407206811871F92CFDFF7440C + xmp.did:FB7F117407206811871FEEA6EC09A2E5 + xmp.did:FB7F11740720681188C6CC16CFB2376C + xmp.did:FB7F1174072068118A6DE9BB974B336C + xmp.did:FB7F1174072068118C82A021EBAC43C7 + xmp.did:FB7F1174072068118F628504B14915F2 + xmp.did:FB7F1174072068118F62C5F89BC13EC1 + xmp.did:FB7F1174072068118F62D1E4D00C3DEC + xmp.did:FB7F1174072068118F62D871D73DB23C + xmp.did:FB7F1174072068119109ABAA041E7FE7 + xmp.did:FB7F1174072068119109C00FC3634517 + xmp.did:FB7F11740720681192B0A1AA0B2EFC15 + xmp.did:FB7F11740720681192B0A6951AA679E5 + xmp.did:FB7F11740720681192B0FBC5A3D86C7B + xmp.did:FB7F11740720681195AB8871ADE72D64 + xmp.did:FB7F11740720681197A58C87B58F4D68 + xmp.did:FB7F117407206811994CD64695562D82 + xmp.did:FB7F1174072068119ADFE0E0FDFAEC06 + xmp.did:FB7F117407206811A232A9EB52F44B48 + xmp.did:FB7F117407206811AB08D95ECD287044 + xmp.did:FB7F117407206811B4F2EAB0100BF891 + xmp.did:FB7F117407206811BA63CAB6937FB0B9 + xmp.did:FB8E314E2469E0119292AD055BFAFED8 + xmp.did:FB91C2C2114CDF11B154B4107530C1E8 + xmp.did:FB94A77D3D12DE11A23393C930258098 + xmp.did:FBA418740AF511E0A7FBA2AFC309551F + xmp.did:FBC4D2040A2068119109CC642C44EC0C + xmp.did:FBD750E0A91EE011B9BAB7A0AF851ED6 + xmp.did:FBD8D25BF171E011988FD756EFFA5742 + xmp.did:FBDC38D9172068118DBBDA58653AF859 + xmp.did:FBE88C9AEFBAE0118CDFB8338E491CB5 + xmp.did:FBF0030BD094DF11B924FFC964F2F0AE + xmp.did:FBF6F89DF956E011921BE2DE87A39B49 + xmp.did:FBF99EB7567DDF11A74EE6CE03994422 + xmp.did:FC0CD9D099B7DD11A37EFFCB8B638CF7 + xmp.did:FC26EDE1870CE1119A9ADFA9420BE2AD + xmp.did:FC2D0F7365D2DF118DD8F9FB82CE2DC3 + xmp.did:FC396FED142068118083AEAC33B78D50 + xmp.did:FC3CB0678A6ADF11990CC1C31937E6F7 + xmp.did:FC3EB3A5072068118DBBDEE28C0B41D9 + xmp.did:FC423AA60BBDE111AFD9BD84262E9248 + xmp.did:FC52E586C6B7E211A52FD267AF0FBC8E + xmp.did:FC6D77DE013EDE11B0D785612DAC9F98 + xmp.did:FC6F0BD5F22FE111835FCEA6CCEB95E2 + xmp.did:FC7441687D2CDF11958F9AC533722675 + xmp.did:FC7F1174072068118A6DF3C73496F8E5 + xmp.did:FC7F1174072068118DBBAA650F3D9198 + xmp.did:FC7F11740720681191099EB446F6DBFE + xmp.did:FC7F1174072068119109C00FC3634517 + xmp.did:FC7F11740720681192B0A08E4EE6AF18 + xmp.did:FC7F117407206811A35DF8BCB74BB69F + xmp.did:FC7F117407206811AD43B1EC353D4389 + xmp.did:FC7F117407206811AE568088196B6FA8 + xmp.did:FCA1EF270D20681192B080542646EBD1 + xmp.did:FCA96BBA162168119109EEACF6B625BE + xmp.did:FCC9C3EEFC15E111AD59919244029BB1 + xmp.did:FCDB2B885827DF118764DFF2BED5DF99 + xmp.did:FCEB07A03A39E011B50EDC675630C896 + xmp.did:FCEB59718E206811871FBF7EE03058F8 + xmp.did:FCFC992E2FEEDE11B99680D6D89CACBA + xmp.did:FD31A68E5BE4E011970C9B8884C09F82 + xmp.did:FD4C1BDB6F6BE0119746BE45AD0E721F + xmp.did:FD7F11740720681182FE98EF7F18BF1D + xmp.did:FD7F117407206811860F88162D13F813 + xmp.did:FD7F1174072068118C14E6F64F9DD046 + xmp.did:FD7F1174072068118DBBE3913583D1DF + xmp.did:FD7F1174072068118F62C9CA72884EE7 + xmp.did:FD7F11740720681197A5B61A93B4BE54 + xmp.did:FD7F117407206811A767D5D5282B8115 + xmp.did:FD7F117407206811A7BAFEB09FF99E28 + xmp.did:FD7F117407206811BF24C98FA878C053 + xmp.did:FD8128D861F011E09CB3C7B148487B43 + xmp.did:FD889C3226CEDE11AC1FBF9D231E361F + xmp.did:FD8E314E2469E0119292AD055BFAFED8 + xmp.did:FD97F6DDD0FCE011AFE1E029CA081DF4 + xmp.did:FDACD264D365DF118102E6D513DA68F3 + xmp.did:FDAD1FA9EB1CDF11B933FC2C1A4C2DBC + xmp.did:FDC863962B62E011AFFC853556B185BE + xmp.did:FDD8D25BF171E011988FD756EFFA5742 + xmp.did:FDF6F89DF956E011921BE2DE87A39B49 + xmp.did:FDFD970A1E45E111B18BD39D41820255 + xmp.did:FE5A6FD4E011E111B986CD3EEB724A95 + xmp.did:FE7F1174072068118083E4FF021AA64B + xmp.did:FE7F117407206811822ADA67FA3E7CF7 + xmp.did:FE7F1174072068118F62DD804FF26847 + xmp.did:FE7F1174072068119109FEAFD0139520 + xmp.did:FE7F11740720681192B09ADC9C682AFF + xmp.did:FE7F117407206811A961E68EEDC136C8 + xmp.did:FE7F117407206811AE53CCA310712FD6 + xmp.did:FE8F876C7E2168118F62E601B48A9F82 + xmp.did:FEAB6C88C750E011860CEAEA250707F5 + xmp.did:FEC0F676BB14E011B6D68953E06DD16B + xmp.did:FEC52D397663DF11B26194DD13427F8B + xmp.did:FECCEDBCCF37E01183B3EE3B60DE3CCF + xmp.did:FEEAE5F4FF8FE1118E1C848D719FF97B + xmp.did:FF2679C15084DF119C2CE467E1BF91CD + xmp.did:FF31A68E5BE4E011970C9B8884C09F82 + xmp.did:FF3550F002AD11E18740F64E75AD4D2A + xmp.did:FF3819F6172068118F62D63BC9AEC7D1 + xmp.did:FF4279974D53E011B4ADA05F9FBFB5F3 + xmp.did:FF431D5D531CE0118516B2A88CCE0B19 + xmp.did:FF57693A018EDF11BEBB835A3A1D3CAE + xmp.did:FF7F117407206811871FDDA91FB9E95E + xmp.did:FF7F11740720681188C69570BE93D174 + xmp.did:FF7F1174072068118C14F3F57EB97687 + xmp.did:FF7F1174072068118DBB8730C96C145D + xmp.did:FF7F11740720681196DFCF8F035C9835 + xmp.did:FF7F11740720681197A5B0F1D887A626 + xmp.did:FF7F117407206811BDC5D95C6536C14A + xmp.did:FF9D5EE8E87CE01185D4A044C68EEC55 + xmp.did:FF9E7FDFB10CE111931CA9DBD6146BEF + xmp.did:FFAB149C9E89E211AFFCD6098C4EFECC + xmp.did:FFAC9405AFF0E011BC9C9C44095B3246 + xmp.did:FFAE73026E3CDF11878FDC06CAB67C45 + xmp.did:FFC58F107FE811DF9A7387F7EAEC8507 + xmp.did:FFDC9F14122068118C149D08F70A161F + xmp.did:FFF779E831C2E31194C9E7F062264167 + xmp.did:a9b9d091-4228-4eb9-844b-76db8febb99a + xmp.did:ab4003c2-e369-e943-aec9-21847440b775 + xmp.did:ad6ba0da-f7d0-404c-8d0b-80d686d7bc86 + xmp.did:af169f47-fbfa-e740-90df-bf94ff5bd99a + xmp.did:be5c165a-aaed-c641-8283-49cbd9f15153 + xmp.did:bf4d0e2d-4dc5-7c49-9ac6-18183b4b4d15 + xmp.did:c016a4ea-08d1-0942-836e-d7d81b250ca7 + xmp.did:c26c5701-e1f2-954b-bc0f-ead52aaf2967 + xmp.did:c5be6485-7ae0-e640-ba2b-51cd90e76f02 + xmp.did:c6672f0d-086f-d646-96bf-e2126da05e47 + xmp.did:cf43c2b2-3c05-2442-b0d4-ba0662642db3 + xmp.did:d268493d-5853-444f-b788-e6c9f04d5a80 + xmp.did:d41b637d-c41a-a240-95fc-c3361e4d8b35 + xmp.did:d54343a6-b5c9-7e49-b43e-3f313b816966 + xmp.did:daca9bc5-59ab-6347-89cb-cd47c48d0942 + xmp.did:dd8fea4c-8c69-264f-9eea-388b86a12170 + xmp.did:e6140935-2b5d-3342-9252-92070acecfd0 + xmp.did:eb1fd61d-55a6-1841-8f20-c3c448d6f7e5 + xmp.did:ebc3baca-1747-a246-91ce-17da78ac0eaf + xmp.did:ede4304e-5d93-5e41-88a8-e9d41efa718d + xmp.did:f49cc451-c8e8-b149-a6b0-5ff2a1090d29 + xmp.did:f5a218f2-2661-134e-add9-a239db39d9c5 + xmp.did:f6d87a4d-1ac4-2841-84a7-3e97e80f39fa + xmp.did:fac8f1ba-6efe-b54a-8732-820da7bec3a5 + xmp.did:fad8f815-5d0b-43fd-a4ff-4b8dd54c960a + xmp.did:fbc4bcb1-c72d-0649-a8f6-7ffb39046e3d + + + + + + +endstream +endobj +96 0 obj +<>stream +AdobedC + +#" y  +  +wQRq123!$ABbr"5DSac +#%&'()*46789:CEFGHIJTUVWXYZdefghijstuvwxyz?ʀ?ʀ?ʀ?ʀ?ʀ?ʀ?ʀ/K Ӟ;[~-wZWz'ԟ)n +푇=-3}F¤7C{ɛ.J8Y/ʀ4jr2MF/G(UG6:tZQ\,+vϋіW|k8٦#+y))I<:O/iQVInsZG}?- fCB^Z2NYy^mI/Ms:j<ߟG:1iFqO4^^7aٸ^ZQ0<Ȭ$.io RKFI8Є7y͌{*ЖB1cpʀ>x6'KB/Kѩ&A(d.5uY׏l5{F¿StsJ7XTt^^5̱Z<ͮgU_G2oͧ6ٕS˪2B1yk|ȫ0/$fGk,||0/mnN>>\֛3iJ[P>9/mG[FرFы6->^fR읱v4!!\2:d.L:ޟޖ?C}el::ʀ?ʀӵWhB1~;]rfޒhNS|~y;}E2e9y[\rac47,:/-mXqS~xt^3 3B^V2f~YyF]M̆a! =H^2L>Hx}R;')CW9)o6HЇS%Y[Ñq[M$a\>k /+onN,hCG`Q *ߐ/IivRCzYa~iK/h8gg`uw7CV:ʀ4[ԩƖ1ބ_wsRmfAm2VtfQ|,+vyl28~0f5)$ߞ/eRWh/5e>#<|~/e1yLÖ,j2-6<Վh9)mjosj6N/MŮ%gR4;iXЇl[dg K$'eF4K$ބ Є!_i'\F DʀK[J;Ћor4*GNԓtB qʼ<Sy;rͶmesƱ2âe9w[fiչ:o4yyK|ɱaߥ=:cBy4y<ݲ>:e1cymHfӐEvzOKRFJ|hB}r -FFGsR@?ʀj%mF/G&BެOq7\'?+/9>k.{fіw0{4â٥exCM*Rԃi9:ǝ̛^їzEhfAV<T3"*GzIay;3,ZH鄼9yLղ2MvjEs}?Giԫ&];d#yLìa)wڝ>FXCzNՎf#$8̆ʀ?%IxT4)G[aU+i!%9hSeaxLX5䛫j1L#mEʀ>e*cljni}b~LbiZ]Sø/QqRHbʀ +1U,>mxC1JkM++uOsqV/ʀ NՀn`-=/Qʀ Ǚ޿|F8tE@be}6\0sʀ ]*`WT7:xeD =-;iǘ@ʀ g ֛|Bhj2ʀ 7}Kn8b gwT#?ʀ m72ic l۲ӰkvyYPʀK$g! /!cX'-$=K*8觇ea{FXb15 )Cnyvaٕc5ktdބtχfGm/%9~o8FVz;0Ѣ:4u0Դ0Z ʀ?kFIn43F=qPӅIkXD'Կ(1ѷ[$õaA{2rXMysJKDn/+O a,轚4lST9aGa8 +svn*n|^цE 7y6Iez93ôjIb ʀ6.fY5C !5$FeamiӦ-i!@r!u5XH?ʀ5dXiZaҦ:b0Ű*ԣaa8jؙS,;?ʀ +!G#l#ON2G0tO.WCF3K9ʀ ə(Sy]XpE]RhC$y0?ʀ {!mzy&k.Kgk +YEF![C~ʀ /&%7dчE@ڶMSÚʀ%ZﭽHphq-gk]iCʀ!7,lfӣ<*XB3յ0KJÆV6ʀdn?cWN&С/n*_ gmdn.iLJLʀӇW:RXFSvtjCR<0=u)&`ʀjWwT +۫j|h=s,mFG^jHG)?ʀ׈wP(K4Iժe!&=W8@ʀoyl>OwPremTqeM&:ʀ\Iqv7yM 6?9O^.)b%ڞhpF/ʀIfOƖ+yoOBY&?̼]9,aLLؘ=Xw(PʀfYVIyч955QؙE&NltXʀL q1ЌLW]uB/@ʀd=pfδ:(()!6!`,>Y(I7 ʀ֍Yg];k8mmq0y@32iv$ʀ02[Hput=]k(mn̚,ʀ9hisT>Hv׉ҩ/abʀy_k;^WsE@_~MWeB=Kʀչe-9jp3ֶp;JeʀйbQ eKhcx9ZƶJ>xt@ʀ빫b}Ӳ]=EY*I,tsrvNF\q=)&?ʀ=F.9SӣE̐ᎎqEBTx)ʀ9;w1 zSJ"<0OՂf#&ݭNd4lʀK4d#M2 + g[wmJ=<mkp{{j1Lic>ʀ(ou,cc:ⴵZnF }Rn*KRhpF/ʀ7Vh؎$үR^n>*IKmBa}Ůnjùʀ6d؆\K7 @fa.!Oj6:z/Rʀ4dx}m$:-r'~pV ,q vq\0\ʀ;gؖkmR^ 9Ξbb2g#ʀ:Fn؟t1 Hc {Vr\vNF]v4ʀ v#⎞[k4#m=fdv#.E;@ʀ%;,aIjS175Xٙ5IiW,b?ʀtg8uXD!s$#ۻ+ umV)(<:dž_)kdS0_bTʀG5X%m:xjQ0y0[KmՇr€ʀ 1@oU]WU9ʀtf̑Hǩ^0`xkrn+ʀ`fKk]⼳xT#:mw1IJn`@ʀKfIkxꌓpMtZörR8`?ʀ惉l,>Ix4F yxMծ gpʀfwK ɪFHc d^a6U6fʀ:;c57TB0n* 2{ֺmU*K̄Y,ʀWص,TT*IAg-u֦,Xʀڑf®:m!8~xIFm(`ʀ=26|\E@r\魶NF]vM4ʀ윙Kw3sau-B]:x#?ʀ9bJ!&ʀ:j؎+xiT_ 3ziSsslj?ʀ=Q\J8NUts$#8VxJ>xtʀeug%_gk:T7aʀ +%O#lc)O 0tzvV7% 6CJnʀ '̖cʮjC´Lqmk{j1L3F/ʀ m%ZbU)A1j;&֬sÆKFMn⤻Sl_ʀ F#74yc3xv֬8cʚ;sqVʀњN!œye4 u+6fz/Xʀ&%/+kXF +(sk"ʀY}7.)GAMdpx_p3Ӷ}դ9L@?ʀcBC J^-CЧ`"ktq՗hE@ʀ(ޢ1\:@]~nj:c/2dʀ7jXu*I3 랽T]G,Xʀ6^e\\٥D-pquJ<:aaʀ5&d8[ۖ"ή7Ysԣ7`ʀ;fjc-0E9"edf# aFS-Omݵ(AYxc F .ǮUrĀʀ +#O$,&x#:(Zl)]UOE`ʀ Ϛ&%rJZ}R^v;ye˷_"ʀ {&#aM] .0&t-.㻖2B&ʀ +.%bw'BIMamuj1ʀٚ&'rZqUR^ר91zPZMʀ# 3,,&tBjL{t#'=]u]UePE@ʀ?7q:tq74ܠMۃߴmUکV^B=Kʀe[c֒}ǂ:T'}aB:.8x;gkV7Qʀ;U|>Mi 8fxIB}(ʀ}淈wP_RN ;9uv+"cFn ʀjf_윛GO*Kgk7j&𙥏A<ʀVf?n#m> +-\FMZiMFQ?ʀCfY|g<_[l)75eک<8#ʀ棈 /})Փ]=mcI%B}l-;Ԓk&lyf!o,y^8SSi{GZCj՟ӏGC磓yUNYyz~Zg [mag5*$<zD!Gg5Iiяtʀ5 +;evSNK/B01xjeW -F 04fKʀd]t^Ү{䰛n2.{vaqF#Yʀ*<:ЏtM]l:ޮ8=;]7旆]=?ʀ:b2[Lcm$#CGA`g$RW/Eʀy=22sThdhC78MJ[֭,֚IdXiM ЏQBK?ʀڙb'&XE-8iawo2 á);4âCV4똅jn+u9aE#$='9QF޽NY9z'NߣRXy9Ow:C7,q].)䦄7GSԚt1RʀC[TӢ&Yc۴QJ4!A piwFME؞!x(jXx \G;'V=aόg {mFix{hcYђiAxvy_ri҇`y^j啘QS=dA7W1k]VNIx皤t=}@ʀ%{7 %p_`4wV);4ßdƮ!B;#|C:ոM7BW;&Tn*vϋ1,c(=cO)S9K^J}IaCW f![΄{خ#5ORx^.iGLьcʀS4#J^-kCM,"fwŭm!Y%ߚXsڤ`l4ս.,y^gv*In!W3KM:+TޓG>/Vܱ7ya|K=^{:2vh7I8w9]{OJeyz!WZxӹ/:[oוߩ7Mֺ6c{ʀ(ޡ؇u,jiNX' :µ ~y~0>/}. 5(ˣnyzoZ57ON:7:fAw#gI=ZH^籅Q{:,7by_-i1AxUwFyzqci{4w0^POWsGMJ&ߚhOʀ7jȻhF:cNi;HOÙ`hיQV攛1 ZW Ӯb:v_Sdw6OJՠ?kVL.a{b8Vz6KЌ^!\tFY &y䵞jZwyz#Y'gB/Us:ť +{Zc4'Y!%(v %?K1MZruBt3Co2g|_i4tʀ;f,;)*Щ4%{hXGcѥ#դ=O*uZ܍ rMM0ɻHiWB<1z!8yg?JX3ǫ-Sz%VYbk)ðI,9^ѕXwGіZ ^yϋM4f/ʀ?\>h':eXv:6O )c7[WL1 _Ӧ21j^x>stream + + + + + + + + + + + + + 01EFF179BD9B3A8EE7F48BC24314DAD7 + 026137C3565CAA73487B7040AEE53406 + 02712289FE7B720BDF7A6F366CDB31AF + 02AB821B19F85D2C6FAC56766AB80270 + 02BDE90B873C5F6870DD9F14A5E773D7 + 03DCDE9141FF509928A750B168F10ECF + 0429CAA934EE707DC450F184B1129D0D + 044E86577136AF664EED3CED8090EBED + 047BE97D07D84AB2E573AB637AB46930 + 0518420BFE3D1B5F638DF088B074DC38 + 06C3F122DD728F0579C75D194D339EF3 + 075B6FEFF7E2DC92FF34CF77C0559FFB + 076F5BF36BD8A60EE620DECEFEBFE686 + 0773E3F245022959B4F3584A71AE593C + 07806C65C4910A3DBED1594FDEF99235 + 079D758C423BC4CB66401C75011B5EEA + 07F0F2C37C4CE4CE1DC794A4B9FF5D2C + 087014E0C5F8AA16814B969DB66DF607 + 093627FF5876822A4A1B2BF93CE09A44 + 097D6C997BAA9716D1C905ADBD15EA54 + 0990629CF4056BFCBC7EC6C7B17210AD + 09BE28FC952EF59F6991A0D8D0AB5F85 + 09C52C695071DDD159674771FC77A621 + 0A1EB8F9A47C8ED66F118DEC42498493 + 0AE8701B0E93AF9F1CF3EAE5AAA4614E + 0B0AA79EDEE6157B8F631FE52ED23429 + 0BE5C77E64F5A18F335B9A60DF5D3D62 + 0BE847DD3C2E6647C3681E05F85D4587 + 0C1A264C5680BA6038DFBDE1DB3EDEF7 + 0C1BAD8E0EEEC8158E907BCA833D6CF4 + 0C59062FE1F1DA7ACF6C79CEAE349C18 + 0DE04AFEF8D07707D3CA8EFCF9B11AC2 + 0E1C15898C69ADC3B567BEBED3248EA4 + 0FD12239D45207B6E1EFD8EDC538553F + 1085BE0D0D12E65A9A4B94DB05841C22 + 1170B8E61DA33AFFC7A3A6088E60A94D + 11954E5917FF19DB0C0B5E0827E0E575 + 11C1DE2A891D49F55EE01315BDFF4611 + 11EB2DEAEBA6FB74651F1B85876BB8FE + 121165307A609F3F674208F3C0D9EAE5 + 131730218EC9DD3BA0E12FBFF079EDBF + 13B2F1BC0AFF5D2B9D17F039C5C963D4 + 14110568102311F3A89F2EDCA2542129 + 152FE3F57BE9D5857B375362FC8980D3 + 154DF7D1AB5B11928DCAD52CCA2355C4 + 155CFFF69AFDFAFDCD017CBAB236A9A3 + 1574A9AC3EE270CC7392494C14AE1013 + 15E7E8E988A87A1FE03C10F2AFCC1A8C + 16AA3ADC3B11CFF5E7E7CDD8966FA6A9 + 16FC8BEC4CC7A979E350F2B4D0489EE8 + 177C415882C4E2BE3F8350B6CD3E0BD4 + 1804AB29EFBAA59AD0F2D7AABA95EB24 + 185605446C83C8731421E49F9092ED99 + 18723AD0ADE34A22A40CC03EA1791DD0 + 187B924371FD2561A71DF15244100155 + 18FAABCB393F61B2A2C1D6CA52ECA492 + 190D8E629DB4F18220A2A5D22F85CD9C + 192C8A10CA0E3CC7B3A3956DC37CEE28 + 1A18544D18DE39B26C9817CF069A17AE + 1A3EAA2A23282EFE430E5560EF7EF86E + 1A5EBC67C333B68FE1E6CF51E770A27B + 1BA7444E5E2FF4059F9A1648C13F7E08 + 1C778FCEFF6A2A215A973C8A77F786EA + 1D4BEA1F4186A85771CE872E3DD1BD99 + 1D65441EF402F6C097CABA958FD3F080 + 1D8199C9098ADD163B60EF31A0835371 + 1DDB36795DD64F120A1FBF3D885E0B13 + 1E476FE1A6F52C0F2B8044EEB8354BDE + 1E5DC0597A5176810A33920E49F0D907 + 1ED7504D8CAED9188323523C5000197D + 1F1EC4E984C1ED4E3014DA4ABC8E2C4B + 1FC6795FA90B8D574688C753BA32D21A + 208105BC152DC9874F36AEC90F0F50A7 + 20A2F2A84412F8E12CCF655028EABA9A + 20C17BEA69ABDA98E843C665BE756E00 + 21127B6D023BB304146043E3571EFB00 + 2113D693D06285286310EE57BB202652 + 21F72819AED4E13406C4A5430ECB6547 + 229F0CD0D8A63E855F3915ECA5C5C6A0 + 23093A55199933A420F379F1CE355C12 + 23ACA271D56598C907732F1D8D1165AC + 23E4C134CFB616978F387EAFCA28721D + 250A9AC7F17AFE1FC286C1BF741D9FBE + 253F03864B97B14D2F9FC207A0E7C257 + 257C7629B7F41750316EA19492C65422 + 25A3CCEC67D21461D2B21DC47AB699F3 + 26464B236E679C2B03C6B467F90B7A35 + 26AEC2586D6C25B9660AB6B133F56B6E + 26FCEE8187F31E711C1A6F6F817CBA29 + 2772C0D4B98674390F8A14C3E5A8B8BA + 27A721BCA53B5EEDA4B9847C9A9688DE + 27DF970F1A25E086FE8CB165932A273E + 28100758208CBF4DABCCA6A32F570216 + 281387F09208C05D8AD8CB976158F9CB + 284DDBDD546B1234D1BA63FF59D65C7B + 285FC768DD05A59D5486223AA8138C24 + 287A574BE26C07B356AB68D73CBFE83A + 28828FCD933C243E2B85A313C3E9DBA7 + 2889880030CB43E7416A612D74995F58 + 28992646F46AECC3488F1F887B9AC274 + 28A662ADDEAA8BE706AEFC22F2E5F056 + 293D221FCEEA7AFBFFF9435D79DF7BB1 + 297638FD74B090A3F426D28F43D23E01 + 298AE66CDDA0676D497FD662CC46E789 + 2A111B114DFCC4A230C5A6E914B2B8DD + 2BBD47B1F402A4E34653D408814650BE + 2CD9B5BC491F845A8CD94A54AB76E99D + 2D067989657FCA8757CC398B24647EA1 + 2DA2F67FC9EFC23B3759977F01C6B09E + 2DD7E01749EC7F43F4ED3EE54BE1F150 + 2DDD87351B76953063EF40EE05B77E76 + 2E5E625D41787229A42EA78743DFED92 + 2E956B6E82C8571FA94F9F93134FC7BC + 2EA097C3390561A2A9BC3E91849A5A65 + 2EBE747BD96DD80D54C0685BC6C07B6A + 2EC5C86E3BE22BFCB6A8B086EFFD83FC + 2F4F92F6DAD6561FAF6E555A7E2E72EF + 301A5CA90FBF803B0DE116EE18186BB9 + 30962B52603565D6F8BD7A1C4CBC195D + 30CE8D1CE8817C9E4540CF99FF6490A0 + 30D064B7F0D24FC84A527305EA50170E + 30DE5CE7AA5E6649912A417C591AC722 + 30F195B254AE4EA3732AAED75E48F021 + 30FD1BAD28EBA7CE28747B0B3684856B + 3102783CAAA373DC6ADA98C6753F3D20 + 3125EEE12FFDABA1581A03F2BA5E1995 + 32D4BF9A7C628A96C676E22144B3F451 + 33212B04F682536CEF376A16160C197E + 3329B1802A82D17ABA401ABF222C47BC + 33743A05C6E6532EC0B1712581186ECE + 33CCE8F3AABC128DABC67021E409A7E6 + 358206C7573FC1FFE4A5F9E5999CB595 + 358C2AE72B5D0CD1EB0BD87C88AC14F5 + 359B49592BBA5CF704CA8093C9F5C397 + 3642E19C644894E0F63805CC23C5CDC5 + 367DC6EBA397F9F917C34AF993BE5648 + 374A932A903686C78D5E5BEEB54A8885 + 374CB181E1A3A00330A7914891DE79B1 + 37CE3A320A5609EB7E8273117203887F + 385E953D218220092A50958205707CDF + 386162D9890DCE84FED7E7EE7A9527B6 + 387900A4A8A83415CF9FA45F593A75A9 + 38FEA535781792B519A053AC23218972 + 393E075F581ED78F385493848D684C69 + 397BBD0486550405F3F078846DED6C32 + 399A8A7F0A6D7D01D6B554A7815B3EF0 + 3A0957443D389A5A8455FCB9280E43E7 + 3A127E3260A204099E6616EB60893C29 + 3ABDD69FF148F8E62C6C93A6F7E9E5A3 + 3B544AB800E35A084F21A748A0364082 + 3B6D44491F9DED4B94BD58F461F37FCB + 3B710236EA9D7FA8E136EE5B2E8A4B42 + 3BEAF3C0AE040DA35676BDB5A8B0ED54 + 3C67CE3209C0BDC40191F89A0B697D8B + 3CF6886BB569D09259AD3DC8679AC153 + 3CFAC2AE41DA7CF576180B4F6255424A + 3D1359843C609F7BDCCEE52DB158754D + 3DA1D660F094C66F02DBC7A6705011E7 + 3DA7117207A5512520BEBF1696A5D726 + 3ED942810D1E49E4F564AAD174597FDE + 3F4A16FDAD76BEE41F812E5DF9C812E1 + 3F5A306F1D5EE964C16D7534BB73C0AD + 3F988A919A3FE6145A2466AA19BF3BEF + 40052628318ECCAD81EE461D007E90F3 + 40839756CA26A8D15EFC1788DDF507EA + 40BAC43D149C8BBBB0E728E171014AB1 + 40C318E2B85D489E24F1DA72291B77A1 + 41628BB287D8D3E4B23EDFA333B0B419 + 41731B11E52196BA181D2AFE6040B32F + 41A2735151D1F926352F2C91D55D74D8 + 421B32BB790DCE35DD8B6EE0F813036C + 42C547DDE8954DFBE8007AC7CE2573E9 + 435F3E76CC4A15840C8EB069EC245573 + 43F24B66EE3FC2E130E771699E7514E2 + 442DB1BE83BDCBDC3DB041526200FBE1 + 445E180E8D447A52AE5A1C1D61355AB4 + 449E6AD65AC3F5865B7AEB5815DFE769 + 44B0A4D2F13993BE1610ED317766B6DD + 450C2D95B550FFC7D32F168D315EBF6E + 453D0DEC2428D4B9B0B465CA8E79469E + 45B28DF8F723C86DA8547E2747556FA0 + 4621900D21F3F4F664D2362A0F1ED494 + 46A9EBC27212A52B66F924D775FEBB9C + 4700541DFF89FE6DB45F242930E5C9F7 + 4725FA92E94080802F7584A66858D367 + 476E8A1002B7B1261542A41B9BA1E103 + 47AD9C1C52AD561263FA646DEAF1913F + 47B4D6D15B98C88FC82B9A44299E5EA6 + 480AAD251E94CB06EA3E378B159812AA + 4870735E59BBA8C0607E12F7D1D60ECA + 48D1C24B34686543C3DF8A61630C353E + 48F8A1AABC89FB6CF158C4E873452E23 + 4948B50F9EBDDFE51977E11148E2C732 + 496FE979A9B685A998C2DDE566B5CB71 + 49C343FD39A0B278D4EA4195CF1B93FE + 49DAD15A29DF404564226B532878984D + 4A98FA4BF6EF588936B4ADCBA336B688 + 4B237E0291B6B698C7CDC0800BBCB15E + 4B287990354CD410505BCE432B9D5353 + 4B32CBADE63C6C7482619A0F6B3542C8 + 4BD5C758D3D06A39CBBACFC3CFA34792 + 4C76329DD97020EE02840818863A8A5D + 4CBB4DCFF58F87C7C7759B370EC59A3E + 4DECD3C733779F33EC6BD8AB661ECC57 + 4E9C73B63CA6EF3870B998F24B72A6FB + 4F05222636AEE5CB1A67870FBCB0702C + 4FA00EFC292912F26BDB2E37AA3F14EB + 4FF36C393DD1ADE1D5B594CCD4B9BD0C + 500C859332011E706C095957752677E8 + 505E2FBF5F583D1B5FDC82E99A2422FD + 51741E9C75B607DFF972CCB0C0C2A6A1 + 51A5C951EA779E1C921A306903CACC26 + 528082FA00E0737832D0D1D9EDD47111 + 540F0C9B32970BA5F1CEA3DE88F6BC87 + 54CA2E310C6E58F2F3EBD3A452D584ED + 54DFE87A20AA24F28CB59B075CC519CC + 54EE2B722B6445EF50C641A7EB17E79E + 551469565A1FF5FA7436AD4C9061D264 + 555DCBBB02FF0EE86C8F658ED7B20C1D + 55DA064C4BA126FF93774BAE6AA115B2 + 55F28A1955C32B92F6D7FA939C5AC525 + 55FBF36354A42D51AC50058A52AF6F88 + 561ACBD7C20AACA71298B18C20F65E72 + 561B58BB1941FFE99A33848B08F758EB + 56366B42EC83CE2A123986E85A6D13E1 + 567DEE86E1BC52AC4DCDEEE00DA9A743 + 56A46A1D76D7FDA02D6B55EC2F9D6FD8 + 56F35E5D467E7B71F3F1AA0A1784D917 + 57CCB72D7FEADC6A0B69AE1076A99947 + 58ABEAFDAC696331D3A24BBF8FF5F6D2 + 58D4495F352F6DB0D5FFD870577BE39B + 5965561984173B94AE8C4A15EDC38679 + 598853434E87A9C7912B0087847C8922 + 5A0F8AD0A39B2700506E042642612F56 + 5A1BB3220E6683D1107959A5DD504017 + 5A33ECDEA407B62CB5B2610ABCB48157 + 5A66F9B86B4985AF90CF0BCBE363F0CD + 5A6E64267ADA55FA04513B68E96DA81C + 5A7013EB02A09D31B8B7D63B7B02EBB9 + 5B66E33BAA9554303716F9940046D368 + 5B8E4672075131A36CBD61CE4CA6587E + 5C04AC55977BC09DD531798E19575175 + 5C137449C9CFFF83B0F606003DAA531C + 5D15B59921A64C5EE1638E8133173DCA + 5DB95168DB960203C89711D76C1BD99A + 5DBAF263A5D482D800A371F3AFBEEC48 + 5F039F1B6929468669422E5E0CEDC6C0 + 5F6FC284DEA12AC743ACAFD2D7E9C345 + 602E4F36E84747F1FF4DEA86737F230B + 609CE4D28DCDFF59F5BE3D9FE7B37A3B + 60C4F3D79CAA55234AEB192BE00A015A + 6129564569D5E7FF3BE2E8481854AA44 + 61672527E6DB64E028DA43AEE526E18E + 619E3478E52AEDCBF381E8953B87FF05 + 61A9F8AE371539A8FF522B79B6A6664B + 61C1C711142AF2E18269D5858B9E3192 + 61C32FBEA9D8633A8A1ED210708352F8 + 61EC17A94173219E077F2AD408E26A2D + 61EE0B4883FF057B70DB59410799320A + 6293E2F1A5DE2401E4F03759F3507BE6 + 62B880433D58DCD0B2B67DE221DFFFBA + 62F5290BFC273DFDC4F56D4827A2FFE5 + 63087EAEBFC92B4F0A9CEDA020A7618D + 650F926ABA4A5CDE47042CEFF2CF56B3 + 654232E3F8F0E767A1E77E01E5E9B2A1 + 656DEF13CC5A22D634D8A2E805DC7F4D + 65E89A8490C6261C42B2FE415D9F01E6 + 6774D572B5F0F11BCC778B73BEFFD788 + 67DF2DCC26890AF1BB32BCB752C83BD5 + 6901471B353C0469927B80117DD71D1A + 695F20289EA2811AE71BA804C1E4D37A + 698D9CBB1EF760354B97CE1674900626 + 6A4E887EA1E5BB17E0FC7ACA7C76B7F5 + 6A872C3EB3AC1DFFBF99CF6B537BEB89 + 6AE977BE3A432AC2A45D610C337B8842 + 6B04B87081556F0644025AC9DDDA7B54 + 6B3FED23AD7F7E7D17828D812DF44E0B + 6C3394DFB38744D6F9A21C94FDE12C5A + 6CDF315557F92452EAC5667976FE5566 + 6D53D91C2C46D082091925E2F0EEF337 + 6D98505F745BEE484B842837A4D9BA91 + 6E0E4CAB145586033CD3EC7B5426D74C + 6F11BF4E057530478CA537910E0A050D + 702DCB9E5C49035ECDE8B22AF722F412 + 70B686BEF762C0A455A6D4B98E75EAC4 + 70E1AE2C2ABB055C2C3F7C470A1916E5 + 71C29B0895D1963EB7FE853A2CFA684A + 720B01742C7B7740465CBDFDD9A06580 + 72851A3B0ED9FDE61D53DE9DF3F7F23B + 72B41DCDF611B73CEECF5DD432A048C2 + 73153F1C257D1A77E0A35161B7106C73 + 73EFB2755A426DAAB585ABA44B88643F + 74915EA3C5237825104F6079B2D69F72 + 74B6CA114A85504ADC0385086DE844B0 + 74B9A5598B3CEADEA18B383235884570 + 753EF068CCB187295F3D67BECF8473D3 + 7572B33A96763F3B1C60DC3BD4DF70CE + 75C54A2719E51C00FEA372961459E826 + 776FD45F7A62B7266DC22B9FA2DFFC67 + 77D7A8F513D6CE8A383E808F324AB738 + 7867E50C36C8A6188B949BE001F15D0A + 79D187BBBF7F7889922E445C9EA0ED25 + 7B0F8276D1F84826B0747ADF5CCC51FC + 7BC3DF7C4776BC8B64C9A94E4BDE6916 + 7BDD3052E0D3023EAA0C4358B9EBB3A5 + 7C1FFF93451BF358DD7A7DC68A3B0457 + 7C3CA0784535C22D1B0D754606082479 + 7C937D22A8F52086F67879E3924030FA + 7D74CA52C96BE7BB3DAD9C73E0006D91 + 7DDE721B5F6872B67E15C3C00343058D + 7FB2DCFD978AA2E907FA6BF72F9A8D84 + 7FB9FA0278DB7592869838C673914858 + 80B30B5422981C69D8F2AB53D8D0266A + 81119A98D2896D385B582A779290E5B7 + 8297C11323CDD22FED8C62A73EA36DE8 + 8351476F4956403B02FCC3B9244E458D + 8432F812BA3BF7C4E72CE3C0D2F9F7E1 + 85105777034462B2C1C7F92FCD8E8935 + 85EC8C5C74523978494CCCD6C58980C0 + 862A2D4BDBF45F516EDFEAFEFB84FB10 + 865AEEE37E8053D94B199337EB78C445 + 87364C74C4F9D09817DB5C82BF706247 + 87DB17A85D351B05EFF18D9DA49E46B8 + 8842709F5CE7F42C08AC2410A539C619 + 893AA30EE6DC0CA8CF930BF699DADEC6 + 895EBDF9681CB3E40396966B004C8B61 + 896DED8D1F15785D0C240B5331167223 + 89852FDF58676BA5082B27EA30332BB1 + 898A5B06181A5C9E5FEAF34B351BD59E + 89B71084008E74D93A6AF94AC547D640 + 8A0D73F4238C1A3CA4F997040D116DE0 + 8AB8B859CA1B10C82C9CC381EF3DB4F7 + 8ABEDEC669BFFF9304E3935565183F75 + 8B08E6D20028897790A31EEF48D3538D + 8B6A4AFDD8693446C7EAECDB45BFA431 + 8C3CF085C262AE25F4A0A42D59BDD57A + 8CA9FCDB3E483757FE0EBE9A76749E12 + 8CC5EF276A53268B09701D421142A16C + 8CD907B6447EC1E3DAB9FDC26F24AC02 + 8DCB3B4C779BE2A9E9B8766447FD0BED + 8E912E694DCD59363B3F4B31DB3BCD35 + 8ECC6B975198625302D875CE1EDD8B0A + 8F2CD04DEFBE17609451FBD9DB0190C2 + 8F4C09374FB88B0A7F925FE58479F782 + 8FB6FFCC47C0B93BA538E4AEE4056E3D + 8FBB5C0237D2679CD6216FBA6731777C + 903C91DACE80C972B51DED18F35ECCBE + 911E18E4607F128D22B5F2D90823C1F6 + 919486587B1A535017676B8CEB40CD73 + 927B46B8D0FB30F3F989AEB17FB5DE7C + 92931F743C70B4E164212D2AED3A9C46 + 92F2F77491C24369F824EB57EBF901D6 + 9306DF926BEBAC017A2CA3D6EC0AC52A + 93A4132F1C5486B76237B883F8F9F8FB + 93B4F9ABF21272482BCBE3B3ABD4B0AC + 93B8F9C315C41745993A9A5F68BAAC2E + 943E323825981DBA1D22BAC6C68F3F44 + 94CDF8AED2F93E670F8097070E48AE96 + 94D94644E7D8BA297E5248FF22EA45BC + 9528E4A74A1B7F5A0D0D609275185ED8 + 9582079AA99CB0FF87B7A6C20E018B98 + 96576A2DCE2B15C80A03AD8A17DD6C2C + 9688F98001B07EDAF92CFA6DD0F17907 + 96D880A073B37BB191B941AC20B0A498 + 96DD111A3D53637FB782C68A1D211013 + 9771FB8ED8B149C88C937F3CF9F412ED + 977B4DF13CEDF60904A71636F022226B + 977DD673FBB44F63BAEC4D3A482D3DA3 + 981E52C9AEFB2E30D9C7DA8680FC6B76 + 98C96AC5FD9AA5BF7FE36032876651FD + 98D10E325558D3C3739A3B2096562297 + 9918D4FABC3A9AC180E7546761FBDD8D + 997CDE81986F55F706CC71CC384216E0 + 998754321B602F83A2602DA5ADBC6793 + 99E8DC9D120BE35A5D5F0D5B999C3070 + 9A65BCFCEACC1588D65231A05F7B2BD2 + 9A6727C054441A7E27B6ABD64EA92859 + 9B283028FE0A51EBD4EADAC920F32D9C + 9BD4959DEBE1A4EDA8BA96AAEAA5025D + 9C1198E782EA4156A3BCBD2A1A24A3AC + 9C15FC49F00CFA739FF49E1B0F50F653 + 9C52F1B6534314F3013E4912E540B022 + 9D62222601783B34AC9CE0334FEF3211 + 9D97ABD78B5291A06CCF86C4F4B2033C + 9DF36BCAB9CEEF7DBA5BC19F10301810 + 9E83276968A92DCC5673409D0A0B9546 + 9E85DEC2653A9519CF53FAED2D222423 + 9E89E1657EAF767B56F78B039F5D2742 + 9EB20B55D074A37E0DC9537B9AC2462C + 9F8A5042B3A19E4FDD6AB54F1A85F86F + 9F9FAE6BCAFD0BAE186288B2AB149F5C + A0166A19710181BCBBDF5645BE2E80BC + A070480DD31B1F61AE54F93AF6B47601 + A0B26250E16FDA364E47C32D0694A0F4 + A0F7E20C3C250A9A392AFA373D430A09 + A0FEE01AEBFB00E99B11333D5855F8EA + A11B997F975AF1C2828ECE3E06A01E52 + A14DE90F1177F55DFE918E628E6A5370 + A152A79D8B0AD3BCDB69C083C1816317 + A1699C829001E36AE86FB4A067A28427 + A17E6224A6858553FCFBA12732F5478E + A1832624CB85FFA3B90DC8851EFF0A95 + A1B2805D850F11231C20EC4F489DE2D1 + A206FA618FBDF04BACAF0165D9621212 + A2074A168AD570893372C68A626B9586 + A252A0D2744080DBBECBEA722C4FC04B + A2720D2603D1BAE443647D72776622CD + A2728D35B6D0600A8CBA7209A1B65F8B + A2FE28D55AD03C7B17BC4F5F827BDB22 + A303EDFFA2E8C85946323CB68D4A1D03 + A35C0AE62B6798B5AE9272739C52A4C6 + A3F2F0F4639D4271755A42C15B2E8009 + A40DE4ECA335137A1FFD121E46B9CB24 + A4A80F76D0A145811B630692E5B4C513 + A4ED539ECAF535C38C6D7C74F0A4C46B + A51E22020E5C9637AE653BDB1F59D430 + A60A4A6983D8545C3175C0C53A0390AA + A63A647AC351CA8F86E05C1F80BEB304 + A68CF444AF68BCA6FD0CB7A2D3825221 + A6C6B394D9F32A65B7D7FDA7FAB6D71D + A77B3B315E5C1516CADB82A740963CC3 + A7D3198D8FCC45F6C9C8BAFCD2606885 + A809C1737C38D086139517350AF4ACD3 + A864E1B0C28D0756A2BFA70B9825349A + A92039D9E8A6325B8476FD636D847EBF + A93049FBF10DBB3EC122C34A621BE839 + A9F9267348C546A1E5579EEC0554BD3B + AAC9269D0969268D70CE0AB2B639D8A8 + AAEA66E80A507BB1A0BB30CCA644D597 + AB17F8411204AB1EA27E24B985A4A932 + AB8C68E261DD69ACF18FD085B272B8C0 + ABD1161D98F62DDD4C442A12BC68B3F1 + AC15C564F7D9AD9588862CA03368A2AC + ACE3D168E52E2A7667FFBE335A8D625A + AD1B5E9B4C3A9207CFE4234BA75EE60F + AD478CC9C04766B56E976F058D237FCA + AD7085C8B7F4B7A13E716D3CE80314E2 + AE20A215C61A5C3A8F5BF2F31DAF1FEA + AE4D1163D1B4377B1E2F397855D1DF2F + AE607A6A9821989F79D0B69333390E70 + AE91DCFDF6BFC9469583400A32932E9D + AEBEE3973E30CACBC6A35A94A7400A58 + AF3164BF21E3965EB1D2543F304C3249 + AF6A5A6706288E665A8B919D97C1801E + AFB967478C372FC005A72FCA58C72964 + AFF547A7C09D8E377B982F198EA78177 + AFF6B32F54658DF4676E496EDD145EC2 + B01B908ED05D5500939387783ED9ECA8 + B0677889E9EFF65F744FBBC3E1CBCA14 + B080318500F8A4CB2FA6FBA6511BA989 + B1AAF32F53485EC5DD0AEBDBC01EB8BE + B232E58A7697899E5E6A0B632DEE6637 + B332AD411E18A99D6A3365A42DA83236 + B3563F7BBCFFA1FFCF41D718A2354F41 + B35B321E8ACA801428CDD61106EE6B67 + B378A3ADD7CE751F3564DC0356026130 + B39F5765FE839C58508EC5F925A2DA18 + B47D2ECA02F263F9301FDD1580875938 + B52ECA28990E65FB2A319F5311E8C76A + B56541F200ECCCA59C9D6363184C58E9 + B6405930CF5BB7EC77F6D782489967E0 + B6952ABAF782F39B51C607B136063D1C + B6E958AA096333F1AA713791DC607C0A + B73C5028F65AE829812ED7185C189FE0 + B7CDA3CFD88ED79C16F4EE98313848F7 + B7D1161CEF1B508A9BA89C00731C80C6 + B881B55E92B0598E4EE497C782161662 + B8BF64C7C995AD8730DACADD7C122B1E + B8EB20A7C9DA98348EFB86783E8D8E05 + B978245BD5BCF814E6BC7F8DE4FF95B9 + B97F5F048A4CBB453498E1FB2C6AC623 + B9970CC2932527F209413C2C484F35DD + B9C06BF78044477665DE6E5278BB4738 + BA14BA4C720C6CB090DE807FAA81F7F0 + BB7D05886837AEF6E52C85FB86F41612 + BBB734DBD3301DED1361111064F6621B + BBDEDBC8BA17E3499316D3810E3E43ED + BCA048F2DA69AF503F56C8A42B015DFD + BD96BDF67578C1E6A801C45C7BD1D080 + BDB1CC9BEEC21E79C9C693D1FBF6766C + BDF720EF454A803F6E7C7F509280F8AF + BEC382FE914A9A7AB8AE7C3A49808191 + BEEF11DB3BC2C679D91D961270BE8E3F + BF20DA8079B1E64C664982479B2BE89C + BF7A5B421F00D3CDFC19411D2A3A9202 + BF7A6FD5DE7B78C35D1AE199217F706E + BF9CBA2CD1645C2D095C77F5235D3D55 + C15864676C270929D5FE276E1B0468FD + C15BE20DC59B5ABBE2CE2FCF02A2F6CC + C1780B6D216477689D680B1E7E043E60 + C1A8E1AC6A4F7899A842C818427B38C6 + C1AEDC5F3183A74C2774261CD8A2E2DF + C1C5E8E9E69CC5B524466C499DAF762D + C1C8C8AF6F0A93330A90D8582B47E7BC + C272B0830E7F82E27F21DAA88EF1DD38 + C3218C6CDBF39445BE4F27EF692D8544 + C443F46F0DE7F3333FEC3C5DB0E577DA + C484A33630CA546568E528DEEEC0BEC6 + C4B60A5F22E088B150A913BD78ECA1EE + C505E3348D60002E6B29BBDD54CE1DAA + C52BEDBCE1DBA792601BBED89C217D43 + C57102D347840AD0D8804F68E95B4EE6 + C62F4B5E730C1629550A864B8F5872CF + C63F54DEBFEB88347C828B6E99CE15AE + C694BB9EC92AAD2EDA60717134AF1DAF + C6A3CB15A0560F4CB33FE124D37303D5 + C6B77ED20D426726B42960DF31276C7E + C7032A44A7C94FBBEBCA474CACA8E039 + C7ADF8B34BB1D956D1DE449E4405F1DC + C7E921A93A355B5C123D486803476E67 + C99928F7D99EA134FD0CB2FA5D7BA937 + C9BE66BAED5F6E2FE7073FFFC80045E3 + C9F790F07F54D5E41E2FC979563FE501 + CA5807CCEF648E544971ACBF4DCB7C48 + CA76D27C15B0FA48CC08ABD75E32F70A + CAD35C1C34A6051356CF9D041B1E36A5 + CAFE3691EC99E41FFDE7E215BDF424E2 + CB10F0219AA11D2DE6A32E73F6248F65 + CBF9CCC45C2B2985CE51A8C8ED8F70D5 + CCC6B6D547168E5E21ECC7EF5604EFF4 + CCEB9531E6B9A8923D10D2CF94B8EFC0 + CD4DC3AB41E5E35ABC23DE042D6DF77F + CDC396193CEA5DD84DDF772544BE9167 + CDC9268849BD8D220E0F25BFAAB218B0 + CE71F1B8C6445400D64C640AACE2C82C + CE8D9B25BEAAA9D416C2B91D7D852B19 + CEB3D98368A6A5BF0E69792974C0A181 + CF3918D370FC7C2E0D663833E6F080A7 + CF3B8D257F14175FC66EF0F0E2DE2AD3 + CF6B5CB82B15CE242AF65354A23177CC + CF7F70141F1FEB06A9FB0E622D7D53A4 + D007EF70AA348D98E3EDB6C34FDD19CB + D09AD9BFA5D7E59ED26669AA5C26A8F2 + D16C08F1032BBCCD03549A6ABF1F40F0 + D18EF492BA4D46AE013F54F8C005E346 + D1A55A2A6DE6900D45270635FB5EC3B6 + D232015A876C6F4A7C1511CF4516AC6B + D24C58B449055A4D7D1E185521EADE43 + D29F50E54B9350C29E0EB388D62894AD + D337373B869F72C4B3439AFC5A6E6A2F + D37A81C45B6140F38F6A364259C2906C + D3BFA3591622C7203CC7E82562F15482 + D4BF0FD26AA66BB25062B6ADB6BB3EAC + D4CBD310AC7E9E8F524CE53562DA3986 + D51301C9D0A2426E3D5CE5D0FA891673 + D56A771A44D88AE774F3488E05DA55AB + D5D5E22E89DB04B47DA9E3723285AC19 + D5F9F64E462A34AD61A8B63500689C31 + D65A579C7C8B6CC7B52664670D4BE2B0 + D6C353583FC8E7757374A4AE593FFFDB + D744AC1ECC2BF8FB13890830117A371E + D8274F95B4F767ABDE4ED702A79A4411 + D89DC59DC0E6A3F2D79BF339B722276D + D8AB5C94D0D3DED6C0C9194F232858AE + D8CE9589AA5CE40CD1FA722F543219E0 + D924E0564FE1BFF6B88714EB49988D27 + D99638D21633AFDED0CBC5DF48E5249D + D9F42E302F719E523816B6BD5D46CEEF + DA5CB3BC791618DF8A0BB50774E8601B + DA82D4DCFF65F636FCF8822D68730A8B + DAB5845BA5B1B86205D1DB756A1135BA + DB642544BD4335E4970EA86F0215C79F + DCE285870DCFEBF613A9010A23010245 + DDA86058AD3817AD1DE50867B4AF1EAF + DDEC59CA9AFD13B1C255E26FDC159AF8 + DE229EECCF89A3918D0149BDF65F688A + DF7CE5193E748C57919D75CD7D376A21 + DFF74CD8561A40A8F43F2B5BE496B59E + E0C19C7D16519DDA76014D54FF711261 + E0F7D6C3F965391FE11C7D3C071CF243 + E1207D0B99C4567E4BA4B7AAE3490990 + E131919594F1195A15FF416FD8981310 + E168E06ADEA1A506F4C50298D8ED430A + E182F62EC3A949A490FE0C6F71585AC0 + E1A064BC52BE156954D9C5DCED1650CA + E1BDFB9C97440A1250356D2F8B39D988 + E1CF25875E5AF7C2445B173CC7B6ED3C + E1DC314ECAFAA6C5AB0A6535986F141F + E3DD1D2295EC75292BA45E2927693A33 + E5222C6681882A1172542394DB38EAC2 + E550EA09C202F953CD51A5FF20BEF7F2 + E557C6AAEE53D3D0B4C479DB152C9823 + E5D30A41DFCD89E2462CE2911AF74A39 + E6AF6CCA6224B98996A12A8A5B81E43E + E6B2E9C7E250D0981CD643C25E7DC723 + E6EECC6F60E310D6DB3D485B45260E04 + E6FEC3A6AE5D3BF04368B56DEA56A59B + E732B8D2E8E38DED9A1711CA5B831846 + E747313FDBAA84D970B8B0FFB39E97AC + E78B9C0775F311619CAD34FE430C3051 + E7EB7C397BFFB1296553771590A0AEDA + E8182ED4675E672B6AFC0C486422A7B3 + E87A6592EFAC55B7F3D532BF5B98D287 + E8FEDA98E9B46B1A20A41F7515D2EA27 + E91CB54DADC6C97A6F565C820F812F2F + E95B293BAE30C4EFC5CC5FFB7E23C70A + E9CE8F6953684544A1AE9D97CF3A6436 + EA96004A3BBF52E937547EE197D0D65D + EAAD09B9AF64336CEC84528B9A7368CC + EB8AA71B976DECE1343AD837816A0E54 + EBB4992A8B3645C35422D58834E532D7 + EC1BD639AEA2E8D9B2E7CA99C32F8AFE + EC3F09C3597A0627C09249C8BFC46BB5 + ECFDB3EBA80F3F12C51C8C4720E831ED + ED0B1360EA38944BB7542F55DECA36F4 + ED8A6EFD12E3A660021D69AB60BD2AFE + EE5F6B13980FB69B75DDE567C488B979 + EE7580CAA349FD7D681D43075D5A0967 + EF68AC802FDD41FB3A03E0B9B94AC98C + F072A1BC350B8F41DC986A69A6D069F3 + F23647CA2CDD04073704EA686EFA1D75 + F28FF396F29FDE482BC550E46C0F0422 + F2AA7A7B66DE9C200A310380C56D2A89 + F36B99C2951F6C1E014F6D4CBE6E74F5 + F36D16F84B60F434CCE87DEFAB136313 + F37AC9780CBB6B93F89CA3F3E7D837AE + F39C5A0D0E7E847F5DF7FA95F61AFDC6 + F3F07C87CFC0948AEF7CB6F99803D829 + F4F9A4DA1AE683F6CAD4621458734D3A + F519B42D6EB5A99C28804AB3BCB56128 + F5636988C6D644712543CD4899D46213 + F5A64CCB6CF1749BFE7165B42CAF777A + F61424FE0ACAD503AE2B83CD04347BAA + F69889DFDDA2DE817FF32701A4F0E899 + F7791EF799632D08545C91B9D8D3C836 + F7B7D706DD3B7CF2492ECB47A380F4F4 + F86F562AD71F1AE2BDAFCB5A347383BE + F8AEF1D16D4A9E67871CC97164177597 + F93B4F8884B25160CD0567706E2A3E51 + FA710C123A9625340EA09D32FD1AE2DA + FAF33321323603B874827E53F0043984 + FB25E2C2486F69401F2B844B13D1E9BE + FB51DE6690D29CF1E18C23E4D83BA453 + FB5CD3BE15A6F28B29309F81749350BC + FD1F37231434A8DFA4BD9EB9F9443155 + FD47B85F4EBF9EB2DCA402EDF7D50D49 + FD82E877FF270F5B28535B373CF4CECF + FE5B64BEB1369D0925AB29FE7591197D + FEB556C1894B2BC400986F483FF3FD50 + FF475B4FC0B108095E0BF822C141E473 + FF5C78EBBC58A0C28684762FBDC6CC22 + FF5D0C1C5F051329691338EB933066D0 + FFA05F21C761F2EB2ADABAF0AC4032F2 + FFCFA578EE685D870EAB4DAC20EE6247 + adobe:docid:imageready:0b64feb7-3fba-11e0-96b3-fce383b5c69d + adobe:docid:imageready:0f14d91b-56c5-11bd-814b-9efdc7b2dc1c + adobe:docid:imageready:1242e065-d629-11db-a4e6-a3680e1b4eb4 + adobe:docid:imageready:29e2ee09-3f94-11e0-bb7f-e4afe268d402 + adobe:docid:imageready:47da1fb1-56ba-11bd-aba9-dd47b0768108 + adobe:docid:imageready:71734897-56b8-11bd-aba9-dd47b0768108 + adobe:docid:imageready:9398cfbb-5d93-11e0-b6b9-fd01e8a79f67 + adobe:docid:imageready:97c40bb9-56c2-11bd-aba9-dd47b0768108 + adobe:docid:imageready:a71eca80-5649-11bd-b9bf-8767b0b1ed95 + adobe:docid:indd:6543373a-7907-11de-977b-f883522df34c + adobe:docid:indd:d9e95eeb-b763-11df-82eb-83f8ca83d6f5 + adobe:docid:photoshop:00657177-b159-11e0-b532-93e929592d24 + adobe:docid:photoshop:01f145c4-1bf9-11db-af76-84f2f5b3e193 + adobe:docid:photoshop:01f18c87-a7a6-11dd-abbd-c805268b068b + adobe:docid:photoshop:01fe3f36-a1b8-11de-9917-9754896ff12a + adobe:docid:photoshop:0408e4a6-09e7-11dd-a59f-b7265f3142a5 + adobe:docid:photoshop:0427a799-85ba-11de-a381-99c2e1231163 + adobe:docid:photoshop:042ec86a-52dd-11dc-bb7f-87d1a9f02b07 + adobe:docid:photoshop:0558d1ed-5bfb-11db-ae46-b839ac5a4e87 + adobe:docid:photoshop:0609fb3e-be2e-11d9-9659-8c4f0a1832b0 + adobe:docid:photoshop:063cb0b4-e295-11d6-af7a-eaacc79d963d + adobe:docid:photoshop:064b12ce-8b60-11dd-aaa1-fe75f59ef3a8 + adobe:docid:photoshop:067f015c-6500-11dd-8c0e-da03867eaa6f + adobe:docid:photoshop:06950cf0-0829-11da-8899-fb102bae280b + adobe:docid:photoshop:076bdc5b-f337-11e0-83fa-ad968a10a347 + adobe:docid:photoshop:07a11841-fe55-11dc-92c9-bdf6594ff1a5 + adobe:docid:photoshop:08610a74-e674-11d9-b245-d0cca65a656c + adobe:docid:photoshop:08b64e8e-775c-11e1-9829-bb69b0cb9f57 + adobe:docid:photoshop:08cc93ec-8b58-11da-bcb8-e53ec5bf3a00 + adobe:docid:photoshop:08d0fa44-081c-11dc-a2b5-9e1773a6892e + adobe:docid:photoshop:094141ef-c38c-11dc-8bfb-839e33fe28b6 + adobe:docid:photoshop:09471372-d794-11d9-b402-a33820c6f95e + adobe:docid:photoshop:0999a842-b6e6-11dd-9740-d530f811e3f2 + adobe:docid:photoshop:0a899a39-0ea4-11df-a4bd-ddfa81567552 + adobe:docid:photoshop:0aff9ff6-6d64-11da-88bf-947e4ae60417 + adobe:docid:photoshop:0b04992a-1420-11d9-8070-ccfa71b3d275 + adobe:docid:photoshop:0bf3f44a-c1de-11da-a9e1-e6a2d138b6b2 + adobe:docid:photoshop:0cd387a5-ee9b-11e0-95e0-b1ac5d19dda0 + adobe:docid:photoshop:0d681a97-824c-11db-bbd6-be68c03c4b51 + adobe:docid:photoshop:0d69849f-1468-11dd-b4d5-a76ee511c599 + adobe:docid:photoshop:0d6ab660-07b0-11dd-a7e9-e31e3ec26b17 + adobe:docid:photoshop:0da2ac7c-b653-11e0-bf31-a151bb9ca726 + adobe:docid:photoshop:0dcd00b7-eb4f-11dd-976b-bcf0432bcbdd + adobe:docid:photoshop:0e19f718-22df-11dd-a19c-9c05b9136f65 + adobe:docid:photoshop:0e2877a9-4e90-11dc-bf94-d0e407ecb000 + adobe:docid:photoshop:0eae4cf9-0101-11da-bf39-ee5c9f879e11 + adobe:docid:photoshop:0f8d9f45-258c-11df-8e59-e39eaef372fb + adobe:docid:photoshop:0fc79f20-d232-11db-b1bb-aeba6ac5ef65 + adobe:docid:photoshop:1095d5e7-5bc7-11d8-b5c4-ad94fedcbdf3 + adobe:docid:photoshop:1119fac0-2e3c-11e1-8359-9d673895aa9c + adobe:docid:photoshop:11639c42-2d6e-11e1-be6d-d25e16f4b6f0 + adobe:docid:photoshop:11c2382a-e0a6-11dc-bd27-f2f24d3d2363 + adobe:docid:photoshop:11c2382c-e0a6-11dc-bd27-f2f24d3d2363 + adobe:docid:photoshop:12dd0d52-d932-11dc-895c-c26900a7a926 + adobe:docid:photoshop:131cf6ae-69ce-11db-9465-923e5ffb0d9a + adobe:docid:photoshop:1345b5f4-8d98-11da-a998-d179b6732d6d + adobe:docid:photoshop:14649981-cb7d-11dc-92a4-80c439d43b03 + adobe:docid:photoshop:14a2d855-9a74-11d9-aedb-d7d70a63bd2d + adobe:docid:photoshop:14e1071e-b653-11e0-bf31-a151bb9ca726 + adobe:docid:photoshop:15923273-fa43-11da-9121-872e36a13a10 + adobe:docid:photoshop:15e963e9-99c0-11dc-8ad5-df3ecc15eef3 + adobe:docid:photoshop:162f56b4-a07b-11db-9b6d-e4600e41f893 + adobe:docid:photoshop:1634635d-b6aa-11d9-9d93-8f8f4ce80942 + adobe:docid:photoshop:16562bc5-669e-11e1-995a-dc4ae81e4fa4 + adobe:docid:photoshop:165aef09-e346-11da-8464-e87c953e40bc + adobe:docid:photoshop:16bfc219-8b42-11e1-ba67-f92e6a52212c + adobe:docid:photoshop:172e0e62-18c1-11da-ac91-b2cdf28072d8 + adobe:docid:photoshop:179a5fc6-d465-11da-b675-db28fe4a73f8 + adobe:docid:photoshop:179bc286-edf0-11d8-a136-afba0da96bc1 + adobe:docid:photoshop:17d4cbf5-8712-11d7-8c24-ba0f09c7ada8 + adobe:docid:photoshop:17d6ebeb-68e0-11dd-a6de-e0bc65130de7 + adobe:docid:photoshop:17df7783-8b64-11da-bcb8-e53ec5bf3a00 + adobe:docid:photoshop:180bfe9d-fa43-11da-9121-872e36a13a10 + adobe:docid:photoshop:18bbd59a-02c3-11e0-a954-8a9d4a41cbc2 + adobe:docid:photoshop:1930f6b7-8ebc-11e0-b2b7-f29bd0eb2c2e + adobe:docid:photoshop:19b43075-b92a-11df-a950-dbb0c5952f58 + adobe:docid:photoshop:1a7d042a-33a4-11e0-b5a2-d8518b6126ed + adobe:docid:photoshop:1a8dcaa0-6601-11d8-8e55-f0a808080e1c + adobe:docid:photoshop:1a9dd732-cea5-11d9-979b-9183ea2fb092 + adobe:docid:photoshop:1abd4b2f-4c98-11df-b472-cdc7f219d117 + adobe:docid:photoshop:1b1e7074-69ce-11db-9465-923e5ffb0d9a + adobe:docid:photoshop:1bca738d-4d28-11df-ae11-88a6b11ac6d3 + adobe:docid:photoshop:1d584d13-eacd-11dc-858d-eb39a95b8aab + adobe:docid:photoshop:1db9e1b9-8df8-11df-9b52-a71be759a593 + adobe:docid:photoshop:1dec74ed-69ce-11db-9465-923e5ffb0d9a + adobe:docid:photoshop:1e66640d-5c00-11db-ae46-b839ac5a4e87 + adobe:docid:photoshop:1eb64e64-8da5-11da-a998-d179b6732d6d + adobe:docid:photoshop:1ee18350-9cfa-11dc-ba37-85492b5ade36 + adobe:docid:photoshop:1eff0a7c-bb0e-11db-af40-c3e7cd681b24 + adobe:docid:photoshop:1f180f7c-9b39-11e0-9189-b28a1ccdb473 + adobe:docid:photoshop:203cc94b-4adf-11db-aa4d-aa6e95f1cc6a + adobe:docid:photoshop:20b5d8f3-25bd-11e0-9bd2-aff5a0d39026 + adobe:docid:photoshop:20cd6ba9-3770-11de-870a-9fd871d6c21d + adobe:docid:photoshop:212e5c2d-2c07-11dd-90cd-949161228160 + adobe:docid:photoshop:21672e49-0a8b-11dd-baf7-d52def3e1b33 + adobe:docid:photoshop:2176cf16-4d4f-11df-ae11-88a6b11ac6d3 + adobe:docid:photoshop:21db84dc-fb17-11df-8b9c-8bf84f479941 + adobe:docid:photoshop:2236f913-0073-11dd-b152-d7d023771671 + adobe:docid:photoshop:223cce3b-7b26-11dc-8886-82a522d1a834 + adobe:docid:photoshop:22990faa-e055-11dd-b567-8be6e632a809 + adobe:docid:photoshop:22a86171-c025-11df-8404-de96191a7f58 + adobe:docid:photoshop:22b938f6-8bea-11d9-b97a-dee482338636 + adobe:docid:photoshop:242de3eb-3586-11df-8f8b-ba8d9e2be798 + adobe:docid:photoshop:257b6a5f-532d-11e0-a09e-a919746d4862 + adobe:docid:photoshop:25b3b0c8-fc09-11db-a287-845f17165879 + adobe:docid:photoshop:25df04c2-69ce-11db-9465-923e5ffb0d9a + adobe:docid:photoshop:2602c0fd-2573-11de-8712-adb55e01b9fa + adobe:docid:photoshop:2617d3fe-f6a4-11dc-9e5e-f56ac854b98c + adobe:docid:photoshop:2636f904-ef8e-11db-868a-c506262104bf + adobe:docid:photoshop:277ea692-1b44-11de-8378-e46e3e6d41ee + adobe:docid:photoshop:27a0abb6-5547-11dc-b450-c1b48872e8a5 + adobe:docid:photoshop:27dd2826-37cb-11de-a503-90d8b29c240a + adobe:docid:photoshop:28df1bbb-29c8-11df-9f6a-f8936dc01f71 + adobe:docid:photoshop:29340be7-17f4-11dd-8148-fbe7f0bac890 + adobe:docid:photoshop:29393d8b-2a83-11e1-97fb-c88bdd563f09 + adobe:docid:photoshop:2a1d84d7-fa43-11da-9121-872e36a13a10 + adobe:docid:photoshop:2a706663-0748-11da-b8b0-ac5e00cb1c12 + adobe:docid:photoshop:2ad921b3-21b7-11d9-8559-b02c16574f1f + adobe:docid:photoshop:2adce4eb-411d-11d8-8042-b02c73d50967 + adobe:docid:photoshop:2b15102d-a0a7-11df-acbe-9d06a8f4b36a + adobe:docid:photoshop:2bae712c-fa43-11da-9121-872e36a13a10 + adobe:docid:photoshop:2bd96ba5-276d-11de-8522-a03abdb99a69 + adobe:docid:photoshop:2cc6ba47-0e4b-11df-8440-f986651e470c + adobe:docid:photoshop:2ce80ace-e895-11dd-9ee4-e1adc2e38589 + adobe:docid:photoshop:2cf36c3e-ddcd-11d6-b8b2-955147430a0b + adobe:docid:photoshop:2cf8d6b8-e1fe-11d8-8423-cdfc09f69766 + adobe:docid:photoshop:2d00f117-2ccc-11e1-afb6-f1e039506ea7 + adobe:docid:photoshop:2d3e179b-dc63-11df-bfb5-f9af494b0db7 + adobe:docid:photoshop:2e53065c-a7db-11db-a30c-aa3f32f49aef + adobe:docid:photoshop:2e775e34-3b80-11dd-84b5-fa465d9a67db + adobe:docid:photoshop:2f431e56-1812-11df-bbfe-9d261f9528a1 + adobe:docid:photoshop:2fd4de6f-fa43-11da-9121-872e36a13a10 + adobe:docid:photoshop:2fd7a59b-2abe-11de-80b3-a4c4c4b363ca + adobe:docid:photoshop:30092dd3-af98-11e0-b7ca-dbfe2e61d0a3 + adobe:docid:photoshop:3019fa14-7137-11d9-8ef5-b1579f0470a7 + adobe:docid:photoshop:30b17281-8689-11dd-93dc-973a6495cc63 + adobe:docid:photoshop:30e3a653-fa43-11da-9121-872e36a13a10 + adobe:docid:photoshop:3172517c-8209-11dd-9a26-ef1d3ae9c702 + adobe:docid:photoshop:318cd3ea-69ce-11db-9465-923e5ffb0d9a + adobe:docid:photoshop:31c0cdbc-7756-11e1-9101-97a7d7840dfd + adobe:docid:photoshop:3229f2ef-af98-11e0-b7ca-dbfe2e61d0a3 + adobe:docid:photoshop:329c46e2-2cb9-11e1-afb6-f1e039506ea7 + adobe:docid:photoshop:32e4a3c8-874e-11df-914b-c718c623ea7a + adobe:docid:photoshop:3332b716-e3aa-11db-9a23-b19c16fd4982 + adobe:docid:photoshop:33a906e9-d6df-11de-b624-f750f966e224 + adobe:docid:photoshop:33ed9173-e5b6-11d6-a4ea-a0e61aa6b8f1 + adobe:docid:photoshop:35a5b358-320d-11dd-ae08-de24862c009c + adobe:docid:photoshop:36311bc2-f494-11de-958e-bed7025130bf + adobe:docid:photoshop:36612b95-2d56-11de-bb11-ca9a886c5fe6 + adobe:docid:photoshop:36f3b0ed-1a73-11da-a649-87ebf6ab01f0 + adobe:docid:photoshop:37bf4216-6de9-11d8-b263-dcb16e9ef557 + adobe:docid:photoshop:381c71bf-f6bb-1177-97a4-b0dadc41b41b + adobe:docid:photoshop:39156f25-80eb-11db-a978-c5e6e63e45de + adobe:docid:photoshop:3919dec3-e9c8-11dc-942f-f2980918d941 + adobe:docid:photoshop:3930fa80-581f-11df-9302-d6831efb5a0d + adobe:docid:photoshop:3986dd71-8144-11da-af47-f98ca342a16a + adobe:docid:photoshop:39d55d38-c7c5-11d6-b6bb-968fdaf7e16d + adobe:docid:photoshop:3a257904-fa1b-11db-a680-b672f234fe26 + adobe:docid:photoshop:3a3750d5-8572-11db-a6a2-e63bcf2f596f + adobe:docid:photoshop:3a381cd1-c82e-11db-96c4-bcabed604670 + adobe:docid:photoshop:3b4ad281-f1a5-11db-8922-d70353ace9b0 + adobe:docid:photoshop:3c121c1b-2061-11dc-ab87-8ce6f416405f + adobe:docid:photoshop:3c78a10c-fa43-11da-9121-872e36a13a10 + adobe:docid:photoshop:3ca33888-b7a4-11e2-b9e1-95a6799e8e37 + adobe:docid:photoshop:3cc3be03-94bc-1177-89b2-c5ce30f3ca6b + adobe:docid:photoshop:3e9e55f1-de8d-11d6-88e0-e5ac9c437543 + adobe:docid:photoshop:3eb9d5d0-7612-11dc-9872-87d859ee3843 + adobe:docid:photoshop:3f4b5c5b-eacc-11dc-858d-eb39a95b8aab + adobe:docid:photoshop:3f4b5c5e-eacc-11dc-858d-eb39a95b8aab + adobe:docid:photoshop:4013845a-6f7b-11de-9b6f-d56dda550408 + adobe:docid:photoshop:40d33a01-e1df-11e0-bc77-fbe244c77990 + adobe:docid:photoshop:40ffecea-e206-11d8-90e4-bb0df6ca8694 + adobe:docid:photoshop:4194748e-921c-11e0-82e4-cc8475dea2ff + adobe:docid:photoshop:420d20f8-7756-11e1-9829-bb69b0cb9f57 + adobe:docid:photoshop:422d030c-3e12-11dd-a3f3-fefa4d5e9b3f + adobe:docid:photoshop:4296683b-cf26-11db-b1b5-fcf0cb251532 + adobe:docid:photoshop:429e75f3-04dd-11e1-9ed8-b8283b8fccff + adobe:docid:photoshop:4443a34d-8f81-11da-8980-b4f7587318c1 + adobe:docid:photoshop:44f70bc9-dd59-11de-8c76-a14e6fac37ae + adobe:docid:photoshop:46620b5e-fb88-11dd-82a7-ba89bf336b7a + adobe:docid:photoshop:46620b66-fb88-11dd-82a7-ba89bf336b7a + adobe:docid:photoshop:47073a10-5f84-11dc-8e54-e4278b2940dc + adobe:docid:photoshop:47777179-72a9-11db-94d5-b112fd03cade + adobe:docid:photoshop:47f929e2-d447-11d9-ae72-f67ba455a7eb + adobe:docid:photoshop:482f6950-e119-11db-818b-9e24fabc97a1 + adobe:docid:photoshop:486b6dea-0ef9-11dd-af6b-fe449087c7f6 + adobe:docid:photoshop:48912bb8-c0db-11db-96cd-daf3d6618ae0 + adobe:docid:photoshop:48ad84f5-c68a-11da-bce6-9097d22b90c7 + adobe:docid:photoshop:4a96218b-66b9-11de-a83a-bde54db9690a + adobe:docid:photoshop:4b06dcf1-06af-11de-90ab-fd97112f18a8 + adobe:docid:photoshop:4b8ed983-863c-11da-a8d1-d221db5a105b + adobe:docid:photoshop:4c0aeecc-8d84-11da-9f99-ae414f6db1b5 + adobe:docid:photoshop:4ce2afc3-a04b-11db-96e2-80f2eeccae2f + adobe:docid:photoshop:4da0c2f5-98eb-11da-ac71-be3291a8add0 + adobe:docid:photoshop:4e0340d1-4f56-11da-8b4c-c8e689cb58c6 + adobe:docid:photoshop:4f9af5d2-1359-11e0-8fa2-89f6e7174c44 + adobe:docid:photoshop:4fdac08f-78db-11db-97ca-e3c20abf246c + adobe:docid:photoshop:50e64388-f2a8-11d8-ba37-b505723b27a5 + adobe:docid:photoshop:515a894e-1656-11dc-aa55-ea97e4dba80e + adobe:docid:photoshop:51e98ec9-874e-11df-914b-c718c623ea7a + adobe:docid:photoshop:521d4db9-9b3b-11e0-9189-b28a1ccdb473 + adobe:docid:photoshop:52db7998-3a56-11dc-80d7-84ef0cb84c20 + adobe:docid:photoshop:530d1f8d-2ff5-11e1-8fc0-fb78c9c600ed + adobe:docid:photoshop:5328d476-2539-11dd-9148-d3fd6c943eaf + adobe:docid:photoshop:53302e9e-8f66-11dc-8b8e-a0e3abc9f998 + adobe:docid:photoshop:53407071-8ecc-11dd-a22c-9e8f75aa8a93 + adobe:docid:photoshop:53d0f5d2-5bed-11dc-bcbb-d85c517add44 + adobe:docid:photoshop:544f255e-1626-11e0-ad32-feca10191eb3 + adobe:docid:photoshop:55b239dd-ca95-11de-bb83-d09779563ec9 + adobe:docid:photoshop:5601ac1d-12c9-11d9-8622-a7b066e3a82d + adobe:docid:photoshop:56c6d2c2-d19f-11db-ac8f-e75770c3f6dc + adobe:docid:photoshop:5799b84a-f22d-11dd-95e6-d94ef15f0b29 + adobe:docid:photoshop:57f9bf66-b832-11dd-8dd6-e231c74162bd + adobe:docid:photoshop:58af0871-8738-11de-862d-e6afcef5c739 + adobe:docid:photoshop:59081be0-8708-11df-92f2-a8c0dc19957a + adobe:docid:photoshop:59374361-0836-11d7-bde1-ef8a60524d83 + adobe:docid:photoshop:594c7d84-1e4c-11dd-85a3-bc9a131fed10 + adobe:docid:photoshop:5a489e66-edcb-11d9-a279-bbdba68422e0 + adobe:docid:photoshop:5aa73eb4-8f37-11d7-9bf9-ffcb9a1962d8 + adobe:docid:photoshop:5b7308e6-69ce-11db-9465-923e5ffb0d9a + adobe:docid:photoshop:5b7cd8c5-c57c-11de-a2ea-caf244eec16c + adobe:docid:photoshop:5b7cd8c6-c57c-11de-a2ea-caf244eec16c + adobe:docid:photoshop:5b9d0648-835a-11da-bbf3-bf0995c96385 + adobe:docid:photoshop:5bb25fcb-00d5-11dc-8160-fe3baaea4664 + adobe:docid:photoshop:5bd0fec6-f6d3-11d8-9fb7-8699fac9df85 + adobe:docid:photoshop:5c20a16a-0779-11dd-bd9a-fbc1eb41c56e + adobe:docid:photoshop:5c20a16e-0779-11dd-bd9a-fbc1eb41c56e + adobe:docid:photoshop:5cc067c8-6063-11dd-b32e-d18e8b22e880 + adobe:docid:photoshop:5cd6ad9c-a2db-11e1-be23-d141a9e6255a + adobe:docid:photoshop:5d55d682-fcb5-11df-8232-c2c89e4ac8d9 + adobe:docid:photoshop:5e56d3f7-1320-11e0-a9fe-a560b5ba6253 + adobe:docid:photoshop:5ef56f6b-0749-11de-8f7e-f799600ed10d + adobe:docid:photoshop:5f5b7de0-4a43-11df-bc05-e64777e8bef8 + adobe:docid:photoshop:5fb574b5-64e6-11d9-965a-d5b74233050f + adobe:docid:photoshop:5fca0d8e-86e1-11de-b1dd-9d263488e40b + adobe:docid:photoshop:604e91cf-4ac8-11dc-8e09-e8da50afd2c6 + adobe:docid:photoshop:60549f01-88cb-11d8-a38e-9bdbf62b63ce + adobe:docid:photoshop:60d2d34a-9c77-11dd-89d5-96a30d61d7ff + adobe:docid:photoshop:60d53d84-f875-11db-831e-c5f511e4f2eb + adobe:docid:photoshop:612aa002-1421-11d9-8070-ccfa71b3d275 + adobe:docid:photoshop:6141f171-b222-11d8-aa2d-8b84e1d0005f + adobe:docid:photoshop:629df61e-7763-11e1-9829-bb69b0cb9f57 + adobe:docid:photoshop:62c98226-32d9-11dc-91ad-a3de54ba595d + adobe:docid:photoshop:62e95306-f64b-11db-9410-f506e7642415 + adobe:docid:photoshop:635105d6-7b71-11de-b31b-b4a12dda2775 + adobe:docid:photoshop:638ea585-9c6e-11dd-8b97-84445de134a0 + adobe:docid:photoshop:6517155a-87a8-11dd-b7e3-84d715057fb2 + adobe:docid:photoshop:661b5d26-320c-11dd-ae08-de24862c009c + adobe:docid:photoshop:66ace648-52f0-11dd-95c0-ab76489a8f60 + adobe:docid:photoshop:674c51c8-b376-11dc-b1e4-920e83e0d8c1 + adobe:docid:photoshop:680b500c-af7d-11db-9531-ccfb979a170c + adobe:docid:photoshop:682fae73-f1f0-11d8-8ed1-88806a7f26fd + adobe:docid:photoshop:69183c62-5abc-11dd-9c85-92573e7c5027 + adobe:docid:photoshop:6a651c27-b905-11df-acd9-95873685eacf + adobe:docid:photoshop:6aaab3c6-38ee-11de-94f7-fa3cd32aac0e + adobe:docid:photoshop:6b187a4d-21ac-11df-8763-f7b32115d1d8 + adobe:docid:photoshop:6b2c0000-ea4a-11de-b065-be1724baa972 + adobe:docid:photoshop:6c69c3eb-f3ad-11d6-9658-935716e2d04b + adobe:docid:photoshop:6cc72dd4-c122-11da-9ea0-b410217bc604 + adobe:docid:photoshop:6d604580-08a7-11de-9c1b-945f77a51690 + adobe:docid:photoshop:6d6fcacd-891e-11da-b516-85660ac11f29 + adobe:docid:photoshop:6e624520-a5dd-11d9-bb86-cf6cd7fc0c61 + adobe:docid:photoshop:6e9b8479-5f83-11dc-8e54-e4278b2940dc + adobe:docid:photoshop:6e9dbbc1-f176-11db-b395-83eb43664577 + adobe:docid:photoshop:6f36e0b0-1b73-11de-af62-cec872fd2ec8 + adobe:docid:photoshop:6f905f15-8fd6-11dd-9a7c-ba946f5f1176 + adobe:docid:photoshop:6fe0c088-27f6-11db-b09a-88004c6e1c0f + adobe:docid:photoshop:70795369-69fc-11e1-92f5-81967b3809d8 + adobe:docid:photoshop:708f8750-0b05-11dc-be9e-ba5d9941eab3 + adobe:docid:photoshop:71937d3c-82ed-1177-8516-a047d8112baf + adobe:docid:photoshop:7217a572-7753-11e1-9829-bb69b0cb9f57 + adobe:docid:photoshop:729b2e17-8fd6-11dd-9a7c-ba946f5f1176 + adobe:docid:photoshop:729b2e19-8fd6-11dd-9a7c-ba946f5f1176 + adobe:docid:photoshop:72e597a8-879a-11de-862d-e6afcef5c739 + adobe:docid:photoshop:72f1fb47-ea8c-11db-95c1-b1b07aeb56a4 + adobe:docid:photoshop:72f1fb4b-ea8c-11db-95c1-b1b07aeb56a4 + adobe:docid:photoshop:7314076e-d94e-11de-9db7-c5a54f0181ab + adobe:docid:photoshop:73438da7-8d68-11d9-9021-854b8c41ccb0 + adobe:docid:photoshop:73997712-ee43-11db-b371-ce4dedc23d81 + adobe:docid:photoshop:7406ec25-a656-11dc-b599-851288844657 + adobe:docid:photoshop:745d6ce4-4db2-11d9-9000-c6cf0216aa2e + adobe:docid:photoshop:74912c93-2ca2-11dc-8f05-a8daf57f830d + adobe:docid:photoshop:74ff1bcc-b711-11dd-ad9d-9539e268e205 + adobe:docid:photoshop:7667e5ea-0607-11df-8805-b555e2a42c52 + adobe:docid:photoshop:76f143bf-a582-11e1-aa43-fddeaa22588b + adobe:docid:photoshop:77161e26-a7d6-11db-b1d2-d11ab529e114 + adobe:docid:photoshop:77e0eb4f-8f81-11db-8e54-a31beaee7dd7 + adobe:docid:photoshop:7816e441-a32e-11dc-8617-8fad2a703e45 + adobe:docid:photoshop:788aa8f6-d023-11db-b7e4-bc3a9f1faf20 + adobe:docid:photoshop:78dd09da-b4d1-11de-9d86-d9f2abaddb86 + adobe:docid:photoshop:792c94d2-0b72-11dd-8a8e-b94e9ce47b14 + adobe:docid:photoshop:79595902-a0e0-11dd-90d2-876625fe095b + adobe:docid:photoshop:79c1964e-0727-11e0-a612-80a85a34eeba + adobe:docid:photoshop:79ef6de2-944c-11d9-a189-86da94e095a6 + adobe:docid:photoshop:7a190210-93e0-11e1-aba8-9645e32eaafb + adobe:docid:photoshop:7a4ae603-5df9-11dd-a141-e9cb794e1a6e + adobe:docid:photoshop:7a515fd0-d80b-11d8-9dd9-f7c48e333c07 + adobe:docid:photoshop:7a6fdd9a-601d-11db-89dd-8a8b24500295 + adobe:docid:photoshop:7a6fdd9c-601d-11db-89dd-8a8b24500295 + adobe:docid:photoshop:7a7a817f-5736-11dd-99b5-f5eb48a9ac04 + adobe:docid:photoshop:7a98cbc8-774f-11e1-9829-bb69b0cb9f57 + adobe:docid:photoshop:7b1577a7-e117-11db-818b-9e24fabc97a1 + adobe:docid:photoshop:7b4c1c49-39df-11df-9281-e40e2ef31eb4 + adobe:docid:photoshop:7ba565f4-abb7-11da-9dab-a602a063f6a1 + adobe:docid:photoshop:7baa97f7-e5fb-11dd-88a0-bac079f2f481 + adobe:docid:photoshop:7cb19e39-1b0a-11dd-bd2b-85b1c594ae8a + adobe:docid:photoshop:7d10dca3-6a83-11dd-b6cc-c62ddd1ddd6e + adobe:docid:photoshop:7dcd90a9-f657-11da-afb3-f9a60f5494af + adobe:docid:photoshop:7e4efb16-990e-11df-8951-befad6e485d0 + adobe:docid:photoshop:7ea7681f-d02e-11db-b7e4-bc3a9f1faf20 + adobe:docid:photoshop:7eef9e4e-94ac-11e1-b334-d48e92babb9c + adobe:docid:photoshop:7f299b54-248f-11de-981b-99abda985106 + adobe:docid:photoshop:7f6c8b55-afb9-11db-91ab-f6e80ed85bab + adobe:docid:photoshop:7fff3975-601d-11db-89dd-8a8b24500295 + adobe:docid:photoshop:7fff3977-601d-11db-89dd-8a8b24500295 + adobe:docid:photoshop:80fd745e-3944-11dd-b622-e3b8f8203553 + adobe:docid:photoshop:8145c4f1-09fe-11de-8249-e266b9272b19 + adobe:docid:photoshop:828e51c4-3192-11da-92ef-83469fab69eb + adobe:docid:photoshop:82a334e5-6656-11dd-a59a-b877ef5c336b + adobe:docid:photoshop:831a2bff-2060-11dc-ab87-8ce6f416405f + adobe:docid:photoshop:83887907-e5bf-11d9-949c-fb6d550bf573 + adobe:docid:photoshop:838ab369-e531-11db-bf08-bb9b651a276f + adobe:docid:photoshop:84aad769-0fc2-11dd-987b-f72099bf740f + adobe:docid:photoshop:84c018f2-47eb-11de-ae34-b5a1bd0575a1 + adobe:docid:photoshop:84e681bd-d48f-11dd-a25a-a26ae849ad01 + adobe:docid:photoshop:856033d5-fa47-11dc-9057-ac5d3de3713a + adobe:docid:photoshop:8598b102-0c7e-11d8-9587-f4958f738f79 + adobe:docid:photoshop:863724e1-de62-11dc-a856-f265a90e1263 + adobe:docid:photoshop:863acf4a-d085-11e0-b6d6-965a56581336 + adobe:docid:photoshop:868029fd-2276-11dd-9239-c1a598344559 + adobe:docid:photoshop:8687dbdf-faf8-11dc-a186-e0f9726909ef + adobe:docid:photoshop:86cef04a-eb4f-11dd-976b-bcf0432bcbdd + adobe:docid:photoshop:87a0c2d5-5359-11db-b932-d40be5fad693 + adobe:docid:photoshop:88913599-f5f6-11dc-9249-f1a6e66441db + adobe:docid:photoshop:890403f2-5789-11da-a4c5-b01f0d18ada0 + adobe:docid:photoshop:8922d28f-7102-11dc-998b-d5977ae4c3fe + adobe:docid:photoshop:8a665864-3168-11dd-ae08-de24862c009c + adobe:docid:photoshop:8b1a6435-1e48-11dc-a2d3-f7dac7540843 + adobe:docid:photoshop:8b811db8-a2b2-11d8-aaa0-ceaf293374b5 + adobe:docid:photoshop:8c0e97ae-d228-11e0-a475-cc6a25bb4bca + adobe:docid:photoshop:8cd211ce-af60-11d8-9b36-814bf590dc1b + adobe:docid:photoshop:8ced12d1-4121-11dc-8db8-bd45412a7f4a + adobe:docid:photoshop:8d5f43cd-14a3-11dc-bd21-9083948ccbed + adobe:docid:photoshop:8e6b2801-e0ac-11dc-be02-9e982731d8c9 + adobe:docid:photoshop:8e6f3d17-16a3-11e0-9869-a7d070777029 + adobe:docid:photoshop:8f232916-cc1d-11db-b4ad-8b39ea515d9b + adobe:docid:photoshop:8ff9d64c-4418-11da-b7e6-d902366ee3d9 + adobe:docid:photoshop:90141bde-9f31-11dd-a4d9-e73c0c120975 + adobe:docid:photoshop:90474750-5a75-11dd-9db4-ccb9f54ce413 + adobe:docid:photoshop:90edf86a-65c4-11e0-872b-c8ffb8cd5267 + adobe:docid:photoshop:923f0e52-3389-11dd-950c-a80d9ad4456c + adobe:docid:photoshop:9292eb5e-6ce8-11df-8d9d-d0d5522d8976 + adobe:docid:photoshop:93b583ae-bab2-11dc-856e-857de8cde6e3 + adobe:docid:photoshop:93fe767c-1b0e-11dd-bd2b-85b1c594ae8a + adobe:docid:photoshop:9465ce21-e183-11dc-836d-8fb87bc0879a + adobe:docid:photoshop:94a75bd3-e34b-11dd-9dc9-c101a6e1a4e7 + adobe:docid:photoshop:9534310c-d1ea-11da-8bbc-b5ea1b5ad5fb + adobe:docid:photoshop:95584223-ac4c-11dd-9562-a3e25c7df58c + adobe:docid:photoshop:95a7389c-60a2-11d8-aeb4-db9805d5066b + adobe:docid:photoshop:95edf586-0ea4-11df-a4bd-ddfa81567552 + adobe:docid:photoshop:9674de00-16ad-11de-bf58-fb07ea9faf6a + adobe:docid:photoshop:96c38241-7da6-11db-b8e3-f7f79b8d06ec + adobe:docid:photoshop:9769f79a-e6a3-11d6-b066-ec4dd6909c0e + adobe:docid:photoshop:9855e9b7-1a77-11e0-a056-a14635721b97 + adobe:docid:photoshop:98835358-5312-11e0-babc-9637ababf7dc + adobe:docid:photoshop:98bc8a66-2571-11de-8712-adb55e01b9fa + adobe:docid:photoshop:9941c5b0-b4c6-11df-aa68-bdebe0189f7c + adobe:docid:photoshop:9969ac66-18b0-11de-a292-a83f151b8816 + adobe:docid:photoshop:9adb9b7a-624b-11dd-b57a-d211d7272d2d + adobe:docid:photoshop:9afbba62-dbb5-11df-93d5-fe37f92a97e8 + adobe:docid:photoshop:9bee7f23-98ea-11da-ac71-be3291a8add0 + adobe:docid:photoshop:9c29ab24-f0d0-11de-95d2-cc93dc4807fe + adobe:docid:photoshop:9c8ce1c4-2684-11dd-a051-ab8a29da1462 + adobe:docid:photoshop:9c8ce1c5-2684-11dd-a051-ab8a29da1462 + adobe:docid:photoshop:9c8ce1c9-2684-11dd-a051-ab8a29da1462 + adobe:docid:photoshop:9d09ed44-1a77-11e0-a056-a14635721b97 + adobe:docid:photoshop:9d5ac781-e2a9-11e0-9820-c5e40e10ba7f + adobe:docid:photoshop:9dba6cc5-4f9a-11dd-bb4d-ea3005ba1e5d + adobe:docid:photoshop:9e43fc1a-1fe4-11e0-bde9-c3f32c63ca84 + adobe:docid:photoshop:9e75e9a5-c12c-11dc-bf71-e0e0a0416e84 + adobe:docid:photoshop:9e956f0d-00e6-11dc-83c7-d92cb970bfd2 + adobe:docid:photoshop:9f7171b7-0d7c-11da-9f06-ae7fbb26fc59 + adobe:docid:photoshop:a0a9d204-c484-11da-aee4-aec7720da726 + adobe:docid:photoshop:a0b42d67-9b50-11d8-9ae8-e8e225a1d472 + adobe:docid:photoshop:a0c33902-b05d-11df-9671-a839c259253c + adobe:docid:photoshop:a2c5b113-394f-11df-9675-8ad275b8b170 + adobe:docid:photoshop:a2cfa0f1-67c4-11dd-8dc6-abf2ff5de843 + adobe:docid:photoshop:a3db96e5-2d69-11e1-be6d-d25e16f4b6f0 + adobe:docid:photoshop:a437e96f-ebf7-11d6-b02d-cc1f8f8b7684 + adobe:docid:photoshop:a4408ce2-9696-11dd-bb5f-df7484d5e03b + adobe:docid:photoshop:a4985975-af8d-11e0-b7ca-dbfe2e61d0a3 + adobe:docid:photoshop:a51ff05c-c6e6-11d8-b083-d8d4c6714f43 + adobe:docid:photoshop:a528a766-caae-11de-8898-dfefa1572a71 + adobe:docid:photoshop:a591346a-4b10-11dd-8c30-dad2b7495f46 + adobe:docid:photoshop:a5afafbc-4443-11df-8ceb-b00c7bcc9aab + adobe:docid:photoshop:a70563cc-8e10-11e1-901e-88a59c7f180c + adobe:docid:photoshop:a8663436-8603-11df-b4c0-9f1866b18c74 + adobe:docid:photoshop:a8b75913-9b1c-11dc-81ec-8e0e0ab54a83 + adobe:docid:photoshop:a8c0d594-1c60-11d8-a6cb-cdfe702634db + adobe:docid:photoshop:a8f63b8c-cf8e-11d9-8f38-ea3e2d6c58a2 + adobe:docid:photoshop:a91f0b3c-2855-11da-8c8a-a5a748eabfd4 + adobe:docid:photoshop:aa0763a8-06af-11de-90ab-fd97112f18a8 + adobe:docid:photoshop:aafd8f79-2d56-11de-bb11-ca9a886c5fe6 + adobe:docid:photoshop:aafd8f7e-2d56-11de-bb11-ca9a886c5fe6 + adobe:docid:photoshop:ab3db56f-073f-11db-93d0-f609d75882a4 + adobe:docid:photoshop:aba840f2-e914-11dd-803f-9838462d3791 + adobe:docid:photoshop:abac5014-6423-11dd-b1b7-f262c77e7590 + adobe:docid:photoshop:ad42dcbb-0994-11dd-9e72-c717edaed5ae + adobe:docid:photoshop:ad5b87eb-ce80-11de-bccb-a706e3fdfee1 + adobe:docid:photoshop:adfe9ee0-9aa9-11d8-8721-a599c2baff9e + adobe:docid:photoshop:ae3ca878-c2de-11d8-a406-eb69a8c918a1 + adobe:docid:photoshop:ae6a7993-e98a-11da-8068-f8a792fc8b3f + adobe:docid:photoshop:af0feeda-0d8b-11d9-bbc1-c33c37948dbb + adobe:docid:photoshop:b0328bec-60bc-11df-86c5-b7d9c58e0821 + adobe:docid:photoshop:b0622a50-2ac3-11de-86e4-9a389b200818 + adobe:docid:photoshop:b1731d25-12aa-11d8-90e4-b7c1f27d91d6 + adobe:docid:photoshop:b2617bd8-bafd-11db-a3b5-b006bd5234f2 + adobe:docid:photoshop:b306f311-990e-11df-8951-befad6e485d0 + adobe:docid:photoshop:b3544427-25c9-11dd-925d-84887b35715c + adobe:docid:photoshop:b39187f1-5734-11dd-99b5-f5eb48a9ac04 + adobe:docid:photoshop:b49ba608-4cae-11db-8d08-fb5837c6ae9c + adobe:docid:photoshop:b4a41d20-a7b9-11de-8cf3-90ac30fda3af + adobe:docid:photoshop:b588a571-5e7d-11d9-9143-d4bffe8717ac + adobe:docid:photoshop:b62cc706-9066-11df-a8b1-f03d20e18df3 + adobe:docid:photoshop:b6baf703-26d5-11df-84ba-8c7c7f5c0fcf + adobe:docid:photoshop:b76cafc6-31c8-11dd-ae08-de24862c009c + adobe:docid:photoshop:b7724cba-82db-1177-8516-a047d8112baf + adobe:docid:photoshop:b82d2084-480b-11da-9f1d-bb239c936e78 + adobe:docid:photoshop:b859cd86-0a61-11e1-959d-8e7ca06e11ed + adobe:docid:photoshop:b9d8894b-ae78-11d8-aef8-eeea27fa4fc8 + adobe:docid:photoshop:ba39640a-07b5-11dd-a7e9-e31e3ec26b17 + adobe:docid:photoshop:ba39640b-07b5-11dd-a7e9-e31e3ec26b17 + adobe:docid:photoshop:ba39640c-07b5-11dd-a7e9-e31e3ec26b17 + adobe:docid:photoshop:ba61a0d4-ee43-11d9-a4fc-f717bc3bc035 + adobe:docid:photoshop:ba787667-8053-11d9-a688-af7e29131ed1 + adobe:docid:photoshop:baa6665a-b7ea-11e0-8382-ef8eac5d4b15 + adobe:docid:photoshop:badec3b0-8d9f-11dc-aa6d-fd72ed461365 + adobe:docid:photoshop:bb6af87a-1881-11e0-b367-d759ddbac51f + adobe:docid:photoshop:bb885d59-f165-11dd-b2e7-b55f0ff3594b + adobe:docid:photoshop:bc2955b2-c523-11dc-9766-ec600096ee81 + adobe:docid:photoshop:bc66106e-ab09-11dd-a0c1-8d366f6a2cad + adobe:docid:photoshop:bc700404-626a-11dd-a82d-9333ec4b8528 + adobe:docid:photoshop:bccecc75-1ea2-11dd-b3e6-a1ffd79ec42d + adobe:docid:photoshop:bcf4f8fb-1933-11e0-b538-cd974d816c5f + adobe:docid:photoshop:bcf84d43-1a75-11e0-a056-a14635721b97 + adobe:docid:photoshop:bdacca7d-0228-11dc-97cf-b419ea1c3182 + adobe:docid:photoshop:bf1b42ff-0880-11d7-8913-9a827c8293a3 + adobe:docid:photoshop:bfe2e6ee-5412-11df-84ab-dd100cc19701 + adobe:docid:photoshop:c1422350-a306-11d7-ad63-9fa59f868483 + adobe:docid:photoshop:c17986d0-cf18-11da-b212-cd9ed8397349 + adobe:docid:photoshop:c1b701b5-db72-11db-ab1f-df74d7423f7a + adobe:docid:photoshop:c1e5d31e-ff8c-11dd-bc65-b8b21fdf13f1 + adobe:docid:photoshop:c2c9e0ea-ea82-11df-be75-e11dd22e563b + adobe:docid:photoshop:c2ebe111-1cb9-11d9-922e-936ab95f2627 + adobe:docid:photoshop:c383ded2-81e2-11e0-a365-ba810a9c6706 + adobe:docid:photoshop:c3cfa103-dc36-11dc-a754-cd1ab8e11229 + adobe:docid:photoshop:c407fd71-774a-11e1-9829-bb69b0cb9f57 + adobe:docid:photoshop:c4203496-2fb9-11de-bee1-85c8bed24635 + adobe:docid:photoshop:c46665a9-a6d8-11df-9ed0-a76ea5369d27 + adobe:docid:photoshop:c49ac98a-c70e-11d8-b083-d8d4c6714f43 + adobe:docid:photoshop:c4df783a-4b7b-11dc-a30a-e5c2aae6ba21 + adobe:docid:photoshop:c4f9b71a-8c61-11da-8a74-eea9da9dc9a0 + adobe:docid:photoshop:c576d77a-8b0a-11df-87a6-ab3df7fc99d9 + adobe:docid:photoshop:c58fedd6-e5c3-11de-b030-f3bc05878ac7 + adobe:docid:photoshop:c73186fe-b914-11df-acd9-95873685eacf + adobe:docid:photoshop:c76bbd78-5304-11dd-bc9b-b21df2d8a984 + adobe:docid:photoshop:c7907285-0601-11de-90ab-fd97112f18a8 + adobe:docid:photoshop:c860d7f2-8a97-11d9-83e5-ac2438b0cbcd + adobe:docid:photoshop:c872e7bb-307f-11d9-ac92-b68908bd11b6 + adobe:docid:photoshop:c94fbb71-030a-11df-927b-f3bd65d785fa + adobe:docid:photoshop:c9c03183-6893-11d9-ad52-b80cefac3425 + adobe:docid:photoshop:c9f9fb96-0f54-11df-aec2-8f4c8f09d8b2 + adobe:docid:photoshop:ca02057d-15c7-11da-b57e-c4dd197df79a + adobe:docid:photoshop:cbfaafa0-e3ca-11dc-b634-8524f1bfaf10 + adobe:docid:photoshop:cc2885c7-5060-11dc-afdc-98d560a3455c + adobe:docid:photoshop:ccff2b90-78f9-11d9-981c-845e7688fd6d + adobe:docid:photoshop:cdd3da26-6d93-11da-88bf-947e4ae60417 + adobe:docid:photoshop:cf878b36-dea6-11d6-af35-91df99c501ce + adobe:docid:photoshop:cf96f18d-a6f2-11dd-b2ac-cac96f638488 + adobe:docid:photoshop:cfe14cb5-2068-11da-9aa7-c40f739f4b93 + adobe:docid:photoshop:d01a3f2e-8b5e-11da-bcb8-e53ec5bf3a00 + adobe:docid:photoshop:d0669b73-1a67-11dc-ac87-85217613098a + adobe:docid:photoshop:d06d3384-064e-11df-97cb-84833991f812 + adobe:docid:photoshop:d0a0a2ca-782e-11dd-815a-848ce56bb32d + adobe:docid:photoshop:d0e21d5c-07b5-11dd-a7e9-e31e3ec26b17 + adobe:docid:photoshop:d18105f8-fddd-11dc-8ee9-caa378d28804 + adobe:docid:photoshop:d28a8b6f-0ab5-11dc-94bf-f2f562d0fb5c + adobe:docid:photoshop:d2ae19b3-2bcd-11dc-9eed-ed332b603372 + adobe:docid:photoshop:d324069c-746d-11dd-9950-cbc11fb18fcb + adobe:docid:photoshop:d3430c62-44b9-11de-80e1-d211e535d4c2 + adobe:docid:photoshop:d4231c0a-5b67-11d9-b26d-ad7e1fa72b42 + adobe:docid:photoshop:d45e4409-43e1-11de-b520-c2c6e6d28c89 + adobe:docid:photoshop:d463e214-9575-11e1-8af8-d74430b3eb60 + adobe:docid:photoshop:d4831f89-6ddc-11df-be57-a6c35e21aeca + adobe:docid:photoshop:d4b4d8e7-0a40-11e1-b889-c48654fb8bb6 + adobe:docid:photoshop:d5eb39a6-8701-11df-92f2-a8c0dc19957a + adobe:docid:photoshop:d6e08e02-089a-11de-9c1b-945f77a51690 + adobe:docid:photoshop:d6e511d2-4fec-11de-8d66-e7764826413b + adobe:docid:photoshop:d73e8897-3719-11d9-9fdd-c7ba6ecf2039 + adobe:docid:photoshop:d761ca6b-a5ab-11db-8c28-f0f05f876969 + adobe:docid:photoshop:d767c4ad-4081-11dd-b559-d5e0d2e22c6c + adobe:docid:photoshop:d7f09046-1633-11d9-9a7c-bc2827732531 + adobe:docid:photoshop:d9b2e6a0-8ce7-11dd-be12-93c5fb96f243 + adobe:docid:photoshop:d9f122a5-cea4-11d9-979b-9183ea2fb092 + adobe:docid:photoshop:da411005-2ca4-11e1-8bf8-a39b6b079452 + adobe:docid:photoshop:da5398b8-fa1a-11dc-bef8-ab52e9a7e9be + adobe:docid:photoshop:da552961-0830-11dd-8dbe-e92bb80aecdf + adobe:docid:photoshop:daa0777e-e15f-11e0-a69b-c31e0cc17585 + adobe:docid:photoshop:dae4e9a3-ff1c-11e0-bc89-98fc059fe22c + adobe:docid:photoshop:db4c3739-d291-11de-9902-88725022e8f9 + adobe:docid:photoshop:dc26db18-707c-11dd-8432-e55561c81201 + adobe:docid:photoshop:dc40b551-fbe8-11de-8e15-a3137dee8ad3 + adobe:docid:photoshop:dcd2ca40-9f40-11de-9401-8020fe406416 + adobe:docid:photoshop:dcf18a6c-9a87-11dd-9e2d-80e4367d09fe + adobe:docid:photoshop:dcf9f014-3553-11db-bd4b-b674c1914004 + adobe:docid:photoshop:dd0b872f-497f-11dc-a1b5-bbd55cdcf719 + adobe:docid:photoshop:dd0d929c-07d6-11d9-bb77-bfa7c8df5462 + adobe:docid:photoshop:ddaba3b4-3c8b-11dc-9844-c0ec535d50b9 + adobe:docid:photoshop:debfcbed-cc3e-11de-90b8-b400df0d5417 + adobe:docid:photoshop:df44a9e1-9854-11e1-ba25-d9a62f5155a9 + adobe:docid:photoshop:df523136-81dc-11de-b4bc-871de4a39779 + adobe:docid:photoshop:df738c82-07f4-11de-994c-ad88984b91b8 + adobe:docid:photoshop:dfa72e26-0708-11df-b809-c5f3fa191ccb + adobe:docid:photoshop:e14adbc1-cd45-11d8-ac42-e8f0ded048fb + adobe:docid:photoshop:e1528a49-aa48-11de-be0c-b3552b528d5d + adobe:docid:photoshop:e185fe04-e541-11de-b44f-e6fdde8fc3c1 + adobe:docid:photoshop:e1bc49f4-f5ec-11db-a028-ede1e6808e95 + adobe:docid:photoshop:e263b3a0-6913-11d7-a1f7-f7c606f79680 + adobe:docid:photoshop:e26af062-282a-11d9-9952-ed25266a1ca6 + adobe:docid:photoshop:e2a36f19-6138-11e1-899a-c64b6b1ec099 + adobe:docid:photoshop:e2e682b2-d898-11d8-a457-b45b6ffe5c75 + adobe:docid:photoshop:e3f6915e-6b3b-11dd-bb6c-c0788982e35b + adobe:docid:photoshop:e47f7650-9ecf-11dc-a169-aea226af67b1 + adobe:docid:photoshop:e4c364fc-2298-11dc-a3f1-affe78f3f1dd + adobe:docid:photoshop:e525cbd5-b72d-11da-898e-d17356aeb442 + adobe:docid:photoshop:e5b81b9e-2d80-11e1-a0bf-88c93e00f745 + adobe:docid:photoshop:e603e168-a1c1-11da-aed6-8e5e759ceb64 + adobe:docid:photoshop:e7ae34c8-77ce-11de-92d1-eb1d989b0511 + adobe:docid:photoshop:e7e7a68d-3ca7-11dd-a519-f4a69efb17d2 + adobe:docid:photoshop:e8218e4e-3d98-11da-9965-cce64476d406 + adobe:docid:photoshop:e8713839-906c-11df-a8b1-f03d20e18df3 + adobe:docid:photoshop:e879172a-c99d-11dd-9aaa-87c3750b6356 + adobe:docid:photoshop:ea8f1296-9686-11df-87e1-c92e03f7a8b2 + adobe:docid:photoshop:eb2afa93-8bbd-11df-bfcd-ba3e8bc8ae0c + adobe:docid:photoshop:eb2afa97-8bbd-11df-bfcd-ba3e8bc8ae0c + adobe:docid:photoshop:ebc833e6-f749-11df-a51a-db4db25c41d1 + adobe:docid:photoshop:eca662e6-6f72-11db-a484-ce080099c576 + adobe:docid:photoshop:ecb7b478-4926-11db-985c-af2eeb21dab0 + adobe:docid:photoshop:ed2e91e5-662a-11df-9b19-cfad73330137 + adobe:docid:photoshop:ee45e307-7e3b-11dc-baac-d64da8706edc + adobe:docid:photoshop:ee642768-5734-11dd-99b5-f5eb48a9ac04 + adobe:docid:photoshop:ee86b539-ba5d-11db-8dd9-fdce7565c567 + adobe:docid:photoshop:ee92a8f0-861b-1178-a541-bc26370db234 + adobe:docid:photoshop:eec6bd78-d21e-11e0-941e-853fe0cd0418 + adobe:docid:photoshop:eed8bccc-7f46-11e0-8ad8-f493d05e0e6e + adobe:docid:photoshop:ef2ce378-2f93-11dc-aaba-a7b78ed4eae7 + adobe:docid:photoshop:ef82f062-1bba-11dd-9b33-9c01ca6e8c53 + adobe:docid:photoshop:f0289bcc-41a1-11db-a2a3-dda0b1a5585b + adobe:docid:photoshop:f0cb01a0-a3a1-11de-9c58-ffad31d74dcb + adobe:docid:photoshop:f1a3d3b1-5862-11d7-8ce4-9c28458ba222 + adobe:docid:photoshop:f1f19329-7100-11dd-b925-9f2002d3bdac + adobe:docid:photoshop:f27ad66b-c9ad-11e0-a263-c502f1c654f7 + adobe:docid:photoshop:f2e23dae-b4c7-11df-aa68-bdebe0189f7c + adobe:docid:photoshop:f3b3dc64-7752-11e1-9829-bb69b0cb9f57 + adobe:docid:photoshop:f5cc0175-39c1-11dc-9dd7-d0c8e16ae9eb + adobe:docid:photoshop:f621b7b1-feb0-11df-95f8-fbdf23b3ba38 + adobe:docid:photoshop:f719a617-925d-11dd-98bf-994e692d3357 + adobe:docid:photoshop:f73ae512-a99e-11dc-8aa4-ef44bbfc8ba6 + adobe:docid:photoshop:f97e61aa-2e80-11db-aa77-95a2275b6be6 + adobe:docid:photoshop:fa47b922-7d65-11dd-88be-f367891bb5d6 + adobe:docid:photoshop:fafbb49c-194b-11e0-8b91-b1a951f4da79 + adobe:docid:photoshop:fb18c43b-666b-11db-8906-a3c683c347f5 + adobe:docid:photoshop:fb49bad6-95a6-11d6-a6ad-c6eadf2ed1a4 + adobe:docid:photoshop:fb5ba27b-0ba3-11e0-a0b2-d391baae5520 + adobe:docid:photoshop:fbc24a36-a224-11da-850d-a0f53d883219 + adobe:docid:photoshop:fc215221-9880-11e1-ba25-d9a62f5155a9 + adobe:docid:photoshop:fcb8b013-7106-11dd-b925-9f2002d3bdac + adobe:docid:photoshop:fdd31a60-2e37-11e1-8359-9d673895aa9c + adobe:docid:photoshop:fe58821d-5776-11df-8604-e5ea32f60741 + adobe:docid:photoshop:ff67863f-fb01-11d7-a4ce-b05c681b0d88 + adobe:docid:photoshop:ffc77a79-c641-11d7-9d81-c34bfa29b8c5 + uuid:00267F385306E011B693D8C402051E54 + uuid:00324CE2898EDD118B91C45503FF100F + uuid:003BF06B1F0EDD1198B6D535C71E3F82 + uuid:003F880ADCB8DD118B9FDB1F9EF18FC3 + uuid:005031CF843C11DE84A9EF77BB03F825 + uuid:0075C0BE4E5EDE119577856D23C39575 + uuid:00785606161EE111A31584B5805723ED + uuid:00C96064C485DD11AAA695EDE0A45C60 + uuid:00D1B9FBEA93DD11AA4AA713E01D8965 + uuid:00D4E6096C89DF11A27283EADD6A0ACD + uuid:00DC3F1ED697DD11AF18AD783C0EA38B + uuid:00E9752D6066DF1196BB85FEA0B60A41 + uuid:00F94DE476FADE11AFBDDD91A537C5BD + uuid:011A12922C2DDF11BA06BA543CB4F500 + uuid:012B2C21C9B9DF119CA8F01C9B0C0333 + uuid:0136DF5E96B2DE11BE2396725C0D2EA9 + uuid:014315f2-930d-cd49-b3d1-988cb41980cb + uuid:0164EC196DEBE011BCD3B9DC84CB7FE9 + uuid:0170068B9E49E011BDF5E7C9FD6E41C3 + uuid:01A4EB9492EBDF118CCDA9AD1DD13734 + uuid:01AF292D8ABEDF11A112D710E3A8AB13 + uuid:01F1A0F611EF11DB881EA6BE05E276D1 + uuid:020FACD0301BE011A9EFC9F735703C71 + uuid:02299D9CF384DF119234BFC76E30A78A + uuid:025A800E203ADB11AD5BF6C24FF19C5F + uuid:0261F32478B9DD1186D09AA78310AF3B + uuid:026C363E0123DF118700FB28C9241F21 + uuid:0274A75BDD7F11DDBA27D6A29DFA8049 + uuid:029715960065DE11835E94D420F09475 + uuid:02A63FF767D3DD11880D9FE2D43F121E + uuid:02BEC8B51D7CDC119756913ADF37171C + uuid:02C12C27E23BDD118B4E963368A39E26 + uuid:02D9B367829EE0118FF8E4E453DB7010 + uuid:02E56BB23746DE118E05E00A924D8CC5 + uuid:02E5C7055C1ADF1191B0945459784CE4 + uuid:02F7B4BB4511DD1190E1B8F39D6CAA32 + uuid:030793878DD511DB866B8FDD4FC5F6E8 + uuid:031123756F7CE111A46CAA872122D6CF + uuid:032642559150E111B0DEFBAFCEA80732 + uuid:0359A552D090DC119D28D3EFCC13785E + uuid:0360EBD7CE30DE119EAAC37C5A47AF2D + uuid:03C660EB7990DD11B1DBB4D7104B66E3 + uuid:03F53EB74DA6DD11A3A5D2BFE4C5EAC9 + uuid:03F78C1784C411DD99D09ECDB70CB873 + uuid:041211BA5EA2DE11A058E82132F1C32E + uuid:041327E724F0DA1197BEA81619CF4F01 + uuid:043D272A4635DE11905BA0931904557F + uuid:0446C88A4A56DC118EB38611B26FC35B + uuid:044B83BC678DDE119BC1AF72C6C78428 + uuid:045F8B34ACDEDC118986CE37F0720C16 + uuid:04733DBE38A8E01195F9F14B578BEAA2 + uuid:047C71B83946DE118E05E00A924D8CC5 + uuid:049B6674521BDF118174D58534E02F48 + uuid:04A3512F3575DF11B1DD9DF2D641939E + uuid:04C30D15439DDD119D3DB10B7AA1222C + uuid:04D4F249D297DD11AF18AD783C0EA38B + uuid:04D5593E132BE011994DCA2DC4361CA0 + uuid:04D87FD7DE5DDE11B30389E42AB163D4 + uuid:04FFD8A371D4DE118A5EE0B24F750EE5 + uuid:051EFA2BFCC7DE11AB38A489D5D89A81 + uuid:055FDCBA146BE011A3A7C1AA075D9441 + uuid:059469661D2CDE11B915E6D79FC5EE26 + uuid:0598C7DB4E72DE119A25926F78CA368E + uuid:05BDBDFBDF97DD11AF18AD783C0EA38B + uuid:0636FCEC2653DF119E0B88A22E798CF4 + uuid:0655CF3B2569DD11A2E0BCF32BFA7CFC + uuid:065A369FC56CE0118B4DD2AD3B632B90 + uuid:067D402BDB17DF11B3C7C23C35F18DBF + uuid:067F0114C5F4DF1181FBFA1FAF58F2DA + uuid:068D809E6D6DDE11BF288490FB12177D + uuid:069423C8F773DF11A361B0AB4D7F640B + uuid:069B39860476DE11AF01DE0AAA4D5B1D + uuid:06AE789055C1DC118FCCAFD862EC21B4 + uuid:06CADE1FCD57DE119AA1DA9EA00F26D4 + uuid:06D210D3AFC4DE1183328664042B691A + uuid:06FFDB37B58FDD118772C9EB7309FCC3 + uuid:07060BF03D81DE11880FE274561DC37B + uuid:0713D437E27DDE11A717CFED235EBF18 + uuid:07218203AADEE011BA4CB639D1A8BD5A + uuid:074CE3E0B88BDD11A113BB1B97AABFC1 + uuid:0753468FE4FFDF11AF70C7635490A833 + uuid:0753FE163981E011B9A0F2EC144E086A + uuid:075A22F177FADD11912DC0461BF0041B + uuid:07602076F775E011807EEB7C09A37754 + uuid:0762D0C4F5E5DE11B564E99D5CBC1D01 + uuid:0769202E525E11DC813CFF9D60E9E4E7 + uuid:07894AAA8F92DD11851AFE68E023F0F6 + uuid:0794504BD1F9DC11843DEE3817AA2F74 + uuid:07980721E15EDD11871DF65AC221ECD9 + uuid:07C636957337DA119F9FDC186F595629 + uuid:0833AA2DD60BDF1180C5C96F984067BA + uuid:0834D93FC8D0DD11963D9658049DFBF3 + uuid:08509C62B2E2DD1190DB8160D5C375F6 + uuid:0853C41F346BDE119ABD9F313386C996 + uuid:0854C63D6DA4DD11B8439A379F2C7659 + uuid:08622E65DCDADA11A86ABF41DACB3158 + uuid:086B51AC9643DF11BAC69E769F65B83A + uuid:086E188C045CDD119922D9DAFF7AFC19 + uuid:089B816F10CEDB1185B5BCE9EEBA6C72 + uuid:08A161B9819DDE11B268F1E9A6151979 + uuid:08A65F7FC8A5DD1186E88C6D82F2A6D4 + uuid:08AA775DF3C1DD11B983BFE3CE432064 + uuid:08CD4728BB26DF11BDEEDCA72E0E76E6 + uuid:08CEC0C97787DA11B97AE2B7D24758FA + uuid:09285A8BF61DDD1182FDA2AF7FA23EFE + uuid:099469661D2CDE11B915E6D79FC5EE26 + uuid:09AD07776280DD11BFAA812D7210D321 + uuid:09CD04E561FDDD11B950D2857154C52A + uuid:09ED009FB046DE1187FFAE0386C4DCB9 + uuid:0A139D1E8A5CDC119A05BD94A54C7480 + uuid:0A1E40AB3CFADE118AEBFC42BC5AC38A + uuid:0A40E1AB9E50DF11B35AA1C8ECF3DC6A + uuid:0A4167D02721DE11AB4BB39481203363 + uuid:0A78D988DD5811DC96D5E716A6F2BCF0 + uuid:0A8DCE8C8C62DC11A983B8DCBC756939 + uuid:0A8E3782BF7FDE118D6DA69028D05C15 + uuid:0AA74C2EF60BDF118C58E8AE28C2730A + uuid:0ACB9C8E8A2DDF118343CC4537EF3C12 + uuid:0AD8E63DCAA3DE11995AEDB6F551D01B + uuid:0AE16DB75F95DF11AF29BDCDCD4A6E70 + uuid:0AF89B04B961E111AAA8E77FC0D3A79B + uuid:0B00D3552B46DE118E05E00A924D8CC5 + uuid:0B17E4EF2123DF11B6D7C6919EC663DD + uuid:0B72A46EE843E1119F82F9795F755985 + uuid:0C29F1288629E1119896CB733EF41709 + uuid:0C3715264646DD1190FCDDF5879A64BE + uuid:0C3D92C4D425DE1191528DC10A240F5C + uuid:0C50712DB31ADE118FB49BF15FA5223E + uuid:0C5B484B02D7DF1193938252AE73DE67 + uuid:0C8D59530D17DE1194DDAA4BA06E12C2 + uuid:0C94372F8E1EDD118308AB1E87B8D093 + uuid:0CB3F764639CDE1183DFC60C032A1A9A + uuid:0CE6EE4B3046DE118E05E00A924D8CC5 + uuid:0D1728EEF60DE011991BE559C243BF6A + uuid:0D2D8D8CD6BCDF11807DC932CF23BA76 + uuid:0D7B49B66A18DE119188DB4702F617D0 + uuid:0DCAEF210B05DD118952FD87B0C5C382 + uuid:0DE5F61D7C52DD1182609162D5FE7927 + uuid:0DFDCF4726FBDD118F93BCD1B73D932E + uuid:0E04B6977685DD11B04B9ECD07049184 + uuid:0E387A182E46DE118E05E00A924D8CC5 + uuid:0E4C8D3F65C1DD11A10D9EA243478893 + uuid:0E6C4060E6ACDC11A31BE2F1875A55F1 + uuid:0E7DFB1C72B8DD11943BCD86EF18B9D2 + uuid:0EBAA688D0CFDE11B6D9E55E3FEF88C5 + uuid:0EC1D3E93146DE118E05E00A924D8CC5 + uuid:0EDE5F367F62DE119614CE358077696A + uuid:0EF7824E1CE7DE11A397A6E3E44FF9E3 + uuid:0F1A965EA027E1119B0C8D95D3C76BE2 + uuid:0F522B516811DF118A4AAF7E05FF69CD + uuid:0F5449A8512CDD11AEBA954637559459 + uuid:0F6E42F71D46DE118E05E00A924D8CC5 + uuid:0F81D42481C0E01188948BE4733915EE + uuid:10128C19C130DE118971F9A58BAAEB50 + uuid:1017E02B7C15E1118047D856DBDB8E75 + uuid:1054D978C0E1DF11AA8AB303BFA5E6F2 + uuid:105B484B02D7DF1193938252AE73DE67 + uuid:106F5789EEDEE011B872DF47B34C9F1C + uuid:1076B691BF78DC11BBCCBE617C756E16 + uuid:109A217E9248DE11AB5B8F95D972F6B3 + uuid:10A27F23D9D9DC1185D79E21D518B377 + uuid:10CD874F902CDE11B6DB910BFA10DC7F + uuid:10D9DC303346DE118E05E00A924D8CC5 + uuid:10ED4A8D21D1DE118D65B3AF9C7CA0BF + uuid:10F217C490B9DE119AE3890909042E9B + uuid:10F650297D72DE119793DA73B56F7EE5 + uuid:10FA2648333CE41189DFC0D869272DB5 + uuid:10FC14E1C67FDE11A17AFEE502ACD834 + uuid:10FFB0964AE3DD119EE389B3EABF1030 + uuid:11040FDFA5E7DD11B2C19E6660EE43B4 + uuid:110500CE77B0DD118BB88B63F587CB88 + uuid:11056C5AF55AE0118DE98213B6FC8AC1 + uuid:11D278A8D01AE01180B5DBFB30EE2E80 + uuid:121FBFC8FFC7DE1197EFB82A9A47DC91 + uuid:122E5FAA9713E01198BBAD67D2C5160E + uuid:12454606A5BEDF1185A8DF032299182B + uuid:1258D3615DB9DE11A6F296F6DA9FB0FC + uuid:129F4FB39B2ADE11A946BD87FD2924EA + uuid:12B74FFA1C7DE01194D48966EA8A16A3 + uuid:12BA9F7B4597E011A105A62B9D7324FD + uuid:130B2B74BA0DDD11A439A36C0A600FCD + uuid:1313CF383A84DF11B721DE58AD5D5497 + uuid:13277246F4EFE211AB71F819371C81CE + uuid:135A1960FD64DE11835E94D420F09475 + uuid:138F06AEC9C1DE11992BEC96B6BC795C + uuid:13A8CCA5F995DD11B8F2CF435A9899D0 + uuid:13BBF28B1DB8DF11A53AA0E9AB1C70AF + uuid:13ECFBEC0438DF11B1AF807C8A669D77 + uuid:13F4CA472985DE119204834F8B565AD1 + uuid:13FCF6939014DF11968F956197E31F88 + uuid:13FF97A8853DE0119CA3A4EC00FED126 + uuid:1468E87D6139DE11A665C5BF610EEC17 + uuid:146972668318DE11A828DF31A575CABC + uuid:146C5EB75A12DE11BE778783F05744AE + uuid:14A41BF72E96DD11BF36C964C968D435 + uuid:14AA46F7CE44DE11AEA38D12EC737787 + uuid:14B497EF2769DE11AF868ACBEDA1699F + uuid:14BEAC59A02ADF11AECBC7578FA1C8B8 + uuid:14C354FB2146DE118E05E00A924D8CC5 + uuid:14C90F396FB8DF11A53AA0E9AB1C70AF + uuid:14C97C8048FADB118845D98ED6E0AFE5 + uuid:14D3F5D6A14BDE119E93D454F500B452 + uuid:14E9C81292BA11DBA08880B7A11CE381 + uuid:14F55B529ABFDF118C8484887865808D + uuid:15184F57-A4C6-4398-9B40-11772084183A + uuid:153FBF43E421DD118DE6805E4FAF4697 + uuid:154B03D2AB30E011954AD2298E8EFCE2 + uuid:15553F6A9213DB1180BDFBD3D4018BA1 + uuid:15578F2F1E86DD11AF96B6D037A279B9 + uuid:156336021B56E111B606D6F4FCAC7F76 + uuid:156E6475C340DE119125F1A727F694C5 + uuid:1591B38AF13611DEAFD3FCC4561E113D + uuid:1597D557BB2ADF11A9EFC357B5985743 + uuid:15AB601F1AD2DF11A7F393ACB98B3CFF + uuid:15B81E8570D211DBADE0E05661FAF068 + uuid:15C1037383AFDF119792D12E80BC077C + uuid:15F57EF2BB7CE011A76EA1DEBD9ED397 + uuid:16387A182E46DE118E05E00A924D8CC5 + uuid:163894B448B9DE11B0D2ABA9884F4A49 + uuid:16EF8FF6FF7DE1118FA5D722C02C1C9D + uuid:16F823D0A1CFDE11963FA2CB946CFE4C + uuid:16F84B7E3246DE118E05E00A924D8CC5 + uuid:170F1F84CF5411DD91D888E94ACE48CB + uuid:17186A439927E1119B0C8D95D3C76BE2 + uuid:171DA1565CF311DE94C7D3A143DF821D + uuid:17260C2900E9DB1187A489A14823E6C8 + uuid:1733C6F5FF8DDF118C48B1BDE6AABF0E + uuid:1758D3615DB9DE11A6F296F6DA9FB0FC + uuid:175CE6642569DD11A2E0BCF32BFA7CFC + uuid:1763C9B52BD4DE11A675A61E4F11F1F8 + uuid:1777B5906A3EDD119B91B9BB721FB5CA + uuid:17A2658EE06BDF119041CCD6FEE474C9 + uuid:17F4CA472985DE119204834F8B565AD1 + uuid:1818BA45D5F0DA118DA697055230BC2F + uuid:1839546DF545DC119FD0C489666F1FD5 + uuid:18580CD102BBDE118D069AA3117B85FD + uuid:1859A6517AFEDC11ACAAE04F4DEEAF1E + uuid:186C5EB75A12DE11BE778783F05744AE + uuid:18CFD259CAD8DB11BD8EB5761D5E79A9 + uuid:18D16A9F4BDFDE11BBE28A11B52AAC2D + uuid:191A78DF66B6DD11975AF89C8C4FA88C + uuid:1948C03EA6F8DD11BF1890552B68C8DF + uuid:19501508E2EF11DD8BECCB6B4552BEA7 + uuid:196336021B56E111B606D6F4FCAC7F76 + uuid:199757E762C6DE11A6A9A6437FD9E2B9 + uuid:19B168241E28DF1194ADB5651071CB46 + uuid:19BC4CDDAD8811DDA9A4E814011A2FBC + uuid:19E481E24BF3E011B6959C2B2BA839CE + uuid:1A182B88E7A6DF11AA8F989AA3164D57 + uuid:1A2F12EF7FE6DE1190AEBAF6332FC6C0 + uuid:1A8F74B1065E11DE881197396C840813 + uuid:1A90A0BC8910DF11A361C9C7E1E4E901 + uuid:1A99EFEE3704DD11AB26EBC6F08A7A32 + uuid:1A9BDB007D5DDF11B8CAB8619C2B5907 + uuid:1A9F1B6E2D46DF11B544CA8ECC118138 + uuid:1A9F85581347DC11A96980007D7B6209 + uuid:1AAC8C5C9F55DC11A046A5B91F7222B1 + uuid:1AF7AC59B245DF11B544CA8ECC118138 + uuid:1B12345F6BC6DD118292E2654EFCB330 + uuid:1B45EE928526DB119E71DA66CBAAF73C + uuid:1B57F4ED9747DE1183A1D51599C01AD1 + uuid:1B7C61BC861511DE8D7C90F31A0B9BCF + uuid:1BA7F3715CF5DD1193D4B8ED7C4731DF + uuid:1BAA89B7F951DF119FB4A1AA799452E6 + uuid:1BBCE06F587BDE1185E79AA966EFAAA1 + uuid:1BDD26F16268DE1190DCC6DADCD1770C + uuid:1C5B31E30CF3DD119AE9FA7D3E99E341 + uuid:1C680196283CDF11A431DEF2B4EC57DC + uuid:1C68182A4875DE11A992FD2DC6E9830D + uuid:1C79290ECC45DE118B23AD30BCA96A14 + uuid:1C7E078C3B65DD119146F6FC86522DF4 + uuid:1CB80347CD8CDE11B89AE97826E8DF29 + uuid:1CC0A469339DDD1192D3E25231FB5305 + uuid:1CD0C341BFB9DE11AD46ECC15EF6FB22 + uuid:1CDEDB9DF525E111A026DACB304303E4 + uuid:1CF25C713546DE118E05E00A924D8CC5 + uuid:1CFBEA0DD0AEDD119EC3E7457FE35B22 + uuid:1D088BEA1D8BE011BCE4E8B9DAE40519 + uuid:1D4243C97491DC11B124BBBDFFB33225 + uuid:1D468B5A156711DE9D09B95D7469FFFE + uuid:1D6B620BF1BADC11AE1CB82463FA4DAE + uuid:1D6D06A3DC8BDD11911EA1F37D8753ED + uuid:1D6D9ED4F47FDE119793D90A07D6C393 + uuid:1D90BE4363FCDA11AA83B543DC89108D + uuid:1DA07817A968DE118BB9967FD266C0FD + uuid:1DBFCA60439CDE1193CDF929CA1ABF21 + uuid:1DC5EA073246DE118E05E00A924D8CC5 + uuid:1DD86AAE0D32DE119CF5D72B5817FD90 + uuid:1DEACC387EE9E011A00F8FF2EC752921 + uuid:1E02BB75D113DE11A0BAAA5541C46707 + uuid:1E11C42A48FADE11AC12D4AAFE286F5F + uuid:1E152946B76DDC119AD0F42DAE0AAFCF + uuid:1E2D9BC292B811DCAC0BD7CFBA286A6B + uuid:1E3FCF38415CDD1182A9F1CC2E6E604E + uuid:1E6EA8133451DD118E37C8083A71281D + uuid:1E71DF13FDB5DE11B9299E5C971CB542 + uuid:1E91A52C3A1FDF11817FF8EE96F826FB + uuid:1ECF5B4D396FDE118FD0E42A42BA1490 + uuid:1EE73B14201FE011A910B01926703549 + uuid:1EE7DEC2481ADF11905AD1E5E7183152 + uuid:1F14CF83DE31DE11A869B8279779C540 + uuid:1F1BC454B50CDF11925B89C9D7BFFDC2 + uuid:1F26BBD0C345DE1199B1CEAD9076B678 + uuid:1F5AF3B67229DF119FFAB26E240C71BB + uuid:1F7B20507720DD119707FC96415C4EBD + uuid:1F9501B1D304DF1190ED94C038095588 + uuid:1F95AC394748E011BC12ECADEA413AA4 + uuid:1FB4DFF8CDC9DD11A50695ED6C7774D6 + uuid:1FDA3D5BA905DD119988ECFF97F0FCAA + uuid:1FE9FDE0C88ADE11BA2EFD02AC79C3AF + uuid:2021DC31005DDF11B873C075B4FD33C0 + uuid:20323DAF3833DD11B84DB153FFCB2B25 + uuid:203F3588C325E011A825A62899B32AFE + uuid:2055A1C0C07BDD11BBC8FB1C82F02DBE + uuid:206055D9391ADD1185739174F84D64D8 + uuid:20755CD9A1BEDC11AD9FC86910038926 + uuid:207B1D511C8FDA118DDDD88B3A88E03B + uuid:208C44507E13DF11882FD35504085383 + uuid:2097108BBC84DC11939198AA96A9BBFC + uuid:20985270CFFFE011BA1DF91C457D085D + uuid:209BD17CC8BADF11BBAAE0A7039DE8AB + uuid:20A4456CCBC1DE119D73E4AFC11EC4CE + uuid:20AD1BCA27D611DCB3DCF58CB1282188 + uuid:20CA2E73CAD1DE118BBA9D205DC3FA72 + uuid:20DD6643FAC6DB11A46EA4B49D2FDE5A + uuid:20E86765A447DD1190FCDDF5879A64BE + uuid:2116C948F67ADE118ABDAC7576DAA0E0 + uuid:211F1EBF8178DE11B730CD3E72DB3FA4 + uuid:212D58E5143AE011B9AAB74B0E61D369 + uuid:215EAF9294C8DE119FDFACCB24878E07 + uuid:215ED129E2ACDD11AC3C936A2F0190A3 + uuid:21B81FDFE3B0DE11A88DBCB93F5B7576 + uuid:21BEF824177EE011A6C1CB4ABD77E1B9 + uuid:21D2A079BB5BDB11AF7B8BD5E24FC56A + uuid:21EC566FDCD6E311B55CBE23EFE9B9F0 + uuid:221AC57560F5DD11B42B8D7CECE2C827 + uuid:221D353288F7DD11809199F6C55B5021 + uuid:226AE9E80D1CDF11ACEBF49C1510D7E2 + uuid:226B9A3C4F5ADC11974DCB5CB1741D28 + uuid:227BDC9B2FAADC119028943FDADC2D16 + uuid:22809E15A050E111B0DEFBAFCEA80732 + uuid:2292EAFA92BF11DBA08880B7A11CE381 + uuid:229AD25C6B73DE11A73FD0389B748AFC + uuid:22B15C4334A8DE11A2E1D0663C34B73D + uuid:22B35C622246DE118E05E00A924D8CC5 + uuid:22C16BAA5AF3DE11B11DCE9D526E88E8 + uuid:22CC545049E2E0118701D786107F61E9 + uuid:22DE4C33190ADF11BBAB8C350B32006E + uuid:22F39C63E0FEDB11B991B9E549BBAB83 + uuid:2308B10A345ADD11B10AE55D265F3E9B + uuid:230FBF7B385EDD11A73AFB54CA37B984 + uuid:231775077E4BDD119078AC6C9A4185D4 + uuid:235B0F0A31D2DC118CA3B43372E43C0B + uuid:237A384B7BD8DF11BD17BFC74CB96127 + uuid:239C3AD2D589DF119DADA4FA602918B0 + uuid:23A07817A968DE118BB9967FD266C0FD + uuid:23BD3D5E3BF5E211ADA3A5E208A9E7B9 + uuid:23BF9B7776F8DD118B30AE29DFF09C24 + uuid:23D250C79A8FDF118DAFEB51B72C444B + uuid:240F7696E09BDF118943EC7D2E89C0BA + uuid:2416E3E238D4DC11AED8B2AA1E102295 + uuid:24540C8E6E87D81180B9D64C7ADD0A4A + uuid:245EA3048B32DF118350A0C20811A4D0 + uuid:24ABED3B1CBCDD11BD20F9FD1865895C + uuid:24B61BE3C53DDF118616A7E78976E1F0 + uuid:24BE80A7C4F3DD11A950C19DF6C562AD + uuid:24D18A04D310E011992E9E4BFD9175A2 + uuid:24D5A6167CCB11DCA28E84CDBFF0050B + uuid:25048A481828DD118DD0FF6C676D41A6 + uuid:251809F8F51EE011A71DD1885C1A9D12 + uuid:251F98C1BE36DF11B1ACFD0203331E71 + uuid:25F67A383BFFDD11A513940BD66E1892 + uuid:26238CDEA2F6DD11843989A88476A68B + uuid:2634BBCF6B89DF11A27283EADD6A0ACD + uuid:263D0318BDF7DE119830EE0370D6D803 + uuid:265A42E9D899DD119F17F92DFD9B94FC + uuid:265AF96D087BDF11A102F64E4D8DBAC0 + uuid:268662FD552E11DBBFFDB36DCBD91ADF + uuid:268AC8B528DB11DFABAEE711FBFE94F4 + uuid:268CE5F70CE2DB118A41CAFF34FFBBA8 + uuid:269AD333CD73DD11AF3A957A84E536AC + uuid:26B24CA56D6FDF118E49BD52CF84AC85 + uuid:26DF13D2F63ADE11B005C40B5B2C1CC1 + uuid:270A8A835F91E011ABB883B8B670A76F + uuid:27117A02B35CDF11BE5896B9FBB71BC3 + uuid:27CFC5E75D26DF118142ED9929F84ADA + uuid:27D3988D43DEDD118DB9EA210F03F4FF + uuid:27DA59E2AE6AE011A582E337908F6096 + uuid:27F89F1127E2DD118645D3FA1066C7BA + uuid:282AEDDB605CDE1195EC8CC9F75A2E43 + uuid:28403F4BC4D2DE11A11ED550D38F445B + uuid:284D341C3746DE118E05E00A924D8CC5 + uuid:286BA9593551DF119C93EC4D32AACFB5 + uuid:28B85E6492B811DCAC0BD7CFBA286A6B + uuid:28CE38986203DE11BC5FEFB3EB936A39 + uuid:28D51484E9B7DF1193FF89CF001C3021 + uuid:290B84B52146DE118E05E00A924D8CC5 + uuid:29485FC1716ADF11BD4FB02560D9CAD2 + uuid:297736FCCA11DC11A7BCD88A5C508651 + uuid:29B1575EAAF3DF1189E5C6EDCFF7864C + uuid:29B161B0EAACDD11BC2EEEA9E9D24792 + uuid:29B767D2616DDC11A30CDD90E4E89AE9 + uuid:29B912E493B2DE11BE2396725C0D2EA9 + uuid:29C7B102E1FFDF118B82A66050A2E612 + uuid:29D0BB1F017ADD11967E9EA932EF74A1 + uuid:29FFC34F31B4DD11B9C7AFA47E0C6811 + uuid:2A0921B9216DDD11A727A67773091824 + uuid:2A2414B4FF7BDF1198CFFB2CD00526D4 + uuid:2A463B5F2FE6DC1183409B3B045FEE21 + uuid:2A5BA287F51EE011A71DD1885C1A9D12 + uuid:2A77BB85D9CBDF1198C7E2C1557751CC + uuid:2A926DDCDFA7DF118B198306F8D20C06 + uuid:2AAEB2D48CBFDE119191D49F56E81ACD + uuid:2AD564756594DE11B4DDDF1320E4F07D + uuid:2AE709ED03F8DF11A529FEDAD5B043B3 + uuid:2AF32A445C06DD11B6EBF3C8DEE948F8 + uuid:2B09B6BD8C25DE11A3B3A425188CC0D5 + uuid:2B3370A5C0A3DD119E5CE56E71695CC2 + uuid:2C009E5FBE58DF119617B438D38764F7 + uuid:2C205C7E8234DD11A069BF111D61B76C + uuid:2C2589466F13DD119981999D14D29795 + uuid:2C2C306EE5CEDE11818BE1FEB421F2FD + uuid:2C38A646FFC911DFABAFA7B91270F624 + uuid:2C4F78A7552E11DBBFFDB36DCBD91ADF + uuid:2C62812D83C9DC11B097A3AC212109A1 + uuid:2C9BFC031E9EE111B26EEDB938B40089 + uuid:2CB24CA56D6FDF118E49BD52CF84AC85 + uuid:2CBA518212F8DE1181DBB21EA71E42A9 + uuid:2CBA8F071463DF11B160FB17AB5A3AD0 + uuid:2CC438306E8C11DFAE9CA09BE5A960A2 + uuid:2CC9AF1B8E92DD11851AFE68E023F0F6 + uuid:2CCAA1C28F2D11DEAFC8C6A03835B75D + uuid:2D1F05B02946DE118E05E00A924D8CC5 + uuid:2D2135C962A4E0118309FD8A6BC036F4 + uuid:2D25273A86B0DE119B5CFF8B367B49B4 + uuid:2D8572B1B3AEDE11A008A7E469F11D88 + uuid:2D92879BB66CDF119C87CEA1499F2097 + uuid:2DBDD1BFCE1DDF119ABEC149331D314D + uuid:2DBF74503C01DE119EDBA14779040E1A + uuid:2DC804647A07DF11B85FADFA85B832A3 + uuid:2DD16E2382E5DE11B8BDEAD7F96D7858 + uuid:2DE8D2195D4DDC11ADBADEFD96B7F140 + uuid:2DF867AF77B0DD118BB88B63F587CB88 + uuid:2E010474BFEAE0119194B69C52A9EBBC + uuid:2E0A906E1A6F11DE9AFBF59AEA3CD395 + uuid:2E2E14ECE849DD11BE81E2BC2C5AD5D8 + uuid:2E43ACB014DDDC11A60C8EEDA8A8A613 + uuid:2E4C2684A1B9DF119375AA8DDA4C9EDE + uuid:2E5709083740DE11919CA172F93BFBCE + uuid:2EB7D6B7FD2ADF11A13FABD20A7F8C21 + uuid:2EB8440C371DE11195CCE0B8F02A491F + uuid:2F5455219B7EDD11879A94957F462B55 + uuid:2F778142F413E011B5EE89981FE92456 + uuid:2F7828FA4CD3DE1187E48AEAF135C521 + uuid:2F8B1048D214DE119F7CD744AFE539FE + uuid:2F9BFC031E9EE111B26EEDB938B40089 + uuid:2FB24CA56D6FDF118E49BD52CF84AC85 + uuid:2FC0808BAE1DDD1185C1B3B2A073CCB6 + uuid:2FE4D9780F17DE119538FB32DDD803BA + uuid:30010474BFEAE0119194B69C52A9EBBC + uuid:3024EAAF43BD11DF8ED5B2107C3FBC4C + uuid:30383997EB16DE1194DDAA4BA06E12C2 + uuid:304D341C3746DE118E05E00A924D8CC5 + uuid:3074DC40A7E4DD11856FC35EEE701F57 + uuid:30D47C5DDE5ADC11B4BAA7A8812D6543 + uuid:30F7604230DFDC11A009C7FBAA892A92 + uuid:313098C2825ADF11A0198E08A850CD77 + uuid:3174407772D5E0119F3285E28EB04344 + uuid:31C1FD6AE8CCDE11AB7E8CE49332DE0D + uuid:31CB767A8E52DF119F12BB9655682B53 + uuid:32010474BFEAE0119194B69C52A9EBBC + uuid:320235EF3736DF118929DC70EE3E4E1A + uuid:320B3EA61351DF11A90BD77C23B73245 + uuid:320F86551887DE11ADEA95484EA029B0 + uuid:321D6609A479DF11B2AD9C950933489C + uuid:32640C3A5ABCDD118D6BAB9E47FC8CBF + uuid:3276A4B0E83DDE118DDFC39E64C93CD3 + uuid:327A526553C0E011956FC113C0424D13 + uuid:328C2A23A1F3DE1188FCDC0D4534976A + uuid:329EBF14943111DB9A19BF196009E84F + uuid:32AD901C1540DF11BA22EB8390E427FA + uuid:32E02D9E4771DD11A9C183080D597F94 + uuid:32EB3BAD51E2DC118B9A98C8A0DD8215 + uuid:32F27A4EFF1AE0119D41F95FC38C2614 + uuid:32FE362CB049DF119E4BB63B55608911 + uuid:331B0B7AC26EDC11BE2AC07352ECCCF2 + uuid:333AEEF3EC71DC11982DC8D8C57AA12D + uuid:33421D159417DE119764AEE8C622CAAA + uuid:3355E7CBAF53DE11B778C1DBBE1E7DC6 + uuid:3372faef-63e2-4e45-af13-a21757ccbbc7 + uuid:33B325450E83E011998ABD8726E88E90 + uuid:33E941AC1E76DE119787CFEEBC360061 + uuid:33F867AF77B0DD118BB88B63F587CB88 + uuid:3439601D8A0FDE11A2CAE72BEABD280E + uuid:346BEA978CF7DD11809199F6C55B5021 + uuid:34806D4C095CE1119004DABE2FF99586 + uuid:34A7D4A8082DDF119117DE37B5CB7D68 + uuid:34A9E73CDFA8E0119E93E8727EEEFA66 + uuid:34D375543A11DF11A3B9CA0F64C3A9A7 + uuid:34F5B7EE35B9DC11A37EC7EB0B083C4C + uuid:34FC57F66E51DE11B0659257CFE8C8AF + uuid:350A3C1E888FDF11BF5692A67E35D969 + uuid:3542669BC82EE4119025D647D2E25BCA + uuid:3573563CD8FEDD119D4AAACB49469BCA + uuid:35C28732F068E011BAE4A0F3F205CB0C + uuid:35EE06056EB9DE1187E5C224BF607677 + uuid:366000CDD781DD11BDAFF99416C816FE + uuid:366B6A36D2AEDD119EC3E7457FE35B22 + uuid:36777F43D11711DB8BF4A47972CB53F2 + uuid:369E727FB04FDE119777A241E1132B43 + uuid:36B4F67F80C9DF118326B7EBBDF28AB5 + uuid:36CC338DBF03DE11AA85DC89D1FCF295 + uuid:36F21154ABC0DD1186C9DD3C123D558C + uuid:36F5FAE2DD0711DDB5A4E201EFB25468 + uuid:371D007434AADD11AEE088F31D815A99 + uuid:377BE8223C95DF119ECEB27B407F47B9 + uuid:377FD1137FBEDD11863A82B8AB3815BC + uuid:3785128615C5DF118120961C2B385DCD + uuid:37B2DA579BFADC118FC39D64C814E620 + uuid:37DD06A87653E1118422D9075FE29A11 + uuid:37F30DE2774AE011B1A8C64D61E5A5B9 + uuid:37ced13e-35ee-7648-b557-eb3bd97c7617 + uuid:382227419650DE11828EB79B7FF87B46 + uuid:386FFDEC357DD811999DD5D34E33DD45 + uuid:38AA8D455CB3DE119313BA164CF2739E + uuid:38B660BC86EFDD11AED5FB1AC411D2F0 + uuid:38CC4EBE2610DF11A92D9A82229914F8 + uuid:38DAE72B549EDE119E93B2001C8607B3 + uuid:38DF7959A6A5DB11A7C783DEA9FDEF8A + uuid:38EFEBD32C46DE118E05E00A924D8CC5 + uuid:3939B86DDB52DF11880F815F6E810965 + uuid:395996DF12DFDC11A7D6D3E94C05AE70 + uuid:395B108AEC5FDE118F3EC99520DEB99E + uuid:39621CE3BC8CE011A4D4C9EA9FCB28F2 + uuid:39843C2AF9B3DE11AA43D7A50AEA840A + uuid:398E41A15AFBDE11B7CDF0E4012DBF7D + uuid:399642B01C46DE118E05E00A924D8CC5 + uuid:399F32716567DF119EF0D964840D1DDF + uuid:39A85F352346DE118E05E00A924D8CC5 + uuid:39C4C216FFC0DE1183479F46E7309C67 + uuid:39CF581DF994DF118A11F3D01224C1A4 + uuid:39FCA93F587BDE11890CA23DCD66B9CC + uuid:3A1257B30A14DE11959B84A298BCDF8F + uuid:3A13BF707FF7DC11A938E6CA7B9D2F49 + uuid:3A4677815E29DF11A0B087DF897F5C56 + uuid:3A4750C6131B11DD8D56D16FB255F2F5 + uuid:3A4BA5159468DC11A397FA83A3ED7C09 + uuid:3A4F51BF7911DE11A781FBA8671F5E89 + uuid:3A4FA5122068DF118C739672D3DB9AED + uuid:3A5020F1699EDE11B900A5C128F3E190 + uuid:3A67238E5EA6DC1195EFAAE766596281 + uuid:3A77E5D93A0CDF1198BDCFF24EFC6A96 + uuid:3A8CD763772EDE1192ABE09CEE95285C + uuid:3A8F4C7898B2DE11A2A6E16FF807D039 + uuid:3AD5DB0D6079DD11AFDAFBD6DAE6B089 + uuid:3AE66CA7D0EBE01183118745C311CD64 + uuid:3B45663CC068DE119987E81D29C7EAB3 + uuid:3B54F6FA85C811DE8D7C90F31A0B9BCF + uuid:3B601C280D96DF11B3B8C8C117EFA61E + uuid:3B7F0526743DDF11B5C1DB72D3CA2E00 + uuid:3BAD7872C6A5DE11BD07975AD5ACC920 + uuid:3BB550EEB760DD118B47AFEF478E93DF + uuid:3BC7FD3521AFE1118820E4E110893000 + uuid:3BDF22AD8E92DD11851AFE68E023F0F6 + uuid:3BF230DABEACDD11889FAC5282935681 + uuid:3C0D38C2AFDEE011B945C4A423A57949 + uuid:3C3870C6AF56DE11B6838FB143496DCD + uuid:3C6D8B781344DF11BB0FA369B6DB622C + uuid:3C86C36F99FADC118FC39D64C814E620 + uuid:3CB9A609F14B11DEBB0B98898AC608FA + uuid:3CBF4F29B60CDD11BB7794C3A228AE51 + uuid:3D23090D9C37E0119E6CD91BB3286C5A + uuid:3D5103E655A5DF118996AFF35D6A9C7A + uuid:3D5271DA9EE3E0119241C77544CB26A4 + uuid:3D54B8F1697DDF11B5CCA104EFBEC1EF + uuid:3D90B6044FC611DB95D9A98C0E2341EA + uuid:3DB3C619E682E011B77FE30BA566119E + uuid:3E075E7BA673DE11B838DCF729A45C34 + uuid:3E2C6F651640DA119A34C14836D5D6B6 + uuid:3E39232CD32FDD11A356BF52F56223D3 + uuid:3E451D295162DB11827CBBD5A8C451C9 + uuid:3E46F7563C5EDB11B8E7B20751C6FC5A + uuid:3E5C8557AE51DC11A6E5B79CC593882D + uuid:3E61A06F9878DE11ADFDD67EB9DD8C10 + uuid:3E9CC6B6CC31DF11A1388F3D68A4F248 + uuid:3E9E8F840020DF11B9999E84BD7762A7 + uuid:3EADC0BD4023DE11BDAEEDA0936AFBA0 + uuid:3EBDA94D2DBBDD11A646C3AB373230CF + uuid:3ECC6FE3BB35DC11A515DC224F62221E + uuid:3ED246C8D77DDE11BF1BC86AD7862F57 + uuid:3F2B35C03EDBDC118B9C8C618266B9CE + uuid:3F910E2DE01CDE11B3808BA30360FFF2 + uuid:3F9C26D6B875E011860CE7C894C3F888 + uuid:3F9D62A98869DD11BFA59ABA9022A241 + uuid:3FAAB31DC7F3DE11BFB3BB61AE1A198B + uuid:3FC414620066DE119255C9CB7898E199 + uuid:3FEFC5EF1D2CDE11B915E6D79FC5EE26 + uuid:3FF4D3B3B376DD11B6FFF6B467ACD9FE + uuid:3ce61a1e-90dd-4fc1-b29f-b4173e169197 + uuid:400A639BDA45E011BF559022CB68DB96 + uuid:4017B42DAECBDE1186239E156231D83C + uuid:4020FA8B1619DE119DEEDC329FF74F1F + uuid:405855C3070DDE11BFA9BDA3A711317A + uuid:4062B740431FE0119F84DB1DBEC49892 + uuid:40A4072D8630DE11A1F9D7B602DC81EB + uuid:40B56E81A826DE11A84EB468E816AF14 + uuid:40B712FB73EBDF11B09DBF278BD3838F + uuid:40C72BAE0EADDF11B1BFCF232FA5034C + uuid:40C9D1B0881AD411B937BBF615FBDC49 + uuid:4141A21F92C211DBA08880B7A11CE381 + uuid:41617F0171FAE011B1C696904484AE8E + uuid:4171F5CADAD2DE11947188D989F604F8 + uuid:41A85F352346DE118E05E00A924D8CC5 + uuid:41FF5625C39BDE11A1F1B24698F0C5C6 + uuid:4201C5411090DE11B123E1D45CDBF792 + uuid:42094B5B06B9DA11B2CFC5109DB52C8D + uuid:423A64C06FA1DF1192E18DE4AB537F42 + uuid:423FA522794FDD1192F9D239B5B1F9B7 + uuid:4244FD9D456DDE11ACE5EC7E68160F86 + uuid:42718ED7CB7FDE119793D90A07D6C393 + uuid:428D83D84A4EE11194E9BA8DD5E34DD8 + uuid:42A5C6F1B041DF1190BE881BF8159F39 + uuid:42C16E6C044EE111BEB0DF61568E17D3 + uuid:42DB6770318AE0118512FC672962C722 + uuid:42DD77C53BC6DD11872F9A44AC86A51A + uuid:43147600E71EDD1186618D372FE1CE15 + uuid:4338C884434A11DF9C6E94E69C30FD60 + uuid:4366BCFD5E4411DCAF5187387F50543A + uuid:4382A9900333DC11A852E56AE843AF0A + uuid:438D9E113046DE118E05E00A924D8CC5 + uuid:438F59A94760E011885CA2FD40E19378 + uuid:439A35DE2CEFDD11AAC7D161FCEC176C + uuid:43C5FD7A4C9AE1118DBA9268CE062AFA + uuid:43FCD50A8E54E011BF79FF085ADE004B + uuid:4402AABFF01DDC1183A5EA7034A5A743 + uuid:444923672CBADE11A7A688711BFDB9A6 + uuid:444AFB8292BB11DBA08880B7A11CE381 + uuid:4460413A32D9E311B2A5F3F1508E77AD + uuid:446BF93738A8DC11BB31D8D902616E04 + uuid:4478176704DFDD119667920BC9E1E183 + uuid:447D32C22C33E011908B87C104C5EE49 + uuid:4488A6BC79E911DEB2BAA1AD2839AD4C + uuid:44B083B0796FDE118606AA5A1C70E0D0 + uuid:44BEAA3334AEDC118E2EB05A69496DFD + uuid:44CA1EC4001CE011A183DAC2528E5D29 + uuid:44F17DF48A42DF118E41BC88004B2043 + uuid:450780F1B605E1119AB8B3CCC45A50FC + uuid:450916E32C7611DEAD54A9FD8FC07A37 + uuid:450E1866956ADF119700950B663DD454 + uuid:4510D067D0D1DE11B508BD0980519713 + uuid:45272DC83F74DB1190B0FC38EEBDBE9C + uuid:45327FB3F748DD1199EDCE326DEB829E + uuid:4536C8661EB8DF11A53AA0E9AB1C70AF + uuid:457D02955055DF118B59D959D9FCD50B + uuid:458D8F91F91EE011BAA98C5FD404FDDD + uuid:45A5BE313407DE11A234985B6977D949 + uuid:45AE7466D176DC11AFC0D728CABF3209 + uuid:45B952D1A760DD11B3A3AB60E7CB2E32 + uuid:45FF5625C39BDE11A1F1B24698F0C5C6 + uuid:4610D2BB5C3ADF11A1E0EE016E9F3D12 + uuid:462F4DE3D74AE111980CD23DCC274A5C + uuid:4649166503F5E011B5E0F08BB6EC0692 + uuid:468BB993F61FDE1184B5807D8AE68B53 + uuid:46B070169EABE011BB42E88B754C4AEE + uuid:46C6686D7D3CDD1182F5EB7B023EB026 + uuid:46CEB00C101311DF92CAC7279691ABDF + uuid:46E135E06305E011A766E5F2293E7D86 + uuid:46E5046B7D79DD11B6DAD14729559D83 + uuid:47233303E6D1DB11AAA7E40638EEF0FF + uuid:4747ABEF6F24E011AF0581245552D557 + uuid:4749746E7C8DE0118BF2F998D25B0134 + uuid:47D37AECE66BDA118FF0DDBAF48C02B9 + uuid:47DE5278F52CDE119FB3CAAED746FE94 + uuid:47DF11EC3B63DF11BAB3AC558E57D51A + uuid:47FC2DC027BFDE11AEB2CAA2E49F3BF0 + uuid:4849954A43FBE011B1C696904484AE8E + uuid:4852495862E0E311B7EBA640E5A616C9 + uuid:487C01D3D7F6DD11B6E1BC9B8A5E6EE2 + uuid:488E7D216417DF11AB3096DB59BE8278 + uuid:48A8B2611D05DD118D7CF1577DB622DA + uuid:48B966B3EDE4DD118CC3F0407E95283A + uuid:48CE4D616E51DE11B0659257CFE8C8AF + uuid:48E2E61A0467DE118BD2C66A5D598AF2 + uuid:48FDB35EAE9ADD11812FF65CFF7EDE23 + uuid:4926F1CF56D9E311B2A5F3F1508E77AD + uuid:4929C6EF6FEC11DD977D9C04FCB217AD + uuid:497C6A6E6DCCDE11994FB1C7F2EF2705 + uuid:49975262678DDC11A167B261005BE793 + uuid:49CC93E0F05BE011A9F4A2BA52677F1F + uuid:49E81AE519AADE119E69D5ECD2A272D0 + uuid:49E8A66A3BB5DE11809BA989B0D77432 + uuid:49ED06E4B19DDE118E5EF156A9CBBB08 + uuid:4A00A18608A1E011B3F1B4515AF4DD34 + uuid:4A53DB81B8DCDC11AE64B2EEF0C2BA3B + uuid:4A5ECF2001A0DD119E659B943BB8C1D0 + uuid:4A77707CB965E0119BB1BF1F2A175A80 + uuid:4A9A18DDD0B1DD11AF9DD61A7EB49A89 + uuid:4AACA12F3916DC11A3DCA94B2E2CA1CA + uuid:4AB8912B83C9DE118459E3AD70B5474A + uuid:4ABB4AAC934BE11187E7CEC4DA61A405 + uuid:4B0C0D1587B0DE119B5CFF8B367B49B4 + uuid:4B2B6BCFFFB3DF1199A3AFE3C6AE843F + uuid:4B86D0D4C242DC119735F91A2B9C8FD3 + uuid:4B906BAC8E0CDD11874DC9DA879CD4B1 + uuid:4BA2E1D86C8DDE119BC1AF72C6C78428 + uuid:4BACBBC6570FDD11940CBD1331260C48 + uuid:4BD64E3D591ADF119A44816E426D14CC + uuid:4C15E8230D8BE111BF8F834916FB0653 + uuid:4C1C92C0C9EBE01183118745C311CD64 + uuid:4C46E84827F5DA11B202EEF8880A3F9F + uuid:4C4A6A70BF84DC118A3180F5AB0C9AAF + uuid:4C5F65F61B82E0119986B3F1886BA740 + uuid:4C665243F995DE1197EDC24EAB65396B + uuid:4C9EA820830DDD1192DFF1DDC1F2B81A + uuid:4CA61EBB56C4DD1186ABD2BB99273205 + uuid:4CE072411961E011B1F1D164562956EF + uuid:4CF83E991098DF119553D2C99B4F75BF + uuid:4D09B0846C29DF11843DE8ED84598CA3 + uuid:4D47530DBFB1DE11838CB79BB029C533 + uuid:4D9C981BFF36E011B824F4BA8EC19276 + uuid:4DA3455A8A7DDD11BED4FA410A8D5CCD + uuid:4DACBBC6570FDD11940CBD1331260C48 + uuid:4DB2B99C3246DE118E05E00A924D8CC5 + uuid:4DCFE40F97E9DE11B6339E1DC18E821B + uuid:4DE85637B940E1119FD4C5E23B2A6F02 + uuid:4DF93B856FE6DD11B106A45AE2E6FD69 + uuid:4E28CD0BE5B0DE11ACB3A4B3E9D809A9 + uuid:4E2FA201499DDD11A931F983AD0C84B4 + uuid:4E4DB1B71B9FDF11A070D2D746E42BF9 + uuid:4E74715FBC37DE11A4F1CED0418AE169 + uuid:4E92D25D36B1DE11A236926F4718C395 + uuid:4F16598E2DDD11DBA46E8A0EC66A5A53 + uuid:4F32D8247628DF11BC23D16C8254DE17 + uuid:4F3329744D46DF1199AADCF4DFC8E031 + uuid:4F5AED2FA5F8E211B7A5BAC5EF75E8F0 + uuid:4FA964917515DE11A69F844E481960F7 + uuid:4FE5AE1F0FC6DD11B51AD7D09E41BA46 + uuid:5001F74D2A46DE118E05E00A924D8CC5 + uuid:500946BC8B27E011BA68B49C7245E90F + uuid:500BB40AE851DE11BA2DCD786B7C6468 + uuid:5010AC1E8D27DD11AF31B3EF27F2CC6D + uuid:502ADD3C8B13DD118EA79BEFBD19D7B1 + uuid:502D4D912B46DE118E05E00A924D8CC5 + uuid:5050DF8DEF99E1119A9AB97404FDCB55 + uuid:505183C44323E011BE7CD3D8CE9C6646 + uuid:50708FE7576FDE11B8F79BDBF5789606 + uuid:5085FE1C5CF1DC1184999B2D473B40C5 + uuid:50A5F355BC4BDF11A8A3F6410E93A61A + uuid:50B49959137ADE11B76EAA2CEDBA9DB1 + uuid:50E50B33C648DD11A339E617C186EEE9 + uuid:51102D2348E6DC11BA37A1F459320984 + uuid:5120E2187A93DF11BBFEE9D9128ABE86 + uuid:5127FED1F786DC119FA2F4B7532A375C + uuid:513EC2E74E3DDD1190CFED0127C96599 + uuid:5148871978E511DBBF8C80BE1E755C53 + uuid:51668C278F2211DEAFC8C6A03835B75D + uuid:51777E30ACD7DE11A1AE8A388BF11FDB + uuid:519E512F1861E11187DEEC504A15FBE2 + uuid:51A11EEB85A7DD11A19786A77EB54A52 + uuid:51B06CA2314AE011AA55DEC80D63ECBE + uuid:51FAC1DC55EC11DBB358F68EEC69EBB2 + uuid:51FBA147C29CDE11B1079A9D9C34E48A + uuid:51FBDD7E00F9DD119AA2E5CED84BE109 + uuid:5208351752C9DC118F36EE7B133BD6AB + uuid:5213267E7051E011BD08C48DA9CEC38F + uuid:5226730EE29FDC118C71BAD4899C4EC8 + uuid:523200757AD4DF11BE21ADFE6A9CD018 + uuid:524E721CE69C11DCBB7FD5E8B4068873 + uuid:5287358F5774DD1189BBEDA618DBFB25 + uuid:52932D64D71BDF11AC16982006956F20 + uuid:529382E00212DD118D76EB103648E0E4 + uuid:52A5D3054338DF1190DAEFCE2D940955 + uuid:52A83A30586811DEA6F693474E9D4384 + uuid:52B42BFAFB20DD119A8AD7C14E3F5C47 + uuid:52D84CB9CCEBE01183118745C311CD64 + uuid:52E1697C93BADE118056BC8F9753106A + uuid:52E72E233B9FDF11AF0FE66E47C2FAA1 + uuid:52E82184493DDF11A375A1271C301CEC + uuid:52E97A1B64D5DD119B88F3CA928685BB + uuid:52FF2D14337CE011BB5BE51E7B195DE5 + uuid:5315E8230D8BE111BF8F834916FB0653 + uuid:53169050531EDF11BC82E721479CC9C3 + uuid:5344B517DA0CDE11AB76806D8F41191A + uuid:5354B6A5BAEDDF11BBF7AB260196E0D9 + uuid:5372C25B2DDD11DBA46E8A0EC66A5A53 + uuid:53E437D50797DE11B2DABAB77D7740BE + uuid:53E6E71B7203DE11AE6AC00D5D2C4A29 + uuid:53EAD405055EE011B6818D741A0B17A1 + uuid:543507B6D4E5E011BCE2842CD6671D3D + uuid:54352F361D37DD119B3AA406EA888FCA + uuid:54434795E055DF11B2EDD086BAE1B5FC + uuid:5454190B1F73DF11BC75FA5B0ECAF0B5 + uuid:545E97A6E667DE11A86CCC92ECBD291E + uuid:548787E2103BDD11B44BA3B101494242 + uuid:5489824DD7E4DF11804A82E4C5968417 + uuid:54A62783BC63DC118783B3F84F11E122 + uuid:54BE1234F06FDF11B426C797E533A46E + uuid:54CFD6247C73DC118A14E690862E8B78 + uuid:54D94AB18B3ADE118883DEEA0DE3416B + uuid:54E3BAB15595DE1191E8AA31C2B4DE24 + uuid:54F6DD8D230ADD11AB33B9FAF88071F1 + uuid:54F9BB87E58ADD11B72CE8409F29B63B + uuid:551901CAD41DE111A31584B5805723ED + uuid:5534DFB71A42DE11BD46E88EEA587C7A + uuid:556D58241B1CDB1189D5B5EC4E3A9E38 + uuid:5575CE292102E01199D5CBE5A66F2D55 + uuid:5577922C3846DE118E05E00A924D8CC5 + uuid:557E3B3CE135DF119278D380A54DDC5A + uuid:557FB84CA0EEDE1185E0B06C08FF7CF8 + uuid:55BC9C0507B5DE11B9EB889DB186C96C + uuid:55CD7958CCAFE0118BEEE5E6CCFA4384 + uuid:5616A25EBA0DDC118AB39E4FD89F8A1F + uuid:565318E62FBADE11A7A688711BFDB9A6 + uuid:565C30D43A08DF11A61DB227EDDF59F8 + uuid:5675B6062F15DD11A6B89BC3CA334BC0 + uuid:56C3780774B3E4119804D70D8C24DC39 + uuid:56E82184493DDF11A375A1271C301CEC + uuid:56EDCB470FCADD11AB37AD2716A718CB + uuid:5710E290AF4EDC11A3C2F18FD91BBAF2 + uuid:5711C5B92C46DF11B544CA8ECC118138 + uuid:5730D9F9E830DE11A890DC6E06155D98 + uuid:5731D2960C32DE119CF5D72B5817FD90 + uuid:57659E439232DF11A17C9479A9CEE277 + uuid:578299FCC3D0DE119465B96E3C2E2EAA + uuid:57C4806DBD50DE1196358F28B0F95C78 + uuid:57D4D63C0537E011A635EBE38230B841 + uuid:57D84CB9CCEBE01183118745C311CD64 + uuid:57EDF1EE25FDDD11B6F490ABD348EBE1 + uuid:57EEE5B985B6DF119BCA82FEE3258D1C + uuid:57F1D33E2C56DF11B30DB48163AC36A3 + uuid:582EAF0BEE1EDF11B1CA8BA03965989E + uuid:5849D1EB1134E0118F27B36AE699ED56 + uuid:585640F50C96DF11B3B8C8C117EFA61E + uuid:58A9ACCDCA51E1118A9B920149FF9990 + uuid:58B0677D9768E011BB53C47AE8B47638 + uuid:58B81ADF0E84E011BD87EEE6520C6C5A + uuid:58D9A663AC7D11DBA5788A8273CBE291 + uuid:58E2FA9F2F26DE11B6B0F7CD741D7072 + uuid:592215AF5C04DE11AF3AAAD1462E9079 + uuid:59680BA5F854DD119AEE89FFC19F989D + uuid:5975A572B4AFDE1191F9D38249749CE2 + uuid:597B84F680E6DE1190AEBAF6332FC6C0 + uuid:59856D4640B1DD118DF7B36F1271176E + uuid:59AC78EA35F1DE1190138CE5C4DC4184 + uuid:59DF20FE1CDADC1192138BE072AE1912 + uuid:5A02C4E08832DD119122EE9D3120AAF4 + uuid:5A0E58082A6C11DDB925D63A616C9887 + uuid:5A10B6DC8349DE11AA8CDD75966B7C5B + uuid:5A3ED822F519DC1194449891B9CB355F + uuid:5A79E0672746DE118E05E00A924D8CC5 + uuid:5A897E68E330E111B226C2AAC8DFD8D0 + uuid:5A932D64D71BDF11AC16982006956F20 + uuid:5AA2DD231A4BE111980CD23DCC274A5C + uuid:5ABC9C0507B5DE11B9EB889DB186C96C + uuid:5AD62C26C0FDE111B434EAB72059CED3 + uuid:5AD94F0DE91011DB97EC9BDB4F3B5B43 + uuid:5AE14EF24012DE11B18CADD9089DDC7B + uuid:5AE70ACE295FDE11BE52E55D1D4E1AD3 + uuid:5AFD273D9DEEDD1191C79FCB5E5DBD4A + uuid:5AFF2D14337CE011BB5BE51E7B195DE5 + uuid:5B0CD778CF24DF1182C1B3E1B6A83EEB + uuid:5B123CB805EBE0118E8EEB754A336D8E + uuid:5B266B1022BFDB119AA98AF0087C85B3 + uuid:5B3EFA14DF62DD118F47D815D675BDD2 + uuid:5B54CF83D1E0DF1193D0A5DA048B99B8 + uuid:5B5A903A8F63E0119B87E6FF75E31714 + uuid:5B61FB60A925E111A52D8629DB9A6716 + uuid:5B6CC28AD15EDD11B9AE8B3F0765C8D0 + uuid:5B92864BDE31DE11A869B8279779C540 + uuid:5BA460A5B8FFDB118349B120EEE11EA2 + uuid:5BCA3564C8DBE0118AC1AC763345F55A + uuid:5C561980BB9CDA11B3538200CB3144E9 + uuid:5C65D35BBDD9DF11A2F6A2B98B635E7C + uuid:5C6E6F4D7C2EDF11BDFB8CE63EDBAEC7 + uuid:5C7449A48B91DC11831FEBD781B6ECB9 + uuid:5C75B90DD0A7DE11A499C99BFA8DD5AA + uuid:5C986A127BACDC11BBC7AABCBC64A18C + uuid:5CAE9F2FE9DCE011B0C8AB55750E54EF + uuid:5CCACA49848BDF11A453AA458107804D + uuid:5CD3A438158BDE11BA74B59B8E738172 + uuid:5CDB4EA92606E0119B159820566DD0E5 + uuid:5CEA3767A539DC1188C3CD764DFFB8B5 + uuid:5CF6D664301BDF11A5F3F3BD49993C0B + uuid:5D0C528FBA46E01183C8E802910C25E8 + uuid:5D20A57FDA47DF119C37BC94CB7E5426 + uuid:5D49AC245DBBDF11A471D02172341FA0 + uuid:5D62D40A7CB1DF11A305C846CB95C94B + uuid:5D64391711C8E0119BB0E0AEE2D1762C + uuid:5D689DD7E547DE11B32BD6844A0515EA + uuid:5D6E279F0EF8DD11BB0CD202D40FBF70 + uuid:5D7B3DE51812DF119185DEA6EC2AA3B4 + uuid:5D857F974CC1DD11A7EEBAF680EE1229 + uuid:5DA632B544C9DD11AD7E95D98496F8B1 + uuid:5DA6CE83324911DEA1B296A980BFAFA4 + uuid:5DAB2910B2C8DE119FDFACCB24878E07 + uuid:5DC7BCA90361E11187DEEC504A15FBE2 + uuid:5DD313FB8AA4E011B265AEC2CBD63518 + uuid:5DE979530038DD11957BF9CFB2CEE17D + uuid:5E163215F5EBDE118A4381E103E126D8 + uuid:5E552DB6A2C8DE1184529ECE8391BD34 + uuid:5E5640F50C96DF11B3B8C8C117EFA61E + uuid:5E56B5E6C9E7DA11854FB10E85BAC95F + uuid:5E9D9FF3CE7FDF11B6E68ED7E39BB45B + uuid:5EAC046794D8DE119E34886278BAB01F + uuid:5EBD56EDB1A4DD11991BEF5BBF8BD741 + uuid:5ED709A70EA6DD11862FDE6F8E15A5CD + uuid:5EE80C2A41A8DD119E22F96D97BBE6B2 + uuid:5F0CEB4E48AEDC118AE1D2C21B4367F3 + uuid:5F50494D7C49DE11826FBB70EB840DDA + uuid:5F59F0765B9AE111BAF6BC5D99558D99 + uuid:5FFD3B5ABEAEDE11AAA2A05F635BE30F + uuid:602DC4B6EF7DE21187D18E3572F7F96B + uuid:602E96167548DF11B95593FEFB4F0A8F + uuid:604A446A91ACDF119AC1B09FB82EDD84 + uuid:6054B70E5F74DD11830C9B4FA6CBD938 + uuid:6079332DB6FFE0118F6AA19D04677796 + uuid:607D90A22786DF11816BC823D6A7E18A + uuid:608632E43FB9DB11BA9CD1D999EFC0E5 + uuid:608CB9DBF25DE011A01DC5B6BC3F49D9 + uuid:60A7B02C9F9BDF11A20CC8BA9784A882 + uuid:60AD1AEAF96CDF1185BBB7D7C9ACD7A0 + uuid:60B9DCBC2AD0DE11A78B96BBE7615CCF + uuid:60BCB4D66DD6DD11A47DE4DAE0EFF793 + uuid:60D54FABF5DAE0118D368931F8E7C6F4 + uuid:60DA7F358095DE11B601E658958380B0 + uuid:60DB8021EBCFDD119088CB978104D2EA + uuid:60F4973B37A4DF119E73A633E16BA338 + uuid:61A2EFF96CB1DF11A8199587C081305B + uuid:61A4F9502205DD118D7CF1577DB622DA + uuid:61A5A09163EFDE1198EAB6BB1002CB82 + uuid:61D53EF38EE2DD11BEA9E4896226A586 + uuid:61F6446CD15EDF11B8A0EB190CA24ABF + uuid:620AF59A6568DD11A7E4CCA02A14236A + uuid:62125b08-dfcc-5f4c-8dc1-0da856e0f01d + uuid:6214D48E3C59DD119D2E8C64B76ECAAC + uuid:627D97213FA1DC11AF73CA979672CE51 + uuid:628565B82CBCDE11B5388CAC384C23FD + uuid:628CEE43D897DD11AF18AD783C0EA38B + uuid:6290A8977547DE11B93CFB99A6597AA0 + uuid:62B506798141DE118219B87BD895AD96 + uuid:62F104260F17DE119538FB32DDD803BA + uuid:62F99A3A85D0DE1184B7A269305F3CBD + uuid:62FF93169DA5E0119FD4DDB624F429CB + uuid:6309E53E03DADD118D71CAED85A44702 + uuid:632BE4FAEA3311DD8EEDFE841226BA5C + uuid:632BE502EA3311DD8EEDFE841226BA5C + uuid:633D91293024DE11B02E947BAC2E0059 + uuid:633FFAC25C35DD119B3AA406EA888FCA + uuid:635E9EBEF6E4DC119A659E0C947A75A5 + uuid:6367FD463646DE118E05E00A924D8CC5 + uuid:63776ADF4E19E1118846B5A7044383F6 + uuid:637D8D5D341EDE119D80CA227FB50799 + uuid:63851F4AA41DDE11AD9583101582958F + uuid:63861C9059E0E311B7EBA640E5A616C9 + uuid:638EF3A07C77E011A9F9C950ACF4D776 + uuid:63BB1A6BC782D811B488FE8F5B5CAC8E + uuid:63C475A288ED11DEB3FFF614CCD16C87 + uuid:63D2CCF573C5DF11A894FDF01CDD3577 + uuid:63E334FBC0BFDD11990DDC426F9A3A18 + uuid:63EC84B0B4E2DB11A6008A0645B59B86 + uuid:63EEEBCF70C611DBADE0E05661FAF068 + uuid:647D11D188B0DE119B5CFF8B367B49B4 + uuid:64920ABD2B62DE11B8AE8223523EF53D + uuid:6493F86C90D8DB119313A4DBA67E5958 + uuid:64A02ADA8C1CE111A909E85151E407A9 + uuid:64BD56EDB1A4DD11991BEF5BBF8BD741 + uuid:64DD01C89ABEDE11B5CEEEDFD4C3775A + uuid:64F0DA741DD8E0118856C1A207878516 + uuid:650398679F30E1118DBBF5E8B0A19711 + uuid:65169CCB345EDF1194C8D9F78654422E + uuid:65656CF46C6FDF118E49BD52CF84AC85 + uuid:65A58184AD03DF11BA1CFE2E2459F90E + uuid:65AB241D3553DF1199A0DA6B21F450B1 + uuid:65C61CE51BB5DE11822DB36BA0003BDC + uuid:660B4E2BB935DE11BA2FCF692F4F07DA + uuid:661473754A5ADE11AFC4F72E3BAE02F8 + uuid:66211d2a-e75a-6349-9313-114dc4ac619f + uuid:6665CDA9C1EAE111B6D190495D8102E7 + uuid:66E6ECE82F24DE11B02E947BAC2E0059 + uuid:66E770C8D883DD118567FD7DB7D1FB68 + uuid:66F104260F17DE119538FB32DDD803BA + uuid:66F312185D2FDF11AF4DB3E5AF59FA3A + uuid:6700F56AFFF8DC11986EC4C2F9D214CF + uuid:6704018659F6DD11BD06D93DA164657F + uuid:670D72CC3906E011B693D8C402051E54 + uuid:672190ECD13811DD85EDA6A1351547CB + uuid:67219B3D0143DE11BD46E88EEA587C7A + uuid:673A03981295DD1180D5F0B463498936 + uuid:674D5E42B2DEE011B945C4A423A57949 + uuid:678E63CC0395DD11BE5ECA6240496630 + uuid:679CAA331823DE1186CE9EE1E91B0BF6 + uuid:679D36A497D111DE9BE785C9470EE568 + uuid:67C439660F1DDF1188CEEC13B25A13F7 + uuid:67E7B4E52E15DD11A6B89BC3CA334BC0 + uuid:67FC16F71A16DF11A63A8049DFB768EF + uuid:6809E7A0C53CDB118EAB9E97FBAA3AC8 + uuid:684A446A91ACDF119AC1B09FB82EDD84 + uuid:68606F71231911DEBBC28EDA2C7DFB2E + uuid:68656CF46C6FDF118E49BD52CF84AC85 + uuid:689A3247EF7CE0119B6DD4AEA2E171E2 + uuid:68B93B8CEBF8DF11A92BC0ECBBC322AC + uuid:68C910F7FBE3DE11A416F0FE1795F9EA + uuid:68CC69B2EAE9DC11B568880105E2D85D + uuid:68DDFCCD377FDD11958095E49FBC919E + uuid:68F38B820194DF11931EA5A69C5684B1 + uuid:6907772B4D09DC11944DB5918AC7A0A1 + uuid:6922E29B5985DF11B4779C1A60E25466 + uuid:693BEA6CB8A6DF11A082860CFDE3F28E + uuid:69579B967830E1118DBBF5E8B0A19711 + uuid:69611EC3598ADF11A629EF409444B735 + uuid:69C2C353EF69DE119F30B13BCA98028B + uuid:6A1DE2471E8DDB11B96FD7C309122ADC + uuid:6A2F1E376B39DC1184A1E178A25FD2DB + uuid:6A34B7D3AEABDF11988BBB8DA5E22A4A + uuid:6A3788CD4B55DF11BAD0970D7B52CA06 + uuid:6A3E306863B2DF11A5F1CAB363841A55 + uuid:6A44313E8320DF11AAEFD6BF1D83E716 + uuid:6A6D4B9DD3BBDE1183F9F5180F278EF5 + uuid:6AA915195CC1DF11967896E4F618D8B7 + uuid:6AB118841961E11187DEEC504A15FBE2 + uuid:6AD4462FB204DD11A4539B8A658B95AB + uuid:6AD75BDA3B06E011B693D8C402051E54 + uuid:6AE53E90A6A7E111B9E1EE3B40D5FD8C + uuid:6AF52E716469DD119F2387C43516D143 + uuid:6AF68A2982B6D811BF96B330BA282B8A + uuid:6AFA35A577A8DC11AA4BEC6859C219A9 + uuid:6B028551DA31DF11A1388F3D68A4F248 + uuid:6B0650352A00DB1189D3A93B152E5FB2 + uuid:6B26E6F714A3E011B8F2B39CADF8C7BD + uuid:6B4D5E42B2DEE011B945C4A423A57949 + uuid:6B4EBD301729E011BDB8B17BF9998B56 + uuid:6BCCF93849D1DE119A839ACF3453A53A + uuid:6C05E3B396EDDF11B489AC34B4567E88 + uuid:6C149FC76466DC11BA48DBFAEF377EDF + uuid:6C1CEE99FF0CDE118B60808686D1CDA6 + uuid:6C46A34AF5B8DE11889CC23010905187 + uuid:6C707EB54C4EDF119BF69F5E7CC385D4 + uuid:6C875D7786AD11DBA35CA8F2CCD0B6EC + uuid:6CC213C806B1DF1196549C1A5C3AEAE5 + uuid:6CD54A3DE920DF1182CF9F5F63B268F6 + uuid:6CDA74E0861411DE8D7C90F31A0B9BCF + uuid:6CF3A73DB811E311AFA3B7E70729DB1C + uuid:6D96DFED2292E0119552C0C7D4DAEE3A + uuid:6DA6DF352DDBDD11B5B3DCB8F8903BE9 + uuid:6E042BB548BDDC11A44B81E4D3FFFEA0 + uuid:6E43BDE8FAA0DD11A8C7800146D9F2FD + uuid:6E47E0D0A3C911DD990ED023CA6AD342 + uuid:6E6799D7E44CDF1189FACC6921078130 + uuid:6E7775B65AB8DF11A53AA0E9AB1C70AF + uuid:6E7E4623839EE0118FF8E4E453DB7010 + uuid:6E8A7B9747E611DFB379DDDF4A362F97 + uuid:6E8E25C3648CDD11BE33CBB503803A0F + uuid:6E981E34677DDF1186D7EE6F854EC0A3 + uuid:6EA0789F003D11DDA6F2916B8F86961C + uuid:6EC910F7FBE3DE11A416F0FE1795F9EA + uuid:6EDB09A4EF99DC119FDAE1E6C9E90D52 + uuid:6EFD559AEDD8DE11BABABF60D7D7EE0A + uuid:6F0C51E18A5FDF11B6C6A84C08FFDA77 + uuid:6F5C782E2C9CDC11908C9ADAF87FE933 + uuid:6F6AD1390F40DE118A72C5A244CD82BC + uuid:6FA0A1734ED9E311B2A5F3F1508E77AD + uuid:6FA18C6BD75FDD11BC2CCAE56499F7FE + uuid:6FB0B034EB2CDE11A5FDD6FCF0A49B17 + uuid:6FBEB39B92A5E0119FD4DDB624F429CB + uuid:6FDCBDC9ECD1DE1198AC9AA9D2A3A8B4 + uuid:70066A600EE8DF119E37F514B980F394 + uuid:701F0AA1DC0FDD11B6B0DA6D17610842 + uuid:701F387CD3B7DE11B166A18981CBF27A + uuid:70267229FC18DF1199E9ED583FDA18B1 + uuid:705211814023DE11BDAEEDA0936AFBA0 + uuid:705DF8547137E011B570B9A1CFA13E00 + uuid:716920431B2DDF11AD92BB8F5DFDBC23 + uuid:717A6CAC5E11DB118A17B9396297A9FD + uuid:71B724FCE7D1DC11AB7C8BDDCD744643 + uuid:71B93B8CEBF8DF11A92BC0ECBBC322AC + uuid:71DD117642FBE011B1C696904484AE8E + uuid:720FE6261C56E111B606D6F4FCAC7F76 + uuid:722C0EBA10B5DF11B572A42404FAAE8A + uuid:722C4219484211DD8D28CD27990540EC + uuid:723644E9E3FFDF11AF70C7635490A833 + uuid:72383AB5DC06DB1188D0A56F0F9FAC9B + uuid:724AE4CE4751DF118BACAC06093E0BB4 + uuid:728CE62B1490DE119DB4AD4E599C7C23 + uuid:729A9F6B794FDC11946FC82B61223C02 + uuid:729F28DE69F4DC11AC2380CCB6841119 + uuid:72AC3E9FCEA3DE1180DB912BEB33D0D2 + uuid:72AD3ED38871DE11907DD58D2A428021 + uuid:72B60E36B44FDF11880F815F6E810965 + uuid:72B6C1A6AC87DE11AB5898EA51CEA5CB + uuid:72BAB42AB8F511DBA0B48960EE8E18AC + uuid:72E5D0AA8F93DD11A47C9C555ACA1D27 + uuid:72F0D735D2C811DDA759FF49D9A5A963 + uuid:735432F83446DE118E05E00A924D8CC5 + uuid:73DE35BD917FDF11B8D5C719020C59D1 + uuid:73E967A54765DC11A8BDEFC7140AE621 + uuid:742AAA0A1C9BDF119A90DDF60BB2FCD0 + uuid:742FDDCAF0BF11DB96ACAB58D2874C3B + uuid:745211814023DE11BDAEEDA0936AFBA0 + uuid:74541EF36C18DF11990DBF7357C10B02 + uuid:74628825F9A811DBAE18D149C142ED49 + uuid:746583581EC811DEB82CD8B338B01D3B + uuid:748835C3C9C3DF119097A6D1ECBBEDE8 + uuid:748D3C73C8B4DD11AEA1FBAA933E7B70 + uuid:748FBBC54761DE1199DC9982344E391A + uuid:74A1D27CCD37DF11AFFDE7A59348A8D0 + uuid:74A5CE9DC691DA119F92A8F9CB206A4E + uuid:74C3710F93D3DD118C1BE75E92D17F03 + uuid:74C5A1E14288DE11A7198C2D5D7A998B + uuid:74F096ADA995E1118146A6E70C0A502E + uuid:74F4F7A9E7F6DC119B47BDAE2A94F6FA + uuid:74F5F9ED648411DC9376EF86AC1B9659 + uuid:755DAEA60B58DD1191F6A08BD046A794 + uuid:7569E2563B4ADD11B0D48EA2D2D65542 + uuid:75889B152262DE11A72AF16963CD89BB + uuid:759A9F6B794FDC11946FC82B61223C02 + uuid:75A92606CC11E0119B3B985CD32CD324 + uuid:75B6602CACF1DD118629BCC78C5D8642 + uuid:75B7239DC2E2DE118A78F10A17E74984 + uuid:75BA6EE02846DE118E05E00A924D8CC5 + uuid:75DB83236C2BDE11A85793B26680797B + uuid:75DCEEF5501BDF118174D58534E02F48 + uuid:75E80B316579DF11A939CB8B2C636ED9 + uuid:75ad37b6-8a37-4fcd-a4fe-26f1aa1f11ab + uuid:760170412552DF11B0F7C22ED86D29DF + uuid:760FE6261C56E111B606D6F4FCAC7F76 + uuid:76267229FC18DF1199E9ED583FDA18B1 + uuid:7650D21DCDCF11DCBFE2B608DC9C5868 + uuid:765BEC323D10DE11BFD1F4DAA7F5E1C3 + uuid:7663CD29DE38DF118E03F1276F110EB3 + uuid:766D6EF86584E1119E8CF1B724FD8929 + uuid:76BA7252CB38DD11B12CCC48D4418D88 + uuid:76BC578468B7DF11A53AA0E9AB1C70AF + uuid:76E62AB1A1A5DE11BB97BC93DBC30F5A + uuid:76F79CA096B7DE1183488B0B74824E03 + uuid:770B1082B893E0118CB0F59C7843496D + uuid:770F6D6734F5DB11BB6C8A95A88B3144 + uuid:7726580E30E0E011A0DFF1A921A77D14 + uuid:773B38FC63F5DD11A6CCA9C34C143D29 + uuid:77487EFD3F1EDE11BE0F804836E9F523 + uuid:775D34DED925DD11867CC8DB1637346A + uuid:77668D14913FDE11A84FAF00E7C8D0F8 + uuid:777A1E7F9F10DD11BA7DA0DCEC4DD3D6 + uuid:77D8B7986C8011DEB2D0F9AD5F842D77 + uuid:77EB50A20D4DE011B799927C1DA98FAF + uuid:7803E3799B4FDE1186889A56B9D37497 + uuid:780C4ED894D011DE8EFADE9B15F6E559 + uuid:780F865B5C54DE119184FCEC7E7E1FCC + uuid:781130814856E011B154C845681AE1BC + uuid:781240E9CE75DB1190C8F0FAAC7EB527 + uuid:7816D397F232DE119122E6808B449C87 + uuid:7837951C7978E011A9B1EC2C13060BBF + uuid:784A4C9E398ADC11BB71B35A657F7EA0 + uuid:785BF1A33D44E01196A9FDAA302A4A52 + uuid:786CC4073C01E011B40E84D550759E70 + uuid:787B3D0F0C07DF11BF3BE2D4EE658A9A + uuid:7887807BCEB1DE11AD1DC7B0EFD0B2AA + uuid:78948929B329DD11B93AF0E4356E33C1 + uuid:789D87603500DD11857491263B36B1E4 + uuid:78B6D2ABA647DE1198A09E8ECD1E9DF8 + uuid:78BA610A680EDF11ADD2DC1372773797 + uuid:78D5812A1261E11187DEEC504A15FBE2 + uuid:78E06230DE31DD119D9293E81F0F46B2 + uuid:78E3C7F397E5DF119DB9E4361D824971 + uuid:78F956E9D211DF11A8CAA2358671B5B7 + uuid:792E1E0C1361E11187DEEC504A15FBE2 + uuid:7956DB51E626E311BEE7995AF20CDDB2 + uuid:795C629A9BBEDF11A112D710E3A8AB13 + uuid:7967CEA8ABADDD11BDC293BA3D5189CA + uuid:7972AD8C1461E11187DEEC504A15FBE2 + uuid:797CE7866E51DE11B0659257CFE8C8AF + uuid:7994486DC74AE111980CD23DCC274A5C + uuid:79BF86D0444CE011BCA5DB1616105822 + uuid:79D399B24B31DF11B87EB9B2F774C66B + uuid:79E152405C1FDF118B7AF0AE78A795BE + uuid:79F3974E6DCADC11947C9788F6B39F30 + uuid:7A1A8CDA6753DE11AEE6B02826E52418 + uuid:7A249F7BFEACDF11BC6E8D04CFB3FC6C + uuid:7A53A07034E0E011B6EAB49C9ED7F21C + uuid:7A70E99EB596DF11890D9D7B7F37102C + uuid:7A723F61B03AE01198329764FCC132B2 + uuid:7A7765743160DF11B7058CDA462E88D0 + uuid:7A7E669ACF65E411B159DC7A788BCEAB + uuid:7AAF04222648DF11B2D182DA734D6111 + uuid:7AC55A0AFA7DDD11BDB4D1FB4F0D7360 + uuid:7ACB18E12EFDDC11965FC0336BF324A7 + uuid:7AD5231B137C11DFB8A7B40899CC7ED1 + uuid:7AFD2554146BE011A3A7C1AA075D9441 + uuid:7B45DDBC4821E11193098FCFBECB79D1 + uuid:7B6BCF601B61E11187DEEC504A15FBE2 + uuid:7B9A8086CD9EDF11B7CADF98FCA368F1 + uuid:7B9F28DE69F4DC11AC2380CCB6841119 + uuid:7BCD6BD6D7F0DA118DA697055230BC2F + uuid:7C0400B9C2E7DC118D17CCC8742E2E78 + uuid:7C6375406C89DF11A27283EADD6A0ACD + uuid:7C66DA44A194DF11953AEBEFD43548AA + uuid:7C75CAF8FBFFDD11A77EED9F36437DB7 + uuid:7CBCCECA14FBE011B1C696904484AE8E + uuid:7CE48880D80ADD118A8EC253AF15A20A + uuid:7CE6F5D877D9DD11BABF91115DF9BDCB + uuid:7CF2E5823FB6DD11B210E84373630E75 + uuid:7CFD5111A8CADF11ABD1E3D8151858DE + uuid:7D1B60B03A21DF119A4D994F5DC86673 + uuid:7D1FF20A43C811DDAB33BFB559A80667 + uuid:7D6E29E41E76DD11850AF7EB3662A8FB + uuid:7D6F5DE42C69DD11A2E0BCF32BFA7CFC + uuid:7D7629B9259EDD119ABCD72E43629AFB + uuid:7D82A4D9F538DF1189AFCD2729466985 + uuid:7DC841FC17BFE0118211C0C91C2267D3 + uuid:7DCCEB3E9D0DDF118A1BD62C0D068F40 + uuid:7DD4A0E6DE09DF11BFE7C682DFC5D962 + uuid:7E0C6B95B61CE011955BE2D70037F110 + uuid:7E23C89B6CEFDD11B107B3B656C6BA11 + uuid:7E4EA79E3E9ADD11BB98C8968F13BDB2 + uuid:7E53A07034E0E011B6EAB49C9ED7F21C + uuid:7E88551A16A8DB11B0F5F6FF952672CC + uuid:7EB3FC4CD410DF11BCF39527C07F4034 + uuid:7EB6C214E22BDF118D96F960E4AA3DD5 + uuid:7EBAC78415A3E011B8F2B39CADF8C7BD + uuid:7EBB1121172CDD11915FF91DCAA4909A + uuid:7ECE09F59688E011AC7BD79BC0364F47 + uuid:7F0A1C0146FCDE11BC7BAEA6F800691C + uuid:7F382B6B8634E011AD868EFFDD2AB375 + uuid:7F474F6585F8DF11A328E5224BD5B913 + uuid:7F5A79F70F65DE11835E94D420F09475 + uuid:7F69BFDB9D60E11182C18D7347D5CC76 + uuid:7F8C062E24CADF1184519EAE8F64880F + uuid:7FA43EBB442DDF118EBBD3D000656823 + uuid:7FA7852B908711DD8AA29D8184628D39 + uuid:7FF5EB487C9BDD1195F4F4E8F3EDD6DC + uuid:8002989FF6DCDF11801D843198B46DA3 + uuid:80236287F441DE11AD4C902B4D3EB249 + uuid:802C693FBA6911DEB1D9DA0551F01933 + uuid:802CFFEF79F1DF11BA479126CD0215CF + uuid:803567EE1D88DE118F059539B2801DB3 + uuid:805412B01A28DF11A639F4364080EFE0 + uuid:8092BCC698D6DF11964687E3FDDCAC02 + uuid:80DECBBD2846DE118E05E00A924D8CC5 + uuid:81DD69FB7135DF11986F90A191C30A17 + uuid:81F25C46756EDC11884F971DFF13244F + uuid:81FE76278BC5DD119D98FF2CD2B0A425 + uuid:8202811E44F8DD11A801A115133A3AEC + uuid:8218F7D72BF3DB11871AC1106140771F + uuid:82243FF78E46DD1188D1BDC35DBACA85 + uuid:823002034C69DD119C1F8E912965B471 + uuid:823CA4707B58DF119F3EE4DAA45885C2 + uuid:826A2E21BA09DD118F58BD0430CEBBDD + uuid:82707127ECD5DE11A33BCD810AFBB5AC + uuid:8274AA473E19E1118846B5A7044383F6 + uuid:8274BAAAF027DF1198088BBE228526EB + uuid:827BCE418D18DE1196C5CC9633F19A39 + uuid:82974437155DDD11AF88D6B3F6EFC3C3 + uuid:82B09529C90ADF11823FC380DCAC210B + uuid:82C0F20E8D4CDE11BA9D8C77EC9C18AC + uuid:82C28D806563DF11B5498C89B5BCE50E + uuid:82FC14D39C4CDD11B767FF9B1563083E + uuid:82FC4F42DD86DE11AA0E96069EE00DF8 + uuid:82FC7F201AA9E011861F85DE1F696616 + uuid:83AEB794A6F3DE11A2FCDCF0F5878F17 + uuid:83B5749845AC11DFA995ECAAD6A702E7 + uuid:83C325A3A321DF1195F7D775DE55B86B + uuid:83E8ECD59E7AE1119B47D89068D61624 + uuid:840116378540DD118D29B1400040ED05 + uuid:84079EBB7EF1DE11A94ADCFEB40CFAB1 + uuid:84091EFA24F2DD118DA0F074275F4F86 + uuid:840B0DE6079DDC118247C435CFC136D4 + uuid:8418B9F71B19DE11ACD1FD0D79D1C48C + uuid:8426B111521BDF118174D58534E02F48 + uuid:8441626D4351DF11A00791B2C55D22C3 + uuid:844BE1DD07A9DD118768B99FC80369DD + uuid:8457E1D6136CDB1188D4CA5BD8D730D1 + uuid:845A7B70D71DDE11B2568EB4885C8C0F + uuid:84A2A1015063DD119618FC9322F5EA49 + uuid:84BF1E98A360DE1194C18245487266E3 + uuid:84F3BC90906DDF118FD3BEC75724E431 + uuid:84F685E994B9DD11B609EDFFFA623680 + uuid:850AC4FC1E42DF11832F969BB47BA373 + uuid:851DDA5F51E0DC11BD0A851B3C5DFCF2 + uuid:85650970F5ADE1119AFD8860746D6DEA + uuid:857572CA0ED7E011A34E9BB7C06B5D22 + uuid:85821B08F8FEE011A640CD785C758E2E + uuid:858968A4E5EEDD118414ED400C944065 + uuid:85A1196D737EDE119451AC86C55A028A + uuid:85CA6978161EDF11B3C7C23C35F18DBF + uuid:85CC60B9FA46DD11A598847D94F0491C + uuid:85E161BA2C44DD1190BB81A95BC350A5 + uuid:85E3D91B3170DF119EC7F1D243035CD4 + uuid:860A8578369CE011B3CAD4EF005348C1 + uuid:86266389FE01E011BFE1F9F0CA023F81 + uuid:862ADFFDBC46DF119D20C88E7FC4D9B9 + uuid:862FDA658F52DF11A958DA60E7AF79D1 + uuid:8631318ED591DE118BB0E5D058A15FA6 + uuid:863D29600E91E011B7E2BA43D2041D1F + uuid:864891583BA8E01195F9F14B578BEAA2 + uuid:865A62721A98DE1188E390279EE16E10 + uuid:86931125389ADF119BE6A44B39062E37 + uuid:869C013AAC50E0118162DC7DAAA1EF0F + uuid:86AB4FC9AF8DDF118D1C86278DA272CF + uuid:86B8C0C7B867DF118EA4C7155F4CD8C1 + uuid:86BA82CD9C6DE111BA41F8B455316ECE + uuid:86BBFE785E9AE111BAF6BC5D99558D99 + uuid:86CECBFFD057DD1195779C82C766E2BF + uuid:86E667608791DE119F4682182358AACE + uuid:86F2EA80122ADF11AD4F9E30F53067EA + uuid:86F60DDC1C49DF11B43EBA5BB716FF37 + uuid:87066C19D853E0118A29BF9999E9F508 + uuid:871A6276F573E011AE93F71A5E985A91 + uuid:872F09389114DF1184FBDEC8F1CA128D + uuid:87327FDF9D7DE111906AD27138584114 + uuid:873550E7457ADD11A9A2987509C95C9E + uuid:874583543B0DDE11A88BEAC8DA2EDB48 + uuid:875146C793EDDE1183CCC07478F94319 + uuid:875B18F3C19CDB11BC60C0F809CCB4A5 + uuid:87929005BF00DE11B94CD616E6E7C69C + uuid:87934EA84ECEDA11B28DC60E925C3FD3 + uuid:87B2C25A486BE1118EC2F27559B305C5 + uuid:87CE5E6FC241E011A932CF457C717664 + uuid:87DA9B4F05F611DCA77AACA433C34D1D + uuid:87DEB683D151DF118750883F6EEEDED0 + uuid:87E5A287C6B4DD1190C8A087567A8B86 + uuid:87ECC870A9CADF11ABD1E3D8151858DE + uuid:881538836172E011A72CE40C841B0115 + uuid:88218060511BDF118174D58534E02F48 + uuid:88682ECF5FDFDE11B366D9EF74DE4B3E + uuid:887F5DDAC8B2DE11A554833AE66D7844 + uuid:888EFC12BBA4DC11A788F61F464F954C + uuid:88CDED3A4EB0DE11B8A7E7565DE813D0 + uuid:88D46BA877B0DD118BB88B63F587CB88 + uuid:88D60A9E7AF1DF11BA479126CD0215CF + uuid:88FC4F42DD86DE11AA0E96069EE00DF8 + uuid:88FD67752F33E011A1FD8263EFD5BFFA + uuid:8916C6862DDF11DBA46E8A0EC66A5A53 + uuid:893036DD327CE011BB5BE51E7B195DE5 + uuid:896C0FCBDA32DF11A473B21C49D1757E + uuid:8998E2FC5D81DE11AB10E18A368CBC72 + uuid:89B84021ECC4E01190B18A392A9B2DE5 + uuid:89BB04786B5EDE1186EADD2B5FE8A30C + uuid:89BB70853646DE118E05E00A924D8CC5 + uuid:89F0E57BAC12E0119031D5E9F5418097 + uuid:8A5065397CCA11DCA28E84CDBFF0050B + uuid:8A5E3BF2B486DE11A8829216E4B3EF88 + uuid:8A6A675F79F011DEB2BAA1AD2839AD4C + uuid:8A8991253246DE118E05E00A924D8CC5 + uuid:8AB38CBBFF69E111AB6CA492B0234F3A + uuid:8AB3B33B3292DC11928CDAE88FF0982B + uuid:8ABDC26F8D92DD11851AFE68E023F0F6 + uuid:8AC2275DAF9ADD11812FF65CFF7EDE23 + uuid:8AC8250CBD74E01183B1C3737E3B251C + uuid:8AE0942C7F0BDE119DB88EB82536AC95 + uuid:8AEB8F71CB2FE11187D5FF2759FF64B1 + uuid:8AED5857C073DD1195798D3B4F7019D4 + uuid:8B099B843A24DD118024DCEE8F955B14 + uuid:8B62DEABA2F8E211B7A5BAC5EF75E8F0 + uuid:8B7CC22CEF2DDF11A322D278E98CEB98 + uuid:8B7D18DAD2CEDF11910DE6F1783AED6A + uuid:8C4ED4EEF4B3DF1189EE90C0D8F37DD9 + uuid:8C5B4B0A4FD0DD11B52EED21F1DF153D + uuid:8C632C6BE825DA11BB67F40C32FA7FCF + uuid:8C813F980D99DD118AA6C5B489E8CDFB + uuid:8C8B4F317E1ADF11BABCD74472CEE0AE + uuid:8CB31ECD3546DE118E05E00A924D8CC5 + uuid:8CC1F8A73A29DF119523FC6C855E1CFE + uuid:8CCA28B6E47DDD11AC43D32D64F589A1 + uuid:8CE6F65C17ECDE11A609934B6F4C4ED6 + uuid:8CF1745BD72EE311B717E7997AD90AEC + uuid:8D191EDB08B0DD11BD42822A87D7B2E1 + uuid:8D2597D0EF1ADE1190B6BBC206950356 + uuid:8D51F130C5CADD11A987E58DEF16A05C + uuid:8D62E5C5F946DF11A1ACBC2CD660C212 + uuid:8D77181767B7DE1183488B0B74824E03 + uuid:8DA62EA1E93511DDBC4FD4ACA080B6B9 + uuid:8DD643CE4023DE11BDAEEDA0936AFBA0 + uuid:8DF970660BD0DD119C4BFA6A64CFDA87 + uuid:8E056E78577BDD11A31DAE842E9CE5A6 + uuid:8E16DAC4BB05DE11888EF4B17D2611AC + uuid:8E1AD4B5FA52DF11A113C5E321E870D6 + uuid:8E3257BC3446DE118E05E00A924D8CC5 + uuid:8E4494252FBADE11A7A688711BFDB9A6 + uuid:8E4A02013946DE118E05E00A924D8CC5 + uuid:8E989E87473DDC11B1A2ED5D316D8BC7 + uuid:8EB310146D48DF11BC47A2282310DEA7 + uuid:8F2CC88210D9DF11A208A6B607576EDF + uuid:8F4877B185B8DD11943BCD86EF18B9D2 + uuid:8F565A0C536BDD11A34BC8BC9AB65AA7 + uuid:8F5EE716AC4EE011AB3FEB0F8818ED34 + uuid:8FA102EB434AE0119FAAB45593092C71 + uuid:8FB75E4A4FA5DF11B8B3F8CBC3C22A1F + uuid:8FBAA22158B0DD11ADDB988511291211 + uuid:8FC39AC27583D8119A55FED407C2AAF8 + uuid:8FE1F95A9541DE1187A3B63AEC670B7F + uuid:8FF57772795C11DD8362AF68A3F0A7EE + uuid:9038E1D49704DD11B2ADFED030C0DDB5 + uuid:9041196CFD28DE119B11F18C8D8FF67E + uuid:9075FB5D7206E0119A16D61CA9735FCC + uuid:907C21216D89DF11A27283EADD6A0ACD + uuid:90893A3E31DFDC11BECB86A5B2586ED7 + uuid:909635DE8585E011BC579D1AA12FD193 + uuid:90A480022946DE118E05E00A924D8CC5 + uuid:90ADF7D5398A11DF86119436A17CB227 + uuid:90C481A45ABB11E0A35FE9B1271AFF11 + uuid:90D3557C4419E1118846B5A7044383F6 + uuid:90F1406DEB18E011B3CDA6D635DBC7BF + uuid:91008675291FDE11912B8C0368FFC7F7 + uuid:9101571BD8DCE011A0DFC8304B774D48 + uuid:9123405377BFDF119507C604E91DC3B2 + uuid:9138AA156D5EDD119795C41888D26301 + uuid:9163CBC9DA82E0118B9D8808BF61D321 + uuid:91BB70853646DE118E05E00A924D8CC5 + uuid:91C6B9DD7D1ADF11BABCD74472CEE0AE + uuid:91C85DDBA33BDF11BB2CC26A21522482 + uuid:91D86FED2669DD119E43CF4157C41B3C + uuid:91EE4D01FDA9DD118555BD7879927BCB + uuid:91F0CEF1AE15DE11A231A30135997DBF + uuid:91F2DAB50078DF118E4BF716B2F307C8 + uuid:920948E8D2A3DF11949EEA82414C67FD + uuid:9215C3EEF31FDE1184B5807D8AE68B53 + uuid:924E3F9B6DB8DB1188899228FB3E947F + uuid:929D3EECB42DDD11A88DEA13AC5FAC5D + uuid:92A3DC997F4ADF11A63CAF6D0926EFF5 + uuid:92BF1342BC07DA11BD8486BFA3A58017 + uuid:92C91726716FE1119E57F83DD8EE33CD + uuid:92D135CB8F84E01188F183395E38DDA0 + uuid:92E81588450011DD81B6CD431C59E6AA + uuid:9328A56AEAFA11D98C60DBAABD391189 + uuid:9328FB1C2246DE118E05E00A924D8CC5 + uuid:93312F3A9EABE011BB42E88B754C4AEE + uuid:933FAD025754E011843E9FA26CBDFE3F + uuid:935EDA0EE044DE11AEA38D12EC737787 + uuid:9369042C2F46DE11BD9EE5A6639A625F + uuid:9374A053CD25E111A52D8629DB9A6716 + uuid:9378EAFCC1CBDD118B2BC1A8DC5482A3 + uuid:938BFBE564A4E0118309FD8A6BC036F4 + uuid:93B2CD1BF755DC11BE829A09659DFF50 + uuid:93B74885F527DF11881EA6879E79C74F + uuid:93D62492DF9FDE119ADABFB6E5A37954 + uuid:93E8AD8CBD32DC11BFE2E5D6CE581572 + uuid:93EAD89D899BDF11AE2DCAA2C8CB51A4 + uuid:93F0839448B2DE1191C3C665BC9BDA99 + uuid:94093C2B4EB7DE11A6D7847A12222AAF + uuid:9420197DD22DE111874A9543965275F8 + uuid:9426B64455A6DB1180039536C57E0D1F + uuid:942E46012A47DE11B864E6B1C2F75D83 + uuid:9460F05EC23FDD11B136EDD955FEF311 + uuid:947E5B29DCB0DC11B1FF94697004417B + uuid:9485F6A3A675DF11B656D19BC794C339 + uuid:949A8F3B0E45E011B7D99C20B4D2F19C + uuid:94B31ECD3546DE118E05E00A924D8CC5 + uuid:94DF719847D5DE11A70D8ACD8FC7C51D + uuid:9504C615EEA7E011AF5AA955A1316171 + uuid:9505BA3F30C0DE11A98AA555CE7863EE + uuid:952A33247B74DE11BBA19E5AEE919C47 + uuid:95865F726E47DE11B93CFB99A6597AA0 + uuid:95891EB59205DD11AAA1928F7739FE10 + uuid:958E7111132DDF11AD92BB8F5DFDBC23 + uuid:959B593D52D111DFA466AC7B9737EACE + uuid:95C7828AB891DA119F92A8F9CB206A4E + uuid:95CEA895A0C7DD11B3E7CF17B82E602B + uuid:95F268FC17B7DD11A6FFDB8AD807E447 + uuid:9603F6864F22DF1191BA98E3D07EA6E2 + uuid:9608057646E4E011BC31DE4AB2040B65 + uuid:964D6FC3F9F3DC11B7B787F67A8DC675 + uuid:9654F15B53EADC118A9B82A0D2DD7591 + uuid:967431A40D18DE1194C4ED4EEB60E7CA + uuid:96805EE10FCADD119C91F06E06802EF6 + uuid:968125ABE6D1DE118BBA9D205DC3FA72 + uuid:9682ADB0A1C2DF11B006CD02B6A7D08A + uuid:96A7271F1842DE11BB6BE96DBBAA8911 + uuid:96DE9C8D8B92DD11851AFE68E023F0F6 + uuid:9727D1E8F908DE11A557F7D361282432 + uuid:9765395A3802E011A2E38D109E2DF167 + uuid:97701BEE8C68DD11B98BD3E072A4A93E + uuid:97870473D4D0DC11AF11999D3F720584 + uuid:979C3692B21EDF118FCCDB0431E199D4 + uuid:979E80F12C46DE118E05E00A924D8CC5 + uuid:97E23D2C4B12DF11ADBDB3D48DA81215 + uuid:97FB7C9F8D69DD11BFA59ABA9022A241 + uuid:98169ECB9DCCDD119091A7DD04C2E1F6 + uuid:982703D5AFDEE011B945C4A423A57949 + uuid:98286303A71FDD11ACEC89ACF33BCD0B + uuid:982B96D05112DE119F39D5F43BF0D954 + uuid:983B6C434D7CDE119878DFC82A890B7C + uuid:984A4BB968EDE0119A32F479DA73362F + uuid:98807E91D3E8DE11811EDDF3D2EE6380 + uuid:9890F1F6D2C5DF11905CDDCA3E291AFF + uuid:9892170647A811DE853CEFEE7BD8937A + uuid:9895DF4E3EE6DE11B8BDEAD7F96D7858 + uuid:989717AE4793DA119173E453ED8FC99D + uuid:9899CD7158CEDE11B441898061B00CC8 + uuid:989EAFDA5EB4DE11BBC5DE6B5B9BD029 + uuid:98A480022946DE118E05E00A924D8CC5 + uuid:98C9B1D359C9E01191C1B89B3D3F5F0E + uuid:98C9FBD85A4DDE11A32DD8C2CD3A6994 + uuid:99171AB8F5D0DC119E8CEC75160585D9 + uuid:99383D708DB0DE119B5CFF8B367B49B4 + uuid:9970A6E809ECDC11BAF9E19A48D960FB + uuid:9980D56C8DA1DD11BFFEB5A115D52935 + uuid:99879B42EC37DA11BB10CBF611F5EEBE + uuid:999D0ED6592CE011875FEC74EAED3B90 + uuid:99A724EF2246DE118E05E00A924D8CC5 + uuid:99ACB062A6F1DD118629BCC78C5D8642 + uuid:99BC43C5789DDF118943EC7D2E89C0BA + uuid:99FD390A558CDE11AFBFF24C763D230F + uuid:9A0A33331EE2DF11B8F0BED301E9E155 + uuid:9A42583CC1A0E1119FE8BB1DBF2BCDE9 + uuid:9A4E3BC73346DE118E05E00A924D8CC5 + uuid:9A58B28BAEF6DF11A26E92D6DB19DE3D + uuid:9A7015542E46DE118E05E00A924D8CC5 + uuid:9A852FC218CADC119D59B5BD9DB71E82 + uuid:9A9382B60D96DF11B3B8C8C117EFA61E + uuid:9AE21B6B4F85DE119FE5D398F21A4413 + uuid:9AF859EEC693DE1187D8DF09AA40F280 + uuid:9B0DBC516C89DF11A27283EADD6A0ACD + uuid:9B328719E711DF11B513AADA86FAD188 + uuid:9B611790EBDCE011B0C8AB55750E54EF + uuid:9B7293F1EE1511DD93458EA9CA57A38A + uuid:9B7DC7169413E01198BBAD67D2C5160E + uuid:9B8169013A6CDB11BEEFDD803C4CB37F + uuid:9B90F1F6D2C5DF11905CDDCA3E291AFF + uuid:9BA7C44F15BDDB11A26E98349C7D0CA2 + uuid:9BF5F9EC4FD3DE1187E48AEAF135C521 + uuid:9C2CCCC08DBFDE11BFC8F73B8A884F15 + uuid:9C2EF9E247E611DFB379DDDF4A362F97 + uuid:9C2EF9E847E611DFB379DDDF4A362F97 + uuid:9C427F29C23BDE118624AC3C981C00EB + uuid:9C4C17673BB5DE11809BA989B0D77432 + uuid:9C790E6801D5DE118393BCC0F49D2243 + uuid:9C9AF8A470A4DD11B8439A379F2C7659 + uuid:9CACB062A6F1DD118629BCC78C5D8642 + uuid:9CB3A59E03D7DF1193938252AE73DE67 + uuid:9CBCF98764DDDC11A365EB903ECDBBF9 + uuid:9CF17ECCA5B5DC11AB10FFD03D5F7841 + uuid:9CFC6B7B2035DE11A097DFFA28BF514A + uuid:9D368817D859DD1199F4B1C075DFBAE5 + uuid:9D4BB8962A6E11DDB925D63A616C9887 + uuid:9D6A9164D41FDC11A97CBDE1A410D968 + uuid:9DC3029D1D46DE118E05E00A924D8CC5 + uuid:9DCBFB406187D8119C44CE4BBEA0A557 + uuid:9DD2035641DCDE11B6B3DE628C0D037F + uuid:9DDBC7358780E011B20B82CD232AAF2B + uuid:9E2B2746A85D11DF988998319CD507CD + uuid:9E41B67C0FDFE011B872DF47B34C9F1C + uuid:9E4265F82CBADE11A7A688711BFDB9A6 + uuid:9E66430EA6E1DE11B1BCEF2DB075353B + uuid:9E87E9D2E30EE0119364FE9A8E7C1E8E + uuid:9EB0BA976D1BDE119C0BC48C4EAA0090 + uuid:9EC4E2341811E0119A159514ABBDE97E + uuid:9ED58FA75D9BDC11A06AF98D3B9E72A9 + uuid:9EE579A8FF54DD11BA56D6B92CC4E8EF + uuid:9EF961D8BBD5DE119A43B4E4BA2C4471 + uuid:9EFC195D16C7DD11ACAA9014241C6D49 + uuid:9F015ED70FEA11DE8097E3A502C56252 + uuid:9F0DBC516C89DF11A27283EADD6A0ACD + uuid:9F3357A71469DE11A2BC95CFBB869132 + uuid:9F60ECFFB0F4DC1199C6F2DF64954557 + uuid:9F71A1DF3646DE118E05E00A924D8CC5 + uuid:9F7AFA590378E0118E7BD624B516CB81 + uuid:9F9056DDC3CEDF11804482FB7885E19B + uuid:9FA09D40BCE1DD119D74D36F607EA352 + uuid:9FACB062A6F1DD118629BCC78C5D8642 + uuid:9FD551B5776EDF11BF4DD0BBD7AA5946 + uuid:9FD950B8C0C7DD1188ACC346309B5937 + uuid:9FF76A7D9582DE11BB37BEE3126CDD63 + uuid:A0035181684811DF8838E22AFB3D55ED + uuid:A03B3C435C72DF118B8C8B68E712E708 + uuid:A03CCF649B0EDF11A0D29729EA0AB6B0 + uuid:A04222E484A7DD118A49CD92ACCC6A0D + uuid:A07E078AFE54DD11BA56D6B92CC4E8EF + uuid:A095DC05BAA5E11199E5E5E46B9FD060 + uuid:A0A49A1D310FE1119A19EE2BC0BD6983 + uuid:A0D36E10BEDFE011AE6BCFD5A31C68AD + uuid:A0E6536C7975E1118D0EAE8116EFC377 + uuid:A0EE4B06DD07DE118694BB95289F583C + uuid:A1423B007B77DE1190D1D387D7A0DA88 + uuid:A152DAF9F01BDF1193908CA4548BD2EE + uuid:A17C584EAB84E111B14E98BF19DDF0E5 + uuid:A18675A22DC9E01190CDCF1D7E0FB496 + uuid:A18701B4B2DEE011B945C4A423A57949 + uuid:A1C4E877620CDF11BA4BC4AC5CBA08AD + uuid:A1C8251B4EF7DF119704DE59D5EBDA41 + uuid:A1D41F019B8811DC89EFE5D00E2EB3E3 + uuid:A201A59A0274DE11AA7AB85E30C2FC4B + uuid:A228C1898CC1DB11BAA7DB2C902C19D9 + uuid:A235FFA43633DD11B84DB153FFCB2B25 + uuid:A2374B6ACECEDD11A59DDBCDE2A0CBB0 + uuid:A24A9E30FC3FE0118413A4FFB8C750A7 + uuid:A254F2A5AE2DDE11A11DA7FFC3615D01 + uuid:A2570F2FC293E0118CB0F59C7843496D + uuid:A26E37B21F2611DBAD06B9F82D8DF569 + uuid:A270FE72B2DEE011B945C4A423A57949 + uuid:A27398073F7BDE11ABB9B46C91A0C9FE + uuid:A2A7BA0F9D6DDE11893E8817AE8D822D + uuid:A2CD62038D56E1119790F60D89140178 + uuid:A2FC8323DCF5DE1199048A670A66C6B6 + uuid:A3040C378CE9DC1182B4944BC3CA1F1C + uuid:A30EDC1BEE4B11DD93458EA9CA57A38A + uuid:A3233D7639A0DD118C4EB1D76F20D61F + uuid:A32A8495FB24E011AD39CD04F92AA869 + uuid:A339CD3D6B1911DF8413A8381C46F68A + uuid:A3601AA68D60DE119947BC0B158CFCA7 + uuid:A3A81857CEB6DF11A9D8F81D08128070 + uuid:A3B0DBF5BA4BDF11A5858FDE593FA8B0 + uuid:A3C769791E08E011A8C7B939F0918B23 + uuid:A3D51830EC09DF11BC90DB220A7381E2 + uuid:A3D6B47F18B2DD11919198E04079117F + uuid:A3E7D1C3A0A2DE11809EBE2E72EFDE06 + uuid:A3F93E99A16DE0118E48C661CDBA1D10 + uuid:A42D21B7F4A3E01196FAE36605008821 + uuid:A44E1E8A87E5DE11B7C581F56C0FB051 + uuid:A45E5F78A83EDD1194B1ED2E1DD97DA6 + uuid:A487C0BB3F0311DA8293A0613B09200B + uuid:A4E07D20784FDC11946FC82B61223C02 + uuid:A51447D0F397E0118C3CC4598C4FA681 + uuid:A52B2BE2D504DE118532A753628E9587 + uuid:A52DD08FE7FFDE11A5E8EAB374A9D84C + uuid:A52FE0D63946DE118E05E00A924D8CC5 + uuid:A54598BD15CADD119C91F06E06802EF6 + uuid:A5B128149C67DF11B5A9F45C7E16B490 + uuid:A5D7AC20A534DC1182A4F3893BDCDC71 + uuid:A616C2F84B63E011B6358B6F88F10CDB + uuid:A6243BD58D77DD11AD11D198EF8B0946 + uuid:A65F66B00938DE11BB3EC722C300E070 + uuid:A66D327A3BBF11DC8215ADC1775D44BC + uuid:A66F4382FB79DE11ADD3A6E829990B73 + uuid:A686048498CAE011B7098A01E40B7264 + uuid:A68C58868DE411DC93E8F3D9B9C3303C + uuid:A69059FC7F82DD11B26983E93780E758 + uuid:A6A3C3BFE4AADE1180C3FD514FD60621 + uuid:A6B8A16E3BB5DE11809BA989B0D77432 + uuid:A6BFA1A45959DE119297EACBC3288FF7 + uuid:A6D059003DFCDD11BE96885A416C85AF + uuid:A7117F10DB79DE11B19BB84F94E0CCE9 + uuid:A75B38B1E7F4DE11AE97A4569C30AEC4 + uuid:A76374A707BFDD118883EBD5ADD733DF + uuid:A76EC4449B50DF11B44C92E5DC5A01C4 + uuid:A76F7547765FDF119F61C543DD152838 + uuid:A7893C1286CFE011B19696CD05366F97 + uuid:A7A9E20EF673E0118809AE2A7E85410B + uuid:A7BCF55494D8DE11A0429B6E61B64A50 + uuid:A7BDDBEF2E1BE011A9EFC9F735703C71 + uuid:A7C0344D922CDE11B6DB910BFA10DC7F + uuid:A7D4F7914470DE11871EB15F76B37E0E + uuid:A7DB0F2D5F7ADF11A201F0B3882AFEDB + uuid:A7DB6D739A94DD118A58F097E7D2556E + uuid:A7E089CA6775DD11A1D8E10A5C02008D + uuid:A7E64BAA5E34DE1180F6F2C73640B1AE + uuid:A7F722B36CD1DE119F22DF992446F26F + uuid:A7FD9EE3BCF5DD119062FCE4238295F6 + uuid:A833BABE193B11DC9659E07D7AF41838 + uuid:A84426686956E111B7E9B837C333A7A9 + uuid:A8693F18B657DF11883DE322E4FC4378 + uuid:A88F207393E3DE11840BA692C2A7A2D0 + uuid:A8CC6194E79CDF11B404D3029BA8DF46 + uuid:A8CD8296D7F8DF1195CC8AC4A9472649 + uuid:A9005AAE8A7FDF119CD6A0C6AE1D8074 + uuid:A9044527F170DC118348B1C841827D44 + uuid:A93CE020031611DDBCC3C7A13D5A1E42 + uuid:A942A041820DDE118028A6D1DED9DC1D + uuid:A98D86C306B5DE11B9EB889DB186C96C + uuid:A98FCD856D55DF11BA0E9527DA9EC859 + uuid:A9C425A063E5DC11AC8F97A22ED8DEE3 + uuid:A9CAB939BA50DA118E20A5D8AE3F4E98 + uuid:A9CD13FD4CF5DD118230C6E95F2EDAD7 + uuid:A9CD62038D56E1119790F60D89140178 + uuid:AA187B412D3EDA11A26F82F0A08C841D + uuid:AA197F2C565DDF1194C1835A9D57A6A6 + uuid:AA231675F4DAE011838DABA44B266DA6 + uuid:AA7C21D0AA19DC119D8DDC9D96BF3B2E + uuid:AA8E7E94A00EDF11B1CCD399BC96A2AC + uuid:AABE1F7D968BDE11B474EAC44E2D6CF1 + uuid:AAC681BF2168E011BDFEC5CFE1B23F84 + uuid:AAD21FC86C89DF11A27283EADD6A0ACD + uuid:AAE704799A5BDF1181458F8016125089 + uuid:AAEF80D4401F11DCAF999F95CF8FA3B5 + uuid:AB0C0C914333DF11A8E6A38A5488C1F3 + uuid:AB3328168103D61195B5B4694E8D0F01 + uuid:AB5101751050E0119324CAE97423559F + uuid:AB548945339ADF119BE6A44B39062E37 + uuid:AB5806885F40E011B364FC729586410D + uuid:AB7F9EA3A314DD11B9D4FA752E6E1EB4 + uuid:AB8E513CC01EE1118D2BB2B80DA226F7 + uuid:ABC311C61CB8DF11A53AA0E9AB1C70AF + uuid:ABC988A0D0C3DF1181D8F87795C0EBDC + uuid:AC044F7E33B4DF119E4CDE3EEC5B1260 + uuid:AC3A32F43CDEDA119FAEB2398213B081 + uuid:AC68EDF120BADE119A3EA3E1A97401FE + uuid:AC7E2C1F2747DE11AB48C7C86FE713E7 + uuid:AC84CEB3576FDE11B8F79BDBF5789606 + uuid:ACA6079AAAADDE119943E9CFB29BB977 + uuid:ACA9AA9E0DB3DE118052BCBDDC4BBCCE + uuid:ACA9C13D6AA0DD11A5CAB0D36BEEFBD2 + uuid:ACC3E0440A2A11DCA760A661BFF3AA01 + uuid:AD0632A8AB68DD1184DABD40760FFC1C + uuid:AD07116B485ADD118D3ABAF5DA48FAA3 + uuid:AD0B20801205DC119DA9FBB57A0509D4 + uuid:AD821971DBB1E01196138AFFE013C41F + uuid:AD96400BA8B3E411BDB08C7CE08D34AF + uuid:ADB4D413D61BDF11AC16982006956F20 + uuid:ADB8A6342EE0E0119500C872373672E0 + uuid:ADDED636E5D7DC119787CD5B25301641 + uuid:AE12EC45B980DF11AFE6F84F86565883 + uuid:AE1B1C89058ADC11B4C0F57A9F5D6694 + uuid:AE2F487015C9DE11ADA8BBEB6FC8D37D + uuid:AE363A6BEA4EDF1192DBF5680431570F + uuid:AE5BE486BF77DC118A089E5735CF5EB9 + uuid:AE6C1573D7F8DF1195CC8AC4A9472649 + uuid:AE86B9CF9592DD11A7FCF60B608912AE + uuid:AEBB2D6DFD14DF11879AB67DCB39D9FA + uuid:AEC760A81484DC11B92CB9EEBDF099E2 + uuid:AEE07D20784FDC11946FC82B61223C02 + uuid:AF6A1371AE9BDE11B5109E00302B6FDE + uuid:AF8402DD060FDE1192A88630B743BA95 + uuid:AFA5DBEBA5EADD11A931E268EEC58033 + uuid:AFA819EF2ACDE0119C30A9820ED76A7E + uuid:AFE5E935C3DEE011BE5CDB1A796662A8 + uuid:AFE67EDB2ACAE011884D9E37FEBCA207 + uuid:AFFEB253AFFEDE11A592862C0BC3D959 + uuid:B003888ABF30DE118971F9A58BAAEB50 + uuid:B00D84D55063DF1183BD84419D5831DE + uuid:B020CABC3411DF11A5D2F026B16F513A + uuid:B032C03CDA10E011992E9E4BFD9175A2 + uuid:B03512E09B7DE111906AD27138584114 + uuid:B03F15927017DD11B06099CEB28FABAE + uuid:B044565411B1E011BBDDA4BFDED1B5E0 + uuid:B095A74D81E7DB11AC04B5FF79B115A7 + uuid:B0A0227237CBE011BEA69117F7DF7145 + uuid:B0C53D6C520BDD119966EC9A5A52EB65 + uuid:B0DBCBCAD693DD11ABCDA2214E815C0B + uuid:B0F4A38D097DE011BBA9E922594FEA2F + uuid:B118FD9C3446DE118E05E00A924D8CC5 + uuid:B130141C66B1DF11AAB8DC070974B466 + uuid:B1314B18E2FADC11A39B8C07975D07B2 + uuid:B14ADCFECA79DD11B934C755FB034F39 + uuid:B16C8A8A6BA6DD11A3A5D2BFE4C5EAC9 + uuid:B20ABB75F339DC11A2B78BD6F70B02AB + uuid:B240674073B5DD11A641E377A27FBD99 + uuid:B25C6DC4BE25DE11BF5DFC1371ADB71B + uuid:B26E3051B629DC119224F138ADCAD003 + uuid:B27D6ADCFC21DE11B453E726CCA5F477 + uuid:B2F06573C541DD118A2BAF704F434930 + uuid:B3055169CFF1DC11815A91FF295096C9 + uuid:B320720DE700DF11B11CD081590171F1 + uuid:B3429378B7EFE011B32DDB1487CCF721 + uuid:B393EAB42B0AE011A2B694EC32AA5E02 + uuid:B3BE52FD4594DE11BDD7E9D308B1611F + uuid:B3D4585C2887DD119E3BBBA19C68A90F + uuid:B3E3235FBA2EDF11A8CDEE796F5F1D8F + uuid:B3E98E28B741DE1185E1952AE13EA390 + uuid:B41227A74635DE11905BA0931904557F + uuid:B41C7011DBB0E011AE3B983D4F76827C + uuid:B43B88D3622CDD11B17BDBCD4E9FF783 + uuid:B483C8EA87E5E0119089CE57AB684774 + uuid:B48CC374F6E2DC1193D6E593F704EF94 + uuid:B494675813D1DD11BBEBBB6A82598937 + uuid:B49C6EF51896E011850BD75508940061 + uuid:B4B219594392DC119738A4556AD6E114 + uuid:B4DC26C8791FDE11AEA2C220ECCC0DFF + uuid:B4E140EE9010DF119AE2E9192EFBF3B1 + uuid:B4E6DCE47067DA11A17B9BA428F6B726 + uuid:B4EC9A2F511BDF118174D58534E02F48 + uuid:B4F77E479CBCDD119E4FC263E5BC28AB + uuid:B4FD302A5F0C11DDB5BDA499E9EA1F3A + uuid:B51AC5EF7691E011ABB883B8B670A76F + uuid:B53967A30F96DF119440FF4D9544615F + uuid:B556D4A30C4DDD1188AAD77433828AA7 + uuid:B58EF03412BBDD11B29DEB80CDD92962 + uuid:B5EEE3B31822DE11BF40A5E1FC1AFB43 + uuid:B5F2402F2FF2DD119B63EFD785E0978F + uuid:B604173ACA61E0118350F554361CF6C4 + uuid:B644964D81D5DD11B1F8E3CC0D3EE224 + uuid:B6490FBD4172DE11AF62A9A557195E56 + uuid:B66A473EAC12E0119031D5E9F5418097 + uuid:B68122B38AC811DFB3B694B92663EFCB + uuid:B69E5EBCAC72DC119E6AC17918198D71 + uuid:B6AAF3D550D9DF118AB0FD3E6363931E + uuid:B6C231BCE14EDD11A8B8E9BD9DFCBE55 + uuid:B6DC8E2AA2A9DF11BD22AB3E95EBC880 + uuid:B6E9C418A29FDE119EF7C54A7376AD41 + uuid:B71494F3DD3ADD119CD2D25E1D6BF99B + uuid:B7665EDF4DDDDC1194AFF7A6573C8769 + uuid:B76EB68CAD18DD119AB3D3F932957A90 + uuid:B7B4910F4EB8DD1184E59192319C769C + uuid:B7E241490BE0E01198E1A253627DB11C + uuid:B7EB47911657DC118A73F16AFDDE94C5 + uuid:B7F8325E92B711DCAC0BD7CFBA286A6B + uuid:B7FA54C069D3DC119030EB72FE5773AE + uuid:B817E0D43CEFDB11B569A5BC76F1A641 + uuid:B850031313CDDD119358D3EBF934974E + uuid:B854A2A773DFE011A3EAB924634D1234 + uuid:B85F311C33B4DD119AF096BD25E377FE + uuid:B86F5A0F32A3DE119998FBA423EDC580 + uuid:B87772B194D9E011833FA20089605520 + uuid:B895BE688755DD11988FA63B048E017C + uuid:B898B90B9F34DF11B05AD64FBE091CB8 + uuid:B89961994B1DDD119AA8D42F7B1E0A84 + uuid:B89DFDB9806EDE1183E5ACE2B85938FA + uuid:B8A0FBC0F036DD11A488DB149422DBCA + uuid:B8A95F8CCDC0DF118FD5A731FCC5A5FE + uuid:B8C63505A65E11E0A0C3D4FA23827C6E + uuid:B8E8286830E4DD118FA0FFEFDA5BCAC9 + uuid:B9137495CA79DD11B934C755FB034F39 + uuid:B918C808210EDD1198B6D535C71E3F82 + uuid:B93D03A93346DE118E05E00A924D8CC5 + uuid:B94A2F9A55B2DE11A0F9DF64D11D0434 + uuid:B971000E3AE0E0118D54AF7EA314E301 + uuid:B976F256E1FFDF118B82A66050A2E612 + uuid:B98A09389573DF11BE79A71338E81411 + uuid:B99C57293115DB1183E59E4BAA67F024 + uuid:B99EA0DFCEFBDA11B4AAB966AB4646F6 + uuid:B9DCABC84C2DDF11BA06BA543CB4F500 + uuid:B9E29516860F11DE8D7C90F31A0B9BCF + uuid:BA4BF4A19D1ADD11BB94AD6677028219 + uuid:BA62F2AE3206DF11A968A912B3EBBF55 + uuid:BA801572353ADF1191B3C84D48B583A9 + uuid:BA900E3463DEDE118D2EF0FA1269A650 + uuid:BAC25C955D33DF11BA37A600EF202F2D + uuid:BAECF3DAC594DD118C2FEAC00FF0F777 + uuid:BB0036272AE6DF11898D818B1246985D + uuid:BB1EF37481E8DC118DF8881DDBB15AA6 + uuid:BB3702D824DBDD11B5B3DCB8F8903BE9 + uuid:BB4B6AE21CE1DB11B2D4CBD40CD4C779 + uuid:BB8F709CB256DE119EE7FD247CBF985F + uuid:BB977796CA86DE11B7F5E2F3C7B268AC + uuid:BBC6539AC3ACDC11B6DBFE53C150A6A2 + uuid:BBD4A7D33CE8DD1182E5CD1755D99AD5 + uuid:BBEC6DED5778DD11AD7DF64204BA6E0E + uuid:BC133943496CDD1191A481F510727859 + uuid:BC15A57D66A3DE11B244C12EDEC35D3B + uuid:BC1FF0EE784FDC11946FC82B61223C02 + uuid:BC2BA5547C6EDD1191E4EE082F6C4F0C + uuid:BC414DDBFFAD11DAAD7A824BC5BBCBE9 + uuid:BC6F3985CBC8E011B22ECBE534F6852D + uuid:BC8EF4B05AE5DF11994DC8E60A96C713 + uuid:BCA27BD0CF96DE11BBF7F583A7922C46 + uuid:BCD38AC2350CDF118DAC9A2C9D58DA96 + uuid:BCEC96F8D3F8DF1195CC8AC4A9472649 + uuid:BCFF09932C50DD11A10282EF7517CCC0 + uuid:BD020971E7C2DD11B9FC85B0D35B73BA + uuid:BD0E68581730DF1184C4FE0C75E02E53 + uuid:BD45C1A0E8C4E01190B18A392A9B2DE5 + uuid:BD55BD62735DE0119428A85E05DCBA23 + uuid:BD62B5D688DADE11ACBF843D1F9FD836 + uuid:BD97907419F8DE11AD29EB98F10A17C0 + uuid:BDE7D3ADA44ADD11B942826B91B46D31 + uuid:BE234C3C7349DF11B2F9E36DD8C8452B + uuid:BE30ECEB6B12E111BD179F49D5EBFE9F + uuid:BE357F6A3040DD11921EF6ECC00A133A + uuid:BE5566532CD511DAA7C7845CE1882A45 + uuid:BE9561B08539DE118C63E240A049DA21 + uuid:BE9E854B4269DD11809B8F080E44D0FE + uuid:BEA495FAFB21D811ACCCAA37804BC0B8 + uuid:BECFD854E62EDF119A548200E7F4D9B0 + uuid:BF4611C534C1DE119DACEBDB2A08568A + uuid:BF720FD8AA43DF11B5A2B0786D4FF14E + uuid:BFC8424DAA12DE11A9C9C4A4424B369F + uuid:BFDC38B07EB6DE11B327E26F2BDE0177 + uuid:BFE21C85AF73E1119367AFD391523801 + uuid:C00595D7595FDE1194738156F5E011A8 + uuid:C01FD3A38EBCDE11BEDBD9ECD054B51C + uuid:C03027DCF6B911DEB712FBA708F835B3 + uuid:C03A1B0038BDDC118A27C228F2C038E0 + uuid:C043891A3814E011BF3EDC499B88E432 + uuid:C04E0AB15F75E3119C25FF07A507AA29 + uuid:C0806E5BFCAADD11AC67AC9B82B603BD + uuid:C08DD06EDF8FE011A372BE2F044B17B1 + uuid:C09C94E695C8DE11A2DDF6A0E509E183 + uuid:C0AE3E4BA232DF11A1388F3D68A4F248 + uuid:C0AF6874BFFEDE11BA268E9760F6C405 + uuid:C0DBC9E461A7E01180CC89AD2CE51128 + uuid:C0F2538A8FC3DD11872F9A44AC86A51A + uuid:C131F3208A68DE11A87BD8ABF4CB75E2 + uuid:C14567548589E1118FBCF608D5F914DF + uuid:C155AB1115D5DF118B9498D786733505 + uuid:C1916AD393B7E41190C0B6F201ADAFD2 + uuid:C1B608EC9BE6DB1190B4B6BDB0B2B315 + uuid:C1F795C32F02E011A0BCFC60426D45BA + uuid:C20D5D23A40CDF11B50FD964665DC834 + uuid:C22DA473F011DE11B18CADD9089DDC7B + uuid:C25149FB718FDE118FFB90D72E729FC2 + uuid:C257517D1F40E01191FAE760C1DD11A6 + uuid:C27E7A7DBC4CE1118327DCAF7B4E567B + uuid:C293657DA832DF118B1A875AFFA58370 + uuid:C2C8BC84C4C0DE11AA779A12FD7117A8 + uuid:C2C8BD1686FBDD11AC32C13ABD83A143 + uuid:C2CA6C293579DF11B2AD9C950933489C + uuid:C3093F976E3ADF11BD63B063958AE9FB + uuid:C30DE5C9C209DD118F58BD0430CEBBDD + uuid:C336C9E1F506DF11B993D25DE56CAB26 + uuid:C367524D2ADADC11A6E9CC930E32BA8C + uuid:C37812C84F17DC11B314C676ACF00231 + uuid:C399988AAA2BDC1199188DD31C244FD7 + uuid:C39A6278122EDD11AA7099BD4C23D098 + uuid:C3F303FED2CC11DDA759FF49D9A5A963 + uuid:C3FA83EA45A8DC11B95FA470D5009D93 + uuid:C3FD8906A23CDD11818F9D8D7AE21979 + uuid:C44DF2AFA321DF1184BDF6EB09B147CB + uuid:C46A802BFEEADC11B34CF8282F71A33B + uuid:C47036D7DB8DE011B0A595025F357B42 + uuid:C475292156F9DE119858CC189AA5168E + uuid:C4AADD4109A6DE11AA57C4DB02F1F37E + uuid:C4B8C405C39BDE11A1F1B24698F0C5C6 + uuid:C50C5BE8676FDF119ED6D0522C80DC9C + uuid:C54997B3E54BE1118E68FFEA11B8FF32 + uuid:C54C77CC3E31E011A4CEF0CE14DBA47B + uuid:C554A170D175DD118800DFEE1CB42BA2 + uuid:C5F46C7C5085E111AF43A327F0293E20 + uuid:C60A6589010DE01199B098BED9DEFB7E + uuid:C61F2E1AA2CEDD118A71BC83C9FAEF40 + uuid:C63B551A18ABDF11A196BED1DB02FD13 + uuid:C657F7948C40DE11AE82B07C1BA09C9B + uuid:C674B73D4D9511DCAD58A78EBE278078 + uuid:C67DEAB23C92E0119552C0C7D4DAEE3A + uuid:C6964A809B69DF119390C6150B732344 + uuid:C69D854B72F0DD11A36286CF4E3B9F90 + uuid:C6D7BA63B539E01183BBC652D31CB39D + uuid:C6E1DA7134C6DD11B998C16382A8C883 + uuid:C6F7CD2BC7C4DD1190DCC3212623DC69 + uuid:C70425588945DB11B9BDC00E08C119CF + uuid:C729D4498974DE11838BA97916164EEA + uuid:C77CA102C562DF11A98FAE649B7CA0E4 + uuid:C78027F85C65DD1182CF9C513629480E + uuid:C78030AE5A20E1118CC7DBCFF57A53AE + uuid:C78A5C22AF2DDD11BC6082BDA90FB3F2 + uuid:C7B85B3A8545DD11B4F8FE5474F47628 + uuid:C86C30CAF7B5DF119A7FC51EFA65364E + uuid:C87E11CBF3ADDD11B722D621BBE2282F + uuid:C8995AE35D77DC11BA25B5006B2099A9 + uuid:C8ACF8E5DC28DF118345A007A601E742 + uuid:C8B525E44E94E0119AC4AF1F3DDDB45B + uuid:C8E2FDA62246DE118E05E00A924D8CC5 + uuid:C8E6AF4D0C36DB11AA1882B8F962CEDF + uuid:C902F624ED58DF11B09AA13AA286DFF1 + uuid:C9213F7341C9E01190CDCF1D7E0FB496 + uuid:C92F8327CED1DF11925EF8707A105F5E + uuid:C93357316AADDD11981C8C07A9FCB46F + uuid:C9408F017048E111834A8DADC5838B87 + uuid:C95E826F3E63DD119998F4D1B568D843 + uuid:C95F8E93E1ECDD11AD81A1AB84D405B4 + uuid:C972937141C7DC11A9308D8CAE550E31 + uuid:C974D1554336DD118CA58E7E12F64230 + uuid:C98C9CAB27FCDE11BDAB9119F7C77CF7 + uuid:C9B6F2E7E44EDF11BAFDAC7CDC373421 + uuid:C9CE6894B332DE118FF4DA641641199C + uuid:C9E6670A7191DD11A3FAF2032831011E + uuid:C9E68A53716FDF118E49BD52CF84AC85 + uuid:C9EAA17ABF37DF119641AE19E0ABD412 + uuid:CA09E79BFCD9DF1192ABE879604B131D + uuid:CA338EC950C9DE11B3919E8C269BDFE7 + uuid:CA4E034E7E1ADF11BABCD74472CEE0AE + uuid:CA6A61F1BD3ADD11BAEF96DFD6BBD32D + uuid:CA8438F35492DF119C3AA188202282FB + uuid:CAA77AA844A8E011A242A32924141C08 + uuid:CAE0D5E6769111DFBD20D13DC58F17C3 + uuid:CB09F63C1253DA11B919CAE4F1B89E24 + uuid:CB19CC6AAED2DE11A1FFB39D8423E0B8 + uuid:CB2EED906AC311DF8403DF34608520A8 + uuid:CB49EC3F159FDD11B928BF68C9DAD113 + uuid:CB886DF8BE96E0118521F011DD2A3368 + uuid:CB9AC4CBED4CDF1186479309F5E49ED0 + uuid:CBE09F20F0FBDC11A28BE265AD78299A + uuid:CC036BD7D19CDE11A3B4999777CE8201 + uuid:CC0EF853BDE5DF119AEF989A15E82332 + uuid:CC18FBD9041CDF11ACEBF49C1510D7E2 + uuid:CC69690D15E3E011B81B9312C0827518 + uuid:CC88307C9024E31195E5DEE05494581E + uuid:CC8DC478D45FDC11B2329FA0034D00B4 + uuid:CC8E85AC7665E0119EEFC6062240AD3E + uuid:CC9624520553DC11A367DE399E056D77 + uuid:CC9CC2FFCAA0DB1197EA9BA06676A341 + uuid:CCE7D18D7006E011ACACF4C7EB2AF2CD + uuid:CD192CB43784D811A2D2963FCB4D7BEC + uuid:CD1E7E73CA5DD91193FBC3868F13F25E + uuid:CD6D8B926B7DDF1186D7EE6F854EC0A3 + uuid:CD7181DAB289DE11ACE0974FE0FC8345 + uuid:CD8BCACE98BCDE11AE26F9D1FD1B7E18 + uuid:CDB8E6B435AA11DE87F9ABE399EE13D4 + uuid:CDBE4F10EA14DF11B86CE80DE02A00FE + uuid:CDD977CD0316E0119189DC90DDEB9B24 + uuid:CDFDC0C79D93DF118C149DF36CDA307E + uuid:CE3DCDE7245DDE11A09DB6F241A377D9 + uuid:CE3FCE3EADAFDB1194CAFAD50C9088DB + uuid:CE4C8C6B37CBE011B318D4BB086B027C + uuid:CE5A4F4F5DB8DF11A53AA0E9AB1C70AF + uuid:CE81F5F18B8ADD1192EBB014E27EB273 + uuid:CE850F17235911DDB8A999939B027CA1 + uuid:CE8A65C6B2E9DE11820DF974ED4965B5 + uuid:CEB1C1938033DE1180B2AAA64B4A44D0 + uuid:CECC404C96BCDE11AE26F9D1FD1B7E18 + uuid:CEE373F4874ADF118C8FD5B59C8C4DB5 + uuid:CF04ADBBFAB8DE11A023844701A21A6D + uuid:CF0E419C0C96DF11B3B8C8C117EFA61E + uuid:CF22012FBF0CDF11AF03DFE2B85E861B + uuid:CF3D182CED04DE119A8BC46E48B5B4ED + uuid:CF5F4C02B4B3DF11BEE9D23A73828232 + uuid:CF8D03F6CB2DDF118F95A49BE02D8F08 + uuid:CF8E06442746DE118E05E00A924D8CC5 + uuid:CF9461AE6C2CDF1182BFBEB6F574E8FA + uuid:CFB2C88F1A4AE011BDF5E7C9FD6E41C3 + uuid:CFBCB8734138E0118CC2F3DBDFC822F1 + uuid:CFE2DF57500FDE11B9C398921336EDEA + uuid:CFE68A53716FDF118E49BD52CF84AC85 + uuid:D000F9494535DE11905BA0931904557F + uuid:D0194E66B17CDF11B904C9EE9AB5485B + uuid:D02F4C842821DE11AB4BB39481203363 + uuid:D049A69CB407DF11AFF2B5C19F34DD73 + uuid:D04C74D5FF92DF11A4A4B038BA9F8BEA + uuid:D05200D5CB2CDE119FACF6B32AE746D1 + uuid:D06A50FEEEC4E01190B18A392A9B2DE5 + uuid:D07AF01CFB9EDF118618F1C113702769 + uuid:D0952AEF788ADE11ACE0974FE0FC8345 + uuid:D0959E95F62DE3118021D04C0459BC47 + uuid:D0A6C0082B2BDE11AB7689F92BA6779C + uuid:D0B9381DC5EB11DCA2EED6245E0E7E8B + uuid:D0F74D4DF21FDF1182F298D8D839FAE5 + uuid:D103B4ACCFCCDE119C91C660DEF8E17A + uuid:D14375593D3CE011A6D3E9DF0091480B + uuid:D151FA895E91DE11BDF1967A9D5E1EC3 + uuid:D15DC3CD6B7411DF90DB848384F33D25 + uuid:D16145CD32C011DB86D0CF6424D0FBC2 + uuid:D175A6E8D84DDD11884AE07479EA7813 + uuid:D1AAEDB47D0DE111BBDAE8E313C865BC + uuid:D1AD727BB391DF11B7B59B749F8F26BC + uuid:D1B307D01D7DDC11AA549DD207900CF1 + uuid:D1C1F3262A6B11DDB925D63A616C9887 + uuid:D1C50FD5300BDE11BF59C4CB8ED1CA40 + uuid:D1CB8A24BDFFDC11B7E8F526EDA1242D + uuid:D1E292315AD9DE11AA96AF115635F394 + uuid:D2266485BEBADD119C1FE2474AC6A3A9 + uuid:D24E08A3F3B4DF11A0AFE722E0AC176B + uuid:D25B3EEFBC80DD11956EA4B5A84694B7 + uuid:D281BDE9A170DE11802ABBB9D8783F2A + uuid:D2AB800E623CDE11A3FE96BF0235E340 + uuid:D2CBCEA368ABD7119151D2D5CDB17245 + uuid:D2E7F1251EBFDC11B407D3A13D9E45B0 + uuid:D31FF02BC065DF119DAED4B11B46F9FF + uuid:D349FD5DCF01DD1191EDCC66BF6D3E31 + uuid:D3759A92481B11DD8D28CD27990540EC + uuid:D3A7CD576D58DE1193F18641FDF63895 + uuid:D3AA44E4A127DD119884880D9DE318D7 + uuid:D3BF89E26D7FDF1197489DC558C6BC6A + uuid:D3C272347109DD11B77DD7C813171D4F + uuid:D3C3D799895FDE11AA49C912E235F427 + uuid:D3EA17BBD502DE11B06AC44E8A9BBF03 + uuid:D3F45F90B64811DEAADCE7CC1A7ED6A5 + uuid:D424197B9546DE11A1B69C9C4C35B5A7 + uuid:D50E419C0C96DF11B3B8C8C117EFA61E + uuid:D530FC1A0E50E01185AF8C60BE84D800 + uuid:D534FF48790ADD119A14BA15B1338740 + uuid:D53A0555A7D7E0119FDAEAC9F2A34AD0 + uuid:D5738990D71BDF11AC16982006956F20 + uuid:D58B53EB6B89DF11A27283EADD6A0ACD + uuid:D5A43BCE2446DE118E05E00A924D8CC5 + uuid:D5A4B326C122E111B5BBA3CAD8862A56 + uuid:D6106FFF2837DB11B5E2AD628E07DF01 + uuid:D62220B4D76BDE1185E2922F624AD9E5 + uuid:D623E2FCCB44DF11A659990446779642 + uuid:D63E7E4CA21BDE11BC59FF5081124FB9 + uuid:D64EB98FCE8FDD11969B8877C79DCD33 + uuid:D65AEE9F55C1DD11B983BFE3CE432064 + uuid:D65BCF04EBA3DF11AEC8ECC4B4DD4F26 + uuid:D67DE9CEB841DC11A4C59F1431608251 + uuid:D6928885DFF8DF1195CC8AC4A9472649 + uuid:D6EF40FB5568DF11AE2DDE167B97FDBE + uuid:D6F4EE68500BDD119966EC9A5A52EB65 + uuid:D71ECB2054BBDD11BE43BAA0C7DF0A8F + uuid:D722A55C2746DD1198FDA23DA8CF6A52 + uuid:D722F3137E28DF118A00B43E7F1745D9 + uuid:D76A99DD2D46DE118E05E00A924D8CC5 + uuid:D7780B82AD3AE01198329764FCC132B2 + uuid:D7DF0928EBF8DF11A92BC0ECBBC322AC + uuid:D7F77C2CE091E0118FEBC1BD7FE80A73 + uuid:D806CA89565511DCA78EFBAB494EB6C7 + uuid:D833B764414FDC11A43AAD4EEAF5F987 + uuid:D834341B7B63E1118EFC9A5EE050461C + uuid:D83A213D43A8E011A242A32924141C08 + uuid:D8408205501FDD1198C9EC5DA8B6CA8D + uuid:D883139A2F46DE118E05E00A924D8CC5 + uuid:D898829C29D8DE11BE2EB93CBA992D94 + uuid:D8B6B4501291DF11A414E39C531AB26B + uuid:D8C84D481303DE11B17FBCB1A0CBEAE0 + uuid:D8D4AD44427DDE11AE3C9BF91958E880 + uuid:D8D88832C306DF11AF8AA587C3C1C2B2 + uuid:D8E6BCBFE603DF11B0E8EF397F548FEC + uuid:D9114C06F27CDD11A27ADCA80B4F92FD + uuid:D9252850E439E011B9B5C42D6AE15155 + uuid:D92AA69DED07DE11AAD8A7824F5B43F7 + uuid:D94DA3A85C06E1118F489DAB0FDBB0BE + uuid:D954F87AFA18DF1199E9ED583FDA18B1 + uuid:D977C548A185DF11AEA7CC9CB76DA93F + uuid:D9BD17B654CDDD118E28CFC396344156 + uuid:D9C0F8FB9C90DE11AE0AC26550418DE9 + uuid:D9C8325A5E14DC11BCFF992E2F0C9E43 + uuid:D9DEC56631FCDD11BE96885A416C85AF + uuid:D9F18C333C9CDF119F2E804466B82BB8 + uuid:DA29F8D63833DD11B84DB153FFCB2B25 + uuid:DA2B43EEF855DC11BE829A09659DFF50 + uuid:DA4356719655E11185F4BB88A7E20821 + uuid:DA664FAB766CDD118BC6AB313DBE5BAF + uuid:DA8345223F5BDD11912DAA7FB7776147 + uuid:DA963F47EA98DE11880CA33A2B0576FC + uuid:DA967A6C44F5E211ADA3A5E208A9E7B9 + uuid:DABA1B3BDB79DE11B19BB84F94E0CCE9 + uuid:DACB42AC0D57DF119E6183A921B60F6D + uuid:DADAF1DD4FA3DF11B51BED44650154B6 + uuid:DAECF7908643DF11B82BEDA602730664 + uuid:DAF890E271EBDC11999FF5758F271162 + uuid:DAF8A1E81E36E011BD52EC7717D55B5F + uuid:DB394D1A586711DEA6F693474E9D4384 + uuid:DB8AF9CFD1CEDF11910DE6F1783AED6A + uuid:DB94E3E49A3411DD9022BCD89592B1ED + uuid:DB95F7BDB3A4DD11991BEF5BBF8BD741 + uuid:DBCF05965A5ADC1189E083EABAD0C054 + uuid:DC0B333D0455DC119AEEBA7DE8B81200 + uuid:DC0CB835C137DB11A5698C5F312683C1 + uuid:DC257B8C5ADDDC119438890198CE6F01 + uuid:DC275053C240DF11AD3DE0F1959BB9CC + uuid:DC2BF320512DDF11BA06BA543CB4F500 + uuid:DC364EEEEF07DE11AAD8A7824F5B43F7 + uuid:DC4F5882B0E9E011B3269AB1C0356EB4 + uuid:DC5831D67117E1118ACBC52CFB36F506 + uuid:DC6E07587D75DE118E119D6E564B4418 + uuid:DC8074239110DF11856FF25F8996A646 + uuid:DCA83BEA68D0DD11B52EED21F1DF153D + uuid:DCAF95EF5418DC11991D9081DD0FA550 + uuid:DCC3FDE185C9DE118459E3AD70B5474A + uuid:DCC9959CCCCEDF11910DE6F1783AED6A + uuid:DCCE1F5C6A7DDF1186D7EE6F854EC0A3 + uuid:DCE4FE9AB31BE1118119AFF8F68CDDE1 + uuid:DCF2F321362811DCA14E914CEB339C56 + uuid:DCF7F74BFE1E11DBB706980B4492EC22 + uuid:DD173F285D5DDF1194C1835A9D57A6A6 + uuid:DD1EEACD9CF5DB11A56C8D23356D16AC + uuid:DD2B43EEF855DC11BE829A09659DFF50 + uuid:DD3643D13746DE118E05E00A924D8CC5 + uuid:DD415EB295D9E011833FA20089605520 + uuid:DDA9CA837122E1119FAEEA2F4E77A014 + uuid:DE0C5FA950F8DD119C7388E2F822CAF7 + uuid:DE2B51B51DDFE011B872DF47B34C9F1C + uuid:DE373C29F98BDF1189DE89DD1EB5564F + uuid:DE59BDFE7D63DC11A252D8EC8E168194 + uuid:DE6E9BFA2C60E1118FB6F1C10C0F53AA + uuid:DE980A215AE6DE1190AEBAF6332FC6C0 + uuid:DEDC7A6FE299DE118058D51E8349D00E + uuid:DF0EA664E471DA1195D99CF85177EB33 + uuid:DF341B9BEE5411DA8803941B3025B829 + uuid:DF3E6C248070DE1182A4E4822D1896D0 + uuid:DF4BF7A9F697DA119D06EEDD0B0CD75F + uuid:DF94CBA467A4DD11B8439A379F2C7659 + uuid:DFB429D972A5DE11B580A970E358D09C + uuid:DFFAC8748B60DF11A5D6C5494D1F118F + uuid:E00B86C236AEDF118A3BA3427A14AB30 + uuid:E073D646AB63DD11852FAF8A5C0D60CD + uuid:E075AB88ECF5DE11926AEBC2FF05D13B + uuid:E0B26635BE91DF11B7B59B749F8F26BC + uuid:E0B4149F5DC2DE119E00B994825EB4D4 + uuid:E0B9A3470884DD11B440FA4BE94097E0 + uuid:E0CF8201C36ADD118C85EF2B0F2564BA + uuid:E0D9E4BB6B85DC119860A83F427F6A63 + uuid:E0DF88E0D51DDE11AFF2F0B2BF211704 + uuid:E0E8FD19FD09DC1182E9988DD7F97EF1 + uuid:E14D38BC8980DE11802FBDF7347E2BCD + uuid:E14DB26C9E47DE11BD50CFDD2E24F7E8 + uuid:E17A1128166CDF11A85DDBD0BB17D8AD + uuid:E1806FF218C3DE11B8EDE5DB62300198 + uuid:E18A83FB00E5DE11A79E9DD4E391CE31 + uuid:E199E028F0FADC11AB0C9CB0C186116B + uuid:E1A1CDB8D167E211AD1DC317555E6C4B + uuid:E1A86E916149E011AAB78355E6C89261 + uuid:E1AA6D282EA511DB8D9DE08AA1DBD1B4 + uuid:E1B0D40399EADE119C53A24FF402A9DD + uuid:E1EFA889B9B2DE119ADAFFBED641D007 + uuid:E1F896B492ECDD119A85D1C826247B54 + uuid:E25CE56E3D1DDD11A057863D5DE48030 + uuid:E27609DA6659E111ACF8AB7FC42E22D2 + uuid:E2797155BF78DC11BBCCBE617C756E16 + uuid:E2C23DCDE9E1DE118A78F10A17E74984 + uuid:E2C3D56F7696DE11BE7DC87E6F9C9063 + uuid:E2EC0A54465ADF11A10EEB26C5FC2C48 + uuid:E2F6CC03AF26E311BEE7995AF20CDDB2 + uuid:E30B4285ADD2DE11A1FFB39D8423E0B8 + uuid:E315F8FF2C68DD11B9A0883604D25409 + uuid:E3717B7DA22BDB11955CF8E1C0809A50 + uuid:E373617DB2CADF11B5F9D5B410AFCA09 + uuid:E37FE4776651DE11B0FF904ABD7E9C78 + uuid:E3970850424ADA11933ABDFC508CEC3E + uuid:E3BD36BC5997DE11891BA1F3B67D6AFC + uuid:E3CCC165BCE2DF11BE32FAF95C0AD0FA + uuid:E4029A3EED4A11DDB6D09B0A9CF5B514 + uuid:E43AED3DFB5CE011B41CB063F02B162D + uuid:E43CE336BAAADB11AAE38934EA825D61 + uuid:E4529CDB0587E011AF5FDA275B24B87D + uuid:E4AAD566E45DDF119B36D41797298A1D + uuid:E4B7DEE9001FDF11B6BDAB31141CBAD0 + uuid:E4CEA0152F1BE011A9EFC9F735703C71 + uuid:E4D41362EE6FDE11AA0FFE939976F766 + uuid:E4D9C16CDA04DE11AF9797CDADDEE077 + uuid:E524BA63245EE011B6818D741A0B17A1 + uuid:E578BA484BABDD1191D1C77158E2FF27 + uuid:E5797155BF78DC11BBCCBE617C756E16 + uuid:E58281810869E01197F1DD49D6E3F27D + uuid:E5ACAAC04E4EE11194E9BA8DD5E34DD8 + uuid:E5BFADBB3C61DF11A953FC3861B9A9FF + uuid:E5D64E1F241311DDBF50C49E22072263 + uuid:E5FC6ADE7D62DE119614CE358077696A + uuid:E603FC6D0289DE11B31DAAC1F1D93333 + uuid:E61386A5A9C8DF1191978567BEBB498A + uuid:E6207E7A4A1CDE119985B561E3D5A8C6 + uuid:E62B41618B86E011BD83DCE0D72154AD + uuid:E63B3D1C385EDD11A73AFB54CA37B984 + uuid:E687B8E3F9ECDF11B076F4C39C2F9754 + uuid:E6A85210D0F9DE118CEC9D0C91BD8577 + uuid:E6DB06D41B8211DF8F93CD79A2C655ED + uuid:E710B34B5B4EDD11AB3CE178BC4308B3 + uuid:E726AB67A1D7DE11A1AE8A388BF11FDB + uuid:E7382E9DE4A6DE118430D472A7C47389 + uuid:E7604D179934DE11BA33C78EE20CA33B + uuid:E766C8567592DE11900CCC65A9164B4D + uuid:E7746F1A939FDD1194A8A7C5E3FEC135 + uuid:E79A4A832DE0E0119500C872373672E0 + uuid:E7E1DA928290DE118186A311CB7DCC85 + uuid:E833B18E54E3DD11A1BA90DE18BA94B2 + uuid:E855AD280486DF118375D2DA57A8E7F2 + uuid:E86B79300398DE11A20FBE0C2E1A83C0 + uuid:E8711942FCD9DE11BEB2B63538B485CF + uuid:E8797155BF78DC11BBCCBE617C756E16 + uuid:E8B06B98C880DC11B579F4DF0C3EBBAD + uuid:E8C206385A2BE111BDE4BB48F8780D3A + uuid:E8E53D5DDD52DE11A63583E5225DA4A2 + uuid:E8FCCFED641BDE11B5EBB756DA861105 + uuid:E90701108CECDD11A766F9E05F0F38F1 + uuid:E955CEB8F079DD11B6AA81A0D174624F + uuid:E98AC9CE3D35DF11B3D0B64122426E24 + uuid:E9B56D1CCC1911DB974B99E8011E4801 + uuid:EA079D6D2C21DF11B3C7C23C35F18DBF + uuid:EA1E7A2D367ADE11928BC23B2ADBD6EF + uuid:EA2419F24D9AE1118DBA9268CE062AFA + uuid:EA2CE1D26C6EDF11BF4DD0BBD7AA5946 + uuid:EA51D841E8CEDA11B294CDAB0D6CE752 + uuid:EA5A7EA4B76BDE11B0FFDCF0E5F50557 + uuid:EA84CF2ACFC311DEBE5BFA835EFFFCB4 + uuid:EA9F40B70D51E1118009813B78715A11 + uuid:EAC17697D2B1DD11AF9DD61A7EB49A89 + uuid:EAD72BEAA8ADDD11BDC293BA3D5189CA + uuid:EAE73C41E3DCDF119A1BE0AD54EF73F5 + uuid:EAFD15F6A70AE411A3A7CA938A90D114 + uuid:EB01B3383110DF118ADBB50293FFA6F8 + uuid:EB2AC291BB84DC11939198AA96A9BBFC + uuid:EB3FD1E8EEA5DD11862FDE6F8E15A5CD + uuid:EB578C126F49DF11AF02D879EC220177 + uuid:EB69B1888606DE11B380C9DFFF5EDB6B + uuid:EB70A5594CD7DB118F5AE87241EB429D + uuid:EB8163F6CA1ADE11AF42C90A292BFA1E + uuid:EBA136F9DCC2DE119943E2ECA51B2BEC + uuid:EBCF4CECF7D6DF118D478B234E439CCC + uuid:EBF528FCE6BEDD118A8B85DE1604DED8 + uuid:EC04855384BCDE11863CF2C4171DB8E5 + uuid:EC2ED3E43D7EDE118D1FB1DE08372EB7 + uuid:EC35342154E7DE11842584502EE667D8 + uuid:EC440A673C61DF11A953FC3861B9A9FF + uuid:EC845CCEC620DF118EA6B617D0FB3CBB + uuid:EC897FCF9130E4118776B0BCC302B24C + uuid:ECB78735274DDE11B01EEA9B67CC9BAE + uuid:ECC657FD80C1DD11ACEA981203A8883E + uuid:ECDDFCC8E40DDB119CE4D46750EECF29 + uuid:ECF2CF3148CCDD1191EDC77F6E1E6D0D + uuid:ECFE55EE1E8DE011BA3783BB6FD49B33 + uuid:ED0F8DF3ED2DE311B3FCFB3110ECB106 + uuid:ED3BCEFBD909DE118D7DBDCEE5C551BE + uuid:ED54B44717FED91184928417AD28DAF0 + uuid:ED6B952B1929DC11A87A989FF1EF9301 + uuid:ED6BE8B98E77DE11838DF708618B4B79 + uuid:ED8D85735E42DD11A1DCD26843D97074 + uuid:EDB7AB3A0DF8DF11AD3ADC75175B5B04 + uuid:EDF36F0892EDDD1191368D8E8CF8166F + uuid:EE257418EA2C11DC9D72F44508055A67 + uuid:EE2B0930F7BEDC11AEEA8E30DA10306C + uuid:EE37C8BACFBA11DBB548C60FD1B0D224 + uuid:EE7C48F8F3F111DAAEEC90C1F68FD63E + uuid:EE8CBA0F2D46DE118E05E00A924D8CC5 + uuid:EEE02BD40C3CDF119993BFBF70C9057D + uuid:EEEC75A1BBE2DF11BE32FAF95C0AD0FA + uuid:EEF7F16FEF89DE11B1C4D65EF43688A3 + uuid:EF3B704B86D4DC1187D8D42517BABD21 + uuid:EF47191E90AADD119F17CB9128B3DE43 + uuid:EF7A72CF65BBDF11B4828D5678632FEC + uuid:EF9A4A832DE0E0119500C872373672E0 + uuid:EFAF9FD0A18ADE11A91A91D6A7033EDA + uuid:EFB3F5FF2687E1119393B1D1CA5FE329 + uuid:EFBA651AF05EE011A5F5D9DDB3BCBA74 + uuid:EFE92B5982DFE0119780E3E617CFD216 + uuid:EFED9F6D3BB5DE11809BA989B0D77432 + uuid:EFFDBDE385C9DE118459E3AD70B5474A + uuid:F02F94D2B47CE1118D32DAEF41DBF18C + uuid:F03B88B94143DE11A044946A9E040D90 + uuid:F080B4EABFF0DA118DA697055230BC2F + uuid:F08C582C2AD0DD118149E96B39144516 + uuid:F09708BE831EDF118AC4A001811BCC94 + uuid:F09F2613E9DEDB119D6DB676FC45D42B + uuid:F0BA6F6CF9D9DF1192ABE879604B131D + uuid:F10C79062C46DE118E05E00A924D8CC5 + uuid:F111EEDBE0C3DD11B728D90CAF385816 + uuid:F1605AF76BF4DC11AC2380CCB6841119 + uuid:F1B0B041E903E11186E0A6C6167DB995 + uuid:F1B9E5A31F68DE11A75E97F2843CBA46 + uuid:F1C813163A80E01189EBB7E34DEA33EF + uuid:F1D22B66985111DCBD2AB8FD22D3F06F + uuid:F24060ACBAF4DE11AEA2DE099117F7C2 + uuid:F2532DEC9390DD119A58B947850C8B91 + uuid:F27E37228E3DDE118480CBE208893CBE + uuid:F29DB2290916DE11B8D5C8AB8C8C14D4 + uuid:F2A6612DA2DCDC1189A1A8FD6CF2EF5D + uuid:F2A7CF474B9EDD11B89A9D3E0B652745 + uuid:F2D6EF2EB584DC11939198AA96A9BBFC + uuid:F2DCE7439692DD11A7FCF60B608912AE + uuid:F2E246D37C49DF11AC9CF655FDB30ADF + uuid:F2EC75A1BBE2DF11BE32FAF95C0AD0FA + uuid:F2ECCF947EDBDD119D77D4CFAFCA39D6 + uuid:F2F485C61192DD1197A2A37E16C85BE3 + uuid:F367D3FB2F8DDC118D0FD4DC7FF5E7B5 + uuid:F37B127E0F30DF11814293B6F073E061 + uuid:F39442A92117E01183C0ED8ECACB74CF + uuid:F39CBEE4B62311DCB80BE840D518DBA0 + uuid:F3C43B64422EE111AB7FE12965D95606 + uuid:F3D3DC842E58DD118DA1B3EB255078B5 + uuid:F41C05E33C78DC11AA90CABED078D1A9 + uuid:F4297B0AD6A7E0119054AEDAB6503153 + uuid:F4414A038842DF119DE2BAF8DFB739C8 + uuid:F4436D21EE4211DDA05AD7CCBB969395 + uuid:F472486FFE48DF11AFD0F44B53BD00B3 + uuid:F49526DAB9FEDD119830EC4068CCCA98 + uuid:F49F2613E9DEDB119D6DB676FC45D42B + uuid:F4BCB835CD84DA11AEE3C92BF541D7B5 + uuid:F4F3FA0764BBDF11B4828D5678632FEC + uuid:F4F6040DACB7DD11AB8CC0FD3B82D322 + uuid:F4FFEFC78E14DE11A6CBA927ABCABDF4 + uuid:F519885B3020DD119707FC96415C4EBD + uuid:F53BC9C8E416DD11BE9ABE1C8BB74D84 + uuid:F53CEF751C4BE111980CD23DCC274A5C + uuid:F56044073506E011B693D8C402051E54 + uuid:F565DBE78868DE11A87BD8ABF4CB75E2 + uuid:F56E4EF00821DF1184FDB13FFFC145A0 + uuid:F5CB24D0D45AE0118E1B942C8B1CB589 + uuid:F5D615C8D991E0118FEBC1BD7FE80A73 + uuid:F5E54A230C69E011BAE4A0F3F205CB0C + uuid:F5E5AB4AD49A11DB9020B3FBE099D24D + uuid:F5ED6B37E8F0DA118DA697055230BC2F + uuid:F5F45A99162CDD11915FF91DCAA4909A + uuid:F5FD6AA4E20B11DB8469FFD2C7550628 + uuid:F61231BE1B3EE111B2A3FC3479A88392 + uuid:F625341EBE14DE11B2D289656A472689 + uuid:F626B67D8860DF11A9018B722DA7EE55 + uuid:F67A7495CDCEDF11910DE6F1783AED6A + uuid:F67C30CDB77ADD11AF71EA843958E780 + uuid:F687F5C2C940DE118355BEB09A7E15BA + uuid:F688CEC7C81EDE11BDCAEAFD442BB9B7 + uuid:F68CBA0F2D46DE118E05E00A924D8CC5 + uuid:F6C288398B37E01186559DC87C6BC377 + uuid:F6CCDE5069E2DF11BB339E11763474C2 + uuid:F6D3A7D09955DD119A1384B593846576 + uuid:F7092FDE564ADE1192A1FA09F9E14EEB + uuid:F743186D6E8B11DFAE9CA09BE5A960A2 + uuid:F7607D5ED0AEE1119138BA5E617E2299 + uuid:F778A32017D5DD118DAAF81B20F8DCAB + uuid:F7970963979411E0AA3BE016BA92F3E7 + uuid:F7BE264568E9DC1189EB80B09F1BBACE + uuid:F7D80266DEB0DD11AA99F19EE1944BF1 + uuid:F7DB45588240DE11AE82B07C1BA09C9B + uuid:F80F673BE43ADF118B8DB316A394A1F9 + uuid:F836B091D059DE11803AC66BBDC241B7 + uuid:F847D28DA5B9DD1184FD87D58E7A12B1 + uuid:F87A0150E321DD118DE6805E4FAF4697 + uuid:F881A3645B8EDC118AEDED463680791A + uuid:F8838F0B3646DE118E05E00A924D8CC5 + uuid:F88C85E01F6211DBAD06B9F82D8DF569 + uuid:F8A0C7BB2F1BE011A9EFC9F735703C71 + uuid:F8B67F61CFCCDE119C91C660DEF8E17A + uuid:F8C26AF876C5DD1195938FFB194191A9 + uuid:F8C8948B2946DE118E05E00A924D8CC5 + uuid:F8F4825CCD20DF11BAFCA185A4C55DD9 + uuid:F9172BFE290CDD11B4ACE0141CDAB38A + uuid:F9191FCD2CF211DE8F0F9F3E4CB2F96D + uuid:F95C1A2E2578DC11ABB7E7B0CF34D78E + uuid:F97486C1E24FDF1183C7996710D099DC + uuid:F99A2A6E55CADE119E48AA895AAD2D83 + uuid:F9C28AB70279DE119AF4C11AE6D6D880 + uuid:F9E028AC8D86DE11AC44B5DAC8D6211E + uuid:F9F9B4FA6136DD1185F2EBC2FBBFDE1F + uuid:FA25F8056DE411DD81D4FD93EA6ACF84 + uuid:FA3056B93AA8E01195F9F14B578BEAA2 + uuid:FA59A0A7F345DD118454C27C6B2C686E + uuid:FA605AF76BF4DC11AC2380CCB6841119 + uuid:FA7A634E25F2E211BCECDEEB2A16B499 + uuid:FA8A792E3F44DF11AAF5A3AC0E82A8D4 + uuid:FA99F5D8DFF8DF1195CC8AC4A9472649 + uuid:FA9D44F8CEE3E0118C1597277039DC3E + uuid:FB0926BA00F0DE11ABC6EB7DE532ADD8 + uuid:FB15F1B5CD89D811A66BCAE379896B54 + uuid:FB403B482096DE11B9D5D0FA4B3B08BA + uuid:FB6169574598DF11924199839A6C7CFC + uuid:FB66D5244AB2DD1186A4E35B74E27B2E + uuid:FB6F068B9E49E011BDF5E7C9FD6E41C3 + uuid:FB88DE6D8610DE11BB08D609A44D78D6 + uuid:FBF0D74E9065DF118856BDA71FDAC499 + uuid:FC0AB2E06B73DE11A73FD0389B748AFC + uuid:FC138C5696CCDE11B53FAA0A80651A08 + uuid:FC22870B81CEE111BA15A74276C60E6C + uuid:FC280BD7AE72DC11823F97243639BAF6 + uuid:FC2F6234841CDD118F0CF2F69CE38C40 + uuid:FC6284395CDFDE11B366D9EF74DE4B3E + uuid:FC927F96EFD9DF11891CBF8209472500 + uuid:FC95A8992CA3DE119998FBA423EDC580 + uuid:FCA7CFCEBC84DC119FE29F83F850F256 + uuid:FCBE73390FD411DE8097E3A502C56252 + uuid:FCC438CB411DE11190F496A082ACB8B3 + uuid:FCCCD4402D37DE11893FA46A47EA0CAB + uuid:FCCCE08087E3DE11B9F9DC8249B5DA23 + uuid:FCE29D83DF54DC118ECC91634B65662B + uuid:FCFADF2D7A68DE11A87BD8ABF4CB75E2 + uuid:FD3CAB94E740DF11B86BCA79B8B8B185 + uuid:FD932583E71BDD11AB0C800EA17DBA02 + uuid:FDD4EF7D8631DF11A186C9CB6A6D6C95 + uuid:FDECAE6AE096DF1187E7BD42D17D5B2B + uuid:FDF19827BB90DE11B739D0304D5A3551 + uuid:FDFD6A7001ABE0119729BE0C738A8FD2 + uuid:FE39AC1F1DA9E0118195F757078F54BE + uuid:FE3A862C3850DD11BEDDFA5393F3E958 + uuid:FE4E366D55EBDE11B73DBE257B556A3A + uuid:FE4F702BD5B4DF11B829D936200E6B8A + uuid:FE59EA925E85DF11BC6CC644E19F2D31 + uuid:FE6003D0F07CE01187BDD1DB97D13A51 + uuid:FE81D1F20A9FDE1182C399957BA3D7DF + uuid:FE99B6D18729DE11BB0EC26859A396DC + uuid:FE9E3C299458DA11BB56DD15A535DE1B + uuid:FED7768A2A46DE118E05E00A924D8CC5 + uuid:FF05737ED74011DD9058E77DFC37DF5B + uuid:FF12190A2E07E11195FC87871E0A3C48 + uuid:FF1E4886B647DE11B799E47B6A8B90A9 + uuid:FF47D28DA5B9DD1184FD87D58E7A12B1 + uuid:FF79D4767969DF11B0C7F2016358B619 + uuid:FF8F480B02C1DE1183479F46E7309C67 + uuid:FF90717AA27BDE11B230CD44A414008D + uuid:FFCBC65828E5DB11BC3EC8BAB693B0A0 + uuid:FFE4355518A1DE11B97A955C1491AF1F + uuid:f46e7762-855c-480f-add4-25b77917e2af + uuid:faf5bdd5-ba3d-11da-ad31-d33d75182f1b + xmp.did:0022CEFAE2B2E011A523D045C5CAF208 + xmp.did:006B7D713E266811910997920F9A7541 + xmp.did:007873BD8225DF119491B0761830187C + xmp.did:00801174072068118083885AD9345809 + xmp.did:0080117407206811871FA882204C4943 + xmp.did:008011740720681187E6D3F1FEEE7E61 + xmp.did:00801174072068119109893FE15E4D07 + xmp.did:008011740720681192B08162DEA350D1 + xmp.did:0080117407206811A7BACB4923F63DF1 + xmp.did:0099D2A3072068118083FF7232A99147 + xmp.did:00AF5CB2622068118DBBCAD1BA2A55A1 + xmp.did:00C055892E236811994CF266AE840D71 + xmp.did:00E9E4423546E011949E88D01D1DBEE5 + xmp.did:00F6BB86BD2268119109B03C8042DADE + xmp.did:00F7F89DF956E011921BE2DE87A39B49 + xmp.did:0106C9E1E1CCDF11B3D2E2FA9AC69EF3 + xmp.did:01121151DF0FE111B634D2379DA4DCE9 + xmp.did:012FA4BF6AF6E111A087DB5677009DE9 + xmp.did:0132A68E5BE4E011970C9B8884C09F82 + xmp.did:014075DACAC7DB11B1C9AC2E92D63EEC + xmp.did:015285055B6FE0119058BF5C2DFF090A + xmp.did:0153B9CE159BE011A42DEC14C3EFCAEC + xmp.did:0180117407206811808388714877E726 + xmp.did:01801174072068118083C1F64789D0A3 + xmp.did:01801174072068118083C4FE05237EAC + xmp.did:01801174072068118083F8C3CE47E75D + xmp.did:01801174072068118083FA9F955E2000 + xmp.did:018011740720681181A2800D03CA677E + xmp.did:018011740720681183458E2CA23B450D + xmp.did:0180117407206811871F8EA3F2A2AE1D + xmp.did:0180117407206811871F91AE438A10BA + xmp.did:0180117407206811871F9265E6607F45 + xmp.did:0180117407206811871FA7DDB6344DDF + xmp.did:0180117407206811871FB03D861007B1 + xmp.did:0180117407206811871FB222890A0E4A + xmp.did:0180117407206811871FB3C62B0C2554 + xmp.did:0180117407206811871FC852CC88A456 + xmp.did:0180117407206811871FDB7C73EC7AF4 + xmp.did:0180117407206811871FDC2E83A29D5C + xmp.did:0180117407206811871FDDF97733816A + xmp.did:0180117407206811871FE828E122F472 + xmp.did:0180117407206811871FE8DD2340C0B0 + xmp.did:0180117407206811871FE9333920AD6A + xmp.did:0180117407206811871FEEB56D1E743B + xmp.did:0180117407206811871FF1961D211D67 + xmp.did:0180117407206811871FFA8C40027C33 + xmp.did:0180117407206811871FFBB65EC420B1 + xmp.did:0180117407206811871FFFE0F6FD6607 + xmp.did:018011740720681187E2AD1A500D39E0 + xmp.did:018011740720681188C6808AE1FD4ECD + xmp.did:018011740720681188C684EAF6EB3EED + xmp.did:018011740720681188C68CC6C803710E + xmp.did:018011740720681188C6A2A17C791225 + xmp.did:018011740720681188C6B458635781F9 + xmp.did:018011740720681188C6C612837B0247 + xmp.did:018011740720681188C6C8FB64E3077F + xmp.did:018011740720681188C6CD649893B632 + xmp.did:018011740720681188C6D36B8FEF0867 + xmp.did:018011740720681188C6DEB6A7380E02 + xmp.did:018011740720681188C6FA5072DE6169 + xmp.did:018011740720681188C6FD88E3797378 + xmp.did:01801174072068118991A4D2E16FCA21 + xmp.did:01801174072068118A6D856087352BA7 + xmp.did:01801174072068118A6D894AE997EB0E + xmp.did:01801174072068118A6DF13459D8D59D + xmp.did:01801174072068118C14CA160A1107BD + xmp.did:01801174072068118C14DAE1DD02101A + xmp.did:01801174072068118C1AF9FE79A48AD4 + xmp.did:01801174072068118CE8FAB7EAEEF1DA + xmp.did:01801174072068118D47F87005A1FB05 + xmp.did:01801174072068118DBBA05AD59D67BF + xmp.did:01801174072068118DBBC14F0DD2168D + xmp.did:01801174072068118DBBC854985CE038 + xmp.did:01801174072068118DBBEBC78ED3523A + xmp.did:01801174072068118DBBFE8AC30FEF37 + xmp.did:01801174072068118E18BAE154229D5A + xmp.did:01801174072068118F6286141DE4764A + xmp.did:01801174072068118F629A756ADA4CD0 + xmp.did:01801174072068118F62C5774A079733 + xmp.did:01801174072068118F62CAC4F27C1618 + xmp.did:01801174072068118F62DBC328695FC3 + xmp.did:01801174072068118F62E2D7B95B1B14 + xmp.did:01801174072068118F62EB2ADE46D273 + xmp.did:0180117407206811902AD3FB78EFDDF9 + xmp.did:018011740720681191098FD20CBDF1C4 + xmp.did:018011740720681191099C046A8759D2 + xmp.did:018011740720681191099DB605A7AC59 + xmp.did:018011740720681191099F8626CB41AB + xmp.did:01801174072068119109AC6131693E65 + xmp.did:01801174072068119109ADEA1A63C6C3 + xmp.did:01801174072068119109AF3A50E294F5 + xmp.did:01801174072068119109BD18F96FE5FE + xmp.did:01801174072068119109C37490BE3834 + xmp.did:01801174072068119109D5BE92FE2285 + xmp.did:01801174072068119109D8AADCC33AE2 + xmp.did:01801174072068119109DA99C2E792B3 + xmp.did:01801174072068119109DAEE9E19A282 + xmp.did:01801174072068119109DBAD7F41B23D + xmp.did:01801174072068119109E22328FDF13B + xmp.did:01801174072068119109E8810C5BC784 + xmp.did:01801174072068119109E952C7CE3CC6 + xmp.did:01801174072068119109F305646EB57D + xmp.did:01801174072068119109F541586A020D + xmp.did:01801174072068119109F730A47FD09A + xmp.did:01801174072068119109F981883825E0 + xmp.did:01801174072068119109FA297A7A5904 + xmp.did:01801174072068119109FA9234D88D4E + xmp.did:018011740720681192B08AE26BD827F7 + xmp.did:018011740720681192B08F00D0760E00 + xmp.did:018011740720681192B09184D5478EBC + xmp.did:018011740720681192B097F0C9D8B91A + xmp.did:018011740720681192B097FB589AB6DF + xmp.did:018011740720681192B09C403CFF3A3B + xmp.did:018011740720681192B0A5BCFE59DE75 + xmp.did:018011740720681192B0A9757DD3D056 + xmp.did:018011740720681192B0BAA904DE0F8D + xmp.did:018011740720681192B0C9C82D025C09 + xmp.did:018011740720681192B0D93A7E1A012D + xmp.did:018011740720681192B0DD109A0A1187 + xmp.did:018011740720681192B0E6597ACE8B8F + xmp.did:018011740720681192B0E8A60AAA7296 + xmp.did:018011740720681192B0EDBBCA87BC04 + xmp.did:018011740720681192B0F39C7BC094AF + xmp.did:018011740720681192B0F77B00BE432A + xmp.did:018011740720681192C7D0F81AAEB882 + xmp.did:018011740720681192D8E7A64109317F + xmp.did:01801174072068119311E5933D41E0BA + xmp.did:0180117407206811956CDA996C733812 + xmp.did:018011740720681195FEFFFEFFCA1EA0 + xmp.did:018011740720681197A5B386C33BAD50 + xmp.did:018011740720681197A5D5A987669EFD + xmp.did:018011740720681197A5DAF2583A0A4B + xmp.did:018011740720681197A5F6607BBC0A7C + xmp.did:018011740720681197E2D338DF4DD135 + xmp.did:0180117407206811994BE3C8EAA36895 + xmp.did:0180117407206811994CBC5AD46818FE + xmp.did:0180117407206811994CD736DBCE5A2A + xmp.did:0180117407206811994CEBF7BEB94108 + xmp.did:01801174072068119A56CF70087969A4 + xmp.did:01801174072068119A889F688513D349 + xmp.did:01801174072068119DEDC6890B672B73 + xmp.did:0180117407206811A084BF28FE3D9E61 + xmp.did:0180117407206811A456E5EBB039358F + xmp.did:0180117407206811A610925F68191C15 + xmp.did:0180117407206811A61390C44B611B3F + xmp.did:0180117407206811A613E041CF699A39 + xmp.did:0180117407206811A75BA79F2EF235A1 + xmp.did:0180117407206811A7B7C9B509533D97 + xmp.did:0180117407206811A7BA892F3C2B2780 + xmp.did:0180117407206811A7BAC1A0D730199D + xmp.did:0180117407206811A7BADF4AD3269966 + xmp.did:0180117407206811A7BAE496507CC015 + xmp.did:0180117407206811A81C97AE71B8FB6D + xmp.did:0180117407206811A961B7EAC21494B8 + xmp.did:0180117407206811A9B5D91FE83CA8E3 + xmp.did:0180117407206811AB0888EC9D8B85A6 + xmp.did:0180117407206811AB0891B79122B22D + xmp.did:0180117407206811AB08B40A0C00B04E + xmp.did:0180117407206811AB08E8E8EE3F0289 + xmp.did:0180117407206811ADA7FD28EAB4B56A + xmp.did:0180117407206811AE569E92DE925BD5 + xmp.did:0180117407206811AEC7ACE16F2ADB0F + xmp.did:0180117407206811AF3396C55E9F4535 + xmp.did:0180117407206811AFB38F92BB3DC2AA + xmp.did:0180117407206811AFFD95917D33B746 + xmp.did:0180117407206811AFFDC4BD99C4FEE6 + xmp.did:0180117407206811B181E22AFDB65FD3 + xmp.did:0180117407206811B18DCF75FC771844 + xmp.did:0180117407206811B1A481173F3B2091 + xmp.did:0180117407206811B1A4C38293BFDEA8 + xmp.did:0180117407206811B1A4D4D1BCD8A443 + xmp.did:0180117407206811B1A4F54E85412D5D + xmp.did:0180117407206811B2F4B2F0A10807CB + xmp.did:0180117407206811B34BBA3E1B4D7703 + xmp.did:0180117407206811B4B9F71F0573777A + xmp.did:0180117407206811B4F2F7704D6D8A98 + xmp.did:0180117407206811B6999C7CB007D31E + xmp.did:0180117407206811B80EEB191CE2BB99 + xmp.did:0180117407206811B8758AE2A6109F23 + xmp.did:0180117407206811B9E7B4064FBED7A5 + xmp.did:0180117407206811BA06DE2D23900A1F + xmp.did:0180117407206811BB8E98E31A3F12F9 + xmp.did:0180117407206811BCAAD4EE23A902AE + xmp.did:0180117407206811BD3592217D9108E4 + xmp.did:0180117407206811BEDC895A14142905 + xmp.did:0180117407206811BEEAF2CDF8DA2015 + xmp.did:0180117407206811BF9BEF79D798C243 + xmp.did:018CE36F7A7BDF11B7509EF0353703B4 + xmp.did:019F1ECABC2ADF11958F9AC533722675 + xmp.did:01C668CB2C3A11E0B24BF72F16719A14 + xmp.did:01C66F18E5C6E011BEF0A37AC8AFF6B8 + xmp.did:01CD58562320681188C69003DB447B4B + xmp.did:01D3BC0A0398DF118E0DFBCC39F1D70C + xmp.did:01E2ABBAC7D7DE119CC5DC2D0C352B47 + xmp.did:01E78796BCB6DF11A0F68E8017D3BBD0 + xmp.did:01E817765753E011B4ADA05F9FBFB5F3 + xmp.did:01EDA34036EEDE11A8DE8E9B24B12DAF + xmp.did:01F556562CFAE0118147AA1F55CE6EEB + xmp.did:0204746FDE39DF11B02B9194132CBA8B + xmp.did:02099B766D20DF118026852479174933 + xmp.did:022B82EA26ADDF11AAD18B5E294DA765 + xmp.did:024F733C4CD9DF1181859156DDB527B7 + xmp.did:026087D903EADF11B656F49380998864 + xmp.did:02649246152168118A6DC8429994DB80 + xmp.did:0274AA50BBD9DF11BFD1959D5E34049B + xmp.did:027CDBED1E37E2118E37E38874568DAA + xmp.did:028011740720681180838223AEF978C2 + xmp.did:02801174072068118083A5C577F079A8 + xmp.did:02801174072068118083DFDF36644483 + xmp.did:02801174072068118083E6B62CE1EF03 + xmp.did:0280117407206811822A9DB99EAC3A6B + xmp.did:0280117407206811822AD2268457245B + xmp.did:0280117407206811822AF3604ED7A7FA + xmp.did:02801174072068118425DC058100E66F + xmp.did:028011740720681188C6A298443F10AC + xmp.did:028011740720681188C6C9584A0CE4D6 + xmp.did:028011740720681188C6EA7AFA84B3CB + xmp.did:028011740720681188C6FDE500FF8673 + xmp.did:02801174072068118A6D940E793F1A10 + xmp.did:02801174072068118A6D9937AF694056 + xmp.did:02801174072068118A6DE8CC51352B1F + xmp.did:02801174072068118A87FFDBA1F29826 + xmp.did:02801174072068118BAACF3C48947CCA + xmp.did:02801174072068118C14C8C4124EEDD3 + xmp.did:02801174072068118C14CA160A1107BD + xmp.did:02801174072068118DBBE2F39C58F24B + xmp.did:02801174072068118E22CFAD9A80AC15 + xmp.did:02801174072068118E8B95801AA5B653 + xmp.did:02801174072068118F62A16D65FC175D + xmp.did:02801174072068118F62A2F6C51121F7 + xmp.did:02801174072068118F62B88BBDD1F4FF + xmp.did:02801174072068118F62D0444FDFF9FF + xmp.did:02801174072068119017A96FBDDD20D3 + xmp.did:02801174072068119109906E1CD89C48 + xmp.did:02801174072068119109AC6131693E65 + xmp.did:02801174072068119109C65A70401340 + xmp.did:02801174072068119109C94BE3FB6395 + xmp.did:02801174072068119109CFB75EA0347B + xmp.did:028011740720681192B0A966EE509B88 + xmp.did:028011740720681192B0C3F69947135E + xmp.did:028011740720681192B0DEBFF74CEF5E + xmp.did:028011740720681194578AA50D8ACBC3 + xmp.did:02801174072068119457F50BDC4298B1 + xmp.did:028011740720681197A586468563C367 + xmp.did:0280117407206811994CC3CDF5269AA3 + xmp.did:0280117407206811994CDFAA02EEDD50 + xmp.did:0280117407206811A7BAB57B7B837883 + xmp.did:0280117407206811A961869B67C9859F + xmp.did:0280117407206811AC988E10CC0CC7E7 + xmp.did:0280117407206811B840C1437888502E + xmp.did:0280117407206811BB8E98E31A3F12F9 + xmp.did:028C7A280CE5DF1180D1A9451B8CCA34 + xmp.did:0296CC95151CE011AEA8AA9AF7424CA0 + xmp.did:02B2C6FC1D00DF11B761857F54ADC13D + xmp.did:02F8422BA0EBE01194B0DEC8760B510E + xmp.did:030142E8BFD7E011B146973C1583A83C + xmp.did:03068E8C132068118083AEAC33B78D50 + xmp.did:033E5A00810DE211A8ADB26A1148B1A4 + xmp.did:034149BD5AE3DE118C7A95A6BECE17A5 + xmp.did:034EBEE178B3DF11B324D94775C41431 + xmp.did:03801174072068118083981EC9F9299E + xmp.did:03801174072068118083A2FF619D3EC1 + xmp.did:03801174072068118083AEAC33B78D50 + xmp.did:03801174072068118083B64CA7CE459E + xmp.did:0380117407206811822ADFD621F48DE4 + xmp.did:0380117407206811871F81E8BB0F82E6 + xmp.did:0380117407206811871F826402051404 + xmp.did:0380117407206811871FFAC63C818640 + xmp.did:038011740720681188C6823329C82B91 + xmp.did:03801174072068118A6D9937AF694056 + xmp.did:03801174072068118A6DD9F43BB7607D + xmp.did:03801174072068118C14A49D02AC9755 + xmp.did:03801174072068118DBBE015FB3CB881 + xmp.did:03801174072068118F62E98997340698 + xmp.did:03801174072068118F62FA26B1D2377A + xmp.did:03801174072068118FEDF87473FF36A0 + xmp.did:03801174072068119109A42C17814AFE + xmp.did:03801174072068119109E219C1666972 + xmp.did:038011740720681192B08C886B6D489C + xmp.did:038011740720681192B0AAD83694CC10 + xmp.did:038011740720681192B0B7BE67E15210 + xmp.did:038011740720681192B0DD1EFA0D88E6 + xmp.did:038011740720681192B0F9D33019F8E4 + xmp.did:03801174072068119346F274C058D55C + xmp.did:038011740720681194288658274AEA5E + xmp.did:03801174072068119457975C6F85D3CE + xmp.did:038011740720681197238F25F2FFB081 + xmp.did:038011740720681197A5AC1352A6FF54 + xmp.did:0380117407206811A237BBC8AE7066D6 + xmp.did:0380117407206811A61392B8F8BEF962 + xmp.did:0380117407206811A62AF2380AEA6A44 + xmp.did:0380117407206811A7D4DF8188E07E2E + xmp.did:0380117407206811A802A3BA24EF276F + xmp.did:0380117407206811AEE4ECC20A5D0880 + xmp.did:0380117407206811AF52D0DBA53AB1DA + xmp.did:0380117407206811BD209C3F4437B116 + xmp.did:0391CB98AF78DE118520F7DCD0D53ED3 + xmp.did:03A30ED2D246E01181FBAD6FFAB64B28 + xmp.did:03A782D89CE111DF9884BE88F83DAA1F + xmp.did:03AD83C7FB37E111A1AFD6438812FE1D + xmp.did:03C3E86C98E4DF11B11D84FE84A5BCF4 + xmp.did:03DCC0DE2242E11187A8CE10F62D9BF3 + xmp.did:03DE75BDC8EFDF1199E2EE90A8025B42 + xmp.did:03E817765753E011B4ADA05F9FBFB5F3 + xmp.did:04147C144830E111A238F3B8EC015E1C + xmp.did:046A4C3D4E59DF11ACEAEDF4366FC01B + xmp.did:04729E409DB1E111A5D6A14D3FDF7115 + xmp.did:04801174072068118083AEAC33B78D50 + xmp.did:04801174072068118083C045A5A1E25C + xmp.did:0480117407206811822AB4A8EB4B7346 + xmp.did:0480117407206811871FF0EE6AD5790B + xmp.did:048011740720681188C6B3D316FC5F20 + xmp.did:048011740720681188C6BBFAF87E6B92 + xmp.did:04801174072068118A6DEC27AEB5D46C + xmp.did:04801174072068118C14B8B7A921B342 + xmp.did:04801174072068118DBB8E5F440DA0A8 + xmp.did:04801174072068118F6291CE7E8C2677 + xmp.did:04801174072068118F62A4F770FD732A + xmp.did:04801174072068118F62DB3F26862A68 + xmp.did:0480117407206811910999E172ACEF41 + xmp.did:048011740720681192B087CB08EF012F + xmp.did:048011740720681192B0EA0E866BB245 + xmp.did:048011740720681194578AA50D8ACBC3 + xmp.did:048011740720681195FED5E9D317291E + xmp.did:0480117407206811994CF4AD3E22FF6B + xmp.did:0480117407206811A6D9CABE601DD596 + xmp.did:0480117407206811A961A4F3E166B93F + xmp.did:0480117407206811B6188380968D4DC3 + xmp.did:0480117407206811B6999C7CB007D31E + xmp.did:0480117407206811BC8AD830EE1F4BC0 + xmp.did:0496CC95151CE011AEA8AA9AF7424CA0 + xmp.did:04AB61EF072068118C14CA160A1107BD + xmp.did:04B66156752068119457D3EA51DB7841 + xmp.did:04BB01059CF711E08A9C913C073A663E + xmp.did:04E55EBD6020681188C6D9EA900BA018 + xmp.did:051CE539DA8BE011A293E089AAF95ABE + xmp.did:051D78B86502E21184DED19555EB3FE8 + xmp.did:055B4E80B3DFE0118151F44D97AD5EB3 + xmp.did:055E07793915E011BDCAB10E56B8BB01 + xmp.did:0570A0C40D24E11188AAEAA5045A2D4B + xmp.did:0580117407206811808387D48DB3A4B0 + xmp.did:058011740720681180838D77FED7457F + xmp.did:0580117407206811808396B21CCB80A1 + xmp.did:058011740720681180839CCCC9C24C7D + xmp.did:05801174072068118083AEAC33B78D50 + xmp.did:058011740720681180B4DB6FCDC6F1A9 + xmp.did:0580117407206811871F834B9271D32D + xmp.did:0580117407206811871F9617A759D4E6 + xmp.did:0580117407206811871FDCFA14F2CA87 + xmp.did:0580117407206811871FDD35491E8EDD + xmp.did:058011740720681188C6DBB8DBD34557 + xmp.did:0580117407206811891D9A76213AD321 + xmp.did:05801174072068118C14A56C815EEBE2 + xmp.did:05801174072068118C14B4DD23E1D3A1 + xmp.did:05801174072068118DBBDD8740606419 + xmp.did:05801174072068118DBBFA659908F426 + xmp.did:05801174072068118F62898800582DD4 + xmp.did:05801174072068118F628C5BC7FF1E1F + xmp.did:05801174072068118F62984C1217D466 + xmp.did:05801174072068118F62AAC437B0569A + xmp.did:05801174072068119098DA7C50E50539 + xmp.did:058011740720681192B09470F75BAE8F + xmp.did:058011740720681192B0B03D2B78CFDD + xmp.did:058011740720681192B0B61BEB8C9F01 + xmp.did:058011740720681192B0D23C6B26FA61 + xmp.did:058011740720681192B0FBBF273EF816 + xmp.did:058011740720681197A597D191AFA363 + xmp.did:058011740720681197A5DB8368FE3A9F + xmp.did:0580117407206811A19FB5BA4D4BF9C3 + xmp.did:0580117407206811A440DAC4D3AECDA0 + xmp.did:0580117407206811A7BAADB4251DCAF5 + xmp.did:0580117407206811A961C2694732FD95 + xmp.did:0580117407206811ADA39FC4783CF9F8 + xmp.did:0580117407206811B2F4B2F0A10807CB + xmp.did:05B3A7C0E52FE0119481B2AB2F1C53E4 + xmp.did:05CF7E453FCEDE11AC1FBF9D231E361F + xmp.did:05D720460FB1E01185478864776A63BE + xmp.did:05F558C2BA0DDE11966CA376FEFD02A9 + xmp.did:05F62454A04B11E0AB64DC5078560F42 + xmp.did:05cf0a5c-82f6-bf46-a007-def5fbc34765 + xmp.did:062055f4-086c-e846-9832-4089e30df7e2 + xmp.did:0629BE83ED0EE311A3E9992A0C1C99C8 + xmp.did:064147651220681192B0BACAFE6A899F + xmp.did:064318E581A6E01198E4BABA0C846270 + xmp.did:06729E409DB1E111A5D6A14D3FDF7115 + xmp.did:06801174072068118083B98A8E501C2D + xmp.did:06801174072068118083C045A5A1E25C + xmp.did:0680117407206811822AB1921B4CF57B + xmp.did:0680117407206811871FC852CC88A456 + xmp.did:06801174072068118C14EA6C2BE28AF3 + xmp.did:06801174072068118F62FD9B9E717B6E + xmp.did:06801174072068119109B5757D1049F7 + xmp.did:068011740720681192B09470F75BAE8F + xmp.did:068011740720681192B0BB675D642E18 + xmp.did:068011740720681192B0E5094E035523 + xmp.did:0680117407206811931DB3FBE9BC56F2 + xmp.did:0680117407206811935398A7741CF40E + xmp.did:0680117407206811994BE3C8EAA36895 + xmp.did:0680117407206811A613B4EE39B4D58C + xmp.did:0680117407206811B1A48ACCC66BA1E0 + xmp.did:0680117407206811B54E8C27DD2A0032 + xmp.did:0680117407206811BE34FA518E62CFAD + xmp.did:068599d7-9596-cd44-b6eb-173724e672eb + xmp.did:069AC01433C211E0AA8582F7083052C8 + xmp.did:069D1FA5F012E0119CEFBA954A5518BB + xmp.did:069E61B2CCB211DFAC2D95EB3860F061 + xmp.did:06A12A9D0B206811994CB333F17797A8 + xmp.did:06FC0B33D8A5DF1183E59C1AD22E9595 + xmp.did:06d46704-580d-5247-97dc-4b1237b19442 + xmp.did:07019CEF42C3E011A406C2A95AFDCC0E + xmp.did:07130D8FC10DDE11966CA376FEFD02A9 + xmp.did:075BCB56A276E011840CA4CB3ED18DDA + xmp.did:0780117407206811830EB14038E6D0C0 + xmp.did:0780117407206811871F9320A1FBB4A2 + xmp.did:078011740720681188C696DC609994EC + xmp.did:078011740720681188C6CAC5BEF2CC51 + xmp.did:07801174072068118C14CA160A1107BD + xmp.did:07801174072068118DBBE31A192FEEDC + xmp.did:07801174072068118F6288F23A50D5DD + xmp.did:07801174072068119109DDBC5677155C + xmp.did:07801174072068119457905C16F6CCBC + xmp.did:0780117407206811994CC7F0B5403F08 + xmp.did:07801174072068119C9EAD5C12C9A96C + xmp.did:0780117407206811A72CF339EEA0CCAD + xmp.did:0780117407206811ACAFA9536D921588 + xmp.did:0780117407206811ACAFF062A38D63AE + xmp.did:0780117407206811AF52D0DBA53AB1DA + xmp.did:0780117407206811BAB9AF2C18A25AEC + xmp.did:0780117407206811BEB789E23D201984 + xmp.did:0780117407206811BF7DF951D6D80910 + xmp.did:0796F2FF2720681192B0C5B632F0693B + xmp.did:07AF93548537DF11BB0FAD6BFD45A840 + xmp.did:07BF8AD33B6CE111AB4D8DB66373418D + xmp.did:07C3E86C98E4DF11B11D84FE84A5BCF4 + xmp.did:07CF7E453FCEDE11AC1FBF9D231E361F + xmp.did:07D85B194F21681188C696DC609994EC + xmp.did:07E436F608206811B604BCFCB496C70E + xmp.did:07E6B75F4342E1118D14E6C2BB7EB7EF + xmp.did:07E83596F169DF11B10BB08092CF1009 + xmp.did:07FC96F20C2068119109F15A3E1BF8DC + xmp.did:07bdee08-5fa7-684e-9765-12732cbd152f + xmp.did:08084073AF60E011AFA79E3A4F01158E + xmp.did:0829BE83ED0EE311A3E9992A0C1C99C8 + xmp.did:085295E7D0C2E011B1DFE84FA2B3C4DF + xmp.did:087BB396181EE111A09287FE9D314E93 + xmp.did:08801174072068118083DB8F1A026FAD + xmp.did:0880117407206811871FA0C171ADCD10 + xmp.did:0880117407206811871FB03D861007B1 + xmp.did:08801174072068118A6DE3227BBC4D54 + xmp.did:08801174072068118F628C5BC7FF1E1F + xmp.did:08801174072068119109E507B66D7E71 + xmp.did:088011740720681192B080BDF09D73D4 + xmp.did:088011740720681192B0B191B1BF16B7 + xmp.did:088011740720681192B0B2C5393C2CD2 + xmp.did:088011740720681192B0BCCE1816D9E6 + xmp.did:088011740720681192B0EF67E7BA7EFF + xmp.did:088011740720681194578AA50D8ACBC3 + xmp.did:088011740720681195FEF9BABEDC41A1 + xmp.did:0880117407206811963CF2F523F9A511 + xmp.did:08801174072068119CD7B4F693D61F5F + xmp.did:0880117407206811A195E33BF38323D9 + xmp.did:0880117407206811B4F2DD609AE7DF4C + xmp.did:0880117407206811B7D5A9154E787253 + xmp.did:0880117407206811BED5AD4290BA1ADD + xmp.did:088F6FA571206811808383758E6AB92B + xmp.did:08AB61EF072068118C14CA160A1107BD + xmp.did:08ACBE8B444FE011A1F8D0CD47726D92 + xmp.did:08B6A48ADB86E011BFE892C38C7D5217 + xmp.did:08E3F215641DE111BEFDA90463470A62 + xmp.did:0903DF26646FE1118BB89C7736205CD2 + xmp.did:09208BA5FDABDF119348E4DBC826F65F + xmp.did:092C276A5DF411E0A80E8127450A213E + xmp.did:0980117407206811859EE31FF8DDBE8D + xmp.did:0980117407206811871FD8AA5A0491ED + xmp.did:098011740720681188C68CACA9496B43 + xmp.did:09801174072068118C149339A6CC4AB2 + xmp.did:09801174072068118DBB92791FD53C0C + xmp.did:09801174072068118F628191C0B70CF7 + xmp.did:098011740720681192B0A785E26ED8C6 + xmp.did:098011740720681192B0C87ABC946BF8 + xmp.did:0980117407206811A5AEEF90061E2834 + xmp.did:0980117407206811AEE4ECC20A5D0880 + xmp.did:0980117407206811AF2DFA6B7AD3F77C + xmp.did:0980117407206811AF52D0DBA53AB1DA + xmp.did:0980117407206811B2D9C93A76126968 + xmp.did:098E98F0CE46E111B7ED8183A09C93C2 + xmp.did:09ACACF31335E111943ECBE41034123D + xmp.did:09B542E7BA21681188C696DC609994EC + xmp.did:09B67F726EDEE0118B928F8C1ADC25AA + xmp.did:09BA72544F0EE011AF14CB98EFAB4DA6 + xmp.did:09C8147318EDDF119AFEB6392A6EF808 + xmp.did:09DDD7D4D6206811BB37D81EA9E9F402 + xmp.did:09E9C33FA1A7DF11BDB8F75F4D0AA037 + xmp.did:09F558C2BA0DDE11966CA376FEFD02A9 + xmp.did:0A45DB531F206811871FBF7EE03058F8 + xmp.did:0A5CBA2C8E9BE0118FFAB26FF922A0E8 + xmp.did:0A6E4F5D5B93E1118759E0BCEB009409 + xmp.did:0A80117407206811808381C0466C6EE8 + xmp.did:0A801174072068118083A2FF619D3EC1 + xmp.did:0A80117407206811871FBF7EE03058F8 + xmp.did:0A80117407206811871FF47DC91DE11F + xmp.did:0A8011740720681188C696DC609994EC + xmp.did:0A8011740720681188C6B57AC2009D39 + xmp.did:0A8011740720681188C6C5D9DC520BD2 + xmp.did:0A801174072068118A6DC5C740EBC4EC + xmp.did:0A801174072068118DBBAF3A0AE3DE36 + xmp.did:0A801174072068118DBBBFB8978460D3 + xmp.did:0A801174072068118F62E601B48A9F82 + xmp.did:0A80117407206811A613B4EE39B4D58C + xmp.did:0A80117407206811A613EF77C4B29473 + xmp.did:0A80117407206811B1A4D0E266413BEA + xmp.did:0A80117407206811B2BE95AD9B76376B + xmp.did:0A82B28EA187DF11A8DCCB01A1F3FBBF + xmp.did:0AB09B5BDA1EDF11ACBFD6BBB96B16C4 + xmp.did:0AC16A23D8B9E1119179D5459B6950F7 + xmp.did:0AC317AD1A206811871FBF7EE03058F8 + xmp.did:0AC619C70820681192B0F57DFE59A27B + xmp.did:0B0C84B3CFA5E2119989B5588E6BE483 + xmp.did:0B130D8FC10DDE11966CA376FEFD02A9 + xmp.did:0B17FBCE3962DF11A8C28E79BD783610 + xmp.did:0B45DB531F206811871FBF7EE03058F8 + xmp.did:0B489EAEB77AE011951EFD1A20FC35EA + xmp.did:0B5D13D80A2068118C14CA160A1107BD + xmp.did:0B69760EDA57DF11B9D4AD9095F18A8B + xmp.did:0B9C17DB299A11E1A81C96221D989B07 + xmp.did:0BB593A9BD50E011BCE58ADF7B2EFAF7 + xmp.did:0BB6FEBF86FEDF11B31AE73BCB4014BA + xmp.did:0BD56242FC02E011BF99EFC45AE4665E + xmp.did:0BF11FD1DE22DF118E04DE7FDFD8DEB5 + xmp.did:0C1C9CBE57CEE1119177BD2372B6623A + xmp.did:0C4246721A236811A2AED3DEE143B6BF + xmp.did:0C45DB531F206811871FBF7EE03058F8 + xmp.did:0C4CD748BB88DF1186FF95C9CDDA7F2A + xmp.did:0C4FF102172068119B57C9B046B49FDC + xmp.did:0C5D8D508821681192B0890367546977 + xmp.did:0C63A4D7298F11E1A74FEDDA888B3F53 + xmp.did:0C7ECD41DA0511DF8AFEC5441030B132 + xmp.did:0CCECEB75323681191098B3640855984 + xmp.did:0CCF6644C8A6E011979696CECC20A286 + xmp.did:0CFC96F20C2068119109F15A3E1BF8DC + xmp.did:0D0AB914E8FCDF119A3788D07212533D + xmp.did:0D14AC8D9CE111DF82FB9410A1B83330 + xmp.did:0D1ACCC98A20681194579E004F9F0D66 + xmp.did:0D1B479D585011E1846FD261BBD39365 + xmp.did:0D3351C04D44E0119C12D20236F1E089 + xmp.did:0D34739667206811871FBF7EE03058F8 + xmp.did:0D5C3F89B5FBDF118C90BA1F626B1FCC + xmp.did:0D74D9212D72DE11943CD2EA82BEC192 + xmp.did:0D8E98F0CE46E111B7ED8183A09C93C2 + xmp.did:0D9A9BFCEE7FE01182DFD33A26DD6908 + xmp.did:0DAB61EF072068118C14CA160A1107BD + xmp.did:0DB91C9156B3DE11A45B9A087A95E94E + xmp.did:0DC2B982FBA5E011A4FEE67DFDD7FB36 + xmp.did:0DE3B14C0D2068118DBBE3913583D1DF + xmp.did:0E0434AD60CADF11AB44E43C002A7EB1 + xmp.did:0E199D238FB2DE11A28ADA09035F6A96 + xmp.did:0E1C9CBE57CEE1119177BD2372B6623A + xmp.did:0E2330CF1D206811808394B683B79160 + xmp.did:0E2383CC272068119109827B1118762F + xmp.did:0E2AC53BD72168119109CA2496A1ABE5 + xmp.did:0E4D42CCC6BDE4118F75B2307B8F5D7E + xmp.did:0E5B766FFF58E111BF7FE96085014CBA + xmp.did:0E8C8607142068118083AEAC33B78D50 + xmp.did:0E906486BCFEDE11B925D68F9F94F6F8 + xmp.did:0EAB61EF072068118C14CA160A1107BD + xmp.did:0EC371A23341DF11877FCE2896D596F9 + xmp.did:0EEB11748845E0119C12D20236F1E089 + xmp.did:0EF0E86A9B51DE118A30D748E7BE306B + xmp.did:0EF4F9F5864DE1118B64937DE7C43D18 + xmp.did:0F28793F924AE011BB98A06D80C6151F + xmp.did:0F30D59357C8E011BEF0A37AC8AFF6B8 + xmp.did:0F477C9314206811BEDCC895EAB018D5 + xmp.did:0F69615F1DFFE011BA0D8CB5C6E87ACC + xmp.did:0FBFE3419742DF11A405F9CFB185DB65 + xmp.did:0FC317AD1A206811871FBF7EE03058F8 + xmp.did:0FCB77C0DB98DF11A9B6856372635A0B + xmp.did:0FD7005002B1DF11A381BC94E43BEB1B + xmp.did:0b4e4aee-d0cf-234d-a086-8b5eaef38df0 + xmp.did:0d182bd8-8893-4d2a-9de6-f45e9ffddee4 + xmp.did:100823B1CB0FDF119A0D9CB73A16B779 + xmp.did:101C9CBE57CEE1119177BD2372B6623A + xmp.did:106CA8FF09266811A4DFE6366F22B57E + xmp.did:106DE7AA3ADDE011A90AB20599575BD6 + xmp.did:1085A4F83DD011E0A5E4E63061587FB7 + xmp.did:108C8607142068118083AEAC33B78D50 + xmp.did:109510C05D4BE011B355BFFFCE138235 + xmp.did:10C249B651206811AE568088196B6FA8 + xmp.did:10CF6644C8A6E011979696CECC20A286 + xmp.did:10E450BBC642E01188FCEF0865FE6AD3 + xmp.did:10FD0E65092068118C14CA160A1107BD + xmp.did:110899159F70DF11AD48C2D8F6D670D2 + xmp.did:110B17C51594DF11A865AA8BEFE19711 + xmp.did:112A90B7909811DF80ADCEC8AA0E941B + xmp.did:112A90BB909811DF80ADCEC8AA0E941B + xmp.did:112FE45E2F43E111A5B7A0D857352604 + xmp.did:1134739667206811871FBF7EE03058F8 + xmp.did:114B95BC7972E011B7EEAAD82DC22765 + xmp.did:1168C833A504E011AC00E7975252639A + xmp.did:11859DB9FE10DF119D64B9F1C6536ADB + xmp.did:118BAEF0A369DE1185CF931BF48C00F3 + xmp.did:118C228145D0DF11902880725A4E63E2 + xmp.did:11995992062368118257B23D2B92E3AD + xmp.did:119A01FA9E2068119022D6BA6E344F5A + xmp.did:119B03C983CA11DF8F388068874D899E + xmp.did:119DA4A99857E0118B5FCAAC01D5B2AF + xmp.did:11A4EB64D304E011ACA9FE96628951D8 + xmp.did:11A77212D348E011B6BAB55D64F5962D + xmp.did:11AED5C2273CE111BD82E45AA15E472B + xmp.did:11B593A9BD50E011BCE58ADF7B2EFAF7 + xmp.did:11F6ACA3F761DF1182D1B9AD17E74805 + xmp.did:11FB407FDBE5DF119CEFD33EC3DF08E5 + xmp.did:11FD0E65092068118C14CA160A1107BD + xmp.did:121C9CBE57CEE1119177BD2372B6623A + xmp.did:1224A136CB54E1118AA9FCE1339F6D7A + xmp.did:122FE45E2F43E111A5B7A0D857352604 + xmp.did:125DB980B791E011A9BC9893AF4A736E + xmp.did:1267AE7DA9AFE1118972B868C4837CE7 + xmp.did:12789957BE7FE011AC77AB678D025B14 + xmp.did:127941515924DF11A2CCE29A3F875792 + xmp.did:128BC47B2F20681180839613FFBBFAAC + xmp.did:128E72C61B36E011AA13EDD9B386B3B7 + xmp.did:128E8557D271E111A462F06351BEE1BC + xmp.did:12A8FC28BA7DE1119284A55EC9A88E72 + xmp.did:12B593A9BD50E011BCE58ADF7B2EFAF7 + xmp.did:12B6375A0E206811822AAEB57B3841C0 + xmp.did:12C55D8DD2CCE01183FA9F0BD546AC9B + xmp.did:12ECDFCC6918E0118317A5126B184C9C + xmp.did:12FD0E65092068118C14CA160A1107BD + xmp.did:130F0792073711E2A496EA31311299BA + xmp.did:13296BD7929AE111A9FAD16AAD7C28D8 + xmp.did:1333C5BD3420E111B7A0E92820316FCA + xmp.did:13422BA1C55AE1118D069EDA77E6B0AC + xmp.did:13443BEF112068118C149D08F70A161F + xmp.did:13813029F4B4DF11B802D46C713DC211 + xmp.did:138802412B31E111B820EFD39635D3EC + xmp.did:1390C595F649E0119FC380FD3FA1A852 + xmp.did:139534B9E0EBDF11AF7ADC785B21E360 + xmp.did:13A416BB7048E111B643FB719502872B + xmp.did:13AA875FE818E1118B23FF08337BAACC + xmp.did:13B748432EA2E0118D04E5AB37155918 + xmp.did:13C28629DDBDE111ACB8C1698976EF9C + xmp.did:13C7B5D563CDE0119BDA95D20C9589FB + xmp.did:13CC46273CC7E011A6079E241A5D815E + xmp.did:13ECBBB17E1CDF118D4EF1C33EDDA687 + xmp.did:13FB2319A088DF118C39B933A933A347 + xmp.did:13FE1320490111E2ADADF8E3C92E6B02 + xmp.did:14006bf8-cbc1-f147-8df9-681a303d3110 + xmp.did:1405155F5AB9DF1189DACB811D57ABC7 + xmp.did:1405CBF03BF711E0909EA53496E0FC1C + xmp.did:1405CBF43BF711E0909EA53496E0FC1C + xmp.did:1415A4E4F08EDF1191A5FE8834A1728C + xmp.did:141C9CBE57CEE1119177BD2372B6623A + xmp.did:1437CB2E34E9DE118EC4B76DFBF31F4B + xmp.did:143f78ae-626f-764b-8ea2-452aab0c99bb + xmp.did:144699D31EE5DF11A0D68F50E2E34A90 + xmp.did:144C62F9830311E0B62FB7127DA0FEAF + xmp.did:145F3D5A96BD11DF9A7FBB5BBBCCCBEA + xmp.did:146C32C21F2068118A6DB4DDC650E5F6 + xmp.did:148d7990-0960-7c40-8573-be98c0c8bf5f + xmp.did:149A2C74143211E08BDAEBD1A8E6A826 + xmp.did:149C8558F373E0119389FF7D0DABFC0C + xmp.did:14ACD3C81245DF118203F68C54C1A0DE + xmp.did:14CC1D4BCCC5DF118911DB8CEA0F9CB9 + xmp.did:14EBB71A132068118083AEAC33B78D50 + xmp.did:14EE5C22C36CDF1197E5FE2AEAE05669 + xmp.did:14F64E789CE111DFB2E3D6893F51AB44 + xmp.did:150899159F70DF11AD48C2D8F6D670D2 + xmp.did:154EEDF4F623DF118A3E9F535F499037 + xmp.did:154F526AB7FCDF118B1C8E78BC400721 + xmp.did:15699ECEBEAFE011A4B094F7328E1620 + xmp.did:1586A9B357A3E211B022F4E950FBC6B4 + xmp.did:1588ABA64B7EDF118BB3FD3FFFE50FBC + xmp.did:159E8302022268118DBBE87F8545CD69 + xmp.did:15A60D6946B0DF11B459F9C5D2A949D8 + xmp.did:15C74F053731E0118B4EDEFD095D4C79 + xmp.did:15C9895284D3DF11B5A1BCED77057419 + xmp.did:15EBB71A132068118083AEAC33B78D50 + xmp.did:15F12FE2F4C5DF1186D1C8377ADB48B2 + xmp.did:15FAFFF52B2068119457D5C82447A0CD + xmp.did:15FB2319A088DF118C39B933A933A347 + xmp.did:15FD0E65092068118C14CA160A1107BD + xmp.did:15b6ba64-7918-3f45-86f8-950abb019668 + xmp.did:160351370E7FDF1181B8AE21B5EA78C7 + xmp.did:16070F7F0BE3E01194ECD7FC4F209A7F + xmp.did:1630586DC9E3E0118D4BE9BCF87F398E + xmp.did:164699D31EE5DF11A0D68F50E2E34A90 + xmp.did:1675507DDCD8DD11952EC9897C80DFD8 + xmp.did:167612E912BAE011AD10F716DE4F0EFE + xmp.did:1676A34E2C206811ACAFD841B9E6979C + xmp.did:1677A958C8A7DF11B688E446FD3869C9 + xmp.did:168BC47B2F20681180839613FFBBFAAC + xmp.did:16ABDF08E643E011A54EA1A1FFB2B698 + xmp.did:16B5EA561C21681191099A139FF76C18 + xmp.did:16B92BCEDEE1E011ABB781E34B7569C6 + xmp.did:170463185620681192B0D8368D31C23C + xmp.did:170899159F70DF11AD48C2D8F6D670D2 + xmp.did:17306FF5A4D5E211A347A22AEE85530F + xmp.did:17385DBEFB20681188C696DC609994EC + xmp.did:17674B35638BDF118591B0078DD03A9E + xmp.did:179713BA272068118F62B88BBDD1F4FF + xmp.did:17A3E092B44AE011BB98A06D80C6151F + xmp.did:1833D0D35707C411BAEBAC26ED8D2ED5 + xmp.did:183888C4FDE4DF11925EE4D38FAB2E00 + xmp.did:18407EA49F74DF11B9ADF501B1FEEC5B + xmp.did:18503ACC11206811A7BADD5938E42519 + xmp.did:18813029F4B4DF11B802D46C713DC211 + xmp.did:18A6A5FAB913E01180DACEB1E4B080FC + xmp.did:18CE27CC3420E01192BAF60E2D449637 + xmp.did:18E040BF726B11E096478444BF297328 + xmp.did:18EBB71A132068118083AEAC33B78D50 + xmp.did:18F1103E54C3DF11AAE49CD88AA644AB + xmp.did:18FD0E65092068118C14CA160A1107BD + xmp.did:18FE1CEEFD20681188C696DC609994EC + xmp.did:190199FC5262E011BDD3C26ED7614871 + xmp.did:190899159F70DF11AD48C2D8F6D670D2 + xmp.did:190F2847BEF0E0118A9BA6EA72D626E7 + xmp.did:1910EBBD19206811B9E7EC5D3392470D + xmp.did:192895DB0886DF118FBF8215B1849E81 + xmp.did:192C1F6D5580DE118E06D71BE6D50B31 + xmp.did:1957E59BE7F9E01192AC901847929BEC + xmp.did:195B89EC3133E2118A6581FF27BDA713 + xmp.did:195CABB2FDD8DE1198CCB8DEB6935B47 + xmp.did:196278770A9BE01185E6CE2ED1C79073 + xmp.did:1971B4715124E11182A8FDB9299DD644 + xmp.did:198D4B85F327E011A95F93AD65E6DAF5 + xmp.did:1990B25A12216811871FAE052E76F513 + xmp.did:19BDC4EDD030E111A238F3B8EC015E1C + xmp.did:19D0A6EC3167E011B073F4CE04289083 + xmp.did:19FB2319A088DF118C39B933A933A347 + xmp.did:19FD0E65092068118C14CA160A1107BD + xmp.did:19d61e98-27fd-0443-8b6e-7377d77eb0b2 + xmp.did:1A0AA41B6576DF11A0EA8D814D891314 + xmp.did:1A0BD277C45EE011B42CE1788AE2BCA5 + xmp.did:1A15B6748E1AE111B7D1FF378EBA5033 + xmp.did:1A2541A6184CE1119FC3B1E51233686E + xmp.did:1A5A3B326B2068119109C0AB8E06FDAF + xmp.did:1A6A210EBD21681188C696DC609994EC + xmp.did:1A7A2A5E8F59E011804CC2E4C9E088FB + xmp.did:1A911DC6E31FE111969BB17CC3743599 + xmp.did:1A94536A323A11E0A7B8D76BEBDDFBE4 + xmp.did:1AAA61C531206811857EF51D78886996 + xmp.did:1AAE40E5D26711E0A16FC1B17E7100AA + xmp.did:1AAF7B7A6213E01194C8A20EE3DADB15 + xmp.did:1AB777227629E0119AD1B945C1964BAE + xmp.did:1ACC13480557E011921BE2DE87A39B49 + xmp.did:1AEBB71A132068118083AEAC33B78D50 + xmp.did:1AFFB7E90EFDE111AA9E9A5BC1B6D795 + xmp.did:1B0390D88098E111B875C576C5836730 + xmp.did:1B1EFFEC6313DF11A719F1AF52661082 + xmp.did:1B23937A3BA3E111A268C964C1959643 + xmp.did:1B39818209206811A67A9DC1E80E5213 + xmp.did:1B3ABA9900D6DE118548C91E49E7E93C + xmp.did:1B4B62D9C62068119109D77742DCC440 + xmp.did:1B4CBCBCC095E01189CBD2A609D6972A + xmp.did:1B61A465988DDF11B96ADBDD437880CB + xmp.did:1B623870283EE1118BB3DE9E3CCF5DB2 + xmp.did:1B8BC47B2F20681180839613FFBBFAAC + xmp.did:1B8E4532D5AB11E2972B9F608C03703F + xmp.did:1BA35FBDD3E1DF11A98DF895371D07C8 + xmp.did:1BA936B2FDA8DE119C209F7286AC4160 + xmp.did:1BAE87329FB0E01188E1AA94663BE5B8 + xmp.did:1BD6A30692A8E0118BA8F2782CB3F003 + xmp.did:1BE9E00FAF2AE011933E95A9CBDB21E1 + xmp.did:1BFB2319A088DF118C39B933A933A347 + xmp.did:1BFDF77BE259E1118098AD4632914BB1 + xmp.did:1C008091733CDF118839BBC600ACDD9D + xmp.did:1C01C42FF620681188C696DC609994EC + xmp.did:1C03146227226811AF6F8C15B6994DA7 + xmp.did:1C498A33A881DF11B86485F7B3FF4213 + xmp.did:1C653EFFC923E011BED2CF43647FDCC7 + xmp.did:1C6EBF246C71E011AE23C25524073F4D + xmp.did:1C6F70AADA21681192B0D74B25A6FE48 + xmp.did:1CA936B2FDA8DE119C209F7286AC4160 + xmp.did:1CCC13480557E011921BE2DE87A39B49 + xmp.did:1CCF6619A3A8DF11B402D829E1AF718C + xmp.did:1CD432F0075CDF11B590C19EA4D3919F + xmp.did:1CDCFBBD7B7CE111B0BEB930474C6B67 + xmp.did:1CDE2116A10AE111B798EE6A89479D6E + xmp.did:1CFABC7B83AEDF11976BF02EC76C78FF + xmp.did:1CFE1CEEFD20681188C696DC609994EC + xmp.did:1D012E9EC9C3DF1190EED90E3B79DA34 + xmp.did:1D0682D8122068119109A276E6305D40 + xmp.did:1D06EF8E726B11E08CB3DF7C657CD3E9 + xmp.did:1D307A7A80BADF11851194AD5EB44AB5 + xmp.did:1D39EBED82E7E0119F95E4617094B01B + xmp.did:1D51DAA7222268119109F828D8DAF436 + xmp.did:1D5FC748769DDF11A07CFCC065F27E63 + xmp.did:1D6E1784A5EFDF118F5EA1FEA851DD4E + xmp.did:1D6E4373AC5FDF11A68ED251FF23EC34 + xmp.did:1D794D3196A0E011BA5FA492FDC2C4B6 + xmp.did:1D81CCD3DF46E01181FBAD6FFAB64B28 + xmp.did:1DCAD36F0C20681192B080542646EBD1 + xmp.did:1DCB8B9A0812DF11BE11979D0FB896E3 + xmp.did:1DD8DCEFF8E1DF11B0C29F011F8D948B + xmp.did:1DDA0DAFE025E011AAA2BA205A7F56F7 + xmp.did:1DDBCEB646BCE0119CF4D82CEDF9C9E2 + xmp.did:1DE5B5A0B60EE11193BDEF643AA2079D + xmp.did:1DED8CFF57BBDF118185E1BC98F91251 + xmp.did:1E01C42FF620681188C696DC609994EC + xmp.did:1E059DA44734E011AD25903082F159FB + xmp.did:1E05E6112791E011AD7CBB3464098A77 + xmp.did:1E311072C331E11194979B80FD445456 + xmp.did:1E424F30D125E111B075EDD02FAE7909 + xmp.did:1E6BED5D142068118083AEAC33B78D50 + xmp.did:1E7745A2909711DF80ADCEC8AA0E941B + xmp.did:1E7E6F2C19E8E1119DFDF0AAA80BF1AE + xmp.did:1E80613B091FE5118B2CC47253EA7592 + xmp.did:1EB15ED9842068118DBBE1DE0D19E0B9 + xmp.did:1EC0AD1472DFE011BAC7F7CD194FE1BE + xmp.did:1EFE1CEEFD20681188C696DC609994EC + xmp.did:1F0E31230A20681192B0D4E402E58F0C + xmp.did:1F1D7FCAFE81DF11982BEF51EBA56B3D + xmp.did:1F2119CB0D28DF11B485DC92488E5BE5 + xmp.did:1F71AF8A4424DF11A45CDFEF6351A413 + xmp.did:1F7560349B4011E192EFD39D50A0C01E + xmp.did:1F7560389B4011E192EFD39D50A0C01E + xmp.did:1F96F439A17DDF11A5BB80E3C2BF9E62 + xmp.did:1F9843056202DE11A007CED31C5D911A + xmp.did:1FA8469BE665DF118DCBBE878367E83E + xmp.did:1FD7DD84AC96DF11AF7B8C47AE027F5F + xmp.did:1FDDD329BC2311E09D78E5B6B72E92C3 + xmp.did:1FE3A640427AE011A4D3C40ADA3B0913 + xmp.did:20097E60662DDF119736E0BAAF1A32B3 + xmp.did:202F428543206811AFFDE9CF455472A7 + xmp.did:20391033142068118083AEAC33B78D50 + xmp.did:2044ADD676206811871FD21234BA3CD0 + xmp.did:204A52660B20681197A5EA3B7AA659C7 + xmp.did:204C7365ACCCE011BB4EBA4BAF741CB8 + xmp.did:206BED5D142068118083AEAC33B78D50 + xmp.did:2083E2D53249DE11B242B7245CD43D11 + xmp.did:20954B6E3791E0119DE0C72DBAF511EC + xmp.did:20B881312B20681192B0EDAAC00D9FEC + xmp.did:20CC13480557E011921BE2DE87A39B49 + xmp.did:210C18881B21681188C696DC609994EC + xmp.did:212351349793DF119EE58BABBDA2F19D + xmp.did:213D01546D8911DFBDD584DDC8C95BF8 + xmp.did:21456010E93FE1118DF19C6DFE49C038 + xmp.did:21526CD64C32DE119A0AD46B4D57677F + xmp.did:2153A58CEF2EDF11B015F162565C4D20 + xmp.did:215D6A12242AE1119583FD4A981E0514 + xmp.did:216BED5D142068118083AEAC33B78D50 + xmp.did:216EA2C971D1DF11A9A9AAF92A4138CE + xmp.did:219911BF2F6BE0118B53B756951DDF56 + xmp.did:21A1E2606B69E1119BC5AC22F59AD4A8 + xmp.did:21BCF77D6204E2118B88C0833978F058 + xmp.did:22004E5C8945E111837BE511CDAD0396 + xmp.did:220C18881B21681188C696DC609994EC + xmp.did:221DA41761EBDF11B4C7FA344C4ACFF6 + xmp.did:22210C8C5319E0119A76EE7A30A1B9CC + xmp.did:2225159BDC8B11E09B5DFF3123B16F4B + xmp.did:2236E2A0C47011E2B1FCEDB464DB21E7 + xmp.did:22391033142068118083AEAC33B78D50 + xmp.did:2243C600B5BCDF119C53D099D360BF41 + xmp.did:2248DE05EF5AE011AED0888478157EEB + xmp.did:227F9ACE69BBDF11A3C3D994FB1E0DEF + xmp.did:2290EDEA89E511DF987689350325E293 + xmp.did:2299D32616E9DF119EE6A28EBD59B416 + xmp.did:22A57726BD12E1119586CA38910C2E67 + xmp.did:22BFF6B598EF11E0BD518E09C122C174 + xmp.did:22C806AD0E206811871FE8E0BEDD65C0 + xmp.did:23301B1D792068118083982FE4C6204F + xmp.did:233270CDBA206811BAC7A817D1EDAD8E + xmp.did:2339EBED82E7E0119F95E4617094B01B + xmp.did:233CA3500C07DF11AE60905F6C3D438D + xmp.did:233CDBFC62BFDE118D6FB67E48281758 + xmp.did:234A9D729421DF119109F0ACE0E21257 + xmp.did:2354DBCDC557DF11A4CDEE669799F3B1 + xmp.did:235D27118B7EE111A4C382D12C4BE1E5 + xmp.did:2372B99EE0C4DF11A4BAA9DBEB0EA131 + xmp.did:2381B37D10F2DF11AA14D86ECA20CB32 + xmp.did:2386A87CA8A8E111832BA801CB77D0B8 + xmp.did:2394DF3F13CADE119AF59113C51E0990 + xmp.did:2402730118206811B965DDDEC622804B + xmp.did:240A160F1B9AE111835787A7994F4DB5 + xmp.did:24345A846137E011A281D9E28D60DC29 + xmp.did:2452D635CC5B11E19240974EAFAEE1EE + xmp.did:246BED5D142068118083AEAC33B78D50 + xmp.did:2472B99EE0C4DF11A4BAA9DBEB0EA131 + xmp.did:24749AB17CB4E0118F5594D39951C4EA + xmp.did:2489D9C785216811A5CD8E2C727667D5 + xmp.did:249077570A206811910986D9CD6AC386 + xmp.did:249ECF072BFEDF1196FEEFF1E699BCF4 + xmp.did:24D4DC9163CADF11865BBEA8B1A148C7 + xmp.did:24DCDFF4B827E0119D7EA0B8C6F18753 + xmp.did:24DE300A77FADF11957CB6C8F2BB99C0 + xmp.did:24E23E65851CE0119B0A91B54FEB90C8 + xmp.did:24F54ECDBAC9E011B63BC6CF19B00A92 + xmp.did:250102237361DF118C2F8B603FA9D0EE + xmp.did:250F37FDBE65DF1196A2E5386EB7EFBF + xmp.did:252A728E65BBDF11B714F0C6E94ABD01 + xmp.did:253270CDBA206811BAC7A817D1EDAD8E + xmp.did:253BB8CF7046E1119E8CD6BCD32F89A5 + xmp.did:25481FF6A7206811B560FCE792BD8256 + xmp.did:25866E4DCB93DF118EC3E666F3952F73 + xmp.did:25BEC20513206811871F84AF8C99E562 + xmp.did:25E23E65851CE0119B0A91B54FEB90C8 + xmp.did:25E79850026FE3118753E8A48FC4C61D + xmp.did:25FFEA96AEBCDF119C53D099D360BF41 + xmp.did:26337EA7B505DF119F47940FE5A79D7A + xmp.did:263967D6EC86E0119165A3612045DBE6 + xmp.did:263F1CEF0AC1DF1186AAE9D42E01A0E5 + xmp.did:267A70FFD257E011A551F15593603B5A + xmp.did:26A4259B2236E111A60AFDFD3494DFC6 + xmp.did:26AE56BBFB60DF119E238757E43BEA24 + xmp.did:26DC91929B62DE118673AEAF55AC4B9D + xmp.did:26E0B8B18EA2DF1196E6B4BE421E334A + xmp.did:271B6C3D1B17DF118E43E01B5B84694F + xmp.did:2749DAC169E0DF11BAE2A9F4FA1C730E + xmp.did:2751605F3A9EDF11991F86307F06F0C5 + xmp.did:27A42225BA50E0119EC4836FE5ECCA6E + xmp.did:27C109D5ACDEDF11BAACCFE187E6E735 + xmp.did:27F361B3F23FE1118DF19C6DFE49C038 + xmp.did:282F44E5EFE9DF11A2C6F6A60B573B0E + xmp.did:284C528525EEE2118537FBF283DEA7FA + xmp.did:286748CBA8CFDF11AC52BCF55247214F + xmp.did:2871BC98AC46E011994BB9DA04640F71 + xmp.did:2877DFF125206811871F92C91D0752B0 + xmp.did:2883363E18ABE1119D4C8C98D1458D3C + xmp.did:28EEA9B79AD5DF119648F8511B7417D3 + xmp.did:28EEAF508EEFE011857193D706463FBF + xmp.did:28F5806BFD06E011883EC480562D690C + xmp.did:28FCAEE8B6F9E0118FB3F60114B64F88 + xmp.did:2928DC004423E01199ECC9B0A3B730D7 + xmp.did:29339019AE55E0119C03A862C7BF6F88 + xmp.did:295F4B73C7E0E0119883AE36044E416D + xmp.did:29736942E3E7E111841DF425904A942E + xmp.did:29848F31D665DF118981BAF63188CA1C + xmp.did:298DFD0487FCE011B611B90EF8DBFCE0 + xmp.did:29A459F88D57E1118E45F85BBAB4DA8F + xmp.did:29D021750C20681192B09EEE150B510A + xmp.did:29E506C93B276811994C9298C019EA01 + xmp.did:29ded42c-aaa8-0746-9c46-aab89629f90d + xmp.did:2A133E62CA43E1119C07EF2F0F32B02F + xmp.did:2A2A897D112068119109970771D39581 + xmp.did:2A3D854F0A2168119109FB109986C91C + xmp.did:2A474F7D19DAE011ABC1EFB64D397171 + xmp.did:2A4AA45345D2DF1185189E5A46B3E5A3 + xmp.did:2A635F4534CBE011901DD96AD9169FB8 + xmp.did:2A7F9BC3C8F5E011A67FE7D8A752AFAC + xmp.did:2A7FB2515552DF11BDA3C516F5733777 + xmp.did:2A8DADA9201EE011842A99364FEBD0F6 + xmp.did:2A9B5ABB7D25DF119491B0761830187C + xmp.did:2AAE29F7FD58E111BB8F9DC6281BDD0E + xmp.did:2AB6FB8F0D20681192B0BA0F85A3D33D + xmp.did:2ABB75037D1A11DFBF66D19AE0AB5B1B + xmp.did:2AC8E28B29A3DF119400A18B9B4C9FAF + xmp.did:2ACBDB71A8E2DF11808B86C388970AFE + xmp.did:2ACF258E325DE011A1A5CBD15F1C5D8A + xmp.did:2AD0EDC3202068118C14F3F57EB97687 + xmp.did:2ADE300A77FADF11957CB6C8F2BB99C0 + xmp.did:2AEF83285D6AE0118EFAA635AEFDADDF + xmp.did:2B0A3C04210CE1118BB8D0D4C6305803 + xmp.did:2B0D56323CB4DE118FA4962B833E7A9B + xmp.did:2B1AA3CF538FE0119333C691B7ECC124 + xmp.did:2B1D26DEA948DE11BC16EF6281DA5CD6 + xmp.did:2B44CCF91D2B681197A5BB6C7B9E1199 + xmp.did:2B47F7FACE8311E1A4CCB1433E3CE3F6 + xmp.did:2B49DAC169E0DF11BAE2A9F4FA1C730E + xmp.did:2B6115077BC9DF11A64EBB615C35DEA8 + xmp.did:2B8B4AE0132068118083AEAC33B78D50 + xmp.did:2BAA4CFC62B3E41191C3B4AB4D7594DB + xmp.did:2BAD824AE6F8DF118C299CAFA43E008F + xmp.did:2BD021750C20681192B09EEE150B510A + xmp.did:2BE4BFFEB8EEDF11B7C1CF6602A8309F + xmp.did:2BF84DC38B7BE011A3A4CE3E3923186B + xmp.did:2C27EAC7B261DF1187CFEC85A6077A87 + xmp.did:2C46390A7D4911E0A66DC919951D3F2B + xmp.did:2C514E4873D111E0B183883F507A6AA6 + xmp.did:2C76D9E54805E111AA27B947B661C864 + xmp.did:2C90511B4823E011A604D29FE708717A + xmp.did:2C990FC5072068118C14CA160A1107BD + xmp.did:2CC971D6DCE1DF1193B8A11A80F46236 + xmp.did:2CD69660F8D811E08A34F531155FB012 + xmp.did:2CF979B3C8DAE0118F54FEE4FA6B9BE3 + xmp.did:2D0F9B62D65FE011ADDDA36461497BD4 + xmp.did:2D18B920232CE0118D26A5501B52DB2B + xmp.did:2D3CD42E092068119D50B6EC82CAAA2B + xmp.did:2D65D6BC7474DF118398F5759BAB55F5 + xmp.did:2D99977BA60FDF11A663B3CC09C0547C + xmp.did:2DA1410E252168118083BAC84F2457CD + xmp.did:2DA2E4C6F3BCE011B0BBD5E3244285CA + xmp.did:2DC473A80D88E111A27BDFDDE14F6A5C + xmp.did:2DC4D985DAD7E411B3FEA50799D84EFE + xmp.did:2DC9DC8B437DDF119F2A8FE6D6E90A77 + xmp.did:2DD0EDC3202068118C14F3F57EB97687 + xmp.did:2DD6CDEC4A04E011B15AC30C24A54B64 + xmp.did:2DD7DD06DC34E211AF10888AEAD9DF4D + xmp.did:2DE1C03C5734E011AED69D90325CB47C + xmp.did:2DE476E6272EE0118717C7B7818F0867 + xmp.did:2DFA3008F145E0118E94883E6C42447E + xmp.did:2DFCC9F8BDACDF118C7CD3DE88742B47 + xmp.did:2E022BBA40206811AFEDB4DC5A5EDBC9 + xmp.did:2E07B97B68DDDD1184E79F539C3A3CA9 + xmp.did:2E09C00AAEB1DF11874DE165FC2CAE6D + xmp.did:2E229BE45760E0118647B4BD29669B78 + xmp.did:2E2E05D5EB206811B942A79AA091CB27 + xmp.did:2E2F95DB5C206811B2919DD4FBB4B4ED + xmp.did:2E4A134843CCE011907C944EF181D2E5 + xmp.did:2E53E9854520681180839B699B907CBB + xmp.did:2E7D0E247F1FE11190B5ADF6C8AD76FD + xmp.did:2E8053D8251111E390FBE5B6607B6479 + xmp.did:2EA88880F351E0119FA3C3F403909A9C + xmp.did:2EB70B5A0E28DF11B4E2B1144153ED13 + xmp.did:2ECF258E325DE011A1A5CBD15F1C5D8A + xmp.did:2ED021750C20681192B09EEE150B510A + xmp.did:2EE343CF085BE11180ECB61B3F01627C + xmp.did:2F290AB9132068119109C80A4C3147BC + xmp.did:2F2BE9891D0EE011AEC5808E67DE2706 + xmp.did:2F417DC75267E011BE62CDD64055EB42 + xmp.did:2F5260E91D206811910985FEF6C92AFB + xmp.did:2F82ABD94D22681192B0D8368D31C23C + xmp.did:2F9782BF00C8E011BEF0A37AC8AFF6B8 + xmp.did:2F99977BA60FDF11A663B3CC09C0547C + xmp.did:2FBD825F122068118C149D08F70A161F + xmp.did:2FC894ECF498E011B70887249EC6C9FC + xmp.did:2FD7E5F70B2068118C14CA160A1107BD + xmp.did:2FDEFA454AD1E011A59BDC498A75C8F7 + xmp.did:2FF6F093A03ADF119FA5A2D495BDF4CA + xmp.did:2FFDCB0493AA11E0A5F9C48554239AF0 + xmp.did:2babb524-c727-ab4f-95d9-d65d64aeab7a + xmp.did:2cd91272-c4ba-494f-9f81-e34d68b03593 + xmp.did:2ceddac3-3387-a348-9a74-7995c3eeb1a5 + xmp.did:301929B65CEE11E09B55EF992C528CB8 + xmp.did:30207C0B082068119D0EEBB18A773162 + xmp.did:307FCAFEC156E011921BE2DE87A39B49 + xmp.did:30AEA8DECADDE011A4399928ACF14F53 + xmp.did:30C39540A904DF119F2CD4E3A2525BA6 + xmp.did:30D021750C20681192B09EEE150B510A + xmp.did:30EB6D82FC0F11DF9D61AA9246C50B45 + xmp.did:311D5090367EE0119980D9C7A0723BCA + xmp.did:31552C38272068118A6DC2EB5CD0A707 + xmp.did:315B2BEDF441E111BE03A1B44FC41281 + xmp.did:315EC7B24277DF11A28CDB2E6E8DED8F + xmp.did:317371BE4FCE11DFAD1291F8D717A6FE + xmp.did:3188EF82A709E111B40DAE91BF70E9AB + xmp.did:31A5ECFE7D2511DFAADB97C6C8460709 + xmp.did:31AF7E2B78BADF11851194AD5EB44AB5 + xmp.did:31B768BD9604E1118B6FB5AC61CFF447 + xmp.did:31BD825F122068118C149D08F70A161F + xmp.did:31E36DF20606E011A9E0EF066A03BB94 + xmp.did:31F8A6A75E57DF11A073F7C6A2978EA7 + xmp.did:32054947A478DE118A05DDA10CB105D4 + xmp.did:3209B8035307E011A6C3C9B01D013BF7 + xmp.did:320AF4FDBCBB11DF9A12D89AE4A6FCDB + xmp.did:320AF505BCBB11DF9A12D89AE4A6FCDB + xmp.did:3227887259CEE1119177BD2372B6623A + xmp.did:3255DE8D57D3E011B62094144FC15E03 + xmp.did:3272A723EC40DF119CD8ABA52D5F2141 + xmp.did:329FADB3FAA2E411B813826FC0679EE5 + xmp.did:32A38B1FE8F8DF11B54DB2ED51FD1176 + xmp.did:32A7D20B7B54DF118DF0E6232428FB0B + xmp.did:32C9239C583EE011A908D06DA889FCD3 + xmp.did:32D52E0D0E2068118F62DA03125D4285 + xmp.did:32DAAC512520681192B0BE8DD628D238 + xmp.did:32F018B31320681192B0C09A9F8F6D74 + xmp.did:32F8B7A6E944E111AB69D9EE84009E7A + xmp.did:32FD9B860E206811AFFDB53FE81F50F3 + xmp.did:3300BCE939206811AFFD8D3491C4D0CF + xmp.did:3325A2A187B8E0118F8EDA00AA1CB991 + xmp.did:332CDACA9F206811994C8A8243CF6DD5 + xmp.did:338329BDAC4EE011AD01AF3BEB8114C7 + xmp.did:33A7B7EE8446E111BEC7D8495055B9FA + xmp.did:33B1A9AEA8C9DF11BDDDE2EFA301A868 + xmp.did:33bb7d08-183e-8e4d-965e-270ee3fa76c1 + xmp.did:34033CBAD556E011921BE2DE87A39B49 + xmp.did:3405B9A72CE6E2119502C4946F9D8949 + xmp.did:340EF1E17A20681188CCC0301896C619 + xmp.did:34125B444F2068119109ADEEA36B1FBD + xmp.did:3416DA124118DF11A3D7E1B62ED1AB87 + xmp.did:3424F194212068119457A748E286EBA1 + xmp.did:3427887259CEE1119177BD2372B6623A + xmp.did:342D43900A2068118C14CA160A1107BD + xmp.did:34470183DE64E011842193FB58F60D8F + xmp.did:3469A8DF112068118DBBCC81981F930D + xmp.did:346E16669F9AE011AC2F9647199FCE06 + xmp.did:34819B785B21E011970390A601241896 + xmp.did:34C73DB7BC4ADF11A46C90A73F3DB441 + xmp.did:34C7746E3520681194578AA50D8ACBC3 + xmp.did:34C8E28B29A3DF119400A18B9B4C9FAF + xmp.did:34DB45472620681188C68A3FF4E0AEAD + xmp.did:34DFA01BAE2968119109F10D857E8622 + xmp.did:35019A4F492FE0118AFDA94598BC9104 + xmp.did:3516107E111ADE11B0049C4A5E251490 + xmp.did:351A9E90A4E5DF11B802984CE894AC42 + xmp.did:352148A75D6DDF1183078C713A1AE422 + xmp.did:3522CF74A4ACDF119A4FBCED47AF13E3 + xmp.did:352D43900A2068118C14CA160A1107BD + xmp.did:353C7E32B620681192B0FA0C0917E462 + xmp.did:354FB441312068118DBBE38DD8571038 + xmp.did:35543108C5B0DE11881CE82FD620D22E + xmp.did:3568F8E68959E011BEFB8CD79963F154 + xmp.did:359CF9342756E1119610C78CA857CBA1 + xmp.did:35C95002BD91DF1183E0D3A4363E632E + xmp.did:35D38372010AE1118CC1B19039EC3CAE + xmp.did:35D3B7742252E011A3BE9A6A60E513F1 + xmp.did:35D9E739380CE011BBC3B3AA8D5125FE + xmp.did:35E1BCDDD14AE011941EDA7FF43C0D46 + xmp.did:35E38014CAFCDE119464816E8909A3C0 + xmp.did:36070C0E5DC2E0118845DE1447055626 + xmp.did:3608255F1C206811A7BAE74CB34AB8E7 + xmp.did:36098AC3F5C5DF1186D1C8377ADB48B2 + xmp.did:36142865952068119109E554154D32B1 + xmp.did:361D7D290B21DE11BB0FE41FB41C4759 + xmp.did:361E2329298F11E18F76C16CE5AAF04E + xmp.did:3620F63FD75CDE11BB4D8723939A608E + xmp.did:36232F4D813ADF11A89FA523901B3490 + xmp.did:3627887259CEE1119177BD2372B6623A + xmp.did:363A8F868D206811BA24F97E9D027B47 + xmp.did:364BBA28D1CFDD118DD8BE48143C0F0F + xmp.did:365DB957B224DF11B715938AD2CC802B + xmp.did:366BA4410632E1119B969E32821AECA8 + xmp.did:367FCAFEC156E011921BE2DE87A39B49 + xmp.did:36824B69EC6ADE11A7A7A204FEA3BE20 + xmp.did:3688C4508B39E111A9B6829A5B3FDD4D + xmp.did:3691CB020257E011921BE2DE87A39B49 + xmp.did:36AA9BF965C111DFBB4AFA1F174F757F + xmp.did:36AF18290C206811BC56E1514E765539 + xmp.did:36B56F52C0C711E0A08E9AB4E0D7C562 + xmp.did:36B76D2A931FE111A200B1AAF0A79264 + xmp.did:36BD825F122068118C149D08F70A161F + xmp.did:36BE1EF37494E0118A8FB079BE22B8F7 + xmp.did:36C863DBD4DAE1118CC1E0C7CE6212AF + xmp.did:36D0BDC12D4EE011AFE6F3E4B712C80D + xmp.did:371A889CC027DF119B78E8F19C229AD7 + xmp.did:37465BA0A3BBE01197F291F7E5D75606 + xmp.did:374FB441312068118DBBE38DD8571038 + xmp.did:3777AD23C143DF11AF0CE727C9EFF862 + xmp.did:37BD825F122068118C149D08F70A161F + xmp.did:37D922A84605E11190A9B305F44E57A9 + xmp.did:3814F5472222E1119E7CE506E0C4F7CC + xmp.did:3827887259CEE1119177BD2372B6623A + xmp.did:382F6AAEE32168119109CA2496A1ABE5 + xmp.did:383D036FCE50E111836E91728D1F165D + xmp.did:38459371F554E0119AB4BFE0E8E054D5 + xmp.did:385422653BF711E0909EA53496E0FC1C + xmp.did:3854226D3BF711E0909EA53496E0FC1C + xmp.did:3888163F0820681188C6D9EA900BA018 + xmp.did:3899A736985FDF11B2CA8214573409C4 + xmp.did:38A0129A8F21681192B08499B73FEA31 + xmp.did:38C422960C20681197A5CF02E0728B84 + xmp.did:38D0BD89F023DF1188E9BC78A3296E4D + xmp.did:38E9D35D4915DF11B1318223C6A8EDE9 + xmp.did:38FCC9D3BBC7E111A392B01B6AB9F3E7 + xmp.did:3912C3EE71CDE011BA3DD8E17B7CC528 + xmp.did:3926CCE27E0BDF11A030B481402BBCF7 + xmp.did:39279618-c810-7241-b94e-eb6074c3002f + xmp.did:392D43900A2068118C14CA160A1107BD + xmp.did:3950F4AC85A7DE118CEAEDA48A305F2F + xmp.did:397A4F09B40DDE11966CA376FEFD02A9 + xmp.did:397B173891D6E011A6609ADEF82F5EAD + xmp.did:39B0E4AA0720681192B0CBD54873552B + xmp.did:39B31F72C2A3DE1186BCED3D2B4DBEDC + xmp.did:39B57425EE78E0118E0C89F1D9CA3B5C + xmp.did:39BB885782216811BFE5BF57D4DB04A4 + xmp.did:39EAC0128F97E011962BFFAC6450C1F3 + xmp.did:39F2F33568CDDF11BAE8DB4E46B8181C + xmp.did:39FF867D192068119DC8CD0DD86E92FE + xmp.did:3A23DA5E332DE1118E0489229C4093FF + xmp.did:3A27887259CEE1119177BD2372B6623A + xmp.did:3A3E527FF1ECE111B68CB318F0720312 + xmp.did:3A4E5748B2EADF11B8F8F2DA27BD855C + xmp.did:3A5E0B035156E011B796E178D4247221 + xmp.did:3A62EBC4235111E0B173A65C0EC2E2AC + xmp.did:3A6850363F8DE011A68BE05DED48B03D + xmp.did:3A6CAF272B19E01184DD8FBD11034008 + xmp.did:3A6E16669F9AE011AC2F9647199FCE06 + xmp.did:3A6F9D92A61611DFBAD2EC08ECAC5B51 + xmp.did:3A76783CD0A8DF11B2A19D50FF21B8D9 + xmp.did:3A9529126A8FE011BCB1A86DDE40959A + xmp.did:3AB229219E4FE111ADEFFB8D9153E025 + xmp.did:3AC479BB1DE9E011A896B1B56B3DD9A0 + xmp.did:3AD0BDC12D4EE011AFE6F3E4B712C80D + xmp.did:3AFDC23E70226811B11A92B201D0FBA9 + xmp.did:3B0FA35A1616DF118A59B5E2AB087CC7 + xmp.did:3B1B85AA6CF6DE1181C1B63B905A4C52 + xmp.did:3B2D61CA3C1DE11198B19E3212C96738 + xmp.did:3B44C1030C2068119109D8AADCC33AE2 + xmp.did:3B4935695C11E011AF25AEA653FFC4B9 + xmp.did:3B4978128416DF11A899F6901DF10491 + xmp.did:3B543F372202E011AB93E785DE5AAAD7 + xmp.did:3B612268DAB6E01187C39E0D90EB37B5 + xmp.did:3B63DACFBB1FE011A8AF8AAF7A0EFDA1 + xmp.did:3B8918A11363E111822FB7E06D486BE2 + xmp.did:3B8B41A0C306E0118354D5D7FD259081 + xmp.did:3BC6CE12C370DF11850CB72DB9D2CB92 + xmp.did:3BFA778B9857E011862FE5C282544300 + xmp.did:3C1ED0B40A2068118C14CA160A1107BD + xmp.did:3C20F63FD75CDE11BB4D8723939A608E + xmp.did:3C2D43900A2068118C14CA160A1107BD + xmp.did:3C3603469AD511E08F0ABD72ABEC7BC6 + xmp.did:3C459371F554E0119AB4BFE0E8E054D5 + xmp.did:3C4E5748B2EADF11B8F8F2DA27BD855C + xmp.did:3C54B7EE4800DF11BAEACCE7A02037E4 + xmp.did:3C6BF98077C0DF11A0C6E85C52356EDC + xmp.did:3C7A44148EBCDF11967FAB8FFF3284C8 + xmp.did:3CA2C5598897DF11A1CEA3BF0E1262A7 + xmp.did:3CBB494529D1DF11A5339ABF8266E818 + xmp.did:3CCD110BF317E011838ACFA81DAB3100 + xmp.did:3CE1367468B3E111948DF052D11BCB42 + xmp.did:3CF82EB69F9FE0119BCBD8F341DF2FB9 + xmp.did:3CFF50C3440EE111AA3D8E2708E806F4 + xmp.did:3D02E62ADF8CDF1181DCCB8E8B77F31F + xmp.did:3D08902ED27ADF11B2F4C6E175BCB62D + xmp.did:3D37F11F454EE111A34AE6D6FA0B9B37 + xmp.did:3D3CBDF5B74E11E188D5EDA767F913C5 + xmp.did:3D7B9D5D023DE111BE62CEEEB0509B81 + xmp.did:3D8B41A0C306E0118354D5D7FD259081 + xmp.did:3D91B8555439DF11ABB5B5EEDCC62DBF + xmp.did:3D91CB020257E011921BE2DE87A39B49 + xmp.did:3D92D03BA4CFDD11B52AB19626D9948A + xmp.did:3D9B8EE20189E1118D5FA8E994749755 + xmp.did:3DAF307F7014DF11A458C5CFD2E93622 + xmp.did:3DB84188FA7C11DFB783F7B8A6F92664 + xmp.did:3DC5DC2AF7B4DF11B802D46C713DC211 + xmp.did:3DDE3017132FDE11AE94BE5AD4E8E9EB + xmp.did:3DE9DBAC1FE0DF11B912D7BE6B67373F + xmp.did:3E1BBDAACE60E1118E5E9D76712CE7DA + xmp.did:3E2C41CF298E11E18B5DFB3DA3CF942A + xmp.did:3E3FEFBD5148E0119D53B041F3630230 + xmp.did:3E4901925221681188C696DC609994EC + xmp.did:3E5A8A2E05C8E011A39E8A7530EDB9C3 + xmp.did:3E8A102C200C11688442D886113E168A + xmp.did:3E976770082068118DBBE3913583D1DF + xmp.did:3EB87EC31A20681189B790932B943846 + xmp.did:3EBA6728D72168118317ABB614DA433E + xmp.did:3EBF6C9212F2DE11BB659815B35D6796 + xmp.did:3ED7F83F4D12DE118ADCB03FF5C3F3B4 + xmp.did:3EE476995A28E0118FEFFAAC272DD9E7 + xmp.did:3EEE2DB5B07FE0119FBDB1C3DCB285CD + xmp.did:3EFB928C8B8FE111ADAE8F5F30467886 + xmp.did:3EFF4374A19811DFAE908FAC53CA53A3 + xmp.did:3F1C56E81875E0119074D0B14E4AADFB + xmp.did:3F1E6F155269E111B9BDABCDBF0CDBDA + xmp.did:3F2840BBDAF4DF119B9FED66B6875A77 + xmp.did:3F3B20E9D64CDF1194C6DDC2F8D81D2E + xmp.did:3F42740E15206811871F9627524275B1 + xmp.did:3F4506FC1DEDE011AC82F7E44ECCCDC7 + xmp.did:3F4901925221681188C696DC609994EC + xmp.did:3F5068DCA87DE11188FAC430D1AD6311 + xmp.did:3F6B4C626AC7E011B58A93F597C8E61A + xmp.did:3F727C802A20681188C6D9C4D0AF0270 + xmp.did:3F78088427A6E0118684D1CA18D2B426 + xmp.did:3F8016171B37E0118C1AB51C1361E9F3 + xmp.did:3F88163F0820681188C6D9EA900BA018 + xmp.did:3FA591860E20681188C6AAF8EEECA0D4 + xmp.did:3FB9609F5BA7E011979696CECC20A286 + xmp.did:3FBE3CFB20206811A472E9C34FBDCB1B + xmp.did:3FE59DD5559911E29EACEB1488FE7807 + xmp.did:3c421679-623a-e541-98c8-4fe70440dab3 + xmp.did:3c886fab-137f-d14e-bf5c-f7aacc7eb106 + xmp.did:4020F711183DE011B45A9B113C09C8C0 + xmp.did:402c0f77-e4da-a240-b512-a23a1fb491fb + xmp.did:40454C41DF1BE1119781B671D6C1F6BE + xmp.did:405E424AEEECDF11B935C9AD4A25732D + xmp.did:405FC8987522DE11BBFBFAA234DCCB65 + xmp.did:4071EA323461E5118FE2BB08C2ACA14D + xmp.did:407648AE66ECDF119B43E216FDEB188E + xmp.did:407BA1D2DE21681188C696DC609994EC + xmp.did:408D666C715CE011B2348D7764DC1797 + xmp.did:409a6bdb-0b3f-dd4b-9c75-70938c84512d + xmp.did:40BA20E1B4206811A974D177170159F4 + xmp.did:40BB217CBD84DF11A47CEBE628912B02 + xmp.did:40D933173DA9DF118BA8D9A6AC4FC818 + xmp.did:40F5E85E7ECDE011A9998254DA7B207E + xmp.did:40F731B050DEDF11BEADE949719B9232 + xmp.did:41144A9F5CBBE011A9CDC1CC5A8545F0 + xmp.did:411E6F155269E111B9BDABCDBF0CDBDA + xmp.did:4154E4AEED7CE0119A0BC76B399E0032 + xmp.did:4156DD758C9FE11199E2F14D20E8CA04 + xmp.did:41796D9DE2A6DD118E7DFB3813E70A6E + xmp.did:417DFDB0BC05E1118C86C330FD4AF7E2 + xmp.did:417F65BCE318E0118D9DF6211E37BF71 + xmp.did:4189AD4E03CBDC11AE3FBD93AC4A90B6 + xmp.did:41A8D9E589206811871FBF7EE03058F8 + xmp.did:41A9560DBA6FE0119ED2905B94864B50 + xmp.did:41AD0A8A3E53DF11BBC9F07C3C1B9502 + xmp.did:41EFF0323C53E011A057930113C3E3DE + xmp.did:4201A2E9CC7CE011ACC3F5342FA3B453 + xmp.did:42347552804DDE11B44495B80040B8DD + xmp.did:42454C41DF1BE1119781B671D6C1F6BE + xmp.did:424BB55AE956E011921BE2DE87A39B49 + xmp.did:4257FC48EE1FE111943CFFB592B83714 + xmp.did:42611933C6E9DF119366D222F59B492C + xmp.did:426956A63C7EDF11A5A4E9065FAC704C + xmp.did:427629EB1F7AE011BC6ADBE9D9257556 + xmp.did:42909406645FE011964FE99A58EBB358 + xmp.did:42A169505720681188C6D9EA900BA018 + xmp.did:42A8D9E589206811871FBF7EE03058F8 + xmp.did:42AB1B5C1F20681197A5DEA0680BC756 + xmp.did:42B79C4D1720681188C69E9C0DE8906E + xmp.did:42C4817E9C26E011B262B0F70244DA0F + xmp.did:431EDC4C6054DE11B623AC135EDE268F + xmp.did:4344A07E3B08E011A2E0827B931E15AF + xmp.did:43487F5815BCE011B0BBD5E3244285CA + xmp.did:434BDEDB59F8DF119899B9EB40ABC97F + xmp.did:4356DD758C9FE11199E2F14D20E8CA04 + xmp.did:43574DA70B20681197A5EA3B7AA659C7 + xmp.did:4374A882122068118C149D08F70A161F + xmp.did:43755A9AFC18E1119D84D715C261710C + xmp.did:438F6A44B737DF119E2BDBB77898A4FE + xmp.did:439100E54D2068119109A2DB3088B7FB + xmp.did:43A34293F69B11DFA8A998BEFB19928F + xmp.did:43E505E0A52E11E18949BC2F75572046 + xmp.did:43F731B050DEDF11BEADE949719B9232 + xmp.did:441964CCBFD1DB11B63BFBC5192B9E16 + xmp.did:441E8B361020681188C6D9EA900BA018 + xmp.did:442A5BA61738E111BC2EAA49144639E5 + xmp.did:444A30B35C35DF11B6C1EB0CD908AC7C + xmp.did:444BB55AE956E011921BE2DE87A39B49 + xmp.did:44569F2270206811B540D1205A8C4334 + xmp.did:44BA610FF715E011850FA901B4C1B675 + xmp.did:44DD59AD2520681188C6AE32EA398297 + xmp.did:44E09416B60BE1119FDFE655EE4741B9 + xmp.did:44E7544D1D2068118C97EB5E0646166B + xmp.did:44EF1CC81D5DE111BA9EA5EECCA192C4 + xmp.did:451ED0B40A2068118C14CA160A1107BD + xmp.did:453680A25EC9DF11A86DDD161CFCEB0D + xmp.did:4556DD758C9FE11199E2F14D20E8CA04 + xmp.did:45599B5D3BDFDF11AD98D0CC567A99E5 + xmp.did:4570BD20092068118C14CA160A1107BD + xmp.did:4576CCCF10F2E01181E9C4ECE5334D00 + xmp.did:4582F7613448DF11AD0C84D94E5D43BD + xmp.did:4590A1312920681188C6D159E68FEEFA + xmp.did:4598694A18206811871FDDA91FB9E95E + xmp.did:45A4F3EAA568DE1185E69FA1410AA5B4 + xmp.did:45A6E9D55D69E1119C239406340D5219 + xmp.did:45A7DCFAEDBCE011BF2AACD6B4D6CFD4 + xmp.did:45BF49C464C8E011BEF0A37AC8AFF6B8 + xmp.did:45C823427EC2E011AD47BA23B2F462DA + xmp.did:45DBE3CD4064E011BE35A96660A529B6 + xmp.did:45F62045FF1CE211BF1CBEAB02877C54 + xmp.did:461E8B361020681188C6D9EA900BA018 + xmp.did:46246AD5FA91E111862BB531A753E343 + xmp.did:46331EEE8D67DF1186D5AC0CAC7987D6 + xmp.did:463826EE1895DF118D69EC6829104E8E + xmp.did:463C55EC1F206811871F9753D344F7A3 + xmp.did:4640EA1197DCE1118E89A806EF65A4BF + xmp.did:464BB55AE956E011921BE2DE87A39B49 + xmp.did:4664B0A32931E0118364F2CA7D5EC6B3 + xmp.did:4667C1F29B4411E192E9FD709E2209FE + xmp.did:4698694A18206811871FDDA91FB9E95E + xmp.did:46A95EEE9FBFE011B0BBD5E3244285CA + xmp.did:46AB7E0D2730DF119042AD88AD5F9FC9 + xmp.did:46BD6B5B42206811871FBF7EE03058F8 + xmp.did:46E39520AEB8E011AEBCBCB1E3A15768 + xmp.did:46F5A5BA3D27DF118764DFF2BED5DF99 + xmp.did:46FDAC28978AE0118DBED2E4485D9FF1 + xmp.did:4746AD6E0D20681192B080542646EBD1 + xmp.did:476DABBEBE2068118F62B3176EE25187 + xmp.did:476F1CD16781E11188B38C1B708219C8 + xmp.did:476FA1DD1EA0E2119B6AF5DBD00059DA + xmp.did:477073BEEF5311DFAAA98C98ECCDD189 + xmp.did:478EC352F4C9E1119EA79373B9BC3BC3 + xmp.did:47978C42CFB0E0119D6F9C0C98B703B4 + xmp.did:4798694A18206811871FDDA91FB9E95E + xmp.did:479CDB52B3FBE011A7B595483F6A098A + xmp.did:47A025DDA507E011BCC496E451D7DB93 + xmp.did:47AF707BD60EDF118B00F190D25449A6 + xmp.did:47C45F90EF51E011A7FFD475429BB942 + xmp.did:47D33D95C52DDF118ED8A2DA6C6F3EAB + xmp.did:47E95EE7918BDF11B431F617D2B0D770 + xmp.did:47EC5BA76A7FDF11BAF8B52E1E51BD34 + xmp.did:47F74A29D808E1118102AC8D7C27DD42 + xmp.did:4804CD8307206811AE56F87BB2B8114A + xmp.did:480B7E46AF78DF11A825CF8DE5D91DF7 + xmp.did:4814DD170A21681188C696DC609994EC + xmp.did:48247F628A5ADF11B98189BD66F4557A + xmp.did:485C5229B748DF11893994E032BD6174 + xmp.did:4870BD20092068118C14CA160A1107BD + xmp.did:48915FC2174FE011BDBDB567509B8083 + xmp.did:4898694A18206811871FDDA91FB9E95E + xmp.did:48B3A7A23CCFDF118F31D6D8ACE6A8C6 + xmp.did:48B7BD0BD1F1DF11911DAE3F77A72C12 + xmp.did:48C65EC2E457E011A5729168D8E7A3E3 + xmp.did:48CF0A41B8B1DD118872D2642AE2DAF4 + xmp.did:48F0CFEAD8EDE111B3DFE20AB5401A84 + xmp.did:48F5EFE5AE80E0118A91AF6880B6674F + xmp.did:490F1294772068118F62CA3F9DC2F6E5 + xmp.did:491128E6FB1EE0119379A4F677F56E27 + xmp.did:49386C717734E011A019B41CBA79332B + xmp.did:4948814585206811BAB9848BFF04B50D + xmp.did:494AFE84777DDF118929E3EE1EDD477C + xmp.did:49574DA70B20681197A5EA3B7AA659C7 + xmp.did:496823831E2068118F1CFECA782915C6 + xmp.did:4978DD280123681192B0CABB2874AF0C + xmp.did:498483E5F98CE01198D0FE1F91647194 + xmp.did:498ABD1F3EAEDF11919BF6332CBAC93E + xmp.did:4998694A18206811871FDDA91FB9E95E + xmp.did:49D4AC3386B9DF1183F4AC1AAA34C68B + xmp.did:49F74A29D808E1118102AC8D7C27DD42 + xmp.did:4A0CBE8F945CE0119B94E398813E13AB + xmp.did:4A1EBCFE2F81E011A5DCFAD8B2CA8719 + xmp.did:4A3690F90B20681197A5EA3B7AA659C7 + xmp.did:4A5492E84121681197A5CC815690B972 + xmp.did:4A8C986F082068118C14CA160A1107BD + xmp.did:4A98694A18206811871FDDA91FB9E95E + xmp.did:4ABE80C3082068118C149610130B0328 + xmp.did:4B04CD8307206811AE56F87BB2B8114A + xmp.did:4B12AF1A50216811AF5C82C8D4EEE19A + xmp.did:4B1934C56019E111B99AB3CE7E755584 + xmp.did:4B1B4C0A1009DF11BD51F318E9EDA9E8 + xmp.did:4B21FE42BD6CDF11911EC27BB26DDA05 + xmp.did:4B4BB55AE956E011921BE2DE87A39B49 + xmp.did:4B6350D9190AE1119CA4F855D5CB82C4 + xmp.did:4B67294ADAABE0118527B8EAFF3D3500 + xmp.did:4B70BD20092068118C14CA160A1107BD + xmp.did:4B74A882122068118C149D08F70A161F + xmp.did:4B7FB49D5923DF11A900C4074BC8C82B + xmp.did:4B9814BC15F4DE11AF6CDAFEEE28CBC2 + xmp.did:4B98694A18206811871FDDA91FB9E95E + xmp.did:4BED9D2BC8DFDE11B9EC81691F4C5197 + xmp.did:4BF017517891E011A641DC292DAFE840 + xmp.did:4C1D49747AF9DE11B4E48706BE9DF0EA + xmp.did:4C3561B5906411E093E9D1659035C895 + xmp.did:4C4B4C369993DF119B1780512FA1807B + xmp.did:4C4D4D899EF7DD1180199D0A99EB683F + xmp.did:4C51B774A17011E0A528DEF2AC8C55C6 + xmp.did:4C6838FCF6A6DF1196A4E198EBE76935 + xmp.did:4C8C79BCDBF8DF11A111C57C46790BC9 + xmp.did:4C98694A18206811871FDDA91FB9E95E + xmp.did:4CA1D100CDC1DF11AAC7DEF7E9EA2229 + xmp.did:4CB4290587A5E5118332885826B94038 + xmp.did:4CDA76DA3520681188C6CC41240299E2 + xmp.did:4CF62045FF1CE211BF1CBEAB02877C54 + xmp.did:4D0380FF432BE01182F0EF4B48EB2E6A + xmp.did:4D0AE0E0D252E011BA4AB6EDCDCC4831 + xmp.did:4D0B9BDE36F5DD11AB2EA102057BBEF5 + xmp.did:4D1DDC43B313E011A748E9376C2E7668 + xmp.did:4D1E0DEBBD4DDF119652FA6896B533BB + xmp.did:4D3C03335437DE11BF8FBAB55C346848 + xmp.did:4D494A0217BB11E3B692B18AEB54B058 + xmp.did:4D6B6E662A11E11181B5DA14AAEB2E73 + xmp.did:4D98694A18206811871FDDA91FB9E95E + xmp.did:4DAAAEDB0A2068118F62A7CAF58A0ECF + xmp.did:4DAFC3CECF1EE211BE8DB8B3F7E00EAA + xmp.did:4DB28F7959A0DE11BAC6E034BAFE50CA + xmp.did:4DBEA27977A8DF118F21D1D567EF8AD7 + xmp.did:4DCB8A30914DE011BD63DE0802894CA1 + xmp.did:4DD9E0323FB6E011B0ACD99321186146 + xmp.did:4DFE631B1C2068119109D986A10A20A5 + xmp.did:4E0FECBC2E2068118A6DD7573F87E2BC + xmp.did:4E2A12FF272068118DBBF1E759913209 + xmp.did:4E2BAD1FE993DF1192AEA9A5E3F4B457 + xmp.did:4E533D5EEE5EDF119B819E13233C116C + xmp.did:4E5BCDD097A8E011B01BA4DFDBC23FA5 + xmp.did:4E69AE641A5EE011854793DE1DD512EE + xmp.did:4E8C986F082068118C14CA160A1107BD + xmp.did:4E96D8071320681191099262B251A4F6 + xmp.did:4E973EF258BFE411A9FAC103750747B4 + xmp.did:4E99A86EF541DF11B948936BFEB99B26 + xmp.did:4E9BA5EE0592E211A1A8BC71C3C2BC10 + xmp.did:4EAFC3CECF1EE211BE8DB8B3F7E00EAA + xmp.did:4ED51F8472C9E111820CE6452E34E927 + xmp.did:4ED803373643E011B980DE20246822FC + xmp.did:4F2BB01AB3C6E011AD3EE53AC7357D5F + xmp.did:4F2FBD5B3833E211ABC1ADC0DA5AC883 + xmp.did:4F56D5CE2A43DE11B230A3F70B3D8EA1 + xmp.did:4F5D575DFE1FE511A51DC97A91AF6BBD + xmp.did:4F5D5D093A2068119109E712EBBC724D + xmp.did:4F6BB8702C206811871FE169E7DC3C98 + xmp.did:4F8AB61DA296E0119EE8EE476D1E051E + xmp.did:4FB530695F67E0118ECB90358FBE1E8C + xmp.did:4FB5947B5EBBC311A5E5C515BE47D0F8 + xmp.did:4FC590E194BDDD11ABEE8043744BA28A + xmp.did:4d403b6d-8829-224f-86f2-bc7c63f9e736 + xmp.did:500A9AE2DD206811A613B4EE39B4D58C + xmp.did:500F5EDF2F50DF11922CB8ED6241084E + xmp.did:5032E746EBDCDD118BB0ED485B2406E3 + xmp.did:50524EC24C44E01183D4E2B1F7047647 + xmp.did:505381322485E011BD3DE9624629426F + xmp.did:50597A69706BE0119746BE45AD0E721F + xmp.did:507BD60A0B2068118DBBA622512CB8CA + xmp.did:508D3E68D809DE11B008F589BD96C980 + xmp.did:50F0464C0C2068118089E259502D6AC2 + xmp.did:50FA52B1B48011DFB826D3AA01EB6EA5 + xmp.did:510969F61E0FE0118A4E830B74E1FFC7 + xmp.did:514F67C5E3A0DF1198F8A7B931697359 + xmp.did:51546FDD1320681192B0BAA904DE0F8D + xmp.did:515BBF39122068118C149D08F70A161F + xmp.did:51709CEA4EF5E0118AEFF77CA899693B + xmp.did:5183FB70726BE0119379872BF73B437B + xmp.did:51930AC62E69DE11AA1BC216D8BAC455 + xmp.did:5196BAC754DDE011BAE8BFD67BF28627 + xmp.did:519BE5F0BA5FE011A191C9DDAE1475CA + xmp.did:51B2D0D92776E011933EE6BFA7C54C61 + xmp.did:51B82BC8222068118A6D8F7F76AB4DDC + xmp.did:51E180E6693DE011975ECA27E796C556 + xmp.did:51E19B2B4937E011A1BA9E24118AF4FF + xmp.did:51FF6CF6C089DF119F34D7C9EE19F081 + xmp.did:51FFE781FC0CDE11A770A9ABB3D9137E + xmp.did:52202EBBE2D1DF11B62FB64E37A3F729 + xmp.did:5232646C26CBDF1190EAEC1F0BACD3F2 + xmp.did:525123B14731DF11B62BB34304F99503 + xmp.did:525BBF39122068118C149D08F70A161F + xmp.did:525C70450616DF118A59B5E2AB087CC7 + xmp.did:5261C72A21266811A67E8ED38578482C + xmp.did:526567FC8325E1119633A186D2B4EF6C + xmp.did:52910D990C206811A961A044C143500B + xmp.did:52A78DE70D40DF11B592ED4FEDEAEC5D + xmp.did:52B7A3270F2068118F62A3E02945DBDA + xmp.did:52C94185CFB3DF11873FA3644F977FE3 + xmp.did:52C9A3706688E0119CB4F68A2382DBB2 + xmp.did:5304ED760E0ADF119A9FE10546950C1E + xmp.did:530A6AE28921DE11866B8CA0458DE1FB + xmp.did:530B9BDE36F5DD11AB2EA102057BBEF5 + xmp.did:5315C5669F2AE0118B90F7C5660D0A20 + xmp.did:53205F6D5238E1118696F30CED7069E4 + xmp.did:533608436CCADE11A63FB756BDDB7251 + xmp.did:5339AC183FD9DD11978C91CC1708D5EB + xmp.did:534D014492F1DE119AD9AE105FCB51B3 + xmp.did:53733AE68294DF11B9E6EB401BB77999 + xmp.did:538F8AD33C23681188C6E3B2AFCF6608 + xmp.did:53AD6C7CE8236811994CDC03CCB20552 + xmp.did:53AFA94BE4C5DF11AF76D9EA40AAE7CA + xmp.did:53CC70FD5E84E1119329CC85FF44F892 + xmp.did:53E6B8FB5C8AE011BC8FCA29DD1F435A + xmp.did:543A798F1307E011846FE8C04D3C8DEC + xmp.did:54546FDD1320681192B0BAA904DE0F8D + xmp.did:545EB8DBBC43E11187E4ADAAC3CF7D1F + xmp.did:5486A1697EDD11E088DA9F4613AD5153 + xmp.did:5489D78E1966E111BC68E08AF29E25BD + xmp.did:5496D8071320681191099262B251A4F6 + xmp.did:54C3F9F8BDAEDF11A5DC959C82ABC9E1 + xmp.did:54CFF0515F7BDF119EA689981ABBEBFA + xmp.did:54E7158DEB69E1118841DE2AB33AFE73 + xmp.did:54E79C929685DE11AE47F5AAFBD63A78 + xmp.did:54F9E800E79DE111BE69BFE9C0C0CD7F + xmp.did:553410A2EE96E2118FD8A7A01025FD91 + xmp.did:555BBF39122068118C149D08F70A161F + xmp.did:555E1046C51EE011A0908899644B66CB + xmp.did:555ae0f6-3e55-4623-8724-5d4ec7b41740 + xmp.did:556E056A4621681188C696DC609994EC + xmp.did:5575E5993879DF11B8DDA0E346A0AACF + xmp.did:557C42AE992068118F42CFE2A9EBEA82 + xmp.did:558F2E591FE3E111A7A7A76DE40B7C8E + xmp.did:559FCD3B527ADF118914DEB1351761F1 + xmp.did:55AD6C7CE8236811994CDC03CCB20552 + xmp.did:55BAE8C3DA4AE0119837C684583C0F40 + xmp.did:55C093961E2068118083EBC7D6F18424 + xmp.did:55E7132B1BB5DF11A19186F05CE04270 + xmp.did:55F4FBB99791DE11B12EF689609D0B42 + xmp.did:561C42650844E0118B57D6CDE7B92D50 + xmp.did:561C9EFD9821DF11B016B733C2ECF725 + xmp.did:561D4500A0BADF1198CCD17583B8FDBC + xmp.did:562A2793D091E011A248938433DFFFC9 + xmp.did:562C40D529206811994CD1B168EB5E61 + xmp.did:56368E8BA19EE21194DCEFEC1670396D + xmp.did:56402A691920681182ACDB24A62CF844 + xmp.did:5666D022C4EAE011ABAEB46FA81D72C8 + xmp.did:566D2ECC9DB3E111A7E8AAA3B2B460EF + xmp.did:5676C3FC081BDF1193D4BFF1E63C0B19 + xmp.did:567A03F8A2EFE011A7B3CE197EFE4829 + xmp.did:56828BAD69D5E01184AFBC72FC369E44 + xmp.did:569A638FE645E011B31B966D0E85ABCD + xmp.did:56BDC0B7BE24DF11A9E6FB78804C0B92 + xmp.did:56C94185CFB3DF11873FA3644F977FE3 + xmp.did:56EAD66EECEDE1118EBDD2792BC326D4 + xmp.did:56FD0742357AE1118349FA99D447291B + xmp.did:5710D430DBDEDF11A01B963F18D1E5FD + xmp.did:5714D17D71E1DF118FD9CA4594346858 + xmp.did:572A2793D091E011A248938433DFFFC9 + xmp.did:576085FEFF03E0119437AF301FD75868 + xmp.did:5760B17E7604DF118364C9CFC0647EE2 + xmp.did:5773E281952468118F62FBC130F2812B + xmp.did:577969B29D5011DF8B1491785F4DE9BB + xmp.did:578458179BAEE01192F1F4F0A96F38D5 + xmp.did:57875927D602E011A2A5BCE9F6860872 + xmp.did:57AE1E4A081AE0118143CB22880CF205 + xmp.did:57BF45BA36FEE011A779EAF85ACA9F5B + xmp.did:57CCE6F060CAE1119564D352D5333B81 + xmp.did:57D6B3158D35E111ADBA85EA1AC74BBE + xmp.did:5810043BA779E11198B1ED7CAC998B58 + xmp.did:581BF8E14D2068118F62E320692B2BD6 + xmp.did:58316A45F5F5DF11807F8C8A28F8A117 + xmp.did:584705D961CFE0119D8EBABB5438DA12 + xmp.did:5855B0D08898DF11AE07EDA47DA8337D + xmp.did:585BBF1B01B6DF11AA09B180E60AB9EC + xmp.did:586C37206F1EDF119898ACDBDF5F125E + xmp.did:5873E281952468118F62FBC130F2812B + xmp.did:588B5ADCDC0AE0118BD59C14EE86890A + xmp.did:588B880E28206811B699A9F2A6E6A64B + xmp.did:58B2DD181020681197A5CF02E0728B84 + xmp.did:58C5F0225DF9E011B214F5792286513E + xmp.did:58D9780C7A8EDF119A4CEF1A1CB781F4 + xmp.did:58E5C305FA3DDF1190CA8266881FE2CE + xmp.did:58E65F856559DF11AC24A4CF59A063EE + xmp.did:58F3FE65A82CE01196BDCABB5011975D + xmp.did:58F9E800E79DE111BE69BFE9C0C0CD7F + xmp.did:58FE62218DA8E111832BA801CB77D0B8 + xmp.did:591495083545E011A6508A8D953AD54D + xmp.did:592C40D529206811994CD1B168EB5E61 + xmp.did:59512F6615C7DD11897AC28FEDC73C57 + xmp.did:596D3B064F02DF119FC4E7433C363418 + xmp.did:5973E281952468118F62FBC130F2812B + xmp.did:59828590A5F3E011957E8B3834F4FAD2 + xmp.did:59B25B4D66D0DF11B523B3B7AE6AC7C0 + xmp.did:59B2DD181020681197A5CF02E0728B84 + xmp.did:59B655E71066E5118173F603034EE904 + xmp.did:59B8C167EFA3E01196589D6886C4728D + xmp.did:59CC70FD5E84E1119329CC85FF44F892 + xmp.did:59D6B3158D35E111ADBA85EA1AC74BBE + xmp.did:59D8B4E85850DF11B19CCAD5C01FAD53 + xmp.did:59D9780C7A8EDF119A4CEF1A1CB781F4 + xmp.did:59DC1710FF35DF11A2FBC640E7D898E9 + xmp.did:59E1EC2405B5E011A3BB871D74138CD2 + xmp.did:59E2FDB5FC7EDF1181B8AE21B5EA78C7 + xmp.did:59E544413D4DE011A83790B7CFBF45D6 + xmp.did:59F62428F37EDF11928CE252CAD94E87 + xmp.did:5A05066086AFDF118579D70EC7E7977F + xmp.did:5A1495083545E011A6508A8D953AD54D + xmp.did:5A4FFBC572DEE011B762C41F093CDCD4 + xmp.did:5A5EBC82CCDFDE11B9EC81691F4C5197 + xmp.did:5A6EB0B139B7E0119B82B90D0FB0B438 + xmp.did:5A7857A71A2068118F62FE65054DA858 + xmp.did:5A971BD2B40DDE11966CA376FEFD02A9 + xmp.did:5AB2DD181020681197A5CF02E0728B84 + xmp.did:5ACA778625C1E01180B9D22014B81B82 + xmp.did:5ACFE438E9A5E111B97FD799B9848AAA + xmp.did:5AD9FB666197DF118258E3F04E6D4AE5 + xmp.did:5AE9F317AB2AE0118099EFAF9826A439 + xmp.did:5AEB6AEB2FA3E5118E33F66A8BD771A6 + xmp.did:5AFE62218DA8E111832BA801CB77D0B8 + xmp.did:5B00864E4767E01197F3F9B0477D6229 + xmp.did:5B1B46E9388DE111BABCE8AB5D204B95 + xmp.did:5B4C004F5F58DF11A53B962F289D8004 + xmp.did:5B6D331385C9DF11A5F3DC003393B63A + xmp.did:5B6DD2B74584DF11B7248B7DDF794A1A + xmp.did:5B72F3DC17B4DF11AF89EBB2394F758A + xmp.did:5B7AA9246858E111BE87D05087E5802C + xmp.did:5B8427F9C7F6E01193089EB7AFCD8499 + xmp.did:5B849BF275DFE011BA5993DE83EAAF37 + xmp.did:5BB960616CC8DF11BE50C111E8F22B03 + xmp.did:5BCBBCD4DFA8E011A1C5BFCBA42739AF + xmp.did:5C146AA32C206811871FBF7EE03058F8 + xmp.did:5C25826706C1E111B8AFC8EAB9E17925 + xmp.did:5C29F469FEEBDD11AB8ED4A69948B22D + xmp.did:5C3AC076E780E111860A8B44442DFEC0 + xmp.did:5C4C700964DDE011B9D38DC322286530 + xmp.did:5C5ED522282EDF11A463BFE9B18FCAD7 + xmp.did:5C79C2F2360BDF118E2BC46506FA8698 + xmp.did:5CAC3B5AF977E011AC53A76EEAD13040 + xmp.did:5CB2DD181020681197A5CF02E0728B84 + xmp.did:5CBEFE6C11206811871F884EEE799340 + xmp.did:5CC35F20DB85E011A0088ADC2704A3EB + xmp.did:5CD9780C7A8EDF119A4CEF1A1CB781F4 + xmp.did:5CEC9C6EC13DE011A0BEF8DDCFC32D6A + xmp.did:5D05E9779B5CE111AF54E297161B5AD6 + xmp.did:5D06DA31CACFE111AC30DB1AB173EF9F + xmp.did:5D0CDBD57F76E011BA3CF330558605BE + xmp.did:5D2898863416DF119079C3694A6DFA33 + xmp.did:5D3518AA242FE011A6E6B18C85895FA1 + xmp.did:5D377513DC03E111A5D7E4289992D6E3 + xmp.did:5D4DC145718EE011B949BB5BD22F5B3D + xmp.did:5D54F6D2D769DE11A1369DAE1EDA466D + xmp.did:5D5B649BF6C0DF1186AAE9D42E01A0E5 + xmp.did:5D6946B0F8F3DE11868AA1AB4A3A26C8 + xmp.did:5D6B2172401FE1119218D05A8DD66098 + xmp.did:5D7E93F5833411E0B62FB7127DA0FEAF + xmp.did:5DCA0D82DA5DE0119024AE959D97E7BD + xmp.did:5DE7C465E499E011A42DEC14C3EFCAEC + xmp.did:5DEB50BEA655E111AF8EB7075B96BF92 + xmp.did:5E01ED757CD0DE1187EDF718B96B3EF5 + xmp.did:5E1088AD7C2BDF118F8FBA642A5109BD + xmp.did:5E15A117DF56E011921BE2DE87A39B49 + xmp.did:5E1C88E1FC20681188C696DC609994EC + xmp.did:5E2369AC8279E11198B1ED7CAC998B58 + xmp.did:5E7CAC5DC62CE0119401FB662C8F6117 + xmp.did:5E971BD2B40DDE11966CA376FEFD02A9 + xmp.did:5EB62A055ADCE011AB52B65422351742 + xmp.did:5EBFB154ADE2DF11B951B300D40303E7 + xmp.did:5EC857194DD3E0118BBCBA5E7FF86AF5 + xmp.did:5ED080139B4011E1BDF8AB7E2919F0A2 + xmp.did:5EEAAC8A3A206811B739B723BC918F82 + xmp.did:5EF6E033572FE011A924FF15510F1797 + xmp.did:5F0079D829206811B1A4D56600D919C7 + xmp.did:5F2CF7595D206811994CE68A7A8A9137 + xmp.did:5F4BFDF37F1ADF119CB8E7D742FA3A25 + xmp.did:5F554DC1928DE01198F6DEB571DE692C + xmp.did:5F6455BB3926DF118BC5928689F4BE6C + xmp.did:5F915B5B59C7E011AD3EE53AC7357D5F + xmp.did:5FB24B6A67E811DF98D1BEA7C517AF65 + xmp.did:5FCC7930492DDF11A6B3A602AE0FAF20 + xmp.did:5FE6D9D350C0DF119F38D65D70582EB3 + xmp.did:5FF86667EAFEE01180AFFEC6C6751064 + xmp.did:5bf56338-5426-9a43-a3db-fd23c03b1ffb + xmp.did:5d723d58-147f-0b46-b7c4-07effab48c63 + xmp.did:60101587-7a8d-5f49-8165-80462457d4b3 + xmp.did:6015A117DF56E011921BE2DE87A39B49 + xmp.did:6047ADFF0EC2E011AE33A676771642BD + xmp.did:60640A5C5826E01182CAD38ECEDCE268 + xmp.did:606F2DC96E24E011A47EB533D6F9C05E + xmp.did:60D73762B8206811871FDAA9E2C0A869 + xmp.did:60D9780C7A8EDF119A4CEF1A1CB781F4 + xmp.did:610079D829206811B1A4D56600D919C7 + xmp.did:611032FABB87E011B710DD0532D7B522 + xmp.did:6115A117DF56E011921BE2DE87A39B49 + xmp.did:612EA483F3CADF119600B07951353894 + xmp.did:61549BC0F27FE011900CD6D480C2EA95 + xmp.did:61818CF73DFCE0118E10A33A0426BA5A + xmp.did:618AEB8BC948DF118B438C642A7D2DC4 + xmp.did:618EAF1A4B7BE01184C0A4200CBECB5B + xmp.did:619F82D4F828E111B1F3C06F11DED1E2 + xmp.did:61A99F01F945E1118C499FE53C63BA21 + xmp.did:61D0FD3D1023DF119F4BFFB97B52B404 + xmp.did:6208B09F1664E011AD70DC996C19B8F4 + xmp.did:62177fa1-c574-464e-9fe6-8cb238bc787e + xmp.did:62272679CFEDDF11A9639E04D72D1683 + xmp.did:622E711BA7A2E511A786F4F7700740DD + xmp.did:628C3DBEEAD211E2A336EC0CC5125B4C + xmp.did:62923C091F3FE1118A949C13D139F527 + xmp.did:62AA5F6B6B8EE111BFE9802D59324A79 + xmp.did:62ACF14E6C6FE1118BB89C7736205CD2 + xmp.did:62CF124B7E6AE01186E4CAA527FEAFAB + xmp.did:62DF245D8820681192B0EAB1647D09C9 + xmp.did:630E52ED7DB6E21190DFED5140F2FD7C + xmp.did:6315A117DF56E011921BE2DE87A39B49 + xmp.did:632424910382DF11982BEF51EBA56B3D + xmp.did:6324F7C6F4F7E01187B0F8187AE52B82 + xmp.did:634A68AE14D3DF11A3F4945B73FF125F + xmp.did:634FE106FDAADF1196BFAB2AECFE2FA1 + xmp.did:635D6AA21F4DDE1185B2F0C4608269E3 + xmp.did:6363dc91-e0c9-4e6b-981c-5f3482571992 + xmp.did:63762B44082068118C14CA160A1107BD + xmp.did:638880E80920681192B0BAA904DE0F8D + xmp.did:6395943583CBDF11BAF5EC302DA3E9DF + xmp.did:639B1DD297D5DF119648F8511B7417D3 + xmp.did:63A39488A54DE011A242DF599B090667 + xmp.did:63AEF9105305E011867F89B0211E4F7A + xmp.did:63B9DF027F206811871F80898A1CC3A1 + xmp.did:63D21F2E2241E111AEBED233B2B2BBDB + xmp.did:640912E35E206811AFFDA1B78A3AA737 + xmp.did:641610FA4D1311E0A484E186B3184968 + xmp.did:6428E31D4544E111883F8B540082B352 + xmp.did:6474C83C687CDF118E1F99D69B3525CC + xmp.did:647F1DD60621681188C696DC609994EC + xmp.did:648880E80920681192B0BAA904DE0F8D + xmp.did:6494CD194F206811871FCD2199AD167E + xmp.did:649A061C5B96E01188ACC54896A64AB2 + xmp.did:649D06DE7020681188C6D9EA900BA018 + xmp.did:64C6C5C839CCDE118040C244BCAE0AC0 + xmp.did:64CF124B7E6AE01186E4CAA527FEAFAB + xmp.did:64D1F67154A011DFACB4EC20A02E03DF + xmp.did:64D83FC593206811871FBF7EE03058F8 + xmp.did:64ae0065-39fe-4869-af9c-bac59869e7f1 + xmp.did:6515A117DF56E011921BE2DE87A39B49 + xmp.did:6515EC6E98206811994C86814C2F3017 + xmp.did:6528034BDFE5DD1181E69C44F7DF0B43 + xmp.did:652F7EA911BCDD11AE16FCE8D3956588 + xmp.did:653449425AB6DF118E2180F19BD3AA0B + xmp.did:653E4C94DD2068118F62D27A6BCE2F0B + xmp.did:654E940A24D6DF11A7DEEBCD26CFA1AC + xmp.did:657104098FB1DF119ACB97369D3D276E + xmp.did:659F34731BCDDF1191BD97C1AE6A08AB + xmp.did:65B92FCFCC7EDF118519B477D8249121 + xmp.did:65C90D3351E7E1119040818FBA49EB64 + xmp.did:6622FF206708E011AAFBD2F284770826 + xmp.did:6639A478D19CDE11A7A3E19C2370F497 + xmp.did:664D5C459C7711E08A9C913C073A663E + xmp.did:66562D8A30206811822AF66E54970861 + xmp.did:668831B8132068118083AEAC33B78D50 + xmp.did:668880E80920681192B0BAA904DE0F8D + xmp.did:668C4D70961711E09F22A665483B9607 + xmp.did:66BCB3B7EAB9E011AEBCBCB1E3A15768 + xmp.did:66C8E7705A53E011B4ADA05F9FBFB5F3 + xmp.did:670FB6FEA3A9E0119D58D15062974F9E + xmp.did:671000C0792EDE11A4BEA48CD623DBC2 + xmp.did:672480888F7FDE11AEAEB3F00F80F0F2 + xmp.did:6748d57d-36e5-b04d-a348-750a0455b215 + xmp.did:6755E9F71198E011A468F772521167AC + xmp.did:676BDE0E17206811A5E4DB14138ED012 + xmp.did:67732AD79333E1119A24C6FEEB79FA2D + xmp.did:677E60494F2068118DBBE52260A278CD + xmp.did:678880E80920681192B0BAA904DE0F8D + xmp.did:679152804601E111BEF4FB361AD1BE95 + xmp.did:67C18292F735E111A7B3FA52C5C2372E + xmp.did:67C4D670BE38E011B60ABEB53C7F221E + xmp.did:67C8E7705A53E011B4ADA05F9FBFB5F3 + xmp.did:67FE1EBE8387E0119847A20086444820 + xmp.did:68033E32A59611E0AE7E90E1E54CD6BB + xmp.did:6859A8AA4C20681192B0C49A4A67C7CB + xmp.did:68613990049611E0BA12FF1AB9737D9F + xmp.did:686C661626206811871FBF7EE03058F8 + xmp.did:6883061047E0DE11BED594E577A3A979 + xmp.did:688B4219C01DE0118989DA212A212D22 + xmp.did:688E066C4B206811963CF2F523F9A511 + xmp.did:68931ADFA4CADF1191C0C59B6F52932B + xmp.did:689B1DD297D5DF119648F8511B7417D3 + xmp.did:68A8704ACB3EE111A1A2F5C3512901BD + xmp.did:68E6F0311C73E011988FD756EFFA5742 + xmp.did:691153E00F17DF118B19B73865AE5CEF + xmp.did:692CF3EC00EEDD11AC4196EEE8924C0F + xmp.did:6947A3C9B579E011BD7CE6FFB678968B + xmp.did:69656900766AE111A006B7F13B43383B + xmp.did:6966F9529C23E011BDF9E30C5CFEECDF + xmp.did:696BDE0E17206811A5E4DB14138ED012 + xmp.did:69762B44082068118C14CA160A1107BD + xmp.did:699219147DA7E11180B28105CE94C7C8 + xmp.did:699D06DE7020681188C6D9EA900BA018 + xmp.did:699F3D40D66DE0118286C365F8C4E42D + xmp.did:69A1217ACDA4E0118A47F95ACDE595C5 + xmp.did:69B10C9822E8DF11B384ADA7A32699D7 + xmp.did:69B2F9191F20681194578A02E8C9B59B + xmp.did:69B48262B0C0E0118B0698A58DE2D732 + xmp.did:69BFC33E065BE01189E8A9FA91742C9D + xmp.did:69C65DF5C0D2DF11A221DB0DBA19F42B + xmp.did:69C6EF70C9E2E0118871ADE68DD3BDA8 + xmp.did:69C8E7705A53E011B4ADA05F9FBFB5F3 + xmp.did:69D3304B192068119109B5CB68862886 + xmp.did:69E01EF54F04DE118E60E893E9F16C6A + xmp.did:69EB434F302068119109B3CAEE51E0B6 + xmp.did:6A130A232064E111890C95535BBDB7FF + xmp.did:6A14D9314FDFDE11A0BC93768BF457EE + xmp.did:6A15AFA28B206811871F8DE1CBDF9EB0 + xmp.did:6A284E091A29681192B0D53FF790F85B + xmp.did:6A30A098E94DDE118F78B354AFF5AE1C + xmp.did:6A47007B82A4E011A4FEE67DFDD7FB36 + xmp.did:6A4D00C08330E01193CDBC9F61A5086B + xmp.did:6A6CA14E4BCAE011AC77F4C223970894 + xmp.did:6A750F283A10DF119533B1B0BD8F5408 + xmp.did:6A9E5D44615BDF11B2D1E76550196FF9 + xmp.did:6ABB9F62BBB9DF119CEDD7BF9C0EE1CF + xmp.did:6ACC09578A37E111A1AFD6438812FE1D + xmp.did:6AD2DD1426CBDF119207FF631E313C1E + xmp.did:6B1563ECA06DE0119A3FB6F33E3941E7 + xmp.did:6B17FED6FDE4DF11A4E8EA4AFA5836D9 + xmp.did:6B2152EDD8CCDF119FCCD3DEB96D875E + xmp.did:6B30A098E94DDE118F78B354AFF5AE1C + xmp.did:6B43DD71B9D011DFA897EC2DD419EB70 + xmp.did:6B451632D431DF11A791C447C296D485 + xmp.did:6B4CDF46122068118DBB92791FD53C0C + xmp.did:6B675CD17B3BE011A070DAD2A1080D1B + xmp.did:6B6EE206B90CE111B2BF9AF74B0663EE + xmp.did:6B9AFF6520DADF11AD2BCBF19C02F98C + xmp.did:6BC529DA78BDDE119890F54BDDA81C84 + xmp.did:6BC5BF0B8E206811A7BAE494E9F9FFEC + xmp.did:6BE17DFD35AAE111B4CFFD6F020B35F0 + xmp.did:6BE2EEB094C7E0119881DFDBDDB5F7C6 + xmp.did:6BE5F473FB32DF11A376D712DAC48BD9 + xmp.did:6BE9EAB1BC06E1119FB4B9E49FD80B9F + xmp.did:6C0C2ED37520E0118026BD9CB3AF0FE9 + xmp.did:6C1D4CFBD8C8DF118849E21764796AE8 + xmp.did:6C1F705ED150E11191D3ABE1A15EFCE5 + xmp.did:6C27BCD42684E1119329CC85FF44F892 + xmp.did:6C3EA5425AB3DE119C2AC5829AF6E577 + xmp.did:6C5A013B2B216811910990FE46E80D18 + xmp.did:6C702183BED8E011A0C9924A4691E820 + xmp.did:6C750F283A10DF119533B1B0BD8F5408 + xmp.did:6C7D9E1E74B211E0A792FB6CA6498740 + xmp.did:6CAA2255CF57E0118F61ABAA1281E4E0 + xmp.did:6CC0CB00DE7AE111B406DEB9D0E62067 + xmp.did:6CC8E7705A53E011B4ADA05F9FBFB5F3 + xmp.did:6CDE07D55E20681198E99BCF30868C79 + xmp.did:6CE20740482068118F62C0FEBE593A57 + xmp.did:6CF7F57A4588E0118E50D901036E7887 + xmp.did:6D11BC5252CEE011913297C86D72F4BA + xmp.did:6D3EA611B6B2E01183ADBA4CDB2FFC38 + xmp.did:6D50FE54D024E111B5A2ED33E10C2559 + xmp.did:6D8831B8132068118083AEAC33B78D50 + xmp.did:6D922B47ED40E011B981E70FEEDE5BEE + xmp.did:6DA3F22F27F0DF11930E8842D7930657 + xmp.did:6DC82C0E2820681188C6A3D30DB8F116 + xmp.did:6DFDAA857FB8E0118E65FDFD304D4D5F + xmp.did:6E17B8BA0F2BE0119A92BFED6D4C3A49 + xmp.did:6E282DCA7F17E011B0739866E9AD0C81 + xmp.did:6E385BB069206811994C9DA04E065E98 + xmp.did:6E69F1C5298F11E1BBD1C39B828A5402 + xmp.did:6E6B1F2C98EE11E0BD518E09C122C174 + xmp.did:6E6B1F3098EE11E0BD518E09C122C174 + xmp.did:6E6B1F3498EE11E0BD518E09C122C174 + xmp.did:6E7CD2CED77BE011A60BCDD5CBCAB985 + xmp.did:6E854EF88859E01189ADC172C0ED21CC + xmp.did:6E95C248E420681191098918AC4FD7C5 + xmp.did:6ED5E9CD6FC4DF11B75C9BE1D5B16EA3 + xmp.did:6EE5CBDB325DE011BC86E134CA023F2D + xmp.did:6F23E955E6B2DF11B498DE7EA65C694B + xmp.did:6F50A8DE6EA6E111BD64D464E95C3F11 + xmp.did:6F50BA30D09FE011992CC820DDF69EB8 + xmp.did:6F5D5AEA453BE111ACF4D22D76E638EA + xmp.did:6F97A7E42EABE1118C62B15300F9FA22 + xmp.did:6FA34FF766C6DF11A495E0DADD8238FC + xmp.did:6FAD2A5D0E20681188C6D9C4D0AF0270 + xmp.did:6FBC13A938CAE011B365E004902CC4F8 + xmp.did:6FC8E7705A53E011B4ADA05F9FBFB5F3 + xmp.did:6FD44BF7F2A8DE119C209F7286AC4160 + xmp.did:6FD5EA4F4D2DE0118D4EDB8E509E5254 + xmp.did:6FE10108F221E1118D49C5615E251FDE + xmp.did:6FF4E4591557DF11B388DC7C60AE1023 + xmp.did:6aa4d464-3582-42f3-b32d-7665212461e6 + xmp.did:6c3872b0-283a-364c-9f1d-b045e46d9d46 + xmp.did:6f96001e-06d7-3f4a-adac-3c5030d60677 + xmp.did:703D3E0FD08FE111BCE7859962EF891B + xmp.did:70499A293598E111AAE1E7A253E7BD3B + xmp.did:70542CF4C8B0E111BD46E04D538A0FF8 + xmp.did:705B30E088F611E083F782CBB1D50FB1 + xmp.did:70625A024208E011AA5AC8AB7E99A633 + xmp.did:7064230B11DDDF118AE8866FDE69ACD7 + xmp.did:7089C6CFC8B5DF11820885489254C0E7 + xmp.did:70A31406DF206811871F81E8BB0F82E6 + xmp.did:70A7812EF177E0118C44ABEA80B85B14 + xmp.did:70A8F48786216811809FC824A61EE5E7 + xmp.did:70BC6C000A206811A7BAD4F0BC6E205B + xmp.did:70D3233031206811871FBF7EE03058F8 + xmp.did:70D66A196B64DF11B39BE2FACB6507A8 + xmp.did:70adaf04-2a82-5d4a-988b-7ef1bca055cc + xmp.did:710A7400A8EBE011B976D593E6469015 + xmp.did:710C8853F678E01184C0A4200CBECB5B + xmp.did:7125C99E1320681182FE98EF7F18BF1D + xmp.did:715C8395F2D9DF11943DD675C13F1D27 + xmp.did:7162A10113206811871FCD2199AD167E + xmp.did:7167A92FC12B6811A1CC934499CB1DD9 + xmp.did:7178548E489EDF1187848A377019B2B6 + xmp.did:718C32A0FE87E111A27BDFDDE14F6A5C + xmp.did:71922FC7B420DF11A73CD4E4A37A765C + xmp.did:7197A7E42EABE1118C62B15300F9FA22 + xmp.did:71A34FF766C6DF11A495E0DADD8238FC + xmp.did:71CAA26269CEE111A0A1CBD7E7EA61B9 + xmp.did:71DBF47FFF1CDF11ABB5EC302E26E0A8 + xmp.did:71F6DF52DC03DF11AD58B9E601FFD3D7 + xmp.did:720C8853F678E01184C0A4200CBECB5B + xmp.did:7217B8BA0F2BE0119A92BFED6D4C3A49 + xmp.did:72191300482068119006DB4D7B801BE7 + xmp.did:7220CBAB6EE7DF11A0D68F50E2E34A90 + xmp.did:723C111C508811E097A78CDC71EB349E + xmp.did:723C1120508811E097A78CDC71EB349E + xmp.did:72532c31-14f9-bf40-ae86-4784372833ec + xmp.did:726E2673F62068118F62901B2A4907D4 + xmp.did:726F3BDE2A8511E3BC48AC0C67394A8F + xmp.did:729131241F6CDF118BE7E8579E18CF61 + xmp.did:72947f67-7138-594c-b5c5-d774b22baf23 + xmp.did:730C8853F678E01184C0A4200CBECB5B + xmp.did:73504F67CB17E011A7BFFF6557FF2843 + xmp.did:7360C3BF8D206811B6999C6B4BE18F8F + xmp.did:7366949C86A5DE11A469D03DE5660500 + xmp.did:737F05FD6089E011A545EB68AEE6F466 + xmp.did:73820EA2D771DF119922E75105E0C7CF + xmp.did:7391698f-36d2-d247-bd26-2ea31d6d87ab + xmp.did:739C08B21168DF11902C8FBBD6B34A4F + xmp.did:739D7E9FEBADDF11AADEADA356222083 + xmp.did:73B57231C3E9E0119FC8E3CA42FCF1AC + xmp.did:73BF225C4131E011B2CBC77CF001FE05 + xmp.did:73F3DBA87D2511DFB8DAA291B838EA94 + xmp.did:73F9C4285FFEDF1196FEEFF1E699BCF4 + xmp.did:74117FBC20071168830CA0CFAC206BA6 + xmp.did:74117FD1200711689A14918341C03D5A + xmp.did:74117FF720071168B4F2D4360359303D + xmp.did:7420CBAB6EE7DF11A0D68F50E2E34A90 + xmp.did:7437D61FD021681188C696DC609994EC + xmp.did:745E037A2DA5DF1184BBAC8EF9CEA0E8 + xmp.did:7463DCF5E4FFE011BCACDC1D07438994 + xmp.did:748AF5D09E2068118F62E739643A5753 + xmp.did:74F17052D4DCE011B5ECA038BBBEA458 + xmp.did:74F33ECEDBBADE1191609FD758966D64 + xmp.did:74F776A110AADF11B522FC835FE72A90 + xmp.did:7527D1C3CBB4DF11B655B1F1A9C53FD3 + xmp.did:753CF8338CF2DF119B8C9A63DB697D95 + xmp.did:7540E64694C9DE11AA9E890180E6C36C + xmp.did:7582055E1F206811822A9DB99EAC3A6B + xmp.did:759368025499E0119D899925E4F60D72 + xmp.did:7597A7E42EABE1118C62B15300F9FA22 + xmp.did:759BEE3E4093DF11AF8EA8542F18F9C7 + xmp.did:759EC5FDBF66E11192B4D50FDFA7DCBB + xmp.did:75A2C2043AD611E08354924C095BC6E2 + xmp.did:75BD643B30CFDE11B3D8E04C26A71982 + xmp.did:75DEDC25312468118B72DE2C6B104274 + xmp.did:75FC0102052CE1118029CEF13AC0AB4A + xmp.did:75FC7CDC7B20681188C6D9EA900BA018 + xmp.did:76129C8869E5E1118D54CE9A3297AEA1 + xmp.did:7623F69225C51168B628F5720D780B35 + xmp.did:7631A3109686E0119D98C2D90B3468EC + xmp.did:7654C2447F63E111A46898CF376EA9B5 + xmp.did:76681C291B9CE111A0D1E0EFD2AB67E4 + xmp.did:766CF6E8BFDEE011B99E930982E706CD + xmp.did:767E991B2F83DF119773D504666A9F25 + xmp.did:76857F743F20681197A5E7B0831EA4A7 + xmp.did:76BD643B30CFDE11B3D8E04C26A71982 + xmp.did:76C0CC023F2068119109CD086EAAD59F + xmp.did:76D535ED0A206811994CAB00FAFA414B + xmp.did:76FC0102052CE1118029CEF13AC0AB4A + xmp.did:77058E810275DF1190AAD8563C512C0C + xmp.did:771BDE3F01D4DE118943FFF150E44DA9 + xmp.did:771FC345E8C1E111A878CF84CD6300B2 + xmp.did:7720CBAB6EE7DF11A0D68F50E2E34A90 + xmp.did:7758B6A31F64DE11A29AE887B09B53DD + xmp.did:7771AC8402DADF11AF6FC9737AC10B27 + xmp.did:777A8B8D2CCEDE11AC1FBF9D231E361F + xmp.did:779A6B435942DF118C0483F61AF9858E + xmp.did:77A552568610E111AC3DD4B7D8A25CF9 + xmp.did:77A8D8495F92E011B50294257EFDA589 + xmp.did:77AC74D1DD86E011BFE892C38C7D5217 + xmp.did:77BA295A173CE111A755A64CCF3AF6A2 + xmp.did:77BF225C4131E011B2CBC77CF001FE05 + xmp.did:77FA0FA81CAFDF1195B5BB7EED4EEE66 + xmp.did:77FC0102052CE1118029CEF13AC0AB4A + xmp.did:77FCDCFF0C20681188C6C677A3826B0E + xmp.did:77FEDC7DD3D7E411B3FEA50799D84EFE + xmp.did:780C8853F678E01184C0A4200CBECB5B + xmp.did:782128F744D6DF11B438C8E24DBF6844 + xmp.did:7829819D65A1E111BCC3A0D676A1A561 + xmp.did:78400BFFB097DE11A1DFC3E1EFDE9E0A + xmp.did:7868EEAF1733E011ABC3E0E298CAA13D + xmp.did:7875BC0EEFBEDE11A602AADC5AF8C5BA + xmp.did:787C135F9C9DE111BF9DD9DFCBFDF11F + xmp.did:788200B33261DF11B38F998875CC8654 + xmp.did:788AF58CDC9FDF118C00C3C968ABDC06 + xmp.did:789131241F6CDF118BE7E8579E18CF61 + xmp.did:78A5A4CB149AE111835787A7994F4DB5 + xmp.did:78BC0F6006F4E011B93CD815AD0D94C0 + xmp.did:78BC6FADDE7DE11191DD94CEC0013025 + xmp.did:78D01456F83DDF1190CA8266881FE2CE + xmp.did:7904508AD868E1119C239406340D5219 + xmp.did:7905B13A0E206811871FC0314F02A4F7 + xmp.did:790916DB092068118C14F3F57EB97687 + xmp.did:7920CBAB6EE7DF11A0D68F50E2E34A90 + xmp.did:7925336F792068118F62FB2F86618C29 + xmp.did:79352EA0C156E011A746F8EC483FDFFB + xmp.did:793AE5F91840DF11AEF7B4966E6B8813 + xmp.did:7951968373B8E0118F8EDA00AA1CB991 + xmp.did:79716790508AE011A3A3E55B7E565EE8 + xmp.did:797A8B8D2CCEDE11AC1FBF9D231E361F + xmp.did:79E4E194AB84E1118913954BAAE5FC3C + xmp.did:79F51A4782F5DF11A6FFFB445089DD04 + xmp.did:79FB201E5FC9DF11A597F1EC539FC87D + xmp.did:7A2617D26A65E111A3448730A68B0EB7 + xmp.did:7A3D731F21B0DF118BAFF8FAC2F2AE36 + xmp.did:7A7744FB63D511E0AABFC58C3D25E939 + xmp.did:7A7A501C1F206811871FE0E4CB6C52AC + xmp.did:7AB4913D6722E511847DD98655CD3253 + xmp.did:7AC1A8E47A206811BA24F97E9D027B47 + xmp.did:7ACDF09EA55CDF11B7B79D5A05569673 + xmp.did:7ACE8BF614206811AFFDE23F1424EB30 + xmp.did:7B043B7D7321E0119D96D946FB4715F7 + xmp.did:7B29C0F54820681188C6D9EA900BA018 + xmp.did:7B47B34413206811822A80BA31773630 + xmp.did:7B51EA8B1D4DDE119E89A3ED56CCD770 + xmp.did:7B78254BE0AEE011853D816FB98ABCA3 + xmp.did:7B8746672509DF11AF4499B12E8CC26D + xmp.did:7BD2A7176C34E01183C188C0B0DA4CAA + xmp.did:7BEC155F5BC4E111A669BD9B8C409492 + xmp.did:7BFB201E5FC9DF11A597F1EC539FC87D + xmp.did:7C07D8DC8E79DF11B8DDA0E346A0AACF + xmp.did:7C0802EC28E8DD11805BB1EE4F2A3FA0 + xmp.did:7C082A501C20681197A58952567F2A73 + xmp.did:7C6F110A13F4E0119A97C6F5F7FD5B9F + xmp.did:7C88C02FE53FE1118DF19C6DFE49C038 + xmp.did:7C8DC490E0226811871FAFE2B6937D3F + xmp.did:7C9C03F0A04211E08CD78C7A9D15FD14 + xmp.did:7CC8D7C745B9DF1189DACB811D57ABC7 + xmp.did:7CCBF88BF44AE0119DBA84BCA2BC436A + xmp.did:7CDC63B82E2068119109C5E97A302410 + xmp.did:7CE1F0E7B37ADF11A34EC5406310B97F + xmp.did:7CE9741F22206811AE568088196B6FA8 + xmp.did:7D15A33B4C27E0119B80CF11737E6DBA + xmp.did:7D1FC345E8C1E111A878CF84CD6300B2 + xmp.did:7D29CB155D53E011B4ADA05F9FBFB5F3 + xmp.did:7D4E139D1885E011BD3DE9624629426F + xmp.did:7D5E1B8AEAEFDF118A9DAF75AAD34E89 + xmp.did:7D5ED72279B111E19AF3D57CE9DEB3C9 + xmp.did:7D5ED72679B111E19AF3D57CE9DEB3C9 + xmp.did:7D80E02F96BFE01180AA9C5B0CFF19ED + xmp.did:7DA086F9CB66DE11A815882EAB430946 + xmp.did:7DA755F55C2068118C14E588E3F20ADB + xmp.did:7DCB2FB2AAD7DF11BC0DC196B8130A2E + xmp.did:7DCF6D0E3FA8E0119901FA132A896267 + xmp.did:7E097AC57FF1E0119DA2D2B32DA8EAFC + xmp.did:7E1DB248C56DE0119292AD055BFAFED8 + xmp.did:7E2CC435F356E011921BE2DE87A39B49 + xmp.did:7E59F95E6E206811994CB9FB5B6353A4 + xmp.did:7E702F8623CEDE11AC1FBF9D231E361F + xmp.did:7E9041CB3860E011B42CE1788AE2BCA5 + xmp.did:7ECF6D0E3FA8E0119901FA132A896267 + xmp.did:7EDE5C6E1C206811B1A4F519CDE25F28 + xmp.did:7F0EA43325E5DF11BC76BB586B198F5D + xmp.did:7F1FC345E8C1E111A878CF84CD6300B2 + xmp.did:7F29CB155D53E011B4ADA05F9FBFB5F3 + xmp.did:7F6D26F1E2FEE0119C6ABCC0BC7488E3 + xmp.did:7F8C94ED2AE5E0119ADF95DE74576FF9 + xmp.did:7F9175A3F75DDF11B956E1A7DFE599B1 + xmp.did:7F9C20F7A94AE011BB98A06D80C6151F + xmp.did:7F9C53A211206811ACB683AE4DE260D1 + xmp.did:7FBE3A3CF6F0E0119B3996CAEAF798BE + xmp.did:7FBFAB2ACFDBE1119E848C69D255D3A5 + xmp.did:7FD80270679FE2119DF2F25A7D05547F + xmp.did:7d4deb19-3998-ff4d-bc2f-c97b3c2446cf + xmp.did:7e6c044f-d146-924b-8c30-05cfd4b9aafe + xmp.did:801148D6234DE011BB98A06D80C6151F + xmp.did:801A5C852C20681180839613FFBBFAAC + xmp.did:802CC435F356E011921BE2DE87A39B49 + xmp.did:804007CE2420681180839613FFBBFAAC + xmp.did:80504C2963A4DF11B82BBA151D8DC1FE + xmp.did:8052F2A78E75E011B6B6D6DA52877FFC + xmp.did:8059655B2C2068118F62CDC0FFB60C81 + xmp.did:805F0595BD92E211A4DCB3E89AC9F855 + xmp.did:8075F5481580E011BA47DD094AF996D2 + xmp.did:8078365AE76F11E18533F1ECFAB65801 + xmp.did:807B688D0AAC11E190E19BD07C44EEE2 + xmp.did:809056B11CC7DF11B758A2A8BA83B35D + xmp.did:8090AD7B342068118DBB9D77FB701C12 + xmp.did:809E3A933B44E111BA88C94C716A6974 + xmp.did:80C93B4FEB3111DF9C439A7A28CCF362 + xmp.did:80af9a3d-eb20-3240-869c-8570c071482a + xmp.did:81089B2B45E9DF11A6B0E764E6EDBC05 + xmp.did:8120E7B5C984E111B053AE23CD93C8B3 + xmp.did:81235A963659DF118C6BDB7AAC07A25A + xmp.did:81309A5FCC76DE11AED9E5D61720DD5C + xmp.did:81313DB71285E111BBCB8609C9DD7F54 + xmp.did:8144A177F040DF1195F0F65856D8331F + xmp.did:81542656681EE1118FFEA8F400ED5D33 + xmp.did:81552F00A368DF11828DDD7967B330D3 + xmp.did:81580FE49461E011A0E2A5F0844C204E + xmp.did:815BBDB09053DF11BC1C8732308226FD + xmp.did:8166F94F8E5ADF11B2A8D5C54226B8D0 + xmp.did:817A0AB13DC7DE11A1F68531C4A44C7F + xmp.did:819E8D124E09E111B6C8C5ECB18A364B + xmp.did:81A8DCB3ABEAE011B4F5D486F65C8D25 + xmp.did:81AC7B4F75E8E011A311DB0B6646F233 + xmp.did:81B18B624CAF11E09699D59E3516ABEA + xmp.did:81B59045012CE01185A6E2BD8F968FB1 + xmp.did:81BFAB2ACFDBE1119E848C69D255D3A5 + xmp.did:81D55FF5188BE1118ECEC53161602DF3 + xmp.did:81DA1414670CDF11A061811B28A2478B + xmp.did:820348437404E11184EEFE5FD93BE455 + xmp.did:8205AFF09820681196A8F9D9696838B7 + xmp.did:820E24D92B2068118C14B7428F978057 + xmp.did:8210FDB3082068118A6DAF67FF497528 + xmp.did:8212A7BB4926681195FEFC444A5BEE9F + xmp.did:82606509298E11E1B44D8DF5B5943ABD + xmp.did:8267DC350325E111B981DAE13D209B8D + xmp.did:827DD22FA288DF118C39B933A933A347 + xmp.did:82829D346A53E211A76EBE9987E0B8A6 + xmp.did:8287D1358ED7DF1183A1C3735AAA22E6 + xmp.did:8294585637D4E0118A9EDFC6DEE43DAB + xmp.did:82965EFF44BBE111A66FDF447E5DBBF7 + xmp.did:829CF446FAA6DF1196A4E198EBE76935 + xmp.did:82ADEDBBEF34DE11969AE09D83E3F420 + xmp.did:82BB3E027098DF11BC85F9E4578441E6 + xmp.did:82E4D6A4D7B6E01180338C86A024A0D6 + xmp.did:830B9C46982568119109AFE3CF4AF35A + xmp.did:831516337350DE11A91BCF2B4BB0BB7E + xmp.did:8324F714521AE011822BABF806E9B864 + xmp.did:832892B8412068118F62F71255CC48E7 + xmp.did:833C8CE42459DE11A76AB674739B3094 + xmp.did:83447AB3B4CAE111B37CA677D5557B72 + xmp.did:835919AFB44FDE11B0DCED93F5CF0FE3 + xmp.did:83616174262068118C97EB5E0646166B + xmp.did:8380539B8D14E0119CF3A5B58614FB92 + xmp.did:838372649821681188C696DC609994EC + xmp.did:83866C9CBC5BDF119620AD6226625194 + xmp.did:838BF2091320681188C6B205E89566F4 + xmp.did:83A39AA2BF4EDF119ADACA755A69B03B + xmp.did:83B41E2DDE55DE11AD63CFBD010DF686 + xmp.did:83C9865CA269E111A67ED33D75487D10 + xmp.did:83E41DC4206B1168AA77C2505C561F83 + xmp.did:8405199C2F206811871F80F092687C74 + xmp.did:841A5C852C20681180839613FFBBFAAC + xmp.did:841BFFD5F634E0119D21CD3E9181B80B + xmp.did:842CC435F356E011921BE2DE87A39B49 + xmp.did:842F757B8120681188C688F5D09384AC + xmp.did:84331B7DDBC2E0119AA5AB5D8BC56B11 + xmp.did:847DD22FA288DF118C39B933A933A347 + xmp.did:848AB3085E27E1119E5FA2060542126E + xmp.did:84C073E25F20DE119E1CD4E3ADF72A8B + xmp.did:84C08F2E9E26E0118C2BABB207A93EFE + xmp.did:84C76E5CA61EE0119B62C1A72CDDBB2D + xmp.did:84C8C1C6D50FE011B03CB0596E1DEC4B + xmp.did:84C95075E3FBE0119B5AF02CBE935267 + xmp.did:84D05C0E3B72DF118C3A85F2086DDFA0 + xmp.did:84D94C5830A411E0BA75FDACF6D3CB35 + xmp.did:84DDD548D89FE311A2EF943AB38F8AED + xmp.did:84EF83C70B20681197A5EA3B7AA659C7 + xmp.did:84F8E8F71582E0118089EA75E890DA3C + xmp.did:84FB4C3E2740DF11BB98CE11030CC74D + xmp.did:852600B68B8BDF1198968D8BFA9A0C11 + xmp.did:853AF130AD53E11183D4CF35311FD769 + xmp.did:85447AB3B4CAE111B37CA677D5557B72 + xmp.did:854856E6F842E111BE6699D251BD57B6 + xmp.did:854D5A42092068118C14CA160A1107BD + xmp.did:85740B880E21681188C696DC609994EC + xmp.did:859515F9C633DF11BBA4AF1809F5BA86 + xmp.did:85A95516CEBCE01186B3B3E56129FCD9 + xmp.did:85B979B997E4E0118E07C315AD56A832 + xmp.did:85C6DBBD452CE0118A81AEF0FB9F6F8D + xmp.did:85CAF93392266811BEDC9678CA0435A7 + xmp.did:85F83D980E26DF11BF3EEA8A082383DA + xmp.did:861A5C852C20681180839613FFBBFAAC + xmp.did:861CB129116CDF11A081DAC65549FFF8 + xmp.did:86276cb5-d24b-8b47-81f9-76b348bf2250 + xmp.did:862C2AD4A158DF1189EEA9543E8F2E3B + xmp.did:862CC435F356E011921BE2DE87A39B49 + xmp.did:8651BE3E0CEFDE11ACD1CD62D8EF3885 + xmp.did:8656C1EE1B206811871FB68593F9AC6F + xmp.did:865B2D5F46236811994CB5207DCDF24F + xmp.did:86649C080B2CE011ADA7DD585FD5C7EE + xmp.did:866F47642AB0E011BBCA875196D3D860 + xmp.did:86740B880E21681188C696DC609994EC + xmp.did:867DD22FA288DF118C39B933A933A347 + xmp.did:8698CBE66115DE11AACB95B67971A1B2 + xmp.did:86D6104926206811AE5689AB4F94AE06 + xmp.did:870225D20E94DF1195A5FC5C316CC418 + xmp.did:870583F545FEE011B6A8EE7180B400C9 + xmp.did:873E3B1E7F2268119109BDA71F52395C + xmp.did:87447AB3B4CAE111B37CA677D5557B72 + xmp.did:874D5A42092068118C14CA160A1107BD + xmp.did:8754DB7C152EE011896D9CA4B320EC02 + xmp.did:876EF1FF082068118C14CA160A1107BD + xmp.did:87D5EE3C8922E011AFCE82DA30F5B514 + xmp.did:87DCC4C32FFA11E1B96EC339C382471D + xmp.did:87E33B19803811E09258D24CBD61FD3F + xmp.did:884D5A42092068118C14CA160A1107BD + xmp.did:88603A9963DADF1187E8D4E0EC5A930D + xmp.did:8870C5DB32DFDE118C7A95A6BECE17A5 + xmp.did:88740B880E21681188C696DC609994EC + xmp.did:889806E20657E011921BE2DE87A39B49 + xmp.did:889BA21A4149E111855DAD8969DC17AC + xmp.did:88A1231164D711DFA6978521D60DF460 + xmp.did:88AEADE70FA8E511BB46EE2D559E6AFE + xmp.did:88BB93CA299911E1ACF297D71C602DED + xmp.did:88C351403ED8E11186E3E883EB9255AD + xmp.did:88D8DC613C73E01184C0A4200CBECB5B + xmp.did:890AC9EE6B04E01186F6C96159FA26E8 + xmp.did:891A5C852C20681180839613FFBBFAAC + xmp.did:893934E58E97DF11A4F8CD98711E2A3F + xmp.did:89395A9EDE0CE0118A8FB6E7CCEEE848 + xmp.did:8943C3017AD411E084B2F7A946C32DA5 + xmp.did:89447AB3B4CAE111B37CA677D5557B72 + xmp.did:89750EC5FB6BDF11B388E1C24DFE0D54 + xmp.did:897980D131FFE01198B7823DC069C12F + xmp.did:89BCB41825F6DF11802ACA47813319CF + xmp.did:89C45F4A208ADF1195A9C4DC515AF3FD + xmp.did:89CF3AE7B717E0119C6AB37D01820637 + xmp.did:89DB88EE8521681188C696DC609994EC + xmp.did:89E36FFA7D14DF1197C89C8FF17B2D44 + xmp.did:89FD7A8B0728E111ADA69AD140FE9E00 + xmp.did:8A06BAAB66B0E011825CD794A42E8EF9 + xmp.did:8A21C5B8E7EFDF11B677B87E76E68AF4 + xmp.did:8A4478F606F4DF119425BF3C1F1749DB + xmp.did:8A6216F842FCDF119ED78B2C582C52C2 + xmp.did:8A94BBDE35206811A7BAD0C7E96E8116 + xmp.did:8AAEADE70FA8E511BB46EE2D559E6AFE + xmp.did:8AD0FEBF7954E011BB7DC31FA9F74AB4 + xmp.did:8B0045FE7576E111BB51D423AB039B46 + xmp.did:8B01E3417A20681188C6DC0217A7B5D3 + xmp.did:8B059136F82211E08408E1685824A4FB + xmp.did:8B2B9B501E20681188C6E8E9DC93EA8A + xmp.did:8B77F5482E53DF11B39389FC48E1A8C9 + xmp.did:8B90858FB573DF11BFBBF00759A3D452 + xmp.did:8BD0CC8BD42268118DBBD37DD26DADFC + xmp.did:8BD0EE5C653311E1B736BFACD3620D8F + xmp.did:8BD135E0F9BCDF1189D3A67CE1D3046A + xmp.did:8BD931BF1A6CDF11933DA1411EF6F50A + xmp.did:8BFC717F1457E0118767EBE1801FE9FE + xmp.did:8C2FC0921CC2E011AE33A676771642BD + xmp.did:8C3056AD5244E011AE3EEB69306A4F07 + xmp.did:8C4856E6F842E111BE6699D251BD57B6 + xmp.did:8C490D9608206811823F81C40FB368D9 + xmp.did:8C58FD204BD2E011A9368AF336806B32 + xmp.did:8C5F8554A4A7DF11BDB8F75F4D0AA037 + xmp.did:8C8372649821681188C696DC609994EC + xmp.did:8C9B4D348229E011908F9AD74A4EDBB3 + xmp.did:8CC42AEE2384DF11B96ED07707E47A12 + xmp.did:8CCD8DD3242068118F62C903F145A3C0 + xmp.did:8CDD768B6C5ADF1188498FD1EFE0D6A9 + xmp.did:8CE9632C7879DE119FA28FC1CF4C6D0F + xmp.did:8CF26DC84436E0118F21DEBFA61F4932 + xmp.did:8CF7A11EE048E1118B88956415476A58 + xmp.did:8CFA6888BDC9E0118A1894B66E94A91C + xmp.did:8D1BFFD5F634E0119D21CD3E9181B80B + xmp.did:8D20EE37F90FE011AB5AD171283D1655 + xmp.did:8D7280898A36DF11A3309C11A31C2A5E + xmp.did:8D805EB048FAE011AC34826A9FEB64B0 + xmp.did:8D92EA98A977E1119805DB668CF88404 + xmp.did:8D9A91A968D9E011B6A6C8590EC842C2 + xmp.did:8D9EF7514A2068118F62B8304774E5C3 + xmp.did:8DE1959C83C2E0118845DE1447055626 + xmp.did:8DEEC9AECEB7E51189E9BE36B3997CF4 + xmp.did:8E0FC9410A44DF11BEFDCD36FB7893D5 + xmp.did:8E4B52716B6CE511880DE033D23CBAAC + xmp.did:8E4CE70DE76CE1119D4AC649B2894719 + xmp.did:8E6562B76CF3DF119E0DB7062553489C + xmp.did:8E6EF1FF082068118C14CA160A1107BD + xmp.did:8E740DEC723EE011B82A95AEAAA45352 + xmp.did:8E92EA98A977E1119805DB668CF88404 + xmp.did:8E935AD20E206811822AA1DC23D37A5E + xmp.did:8E966105F320681188C696DC609994EC + xmp.did:8EBBD10B0AA2E11184F7DC5AF9CBD08D + xmp.did:8EBC07326ADFDF11BB07B143F18137D7 + xmp.did:8ECFD34D002968119109B2B3A61F48F7 + xmp.did:8EDE368A27ECDF11BCB8F3C453200441 + xmp.did:8F187CFDBA37E4118C15E5C0034A595B + xmp.did:8F1ACF29AE75E1118E58A8961F1319EA + xmp.did:8F216AF768FDE011B5F2D55194913984 + xmp.did:8F3056AD5244E011AE3EEB69306A4F07 + xmp.did:8F4DFE5AC221681188C696DC609994EC + xmp.did:8F5C464F978111E181E4DD98FD6AFC60 + xmp.did:8F6F53FD3A26DF118BC5928689F4BE6C + xmp.did:8F95AECCAE64E11199EDBE2B4F312735 + xmp.did:8FA7C4E6F0C8E011B40EF1E7982D5537 + xmp.did:8FAF591F00D3DF1185548EF48B97A94E + xmp.did:8FCCCF38B904DF119F2CD4E3A2525BA6 + xmp.did:8FE16DCB9A23DE11A635C8F315D1A853 + xmp.did:8FF0BA7C96D6DF118124CBB3F134173A + xmp.did:8dd4e35d-9f25-5d48-93ae-b29b9a447d98 + xmp.did:904BA39050DC11E1A8A38BA009D41FA2 + xmp.did:904E636A7CB7DF11A328B924F731DB67 + xmp.did:9055651CDAA4E01197A1A65F7AE4791A + xmp.did:90815380F12511DFA3AAF3A6CFACF432 + xmp.did:909495A50A20681192B0CBD54873552B + xmp.did:909D9B02B2F2DF11BD97AADAF5573B93 + xmp.did:90ABFBB47D1FE011910F93D0283BEC57 + xmp.did:90C5D5266479DF11865CEEF09851FD79 + xmp.did:90E0540C0F99DF11B25BEF1121833044 + xmp.did:90E47E696271DF118311B0C80F59CA13 + xmp.did:90E6959E6208DF11B202A51F4F00DFB9 + xmp.did:91029EFF1228DF11A509AA44CE834541 + xmp.did:910A77C8D7F2E011B05D940BC95F19BB + xmp.did:911C7F2A8A21681188109F9973D46F2A + xmp.did:911F03D9F202E01186F6C96159FA26E8 + xmp.did:9126E9F04E3BE111A9F0AC53C5BC7120 + xmp.did:912B737B36CAE1119693CF0CD89B1CEC + xmp.did:914A696C101DE1118D29FEC5BF395782 + xmp.did:9160F9572250E0118558E73318898BC6 + xmp.did:917BEC24B9B5E011A6AFE3EBB2ACA55F + xmp.did:918B85653835DF11B6C1EB0CD908AC7C + xmp.did:9191522F3E12DE11B29E8393AADA5AD1 + xmp.did:9192FF6B0A4CDF1187C0E54B36521B89 + xmp.did:919615279A43E111A909B35628CF6408 + xmp.did:919A0E71C10EE1119478F3876777A19C + xmp.did:919DA1CDF063DF11BC5D8787CF21DA71 + xmp.did:91A16E5206E9DF118464FE7C077CD0A9 + xmp.did:91C697675305E1118576EDF25932BFDD + xmp.did:91D03B52A2C5DF11AD408D720C5A42C7 + xmp.did:91DB88EE8521681188C696DC609994EC + xmp.did:91F0B932FE12E011808E9F28B306454A + xmp.did:91FF051E0FD3DF11B2D1C51F59B5FB29 + xmp.did:924AB28B2DF4E011B8458ECC82C9836A + xmp.did:924CE92A212068118A6DCBD1B0BE7EE6 + xmp.did:925AC5AC0720681192B0CBD54873552B + xmp.did:926201BC2855DE118DD69CA93F6DF858 + xmp.did:9278CBA665C2E0119329DD6668FC9FEA + xmp.did:92966105F320681188C696DC609994EC + xmp.did:92B423E31A2068119109BCD3F23227AF + xmp.did:92C0D1275C68DE11B0F481AE8B322C31 + xmp.did:92CBBD15D6206811A7BAB1FC45DDAD2B + xmp.did:92E577500821681188C696DC609994EC + xmp.did:9309562520EEDF1189DCF967BD1D0466 + xmp.did:930B08ED590DE111B8FDAF02BBA9494C + xmp.did:930DD8B928206811AFFD97A6A7E489B5 + xmp.did:933BEEDB3C33E0118E20B1AD31AED0C0 + xmp.did:933D0DCED972E011939FAF49F3385445 + xmp.did:93483629ECF2DF11903DB22C3753D5AD + xmp.did:934B877D4D49E0119669905D76CBAC93 + xmp.did:934D8ADDA974E01188B996EB31D6BA25 + xmp.did:935A631CB81BE1119B8DBF3D2D3C0101 + xmp.did:937316FC7914E0118232E88ECFEB6715 + xmp.did:9377735C065FDF1182C09C4CEAF60EBA + xmp.did:937E2D7F8FB1DF1180D69B259D881A63 + xmp.did:938AB606C7FBDF118241E5A71723C879 + xmp.did:93A16E5206E9DF118464FE7C077CD0A9 + xmp.did:93C1EBD2624FE11180FBDE43E425C516 + xmp.did:93E477BE7CD1E011989A9E8E51C4EC5B + xmp.did:93E7BC492E5CE111926EBE4102A44FEB + xmp.did:941B454859F6E011803AC866B7C1069F + xmp.did:94282AF0508811E097A78CDC71EB349E + xmp.did:944A847A363B11E0AEB2FFF11F63D948 + xmp.did:94585C9845FFE011B221B51DDB781495 + xmp.did:94658B6B3B206811871FDB7C73EC7AF4 + xmp.did:9476f99b-f5d0-9c49-a55e-78cb0ad350d2 + xmp.did:9497763E26ABE011979696CECC20A286 + xmp.did:94A9E6E40CBDE411A62FE31619ACEB56 + xmp.did:94BDB1ED6FE5E1118D54CE9A3297AEA1 + xmp.did:94FB5F2C6FBEE0118C949C067492EDE2 + xmp.did:951C5B866564E011B7F2DB0F5547F5C6 + xmp.did:9560F9572250E0118558E73318898BC6 + xmp.did:9569A224EA43E1119C07EF2F0F32B02F + xmp.did:95A96A28F3DAE111A7AAA5DE6EB18B89 + xmp.did:95AC3C120E36DF11B6D98DF338B7C12B + xmp.did:95B2C65AB684E011ABCFE78D83B50568 + xmp.did:95B8A82E37D2DD119E668BF87AB33AD5 + xmp.did:95BAFD58EB33E0118E20B1AD31AED0C0 + xmp.did:95DE2CA7D7D6DD11A0B7D636E389DFA6 + xmp.did:9608CCC1ADF5DF118DE6E60F439F0102 + xmp.did:960B676610D3E01196FCFB40DDA31A34 + xmp.did:960C29806B4D11DF90ABFB59532F5FEB + xmp.did:963D8C676B1FDF118727A7F59103C94D + xmp.did:96492472F6E0E011BE118A436AAF9AB7 + xmp.did:96591BA8B7E2DF119A52D83C080E6159 + xmp.did:9672422DDBCDDE11ABFAA0D8603A9AA1 + xmp.did:967DD1DC2B34E011B6CDA8F0B2C213CD + xmp.did:968CEE49372068118A6DC2EB5CD0A707 + xmp.did:96A1CF690920681192B0F57DFE59A27B + xmp.did:96B0C3C04858E1118EF3C77E6C6CF771 + xmp.did:96B8A82E37D2DD119E668BF87AB33AD5 + xmp.did:96C81ADD14236811AF6F8C15B6994DA7 + xmp.did:96C8249C6FFADF11B295A881C3F5AF4C + xmp.did:96E5DF7A225F11E0829CC34898E8E2FE + xmp.did:96E76A59192468118F62CC866702F2FE + xmp.did:9715B7202EA2DF1183CCD2BDF7A48505 + xmp.did:971A8BC792E5E111B136B495E2853551 + xmp.did:972DC55FAD5DE011AA3EAB40A4960498 + xmp.did:973643EE25B2E011A9E6D61C091A241B + xmp.did:9785BA49DBDADF11B163E9831471534B + xmp.did:97A9C9B89D24E0118923B656DB9CFD00 + xmp.did:97AC6FC823C0E411B3958931106E1BFC + xmp.did:97B7DD4BB41EE111916EC3033FCE98E1 + xmp.did:97B9D8E05C06E211BD8DB6F2D1F074E8 + xmp.did:97CDB28DA9FBDF11BE7B9B75940AEEE9 + xmp.did:97EBFF980B20681192B0C1BDF1A7A76F + xmp.did:97EC96DABB48DF11A409A37C5A82C998 + xmp.did:97F9D2C235206811AFFDE9CF455472A7 + xmp.did:97FC350B48C2E31194C9E7F062264167 + xmp.did:97afe843-b646-8545-b4ca-0101e2be6bf2 + xmp.did:980545A9BB78DF11A744C11565DD2948 + xmp.did:9813CE3A9E66DF11A6C3940C3CABD8FB + xmp.did:9813F54FF9FEDF11ACB788A8E08450B2 + xmp.did:982AFCB00969E111B3F69F05BCCE11EA + xmp.did:982D8E03AA7EDF119D1BBECC9F294BDE + xmp.did:983686D7057FE111BAC9A4AB7E286612 + xmp.did:9838B23ABBEF11E1B6B6837842397499 + xmp.did:984BF333FE9611DFAA4B9CF33FFC31D6 + xmp.did:9869A4B83A206811994C8C0DAA3ECFAB + xmp.did:98759349A621681188C696DC609994EC + xmp.did:98A5F5097164DF11A0D7D0695C29505A + xmp.did:98AB9F3823206811A7CCFDA98EF5A496 + xmp.did:98BE7D112CB1DF11B2FAFE5812628253 + xmp.did:98C7248301BAE111AADAB87E045B5717 + xmp.did:98C912840720681192B0E6C15935B3CD + xmp.did:98E3903835216811910993DFFC667F27 + xmp.did:992CEF020B2068119109FEECB06854FB + xmp.did:99343A4732206811871FE8DD2340C0B0 + xmp.did:9939B89EDDD2E011B01BED703C9B0C2E + xmp.did:9939D242299911E1989F903F4DB0B415 + xmp.did:99486C511B70E011B86D8010254A84D5 + xmp.did:9960F9572250E0118558E73318898BC6 + xmp.did:99664FC61C36DF11A4C4A95CF22C3B0B + xmp.did:996837C582E4DF1182A58D84AA49613A + xmp.did:996BE426E91CDF11B933FC2C1A4C2DBC + xmp.did:997028139040E111B63BA1942D69385F + xmp.did:9972B3E128B3E0119A56AB66C5E750E4 + xmp.did:99B4D846FAE7DF119D85DAE534F7C2DF + xmp.did:99B71567B261E111B6A7E482F8895D6C + xmp.did:99DF861774BEDF118EBFD6E1116D13B7 + xmp.did:99FC62910D45E0119B29F91D78E1B467 + xmp.did:9A077E58F016E011AC05F56FEA783F52 + xmp.did:9A0E6F23EB9DE1118E00F681D7D08679 + xmp.did:9A0E9E3B9BBFE011AFF8DFC27770BD90 + xmp.did:9A61FC0A002DDF11BEB3A042D0FC994F + xmp.did:9A759349A621681188C696DC609994EC + xmp.did:9A75AEC0C623681197A5F66835A3091C + xmp.did:9A8FD6619B3CE2119925D9CC22BAEF70 + xmp.did:9AA3C568FD5BDE118E7DB76DF5F44158 + xmp.did:9AC642435D2AE211AA4FF765CAD2D2A8 + xmp.did:9ACD98F7A9DFE011BAC7F7CD194FE1BE + xmp.did:9ADE5D8B387EE0119980D9C7A0723BCA + xmp.did:9AE2F3463040E1118DCC95B58796E1B2 + xmp.did:9AF7FB7C1420681194578AA50D8ACBC3 + xmp.did:9AFC1C07C3E9DF118464FE7C077CD0A9 + xmp.did:9B0545A9BB78DF11A744C11565DD2948 + xmp.did:9B0BC90E76B4DF11A365EF5257762381 + xmp.did:9B2F4B1665F2E011AF30B599DCF3AFB5 + xmp.did:9B34DC644640E01185B59559E33EB089 + xmp.did:9B56E926E621681195FED69596C72CCF + xmp.did:9B5D3DC5741BDF11B2E7B10B152EF746 + xmp.did:9B6B9E3625A0DF119176BE9D9197EAB7 + xmp.did:9B6C6226B5FEE011B5D0E8D3DB27E5E4 + xmp.did:9B7BA3AB0B20681192B080542646EBD1 + xmp.did:9B7BCAD8D683DF1191F8B8A33FD3ADF4 + xmp.did:9BA59F93AC206811B4CCE9880A1B4D83 + xmp.did:9BAD4409BF93E011BBB9E3ECD100E00D + xmp.did:9BC605AE0720681192B0CBD54873552B + xmp.did:9BCAE27235CEDF11A78EEE6DEDC81BD7 + xmp.did:9BCCC40ACAEFDF1199E2EE90A8025B42 + xmp.did:9BE8846BE47CE011BAD9E0646690CAEC + xmp.did:9BFE2BA21486E011A8B0C5C770A167CE + xmp.did:9C88E69A382068118A6DF50DC194039C + xmp.did:9CB26B993443E111B1C3CDE6ADA24500 + xmp.did:9CD939D30C7FDE1193B9F16B1DD87785 + xmp.did:9D1BECD81020681197A5F6F85A622253 + xmp.did:9D26044AA977DF1180A993884DEAFA1B + xmp.did:9D438173BD52E011BA4AB6EDCDCC4831 + xmp.did:9D477690B6B2DE11B540EAD222586A4A + xmp.did:9D53CC471839E01191A08D3508D5678E + xmp.did:9D8268E7517EDF118E0EA6ED551ED495 + xmp.did:9D8677FD557CDF1196D788D75EC869DC + xmp.did:9D8B6378A8F5DF11BD97AADAF5573B93 + xmp.did:9DA429A15120681188C6D9EA900BA018 + xmp.did:9DBF2E6B53BCDF11BF13EDD7C6A21F60 + xmp.did:9DCC7EF80415E111A8DC80E1F6441171 + xmp.did:9DEED1530021681188C696DC609994EC + xmp.did:9DF1224211206811822AE3B9CDB16A6A + xmp.did:9DFF874981BBE111A4B2BA528552D568 + xmp.did:9E0A5EBF9DB411DF9B0D808CA4D20FEC + xmp.did:9E4C6A750820681192B0FEBDA93E3C72 + xmp.did:9E5A44A108206811871FE8C12D95F69C + xmp.did:9E7D607C4F216811AF5C82C8D4EEE19A + xmp.did:9EA1AF2B9358DF11BB73AF92DE6846CC + xmp.did:9EBF2E6B53BCDF11BF13EDD7C6A21F60 + xmp.did:9EC912840720681192B0E6C15935B3CD + xmp.did:9EEE9DD0C53EE011BFBA90116FF25CC3 + xmp.did:9EF7D92FC392DF11AED6A59B0EF71149 + xmp.did:9F2C9CACEE0AE11186C29F7E56C3BAA4 + xmp.did:9F477690B6B2DE11B540EAD222586A4A + xmp.did:9F53ACD80D54E0119E1DA9C1E363878D + xmp.did:9F6D9EE0E00DDF118CA6B77357207584 + xmp.did:9F6EF0888569DE11A4BE9D93F4471CBC + xmp.did:9F822ADCF0D711DFBE96AA0FFE5462A2 + xmp.did:9F822AE4F0D711DFBE96AA0FFE5462A2 + xmp.did:9F87470B44BDE011A458C40B09B7BC40 + xmp.did:9F9BA873B43EE011B342C8C5CBE9A992 + xmp.did:9FCAE27235CEDF11A78EEE6DEDC81BD7 + xmp.did:9FD65B826D04E011AA5AC8AB7E99A633 + xmp.did:9af84ed6-2d1d-7347-9e34-3c74fc5dd0b8 + xmp.did:9ca501b2-6f06-ef42-8536-2de220368539 + xmp.did:A020731FECEBE1119451D5059AAB1E2F + xmp.did:A0397E10064FE011A157DCE09D412734 + xmp.did:A03F962F5F1DE1119935D00D8CDD8252 + xmp.did:A0438173BD52E011BA4AB6EDCDCC4831 + xmp.did:A0546D104BC511E0B78A85AD4FD2359F + xmp.did:A0704BB7182068119109F6AC020C5FF2 + xmp.did:A071CA6DB94911E19CCA971F39B32899 + xmp.did:A09624A37E7EE111A4C382D12C4BE1E5 + xmp.did:A0A6AE25202068118A6DACAAA4DD6020 + xmp.did:A0AFA84FD870E011B557BFCA0CAA97BB + xmp.did:A0B472AF092068118C14CA160A1107BD + xmp.did:A0D4F208AF206811BF4AF4186667B28C + xmp.did:A0D95375602EE011BFE4BBC5757CE984 + xmp.did:A0EED1530021681188C696DC609994EC + xmp.did:A0FB9F976F21681192B0E118D6113D9A + xmp.did:A115D635AAA2E511A786F4F7700740DD + xmp.did:A12B42D4AA49E1119A1A82F4F21C1956 + xmp.did:A14174A6A10A11E0A24BA2B8CB0DE68E + xmp.did:A14383D992BAE011B79EB2A96A4B247D + xmp.did:A1477690B6B2DE11B540EAD222586A4A + xmp.did:A1596ED0B29EE01182EDA0236AF1B786 + xmp.did:A16398DBBF5BDF11A16BA892E5C635A1 + xmp.did:A17AA5B4FC4EE01191CBCAEE4CB67D91 + xmp.did:A19B51187538E1119063BF48A3C51EAA + xmp.did:A1A376F8F05FDF1185C0CF73B26D7444 + xmp.did:A1A747644C21681188C6C2EFB22D669F + xmp.did:A1B27AFFFED3E011A8A3B9BD5823DC55 + xmp.did:A1BF88CE3743E11182ACB5664FEA4D60 + xmp.did:A1C5E8639820681188C6A894A1D908BE + xmp.did:A1EAE66D312068119098A37C55994CC0 + xmp.did:A202F0D7092068118C14CA160A1107BD + xmp.did:A21F72567D09E211BDF3E77D7562D72A + xmp.did:A23DA5AAD6B1E011A5629C3693D5C0CF + xmp.did:A261A64B6C56DF11927D83A0D1B5254A + xmp.did:A26263210D20681192B0B59A26F7999F + xmp.did:A27106D5BD7411E0A5EFD31E02B605E0 + xmp.did:A279E2A6FB206811871FAFE2B6937D3F + xmp.did:A27C6A3AA73BE111992AECDF94FDE8D3 + xmp.did:A2833C2E2444E011BD9DC1B3067CD7C5 + xmp.did:A28415440A2068118DBB9D77FB701C12 + xmp.did:A2AB0190C61CDF118291B34EB35CAD1D + xmp.did:A2B299F0726FE0118AC58FDA9DF5DA7A + xmp.did:A2B472AF092068118C14CA160A1107BD + xmp.did:A2F5C5F1E5CBDF11AD7D9A1023BE16FD + xmp.did:A30D0FBEF74F11DFAF2EB5C21BA6BB42 + xmp.did:A3126D5C17D6DE1196E4FC68B649661C + xmp.did:A32C2CD40D20681195FE95EF7EFE3E6E + xmp.did:A32C675E96BB11DF8708CDBFAA1138A4 + xmp.did:A32CD8C0D98CE1119249DD516C915D6E + xmp.did:A3396F268F37E111B7C5C6A15807B5C8 + xmp.did:A33A0B382E35E01194FA9BEB0F9B9735 + xmp.did:A34318916E06E111B040E83F6C9E9150 + xmp.did:A3501E239D2FE011A325D07E052CB137 + xmp.did:A382A88E2793DF11AAED82EACCF501B8 + xmp.did:A3A429A15120681188C6D9EA900BA018 + xmp.did:A3BBE865F3B5E111B0F5B8401F17196E + xmp.did:A3E5A304A227DF118D16BB63CD005239 + xmp.did:A3F4D7821620681192B0C5319CB69C7C + xmp.did:A3F5406E5E2EE0118600E825AAC3B0AA + xmp.did:A402F0D7092068118C14CA160A1107BD + xmp.did:A415DE43A441E111BCBAFDA504A82247 + xmp.did:A41B25DD19206811871F850BE2F5A6A4 + xmp.did:A427431973EC11E0A792FB6CA6498740 + xmp.did:A42DBA365804E111B4C3F718B1A87745 + xmp.did:A4538714DD20681195FEC8FA8A631CDC + xmp.did:A4571A95E450E011AFB9E00C7572E665 + xmp.did:A45984D679F411E19D9D919EB543E03F + xmp.did:A46569B2CBDBDF11A44CF5D6F97CD41C + xmp.did:A48499331620681188C6D9EA900BA018 + xmp.did:A48D36A70E206811822ABFFA029D9A53 + xmp.did:A491E44BE6EFE011A72BC4DCA77C5A48 + xmp.did:A4A429A15120681188C6D9EA900BA018 + xmp.did:A4B472AF092068118C14CA160A1107BD + xmp.did:A4BF9ADFE953E011BB7DC31FA9F74AB4 + xmp.did:A4BFE4C6F22BE011B403A0D9F1D68637 + xmp.did:A4DFED55942168118EF8FBCB87D04E57 + xmp.did:A4EAE66D312068119098A37C55994CC0 + xmp.did:A4EB0A6E2218E0119CEFBA954A5518BB + xmp.did:A4F9B533FBF0DF11BD97AADAF5573B93 + xmp.did:A511B8AD212068119109C4FC82D5C1CB + xmp.did:A515D635AAA2E511A786F4F7700740DD + xmp.did:A51FC041BFFFDF11BF72D4A98D9FB403 + xmp.did:A55F123E24206811A462B2919D2F5E5C + xmp.did:A57D864FFC7EDF11928CE252CAD94E87 + xmp.did:A5C0A5BF0094E1119826EA7C08188667 + xmp.did:A5CF3D2C11B6E01180C3C485EFE5BE6B + xmp.did:A5D4500BDF236811B846B0248F6C2F77 + xmp.did:A5EE2524DC61DF11A4FCF6AF0F892C25 + xmp.did:A5F0B1A348EBE0118A34ADD00EBCF069 + xmp.did:A5F9B533FBF0DF11BD97AADAF5573B93 + xmp.did:A60A9CE5B121681188C696DC609994EC + xmp.did:A611B8AD212068119109C4FC82D5C1CB + xmp.did:A614DEBAA94711DFADA888B0BC31ACC2 + xmp.did:A615D635AAA2E511A786F4F7700740DD + xmp.did:A628AAE1CB4DE0118CCDBF34AD86A220 + xmp.did:A62C24A7C0B9DE11B227A6D77EB5B234 + xmp.did:A664E9EEAE3AE1119F23A0792150D978 + xmp.did:A67C6A3AA73BE111992AECDF94FDE8D3 + xmp.did:A688D3B59AC6E011A93D9F61069A0227 + xmp.did:A6B9D224C11CE011B00CB478FFB6570F + xmp.did:A6C24E1BF5C3DF119F6D9BF4B2FB596D + xmp.did:A6C6277E1C89DE11A849D901E441D0B0 + xmp.did:A7132138298E11E18C7BE78785B82E8B + xmp.did:A76569B2CBDBDF11A44CF5D6F97CD41C + xmp.did:A78499331620681188C6D9EA900BA018 + xmp.did:A792B57D4B206811871FBF7EE03058F8 + xmp.did:A7D3418CEE0AE111AD8BD4229A939C62 + xmp.did:A7D42BADE5DBE011A3E7B1B79B561555 + xmp.did:A7E32585FDAFDF11B8B4EEBC76738E70 + xmp.did:A7E359840D35E111943ECBE41034123D + xmp.did:A7E473D0DB77E011A72BB337603AD007 + xmp.did:A7E87A2F958C11DFB77CF3AD4F00B0EF + xmp.did:A801D08B4631DF1196A2A590C8AA7993 + xmp.did:A806C3667DA0E011A4FEE67DFDD7FB36 + xmp.did:A80A45DA846AE011ABDBDC252AE9E519 + xmp.did:A80A9CE5B121681188C696DC609994EC + xmp.did:A817C161BFA411E08C7396F5C0DD6D7F + xmp.did:A81FF5AC08F0DE1196F0FE049443246D + xmp.did:A8378A1336A3DF119EE78D38E30AAF63 + xmp.did:A83A97962E2068119109C80A4C3147BC + xmp.did:A83F6E77D1D8E011B6A6C8590EC842C2 + xmp.did:A84263664D20681197A5CC815690B972 + xmp.did:A85C46E53050E011A8CF868C542065BA + xmp.did:A86F4C6E263CDF1183EEA906F471E8EE + xmp.did:A8753F0F3BD5E011A475A34EFDEEE95E + xmp.did:A88851516540E011A65582CD6946AD1F + xmp.did:A8A087DAF789E111AF959497B264FF45 + xmp.did:A8B472AF092068118C14CA160A1107BD + xmp.did:A8C0E2C1D0FBE011A7B595483F6A098A + xmp.did:A8ECE7294820681188C6E275F11AA5DE + xmp.did:A8F874C2EAD011E29DFC9148214CAB65 + xmp.did:A8FA4183082068118F62F82DE1DBB36F + xmp.did:A911DC4650E7E01197AEA7FA81354634 + xmp.did:A92B25175C34DF11ABC5C93DF330D6B5 + xmp.did:A9432DF857F7DE118BE884B676DB25DC + xmp.did:A947F2DB1A2068118A6D83BDDADBE6EE + xmp.did:A951F844D1DFDE11B9EC81691F4C5197 + xmp.did:A95C46E53050E011A8CF868C542065BA + xmp.did:A96BB4E420C2DE1197B9C27461EA39BD + xmp.did:A99FF003027DDF1185DCFB77CE2E9070 + xmp.did:A9A9E303A4E0E0119057EB1404BCA269 + xmp.did:A9C892311C8FE111B392B31FC1AA9531 + xmp.did:A9EA192F292068118DBB82DD622598DD + xmp.did:A9F9B533FBF0DF11BD97AADAF5573B93 + xmp.did:AA07B12E2A6ADF118FE0DC3DF1A3242E + xmp.did:AA55CD7E1120681192B0A8894DA43F42 + xmp.did:AA6569B2CBDBDF11A44CF5D6F97CD41C + xmp.did:AA6C5F82AE206811B840E00E6A4F6FDC + xmp.did:AA726EE4502CE1119EFFABE71B4789BD + xmp.did:AA81A45AE73CDF11A80CBD81BB684280 + xmp.did:AA9263DCFFB0DF118045897BB0D3EE9E + xmp.did:AA95ECEAFBCB11E0B8349A3729197D0F + xmp.did:AA9C16286FDBDD1193EB809E8012ABEF + xmp.did:AAB472AF092068118C14CA160A1107BD + xmp.did:AAC0E2C1D0FBE011A7B595483F6A098A + xmp.did:AAD6F828FC7CDF1185DCFB77CE2E9070 + xmp.did:AAE768FF8D6ADF118290CBB94C5CF4F0 + xmp.did:AAF2C1573B26DF118BC5928689F4BE6C + xmp.did:AB074D2D0F9DE011B929E56A1DD8643C + xmp.did:AB11ABE8292068118DBB80A320BFBF2C + xmp.did:AB31483161206811871FBF7EE03058F8 + xmp.did:AB4234A1C5F4E011A2FE8AAEB81CA112 + xmp.did:AB74F6F3922068118083DB197420851A + xmp.did:AB7E99DDA5D3DF1184108A6DF5F8799A + xmp.did:AB9CD0663720681188C6D9EA900BA018 + xmp.did:ABACBB300DDCE011A6A6B12C164BF1B7 + xmp.did:ABF374E4D91311E0AF3CE05900458AE8 + xmp.did:AC0419C6F88EE11196CFDEF802C65482 + xmp.did:AC0FF2178D7FE01192A6A33A0D45BA18 + xmp.did:AC39DCEE7B2AE011BDC1D191A6B2CD45 + xmp.did:AC4ED736C67EE011B655ABF743C739D5 + xmp.did:AC507002B137DF11B680B028963712CE + xmp.did:AC5F7C2C5D206811B4F2BD4D6AD5D039 + xmp.did:ACD6F828FC7CDF1185DCFB77CE2E9070 + xmp.did:AD118B0104E4DF119190888724FA0B17 + xmp.did:AD3773DD9D53DF11B8B4B48CEB770F68 + xmp.did:AD3ED6215B206811A914DCA9418AFBD5 + xmp.did:AD4D4DE81C2068118C97EB5E0646166B + xmp.did:AD7319D5D13DE4119062F740CF3C9EA8 + xmp.did:AD7E6F1019E1DD118094BF8DE5F58001 + xmp.did:AD92B57D4B206811871FBF7EE03058F8 + xmp.did:ADB346D795D3E011AAE9CFFDE13C8A0D + xmp.did:ADCE7A2D3E2AE111907ECA29312CB805 + xmp.did:ADD6F828FC7CDF1185DCFB77CE2E9070 + xmp.did:ADF04AB50FBFDF11A294E3FB71CD9EB8 + xmp.did:AE0C3315A52FDF119264CE0A107D0B1B + xmp.did:AE1FC868CE15E111AAA8806CABA5E096 + xmp.did:AE33AF4C4C206811871FFDCB7BB36B1C + xmp.did:AE530F50164FDF11ACEEA9281EB7EE6F + xmp.did:AE57396FF64ADF11AC3ACB0022D6CE0D + xmp.did:AE585B09659CE011B6BFD4CC3520FB5C + xmp.did:AE79391F3443DF11ACC38399C4A044B9 + xmp.did:AE8B92FB3281E011A8E58A68FB958485 + xmp.did:AEEFFB4525C3E011BEF0A37AC8AFF6B8 + xmp.did:AEFF010E2F4CE011A153D2BF7C2CEB4B + xmp.did:AF13766D8489E111A419EBDCA6D8AC58 + xmp.did:AF223C4E7ED7DD1199E1B78BB722FF90 + xmp.did:AF3F48E9A5C0DF118427E32E6F9EFF05 + xmp.did:AF3F94FC8A8111DFB58EA5992B51587C + xmp.did:AF68BFE95CBBE01182C1F2A4519DB41C + xmp.did:AF6AA0676F12E111AB23CDBC45B9DFAF + xmp.did:AF736DF8A0C0DF119CDFF931D0DC0F6B + xmp.did:AF7B4A72262068119457B94B0A19120E + xmp.did:AF7F50CA7E246811910989E2636DFD79 + xmp.did:AF8113360495DF11A12DD8C66F1CA3F8 + xmp.did:AFA2FC108995E011A6C7A01A09208ED6 + xmp.did:AFB7662F1C05E0119489B8761788EEA8 + xmp.did:AFBBB457E0B9DE1187A2C260A294EDCA + xmp.did:AFD9EA0C1BDCDE118D44940D050F6D4E + xmp.did:B01EADEA1DBBE1118C61C3FA7E29662D + xmp.did:B02DA61A6058E0118095B3CB5F9A4E45 + xmp.did:B031483161206811871FBF7EE03058F8 + xmp.did:B03E696E21C6DF11891AB4133B3B4FF4 + xmp.did:B03F48E9A5C0DF118427E32E6F9EFF05 + xmp.did:B04157016BFCDE118931F9ADD8EFAB3D + xmp.did:B05F7C2C5D206811B4F2BD4D6AD5D039 + xmp.did:B066F3A7FF10E0118596D85222857949 + xmp.did:B079391F3443DF11ACC38399C4A044B9 + xmp.did:B07D7E801F47DE118CC7815CC789D89D + xmp.did:B08B92FB3281E011A8E58A68FB958485 + xmp.did:B09C874A37DB11E09A1AECB6F8F33707 + xmp.did:B0A5EC655C1DE1119935D00D8CDD8252 + xmp.did:B0ABD4E4F1A1E111AADDD9BE4B19A9A3 + xmp.did:B0CEA8BF16206811A961D90CEE83FB59 + xmp.did:B1037F6DC648E0119044C11EAF2DD91E + xmp.did:B11D360C25F1DF119445A5FD895D781E + xmp.did:B13F48E9A5C0DF118427E32E6F9EFF05 + xmp.did:B1448B467342E11195B8DD8A60869EA9 + xmp.did:B16C4466D159E011A2349D60467845DF + xmp.did:B170A74DFDECDE11BBD9E48B4DB5638A + xmp.did:B17589E469B6E011A52D9BC902AEB663 + xmp.did:B17F50CA7E246811910989E2636DFD79 + xmp.did:B1854DB6AB37E0118B3D9D759656F948 + xmp.did:B18BA50B29D0E011BD6BE61C775B876F + xmp.did:B1A716712DBAE111B8FEABD95307C82B + xmp.did:B1A7206056CEE1119177BD2372B6623A + xmp.did:B1D6F828FC7CDF1185DCFB77CE2E9070 + xmp.did:B1EFFB4525C3E011BEF0A37AC8AFF6B8 + xmp.did:B1F836658072DF118E3AF8C296A37EAE + xmp.did:B223C75EEF80E111860A8B44442DFEC0 + xmp.did:B22E72991EDFE011BAC7F7CD194FE1BE + xmp.did:B239DCEE7B2AE011BDC1D191A6B2CD45 + xmp.did:B2461DD84E7B11E0AE7EE57423BA3D5C + xmp.did:B251B6060EFDDF11B2E3C4FD4894A392 + xmp.did:B2AF2FAA3A47E011966ED668BB03D2AA + xmp.did:B2D3562B68DADF11A00F884AD9B8C71E + xmp.did:B2E2684C49226811AB08A7F30EE532D7 + xmp.did:B2F04AB50FBFDF11A294E3FB71CD9EB8 + xmp.did:B320A735A7A4E011A929BF120BD8410B + xmp.did:B326D72B98C4DF11BA82AFFFE558943D + xmp.did:B32E3D397D2511DF8E24B415534FB3A8 + xmp.did:B36A57361D06E111A37E86E77136C1FE + xmp.did:B384A9B53760E011891BDD7B2B19AA51 + xmp.did:B385BBF73D17E111BF6AC50500EC8D4C + xmp.did:B391F437F5C7DF119600B07951353894 + xmp.did:B391F8CD01B511E1A18F97A8D26A3B0F + xmp.did:B3E6CD3F132068118083AEAC33B78D50 + xmp.did:B3FCE625EDDAE0118842B29FA6343094 + xmp.did:B40041A6F051DF11A2E9ADF0264A63A1 + xmp.did:B4084F86DDF8DF11B54DB2ED51FD1176 + xmp.did:B40B63B02179DF11925588942757E37B + xmp.did:B43A9BE516B9E011AEBCBCB1E3A15768 + xmp.did:B4453095B891E0119C438633AD9A31E7 + xmp.did:B45CAF4FD4CBE011BB0BBD49AFE979F0 + xmp.did:B48BA7A09FB5E1119C6E89DCDD4DB9F2 + xmp.did:B4A24D3FFA8FE1118E1C848D719FF97B + xmp.did:B4E0211D2220681191098EDA3A856956 + xmp.did:B4E6CD3F132068118083AEAC33B78D50 + xmp.did:B505585B4720681188C6D9EA900BA018 + xmp.did:B5320ECB5B206811A7BAE494E9F9FFEC + xmp.did:B5A517ECBFE5E1118B99A97503504C1B + xmp.did:B5B0C2465198DE1186268619AF7D6180 + xmp.did:B5B5C6053616DE11A377DFF74779306A + xmp.did:B5DE08C0C315E1119755E241D5A23E15 + xmp.did:B5F1870668E7DF119EA1DC61067ACA89 + xmp.did:B609F8673D2068118DBB9A2BD87D7921 + xmp.did:B60B63B02179DF11925588942757E37B + xmp.did:B63F12421C206811A613A58B58BE7BEA + xmp.did:B64468DD2020681192B0FB3680825E28 + xmp.did:B6566202FF0CDE11A770A9ABB3D9137E + xmp.did:B66B14327664E011BE41B15A6A029915 + xmp.did:B66D2892EF60E11183FEFBA13F4F98A4 + xmp.did:B67E6493DF206811945790C27116D4D3 + xmp.did:B6936E01CE9DE011AF4CB0B3AD39C76D + xmp.did:B6DB0B007C20681197A5FEC97E293B54 + xmp.did:B6E05DBE2E41E111B5B5C1ADEA3A5F3C + xmp.did:B6E3DB38242EE011BC6C9EE36EDD006E + xmp.did:B6E6CD3F132068118083AEAC33B78D50 + xmp.did:B6F2711BBEBBDF1196F5B44D3A9BD6F6 + xmp.did:B705585B4720681188C6D9EA900BA018 + xmp.did:B70CC0A3962E11DFBC9BA3D053D5FACD + xmp.did:B7166A241C71E0119E40DC43C5D01699 + xmp.did:B7177F65132068118083AEAC33B78D50 + xmp.did:B71CBBAB87D9E0119C59FE8CDB19D7E7 + xmp.did:B7283C04A664DE1192CE8DBDC2ED0F7E + xmp.did:B7303852DC5011E0B192AB8A8597E6C6 + xmp.did:B74ACEE3B8206811BF3094187AF8421C + xmp.did:B755B6457C84E1119594B241CA543877 + xmp.did:B7598833D620681188C6C0C998FCF1E5 + xmp.did:B77FB0F51E22E1119E19EE77D5679CE7 + xmp.did:B78BBDFC462068118DBBF48E52A50436 + xmp.did:B79004CE1E8AE111AF959497B264FF45 + xmp.did:B79400394D60E111A66DE9050C7F3C5E + xmp.did:B79554CE78A6E1119057FDEFE5671B50 + xmp.did:B7A2233E092068119109CF39C33EE918 + xmp.did:B7A4707036E3DF11AB509BEE1258BAE6 + xmp.did:B7C04010508D11E3A465E14DA8372D34 + xmp.did:B7D06549DF206811871FEC7C962926E4 + xmp.did:B7D58F9579B011E19AF3D57CE9DEB3C9 + xmp.did:B7D58F9979B011E19AF3D57CE9DEB3C9 + xmp.did:B7D58F9D79B011E19AF3D57CE9DEB3C9 + xmp.did:B7DD540D3BCEDE11AC1FBF9D231E361F + xmp.did:B80D545D0B88E0118558E08BEA92CFD0 + xmp.did:B80DE739B46FDE11BC6BFF7671AE3033 + xmp.did:B82CDDFC4FB9DF1189DACB811D57ABC7 + xmp.did:B82EAE4AF927E1118E15C8B688C66653 + xmp.did:B90E34965C61E111B4DDA07085C1D44F + xmp.did:B9298811E644E01182999DFF21132786 + xmp.did:B92B6402492EE0119CF4F6D22449B1C1 + xmp.did:B932B92E0920681188C6956C521FE498 + xmp.did:B9491A640110E01196F8F8E3534F1D53 + xmp.did:B956EA72157DDF11A762EA67B35A3A50 + xmp.did:B97A616130A2DF119D459194683E7D64 + xmp.did:B983E46D9C41DF119B86CA4DF55376C7 + xmp.did:B9961F168B61E011A295D2562FFEC2E6 + xmp.did:B9D9FBF1322068118F62A3657589B3FF + xmp.did:B9E6CD3F132068118083AEAC33B78D50 + xmp.did:BA2334AEFD53E011A54D9507E0E8BC34 + xmp.did:BA32B92E0920681188C6956C521FE498 + xmp.did:BA364F5B3B43E11182ACB5664FEA4D60 + xmp.did:BA903E531C226811B840E00E6A4F6FDC + xmp.did:BA9753AC5C89DF1187298769394E5F35 + xmp.did:BAA99C780A9AE111835787A7994F4DB5 + xmp.did:BAAB37707EDCDF11B250F589625DEF80 + xmp.did:BAB1D4E00461DE118EF4F70EBA356470 + xmp.did:BAC74A767A3BDF11B81DE3CAC7B760A2 + xmp.did:BAE6CD3F132068118083AEAC33B78D50 + xmp.did:BAE948E4A421681183A2BC64D6373250 + xmp.did:BAFCE625EDDAE0118842B29FA6343094 + xmp.did:BB04E02B48E3DF11841DFAE875AE9437 + xmp.did:BB0A14801C206811A8E584DDBD18C185 + xmp.did:BB0D6483C794DF118D69EC6829104E8E + xmp.did:BB0F008D11206811BD35B6F06AAF40D7 + xmp.did:BB1625B78953E011A54D9507E0E8BC34 + xmp.did:BB177F65132068118083AEAC33B78D50 + xmp.did:BB251EF6B780E011BFF8C28A70355E3A + xmp.did:BB2FC5F4D57EDF118305EDA1F6FD8EDF + xmp.did:BB3565E81520681192B0BAA904DE0F8D + xmp.did:BB3C84B28158DF119ED0B9B507A39113 + xmp.did:BB699D250D24E011AB00E30AF09ADEB0 + xmp.did:BB75AA48AAA911DF98C1DB094064B1FE + xmp.did:BB809E708421E011A0908899644B66CB + xmp.did:BB8FBA12034A11E3A5ECDFBFDADD6F0C + xmp.did:BB9018595671DF11AFE4B9D947965D65 + xmp.did:BBBC1FF539A4DE11A0C2DC75956E961B + xmp.did:BBDDB312AB206811AADAE549D6335493 + xmp.did:BBDE6BFAE69CE111BF50CCFEA6042E31 + xmp.did:BBE0CFA2B12068118F62B83BB8D9B324 + xmp.did:BBFFC530D12068119109C37490BE3834 + xmp.did:BC0D6483C794DF118D69EC6829104E8E + xmp.did:BC10865B5F7FE011ABCEBA0545ADD48F + xmp.did:BC14929B7521681188C696DC609994EC + xmp.did:BC73832A3B20E5119484E680A9D1D19A + xmp.did:BC7CE691D856E011921BE2DE87A39B49 + xmp.did:BC806AC3DFD7E0118AB9ECA40DAC3FF4 + xmp.did:BC854B8D7DBCDF11A1348A3D0D68C17A + xmp.did:BC89DDDD35206811BB779CBAF9EED77C + xmp.did:BC8F7BF39F16E011AC0DE62667E13BFD + xmp.did:BC9524B86286E011ADE6A85D852EE6BB + xmp.did:BC9B22EE162068118083B78A909B2B11 + xmp.did:BCC8924632206811A178B4862A3AC2C7 + xmp.did:BCFC981D30206811994CBE8060E149B2 + xmp.did:BD14929B7521681188C696DC609994EC + xmp.did:BD281BA50698DF118579E4E2563F7F34 + xmp.did:BD2C58CFD39DE01191C3E700D6E933B7 + xmp.did:BD44F04B1A20681188C6CE9135C0C173 + xmp.did:BD4FBB59F4E0DF11BD2DE370FC8E0ED8 + xmp.did:BD68E68606E9E011A3CFB9B563906728 + xmp.did:BD6ADCFCDB13DF119C3D83FF7794143A + xmp.did:BD6B1DE20174E01192F2D8B5008E758A + xmp.did:BD6DE40B2A4CE0118724D9E4A19347E0 + xmp.did:BD774EEE3E20681188C6D9EA900BA018 + xmp.did:BD88AD504EC0DD119D23A1894B39C9BC + xmp.did:BDA6310252246811AB089221FD919C60 + xmp.did:BDAE7549B960E111B147EEA823749559 + xmp.did:BDAEF7BB77D8E0118842B29FA6343094 + xmp.did:BDC6462CCEB3DF11873FA3644F977FE3 + xmp.did:BDDDB312AB206811AADAE549D6335493 + xmp.did:BDE85EF672B8E0118F8EDA00AA1CB991 + xmp.did:BDF628888D216811910981D42F740DA7 + xmp.did:BE04CABC6C2AE31193B5AFF910FF6B5A + xmp.did:BE3002B40A1CE111980DD3704E48DDCE + xmp.did:BE416C50C119DF11A80F8E9D0739BF8F + xmp.did:BE4C64FB0A2068118C14CA160A1107BD + xmp.did:BE5C1C91353CE4119DFAF0E913E69F38 + xmp.did:BEA04A1A0434E1119FF3F74B26136001 + xmp.did:BEACBAD96F2268118083DD6A9D608EBA + xmp.did:BEB28CA27120681192B0C7D55FF9068C + xmp.did:BEF8386E0B2068118C14CA160A1107BD + xmp.did:BF0FF0E5621511E085C1D1F80F173C23 + xmp.did:BF149148DE5CDE1191FCC99E878917CF + xmp.did:BF16032FDA85DE1192179C1E623E78D5 + xmp.did:BF1BD0661BEDDF119F88F5423D9DEE6B + xmp.did:BF347B8D804DDF1194D8EB13EAA37FE9 + xmp.did:BF7C797A9EA7E011B01BA4DFDBC23FA5 + xmp.did:BF9B22EE162068118083B78A909B2B11 + xmp.did:BFA932E0D2BDE4118F75B2307B8F5D7E + xmp.did:BFACBAD96F2268118083DD6A9D608EBA + xmp.did:BFB294DE4D4EE1119F57C4A5BE6AAED9 + xmp.did:BFB9CFDEFD7ADF11869BF2A815607DA5 + xmp.did:BFC0C5B40DD8DF118B1CEFE42661661E + xmp.did:BFC6462CCEB3DF11873FA3644F977FE3 + xmp.did:BFD75184AE21681188C696DC609994EC + xmp.did:C00F22CFBCF9E111BDFEDE3E305139CB + xmp.did:C03040BFDF90DF11AE82CBA880F138F9 + xmp.did:C034538D5F5AE11199CBFAB74B1F4F17 + xmp.did:C04A4C755004E111A0CEB8112A5FA2B1 + xmp.did:C04BD4E7C09BDF11AFDDE3BAE1452D92 + xmp.did:C04C64FB0A2068118C14CA160A1107BD + xmp.did:C05698F0819011E1B924A4A8CF2A245E + xmp.did:C05C1C91353CE4119DFAF0E913E69F38 + xmp.did:C074A85E06F7DE119CCA8227581679DF + xmp.did:C085439615206811871FE459E5C10885 + xmp.did:C0937B38E2FFE0118D19FADB1379B097 + xmp.did:C0B294DE4D4EE1119F57C4A5BE6AAED9 + xmp.did:C0BA93CBAD206811BFE5BF57D4DB04A4 + xmp.did:C0BE3DD3B67FDF11A113CFD856808638 + xmp.did:C0CFCD71C1D3E011B6BE8D9779943369 + xmp.did:C100D34AF3B6DE118225C3B893DC5B31 + xmp.did:C1056566FD38E111A204DF35337AB869 + xmp.did:C12C2402E064DD11AE6AB030FE2B7C4A + xmp.did:C14A4C755004E111A0CEB8112A5FA2B1 + xmp.did:C156FCEB6B216811A8ED8AEF6BA05C9B + xmp.did:C165C544C7C2DF11A123E3AF092F11A9 + xmp.did:C16B15488B21681188C696DC609994EC + xmp.did:C1774EEE3E20681188C6D9EA900BA018 + xmp.did:C17EDBBD17D0E011835FE6E78D3D4FA8 + xmp.did:C1838F8DDA0AE01197429FC76726047E + xmp.did:C19035396243DF1193B4BAAD8CB31094 + xmp.did:C1A1F0596D89E111A776DE58E356118E + xmp.did:C1A9DF14DE9CDF118817EBE6E8614D49 + xmp.did:C1B6D69A6848E011B94B87C81455C941 + xmp.did:C1B95654624411E08BAFE267FCDFB48B + xmp.did:C1BF86EBC124DF11A9E6FB78804C0B92 + xmp.did:C1C6462CCEB3DF11873FA3644F977FE3 + xmp.did:C1C685F12830E21197D5E4A8B9E20F1C + xmp.did:C1E599E6A521E011B9BAB7A0AF851ED6 + xmp.did:C1F456B1E5F0DF11A0DC84A10DADEBAB + xmp.did:C1F748A95921681188C6BD0FAC4EC9BB + xmp.did:C209892F02BBE1119990DD7013639F1E + xmp.did:C223F901DF92E211BC18E067D364DAD0 + xmp.did:C22BF9A7E57CDF11A037D04342FCD276 + xmp.did:C23565E81520681192B0BAA904DE0F8D + xmp.did:C24B38D5252668118BA3CD18E35B1F7F + xmp.did:C257DF5762B4E111A305FB68720018A4 + xmp.did:C25D84C226CEE1119E2CF7EBABAE310E + xmp.did:C26C0D495267DF11B2E5C8CA2A20B501 + xmp.did:C29423945D1AE011B769E06901DFE4F0 + xmp.did:C29C58B9EBDADF11AF20E3D3A3FCE87D + xmp.did:C2F3373FF4D6DF118025BF024460BF28 + xmp.did:C30CC6DF298E11E1AFC8CE46170FD4E8 + xmp.did:C33169927EA6E1119057FDEFE5671B50 + xmp.did:C344E12C0433E111BA358F5A89E289BB + xmp.did:C349FF862709DF118B80AA4CC2D46C47 + xmp.did:C373CEC0362068118F62D0F7010AC02F + xmp.did:C37EDBBD17D0E011835FE6E78D3D4FA8 + xmp.did:C38F0EAD67206811A26EEF0A84B9044C + xmp.did:C3A3496220E011688EF1D2162A624E2D + xmp.did:C3A3496320E011688EF1D2162A624E2D + xmp.did:C3A3E5438427E11199CCA05139BBF738 + xmp.did:C3A86B1D2147DE119A9AD286EF8C1403 + xmp.did:C3B2E8E52C01E0119F79B5FBFB8668B2 + xmp.did:C3B486656C46E0118F36BB6288C13F67 + xmp.did:C3D003939021681188C6EED62F2B361B + xmp.did:C3D78C5BE905DF119CB4A0E631D7DBDD + xmp.did:C3E779E47623DE118C65E18A859A18B5 + xmp.did:C3E99553BA2BE2118052DF928F7D1CCC + xmp.did:C4162A413005E111BDC980CE114BB613 + xmp.did:C43A18A8772168119BD28AA6FD664D48 + xmp.did:C447849EB9D8E011A0C9924A4691E820 + xmp.did:C475B06BDD7ADE1185FEBAE64D409620 + xmp.did:C479F20430A6DF119C3AB96E6BC803AD + xmp.did:C49889380C2068118DBBE3913583D1DF + xmp.did:C4AF4E884A20681188C6D9EA900BA018 + xmp.did:C4BBCF36A76AE011AA59C936E3811281 + xmp.did:C4CD137F1E0FE0118A4E830B74E1FFC7 + xmp.did:C4E203091824E1118C85CDD1B46C9C40 + xmp.did:C4E354E44C1CDF118D6FB601220BC6D2 + xmp.did:C50438F886D8E0119667D0AC9675DDAF + xmp.did:C53485763605E011B0878B10470BE98C + xmp.did:C53A1EEB2926E11195BCA7B9075E6228 + xmp.did:C53B2582BCBB11DF9A12D89AE4A6FCDB + xmp.did:C5462B90A82AE11192D7ADEDD42F4562 + xmp.did:C556FCEB6B216811A8ED8AEF6BA05C9B + xmp.did:C5652C639D4CE011A4B0BB5522D3D45B + xmp.did:C57F117407206811AE56F9DF145DFB90 + xmp.did:C5937B38E2FFE0118D19FADB1379B097 + xmp.did:C597C9E96B86DE118E3ABAA4690EC045 + xmp.did:C5D75184AE21681188C696DC609994EC + xmp.did:C5F57AC71D1F11E09B3DB2A447F5740F + xmp.did:C60BE73262A9DF11B657C71722F9785A + xmp.did:C610A98D915BDF1191C0E19BF2D4ABA1 + xmp.did:C61E588F82A2E011B542F8C04DABB545 + xmp.did:C647849EB9D8E011A0C9924A4691E820 + xmp.did:C66C0D495267DF11B2E5C8CA2A20B501 + xmp.did:C67D90E01827E111A8EFE41B623878EA + xmp.did:C69C58B9EBDADF11AF20E3D3A3FCE87D + xmp.did:C6B3A3B94A21681188C696DC609994EC + xmp.did:C6E354E44C1CDF118D6FB601220BC6D2 + xmp.did:C70A1F8A9349DE119B948BACA98BBECA + xmp.did:C7110E5F5076DF118E61ACD179D06244 + xmp.did:C715C186E720681196C6D299FAF903BB + xmp.did:C71AE4E7A267DF11BB13CBFB447480A7 + xmp.did:C720A3E020F3DE119422B5E314A66CE1 + xmp.did:C73A523D1846DF118065D80F7B596DE4 + xmp.did:C74D591B8DB8E1119240EDE1A08CEA7A + xmp.did:C78D8D2220F011E2B5A8C05675F089BA + xmp.did:C7C638916518DE11B253B453F89B7F8D + xmp.did:C7CC4562A943E0119C12D20236F1E089 + xmp.did:C7E0BC5BA529E011AB119B211930C59F + xmp.did:C7E5F38D830EDF11AD72E43AD91B55C7 + xmp.did:C7ED170E6D8CE011933FD46F77A6DE77 + xmp.did:C7FCDE82040CE111A04EE4AFB8C38083 + xmp.did:C80569A6BB2068119109D77742DCC440 + xmp.did:C82012C93C97E011B408832B6FE61C95 + xmp.did:C84CCF5DDD21681188C696DC609994EC + xmp.did:C85758D352206811871FBF7EE03058F8 + xmp.did:C8656C4D0C20681192B0CF50B4F61303 + xmp.did:C885439615206811871FE459E5C10885 + xmp.did:C8B3CA20D404E1118A02D293284C5CEF + xmp.did:C8C3AD0F9810E0119E3EED6DA52BB020 + xmp.did:C8D94497193FE011BCB2EBD6700DA6F2 + xmp.did:C8F3B716FA72E011939FAF49F3385445 + xmp.did:C9040D8138BDE411A62FE31619ACEB56 + xmp.did:C91336C6AE3CE111975DCFFF1E45CA58 + xmp.did:C92BAC37D657DF11AAACCEC463F70854 + xmp.did:C952816D83206811BCCDE187B49CA19C + xmp.did:C97C6968926AE111AC2CFE49F74F30B7 + xmp.did:C97D05025965E111B764B78B8CC76A58 + xmp.did:C9BD44900B2068118C14CA160A1107BD + xmp.did:C9C04586BC53E0119D3985FB4A82845E + xmp.did:C9C6F0C3D9A9E111B588C5939DCD2691 + xmp.did:C9CBB641565DE011B398C4BEED9575C2 + xmp.did:C9CC4562A943E0119C12D20236F1E089 + xmp.did:C9CF64FE37BCE11180DCFE0D886C1778 + xmp.did:C9E8CCFA0F5C11E0BA48D224F2326A69 + xmp.did:CA1588132050E0118558E73318898BC6 + xmp.did:CA167FBB25206811910985FEF6C92AFB + xmp.did:CA2803D4459FE111851CC52A40102C49 + xmp.did:CA38CC31E046E0119312F9CFCD5533A8 + xmp.did:CA462B90A82AE11192D7ADEDD42F4562 + xmp.did:CA67199FC42068119109D77742DCC440 + xmp.did:CA7B75907F2068118083DF8FD5225E6C + xmp.did:CA8B034392216811AB65A20D70355B6B + xmp.did:CA949CCAAFCCDF11AAA5ECB36CFA01C9 + xmp.did:CA965767E448DF11BD5AD847CAF7D20F + xmp.did:CA98F8CB7C91E21197D4C614E0E3261A + xmp.did:CA9914795148E0118D1FF4FAB72CF6C7 + xmp.did:CAA5BA052300E2118295C79BA4470A1D + xmp.did:CAA83FFC05216811910987CF0230F4F6 + xmp.did:CAB26B3347BFDF11B227F22ACDD3F69E + xmp.did:CAD23720A27DE011B2AAA058498F3016 + xmp.did:CAE271EAB3D3E0118F67DD75F39C8A4D + xmp.did:CAEE40FC0C2068118F62EA4ED2B8620E + xmp.did:CB3C8935D32FE011BF3EB0F71922FF5C + xmp.did:CB5BBB441A2068118083EE03884A9181 + xmp.did:CB67199FC42068119109D77742DCC440 + xmp.did:CBA11367AFDBDE11B680B18AED22B04C + xmp.did:CBB0B369B0216811AE56EF9E82A54D60 + xmp.did:CBCA914B2520681186C89F4E62C56BFC + xmp.did:CBEB71B80D206811871FF73D8B9221CC + xmp.did:CBEEAB899633DF1195CECCB8F131145E + xmp.did:CBFAF1BADB36DF119E05B6EBC239C5BE + xmp.did:CC20579C3A20681180839613FFBBFAAC + xmp.did:CC233AAA1220681180839CE599C3AD30 + xmp.did:CC476FB1A043E11191EF87D7B646D2D5 + xmp.did:CC49A8FC6195DE11A97FFAA811454526 + xmp.did:CC4A8DAA6244DF11AB77C876D977BC8B + xmp.did:CC4AB591A7DCDF11BF79FA62B51DF6C7 + xmp.did:CC5E84FC08206811BCC7F2991EC00E64 + xmp.did:CC663861D740E111AA2AB28BC0C003C3 + xmp.did:CC6E4409ED20DF118CE6EECE567605EB + xmp.did:CC86F379A729E011AF83D4C171EE1F29 + xmp.did:CC9F1BCA845EDF1182E794E5ABAABA86 + xmp.did:CCB3A3B94A21681188C696DC609994EC + xmp.did:CCD802C7E093E0119C33E09B12D601BF + xmp.did:CCF2C7F97C1EDF119898ACDBDF5F125E + xmp.did:CD2383FA032AE011A2BBEB2F5A3A525F + xmp.did:CD2AF5DCA5C4DF11BA82AFFFE558943D + xmp.did:CD6813070EEBDF11B9A4AA1E99D475B0 + xmp.did:CD791F5B0A2068119DD0B93340415E2D + xmp.did:CD841C752431DF11A926C54F86A2606D + xmp.did:CDB3A3B94A21681188C696DC609994EC + xmp.did:CDC0D05B9AABDF11B18AED40F31A06E4 + xmp.did:CDE1EB1E4424E2118575E1563EA05D5F + xmp.did:CDE88BCE4B6FDF11B218B00D847DC297 + xmp.did:CE153DAB66206811994C9B7F51AE0063 + xmp.did:CE1E19DFD765DF11AE3B9093F3BB1143 + xmp.did:CE4A8DAA6244DF11AB77C876D977BC8B + xmp.did:CE58F6CF24A011E19E12B87F7C1C15CF + xmp.did:CE74B033E33AE0119D87BA9069ACE126 + xmp.did:CE807746834D11E0B62FB7127DA0FEAF + xmp.did:CE999C12200C1168A613CAECC809D727 + xmp.did:CEDD717E815111E084CF9208B3BF176F + xmp.did:CF05856847206811AEE4ECC20A5D0880 + xmp.did:CF0F772E9F92E011B00AB787F8822B46 + xmp.did:CF160D2580E9DE118295C327849B2501 + xmp.did:CF37A0CCC62068118257B23D2B92E3AD + xmp.did:CF4073777D87E011B561A4A09C669CEB + xmp.did:CF87F0F119206811A7BAAF5A5E898AD6 + xmp.did:CFA6CEBA304EDF11845AA2F03EEC1F93 + xmp.did:CFD9BF7E642011E09A57C4DC582798AF + xmp.did:CFDFF474AD18E111B0C3F98FE49CA19E + xmp.did:CFE8ACA83C05E1118BB5EF9EC2706974 + xmp.did:D0243D8C84CDDF118180A8B67220D460 + xmp.did:D02BE50070C5E111AE3ABD4B5CBBBE15 + xmp.did:D0385D898772E0118C3089D479022CBD + xmp.did:D05758D352206811871FBF7EE03058F8 + xmp.did:D07157E4A170DF11AD48C2D8F6D670D2 + xmp.did:D07F8097AB88DF11ADF18AAC20F750F3 + xmp.did:D08C0C82F643E411A2A9E8BF54AB6A3F + xmp.did:D0914090A81DE111A145EF31342D0522 + xmp.did:D0A21D300D2068118F62F51F1BE14870 + xmp.did:D0A7CE91808CE011A0FC932931B9D7E7 + xmp.did:D0B31BC50D206811871F81B8681E3F37 + xmp.did:D0FF039BAC5EDE1199EBD1E902DE91C9 + xmp.did:D10E579C0B20681197A5EA3B7AA659C7 + xmp.did:D113248AE42068118BDAECB4C7294005 + xmp.did:D1221B9B4526DF11B167F777569F7487 + xmp.did:D12E4EFEF21AE111B90AA7357D1E0ABC + xmp.did:D16203B18A55E111AADBA99AFB78CE20 + xmp.did:D1882132B8A9E0118060A5737CA8CD4B + xmp.did:D196C1AF0ECEDF11ABAC8FAA866AA886 + xmp.did:D19C1D2D46A6E0119D07E07A28554E19 + xmp.did:D1C084EE5406E11197DCDE19A56A5EC4 + xmp.did:D1C97BCF69DFDE118C7A95A6BECE17A5 + xmp.did:D217B386CF51DE118702BAC19059DE69 + xmp.did:D222C9D6A6E4E0118E07C315AD56A832 + xmp.did:D24A8DAA6244DF11AB77C876D977BC8B + xmp.did:D24AA123F7BBDD11A79096FB32D753B2 + xmp.did:D267199FC42068119109D77742DCC440 + xmp.did:D276AAA6F4DAE01186C6BBBA3BF8F4AE + xmp.did:D27AE724CAD2E0119C66C1AF8049A585 + xmp.did:D28F223C6434E111BE999CB461F3D090 + xmp.did:D293BC048BBEE411B6A7B86320DBEEB2 + xmp.did:D2C71787C174DF11B9BEFFC926A1FAC0 + xmp.did:D2D750523220681188C6D9EA900BA018 + xmp.did:D2E901EB2A236811B56FCF6F10EA775C + xmp.did:D2F5CA016CDBE01195F1B37BF39DBEAF + xmp.did:D2F8AA691C37E1118462DDA61B7A9508 + xmp.did:D31F1F64A44BE111B7A2D65ED381F68F + xmp.did:D3258C3318206811B83DC55B43B113F3 + xmp.did:D3451B801E25DF11BAB9C18CADBB71B8 + xmp.did:D361197021206811B025A60412D8E311 + xmp.did:D36DB02BEF23E011A709EE79085E3A92 + xmp.did:D377CDEFE9F9E0119F53917D39FC40AA + xmp.did:D37BCA39A423E111AFD9C2B2FE1A6C5C + xmp.did:D39435776725DF118BC5928689F4BE6C + xmp.did:D3C068EC2321681192B0ED941B81D256 + xmp.did:D3D399022320681191098A39F9B5A384 + xmp.did:D3E01AC35B1BE011B74FA9432D6B3B6D + xmp.did:D3FBEA23C1C8DF119CD8E6A0E5A94A03 + xmp.did:D4054EC11920681192B0BAA904DE0F8D + xmp.did:D409BA36662EE11184A8EA502D80133B + xmp.did:D4335229C3A4E01194B19137A2998285 + xmp.did:D433EDC88323DE11BE0F8A95CE1AC6B0 + xmp.did:D44AA123F7BBDD11A79096FB32D753B2 + xmp.did:D494E0111C8DE111B3D3E856D96A0C09 + xmp.did:D495CC3D6615E011B769E06901DFE4F0 + xmp.did:D4B458ECB43A11E0B98783D89F71F9B8 + xmp.did:D5795FB4D913E111BBB7EB2638BDE311 + xmp.did:D5807B7DCD8DE111BBE0AC81A87F3E4D + xmp.did:D58C284B1638E0119CCBC45B8A98BC1C + xmp.did:D58C42943520681188C6908C2AC7828A + xmp.did:D5D1CF85811ADF11B728FE2FC0B26379 + xmp.did:D5D9C4ECE5BDE011B0BBD5E3244285CA + xmp.did:D5DE2082D6C4DF11970EB830D3504FA6 + xmp.did:D5EBF6AA2B67DF11B388947332E558C4 + xmp.did:D5EF195F2619E111B442CFE726FA0DEA + xmp.did:D6021D4FFAD9E011A6E386DFC7EAE7F0 + xmp.did:D608018C282068118A6D94CA2FB9BD94 + xmp.did:D60E615C2C3BE111BF728DC956CD1430 + xmp.did:D644863822A4E01194B19137A2998285 + xmp.did:D67FF7F2417EE011AFE5EEE6B0FC1D56 + xmp.did:D68DE4790C2068118D90BA90A5B51FF8 + xmp.did:D695CC3D6615E011B769E06901DFE4F0 + xmp.did:D69F8907111ADE11B0049C4A5E251490 + xmp.did:D6AEA4C0852168118DD5AD30F8F2BF61 + xmp.did:D6F836D92324E211A985F0BCAA6D6C31 + xmp.did:D6F8AA691C37E1118462DDA61B7A9508 + xmp.did:D7176B6D58E0E011B95EDA3E835E31DF + xmp.did:D7200B25316ADF11BBDBF2B8175EFA10 + xmp.did:D736F40B6EEBDF119CE89B15806AEDB9 + xmp.did:D7553B291820681188C69330F65606C7 + xmp.did:D76FEA384729681188C6BE54CC59F542 + xmp.did:D79444774A2068118DBBACDD367EC38B + xmp.did:D7A082228321681188C696DC609994EC + xmp.did:D7BA7372CEC1DD11A8508520D55A1819 + xmp.did:D7CBAD18E762E011B33ADAC5D4A7F693 + xmp.did:D7D51C9B7AB811E293A68D509F7953FE + xmp.did:D83C6E8818206811871FBF7EE03058F8 + xmp.did:D841E6F9C53EE111A1A2F5C3512901BD + xmp.did:D85DB58C20AAE011979696CECC20A286 + xmp.did:D883D4C80775E011B3C9FB563EB9BBC3 + xmp.did:D89648A29F0EE011952C8B18DDFA3888 + xmp.did:D89F2A646DB811DF967EA724BD208250 + xmp.did:D8B0D2C28E2EE011909FBC4937DBFAF2 + xmp.did:D8C0BD78031FDF119205B4DEDBBD05CE + xmp.did:D8D3659C0B20681188C6D9EA900BA018 + xmp.did:D8F8AA691C37E1118462DDA61B7A9508 + xmp.did:D8FC5CB2F6BADF11A50CD2C2CF0935BE + xmp.did:D8FF1AD05859E111B32AEA5FA372BBE3 + xmp.did:D92B2DCBCF89DF119C22F96AB2E9AB99 + xmp.did:D92C8A313910DF119533B1B0BD8F5408 + xmp.did:D965D4096ED6E011992885DDE47ECB5F + xmp.did:D9893FDE16206811AFFDB53FE81F50F3 + xmp.did:D9A628947F21681188C696DC609994EC + xmp.did:D9B8D1DC1E2068119109A276E6305D40 + xmp.did:D9DB0F8658B0DF11BE58DED65F859DC6 + xmp.did:D9F8AA691C37E1118462DDA61B7A9508 + xmp.did:DA12D6F84035DF11B6C1EB0CD908AC7C + xmp.did:DA27FD16811EE5118DE4F4773FFC50D7 + xmp.did:DA2BFDA2ED96E011925DC49DFDCD4B03 + xmp.did:DA30AD8C12206811910989406DF36966 + xmp.did:DA440130092068119D0EEBB18A773162 + xmp.did:DA5581532A2DDF11BC089F6AC4A2047D + xmp.did:DA67C380402068118F62A588B3F859EB + xmp.did:DA69EA8F4403E111A656AB9151E59AE4 + xmp.did:DA6CB8F65FCDDF11A396C1301E420E76 + xmp.did:DA7F3E76337411E2BF8191FA925AC58A + xmp.did:DA8321A0FE11E011A95D87703A2192F9 + xmp.did:DA8650F5431ADE11B723E134B19F4103 + xmp.did:DA95685709206811871F914CD30FE11A + xmp.did:DA9C8187D356E011AED0888478157EEB + xmp.did:DAA1D198ADB6DF11BCFD93E76A0DC2F4 + xmp.did:DAB2A2F9FB76DE11BAF5E143B0B86FF1 + xmp.did:DAB8D1DC1E2068119109A276E6305D40 + xmp.did:DAB98C776B1CDF11AE55937296C789A6 + xmp.did:DABC24F18F61E011A295D2562FFEC2E6 + xmp.did:DABDEF45262068118C97EB5E0646166B + xmp.did:DAC8507854D5DF11A094DF01E6EDE320 + xmp.did:DAE5940D7D05E1118934F041B5168C44 + xmp.did:DAEA943E344FE011A1F8D0CD47726D92 + xmp.did:DAF5DC8820101168BAC9CC7F5AF813C0 + xmp.did:DB00867DC148E211975BE3F01A671811 + xmp.did:DB1E4C1CE87ADF118CB7FEA7CD74D35B + xmp.did:DB1EDE40419DE1119D83AE71C5DE510E + xmp.did:DB44863822A4E01194B19137A2998285 + xmp.did:DB53FBBB839FE11199E2F14D20E8CA04 + xmp.did:DB6BC860392168118F62F638EA26DDDD + xmp.did:DB86D99266F1DF11A96DEFBEC8126CF0 + xmp.did:DB8E626BCE7D11DF8B89C9EB065A17D6 + xmp.did:DB92E01FD609DE11B3BF8AC1AB42AC52 + xmp.did:DBB0610ECDB1E011858B909A7BBEC1AD + xmp.did:DBED2DFADB20E011B9BAB7A0AF851ED6 + xmp.did:DBEECEEDEB2EE111866E89F51FF7D987 + xmp.did:DBF226EE2D81E011A575FF8823ABA620 + xmp.did:DC00867DC148E211975BE3F01A671811 + xmp.did:DC06AF47F48DDF11AA6EDFF6104D25DB + xmp.did:DC20F1C5317FE011B4478E2C67181E65 + xmp.did:DC27666642CFE0118B80B74689FC5078 + xmp.did:DC4F4822108DE011A1C7E8C95E0A5A44 + xmp.did:DC74AD2D0C206811B1A4827FBE321FD6 + xmp.did:DC9C8187D356E011AED0888478157EEB + xmp.did:DCB01AD910B0E11183A7E457DB59AECF + xmp.did:DCB127042362E011A65E993E5274F762 + xmp.did:DCC0E10A1F95DF11B30EEA8B8FA3A1BD + xmp.did:DCC1853A3A216811AEE4ECC20A5D0880 + xmp.did:DCD7AB139BE3DE118146C3C434C4490E + xmp.did:DD1A61D9562068118C14C3FDACD63491 + xmp.did:DD1A7DF01CABE1118C62B15300F9FA22 + xmp.did:DD299C770F5C11E0BA48D224F2326A69 + xmp.did:DD49E438D8EDE0119166A4EF72679257 + xmp.did:DD53E8D1FCDCDF11B576FFDCD43F8093 + xmp.did:DD6D99CD671C11E1A04B9A1DD512B0A5 + xmp.did:DD7B5F6AE48CDF11A2DEBA479E35EF16 + xmp.did:DD874DFD1A2068118DBB9D77FB701C12 + xmp.did:DD955CFF9CB7DE1192888A12C330E904 + xmp.did:DD9DD8FEA74AE011B332AD5E5DEC5D64 + xmp.did:DDE92DDAC650E0118A08D7EF2B386DC9 + xmp.did:DDFEFE47FCE4DF11925EE4D38FAB2E00 + xmp.did:DE0C11FBCD2068118DBBFC70171B6859 + xmp.did:DE3430FD3D31DF11A6EFFFACAB811D8F + xmp.did:DE382B3B9D68DF11AEC1C82B050F8955 + xmp.did:DE4E065A712068118F62CA3F9DC2F6E5 + xmp.did:DE50C5D8965CE0118C1587CAE9EAF166 + xmp.did:DE6C7BB2E388E011BE14A01C937459CA + xmp.did:DE8AD84318F1DF11AACDAB6F458D3A25 + xmp.did:DEEDA88847A7E011A1C5BFCBA42739AF + xmp.did:DEF1E58F809EE211BAC2F8E8A8C8D41C + xmp.did:DEF63713352068118A6DCE218B785D1E + xmp.did:DEFB9024B07DE111A27A84D479DE30FB + xmp.did:DF2D0C1EBA32E01187E7C7D9BD8790E1 + xmp.did:DF34B58B2020681192B0FA7CEE9F1EDF + xmp.did:DF44863822A4E01194B19137A2998285 + xmp.did:DF50CE57CF11E011863BBBA9CFF47D70 + xmp.did:DF899B466140E011AE5DE74C62F0E7EC + xmp.did:DF99EFE7442EE11199C8C908708099D6 + xmp.did:DFA5E7B4D002DF11A13EF5FE5D480F2F + xmp.did:DFD964BF7A84E0118C7BACDECCE5B245 + xmp.did:E01E9F4F4EA111E09220D9ED97689A20 + xmp.did:E02A6C513089E011A98CC89B2B960529 + xmp.did:E02C190E426EDF11B24DE908ACCAC095 + xmp.did:E06F786DFCB1DF1198DFB20F90D3AA6E + xmp.did:E09CDE73F5AEDF119211ACD2BF96CC47 + xmp.did:E0A799439FABE0119B6EE3ADD561B07E + xmp.did:E0DC5C40852068118F62D27A6BCE2F0B + xmp.did:E0E0C13CDBF5DF11BD97AADAF5573B93 + xmp.did:E10224E78D32E111A930DB0BCB356FFE + xmp.did:E117B04B789EDF11B5B9BF6BB5EDB67B + xmp.did:E125B3765150DE11A39F9C3EB4B9EA9D + xmp.did:E12EA86BDFB6E111981F8CF3BE858B8F + xmp.did:E131125CC67CE01187A8CC1D99263FD2 + xmp.did:E15C8DF98B5AE011BBCFC6EA4EB55BFA + xmp.did:E172018CF47EDF11928CE252CAD94E87 + xmp.did:E1721EF2DB2068119109B10BB0D0BCC2 + xmp.did:E17E45F7ADB7DF11A129982D2A81871A + xmp.did:E18B6B7881AFDF11A99089F1760612D8 + xmp.did:E18EBF79891111E0A9C68A512698490A + xmp.did:E18EBF7D891111E0A9C68A512698490A + xmp.did:E1995F0126206811909888D83ACE8C82 + xmp.did:E19F527FD12EDF11B015F162565C4D20 + xmp.did:E1B5B70E3164DF11BE18CB6AE916FAD3 + xmp.did:E22F7AF421206811BA3CA8D3EE2775E9 + xmp.did:E237CE9502D5DF11AF7C84168689AC85 + xmp.did:E2387CA9092068118A6DD7606065F06D + xmp.did:E2421EC8A62068118DBBE9BB7FD2A0C8 + xmp.did:E2425CD43840E111B430B0DC41269552 + xmp.did:E257C5098425E211907F845FA9928810 + xmp.did:E2ACC71F378EE011A5DBBA929F764093 + xmp.did:E2BB4E1CA588DF11840C9D4AECA7B503 + xmp.did:E2BB7D470F96E011BBB9E3ECD100E00D + xmp.did:E2C4BFC9F520E11195DBB3B28A34B0E2 + xmp.did:E2F26FF45DBFE111B99DF8E76F9ABF74 + xmp.did:E2F3B2A11E2068119109C04F2B24B753 + xmp.did:E30E4902BACFDF11B14EED88D48A12C2 + xmp.did:E314BA8A240FDF11A9988C04661AEF9B + xmp.did:E31FFC57541211E0BD2AF927F2DB9596 + xmp.did:E3296203214AE01188FB87BE05EED33D + xmp.did:E33EEECDC9F8E011A452DB8AC9648D02 + xmp.did:E35203ED11B7E211B0388DC576D240B6 + xmp.did:E36553242020681192B0876F326BD696 + xmp.did:E37E45F7ADB7DF11A129982D2A81871A + xmp.did:E3B0335115E3DE118C7A95A6BECE17A5 + xmp.did:E3B4931687EADF118F83BB3DF0E0A4D3 + xmp.did:E3E610B1A2F8E0118A5CD3347D1E2098 + xmp.did:E3ED134DAF21E01181AB8439334A279C + xmp.did:E42882E8F6F211DFA418AE0B3A87249F + xmp.did:E42A04D611CBDF11B47FF77509E94E6B + xmp.did:E468A4CC112068118F62E37942A12C07 + xmp.did:E475ECBD2111E111ACA7880EFA94362A + xmp.did:E49038D44F4CE011BB98A06D80C6151F + xmp.did:E4A9AF341821E01190B1BA8B59966AFE + xmp.did:E4AFC0CC7DA2DF1196E6B4BE421E334A + xmp.did:E4B8A62422FFDF11B6F3853A23909770 + xmp.did:E4B9307E8E246811910989E2636DFD79 + xmp.did:E4E4CD55C40DDE11966CA376FEFD02A9 + xmp.did:E4FA73EF6CDCDF11AA34AFD407D8E6E8 + xmp.did:E5058D4E9E2BE0119DFC94F68E9FB408 + xmp.did:E5120C9C0E6BDF11B4F18758ECB3026B + xmp.did:E54716A70864DF119845C2449507F33B + xmp.did:E551D6F574B7DE11994196785E609050 + xmp.did:E583F3DE7647E01181FBAD6FFAB64B28 + xmp.did:E589A9A91D2068119553C5952A36A291 + xmp.did:E58CF74230206811910986335CA79ACA + xmp.did:E5A1EC372220681198A7E8A9FC75773D + xmp.did:E5AB759B1D48E0118165FA311A9541D8 + xmp.did:E5B94E14A429DF118800E1F886DACF5E + xmp.did:E5C58EE7DBA4E01194B19137A2998285 + xmp.did:E5D211D17292DF11BF27FD328B26A195 + xmp.did:E5E3C307FD56E011921BE2DE87A39B49 + xmp.did:E5F40B46DD64DF11AEF4E21B49241302 + xmp.did:E61653204488DF118E8FBD716AC90F65 + xmp.did:E62DE932182068119EE6B30F72ADC93F + xmp.did:E631DB0045F4DF119A53D229F72975FC + xmp.did:E6538DCACA43E111A19AE628379934F9 + xmp.did:E66504EFB504DF119F2CD4E3A2525BA6 + xmp.did:E681E2FFD8C8E011B9EEC15FE4217A7A + xmp.did:E68D87003ADADF11BC24AC98C3D1E4A3 + xmp.did:E6B411F714EADF11938B8FA82071A5DE + xmp.did:E6B94E14A429DF118800E1F886DACF5E + xmp.did:E6C74BF40B206811BEDCEC12B17E052F + xmp.did:E6EEAC66382068119109E4A43CE530D0 + xmp.did:E6F1F7B92AE6DF11A0D68F50E2E34A90 + xmp.did:E6F41E68A13EE4118E87D0BEF2F1174B + xmp.did:E7041F041F0F11E084C9A70103495335 + xmp.did:E718A65BFD47E011ABE9C7EC05F933BB + xmp.did:E733776AC335E011B270F02B22122089 + xmp.did:E73990D353D0E2119F71867025FF39BF + xmp.did:E747C0F80F65DF119A94C5D8D188955B + xmp.did:E75D5EBE06E1E111B455C05B252524DC + xmp.did:E768F84E7E01E011AE288C17F96A6240 + xmp.did:E76A871C79F4DE11A94ED7AA9F25D7AA + xmp.did:E76AAB7C765DE011A4F184AC68B58FC3 + xmp.did:E794078DDE64DF118A53D4EFE20C3518 + xmp.did:E7996B7BC270DF1198D58253D6A2BA30 + xmp.did:E7B1EDBC29C5DE11990FF6A05A5D67B4 + xmp.did:E7DD52641A19E01195F1BA474F2C0BAE + xmp.did:E7E5FFFCB62068119109D77742DCC440 + xmp.did:E7EEAC66382068119109E4A43CE530D0 + xmp.did:E7F9FCF120EBDE11A1BEB9F496284AD8 + xmp.did:E7FB64AD98B011E2849DBE6E540D40E0 + xmp.did:E8017BD55A3911E0A9D49A9EBFE78424 + xmp.did:E806339AF844E0119C12D20236F1E089 + xmp.did:E812A371FC4CDF11BE559267F53A0BAF + xmp.did:E831493F9BB6E0118B88CFB4FBBCBB98 + xmp.did:E83E8B283232E0118EE68999D946CEB1 + xmp.did:E85203ED11B7E211B0388DC576D240B6 + xmp.did:E8C1560E9217E011AFFBA65419AF10CB + xmp.did:E8C24202CE68DF119BD7EA391D4DAE80 + xmp.did:E8D89CEDE519E0119D0089DE042C73AD + xmp.did:E8E3C307FD56E011921BE2DE87A39B49 + xmp.did:E8E4CD55C40DDE11966CA376FEFD02A9 + xmp.did:E8F5DDBCEDB0E01191FFBD2DD96ABF07 + xmp.did:E934F7E4A0BFDE1182ECFF84B4ADEBD5 + xmp.did:E96C3ADF2244E011A2C2D0B0B92C7727 + xmp.did:E9710C1D002FE01195828DEEC618B761 + xmp.did:E9785F9708206811B3A9FA077BBC5C96 + xmp.did:E99C23308620E011B678880E68030599 + xmp.did:E9B2497F4887DE11A5918C48081DB760 + xmp.did:E9C24202CE68DF119BD7EA391D4DAE80 + xmp.did:E9D7FE3B4D2068118083F286C739C2F9 + xmp.did:E9E585A18985DF11B412BBE42C504414 + xmp.did:E9F56C92BCC4E011AE5AA9DB9DA7D84B + xmp.did:E9F7ECA1092068119D0EEBB18A773162 + xmp.did:E9F8E4BCC421681188C696DC609994EC + xmp.did:EA1653204488DF118E8FBD716AC90F65 + xmp.did:EA2AC941FCCFDF118EA1D9164E9897BC + xmp.did:EA4B762978C9DF11A64EBB615C35DEA8 + xmp.did:EA4D10EC91A4E01194B19137A2998285 + xmp.did:EA77D42DA235DF11A791C447C296D485 + xmp.did:EA92B2569ED8E0118842B29FA6343094 + xmp.did:EAAFC0CC7DA2DF1196E6B4BE421E334A + xmp.did:EAB61C1166EADF11BB70D0543DF9E038 + xmp.did:EACF945535C5E11193F5C72C2A803FB2 + xmp.did:EAD2576A0D20681192B0FEBDA93E3C72 + xmp.did:EB0B4C6E584F11E1A223F4E898E577A0 + xmp.did:EB45F4318941E1119A7281FEE5F85334 + xmp.did:EB51C20896BC11DF97EEC8843B973B58 + xmp.did:EB6833B03815E11198ECF0F52285103A + xmp.did:EB6A84EAC02FDF118680AF6314DC52BB + xmp.did:EB805357E111E111B986CD3EEB724A95 + xmp.did:EB9D13B8007C11E0A51DEB87967C265B + xmp.did:EBDC4F68602AE011B53DE29EB0B539B1 + xmp.did:EBDED125DCFFE1119DA7EB3184622E6D + xmp.did:EBE3C307FD56E011921BE2DE87A39B49 + xmp.did:EC1D0D5EFF85E011A0088ADC2704A3EB + xmp.did:EC2CA6D49DCD11DFBA9A99B655D35914 + xmp.did:EC37CD1BDF19E11186FDDC0A0C802E81 + xmp.did:EC71AFD7523BE011ADC2C97F0C5D7FB8 + xmp.did:EC867B3F342068119109909B64798A91 + xmp.did:ECA9BFC8C62468118C7CECEE4312D82B + xmp.did:ECD989D5DF71E01186C4F2433814AC76 + xmp.did:ED08A00C16ACE011B4E6D3B6DBAB908B + xmp.did:ED25091EA198E011A2BADBA9D0CD73D1 + xmp.did:ED3F8071C82BE011A5AEDC8A542D4786 + xmp.did:ED48D0CBA809E11199D296F43D952D4D + xmp.did:ED507849FB2168118F62FA9F84E7B9C8 + xmp.did:ED7F117407206811A229A9B2F7593D2E + xmp.did:ED7F117407206811B28C859639FD65E0 + xmp.did:ED958E89092068118C14CA160A1107BD + xmp.did:ED9AACBEE734E011B9AEA8F83750A18E + xmp.did:EDB19C4EC3F6E01193089EB7AFCD8499 + xmp.did:EDB427EB2BE9DF118464FE7C077CD0A9 + xmp.did:EDB543427420681188C6D9EA900BA018 + xmp.did:EDC4FB204733E1118EE3DDE8D470F9A1 + xmp.did:EDCB0BBBDBD2DF11959AC657E2080A64 + xmp.did:EDE265007EB7DF11A328B924F731DB67 + xmp.did:EDF54030DFF3DF11BD97AADAF5573B93 + xmp.did:EE02E8E9FBA3E111925DE4C9387325AA + xmp.did:EE060BC9B174DF11B6A78A06DDE30A7A + xmp.did:EE162A984C16DF1185C38799BDF561B5 + xmp.did:EE30A922B496DF118BDDC63FE023ACD8 + xmp.did:EE312D94D9EE11E08DAAA756BEE363B1 + xmp.did:EE4526021487E0118277AC261C6CAC2A + xmp.did:EE4A336DBB3311DF9D58D6B09AFE33F0 + xmp.did:EE67D3C11075E01184C0A4200CBECB5B + xmp.did:EE7F11740720681188C6A0E9DA5772B1 + xmp.did:EE7F1174072068119420ED591AF1AEEA + xmp.did:EE7F117407206811994CEB8550425B9B + xmp.did:EE7F483B046FE311A8D6F0CB08942B4A + xmp.did:EE986F416B1EDF119898ACDBDF5F125E + xmp.did:EEB725A3AF23E0118923B656DB9CFD00 + xmp.did:EEC1560E9217E011AFFBA65419AF10CB + xmp.did:EECAEF1CD8EDE1118CDABAB0642B2E1C + xmp.did:EED2576A0D20681192B0FEBDA93E3C72 + xmp.did:EED76B481F2068118DBB9D77FB701C12 + xmp.did:EEF66714FCD0E011946BB31A0FA35EA6 + xmp.did:EEFB0E4AC9C0DD1193D7B9310AB884B2 + xmp.did:EF0008E2E40911DFB5AAA6008D4E8DB8 + xmp.did:EF1401295DA7E011B5A4C400485E7FAC + xmp.did:EF17D91D3220681192B08B72887FDC11 + xmp.did:EF2F7F552B47DF11AFA9D4A773444CA9 + xmp.did:EF31498187F2DF11A909C7CDCD73F8E6 + xmp.did:EF44788CC007E011911FF86EFFDC8B95 + xmp.did:EF8441C065E7DF11B8ABBBF7FFA6B0C4 + xmp.did:EF9BA0FF33A2E011BE16E9C42BC4FB48 + xmp.did:EF9F09207E51E111907EE5E4FC803020 + xmp.did:EFC9D1D477B0DF118B43CF67BE3C9F7D + xmp.did:EFDF94E38A31E2118D32F87110AF6868 + xmp.did:EFEB9AFE5B66DF11A59AC2931494C3C5 + xmp.did:EFF49EBD5EA3DF11BB78B64796273177 + xmp.did:EFF99A9ECB31E11194979B80FD445456 + xmp.did:EFFE4E62C96711E0B7298D5C97AA0999 + xmp.did:F00AE0FC0C2068118DBBDB1E9F8FD3E6 + xmp.did:F0156A7F33206811871FBF7EE03058F8 + xmp.did:F020252D40206811871FE8DD2340C0B0 + xmp.did:F025ABAFE6FBDF11A80B9B6A85F13ADC + xmp.did:F02A437A4A26DF11A0A0C6517A6F98F1 + xmp.did:F031EF1C103EE01180BDA5F0F2549ACB + xmp.did:F04377DB6C20681188C6D9EA900BA018 + xmp.did:F04D35C642B8DF118CEA9E52E1D0FAB8 + xmp.did:F04E3704E203DF11AD58B9E601FFD3D7 + xmp.did:F060DF12A02068118DBBEBC5ECF31A71 + xmp.did:F06533624FF7DF11BD97AADAF5573B93 + xmp.did:F088CA579E2AE11192D7ADEDD42F4562 + xmp.did:F0986F416B1EDF119898ACDBDF5F125E + xmp.did:F0AAC4AF8F4EDF11AD78E0E351C719E8 + xmp.did:F0B15F38B61DE511B7ADF64B16152FE2 + xmp.did:F0B555145168E0118B1385B28F882E94 + xmp.did:F0D87AC7EE56E011921BE2DE87A39B49 + xmp.did:F0E0B8324525E111AF3AE4FC28D7D09D + xmp.did:F0EC54C91EF0E011BF318C473C42BF32 + xmp.did:F12ADB23EB9BDF118389B90824D31C13 + xmp.did:F130F0727B20681192B0D8368D31C23C + xmp.did:F142821C0E38E111AC33BB0B57173429 + xmp.did:F14794675ED8DE11AD32934BC5D34032 + xmp.did:F1559C6B022CE111A89CE2C72586D6E0 + xmp.did:F168CE637E85E111A044E8688F28579E + xmp.did:F177AB1B1B2068118C97EB5E0646166B + xmp.did:F178F87B86206811BEB789E23D201984 + xmp.did:F18BB7703ED8DF11B9A3DD4262C9D78D + xmp.did:F18F93CC6279E011A4D3C40ADA3B0913 + xmp.did:F1958E89092068118C14CA160A1107BD + xmp.did:F1B427EB2BE9DF118464FE7C077CD0A9 + xmp.did:F1C1092E02C2E01185C6B675C312A0F3 + xmp.did:F1C87F3CA95EDE1199EBD1E902DE91C9 + xmp.did:F1CE1E4AAF1EE0118CCEFB9512A07562 + xmp.did:F1CEE2C5D982DF11A5A7B7DC5FFE49A3 + xmp.did:F1D21EFD7A26E011B136A7C0694161D2 + xmp.did:F1DA3A51C96711E0B7298D5C97AA0999 + xmp.did:F1DBEF37B007E011ACACB927CD8DD8FC + xmp.did:F1E4A69A072068118C14CA160A1107BD + xmp.did:F1F54030DFF3DF11BD97AADAF5573B93 + xmp.did:F200E5624898E011BC9CEB68D2D4FBFE + xmp.did:F22117C53520681180839613FFBBFAAC + xmp.did:F24030873266E111B87FA86C047D9D96 + xmp.did:F24E4A8A1B30DE11A4D995F47C139813 + xmp.did:F2540858647611E08057A48AA833837F + xmp.did:F25C8AF19B2068118F62908DFC3878E0 + xmp.did:F26533624FF7DF11BD97AADAF5573B93 + xmp.did:F265B90E424B11E0BDE9F560AB3ED5D6 + xmp.did:F28154AB487FE111A0438ED159AD6547 + xmp.did:F283F43C415DE0118FF6CDAA7F2C086E + xmp.did:F2986F416B1EDF119898ACDBDF5F125E + xmp.did:F29C0B514386DF11A279CB4F4B1246A8 + xmp.did:F2B0F9C8DE35DF11A29E83FABAED7BE1 + xmp.did:F2B8BE4857CEE1119068AF2DDDE9E523 + xmp.did:F2BEAADE093AE0119788DBBDC5B2A3F6 + xmp.did:F2CD01B0A370E0118B1598FA978C4C15 + xmp.did:F2D38B20D6A1E0118733D871EDAFE831 + xmp.did:F2D87AC7EE56E011921BE2DE87A39B49 + xmp.did:F2D9C097D12DE011A4C39FDDCFC91B6D + xmp.did:F2DB4C9496A2E0118803CCF97A69F3E2 + xmp.did:F2E4A69A072068118C14CA160A1107BD + xmp.did:F30CCD36594FE011AF25963C3B6CB4AB + xmp.did:F31FC884372068118DBB99B662A6B135 + xmp.did:F3322BBFC8E6DF11B2DAF9F8D4560A98 + xmp.did:F33AE3EA840DE1119BFEF944A86F428E + xmp.did:F342821C0E38E111AC33BB0B57173429 + xmp.did:F348C3CCC40CE011972FEB89052F1F93 + xmp.did:F3490D2C1921681188C6B7868B1364E8 + xmp.did:F34F68BE0F20681195FEA8AE1900E039 + xmp.did:F36AD3D2586CE0118286C365F8C4E42D + xmp.did:F388CA579E2AE11192D7ADEDD42F4562 + xmp.did:F38DC55F4D85E1119FF2C2C8A7245265 + xmp.did:F39A2E7C44F2DF11A5F8D165650409AC + xmp.did:F3AB522EBEC9E111B38DB9840482DDD7 + xmp.did:F3AB62003E2068119087B87693B6082A + xmp.did:F3C0C7463473E011AAA38CB4C2E918DB + xmp.did:F3D9515A41CBE011918BD866478EE47E + xmp.did:F446280F2CD9E011B1C5DFE5714861A4 + xmp.did:F44BECF3B9E8E0118D02DF4EA9C8C233 + xmp.did:F45CCBDC98EDDF11A0C7D359A49276B7 + xmp.did:F4800477A424E111B667A512A521A8DC + xmp.did:F4986F416B1EDF119898ACDBDF5F125E + xmp.did:F4BE07503650E01188FDFFA22DD2E1BF + xmp.did:F4C21AD824C5DF11947A9369D5307256 + xmp.did:F4D87AC7EE56E011921BE2DE87A39B49 + xmp.did:F4E2517C8ED8DF11A98C86E3BD0E278A + xmp.did:F4EAD9A60A76DF11A16F99A2279798B0 + xmp.did:F536FCDAEB0EE3118D2C8463322F0871 + xmp.did:F54C193BDE1DDE11B786E3E314F5B300 + xmp.did:F555338F30D7DF11AA8EE0C4969B59D4 + xmp.did:F56A33FA65D8E0119667D0AC9675DDAF + xmp.did:F56F27A4F90DDF11BA8CFE309BCB0AA6 + xmp.did:F57337FA1D206811808384D0F1D669E1 + xmp.did:F595427AEAF0E0118ED6C89280F3137D + xmp.did:F5A5EFE2353DE1119437B51943562A9A + xmp.did:F5ACBE76315011E0A972DB1A50D6A84F + xmp.did:F5B5082B9B4311E192E9FD709E2209FE + xmp.did:F5BD30D35AFADF11A3BC87EE02D6EDB8 + xmp.did:F5C288EE8C58E0118A6CFA0D378051C3 + xmp.did:F5C2DE26FD43DF11BEFDCD36FB7893D5 + xmp.did:F5C8BC0C144FE011936EB904A6390C15 + xmp.did:F5C949D4FB68DF11BB279F98F067360A + xmp.did:F5CF8E2D7490E0119A18FB12BAA81907 + xmp.did:F5E2CCA6220AE0118001A94878666B77 + xmp.did:F5E93C52891111E0A9C68A512698490A + xmp.did:F6164B44C880E011949FAF220FDE3616 + xmp.did:F618F3E299C3E211B9589A0355C58431 + xmp.did:F621EA3249BEE011821AFF81E485DB0F + xmp.did:F65398EE0B6AE011A161A7FE0780063A + xmp.did:F65EEB8B6B2068118083AC546C0EE525 + xmp.did:F66031CB5233DF11AF27B0C75DAB291C + xmp.did:F661D9FA8775E011B17A9E22BEA99AB9 + xmp.did:F675D20765A7DF11A734AD03DC0A5A56 + xmp.did:F6B501F9F5BCE411A62FE31619ACEB56 + xmp.did:F6C0C7463473E011AAA38CB4C2E918DB + xmp.did:F6CF60380D21681188C696DC609994EC + xmp.did:F6DDACC78521E11190789B1616F0B863 + xmp.did:F6F6F89DF956E011921BE2DE87A39B49 + xmp.did:F72163F6B23FE1119D90C2FCC233B7F5 + xmp.did:F724E3CB642011E09A57C4DC582798AF + xmp.did:F724E3CF642011E09A57C4DC582798AF + xmp.did:F72AF93DF62F6811B2829A31329A0A06 + xmp.did:F7308A261D206811871FBF7EE03058F8 + xmp.did:F74279974D53E011B4ADA05F9FBFB5F3 + xmp.did:F74F1800EC43E1119C07EF2F0F32B02F + xmp.did:F75D918A1120681192B08BEE29C75DD2 + xmp.did:F76097E97542DE11BDF28198A8779061 + xmp.did:F76D43AA5C1BE111B6D1A602976B56C8 + xmp.did:F772D2CE65A9DF11ADEB824D3C625F58 + xmp.did:F774F9FDDA206811857EF51D78886996 + xmp.did:F77E435B55FCDF11960D9C71D583A427 + xmp.did:F77F1174072068118016E3CF38EC96CC + xmp.did:F77F117407206811806C9A138DB80561 + xmp.did:F77F11740720681180838FBAD129F239 + xmp.did:F77F1174072068118083EB83C62BD7C1 + xmp.did:F77F1174072068118083F5C1F4AE9621 + xmp.did:F77F117407206811812BEF542ACF0A8E + xmp.did:F77F117407206811822AC2D40AA7F8BA + xmp.did:F77F11740720681182FAC26AB9889EBA + xmp.did:F77F1174072068118366C244F3E439A6 + xmp.did:F77F1174072068118403F505A828CCE1 + xmp.did:F77F1174072068118603B4EB98C19FD1 + xmp.did:F77F117407206811871F9C98AB71E639 + xmp.did:F77F117407206811871FAF8B0949E228 + xmp.did:F77F117407206811871FD6C6B3A51DD0 + xmp.did:F77F117407206811871FE2FFC5A15DAA + xmp.did:F77F117407206811871FE54CC1F6E823 + xmp.did:F77F117407206811871FFE96F47936D6 + xmp.did:F77F1174072068118892A562116D07C7 + xmp.did:F77F11740720681188C684A5B39F31B1 + xmp.did:F77F11740720681188C6B07CC95C0538 + xmp.did:F77F11740720681188C6BF6EE6007636 + xmp.did:F77F11740720681188C6C24FEED21665 + xmp.did:F77F11740720681188C6D9EA900BA018 + xmp.did:F77F11740720681188C6F83C91933163 + xmp.did:F77F1174072068118A6D90E1FCEAAC55 + xmp.did:F77F1174072068118A6D99D68D2699F7 + xmp.did:F77F1174072068118A6D9F8A4B73E034 + xmp.did:F77F1174072068118A6DBCFF8FBBF0B9 + xmp.did:F77F1174072068118A6DC1619F1BD26A + xmp.did:F77F1174072068118A6DD3EF8F086018 + xmp.did:F77F1174072068118A6DE0B41756505B + xmp.did:F77F1174072068118A6DF43387500C21 + xmp.did:F77F1174072068118BF792C16EE1E716 + xmp.did:F77F1174072068118C14CD081E66E7E8 + xmp.did:F77F1174072068118DBBA8F193EBC78B + xmp.did:F77F1174072068118DBBDA7B868B1240 + xmp.did:F77F1174072068118DBBF0860F7EDEF0 + xmp.did:F77F1174072068118F42F1D8108024F1 + xmp.did:F77F1174072068118F62C034CD13E676 + xmp.did:F77F1174072068118F62C2EC08F2ECE6 + xmp.did:F77F1174072068118F62F51F1BE14870 + xmp.did:F77F1174072068118F62FDBD9649A46B + xmp.did:F77F117407206811900D8623FB6CCF2F + xmp.did:F77F1174072068119098A37C55994CC0 + xmp.did:F77F1174072068119109835D177CA48C + xmp.did:F77F1174072068119109862065E637A5 + xmp.did:F77F11740720681191098918AC4FD7C5 + xmp.did:F77F1174072068119109A43449BFB880 + xmp.did:F77F1174072068119109A61C6B9B1188 + xmp.did:F77F1174072068119109AA3891E71C20 + xmp.did:F77F1174072068119109ADF0C62C14BB + xmp.did:F77F1174072068119109B0804915896F + xmp.did:F77F1174072068119109B80DD3093C00 + xmp.did:F77F1174072068119109BC552EB79E12 + xmp.did:F77F1174072068119109C4979E02DF05 + xmp.did:F77F1174072068119109C71CF6D9E2A4 + xmp.did:F77F1174072068119109D06A8313D563 + xmp.did:F77F1174072068119109E626B4ED1C3E + xmp.did:F77F1174072068119109E9DFED7E4777 + xmp.did:F77F1174072068119109F8FE27718D5A + xmp.did:F77F117407206811923FAFF54AA029B4 + xmp.did:F77F11740720681192B0A1AA0B2EFC15 + xmp.did:F77F11740720681192B0B6CBB13A5218 + xmp.did:F77F11740720681192B0E5594C694DCA + xmp.did:F77F11740720681192B0ECAD1A886320 + xmp.did:F77F11740720681195FE9DECE1BE0894 + xmp.did:F77F11740720681195FEA4D474CEC3A2 + xmp.did:F77F11740720681197A5B0F1D887A626 + xmp.did:F77F11740720681197A5E94B7C2456C1 + xmp.did:F77F11740720681197BA85EA9D5CE0E4 + xmp.did:F77F11740720681197F0BD1621F7266C + xmp.did:F77F11740720681198E99BCF30868C79 + xmp.did:F77F117407206811994C86D6CBBFA254 + xmp.did:F77F117407206811994C8A8243CF6DD5 + xmp.did:F77F1174072068119BD8C6C7BF63D0BE + xmp.did:F77F1174072068119C12FCC73F11446E + xmp.did:F77F1174072068119EB8F890500830B9 + xmp.did:F77F1174072068119EE6B30F72ADC93F + xmp.did:F77F1174072068119F26B3C495D382A3 + xmp.did:F77F117407206811A178B4862A3AC2C7 + xmp.did:F77F117407206811A1AFB41E9D0EF6B9 + xmp.did:F77F117407206811A613FC07C3D4EEBA + xmp.did:F77F117407206811A6FAEA435EC1AF87 + xmp.did:F77F117407206811A7BABFD19F527A0C + xmp.did:F77F117407206811A7BAF229BFA1E529 + xmp.did:F77F117407206811A961A055BC48AC60 + xmp.did:F77F117407206811A961F491C029F4B7 + xmp.did:F77F117407206811A9F8A44324AE3979 + xmp.did:F77F117407206811AAF1F360BEADB6C0 + xmp.did:F77F117407206811AB088ED073FBA775 + xmp.did:F77F117407206811AB08D0978CC83F5A + xmp.did:F77F117407206811ACAFDFF5EE53AB0D + xmp.did:F77F117407206811AD26F28600CC29DA + xmp.did:F77F117407206811AEE1E85804F1BC1E + xmp.did:F77F117407206811AEF69600F277E5BB + xmp.did:F77F117407206811B04FBAAF7885AEEF + xmp.did:F77F117407206811B13DF63E8165C28F + xmp.did:F77F117407206811B1B7AA467262CD37 + xmp.did:F77F117407206811B4AF951E2EB57A6F + xmp.did:F77F117407206811B516B5B451545A40 + xmp.did:F77F117407206811B53EA709ED3BFD59 + xmp.did:F77F117407206811B5669AC054FE53DD + xmp.did:F77F117407206811B5FEC38E6EA09CBA + xmp.did:F77F117407206811B699966B9627F209 + xmp.did:F77F117407206811B7C39BAA99E3A2CE + xmp.did:F77F117407206811B9E784E2493DEB84 + xmp.did:F77F117407206811BA24F97E9D027B47 + xmp.did:F77F117407206811BACAC3C5CAA66B7D + xmp.did:F77F117407206811BAFDD8C559CCB40F + xmp.did:F77F117407206811BB5ADC9BC13258B5 + xmp.did:F77F117407206811BB8EE28C44C74A0A + xmp.did:F77F117407206811BC5391310951E999 + xmp.did:F77F117407206811BD35A3FA96790B63 + xmp.did:F77F117407206811BEBEF1686CC8443C + xmp.did:F77F117407206811BEDCA708FFA8A08A + xmp.did:F77F117407206811BEDCC797CEDAC49E + xmp.did:F77F117407206811BEDCE96817EBFBC7 + xmp.did:F77F117407206811BF8EAA6E2CF6254A + xmp.did:F787351D35206811994CAC4A6D2CC7F7 + xmp.did:F79BCCAB5910E111A0B58E2A7910FECE + xmp.did:F79FCEE9E902E111A1F5A6C499FFC13A + xmp.did:F7A270C2A7A3DF119F139B952251B991 + xmp.did:F7C03F22EB2C11E1BF1CD14E7A6D9188 + xmp.did:F7CD0B0298DFE011956F90936EDEDF88 + xmp.did:F7CF60380D21681188C696DC609994EC + xmp.did:F7E0C957BAB2E011A991820570E4C61E + xmp.did:F7F779E831C2E31194C9E7F062264167 + xmp.did:F80CD9D099B7DD11A37EFFCB8B638CF7 + xmp.did:F8301B2C0D206811B1A4F4BFE09FA186 + xmp.did:F83CB0DC9121DF119109F0ACE0E21257 + xmp.did:F8483D814A7CE01186B4991E2FCD961C + xmp.did:F866863F1108E1118BBCD7EB45349BD3 + xmp.did:F87F117407206811808384D0F1D669E1 + xmp.did:F87F117407206811808386F774EDA757 + xmp.did:F87F117407206811808399331810C790 + xmp.did:F87F1174072068118083C52D1E41DB6A + xmp.did:F87F117407206811822AB716ED55D84E + xmp.did:F87F117407206811871FBA6453755923 + xmp.did:F87F11740720681188C6956C521FE498 + xmp.did:F87F1174072068118A6DA8311F88CD32 + xmp.did:F87F1174072068118AE4FE3FBF51A176 + xmp.did:F87F1174072068118B6FF512D7993506 + xmp.did:F87F1174072068118F62A44CE4DF69A8 + xmp.did:F87F1174072068119109AAFB9F469FD0 + xmp.did:F87F117407206811994CA9A71151591E + xmp.did:F87F1174072068119CD4DB2985335F93 + xmp.did:F87F117407206811A7BAFEB09FF99E28 + xmp.did:F87F117407206811AB08A48317E1E7A3 + xmp.did:F87F117407206811B840EEA30A7E5CB4 + xmp.did:F87F117407206811B9B1DE3DF693708F + xmp.did:F87F117407206811BFF0ACA051BFE6BC + xmp.did:F88EC374B0C011E0817FCCD4AC0A48BE + xmp.did:F88F820B1420681188C6D9EA900BA018 + xmp.did:F897582BF158E0119744C7603858FB93 + xmp.did:F89AAA29FD23E1118006B608312485C1 + xmp.did:F8B1200EC82068118F62B55C94B5F1CA + xmp.did:F8BC412B0C2068119109C80A4C3147BC + xmp.did:F8CD5A9257F6DD11953AD933D3AF4EA0 + xmp.did:F8D51B6E964AE111A162ED9905AB293E + xmp.did:F8E327E22F21681188C696DC609994EC + xmp.did:F8E4A69A072068118C14CA160A1107BD + xmp.did:F8E9EACCBB62DF119DFD9A74B3B2B92D + xmp.did:F8F0325429C1E411998DEE360DF7F56A + xmp.did:F9007828C833E0119E6C8CC2A3A03527 + xmp.did:F92117C53520681180839613FFBBFAAC + xmp.did:F93AB9C6F6BADF11A50CD2C2CF0935BE + xmp.did:F94377DB6C20681188C6D9EA900BA018 + xmp.did:F95ADF68FF56E011921BE2DE87A39B49 + xmp.did:F974D8AD50E3DE119B98A0D1FCBA1444 + xmp.did:F9760D1D9B4211E1BDF8AB7E2919F0A2 + xmp.did:F97F1174072068118083EB83C62BD7C1 + xmp.did:F97F117407206811822ACD5989FC9E9C + xmp.did:F97F117407206811871FA5CC5A0B48CB + xmp.did:F97F117407206811871FEB10CF5631D2 + xmp.did:F97F117407206811871FEB8DB824A23C + xmp.did:F97F11740720681188C6956C521FE498 + xmp.did:F97F11740720681188C6F360FFD5F687 + xmp.did:F97F1174072068118A6DC4B77CAC573A + xmp.did:F97F1174072068118A6DD0E7F2B5A213 + xmp.did:F97F1174072068118A6DF1EB259C6C29 + xmp.did:F97F1174072068118BDAA9318C4EF1FC + xmp.did:F97F1174072068118C14886BEA417E94 + xmp.did:F97F1174072068118DBBEB69C03E24DA + xmp.did:F97F1174072068118DBBF1EFF81BD277 + xmp.did:F97F1174072068118F62F51F1BE14870 + xmp.did:F97F11740720681192B08FC2E5BFA0B1 + xmp.did:F97F11740720681192B0D584A9130FDC + xmp.did:F97F11740720681192B0E118D6113D9A + xmp.did:F97F1174072068119432E1D8634E419E + xmp.did:F97F11740720681196B683A49525D009 + xmp.did:F97F1174072068119A7F833586C6F350 + xmp.did:F97F1174072068119D88FD6B5EA31D11 + xmp.did:F97F117407206811A232A9EB52F44B48 + xmp.did:F97F117407206811A6D5D23F472BAFFF + xmp.did:F97F117407206811AB39EE7D3CCB07EB + xmp.did:F97F117407206811AE56A706431183BE + xmp.did:F97F117407206811BBA9BBFE30D87AC1 + xmp.did:F98F7721465EE011978DEF38B3E75961 + xmp.did:F9C859D63749E011A89FE4958E20C48E + xmp.did:F9D07866E22EE011B24EBE4DA05E4758 + xmp.did:F9D2BC0A0398DF118E0DFBCC39F1D70C + xmp.did:F9D750E0A91EE011B9BAB7A0AF851ED6 + xmp.did:F9DC9F14122068118C149D08F70A161F + xmp.did:F9EAD2B57475E1118DFBB785E057B241 + xmp.did:F9EC7BD2DC9CE0119658EF1F297D770E + xmp.did:F9F16C12E2206811BEDC9678CA0435A7 + xmp.did:F9F6F89DF956E011921BE2DE87A39B49 + xmp.did:FA07CC11503DE011A21B8E4BEDBFA80A + xmp.did:FA130DF832216811B6D09349CCF4BD48 + xmp.did:FA1674D9791CE111A9E0D50F061E94AC + xmp.did:FA2A326B984311E08E82B3EEEC7D7DDF + xmp.did:FA5AAC3A7824E11185FE92D6C1FEFCEA + xmp.did:FA7F117407206811871F806D3B055743 + xmp.did:FA7F11740720681188C683C2B8E3A97C + xmp.did:FA7F11740720681188C6AAF38E9FB5F5 + xmp.did:FA7F1174072068118B55D8122BD4BBDA + xmp.did:FA7F1174072068118C14AF6C9BD96AB9 + xmp.did:FA7F1174072068118F628C4A209C8985 + xmp.did:FA7F1174072068119109836B7A347A79 + xmp.did:FA7F1174072068119109D4895471EB7A + xmp.did:FA7F11740720681192B0D6DC74DDAB73 + xmp.did:FA7F11740720681197A5DDC52FB107A8 + xmp.did:FA7F11740720681197A5EB894C7826D5 + xmp.did:FA7F1174072068119D68B0A7E60C0F5F + xmp.did:FA7F117407206811A964A31DC56DDF2F + xmp.did:FA7F117407206811ACAFC771317ECB1D + xmp.did:FA7F117407206811B3F3D3B4C58E7B6C + xmp.did:FA877389256CE011A37DD04CFB500E01 + xmp.did:FA9D99629294E0118A8FB079BE22B8F7 + xmp.did:FACF60380D21681188C696DC609994EC + xmp.did:FADC9F14122068118C149D08F70A161F + xmp.did:FAE4B971721DE011926BD271FF06E9F8 + xmp.did:FB0C59FB9123E011A7FAB4F0694098EE + xmp.did:FB2A61F69CE011DF83C0A65F756D654C + xmp.did:FB33C528442068119A56CF70087969A4 + xmp.did:FB536F21AB21681188C696DC609994EC + xmp.did:FB5A9AF2D439DE119E62A8486679A48D + xmp.did:FB5ADF68FF56E011921BE2DE87A39B49 + xmp.did:FB7F1174072068118083EB83C62BD7C1 + xmp.did:FB7F117407206811871F92CFDFF7440C + xmp.did:FB7F117407206811871FEEA6EC09A2E5 + xmp.did:FB7F11740720681188C6CC16CFB2376C + xmp.did:FB7F1174072068118A6DE9BB974B336C + xmp.did:FB7F1174072068118C82A021EBAC43C7 + xmp.did:FB7F1174072068118F628504B14915F2 + xmp.did:FB7F1174072068118F62C5F89BC13EC1 + xmp.did:FB7F1174072068118F62D1E4D00C3DEC + xmp.did:FB7F1174072068118F62D871D73DB23C + xmp.did:FB7F1174072068119109ABAA041E7FE7 + xmp.did:FB7F1174072068119109C00FC3634517 + xmp.did:FB7F11740720681192B0A1AA0B2EFC15 + xmp.did:FB7F11740720681192B0A6951AA679E5 + xmp.did:FB7F11740720681192B0FBC5A3D86C7B + xmp.did:FB7F11740720681195AB8871ADE72D64 + xmp.did:FB7F11740720681197A58C87B58F4D68 + xmp.did:FB7F117407206811994CD64695562D82 + xmp.did:FB7F1174072068119ADFE0E0FDFAEC06 + xmp.did:FB7F117407206811A232A9EB52F44B48 + xmp.did:FB7F117407206811AB08D95ECD287044 + xmp.did:FB7F117407206811B4F2EAB0100BF891 + xmp.did:FB7F117407206811BA63CAB6937FB0B9 + xmp.did:FB8E314E2469E0119292AD055BFAFED8 + xmp.did:FB91C2C2114CDF11B154B4107530C1E8 + xmp.did:FB94A77D3D12DE11A23393C930258098 + xmp.did:FBA418740AF511E0A7FBA2AFC309551F + xmp.did:FBC4D2040A2068119109CC642C44EC0C + xmp.did:FBD750E0A91EE011B9BAB7A0AF851ED6 + xmp.did:FBD8D25BF171E011988FD756EFFA5742 + xmp.did:FBDC38D9172068118DBBDA58653AF859 + xmp.did:FBE88C9AEFBAE0118CDFB8338E491CB5 + xmp.did:FBF0030BD094DF11B924FFC964F2F0AE + xmp.did:FBF6F89DF956E011921BE2DE87A39B49 + xmp.did:FBF99EB7567DDF11A74EE6CE03994422 + xmp.did:FC0CD9D099B7DD11A37EFFCB8B638CF7 + xmp.did:FC26EDE1870CE1119A9ADFA9420BE2AD + xmp.did:FC2D0F7365D2DF118DD8F9FB82CE2DC3 + xmp.did:FC396FED142068118083AEAC33B78D50 + xmp.did:FC3CB0678A6ADF11990CC1C31937E6F7 + xmp.did:FC3EB3A5072068118DBBDEE28C0B41D9 + xmp.did:FC423AA60BBDE111AFD9BD84262E9248 + xmp.did:FC52E586C6B7E211A52FD267AF0FBC8E + xmp.did:FC6D77DE013EDE11B0D785612DAC9F98 + xmp.did:FC6F0BD5F22FE111835FCEA6CCEB95E2 + xmp.did:FC7441687D2CDF11958F9AC533722675 + xmp.did:FC7F1174072068118A6DF3C73496F8E5 + xmp.did:FC7F1174072068118DBBAA650F3D9198 + xmp.did:FC7F11740720681191099EB446F6DBFE + xmp.did:FC7F1174072068119109C00FC3634517 + xmp.did:FC7F11740720681192B0A08E4EE6AF18 + xmp.did:FC7F117407206811A35DF8BCB74BB69F + xmp.did:FC7F117407206811AD43B1EC353D4389 + xmp.did:FC7F117407206811AE568088196B6FA8 + xmp.did:FCA1EF270D20681192B080542646EBD1 + xmp.did:FCA96BBA162168119109EEACF6B625BE + xmp.did:FCC9C3EEFC15E111AD59919244029BB1 + xmp.did:FCDB2B885827DF118764DFF2BED5DF99 + xmp.did:FCEB07A03A39E011B50EDC675630C896 + xmp.did:FCEB59718E206811871FBF7EE03058F8 + xmp.did:FCFC992E2FEEDE11B99680D6D89CACBA + xmp.did:FD31A68E5BE4E011970C9B8884C09F82 + xmp.did:FD4C1BDB6F6BE0119746BE45AD0E721F + xmp.did:FD7F11740720681182FE98EF7F18BF1D + xmp.did:FD7F117407206811860F88162D13F813 + xmp.did:FD7F1174072068118C14E6F64F9DD046 + xmp.did:FD7F1174072068118DBBE3913583D1DF + xmp.did:FD7F1174072068118F62C9CA72884EE7 + xmp.did:FD7F11740720681197A5B61A93B4BE54 + xmp.did:FD7F117407206811A767D5D5282B8115 + xmp.did:FD7F117407206811A7BAFEB09FF99E28 + xmp.did:FD7F117407206811BF24C98FA878C053 + xmp.did:FD8128D861F011E09CB3C7B148487B43 + xmp.did:FD889C3226CEDE11AC1FBF9D231E361F + xmp.did:FD8E314E2469E0119292AD055BFAFED8 + xmp.did:FD97F6DDD0FCE011AFE1E029CA081DF4 + xmp.did:FDACD264D365DF118102E6D513DA68F3 + xmp.did:FDAD1FA9EB1CDF11B933FC2C1A4C2DBC + xmp.did:FDC863962B62E011AFFC853556B185BE + xmp.did:FDD8D25BF171E011988FD756EFFA5742 + xmp.did:FDF6F89DF956E011921BE2DE87A39B49 + xmp.did:FDFD970A1E45E111B18BD39D41820255 + xmp.did:FE5A6FD4E011E111B986CD3EEB724A95 + xmp.did:FE7F1174072068118083E4FF021AA64B + xmp.did:FE7F117407206811822ADA67FA3E7CF7 + xmp.did:FE7F1174072068118F62DD804FF26847 + xmp.did:FE7F1174072068119109FEAFD0139520 + xmp.did:FE7F11740720681192B09ADC9C682AFF + xmp.did:FE7F117407206811A961E68EEDC136C8 + xmp.did:FE7F117407206811AE53CCA310712FD6 + xmp.did:FE8F876C7E2168118F62E601B48A9F82 + xmp.did:FEAB6C88C750E011860CEAEA250707F5 + xmp.did:FEC0F676BB14E011B6D68953E06DD16B + xmp.did:FEC52D397663DF11B26194DD13427F8B + xmp.did:FECCEDBCCF37E01183B3EE3B60DE3CCF + xmp.did:FEEAE5F4FF8FE1118E1C848D719FF97B + xmp.did:FF2679C15084DF119C2CE467E1BF91CD + xmp.did:FF31A68E5BE4E011970C9B8884C09F82 + xmp.did:FF3550F002AD11E18740F64E75AD4D2A + xmp.did:FF3819F6172068118F62D63BC9AEC7D1 + xmp.did:FF4279974D53E011B4ADA05F9FBFB5F3 + xmp.did:FF431D5D531CE0118516B2A88CCE0B19 + xmp.did:FF57693A018EDF11BEBB835A3A1D3CAE + xmp.did:FF7F117407206811871FDDA91FB9E95E + xmp.did:FF7F11740720681188C69570BE93D174 + xmp.did:FF7F1174072068118C14F3F57EB97687 + xmp.did:FF7F1174072068118DBB8730C96C145D + xmp.did:FF7F11740720681196DFCF8F035C9835 + xmp.did:FF7F11740720681197A5B0F1D887A626 + xmp.did:FF7F117407206811BDC5D95C6536C14A + xmp.did:FF9D5EE8E87CE01185D4A044C68EEC55 + xmp.did:FF9E7FDFB10CE111931CA9DBD6146BEF + xmp.did:FFAB149C9E89E211AFFCD6098C4EFECC + xmp.did:FFAC9405AFF0E011BC9C9C44095B3246 + xmp.did:FFAE73026E3CDF11878FDC06CAB67C45 + xmp.did:FFC58F107FE811DF9A7387F7EAEC8507 + xmp.did:FFDC9F14122068118C149D08F70A161F + xmp.did:FFF779E831C2E31194C9E7F062264167 + xmp.did:a9b9d091-4228-4eb9-844b-76db8febb99a + xmp.did:ab4003c2-e369-e943-aec9-21847440b775 + xmp.did:ad6ba0da-f7d0-404c-8d0b-80d686d7bc86 + xmp.did:af169f47-fbfa-e740-90df-bf94ff5bd99a + xmp.did:be5c165a-aaed-c641-8283-49cbd9f15153 + xmp.did:bf4d0e2d-4dc5-7c49-9ac6-18183b4b4d15 + xmp.did:c016a4ea-08d1-0942-836e-d7d81b250ca7 + xmp.did:c26c5701-e1f2-954b-bc0f-ead52aaf2967 + xmp.did:c5be6485-7ae0-e640-ba2b-51cd90e76f02 + xmp.did:c6672f0d-086f-d646-96bf-e2126da05e47 + xmp.did:cf43c2b2-3c05-2442-b0d4-ba0662642db3 + xmp.did:d268493d-5853-444f-b788-e6c9f04d5a80 + xmp.did:d41b637d-c41a-a240-95fc-c3361e4d8b35 + xmp.did:d54343a6-b5c9-7e49-b43e-3f313b816966 + xmp.did:daca9bc5-59ab-6347-89cb-cd47c48d0942 + xmp.did:dd8fea4c-8c69-264f-9eea-388b86a12170 + xmp.did:e6140935-2b5d-3342-9252-92070acecfd0 + xmp.did:eb1fd61d-55a6-1841-8f20-c3c448d6f7e5 + xmp.did:ebc3baca-1747-a246-91ce-17da78ac0eaf + xmp.did:ede4304e-5d93-5e41-88a8-e9d41efa718d + xmp.did:f49cc451-c8e8-b149-a6b0-5ff2a1090d29 + xmp.did:f5a218f2-2661-134e-add9-a239db39d9c5 + xmp.did:f6d87a4d-1ac4-2841-84a7-3e97e80f39fa + xmp.did:fac8f1ba-6efe-b54a-8732-820da7bec3a5 + xmp.did:fad8f815-5d0b-43fd-a4ff-4b8dd54c960a + xmp.did:fbc4bcb1-c72d-0649-a8f6-7ffb39046e3d + + + + + + +endstream +endobj +98 0 obj +<>stream +8;ZD/XchEm&7-WG$H]*!%nXi@E&j)oKi,$!&(1ej:hPY"?7M2dU;I/*K'qrHXZt!c +gXs5=^tia9mHX/h[ot3fip2d]T>-#!W@X)*G5hS.!YiX?oAfh6B@L'9[Nl^\'M86U +!I6S)@"^#rO=CX5F4hLB9'$=[QHn4t(t!q\>-T>Z_%#^>h9Y8ccLrQ=,*]g\p%G/. +bp8t33R&6#N@eiJ&3mE\=HejEg+]W[RfKdhT/_tiKcK?c2jhIu%1Ca/TGI<;%J=V^L^iB`>QGr2B(h%/KP*%P7S2I@Nn)j( +<\Xn"P]\3'NgoEA"ZK,j,9^na-Vj0(?rQOV:30R2fa9>8K?%!:DMcbfg8iJu!"]fK +X?3>Eu4p5QsGq( +NS0u@am9*fGIm9)IdGE.DX&@Vk&=B(<7<[qeS]f1+`cg.ZQhGXbSmZJ#qHqB82V'8I% +Ob6WA.&.K!WnS]1BTK#6*=$4j=Yrf>b#5i.m\XG^Ai;@pJRZ%;M&DQM*DEtq?35o1 +Og:g2.#4&+pGEdV/ +EE;:A#k;>r.8*\G+:'Z%(>tp#9c'!'`gd;4CnNEFbPe"CPV^1m"8*b^e+"=rf,(U4 +m*4"lr'KgrX4"H4=)6UsS^Y4368:<2f<>ZN-_0bU[b!idnok)+T\Pk~> +endstream +endobj +99 0 obj +<>/PageWidthList<>>>>>/Resources 110 0 R/Rotate 0/StructParents 16/Tabs/S/Thumb 113 0 R/TrimBox[0 0 1920 1080]/Type/Page>> +endobj +100 0 obj +[101 0 R 103 0 R 105 0 R 107 0 R] +endobj +101 0 obj +<>/Border[0 0 0]/Contents<6B6C6161732E706F7373656C744065696E6D616E6E636F6D626F2E6465>/H/N/Rect[280 414.4 989.841 351.35]/StructParent 17/Subtype/Link/Type/Annot>> +endobj +102 0 obj +<> +endobj +103 0 obj +<>/Border[0 0 0]/Contents<7777772E65696E6D616E6E636F6D626F2E6465>/H/N/Rect[280 354.4 792.546 291.35]/StructParent 18/Subtype/Link/Type/Annot>> +endobj +104 0 obj +<> +endobj +105 0 obj +<>/Border[0 0 0]/Contents<4065696E6D616E6E636F6D626F>/H/N/Rect[280 294.4 653.246 231.35]/StructParent 19/Subtype/Link/Type/Annot>> +endobj +106 0 obj +<> +endobj +107 0 obj +<>/Border[0 0 0]/Contents<6C696E6B6564696E2E636F6D2F696E2F65696E6D616E6E636F6D626F>/H/N/Rect[280 234.4 956.143 171.35]/StructParent 20/Subtype/Link/Type/Annot>> +endobj +108 0 obj +<> +endobj +109 0 obj +<>stream +x\ɎGv}EzWe<EJ--[ Bn4JGZ*,B[9F5ݰ[7"pW7o~>77'o_N>{~quvsq}uͷ7ë_w'n ϯv'_w'f鳝w3G[K(ɻ2}sWglW֌0|wv5cͱGgc0yjịOWó$ttĎp ןj 7ǻ/z5f:_ 8];}4K,mK楀-_vdpϓRcR$صscAL #XbhԻ PHJS,+dn9뎺#jG1iq-QW`ؿf}1spe4dSr@@7qɉ&{óݿ5?/$3 6xRXҚD=xX]T  lgDmDـ0;.aAU@N4N=e+*e94A> &h<v˲#yXf3JC#9zOMkBlpj&6M@#H)]~6(e&~gQ *U^ExZM)8Vٴ~v_F[}qIXq*y]h)G.USUBN31zLA.heRobV% @ ^O? ejxN"`a)#OGU{MrVys׋y[:@l@-p YHlMrn30 D49~„]KJT.",/GޅIyp~3n,dU. 8[Bhsc9wEq.A;<hAcS;fm8Kr='7Ccsx#̌am+ x VCLI 9\N*Nߙ2䜚O&LyYXh,uŚ19b]V'l&eQB&D|!68n c )c賈:^ @^ +m\@:YWn`f:+L7%m56H,_DiMr(Û{S.,?'X `FX[i9栿Jˍۅ:c, P ӝxKt5Sq?A093<ā>57mANb&0Vv FHpTC<%BQ]"Ƒ"JT+3q2Gt-cp"nI2Dx gMmI1a$lg9u9Fue*~*B_(S/>gQ7wߤ5D-OvPCP`+!zTG[) -4 1]f&Ya] pZX|qDD('95'3C0D8P\1#4A홼R*!@!c:bOAI KtK.( r(vᒆX4 "SA: FX!(Ĩxh9=NcˮD"@Dbk)NB.E2dIf4ͨD,!ZGΩf:Y +S$R1\3Ya/`#.y^H+& SL&Z4+ޠvTF$aLy2BY 3Vlں4 =φ9&HCDN`)bPy#yhGoP$ HxrV vݾ6D5Kج h`xtLE+BHF%jLFo[LZnBU45pÉ?uF빽&[㝆L5(8Ey  %K<uͺj[=Q5>8mnUHH}: R45Ĩic=bol$ s:Jб#'dxG)SjU͒I)ؤ9]d`12Gjjg/N $W ŧ8LAcD}΋V +òc@Jji+$mDJiʥ8|XEL,bdIh<~Gw??K'4SIt?㻟u<9*ծPnWnteH䙳Dx<_MYg"&J l[,gZ@ RiB.Xuza\D@-{M>u?moMڳzĝ~Jq(xۈimeMܱVgR! +fE{CXRVfywsߦSnD*~C d~NM,ʆ@}4"p[fǶ`E攸 ޙ/Gl@MY?~{֓EFj!󼇗yӖ!kVW{!+{^azvVRW31X`ӺOҧ>CiO;ՇZ6?ا͵k{iƮO;~FmkѦ[-Z--ڹ4'Ѣu֢]6oZޡYZuhE-{:@p09Up_Tۃ,:F@UWRԪQ1%pH~zȓ%0[{'1R|\Ⱥ9ZW2¶IF/ !x;8QۼzNpt^ +Tt솎 +ݓړkt%QCO0[ ELWr }ו:zJOcU>ݜ1$vsycUS w42=q'XUVMYmc(]\|5p+ΉC$lGmdd},ulj/}r&ew3NKخvO21l,k laeB`/i[y5FMYwSx]*nOS J_WoU@urU ޯ޵(s+*+'+OARfn+D܎ޅb \A~U9]:%TXMFUIayqւTҲ'S duvss.z;gXYu(k-htdEx&H,,)iP}V+&#tl_nyqA~ޱUU*ufQ}'xv'+ZfRk݌2onӗv؎z@Z\x1 +[}.} غ]48'xnW>:s(s +m?=FӾtLŋf@W3QJ$ %·,i8Lrȗ+ܽ22C7,@/?{n4cq +ٔu3IZ>HI92-MI;ʶл[[CmEm~q:L{K1ɪtX #V&%dI$άF.f1]|~Zj@?_CH <.h|ٱ3Gg#qO~Wq/İCu#~ 7u*~ +~v~c%tcw|,ypKe_)1 n" 3]E_x6=GԻL;P|=|{m8ԛ[U54t*i|H1;̩NI[P KjMfxyvzߟ_Gppys Omj~ێJz>z~t9Io,6g&K1tvM:ߝ]}?=Gor{W( 6J9+䛵 b>z;0 k"߼JUWJ>*yB1fncߜdM{ZZLoW/ή_|{ͥɞe{{EH%mM+woӹؖӋ+Q#x'UBGW'Ǿ;J*, +endstream +endobj +110 0 obj +<>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> +endobj +111 0 obj +<> +endobj +112 0 obj +<>stream + + + + + application/pdf + + + PDFA Logo 2018 Print + + + 2018-09-26T15:46:17+02:00 + 2018-09-26T15:46:17+02:00 + 2018-09-26T15:46:17+02:00 + Adobe Illustrator CS6 (Macintosh) + uuid:a264ed8f-8b0b-324e-a007-84e968484cc3 + xmp.did:02801174072068118083968AFD8C127C + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + 1 + + uuid:3ffc5838-4114-fc4d-bede-52091bd12227 + xmp.did:F87F117407206811822AA6FB8002C0A5 + uuid:5D20892493BFDB11914A8590D31508C8 + 1 + proof:pdf + + + + + saved + xmp.iid:F77F117407206811822AA6FB8002C0A5 + 2018-09-26T13:01:29+02:00 + Adobe Illustrator CS6 (Macintosh) + / + + + saved + xmp.iid:02801174072068118083968AFD8C127C + 2018-09-26T15:46:12+02:00 + Adobe Illustrator CS6 (Macintosh) + / + + + + Print + Document + False + False + 1 + + 800.000000 + 500.000000 + Pixels + + + + Cyan + Magenta + Yellow + Black + + + + + + Standard-Farbfeldgruppe + 0 + + + + Adobe PDF library 10.01 + False + PDF/X-4 + PDF/X-4 + + + + +endstream +endobj +113 0 obj +<>stream +8;Z]"9le,o%#&hqGaVPa_Qm6WFG-aZWgd=ipX"%t0NPt9:'^*q1C]D]k0O#r!Xg7D +s)`\hU*1j7a58L^U(\-+,Q@T22H^`/:>@6hq)?`AcTm[O#?W6=R\9b?iERJ]HW6SV +=ED%^78`$Xmb)i`%97ln"rcroEM>@gR[3R#%U-T4k1C8M.,u7sEa(@ic"06R/O7E% +D/P-15_\Ml8V2*@logn%H2&uD#f!&MF/W+A(dTXn8cVa0KUQe7YI_YoHYHMQ)MD7iR)GK9pXLOeR:/!'&JMgA~> +endstream +endobj +114 0 obj +<>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> +endobj +115 0 obj +<> +endobj +116 0 obj +<>stream + + + + + application/pdf + + + PDFA Logo 2018 Print + + + 2018-09-26T15:46:17+02:00 + 2018-09-26T15:46:17+02:00 + 2018-09-26T15:46:17+02:00 + Adobe Illustrator CS6 (Macintosh) + uuid:a264ed8f-8b0b-324e-a007-84e968484cc3 + xmp.did:02801174072068118083968AFD8C127C + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + 1 + + uuid:3ffc5838-4114-fc4d-bede-52091bd12227 + xmp.did:F87F117407206811822AA6FB8002C0A5 + uuid:5D20892493BFDB11914A8590D31508C8 + 1 + proof:pdf + + + + + saved + xmp.iid:F77F117407206811822AA6FB8002C0A5 + 2018-09-26T13:01:29+02:00 + Adobe Illustrator CS6 (Macintosh) + / + + + saved + xmp.iid:02801174072068118083968AFD8C127C + 2018-09-26T15:46:12+02:00 + Adobe Illustrator CS6 (Macintosh) + / + + + + Print + Document + False + False + 1 + + 800.000000 + 500.000000 + Pixels + + + + Cyan + Magenta + Yellow + Black + + + + + + Standard-Farbfeldgruppe + 0 + + + + Adobe PDF library 10.01 + False + PDF/X-4 + PDF/X-4 + + + + +endstream +endobj +117 0 obj +<>stream +8;Z\7_0(Aa%+RK%Qr=dBZ)],gTdOjK)EhXp7MNPh_':#L$4Uidcsn>qG1=;u)WHrCE7%Ts"_cs:r].cA +hE4Dh=&@,GZEAh_<`OQFeHti$FA$A'SIc4D4i,'M4,SAMSMC;XJ@a.kqJ*c6bl?J5 +`RN,s21$(aVmh8U*=j<=A0j+Z\ZU_oMG"G$DpBqB7Y1me@nfG((Xc'Zk +endstream +endobj +118 0 obj +<> +endobj +119 0 obj +<> +endobj +120 0 obj +<> +endobj +121 0 obj +<> +endobj +122 0 obj +<> +endobj +123 0 obj +<> +endobj +124 0 obj +<> +endobj +125 0 obj +<> +endobj +126 0 obj +<> +endobj +127 0 obj +<129 0 R<3737313741414433303931424342413834344542434541323143383146343437>261 0 R<4331364237374642424633374231453238324242444436363746443730334532>177 0 R]>>/K 289 0 R/ParentTree 305 0 R/ParentTreeNextKey 21/RoleMap 314 0 R/Type/StructTreeRoot>> +endobj +128 0 obj +<>/A11<>/A12<>/A6<>/Pa10<>/Pa5<>/Pa6<>/Pa7<>/Pa8<>>> +endobj +129 0 obj +<> +endobj +130 0 obj +<> +endobj +131 0 obj +<>132 0 R]/P 130 0 R/S/Link>> +endobj +132 0 obj +<> +endobj +133 0 obj +<> +endobj +134 0 obj +<> +endobj +135 0 obj +<> +endobj +136 0 obj +<> +endobj +137 0 obj +<> +endobj +138 0 obj +<> +endobj +139 0 obj +<> +endobj +140 0 obj +<> +endobj +141 0 obj +<> +endobj +142 0 obj +<> +endobj +143 0 obj +<> +endobj +144 0 obj +<> +endobj +145 0 obj +<> +endobj +146 0 obj +<> +endobj +147 0 obj +<> +endobj +148 0 obj +<> +endobj +149 0 obj +<> +endobj +150 0 obj +<> +endobj +151 0 obj +<> +endobj +152 0 obj +<> +endobj +153 0 obj +<> +endobj +154 0 obj +<> +endobj +155 0 obj +<> +endobj +156 0 obj +<> +endobj +157 0 obj +<>13]/P 156 0 R/Pg 36 0 R/S/Link>> +endobj +158 0 obj +<> +endobj +159 0 obj +<> +endobj +160 0 obj +<> +endobj +161 0 obj +<> +endobj +162 0 obj +<>15]/P 161 0 R/Pg 36 0 R/S/Link>> +endobj +163 0 obj +<> +endobj +164 0 obj +<> +endobj +165 0 obj +<> +endobj +166 0 obj +<> +endobj +167 0 obj +<>17]/P 166 0 R/Pg 36 0 R/S/Link>> +endobj +168 0 obj +<> +endobj +169 0 obj +<> +endobj +170 0 obj +<> +endobj +171 0 obj +<> +endobj +172 0 obj +<>19]/P 171 0 R/Pg 36 0 R/S/Link>> +endobj +173 0 obj +<> +endobj +174 0 obj +<> +endobj +175 0 obj +<> +endobj +176 0 obj +<>/K 21/P 175 0 R/Pg 6 0 R/S/Span>> +endobj +177 0 obj +<> +endobj +178 0 obj +<> +endobj +179 0 obj +<>180 0 R]/P 178 0 R/S/Link>> +endobj +180 0 obj +<> +endobj +181 0 obj +<> +endobj +182 0 obj +<> +endobj +183 0 obj +<> +endobj +184 0 obj +<> +endobj +185 0 obj +<> +endobj +186 0 obj +<> +endobj +187 0 obj +<> +endobj +188 0 obj +<> +endobj +189 0 obj +<> +endobj +190 0 obj +<> +endobj +191 0 obj +<> +endobj +192 0 obj +<> +endobj +193 0 obj +<> +endobj +194 0 obj +<> +endobj +195 0 obj +<> +endobj +196 0 obj +<> +endobj +197 0 obj +<> +endobj +198 0 obj +<> +endobj +199 0 obj +<> +endobj +200 0 obj +<> +endobj +201 0 obj +<> +endobj +202 0 obj +<> +endobj +203 0 obj +<> +endobj +204 0 obj +<> +endobj +205 0 obj +<> +endobj +206 0 obj +<> +endobj +207 0 obj +<> +endobj +208 0 obj +<> +endobj +209 0 obj +<> +endobj +210 0 obj +<> +endobj +211 0 obj +<> +endobj +212 0 obj +<> +endobj +213 0 obj +<> +endobj +214 0 obj +<> +endobj +215 0 obj +<> +endobj +216 0 obj +<> +endobj +217 0 obj +<> +endobj +218 0 obj +<> +endobj +219 0 obj +<> +endobj +220 0 obj +<> +endobj +221 0 obj +<> +endobj +222 0 obj +<> +endobj +223 0 obj +<> +endobj +224 0 obj +<> +endobj +225 0 obj +<> +endobj +226 0 obj +<> +endobj +227 0 obj +<> +endobj +228 0 obj +<> +endobj +229 0 obj +<> +endobj +230 0 obj +<> +endobj +231 0 obj +<> +endobj +232 0 obj +<> +endobj +233 0 obj +<> +endobj +234 0 obj +<> +endobj +235 0 obj +<> +endobj +236 0 obj +<> +endobj +237 0 obj +<> +endobj +238 0 obj +<> +endobj +239 0 obj +<> +endobj +240 0 obj +<> +endobj +241 0 obj +<> +endobj +242 0 obj +<> +endobj +243 0 obj +<> +endobj +244 0 obj +<> +endobj +245 0 obj +<> +endobj +246 0 obj +<> +endobj +247 0 obj +<> +endobj +248 0 obj +<> +endobj +249 0 obj +<> +endobj +250 0 obj +<> +endobj +251 0 obj +<> +endobj +252 0 obj +<> +endobj +253 0 obj +<> +endobj +254 0 obj +<> +endobj +255 0 obj +<> +endobj +256 0 obj +<> +endobj +257 0 obj +<>258 0 R]/P 256 0 R/S/Link>> +endobj +258 0 obj +<> +endobj +259 0 obj +<> +endobj +260 0 obj +<> +endobj +261 0 obj +<> +endobj +262 0 obj +<> +endobj +263 0 obj +<>264 0 R]/P 262 0 R/S/Link>> +endobj +264 0 obj +<> +endobj +265 0 obj +<> +endobj +266 0 obj +<> +endobj +267 0 obj +<> +endobj +268 0 obj +<> +endobj +269 0 obj +<> +endobj +270 0 obj +<>/Alt(cover book Barrierefreie PDF-Dokuemnte erstellen )/K 96/P 149 0 R/Pg 82 0 R/S/Figure>> +endobj +271 0 obj +<> +endobj +272 0 obj +<>/K 273 0 R/P 271 0 R/S/P-Quote>> +endobj +273 0 obj +<>/K 97/P 272 0 R/Pg 99 0 R/S/Span>> +endobj +274 0 obj +<> +endobj +275 0 obj +<>/K 98/P 274 0 R/Pg 99 0 R/S/Span>> +endobj +276 0 obj +<>/K 99/P 271 0 R/Pg 99 0 R/S/H1-GiT>> +endobj +277 0 obj +<> +endobj +278 0 obj +<>279 0 R]/P 277 0 R/S/Link>> +endobj +279 0 obj +<> +endobj +280 0 obj +<> +endobj +281 0 obj +<>282 0 R]/P 280 0 R/S/Link>> +endobj +282 0 obj +<> +endobj +283 0 obj +<> +endobj +284 0 obj +<>285 0 R]/P 283 0 R/S/Link>> +endobj +285 0 obj +<> +endobj +286 0 obj +<> +endobj +287 0 obj +<>288 0 R]/P 286 0 R/S/Link>> +endobj +288 0 obj +<> +endobj +289 0 obj +<> +endobj +290 0 obj +<> +endobj +291 0 obj +<> +endobj +292 0 obj +<>/K 0/P 291 0 R/Pg 12 0 R/S/Frontpage:P-TitleHeader>> +endobj +293 0 obj +<> +endobj +294 0 obj +<>/K 295 0 R/P 293 0 R/S/Title/T()>> +endobj +295 0 obj +<>/K 4/P 294 0 R/Pg 12 0 R/S/Span>> +endobj +296 0 obj +<>/K[5 297 0 R 7 298 0 R 9]/P 293 0 R/Pg 12 0 R/S/Frontpage:P-TitleSubline>> +endobj +297 0 obj +<> +endobj +298 0 obj +<> +endobj +299 0 obj +<>/K 300 0 R/P 293 0 R/S/Frontpage:P-TitleAuthor>> +endobj +300 0 obj +<>/K 10/P 299 0 R/Pg 12 0 R/S/Span>> +endobj +301 0 obj +<>/Alt(Logo PDF Association)/K 1/P 290 0 R/Pg 12 0 R/S/Figure>> +endobj +302 0 obj +<> +endobj +303 0 obj +<>/K[2 304 0 R]/P 302 0 R/Pg 12 0 R/S/Frontpage:P-TitleFooter>> +endobj +304 0 obj +<>3]/P 303 0 R/Pg 12 0 R/S/Link>> +endobj +305 0 obj +<> +endobj +306 0 obj +[292 0 R 301 0 R 303 0 R 304 0 R 295 0 R 296 0 R 297 0 R 296 0 R 298 0 R 296 0 R 300 0 R] +endobj +307 0 obj +[null null null null null null null null null null null 151 0 R 155 0 R 157 0 R 160 0 R 162 0 R 165 0 R 167 0 R 170 0 R 172 0 R] +endobj +308 0 obj +[null null null null null null null null null null null null null null null null null null null null 174 0 R 176 0 R 185 0 R 184 0 R 186 0 R 186 0 R 186 0 R 186 0 R 190 0 R 189 0 R 191 0 R 192 0 R 191 0 R 196 0 R 195 0 R 197 0 R 198 0 R 178 0 R 180 0 R] +endobj +309 0 obj +[null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null 200 0 R 205 0 R 204 0 R 206 0 R 210 0 R 209 0 R 211 0 R 215 0 R 214 0 R 216 0 R 217 0 R 222 0 R 221 0 R 223 0 R 227 0 R 226 0 R 228 0 R] +endobj +310 0 obj +[null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null 230 0 R 235 0 R 234 0 R 236 0 R 240 0 R 239 0 R 241 0 R 242 0 R 241 0 R 241 0 R 241 0 R 241 0 R 243 0 R] +endobj +311 0 obj +[null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null 147 0 R 144 0 R 143 0 R 145 0 R 139 0 R 138 0 R 133 0 R 135 0 R 133 0 R 148 0 R 130 0 R 132 0 R] +endobj +312 0 obj +[null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null 245 0 R 250 0 R 249 0 R 251 0 R 255 0 R 254 0 R 256 0 R 258 0 R 260 0 R 256 0 R 268 0 R 267 0 R 269 0 R 262 0 R 264 0 R 270 0 R] +endobj +313 0 obj +[null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null 273 0 R 275 0 R 276 0 R 279 0 R 282 0 R 285 0 R 288 0 R] +endobj +314 0 obj +<> +endobj +xref +0 315 +0000000000 65535 f +0000000016 00000 n +0000000296 00000 n +0000000508 00000 n +0000011053 00000 n +0000011085 00000 n +0000011408 00000 n +0000012055 00000 n +0000012078 00000 n +0000012337 00000 n +0000012431 00000 n +0000018306 00000 n +0000018407 00000 n +0000019254 00000 n +0000019279 00000 n +0000019465 00000 n +0000019530 00000 n +0000024456 00000 n +0000024916 00000 n +0000025357 00000 n +0000029227 00000 n +0000029754 00000 n +0000030234 00000 n +0000030609 00000 n +0000033121 00000 n +0000033556 00000 n +0000034192 00000 n +0000034301 00000 n +0000034892 00000 n +0000040248 00000 n +0000040893 00000 n +0000040928 00000 n +0000043575 00000 n +0000048400 00000 n +0000048932 00000 n +0000048980 00000 n +0000049492 00000 n +0000050287 00000 n +0000050333 00000 n +0000050665 00000 n +0000050757 00000 n +0000050961 00000 n +0000051053 00000 n +0000051249 00000 n +0000051341 00000 n +0000051567 00000 n +0000051659 00000 n +0000057198 00000 n +0000057307 00000 n +0000057414 00000 n +0000057451 00000 n +0000062276 00000 n +0000062771 00000 n +0000063404 00000 n +0000069033 00000 n +0000069218 00000 n +0000069392 00000 n +0000069480 00000 n +0000069776 00000 n +0000070220 00000 n +0000070524 00000 n +0000070561 00000 n +0000075386 00000 n +0000076005 00000 n +0000076639 00000 n +0000082124 00000 n +0000082321 00000 n +0000082747 00000 n +0000083094 00000 n +0000085093 00000 n +0000085503 00000 n +0000085540 00000 n +0000090365 00000 n +0000090882 00000 n +0000091530 00000 n +0000091555 00000 n +0000091831 00000 n +0000091933 00000 n +0000097609 00000 n +0000097806 00000 n +0000097843 00000 n +0000102668 00000 n +0000103212 00000 n +0000103873 00000 n +0000103905 00000 n +0000104082 00000 n +0000104147 00000 n +0000104445 00000 n +0000104558 00000 n +0000110472 00000 n +0000110529 00000 n +0000110755 00000 n +0000110862 00000 n +0000110899 00000 n +0000115724 00000 n +0000277091 00000 n +0000762544 00000 n +0000780185 00000 n +0001265638 00000 n +0001266627 00000 n +0001267279 00000 n +0001267330 00000 n +0001267547 00000 n +0001267629 00000 n +0001267826 00000 n +0001267895 00000 n +0001268080 00000 n +0001268158 00000 n +0001268373 00000 n +0001268460 00000 n +0001273935 00000 n +0001274110 00000 n +0001274149 00000 n +0001278975 00000 n +0001279552 00000 n +0001279751 00000 n +0001279790 00000 n +0001284616 00000 n +0001285261 00000 n +0001285332 00000 n +0001285488 00000 n +0001285581 00000 n +0001285712 00000 n +0001285805 00000 n +0001285928 00000 n +0001286021 00000 n +0001286161 00000 n +0001286254 00000 n +0001286617 00000 n +0001287096 00000 n +0001287198 00000 n +0001287271 00000 n +0001287364 00000 n +0001287424 00000 n +0001287499 00000 n +0001287553 00000 n +0001287613 00000 n +0001287675 00000 n +0001287732 00000 n +0001287791 00000 n +0001287850 00000 n +0001287905 00000 n +0001287967 00000 n +0001288024 00000 n +0001288083 00000 n +0001288142 00000 n +0001288197 00000 n +0001288264 00000 n +0001288322 00000 n +0001288387 00000 n +0001288516 00000 n +0001288575 00000 n +0001288633 00000 n +0001288704 00000 n +0001288766 00000 n +0001288814 00000 n +0001288873 00000 n +0001288923 00000 n +0001289021 00000 n +0001289083 00000 n +0001289131 00000 n +0001289190 00000 n +0001289240 00000 n +0001289338 00000 n +0001289400 00000 n +0001289448 00000 n +0001289507 00000 n +0001289557 00000 n +0001289655 00000 n +0001289717 00000 n +0001289765 00000 n +0001289824 00000 n +0001289874 00000 n +0001289972 00000 n +0001290039 00000 n +0001290113 00000 n +0001290167 00000 n +0001290269 00000 n +0001290371 00000 n +0001290443 00000 n +0001290534 00000 n +0001290593 00000 n +0001290656 00000 n +0001290718 00000 n +0001290775 00000 n +0001290833 00000 n +0001290891 00000 n +0001290955 00000 n +0001291017 00000 n +0001291074 00000 n +0001291132 00000 n +0001291190 00000 n +0001291256 00000 n +0001291327 00000 n +0001291389 00000 n +0001291446 00000 n +0001291504 00000 n +0001291562 00000 n +0001291616 00000 n +0001291680 00000 n +0001291755 00000 n +0001291813 00000 n +0001291876 00000 n +0001291938 00000 n +0001291995 00000 n +0001292054 00000 n +0001292113 00000 n +0001292168 00000 n +0001292230 00000 n +0001292287 00000 n +0001292346 00000 n +0001292405 00000 n +0001292460 00000 n +0001292522 00000 n +0001292579 00000 n +0001292638 00000 n +0001292697 00000 n +0001292752 00000 n +0001292810 00000 n +0001292865 00000 n +0001292927 00000 n +0001292984 00000 n +0001293043 00000 n +0001293102 00000 n +0001293157 00000 n +0001293219 00000 n +0001293276 00000 n +0001293335 00000 n +0001293394 00000 n +0001293449 00000 n +0001293516 00000 n +0001293574 00000 n +0001293629 00000 n +0001293691 00000 n +0001293748 00000 n +0001293807 00000 n +0001293866 00000 n +0001293921 00000 n +0001293983 00000 n +0001294040 00000 n +0001294099 00000 n +0001294158 00000 n +0001294234 00000 n +0001294306 00000 n +0001294371 00000 n +0001294430 00000 n +0001294488 00000 n +0001294551 00000 n +0001294613 00000 n +0001294670 00000 n +0001294729 00000 n +0001294788 00000 n +0001294843 00000 n +0001294905 00000 n +0001294962 00000 n +0001295021 00000 n +0001295080 00000 n +0001295163 00000 n +0001295256 00000 n +0001295316 00000 n +0001295370 00000 n +0001295430 00000 n +0001295532 00000 n +0001295605 00000 n +0001295698 00000 n +0001295758 00000 n +0001295820 00000 n +0001295877 00000 n +0001295936 00000 n +0001295995 00000 n +0001296050 00000 n +0001296279 00000 n +0001296378 00000 n +0001296459 00000 n +0001296543 00000 n +0001296601 00000 n +0001296684 00000 n +0001296785 00000 n +0001296843 00000 n +0001296937 00000 n +0001296998 00000 n +0001297056 00000 n +0001297150 00000 n +0001297211 00000 n +0001297269 00000 n +0001297363 00000 n +0001297424 00000 n +0001297482 00000 n +0001297576 00000 n +0001297637 00000 n +0001297711 00000 n +0001297812 00000 n +0001297862 00000 n +0001297963 00000 n +0001298030 00000 n +0001298130 00000 n +0001298213 00000 n +0001298353 00000 n +0001298424 00000 n +0001298495 00000 n +0001298609 00000 n +0001298692 00000 n +0001298864 00000 n +0001298914 00000 n +0001299024 00000 n +0001299121 00000 n +0001299370 00000 n +0001299477 00000 n +0001299623 00000 n +0001299894 00000 n +0001300244 00000 n +0001300647 00000 n +0001301107 00000 n +0001301659 00000 n +0001302219 00000 n +trailer +<]/Root 2 0 R/Size 315>> +startxref +1302429 +%%EOF diff --git a/samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-05_BookChapter-german.pdf b/samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-05_BookChapter-german.pdf new file mode 100644 index 0000000..f376bdf --- /dev/null +++ b/samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-05_BookChapter-german.pdf @@ -0,0 +1,6589 @@ +%PDF-1.4 % +1 0 obj +</Producer(Adobe PDF Library 15.0)/Title(Online-Fassung Kapitel 3: Wie kommen Sie zu einem barrierefreien PDF? Grundberlegungen)/Trapped/False>> +endobj +2 0 obj +<>>>/Lang<64652D4445>/MarkInfo<>/Metadata 3 0 R/Names 4 0 R/Outlines 266 0 R/PageMode/UseOutlines/Pages 127 0 R/StructTreeRoot 311 0 R/Type/Catalog/ViewerPreferences<>>> +endobj +3 0 obj +<>stream + + + + + application/pdf + + + Online-Fassung Kapitel 3: Wie kommen Sie zu einem barrierefreien PDF? – Grundüberlegungen + + + + + Klaas Posselt + + + 2019-04-30T20:45:52+02:00 + 2019-11-21T20:42:30+01:00 + 2019-11-21T20:42:30+01:00 + Adobe InDesign CC 13.1 (Macintosh) + uuid:8b3f4f5b-6a15-3b4c-8e37-e517da8417da + xmp.did:f6a410be-83cc-41aa-ab54-f202ee30f4e0 + xmp.id:da811c0d-6b80-424b-8f01-b95cbb6b2b5e + proof:pdf + + xmp.iid:7ad115cf-b0ef-4947-a919-cd920607385f + xmp.did:4797a9dd-1255-4031-80fb-f750c25b93e4 + xmp.did:f6a410be-83cc-41aa-ab54-f202ee30f4e0 + default + + + + + converted + from application/x-indesign to application/pdf + Adobe InDesign CC 13.1 (Macintosh) + / + 2019-04-30T20:45:52+02:00 + + + + Adobe PDF Library 15.0 + False + 1 + + + + http://ns.adobe.com/pdf/1.3/ + pdf + Adobe PDF + + + + internal + A name object indicating whether the document has been modified to include trapping information + Trapped + Text + + + + + + http://ns.adobe.com/xap/1.0/mm/ + xmpMM + XMP Media Management + + + + internal + UUID based identifier for specific incarnation of a document + InstanceID + URI + + + internal + The common identifier for all versions and renditions of a document. + OriginalDocumentID + URI + + + internal + A reference to the original document from which this one is derived. It is a minimal reference; missing components can be assumed to be unchanged. For example, a new version might only need to specify the instance ID and version number of the previous version, or a rendition might only need to specify the instance ID and rendition class of the original. + DerivedFrom + ResourceRef + + + + + + + Identifies a portion of a document. This can be a position at which the document has been changed since the most recent event history (stEvt:changed). For a resource within an xmpMM:Ingredients list, the ResourceRef uses this type to identify both the portion of the containing document that refers to the resource, and the portion of the referenced resource that is referenced. + http://ns.adobe.com/xap/1.0/sType/Part# + stPart + Part + + + + + + http://www.aiim.org/pdfua/ns/id/ + pdfuaid + PDF/UA ID Schema + + + + internal + Part of PDF/UA standard + part + Open Choice of Integer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +endstream +endobj +4 0 obj +<> +endobj +5 0 obj +<> +endobj +6 0 obj +<>/ExtGState<>/GS1<>/GS2<>>>/ColorSpace<>>>/Rotate 0/StructParents 25/Tabs/S/Thumb 265 0 R/TrimBox[0 0 595.276 841.89]/Type/Page>> +endobj +7 0 obj +<>stream +x[rc?H\G ]bp.]HɎ,[e2C$rAf/_'W\}TI6 I4>3>8z\zыH]i=_N1yaou"V&&&X4OMhq4)Hhg䓣ݬUGgu3[׷o=]WO?}z +Q@r:;?8z]$*t <^=bQ5.7j̖˺ZqTy}<lrXޣӻY7uaŴT,<1\:IlZW2*WD0 +ږ^@lmrQ]薦dJxw)|.Mm` BjBݚ`mhj_ z 7U'4Q5Vo.@<2gAFEK\^I\H(ބeݹ.&)JZ118I <'PEC-&HFI(VAqqB©79\X`+ B#Fs +8ɇ%Ž!B_jpF `0ьԅ,ku dLt йÅ_o0x+`G$UK@{89.*G5+|CL+~=NYO#SoavB^ t J\$!$ &^[˲ sqꦥ00TgGf!NA20)?rMԄ䆖HM7Zc+!!H{v$]&Ƌ<2`2. 0Wk-Opc[W1ʎ:U?yzOe{DlZ҅r]v 7VQnmxj *+,/Mf0.c۴`;hVMپ+:4; -)%X(6gGK8S-dkZKejĐ0t}.ju3 α!m TZȃ< Ff25@| pgx[Y3ܱk6>Vo]L%u{Be4\K.ΘSiB.| Pdav), +w{8Rū"ظxCr?e#'=k{i[㝷}0e Z%wa4/0:V#I2EG yC_j]0~≀&)< /Rs Fekwf TTS f( XF1\te9M-pC:քo*5NJ7xTKewMsQƅn8߻gZŤ:5𞸃S߰ګv5<%I0졺4|ahԾil/S9h٭V {Xc8hgLXv2bƭ_/AV5H{M-}vYIJ>NfL_Hv]:,ϳ1RtZհfCE!_hYLQ%"ڧ>AP.FKTr#cp0ғrm ϻQEN VׇcCvL]HBCk;,Bbծ+jMK*xқY7"-+K޷$e:Fʑ#VQ)r728>6v~_K;V'Ѳ=T4s"4*ڶNʽ~@jV"޺|k;bS؛lRGYn}2wHux%c]װoەRU[sR(WMiizc氼[Pm ĕ]Ag +&kGŚgfiUn۾;]1i7PΦ9:zᲫ+ƈ)'^W0LaSE;ܳ0V^3.9IW D1iJI>UR p5ߋޤRڪřc)*8_Hvӹؓ{{:2 DEjHO7j^ffy݋B)2vspe@{)-9m'2jLK|/$mRsnl_TEpe] +<"u-[. skEՂ͵i[\زF]źs!.@LlӬ(IHF9:i'iS yǖo(ghuDPWlƝص i2UMMS]%ŕRԏ?e0?MeٕPxcezEwG}q%Upfڟۃ L\{9[NmKHM^m*~|Bޙt+ƅ[bY/̗~=uff0(0[ˤ:j&l>Wh1^6~M8K +tΗUSx[xߔ1ӠM3Zָs\F\#V|Xi7#,h(ᳱRΩ*xB +G.-'{ɐ|l̹a?I j)@ztx7X'p+~CeGKӒ AN4$mtO ƣ8n!6YRL}!ֲGn/ñ>[ڸ̹keI}fWKKգ~_y9+[s@sgW%6S"\@GC "@=B2mgey]j-`\kw6\김(znOߕ3/HÎi9IsnyY9fl‹= +EeDڢ[MLD}*cmO6&TBhowRvQ+*/t{b=0Z$۔;&ӰζAm. vm4RlKcIdیסY9 'SK=wbܥm~(RʴCWI7io1M[ryBʈ=rYcOX5`ƞN;qw:'r[?Yygc^;q79bՇUGҷ0 +F"TDc?8g$=؇g;Z}stuAE:ѲQPWo1⽫9'u{С'_uR2X,FkH !6*a]$:2t/oWG1( uo 'Q: UH> +endobj +9 0 obj +<>/ExtGState<>/GS1<>/GS2<>>>/ColorSpace<>>>/Rotate 0/StructParents 0/Tabs/S/Thumb 83 0 R/TrimBox[0 0 595.276 841.89]/Type/Page>> +endobj +10 0 obj +[11 0 R 13 0 R 15 0 R 17 0 R 19 0 R 21 0 R 23 0 R 25 0 R 27 0 R 29 0 R 31 0 R 33 0 R 35 0 R 37 0 R 39 0 R 41 0 R 43 0 R 45 0 R 47 0 R 49 0 R 51 0 R 53 0 R 55 0 R 57 0 R] +endobj +11 0 obj +<>/Border[0 0 0]/Contents(3.1 Einleitung 2)/H/N/Rect[62.3622 546.907 481.89 532.068]/StructParent 1/Subtype/Link/Type/Annot>> +endobj +12 0 obj +<> +endobj +13 0 obj +<>/Border[0 0 0]/Contents(3.2 Konzeptioneller Ansatz 2)/H/N/Rect[62.3622 533.407 481.89 518.568]/StructParent 2/Subtype/Link/Type/Annot>> +endobj +14 0 obj +<> +endobj +15 0 obj +<>/Border[0 0 0]/Contents(3.2.1 Die Anstze im kurzen Vergleich 3)/H/N/Rect[79.3701 519.907 481.89 505.068]/StructParent 3/Subtype/Link/Type/Annot>> +endobj +16 0 obj +<> +endobj +17 0 obj +<>/Border[0 0 0]/Contents(3.2.2 Der konzeptionelle Ansatz des Buches 3)/H/N/Rect[79.3701 506.407 481.89 491.568]/StructParent 4/Subtype/Link/Type/Annot>> +endobj +18 0 obj +<> +endobj +19 0 obj +<>/Border[0 0 0]/Contents(3.3 Vorberlegungen und wichtige Rahmenkriterien bei der Erstellung \n barrierefreier Dokumente 4)/H/N/Rect[62.3622 492.907 378.64 478.068]/StructParent 5/Subtype/Link/Type/Annot>> +endobj +20 0 obj +<> +endobj +21 0 obj +<>/Border[0 0 0]/Contents(3.3 Vorberlegungen und wichtige Rahmenkriterien bei der Erstellung \n barrierefreier Dokumente 4)/H/N/Rect[79.3701 479.407 481.89 464.568]/StructParent 6/Subtype/Link/Type/Annot>> +endobj +22 0 obj +<> +endobj +23 0 obj +<>/Border[0 0 0]/Contents(3.3.1 Welche Dokumente sollen berhaupt barrierefrei werden und wie entstehen diese? 4)/H/N/Rect[79.3701 465.907 481.89 451.068]/StructParent 7/Subtype/Link/Type/Annot>> +endobj +24 0 obj +<> +endobj +25 0 obj +<>/Border[0 0 0]/Contents(3.3.2 Definition von Ablufen 5)/H/N/Rect[79.3701 452.407 481.89 437.568]/StructParent 8/Subtype/Link/Type/Annot>> +endobj +26 0 obj +<> +endobj +27 0 obj +<>/Border[0 0 0]/Contents(3.3.3 Zustndigkeiten klren: Wessen Aufgabe sind barrierefreie PDF-Dokumente? 5)/H/N/Rect[79.3701 438.907 481.89 424.068]/StructParent 9/Subtype/Link/Type/Annot>> +endobj +28 0 obj +<> +endobj +29 0 obj +<>/Border[0 0 0]/Contents(3.3.4 bersicht der Rahmenkriterien 7)/H/N/Rect[79.3701 425.407 481.89 410.568]/StructParent 10/Subtype/Link/Type/Annot>> +endobj +30 0 obj +<> +endobj +31 0 obj +<>/Border[0 0 0]/Contents(3.3.5 Konzeptionelle und technische Mglichkeiten 7)/H/N/Rect[79.3701 411.907 481.89 397.068]/StructParent 11/Subtype/Link/Type/Annot>> +endobj +32 0 obj +<> +endobj +33 0 obj +<>/Border[0 0 0]/Contents(3.4 Grundlegende technische Mglichkeiten zur Erstellung \n barrierefreier PDF-Dokumente 11)/H/N/Rect[62.3622 398.407 326.81 383.568]/StructParent 12/Subtype/Link/Type/Annot>> +endobj +34 0 obj +<> +endobj +35 0 obj +<>/Border[0 0 0]/Contents(3.4 Grundlegende technische Mglichkeiten zur Erstellung \n barrierefreier PDF-Dokumente 11)/H/N/Rect[79.3701 384.907 481.89 370.068]/StructParent 13/Subtype/Link/Type/Annot>> +endobj +36 0 obj +<> +endobj +37 0 obj +<>/Border[0 0 0]/Contents(3.4.1 Erstellung auf Basis von PDF-Dokumenten 11)/H/N/Rect[79.3701 371.407 481.89 356.568]/StructParent 14/Subtype/Link/Type/Annot>> +endobj +38 0 obj +<> +endobj +39 0 obj +<>/Border[0 0 0]/Contents(3.4.2 Erstellung auf Basis von Ursprungsdokumenten 14)/H/N/Rect[79.3701 357.907 481.89 343.068]/StructParent 15/Subtype/Link/Type/Annot>> +endobj +40 0 obj +<> +endobj +41 0 obj +<>/Border[0 0 0]/Contents(3.4.3 Erstellung auf Basis von gescannten Dokumenten 15)/H/N/Rect[79.3701 344.407 481.89 329.568]/StructParent 16/Subtype/Link/Type/Annot>> +endobj +42 0 obj +<> +endobj +43 0 obj +<>/Border[0 0 0]/Contents(3.5 Barrierefreiheit ein hochpolitisches Thema 17)/H/N/Rect[62.3622 330.907 481.89 316.068]/StructParent 17/Subtype/Link/Type/Annot>> +endobj +44 0 obj +<> +endobj +45 0 obj +<>/Border[0 0 0]/Contents(3.5.1 Barrierefreiheit braucht Untersttzung 17)/H/N/Rect[79.3701 317.407 481.89 302.568]/StructParent 18/Subtype/Link/Type/Annot>> +endobj +46 0 obj +<> +endobj +47 0 obj +<>/Border[0 0 0]/Contents(3.5.2 Barrierefreiheit bentigt Ressourcen 18)/H/N/Rect[79.3701 303.907 481.89 289.068]/StructParent 19/Subtype/Link/Type/Annot>> +endobj +48 0 obj +<> +endobj +49 0 obj +<>/Border[0 0 0]/Contents(3.5.3 Barrierefreiheit funktioniert durch Aufklrung und \n das Mitnehmen aller Beteiligten 18)/H/N/Rect[79.3701 290.407 334.755 275.568]/StructParent 20/Subtype/Link/Type/Annot>> +endobj +50 0 obj +<> +endobj +51 0 obj +<>/Border[0 0 0]/Contents(3.5.3 Barrierefreiheit funktioniert durch Aufklrung und \n das Mitnehmen aller Beteiligten 18)/H/N/Rect[104.882 276.907 481.89 262.068]/StructParent 21/Subtype/Link/Type/Annot>> +endobj +52 0 obj +<> +endobj +53 0 obj +<>/Border[0 0 0]/Contents(3.5.4 Barrierefreiheit muss am Leben gehalten werden 20)/H/N/Rect[79.3701 263.407 481.89 248.568]/StructParent 22/Subtype/Link/Type/Annot>> +endobj +54 0 obj +<> +endobj +55 0 obj +<>/Border[0 0 0]/Contents(3.5.5 Das ist ja gar nicht barrierefrei! Strfaktoren und Bremsen 20)/H/N/Rect[79.3701 249.907 481.89 235.068]/StructParent 23/Subtype/Link/Type/Annot>> +endobj +56 0 obj +<> +endobj +57 0 obj +<>/Border[0 0 0]/Contents(3.6 Kurzzusammenfassung des Dokumentes 21)/H/N/Rect[62.3622 236.407 481.89 221.568]/StructParent 24/Subtype/Link/Type/Annot>> +endobj +58 0 obj +<> +endobj +59 0 obj +<>/Length 3876>>stream +x\n#6rJx=? 0lvW66"%"FZZ"ly >Igp]U]optl4\=WG'Sr8"F'9\i -RMΟqѼsʉڐ?p2XMG磗cN:rד|4}/_?[gOO_<^ ]Ԁ _E&'W3fdwd!giIfrN%)rF^Oi9ʛ| ^|>zy};Aޓ9i9(<_mt̂Fbf$vXiUa1\YH8ڠ%FI=PN;lc^[p%ԛSN=j~v1y;}*3rz!iwKSI#/;ꄑF9-%ƻM6]ǀPŜ&cu47|A!xArSb=g\PXW(c~#*bΕr" Bp# #jQōo-EPJe ݼ**(e5pZ'6dSe%Pڔ ^)67(%dVV85QR2A2 4]*eI 乆ӆRX;f9SqUTQhg(k)v1+Lv)OO7Uz)KYp#,8kR:i7}ɉN_RQ8ЪT:Z]< e |S 0e\g@wONV, < +QÞge1LTmTЂ} OCNܳǮUP_imˣƀ-j3Bi[P j'=YcmGYYI,MDK\KXzK෌JfelCQ6kS({ɦ`.i|+^AЖctFQځC#WLCLyTz#$L/bL1-ȯ$|Ш!xGg/Y|ٛ\PIX#z겫s}.$Yt[` 2E;f1-d'(ԏPh8^q"]_Nu9~2?yƝ/03/HQ-!BBSaGٖo, bf.ލXK#Eobb=hd*u^s^l/Dker:}9ϞrFo4F|ꎆD5BQZIծ=@ci@rPI8o).in%` k`J0*HvW~4&Z Ҡ+Rql&^Z\f.\͟m3~y[U6D_w<|"h=ȟt&fx ;ǗwP"+C}.F +)A^.\/1. xjmdH/>-U+c!7,ɣX1]^)`#ƛhnAvc2l1IX;i g+zqUC ;&Dkc89ZJ4P3FKddm8v/rE +T֯tN a>D%G,lkU"(Mdb$ͼG[VJfpB )s֧ q{Uh9=O%ªS4,de*.Y%kL2o5uy}zTVE,֨\]`<$+VZ PI]p hT5/QiI5KV |$cU;~;o{,*!ޅ*ª"C҂k—o't^` +*@| oogXpǛW0 1 Az`%5DIa֊@iLxeﺊcCmծLg+jf=s*mmvb(|6;Kh%& "ivƌlzu(dci{P Brc0W@n^\g?1j +^A :HlvXmxMBXe06f{Z$;i4#x%5٧PZZm?(;edD2F2y 3LxShkiaNiV:TIňffU=_vCB|s|Sl.ѷ",;(ƍ-a@iX?O8@IJφԌ&W![ɴRFauCNx`Q㬝mNR-`}ﰔBMŊl%=-t$2ivŠw1]Ha:ZsDL9"]Â0A]~$Oc؊A=MKXژV&iC`-iPtjSh +ΰ]ٮ0X+ UGy" +84)mqDWuI1&)ZrUM +Q:>LTV㮷amɯ񟙿g2h2 +aS. ˸`f8Ww,x'xKq W1Ť-9߯0v{c˖uh^ } Ju +mpwX 5suWZZV>)&:ZrÍ^8q=} 3EuJ珠Yt|)x[3Uq8W0cc%;h!8 :@4-?%~"׾R(^; +97m?iZe@h cpzHN{5jjKס\뒫M7ICWO+bAZ;yde먕߀)mHѦHDi?b񇞑%ަ_0oEy$HeF*{u`}R=Zi _K :ƝhcoxeN6+|`.7NBp7DB4!d޼um}iߑ,jI# /:;M|saCvP'l]M.7ɠ +)И>l4}HCk]'L Wu>kL9Q_vf‡ܦDgQ(G]/&' +N[vNUaev[~"٬knyׯ"ng[ךh]B﹈!^7Sם̢Mh]mr~rŻP2ؒN2iEgŪiij#l?x +endstream +endobj +60 0 obj +<> +endobj +61 0 obj +<> +endobj +62 0 obj +<>stream +H PGǻ{5x͠ "$QFK㉂EExr("1Gg1nݍDl#x5 +n4y6bڝwL̯RQFR IC l?qJvjNGB4䷴qBsL?H'-=3E\DH)ӒʍDx_zbVF}=Rcjbzʓ&ɗ! Ș63*']uu~dA#aj6TJ¬Bt1!SJ Q[HQ54#٘nKeJcc0{x/ L T̬XPQnvtvm}}g jImHey,9&"N%Y dqM:m$l4'YgIv],~TPSz+$edQ Y,S*g JdA%FE&jiKp9tQ"ZĈXfL6fsXfsOg~K~BV¡D@KfjwjF{j׵*nj?hwGv_tE"T1MdbHb($<1O,ƢV`}X_{=_II(%ZQb8e?o9=ܟw 0Sx S5`0db5dB +F˃yx5oY*7&܊=k)fx.͚c71#q.aW| G$ GYp6n8p3)pyޕŻ,d,9ŵ7x/9يG̋2ƃxCx+ +^ex+Yk>ބ\>aBX=2'հ`) +>d:>x%k.X "e!P#<_xoegX x/wx/* [`+|UxM>#` Ǡb{ڲv̇b[~'d>|0{Id8 1/阂4p0Ng`,z8`X+j\+qX.<ę. 0c.r,*`0! ѠC  ma/0`tc#@A0!B BaDH)tWipSֽubҳ%c"=򎱌0^PL cR;4@Cm2)Жi3mɤ:ÚY n=OhFҼ;߹;߹o9 |o;y;xwN] O<9>>"7(8]n}i"RgdIFD*#,;2k60Z(qK%4|Ir|o^`R*઩H\)קo&46W3|PX]2͗&JkKGTf 5$$vv5{ 2l{XXYPzEK0U-*YYRܙn]eNhm7GǛHh%DCĽuXu?# jE:sL )7E}BW¤ʌ%̟Cz\.92bH֭,4%DvyJ2/wզOAɂHRY0Ar (Wb,FrʻuY7Y$1+!I8eS1٭ZO5 +;{6\kՆUlH˹-H)[cC%AI k@GɦCj=5iH'xjCT$/|ɇ6ن} o#Oc5QJS!o\05CCbm 3SKŨ֬GUNPFoFܩщgP`lL\!##[0}A@-L$'Qrjj$ޭPi@V^Jߙq.c7"N \(6OT+-sZ=X*(~t7 7aVM~ߗg򑯒 +_@ I3#z_yȞmJ6zOn;::s .*-TrW G巈(_%\/}h5G5_o𭴢"'=32:2$: 74R&xS܂U΄0/5584tfρ`\|/=S`Ύ%O6&9mͳ^GDn#lPT5jM͍}kK%+]E3.r=stSP!A汈#JXS]^ Vw]VJ- ˡ9%2{s~O/LONl/y{桝[H{Ɵm;qbl9A0oJ(D!L1~LS𪷰m-kȑo2U<:=*a"ws yʳcvLc/A +c6% :)LmY֘tO81=/cQT8ANv1= +MOgf 53OjٕP&c[{b^h u#^ק"3yPmJl\h]LaJr5{?(,( d$|ͣ.ʝ" wl~pxiD7m$ل2(ghhEpGOd=޼]+sG'7:VO݆t, w +5{ +yx'iHK`*9%)$Vj}Y7CىP^ꖆ̵5ΒC"]6'X|l5fgdUvf .XJbk#g[/)pny|( + XQofIH?,B"TI@[$5FTI E@MJl ՑRs:% B VHPHCzy2#=`D yoqڏL ls:2..xY+"Me7HWuRL;H/%~,.,RªI%&alxFHo</Eeb^%a>a$fLLeBuO'|q~C:(ƭyT-$`'_ߋO1%vIe'쁿?Xf#$Jiw<.bQB-bO$H.bHaf<K1ca'CD#"16{OqX.<{ +5G~^r_?B//'{3+}nE&X=qۤZMMzsU<"+yC5iau(G`s.&RGvpF'`8&=Ժ9OPL ʸ2DvG?{z0vMƽz25FlvRJ_ A GY:eZjW.(%D5PND+-5Dփ+g/b;Kۆ 1c>;37k?ȵ"'[ip[XY)9#/T$__JVﵼg/_pϙoZ X0K"8=k@o.?RR1`ڤtgE>r$!|hq`(ၜyb6:o3K]^n<ֶEM@~i|}\?b|&cdr0Wj4fR+MU\'ȑ`0kx֥=؇:2 ʣjzZ9j(mz/㤷/yvzM^ީVCWrk<4s,󙏟wspvx/z|s?9ҟY [paYf5;>7@|5=GhF̦ᔉ]O3Uch]f]F>i _ʞ]E +(`mDg=[yQSς9p)ԫ Uuy<Z5>Ee^56E>Ԟ${8m[zr';m/Ukai 㮓E|̐Gi=p7?Wp[6V[!_}sUE"[<֬+C~I=Bb&Va ٽ y?%:_j繪abNifF֮RAs3?jCTko:Y?2]Vs5Ŗ#qg4[juد8ΦOn?wVOfdu%5^槊O2ʦaNH'"t<&|{GL!m +kHڻ ݗւR)٠Q:pu]!O8 .%|Ab +xbsIIgA?p?ӥ+Afs@Q;NN +tAj;ȩW]M?}|sf69wbrM6:D[6Ůix3<דWvgdqJ8_łrL׹"/ Nܻ̯<[ΚV੩T(Fku@M}?._`"ռ* ӈ/?{-wkk?a-6bt㴿 _"11)sZ H.6FGJ!3p >񼔆8MH $$  %/c (0(C%)#-)8b@ؗJ$w۽H/ȝٻ>spmjb~ZLy^0L'"݆l bP'AcH^+ ]}_Ksց8Lmk$0TZמgY!`<aKAJ\^z|3R<#|ȿ##} #4{ֈ~SajIO`rwC$r#g"+[eTDPH?QbLC_J}N(/-<33`A$2F׀ ZA|uiS%~1{K(^?Y=ϩeRP|kė,8Ʈ#SgI.47]nc Ę`z-7m=4oan +r7$]-l%?o}BآqGLwDRT?" +Qġ#j,3Rv}Cn2$lym?5&vY_3u;F{!k>Et7:,yl-{bg60nAP:BʈN*ڡ<ɕ&ƏkPC oIz28CwOpFGk_TXY"ɹn| ϰK)Pj^aQo|D<*.1c A 򞔛ɋ;l\xܿ82VqĮ?ĝ"rB5 nmc~pih@%uRǹTL3ҿ.*&^=Fp`~'"`|{|v:>囘XTKZ}@j0t䰤2nÇ!I ܳ=-$OT}Eu=/Æ~3}L~>)Wc'pSoy^6֘LH{o?}/Cȝ إɽO'm"s)[R +&@PzeE}[>]z~[7ڜ4ua!{ wPGOY+&gM$n `{,>4DƗ@ 1FQ|{@c ޟ,oJP%z;rH7wV͹kgR= +bzlQ@o:1s^% ';4%tD+Kvl}y?5f$&{rgYgvX5`˙)&-eVO1V7xÛ~řk0'g +K%wשּXub9F;h0qXj5vKG .eM +M#ӬA&9 t3qt`ytC: $]Dd$SG#8'nvZ3Ph 6JWB^/aj T:|0>0},pgr&[Fk]`sg^Wi~gԃu}wm7m7]wx}htg}<}? i_ݳuq:rz$ރ,U%kVXKӷb<Cpf ކd`>8C-e~^8YUwq=JTЩCDHCÁ=Sent((."d: +]CPDKE޻-}4>9l,cs@.45_3c3miCrmhv8s9s9s9s9s9s-@ZQ)dH :iNqizJ{ikԤgԿ8 gqxu EޮR݃X Be.F +endstream +endobj +63 0 obj +<>stream +H\n@D|C 3݉,a;|$Z~i=1>wiljMvqh~2>t_kl9SeaO{n,Oe]8YUgzy6jҵ|{/ñĬ*bn7 xKނ_ɯ7rJ֖-% \-قف &`-ײE/^,---L~E/&n2EvK;dw1C^G?~=8xp1CF@GKK)j +4}@_WWWWW..<3 `9 `9(_ krO9 mڱcZyFm8&U`N +endstream +endobj +64 0 obj +<> +endobj +65 0 obj +<> +endobj +66 0 obj +<>stream +HTW߻3wFcAfPQ$@ׂ DEQQ(%g$9jv^%٬%?QFS\!=={wn73M6#a"cCYC)>15!mvq?)3T 0~!˘go{(㓒*XISvEVԄz.(cMNHMJM.e]5uDlVTY(tdV1-Uz`@O4S+d:yT ,ȳ2^K&ɯk r74f:pI)ܚ|Zw6VeiZVmj[[gz>Jloټl~`< zz0GccQpo^f/s9n4y.y|bdV[5Κje[% +km*x{/ +H t,^6̹7#'Sͪ*%F"xboOuŢ5d=0F+KpCIcZ]OيEbDۢ.jW,)z%6N"Njyryp#ܑ(plplt<5Ĵ31f(%Ɂ7XYxYzY9;;w:w;vP,B| KbwG>̫n?緘`:U6_qGj'}k{ƿQ;Vw,?̘= lDg{Qulՙ*ŞUWZXURڵV~tMsmtmfn::ڻڹu +u]AW_)cvST)._w/A-@H%ΫZg{ybw_?x sfm䵮J+Gb1jrMrVB͍5^˜mmGmնvHSV}y c[[x?_/@>G(c3XlF1_?l,2 D9MΒY2_ɩr+sd\ p&Y8W? Ip~C$ƟH%e3`&̂ Ȅg8&K8Clañ vǦp +xd<07r6n?'Pve$Sd9EfrLr/S< \9G.oqӸ==,.}ԤdZEk1Z6X\,qŞ-D+/Zz M6@`@PI ݴG`"ڊPԧ)ޥMPx R2MwE;ʧnԕ:P4NԙPODQ':΢5 E9ZCk1>DoGɦ"BOhFCy:A})WUKO!s#tV,\ +1*pbt#z &=t, +\bf7~kqzF'kB .%.e\p3nNK GjMm(@#ɇ|%Q+|{Y$&I"ULSDjCP.4&PJJ(z0JI>M>4xQo*bPLBiepF%2ZEi<Eԗ>4>y4(©;e +h!"*"X`380&F1荱c >>Plc+8[(lq1`c0&`irLdҿম+{%ғ +Kϒlɖ,=xW 6`cL06v̾` P2$mB_4I&G MB↖?> t#sswύ={l&nF<x#ktYGd= .2t<R@6BKUc(7 '(2(ǟB3?*,_B5 W߁5LJPyU>_PU!Uj:N, eƤ4Ug&N&e"e +/xN$]'x ]İbqfl:5ʮ TE e3"!{PvV?`d4{:%I7B%#N/x>7+iܞCsP0;;?~i Qs40?P`l Mڪχѹt\UIJ/,Z|B&z(2{1̪q++:(`u[dW"er,au sQ8l³򼏮ӇFG Ƃ}%acu?PR + *jzv1 rYEa[ȶӐ\_#H4f6Pz542"Vd}&4/qॸu:6â9u:tU,4Ϊ{q)fj&Zce?lX:Ru)hdƆ~i֦ۧu+{S,?G[R UDlYEtz=?'gɶ.Z3Y:UϞު +dsfwj +ؘE[z؛oI4gS"e0&SnA&Zh#R22Sy4-tDC&P 7Sk f?C$t)[m6 U厢M Y--^gqS0 +1Zµ):|W^}Tc]qpf85 96Mlyr3SLjGyL88#ҩ4EQ*kKʳ2D겣DreMQ"EQ"IMEg/ӂM r6wS vri,Id((T3>`rl.s?^ֹ9k3U w%ݕ>לJ1/ti?=Y_aR3f¼Vв6'cS3kCsߜ+OH51(suB@Y8u>|dPnD/n+3c; +9erVVVxL7W:gCRC,aF]Bӹζ%?ޠx.ZGe1q&NoO{+MI-)+9UX̥_zqN2c⛜5evr8-'$ǤR17CnJhxLDaYUfCT0gKxGL0U'X>v0ZLn-]ߵrFRp ws*wO +ƒcxhWEɑ[=RqY,QNm6mM:½H11ݪUD|fڪC΂RjpUTDŖVsKU1 fCH] +hsVܹ fuk]٪:X[Q{R ۓj d$u1M©s=s}>窪65 ͔u x6%,Қe)^̪RۃrӮIrʥ2Ux(z.fmBu۲͕E±e=b CgF\N:"[ +I'DDw KցM񺝯 +`mGXEW@R( IU8SRcq:^`6MPe"n0^{1sW^^񄇷9-*kDsro])MGa;th\si 5zXRj q> 0EęϿs@US)Şw/Jl+E6VF,VFՓw }U~_?Yc\Z847 +<ybح3qDXg{R⚾&ĮjV`F2o{;v5}w_Φr"8qaS c}=='2fl90M3wW"")zòhw.PؚS*﫦NafY?:;2:"=RfЧ! %,HXZ&i3.)D$zZZqF٬!fլPg&x=-rg#Ƴ|V,YxVt FY tA_ ~f+ǀEoO2/w6 ++ګ|y/)&3Y^%XC8hkǺD{"|P0ojryp_ero/l˲-q!_Lz_ee}3 ŢDFNb<XCqOЫN"b6Q,3+I~R@a6!뀷AOCqOc9XȘUjHy r] Ƞ`ols`8cwA둟T#SIljجWDN|)WP01XŸ;j@6 TTZΧz53)W(^_eQ~UΪy|D=y_śr.dSHG>Gttdճ6,jN\/C N9j:QI'ŏzD knzd(MbJ"좚$ه_sԻq2F^Q3~aY-gd:y)9d18S%੤be# ,bHƀ!}>Z"{?X`ўWȏ3z%_猯`#V[t}X1);WW <\oV6A>.CeJ֋əΓ2͂bi\ V5uxbl ]26BʎA|(9\ٍv9$23a>?G^=T bhFK:V ݬD/eeu4a5HY +!0 5TT BQ"UmEeEhbQ6g0ZDPQ֚*A1,s~x9yUR[ԟ\ۂ JۏVˠ~~Z cILFwY9M}5d]@诖8ĺVb#wz[n#&rRD̷qT{ϯשV[^#-4`W<=W+eȱ[ݳҁGc7y_Ӯ;s]'2/PDZ[j̤|`dhf!k YKf$~an gZǬO6|MКz϶LJtO~1,{J `*l؄ +wwBuBQ/{I+=2$κtiwF骈Khdd-of{^^ϕ)uh +sna-wXɾb_զ+q3C=Ij3Ť!n@NJ{AslT/k?5} 1aPoT5B/'p:mKu< T1Lc8k5!/!&$9&h+VyT.e`\$ЉߗcBi2EԪB>iA>7 '~{|0 -x$˙Y;im_/mi"߮qWan0s ;S|NmVG̖h!]._+B } +Q%u6p|?ZL +AB>V32,>{-ЮMϴ u7[ta7}sG[glIxeFr~`d&#c|l&mc'|l{9KkԦ:"< j;oXtR'/]=;{J\4(Ph moQeARo3_wטI".Zǝ- k*vJ{ؼZPZiDpixvWb2/N na_93=S-TzskN6uK\6x  ca# X/]|mvڛw'%>Jp2>o^%*+(fr}!c/{ u{՚nQ݂|6샯NEqK+>q~0=H߯OtkùoIne}>X(TJru[_p_k|t5Wz/'AA۫Ntt+gj9 R.yp /n5 [RZ{?#g7KKӖGj8p3Z%Kx~9coi +gőrY3t[e.Q@@0hJ)uz+.픁QWXT0=x1Tl"c 58Mq m_ܧ8ַ쯸>šǁIIc}ߨcQD@X <g|-sNl{8IWObF% UjΎ1S޾nA3^0) +2mk2jaK[r:+C=f+z߮!^^FO(mbNAMrd{MH\Lβ:]1s*2oGA58᷎x?\Uuuι ! QLbo# S 4(AA)qRG2HQ*-R`Qu:(:bZt [;Tit|Y^{/>ozwtܽ5'2}YqFx5R~nPP8'SG_.S7iON}TK?OOn7=J{bbK0sgCݐ;gwk]/Ļ[[++X,RE&̢(Vc錱KqKT?_{ܗ_ͼr5~Ik1?5zgtxc3q]јļX0/Y:F ?-_"^So%hr;eKz$fT@~>*o}"Kɟ'i*Iāxt~iY>r~rrꅜ +( x/u_|J'0B%beWܻe%SތD {"8Hf<ܩ>\D.3ݎ?Ewq>LBW)n$or?eҼ2՛ɷj7y2m@WI|ߩ2lY/*):WQV}mo%SkTkgtu$:fM)7U{s8KYU5My^8;o,/9xMz){= pFO3dstߡ؇'$˹9h܊*AjSfŇÚ=0_l뜞bVKSb cs +1ݍԲЉ_*9Oenvt(Gw-s3/ua:[?&˜AӦt @;(bȷeև Y;חZo{Gc{wt7oB>#{hNGH)`wDr-:(uMzi +wNo1aL;r>F-n9-;y](Ӿ2ߌ o[r12f3 )>l]̼v#Ri[ +2uZnE&:#Q쌒ZY2N߫ -[Z;0}Rϗ]dm/ [>x~TFWsF|>PH[Oz"x7ҍ8m6_VIYI|g0'V+֤`wrp;'J^V޳5d${yO/6`~5tr`/;EZg$#43\Ni,E6]H~d[_TiXmYv1qA|;BKGfX9vJ(h34-yyle^\8 +C~s >ؾeC#Ko'~7~ody 2DxF<, %0Sք}/_HK$P`YѢ<;j;VΩO)AY0C\ǵW6![V B۞5HXZvkv[.[|\kFy;-ϱ><+|-uc#gS@ ňtvc|+I zy8УeClA9hketVz] O?$mZW]Ǭ^mv6~yo`AL{NtVow§kԩAX}I_f9jz߄yE8H4r?He"pw?[hUnR3B_g-;yI}Q$wH::N~$ K7"D-a hWg> ㈤W%ɖ+ŸH,thɤ(u"IٴCFv%C^i6!M'Kզ[gu;ugO<.rǿX% ?FP.({},[v)^yvW;43 WNHRPK=hf<%qdEKo$U߬bul3&D,`jBVi2K, g Wֿ^HݩyRO9Tel<-~x) +endstream +endobj +67 0 obj +<>stream +H\͎@<w+lٕ%1Q<h~LQ$?Ut;ԇ0&9zSsua?NY۬C8YUGzy#+K_zxzxzx~S7S0OO=5{hSfO=uz㡧#ƤM[f>wǘbYe Cmɤ, k +endstream +endobj +68 0 obj +<> +endobj +69 0 obj +<> +endobj +70 0 obj +<>stream +H tOW.U{f!mQ4 c ABIB;3NZ :3vҎԾV”VM8s9s;{{c%30/3JZ&=W֐R wt]I.G ՁPshjė~>ckG,;Xlw&ML+gU׃32)5y_ܬFiƦ1}fDѓt.W[:XޏE¼D 1X]Vm +Ͱ a<2QIG9pm3QEЎ|+2xސ'Av=aOOvc9N3Ǚ,u:[^ pN̰@xy*}|;|~>{KRE((( ^ +i,"@>{5%|=?,.kl5͢-i{/Ή+O3JkFc1Y,Y@E͢h0Ů.N횅7 =O'<]vvvKm>b/ُs;^'Y,s;:4 ŀБaWY^L^z^*v~=,lif/͂nzϋ>ט_aRE֙_I@?Q17 ܙD):dㅺ=e:.)\UXT;{P1'7M(sS#;o# pSnmA $_Z1n~R~ų2:o4/n\/W~yu/K\wWj-"^SM)0-’NkQFb\̘kkkIֵյO/wjY]]wż̻Xǻx<kk͵Y,kߚcͰfj2TJSx5UyUfxBhyYYEAvA}8ò<#؏J-E\. +uBK Gi6M9"?B=P@h1ͥ,Z۸x l<%|MٖV҇42E0}Lh5ͣ5 |㸁 FyGZN8sgpH#A>Q*{>BmA]Q]5E˳{+2UdqG l5W GR1=1x CCC+9HjLBwLD/b,B,rR,C6"=X|i$d"-)~٘uGjZNUUTPŒȦP<SUnTSMzBբTzQMuգT)Qp@D h Q 5X%c.Lc7=( {. x]Xv"_kyP$&ԨNژqjGZkM4M&3a:1Z6ՆFKCL잹|}VͶ1mg~IX NúX. t?OE"-bbf/sg7;N߲n=A!``<ŰO-xB;nOgsqݸ9 vCw!8 0GY =HGCGtίu. rtͺjBF5Ά*`7 &S"&K zgp7)MQ&b6iUyF;_ +8_Cc6Yw5ZȖĿsuiM{ Fr8] W?UUڳ>93)ޗvzJEOy<7Ud3brMZPewxswMVU}}i?1HvȓqRjf0ބٯR pRX)̸MЊÁ~P]#ɤRD쐯uv™iջ*-KlRfȰټEnw-][14Jyƌ֨+ a[h-|\M^n[$Hl-A qޡ.IB f;gJe@]/k2w5e>_c3mnvkPsF9eK(IW EͺOz; ׶lY J5!U֗ZFS50(|Y!݄1bPn-SŰvGH^ s7HƩI3G9ydyG@ԛ\/0 X "k>mT_ڞw|4ʧeVU&2(ߍ6dײ0Ley"HKY5Eoц*Q)RcfE +Â; 6Z zؕq[j\j/'%ZѮ-Yi/[[bR*2,87˪hO|zjJ8ff\Ē'!~XY89>+;;MyjS= b-Y7MV%{߳]gj)ּ*Ɲ~hY(Oq8]v]Ka-tќ ۡ}ddtTDի}_ ?C{N\ V ىK{f=M+&KC?_=2(k+&(U{ȴI~,&=b&^z{~WTy5>^pJ"O}`s ؓzY9+eM8Ǝآ]dQŀ%`%z⩯L&w핕v%Ϲ)LWRM rR%7sw$_ [%#8B؏΄>#%G(:FQ7"8•7.U#U*ץP_8} :*M/ XB"8.]9-SfSNM"m/vCl^L Qo&G\[o+\DeNq^lY(F^C=GG]+#TԖWqhM/D8\ 0;"…pCF#+ kG޻{;PW] Ҽu~)0;.-=&mźM6%ÙhlWP lF3 9K^\Ba" +/cG0=Vg~&9鈇 .vZ~銲 IMܴHiMUz4w9=i sS}j\~3/8 ?";ay8e +70elޞʎEcż`Z?-j!0҆} Kx%r좢ž1ei;9avՆ@L qDCRuEyYc3\v6 +F 7n ޙJթ8z-19K=c=z*3ʂ+̺5Lg[Z| +.eGg鎵cVZU]y'XJm)(ںΞXk8(~YL5%O7_k'%I>ePR%z1zϽ7ӕ[".y]qeWX]"Z\+LͮWLo13fSQuik{FFoLo2 kpn~J8w;{M^D +䰔3eeϝ+\ЧKw4Q߳cw2rBdUKa"[%c='zb"W] IeX%)f\bfQŤ==?i$Cי]cN֘CwOr\ ]*Rbz zHb)mjZRcgStL'kkפ訆R5P]KIV\%U0jkҨIg6k3`:Fk{%Ǝޚصk⥉ jIC*6Yuz^s0ZoUZ<M;d}bMr *K~"}|D5XI^&avXXTH[Mi#!v |+<B!Y!nBrH>I;Gϒ^԰K!6kKqo;9~Ʉ}ŷrVM=vC'5_Grhi63q~}}Jx0dpk" bžܩcG?g_GƷI=C2m OJD!WmGᛛ|t +c b}g+Iw 8؋MR"涑LUrL?79_q%;ɒY|&-"(Us +zFl<s1[x.3K-"=G<"MO +rpCa:}_ "g_~\B^ml=A:?uH`q7Xg-rK\!jHm{ؠbDb q.6=sx~|CPQŅ'y_|'_EE^+<_y~sy\ag\ܧmCpS `鏁3 2~ =@Woeg>9d'8lyg|㘏]`<9I?!>)䊞\#zwKm%3UN"/|_i~!ar${qsXx I&अ{q>, u2OpOqVxb?&}bW~-ࠧL W7֝L8(|S W֚f Iw|S 'vyE ]MI ihZKki[ Ef39b>}N&/tnx ys39g:pkИ_Kޝd(8?!VvK G9Ǩپ 9`|wɐq0Zq,xBzf/j5=e*EԚX| +d&N e]e5ڕ +zN o(iG"b.BS <~U/[>}qf8S1 cZ#`<ӋY9W 3wq-plLr.ݯ 97c}K6pjЊi";-]jdF|4"e`05 eOe@r^#I1w9p0 W- k[z s>~GÜM {{_o C)ތ5שg͈u9(Zk$rک6/+Jjl#4]iR5XS6#z5=xr \_FY[]-B[]}68,r(.,qyUjLw2S5\@)uN?N'~SoÇcASgWs 2B;إn#s3٪1r[IuXXWi.6ɢ Hy!`d [%Ʒ={X٤b߹n2bk#|_ɽL^~wjFG'>IgQ/ɣx%i#ϴ7VYVujS_/4kr]'ΕG9C'w\հSݽO|sm@7wbsH-[v]w';'?Z͔5A32 +d'"pȏ;\,bs#:{-ճ '?kw::&v{\{39=C\ȼsfKV.-w=P]m׉Nh;|#ft_Qb^1[ iό&ywxgBޤ x-'Fo162tЋ Abguuun]L.2wxGId(Нg45Ν@O&>N+v~ 93rq8;9]W\=_k_C-AMh+= +4&̷6΅x;y.w*~W}V6iOKA{>Wcr*k$mkP +<$pƓ4]~g]sKtG|~S~DCF9Ŀ?JOjwq8j量zطaΩ.PP?w`wKmvlUn='eE;#_aLrg"EbEn|ڟQ_%Ɩ5QԷqm: k׼w uR.j}XkSXӋkb.2:?UIimc5>؆##OcQ؆4jF6$%XGĚճ`~]%Pངm&lifV0(~b:NrMy~ciǚ nN攭4JgB4mhxɗ^ V%E[ˁ ,NbH9$ns-F{#)Fo"s|HdϘi}3VCo)GX~B⢧Lu4%6Io~4ն:XͤDD۫P5Iu'y:6B  ᓓH[ӗgm2yڰ|$u6%lbW͔k/)Oe97`FMDwcpK9SnksاS#=%Pp'꤭m5T1# aΡO2 AP9W=_}Tψg@\)[A-vϔ~$$)t;LewþUsTH笴AaYѭBi7gĆڮɐe*y(Ki9n xKi[Pu j$q1 FFyɜxBg.rdb=ԗW_RmO+}㾎?_@h:MwO9R9棇{=I?yǒylw`Ԛo!g27K{Qr {`/ݐ"իlkAn0~e.'>d! 97I>s +3HӍ6)GFZm_{2\7RkPA^}(,1?JqZpݾ TDll$op+z0]BV~Sމ2k:[Q[Wh?,^Kr|LQpr?KLoO=*Vww%S[ .1쁡O]|ֵiC1sd]b>{$x%ߌ;MBQry#eS'(n\ .qO>>^/N7KY(WЯ>Oˇ9mܩ}s΢YO%+4\zh׀;4(&~˃BP~,o>ȝ +^6+ aIkekGOH EOt&.Lso5i;MXWi|_mfgqHAYzY_Y{- 2tci w'Iナ"C) uo2ueI'SxoL1 m?|Π gZcI2݃롕_M FK]KK66'cús?w\7 ؏l_x4}ʥ=Rs0cu/('3\54ݼl] '2HJy@weo$ l^tnķn2 4\tӴˡ3%$@Hsynw4qg wJKC[Qa#iL3A2C#Xw5fh21 lyc1yf1w3s>xozrt]nt|.S$}Lq5<"Q1o <_neǻ*ŽNȷR)бJa}ğxXWm3ε3{b{}"G9O_x5௾vx+xWSݰP +ȕzMh_Ƚ:i iݗطgI޷e(CYtxNl׏厾&YlZ{MMJWB}l6lv]Meȹȗ7?u?RxX쓲]V)kϖD! jY%kK ^+>_mT IicIFvp4k^?|,$wF3d#PLN}Gګlo?͑5GMq:;2-bJt󥩄V5k!Vd$'M"t 5mcqcȤ;.1:Ԍ +ynFFf!VbRY*9L34 [5Q2F#@ 'U7J6W< (x]"7q aKw):;ѯzr"t7+[U>&ܜŎR(S<wk?R/FW/vthy{[q V #TE=M7#7ЏRh:ThJ]ag:Q(";Oa'v];tFm"w7 ~xg:3n}nn}+سy7;_1gnT3VɉoFXb&zą +yGyWH=+'j|Eg?=:Zgj:9˾O!VanB0ݦm~rJJ"A-$E +S1tĂ ^=gA/"Yoڻ7CA̓SmŞ|7<ɷɷ30Wћ#6V-^ξo9G荝ou;\v=gvM6nx3V2yLEp}*s}kZ^3NnWonO0GnO~?-0t6wEsfpEQZ0 2C`4CXs|O1Sc/a>㇈g88471`JDD&)H+4{}_@ WEc8(ǣ7ʽ2,vXzb{9,2xN{ A;+뭬_mnq.΢I`/etG7Pq4faIju +X1j +[j!˨&ۘcig-pq콮$[6Yᱰfs, pf`d}`pH +endstream +endobj +71 0 obj +<>stream +H\͊@>E-Foݛ,d14=0B'V}SZ;vc_.m׌?:s]]_ߪ!I>۱IYGyƧ{49&鷱 c]˯ե0 M.sk%T\:O{;6~;=#~>z0u߄PakH,kWNBw/9|WcReY +ޒyޓ9'\,`O`> y>cR~_~_~_ly~'WWWWWs<3G<yμ]=vsG, +endstream +endobj +72 0 obj +<> +endobj +73 0 obj +<> +endobj +74 0 obj +<> +endobj +75 0 obj +<>stream +H|RiXSWŨ\ + {lBDѪEE\I , $\ +a#KZ:,* +¨ZVt.sgΏ5{{^17CPݻk{mn +B Q2R$jSPƜ^fN8k1Φ1 + ,@!bY8 D1mR_,Ǥ* +<&9"&@,oRV+ +__ W̡zϡqbz͡7/Uɨ,UC)U4ZI=(jnR42uǃ))25%a +Z&jT*Q'S*SJEV*L,\5D)dī2ZB 8&PRa|D+Q YG(F֡ ED Y(R rAF"$C$_E"Klnf7~eYβ̥;}$ 'kUͷ0_o92; ,X|q1kAb3X4v"α(MvRxP8(r~ih%?#ʈi҃B/?fcSӲ<5../]xx&MA,L!\z nel3ۇNfM 1hb Cz=%ڰnf9p$?蟴g! ЪX_{Jpx\^5Ҧ/@Ip~ |<_XI5\3cO:߿x?1;DNE;Nߺu7ͅ%qN;iҾw"SM;s?DZ{lܞԏg  U'ݡC$iۇ6?Hjh3VW]xM8up-]_1kw+z}v{ +G ,%@g9wwۤ%mk -U#eM ;]HNikC`owE':E_n@?\; U'װs[0hN.QVLw~BWl2xB5.~2[^,s:.i$@ˉ2q>5RZ",bp\9>R/." + B2=*8d߯_I ;(dJ9lp.:YÛ5m͚d&Dɉs!Yւ:3S?DrVzmGX@?0:A~EIk3V2 + +F䟪}Y(7-;@&nP1o`--,~$a$g~|8;|-7< + p{p놎7 +G +ن+:Dc$`θL2(_SwRW\P>ߑ-?u ϷVif&){KOx |}-%fx}Tn|6oC6T ܀ xNee2&Hw[`YwX\MV[_ ͙tBCct p +cGG9ðp>̎x{4|Z{b1|]3=,蚈xŸO`4_j:O;$6ȐUE &!x7tXjUU(ƿȝKƻ>4rs[HS־]QQYD:t,ہꙪq`N4jX7HУ"EPƍn:4 *;A@4z4K@5*WkNsr{~iq,SO϶~ H-\K;2x[;F!E;~pk*\kOtٻi.dǺKe>}9L@~Kg'&LOEa&ٛ/|Q??:ȼ8l}΅ Ӛkk[[`lG8PP_(ph;B,~OM+;|n+ڨewvG&UyTc}G+ⷅu{*%39Z{+c?MAѿKzS ?&-_d +jwaäXm.1VBh&)Q_ta!'2eKgen)$Hk7Xb-J.DPqa(m(mfY0D= ZFN:6N(jikR9P$KUT~͝UU4 ;fr5.JyehѕhCUW''';֭BӘDYmuYUu߽]W}K?}yr%S݅ =7X^?dA="hXIy6;.t3w#:>v7z JY˳~ mS܎2S,;&+aB37UI +֏O-LHVf47G3+KFYFitYsJ}e m,q'ߤYL> 9e 3Y!(m3Hj>ַ䄐'he+-XBcE*^b +oN '8(^Ot9+, adMvrMBNh()n X9Si2`(8L>2J^p CD(r܌9t[0>j]Uմw,&>zwZ:RF:RL}x{.,~qߤ0<2pyz +XQߧ PTkxP?lkyT)87g*N?J nĈ0l*ʇ !ޟc\73+2Rhjr kaLUMҫl +?LAavCX>7(J7܇a߸vG,ay)q.[V%l#S?C%Oeb^ĐT OerEĕg|DA(qpꏮ4%uzmF8!.vz:LP\`v(!FJCb +2a$W6E74I-Ss?y ڟBsɗI׼΃:k^0ekӠ,AX@G3n*J]/<ʘfK7,%+ñX&j hnG6ȵ@ϹQE-7s=ܑkk{2FY.+^P*-au )T!lB#`%' \.顴 + 5[4I:|Wz n#'VSRM):| e l5MYquZΕ`!]yk3m +@+Q!WXk I3Z(d;8r@nֽ|ӱx{D6x)9bR?BbvVyae2(rΞ1&/17k|z$Cd@T>yLf2Ѳ:?>rB +{)؊> J(Q K3igp{}Imv,C XJ> . +HQi$py(m3-D?#|,Ð^ژVYw:;ڞ3gF;c/Kh<4>GG9%c& Jų8}0=Ȑ4w@Zh.ך6/#BlA]|F ۰7&6QJ6ɝ:?+ fɽZ+t{;[3S;VZ"(RD@yĐ !<Q^E⋖"uuuJwsC{Rv̜;{Y=aV^qQwm^ 7ҩ䱴O#%,LI9cep-C7h*\V`G/7}p?wrnl?BP=N⧱j>b2?6DH*4Rj{(l69ɹ;! ûQ{v)m K~4O<AyeP>gTm6=od0uѐyT,PqW~x@)2J,$"B=Xυ~}o!1#"L4뭶z*G⌸Z{ke՝V)W0D,Q eJ)o []@g-m]–ܼav^[A;X:oŒmIĨч=ԕ#`Gݻ  1ame̼a_{m.;Mij\V"ɓgqYV-' +ZD5Z7>tY KĖVޓN֧Rς#ooHOYV.~i;}͵u*/\>Sy)BL*)l&RYO#V:X´`~Mʭ1TI,XcpoVپVTo(}Ekgic7$j3d1.;n4 ͗jjҬ^Ѧ,Q7cۙUZ( : oD $ Iȋy +$&$ "P8Gթ,]ө3kN?f={s>_3r2$䷲(,Hr="N`q'LD"X zFcHS@I[;' P9nc4 %v=v&6 +N1m&}ک]Ck2D\!C$rE+`hZ^Io`hNI#Zې7.u @>z<;|?G>4?hADL誝?/GG b'n#/Cԣ`M'72IWhiGTk-%$=SyR r%y.kƅ!V&$-wB9o ;5Bz؈IN"{6165+ +u|`B4J{ $ZpŽC `^bω Z$O-֦ׯ+mD677t Xģ)#5 M@Xk㒥Z`3qU5Ig)2 F3CjT]n £^W7^dWMc#Ln^L +dd rײ"}ϫG XVB[aYiI^v~xs`1ѭM2>m6XM-&՚}Da +TP )0n.4khn~MĤaev}Xn1P)![i))N+{8\T4lЃ=8R^^HsRdtRY-Y5#S3h ˯ªgYJ]n…Uč&"SdÒdu9ԉ@߅9aV6$+Mu:oV%~5N붶cU3Q&<Ԟ$fr7?od]rA֘3,|nR1-gDMڥ&UZ5jTI+0H6IpH1`0>>>f lMB ! :T-,L*ZmT;Miӹ=> +5)]LɉKz퐻k >{T;o +/\I:4^wHxDe Aaf,_u)BK:Kލ߽Kwcwۏ(Yf{tϿdPQHnPYkP>Y.)tABJN^oʊN`6D!}g DtaةTHpo?s[E3{S'ٿw$iG|:6yx1ib6cJd֟u p_#KO?ss32e~x~%"|df(FϷB]<8Tك'|2}_(vOƣpN9D0n0h Y"-SUNeɎDqUd:;(AuI $"VB0틈UvV.RBxiSb#VË Y2ǯ˳-1jthQ`H1t ++ۧ17twz[I<``]6ҔZfSM PE9MW%TD +[ҠksG;2nG-\>,ExI,ȏM3WMIr+ +iqѪQiP馽0NgC}9D^=#=s1^5X")O.1XҬ I0_mi,.4brn $Șx;L~iG5Mo]^ [CaDe qgx8!yW,\ c)ebZ_ +qt}8Kbx4xGH&D*pCA:}qy[-+olk6RRFrOT9=&RIUfW\;k +r&#(? #Y@x3Com07Wg +endstream +endobj +76 0 obj +<>stream +H\n0s_#܋_ygrls> +endobj +78 0 obj +<> +endobj +79 0 obj +<>stream +H PGǻ{ٯ;*o/<8Gxxxk<1x xA@AD4[fFY]xO@֊XکW7mF$I&BgҘ" l#rc,!.Q*w[VQPy*4Kx=nN:Ũ8?[ޏQӞj%0+6fz'5%)59Ħzl.ˤEigU5lLwt$Ĵ҄T&GHHJ uR6ݏ6|b峫H5H5ᤆT$dO4F$.t3M&}A ?duX+֚ c#AvbgṿIM$-SҖk+6mvP;.kw5NtWCPS}/Uy|l>RwQG^Hr9;rEY2}!0s9Ҝg3O Yj8kdeX +ko +G{zgF&yMϛvvs~|l1|GdIRRP=w**r~r@q c8,trKq)oX麊K6R\|Vۊ+hZw-B*.يJ+kv^*.TqGc2[5ָ^%ًxry8#ّ(6Y˴`3=fy7/7b7XoYVc6Y ye;$c^\^8k:9:;,Q\QBKqyPk} ~%J={- +gozيY 1-U70MeiLg6VqfM``bRDތr?xsVX%o- +y*?`G<  B{Ezc&-a$q ~菾HC(!8? oqqGyKފma0֘eMXSWp?a=6j 8X;.+jn;{`X-)0~ip[,]cXgx vL1_,_bHY6\b9X+EH 9 +Y]x,pF)b"9NAlKb +#sx/mbXq q7Ely‰_A|0^CP1)bެ2G |"'h>^`;r\,)X|! +0 L@tGO,AA٘O1+ +˱kɢA2"1)肮،M@&! _b1r\+j%>EmG}E]Ox%„ ꉁ$"Gj3s;g lڻwk/~?0GA jHhTRBV4Ij~TJP~< +H(zo\۩k)Z};wsG^'DKŀ(P .u:7hz_<-5HbXĈpQcDb\xzLl~QIQ!6gij: /PBJ~,*A55` P +4𫰒_Uchס߀&4O߂V~w +3w=b@_0 ?0ħakaF``z  @a#06(xo_7`'q=}xM' ` )Ag`< 1 q qF[ⶸV%.. `7pn'j+We_-W+Ԁ:F!~e*-I}%O_C7I,馴Gكi'4n9X2jrnD9O޲:\RSP ư&%#[]8!mfT1{ ,XK8왭sf=c&W PKvxm[E:[]ґhAo垉/'ΟpyqOwq仨cAq;3XC:Y`LWCzJK>Z_>j[ZUP඗ڼMReřaOS&e:'洶c8K]tW |W̻RTAo$m_ޠbLIOU$\[k"eX3ƨ>ʒp^6;$zP/ae7ԋLm +k>: !kE^S*Vۦ!]/ EяcwJ>sm3"Ca,!;٦ ![9%tDDlb{$6%{l6Km{>ZJ3ORqD:v?BAXFDb9Q(ѨiRZH)sk9UAf$G~@iXIQ $Oi W?s\3Gz~ld4gfߦ}NG$AjǨfeՐtz\bz^Ih;miF#kw^>(H +GOO/kgi(Pܥ:ׯy:{- +IcRE\Og>Wt e8t]Szeea ̰vq^IY{ k)VrrWdezyL0Oq2WY/ପ+ wh K@HH@ 8 SkEDA2P:XԈ +jAAX ԂR*?Y9>ZzWjoK6&sll{M,pj=A 4BҜ3ܲMr]Kɵ%erYsS'ĕ%w/g͙ ػI6_npƎWH-wfKw6'W-lyqz7D^y k|]n}Q5Ӄ? N|-Ƅ3.9 R>?sv]{w +f)sHs&>Zɸ2q6Z׉@r#_Bgۍsm%G*צُz]%~:@(Z{NBj=ZGF d֮sd#qbTqi~jO!2HhlS9jjߣV۱s,nvMHF,(3pǗ4 |;ƔO}J#]+n[`zBۏ]"bW%e.ϗ(j,悩樈ꞔDn&謳$ ͌m|׾6>*'uo&_Rq[w>Ak}U+2@}/WKnD^~8EAg x@QS3s{7[jX ΑgdôhCt%1f[e%6z)JY3b&1+( Ӗ׆8Wdt?YaSn<KgMA;A-{D;U҇7GP~vpLu˝R_TVȅ, E+jlZ+:}mɦԱ#SOcX#>оD +=:^}/ʛfoyп wu"F.4X{0ForE!eƢ](qVCvXw/rӃfk[Y.FFw='80~.M|k9k <|?ʝk7FBig;E `y;>`(3͟vJxԠ21+j3n?$?gwkڎkדLY@9uJS ! +hcFof3&Ζ)w=S| ?wwbM2=O";OL =`w'o'7\s劘ݕm`)wp(~TPN(%Ẃs#W(֐;PNs35FuN%^v݂8#wJr9P6helgL}¯åN~(H/rF6R,z>`x_83Yo@5䞧Zu=Z؜=[{v`ӱRݥARsϲw.y^j|+Yj'g%I_OєmN'3?ȾZ4a c[@\ƶK>;~}ɋz&TO۔N4OcwUSǩ +gA5b=Bpl$}ؾ-M cqv۹P=4Kjۏy +2l9Kw{. + W|W&΋΂tq}Bʭn`cWck8Hc3=GywU]q^V$`HBd %H%PDgZCAVaXYadӄ#}Iܛs}ws{$~?B[A;6۷c_=ϸ"Ql>}0䂵&2[knlדu)$SG%0a;-6 +$9X4}2W:0;>Jg@s>z.?.:/ I %'n6'b@9HV"k ^$Psd#ëm5Ud<&3Agv :ns%̋EOަw +xsw.7p?ꦹt[?4wv)ճS)KMW/7Să'uSI8y.Q?1Gx,\v|xn%q3z`&i2C_3Y|4ja] [ FbU twNοD${a1nJ~<휅o dVuc`?Xj/1@{߀9@UrK4ǼFI,xxf>Ibw_t;yo5Js[$t7 W1V'TsqEwa~%KA\ľ AY@NoeKo>\bhEGR,a=Xc0 +\75mw1LhF$ _Yqh1V{0ܔR3{v4N=awXA ՝c16J~5WkY +`ncueiyp6?۲wjOXmʜ5* ~yWu)ZԮhVGB} YޅzZ{C,T U~?{0?͂h1Y]bzOm{B[mhoc3h5 WEƫ#x T +>v{_eff'c^!qjIK /K7Q#&xЈ+lo&.czFgN}ةG~1Yy)u^Ml}/D7io?򛘿 ϕ bd$N%\Ԛ\\^j\5QP WKbmWpA +cgLבvSW_f^I%MA-f ^g?lrѩt=û˃t5O]\Iz]լ/NrInL 3G&ZQI3o rR6o$8~9k*t5U9Ei91@nHů5sy\9#E"WSY +Eӎf^jMPz0w{~$0kv˻WHW%ڢ2Rkl*2S龱+q9a1vo wm`o왵'"c3,żUs?K&ƚؙ/ac1ئ,o[C)gN3;T;sF0U^/!I{uR{xsTGjX T1q!7ϙI.>|V _Bp4u]ǚ`_8 +>` +HA  vSJ_&v8;Lh;K&σ~m;}$[qp\ϣgbxct$㷐׷jx"퉑̦& TJ_Wiꕠ:CEKʧ$_W@ fes\ν 7JsyDW/gL0>u2nq}=<͡^.nK3ή͞K(1ir:o,g[:Bwe:s dXU}tS2yR' p +|* !ɇ%eHf!@\XݛO~!a8hgJ-KC%1Bjx L>luw##)A# cqv KAb +lMmlӺ-m >HJ16i7QZJ,ڕhO>hbV# >&(1Q!byDju">ys̙3gf:9II۠ҕ*d8TÕb#Y6VrZ U{uqneQq8YozAc{8U(kfõ_[b( 9 3oIfdcMqe(3{ E$%nGO;u/݊|vҶ9m>ڿz'&/Z =FY݂lvt!{NxZo:踼—O~>+c‹>i@KH777xfy[mp [aϛl+Љ=<%'Diid78?4@r._z؃چ! 7hޯz-1"Gi[XUwMq]IԑJQpQ +; u>)-3ȍ]W=} Rv1e+E}ƱW~$ZGllg6U%'[K6I.yVY&eZjs$KCHa@8kP"FZ钴J4I7 yzݔ2x8Ubm%7 -ܲrG!rrYs[%z)< +endstream +endobj +80 0 obj +<>stream +H\͊ O1O +ئ-?lv IW1QK6':fykw?jx +WcYmTW cy +84?hr +~g=^p荽W.7~p@=mҹn@)mh7a^Rߊ!ҸŨQ:Wdybhr.<((GzL.}>gӏL@foEg:}"\\5M&:O!~xTxQݼkK]37F_+ +endstream +endobj +81 0 obj +[/ICCBased 82 0 R] +endobj +82 0 obj +<>stream +HyTSwoɞc [5laQIBHADED2mtFOE.c}08׎8GNg9w߽'0 ֠Jb  + 2y.-;!KZ ^i"L0- @8(r;q7Ly&Qq4j|9 +V)gB0iW8#8wթ8_٥ʨQQj@&A)/g>'Kt;\ ӥ$պFZUn(4T%)뫔0C&Zi8bxEB;Pӓ̹A om?W= +x-[0}y)7ta>jT7@tܛ`q2ʀ&6ZLĄ?_yxg)˔zçLU*uSkSeO4?׸c. R ߁-25 S>ӣVd`rn~Y&+`;A4 A9=-tl`;~p Gp| [`L`< "A YA+Cb(R,*T2B- +ꇆnQt}MA0alSx k&^>0|>_',G!"F$H:R!zFQd?r 9\A&G rQ hE]a4zBgE#H *B=0HIpp0MxJ$D1D, VĭKĻYdE"EI2EBGt4MzNr!YK ?%_&#(0J:EAiQ(()ӔWT6U@P+!~mD eԴ!hӦh/']B/ҏӿ?a0nhF!X8܌kc&5S6lIa2cKMA!E#ƒdV(kel }}Cq9 +N')].uJr + wG xR^[oƜchg`>b$*~ :Eb~,m,-ݖ,Y¬*6X[ݱF=3뭷Y~dó ti zf6~`{v.Ng#{}}jc1X6fm;'_9 r:8q:˜O:ϸ8uJqnv=MmR 4 +n3ܣkGݯz=[==<=GTB(/S,]6*-W:#7*e^YDY}UjAyT`#D="b{ų+ʯ:!kJ4Gmt}uC%K7YVfFY .=b?SƕƩȺy چ k5%4m7lqlioZlG+Zz͹mzy]?uuw|"űNwW&e֥ﺱ*|j5kyݭǯg^ykEklD_p߶7Dmo꿻1ml{Mś nLl<9O[$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! +zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km +endstream +endobj +83 0 obj +<>stream +HW[ y0OSJU|2XM@1 om +m6]G z +RHI ŷY&U3y<^3)>ȤѬ垐֞5񧛒k.ҟ뇨D ( JD[)`_%}O\^+}E'l| w +bpZPFB׮Moe[z DK)pb4i?œI桷񵟸Hu+-TUGavkzYV '48]pB~V +kO]q`0>stream +HR[BA ,`X XB,` dz^|qc +endstream +endobj +86 0 obj +<>/ExtGState<>/GS1<>/GS2<>>>/ColorSpace<>>>/Rotate 0/StructParents 26/Tabs/S/Thumb 93 0 R/TrimBox[0 0 595.276 841.89]/Type/Page>> +endobj +87 0 obj +<>stream +x[n2$wI* ?,KdBzdQVQ%(1dg蕑 w$Ye +!$8{|gͮ_W/N>}$r5WRQYYŅxDBFi!e,EFeVz}_O::ZN^\3oξ~;Csjl^]o/^_\ -u>9{뻺9h9K()|>cmۈkq/k|iM(㠹_-e8/N.o{a׻|u| 44ۉqzuI"+oO2eUyT%eY'SS#m(*W#?*yZzegqv*Vv׬@kq}&~>iTnkDU]{`uR,RjfeV2*8e"()\dI岊Ҵf\n'GKPU}$m_λehfW/>I*Ǵ1ejd*ꬬʂ,Q,퀻̺,,MPL]fh6 .@ϻc#ڵo"io=Px;INWTQ[G a&6̃[ `]`#X)̿)07j7ǛpV-װEI܇I|Ol;<Ƿ w"hCxkX pZ/wx/ %D&oX:rPQq4߆)Ζ!NTa>bMn'xZWk Bo(1@[BDؐ^Rh{=Urt;zbe53Paʎ3GyvPзlIdj` +-Eu+\aYsc#3"ShtET2P,$+4H?Rxb+=w ,p`ir;esZzrNI*(r˶{G9@~0W)}ĭ[]Ol[^ [X\;C-A"t% +E<Qد2 y-*334d'%. +)# .5R|  mM6CxaՆm-zQڵcuV?@8)kg#ĕ䩸DmvV%(X +Ƅc?lr':@EWioݓAɭG]xsBaRϵa!A5F)1͡"!ד)QqJlXb*VWuv?CtcT0J]DXMLIуF[4: }#ApDun}~#O,/W=%=[tГh H$ǘxI R%V&9ˁrAng,hJsjOB%7WEٔzn2{\(?uc|2E1i8i W6PFfDPMyF8B'LQ6{e;pbבȊz(ӣu뿅II.$pϜ@ψdq*LIb >ƖdJg&" [ VJ' ]56b*p3%Gw׬?S98^1ɀ"*V~9)ڣeؗ /=%/L@A?RHRR'Bo??HcWbLPXZMqJx|1N{?)P( SʀE&+D"n<=AL%|jk7GTCҔuvrlk |rJ޽ge[-55LcU + EsMX9w o [0h򢩒x0HbIV&d$BrdEi':~OjrAgtvU,Ȳ7;69*">lUE WaQ/qce$a ir:" QjiZRcVY&4]x)PյQ  fSj([şRWBW~DrE+;@/w61o V cjzZ^ kHƸpg"ytSòO8+6Sg%6 +N^OPBr׭7kA!uң.}yMM u)!֜Aq&\@4̛:pFU"6ڤ}#nSjp' +XZ_JG]Y\TxElrcL#+TLk#BTl&R2 4V/D%| +{ Y2]_03Y8[am2+V %A體CDݣǽj^QL͉HYI |'ܺژPEa9iADQ;JX>T +SE+1e)Mz2!jY25N`SzOU9)ZD)D_lKy-$IY q_p땙"5&y +S0B.[}cGmG.g|Se'{c[ꩼJiJʰHAZ~Q`!{ϥa* {NtOst͏eETmrٓ+ϼG͡3!/*Pk?`m^ohmS&t%H_%)>|K&J|.~KH ];Wpi}{39Jic\Y;yJp:ZzB4(#vFSDt^֥+4,]$r>e(}-"Is?G]8}znWl&ʫ869royJ;*9 {OI)d[U9Zg$# + nD|멥*?1⺨֚R0$>K0Wy8?}X›fAU2i#^;̘wAmQs E7_f +endstream +endobj +88 0 obj +<> +endobj +89 0 obj +<> +endobj +90 0 obj +<> +endobj +91 0 obj +<>stream +H|TkTg!d&Z0'$k[T(-,xA])@%@ p_$DEpE XGWX/) +G{ޡ=$=kg}pw+yRLS\7ěwdܛ8goͱ64@ o ?5av)7f DEֹ[zY}ݺun2X,"?3K)۬KSckd~))2KLZ)W-Sf,\-7y<^ƨei JT^m*Ed񋙲UZK%.-[V3׬ O˼ea%8 01'\0/$BXa^cacXv_o#jU]A`zwHaMThrZ!YHx⋯9Vl#]bdJu-\lecA=oelvurzcBt!W0Ps8yϳ4Azz!G,O`F f̈3#~52w;rw`eB6#KEsnp".BLg S#W٘KoO JxW-Al z:)5'%P\W%=[ґdbTT +ჶG0XJ&>hE0Ҩ(BA!j57—G%ͅ;R&Jd%ș;QrY>D9q|LrO{N$R`1Ay\%fw{&2T_Ԩg0nM!࿳,J*>tyBY&bSCUSç{u hm1DkD +:x_>%(釞SPկ0pOXaxsiӉocO%|vȣ >4@丶A,ؑU|85,}(#D&Dd{mN׷^tD,͊WvYQ-^~fiF/;8'-PPh?0SH}yկň'gw ׃Ww [j[xv}sb{60(p-BL@aKci0C͙_y{OGE'eԙڝV/5Tt 27JNoD"`Q$ĉړYR6UjoL2(z:V\/Um-$2C`;)Mq$K4Ki+խ"̠uckI&0nH]i, 8+۝Hk4n )d8;d.m;:$Q]=0ҏ`>n輒x9XVSU+A~0 :'uS*MmD٠<V!G(h5i9Z_7d`jLܤ 7O\3|tݷ '&tu W hx$νW0ƟOo{270ꅋ}E&Ԩ e3'EE rDCNufAyhh#=g"}xE ͵e)+EE ΋⃒#J#II4T!k4s\Uwsy7%Z/ (.-qʗX7\WX-vzX D%Z0 ;VcKLWw툋UGV5*AE&$ B / +S,>j,8Z.l{.s2s:{ogDO8c90]MeV &IWlFXR!@=턶Ww}g@@!1_Q +v\7 ,rP,b?M, +?kmS })%ZFp>!6mS5b} #3`@Z,Ѣj8QݣBq=+ax4)^q6]']?(s#oNwE o,Zp[*|Aα:uzY@S܂c*|;Qh2 &c 5; 9^)J{oź11]6-*CnFL`+v$Pdvre`fs -;V W^g5% sM$ؼେp9Ll;T"PU&610;b:bfNva%2S@yr}a5..b;]l}D{r1E>l4=&IjO4% WFD/;>[rZ=)ĻB<X֏!pò3:m+1/d᳌Kѳcls,ɂ\K]*($eRpPjo0 z-Mvb5٨v^:/~&: &JDE a[rPZ:)Ħ|B3[gͽNemQy.`@"FhDg4FU o]@?R9SOg z'57y𝃑qutv]q$jv[| +^`?'+(~6><+USrutt۵MF.;a͢)鈔]$}VΟp_*i wP V/Jv*_5j WHXH9BMˎIB ' +9H45eiM.չA XV'xk|^g^wӨlVdn|gt#pУjubm:EEi_-UVim&{Sa9ҬAP41)ƹg`e>[P`Y kk㙄§%3!N.KJs +$ +*KZJ?+ + +Q !Ud0d.OF>Av~m6\+?"&KCFk.hW֖>+92TkTcg=K=h:U{U%Ydᴝ!ISS!@V9 +eoEO09Qw3[& + xdY"^Ad{m4XtGZeNs;5W CjuZs:7{}4U{x4'=DnzF_U;ߍG6hH GzOa$<2ڨ7fw{tR% Cۇ@M2K`H0XZ8Nv:;m7Ds80c(WJ*E2yXCG?|Yq!Kj3Cz0&+F7ՠ' z]e6izX|f{y(l5:ZGtu-a7 x,=+lxGF+( + KP:YK^Eb_wlX:eF.JƸL //c^|󘀿b&ڦ{<==:ah\(cy)+(yQ:a. qD>+2? y_,N,MxSlxC"k{^R6 ʰ`;4|sYr9.+2XJ蓗 zv/V<&dɐxzf6` ̣Y *2ZC-Ym^Kz>\D"K; :ܑbo2P~q/,Ogo}qqږ\u%Vd + NarE}y]ﺷ9:1G[.`}7͘,g_y&s+n%T3醯W/%CXHN1Rk\ _N\ɄyU(3&CS-5NyOTd,æ:BOZB#xd|)/;,fC8Cg{l]Z㤑˛roCI>qO ~ԽVMoU^N(f-o Cnnx9r5ȋ2JQt%l@8 dw|`Z3 +MڃB9 +9?VV+c h\AO0T;G١xHP;9h^կΆ ^X Zm߽0aM Yr=g͜;79- b &J`sl&y_opb虵vH:T7VUw~%܇W_SBû4H}A΋3[>@2(;cm`ŸPj6Ѵ숁=l#xXg)Þ#-K#x|G}w܁PJk$Aޕ6svFovbs YhWq9*zCQNj93klFl&,9?ɘ:7^_Y4_L sª(LG Z#r! 偮9'.9g|U2#(#}r2"ꩶ4jEIF$~R"LGR"mm8(wYlP;S;% q`9@>6 +0&qF[7?; f=g+X` +endstream +endobj +92 0 obj +<>stream +H\͎0~ +g#g$ɏh,CyuQQVZ$pY_zdqhaoc{ 7¶]3=fԣ:˾? ,m#Nn_Vp &l_~6;O~*ۆSJ֗`y۾My-0ІX7!92OOe]z*s)"x4=Ҽy~~^Qk y`biH.Kh/58B ?N̎̎gSz9xxx2x0x뱯 +B~Я0 Ћ>S朼 ]} | } | } | } |KsVzTxTr*8 +N%\JNSTp*9JNf5e-rȜJQƩG[=斜ٵ0ڴ ++s a +endstream +endobj +93 0 obj +<>stream +HWA % za0\g2e +&h/ůPw 67U%^gH]ǭI40׽95~p"<589I88Zsf +i7R]֔c$^O|sRI\\U7)bz@m%xCƋIV蛺}[oN/85Җ!x`o~9A(>Z0>b*yRQ+gjDw9=ni%xG$OI^L|Ns8{F5߫8qr@ەn Or‰HK|wPPʹCqs彯>/ExtGState<>/GS1<>/GS2<>>>/ColorSpace<>>>/Rotate 0/StructParents 27/Tabs/S/Thumb 105 0 R/TrimBox[0 0 595.276 841.89]/Type/Page>> +endobj +95 0 obj +[96 0 R 98 0 R 100 0 R 102 0 R] +endobj +96 0 obj +<>/Border[0 0 0]/Contents(http://bit.ly/2Vsn2nQ)/H/N/Rect[95.4012 573.907 187.087 559.068]/StructParent 28/Subtype/Link/Type/Annot>> +endobj +97 0 obj +<> +endobj +98 0 obj +<>/Border[0 0 0]/Contents(https://www.youtube.com \(https://www.youtube.com/watch?v=I7dhCqN9Tuc\))/H/N/Rect[207.911 573.907 321.154 559.068]/StructParent 29/Subtype/Link/Type/Annot>> +endobj +99 0 obj +<> +endobj +100 0 obj +<>/Border[0 0 0]/Contents(http://bit.ly/2VnZS27)/H/N/Rect[392.036 573.907 481.89 559.068]/StructParent 30/Subtype/Link/Type/Annot>> +endobj +101 0 obj +<> +endobj +102 0 obj +<>/Border[0 0 0]/Contents(https://www.pdfa.org/ \(https://www.pdfa.org/wp-content/uploads/2017/05/1330-Organization-wideCreationOfAccessiblePDFUADocuments-TheShortestRouteTo100pPDFUA.pdf\))/H/N/Rect[81.5895 560.407 179.238 545.568]/StructParent 31/Subtype/Link/Type/Annot>> +endobj +103 0 obj +<> +endobj +104 0 obj +<>stream +x[nƕeVO]#A,@j6X fFqO,EKZB2z\>'f!Wݜ*nQڀF&YU;|h|g˗Gb1_Q*/ᯗgW)Gy"?IRd*J2b%t:Z2RGgGF~5jv3=WM_u3fzGM_bQ5 ~}؊nVu +UTO ׼>yN߄?|qxӳY?lg՟7~ljqvwL@?}LtFRjg#Qk"*u[ͮt@EҤ%XX[]nA b{yLŐQѓ-Ʀj wV߆Dۀȸ,Ut]Y N$Q%Z%%W:ٕ2ʊ,Az9R(l2Ve=BGRi2*@#n$2Τ`> Fw<bO#~?kU599 _DȲU4kYѽs=/uiv[F +T۰̃j.Bp2I\-I\Yp_I_T7|2D7΃.nU(smz7 +6D> t"`Wp0 5,?vew#uUW~.LUJl ZaK(8,% +^ݨ8v ?$LG7p!8."`_[+t+as=hw2#YÒ(1(y Rq `!Je- ߃,W/m56sͦW ` +#EUV%c 8) +p)l p`Dzcw81:OEc'RIk'ߠ.j9>)K?ĖV2"5r\5<Y+7[JJr #'zANdӺoZ'3+cz6XA}.QiԨ]0q󁧦S}LU1ङ[:"ɞJjB.P()"5-|ޒnQQ-?KϾ!%@3*a[׷ wB#?D (=sQ08Ʒt_qXXOJvKYJm},0AϷØs5{k 㐵51Sp>%o?q<:[F|&E?3Q|=>4$ea-|@=<+ D^WhF kbgԎVp-&=4 0\J:DCe .FV #qBQ)IL~B(<bHSIb3JD\F!T vy(ݘo֚,Zéy> fX(kN(@9j&hݥIRY+A0s ք]& {ҵ]^VdJܶ/ &UAUR_j'W?y<6@ !V_/Ш%KQнl.KîvjşK=p%|?,2#d+;V<ʋR=G:vM6.τk0C]TEIT=f:.~l Rp%w-N6Hi1E`rY'p4yN %'袏jă,orA }/^\yՁ &,oqsX#@eF+&s0ܩMЦ&Z|~Pa-r"Qp? +0~P 4t`gTfW4M# Mxa ,ð\!CO^hğ <;+r*0{m3ۂJٮJZx'C\\yC]UX%#{ۉʩ"5C)8PL2b)r,\liHڌc)3=u0` Trl%W]1;/!VkTŚމ!wuć4d/W")O1~[ý8HXP a>tKeX2}e5jmK`m=iWq. /t,~ŔYՂ7Ma TX2?Qel$i*' ?yQEb+JT9\#o/o%7ѓGQ|B%I* +(m CHHJ$JuXZBޭ{0?8zS VfhGng [LZzcLH4wL[;:c]u{8؀[t5ʺE#x#DcòLIߢǕ m-{bSx(h;Ia'G% 1Uh(tݒmC`)%`]9Oc`=Ta;R<./CIKbNQԕ62±CiZ_K| E}նE +nFl U-]0&X)áF< qtrGU1` )ZAjCG+Q(5lM>B=~C@|ʜ ͦhm1|Q^Jum0}jej|+eq͎Ď)/&ܸEpr 7K@ߵ Hu=.}\&5 wfJ*c=5\˴EۃAvQ+Tt$1lXpGeN|ؤO& ( o]SvNrh/o!s;B3n +3XWp_"CxA;mI+{MehFY=V" ԷQVC3ӆj~`6/@5]&AusP"c;S/ ,}nٵ]cMl6qy6`caJ1TF K'DX#rwXd6i|i+qHqHK3Ert>jO{7CVh^ӧ2!Ym֦T!'-}6%H-''!Gya14 +x`BxHY&_J2>|O=]AǁwR/fAsl=.ϨydC’N;-xgvHe%⪕l[l!U7vy`\;' &,AQ|ÆKf!Vlްid 7NAŤo6݈CUϝR#jCfJWAgx\Nu/F6j]9ZCyDkB &Oiel8L+wKw4_bF91<Dwu&uoeЛ\F&0biy^hny- OG'8jgBI--n + .uRn}3AjIQZ i]4%Dr m[РwMWѦ#垎H iڂ}H\%}lF}Ffv7F>pR ͫG2F } I҃c+(od&b뽞4wݻ>stream +HW[ y//:U">JEf*& >68Ƀyg5яzu}j8?~ ؞tt0}g8w8 8inOts4 +U4,X,l8! +k*ƥMְ~inyN8*9E46A==d͕fڥ!vG8Ef"a,[QpC3O%-L)9Ɗ:G Vl沦TVI8c+ hfiAz[Vz.cZE;$8Ƴy(杄9ݩUt}<: o}3ܧJ:1ːgh +endstream +endobj +106 0 obj +<>/ExtGState<>/GS1<>/GS2<>>>/ColorSpace<>>>/Rotate 0/StructParents 32/Tabs/S/Thumb 126 0 R/TrimBox[0 0 595.276 841.89]/Type/Page>> +endobj +107 0 obj +<>stream +x[n$Gz.`.2Om؂addF! flOklIQM&[`??~]tj_""#2ٲ%4ʪ̈-b-?~|p,׫8냣*DQY q)b_""IDdiTfE). Sq,p;8;85슿ѧG/f/6_Gͮvn/=Y,׿>>y|p|An4.a#g.V-^LAE[şSEYoZ.gFM[r05NSx|qxGgf-^~t7|ĸM;Y"Q@7D2ɪ}MӨvE\]wu_Dđ "w>4-%Wt+O1޹Ery2UxvQ"U2FWUgޮ?O[YIoᬊҼRj CX*RŸIy4eʢf$sd|ʣrIIg$R%ՖET%#eX;/U\pdŬ.ix'vη`[~–?i&_"UH{-$++49<̂ +a,T2E,0dpכP&Z\"ش4nCW7[]\6*VAmX+sF+ދ8vTG*ΒSq28eywy8Mpӓ6xkW$L,vp1bN҃R+D!9Rl1 Q FJG)s +FԲ݃ + ni4/§`w4_)U O PeRˍ@n "c K6c޸#y9kĊw]^fˆ|2xs-}I'1JПš|:2TH!R +dBg rCNRI |v+^!(v--0xi 4jM^Wy( Xvcب>jh[Ij)hL+߸$`EQL]Ѫ WIqIi%]c6r!GhȣbAsp`JAJ mJQsk&`` ;ʞzOHa-Q3+qL1'Z˧5V` + +c\` +y_\c-JYh+h**&l-P =+Drþڃ?!,{#]͛j!>*P?叮5]U >uO U~ётśFq) Aeҋ?g**/'>&/&_'' v-Y)09{wKno{MHiy!S SENq|n!dJ4C—Q"Rsd4CMEZf\,BJ\0J ϛÁ`H6N 7DF!{![Xb[8_^r!~;%sIחL-Уq"eш!(e hU TD>OO4irALꚱk+hH +؅̴6U?[鲆C%XwC1}e>].5?:HUquNo eҏH!tM積XXIQBeX"W-0O?wR>nAyp|5nMzп9p<:rS^Dqfٔg6:Ffۈ*̇x㴜ž[ct7EMef\]y#n ;dѭũ\qf Ҝ REe/:2C.5MxxxQ"zvh1)\,3wYKي14Zpjp*J:@jT&`rQ%(#ˉ6ɒyZ`C5E~(u!:^ᡊ:lګ< ~fʵ_mhRWtb)3,1&\gPϠ!py50}>&-'t]Sb ].HbL=1-PV[b =Q恸Bf@xك w\eX~'-܂[dپ^A]a\uʱ"q9IW96jd` {`1޺Is{Z% mc1rƮLiyw33#7$Kp4^Mrn IeaiI~n _x[,X@φEKzciՌtG8I +`iīusʕz.`!v 6]hf vҔ_#A7LDcP(Fl{Sf(1E$P^'T%]aA2 Cz #vBy/'yo. 9=4 ư`m1R&q9{1:K~B׾j"j?] e;{*ŝ*iOл2prڮWf^lz$_Mɔ#Y-߶:rrq#ʬʸU?xnYmfw r8k1QYTێKIv2`G}'_L>'ӫ'Ǔ/&/&&_g/tɷaXO&O'GbJ\\.?+z:6ƉJ]TG\y&*؈+SHH)xңz t:14pv; at`j~&MҴ=aQ a&MQ!^.sM mDMM?{̕נܪInzMܘ \eFǨ)tjCRG5/{J ˙/Ww >kp4U:gfB +M4w[d[5–J=P굦N{&zZm/ۺY޽M-#,ps4n{喧)d^Ix(WTO͜V7Gp.(9'v f9oldYEki@ n=w|uK6\i^LmثY,L n;dw+#&:v vx~iٯQ؀5Zͨ>t G~1@ԯh1%n]5*zm{cꓹjG])#}M iL TX.@ɺq:\߃(\uS q8CySe3*pl_ B]]$6C{- tjx;wܑpUx*D?؉=/g33>0usTϵ^HoOx_C2h.j& #8|+O9Hiw# DwEtc8ȁ?"5Md'MD+Ye@꽑$=JJScݘiÒ)dD nl(ISϲ1S F.NL*;5#SA- +lAΰЌ+6*lfҜvR)ώ/pd76P:}p9XeTrzC'X#.izJ#Leԅx1׈+=yc2 3r,C yn5*d\jPuX& &[I%b;:d%uhRk5y~0~G*yn0W/nX!Ls8}Y+rw +軒g<'hLr@/xshM]!LƁzʛ|MGPæOZP +endstream +endobj +108 0 obj +<> +endobj +109 0 obj +[110 0 R] +endobj +110 0 obj +<> +endobj +111 0 obj +<> +endobj +112 0 obj +<> +endobj +113 0 obj +<>stream +HTV{lS?$wl;}IH$!$BHX@qYVn@ʶi 04J*ںwȾޜ;wz(RHPgˍ3?`TѡI `7u~)~)u!ʼnEǓC/Ku1^} Gd")C>F2X"-y;JI2)!/GTtvFB !i.OEHYِ)(#Un;WIW}A۸ YFo:ѿ"Rssh1~wv3e0akjBFx\0^@̘mr/o1Kׅ? -$b0z:I0`6B!WPbGKã~׫je +\\صfBĎ? ZWZN1&W>`b +_'} [qt55І|ϵm;#^D9\77Us6z:^c%>H;!Fы9cgĸ}m?+" :땅q|KӇZV' +#H k4aw7ǜsEAmϢZ5|̈́JfGH(k#`6* ĜM߬>jʑrW[^"k2f?($KQ9Ptjٷ^&`zcN76 7fivsL4UZ2z*W<b(jE'7wil3ZͰkd8:&5cSx󃇲sgm*uyxK7tC =a(y A4d+2,{'b\<|ڒccDž~f{ka} +OPt F56`c1C> t91+h\Br ?ח,sRڦ_0L@XIc[ҏ%!tW> )}p }0 c:WlJqY}đusM:dSƚ6i 5hصx 1-@)HdX8WePRw٦g׼Wܓ #'χoOb>a>~s11 R׌|x`jf )9ZkU%WEɩ`cJr#t4: +ȏJ2TʂL6l)6!g0&[05]nVC05F/!im9n04JWSϺrtH:۵=,ju{yN/bX&3/ w'<*-6_#YiLKIV&#D%` ⋀@pK^Iܹ8I;$(=0*e0Hi5pxYZ_xŽSCUI2ICy\VyRTdYh) `2 5Oxߒ3^UWW?.@$  qk3E+V&RF,Kޙvu*SRpAks^b0ț~oęI^5^V,⯦HVi3܏,g%xO$m+CnI߷ykEvۏ.#u#5Zn5ɜru^"\9ƷKScվI0^)yW+i}&sD>"%5z^"O"vۤ-q rm@@1Ų4/&ּ"ֶ+rJ-BERnӹo~ƇrPdX.''"9Dc3OLVIM\Eqwn[$#h@y&$3:?OXy|0nBmz7оUFY]UzbJ]#"{oqWk8>aޝcX / Ʊ׵2(GRU2Us&7MeQLϭ 'gO#<"&|8[2,PoXXL- &;*' >7K>W~.wi-49:[yѾ]NDfúa gXN<`oYj6) +r8j&<@c E5Bsmcng2@Ir-hnq\1g|:Nj<S&}grEO VZʽKRᏌï~vhfFbky`V#3,nG'ۍ?*gs9x@t;=7XՌ\.zrkmgq7c {[8seV3fJs .`.(%GIN;J\))*}'K)yG];B(7fd>9k@ϳfsr#V:G>i <㛀|=9W6L>yVḂ.3r;}#?e˘j7E|1/R+<~ pZCCV8>+"*qg\>O::ݫ Z[tBPIty㹵ʱWrG^춷};6'n`|~@SiùS<,y'?Xc+}gߊg5 Sb{!վtSuJ'8 gsv +40}[Z,zdyҙlr|W2Y߃,Eg\5Vd8~5"b0cp?u^!/P h=;9]ձǽ-_.1%rLb{NdŠ9ҍ%WTޑ. 9ao { J$XM,"_S~20yP6^ׂϹW2=g.cHrk)\.pr`rrXxuN᭺0'Ō; p#o#~̀ ^ws@HAM; l?S3賐};=P6۝0F0ע"{uk{Ap:tk<)CNoPFr̀6bkTN}wc +{8zgb$1隨W]q:]֛l>S]GmKxgY\a4R +H$L @V[-w +UaDj-EE-2b^@-"XQ@3}gwrUCyPo -1Ww;x4)`xy0䳐CBMg෾'9}XJxP?w A2\roAgްs }oZпTυ?Cۗ"TL]{N#Ug/Q;}?k2"Q >~ +_jXw2`Z0>8GmmF㢶 5Fc\KڄmN&x9Q&tDBԵz_UC`f͗0O_c{?69X۩l (4f"mr1Ď# E2I V^τHM@:n51oK> &v o@[d*+i +4r)f]vX)$~H;KM{P{Zϗ"f&cB-lwGwa|>Xαs? ~6HF|*>?w' 1Ý/Ŏ?h4:Vhomf}/bZ^5+9irܙ@ UH7)W}ho݃'C]o?OK2† h)u>˛-OEA!ck^eC\Q;5߹`4 ]0 mbfTw{}V,}\- Kc'&g>u^qXx.^-y6oy2Z}xmY9{&ʵ8snϟF#)5AUi뉝7uEڻ|NHjr^ +$?Ȑ~ZǚǀR0JqϢXg=o{sՑ>..U|߈/|Dk.WDŽB2smܰ,2\lw͜zJm^[,{'hz^z_ڌb> I*V¼¦im!yALn|'aYD(٠ye]kߢٔOjJ@w;)߃i/dͦ\ۨr{m/]^B 1Ƚ,].3IɇL7g3Tꂷp&R i}>xS={%rwjuUB 18ѕ%|Sfv/ORVTlg~&M=XkqNxC9}}̡yHƣ).; *ڇWJ\;)>s +I%^0SyroVw2h,8Y,Z,G{5w3wa;ߣy$vD "Եi{*\* Hʹk˻'u71)o]) +׆_ȃ +ʋ}l&|}eϭK6h ke <݀iYn ^}IF3kZmwM w3B@BbLl& ܧohUe{wGйɔc2(0bgb:uS׮lӲ(-ҒjfEc CEYDQ dC}}(pԚ{os>sdlg?^ød!r {kN7q6~ރW9u2Nɡɿɗ{>{}\x$ys$Gx 4Hk/p/ w&Tr_.F9&_+eĽܸ9`'`dJj󵾑 ^m+UQ#e}jIZIu*#r`/-D؏a@U_8 \ݥ!?L\r?Luaw12ikBԄ`?$ar7Û"Sr8n:X)Dnz pb;-pFVx L|-ID:ԗS:Va|ZnUJV9"U_?7އjmϜWIi~1su#%1/')oa83oPսu4j|46[|p(:׋Sר"ݠ33g9(}[[Bnzih(b OwK:XzM2 }'57JZZMڥYjM:_jj]ֳmo˕T0+32^lYu!Չ. +endstream +endobj +114 0 obj +<>stream +H\n0y +CH(8vUFZȄo?JDܯݩOK~eGᄉsg:pb(f,EkO!яzY_Hm߆n`Lӷ:ԍ;d9 O)u|xj>!<D,@T<4$!P)hH,,,,B'ѩnH9]D&RQPAQPAѧOE=C=EB=C= +h ͡ +bj TEL0]t A+PACZM4{v"Lk|쪸F}*xnks>,jqC}ޟDPMoOu< +endstream +endobj +115 0 obj +<> +endobj +116 0 obj +<> +endobj +117 0 obj +<>stream +HpwlL Ud0MЛ* "0Ht2&am2`:nǡ.:= Zt13S&*c%k5b&tH͇l*o$>g|_6~_yE%QU4Eo !qTWcO7l2Zmcid9zq7&3Yڌ6c~s+U;js +|HOgggoemvONE.r,g3t9 %g 4/$5$3&olޔފ /ϽO¶ْT+ +/ JkZ4>Ybo_?iW4G(&[Mh"nqXUҚEmdL,fj iQYp͢fk& sM +d{}/<<]vv+,{}>k_('Iwl'Ys>svj%ĐX^T^zT/VVn}Y4,_?//Һ3/V˥:K+)VG>Y~$rOֹN O,]]ԥpUQT¢hѻVGe?}|4}od60v3A-}}M}M||5|!:JN'mj0۫.2v4HZO8b3LD<1u + $_ζZZW֒QP45]MVsTYUNYhszR2#ڈ1b8#.ϺCTyѝ)k:X# .0d0KR K +%J2&";Sp@6mQߋ c6xST@x 7廘hƈ0I&x}0 C<:c<6:a:5>{%/ +_Ʋ|O6dsقʈzl)BD+E%cV";Ȏ"@vq!b/!0a?%˴WqMTZ{N[he4<)WxdOBZDi:-m}<6Vh6e V*ʡ)8IESQ6<~Y\6Fڄ;8%{'C}>/j"PuPWT5DMAerL#(&G wC5WW94tG*cڢF#cڣ?`b;C1CV!=001XeX%Xttc` (TL{/Z"[ N!'֋|1, +Q(6ebDĨ"B.7X߇?Eﰜ%P ++GP/@9P/A% U +T)@- +uס ?&4[?V~# IKi2tA?u000F(pn} `Lal=l;5]xY(Dv008!,`5v ,cbJ|"kg 2,fs[-_Qqn6"B Vݪweg}4m}R2ۘBC3fћFzL+WMmjdp5~PY r:#lR^,I.zfL?}s( sMYYu"1čF36rfIU6TSZ쌔j\@քU)u&& a6{I Q\v؈ }8x'qlAsNiXXTm݁(ު)/>4qĻh#:z:O,$n69SmQvSи Veէ4n/Y"oNĦ`j1v4Tա&TŦ>~,Fwcl6}dP[[IʷƘSu餜M'3-^&Ij&q&g/gȊTƸ0Cԁ +FccJJ+W1WrJ+&sVUOb󭽡ΞvL%FAʁIea(|J_H00iJI@Wko݌Tc]ƆZ˼JhiGR#:)f]u&%8cL_d1Sh['}Ž\2ߝEaoHCPQ:pz,fUjz- ( ~ 1)eiCF +U~JSNAۓ qY|q?c&vj&+ҫ\/V+h;忤ZXBjwZ7@s`fF;P8UCbQyƵ\eEhaA(Ԭ5 _r^|@-T>k+=:r,یԧ`cm3g ʱη0I:cUIP=HGOU8HR/eAUxmEC3=x-_0^QZUe0 A`gFwYA!+$3eJFb+2b.b --2dB_B`}f>x{.{ygDI֟@dK#{֤Ez5Sjhnjz5Oնf,䠏\xmfܧX~@3z[u=`/V*hUH(v0K[.L\Kyi5i>}nIqAZ7sE~6b_Z+)r)gc컹$RMeT?S4g +]琾p!xQ`G {e8'IMyuϫهsќ%w}#U2b{U_ccz:q2taĹb?|bW)ܟ K%Ӟ~Nè^ȥo];RB +ص2 s4A? +('3yd<:羻 c5zy vH6/[)AYkr旤Zjc?(Ãe`0۰K8ZZo(vϻF\ZS[X[EyVO9>Ջ/ңTF6/#C->}/jܡKkH>||3ZkEkX3IjBBmՃ2r;&fhʷ^ë>q=u,}mj}.(Ě=ͺXd o"dD3+϶?fYb(cȻ|?y1Oxc2Z `|4F>/a^82뙊9OIu#(̋R3ϣ9>'^Ӥ${!c.zj=k6.|EڂB>SL֐?\NJf8{g }S+'R]c\^b5Q\k"W=wG,%[nadeHݬ=;xWUq@BLY#@,Kf*DVPZZgdڎHUQ "%4摎y3;,9[ǘ7Cs_.ݰAb2x7qh9C˺}-kr[2Ůt/;2 +TY4 8 >0t1_Q&+z-6PK}Q4ιW۴d]65Ymqe5ݯpd3T:k^t}cV{po=g/蜤y'As x0dɫ ogUb8kN OѼX&O=xvPn'K.X865 +12q&.8՛z܎@zqO:O,dp3+-+Kk`kexqu%6A-|x :r-\ǰ \4+0mnsZ̶_=逌N3b׷!GՉ͒i!ޗIM\(#j"sfޥE5K2o1,?ymySޯ.8]4}T-$|6i$VνڥVA4gr#2VY ȱ~%*~hvbd2J̝w/4;IMCXk<{ֻm8h9wB] Rhebv3{:9 ]j G2׉> f=G+u(A׸|]?KO^.9 ?=CF3||7OԓC:>^Q ϡ Ajtolkav[M㞣y+]Z V߱aG`vg!]Hu|ʝx:$w_{X@|i? |l*|嚻WCf>|1[eͫ޼>X FwVa ^+ކo`|!rqRfgK.5R"wkR3o+gF +qv;g8#;&.lv?#)F9 .]C\t{7B*!vN5qC8r=R$y[nwFK(YEa}bvV;oWK$Ā%VM{>BM2:Mݪqsh^ +N~x,qVa ?\o9e(IF.c/  0q L}?|jm$ܛ$ގg%[,u )Q'7 $yϻK?ba=VP_7avOzYԪ>u +b)IQkO g^$:ֿLLAtvk%kH,MtWKx9ĤjN-Zԃ䢧?-JhHu-w0Pk[a)1KUru2ZB: YN$M-p>@ڌ'/X?б$I/ٯqx(IK*1_Oޕnlj%_: vdzHl,U2BVZ#du{jPqVPF *`za]t^Ux(Ŀ^p\*+=<{xEZOUe8}Wd'R>ldK%S+]d֍{WՓӉC6A>@զJ kL;$f8t8>W9]XVKroR_erJީupu ~P.Yfu@L-&Pó>6EcoRaꏍ[x'vH/axW9A쨎Z,J|g{5gFK_qxo}j yN}y}劻pR +b@Ӡ?iDFy%C<{x{-kz&{:yW_ v!XDO-<nj=x:vAz5G{kwȄ. :֍GoN}E`=]y%ͪh|KrWhP ? '@M* MמMw%Ig(v=OS𚷗[3MHTQofԊU&H!Eз_,$3m>j*JLEk* " V&Zm7ǘ/V7{?g޻o̚VocYO6͏7\ e Y'ufo=ds^Ȟ~Uҏ#,{ +ƦZY1|B_ݯ[ ¾/l鞶qsN5Y%{C43ZpKVQįO1v411/x=$r$d@wm'3AhE 㭲3oi])Y]==Ms n/o؇s%uzۗ,|p~Ml%\{l'Ii=Rɖ=xΈVSɽ1тOxÄ+zu;Y{2+?$#73-Yca|1w;33ϒ>stream +H\n0 y +CZ !M841Q~v\u"9 QU?׶!znp4޼F൷j|߅Z"74PnTE%/z2*z}o5D͹CY ԆlHW8$2 N[{EUĴJ(δJ'.n*.c +HpJ@thI}Y"06cm&ڌY.3G#s%\1OĹϹ.3> +endobj +120 0 obj +[121 0 R] +endobj +121 0 obj +<> +endobj +122 0 obj +<> +endobj +123 0 obj +<> +endobj +124 0 obj +<>stream +HWypcY$[2$`%K|d؎/0 #f !M2M!3)344!t mIKIRh)ѧv%1$}oĶQJuFQdhmtǚ+oFWNt?.vSn|Db}|0-v:QύOlJG:7~o]Oq'iv=њ@6@elh5kL<^O4#LD:;1(1MzHS¼HF4k1WHO0^5^Q_fA> jb,UT6˽P7E2@] +e۬:Xp9Nv a]yv=>e,5pP 1Rd$HT4lDDciu ᳏lk>esXȌNz>o͚U`27JT~O6x@ [<59z[iֲa=vJfdZ$+M+z$Bb/Ñx@Ce'\ǜyi3ǺnծOyLѣ;DKxEzj@-=:'G +hg5hNBT:kxz~:liS<Ń,Q/Y+BY|f]EUq7GCBlȨ>anA&¬gOXw'9t̬)5θs6Tw)e%{d[RO)|wĈiEM +CdTt,*PUR!d:\f&W^`#OS+tAfCfBR?^"i)~JSTɏ#4wP5,  tiPy1c}uw`Ge<@S_i%_-J#E_KnB\w*+B(Eu+*VfLrz1S|Gw)"|X} }JleaO><Hs?]ecL2b{Soz|TmTY4~;lY]|NڢReE߄+8ħ?oJL%zRĽ r%|# ߏmKdb]KO/}f1xx2rVgM͉B/lLd_,o9D͢v䞝P*r/I'l'X1ѐyװ| W TmxwuUqw?B ʖJ%Fֲ4а;0l) TiVSE-) 8b(eF*Ӣ2B XԶX({,K~}9o|a\Nib:X&yNgl偩RƇ;b63{o|0^&LE\Mp;/]G'foq+ZțUp| 9&y#Ƌoy~ +j 8ʸ_gi6I?MZa[6?4B;Q؜FGޤ|Ofo-:x@:Oi +wya>sՕ@cڦӈn|Vv*ϪU?> +IclbKI& ])5Ʈt3ԙ1''n#PY*͕EyNMnMyn(  &'ޒKƆq&n~7-35>Sm4WvX8Z>f}Bna qݷ.Z&Ms-G)nu^ȋrWxG`/o<1؈΢A>&ɣX^?pcECiܪQ |uY{ " =ޢ\)!{EB'us +/_ݽo7Adeh%47^!1o5߯RC;V33'>c-ae"a#j[ktz]z6\~d) uf/O bS#ge3@'@cړ +e +dyY79y^ '_CXH oaK)Q7סw|$%=W۽ZO6Axwqx3ŜjgX"m*phaJڔ*ہrX"+1 g?d1DwV>!V{ܩ +յ1]}cL-v2cyGU){:[q$WU,')!O2=q]~g!,7G4uZo}>q#.ԟZKi#u 3GG(p6];_VWB×:O~{߆W׶O ÊY`,me/9F{Onk uBK9_{^_{1`#-|?ϱiw:xB/&l1j|9uܣ#7>KImcwfk=x/3/n;4nibg'q=zV PMIc0`'i-[kiwQg* Y ӫoÉbE`.Xӵ,Go3&<%w;E癧Z{|Z-Ji7Ԁ`7+w5{p8&phdȞb:_l&`&sI%{n +Kmm|='wloZy{q.wpb +g*CFQ;N* n^0 cRx# A x{],͐ ;11Jy^ E8LR> +f=flMl 9[*'޶'jp􄏻]Y[>X.{l|uVJo6uf66B$՝^>K:92-XVf?jpb3b`kiA!wHdC@Pwv xglIA}.5X$ ܑ-=@+[ɳ{;Awuu"գmL}YQ{ 'J>m7c@کpj;ٟ?bg-3B]OER:Kȓ;"ueU,P#[9uUj4W= /m!w2[@ȶ cSƆO lof4:'Zcsa,ƢKr{M>ӡ|%ouygg7 #އ0z)VCץO/gSOP{do.&gWKq^ ۓ+\?5P}iEI{7X{t5MB.k~b&q?n!tVqōJ$y;}`RyA +M=%SI*bySsE- +wN5LbsA<64NPP7A)4Urs맳^B +yU|̧Ϩцw=sEU +3T ѫ1 Ӽly +u$7Z3ΛbC< $U{̔dbx ~Ԯ* =&w2z[JgMij\<Չqr 04S" o Щ[vbL}}vK uu!ttvR2HWK/) +T.je"9$ƋvVU|kd)qK;>}/xMJoc8ŒiA5H (Xnx,)_W>h>do7ͫAYwoǿYkp\ -m -'ܥsA2М^9HT˥.Oˆ^!R+ovZ~qh6^cz%;#e H97 "pbuc$"^-ѻF2ϝJxRLk)$fIӫ$xӧ.^_rt6y +bj!0:(bG[S$8LsTl9j`g"#j@;ˠc]Cx( +w;ُUk|A,D?٭nAiڅ4}ǯj s}-Kg]חH\Vj +䊆FN j0Mq=Qvh|GɞP9ni&YR,ҬCΊ%k +@r#m[BHrhgiBMdfeצȡyi\3rCC|n |@os]&{@o AFy̑h|KZ_0^ F<|^ "4 +0 ԃ_ZwY(splhx{A ?2Y +?_A d l ¼W!̳~0J=A\ٯ(8猛IJģtI0!ST +a cIvqנ--v"qA3S`Rw7vyox>w?֬v-״sao]Glb=;UVj'}X ,y,!b7p8KCW05E>stream +H\K0໿bCQ k[?&cWXc8#]XA#G2uslt?nGy^+x኷^{y}weqht7zE[fS+<*W}ف(KPعD/ymr]ߎ rQdZ7=%gjo]laN~Gn{\#+dH"!łbց"ΙpΨbe$N:bR8g9㜕Bu`XϤ+\!^2%3d|;˨*_D Uy^m[Unw^=<&&ֺaBSZk|Cf4`O +endstream +endobj +126 0 obj +<>stream +HWy =u :ApcnZۭ l~|$ +/w DMMaڥJ`莅q(< dTX:!]#LiY߮/P$ΥH%W9[(2ӫсО ;Ӱ+nU>\:aJ|6T91S{fWoyvס5.cBW5pj^Lv> +endobj +128 0 obj +<> +endobj +129 0 obj +<>/ExtGState<>/GS1<>/GS2<>>>/ColorSpace<>>>/Rotate 0/StructParents 33/Tabs/S/Thumb 134 0 R/TrimBox[0 0 595.276 841.89]/Type/Page>> +endobj +130 0 obj +[131 0 R] +endobj +131 0 obj +<>/Border[0 0 0]/Contents(Kapite l 3 .4, Seite 11)/H/N/Rect[90.7855 128.407 176.788 113.568]/StructParent 34/Subtype/Link/Type/Annot>> +endobj +132 0 obj +<> +endobj +133 0 obj +<>stream +x\nHv=p## %Q*)[40/đ*ԣozSP`eO7JUI2+m,1؋&Sֈ| {b5m׈{Q рLL=?Bh9X:6Y!6n0 ȃ#_X5kPrJ뽱܅7) k?Ÿw%)MPc Bp _2׶;SG;S 4"HSLS{Hm?ȣt3P 0<-5҃8*Dׇ@+@ikG@:+W1*@Gq3v}Sk; Bvkb{AN:I-{0>![^ P(`«]k,ѯjWcq>A`뎽!Gnl l86"xkO!,]`ldE`Э,cO1H$xk!IҜR5pItcZ`voBWKű$ +"i8b#wܩZ.N`E# Ydo2(Q>K2MzDIº[sӝ=_v?J"'9وakUо ɂHh5z$0 #Ŵ~"Ң~gć`\*i VcbMMsX&OzU9׹Ab'wh!iQiɘtCu@/` Y;w3ݡU+!'٥P^GIs^J36l h?־z*}H[OW/ +5U[ +$\kb"75@6(tYaMK{kEZGSv;Ʒߑ5x;K3df܇Բ-THs ?H!Igh[F[7E#>l%9q>R}fyQ E#G^:-ٰ񦹫H7D8``JtK˽Z&NT*Mz05}:3CtppamRX@:0ͳԐa K {:`uZ#y`G ћʱWxf`(Be8+P +W@el3۹;m E흩$X5Q^VFBr]zrzjOscSt9>3)=&h6 )8?t+)0t|3V'53_؏f'v ~KT홽FXUr3nF"HLwѴ+:pJܙ#f + p+&uej밟+FoA|49E F2ƚll0&FdDrl;1:><ox3-i_x'hߗd;遮sK;ڣGH >stream +HVm <-euv탕RLƞc1C bذظipKhP`a m*'6eJ '$ݷ?7f '·|FAiG6wr\[=* +',1g޵ʓ9GykL=o˙?etJۭUWᩲq‰rՖ|F'#XR[,ֻsRAW.tuNtVMi\3+i\vp*Pm9M>/ExtGState<>/GS1<>/GS2<>/GS3<>/GS4<>>>/ColorSpace<>>>/Rotate 0/StructParents 35/Tabs/S/Thumb 140 0 R/TrimBox[0 0 595.276 841.89]/Type/Page>> +endobj +136 0 obj +[137 0 R] +endobj +137 0 obj +<>/Border[0 0 0]/Contents(Kapite l 3 .5, Seite 17)/H/N/Rect[281.894 222.907 367.897 208.068]/StructParent 36/Subtype/Link/Type/Annot>> +endobj +138 0 obj +<> +endobj +139 0 obj +<>stream +x\Kou2/rVAn֫ (]+^&gyC>/_1~] IΣ93R 0Gwթs꼪ON/דZxs)nV'2K>2-\N/N_\&ZjaMZؼivbLRbzr~ +gOOy|,kb.?ً'/.@iH,59~k(Zmwѯ']f\('r&>Ik3kޟuۋ[qbq {f{00m^3& 1L+f28l4duR\y[!xÔ38\щ1@BtD<_jӟF)|H' _0Ajme<^З?! {(8V@,6xo=qz$Hr{8VFģ/.ZoyY>Y;5 Ƨ.u$&vRZ蘈5.-TJ , +czk2i˯BN" H']{v`uE.@RE5(Nr% ++bq8Rpg /ͥ>NQx?E 'x#xXK!Вz+ߢI{2Bw^oK=;8B~#> Htr_ 5;88bBg#(S4?bM{f%g`mP.L\oԒri}9`F?\uح :}NwGg?s4bFbQ8#-o4!k Ӫ 3)MmH! +5:Æ]4ti#Ly`=?ٱa3\꼕l)Jpgyj}`tSFwc o}܇҈ +,7/fs(n +a5YJԩ[[܄pwt$:|W⨉TQF <F 6> R̈uy$CX&l=D.35<&̆- +4cf^G7mz "ra-7UhKn\V0*BNRבzRPqHVf٢Vt6jRUXsF4N 4Z_%xVy.gۃlU7=b(y'`mNy= 휿4N$E ]X2NeZ 5ԥځ_Yv y"lJs\!`c%5!2\Ptyr9mG⃕NuamZS] 5蜰z<3[9:6NQa.uB 5bהh9g zaNv$pwǏޣU'z}ƧðHk)x7ļ*q1<}37>d@NrneϺ، D$yf= tFY[VԅQmBYZ,D W$W^ sT% +U\!֓qK@]V@.6^w mmـxϸnSS˂R.J{b2 E%JVHC-*R:]|^a୨S~V~ܰ f]˫C\Q!n+GEVV{8JS ihՠQYv nnnͷq<>ܰ)CYGe7kv:u\w:X9z\¯d!GWk\j;fYBت Ehpb՜TzfʻCKڠy&mm% ]%̢X(X&!+. P;"W1t,~!l/_fni16:B 6n֑/}L\;4We|=MVF| +ϪY9h{;WR\y_լh=#d]bo+he [)[})Ou 20\B}- X4U?ȸjl"li)ڡ*I0CIZF~DIj)!H^On6\ + +endstream +endobj +140 0 obj +<>stream +HQ se^uVED AK Ow0@99և9p/e=ΐiZwgjh/ŴQ{CK &N^"ĴiyE}L\F?z#jO#KWzRmLC\3%Kۄ?SK`JT.S+] o;ΊKNxH;·-՘2bYAPjm[t ZB2TC#&ӛMzfWIZ ͖ (Zkp^O?k ՛r+4\XY~ex<>dNU_x({킚iqZ_WITLU M׾D5;- +endstream +endobj +141 0 obj +<> +endobj +142 0 obj +<>stream +xZr͚?E쀔hr5'ǑlWœJQ"DC2G'xHlr%C*'Eo>soS>0yњnl2'qB>)gsࠐqdTɤ$ sz >]Vr XOGC@HL_BR-<,=B>Ջ`^N=_<|HEwDصcsH\ya~wmq;mŦ:U mT^j-E;P1H Ԛny|6q8MXI0 u4 ~و0 ia,éeu_\;qf jzé `S"Xe} fzˍ}(U@#ؙpo4`<B.f ؄22}e'x7ǸU8$9Dpp|L]h1B#D1p46$E +Hos-N[2n'7U|G&=0F$6G$7^ݠ[W'᪷;QSxhC,s]CH [y\E-[1fOrKTFJ*M&vK¼d|l&PBo*춳isH*ߣ`W0{%]Ύm-`LhwZ[m'W8s π)4!;EāEPS`IuuDӥPE󂉻0 %C^ö鑟HpSOz aˇtCO/Gr0`IѹbO|u}v(J^>`vF ZOO` /bI7H)M{OKHj'l\fh".e Dӊ7\0:i;,ۏمy\ m"csyV0XaveG+ۺmR#㼝&A"u}CNbu>iHB{Y]T? ɘ61^LCR!}PPVm{#|DY78^ioԬ18je{*]ٔ񉿀;/?) +k;Tl _4c`$8Q#! c)6 A(9wcܑ ֟+qʪWm05S Nf#^5]%(Ɠݻ43Ħa(6DoE@.;p/mFmHmƊӛNP鵏%)I:w%<^k N2o-tɛvI3_S/9d\ oZx$Mď,r^L yͲ&j7F\ U]} f(BM~!y ™{;5'Tu8YW6WM{!D27=*(*SYk|Rl!f(u*(TRi0$-|\ӷ[MY:.LK˻TlUN" +pU|߼A;T 7ԶKF]\Q!wŚe׏ M" Aؘů4]6Oe7}l|3ݒؑ&=a:c;?|h:^&t KH&̭lޥ -@*h%ytB-P,aj#+?5.E;sn X⽧ga54 %&|ʃŒE4 큰֓9WfC9\kT2X@8qS^緝Ҁ~M"AK@;H"J6B~g|TS>QQ/x(Or\b K}y.klN//*,\C ?M?ү'61pF̌gy&|nFfE.Wjߔ0&A`Ѱ[2Ma2cTnr,qPrρBE*)tƑ2ڤ E2f,.`$J 4_?[zJm +endstream +endobj +143 0 obj +<> +endobj +144 0 obj +<>/ExtGState<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>> +endobj +145 0 obj +<> +endobj +146 0 obj +<> +endobj +147 0 obj +<> +endobj +148 0 obj +<> +endobj +149 0 obj +<> +endobj +150 0 obj +<>stream +H|SyT!a܂&VyTAe#"OTd$@ّ,l +I*( +JqET*V^}Z9oOy3|g~ߠ AQ~_nNj%2roq}!eR̬fԧI 4dbeco3? +a  _/Q..vF\aBG:p 턎&t4p]$\$ L+Dqrw|D&H{XZ."YqcB\(+d0z3JL" +YX(.L#wx!% @(G~IHL*xL,=E*: #E{ Af3 +C8E! Ad8!J3ē@6cH ىbo4q ⏨K[@hY#Habop;wk3Cg69;YKaak2?;,[ɬ~bG?  +7(w3 +T޴!En8+$0mznq4AcłQE&:<ȠfL"G8|Z |$߹@+OYB!d&G\A0.^Z^}/J +>"X0 @>(8yv [,Γ˓eqnq>)& RL>__E:)1dYGO`"j;[%byBTfj7i 2@_-nǿ׫UJ:MaY9U`gm+j0|6 ;r-p.'UKl&_/ QQ8~LugYyTu zo@{S~IQ|VV7q +LteyT YO4wpD@'Ŋ*c}ՐsM@TkTҫ TLmfU:mMgZPM׀`c6w蛞 5G*kֵն=2O{wQhˠ€şPΥ.t3',kp=T~>6_%!A_/pzq= I`ç*:yuv-m rDSTfde+2ot%]>-xz½a%(ӂfS +HcPiPE(C2m=ͅs: >l4YNN'ywQ UKE5nVa{WJ;J *OלRHՙ݋aCjWn>ag$"*6%fw񋠟_=յ=td}rwܳǃM+p`OK`t 0Bnw|wCz"7qgEa#%)l4HnЫJ'Y2:V -!5[1M7p.Ү@҇f{TEg008\iŭ VԖu`$:RI_YmXZqAK/]Nz]t2qbᥟoOB&Zd6Ku]ieq *'@h&&/ɱo^p!  g좃"XjKwU>˩W3@KOa=kӕX4.~N04.,UR_SM~n? Lkn7|Sq3,L[TSti*} *=M)}y*'BHuE6(~:[V*'En. !X +TO`PsiMU ϕzM'mKJ6Ң.:1rxH)ᰀn؟lO&4ӡF4EӮ9/_fcp<9!Ul^ɪZpjGr4gaARZ}jv{]YV̹n79^ҸM^*쾹w~p7/W<*'Xh%N'_Ѫ\9k KSW*5uhmJW&aeZ06mXh̺Z"t, J 7`HrKB̕$! "r *P)v+zݵzv?fΜ93gysN]C# \ C[bczUD<NBG)s +Lz u]aN_Ggv$j +1A -\.\(e4v|J9r.zۤ:2Z͐꒮?R-16bf.ǘGFE:8EkƎɻђw夂[ėO oXC ]\U7Ib#+;OhXm}d7E!)U❑ǐl#n.W>}_7bu S:rE<5_,r¨'F!: T<;/]٣3\#A1+7/"[6(sS2Am 5Ĭ4a"_:~s"Z.ygEA!J^ţU$ZT *[PSTTvpke!ҡ[DA3 +]uȉn +A%EK}\\asxw} )3F(d [Y1~* 1z~>PATT|FAW5ިEȥZtBVH|IO1RP:\b^&Q %FR/n&1w[t>EParNRy?3ؓ,evt'x^e4VSzi9m᠍\+]X; XCx>>q1<5mv߹nfטˈÂɣ~%  N {59;#$DۇP.UqC=:/5`swfgCCx$v`,7Lzle8y6qtOvN;!q irѹ;7ٷ_r:|Yx` ¥t/HF(Uz~)XNe*'ĉOAIV-2Q9@)Q9) kMdy2::=~5:84qFQ:{@Os%^>}&/I EK$I2K_cx^| Wҏ&'rӉ}%c:C;11Ylk61ЊI^3 .⤦٠ .pY1Q@ +,mpɏ|KA*x~nŨ0kL l15ج  I - FF!s? )}U /7'ӲA5߉n.:UG$f_z2J]y +WR\PKERPBūAWOdnd"u&sI|2pb~w; Wi1jΘ ިuֹ;1FzNwcM9mnb-3aqXLB߳g?xn4(;JDXY8LڝZ[\uFkܢ=FCfy"{a=uPn䣰C\(.TJ `kI{LqdKyUG"PqFFEDil^0bx. b SbK\'~ Za0]C߅O?w'( ?Ik O R;|4 n×*S;[Mh:ޞàxL|Q-eTx_ydg~ ?n_o2B^f̗71oǕTWUU t*3Ͷ:UKK8N`jj7 ד3){Mm!e?EƪN6JCXa79 Nj5˘4nW\{h {aCOH 0|9QQe AVL:um9!MnYURS% D8(aca3/eqY-mxN#syjQ[6iĵB *6Y # &ZAS\@Ū`6MZ4aؤ%};sk`slX*L[oC֬fG0HE%[L2 W׊[wg# @&7$q枬5]맽B e1h3li"*Nlq^wO:(L+/&qV--2pBPc=$'3+\nTMlQZ˃ xw{'gsk Lݥƫ`2\q[Ly ӕn1I 5Bhsn:\@ČK*sx9{hh vڀE_h^9Z,@IfR%l 1{ ~1Cثج"DnPA9>p8u&X`T^ {ko<[/9{79[6xKnph{$tVkTy,}uRWIkϧ~_T ;[k$4a,S+ʤGbkwh ¥jAZB|Sq--TfqWnF'8?G\QhWђ  |n +~.! }r9vtoF-/D +YqZIj?91SzFMFfajK+AQNKOY%b}vG/ݟ 5{p65FTm ;]Pz@*(K9>+8,W8"~qOȭuJII\.䦠4T4l"lr{HV7\3o!YKdQyAa"_q + ݝ&Ƌ0~m7h.! $? +ׇTXp[GlJt z^)ETdzQE'8s}n~&L>stream +H\n0E~l*VBHۤv~'䐇}rH`![o7ۡm3.]hfUخojf29a4Ue_<эxoG{{2M)m].4譙ޛSRy?_)bY(ӎ]>stream +Adobed    + +    + +   C&" +  +  +m!1"AQa2qBRr#3Sb$Cs +4Td%&'()*56789:DEFGHIJUVWXYZcefghijtuvwxyz + q!1Qq"#23ARabrBSTc$4CU +%&'()*56789:DEFGHIJVWXYZdefghijstuvwxyz ?J!!@B!!@B!!@B!!@B!!@B8 &.뙫zd(>ӈ7) +'>Iϱr{^&B9{@MB+ϱӼ`:ZP_rx *B !BB !BB #ccxw:o $D8>w&A^^&B9{@MBϱӅx') +8gH)²3 ;!s1\øP +!!@B!!@B!!@B!!@B!!@B!J!!@B!!@B!!@B!! Bqv y@NA6U޺m'8'΀uLl\_srIGB\} $BBT %H!BHR(B;5"C1+1 +!@]]2UDXn b&p; Ϡ6=GB!BB $sɰPX39r8yU-dquP.abHz踾Ẉ?%"T*BP J !"T !G7kjoq(@Jn .[PPmlN鷜.~B +G][]#xؠ,P˳k#wM ;!#\!@B!!@B!!@B!!@BJ!!@B!!@B .n\=+8}(.yTH.>Ā:6ͪ:5؀ozGBW2!@B!!@B !*@!@BB" R HP )8 +OI:::vYņ؎MS> !qm:Oۂ8񪺼NJo%|+P%gBkS{P 0'rhN@* PT!!@B BR(@B!!@ۂڙ!)a -[Q8zKS漷!lZڹ:@ &!pmlnq][+_!!@B!!@B!!@BJ!!@B!!@B FQ]^zޠRꪂXMKu6.NqwJD.!BB R !BB !BBK!BB, !$Jԅ*BiM)4S +yL(\^E9]w3vheSpsO*JgӸjpo:c(;Athή=+ |jGN:j{/$j5r8eGͫm0ҍ^ | R"b5k>#67<}{ЦܱItpK躋&Q3{ŀQE}*\TFbaʜuK-%¥WN h_ahՖOy:i|Έmx!8g0)ХOm1xhi^(Ԝ" ]3'cowJBqm^^#7( ߺGUj_/kV + hMi$FԧQUcI}Lƥ}xssr֪f8!jԄWtQz}MDe^;G]nTP(2©#l+|j ޹Nqk_gOV}CQMP>r~W +ʬW fyہ{T[ZS0u{8W+hZmP873q2Jhv:t4ťΨ9kh5] +䧄u1Yqޖ;n[U{(ԻzJݩxJE@jBV[L3q8qdPY_kh6$JSJ>L'_L'{o[E.6<3Z질Ǵ%RSa@4/]J #y<Gi|!rY?k),-Z~[f,]`OOfq:)Z޼4rwHښ8&A.leqa6p= /_$~%0S:z${ֆl.7] +Nݓ +8Z$:3J5>x=soj7{^ʑ-xJ͙oS#%^OVJj;CǑS vv{bOS Ʒ]P,:},#RZ|-Y6Bn{\^/n6VO1P* R+[  4HQ꾪&;]xfud +d|$i)PMAT:zaYU4"cikHkA͐d vFb0=dCt ù5UUQa.܊aҘ .݇[(^񚭢KQXYf '8pkF=+A T5$cx9#bloe&ƶs v1sD9{=e{y&vx~AaURU}Ø#x󬔕2s9'6B/C@UkOR\'haҜV#N SgXҊwe˖m;UDE^ޖ|a`24YKWM6 8hp7pZe3$ kA.sk@I'@%*z|msf$-ӝa6a-b(ʽ(R%;7X,jfz9{7N!^/CUx{icv{KA z(*4WbU5[SVwkyma_t±pIt}-K=쵰}YAIEqe{Rl = MֱړOzJgع>bẓ4R5jf஽ďoʧe^ch#ðpF^XHFw;Wx@!@!H")@B!(*)t9m@*zSicKMQUv7gqwmcZe8ߩ~S*ی/bI2Hq ~%}FJ1M̏q)۹f|cHH |-5.llfM}vjbnCǔ,t뺮6h%OKK"_ݡ Z;.ќVt 'NRjB7gw+UԚ;sRKݴtϖs`8nEz6}~/.88>dsms^}hq)I"+oXmm|խKyƳLjTsYd沫}z4(J32rYrf>ǶV4AJ;9DO?+y'uz͕VŔ^,}Ob,ySxB +!(՜Tƭ=K3;n +U yN;Օy!@B!!@B!J!!@B!!@ +}Ru+ߺc TT#rΑ%RB!R"VcȚ\[]E*+h: 0@6o|G*6= +R¸J +j*q*ʜ\o7_E1ǚqRi_tn/ 7I$=S))[#1iP:٩8˵JWQ]*E-r-Bx!U4tt4:9+1* +|qko؋Y%knJ]vfG䮭p>u@ 6qvarxS3r$nq+J,n')1&,0< y^ GDQᴍ; +:l ,ni ,VuD5 {֍IY*fŪ`pkwB8XZc5@q~\7,:@rм'TSx\񹜦1w# 9H( g!v;V8TcUVGO~nvͳ?rSX|S{龠[^lv;eQQ+ĵΚWt$3.V>*(d MI)҆Htr4'w_]O-ML(_$!kFVco1N 0v7\i9U. G=dFC5l`6 ru18_LM73E@s)EKN4A ~o>YʩOƌcigwأ(<@6q77HB!7|f-!Y[嘭;z~VR|KEl>軃rWriB[#0 ֞|&5WAOPVUղr8ΦǣA}i9]>ϝ?KCVX8y/ia}2!jƥR{dR;#qr>KdX?8͛/=1Zꍖ"ljE<;D3!iv?h捔PW^Q$G.!Y6&8ɩ^6͘67\0, 3|Q:` {2Jc\nvX0Sީ4- ۞+J8emtdY ,) \4/]Q"TYW;O' p%YOdjSE` Ę/vhZI,ok*Nx|s .k}$?6_;q ğCMW],gf^ d1b>XXfcQ~XV!CH8 Qe{s4$04c tOFL&jʷ$Ռv96<ݷ'1vmamw/O褞ijI$nik@h ˷30FNO&X.f6U)@ R%BJ*P !B'&R !BB 18* _%Tˆ,;a/e!č5 ؖJGG /nSV0ơQ&h骔YM>Gc!f3ӊYyy /yvgLN:jJcC9 4-LJcI3`Ĩ\YEh' }dU 4s^ƾ`*|n:0yȥsI#.bZB8,=FU:TV4]IU,OFR;ϟ#N8i*j :O.Awm+WbU!Gpyc. O][mwQW%Tu6TI/{s$2f5LRG$oc%jyr;Cg ka\o% qmaĂ68 B݄-uJNŌw"!7z=P bImݛ7,[.!Z/Bΰ+=.&6Tq(ܙ"Kri߸Y!_Q:T :r]oQ +RNT`jF98!R8B!!@B!J!!@B!!@CŤNnXn;&~hAG<.$J\ =fDγ^2O[Vgv\稘'дK յ2g)C{]HAg+#[Cp!Zhjvfw|ҎDo/ yT> 敎YsHpC +Oֹ-ᴱǎNOm[?*Vrggҹ+D!ݛ=BϺA7jVHt*MPŰG%{d8a)-k$?7eUmgxzdu!w}/R A~5ѻSF9ǝV6Gp\C#Mpl>f75RDn?yÇ檊F/:h5ag,& V!,Qm <0ݎm5&r)c_r-ӆWRxد#uMc$lKS쨟pdoq=OA9V0>KZi!?* ,ESWUǰ'Qoԁ~±5M%$EQME+h=+gVV4J%t^qO,,1NT5Uw@ 0H z sۖK} tK|3q-S'+ZA#g+JJNDŽԛO5&ژRT淵QZ[ȓ>fp: C.hnMh` h`+ݙqݍz?L g:4znO,x ״oTNixoBSfWcj]F3 tSWaRAޡLO]6ZU^LgB̐Ҹv+ĉSdv^O7G⼞o.K0Yge?%YO`L؅L7fv9bN j%y^=i{2=}鋳WA]{-8i"gHclvڹǴژڀxO < Bl ͮO;PBk00o<}SI5-=\W'49i6F:VXCEIUIMlܞ֡nφMqe}3tTo0jxVNƱIp![1㫊MoUVv3YhQm4s_! B 8njX>%~գF} k*+;DdǡR"B!!@B!J!!@B!!@RbNuQXCOĥ(ǖ\Pi;HOOLTU67ټw U,/h\iƔ隺;mJ{N:dԾ+ټ4W +.'9A>s¥.>5q fbSz*OLڗ!F`pV֥F8g-2ga)|y% +mfy^9!B͞ӪK V{0Mm"6^! $ۢ䘽W3bM+vY<Mx%n߾vӅ|w}CZ#[e%?3|> 67.wSc1`o<7_g +r-bhTIAm^O5?1u丽O3c>z=J[m54Q4FF<8q̛(Gl\X]~ +T/Jxx =5/frVTIh +F4Xm4D,R RFN**pEm9M&ޫȂ!% "PT!BBE~Y;gey` v-iv&^dZlJ!oD(\\RDaۘABEUL)k_)51dp֙Oۤ xOX=ʲmJϞ*UI^xr +Jy$:Hk^[@ tkIԵs̞ $tMEݐX5-ʅ[\XQvY!RIhDRql3>mCf'}ײUG `k^*\;\W zQO$gЫɨ|#9HـsH7 +gq}Ňظ~)#<i{ca +.̪'AqGTWtC0Ƹ9Mnu +jG MlmǶF Hnn>  54smێ՞h)ʆ5CLֵAX֌aihc0$S#leFK!`ܷ; sY 6qOGUP順@ =usι7`Km]T7dǽ1A lw-R#NP֗;BC zBj1;UYI]5`vyrqv:X{M2 )-s&;U4t65~{zi60f%1$^c(e\8Bmqi)3rZ 9Tg^ #F]aa:ɲTg...y$X>6;y2Te4c1O_aױ<̷1xnK.]nUl{-I skI9^g@XI(8G cf:x8z$uGcc.pv5  P !B;#z>)d2ߟj OS*ecLks= Xf6gB(Ƥaisr'zM<Ѳ:qZD[N眳aTAAn3Ga +T{Ϥh^"J|M}7llw#\j1Z: ۖ8LwZ+lD2OU1 Z hpI#7@Yiq}&So^0 KW'TN.D*Xm43kLn̾q:#45 Ąa4lqukeanRh#4H,R/t2 s ؞/=k,h:74 Хau>O-,m(o>I:ZK.RخSDZES +J*I$ʚ F[L797m-5Zn><& +ha,#Bťgq|$\ܮYAz'Rg,{9rN{D;Q' ]Sdv^O7ܳVp%YOdjSE @K!84]0^;K5Mt߽6"&:@r7g9.-4%9 ,{Xۮʭ܈ 6h͈.kKm~h]OSY8U#!E$t۶F|+ʬ6&6h_pO9$ 7RUsvk`"Z:evf#Ҿhsj_TԲ'.Xw8-Eɽ §4peV(ls Z΃\f;(5#IxZ2|pg8$48nk!pK-7q2<MSxL0P*bC CeگIuFK-̽XHSh(H1sܱ&N M>FaSc]#[-`{5k$,43{1Ō4G_+yHo2cr2{ܠ>e1ֵz[B:afi@x*#bMWHڹ Qc7IHs/0*&nC%ĸv (#1@?) .$ 6Uln@6ME]M #ck[Ӡ]QWK4>d &2X-uÉp%.k{ҿX죚d,[5qS;)@' s*JHf`e%aj6q^ "龷Hݞ.fh.7:E\t +Ɵ9$sX;\͗@s?e|`aH[3pAi#N\ Dxٚ"sfs^ۗ_\6Uqg`%=a9coskW@B(o^^ᔻ(,~U5@ +T(A@"!!@Bwk$k覒BQKsnB7/ JAj:2M@:n:T AM0̂p $s⥱b4/xƜ$}ݻ{[fCMu 6 W14ϑ:H=-sIn44Sh00腙DI;[ -0|RSA; 4G4f :t:YR`W:g8H /m = i;d[3q!x~W 4Z=uF)&+O lTLK@q˂Eu7еcCgk\Sny:i*) `aq,L%is +.Cr3:i5>xkI,h8} &h%ĀaI@dc\S(6*־`glxs=)1H5T쬍c3CǴ߈ Mg`Zx0Hv:&F +#٢sf,sдh atӲ1PO:BZ˸pSsfəזl= Cbdm6&2]m58t +¦6RK%aeKarKf-4hlrBR VKQ#lH"9\:<97&U Gœ9ۙУ.S璏-s! +DABB !BB ?J!!@B!*q1~lݾ@FY%VB 7cTN{~Wxܞg0t +e!L',p}oRjă/Pv: o{E:#|csf8U~){b jetnufa;ƴnnNhmQ-kECr{ŋRU O$fa^AQarYdnsаzqm렅t^&Rگ"&lxfKgt9+b\ o,6{izᖺZ:f09tm<`,xaԳ7+sf/kC6t(u '7)6&=7@YxڍKCxڊKCK]1܀\ e0a.;͚9pZm;}˚ pB3j&g: kLwS،WJ'5@FݒsU&R}}hB {\M n%XKO :oMhUO$ vf71 vP\=6 J&xݜ۸A ^AU[-bO΅I#|i,!SGUT5̧tm{sc_.h[&nܒw& m~UNW%s9`ESml^ӡ#Po@58X +ʈiyWP8TZ'%N'I 8skpϿgf9*ߡw{N;J37ٷiZVg#AXkճ>f2ޔoӝa+59bϵ"1M_7hW՚wnxyŒC \S|2z…~A&!*Vk4&kzޟLD;Q' ]Sdv^O7p%YOdjSE:pږ-Ie7\tYO⮎xX2|Z\ZӔ}7+E=dBkiaҲ5bU| +a:FUFZ@.42@\5$A1?gX"ၑ9퍍$ac,n:nj[L8R+ \Hf 5ǂx=xƙgӑcNKѴ0V1FID10.d-sOirTILcSgp`O5#3 3ewaKͤy{k>knk,_z<]ٛsZs].'+ٟ3+$s#ÛicCXѠԠ455)IZ V7!\MP%h |1W4'K p]bٺ(npy{A'+ 9X~XEJ2=h +h)ꂇ0))$t!s>V_#\`Ko5uytG:_&],mrBR!@ e7u2V^dk^@qâ1ّ`Fd!(TʖK*gcޚMlwX I=#SQeA`!t!@B!!@BJ!!@B!,.Lޮ$B} 5lz^Y"K3$R"SDۺLwj} +V  U;T,B:n{hX  =nʣJn)-n'anSQEYd"|\_$nk xSҶ،QW1c19 j iR 3m4q(P tMWa`OH l2VN^bd!ĀƵ|A&2<> 5Gfp `=9Gg˹ˆCnq>k* +՟ghK+K!xa?a%ϩ wdptn۱Ao0:}ZZ#|AҰ}; +<l0ofѸČ0 [ XؐR >::x繁h:Ǡ-KGWOO6;;2f־(~E5kG3mʹxq#-C +Fk"7:M4qp8\_}}+dHX^c[I{!t%aik H XG=QCcm\o}U0G,{Ǒ+O9<݉#H;)$zmu]d긘8l\X"sgnGGUt7MOi3뻙{Xnйfk7A. B%.(B. $Le{C 李 +vZ'};g[.+պԀu`GԖ,1KɃob7 +8f9y摑C s5-$O7.*S/HKy0pqCcp@#qCK!#-4qIVcc{6=K5Q#!pK-Healk\T~ ;].%\(]AЁzSJถWG/"$x/.r m^9 N~;+HL~Q'M8( 0€D,d܁k8QM^Tc)1RKϙ]6z۲ojw"%Oڏy<Z #y嘢-Z~ 'KV,$1+Z8Yxut#Ωq}p)$Y\"l/-tgz +v9{s +uX8X\]q6' $n L iIyt۱1}+ii{m;DNlp&B"LTw< p =I|ko{˚2dkah 1k誰^N*2tŷdi9ц푤 <؆65@K[p5pTasT#+{p˘P쥣W[K`[AC<$PڃLsw rObc `9Z,3Ok3j3HF!wpI#x[>IWxnNhħN2c]j;;UF7O [;#lNc%ghvfssCxkjjq1*6ˆ& ^ok@K9A;$4ĸs[hN^pSccX:GE֖gܷ#xC KEi7&'SxJhseq- \3iCuh +.QB\ ɳshq@ ~eNVfk&k{22݇ /GIPM-C&ta1DH47K;$,=3H\Nztr@pN2 T}SC`..7V2.[)xmulZ#H斃a=P$dsf{]s|5hKѥ;_8mm"53Foe'Kou{ul-k79kiu{4DU6S'h,|c@7SgqBwsŮܷ4d{A@]EQ$ϖ X-.v_#]N=N# |0o,ʲRަ7Q90B:| +)j aar4\'@5:, F5TBv1K֎g47r3/lnl1 jq&W=4b&0.mp\56 čsk vk sGMͪS4i5ε<">YfWKZ22:jH$bZ11׃ksH6-Q%x@\.qVשũ# OU{.Ed3]yk/9Bl;-ũp}88?CAA>R 3,~QkߧA`@qzhdq=ZA|>C,G+i!t1X,c$颷ݱFV7AN \;@9| bX+HXNfkߪBXÝ1(x_{=mקE%s^X^Ml-h'OuZ0 G5F yk -$Gֶz0>b$͘33 cc-үS4r36VֳAֶ/uΊ,Sx33IF pm!CδV`SC.v[W\ȩ h@ u7: qX.1JdY֙T{M`}t٤:vs^2,9:-Jiich⚝o{O1 ^\I]A,QbsҽGpk޴ 9\sI-?lq:w9q|@n&mn'Wϵul`1I$I/ekw7&*/ T9c@ i. jpe[PZ#HqVQ&cm +~,`t- 'ѭAv,F28g7oA19'6t+HFf8u, .&i])m$67 En=lY\;W8jOO( D |̟v# !e7 t'SJ0€m>TJ]k)Jyp}Cjvߵr!YW;Q' jYK8lլ{?k)" N859KfHc)C8v+W+cA ylƆ,:[9j#1qrOYKngAKE%K\sc9M@.ӥqi b@= 6n+S"kA9q FgC{/`q t.tT.K\5yɼI/$4cr$tnchFB4Y[uI`JC`jnjY@VT3>Zi"4r:@❣6vX6&6O=eQ%.64sA~M4i6:t~0 w+8#YMuzI QPQn7y;fݸx|ekI/ e AC `&SE2/cR'^һOnK9-\tXl./e>FنXZX3@iv\RǁCG|̃ ;cicZh kq%0 :ń]_MSiʉf|k!InR9hxq$0YAѯ0IS[ iF9tSWj䍍kK x-nFԸYbo#pRHR_pnKZ.r羪tlcġ n@_aӘ1ݣ|Ohᐻ;kHש< 5ėF rz.FVCC[zS ڗV5͔@afqϥꤳΊ6ψ]upi,.n|ΔA.0s`h 6aǷLn H" q IN<Kg|nmۺ&C|-a] |L7!vqLno*{/ҀOb[Le'bWP8kRᬞ:v6sApM'SbH^־J,x],Msa`,r=] Y"!nRPpz"o㽭.K1a7q\oR% iiqֱwï6 2;88 I$ +rB~ La#.p>pZ)4tFˑw8nIsOWd (@B!,'X]uK:w7;u$Fn[|P8NRA02zFӇ-c#\ivrܹoͽm42C5 U,'+Lnnv1/:eEn1FWyd\XW_+#|*ؘ04#s\AQYpBz鳲CnA$u)[gm %Rx0t=d2ɾO:[d-ce6Z{@݂Iy)L02^A89^BO M+,V:6企[;. ʌ[7ۃrNЍ4VjzC1ə{249Sc]\/-tN6nkbA~!!@ R%@FۙrqTA*MLw[B&W 7h˅)slNe~R>Ö nU+4S3y3"3<47sGl/,{ZZX-3w2}dff۞\~+leQ՟ ;l&EU: +:luNeud9ɜֱp61WeEQT؇d3M$@^&ZA~Vi7ЍH*e/L٩LۆD8uICpx#i.2qu_UQ3513 9]MKP$s^^K|#Ի1_Om)l!`c (ֽPliZͲ5>Yvp7bZ zIQ Kȉikby7 iI6q )σUb67$9ff伞^9]Ѧm8.N\M>[e:;ɹ6:lk(m#q;\3@.zOV7Sr=#EI zj_&Gm\nIҶ,v,uЩىaurHr1@NR-m/2#k05A6@$KCIaَp6 [L@\*v8̍%ݙܡ׽x6S +.bo)qBkց4=Ef5Tژ৥sò{Y)!^X.CZڙfP56Wh@TUQSN2`4|f%Dl;firojˬ81ͮn0:p@UÁ6S{$r7lD^mJB !*@!@Bcki ocaak--EA![{]cxw(i3$Ynp[{i~+#ZbY`~גeCQdFAV@c!p ζPr5cxZTlP/eeDy\Aəm-ںl sK̷ḿ:2@ i&M&ձ򖽎T6P#4CD u=C]t|q1mË(gksZvIC6,дY[`vwPWR$\Y9oa{:AqT궴:a+ֽ̅H.5/4&C,mt455dqtls|kXә׸ ju~ mCXݚl)"Zƺ0 4Pl"0BH]]Fqp4-+ n1U٤b!Y.:n8bxHYHefQ9.sr*nlj)pp,Xhq~QX\_ +aO)-k_Ҩqq +a?+La7 $H<Gj?|!kx,~+Bږb?k),-Z~M8Skk+ ZgI4Q;;q6Ocj:S,F-!6fpl"Jd{i.u.-Q[)=S#IM37[w$!BBJP*f &xrG£pB0G|v +$IqBD !BB !J!!@BWɺ.,Mo[ ș՜D4tƮmlM}Z5ΆqX}J$՞9]WRVS簮QZUxU^9d׺'fk iB܌TR̕Q[8YQIMQ35o$\٭eQkJqO+FYTnȵ *JmUQwmxoJQZ"Yan} i&:l uG}mN)+&[ npOc^-CnyNJ= Q)\GQs7Wåo +&`n{<K,MKxiZÇSS GlhX֋0`8IEHB:JW)jb{[ .JQƓIinu''rW(>z&7F1 +ϭ]RB؍S-ur۸B49N3QyG_>AN_;<ܔON֏$8t"/4Ybu!b~ O8>86:;Mɍ>OE"{G|*<\gg7]Wd)=͙g'{ڜmO)`z%GuvP|wĸ?k(< >18@ϧs+() cGěώdIJGq|sBem?DO>|%3mw +1x,0P:܏Q -P|›QA/K#.#~hCsjl qgG7sYEsWbllU𭦉ԀY(:e:cV}S2L`ǜ1 k'1*z ك3ÊNVC!|B00ud w!5+3Hop{tI+5~TQ[%O1'q6B,K o{t\ϩsdHCthlp$o %ҜSJ0€t?E_=P:~R*ea7e-mvD;Q' ]Sdv^O7ܳp%YOdjSEj[E8ؘl\mۢI856 c,#$4jvZX \ "&6&5tb?G)Q-\anm44f\KA%A^⊎PDȘ 9XMeE\4mVF k'b4B׼I+t4i$5$mu`t9$˗ssO˔6kHI' $,#U>>4mEݻsdFbK\,\*Mp`-/ߵ_㤠/p-6i^`w+$Hec ar7-yk׀zH-PZ!vGzzPd#sd4ڋ:DfR>Fy\#ϙ-VXf#8 .RES)sK3KnNf +t/S6x5:|uAB`*aJֱ׌CulihGzwd%ɧ;F 28 +,kd&ܯѭi;4Ukak { 8bՃ6oSRjprFFg 8s뱽Ơ[!PɀA5mi>VQg_&XƁ c]Gy-BZGNn: /Q_K,Ls297XX@!BR!@Bmc@l/0@.ؐ5:j @6=یKgaɈP=3:'8Ƈ ^-:UWL$np`{\Z\9H:]?ۜb/a:^vala6^Y2Riv*asK/.?,W؁|ۏ#ж˘Y&SIa77Qe.PƓ Ƌ2mvUU3W>)Wft?,$=7/+&IgE#bAk`"\[lmԀURl g\]ٝAS=&% te/f ڞo9䑨"WX\Zۃpl/~Z٪*,,%BXH9ZIpӤD )E56.wv{ ހOM.I_IFG^[٤;/* +96Zy HqmCu 0uND"T4nՎGzTԬx=2= t H!@B!!@BJ!!@B界+CP[ QkQy %Bs1)G9GeA+}.h哭w + +wхmU.^p[EM*0]/Б $ۢ63I3|Ü}뭚֚e}jJ;NuЋop_/6˝ݠ]3tc|jX56_G6VfT*pJ +Rɼ],ךx>Z5jC1R|3K9q l-hW80\&*[=}}(nM{%i [%˃8$iήJ呹=M^"u6"l^*fy}3m]$~Nw+;5E{gt4PS1f,\=_<C֚ʼn0̪|e7*R8@'uUcR>2NZkw-Sųc~Ñ鮚mFx6>`\~XN{cw:.թ:bMښ3Z#@->.:h腣Fe41GURՓ{!{`!!@BKb%@B*hYyhjj`cFX#fgGi#Anock*7帼)St{!JښlƵor.Fh.w`_1QT։w:1F3#O mM;A#lJ3` kds4FvyLclG%q>!8nMLچZٞ&vk+Bmś3xU5-4X64h2l{ijQB|~t-MoRs/|q2G2W49HA#]C0,` -.3dXX9!à(ո,fl۬uk8tH 2SܘP[\Z?IWT?jwm$^+7KtSdv^O7G⼞o-f(KVլ0&F.#j9|N#tzcqa0sH`O !R5s3]{p-}DkGb)`lvf\K)gH#v20\jONvv'Q%հ>XN[y+^nIr[[ MFHc,a yM6Sڞ_M#4bfWk`A:m5gv!6bQɢd1sCcwk.u] %TT"tPT9/x9Lŭ$OP᪡b,k+1ongyvla8 k ^>p{$Ś8wɘ5@ZWbS-`;vFxl= KGFv6k/ {I- n}KK c&`,4q=5v`eC/96k֐5{EΚu@vQR.s8)$6t)2$sw:G;3x=( ]nqc9n^M.tb{I6:Rѽ[3['k8k7= <? z8;FZ5'@IYK4#] HHsLl{U6%RVT׵S!cG$ fR qde60bT9s vY<lt=UiTerHӀsrۻ-n-DZd?1L7d41K\ [|.pfX]Kesg]͹M)ۚu o4ؒ/m.;Ž!`fks>S#DmmӉ ,TO!ms$\]f6`бZ܀ù<| +T$gz95}%i$7¶||1.Vn&]˸Zһ{r:Ml"MmCEérg駎gRü !+Z@sl h|)\toAƅ'1E{k|\1ea.O;rE8_[uJ ԁS54[YLC1avQp_![E >F+F\Hw` <ansڀl)Y## ysG4e9ׂsqn`m8.-Ke}懇gح]K. -27c-~l+u,O6'HCsLw4Y# <fcp* $y39"ǁxu"Ld 0͑1my-*~5-H$s:-gUa؄7w(7]]Mt]^l1|ү)D{wypu#5 +T6KsqviFi⨷Rr ,əmT=%Kgh7$dG6hIu^ӷZfu$jTA ;I3{r2{m.=VoeeyOP1݂I'^U\R]F7T6ZjFѻ*!h +&!;SL[ ǹǺk K5*>٪b8ɵ@Nx/|Hi ո6cqYYJ9vPT4q>M5=T|l(O2-$KO +lh48e"G4F4*HtuY5lOy.-, '1cJd[ ۫;%ًci1\q!s],w4P vo{-Ax2pN\-xvXyKxx-u,Ula :iN)˜Sa@f1 q +q+<Si"{C%Oڏy<Z #y嘢-Z~ 'KV,v;.Nֱ4L*g&tnKsAZ nt5 + faU4rIigsliqglѣy׀(hDYre}t;P\̾Ii㪨cl2ckZ-pcݧ9P)nJs `B\ %mb>/T$"r^٠d p7@wAFS52[-ÞlIԂEp/\PK4gI,saZB;.zfC4jxupo>."JWE %S /< 651] 3/cVI.̋ey#.S{Use:Ө"ʓQ]O8(eFc%pf5mh8qhVxIC6# 8%%oMfe8:#cX>M\lc\OPܕ]5dK5Ãcyͭ@a09]KZmg6qS%ڪWQSVӝu!749$۠sdeAZ^ +:Jz/-cCAqaa}=OrO!u5]wX7OOO2 +K}й e6i]Vl .z)Hn3Q(^x-,!idP6s2Hiq.b ` lYwp@xZmAy:I't$|Źˈ .kccfoljJ JorW=uq%HE]mƗ< Ɓ8!ĸnçOB>]O459#kЛn. K; s#;pZO4jKqԬ/ia <9apso{aOi)'{~VFfv36g:sOn,ޓ$AqyVh43glxH=7>Yr]dm6uqW(@A'Wgk͹-#B%H !*DHEŒ${:ǠpoizQk2Rx!R"B!!@BJ!!@Bn7%cz"ܬhK;y3YEedd*"&gC"5Y!`u{}mjScݗ is~Bv&4J_0adx^˦{#NDo79o8Q:cRh=mPR,wy v\oxT-#_/:d؝I~%W38l;H2E(a!@عD2/Ѳٙ[MT)|)TgaRQ$Lc$1wM5̿ދ^[%DQg+\ffRoP+6 +|̞ҹx7i~\#K߱|g%LdE +҆>V#tng]o;I#4Z&66D;{xsClZ7vNd$kdX7d]/zTx{[ٚF]1fف9Z1C42.r6-l|sv7 '$xׂ$ks89Y` cGC(eNN5t= ia͏D,@, Heqs\!8_KC#Y,sX{bO*5~cKlθpa6 {豳x7%n'$)ss Z4K-h.IwgR7w$} .o˝~o؞Saai&*CZ.Gwg*&xZ D6 |s9΀yCUN&n nln(ll6v`㠰?shf G3^\ֹė\E<4PB7A>=NyS捂:Kgq.Z:J~7m]F#Y-Tqþq5cpsH$XI#b%Y+/CbtZ! +*C-p6m`|$ecs˳r4A:Wukw]ȍfLļofZݡ7@e.ftl{]GZ`j8l&"q{H#P^-P0FZ9Ăgr{Xǀ0F:vm0Xip,{nHP.tDccCZX: r}TL=6ٶ$ G `7x旆_Z|ހح#sx:FBCfaɳ3@I T?уGrlad_Kv $C{d\6~tf!M#[4d{I @HBڈpasgau5H\\Yu,o=MwtQd1ނ2{ +PXҊ(v=7>zRm5v u$8@tR9cK mWmoʦ?D T|,вg3̍ko:,~^zjISVzيb6Jd8gsȰk.R(EYSL~Xjn%ow<؋] pLn)'s# #&kCskkr+ ԸtǴ08w9+[fiakYn5]M,05 yY#7c0yxixps\ClnlVzjÚ3+Xr g%q ܛ; #{YN~b[5,kpaİ\Әpi6[P7K]H׀zUISSx};.Kh@x|k9"F]HCF +]6i-pר MNHI@'P )<b\ivQWT7* 婄_zvD;Q' ]Sdv^O7Vp%YOdjSE3H!gmU2>Wsq$G8m ޸ -t;Hn -x~%]Lq &  E@ Kk)⌶(%+K sq X/c7oC_rv`\f2ݤ6$IZ*#ni֍u$$۬]DZY!XN$,f)5'£d{NwV]c^۶i YC–>8Z^0-(C{-rEIm&3<U ˽)1 ˁs;$`ۂz8KFV#K Qž}`btd"yE,> +#\*q +.$3CC)kY;X|I$|+>B2gX,MLjuAKLgk!{õ|8Fֵ$e9ǢM +ͩ3[0t<ݤhH@S˳TR=v.i-{9ZހFe,X 4[@@nF As6mAd`, +hiSPci, 4hzqK_whϦ*2v PK%BZ Sn4Eb7Z5@\*0Z-k[]<ڝ;J'n ܀FI E7ZmF OTVs#zDJVѰs\nq=  !BToVsj5i ai0j}6).hh.ec;\53rx)vF9GalXg\+7+o Z&1tN{tmP +m{۶4$>J:ZvS1mGS_Lܲ9>Ir|K~7 -,x\#mM;Gbfp$@l +:wf#m2۲n ;1GE @*zHb/(s43IYO+cwnt暢&G)`]@p!,Ad*1I3! i#@5)($hn.*7O(q},QSG# s|{`ֽkzNDBB B%_1wۢ5.vU&nVI2OD! +DABB !BJ!!@B+ms= +9q#i) +%Ku-F%,J >=tUC6O{Ϋ_}l9^1m V푈+}$ЪuF|Н٫j*%l-!rlI mX_UG X;sl!=jJӓ3;9W`qUE◖:aU< Dt<9彈 [8OWҸo%ӰXjւ`8lCP S4\(qIݫS52Va4˓;q(Ú1no4"ʤmyHbDB6,ѥurv3V$Y 9SO)i}x^u%Os}a(E :-$S3dss&gWlI,3 {Şea9@=jt{ ۘK\N_Tj +0\! K/|Ta#R͎W8O3X`Ig'H*,kp /hi>Q]uT4:)ݕvVB ;\IgkI6Nk(Z9򽏖GwO57f 7wOtP959nր44X[u=U+\ 0 Š4\e˶sTd0:7F4Bh#i`&)$pݽć[)Geʗ=ߵp޽0f0b`"yD\r5IJrhtAipwF+`Yw,Ɯh7bv7<<1yj$kldphq֝ N;N~ @1\:g.kÚZƖcǩp..˘. M^nS푭6|떵( Wj 4 -U0# .7'1@g)PҸX_{v:,Ѷ1!;[2uΤK)ieӜM\qcR^0K \H:pg$m{͸Z~Wez3+2 -vc]zI6E3" yc3(57R%ǡ:,ynN/܀nH.//@ G*KNJ%ct(k\Üo׊eӚe1"|m`v Q̹p eq yxy-lot1= T[+MC\7w,`;)!ζby: z +:͖W<8,Ø8YD1ʘ~{p!4AA. ! /Ĝjx$óTs#J<8x9mx/BfKkAinqU|d X {4ZAp_uRa/͛#yi̚]ǀ6=ãg6Fd=) +w0仝`mrᔓn:wt(*CC[f5ـ^%H?IQ50+FKc]!i9p-\ko ++Kc`sHagj8s +J+KXIEÍE (UuEM 8FcIvV&ڦj(X=.pǹ@CuujVǴTR=،esm{8 mv2 [lHJ $@GҶ51T169\cm:!@B!}5~ױ<Ä`ocrǘnv&hlT1u8J$>CunB 7$( K/UOJ("|>F7`#df:6- ;n0IT69dݝ֧Yk9Pm\ik!#_A !*DB3s0'F\xu(L˔! +DABB !BJ!!@BIwmz1,7ݧ¹,tEe r=DglE[YxBztn}Ԣ +N6G(}TL.,V+lVƊpE llmkX! e4 +ѴLtq#<.\dkp]8JrYXIɤn;ĥg=(NLn +41PQ3$'ͻ. kŠ\?d"i=}$J~s-Cם۰taTUMwE(,Ќbّl6 %׷)csXò9ŠM5TmNbۧPaDezܠa7o2s0H0$"Vٜż5cwtdX~ )K̓" nKXh?I3 + 1mELqfv1 ʌ+ mTIw49{csDs(q z +K PǷy-f/~g]7$N#hlLkƆXU5SC#˞m@TTc2"ϭC@7WBuNQUU 6 -n|^紹C4*8:(BU}Ymڬ.7I>A]f{@4\ܐl/?۩1"OA-+Ne{A!m:3t qgv STCELvq T9Jx޸g2G6ǰkx/ 1}l sej5U-GPH YgmO&y9vOZx18"UxξZ#tqA Z1徹x.I]TC^:xLCs@m) 8i)TSf4\9sAhxq,%TEMfֵJچ~v<+.GQa/sR.bk^ "vM WAjl"[s-w `udYّ' u/~՗)=Mdq9۶Iq<[bxX<Ҹ̭@3G#ݛ)qvxÁ:56 +a02!. YԪ|/CLJԺI|d3 ˟8$ $ -. IEcBSu/2\Ip}Tȣ 1,`pZ1c=n|osYwHRo)U4i[tE hBC[-˟ͷZf&K߫q ǿ~̬b YH^iB.\gMWvA1!s`\ +TGRBdۭsJvʕci~a!-ahcIpԋ \:?ebil43#2 ȳtՂâ˴[3IZw.-ݞh[Om.`t-ы>ki@7\1,V,֧ccKX[)myp&nlSns@{7t\.iw%si䓡hUP_NBC̈́rݯI 4ߡ? 30{Z@h -/aBn5t@LahČzzӎJ ,-/נU\Cxfqӛ)k`ysryI[7g09E2 8h:0f5 hH7kE*VQA0s$F6{Ԝ4%0.q1ִ-΄6X[mm\<Ǥtl2cs5<-\8fFX |} jH#E ÌS<8 s aq~ osbs w^6"{^$)ƪ!2c034 -q0k\9zA\jFǖ.H$4 BI99 m6=u@B!,l'SVj7f-uC#tp;d|k+R[Ibx!E=q&HE8kK: vtMF,63퍮$\%_Qc _-$_CͭSP,7;0!J$kssEu"ok#-F$F8f"\$A9,MbZ~]VHq,P_LqA)u͚[8p]ںi*l/W&"80I-:70wz +ݰXYN[ l l \ekX8i友 IvC tV9s>Y[k +TUѾ&UTч5 X`&6meɛ=T/4Ni!.gY؉8^cO`j(DȒd nHv]|!ްsi-=p'O,nd / aw4]pnp}mó!@ R%@*SOOHQ+W5^J9 +c~`" !!@B!J!!@Bŝ wv"{ +2.y(8!H,a^}YLsϭ Fd|;ϡ| q|#kʳ\1nj + [).-_dXnd{HܸxxsonZ/ + VL$e]=Dbr}2+7C&{'>Zvg-͆J={{FE91j[Q{3I;1%.hw8 2,,`RW 5+ƕ4qUd-3ޕOL~Bcp|1(ᜌ\MʹӂS02&5, !$J! O^S9rRi--܎Ez)18ߤsz.ɵ4l^3m鲥W Es[NKDS}[gz\|@+ZɾgK=.&Yz!Jqe;ݚT,خfa zJ9>772SG.w)+ |Cl=>R"ox]UGI8Jp[ OຯN},ˎCZto4y h7Tt?R>5ѻN8Geq1qCx{D&KC3i 2>%lMԊYY#Ropb`JR1[Q|/|Kٚ!_St^.c%}R»5av_b_|w;J1#s{.^E'/`tS/1aU]؁ǔGp{;.E!z3}޽Hz67:tbni8bt]V;'Jx:AĹd`<%p)]H#B]-!Zpk1Qm{CȜ;~"K~[7Tp|5mֲ$h4y>QexTV[ԦҭCJiN)˜Sa@e_Z̞y= @oޛm/.>4%Oڏy<Z #y%-Z~ 'KV,K9OS&!Y $63+GtNmz,}HMLu3<ϕ2iC\d$ĶB4h:AοLݒѽfEf Iunm%GbqɋVrf<=ﻌp88d tnbgo)驰ݻ8Xݕhͭ'PUHbm.j$Q9ph-_TXnM%(}\كdnaٹC@uUMd8];8kOEv Xm(1uOBkh˝cktFW:2v캒ѾG8j$!6K $Q":yEAѶvP0=ic㳾55!8r& scew^1<מB MlVQk+/{ єt\_< t[=3y;I")I hSy3q褖G+Kƴh Z;eR5W)``qX k1Ln,,94sf\f",>['ᆪY#vV,CZnGZA|VbH$9H-i\;_<6#p:f Ÿ*-c9yK:w4MPq(Eޛ#vXewo|:ZlRJK9Sl( m)jq+\ sÜ\4  ߤBH -_ Dm!-^瀵Q9l]2Ede$/->QƷRZgC6l׷%gZV3s=sNf8 Lv7Bև@  ׶u-Ks?\.z^6l/1@bm&%M^Ka \-QШ-[dn.2av#7 a( xp#1Iй - Rr#BldX$2m f-kXwYAŎSJ[w4rs l{ g(kC䛎{ sC`H%,6Ӡ{-W:sI qgyF%v(B !BT[Y.HXXxtn$%Qk+mYѹfX [~ߡvmFNk0UOjy i$:k Uǹs: 渴 ,pָˋ|!i=P `c &Hc5Wh,;†Xk6961-D:7/[ H#p9˘Zɷd oc<@<,UM7my ORGcLf@ٖkABZ7ou[-q斻PTjo-~S+FܒFëkggèyuNpa{$nWgpqi:m +~L^P%8opo}xXh`ٚ.J9i3u$<:Fk㐖m75,=aBXʗT09ss3ftA=ne!c`ۚkk7g33 xsD4tr$ˌtԷ+GSj:ٞ)_|*GN:iq<;9WQj!udh&܇.jxlÏ7΅6ȕ.Efoj PyEAwL 0n>gU{5[C Oq(<_Q*_yƩ0})0H{F+Za6YERu{ZMj^,L)B:ɨU{_PL #Dso:vOۦ2W:YE+YK^T懂 / Mcw#_+"-nSqmnz\Sojct1>j`xd5Mٝ3ǝ;5 7h_7>]R)] (vikXC79% \z1)mF' s㊠:8ǘvC 2u >c=qGO>3~W.a-"%[RP?nM4N 8H8i˘2Y\bv!`)qݳ3_ CrƶG4{Z +MBIlciu K-w.,O[8tqq_P0[(j$ֆGSiޝ +)%m#{l+,y%cGbK-wg8g:|'1 + * o.!Ux*lVE sd=wTiϞ$QOM&3B+d3:QZJ* o4ʢ]祜t=M,\;\V[K#|1,5ʓ5d)go_UE5M]`6\5cOy9:UzʴwGVZqS5-ľy=Kh^u Z~ȕ<Gj?|!kx,~+Bݖb?k),-Z~dk.uL0;4-jmk{$f|״͸NmXi:8۹ĖܓR{2T2ozp;4oV ͳX[# sV[/O4C@ytԞ'^+5xV̇ JY k5L9HAI6c;M |AK>g#Q[ugو:thb{[`?Xr{^l{{nu"5͘6i#"eCKY̑n]: 2K#fJHh:X2$SJ̱k@h 4;̀>MVVaYl-.6epe53'> 0Vft%9bBP]P_l)xui=°fL ihwv8РPx@j]MF^Ls)@Z9َ .)٤{-!,7Մe6+\BF>R#.-s;KG cvq=)6wkqw5؎ `ht`,BnZ:ֲ}%Tp.#GT,W|) 7j@FH$~!wPTÝ t$!T +x#s4s[wyXֻ7ʛk@y&`6mk$<"3Lƺ+K5tXfS޶BYk=@\Z-_R<LsC.cLm}p ko{:l# pF^_zMt *N6Q4ē`3\4ֻR#{].Ymi/[]66h`uWK;6g%JD h{Y4 +ٷ0e%`p7cE95c/ss`YQސ]Yl +qշ:"! 7z "[['K3S:8pYs4K̹iqGq%4"ͺi"PzcIvloqԤO`bN聜\;s#2oj\vPĖe08nw^ۼYٳkHPl(X\?7Q̌7.n;(bOC3b"%I1˚ıƞVuOKU9q@85@V֟71%p [)c؁#[;u:EpӻDfA+qyNb D! +GBB S\u &OմY@c\w΍s[v 鶫9ֹBZ+GeHikM[b3! %y;vj ҡILt  ZXM@~㍂7N/}#VY,,`K8֓ {0#ܺ#Sh`䜷76sEJQXJ%r.ě^8 MD`C^cͶX{{u@ˬyu+aK8ΏmyEpj.;)YaiU āuU&7صǸ,s3=$lv]ǭ6PRV)k!k+$#*ɪ'|FnO-# ^swq3I.nhW)Xj %z*1lV(UltzLjI]chp*0 tZlly)\d&cG#T6M$t9h#kX07( <5Kx{,t˵˻,a)*z[ "\> pHԮ,ln3ݼ \4Ops0n 9s"?.|0\+n8;p%@ `ۊKWt2_b7l)l QӰ1W.h{BF׻(hqu=D~ K#I5f) 6B&k4ݮ -k::vJ̼@S3LgoZ\,@4掍jgMx``y:$ik9Ihm#Jqg>6WZXFG-G4ʘ\l.{=@7-.n#HO9 'x)yc{1Ln[3M_g)*yK@CCiu 5( 3b԰yp/9־^NG3/p,k]AnR6'B.G7=냜^3ƲMrtc-y8xܛ-cavH nt<{<:T10 -J]kKh˔ xl11_Z6PmxwF![1'@<-lLIW Lsâθe7 b5k4 87 /^9L9tsxqh< qq&s,S49xA-`:܍{/Q',:2֙[f:b<4klE47Q >G ]`\u1-΢E<ǵ` `%P9AD#Gi)AcEx9 a,_竒TH 㕀 ss9n8݀aO3#Ӑ>8s4576tn +w8拐ˁ ݟIwx(e sx#44ڀ`|#Ho4/ě&־65q-(x`c8ü){gmƠ#51ǀn ǐ%cRar5t]8)ĸ0stw8t٣^]N!p VK6pkeI'ܦP pSl5^ur)fCy)FUcҕj598ss hm.Y\Nch^BR1̭W"nU}Sdv^O7G⼞o-f3p%YOdjSEY6l )ʗ,q0d2JPE˚YsodڵXOe5KùHdBB꟔Kkܛh Qlm rx.m~QmԽ|0 ͚25I?9k4M[9,fV9vX6K˖:3gmplʉ*M4oILF1fph-@gktA2:ᳵ\\K6#3bd&l5|m`Y7o#xp|m )ץOY^8Ӝ#)x* ,lmW|Y6o4Z 6 SA,oƱ@8:H.$9@`HUobޮOz+;峹ufMUu!Ĩ(ww傤署V^.Z\m[œ{kH5o[&5J BT*M(-BtT! BB R ! %H{Y@)*U#;Wwg!8EY(zR!B%65mLWKXZsXkw]ν 8%T)\{XsAASbjXrsLB@U͡4*Yvٱ"-wzb @<7hFLX<$Bc2 pF0_.<Ù0ia([ dqhc7f>C9vjpZAL|FG]͎,릯>(*j 4`,%~BC]6S`ukI_!,:2Y KBFZ?im=Do嗳E7Rlm>.#e[0ٜZ塤hlmbڬN7CNǹ pAp$:x'ARSBI6&Y^:&(YL4p *]s\c|r:HZֵsp tר*Fig vfgg-p׃p@j%ĩf06平 \^,oԸcta;qѮ 彉(pYǹR8yZ^^LI$`)--WA᙭HuwBͰTO-vSQL%deKou7BGOW[}NV L)_#IsV5$`jxJ' #1 ۾i /m5Zm9|s$cb{JÑqU&+M]QLr5u&Ur iò 2GVj7vhRϦ'܅suh#3\ :9ubq$hFP']vj#' M-1 zt@F0˄YnZ4i:)5xbwc3@w`tU7LA 8ղLGx] +VFZX,!@0@`Z3yOYݟ־o3z-'g_/hD;Q' ]Sdv^O7p%YOdjS4g%2|C #t/h{qNa]ն9 + ɺuN +5Ed4-FFl .uEКaՎh0ֳ绢1/ meNuVhYrZаxAbrZNV\\W2,PhOTcCa,bnb,rċ,5I5ؐiye^u y, n zAdhг0cx[&3ǽᄁ7j8uu،sym1kmq'@.z5b8ȻBɲ\{;7  -o;=VRgf.eE(c4:$X5⻋Cnh1@: rxs U Xwi%,̭p˹"%1y_e}<7,dy 4 h_, _Μc9^.,5@unW1ycs|S'tM}ZF.'کctG~9ߗ0hyefW.usaNZc3c2\HkNPt.* 2SQ04̨Y2!vl+4pMM?_PʇFshtٳXenSأXϞ| Z6ͻr y.Bg~(}3s[fs?hNZ{ jGzJUS{{r=ԫQ˭iOe+%i)N]vh +Գ$v1ϩ|+zXklK|{ )9_@Zݺs_H 8EJ"4ey|1xblQM@C!.w)-k#X/ qvaA;F<#*v6eq yg;Qan(@afC<46y[ϐ1!2,ZY ]ִVTLJ^DwCc Ί Ƿ=ߔ]@u2S29溡5_EzrgkA& 9ˇ6mMZcuΛ +%t&d{Ey$cV YLI#gdnZ\G 6N݌ $woplMh 3C K0o`IӊvVC >쀸ZnNk@Pu@SPm+ -ѦG?0k.ԻAK<-HCs5I8>QΤfy /dRGk2Xf +h: +*8SvFXDe#-#F: W`xZ9#;Z水5cw IZ *#{Z\lHU|MC׼׽eum"o4lI&9gslCyv޲6Zd{I =Ҵqc}ZM, 9q qD됃~(~T<y%tn94 yYKJ| +A+bŬ9xĝ,;P26&pܣ-^ʎI4YD$v-f7uBxp~1zIfh 5kqj;0"C%skMň pű[(\ ' 1olV8}ӧ M7Hh.G +M?7;KW4 @f,{TwU1Y/+ n. SO8\:E_F|*dLc{D[f\sikqY2}]۱!YnDd8ͦ\ii;{_Qg +d fλ25y>V[zZ[3)bӇIֿjJSz (BN R5*۠A(Q]7B"B)afIǶuv4 Գ.m40Uk$^ssmƄqZmToc$,EƣCб-{G06QTإ&'ENڶO=jôM>+w]j|'YR;,x%VrhK%8ӹK;~bŖ{NS㜲VS1wpiE~2~>-"/>M.譿Vj[ WE^3jѥ  Puڏhsc#vry/]Ky*[xU+6> 穙 :Ƽ)xHX2żsZ^A6SktqU7 +x $w:{FlnsgD HENel˙Yl3t_jm#3mݦ=e n{^ c4yNbљk0R8:kHhk@k}UQ+EsI&S˷x4olmWa;Ә|YRm⿪;lO!ΓzcZ/ruS HL;仉:^%c31(0<{.˻&b/`tN+!8h1d ԲߒQ@F6-[`^tfS{ZI'@Vf|zX2ކ᥄f4_T} +ʓ.ܖ6MƀN+.[xj 7CrC@ j! +6t \D]@n1.I-(ֻH-$4|WxR)%%&$:Ogb _-|b]wct験m]:|pl;@R) +:Sdgg3nkf6'@I$f==&jtBi-M%C^l{M) N;l\i!0 $[sv  Z S4 Z #1 6VaՏ8ۜBMtI 0|lvRc$f:Ьr[qhi! vcqqív&Cv^dyx_n{)@ R%@*!.5MӺc{Mr^_S[#f[X9ᐗy\H U_m^aVaAN58AMfҶ7d6GݱEwt}e;%{CK$ l@ARPS~%#= +OpYnifЁo/a)pM.ūSE5ݚ>kCѩBBgP(@80#>@*褸˘-H{mG !jJ:Q$*&Z1< qsZ- KM{]-l5m0Pl4t`.ywfM=3狮IC_!XӲ~&7hնл- Gn7IϴL!*hN[U 8:[}; 3bJLY by޵nu'E$|RP97\-g<+n+YOUC}hWޮ^b -gO{QZ|ojJнs=Ulz(Sd6^_7mO⼾o-O KpKG[=ZCg|}7#Z~9Y gE]3"u,C.A2rl]eIkX&-]-%-䄺`1V((ݺc_e44k gYYh藴;kYCCG||^pv4ƴîʱU% }#J_1veps8{ᕭnW!v1kn͕߉wR L^ˎk%ULq=Ύ<o~b7{QP)jv刖) u:jp 6[Dy_9Z<2sOq9fkEq?LZ/E`]Zm+Yh|FT/Ub_7*P% Y讨wH|fDqodBr^BBBSP,.\(^! ,R(pyi.[*2B}Ql\IT@,R8WE\)! +4PQLW03;^ǖ6-$/k|m6)b~j 9qs: ExAK;c9^c#hcajfxZ*JgT,1|dox/6.@j185mQZ7g1gEw6afښpK3$G<_BiA +ln'rRL`k#HBY=_)t6;[#mfMsC7-BÝx[|i#s]ıUl/ gᕭek2 aSeakiicNbcihᗤ^u eE\:,L:36wɐ\Z㨲@ŭ9G:3͹ڏghiZHsՠN] ZKA7to_.n7-~r&cs[wpͺzU0>3v_P4O@BT>B7J#9DPZ罯3EMՒ@ӏG|UaqgG#zg5ͨFHֆM$͐w=W ܋g{9T׼Fexe?Ēu˂ADS=3Ƕr1F j +:8ZLX.A;)VH'J!81%w$8qP]qp~&56XX5@hj|-ۗ %Q#o% 7m@nan̺4lIF]sZFktiv &C&xfhu=uK3|YTl{-sGp'VB2(&̴)mB jjcs./$J;E%/CvS"͙0٠ns~i1Pa8mCj"j@X<9L!sl NڪK)ii䚺w5fNƙf! 5ESPTME:hdkfv0ۂ[ 3eÄa3G#s{yfwxY[(X%\8-E;7qKRFkh, SPNӻ-[>d[he=okjfFڕǮC KvgEtU %j᭍E̲x5qy"GX2\ MGB*7Uަ7-Ԝ4Gݺ4V꺓VA!/dԌv z~=l unIhkC<屾}lm Q{ݫmgЛb/]QW7v4 -.%42qkj3qϪSQf/6']P5)K\%cgvi$sŵmT|>Ddusy9r84s@[MĂbd PxÁ1\6c.tc憵x4>H]Q9uȎ|[+@A^R/K@'Uf꥔4f]$;UnŖ_;_]aCNk=B6N[iJ`lΨ])ӣHn0Qc5FY$pK[#ZܥY, hð:ZjdI#4i ݱ77nlkHn|.! Km16 ssHfc<5{GDևCfIBKHl΅'Su +kkD0W֒F<`x FrXǩF•]l-~P6Dy/{3623Xq: +AXL,`q#K lGF_n;ULt-g]&DnK :YG1g?$Ysc,黲}Iy5}SlK&4LH-% t`K lഷW$47@XPvtssjx tfӊau%XHZC. }V><jKsh"w8L&sL۬kiƻafkX^Gh R =mX|^*tFٽpc%x{dvc6k2؛6d>/;n$G944+FnI7wrF*iq+kW# (ݗ: teL?l1zg2y!G BI0p<춵PVL]C]$Ŗl-5XВSSn$FsKul0YغH`6m4p汍f0+=>U-PuDAY\H:kl\#k9[q89sX44r٭ x}Lp9Bq;ta_M Ca4 ˇԐE w3sw=nt,- )iOor2QEۘm-spVT{X lW5]ee#F ).j%_"3(Hۨ=</)è剻ŮnFFHs,n 5[QJb`oicClOEvx&'Qm46:SN޹s6`ڬ& k*!s;憂4ma8akXƆ5,.B|DF6Ms6Pv=+=eyy+G:Z1fڧJ. +Ϩe*R226&U&z4:ͬ :gm7"H%&cZo`Mi\Is@;dG$1H[`nm:*eh:fݸ2Ss`!?]xW̲\#x* md 90^p5W0ږC .= {R&Ӵt{J`3 n U&{U-'#]>[^LrF]xpu@} xjyto/x{ {,Cdic]M%jF=4tKO# ls>6 sfA@\*X@D6`H:>͸30 [Y!! u +fh#X 1Y6曂掍-$lpp؏EPf"FswN+ki:[=H*5iGz +7p8??wG¯Di7|*#Y)dxSʝ%Oڟy|Z #y*xOCL糭9ZdjS^K+,WwuΫmZ-W.V!==94' BBBBBP !BHR(B +D!!@B + 04N`2x71֖5h8 +~1KA4i u-D×c1DZ\peBT*xyh4k%wFV[. -ޙCC o8mnxx@*2ԁs ðx)dkcC kT߈fOQ#>UrFC%q%ـ$]/n+Ӂ@!&>V#[#I;Ss͇'n 76$ܓ`.I7'UKÎItq&S[-2g7]>if6G5ҽq]bZs\one1*DB !Gbv9~E 5 u;eIfhBD !BJ!*ibkzX*|ikzqͳnkPPN]YǕکtjck$2K Cl= =}g5ǒMl^\ǵЛW ;8X~=)ton\mH7]tưzpN5aQјlmtHd&9CKZv: +fEx!bZIϚ{,b6|CQO<5}b-mfi  $S:;Ke÷]YA<۪J-a(6m͂pMU3P$qikDr]'U@R OUgbQGWwyU_- c9BRE6{w}=I-s)RZoqxnrOQbpleekiPcw.6oQ$tGjv_ d0b6N c9YaԬ+axԦP|X E^A tܒID/ *e,ݽHH\b{WEETG!8͖̿1ݥ\ @  fG<aq:*ۜ {!cj7-I`pscvMFwseQ[᚝ +9(%Ah.9HAd\NlϵC\kq&%JV~4f{ -cK|@l_am+c3Ƹ۸ qH 1H@B;K +x&i3j&d!~p +xRotTx|8Eŭsm 9i-TeF9=bKۧSTFG%=Ys$;^HmG v+YZ>C{6꺃.a2\ns\\Y5Tii1Ѿ8^ڞ7*}. 5%/[Xt4F!hij6TWɴ +M4QDl3 A :UELTqY^Ɨ9!hIJ84ϥcPB ̖f{corWȌ¶f涺 rw$_t8V6lqDƱnkZ,YOhwUlrOm#0OG6'N 1/d}F6'Ҵ>xedn1ki t8_Ut+zG@Xd-f&5sokeΣ<]mk,8ha.xR)FWpl zd,\5 vis˹׸L¼=Lkzֹ3ȳIMl7Mk4c[$+ s!sK3ESbKNoQQ91FoP'ltN؀x:!iDLgp%(59ÂoF"#3dq ^X&5'PHkPv;ea޲cx75K@céO6RGч^׹{Hqun,5vTl/m68g?{$c<08e<k)pvJƱoAhs|XM>:F:[ā,fVE|恠89[=' [n{$ylsf[i.AhddcHcٽ6:耶)hx-p:ث2BKCf<.`iupMO#$ 9YνNQR +aPq})'U-wU;=(Xt*6KS{f +z!}+^l^]E%]UQG⼞o-uOڏy<ZSYge?%YO`KbŋW@xL  +!!@@@*$J +!!@BB!@"*B !BBP !BB BB ʥauM{s:ʂ84-.ꧪ|dsz"#쳂#!!@J!wX~icoYUDGT!HLy΁T9cN>ҤmDۺLwk.;?΋{MF<5sԕGѡ'ҢZ˺WW_E4th `dkkl-i9y& T#m$FM&.y{dZֵ4j/r5 pO >a8L(q1cn&~V  B,^F# +yxg3 6;EN/p6*^EO>m(q &GKO 5vs!tmpxGvגf0569@$llh7_]mR"ɏ8y M%o6QP"g7]G~3דi +\)KUX߱y-|m)D*7u+x2CW=l'SԗjTS=mI봷YBt5Ao4nW{N "Utdn'J#MwWt,HJ967'Larx>/\G/:rz+1ZO*{~;9^*{ˌv(toZ&{(7R<0-^v]#0G{<3jΰkƔ/rwwmj;JDTs!7$6c]zo.^L>ڑ"mCK#>|jl{~|}G~pC,P9,=y}#Aa CzGxYQ[RzwDܟsxugIZ.|#IpRfIJ8N;ƓS􅸺:z3[8j|j&Q@5&0ݧ+nX6B*Ǚ>9م$nnSʍc*=l>5nU].,Nq;KY_x6zWֵr}b uX혬166ֵS5Io~Jp)ԧUcSdũ-WetO)6%KK3, X"..-c{quQ}R$qnesccaoO Hk4lp^g +JT; ,.c5k-~Aڈ$uw.ch\FbE]bx8Fֲ2-N'8\"d -[W8gxd%Ю6O^OonKLergM"%Oڏy<Z #y-Z~ 'KV,٫f==94' BB BJ%B !!JBHRBB !@BBqeG|e m LdkC  q#'!BJ*P !BBHK}g>W p=@Ә֣y)rB!J!K4Meuwl$B1w= AK(Zk>7RE|wх0Œ_:[жq;5B3wd\OwțԸ$a}|0aTz$VR0 :yelNpcApG88SDbʦA#dh=Yfqu_sTVWE5TlADlk3h[UmJ8t#Sa'R_G%3!uS::r]Ovevv֛M{ߊ~˖Op*64As#G$w \N@XŞ̍- Xu/#ö +2 =5ceY3_40}m7NVMOCu7MY籬@;dGAoc~ʱeZVzTl{UlJpvv UUINJPƓ|4]/ ,q:Oo;} dl)W`kBC}lQr.$"g7]Ei;rdY9`zEA~I[4,WE)ԗ`ujQAkoϜjH;e<4uy.PZ)ܛoŊm|=f"=$+t (R{2`Ƥdz4l;Y[."ddw69[sVZ.8j8BϦ3znqy,k|- +V[=EJa$xJIғmtB B!@B!!@B"T!*@!@BP  BBjB!@4PE¨ٚZYx+UkUn-*.eZ:g*h;QWa{]$`v+zvJ0I]+&#RY۽*x,~+BTYW,p%YOdjSEػ5qb<'0'x@8'&@B@BB !!JBAB + !BBP SI1c㝱ױ:&:Ų \p"4V.%G!980d7$ hm+F֙ F}{}X,,a͋ +Tm,-Q 5Cѡ:%6tT>.k!q`7eh*Cǵ<Ǜe%L)(yeD. 2=0K]i,X@=&˶Ը ^5/Hv^<˄،fVK˞Htmk !3 +=niw v\i Eȿ4@)19,C $й_ʨe 6F8=CԲf}BFպ=ݶu$(KjtbfyCro1ŷ#Cb4YRfͭ<6̅ږ z.yib,Bx&@IB !B3:pi2Zz[ۚkwEFYdBB ?J1XβOwUߞ|MFyG8S0v꺤hJ"/(!@BR%)!!@B +P!!@B!!@BT*BP J !"TBPD!B +TҚSi@0P +bG⼞o-uOڏy<\`-Z~ 'KV,٫f==94' BB BBr%@B*D!@(B !BBP !#ev[^~R|:t^":yA-'0Ps-h2R!} +8h%ṛcש5‼kingjit[b h5@a ],wJ܍-\ߣp"DL;(ap*ȹKh9DsZA&žI6߱wJbŷq=C9*ohXim4sf+'ڞq@Z@Ae˃rp76R!]g; ! Ҡ!BP׃r6᧶3v9$hpQp灝Rʎ< !J;P? g~wP%PR QV(l!H!@BR%)!!@BB!@B!!@B!T!*@!@BB!@"!@B HR(ҜSJ0€i\^<Gj?|!kx,~+B6jSY=Zf.\X5t L @<' ɡ9B!@B + J !BB!@B!@B,f؛[PS߆ r45#=%X![$X`^j:-9[cKNbH Z!D飊9:V,Kc-VWMїo ]8{VP( |3Z{躃7Y}ԤB޾)/y9Q$𭌿m;|ѓr_-bhU|O xLX?oq?Cf}8npydC{'-;?l1:ހ-'[Py /<.`wr9{=]WT+5U;ҟƗKNtm}{&'wƛSӴ/Ӄg KX+~4YI=Ӿ4Zvg|``y1gwr o V8WV?Kh_g|ewrx%ˤ,eW. dg5MW:? IX>И) GzGw@*_ (w|ttj5ziz/<]K g\I kS}=wRx.ܼ$[ CWmn25'N8^y衉G܏3ػy)'YPy.īƦs]-+`_d[܃zw/3ʳ|a'wƗKNо:6Mţ9a{|׿;Eit lZ}ka^aL8Ht(vӴr=9伺?^emuc8TL<<|+1J?&~KlA^]Y)EdGzW8~MuG#Ͷ#]/} /G6]Ig q_s >|6/ X0x-"3 ӂ@BTP +!!@B!'n*!" ;V,zǡh!~wXF9D1BJ,u;"ae g.&$F=pPYY),3$1tA% +mʚ!xPeJis_ Vh,)[]`* Sg/znq!|mO9vg`nFعi>g`4Գ|lwSǵ}(Rw? +pᓞ}\V|o Tm~OT>/;1ϪQЗ="DxO1|(2wJxu%wbbؿ4wH +~ "}!U.LT1o8ܾKg|$Sm^9? o'é/RbĪ|I%y>xGR,0v-GR_Xa݉|]ص/ |^:qv#݋Qľ/H 8-Gu 2.GRrԗwb_v-GԀ.Z@:_݈wbrԀx.ZA؎A؀x.ZA؎A؀'u 2.Iũ'ov ݋Qԃ[݉ص/I:c$8wbԜA45 eϭ]G4WPޒj8 M&,g/O:>ٙ'Wֲ GX;Z,;m)*l gM~ИYO35qzsdj +ypc-g"YW;Q' ,p%YOdjSEػ5G-n5 sK#cSJGT[-Ai7,E~F. fbU=K+Nߨ}2u=]ᲺC ͂]3<I>Q@: d.WxMOzo+oJ\fF:cGnSEbxH9556#Q<]شiH$s} <+ow'Ğ.LT1v)ҷGA* F=s}!|݈pK_Gנ::"x摿tr 5X0Q/%oKzѶ}T%05 e}7S0M趛٭?pϭŶ^)[)?ssѩBkhe<LTq'^{W2UJw)g_HX4i>gɞ\*ʉ$d/GjTBD ?JG @SB&I>u"eGn@\Z8ʚCD*0?$+UX= +X]8aQn*[aû/v%ob;4 ŧ4 b5xi9bNC؀hbNE؀rļh9b9b?;{#G#@Pr}r>uQP]rTrT/#G#W\K%G%@R>Ĝ]TrT'#I$G$@Q.Ĝ^rNrN"IȻ$G$@P.EدbCG؀4=hybNE؀ΚCشf4 3N\Cش惱0@eCع:-oДa@fhU#ŽEgDL|JC0;)):Nږݮuհ .-֗YK~6qg èGtLl| 26$ D (Ԓ*0Ԙz^e~!VGjF\\\OI%n-ТФY6sԺinx h{ACشBp@PCدbp@PCدyb^G؀]Eb}ybv%]v# )9b^Eخ'b9'b#+I؎I؀}}뒣)yb9b佈 +^G؎Gخ*9*#+JJ}}뒣)yb9b +^G؎Gخ*9/b#v+JH]9 +>E؎Eد9'b9'bv#+I؎I؀]9b䝈䝈 +C؎Cدb9b#v+Gؗ 3' ZG؎G؀rĞ/Z.Eؗ 3/G%= ׋ŦEb1Ğ,Z' ;WbOv-x{Fᝈ 8|/x8ZR6 FP:CȭЎGخ*i@SNrUlitW%G%Vg&G&V[nXQ@Wrtr~cI@W~r~aF_&#)nP9?b9?bF#)n9?b9?bF#)nP9?b9:ܣrr'G'VnPXnRPܙ/&Vw&Kɕ.]ɒecJ!@VdXRPܕ(V; +R%B!@W +DIجD)pOXSH ]YH:xb3)RjxjrB!J!!@Mr ʐtK 9$,]%5*L45#*L#*L'*L۴nԌȀFHȌ۴nԌȀFHȌ'"2 #nѻR2#">#"2 #ѻR2#"6.HȌnԌȀFHȌnԜȀFHȗ">#"\nԜ @G)@G'|$5D#],%T !BB !B SKЀcL1)IdciJ-HZIR "2 "ѻRr$ȀFIȓ"6'"L۴nԜȀFHȌnԌȀIRr#">#"2 #ѻR2#">#"2 #ԌȀK]%ȀFHȌnԌȀK]%ʀK]ʀK]ʀ#J#]ʀ#JE''- N Kd@%@B!!@J!!@B!Id"% d],*Re]Id,'@sʋ.B29IuʒyQt,WLP*P*P*P*@sʌd>stream + + + + + + + + + + + + + + Eine Menükarte in zwei verschiedenen Gestaltungen + + + + + + + + + + + + + xmp.id:5e195263-24ca-457c-a9a7-ad36f12c2283 + + + + + + +endstream +endobj +154 0 obj +<>stream +HMz0 M¢7pQW9G+ʦsr Zal~Mi t䪏Wg;!Hz}2;]>K+y%ɰDߵ;f1m4JuCrr$`lt,ӊY`g;~BRO8mq QIE'j<ڳ<u(%wzk4[w;}6wB +Wr0;n|LWzӭ62T@a$،V=hO4gQRjͭC=vgq?)7' +ba齶5&i;FT*g&ճ$D783CZ.W;U/JVU'hEԕ@ +W)R]Ny&p`b:=W2%.\N.s 5@杮&o\yxZ9\fEb +S&BQOrd?hm-Cʊi,Lf;MP>8՘י׆Vg +ݟA=*;e-JѾ]Su8y=H.ІLP+l&PaYpF5󖮵LZ#u2hr߀ 08h,w'6cKJo x<|ׁRN+|ߵ?R +endstream +endobj +155 0 obj +<>/ExtGState<>/GS1<>/GS2<>>>/ColorSpace<>>>/Rotate 0/StructParents 38/Tabs/S/Thumb 157 0 R/TrimBox[0 0 595.276 841.89]/Type/Page>> +endobj +156 0 obj +<>stream +x\ruel%չ\h `e(%{cѻUHIX3 3?K|HUn {s~8lEkJ ?w~ZG'O6jz'N_<=:e*GiRwG'Oᷧ/7HVg*o23d+)S)< +U#j}T4i7Ebuag/N~w|v;xמ|宻O^_]/OϞ^3\ -5.4`!Rl_Nq}WG5-\dER^}}׵z%xm׷kjt&i^_.8BE⬉vu,o~7w݂|{x<۸vhYkt/h%`:jah/;{3uͫx#+X\9 i`DP%@hrw Gϰ^Mpn8MOˁCY GY9*TURDMUǂ%k[еn-/= +#햭@h$?h%8%jq?,+qz<ő.aB~E=^F$ITlD.ڵ ԱbA~:Qg8- -tAh >8+;mce;ԧ ^8Xle!NO⫵7b&$/D EBqߑђ]*mG4j&#()XVgZ0F&_^ /Xv\y #i [23ެ`"0@!Kڃo*oU2umT҂t+cy]2dM, #U˨;N#4ZVd$^;Ngn$>T<>rLg#ɝ<6I0kɆ/;`YV,;G& +z|A ְeVE N(mg<5 +!-dttpRYJ iefyFɷqQECOX4]O;z1.akHދ)ҲFce +j'A*!+2QYV-\z`тOE22-խz-gԓP ?:|7eA"W@+6Yzdn nA$S$bǕ|=Ƙ%Wx7ąfy5ƞBOn(զ ++a=juxOnǴ+o `K>K:ǘA\ [F\iXaþ48T*JWtgF3Э=BZ5`z>E̾O@kJ +]u5uVc" lمˣn,mrWn:[ZOH H%, }6DXѱfO?j?H_iIP.xY+-j!Pt*}*+|]5HGx)陎UҖ}֠VLtB?Ϡ96c3H$i4):f!&̃xNn< +ַ +<,Ѽ!|q4!>FUjXeSb4&i@ՏЃ* +Jryp[&utZwx` \@(f8C:NJ9\[ZGzRrmH#␋C.Da!/:~pn 񎲕֘<=̥WtlZ? ECo /95= wKv4& n ,#UB%Pr3Ds)u9_yw":mm6vR8tv +g;t%z(z_s:fl:5c @8N>@녟_4L'7x`Lp#H:o07eP%DР̠dVOu I%FG@"頨 t/Vc1a^[Y/H(!4-!q%8*|Уh\P֤,v.%E5HU1gCYj5HK:s1oq85.# -تʤ(l`HMbԧHɔ@a#+jhV(1' I=1e N8#Eh$y82-G#8(f{"ó,PLhPIZ53+ k=KWsmn%ZmSz#Ʒ\$ xN9ăӀP+vYžBXXa +u@ɨ1T[iLmڦL1 ep̧ cW(\)6n*7L(ޞ>Tvs'!GYh %/0SI ؊O,9d*`*9z&FePN*7 J7n&i`e\21t#S@yzx[Y 1:v{nɵJeQ:.\\5I /_80 c{s|Kۈ r?tHq6{=U1SmIwVWSPnFc\Cy*.>ybp5LC3MNC=SzmIN/m)UQ +\YCAJȵ׭eE4ʼS>y'TUi徬(L"C7Mc\#[(gg:l<>vv%RG[7mbu@GPYBR +;-Rm&Q6D]5jcyvI,)s=kWY͋n'Eݬטܼj]3nΙwxUy0ϦX_IJMZ~w AI a܅o)H8}Ix Z/{J.0!x=Lu"Z7\b*ex%ԓU&=U[ ruyyqeڈMCg;Nis+P?g]fx2u#,njB3΄I=Njd6|`&G-J%kZPkjg(U;M&u6YwZ۟B7]6cottO^b?x(!7e\y̥f|Ԡ0]J /]>stream +H E=ݲ_ }ND'8ri$U AN}Xvy4(No-d@ASIȄH0Z&飜]~)2Fx\;1=>/ExtGState<>/GS1<>/GS2<>>>/ColorSpace<>>>/Rotate 0/StructParents 39/Tabs/S/Thumb 160 0 R/TrimBox[0 0 595.276 841.89]/Type/Page>> +endobj +159 0 obj +<>stream +x[nc/`d4a8lǛ)}0WCIP,= +oEZng׉ 5ܺX˩S5G/fz_}|A\7RGEೌ< 1FJ82 + +q=?SYQV8ѭG_}>a:>6tsn`*QDI"#fpz~Mśn%Yix=],zqPZ% +8[{wZ#'HX! +zY'< jEfn[hV!}⻰U[ƚ4JX >&QIprIe'Nu8՛=5-l#kN>>dUI.,ʆr#%+`zِ[_#@GUQf8xNW_YNԋkxKP1|Y˓zJYtqp8E):|_+P(%$TdeKɤ{(v:c$,쐞7p}JXo Zqg\Ssh^Y/Bj:}oo1[A+r,3HDkVgG$l _hp?GPkm[ejۖ `iʢ G)ؔu疄~Ps(@X=j"7JJ#7!ocD$47=@)! sFEi-߸XSbG+8_,6[xCBܲ}sNNV Wɺ7U=%N.' 8}ï_()08[n?icC0}^R㱋g֩wVRܶmf"`:s+<C4P6B0+jK!y !]!A֢Z pѥI^h3뛰x_ YxyCn*+[P[D$= g1XJE\%>r*rK +ʈg ITw,3lY6""PBqWO?vOlAhخt_㹝hZQSgʈ&9{ƥ^"u3JxJ7zU]حŻ<n~YtQ>7M]z[hKԪSVHJ +*[!/S}h@8y]WYWH(Ew1 -<.n]R6-oV;r S^Zk%~FOf"K,'3]/ -2ntŚ ӥP9 Fpp8x[U0%< b)D1QRSC7۝TE6P<^)J-T:ِMt &rQ l^wGn lӾ[) "ac`e{' +-3\*>k,y-,'4[ sZƆWǵ'PN'N(kV:wmRu:xVzڶ#)KI@!8[Q޿Zx(‚SV#olaƗ{wnLc<7JuKMK Lx] 2]`]ގ|ݻHm1 ضIcb +pصȕֵJ1'ncvm\?Eد81Y[[oϣ+S/vnRx͙xw&m Ycv ~/чj?{=fFý@_K= M$92b! uy3yė}H!*6i3>蟶ɮ 薚|[獶 0Kޮ}?|g?~$p;؇|7yPC;9J#t3U&yS1y* 68mߣR1ndQ1"h04P FTm +"Ԝ7l/gUG0%ꪫ7]tOynUD1v~ +oXzdP$w_0x;U[Xx2L_|~,kA|B+k(1ZU|z;`;#Nfiӏry'5 rejN挈 z ] ++#HXiCgfPW0%^IMkSgrLB7ݱѶrћ/s*ӶP֨=8VC]g&F;H3gs)MNW${Z𲆭7okrz;Pb1 nDAs&|KzD 1 ̌[wلeOMW[e +Tw.,\rzM2r2H +[XխvXKr4pI$C}<{&R;AhQtelțhH`,Q  +endstream +endobj +160 0 obj +<>stream +HWQ 2?P'R7mP>.u)Hwf6i{mѫ='>}bwz֫ K_S;Dɪʟt +3(:XknSP Dx@E88S܉`:l/wֻ3ꈞzD=v=?RȺԷ9]T\!!2"Ӗwv-껀-tus-WRIDs秱SĄ׉nC +v_Pm?\$!A +endstream +endobj +161 0 obj +<> +endobj +162 0 obj +<>/ExtGState<>/GS1<>/GS2<>>>/ColorSpace<>>>/Rotate 0/StructParents 40/Tabs/S/Thumb 169 0 R/TrimBox[0 0 595.276 841.89]/Type/Page>> +endobj +163 0 obj +[164 0 R 166 0 R] +endobj +164 0 obj +<>/Border[0 0 0]/Contents(https://adobe.ly/2VrsMyc)/H/N/Rect[195.901 141.907 305.366 127.068]/StructParent 41/Subtype/Link/Type/Annot>> +endobj +165 0 obj +<> +endobj +166 0 obj +<>/Border[0 0 0]/Contents(https://helpx.adobe.com/ \(https://helpx.adobe.com/at/acrobat/using/create-verify-pdf-accessibility.html\))/H/N/Rect[326.195 141.907 436.848 127.068]/StructParent 42/Subtype/Link/Type/Annot>> +endobj +167 0 obj +<> +endobj +168 0 obj +<>stream +x\nHzn 7 H MPSdb˲d#'^Tk5%A%6`n se$U"-&;j6Y}ppi.fq秱X(G)ϥg7D2R4/ZU*xZ\<=GOg?\o7Gg?GM;4/=ԫ D9@y8;?8z]D*&iJ_/|rY~݊ix=[z8/I8쫃gZ|]781iKJ`eU Dx'7 fWudeeR2ġcGm$JŨD,TqՆ/|Lc '@_I2N8=+M@Kq=| ~:<}zrf zEZSWucO E0'ãg<yU}D2I¿YEEVQG*]& +,1N˹*{BJʆO|ڶzQZl˶Y_/M ku+m.w!Ɂ,3,YhWU'J+L'ZwiQ+&TYmŻ " +Y S4+mᛵXϺ U0 AI:>0j|~>pZ0gijP/p +7|Vp0-Ҋ\p5-8 ssf-3\ ]/D+baiEy0\S/}([JwQ%Q˼by\$xtᴂW#5~!gX8܄ 03;P=n7Ȣܶ_…T ~i.I,@]K^46Zfs?I 蓯D>`SD<*:wu-ƴM!)/ O [Ժ+z%"H.kIz2!KZ.2_@7aǦ=#ߣ1*;&ـc)&%*1,iX!Y4@o$M(dft !dkD H +M>Z,a`ސ eL#[C['_}qLJ;F q;*T)S͇[I!xdO+e?ގ%g*q4 %=(zWz\%)F +ZW zኞt\ +45o B#| w:@?~]_Rt ( ( nėnlIep7~IIA"Yn:ZQgo.{*eUmD>KMm|α6>%@ץF'ETGxvۋIaz .RGKX{`h n@: 4Vh:̂}$Ra"Gm1xxR{<p>8=~, +MR"`CjR&̱g$)EhS |M PY#aY + 0#z+;p^* >m܈vۍ/8*v @I8ΛH(Y>4_7X|'CS,os&p7rx꜍CD~~1cde1J;tXo +{j[k`С\_igc0U)=XBԇcRy/.֠ ~OUuСgK bF[F G]¤!KH&MQ ᘼ$y(JU1d~PE)v_ 7^)ecw!,3ZS1,ڇUQl)+ɸwG_hq'vʌcWs[_oڳL<*lgS㍆ f#ˢR}U0@0(vphcRQZadP<%{&m,~O5ۡQ g:xږonl˭)G2SBȭG+Rò~~UC(eRN85]X JsUtqKJeT,g}FbJdO PUT*RG,q!(Ql?#@pt.et6;`F~eXL[cJyylrU$},")j=P{ W0ؗ)$YEYrT_'fMagNvKSco.C$:!' +ޠKq,8%Ȍ8K*A&+p\"ߨ@K^UN*(oVBC.%󆉦&X[T-x9]tCڏ* #6}\|ؘ/]) pqn}F`i.zP LlbZ +}(*D[|D{Qls 0Pp+~jST" ]xqz -67) j,DV)ٚm:J#MF_kvd2%_d{BY~ٚ$-'-mԩe*'^UTt#_2*ɫ`/&|u7ۍ֋4[eSHJ-_CH +p;NS f^)dÇHy9y:y3,p{q%j sů!̣LcOG 8>&6yNn H[ПE/<5sRUqGOC}os!c[ oK&mv OQrŧKEk7 gN(ЭarHD#;P${J)osbH?ȴ,,w\roKckW]u`߅Hfћ[ER\W*Xf޵1B|O_@; ")w ğI,&VvqzSY=`35BamYu:R3p.+t850?IhH)UCwqḾV?ѤJ0Tfy0փU; 8e? \/ӵ 3d }%c`:ܳQU@N|eAϑ0d7FI1>Op`)6| +& +pbUsvtvɫz`v]u1"(PX̫[ڛp[S;62)=afnP1waU̳< l5+f1= &S{]`W8a: +r]ıu;ЙeNSr#=].SΡ5zeG>ՠehsw)MC ]inj-hcT9y);D|qӈןu\hZǟ.N˵fӑM%,]oIeCyxEuW=D~yAD#!v}\PpYz"y5ol푖ʱ +)TU@b#xl)t}ld\ &[%:3vkIC_U*SvO۸ 9 /[_Z{bĚdͼ +W7j}0gk˨g>8~nTgd\ԕ[w1~JQ1V F6*@.eID4 +Ոg"k`͘Wv\};j ;H7,I)k1wRԺ7JtV.~WҎ?њ D{V<5BcgIcS(KYD,ҹXh\Rjd4@u;*}CUuOx SI\>FN6a +v~79jV4Ue1UI?aX-w:ٸ'}F-ȸ2FF˴&ğt>v`Joa)Q-&YA*k\v/ctz +6x9hȼ`Zgj9,Q:Bڠ&Mt/lR**=Eź$έ}~ck&sZ]Que[S߹kd8vq_8rNcpђ6pBf}OHwb뼖ēEuiyχ&!5t@fq7`#y}ʓywDU,΋F4,m$ET6=-op+30~hkW_hސ5/@@䌷pBdF-O)Dj[ಯvh 1N50܁tQ!Я`D{Ip'ۈw[:zԼJ+ICƦZZNl q^lGy<1g-O$>e7*xdF@}Q\cubRv(~2 t's4H4Yvh]"$~mj{^ŹJ!ď+a%hbcwCj_J# s̋TҌKݳAp< H. L+JKn$p^z>.^ l@]!}1wW}6!A~9z!vl:Ud+gs291hj'pv= gF?ʰ,Ewqܬׯ#js_:CN_%z&4. oɢ9}Xޗؗ :3zy任9#r}NϦlL0}dω/4y{@vy] |bkSp_6g"V5pK=@ecÍsSn )*RSxNE(L0'^nj +mhhP0vgI +~nsx/@oatod.2s=ހ''cSDrڕM}EJtN7j3%c 9{StF8AIcJe uCV=$ +endstream +endobj +169 0 obj +<>stream +HWA {=魏w +р&u2eFXxY08<סI f.߾}Jd&0L=5-g3K @8~Y RHޡQ4"D_z ׇ\)VfY>e@|]#qe]߷*HUeoS+S{GyNyA3-nO3l37mgr}?5Y9gPI2z"5? ]IOi1|dqջCW/UzL"x}׿]·]hlq V0]7T?Isǁ!QHoF +endstream +endobj +170 0 obj +<> +endobj +171 0 obj +[172 0 R] +endobj +172 0 obj +<>/Border[0 0 0]/Contents(https://www.pdfa.org/supporting-pdfua/)/H/N/Rect[79.6758 209.407 258.179 194.568]/StructParent 44/Subtype/Link/Type/Annot>> +endobj +173 0 obj +<> +endobj +174 0 obj +<>stream +x\nFzu? ^be,6hۓv} AyJg?Tg' 4$?|8˫$xy5BqYA\%EpIOo$ +(TqepXo6/]N2ĩ!o_L&L.~~^??ogM;6jwŏ^Vz]z9-n&qR@7+p׸;F׷^y{*Ne)U*^N~oj +~iep3[z$G׼}:_9?й.O#_=Zv7[\?mxwU M*?gD5ϒ$5Ov9l#RUR{i[*Iu=SEۥHbeR5|Γ,]=L8{lc\n bB@Vw`P:kQK\D)pJU>9|2/U'U T,TdDE %R%(@ p^O_]F߼,I+ۉ! ,rP^v,Vm,j{*cߴ % |*s .7Ѵ + HaEe**X2xp n9_"UBh*pM4ET"< JM`C&*C|H-oj?Fe]5J#^euh6כr bS87RG޴H-Mŕ +Q%\ FJX rfBO,%ò^#27 F"w$D&x }׾GS i<^$Q9$!k =mKhpiDnEs >u2j}4j#&ai5%_U` pj0#4{y2Fe<`:'&؃udIhpf8 Y# ll0ei+ޡz]@Z a `ǼQt+v/Wx :!D.sjR(#u7W>>Yp31_E{p͎̺B*ljd HĢ,}}'\,1iF +K]D!]h9B x* 1jgt\6 eʽvK01xu*G-#Wk,pG-wD$ TX ߡI=# SE1B}'nƃWQ;kBӘ`C?*NPMUVfaIqG7KANA4Ԇ?{ֱlΊF|,|Ȝ`$eEpgƣ>%X(kvɡ=:0@Nj6<\Y;Ks$7Ԥ́ycB)`ϝF]H2Q ^kG}!]Hdp)J7 fAZ?j.BrNt,@l6$&3gwT-3ao;Mv[qvsV¦{<n?Jq$?$9%5yD^ri,sU©TZj}rK9g &8O}7kcΙ,8%!5䐋^exڢG_W ?%6.HfZ%hFtc"mڀ1%p m]t*-!R=:řzQs);ٌ#UP.e)l2Gbfw|PӑEH:b`FcX`QvCҿq$^2D4աkcSJ C.6h8ÔL1t%kإ P+ej:|*p {ELS4*{,lP` fa㌹rʨ968:6ubk$H{c\ I5pI^А1΍2^Kv)aLGOrbI.#C,0s +Kңpg%e̘zkR0p>K檤Ot*Ǧz()⢑`ٜm Ri3VkMw`:P4s·z5a6nKſjz BM5VFqeᚷF%7gjmk(O6#+-ZwV<-tZă?A-VBF*q@g9[ 3=}2EgZZaNvU> L֩.qixifps]'kԴNM!YlLSjiYkە#jtyyLI4RQ2dO`}28Ĵ`j K'^J%9RU)Ka?Ѷ8x0Gm'5WƺK;W~jk w}2U6W 8YDtT걼@/U,$SI&J~@qE#͆R||dV`t)Tn֊QPIxcIK\^!T`@c6ai +#T%U&zLLք]%u8_78̋{H=. !;\SDH4{!W w8D!WGaj0gg*)^vr!QY:Ҫ:r`[PŐs^W]t \ uKQj/3w: +|2"'y|5 A +7{>o[NFXJ'Jrsamr=j*^b;Jn:OdBk + [f5FCgÀLJQdg6"0!%"ݿ7t&Sz_O;W.vς/Czv4R_W/PkG)/b> k'+{42]x*kw0潫QNg;jmڅp4 1[Ӄd1%!S#X芞ApVg5|d "69y]x;lۂ;sͱm  i#ģ!FmAxעP|YYpH"[(Law{Ϲzuag2ԯDDqZp@n&ckkXXt*5e?<HS՘ҎZ1a_^v}("daMwr'U&vI)Ƙf\-5lPH.HD"͔̫@5nׁ68oK65;5 WɆ\ D3=77[ !R+%.XO=sTV%©xy&'Rx +{(4xM.k9v Y:G,KN4X:CEJR m,xSpwј؞9weuQ/V4GE~}CFu +?.1 Gɓ@]hP!& ,VFקJzgS;8yGjf띙݊!%FVri?V013Fi7ἣhظ6@!{>qF3hMk_*뿤kMS P+DG(<#wܾ3(Mԉ7c>/ExtGState<>/Font<>/ProcSet[/PDF/Text]>> +endobj +176 0 obj +<> +endobj +177 0 obj +<> +endobj +178 0 obj +<>stream +H|TyPy&ݎ]qIgPAPc$@!r! S + r h885N_[[muW^{{1{; qzp߲]r\ T\e#([T18Gsg-dOYOpϟw1銵k]lb=q45.RwwiUR(48-I#O*#U:B#rzIS'Iղ$:v^$L|_-jQuTe?r%ݧX?LF(YTU"Uǔ\'xoZLF%00ÄsŰv'mv|ql=L` c{ |WE= ZۧٿqqxKm'HPU/3f~ѳ,nֶYg2I6P<̽y\8, +MZ Hrk$bU P?mw`cVil1ۓ< +:Ӝ7 -8v1姷^16QQ7);sFt2%nѸ3 ԩ37\%u+Z=Š2Vyҫ u>:˪k&f#[]m`v9̦E^G ع92.VVJ**+;iѽ쵃mh;\k/vj{le?6W 6\5+:EY#w +߀mKkm XȕZKH0m7m s +BIKYI:q.K9>l2 Lt}@/@ ]%~uQT)!|j2>2Je5=<S?WvZ-S5 ꟊ}X^AS DY~`Vp@bF5ՠ9FrpP!1J .b`!/h)!EkeDzRkܛnn)HiU\ڌ-}n|H1_;#g/XٻX!88cQ>^ Wkul&x|O"r"\TW\[L% 9dl]-n,5W%ƺfx$ jMyy6_ҧ=[ Զ߸ a9DƺPed۩vR{ji0=aIĚ|O[[cҽB[9IsIX>M +%9w ;}{+=`)a3X&Gz#/Hh&('FedgЉc- -FISKU Ue62FjRQL>w 2%)ϪȮΦr-W⬴m(kohcgj͔p" >܂.o`-L0="ikHï|KXDgrؐ qE]}Ysw|/fQILn\Ia8&2>7 wPЅLE'o2S['̒t9<D#Bp1w_"!gBb\[:R-0wX]Y/Jsߑ6e(%93IrMZI&;1Z eٛv"D˳SYAM]i|ђs5U.q{ݭ;uuZ +[D)" $HX;< +hubWmRllscO_3{|w>O 'Q'"]U<<phmq7#Tcz0g0ɲBi:6 +dO;ڈ6/Qqq~< +;/@QW(}4tmftSn^s. N_nCӥcU)uE./E䐼4f\A dˠ+-fAs弣7>K#>jp6{nⲵ7wֵk}֓lqLz&U*RI|3\Y>,-KKxC~w>@bl7)d&ץpy͜@\ǚM 80X>ܢcUwC/4iHjWi, +Z9E]΍nbbc$"9YR_UQikt +6wϙÆ4 nܠ@v9[;OCЍqHlaB }.#,kmLY.ڎﭶrE?C{te*ezJ*kbh&-S3RѪt*ȨsMbLP!H4qa^zS2TtN艻hM>s(PPǃkh}C~}iDˠ Nld>',O/%ڍ}h*1-p/ڏbꤢ_rNYF}{~hp"iZt#lt +.-mE\ǐXWSpvS#SrRJƒ +6𮨱슡p*y%-d{*K +eIrjqycd3ή鯿Y"s8+&Gf +B]/l + #&m UR*~֡.b7|VPg9N> )~kqS;OOu+$ " 똧=@%. W ŜI!PT7;@&/A1NmHg7/׷(te?ɤΎN"M|s\JaLTxH#rk}]H٫|1$H+܆AO%3Mϻ]sN +ccmp`.CRM$(xxzMXP\I5|Y:]8^YG\@ۦg |0sᥩ1ozN Q8' VՐ7qdEK}yg".9p98otZ._rp6sA+g{i^!@` +򜜫k;3/UN%]g(~v|uwѤ@.q漧>stream +H\n0E|"'Լ$}i?$E*;ÍR}lO<`.<͗l|]MU}4˦POc?pKd ?dh̳ |]43u?ܰLd6SEz)עaNiz9vliLVwEɾpWHdGi]o~DR~>b " L{^8YL,TN2rM,*;|d!Uk&a_})p u Se +R^[VLLp&uccǪU >c~,ܤǺ>TyDy^a*jǏ*H~ +endstream +endobj +180 0 obj +<>stream +HW 1t i VGFLkڥr*֔䌀ɈԷsõ4G09o;0qޱOF=)UՖS][(_bJOzH\ޓt +ԝ-OiSAbL I##yxbxzR?84NKܔ5 +f(B8T-Npʦ]`JB:HG}ȘRБf\> }l?nЫzN\8Ɇ''f$ +NU9ċe'##k&1> )8,5 + +endstream +endobj +181 0 obj +<>/ExtGState<>/GS1<>/GS2<>>>/ColorSpace<>>>/Rotate 0/StructParents 45/Tabs/S/Thumb 215 0 R/TrimBox[0 0 595.276 841.89]/Type/Page>> +endobj +182 0 obj +[183 0 R 185 0 R 187 0 R 189 0 R 191 0 R 193 0 R 195 0 R 197 0 R 199 0 R 201 0 R 203 0 R 205 0 R] +endobj +183 0 obj +<>/Border[0 0 0]/Contents(https://adobe.ly/2Voxxsv)/H/N/Rect[207.47 749.407 316.152 734.568]/StructParent 46/Subtype/Link/Type/Annot>> +endobj +184 0 obj +<> +endobj +185 0 obj +<>/Border[0 0 0]/Contents(https://acrobat.adobe.com \(https://acrobat.adobe.com/de/de/acrobat.html\))/H/N/Rect[337.888 749.407 455.228 734.568]/StructParent 47/Subtype/Link/Type/Annot>> +endobj +186 0 obj +<> +endobj +187 0 obj +<>/Border[0 0 0]/Contents(http://bit.ly/2VqMNoH)/H/N/Rect[211.342 551.903 308.622 537.064]/StructParent 48/Subtype/Link/Type/Annot>> +endobj +188 0 obj +<> +endobj +189 0 obj +<>/Border[0 0 0]/Contents(https://www.nuance.com/ \(https://www.nuance.com/de-de/print-capture-and-pdf-solutions/pdf-and-document-conversion/power-pdf-converter/power-pdf-advanced.html\))/H/N/Rect[330.358 551.903 443.855 537.064]/StructParent 49/Subtype/Link/Type/Annot>> +endobj +190 0 obj +<> +endobj +191 0 obj +<>/Border[0 0 0]/Contents(https://www.foxitsoftware.com/de/pdf-editor/)/H/N/Rect[163.779 535.568 364.99 520.729]/StructParent 50/Subtype/Link/Type/Annot>> +endobj +192 0 obj +<> +endobj +193 0 obj +<>/Border[0 0 0]/Contents(http://bit.ly/2HAKKHZ)/H/N/Rect[207.47 425.407 302.256 410.568]/StructParent 51/Subtype/Link/Type/Annot>> +endobj +194 0 obj +<> +endobj +195 0 obj +<>/Border[0 0 0]/Contents(https://commonlook.com/ \(https://commonlook.com/accessibility-software/commonlook-pdf-globalaccess/\))/H/N/Rect[323.992 425.407 438.705 410.568]/StructParent 52/Subtype/Link/Type/Annot>> +endobj +196 0 obj +<> +endobj +197 0 obj +<>/Border[0 0 0]/Contents(http://bit.ly/2VtIOIc)/H/N/Rect[207.47 344.407 292.977 329.568]/StructParent 53/Subtype/Link/Type/Annot>> +endobj +198 0 obj +<> +endobj +199 0 obj +<>/Border[0 0 0]/Contents(https://www.pdflib.com/ \(https://www.pdflib.com/de/produkte/pdflib-produktfamilie/\))/H/N/Rect[314.713 344.407 421.244 329.568]/StructParent 54/Subtype/Link/Type/Annot>> +endobj +200 0 obj +<> +endobj +201 0 obj +<>/Border[0 0 0]/Contents(https://itextpdf.com/de)/H/N/Rect[207.47 236.407 309.457 221.568]/StructParent 55/Subtype/Link/Type/Annot>> +endobj +202 0 obj +<> +endobj +203 0 obj +<>/Border[0 0 0]/Contents(http://bit.ly/2Vm0Njr)/H/N/Rect[91.3245 74.4065 182.484 59.5676]/StructParent 56/Subtype/Link/Type/Annot>> +endobj +204 0 obj +<> +endobj +205 0 obj +<>/Border[0 0 0]/Contents(http://pdfix.net/ \(http://pdfix.net/apps/add-tags-to-pdf/\))/H/N/Rect[204.22 74.4065 274.697 59.5676]/StructParent 57/Subtype/Link/Type/Annot>> +endobj +206 0 obj +<> +endobj +207 0 obj +<>stream +x\nHvw; $ТX?k,6hItw`s![iRoJ'faI9UEV\ Ȏ1DpbfۗWgIp}wip8} ^,AE$ ^=dA?,x,2H2˃!~rgTAUoþ`kC ~kWk2T&o +s9ɫVY +\4zVČe]V8a¯ 8a(Dj\*.Fʸd)Gs +\G,DW_4lpE<,l9I|GKN+{._g+ w=7ʏ,8|?aN)1x+AJs`럛C$H pª*'@#pBʷ$T8QF.u\4y:D$nKQ ݲ ,T "lmaV(XveMY! ! ~s )`ѯCUĶdMx>Lј(9:#6{*7V|IH FlWЗZmD*g{<#.=?M +kV1vҧς{xx!I\œ W0~6 +g-0iJ{I!)\2vA'+4SYdR4부ޘH--A#j|{2qn: 5ѓR:]eO /omw)VNUg(/jM]nѮ )8Vխ_-5!sj_cċHeNI7YsIԯ+^Of=#ɡR AY&#A^WWsQ܄Kgݩ SMeU[(,) {^4]])fܭ63I8I57Կ*IgDIa.&/r>V\(ωu` +GIW]=ޝ޵}!=@`24l*-e2Я.y ,s{5yQŞ*{5Z=,. $/|MXyK|C]J1(+lzR ++(YxL6iwT%6+hшm:aOҭdN'q$f\PG?-BG5z'j@_VK(בE>H&{*m{7Auv3%Y$ vŴu4I=l;"Vm1E+\ ](BjVQ 4۽W3e.oj9k:16r *PD@Jm4E=P][9ƏFmj*d)u8S:by,C;nX>}AYBoOyJ;:Rłq"/I}Ϭnh4,TF4RKj `3PcskhT{rAa5٥s{\:3ܙ)[u~vlҗ:G^1pȓ)\ H)zʭ>YSLֈc>j%]i_x~{Ҕ7[OA*ipx`ر@O\59HÅe=GiJVj5O +; +ZJ70P~6rѢ$a墭 uR?Buқ2 ^(٩tpc+Hx:[ϴ\x6mZ4AR[mV{P9A ,Q/NYLdD1dW^掏-j3ka ]UZ\Wj7X#Ivb̍`E<[[p8yy˛eHsچ$Ġ,Wr5byYF9k<0ՉwqSϤ ]7w~7@i<"Hv#QaŅYSWSE14s5g14w__e KрBr \`w?xs=|ww_\/_7'w(0t.M|x|֎|)Kߵe}ˮ7uxd{((!d?oq3񴪝Q͆OB8Jɕy:`AE<h ˠ^!>X9F}^Ǜ +fNTB +IR ,kŹM]FK{tQ%96ʉ3agOI"4puy2-_ +֊, +>X1x-E{ }iGlOi\Vzi+]a YQ:)FCP6fL cCNo".G3VP7kP:=Lqz7h aDԥL|N5@/AybZ+AWjCBW j֘IZo*ίIYƄKkPah1NR եHuFΜLB7m ̣VwNEc4Q3~d l"l .ԔgEזI)9IvO_ֺq+2;ݢ?gTEYi^G[ɱ[o2d_gR>%$DD<5J-K9>SB+̻"{llBWVpaI̙ƻb|"|ʐK4fҿ-KڲI;+@on2yWԏD__F})rV7r_k8~PGh +endstream +endobj +208 0 obj +<> +endobj +209 0 obj +[210 0 R] +endobj +210 0 obj +<> +endobj +211 0 obj +<> +endobj +212 0 obj +<> +endobj +213 0 obj +<>stream +HWmPT~Ϲ|/|] eA".@PT0N11N0m>43Gim;;iN8M'65I%Ns޵HL'0/Ϲ=zoLP +=I +QWZJ< <0H#GDމx DF tP$d9zfƢԾXMTF% *0]9'[zcǶղMs^ǹx3Qa +Qevu2(˺uDuT˄/ +o#NX +TSTagc/@"_\|4OiDuZk͵.Ox`YZRTHMIĘ؝],U',q,و+ld7}遃\^͗(a +OlxF2Zjm0?pi|XS͘tkW(nK\LS Vص=}SN]{h-҅] u O7}yoh {ޔ޶&bt2'33 &ϑՀLݦ|@5n~0 3͏7v9 \ߚwnyx5A8CͺvUdtdtJsj-&#vk\cJZ@U^]}6i֦6#3Fj81l15%#ҋdq,dn~uZ6B:NG"C=A-ZYq]UKe½Ci-MMnEo:dUI.a/ kѱ|=|d쇬D$!ԉ%Bdd/ $ |&] +fb:M2(^&RSU^*ýZNex a6K@ Րu\HRݯөP!<+ǩZ9z_VBwpEY~).3pЕgSUolUJxaƽ.ϡ4n;2y㔏:c=ML3[%je @|RY|Dָ_&vI2xC<7˄R^Y]<K.*5.4^E)pLZWDJ\3M)QFJr_A L?j}ߵRk"_s5"wPD'<ΧWXװP\G@3S@|'=*f}*%z4았.1[p(ikm꾀'f@F [LRļʙYWg_ŬyCIn3[l+lߢE%sJ^ECN~%B52dA9~ qG&џj| ?wΡ| Yd_ &-b39ʹy!? (M̤[G +yv N>:3g =O}g qw&U|m9ImL$t2_|y&ΐѳʏg +x\v-}{6bU%{uny^7;^u&E|LGI=4_8C7VĉƭЛ%@gdϲXcj^HVDJ7|ߧ$uR1}+p qe-R|?yjXӟ}Jj9ckz6<̉Pt*5fU( ~ulTCz?+'?qFTרz4oē9]n-j<К췋QƋb c7Ӟ>ڴ;/uK}Udz8W8a< ++T)dMTJ-3DLZ\aZIm4CEhȫpuɊws RL&h  1̝-o :;8]$9݌cJ2=yAcu0rjEK>g&zjDn$: -ڎscUu^8䕻vq9_XgWsOH^A:?RFf'+6e͂(hq4۠&ڿH~О{ +f\ͫۀ>A|XѼ׹>;n#sf=ō]{ +Y-EP7{K)r9,2i>[]?63hԕe)~52c++W99]o&2.1iEڗO~?#V\h{mW&/nÙmAcx_sNmY0e`x<ßd%*I _O=O2dC +|]xIu7qւ +^-0'No{8q;[g/iU$;P?KPSk-//y:Ox{C(&pyϙ6M{jZFy\Q xPaz voŒ=yޓv_|/MOcQMYcΉm1b{[vІ71%~FuDyZ= 8 y_C7q# +#7Z-LXTەv.ۘ,T!VC{^~0c0DɜͰX^RtSݽ pFz'k28ݕ\?79ZMTD'}(RKy.䀦X{}'V hZzov/g@QԖO2kOmK2x~c |b,_5-bncKy]P/m/x.G.qDx憧S%'PXNrZeӥѷ`Ilxi+aSkƓC!T/hMR݉n` r[}XF+ԂBi` +󴃟T +6[ FY4oTksG󯸚:^R l\8iknlr͒_1a|Q8#W/*|3A5y^]2?/SwƠ[2.ϧWQFto<1^z}t41n`&N㼝qG>jRmƖbwܙ61iAh)QZ(":IN*i߅[?F߀J+H/UBW@m>=~Ko@\Xk Xbɺi6fCh3xCzU$fyǴ1M)@H]lF1nxHڨ9c$[T=&Q'wۼyTߒNrJbunmc~aT@ڨ##S'Kp@ !DGL~CN#&V齾KX(wy9 /K>9&)J|Y.KGRǩa1{c+=kai>!}?KO?2CYUF&o5f>9ӟO>˗rtߏݾjg ~wcdW#lpK|};(Qݤ&O{l]oZ[ھv6r.I\njdI +Mk?&Ry<$U*ٖoKy,{xUw"HJg{"B G\ڝW~ș[ +KZ9㤻-05S;t#țF dL ǡ@U[DonNIë%O&|߹,d:ڵnj@;X+Bz!2AjiY]= RqWDz2Ru?<Op7rᎆ?ãsdwfkZ }df+ksy~eZ+Ur{(Vn1z2BE7 9"&E>YbR񼕎3]yRW(~a'nRH2@wo4o4nMأ xVK'k+>^2#ѾOY}n&׋)qrldhIΗh%- :lW+Qܵ$bc +w/Z:Z6ISb %;,Vbjn&n"ε\92Y=MyKrĽ-+BT ]K&{j q["ΖmrQS=%Z =8Cyz ӁN 2ƍ7ǹNnnn-5ݺ)NtLG\^~iF~ wk>[HrzdRuZ tfanath^V p\ӷac3Y`(kw"Ai/_+EY]??sevr}&x nr!xeN=N`~ ȹ`ۯy3;T~͙snb]`+knD~/+_ }:u0GnϿz~D ;]Ӟbl\WOd^R':-[@6Cd`c- U]$x_@5 ^rmŭݍnowu;.PβpH?{ѾktĮz:0K-֒zw}XTsC Ѩ:?sww"Y3CN`s7UAvg__|ҝ-mlal] +8s>Y+"8GO:npw{ຍ:8ͼn:NXxXZ? רgz%`f)Ƃ~ /<xDaZ?١{8 +?PqBiQITRhB!hH +]E} 7p4^$rC78teڐ?^EDDDDDDDDDDDDDDDLk"""""""" xBɔ2ƮY(@ȝ+b WU߫q3gp9g/OM +endstream +endobj +214 0 obj +<>stream +H\j0ໟb!xIu M4N ,d෯?M>I4Pn" jә/ˆd'_||ljZq23J9yoFԅV_iM& +(Hrkzik3.lSKM>stream +HW[ yw_yePH LQBBS|*U/fŽۮ0boBߌ 'SgNUSÚt&IQ^]> +endobj +217 0 obj +[218 0 R] +endobj +218 0 obj +<>/Border[0 0 0]/Contents(http://pave-pdf.org)/H/N/Rect[397.813 749.407 481.89 734.568]/StructParent 59/Subtype/Link/Type/Annot>> +endobj +219 0 obj +<> +endobj +220 0 obj +<>stream +x\n$y&;q#F8ͮS`8]R[ZUurd{9Cf~=tϠ+!>LS2rӧhxqqQs8/^Gx8>_XH(ɕenDDErq|lfx85q4*s8׿>ٟWj9TwӋ ~ݦ\7^Ӓ/Q\Hadb}J\t+^9JL/5]֮L$5&/._WxXKq|܊Z nZU*TqP^G:8/]q%xvn巛B>#@YotÏ$T$5χz,#MB[~[ѱr'q]"Z#J&8=_.o&Wc!o/o>y>d!h [0M)-%el 8]c0dާ/1EҠE(SE mvIT"E')+Pkϖ_LLw%'I A\2c)(24ȳfy$jA)f46*؄ypXI@_oIT:5 Uʧ.C"m\PG2OdlltZcpn*,z="Tyu8)ۊLP'-/CykpכScׇvQr9ySCqFi24IO pU(L<`wni8 9Wj&k{Q)_pUfYab},x"xs 8 6IiApJ* +vG&xh :Ń!̐`>$l6Ͼ)'+Dnz݊W6j$TbVqw|G?h9 +U\G~O?z跼nj!,hV "JMh[Cn9ֻ0!VIl,3i bVOZNLylh#+zsћIIZ kE>eMJQ.6oG_ILx[''UQa@FIj2 IV~{fͭ1^9Btf'@NھX1݇I.L-zzX c6ݲA/tj'1F?P +:oeaL{ Z $`/%-FJ>Ft]p[n?@"j;N=DUc:'ne9/.ѬQ٥XXy8 e.`vЕa'Iz"SSI>;' + ]F]PL>lH1LYo ;waX8oBȒXrOrO5HHQjM sޒejPv-¦` 2Qֱ(Yqr +[3@^הR`k[ڔJҫv _se ]]AGRa].pP;`2^9=&mxCIuampuL3D~q6n[7BcLk-~%g֮x+=c%p*\ +N.v5KԵcH'T QГm<:cCa1N!Uij㩃u\tv3>W^5Z^9*O!$ l0[/%_tVCo% WBMahxNY{x>BUjOy9NXa])t2L޹p]sI~ l6p#ٶ9j%kkurT\}ˈ6ܶKq(TC;2>[aYys5,f,܎M:@5$afZݚjKW%jY^}0czSqD]ާ>E8cXWl7S]!{`Ŭn~a2 4Qq^'eh],Wt6Ql]GVcq:+!ujZBa&Sedq.h:v_Wʣwv(/I@_kw̷{dh@]eQ ԥ(*kuEl,SuV]Y"eT)stИe̖fsvm{kym@qoköiih6^P ݺL$I -Iy+tڵ՜p../e7k{\ƜS,{6vVMAerey&D ~R剨QU?u ,]ZVo1Fem$-ۆu5bXxnJ~_EH}X N]ltO DYnk#O'2ė獰|ҽfۇM7iJX(OL :x.Ў YN|To p1jKO*e/M"~ A6Úޚ.4lrzj+Vw& +_!M)d1./PWDZݹ72vͶDlЫ97,Bͬ=@1zr`/NlvT4dvΎixKE]/CTNbVt^6h,9џ/8g2ܺ +f+akTd(d",m% 5Un/\]nø¯.DpuļG3Ǹc2cBd7\۾;%DŽ]6M~a^ +i=feJ}^* • jhہjҭ(r^(& zmcE/a ǴᖩhiTĹ'T~t./qՂƭ}܈KanޏIޔDm:/: 3+}v?*Әw7~w@]Hκdk*;#J%G%-oL5Ḓ +m3[c{%~ +yRTYLnKdϘ;rk԰&]" X%vKgo86+݅_Dp(T׼Z 5݅m>z`^6oEeQ=?(dLlT0ӕe&[3*3\9QgB@X+$ +endstream +endobj +221 0 obj +<>/ExtGState<>/Font<>/ProcSet[/PDF/Text]>> +endobj +222 0 obj +<>stream +HWA {/{~w"YeTܐdUQ鼹s6CQWA'"9uLn{\D96'F\ڏ0VDd+]g[5}gr=PʡF5GXys:tNFx.',ϲ9A5NC"Oc̽z Eh%~3շS,+of]4ƏI/lHtutJAvL~oMh?>ލYdtRq[a,> +endobj +224 0 obj +[225 0 R] +endobj +225 0 obj +<>/Border[0 0 0]/Contents(https://www.grackledocs.com)/H/N/Rect[290.459 506.792 420.453 491.568]/StructParent 61/Subtype/Link/Type/Annot>> +endobj +226 0 obj +<> +endobj +227 0 obj +<>stream +x\[oHv7& @!5jyXI2m5ZM9}/'5c_d$9bnwÖyS|~jWx8*DD*DBzq|uRG""IbYhQ\>ZZ}o]g:R2r|}෿=}~lyLmsjv_=]W1|:R +O.V +Ӌ +I"UDGifZJ],F_7j!N˺ZITW{^? 'dxWL6ni]7ӛu?{mw> 6V*ߢ3rBv85wȲTLmZd+*NBi\1_Tә.b*e,Kd ODG#U‚R?I4u@RQQ*SI K͹L &JXVWXE 7^dEDg> >=6`VMΟ<\8,}FBE%ܙ{i%,<Dn@2 fu`30ïp"`ӄY0*,4A/pOp6IР&Ep ӀP"ah[ZYU8)#| BGqj'x 4)>&TeT1>͎5Oy)'yHy{,QTf +3FRI0Z%IHy8)j)%p$r#ZcpP+ +Hx, >חt AƏ,^ πR:Qf-M_+v4ƫ iX1SY(F2 urjo\:X92O$rE){čML̑bjtomhF>l#0_(Y!ÂzuCn`+ߛ%l,R1QN_ 9b#iB[~zQ0V0aEIRbBc4MbiAie/<qfs^($3ȏ0ӯ6FYs,p ֿb#}qd'WQRS"Fjq[)yk4ђ#9 ᄍ* qVG)c'C +n,/6IFCf!8-R8ijy +a jF3QȆb55"ĔAb`ժ`u!m4f)ݝ֑;EDŽ/<ь[%x9H,΋|iQYra6$yvo&֗mAv7j}cQk|c,(󿽬FVޠe[Wūϑ\Ljh! 2NF!>L4v>ckN&ljLdI5\4M͹6/wzY@5-F"TZ̴V)(*~ +@X|`_uca'[y1X±M[+L:湟/$ ZpM&70| WW-ţtgIuA%Ih[EbwI2*a:yQJpߚxxn2&cц ׌+ӵ^ o !T[\Vx`|\AGGcs0=%6SAa gN !UuKp +o;p6pj͹n҇V>^ݙDMx Gxq(Y<[RKCtHMAL-$nOkkR>ʃEL2;= 8L|^Ũ譝PBYԤRXܦM"`'zNn -ʄ9LL+UCUY c*z;[E])?+AQ +6P]M(tEҲI3~xP TڈtLbtzM+[B[WGWZIeyunj4JMA#)*0hW92~=I(ΔRZ%J:m=1ŠI &1~_oh6o="zup!s6Y5!v"0>?JmuvH!?F%5pLㅎ{z[( CHoKє;dVMKM?kJn)'~R;X[QFZ{n @8{JcoCW&|ڊø5Oĉsa {d} X@tY5HOHL-uԺ~QWlm؂+co/~vDwlL" 9hkc]L2=>,UhT¬ݠBft[5TCDw)(\9n 3g.#iC5\*F8)r?%zm?6g3Ė-fmR)}Uxm[dvPjBžOdj @XZMa uo|naw8 2m夿eLрz2.c;^ŀ W*;%eU% (=hS/KmCt[=C(fBm֌!/lFlsO˸YriK!$z +z b})b +QKq&*E za^ a=zHy2x6QtWѡ2kSa'۹ @z),W)yr:cn¾adҖ$.(HY7[kcؓ~j{=n$hf~k岷YXLr8-MJY;կrСt0q$ZtVh2,o͠k x'P |4[>YH 6ԒNDq l(4zDnڀmAvG#0ms'Kޢȸ%A~lq#ykÝ,sͺ CxlMjIu,V$Y",|m0ɭ>e`KdmNE\ǻagvP }Hqc(Z4+m)]/mȜ*ﶞA_r9s[B7ǘ-8pC1EfԖ;w% +endstream +endobj +228 0 obj +<>/ExtGState<>/Font<>/ProcSet[/PDF/Text]>> +endobj +229 0 obj +<>stream +HWA O{=ѿpcݤb BEQe08g15mkޖGNrD˄h]! 4 cJx"{:OdLoaRSeS*rGpHqFy[8$RSv䔫 Ɣ +8G#(v($wuo~W˭ɮՓ.qE;NC*n˼ ܚSf'wgx{ӏN}@uyb79'H2u;=hVp{IޫTߴfsOz'4Gsx8sR)IXs-{m◧w;E'Jނe)k^#)=㽿}0mHbO!;9Q +endstream +endobj +230 0 obj +<> +endobj +231 0 obj +<> +endobj +232 0 obj +<>stream +x[[nYշP@4&0Syo-zK.ʃ-hŔ"n7Л;P_fNw +L137DĉɃT<8?NRKi)|{#xy{c)R_R%YT*FYRe%.'oV1^>Λ4ɚ<*/3xO/ w'_~۞\e{d\u;9=lx1|y{B^v(DaO..Pҋ+Fd{&T7MY5b}Sê/nϻhW]ͪ*+k>g?u6~*|r_nw6=z,+R_TMǯŅijF?_Y1 +#ϳl*Ue'aԩJ&Ҫ/)H3i乒Y &XIu׀Wm{ X.Cdvzbڶ]my,>S!9/LEK P9Y#FTe*֠sgZƳ2E,hb$2eŸ{bB/FR_𐫸kz?ǵyG׫v gE·x_6/qSE"i它uqM5 +!"|6ᧈIYmYg۾*W(? Ԓ*L|K9H ')I-FuVi-yT +ۊW fv :[RnY{w_&ulMȸOm$(,ˌ>5MacCԫ㬂D@KuU/̄Rm3(U +3 6sZ`ɣX3<2hrn输@?E<ۛ&h"S ;,,5앃e'l@p3ou[.$Ff cZ1 Hϻ +Qwp3(! V +a L#)prMC]ɰ8>0j6Vg)̭݊X逸V@ngqRhtA|>~Eş-ꁎC#6ݚMPKcF_pq :rO?V?"n@y*t 2IY.d9!BSUMSW(+`l59l_T3mx2;]@KZ|ic9lv}] D|g){N͙,<k%g2ƇF%5r^rmfe@ +B_ykp҉-Gg2ӣ8] +3sޑJDy=E_"cpl׹/@_l[St#,sDg=<OA#,ـC?TL`bnȟca}C !nHIT8eL144>`m5C4JZ y3^“t+Y\rc +2h;S8h4sV>i1I0͐>| >ZiϹ"W9WΫE\:*$6g&JW%ZҚ%ObLVtoW4Tu]/l_Mۍr$)Ǩ 8C"E)h-N +GŸJ$FX_zvRI~IP&PZJzoK%VJ)VEH+>wp:zxM!|H* ["jPSJz, 2i3lKSt$j+'\ݨ)4IcKs\_tJ}w-kKJwSD=<)eYdi.? TU ]ݢ*˱i[/9WXSX@ RS}6BwL|`TZXw¥wq#Hf\Vg2 *W726k@d ˂:7#dINsX=J>#xOE4ť$*⤈;ʫ[@퍯T< ]4y\&g_f>,.(j{_Zܑ7b:.Ԛ s  Ҳj,>{Bjp(Hma~ ejWs3V~ѬeKIe7lNJ:dwӔLqXBv9ZqDLP+d\cؤUQ ܽ +/S#:Pijn/ UFop +mnhTVر(e1'@mz1%EHٟ5Bfn{''DN+"'C* +PF*J- 'Pԁ꧍`D2R3a*vzWuJ1iGtbqHSpW# VƈfRuQO$.marnߵ#bo3^[X’sӘ |JIEQ MZe_d7ynZɶz{czE{4bJ5-ֺ2P'7զftNve( xeWXIe}hxgjd@%T|C x{^ |`'ϳG9ZÇT3aJрԊ]B)ӵ1̩Y;^zc҆-$@6>kT V6In6i@-mQ5EeGe4V01CQHE a'I20{kYw *4:]CzsA6O sD{ I]9qI9?Jtj g /^Y)g8a:5) u鬁<9Syy2 f5j6-A=Fݨ0{:}Bm܍7X} +28LR"Cƙ$w8VOS @OڤAXyixkC@bt'0-Ȟgv2 {sa!&o|7J9sumIz-]홍9 㜟SلT> 땃 ճ\fLܨ͇ֆR먫a4lIIlr4fnNqgs|Y u,jƳcZ#OF7wzE|"墣З-2V5ֿiΙ/יuZlr2 %Y^ߎ>ptz_o=:}G_LJGItTYy=sëSe_wnpP\0<[Va7Sjrq@Ze6 PCt)T @{KKo2(!^Zwf^rJӁ{@wU@T s;:+< G>2=iBG9cABi4."gEDsoަr{X@Lt1w7j@H'"F+I\8ٿ4 ^;uS=Z챿:xO8鵉bU4ʠ| +I+aITp{\@\[tx!X)j4i&s_λO_='fu])IW?EtDQyQh3]f7 $Jѣd\|Q6~-|Bx񦀵21jO@lM=qR17$H$;]oDJ{g&°)%5N 7 '~+hL͌uni9:cBa 冼a+B=qv>mx$%(d +i#ۤWZCu+'`_hDa찡,?E.U^Z&W<1-MMMsL%p2-.T@~`[+^@nM1\3np-i0uk+/|{OӠmvP 5=PӒ0lA+зTnc^OS3Ae&䴏bTH +݈ +Mp-/mBRp'pp/?vqήJ\ 畦W̸7pF.קimw ߴaG,SbGO2-M;`O`9^H]8AU6 "n\m\+r < |+ToS-S~vEJAQz~qxgΔxJMGukEsO_شz@AVݥJ?xtk6 +Ho^(,@Εw@5Jf#0]ڷ-Y&eʹ[23ƣЇQmIZVx'㼿u-nJTUmӷHmΏa}xcsWd~ +E+yAk8Yy +endstream +endobj +233 0 obj +<>/ExtGState<>/Font<>/ProcSet[/PDF/Text]>> +endobj +234 0 obj +<> +endobj +235 0 obj +[236 0 R] +endobj +236 0 obj +<> +endobj +237 0 obj +<> +endobj +238 0 obj +<> +endobj +239 0 obj +<>stream +HW PTϹ .(,첀<\]vy)APƠJ|D|PԊSMƚ&flf֌3MuNN۴&&MMu1ޥ&||sd"h)Xjև?1ہVf- MSo@غ +3k#Q +z6Iz_.+vO$dr50QkEEZShpd0KDϟ-1TD¥[B2[^@"X#kD8,.G?Kyq$+1Ǹqd Փ| oo8#sug_ۏm`vy쮈IM$&lgdrSJ$fU»s^c˲;"Vdz``,Y} ĩv"[n|e%Zl[+Fymm,^;hS{vsEY9yrOGM'7AY33fntg%aGN''\pEGI6v9vѐ8_SZ1(us"s9byQًlx[$Ϙfxkl@*}+6nڽyNzg7ښ0!͓ZZZuŖ`9ȅJ4L8ɚF}=4/]2(?w + +\ߌEaL$?dwƌxbGVE[ k;1FF=C;wD"Kwƒ*MH" DIs3l+Ô@z4/5G?zMDfb+rp|\-lN5K8zv#G_gS ښEn-KܮX/[|7 I& VP澥i5wHӮ~;aN752r0|Ӏ8 cE|V\)#G6T~0Ȧ:# +d5T=Bny* +&INU +;9Q,u)JFϙ@@wDS!LQkF&m8 =Lr;͐W@.p﷩SbO܃67ujr,?n7ENtZ(+$b_Ob3s8Ve/WfB20 10S +s|X8N!o,dS'|M_E_ v)uymӀ$5&僴_++vlD@m#ʖ8 +h/;? +hHY}g@{̱cqX Crq N1^p,3rO1q γxOP1sc?9G{`O`u9&?߅'NbPHnfyC~B*GY#mʷa衍Ś7V<[ sp ُcYKrc C_?րM:XeUif,sp ֕88 CwcY9khi"ޜs gWPOgCoQτ=p z -W"3kNZK.>yhVbsN5g*m8':{xf܏:5i?7-L~- +&+Vtk˭Ԣڞ.d7~qCO8gZ1kH$|0Eg9jNyCZPCsFm<Ƴ͇aV.!nØ'C}կuڏMU5M%8+a+𕌢53PXCj-~Uj&Z=a 2ha~=}JYZ*|wQ QH; MSG0#rh`D&U/|CX*ECFu`t.0q\CE2Hs:-&:=V*WŘB7ñzqy N=dV@Fp">r-l(F¹^?gpw%. h#c$l;>~`>c4ĔUir`)Z)r<u +aʻ"# d2 hi/p +f0.,dCWe#w&(fz9yW:%0 ?NU/]>/0|ڟ`9`>7\KWwTXoyUkeؾ%!ǿCFc(΄/uv E1o6– x7 {Ygf:K̯@sKO?(jiI NrJN0ֺ߷kսdT>=x +3Z?l#cDG,)[~p('J?}tWu?~O@`x~g5cс<7dp xD̠8 J3#$ >{1xϽyxaIo8ﵻZjPuK}ΈN&Okq~64ssqTz+'0kx˕ƌ$m64ebƬZv뗡s ;%oB6ȁEG&/CWHȥ_r/}1) }jWG ؑc!rDYV:0zd<:Ly׋GNxӁkl05~. yIP-3NF1/sq;C*a"II\i͈yKq>Rg@j͓hG} Mdž .V\z#ݾ_nn+-1Y9$sGmQY{uop5MckZ"ýrěEwXss䏸Fdoxut ~:؀ 2x-wn8'%٭퇧þ5wjD]7ΘWqm/s<+WԦ^rbWM{F7IX9.rXHGo=uNw!k9\LpglU EOК3Q<@=j,⎏I'xp=#oo`O~CG:8Y\f;>w3:>!MA:}""o@ +~]ڞP(/SN{wbӉu3E/04J*EHd+oh?q.KRX'FkЙs'g@0gڈb'cZQ9t-: +x As';SqEKgĿg'*NNNgl5-eOyts(GP`F+?SJ^bJg cb~(-d.@ƁߐgďGWRep2 x.1wM1s{ ?>YkŗaGkQE7&o2ngھ1 A6߁qj0Lœt4cg*l5hܕ1Ccu-3l ؿ{c=>S4z/s& ]Z=Kt$p֓Tƻ0EF'M#2͙jW~gr{Ý>訫7{&Ng uWtiw-gvŝ7#W&ލ6c7G:(Ӱa]3uesԡWwįu ?p9^V0W!Kq{SW鹈\F&Y?]>g\eoɽq]Z##Ql(1'!Lj:V[jP<>yfpfV+7pMb<g 3cz9snCtDЂ=3X V"X;6.~~ x,in/&79{1yOGhm!d yAq_ϞPr"5ԽRrݳ/f)3VL(^ +~ s 82USѫ$k2F\cSb*w|'rak +me,|@ʸc=|v)v4l+jm^8ߕ嵰›In / W|AsNxtGLW?!|Qi돑Z[y[ d/ǯQ"V;x5 +18|Z4Ne=7#' 8?9@b􇌱Q `"()r/(tFo^{>=40>8:a74bIdA1}ߎxY8h-pb@s[Fߊ&ERx?A1VIwscp +L<?E{_G#[XӏVN^ _-=AoKONϗ6|y0w^ ϕ3THb+m&٬=!g[$)i FСz2px?ْm`~~II7__fQY5^A]~ڋQ{4vϰLꝥYyy ȠOcd-yָoO7ҳPL\S 蘾O1|gr|t;>I!}奎S Vwͻ[>zJ㕒O_,f-B8!Ez܍sc_,aTZĕyĐS\_MS* v aQӍ18g ݃-k~dgo="xv{f̯$μ踇g샫*~/@p  $˙f޵lldKg<$L]o10ހ`vNs](7L Gm&#f \gIw06 2#Ě ń + ğs{HM(5/b_֟)ڈv$nGlE,١r]Gd?[N89&^z{?tĭ3{&d㜓}xrF/nf%{[H_#.|Wgf曼79.߂ܶ3zs ݣ@6)]A1s߽[R5'}R>+#0߃/&J;T|K #>x&/Qj<6q|uF ](Gx|/kڜYSw% }irp Ǻc$ TU n>LֲNNHsĹ!a|ir0[O6sQB9 ŬW|:nޑy2q$N|(~| ix2 dگUM 6Un\UОs<|sN'`$tbk6"wQ7ty-8/NÇ;X9r^sNtbI2`"IZ:γ&-MƱ97z=lw]pލJ8¾7y}1~,]7A2tT`dX˙w rh{#MWid#5fx;>SS2=nT/H-PmqۑvKeZތ}j5oi; snZô3Т'SkƴAf10Ά՜g0]3G"W9" #M}rp?O!p2h1r>^m,'b#j [9s>Raڌ}i0 ^ow7 S߯c*a"ApBy>жb +]Ŕz_o~NTO&zھ~ +EWn`IuD~z`G vS.z2q|]}U1wF>r?<u=v;U!-o'u=T̘OTO~ս@O#FB?GAWd9zژܱSd%g&v\΅r\;^Y+'Ə\`.4nP-0~k-] BnR__>*=r@}1Y !}tgb/O3_dqxtN8X-!Xnʥ«giVù&;՟n)_Kg6xϻ1LaO xbX,bX,bX,bX,_-bX,bX8"1IqRyOzOR-(h \:DKjMK-{N!uj b-b||ee T-WP?iŲB<#sQHV |Jwzi,2hjꑓZ>stream +H\j0y9 ",CPdC߾1BI1Lyjr,Zt0(--.jB,N@*N1uq/nafEg78W+*=j՘oP;,A =w楛xm' B8a,q1@YUBQU2_%8{4>jG) +endstream +endobj +241 0 obj +<>stream +Hm {~qݧY@)PR+!|崆KPOſ1hna}a %P&?[Kqj3Ua2JU|m 2ʢ?$M'dVK wݛaTҽ2f(;$=4}`\{U&7wz0e=VO,\Nzr(#5d*zp5^rg2F) h=IO:q7j>+kkָȊRqΕ'wu C]ԘHR iBT4:mnb:sνnL(H3~ +endstream +endobj +242 0 obj +<> +endobj +243 0 obj +[244 0 R 246 0 R] +endobj +244 0 obj +<>/Border[0 0 0]/Contents(http://bit.ly/2VsPFBk)/H/N/Rect[227.275 749.407 315.28 734.568]/StructParent 64/Subtype/Link/Type/Annot>> +endobj +245 0 obj +<> +endobj +246 0 obj +<>/Border[0 0 0]/Contents(https://www.foxitsoftware.com/ \(https://www.foxitsoftware.com/de/products/pdf-compressor/\)\))/H/N/Rect[335.61 749.407 471.983 734.568]/StructParent 65/Subtype/Link/Type/Annot>> +endobj +247 0 obj +<> +endobj +248 0 obj +<>stream +x[nƵm oz ;z}>tT_vs2:y5.ƛrqz{?/jߜ=;"/GQ\Ha~db}@a% +{2k&ˣd/':JTiZGo/]B[QM\\Wi +8yuvo/G}=[~}7^O/7lT} !_&۸,9_.G#Ԑ~;12CTH]Yd sW8rq_]E!#T">':\鍊j1.A-oPJT55%e5*cpd / $)Te*2x[ާѲ,V$YPhhfQR.{-*UP~-á.<`PwxUp1P +7 }Jl|Xڛ`V{`e0~ +nĐe5ܰ e,Ĭ/aj }fvxzjX!JHE**"K }EޱֺU-;Uh2E$FG`׀nH?yp?QEUk_ڃHx`dK]ا^jk XB1.2 iwWOДO%^Njh16 t~YXP`YRn{e``Pv5$-Fo+Qu3q6}^8dK(%Zx>tvT1 ,\wL9abbj༏+%qR8?(E3"3,C)=ŭa?^:Le" p.|6x۠ףKqwJIӊ"X“t;=I>G?[:?%Ofe.PIe%!kػ2F|1%tfI?Z=rSs8nswt^UoN%{v |FO5jޓgxTLBDaM1}`D\,PVXU7L|€?" >JC'2RYR)7䔒xίj~`;s%ͼF_1wD@]%HK,B-^/ѳcURe@xi5-K!JPdL #1S*(TّɃQ: GZBQ#9tyDf%L(6(TRSIk wk)XyqۛEq=dvtRM7ab-gt}9MؖyTvAciH (r@ylLT2C.'%85.~ )@cayGCDr~$]໽k +FOCz}4yXBU>&JsP=OVJ~Ghb! oR"m^u\&-6`eAM)J֮S7ZNkq +Fғ :^KT6W^5c8 _[ˑ vd:ĸsbb~k{,%d=guEe[8hڹڄ瘃ApܨV,b x4ybҨ.{O"pom;+ @+N(wDenm73r H=Kc\uF:3 +sA3x̘e),UpKܡV ]}ؙ 46:BI!vNj58XƮ s2>IA,t`ǼL fU~YOr,sV%EB`%%W;hʸ&H%jD ˘+^DCo5B|=',[c:tepILNneCDnHgnyO(m;V[Uu2$3FӺʮ\:̓t$$ 5v' #'`ʺYit\Z؜H1;J|.v<$" +zuR2,tiS9@͎ݛ8#:MeEpT5OX4Ɖ)p֋,R$U. ucɂQ?ʙ|}Du@&ZUgiaIC{C .g:aۧU7XmFџH.]~8d귛 R}4Svq#B)g:D},Wy)M}vjJ~d;kLq6 zpj,zӶcpK4;}{nSq!P\Xm(la=J@~:Z~LpKYP1|LCHoq憌CUhLj~;+Q8$V;Cmߗ[+!ۡc3thk _Ֆ?pۦu\3es.n5YݣbڀͱD\ކ Smk5}t#m6?_qH{NOxz :ײளhq}neVg2o6~H/(n3\7F_…6&ssư!sr^?G9\c%!aD(y̅fjt(Թģߓ {ZlHp צ*6/fA |qc19L-AP..)ML?ĦIL:R0Gm3>N+!q_̶vzQ4Ӝݥ8mK<™^3xIs{5/kƅaf152`aa{rO04`gKtn #+ԩ`PʨvO)lvݝ}Ty8:ޖQ-_ bR}lњ!2:16qA$ ]~ Үt`J<=Z879FGGGԆ$٩,1a&,ۍ413I轭}ܺh-s5|5sO 8z9I4]Պ'hK@qw/˴nVgN$LsDFz)͕Jv8$ ZrhNj PA9)PLzN[;M+3V6[ W]t&]AC:;-un3OƢƺzP!k֛}tZ]e7? CN ռk*%zX69Kڜ)S2>[ww"~˒|mlY:dw,UswMS7Og}3לg5OnaO쑈!/@f^jr)ӄd+qV'G`Z6e -!"h̹2d +endstream +endobj +249 0 obj +<>/ExtGState<>/Font<>/ProcSet[/PDF/Text]>> +endobj +250 0 obj +<>stream +HW[ y-Ez0NV!td43:1@0$99̃}:&ua`@~h'V})i{"uѦQߢ 975笫1=)*[N1'>;SVp}]CfF[2DaWWRNګtH @.$=CP7rvh\螶)R(#6y]FɝrzOj ?zf.S @ȌOg\:xeJ'7D=5\79$h'5;;:::w R Hxy|/ +endstream +endobj +251 0 obj +<> +endobj +252 0 obj +<>stream +x[ru3?!Sq)6e)IƊFeUIZlc?}<۹` 2.Kn}]{ uu>2UQU*R~ǣPwG'ۣ>JT KTFYqR6*Ϣ*/+u>:yuz^>ʛ8ʚ o<:Sȯ.{n9kӛݭ ۸>Y?"Y%F)*-{Ijg3mӨl,b.W#3zL4jk2 9c}x|z?Z񔅠,No`PV-uELe*IQH|SoUYEEZuUrRۉE&rM࿮B^uH%|+(ҮP;\ 9hm +hZyI_\X%7i_}ufpZFeuR((R@9P܃7ݻd$WQeRR0+~4s̆M]fq~܅zENݢpY(Rr]V&lnU28ńɉ*+3]y"4ѡWnX*GAqDWlr \Q:` J.HY&eo[b5D8?iM:} 4p?Ws8xj#"mLRvЁ(dx;^P~+U5\P%r+jFN2K1UjZ2̏kiN_Q`ΒQ6P9C +Teup $[va77kQ;1Gw7a=l,UloB<\lciETq]F' s& Cם92E +-oY,СM!{" !(P2՚7eLa?9n5L&[4 + +yk2@x@͏TRjWs:<t4_b:t +NK S<L Vaz査 J +T]AOayu@$c#H}<IVKrr^TU.|yiqC6ڂ?#.{ Z2_-C瘀RK>b-ɝi \r q;/F^;c)xPrFCYPKE?(#|h'c1k P 4ā Y& pxPh a- 2!}▭&Hӽ ׁ8oAeu2JjU&*x>)LbTߐ;⹺3&jy.Q@nI0*izfYNj +؇BQ0:A8NH \˻Aҥ>FlJa74SsL9|'Ǩoyfa$ F&&tf7\b&j VTb |N)`fOG@7QX"%׾-ژ7H^(Gٜef>~KDN ![}؟Ft"ӁKu挼IbQg I$͙7b|,6# 0ȝtѵ-`0aJN "I4xLMCY<7S=A&$4cQŽZă538FZ i 6$V1]HТޤ$hM__249r*]cc3-, \,JMG4I>lU3gD͈^jp괣4~6ʐIn?AڊxO=;GvqZ9s.sוwi:˿ {X$fw;\v4נfK$Б 6vnw>GP4j#^wbՙv)ș2 `V*9*pÅ# +si~2UxʫBIw5fh!I~- 8Ye e PgI.>4^`%5 i; +G:пS4/l6 A=dE(k?\˴P ZSؓJC_ = +vY@@=|^sS)U0dX4[!iBlg^Q/ώn;<g137&~jmT$嚤C{#soDW> ^zPHfD?MyfxOVּ\m%ɂDayUk(Yr54TрՑ2@pm + bF3;/ {r M};ȸfF`x-q;I6KQ58䙚9lFe`Ɠ]$χ79..K`Lȶ?x@$l=ef +΀GxzWd.^pk7cy:=Mm Q5rP 5/@ H!ʏ|͂yO(s얈!q`t+<,"[?fej9 +eCjWW˷Rڎ)=0f^<48 jIDK3 a 5>/ExtGState<>/Font<>/ProcSet[/PDF/Text]>> +endobj +254 0 obj +<>stream +Ha {~qݧיXThH L<( >ANuu:렦Z;xa^ݾbw&J|#r`x^KA+jCɷĻG] R)#!7I/Өz" Țxb.&飌ĔIyfiC\% (~sO'fzO?܌=G3^]NTS;YŠLY_@pa|tҦzD:!SSf#HZ~ 89=>Y[,2RD)P'3]ȐE{\a]CntG;ߥDs{Qt 'A KA +endstream +endobj +255 0 obj +<> +endobj +256 0 obj +<>stream +x[n$y5!JUX2 pFGA.6.{~~t5H/gf$dZŋT>K*IT"iJ\YROgRUUjE'uQv}vfgxh$oTfE?]o^_^|qϏ͟u_Η~[=7;U'>]/^t[7fm,;szï-xٸwv?tEHݥf ۴i:#A?$YHOR3dQ2"oΪZd,洭4iTmu%,7|av9ݣJ&mQd2o,"-ծ{X/_/, dvvDU]c/>hͮ^_|z%dgZAI?yuVuٶMR%lDʤ격eڗq<ڊE<ˣy,hWѣcgmԉm\%2}\DxLx+< :* mYDuxV$me7Yxq.@%pgx"]!ǸW7UϪ=~dK$i,MZ[hqz ,4ul6+A7GOs*~ 6qlh7H\FWp+ͯIZQ@=E#%~ϧ|?Wkxf4qո\2P%pD Y`rTyX<$ER+oζ Xǰ%e_uҪ`p{:-FJ &iZWIU Kߛ(v+@%?mx[PRcceSEfl$EѪb%2P 7+Kd P;Q184 +˒8.dP-uUjw*nM,&R_ɲM0w|a@Q;^]d<|$Jt_VbxC3󿡽Jq}w$T'z{ +F;|xF&'H U-CfFˬ ڈw®bc' Id#deuvcvG|8XY!<"vRtYPXG)_+`6-1l59JJ.!`u#NPi*F@hU2 UQK4V9KlKs +č"&fk<(b^EA"%FvdBd4bs#9 y@u[,K_e!qcp(#`5 2Б$ճVKQ+q\Pm)l^UTC$ɻ=@M ?)*w'O(رР+ +ð{#ᐒPFcda ' +$խMз帠5AT'4s$?|&֭5dr["Ll+~#aw3/ׅb] Pnnc~$@b!FC3f,ilQ W]8Y~׋Qi!9Î*:HV"*q@L05%U^P:WF&F 2 { zW.![{S5.謏$m ΄G^%)}a}"w#&6D76܀W6YZb*2LH!G9*J9hcN'[t*?S%-F+m"25^c6v Vsn4XnGV,O">/{S2uJU,AIȘРgCжIفL)DGSH +5j wȕ[fpN8kQU[=H4999өj3Ҹ_LMNˊrm؏*E&p*<:)S;NOBծ 7x˾bIȳ{/3EY6Nwŝ)2-}E6k*V:UG:t߄=Q3Ȼ@V]H$"ĝaKdT82IɱqG:JMkL;[}CɂF ZϴZbNQv p2$)?=,w +chiouF6w67aYCN.Y@60",뤝 "NgdFYvOZ1xQ0_ M^^ILNi&Cޟ[ c7؁v}e`7R'p^ՕN.N-ILl4s[ڈ0K4\OsR&`#8\P4!t1LH)BW|TmZh&7iWn(SmcXҧCN?+pcܭqڢGz/ò<ߓ8cbX~bw[0:wlk-CLm0WcZZ[';ඕ9JWȴpX4*)SWr:X~U1 j"&&&tӡ"Hek ?/5RV<=*vP"r;p$oF/cg;9>M)fuA!):6Ԉ +B/QSǣ7Z= e!n$ok. yxѭJwc|^:s K 6twu[UĿWTvu3+[}'2eZ_вqQgIH6Y+BƖupf]ʶe6B;|r4ƾ,l!θlk(%y2>v',QTCܽ&CuA7d*ȡ#9A6)XL=Z:P0 MX⊀ڕѣƘu.={SJ[I4)ܬO I<4Xuf㽔稝eMˆ2g޶Y9KWi)R#$ +mth9;4n\]p jI;FT#I e93T!xaR-1H >ф)5zN[߄'gvI٨*L.Oux9=6qUAOj'+t]l?饆&(6E-3v䇸G1i5l/qz/cIV3,56]9Yd^ҍG1vF(=:?՘2278b[HMR`a՚k3$>N(v9]wLfQ=oH:`:ߡ0E[%Q}[WyPInH Z8>i-_[ś&r:f ?HϼL}qk×[$Pֹzit&eѯ*6mQ}=04Ir(J a3y}fBwXUGJp.Ԧ24<uk9[Sd[H:d`B;6ttG7d=\Pj.DP+mXKU YAqfU7xy7`f'\-X9?&6w +endstream +endobj +257 0 obj +<>/ExtGState<>/Font<>/ProcSet[/PDF/Text]>> +endobj +258 0 obj +<>stream +Ha 9ϼ8uHE;#cw֙5]]-9'z8vn]cE5zl(PutNM0z8rcR'V::dZei"}bۡ +ȇњ8}q C~eU+d[ㅲ$V /rV`}ѩTdbo3OK~|~RV Lq;eH:LMHrwLOwWޒV ~&01n 5!R޻~V$M +3Aٻ+O-IHߚIye#)ٕ=-;d~Ώpr V=r +endstream +endobj +259 0 obj +<>/ExtGState<>/GS1<>/GS2<>>>/ColorSpace<>>>/Rotate 0/StructParents 68/Tabs/S/Thumb 261 0 R/TrimBox[0 0 595.276 841.89]/Type/Page>> +endobj +260 0 obj +<>stream +x[neFERrx2e'nčH܋e]{R!R 7~\ m 9CrWTS%.9;x\W㳵8||PLW{ac+M#Yj>8-8)j?TD4FMmQmtLD{#n`T5`Ƕ'f(R - `mtJ;}N~Yp>6MOP6'gƢ\hGh)o߂ )F=a`%&>C/l.qb*T6dGhI" nI>0@ (,1fP_s T~ $w$/*e][ &w@7][1]O*0־f_;P!q yhTsTZYabIC5"md o1A$,.nѓ_J+ˬdR䷥VV5+Q⻱ȕfk9Tz/׿.+gO!0_ ζٖ,<[R y5["ZM4ֶ;* x/i)88S#*;)j ;+6ae)D;ai_`L+7FA'Yt"R  ؗ +~GHgxh%:ffP=ѰCrAtQ3W"|ûc2cE{/L(s}}~"*emZEARo\ʹkHG4DPETӾ|rr`2h Ɲ*J3$7Eщ(^K!cvqqg |zbX4$7'$LM &2޲.N33j5 [9Ď X2G`5}!\kt8JJo FS֊+#엖OEn _fDN!aeΠ9\ Ӑf-+wYiPʔ IZϾΟK1ݰX`fՒ@Bo &R)I.v"Gtv9;9B-dQdK6mc욄 W'JzMHdbt+Ǧ6f'8OõIyTr␛2MvP1r@~F5>zwR% +IX#DBEm\&Ak +Ψ/ jRrd*/]`AMD;HKj%k~L8IcPhGEQXr$]|0E51NŎE\I nda&g3EP:Vu3ic.1 OmQDY{[Dz;Z :6QB퀶+g%ᶭvQHC*_QhiNg A~GR(R(w\dH5 +ǂ+4~ NAl$Acu-eʭ̯4p6 :8fn@ݼ@ii9&㒅 kPD4`UvM ( _FWmLR ]+- vSGM5?TA=N- /^4Vԉɤ6Dv +qJtRAतw(@hsU-E֬+Napj|/9ANt +<."ItJ(;W-zV ;qrqأI)8Γ"m/gUz?ذGR6ضoըfvoҧ^"t L}I< ALj0B$8GYlC7-F`j5&U_[1V'K\إ .-PKc,x_E2`Hѓ,bܨ$굪YD^#Q' C6~!64\N` Ak:w]t%(TZ+i1v<\{F -+ "~ UErC=tuɥTo9 +o:o*oXe;z& +,O[?jk1MJCcBm6Ւ.cG5fT{Hh]'d0ؕ`RؕcWN9{},a xU̹ˣzYp=;!1Z̓Mc&7wcgE'0^;)rzj5dW 7X-ָ*ւf53hAʳ$=h(qT,3-1 $ZѓSj$lI|&eC >D2GammGM@-16rJ M +T[@KȚ}ּ})r6~a$i#H0UlKr8nw<zBQ[jfStމn"Oqb5YyH nƣZMɹN]$ 'jQϼ~F?#s2n_FҐ;8Q~$^4Cd&4nX3$d;1+hR뭞$t n¿Ө:TG#P8LHJr/%ѪTTjfw[u8b] +FS3/AwM!| 4[2!j&o3^MWőa'X CKz|uPSn^0iz;7‚r{@3, bݮ]oX9CNFNeU&v+JJ_vԓzJrQn/NWz +endstream +endobj +261 0 obj +<>stream +HW[ y0OӊALD.4e,.aR;aq yCꢚg`ߏL͖r·ߨ2akN'vmNrF.?S5eJh=):03u\_Xpf+x~WTMğ\ 򗟩%G+"(31%O:oV|)W^]fIBS^m{2]IŭIWʾ?Nv3HL@!I@ooP?B +endstream +endobj +262 0 obj +<>/ExtGState<>/GS1<>/GS2<>>>/ColorSpace<>>>/Rotate 0/StructParents 69/Tabs/S/Thumb 264 0 R/TrimBox[0 0 595.276 841.89]/Type/Page>> +endobj +263 0 obj +<>stream +xXݎe((xI#$,mLZN.ƣ-/,++03jR-lI1ۢ}; _,Wm2^ӫ5'b< gpuv WJIX+\볿'~䒄*&o~`B.i2\.pfgφoojxt.fy¡b.??=?ޠQ#gDq܌KveG|~>$tN>$e.4u_yw~<}w8_We2IX_~slwBCFܤ^wpb㹑ƍP k-7 m$RS8Ҿ  _ɤ 5|s#(0W yxB3{|V `r|g.w|q_OV)I<5KhPc&ɧtzlxu꜈P6K ~yall_U?Y6#o 6ɡRAhx]."M̧d DI}x]ƥ[4:0Hy}@GOk=\1ʷhm"30dԖ=g|dB.b?0n <$0%gx3a#X] Krd +&q|tƼ`aќ|փu"~UEkVX&a%ڳ/XLqJ95:+[r<΢FQ~WvZXbG5 /%a>on{yv,t ðóWL(;ԋ }àV"?V|=ٝ[0]vqe.\fc>`c R__ӾyǺP-|8~bi7}ciА"=jk=|;֣2A6OXXpy;meuDOm2OF䚡I=#c%^1ߐ#F,k )sWvz-~Ye !O'hZ_йOVz?:94U4ߕ֙2԰\dNm6|{Lq@R{壀5Z e7#́ ̎k kO旅" &n 3MvGGK, +b sgDR>stream +H 0DѩtI? +65, fw Sf4kQ"YЫ;we^]4 +Cm<ʿ%8>ainfͬe9+u2ם~9_(o%G26d bOP&cڻ&D +endstream +endobj +265 0 obj +<>stream +HWm <->\gnmt?@kiB8a9px2 +z+{H2+5x;6lw5SJЫ3T%*ܹwzHwOhaQ*'\N%#e(#  E8ORȿL +endstream +endobj +266 0 obj +<> +endobj +267 0 obj +<> +endobj +268 0 obj +<> +endobj +269 0 obj +<> +endobj +270 0 obj +<> +endobj +271 0 obj +<> +endobj +272 0 obj +<> +endobj +273 0 obj +<> +endobj +274 0 obj +<> +endobj +275 0 obj +<> +endobj +276 0 obj +<> +endobj +277 0 obj +<> +endobj +278 0 obj +<> +endobj +279 0 obj +<> +endobj +280 0 obj +<> +endobj +281 0 obj +<> +endobj +282 0 obj +<> +endobj +283 0 obj +<> +endobj +284 0 obj +<> +endobj +285 0 obj +<> +endobj +286 0 obj +<> +endobj +287 0 obj +<> +endobj +288 0 obj +<> +endobj +289 0 obj +<> +endobj +290 0 obj +<> +endobj +291 0 obj +<> +endobj +292 0 obj +<> +endobj +293 0 obj +<> +endobj +294 0 obj +<> +endobj +295 0 obj +<> +endobj +296 0 obj +<> +endobj +297 0 obj +<> +endobj +298 0 obj +<> +endobj +299 0 obj +<> +endobj +300 0 obj +<> +endobj +301 0 obj +<> +endobj +302 0 obj +<> +endobj +303 0 obj +<> +endobj +304 0 obj +<> +endobj +305 0 obj +<> +endobj +306 0 obj +<> +endobj +307 0 obj +<> +endobj +308 0 obj +<> +endobj +309 0 obj +<> +endobj +310 0 obj +<> +endobj +311 0 obj +<> +endobj +312 0 obj +<>/A2<>/A5<>/A8<>/A9<>/Pa1<>/Pa10<>/Pa11<>/Pa13<>/Pa16<>/Pa17<>/Pa2<>/Pa4<>/Pa5<>/Pa6<>/Pa7<>/Pa8<>/Pa9<>>> +endobj +313 0 obj +<> +endobj +314 0 obj +<> +endobj +315 0 obj +<> +endobj +316 0 obj +<>/K[70 71 72 73 317 0 R 75]/P 315 0 R/Pg 9 0 R/S/Title>> +endobj +317 0 obj +<> +endobj +318 0 obj +<> +endobj +319 0 obj +<>/K 0/P 318 0 R/Pg 9 0 R/S/H1>> +endobj +320 0 obj +<> +endobj +321 0 obj +<> +endobj +322 0 obj +<> +endobj +323 0 obj +<>1 324 0 R 3]/P 322 0 R/Pg 9 0 R/S/Link>> +endobj +324 0 obj +<> +endobj +325 0 obj +<> +endobj +326 0 obj +<> +endobj +327 0 obj +<>4 328 0 R 6]/P 326 0 R/Pg 9 0 R/S/Link>> +endobj +328 0 obj +<> +endobj +329 0 obj +<> +endobj +330 0 obj +<> +endobj +331 0 obj +<> +endobj +332 0 obj +<>7 333 0 R 9]/P 331 0 R/Pg 9 0 R/S/Link>> +endobj +333 0 obj +<> +endobj +334 0 obj +<> +endobj +335 0 obj +<> +endobj +336 0 obj +<>10 337 0 R 12]/P 335 0 R/Pg 9 0 R/S/Link>> +endobj +337 0 obj +<> +endobj +338 0 obj +<> +endobj +339 0 obj +<> +endobj +340 0 obj +<><>13 341 0 R 15 342 0 R 17]/P 339 0 R/Pg 9 0 R/S/Link>> +endobj +341 0 obj +<> +endobj +342 0 obj +<> +endobj +343 0 obj +<> +endobj +344 0 obj +<> +endobj +345 0 obj +<> +endobj +346 0 obj +<>18 347 0 R 20]/P 345 0 R/Pg 9 0 R/S/Link>> +endobj +347 0 obj +<> +endobj +348 0 obj +<> +endobj +349 0 obj +<> +endobj +350 0 obj +<>21 351 0 R 23]/P 349 0 R/Pg 9 0 R/S/Link>> +endobj +351 0 obj +<> +endobj +352 0 obj +<> +endobj +353 0 obj +<> +endobj +354 0 obj +<>24 355 0 R 26]/P 353 0 R/Pg 9 0 R/S/Link>> +endobj +355 0 obj +<> +endobj +356 0 obj +<> +endobj +357 0 obj +<> +endobj +358 0 obj +<>27 359 0 R 29]/P 357 0 R/Pg 9 0 R/S/Link>> +endobj +359 0 obj +<> +endobj +360 0 obj +<> +endobj +361 0 obj +<> +endobj +362 0 obj +<>30 363 0 R 32]/P 361 0 R/Pg 9 0 R/S/Link>> +endobj +363 0 obj +<> +endobj +364 0 obj +<> +endobj +365 0 obj +<> +endobj +366 0 obj +<><>33 367 0 R 35 368 0 R 37]/P 365 0 R/Pg 9 0 R/S/Link>> +endobj +367 0 obj +<> +endobj +368 0 obj +<> +endobj +369 0 obj +<> +endobj +370 0 obj +<> +endobj +371 0 obj +<> +endobj +372 0 obj +<>38 373 0 R 40]/P 371 0 R/Pg 9 0 R/S/Link>> +endobj +373 0 obj +<> +endobj +374 0 obj +<> +endobj +375 0 obj +<> +endobj +376 0 obj +<>41 377 0 R 43]/P 375 0 R/Pg 9 0 R/S/Link>> +endobj +377 0 obj +<> +endobj +378 0 obj +<> +endobj +379 0 obj +<> +endobj +380 0 obj +<>44 381 0 R 46]/P 379 0 R/Pg 9 0 R/S/Link>> +endobj +381 0 obj +<> +endobj +382 0 obj +<> +endobj +383 0 obj +<> +endobj +384 0 obj +<>47 385 0 R 49]/P 383 0 R/Pg 9 0 R/S/Link>> +endobj +385 0 obj +<> +endobj +386 0 obj +<> +endobj +387 0 obj +<> +endobj +388 0 obj +<> +endobj +389 0 obj +<>50 390 0 R 52]/P 388 0 R/Pg 9 0 R/S/Link>> +endobj +390 0 obj +<> +endobj +391 0 obj +<> +endobj +392 0 obj +<> +endobj +393 0 obj +<>53 394 0 R 55]/P 392 0 R/Pg 9 0 R/S/Link>> +endobj +394 0 obj +<> +endobj +395 0 obj +<> +endobj +396 0 obj +<> +endobj +397 0 obj +<><>56 398 0 R 58 399 0 R 60]/P 396 0 R/Pg 9 0 R/S/Link>> +endobj +398 0 obj +<> +endobj +399 0 obj +<> +endobj +400 0 obj +<> +endobj +401 0 obj +<> +endobj +402 0 obj +<>61 403 0 R 63]/P 401 0 R/Pg 9 0 R/S/Link>> +endobj +403 0 obj +<> +endobj +404 0 obj +<> +endobj +405 0 obj +<> +endobj +406 0 obj +<>64 407 0 R 66]/P 405 0 R/Pg 9 0 R/S/Link>> +endobj +407 0 obj +<> +endobj +408 0 obj +<> +endobj +409 0 obj +<> +endobj +410 0 obj +<>67 411 0 R 69]/P 409 0 R/Pg 9 0 R/S/Link>> +endobj +411 0 obj +<> +endobj +412 0 obj +<> +endobj +413 0 obj +<> +endobj +414 0 obj +<> +endobj +415 0 obj +<> +endobj +416 0 obj +<> +endobj +417 0 obj +<> +endobj +418 0 obj +<> +endobj +419 0 obj +<> +endobj +420 0 obj +<> +endobj +421 0 obj +<> +endobj +422 0 obj +<> +endobj +423 0 obj +<> +endobj +424 0 obj +<> +endobj +425 0 obj +<> +endobj +426 0 obj +<> +endobj +427 0 obj +<> +endobj +428 0 obj +<> +endobj +429 0 obj +<> +endobj +430 0 obj +<> +endobj +431 0 obj +<> +endobj +432 0 obj +<> +endobj +433 0 obj +<> +endobj +434 0 obj +<> +endobj +435 0 obj +<> +endobj +436 0 obj +<> +endobj +437 0 obj +<> +endobj +438 0 obj +<> +endobj +439 0 obj +<> +endobj +440 0 obj +<> +endobj +441 0 obj +<> +endobj +442 0 obj +<> +endobj +443 0 obj +<> +endobj +444 0 obj +<> +endobj +445 0 obj +<> +endobj +446 0 obj +<> +endobj +447 0 obj +<> +endobj +448 0 obj +<> +endobj +449 0 obj +<> +endobj +450 0 obj +<> +endobj +451 0 obj +<> +endobj +452 0 obj +<> +endobj +453 0 obj +<> +endobj +454 0 obj +<> +endobj +455 0 obj +<> +endobj +456 0 obj +<> +endobj +457 0 obj +<> +endobj +458 0 obj +<> +endobj +459 0 obj +<> +endobj +460 0 obj +<> +endobj +461 0 obj +<> +endobj +462 0 obj +<><>]/P 412 0 R/Pg 86 0 R/S/P/Type/StructElem>> +endobj +463 0 obj +<> +endobj +464 0 obj +<> +endobj +465 0 obj +<> +endobj +466 0 obj +<> +endobj +467 0 obj +<> +endobj +468 0 obj +<> +endobj +469 0 obj +<>470 0 R]/P 465 0 R/S/Link>> +endobj +470 0 obj +<> +endobj +471 0 obj +<>472 0 R]/P 465 0 R/S/Link>> +endobj +472 0 obj +<> +endobj +473 0 obj +<>474 0 R]/P 465 0 R/S/Link>> +endobj +474 0 obj +<> +endobj +475 0 obj +<>476 0 R]/P 465 0 R/S/Link>> +endobj +476 0 obj +<> +endobj +477 0 obj +<> +endobj +478 0 obj +<> +endobj +479 0 obj +<> +endobj +480 0 obj +<> +endobj +481 0 obj +<> +endobj +482 0 obj +<> +endobj +483 0 obj +<> +endobj +484 0 obj +<> +endobj +485 0 obj +<> +endobj +486 0 obj +<> +endobj +487 0 obj +<> +endobj +488 0 obj +<> +endobj +489 0 obj +<> +endobj +490 0 obj +<> +endobj +491 0 obj +<> +endobj +492 0 obj +<> +endobj +493 0 obj +<> +endobj +494 0 obj +<> +endobj +495 0 obj +<> +endobj +496 0 obj +<> +endobj +497 0 obj +<> +endobj +498 0 obj +<> +endobj +499 0 obj +<> +endobj +500 0 obj +<> +endobj +501 0 obj +<> +endobj +502 0 obj +<> +endobj +503 0 obj +<> +endobj +504 0 obj +<><><>506 0 R<>]/P 412 0 R/Pg 94 0 R/S/P/Type/StructElem>> +endobj +505 0 obj +<> +endobj +506 0 obj +<> +endobj +507 0 obj +<> +endobj +508 0 obj +<> +endobj +509 0 obj +<> +endobj +510 0 obj +<> +endobj +511 0 obj +<> +endobj +512 0 obj +<> +endobj +513 0 obj +<> +endobj +514 0 obj +<> +endobj +515 0 obj +<> +endobj +516 0 obj +<> +endobj +517 0 obj +<> +endobj +518 0 obj +<> +endobj +519 0 obj +<> +endobj +520 0 obj +<> +endobj +521 0 obj +<> +endobj +522 0 obj +<> +endobj +523 0 obj +<> +endobj +524 0 obj +<> +endobj +525 0 obj +<> +endobj +526 0 obj +<> +endobj +527 0 obj +<> +endobj +528 0 obj +<> +endobj +529 0 obj +<> +endobj +530 0 obj +<> +endobj +531 0 obj +<> +endobj +532 0 obj +<> +endobj +533 0 obj +<> +endobj +534 0 obj +<> +endobj +535 0 obj +<> +endobj +536 0 obj +<> +endobj +537 0 obj +<> +endobj +538 0 obj +<> +endobj +539 0 obj +<> +endobj +540 0 obj +<> +endobj +541 0 obj +<> +endobj +542 0 obj +<> +endobj +543 0 obj +<> +endobj +544 0 obj +<> +endobj +545 0 obj +<> +endobj +546 0 obj +<> +endobj +547 0 obj +<> +endobj +548 0 obj +<> +endobj +549 0 obj +<> +endobj +550 0 obj +<> +endobj +551 0 obj +<> +endobj +552 0 obj +<> +endobj +553 0 obj +<> +endobj +554 0 obj +<> +endobj +555 0 obj +<> +endobj +556 0 obj +<> +endobj +557 0 obj +<> +endobj +558 0 obj +<> +endobj +559 0 obj +<> +endobj +560 0 obj +<>561 0 R 562 0 R 563 0 R 564 0 R]/P 557 0 R/S/Link>> +endobj +561 0 obj +<> +endobj +562 0 obj +<> +endobj +563 0 obj +<> +endobj +564 0 obj +<> +endobj +565 0 obj +<> +endobj +566 0 obj +<> +endobj +567 0 obj +<> +endobj +568 0 obj +<>/K[569 0 R 574 0 R 581 0 R 589 0 R 595 0 R 601 0 R]/P 412 0 R/S/Table/Type/StructElem>> +endobj +569 0 obj +<> +endobj +570 0 obj +<>/K 571 0 R/P 569 0 R/S/TH>> +endobj +571 0 obj +<> +endobj +572 0 obj +<>/K 573 0 R/P 569 0 R/S/TH>> +endobj +573 0 obj +<>/K 416/P 572 0 R/Pg 135 0 R/S/P>> +endobj +574 0 obj +<> +endobj +575 0 obj +<>/K 576 0 R/P 574 0 R/S/TH>> +endobj +576 0 obj +<> +endobj +577 0 obj +<>/K 578 0 R/P 574 0 R/S/TH>> +endobj +578 0 obj +<> +endobj +579 0 obj +<>/K 580 0 R/P 574 0 R/S/TH>> +endobj +580 0 obj +<> +endobj +581 0 obj +<> +endobj +582 0 obj +<>/K 583 0 R/P 581 0 R/S/TH>> +endobj +583 0 obj +<> +endobj +584 0 obj +<>/K 585 0 R/P 581 0 R/S/TH>> +endobj +585 0 obj +<> +endobj +586 0 obj +<

    > +endobj +587 0 obj +<

    > +endobj +588 0 obj +<

    > +endobj +589 0 obj +<> +endobj +590 0 obj +<>/K 591 0 R/P 589 0 R/S/TH>> +endobj +591 0 obj +<> +endobj +592 0 obj +<

    > +endobj +593 0 obj +<

    > +endobj +594 0 obj +<

    > +endobj +595 0 obj +<> +endobj +596 0 obj +<>/K 597 0 R/P 595 0 R/S/TH>> +endobj +597 0 obj +<> +endobj +598 0 obj +<

    > +endobj +599 0 obj +<

    > +endobj +600 0 obj +<

    > +endobj +601 0 obj +<> +endobj +602 0 obj +<>/K 603 0 R/P 601 0 R/S/TH>> +endobj +603 0 obj +<> +endobj +604 0 obj +<

    > +endobj +605 0 obj +<

    > +endobj +606 0 obj +<

    > +endobj +607 0 obj +<> +endobj +608 0 obj +<> +endobj +609 0 obj +<> +endobj +610 0 obj +<> +endobj +611 0 obj +<> +endobj +612 0 obj +<> +endobj +613 0 obj +<> +endobj +614 0 obj +<> +endobj +615 0 obj +<> +endobj +616 0 obj +<> +endobj +617 0 obj +<> +endobj +618 0 obj +<> +endobj +619 0 obj +<> +endobj +620 0 obj +<> +endobj +621 0 obj +<> +endobj +622 0 obj +<> +endobj +623 0 obj +<> +endobj +624 0 obj +<> +endobj +625 0 obj +<> +endobj +626 0 obj +<> +endobj +627 0 obj +<> +endobj +628 0 obj +<> +endobj +629 0 obj +<> +endobj +630 0 obj +<> +endobj +631 0 obj +<> +endobj +632 0 obj +<> +endobj +633 0 obj +<> +endobj +634 0 obj +<> +endobj +635 0 obj +<> +endobj +636 0 obj +<> +endobj +637 0 obj +<> +endobj +638 0 obj +<> +endobj +639 0 obj +<> +endobj +640 0 obj +<> +endobj +641 0 obj +<> +endobj +642 0 obj +<> +endobj +643 0 obj +<> +endobj +644 0 obj +<> +endobj +645 0 obj +<> +endobj +646 0 obj +<> +endobj +647 0 obj +<> +endobj +648 0 obj +<> +endobj +649 0 obj +<> +endobj +650 0 obj +<> +endobj +651 0 obj +<> +endobj +652 0 obj +<>653 0 R 654 0 R 655 0 R 656 0 R]/P 651 0 R/S/Link>> +endobj +653 0 obj +<> +endobj +654 0 obj +<> +endobj +655 0 obj +<> +endobj +656 0 obj +<> +endobj +657 0 obj +<> +endobj +658 0 obj +<> +endobj +659 0 obj +<> +endobj +660 0 obj +<> +endobj +661 0 obj +<> +endobj +662 0 obj +<> +endobj +663 0 obj +<> +endobj +664 0 obj +<> +endobj +665 0 obj +<> +endobj +666 0 obj +<> +endobj +667 0 obj +<> +endobj +668 0 obj +<> +endobj +669 0 obj +<> +endobj +670 0 obj +<> +endobj +671 0 obj +<> +endobj +672 0 obj +<> +endobj +673 0 obj +<> +endobj +674 0 obj +<>/Alt(Eine Menkarte in zwei verschiedenen Gestaltungen)/K 542/P 412 0 R/Pg 141 0 R/S/Figure/Type/StructElem>> +endobj +675 0 obj +<> +endobj +676 0 obj +<>/K 535/P 675 0 R/Pg 141 0 R/S/P>> +endobj +677 0 obj +<> +endobj +678 0 obj +<> +endobj +679 0 obj +<> +endobj +680 0 obj +<> +endobj +681 0 obj +<> +endobj +682 0 obj +<> +endobj +683 0 obj +<> +endobj +684 0 obj +<> +endobj +685 0 obj +<> +endobj +686 0 obj +<> +endobj +687 0 obj +<> +endobj +688 0 obj +<> +endobj +689 0 obj +<> +endobj +690 0 obj +<> +endobj +691 0 obj +<> +endobj +692 0 obj +<> +endobj +693 0 obj +<> +endobj +694 0 obj +<> +endobj +695 0 obj +<> +endobj +696 0 obj +<> +endobj +697 0 obj +<> +endobj +698 0 obj +<> +endobj +699 0 obj +<> +endobj +700 0 obj +<> +endobj +701 0 obj +<> +endobj +702 0 obj +<> +endobj +703 0 obj +<> +endobj +704 0 obj +<> +endobj +705 0 obj +<> +endobj +706 0 obj +<> +endobj +707 0 obj +<> +endobj +708 0 obj +<> +endobj +709 0 obj +<> +endobj +710 0 obj +<> +endobj +711 0 obj +<> +endobj +712 0 obj +<> +endobj +713 0 obj +<> +endobj +714 0 obj +<> +endobj +715 0 obj +<> +endobj +716 0 obj +<> +endobj +717 0 obj +<> +endobj +718 0 obj +<> +endobj +719 0 obj +<> +endobj +720 0 obj +<> +endobj +721 0 obj +<> +endobj +722 0 obj +<> +endobj +723 0 obj +<> +endobj +724 0 obj +<> +endobj +725 0 obj +<> +endobj +726 0 obj +<> +endobj +727 0 obj +<> +endobj +728 0 obj +<> +endobj +729 0 obj +<> +endobj +730 0 obj +<> +endobj +731 0 obj +<> +endobj +732 0 obj +<> +endobj +733 0 obj +<> +endobj +734 0 obj +<> +endobj +735 0 obj +<> +endobj +736 0 obj +<> +endobj +737 0 obj +<> +endobj +738 0 obj +<> +endobj +739 0 obj +<> +endobj +740 0 obj +<> +endobj +741 0 obj +<> +endobj +742 0 obj +<> +endobj +743 0 obj +<> +endobj +744 0 obj +<> +endobj +745 0 obj +<> +endobj +746 0 obj +<> +endobj +747 0 obj +<> +endobj +748 0 obj +<> +endobj +749 0 obj +<> +endobj +750 0 obj +<> +endobj +751 0 obj +<> +endobj +752 0 obj +<> +endobj +753 0 obj +<> +endobj +754 0 obj +<> +endobj +755 0 obj +<> +endobj +756 0 obj +<> +endobj +757 0 obj +<> +endobj +758 0 obj +<> +endobj +759 0 obj +<> +endobj +760 0 obj +<> +endobj +761 0 obj +<> +endobj +762 0 obj +<> +endobj +763 0 obj +<> +endobj +764 0 obj +<> +endobj +765 0 obj +<> +endobj +766 0 obj +<> +endobj +767 0 obj +<> +endobj +768 0 obj +<> +endobj +769 0 obj +<>770 0 R]/P 768 0 R/S/Link>> +endobj +770 0 obj +<> +endobj +771 0 obj +<>772 0 R]/P 768 0 R/S/Link>> +endobj +772 0 obj +<> +endobj +773 0 obj +<> +endobj +774 0 obj +<> +endobj +775 0 obj +<> +endobj +776 0 obj +<> +endobj +777 0 obj +<> +endobj +778 0 obj +<> +endobj +779 0 obj +<> +endobj +780 0 obj +<> +endobj +781 0 obj +<> +endobj +782 0 obj +<> +endobj +783 0 obj +<> +endobj +784 0 obj +<> +endobj +785 0 obj +<> +endobj +786 0 obj +<> +endobj +787 0 obj +<> +endobj +788 0 obj +<> +endobj +789 0 obj +<> +endobj +790 0 obj +<> +endobj +791 0 obj +<> +endobj +792 0 obj +<> +endobj +793 0 obj +<> +endobj +794 0 obj +<>795 0 R]/P 792 0 R/S/Link>> +endobj +795 0 obj +<> +endobj +796 0 obj +<> +endobj +797 0 obj +<> +endobj +798 0 obj +<> +endobj +799 0 obj +<> +endobj +800 0 obj +<> +endobj +801 0 obj +<> +endobj +802 0 obj +<> +endobj +803 0 obj +<> +endobj +804 0 obj +<> +endobj +805 0 obj +<> +endobj +806 0 obj +<>807 0 R]/P 805 0 R/S/Link>> +endobj +807 0 obj +<> +endobj +808 0 obj +<>809 0 R]/P 805 0 R/S/Link>> +endobj +809 0 obj +<> +endobj +810 0 obj +<> +endobj +811 0 obj +<> +endobj +812 0 obj +<> +endobj +813 0 obj +<> +endobj +814 0 obj +<> +endobj +815 0 obj +<> +endobj +816 0 obj +<> +endobj +817 0 obj +<> +endobj +818 0 obj +<> +endobj +819 0 obj +<> +endobj +820 0 obj +<>821 0 R]/P 819 0 R/S/Link>> +endobj +821 0 obj +<> +endobj +822 0 obj +<>823 0 R]/P 819 0 R/S/Link>> +endobj +823 0 obj +<> +endobj +824 0 obj +<> +endobj +825 0 obj +<> +endobj +826 0 obj +<> +endobj +827 0 obj +<> +endobj +828 0 obj +<> +endobj +829 0 obj +<>830 0 R]/P 828 0 R/S/Link>> +endobj +830 0 obj +<> +endobj +831 0 obj +<> +endobj +832 0 obj +<> +endobj +833 0 obj +<> +endobj +834 0 obj +<> +endobj +835 0 obj +<>836 0 R]/P 834 0 R/S/Link>> +endobj +836 0 obj +<> +endobj +837 0 obj +<>838 0 R]/P 834 0 R/S/Link>> +endobj +838 0 obj +<> +endobj +839 0 obj +<> +endobj +840 0 obj +<> +endobj +841 0 obj +<> +endobj +842 0 obj +<> +endobj +843 0 obj +<>844 0 R]/P 842 0 R/S/Link>> +endobj +844 0 obj +<> +endobj +845 0 obj +<>846 0 R]/P 842 0 R/S/Link>> +endobj +846 0 obj +<> +endobj +847 0 obj +<> +endobj +848 0 obj +<> +endobj +849 0 obj +<> +endobj +850 0 obj +<>851 0 R]/P 849 0 R/S/Link>> +endobj +851 0 obj +<> +endobj +852 0 obj +<> +endobj +853 0 obj +<> +endobj +854 0 obj +<> +endobj +855 0 obj +<>856 0 R]/P 854 0 R/S/Link>> +endobj +856 0 obj +<> +endobj +857 0 obj +<>858 0 R]/P 854 0 R/S/Link>> +endobj +858 0 obj +<> +endobj +859 0 obj +<> +endobj +860 0 obj +<>861 0 R]/P 859 0 R/S/Link>> +endobj +861 0 obj +<> +endobj +862 0 obj +<> +endobj +863 0 obj +<> +endobj +864 0 obj +<> +endobj +865 0 obj +<> +endobj +866 0 obj +<> +endobj +867 0 obj +<> +endobj +868 0 obj +<> +endobj +869 0 obj +<> +endobj +870 0 obj +<> +endobj +871 0 obj +<> +endobj +872 0 obj +<> +endobj +873 0 obj +<> +endobj +874 0 obj +<> +endobj +875 0 obj +<> +endobj +876 0 obj +<> +endobj +877 0 obj +<> +endobj +878 0 obj +<> +endobj +879 0 obj +<> +endobj +880 0 obj +<> +endobj +881 0 obj +<> +endobj +882 0 obj +<> +endobj +883 0 obj +<>887 0 R<>]/P 412 0 R/Pg 216 0 R/S/P/Type/StructElem>> +endobj +884 0 obj +<> +endobj +885 0 obj +<> +endobj +886 0 obj +<> +endobj +887 0 obj +<> +endobj +888 0 obj +<> +endobj +889 0 obj +<> +endobj +890 0 obj +<> +endobj +891 0 obj +<> +endobj +892 0 obj +<> +endobj +893 0 obj +<> +endobj +894 0 obj +<> +endobj +895 0 obj +<> +endobj +896 0 obj +<>897 0 R]/P 895 0 R/S/Link>> +endobj +897 0 obj +<> +endobj +898 0 obj +<> +endobj +899 0 obj +<> +endobj +900 0 obj +<> +endobj +901 0 obj +<> +endobj +902 0 obj +<> +endobj +903 0 obj +<> +endobj +904 0 obj +<> +endobj +905 0 obj +<> +endobj +906 0 obj +<> +endobj +907 0 obj +<> +endobj +908 0 obj +<> +endobj +909 0 obj +<> +endobj +910 0 obj +<> +endobj +911 0 obj +<> +endobj +912 0 obj +<> +endobj +913 0 obj +<> +endobj +914 0 obj +<> +endobj +915 0 obj +<> +endobj +916 0 obj +<> +endobj +917 0 obj +<> +endobj +918 0 obj +<> +endobj +919 0 obj +<> +endobj +920 0 obj +<> +endobj +921 0 obj +<> +endobj +922 0 obj +<> +endobj +923 0 obj +<> +endobj +924 0 obj +<> +endobj +925 0 obj +<> +endobj +926 0 obj +<> +endobj +927 0 obj +<> +endobj +928 0 obj +<> +endobj +929 0 obj +<> +endobj +930 0 obj +<> +endobj +931 0 obj +<> +endobj +932 0 obj +<> +endobj +933 0 obj +<> +endobj +934 0 obj +<> +endobj +935 0 obj +<> +endobj +936 0 obj +<> +endobj +937 0 obj +<>938 0 R]/P 935 0 R/S/Link>> +endobj +938 0 obj +<> +endobj +939 0 obj +<>940 0 R]/P 935 0 R/S/Link>> +endobj +940 0 obj +<> +endobj +941 0 obj +<> +endobj +942 0 obj +<> +endobj +943 0 obj +<> +endobj +944 0 obj +<> +endobj +945 0 obj +<> +endobj +946 0 obj +<> +endobj +947 0 obj +<> +endobj +948 0 obj +<> +endobj +949 0 obj +<> +endobj +950 0 obj +<> +endobj +951 0 obj +<> +endobj +952 0 obj +<> +endobj +953 0 obj +<> +endobj +954 0 obj +<> +endobj +955 0 obj +<> +endobj +956 0 obj +<> +endobj +957 0 obj +<> +endobj +958 0 obj +<> +endobj +959 0 obj +<> +endobj +960 0 obj +<> +endobj +961 0 obj +<> +endobj +962 0 obj +<> +endobj +963 0 obj +<> +endobj +964 0 obj +<> +endobj +965 0 obj +<> +endobj +966 0 obj +<> +endobj +967 0 obj +<> +endobj +968 0 obj +<> +endobj +969 0 obj +<> +endobj +970 0 obj +<> +endobj +971 0 obj +<> +endobj +972 0 obj +<> +endobj +973 0 obj +<> +endobj +974 0 obj +<> +endobj +975 0 obj +<> +endobj +976 0 obj +<> +endobj +977 0 obj +<> +endobj +978 0 obj +<> +endobj +979 0 obj +<> +endobj +980 0 obj +<> +endobj +981 0 obj +<> +endobj +982 0 obj +<> +endobj +983 0 obj +<> +endobj +984 0 obj +<> +endobj +985 0 obj +<> +endobj +986 0 obj +<> +endobj +987 0 obj +<> +endobj +988 0 obj +<> +endobj +989 0 obj +<> +endobj +990 0 obj +<> +endobj +991 0 obj +<> +endobj +992 0 obj +<> +endobj +993 0 obj +<> +endobj +994 0 obj +<> +endobj +995 0 obj +<> +endobj +996 0 obj +<> +endobj +997 0 obj +<> +endobj +998 0 obj +<> +endobj +999 0 obj +<> +endobj +1000 0 obj +<> +endobj +1001 0 obj +<> +endobj +1002 0 obj +<> +endobj +1003 0 obj +<> +endobj +1004 0 obj +<> +endobj +1005 0 obj +<> +endobj +1006 0 obj +<> +endobj +1007 0 obj +<> +endobj +1008 0 obj +<> +endobj +1009 0 obj +<> +endobj +1010 0 obj +<> +endobj +1011 0 obj +<> +endobj +1012 0 obj +<> +endobj +1013 0 obj +<> +endobj +1014 0 obj +<> +endobj +1015 0 obj +<> +endobj +1016 0 obj +<> +endobj +1017 0 obj +<> +endobj +1018 0 obj +<> +endobj +1019 0 obj +<> +endobj +1020 0 obj +<> +endobj +1021 0 obj +<> +endobj +1022 0 obj +<> +endobj +1023 0 obj +<> +endobj +1024 0 obj +<> +endobj +1025 0 obj +<> +endobj +1026 0 obj +<> +endobj +1027 0 obj +<> +endobj +1028 0 obj +<> +endobj +1029 0 obj +<> +endobj +1030 0 obj +<> +endobj +1031 0 obj +<> +endobj +1032 0 obj +<> +endobj +1033 0 obj +<> +endobj +1034 0 obj +<> +endobj +1035 0 obj +<> +endobj +1036 0 obj +<> +endobj +1037 0 obj +<> +endobj +1038 0 obj +<> +endobj +1039 0 obj +<> +endobj +1040 0 obj +<> +endobj +1041 0 obj +<> +endobj +1042 0 obj +<> +endobj +1043 0 obj +<> +endobj +1044 0 obj +<> +endobj +1045 0 obj +<> +endobj +1046 0 obj +<> +endobj +1047 0 obj +<> +endobj +1048 0 obj +<> +endobj +1049 0 obj +<> +endobj +1050 0 obj +<> +endobj +1051 0 obj +<> +endobj +1052 0 obj +<> +endobj +1053 0 obj +<> +endobj +1054 0 obj +<> +endobj +1055 0 obj +<> +endobj +1056 0 obj +<> +endobj +1057 0 obj +<> +endobj +1058 0 obj +<> +endobj +1059 0 obj +<> +endobj +1060 0 obj +<> +endobj +1061 0 obj +<> +endobj +1062 0 obj +<> +endobj +1063 0 obj +<> +endobj +1064 0 obj +<> +endobj +1065 0 obj +<> +endobj +1066 0 obj +<> +endobj +1067 0 obj +<> +endobj +1068 0 obj +<> +endobj +1069 0 obj +<> +endobj +1070 0 obj +<> +endobj +1071 0 obj +<> +endobj +1072 0 obj +<> +endobj +1073 0 obj +<> +endobj +1074 0 obj +<> +endobj +1075 0 obj +<> +endobj +1076 0 obj +<> +endobj +1077 0 obj +<> +endobj +1078 0 obj +<> +endobj +1079 0 obj +<> +endobj +1080 0 obj +<> +endobj +1081 0 obj +<> +endobj +1082 0 obj +<> +endobj +1083 0 obj +<> +endobj +1084 0 obj +<> +endobj +1085 0 obj +<> +endobj +1086 0 obj +<> +endobj +1087 0 obj +<> +endobj +1088 0 obj +<> +endobj +1089 0 obj +<> +endobj +1090 0 obj +<> +endobj +1091 0 obj +<> +endobj +1092 0 obj +<> +endobj +1093 0 obj +<> +endobj +1094 0 obj +<> +endobj +1095 0 obj +<> +endobj +1096 0 obj +<> +endobj +1097 0 obj +<> +endobj +1098 0 obj +<> +endobj +1099 0 obj +<> +endobj +1100 0 obj +<><><>]>> +endobj +1101 0 obj +[319 0 R 323 0 R 324 0 R 323 0 R 327 0 R 328 0 R 327 0 R 332 0 R 333 0 R 332 0 R 336 0 R 337 0 R 336 0 R 340 0 R 341 0 R 340 0 R 342 0 R 340 0 R 346 0 R 347 0 R 346 0 R 350 0 R 351 0 R 350 0 R 354 0 R 355 0 R 354 0 R 358 0 R 359 0 R 358 0 R 362 0 R 363 0 R 362 0 R 366 0 R 367 0 R 366 0 R 368 0 R 366 0 R 372 0 R 373 0 R 372 0 R 376 0 R 377 0 R 376 0 R 380 0 R 381 0 R 380 0 R 384 0 R 385 0 R 384 0 R 389 0 R 390 0 R 389 0 R 393 0 R 394 0 R 393 0 R 397 0 R 398 0 R 397 0 R 399 0 R 397 0 R 402 0 R 403 0 R 402 0 R 406 0 R 407 0 R 406 0 R 410 0 R 411 0 R 410 0 R 316 0 R 316 0 R 316 0 R 316 0 R 317 0 R 316 0 R] +endobj +1102 0 obj +[null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null 413 0 R 414 0 R 415 0 R 414 0 R 414 0 R 414 0 R 414 0 R 416 0 R 416 0 R 417 0 R 416 0 R 416 0 R 416 0 R 416 0 R 418 0 R 418 0 R 418 0 R 418 0 R 418 0 R 418 0 R 419 0 R 418 0 R 420 0 R 420 0 R 421 0 R 420 0 R 420 0 R 420 0 R 420 0 R 420 0 R 422 0 R 422 0 R 422 0 R 422 0 R 422 0 R 423 0 R 422 0 R 424 0 R 425 0 R 425 0 R 426 0 R 427 0 R 427 0 R 427 0 R 428 0 R 429 0 R 428 0 R 428 0 R 433 0 R 434 0 R 437 0 R 438 0 R 439 0 R 438 0 R 442 0 R 443 0 R] +endobj +1103 0 obj +[null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null 444 0 R 445 0 R 446 0 R 445 0 R 447 0 R 445 0 R 445 0 R 445 0 R 445 0 R 445 0 R 448 0 R 445 0 R 445 0 R 449 0 R 449 0 R 449 0 R 450 0 R 449 0 R 449 0 R 449 0 R 449 0 R 449 0 R 451 0 R 451 0 R 451 0 R 451 0 R 451 0 R 451 0 R 451 0 R 452 0 R 452 0 R 453 0 R 452 0 R 452 0 R 452 0 R 454 0 R 454 0 R 455 0 R 456 0 R 455 0 R 455 0 R 455 0 R 457 0 R 458 0 R 459 0 R 458 0 R 458 0 R 458 0 R 458 0 R 458 0 R 458 0 R 458 0 R 458 0 R 458 0 R 458 0 R 458 0 R 460 0 R 460 0 R 460 0 R 461 0 R 460 0 R 460 0 R 462 0 R 462 0 R 462 0 R 463 0 R 462 0 R] +endobj +1104 0 obj +[null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null 462 0 R 462 0 R 464 0 R 464 0 R 465 0 R 466 0 R 465 0 R 465 0 R 465 0 R 465 0 R 465 0 R 465 0 R 465 0 R 467 0 R 465 0 R 468 0 R 465 0 R 465 0 R 465 0 R 465 0 R 470 0 R 465 0 R 472 0 R 465 0 R 474 0 R 465 0 R 465 0 R 476 0 R 465 0 R 477 0 R 477 0 R 478 0 R 477 0 R 479 0 R 479 0 R 480 0 R 480 0 R 481 0 R 482 0 R 481 0 R 481 0 R 483 0 R 483 0 R 484 0 R 483 0 R 485 0 R 483 0 R 486 0 R 486 0 R 490 0 R 491 0 R 494 0 R 495 0 R 498 0 R 499 0 R 500 0 R 500 0 R 500 0 R 500 0 R 500 0 R 501 0 R 500 0 R 500 0 R 502 0 R 503 0 R 503 0 R 503 0 R 503 0 R 503 0 R 503 0 R 503 0 R 504 0 R 504 0 R 504 0 R 504 0 R 505 0 R] +endobj +1105 0 obj +[null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null 504 0 R 504 0 R 504 0 R 506 0 R 504 0 R 507 0 R 508 0 R 507 0 R 509 0 R 510 0 R 510 0 R 510 0 R 511 0 R 511 0 R 511 0 R 512 0 R 511 0 R 511 0 R 511 0 R 511 0 R 513 0 R 513 0 R 513 0 R 514 0 R 513 0 R 515 0 R 516 0 R 515 0 R 517 0 R 515 0 R 518 0 R 519 0 R 520 0 R 521 0 R 522 0 R 515 0 R 523 0 R 524 0 R 523 0 R 523 0 R 525 0 R 526 0 R 525 0 R 527 0 R 527 0 R 528 0 R 527 0 R 527 0 R 529 0 R 529 0 R 530 0 R 529 0 R 531 0 R 532 0 R 533 0 R 533 0 R 533 0 R 534 0 R 533 0 R 535 0 R 533 0 R 533 0 R 533 0 R] +endobj +1106 0 obj +[null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null 536 0 R 537 0 R 536 0 R 536 0 R 538 0 R 536 0 R 539 0 R 539 0 R 539 0 R 539 0 R 540 0 R 539 0 R 539 0 R 541 0 R 541 0 R 541 0 R 541 0 R 541 0 R 542 0 R 542 0 R 543 0 R 544 0 R 545 0 R 544 0 R 544 0 R 546 0 R 547 0 R 546 0 R 548 0 R 546 0 R 549 0 R 546 0 R 546 0 R 550 0 R 546 0 R 551 0 R 551 0 R 551 0 R 552 0 R 551 0 R 551 0 R 551 0 R 553 0 R 551 0 R 551 0 R 551 0 R 551 0 R 551 0 R 551 0 R 554 0 R 554 0 R 555 0 R 554 0 R 554 0 R 556 0 R 554 0 R 554 0 R 554 0 R 557 0 R 558 0 R 557 0 R 559 0 R 557 0 R 557 0 R 557 0 R 557 0 R 561 0 R 562 0 R 563 0 R 564 0 R 557 0 R] +endobj +1107 0 obj +[null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null 565 0 R 566 0 R 566 0 R 567 0 R 566 0 R 566 0 R 571 0 R 573 0 R 576 0 R 578 0 R 580 0 R 583 0 R 585 0 R 591 0 R 597 0 R 603 0 R 607 0 R 608 0 R 607 0 R 607 0 R 612 0 R 613 0 R 613 0 R 616 0 R 617 0 R 617 0 R 620 0 R 621 0 R 621 0 R 624 0 R 625 0 R 625 0 R 625 0 R 628 0 R 629 0 R 629 0 R 629 0 R 629 0 R 632 0 R 633 0 R 633 0 R 636 0 R 637 0 R 637 0 R 640 0 R 641 0 R 641 0 R 644 0 R 645 0 R 645 0 R 646 0 R 647 0 R 646 0 R 646 0 R 646 0 R 648 0 R 648 0 R 649 0 R 648 0 R 650 0 R 648 0 R 648 0 R 651 0 R 653 0 R 654 0 R 655 0 R 656 0 R 651 0 R 657 0 R 658 0 R 658 0 R 658 0 R 658 0 R 1108 0 R] +endobj +1108 0 obj +<>/Alt([ATT]<?xml version="1.0" encoding="UTF-8"?>\n<Tables>\n <Table type="2" index="0" cols="2" rows="2"/>\n</Tables>\n)/K 482/Pg 135 0 R/S/Figure>> +endobj +1109 0 obj +[null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null 659 0 R 660 0 R 661 0 R 660 0 R 660 0 R 660 0 R 662 0 R 660 0 R 660 0 R 660 0 R 660 0 R 660 0 R 660 0 R 663 0 R 664 0 R 663 0 R 663 0 R 663 0 R 663 0 R 663 0 R 663 0 R 663 0 R 665 0 R 665 0 R 665 0 R 665 0 R 665 0 R 665 0 R 666 0 R 667 0 R 667 0 R 667 0 R 668 0 R 667 0 R 667 0 R 667 0 R 669 0 R 667 0 R 667 0 R 667 0 R 670 0 R 671 0 R 670 0 R 670 0 R 670 0 R 670 0 R 672 0 R 670 0 R 670 0 R 670 0 R 673 0 R 673 0 R 676 0 R 677 0 R 678 0 R 677 0 R 677 0 R 677 0 R 1110 0 R 674 0 R 1111 0 R 1113 0 R] +endobj +1110 0 obj +<>/Alt(".ART-2-52236854-INL-3-52237073)/K 541/Pg 141 0 R/S/Figure>> +endobj +1111 0 obj +<>/Alt("dART-2-52236854-INL-3-52237073)/K 543/P 1112 0 R/Pg 141 0 R/S/Figure>> +endobj +1112 0 obj +<> +endobj +1113 0 obj +<>/Alt("eART-2-52236854-INL-3-52237073)/K 544/P 1112 0 R/Pg 141 0 R/S/Figure>> +endobj +1114 0 obj +[null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null 679 0 R 680 0 R 680 0 R 680 0 R 681 0 R 681 0 R 681 0 R 682 0 R 683 0 R 682 0 R 682 0 R 682 0 R 682 0 R 682 0 R 684 0 R 685 0 R 684 0 R 684 0 R 686 0 R 686 0 R 686 0 R 686 0 R 686 0 R 687 0 R 686 0 R 686 0 R 686 0 R 686 0 R 686 0 R 686 0 R 686 0 R 686 0 R 686 0 R 686 0 R 686 0 R 686 0 R 688 0 R 688 0 R 688 0 R 688 0 R 688 0 R 692 0 R 693 0 R 694 0 R 694 0 R 695 0 R 694 0 R 696 0 R 694 0 R 699 0 R 700 0 R 701 0 R 701 0 R 702 0 R 701 0 R 703 0 R 701 0 R 704 0 R 701 0 R 707 0 R 708 0 R 709 0 R 709 0 R 710 0 R 709 0 R 711 0 R 709 0 R 712 0 R 712 0 R 712 0 R 712 0 R 713 0 R 714 0 R 714 0 R 714 0 R 714 0 R 714 0 R 714 0 R 714 0 R 714 0 R 714 0 R 714 0 R 714 0 R 715 0 R 715 0 R 716 0 R 715 0 R 717 0 R 715 0 R] +endobj +1115 0 obj +[null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null 718 0 R 718 0 R 718 0 R 718 0 R 718 0 R 718 0 R 719 0 R 718 0 R 720 0 R 718 0 R 718 0 R 718 0 R 721 0 R 721 0 R 722 0 R 721 0 R 721 0 R 721 0 R 723 0 R 724 0 R 725 0 R 724 0 R 724 0 R 724 0 R 726 0 R 724 0 R 724 0 R 727 0 R 727 0 R 727 0 R 727 0 R 728 0 R 727 0 R 727 0 R 729 0 R 727 0 R 727 0 R 730 0 R 727 0 R 727 0 R 727 0 R 731 0 R 732 0 R 731 0 R 733 0 R 734 0 R 734 0 R 734 0 R 734 0 R 735 0 R 735 0 R 736 0 R 735 0 R 737 0 R 735 0 R 738 0 R 735 0 R 735 0 R 735 0 R 735 0 R 739 0 R 739 0 R 739 0 R] +endobj +1116 0 obj +[null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null 740 0 R 740 0 R 741 0 R 742 0 R 741 0 R 741 0 R 743 0 R 743 0 R 744 0 R 743 0 R 743 0 R 745 0 R 745 0 R 749 0 R 750 0 R 751 0 R 750 0 R 750 0 R 750 0 R 754 0 R 755 0 R 755 0 R 755 0 R 755 0 R 755 0 R 755 0 R 755 0 R 755 0 R 755 0 R 756 0 R 757 0 R 756 0 R 756 0 R 756 0 R 756 0 R 758 0 R 756 0 R 759 0 R 760 0 R 760 0 R 760 0 R 760 0 R 760 0 R 760 0 R 760 0 R 760 0 R 761 0 R 760 0 R 762 0 R 762 0 R 763 0 R 762 0 R 762 0 R 762 0 R 762 0 R 764 0 R 764 0 R 764 0 R 764 0 R 764 0 R 764 0 R 765 0 R 765 0 R 765 0 R 766 0 R 765 0 R 767 0 R 765 0 R 768 0 R 768 0 R 768 0 R 768 0 R 768 0 R 770 0 R 768 0 R 772 0 R 768 0 R 773 0 R 768 0 R 768 0 R 768 0 R] +endobj +1117 0 obj +[null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null 774 0 R 775 0 R 775 0 R 776 0 R 775 0 R 775 0 R 777 0 R 778 0 R 777 0 R 779 0 R 777 0 R 780 0 R 780 0 R 781 0 R 782 0 R 783 0 R 782 0 R 782 0 R 784 0 R 782 0 R 782 0 R 782 0 R 782 0 R 782 0 R 782 0 R 785 0 R 785 0 R 785 0 R 786 0 R 785 0 R 785 0 R 785 0 R 785 0 R 785 0 R 785 0 R 785 0 R 785 0 R 785 0 R 787 0 R 785 0 R 785 0 R 788 0 R 788 0 R 788 0 R 789 0 R 788 0 R 790 0 R 788 0 R 788 0 R 788 0 R 788 0 R 788 0 R 791 0 R 792 0 R 792 0 R 792 0 R 792 0 R 792 0 R 792 0 R 793 0 R 792 0 R 795 0 R 792 0 R 796 0 R 796 0 R 797 0 R 797 0 R 797 0 R 798 0 R 797 0 R 797 0 R 797 0 R 799 0 R 797 0 R 797 0 R 797 0 R 797 0 R 800 0 R 797 0 R 801 0 R 801 0 R 801 0 R 802 0 R 801 0 R 801 0 R 801 0 R 801 0 R] +endobj +1118 0 obj +[null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null 803 0 R 803 0 R 803 0 R 804 0 R 803 0 R 805 0 R 807 0 R 805 0 R 809 0 R 805 0 R 810 0 R 810 0 R 810 0 R 810 0 R 810 0 R 811 0 R 811 0 R 811 0 R 811 0 R 811 0 R 811 0 R 811 0 R 811 0 R 811 0 R 811 0 R 812 0 R 812 0 R 812 0 R 813 0 R 813 0 R 814 0 R null 818 0 R 819 0 R 819 0 R 821 0 R 819 0 R 823 0 R 819 0 R 826 0 R 827 0 R 828 0 R 828 0 R 830 0 R 831 0 R 832 0 R 832 0 R 832 0 R 832 0 R 832 0 R 832 0 R 833 0 R 832 0 R 832 0 R 832 0 R 834 0 R 836 0 R 834 0 R 838 0 R 834 0 R 839 0 R 840 0 R 841 0 R 840 0 R 840 0 R 842 0 R 844 0 R 842 0 R 846 0 R 842 0 R 847 0 R 848 0 R 848 0 R 848 0 R 848 0 R 848 0 R 849 0 R 851 0 R 852 0 R 853 0 R 853 0 R 853 0 R 853 0 R 853 0 R 854 0 R 854 0 R 854 0 R 854 0 R 854 0 R 856 0 R 854 0 R 858 0 R 854 0 R 818 0 R] +endobj +1119 0 obj +[null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null 859 0 R 859 0 R 859 0 R 859 0 R 859 0 R 861 0 R 862 0 R 863 0 R 864 0 R 863 0 R 863 0 R 863 0 R 865 0 R 863 0 R 863 0 R 863 0 R 863 0 R 863 0 R 866 0 R 867 0 R 867 0 R 867 0 R 867 0 R 868 0 R 869 0 R 868 0 R 868 0 R 870 0 R 868 0 R 868 0 R 871 0 R 871 0 R 872 0 R 871 0 R 871 0 R 873 0 R 873 0 R 874 0 R 873 0 R 873 0 R 873 0 R 873 0 R 875 0 R 875 0 R 876 0 R 875 0 R 875 0 R 877 0 R 878 0 R 879 0 R 878 0 R 880 0 R 878 0 R 881 0 R 882 0 R 881 0 R 881 0 R 881 0 R 881 0 R 881 0 R 881 0 R 881 0 R 881 0 R 881 0 R 881 0 R 881 0 R 881 0 R 883 0 R 883 0 R 883 0 R 884 0 R 883 0 R 883 0 R 883 0 R 883 0 R 883 0 R 883 0 R 885 0 R 883 0 R 883 0 R 883 0 R 883 0 R 886 0 R] +endobj +1120 0 obj +[null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null 883 0 R 887 0 R 883 0 R 888 0 R 888 0 R 889 0 R 888 0 R 888 0 R 890 0 R 888 0 R 888 0 R 888 0 R 888 0 R 888 0 R 888 0 R 891 0 R 892 0 R 892 0 R 892 0 R 893 0 R 892 0 R 894 0 R 892 0 R 892 0 R 892 0 R 892 0 R 892 0 R 892 0 R 892 0 R 892 0 R 892 0 R 895 0 R 895 0 R 895 0 R 895 0 R 895 0 R 895 0 R 897 0 R 895 0 R 898 0 R 895 0 R 895 0 R 895 0 R 895 0 R 895 0 R 895 0 R 895 0 R 895 0 R 895 0 R 895 0 R 895 0 R 899 0 R 895 0 R 895 0 R 895 0 R 895 0 R 900 0 R 900 0 R 900 0 R 900 0 R 900 0 R 900 0 R 901 0 R 900 0 R 902 0 R 903 0 R 903 0 R 903 0 R 903 0 R 904 0 R 905 0 R 904 0 R 904 0 R 904 0 R 904 0 R 906 0 R 907 0 R 908 0 R 909 0 R 908 0 R 908 0 R 908 0 R 910 0 R 908 0 R 911 0 R 908 0 R] +endobj +1121 0 obj +[null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null 912 0 R 912 0 R 913 0 R 912 0 R 912 0 R 912 0 R 914 0 R 915 0 R 915 0 R 915 0 R 915 0 R 915 0 R 915 0 R 915 0 R 915 0 R 915 0 R 916 0 R 917 0 R 916 0 R 916 0 R 916 0 R 918 0 R 916 0 R 916 0 R 916 0 R 916 0 R 916 0 R 916 0 R 916 0 R 916 0 R 919 0 R 919 0 R 919 0 R 920 0 R 919 0 R 919 0 R 919 0 R 921 0 R 921 0 R 921 0 R 922 0 R 921 0 R 923 0 R 924 0 R 925 0 R 924 0 R 924 0 R 924 0 R 924 0 R 926 0 R 924 0 R 927 0 R 924 0 R 928 0 R 929 0 R 930 0 R 929 0 R 929 0 R 929 0 R 929 0 R 929 0 R 931 0 R 932 0 R 933 0 R 932 0 R 932 0 R 934 0 R 932 0 R 932 0 R] +endobj +1122 0 obj +[null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null 935 0 R 935 0 R 935 0 R 935 0 R 936 0 R 935 0 R 935 0 R 935 0 R 938 0 R 935 0 R 940 0 R 935 0 R 935 0 R 935 0 R 935 0 R 941 0 R 935 0 R 942 0 R 943 0 R 944 0 R 943 0 R 943 0 R 945 0 R 943 0 R 943 0 R 943 0 R 943 0 R 943 0 R 946 0 R 947 0 R 947 0 R 947 0 R 948 0 R 949 0 R 948 0 R 948 0 R 948 0 R 948 0 R 948 0 R 948 0 R 948 0 R 948 0 R 950 0 R 951 0 R 950 0 R 950 0 R 952 0 R 950 0 R 950 0 R 950 0 R 953 0 R 953 0 R 953 0 R 954 0 R 954 0 R 954 0 R 955 0 R 954 0 R 954 0 R 954 0 R 954 0 R 954 0 R 954 0 R 954 0 R] +endobj +1123 0 obj +[null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null 956 0 R 957 0 R 958 0 R 957 0 R 959 0 R 960 0 R 959 0 R 961 0 R 961 0 R 961 0 R 962 0 R 961 0 R 961 0 R 961 0 R 963 0 R 961 0 R 961 0 R 961 0 R 961 0 R 964 0 R 964 0 R 965 0 R 965 0 R 965 0 R 966 0 R 965 0 R 965 0 R 967 0 R 965 0 R 968 0 R 968 0 R 968 0 R 968 0 R 969 0 R 968 0 R 970 0 R 968 0 R 968 0 R 968 0 R 971 0 R 971 0 R 972 0 R 972 0 R 973 0 R 974 0 R 973 0 R 973 0 R 975 0 R 975 0 R 976 0 R 975 0 R 977 0 R 975 0 R 975 0 R 975 0 R 975 0 R 975 0 R 975 0 R 978 0 R 978 0 R 978 0 R 979 0 R 978 0 R 980 0 R 978 0 R 978 0 R 978 0 R 978 0 R 978 0 R 978 0 R 978 0 R 978 0 R] +endobj +1124 0 obj +[null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null 981 0 R 981 0 R 981 0 R 982 0 R 982 0 R 983 0 R 982 0 R 982 0 R 982 0 R 984 0 R 985 0 R 985 0 R 986 0 R 985 0 R 985 0 R 985 0 R 985 0 R 985 0 R 985 0 R 985 0 R 985 0 R 985 0 R 987 0 R 987 0 R 987 0 R 987 0 R 987 0 R 988 0 R 987 0 R 987 0 R 987 0 R 989 0 R 987 0 R 990 0 R 990 0 R 991 0 R 990 0 R 990 0 R 990 0 R 992 0 R 990 0 R 990 0 R 990 0 R 990 0 R 990 0 R 990 0 R 993 0 R 993 0 R 994 0 R 993 0 R 993 0 R 995 0 R 993 0 R 993 0 R 993 0 R 996 0 R 993 0 R 997 0 R 993 0 R 993 0 R 998 0 R 999 0 R 998 0 R 1000 0 R 998 0 R 998 0 R] +endobj +1125 0 obj +[null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null 1001 0 R 1002 0 R 1002 0 R 1003 0 R 1002 0 R 1004 0 R 1005 0 R 1004 0 R 1004 0 R 1006 0 R 1004 0 R 1004 0 R 1004 0 R 1007 0 R 1008 0 R 1008 0 R 1008 0 R 1008 0 R 1008 0 R 1008 0 R 1008 0 R 1008 0 R 1009 0 R 1008 0 R 1010 0 R 1011 0 R 1010 0 R 1010 0 R 1012 0 R 1010 0 R 1016 0 R 1017 0 R 1018 0 R 1019 0 R 1018 0 R 1022 0 R 1023 0 R 1024 0 R 1027 0 R 1028 0 R 1029 0 R 1032 0 R 1033 0 R 1034 0 R 1037 0 R 1038 0 R 1039 0 R 1040 0 R 1040 0 R 1040 0 R 1041 0 R 1040 0 R 1042 0 R 1042 0 R 1043 0 R 1042 0 R 1044 0 R 1045 0 R 1044 0 R 1044 0 R 1046 0 R 1044 0 R 1044 0 R 1044 0 R] +endobj +1126 0 obj +[null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null 1047 0 R 1051 0 R 1052 0 R 1053 0 R 1053 0 R 1053 0 R 1053 0 R 1053 0 R 1053 0 R 1053 0 R 1053 0 R 1056 0 R 1057 0 R 1058 0 R 1058 0 R 1061 0 R 1062 0 R 1063 0 R 1066 0 R 1067 0 R 1068 0 R 1069 0 R 1068 0 R 1072 0 R 1073 0 R 1074 0 R 1077 0 R 1078 0 R 1079 0 R 1079 0 R 1082 0 R 1083 0 R 1084 0 R 1087 0 R 1088 0 R 1089 0 R 1092 0 R 1093 0 R 1094 0 R 1097 0 R 1098 0 R 1099 0 R] +endobj +1127 0 obj +<> +endobj +xref +0 1128 +0000000000 65535 f +0000000016 00000 n +0000000342 00000 n +0000000633 00000 n +0000011092 00000 n +0000011124 00000 n +0000014715 00000 n +0000015209 00000 n +0000019484 00000 n +0000019578 00000 n +0000020074 00000 n +0000020260 00000 n +0000020440 00000 n +0000020531 00000 n +0000020723 00000 n +0000020814 00000 n +0000021017 00000 n +0000021108 00000 n +0000021316 00000 n +0000021407 00000 n +0000021669 00000 n +0000021760 00000 n +0000022022 00000 n +0000022113 00000 n +0000022363 00000 n +0000022454 00000 n +0000022649 00000 n +0000022740 00000 n +0000022984 00000 n +0000023075 00000 n +0000023277 00000 n +0000023368 00000 n +0000023584 00000 n +0000023675 00000 n +0000023931 00000 n +0000024022 00000 n +0000024278 00000 n +0000024369 00000 n +0000024582 00000 n +0000024673 00000 n +0000024891 00000 n +0000024982 00000 n +0000025202 00000 n +0000025293 00000 n +0000025509 00000 n +0000025600 00000 n +0000025812 00000 n +0000025903 00000 n +0000026113 00000 n +0000026204 00000 n +0000026464 00000 n +0000026555 00000 n +0000026814 00000 n +0000026905 00000 n +0000027125 00000 n +0000027216 00000 n +0000027449 00000 n +0000027540 00000 n +0000027746 00000 n +0000027837 00000 n +0000031798 00000 n +0000032411 00000 n +0000032671 00000 n +0000045383 00000 n +0000045952 00000 n +0000046680 00000 n +0000046938 00000 n +0000059322 00000 n +0000059870 00000 n +0000060608 00000 n +0000060876 00000 n +0000073586 00000 n +0000074145 00000 n +0000074970 00000 n +0000075106 00000 n +0000075820 00000 n +0000086207 00000 n +0000086950 00000 n +0000087332 00000 n +0000087591 00000 n +0000098229 00000 n +0000098600 00000 n +0000098635 00000 n +0000101282 00000 n +0000101758 00000 n +0000101806 00000 n +0000102210 00000 n +0000102684 00000 n +0000107632 00000 n +0000108353 00000 n +0000108441 00000 n +0000108897 00000 n +0000115040 00000 n +0000115595 00000 n +0000116112 00000 n +0000116612 00000 n +0000116660 00000 n +0000116845 00000 n +0000116911 00000 n +0000117146 00000 n +0000117234 00000 n +0000117420 00000 n +0000117487 00000 n +0000117815 00000 n +0000117997 00000 n +0000123114 00000 n +0000123612 00000 n +0000124122 00000 n +0000129067 00000 n +0000129205 00000 n +0000129232 00000 n +0000129581 00000 n +0000129651 00000 n +0000129910 00000 n +0000138962 00000 n +0000139442 00000 n +0000139835 00000 n +0000140101 00000 n +0000150609 00000 n +0000150999 00000 n +0000151139 00000 n +0000151166 00000 n +0000151467 00000 n +0000151537 00000 n +0000151802 00000 n +0000160117 00000 n +0000160520 00000 n +0000161066 00000 n +0000161144 00000 n +0000161246 00000 n +0000161750 00000 n +0000161777 00000 n +0000161966 00000 n +0000162056 00000 n +0000167114 00000 n +0000167558 00000 n +0000168085 00000 n +0000168112 00000 n +0000168301 00000 n +0000168393 00000 n +0000173214 00000 n +0000173743 00000 n +0000174027 00000 n +0000177718 00000 n +0000177776 00000 n +0000177979 00000 n +0000178089 00000 n +0000178197 00000 n +0000178632 00000 n +0000178717 00000 n +0000179135 00000 n +0000184965 00000 n +0000185475 00000 n +0000283018 00000 n +0000286150 00000 n +0000286938 00000 n +0000287427 00000 n +0000292513 00000 n +0000292971 00000 n +0000293471 00000 n +0000297835 00000 n +0000298263 00000 n +0000298365 00000 n +0000298881 00000 n +0000298916 00000 n +0000299106 00000 n +0000299176 00000 n +0000299448 00000 n +0000299571 00000 n +0000305002 00000 n +0000305484 00000 n +0000305769 00000 n +0000305796 00000 n +0000306000 00000 n +0000306084 00000 n +0000311455 00000 n +0000311640 00000 n +0000312065 00000 n +0000312429 00000 n +0000316355 00000 n +0000316803 00000 n +0000317285 00000 n +0000317791 00000 n +0000317906 00000 n +0000318095 00000 n +0000318165 00000 n +0000318405 00000 n +0000318495 00000 n +0000318682 00000 n +0000318749 00000 n +0000319075 00000 n +0000319253 00000 n +0000319462 00000 n +0000319552 00000 n +0000319738 00000 n +0000319805 00000 n +0000320073 00000 n +0000320193 00000 n +0000320379 00000 n +0000320446 00000 n +0000320697 00000 n +0000320800 00000 n +0000320988 00000 n +0000321057 00000 n +0000321244 00000 n +0000321311 00000 n +0000321536 00000 n +0000321620 00000 n +0000326734 00000 n +0000326875 00000 n +0000326902 00000 n +0000327168 00000 n +0000327238 00000 n +0000327499 00000 n +0000335669 00000 n +0000336062 00000 n +0000336580 00000 n +0000336865 00000 n +0000336892 00000 n +0000337076 00000 n +0000337141 00000 n +0000342441 00000 n +0000342626 00000 n +0000343145 00000 n +0000343430 00000 n +0000343457 00000 n +0000343650 00000 n +0000343723 00000 n +0000348864 00000 n +0000349061 00000 n +0000349569 00000 n +0000349679 00000 n +0000349949 00000 n +0000354894 00000 n +0000355066 00000 n +0000355208 00000 n +0000355235 00000 n +0000355473 00000 n +0000355543 00000 n +0000355812 00000 n +0000363558 00000 n +0000363909 00000 n +0000364371 00000 n +0000364656 00000 n +0000364691 00000 n +0000364877 00000 n +0000364944 00000 n +0000365203 00000 n +0000365308 00000 n +0000370101 00000 n +0000370273 00000 n +0000370733 00000 n +0000371003 00000 n +0000376126 00000 n +0000376287 00000 n +0000376776 00000 n +0000377046 00000 n +0000382094 00000 n +0000382242 00000 n +0000382732 00000 n +0000383212 00000 n +0000387718 00000 n +0000388154 00000 n +0000388633 00000 n +0000390659 00000 n +0000390952 00000 n +0000391356 00000 n +0000391428 00000 n +0000391510 00000 n +0000391609 00000 n +0000391720 00000 n +0000391812 00000 n +0000391982 00000 n +0000392074 00000 n +0000392218 00000 n +0000392310 00000 n +0000392464 00000 n +0000392556 00000 n +0000392858 00000 n +0000392950 00000 n +0000393188 00000 n +0000393280 00000 n +0000393421 00000 n +0000393513 00000 n +0000393752 00000 n +0000393844 00000 n +0000393997 00000 n +0000394089 00000 n +0000394257 00000 n +0000394349 00000 n +0000394637 00000 n +0000394729 00000 n +0000394889 00000 n +0000394981 00000 n +0000395164 00000 n +0000395256 00000 n +0000395430 00000 n +0000395522 00000 n +0000395736 00000 n +0000395828 00000 n +0000395986 00000 n +0000396078 00000 n +0000396245 00000 n +0000396337 00000 n +0000396596 00000 n +0000396688 00000 n +0000396875 00000 n +0000396967 00000 n +0000397167 00000 n +0000397259 00000 n +0000397405 00000 n +0000397497 00000 n +0000397624 00000 n +0000398781 00000 n +0000398846 00000 n +0000398935 00000 n +0000398985 00000 n +0000399103 00000 n +0000399174 00000 n +0000399233 00000 n +0000399340 00000 n +0000399429 00000 n +0000399484 00000 n +0000399538 00000 n +0000399635 00000 n +0000399692 00000 n +0000399756 00000 n +0000399810 00000 n +0000399907 00000 n +0000399964 00000 n +0000400021 00000 n +0000400076 00000 n +0000400130 00000 n +0000400227 00000 n +0000400284 00000 n +0000400339 00000 n +0000400393 00000 n +0000400492 00000 n +0000400550 00000 n +0000400614 00000 n +0000400668 00000 n +0000400803 00000 n +0000400874 00000 n +0000400932 00000 n +0000401013 00000 n +0000401068 00000 n +0000401122 00000 n +0000401221 00000 n +0000401279 00000 n +0000401334 00000 n +0000401388 00000 n +0000401487 00000 n +0000401545 00000 n +0000401600 00000 n +0000401654 00000 n +0000401753 00000 n +0000401811 00000 n +0000401866 00000 n +0000401920 00000 n +0000402019 00000 n +0000402077 00000 n +0000402132 00000 n +0000402186 00000 n +0000402285 00000 n +0000402343 00000 n +0000402407 00000 n +0000402461 00000 n +0000402596 00000 n +0000402667 00000 n +0000402725 00000 n +0000402790 00000 n +0000402845 00000 n +0000402899 00000 n +0000402998 00000 n +0000403056 00000 n +0000403111 00000 n +0000403165 00000 n +0000403264 00000 n +0000403322 00000 n +0000403377 00000 n +0000403431 00000 n +0000403530 00000 n +0000403588 00000 n +0000403652 00000 n +0000403706 00000 n +0000403805 00000 n +0000403863 00000 n +0000403944 00000 n +0000403999 00000 n +0000404053 00000 n +0000404152 00000 n +0000404210 00000 n +0000404265 00000 n +0000404319 00000 n +0000404418 00000 n +0000404476 00000 n +0000404531 00000 n +0000404585 00000 n +0000404720 00000 n +0000404791 00000 n +0000404849 00000 n +0000404904 00000 n +0000404958 00000 n +0000405057 00000 n +0000405115 00000 n +0000405170 00000 n +0000405224 00000 n +0000405323 00000 n +0000405381 00000 n +0000405436 00000 n +0000405490 00000 n +0000405589 00000 n +0000405647 00000 n +0000407510 00000 n +0000407583 00000 n +0000407676 00000 n +0000407746 00000 n +0000407842 00000 n +0000407912 00000 n +0000408011 00000 n +0000408081 00000 n +0000408185 00000 n +0000408256 00000 n +0000408358 00000 n +0000408429 00000 n +0000408502 00000 n +0000408580 00000 n +0000408654 00000 n +0000408736 00000 n +0000408826 00000 n +0000408897 00000 n +0000408976 00000 n +0000409038 00000 n +0000409086 00000 n +0000409145 00000 n +0000409200 00000 n +0000409262 00000 n +0000409310 00000 n +0000409369 00000 n +0000409437 00000 n +0000409509 00000 n +0000409571 00000 n +0000409619 00000 n +0000409678 00000 n +0000409733 00000 n +0000409808 00000 n +0000409939 00000 n +0000410011 00000 n +0000410083 00000 n +0000410155 00000 n +0000410266 00000 n +0000410338 00000 n +0000410437 00000 n +0000410536 00000 n +0000410608 00000 n +0000410688 00000 n +0000410783 00000 n +0000410855 00000 n +0000410930 00000 n +0000411057 00000 n +0000411129 00000 n +0000411228 00000 n +0000411300 00000 n +0000411459 00000 n +0000411531 00000 n +0000411611 00000 n +0000411810 00000 n +0000411882 00000 n +0000411954 00000 n +0000412026 00000 n +0000412111 00000 n +0000412171 00000 n +0000412256 00000 n +0000412316 00000 n +0000412402 00000 n +0000412462 00000 n +0000412548 00000 n +0000412608 00000 n +0000412699 00000 n +0000412771 00000 n +0000412851 00000 n +0000412930 00000 n +0000413021 00000 n +0000413093 00000 n +0000413196 00000 n +0000413268 00000 n +0000413340 00000 n +0000413419 00000 n +0000413498 00000 n +0000413560 00000 n +0000413608 00000 n +0000413668 00000 n +0000413724 00000 n +0000413786 00000 n +0000413834 00000 n +0000413894 00000 n +0000413950 00000 n +0000414012 00000 n +0000414060 00000 n +0000414120 00000 n +0000414176 00000 n +0000414283 00000 n +0000414355 00000 n +0000414429 00000 n +0000414528 00000 n +0000414762 00000 n +0000414834 00000 n +0000414907 00000 n +0000414995 00000 n +0000415068 00000 n +0000415144 00000 n +0000415228 00000 n +0000415336 00000 n +0000415409 00000 n +0000415505 00000 n +0000415578 00000 n +0000415722 00000 n +0000415795 00000 n +0000415868 00000 n +0000415929 00000 n +0000415991 00000 n +0000416052 00000 n +0000416114 00000 n +0000416175 00000 n +0000416267 00000 n +0000416340 00000 n +0000416429 00000 n +0000416503 00000 n +0000416599 00000 n +0000416672 00000 n +0000416764 00000 n +0000416837 00000 n +0000416913 00000 n +0000416990 00000 n +0000417106 00000 n +0000417179 00000 n +0000417252 00000 n +0000417356 00000 n +0000417429 00000 n +0000417502 00000 n +0000417606 00000 n +0000417679 00000 n +0000417771 00000 n +0000417851 00000 n +0000417928 00000 n +0000418020 00000 n +0000418093 00000 n +0000418221 00000 n +0000418294 00000 n +0000418367 00000 n +0000418440 00000 n +0000418513 00000 n +0000418649 00000 n +0000418722 00000 n +0000418795 00000 n +0000418911 00000 n +0000418984 00000 n +0000419057 00000 n +0000419181 00000 n +0000419254 00000 n +0000419327 00000 n +0000419438 00000 n +0000419499 00000 n +0000419560 00000 n +0000419621 00000 n +0000419682 00000 n +0000419758 00000 n +0000419854 00000 n +0000419927 00000 n +0000420086 00000 n +0000420142 00000 n +0000420234 00000 n +0000420294 00000 n +0000420378 00000 n +0000420477 00000 n +0000420541 00000 n +0000420615 00000 n +0000420675 00000 n +0000420749 00000 n +0000420809 00000 n +0000420883 00000 n +0000420943 00000 n +0000421023 00000 n +0000421104 00000 n +0000421164 00000 n +0000421235 00000 n +0000421295 00000 n +0000421332 00000 n +0000421369 00000 n +0000421406 00000 n +0000421478 00000 n +0000421549 00000 n +0000421609 00000 n +0000421646 00000 n +0000421683 00000 n +0000421720 00000 n +0000421792 00000 n +0000421863 00000 n +0000421923 00000 n +0000421960 00000 n +0000421997 00000 n +0000422034 00000 n +0000422106 00000 n +0000422177 00000 n +0000422237 00000 n +0000422274 00000 n +0000422311 00000 n +0000422348 00000 n +0000422440 00000 n +0000422513 00000 n +0000422640 00000 n +0000422702 00000 n +0000422750 00000 n +0000422811 00000 n +0000422873 00000 n +0000422935 00000 n +0000422983 00000 n +0000423044 00000 n +0000423106 00000 n +0000423168 00000 n +0000423216 00000 n +0000423277 00000 n +0000423339 00000 n +0000423401 00000 n +0000423449 00000 n +0000423510 00000 n +0000423576 00000 n +0000423638 00000 n +0000423686 00000 n +0000423747 00000 n +0000423817 00000 n +0000423879 00000 n +0000423927 00000 n +0000423988 00000 n +0000424050 00000 n +0000424112 00000 n +0000424160 00000 n +0000424221 00000 n +0000424283 00000 n +0000424345 00000 n +0000424393 00000 n +0000424454 00000 n +0000424516 00000 n +0000424578 00000 n +0000424626 00000 n +0000424687 00000 n +0000424749 00000 n +0000424845 00000 n +0000424918 00000 n +0000425026 00000 n +0000425099 00000 n +0000425172 00000 n +0000425260 00000 n +0000425371 00000 n +0000425432 00000 n +0000425493 00000 n +0000425554 00000 n +0000425615 00000 n +0000425691 00000 n +0000425779 00000 n +0000425856 00000 n +0000425984 00000 n +0000426057 00000 n +0000426130 00000 n +0000426242 00000 n +0000426315 00000 n +0000426411 00000 n +0000426488 00000 n +0000426612 00000 n +0000426685 00000 n +0000426758 00000 n +0000426878 00000 n +0000426951 00000 n +0000427024 00000 n +0000427104 00000 n +0000427353 00000 n +0000427421 00000 n +0000427530 00000 n +0000427626 00000 n +0000427699 00000 n +0000427776 00000 n +0000427860 00000 n +0000427944 00000 n +0000428048 00000 n +0000428121 00000 n +0000428213 00000 n +0000428286 00000 n +0000428434 00000 n +0000428507 00000 n +0000428599 00000 n +0000428678 00000 n +0000428741 00000 n +0000428798 00000 n +0000428859 00000 n +0000428920 00000 n +0000429006 00000 n +0000429080 00000 n +0000429154 00000 n +0000429217 00000 n +0000429274 00000 n +0000429335 00000 n +0000429396 00000 n +0000429494 00000 n +0000429568 00000 n +0000429642 00000 n +0000429716 00000 n +0000429779 00000 n +0000429836 00000 n +0000429897 00000 n +0000429958 00000 n +0000430044 00000 n +0000430118 00000 n +0000430192 00000 n +0000430280 00000 n +0000430357 00000 n +0000430473 00000 n +0000430577 00000 n +0000430650 00000 n +0000430723 00000 n +0000430851 00000 n +0000430924 00000 n +0000430997 00000 n +0000431097 00000 n +0000431170 00000 n +0000431247 00000 n +0000431359 00000 n +0000431432 00000 n +0000431505 00000 n +0000431645 00000 n +0000431718 00000 n +0000431791 00000 n +0000431864 00000 n +0000431952 00000 n +0000432025 00000 n +0000432102 00000 n +0000432190 00000 n +0000432318 00000 n +0000432391 00000 n +0000432464 00000 n +0000432537 00000 n +0000432621 00000 n +0000432702 00000 n +0000432794 00000 n +0000432867 00000 n +0000432963 00000 n +0000433036 00000 n +0000433116 00000 n +0000433187 00000 n +0000433249 00000 n +0000433297 00000 n +0000433358 00000 n +0000433436 00000 n +0000433509 00000 n +0000433571 00000 n +0000433619 00000 n +0000433680 00000 n +0000433770 00000 n +0000433882 00000 n +0000433955 00000 n +0000434028 00000 n +0000434104 00000 n +0000434220 00000 n +0000434293 00000 n +0000434397 00000 n +0000434470 00000 n +0000434566 00000 n +0000434674 00000 n +0000434747 00000 n +0000434820 00000 n +0000434956 00000 n +0000435043 00000 n +0000435104 00000 n +0000435191 00000 n +0000435252 00000 n +0000435325 00000 n +0000435402 00000 n +0000435498 00000 n +0000435571 00000 n +0000435671 00000 n +0000435744 00000 n +0000435817 00000 n +0000435897 00000 n +0000435974 00000 n +0000436098 00000 n +0000436171 00000 n +0000436244 00000 n +0000436388 00000 n +0000436461 00000 n +0000436534 00000 n +0000436658 00000 n +0000436731 00000 n +0000436804 00000 n +0000436881 00000 n +0000437001 00000 n +0000437074 00000 n +0000437161 00000 n +0000437222 00000 n +0000437304 00000 n +0000437444 00000 n +0000437517 00000 n +0000437590 00000 n +0000437663 00000 n +0000437771 00000 n +0000437844 00000 n +0000437940 00000 n +0000438013 00000 n +0000438113 00000 n +0000438200 00000 n +0000438261 00000 n +0000438348 00000 n +0000438409 00000 n +0000438503 00000 n +0000438615 00000 n +0000438699 00000 n +0000438779 00000 n +0000438854 00000 n +0000438925 00000 n +0000438988 00000 n +0000439036 00000 n +0000439102 00000 n +0000439188 00000 n +0000439275 00000 n +0000439336 00000 n +0000439423 00000 n +0000439484 00000 n +0000439547 00000 n +0000439604 00000 n +0000439665 00000 n +0000439726 00000 n +0000439796 00000 n +0000439883 00000 n +0000439944 00000 n +0000440021 00000 n +0000440137 00000 n +0000440210 00000 n +0000440310 00000 n +0000440397 00000 n +0000440458 00000 n +0000440545 00000 n +0000440606 00000 n +0000440683 00000 n +0000440775 00000 n +0000440848 00000 n +0000440948 00000 n +0000441035 00000 n +0000441096 00000 n +0000441183 00000 n +0000441244 00000 n +0000441321 00000 n +0000441413 00000 n +0000441497 00000 n +0000441584 00000 n +0000441645 00000 n +0000441722 00000 n +0000441814 00000 n +0000441930 00000 n +0000442017 00000 n +0000442078 00000 n +0000442165 00000 n +0000442226 00000 n +0000442326 00000 n +0000442413 00000 n +0000442474 00000 n +0000442550 00000 n +0000442674 00000 n +0000442747 00000 n +0000442820 00000 n +0000442897 00000 n +0000442985 00000 n +0000443093 00000 n +0000443166 00000 n +0000443239 00000 n +0000443335 00000 n +0000443408 00000 n +0000443512 00000 n +0000443585 00000 n +0000443685 00000 n +0000443759 00000 n +0000443837 00000 n +0000443940 00000 n +0000444014 00000 n +0000444088 00000 n +0000444233 00000 n +0000444307 00000 n +0000444543 00000 n +0000444617 00000 n +0000444691 00000 n +0000444765 00000 n +0000444839 00000 n +0000444977 00000 n +0000445051 00000 n +0000445125 00000 n +0000445203 00000 n +0000445356 00000 n +0000445430 00000 n +0000445504 00000 n +0000445710 00000 n +0000445797 00000 n +0000445859 00000 n +0000445933 00000 n +0000446007 00000 n +0000446122 00000 n +0000446196 00000 n +0000446274 00000 n +0000446366 00000 n +0000446471 00000 n +0000446545 00000 n +0000446622 00000 n +0000446699 00000 n +0000446825 00000 n +0000446899 00000 n +0000446973 00000 n +0000447047 00000 n +0000447152 00000 n +0000447226 00000 n +0000447304 00000 n +0000447421 00000 n +0000447569 00000 n +0000447643 00000 n +0000447717 00000 n +0000447827 00000 n +0000447901 00000 n +0000448001 00000 n +0000448075 00000 n +0000448153 00000 n +0000448284 00000 n +0000448358 00000 n +0000448432 00000 n +0000448506 00000 n +0000448584 00000 n +0000448694 00000 n +0000448768 00000 n +0000448846 00000 n +0000448959 00000 n +0000449033 00000 n +0000449107 00000 n +0000449276 00000 n +0000449350 00000 n +0000449437 00000 n +0000449499 00000 n +0000449586 00000 n +0000449648 00000 n +0000449722 00000 n +0000449799 00000 n +0000449927 00000 n +0000450001 00000 n +0000450075 00000 n +0000450152 00000 n +0000450239 00000 n +0000450364 00000 n +0000450438 00000 n +0000450556 00000 n +0000450630 00000 n +0000450704 00000 n +0000450791 00000 n +0000450921 00000 n +0000450995 00000 n +0000451072 00000 n +0000451162 00000 n +0000451236 00000 n +0000451326 00000 n +0000451400 00000 n +0000451538 00000 n +0000451612 00000 n +0000451686 00000 n +0000451768 00000 n +0000451886 00000 n +0000451960 00000 n +0000452034 00000 n +0000452162 00000 n +0000452236 00000 n +0000452310 00000 n +0000452393 00000 n +0000452475 00000 n +0000452570 00000 n +0000452644 00000 n +0000452777 00000 n +0000452851 00000 n +0000452925 00000 n +0000453073 00000 n +0000453147 00000 n +0000453221 00000 n +0000453308 00000 n +0000453413 00000 n +0000453487 00000 n +0000453563 00000 n +0000453698 00000 n +0000453772 00000 n +0000453905 00000 n +0000453979 00000 n +0000454053 00000 n +0000454196 00000 n +0000454270 00000 n +0000454344 00000 n +0000454498 00000 n +0000454572 00000 n +0000454646 00000 n +0000454720 00000 n +0000454794 00000 n +0000454903 00000 n +0000454977 00000 n +0000455052 00000 n +0000455130 00000 n +0000455227 00000 n +0000455303 00000 n +0000455424 00000 n +0000455500 00000 n +0000455576 00000 n +0000455654 00000 n +0000455781 00000 n +0000455857 00000 n +0000455968 00000 n +0000456044 00000 n +0000456120 00000 n +0000456221 00000 n +0000456288 00000 n +0000456349 00000 n +0000456413 00000 n +0000456477 00000 n +0000456552 00000 n +0000456629 00000 n +0000456696 00000 n +0000456757 00000 n +0000456821 00000 n +0000456885 00000 n +0000456945 00000 n +0000457012 00000 n +0000457073 00000 n +0000457137 00000 n +0000457201 00000 n +0000457261 00000 n +0000457328 00000 n +0000457389 00000 n +0000457453 00000 n +0000457517 00000 n +0000457577 00000 n +0000457644 00000 n +0000457705 00000 n +0000457769 00000 n +0000457833 00000 n +0000457893 00000 n +0000457995 00000 n +0000458071 00000 n +0000458168 00000 n +0000458244 00000 n +0000458365 00000 n +0000458441 00000 n +0000458517 00000 n +0000458595 00000 n +0000458741 00000 n +0000458808 00000 n +0000458869 00000 n +0000458933 00000 n +0000458997 00000 n +0000459093 00000 n +0000459160 00000 n +0000459221 00000 n +0000459285 00000 n +0000459349 00000 n +0000459415 00000 n +0000459482 00000 n +0000459543 00000 n +0000459607 00000 n +0000459671 00000 n +0000459731 00000 n +0000459798 00000 n +0000459859 00000 n +0000459923 00000 n +0000459987 00000 n +0000460062 00000 n +0000460138 00000 n +0000460205 00000 n +0000460266 00000 n +0000460330 00000 n +0000460394 00000 n +0000460454 00000 n +0000460521 00000 n +0000460582 00000 n +0000460646 00000 n +0000460710 00000 n +0000460776 00000 n +0000460843 00000 n +0000460904 00000 n +0000460968 00000 n +0000461032 00000 n +0000461092 00000 n +0000461159 00000 n +0000461220 00000 n +0000461284 00000 n +0000461348 00000 n +0000461408 00000 n +0000461475 00000 n +0000461536 00000 n +0000461600 00000 n +0000461664 00000 n +0000461724 00000 n +0000461791 00000 n +0000461852 00000 n +0000461916 00000 n +0000461980 00000 n +0000462040 00000 n +0000462922 00000 n +0000463550 00000 n +0000464398 00000 n +0000465614 00000 n +0000467237 00000 n +0000469136 00000 n +0000471414 00000 n +0000474072 00000 n +0000474430 00000 n +0000477364 00000 n +0000477550 00000 n +0000477747 00000 n +0000477817 00000 n +0000478014 00000 n +0000481471 00000 n +0000485165 00000 n +0000489318 00000 n +0000493924 00000 n +0000499018 00000 n +0000504492 00000 n +0000510405 00000 n +0000516612 00000 n +0000523124 00000 n +0000530020 00000 n +0000537229 00000 n +0000544815 00000 n +0000552523 00000 n +trailer +<<89F0A8FA9BCC4C899846F1DD9FF14C92>]/Root 2 0 R/Size 1128>> +startxref +552747 +%%EOF +1 0 obj <> endobj 3 0 obj <>stream + + + + + application/pdf + + + Online-Fassung Kapitel 3: Wie kommen Sie zu einem barrierefreien PDF? – Grundüberlegungen + + + + + Klaas Posselt + + + 2019-04-30T20:45:52+02:00 + 2019-11-21T20:52:47+01:00 + 2019-11-21T20:52:47+01:00 + Adobe InDesign CC 13.1 (Macintosh) + uuid:4401a968-997f-f44e-b10e-7926b80d8f88 + xmp.did:f6a410be-83cc-41aa-ab54-f202ee30f4e0 + xmp.id:da811c0d-6b80-424b-8f01-b95cbb6b2b5e + proof:pdf + + xmp.iid:7ad115cf-b0ef-4947-a919-cd920607385f + xmp.did:4797a9dd-1255-4031-80fb-f750c25b93e4 + xmp.did:f6a410be-83cc-41aa-ab54-f202ee30f4e0 + default + + + + + converted + from application/x-indesign to application/pdf + Adobe InDesign CC 13.1 (Macintosh) + / + 2019-04-30T20:45:52+02:00 + + + + Adobe PDF Library 15.0 + False + 1 + + + + http://ns.adobe.com/pdf/1.3/ + pdf + Adobe PDF + + + + internal + A name object indicating whether the document has been modified to include trapping information + Trapped + Text + + + + + + http://ns.adobe.com/xap/1.0/mm/ + xmpMM + XMP Media Management + + + + internal + UUID based identifier for specific incarnation of a document + InstanceID + URI + + + internal + The common identifier for all versions and renditions of a document. + OriginalDocumentID + URI + + + internal + A reference to the original document from which this one is derived. It is a minimal reference; missing components can be assumed to be unchanged. For example, a new version might only need to specify the instance ID and version number of the previous version, or a rendition might only need to specify the instance ID and rendition class of the original. + DerivedFrom + ResourceRef + + + + + + + Identifies a portion of a document. This can be a position at which the document has been changed since the most recent event history (stEvt:changed). For a resource within an xmpMM:Ingredients list, the ResourceRef uses this type to identify both the portion of the containing document that refers to the resource, and the portion of the referenced resource that is referenced. + http://ns.adobe.com/xap/1.0/sType/Part# + stPart + Part + + + + + + http://www.aiim.org/pdfua/ns/id/ + pdfuaid + PDF/UA ID Schema + + + + internal + Part of PDF/UA standard + part + Open Choice of Integer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + endstream endobj 1127 0 obj <> endobj xref +0 2 +0000000000 65535 f +0000575467 00000 n +3 1 +0000575770 00000 n +1127 1 +0000586230 00000 n +trailer <<7DBA4208EB8E4978B18A26D0978CCBDE>]/Prev 552747>> startxref 586325 %%EOF 1 0 obj <> endobj 3 0 obj <>stream + + + + + application/pdf + + + Online-Fassung Kapitel 3: Wie kommen Sie zu einem barrierefreien PDF? – Grundüberlegungen + + + + + Klaas Posselt + + + 2019-04-30T20:45:52+02:00 + 2019-11-21T20:57:43+01:00 + 2019-11-21T20:57:43+01:00 + Adobe InDesign CC 13.1 (Macintosh) + uuid:e538b8d0-0f28-944c-a967-63ddfe4e0033 + xmp.did:f6a410be-83cc-41aa-ab54-f202ee30f4e0 + xmp.id:da811c0d-6b80-424b-8f01-b95cbb6b2b5e + proof:pdf + + xmp.iid:7ad115cf-b0ef-4947-a919-cd920607385f + xmp.did:4797a9dd-1255-4031-80fb-f750c25b93e4 + xmp.did:f6a410be-83cc-41aa-ab54-f202ee30f4e0 + default + + + + + converted + from application/x-indesign to application/pdf + Adobe InDesign CC 13.1 (Macintosh) + / + 2019-04-30T20:45:52+02:00 + + + + Adobe PDF Library 15.0 + False + 1 + + + + http://ns.adobe.com/pdf/1.3/ + pdf + Adobe PDF + + + + internal + A name object indicating whether the document has been modified to include trapping information + Trapped + Text + + + + + + http://ns.adobe.com/xap/1.0/mm/ + xmpMM + XMP Media Management + + + + internal + UUID based identifier for specific incarnation of a document + InstanceID + URI + + + internal + The common identifier for all versions and renditions of a document. + OriginalDocumentID + URI + + + internal + A reference to the original document from which this one is derived. It is a minimal reference; missing components can be assumed to be unchanged. For example, a new version might only need to specify the instance ID and version number of the previous version, or a rendition might only need to specify the instance ID and rendition class of the original. + DerivedFrom + ResourceRef + + + + + + + Identifies a portion of a document. This can be a position at which the document has been changed since the most recent event history (stEvt:changed). For a resource within an xmpMM:Ingredients list, the ResourceRef uses this type to identify both the portion of the containing document that refers to the resource, and the portion of the referenced resource that is referenced. + http://ns.adobe.com/xap/1.0/sType/Part# + stPart + Part + + + + + + http://www.aiim.org/pdfua/ns/id/ + pdfuaid + PDF/UA ID Schema + + + + internal + Part of PDF/UA standard + part + Open Choice of Integer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + endstream endobj 9 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]>>/Rotate 0/StructParents 0/Tabs/S/Thumb 83 0 R/TrimBox[0 0 595.276 841.89]/Type/Page>> endobj 311 0 obj <> endobj 323 0 obj <>1135 0 R 78 324 0 R 3]/P 322 0 R/Pg 9 0 R/S/Link>> endobj 327 0 obj <>1134 0 R 82 328 0 R 6]/P 326 0 R/Pg 9 0 R/S/Link>> endobj 332 0 obj <>1133 0 R 86 87 333 0 R 9]/P 331 0 R/Pg 9 0 R/S/Link>> endobj 336 0 obj <>1132 0 R 91 92 337 0 R 12]/P 335 0 R/Pg 9 0 R/S/Link>> endobj 1101 0 obj [319 0 R null 324 0 R 323 0 R null 328 0 R 327 0 R null 333 0 R 332 0 R null 337 0 R 336 0 R 340 0 R 341 0 R 340 0 R 342 0 R 340 0 R 346 0 R 347 0 R 346 0 R 350 0 R 351 0 R 350 0 R 354 0 R 355 0 R 354 0 R 358 0 R 359 0 R 358 0 R 362 0 R 363 0 R 362 0 R 366 0 R 367 0 R 366 0 R 368 0 R 366 0 R 372 0 R 373 0 R 372 0 R 376 0 R 377 0 R 376 0 R 380 0 R 381 0 R 380 0 R 384 0 R 385 0 R 384 0 R 389 0 R 390 0 R 389 0 R 393 0 R 394 0 R 393 0 R 397 0 R 398 0 R 397 0 R 399 0 R 397 0 R 402 0 R 403 0 R 402 0 R 406 0 R 407 0 R 406 0 R 410 0 R 411 0 R 410 0 R 316 0 R 316 0 R 316 0 R 316 0 R 317 0 R 316 0 R null 1135 0 R 323 0 R 1135 0 R null 1134 0 R 327 0 R 1134 0 R null null 332 0 R 332 0 R 1133 0 R null null 336 0 R 336 0 R 1132 0 R] endobj 1128 0 obj <>stream +HWn7 W`ERı4f׃-NP䱣gei۽Hl({xyιN/Wl~zFQD?\1Fk4-F8E+S(N_mDDhuy;r-F̭tщsT&ON~Fn+49]_F77z&rLW={vt gx0[@4~JngAIUT.S͐74 3.QktuX :5M@^?]o_cU{렻~6zz]տPO)=$12[ xi*&.DizrC0,|#}Pe#N3j~kgCoGe||sjT/ouI?;9\a4.LK]9R~ +$AK- p`gbsENBa9j+d40 L މBXimV( 0L$l)I",C*HLHf:ka]2I3ENBa +D28^XIf4P#,(buV( 2hAlI(J&*̂dE >fɠ)v)(B!vfhhu1.$W +[͉CzcJ"Rˍ댑@ +j Cav Ι00i&Fʰ,9>LWr9e; L9 GCňT`B}YX 9ȈQ(]uجSPp`#Xkx9KtO:J# +o0'QVAӒ .cuN2͞`S;F* %hrMfة<+2  P='m*^CΊe-~DEefBX`YlV|M}R e3IQlٯGhriڠO'%*I9ǰٳc^] QbHACŨ0^6ɞ[TmTo҅Dy$cm3z\=zz]տPO lqpt't;͠m@ 1gɼ)'T\bURuST\W.VП;)tD3z1Xp}Lws=`6CĚx"PBPS4rKi6|a$J6Lǒ Tx27_O%V%*ݿ.r=/ +h[*%Ydj0,<āP~HoFxbCGgg]LHW'zgok4_ +l^~j^?־$JCp }hDˋ|@`h a"rj0%ొ@HZ4HҀO x΃_q8"l끓=׷ANǷP51TJ355K NT*{P%ܰ (AmHwS۷:ao72YrOe9vm[crlW=L}f|>G1sov+ݖ q,t50Hĸo9bNR;;I?Cz$LTܵDˁVcgHzK*X{ii}ZT9PENK_Yk' c m-YUWm_( kbBij3BCG'ZW_ZK0vw)#ᾛ3\ncn +D>G~:DPGQ +iTdm+v;{hH4w nj˾%\r[ԣܱj :-< E]؛LJl#B+ey4o+p3l&hKs̲R4KU}[MC:]Djs8R9zxHhh,M{-K2"Dmfoeix^ +KgſJo|.:zn;&u쫀o0-ͷ`W]nu=/uԾ:tΛ> ۠Co\c%[11b5@qkM:KV +' K'"`MnjIsjVuܗYO{3maOpȂPeQ$+Bjh}XPFwU987#(Y̔ .~pq%+s9ow=\.C\Kz@2.Ҩl8Kn;:<؟_#Ƙa@|ϩS?xLj| ^#RS&/"4.q<x 4&XՙIf\;v֛C0 %?,k+mCzׁPgf/ k&yͪZO̝Զ)T&9|}~}syh*(N.<}j/翾&g0~nfn=4Vݟ5B6=ylʤNvm@qg;aPS =Ϥ83TeríX3X2>Z1yE3hVep{&xeЦP(eyǤ!i,dVpH}F0|g / ,/F8pO&\qb 3Dq> +({\IMԏ|юz/~*"Of_¼#P;o; (;Xqbi\QWl>Ga/e5l-d2^ $_eK-tzg6HQϻK| 8k*0p6pd *ɳ@`F&v͞}brtoI'f6ך؞].ux],G0:sFF(:>ee"O#sK_ V|=|Gw*zH=apc|;b\|xyY<#Y-,MpVDiH4x:rv?laj[K3+-_?ˀxsi?\ FS35oSd.zDÛAw+;*ކ7iiDG_Aч'E}gv}\ymwR342x iŪOl)29þU Y!& ;」Æ.C>t _m&ΰM1dnOFjҙi `jYn}^ӈ=th'kТjF|@ш9zr,dܱC4J+b +'B,Bj,izhF &RH-,,/> }/r*,OOD磠ogWڛgorlK (l^OÜ|G(_/[(_QS|"}] &Ϥt$`SLX\Dh 5%%bK !w3@,4$~,_Ƶogx+t=V/**UrE7?5f +γ /Í|@3S&*" ncn77qvs"@o>0a5xPT6%ہ}/GVn aA&86[-xav^{MXϫkPrZ~䇧Jwݦ9ݾun'ei_I>m>Pr(&oW$]> endobj 1130 0 obj <> endobj 1131 0 obj <> endobj 1132 0 obj <> endobj 1133 0 obj <> endobj 1134 0 obj <> endobj 1135 0 obj <> endobj xref +0 2 +0000000000 65535 f +0000586582 00000 n +3 1 +0000586885 00000 n +9 1 +0000597345 00000 n +311 1 +0000597783 00000 n +323 1 +0000597910 00000 n +327 1 +0000598017 00000 n +332 1 +0000598124 00000 n +336 1 +0000598234 00000 n +1101 1 +0000598345 00000 n +1128 8 +0000599093 00000 n +0000603499 00000 n +0000603536 00000 n +0000603589 00000 n +0000603644 00000 n +0000603701 00000 n +0000603758 00000 n +0000603819 00000 n +trailer <<11FDF82C41984597AE15FE78A1956DBD>]/Prev 586325>> startxref 603880 %%EOF 1 0 obj <> endobj 3 0 obj <>stream + + + + + application/pdf + + + Online-Fassung Kapitel 3: Wie kommen Sie zu einem barrierefreien PDF? – Grundüberlegungen + + + + + Klaas Posselt + + + 2019-04-30T20:45:52+02:00 + 2019-11-21T21:05:08+01:00 + 2019-11-21T21:05:08+01:00 + Adobe InDesign CC 13.1 (Macintosh) + uuid:9dd7c30a-9023-2e48-a3b7-f50b331bea94 + xmp.did:f6a410be-83cc-41aa-ab54-f202ee30f4e0 + xmp.id:da811c0d-6b80-424b-8f01-b95cbb6b2b5e + proof:pdf + + xmp.iid:7ad115cf-b0ef-4947-a919-cd920607385f + xmp.did:4797a9dd-1255-4031-80fb-f750c25b93e4 + xmp.did:f6a410be-83cc-41aa-ab54-f202ee30f4e0 + default + + + + + converted + from application/x-indesign to application/pdf + Adobe InDesign CC 13.1 (Macintosh) + / + 2019-04-30T20:45:52+02:00 + + + + Adobe PDF Library 15.0 + False + 1 + + + + http://ns.adobe.com/pdf/1.3/ + pdf + Adobe PDF + + + + internal + A name object indicating whether the document has been modified to include trapping information + Trapped + Text + + + + + + http://ns.adobe.com/xap/1.0/mm/ + xmpMM + XMP Media Management + + + + internal + UUID based identifier for specific incarnation of a document + InstanceID + URI + + + internal + The common identifier for all versions and renditions of a document. + OriginalDocumentID + URI + + + internal + A reference to the original document from which this one is derived. It is a minimal reference; missing components can be assumed to be unchanged. For example, a new version might only need to specify the instance ID and version number of the previous version, or a rendition might only need to specify the instance ID and rendition class of the original. + DerivedFrom + ResourceRef + + + + + + + Identifies a portion of a document. This can be a position at which the document has been changed since the most recent event history (stEvt:changed). For a resource within an xmpMM:Ingredients list, the ResourceRef uses this type to identify both the portion of the containing document that refers to the resource, and the portion of the referenced resource that is referenced. + http://ns.adobe.com/xap/1.0/sType/Part# + stPart + Part + + + + + + http://www.aiim.org/pdfua/ns/id/ + pdfuaid + PDF/UA ID Schema + + + + internal + Part of PDF/UA standard + part + Open Choice of Integer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + endstream endobj 9 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]>>/Rotate 0/StructParents 0/Tabs/S/Thumb 83 0 R/TrimBox[0 0 595.276 841.89]/Type/Page>> endobj 340 0 obj <><>1153 0 R 176 341 0 R 15 342 0 R 17 177]/P 339 0 R/Pg 9 0 R/S/Link>> endobj 346 0 obj <>1152 0 R 171 172 347 0 R 20]/P 345 0 R/Pg 9 0 R/S/Link>> endobj 350 0 obj <>1151 0 R 166 167 351 0 R 23]/P 349 0 R/Pg 9 0 R/S/Link>> endobj 354 0 obj <>1150 0 R 161 355 0 R 26 162]/P 353 0 R/Pg 9 0 R/S/Link>> endobj 358 0 obj <>1149 0 R 156 157 359 0 R 29]/P 357 0 R/Pg 9 0 R/S/Link>> endobj 362 0 obj <>1148 0 R 151 152 363 0 R 32]/P 361 0 R/Pg 9 0 R/S/Link>> endobj 366 0 obj <><>1147 0 R 146 367 0 R 35 368 0 R 37 147]/P 365 0 R/Pg 9 0 R/S/Link>> endobj 372 0 obj <>1146 0 R 141 142 373 0 R 40]/P 371 0 R/Pg 9 0 R/S/Link>> endobj 376 0 obj <>1145 0 R 136 137 377 0 R 43]/P 375 0 R/Pg 9 0 R/S/Link>> endobj 380 0 obj <>1144 0 R 131 132 381 0 R 46]/P 379 0 R/Pg 9 0 R/S/Link>> endobj 384 0 obj <>1143 0 R 126 127 385 0 R 49]/P 383 0 R/Pg 9 0 R/S/Link>> endobj 389 0 obj <>1142 0 R 121 122 390 0 R 52]/P 388 0 R/Pg 9 0 R/S/Link>> endobj 393 0 obj <>1141 0 R 116 117 394 0 R 55]/P 392 0 R/Pg 9 0 R/S/Link>> endobj 397 0 obj <><>1140 0 R 111 112 398 0 R 58 399 0 R 60]/P 396 0 R/Pg 9 0 R/S/Link>> endobj 402 0 obj <>1139 0 R 106 107 403 0 R 63]/P 401 0 R/Pg 9 0 R/S/Link>> endobj 406 0 obj <>1138 0 R 101 102 407 0 R 66]/P 405 0 R/Pg 9 0 R/S/Link>> endobj 410 0 obj <>1137 0 R 96 97 411 0 R 69]/P 409 0 R/Pg 9 0 R/S/Link>> endobj 1101 0 obj [319 0 R null 324 0 R 323 0 R null 328 0 R 327 0 R null 333 0 R 332 0 R null 337 0 R 336 0 R null 341 0 R 340 0 R 342 0 R 340 0 R null 347 0 R 346 0 R null 351 0 R 350 0 R null 355 0 R 354 0 R null 359 0 R 358 0 R null 363 0 R 362 0 R null 367 0 R 366 0 R 368 0 R 366 0 R null 373 0 R 372 0 R null 377 0 R 376 0 R null 381 0 R 380 0 R null 385 0 R 384 0 R null 390 0 R 389 0 R null 394 0 R 393 0 R null 398 0 R 397 0 R 399 0 R 397 0 R null 403 0 R 402 0 R null 407 0 R 406 0 R null 411 0 R 410 0 R 316 0 R 316 0 R 316 0 R 316 0 R 317 0 R 316 0 R null 1135 0 R 323 0 R 1135 0 R null 1134 0 R 327 0 R 1134 0 R null null 332 0 R 332 0 R 1133 0 R null null 336 0 R 336 0 R 1132 0 R null null 410 0 R 410 0 R 1137 0 R null null 406 0 R 406 0 R 1138 0 R null null 402 0 R 402 0 R 1139 0 R null null 397 0 R 397 0 R 1140 0 R null null 393 0 R 393 0 R 1141 0 R null null 389 0 R 389 0 R 1142 0 R null null 384 0 R 384 0 R 1143 0 R null null 380 0 R 380 0 R 1144 0 R null null 376 0 R 376 0 R 1145 0 R null null 372 0 R 372 0 R 1146 0 R null null 366 0 R 366 0 R 1147 0 R null null 362 0 R 362 0 R 1148 0 R null null 358 0 R 358 0 R 1149 0 R null null 354 0 R 354 0 R 1150 0 R null null 350 0 R 350 0 R 1151 0 R null null 346 0 R 346 0 R 1152 0 R null null 340 0 R 340 0 R 1153 0 R] endobj 1136 0 obj <>stream +HWn5+SO.P#0XqZ4@eLK\Y'~b;hܳwιzq5O?#H1c!Jr4}vNгsDR >QiBFKî;h9`noG磿\|4F~x3vY>[+4WE9[/J)t)u y^'t2yC,K/G_[.XjQ2Fи_Wϳ]&QYǧfv?}{H+K 61ۀKk*aMp) &Mۡ2ae 'hĎ@ˁ [!XFsy Ԙ8X@%:}^3Oerzw Tۢ|$^N)W(- ,%%u_._ !թa"T$uLqn1RhQ(,:Xm% kwd|cVZ?3 * e @ː$6 +&h %ZXa̧ZG0@"/J4P#,(buR 2xsQخP +P61 BdP ˣi& $[YǠ +ؙ H4L(p!:RR hJ::$UmWQD`jpqгR+c &$+ $d3p[F]LR +I,&(aMYt|&=sUZhqY` T(u1,,'|9`}Ȭ5@h_!r #p)\Ni04E +. Fc'a*po2V,wSlbkE4˨ JC`h"Ɣ\fk;7IB.((ʵmܭnqSGGRhI@ +ƹap B]GG+#H44>>HH.Lf_]!HȂ1J P 9$ @RحѶeA9 XObťjI4HLЬFMATԉ2Ԅ,C +Yʙ: usRiϧBi`DA$ma95˸7:81R9, Fv q`d.A&M^FaYjbܺ$X& Wb9AquB, mF,88hŗ'űPF4{FZͺ$M?J嬼FbrzMz)l}ԁsWpn>GWX9RqcHBqbP(nYq>AxjJM0#u.4CsLqL\7p|sj|ůk4Gd@608,t>͠]ցƄ^e6>mh%h)3ٛվПϰSpD3:]L{sQj1|8fhBP(Bp9 ^4`?vPt85[J(wfG=nanx11cQ"Zv(=L4Q#ZCކo/tOSI7* 雪ZEV :E㕂"9p:pbm'^]o&Z8F&'L06^3c6an~XZUmEs2~z)>|dϨ'[D Z,@y+trgY˶b 5RTIrǣ>&SƁlTps }'=Qi>/s "W=|.4\zQ C=ګ+hb4 mք,OF{3BC룕Ǹ+ڕ~^.Lx½$U@{mF W͠zg/Uj# ԛQ+;7dk\bP_y^@6TrW_s,jPJt(*wi`K鿞>qE8@󶰔‚2Mܝ:ޟ.n}="1"PuF'^:r;$UٸI4ofà +fWܒ*A7icXx>:FXSx3xHh~4%tbPB{LWR3U"0ZG^· ó^u0ͼwu[wh +7Oo nN-?{ s=sB{_qx,-C^`/fݍS{))HW& +#ۉC╃m ^+i/m( +?@wbgoriuiĝ.bѲIV3_ߋ)P&@7lWsuJ.6ڴ(~,7Z rnzhe-X-B3؀q9tZ&:+suDƌۃwLc +u6>Ags;cٜه6vp׾ y֌EN?& *jT;}̈6M!Sn胅1Dh!rT lӠTKؘ#j$T$8-8S sF=DT=A%D٭WA |CXhYiSgݲߐ#O4hzAL/{1ժ%Y?mBkdx;]5eoσS 8TV#T2GW{ ^uo, +E"nO"1R`P?v)PDMďZ?{8?Sr37)(\!Wr<"EH"[r1S47֠,u?ޣw:/D!$rl=ZSsyE +C +]pKQUL}[by{PAZ)n0g9"Z;QDVTBNOqE3}d'2t2/ +SIqC<"'G +ІGlM/Ɨ_zt)J.E+Rn| Sr*tͩ 4m&1/r/ʡ# p9jH:"}Fdϼy5/>ZǺ$-ζ#;R Qv+.f $ѳ̠kGXt =y5̫yZ1]piMgt[P_221  eYc芗Ѱ^1;GH=xrcנsu.>|Evאs9%/`z֋ ^*RLWe:'\)'wL5f P@QTVZ84ju: +ZnKe RS|'_ЧlZcd Q9wA1KDHTyY`>f눬~:qА')xyRB=%q_!eS8zE ;_z*.23G-c +(zL7#-evZh: +N%t]{R^1*~*VPϏ*WdvomXϰ6n-T&#:xe%:D^8/b:ykQ\L=xt]?BA+礫Cl*VvgŐ;%/C;jLʭCzdhPi8 oK|K̦T(ye9t[XT٘^ /oHkiM| +6v\̮4M}6-/_nhmCMg\XG-?24O/;A,MڧSk!ENi);BDP!Z\ Co V>DwMN\$)-v"7%*\>dLj਼{˓oM]FG <ǝ6Tsb2gBAvc((Ř#g$<` v"M"EC"nCBPϦF_w;4R3z'8J_A/A);)诫k +׸ُ ڻ;nDۧñUn~V-K}~ 0|NF`^+*}sS9_~ z ˧KEԽm 0J( endstream endobj 1137 0 obj <> endobj 1138 0 obj <> endobj 1139 0 obj <> endobj 1140 0 obj <> endobj 1141 0 obj <> endobj 1142 0 obj <> endobj 1143 0 obj <> endobj 1144 0 obj <> endobj 1145 0 obj <> endobj 1146 0 obj <> endobj 1147 0 obj <> endobj 1148 0 obj <> endobj 1149 0 obj <> endobj 1150 0 obj <> endobj 1151 0 obj <> endobj 1152 0 obj <> endobj 1153 0 obj <> endobj xref +0 2 +0000000000 65535 f +0000604465 00000 n +3 1 +0000604768 00000 n +9 1 +0000615228 00000 n +340 1 +0000615666 00000 n +346 1 +0000615815 00000 n +350 1 +0000615928 00000 n +354 1 +0000616041 00000 n +358 1 +0000616154 00000 n +362 1 +0000616267 00000 n +366 1 +0000616380 00000 n +372 1 +0000616529 00000 n +376 1 +0000616642 00000 n +380 1 +0000616755 00000 n +384 1 +0000616868 00000 n +389 1 +0000616981 00000 n +393 1 +0000617094 00000 n +397 1 +0000617207 00000 n +402 1 +0000617356 00000 n +406 1 +0000617469 00000 n +410 1 +0000617582 00000 n +1101 1 +0000617693 00000 n +1136 18 +0000618985 00000 n +0000623535 00000 n +0000623592 00000 n +0000623650 00000 n +0000623708 00000 n +0000623766 00000 n +0000623824 00000 n +0000623882 00000 n +0000623940 00000 n +0000623998 00000 n +0000624056 00000 n +0000624114 00000 n +0000624172 00000 n +0000624230 00000 n +0000624288 00000 n +0000624346 00000 n +0000624404 00000 n +0000624462 00000 n +trailer <]/Prev 603880>> startxref 624520 %%EOF \ No newline at end of file diff --git a/samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-06_Brochure.pdf b/samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-06_Brochure.pdf new file mode 100644 index 0000000..90843f2 Binary files /dev/null and b/samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-06_Brochure.pdf differ diff --git a/samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-08_BookChapter.pdf b/samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-08_BookChapter.pdf new file mode 100644 index 0000000..078f931 Binary files /dev/null and b/samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-08_BookChapter.pdf differ diff --git a/samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-09_Scanned.pdf b/samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-09_Scanned.pdf new file mode 100644 index 0000000..18cdbb3 --- /dev/null +++ b/samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-09_Scanned.pdf @@ -0,0 +1,37532 @@ +%PDF-1.4 % +3341 0 obj <> endobj +xref +3341 664 +0000000016 00000 n +0000014864 00000 n +0000015244 00000 n +0000015290 00000 n +0000015420 00000 n +0000015722 00000 n +0000016367 00000 n +0000017138 00000 n +0000017785 00000 n +0000018589 00000 n +0000019703 00000 n +0000020736 00000 n +0000021683 00000 n +0000022597 00000 n +0000023568 00000 n +0000024552 00000 n +0000025287 00000 n +0000043908 00000 n +0000044098 00000 n +0000071708 00000 n +0000071893 00000 n +0000272254 00000 n +0000272328 00000 n +0000272476 00000 n +0000272553 00000 n +0000272655 00000 n +0000272833 00000 n +0000272907 00000 n +0000273041 00000 n +0000273180 00000 n +0000273361 00000 n +0000273435 00000 n +0000273569 00000 n +0000273707 00000 n +0000273900 00000 n +0000273974 00000 n +0000274076 00000 n +0000274214 00000 n +0000274376 00000 n +0000274450 00000 n +0000274603 00000 n +0000274741 00000 n +0000274914 00000 n +0000274988 00000 n +0000275152 00000 n +0000275290 00000 n +0000275482 00000 n +0000275556 00000 n +0000275733 00000 n +0000275871 00000 n +0000276063 00000 n +0000276136 00000 n +0000276253 00000 n +0000276391 00000 n +0000276584 00000 n +0000276657 00000 n +0000276838 00000 n +0000276976 00000 n +0000277133 00000 n +0000277206 00000 n +0000277335 00000 n +0000277473 00000 n +0000277634 00000 n +0000277706 00000 n +0000277870 00000 n +0000278008 00000 n +0000278125 00000 n +0000278200 00000 n +0000278275 00000 n +0000278363 00000 n +0000278497 00000 n +0000278662 00000 n +0000278737 00000 n +0000278879 00000 n +0000278954 00000 n +0000279132 00000 n +0000279207 00000 n +0000279287 00000 n +0000279459 00000 n +0000279533 00000 n +0000279610 00000 n +0000279736 00000 n +0000279810 00000 n +0000279940 00000 n +0000280014 00000 n +0000280165 00000 n +0000280239 00000 n +0000280313 00000 n +0000280388 00000 n +0000280463 00000 n +0000280592 00000 n +0000280668 00000 n +0000280771 00000 n +0000280846 00000 n +0000280949 00000 n +0000281024 00000 n +0000281127 00000 n +0000281202 00000 n +0000281344 00000 n +0000281419 00000 n +0000281522 00000 n +0000281597 00000 n +0000281700 00000 n +0000281775 00000 n +0000281878 00000 n +0000281953 00000 n +0000282056 00000 n +0000282131 00000 n +0000282234 00000 n +0000282310 00000 n +0000282446 00000 n +0000282522 00000 n +0000282673 00000 n +0000282749 00000 n +0000282879 00000 n +0000282955 00000 n +0000283100 00000 n +0000283175 00000 n +0000283277 00000 n +0000283352 00000 n +0000283454 00000 n +0000283529 00000 n +0000283631 00000 n +0000283706 00000 n +0000283808 00000 n +0000283883 00000 n +0000283958 00000 n +0000284032 00000 n +0000284112 00000 n +0000284186 00000 n +0000284261 00000 n +0000284349 00000 n +0000284451 00000 n +0000284595 00000 n +0000284670 00000 n +0000284817 00000 n +0000284892 00000 n +0000285020 00000 n +0000285095 00000 n +0000285239 00000 n +0000285314 00000 n +0000285477 00000 n +0000285552 00000 n +0000285632 00000 n +0000285771 00000 n +0000285846 00000 n +0000286033 00000 n +0000286108 00000 n +0000286188 00000 n +0000286314 00000 n +0000286389 00000 n +0000286532 00000 n +0000286607 00000 n +0000286682 00000 n +0000286757 00000 n +0000286833 00000 n +0000286981 00000 n +0000287056 00000 n +0000287213 00000 n +0000287288 00000 n +0000287391 00000 n +0000287466 00000 n +0000287569 00000 n +0000287644 00000 n +0000287747 00000 n +0000287822 00000 n +0000287925 00000 n +0000287999 00000 n +0000288102 00000 n +0000288177 00000 n +0000288280 00000 n +0000288355 00000 n +0000288458 00000 n +0000288533 00000 n +0000288636 00000 n +0000288711 00000 n +0000288814 00000 n +0000288889 00000 n +0000288992 00000 n +0000289067 00000 n +0000289170 00000 n +0000289245 00000 n +0000289348 00000 n +0000289424 00000 n +0000289527 00000 n +0000289603 00000 n +0000289705 00000 n +0000289781 00000 n +0000289883 00000 n +0000289957 00000 n +0000290059 00000 n +0000290134 00000 n +0000290236 00000 n +0000290311 00000 n +0000290413 00000 n +0000290488 00000 n +0000290590 00000 n +0000290665 00000 n +0000290767 00000 n +0000290842 00000 n +0000290944 00000 n +0000291019 00000 n +0000291094 00000 n +0000291169 00000 n +0000291244 00000 n +0000291332 00000 n +0000291475 00000 n +0000291618 00000 n +0000291693 00000 n +0000291875 00000 n +0000291950 00000 n +0000292030 00000 n +0000292218 00000 n +0000292293 00000 n +0000292370 00000 n +0000292492 00000 n +0000292567 00000 n +0000292753 00000 n +0000292828 00000 n +0000292908 00000 n +0000293107 00000 n +0000293182 00000 n +0000293262 00000 n +0000293448 00000 n +0000293523 00000 n +0000293603 00000 n +0000293678 00000 n +0000293753 00000 n +0000293828 00000 n +0000293903 00000 n +0000293978 00000 n +0000294053 00000 n +0000294204 00000 n +0000294279 00000 n +0000294434 00000 n +0000294510 00000 n +0000294613 00000 n +0000294687 00000 n +0000294790 00000 n +0000294865 00000 n +0000294968 00000 n +0000295043 00000 n +0000295146 00000 n +0000295221 00000 n +0000295324 00000 n +0000295399 00000 n +0000295502 00000 n +0000295577 00000 n +0000295680 00000 n +0000295755 00000 n +0000295858 00000 n +0000295933 00000 n +0000296036 00000 n +0000296111 00000 n +0000296214 00000 n +0000296289 00000 n +0000296391 00000 n +0000296466 00000 n +0000296568 00000 n +0000296643 00000 n +0000296745 00000 n +0000296820 00000 n +0000296922 00000 n +0000296997 00000 n +0000297099 00000 n +0000297174 00000 n +0000297276 00000 n +0000297351 00000 n +0000297453 00000 n +0000297528 00000 n +0000297630 00000 n +0000297705 00000 n +0000297780 00000 n +0000297855 00000 n +0000297932 00000 n +0000298007 00000 n +0000298083 00000 n +0000298171 00000 n +0000298281 00000 n +0000298412 00000 n +0000298488 00000 n +0000298657 00000 n +0000298733 00000 n +0000298813 00000 n +0000298889 00000 n +0000298965 00000 n +0000299068 00000 n +0000299144 00000 n +0000299247 00000 n +0000299323 00000 n +0000299426 00000 n +0000299502 00000 n +0000299605 00000 n +0000299681 00000 n +0000299784 00000 n +0000299860 00000 n +0000299963 00000 n +0000300039 00000 n +0000300142 00000 n +0000300218 00000 n +0000300320 00000 n +0000300396 00000 n +0000300498 00000 n +0000300575 00000 n +0000300677 00000 n +0000300752 00000 n +0000300854 00000 n +0000300930 00000 n +0000301032 00000 n +0000301108 00000 n +0000301210 00000 n +0000301286 00000 n +0000301388 00000 n +0000301464 00000 n +0000301566 00000 n +0000301642 00000 n +0000301718 00000 n +0000301793 00000 n +0000301869 00000 n +0000301957 00000 n +0000302088 00000 n +0000302278 00000 n +0000302354 00000 n +0000302434 00000 n +0000302553 00000 n +0000302629 00000 n +0000302794 00000 n +0000302870 00000 n +0000302947 00000 n +0000303100 00000 n +0000303176 00000 n +0000303252 00000 n +0000303328 00000 n +0000303404 00000 n +0000303507 00000 n +0000303582 00000 n +0000303685 00000 n +0000303760 00000 n +0000303863 00000 n +0000303939 00000 n +0000304042 00000 n +0000304118 00000 n +0000304221 00000 n +0000304297 00000 n +0000304400 00000 n +0000304476 00000 n +0000304620 00000 n +0000304696 00000 n +0000304799 00000 n +0000304871 00000 n +0000304973 00000 n +0000305045 00000 n +0000305147 00000 n +0000305219 00000 n +0000305321 00000 n +0000305397 00000 n +0000305536 00000 n +0000305611 00000 n +0000305713 00000 n +0000305789 00000 n +0000305891 00000 n +0000305967 00000 n +0000306069 00000 n +0000306145 00000 n +0000306247 00000 n +0000306323 00000 n +0000306399 00000 n +0000306479 00000 n +0000306559 00000 n +0000306639 00000 n +0000306715 00000 n +0000306877 00000 n +0000306966 00000 n +0000307149 00000 n +0000307225 00000 n +0000307302 00000 n +0000307439 00000 n +0000307515 00000 n +0000307713 00000 n +0000307789 00000 n +0000307869 00000 n +0000308041 00000 n +0000308117 00000 n +0000308197 00000 n +0000308273 00000 n +0000308349 00000 n +0000308425 00000 n +0000308502 00000 n +0000308605 00000 n +0000308682 00000 n +0000308785 00000 n +0000308862 00000 n +0000308965 00000 n +0000309042 00000 n +0000309145 00000 n +0000309222 00000 n +0000309325 00000 n +0000309402 00000 n +0000309505 00000 n +0000309582 00000 n +0000309685 00000 n +0000309762 00000 n +0000309865 00000 n +0000309941 00000 n +0000310017 00000 n +0000310093 00000 n +0000310183 00000 n +0000310259 00000 n +0000310335 00000 n +0000310423 00000 n +0000310536 00000 n +0000310724 00000 n +0000310800 00000 n +0000310880 00000 n +0000311020 00000 n +0000311099 00000 n +0000311268 00000 n +0000311344 00000 n +0000311424 00000 n +0000311500 00000 n +0000311576 00000 n +0000311653 00000 n +0000311756 00000 n +0000311833 00000 n +0000311936 00000 n +0000312013 00000 n +0000312116 00000 n +0000312193 00000 n +0000312296 00000 n +0000312373 00000 n +0000312476 00000 n +0000312553 00000 n +0000312656 00000 n +0000312733 00000 n +0000312836 00000 n +0000312913 00000 n +0000313016 00000 n +0000313093 00000 n +0000313196 00000 n +0000313273 00000 n +0000313375 00000 n +0000313452 00000 n +0000313554 00000 n +0000313630 00000 n +0000313732 00000 n +0000313808 00000 n +0000313910 00000 n +0000313986 00000 n +0000314088 00000 n +0000314164 00000 n +0000314266 00000 n +0000314342 00000 n +0000314444 00000 n +0000314520 00000 n +0000314622 00000 n +0000314698 00000 n +0000314774 00000 n +0000314850 00000 n +0000314927 00000 n +0000315003 00000 n +0000315079 00000 n +0000315203 00000 n +0000315292 00000 n +0000315455 00000 n +0000315531 00000 n +0000315622 00000 n +0000315758 00000 n +0000315880 00000 n +0000315956 00000 n +0000316124 00000 n +0000316200 00000 n +0000316277 00000 n +0000316422 00000 n +0000316498 00000 n +0000316575 00000 n +0000316756 00000 n +0000316832 00000 n +0000316909 00000 n +0000316985 00000 n +0000317061 00000 n +0000317137 00000 n +0000317213 00000 n +0000317348 00000 n +0000317424 00000 n +0000317500 00000 n +0000317577 00000 n +0000317679 00000 n +0000317756 00000 n +0000317858 00000 n +0000317935 00000 n +0000318059 00000 n +0000318135 00000 n +0000318259 00000 n +0000318335 00000 n +0000318437 00000 n +0000318513 00000 n +0000318615 00000 n +0000318691 00000 n +0000318831 00000 n +0000318907 00000 n +0000319054 00000 n +0000319130 00000 n +0000319206 00000 n +0000319282 00000 n +0000319358 00000 n +0000319446 00000 n +0000319535 00000 n +0000319673 00000 n +0000319749 00000 n +0000319925 00000 n +0000320001 00000 n +0000320078 00000 n +0000320223 00000 n +0000320299 00000 n +0000320471 00000 n +0000320547 00000 n +0000320624 00000 n +0000320809 00000 n +0000320885 00000 n +0000320962 00000 n +0000321128 00000 n +0000321204 00000 n +0000321346 00000 n +0000321422 00000 n +0000321600 00000 n +0000321676 00000 n +0000321753 00000 n +0000321935 00000 n +0000322011 00000 n +0000322088 00000 n +0000322254 00000 n +0000322330 00000 n +0000322425 00000 n +0000322520 00000 n +0000322686 00000 n +0000322762 00000 n +0000322839 00000 n +0000322915 00000 n +0000322991 00000 n +0000323100 00000 n +0000323176 00000 n +0000323285 00000 n +0000323361 00000 n +0000323437 00000 n +0000323513 00000 n +0000323589 00000 n +0000323665 00000 n +0000323741 00000 n +0000323817 00000 n +0000323894 00000 n +0000324043 00000 n +0000324120 00000 n +0000324223 00000 n +0000324300 00000 n +0000324403 00000 n +0000324480 00000 n +0000324583 00000 n +0000324660 00000 n +0000324763 00000 n +0000324839 00000 n +0000324942 00000 n +0000325018 00000 n +0000325121 00000 n +0000325197 00000 n +0000325300 00000 n +0000325377 00000 n +0000325480 00000 n +0000325557 00000 n +0000325660 00000 n +0000325737 00000 n +0000325840 00000 n +0000325917 00000 n +0000326020 00000 n +0000326096 00000 n +0000326199 00000 n +0000326276 00000 n +0000326379 00000 n +0000326456 00000 n +0000326559 00000 n +0000326636 00000 n +0000326739 00000 n +0000326816 00000 n +0000326919 00000 n +0000326996 00000 n +0000327099 00000 n +0000327176 00000 n +0000327279 00000 n +0000327356 00000 n +0000327459 00000 n +0000327536 00000 n +0000327639 00000 n +0000327716 00000 n +0000327818 00000 n +0000327895 00000 n +0000327997 00000 n +0000328073 00000 n +0000328175 00000 n +0000328251 00000 n +0000328353 00000 n +0000328429 00000 n +0000328531 00000 n +0000328607 00000 n +0000328709 00000 n +0000328785 00000 n +0000328887 00000 n +0000328963 00000 n +0000329065 00000 n +0000329141 00000 n +0000329217 00000 n +0000329293 00000 n +0000329369 00000 n +0000329457 00000 n +0000329559 00000 n +0000329730 00000 n +0000329806 00000 n +0000329897 00000 n +0000330001 00000 n +0000330129 00000 n +0000330205 00000 n +0000330356 00000 n +0000330432 00000 n +0000330629 00000 n +0000330705 00000 n +0000330782 00000 n +0000330858 00000 n +0000330934 00000 n +0000331055 00000 n +0000331131 00000 n +0000331207 00000 n +0000331283 00000 n +0000331399 00000 n +0000331475 00000 n +0000331637 00000 n +0000331714 00000 n +0000331867 00000 n +0000331943 00000 n +0000332046 00000 n +0000332122 00000 n +0000332225 00000 n +0000332301 00000 n +0000332469 00000 n +0000332545 00000 n +0000332719 00000 n +0000332795 00000 n +0000332920 00000 n +0000332996 00000 n +0000333098 00000 n +0000333173 00000 n +0000333275 00000 n +0000333350 00000 n +0000333452 00000 n +0000333528 00000 n +0000333630 00000 n +0000333706 00000 n +0000333808 00000 n +0000333884 00000 n +0000333986 00000 n +0000334062 00000 n +0000334164 00000 n +0000334240 00000 n +0000334316 00000 n +0000334392 00000 n +0000014623 00000 n +0000013855 00000 n +trailer +<]/Prev 10563201/XRefStm 14623>> +startxref +0 +%%EOF + +4004 0 obj <>stream +hb```f`Ab@.$0@ |Yҩyت,r$}dyBM +3L'i|ql>n .l:.;iɏ@u'S'-*fb"r5Of֪O:LFޜwӂ1vg +d7S=3+qИwMRL6)ھ.5g,RӳB') +qKF&%(k00dTaX(#dU0Y +d30zU0,Խb +p +endstream endobj 4003 0 obj <>/Filter/FlateDecode/Index[301 3040]/Length 86/Size 3341/Type/XRef/W[1 2 1]>>stream +hA0 ðw`\=$)ѧsx9<sx9<sx9<sxϿ"6 +endstream endobj 3342 0 obj <>/Metadata 299 0 R/OpenAction 3343 0 R/Outlines 3362 0 R/PageLabels 292 0 R/PageLayout/SinglePage/PageMode/UseOutlines/Pages 296 0 R/StructTreeRoot 301 0 R/Type/Catalog/ViewerPreferences<>>> endobj 3343 0 obj <> endobj 3344 0 obj <>/Font<>>>/Fields[]>> endobj 3345 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 0/Tabs/S/Type/Page>> endobj 3346 0 obj <>/CIDToGIDMap/Identity/DW 1000/FontDescriptor 3358 0 R/Subtype/CIDFontType2/Type/Font/W[1[226 606 561 529 630 488 459 637 631 267 547 423 874 659 676 532 686 563 473 495 653 591 906 551 520 494 537 418 537 503 316 474 537 246 255 480 246 813 537 538 537 537 355 399 347 537 473 745 459 474 397 591 545 364 258 276 267 258 306 498 312 312 498 233]67[507 507 507 507 507 507 507 507 507 507 498 498 498 498 838 550]]>>]/Encoding/Identity-H/Subtype/Type0/ToUnicode 3348 0 R/Type/Font>> endobj 3347 0 obj <>/CIDToGIDMap/Identity/DW 1000/FontDescriptor 3360 0 R/Subtype/CIDFontType2/Type/Font/W[1[226 579 544 533 615 488 459 631 623 252 319 420 855 646 662 517 543 459 487 642 567 890 519 487 479 525 423 525 498 305 471 525 229 239 455 229 799 525 527 525 525 349 391 335 525 452 715 433 453 395 662 759 567 531 523 456 348 463 550 553 326 463 250 268 268 252 690 250 250 386 460 306 498 498 498 252 303 303 307 307 314 314 498 498 221 401]89[507 507 507 507 507 507 507 507 507 507 498 498 498 498 498 498 498 498 498 498 498 498 853 366 498 550 541 905]]>>]/Encoding/Identity-H/Subtype/Type0/ToUnicode 3349 0 R/Type/Font>> endobj 3348 0 obj <>/Filter/FlateDecode/Length 559>>stream +x]j@ὮBt9g~0؎PHcWPBVJ T`Ç4:go];õ>ı<]3}cmW)sJ6˾;]\n^>4׷X|8ݹ|9L%vcYUEZox|>RR6l68s,tnVE?U,{;CzLWT$%kHJ%)ɑ,ɓ)<HϤ' 陴&I҆%mIWҎKT)9DCd9DCd9DCd9DCd9DCd\\\T|S]>Ow]tW+> O|/| _>i隽#\`W|߂OPS'tI9$uŠrFrFrFJ?-6Šh-geO |!6ð#9 J'|F"I(Oyc04VlZŏ_y]Fi +endstream endobj 3349 0 obj <>/Filter/FlateDecode/Length 716>>stream +x]j@s]ۃ`vcO >u{N ,dw_i!-1$!Fόw]{Otn>ݮo1/N|[CW=]vZpves}IɷI}-?Z?{YE٤p/I^kiX.f&ݺ15j-v-6bp~UIIrɓT<)j)4%EҌ4%-I3Ҋ$Ik҆!=I[6'W9|08|08|08|08|J>ԪSO:>O.O OS)|J?_/|_'"> <|}~5}}Hĝɮ$A"A}~M_<>z<u5>5k|QOC=dN6&$R3?^c~¤Q[Q.oTjYu|bD?1Ox>|Yt>`t> z;G0xlF=`ZmFTWv౫i8+]6/}] " *Tx 膫gprˬUNƉc (%zQ!fqƖ7Ӽ{ٹMmwU_ +endstream endobj 3350 0 obj <>stream +HVKk1+{l^צ- [ %4C3=FZI &Z=7t /ϏO^_Guw\>_A |X ˰?_ba ~Pd(.O;!wbt0rSVHaq +hhi%ʗS NkCM[-<.߆=qf0y9HNC5-Y`*t;P%eO{.iQ:.C¦444 p;O -,D7`:ѣY2d9%ض!Ѧ҆sܫ0.=GiO@ +ZW"sdG CSBDZz9FIÑ,.cڔxyΠ׺38UQ.-|P|Zۛ +N!J/RltFEy(5͚3S>B^'m0tx)0D:'$xS=W "?a !>A!ABR)*TSѺ`,c0E27U&v( h-g=c'd4f"{#dUhŗ>[JyU;c+t!Q"LP5WaI'P:2hT++$DrYR'd߼ՔM lTIXRo.*%aPNSC" JߪIϮl`GXhRncB5ײJ|z0g"49R:pScg.xOuiǺJ44q4y.&AJ԰n8NO:ڋ X  qNDB0+R\m\JW>;j`XM4]o݃o/k>AZyxdXZo e+~bPD%5v"=ׯ߾jƼE}u/.SUiɪ`t0xp +anXeCyRs-(s7r49?{F +endstream endobj 3351 0 obj <>stream +HW=o0 +$˲|mn "@ӢKX %iN$|"#y/zIvtAj^qg_``߭,˰%׃]?vS~:[k?kWX5b$cMsln^" t",VaZI~EBnp3dѬͰ5s"yhl +L0)~P b". *z>LI7ߕPKIКA2bd)⫫)-Sɓ-,wF/ /Ǝ|xjnN:x[~c~rv bz &E4\g4BDlȢPx%k/3y=8p S]bHW;1%Pj_F5ߑ ^ioRb*$Zspj!T<8Ea#Cv,9ׇ><[~>=쟏Nn]/(7H2v,| }* $",TRa{tY]9|ߤ|I|in0:"Ie},|Y5<ރ4/ +TWihu}99;Fܫ[jC چyxdD%a.RM;V Zfr K+6tV/Hp,>8CR'GN-3zS.M!!gffqu&(\& \(i +TrTV +yY +\,r0sx<6zOdŧ΍y UCtɞԒz+x`=\`6E8{9RN!)J erx:`6@rE`?UrA[׌lSL'h4`Ш"(Ub-9mV +‘(a9F#kR +endstream endobj 3352 0 obj <>stream +HW=o0 +v$Y- C[XQ)t%QDK=LJvk +f׏+z+/ ,5M-F*_`DtP\/+Ԋ>stream +HW=o0 +>Jt`EtVdPtK %):bKWfZu[kPWa̾7|o7 >e><-g+asqy!).Kaqq'.qAdQRd!eX Pa &_oSp)3'ǝqEۂh"DcM-V,k &t-^]A<*&K8| G(T9pn`&eM=}yγo\@I7Ì*K5 uд% đ8]w۟~==]melA +:gؐGeD!V'DUȴg*FzTIV\/Tğ,5d5ކAx?3oxkT KUF«Mw1&<%H^.Q:B(Tyq9P>;2-#8Y{pTFaQ*r|KQ0!HS?ۧ$̊wtUe7|r|I]xgM2:48vN813{&mp*ؚ1&5uT~M(#;1䲠xOsRrwkH"MD)X~Qp&PFK bi/a3Mȃ0VaˇK>a +q _ΎLb?3*xP> nD-\T܄ t6Қ +endstream endobj 3354 0 obj <>stream +HWMk0+>;,+X ^; - C 6BgahMrZgec;f!;;Ę2`o +zB2 "9F ܐ4AV7mH@W5ęa4$,"va4-6Ng 8Oֵ_'+,A0vQݏ5,­ +SRo ^wU[UX׎B3fUhFn'f2l +"Fw?jT1HBff/Z1 +NuJ G["lT ѕ̮ec\-AE("w]XS ͩ^(Bd3P ICequ.=".b&-OЎ*mZO8Ja?|ǻ/O/?_ux~:+y>mOj}^s 7z(k~&f`|9eqxSv)9 #@|FzjMy* +&*YsSֆ j|W*Q~|贉ڜG<. }81TSnof)%+}]2P"uFJW`-) +endstream endobj 3355 0 obj <>stream +HW;o0 +v(Y%`N C[X=-rKǏOArܧ]z1XqϺ0[E7}ve0/^^yKVى^MmK? b,(NWE>ً. 6vV,?NЅbS lMNH<# +,zdǁ%Wgj;Wr6Fpc D0F-5>P1 FĔ{ M d2H)2N6qe%Q41TC؂Ek"AcR_˳JCjCUp/88^5JYv R %=l A 5(-9d)oP7ރ_ t"B@FedPWWX|8:# Ch)T`2dXRQ7A4ZFP3ŤV[I=h\!cRYSd Ppc@W$仱Q[i#_9~60:`tvwYZ(mx'\, yp=Xe;9(|n Xri͉߰DV#}x)#pFwS!gYdH!T!*+-M-$fYC^k l4bX\or ++O>Cɲ 43 -"0TUvvêP@6qe5cbmD^CvCL,c=z1AP +endstream endobj 3356 0 obj <>stream +HVۊ0]l !kgB y+}˶awے}Ged'D\ΙIN4-(7(HOKFKnQZo \Aop+\6>.B]2G/"L/ nJ:aUdeJԸN:$]l\rIg98.`dwx[uLɕ9.0-#}Uz0+(Jt +$4QLE̻!(*Ҵ$kAfˌ {KnǠԔƘ}smwec*~뱧)tx`_r_iܘM~ʱj^9ZKԚǗJZrE15WѰk>a6,=k:38f'T7Xnnz(=&HX!!Op1^R~'||E aW*.~IxVda-eڭ\-Mn&:6nc 7RS00涕04+$jTGr?~8zy~~wU쾞]ǻ)7DkAb"'P_Έ7bR(_ +endstream endobj 3357 0 obj <>/Filter/FlateDecode/Length 18517/Length1 34080>>stream +x|\ŵ?>svޛvWڕVdIVf$۲%7llp`08-Sd`BNx^@+%$>3sgΜ9s5!9*ܱv!\hs7{G\̳~CILWy%<j޸~(IU>* ?|3_32q։_ώco{jx ޿5ղdТ z{͝:iVcC4/ ~bjJ9/J"e0o {FCã\Z@1<ꁨSӌzdSS )S4ej2%xjPMA=k.$z!ٲ3=ͣ-<Vh//K9\yuX`2H$e#Gu47ٽA!eyV:oz?-),eG Ny+Fшi4] 4yhy4:z&GEA߳SԘl8KI65A }^/7);h؃P*eɝgrwΎܝ~/sWYFw,A=lhxUGV75Q "5mkF&lM׏4DxHdfe\&R/O&ZAR{qT<}QtY)WA>Wz o?b_3y(䂶HKLZ. J=$7 t$=XvKOɦ W68bIYv*ٳuG@dsj45PӼiZO)T`ד!>rHIwnA@1BEg W CymBv; SB~ "/Y -1{[l!<lq-w۳SI +g DAhqm--#~Zv'v,ݹ7ڹyxU)߶|w.Եg`}yuƂ|={)|e50y_70`fpx]eH,$ z O!C BxY#!NhYq\qK q:ɲ +X ٳtυvLЕbeu{1#Vr#'4^L% ؄9D'@vLE%Ez}#c^E@ Fe1`;MhgX6BH^Im m@H6*d E#dZ}(1ЁՃ8kFQ +) +%wIalPWAPC6H$Q@ֲ͗apCzAԩ.4fD.B ޞHؠ\ɏP #8dpV^]M֌ʡFif6RwT$);zf!JQem?/E.y4VBZw{@F;gF.Kg*;g*'"јc"_67Bt;86m: +ıllc7p@؉g ny\pxZ5Fl`%``9``)` `1]cP\CZzB߾JO8d`è ] j44f3Х@7H +UA%D y==Prx \Nwۘ+٘+> Ÿ)|DC +)QFޣ +; +E1 4 +9uo9s&ޢ&_Qx&y~I^*p+~N?(Lg~J+qK^Ӕ/P)a +Qx(~ +}z)P0\ +s(tQABV +)PhDaF + R)QPCB1K%@r +eJ)P(PDPYJ8 +b"()( +13hߘ +K#=\l,L =QRPPSPQPRPPS)hR +) Q`)00$0N$S(|&<UhF~B/>g +QŸ(?Rx{@y3»c&0[ +3UC1,_ޢ&_3N~A~« +{( +/Qx -^~8fj8L3HA(QK;JQ +Т=G1#]3v7fpq.=cnj)$ih;i;oӔm4nnpӘq4 pҷhkik(\=fES^Ev1fr̰1cv .NS^B|-(GfVۊ9g~ 1@@=0C@{ @>{;@_ V[n F[@VhU@ 2$sGn*phLGDk3McZ"Z)l: +P8Z +k(EB@J +)Q(PBBrLM䴈B!- 5tJ+()d$cJB?@k@@=}'=ttŷx1-)sΣ¹PEBB=: +F + +z,ˌ>210"Z (^50\ +s(tQABV +)PhDGK+````4S0n: t8 @}Տ {л@ ;лG^z'@?zG@0s@iǠv8v +RX=Sp&eJ ++(,R +#),ERX@a3(̧OBBB>(< +a +! +A7 +~ +" +CRwNe}?szg@?F?tt__q%;gGŭ/ڳ_z{vVp=.u[{s ֭/ߊnO-}[oټ-G!Br[oaϤt[*[vlv c ڂ$ڻEjܺӞƒL'1S8T6ZHҍ&[fcFvC{]nZ:Y< +WLjLrN>' zcu C&kg#V_+,__?__gQ|A= g@=}=ss@|WsOG{mOkV<;̖aA.޵;;η9v]lƪዡ_V]G"p*vZPҾ}[!n-F}Q5;WDzB=ƏVLU-QSj *^ԢV %[P+*k8'[R@^1WDޥ)E(!?3)n|(12Xa +ُlעXGZ21*p_9%ߩ+GQ{1zp/ffںl.luw;;FwTJ  oڲiئ|-1?0|nLlބ IKHM6mYʀI&B b8CHHteba_r'B|  + 0 =~G0n%؈8;ldAbdFh{'s=\h*fB7qlf\L:SiE8ԓD 3Wk!G;3f::F%{].F_G+Е* ]Aעot# ݌nA;Н=>7 wɝA=^t.z?8CCnbI*(|F^4g4 3 z qCI}3г +q$&9t=~^@?x};?!E^E_7[mpuHf6;{h_ w pR)f 4WnzVI޹W3G!Lz軓}0aO"׷e{H8lP~? i/ȝ#Y^(&(=;YGi sw~5~'prޝI.!\&e@^}OC@;|&G'~?ycOC3蓿O WB_|>GǡOiwQ `ebAI XX`HfܑO~4dB[ Ao: ݳN?`Iiii#o\\q%@8 *W(`#KPޯECF{oǟd>pD&)[+MY4{hijٕ0:хPhF܉`g/,KEOk;%sHQ'ٕ|G¥H+nQW_֬VhսofP6ld14_[1[v}Wvǯ\׵*w=#OJANE~ τ_Ȼ:wGˣ27`faU +'DJ|L?UMMSd fwnm[*ՏuDW8o{fymecEX +dP1j#/ΔCe8Yǔ>#ĕױIr1u cssHcA[/n2XQwtl"N*fERI߿Sv8V:Hu ē*rF$ޑ2JRmT⣭#ڂf7m )+8^ 1OЛĖx&_ƝRNrT(%2a)$>q~\)9R`P+MHt]Yu +mdPX[,Gۯ8|[/E`Or/<( }f Wӎ2K۫*+] +S:KcXku-aY^45XFq^ΉQ?w(gYI눜߅WrB1Tq\&7懊~Ncv_Q$ζܐ2)qĢPNFO3~⣃p[鉷A +X)_UPlbgR_4O3Ihx4wTrpINC.%pqrw"E^ޒr\#ዻ1?,FWmsjáC&(>܊J 5@)h *up,>+<4,%5a +թpA&#>> fG)*\$c-S ,)eʪ߲~34V=ol>su~o<ɮQ+~wź7V 82&a|U`sr]{!G1Wb;Hn^LPi f&Ey,"~9d(0G{_2B +0] $V SL6cI 5ȟ=%E冿 NF]r+]Pة8.*JWq(t)Jgq8t)ዑ]e5)xjDOsÁu rSꛫQ;I3U'yh$7273דei楔*/hWIo#$ZJ~TSa|f8A,eJ$sx{IJ +5sIkbJ]9~ۤxNN[*%Rjybym I?9oCm9~AʑLcHv 8"4:}L + Q}}0%z Q!Bt+bWpscN|(Fh߈7|P^uKɕD[,4|H1(*C=>~,e+|+4W\vObpv2IǓXCbm14!H <se`b( ws|n<o,(>;Rk[ wAXljNLgq*VA.49F"Eh? Zm '\$~N!3)4J!xc093N6Us" 0+c+XBK=q waw8X.űؿ`il't7@dw{M]]<];G.t!ޡwsljsnmhv³<rxv(kć@jAJA% +zҁƱ)c"gt FO69gZgtßm;fEQ.nڗ9VYn}6dM nKL_[z0FZkWGX# g뼼 Wcrso+U.2gGze $? 6?] 5L)^PIk.Zyr_:ל 7M|fL of]wx.>pƭU8b+кkG$~a<YY)CMvʳ6bczp:ɵ\}6QƑ)o9s" ,:=&{R!4x_(f 0P8s%uU%Il+JE{rFgĽ5pU+*>U`oQg-+/;ckWÚ:*->S:8-{QDmܼ| $vq2ϕ#ԖTHM vQ$S*DǴ-#TQ KOSz ng34U7)_f<4e7fuϴ+_d۳f0"C-m +*H:'/i Q1umh4i?z~hSɮ!+]VLV)c,~k"7 ،D1Ga-kKXHKUY2.sBd)8"\q)p%z"Nc1'Uhd 6Q!ؒ6&K Іܬ%x),Tҕkf2+|iƔ.eQD{ +rvƒsTӬJ]EsTUR=Ri6.9kvb}v:w|Zl6W6D?ctYUg^1Dg?J-;JE&V6TDj-9٩ՁIʍ^zR)-y4fHd ϼM~^N}YPD /<S~)- D[%bҠ:2QQ|dIͼ59F_(42NlRFA|?DEh`# <ܜ`fnS*bf#FFQ5QO~㓍 jčG* ]R3W)@8 $LdЫ=?v?{5/52\#V/)`).LPXW&7+9-crT(sƛ4azH +ȉPlۤYmҗ|/6Ǩٹ;V-sfB-te1|=./kk Vuf*}6^bQB;\z33H5['RoMyl ͹g>ogUZ +qi%Ps/hM3KƒQCN,UhvR͜]"kLd!J~N0INQD h#s(,r(PҜÆ+nrBK-LR55.0hVn-<)VU۱U/:0@d5WL֝ZQYUY]72P*DC^ +2O,odo3G}Q|rQ^E;)]b廂SzT3=Jܙ̋{uk3;KoQ(XVՙ8{yJj&BxxB'>}3~ oDuYV1؎r+sdn ͐}_._>+Xv<`vݮEOfK+ɓ_W&Gq>> [tOC{]KAE[Au:6o*p8 F|zqlOeDtCN_,XTl +6i}eI"nO̷_?|9nLP?_a/]9o9VՅ5g욦lD.A5#=BеZmL ,Odt_'YvkOa ctt+b~ap˩L>~~r\Ͷ[G7Wn{F7Udƍ2̆+.Jq]O<2wlȜu!ht[|ߦM}uf-7x&qwM,%>qmdVZD|ᒢ|#>[;hrGPΫ.ZHM|g%WR5s#R9-5e kcnNq .8 +ө/[bLKqΦY!+Y~p-_n" k"aIDp`Eփ]ӓ`꜐fԼO('poOCjI@چop$_&_b`uP23¡ty,r$'NQ&˺dCHJdH| moC#O68n9L)C= +kp 9av%;{& YD&L9{F%C1ͱ!waa_aGrսɅ&'UT4lvuwMJRYЗhBusօsl1;FeSlO-O*tF6}bTw0Ws{QǴZeu Ub>T{թE(ZCJBy0)''3_ :KrwOuMjΟ(wt[7]ƪ%[VkS]鎗;@m@}]X=*Q]<|(R82M +UA8D|:Qhl,qvPiҳT Mۅٻ٦  vJs&a H#aJH/YsQĚloF:4 #)⼊/hX⽗x5'J! /16I$]Yݖi͙_ّqf=my^-t0RxDkٜ mJWk*w>ë"N_$ '`V{!ͤ]~kH݊#ɱ a[y +aՁh*[$2&XMھs?Cr$Pi7{S$0 ֟$M'z=hg>JƢd~Th]Ct-#ȆCĈe63嗡NzZbpdȞNJj1?Gl*slټRln)D< <y̲5f%^y xjTJT&GyiӘ(:R#7>hiBȜEJKp(M:Fg+[ƪyM3XkAНg2 o*'*w:9I~! Oo,ȇ, +eioV4B.9{@P2гbcq~ث):*zEF{ĖHU^^uE9|:pѴ +Uh_̵JR"/*rVdD:FRt\Ɋ4f"oM2lJGǛP`jD"ӂc_0|Y@%&>cj X}ٳt kUY1V}RݾBQ(<}>%6 vK!Ȕhj]Ȝ%0QE Ɍeʬ\{\.R\yƸZ*bXW +׷xr֜W F3]^cQVRh$f'q ]#]{auvJ)5z1J+;Ul닻J%6 k&9+RьG6,,kIJ,MaX܂X܄X\ťX\XDz,DzE؋YC?WڗHӚS˩zp^\o ;e˵[G7s +oH}qO{׮ui]SR;ϼez-ms]yy#x%EۻGzۼEes.JN Λ.fjaCW0n-?-KڬZ>bCWB?*C?rA FУ:sxd 0V{|%꘹06&{!`fHW+8B!jrÁ_H\ʼgѝ_*Й%^\u |N]ZA6~okbd}y Qs襔aic.NRE4s>E[ RץQk0hZ򳡹WUqP#[KbH;{x̴'yB9ͺoZ +5` +IbJ6^&U?lvjŌT&v+2\ѼY9۾I.FCI%ωXJ?;= W5Yީ|²J,O¦4A'?!T, 7h>x*O'CSb8ޫVzq6IפcT&ؔ <_,v{JJRj)EgvL=L3NsZF-8F`[LLޞ#uqL)b:k鹩7//tx3Zx3bK~o"7~Բiɼ: +6k-Axml]a}OB t6[|A4rNohN*4gN(ŪO0J~@E Vjʲ-q4RZGFW]/-͟|tQYRv=fes:K,[/x3_btKg7n$Ful(vW^)oCՂZ)/YV iXf[|Ao-+vUQٴ#_0rRå1#tv[bV!1ΠAjOΎycVw~5i5*Tt +a&0q}Wx!IKbX uF\Pr"Wf8T#CSJi'砝4^?ᳯbc2a_SŲ=UVpc8a pHOS%&ioj#c|m`YD{wM +WahU&5 J_'ŭ1&9gťޗXaO"3?)eyE̥S[~HcTTE(48KO0M :&;>h/Kw~&]#&cۈqh9DТSN՚SCmDbOUfѶmY;\ V6'SHȬYUKʶ%QcV12%{U{W߷Fm6u֐aΫ(()a&Wb9h.411j[8_Bn\H\x1F!'ɘ#(b iO{uHpzU'@jerM.8B/JåuNF2HұXgQIW2Xڬe?.q +%d} I3!4+~5g6e}&9[JE~eaZf,D%y<tqdIIH2/8Mw AO53fi~!7sWSOOk +n߷-RdYyE}[}L3] i3',>Ҙ:yvw_wvJ3> endobj 3359 0 obj <>/Filter/FlateDecode/Length 27506/Length1 49296>>stream +xw`\Ź7@T=xBX ZÝ:9B:by9 j`OhHCGd#? +DA((JC(ZFF9(|T +Q*F%9UJTQ Eu5FԄZP+<ԁNԅŨ-EP?Z ZVUh5Z֢P'ـ6Mh3ڂBkmG;%h'څvCW=Fat?!0??f'Áo'MDW71ؐؗ8br;.Je@ -r$(ҽpSϟ?&?prɟO1?y&3ysw>R ~w*:Up* ~SNyN'sO.<~dk?ӏO??'꫶nټi]z˗-]xQOwWyms[[jk*csJK + 33Ӓá`a1ZJˤ(6X Ktr쇀}~g'Dώ+ϋ1cS1_A+5A^ `[. Z ֱ?uFԪ` +UzQ '7r,.dC +-a>T?8<aZkXV=,!ό~̀E5%|?$k6FS5);s@W kjAȬc 4dg>/B"BIGlP@Hxya[5TJv{p尯=sz+zH- )7 +lfI!s= _2a.IVh-b f|Iw'@#g32@3GkWxYJssrDC +vAυ0H-:h;"6MFt-o`snV9/W(W m.f*\ S nd乆G"M="g-^ s(&W }]?sPC#ھ%/Cen;/u$mB͸ +PH_>_|k;G9UU$0 %O.HNp⻟!W+10 h`aEab0;1[a +Nc+y@gTҘ"i8-*%A UbtP=yvcx2~ZȩCbSa$ڌhKеA'Ĩ"? + xR$ow꡾b= *8X`9 ݮ1_A\ă^!Crs/`A80}q{ i_<&FIx`A UdD U+PB#ꁌhDeD]<ͺH<4"BdX?):ً&)YK?<@'b" #5[RC䈑wHMPW2r#3ȥfd#;lgbF1-lbd##Y:F\ZF0Udd# 0~FYRFzYbF1H7# YH#gvF1\FZia&Fi`:Fja*F*1RH9#s)cF)bFc$Fb$ FIc$H*#)$3a$H$F$2`ψ/#Fq3bɈ;#6FX13bbȈ=#:FhQ3bDɈ9#2FH IF&g#_1r/19#d3FO#3ryӌ0gFc?#2r?2rwy?0{F~oy7y #fW/yW#?gg #/1"#'1#?bF3<#?d9Fe#04#ce#9AFFady'y<>#2#3#2=F`~Fc^FanFbNF`vFm|ȷ!Fȵ\Ռ\s{0s{0s{0s{0s{0s{0s{0s{0s{0s{0s{0s{0s{0s{0s{0s{0s{0s{fFۃۃۃ2gZA\A.K.bϨWRz]TQO%j۩mVz4pӨ +F*6PFYGEFjAb XEф+ T,>*QWKXL"*zb! 袢TtPN<*ڨKE+-T4S4nHEè D=uf5TTSQEUt1**hr*PQFcRQBSQDE!TȥPME, .4*TRBE2u3 4~G + TppRuSaV*,4L +#gBOuTh{j*TT(=r*dy v*x+LbB9*,%Q9utl1?ߩO轿ѫ8CGއT|@ߧ4/4ʟ{?՟xS8Iߡm*@iѫR֨}!7G @A47T_QK*^P *~NhR2 /Q"'1#zǩx!g8F3Tj7j!6j!{Jt-4J3M p#j֍Z\frQ^U:TĨ|;CF= J(5QLEѨDᨱDq|z/Qc3{H +5j$}3 <~CQY*)4d*"T<iKyHM +稡c԰}԰ ++*Th#M`z*tThИjSET(S!14TpT`*PlRG0}8 ¾>w)\c!*ߟu}'v +' =wj/ m6 ^*~]9)k}?Ѯ]{Qw@l8|>!9&߳;c-g4[}OG!0;B(`0 xJ}INݾ՗}G}|=H~/{w ¾ ~oC[ Us}7|7VnP=^*>E+v]~`oe]v9piR}i.=p.d];vuIw=]VrWʺ.>KͲm6m6\ gmfkvmr`sc틆eEG0G80l!Jny=GT4%<$Dnٶ%y_8z.|:|L.Ni91m1-E4:jP.NϪZ9ron] +Kl +o#QJm +wpFl le[G7IIn\p`Rn.N%퀋[[qE5ՀUA`9XX +,,,  ]N|@0 hMF@PUJ@ P(J%b@Pr9l@ HT@ + !@ H~x 7p;,30 =@45@P9@$8 4! O_|s?;S'>|}i_? 8#$ۀ?~වo ׀_^*/? Sˀ^81G~x,Ӏ1Qa!A(`0 x +$ ?|(Àxp?>{w p;ເ +6̀7n\0Z5Wʽ?c?c?c?c?7`l`l`l`l`l`l`l`lc?c>c>GڲecF~˖""4q묗E桵h WЭy] t?z O[o2qtG <;yfT7#V2K!ɏ xIĘ̄TBZ-k< C.\Okz!ŧ{'x<Eh1ZzQfyodpo|+y{mm@ŷ.wچF.;;=2c\֮Aעo۫oM!tFt7f] oC{؏nCC }^w;ѽ>h3w >Ϣa$z +t9ZazY)p#`7Oށce'eK¯bQ$Bry@twOʿ e{f;?m'*aN}~TCaG$ yзC;g2*DO57F(:AMAGј](>:4zCt,͏<aϋ'0z#c&K'`~~~~^Wϗ5kz>kUh)Z??/w8!t=O> YС% /]=ɿ8^ϕq4{"ٰ\%bSިQi:4i7k?Э?0f3LwTY^tE;MsPC>ZYՁ{;FC B<1R2RVܞrgIRO.};-66P_22ee}=W7Q +^-L+\TRQMũ*I.Xrtgeߟy9_ER!#9*ޥUg<2*[kj!?k +quL/G]| q 3foq{ r^ޢI),d8Tr/Uȓ 㵉=VǤP<6(TwRWՒWyY钊$vdc^34и@o6HfѦ%W[H V+k<+#DFo?&OpKpL$OQ ȧVd"Ը5)}QkJm 4S烿 AMPct]T\ks grY8+:Ѩ;,53󜙏e4Mr yڈ^V]m +l|!Ra/ky9 JΈןIv?ͱu^Q҉*JTIF:+w!3GHm{Q\> z>+r 5VuF"i$r ^Q8j A(F 1jN|-O6ưzDމ*Tg+(=(%D)'Hʎ|, $CqC2lT I$@b8ߘWm[[Ƚ<ؘ sO-S:dI0+#ګ_ؽ*ÙaKi7A[6!]hɞ6i&lMM&td>F'rQDvۥKԨgDJШfT)mLvс5v)965nVShX7-xG&>Ui?ᱫbpm@ <}ǚ@jRv~7= =IJ>⊈-%"+"+"+"+2cJoC\cX aZ2'nԶG@Ȧz_PL^HOX@6g!)(B.#eo^ q_z<[j +B* Um(Bԛ&U䶘FZ!lr +[YAW +E}E}E}E}E}A_ȡDfl 'LlwB3OghLCDP\ Ը2ai'bPFˑhQF(lකFZT +'2X/GыG/jIOޤyT3ˏaR*2Z<e$siM`Ti5Ĕ9'K$yL@ƥŪ1r(^݃dlf@y/fCGBaFZ.x`/1o4+q]EJQ1:M6MzcF{%/)3mhjjh bACD!Q [ԡG$N2f6&舨kZ%y b +QQ,2G^lB=7OOե-tEAjeq +iO1OANd9m~Si''*ᶦsrKNTS|/ fh~Dpɡ3-DK8-ĉ'⠊̍)( ٤WTWl^=WTLOT ΀~~^tT/;^?_:tlgzg=$n=o\WӴ^pd7޾,%軛7ݹ4s#>w}jق]7c6&Qş@O@)>cL]\&vqXXiHvCT1hCrCĭ4P@Akf+IL[FbCt+(.$8ϛy.dDIl;nUNbR]ؚںf]K҅i5wU]k&2:!4b% ƿLzA/='!X +e-$e/$~Ra$ +fhhhh$/$d`jqdc b9PÁvh Yz@1(l4#FCIy$.&%]sj M{6f/yHf6̒u,jvkzygWř+][FUKyɖ:x0ʄǓU*[;g&'}-WG֌D;_6Hġ0N?LDCDˣ2IzəN [||?wu~0[_;җ+ f3]r>%Fa:GK~bAĢIO$y=f9ρvl*l*l*l*l*lpӓ9SBp=*ɏ8.E3$"Ynf3Gir,vضYY6[c'/~zoU%GAs_tuOzZ yM"ՠ$t5Y1IEd؅8iN1@h !$f"AN:R똊+&L)?ŽިT4SiONL-0jD&ox K +/Y)/$ŠByI '+ڤs?e/CC.9c_Ī AVC!$$blӓpzvv)0xoPC_wL~\M8kiB|J''lm +P.υ|UUZi@I}#5@,BWL"=D,0*qvU"*Y1N/JӅI˜2NJIZZڶ#֯”܁{uumLn;0MnnhH^~'y bXmfwuywu۱}upIz5 +i..)R4̽rx[sLU9w_X6Ec?S^fs K )>D:6R>2X1mT_6daوES']Ls5N30Mqa2Wҵ:a›q2fn~N*w5wg߶"r=|RƙHYW޲Q Yi:CSlmW=JtSH}rѤhPa>u(ѳ}UbXb9E1iŤy_BLLQٙ3EK)*;4a9P.%TM`$u + ]9ڂc*AR;t$8B5JR}iMYhÕ95 ZYؾjNik.blA;~GQ@ojfAELzÓ42gK#%vCQl&!O"6wتk )i?+Y$X"I|;OQ$Mw 5Div*H$~G8m":q38=KP~OZ3 z|M hmF +-rs|[=6ؘe< 66UCy8uz]D3xpr^)ly +S{*Mu`<ޔTlapj6tәN"W3] ' l^R/߯0QőјU.ܸhWKo]Z5~ 47Y~b<ۥȊQ{l n6aV@1nJ@oRnUQ/:!QgmGVzI"X5Q4b\~ni%Q)N!*IM) n[ " e[9'a NJb9G"(Ab;ZXD9PɾF #RRlB@p$gRs}_)0ɕ`M +lb w*LNY'ZZ3xV-,r}Bx0*yp$a♉J).ZQԙ ™ /L6!NЈؔ:Z !Zq~isI_?q +u6=¹ +6vຯp3NB}0ey^iaZؤ +ydv^lv iV6ץ58gۃg v\xO=LLxsS.>;;֤-gܿ{ؚ褯QoVXj2ԒNj嶴Sc̔`y zj I /nMF]yZ͕Y]jaMP9hLw=w!N``ph"QqFNUzS3UϚfՑ{4t?픪 jd}$TdBE +N6#YGkpXr*,^`dʛªp*vTZ7B:_h70'.ѐ5QSCq}/f+ɒ-Ol-oY|m[㚚bm[?nsh3&X^֦+^Aw~ YakXTb{S1{5;+]HuFC7_+H-_]}շ&TƒfAm/"WU]fguyO WzKއȓKRS-V{`9:{e: nQGQY* [r\g@!V4eܣLP=IVgV~I|,)hIrרT*[+ j"z^R)unIUI#6P2槚3|.3Z%YZ5w A8~ߎi\BpMEIML-n! +SNNCSA0!^ &R8ד`}ef` 1LCnc4Fo0VmOj!ޢ$yW@fC*GQoWI4{bKü%&pZAASЯ{7|^Ȧg@-Π}Ŀx=Kuj8)^J"p5TH{BI~)M|&!5-뙻A2]z\JkҕJt-%*o@l6m `$;nĺeVl-ٰTAҔ!\jI$i:;+i4NM驢̩E%JfDyfO/t=TIyVoIOȈ1/6GE%y5s{B&N9eάr /՘u(~TgJxJ>1d䜺ڢXJmAI<tOCXxqమ@GN¸#S"X'5:UFU 5 QbZH2QF(4gM22 -[\Yvod~y!M(_Ȍ$l(Հb%&Iy^;iVKa,4Q;(hY PV93NfBKA] +쁄s<}w~T_CxlC_us.r ed3 +{zp>-]u_ _7eDi1e\aX]Hܕ9@bjQjtouU;߀5r&J.i'N_h>'ɍBzm\mM`Y%yLL[ܝ ^@(C7zWѭP=|[s;`o\tpŲY͕Jӵ~hk0CU ȔkmLFtyZJ:n6'x'3MBwәy&nl +ܤ1Qp#BȽF%қK +FWn}f_}ʼm k#N*!P kҺV,W.9ޥWwET_bNAlMYHCEth \0eYoaOFTQXzK\Ž|wβr/jO|VLΕ+)\r}IX߮ҁdeP.ʎ-ILnz\};Ŀr'VM*9%@H+նm,ɔCԷ: %&2{D_Kq~-{q{d3z~F ڊ Lɠ/n|xWrVOQIi "h[ZhpvYL>_0hክKW[hڲ ;ڶ[@d\g>٘ c5둤3|o͵=^˽Vkk=3јz$9QkGs=D'CڒQmV-gIn3q'Kr:%A2UckFpfy׾.8!}n_+8Rte,Wv]4$ɐw]O9f2\ݲ2%-jfr[9gMsDqҥ4R37$ Fi2:[$'2Nj͑ZXjw\rLs'^OSfB`>+1cBBqUjŇVkU^⇩ʹ{O}oL[+>CB= c.o1uR-[*6),อzEHS # }%2/("ڴzދ+E!b>NƩA|KT,֊K5?;sh.>8݇ Q} 2fl"9ZO܃=Ł?-<8]K,/F/puzKbvs!y~pWy}RzK%8-#^jd}m>b d$d"xZqC;N*7`!^(,hju?q_H4A$y+7 !U?G ܟ&nMsS?e!d)30_hbO8V- NwYZ"!(^G=&i*SEEןT?u +lwd83VGe"oxȒSK്}௥olk p-"ω'QH#; W) TglPhB^HQDH#-gʣ跍@,4_ݻ^m;.c+ Du E{׶^ 龐B2W^֯[IRE(;o}vwW,Kbϛa?mK>k~f V @\n4JzKtid|>LvQЌ0[oNJ d`ٷ8XUg_zW^qdn*q"l0Y9ZEW-nT˙*Yʮ9B5Qt ,5dOk|<)A-O>`e,Go'ڡ_eP^X +[oc2?6|=)j>i%C.=u|'pYt(SnԆ(sXCv;:ImD{x~;ީTVp:ղn-ֱ +Q ao+dB-="Gi^b{TYS^܀so<6^QimVo»x: r}ctp]fIm|waԶ]_yT!3YOs+ t3yG>P`xʺψy\ >m/јn(Z[8 +.YdmVaaB'򔧖 ŲJ9BeY#+@F5#Se7&nEwqnK+1NVXALqj>Ҿ?A0Y#X;fd]oJ#Q]Pc. K +QB!FH>|t+)󑮏d&T?Hw wpKA0H irB!N} ^uA" +j!? 'RIO{4>hm;m>А3>CsA/U`q08^qoF&ޣXE5i[]-"[6)ZaMO^۴lӔȋ鮉mwlh%Sm{bs-#MˆasP<;_ˎWuxYۅ/\k᧷ܻ뛗I9}Q?ؓ/MZ8/0q3Zl.d"g{x紝YK騥tRɭ:oz;%ZR1ޔɀdLņf= +!&b_ODyz7 &zpA;y\Jsg!Gz4'r +; 1R=RkA&?ؼlXg,s!4Z;o0~`Дaul%Y6ۀh$=Z8oڦZ^W>zm_vյ/+֊W[y;ܳ/ػq`W%#8|;X-_=*]6kMk۷%7 wWl,v:xaՒxthduޫZJob1 ,r8h9ўJ  +&J%Vly΍O_~7t.}AA} QH" HAJ H Dm-lٶmAlP5[TxvllH?eȃK<խMcɵ4hl>3ȝ˚Rqۂfp`Q\}yDRed[`+8٭$Bϑ8ŊoUQ@u|ŪẼҲ/64 ,-5%c3'^g;]^Yb^-yiAÉ52߻c Ef㔈[D_"M8W7wnyС9-*HpVXo uz hs@`!ӆ݆6Mv%җ\w Yզa424ajڤ\AR%1A8b' !F|=\hp\ʹfgPiDÞ WUk03PQ1s9l=zΏaS)@pcrge]\=;(6QQ`A\/+.B.v ߿zM}\Nsݾё+Gu_8ǛcEdX۹, +Fu63yY>6Kvw{QBXbhC{\ܝ&IFOu!\1gW$K-b*,[}h82 4h +t$1 m&H iH+I)EO1jc+ ukZ{~`a:)UI~EQHR +㎴Fm~[.Y <U"~w$sRҺW -.Haz"6렐(ZRf,̺֔o+S勇}lQlw#B1־Oc(>:_0QC[<5Ua@<+j5Dߧ(2HP;rϦ`q;U*dG@焖{V.nejpS:䏆A,0N=<KR M @؈^5>c8*M^s]pjtB%6b%8מ%> +鬠jUQй C~hK 8vPk2ǥ~," +E4( +ock& %>,ei?fLX8c'jNGyFCj})#VI|4.Y\_!<:Nz[r1Y^t@&gsW!lNϙVoJ׃a/ PΚ;G^ + GVdoVd6To2'"("#qR@_?Xb< sXxϢtVbОr@[L e 1M~;-2CQ}oFyڛǦULj<2s{`>h JR5E03kQAM1~q>D>tx]l+{*á_CNg+%)\b;$O_~  +@/װԴ߯"GU^ԅx7>yVuJ~y)*fSDu#Bg2QL,+1mPb䦠r$DӖKp 4n@blVyt;n8VfTkK+r!T +.EXj};^RmsmԷm yމóQM.4C$EyUKcUM7 Y&8Y Nvy)`ntkq3^.+y!b +ǗvGѹQt΅BnVgQp uwO`÷騙0 o7d@ 5<xN=!$ ɖe}]=x{sL}^(t~먥/_2TP4"~gjb!5LL-e8F}Na"}rc+9~^ _7ұ!doxR}*9[NA=:L:4' pI6"St-&;[ԩ5ZCQiV`hP$AҼ"RIAHUo@P+1`t aLjHXu dGi%4x両c$hE@T^O Ͼu y+uZx,SPƓZ1x-c\cB~(RrEH=tK 2dRN̗eEC˻8JvHCKSWŏ9e81!{9 qc>앰E* \6@ZG\gl%evnXg` hޅ^?˜?g!_YO!CuկA;#`1 Tobҳ;{=`'zqb##"Uq9x=%d` =)0@\ WΖ{seþG%WP TPdȯ }7: +]࠵`j*P !ٽ:}}u]zӚL˺\q]g͍kmt%k7J[6i xa5`i}bڍC׬-&zW5g=WO=xo"UC͞@?(T`ZN}L;n[v +2NC|#/BG7QŋC]xZ\WԺjVe49MG>#ûVLD$Ğkܗτes' /%7Ld PX-WЙKn$#:S(1@a9^|w?(>wP@:Nk.Gk +(¡ +(cp8x2f +G:7u~ܷ˪:.4%tBBFb +$wW vԐs F\?c;_`ϋAM^fQΣgpHxx ($/P;F4q ?UKgYXT3*\`8'}n}h{L|7Z(( B͊3oٳ6s>{}c4!H.eʉh2  Xx6Dw{qtfX"뼑9~{9qJ@s_H$^Ǻx|A՘_= J1~g@W~`R#נRBEC9?qq +endstream endobj 3360 0 obj <> endobj 3361 0 obj <>stream +JFIFaKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Ka +  c!1A"Qaq2#$3BRbr5STUs +%46CDtu&'()*789:EFGHIJVWXYZcdefghijvwxyz?괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥*?6pFg-'j9fPtU'&igO+M?S +,5?Я?BM?S +<~?S +~MBWj^~..#\lu>v])$]\AR4~?ëx~9.tp84W@ yuK4/]xkӧ9]?D>u=ѭ96twC'+æ >T,&>h?_` }O_ZSWnئcjӝM\gǷ^oW`l71 +pu]Ky {1%{JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥*=9P~WL׹8x"xN(O ^ڙzvsBO;gƀby7Uy^7~'5ҽμjKHjMJR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥*=o9F?JW+NjPҽ)^ו{^jh8k״sBh )JPWf V4\j{ijMJR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥*; `y9\+5 x(iJRAJ5jiS44)ڔ U$׾*+VmԆ)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JP괥*=ms ׹o5K["20EH23+6;Y"`!^U$UyOIqk} ]Ēʺ)dTSSvZ|exڴ6AygMMPmIKrsڷưZB_21ļ`>4WqZO&dsFč) ךv=זR[&* vq8Fs-n-!UK󹰑I +}T|Hg*@$1;ֽ4uc+8[տK-UHFir =b5{^f3CA^יE4<<,ߥE<Ԛ)JR+Y.>uveqkIvwqݺrT?XojA(YtQĉ<U Y[gj?$<$߼4#T)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥*9 5jʨZ1!?i72u(yG ʳ#nteYitf1l0 8)gҴN{Vfw۝6j͝[Y@b98dӍBeNfٌ@ױi7zVsulHΎ7WPy *ƓFԦE7GoMc3cs+16vep!$G 'h0ouRcdWAcO|_hwXFdS$mjj1b~4N=Acj̶3D`;W~ms/-k +Hi#U4ۍZme2]+B[mC#$OFCpA>ղ-^$0vXgI, = VI/3z}\?![O4`$T}lAɪP ӊ5{J4g:{{Gj)JRs(ȡ dx Z;@.l"xG$ZD#4kH:P{'\I5)X6"F71Һ)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥*;'yyy"aμ1dz* ?Qsk]K}6 Ӆ$QߊL UT$.v88bH^c54E{lj}zZ$go +|T՛`##U״'Ni^d׊ ׸1fM^4ʽ5?:ljKey[|`~ԜW)JR+_vڵaGY¨MD,~u=p\,ar.~xw?!KkayUxTG8t)JR)JR)JR)JR)JR)JR)JR)JR)JR)JP괥*;?ǟ1^m?*LO"+*OkK@>UP[k0svU n=W]CMiSoIU0%jKwy%Wv$Ur^D$ +xao¯9|AmI'&(鴘ʆ "lSDq*0$qVm>[m*2H${iۊcĝBNNfxdDbu==m#8 Y<ւQ/QSX0=]'{uA$w`J9:թ dn](^ϊ$ v'۴!< ֮2Gr+)6p!.(x1U&w-NAK moq^]v۳o}}Y!y1dHܼڼMrl0vEG#ʃgG$A: fQ6@>NЯg0O\P=YiJ)$utɳK 8$ppx#5j ~ "1\zw<}juYPעcX{`!oQ$uK1I$9'5^RWPFI` jZĶ$ x N1+?ۏ~M)JR)JԵtin8$, uwb6n";iyʯO_?TMu[CY(`JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥*?m>60}hvZ%M##6:g#5ESj:m!YVN~٬k{}?N" 8zp~3;VNi=cwd,aNNIGGoL-{Mi5Hb'xe#8>꟰k=̉#%Qgal"+<Qqi*OvHvT $HFWfr{V.%h8 +QrGj,/EtNRV,K9rMiXmGOhwXVvAʨIo0I!|ε~tv24 fh)!nW`:HKA7FN"1[#XZ~֖cy +@29qIAʷjc|Ѯt  aW9sǚIj֖;w,m1PP=^\~ӡ≮ʈOǽgY[I_^HR$ʹۅ +Qq+V4۩0=3)rp8< [bWI&H٥@X= _nWI${Rp"aqr=aOq0a +ojլ$NM[jzdV ,!،my8ǚʍ$YyLO>2ČgX(:ѓd5)JR)J8*!O#!O#RDgj`R)JR)JR)JR)JR)JR)JR)JR)JR)JR(괥*?84>߫r~hH4#Q+ z3S5LT$g cl:LK% Ű=|V_k*Ub +1xULpУq73]U peq@?J^`tz-HFkm1/T)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JP괥*=7'iicD~U#~Ե絀pN`Qq83X-WPF ##=e ~ +8# F#bn+ڳ$`Ookm'\1W;Xm#FWIUٵ;x^(ҏG 8'3-ZhHpbqIS{xWHC*lg~G<`ƾ%3z w?JҮ"V3( 01e%r0Ppx8d|m=CӉ\~ +gonX3j'h# 3cޯ ~^p( ajW쨊mpx]2^^0T0s7o.u&~^h.vpXn)qpx+dx樃Q锐 m7m#ΦE6 +8 3⼹ԭ (xcHխJF~ >Uz2c9AnI;]d<oF\n`̠W"dyH>ב_4 ޭ^9ՐMz+?{ooߎT)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JP괥*=v=~=6nt;#9eR@5cTw3FJXm-1RHHgXPUK(m69F˺7ܪARA6=Fk3 \(=X֓i]İOC0g:j\D?f?HG,$`c>WCwgwAF}\v*;zѺp}6IBaP->X K>67Z̝fnp7nkezShVB`'>X k%`儋#߿[@M--?\lnJeaTnn ![oyݿ0Y"흎\6 gb:;Ϫ]q , q?J[-l=KzB1 5gd\ 9p%c y\El+ tNJ x'g1^X$0mKPl0IF(ʬ0؊ov+1HTqkdXCMk +9UfPn@k>+[jY&VT>T 1cϊuFTɬ/,w]J.LDqA˚XizCk5ܲ+H r@q޵FXQ!u0XfFPqmȭiB*LdHF;[ 2(HRNC? $Rr|Vo'ʻrqpk;V>#LB㑞+ tR_Yd*Q7Bg淶Wi(K@9slc?ZAV`)2qRR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR(괥*=y<1L y8cTU[t;4(l1"n1^vxk͊9^W5ER&AH2@;טت?*yoj j.XI-LT)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JP괥*97{/q^?J5x4`CJ8Y-u +*FFx>L_P|XW>+ ya?eMy ߑGI~+[5Ėւx$*VX{`ER#ܰCXZYzcs {vVtF+"K&ƕ,,F2 +ȁnaEY'pU\zg ] <p*aWwdgV,zճKkMѢnbF|K{Ƽȇ[{U}E-+d#M*Y {WioP0+^Ey7 T }W,䐩m͵ycεqkkmޤ%x=:Ar޷YS[F۱wd:?3[UV|l ԙ#ʩm< +ƴ Af!Ս++ [`xjN[xG ߸ +d^2ĖĂ <8[YMJT; 7ynFr|bGU' pq5dFX ׫yp+R=80O"U`H\x?J+ǃz/b2F@j'x:tzԜW)JRbd  d󌟥k=зjѧiZW5\?h}3UQ"I3[zu-!w]G}n#;V{91)YAF%$Cّ#Rp$ZoC--\H!wl*}VQ<8D@K3=ɭWmZgbۥ#?ݐT=:gvݫ?vMJ?g9v;_흤Mi>/$x)lGpjqWY~w1ü sZc[ SA?t@#?UK5hC;wgпW·#]B 5Ȯ+Y6wTE,*֐|?+M^3n ~bw 8+0;[M3i8goQ3/UW'kG6OpM: @U$ e"y2ĬT@'/_Т_r?iԭum2J5Z9>7",}*H,r8#:wg{OYR(."#dS5aZ͓5v].E dv+1<kdN+Kug#E%nR & J3Y6<71D @rVeW$u ;yJR)JR)JR)JR괥*;)"NiV_ ޙ)PXaldlߥʈ0|X? +aXH +p2xOrOk?DhHjV{.I,_z\qƻPeWf˖VF {9Zz|7'UL0>2$9;V_SO$p5p?iYm&;+ä# * x$|1ٝ6H4;$291SL[+t TDpyPn;fTvi|OP\nHrM9p<+*6VisojT2pX|P%Ω1>9<+"?XĝpFxvrO5\?>xXK(tz[{;<..bD(cCPT En7l5;3:oI!MIgkp㨊)82Du",%R28=U }klHvR5[vN2 'kUgt1?Wn Kn;I VK2jZ +rk=> -(a?hw:B1]@.clΛ$73m(Ӻq(rC[ߕfikC2}߁5Eo  dHQrrNy޶<_- }s"$m$}~1k%]A.b w'嚽[IHaVAWW?8#Ui]Cwop9#M(> jK[XµB~2;(iJR)JHQP،>OAb|*/b+O("FX(P>dPߎ-b$KivءQ:^ +w֜nI0رsQ5?K,֣FX}M~8$Xd+ TQ\nEHW`r=q]'G!ệʁS\YHOڠz+Sm>jF`Ii[jf߭3R2*01W֣QPmt]K(%R{AM(V_~ޖݥC+` tu3i׌L+{=?*Ц!Fz󁟾+O#1n.?5Ю,-f7 nEl~`#DW] v t6 ]sc,{TCZfsKԭbYnR(cЀ؟ozOkX~\sxH}礨+8uѬ\6АF'oʸq'L4)mU1Bbf66.3mϿjFь`V>d/x0|afV%31#|\Vjꫡpq>94x-| uB*  ?ssΩA3%g/ +#J>@ +95@5>*Ϛ#\*+U/ +I(aGZ%q((ίV?םPJMaO\Isʪ0'?:TNB?^x( | uDU8 +H˻MLM<둲KA$B~q46sϿ5Z"6`c,U\?^Eʪ{+3Rٳ8 +״)JR+d~$ n"2l?jE&%rGIR{a;gO롈R(e(Vv 1y[a}"9[!c_Kܫ$ .IgMup1^Ҡ?ҋ,gxvAZᱱ5 H +n.h 2lֶ_7K 1wϞkd&0{UL}qUy[->M 0>(###3Fj8S<$N1q߾k!U X>kUy-k#*˸T?ϭ\F3q ћhq3G(ΆTcujVH3#V\yy%H \ #k˫;Y6AVtwqHNNsUݴ0;gU&Hdy8 kR:xP\X(l?\>ud$xs`۟OWTAv +>gȱ&xsud a2{"Y[+ A2TNJDD`9qjף?JVm@`?5()JR)J?G<3w BNǭYg)!eM9FAB?*J&%+환ܣ ?j%գMFy#ҫ0{qZo ke$v+2D҃'YSÞդT~+D=asI#Ms\w_.]~0B5(q]Hʫ0N3Q +DpR*} MWOBq*Dg<ģ_Uoƻ@m(YO*+Yt]*Dʞa@>Hرe{;FsWt>9PB#ǹPMvZIDImmTe(''9L^VF۟dZĿISubԌ ($:ʄ<Jm7f8#en?@)v'+0p#kb@9M'*p9QDo􋙥ECt0+>Ƕ*4z]^,sRR)JR)JR)JR괥+Aﶿק#ծ´NmI(a ܕe@0p@(ذOW$ۦ&kuݜVmkZq>,R7Gx\,+af޼!ߥJ VZ0,!rz{]QG=:s6/ 2ʾc.t/|#NkP^ǷRQr2JXZp,ĖF%1=Vw)m\*NK.pI7M1۸67$~"t[Q. 2-_l1 1UQ@$$I=i>!"r2+/MPgF!1=Ä,V# >jݿzJR)JR=N g}鬼s7Ru{{q3JJtQ/:nJZ gHw)';ROv;MY/E"!jܶ|e#?Zg7ܖf^5'W6FJԆR2>*'mM5>7"u8??:ϓIn.j{mK<4km1$y$ZAmn~Yx0~5KjNf꬛3UݘquvnI#i1$[GG~/Ts& ;w+sdÚm- b8dX#$/z|#CՂ}H gp[F4?5_EV1#ٶW1I5?T1m©]njHD.Ѯ~k*J g _ѭp˭J HGb='8l(ϰ&W3c|-aYC{QE,Mucun_;-sSM&Męb.3 QM{L㽽!apm 1ro;#'zZחpsDgaH7*ۉ$;T ORfEwXxv튮M+8B.eUOD7R'7W[pWlQdNqm{r;wJxˌT8I?I~~?gww|@Vґr?75?]VyBB +'-ԭ.`*y-# }j#'K Q,8۸ʥ]0YطD"l9ſqm)L7$d~b`Q6]E,P:8Xd2:}x2jֽ2[O`A6Xq<6zUwwZH5+-B[ߘ]ǎyai__6v/--ua|y۩,/JI_r\2+x e-MGdF|g=|3etE,OGć 3V~lzh0aW#fbGʤFDQ*])JR)JR)JR)JP괥*=1U92ˀ;qGnS(vjP+m99UIRbCʯg}(9?/ʪfPJ>GZ +)U4:6>g=-%3C pݿ` +)ہϷ[(ē'vUla[roo'}[ar{f0=q\c"0sG##Ziv_8HE]hUb6$1~*v̀mˑgeF3ڪeb +gf4)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JP괥*=*oR6^k]_KkugU+4Nr0˜VɹWqހgx2+S{+i%E9sTWZCt0:#9e{Ps+xu-T9;Qݰkb[zNkh [.w9e8"o5#Ƕ+LPyVRje9p(5<׌Hz558diP#Gq,D);3g>f6ZGTIͭaup +FsNy[5gEbhsFyjP+R)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥+A'_ׯ8>w^yu&?Qf`m_~2x6Jx`Xjv~f?TW)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)J괥*?+5+QX:t$! ~u|M?Xn) r@X~F7wL;z gv`s۵_F6Tޭ bIa1Y8V,zt1\Ip s`qnӛw9ی4e33 IoWێ{RLh6 {8}*ٙ)\0fm.J}IRW vZ  %@, %ؓ>Xv9đPCά#by0Em?CZ! +ev''ۓVS `TWEb%/ǵ]:dixnݹۜ3Yx~mNRҔ)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥*=.>`Ns՛߽׀^'5T*`j +Yd6 {V +^kL^c&;>vl-!q3d5]ڡP05lzw4sVo/;EAwcwM^Eyژ{R;Xbث"; |O; F3XV58ZM +M$LCYǵk4[1(dmg|1j@}u+[wn|wJR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥*;8֝{?VaG( +*>9>jķ7PYDLUr6W~,:21ImUlU;3ڵ1.-+CIi{y4V$r9 A:dw]J 7.WpppOaڵ3l$|+-/.5I4!S%{Z}yyLtŐ~)Sgڶ\2Ei'i6amVMbpp;Q]9.@MEl-f{Ra,n.T3M].%aNYT185{lI+86|y7 j3:BV׃vj\˥VרIJElY~򲝪W>}5 WM e\c63#9&@F??_IuI[+cMqS`VIH$eGsǃ+Ie "H+RA5=R{ *K!zRFQ`ڷl^bcBX}HV$ybJPK+_ƨE Q*oP`6H%rxoʯ|.F'H8Wih0Q=NI?";uN3NTcӲfSHPdq޳lHaU@+K9chcXWsK!\w;> +ݺ/Qd 1ZXuvlK;7P@ʗ覶{p~u][J9k}pp`W-tks5ȕɛH‘q^&I,[s +Tb#|])bU5F!A;gڼtUdf+w`|;}k9F j!ѭ]ќ'܃Y KH4Jvn|2K ,iO(vgd` p1YXKcrRR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR(괥*;?u^j3Vn/Y6^I ܚk~3HG`=oUqT*Ž7RMl \`2YFqP8P՛p'ϥK>J w,0d~A׳\n'y'-c c9Xy wU*`bJ'*ͶثʲN3y5 +dp}7\O,[K 8?ZX5sD\g4>5[{2U6pޯR' 2Aǂ; Q[i$Fnq;u Pq_jz\#=Y c-9~)R^Ҕ)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR(괥*=0OHםju+gĎ$F# ` aï5ݵ+RޒF VGGKeDHB̪vese<זkICl<mVuOP(pArqުmj[#X[leڻXMuݮ4тrAku),Epr2P#`o{h `& XRlڶdo[?*k6YE[اLh?.RAI {-Un}$,YX1ǟ¤klُ&'J V0˪\ϏS5)iZc]KhA*Ǩ*2AV7º rG(ajڝ߫4QƻP +9 |Vm~eyBp"0,ֳ[[X:I.cRs6H<`dկ`+u†g` EHm/Ὃe}@ G 5iy*1 F7mlc^E ň T:Ee\HJ1P\+R;c +s1oI3` +1(QIjW&"O8d~XfRg"b&6P0%l$YW`1mpF@|ܫlx%*8@ {&m[!=%c+IC3EgJIg$""6NA'ybA*mݟgnwݞ69⼷ms!Ѳ VkȮ)!GB1IHL3=7#$6kˍzM&_ՄUff#UUūl]@BN08 Mk|(܇ F3X5b_t˝sGfU;ʅLW\Rq1 0τ#!p횻6([pmxZxlAA5[]Y~o$$wk>$2hiȒcAhX;0VmGf:%tjWVGq޼ZG%B*3~5X:啛eVrN3`rhTyeەs MsVd7q\D&sǵ֭o]R69u,8`3֗խHټbC0ϓZ{ \fRf V-֥";9$*y5/mS÷IRrcPw9#ⶐj֖Vp-,r;۹bU9-XYib2GC XmD/+1+8$q_bL.%\X rI7/TŅV/6ϵd[j]# ίNҟx6{bDE,*TZʖU܀xIZW:V>m9Za D̗A]Ŷ26МWdk)Y[S8 8mA9+o3~;ׇ_zBIb^=X<v="PR d*AYX*pAƱ4F\'O~o޽^| 1r 5 !uO\ Ǎc1Y\[H&Ms}jŮkxˣwReGsUegc2*!tݖPQrk`o}{ ݟlV=i}  +TuhݓW°nk'!l mV`sr^'ηih$da88 ^[m̅r:+Y GjY"} +0Pp\ +=k>aq11y)n%Dhv$Ik}$ +rI$9$Qm^\ >Z,K 6ֺ"r#-me# r*-D w߱[ۻ埗zVs;j"@v'I{X- n@BrP,O*5YmDGR!9^~,PC In9UW #mnƆI6H_S>el#i&U*mbqqSsY¡+FBpq:7+IB.nR6LQf?O+A5; 'ud \gZ'R,mm٤2IHrĹUwVVs;qyy&G{nFԥ(괥+G_ײi.l%{mcd(W*98 x-%ŵA +N[;zKhc ݷ ެi3i hJ)U';C$S;Գ#Lг >R4>vޗJ)\] o^IyVCHPwF;gϵ\L+",HJysWi%>۷s&EKbYqqUt˨eZFXFo`&q?m\[neGFr2[[ў.%+5˗iIŸ +=cEVm( rp=W)v퍔FAAVH<@6 ⪳絎8 j; ۃTX/FIɟX^>j%Kh냑bA{眊9{ueiϜjRd/6N?Xʧ!Iqگ2q"l~wg9jdz‚M9*߶߳MrqP3$jη]j}!opmtbMv@-ȣMtGP='})6V>S]p׶S[ss$|ʣp"NM]$c>mٸdm20kL'3CvQmY1XEof.X,I\pe , 0`q(\ թ%[IW̨Xx[LV-R܇rm< gYX,H;w b5om,B\2'=13YWI2ڈ +!ٝxl1X-}mR^ҴpꖖE&%f\.}DZs5t %vvu`pϊܒ/wO*\v.?M?II*3\"S3#>+eu|E<`ˤd$j.ӎWme W#b^2xS4qNeDdxIJ7o9Tn}oDD5$XeJD6Qp 5jЩ##&-B}hvs9D'0|MZMrzPc$0frIα4 f-jL%c T\FMdisåh3XZTnC. Al?bwKH W Τoq"UKx_oMwiwP@=ՆgQ"y:ig53՜_QuG) +-8|>*đ[6ӧh̃i36F! 3q_?6-?vM^G|VK?]09&M1fk n"yT6F}D^- DL$Ըrڿ^k]3p:pH]dpXp|Yz#VM,̐28<`_ޭ +qt蠀AAz6o.2s,ЮbvDL`)\\20ymZf}ϸ(7pN8犚ebPK1)9N+m_s$qs!O~MZ=&%2g +0\ pOWn5Vt6]Y%t]R GsI3Zw;)Cm5ʎq³PPՓZX[ebcrV;ƠyίiuɑKKt@ÐsZ:tЯV{#H`bH@| vi֚>0nq0 HIm@m?ų0Eo5 FYni%c8Ϣ!OwvIjPѬ, [XgƸ,孵_RFb OF{´ir1%āI##'ej֚m -,0!i'?u@vo$yEajW\~ˢ>, `;Z+mJ?L‚&.c#5=??V4Q3\8${dVjKbĤ5wXzQ:xL,X5pIf[)upw@??j0nYn{ +0"-858%M=YgmT r;3Al趒Cz:l1Yq*sG],b6B*@'Yݽu<`X$$#5Y"K{ +&s8NmkHUONٝQx.~4Q]MaZ!+Ouxe1԰'ԳL(XQyR괥+G}MVCNYjX2~n;X\:*r ] jܗp@@yI jqȪK(!>N+t%H89|פWbM{ƒȪ6:3F z8{wW9 E}LgxcלAwbuc<#dʼއV$ 'CRpI x$ܠdz#U$2{w#Xj ʂ5UTvlj=R%T ?WVfᕤvPg f;*+G;|$efPJ 20p|qZ]#GnXd2܉Sn۵B(èw3BRE `Aƍ*.@>*T(*m!i4.{-S$e T']sA" GcU9¨fq,Fc@0?R95zq^c*lvn{c) ۨHUG`(cgHYꦂ7uvU,={V7q!E,|qOǵblm95Rƪ@01lR(RG`(V$s"#{p9V浊੒5b{Ul 2 S ۮT{( +?!XZK *I$l͜.Th]!HNs`z5Wv2rp1TGm%Tr~U9N;7p @,~ [Et%Eu=Ք2UU0HxTv^vW* .v#<%fWxՙT=)JP괥+Ig=s[ +KǷdTz.?>3[ynnUe,pL}֩MnEK)d rѮ3ԑqNJ^4Vʧ\–J3" '\9L/9V4/a"MPn²>NECd`OqZ I#1Nlli%deAN~ ֦K4o?zܓ`^qQ69"ΗF8԰m`'=깵ɬ4$k q|]\=YS$[*FpF ;~uYD*"W)m3-4vq'Ad'_'?LVQ]R+6e#G^d,?>W&Om4fvbxV`mZmfkeU傶p103޽ZkynthS8fyUkXH̎m7*|`ջbwD@ۡv,3ǽ_LI2mт +1ɪp)l뵞s0FEX +ڀWv-H*!w1mI%#>.vr3YSj[ZB8jէ cR^H <P}X%Thlj:lq>+zZDTј16,3|V"E؞/NFhQF+SiLꢯ#i<R ۰7 o5;odڥTX"Ƥ`'5tq#s=խZ @ V ⼎ xY(`X}E{ʘ,@$wחLҢo8]'f~!FiCFd?**Nу)Aiwʪ< +?3^} Mݸmsb7L޹`{`gH)f 2I85ܮ\{i.yZH"[X!#V G8zqF:ocիy + ` r<|U님Wt3ɯZtD3@\{) p`{!qT^_AԞE}قq h|?.#F& Qؼr m4;-HӬҤh~=Y9 +̚vDDFs K` +-v +YH#c3.݀ⳬ0 emȧ(w.q's\Gޣmq 3,<¬6l +U0 W$2;,XǾOe-*LI=޳4qk +>Ӕ ,^Cz$\(}*%Xw$֫DW{ D7Q?gnLsՒIftWu26hdEGvf +?3Aw EsPH ..rr3Wkw !dSٕUR)JR)JR)JR)JR)JR)JR괥+I +k3+ȫMj[ . +G dm~x8Əy7Ц&iv(6OKso$-'1$5ci6=M4E9+0~U_VsiKꡑz[p cjڃZ-A5g $lbNw scZT@!frx'ݜql[ u+h(Ya%UoR\sVMJoP X?<՘֓P}'B b}ͦ-3qɸ R{ ][SI+ + {W䳞mL2V1z?`t &# Т +)>jŭfQ*L9 +þW'äk6.ct$1 r{6I] Um+2|WaM HcTa@U#Mx X8^&R~5vMADL8&Gk J$2@Om"&4ƶNm?{U:[[Ծ%;RFnmW8v#Iy +ڻv+s_-sİ [xԊG;mF9`<ZÂ0ϏG4‹xPWmUKr8Kun}v ?m[Pd[/B<Ĉ";cUu#4Zƃ^B9dԭbf)/> s.e^8;Bc*sjX!u22FPmTQn|j⟍z;fs^o\ Vq*HɯXNG4@>+>iq7YЖ1 !XA|:rďlR Q*%(N'~y,}?qN[3mI8ֱYȐ"fŒ ,Ibe,3D 3n[k0v۽*1\ypFA Y@b[Y&3 䌀rF89Z%1»%rG$G,цr8؎ yy[_FϻTeHTg,*QcwI拥[%(agqqqڬ;rT3wp3c0jhopWd`A 9@qV좾N˹w+H  go8H o?3gq4h{uDn\\c$:UBm`[q$۳9i&k4I F +ʎA'''`Ē1V,U]VB8Py>rR9f{|0P>"U놋tM"qUc'Y0}G R( +qH!c/h$NRYw{V5D륻+HN6={jaEw( lHk` +kJ;iՊ #X^lU4-N8OzD$GA632>kRIX/7 w qρ޵'#==PcgubMFc/Q7~ha+zomY_RlS~8^ϭf*@.8ǵZ5k½Ex0nsWjpLxpCBdL(,ꡊp $/V {6Vi 5}uxd# +yGxrN$pÐxײOqXʶm`ȡ@ssVVK,h.q6p\i3lr"|ETI#j )۹VO$(LwN2*˪X @@$y.u{:EpN9ZIq=ŶVг;~y=8-.`kU"(X" +q8 Y,Me!9^9E{kEw5{iCC,lސr# n领6gmQs*sO8Dn07wciWt0Ef, yq.J,BX8a&Mn#3޵2=$lYCe 5} ڬ6 IaUcIbDn[cgcMܦ(hX64 @@f$jvStd(l}rgU:L3il`y ++Fx!öy&\[^]K|$W6B.S샞Z6w?B-FG 㜏qY:yl;w WDpĶ{qWmu ˂t7* +9ǐk[s]6gcS8$VuRͩΰĂU-V-*.- e0v@RF#/IJR)JR)JR)JR)JR)JR)JR)JR[5%y2?{kۈ9"Up`Mh~7btpRw 9 >͐ct+>{eeq4pNn|P︊ +gӻ{kk8C|UC5]Gw5ӒT$I]љI8 ۊ|?o\=ʬm\6T\èsgkئMJ zb֒Y59aQ}&+}gGgt4Rv϶kے`g`)2#Ƴ=_n/ s,~R1V0=}@y?u+PX.Bі#p8 h4gRQ˖nX5_ʟחVK=I) cf&óՑ18ߍ $l.&uO5gPR;a%r=sHVv I;X2%]vea#V21M-M QTNq]I,R7  yo%2iˁzv2p㓞eZjt."MŶ3z=ݫ[OlL'wyXۜ`bK2w0~U=$rM$}ĀcGʩvL3 +a״(׏mvgUEPi{if`\~3omr@tv#a+KAbNy*#a4*,aX\%euhNe䠕LϿs1^~ F-I:r+Z*ݻVeBfbrıVE)JP괥*=Ghx k)KEIPHP\ bk<9T1];Ofl|WМg`UޣSz:l ј 0'llIin<'UO:uKފ +2 ЪF0=6padՍU:*˾7#qӵx άU;݉w=&=J9Y;wla yƇ+[Lఉ[ J;9ׇ$wQ}EߵҺ7W&\ +8ǚFOjipdK! (P3dU'+}o Fr#?Z!pN8VSZᥚXG )2 6 OBOA sUEA0n1eH$r9*fXK"!ʎx_K*GvbYFGck(jqZ)7nT!H'nH3jF]T3T#mXX`̛0*YxgYyY+i3jI?!5b}j yg,JI%^gyjF,GN% ف=np%t41L۾;}b#2-iс~<m'L0ۃ'e\j1["圡p8-j6kK.=@N<{Q6knDbnT;qY2Fwf_bNH{Oұ +V?¥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JP괥*=G-^ +C`˵cYK{dR"YM*aJ,cG֪Y^;GWGCRryAjE-7pVVQ ؐ|ƴAs$OҋPyV!6xݫ+Z m"X|qV;E(Ro[[(x1$C$1kX!bv}e@ Ze^#c66(wm p3W[Ɍ3,d3&xVkR z7{*Lv=V(?MW;66wg#> )ofc ֬4E#9{w,Rxצ`ApF k&ˁKG`Ho29XqɳT)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)J괥*=I-^g&"az8T5gҽWT(OW;׻|טɦ9G +x@zG*dP`P8++m+4jpG" qXזЫX-b5=?2M]`8'gVc/jYJR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥*=O' `3En` dw-gocYDF8! pkYtv1&LKc!{q*ź^[[GzVv /T9ky 3*@$@dײjqΊc,P{Tڕ*F@MF7X̨xRJu[Ak-U +<ϊ6 4W اޥBH?_5) HJ(=Cd9ߊyN61 V4 /4Y9gKs[Ve&*(#{g?:k y⨓Q3+ʊX3ۚ`W3";yl {UMu +6|յtmyil'gV- rILdp=mkȣ0=ϰfm}IPu v{cު+$SqTw1;FF[UU "NbϚu+fgA*eaxI[f ጣ=_[ܾ7uG 񷁏jo mQ`q 9RéjPJܣkGh89Zmᵼ`\F.2}6aIϏ T>˴bgs=8f}+ۖqڱ̱[ +JĄB#yltr19P @|l*kkF,!!nCIs!`@`qǞ)F,uIX+q U2vlkU'5GvR辡1Xҭ宮U~@fEy8Fl5 ge[o[{c>jf7Kc787SK;[Ol`0a| PclU?J#FCg=?f+guso.6p_>9;b,X+p536ǖH_>V5A:&*WJR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥*=W'RQdYAΌy sg5XU*G+Ɓ U$v$ ux$O'yT<((W^*8y iGoj ^ީx%Al^*?!ZMN@wFplqHf?q*B;gziaqZ5leAWnrTyU1#Jq^T~@ +hyȪJ;U[Rѩ!3DDCVEZxcxa>Y(`hQQCx½$UV1ljKꔊ)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥+AFޭ 9-C4C’Tr>*ڲ-Rp6Bx;xV%Ր,.IH)V"x5]K'OxrI$8'#XZOyxyNfWF306V^c, +U2xU +5WQtUضw1 '9}3bH䒧{[j2zI,<}`_:n,,r4m+]eu,֚4o#QBU cⶋ +ǯw:sϴo;V+5C& +)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥*?9[N3pcϊV4\89=I,`>rv#K((JS#jb\ƿS9ff%+\pOjts/W`߀7c\xyǂ r +FJ`.{x+-\xퟝ^9pYA r3V$ҭeTWH'};~452gjCZ[a%Tl@T| +=nݻ|m1a@A Hl1@NHnA}{SwWMBC(\3c}8y[B +*Aw \  c$ט@XzupxMn"]ؑ>UɧuʀXpHqL]5ٜ|>/22 ;g9Fҭtz.{|:d$6ez}@>յѢTPhI$Ee\YtAur p&F6A_|IܙS,ixmX1 =*8z"5؁+vT"W3ZPc1Ρj>RRR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR(괥+A;%\6O"r* +ԵbmR$X' +i3#m0x<Ǐ~5n9 g$w#chڃj2,_ mb=>l(Xɕ~3*9xU3TZ'SA~Uoi[*6Hj'BsNP1V.d*Bo+ lYρWb-Xz:%`5Ky; n$GDB62 jƽC#Po/i{V~Xiq?Kz{sm|4{֮Z[+[6^'7 [ٜqBJk ){E?eJR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥*=Wf^բf,1b=-dkyp,(]9Z˻g I" $U7 A&6OHv/UQ]Jh 8,!6H.HÀO5iR0g0n+d-qە+22yHo.6݉7 dU׊>Ԯ๐OHHTnrvg#F8]?PcFH1.H.۹80{ױzbY1XMdӮD^&EB.x<|VW +- 2#Ns=U5WhP䌟$.8ֲT YdeDz~5wq-ΔFÂ@>j@rNMj>"wٲ;)7) +p~uOso%+$ ɉ F}a,QHoZ"h #7ÂAjiI-K:ok(bq}[s4vZk+N;[i9qۺh?]YC lC$:o4UT]A9¬Z7DH +Gk0 m;=g[EZfȁnyO#2Q"m{9 .*>+Hpf0LĮ# 9ȭ+\,D}PIvj)YOעwn̹JT3{{UUҭ⑋ GVbA. v VUQYGX||+e7=??͏ET+R)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥*?Hv<ׇc^XCzљ7n\3.v>*4^Nܯ)`pZCnP hf۳Aytk@NOk84{RD[a.㓏lj?gclUEm7|2,sFUbĜ62>yǚ &5T۲3M%ҭXR.7-Rm n翁UɧDe C`Ϟjh튶 ;wr[%-hYg{z{~y>+aľ!v wz$W]W "i]w>r;vUBV=!\8pñI4uPuB8*[ wd$ KnIIE8sUGfe/2zؒHۜお&k1[01嘲IϚtE\߷o qvY?*}.[WP!Pwm'$cYANxdcO'Gx[e!;QB$d׷%M k T9Lv]{ZGEzTvq;o~@ݟϴctyQƣ;[ubUf!UPXJ }k0)J#4z+(FkW3^PL^k4tӿfђ)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JP괥*?VDM>(;V_KDJGʩM&`wi#iWc@v;prk+td|U:z[ՙ{g ⎰WW%p9ve^8L0/snp^JWk5U1^g5ET{T{UKzFiWGԴ$])JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥*?GW6ޫ('ja#I!/!`'S{ nI!3Rrջh## %Y$&!v8V~(a]9 Ѻw{r#dc^CH"U]`&EWk#,B22H1<{Vf4 U!r\A=qoNїNyY%v3H8TIqɓ~e9$X?Sme7VKR%a{ s޳>ą 'srs{5iJ +TE{^bs^PA)^ҕyXsjpgeВt)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JP괥+A8̶#LÑS}3LCކimQ I δKx#9YX~#85eVOt\$P~nyjx4 +|AˢQ]eb F8{N+ӑT\׏޽Wک&>>15ȡ; ++#gSЖ)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JP괥+G޶_VG~=?|*i,7,=`gxem[\#dc/$Eb~`%x%3(sR8]B9]a^㼾FrIW:4źc #ݳcRA'{UT[j=̅{l3jh̿jN{fʔ*/F9Ƕ1y[~g'bJs2n^qi.ZSn)fXckrG>"/`0 %N|g#*g I8 +kubX$Y 1A4[d#p ^]^AcJ]®|eE{Tz8{S1LWPxV; +ęqBZҔ)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥+E޶_VztkMWhx +F70y); + $*LgkU{˃Ug[c$='$5GGW#0sjDK"̈AV=8:&hIrv AmA5֝2@9H.l_>Kt0M@'+[:W6XMʹPb-tly$ g"hzi5Mona +c/;^jA* Tv ;5ai(W~sv=Ϩ~ua>Ӗ^qHj,ɼbcXw1jXhVZ[G۾ꈾmXLysUt薝vG3eݎHt"*Jzd$;I* XewHn;`F6FSnVF1樳Ma" +;sTŦ[Cq%@?gN1zn+ڧjנL״jAɯMxybNž??%U)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥+G޶^ZcV:Lb^pYTAf +dջF+Tȁq KckbNH=W_cm\AoZI)2#>W{C`W+$U[w~*ѵ ]s&M_އ&< ^|z|jWMc7*#*8?WF+S_Mfc + l1+۸9kAv7b#ᝮ6*ݫPn8l9=8quK@̦xRAEc>+)X0ȪtKQܒT(e T*QZȩn`>=])V-@$ ++D{9ҕHpIU/`RHJ`H&ѪJVjI'DB8e@ۜװjLR+uYx 5Jqq%uEوURxRe A )J/z*ubNcNhѫGr7F8ʰaJW{JRxX+R)JR*`$|{׵j+ 2dwҔ)JR괥+G޶^Z?9ϬcVKWNskF:PL-6z`[`Q01sYq&%ӌ7eCo\+ \&ilH,cV8qظ&:#{ߓvwen {C3g>IsXڌvdu+{JH +#Hm-$̄@W9>s5 Kf$ey>uOys(IY$ !s?,`/$!<΍7G,0F8>uCsnEԎNqr>6Uc P2n.O=0>U["IbGr8a1۱Η*i :}x;VI$SkG^&$' F=Qۜ` qQVnv<,@u72Vr] +:.N{+ulq޴]VvP|A.']V׬堷&}@2 +N0pG*B{/Ovv;TTmWv{v5ee y +m|,m7G̼9asgA%kIH`G3kgr\<2?a -r<}/sDtY;a}YƱ: hLQf #pǎ9z~4YR3eW` r9?ZȰ,4J["S #E9'I?:ζķMi,m$0tcq5xMɒJ!Uk=ÚTC=%4߅dzZ\X[![YU[yM +[9r֮C<3t$鰂a*Q ˻i&H$xEbUN '3T\߭7tQгǻA9#9MJ=/Aӝb֨.ȡTG?5mm`x$uf3#d$dg$՟-- A2G +nnT8"TWhBgPٜs[exv*r2 xǽXH!#Gs T sXΫkyK}gp"c ,iV +GMH,1Ƹf% +#$ U $d8T?{;zTy oRyVƕȨ6D:# FD<[X~B۩0։dnk2Wbc,sÂ35aq| wd>sP6Hhh2v1#985jV:e^bʇ.ޤ8ʎ;lodĈK6DQ;Wq%ՙ~!X-dx_l. g#Wkɩ}8f $T898n{V>}K2q?qXjR=ʶe!@$=G?@ _MͿigi}ݳ>qUsޛ/a2PG+34#h $wVKX^CaÝH%g涘Dk5ģwIը>ۣYqk8,Kv,rK VBZdZEY))N <37$&+;\%|WnWJ{Ci1gB}Gsh{ydoA\pqϤW"LKG@ $U1D +I` ?cGG7ݒs!|d`qTanDYRN7`N{)#yU(V"0?.$zD1*ErF{[$x'9#mh#ӯvC.Yd~$Fq>%HFFyn#dXv=4WV I(3Ϟ+#\+*K3,NʡhqOnkZWѧ*HG$y J8B;Ⲫ9\ӊE,;qP#'h>HQϨmGkяbY?Y!'r70Xa"E 5Xw ssVX&2Y!/;>+aZSR,9U w5TLߧ iǼ ,8}|WmΩ4ȫ%JdhPBck P 'y(8=󃊩jp4ѵs)+K(ڤx#Tܤf7T`l1pG3R:TsiѦ]YF<[9qܪT~&l5k<:n2]ΠrF *vVKKREX8g yW-[}[J9{R +\B4:Ul4rn*y3Jyf+Com:i-lJ,la OJBILVvj{ۇI!VE2݂I8`YzIo4`dULrHVa:Ai*o a‚!@=āe$NMq~ł: ʐݰA>fhZTKbXtd.BWHnKH4;QV7.Kvq=Z\j, Ns&\atE!dV*TVk#(уѐU<0: YL:pW,gz(8ֆO rLs%s#?W`O`qbz]VWNƝ3)vF0yGA%+E#FdVU 9=##dg)P2Hw"#!~frfXpxa gڪf$WI2ZL-[2{[R;wYyLbV #޴rX`'5$q'r p7HmoZA4MiK$V&Y@S#bFzN zh־2I6&y#p F9TG(ŠTN 眞Mfg\gh8qNɋ~phjV \K$kp:dr+?Z'9l/F9vG >Xf'{k4{xbk)b7X>=Dxe#F>x-쯒KYheh?Q\NHc8luK$*ΑB8#ՇwsqoeGX(pڻ@,dxsTiK]VYᷙQdi:LaAOY +n^{Wr2e,7ayes}-Ad >? +]ooo,l8]8`rFGnkKn-0><Ht`\U߈nWҤpBj + UMwU[VRҞF@3水K{m2=.fa~<0qOUjv#%ݥʾ#f).;wJtkXMcu1ݎxR괥+C7~jޱo/(33Ubq$-Z9.>U^}s!Gfz^o\<j7O4+eټ`nǵ_CsUMq$?J+ƒ5a2fȐf ܒZ3$CdwV@5֣f9 Vbv+X:0X*ݝw$6qoqf x PsCU޹} n!aojXc_=]CzNҠ8opO"`G%wdx%7ezXhKRR)JR)JR)JR+Z;uGIY:NrˍOgn;R)JRX[4*3ܳqWJR)JR)JR)JV\εqA&I}*K#OlNN=R)XڅD  SabmI36䁀0X,^ ">rmiJR괥+E/~Zsj h]RXvđRK)VގO| ]Tk{;fȊI~>yl+Jկ-X4G8+,X8-nj +ܶz`UR؅0n?Igs$4v*\6Y{O~++ i$t\v99*U-Ěb$@;\;ڱEILbHeuRB,Mkcj"$$I(|`p _X%񅝙zRy#܇ْFyۮG# ۚƒ(4g=B"e3JHT8 ii&vI +ضW5  x^'X8}*8<ݏzzͧJE8bq$yήj:4e*OF=OAi;F^Ubhp~Iq$?z* +|fuCe-xpڈV_I!̢6GRK8Ez(5xQb8XdUh"pnϤjkŝ)]N68=cC]=l:a ߟ:>vU*[ +vVv+.wn-$ +Q`YT0NN{VA4kl=$jpH'Yl_:Tv_IIȾB.҅IJine*,*ps<kN0 *#yɭ$w99Դ?%e{JVGMw %bǁz- QGGܯe;{)JR$s +XNs}. hx^uɎNOR+KkW <0 u/;؅@q܀NOz܃^֗N. ;$߇QÐquJRm+BQ\eb@?SVMmГoG[ٞ+2)JRDN|si>[kakiLELp3aOښ3wWK$ lcejWwI,pEqb0v`rjlI|?\gWb!¶FG uOV0Rvv0Hp3ڶ2R̶ֱS&)rQ=onlIGd>7밹ϤR(HUU-qZ U}Z9Hm̰V. H)JRu;8^fEȍ13#~UR)JR)XzR '!l' `y;qtd(&?"*)JR괥+G( Vްne)JsZ:K\unm$"O$t6k(cH„%q&ϚkͧC(X̬˕ f<٪ٮ9 d*G$EP4C-ԲBm9=TKM=vRL +pzB{$r~Uz=-$޸kqͧ%ݟsX~qXS%ې9+:O,vј*PUv$&%-X<'P`ެim嬅nGTF" 2pGk iDsxⱴ]*]&nI Ajzmv3uή` ۰08nбB72g*Ѥ0FUD $IV5-܁q9[hu۲Ēl|;L$Y%Ab DٌgA5}5ܣ* Xa=e&KscjYQKln203iWYgR@ +$r3ώ+9)V6i#2Sysݙdި:^#sێ+1.ePf'@NܰO$կ? :gMD1ۗ+沦7ot2E8P #4m*X:[H`$ϵas%1o4n!6FߟgG/2 n`X`-ղ+ƴ|8{If +3i$ҧkss*U#{'j?Mw[cjs$'+*?엒"Gs,$m29v-gck:ڢYf\( F<2ZCэW{? op_ŗ+h#f)($z (cڽ SP4[ybEFTj`.i#W4K[B7%׸q튱cޣjV^L!HB*GU[mFMg*(^]Y8mNJk<:1 h_Ն~TjA +Cn +oWάAji3,.P(L1osY:-Zī8kydbq@N1r3Z"Gv}O}A!?}BBq5L=4QC"K&Nu' 3Sm^Ѯd66I 8;MLK{abDRaӿo5jqj72b1t)"6pyG;VjivN..aF#pC#`|HM7o:O$%Pʒ6HEu8H8pA@cpAjjz׳12Z c\ۜ}|Kuuȏ$0$20H'٬VQw©Ojl2n=CtM7S@ D$oyUxl5QqݸϲH# Q!RKi좹1Dl*WQv;y V)!G8E `p3WjqZ&a'd>sjʞmOS-:CnE߸8]BUQ˴s.(Ϊ:4p{涚݆*XDD#Gnݴ5g uoՖD\Eb'v\jWbg;[-#5Vutbk+ /ot%$w;v%+)f nT`wAxtlP# 'NF 󭎫jZH$}8U*71"{Rq׎DixJaWRL;qg~*sdgI.!I$a#ۦRkk0CrpE[2 sx[+,Y\r,CYQ +a&fIS(мӓB+ep"g Nɀ#񫔥(괥+C9* 6OTg$9I$cDFq)Ppk%yiFF +2Nr!ܬ Uw=zF+ӓ^Ⱨ8E^Qܜ}k j;[ ʫ8E-o` `\+b8a*xGzSCqT +3`($5wq0dq`r幯'<|ќSީuS Z}:i%ֵu_6އձ78ϗ$1U' "$ѰOL(r=^="EQ,ƛ:dgy9㟕c[|35-;C36qY'vi#,ODFJ*$bp8݊´Hŧ 7s4r*te Xp_FP/ zhT +Yg-S׍gHz{9V=W6P51% +6MEӣH4j#BbI'h +G@a#7#V65 {ctNil]3go8WwPS_ (Z>cݴߜN? +U+2F@>23֣D%ҭdLd l `yn8GZK(~Ԫn \^}$]<a?:o:O*ȷ1$mOh +r#,t[$KUSo*m흹ϚQv[eE!Y7N + dˤJ72E #Hr ua4[=sHxv:<Vn/&m0=vC$A.C,-}\_]ًܴJ1'v@8Xmd.J2f#1`oFoG*0b(aڥX-"iJR4g;ML8tekqcw1I gq`㤪2F9Z6e6:D[x?aEեĝXeV]1yUM\j 7 $QcHP7` r~\UShGT!*(yo~uh@ݭ&dS6L1;88_FQ$I@Y'C($|jjV\$"0e +vɬGN,$3$l X4cE9BO!VL(m&#ֹ 'R6^M66ݎOn1W";FhREF׍IcvꟇ~f̫u B0JJoJ AYe=rOW@.>reFcpO%'R9n +!I_o`%q {1 I# 5oK4,al\gWv~mDz-̟|cfjZO'F*ydeOrȫ6 eVfmE+rs&U.YId$mC g#Qs(T6E.z[2]I5x18-=>r'vU˷T]*"A+)VꨴK=[)"V\=EuV<ח_-Ŕ]m*YYHջ)JP괥+E?݃xO5Z fР!]-8Qg.l;|5pV 0 +ǿ62kgY"cf@'Z6it +vXY$?3VtQ8zm}@RWWy+dU3nui{\m{`rJ`@~U`o X~'2kh!'qv ~Xd?;lan!'Lc۞ka&  cc}8]AI1ܓ5VhEez#B1XR|I%ncqG6maw;w9#-$BՃ*~UZ6}(RI j m#0SbqWR[U<-<&qg5:ZqdLP<3 +<ؓ"E#[}թ}l(vPIf,zxK$cd A8 xju /ZH Ɗ.'Ly +o+Ƕ)UIa+\5;4?%e)JR*Zčc@Bq횽JR)JR)JR)JR)JR)JRnKxevPJ 1^)JR;W)JRR8UR)JR괥+G7ݷV1k5k)$eE12v8!OaZiv_1vwݎz{G~gE6}4A4F㜏'p29Ǟb.NdeӖب.<]x=]2Kf|8'*d\J_a,3vWolG¬m6<Zd[ v$ +K"!a0$y5mtQ3Ǩ㶌cWRxgD(rA_zƓDu2 p8yg6,Id9U>U3h]BY 3U _JG+ rB;AXc#5MOo +__r(_sηg\XK&Åxd-mr0⵿oK 2uv6B9c=.{K?Pϖԅ8\KKPHvxnǞ*ÖAp^5*p5l$PѽJQUpGpi&%sl U̓q \,((MF9*0H{VyQVPd Fl 0?:ƗH}Ri +l`9{\g8cPN79 ~mbLGN?!$e)X:յHYh#I9|sU( u'oNpz1L5[0Fۆ8~lƭogrƀ2#FF?`ӎ|U63t0!B#FYG{<E`:ڱf#3ej;;],]سH $䓰dkkZ=(.y s1F +T6MēbpcA|`AK0@I8rOjmnze mQ +s=WJ$":2/8$0jܟjF01G!@?>xi07Fnq+ +yW.,Dj'h>ǎRYo&a ^T9f:lQNH' !Iu,\FN4idqT2kGı՚6eb (Nx,2+ya?^ᙛnl/dEM2Bِu@V8+۽nC,{Fbsmgcèn!vV 2X0#Ȭ]֒0PrI1dkvEjs-%Yy'eNgqYڤ:~;Q܅PNکXmLȄw {cڱcORDNTuB?D g@޷fPK;2I]gQ\̓BWwal.U#XW8M"v;Up m+\H;#rbHRG1vѹ-CHZ7rW$j [EMHq2!8W#q5fOtZey'cr۝vD7fiW&%\Wǚ~%gvF`豻Hq@=fl!pR2m@d,(K*VPԣ. ]`ZzC2ƍ!U= +?oz繷f%nܐ=88d|=gif{UC++eGp{ziq[s@+I,B Gm*ƪA!8dnWk_uWGpAzZQeY]Gv\۸+>/eFf +YX|Ge O3*$$7{*I^4|+0a\pȱ쥂"m{[:嘶[1Hbp(gjkבEH"%iYX. Ϊm-[,"4 +%&;7$hvRH }j [WD^c$Z"@=}CXj1'K 1TRp l/٥wLU63AU@7*[Or762ʸB>ίeϝ +; H mW&2ƍ#n!AϓX6vC)$:.2=yoakk{2o0Hb{v?:TKͫlp1ajG ֲG!hfWeG%JvWnNy⽗_+,3m! 8ZkַPR7y"FE !HEAr|sYȲt A ؃UҔ괥+I/ݷV@ɯh=y>ƨRv5V T;׊1⨒H 3*p2@=+a*@1ދ@f`WO6J<-0)11p +pGSxAU8UMxxğCM_BJ + -PKg{&1mx s6Qllb{xl沒+D+#m4XH6HU2dLjU$TF3|pNqW,M^ȵfK{gs]>܂nA=W:_Is2,!h,5\@y[Y;s഑% p +{涿}i-!{ _$%3ݟl3*\~ d޹եEkl2-eT8^,z>$.l6孉,TcuIm!.dr@$[T۠mem,- 9ҵZn +|--|wzF'uaj& H +ȑ`<9V~m}a~X(n|cZme ߷n|x[J y߈[C q126p<^\%o']aAEI3cbm38tM]ncempH7&s1ް.`oWtVh$q91m{efOxT|86m{ek}h7c ǜcъmN)revT8۞5GŚRm,qI[qd[M~Y8IX$'єfi=9 n\jچ ixc.NDB߇ћ?bs OH\=XO,Iу)E!<{4 +3 +I MBtxrҨdLw|sڮw ]Y=fA`|AM"ֳrJh%UKғ T/OzQ_",l(>*m#犻Zͮe"nXeWwp#2(aap6g,T}H/-ƯbT?'  zmwi6 Xf)X˸޷ t En1 );q~kQ=2Qr=JHi­ eHGFK$ֵPmBݲ"|㷚ŴY-yxv` +]5Įz$B*ZLϨdol϶*΃ska힠yrβUYwP+m:uCev-aH1@nXc>Jʪ)@괥+EA LkQRB(p2VF7Ԋ=;nR8 |bE:ImDΈXeAk[TVBncp9rs^ +75Q9+^ +=s^g9{W+^ni{+x75VyAX(ihKRRsz+m96jMs"8`dvUc*XT*(P;LVX*9l(>߳wXvjʆ5>^Z2]`Ѹ=괍cPLVD3)Vfr'fYۘLM;"}y֯ÿ^xEEBӠ'j LjNJ=~׋oP0GqZϱ^M;Yy+m ʭ@vOc%.eWe@Dk1I z>lʥ >V8d}ڣdg3^'uQA`=* +.00I+ gہU{V!ݱUw1cIN;T)#J#@0X( ~D(ϾkhϾ9:IϤs& +9 BD?~BUaV4|f(B[Gwc7c=UtsNQ Vq9;T.OQ,):uV`k~ ҥԴl#&̲j˰0FEN0 ?^;DVCA@11튶F4 +Ͼ**=p$@** +bU*47ꢀ1x" QBe^kv2rpaIP؀Gv.8DjO]P"E g3hQfU$v$GA +(P<`yӢ#ǁHAeĀqUҔ(괥+EA[}e^g17L%d pO#VZioghэđZҬm u!eqy9{P:մF6x]Amaϐ3:Wƶ夊ky$նIon S:F2r8 k +^Wz{W5^c&-ws^&U,q@hhF+ڼ4'VCO)dm)V~W^|3է6]FS6~\0q>eҔRs'ӵ}Ri`H$IDpÀ|)JRosmɝ7`vHVvA'yȕaN@I)JR)JV&TM6ά M aNOouUͳhM鰠8-9ɟT+ݘI92mPNcjs\D#L.Yj6Fr@yLns5quTbJ*} +cJ%7e>B:AJ#'%8DZ6JYȖ +[ismJV& ERGWLH q*|˥)JRM.JNb/jʥ)JR)JR4G 02 {fչ#C:ϖc)V s$Jk;oDVPXP(lkcJR괥+AS[lVcZs@x LY6OzT~Us^`^$+1 +c'{x4AXw>3MHPWq^cw8z|ט"9[޼Z4忴dm)QX-'w* ('ԧϞyuqmDW*5R67syEn(㺖(6% Ե4inbEqmy} n0HR9K2UBȬ6O:ùLrZβzj˻d\099p*T"$ejAJTkX6,9'XŽDq`wntnĂAYfpl簬V5"1;#rA$jrZ 0SԎ6Vm<CF'y໅Ujl!I+}}$Ul(sEUc/9 `yC6N4,3[Y''fRz8F>Xγ]}_QPGkօCơ}sς=mSS{ɭ\, K<1Gm3[ܡ7{~\xU%ird~mɵA xj2 eoqӍz(Qdr1ǻ֮bN]K436РO m~uY?W9X3H T 3[Y^\yi$Kx$mPTpFGk]M_|ymqq[bA2\{ՍVmjD=[BțJ9q+o6DT1UF `p1vsݭVHݘM$e^9nJ*#ީZ[\\ԌD=jFl]nRΥ;lrVV_I5z #-0w;7!H5n.&]fih4Lc R=3jֵileG2O UR786uv̳\C $RJ623lU /9XX^A,o#QA2v\vc)JP괥+COݷ#Tw'WFHQ.9+w+ucp"2)J|޳Xw1T|a?<{FNN؜#= +āR3jk]FkQq%9϶v#vIK~FӴxrM^.&6m' `x>)VA>ݧIAyb`$ !ܠn9rlrWpǸ:#B9WI,ZݩRvo˜Ed@a%hISp8S \<˿p#( s͹ P$p>⨂+s07cSIuf 2YJ+xc`Z@JXFI`DîFG? -RNfH\x@V|z/$qU2 <?Nk0ưG8ђBhKfP`IڤԎ\fQIR$Qm; p8H^oIdRv3[&35bMaӭٺQ#齙Vb^Kˊ4{)Ȧ +7'5ܰfgGc0mTY ;T䃌Mn mc^ʪ<T8888#?Jw^LeXQ[6[i;0H6z=ծsw׌G:GpUoU#9;,w*=֗ԎH%w_۴F@=_J^2D<|F1XZl6YOAp; I 4{I-㰩 +TڠԷOKt]-"V.G#p$"+F얳 ʓ4`SpHJF3<=kK]jkGrTYpHǸV}-hn dwmAo °[e +P p]b't8-rAʞAYvq wcmET}NMeV-"xuﺨz${6!bvKsU-+2ngywd}ܟ[OeM6Ϭ%}kݞA9U;HG'A<5KI<5u'L cGz.k9eYQwm! +1 K0asլЍHC +-ϾfͧA iwv`ڲ#P(FX!{n bj+ZHo**Ly3f\_Ai"qwҩQ!y(K 8I\7Q Ey n#cˬ@F2(ۿz{F{樵"ӃߟjMR x>Ǟ|Lw69=Q{Sm5nrF0^X6Nfu7]U6vz+&]b2=AC,]pUMMn۲6sa8;,ax^ŷm.xb;X8DŔw5\3XwZjؼhvJA8*4{fx2/0+NF3e^jxd=0z[ $ǭ編sTlVh̟]ɯi7"In/^ +**`q2Mfm)f:{ɥi%OchX%.y9+:R*&PC oC"N;Ryz+4e[绊+p2@\$}U`SmsPjv[S#m] X +-oWXqVMmxa8Ƿε(]>"t9GC,J8տsL^F +dpjվovbYd#pwZcdfwQ׭u ԴQ#1'яpҰWi'˒6o;VJ8gyk&RIF!K~նNXL6ߓ@N@ +w@I85f\ AQ@ۍwSjr8.EbPHG妣m~ʒ8%6D3g5,sۏļ,5&h9- +|-ݠ"Pdg2N@SEd^֚vߴ̑'^ Bg2YBsN9VK~Y.+sl{`מߍe=괥+EGݷV氵MR-1c.F^TE</^ ]]4r1U`H@ ?[hu$ $wKѶYc31|UdWH bU:m"+=VˋF($VY#ba6-cO5pJ>c-4׎:7RD=($ߞ|VNy@Jrf=peQH۹)uFOҩ7TcVJ6@Wb^9ϓگ}7l,猌ߊ-DH-;wWXW'7w2TnVǀ89>IZm{ԣmБMl f}.A}D]wP ,q60@w~ji61iS̲֓ԪNFlrpUdU8̚T3'gֱ&oDhOb (W?#j"e<,$,vj q5p -ku$c:lAe@%cm:&g?ZHݗBz&}o<~Y8Rm$mPS'`@횮|Ij N$ #j!$"佦xa֞'Æ5`u U8P+wai-%>ʑFv/e5!n KnsX\یcbMg_d ^¨#1*ҳzb1Ēr<Qa&/v#ʴ|(lqm8H#KsGUlÐ#|ܿ>3$`"svxpdyQB_sdF኿r!^lSXd"^"\^(ᮜpm fQfS#L[wnْ}; +$ nPb<x|sY]/lF<>-EU@/`{V"6bzVg2ݟ~x5<{Q=9SYMcd=H4 -X[B.%nLt_I|=j 5xv0)9е  ,ǐ9ʭvP[@O` f dy6AWFX>Ǟ<ڵ:& ,9r\(g9 H'k~#knͰ&Qo.wZ}go5-4 l wIC: ԛzs :]dz3#kXJk2Npp6>@NmQFx1n}]Yiè( qcVUl9v9n+wZ_{Ao::Qw! 8?t1kyb PNEHSV0A2@Qlq-H!6l%tΔ3"^_Wo=Ƴd|3 ˨5F86b}Jeeq/JHPᛁՄߴ/+,gcӲI6%đ&@ #V6޶O$3R|GOjtXM@*x +I\jp}9>qH\B$-4p1EdʐppOn3ɫu7Oc7\5E=N1vӷ_*+Zl]Kov68njnROHevL}q㷊ˆ ^$ +mw;wao m '{ +տKޛpNxۑVtUӬڇ RwwcUS=pH$Fc +ܫ4Ǒ܌Ը|K$ BzxgZ@cծU vVcL#)s;dI[$1`Fю1hhaY$ޤݓq^i2Ša7|mKX(QbOBF۷nrJNF>Uthkqu=}(-fB2FC6#ZObdy`EUq b3xhFis;v=J*bYe`A>5 +ǥ0!Ls|82MV7ae'U=a;9~rPNM%{OaW#d}}5Ȼ0'Xcc$, .H$v,b<*mi<=A|7:EB~H?+*Q< #`g5eF;qV{O8{h"J'2t >9b5I|P=FbS_@{Vt0P]*yS" xpq9NJG`Gdlg8܄>]˝9u+(*A⫺oaM +qבQ$/ nUh`DF a@OڪӠ@8'ڲkO,IdȬ;";}> XdP3fBc+A 3ZMQ: } mot}E6O#=rҼӭa0Grn=6%S +Qv3s +- $}6+؟sVvޯ[ԽI8YpnVg;VmY s"A8>ƭ y'${UЬc nM]Mf%gPb99geRDi:vퟞ+۽H@$Vb(@z˸`",M9[‘թ4 ZB!nJx>N3UỈ@W;@9o®I[I(^ p.nMYLf ǐ0YG F8$U2Q׉_a.KY&p 9ڽҭo<+0 lg;r$|e, mB;z{~ʲ FѕM!wrpo½[|$H%wciɳYb)@괥+COpoTvP|jf$8 +Qmaݿ3Km` 86q31)or?THjHHƪxP# -r'MJFW4kx;eAҒ[) 褎ĀH^)0J)cHkϲA5$X +W<:.2Þ܌xMI6"F^(7Ogtc,_b=9?S-S;nKBBQvj΂T zmgwxz-aFv{XRوC޼X"G/ws sE\#P܅Akp$v;@#W}ܰ*u =LvƥR5 (lh=J= tpuP*Iށr2潎$mU +=-СK8ˬh`qVs E{=Ų\#PĞByHlH*k>ӿǣ%JJĻmlYVi :(p5JR)JR=k줕"`lʒdrҔ)JƸ``vUYh/!fã #*)JR+u+vkA ,BB!;AYT)J $$f Npʰ{֯[ir<+L l- Hϫjj8dt _!b7k};"V*9j)JRO':co"}AIGےw29\r+4.-zQ.sVwyf[v0JțJn²d,[tNWr1BA8ȬmgY"kv-q*6wɽd@^O#5.bUTe +ܒ0xߊͭg: cB H;VNX&JJ~Xl<'T('s;1e`UomExcu%9S[=cMp#+7]ngn~wIpF=9dX]^)B\8nw1hsVʰu@v܅ݱA$r@8ǁX:ҧ-!(221j֗\][^$361lw4QjE4 >`9I. K)UՕl#EuDGZ X+!m?ޢ +olVZncx,v4;]c[lWev*C$Lb6GX< +Ҕ)JEsW~M٭#m;r1RTSy0NN2MU[$Ym2I$j5 ?/P{Ei^'q}#|[(,rBᑉw9=U5E2ŔcS)ѯ.;4SSb +\ͼKd쑺6; j48#h1*n]6Ͻoqgy։5ɷGq9 FTFH튱ei){fFW.6A;ze4%̛ܹSҤ;'UtY.b# h"*cskN"xV6D3zUXѫym?*Om.h7rF@T.­9[JFI)L$T{*wkCk '@X٬m6!"lᘎ['ܗeG:np#9ns\l/,ﺑUd im9~U.~ZRƝ@`!V'8Te)Y#u9d="y:|HBfGFf]$=ajZJB QpJ7G{OTx+`v,vzs-IB0~9ų+L_A~tlN1ϵzg cwWsn?Q^'OwQ7u7cf}x,vWn'mlmv89k>E>ѷwfI#$0.& i7RI2ݙl + +Ǐ%֠-E)]G9.`[= +qi}6mwQP=Q mq^Ci!$,nϴ)@`;HqVt7RmXch爰`G#M%KHてE bbGU#q{|G]RI+8'{VLjtO$AGD;[7#'1U5BX1l3M"Ϩۜc'=ꏋ4^්3h$@hvݡI;|fm,x7m$4- U;>ݢF-;I<ڱQh egh,`wY8vK]BU0"GSF(; W4;}ZND+ rDdgߊQ _e0cÖcc?:4/A Re;PƬłv^*PQ*m,lZ^3HW'hF 4)@괥+AWp1oT=ŌWN"TpGl}2h,nwg;"J" N윑ؓܞ`Yv3 T! HpF;VvF>U@[?bIysq4,.@L.Ί̻I{^ SI)f`w'V6j*EM8>`^㊨߅R(܌{U 70Q=[xD$bN3VQ>QhkKiwD( oCW.#Y#9VUy&5t?v%K{JǖO*+e.M\8duQ~ڥfo`7}97 D.3 w9T;X{iLgpǾF*1,\ {5V]PŘ(SJb8;"20Jny-00Y$E'f&]IǗ2 .Nn{m4$`e(϶I_U1#9T}#!z%7 ۜq{iR0NvT Vu[Yp +!v] +HR@tH.%yM铒2m%!RT H~&J(t`FAUoGwp2ѨڤtP `I{@w 8^CU&YG +մ+UiH7'RA} q<é=R[Y +RA2{ˆ~+Pw; +66u pVNXfYL^0%rKv+kPًl6.U'=6Uj],rpGsFYbY#Bw'T]_Yu=ުG! +ouǾA YZ^3tͫ\Ib_9 jKGvI JE9"'6cί$tdqT4ِىB>kKȭI3 ZwH;=C mޤ"P'''5:d$zq,Zyʀ  i}aQȖ)r EVϵa^j]FYdid倍v1 +8ޤ ƤHg-Q{>nI`V6Z%>Sdq]—,O8զEk6Gwr0';⩶3ަg"wm#Z˧{]irK%[o% $Wǣ+ב S Ui^?6ZԯHs3"(U 9:]$:I#+I>y6-+2-U1+`5Nfh$SHjTӎr<޵W, 9K 7hձߜr>U{I! Kܲ8b3lWl^-JmaIZD3[ .[4NgRa<>Gs?Zhqhrʠn-{Ic}\$KhX +%}\5ҤK߆ePNDnc~UU6z&,(so.<9gE|/n*Li,SIU[a瑌ްeAw'Gg鈷м)0$Mm9?*G_hBTOG{6#UoMiIsY>H9G4Tx#W틤`>qrķ:崑$@`EcnõH#"/BmpO'Ľ)e@#bKu }Bg֯c/BqHyǩJj'𽍻i׎aBq~,gr>FבE'")ojP2zF|ڶu;7,@'Q[S0Oրp8OuڼC:,@2nX"+$hrRCH +y+/SXtyydcշ sT7ԦԥEiE`lJMFGb~y.y栍Ho$neETcϧ%AƩawXp̦,9 <Ԣ"Iʍ;Gni\F؍seaڪ8N9k-01 j)q o$k*GR]ql\셟t`pjXcf?JY*I8zM$,P+vF#8v;O9]ksԦ5`lm'pMf|%[u5;QG$V>x4C$7p$r<4'١ +6H*c |Ueo\K`iF.@ ptgź}ONA i +Iʂ;yuWLtbܲHCðP9pA~gK-5\O )';իu[1۹[ȋ`([$*tFK[{E1MM q)  QCvW& +ÆS=Z{m^;eak6tx?m/2fLfHFS(7hYwFfV=2k^7E`)PT3Hςdit{b[E$Ϝ*ĿK:K2Z%o-kSCeie@ tWV ǃ{դ1j:XJ& f89ȥXd튍| ЃK3(W8Ҭze$5BF{g|⵫%ΗAC.1o$ +TzO$'Rie Y0OqndE`1 m>R8#.YpF<#Oj\{"{aTS3V-kMGYxá쾤$=eo'Vlsd +ܜg{KVT" +.Uby5;IF}WU)JR)JR괥+EP?_ա޼5eYJDѭc'lKWo{ww4SH M`6 9\jhGs5I ywgxNJHWqXtd,Cwk&-yw3 ; qI>ڒ"‡#vaW4nZ7b'vcp'qY#P ~UcQӡԣԃNA> ܱ}s>[n338rK}{wrN>r8>DQ4SpYXpHa#*`(w`gtb2DKoO&;};UWES nGxŐGѴ{G'Ht +yMQ$A3Rυ#|xl6(Q$f/tmAʇp܎>=!RG^>i%1%T|^O!rN 3c7MLm!3ެšYC2,@Hb$OpNHg:uF cͼ{7;I >kO4x-9H +s튽6gpI${2]{`Qh5&%l}IxQ9am0Aci9Uh,YTA#*y(>'}n26qps^hr21GxˁFgѭ.`[gLKF2a`=֭ϠYt:sI> ~g&5Y)oyݸ7Qc_%8=EVm6L`A$}TX09ao võ"rрϔcܩGk&MO KYGlv1$W{eC:+wV~u *4}$0 ͐1wMxf/F1n*?EҚFa?''eO\G"VRH VmlXs(7HUN~UJ|=`YGFBK,A$I$3޵iycU)%dp|m{kG3"1v8_C9${ +Abls\EJﴔ##h%eMՐ`T3TiKemVqs=8dae=LNUkڥ  <:ׁ@yA U26/at]u1#GG{Uij*JC +=C sz5Px9<׬kxp{U (bʼkS[gc+p;A'Vf܌׭<{\+)JR)JR)JR)JR)JR1^Ҕ)JR)JR)JR)JR)JR)JR괥+Ea"?3.E[yf$wgi nT\7y$uN?ϫAq >G~u+/$-*1~I688'PgjQM)NFSэ01GocQQGo-~U}RC mDW&Q\$&aQ2;dsHUQ1űۛ1޷W ׄQ^osL}>wn'Չ_i]Jhd$.p[32Em5;{h.dIOX!bX` ]:%VxRӪn@ݑ#{z̪dtR+, yeL$ WP7fG?uCw'@iu=AџlVNKr had\q]EtI :plp}*  > m,HU|igp$gh>-q۰{qqwN׃ +N%1P<:+NԲ)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)J괥+Ego#5zFkSmRVl3zx Wzy[J+d:HRFd{O5s޽o'֪#m1Uv v81 +x$׍+zNҠd{VS*pN 8'ZQ'2 OV<7,+eY|ܩjsUT3Z}nVq呐A }pkӿDZ%J{JR)JR)JR)JR)JR'h@?ʼnV-Ņv@X,};5=r4apP1'Isc?ΪJR)JR)JR)JR)JR)JR)JR괥+E`DݰP}k[}%0HϱXM7SβT 2A?WetӧLE( Is'ȶD(* z |YYi#e*bcpvd1;Յ4(ܿ!]isLQЕ wc WqYJ0 _A޼,%-VFV[ArclV|jBDiI9aΟqcO|UJF~y9855QqXS4цz~⻊=)B$gpx`WԹ?xIK+*dgGTנhEf¾9zҔ)JR)JR+]̶V3E"7rYKI#0Oj>N-տTMK wOւI帜JHѯbr\v$M[{m X5Ӎ'FN7.I^v 1Xȉ.j <",f'"GLc݆u`UGUn.-uݲs[5Unft4ssj֗sRW%1-@AVd;97@$ {hu4䵺]F$̸݆ }sM#-5-dl(~dm. fK[ܒ. *Vs;18f^GȎ@r+R9M:ln:`UW|=d2"Q쨀{+^u-F+F5RT.p!T[^{aNfH0 g5{ۗ.eiR Kx[ep'm"̜08y:KQx *ی@Gv.5MZ}"KH'r[$ .OcOdӘs:U;rn2W݅EU-2awWmq>y&W'zqVu6hdwf!W5oS#]FT{ 55m*H028}5+3(MTN=ׇP:gY#YO쐌E%G}:]]l쬧IL@ gC|֎T09nF01XG6x8AY&J>5M̪\9Q&K]v3~Wq8/VB[HȒG6<-Q8jL"E6tpF{23FY71'Lsʲ.I-bn#nAAc}XiSY<ֻe)B` +q^\" p}QURe +/l`ڶE o\x]/9 ɂQ⤰όr*ԟ Jʖ݇!N|9+p0  "5z)>Ҕ)JR)JR*;\Ic,Pr%a@ǟ DUVmf̌;~+#+N/$u"Uʭ͠9n+yfƄ1b +=ֻw-]>jke{e}9wc ]94 &l}*n?˲ӡI${6;=L{k,@3]$[f&1 eUF&M:{ d $V>kQA%RV[{W[c|b麥W0 %]-If2HS< {TDs(] _ywMuaI&sޢ[OYӮt,\I*ϱB8 `qTͤ%ͽȯ2E$RGGmS +1[GE8h-wocI>qkѥKwuoq$$2y#ndm0*񬯈4uh +PI}*PE2o&W‚>gX=V;2tYdcihݘ{V'wi%;FX 8e2#"ٿKz>ƪn}[0{+OXO x lgb0G|vewr1Ngn[ j{RT^Yl5X{"ey]ǵ{'rp1!h<`H%~+[,0߼0G ƪ!*\2syw%%]XLBm5^i1{m̍ .wfDByIuk "`PXonqXޓ=0R1yZԴZ)xrĬ6pF?[đ*,) +0p7gVyE-m-_TVRFKd Sv8U)JR)JR)JR괥+Cwom?[gug 8ea#:uG4R <<< +K om&Po*%m|?:} +++(B0YYhLd9-XLA8.sP^q1ea(6unwxxx;o`op0'?w8m x֨!PaTx~uZ*_5GWFl Nj֩cur; 6х\Wi5m՝~]=ņꠕq0Xx̚X& #C#ۋlQ2|kku 5+7Oho;|.kK,:`,I'Pˀ0jķ֓d]b֡F<}j͆XIJ쇁e`|\-WAnvonkA QC3qܬ4KP8w0 +2gWVm6l\DUJRey4.1* qۜfRjO\wo"ڻ+3gI=>M^)JR)JR)JR괥+Coo?[go=q@AEzAT4^㌞OU{z^EVEY6E e# DKt<jwT|xTTʤd{{H5V̌XNQsQerm0dP@>W 1ᇫFUI=e8V|[݅n>b1Vְu4vF&PHi2FsTnLFwH9 +y r\ʒ[p|wWeKe}m8e1ߵz2c;2Jqr u褷E. gWRx*n >KܚU¯߹I4Lq򭌺1I4`34(gMUwAi'dU`ϐҮ^k˷$yWSZ[, @#<սS Ҫ̷9 qߓYߦWHLgmnpNr+صX8rY  'g#Vc&Xf"'eqny.2?jܚ:F'UH ='r@=1Xhm `6^7{bSNi_4(n$ѧNq+}K,\t3{K' Ȣ[$lWBݻyks <Ϳ=*Vu6?iƥO7?b/mgMb(Cb<gR.,i#2/0YoQ57 (k؄7ӚbPe.lIa-֦44I01I9k/Mxx0F'i`+Z:]2LN cZ C&`x̋eqBO> {/ !`U+[۸9;Vb1xGLxT@ qޙ;U3 v~\y-TpÀWϵ{6iE#Le !Tdqϊ~u.$tσwʫUx`sq^6nVg +"ۼN܌U6ocP0AokiV6YY*6},O`XYv f 1ߵdϩ[nٍ5gXMX=SO=jC[pa0Ǥ'?f5qQl{sTϩƓ<(bFOg{@\3\p/}?B)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JP괥+Gwkk*֗& {v8VU$'6"plU^7WW+*[NtVf|=kLجy:2 "ǨH0 g?8${I#3F%H a@d闑.e,xlV5SSIs51 apDmV#4y`$pxmjLXm95i}r0 $V'% Zies]'rwccjz vA<Wq]NJzF8"1䏼l-Ǐ5] F==Vs²*`'Ӝjn1s Mƌfe'[{՗?5zmr3XwZ_RRg`BMȕrX:܎5چe$ u L#H$81ksJRl.`hvJ衈;vqeR)XmԷ%m69 9R)JRZ;3QL;®ҔJ66dpê*TMU\[Pb @VҔj$%l%@Ay9)JRj>$ծ4X#4:$#d%p\cb?tYt)JRzޫ&mF%e20PÃsݥܖ/m5ny(%êcOn[ZΝkoq$p.Ƹ$'-й.h.$:\`}|FjsqJ"nDNvqSm?NyBu-*.onA987w EU\ryc|bĦYI%#%In;:jH7>JuU> MrndG JG +.kkqZIr/N `( d v{֪W 44Z@) Q_Wu`[H\TiupGdXVYYKq!Ji.1xj[B`QYp +a%ť]"duBH5Ysm, ̽5"@ ɬMm' I,#Izʫ0(15z.t:OHqtLۢ!v;S. +<Յ~ mć,T3H>svgYΛbK%8BM0FJs[52:$Aps! L2s`*CQbIJcq FzMr2F;"VZAE669HYpFrOȼdmD-Ny('>VṮeY6B4d7Sx?:mNM"[3 oGTR~@Mh-$Cgo7נӏj_4ܫGePGi771_ռY W( Yz@9;뚭͙Ha#vPX6ڪ;Oʬi[麑EO:b=fjo&p|Fn-tMF>ɋK{8ZѥZK;k(d$#aϾjQWKI@ wA!fe`x;w'5r[ɬU(."점Kwm$p9S{"f>XDH#x'ld/!+Od$tkieU[zQc?gCq-GX}#VN>1EpNykz,n좺i-E S9#Zx59,t 㹓3X:u9uMo$J/S #2/w\2oY&;*+\tD3$+c* ;ꔥ(괥+Ekiڂ5jPPd#" ,y5٭`ky|JFWp|U\ RӦvF*#^ =DvPqn޼7(u94i#{O?*+r*쳣D!1 v_Z׍I#׻VyZF $!?pg?"1;nm۰A#?ZialU2\=-R܏d{S`۷ Kgʯ ,Wp'ʽF;8VNA|Vi<6sqe2!+O9FM]*(XH$g{ovj `1NcG 2@p#*c=1^y1Y +H϶F~NN+[]bm&=Q+psyc^ ~d +dƵViz&cvYsǐ7 V {f?th5oz*DO< +KfVoqQl17O +sUTJ꽑 +޲ M#uBWrmp)PG#v6Z WWWBQnE<^$=reA1Y$1b[$hs( zLUQ|2Ir\.ЪZ Dx!@cIϽUkf$M=W?w$1*{y\4{eSI$yr!K2gv3>~69K+FSrMڱ A-@Io2n,${`Up<]pߪ[uF*N[$g9= 3JH*)]~*;KmOV}F.DVd$}" &gFG)A`7'IC III_{F:ՌI ]B6x bCk# RW[G n%X`TdތT`8) 88|7qEkxӝgfhČ+nS@%ƥ@!nNяon+_krZJJ~A >cfOdhjo֪K{m qLRg!YA ?˲{p,Gs=crpRm䶝w$A>nބxY!ܣ]b#dU=ozM]IvgCX[$@pbw mW%Ќ32R& HsUQB#+u*UN@ +T`~yɬit˻[G(ʺlf;=.r[ h%yKtdbc$ T=դ5ʪJё08ujemխdmƮWr, `Zh'.!lXE`I$=÷·7*.?H+YY{gb0a20u8=ė@{;y'꺧Iǥ@y.y"}5,238Uz}D{IV)dDYwG96gk 0n g[myF$a +Z?@NBK\0b ǫo2}SMCF.V!weP,3YʲGBU) {ǸQfY~#< #}{8:ͻc-ܛĨYp{qV÷H]^B0,R@|U> 7[W%7ۻ7Uhiebh`N<8Ek9S*}T,hp)= +.54#xq*楡OidSSER=N@ּ:-/?6;+!R >UK#>4T_|(}KJ9-Ӑ 0W0jզtj6".waS''9?!T,?YMUeIH($mA qkg4Btdn̤ppF5OlN7gхآ0$[zn| Fq[F%rIxUR괥+Ekk*kEthl6Ǒ~A4/bQ*qEX@ɵG6ǜXe4r$XY;&A X'p䜃 %ͥ\7pT3?:Îx4FPe"b۾ +]ݾD6bWUX +_2c?R/V 0%VxEz|W~l2\Q{?L%625 ~ONj6X1>2zr<ڮ/ LmK邁M^"ԤK;[*@;Hgiͼ+\J'eQ. {ikz|:'I/<',aӀȔR$%{ڲm6̃ZO*A#nW0^eUHWߵYxAh M̝Rcw|GVDP.Ìgx o2^\`:{VnçF#*8M''`FytYyF ¨ *{iKo-ܳUp}*ޏm&}%UBlc5s.Ƀm'n6hU"#1S8 ²GDuJlp'kx8?b4XƢ=d}ÍC;±$Y]RC,mX{xO% ]Y.=#\aw'^_H:7h+*V킸#>sR;IhEU#3}XL&:x >fqzE#xٷg N>&]G da&8Ϥ.2>KĖc{JWi^fyL״)JRHXdH<:?TkR)JRyV2H8T,cjU^niJR+f)JRy {^S5)JRy)JR)@괥+Cxͼ.9⩒B(e#T=VE;GPqןbY5`n>ᲃPěFszKao3xP$$},üjX{{h +23ϽRlmV3U_cF7~t 0D1rBQ~)=XFCcYuLH_o7qۚ HmwtDrv\spܑԍX ϊ[Ciasǹ^EiMc@rO + ^(ĭ2`7698SF$(sTʱ s݂O@_cL=#p4co?7~}彬6ƨ ڡr}g#I[LTaonb7 +p9^ >Y"F0/R0N8uHcGs+jf`d'E$,D7 +!v]x ҡxã!u8>t/Vu.ԱauU/dOH@ m2@ c8޽ XxFR },{N{uyXB0UPYR*n(bH;W MA-4 :Q݃y[= Q+e OX*`kaJT) mr4J3 10vj]y{}I @PO*͎ 2 @fI#hH A\\66` α.&BwD r Zm%}\a+*rY^j=zAVe,H=;opvef$T^ +AyRXFDwm67 dgYr8E$+Mjvv:J g4BA;pdvR4jvMg#!ߎVΣ/-IB +] TF<zvHT<#v瓎3[=J "tNԂ GcEΪpQ$*'qU\3[:}wW`HHTd,\ *=G3kֶl!$#g|OqH(D8!_b 61aVX85\G@yDvwWz坐'P@A <[]J8*<`k]f94QK8RvKI8NJ^떚tA;iwl%[i Wp]N x2pY~'eXݐɜtV}^F%M9PH<0r+}^&0zATBW8|gk_ MoV;Y `wk{a[M"E<{w#F7;\V6eo;N˴Kxޫtǎ;(dK[w4֭ݢB"Lr#E&f1`h5m w$I;l8>+2 Kf1b eFdw>;)9d*dP23 ǑG ZNSb1s;_6 8̴Y'XA ;_)J괥+Gb-gbrk=6(C1ާ5`KK\I9cXwh'Y܁$H4iv*2spOqU)kƙPǂ@5Pmm%0uQ+!ǏVՇ&oՀD0ݕ,9n{ s??:) L:XB1Isol~5vIP!%nn}9Ϝw@3Gqk!flP6v c=[ vدk.x Fwqۊڬ=q^?:m@jĬ ;T| -i6U|*Bs}j|hez)7؋wiuL= 45}*iQ˫"`t\:`d짌Z%B"n< bkQζx`̤wzT}Ed ]H(3pݕGĹ$E AxaZ,)EPX/-qڅD(WɇdVq$}p>x7÷lGX}f9X% +;p{׊T ,gn{0I?䥆}T6iٶ ˠml) K`u2Gy'>nWv~m5os|Kp?\gBY _*IQmB$lsۨ; u\8#[58#͉:8>`}*9|I.ssӉ6O& UNÞ95ѯ!I`M`6JGʵ +ǦhKs6B+\ɐ g`@\AuJ28##jj$#l䕝U0ݏ`H$h rCS$~mA;sd]o4a. f r1]fX n t;c>R te]X{"qC~JKO$?8A{}cY1y#x!H#{x1ް.ay+5KM$"E!w MwL^o4ml源*%Ui(6=[h-罷DF XG #վwXԳNɨEi, !Eȫ6"֜Tڌ|yr,H A Qw73! +/bHv.{GW2^`2} ޱe^z֒n#?lս>M{ Ci"\G@VQ9M+eyڤI2,oj'r<$x_[i"ސG4Gb͜/vg*G|ֽhwH", r5K%2 gq.F]? |:47P_HLWH]ˬd`Xhr8ˆYyn2G8]݉mCn">b@X%YB\$U TMyj5=q#x7ж>r+?ySc<9ǵGoEsB9 dx]9U @  7iZbiX*MT̀vr3kT $Q$2)€'X66k-/NaFGrGr 7 wI(uCg\9`f<|VXխ[YUb$d:zfKxdvs<8mw qBz-E[d!ʺFf8#ׯg͠]!iH}N*>9 +kyie.B4l\9$Ȫo7W7 bx&Uv85dEU0>UҔ괥+Ewkk%SVYqZ/`[%.v<2?,v*&@uMȧ<XFR%¸lwsX &n,2ޫlI2%\.Jv{ mI]#Uώ/dEm&Ng}sº 6@={10c5س0,VǸ6tᤚ]- Ğ8 T8% +`*k`Չ*+Lt>LBa $`1y {c(T,!QFNNk׉$V)vDHQѡG T#U2+ȡ  +cU$qs@(?*l_aVO)wlPBd0烑-.㼺$DXR~mXVr=&2=NJkX]Ć4,1* qۜfdWXd8 ++"T ;]4ݿh݌g8WGwc7~} +{^`RZ9"<#\IHyb8QYgC"*( +0W^؏En;S=]"HB`*#$Or^q^tЌmߕ{g81@H#tVA#=E`=#!PT pGv"NN>Ud5n¼0mP +I +PJ ljƤϾ9p3j]v=r93Z'uK/f* *? +)9m4#-8[c&0VEFX0sds"p0^MڨFb NMFc& T1r?[t"Udxzk~ѻ9Ƕ}dž9 +U%NA >UbxE*=74P*2#Wmn$Q*"v괥+Eom{}Pc>TMo”)?mPֱ4b"ov<$m揦)AtZdzl6ӏlU[\dy#{\ssg4hh%@oʩJ5BAU6,-㕧H;V`9 vMZ)I!FSHn0˷zaOb *y} +5CiY(K-rtE]KtTg>ˋ(oWr:"bRU|{8Y'VI!†0r>kҭc +gr> TUaOM/l ]2?* [H(/[34Jw- W##j춑zI*m1s(Q'x/lqXA BV1kZ]F jmVcc~8!`E +Uaew@Ys8#takϽ~0j2Ćk׭[lnl óqTjUQ(rbjv5x3-X^Ҵz=In:"eژC6I#VXRQ$ @$c#<┥bXni,})JfD^y_eҔ+POyv.vFoM^GjR+UE7lKGGfRdMndqyލJ D RrF 5JRIQdV7f]3fJAGd<+Yʰw8 + 'd7 >}SՌ + P6w5JRZ'Vڈ2Op״a˩,WQ[&Dv1.<>Gp߳~8=]]FyQ78)_.k4I  8<گh㕑 ~>3[*R)JU.N'onp'dA8R>I4nЕddp#F1;)X̖vM}B[f;WU U*&$ +NH 3Yug~n希$}u¾Fw!#eҔ)JR괥+Gh,W-?mZoq!?{\o=&Jo5$I 2u"U$Bdz'޼nD(sho sm,duHVrK\N-V"4 X.2s0F{ +ozZ+.4Qmau,a<9<"UgXD #m;0k߀ "-]dO${u$d"#\x#+?Gg; +f +=*TOIIfRK=8Q@,TVgڰuQ^ixΨ`d 4LIVWPH$7z{ާMVK&s +UWqg^\[k6<7E cT ks7̷2" 1pOZܩt8T@w]4&m5oI%t;7pWc7Or+F2=O[?kX:trʯEc 7g/Qt[ -$L?Vb'֤a%"H"\ vaFs=2b?o"jj:Ŋ,Q s +Av(?*Fwg7J^RʱDs/g7Ďpƽ6nyGq8۽uFKV"ƯHA}p>^Q +eq3K舡8IA[G,Aqo322eyW*wY7֭r㶑@T 򡶟O{Ԡ|<7wqqg.X$ٺkFą+۷حƥu`ik ;a]P[! (;V[Ok&fI",9|3ise!W+X:RÐ}AA mQk9 q4(;D8bqVy'mb!‚H 9^}>s}%i!}3pD.o cZji[J1==,cÓ]OvN7MM "$71YAӧ۸Ɯv$*3X:]M܉>jlZMzU{&fĐ[ITFm[~=L[VMFp-մXFdh[r+bu4p^3˷8#V mcJ1yJP괥+Gi#ymd~[7eSF*kȤ*>g' ř{Vk"a&d;r{EXM̚#9 *+ꃓѮ̗H .A)a^kl{ט +5HAs^漦hiI漡׆kiSu( 7sL^s xzhü#TviZ pn\HNX$1[I٭=V`ds|=sun,f mV^&tRB᱂hq5ʹE]^2e*}>*Վwg{wxnU +!Hgo'Wtm#nfD 68.$1dZsH%[uf0<O@yo#+w(‚U +Lq @K=k֝[H20;>Q9όVⴓh3A-N]œ2;gbT$G䳺{Di"D3F1A Vu_n+O$;G%YUWpQۍOOѦEybhgn&8֒on nVH^}L[9>*\K4Nh(n)029>]jofStps xRhJbIe;w>;qV .{y[2r5p} +w!I#( 8bk"1Wf7^VK3jQK$M0Ș'%Dݰ|~4o5ʼQ! MQq2J2:3g`pAqW~$Э~Uds$g,{cY:i5,l>ca<]Gy0 +T$[X9j? M@vt}[3c~3?'3{.*@d aǚ3\Kw kI$|IouI,UeR 8#hxy]^epƭjY"$;24m>ɪѦ]NKx=1Ł[Xb/, k+;Ksۺ6iI*N܎;soDi,iG"4@l%YN\35y%K:"&YҌIv/s2y5ڴ\:RP=׺RC4#!Fr <իM!MtOF51ݎğYϵj~cE*Dn,' aFqO92C7l +#mPd8yy|9%C0nm ԦUKa #*${i*+KDD/C)v 5!gY~FF. A"w_c]1ڬIeghPm#B>k"C-a[FF +'pmi65ĖRĆGGBd#Ԇ^ m4]=Ձ65I$a% @H˞G(үG30=EǓs9T:FFc,2xnɬjh*p8Fᵁ.+)Sfəe1V-/0vnC!ىu#qqm*w7HJ(,7l8k0weq[4re~T6 #'G /eFX%"F +$(⼃FԮDơ G+ տX~Ueݬm1,F9ҶPiBvC Ļh +3dI xfβ4l"![i`X@#?h~1i\LDQەf +}P7H$"F +︟ +8>+} N{"FsmVm2!id$^v3Gp-epV q:8-BpA #>Gz-Ha"aKS*=;W^e :QaʨsoA#Р0#؂L![,ni(vQB/;V-7UΜn|?KDėwe1G-L@6H>8^Y%t}D"0 *RWksnKymI8>1Ⱝ,51*njBɁ#N'۵YЮtx,gTvYr0##UuK{W(Ljw[R괥+Ekd b42-CnlmsTYiimbF60`;Ėrk0T0oiaUOFYniPOJ +p~TQ ªLRZ"4w*3W 5IUSf9cUTs^MzP%߃dj)JRy^Ҕ)^f)^f景iJR)JR^ҕkR3^Ҕ)JRi'rDpFBpNO y?.Oʬǩ?"=" ˄@S0zȮ Utpl+$ߎ}ߊV縎 p?ixuX$[8hd,8$H83f +<i, 3x$ + +Wcm4^{P +^cU?#^* +²Kn" +Qr' ^{UG¼rxk(+Cu վ Ey]L%Wnܒ9+isEl;U 55 Y%خ$RP6+a +V4nI`3ȋ YfH}kb#fFX ;X5f +2{bpKg;&7+!X]Ucܟ+GQf#s 7 8Z<`.af9C3G׊ȸXwpʢ`Ǿ Z]rH2 QU +pĮ26{+Yl,$nW$Yc ,Id5Qw$8ArHʀ;#vU +*:maς<׶3ubz*O|dgZq;@gi8[]WVѡE0ϓŮZ&YLFE~3,'*ԿA,I#+…Y\qPqWu-`nB葮ecrpZRʰ쥔:3W,d--ۓ rq~u{ZHP;Kc;wcVukޮ>#x8"o/"~OyV7=K @Jqgzo@ ,z%V 6нp{Ul: ʬvp,<ո$p )-BFOyVd-j @i,wm\2qUi[Y7m6 y~!fP5iC=sU_j{.JGI Vq +[ƥ @3:qmt'U! - `=>#fhtp2:;VPXM(@ue(J+G5b=~I<crE!@G#hZ]hHv#;ssڲhd7I'MktݶگqU_kȱmy$e-ӉwPpX0>f|Oako z2U+ax9 ^XTfB= ]g n8d؎tP@Yxρ5dx1i6!qAlvw8oƍu2[#`|VVcOWr괥+I`ͬgg~4E/FdWQF Zol.R-M"m+E4YQIe*{QkYExݕa022H^sOʲm/u4"I@HI8Y}{o:3,!) 6H H6]sIV>yaygf=2,;Shiԯ9k%5}b&1kI/4HYUHQ8 lQymoa|Fc }8ppA XG#϶+e\L+yiv5H‡DP`XI#RWSoZf@,*b||vYVCo1F%†Gv(v\dZ˄{,M9~A +~p +5ol-ۍ1R3<g'KmϧU.Ԣa$yn`:ri +{ջK0!Νx>ZBSҍ/]{[@njǐsVڮ5˨FaX}ג8HUr=U5 VY-Uե}5!XF:F ]A:$73.B@g'qiVcԣF\+F +82!' +0y)~,t4KXG}/U~IF0<ڳx #K~>x8kgͱ!PAd[ 5nm/)"9W9zwZ9b|_unHf~}Ć]waWg~&S"tٔ˜ѐ1r=+B/*Yȩ#bx0 ;$${a3W/>[{wY%D!Ʌ#9q|c5.m"d .D`\\${ՀRԵmeS#Xƥ\pe^ؑjƱE{U%J~n8,ɧwD#:̌zj{ k#LCk1z,fZ0hZԎFr<,zYsvk&Xjt$Wa"mRcRMI$ڂZ<-5<:}Mʹ`1ߑWu+!u !n<>x8> )5+k!V@~7VW1K4c'obULoǤgZص}@4=DCVYT5k{+YzҤ{. 3ް~ ҬTw )j~%?R39->cDq?WV8moњ[K B" +385^i:n~q >ޝ?!R+;T!aQB~?>j?y:6Y-ZGՑ]HU#-9" _[iڄ!g`db$X^:JL%bR@I hl.h"!3`!Ѧ22YI,?9+i]DpYb$gM+_.ˏ$Q<Eӎ}σ^j|/$)"+K HR;/{>5hrHvYP lcح5K̏/Z[}0RYVLQ۸ g? YG8#0F=>!1h{]F/,ppǏYRE}j/$Yx4JwHʷ8bk0F. #יaO9 :6b*ΛǥjqI욌e#$qu@'5f{.-LG#YڙKJPߜZ^#|%x6F=l[3!GqS9Vhcd`<{JR괥+IXe?ջoUb_X;)B2Jsڬ4ra (0ISm9YL}qPÝ*E#"!vQ*|nItNL&˜I#~ui2޺}=n;}J߱Aܮsw}1:HݬvBbvd3kLL8njYyIJe73ʵ?Mk$o-Ҭ{rhd0OSH$XF61 gd.͎1[GjHV a7-zA8珥Uk8eeDx\Bp Uaf +0 sUiq 00<`XwӒHg纟osI$Lg4lHa{cWmVZV vUɐi +a߃j/Zx*#g"hG2HbU?#+jWvkHK@*p7x'ϚC.IrkEy wi-%BȤ >*mgԣb`S:lX $# =;UC}.O'n+!-$e X2țKE9[$& ʔ!Hcj݆wW7bwV(TzJQy DW>@#VOභSI=1|{k;2JH9jЃZg6 ns~sǾ8m"cP`v-"[tVgȤGpdEqp0jsE1G!Uե$29,#qF|U"%fp 2~y57 +H dqUI rGUe#׋o*^JH C +4UQ@vBDU䀠}^9393Zωj@pHdr[b+02|O>W٢;!H|Ͻ{,λdEa#5ꢠ +~ISb;h&w"NTGo%b =RY$${NG|kՍS(qTpb*Ϊʆ@89*cn1xma,hUP2 +@ mZK="5tvf)ݴ;{cY݄C,OXI vW^,㏨V5ȋB9<5mfQI93nhGܨ jCөo7v3Au>ܻ6'&x#"GvnAg*;(".R$S!ː }p9j`e謾?#^)!(?P 1UI ک{XeuBX,>ŒwxF0ss8L@ Al"wn¨Q|ުx# A=ތam\9TmL9R g'vp~FظڪRȯ?Q,j %p3^jP"F݂@ɭf߇Fdz'=qVXr7(lj79eSOA˵X{UN=#{W$Õl ƍ nHexùQ0@x)@괥+GohUH; ʫ[)ePIyvWU%geyiuK4.eXv#VG8<ש3[;n+(d@ v樒A3cǰVaImNjM?Z}n96 + w#UصHn% +!qPVY +s? +[hf +@9 W>k¡νXkWcѠD̽HF HRv O˚ҵ`:zR`Q08$wfR[F-? z$KK8'eR:Mc[8a{REHf O*7 =>+2+Q/hPTv]܌ +15æz]2DTeҔ)V&ݰW)JeWfPFFF{dxWJV l_|##`l^7s*/R]MYLrNӆ|mk`j[7tVTw)I\Նi%D,c,n[GjGޡUR(괥+I`ƟձSV;'M `` +#9Vp~ʮk7R"r øP@]Ԧ(cn ȫ3Q$g +c +?W{/-0m68EYYn4^GF0,Ǟy1^XNcEVUNo|e]e R8cpe57-1.#>8Ϛ'iVP2\h'չeʱY\\qK2WP@?[7LpO#8-,04̒|ֿEf4[;c4#'vB<~5}Y// O|P='56lF'cI&Ӣ8-pW3Ǐ=jvTdAU*Z!&'''QӿIc< +(UϫrH$UWڭ_Xj#gˡ,X0stuG7%0,mJk:Okeܴr2#Hss{x \i6S%QarY^50 v<X:K dH$&OJ3d1Ym$%p8eݕ’FZo-0X +w 0wc:Μn$/Pwa6} +qیg-~FFA5RKFy SwjZnFaI`Xm{}\hidU!B2H({c8ְ"]ODz@<'Lwd[}+z]5Z>)b? +k2It\9 En +'9[VC4AH Gxo|lv$}^*s'c+ߪ#E&hXA cZ>T{qxz)ӹz~蘅SH{bȰ;vU$ɨ/um5at0ٴ,$rqXW,,+e+mBGzkZޗ{c٧!*w%=[#Υϥv"`) qH?*OO[=GD]x9'*7Oǒ7 r qsk˿7܋i"m\cTJ~t;dY36F퓒9sUT^$3FcF$\+FAfY>$=)cK\#?i-uY1+(A<|TA2Ofcpe2 w!`HubҤ`䜃zUu)D--Ʊ5è]?sy<ʽ[2?,q.$0[z7A&p}<9ڶE[X XLyfҔ괥+K[mOoj*`Ks8pqXq[qIn. +C ]uoAY[{sܓʵ\h-$X6r;+/SF);Z9RD=؊.%2 7O+S%..K/QM`bn<0 Jl85_Ij ) ݀Wca䳚y )g.;_nx8~F67_l0N{Vlm̗EI2A,Ld08՘kؚ飚53ܬbw)0\]}̳̂8[s8ے3[] +H쁑 ݄08ay%7oHZ8n9bOzhV7]lC} Ouc%pd8\:}>{[dRy2 嶶5~r_R^Ҵ:4mu rZbFr1ܩg=\mb*ζQS9ǵ^Z`ʨ.v$hIUI$S^$Ve[ܤ;$r2umQӚ7duFm젉TH⫾+ۛ ᭞Gaxq9zmޑ5Y9tvM7`BCskmmƫ#lzr|;jiw3ζb'{ ˞@k_ Wr\4!̍*R|g[$QFY8G\ۘzmqb"mc1X.DcR=%qV},ߤ. h%< fq4p!r#a؅.NszIԾhevT,bsh4eCOYl+Y:4Y\cX6ۈ(8#]qo;IۇKv 'wW5m)% =}Q>q{}L4l̪dܳ*H>u^ݼ-7vTU~~"ud853rb`ʠ.;9⼾Үnu+Kx@)Rq mKԮKFVhEOPa ۝®|5\hQ% +a$MbhWVW kG [9;<_Goyd$t󖜖7Th]ŝXKE<s mتW-xfw:@@)SoZM +21,&VP``0kmZs/SQ}P4;6h)lWY"W۱+kq\ )) mݸV0BwϜwKԮ&`(Jw1V[Xܜld-/Vi'&T+.rۀlǎ/;X a/X" fu f@xضH` q>*έp&#,i00h$ym @J P*Y2ͷi4Kۙ2&&–ܥ&9 _IvYUHm-Adq&w[z#H*FMB,.rӴ;0UA}@F0@gӾ4]5F\s#I`8#j328Gg602YUO]ajVv/q4!̛TNxnjw->tiƬ7t +*dgqux{*f*2N>jV;@ZiLڦRwUCL^ұ`qg\7ݮoRI0$9#Qi7ƝsnF\._`@>}yi7X0+[Γ6K,TwiOwAp#S$ ZfuD4% N0+5 Ydԓ +n}W?_˥Y a/nn5 b6 dgV=؞&+2"0!T0Aw EwXG$A݋rA\9f[fm6ϥVx` ZnӦ%!Eswzi:qL.dBKɷ˄Ϝ:^}kuu+BRYT>؛x?>*^\[;A4S2n Nn>UcBN.Y2#GܡaX¡7 ٳv + M2b?6 \6xxX/$P޺2^Xed;UG,OmgZéLev1aϜcZ.צ7K@ȁ!S|s5uwZlYB8`ƫ9NqⷶF UKcE\)@괥+KXƿͷՆ⭼ 0 r@>©$x&Ȭ_Җ屼9\׭[E21T >b "$fqjxҬc$>gʇɅT+ڥYV֤IئD3(߅u 3A1Y +$ "`NOJ UFU܄Wz&׆AI̜c(Fkʹ^^Q^1@1^c<+(1^+3@^^{V-Jjs[Zn13ݴ sڇVYaʡR/d5Ėʭ,@AĊa2z'kտ2chn@9M?Y"V4h7?SyUqo/!KBHvGF ^L3)*+-F#;@,q8Pp>f% 2;EoֹFX>U:}ekNBI_ *-ZPfX_,*= *|n^vI%V +kBF@fȫzJpvo|*p;VMF9.m J +2Xd~ VmHJ dgȯ.u{k7 +-gj$UFOTy"س}џym;@X `qqƱ5⋾`~;}}Y.WǝƗ~YzSm>f!Gp>fhr#-d9 +R3=10DI=(2j$ +]y?>n tɍAWJ׬a,u,rUdE LE726mwgڣγΖֳ +FFݕ88WX׺xS3sa@ OT~|q^_AGՁîHGpAk5&,m[O?.ec'JY0-W'mmbIW,6ݰݹUK[4pܣMgCPB`+{{djn޻-; em s:,r5\q-s~\~UnZА ȭt5ʪH?3?NA:>FpG#p+ۻbim$x9W?CH:Y y~$n6lļq{W!gGABv# 3vSӕU]T$Skq(%b#!NF|UzՊ$3s@p +֟^!VVXʻ\XW#pMmS-ܤk4qB>shaWq&ngmP$Q̬7/n9**IBP9/¯jbko'qʰVmDsƮ@2+X;HkWnnc-er3qy$Ocvڔ#hWXn 1]-C-9md*.Fp}|cz6#*yqEOW/N$fڲE42ƤL vl|qYZ˶дN,1*m5J8  P3gFq޵ ͧY$3d #1SK7i;>mI9Y4zER) + KqU4ۏ5)+5N0+o~?5JGj)$]6b); ^&ueV*S4K2> +l&p<=x^o .0@|#>esCou"8g~6XXr*42|GeuUBFpʒC{ +y }<$* w8dhx`A| 'pɧ_iFG"}8Am{5DEmM]sᱸ}jwh&0meQےTwkmt8x\i؀@뉐|Kn\23dq|=c4|Y hK3ı-ϭH++Kt`,o1Nq>aޱ/{8aX׫ۉ «HeFv ;15.a; %o=YjGmxM6mw@\=BG wD=;V]j(>=C00N?eSjY"e}hK>D% 6'jWqHqԢ+:on&"ɩ Gq"M!lF*Ubbp5u\<Fg$78.6brdT,r= NQ0IHLLmdWh?,xS7:'[Wl?hV\˚Q#:3{geHǽ`'Htkq۔9f\]YH5m&8ܜr*wQKS,sx>#3-mϟwP/>H>*AMeip$`DeR8$"u젟f:hus +[FH3Β;}rK;W2Lx>y>vb ȘgW 4;eHwf"Mc=5~Bgk`p8c+g.tz~ʴQkiVS" 9ڤ6X$a8waT乭Fe]˸idnDZ;5ͯپdkYI DLH[hE2I~!$ ++nQd7 }XkBcvFStac,qήWz5 y> J/THIl$cM hgc90A~4Amn?HF/<0 +X/5+nD+YXw|ީ[!e6eKf&* }ϵgCskzI]KD1qXՆNIm 9`A 9HMleOqͦ$nGn3\ުwczt?tBLӔiX)[>XMՖ VHc2d=rOz5\sdXau6!xvH +rBg>9\?@+LA<4s棺A{dH`yåPI3Cd!q|M[\3?xngϚ$HCm#!զѬ ֆmZ%H"ۛ9F+mq"Y#E.ɪoEf*E)yDd#N18{7ױY0<m +XP O n=F3F 6~kşOԧ6ICn=7 ϺafqD *{0WJR괥+KWhշՒjܒn3#?3^C*L *r3T;*d?*2+s>gcWPPgkX[$mr}eedxHxT;(+T9W!ק fWkiVb:) GqU׵nI܁c#x8iuReE`b Fqp b_UgFH^ҬKeo3nxE'"]"8`dv)gl eRB@<8mg\c2ϰo!9X"93{ogz1"gڡsՊeo#aE9{uިI #!T @ 8DܮQ\g8e 3VNuU0FBRy86Shefxcg^PCȹP?CT~ؑc* +jQ,LNlqKi00e رBH@$QH1Pn L`탏*72,jPOzu.̣Ris[]̊} U_b$9b68W )E +2xOBRE `AV +W."1,85OQVq{7>v;hR5PG (ƍbhLdv8q+6Yvfs(aR+Ha;4R(!@;GevJ7NXwmysZޕ3{Er>}VRqc~f\8qxO eRHzgUƥk% i%wƲjvV6Wk[nxdfP+6\ȰG}9>}XȨv +Ƭ.dipC6'6P6ćjPp`8U_eS7~}L1R\+;|חVp^I9èakmvH>UX*H=pH_Yݻ$3,qק8mJR괥+MQf[jcqZo# ^gƏmfz%^d`rk* Ldzu!5H0Ec|I dhFUlXwmQhفB98x5k 9mf=e.CE! 5Ԕ^k1R3a(##XAq5b9ET=X> $ H*LnJ1)P3ޟ 1x20K!|(أk^U1P 9c1-HԴhqt[EHT+P~Z#{JRCJ21άuԠ{ ՍdeXeR)J9Raa ppj͆oIndt'aaϱR+SJEvHԳ]́95zu%O3 2*c_6db[)uPN~(M)JY:J[ x:585Ź% ` R*Xa<Yt)JRVL&A`,sH`")TNxUR)JRo+}1Q Tx'. +{U)T Hdc#Ӆ 04'\2A +7vտ-ЈTuct,7dO2 bEMo~$P RĦ^S <潆Ŵ۹:FHeRp|5 t]Pa;V%Bei>b#9|!n3YpY݀] (UC/Ɇ|Ts˩7z}21v>*DZ-6s+H*H*y~դxbk$@Gqc#TaL3%_Bgp8h{I'R^4dd<1ⱠuXhktPYN3 pC`l?*i,FVXDa|a(->U?U5x.cKVՇ9v1hڬ-)+D˅R$b6O<㷵Ytj04՟`zeɬ˛i D.>0}[-%kK.!20d9 gjơ5 #G=pI!sՑ/,&Hl3J_ =yڿb IJjԯU %JCMgw4CPtK%i +@񝁆OʼvL-&I@H<)czUͼwns'M]SRMHV{ްe%3E9mԩǸ;>AɭwmkՏ8pI W-yfBYV4e-2͑qw97HVwe'LߦTp +|Ym/0:Z= 9<i-ӂىT}Iމnw2 @fci< F;WiaCH$]UVEۀbKg@>\Y ueWYʀ+N}Xxbi>L&[*(k-IQm: ۜ,uj`dr1ڲmRȔ)EX^$Wz̐]"(2( +8s +=5oo]LI32DU(Hc ln+6voow n ezcԠ7umVM7R$.: rѲ4דֲuMJuڏ,rduܪ`.İ50K4 oV6nB;d5ĺVdV5vh*6 Q3QtV% KjX a9"v.$n{y^:ԖV<DeP n\2I=[u^Xɳ8ue($2pj.ut6ʈ3$L +N!^hE\ڢE$28#{I;\h ˫* to95셴Wrh+3)x2E; 7o{j:UXfdRD0C`99WbM-on''V,2 +9Ȫ+uatQ̖2Ԫa2#.3zr2{s2k7S]˧2k*:$dݴ#8Eln̢'0. L~5yV!醉w`8 ;0Qb$dhی)oA[љaHZ`W9A㑚Z|Muyb c¹V`ĝH ՏeΗf.MӒ="g RT4W 6:j9b.sn񫭽sF!0A {Ս]S7?C…O8,I! w_羺uPddw!3Lqj{T/-"8BtĠm%w0ݸ;~5[H.JbG +{8/bd +ᔱ#cW5 zM2kkM(wyXl#S.IbHgR\_En#{UYF |x5Fm-z$o,Swr{wwJQHݽ[9c8)JR)JR)J괥+GqŒ5Zk'k^75wcyyNM d^+߻1B+ 6^.⽯+MyڃA8kH'*ͺ]DȠVV,@3Q'yX`ڄp xq^ WE{/_VP^Ҵ]6 HI.C_p]6zm֣tFNrsaZ|7xM4i=$d1xة<ێ5sj;i,OFOBϨv ,?Zc:pWvӷ'fi2>s;BĀ;-f<X闺\V֯2?[$cZ|;qyaY^(2̌w޹rNՐ0d`U{>:Mvwo} +UV]!"3Yqu#qoN@:̻I"}[`ywk$Mo+pDl8erÏe\Xj_iOopIzF?O>q4K{h;q-s;QH}&8Z +L"(oc>ky,6pG:tmpp3ڱ5HSnJ:G&wyU_峷]L$KY6g{OUu/ah"2HS ePN㴂 I&g`DF˾)l7!ruT1}8+ec{X sW-ൎxUjDZ[±r?We$UA8sYՅi0 ip= +APvx!}5/9I Im,ԂZؿmB'F{Ui76(CjN 79U;LmBMNl`Xb! bK2[[$2&=,>K rn#e;rsl羷6tHzD9Kg7z[#Squ(HM)jd m+ݏc.~ӌQ$^ߝcZ_ cTC3s2R9':eƗyss+\e~5#Z]7$k1 :q ;gm[ܕQāyA|'NJRɭ-KHɖwتx$U2ynH^DI 2v7)# gyQb^09bÎ}jGlYB%̙?JuSXڤCO826Yб5^nf ogʥ)JR)JR(괥+Kh͐-cV`>X&]N v]͸꘵(^U eXیոWd]6=.yObx5 {y_>ە8 /k];J%Xi Ǭ`qjDbspXāuh:,*Wpð珗jUٞib=8p󬩯|ۻjfqSke +H;y{Uȵe`F|d5kf霜Hq5$*YI<s.ʄWvN⴪^G#Jm{w(SyGqjŦHERp(8 w6cm>sTnI0b`+~ی}*떬8'dB6K}ѻɪVh΢.wAOCndw]}bng!v휐1}RQv!I7w ]%'ӝYC dbAsFlF ٻ8c3SsYJJtX @ΊE5*Gb ,88W ǰ-w`@ ZYnT28+`5[f*+Jg#S&o e7=eڮf+T{WykSQ ;*\ `~ʹJ:-] 8 ~8 +q1yyLUd7 8>5r{^W+HFܒ(!d9=>G5Ug@KP;3vj{^b=OJ0ܩt=s(<3Ȇ8P,p>g$u+R)^b6CK$$qϜVRiGq"*dQ‚;p?zɥy1^טiJ6fӛ,B³(8bElkW{JR{^W)JR)JR)@괥+K`͐-]SXsZrilU.G' i9vRk2 Bb5'>T2o10FJa}dAϽltQm[rUS*6.XRY@GLrj9*tҴc͙B1*#*\7jDeP*r 5i4[%1mg F5Ŝ./l*;[>5vy4zs +I0TyZ_ZH41?VTi,$pU,WoT 9Ki ZT/k( N2A|Ii%40Bp1X~ۅ210sd>W4-j,Q%HlA[&w;<[TI$a_N}-G;1L%W#rq$ɭe3"%HRD;HY6u?WM2pcpKvǧ=4ENBY +g.ppOsMM+; v9ڬuketU +3G(qƳn $#792F@fOʩ+Ln`DHI*+V`>U6dT ή#e9|չ"s8u%JHa~uM,qצm!Ӊ_#8%.h@6q +~~Ȭג,]H6cf)R mH[zTwaj^=7 ܍E8`v8 HwW=C?X=k40Ȼy |{JaPwM˿~sU5I`;QyL"h̃o]s{{R,gU' 2!0@ް5)&3*χFLp{sw u&c\"b +Tw1ﻶ)oy F =^]^b#Rp ϶Xյ}.Kt*qf +{̂'PA} 3EovYa$*p\ %h :ܓ^ " wU,{ 545\r˹0A~bΡ$ڌ|WB3)]@sݏ8IGEUw_A'ڮ_Ad#_w`U S6ᷞEQU:w773r+8` v-Ѥ%w$5hXGPDf\VZ^˅2ԱTf08o$!RTI  IC=q3(8'3"pN23zne.J2CF{漶 *HJ`1K$T!h!Ԃ}'Z /I` 5T;6 q樹w"3j蠷iB #զNkJ ׻ -,)#HC_dM> Us+ ɭO Y/ +䏗pko W麾;`Q&o ʊP ~9^O|%I;3L}Y4]%U3進/#p|GqXVԭn$h׺a^m%m}. iʮUx 3csV CrQ8f +kO77 +8|dW8zF=}JR괥+Kob?NjU}6"| kބ'P5^ERr{8' Pqڼ#WN3^^yϚb7My.kͼ +ֽ* z=4 5PSYQ) akPſ~ZK}{JRE#t/Rڹ٢dqT86A;q[[^1ۧar@{ .K/*b3/9sX"џhڦ:jՔ $Ą37rRX1#<7TW*RGVg!vI-\"E5Of%ݔeikw㖎 a6R];T/6jM1(^ >O1)cFr9eeRj+mkdDW{RC;ۛ%ܽ$ŚrW#ӓVⅷƚ۪AAc\y"L k ¡鳂6*mqN>՚k:Eۿ}{lUʀ npEej-Ŝ6K0ҷ> <'݂!c1p3Ƕk_#rBDɒT$N߳|Enh"Y c@ZE^<78MH+ ]6Nɭ7vj!<a;YCHEMFG4bF28x`OpN0+^ b3uXo$inW# jϜU8On7i1Z}"; Xt68\c;sHL]B}5gIyY@ C36G{⯮k|C VCanx;y{Nb,dd@AQ;X->բ NVV䑻>j7Ԍf7 3P=%yޭ]ii!E)s"TRR8沾-ѬtUJ3i,3U^%e|+&J/Fq ?:q 7Q$& mtq"/n#H.L13%',*ɻH[&{MBy%3DmWՎHsOX<i`4|I`0Ei$b-icn0fp?͘v6s"iZ`ye[7g=/Ufnf1*v?K b@Qc* #ZEHMg| +EYER IX-!Zwƍ^ D#U[vXc~Uzh Q +#Ǵִ% \uDN@^DfNzQYlU™%d'1֑GqYz2Xh6PMF{՗>kw!Vc\MC5QDįۖl|*׵Y k}e;q߽iD'Vx#}^Le~"FmH@8N M4W&y8n2Nssԥ(괥+Q@ h<ڋXuXks<ʠ%?["4j@ ||V5 e;S<3X miTF>1?J[Ƿեf Vۀ!^8{VntR>o~s$ە ޮsK.Hp@k׻\FΪ4dS*to?z0ȥz0,>Eqj3?k bjsT{JR[|5,)$K3{$s"6۷sv?[t,<Nqj6k<1vǃ ЁU>umkl`wI'ܓO5gMF%0G5hVmv/LC?řm1vm34P3$!-sZgGm#PT>xx3H]E\*źd {/}CiNVhBC\Q'$O|jqmrg[ѭm&y+by%AoB-g[_lQ@Wݹ2#fO+ɾ(B}{mdKQ6 ߵ[Cc;Fw1RxMʜvF=d |{t@00=m2w( 2яqUhVwue׀ +e.>yփe};*`ݤm<?:F#H#"vVf#H$x'${׷zEiɸFACél>jlnbf-ݻse. Xgcg$x.t{IdLep Fhe$%1ɻzwʼnLWXݒN(bI6z i\;*f!8⼇@2q3)YfI'Tz|vd/Gq=2XOI$cT l! +qGWu/}@wcMf[Gj#P${~dI94)KD oc^fGKn.'ð:|N:z VT.le8999眞oOmZ1)%Ssm9gxo\C3ǹP#bzm,wc@-$(Ϥs<ը~8)̊^ iejv G*厝F9fviY'9HXɦ[G p,H#DǥJj81L}?"cV,Ihԗ#ݚGsI˵Y,t^kxB;qsܜ cE[}͸n7I1Z#RŊ'WludVdqe jݭDJ"lQ=AϜj;Kc[F#Lh;c8o5%U7m9R VS!2885jB8]#*c⪓F. ea'*==+;L ʯTY? +ifC7ٓy9-y|u|c[tm'hֱ;9E!w?MOBvp*t;+y8Ud3 ,;->'#|@='# ϚC #}NBf%Gb_4kAmq}Ȭ;8l"X`@uGaWJP괥+Q7hڋX)=OL?cWyM* H y~+>gh4 HzV-ry%kF112(>ȬYa!ϴ*R/8,xbYܬvZ+  }ѹA=VIgS8"|@"[Uv7P +d k#ES2.ᔀ'ڄk%~p.Was5i$GhL:*D@!9+aY%F9p~iKq$d]e799Skae62-GlZh|6Jvq@VMĖIQoIdAAghڔ?gDvGr=gm +OeMn:x rsZZ6ƦG$wJ;62{ԇMme%sW<`TQ /r7DAcճi Y7d giȚyԚWKfcX_+K{[W+1 m*F2<9)O5J +)^NjQY1 Rq$G8ȬRxjWQ\3:F\ S՘WdRޠ˻zkW== P` y#[*RMCTґ^Meҵ-Vw Drܨ\HY:՞e]J63p3泩J(ɪ!;+ 2UR7WQDJp2H> ?mc%#ea؂2 ]*$)f'{|Z>r*r2inby%u.PGqvbͩ[8W;n$^XjV3K82E8M)JRY3$A$pIQaq-:e8  +&xXjİH!X2GίRY5;hncyEfD9G+*^_CRg +GrK1PI$Xj=ѣpc8> fRvL]kiWqpzʥ)J괥+OAŠ Z0FESьayC^<(#x#2ȡH;Ua #5ug!0 +asj핯٣XYrI'Z[ƬX"?TЦǵR3(c׭kv)8q=- F1W#5=®V9T޼ם5 c(?fI?~U鶈^;zGJC``?x`E%cXHc "1DNJ 3U1ª{1ϽT1^}"[vayf'G¡vFP̹##՝&Ek6Bv@psYe #W'=#x`p)??JvAUR:ۆi ics&Bጌ1VgD'r]# |"^zdzqHC5;IZiiTŐVp+_j2}(#kdU/6$q^=:ϸؠ #N=YQ|KA}5Ŝ` + + a;ձڵCEq*F$.rx<z[Keِoi;>,u%"8CuV@Td̟hl+sFᘨ$*7V{׹D[1܄63##Z A'h +ח;ebm +n01q+?M[M#I"zޑQp뗓G fg"},ch;< }V莑@U9iwiko'e%sLYg>+;[eZԤUu`9珝Uo/q5U A>֢ڧiGO4Y"2۾y%h=2O1Vx#I.$eR9P}8~*vM2baX6VV~6`OrwQƝrU +H\,$Fh@ǵY;XĖ9Nނw~#վEe+$jG]'@G#z xnXc+& _k  ,[GrH@Hk2-b m-$@0^]s|{&qtbʲU@>~U;U3YKa*3896ϑIJh/##m(r|Ypk]gwhG!t%0YR=As~}6LݽIBܽc[AˣYuauG8y5ߢ +]̲FTFݼFyK{hB$FTGߵNNqۓ޴6XO$# tfBoٷrG[Z_}5yDBG.#E' Ė cjYe]zHqu8rUki1+.HƋwoC"*aDHFg<G&-}Es&me`i/m$Ѽq<qqT[kwMmJjMp=bOC\6C"U32@.pg椫si.n +ZYOF8x=SAg&oZ"#b7lm@dZŭ]D,V% +dy bӵn,bGxu|asmJߕgʴttcF_6,IVOVsjrZY*ܤ.vUk\jV/ +(GHp^{־)UmeZ\@s޼-G*ƭ} h@KpXg+G]:G6ѕ+#6W>Tc>y5cMҍI20d©GVLΚRiV5h٘#7 j>6딉$;6#6ֳtmWr)ԜyA#PNQ2Oδ\oJY@?udrd@ Y/s%&ٙgu\;m^ͪKYo !.InN1#mחS{hmc$n_r8U%Oά|A}KT k42)mA۵_Zx{BvFX󀣾3;׉*YWBZ6%I<{DV ʠȅK c|LiJR괥+Q?f?Zb+YXI/fTQ;ls90$}hHӿ𲃂yJzNJ9e%ln`H\V.K-2FMq޲3X?*N*V{{ 1-eS;#vv'UC\Kg*,&a{1?`XiAfȂU܊r#eb <籸K/41XpF;HNOlVIo9QT(8'Gj bi  \܁U5k([XѸ2Ibk;_/*-8UbK/ ޭjp٢ iqҙgrr8ǚ5qwy#^ CF͐A# 0{pk]ek|n %좂XL6 [bzD¨P, AsQ4 ;[f$K(M$r elgկOE3;G?bIcy<ՏŴnKl+B0V>q=aiO-ŴTThxmr *9\{t,e ؂0ECB 9`IHXubH: +ng|<;{v|7A*Vfl8V5)u%I#%n6ny 9EėzYc(М@$=O4o-N.d2$>uP+ւTF(!䭂ccb 6Á95Ne nij C ϱuok =;KF\v*Ό.>dXee$V ťfӆ6_eb8GIYuf3E-$lFK+rA +O8K-akk2:m ^08Y5+:hl)ov.6@@fzo_,Qe^ jQd @S|櫍..A؄+&S'cijUH x&ia.cd+؆`{XMc-Ŗ 6ڳ92XH,sl }B;ΑrqB˼8cI=c٬ bcA#lzj5%\^Vű` Wj H-fP°"ƃ +`'P/ۼ;ئ}3˒s{7`@2aF<:x1uy%d,LeCd>gy}nβI%E܄l n'=:tԄM \**sAPG<ٻM[\"hVH42YJF~tI`DXp <ۻ%xSGjo k?S[ e[ +0#mW%특okwW&MkjNZ6vvz3T|S}:Q#0T9UXV;h4?t$;c18nHʑscǷjQӄ`(6T'i[i%'BX8 T*?oojnP Mmrd׶> = KҷyZU7`1M^|!ЏN€$# I +b;$Gf +tܧHj}CU%`Gfy(XD k( 0<@[*]]ج=xci 2F7!GήY=卌HNN'F*Lr&/kM 'k3}@X}ϒk#P;-vl`BYƫhEmiJy@f7G? VI{12R1dPOvjRx[V^N3`^jm[(Y~ `(;gM +3"]G2c d$chqYc:*=0}6>G\G;)e!@ 6Z}r9slBD# +0ZXI֮㕂(zHG i19kb`֋r כoSȡl2{(IȭɺA6A@Ǔxc_?*N*R1LWy^ט1LS)kyp qXv,$f}o`8q[ +b+R)b1ZGL@IFWR))S1LSyby^Ҽk + 1mFP3nlyI$W)JW){^b){JR괥+QGgIS,1ܡI2jǗJC$J1aq&{$ Qv0*I +“3HwG1.]y$nz]zq9PpY=Ӡi1*8/m4XGHi1hvPƈ [犽jR hRz[Xm/ӷȉ *#جWlz)9\vQiVLgH; 3 g#)iܩiU=eA a`~Lv0Aƪ{Q${UڤȠ$dSNnmDeY]gU/ +[B&.:+JLRb@ l7V-ݫ-LLY*9+8'c^"H¦2OԐ+/phk2#) %q,Ϗ_ F;D32@9k'p7c΁3ׂ1͑`6zmt04l:hՐe$189yp܎k5@Y ڲwml9ds^Ex+dw8sXẙdHS!8++۞qyǽ A3Lu3BqE`";ymAV6.=F*\} `ndwUS5)Z{^T"ݢ21g-r>kSf\Ćew@Ư'{֫ŧ&y/ !*C;.$d.G~#3^י3L44 ޙ`ݫڤ0=G;F[+ &%ˮT)Nqq[np3Xn0v)=ⰾf[ec 찆nBF{YQHۨP>aY,;}xs^Ҕ괥+Ma`HQkbz-`w%P?k+e b| 0`<ӵ(q^h8S̱m2{ +ſ[pSr:ŝX<=8N8@{Ktd7@ˮ@L(}\JE>Ȭ DOunh1 w qYȬkzR>F,c]gVV0n`HR@.>}+`k$oXŜݹqTZ&i1g&.Xʣ>AS*iPZO]YH.22ᙕ8N-&F`6 ziui,(HnTRxjFֿn|֫O"AB"5ىxO&y\b:5pwݞ ,MSKׯ +>>;`vMS9լbTleMQ8@{ |[=6ā($f4RC~r V 8<5AlXe@HY62 33j4[ X[$gzhtբQm5AKl@bvz Ʊ:G7ښQ~2OaYw:\Wϱ#.d18/b>WIMa&H͗lzJ3Pr~un[u)'!<&bʡUf 8d=(_JimI}khjl'jOgiwvzbYMI9*Cg+a^# BY$A!v:KbE3%܈$urֳtckCc+Ah+}d8'pFka,#QCqn*⸕mΩ!Y4+x㚍lex]14lO#VEŽʹj X8 V= +R(B#G;FxO#llL;[FN &Nc#kU}WKZyMԀDEջ +f'2{jȰҷ#Ucn=#XNm}VE{uJbP>OqU}i\ʉv4H@T&X>=hX44 @0O*qH VF,e8X$Aƍly#ո8t^ :Wp b`ؠӌg>K8i+˨VbDJ : +IyM+wmJ|9DfZøUJm^MgpdU'kd7{֧J-&{]r1!/fPLηa (lz8Q"X#LՖ7fh՝'oQk}Gu.!.Hx9%l_@#' D kRwOFcvUfSx#u.;ixG:,L;mrƚi ;. `:ȫO[rt徻]6ò c5kary)z3fěe 'vZ$uex~uUmo46{=GZbutWR$pAGUQ _abA&e#>8>3X8-.,"_AcDGp{($ePmy 'HgFGZ鶌Y$k^NN%sn՝H:S(\ N +*<|u֝q#}ߒQO#Gzk thE[֡$8޳,נ(PVLFې?t>X)J괥+IƟ-l* Z/bߥɒxx{?Ŋ/(ٽeC?%dH{GIKGƱZYe!3JV&]sIqq©MF.B4 *BNFFx {EKݿX0wVʕͽjr0^G5V59ΰ$VXm;4m)b6FF};sv,j4۽j:j{WYnܽ\TxAA=\csg*YXaN qIfcdɫ47WQ]~9U0ޑ5E Ԝ~ Q"nGC ˎxNp$⽛i2(bčd[=GERxft-d8 0˜O[MQcѝcw zX;ϰY4HuI"fLPx|.2F|'aA$kp.0C`힋 ά.ۃ8 cLЭTVr`N?!VvHVc,YD'*h;gvD{q{e R=y^-:e62F8yM1G({@Hd[i ks%ȒR 6ʑHیzy֯j a!XAI< Eo!%LciS`|3*R\5I$N!vAg0k~vé$a y=.H[YL#.ҁ+h +dz6}.+`GXմG4Șٰ\ܪ@R@q[ >G?F|VIfEfky&;+JY ?btu.6VHr)БA GpAcgs+4\x=zěkYE;;I|Fxϐ>UV$mʘ_KI_jwT+aʳy> 49GpAȪ[BHe䑌˶I #1pFʣ ː>Wcg,R<UtHV9Rre#Kg +8m4e-,,`tF 'E,4t帍-+pҳ+olUŢ Qon2qV[2$"vfxQ}썤|@?_4&W  viETP+})&xoPwqFΪm +ݞ`[cA#c樏C ܣm\c5gI76, WLdY$%[,R>޷1pD-тH<EYh[4Ir3W'oÐZGM$Vw``r1@TZDP!>Lw]m,=欯ö)b>dr1WGi#GfxՔ1ʓ@?ZKKeYO{{ +cV.⿉eX`}>j +04xp9δΔo֔Gq ,`ڪ෶@kk> t"MÌ9=j_-Ic2HUHvq 5}xugc MrU 2<HmncVIq,;pHvI&HV `f! +!o,fb W; +G+QP0REHY{A7:,wi2:ҿNT d,T~~嶉,tу"c;d| # K'K܌/t#1X* dY VQ#0;XASh]OP +q~Chb;"r9+?Zo-"G&m*T|`,[8;8a[hc؊'qſ~5+N*Rw "I"Hp*)JR {JR{JR7 +)Jq$H۲M^)JU. b_i} ڭKw ,*(,o'®nyURcͨ[[Ȑ*+V`We R0U$ܓڱd֬" =+̨2cYQL ?eWJW潥Q(ʐFH j8!;6VCW+)JRmge,; ;ʦI%,;phApA?^[;p ,BsW)JR괥+KoEvTW,p=j}}$]S[8 +Nk3^aU)xhפcEȵ,z3 83Ld.F|UgTPt]߬6##rp( zHQIQx-3P]N7x՗dX2Xעc>w1ھ);NXgG{ 7O,Q- q$dG_U\ +/zR>k/5U@UB)8R p;֏^m M25bTcn\2VQq\XLfDWw ;IIEc|IYzLB̥HFS3 ۚ|A4jtc [[(cF o`Z:Mo1H A@1cnݒ'JwLm3H:&l>pk#O]BQ%0*N@'ȭG:iHa2dl}13[#vUX!v8TI֨L\`ՙ\8^e8;ʴ: ͪms,lAfc.ÐF9] Ū$}ݴ38fqZhɾrzdπ{wU.ΒU0JF@ݞN<Y]S$+42DB2D  :Jmݝ<{VMnk[%ΑY;Y `<.=^I R}Nn{~5]đYbU +D|n'R|A Vh#2cfҤWuty-]9Qlx Ig|ַIP;6cFbXy󬻍x Q#!F79x>-F m"S?:;kfF;)!V*8/42Ea +>ZḎ +>Ӕ$`XG1YZZtVQyƸލ؀$RtUi @نk|cy|Gt$F1{35ðN.r8Wʠqnq }a}bs A>wwO<K3@hO9L@ݍSpG=֘UnО0Iⲭ&s 4n\0X&%Z9 T8~+ɞk0+' ?(o ?qIsY$Yv*cAU6]C$+$A`eI g%9 >t%WPGb?bjvRG!Kn[^jG+":go|0sZomC7Asr6mb'n2s[+Z1yV4L$HIO+DL;*\!>*SZkf;0:BSqGQAz}:ť\| 2[K)n]Dž|`#gWp( 2͸}{*wKx2H Gl$>fڸɫq7:r$ۤe1Ń)sYysl-6la;zq 7C|(+`dFn9S]aӒGہQpjӥn繌& Tɏ&0y0I^{ڿۄY$-&UR8#p}O'WYDnTpŶ9;UdI[tPG2gv'<㊮k-HS(^2pg##kSyrn R 91crU^#BF*RG#'֚XF]d79\2Iҟʥ7p +ڴڇU*jt]6ے7yՃlZi 9MT)ٞk} .W B6OagKG8Ե;Qj #Ű}=yd(QF,ITY3Pb,n.J*),8B޼I}m)ͰZ6+3cަo pK,!X9.9\KagEu2<kAÕ*Hτ;RUf8P{X]_3]au2dæIfpqي5T.ʪXCd\lN3ʱuO"ܖ׭ UQ1#q8;s^_Nk2;k4meQ*#lýI3K^WUSwR:QW#ʞի>ߣ7W4b>;_N3jEqlmӞTzi+PѮumCU1*m[W ē+F9^rPy[Il፨rKaFFЬ9~~gҵΙeNX³g>:jVcrc[!TfE2Dc]G֧ + 'BrJCpVvڝ;pO2X`HuzǴdՅͤsMB5y3S'~yF%CոHF(Q1 +ӭ߷gi7U +GR}&H0lg~OsZmnGo m.c QPq#ͤgUq8;G5dR d\Z;-I^N `̙*&]C\ TEP#kQq}+-L22;h IS5/>Y]SQFɵKdWVUAd_hBf(wc>jqZ/p*J9E(aO995s'PPfY $党A+T Zd{:C2\H 6B'or=T]u lL2:B'vH5O7KS"gIc/d"nԆyG䠓 +|=4R5"D 7U*5eX_/ I,2`3퓌Pkwq ᜍ.sqxXWI"9Kˉb)-".ҧ kY,?tLrZeD2^d߿ԋ>ۣ]UnbYNd~#ZV˥S pI>sGEĘ\6a8f`Ӗw|ŰO'W~6kWWGWGBް3VOđ-N[sҖwr\t[wU9Fr8>k7.mcKñg0}7$7ir:Џ%p;9V*ɭk xIUF7*cu )\Kݬ@ Ds=Ʊ,/6`#!Ef H^iRc=Nb\I!$`>? +NET)@Jc•Ga2-J[ČY2V`qXzԱ^[Zi&L022d|-ﯿQ0i\`Q$Ia;fa9z;ғygw*6 {VdмucoF2!ʑ xޥֿhNh@c-ݷv0T-z$Fc(vgW];}i]hz_ e,m4`Zjsلeb7Wd:~ysx,W) Plhۦ{D'QZVl3;d;cόV'Őm"a [p;9eѯuX#r̠ #MJʗbV U:N .G,8<z}}|dKReH#jM@@[jHu)J괥+Iװj-ci˪ۼJ#!ſ e*duf`{}W_L"\!Y AXT9ֱ>Ink-$T8ǰK4ә`V;Vj-G4XcmYqXa0~CLt.rgK.r5EΓhXXaZMrR͛8B93ktYG2z)F~s{ 8=Fb 94NnB6-tW 1;zq`Fy8{ +t#@XG*Ȅs^G5j]K29Yby6{5[ܬZFq¨ң'ܚ{MA Wn#L8[/gu8LKь6 l4ç/J 1`2F㒠as8m@ֲdFv'v [x>NMmTڱez! Re9݌Gj +,Dɜ3coףE-x.ᄶ'M 98ۚge@%q>Kg;v[yO>~\ݭ "wlEPqjJuKYmDT8#5򉶴 +U@m V{`VK{{hI۝9徙%WJ Os 8ihwgvq~1n @.oW1X?ƥ}UJRk#CFev5NN1犪)JR)^W+Qq`\YNxbTS95i˦b$#`vNvY)JR)^Wjt3efxv֔)JR)JR)JR)JR)J)JR괥+KxΞװj-cI튤՛ko&aqWу {߽ sVno# QܳUwqǝ8*x8<k$MP{SET.'գY)'LFp1W z\gۚQ9q+;i +Xnck&A^gy<z[bАy"^h9AXz?jXUTL0CHd8dewq+m^S5wqs;vq+ r3LҕXKZg$#ON4IoVEBR=7']YksFG|Utk֣U# HgsWx#9+alӼҪ 23Z]/Yԯ1WwamqgZ_]}[[hdМ[S>kg^Ҭ^K,0pU7@w}Y$$iScRɐN9U3^7+wKZ7/.6<.d޳ 3^Ҕykükt;逤JR⾊iScfmku+c6e 0pC })^fcj7Ms'݊'sa7:ujn f$g$2s[Jw +t%epmu9S! r.Aó. <[ZWHNc[dap} Ãd潯+5cK}3n(;a'?f7il+ddؠ{-Ҕ괥+Ix&E<ڵޤp#N 1V, zaWG5'8eb@햰^UlcH2aT鷗גN=ŒvteCa{UT ݥTuLq23?G"Y7/|.pp|ڄڒY$@d0@մ֞PH +*4D܎ ;V jHFԸI]XDjۏ?iVp Bّw[ZQdNM6q#9K\W=A*a|oƪS-:e+bIR|]r[ˋ}EmX,H?5H.͸a|(qkAkW6q]JȀ&Bnݾ0$Xdj:ż".$( ={J-huȴD}9`[ⰵ Y2*HZ-G_K;aeU1S>>U}/Qܲ8RsXjm躖iUP8'ju[;K{Q=U&sק[{T@Beے8#j5ۇ\# x }u5 {+y $̒o 1^GƪZm:[nM]sL9y>sck=3"A@ { ,dvGgfX?RvAURZ^kI&q+̹i*KԮ, `=Y4G2 tcda׵mX[AFU!6vuq 8l18e#9k%KeQqG]$W2S=Ɏn0`9+ߋ4ӣC,fb˾uA{VU8a@C#dJUmI>{VPMlVI}+mHIs<٬uH+UDY' w%Hg'ޯq#x'Lm+eܾO_jRimXވ6($ysZ~|9;Mٺ # 1یvw|W?YHzep d^CE y極mnumxZOVھIIEHmӲC4[F15~s+fή7py<2U˱*b$cidy>vm$W H[An9,{'? +MIhqo LmV 1-q[]2\I۽AFu\(@+9g%ݝ3Hi FP +8 s[ygk)E)f[fz7x,8j=m%:g*\?BS)ŕeHc/໷rCK!Juo<{{RVH]u{cȬ{=_JUC;.p"ܥlVmvKɥmRNUD#:zI-aWfb[5Ku$vW*rAn0I%JqmόVڣ]0ImnDYDc@+ }Ϛ՚XKfe&ݱłqZB eӭ%FO VUvEV;fچ[IAxK;ne>k>׭bTVRyѐ}a3c5}. #rD?`B4Clb'\w2ٍ:e[xl"\ʖ13纒q[=NͮZƓHisU¾́q#vr'ri:,Iٜ"0 ʃV6H-,r$:p}>se.r[n`Y1p<}+W'MHdI_`;FF1 +IBHIܞISM-bI_pMid[v+D\$3,6T|8Yj~ŵ:30q$Vt_\K,GqfY6bW$a䟠Zol-/-×h8mRn]$63XOR B r+HY!b}C;?D2_kwjH' +vw] ۷ʼttw&Y]ʑfkSC9diQ̟\g~ZVY}Bpʐ*4W$x#i_'%W$h2>@Hlku4)%fe5%J6\%I ĒH#5~괥+Kװj-c?5 Ac%rFՇpGc_2v,̥@= S=j]KR& +00Jc_ttf0n\g'<VmtF,وU@+%B1Sɫ,RR%uj||e85JӮY]so2A Exwʕ9wkpou5/0MGGJatp7:g xnƯm'!U$ppm |8h Bp Ʈ^n| +{{{WB;'V{yDqī gWvH9q4ֵxioPJQ㿽b{IpԖBpcFG+.m6y# #m۸Ue;T@G߷r=y>kjVr|?#] }o9 v}g?s\Wn3y]Z;Edڻs M{Um:]Z7z*3 gNpG5|S ]H8ܠ܌'gpzN勌ݱkRYCb֯'3@!2S@Nrj4ym4i@*8l5;jP ]K#OXUT ";R3G2#*HeCXm`TxKK35lp@_H'Xk49eR{Je\ Iݰ0M*+`w A)$V-BA;>vEYn 2́N+<YhܒNYFzfN-$q][i\0Akmk\$FwU*ۓު4hh(Cz1汏km%9]Hٴ} )eϝsȭoiY-űEʢHmkio$wq< &.UT9`7q2*t &kiiH2r7aհ/>m$fTCAc6A9ejzTZ[NIVw2 +>$=Gvmv5S|? Anېa*```Gz_Vn'V%V] +G'D:^ْyi wcq@e][Gy*GR+Zaye +vp1 + {u};ʍT^ `g+g"RGϜ+Qa.2K"ȓhqYڞ]N~?/zm.nfiEeBʨ1 uDii"قTm RA#!t+[;[v̕<ϿζMHn2Ę?EX3o[a)B@ +qۑȃL7ojCWB$ *$v8*9ZzjpAe9CX0 X3 sp謱DU@1ŽIVx W-Is=*[[2I I{oo-ilU+0ʒr8TIiJBtb7mppȣh]6[H"ɐJ I5] &&$MѶ^f`A$lg29m'qEyƿf$l*dXت6)%JksgM)y+vghQr4TСG4&IQ!S$^皲K7G3@vmF@>N1Z=XZE +e* "ʮBYJTv=O-w+9i6#`;.ݡF;2|/׍#w4m ;F[*yXC󤲩Ɗ +lݐP['?Jhɩo+"y:W'rH$bQMH'Q"1z{$cny<+M. Bשq-ʒ9Bp{/84 g(&A1ShK2)q2 r+WwWw2Ou,k<`ϣ9v8##WA~3ɼDc $v3sT=]3}M BzF1T[>anex#+TmA}_9`ɣ{/'#n)hGX@N}MVh0e1$nd߲-rŀ̠,cٕFxksX.i v$A=;jr[;U%H >NDm!y] $e8L9>jZ8B\+K*FQ P + ;U7B:l.es1(q +Ҡ+kZ~K&fxXҎ)9 p*:N 1H\m9T[|9 sʗL*>ҥ08MdHn28RX(fMgʌBAi^(l$ӄ\rSvtݷ$q⽹h]m See#`bVB۱&% +w6 o|ڴ:mPDe6C"***/öK"9f&Frw/vFsVHK_`PUFx׽{Ҿkq)wX +.J6$,3)bt۝e!8|9 x%f4`eV |ױ; 7rG;l0FUe~,%Ӓy2 +.ē3zMey:)}ARiN+4Ep I,K3$Y(괥+M`IoŬFm5Do e'ޫFXn Ubt >@ +sV.p&C*N$lYC)<*;56(B(,{UEUExFA9HIIS؃^{^1^j6Jg'ίy^@K;q 2>c5"8* +.;UA U^k1X-oR>)JU,Oj%Y2AA~b5)^)J33"Hp0$bjV;qFUX5*ubO5Lr`FC)Ud^`9T+s^Ҕ+)JR)JR)JR)JR)JR)JR)JP괥+Ko`ՇQk5M]49])F8k}NQf0ʉ*`3V8#!쪵+۸5[;x•xgb #{x]+x&H 'vR^݈5n{x$f@'.c$6=qnM}+ڒvaw=u u=L  }1Y'IV5&{凨`{HEb\ GL˸CmcTFUB0Ze`koJ\omd3ߑ+uvEfɺGRwۂGs*J']C˕`}5 ,^0v #-jG%ũA4umĆ2019 \\ilbBy<5EZu('mň<$i;dU *9;{pA|=f]w'%N9YkJ.:jKێ|y9D2W9k>&n-4)H~ƭUlEQL$^~5;YA9H$!ߚÓ]kT3I Xm+ 0{H^j3g`kpA#]X*3p$n8~C{fUD%Y[sEck\Ʋ;P4Vߐ"A!DȆX=C[8@{uIcKpyvŧ۬pJjz["C9_OP I'jA}g*۪ft.)PT͗*03K]f g;6@ǨV;;eX"#^H$9 =?A%5JHa[;j(bUuiYU"8Ͽ8D:ruѢ%0 +m Wi!b "yCAs#-EF$t~u)JR)JR)JR)JR)JR)J괥+I~FQk'-&1鹺J9M eDJ\.q{ +ͽ@Tt-m@ڼObT)(bOPqEs5J3Jcf8+`­ǡMftԀ)d ͽpOc&/np'm`QJ085 A icaOFBZ4WxUHU:P['s6Ӹq6j5 9煉3Dc]9XhoĄ$R)$eoHSw5L`I:Ƚ'K'P TaBg"MFkT,1 zfs=iZt)DbLncϱKnR'(% (FJqYk.&rK?ՁiVZy';#ڲ;nahHO.6 5iͧZnͻ` {d9qTkvZu9<QOq.cyZ 2}MsU٭/&mTToYϬmk$z즁fie.- l+a>s5ե#1 85>u6D +$ I~a> ipH+@yMöojum|1**1)PpABn1sUSe5ʨIp}/Xa3Me#nc;|mۊtQ,JFqsVMnyU0ʶ8>5Uլ[MPA8 vӋi(,$bisg荸+qm {V>Չ~sOYAUR%,w="8Ody/> aiK]#PhdB9. ;9sZɧۃ%ĶPD#C)eU*n]#VX&r& ,w8u-hqhlZ.Wf}ls? #$nСFZB0#$+3Eme7WC{ +:gw6ul1 HO5xM29̯+H ` ޶W_t#錊pX|n,P?TYQ*`02ja]1:MqH1t1߶+S5F$o $3cYI"VڬqyjB7s-7 +z74SMl99TLyVSU ֖nj s[ sM=\d k7"8V#L{>29 Γiʤ8"uE 92Iթm0'jJ ~!JDjJmC>+Q.F%@)i_"cbO#85z [v#M#,27mk3O +ͅBw73^n5.,T"$$3ߟyu#6DAHu#c {v6Jx7SGm76f0q3 qǚ[݉+p=;I>Bd-^\Gy*KI^{WV=T乷k1}9DUT،~f56P̺+bFr3c>F䎓*#nr++Zԣu1s ^[4VD]b.TN3ʶ +}+%S Y7.K#W$ Ui`|q +P>'a95ڶp&I +@(XrI'!EFeWu hcoܮg#ⶺ@h>]n6y N,8c;̦lthצ[}kz|;)[;ݎTU䚻sϤ?hM'oPŹ )8ni麔XK&!$E6G;po`k64e3g9$oƩVh)"Xvl$R3=F]"I$h~G2ܡ1s]SP32F7 ,yR)JR)JR)JR)JR)JR괥+Is^Ck^v>+ӌy=s܁OYw$ wN΢(6 +G;y?Jx'vVT`*S$ $*u0 "F dGv&) }@!8!N{ +DTWPpFϸvmf[XVxLb[2󏐭mb:3 WRI|jF;g#V,I:1XARQkm2%1ޤFHgͩ BH +H`;gޱHVbnmsFk"=f9H-{~]#vR`N?#⮊z(h;WKW4[OoR +)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥+ORlEBrygvr_XCs\ ;X63V%ظTX_b21[iǏV4&# U Ğ1})vc3>Gȱd&hXFBn2+[+tBagG $mǏeܬ\钬m>BBхkz[5 M gPqy5&Oab8@F~U%ʞHo"*cN0OL pr<աe:Kʉ#l ՓYN"b'6X + +yY4c2,JÕeg;|q<::DKf19q[ߎբ-7Ȳ\< *1U)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥+QAאj-byJ^W3f ^i41LS45 iA^ҽ1UUv?Ԣ/>)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JP괥+Kq+9K9iJ򙠯H)B++^׵N {{ה yڔ{^JhMy^U^V.b(uUJR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥+Gƚװj9'h)^WE{ׄR5+q^/&zL惊f^5qL׵E2)W{Jz;S5jdV&}1_GGUt)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)J괥+GװjZ#k|WWWP +)^Ҩ,kկMט49zjkkצ4xrMT*ڼ=^/4jsXh}J?UҔ)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR(괥+GՃV55)Bkk)b6j+@96M5Q^qLSSm1^1^*^^MHqϩDt}R)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥+]iڼ(2*@#=Tt]_9M 5Ϳkкf:.Y>?Ű?aϿߢ>awշѵNɭƪBՋ/Rvo?_OкbݫѢՋ?RwBAXe/z~g__?6eU nՎ9ȣMy&Of R +4md\֤G_[_2F[o2F[o2FK_2F[_2vDjԶe^~mڟu[_2v_ ݩ#X?_v?CԶeO-S>Ik_RZ`z4cݫZ貏F:^iKizֽU~q~R>i;Y__iDewpvw?Ou;" `*i `s@>I#]UJR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥+W)1LS1LS+S1J1^ҕ)^ҕk3B3^Ҽ1^Ҕ)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@ +endstream endobj 3362 0 obj <> endobj 3363 0 obj <> endobj 3364 0 obj <> endobj 3365 0 obj <> endobj 3366 0 obj <> endobj 3367 0 obj <> endobj 3368 0 obj <> endobj 3369 0 obj <> endobj 3370 0 obj <> endobj 3371 0 obj <> endobj 3372 0 obj <> endobj 3373 0 obj <> endobj 3374 0 obj <> endobj 3375 0 obj <> endobj 3376 0 obj <> endobj 3377 0 obj <> endobj 3378 0 obj <> endobj 3379 0 obj <> endobj 3380 0 obj <> endobj 3381 0 obj <> endobj 3382 0 obj <> endobj 3383 0 obj <> endobj 3384 0 obj <> endobj 3385 0 obj <> endobj 3386 0 obj <> endobj 3387 0 obj <> endobj 3388 0 obj <> endobj 3389 0 obj <> endobj 3390 0 obj <> endobj 3391 0 obj <> endobj 3392 0 obj <> endobj 3393 0 obj <> endobj 3394 0 obj <> endobj 3395 0 obj <> endobj 3396 0 obj <> endobj 3397 0 obj <> endobj 3398 0 obj <> endobj 3399 0 obj <> endobj 3400 0 obj <> endobj 3401 0 obj <> endobj 3402 0 obj <> endobj 3403 0 obj <> endobj 3404 0 obj <> endobj 3405 0 obj <> endobj 3406 0 obj <> endobj 3407 0 obj <> endobj 3408 0 obj <> endobj 3409 0 obj <> endobj 3410 0 obj <> endobj 3411 0 obj <> endobj 3412 0 obj <> endobj 3413 0 obj <> endobj 3414 0 obj <> endobj 3415 0 obj <> endobj 3416 0 obj <> endobj 3417 0 obj <> endobj 3418 0 obj <> endobj 3419 0 obj <> endobj 3420 0 obj <> endobj 3421 0 obj <> endobj 3422 0 obj <> endobj 3423 0 obj <> endobj 3424 0 obj <> endobj 3425 0 obj <> endobj 3426 0 obj <> endobj 3427 0 obj <> endobj 3428 0 obj <> endobj 3429 0 obj <> endobj 3430 0 obj <> endobj 3431 0 obj <> endobj 3432 0 obj <> endobj 3433 0 obj <> endobj 3434 0 obj <> endobj 3435 0 obj <> endobj 3436 0 obj <> endobj 3437 0 obj <> endobj 3438 0 obj <> endobj 3439 0 obj <> endobj 3440 0 obj <> endobj 3441 0 obj <> endobj 3442 0 obj <> endobj 3443 0 obj <> endobj 3444 0 obj <> endobj 3445 0 obj <> endobj 3446 0 obj <> endobj 3447 0 obj <> endobj 3448 0 obj <> endobj 3449 0 obj <> endobj 3450 0 obj <> endobj 3451 0 obj <> endobj 3452 0 obj <> endobj 3453 0 obj <> endobj 3454 0 obj <> endobj 3455 0 obj <> endobj 3456 0 obj <> endobj 3457 0 obj <> endobj 3458 0 obj <> endobj 3459 0 obj <> endobj 3460 0 obj <> endobj 3461 0 obj <> endobj 3462 0 obj <> endobj 3463 0 obj <> endobj 3464 0 obj <> endobj 3465 0 obj <> endobj 3466 0 obj <> endobj 3467 0 obj <> endobj 3468 0 obj <> endobj 3469 0 obj <> endobj 3470 0 obj <> endobj 3471 0 obj <> endobj 3472 0 obj <> endobj 3473 0 obj <> endobj 3474 0 obj <> endobj 3475 0 obj <> endobj 3476 0 obj <> endobj 3477 0 obj <> endobj 3478 0 obj <> endobj 3479 0 obj <> endobj 3480 0 obj <> endobj 3481 0 obj <> endobj 3482 0 obj <> endobj 3483 0 obj <> endobj 3484 0 obj <> endobj 3485 0 obj <> endobj 3486 0 obj <> endobj 3487 0 obj <> endobj 3488 0 obj <> endobj 3489 0 obj <> endobj 3490 0 obj <> endobj 3491 0 obj <> endobj 3492 0 obj <> endobj 3493 0 obj <> endobj 3494 0 obj <> endobj 3495 0 obj <> endobj 3496 0 obj <> endobj 3497 0 obj <> endobj 3498 0 obj <> endobj 3499 0 obj <> endobj 3500 0 obj <> endobj 3501 0 obj <> endobj 3502 0 obj <> endobj 3503 0 obj <> endobj 3504 0 obj <> endobj 3505 0 obj <> endobj 3506 0 obj <> endobj 3507 0 obj <> endobj 3508 0 obj <> endobj 3509 0 obj <> endobj 3510 0 obj <> endobj 3511 0 obj <> endobj 3512 0 obj <> endobj 3513 0 obj <> endobj 3514 0 obj <> endobj 3515 0 obj <> endobj 3516 0 obj <> endobj 3517 0 obj <> endobj 3518 0 obj <> endobj 3519 0 obj <> endobj 3520 0 obj <> endobj 3521 0 obj <> endobj 3522 0 obj <> endobj 3523 0 obj <> endobj 3524 0 obj <> endobj 3525 0 obj <> endobj 3526 0 obj <> endobj 3527 0 obj <> endobj 3528 0 obj <> endobj 3529 0 obj <> endobj 3530 0 obj <> endobj 3531 0 obj <> endobj 3532 0 obj <> endobj 3533 0 obj <> endobj 3534 0 obj <> endobj 3535 0 obj <> endobj 3536 0 obj <> endobj 3537 0 obj <> endobj 3538 0 obj <> endobj 3539 0 obj <> endobj 3540 0 obj <> endobj 3541 0 obj <> endobj 3542 0 obj <> endobj 3543 0 obj <> endobj 3544 0 obj <> endobj 3545 0 obj <> endobj 3546 0 obj <> endobj 3547 0 obj <> endobj 3548 0 obj <> endobj 3549 0 obj <> endobj 3550 0 obj <> endobj 3551 0 obj <> endobj 3552 0 obj <> endobj 3553 0 obj <> endobj 3554 0 obj <> endobj 3555 0 obj <> endobj 3556 0 obj <> endobj 3557 0 obj <> endobj 3558 0 obj <> endobj 3559 0 obj <> endobj 3560 0 obj <> endobj 3561 0 obj <> endobj 3562 0 obj <> endobj 3563 0 obj <> endobj 3564 0 obj <> endobj 3565 0 obj <> endobj 3566 0 obj <> endobj 3567 0 obj <> endobj 3568 0 obj <> endobj 3569 0 obj <> endobj 3570 0 obj <> endobj 3571 0 obj <> endobj 3572 0 obj <> endobj 3573 0 obj <> endobj 3574 0 obj <> endobj 3575 0 obj <> endobj 3576 0 obj <> endobj 3577 0 obj <> endobj 3578 0 obj <> endobj 3579 0 obj <> endobj 3580 0 obj <> endobj 3581 0 obj <> endobj 3582 0 obj <> endobj 3583 0 obj <> endobj 3584 0 obj <> endobj 3585 0 obj <> endobj 3586 0 obj <> endobj 3587 0 obj <> endobj 3588 0 obj <> endobj 3589 0 obj <> endobj 3590 0 obj <> endobj 3591 0 obj <> endobj 3592 0 obj <> endobj 3593 0 obj <> endobj 3594 0 obj <> endobj 3595 0 obj <> endobj 3596 0 obj <> endobj 3597 0 obj <> endobj 3598 0 obj <> endobj 3599 0 obj <> endobj 3600 0 obj <> endobj 3601 0 obj <> endobj 3602 0 obj <> endobj 3603 0 obj <> endobj 3604 0 obj <> endobj 3605 0 obj <> endobj 3606 0 obj <> endobj 3607 0 obj <> endobj 3608 0 obj <> endobj 3609 0 obj <> endobj 3610 0 obj <> endobj 3611 0 obj <> endobj 3612 0 obj <> endobj 3613 0 obj <> endobj 3614 0 obj <> endobj 3615 0 obj <> endobj 3616 0 obj <> endobj 3617 0 obj <> endobj 3618 0 obj <> endobj 3619 0 obj <> endobj 3620 0 obj <> endobj 3621 0 obj <> endobj 3622 0 obj <> endobj 3623 0 obj <> endobj 3624 0 obj <> endobj 3625 0 obj <> endobj 3626 0 obj <> endobj 3627 0 obj <> endobj 3628 0 obj <> endobj 3629 0 obj <> endobj 3630 0 obj <> endobj 3631 0 obj <> endobj 3632 0 obj <> endobj 3633 0 obj <> endobj 3634 0 obj <> endobj 3635 0 obj <> endobj 3636 0 obj <> endobj 3637 0 obj <> endobj 3638 0 obj <> endobj 3639 0 obj <> endobj 3640 0 obj <> endobj 3641 0 obj <> endobj 3642 0 obj <> endobj 3643 0 obj <> endobj 3644 0 obj <> endobj 3645 0 obj <> endobj 3646 0 obj <> endobj 3647 0 obj <> endobj 3648 0 obj <> endobj 3649 0 obj <> endobj 3650 0 obj <> endobj 3651 0 obj <> endobj 3652 0 obj <> endobj 3653 0 obj <> endobj 3654 0 obj <> endobj 3655 0 obj <> endobj 3656 0 obj <> endobj 3657 0 obj <> endobj 3658 0 obj <> endobj 3659 0 obj <> endobj 3660 0 obj <> endobj 3661 0 obj <> endobj 3662 0 obj <> endobj 3663 0 obj <> endobj 3664 0 obj <> endobj 3665 0 obj <> endobj 3666 0 obj <> endobj 3667 0 obj <> endobj 3668 0 obj <> endobj 3669 0 obj <> endobj 3670 0 obj <> endobj 3671 0 obj <> endobj 3672 0 obj <> endobj 3673 0 obj <> endobj 3674 0 obj <> endobj 3675 0 obj <> endobj 3676 0 obj <> endobj 3677 0 obj <> endobj 3678 0 obj <> endobj 3679 0 obj <> endobj 3680 0 obj <> endobj 3681 0 obj <> endobj 3682 0 obj <> endobj 3683 0 obj <> endobj 3684 0 obj <> endobj 3685 0 obj <> endobj 3686 0 obj <> endobj 3687 0 obj <> endobj 3688 0 obj <> endobj 3689 0 obj <> endobj 3690 0 obj <> endobj 3691 0 obj <> endobj 3692 0 obj <> endobj 3693 0 obj <> endobj 3694 0 obj <> endobj 3695 0 obj <> endobj 3696 0 obj <> endobj 3697 0 obj <> endobj 3698 0 obj <> endobj 3699 0 obj <> endobj 3700 0 obj <> endobj 3701 0 obj <> endobj 3702 0 obj <> endobj 3703 0 obj <> endobj 3704 0 obj <> endobj 3705 0 obj <> endobj 3706 0 obj <> endobj 3707 0 obj <> endobj 3708 0 obj <> endobj 3709 0 obj <> endobj 3710 0 obj <> endobj 3711 0 obj <> endobj 3712 0 obj <> endobj 3713 0 obj <> endobj 3714 0 obj <> endobj 3715 0 obj <> endobj 3716 0 obj <> endobj 3717 0 obj <> endobj 3718 0 obj <> endobj 3719 0 obj <> endobj 3720 0 obj <> endobj 3721 0 obj <> endobj 3722 0 obj <> endobj 3723 0 obj <> endobj 3724 0 obj <> endobj 3725 0 obj <> endobj 3726 0 obj <> endobj 3727 0 obj <> endobj 3728 0 obj <> endobj 3729 0 obj <> endobj 3730 0 obj <> endobj 3731 0 obj <> endobj 3732 0 obj <> endobj 3733 0 obj <> endobj 3734 0 obj <> endobj 3735 0 obj <> endobj 3736 0 obj <> endobj 3737 0 obj <> endobj 3738 0 obj <> endobj 3739 0 obj <> endobj 3740 0 obj <> endobj 3741 0 obj <> endobj 3742 0 obj <> endobj 3743 0 obj <> endobj 3744 0 obj <> endobj 3745 0 obj <> endobj 3746 0 obj <> endobj 3747 0 obj <> endobj 3748 0 obj <> endobj 3749 0 obj <> endobj 3750 0 obj <> endobj 3751 0 obj <> endobj 3752 0 obj <> endobj 3753 0 obj <> endobj 3754 0 obj <> endobj 3755 0 obj <> endobj 3756 0 obj <> endobj 3757 0 obj <> endobj 3758 0 obj <> endobj 3759 0 obj <> endobj 3760 0 obj <> endobj 3761 0 obj <> endobj 3762 0 obj <> endobj 3763 0 obj <> endobj 3764 0 obj <> endobj 3765 0 obj <> endobj 3766 0 obj <> endobj 3767 0 obj <> endobj 3768 0 obj <> endobj 3769 0 obj <> endobj 3770 0 obj <> endobj 3771 0 obj <> endobj 3772 0 obj <> endobj 3773 0 obj <> endobj 3774 0 obj <> endobj 3775 0 obj <> endobj 3776 0 obj <> endobj 3777 0 obj <> endobj 3778 0 obj <> endobj 3779 0 obj <> endobj 3780 0 obj <> endobj 3781 0 obj <> endobj 3782 0 obj <> endobj 3783 0 obj <> endobj 3784 0 obj <> endobj 3785 0 obj <> endobj 3786 0 obj <> endobj 3787 0 obj <> endobj 3788 0 obj <> endobj 3789 0 obj <> endobj 3790 0 obj <> endobj 3791 0 obj <> endobj 3792 0 obj <> endobj 3793 0 obj <> endobj 3794 0 obj <> endobj 3795 0 obj <> endobj 3796 0 obj <> endobj 3797 0 obj <> endobj 3798 0 obj <> endobj 3799 0 obj <> endobj 3800 0 obj <> endobj 3801 0 obj <> endobj 3802 0 obj <> endobj 3803 0 obj <> endobj 3804 0 obj <> endobj 3805 0 obj <> endobj 3806 0 obj <> endobj 3807 0 obj <> endobj 3808 0 obj <> endobj 3809 0 obj <> endobj 3810 0 obj <> endobj 3811 0 obj <> endobj 3812 0 obj <> endobj 3813 0 obj <> endobj 3814 0 obj <> endobj 3815 0 obj <> endobj 3816 0 obj <> endobj 3817 0 obj <> endobj 3818 0 obj <> endobj 3819 0 obj <> endobj 3820 0 obj <> endobj 3821 0 obj <> endobj 3822 0 obj <> endobj 3823 0 obj <> endobj 3824 0 obj <> endobj 3825 0 obj <> endobj 3826 0 obj <> endobj 3827 0 obj <> endobj 3828 0 obj <> endobj 3829 0 obj <> endobj 3830 0 obj <> endobj 3831 0 obj <> endobj 3832 0 obj <> endobj 3833 0 obj <> endobj 3834 0 obj <> endobj 3835 0 obj <> endobj 3836 0 obj <> endobj 3837 0 obj <> endobj 3838 0 obj <> endobj 3839 0 obj <> endobj 3840 0 obj <> endobj 3841 0 obj <> endobj 3842 0 obj <> endobj 3843 0 obj <> endobj 3844 0 obj <> endobj 3845 0 obj <> endobj 3846 0 obj <> endobj 3847 0 obj <> endobj 3848 0 obj <> endobj 3849 0 obj <> endobj 3850 0 obj <> endobj 3851 0 obj <> endobj 3852 0 obj <> endobj 3853 0 obj <> endobj 3854 0 obj <> endobj 3855 0 obj <> endobj 3856 0 obj <> endobj 3857 0 obj <> endobj 3858 0 obj <> endobj 3859 0 obj <> endobj 3860 0 obj <> endobj 3861 0 obj <> endobj 3862 0 obj <> endobj 3863 0 obj <> endobj 3864 0 obj <> endobj 3865 0 obj <> endobj 3866 0 obj <> endobj 3867 0 obj <> endobj 3868 0 obj <> endobj 3869 0 obj <> endobj 3870 0 obj <> endobj 3871 0 obj <> endobj 3872 0 obj <> endobj 3873 0 obj <> endobj 3874 0 obj <> endobj 3875 0 obj <> endobj 3876 0 obj <> endobj 3877 0 obj <> endobj 3878 0 obj <> endobj 3879 0 obj <> endobj 3880 0 obj <> endobj 3881 0 obj <> endobj 3882 0 obj <> endobj 3883 0 obj <> endobj 3884 0 obj <> endobj 3885 0 obj <> endobj 3886 0 obj <> endobj 3887 0 obj <> endobj 3888 0 obj <> endobj 3889 0 obj <> endobj 3890 0 obj <> endobj 3891 0 obj <> endobj 3892 0 obj <> endobj 3893 0 obj <> endobj 3894 0 obj <> endobj 3895 0 obj <> endobj 3896 0 obj <> endobj 3897 0 obj <> endobj 3898 0 obj <> endobj 3899 0 obj <> endobj 3900 0 obj <> endobj 3901 0 obj <> endobj 3902 0 obj <> endobj 3903 0 obj <> endobj 3904 0 obj <> endobj 3905 0 obj <> endobj 3906 0 obj <> endobj 3907 0 obj <> endobj 3908 0 obj <> endobj 3909 0 obj <> endobj 3910 0 obj <> endobj 3911 0 obj <> endobj 3912 0 obj <> endobj 3913 0 obj <> endobj 3914 0 obj <> endobj 3915 0 obj <> endobj 3916 0 obj <> endobj 3917 0 obj <> endobj 3918 0 obj <> endobj 3919 0 obj <> endobj 3920 0 obj <> endobj 3921 0 obj <> endobj 3922 0 obj <> endobj 3923 0 obj <> endobj 3924 0 obj <> endobj 3925 0 obj <> endobj 3926 0 obj <> endobj 3927 0 obj <> endobj 3928 0 obj <> endobj 3929 0 obj <> endobj 3930 0 obj <> endobj 3931 0 obj <> endobj 3932 0 obj <> endobj 3933 0 obj <> endobj 3934 0 obj <> endobj 3935 0 obj <> endobj 3936 0 obj <> endobj 3937 0 obj <> endobj 3938 0 obj <> endobj 3939 0 obj <> endobj 3940 0 obj <> endobj 3941 0 obj <> endobj 3942 0 obj <> endobj 3943 0 obj <> endobj 3944 0 obj <> endobj 3945 0 obj <> endobj 3946 0 obj <> endobj 3947 0 obj <> endobj 3948 0 obj <> endobj 3949 0 obj <> endobj 3950 0 obj <> endobj 3951 0 obj <> endobj 3952 0 obj <> endobj 3953 0 obj <> endobj 3954 0 obj <> endobj 3955 0 obj <> endobj 3956 0 obj <> endobj 3957 0 obj <> endobj 3958 0 obj <> endobj 3959 0 obj <> endobj 3960 0 obj <> endobj 3961 0 obj <> endobj 3962 0 obj <> endobj 3963 0 obj <> endobj 3964 0 obj <> endobj 3965 0 obj <> endobj 3966 0 obj <> endobj 3967 0 obj <> endobj 3968 0 obj <> endobj 3969 0 obj <> endobj 3970 0 obj <> endobj 3971 0 obj <> endobj 3972 0 obj <> endobj 3973 0 obj <> endobj 3974 0 obj <> endobj 3975 0 obj <> endobj 3976 0 obj <> endobj 3977 0 obj <> endobj 3978 0 obj <> endobj 3979 0 obj <> endobj 3980 0 obj <> endobj 3981 0 obj <> endobj 3982 0 obj <> endobj 3983 0 obj <> endobj 3984 0 obj <> endobj 3985 0 obj <> endobj 3986 0 obj <> endobj 3987 0 obj <> endobj 3988 0 obj <> endobj 3989 0 obj <> endobj 3990 0 obj <> endobj 3991 0 obj <> endobj 3992 0 obj <> endobj 3993 0 obj <> endobj 3994 0 obj <> endobj 3995 0 obj <> endobj 3996 0 obj <> endobj 3997 0 obj <> endobj 3998 0 obj <> endobj 3999 0 obj <> endobj 4000 0 obj <> endobj 4001 0 obj <> endobj 4002 0 obj <> endobj 1 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 1/Tabs/S/Type/Page>> endobj 2 0 obj <>stream +HWk+q7Տ!45l~ !161]U-&쮮ԯ:uΩO>t<>O_O _'*ܿg9׏?zPq:obӳt<$f÷ytG|n|RqZIkNs:߻~'@$`B02/~oRXRl>ti]&?tXd/R!8$@5VHepW`nиWכ[0=N"$=1?[b%c( }rQ(rT3h}VkPٳQ%Wh}KNwpf9,'e`"CxX5㠯U(A|&M-yǶTDy,[ȅHNB3~0+U3qfoz R!c}vD슀^%$Aq, +8#}թ+Y!EJ2tjQWw?aÑr6ETiE3K^8|- kʬJ`h(0&vջ_a96ʺQD#%TCL) {ӘI!=ӣx/>+3MBE3gxnEkGUH nu4 2$kmλ0N7Nlcf/ЏroKD:݊ 5ҟlba,Ɠ 9( +׷7u't S66"ϖwZߗe8%Ljn̥e7hQ_ [⒳GlV(].nd2>p(B(p] :ƈUUU|xoDy)':2tHBYKET`CMçARՊ3(j +[G;ᆶ@+b;]$6a SL+!7b9׿4Ĺ蚒Yv)m^a( +odae,b'.ӈB$@(C5N` +:(tP|g0*T(ta3]Z]i,2Kx~v@[n Msc.OH/E?WX C`oInP +:i!I"A>)3~rmk]}+vjNEU)-PqFgVsҦ'}]ñ$Qk{Qvr$˷_~aCs(:/b37\}ʉ+āvgzfD+z9)_6Xqmq%ܮ=B8O2|Ú]V'Otށsӡ=c:$$z;`i][!fkD 6ޟ(0[ʈ`x8v$H3 $/`d =޺Jzj5q}d"5 a`JW7s!?.V8n݁#cZ5׷4￰EBee(crM,69E{)z9|ވ8{d܁6tcH>ѨS`bװ{0,G/\]3ܴopTY!^C42=pyP6S2sFt@ +զv/US1^qH@S^-[㍉0$ ?3`We]? 4>V?kj]raZ'$M!:mx%6ŕ:c<ڇ8XT'0x1@ lDc^|UjȘha#WFsEǶǞQ"]S:8\!* HY`a|ށ]L 0 65h$e{.st g{",2&ܩ!:=Onڦ鲻_7-N#`r,9l!_w_`ڿM_3ӧx|_ld_8wޜpH%'-./1{Pv~3h#c,HS.NSG[</ Q\0Zؽiu8&k@oJR9Po,$Ӥt6Kͤ6NwJzu6a]Ha$nPeDz;R R8=u-v]ҪC_WX6j +jH]M uuJ&e#x(}6(em~1_K%rȽ00m]rإD%F +[B\rwvv굺^5CGdZywa-7Pfy*a k lL!]QLBe]<{'.ұ7Gxiha5K܈Ѣ _)twAY`2d.- b6$x9ۀY wŔE6Ћ޽j *{*F]:b)v8$(&Ҕ I($,):8SM(LՖ^5д3*ZNO6>ؿkiv\;1 ]I4[I?3S'ac+l(4=tT]Z=PZMjVGqï<@$1zf!ZVWϥsX"9S#HAPj/kf<=D~J^1ÙN4,$wK~kY?MFNWHH5cfHQH@J.!q<]ke<o!r7 +Sğ5"C{=GYV!d!u풩^ J}f +_'Z0Smڅqe^=G("O 6ɓ:ef6LP[Y PX8h.j#~S[2 d -7u[!B1)-XTIR긇>˔TMbo 2WQX ='Ёd6b!!$e1'Bi^zr}ur +f鹊&N_Ds,Gׇ|t8 +Ymޑ^{fzYgqQk4&1CUK-Qƿ:Ir.671o#qruC"D\όЉy!>stream +0 +@& +F*Lzk'%ֹNm\ܱͩ $ 3o|u`D/NvvH֙) 2DVl,$dZs-JM=q"AGkڬa>+-sN`z>xVpyxUTC)G^30w%dA4Af)lgȗq'}jI$ʏBH㕽*V!EPʉW~ ܶ &rv0oik@0؞Yf|)Y/bb2{΂eQ\&vǧES1DO.&|uv4~\0fe%(8Q/Cl``WP>x7IDQJʹ GG{yϸ:uc}p.ùI=",Uq/[-C8LF Dz B,O }M}f6Q-CD ~X5녱X!t&Ȝ9C.X=`JxGr;j(en@<4-7+&CMy\c)pQQ1HT!4ZUs;gHf. +-]>4 ?u0D tti`Mov? m?s{.ssW>id-}>\űܥpyy-kۜOIh:8e0Ӿyjw16mHO{] xn9 Hes3eS`P d(}m(HxԒuXpY)ZRv;Y3Z1=:X%JxvQl+C SWk9Q>_zcHw~32q?kHnӀ(BEjˆ+͌|E̖wVhd1d45{rſ1$N߳ib=8$5Du5,,#(@`rXY(7O18 6at堅/̚ެ%;-KFP!I-.hi;<؜CZ=+JlmsD 3,LD +#R Bb(rhw+֘! N# 7\BC&S}ҡC2HT}l=H]`}~2lny8)J}2itPP=>Ag!>ї78~opq0]]he7Hq>|5>BS_ٜ7ȹA!~WEoE,@7noOx`}V[ +S[W8 >ntaeNC==Fa$$bvܮ~ +](iax^æZ}EgȆV%iw.2u2_9!ZCE5L堑Ŵ`M#/e~6CMP8PsAws&ˤu,.>E0v<Zmf1Y hfjjzF3^;`wR)Z ^;0rfi9u @ےTZ ?E] ;3FJC77^Գ6r X{a‹ISI!TAitRVF3R|~%ATR=/7Rq!e=`M'g4zV]ۍS-\pkOD{|M5B-#fy?Rք}}p1ϗ2܎pF>fd)TXUS2TyM@ Ǖx#eZZ-aSˆjϪ)H;%&ʺ֑USf~j-p5”/87Vf}]9W0^ Rl;u YW V?̮\Z#/eϲ 6x; ea5md_/v8dgcI)0܆,Y$LA~f_mJ|y;=04u>98Rx;8Qiyy!d.MlkI&3nW;8"}1M?Qt2壣Ywo% +.b`"r}/о'T^Rp8AVXZ6t83yK/~C Jxb'ݝ rEV( 7~~{ai5ծWgGT\$GE%\]!5cQe#3 8z $ eƾ&o^} }_ u;=F-s1 $xa9JP\(9"?Z 'mX0Dvrtl e{Y]庋0Cq\mACo飮cEQdJ=i-z*)`v^?8@2c)R@=0 fO/@^vc$䇔65}d4 A.?2+Hגs2HK qoeAe'H'7=ԈKڏ7UZD_)=v2-e3Vtk>om@Yȅɠy[Cs_մ֧G% opØf_9B>vՏ^_:>E 45|]MiMcpb^NӱLd#txm}+}QchTu +_wu;3CϪXS^Œ>vkYV`v px-Ȍ |A:np9DxvV1U]+5ϼ]*v|1b>xANAYnqw~CymOzu_y*ATc2rjd+a^7~'^jjz-BVb"uÓE59}dXүhhB=UxRҡ>cA|qT!R .m!,|G^>H䇼K Ra_a0ȏrp>Alež8Btٰ';,Y()u,rY8V">\3@9UЕ13Q$9VS|oH1j/_-R-7\u+1 9b<;y>jSېDo KoIk*{ V?I椨 +fH4܈?2*Jc$Շ1غ{sY}JnfrC~CUko֣)WJVW{!]]UILg~S|8]&D0k—<})%]ΊJ5NlyO䯟 v1q?H63-u7yTbxET1uGbL[ ;L ほ QVJ^h;PN~cQ!6&t v&{fF,4_%5T wN23Pt}yX?jɮE u+PxPq3E\ꄖųxj,693rʼud/oIJ-ꥡR62g(Of!6>m+O6`!~6*'Th(c_<Myj}۲m1<*zs sҏ(S̻8v(1_{t)kuaf޸O5J' +.e*DLg:ꕨ&@U+j껖JY`Z,~b;C="+~8>y Xlc8qܣ9藗&F&>PFK2R9p\( +#< ;! ߎ3#rz^;Epڑ ?X[ZfgI:!1Uhg]n\GxB/ +#PFZx#WY܃,SU¬#X1 :'=d +v}$ "aOG4RBdk[ +e7?D6dHe$'ˑ +خ*MCk +<?#L1zʊ$^mhWqh~ùv" N97@݃?NղjbCy6OJ*&sO4'0r%#mGφN2TM]*޵H&MF|b|TZ ‰H*_}| Ƹɩ//#̋` {+ñOXcL<U[zbNmYb[,%]*ҥ&TǓ 2zD{'ia`DX2Crw -c4 \.o8ѱ5@\<ߩGvWLӟ`*z?Me%y[y,h@~kNPG{-.𸪲dM#t5l2zQVNB*ɌEQ"ÏURpDk }7% `T5 =BvD4q1߶i,d!ߺrNsaǽ2\P&0BP`AwKLLx@1r[H󓺴?yj}-l W&+HD"%w(?gj v"L3\{numYq\,~Օ% v^Xn <rY+4TM9A)}2Lz5L6q圪-,0lưB4"X}ϽśzC;t$&87F`0؂=8I9+@*+c8Kyo2S#,'; ȻNu ɲ;?h +=f]微/Heu#_X%ܴ +vT)Jw9^:LO ?h^8eTPO`^ {"(Л?|NT˩8|0+"LN +1? IW'zqI}Bg "5ؕ%QOkr>yd)bdƯǙ.a}p*5bF7j*GLKѕF4&Nj׋[6~gYTV]WDA8qp8al;?qЪ ~=EFj+fwqOVN޽cNM*V"=|c1do N{֬J t^mFj1Gn*QO%(EbwhiC{ Б珄P!XrS#kaa+@_gCs!g_*wLTl AmXH2) +o)3o0.8=, + + #}]2-km)}a?!0ޓncXRXh)xҿLQٜэcnc9& kf($:^GUBoCpy4[wיÖlVJK/uL9~JK1'q"r>Vy;i]Zz3~ʞ;XGbz3Uzj + +y!/Uxpݜ0'ȯv*EllLHc}+-q^ +NJAsBS \\x7 BRq:Z$4Y5fcfnIKZ'}TeI~74sLET 2mq&|njKBƜ4a x/7qd]#LK|_s_F>a4Ôa +߾Q5K4׼V>VbW5Q"BbJ{-l +D"&X'`Apn?|f1?ST iXL )Q`Jwg +S`&S+%Ui3c*I43`6ڙg9;"p;QtޒsdnxU~b`&pПwl8i2fəV)eZn#gO$K.+cy93H:wHVBNsp,%J{l}/a h$Uq# 2x1X:T'L?4l4k) Rh衘 2J[&0 ߠDVM1lRq_O9X ;(z. MvSQOXGyޙH6 Hi[^]Ls1WmjŪuF +m^Ky( F]#W]0헁b9P p祳T *VǺY}W ,1%}Nk#gZ Xo+\flST4GE^X"qxҤ/lq, 髧0\ݙ=X 8>SG$:TO_yG/=Oqn(xNy$l>_&a$d)(H9TfnmfA:jA`{C1oFD+3d";Y)0ZC1p'㇦t Dz<8!r#k ޷?dzp;NnEcq|@^e/lL`p[H> )J1&S(ȟޥ/&P=Pl @;ySk{ +i$N^t\5+!ۻ0RB{2@Fjm>xM@9NYRC;ӾaW 9" mIߒ$uo|(/ZnÑ^B!"KZ^qn(7 OBhɈ# ڧ q-S Vv)ָ1 T&Dd4Ww^b!<9/q? "s1tBh,"Kƒ1Ĝ1mRq1EIs՟lP.mԡEޙd7>;1!悇65(ڋ!UXIvT݃GX=L:Ok+ ŠpDZۡ/lib XZʵMbaU4 +flZX*DSج_\ ccou]7x)s"\_m2ZY%baQ/WGx.#1ơ +4RW&b"K#{XX~ q\Ϯͥ;{ƘZm]FOGJc++JbEns$4X{j`~ub|yٓ-SX܌L۳,thnes-`Rh>9"}$|~ RF#TM q  @ڏme!0^Dr6J{Huo&4[&"RJ|ugAj5ǎs0xop#Kћ-N/GC4E* y/A)u8菋 .+6Gq:b~rIǘ}8).dR?ߣu'V%Xxc}:WIEn^shMNhbUFus0ӆ=ARgmD4&[׾ɞ}tC/{rƾ )P0CťŽѰƢIM|uCe&upVϧx6%DuSs>~ED97Tތn7_Px  +Rv!*H#v$AM>Hi2 ^?[ p8\V6q=yT t|K$r&co){$s#\A@Ê9Ɲ|!VR'w^0/U(c%.L'-@p_p2:hB\Q0Mיiә:{Xl\´ O|SHh#)@K{ vbra✋@+'Y &p S2Hu*.d#/չ8}bK>B,Y E+p)%{$'n_5=q\؍VoWؼ2UM1ghOFcRѳD_\^Lqpl&k1p^OBo+Q !F>G},"rq~\나f{ė-zHP<׼:,E׹$X\]yHP~W)DnS6Cٟ⯑(jjŌd(֋-W+c?S=0ZG2}X+"?U?c6p-PN]qgrXH)~٧ip"x9xwzۉa{ΓφejPQ'BDyN%k+Y.[]Dmht++zc!^4r7^ } :#4?;_B sQSGIFYriήz#rScܦ?Bkx'\M+1`T^ KxpkZ&9Xhp[lQҋ㊢SCjM/ /h??O ?Rːӷe،{aI3G¤+sO9 W!vM.{~)͉h6<\m\})yQ'^RyS.[B,fj b@FztFر LrAR pL-_#Jvc#rFeO--^z ixi;D<e FbώQ=~% .8uV2[8|hp;8^hdhf΅@1WG?`9PP}(AF7M/t,j/SdS?,!]"j{QሶN3lͣ[Q44{cW !<G.ڋy/y病R#:#J6oq_~)Ѕ5 6=%xM3RH8KMa.v<6m'^X=c ( +vwJm ^ 7%X1pnUš.;C3!ocZWl扐'JXFPyИCc!Mx]+5*aC͇WJ,yZF])^]chh(kuM1fmmthG֭$%Cv8tgs8,Jq깘#vX>Ρ9+V1<4R/8znh'n*'Bw}X2Jl}sXAY+~)C@cd0<ˆq{ 8/A"Vt8]@hY.`n.(kct+B#ckou-ue=>*|̯t#õRfbN@$WAGEgx~,@'6^ML$#Eozq)~.хݺjϖAq6s&=#C(moufkqW@y5cҵ.E$SS|F^&pM<7y/ey\BLK#+e9Y56}Pkͣa`t3kiAdHq4qzS$vgӍ9LG+9 n:uO •18b&S{*Sת(SVys2X2)HwjE?`$L3܈˴~#Oo{#F 6Qtc٣aL)9@0Z&kDQ?uRbxY X "N}m >nNX +:6Õ9:] }N ;iXFehΦBK'zfPQClinQ{yǙwJDacn\ź)֮A륑з1YU +!nX KruR? TmR/k:-!]'Ig'xrμuoQn냰CY$굎nOD$SXM䭚 9H`O  + /tԢ;T 07C#w},ѪC3'Ҁ)%Qi>CQzu<Z8t4}qreD-Py5F:D b>n-*ϩS8M'o*sYF 4tX2g?_;=df`=)n,;kּj~IX d1 I0&qv +@挾ɾlf]Z2)ZjNk™Mz +SG[.4ce ,-_ +QHV !ȏj^lH>mB);%nҟ6px]-}d7Nb-3 NFlMh_\ZnV'UIP(n&X+?FA'כ/ʭ{`;1V _ }DӜn `Τ uSB*_wwb7XJ(51p;UPJC+$-_"J@߼D!NyoxSzT-ӧ%1T_(ο-Ou-q#}@Og)9fG%$et͍Uʐ4A:`Ug$B0#m:dIr<*a:]A}yHK@g +."N.DŽwbHN;&h95o$DX SaM gỺ91 E2:7൩0`I2gܰ]ϥâJeZ9\+%(ū?5+emJ,< ++5fe &G.6A ENJg2Sq)O[>G9>X$ +xav2\b1ߗNJ*Ȩmf9+ڕ-4m!Ƒ.!!\0TvL%KԸ4eS" ڞ=s'IJL}ϻ(>Ʌ8bhbc:э:$,-*qc6MXu5,B6>d,pbvZJw%il3Rbq~{+2Ԩ3,٠s)4/l/c ϾqcM. Ѻ :\<Ӧ(DBA -Ol?Hx A1, %͞}8!bqK|yUחп\H}|7왪lDi 9܂sBJpÉ*D Y0mVz(v;ڊ=<`!o؍Dl@S?BVay!ΎSE:]_I0=%ku*?[CSM1 Axy̱s{s۷8 +!&`ڃ5i +U\́,xc.ӥ3Z=~JBQv/b G+{vB +_bmL>3Oh'*vh)S: +5q3wSwLեϢ&/ +V V?-7 ^+& Iu$R)(4!; +ydz4!>zq;hsFh*Kv1FyZxKnڋ!ެS' |Oo89xűJ]7gNIΐ^ ++xvҮ E;C}VӢlxn߼ɆF"!DSZڗ!Q[Ӳ0z.SYBrG*>f༽a yƲ 2h3gFP[ֲ*zHY7\kY;Ani-/ +ْ TߏuC`]KQρM\GIGE]\d׵3yiy)A-er0`}nDkq, MZF$`lt{G2^*aEeЧ5u>jSGbdz?1^Pˢr2mݮat-+]e&([xЊwZ΋Y1P*:)3A<)bDu]7Rg.䥈0/ +uQyofۦ!IbD"sg3/fdLIFHue낵Eer,czp`F~zUUƂh}z-KCR +!=F7Lӱ>Y1޹+S[{2zS<o;A@#0 Qca +dc:\v0YITSD 0vCj'i=&܏f@[gcGX+Aɭ=C9yKŽpJe *u:_(\ZN; `RI$tS/8{),xR+ V鑤VUa?L-w5-Y(W¡7,ЇOc\Cq:8@M'+$a>F@<_ÉQ(ªXq,4xɱgh97:01i݊ep0֊jYQR 8w6P"$k@ +LQ!zU}ЂۧҽY{:(ak hP4go oWXO\ϖF5% !M~^ :G x~GG[uLmo%WoH\6[,\U*Ў1rqpi󣶘 =b.E$1^#tL޽@ $I UgOé[| +W?rb]f h4S>4 ,viMߜ83K9t6?VGbtQɿ= EV/P4$OEL#m 2=4QW+K?or~ln5t 7"Y)GЉ!fH iwOoc. +:4rmJf +վ0^h?$mD|K> Wاh RaDzdPxgzo]D4.3ŭƏ0R~s mD7qK6{Vy2[:+58+2Bz^ +R(X׾`HfzNǍ4 Ҍ_G.L8\4T# /\[\6#qڰeiC)R]zHBR}lZȒsw}!,GoZcPz@|q UDUtuvupmndD@DZ{6 h#9-9Ivo,ߏyapT ݄WÒ-bG rj+_ +Q4!ʜɚ r=>U2)D^dGaA){[hHs= @%)4_;3{cʊҤ9r#|9Eu,# +隝Ή8NՕP @>~Xqus*{١a }견 휁۱`v?EPbvcH\0at94c_M6Xx.>t(O8 %8TNSkydo 0FޚԞ;#Xp\E J|v1F LJ#haE&9_?u&ZvZ> n\Dp_2?N+U5hAW+; !$RF?aJZIzrVg'JNeX~~;g#GtCce)>>yָf:MMq +qIQbC\#*7X=ΰ|d%8C:M+MK\ATOMgP)&`m͡.jn }y߽H֍Kdz\WLBn۠C?]TӁu4bE{i c}g::YtKWcCF_hҚOpbT8>hW69p Id[`)!|;*5@$lGJٟqX1׌wxn cv&4ۄ]亍za -yCA-ҿ&q?熐4d$f#Jh_b4 fz1J}_i*EVG3?82%EA|LfoUQ% CQT Ժ蝢nMmֻ{Lc}h~h!%,k1CV' )Nk)i:+TVbcQZ%p1sGr{bB[\-U=~5e,3DMЈ"э83!/5{ZNJۇSpi㜿5HC.uzSUV!1]S*t\e$(-Dav_X\v ѹ/0t|*DDv^ @\~Y[N p"iƫ=sHzݦ JcvG15ۨa⡔usfqFP:vV&s{D7cԐ-1wBx ӻ51&fU\פ&p7݌ qWZΊhcTUsM x ~b5$2:V:'`QX0x@ʰkT(EIzqAũjoye '*x8L͑VS<d;08[NOf^-uA݌=7n5#l,.EJYY E +ab_'QXJ&|D#H9D_(-4> mo̼@FV~\09lVv emœz(fZwQMI4ŏ|hoMZG$6055D_&JD}}mTW[ ?;)m _$s$'jH< VvM:`hrt8&B64xkU [Zp#ځ$q5h=#0|''qMhbyv2K͈OLOqL1C;bCU!@T"9q?)jBe@2mBƒm +c%}Ap l5!~vjZD9h:D1ݡ 8)X{0))os<54]fP-܀_CܔzLٜ>,?6 cSӐf!ӽ+0kg {@^z=gy^Y再*cVnp#J;w7ܐ0 YzcM}CFakwx1ls j_E4Z%hX !sJ4;5 ēgF*a,A~IbL TFլyjU91rlBV;;`9'yŐ#׾_/^ԷtϘMiW V bJ^LMR|>5[ܥIk‹ɿ[yNy1:%#ORRjMK; ֦UKB~ Fdxĩ._NO挀 ,w"Y '_"Vx ޸`T7oe9jZ+dw MW-M Cd@ -v3}0U%3b.w_WQK1ϡ}̊lmF'*ooc} jl( A.~ҕTSY+[ɆW2H팰f!K+Pf ӛj:J`ظx]W;6|軐)UAj^CX<F9QxM®ڹ mUndVaSO4@HؓJ(Q\ɀE *NЇ*ĪG*-JD5hFx+;۶-c_Ll9܃S.3L M]٧Py[Eө0Ϟ=4Dd%QI/B)w mM.z dL.hA) WLY&>֨H - 8j>KЫ:u,D2ȑ +ޤ PGʑ+Ox%L&rānvJtJY߲=9(`<]Ui39T>=gZRQ`DW,Dcm%q>HyC=b՜0xa#q枋 vɀSJt؛ciVYxG7̞c*%D^L0ZNZ `],I&52AEcJ˷2|tqstB PLf2ǧI5r>߷ܚM*$@l/5M DS wQE>"Kx M;b\ VˆuTR#f3 +ΥuQ"r{v>ZM6o]\^)\.@xV|+V+g9os cؒ)۝hdpiI/YY(`qj[q!ôqsQKƉQV+A}|8w4`N κx2AЌURٕ=xA^(֩nb=(*h½@2Q-C_spC4T/[]eA>y2M4BJJ%/oUigp[N<.ӻ::hXv OV"ncOe"Q{={5+}+U5:hatZ~gt~qĨ!PFJ/@̖ H~\<"TNȌ&SKU:P 0QeWWSY"{FHkU2dMtP6/+ZRA"Ѵyb: +vD'A^ӗ:gr jgPKo*4 9hc:"yDshKqdܬ7-u#B硚П0s3O02G2s+X+ Z*n1itVL[%i:K&ڶˢvaV,ة WXZ< lJv,~qo[6KL/&&R/q련e"E~4x&\7 +.aaTf.HN79ԉioW +^%E.؂}r:Um<|7:>^EJYC7v;%|Dr.yMjD+A ;+K:AuF mɃHCMãA¦$Yk#NWɞ"IXY}pr3㿰;Du@1 ~ψ L?Aw^BO0HsD};h-!o'V`!3,֣)!Q +9,wz]϶KL;էnWi3 ľ6tb@,5^!ja.n&*خH$q<Eg jU+}l'*Q~RF!&g+=m p{nJ4ZL~cYT&]rP>Ñ + +1uS +5JFWwSc03ӊr~^%t;TD^n +ɘqRh:3@{(<#?gX j {_qv;@ʭ}-c^-DS\ulE<{7&h\UctRSӛ6Lg 3Ҿ'0T:hJ{yk PG[az1P\V瑦7c6`䔉3o)gU4kZ'6aU7a@\IWbu"9! g.'F ׶jP:bJҪ3 R'=hF&;=GDcW09P c JDUaO]lg6,bv &̆.nyŐ9tI"#dr{!75bQ-3,հ͖xWEr]S4}p.\,Yą4 +Ktd?Q9{e-?cz[b݅)[j{=z|8kT"Ȭ-E.vLDo,Ɨ u!JвqN/*5&•W2< e2vHzEɆ CbE0XB PLoJ}~!DAk8en|v]6$ O=2x{rZ#Jgn ͍eɥ<92V3`e*yCJֶju5pIg~A\u0lJBߘ$RU4BzA nI`Z#Jy>i qA+ԥ=Hm"xnżzdeF!|u$qݠ>08,NWs>{ o鵥c}[M?I˫($,]]̻K:]^L¡][ 3*2J.sRh?ωR*+FHQrjF֬tԔq,-Hx5muRpخXe*$TAXB?HX0Ia )͙B8^ж].DD&gZ軄K1!c D) YLN{7ZxR)i_b؆vy02}T㕷L⎪vP[<Y}Z9$A=Nꍟ!7R#,&YR.GiTz!BCʇl'3?%eSE>x$O(U%gLRHmQPz_̪Lnu1vXʋ ~1kұ9pyj-YO%'K%E?հ.͇y?cAjc}zf}L^ sFP8)X6l?jU{%DhlKX0[ZiHY ke%0cS熯wQ0: ޼"79+i愱ySs!*>dGqfǕ^TR=?G/!T5,Y\@=! 57pw(OR:Mp䶹#mfaeEnY rQ5e5sYe!_3=;k$䆵¡ t03"r,<}M_>r-ə]!7grg +I+3gn5Z÷ERBȲ# ʇsldQI2I;enl= 8y-f2-[c~@)e%K:Pˠ +8/}>kT#^_f FNh!Μ J=*TָJ8gAoNYII\\uj_TpiQ2yEXꪞ8j׽UWPZ\7ف.ݶ}+ܝsK$lN|3|xqm*]S^<>z5Ko;m\*ȴ3oә_{ 9e7?M!ܩFEN.>'#'A'P7PfxzT\(uC#@z A:}G!)uTz}T"c[qǘݻnb8XMo[O@\瞓wгv5|CY <<G+ 8gC7o5|9&O5/CNH5Ւg~ 0F#=MiQ~|)/*fMlrEA{T,/ؽSvwHH$,rqDTixX^;6*)ҷRxU7:LFjw" Yj`ϧѫ vLZ+q&b; H(_\lY?Sļ*Q4fblĀUjS\w8|AiIos)YBdUO +u>65?$u V%RYɈ35wbdNVbX3 X"ר~Ɵg\sCN7# ӎ6`#2D!u*<|>sH; OL+q|-OELd0tk>6i%!C[ ͓%8Sr5tl+BfZ28P N0Uz}KkUJM +/S`1^_D͘G'*l192NHcvhdXlг9!DV48xOe}yE/ q1aKȆvEhYb@*Ϭh'jW 5jRu1-bi}ْK9z4a`Zȥh^Hg^)duGVW+ҕ!cp C%<ZvEgOi!'vJ< (eU9ߗ:+ʓ|%rPbOA`M{/,i`%nQsrrnxr/?&'AD{*SD"Dh +9>sؓ6$㿡mL)%i` !ɸ^ݏ0B3 \ \/FЊYdA!$ Owb7F CJ@,(BG,}v\6yѭD,Dv |),jC㱮@wT+pg1cЯS[a_s rgELsImuʻ&gHt~b?J*:>:5|R!Gb/Gmh(Q J,P[>f>fP(xjE*D5-D|MLnafz_avN]Cvuɍ^6 {b&Fy7z !N!T9-Zbpcڷ-hw;\_ݬ3V\ +| ܁Pls>)ٝ5ES譻t Sϩ8/>Rgg$3պ%0O ߩf=? ɈL `:6*ݟ`mΒ8| )[DXN22*@:_o)GUM"vsd FVLϤr Lh f!+ʠFt o37hՁG Q QDv)n|Ttd 7EqyUYP]ZU*̖li.-F^ذsVd::G +}/FTh(-voPZynHh(ݘ\6 + U͵)Rmhu0֨z$ rOwܠ+FY=Ɠ*oE/ҋ2z&Yc݊9uڄ)!4]bw ׬T>U! +Z\--*IK󗠨G s]N&ыEشJ[2JⅺguR,= Kw*.jnƯԑZ?DcD !ozome,n T njZ]b<>jr:MDj 6 bᒄRHEk5Pq@gW*ej9bh +rb +m +tG0*FB㻳\tV{'ʨ9.QY*qcSMƠ#vLikrγNXJ0L}žW'@ЛE*OcǸc -A4 {B׻^bh}QW`)ag:[~ܻ*U&lK'26n5s$7<@~cެXW.-ޕ"PߡeȲ9JX\{8p8f3"F٧x,N9p#4+j=Ț7<&fA;NQꑭ/|% [Wc]3j*}0FZT!T z!j͵QZ/QZ .?5Gm' 'Fv vLhe)yi +ꣽ$Is;Kau=A o6VLtM3bqGyn@QZ](v.6G/QRvo3-gܧtNA)FgA*3͞'g)xȃm;ppf(e9ft!~c%fRƱ3EJ/AOnpE%5c7hot.=Uj""m]qLjUBC|s0+ K꼳pG e0T@jdA)Ǥ99q{&BV!ϡ>T]/^g!W7VD2py,*g|h*;9Cw%m[lXjڦgzԅ\8PsػPK'4ݶya=7 p44 dc> +m*Bj)bTI@?jR)ޱc3CV? rU +J.R;T$ j~19:OKgQ(VNLj[1蓒1[Ƥ,ŵjhxa1MQeQ"UIegUxQFd<<档% C>UU2ġ8 vh85jKpȂ?r[^1\EPf1 atf(E>_ +q!ĴnF8/f>;wBiV?) +WۊGT8eHxU /I"*qt@/,ntyD9@5:@ZLnTd`˰ lXOOv9.궣|7,K/7ͻк񱃚>/#Ӧ$x> /oiX|\h`8D,YYH2pd`wQ8EDjOAy]z (rFĥOoe2dv@cvReh ;!w,? adߡE k 6vP6Q2̠܀1`+.-?ݍVEڼ@ ݠnc9; rlv_w0/T4&jmݫux<6*tۤR.ٶ=~\!T:Pz-~,]!aQI#32ۆ9#{8?c>/tifS-Mרn [#l֊m1 ݺBXFo`}U~YT69C@m._:_q^FUFF70 3z~ WPOz$2FXÇXffFKS_,˫pi| i{ шh#G}69|k1ձ.*uDsu+1>/RF>T8ޓrC ;2RެR4~@[亇Hv@"k]ы!]Aw~[F.ȲPpwAo7eу_~.+6M baA5$G)e^IFr%>tUSjbnR:Iv9}ͣB_j;s +)"3޽m+Rl6Cz@]?ek[llɛإO:pBJ/:bn(}lX8mNG zўXj^e`PÍZ~o +o GhqgA8{C1=P@ؖi[08 J7}DI zmSϘ un๫ŤñYUO u߈3Ԋm@Aoʰ* C|_]e/3N-!qF:zq8E2?!)ܺ\thɇ|-G,NH% TV~"- `s)C`,3^Ae0}V:Y:TiaڍjJ bA ksF``G WJYѤ]л_Ch)z듼PP~ #9ox"+s#`}0O{Oފ5цCm1 +'~SDo{rf((`+N+Q +O9ezt03H|sDZ- #Mo(~{)8AfʆRh֨@IrᶥJazy [r2+ P%'|VQ$b3YgVT#|/il(9D;X'L0}^Zx]XV9P)..9k >"TnsjyS@`ǥ4u2qy,,ݍHV ݒ"!gToRIK Fܞ*{dTx/_*cp^Ӟx}9 tJY{-Ώ1$_|&TXE־]Rh?i68k3cv)/ `k!]tSe)X|_"ۖIoJ#7zlq{BͦE:)F?+"/SЉ qSk?HgKez TgȽ&gw^H#~Mԗc>y 7:||ƼzOЖM(B|gTm2u?:1E^c5+aWPk#: |Dι{,E%jNKtk0e8̀(0y|^/[1.@DoJW}Vz9V$تe{T,v_Pps7UPbǾhfEm -cO\uV4WpƾEpx,Jy`d,_塿Jৡt9R,u/E]S(P6猂1Y54,pJ&=S +9Q>"bc,>I4 |Nk7'ڄ-w,rƓFWpֲ Q䫇@'0SؔCzsv#\<ŔGX8Cɽ_ֽ&fL>Yf ҄;fPK c'ecQR'P"<\/:%]["쉬3(ٸeL%X<[z*2)^C21ĩK)51MX +iqѵA> X?|FfĥFJ|`,W=>RLۡBQY3;+>ZH5JscM$<$!WE\:L߯W>-j<XEzE{gW .`H]l׌n$mRayfߗ{/%l͂ jjŅiXU9E3 \Ugw;J-$Fer9M.o2`-u>0jܚJA иHhЍP`ExO+Džݘ`6Vyl3Dj#ClmCHw={&O ,B^y{ v T @͜4?QjZCMB+DJN ՎUl!3Ho='k@c])wցS2Wx'8DԜ1ќ)V#QpJyn.}H;gh +zxaLb6<*Af8l9ާQ,}Xuoh&0iھle_yλ@O+;c` 6!0ӗml6 +<5wEx0[(ũY͵r!#9P¥å3E˄V|Tu+ӧܺB07A9 +,8f{J]@+I|3JQ{i{fCRCG)3 S{U`}ĤZ(liì +s~\E0]frwӽOERI_P3hoس(#g)|i}"!M;`GH,az޲/'/STbcy,ǥpi:r?dZ%uꥮaNjM'5UݙvN2HFjO t7_ +_K'pݒD;2]퀥AB4`/mryЗ3Fy (gJ6FNGռry|{-fO]ʍYXݜP4'z>-.ԓl^gld-S/:RY<1dsL8ٯϱ-TKsÍWOs:MjkV&?㓢WdEDayiИpi(g63M>S8JUx*# +O-V6+]!KM?++ka;39(@pjMXf2K"o͎S(QV +# y_] ='8@ħMqܱj<) xmӋTl*>L/_^K$H#^pc]Z^G>] U{8V'lp8fh5 A!ulαEߔNzJ)vEttk/g4ٻj525]=Z͠iUW +#tPF5WRTko5|WpöVM'Td~obpҸEȑ4p%ws=q#^Bxa- vKM7 };'T /q<|]9x >ȵFFDh 싸kNkGoOrJ`ZizfVlKb7!ݍM|[W,_ շMzʣE5]\(ǜ,^87Z3vUFHeOײ Tt& +p鿙zT>ȼ&?9\֎hQ@PA}Ø4SKd6dnU(LX^ ~ o>-ꏆ"yJʗw1sJ*G#mc1*27~O$呞˳k:nu=al]Cc>IÛۋp n (}͊`3UM# ^d?4 +&gTV臟B8W>K b#z=cC'N r&)l$6 IR_s +|d㾌!U~P\PL# +m*fBUpc5YcY5B:iU&^~)?S?r)V"3ےW*VY٥=XkP kvjEE&c^D8ζ0}*1S._zb9(5ʂDpF"֮D A.ȋG|{QJBTZA)ıZio;Ȉ;lʯa&Gg߀yQ]p>y;{f3'ͮ/U"He qvveGܠRP R""ebtuSXjRQH̏]*?V<81D2?ͱ@8h^"Wߘ3E8Y<-%߁Fҫ-38=-o+o%wzM>©\:s  pf2DLy1n{=8GS3WI9cǷԆ=H| 룮A_C02U\΀tՁ?bۡbeX3_q$<@bYnW[<}V- FЭ<2~JBgg(:&\ TxV.nK@â vxhOK] /9h3zxrZrUb or ǜmWXadH<ё̰q7YinP,zRxB݀',-0L pv BoKtœq65G-(7zftC-}%(t$BRV/v@fčj5њ`}{(v@s,}'4=aj"kOv};v.ۏY&/٬ijX!m6 5[">y!$!Lz= |tK)'̤Zw;OB|m/|t*Ō +YT t85p&q +:HAO)a"a8`;t n`u+PyUwzuX!bw&%j +h ?>]#/+vɿIPÝm|:Wh +"=c[û=pg%?+KvEmP<{r#s$XLM#c[Q-UJ%.eR5qcCF FvP֪6#._KVT=^+y`g/AB:z?84+ԑx#~-q*5IzEI7A-%w<ԏ~,l|mp! %uSqd1y=P`wzV1ɷyDjIx=3=[7*ny.x5v4Au,[ѳed>xd!f%UR<'U)@S߷޵(ˠD, X4s;b:^^)u( B`~i8ٺ_f* +lkOvi]2!(/Ȣ 5W l 3'En5u_R?{")wo9IK% z "AL[%%HHs"+óJ%D^b;>u pׅWr.Q4sU>_(T:WU+# SKޞCd<zu]ԤUx0c3SEټ"vi{ +k{Xa7S`J>AW#eQG-yP\Q m`RV}q9c*?AX_!Fc~a$Cμh) '<ĽX!lzWg ú" Z{΍Ϥ\GԶbS"Pie}KyqÕwBJ`jr{g"p 3bMR0pašzCiY'!v}bxS:hv2NWp=II:0SHw… +OѢ]=@nW}Hsio5At3~}sb03ql_`b| [V"*yh)1(X|k0d Ҫ37quV\6EOostIȧ}~Tpg\ОUF6,@冽W;"0WE 0G,Qwh)32K,煓o+4Gdpw]cT[?W6Ʉw> -ؤq+U(91l)uК@GXgIU϶ գlC|&Z28z)-e1\{5K'5|M .ĩp;#n F!=Z QǞxa,-GbYCAQ`<{0W~зyctDx%*Ki"셨7JWiɷǨ=Q`c`;l-!e{(3D +g,h+}I-ϧ1*-0Te/v|aPqr?品nfwyrq%Uk4&IdgqvC=0S +={4 u8CimH*ͷʰqUhC"ZlĞ|Pi,م mE7(ÇdozLvK;ªwEQb/R *p4sTy.l1^6gPB*Y+!t{"E.q cR #5e]"K|i >ߩ`g-͠E~R-!DaIIF7t^;Rz>K9#fCa 3(ǚ͌ٺR\Ng7T(KHғI.5Հvޠ[_P}yh`Bw0զ *%p@ (yg6ohIυ6»Ӝ$b1` ?@Ba(8RB"h>;%>`>pF^{LS ԫ4@ ڃum?޴ʋmk#F:k%Ⱥ 8m42G  ިO8g"z9&u9(BÑ +h T;VU\H}%C#Pdb#c?q 8"%-|䧝խpvq!&PIzڸdoXPw ݘڦ:Rp͛%U}|+q핵NX恈&Ok2\_qb;$*c#D@I9"1yS3h +:P1>K҈evZ>B(NzJ݆BԖ{f_S.=ja\As s+WPB +cqZTY &oZpR\n#.;;~o8%xMΔ erxW,_MgǪ#B̳@Pu +le ėp6G[i[IEGaA|Pa+DRtSe^j'Lp1mG>:0fV?T҄Ox. M= )!-ks +^(i!A[."Yyu3.6p^4}Νp%N$ +j: гuMw[|)Y}GjwA"4# +kW֗QLd/ UflڜOk$CC精/h7(M;Kf^TXv#KJ&QJW=tC':4aUx-†g/).Gta r2/J0!2 s&NW!*ը,"o\i.TLUR yBq[ja 96^=%xPN'yp9 +M[ : r4PQlt] h +gٰS9G=GJFjs;m?gBYl'ޥsG-{cD [F:ް);W ۂP/HZ2& nƸϒ,"=tsևeV*%[)5Q;<&IAn0L>7Duք'g޹C Z/`YGEx>^N5zWk M3wQ/^ T/7lpoV.Ѕ{C)Tjچh.U8tP+fP=,Æ+M^Ж1dwβfm79aA+5 T*J.3X/#zcBw9;fWYQL֫mЛnUoP+ M=w b9 R؂ tMBUvHthՙ3{AV F䁙x]{ux~QRi(G Hs$a^BK_3;T@&p*V)RVNub"=+:Saz\e.u̻2OmXXxvDI)FA`Wph 6F6HT\.d@k$I.4R5jFNi#/]m_&F8Mhvפk%{Uq歡:Dv:@pKewJi:>>Z -xSŗK8̉iay vZ-:9sk8&<"=դl:aMi-B> nTfZ|E,_XPW1M7m.2Yc˃kvan݁Iϛs"<>$u6Xg`A>ftgQ5ҹ߅WbtK)ng biȬk)},PP%v<4 WFO_k$p"7pooBp4FWGc(Q ؕo +m ybP[xs7 + XЦ_偱ffYu9gV ÊroP0Qq +&#P} ᖗwJe=۷a;j[FUG 6KY'H&uAQahfPI +g)M%T,6f(kK;:iAd"瀿F +. 2=r_J4h2֙j clyAznL%_TL䇼!Z!{&Lo뮕@*Ŏ7VK =Dd^xƭ;9wcv;:hLDH$, +}<;RC{-`Ub{L-V0#õtZπI^g59-HvbQm] +g`ZU'胊6/RCĦ4ݗ&حX~rڇm",bFo O].e,lFq5|-x1:w~1K^`dVvNl `S=O!гMtA{6zFt *&:1NN,zzПUK' {[e#WCN +T !c!Xl$R -\pY)YG(XZ/߲x̣v='@gN@Ċ;6•6 =F~%XJ`%9'ul1L!#ʩt{9r&?Fټ|6Czvް8n'DtS.݂ϖ A;랖BU埛-:q#:+7<…xeݖ`AưdHʳ=[-|a笅Uuy>UǕ먟Y{n)B6+m@%Prq~j{GҋN҃&?~3sS^ʼ;:瓚&Xܶ'}1Vr1NWJ2 &3 8@Җ#&o׏)?)MD.]q?aCKId%c\dE=CyA&w BC*O<z <Ŗ419e8RM -M. w,s.\)R GSc~ Y[ψZBIɖ2cpXL.k(X./_^0$pa:kTHaⁿ<-YR^ή6 +XM˼Ǽ{ke\fX@1߾V(:u9jE:dncC"AWø 0GB>%f4sBOLJ3׼noD?-g9dBd8^rJ6y44f?Bu,g yQ|^{RT6#zyB]&Sxh~E@ڴ+Q&mi]ߒL}'C_fRortl*D$;xBFjn{:P"O7~&Y*i6' c@lV#`# Kck ?vROI4q!̂a$iq!C+ j1hӖu0 j uM~Z߼;z}\H|'\(gRR&{Gzup]5eU~܋}!I;8@i% a'=eqL"8q<? +\pIW7^T[6撆IC+kE [;/1D5ЃRe2}J.țz8lv,.hoAePzݤNj +X" 2)>a(JէN ]8qtVktCo}8RoR@I㑲c:(f#/uND^a7/Yn $Q },JT "u^T4 !"c3ya{FFTX|Fg~paT\'j}` !lҔW:b{ M64{%Xr])`t|tg- qMhY7)WyDM8N[=DC~c>1;Mʉl s&Bg#Q>$ 4jԑl C + + +#"n68΂ Kx! 7Cj|>4E +X=imUfEczTQy KOR薏1kjIv>x(*G˜6YZtqyJG Rh5خIz*'~8%dLjxq 'ktT@">\no9M{^c~5'K魱yu25Ƨ :~mq7vV6 +ޱUSd~VĮЮ +ˆvYю)j s*a/3N!?'8{3{7׾ J\Txs\_re3U-!JR 1#eL_KY3T-*EU]B"'Uys0 t2q9<|VXFi0rfeoN#V}ٿo"p)7|D dWb #zM_r}ET@M,AZ03BXxث +.s0=!s_Ao g1 "*4#9?EQK;v7j(f4a<@iV3c!cqR X;m*#a)cMϩ2=8t4ԕWv݇CX5O$L߉Me?QyײB1ud91kILBPDSt?l B!&|g{><(N4ka!t~J pnH%Ue{2ݢ4j +endstream endobj 4 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 2/Tabs/S/Type/Page>> endobj 5 0 obj <>stream +HWۊ$|ZR*dWuk~3f<Kۉ,Vg*'N<OO}Ox8m~yP|> GdީAú 24MOJ7a>~\0_*0'(zޜfWz'ܼ.OVkctbD_\my6/0cise›K}1^//S(Ä`\_|=60{0_ux.)?TZUQi4?+SM:taŚ)tޟD8)'ۘaTԪ$M^N W/yZU~"/F,FOG#Hc6с?LHkN(:<Ѹ"|1~aR*Q }Q x#cy&/HKz{ l9|+"%&BT7L2Vu`ߢ1L5FDE`cLFS5SʊC|I-AL\'^ +Y -{FAX 5ϿB͵Ήu!ljZe9LȒܢJ+ت;U1ڄ1=,2C(=s+Q3q ztRv" ˰{ipVTԤ{H;HFzS6˜h+/ͰUW &9<,p`} 9I>e&Zٙ]Pb 8ۦPpGݘ (IW^G&cڧ\}N{'/\y1~J忡Y& +&8N7\jk:ģ,*yDcqqp!!QVbx:f6ƃOcV)#Z@iyfTjǾDdHg`0MvTK 8Lʺ+SY I1#2`.U u9s&[rw{ 7بcA S%vV2Щm"E223兎3sKQqLj3dO@U^AKMҼsAaSJDGBHA%SV.Ʋ?febSJW粼 2p_5JXڹri$*ٌ`mo\ێ-h2d̾"2e ݲ"5>0A+f +Vښh$`D qjw; "A[٬gRo;TVN28!P+̉\$|]l׽iTN ?j,[_+{̅<9hMiuZyd1!;P˫oR<1aW_5/&uT =h[u? ?Qhu1 +5U &Dua2~\W织v^KC!:œlT6ke+T!K۾ޟƽL,'w<>ϧ]U].]B_.JX =dc>k~OM8(WԬ Olpq8ƋhoADTCZgh{X.#-2c-(*LF/}q ݭ8e6 DqHId$B)PiMng8[jv,S"ZXsUHD+鐆ы- TEB_I[jo="KZ zT2Ҫ_<ڊ  zaԽ JߎΟO?$X}Q`D='<;PX]7eyr2 +IƱo\%AƣP>)RO2!Ks-Mb2[lm%xoſ&K0+{ɐT7FEǬHv%-64ќWӝԻTMIxnڱ&^QKZtBUJF(xxcsHjR K_)dq2SH< +a.tOb&p ]17qYqhEEV"kəL7m3EWG&{pON+"`^H!i5&F,nC9!qpbդƾU++IX +ζZJPXpp~)ߝ]+Ea3׶ !$h qKa'}Å&q7!pz@5+DUP7sS;T0yL9߳œde.$4Og0ǷןΓ/==w_Ui L +endstream endobj 6 0 obj <>stream +JFIFaKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Ka +  +g!1A"Qaq#2BR3S$CETU 5Dcdrsu +%&'()*46789:FGHIJVWXYZbefghijtvwxyz?VY**:S +~G^DD!g`@@b !mi[cZb S-cRqZX'eum-v4Ov[Ĺ:Fjhڕ,5Vb #gDы} jfc;(KX۱]:9=yzZTkm-Y[RUA+楌[2is@ҝC';J:@-*_ZL|~h2GURTsSH^$rUg_?4Ə({/N^Ĺzn*WaQ%#`Oyt3yMkUJsDU:5ŽJh.λ`4?M>Ųҵ~+57S§5Umv5]H_496Znv#ۭTo5Klۅ x]c2p+Ϣ[VG^ǿvj3wߩ$Ȟs:'@ͰeUsQd.A#@v:$c7Oװ%nlNHe݁/xֲB׆xuAQV;PK~$n@4lַ2vG~<0:dݏSRkp,-{N޽5rPVBP 4}}%mպ 7ٗK؍/s5)wKtVfb WR򱵱˿e=F@=ZEQK+\6 G}=oK## Gm}>wQOҊp׋a0|Euh(Sm9 +Jg~g_%:YarʫK˿&Tt}6'jK%[-A1#G˾WISSЂ!b"{q:gPzȺKQO/}ϩ|QM^*~+m0hucFRwz/'<$Sx RW/l)Ir@U޽]T~,!Tz8=q߰6u;z285s⍠Zo:>r_^XIԻm2SؕC>''}A'Vmvf5uU}“MJѾq;HmH6g=`T,5G˩\wb>_铅u,m!r5T{?I?Ym)zu A@MB[Ղhf{Ɩ׏2/[sRt;cJxN,{W'!~^b>~OSAG" +Y`:x٬regP͒j-p{njUx2llj W_6Uu ~/k~:SWhrmw2d*; Ƿqw2E`nU} J1MvYq<A >ޢds:Ukz*jj'1{؂GmzatzYZs }tRou1ph ͬ7_1Y궷PL uPƒuU-PF}1eZ.Uu7iv^M>҆U`R+pr$mly|XV cOg1mR=67|Hq26Ei @zg/z-WX;PM.o7v+ie ` +_Z`X֏ex臨[:k*(4(2<G\?۝p.[p|FRYg_tGś^dZtAF o[^z[X6M#B.sl+a +[`YAb@#cYNUiZu'fec>^)Ȩ&jD%D?퇾^VҪ8W$5`'߼NnP(EnԺ)M} +o@A}HEf*YP1v ߊ~ղ2GQ{Q1:Vv!qן:KXb6*C|D@=O#eDnXeu9vC]~[kZ$3*CZP,98a}X}e(O%25i L:s> @Q6U_M)\ƻw(?l" y(U*{}1X#VmSbI\,˿zͷ^2ﲊU={h1cStO +e:TA՜ 6gOSJcր +쾤<}=3sK +(ԭcN:z ;>ؔr_][if6_aF= t뭿eQM"uoL|G;lzB?0#Ns3N2r+5,g_5']}S`?ىpSˮGH>g^*]e5W']z}g^/Kɮo=T!Nx>#q>]ֽvv4#m{LuՎEOĽaWPN6tDx ufwբ@ׁ=DjԬ3Y蚻i;@nC޽O5_p0[ 'b" M*OL4d_GVĩ2uiЉJze!ŭ)F!HĬ !@sһEk ;9?)5<[Rܥ tJ6R)>X'|vz:/at7^i[&e)*@i@dpe}32*-7h8g0Q[޽7u6כz_Ⱥ\C 0mqn#}c߳ey22.8AXhlwX^ "›0FFtuN{؀GOL9좁0{=':NGWUnH\2~Y3O-̆e~\Uޓ +gOUXA `kd[Яȸ-}WVSq]= $}ey\-fU@_ŭr{а-xTbְȥAUA ۿy|<;;/-_k{T3wߙU'[)2x־a9=gD}Y~,tfp^ZR|K ~@I.VEƴVВWelNCVDĻ!ɬֺ[A ++]z'$~gD̳ hMvďF}%pW652Zm˳{dS$6OoG[":/I=VˑTUܝweFbj؋jzK~S麲S#C8M'+2fxخ:]e2ןξ Ԕ܏'X6c5u-/>$tUރ;k`EgE6v:YLYTλVW2be$&d=I|Qyoϟ#e h޲Ve]IڧBU +ĒA-CW7/ +/W^z^?kXXǖvf)z֪-[Y]d] wr:G:NJV+;;dwD 98#{މ2Js?|K9t~%)'GG{ qg+eh+U/aPAJXzZ6k]/,YqyMH (6AB6үku~ 4~/NAӺzƾ]Ue I9f`ض!_5hwȖӡf&-9Ejy0H'Zcny)rڢmJUƌoBͮ2K@ 2 h6\7NfןE02΃3"ڎ8EGyyVҕ#}VY8R0#cc&ԁD5M֡Lz0nnOycW2Yc|P;Յ3:@Kn#Ŕq!뿸dfgS]RVY6k`z_3;SukWUuX(~C%ٸSQK-#`vpl$a=G#[mv0++Y6]݇`7/f|XQd*v?ua>3 ܬ|m4 +Rʕ+Q`W]k]-ۍfp# )QQve!*O%Z17-ᄫ ׄ52үUYeh7%1f^/QZۂ \=۷NmbsEl-#cG^{cBn~L;UA@N!L UCWEW+.,>nF~2// #?$Lr]WnAZtv$߶ Wj:RWڭCZ /̑߰y8YglT\_eupؐA%.f-wZv䤫w] s;uvy.&-wߊKa0au|ώ[] +}}{{~:gSͣq|S(@׷z޷&:^eIn YrH= 罹oq8[ݰxQ{f?H|񼦯5nj6IPGq?J9 +ً5CZ';$]*ܛsi211!,t,>*u=; _Sպ~[fcf9o%mVVl_?E菇ԲJ{T$h^G\:I[rgg( +y oz*5%5qR/Dfm8ou(\-s6-~lO A4t~/Mo\IJ6|D6zL_QǶKXA$|ɈRzV" +*˗1Z{̸^ipe@ +@{JDDDDDDDDDDDZ]lJ*V]joDۙQV-yky) >e,mRh6hl^袴c@}ov^"fپ.46=\D4v|ŵ-e FwC++X9>>K᪟%ۃY6/F~wQ'AAYyOlm( +ĝ hv.*8U.cIV_"V=jz]?k_g}|m^"9e.;OYu'^NO~EvyҖ-ĨA|EBՒh<\:lnޝ|AmٍUee3/-$;|IuZ A!A ?cxz%VzvF#R==nVR?6kj~S'Y~eXɔx-ek2;#[#c{ bRСiF:=zoEׇjRy->2UǏ`ykr:ԛ'/=c]Tv?.ts+q|z5KV\LNa"ĭ6w5k\c_F~NZaW*EBQİ6`=;`J, +ԅQצfDDDDDDDDDDDDDO.=DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD5/u|}N=ar^bfoc oŷ% +]*IIkT (VVj}=/LVv _?[o`Qq{'mH~@WҲz5v:.O6bBӰ=:GSPjS]BAPH?!*Ȱ"jWזzOMIu _PꇈS@UM_q]1b_XO]hzHA%* ׳$7אXAЏq.DDDDDDDDDDDDDDDD@YnMdtDts+N}?c' +nP ~mu$DOș/~ˤ¥jUX ې=LF?UxQ)e7mn=SoZdn-߻%r2kO2 +gNIwx༎!zBfcזnKuBv +X$H? nwQ +^UjXua}H}Ig+W"mXlFǧbQj]J#`k۰:'F:"btndT;P`阽02T;!F?tʉ3Kf*wxM2na~ޝ|D3mX+`mNJHl[:6^پ# +-ޟԐ&Ekb tF⾓MrR )̉ұ{i^9%Pl̋[ԣAA'4'g:ے@:ZtrM}*T!I}|tDDDDDDDDDDDDDDDD^|@4S?x3#鷝pS,g<1saUkl>TfSÂ|z1-]Tcdؼ]P!Gn=ܞޛ1^iĪ&DŽˮk+EdGoeR7yZ-rmuNGXl|J6 v#`xoߒr2݉p t}{Iȯ6 ®ζ&SK65V٥sйTgOVڒ :2bce5XX\]qN+m5#z[.t8/ત6H'JߐY HlU9 M$r@>^~G1cU,*$ y*XPmmrֽ@؈wjJ+X=Fy +ȅ۹e]17XR֎.jة <[Rܥ`AB4}&'I*ZFٹ6B"*e:zmW>>纫5Rňlg^^{?NŘ's^; _?[o`FeR)!Aa#*qrdnNm5!y^| ]2=YQ^=t(~esbwdMآw\Y>]>un}/g>o ;'!݆;TF&S]~fs= +t~k%b@hm]ַUbիv!ukӕMsy `QftO_:Nk?dqr3 GCURY !}{klN%R +ĥ9X'l! bfў]w~eWidrep؟MMw-BܛS2ꯨun{ZʋP= odLj +2m|7X qڐG}W~N~hSz$1?RIS]El]O4Q6(5ޒFYUZKSu@PFnXk^jlQ&wĕ? *vNȁ« .:Yb;v` 'mȮM~;stFZSՒ TI^t&=%"P\ЙQ#-=Fm.UCG-rjj|_z…=fXJAl}DPq;1i2!}6JB'RRDljj\r,:vEķf}*`(+~5mgft*̠ؒ$ %%:s5]Z؇YCf>K< d5sTĶއʺ9Jes ::8qCYwv c8l2r0kɶ|.SL@GdDDDDDDDDDDDDDDDDD@1sf7R/?e`va==y-YUNˊF·˸mN,eWeMvx_1}ng'|[j``v%qD Af + >l"%PR]EK9;oO,uy"%+km`lt>Ws_/n{x[֧(uވlt{qzZ&[n,?"؈-iRUA$I'չC! AOq-ۑ]UT!A` #eɏvub#9!UU_ OdDDz @fy\aא7.O,gCg[?)""%oT҂~C~DDDDeV0: oq4oV'eԡC m.Oo_G;WStR[]jKMt{XWm\J!A0]u22qEJ=eў\n~- ʜX 2bE#tӺn^AV)*C6;Iq(мV|wt}n׊l6+Xi`~~S?#XMa|nDQfHqu=Jlj +ޤ1[|7Vί[`4ɦ |-bjɽ=,;noV;U0zБ(Zlk܁kv:UU%4,Uhr *tި3ȥqK(e`ݶ>&/H/:6Tޟ!ݡ?y2fAx?#t׳mq{IL?ct;,ɤ#-Ī鐞KG$v 21Fz0z{xV9lZd{ZVe^Nvb@qX)# l>.]uauBP=7_h nYVe 0flo`Q2N]imy ]k_wl9 Gj1 ,QY +j__ kwN\:ķ#ePN^WRm (*4]}ak| E|${DQɏfP4R_>̛SrH$qu<~R6w%[r˖aE-J zbakNm!:w3;`drȱNmGoܠU|YSa\R++3T d_}uGNѱHԡ`F;c&-5o9P@.A6@'zn ++D0c'j-I +|HilcEw59p䐆,>* #]돗{Ӑ˱,83zb{3j2S*[A۱/ZS#gYr21zAx6Ӥq߸$z oƷ +W]eYX!=$:+y.䕯]ƒ߸=}yV(AmյO,kٖ+wUTQP+p_W@O12XU_z3*i[rJ+(.@aNgZܦBwVk,[sgB*[`$-r*\+uyuV:[{w;#Ro~ɔm1Mtl$v>Ymb6=ȼ޼]Xo[.Bby 9NƾYɧ`cUGtm{6EDioΆ>vλU'nvIU@:g]n+ĵ_iF=[mשzX蘖1U( +q;:u, lXV{52߭%}I:s! j6׋`7OIG(8y [X /w@˃CcmMk^N^ǸpO}eՋUVR5llCFԝc߼ʯ +6LkERS{(K@C{^^޺=-rZ.:)fN _Ϯ_`4mա TIdȆ0Kw+(7V4.7#c`Jd RЬ[.67=3yY EFs*"oA4O >+ݝg~U+ [Nq2fbn~qLjd^eO}izfOTlw5m5ή( |Gzdj1 1Xs yLƽl"S뾵:vf%yLpzCKF_,u@SONŽP>V^Fz?[_Y);̎Ԫ eeaVSőR4f\D@[]l'7RA?R}/yytC`|[cdQO8NFU/-v=KZ#S'}(21-.+G^\,`h|/2118MG},uBQqֿAy!c^OT\]~x'p7߁^Vqw{ˁbJG@lx(^h~V.PVfuSc%o|AmwM̽)rh,F+: 3F&J+Vl]iKHΣ3:]F[ڔcUu0@]RSzg&'P.)||cXe +Zr'a~? eZÐ2z'du5/B2& #~gSMJm JD\-5.۷r$cdY7>PzI,v[9qߠɻ,ZN;2mˢ?tFUO^WPgl$ri~T~3_O%/ĥJ[궗R:{ 妺&+Zۉj8%Bh|{v>j@[\21,r5|~cOMoRz +=^뿔J8ʪyv9tYvu* c' _A{7a~f<1n/MK`=woS#3SVK+`˫Lwy~js/HS[TYː؀ @Hoe2MmJ{yJt;d+赪 ȯV֯~=f,^DU_1wU;eAtݶO f'YBw# +5m! v 0;.:HnVYZk\:*v!?"$oLfM +5tr8ԵJvG˶>huSwijܓl.XmgcDZYUrd#Do{fLZh,j%ܗ5f0Sx]̞5uL,a]ƠVln@NFSlV׎Ѷj¤] ,NӺkݮrxM[c0f; B׬DGl$97]mKt>egj^+z ++n3oMv2KxvP4c]z)mpH: ZhlܝܟIfgN}T}iMi:mY=Vqںs(] :,T6>ݽ[z~vWH^[Ȯ䆀6/~D;/y4u,JX P\~5ebMjSu ɡUӏ"^@|[`^>%mlY7M=ngf_2VNJNМ{rܜݝ#Xwɾ?Uܜ켴{1t״א ˋzJՋ*8اpй,MĔkzꘙurP`k=t{L~ձ-5-nr6|Q6vͫf'HJnJlѴVTB)V; {:=<ڟ:,E7p߶v~!釭t0M2>߬ϫ?Ճf+Pe }Pl|,Kl`hr/jh|zV,m[;r%RCY/MB#RC6)omy"|C6JBAMlի*GgCd }Τ /ߝ]/}YR-v1"a_rVfQ])Y#ɸ o.foPwQ(7Usj P3yf\G+UKA*?l^3My*G29],V^tn®J{꿔rJ6̫Vj"B_m2:ESlϻ UEJP6]#&(J;'.ֻo-dWYoQ6>] =:M2""PFƯ+C@u*;죰 Ϩ6SBH>&%xU-U (ԒN$N3&:BhzD'>lo[ˑ-BdWbVRHF %+J5@@>RXVX64GOO-@:l{""Xë5BZ2*v6="`q-\ƨ?}޶7lv˓XJ k&cvܗ6VPO Xk]ȈH+(uq܂NՁAqLZֺ*P;`%ȈNĻ!kk u]loDUrj7#rM\}k]~zwMKVq[X g;z hC,^=]V\hUk?6 #hoC&ʒ2:++B2*-lUJr!Y#$hKuxꮹj;:|MۼV gaQM6\Uu +@re=RF]6@G{lFqZ*lĐ6@{MK|UMto njy qK *'ǨVSz-}Odfu| ,kݸޛt=cU}yQ* Ď +YU>ӎuXw%z2tH&d95}Y{m~vԂlNrL`}-1e8`i@3빕~XؿmmXZ5Tv~t};~N<77/[F8Tlc3yeYbUID@ QnNET,z-T'ӓ)ȻYYŹxa%aY5aVP o}fՐ7qcE!|E*T5Gq\?39hȵ2UPkev AtTŪ "_&Q®a]/4܏{h܍%zGV8 2/5/,k;އdkd^s>k%bY<r6loN`dS奧Wjl>UyʶεxŮ(`ފzyNY!1׷Okm/_}q#w0E2 ]R(*8mwo:̓m9]¬ky/bBU^e@&E[jQޛntc_d{ T1OY=Q?|ӑrd`]@?~~n/Ll*UpUvI? z7LՑJRG2dz&Bd5x%W:+r:^JY_m">̻-ǠQcu¾+g3.""""""""""""""""""""""""""""""""""'5*+{ˑ+[L{ ~úN[p67!ҐXiD^?鲢uη]#-[0q/ vu2RZL:i7NI;'/LLWUebYS@'_-Zˈ<]jЌt $d7B!粯*ʯdd;.! R%fv7e{We)[YzS73_\wԬXe^C)/mkG|DDgac +Փ%R܈e)YZ %cѝVEPoI@^ג?T1]XC;&#O2Z"Bu>2 {S>a!X(#DvO`=LŔ:ޏ"Gl踣&W+bp,;+*wCSDkV>eD'U>bV%JZ.QXo=K4e|գL6oS?1j5˯tcR _"&dDDH."ddX!ԕf#-y_6rc e{[, ++$iwYͿ&kYrjbt ֏}y]s/׍qBS}V>Ŝ8|zkqn27ї~K4eW# U}~ Wò@,mDZI8; %\9 ߬!(XuP&J-ѿFOVygO^mE΃4t@}οA])֬s21]W7wwu՞ʱqiwg ,ۼ]ߩ9ć٫$/PW;q׾Vgٙ\\ɬ֍m/Ͷ5cٕY@ޞDߛeariUso5xlpDR +w;)p3z% k sf/ag~_;odX]bw4]um3tt  OoYԟaRےlAJ"#%;;i3zHk{S{gCmƗ%Ob(ſt\*˿mll<ӺreYV9+EX~e+q^X?},4ۃea-97Z3l>Kd\NVBV6Q{&YY\[mbY$j$2Gbg개j`#/_rXu ޛk**q +my ]BLk v3Sg푙IB=D: +ٖR.gڈcy]m}h ss*}uR\ݥ~%n@|\>==CӷDNŴWyk^|u:źΙh,-.ŝ[֘t7Qm7 8: 1Gz։2߃Fvevma[j-jXqՙQ;7'}ܚwJa]e.sqc6fيFj:[bnDzd|%S.wZ|&% wxca"l1Ӵ֬6NXc\VE +a {]G#tlbunTۖuWèW.[DGTsi\W 6Gmm{ɏE]G-7Xp+{;{˘/zN1ǥ:}W:61:z[ֺC;r-~=ΨEHX* +Dz 'g婏 +~k=xyIb_;/11ҤTUG*MG]:|˹lLft~iu,;hȎږ4x"rB_͓|Jk0O#DZ塉z"g_UiV=Crdgh4~OoA=~R3aJԊHVgtQﳮKrעV ؈5!NGqNk5Mf6rvCCf`gu^u)+~k[gnᛸ==%LA̪%QA@9;hd}7`;{ƥz=k݋^=*ՔrۛV T0ވlh}'#E2 ++hַ@;kYNe/eeb Ų_M+Л.\ɳ7tb +HRu -TAHܸ@[:#G-Te-Y^5"R +ꮀ]nw7[QdPAAC~|*19V_~ yy޻nfu*g-SFСRNC0![Ӳ/u/Jdhg + l|ʶ^`td[e7҈'VXW[eW8u.|H@X%t{ I$+f-}w[VVqm>XRqw~^kgyY'tcyZ2!2ݞձQ~&Iu |ectk5Orբ$v ȕnvtd^W=EU +ZE${Çn*jx;rp VK%YVIfPW`h5-]CwM]F7Vkdet'|Σ w)rPXwMdf2x:y 9#5&=&z_X\ƇsI|gN92'&a%+1)U9qVb̻;KԩeQI&_迗[zPl bUkZ+Bhw`1FU]6q&0M]B,O4  a'0h2 +]˟OeUUg2S d30ebH#d[UNM**tXF{{F7L^~^u,V`eEEA{(rw <#gU錕g:Tdy # }II &ExuQsc#+TU'm{#7f5MP, +vcz븙XdB Y'.FUbGc"zWw[`̲mmP BjAK՗'z*Vū$}yv`̳3 I`(+č~-tGbތe-C[;#؎*/O +WzTv[}"ؘْɇMteDTQQ1:Ec}dՈ˭F G``xb΢ەjj_. +̂u[Կlϻ;,M8{'3"@b:]u8hCX31ff>;GnK}[*ZbXNj$ng:ߘMyqVvKv0@?kOn^G^7|MK};ïm̹2XS}i[Z@1<-]=87PU6,]@R6ACZ/,:jvV*%.Ǘ{O=YҬIϵ8Bԯ;g[}b5bPJc~30r!K!َ}!:#Rnj(Qxyjŀwc 'N2\|ȶ>,Re~#S^iu}C8mi+Qbȝy eyےIPwjqک#^ vmB?Q +;cg?ǧ5'Ծַ|U,f.]YF62S׭(teXˉ.h^KN+|^MhG H?9k*1(UUؿ؎G]ܬLslgvUNKЭȶGCXYn`^,Gcc:Gvsɘ'OK<%ftttAv"xWz""""""""yV6='j&gCd y""""""""'+[GpF3ekhGnlv;DDDO Rr t6@ކ%ysr޽u(_Anex5lށQ6ı +$>1ʬ5RXFalxKa){KyQD7Ȣh|p,w}<5m%#k6Gc~;%:_\kV= ҋsJ>g;lYaaJ >_yeU=V!j Cd 1!۱Ԕ-'XlC]+祩33mM?[^^ܮb*K׊h =j벞>evԝ#Ђ\'~KDfcoz'b8}$Re2PRA#ɔ޳a2[o||Ovy՟c궵Vj^.Ż:=?#c/1kR_,{ A;x(]zd}֦fWу=+ l I|zgU+a~V㍈DwA C2r.Ytz|a@ʭ.j4K]0:$ =3z)[1.m`"iF}w'z2x})QBn@F#+3p6>68WAJ ևp:ZUֵ rog`` oLzvZ[U$VmPazR mc+ƴv]hP]JNIUϴRgjZ< +6;քWђ/v@afx;Zue^q,vVdqŘkg^I^kgWulz +߂.܀!toرz_eKcy5n[ ؍kY84`Yqb1 mFltx룍m igBgO~ÿp6;Y}zkZGby`劁 _ũBY^MiS:!QS2zn%TےӢR{V%e^1J^Nur@)GW"]UUʸ:AƶM~cPH pB+BX.u94GJ;8ּ2] Xrzr:#o0z`pKR?)mzrR$>rscV=~&S8nU1S+KrJ{#AO3Q}Z߂S +X }`uziO’Z:'ܱ"qc]·K|H ē@!שkC['1X ˸#miVuIu,C+A3vu=:;_ܙ֩ʴYKT+2p=@=IJ|MrRx{=k{.JbIMT쯡@ xV+Vѣ$q :$uk05 5hN̥52ks`X\6BjZ'~$qnJ@ukް| G =6>;M5I]:qIw~#mrElԱ8΋[b$G)-WH~S22Fۉ#mN`uU-jJ$IboG]tu-uxgPMr'`zwڷ[@;BeUޮ( +ZSߡ{Th +⤐ >z:82v^Z)F+W[=[=ޟPed *q$lA c :=C@\\<\'!FUc[6!^Z]ڗ:kږ3TG!B; }7ML|zmF"Ϲ'A@$YgU)v=(6=VG57r7c &5]#-k;ֈl)a1$*H6\V"0fw'"rhz(r{w8ufQt:ޙ[DvLU.~M嵁Ҍ),HQִI>d_ժH[0Dg aC>ΛpʶeũWiG_pI̬`}ai@ʂfq⧗^X)cylVpkt oL;w1Ř/Ǐyj6j"kJV9#k8UQ ֣lȹ/a`Y1 Ftt3(iIY]k:U:TmmwRUӀB}{v3dž2{AۂWZh:Ȭއ2ׅz($9)n> [6|7oɖlֹ RT 5ʇi0VFز\^w)uzDRۘidSXz.WT*5mz*S޼4Ti^9 QYK3(ZgX#!*-I$Uq۸*9}eY[:ik+FG,Tep[gPB0Īi:Gzو ^$fMjÐ+-7m:U¾ի><?gLkW} *;ojG{u}fШu=X12uV\\=zB*6N$w[tۈ<*U5R~Cl6}+u<{GAG ܪ۱ H;ţkj:Y9{|F/d}JqM^HW`X#EHi J0l$ I=0|_UxB鍝M<,x_I2(d0EHNJBy6~>;3ㄠy(\Q8XS }k]%~?EjkmI{hr;9r>"C8s7ؘ>ɝX;1C7a q,$.)<`ֿjgwtO-6Gm1/tz+::Ev 6F ᾩeɶ`CqK_^GwBdq=5eC}'SqX0nWEB,y)G~&v@OMJWNj(ܷIʳ!+֨hI''7fTßRnVa`w#^Pl<綼0lZ)jW+ +1N]dc]vf#@Z$Wģq[FH}l}dSnUF XQd;FϤ1P' ĨtWVk~Ŧܫԛ*봳V\EJm:-de|^f_K䱔i' T[Umz99x|ugNK_Qw +eއ0ގՅ_dn>?xǼB"yCVTXlAI f{KXߵPQ1>l6}g:u/eR7ۨ}wcWԺ#5ͽxjUh>J`u*zZ̪zWjZZe%=>q)Tq,Hߦ~%""FgEq`*@= +@ +oP4B + {:&%xXAZ!Fݻڒ +v<*o@ lYCk`{ǼO*ggC[?9'H$ ֶ߬k9R> a+RroҖV{Pv4vq-{##bunWB#:N]_+2UbgNn#Dl8G_Y;MBTTI5ܟY8! JQӷ(i]hA=YMv+k`q(NXyuS]Za*qM~ix)?32%l,˱]lww]|Wz¿rm"NOܜJ<"+p +VaLN>be؋ƱhyfAŦEmaDfn A+jK +2En.4뱽GgQj,V:qc떾G^ʯ6䭽%26*߃}A~K]HߓOmbU,hw͈ +ƲEfDH͒yZ`6J4^|ƧK[S2#c?\F%*YN̸o?G1|Ż&X +PUA߯q$a8 +uDlI'@L|YmOE-ʞHN!*FR$wWꟓ<˯˩7IҪIїzV]mԵ.KFXcކ^9uI?#0_r@',&_Yv.#Rd `aȥ0=a؍JaV8Sm_W|'[-dWn (Udc!hmxԆ{yr;#-NC.{&nOQSvLC܃A.`6dAR_cU h.CE}nN|Kve]}5ѕf=IU|"[`0gfaKm>l8Z(kd`};LlQZs/ %&͒C[fq]ef&9 +Je҃L3Ѻ~F`^FO{n).S5]`B;=!n%Vfّu@rҕYUksX,ӱ*Iz׳3zgq2֗jBĩzkrXoVEEM`>ywKTfdb:I!v* oLkM^]yH+Q l볱E o2oGV|Y`AaF9y>Kp/aK-|wuKuo/_b';l'Ng#7fV(ɲ5n +!'[veΪtž쥢R +9-6gN=v[ `Gnݦ/aʽ̅[Vɾ >Dw&lιfE;#C}?} =2F=cVr8~Ϯ>gzk_K{=6R2 ]!{\)cqϦ쉧[lWP;2&yV2eUy򯶔-{ ^Rz-ZAފl]HznOPKma`ZȡI:6]Z5T#Tkd$wDJzkcWunVE Z@ ƯzZMX~=[&F?<ڵ@{L[_PbBnKa~!0fFMkpֲM_\l&/=22㖕(TT'{;7ɮ;uuij$ԸFC*S0= |3:=ٶ\,JP QJ!)er;W> pVhket=frQc⡌/Av:'ZަG]xO+.T;cqV;qv-6eєl_6*Ⱥ'*v@ܵ d!R\M /R:b7=uoLu[cmTOx/&VB٪V؆ +T s׊F)Ն?HO +Gf͋0#zaS7cedQk|U=}u`TğP}OyfkW/Q9>g"Ae@oЉzVy}vv(V(u(P-P@#yxxYxp{/B+VPAױ{{bu <My-c5Ҁ D_[.̆:̋j_5X${a:V!/&Rn*]xau+" `ڣCxVӶĐYm/mTc%5HBOs<5E$9{-v:,*@lLұ޻l{|"[Z>zW=QNǡu;~OYY5V҂O&C+~R,/z>Е|8Z+km}Gunz͢Ƭ_svNy~ZOagBj]MXȰ)a4ֆԏ~Y)mG-.MPCr=~I7UX֭TQjX|Ϗa``պt՟m%Y%\.#ÝRy_ZeWKѹ->Wdcf*k% }=ν@t޹Uζ]6vAwĹ9x M>Kb-i*["^Ӵ~ekɉ.Pt}ȯSwJWl_eGp=׊n=&|- [rD z5.tljwؚ0EE nE]Fe}7`R[H=סё+պVk2ߤTE]>5Nb5nxֹu؈>f= /"v7!.E*FeVEFϿd2>I r ̥_c`o+n_obYYCu)lFIᓇ][j l[mzKt3h|W|8/PI$_:/A~S̸Yc=zN?S[dϹI%WP{5v#+)hNH2SYN$![/諸mkzQ}L_A2w~/_jgcY Ds"-t\EHJ ]ʸK/ dL\hӏg0m}eޥjYX,C z: xH}5YC1F Ulm[ z^]._6 +7AeXIzL++}&F+QFϿeLLϴ,RܿmקS.F Y2IJZk)cc}GφFaշ;;Fr] 1Я\!4h?S']JH1H/lw8#.܌2V<΀Qh- _ɧ)~6FGs~\wywxvZ7O1' ޲%wf3m[QK΢=Z >bJP=k#F#8ʩkdž>޲@t +Zٜ$BAL\>Ґa*bmAʣ@ǒ}e:<|[ֵ,Jbߥ6F^VM#ՙEex@hwפ=91M-ΧW Ȃ;7:3t|쥚6,Yؐ wzGB~NM\-[ä5m$&߷:3[[=xC6k|1aӒFS^\r 9+/FUG``C?1goWslX*7*'M\j!4;$v%1|5f5ƥ̿M9JqEB|_\ˎfFgA܌+h* .,!y z5;:\=+O"2ܻ}|>Z,|8zI} +#Tt<ܑVnEvEX +k]В\߹=2k0/*ְe +'z>J(Kz)vcO {ZǾfȴXAV%ʉh[AM*uq~/ aU\0Bks埴q%>\IEw bCjƲWtN}w;$[9]/'cf!Byly 6wQǷ߹L23+~Y \1jDx]3r.E+[u,c * 2X8u]t6;=lI(|S.΍re{.jVvG31oŘUvtO>%y_hZ6\~g%k`hP}GictF@?=oDF)w&(Lګeu*Fdmx'PkNP7.M51T^cZ2z-dѝUIb1SQn&&EU$UZ),[vNojF fDMDn)F.?^G}kl=7\jTTD;}fTD@(V""""""&>_O]wh=׊QGQ]dG>y{n^-nR)@ >'OǦk|Sz&DDDDDDDDDDDDDD@fulG[v]kuu7~JY0{)vÍձVybp 2=&-*x兙HT@f:cG+a;Wm(JB̠H]xu Tf>/OӿO\ȴS]].?đ׾ϑ ,3;j]7;5f +рaҼ[Jf<6ߨa2R l<+1֪nC◬ 7߈0Vһ"ɜ)U?BDxNj1Ȏ'P΀20Sl}fXzoU~k*,QKmdsװx'ɸ``,݀ڑ4[;.v/U9"U-FHω-fgJLGVsE VGx'u-٭IVڭMN'?1xWq֤7%BRZC6}M(c&a Hq",BJ`}isއQC~σc}{}7YeIOScbNvXmAmvGR-HF߷gx"=]Q1V3rznm~WoEdgRVK̍w޴u$snsm[0G@J']"ͣ/EQgRW|BXCv>L[V5#lTou۰#i8'oytՏSԝD+ujSUPG#* 4v~PY,PQt=@;k9Uʦ\}Kܖ".~zqqI ݂AI+&K//w rn_@e޶ ~ꯖE%Il$}OܗW]·޵eDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@&BU2J* +>%NȦk|S7 YVJRB(#~ v߼Ș{[dR19o_#E=H2G^p]w%fT^Yi1AKm3Fj==>Rx*( v@P,cmyI@h6x*gSZ{$lw2P֖.8Dn6j[;ߴf-V:+& +z М8փ,SHߤGn}OMSX-(bVܖmPyV}3|梦֥z|DoO;rTvGp{lzJY!(QרxXV_nuy4;"ܙȻkrL"Cg]稈˸m{烓ZYKX6 Jy;csDDD+b=DDOZ 7HamW;/Y""x{,jbU`Gc=DDDDDDDDDDDDDDDDDDDD&JUua)"c9f.OS[Ene];F0:>So.C6wHHM׋k\сH2z/HٕYmM 16{}l܏-,ngR+̰RHkB3 +$2Ω.e`v>`~@jM!T=FulJUAx/+BODm'/u n;zf㽴BT bw#Lul V[[gۑTC}g.,2ڝ9!ǧntܮbֈdyeC}%|KnMn̵1[ksjCX^\jCx/ŷ̛`a@W`~bt˼H&EB;aZt2[ڨU?;nAVe//*zrlJKǷB2:pzʇƜ]Y{eGh_2֯[WYs]ApPH׸oyftuwr1#װ]{j\݆347F`5}'|Eu㰶--孴Q~#kt=d~ UW-$WZ+YcJNWK2yvH-=-z,tR$MLֱzǘ1ܖ،#|X%k]FJ{ʃIN"< ӿާ7)8+P]8];?&[^NMu=T][hxU,7YBڡZ"x-wf-}2t"#LIר(VT<MeVW]gP >d-聆Z^#QA'K}7}Y>eGVV؟-f=.ûTUJzJ>z:FT|jn.w*ۼW~uরkm_z}KJ2 ܋y*psR5;NzQ2nr_`=>C$N*MZsjcҼ U# S+/bR`T~!=IrߢlܷױjZmmUI lI2zx. Q`@m";h8='7P閫cW]ԬJ:׬>*[H%Ы;*(ڧ!CTP:0e(bO:/R{*9VY,MF}1l}jGH@u̎fkV z#bUkRt X*QHwzՄsŜ +[`ٽ{^ U}oZsm^B6*b׼γ«Yh9E޽y`u.cEt2n<]T!9YOɩUVǭ'`JjNg[[/(W{;U!y!v~CWGLȳYRژ9}4[ F;#G:~Nc`%޼YWVm|Wqоm;8a{7iU{+Ǵ3׮hC#Q cLwYСuI$ :~ ;;V`X~|'}-K^  sk^i a5);q}GLJ|׶8y2~ >o#h,bYkdз<u[q--RK&Z젝q:_ү_^JZͥ:c)m{jf'X÷z89[3#XHޗzDDDDDD@ص|МxXSuÐ|}^}o#5튨W.>5nzn|x#ې*Vn%ԺC%]o~]؋uu kȓ&:oJPE^ KЂ7E'ĝ#(3SC2+iJ +}$)Wj+*X6Q}o]G ZOcpT^bՋnJ޻r~ C'EIᜪP7 JuZz7Ir Z2Sv׿߉B,WՓm%ـXw8~i&ZK*lp+o#)$D<OK+,#'_Q="λrq)#+BUR?udXJc'mNuj SDkR[cu(mPSP ckoԐ&@#5Q$k q'T{ЭKm<'A{r?+F_}B@=6ݰ%~ohힿQP6lR1'? 6~Q`# l:{nx#xǤUFܕW3?f| _߷׶O} =61ATH 9}|&ĭm6˅bA{3ke kǷ&'@cEFqޘ`k=_і:-8y^§.֥Z+ju緖ǿ>גUXC2)ή۝ܣCOMjo ӱ+Qdܜ;{b).-9* +!ɻz5uG6_z߯ĵl:,6{*Ͽswg W'jtl?h+t#~#*{qKwGz<‡keύ&?Nar>^MSKw:[*m ;1}ɾ9_'Vձ1 +q>aIl Ql9X~lKx +ԓsm,V0SnNJ*JM6Vq`ܓ3G~:ОAm#Ijν=.Z)k+F t;V왹[+CecTzҚ XGDl?egG:&z]Vq/YncQʻ?{4q_*]$)lvV^zjԉ6O6:6>1ǭĸ?@!` $v^&įk$Q$E뱙TVoTWIPX%6bA#dJ7::NfG[FITMޯMېӱ=w:w֪Xo|fO*~&ʬježƲ̌I5fV@uf7_e+M-c^ե57æi@ 5}osok_m8>Dg(xSDV ؍~r/CƸ~6ibAャS+?u\~Z,T 6Ϲ=Gz4tb($q1:!׋QgX1_}zh?oF=q%@7G?*:^S.N47 Qj˸[e06(F˖I=sa~Rk2[KQa,soF5Yhke:;iWD׋BZ0?0@ؙ 689r'=k{^4N5 >>*ִ|Tm!j6$yXfj>Oe9}UcאP+pp˰~Yj\ȥ0V  7pE)oJP4HcZ=ҸZ*$o~J遆5)_-oNfZ8ycT(9vfZԡThОoCN# d\X02R;<.es^/R +2iK8\>#caTiAcz,CURn-Cc0p[iƪU 2Vt}F(bc֖9%P$ϼoe*6 CrxwdXms`rnC='32/96bR֖ \/w{7dc̀[yt2Ux-P+mveldiJ%j@*at8sbIng~Oy}7MxeÔðb'@ͣ}PrnHL,ʜ+@H? tioU +wn|31Ex-sk`/ӪƏ^WAηο@s( hz 1|?n9b]Y)$$^O:^mmvY1ϼīU(zUgge1b CcI1J$)Kv-ԌjB)qɥ,P?1O0:f/LV\jRgl ܫq)fc%AX +i]+]ݘ*=íj"Ti@09q/MX%cP{)PC;NmFWB4U2|>Ә>=u%TS:G:~W/7ae[~ jz - _3># oihxoGچ-Be#"w^=2BbT({]7^-KhbW7?YcV9hXhXX4t8h=(==&./n:f]kLGecWZR*"* +|a\o%e@ݽ>~k_e9?c}7j-^o>~gϖ9ᾙl6UkmC2zv?MC^=kZ +477wFEZ2o[~]Ha}dxk`Ƭ=ZiMRI*<7W#Cw2gϑ;/]>j[Cso@6 u-]sB_M̚0iƨQ]jG.oc J޼GhO8ؗZݱ{Pκ6k\ԵnFd*H{2UT<|Pq阉etTbp0R TzĩR<(O%%= S/pp[@B64x+1 ۷nJ"""""" fX¬Q"m{#ӼKgbI4HV#z;]΍hk@fFM0oV +`K )*rz#GS6"""""""'{""XL +^ UK;̯Q^EGieju ""F_,L{ڂXMlUK* +ԑA]whZכNa_` ZZꬻ菸˱}f?Q8*ɰWZkl=7LrܦOu;/A%FGpDΉlVb z:'1sR7X+N}LOc y3pw'龇WXl)R]Y:+) 6;b"#yGzؽK6˪gؠRF3&QDDn2<'OIsֱTP }&1./7@q` '`erM[4D0۸DD@4_Wg#CAuxzضOVZr߫yyCuQ 5W}ջT~rfvFǾn-.{+*"V{hމs[=S?3;5g[ 5tN<˺v-kxyGmPzfK VcɓalJEleRjЎ#ęF#maaWB p~})Ymݔ*=Y'$[y9X\tʸ$ {6Ķ)7XJ־~] |~GOȺBXWPS Q;*{͒Euf-xY*@m;,52Wkx_-lH NljcYT5ll(ﭏ_u̿ BZ-@Pf>}x##٬E|B8X˂Y=_̷)1mFչy@qhgkǩC_aJrwoC^aky啳U$l{}_S65%?(X8rU~ug׼uyi t +>:C|HC>S?egu'B0-G0[ۏ}_3nVu%ZE e!)G`#xCWU^Z6'B_a[DwG̛OQλ ZlrZy/{'a"S³c؎!F#]$nwHW?eDpqYPGm']#['A{ 0%+t 5!@{յAJ+x){G_wtZٔv[|m@u˿_@q\4]rvR*g@}H."WeeeTmA*xz:ߦ&S/|쩒ܬ +J% 5)1X\QPRg&U# ̧%sZN{hzQ~e|YWN'iћz+()]Gy|©A{;:k"~pWbe5{:|-[jEE˳ppNn?m&0-˰#-u_Eij*H@4 +> %ufZIH~2eXKhbEH%0 T5B&ڛ;t:$vz^ٶԘRa74Ţ;zO;xɿiyrK~Ǘ.Zn<};orC7yWQJ+quM63oH:m<޹oVF~(Ƹ9-+xo&Ja5W-Yt&mRN@0 ;=|oh#w`f-4',[ˎ޻o}ge/FJʥufBB0 ةs~bct/guq<ΉC'?uH®Gjq˖̤ eedn:5N[e\0ҐIcg?Qx"Z Hc }$+ r7M3[F-cozE}k\4\y6νgAU_fŦV˖ߎܞɯ2 1z}/#*Wjjk8(w:0[ҥeȿeoRĢej +]9 pWL^ޛɌ m.ň!fMy S̡'{}k?%]Cb4*:7U7o u|UU(BܡuOfR Zq'lacݤ@0S`H0MҫE~Mv^^9jk=u,6R-ǻ AsK?/وuk[Qmk_y{׾n?BUtz5yjƱmDz̫z^ĢtA)Al6]]/ggC?b29c82+Tn]=6iLLj|tǚN=dKy=~ y4˨(G IXv*1no]aIom>׉:8OG[!#lwHLtS[m{B?"*;}q?,ט۩qsG8ڀպo:1ە5X!ڑ_Ql%Mljڜw\߼᎝ғ5X8 픎w%앻Ծ]wlTTl#l> 3תddSecRN$rGo H +ӕ9H=cw77-;@dXNH_b4ǤLYdX]k_7[[zש +GR|oٔme5n]^?!WcMJڦ*'$|O]Sd!b%Q}(~>Ib8.y%Pf VV-ݴV=;MwU):~m]>Y! Iև~Ѻ=qV:&scC[;#iNߩ髒cܦ!5}BVOK̫M ߕ@&:hPi K !v@]̠m@nrnk/*c2lToS"Ln@d?85˞]Ł;zƪ~Pְۨ!ǶO,Au +:~)ع8o`k+GdVܴ}kߥΩ~M\T*4ŷ ~%}O/8dUƔi~3&[ƭKH·1kuz{ywcUXQ}COŭ䟌qLc܅M/Gosן5o-փm@d>-nYN_Jʱ.Eth:0# ]8Z)_9Q*$zs2"?'bdוjYY8~jHDDDDDDDDDDDDDDDDDDDDDDDDL FUy:ݫbG!csՄɝ݋:s.""""""""""""""""" iisS"_|k-m=tUCaE /-Ācll}(^ua60:=}.>qN_/&~-Ÿm:3Ȭ~K^&4rP@⫯ffFUX0Q OFUHַ~O9 l>`L,Ff>#嵻B܃'BH+&WY.V#kw`8"NiUy܁yw$kSNo^㷿yO5/wT\lrdll~Y#_go/Ǐr doRNMYVtxmס#/(NubT^Tkz4LӗK;~صL@ԓ.Rx7cz\:'G5m'Ɋs73#-%jŴmH##%!FoIbE~rlf\`egqX N+LNsF3Vox Iw޾0O5ڶGGD.u4fXj<? R lr}FQ~-ZU-eNobOJ/.loJrUL6@&P9(4ya`E~x X wMdjh.'[g:LWqU+6;(Tm6q:t{|TKMⱲ@ܝG[Ԃ>`OQ-+0@'߬-c$~ +ǡu;20/s23o`Xp&*21ޫ, +-#fWN5X<򖇭UwhM%`ڐFz,*f~ oq<@'g[)7~^+zWSl.EZ,@ry& 45졕Fǯrݾ0ѕF!k.`Oa쎟~K]vm%Gz:?SPv6}Os C50G{U{}ec̝ &=I/˻GMt]|D̈ T`䫨`h`AO[[x&<=\Xb7Ԑ/sM+XĒ'-aF)e2p\odUXӱܠ윅'.#51,V+Vng]yY+,]uY~ nݽ$EX,\-hz!~tޒg`xعV,);_)`dUEvmVNHkgcdu[ ʃ[:LNgT>e5VJ&{;#^=G=x=dy6+\!6-l*u6j8mPOøtNA5]V9'A'}zMZ"_1AuXVU"N~WMRkgYh\3zDlfCԩjT.D [1:?EĿ2eKV jZw`&'ɷ&EWwTl{gbX9zx}J]#jfut2K+rR.ɺn9ؘ8`qmZG6K-y@},KYҭͩm|-5Ք ;oY%%X.U + dV:Skj, րoIӨCUek%f$9 M⪖`i +GuVEw N€7fZJK%sX[BS8BQ K4 +a7!ۋnn2%fX YQqHO-zmʕ,qV?tilz;kGDlNɬ}7K-o`OKF 赀Rث #I~[ZK}&|zpŮe,VT}Ms']+[(DAxǵyW%>4A2NjqKwV=F䤫q52{7ՁҜzֺ3(Tb RTv F{LMuUlª>zڇ2WeơcX#ozSuK`DzKtT5,ۓ}}vGRqla^6UUUa,Z>rm| w}#ޚU[xmڻû}k*ڃΧmcX؁z6&wGkxUe"\67#~Lll- msX&|Lɸ]bsR ܐ;}ĉ2aV|\OF-|0ʯֵ^PlU;nBm~RW]&+u%C~7Tt=?>-~4~Ѱ5\ըY aa֎GUzVnw%P9qVޕֿPt쬢EuX+d# }P9뾇w4%88[{i ){7"z>q=U2]GS¾ܬTYUۆEEkPաe ӍLƵzoNE:R]y -VWzDv'sQ7UeHU9]KYU ǙgΓӯg+S|ǓgH;?6u:ɖo܁O ⌚:誻j3s#aT^_Z=6jBck-8@:5qD}(%!}iwøsr3Kl9q-ZVxkԝ>uz~c()Z#[J?)T=>6%I_!G#s{ߏfShH@1n޻m o/IbQsbװ{z]Tt*fb5O˙~C.tZ׮fu&έl4e5b +T {9l_A!:6GCT>0mL{Ԛ˷*wDbIsp|-Tm-dVLHqkܐ6n[lCe fzF_^Qs.;u^$ӣ\oh*˵y6pJ2t+Ĭ*KڤU޻PӖ;7V!~,9fa$C5,Αkȩ%H*jS3""io0#>U=AҺ,˵/&f\OqZ:4?*YUTeVG$+Wֵ]h1Ӻ~?\TSVܵ-Y}opIz" N2fVjm[lb;|ǼFh]gd>/mOWx l[,,<؝OMqi{ Dk}7׼Wgٙ}>~Y:P=eB0 $75Hj'=5IkY6~T[g=8J +9([o+|}{k}.<|M۲ +gץ 77nfcc%k]jTh)VmOMYOR4G-?LDZvߔ{^_iot\nPp:e; ac)oCƿ)r9 e  w~fb)o!-ݻ{LY|/Utc{qyܛܑ*%eS\WO +K56 N`=LjPC)>"ZZU +uĂY-kC۴[m+zPV K= &(PS([_ )v~cV, }Ē~G}%ÿ65k=l#ܒݾ95#Do]_ տ%O9~z^;Wt)z"c~qBehkXcSc38%ʳ˰zyhr@$Լ>iO#K3 'eZ{YS"u-}ǿ6FCu,egt,nbh`[W,AdbmN$@ l~սvאe 븖r7(WWJ:*4a3 lo58{|?*]N䧧mk~@Bպ6H^W3fNQ#ƷP{ Om,;ͻvmis3b_VM %['evlpe2?,VBN:tg\XX}'dkz̈1zRuv,*b}K{]OإYJ6 &TDz3u&(rZ bde$l2Y˫zcu|~ +Krttdu,jA:3ɱ_˱~$.uGdDD=s6ڳwP@,u6@́._N>T~*(f=ȭ$hlz۴1p7^%^ +:7>a }鎍eUIf'@6I?!)Vekm.RK.:5*t :gHgMrBG*~L:2_KGKn_0v31̭mev}]:2ӡYҪX@%:QR/~HK 胵%X@ 52b"ywI'{Xy +{oe!b>D|*(kXP}HS""""""&:gQeώ)Y0, 5T?mMoq k|oIkbYmqCadKl !_UH!K6_[יQJӈIaS)^J5DkO ~VZ1WɍuN@.=3;? 6S#?Bww;=2q'lʪV}N]̼mٍl{^^]aitYGƀgF_\|(gK .2}.N=t-+MZɾcFn[[Kޢs0+&ҡv>ɰmvȑ5fbJ@fB̧jWZ;'@}e+3V vZ[7] #gMJ;g]L3V8K|=fNZ3W(eOeOIyKv(Y5T1cr#O J=N뙘C*rj+,)%]Odtnf^F^Bɐ0lpFϧoNLs*L|vهv;ozܒ'#POV.F@7?PcHf\WF=afw+UPؓ|O;(aZ\X/`6IQz?bXVMmgKltuI}Mtx<=OTŭUiWj9UM*6ͷ݊4*דw\.wuNM3r߳gk- |lzk]ϰG]]hd NuSqV:''a$@&7k`%KSUT+k{קOV>+"!vd#EJZ:_Vγ;mƱQx27:é$#o6x!zɎ6yZƭ^cc`L%>_&e;1~²}n~ ŻsEraf¥kG۾VuugŹUƈa>kCyf {ˎ!RA +#㷼ۢ@|6bpS]H^pf*&)LL+#=Aٺe;gbٲt $ _W~Z6cEVTMNPo׉<]H>3}yjZKfTPrE5k^n;o$^VMjdVN6!&]4{OX^JW]~]:si!_S?+Q}Vys6{ڹHoSmv) =3tzkTWI6yXEa̦]2W9+kWc7c0}[er:zcZ.8?-8`8}gAꧫ㵌 *>cɯ`wݿVB54WX(>ϵJ—1N߯IP#`7G_/UXŽ e˪_-Jjf +K6A@$aX.\EyV#m! >Gx{37'U' +V + +v'}=/ܛΫ>gEQsejuU +K+X8C%h}L[nUU U(x ocyo7ŋWNQC[SX%Yz؍d2)ͫ*C}vf VFĎQ]XXƼc|!k+ܟSwnUgdT߳g؅Tbe:~se&6ŹrUC!; ])ͪ]Ez-Aֈ:>Xj:> ᾛ]l;x1h9]H4Sk Qt0R$Mwr|X4RlDp_t-`vUbe[t`kdp5k*G!Nrv-5Z{kYr~ġM`76Ս^nN12άMTy6+N~?mLF>C-^Rꗲ*|vCzLΓԪ?Z.J.+ iA׶{_:F}4eUPPUVARG:&GP~N]>]Y88u}jlKЕT>Ȭ*O +mHӖ`='׭ޛVm}c3"VZJ_̨w*znC]Mc]Y9=Ka>sH7/ۆ/5=kRĔk+ #`jBxO4|*.O?%TY|If̖sK*!X]A(4jv)Q 3~LH{RYIպ{ՌM[Q̬*xFͯu)UB'U#3η < ȹ};/.3wa"O+jV.u[ťJY- I#l7*4{Ix9Mx-m̫3mxA<޷XX{ɬo:INROl@T=e|Gž\krV#').*@GBD^ݾ~fU.B v$Yx{73=1S3$ٳe,X]I o-KyU!tW}؀];[NHCMcW=!\98i5F̋l81q&x5_:};UecٕU, mznFNzNI{94Ѕ E,lHcqUҤNCw?] 2Q{ql~SZ򨒬NJkFa,ںJ\ TJn q޲K#g^cՈo8{ +U +P $K4u>Q Yx-`NqF߬L=gam6$|1}UOy9CGms*Q1?>gS f'l랗ls`WŁb wH fbjp)keJ0Z-l7gR[}s 5{nc`gޡ*̢5Qb.D=f=9'[R;dܒl˷nI/R+vK_ZQ,Q~8>gã/B8.Ʊ,X0$M9g.%Mu#:;-#^mj\~;\랇BYls`V,G'Zq'Y8|5lObh[T47/frp+3ëZp vv? ?P8<&6W@'{[#ğNZOsEfft{`zZK%"{J(Ms~s8Ԅy,GD7ԙg! gn=,J)bUt ̸tln +O,H*He ĉUTE +;QԪ镔X?=E*λMS =vQG`IQ13m=D'ѹ#( ǬǧV%[nCVū72BAUFOr N"""""""""""""""""""""""""" -ɢy v4eȈgupJZ:kLԿ(-(.Pm!9 O7K> UIC]]([|>[]5lzjOO`fpk;22{0=L.4&zwYjVOop͐~)o1=;uBGC2lJDD99u58;:*33h` SOU$3}quN|wHt윪ȧ1o,Tb2 ``Gc$_w!D;^']Z޳.nWuPwZ& :eP̐q˺6t6uY+x)[bİv;jfJ-jﲢ{J5<5}g}b˩aP +|L{aKy”Gg|9k]܎n~OJⲇCiӚFfbٍV\YC/e$lwf+DOSW1ɷkנ޿HɲRDc-aIk!U,(Xp $|ԟ&{J+*[άTS=.$Ivt^z&P3]4ZY$<`CQwUR(OP=:rR]KFK)+by29OYS2-kƣhX.17fbȵ",X +%#Dl+!r [lkwbgQ` +!;Jzb{չzL<,SN[; +H>3OQZ6ϕGM }$w9;Xꋠ; ݹN!ϧf_Rߤ9cgeP;޶`״umb2%H $;Yf2rV 5@9vt-QPw3ޓ^2-c+PJ>}N7\ɩl +޺"xOyWp o}Oq5|eNA~P?QOe7e`Pse1FKBt7ֆ727aګH\|EMeN趀w׼U58%cԳږqݞk;Tbߩ#]ܑK-C1+lުl˯lK裆+#cs&|1^k +ogsa^݁״¼ +[#o}98+k;śE@ +I wv6%yyuR8 {M|- éb(dbGkWO<~rQj.ؖ%~hF.tlJ|An}fB#KRW-DąιYeE=Tr'߼vJpΎQtbvMڔ^% +jRx[Bױkc/TiаBKzVVMT$9h{$O_ħtv:[v6%{wԧP阹w]f:%0QMWrwyJz{lSj]6;^XbX5 I'mBU}u C]T荀tfQ˿))ZVZ^gTB+5!WZƫ`]Q|q@Wa W\z=kQzwXM\YoEgҹU.6VZSȓWq6}xI`QMhjƻ1F|Hu_w]y7;S _~[gc`fLjQk,,Kvb'۴ص2 U7 ZYZs"ƋbS-m2KVoNMr?lmC3zH7btWm_4ڑ~rMΧ__0cu2k +)ĒhX)sL|XK*0lxbݖ/Ϋ<ϫdt$u,@e+Sg=$.lɝ7>Vf͆0j}W7,luĭ*ME +6K1$x֎ͦmT5'&?G[hw*͗]hIȓz뷌j*CۉGH,~]c0cL,ڭ_y}}?61R?=ƥ+f7kzC +6FuZDHGS1obDt꺗KՎI)fh߱#:WL=]q ?O^g_!IQ/ó@K5q7r+*hnDI߯M_g('_bVY]`Ck{R7؞oT2bJFٔtw{0OǐY_>G$w@=zoI0NwYb.B }3nZ-W-"CD/oRnJWHڒ65Gp~& +d_2*SOz6&N7EŰ_oXv5XezC땊 '20Y2*j#8ϰHPO;0[>jj #[ׯVoe':+jC&`-|·y62}.,:mCKYIJkrMiV3/7ӚXY붥*#hi0 e<1walv%W;:.av76W?7 uysH$mz +,Zt"\,& 7.@v`{}fVxU bnvߺcg/Sri $ ;oDZnBb Ϗ>;9=w9XԊ+Gb+Kvzh}w]2otV}rH'sOAp ] C ې׼Nd-Q* "+צ(gJɂ3۰Tݚ+ !0( g{?$,X +Al}Dv^"3@#n_ $MkRW+d>.;is3ÔgYm[F~ zt*9)m;* +,UgDhFɽݙ<۟(a}dШNQxpn_R2Rw,57\mݕBisÝ4tR bnAMk+ឝ/9jfT,xXe̎Uٓ]mne@B o-KR|wlٰg(?PZɺ/AoI'^BIfnYm|4&LD=>CQp%[^Uf>/H5]{ +p]**B޺/bt0sn6C@o˘=S/VO*lZʺ#WV!+ZtZ Z7%P7XNZfuҌn8$NU::,Xbwg',[ icɂ{Jv#κ453aGG{OY']{dmZcTʼ umgbbWXI$vI2D@01eMW+9@ u䳎?q>fDDDſcb]ډeU:fʈl\9 K1l,U{I:,@u2"Q(ٞkm Oq<& oM/h  B0RwdLo!yV;6>Dhˑřb*~_jqʭ*:P3ך}TŖ-JYI$I&cYnkqW ۖfR8`ADD@mW+N@۹ޏp;MW:g`V:aj +?lx{wسE˹k)B]O6v_P^'&jm׉>60GSceߔO.] HC o[y#y=4X5'Cbu1:/Q7u^]'?'A +S;{ngcdzEeTbx XR5ă<'_̭q9sնZ60ۧQeXYVe`ozXe)p)l8+@[UL,}vRX??MIx{:3 +Y|bC TXko)qތtK Vbm 7y݃ReeݫJ'N߶̮wm+g6V +xV ^8!̲z??CMV(e"? qmt_YL(nCkVSFv-x=2z acð='-JC{. qK"3"t7&z*ˣ'@a`. %{$z?\"7VWXö o#ӳdvC{Ȋ$AҨ+)(w=Aqs aa@h^{Ln cb~O.Mmma\޻k{;g~W\dS^*0H5hM]>x8FU~C@%o7jIu :mV"Qt7Ŷ}2N%y`12c+L%`]Ebt=.l~+k"dw 7}ˑvF6B +n^aӃCw51WM&cc2(!>ވ$k`A8yVcgyNֱ::QRM tZ݃H ]2*leq-Z.dZk 8XgFX}j2œGiڀ8J +v@`H|&# |R%mƭv2v@#g[/⭗~;1YW|?Dv>1>ox?^#m]|^WA:C&-Ng O ֆI!-[m&DU:sc8 +1$?#n/qHThK @vvmb3RV"TQyjٕEӅaZżUejPw˯:K]OՆTt\J,fȳBSaFtm_QVbGS]$`^z8]il, 6^jňˉ!OW:_6ruB7uDR}HŵC) G2-ʲoea éaw_ë98Z ^@fOONA$'BPMqM}k6)C4J-SF\MK=7rg%rqHG]vc8eA0ڎZgRc'5PÒU ; @{ߋ2AujlR[nT٭r { ^)04[b3u`קpH_#|,o>dw%)Nl9LzOȡVKv?132mNc9ʻtlN;߸c#lnȫ?y_U$Sɀ#;[uuf#=jUC7&!Fm7ujZkb W؂ izR-w]Z-\z W&DϷs6<G}BHDD@cl`.$܁yat ?Kz) 8f*ǶlW6ܼKVA.M/q*S! +>ꤎ޽}ˑ ia=&Ç'_݁ DAukPϮ;ttHo~w +lK+R"Ͼfכsywc5VP Zc_KMu4Z)|lv?0׬ѭONf-[Hz5j[=`#Gr?+]7t|*{:dϢw݇Lڗ_ap٥ɬG޴Y9g[7m)l~vuxa{\/%ҝ#h1~IlXNH[J&?Y'8-ӫƺnEU.ǘE)n_-bkS^mT1tq[di{tvUȷKVx,)'{Ӽ/zn$7GH*Ha< | k>˚8@Yeb~[닛zACCd*Eitzۓ:]cM)dNpԍ8"ܪq_%7[ n PFͫQlj(ht=$?}fVp?2Keh$hH0f*`uhEkm׶MVc׀U5o|@rXYCZW-@~o]=;7sd_lqt@'ыM7#d%Җ^' a;pNo}FN5yVdaS߱NYұ:g/R.#[yF5A(T[@H?I1_ +C5w3)0⏭<~HVwW %ۆ m`0!oȔ Z5aquU}⦅O.1cϖO -d;::!h˫‡KC j+:ro?oc״6ʱqVUwm +C@<>~OOwdb5v+=+#*uQF1>^8Vv`;ُȮ8]Z̺{\ +j y9MkBI,w%vt̪k{T^GQ`7IА]=Jq6 |*g$;hL`[11Bl*YneuYo|BpꦛkTɧ"׶*y,>ںQM:cO0kat죧ul\ef:/\߅阔[Vc[ ȁNc~v27v/YKMT0 W{\X%-"jT> ݔls!lEHBՀ@܏+~N{m@ aJks;:yu (_=7{\2z]@;4DZ7hk u Z%#Z iV][iԍk=#_=AzZȬfy5TϤI؂ߣ(OQ)wK}gǼl݈*m.Bj=`N6l5/aVn*OR~Grfp΋q3z{R[ã-޽?)'lSm.yBeAy#z&E,~h7ju5z0ꬬZ[L #Di=ӳmw˽^Dj {4>k=lӇU}JҜX^0zrڐ Z'Sφy5K#$ˮb؅?<eF [*_v3h7[]UeTѾ'gJ,iK7DZj>ֽ[nvˍ%#`7ţȎ$}+',mVMR5wA;ԖVjs"SМ6uN^Kc|+ՑZւld %YH=箥c)̐+Gj08˶19]/3=uu]mv*x-\v{f{kzxc+^-eEɹd:ס 6}}bZeBJ:PXlLO 6[`6~JyT"UJ _;pO[?EIX"gDD)+ؕev0$XsH|Hy"""""""""""""""xJ00 Fx~TZ1UW(vBȒ;SұA{O$쟜ʈ:YβV*jq? N$~Ԑu8xԔ4T}̽#z@̵mlB+jV!J;n 7YU-T*qhkppo.${0A1RƯ"o ax[?\ +]un½{ϻ.cҶ+Z~ _t̉~RS]tYGųO#2ak U`tĝRb"&6>}Y7Bo%5?dĆO%z\W6#\ WT 菋}egdr*U 'ތcVMv ͍ v>'Nd$=T1md#1zo%ebMAՎ<8Sݤ_ ++>׀:TArm-H嚝|r_,'IeVc56V&km{lHevV+C0GDlHWf[Y}E5N!HYJw۰l[hëV8`F_Yk=GO#^-]|kĞۿy3.Lc1H=̎kJ%<]}}?3#짍_eX>AׯoyzUǽ))SXJ7s{f7W˷tckͷ{Gy%ԪO eS#%q#}JW#b:֒f nTh폾^wuo]-5+bgRozOTntl"ۙ[NS.]R=;fe8Ua?%ߥ*~S]j;1@BmV$$zsᰢʺ{ZVI~,Y7ڑ%1kAU +{4N=EXP#-}9+@v ;봳||5ʨVS3]X 0DrIֻK dd[mUkRK }߿Sܛ&|MzڨPh_Io¸C o<~\+(!]Zȯ''"̋*+9k Z@ϷẲ2lu[F@GDl >V6EXP#+줥Ð/7WHVtfwjo% FVL**5<2TP4dĊuُe̦P]}Zk|**UiKЦnH۴ᾖ+@˭k69`r5=S>uJqrK8^*s3s+:a Q͇s{=G#/=qɩ,Cf +I;^=U^[zm +vD2JJ+:d`\Ş}^~eH*Ou aj( +՗cgZ&ItɳDKbfTDM{vO)Z4{w']}cl/X*N/蝟gZ},lPЏ➽AklVصxp;!rq&(d4EG5\{ߡi50:S^~c^ULzlw:FFateQM(W6rm$(ù;OR9+.S-)9'c {L6]85KkcdoEeG}Y̯%D;58G1U}}{0: /WG +>$?x޾GFdaםMwv" z"$/V"27R--z0+"̡*<,C?>r<[bҥI? ; ;.ZAWDX_NDOn+?Tʾb)ƥ@'ijYif;@l{?Q^-}Uԕt?,]QYjk[cJ}}v|[n W"mz^""""""""`YH`}#DM_=/aUu FF =c" +[nk%a[ Nw\+An!RuI}ljj8Y9 thhn\R6G=.폞_gɌ Mm d{v?t׋u#L(;2|Y}I==!6߇L5ڷRX|Gi mb)m0~~ZU~K:Uo2zbI'S+חyuӝUm|ol5 +tl+rZjuT?6忬oK0p=ά4\v[\l|Eqa!)тct Avs_0nV{.5պaP k,< jNpniֺbֲUA] <3mJw"B4)&"j +Plj9>P? fiDH/ѝFU[⧱ @ +X |1z5}eV__"?Yz5X=JXkZC;(VHPb5.~u=b*,XkA܁s2x3ƬVFq* U^6x)uzu)3/cN蹩G=C%Re%3~צ׏oOW׼9LDDDDDDDDG.j1lElS@u'|oFҰ_Q7 h9TKC7*e'9r2.^ye!ŕՁ:ٗoLUUgfc흏&eą4܎A +ȴR*|$rruy5+õa-S{rͱ~ ]*~Mo~3\○+zb~EhRl>&}cR3>KEMX%*vgHqYr|RA$t +^k5ۮ]~Zeu > +ʮXT'eI;Ԯ{mkU:-Rw7{K{,*`Pkrt&-'u3KQ;6 +si9+xvTd[o*µ`I*`ugcjmcF7 BG>_RV\bi `t6c/kK~J̄~:)@=O ׇFE ܗBbK}SgUZ´-N/{O?|3-ʽ J]wS1WRŴRaaj&ݷ^%Em[+)ё^ c(n7GsG*=62:cXܑKUOs [am ֵ}CrYl?69[aR Տ{9zFv*W2s2"$Yʅ7C7Ƿ~$l Ыȣ%=z`٘:%߷Dy_T I#᪱˥2?ir֖z0;Mkd,o ॎTJ,vz'Z{zEXJjum]@YA;]^.4h:M<.,˿rH?B_i/,Jaerߤe{s:#7wcv?2߇:{@kͲ.^e] ^9ɬֶ=dB0 7W@_s#3Gee7ddux=.fE}cmt=inV"""%ّ9RB a s˻cE2-Sﱭwe$¥ڶk6A=6;f.p~u4 ׊^1ǧu겑mJq</ Bt;_T8enr3jԞjPv$N;v[]I]jV"""""""""%4%b% +Aq+3uK:}vX*vrʁW;c]ZFuK_X˳aŔߤ{²ܤ7 v#Y:s|Gt }ayMiwu%4Z6{9m;g}Rh?mź;IJ,~`X=|;mv(T%e +r]OOF˹[!#Z H^FJ[MoI t^ }wc$3)tJIԗohJ Z~;o$"""""""""""""""""""""""""""&>v)ͥ=Eu.P{~\;M"ob=B%Th~<~bZ1.o=07{dscP $0#l?]jRR +&DDDDDDDDDDDDDDDDDDHG[G̋R*t~.[vxXg=c9 vRتkpא"<41^e88Qą(wbgVAgYkǦ/b*?kJxo~@iv5r%F}tt;Odu[21gURt=vv}$DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD3+;_Hd~3+;_Hd~5lK/L*AMƭ\Y1(ˉlޢgâ8lmlR[hPt=6G).Nu3v`LNzOU A\z2@`A*{Gp~+Q+-9Ufe&b"""""""""%ljc8 +w0#x3,[rs2yȺ +VnT6ﳩɰ#%V;$fX'BŃ`;DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@3+;_Hd~5 o/;fٲօt L""""""""""iǯ'drF 6_2 [ 4t9uvmG"RU =?#;%)Z5SeTo.<:f/H\Ldڙlfdm+Wez?Fgͥ }#(jjLOs!:} Mߙ~&}3 OcөUmz,驙ñ]"o~^]:rNVWն*Vw~ :N0P&Ƚ,ڠUeҖa߶%:P3~QI^ͪl[DyN5(u +cے +ʺk*q8] ^[6>~R3u챫okŽ,[U<|# oX>`k-92 k}uh[ǻ^emBħ$_KoA;eUo‹5sw?\;%L޹ +eQX+* .GL@e E6Z|-Evfl,&/KD Ahr+ͬfřcRr??iD[n'gݷGs~[mkl +=gGQo$jo+9;(((2$cZ. "[N)o>&O2n)]r~$6 +Vlk5=iGŒHWu+ Xmޠz{JS1 i$سOIAvk3+/7Pĕ>C.P׌msv$tdap([fqA-DߧJ+إv v˘;[  \L +0|%y;h?S0%c-nVX[rʤ }@f AU/:}!3>39ro7Pr,6a. +4xZ}Gub ;p!V:qq8 +G=wFa.9.{~OEʮH5&M |, ؏B=eLgm1,u~CdDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD3+;_Hd~%(*h <(Pw @{<=V~)uWUT\k k+t/9ٮkR+@BTefb"@ I3+;_Hd~SK/U+z9AјͲ""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""3+;_Hd~RZ}K{J}_aZm3+;_Hd~#̓UʊXa?@vͣ>̖3.|z H́I"ژ2:R=#`˱3+;_Hd~5 Y]S+A!>+m-ydx`ugjͽDebQL~=f>պ0f5b7K}^܌ӰX{`Y*V새#`nQ~ˏ1ϚՂ' 7J~OvuF7ű6G%;+i~HuW䖪ܾ\Jn=|mYW?/.^v3Qk6r ;P%νԯg +z˦oe `OCgbu<|:֦Ldc5f`4g==X7qm: Qv?exg/e +kp7ǕnTc{*+陋Zug^*e Cy:V5w'VA d1$=e +ڙ_XIP guզU [,nd~`z h .fcZ)W26Í[r$cѫ:X%:q3+;_Hd~#}['LL_A~GG>ISn~n #Ucbȅ_P۴L}+׋ vvv,"`u|,Ke%WƆQK}O<&WLɢr-bF8܇t: =޵.vOB{|η:rJfXjRbcdnͯ/b ݫn `j5]Tq㶽9Y![zmʥ^P=wzL^:8֭^M7k-z53psr:.Z_{6`t8q}K};QUJ[6 \~Yw;3b6>]uZkrj[B0`_v>9PAa'c}OlH(;Ho p\[*ncr0{i0nvUu9{ +VEŃ"2:^ +黓A`%6CwnZ@SH>g𪽉̶kC0Mr""""""""""""""""""" 3+;_Hd~Rz'/ }@}&0s:.&}ukkGt-fjߒ0G+^*fپ,4X#mt{qkPA"Y˫ CZ$@$]{2=HSu$~XTOP_rOH&5gZ^<*[\C6mA;YXʘ:#pG&f-}jVkcUT3z6"e6`|;/{z޷Ƕv}m=ê$v +|=gfNU̬mr*Hq}\DZ*jz3+;_Hd~<,t$`<,O Ơ}Og{sm甩`;|by7""""""""""""""""""""""""""""""`uK2j4|dmuB!::uI yJDDDDDDDDDDDDDDDDDDDDDD3+;_Hd~5gٍˎ?bխs仓]3ұiŨijP~[fTDWv_yhK]v'd|;~騴՗mv&AgIUXOp;v|1anvCjQ饥\f>mBljmK-9r+Zf2]ӂ܌uS|x̥dz~z'joEtlOq)X3+;_Hd~5 +OďfOLU;% nk5N6> +9yTG07an(w6;jh %5(PxIbnJ_:5v=8ʑ(T1E`UGmz0|spڼ: /t67߿*z@ 5dwILJAƦ +wn^E`ޒvMͭ +!X0$A#̸'RK@ =N8Z~uމS؀{fLDO`ٔ0ſ,MřUĔi%V%Εa :Bdc:^JїPw\XUT1:I1U=hRFfDDDDD2;&Zl|A=Ϸ{LYXhFTI{ Oy +{mYNר"""b.,w c}&TDD~^@kZYW`YWz" oz2/˯F?Wܐ6;z"Y\:V!FQ׹׾~Sv-H A qcYm5X,P~%vŽS/s|Kx{U*;șT j g"\)}w$+ &rkvH=~I6`gE0?uo6G-"(J`䚰q#(H-n a_yu?O5&#_r@}9+63]y6A&<ϖ};mܹ&*tFb8x5NrS/aPծ߁Ku +k^iZH?ʝ 4HJ+L2l"[^2FbZڻ W\>k}}&LLk0܄bHT~胭OSZ۱/>bT`oȏ _GJRR02;@ +=beG[\_VT ^̟']k}gh2k[+`H #Xl|pY}*&@c:Da(.yB=-gI #!VZvz2˝^>8یn7|CK|$߶WċU9ϜobAAb;Z#{}?gfPA(X+3[R&#_Omc,c.u{D$StR~S?uÍNA Vo´E 'Dw{j\hu6Ȣv;بb|C20;#~6c6-N}0#e6Torڍ~ |;ղwG!1dz5ܵc_R6{Iޣ%Z1=('6Z]eޏ(]bێkht}A~3?)쮶j;n-~S&>r_1W.$=ǴVV>.]h%Xջ62˱ӾoZʻQ0pV$CSm2skWKXbJ-v6lWvSK;Ha˱L{$G==; r-¬TgXpWGo]n\>MZv/HIJh#lK>mjy3ZT&ɔ1Z^ޣyZ_ET\~b{8 o؍ft-ȩ1m,Ylu6Yx q+J_EIA6 '#RTvaZ/.w"]B3O'@l s BYr՘j!Veb2D菗ys7dWъ,gkUͼP`q$OzxjzZ?dWbwױ ԓ Tg*n̪{PN$A?Iw7I|z|Z[8K(`W w;۴^WeȻ!yq6s]8D~ܹ,*,J5z&,.#;MmٜhiG,^Ɵ?]li!-/7B;vt/P3j/˲~&8;؍zL:UGㄯ-}ڬk.9G.'юEj쬫p*K90جV%c'0c׎./sZR,BT6w7*쥳ϧtE ljs.3/#Ñ'|¤_P5զÀIQ3de8_]XD +Gÿv͓7m؈- k l:OU9_rywPX)6J#duDz9Df[:?}$xG5I沠nt@c^Fޮu:plt8#u뒕0g:l8t|~G̜#yhk;+a@#~f6PVh`. )t,L;ibyv$:rt}cN_S|F2%Z>h6^PMV=n-UQv:#_Izϗn jk];W#Mف]^^"lo1[d΀n}]K20qkZQΘ@ȍOv.Ci~5l@xK P ~fF=*_vH=xM:x AcZ''dwLj=Bz||\67 +(m-U2ev.mW.-wsﮜV5,j۳Zjq`ײS%1z”C:m{ rNbۖɊWZ`tgB_LuT8SbFq3"3+;_Hd~OpzPU$e{jnf9lC ކBu_eT ;% +O:%>oSVFW_DDDDDDDDDK9,s.@st̜H_Olk*c)ruktkc끷~~m+%s*|vWAT0.dtnl |SEε<ԐLZU<ǯ 1Q-moe{wF>?"!3oXf1tk)ŗQԝ?H.M]Y893<ʙۑ,.IF_Cf%ĕ bN]߾eίVA: 2hX+l@4=nZSlo]ߩ?PX땸"!LY9kAqA^5H+&b#^F dB A$׿iƶ- t&P; {wwOʽ>*o'!UEJ)53ׅt+djv|DUc?/C6ygWXҶ%iZɱLoxe[M W~6bu < +8VsǷc~ܬ~eԛ|VlOvgN;_m_.=*ݬe]e΀@YMƶ wlx'p6d*7nf%Ic؉N%jkқقc/?2p>p|ZvZ~̜΂rr0F) !M j*yvdIXǯhv`=}(=w/rc%mcBCԁ󚭘\7Ĵ!FA +mF'|+۾ɒO9?-5VJءyZМ~=G[ׯn?R7cZ^[PJWo̯YXp-gwe;}ʻxV&-MV +hwv&~Uw{3/e-UG ͎hwl 5w_~`4}* AP͔o\CлӰi_$/1ڡuqٽ6{}^!zmωrUrcX¾?r'NHoSd}W4`adU?qR}&p[t:X|C vM>ICպrAB2et~3ﲋ,\5Hl +mw]w,/S}Vm{r׮=6f-9J67~6N=kZ4IrU#ze{Y3VVn;nh=+'7 +[3|,ȶzV Tљg>ˠU4HZ&<1{8+-\]w/LM&vȰvE +H!}[mi U/ڑ[}ۈz緮5Mul-RK؊A'Ӊow3bgt\nUY}P wԳ<;GO6 + TzCj_Υ/QVh*T';z]xPeuc=hmm!~dbݏeD_h-É[VnM7|y?~yDDH޹1{kdliē-뛈`ޒ)MFQԬJj5MFQ+j53ww/"Af$}i)4'PaC/PH*Or=vE&rr]QF :-}beZXC B~~e5F#R)jV%5j%e5++wZ8PGNA0>Ŕ&JL<Ӓʹ@\?CGȀ~3BV%Jb>z)^ IMCHGa>eMDJjXm/O6@T-[wWMN^*;VPl; k'VmmWTPW\ +wI FQj5Ԭb" 3+;_Hd~5/k#TOȷ$Їd6ZT"h ""%*zME+ >V3<f|\v~"""""""'lZU$d'ByN]_1,AT9lOi: ru=G'J|iYI$Zyhw%u!zUy'#eencfAtܬDLףa_XU[6bHE M0YMΕ5I~:GV'JY(Vy(@@]|[>4@;J+ H\V6{{o>^u$VZ*X]@ >vubkk B;>$aߕK1+Zl = G0Rȧ' z^rP*U$ql`={ ͒#IN^'kή܋q|뮷o `RN0X! 0pU'dyoIyA+ ?XͷQb>-HW'}!fDɺ̅-R570bkF{ϫmeE&Ϲ7mNL):Xxʼ[ߓZX}sgtȲRZTsTbDK޸սtِ=C"ߓJ%V]VG5u:>r"aLjb9 +Xm܎dc'OpN޴u ̂uVP:@wVDxd~nf0+@FSV""[ǭoEVc :SYZ-EɁCmMDDH ;@@_I>[I-3+;_Hd~f]x}NJV~AFɚׂqlk nk ڥGsM"""%j9/foF^u1/~~,}ޣߋ@$Eؽr1cєtoue"HDDDDDDL|zz{#_I@BW0eomnIlKŲq<|ˀq;"I&%^0Խ?$Uu }}~xߧe V"/%]wY='7+ۻ(ƽ5<+*Wn:!jKx3"ܾm]څ16O^~.-|yu,!5#L{T3bح7"vWa}wGvn³ ]T#gXH {Qb隨N1wfNiNԗ5<Ž*O$A{;#'l3F`N](Sr=K*_ʒ8>b=;]ߊ%'@.|&fV\gűr52}1 3S3etesր46yOVξq2n%~((A ,gj_c]LNEIעb:dUH66ARA[$XͿ?¸YZv𘺻!$ܵxvi#Ⱗt>D5Sh~&[ꔦoQRҚy|~iu lhLZs~̫^.I,QPΪBw=CCvԶ4w;nT*ScpcSY[F;ux:yB+̵VlT[Ĥ{?YMwŠ v[QƬi[]醾bby~g̣0FU\Xqom`jj8=/~cxVhd];{`cꟓo,r%D #1:OGط !n/oi+uĥʳYǰs[QCz=瞅N9g5tϻ r ׿MM.NV *kyltt~O[K[o +5]kgkYy~R9^lvJVXyNӞ@a;Jŷ'õu_=6*ħ ׼ʷЮYOȖ8V_ [\缊+y5V&MX\Zaeàu\:6(˦jeG+]X;o^^=BΟӮ{-,S)+Lx|+l}C)XebMY!*rRa(u`m-[jD`bIl#[]ֵ6,V% 51G hꩴcV8w 1rH 5xmA)mP\ 2Ru&1Vf=UEj I}O>$W\LbVܻf){G!G`{o6sy-I [53XX3kր^8(,V(ݔQNdcjޮ-b ߻k]î?I%+N]Y6=%(*!޻Z|EIYa|v?+rp͢Ǒ!pu\|}›:{-Y,E֊nHz>E5xE)RmR>Г>̻?a{wK1$llZK/Tk@4o6mJ߹;~9Y?bX%u wZo1<5*L,OS + ڪ}f%!긽;[u|d$kиQwԕ%+,6+䎥#Z:g£2W뭲ͣX_1gb\/b ie 2R6H&:9er0ضX.BC7`ߣu&" 3+;_Hd~QUc*ݘ@)ڦb"h=ZCu>Ngbz?kbwLc[cU6%g)Dc3ՋڲGH2ˎ9ĸ_ >gƹpi JR@f0DRmK";Bn>܉t*8gxpؔА ic ʲY'Y v:״=*@ǥֽX?rLStuz֫*+3! jvǼǫW}\| :EP[]')oC~6E riմXzoX6SⰶwPF]<'}{̌!|{]Ul(G=z2YNO&wcv'ԟoI|%/Ta/v>=Hu_RƳ*X Cŀ?"=%zF=kX$UPXc:m]_[N[7xz̥ͺ;rڵ}+kV;V68NZ +UCϸeK'@$|5^ed^FS3XYL4̿b@ZNN)FRtʻ?23=_Rn+EZ,}E}2-S ćAԕ<{mHbQv-VZڏYV rI};x8 eMz@018O2-֖[eU1+{7́#MI̔Lګ2e=h ݕmCC0{΄r6#k ++(e;}%~X. +YOw`)g\ԫ) "GS,B˭J5#K2g;0<5SQ}]]:]( +Fy\+jáMw[>ǻ5eUʭl FR9mqO6xg fFw?3}5ސWD'"5r@cvet`(+́B >YjaQbcz@ʮ"z(I*͋nv}7N[4ee@ t&99S4{H#LNXn@-UA; *;l޲v/hzyK.h:#dvޤKxPYӏL|D+Q_ r7tl<7+KG}xp]VM[i%*c2BzaqYSI W\w@; gßʶ9e|V+:ZnݵL.-vǒvoG}yt4wcdU[Vuૂ"cc_cYXՆv O67wRYenLYI_n'(ĭMkC+~4u$d{gs YIsmhVQP0ӐO4'bn:ة#^ѓ>rګ!V2zhlyeGT @};ftT,u;R;;ϹΈ3+;_Hd~#X[wk{ʣOiޏnfeamX :DDDDDHofƜjoN΍ѼQv>J;@=5_)DDDDDDDDD}!{YQG1 +'v2 }#{hT +r r z=Hgp`gn T bI%*X`Q8;1OQ-}x('[$yAQ +ǎ~׼cdekmda$t{b%\g`1S؂: "xԥKP $$A)Mɐ`F) |(N"""""""""""""""""""""""""""3+;_Hd~i}T8p,kvO굏M""""""&Y蘝{ e#ѕpf3|#rbuw61"ҥݻwuS@ A""""&7Ql {.ZҊ[ @uȁw#Ŋj- d,VV-hi+ +;'O_hLVrL\9İGt6F3:L6So5^\U(|}H߶:OSNzX +lljt O;{qBS投Ç]rG`hw#݂MqvYEp?Sw%:W׍Jy،_ " t zO(pI\T1@ +l #r v,mNmK% 2*DwGFjK2`15X '~I;88Ƨ򅁃k#ҞCԍ{e ^J³f;dPVlHArGl]g0oT +b6և-? 7WŴ^+5gLy8/cuUIXWd NhZ2=3J Y`Ic$ؓ':Uxg˯:9}<:׼Xޥ|Fqve`0T;`@ +\{vn^PzTv_&͌Pq2[:E }NJlNTRO`뫓pB1F%9pf?^Ⱥ#-^=jJH'sb̽PP >RvB[*KoݨFSʼnMbkA_EoVXy(Fw^Ҹ]s',WNfFF>-5VΖX_ ۹< 5Dj8͕uv=jG/,+H,;lK=-TmRMe89'ay +.cTuc&LRvĝL fT*ZvC/~2~ YJ*gݴYU;V`6i-3+;_Hd~W_U&8b2M?rGEꓝ'ѱjĠi*@~dIfdDDDDDDDVuOMȮ2 jjVӛ#΁fON^w;j6(&N3jHq2b""""Sh™ǍXֵ<1r]'c[3O[Yy9ZB*Y'ӈPnW )磣0A,~6Ol͚d?9t-$qkSlh 7ȍ"̼\NB!鴫T+r$$O +,ƴTmqsZN5[#δ7o9c5j˖~$UC]pV6,r@w+qn=^kPpU˵uv6{o['M1Blܷk}tfIظxIu |9^i)_`A ^ U (_ӰSխ-9)! o;:įQ=9ڋUNBSa7jwy +]J ż*Ơ:~!:e`]bVښW=? lV>' 0 +vEElͽ쥏A&ic <SW6AVWE6\ +\Ԗv÷qql) k6 +G觼-zWUеNZۏnc3bddxo/ȱ.dUKId-%;nRktۣVhS.[ +8[s&fG:TEgO}| 8^{Y'!E3m.'F>SYhP\ͲzYFe]_J*lezKoTۿľũ1{-8`k03G:_<~ݵcV>T=9PLrɯ 9:R玈 [1$<}9Ƹ}O +~OϾg 8)Nk%Rw>s tܔVu3'b4}~s3FũՑN $P¯cۍhY[# M.^/Qz0Z.~fojMl&9>-8f:]~C3vmkf)E`kpႀGr=@s #//&+Vku(܁塿]hMfhuzjw⣖\p:-XRӐAeڍDsi3+;_Hd~!"T[u4'{,o{iខ]̵u)CTݟ"""Byا{,>]Iɉ +72zNGOkڋ;u^.d|_GX1Uu.;u?Q ]]U!>e]~û!c'&SL+ G.5>a9<;wJϾn·umjVbن}aDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@3+;_Hd~,gyEy|S뾷!ZٹVOs{"GZODDD]gdS]E+tFB2Sܗo=BdDDDDHof9TޝF )(t.ڜmw7~m1]VNrc#Uk8o(vxyg)szA xljko_1ޭ>տ55xzƯoVmc[cW_}ljko_1ޭ>տ55xNfJ$zly]_ۺjko_1ޭ>տ55xzƯoVmc[cW_}ljko_1ޭ>տ55xzƯpr9鴺~C))2ׇJї]9s+Z?e?ҙ?mf(7YUjܚ~`W +VF̯f%WC5̓vlJ/\wV*ܖQ}s+:3Z"(}Oo$2"%­pJ96:%[@e zGNۑ`1ҏOvG͸G7~]\\=vXmA$CMZ޸eʖ ʽf>Ou,eF@ކz]jR A DbvN=zmmQV"""""&7PCvb 0L45+t Pc;'+֡ғ7SS.Ƭε볟TԢ Jڹ[0IJQ<7'?.-d/0@'z}/VUeӺA$<[D뼳Y[x}ru|%=d/uİ]_1QD}}OSj, P+mvƘ wol};@M" MbL(?_,ګJ>UFH;W?[Vg7cR4Y[cnxNMbE%<7,#8壠H_YL1pCka0HA&ly`ƺ +ܟI +c[B%NŜ;-6~7Î~hnɸoS(a޾d(&eJج96r,>`G[qޣU[xJnK[jj mI} p&"""""""""""""""""""V"""""%9JDDDDDDDDDDDDDDDDDDDDDDDDDDDKmWSR} Fhj6Vco~n.zf*t~mX2F?րMgʐG~ }j9ثىTr=@']7kD}};IW l!>?,[qby'%>{!F=7YRUbCknlnR60oJ-j!]v_>z^ [GW9cڵF8砻 C@iw]{z.h.wR$z{M!^k~dbϱ=5-AT>hH ֘⃶/%X{V2+?7/ `_]x_1֢MvC1Ću\7 ^܎͍sٟo֩N({7C׋I{+F +.S?>rzE֑u);mr#rB\uRʽ^mV4Jށ{K뻅ƫ_V7c@U$R;wq"`r$/ROIa(Y~a;xySmSM~W&vW1޺=_T)Ո#::fI]Ԏ.L"euo?T8[>=t}ߦMKR \r,p +mCk}l's"|I[m$Sc oJ~ll !:>bu|LdפRS}]Į׮fND+ +ǷX)v:Iw&G6^cͬK2-@,@GZO1M؊-kj֧-čW^޲csF}!_OZ +X,'JxI>^er,qVMa )fT w&NjEl0=d~:u>U]QVx30zRaeuX7cȭCV͡R;쁠=TƼdֶe 7R>=Č!\3)0 tG˕[YW(ȴǬ"^=s-'u]XZ«xWXx&M}w۫\^[q<, `ޒB"""""""""""""""""""D_SK-[J3)RdhcP i%7F4>VSCR]V_QJr@=Mc)^ IMCHGa>eے/cU$$A(4A>)zKmR:̡|T6t=N7Pv-T5idm@LeӝX06g6c')5x#޷KƬϵTy? 5e޾Ϧ슍t[*R={OxxԔԡQ*HݓUbjbc\—d=a6~ۏ[V2,YY|o'5ΙguZ]EjG@{zg%]WvUՂv;lOR=#cVՔۃνOdefP0i%~Q\Vֺc%5l@lk~gC6f5X_:T!> .oxSMՋ.eG_aS7t:i6/1@b-G4nPWkU:XHPX45t:I*6vt6u}>uk:K*>s-V2PvGg{̮nOYw[kGkȞc_)0ExUS/jjmw>oQ]fmet 0,=߃lL\w4e+g!A r$Iީeb-uµG`KL@tܕ\ gJg+Z_A#3hV +*|Vz8y|G:[IYe\)hl~Nl-MQ9? .Gwߴd.us-[ z ŷ*n[3/J؍ݔۼ2*\Gkӏuۄ ɛn >[&du[m gMb+ +i̬ކt'@m&r2kk>!F Aeԍ.@ xJkpG~(bT<ƲŁy["*}v귕y``{W +w$'"߹##zP)7Se)u  6މ׬UQZ  + e@ oYܝ[>5+G^`U +~ަ`thWQʻ-K3T}d]rדqZ-{Qq̩C#+)!DO XdL(PӲk qo]dXJP {B5MJj5+)1]NxSV &!^PdYj% +X, PO7JDJJDDDDDDDDDDDDDDDDDDDDDDDDDDDb""""""""""""""""""""""" 6 aUm(5?O/,t?QVWb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""[>%N-veߦ`H.136;V  +'VzJgzqAӌ<*Ŕ=89tWSO- $d;Sـ>*""""""""""""""""X9zˍlMw84gɥC 6 >cgFe9ISbXFV_%b""PKg&hT_r#bx\.6@UZt~A?e؈ԫ\ l)χ![_=z봹ߜr[RDDDJإDD)X'R5e/*\oX0b\'R(b"""""% ԣ0Q)UrF =DDDDDDDDDDDDD)o(BOlDDDDDDDDDDDDDDDD}ˏ[ފfEY<ޝVE}o`QF]/ӒjN9e Ws6*eeNĬ)rX19`=}zgV;c_BR-k[q]uSaY,YCZ 䉎+^O˷ \Ilpuv]U-edm*A=οD;OUuSUYHb~X-bU}}=dҼUnU=XƬqbOګ#v}`j*1HOw_KSjފ2؞+Pxӱ`v?TJjve#h,B` m;PjBlGmwsS%6=Q5ᑘh^5^+EMb%77t.`7#u.UOr2Jn?axs:?]MN{5{+>-w{͊k9?-5ƬXAcx^^EOA:6OsMtΰEʟE06ԐCBz2< V%ģ@b]ߴֺ}S1ue||P 3[gznl(:#`Q0zX=46]w?*UKpw YsuJ; ej)b0ӣU lzAD{*S8Fr)  <3)w5Qc5T^vɛ*p~U2^WUR7ű_Z̬*6Gz9q`jj g.+tDïTk)rlTف(8x'N=c;5Ê o}MO*l]b|X#|d7͆-/)@)!G~޳PNO%7*ZAAI~] evSc=k`T'Н뾤׼sԭ2Mv3چdklgmft[[EKZ+毮QZVeWǯdRXɰU|G#% MvZP^r{v~]˽7-SY庸؂Aa=ezTS^N*tܓ1CKYz=%&6P:/f^REa!1M,˚]z.ܺp%bK߾+O_K%V|~!׾MSOz +jYJd1G#0}ywٖ5,1,jpk3-[Y9g8+T:ucVfkG8?gs=-*=RzT5n};ݐgLJڶycqccO%/tݫ+[Sh.}cunխǪcǩl䡝@ z&V&;rkUa^:tx'ɜܶl.W[p9hlr ۷OruS$}ly ,{1Y {oZEzjM̙bYasրaw0]]VMɏSTX ?D(uu%U>0=v;K]gQoOJ1++Yֽ$FEZ G `[_!S#.WtW 1GTn4*5h}+c]F>?oT^+ obEn[X*fW>g5iܟIeg+ +Kڌ@Y|/?1]Mx5gV@7ːav ijtn[ysh_X|@YHzL`TQ +ܨ6|!t f5ұ7ЍiЛ u:Fj薳UK33! +($dGPLLwڼUqy&MMeOS(@/~kRK–Y]5-ڢYbqRI-x~ZL\ŲPKp*TQ)n9x;Yb5Yoow3 u*GnRʷQ2B~UCߗK:" V.B3vP̵*r*u{ܧu!U%)59q{|\<,zjd5$/>w߆ku{l +sn2yhJTR1 k{o$_lr!ɱkF z)tǮ] =?&LVU~O:.ˣ0,Gs[>1U¯;GJϙM4; keYc_ծG?)%yu:޴H&&C82bT0vw>A52:僢CP8T/۱ 踊""c誠{{>&pΪ<]i5q=S +YkOS$I.\eVqDDDDDDDDDDDDDDDDDDDD@]__zcd^܊S9}JlSGS8zEc|Fũtn적̜~r]*(>\}_2&6kG\­Ojqrm~ݾ2f5b)tttuc\%m̭F7G˗u^wW 5 GӁj{2rݖbh >)ѨVNѪ䱾"B@GInegtj{lYK"ONp#ldk#]vAٮqZ_1W:mMk֫RLA1hk4C)=߰$'A`ݕNvvO.r#Z։͇řI_HP6RiP=K۪_v6.ZeN N@נ$b""""""""""""""""""""<[XY 2tH:#]='1)Rrv+^*;$ 4f/N^WMa>Aejb`tZ˟9;"=I>2"xJ3HoAڷ5 +]VFVa]Iߴt*e:*֠`~D12{ Ap?&(W,uX#o/?-˗u6Xv1uMv~#z3]k/RMomn*_A;6c9eYjZP\[UP `DvbZ}IPLұ+5=kŵJW&`zδ2،X)~xZcmw`A?w}~v""""""""""""""""""""""" ]w[YZ,m1O0O\޹E9 X uD+޶_bNZ6R)ܬί,@;P7s<;rwĩmk3`ufen7+!zN7V>Yo`tjoz Iru+^G6!k8f=Wpw!@ »*/[L1u^(ru+s_Y*K̪>-3V@ ENߧ}Bu+eE;i[C^XnL[ro4S-,jg@:1Q(c^/. Ap=%F?CLk62 +g4rwn\މ>W[fgP16Qeւ~+ɬ~YC=IXXmL[>Ȃ7}7O+3Y/sZWeUI G߯LΑzYb0W`[ Yq6GP|E(lzʪ+ +M  HPɱ*leX6@~'~%D_+[[M+#VUz=r3[fo1r-q-Wǰ5CJlu[/@u!I6dkcղ`tPc-= .ūlڏCY`2C#کxJ|:Ao2Gտ!]EWBXO@--bC5kW}H^}zּ.lBG*/t~OIjM*ψfשl:bs%ᏖֶYPP 9Ibǹ֤OP95;!Web e#}Oy#gJɪK֗cXK^k@jf[J]z?Cm#5͡zC)?ѰĪm{]Pswb[g~?ŖَVUc `VRbnuX: +$k׾}+^9ʬֶ=dB0 Ӽ)WJǷr'n2I: +k`FCv` pRY5IǭP9\t շ jҷ`eBX)] =/B,7eB?h@ +dba5U_% +q5 Skblcc!W]|ݹ!gy3zJSX+#VpDyVu\pU]h$ROD*pYcݱ'Z-SD̊)bhkI6ux$8kC:6]ŋJ#vv@O"Sլ oNM5_;*6`7&~zqj}ʡ xnw+mo(ҍhnT[zܫWPĪ{4d%^Jcבj' ,Sa6GoI~ކFCcd>;[F!մoZ˜ۧ+ؕ9cc LY{zKgrn=# 7A:as7^uwԵދǍ#ԍ;KANiԇTPW8.ʲW +˥V@+ة$[66o.X1rKTS-QsgǸYSqAB$o孙BoYh_7F[LmQOKAnR, ?rߺ$a_73]{>5t4AP6ǹ3!<s./BW`{ů ++EE%Q?TF̧ȲlÄFq- ctƸ;-aEl=$is~V)Zk/iR|*ΥӪp8=#`~rX~]pֹ + ~ޚu,GGB K))̴6Er,oe49vi:8x]@aj?y"]jZ@du 6=0/Vu}8^F^AY#+* %P*5YUتߩ'E8Oe[K75T:9bA{v >]ղ X +TtݭwA#"̜\{uZ\:Ƿ+ٮainYtvi7ç=1Uр@K`H`w.~CaqY.w7{&[⌜,ѵlRÀoߨ$]zVu[Cc[|O}zyktʯ,e[[Ҭq^` 6O.Z%"""""""""""""""""""@#=8JT ;So[tnD܁+VbkQ;]U#9c=z2yJĈF5ZwUtA-7DKiȳjݾH_2_@"g2n*.t|YE!T=e!~K~R 66W -NGuF6^ɳ3Q +vn@6d $ŀ2؃gBu5>zmjs"+Oԏsꋏ`\*^_s{?CY57wO@ Ƴczyktcp''Y̪OYt=rE/&.ittd+a>@O]A)zloAx Uұj]YcjdxoxZ+uq,RqZ/ovzz=? 7Dzָq%;9bTzLXt\GՏq _n"""""""""""""""""" 1|\{mc%nµ' l(A!=y}Jڿ2)| 9]~;9B +L}t?vba5~;nñ}'N^5se@{[P}BW@2B$oDeߕg {# 1j|wL-r'X6f,;M_zblYڣv%5#}>Fzlg@E٥IOO-w_f㖵9ja־ӿ3+u z-? $y'BVҪB]rrF3zTb&N.U҃JFOJv:WAԀu%Veu-o7~£'`ujATGHk[3iYg4ٝIݷOg.o~?l2nZ?'ޮ>?]CyZyL5GlNj,o? v٧~+bITbS#'R#'R`y?eGO_=p?RUŚ?RU(<\=?RU#G:GO3KT_GO?eÿl?RUa9T^YO#I9U/K#'Q0_UW99b 8w 9?pȩ,AX67v ?@)&`zqq~e{ |GS,==V\^rU`GGd6o~g5}h إB8<|m;7Ynjkl!U? =7OUe)ǻ 0zm{Db%հXр#=o*{Rw)a:O1UX$ Nf@ŭ*lm{89IMw׾.Ǝp_{?)C7UVƭ]|Z![̣ܝ)5-gNޓ'(NA*51iΣ"qշeAy)ӿ)%CwYFumKYyT)Zct>.Qj_Z~`z@ʃ +;z'oHc/#aA'x;lHzᖺP/| #uLM,eө{`·yz*q= !ԓ>_h JQ:Xb)1X0gt;S,Xٶ_j+n%w'@kY^]-wg*͡.і13>};q 8_?]JxΤ::e~myމ}=#/6DW;ڙGebBz68%NƵ.deQJppHk'fHE/ 5˼^NwEk/$ϩ?MMԳCZ'Cmé59|:}[uj[&y0\X12:cfc܈G}F~4ۍN3酨8P~2Ev1Ul.H#ly0;v{i1[ԁ\kxm.˪ZfJ@/.(TX٭:/{}>Fr[d +kXQzoͼʵk7O (@۸=eWE `_ue^Zv5zQB^ -&mS̚2H*66~[ }?TĖ^庪R +w z{̬0֪8/m/̟_agMA[p4Cmi$[k$Q2.䥶Hr)UêP.$s?' wؽU0bhzC#w?x2RgOp H3+^Xew@:b^ޥ,m~>U*mJ0)$ wnm'YL6_YֺTTO6ƻ2gVϐ֕'\5X!(kOBc)W-_2Z㢲;rzNUXP/_ z}BљK*.qg{vOyc(mL΢4꿶'{uާVtUsY\zP@u_b۟ec@|݈=_?}vkiTK*kFoc~`MWEĪiވߡ0fVFU %  nb.~oI[ +7뿦m8V|dEO޵xhC'v;Fl1 +|rWG^2O9:BmI:f>/,ɷE@ n}Q]eʇ=0zFEx5,Hޏ%qOՕxTk#0z Ӗ"w{:F+_Gj&cF~f},%d6*Ϩ[G%a_$ZGzfGI|ս_A%}]^Us27 rB7*R Toso-z*:oV-wY}iEVT5 ?ܻɺv5p<׺a=uöڕ E iF6="7eJTwqA}93);OۗmنC-^^s%UG?We:vSZn%N+k~!2oR{V1zz̋2Z֞ c=GjX7wKUMl~ǩciW:O +Й޹zbZ֥TBHrI>&F70|Cqz}|#3"ޗ,+2W}N?O=6 FG +Wa+܁OS;s ;*dA'P|P>r3A&?ѥDʈ?@):=. 帯@<эmX+¾BAo,]c3mr>9~n>HXIY ru`ʶYc>T ;ИZrl9X΀K(0FEiw/4,~AWY\گMaJ/?1Xk#:U) IURx{r=t̛ŶJ?=(;4㽁.WA!Fz]z{S`bهW]8G'[}{s'݉]7 XvO_ԤAj`l/۔+w__+v 4[r%%(nDvI{Ȭ<-R%m]@ + IX_ yv^Cdmk7$vLX؂`}&Pf]q,t#oB +n[I?6̪\]Z *4$|3:]>E਺~L8G\n^##A3:dD* -|nY~u5A[FGq:eW^IYrj&` PO#Wz:<ҟ$MkjXփ#Zy[EzX锟P{IRUa\`;> (9'GO9:.lu֙IxޡET1ʯb^l.Kk`^K' +ޥurҗ72ϭALܛC-²;T ;?hel.ȑ?..E Z(O}%ӇUjYN)1sp2:%(D7"N=5XYKԎPEXݎO]'ܖT kh)r[\S QJ#>]*Cl3(};L:^e=.. ͼi؟^>I$"yTjtcIy{#.|e?zֻF/N?vH=kt׹jE,6 ,}F;PʾGDC].kC>9%m [W`]Y~4{27t\+*kW*Q{(Nij&= Z+Umv9aCɷ 2̬[FX?d_-)Yv*zfٗefn SXl![+}CZ̜їw}XH]m&:-C).WԱ2>SmK_^2)J HԨkS_(Qyɲ9)RUƶh>CuLrX|2,lez_@67Mo&,`cx쎟׺n5Y5ՕfU; O;뷤(F.NBY[Xa}`-{/L;,deb \wZml}ƽexO~`gVjW$p*3t 3j}֮B֜Tv3S&2n Bݸ?:ɵ1ﯻEVWmy~MUVhZyog7Kٗv-}v=U`]wYz3(dl[{#z??7Pxd,_&„.jl^"oaӉr}%6Wk*G& +=ޗlȮ.~U<~#{/2z'(]{bQa6[eP=mzK8|.}/29%v*=u {K~ /0[J3K˗,t +XgerEa`݇_q|63kڳ]z-U)znCKDrg`3%wB{+*kxw*I=h=}7C"yiPߌyQFۼhS'7Af-clWmXŊ8۾}s(RUO@)YCq$0,b $(nYI߰{Hs* ( }2A615͖-@NԒg+gyp+y3ry{ntnаemc듒X@_Mh~>ʤ~q> >)߷o*C,B^Ya#p>b]LXx;+KW kȱ߱#KVO|?mÐLl@eUhz=MwRb%H#VDK؝cc׏誣Iinȭ'@>sKƣ˨UT#yv;fSGKl:vZv>žW@~?;^q[R7־ ].9j!V /29]QKrsv(P}7%uȽ-Ych?_A+WWxk"[k\\4vg +coOI û7dF +|;>hgulasW> +@b{kZ|':nOM9`Uԕɻ0*&:̲V*\QKt50O"e6D3$;_,{6IS!.jc"%7VsP7`>.#-qPYg!W3]֡ :`A;fHuV",ut`\q[C'_ݽ2gmj! +> kUt;OVsXp''B6' f^"sr2'@vW*=>'!e==|UV]UU<ҩ=46v]v~UͶb}7$im@CC`=X+t'ׁ$k?g܁] _TZ'屹k2AP}=P̕#Z˾#zﯧR1{Z +<I-2KA;ĺ;C6rsڶ >cȯ[6( o.둙V^ RtPd OAYB{nwzާ;O]x Gewi@;}e%}P0;JGiA*~wR47="RPve% ݠ M]JkrjRe6'jg4J&T@͕Q2 }D;TZ+ +>"b?H°8ljO6ۭ&YmK](5! +=t6;[?5S3)dԊ*OI~wUck\s3!iS +u :kS ?XL0YN55ĕ^ @ {)]iR"U"6I'^9]74 h\zf&2R-j;=Az.-r'-{޷˹]?;Mvqh:f^6-8iZV'(U4%ؘyM)ʝjxpA}_ V<ع Y(ݣܳYlޫroR[ MӠm@W<%\?֕]$0?E4D0;ɖ3K C?Mb2q:ĽX5};}e3c;af0' NyA(xPkNv:9_j{וiNpWԯBO@=LH>=K6#Hj@u&2sGoߥrY환86챇G3n~i(V z{̾}HzyN^Yron[~TׯngXUl+~#x ~=!vQYci,\0m'&_Vj Yx%P l:k:z/я2ơy-GrtIs>wO1h x0؞mavQLp-eʳ| >w UfͪԹЃ#|Aub{,;>sZEkWV`ztJAM)OC#ȴ,xٔ+r:_ROQ]Y8clGܩ~>lzcs1״J*L)2y]>SdAc{2r*Ghܡ(AJlBexTY%w'T^QB5G2E6Ι(J&T@!.M'%1** +׳Tޛxm}=/ꬾHWV,o1^ޤ37^,^ ]H9[c|NLNºAPnBlZݘBo҆d`XFxӧؘRO+w`w~^QSWú6 7rV2ī"'kEגL볣0|u˰RlZw#^f+j0#t,֨O͞\8|v'nx7FfkA:%G>^5(je,:c_-I:[A)|r)c&.VlUQ[(12x-¦̧okC6;* *s2[ +z2yVSde%X}x%y4_%nqۿZO7^Kbtck2YM5% +,3K'G #y @F<5`R;$JuuZ _Q2a77gR# WGFY8PjjXȥLyvF#?-Ǭ1*ﯬF"OlQʊĎW`/01k%ƀ_.}ugc/L64Ė]S-?FzFQN;~N5%^I,ر^4{r)p+B vFP,nk|?#,6ĭs׵,{j\8xΧ75_KQV`Fpv6T =ccՌ*,uuْFׂ؅d38F NʂBWO>2o7j[RZ!U~졎}ScV* + vu.ՃM"0efmw'o^N +pmVBp8rߦimD9*ĉg+]gXmXZ*G:>cYĔtKbў[=}ܱ{G{xEAvQ4Sfx<3M#K+lI/ L?~~:nn)B,@1< &dt/3zGVM99I}GV9{{KŃo*;MWV?zuؘčt0 Mŏ;g2"b0~Wr/o'h/S~C<7fs/9hSžį/اg^NDz7O +dbet[0& ] +w%a77IAe;)+e٘x]^*$tLQY;׼NmI}mXlo.Y+5e3NMxDAb{LzOjV:љfSD|&X\: U{\w?Xȯ2tOcā6L=; ^3`;DzKɞP nWf;,w2+­"K@? r 2O^e%Wǫ(_kXzo#֥:}c_P]KRN=s0\Y@+i/r?FTj=7S~P6^P3</}ʍzG&=_vb6Fξ}yugVz{RfRǚX'c{ZДq#SP3qr&}=A ŸS؍;a+99Ub/;[CQvI$]?hb@b`A$jPޠwn˧w +Iz_;Kw16155<)F˻#d%I{+6UJU*e6u+j"P+.?E}@ < /Wm4ecjG{rS߶̵OU딜LkSͭuQA7_) ]J8!yweK§G5V"QB߷}HF7[^V-߷}Ϸ_Y3LZ.b.VSf iE~GfpgR,ק+y^"|* ̲3Ճ i{{NF˄.UT[O"DK9=1.UB0Zn"@A0s2MWA§Jֺ$YI3>&Sy{Tz;ȯdY{@;~/k2zn+aUSq䕪F󗲖S]W!V>K,px's;Lɱ4/Mw=۷\y)krN=v̑N)HPAS{fY f>%lQ؎Żc?PV unVF6n%V-L-puyWg݆1YxSnEWsRB;cn.jJ9w{k~gԱlȨ"RСr`n\,lZĬ;(&aW2jҬmF  O 3^Doxr.*.z0 o1j;A!wOR>ޠ1) '7feU-lߞ]|[#v9O22qVC(hyۘ=O[S"8;:Ppmũ+-ĆT g7݇UjWd]̏N]8*u}crr]l+['KXx݇yE/bvKo|[##.wgu@ԸUn'c}K"q1%f ;ޤ}|E8t{>K9ze^c J 7 p G$)K)ew'c}UaP:؍G=/<#P][k%N%5Ra&ctaRtM|ܓ~&$3#R;|\v>RaXoԁ1_pz[kևE:=8X*oÑ?){:4lG׬̤!$)m;*.6e ʣ?;˺;9yzedh B ,_MK@v|olwtyxppw}OmoT&d'aˉԬ\µTXj6VF0޵11~NMpѾܹwjMHiWs쳦.N>w;}_)ٜe;Z86NοcSԏ-IzԯӱR6td 1W\tקx}Bܔֆp]<;{ӭZ(zWsT]ORg0_La`l]|&޵Qs^:Qj/Cr 5K]6R؇w00zv#av!ǐLMUUrqt@qjbF0ؘY=6-ƶU!A^&&$^Uk(ͦnkG`#_g"-#S6h;:1Y,##8T9#G`<ݚhtyYI~%G'MiC 6צ:~>V>NeVV@x{v`I8XIʲ2r'jD'v{=L<1JzޢØyd};_˧&\lۀ;vԭXwf2W\Cz w=(a+[q.f'cq<$ZP5'('.NbFR44B0z^e8t]B+C߾Ϥ]1pnʭ?7omst©,Mܐ~g<<[bAFg("uWޕ@y#)Ш9"6X.]}G2Ee`H:f?F L\f.:uM^C >7ߙ + I'j  G;P}_1fSrJp^,Fv@XJ$ *Gd?M~OM g`Dz31am#+6N=f0y6`eo- >3e=hXFm} *|aHCz1'M[ tKq%P}0.d%nc>59gԞ%j8~Yc*, y_zYw0sNjK|`^YFECI]L , z/!}tO+[2ֿ5/[Zf~l*,O~"ƿ3UJr>b6 ^NFnI^am.vɴ'1s!R hWNNf q<3ѓ0P5jS٣!䊈c-tt|rOɲS aǥ~}};TV,,\~S O,xkQEeky12EVB;2~5"0rz^!ZHbH-׼bacR-g_y3bR[LF=>RXQyeݷ5gnR:*ly3lva-bcea!_&UuWޗGoq,ħkҫū사~ya(q/3c)X;KgN?ѥDʈ,fz sX;7|%wXsBb\ +ZpE K,C~`8Yu~=9ۍKk7'X4A=!ԺR'+"¿ 7_a[+?Ⱦ;6\Wk(R#@dcx(& XYe5\>]āwBΗԁ7x'Fּ>65̋>mel~؂ǹّ#e3'|l,wǔ@?/ߊfGzoRҲ C#^KJ+k}3N.QY"y;ŝz;HO +_5qrW\ϖv~3nN:6Sߓr߄emBYx*A=x+:˺:\ܛ]ZMr +^[uӏQMNk:^ŝ$}='uvY*mN=v[}zK.ij$5'NAB!Kywž%b>=e8^u#5 ~c.tp:v^mݒ}~>M*") +70|3_0Vߵ0mPg;^#lw>DV$XN_I-?@)Sd] ,NF-]ZIm[?Pk2<{v2"zܙ@ֵ)ԧmWzc>])hJp)s]J #zzƎJq(p=etJ2l`{jcׄ;|"ɇm{o]v-(6P޾.;w10WYw$Hh/Av';F5(WwrnKߗ:D ;ܮ*iM{X߼;Oi@=~ICRY]Sz"RSw nyjWDwvDUe]˕dӐ{ˍolyo .zg4J&T@Le:6іb<̓Npɳgihocsu~zK;Բ;/SA#[?6$/9]^]EA lޠL yWV* '}t V]%@$=6S{U,$Br>exA~)CO#buǬեŸvAtN;Y6*f:^ŨЊl}I>$*N_nť v^|3)u[5{c:>ޞxg*N+28̧G̭#chzNֵOŖp@ {}_ѕFz;~ގOfbfok*B4wz^q˦-M_@M]I&L2%X tu_)rˡ͒; +t; $0:=YiZ ƾRG 13нg;̉1`H*lX.uae.ҧpH #~\µTOԨ&dlz&.} X8nk̞]Nq6)Tm7DZ#y:V#}'#11쪦#@ 2A3?.lJ ]׈{(ryXA{|W0}H*XynJ="Kt >~|٨)wy*x.=gp}7t|ʾO>^ sdiMӼLo]O%]Ģ= ljP2# MJJR>& ܦOxy#Bx4 i)L-cՖ]letġYN +~`fNұ:Q]N5 FJ霆5[2]/5ߏUmW:!QP@tWO"ɋ6'ԝz1zyy4jzu ='YـHLZsukbm]C/oNbGU ~33:v7P +2)'c+yx E\\.O 0|z`4~K=3\jk^ +yL̹.ĩmm@I-LuKcT P$ܓw:fK'I$(U4|'yM 7 >2W|n,`HF+@~"^kႍ}a@ +t;-3 ځ)Tf 0#ӹJ Sf1~rS:3:G{ 7#S.1QI<%yQ&ĺ^YCo_`;INZ?53n/KjΉͱKo\U;ԕn;AJ:&"ӏ}ҾJA紛ug:PKzhSތ.`H+r|_ +r/CEJ<X)S~!YI B@c`N3: %Ob|@ Xo;3 Z`^t86WPRUiI$ }t ٬9' q?V T}۔~%8K{d-&By@pa{fWDp Vu۶}_ժ`A)Zיd֫OX/ #|[/Je +5>XqfSkc1WS{vbV^cؕ:"PzʯyC2vu=RҚkJhJ=w`w0G P;H8$jVZaoMJ?5?@) {q}'n5aҨ@Cb='xeJ}^¯*d]_ @,Nhv=ԌF!÷߹zV:Y檒vvtIX5ՙnJPDz_aK8岻WPYiFFU+ƤҨ (2}宗ԟ3Avwנ-)/_&/൙w8Է qb]8U5Я$kZ$qzc`@ +ق{ƫSCɋǑ[^RڅZsͶ@})蘴R껭m; AGw/顿O;:3c>+=c#N҇r~bt YOs=ctqXؠfmoj !}2lZ ;REbx{JDt tl]݈#hL +3 *tǼgIڷ6iC2GyѐԻJF{Dyd~3:/HZ~ ĄJWr!$r]vḽHS@}D+ JWZ2}qLu*gIBy;ܦ)]@<1Jr { m"yԡߴ67(g2og4S_(Q; EҎrbk~XS +}d_l[=a/q-)(/f_RuPb^{+(zv+%G]񜡯%> Aרo윯O|K%+@J?gPz#?+?vLW͟-*ݯMҖd~8|:)lu_`u=w1w73?iw=j#Z??YUU6gjGmO?Ϳ)Sը͟ҞOW~O_hYJ?+P?~h=ެPulsޟ0ݟ~XGBrHzcOެW?zCձoݟzSYLsޟ=_՟~XS*z6_?,cެrYL~Wg zOOL~V>ScTuoAoR[?cYLc۟ OLczeOXYLc_wS(c |?0c_SL[_?2M'g21o՟oPu|amSvS1L|o~g0z8ecWoL~WvSoo{߽1cٿ{c?Ϳ{eV'տ{c8?@o?l߽0z1oRc~{o_ݿ{eXonoC}]}zoLoR~Ҟnymݼ}wҏMeD)AJp_RA## N 8/~##JyIyI~J~~E_#ɯ+*#ȯ y/zpJ5P+g }/WB<pG*#~zpʈ=_#ȯ }/>WQg TG_=_D}/>_+g TG_=_#~WB>Yf TG_=__D}/>_Q)jW~f*%~WQg 5_Qf*##_D}kj>O4TJ>O4TJ>O5TGiFʏG)FʏGiFʏGiFʈ-?Q(-?Qe*#씟TJ>O4TJ>O4TJ>O4TJ>O4TJ>O4TJ>O4TJ\V "_ۇ]'$RRAziU_.X}eCv>̉օBѫm Jtf*$w^R-4SrFO;rc3"F.>ĥkkmt&ğAI30~MwpdZ]y b=nKTzt-u f=)cw26设ƻ{C>E)cw26设ƻ{ȣsb>ɶhv̖n#z)sTޗ[V;;o$gKwŁtG:?I&XZQ v + vψ /N^W.~ķn:!Ua.DDD>$VӒ_M]|T~þDȮEvPN >g@xgrrkvA>.IX~z?c?;bMS]ruYsnJҶ5- + ':c`o]NJbTXHTFf tg gb]o8f>~3.PLNq2ec1jߗARtOcLȉ7G,b`-9ҎȈI1|c%Kc/V:nfDD@4?YTbDn`ZX2!3T\x'_W>mXu[ڦI ޥRw{yWsv4aUd/Sߧ}k~c?W9,0P- ;>ۖx/ڥ֯=W r5.A}gzL\<'?5C2t*ܘS{kUu>!.XGLO+Y@ho{"deϱdXxr +$k{/X,{cW* vJnv?zjojMY +}W/[Xe?Op{kFH`+6:UTY^Lo}>SftM˭_N^a?^8}?b8|P%|P-܆m{+zORW`b=UDqGR7F:ŭ.$*[A`>ۓZoѮl iE-LJ3orgYл1 *Y+T@?sgiD9/d.Mv(e`)N?LWruE`X7/ge6Ԭ@_MJx*Czhy)ॴFǮr7£˭8^ZŊJ(mM{H 2{&6~j A~=x:vF=e-H Gsm=uкKcgחO *^CGF;M~Eխ"Q^C|DLu<>F_+!GR)[Xm4F2fMXybص[3 7( vIFx-Q*_@nU`HseK0F okKu*nHW-,\7:1QŽjFk4aՂ1]ݛlA45dusq&`xA= ":b~Ez޽=fgft|꯽jr+Fog0oJeRb.5Z cX 5'<=ӔK[V*H'RFGr0~FF3U=RK+]wu*J£Cqo-$/˴_nw,b-jΫS]W} ׼Z2WVUZ>/fe9,j+pI[DKe'k.mWmHjHS{mZ#0׆v,ZPG&K1^+sJr}w [+7YT{+up]ȁ_Ig&pxKlq*ގGYObz*Jhj_P7&~(键Jjj1#H'Lޑ>ЭES i>(!y|$u3|=^n)ОALqc,nԺWNV&^Pkd)Z!c]y^!j2k\vF>k:'LvB%BAДs+7}֊1 -w,1үJ.OV໣z-8RA?'¿oGk!l+<;]˙^.̀*&:Ĩ*l{ ֦Aղ-zrAճgZ#}BS=keԎ: N]ţLj qC&4| M1,2~2sk(EPN}je`ÓU+D/E`$)X6M~^2KDNzrq}%fnuZ~CUb~)ǑmwW[8սVaɤbWmߠ};w[+ ]y>x[plTU_VHX'pw}mX̪W-9v`ވnDIuS)deeb66>N" b0d[?j]K •'n/"]T,X䝞;];k{z^m;⤻|;f4o.SKcaq͎h}TE >q^~綸{of_SҼl]Yv>Cn?r:JޗY[rnV][^[IYQ_Dڍ}F/ɖY5×k\b?={Leyke8gv!K(%J@>s'IϯPo3j5u1-`u-f*8^ma+!eT} XT +ڸ'V/6:VW-]&}F% HF. Vdvn@W@hwI6a-Un-,MeTwb5l(}oRgL@|[16ܫyx h_29xmyUZ_]²S|]]Tw-Jz}]rlthZ22%vvOnyYYuX 2 +yd$[вl8TT#wD{mѲ2y ^qRYC8;:v9oӓ1Pdn"3*/,]gLSs#P˽2`Gcwާ~-ET[YWRoZ:IU-]^]h#>}eΉL|X"EaJ宔(lu:?t긷U1Պ:`=Xf kժnnf"x`w;>gY ]̎R6۷&;F lrት]J@T 뼾3/ed]ɱ]w5pK;3Džz._E`z˲oMhk^/yxjd]jHw>[Nww0zWPx탂A5Ycan,O>$FƷWаè&t $u$ֱ0~Z[=;zY~9+n[Ja7^(}w'+_K6`vדiw5mkdh}$ WUR=۰]7^NN)x[xsuKqEt pQa߿!f?ؽt^ժo.GL +rG&GRF VfC[hMŵ%E=R|ӑ)W+ Y @w:/k;dW=U-.Y=Cr׮'Z䃛ŒOͿ#/p>rSu/Uh7IgHΫ>@w:#z߃*S<P+r5GĊuQ=bEqzDY=/#[2+}CۆB6B_ƳlOåk/etޥfMol(UeŽwǿox<NWLvSd/˩[PMJNmumT+j0R6:^Zvu$z߆,긖*dcP,v8wS_IoHOQtIʤ˗p oM >sn?5BYnZ*[D׿Z JK=PI'=x=Si-9XU{u{y]_CPԋ^/5 wؓ&?ZQ^Engsҁ6{xKĽ:D|zۚ +}v޷ĞnΟeg-q {z̎쬾ޯ7lV¶2A2s7]m +*meٮsQ +euYOz=Έye-Ug.6'z$1zT2zڻk%'W`o.to P:QI|u:nE*lRo$Ou`3E^,x~;Ot\% g%33 Gg؟Jf/~gǙ!7:xxJ::= qPP鲛WDėT+]nQZ͈ądL C6A?~TzD]7ӎT,*ƻ+vw5~]"MxZ?*G齙=4 +ݞ~]nVlnKedxG&;ٚ,,ZBXk^f~WIɣdDDDDDDDDDDDDDDDDb"&6Ou95-H%\r]Nҝ?ctX%HXFϩЙQ-+0@&\-K +ttA˯1c0z.L.ش%Eت舔ԬDD@ص@I:SװmVl BQlԣ0f=Y0{4@bO8T{{yckrlGA 7oaM**}+J@%ۖݫjIX|{K6NVsk]NTG#A@A?_o%Y~-eN1Px>C3mx=Uq`>_iU8qEkz寖Ϭn +ˮ_ Mrp +OTjU \@|yOʘi'q^Be~zK3{(Eco)HNws߱ߡg/jҷ)f]o$o}q-wF~ س1UcM"̄J熘w*Ch=˗u;; 1ܙ1eP,$$,^gU[Ey^K]=VߧR2Ok!ߦ6֡K t=NrSۧiF$6ùĵճ?&&{*|l`ka +'#xgj,W +OoGtw,Wpmr9PX{v&||Eqר`ْ+x |$z[] %+ddf e6͈2:.8ʶZOXXpd,ְX![-\OTw;ԙec,t {3(i*9 +;~\-‹C6oy{lKWE_-1zz= 5n޵,-؅,HM~υ[]qTmzc\xĊmW @=}G̩`ֺoGZĴSmʮu۹b;(>ŵ0:z^~>X8w;RQ5ic7Bz2/N ĶPXC<_9<r4N-[H@>t6ĭ3,,<]ocr + LA A +;2込ژ2:V`6?"%ޫӂ߉bBPXCUqnKRC8a؂~{\>ɰ1Rᔑ:#cؘ8ۆP9 TW߶L_Nfȩvx @{_RV"  _RQvNK=/4aX,*A T#|W$v^[=^x@cg6.H=?P}"ڷG8%\BPC~4MߑZxK zնPܱz}?'T[YBr魹=QTs]|C[=o}aW%Dl )ͷol|DΦTb:][7!|cY]uK+|0>l\ymUb{ @P'ZrߦrSYNR\\p$E[gMKr o`{oo^n)D_ӿR>>!ܜo\>bZV⤝XkW*Uhgِ=7q5>C.ZJ]\\]r]3 ;[oP羺 -b|eudq#7fGR4䍞k}~uјrzum5SrNC2kXl:|*nDvu驱uWTT6uej[;{e|&mũF F9`\=ǩoS^VRz[u);w c|`t-{u33+8( Xa̩KZ {n4UzvTu,v;_.do]]OGvG;MDk_C&x[q!8} +UMs]V_$̎O'z~I9 qto9y$w{8o ^ur߯÷זzxN]T;GZ5X>Pdn_e4}Ǔq>nn:y'hlw~&#A] #5 +ؿhc,U q+ſ:}fPș~&z ,=}$tOлx`oW!־0/E9#.ƿ(fŎ  hkӴj,tcWd8=Gn5Ow>ru:=~K,L˟Zx\~f}u0pv,}~g~ѭ/#L/ +NV{|Df̒w:;|JV{h˳/>ޛW騿"S@!Udrȯ+UFj+YւHeR(\[>+jz])ڰYnTXZGcUC X. =+N[8F/ӫSt;oSս?V(]qvE.5#b]J:V@ 2}/1^ ̺GoR4;D-?vmlLg#>uHI+Ck};J6;ִHQxBTq.5<7Le +q yk5oU{KY8eWS㱌\ZR=FKI I],`cenh23,z Xa{M_oTՅ] yl +sA2:nt"ٽى&eLqӱV(Z}l5Zߤ_GLZWmT=:.Qӱq[QUOmwhXt)TA@~n,ZQhӀ"=5\阘$UY#Dj%K(%N`:$K3\Re_wz=?Eo~%X@%` K<>ݬٷb-9r 2VΡ} {Z˺f(6?=,uǪ8*Z떴w}D\jDUҍ g`Eu*'L<k]]z:2d{q'w:렱K&r?3S&6_O]wh?)[hɬSeH52;Ҹ8 )GT \zcZm(!v~[=φLJTX8D'5ڊ}U`u Ѱҏ z\q S)R-dU w01[|QUN4e>ݬٽYT}ұ:Җq޹($oFx3ƨUZANGOƭ)@1:_/Prפ'SR6kUm|x6Znlj!}r2jJ4kB7[-קŭ.uuV2{s?cu5Tɩ,Un@0ގWK]EohrEmoS;%Uȥ,z#*zn3R1I._÷7yZ[cTU7MjUwHɮRQ|]+5Mv01{O@I" )X +endstream endobj 7 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 3/Tabs/S/Type/Page>> endobj 8 0 obj <>stream +HWm+.0znfg # G.ɇH4;qjRꩧz|>N}~p9n_I2=\ObbIjZ/Gp9مtг_Bȳf^I͊Q[ˋ[{<lY%t|'f58P˾lBlfYçȿ{n3ڝ,%`5cW|r~V8jl[,?(bԟ/l{1rb/7;8E$hIm_3m<ɽlf /`D:{TSu7eUR q6Ӡp;hVZ[}>T@U%GDwr}!<WpT-%.:Rl +WEK*=WjCN &d>hˎ\Ƚ5*b!)%-j8_fkVXSaٷM۱y˄WT+An m'I#gsÝce5幸R +[F%Gt9S̫H8,nv`JBn9mvkqV$tJ*ש9eU@ E).\ >]Ox`,kE2g]$j,W%AԨBx:'C/vJidFLP7AŖzM<W kJA"e* uEO A_hv06tA8ǵk$2FC2#Ha, +:4<nZǓf=L7h*>O.>5M!=?*d1)zcΥeU|:tF9L 0i5HE,Cm/9{m0 + 6 :M 0TA pV$ X])ťʛTiϊ(EcoL 34@_RU~J$ %~Y\J`ި;@t;g7I 2oR6=d0jHVҫPe(ݓbp^-U|BkTb9ݶa*~,e$؎z +Vt/di=57] &Ofڴ${'Q!3fE6RQ> +r;1sV .TI]ѹYg>Bd9&L"9P6\XE7:f$Ŋʥ v&K56ך^v:]R5ZP%Ch/i_J5y!WT6gGjGi E6"6+Z hro`8_iQ"1-KuqXJR)>'kAQ&DƧeҮi +?O.fP:Χ+Nf\,&OFyR&#Fz+M`.',IO[QD8.0u\ 8@cnORϱmQՍ+Y~߁1$Pv]AoIx –`{&Z0ԹN nb2Oqw1)32;^Y?d-c+Y*~15 =0cOdـ ʭ&%l 2WiKILF,bXK =6+. +mpA+Ra_]w,A -SiяWsXސiPMV 1Bg>csvJakGxYծϛ٨eN\FͶ0xIѯ䫖0 /K)p;A[HTX^CՍpSe{{jK 9ψG+sٌeeQTƅ3Gztk˶-%'.NQ,F\0|nc25;68]MX8 _O?^NO/yy2;gy<&*;IPBp<\y5Rƽ +endstream endobj 9 0 obj <>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  c!1"AQaq#23Rt$4BT5CDSbrcdsUu +%&'()*6789:EFGHIJVWXYZefghijvwxyz?괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥b^j$!b>+M!i`b܁,nFW#plAR9W.;FP|G +V83+RӕZU@'}j ݌0χq׌^O #`z2~q^)Jx#U,>T;C`bMA xxxk]Bwq*I8lCJU̒ +8lpz㡫^W1FFK+X!b9y`VmPձʒpApG})JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR(괥`^YE2a^DF3ε줹Y%V(P$vArr VV1I}r~$\xyERk}cjZ+xGrO). UHV*yƵ PM\?Ӿv@ gT\irHJıƛsK2ʕ2A5y\E8iXO>@Ǽ֮c-طPZ4d*p $AgZEKi6ݔw[{wL6,Xc*v+; c0x[BvcAM"DƋC"r[.e ӌ?J&Uagb+Nzm Fnݍwy#1.1E$y==q)ZT-b4˙>6^:ש;Cݷ +6!-PnԜ{`n!k94kߣvFX =s+Ӵ3W*n9BѴ<8={q}wi1g{|HrJ72}ǎ5ȴ6ʾrw|Y + zکfYȷԀcrKO;?^걥RDXmvg n0F nB*Z][',E$k!;!v~#8Q%Mٵ3FX*_0pj{[P"P#d黀z5{FyC vu ~"qWcFMFK}8[{V곀cFqJ# +ϵ):u'ja,3 ۶HN'9RqJҔ)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)J괥DkMިa{1 Cr >UK-tP!1wH*O5SNdkd+ ]p8:SbJH;c@Uu/,@*CsӨK{ qq"Yc +Q9<$+NK%VfͿJe ?J~K$g]hVBF͛Qk]>m&',aE A T5$LroUH񍈤9$zM5/sȉ0IsN+&L 4yHp ĖV^h@2`q}{L`X`Ա1C¤z*Fwf=~WQUsA#'xW[d M`H*Xv0yҫfyd(^]iݮ;ssӊ)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JU70$1 {#J͸*& Id׸Ҡ-Y[nhџb1]``qSϕy^Ax$`N jx#UB[oy D}QI?-;翋6w>sڕYD-;V0dP:sKoM,`e/*+Ԍlc=jw=gNE"IJIT^En&9,R2h)eC (K9-^hQH5K C+[h-{g+̊rHզ 0~-0FeETf +'Kk/W|e\}M{~Q 3Ž1Pjj^,& Xmb(RTvtWea3 ,Wmqy=0b12K$_< }gU&k Wi L4)#ҽoPʑp POk9e G*}F9D 4bC s9ʑp 'ݸ3bF9Z/!2D 7ns:o]x`1ڣy?M^FdfRH9sf2MJPOjbۆӞ9TΊKH$ z>m6ki52gӚQB㺪aF6u,}1T r"3'5$#ji42Ѐr*5$P@ʓ(t` #WkP dwLKn +XڍĶZcFcbgr9⥠w2qבV xn]3sT$pʬ"^0 yA㊡&T/y>kS!eFPgff`VXZht俈:~Wx,ۻqN@\z ;Dz2~q^QVy Q,s#5tۡFTQ՘Q*"]G7Yxe |+,ݧusb%RVUASu]IqC,Aʤe‚_h\y%<3qOd aԸ*֩qy S4(rO@3^J԰8:ՆujIg,d†P8T G®̡HEfg5&B7sF>ڲ L2bȲh^CeP1 +ծIHfdL."䌃}Ksq`?TKdYP汯,g U/W$לQĀ 2)@괥)JR+yFV +2YRMV)e 2A"7Qi U[#hWh$e!bjIspA8jR)JR)JRjY]jHu$Um q(#%߳-Ʀ<$D0JvAϿ9.i&(oNR03 VZ΁gDMRYC~|_iMXPlF`Tb{>8OQfrFc22  ZGh$iSӴA2:8k+ZӠ/4ɭw*Kyc}Gcea'dVGHr6-usv.{pvi}wCJzhњ$Ԡ܏[Ϟzʹ2vNsuE[Qf;1,ز6ݒ=YSIt;]d\Asi? +(wzv^n1 rpd5bvj4-%ڬJ> *Ei r R7 e\[`7`Pi1]{#>yX( wa,\ftm^IJēqR@ƒh*=]Z[[m (_!89dv^nmw=˥ĩ,`UvÂI4 `8mjm~6b"n% Q }KA\+Aj\fI!Hxc A|ÈCv({x #*2|zVNe 4(Ǘ!\KA'k)㷋72TNNOOL?WVM.-bݘ率nrt\G-޺c>aOAѲ9.20Tsm a{#r#7Q1CҭsH?iA%A#븯Eܶ,͹FS2O=j[6l#F҅F9eOV/ln,{ma8#> X=DZG!kvAJ8>wehD:v< $@7zaQX.m%XG`I(aTTa%D+Tɓ\kR,u}a%hzcM0rH:Xڎn)'0=#hbX;}M7 5rõAdV589dԵ($d@fڊN,>gnq׷baKu޶ +׻:FA@A:5nLAmt@>Edi*t44٩0u!7S5HE泩a`s#Y&T(# b(>IX%l\" I$ўxZRWG-m%]q6zȃMp.Ght1˜!0GynĚFWYCmr\`}~u6i]ZLBbI>OK|m 7H@}@,JGfZ"f=Br9=zk76hl*"e +\!hI |K^OJ@Uyl=.Ť\ۦY[7Ndhx$:ԦoiiI3-TBr#0Ob2<#p1ҲiJR괥)JR+Vn{+WZ\l[8nHUW :}!I[qI}q-)ܹMEbk7 \#ڧ[i ѹ㪑} *3U[{hJTUUFFxԊOɤXs݆1l Prrmĺ[±fy'q1x98:dTE_-E?4 wn.7`;1ysJ3KcD;)>wIJR)JRNj&ۓW\8.{kHn2Q2t k.R8*P0Uƣ4 KIVRŋlw~>>Nfhٷe[Ƨ;v\+QҭuhVE#pPG Yi6v0펙g%\'SL$f\S-矣Yc-պJ:WftԎ9cupBu{^zƷ9^1Ҭ1ncx@t +z}Q=H.[$[wٍ6D'G(X[Ls^z5q[(?'zh6W& 1%'Y[(,_V쮖/S&v5xޞ"HE᰷W>+Jww 71,q,ē.k2ln}mC Wge1(~ld<>Io fQrN1xΩ>ks:<`Ȼ|Y#;NW 6qYu.VHN>yhrY# QPAYVڠHdORIMzmѤ2wxC0 hNFrEz]0^+|g;w!q_D{_c1erz^rvvXܑ}]Ӝe=Gyߴo4a0B p2AϣZΗFD exϞ:kr_;{ c;!E]i؉1r 9'$:=ӌb&r)]F 2f<.[kW[zz,3 ^0ES:I9OZ=ә mܤ#;B WUr ٣dAK"|JHd_.k=^g򹵊6d0 Ŷm 售IJUl]R"rK&s<足[lcq1̬~V ,ƅgw[hсUs2sO4Ь&yc$cۜ׽7U :0eK+Tn$wiY&kEG %3ess*o~F nxnA*Y$dt5IKY%ٳ!1d`˂}|C{B60FI#w\p {Xi`eMq2zpOUG薶FJC[8'w-bvv;fX 1-sc=T7nH~܅#tp+GeyU*pU܄q5W%(^)e9 95J-?Fҋd)n>&<$wFwcŷ9}3XW: ԭ+N079: +6n +11ҨtwK]6 6. wt8uXWEѴǝ3)}%ʑ|շ:%ܑ"evC2ހ@pqqUM; Y1ܧx^Uf,"C4ȼmR.<<"G80"lTd8#!2 ϯeC +tW)JR괥)JRsY]Z&N1<*'oZgQ#AlI?0{oi$]FU +I#Y}AgzG"ur<>F˫GIp,ĜyqUݢ_\J֐wo~mKpExvjWzedn8Ԍ[)JV}Ydx< ԅ^ ]ۭ=;8U3sNɦZMr N=< 썔z4#M"4ͻ8%&NqϞ++Sm`vdO^w7 ۻp7s2ϧݦ.p3ڔ)JR)T8 {iIdI嶌=p+"9ݤQ#2>& ԁm8ұӢ2N7*ffcP$U4JI'#]xe {R)JRMUj'5c} +\[7V+ީXz4q1- $Jl g YuBqX~o+ X$eY +J2+.{BƳʨdp,Ǣ5j*3R&f)r\ cKm7Ij&X9!A'?Uxڌ qnۑH*r#VM)JR//Ӽc]ʻe̚5Zu(4`GڍKJ EF@\8iXYlߜE,AUP'#uJR.c")ff ($JU E_JR@sU$Dp'=&tBRmѸ;N +$r+&)XZҬ/$YJ3#YT35kw K4#g 2pGҔ)J괥)JRLIM,^6m]g5گ6/!*d{!z0 YVv"aFORNI$I9$ʐ<U%+h¡SgW+HwTsn'yT3U8ɅRp|Յd3AmU@Ar}s^k%Uʰ58G#tdkS<7Auju%g+XaiSXe0n@ȫ) +?D5n6u",eHצƳ;4(gyyx#g%x@yˬ&j…Z۾I 0 rA<`6׬I# wLUCR<>yk}THl] 0% dyk2kKs dM ?8<\c蜏:mhKCWUK 1$RmPSnd+#KÿL+.X9==1Q}%R o FzY&dLn@LK`O֫3wEŲݺ0%H#^FyC +1/FF0CF:y r;+R$Mݳcy9 +qs5'8VUx2*劐G#'#^6Py9l6 ځ* 8-J->KhY庆7N!+zjXCqowh*p}x"t:>󍯷o=}sS ەR ` +쁺m66ٻv6PK P=ېCYݜp83SݡXoyswj$jf8y^6OlH {3\98AJڽΉn0Ē4ug(p }bJXwr2 sW^q@Nf I d]1  zq^vY mnIL7H>~5Kqsi E(_p(dAYڤvLwh!pIcGCT\XdڒAѐ|cw#FOƣ5}BFXcXd30c!AY^-HJ61d:y˟V-5ydpJPp|ei &}Υ[w 󃌌FiTF |QbN]=@[uI%m ֧H$GڡddyXQuWTeČp %{JףO &WwX;W¤X u[P]UNX"N xzs֥u mۙb"yfF˞@9u 5{"ؒ +z: N{{ʎ<{>RSx+msS[Bi+wu|(pʞ.5KXnD Kf x]]+.<$f^zV&@< 0JA>Uity'*ۖB[,XF1H[4۹-VR’Ox>L*X6ֵjz_gBb%e>``rҶqcI!iKHp1gU65&@PF ǗPESUօZ`%Q1&,7mzC|$#*s*;w* `ysYݽM"4&⋿.XOQTogiHT}p ,d}o,Q[hZ!#4#NйN͗Irmb]BeBXv>`1^nDbq6C$d05o[E&cp0 qUmvdhQa(†n -@@^IszݠDf4 `|R>OfI7%퐐ϼdmq㒴D(̊Y FJҽJR괥)JRk}Y3+nҤyG9\BXMm &9n ciQڿ%p_ڐ_~)J`ͪX-ô%XC$dtxN\KwzlYn0͒Lm∓mY4n#*bO@5#&Y8i#1@JM0I$dBB|l:U! $t.X y\R)JUnsFk$)CŰ6T#^s^y }ܤ]!Tu18èF<˽۠3Fb*E/Пf?P;'Pzd[uaި\Bݏmyf/P"~-d0 X6N?0 yjq8NٝgިIhdzsG:^2nsl>fX]i4=$h0 +xGZ:dpbH.9Ll睹 tMBSH<$Lࣁo=33^wvj77]Z}ʦ}![乴dqCo粿=B3_7S$O̬k A\<-;5&cN1Ϝf!cwLVNe}y[h.mU@6}xzsP>sji|=ڌcM!ʂ}r1XsN[+\tKcI# +"N Ԗ])k 3+GG +yz"u4V; H<3ӌ5o^ko1M 1ф% `}f6 Ar- FWiloVm3x8hcEy *n>0+`\ fK)ܺ P%>5G$ჃB=*{KQHdt=E +6:u+~{CquQyzipjN*;aK_@nnR3P"#XF:Ԏ qב`v~O0i0lcw"Ѧwkuw, QoXw3qRZ0V>̶‡ʏpoo L=Lh5viulA 7 4vvN:c +w7%+d;bg {<:yլo[HQNꌨ +ݮd':VGjluM5}M03G,`wz~5wIVmX[c63-$ȩ]-QamБ00W$ +tHqKӹ+`*ۈO˺ _5eV*XuƋil;nN>wg`oHXbz)N0Tc,)MPn'YPGFr>R܀eaݑ +s}[CJ-E8Ry'd [l'<3oqbm׽QAY1+;,}7`Z͞rLKA`Ǒߊfx`ʦ'Fru_xLcsw8^Hb)\H Ծm5HYݒR괥)JReCe}w~K!!B t>8)l3ϷZqQRd +}5eg +Q9Yԥ)Z(vQ-}#Z`U})Ga=MmF]N-Q1#ǓԐҕ_ V1-|U֤ӵ>jdfxeMɁ|dUiJR*Z)LR1LVZE3&p])|tݴc>zmSҕLUiJRUb)LSZ*LSZVJRJ*LUiJK}m;UY: eiu: QQBT@GjL7)`9t.q|r/E#RUZRBqZ`G^ԮqUNA<㊮}ZD͒\EVﯜ[`@,ǔOMeZڥmAԒO1)Z֋i#kԃ-Iӕټ^}5wwrf]F|5%JR)^Oqnf*X?ohGӭVCx;_q﬽6Qd +vqpOϥe;f Ԟb'Pe=AWLg#둊p:Sx7^{n6^N Fq@i]cTGR6ƅN2|Rx'I20nBȪopAx sQ*yu=qvu +I$MU]f]8 >9Q=;E{qm2yHu  ~9{S[;h#\/UU،d""-̢Gxn;F=@O\i4T2EC d v +3uS*RāEH*< +=FOVv;T;xa>֮,.f+ \e9tji$F ;}3YF`&๊wD2du{gP3gawFHa9'!Tg$L5dwː>8-]﻾2% o#-9vwF~ʹ($`r}*-Bsn4 a*^J$P jwΧy`oGx@IϗT8)!fVmt`%I| Is*_V\#c;[</t{q m>Hߍ 82#c:qr#WUdbTH22>uqr=G"Kw=ZH?**:}jZ)J괥)JR 1[MnĨ'BGPJպ]iVڡ%bԅbvZk}d^-^AlStVT1,*@{_JR\{%sF㯅IDvٴ;! |yv+\c&-V=,ot;PNGGP 9(TB*0"[C(vynFe;98{L­cju<<)dwʏ\66uJi V\VY0dzkaib [Lv8& t2^X% [s9rq>عK@}f] L˦iW"ø{I[k>UqktR--)6 92# X(3gn5>BjPQۍu?f5u*+dBJz: 1atMԳ8Nȋm%Cx>½O/)2fd8 d  :ܯɥ3v24c,#b>5i}Kp=Li,zc^ "`Igŏ*#EB*ɕְ$^ Hb+[Ai;14xXCqӃҥ5k85M%F^yrvc*5yc%k*ap{ Fw#swj H=2#9#Iio6Ѥe-%fT@7< ;jXBҮaRi?O"7s$w׻Q#ޙl˛yMvZ4>G* ?U}34ʊ05V"[c|*qBXq֣#GѢv-b9w*Fl*}+cdR`bF2Fpg5izUά`Ԁ2sO^*R٣d|9NrB8xS> &yO $ʫ+KmYiLDDhϴ 99RX 㡯JVvS^Xkfs'jZH4ŕ-@HĜ-qYZq7:t%BU(x `x@=gZ^j2G+f 0xb@+\ k6̨IeD"60^pIu[}<^[ܘqYRq20j+Ex\[M bX#ƺqG(lq,FNj=nWR씦WdK)bۛ1UkU!EĒHafegLԄ6b4}5U,HcM#\ŵYC*Y’Nr*6w[̑q4Q9%EusϺ6-H%J#xF<+eO~U#˦ٚH6H8&Aak%ͅH&A’?jW]Ta" kt1(8U''^5֭\1 E'z%V۸մbcv1Ya=ὢ ` x{]"w02q@-(8v\ߊȥ)JRqKp$l hs}|C4 X +R:#ʳ mcL@$I'6 ETL(с*ã+AZJɽffcFOdgbĬQ󇽐[9\qҼ д$9**V$p:^|jxwe.bǺt/ +(.)T :VAK4I2\ʩmZ[Ii#v%N1=zZi0Yg~i6೒H=+@uxHy+8⮰Ь^hHIsHۉI g3YV0_FDu 3So5l22J:I\:Aa:D6n=FI,2pǑa[6m71OQٻs&rci^%1OCm?|HygfƝڅkIX) w n^_i@B;G ܤ1V\h6wV,{ݸw峝s9֗zᅥB@WdÜyyK7mǸGavQyI;׋$~)d͓29`d>B6j0dy``J5jmaO܅#,X2K=~󻳊3N8>G "9ifU dwio]pbm`34hTL;\qgXW?J>2x^UֶD:d(u[81Ki2gJp|aI)mdcl +xFT`7!jʤbDFp$ǼkR0TlϥbvoOOs?<:26BhKV[T s($t3םΉorO9ES$rr\k.-PFt>I\%mk |쾟fnb%=2 楪3$mqFo-8v3_,qCڵڔise%[9|zYb$ff,}KO +%J8XA#Z^'tQ1H#`-{>g$p DCCώ|mZZ\uOL0n1ʳqU/d'o=>ϻ+ "T\TXq䟮)JR괥)JRul +K3)]1ssa.\uS %C[ mU@5u)JV_DVw`},|1[UkKud ]֒NhNOS +Rx]Ac{<d B2}MxY@ +ð֭5Ft;"0A +(yWK,h my)P0OƼƳfӛa2o=3k34c__-N3=O^j+S-4p 882f| (, +yzUj`c<(=3ץy&g$ +KR#dm5c{ns.FG*pG8ȯ ˡeJe<<9HY]e`#A/) mf +_-($#8x5dIYpvC4IT8#G{7P:L6BHdف8q"bgEt! AWUiJR#*q8Hc5i pΤz6:z}uU)JR)JR)JR)JR괥)JR~Z?66fqcsRUy(9\{U9PxRjխYn&`:<+|2q[UDvDp4E*J+玕Ǧ[mvEFMdҔ+YY[ƌMB_j!n'S6l+w^"FHX+0/d9{?hH73:c<#UyZ)JRN+\n=Jem8QB +̓UDď+KڤEM:]±ra]aZ7Mcm(L)q3 <8O0xjwZDI0@S81皐կ֞$C,06bTBʭYUr<U{aT0Sq=0yUͧ}f87 SZ/m߬ }rQ1P0psԥڅ!$@ą͂q եmAun6 WӌCX3t(h⌓; ϝg]k f77$8!1>b清^x\ 1qqk*k/ +G;:d@ĐuY$Ri dFIyYԉwsivtzUpy$;#Q"Ɍ"Z0bWjFcߊr{q<ʆb&b_F*5& aY& e+\/Qyw\ꗊ%02C UC+נU>ښń[tD܌s#V>k ʋI,r.J)`y׶|n 1at=G;U]if1X*ۅluL4dӂNUTټ8*XVۙK`ۙB!+@'YcG;v.rp #.6,䝛FC)?i]\ C~:z>sSZF7!/POSumۙ#'zyԱatue8 dToe.ޞ49<">|(C,͓FSr_w˵c|ׁ[:g>Y(֩ vYc(lx2LǕH^7kv`%9mI\,bXǹA-Ğj?N}_7ʧ "&"idrUrŏ>X")]!*wKwgkE#"6>/LbGً xAؔza$;7i0R5+#c,.<ղvO$Imݡ8p*-@=؉a;QKGªsTh n[{r!euOR}ib[9ݷ# V,ݪ="TKpcwm%pH$ueks8U+I6GAWCVw"<β&,2y`H kRH{3W:|qG0f,pI y^#;wI| }Sp>Sj)JR)JR)JR)JP괥)JRmI"֮ue+%Q(x*I?Q?zQ.a8u'V_d%Y{C쐌LR+VEk"K'-$֢ӢA )8~v=VA4Ѻp9':)JW5qeA!r7::WQBJ qYcA\][Ż}I]ϊΥ)JRkZ![KHJL*TH#^ouMy4s"E(e!˔`OF=mpjB{D$jUC6vbI< V;=gb-Iܽ@bݻ?Z-Pޭ&§?KKI=ѕdգQ鑰'-Jxn^[nc07G@ۻv8N>@ےJ0r"kV֟IXr@mU2)!xuOd![xHՐHvAt.3EQH,FK18LԿS$2[ oApFNrq1R:ʎ=LL1w zJxRFb7G bvqEel*r*Tؤ +T2Hw6#Қܗ\[V ِpNO*`ծX%[p'!1 q4$GilMvӯ{5muk-B]U@)8>`sv'dC!R>5ɣ_/fWJt +89jB])QML[o[,SF TG;OްЊJ98/-ev\XtθY) tvrVa$^IP>zUrv`ϟxj:;BAs2H"CtCi=KOR8,pH כWХVe]YCrG<⽴:K+h9E $E{y^Gd,PK30FqkDMIq\р6So |>|{ӲviZ^Cݴ` Ii> xvOJ{#0s!hmw#Q[!k-Fq߯Swp1n=9T^Qbq6 F j,Z|(^[ϠdN~;qשּtN4xQ+0H7F7wbK{c ǺCmOki-VVsy .v,`c ^x'm.i$5R]1clKMo*+ s~jdh(Cb1)_qx입Pk;[:͸2A"Ӓ^zNl +v07 MDBK\ں.'Wld+an78"Tu c}ծ0N4.&ϛ0džu]}8&IO`)w1Is#Ӧ荪0Yg lw3MpK\0]n-Cx2-1{CɮC$QbX.##qBAF nRG_ziq&_gŪg4'sƥnya#mѰV$k[-5; EKnA)0^qYRcpwpGyv LϼX"+KI}iqY)JR)JR)JR)JP괥)JRVW}2_qY'H⢿˳6{j(,Ҕ+UOvXmaS !f_^W7ڠyH '՘*+ BBHcr%dqzT)JRIT\G9{tcvn5eZia+d{o|gXحJ',-GY5ZV-#BF_'cګP[lHHÁX^Bk*dJ)JUql ?maZ^׷p66 +ύXV}x\=q{͛dnۜn\g׵)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JP괥)JWtF{4\e G3#'պ ؏WRfϯxum4)XZW~85[CgY!ay2٩֒wD{E;N*>4i]FJ\}whT珲JRv2|[_i]#9snڻʅqqSE,ğN=^|"eNqmप6 2:V*)JRaiEi lDFhaTX3!,P!o)TbxNXnn9e܈%a+GZiXچ O9‚$pI8(u4vp#Fᔫ+U gˊ˥*(0汬5+mR>A"oe8#ꬪRUG8UR}&BC^ԨYY\ Y;#ڢ [vі*Bz>Z `ne>u'U)J8;-^ 駷MH +##pEfұnKK < rvrrxZR }2#5̋s >YJR)T5j{&)LnY +ֳiJV=,ddb8e+".O')J`+ t[S"Y gTJȥ)JR)T$ +*$Xx5VR +|k֔bϩAo<6ؒmm,3dzC0@I5WIr;J0;#ePrЃ5u)JR괥)JVۛ9+{[HfYo N</Cuң{7;FɇJRpc~̑@plV-IDU0+ְ;`dۻtnj*gjߕ{w<;7m*Υ)J󶵊5TEUPGWq<3wymeUH)JRy5<)PYU0^kvl%~T׿k-H$,.21N8 }sSi(KX)%Ѷn\F *1=0oۿv3സݰ jwE^YX.YYa9'-{H}+K XU0Bż"U"c"#ݘU9'}@\:;啙6$#C&7*mܦ{ʇV 2g^=lW~Jd3qZjEn7hb s5{9hCU-6]rO p=3SUvgJDwE*>5-apȜ]@wWKGVʒ9$xmqwk Xe"ێ>.k F-=n!%ے2zl,.)LH$> dFR̓9⭏V/,"Hw:LS#׵ I([4ŏxВiExN|U֚uom FAnr?>u\@Q򭎣uetXw" m p2|OK]xlvMer Y@%nn LblRq (me%b'!OA>Ukn4A n 1c$m q wQX^+3 !A Idt<׌Z{=p%D'%pF5m+* beg`Œ'+OU6bh!56Adl/ 51h +4ʍ@>`1X.@W=hSn8l2N9W}NDJ6 ]j*]Ϥ_c@Kǹk}#MsYdKHK"[$GU;EqV'e"u)n pEzhfٯ E0pϓvW̐G#*={V w3$`D8%7eq zB3, JۂD[^Iq3^{ٻI4hax 6$rOO<>]*Ju;8 (t /vkuk #%1$RwQ m\V=k7GI"tRJ H +}WP&H7I 0.]1#vA銞5K8"$%"Eܠ8⼦<^],J'gYf!rc *q粷Esg1@BMYsQܖ8MB䓐 4կt#ndvl(sL"oE)-bSx$H`ֱ[5`Y:ݴ۹r8C^u=d&(bIPO 2Wk,!%r.`IE"$ꮱguvl., 7akvsxC6Uc9^m{uYY[s -^ix5ALp;O>WaukwM:*H}5``s֥nô238Vqߞͦ!Hm`w@$t5Y^>"B8A +,ZίaϬZ^nNP2SVE!߫00-1Uӧ^x +`+ .dJc\k:4aIprL;qSEMU2 ۋFw\Z2)*1!!W!_zu 2Qҧe rA$`1<`Zv]-g2"g{79|Iɧ\-徫$ȶ a޹X0el#k A}WÖ +G5̆PVA#*@ӌ橣}Fi-I ѢʅQSi=H^ަ$}0xV Cpq.3HK{#A(H +=I>=4..7,Ic58zV_-K$ +v<'Ó~EԇfM 6`J%ݻI^MJ872[]ü*'i(sXZ챥ܑ7<@vr}2 dAr}Vjoq)6сv9џX>NC 0$GĮAE\8HFqTXiA0!^UXmS]s87ڔJn,dCq`Lk_wNk3Uo#$@Kʬr +MGOSz[F"S錞~;X/bnrAkb.rW89fL$WcaqF6:WM./lJhィ2+6pʤ&:|NkmV{mkV1.,8=Tc&麮F.Ja;G$Ҥtu&KIWw( *AS}Տ[X !} +X ּ+G|w@lwyȣvqrnlŪ G%Nps^^%QFQ,V Áy8'U6[ĉq\ 1_^C}leBH HpkϴvҾ(70,2#MӭM +rܖ>s!si‚9?jϣ_ͮ!bkH`ۺ35[ٴH3\,d*=O>CuV&vo"BCIswrJMb:Z}ES&wq!M'>Aռ9|/ >,RI$_2稯m>}RJ3X;/g+Jӯt% $ "brqgVA=we#!6{xcXP +zR(괥EziDy <>U! o\׃7!4LLȐ}UXoKg yY^dc5|sC}vuVwl.8N8z +NH{Mޛ;i{D56K}>ؗY>O?{627pOÓVBYwL0JU6Q<ȨYhxd$+NIY |Ca 188梻;k^^ؼ7.7 "ߕ/l) [aj"&0+q2A$W#Hujh!uyܤct,2$ZZO?˴bu.募s?˴b\ju;:BÉ DY/uyF.4{6THJOP!Uwj$c$gή**+}f1 :<}Xj1Stܭ ȯH-v$ԓMzbJ0)S)Uj)b1LR+2A!<8?ȏ$M(VC垕)Qz,3p̒*fvсN2N+?+{w7zv`m8^k:)X ڽѻ*w(0W+垞\ԅ**LR1U)JR괥SZԻ@d?MPYvFUIQ7R*r"HG\G.|'9@S?r>QzvF/"I@@>3[E1LVF::2̓smIơTUqUJ{Ւ8<KXѵ_Ub0bBPK U\]\is[16R}հiQ~E\]G +&vo?9j*o] +, -$U$+aE4u9 5~3VEp(HUG@ +ZRx+]V+t aGuݏckw ngߓ>Xf\F]CX?WZ*ԕ$NXk]Aw6DEc'o8}$ppA3"Bq22~<708Z5Bu5ȇ6ɽ>띘<<䎕$3#@ivF=r1!;SЩ *yR;Fתg"\*;t' **9!X$8Xw01 |}Y7.gXVSH 98UsTHJ#8PH@ZUHELX#!r7c֯5ZQwXIh*pBc @v#p$1TwucYcY#eUfr 5:$K( }W)# Ac\`88 qE7ba WpzUtf*:A#ꪙP #'*sXX<ܙp_"+ u['0:]EK py̑,p d֮ZҢL3N\XMaܺ!J!AmYgTgbϧ5~VTL Ǯ*"2HX,@'UBqV +A\qPWwڌV,=ŬRP> B 'O.@+Oi#9*}U_6 x;!HH뎙թ* V<*}2kR2Qʦ #8;VNhj +I]=*" 1Z4Ȅ)` ]խ*88U 8(0{T<qu 1둊=zUKɪ,09x3b6- /Q >E^PsU)JP괥)TUiPwFd$0M@kctBzf1נ?r>Q}uf8ԂdH[ҕ=򶖰xi>ql*OҮ^3;Լbgizvv(Q>uwwfYX71 +2N'׵)Qw_^lxK8۸P:T)JUCC*25p +@RnlL.'02>#pr3JH ,F,T.r}:W)TZez H!+2.ܔP i[q +-`UyeYZI`@n񊈞}_Fѯg;_%\HPLc57v=8cWӥfTUʁIFO5֭ٛ{[KMHJ)8-cO9 +k=A7BV@dq0A׿cnfxfuѣysI'`w?T,iOaqj)}P3^}ﷂR&V `U>dVY[h,jpKmSa7Nz/;Ih]r qd@M8.a3AmMGiZcA2gdCr{!lnİ"ƃ +` +5.u+@w- +TP <D4EmlEqg+5(# giZi̢12w6(܎@ GJm"kk[*s*mA;A=9J^іL\deU +n0)m: >bv`L(IyoY岸3G'rNp^zq^SNZ奌nL_dIOBc]`sI @qY7o l +A1(Tb+maCǕC=iEonH%lF%.".rT`?\_I,K$w1`Ycp9⽻]{qiڃޤ WGo'm ) B>MTrùbɬ>[ǯY5(utB@Wjc΢n}CмQ܉ +-؉\7\HtcL#HmeݎO5iڴh#U򻢏`y~:ͳcьڱ$.[e^%eK"ܫv@NN+ +]g^I/ȧב}b(״P{V.3TIy-.#pvFڈ28p}ϝA\Ik̑\Res[kGhݛ=qF^<]{k +@v&O[@ Hpś$^xVhEݤ8 ulH@^pT cʞFjwW1KhA&k$alǣאHo¿tK^@_׍ick 4iͳːPwYkHm.hݦFwE +HȊ*5QkEAu,FX{;Mg֧G{C(`Gp>{<c E`1`үHwMH@MڸQBRNMG0kQ޼;wq,3YFU6"M_VԖ%g082o.eU _Ps$( F^zf7q>cz{MbdhdɒA`H`8:hmh;I$fN|rc- {?Dk8hX\+( >׶Wob\)kPGk=K ގZ313Ќ6j c\I'q[!5vN%1"7PlN gaehQV$Af!շpjN4_JXPF%QQ0'#95cƺڃMg sIB<("^ '5hOʲȱGPKĿ{{xoUD`Hm!`W =AUe֙g Y)i2F2Hl<`ϕdjVWzu!xYVܖB# 3^<7Z+>mj PqA\kt6le٤ $+OӡoxDIhN0q+MEզu$$h d1+"}.hm7D::#|\n=kk5M: 9Ȍ F#1YzmhO +8,nPyY b}zVC%13 +J*_C%x+(GhUD*N)@괥+lg1T=GiKi'b9#cl&gF*UA":aIapFP)RYɯnOʊ(g+;F,j7[]*o~},?Sx[U)XZiP*d_}f׿hI37ÁץO[hп(+ҕ달z[kl9 + v JҔb4Vw 8 $}=9w{t,ǒOL}LԠumbl*8u3f$U,Xץ)J}KنbHW) /BW4[tkeOxJ.:^s~vcUv-$jbrzQg5vk̭,TvT!+|6o=]yޠJ Hu#QC-rg;g 9L[uJfH,pB3zeVQ$0DE¨Uj1s$][9]b6ֲ|eٞw>pdBY③fQ6޸VvaGF 0:mo{5||d]m>9[+u4L<[n*įTŶ;PwWycǕn6E1).:Ljvk^Tc{WEUBN0su3kEk2/ f&Fyceig; F%Ԗ\1=z},;k' o#xC8⬛HPdtZ0vϝz^h^wvdgDP @Ǔy54K1wp:ushm?N۷oݜ5uf $s#t\C`#ң=id݆؇1]$uSٻNB7.rŗ89=k)g;hѹV1Ҳ7T-uGLd,+ּe]ʯ(V Y2:dyqYW\6pCIGF(둃Gt>b=X$Y~.x$`cʐBA9㴘S =Mc~콜Zs*jaTyW-[Jzb[p''vs3gs$c#OF*h Ei461UֳJ 9^4s eR$ _:5B`:+PaԕP|X+@`GCk֗,wjKlWdVb۷62wsZ}+̙ 8=isAq+KD/G#"Ɂq+>(@0X + y۽`,c.;;gpFUm4A$t +8o y>} ܂`v"mWpAyV`Z=ݽ,K2vy2I<^z&*̈́Hf%ctd! #T㬧rHȇkzExj@Hy89{i`gv CHp2@++Ț::FAo[ʒ$T188=qT^ۭ߶J~ _ $!\)QV\ʆ {ngM5mg'=Y9m08gmXɊRݤ8>zz>|XZѡ^UTHZW y894bx .&Fs'~LHlsyTZN(dȻ]̌I$N08 坵"v\KڛՙL dhs=k2Hee t )@괥+Z%1;#OZXOB "ZR} _ۈ{v>ڬ;l'ZEá]*tCqϑ=g(H@1^)X"x <2)#*EDvc>`@IQJkUI@J;D(ko`u #G?m{RPd[V;`+ +6?Sԥ)JJ5,p,#fkHP c92G5ej#P6^5l ʞn&KI$edo +æAcZOhgbBg WҶ_O1:Ci}oco~gh#9-\UDMhwnC)ep+E<1GyqVL$!cgM2$gS¢.ܶi$䪯Sy^1TKc-.: k"Y-8pf9A|sy; ތr+:=}\ZEf9jm$u_ =Ԗ71HLގ[F Pn4Y4pMxY33l9#&%[DYCj HӼmW;UQq ,Vǫ?g"(De%$Lx#5ƞn1 w򭢵Nu-ޟgH%H3)Bʙ +O`iţhk㴯mbu&ogټ`eX0Yz]YBa]/`uV-^W$m |R1}aI޴#DYf9Wi\UV_.cQn%Hc$#봁uϻ%jZQL.B*ݘ)8j-U]*8HttHS=*KY}UVdsqdgؽ>=q[%V^M%hݼ(FsX`}Gy:ɗP1l1B.vA{y2O3mHѝ&ao,btT +^IxʳM1jnV$)2.v^ +Gw5uڸ"卦HAD%6Y?+V00#u)ui͜+$vVFge%eQsbj7PH 'yZV23X1ebW =ikˋ0#s`TWj/'s=^n$L-j򈄒bz}T]V'm9^)S;`kWMnvÎx5}2K$^#]Kwyh[sC# #^:EI؃2q֭uS~*HnFV#jJR)-l6 ֤)JR괥+ ]}XUC^)Q]6_Y>cuqUϦPav?[ ;Znru>9Be?`)T#5DUA@yWT7k۝cJ*$UrĨaJs'ު8 W)JRt .K!ݛ8qYԥ)JsG[[[I1Gt ܺ$t+?ENHY'rwk\.cY쮒SPNni݁l"{]ZkbgX"Ezu_6 28Y3qQ֗h76-k/|ԁABݍ[.lWB"2 +BGG궳j6HeTXeEpCPH kIuU5G g5qN=M_Hn-'x\LVG$ :S^9[[sp~ l5xḛ=F]l8EװiEPMwl$yW!NO'>U!-Z[JܼEd>#+#ұDZ ]eWUVx&F ֧LB6#L`.rqj?V7*m޿,m%3yf4 Zi`C4Vc/pp9׮ե$4WƾYe8^C` )e4rCFFU@$H#^=S[iR$ N@WRs@9"NkCq Ko,FFb,8/%|? +.-=qg-H;`w8Pp|ϑMfV28E; ϵd_<3^6ZkllgpA%Ax5q]jZlMi+\l1vU~3R׶uJ-7o#l)d\ex }a=CNHD,1xT.7^YjFd-qW#LUEVaO*P8$ʧj8{LbI'?5z[6n%$q2ƪ<@5ܖAk4(B-JԵIvC݄LN@*2qR&Eqєh4Omвe܇`*MQm.n;62y9ʍ?5 %[8pz)q3k/Dgkk!oec3qWh42{؊za]wP[WYd,@@ C&{So,2-HKyH'<wk n馞KոuM,@p=MHj=ƧJ6m~:Ut@{y!DIbxи=n($6y85ME.4MrgyJ`9^˧zby""kB@*9㚈I[y x$CFGT,giԴ+9xBJǗƗBǪK}5=#0$gyˡ5CP[HX Pxs(N:zb;Wa.[@w gߌUM+ʩF³9ӕОu}i m +qL1,[oA<Ֆ[6"=qsWgth 1-̊\ +&U"p"4o HZ5Kp.Be 18Mxh.Xm-J ˳7l9qYAuwB^n?kbImp. +# +8 cw7\}*H V5kmRM۸OԮ +ϊ"ěUU^^$v{y#nL]yeX3[krƫ! nN*.-4fv¤)sQd~#9kOJ$C,d~qPx4] #JG#5 1p^w",_]Ko?VkHN.a#+vl' #[5j5htxDS6=Fx5R)Zae=B)TbO٫ +W淂gR! R*ZXeP[d15JRS0*LS1LTd!YKs#n GFllb,47w;nv `zb'ѣM @ln]6sϦ+<9)LSY<+qJHEa,2q@YsmEڋ8P8ZSVbVմg#6H-h=@=Nzb1L +bJU0+/#hV#8H^6Uj*LS1LS0)bT0)L +`S1*vTDf9Tя.JR!($S\kWH`\֧vͷ+Tk.#mq2>x+k)JR-2cT2H]ʀ71ԚTҮ/u6.`KpvPSSZRFE68xv8⤩JRfҰ4/yr;&ȽṄ| }DV{nl\ Up8|[U6/n-eFI8OxkR ]Y*:dG" I >V|lLn"nVX^v{?eW|OasR7篈=ة 4r{G{ģr1e̗1PFA+ҩfogJ!.by?HJʯ Ĵg2J['+43L5ڍNG廷Z=#G֝dM0I]դ+6Fќϙ{;$c Ox@!xXxc T܋)-GhF{=2A=0tt4=ռ,|iw30@09םK$lG#w}vg_[Aݨ!wZml9ӁSZFZOcһW~YG#8]FGU1ˏNH] dP0 [V]zf3Lj?[-LpGCvkM[wnFE2.,eϟZ˴Tv(`I'zu˩}ɜȖ +;k}IO>/y]Bɝ |TZ`mt7%dr$ +4Լդ|b(i4!Y7 b4;k[6Z#% (V|)S=|nco cV,~RПR{l:.ђT1yZ񵹘h)50FqJBd'@I ;$oْ͹Q;J׭SZSMcay-fޣW5.$~T`|JMREHJO?:ہ7( MŨ{pND"0TXs:˛8˃#nd1R:啼zE0s +!!u,< ckbixu/o ̨D¼B1nQ㷲ު0IxA!qpm>;V+y}DYVMT>{5++%$*BvF2GOZ~nllE23\n8Rp3TM;-fۏ,Fq[]Lǐk/tDtw*T?GdVkdi|e'>ʍC֥pdeQWUpw<0wgⰭ.㺇xb;|8o o.+ͤ]8M4}ԭ#@z3 vVY *%5MRk{ɚKIn+$D/JRszTmzw,FnJ 0Nw'QRzOP%yVk~1v'%I]Cpn{4l%PM9a8kPA#cp>8kQKL!!.I\Y\FOz}2J#RV81]rM={ th`VNN$y +ZX$cV9\O+t9dYbіWUPAkXkY/ 1ՅxvPATnl,Ʒ3H$e8}r#V.VՏwܠHpYRBLbxdt⩭۞{m#1nnHqTk}"28M9HðV+*y^^ nŋ }VWelm{"T!b*8'FI,ݔVRx 'M{ܬet&vK8rćYHOzqfA+A)/&4T2nb8zTgʗ:m#6vg\E.H+/_;+hu bUUpC2sF9WSi ɦB1P.@'3ô7[jA#,L9+ +|^v{C|Ĥ2H/YYrpFkd+NHϗuRd2HTl-Ϟ3YwiA&crfm7݇!Ӟj{OKa$լdI+De^-`cllH&эw;{ɨe8yhKI:9AI8ȗn?g8݃YwdNxlh;5#5< -lz7_Vm)JR괥QѴx4+e"ı,I>g&JRI?.+Zڛ=℡9[I;FkW'`a5]KP\85Ҕ)X[м;~Nvn3Zf]CV6N2 R4 +>jOJJR[CmFem%:#ԵV*^[ݘZw(Is61Rvid',YYb}+Q\-wwq{*0¬"5>'@TP: +T]ƆLm;ۙ +۰C #hMeHBYM۲-'MK[$hrB' sXc^I\O5f엷`oN[s~Uڗfmⷚ(GbAb3*iO&wʽP `` +es^;. /x">pn[%s ;FHIΜ$W_# 3^˲${](c+9>5fŭY*2UާrLzgu=1#Y$t!m.ϰFF1ԥ u ã)J9K#2Q]=XMyO<\̬mSUX&fpave +TN>[m<932 m]jߎX:>*H69F܇#Z: NT]]Iy_iG;v^8X]KF7S6P%@ Wq =:榡FY,@ebk:Dz" ]DrA@5.{n %W@SNa$ ij1>jOKTDY2 +H#ЃQЎ xy#\xUU +@ϙ^@\O$У)H&ѳ`s} P]Czc +{ ۞m4e$s"M÷֩h  4[ncN8ODdiyuou!@ln9TG:BЇȸ808k.sd|; (m +H g=1'R6pogC678{")@괥)JRNj?˥J֫1EW11P>Szбb@Ky[ av&شKq.7)JR-NMNS]Fe%|Gr8Zf2N$`;D!R=pkҔ)J7r#:ƭ3}<Ԋ*)JRJwFH9*`'+ tN3h&iT,ZfES dߏ]{u)E` 7CUV)JUI$ם7C"Ȥ2אHZU3J𳿷"*J`8R)JRL+t9T3 ב.DYw!r7cuzҔU88?J)^oqnΡ uJR-6DWs}HɯjRf2NYouEu2g [3Ү*nEV% R0U%$RO)JR괥)JRLJ?˥J֫9=G5=<3!Sϧh59_p5CU +>`U)JTGi4Fcp 3+Fr3V4{rhϝ{v6 ce`񷝠>5%JREI:qf*` iI#neRfJR }8tFP~x/U]H̽ɱՇBT0x>U{[iU1,p 늆{Mj+{2O"¥|EwѓRd1 a + +@u?Qc4u?7= gr4O;X."U@V(g*ˋ#ifuD^\Z 9ȭ$-Ċp;NLRjwms@WW#߀|\trojn2DX[F[q8[FfkX t0ǿ<FɨO=# V8<*q'uDTy<*Qcw22@}&N+f)JTi{f1Cnn%WFB?73+Uҭ`^xԺxE#֖kiQ"X0psT[wh-mqÅT$d07IlfxjQnmTǥFJ8vHM`gMSNV4ED T8*|^:k-d/"iORppg }*zϦkGtC$6Xp|\Cֽx&1CH 񞵍Aڬ mJ=^1L'Hݙ\mCP1ס[N,&;Ug r N|Uei9$h[xYiՀW1O э#>XOiKFqo07#V, QnuhIE-.H(1+;ꬽ{3˩ N0A*)M-jr6bnU?|x~+9 ʅڅ3*@c%A::H;Mȷqf?@wt`sX93q*!I +8>o仈O  n;8v.h dnS#䞀rj~\,#.Q*"$H^[{Ib`X ywH@اxy;){mio\D˳h +Hk<3$F*i篡;:w3n`$66NsR[5/(n{V9ċʡ\y{XkI[<"c^O^Dʏ{K}"u+P db,n3P@<>Y)J괥)JR}ì.+ZoF1&:PoӴh\'Enԥ)JRNNImn]ݎlN+=jB)JRlAg}$$xZWg +\%JRFZznY.;Eww ;x8'Y\ +2N1_&Q y_Gu"lngC Ǹ^~&6VԮd7PlBB*wc9<[WQ.eIx+5KY]ƥؑQbݜW?-j3F Eh;IP$T`1IA 0u=$_U8"KhI*!QST{33ڻa{\R*ZRd(IA$C:V?jcq!v&0GSez&-vfkw&v\bgs(:T}νii#G!2q=z~QFm7};-gc[Al^y>PXp|/$+`Ox؈ 7r҂W ]r}Ui:ʰԑΥ%P +r=z;r[w2Gthlc/QRKTLF#0K6'xQOgUEFR|@:ԵiRw xìe6G6bn%A o`ܱ6 d-N$U$)݄oDMdyy⩢?JXQH <;5H<*=xM,j]BJlq8mvYa=, (Wg]tN¶c9n\Mc :yF}Q >g?)$d&)dEVQ'$cj"K}+G6.Dm9d*Yq8犑hwݑncnsNI#k8.N̗dxN2  #>X^$%=*wǬܝdRԛsT2|+a#r3G^<ims۸W[ZH1-*8Pp٩^͉i@&q6񵛧=Fp2>uڻI.c'%EIdAQϤ]E~ qğY!m͐<]נѓQ +ʣ0U7^RH'\p8N-v1sQz]vW[ßAҥ}V('lr7Ǿu[1oёmE"yg8`ydT G##L)8ϧbv9t뒤X Sp >I}6PLI8`@'}jFɵʯa*d d :I 駉D#d;Ї*9zפB&XXAHE.nh!0F|HF1ԌQ_'Ϯz#<ʎ22F<{9Դ6WrKg&LBFr7Hz{7v|8HFа,cp"I(cV( $b0qW֗q4Q#kѦaQq +Q毾):\.B KnEO%kB488-͇1`rN~5S'R@W ABQ>-獗s\!ZkRH1%E_@EuZ_¹ Z,#Xm#c@#0ONk_C%ڕ\NTfĎ\:1EiV#N q욄I FYvT]zO6r[I.*Jw`eG9#MI[/dϴNC@N 9yG\i ; 밞U}0rk`K(1ôԯ#+>)@괥)JR}H` +̜x' :ԝQ0>XvzIdf-s碃*f)JRti]DX]-|5JR)PvOOR]P{a!J+pLUiJU1`S{]C$I!@,󫭭㴉"v(U +R Xe\i**pIU1Jƻf=IbG>yY#Sil-SnıfcO' +1JKX9^)b)bZ)`S1Jb3LS{Kw{ϰ"ars1{T +b)b* +pppq#& @e2;ػt5L;S"L♨MQlyR@$!U у5-J'iNLl=Je5ՔlhV7RxtpV0rjK99ҩfjR*:Uk˻GiA)`qc%^PpdTlcuaUiJR괥iޯLrB4 *Jaf`;cU#m{yoq :3#$ p15˩K%ٽ0ȷW=UN}"o!4Hm]MGVZ{YQ:$+\hfүl0QnX"'[*&HF`Ԑjxo޻qq랔9(u ?Z.mq5.mڼ4f@ .y'2JH$Mup"w g|j*) +XzpOA*T022>)JA= zy*d a`}uHn#ՇWF߭T,cI¨@'ꨍ*Tե x;{ +E،1?,֐<th|'²T5iu}jvJaXv*F}y6ik`pG-=1uejWٙleH.G2R+9Ja}sV2O.` '+jֱq>X|!"- H!TtүT>X&YR +]#[5Ib[|E$-2s ֭R9ZBA,=d+Ȳ ʃXv:i խ\n .X;1tK+Z]&;%R < +zċNCs8 m2 1p$q^vw-F~JG~pus7ht O,e{k,s!M_0{#qd;wM[1[> Ekyd#fB Q|yq_DﵭFnG}YτÁeG5g".V ԅ +?-$ E" |2Mav[K1SĨE95!]-6E$n>G8 x[7wDv1SRT+q0npkG֯ 5o\,13F2y53^\h2|pJGS%Axk#.ӮkWz0L.085o$4I-{`-[q4Z.tXr5+POoV'%v'͚g$׎q=jqI3㌝{ld"OPj ե3"BB2(b)/u8tv^ͮ$t8r7O_*ł6ӵiEM%Xo9`8kWKѻTD؂pW>U#6^+r\wf+w֯Zg1%f.?9Ѯd+=$m FqUu']R"y)v(axi VV{տTGF&ppsϑ +һ@׭q,;aXj+Ve3dYNasr1F#>GZ)@괥hzQv XK0 ԭ@-}HdI#8<|[Қ520_0精2 ^*4kgfFBd$gwjon푄TX &"h?Vc+|XKn}N}Uhvhp1vP0A$ ^G7꯻'v,pWك98TflgWR 2H@3S˨Ymu9MvU>5 pWG%6J1)%RBlTf +2NJ]6ni !xЕ%";PsԿeuqs`_ twS)qs#(gq+& V; A+G$9)lt+.R%St@`3{PrkiًmO1VR RGh :cҦu{6֠uGݧOw$m4951k@uXYs1G‚00[7NI 3wf$;\ ȠnꞬ]J-6[(7cm&xȭ,3V2Ϛ͟.>cwy}8T*,4[i;ICYT*Cd#XX6f@7d 9`p\<5ܢAoDTػF6Hkk=Brɴ;p4*2Fi.^cA": +y}ud5И#+ڠp1UC+|LaKƪ$wJnͼ%&BP(P+9S{ Y!Htt^A,qׅW2]O2NU.L&dI1 )Gې<v5*N5'rĐbxzaf$S FW9xTdm+hҍH&.ݙ,s9Պŵ {Зo׻ᰪ! +15o])EȑdGB쭆Ǡ'IcF-F[ c%m,ryϠ fSɎ{3.IT|SZ} (bĨP:blGrАږn肙P3^m s!dFP0sUӴg3 v\2`,ycCQN>ss;\MOU@A xzUWKQdg'tTd9'GLT6,1 bUD6u,/;Io'قrwv'Eg>3j+,)3 b܃8^V[Yr^=ǎD#~~Ilc늚5kKkysv&)L(<ϯ;-Š'yXdwNO}RMsKsإtA@GOڌE֍-՝φv ]v==tCŨK~2B +YyIׄ}ZA)ܘݻ~~1Ψt ͳY6ۓ2f,T6cA#fYHS*:0ˆ5?f G9Viyw2}3=M6[8)dp2|ԠBR px@K]\>Pq6j~O㻺 *EPyjQK(gYVEmJO0Wu<ԕiP'I'<?|=vǨԳ2Pr{5Kl2 c&3A#쬣<= #*DPawp[$Iq5i\Xb[X  2pyU!.,K{k eE!@ހx k4+Źpxe(ڀ c$׶b&d)DSg:7 yIH?-s qVNH7gVM·#R(&9_tnqep_p$/oܴb< PŀRX99Ϻzlo8[|ܩ2m##cHeU#!ur + lpO9K ̲hݒVB00kK!Z|IG6AݐrIzEuy^HYbd pdR:~&jδ2;xciag47-41Dž^C?HXݒXfvq%Ύ#F+-}k3mՠkգl^K I\sa{%Zw'd!z[E:;j/mVM-|\,af1ݍCn>G>ʕH;:`g3kp[8:X[,XI$eh˴lHC(<+;I"',ORy&)JR괥GgYI$bBI=NqYȋPTmg Dx y'zcad ߦ*MlL[hN Tcqy=jmc5 ,h` + gm KR@@u 3ү1(WywQRt`C+ ȃ^6Z]#]?UY,):C) 㲷."EP1TfhaHqT +N=p9򸵊Bʊ0 0:|X}p:uao +4i*9ּGTxnq8:qWM\"G$6)@B8FYZ$. +A`=͌biֱ c"wqSևM0~>(1T- + +)U!`P3AZ iG_}VNg$ +r7(8gJ.h0"gqWZAdaPyֽ񑦅$)1댎)iao`[đ9!(')JRJi 0UQOSW"Jy+gLUiTZR)JR gTsU**+dH Wow,U`K gC6$R8?dכG3ϝ8 }U}V*Ҕ*#I`z2j1U$%ЎdfFF # % +*RU)^mo:TnP@lr3zRfOuRuifJU2 [Iڊz\j)JW܊r0rӟ* UjҫJj)JR괥S43^72<1J໎8]ǁ YksG##*&6fP>nj2#!'yYRN1İKcjs++p;3Mmi7;='izK晦i𶼎cn8$\fus<=:ޯA2<'4V)JR)JRL5veKyc1p3SpA٫K1"¶ߪZo}f@^8Ƨ#n{ki1 @A}~ d c2FQd +2v8 TZ¾cuUԲĘ.T xA#ER=b)`TW-w}O8kkvQI,rd,Yjpp8Q-TZa36F~s[%ƯmϿrTDB<~+=vV)**+@=U'p>D^zwj,uY"H۽ Hn#T8Ii$w.-_21'\-uX#8G9>U?h!Xa@ȄrA$:*YXs,5)P,?5H;Ak,X ǞAǮ:P}I- [ %vq88>ꟗX36wdPUH@ f[̗1rzd^s7mf(ZeZɨȓo2#& 6t= >m[C繺K#u>Brr3T'Ј/p1QC[EdC.{c`egÞfx{G-ؐZ&:½=Gk.$`pqAo.|2ϥ`XjVU5/4nrwc qY:~FH=Dvv0AY?vNpOCC+!3 Bn<:YI,idPnPcrUfPFh<-5~'*b]a}m;wntݴ3Hs<yZ mo"I2HGJ{Mjp݇tB0pF=35_pbnKӀ8r ׍֧U $ p/;Y^bJȱo {y{I6 F.39$HUІVAd} c:\a'ꈠnwvUG5i[\wxP<.eB pH5mh`%e DFQ$$dI$t|ZZܛ6.gìkq<ά0Y0WQOBSWxɉ%'o>}+K,t%'idN28w͸F YvgeeX(', +G^+)5;y.dV=qalA#85k]C4M 2˼2X6:Ví1+" N#gOBG@q*Tk-Aa*(br0$`^6SJc FVBI#뚾Xyų$ѻtUX) qҳP}NՉ6 |Xs1Q:vrdCFѳl2y ?m{Xũj Ipq)=*n<18QzڶZY6ʳm;TmrqαaeZ4&YHDgsN+:PD2)V":{I'{AFd )R9*-nЦu^ppppqkZ-,#rnFFr +,zzWa-= bZI$D%r*BYM"L mCܩb G$x8G[Қ$fS+mL#;Fy,u{Z%UbJI8 {DRHt}D-JJkP\H+4bD)su8HTN=7)fi{ ڬ3dάګcH` t<]8 A5u)JR괥j~E8y#I-#HA؁F Vk;km$oIh*3mOKN=MIZimXbIH +Tq+&NWYdGm5H7<6OmZͣI3HeBz돍eOw.u,M䄑 Q$bvK"oy#-80*kUbޗF 8 "kyd]O0n#mq>y涨*0sZ֗&Lԩx ǕFu.{݌d}dN01HQo5a[1wHA#=p9f2Ϩꬋ'XWw>x IiQw D(+# eֹvYqKrk]@"m +018*F2r+/[MOHemff +T$IlˤkS]k$;Q,Y 軲'u4xW#ϳ1Fz 2YQS}Ņ+;TWO9] +ӵV$Wʰ$HHC'w`YhW[X1ђD<n<*\{ifafnMIXԨƲ; yΏh6P:`9Viǫ2_3 GH7JŔ+20r +2s/!S}}R{lȱ]\s`yxNk6M2w H ,`+Gy{3^bPwL>r3֑w *v!1AS^>?rGUIk^z{Ws=I'5BQVGġ-gDI2ȫwC*>ڝ3ɺ8q#tދU9)[d^ #J\Mh\uRZۓ+Ai&EuFT*KyKesʜsRݜ.aku +Nʪێ@t+`;:ݝِ^^gUNj=8vJ[yԉebv>U< 7w7SIsEnc_dD +1 9[K+a+[Ǩ4"{;Tӑg({Ga{Yd ަ0vayxOZO"N-_N9eJ"u{)rǨCz[?rqT͜쒫ӞTNb!5X"^ި@iYv10k +%^H@ J)  }AcyiV5o&jYYw!,z1GbDG9u@~$Ooj n @ &ŐS#9Xu;4Wƛ@}ܗ%sxSWkp3*qg|GIXxl-;DUmFq׆]xE2c ?pRp1Y}Sal;wnF1b~F{kF1w |k#X;IݑVc#vF8 ̖=?\qKĩ#YebWq8`@nMVYc!ԻLg<H#[(,d <ە×e@ǥz={T;R˸0@G[\ZOڐb~$pnzf4yfPXb76xX#a`jwM#2ƮHB;OҲꆴiY]ّ,] )aUд-5{"?F|Nv|"{mqqZ#0򅤘B$]:*%LvB+H~.N=k7aU2`H3:9;IV ldHi#+Uz̓= wb2W9# 9p~zW8뷓XM?w2+ܪ +KK#GI^H e'r-KhEp#'uvcfk${DR$,Ifyc=)!2Ϟw!3<4"X,]+وQ,Y]AE VqNhRFG!H###5;a0N#;0]H秾5Rm}7x=xgʫq*:ՄL;hi$P3*N)@괥k6zzdi+*̌z:Uw@#y\ּƉlcxVH\˒vNvӧ\M[@Fx?9ǖ3qVw 69\g+Nq|Nr],ĒI{5a#5T3Lk[SwUFGۜ Kc#9]ι9V*l4SVMVc6X2qyqL5ZjBqLf3L4xx$9F*}{x]Fpd"XZ&2ae$pT4x^Ga paL♬mFhy"4 XTpLbܒM o'xAȫn5[]NC˱4jc`ԩ8VP{n#D{kՁEpyRjL4j?^Ԥ,1'rٕ8y{ʧzifZ𽼏O[N8؁ӻŻ, B\#n8#<'k"D|-&q-y4С{~ԝ;Nc]Q;/*h{hǴ+,ghbby;<^k+ʉ^ͥݗ"TtWdtCFTgG%F印Al=-^L~ 221g Γ fxXƒ _>HYmG>%%@WPqPa-Q^44‚v3oxԮԬf9ar@@sǑ#iBk]MjzI2ʻ0P ~>+ϷAmd +@v,ճ^m3UgD[ EVR q< SI,D ,2+ǴWMY.ؔi"b,Vel,%ys#n|QXM=vzk[WIkYf1F #qKnm Ź$ĮQrLj01<קkɦڝ˶ʼ{c +WHPɞd<,o݌#9$ qY;SvnI7T#"G3)g+/SPc[L%7 k(N9nC cVJ䌂88?h[M/dk z'rͳ>7NhZogE*TWUw'm'OhY>~ FUK:ΔgXn=;Yd\@+, 3c-/;9=2wc$@zy'[%Ō){ *$Fd\9$^^,Z^BgJo嶷o$~"΀@Rv d|yuYy,ipʘJ;Dmҵ i٭瓹| J|2 ³4fK')بB9f y'Wmb2vLZs>x>~~Ս֑%ԁĶ/Adݟ_}{pGT̀x㠯+k:u)[RV*Q ++o'0F1x5uSp3ۼ`m`!Azҏ]4:xP6p9x#Yw<:ci)CEPGyK-gPlMQ ce"NኩqdL9R08ȭj)JR)JR(괥)JR)JR)JR)JR)JU D[hZݭ-r1ڄs=k}Fy,2H n3ĒO:Wg/I = +Ĩ2s89FoI($VBA+#Dzۭ3n! w88ʲm4Lk5I{v.p072FMyC,KipbGwh*_woDi洹ąʻyR097eع̝8ݻgݏ.kܬ%zS;BrefqR5n{x1@2v?kof0[FՑÍm)L:MިVD#*ysY0iӾ}a0(ɵSw6Iu/fgM7ȷhke_%.Ny͌kq;)bqW\ۥO]X+HbҬR&ET*K`㏇om +-{:cHvqjdQ{9tX +)]X0AO9>OoAq ƁpU;\JTqaF:,j8U|b:qխe +,(f<^~w鯬kBX_h$s+*Gݶ;wd:`=M-ᮮDAګt#qtM&AَA9 w'bɞ''f4N1 V$H# ˃BoPംP,eKnSHlAkq[rSf]76NyUtAǰC,|Dig5M-`P09яM7A:p 041RAF]=ZoiiVk bI;IϠ :%PTUT ORV6mgIw7vEYT)JR)JR(괥)JR)JR)JR)JR)JR)J3U)JR)JR)T1*i**BҔ)JR)JR)JRn'83WRP UiJR@n Ҕ)JR)JR괥)JR)JR)JR)JR)JU**ZL)T*J*M֙ZR)JRdRJR)JRfJRS43Lҙg5\LҔ)f⩼zǨ>o>oMUiL4j)@괥)JR)JR)JR)JR)JiWb`[lPm 0j>)J;?eUwVcOҪg 'UB^tkO$oe:=v.)$$?3/~?U=?v}_~aOX0_/+=TC#oU]"oO,ɏSW3?oUFm~ThI?J"Z /WvcMkpIK9'Vi^v> ^i hdTnżeTh~D-}QY~O"g@k~z|g7竾E_H#g~>EfF_ү쾝),'.䟯uY{0d&a[x=W'95_lsEW.bImW{?cEi'Z/nt?+hExߒU_,_,, T8? _MU:ME.OӧVKt*IND.&e1Fu \{-T^E8W ďذ*X$?5Q؃޷UcJ؏Xx>`OrI<3S ~J[`̿IUkv~"?ITOX&3,t+6# gڼc6Z e*{32Mkh.b|%@q[&GZ&-wB̒~F {iYmcg[i!Yjv,h_M|W;0)wsprqe\kGN1rO@=IV,մM3J pvqqy궉&|F #ϯ«V{Ѹ@d&g`x''{ë[. L33ǥXu^B.Ӹgy{ZC~p˒=#<X(5;kw  dVT,KO΢x-ZfHGL@]jMf\1PN[o'GbCpd泧`U.o`Ԗ'2MyIYC.ry;Xu}Pkv.̂u#9\vqUXX=Ŝw3񪶫n&A1ڼ6421^r0rKrQQqydCӜwך̞ R|p2p6k8=uU8@,q<ɯ$@87dFFAHoCl8rP2=m&\b 'DO嬰OzC*IN2(#2^-Fgom̎nU2}mNdxw衙@%==bzv[6,c5pBs" z`欂 dW==I5xK!eH ԅG ǭbZdq6A2 b2x/i.m*y@ +R:zԅn=Ǟ+3#ʣe\0"8ϭEm3w;pV~zɣge)J괥)JR)JR)JR)JR)Jjr2V6L-8VEzyA^A.%N6$𞞕#PZnBzi^_˭c[RkE%.4V*Z;H`Ǽ뒀\cҼ1p5>'CllBgRݫ#6 Zߺ`9[*ݠ=ս9T5)qթɨX{ܱ1:fs9n(S#LyNvJ_j}pgw[qQ7iZs([^3SSEss=%Wn0Įx9Sհ Pвd@8,}]JjJ.7OuxJ׺iJ9U!QyZ%!X.eM8 {A6wg_fd9S>8q>ۉ}N`bM`kVdp}?jT9}jEX&wg?(N==j6Un$<#j}#Pqx'ݚ&YdIrRL^#B?R˅-m5=uO_l}/'{rjNl=PkYZW\*=[lXy\}Uf-5I K|ȠSG_HR܈o<9uAX#ͣ2s(98˵[qgwX$MbGxv\ŒY-# y}շCj_N? 귚 hIDx?]_Iӕ܄ʴŽuҧ#'U2 P%k&ws'쩥N:dwb)hUԺ]A<}aQ0Wk er7#&#ۣs;sS:A8" =HǺH#^Q¿)ݓ݌欙X呬 F\mPX,H²mlKQ>؄p7 \F3ldyDuem:Od_tB +x-OŇQ֬ѢBuFҽ9><>ɳKaRZe4;_׺ۃv}uoe5hϓn;,cꌷ2.`e|}l}>,Hchs՚T})W ˎ*xӹ;OZ#:RGotղҔ괥)JR)JRCPo $6f3Or!s&߾1)JԧM[Zm֓g{"4(+d#=3^ZF#B84{W%rXgIUYycr+t{5~] +;OPNyFbb0.cqֽh"0P# +6|6PZ@ݍǩ8dMYmHCps5Km2^8aDV9!FU m2¡;HG<z}UEҬĦa >U0"U +G=jߒvaC#$AJhXPI75W-b%%ˑП]icb(bqmAg?V pc?r]5l)@괥)JR)JRsqz=d,kA &󵺆Cm!DmUo/< ++OãdXƍ}{+XLq[%q4ţe*p,3$Tit /UȒAސ0J4c݁ ɫݔVv9>ϙf99?=Q{i*TϗZlxQ4q#a +O-դv+k) ;ܪ, $g5Rhq f/X?~¹WZUMgJ1vk],3fUѻ?iekC A +!3'XvFkX}۽iE9ܜul݋un.mch7Ob#BjVPH$7_- %iÁsv=3TaLUSURfգWUi[jՏ\ +)GN9+;fHRU2G,^]qTECJj9Ǻ=<yp4Dg8p>uKd#<#YPXzƒ"Fp@Ͼߝ:1(7azxKZA*[j;c8 :v@pJpXb^\eg F[kƳP SuT7%oɴsГc^%Ud9 FEZ.b߳>-q^ҩU+啂z9eVC@ z4jh^/{r,%v @@WrhqjLKPU1gnX:ZB +OHa+$k{v TPN71otS+!@p׭w4GrHsUּg\ cUҔ괥)JR)JRCZLՏh>Z {]|3S88ε>vQ4q[ۤJNyA]:IkPj:-h䍳1ڀ|0+VAbK7 t1#DjE)HeX6$^:6V?c[cy!h9*HFV$guAqx{ +g!G|nQo#$$gX%ӭ5ty"Rؐ23^ϩm{ d(ASڃmLqLc ~<+Oq:+[+s}8tNVf'p|T:~.1$hXXD@gP4MځiӖv%~ #g#h>/΃YKoh T*2=Hs"@%C^jKfƅg]gӑ[kx^IwD2v|>dX{YO;`yx=*s"Fc~w=z*N/<#gbK5鳶Z8f衾ǯWƑ!iW!T3fS{kwNRCG[]Z#WMY <}Z}CI@>sPxxr}*SXNXrY9d`q==kVզ QYdaЍ6}^%t+ +9W]ޭF[PaF;Cg8ȯ ~Ѽ"1ݤ`I> mBKKmAA* R{.t@8QHle'<5iYR3,6%0Xgv<ӓRvWR,I[9>#uvn8-1f;Uy&n5)* !>nwuRx.ru lڱ,&IGdizԣrlxx"qܒxy|S^ScO$(@q篐|9 2D=`xQssۚיthvƒw'е[ kyQnF ,Uz8TItU?Q^johbԢ n.qǼԐ[cd\ *0c G9k\[]r-!]Q(lۑx⭋$V.]FXb>HTijEPI`ˀsӯZ ouoKqgAV q£EZٜJ>BOּ-}BLLe*[#u*i&J[;o8!F:^WY]^"hHw!ƽ5gK(@$b +q'8ά)dnRvcISHvǭ{At{\I;DcX/<}YK<Gz|+^Cl!ReM F1r^i帎KGswbNI)9#{-Cfic ,W,WWB~PJv8xufk-bE&(wfڡA'A^V@032jYmnb6}v[Kf[XF + Jss^[Mm D7;C*cνS3[JLQ$ʕ`~bc%ͯ e“B ^o\XfMITJNNL>}+n]4Tm{cOڳDHĀ|*wN]J 0ϕawmI$ ue2yUb껾Y] =x EyhCpQhҔ괥)JR)JR)JiLj2*LfJifT59Ljs^z谳p޶2|jl-#a@|O_yk#I+# 4P0HNW^j?Pa|k, rDX$nH8Y7Z9%Ay9Unoq-H8A*f;3 ͝CqJ~e`_#㚕2| + 'Џ>u좞>*51UA5>s$w$bIyUfvDdx8G@]ukco31^T*W88"56]R6 G2L`#=sUѻ{2%ϒ1PԃZ=iŹ! + NF: F-NpT9L{[*\m.c#vR<֩w\HQƋ%%!C# 2yWλo=r1p F>CkTGsMGHmF 8UtM&m:Yݬ!ͼN}H+K~z}KI!e +p>pxy`0Gn.۬dxrscSV=Cm>Us2^Cxĉ Ԧv AVj77mw -wX.һ9﫮-fmgxil⥙mDŽuZL[$eJ0O{ hZvc~]pe'9T K2D,TNqמ+Z8FSY7kq&krr;¤31-mg<ġс݅ uhYR(f1;Td3RWjVI8[\d*IsVCms,{c! +'#a7o5#edbX24,iWCs #rA!Ab5[^$! -[& RFA`` co߸6Hך]FDE`1H'T}& }s#*0#.'I$E +[FC>,"x;S,HE +<lSnۘAX>zἈQQE{ɃF͠pr~8[ ϖ\˴s}1WiVP-n~~VtГ =k+Oia!`1ۭe])*'G'5f ̺@JD+HRrpG?gGUiJP괥)JR)JR)J{a=ĈHYw;psJij_ӴtUHm>X}G:K&KdY{ȃ%Tp ^oocsE9Owޡkyx[w0 9RJrqԻA>e'vV3%u"b䃌Mz@Wh{;G,<\$"%zBLcgy;vgSD֬὾$~4V@%$^>ugɢ_}mνvd =)j5;+ofxƁQ :sj 近n|wpySl?힫hjp$3Pl/lX 2*voNu zKˉ_ +ŀTsϭnuJզu[ 륯q<*`cFk3h$Ś\qT(F+-E%\uW:jSVMSN 0HjQ +c k|ݛg-{QhsrP|ayTƗu9ĭ +|V Dv7P NNOGxzYSF o {I>D70F;,S>G+*V-r7KD3|XjZC,SVF-KIxG T#kVݢ큼9_φyczV㭺H٦qCZ)un3>UW\|@#>Υ9{0@3 HH"^%kzV/:KYզU1@*U7b 5LҀդ| TLSVMTUS8VMsU&ThXTjSqW)գWEPiUc&9CV UqT^144&W8TWPUzS4j⃊h:\kFzR괥)JR)JR)Juɖ`6c\7?ȳ-%@-q<&mt >A,8ePY"%5&L76}x(;1%%u dt9Vmݍf+D=U2-7Ȳk  T}gt2Kmcն'F3e6qcEy]閚Sqr73mXY8 Xa2FFx WnnS~iVuRU3Bj]4VTjFjE\xIjg5Bq@\3U T 5x4V3WjBj5RPSu3U5JfPjZǚ1S֨PjuPyy<\О( VT5QLҨ*Uo߁I+h)J괥)JR)JRU($ONi2;FuJ#]dYvP`"od}p^(]/xqwnk7R-4VF c/jx#VHfUvEݕqӵ;]Z!=*F9ExGK1YJd${NK#\ dԟpXK`#&z"%\nTgݚ^C \Ʃ8L^3׭c-, gh%~ȃz}rI "@An~aڭ7Tᶐ#y\)R\Jq/,}KpoIXY'FC 5JbTWLխ5{IVTFsXô p-[nݏv^ݭ34A)<H@H5uiJ(gDVe p#CgU+WwkYk}uLU WiEF:l6Vv̅Pn!A8xF&6wx" q^O}y]ܥO<؈X8xefLu 8##5v*(F+Sha6’2y>Uu +)SUuOj}jіSn<ꑺȻǰaѤvxx5FWUh*pQ}CPq&2)5 S1sYsEShM8z?c=\# =3*I{I+nu!I+bg* BiOJSMv)Wb1LQjiiRVS U@8T"@1U*LP +ZZ5_[E)JP괥)JR)JRFkiZɝ֥fB m䌊ڴhZM?W ʲ˃'~9Hsj9 )>{VW_ ܃&GLֽZNQRt Wp<1[6uM:ٕB ZΑ(_zcX!9$[w(dt* 8k`͔/Fqqֻs׭-1"xi!6v3}U>nuVRfM\Ž 1KpC5/R-Av(C*ׅds znOfg7>c3(FBQ{t5iװZ@N0eJWf}w]]}Ie* g#J솿46pl3ʥkvZET.*Pk^bX1\dVQQFhu_g, mjex*>z[c=nBU P+Y +nUݜxt*]bƠE- H?E$fn^.qQ=gTB™8HBui˫;Icj*b'*G9i*(y)+W*M#*5STZ*4UMRSJU)Lf*JR^:Sc[qgV*(괥)JR*ZRTI@ZFjvj/b.hw.>?wku50pcQ.֬PJxr8:Vu^ыV{x(6r'k״s=AnG ;uVsDGs "xi8<v>Zd;brbP3MCV:tЮf~}=%&^Fcr32:9b=03+:ٴTKJcY y}ɦj(a=wo 3}kp{@MƵ>isznm[0&2ǐ$+)?uj%pFs)cǟ5NZj]XC [@;e)TFlԐ+7VӤ҆cn\&4:WX޾-V2 c V]ՄިRG"2n t8>qXs=cDSC.ѷ\ӯlN@ر@$ :y{g,8l6ꬡz154@]^L[q2&$Y#)7u6򵦭jiP!c#-fD7-1 [Y亷E(|2op1լ^!(Fn#-9Z}p#ƈB(;''xӥ +7Tv7'4.-b];s|ZjҦL憩֞uRh W5Bq@sWSZM3UVҨj5ZU)Jg_}Z95u[)LRLå5VQ_%mBJR괥)JR++G|CefFFTAM)JR)JR)JR+Y:xZ޵MZil W5L=՜WD+ddgkQaPp1NS#'_:rE0G0qXfXP9VUM١sWjvx4-A<#5n ]WҀu T sҨsVV:jaqBǭTN-K2*[( cǭeyרWTbd1+ :->w2'$z5@ +n* RLҝiJRJRtg8PTSLMR,T|괪(y"J4s=#Ŭ?UiJP괥)JR)JR)JR)JR)JV9G[OֽӥY3U*i浫ϔg v} 2;y2k&d')i}{-^qu FHgx^MZE"+O ddVu p &57"@bמעjVQ8_珢?lCź"99>5q[dpc:NT#<bo{ m8`:FpGQyfTRA럅d 썸LT%Iw`N{R܏>SG.c[reNXr|1bld{+  L4IMBU'3֫ "98X:gh e휢cUKp7/k*.t ſtլ3( +vFj翶7 zVka*w77޾ulLcyUX=3IUK 'T[;gvdo3uo(O{`*ЃT{%RwO*B<֮;+m88 U%j j bY@N#R}:=՟,ۮ.NN2}Gr7Fpps<+_{X5XB9>${X="Æe!Бc>RCd|Ju@K1xG[JN +գU1h/V6.Oz B~6a uuYXmsybv( A? +b'yǴ R8k[#-MT@yFk> PA'+2ņVW{8ی=sҼἊrU[$p=* 6>=:NdĒ*nxԟ*ɼ+rJXRd_^+u[},͐Ԧ[db1mUI:iielg6%IPIZ#y]Zx^EiFOYq} 6r\lT-x#|+RS9P+vgMkqO(XLV^s`$a+t}Nr' S~@rD80`nݜsyUcd\\>+2ؕER$g=Obw}9㐁%ʣ|,X +!" +n鞝zUpr+20R S`ҽ3UP) WƲG(괥)JR)JR)JR)JR)Jju{?qsJtjL'8EB`FJT$3֛IֻL]wZ!3 {sꪋ{+[kuxف*PJ''>un!{$e'EhM{<;67~<7P4MdJ潴SY"[b:\+o#7} n4ʹ2()꠨OpAǸu +&\!XSeD.lBTgF $xյg;xk~N8=zZ`^:Tֻ, w>ٕ9zc8=j F}9W}wjcr0Hțц B0A.3Y ȸF(ʹ'8J' 7 ?zV Ilj00cץ`/p|g~NT\Si"8|n+5+s'w E Sdqό?SD_ڜJ?z,_ܭr8ln3 +㛛#Xym/Dn]X}_HF;Aj&`zpw>U#L;-Ǵ cǖ:TzXAomʗ#wzxq֤>Z7_aqQ.-h$ynіP;ܲ5),:T/jm}OʭRk~w'gU4XԔ0 j׊T=l5q~|k772\ Avb#,qM9 jwaeãte9nxկf;" \*XvysSe0A띢;`d?Í=ủQimgicrYH+U|![F]8?fu=7qlJ=3{Wq[^5L-8mEsSɘrH?G+óɫn s?UDN{=0a2#޸Vѻ $w"ҠH7zv9q/Pq3Dz dc yTifQq/$ǂ$?RF[i"IԬߒ6HȬinl28 Pb^tGWf?H`dr8ϱA\o|bPMg#`wGǗ}ʚ$07XZ3C^Wh-dda *YKpXW{;v; I\X,e<|PHp2x+Wm@_ԡ9_+ܣhdfxlU׮'Ͽϖs.ʎٞ9| +--SpMlq|Q0My.ʬfCROuhSNKHdUpTL 3yLlcn3#"#`Vfj*^:_VR괥)JR)JR)JR)JR)JV1ƭyi%zIVsMتZZXmClPy\qy'LH,K1Mg5k1^Su,j98>=+Icx#*(m2bH'W%Nb@88g=>Bw5/.x@yɧZrsTuY@b;ʊ|?y >J2YNѐH ubvb oPxcR*T(>]a,۬AtY@{w$7lgVlI<8XX"LUsּⲆݷFNIj4ydZ%/ d}qK.H2F 6٤ Zws韏]>] f +y閱E0"q i6s&fѷbMwY HY*JA`5ϽFn9* 8UCRE `2kvUi9Sd9+u!j@N+Kx ` qӞȑ"X(ȯuuju\ۯ9{צk&KHfa$ޤ\sW¬ =x4QiI$瀠Obkvsm^MD-F̦V>j!bWvBȐ (ji&CBrS`|c_ě>hU[DUXk*q1}'E(y mܼ3?eLrJ c1^5 +cq98m/K\]u `K0@mx<8 {;  fg5V` `tT[(tc>5qbǹO%#ş__F̸* t'(=NOZ ;t i^=Y|YXqXzwsn၆0pjBSns.G@]X4ۣczG,تbjCȵ 2vӊ n(T dm99w{'Uc۝{k!.DKHRLV} fv +>?Iƴ[ 29W\`q0iLc15k9}:-J!,[X8 dLRLS֏UiJP괥)JR)JR)JR)JR)JkWkbsi~o^i*/Zƕh06M3 y⼮;I1 p$< +ۤ) *BH #,- RbfMw)udZΜ#$dCxAq9z{}Wi C[4<`;5pVnV$w#TCpd#,%A>Y*x` +t OTkI $ ,vTeWY\\G4~D+&FU xsX4p@Y\Ȩ$|ϝKZs=sOx[#P=ΟT|O%em?ukubhʫN8f<Ǘ_K{Ң3%ЂÀxl<ŴR^\FZWC>+Dk$s^Z[«?.o1ih{4&VglhIGT޺ԝ3zghysS5 f/_Ogq" +~yִ;;#c22qGT ͕w9˞H*,5^ø,n$f9|a9b̉X.iw$4J͆>Z}]/kQ9'}֝ii,90vg[8ؔNHq֪:TMŌj {t}ܫTG}[yq"bX@FB I'֣/[OGzC $VdUD w=ѱNT7)Ut d(I+Y{р+9cE^oA4*%ڠ.y>,u$n(Bal=xmF+B!c-)pY˴}2,]HeR +Wob21R]6 /8pF}Tp2O#U[ MRbQhG{[{Kx;Sĝ9:śNm5BP|fjVWE\P|kqjMRvHr| m-PrA<`RĀ䓁Q." H`4]SC>vkmd?;n,מz.B9` g1>9fX,bpc6n#=+عJnaHď;u!`B  9$ҵ&]cD0k?PM` A#;#r䎦lmn4DqY z2*Asg\DZW0e`[舘&TRǍb>:KɭUiJP괥)JR)JR)JR)JR)JVyvXjRiJ񊰊0UJաi4K:4nVR=#V= q +2rv>CVG5O<5oY;(?ge$B% +sWWiP/J9BiۊT*B*EЎyj)VʙȠ8*"LU@ JZ>ZʫUI5q[Z<ʽ 7w*6 8# mkK$xkj+*w Q/LH3W|Md]Z{ (:ad)mēN1=x:K +ĩWWV_:C9WH,6 bK1>8*84+:jsL +**zk-A"UiJP괥)JR)JR)JR)JR)JVwvXj[U5B*)qCFAUqCuSUӊU1U`UF*Pxj*UTb&4SW"ZTU f**O*B8RLUvPŘS@WylEFfXp=zB d$?;(XWh- ȩx;dqxUiJP괥)JR)JR)JR)JR)JVvoԊ@p)֩U5AJuOm*`R#5u֥BNH]X O@+(`ϕVjTf$$@:w*wnwۘav}xd7YG=PRm6KO& '=+(wyrEM9 Oe8TPu"7mfoXBv'5G<՝7,<8=3WU=*/UF#8D*b`Kf6 @bqU櫀|AxyI9Xm6=9=/PMV.YUn>w5^sҮ:qT< S&VQI}+ n)$(ci1Rsg[-k"@#ddU'Ϊ'5BG+E.@f8dzjogSs +d829ʮ|?]eIzMFy~<(ǫs +"2*`8kobYW}#ȃe9MT氵]Mt:3)tRWic8ɬU<ChѷΆmʂr8 SKlĪ[*p0`Uy@"V&|r#$(n&n!6c"I.OT٪@5p9bZ_wK FFGPUqYf*byO3^v0$kuA"S|]Ҕf'Ujuy"뒶JR괥)JR)JR)JR)JR)JkwilU +UO:* W_B.級ǻ`k\Tx+#G^Kwr`8έ٤ +!Bn!pO_I٤~]XJ9M3ϥCK}61#zO[Irwj Nޙ*)?LuCԌ$P (T TK]j^\ZA"$|k'\ҧH޶Ĩܫ#9"3F~}aFG*_ +8 +?*[޽aSS #ybJS1ƮLu;03Ywrڗ?eYG rϘlBׅa3,7f\42! +|0R@+Wė/9;@MlEf{^i5p3|'%5TEp;dV>yyqoz8!hAA+d5ηyk|`  zumooM61<[v>UG$vo2"6m63nt]#Hr 'TH )P"Oc\k7^,dn3E#8cr  d]5%C8"\]RyUBM'<!uqe=Hq) . }_o&uuM u s89+fl =6N(e;Ip>S-佸d`#c+^AAp5U#irMOP5M,ZU䐰WKRWpǧZI"[] +pk"`9ڻ uOg! ViRyqPֽ$څpؕ!P'b;Fby$2^J5q~mym'ٳ wT݆Rx:]ru,܂@zjx,bI%ڡ3מ[J6jܱ%6E,qp9n5S+9$gp]j,[ yf4CPjdWqBOfլO)c]9l +c缊iS"ĬwdI݌{RoЦdX},p^8yqJ.b1?j矅` w/W ]P F|u[{c{kC(>qk_ti֬m|k~|jQFPZWm/f+c)J괥)JR)JR)JR)JR)JVuέq<zfbn-VK{8]YV@3wOwS:Vh侰4ACE%}R9-%m'nAeǑ!AC'!GTU+Ki:FUhHbOVѮ淹hÈ\n{0A3s|=CXZMZwQ>Kcĥ AmU4Խte}C݀wnLՉ.b˙L;0pFjKN5 1j`|c3Zߍ#>x]֢mn#ٶĂw)_ zg5lV7iIxD{͸mb8yizE%x B|>@f~A!4Qcx>q|`bt-6` !6Hb07sAƱWh,㊉Ӯ48Z'\ǞGt"FFy6{gn3**La}D$~*Ӵ;khL 9;wmHl)Cm< XES5uW{d9@+nûmfR\( #Xz&ZCqn0e +ͻϜVdww08?5d΅dPA >‘ @0?z HJ"3W 1^p[%m$3UAJ>U\qUT⩊ +y_ҶZR괥)JR)JR)JR)JR)JV>>V^H(TRXZbGȐ1|e|cV6v҅!i=KIbzu54k!@[D`DŽ ~V>eqGmC~[s^q֥^I#HfTsU84R*UGLҫ<ОjiTsC*9tPU lb7`Aq^° U犨3`B3ALEPjQFDa;!UHp1e]BVW%B@< 8}kt!wwj¼~v9cL βݽ @rAğ2*CduU&SQI\5\qTS5BjVl< Iz*(괥)JR)JR)JR)JR)JkS+p*\1T"5k +PduuT֍UQVM6AJ]*5P(y⇭*bj)Tl☦*1W PaT +jMЩSU*+jj殪J(h*\9朞jZU15u*FjiLUVP +thj^ֶaU)@괥)JR)JR)JR)JR)Jk7Crz +j[n)T1T@^0jFz]T#5Mp)*fjFz.*B1UVS5yjP~Sʌ=)*h5Ub>8PBjUAF(jӀj0) P5CSTPxRp┡cWHb8*hj櫏_JPWy__[(Ҕ괥)JR)JR)JR)JR)JVt=^fAyb$R3y}&V^*UGUzբD?h_o۩H5JUA @Jǭ] +n =(N@ϕ +gJқBjxA P˚ rAiTȪ5\UCT SxU3:W;SL}GAA"*E-}vsӊff$JT9?e>>P#Up=**F~"$Oh^}G@}vBҬ#W c]AJfUiL{uP28U\vUOqXǡ ~QkfҔ괥)JR)JR)JR)JR)JV֋ezIGb,W'u{/.F쾖qH9KXG~܉+~O=?QGU[_?Sҧ;I?'U?QO~?QOWuU[יFr}s$U\{>z.?QZ/(+EQ~z#F?ʫ#F?|0?Q:GooTDiITD~W0?UC؝$ oe*1?Vt'Ͻw3Ja)=W\9jؽ {03UFisպک'̖'i^E'?QZOqv3IҿsoOf[z~t'꣱X@PA2Oҡ솖e:CO +Obts矺IUb4mXA%y]/: UMEBK4Y#bP }@tT`\N$Dvdv`Ꞁכּ[q +a=|Xێ=sUF?l1 @;=ǻ<zb4k)w؂rueqUȪ+z@I<ĂKs8B}KǏp0zVPu$FGV#dS#֙  OEA Rp+,i 3xQVr<@%sV?g%$6\>O?Dq^cQkvX!}Vd:E G 1kD:c >g VFu=^9YmUvP`1!L$]`1nO$zq최{{ŀ-Sh=k +S`bRhdd#.1M:u!鶶:mXup@Ow$`s^í,@[+f3o|V&'htU\\2# $xB/mG9j]w u;FCKŬI.@#1mima_g{خd(pMèj!'aegV$țdb[}bFI(sKf\%$tyoſ|- FLd',V+Cn{_$J,mm^׶MEޝnO5`7:^Z}Ӵ>Ĝyq',؁=+eγo,#S\2%p؍yWڎi+E%K/v绚DS}%y][ONͦX1+nDC`yΡ4*W";XybHHNC0k{eg2n 1ʜFpG3^ AeCT r 7w~zǡh|q4рם쮼QQ:#k\O}%' , dr"2pm2sg} 9YeJNeP<\I>WVKw/HTƪǨ[we-nlV VGGp +r +3*7ַ7vhqHi+ ZᶾQ˕34grxYq\Cv7J̲)ټnqy"Oطq+Ρe…'jw PV[eb + <׷mhX\ѬSċjD`w!Qd^1{O{oy>3󌞕姱5ޓfF1p6y?͕MMRH}DQ{`|k+TK[&JĀH n:Q^aiu[hGClDk{^V$k*a=Aҭ#Y;!v'.P°FǒrJ k]9fSFGpybYc\.Hlȳ"AdmM[WU~{5g̲e< +fk80WrpE`r2~KNVzx"hVdE vwFV@bLJ'>FZQ{TKhp3<`͑>Xf6apF'la  <@f'ŲB)BCvIkHG{kX`1Xëabz-Ŝ:ebv_E7'pm$9A^ ]e4&SY+Xac +>zYVa5Q_cr=-5% !%PP8dB~p`0yxipvw7YB3$QpfO& 0/t>lxZ֣r޳Z%2$@J_Z(u;=3#KĬ-׽kwGq.3 :EqHȩ=rbE$=>RiЪJ񀣙##yGNy[ZԵE(uܪ1&6A,O\y +Ԧi~tVŖy1_<{{ +Q;ԋ UiVk^ƒGPqzI*IMR6,Bv; +CSv9ﴶmin%qm։EiJB4:2I$8#ͥS}ITkW$VZ%KP1b +D,Y.F[8ϕfPKڤ{d2 bA$ٽMx@aTg4cT=ݶb^Hc%79 *b[;I.zq=JR괥)JR)JR)JR)JR)JU+ +=\P%ة\.yW:\Jo-2$`#jIFj ak* %gu F?Oi6(}ыH[OlˎmmFhfhA#<qԗw6_39F mBvU p JeP| +zyךn@;FŦHتH' +|G]|; +R0T;5o54I m##p#>u WfK!qJi;9GfGLHC5etkHdѓqך?eL ޾6oK^YɨFeJIs޹V'CʥfFLܤeNg#Q1vZ4y{ n$$Y}iH;*0P['{C}JR)JUҔ)JR)JR)JR괥)JR)JR)JR)JR)JRl]b4 tSoxd]7^ VIA(vB5гYXY:]]ZaY ψթKb=.M:uEaƼun-LFDRN QcEBDݹ\p޽9ֲ4qu9.b'p+FAV9`$eG$[Le urO^gqJUJnȌUx #+Q~OF%^YXq79''^Zf9`ީP\qq*JmJVG&AP!W,2?Ud^j3ŝ@0zq"Vxlm%y`A.j V"@y;+]Dԗ/K}<jҎRH+nӚ(IK3**!8;^dg,C qc&"Rخm[cU=HϿĝ2F¿Iُ + gNk.M.["cx~7 >Xt6{E +SłqǩcYXVsBI+]d;ɯ{}e$yq" р+{Bqo,ԔEFt}qYVm(#YFi Mo^xK pO2x|*iU +-bIDR#*; }u_与ٔ0.J}p-*kilӋy9uFܫGMxj}M+OPnM4{4js C<F= q}@i{LV0I3,,H,;XJ:W-OpSy@B*'3|$vZH +rՇ YEcEچaj1Ḓ u@̿H o^< +;\ARFuDmI`OHv^n e\H +x9 {{ZJwlʛcDLybNӀ=9moDݱ 0ΫMǴDܿxpq+w[v)%\#IT`'p;|ǯiƭ(<^E-$ {"f6uBTO,@Mj݊MJ%ga#Os4RS͌<*8Li˛xh#* y*_uej-yK :`TAtiiFXZ) =U*N'y>?q M{v$TC^=1c:TiHP=$IیzsS:v p\Q F3>?eK2pbanR (;-Y<IJT d\21h`~^y8e )e$7(bq=Ynّ rpA0kQ"{Oԓ}{dh!۶)sYhwWSpAS]Nk_T;cx*YW|@pzzl4sGɰ;IA'-\4ȡÖFE !@61yM"kXfԖE.7L#2 b08c|-!"G`kl.9YZZ]Zo఍2\Gҫ4nK&X 'sV8"&@sqd6gv1Y7Vc%n4y +_# dqyAʹ=3 A *NT#e[)e,=RT)JR)JR괥)JR)JR)JR)JR)JRYB(cbpfFWwɪ$SȠ&WUU*6OMLF@62m;_`Vfkqp bJUXd Q 3Y rg*C3tĶv^[ |K3b̑^E ,vKn|P<`Q1dL{e%,#1"Ŏ1R +p5!ؑ$ZM$omez稬~Ə?˥aݩesY1Vp$2npBn ㎵gfu$u+$P +6@tPi!xZVFF #9RGz] Y&܀* +'udzS~m#nq9vIOIy"]G]||.[˛{I"\7r9A˦jVV0LG) .NYϺy53VCG*]/&F+V7ePвHdMLo{"?r,ɇi#` +$d1^=Fէ ӽY 5U'vsק!kOf0]t3GJ}c=wO>uoj-;g43Mv-pr̼gzvgI-n$a@*Wl;KF+i de*gCΤ,VʡFe(1UnumzSh)Wry-*7e,N 1$YJ=0cΰ,%okVRggE;rTBףּڄ`!-tʠd$TGcDtz\[}u,nd󞣨k~HЯŔ݅^U2QOµIe@!Sb7. .Lq`nH S0}b;Mzt.ppVW"k!XہBx= hwusG9yqʌI>Tu56G٥mDH/ٻB#ahv08~&2d3Fg ffue`1ZZ4"$[r&y$WVQ׎+Cʨ@TNDQ0E4X&܅"@iҥy; J2c $i6!BYyc#zZO-Û~-`mz==RLM]]-l>a 7yW]b-$d(,[evr3`}*: {sIw,ăj?Gir+gkg1 &Fw/R)JR)JP괥)JR)JR)JR)JR)JR)JR j]Bd,,R)pYsBpq+2-~7`g|*cb(ʤ;7%IQڥqN6C%s1ǟH)JRRZRAc +cdRd#sWco@E>dO&iJR)JR)Q݉N숷61u>OT*UkT[Q ya(29pǿO;xWjFTz1^)JU)*ҨFiU)JR)JR)JR괥)JR)JR)JR)JR)JR+QMEyTPK7@yU@N%)b0?x ϚNۼ7qeF2rK99Y]r0p#jU ._ΰ$1_qXП03嚔)T3cBtlD$vgnﶲiJRn+{)!YR0s`3ֲAVV4G i!(Wp+*)JR2 #=>k`-у#FpU ̥*6^ȕUKP7tE ltySeB[LB@GfrdrceK>Gh*B[B=9ɓTeg{`72URU|+&Z,j]loԠKwtR($ + [iH8e9E*7W׭AHl2p* <^ t2Mh,m&dΥJ>*ݥ%xl\ncgk6d+($+]] `NFTΝr10sXp0i" +WjOկt#Ot)i vv$cg=Xbw,ӂ)MJ]!E5*  Cr}LŔvƱ=v@p|[R N("+Wv@ VZnoۛ%Wi!prH<FMR ND1$`Uđ#[h䍢$}sQPEe`B큃ܞ|b"22)v;)`AF|j4,E۾k9#ߴi}5PlxܦB +U c':TҭѮX2#cňb灟,VD7hI%`B'55B.m-#)(g=AgA> mZfF_,7ı9 {a$X~>\i]#9lU궐](*&$8V=vM*3:dEANVOl3^_MrմtH u]o y{!i W2:Ȁ,URXz*4vUQ vX۷cv<[vڑáwݤJׯu_{⳦dE)<2'!ǡia\]_2c  .T㧞>OQT2.'*[Rv{iac@˕zVw EvI Obc{ŕw1t?edvl^ 2$a\c7|V-i6/ $cI O!|95&uM^wnƥ6HFUJls^{}}d Ee8"E,MÞ99gh{MrrAFFy7m;1-jy# 1,#=8 yv7RGuy5a;Jlἲ0>5VRSzY+: JZ\Zw1uq =sVjw5 I+n4!<c=14Ǚh X1/ <zEqձj˧@A JxafbNPLsU:$9!"I PU# +I&ɺ4qL-Y8rbsV^|<O `} +}NJ)JP괥)JR)JR)JR)JR)JR*luxoq[/*ہ +F8uh($P\m}*H'-,V(ȍe=2q^TڃjQ[x9,Lug>qjbÿ1uT$"y)= #OZ;;HU-G>ʀ4KЛJTd 7*Weƶ+Z[}Pϻγnlmn)ǽMz)\u5%Ƨj+ؕI2Ȫd}՛bPElꁓj4Ult<SX]w[~*N0slQk+{lYL|O4$>WNv/ ;XGQY-=kΓI#YfY^fo4˛ZĪdfTn9<=Pz̯0+ؙtƬ qЎb6y a_.I HG]vA'toNFxX یf5<"q":s WhyS"NE0PT][%9,=jH¬GؘO{X8z;3pF2=j,^_]\ıST t,I$CBl U@xЏЕ/<`Wa_m2Os<6Tw"Ux_<*l=;La.fC T <j{5( "V=rA*v41s4"˝ݷiPNfXS#Y#G }Uޭ5'fָ X8r*m[%pD1. (j2X8'ζ$>cuwwc,miscd8zqQO3iXFI+H'h;`X#;qҤnu)q4Gݖoo[-6ZhSO{8^+OӴE.T.o%d$+3Dz;kbYm!G8aݕPpK{/ 4l4[[ oŒaBו&$V\#U^2s+*H#,yIJgn`A>TXc ]dxwJ콝n,"\) `w_nvԮT$~i 0ϝXtn6F\6abAVJgP<&ܥ}xqɵnS5a !$d8`^$Ŕs6C)8 jS%ԢkqmIQN|Ͷ1VEfȤƨѸl*ggTtRH# }j^ .R*."`xkZjHȒH?3⤠:ᕃ)G;d2J:<*ži;26]zg=9/u+m8#`jZ<,e ":ѵH{XFBnʬieik5 $2I^_Fۜ:歓S!iPys'y7殸E@Nf + 殎TC#~^Io$|KezgIcS"H] +޼xyvk[4)UFݬ7nr3ޠ `$ +;X6Y5J.WP庙%HH̜:jMUSҘtᶗ\m GJ]Hk0> qL+(NE2Lу)Ak޻$3#/PG dVB[Y{JwbIr g8u{l>Mvۓg8$( /|@n*ˍJEYFa’ Xzh-kidL.%8U]3Ay J;z(wNG#5woR1?oZwE wqZ:& RHryȯl|,k2g몭Nlg8ǧ5 (]PK?Y/ĦwCӮ +MEm]xv(M2j[G++y`RSTTgiQc-en. +HH>YϵtQ.3y +! uh?YsJdPmo'eGb+ Wҕs_[jvbg7<*F$>B%HTU$j,RTp>'1H-8ZE 4f +2z U[jYq 2:׭a^#\?_J^XVRwO_-Ӝu3P}R";Xd^F]f?xf&ۈb& A <^ϩDMo.Ucɨ[Etю6y>TC~^j24QOUufP5Q{ +@Ipbg)^R]CCȋןH%B +62gV4ڡ0^Er[{.ʏgky14Mz17>l#hџ0R~^ ّw xw >T1Ȍ`x9K٤i{L[ (ڜҽk&UdB0R~UA$ҤjHO@ ^ȳ(d` *R괥)JR)JR)JR)JR)JU j^D[{Fs42IƭOC:t{_o}h`r2FP~UҢF&pYNOC]+9-T H-Q|;3,sWhMneYa {S۾2(so`dr EmZ]p}z`m|5[ZcfTnh.SH9=+z%QP:E&Hy#wt1ҫv>Y Gbf$>U-Y"@ŁhArۚHI99+wN$A,6z@>Rk'~NjZD(g!Ǟ1YȷD)Ѵ ސ eO'ql|jQ5/U.ldXVo򻢓QC +R>DbvFF7im`8MAy:F6J3pkޢ{Yg?Wk*8?&-%4vnL>:-K,P MԕmܙHǾKKa/} BGwݡDd+݂['J<ֹ[ĺ̜Xz2C#[K7Jǽ,r.AK Pp|Kx0DٯAUqwgd.neti vN睧Xݜm prHۀ3&S, +gq瞼g8/M)1nmE:5uƓkv~-r +FA@?MsQY~qZA򉔖*= =}MFMy@݂G&=Zie2ĽD@b7uUVAd׮m,Ỻr$6v PALJqcvwF]A9$Oׁ-[ ̎MsHARzwRw.$ `pJJ>kq,kivvŀ67 4XfoAHܴw*.}pxZܑáV 7j$ڸ\$3ap5YGM* uc$+v{KHE1eeWQ)Fu\GMju2Ix'Ep'xqwv}3W7z62e&m$<ϊou{4rFnÑ]ǧXڊ'6#܇Ϡ9667PY6pF>}/ HeѣV=B5\*{Śk;bx'He<21sX֮ð' xT]x5V6->`F$ᾗZ)JP괥)JR)JR)JR)JR)JRHe0 ŋ6 *'$~lKaG1.F[eo,Gw0=rsz[iVaQL*9:U=VU*@=@p>5"qQy8WvEDavǦ:b;+X(UV_yz +6`Ћsot "=G8?XȢHQUP++4jr9=GAҬ-Dݍǒ $ydה,~P}YAA5|:EȐS0sʽm"AKOēO F3 r<N-kH(=HUy_°%]Ge ׽6ED€:ҭt%p<#t+;)Q]r)Xi6ВV>J,NA$>dZ p*ޣ 6=G>@bV,FUI9+JEI 蜐8`AyKK(lc@dz|ɬht %$ +1aԪԪO^]Om*rU8e <՗ZoX}1܋ +LxcW#E˹F7S^ZjeMK&w#}T-4fc-o(tC1W9UK=0M |sFu(VU8PNH21X6|Xϯ>#95Iti%sN8ےN<ȫWz3F*Y4[9f[ZD<ОU[w- ˸Fzi@+J*Wx5sY^$q:GFUqЁ#ULXcRdu &[QG9O#2IOZӄ)o#Tǀ緥g`(pXWSw6Fw/aрO*KӁ3dYt+ +G]d; !IW=J|'9]趗;Qvdp=7! vjF6ܯrzO99랾uc[V,kQ+&1\f$rzΤbP0@8}_e0wxv6/=u>jF8Dwmgn|q^Eԝ찣1Frpq4,ww)v2rI8N+!=*+~Khu[ +pcwg }u|F(Fdpe<犓t[9RV>_.9ߎkh6M'y`2I䖌O 4;$7 + g==uif\ +.}!Ddh +cVT䝡3[I&;' +O\d82_kQIofЗܸ;1TeM qF$ԖI'5H4Kh8Qbl0ÞoNj:EXK ,pkX8 :WR)JR lT ꀱ + 7 +*o5K}=f*f"xXǢ>Y59Ҕ3m!+F3$C0vȥ+yG8UpsV] +O GPUB=kڕoy E}Qm:B+ڕL⬞xid`Y(d})sVPFAץ)JRx[^Cy_9SzRխbM JqZ̬{ش̳6=I$(IVfX2d=A AeR+;D2J:<'pȪHږ=$xkN`a۾,˜2 0`tWv<6A8-PMy^miXٱVpN:e*eXTA$dTtE6 VR JRd$HUT'$;X::VS )TU)JR괥)JR)JR)JR)JR)JUfm,;t+wx9U5K[HR0c!R6#Ϻow=l_q8%OM۲=aJ&WI0~"3ӭ].y-|wsLf"ٍݻx>^=rWq]7H9s=O[J +[$"$.vGPԆ%C*C,6N@k]/4v!Cb%e̠ :Vc/k0 -DjHpANq8k6;xLXyGtwwyum.THG[joV>!@ȬZ{]NĆ;wwWn0r0s^ ŭΥum +ukL4SrP, d b'j亂{q[ 3q<[ ]ē!ʺ+/ 2?xjis\D(l(QmEı"u$1{2Tqk&Me编&`E2 (IH.-!x-A4nr<i9zS_Gom"Yc<ç]5;O +gYjv71(y`UhزS硨kC=尉(:EhnV+xc;șr*CiiT<6ss!(s:]|Ҥ4Kb qqP}m.ѧkt*I@Q5[ `6C;, 'ʦ.F,)wD$;UP'xu&t].f'{F$*AVWYlD)00F=}jˤhf{̱EgnY$ARV^-I FP 2FA=+F ̖{aw7c ܅ @܄ sM"7kSA>+|܌~B7A#Vv[-wVA`w[ mzUjIPCw c#2IXdu> {omİ)B2k 1T]a%5q=LRM*p@pv5Z\1Ȋ}C .&iIzH՗vðL'$qZ5k{k DcbYyWFH#z֥$ᕢvʻGOktè}v(C:dTsw3JP,{Yv2pF}zSMCh+#!mʇ$Y$R+&V7%VωoF9G*k\\Cg܏g`ܮ⋎ey=*'Zե!nmQ6F*Dl;UP8RPV(t|wp6HN|0Elf{K.}ŀ?kR:weoCgjJֵ.UxUdÁ}DgD fvn*rŸ0\",Y5K;y [ݓ8'k=jMٕ!A ے6+2T>fg4nbBѮ + y,n&},lڰ6$95Zvuױ1ČAЕ,T6}.)+)^7y!gU9$bw$e8 {,q>@(; +3UԗOa=QI0׻X 1uKu5 pm)؂?rhUefo=ێ8r>Fihn-ilϏ*v"8$5YçE|#fuǗ,Jȥ)JP괥)JR)JR)JR)JR)JU j7L"iknc(Wq0t*1?ج˛;ԴD-*["I.2*)m8IY!nMwR +o$#n۸xm)"yQkw:HO`!OUXhB"m'9=X5}Ώ}u,Ptdkd9\#Br5 5##ꬭb )MřA  >m(ێ$^ KpF3w5ٻK +60Tq:GBK B>jM@装,= +̠Đ8 guބ,}-V&gN='yAF/chbݬW* zdq}(Mde_#py$v]4ky%G;엖b!N+Uj 8gY#RAުG ϼT̐ ɷGLq:Vh5k^& "KwF>VksUx#YI0DI;ܛf1ND2dw{sw[Av"V OTe{k-s}M6fE*YXe0=^ Үo$ʮʻPF҉N@`Wvd{Y!I6g 1cc[Y_Ga۽ˉU~,׺5͞X[M1N O^ЖfF +qBĢqjD-dbF:ֱ6~ݙNǿXl ǟu.tɢfI6Lr$nr[]qB,ۓ$7mvzזkye[u4r%`9DׇWrmtҡfH#LY*08YBVxc J rIL4T$ݭh@hZMۃV`02 ?Uli+5$)Ee7pp@/$ԶXc YHP +I@<*1$ H3ޮHBy[kN,,,hKأ +dl.>"t W .٣*ͅ,1# XR]s8+6I +Lm9cj7bYHTGcu+Y m6 ԃa S#2:bϧ5 _O.n$vEa{ {vSWb#;w@(6GUs!~RL$^WQ)9` +.sy8}%[ +2fLtLy&{mT`DUXjyy7nsOw Y3n`' T<34mݳ+xWf癷<3Tp+>i.@$k;ycIVT(`kG8s:H+{= kXP:@iEFNzwNXRB:@ U}o%@%}:jnw$P·*30#bYfuP#VfbGOFN|Jx8m3ʒcV׽xwѤ̟ICU2&w0䁊I1gOw ^DMsWgPǠ$~Tf*:w}o7}T²wFDLJpN3jiR5'v +3Ezo]1Y^L GbrDr+kǗ8Q.b,Xg 0'W)JR)JR)JR)JP괥)JR)JR)JR)JR)JR٬k\d4s*=ϝJima:!n' +NNqd(BÙ9~[F>y#vzyg}x߶i{}qXYEY;@(^ol2Y[L籋})5#>uuB{EUnwGUfntH]B F׽IU>U\,=Ŝ&n@H9fP;Q1lUGW )*bn<& 4vrsU*f̠J9*VFao>ݹmTr9ǖj06,`AN`l`djֵ/- +[Jzd,͐Ohe[ + wtȚ6[<\Ϧ2;:L޺ɫm-w)nO ltSXKʂꈬYUT +T+6 +ץ\DA4;"4@υ%gԟ*ȱ/}apF.@dirʸ.8sQ}Cn5uTz .QI]g"J%ms6Ytj+I2[_*p0~~i.qq&] AΤe ơAӮEʼ>ٵ](XLВ^d|ghZ&{Q9|aXJ2NƲGM&b"(QʂX*wZhV-QT <7K/,sn$đH |*gQ+{iN',QH#V8(y費tu +?n:k]O^|,W-ʾ0' SgXX))2';_,xϭLY];&haF-ÿAHE[Jz|7׎g;G_ +A'zbDkiIPm+,@HOl[Gsh'WQ82n68A?_5!':)K7 Fp@ŋ{[-to0Vnyǻ5[X{W ]TH0IǕbڴlql)Iq7R2A=|z]{E3ڥ휓M#H(q c dcʽl:rURuK;SxB ,Σcd[[9,&eh.5i "1dH $lcIjPZC-v P#'ʶSZ)h6--H7~*;Km]"%FF@%l 9-pZMۋZIl''m-;譍N <s|ꝱ 8@UDۅ@;uX.tBX 3+B>y3^S/kM%iHv6wgϥOvk+Uܥ ;W'`dT>qq'heD9@Bۈ۳M7 +dHշ>d9Uۖ `*ҭWDBx*1||FI9u3=R,!VTPnÁ Z$2~YYI>p1+A~լ`Ӯ:(Zu;ȹ;s[tK.k ̼hThpmLst}F6H+mY@Vg WK խnKEk;`dp@*NUJawv։uff# { ͦc +M +w %b)0 }V$21FzUԥ)JR)JR)JR(괥)JR)JR)JR)JR)JR̈́#dCQ xG"l6̒YOL}J򹶎'U YOBmEo*^Iw\ 8rNOq^iv,H_>ʨEﷀb6~i;vyj\+3Giᵆ֯ܯHVP8ԃsZA$XI*]v:H);1c"nݜIy ;1a-v410dC$R>W6rȒl^96e3Tv BEJ0Vev0x݁O&: .JƜ*f8Ud̼nF}~ 'x񽌯8 =:R糖Wioض5$V_V sI?m4`dG`CQ_}X{-w۬Ec;rT`I$9\v^-LpclY^ܥc+ p< aPsKU,V4##*a )-}LjI%Y6z 峞ry󪾇m$Dc#gwN:U~fV{!,C0 +yp zYކG 449 '=}p=+&;T::e# Twbı16w{rcJH:U3*LƻP p35CAr:GCeXr8UR9gv.Z[Fqlb.*r<$h{=jZb;Y$q\dpjC7E*NJnB2Wխͱ\;$-~yݜf^h.y`}+m+H1KV:-7R^ Yk1v>(\f/KKg$pqV^C@V4U,[,I/u( 2J:zV,6rheYrK2MV@~M n$7'd:4WwE!YmÐ~8Ͼ55 +0 2WYE"Gm;Ns׬:-Q]Ox0@RO^qh')UY$gTJdՐvjƪwQ) T!Od4{{`Fl^3eҔ)JR)JR)JR괥)JR)JR)JR)JR)JR)JRP0$FGZPj)JR)VOSjj)JR)JR)JR)JR)JR)JR)JR)JR)JP괥)JR)JR)JR)JR)JR*?Xӆ廾Z@PNӌd:ֵ]\cV)2ƹܠ=3R-5[vpYdV?f5ɴ[©|c'M]Yȑ0fLDR@ FIoca9NA2At5MNحfnmFxWk}:+(u"]mUe9f/Ќ +!BVHYPp\zuT^|CД<_wϝ; merYw׃,*,*J r XȻݳȏ +ǩ8GhkqWrpݹ91J١s s8{aHĆcjmN \{Ob^XњGȑ#c* sסdbZ {Ac̒xh-%B˽]y3) +Ou,XPk6Oqd[Hp<0FN@sVŮOlQxݶb Ln c-^G (F u)[v<&mr*eeτ3?j-cV--2"FysZIx(vS1>*+C}iBs*vI"Q[=C\n L` !< +U +$2W`AkFmdS)-$qW +|]oc wl7@p3~An.cbIР[~HhX` +6Nȏ|g0895*7=NYD[FjJ bRLʀM ' p|]۹au 3u{2[I#URYrI5i[^ ކ@L}oc>gqge{Y^vo= +`+TA`]c]_hȍϝY5;-.roM6H銐ՠDAi${U7r!] TH,Ñ֣1G v}SRw60wHih8,BuYcH%-"s8~q:ȴ~rY[ E)JR괥)JR)JR)JR)JR)JR*_U:\qH0u(3IfgP;6|Z5v:$ب' Lr`HJ\{ 71R@Qd,@';ןJ{yeI0fʕf(P(#Z;[ydIVnqiŒUyeE$W .}8wVy+_M&̿srʤʮXPW61g8ֵ D4&s(F]/d֯w5`xR=ȧ<5mgڭ"3ǝzY9iMv*8gs⯳IyRG#<(UQ6e4RG"ܬ@lWpgYnHГ Ϡ=jd~9$ +w29<+vԒnU@zg Gv +$85iogs 3΅NTãn]ܼvpbx: v'cܜt"5,$h1ca@7 g#ekvcbH0ˀp=^+"tnN(3|C*RA3$6jK]l8SU.o>Hls +FG#qxۺSZ^+D2%NA 쥴:g- jcq#*77кV^OycQ-x\\k# f QYwh6U;Ы!Å +&sI:}^jVoTQ/>gNoV',Y$OnmfXC6"wE/8g\y3 H#T9bH^B3VK:T0!*:cX:}̐Wq( F!Y0d"{2U݈`%wrf s㊙UAe# QNys׎GĻP?Q-F. +?W}k[$dR0,>/\ 0jŷT U +: 21xtU^aVT/O*+xMU +9 +!T 8RH#ʤHfbV$F@#>C(`c`WEqb]٘f,NW2CT1)PzT6۵qFӑ>YaIP=>V4xGoG~P/@?Vo EPI$z*P(+[8gey#Fe9R#F9e)^8EcԀ1rN-JKH,QK +o5xT8A, OOgywc`nz d`nmG/-M +W @#NK*(U@%'R(e=C4B +>T8Td( +2z +Hmƈ n;T.OxRB*H#ҭvJ}5Vvx +ӊQ$**})JR괥)JR)JR)JR)JR)JRI p&gV :H';Xu {B^RG@ +b D\Ǹng3J:xD F AQRGѤ:J`H$ddTx^^E$6ԍK1 +Mu{xn-#q9 x_ǼT5upI3B#1 + 68ue[$˂.3<XڍZ]3gdkڥrk):0ypyfGvE`Jp^)Q\$nVy U#=gj7SF"AM44 ͓ǘy̴c+&Vk"<{Wk!¢31dl#'IHK(yOVT] q 1gDٕR%jRJHuxXwmYdR(O_,eR5ľ#+97QUuCȬǿM&8D8'^:v2Io$-mllJ[0,G# ׆C$me!Jľ ӞgDRb k.bLU`J223ak q{=v9,k+ S +ϥ)JR)JR)XjpuI|X r19TYDqrv4e8\rTO{;zQ!` 6 TIV Xghc'y"p8H']:Of{w1UU ny{WWm܁r#y3^=յxvc2L&TfPrpĎ=ז3)&GY^=+/ gR8=GHںhVS]7asI!TgM`jW%A*4aY%_|Kne&9s܃x{|kb$iȱE''-}]-ȸ&be#1smm*ϕk}i6r_?6"nmޗ2Ŷ\1>XǭYm;k]lt綃.}fΨdČR1kN٤ [J7{{H# <c]q=IɄTmRFAfAky#ı w9 8VS9$ko^]\*;w, +V"Ag$$׶{{Rt5xuaCAτg#5|ڜ5/g6BBLU`dEroi@@qm&ԑ[l2<'Υ MB5wDѱw!c(B9QGd P$pۻ9Ww{;q-C/m1Q%E̱]ԕҽnU'E5l&D(ȧl c瑢S\\^Y`6Y:9uUuB}:K#³^E RNA`zukiёI7.I7g9dIm(]ӕ9w^>3܂|^r;*7g{\+w9]bI0ry>q\e+ovnU]F;sgj{o)udaLLQ> +95+-Ea2/x!B|Rl?s+HԦI5lGy;fci$k7 #'℺A#6wp >S& +0NVi7 p +ۜ|^MI*{ ׻v㯕eXk&&ar cceDžzf{[(ܙ0HTE36;9_pI 2mƹeec~ V%vWn[U`#In+P tnRHIT,HTD;В[sڋo.(e.⇻7.1[5i~/lab#SrkWfcʶJVbn ݷ8 tgj:DI&\)8/xIv8#5>}geaVKehFг>-9ǝIɨ]ZZJOm!˦3s,9Y:$7K42BV* $ו=gTp&]NnЁbƩsL8 ̥piuO*յkX$I<,ʹV /vH8>ʙ57%ԇd +ْ*k:D@r(l 'ӚLկBErĩS"ȴԮgxЕ]vq$t9'5W2LTƄf MU٭wjgx zWaIuw)@괥)JR)JR)JR)JR)JR5 &ldڛw H*7n's5OeۋxI` +h_(ܙR"7wv$BD LnHk6F&%Ol򓼐%:F8qJ[HV6r%$bTUr׳鋋x} K!ƮՠFݼ*X01<wMh\2Rdr9'*ȱ-+g&5U2f l $ մ9me$, r{F꺭pw',DHbuaT9^ʟKjSFńOH`Ӑz +մ_Odj$ҮԴBkwB7zLbANyw.tus~Z!x~|xi%_6Bz[fm䉥M]A r+}m^ `/uD3܎w'9Y6ɩыXYp6)<|^ͼvsAoд;߹m.#YޞڵŪHc2T7zuCg.-ͣiD;1|#bD +C8^ xAlu8>ET:O!˅]؃~UFA8UO@?N.S=mُ39PrHzZNgmb["'qztDf%Osqq$ 63}.Xziik{ܬ"HC;40]`$y'{}"{;o3M$J+2@8#5f\пurdPO\?m^fE-s!N b-E)W9عmx>FqYksxg݀Iu6Sܹg&\n1 TqFmVBc +K;0|I g1Wz]=셢qs#Jƥb\NNV eSNYA"nu$x p}5f/}Ȏ5 +@HɒH*8yXZ.s"ms1 Ƿ̷1jP_f; f܇j%AK"X7ȄBP .y8ǭ{ɥܾqA$!rʹF-`WWIӮ/.ȹN(c@rs¯״6(9byّ 3Ե]nHYFzWSFEFIpbP]pj.N}sOj8 : yе KXKfBߔ-6X->WMo={Kq„;NW9y-eg]:9dA%h%L10e 皗]BY\U3'ʸg6kK^KmwUءaeq yCOyy hE8ܺ 助'VM :64J<})Lfe/4Bav7%œۀl$}cJ5:{vxIr f5R + G$SvSCŰn<]j,so83*B!6=R{b+$ X0[=fdӯ&xyWBīHTœsGy kkuW8PwLPK$!ystVmݑg1* 233H@鵔y'ʱ 6N1i+0Q$@~8m/nVbnj0 cxM{130񈻥q|'eƏf- lD01wМT)JR괥)JR)JR)JR)JR)JR)JR)JRyZR)XmnbY98>ꥎixR=v ǩAZR)JUēF2 ЃiX6${-B@8VU)JR)JR)JR)JR)JR)Xɧ3N, 韷쬚R)JR)J괥)JR)JR)JR)JR)JR[{7%V 5M},4m117t.A}i4;9]˝>u{d7ee^y|JVӊw6vHjpx}{]k6i ă(4Tr{]}z$+"|ȫtuwlVvUw$WU~m<}Of* qS4)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JReuX;dkwnƪqRLi:yn a#zףݭ+$Rݴdq羽G wUΣg3A=}Z:Z[[slUD'A9 sk_oM !.FeH psB#W6)MwM q':1fG *L7sC3r8'DqJ@ .k4g6 1|zn#>u vW''j8Zt濍"hdY"c0 S5*4.qѕXz^Alj3@Q +KHep* &[IsWbiȻ6xUim`h +2szVLzEA0fql L1GCz~:FUF$RE `5gR%I +r}MbRw^Nb 3x'%gU @_JR)JR)JR)JR)JR)JR)JR)JR)JR(괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRRo=izxTW}W}")S3MM}=GT}}1 P}3LҜgΙ3LnTާ}9VJR3LҫJR괥)JR)JRXW?0 +q$"fnp)VAy`WD[$FgUVr <ձv3#ȗ0H(< xZ{A3yֽ5;[xیu|gvo({R0Nf 3l5[MOwLm[X>#vly⌑EBG+u= w$4dYrJw`I'RMb|aS׬mx8Y y[kv7Y~gVS ` 'sϥ)JyhVW4іw2b{d*Rz+~u]~~5S F~!UOY}TOُڿ~W+L}OҠmrY?J4;P_Ҫ_Ҡ?#A/~\M}&|n&>Hs'.UN˕QC7bM%Eg:p!nss>1)U\MAٛ'E^\CZF4{b~ /UNlo:6oӪ"O:-KO-e O\f \*< O\L2'.U'En1?׼Q(q]WVH#XJbҫJ܇*V?JK /J?t]7~Ss *ϒ-*#[˔1?r=N4ks7bӫF1?էI Ot"y~?DߧT})s$ d|3T~I*Э_Ҫoo:`S̓&uE-s$ቿN1?X~oߧO ?yN&:hvE~oߧT#yUң<~ҬoՈ fl~tpy$U: /S+t;O:y<ߧFѭĉ˕O!= ቿN, _ߧC<ߧU +_:?17hV47U~DSUkh֫!^IWǡFrHIUO,%:|eͿ 7~WO:6{'P{'bӪ|i/~>@ OuC_oߧAQ7boӧ6ߥU:s_\]Wm'O/TgovXW{wcsqj^괥)JR)JR/y8+4ndTHh-t0ĀmpE pg:{?ceX%W(3 +%py]Aұ3''cdkY{9m iT ud}dȐ>M>6K&4ї+u#(Xr ϩ=/N\GF` l #=jNݦ. "Ln"A=~ڿ)aˈ.C #lc+CWY s"[0̭u0I$>fU+I,c q,3Pڽ:ik W >njJ 9.Z4\˄lc@.u{{S}eT; \}eƽokp-Ye2ܡc-gHXeZ/Hq=r:cD]Ż num6-_bFF1׎}1VCA#HZ670qzT]ZoBQx Ď_\w3:ΎA*R`#Au3Gْ$\ ޽GM.PSp +A8=1YA{ d +p=k}Vh@ 0q^:te׺ܥ0G#ϐ=kJ\7w%IPIZin5\mHe##=6-6#q$O'kô/ +ZD#%A yDagHK+a*rjp05RBq1%bTLq0!XGLvI4_gLuw DIuxDK} RcVO>,@w]Pnm|}>WD&/ӻs>UO `Pd +FA +>kvdc=s:q,CjdQ!t{l`pM6GxŠe'ybmׁYFfkvVWX@ۜgwNo.ϤG؎Fy%ƥ3{:; vз|[IRn#Fr9.0120<ukwh\9rN+buk͙3 @ +@UuUyxӽr96@$.uX,Ci*HjQ 1B0N@``ʼ[I|nÌA_& +G $Mxp0zrj # T_N<(iQ!Xݕv.260P98`v )r8/Zuf +IcF:bakIUa}j*vzT=Քd{;ݒc{O'x@ʦy+.RdWSG ЃWmɬ^ůX!ZXᶝ#zqPڶmGJ2ԃ0G,"& %w!8ϞyV'g5K{]& +[[F+Y2Iv(z<053lV#р^۴G d +>9  XuB;{~!nt*dkvZL_iiٜ<==uoS1An>h<;؎Ws T#V A8,ǢRkR5ʼx܌6 ZƇӬt\H:9\g^V*KchפڬPܥ ]Բ '`I%v\|s duix 3 AeLq98{pAeJ L.`L{f iVR:BGǕF>w; qϿʯ^B [eʯyY}*vV2""U ]]{qlܑ㚺9:Hu3ge`iҬF0V` HʥDަh +, H³-<-;6)Ǚ#8ldX-`I .n uʰm"P!KugD y9*e)s Tads'~vYYݫ8c1; ZM?xL<IB扵A)"(gNGzC7i ʚ-{Q9f$:=k3|)[.ӝT1  BeW̃ +Loeoޒf+q-8kZ9tp(A۴!ʦR?Dg5OkV-ֱ7ER| -n0m{Laٷo\x9Z6 ̊$C `{~+hB!1<# ߏZK-nS$ZF=rޕ@Nכ#r}Y^Z=37ʜtr{?vuMH1#nwg?ϓv*\IٛgR cg,-7s4n3F'#Gխ "fK*bUBqOSBX 8%6 錎ANH`qoyqҦ'/?ĩR괥)JR)JR)JR)JR)JUA>z>Ӻ'ww4ɓϕeM\q$(>?z)U@l*Gv6m2]InvbX;[2)erGb %d`3[pFH9\>GTmE +=~*[ETPORt)gX'ν1Vʥ\Py*.p0>c1t=nUHXy$}lPn6ƊUQ$N"`Q8iZ<YJ  +<<ǝIVJ0z '2)㧕^( +6i%ETf8Md[wxgD*8>{#V߱wg93^joƻF7Ks\g8e ?_ݡ]F1`cHvơG*'5MWLqU\g?DuD#TOgA'duFy)m[2W<1dR8GH0UQTs~EA5@f*=;F߲2\00>s[DqS[xshϧZ[yEA3嚹-bH10G*EVe?mQl@Ɗ@<"H@ +H(M$ݯ#Yp,#@H \sUA  8P3\U'[Gs=6.>bbfX|[@}_NEX!2nOz##Ԥ% PUF1}"m-*3U{h;ԀMR{HnFWmJr6I8݊"ݿbhݞZE#dR@ jXq +^llHh/Z +8G"qU0FWf`c쫚a@"XƧ2Wxb*0y'~-WINۊ.}p3Nq@tQ08GTxJi^yV< *vDk]_>mn$c'j3TX#NU>Q㔂ȤKn]Cc@8j#(!τs_)"(ԯ~ %X=JR괥)JRAˡ=$5-'l`>A?+GjcS1$HlGך? 7guiwwL_z;+у5ZMxDV*"Fݐ͜dln8]K7!@I\o r0k/.,!|w =6BO֢mEssmq -ΒF0rSAV6Z[]pxѵ59.a٭䷑U!p`XiKN6ם@b*۞]Za.5x|8 KRcϑ^ݼHWhl>71•՗IfHDsn!ATkujۣq <kqvv[FasNs5j6p]e635ϸQݘ7~%v=a4ۋViX2a|+}a꺭lWO4'<kzKs "2Tb*2|?{K }  GW``3X:OlԵIt,2D r01ʍ9sRZ.wveTH6H8 'V/hM7g-ܶeܬ@+NJYkwPI#1dqWE).a`,$o&Q`됬 ezV6kz/m,+ϲ_ *xWOgvwֽCdxdãzzy1JmOEPqTTTU &MTi4l"|%($8985L5q?:UV5cDk,, lar+=yXT'T75MLwU5v8KjjAT&VUsT-BA@jT'qU'jWfj]Jfif +RJRfչڨ悫AUUE PAzToԩR괥)JRqMߪ gcrOiOjÏP)v,w7f)#vi%5 {o'%U =>Ѥ0_"oPVZ7d׮|h඼t\#wMZcfP=bBE/7{qutsTa#'JLGAGK6Kv{kӢ K[:*cs\c5U{?! ?+Zg7tmG(T$n8>{#eee-aF_[uj:\, IFSN +fQ^h2CZ6dcυ#ԏW8&[*? +5o:DtV_.dVWXab>\/BʟӦNjf2 XBÐJl:_5Uzxjމ#H[6Uc*T|qyt֯jq(4W{wǯZa$ Ih-UeoHf88ҳu}V|gx9 c|ktY(ʑZ~I 8o-aԝ<ziۥ$VUxduml'3שfjV+w<JeB:b:wfJ<$:ԃ_{l}⩶FJ`uW6p@ڱ_*Kyep2E:k5fwkY`s^k3\dyn@SAt޾£zמ.wH,qqۅ|z(FG2 BcDrsR֩&ppq{Zhm&䏾duIɨ6 d;5vv},FZ%ʒʼn8>.uisi! 2zWٻ}J2IX\P 2#~07gr˱}7L +Swq95=ZK{)De 7H 20} k_cot4qHWVR4m٧&FUЪ5鳛c3n=XvH}Ex^v3[{ۦymFb*vqOvdf壈%QT͒*{6lm*2 ce +ߣA3nH8/8yd,Krfi1yTuc$F +ݼϋudvvZtR2XԒs${ LlT; Ubcim[1,j0B.}SL-A#mX-Ovj^U\` $yN^ϣw3ۥdoV?WîYg7ѕ0HPGj G@qbNYXm%J"Sw0'l?yo#EE0baێ2ȍ$wg#_\4`TKkFCh;ᵼuySA@GdGƶ[!+Nї2L5cڠAE2v>ugL++!n7*ӯEf* nF3z{l X ۱pn=G=7K={LE0HA;y{>|-"*F <$xʺ^E"BοG_(bDֽu]-`@ţ,2# =+.MҔD ;ر 1YfUjUvm61MLSmWhmMM1Ti1MP\Pm6@mM]ME66@Snj***E +mmmvvmP**UUئ)P.*LSrTUݒ7KER괥)JR)JR8uа5N*ŝYOW4H8{w zb|hՃt8w>U=)S5ozdnqq늶;8GV>^,cs8!w #&g2NU\r 8ʰaiU>qTEzRdDUiE1\~PԎVO5B٥ r(84$ch9 PE?X(N:fiU=QvsVJ`U\ 5LzUsNUVLU* +8@j&PPPG5LUs5]LsU*UCLsT3WuLU3JfiT&ijsTJfMS1UU5weR괥)JR)JVQ5?4K,$o, ,={'H쥌6q$2IK+;,?*^yq,PmV)W }+[윓_]iۘDpc%'סӮB^$#u)dgp~R}CE,vp}v:CGYkg*.甀NFp n}ƀpD7Wr@⥥gFGAm=?ICr`_hE}cvT1h6 n38ǝb[iLc@93FˀY3jj]/JwQqDIIC&9+kۢiDewuǺ +-1.Ex5v~JVEyLcWPø} HeTRޕF* "'=²4h/ZX 6qmIdvKFӟRܡ +uRÜ*]Ļ͋:Q1SȯN:}fZѩc#3^h}v.ќd9/}n%MiGe&@*VmV"A/ V*GVj3WPXdUWAW7bUVh9)FPU2E43L \*֠yҩ֋֫TVjLUiCV\RTRpZR*QJt,+_ڸR괥)JR)JV۾Ϳj4ַȎ$<@#i>YT;Oo +zd#D +0wnj3:%ֱw]F AX#aM{/ 5)\jwD:`ZQ[lxo {} z^RVR(cn ێXyz;YtiW6Jb>siT(aMrֶ^wW Cq ,@% }U74n#*IOJ罜X$ss 0ܺH[cpvZ0[ElbEA}mn s +;j؝N8_Ji%ģ\ [;BA"DRvQLϲ9  +G_~k/:y4A6 c9f9iVϻ'HZM兲FcQ ۉ'k?Guh˜C(VHs ݏno%%9L"$@5GOdfơg#Uzf[KRѦv. Dd2jm4 "I8df,I VU֯ˮO[!`%ae +Tn1KU HU1UBi*њ*:PսM\W*ݵP)c@jS+V5\UG4 +TV[jQQj 61CS6veSm]BLMLm<ЌcUU>ﶃWM]LӭT PRSSZZ*f⩊*U)AJ:R;.k=sViJP괥)JR)JR)JR)JR)JU i RqFWjHfէTU97Z4 _( \ P1jfTTUiTTf+ Lw*氵x{daPHߧygh,nckdH@$RtUTU#5iPUiCT1U⩚j95]nԫs]zKkum%H-Q ,V# R|NYϑNՑvv^S۟wC}oN*pw6FqI +0=*jiWAWR=3it(jUjR҂CTS5uZET +fwej?VJR괥)JR)JR)JR)JR)JR qCR'g'5JU4j +UES)J5\*5\К0(jV^W3hDf?A5 ؘQHJff$rK9:Jf5v@vۑdx.obcDO{ŀ$cvLFAVCʒ3[#^٬mCQK9!R +G(aЀG*U)JZd澽)r0yl sSzPT>UiXRU'j#@?z\_Gm Wh mDIhfU,I}8cx$])ƾsfb~=}9*mVkb"a qBA.@w 2=zνhm-< d.$$J NNB=H;Yܒ;.܂I~QxL8K~/bcK rP^MExʎqҥ5 NK4;v88tBABE||*'qYMhV'&܏nQ]s~e^%,cPOXNMbjׂld2ӮӎU-TB}&'ʴ}WQJ#O{Y"䓀\pk+SMX(vS+>h8q|͝<ϐ?W#ѱ >FMKl< ]~_R*)$J׵{Bx%"Ƹw*@TIc =q+ zyUk['Ϳi u晦j f݊3LК5Z1UUAfLUi5p8PTqC5٣$~I*n괥)JR)JR)JR)JR)JR~*(MPPU <*ޔTlUSu n qTWfsU'3Vnj{^}}:Ǩ;=neUA4e"{dzj@sR9τϪNOg v;C@9?Uyhv[oS˜|m 994ϵj603$J/[UPhxiv W/ HYxw:`.pX B׻]AD€y8G'U-0+H.e'!^  WT k_mQʉ$zd=jU9]Tk:EQf:olQ UKR A AW$Wgmd$,6KgJ1<#8UxT#:qMX]_1 LqS\ߩI͒rw-LJ[ztRzZU*S8yjT(h++S<8'4p./)ko iH*bh*/!]z0@ɩYYBT@q zT*JU«LS5QJR*JbLP +*UiTT4*W_c{YT)J괥)JR)JR)JR)JR)JU i: +uw#J*)sT5P3LUjZP5P#U©LSC@){hWl1Ѐ~5z(cVhK_ޞ@k0 +3LUU@LR U"ZQV +N6=?]#aP@  +m.%`7c`bbB0+ +J +bU@T*i +Pt<*)JRPUhM S94 WvSbT)J괥)JR)JR)JR)JR)JR??zMTSO:)SCLsJj)Uz8EW*CTWfTUjJb*jbJ*4T +&5ZbQVsT(⇥ `P(i +sU'mQ|jUVrO®ZRJUGZUTqT5NN/~%OҔ괥)JR)JR)JR)JR)JU izsw/3i-]F"ҕB 0iAJUEP$U*S⫚iUiջqUWc9hjњ4b3TS1LS4Pij5ZW5p UMPb#90*7*vpj*!;SnqW!4@c&ff 0j)b(s5wevS(괥)JR)JR)JR)JR)JU hFgg[9 3Yqu ?XtqݠӺ\')]ޜ"wΨQΌ=ThYj>?/ikj|aj/j?B}_>ڡ?~1?TZpG?TznqQ~;CE_S 8.p״]E]Ciߺ=W<PS?\?§TQ?=T6>W0 +WoOOlt*~zʶ]M?'|b/+0Ⱥh:1sȿUL_''·V'LXDAY1sEVo[O=W+C?+O=PV=m?߯k?|SSѪZ?߯窍Vs_z~>CZ2|ku[5E^=[ՎeC*~z?§luC*~zkV?a?=>Y~DiլX+Yu~5>_OK~YL_TjïGFbFM`{GM\ڽ\FztpzuC3sȣňY u XNOltj>VsOniOj^ T~ȏE״1b|c>\5?ϊsN}?u_C ?=Wp +-OUfT?§?a?=PgbS}~T숿_A7E_H/ԭGx_Yeo9GOJiJP괥)JR)JR)JR)JR)JU+KPR'[1&Z0&05O-?Ej|i/Pivc?U/EcU3Ocj=/8PYS"Wbhz?5=/_ފ{,?l?Sf$j[I15S->_OOxm_T.<_Vg^/U>JiH?#$,?'|cS[ܰt;)t=G#i?ފ|i?ފv#j|i//~IkEx_U&4__ ?5S{/G?#~懦>=:S{۽iQt4xF)JRoY{*Xndq)JR)JR[$TI:G"ʡ b)^sGl7H8>5tr,H A Ђ*8Ҕ)T V)JU:V6??={v Dp V jRx8."]:5!+֔)JRN*ئI`8 qWҔ(괥)JR)JR)JR)JR)JR^*B&xAMc+Bxf cWWj4q\ H~O­n{=\]Z \# ׿K{MB$ܗHd]FܪA_{]:%ې&w!Xֱ.Fu]Kh$9g +2sqcy'Lk+ ɭ%#@F\3<TT 2U:5hc֐6/ѽֽ$Ml [һbD%;-IuohdD;$d`2 e\NlNXvdWI;'hJӵK{. },d%`aA8>'hf턖+$]۶ ++8+&V{n&ٕJ6ܞ-8 n\]X Elr72BC2\0=H'Ү.]WG" +% JА {W% +[wrG$L~)t7N8P*We[pՑ(һJF@@ 9lgxEX.e"NI9Ӛdr@6b7tHѰ;=A*sǺt4K+Wk Ze[6|Q":Tr"q[-FDQ*V%剖eu@F#fJyՃ[i= [Q|HH!9$gʥQk^>XvP ` t! +:CfFdEm͐q|b"[E-$E۸20C^*{F[$ݣpv]<O +/5kf1D("ERFIl{1I"4os|(Jqx[vg]AH7*3.KdT7H&[QLJr}kIc63(U#׼[]Cܴ"$+m808NbK;dtܛt2Nk=m.(/-Nϛc'=+6ᮢ4O%"G8W+JK-7YՄ֥EheF#lj+{kV @$qVyuHūoKVztVx9|+EkI k"G"9JVFp}s\s=oKc )T#ͦ.$VG\햟W+2o@G;A98;1kqa[\#pvRCZީ6isd7K( N kԡMRG$;JI8u8#5m5֨ڜbAD߽xu1ۻ1b;KCkd"xUP17!_?ZMK<ƢY6byO_xf ;˩tH8I 2 #1[G#vO `q^m"ԟM+~--U$v^+{wd@QxNل= tNFp39ݫiZtVWHR=x8+ϲZ{Do$07 +9[k7Z3wRO;stkyuI^؁q&x#XpQbYio4 + eevv`EX[U$a0C<IR%.^[i۲ֈf)܄aaN*_Kvh[#;H8`;9ihޒ*X`9j9)r<䯴P_,{ۺH=:g]XMjWDfI(]ݗ`Pu$xU;; >i,;Tf +˨ZF#r\2Uʜ0GWݲ^C$2 'fu}񛸟K`Ì;Vnٸ年Ho BМx87) {OGXUZ-P9Ͷduɫْ(Rb́Y 38>k%Fڲ4L۔x-/ǥcM߾Ynͤ% +D'w9yYw/mwnOmxxbX7lw +m H㉂#$OxY-+K.ᢌ{+#m*_j`I @k{;ī T+Ͼ~C(R5YPx䑃Fs)8G>tNΆ X.'p BIOiG[eN8Q+c9-^}jEA;7kC 3) [x1#rkAk|o]}w5!yks{x$ymae-)l9 s ~߶y"YgvUy.R]NIħ`Hiu(HX䓀*I>׬7V4CpWVQ:wXa.6Pӣʡ}I+6FF.e`C[\`rji:q4\p{xh±/={[c42ĸ.wxdH>XwwkwdIwnG* +(VݲFIbH4KmkiP:DRO%ӎ57r]IfCcd 9 qM2 5F$ l*@<{F=]3x0f]۳ƥ線 Lj+ȭda({MA׊u")@H G#nK.{# }ycukey ݷ;ƻn;6^#AR[ T `9k`ҡшX0 bgݓX]ؕ$HW{n XcY7bi$\6Nь3ךҴ1E $pU"۰yͰTnrOXnkM5^I7̎ +p@5{c$WؤM2Qv$rTOZՖOQm#d1dR@b~ƴӧԌ Or)!rT9R3@.s,*Ic)JP괥)JR)JR)JR)JR)JR)JR1 +2j"  «J*<+pg 0pJH# 2KCбmgY8-'@6W*pFA E{U@*b֨U. K'VR-B(T[8qYLUj\=jbXQ*0*RUb%ѭVv|ݻ;~=دMCNT]Ws(>㴃uzZZGc ‚K`ze?TҩbV/l!x'@e=vqXwyrI'O{ҔRT)R1L +bJV)TV.M`0#ADV5oo"wkK#˻7UUj)U)JR괥)JR)JR)JR)JR)JRh7U(ljsŘcNNM0`5S|d%H" j{CIj,`hԂ]G@r"Drws0Xڥ ыq yz׃vCK /vgwAm>{lc>u/5 VPۑsȏy[rx[͹q=mUY=03ȩBAV̠vQ$ϧsj'ivܛ;F!W8#R.b)RF G)`yϨAӮnRu儙/+cbz}+~ Kd)+Lc.1UcvXDβRx(Tg-0sl6ɳzYfT)JR)JR)JR)JR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JRXе$;#7Di0Bl1G_tnhv!=zQ\JћYz:H axV\h7GlMOi4"r)1i]io y t}jė{MvX;w=8yO ޟ\p&IS,x#52jz+4s=ElcqgS֒#cfE%HIdVh\j,2FT,t=犌54.;X#o\wzK\Sw"7mS>Yڹyry/|\ne8TY>i~),/s"4,SrK!"=̆?b;aD|/Z MFE5thĈWaN*sO{8wI'3f2jv)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JRLR+KXF0>I9$2I5T1US1LUiT*JbZRS1U)JR)JR)JR)JR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)Ji9˄lccɰav;ft@""J. 9`8x-Sh `8 1`U ⳩JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)QZƣ%֖^F=棯-e~א`E+U{e- +I[_4X3-%Ƿ6$q9G}we`2ؼIUB) ͌dV)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR[gTIBB$@ TȪI9'~ʺ?wnۻqWҔkQ?vO1i`ףި0JcTNN2zdRVpp=+ҭv̍33ҮY8UPsU)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JRi͗n*Cg,Xp$*RQS#Pf9TÏ>FkE-y=yDž";N?}^%.h`,&v!F3<ҿ{r};fYTI$^9!9KddV.ASc:p< 9*BkT3{dڵڋ1kl)JXBT$ u64MNxI'-#1#7Ivdfpӻuœ:*`Uvtx& YIt8oAU;X(F78cH8#sP*]XNjᵎ +\B\+ gaGKFr 4H][\ym;TMDʪ\A*r :ͥ)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR&B($8d).5-JXN[)_ 1On,QUE +tpFvyGu pg쫊 X4ֆ@s]^#l~w_J@KFwFsaS(6 +Ö-A%\ L[?HV@^hJg"`qYⱵKapRjYM +ԑ4s#ҔDvtL x/?k-Am<nxsa@Do+AoA-)5kq#Sw2|0+)]w'#7}R,tٓ);|>v{* qx: =q!Ӟ^ dd^G I:{Ew&n-TPN;7x0C8885inDB*>qt!N0[zAt5})JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JRSZ&yR}듃p|K"wFۂv0ϥ{bֻ"^Z~ҸO/NYۋH#zG(JRtXnč!wLGa,NOHbmge`3βX vŒ77@$c+1L +)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRY,4U,|&눻G{$|HEtydVn4CL[g9أrvI*KO{xt1\i Y)JR)JR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR:ה6nTrT.OLu "b 28`2qmlQӒOē>^)JR)JR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@ +endstream endobj 10 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 4/Tabs/S/Type/Page>> endobj 11 0 obj <>stream +HW]+Ns{{_x~۩x.;x^]/ja]vϿrPf?s7Rqo& QVa.Cx<~_= o uSCkೱǽo{ܻ|O˜қCZ]gxk9?4G J͖a!PvP=,.XV X[e;E6[e |zxp\ĨOD!J̔Y:Κa8YOaA PE]L \8K4a +{77 )4|,UF*+,尒Ery^ۃ3z!$%P`.4Ҙx1* !si +t5 +cRP99R8+EEq)"8.O0,ŅSMЊ n1ʉiE͙'YH +&" |Dr"{Q&C5l2]"Rb}虌:蛎01"ZrHvb(N)@J}GKJ!i2=[ʳ)bR!QѪcxwzӚA󏝛W`raީmc~ؽmw L -^|JY=(}%"{:>3/<[AoĚ*.(*1Q1ut2(8D +z(JdIB? +c+Yq(G {{z?.?iӠ&齵 Ox"9jugmM᡺7L{b\oWf[U,. ˕Mqˍ,@c$.*})3a.jdJ>^ ;:NBr&&кsg|BJ1MkBDb +L܃W ^c)\XU +_od2rvǩBccxVڳ$$MwmU@Wrs'X'2QlUn`"e9ńd+^ب`X s"мY{9 4#,fD/r4=B:M ^IG])Ǐ clI| +%:;+ݔ|?@L0ˆzMVNZb\Q/ĘydxfRlO:pcίP<% ("615Ǘ(|V|+'\8bxN@ A[ЀZ   +0H\E*7ȡ~"!j-R a 4^no'jq6_0YhmUZ#YX:^f=#4RRA +%Bcu9gYU I ,׬D0^UHCO8_h咞Z^JU9'[r\:HnϷס񧑔MX>U5bE#x̰nm@,3+౲Y3L="*As +H;mXh3J]"D2QrRPdtt_&.4%wm`Ooni::#DzXVfc:)bdDžJo0)?5w ò3cb.ܬu*)ڭjChU ˙_ҾXJз!I>AܗcDHZZm;2]1jBC±`lOO?}ث)V@ ٚo[ȃ/)n˶NH~ZAjޝFV0 o$b*8WQ"H"5֠+C#C,NP O7bt[A/$ js.lT]u^&j`V&GhN0*+ѳ$ ƍE8Vu,|VrL +shGfmvӕ4}V>Gi `6 X"T1*Ƨ104P=8bQdLjQۢih\_md,W;X~p+ :*QZ*Q w7ѰG4roC+N4RÚDSE䟙-3Xrz2^)0 5$ӎt_Q7e+:Dt-&+YbE:K}:;U֭Ԛ{N9^+xriYѡ,Hpl5f%W(k z_X ?BvU?SOYi| V|}[{u#W,XNάlL<qY([yG9,ڀ /[: zF]g㤚i*ndu;A31g~aۂy(;M>%f3WPj3tU-'4(Q&?q9+7 -ȹ\aw߱(/"֢Vz6uW"P^Գ {"XUSaɭ׷V)^m$siF n+dw*L+ g{MF:SP $ jB9U;2 ,fb/Ӽ.B5"9EerV॰ɛU`@]0wi͈,Ssp N +!Syw>kڳ0aZZQ={{ήkWiN_+惩\-o`%Ki)bBD4*vMKx:Xk{,#<5®%`qNM[ Npǵˆ_ΙGB-LeC ϽȤd1Tn"bDi +IE12\ɛJ+Ma]2aT!j3T+@U£e{ <٪>nZrU7&,#qJ" ">WՆY 13vw}ߧ%YJC_Xf0"S-md }TiL,?ՄS$өu?1P T iP +gƴmRͫK'iso+^WitZMnIz +)Ec2/"qn ]N[s:؇5_SWf>1dҜL.l<˻qIjAyEgX+Kuوޫ[P$|[f#@YmJכ*:2.b*20n!Y*0iϼ `b(mkt[*] `(a0$ jЊ4P8qXlNw1DgcG W /Ԫz`ChRbN]"X Apa»ƑB%-9KT/9[wJDexFɩ9pO smRͳ?-ixU*5;^Y7Y4Ud #sgآ%kDZVMIqFk x`^7,*d I_QJO24x`koD;6.7ĕe9fbQ?T"hy,)|>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  +o!1A"Qa2q#BR3STb$EUr5CDt +%&'()*46789:FGHIJVWXYZcdefghijsuvwxyz?b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѕb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҕb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӕb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ԕb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Օb"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""%Lt/cP6YUI"@: 2D\y""֕b"""""""""""""""""""""""""""""""""""""""""""""""k~"ͻRΕm{:[ÏMl6Q,z;:?w] ~]{!l)mq -)U ޕI,uu5M f³wg⣰#ew, +R&ݽ)Xy.X! +i&YnA= NQƘ lyG[2A;5';2wJ vpFKҞ ~yΦgіM+H:߱}C/; +k5dd2Ź*gZ>&%MjG%aoN_2W#WnJr>; f^ qtv&Nov_^*fזTDwgYpj"b ߷3YV=u6JݥT##abjЬؐ~܈sz +#f?@ ?SzOX-i+U(aPj³kG[Ep =޶'1Z[%,X ԻVz;X0X5SFOL]mGt ~Or xDHUq=]V<'w?YLb" וb"""""""""""""""""""""""""""""""""""""""""""""""keu]HkUXf'f[+Zƭxl-Q; :󅄩9Wt-6wԽC4l9-bmyBS\u=vV^>LJF) oMWe:ъNal-[t ++dl}~Kܹ?إ5ׯIF ۴|4^X,XAM?WE)5kSKY7,0#[|c -bZ순8H9; +3[?TJO|{ +TZ NEȮ7PFƏqm,w :qCF.M%[)8VlN9ؚ̓-rkƩptZg~KGc?.cBʠG`6^OPF{ɱR Z9/ iHoù]>1p -v+N#S&GGlX9TCB \Vvս%k \nD{ğ6uFw*8I}Lv~g;:S}weTzʂ]@tqfMuMQGb΄r|M 5髑Pl%sF;ܵM"vk v50st8BMNɁ~q^WSOPf ')b*b= _7K=)`|Sm<n+($[?ML\;qzJmG~$Xƹ~Rf|0o8Q]^5t_ f7,(8`G뾦&޼^mpү*<dDDDDJL6j `9ߎZ]lDn+lQk!uOD2bZɯ6Y~reC XBBOVmKu.6j}.DLlrmZzJ?9_Β?ʼ}{Lt.ZSXI'{}e;@~>%iKVt̤_qb"&&_UtKTgNHK׌գ ue舉pqK /A}:ͭ`JRY_ 1 vL̯5KVOXVTc_oTƦեUv`IXBr {{|˲?A/]v- ^G]ߍ뾾DJ33cg\qŃk{}LDD֕b"""""""""""""""""""%'!nN7OSk37ZzcLwQFxc55b/*@==ׁ:讕GG^t5ߖw9ޏ>^JWܿ0ao}Y)9[4V@^NK {k}dgdbے7$eq؏A6dl+#krdq^\&=\t̏ň Đu_TS^HL v5cUs.Zkg66]y.]oL21p-l+6ݘP={|[¾_-vY݆kEZd; _QXҖ WENƏmwm{8g#.RI.B(,@46;ۖ}`PSn(7gnݔu弟 f +|Z}mJo 9iR^=o"pjW+b1^]wx~UJ£ZdTAK6w߸.u?_ ,Qh',XވߓyuA{v4D轧3ΤvQiต2wV1ҝ׏[*ҁΞPxyx_C0@VY1~-d5L[(UO6~ڙ7ߙR-VXY.@Bk>xγ/3zݱ]WYy^4~P,lGW=]'T@;|z̛񪢐ɓWir8ɭkFXfdSМ԰<C6Ƿ3uS^R:Θ7垭%)g䪵޶g '&7ub"nEО%y20==5-ƹj*:YX?k@vΧC^d\Rgc +6f ƵG&ڔewˢ>ۆ +d-f~Ӡ=F[Hg7Z(;>|x|P㥷RKY[[?S[rV ǎe]PýZ\b| c^,\kU5ak[9d*k;:yZf Xu9ʦbk}&e'7Ϩ'^G@]x}1˱5]~^ܱbDlʱ@kr|+sR ;1m+ + kj?tQh` +ɀ>|{+{0ԑfL|U)E|Wcy?ٜ'3olõoY;_!9zs=:]_:뭖ƧD˻{);QU5Vwo/mW+e׮@7Zd_e.}?MW"w.S pV v&{pH<|~'-dfۛ]$YiV #:L͇ö~2v[2ʆƴ|~G|ϊl/6Cӌ.U*B 2>% *!^||{EibeVk7-2e:XRߟe3r/m?߳?Xv'+ ;,?i3f8UT3#)ặJjSc_Kk(*.(#:וb"""""""""cgQY‚݆ρmס\PN0sTSJO4-_NJ\DDDDDDDD֥liEwpSG_stloCǴX_trqayҺm +*{s/$WvRYU~G~V%"¾]Rފ~`o掞Y7kbPkD7}NEZZLxԢ{:1w&\f"uUË)<菤`.Af{+/LWK lieNEH$ ɷkVZtf`xUu; ZcޢfرSۿb?L39%j+]a܁J_&g^> ̼\.!ЯRJ9%0:j)ZidpSkS\~8EH9,Z[InUMw vV& ֐ .:3Nؗ+R`zw:"X P{~iN6NBjkv$RI+=L :ikz9UgfT=?9S7fe,۷~5_mzdS'u63CY@D0Qa_]1c^YuFZ>>vm{{+zI[[Vkg;:(.2{c:[(bXWzcݻ뼻Vhꏖޟq*1ŋs|K]k.R]y=@uM_Kc]rWMvTgfJ4B;+-jJʚG.zd0x/ = d2!t_H0\tyo-a[:Mf2.7G#v\8YS}3UxQ!r\ hT oysq*D//4Z?/}|v6]ޟwTԕI*{O=oRJZ eY?Yv +FfG7/ -iV9hI^I_:~WMJ^+fU+#?7"}ê%M2y>Ș2EtZPEkA* &Rt7۾565v DTlkKZVQA@); g:C%'ZV>#{Jgt_W+.ٜbtyđ]dQԓ5*=ǷtV_C :VN^.zSi^lQ)R}$~ya:_S|ܪ9Zl[ˉ$.%Z趶}9gf_zw%6y}v~ ̷X׾A|پ=y l6cv >xaSR2ܗւY;.Iiӫjt~Jrًq]< L۝IE 9r:155 .Od̻37ҫ uE*}IFN3#ۍyMIv̯Fqplʴ^@)ZøSIpj$T?5͑4و?6y91rUzXЋLlқ?8:]>g@ <䕚>k`ՓfX؍"?AKeXXi鑉mLAb²J/}1=ƾ/{tk9ߐ7^ c7jcg`&zXcIB71?kr3qZ7ۘe2) +nu@KSQ}e`w}ƾVm'o w^OiqULت};T3p]?/Ӻf56 83盒f2Cw\K-pi +}=5Jrm8'6}rطvW z#ZA*~sJ֕EQЖp93ؚmRWF_Uަ~&0ĬV wkL0lSR7WK+o =lFƏA3PR¨9wu[c/ed]n]woN!@@ +T0S݀=Еb""""""RV""k~#Sec0SYqϥ3NmT$&'ǍgJ*2;@ 9,HkW3WYSP^~ӨMDDDDDDmBv +'@JSuyVe J_VJn\R)-dՊ``lIUؗ(t! *ΩD wJDO!Է#}CX:f1W #/bV% +6}Av#2u@XX>Ϲ|ĬD((e ;vԳN mmQ]\ @ K,JT$ܙ=4uLɧ.V+`=YIR:,(fc/SquKYb&dՔuqmHaĻYs]4*֢ ܹs {뷎}oĝOI]*va'ﯧy~XL ֎z?q؍~ykHRF66~b-~pv;mIޏ}7]\F/O'g_M,eӟY$,66< @< O6P,nJ~Z3ܬKY(kT on]ŵC) |gx6Oo;'If18³w:/xh; Yt6֎WeO?T->:3G%~cr[|jŵPIߝ~yv%ʪJ3Cg@:Kw=YXѕb""yܨ;ܦ '4בm5*ا9?^=޹oVzecxxaat0m˱AT`rH l<44&7R:6LЎ~!\oBFWNNgRɲy%w3c0+lS^yXk+ tm?=\[n<\ؔzlH领wK8q~F`Mo=^Y\Z2}=o\w:dQzyq~U`!3P^gQ;jl؃y]-+ZV ܉(䝟nݽvexT=vZcJ:bf_Ijf Œ׮n.Dly&t '#`cW `l uǯUTi@Y.U8Xv8W+@88UqvT\n6:%T̍o'}Ʒ}}HJUimEjCfqbqĀt6~?*Ք23u [k~t|Mٍ{u +~y'&?>Hƅ σV};22,{ +rQzhBlӫ:f׉}A ջC rV#{y3UoVetrd,z=eN:}\)z{5@Tyl|k_Y_kjEk* o%~:朊2{hgu: ba{YtHmw }+QҰǠַ'h}~!qrZtgG +G +y.#^c4g]:F}c8*_NTuBu_SLP^?'5.l8^O؝o{?ET$v[/`o1zz} ~eM}$YԹt *80(qƘ{n_L=SJV $kqZ4O5rb;?꿈N첂e1u,Y9(L~{)q6Q孷~ f־ "FXސY +M=k̮*fRe%Y~D㱙[:ŦՖ^n K0N0UTuS/=5W57>M^E]t4H4ObR=4̲@!䟼g-,ޞHN>_fp H*|w6XLWv,V (|woig'L;*IJWWv*TSinM|q,`G<Qa;E,v a1:ۈab21 0mpA Nr?ks_J:xE_):]&ݐ +Uff!U{N6hºqʼnJCl53kGdOu-]vz*I"KVjʍ+0>G\vQ9fz~`&n]4Hց^&NEP\X%BkǞ^tɡk'=B~zm?*]Βjsj֥Oaq#AT+ e|cFx>>" ҕb"&dEƩydF>6luf *cvQvI>gB3Q-]>򜮾j;4f_O#=KzVע;[YBv771>!wa-[66,r:.cZ6JM#ٜ݇vY󑙑a>܁O]JR/+xї{Wgw +1տejfau Ӣ)9F/JSMPvߦxň ?S ~I߷1""%b""%ԽlHbs sJNQ~)|{u^Ȏ}[/ٔMHyT +)q:#c[~NF/QZޕ"<ֹ\]CԛU +2/R +ĖCD/N u5UyJ+%ZznwMJ/԰u݃{]5&]AFԩ~97pwk7=9 -2Sj$ YM [75؊Dے'ݾ}Ltk,`bt$MN?y*vbJ0 }#VtK^OS"~"<|-~'דY tKk%t3h*IMLdzmZ;w,@wsO1Fo<> }::StO^#Xȥe㿐Gd;toE&-oMYV-#gS_Y0־H!mrW2,E-J6fc!a/K)?aj4~$doGɫ' +UW 1Agh۶ 뷃Qpq2:Rד[څ|a|=rQfR +mv$v#: r%RB{Ŕx0Oߊ0>Br6nd۷ޙ[rwaR3/b|vjk1^Vڍz<`נּu㴻ֺQwTr&UkUe ܱSoDX9b [(ǿ~w4}j檓j0VU`}[4t<ŻK1^A~eYwj*+Gu&n]`<+e7n +t{&gJi} =(B]c6*  c}&xgSQ(TfV!$v~:N~HSH ꕕ~\y Ft}.Ģ)H=@?4[55kJX&{ cfeЫ- DMq~7=E8olb{썟 wj'tܬZ/m,1mӌh?A|}~|n:/]p4t7ywEYaWN x;T&jW~;3t-*[k,>KĪO 3z4ddNkg8`mIl2:-fYnM"/ۉDo}zP=c=eekv҆Tbi[{(̥y]rCA ՋQ~׃ZuC͎h}et~J"Vb@N;wq^p1͗]?"͏fiFfFammRGCu.H#\lcFUeQGz7fuTvt6|o4X}OBVt +㋖WR"'<`eN7PUVzEjWg1y|}&UiEfI7E?ew? +476 ~ۖժB,_vm˲,ɮX5\UxoȐ4; xؙe`MF>ݧ:PlZRt|j܆K_TPSiNQ˹ql\` _ ZV|5ԱWV*k&C'{4|LWQV`Q]roAX#Ͼ4ft9M:hEkbc΃2)߬Qp/Z @;ދl/3\YՎJ׊ğ'^cV%L;7V}6QrGB>\6}M/)v.[N1ֻe?Z?gNkn5t,F]c]k\j} +M^~Uc_Wijrv*ú?c3> +\'ǿ%ݿ;΃q<w;}Ī)/.Nzb5+)uu:VYHH="x§=:P*w=Ͼ̺.FsX`XHpGS# +A*ttA z?NxK+nJdxc{L5(X*;ԬJ DëєiP>d}floRJYHXXJĦe^6h]K+Zn$G}s>JJĦe"5+XԬDV%5 \*9POrRZԠK.iW[,?#yiݎkڛ?Y;5&t俭 ccW? +K5qzl媳50oZ?Ӷ+6tјiZR =A1T^MKXf7PĥhWmPd^徛/Q]{KZrLtjz19"{mrIʗB7i}4&X:~VP\1\ }?Y'GJx:}''Cəpuu+k:0^v0^$.GqUfT86@IbH7|$ʰ{8ڍe]|I}&!]p㵱:$hosQogbasϾj͸2E,Acw:UCi 1 Rx{qH,@*{o]2w[+æı=jkw]#6}F {G8%TPmW'QŸD{l[+vW2]N~]tJ{5#cjӣ6~ N]=MUr+ڰɻ::;Z-j.X nC(>$Ȣ{1άP@aMbjn(wsO Qg~`u] &lܶ,S8e!)$Z\_^ b#Dyg8,T“5e?ZY9b Rj8Ŀ:jDdgG[2:4YmJXiP^BFF6u=7ZIVkkWžOg$-?ĘYTnv\w޷yQ/ qebח>c-@wˋjX%^WnS)!{mbŸ-Uy +,Yrc﷍o2zY7ʭ˅x@K |{KHD "Aǩȴ5U'Xͮ٪H[$6I" Օb""R""%iZ9'P?5_>Bg0LE%ri?F_MD~ߔ!oCX3εU,tQypMXi?NpfKtȯ泲?H0W6_V?3e舕,n +[D 9e؍ͫ+4;wUP>vh +G5O*lb̄Of3yп:şmyيyKe +ْΞjRX [^9dλEV~/XNz*Jܸ:ަ˧UvEVEŕۺAxkp2cڋB4fMꖛ1jUZn5 :/{s"Qq4c*mԅ_c_S{nz:NWPX&Z!VE~߶XӐ5x`TAjK&; ؍0Eo RZjTca Wo'~ߴ :OzbiSV~d G&ӑUJ-Ck"7Z$lvs5]ߵ +6GMa4V+;h}e؉MFe%e5L&jYW` !;;&fĤDDJDj5JDDDDDDDDDDDDDDDDDDDDDDDDDוb""R"""r?X2:JlHⵕ3bN+Q /3*2pVb"X:OM3 hg_6{QӕFm*D}&agl-ɵ{'""V"""""""""""""""""""""""""""""""""""""""""""""""""""""Еb""R""%78޴Mc!*pN :FH{!bwB"%oT1?ۅQQ"pSN +nwYBfضoC'ڏӕgu;xQts9:GW>ikt7S~7:"cr+aԮv>A>5ּ5zl{[qqrΩm#oDx:$.Ӛ/ BH51{NSԦqn G772FD+,,ܓ؏Dnk:P#~u:Ebu[ְ-Ic,u K?QO*k@_#gi5c5]VRu'c jtYzÐ%cXAG޵7^fn%{{[ѵ (Sy{ c gal*eZVr`r#K_bat֭cK]29z~J +V+ocDw*rpGJMyM,aaT>4瞫3|SuX~uVlT\;%}czyOɖ8'heDOT[328Z*6':?X¥ӓyj3*5|~u DoykឝYẞJV=V#FA=׿>$ų3,1{o,jT~R8;0]GRκl]OﱳߴU? E!2njmP$讻S +qUf)vc'n:Pny5TX}H3F=q7Z%qFA%2oE>5[8u~nYM l50?uF=vfFjO=a#9[_bG}McuO"ı =J?v+eU{1hzWі$1%%{v:%R|GEٙAM3kcZ+hlܓ5yyKcZu=RJr*Bj{sc OqIJff_| %,ͭjSeBg`9roeUU[ɭ@q$`f/h]?z-flJuGqoa;7QGgc]AV52~9 풳[y=bO Db|9J?l >acu+:F:Yܮ{/.~u5'12 |z9+ɧ%P+AڎcږzB"?XwV:%}@"64fqg:k6y|Z'}KAUX8lbTHkeeKd:Jvm~hʷЀʤhpAS`9Sn5_l.ʧz_q 9pmMo5cMFƽA/=^ZWWꂥ7,J؞~lɉb my +0lWԐVP~=w:]սnm4Hꗪ8[mgY2/MV=6^eN::ؙ8xUv,N٘b}ɜJJ)m[1EF=twaRGp +}s:WD/aX0wcoOꖭ} u-bVfTrv%x|8WWFOe>A_hd[mتʍi_6qTUw:߷C3A)B]#\G:lCRAM1W(6ZqrӠy\A-{x23yՐmEeT&ƛ@6C1sNoYXB0#Z;RuWk$RS2j c7c.7EW4iC*CV${߾KXc]}@]%W%h³mMeMt& āt}ݫ_G}|k/5/MU:2D/t!U7>w2Ueb6&AkUEgځmKtt[_e7MoUkgxT^FF,gv.7<;r-KV!wO55*) DQY hL>ӭThQY]k` v{ +?V1Z5ϢV*H 4F> RUj65e*p?d.착&4?$?9;"*#;e (gD\qZֶJUYTH +HfstZ8g ~7ȯ{Y\^mzmjʶ!0 χjPVS Ď'\uWEo7(W6;A&1:'9d]jwZXUt†mۑ?1bYuV 6ЖW|T~ Lņn[%b;^Ƿl׋kH)څ3/H,Y}T @U]v٘>WmaH'Ͼ@ ($@3_O+evuB}@>VZ(b`:oDZ+^[_p!* +x o{j\ۘY[f`8]k_}6(br]rl~iI:f'kZz'on{]ᵥed.DCit6*$4_>F>(lK[C*{/4[b_UeWS0+Ł#z#ύK9 1ۮդYYCZ'tNZe*ޮ>A6/E8Xll=:߁ +@%b=N<_˜șu:+C8׊'@&ԶLP~ & vl]etBKw` ^J ڪT=OV##¯$nJԝlߎZgڰ` ZsPrlϏmK6lT{r2"""""""ӕb""sqz# , +)b"P0~,^wZ?7]T’^/x'qu"YaoV1>x_6[k[va)rJhh0{ +t}Z5ή"V"""""""""""""""RV"""""""""""""""""""""""""""""""""""""ԕb""s]pnLߓr3ޥb"zu+agRHYQrcWS`% Yջhm\ }gcGbCfQ?nxٿwy۞7.oc GwcBR[~ܱ3?n4BgR[~hIgQq ;UId~*xUHo?_#?3__JJeCp˺)?m.ԧ~1[?Ȭ?S/'?n?βn?β/#ħ _G_ۮ,\?y#3LO|;G31t~,ol;71rcBfQ~q3-?n4BgR[~hIgQp ;UId~*xWHo?ޟԯoޟ~+w+wuVX|vfzo_c37ua^6MaF]IOp4 =y֕b""j:菬/DLh'O3c6]C԰əkݯyNJq"TwlTk|~Urv$f/q +5]9zZXwعGmvٙ^+2ڇ/w~+2Iz4 D/^kO0LOmZ:Pfu,83TjV,%>σi>Sײ I$]=)-xzFnv RZa.ĬDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDJJDוb""su\nU}b]:GT|1oP#QNBwTzo!t̻fؕ*j՟8g;w+v3 UӲ ng7𶓤kbQʳk+nĂ6w~iV'5%y<θ%Cw:տ i +4jeԁuGcUv #VF5V\(R<ͿýriMh'/_RC:(lk7Z](Mϩlʯ^]VR^Ϊ4Qv8|A>,L7/g}|J|ks:NN&\́]_jxv.1ŬW;蟙ۓt''O4tџjn-ƞ@mM~;{͎l{l6]Uet>ӕ=Cf}u5*Kj .N;M}u#f +mX۴DF. S{SmHm&~vWG^2s_ց\왹ozbc_ mamtK1jk5֧Y?;;h/Qj?ꧥMo[{y'P%h1U\` _-NƴfMjݔT`H0 +NU@5ہwNldWg|\>{{v=OvsS_|u% }s[2&q?*'NOgX +!<>|H=_ְ.= f +xvz'S qK8A>6w{%sͯ lTVF~^;x8]AQz;h ;GĮwW { +6u|+.ꔶQEXP7g3~Ye}լ*RFǓxtrkvoof!ujWb ZYOv֊xuTu;j[-;*ueGZls2+4g5޿+z<7=95<>aG/;7/ ~,T>Iy';gqmyOJO"c|1]w +ꚹ؊wdbxS#"/#>z +:~S3q V +K1PI7ęrqܚ3`]{X R„ +A+nc}9ٰ $*Xﶁ3eЕb"' 6obD:oRLnJzZAN?1~r|G~r|Gԯ[(b ef﹫dat۪e? +Gh)`ɇèdkGFo@̟ <2uxo?ؖ_Y}cxT,;x޷J} 1k{ 4\i3pϷ:OxZcgC0x_?4֒Wgb= G)U;cwfu\.Jޝx6@"vQ+<]rc6YUI#Nzhg(mͳұUX:5C.MشVޔF4=毪bc~2UQM~{_KVFr*L3mExu$G}~ys7;sUG@>wZܻ 5yqE)]n;[-ǿ?:/=G sq8oI3YONW/UY.{ òֻ_R.YY`È~l8o?iN-t{[}pAv'izv5E+Ϗa%biZ6]?}}E9Z }20oǿ#yTw sk+f|W׽/JaZXXp͠wskzA.ݖK*VYq4;/GY kBa>j~H>c:]SUZX{l ʹMO9btܡm{6uɍm>s?gWߡe*.tTmle *)On7b8uc,s*Ka3_]Wk+ꆪ+qk3iJPlȲ`EǭTtB^^;([6}SwKŇcvvU6% +́]y1sqW fule0V樠(_X[0-RV5R'%qX77k-p&lhl H.؎>9U]m~gbZɉ Iq, ZOF`ds?SezCu*l{SP(H?L&~ŔG_`Tr3UUV;{ɭO`tbX_ +7󤜇FBYJ]C:?yoc޺ ݋+V4UOob35kŻv5,u[k.Js;|X^Y|3E]IkoL[ `ebmmzk`z- }{_ujabW5ƽ7,}sCup;_>U&v*kω? |L'K2b Y bwN R|OC!)a:*ɿ'w21[N  Ⱥ`5XxdW0ʅ@ jxZQ7@ߝ oh0 l[1ޠX} Xϒ7Ъ8q ,QG}=kT144ЭA$(8.qqֵԕ(TPx?PޕG#?BP4<(V]QC$ 2;Gr ;įQؒ;x'̧=DDDDDDDDDDDDDDDDDD@ҕb"&&zf:;lFqVYuرo¹f.o=c.i|bVGHao5_ guԢջ05'6޷ZO {WE=nO {_ma-VuUhsS~>Ѵ%kW:uQUߐ>p7{UNߓ)1:.R/}3rZ\TFgfuuVJfSa>vvU͏WQk`h^=M]ḑ\o[477MjT_4/^O??eՒr-+ƒjG3:U~Ju_ڿ~m_WFJ~u_~_ڿ_zJ6MlqrkaIf}mɣm{\|6igU)8=cǾol37Ķsf@]%bB1e@}gq U]FePH+{kdG54H'?oPٓyn7H@rﯴߓV*`mg~eՓjb|y32n6FԂ6ONY|& s*Ǿf6/5|@>4ߐH=wUbgdP#0GCg&Pb~5eK̤2&7WzE0(L~1S# dФ,VVke=?i*TX=6m gm@5k{/yqrlq=E9-GGn e^eh 0,n~5 R˫VN`tOVEwz2 2;Ki1ө>GNqUظڅu$e}ㇾlnOdQFN+`ߏXYcoJ5MގV5]?eBru kn˧A@Nv ]ȗA#`h"꿅J Ŭ% + +C< Ȥ%ץ֡meҎ@w%A<~^r'@h3ytb_ 0$~p':56/ukcxB`N٬O6֮W`h1|쵲fZiUmDF]]!~?9~mo~ٔ` *6z=lXl2A"cnSѲcjm1%rbHR7א`~1ŖӇ}J: ?MnEU)FP1Я&N\G}N cҹ{,,JtH$lLɩju*G)V]73"XJ?8C9r'MQ=_Q_U6l;em3}˭ 2}C0P'ӑKd^Ă~̧-ySb޶oλ~x7 +ɠ)~W}L:c r-UV6\.~H}[=6!U5 fuV]̊(k>4m'6%bR( POs6iU]lRX0 ܥt/*lWU`15P)׶RPثɀf k]FYXC g\i榠qG}uΥҺ~{*YU@F]q&6،%VJٝEV-Oj+,bw9ao+`=L#7PdU:Oy yi⾡ufԵ`Tބ2cb}7OUޗ iTɿdܵ\I=MlU97̛3oj+iKv'^ֵܳvw grjA:(' J&̰ [3h,PZ$KOUrGVQQz쟷Y'Ιu`u^=]E'֨;zzh  BJʍ{_J|ΖdWKzO w˟>lN{(~ӕ{+lͦkmdU#}${|6aqC%d aHn'^50^Upgv +ڻ f-rzy<== y^yLJeSW֚uΦO?;i~vVٌ̙}^ߚiDzp)Q/{k[onՁI8%Yp13|{޵}jx袿6FO/?>ߧsVT YN$ڹ9w{L?l9']8O[[zjmF>62S [Ğrf.;umdS0{ +yqR¯z֗~1PWDw {a-'_s֪RktMM8丸;A;;M +&=_\CrOװ=dz[-A r`H?}j{~Ռ9Ao-I oF.M'&3|ɿ=[ΣSj8y6&Z؀>ȮΔXݲbcaͣT.DZlBNH*tt{{_-SHMvMT`yMS&7[PsEh貒q s5Nש Ȩ̾5V@Uؖnz;Sίӿu^ q x?wSv;_膲9ڻ{oebun|\W+w+s#CgtYȯ6v-H~3WbF\=UF9c{}l:#Pۜ{qE23#k/nxKE]Nۯ~`|97CgǏ2L~x +r;}+~}/өv-u/o znv=q .Nk~Nrbu֢Q&yM`=oz#֝75Uߖ/-ߔBk}p+M(tOr+˗KmkyWçKW=(5'k[wGS_tՌNd:b- ^u=N|BՐqj~wv2:8A8q`_÷=~ ϭbb(#\bG@ͩظt~e&~EP7x?w jTDDG|9PLlޟ7.5鉉j>6%F[=?J(_}{Noq  y(O  da*"cu}]nl$| w؉ӄE5YXG6m-{}=7iCөdSBzCM0'CmWԖRVPWKk];kȉڒ)bR4U pf;+O&ƤhOnșMv/U+PQXOL"t8=WZTQB?@[/8RlrA*{V%xUPWZ ~c݁b[eHΟ̠ĎdKQ]O`bzPWR**P'E`>AKC"'G=ZK5!#c^4gܷ5ÔR6/Y88I4'߂u/kC]2E1e.J˿`wZ=檒[g՜i0q.M`"vw{^(x/O,hy@tXƩ bFqUrCv׿zTe_ v`GnݥZ"X;jG޷{{J݇FCr<P{$J uީm{-%OP `K01nzQGf* ӭv{+=jԕJnr4_GӖ-n59~n{l:i T[͉R+킀ggd [i[Zcl:ڤ,A#^4uVJq5uUB;Ey Wޘ# cբIצOst?'?(7nңfqZa];BSZdx>g^Em+FbzwԖ.0D@ĤV*GOc &<`oz_X|T lJ!쏨5?[~ Ue+hcIy^6(a`FyJ[^A@n# +V%4;u]@,GHLOOvkGoeEV?2""""""Օb""R'%g7gGzeu{a>I^9[)l܇gUnio䐽`E`y%]t?l j&5@z%RaܼWl^JJG]?OoP?ަYK1-MRd3'QUu[* {6fޡM5g g"z: ykGIMYXeR٢m,ث|{ M7( =lhq}wVSR֕b""R&:&mj6’d8Ir~&5ŔV72_⡣Ǧ1>{hN"""rŽ?-盧cT%oqx7Zk[ iwJYYzҾ3ؕ5Dj58=cfqgI`?z}%KnX&RuGL^^2blf['+O )}^~JPGnV""'7h8mz?]5_ZfJDDDDDO,FBޚbMxPvo)4)TtysZP.y&_-5)I@aЕb""R"pV~!⮣H@.hnS.iz_#P0λDDDJ+\Ct?(4]EK$3ӱOKn٭z\u>b""'Kѫp]J>#DNG8utI{'&%nڛ?0M蕈uln{QnE? b Td$o Z6}7ȈC9Ku,-mA[@Pjmm/4-Jv`w㿉gmW-~~ZSHwqѕb""R"h1z{ +/X>&u5t/bpó)l~e6t/?̛7vl}'XDDDNWj~P`|sGtkzecez)#`-8޷_^Yld5o雨_Ŵ,nU[| MgOK?H` +~fu^= :"&5Y)AX}?>O3"v]` $=ӰG."S~|V 7۸4LzYh3Vhvđ+ܗɹkdUΤ'bI$ESckIf:_ve^D)!GbH0Υ.:>bb=cQԨɾzvSǚa@@`vʈríT~'@<{-QLvp|7f#_]{ȱjXt =yq+ʭm+ <.DL:nVA:豾yqNH¨Ǭ|#f"Zɯ +YoR܉[j䌚.$ƥ~6,f/}hXVn{v-YZl|C="Yl[$K.rGmyzcu ~Q&Zf6N2!ĬDţb]eڭed@~un_xSrcXXʈ꾻p`XhAׂ>X 1dyJK=lH '']M z:C)v3ܠ;ҕb""R"PN.[(>\~'ٗwcrEQc~S?Cpj#V>|3͵-Q`b'+˞~WCVn)=RhMKʉ"R1J"RDDDLNiض^6V'%]zvQ +Y?O]:v +:ioǁ:+j~f=6گi9-&7oc#5iŘ1 hduL\9~kʺu羱2:}w܁({ȀOܐ|{yY{T`ɬ]lZ1B5zڐL8`cp mwPF}ƀk~i['B~?)o/WdQMUXqQX:}{w'?߮-_]bp&5:_i3q{='MVkr*\(RJltl4AO'Tdc&`=U,v7f"r֍k1Shkgtִ9?ux-lt#rf ~]'sMPy8] M,(|å좴UP=G j+1jgߜLųWv0[,oPY`rA]築ZW-T-Uiv7YՁMRgc +6LzNOUʂ&f]?.q]{lfm:[eG$KkD{Tp[yʻ4>rWg].'UALV36~8gCWҧ۰67Sk4 1FxV[WmfCJ4]20+j,3X(*o/ c<&*~:2_MHo+d$꼍d0~7ڶuv[?wh,0 oS+n^QUVciưJ detjJ e,`m \^N* +U֭TU'aeʞxur< uGL*~'[o-YNMmǂ :3FVGWV>wnE}AaCZ=2b""""""ӕb""""i*# E/u??c9)~BUV*gw1.rFDZ*; """R'7L뫩a0:ЍY_bq}z^N?w\,]:^NK)ګ*ir4DDDNK Fy4ujO%%1 +af>3jM4 :+.t:iـAsz,~Bu{}&gU,~io9>GdOI͸4p1Y:f&?ou#mL_VZ2>&?¸tUVp`i->ߐf;e6d'Y8r%GXI +PP3/b9 lhx.qEQlI>I={3}P +WVyѕn}9Y:]Jē j +4|܎LN=9Hh$eMl'zWFjfKc1n4{c2Cz[CGhl硳 7lb"""""""&E  9G_Q]cQ zGckKo +,jVA߂-ݽؓ]:>232,~(>o9?76(~Cxyά JNuj=cetcqe!R~cgE,r)tZPOߑBuJ9zG]1wQ7*5(-VO1A{|S[e6&kPE3'gUn%+hOM9ٸJQP&CaNVl. +_}UK9f:ј/DRT!'#|f!ĺx;/?Hu4HfF ͑U4Z1 PHX )t|9j6-NzuZ֖$Iw{/|}0頩vT(>["(\bꖱm7Ī֗q%^ ??7T/FC2tJJQJcZU*4"Pogę#pM7K bfcMV `ƼjdcޙU,S`"y£NDoZU"=eY_n?A>Kŕ%U0>AOR1j阴\ J-Nr;דeDDDDDDLg|*̜q#o]U%**4DDDDDDD@Օb"%7XNBVPFb"""""""""""""Z{+ڥ3ofiq)gc_SҸ0ݷu y!vVJuԱa>ycWoMpȽEȡTtVzۛۧJ]~|^+y z&/u^]T~"Ex:TH=C>NejPPKIG:u#!)Vj뮋46I׆0'܁:^#BV""""""""""""""""""""""""֕b"'hL>ײ,?b) F\r2h}Z#ֈz&oTeYYDzZ_UIkn k=l n_oRJY6X&ku޼8:i븷Y՛׮l;h`[JZ^ҳu ?($Lj9s!qUkGܑi{u*:^;r^L`+))R ={/B5!Ue\]ͯ + +2,g\oMve^KlalÃ*oQwǓ9 +rfJr02,k-z62;ߕ?6?ae6Cԁ};>=ulwtց]=o lfX6tˋq:ۯLrt@mw0(Y]J2؃\ɯ +6I&.'Y*D_%v;~<4+Gc],aS:cʊݫpDfuC{~c ߉0iZ$d B;:_o33>JCrFގ:=ȔϫTf⪠:y%z=[g #v!F'˺k~[Z5Dz.!؏ǟױ2ڰڴ0G+b4|>""""%5+cY䨠@ˑ)XY(V"""""""""""""""""""""""" וb"$M6|GӲ-SmaC>>_wV8u7V$q~q朶5e~ {uSZUN.Czclڿ6U ZO$]FMEM~gGU/M7;g`+q]C)d|Nrhp-5VA+ {%xjL63Z澮A~S[[U6̼Hc/I˧ӳ:eSvwQr 'o}Lchɭ̸^ke,c  ᳐ePuu c`t{JUv^ +]ǴZ 7؝bZ+|me +2`6DzvM=R+C\߽WB簅?[tޭmxA+ϼM]:hǸU^NEvXT:?t xr@TO=jk@_ 46tx=nblΡZzpOlUqX'*Biv4eSa ?iU#,2l)j@YXz|==b񽏤t|J*HxL$;=ϟ3OBbk8s^ LlΟ9c]v] +rą #zWя^V /Xϸ sӠ>U՞pE;(NzCwx0av#򖥄`HOJ# =DOZ;Iy;b91lw'C9y{Y N3YݾܬDDDDDJoRЕb"%5~=J1NuإY|l5]Cb[sPk+8r;}mŭ*B(Uh B5#jVSB4#Qj5j5+)j5+5!3rp lj  g5+,fEI a1r3 1\bN\cnӲ8 4Z{(Qw$L2<ڗIW򓒞>ϴtjSN)F Ilyg`d5{-G/GߞaumobRNבUj"ã^FgNMٝ2űwGbpkV'D|=պgC RXVE33q$fok1VfGV}o(OG⠝FΛ[Xt#빛]gTWGU =Y*e>Ar`OԿ6Mx\lQܛbGo3&^?\2= ,;{ۋIjnOrEnUI>䮶~[u]}Jm${Pty_=S;rV]z餿^*I#@d>"kجSmuG00ZEXͽ~=?[%wYS*Erv5'zՆզgGz1~#ev> =Ӿ(^b27^!<6FOOt݅fhеՔ t,ȽjYX[KPaPJo!5 uUlW]ڊ{fAK Z,tP*v}c׾jeZr,ߐ +J:'S#UjaPUr^k4:OXV5?;74uP.b]Z^DYv?$JG-@ +L 뭮{.AĽ|ŵv徧ýq2BUe[ueq= Φ1Lzѭќ"UYx=Wln$4w7o]8F #gUU/8n>Poz^/'ʣlW#zo!PtJc[ğtޙ_%BYuo]t +1*QUb]h/:tTBu< ~mΑzC[  h`꺋m5y(x6rUH,;ffֽOSV ;k>Ւf~I]m>c~cw8דҏzAʻ qH+g#BLHdo;o܅[p+uVM6=s aԺ5 J5=$#J6w+zFWF䁽+r^3icZ|:z)a560So=q +7!؂YRd)g:䠀vʃRltrZLIE>Oؐ!qYkSB'r9w߷S|ZET-55hH~dht~SE2Yo`ؕ_^؟PUh$w]NGXaten̮U5?Tr[,FJp~Z +FDA5) 5w6؝>G_Al,u㭦qRv{_Cֶͥ2;D=6qVܵWwn.F|wۗ^=q_jk{VevN:@$+[s6)z*O@w sնtԄ-^|6|t{>D5K6@7$wS؉tuŮjȩ3q! )kZle}ͽcTmRIB廟*JwO}; ׶_NxAՁTѕb"&kۑZC-;oyrS_($>O/o.SŲImRŊ;I\m@'םs5 6m1ܫz$>nb""""""""""""""&?P[AՆoxi/>oL{l5qPĞ@qX[@+2ǟ1 +ƴیU!1]6GC0a W +Ÿ_͗Z f=td=(Fm'ZYqP؃7$en|;22cKס,X+7m53c\+zRO#'zy6 +ZSj x<|)R[E*'bn_-.}w2ݘ_vVE,oɐ@=BЍ1gC\,ǻiʱ- ,)R:Ԕ '[=l.uMxdCY` ͱ3%y[?)8Ɛ[3 ct\kK}6\FXx8}Q6혳6``{ޥkj*NKzlǾyxћmZT:6i K5eovq<#MVJ:=ھܔ?H ğuczRqSۋk76pߤk" 8{w%z=1:N6RkOm82\M]ҋ{q[T<$:7GI.Ȧqv(9Z,ρvmަnxmqOA|w響L 4eR-Փqn\d~LA˥2\@pŶQlҧ?^ +߆Z1pjoEkZBV vz}fq"1$|;:7[EYM^1Z=t{ :z҃UG'Co'Չoq==9՜c5C3mvܰ~==:w49 E\JCP + Q%o=_|[fS[yMϟǾ_ӓб+鿇wj,2,[SumoO' 9̑>FfT>,9&.>50ƴ+vrf6םM ƛWۼbk?y|߿c7u]C(T쟅 +25n򑱾Sh]Ζ&?t;y2~| ѱnlKfVG Bvʤ~=] +]$1SGMBW:vSPVB5ەhA;g?}\,VκJK<mt #L:r7܈]pB&|ߜJ3gғu33_n^]g"SbYַ3_ޞjDzKuAو'{{L(Q31k>R2v;n\%]r*g٩J./m-aљӺWIKԎ +rtt+˫²x:g?Oz?̲zqYoQ }ǹ-NpīNUPdGf,l}eM׮4?uT,8Gw=oGc|j2"nMY~1ǿ?db=u Sܳ oPȯ +̄QK#6}|̼[O@4v6E6=dOo6 +wܻz^OWlLf4dx͢A<ͷBĦe0Q(=oDҕb"'=L11K9V~#7Ո랟RcL,|Vzt%t ڬ,T?lpmz.*zj5},|%qsjv˃v{:j[]N( FǙ"""""""""""""""SB;ЍFYï:]ALA%^ vt6~Zm-W&@ݘfmvZQ@@'MA w05ԬB5LNұQzr[]!ż}A R B1ϯ}ó+)ڰ?Q{K{wnFTn$ OxTV4rI;$rOr~Jva0_F cnN϶?b{yЍF;Fj5ѨЍFebe;GGיJkZkAU +{tfؖH2,Ae{mJ5hFQj5YRdq`A"z5+)QИ}SQ21@x突U~*l6No@ӕb"%4 (ȩ9uԖ 2qI|++ů#6'@ms4 {+O*ڵvCx%@њ>!/kX,F+UZw?IeuJqlMaBKرo%Lʳ[p`{L^mUTmRj!![c,1pnL{\)(@,fAF>^Jm24yw]`MWTX΍Pz9/F) +&Av ݸhwq^#x}kd}o^_aҭ]‚T@w^o*1^! @*֨>< MuTSccZo?ՙGQъ:`u`pv>| 4OWӰ.e`>m5gn6Oj-q}?i~αUރV[jU?\1rڥVe7)j  7۾뿉 M_a^-)K0}+WH}}똌(rE +$xz>+:Q9P\0]װM\ +̌[@ell̑QV$ww [GXY.xK +2G =kŧ=,r*9| ~ ;w7=Na^co5@]ﶻF}9 +^!|۾~ȣ "mwdK+`F~$bxy똸YYf>SiU,nP;=X8K9cV?3*rvGs q[THt[}{ +D-EOł9+kdy16]c VA$ ::PҷőUz:=1~ lR_e +X ~Kv'.gu^eu^Z>F`Fy>u{(ȵE7efKk0%דa&Eܐ VՠrXh>̬nȊX+.l@o:,c|OխV3{~g!<{0׃.pƳ-lʲث +a7=O7j?P=T$3aYUPF TX*$,>k:\J>Nf;jAU<ѷHڕ>v;LEU!n.8v/'{_T9љO2,WjR^?3QcVy%~!r9?1}gX5>:w/I +̶:Vu^en鸚NW;rGp|L% O4gMSglxGd:iTRrv= Os|Am`X+^vFeA ϧҷܑ4AuÂB:,Om޷5[кOǦmLr]5B(a`f=wFv_Ov(7;{muJcY҂I޻}6}7Xɪ=ג60RoseըkkRk:e @enVTJac~m͔aV3T_k% ԕ<+Nv]R02)B;za3`/Ծ!Gmn5UTܒON-I2]}Z*W Qóvy'WJϥf*S|{0 :/e<.k-Sk]=bz2G%t(OnC~u]Z`*93b>c۹'CDDԕb"""""""""""""""""""%i-ظ5_Uݣ,,+v#ZmgEb?$Gsgu?f[eFMp6(=7I]yPE5+[clYr=uWOpص۵Dze[n8;q\Vmhy+|"7閭k,?0ZJٚb,զp:9FAJٵՐv ]L.ˀrWŶ, :ﹲ?^aUXMr[y^dffpzEkP>lމ+c^O_J¡MOݜLozMy<#h:'`0V*A#œmh=3zŅ[NJ+;Lz:6v##*XA)Et)ñ\>&6*6]Xi?/-|]o0Z}xl`Bl B=^h-Ũޖ-e?\ܙftKr)%mJVtddP+nzk?37">neQgوo{|$)V-*wyW֙[bntjcsZoCWKy݌lQMSߐ )ow  Y6;Nkɘ7%=5'qe,q؃ͷv]3Nd*1M( LX}5FzlUa؂@?i>V:baَ}zJi[(ϑ㭐llK>! .:TҢ*|pgIVwcPUU,V+&W]4w[0P2dNXzH ¢Fuc뭅Hen@B7Qf!H?I06=7 e%U +q-FVV^Mdd%l`zUdSl+f k=S+}]n+E"C٣A5`56-MkN'Hvqb^G=UgXȽOE4HS_.U.er3xpb`27۹vbЖ'qi>fScQHcbb'u<2z^H+56{F ]tڕdK,(,Rh$b jdFKc=X84z: ݎ-`-v`00:ϭ$Yg!hǵGYO +,rֶSo$e?o6e#ͿR;̂gE,$wzBɻJeU]UXka~-ON^*݁}׿5}_ hW=Qkk8=уwVaRS"𬦇w`e:e|MಽJTı:?FONv eXYEZf=}7&p2%YՔOHa |qӳ*n=aZH(`kMBŧ^}%ܹs1>(Ƕ}h]qk^P+)!}^{v1:Sٯr tW55ǡuX/' bu=!aABFM_Ġң"Q*,IDf7[ȳ$zXg-)|e7ut#r-k(f&}dsP~:ͤ|G0"l]Kbԛ v^E`8CUyW)D 8y㴦6v>g!Mu$7~i~s ՗37,%K} *AQM6vzU@.O=Աq5Yr+T z實Ox姩U6#b=z.O/Jn h.?[[kIlu{ #;PGmcԱ $s0psXivNUVݩ{kL繙teSұ_q{]i3-wԱrxV+Uqa܏Ꭴ]*vuNPN<cqǵl!~CtO|=,V6`ҮFJAVCZ7 +Zz}Aq¾Bb?T&z휠׻+x~Zl@}DG}qrs#ayDk~?13)kbU S+5_̜+[+e`{w 58{5TSM}a%SLX#3sխ6 k +TPP -Ǐljo|BŪxcB؝sJ[`7.[ãg{빵>&:WΠǐ{5]:S,v +`o\1kƠi{h50g!G} 驊=[1(faq_a-SVQo s~ː-kjp*8NJY&8Wcf.7e⦱^S;0}gTYr/8VcܹbTڶq>;`krCaTrӱ]oC7]Y" +Dƿmt;yƾίVVEubqa(Uz ^FHuZc>6? :άշkpw:t{0ӡfO? |ĵC'}igVBoƪ򴼬jP;y*o:^J@459޾Fn-VtZ,.ex}NAtK첤Ew!,ǃZyw ֧q[P0@#k4Xs *` 2uH`+#{1fgG<l,59J=۷斺sWMe}WcU0\k2iN2MՅ9spVom dc=٫M@v-PZacsMnM}GyDilAOۿO(Ta]nnX8 {'f&;+75 )ފ7o"oc Rq Q8}?D3utUc~2 +xΤq3G^mPײz{ 3ZQM]7 oYCηNyEnSwPz_)WkK@>M^efޓZ5=w3M@C|;{~y_цB,6iA@7$>۝&e=B]Xx =}/gߎ?-u! ٍ֖'*Nc=P zyC,ZF( ~ #j2 3sбқs/}K*X:3+/,brMǏ}-c/L\ k+Վ?FŻ;~_B2X nߨ2IB?5Sh^k+f$p n +|r~i>)'GjFW;[מo_X2Ԏ8ak;YVN'l +7% |, f*75lt`BA;lPEH c^4Ƿ>YUk"ڬAzX('{ eg +loRIvgx!b^u7졆#8¿x'25ğVܒ{x/=+#YpV*2<6N~#.j!ai<y>tnzN.#b +SYV6~S.-!mGɨ0:m{^ˢqZPPM?Jܰ8霍~Ņlҫ&xɱm؍A+c+#lsBɍW=\7geEǰZwXAQ4 ? =U@c`/-p^Y,G~['"9t* fW~6/5@*OC=FX1>ɵ[f'GЕb"""""""""""""""""""%& ]pR=+Qߖ?1?7ؓ2%*G.{4)[aYG~$\ 0ўEH;L:0lʻ]R! ?0gvQ]KSoħ-^[Z*WYڢ;;UEt*O~eĦ l FN4vu]4Vu^a^?Wr7o]ܷV3u"*,~3ߢ6GsϼtWH!W$Fe1?S6gH +G4?ikTӕr(ŴTcGrmJt+uǑc1,m&yóUd{kI 2!;wyصX=hyZ񿬦JZ)e⯭)?y׿\>Zʑ1%[nF$;* ;{ExK%j!@>w}˲cj԰։PH׍Ӳrmuhgq%7icT-(0b(Z%L{v.K݁Eb܉uvȥ@$~cQ (q)dШGqQP`; jߦ@\ZQh-â[f_b.6T)WPFy謄h=hǯu"<P@xq1 54;b[wƪJ">@?V0=Z8@4?PE` pA%| lD5MuUN'Hq t[V4A}5<~*Fqǩ):7RJ/ v)F"B~Kѕb"""""""""""""""""""'H9/z&ʋ5g"JXd&Ev1Eu,@ 0zw]VUv!5^ՀIb߱$~3PO/QAe{KR`tH: Dv[&RtO!~K]Fjm24F’<oeٟr- ;hhmdҶzF,w{ȧ`@:iJ[ !Ǒ4gĽ@d{U*vGf7l XdWN#oǺێE"!́6' v_lP(e~yTR@lt[6F Rmy֏+^6]kqJљ +6LD6E IN@<|?ՇRIJOZjd($gۓU T m˛.jK\IWDYBV؞P 쁏B|mˍr!wo^gյl QlξoQ44{^_{+)b #cz>e_nFmW8aVBҵjdoϯ&Tub<=,l}B"e+`þ؂N:weSXWbEUR{An o=zˇ![㱽}u=N[JoL\ 8 q ߶uߗ]zMg(*J v zǗ!ƿ\~m}[Q9/& =ƵΆη˥O߿UUj Րc=AWvG SUOZ~n-Sjߗ95^dl/!ȏ˓Or:)J,hɍJ~2ze]T[}:]}L+Xs2%yԍ9f]xM>gOC{ֶ7o_vC{jOX\TMu-Nl]B;=;&wMʱqklj.Y$`cD[@Y| Ȗ/ZЯ) +[^}FL?[^A{* &"""""""""""""" ҕb"""""""""""""""""""%=[|fZґ#G;^}59Huے + &7Ãƴ^! MH@Ѱ:IC}}{O!=+Mv ^:T\a|^:TqV)Eyt,Ԗv >:u;ZGBeKkc%NλLE_ ++V`mʧtVNxʼ]iFpv~V@-nV;1[*ʪGoț>^ґ¹9v{yJX'[ůn.o]\Gv|GИkqޥM*3P;#R*.c{e {hu> |@u:kեeH oFXɷhTb9* Ɖ̜ gL(wN:>﩯j@L憎bʠhsаU3=5D1R6fGcwf_g7sSL|E57mVT +zA$kgjftT +vQYU21YxScYZMjT(I,|:>Aæw8ytvu lK"YEl%2)ޞ_#~UΫ?QK7!l7~G7Y@P- fw]+t@:@hxs.>GN>=!B. +e͝·5:4ngfZ߀\ /۷qZGfTV5}nymºE6k9k^Iݝ;+Xޝ(Ŭ4-<>V#?V(##:N-}4K,U^R׃X5XEcͶLηUxy=1K-HOʨ1z^==tj^H$,Zv\߀%fH;9[WPJ=g~QҿvE~%G;3\; z_^O~t㺍]WM+yiTb̡~I>;4N?qUU:TThoz&/OV2UXm֍[5hpз㿓5SGުb+#`~M0˗o⛎Ne}E-bj>_zsemUchށ]Ӵg}[?̿˽Y/`_$ oA.,ugՎYEk,w'z C6>=["ڨ=«iѭg9f:US_"I{3q]rF '3=UtkEEǏ"V*C׉]=}LEL=P>kįNyT\Uհ9W}.$v :[RS}+d|I,.En:|%kE,5 q8mkVT•Ỵ߼5~۔nEmJևU}wy{OLDDDDDDDDDDDDDDӕb"""""""""""""""""""'+[T 4D? j.\> ^:X5LVM +PJkZ=Rmw=Ϯ%MBr~ܻ_NƪJPZL@sɗmCq``0FıұzQRJ:#yQaW6;L|ލMˋ]U PZ M&#t|6hBǖ˳lx;5m/1a$#Rރp^T(⪠Ѹ,bu/?Kŵڔ-XPڀvo(' ] {`OMnOX%iPm.h-v|#j{wF#:L%JWD)!W˥ tnaz/z78ּk~wW +ز/I@?]8uAFw $}i(T Ża޹6Pj닕ƻ2]:mԫ0Y+pE)g䠅?Q}/閱vŬ1b>vO*Ю:n[+s(FB <K_=VB<|vy6{ ~&M(mU@1V% ڔ698#ƛҖtKmI#Z,f#CD25_t bN25JNrjӡeUkة2{ԅVdSӮ$>>z2[f5,a/"g k L6~63g!K>I:K;q"h}=}%먯!xءF:?B7)jņPq`o,t\V*װntFeИX觨UWOKgQe8exNԡju钠ֿ$xb[P,@o, +:u~=kZr'('ԕb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Օb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֕b""""""""""""""""""""""""%*uAmQ̹1r.  oOiXے``w:|gls.#jwyb=Ľ)0s:Ƶh…E +N܁zgQדI%,]: #S*""""""""וb""""""""""""""""""""""""kTHȼViK&jKt[-ˤQaQ3) D}q=DDDDDDDM/U^!Z"$1;ֲh{Vr2qZD~i]xKrAMae +&TDDDDDDL=쥈*;T_H=_I<[sLj`9x<ߴȪ[kw XS*/%$m{ݼ"""""""""ZɵBYT'g^X]TQkm|lb""""& BV\7]F1]t?H{(XȃζFO3/ +Z + [oPO[GsNMXtGu UֶIya8ݍb伕ڰͤDDDDD@Еb""""""""""""""""""""""""sߎ'-ŗ?ouU`~Ziuv75Cw6\1"Ezcd7 ++ ȘW5zn%-]"j>8=f͌_Ά'=Z^UXiK/چ,+/{>;2d~Rq\mpZ;; +AT/h*˖+}@EvY y=.7O`l_>[kJ #zv4Os77z6߉57Tv>j-jYI'@ܝun]2;5<Jг)7-)$'[[_&e9R3)#ة "{lA?nArW +׆]NPgm~7ԬBݻc?a6ۍsE^\ߋhk#`{/L2:Vlِǰee1-~W¹zrj&;O]9fF [Xt`}Uz** +tffo[ +=={*$4zOBדmy׵V,vMjMczbS1XugTPՁ"{kC܁)5b{n%tC]̧ߕ jǬV޶Nܞrs1!Y,lT*x i+1r6[m(X('BSfXjf CwCe<<~UE@lE~yVo^ߕ4Yycr2OӬ ;?G~V9 {5db}zZZ[յj_Qm}pֈ>&\.Mb@ vZ΢%r頁edȿ̅`v#0:CHyԹ:>FFLJɀַܙҕb"""""""""""""""""""""""%Ƕ]n~4o4wq&30 9j?9_JO?uZ̪sqM)7geǮ@Vz`;kgۿ[սc1~?`;L~L:=ޠQΜ]0|<&OOž՟q/6l_E,qtXx_ֈ?2?KҞ&OR0*C۸7ښωԷJoaJIf5tm^^J諭|M7F̌뮫dfVAUR¯{`~?u(?d~~0GoE=`~a^G\c5k&cTTFǷo/ҀEW_uSX I,u:^FňR{1repBon178VrOv3 <*NxK#|/bq8:!?`;/?OG z]7u +@xPvD&!Tֺk[lU#:Z%jBq۷o>' 9y'&+7(,VEeL˯Luc]a߰Y5VZvC- *l6̖}9oNSE259~\{#5|If䲳FB~#Z%YԱ2 +cbX˴+AP~Z~>#I8;vl0;G&Y:fK Ӱ8tw@|Y>ܧ WR=Όweש T|DɈӕb"""""""""""""""""""""""'=WEJ.Д6Mv7X8˅U  nQ|/%G͵+ }p0c4(s6x؎[}xl3%* kλ}&7MgsܽLH޼Jor9Cy ׸ߵXvl+(`}[s_a+शXN98*F Nzu#7$BE{'ߏ~|k}}&!k3MZqGy~[:}癚hFX2MӢ +O'S 1;}y?}oe 8V]csz1ﯮ2'MFxSԦBC)={ 8m7+-}@(=(T7~u9b5_M\[j,!Cl!nSgb)WsRPBjA NUks5e_XcVvO6]5+܍` +X%P 5X>_QJjzMvZY΃=r]FL + +~fe,8GrO~zC[r6HؙUmɪn,irGI/c]ػ~sgDJFb"""""֕b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" וb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Еb""""""""""""""""""""SrܬJJDDDDDDDDDDDD L~qqH ږ N'_Bc!jh?2𕈈ޣ{ؕѕb"""""""""""""""""""% ܋:d^Gx|gqܖ޽'՗##\Z;*le(rz`uKW$͹o-RxQC: lTI0 q*իtYv{h}D7_^!*m 1 6ikҍ^ddTu\ +n4ܙ"!x2Dl&]6!lR{m w;>dUaҺNw1-1QFVoCpC869^7ωf{'Scfܲ=kf36A5:D;{l$OdŦNrOfޢ|s-D:ޙo[|nzʧ1خ) ?X t1UMWz]u1/[Zeހ՝uIȢ]oϙɫ ,(fVP=NR?J`hLS +r(,{5I,@ +X>fZeScib3Pw  ^~:Z깫yU_:&YN'5߸w-Eb6CNb*%d7ߏz9 +Sjpr{7-ASŔkϻtLەRAvOviz[1&_EUMp KwUX>:=e_yWH۹w%B--:o]v27$vs Zԯ`?A6e?d1q.:޷oλ{U0f) D0 kQNRqmX0bj~Ϻo?G>0T~fڜA5^՛97qrjw5a<jpS܇~S]CdpW{ַKdq"Vtx:?CR*ʤ#h䃮1rc7TYxȟ>鼑]y +>qܕ؄spXfW71dH'!Ϸs9mM?:'=ʦU,V*H 0$kyjΩU^_XzxƷny9%0ZՆvRAeΝb+[S1$(,saUz'`dL|^й,tX6,wVJvzse4D@ҕb"""""""""""""""""""% | :] aۃpc04-qf-XsK4{mL_ár-*5$-EY#SGU?!v6Y, ZοLBX*{@C1zN>FVuyw[nks<71'iP(?(|g?׽?ٞq?+Zߦu^bk8 +.'^m~W[d2|gG{}u6Xu*x'ABy7`;øPHȨUehr-q'h͟UޡgOz&Sa :7?dV.=`QӫGr|6k%RaYb&&5tƴ!*[Dl =t-z}B?#޽p-}:C9Z\*۪ޫCkW}&&8ϋ!f¡{Z?Ά +Ne蘫nY[̀x֌QA lfյƻď ]~<MR^_󲽈_G`}떺 bdg@m~jVat6֮Uoiq_rX\Ƶ)8=_E+jǤ/ܪkmfj1i MGn#ޏv.ueû[mɲڏt\#k!5ceՍ:/bT;. cqws3GVX ࣱwMoq v/> O.ayX]ҁ6koc^52r+[zel:#ck~+(#8S[uniew$oB{2,׈Kj4>`t1QW)2T0Ïc+~i8d xQqi~[-:oΆf>6>Y~2u8M%\'|6u:9o_]jtc3zܿćˆ:@`l+3:MIv]tTr#%ol_/{SaֺY]n +a)>?zꜺUE(? 6k$ +Ձ׉s Z*1.R'J4u-eP͡Pw~*eW^Ex=J޲[eu) T {N?6&lWd6v{ySzlY| {-[6/* _zv2"ҍP4`k^f=^d>P#Sc(JQGPGP 4AO5nG_:ym'ؼ0A=]S=)}oM=N#bZ_e'r=v-CSY v{t 79wyzc[q/]eZvEg#std57]֥);~|Ӹx@#FcTQX TtJI#]:f%ySq$֧D6;lفu{ԍbo>be#2G&k/&msXN\}J8|sIKEw.Mu`T5)ζuN}I==k^'ĥ=?"R(@B@_Mtj M`(zç xZ߅$1GK~ Q_^2YCy]u)2V>tJ*R9oE㿮S^:UG@QW,P| !8H^#'Zԯ).,א9< \*jAc€bL;ͣŜq1ijd(q=:;-d.,Ck}z*H*%$G? e5E ~m"vJca)GqOO!!xBz72""ԕb"""""""""""""""""""""""""""""""""Z|j%Z/" @޷yꫫ|26>unt2:Fak}#7VSsO.˿ jc],aɬ'JwBmقO`;1r^yіSnBG*$xέMcb.g#;$~3 z+9*iQP@']YH]o:V/.>-AY.= + 2ޣNAYi}3kZJA]{@å.3M,,7^'nD3gQcUI<,PcD}AP{,f=没 Tk Ois?ZK֫juUGP)#f ^T]bVQrK{wf + '@ Q:NWb7a]k[:nCcn̿oÜnaE$QOihxOX0'Ä yݛZp$Un#qb""""""""" ֕b"""""""""""""""""""% KN=*H\jX +XJ9kmYQ-4YbRmetHm0tױ \!NδAdZm+5l[l'e%yژGEǫ'Ma6ͦsb+}fOՉҎ>!?Y *Z'DorYk!y Ż=@0 sS׃֐4k;Z_R>b>uOy>Ҳ(:t:(;](^F.V#Pdb[dcpg!o.5iz.b}ӯ)aSF7KD́KY;']ϴLE&q` rOm;H>d_uLꬠ\5ơZáB@on:ɑV%Ibjv@Co;ιө}<[\2&ǯ¯}厉Ju|$ѝe5)b=5W/=s:L6`]_k$<}|E:}8kM.NϪ= ]]mpԸZ֯q. {z=?Zbܮޞn]kȖ!Vv{6=n24{P$u( OJjVSb: +֧[ukzkK7c|,7L.^JslCDK=_$ӑWƬajns=_Gr4Oo&`ߑcRZV#G_W(Nenݍky +ښ^Ns2UcDwa]5v{}嬗Q]7oߟs^KGۏb1w׼ =.#j\7]=^~OnebP[z?9L΢O?17P`=·˭5۾?0>6MR/W:p+A} U_(?maSCJ׀bA,A<ǹ;,rc{AS7k6b*H7Sۿgn,| 4Zϣ*e-j]nt}/bSyZ7ݵ=yο2-\ncΫ*E';굜 ^lNK49ZcTS#ZvjQSU?l82-Ƿ]X-ֵomF;V6wr/n.̹8փm)&<β(`v~rqOr{}?4S:kk -rp#z̺l6#黔jOOk&Xa}*A.?kv"fˢævAf_tV1uHDt;ױlp2fWcԩ1f,e%RtMz~]n6F"gcNX_U k:Eآ,kݹw}{iוb"""""""""""""""""""'^jT6tX:(|aY59Fvu{OVnY{"v|3n=xVܑmi{~eX~ŠW֑TsR[{;;̬nó1KV1Dg,ț;ڑ۰i3!d[ȐA'}.?HƲe&Vw)0 "hc5Ëָ%3OM_1Čs[>ڦ/s{ͅ`A "`c,lkլfJ^?*۷Ottll|3X[nnChhmI۷i@#FkqŮʐ?^Ī;S=,Ƨޕ,X8$]fX-&v=nT%Hǯ +412.>mg?Rac m |nq-kugP@xvߝve<GmrTAU@K=?cEb{,|{t|[n +2o*81ӥ%]EQ@/BN܆x@|=Fڭ;@:*HpON ~b'9MG.˲vO|͖GM*[orz<;QC+)VR6="jl> [,ZMJ1iH/U؊$o^b]3Ws>m n|=[.hy-<Ϣ %3tި6[xX~D$d35+$w~;$9q^ƴ̇YLZ:+{b ӡ]DDDDDDDDDDD)3\ݕ_ͳ4}hXZA-{zu#?ENB, : +DbtiU&3QoS\7_8)Ⱦ.5QM|Ƿ`7ۼdbQVMZ;>~6""""""&RiU :@젓_E} +&ŬQQݘ&ꗓ~%+mMt%A:UnuѮ:6.'5GTMO[;MGWʷ6v"h Tuː?U:j?sCw#DDDDDDDDDDԕb""""""""""""""""""""""'9iKue ߣ`Mf =BY.i*Q]ee9h䑿qGiYMEحūϸr<|=2+s7T>=uO?J~t2Q)ݝbf^ǯ4@z.[Q8}VFfhV^IMK@Q@~yvZ*P c՗ZKxe K)XIν~W=SE+,QV;k3 k'_jzU+RQɎ'-U8C-ooiy8 Dkk +RH*Ab@X~Zɯe@IОqsiRԸp#?^ܬb""""""j~*'t:ejopGN:k_o!F}Lh[ Yc;홶G'̻VkU(JK/`jy?{}lPA;rՕb""""""""""""""""""""""'+i0=~"uQ9Y}CF*c֏ Utyz~NExU]R9\sw>B^ݼ=VIe 炨ra"gl@_x}Zx0`|,7c\ܬǰ#6YXr9S =P,$fmAJP:a}^'ǼٌH'@'Xg/!q(n74_Qkoo>lrmN"""k>!ҰVEos /6J;kkڿeSd«B^ɺd;;Lul'EKI;yBfMOXM~YӮ#5=U)s}>b}AM3QUd6V M*hv;w6 7J`ڰ#zAIYc1:=yv4t~dJ|goW|J~s:}/܋+v o߿i%Vڤ\>RISrwәZi,8UJ֥b[S;*Ρ{sJ8ר?ILR;WۋAʨױk:Lu;Wd-Uzw?*$nzyV ,guU(%@3rB$t~{n?b:9r""c_dQAަ8N\ɉ|sh;yo_%g LDDAKI^ΏwmWCY+ӷ&ۏr6zTV'%KwsdtzE\M4|:݇<} + Tv*o2[Sƈ;Ye}Eq$En?%4*C oSM:b؅no`%iA@3l!AQA+֕b""""""""""""""""""""""PK_TYvlO;T=uns`c7RۙZL<;Ǩ7 \ehu|>^? ιrs✼,|\,d{j#fSj}=i{t\}XuYh$3Jb {Ӣ~ų:Օ߯GTa򵖖ӿc&Г0~l+:u8 v.I^uS uK-Q1!*7P^\xxې @uD7=db:OtLOy>]!}y__Y/Ct*TɱLtAF8]5eDDDN{Z+̊Y`R.W9q؛Ū +*[̩jĹk^?Y]L e H.PCb`guZhǢ<1f +6֕QA\+z>,tޗu ?.~ispzKc61$'Ļb-t5RoXUU#_V>Iޗ {p7:B +m9 Mi&PXͭ{`5 T=? 1?Jޕ޾ӥ- ⪝>GgXky݀cjtxXݑR[PH'㹺kT{Ԯ>%8kJ;!( &׮ !8f''nU`uj*.FEXQ_J[3wMx,#XɾBlYNcbt|wK& gbVx9lZOO[6GP{,=؍E],q"~>> +|MHAm-ɏru6wHȨ>"&㙫*;>ko<_S\\wzԵ2(uoO#IP ı%=It4}OSώ:q-e&E@ ]F缿\P?m +A9VIn o?VQ&3*r1+. <m}'_9*:8eHlm;.Zr_IѾ=v~R?5_dzֿ_Lrv +n${D}Xx]Bqf:*jb_ #Zٝ0km#pGNY"8uP~S*eZ1@ ɹ_aP?n%7tV5oa;.Bf=Kw:^5xՌ/ɲIdWuu lї""""וb""""""""""""""""""""""ZɸcTFcA3C鱗M^ߞ$utқN3W7<|;GIұ*SM'ܟ,ߤɯv^+z4mף/>C , k[eR{SA@g1F ˯׭}p;qTv7.H;-JTdV~l  ZbE`4P=}~iֱpOW-7)BsV"P>M|ᗘMUY]|6?"OU3s(ftTnV&@;5/HK+i@կmw +E{G.$1V#&<'{}fE4:B'c  +kE +{9h5]-STt7ckac@]hTS"SqYMss+!MڕA 7,I3]yW^TaGVWY|B+I(Zg1Pi-koZcl;s3B _צOgNƵ=HI^$c\uv1j^"ivXï X+K^f_-îjW>'=Õ/ݝ j^os:e7-zŸmv:ߙ2/+-jO|LY=b< +5oTop{f#ԎؒV#1 _dQF3Zs5T|ZV |/gz}ג,P{1Y'}W0x{,ZS*Z WC* -I Y'2xu A#ser*aQKJtM $ g?.~S ^/m'ZtX$@_H?sZ:(ڴe$]6ߍjm:]fv\;JIJLJ/ rv7ݔM4,T3*˦Ev#7`OMVhoM]YC,ߐߴ`l.׵5x(A(v}i9͏c]:ԛ#eSRQX +?(]7fQuǩYDh=36"""""""""%ZcU,OٚOq]5.qfCo[ՋZ뗮vpq}oöp4R2@.{4*ݵHnm~3hb >57Z)Zj J{s XH:3yK^,TމDDDDDDDDDѕb"""""""""""""""""""""%-T6^d\h}}£5B_RXUpL _Dz(VSV v Sd5**iOGQ%l +|'-mWf""""""aNWVѷTF x6Ė{,g\OY=73~5Hx%Ѫ[x;ց kzW>}>;,<ڣN<{ᅡfT( JDDDDDDDBUeO.=}7IR3kRJ =f^ON`S] @l)ӱ jiFDU$}6tT22,(^[wL\,:]S3KKy>w24Z2gg5C"@OإzN{/lpQ.p>g^GxA/DDDDDDDDDu7]Z@G@Alve*Ҟ:S۷|;^N;OLPA䧻w?͝tdWYZ: iYC/oi )EH#kHYk~>]U +ApyG`H:syZP '@ '=DDDDDDDDD@ҕb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӕb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ԕb""""""""""""""""""""a~a z'!˰LwJDOܔd/- hwq  7ٻ{^])uL,Eeobl=UjܡІv#Mx%0 T؃?8%ĬO\H #+]SX|T uLFJĵV"E޶~.ؕn̊:wUԁ(zۇs[ e,7l{Oq)+WWuamHa)V"""Z95 E&WNC|]-@.ꠐ$ wܬDgj(rdlo_]JĦ+UN+/V@vR.?_¹UdG`v;[5ì켂6|M?ŭvGɏ%.$3ڍy:艹wZ=WoqEr?{~IJv{[ ͲF|f?V{$oS.5uicTg dhؽCdRצ];v+l>"VkJ165Mq-ɵZUCVt +hK5v:C>qbOƽƉ[5zO}&dTrCn;=u-_ՓwXԥO<í ψ>|M-jv*@rdP(Wo]8 cu6) ܏9% űyqT>mH#ͮ&JfS]ݘl#2Φ[qvAR7t/FZ#zLՖé}K@Bc6t;w%vԥ+ca8煣` +~^^z/b +AepñRX|qٱJL{u.?$;l7@,3WI%TPּNʻa AYmK1[J/MW~|tD> ˲qf`"!V 5k7݅+,9X,J I o}C/cq- UWIwbH<cn%v-55yT4|ro33tlҭu,ܸ2-ݷ_-18Hvۊj=L8#j!ͮ/7[c!WG~hjlMKu={1G-{ V +rX2|b;yS+ LZ1msR`*jeA@r ;κ-TTrV]F;:MūAy.rWd(zhT|TC< zaxRÍV@T: x:05,ek>Pʤ|+NwO1Jȳ[X\ )~9F/G4oSzw37-^~UY_EHF+l>feteT1N)z=KYxvv- a]ԁm/ul1'CLrmzkUX$5mxY9OoO\{Z|F3*rЋU8V +\T q /ʱ5iZ6~ߪmz6tZnN] A:}}6V*K.bv ~Y:5ڕqTLʽd-'GL=Cx+V+$wjF# ./5z;!X7WG,Vʖ⥙N7qr?}=1V>e(R՟w 4$v-w׏?i_)2(5ȹO4`V,Ă=O:ޭ2i;)*7w޳zKΥj Z%U1Yt6f㿷]ٙy*!hw{we{^u5zh /=՜lߓRd:`e +RR!@!Fǰ}&*q[z&\쎗qN̛lnHT}қ*c^*Vy#LRF,\ؿ(0"p{LjfQ*{UUV؝A׍ͭWtޣ~}U5ˑMJCVHs` _yeuj:FUwŃʩ[ߔnm~7VՂ >5tOonq}R3* vQO۹-Ѳkx9XirV!e$ѐw6z6^jivՎ 8۱me['3:=dYfV,Ǯ*Sl5o޶ [ȶyը\*I>ﲓ/WF*R*d>msgұ:M+b~)!+ywM鹝*^7wb*~ +;#^/7!5-gLO@ca]{adІÍ,de(ն@ 7Zubu7Seב]ӱh7߿+`ݓ,Wuι͙ :{n"וb""""""""""""""""""""%M3;*DeTƯ !N`$FlvqV-9=(tpU{ؕa +*cc92)V .:bT&$6~%,W\cbN'"%kLaň5 X7Wc!A'|ަGN%YbYI;n>ø`UUמżG9Z }PkC/ϧIMv&CKm <3 1/)&ZcoH }6ǰo3io)lzT__)#}%3K@; e%YAL5?uww .UPkJ;WZNJ7?`fF2=u"( t<~i[լFT~ At{L^ٴPjQ::bu&JYa׿H k:WS}5spCmImk*yG^9][j.]mAf=6ەHeMa΍QX 3da߇)n@F`T#Jlx}[&K( + PiLE)} UAb +SCgdYB@1W2ݑvJ:MGG}@UM.PWv'A)+c-A PIgEw+\Pnb]y~ݦb@g`m3. -;qRЊ4{=DDDLtPM8z%TaO/RzW?|[nMyWX+a×~E"~ѕb""""""""""""""""""""s(˗Pu7:!+<G]'ʨߘ /Շ) 2*,aЗ/iӾ.Ժp/+lp64toJ`okIs MVv^=0n1`H](f>߷i8VdN%B?s,|<ZBk{cgP'@zi>fc~k:z~%9]Y#v9^ng}r?si.9e_e5roNy(ͩ3+SRwoAԿm%\;WGo_3#cuRJX 7m{k9mĩ8{)6px;lNlVbaԵujgA>̫u&>;kP{AǏ;Lu$cb!~pwlHޓfmm39,{v$~ .gL '-ܽ 8宼f^=mTTJsc\-ı +]*@vP[D-]$%ySZٛ` [egI|3ޅ`]⮜Gm xyWc3Iq}RQ?$mM1 ]0 +H =LҲar#)$N=}wu +7IMl;*s@>K1#mL;*ɷSJWÁu=[ gn*]bfkq)zm[Ue+ݼjk~/§/+W{+䃣S6>@~ŸMc<ۿmlX7uTZ:f7ĢXލd5Ş]F{cxH=!]y96ݏk 25BzͺV~("U'Gaw{̤JԹ~XqY~=ǚ ,[:/S_E身QSjuuUJߺ~*0 f#'TӃwXǛx,U-:d݉ӬE7gdĕS%;2ūJ֡~<mtn*`UJzMKf᣽:3rjYUv9$1`eA]պEn"hʐĘG$7O@۟ѭců6 ʴ؃D{tz]cb7Ě9p[/jr)|Mؾ앨;.b3R]ZzލPҷ>#=Rqں{mk`dm%MV,*eV7?M Uo4A]{֨lfRe+8jXw%n*e_d;U[@61gO٢|H?/uVC'MWur7د#u8ˇJR*YOk:OŪNԹ!mG}~F.N0p<r A%;%Ygy#~/z@`}/p|E͎,D%=i0;JDDDaziw0ϏRGSNi+DDҕb"""""""""""""""""""'V '9/^}>9_)ŬPpwM_Q uCCW12[=[eCƬy;C7o0~)*} O1s%*:XY؎NޚZiUBhOs[WX5Z;#?K>@.RC8a2-_f+.U~Tm$y2V]ػͲu-t sm!, J,Wz-r|Ms?{[ut:`F7+SӶ>*|A `-O@U9>]~^8wWUoY">[x}otW$FJ#by^_{8fP|rU 7Ӹgtͺ&Qij/ +!t֎.}2>L3Y5Q֣\,Aη{MRV V>l}w- +.Y˷ܒ{=/tޕ*4,[\''̧QX B2n0;#Kwt,[keg#c١U 0yUviGGɳ."#n T-uR9H$ot%ًө*~Se%]Nڲ胣Za[e5C8n?zbӑfR׫l^.d{:WΞ)?2Eߞ1RNbӂ{լ ϋ9mXX5t:FIŘIofu TUJ߹ MWLQGZG;ӎ=%c]ּNk[5Ûz\rz\bߐ2 @0 {GjWWGJI޾IatkN_5-~RX|~ڛ|zzPUb(ET*4^%YԽ/$J4Gi&g tXQpX?Yӕb"""""""""""""""""""%<(Fl*0˚kTś$ɗ"""""'@ KXTr5 R:{K-BdWbV 2OR ]~I:'ddDLl@N qsJ֪"(UF]ԕb"""""""""""""""""""""""%"V""""""""RV"%%b""""""%%bSrՕb"""""""""""""""""""%}Oft 2e:Bg"Ec}x}^kBdkڱquLzWKήiq<#v˓KXj)uaǙR.GH~<ѓVRqmX0b\3N컭ͺbSZ-CxK#ȂGs.Jf6N}iUx-#;:,3-/*U.|mH^-pCBc|9Uy pvCzЙ˙CVte 7=uw YH`A]}v%nJ}v&]6n<SYt̕،tXЀ{E5byf`?I+NEy(WSᕃ)"EL ?0_YR׈땮Դm0)o'; t9dF^e84:* ~s1:W^FFӝ+SoDmꦇt??y@9ΤX @״UA!Fπ{w3YTHm$9C۬uܞrqFQfcʠ̃OQ[ +e \2nNNr*+ف<īZ@f g-m g֠P߫{:} 9tԈ|pcfҫRJ0` =Ǒx9 =U9{ ɩ5 א7c.MMaXPÐ̻(l(jX(?N\y 67$+#'uA :98&S>E6H֛[m']9~%oq "VPEu%>zd[U8LQ@_@ -CF:oTA rYb67 *.o[дTV|;os3#?``Qmyu>9{?39 幑u)Iu/*K(vNI%L (Ur8nJu=ql TyG2_= rk+<@PQ0>lΥFVmdnCmXzaMm񹙑ock@ \vhm> +teU43cK)BFv/g|݉ؗ>>'cX.1BLv mݥ/s_F6+&ĕ~^^|9٘&ha6/;<޼v;P|7c&Oe6V.[X>#*ru;KUZJj{ 9^:usY`;&@||@ULޝOP"9U:by2>:L<J+-x5O}f,IDkV }M'O7]`Vn8ar7[-><{܇GȪuLU:?Op3kՃ%X[$/`Tk0ymw"s>Js[ua+ɯ}w9/}eޛ[PU;o3~2Ppkld]*㯪ϊz0U=v#P'[=ks*m6[cF'>|]Qv$ZjwH-U9 0;}0=O㋭|1XDo'WtLL/XzOYm$lZA EKQmK[` 0孀wvN x[HkURTv g)gN7z -p|Nsѱ>$0:ʸҝ^ oSu_M4B-[3;3׷sG!Z,y_%>gzOL)6A|I܀O]YEt Tb9>@ 9}/3 +X_Qh~M#%*6G|Kvmy7)_^:ޟiu@X$du1(|$lx]'g]X-K:+J3D S ݻzz0#`O?o]RPk88ig82-5uKQڂB][},kޭrtZ9p~Cd阐}Cוb""""""""""""""""""""kC-T"XQXe?B +]mV֖o~o8.SYQ_Rt{,u_UUVVFC@O0N +0Z*V']@'18]c=lZΓװGCm?&t='GNV=*OtUf~(ʬʺEַ2 ⨻#{ՓnEԷ*2FuL>tf[}5qu +kgEYcfeUTF!Gfa/m&3EWC>Πni:}%z”tܻs+k-,Chlp=+3-Kk-Yԇ=+Y0`l5nr&]{1[K 冘>I|31]:ҮVA`4;׾; L|8KP,ߺ#<z#"IV,+X !y0-y6f^̦VvGҨP#^INH˺/QºEo⨪:ui깟U:YՔ># Uf;ž^ x ׅ_]?6W^ +.v?z^k:_'jN jȥVE%ß߶W'W\Lt" 2\xsw#SYK Y΀0z@Z5V +tn.<{9cu#]mV+iuwҀtO}ԾdѕnE;VN]<qu9_xz|Y@>N]yU=J,!coqwx:7vNɭlƙXlYWz3R*ne2{w:}t*MX3rv${1LRLz_iJ=:F7\ų)yVDoDv>Ӻtݭwjc敨!t o{sY +cWȲ-Y.s_7\֋8f>XWu⥔bE&)rY=t0Z)w\#}?\cv/[϶Xa[|kʮ~u/]G.'sw_r+ɵmp9y!QTlHܵy}k^(J>~/uR +N ?_iɿ'lp[j0~VnoSU)~ߺi|~i/OBkY2̓kG=tOqZEY2''߾?cmj {zF ;ތun>(_-k!\xPAFA=0ҼRTQS"""""""""""""" Еb"""""""""""""""""""""""""%j%b"""""""%#R)XMJDDDDDDDDDDDDD@ѕb"""""""""""""""""""%lzw܎$~p&^OK=Zrs ZN/sB:\N/v5U"hH;Nrvzk_މ {E_= e/`)*_G%~$YVT3-*Zrf5wP3a␕dUGsnS G|kBYOeu6P5 F hGFdulx7wC`L \,:IJ~&s$۰|Cz.&Ef630!'E=yr?[^qΈ T*lllc/Oҧ zWboaN?qЯk듻ŭ ^:ֵ(jSSbk An!;ޡժj!BV3wf@ +'_'Jd,ⴚqUR[Գڒc]~7$-[*Z\ii{k_X1L K89aXrcm\W^ɖ>z26%/jRB&6dCmZK{z*;_0|f(-e| .>mqܟq3 ΙqfNJd"@f6o^YM eזXۈIxQqW#[V, Vb$#b^?Uu׉M>q [.>#4 _|RA}įl[0 +o9PZw9l*ez/L/ +'UG2TՍU]P*čMb ӕb""""""""""""""""""""sd.FU貢-V'au7X}F$mMA\|+$ڄb^C3M=,V-zP%+6l#-{N,Fs#d{k񥅱Qݿf}%v; 7ńzrXUZB] }<47UFȦnJkm1=VKz7uh,*C[ֻXĥLĶ\zM6:-Mp'V*v@=y{*zoO) j:6BqI]A`nIt +a~S}59FHx##UyNybޟw]@]=qv}FɳGG>ݥNW^A:MʠxB\]tRH`w?g>+V]xƻX(ՓvA{zW$n ^C o%_ǖeEnB)dzmMb +NS CKXt+{/Yx{~ݦOYV}3u +$-LPu&MW/C깷i)Zyۨ`Su50J洴(;[}O]cYW=vAEw6nx$l vP#0cM8oUS$]9_:鎻{i`[3k@:vw db;`uMr\UJO]-b_Myk},Sꨬ|nuV*K@P  +{1zHnjvǥq^XOT/otI;4YM,+=/cȸ>ĞgGl[C!WA2+z}X9 aֵ-NTbފHf5eH߼|%`cRUq3+)K5Gl5 +~eqi9+ߙ7=-K]]Ak|{)&!%@޶OnMM&(5@zjvMl<`bqMɽklƸW*h7b~OLYd_c +`#:T5T!$v{^feZ66#dvY*qvzz~[8|N!2[k;VDvFsu٘¢l 4ōz˭z]Gĥ0Vj6u*i-g8c 9/X9A8MeaվRw::7XTdվFE}[c#+kLA9:Vm)Mh2mmVBG\_cYƣ%8Ǥ]¾]P;ð:܌Uz0S +oؗ㯰kjr(?+},I4G羟Ѳ.[o@?@{~y}[? עA?m5]6ΟMiHhxӁhwo3uSߑ^EvCTvYmif`u[S9*h.s2e{Gvf.%O+Jk%+Z5Խ#ґXzH?Y'ۀ=oZtaC /)T0bbnG > ypG(ʎ;b:}Xu1VW6aT+݀H\Mb/ Shy@k#dduu]Gcc-༔kJ :Yu>9 v˭qT?`}oy=-d9[ZOaWS glYCF(" ڷ%I^`Ye6IʵBqs[ Ҳ9;1cȝ{ t.#g_]鎯gukWP:zAw֌ +z}}=rx`v;7@[d&( +έh_UK}x{}4}̦eky?c=X fy`^Ӣx'@ jzfh|lD5XI<:1LokB+PoJ5.5k76C`X]ALnbedk53m{k״ÿ+*W'rk@@wI$5~$=4]u`e?";]ѭnB]+6"Y][쎩-9[kz:r:'zU @~|'U0-b*$\;㿝T|CEi"|oA(r hlO=DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDЕb"""""""""""""""""""""""""'jKԣe>CAV֥ +@ѕb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҕb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӕb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ԕb"""""""""""""""""""""""""""""""&ޛ"{&1X)g:k*\Xl{믧\ϣZOcgWb3W&N_^3qqk[U-3ڈWB{^u;Ӫt +qrAF$fպ*Su`CcGGzYSCD13 ߒu;2O/ķ>CcXG}oGv>ҟɾ\(y޵RZ2f8Iڍ)`. nkfVYXv5@ sn~= +V>95dkumkz $7~"~90o~}z؋^X13E*w<"xcd2vln.dfӌ*0ZZZYjԳqshRخ `#۴W,jՆE,]Ay'm{dWuuRv{Օb"""""""""""""""""""""""""""""""'? VUXU=: 3(Rg[]*GpA /.ߧdz~8z1~,Ƣdۑs4K~)^i{2Ղqu:Nug/mL,:[h6'A`$ye:,Qºk9z޵4 +13:T )R> QtuߋKƚ +HULs_ -M1չvaO@׾quTOӧŚE +i}?NxiO!ˑ[}93qd00רz*bSuJ،kcM!k}N({ Z՛fa55sYuedޤUM(PA߾0TetouKNز̅1;3q0ӳ`9>}L۟?WP4دVfQU*ɒe%K#@ΛDiS=n l:<pWC,\/5Yau:ql\ަ|Xӏt4 /e' +=aF@cJ;}ͦȭl+U 2``O<6k*^EjH } '"JX""fcy$ 껒ň(` GP]b؇`20e::=h{ +Kw11zMǧcL_X8ݻz:-#r['b b+c޽:m)Tmhj50 LyZ[|̚jcMLoĮ}PĶ5ە+Eֵ:}:NUVu,`Mmb9-^C;zQm$P8#oܙ~ٛ\ӱ_"RRa >y7]c ?>=b Gcl_Xq^~ 떾3i}Z m s=]յ0TE,Nl4וZ[VPU|eȈ֕b"""""""""""""""""""""""""""""""&OH̴]ux{ymXؖQEeJa'ߞM?pܽ:7|F/ +5Z؇ʰ ??xjU֪{P;;ga`9zcز_M!>қ'g؝/bUYWCXl}Gc--tF_P:v(Ҹ?&uؓ؟/gX]R(o kc{Oy=;2M ֆ]h=)GLŨ]J)u^[/5U-j~w3D=|P^7~c=zNKo_+A@~cnr+W +v7}tF߿y?sZxX7TDl'gC-аqWZ2EWt;o突~=yHء=1:F&V*r·x=rҁo/J4RTV@{~I{~I;~"ivN·>xRȊlBX#]ȥ|I>6>җ%XhABb!+Z" S`K/R;AR~`7;>gIE)frPO=d|+WA+( kHҏZT_|Co?yXJCZ[bZȥ^CGGc̠ŭmk쪥9RH <'Nǭu|o?c:zֵt Zwkv.u<f0BX>?\UUږ( =lJ~,׼66;yTFĬnMTWuRKɀ$ߙrlq,̦yYlU$ XWWR5]C'9_M -c^j6+ysFMv7:3l-Cv:=cDDD% +DL|Vz`O﮻L?ODKg" +K @Swߍ}e@3 P|kwQȈҕb"""""""""""""""""""""""""""""""""P*ֿ +N*db#\lSrg%vF%Ocm*k£\b3kϮFSޝԺ5HU2QV EP,O qO踅c$;7S_S+z~pR07;ِ-P43惭חnZndk<]VF{x3Im3fke9iΦ!+MO;h|g]5OQpJGV $7ܽEx_=T(+QK-Chv7Yu7P6¨'~Uzrdߕ`yv+;*X(njc}P/owt+c%XM`R\1''{L9VmӝY+T괽H`ykcy~D8Ȇ6OhW +py!rÍ+WX $АQպ)ڰؖg {oY6urV0lqcsQտ/P\ K H̶{>ާ-~u*QF XYbʣa: +iǦTUBXo; ;0؀~҅·0lbuyzEu{$hþ0X+E]iw(AB4vq2>^S d5G:ŭ~lOW(~N9*;#3LvB w@N.(-]=vl'in#=:l|J)ƢCJIX߉Gf&~2f\8f>EUloJ!bu$ll{{=@zU@ubFƻoyĠ!ĬDDDDDDDDDDDDD@ӕb"""""""""""""""""""""""""""""""""RkTҩW̱cS1n{*w޾&7FQǎx{P6GV\GKG0M+;8:|)EhP1joI?Yӱf3V^.'`?]E RbHg&o;l2q˭C#VS4D&%X4DE +<;-|[ +67ғ+ӱ,P3R$=1>"\6ʽ]#M+hį6 +F(Q`WnX #D.g-1qQ}~m|, l )gdo޷lW1#]؝mcWSIWC^~ſ a\)ڰ4Y]ȰXg}e.5@4$A`hKIҕzg"'s<^]}noN^[S{uܿekj0`AP{gExºJgC}325mͳW|F3&*a}c-`Sh]jWԕb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Օb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֕b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" וb"""""""""""""""""""'uK1I-ӗNFv#X6hMz!0H+)(*)f 䓡UAĬD^MVDu,@`Hxb%]K.( J +ĬDJJ-Aםgn񔽎b~=<@RV""'S\::-a* _ HIrS}+:R>OQЕb"""""""""""""""""""%C ʢJqsJUq(Vޏ߼QN7Tnj!JU҇`dx$i~c2Sn<4JCsU>@7oXY_k2\-)j؏×5A;FgYbҥ؀Iɚz~(+,D*\r OY?C1YH %6ޥ7KC[EAYwH*k벣p6(w#$w:VGUmd+Uab +?iz޷JMUkKZ +E5 OAv#eQ2[q5.G^upzlGj0Bou5}50rzV]XRؗmYܺE}h? D/Jnn:cEEx%24_cv5 /PONPfWQf RN}c'7x{#Ƶn8ll{,EU=B $@`?\EkꠑuB;Q?O3 +$kΐXlz)߷n:WVVmy Öl}GyEV [R );;~ 0j6`&l`}vW,WiX\w@ty^R6Yw/J* EaUk?*ʴ=Up7[ Yf BTW|a9zR줶.]EE])!gczT+f{#qGM9$;fnSYsEA$q+[˶*|s=q"Qڳhܩr[I*Xl%AwUTm)]WKd $ ln@C+A`g13 ME%(R  reb?Oi鹸7CR +*Aeq"ſ)R(g[Pa}?ii>)ŲZj w+ݟ~^t@nfeZ.+YmDd>NBt5bO+rG˽ɯ/d*bzx83{xOTuNeeM]+Hkj8(b>]G¼lsQRA׸S>)hi~6+'mKܾbN5ԓ`:(?bOfָI߉**(䭭Ă +z=.o*IXIyz_+.o`Pcix_S%Ũ+S1 +ߒ"_EEUY}* +J)ȳ( &^}=Nȡ#߱{{SS "sX+BnA!t;RU#zd.f5R ^̵ X[jRH”;X(:~"ƶe^H6(u,,ʰ2 ɫCPx ްzkN ޹T =ujsEmը+!.F:VвZl5[Ư'ÿ uK1*魐-m+IB¾lDo~&VgY\{55=pQ8+frogg_FH, a"YT*}bY gmwC}#U~"@/~A}h_CMoV9=r#MZ*[8 +mOZ:73ŷ8rNr# ,er>-!N9/:::3kW[̊,Qx @w$$i)ȱ~6*C)&dppH` $LJoq(ImQU F>/xyXZEA&.[|y6᭙ƯU,ޗfPA$*64u..AC0D\\|2s:8vWI[o/N}$ O]qQ#2^ݓĐIΞq}GdfӘkzoaǴ/Xg#B3Umk%T}i,LFQ$sIo&Z||r*icIzkdi}9r;-y[Sn޳deUbl + {wܽz}Ie,Ky)ڒ#gDD@ѕb""""""""""""""""""""sKZ.kk |z#M=jJz kZ`i!џUS6KM,J 6Ƃc=c3zUܨȪ{Vd@=ϾDG\/麫ъ+fG +9 ֽg7O̼ZHmB{tLX_7-8,,<&_AN>G,5e*x#L<)d/_)ClUӐ?T_Y@uHc[ù~_LBnhk(_zDn]6HK?ZeuJ~ ي %=Vp}WjY`/w,|;bt<:~mgԪ{ +م3+/c˖~Ș}W:X55-$ MֲH;7 u:? w׵pU[G6յ3:/Ucl*(@k~\鬡Z쬤XVB׎=> ȯ˻Qǎ>ڌF8nj0{I߀c|,V]o[Vޡ,,þxϾ=|'f8;Օے/0༝CuΤ_e6Vn)Fldʧߎ=o2HOپپuƷ +}4`b:''"ĭ,&fC&]$k~fڱo^[5XuT'1U5[:nE/_igZ`Ie=ߚK66]EЙ +X27 #Ǫ5֠!;*z \lfAs_X NJK:XcLNQjQՕV@#b;j[͵Ox5? pAA[+k@68I3:ͽB?åIuCObv<_ntWY.>ddud8YX&0V<٫;kd@ּJ#'AL@z<ӕ>7oo=32_:N WYm2Z:;ȕIޯijt%XUwv^U; :W[WwRάt^@뗃>k9*ٕ=/JξZ{ܫprv)ꊐoqsN M ;)vgF̍CftL$ƏIʺC4B>.(S*Զ8%|2,j1qȢ$;.wr2U:a]D>)eh  +;at*:]YySKcy:e%ΣkKO2CAE T3~4T{?WVc,J t^ڣ*Z%ABu{{dP'i'V%)OuNo@o_QFWy\r fint ۻ:gۘj4U5G{wX-B¾ ɸcZ75t]>կ`[QYQ柬~lLf?R[]ܽq[vA:Ol~4Dbyc*;i-B{(';>Y.>^Uf@ߏy.QXUG*iT9P[a[_Q&#tcfdȳ9Ǘ]&#eN\V|ƢVS1:Cf zkUEdz+i6=]JW2Fύy> `822eo ukql=AiʭBh1`2uzPN*qGĆF !'/[ּyWΉr_ln6@z]QRun?X+k qb4uN;'cddT1-(̾-n$x||)Eن5;qM^]A nۃx{y@6[bV5 =Bq /}}&\Nw2:S Mv+W#qꅉ55t[*sWmVQշp֚g&JDDLTTjUZNJ7<}vUJMLː`A):Y:b^}&YyN;6(Nڶ +JD1s[!ZlV*Y(3$JY_Xsqպ} s :Z}OX9w(DZK@yڹ6H9ŻӰ¶*A`st[.uUcxeQCiyǸ;I'eu,qo5ӛE +P?%b6Y]}%܅ [B4w` w=6ޛ)kؙ5l6#W[mw"cJzyknuܩͺVft{o ?ߑm62!FOu}MKȷ-6;PԺK+h59cN§uLLL jʛ kdio<;. * +]< >31owqV6,P6SmѫLZ]#|p^݇cǨ7<0ʆEU,`?O,`dߘq9^}Kj5V)i<'D5CÖ7oV4 +q::oͧYxt\WFڊR|.>UO݄SMmaMweWr(mOwf-2X]RWu0F%l8֎H >pz_j KbAR8bDů~W͘sSWU &;R=;˸cu&_q!ʵ8l)sdߚ.5*=hn%‡TP1H|ZrwNjBA,zR~q*Ļ![R Y׿iL̠}G`Hn̆$v~jF/-wP'& 7pO'VOnG9sԭSbAu$=ۖ|.uCڹbV<[G`HεL>zfP>FEnηpجȚ#gLĸeu'9V^p(oD;biYSՖkJzF(tGu2o8TWv5ӊPM0:#s[z_p4نhUsWR{ x3/\Uyww*ZZKm{ir>¡ڲa `^jC S?c.̾6P?́X/pǍY\gIߟjTl +4lC696N l7W*Y[ˢ?HgPOܻTOÊXW^7j:PwR:U6A{|Acۃj fץ@]*h~s,deӺeWM)1d<$.ͭ|ng-ru&bS\9Wۘ )*`dWb+;V6$n}׌L`yT`4L['.ʈb N93yi`NzλُM_΢שּׂNF1PSjf՛~W+!1rUP8XDory=2`-ht\Byy>u+W\dLppɥ~D@ÐַSgC6W%8TAކ11e*ܛl +;)Jh{ߒGio\|Uʱi|I)n=ҝ4fuF|b䚒,mXRk{͏Nޱ17Cˏe%X {o[>.y98֚즦O`x!3k}x. + z׿k-\ąt4>e去za`ޛdg+Ty97`ye[к&#eeUMgKyGb&7Heq\nFR貰@ky#zk0]C=`?6u^2[*{-_W +ճkas7/rl[l(a]Bv+R~ƤB2Mܱ90֐y{&?]o.B-l[饁@uf>Le[Jܶk+BT('c_\lz\ZTߓzf~[WىkVXt5 0qz` +ɰhpFl᪱lR؛zElSٓTų!ȫ%RsEjv,uf'~k\܎@8q|yo[cot/vvf&I(f`fB˰#۟/t\3/]rA~g@";'_,=Fwedbǐ BkF^Mh[UUuʶv|*ޣGP75eMX(Xm =B71ŭ\[jb|79\UuD5uFÍh'teY4K%J#F~bS(g:5IB#$>SI߲"-r1vFxkڷ&&=k|kEZtgm||Yﶾ\HEXV7K_z"Bx_@f,A}cYTf`*TLl'KsmXJ0::6?3_:@Ykڜ u;mH$ cl}֭6ؒ{}5:P^A,,8ݎ{L>X?K=,TF^8!N:79}&Ŝ'-zvsFtuS:VRvt~GZƫ;ZjF)UZQ'LOܺwS_Ow?]kt +U]̢4]J=6K qw#LJ>Wu/B? +ij =r7SGGG-":F`ׁĮ> +y=X{Xhk=|+WbX;p W@mMѯVElKA@uĕ=blnVE5d~ߪb|&'*qvCތjݟ;-~k6U52Zodf|?eY +n\]`u%Fp6mJ}\o+*c]9qu%̮1t BXL"~^~QG-/.?7j! W͆%6|IU:عnjJ?PXoOG+.qRVVƙ"Imv5-t.ϼd#6]/۟5_#~T=Iɧ'=cXԕ FĒ@繌.[' B/~{#CT"ޗ"ַ-]^zc.χmwB>GBJ2z:{:m՛hoZ`*Gmvwܓ1gFUk.h0^*A×v:5/oF{VXB;w.{kc|7gՕb^kT(T M@hܻ󨮜{2WWP\TxۛKzJ˿Ʒ4mǣ*)zEW{$݇c&'ď)e2\NIr6N6K۔i|{EOS^JRlv;q?FMy BB $I$hL~aTb]8EcRQ>@:6V0« +WFE_[ml=z#.]zL? %˗rk_~C\T_-*QYdqQ~ݦO} XF`V#cghְĦԯFGfB:NΦ徫БXV̬O=J׃='ǥ =q^M};x'AT!V]g]~R:3֌"/mr͠=;;:FVoĺ.*`nIg|0rr/*KjtP ̜wT=n@RfIAcϐv +- +xoec ѱ*bOr6G&~=O>)T-ԭ.֥T.gKek"#,B|ks*Sj55؏VW H_?]=T]8_wǗ=j:7dgZl%+Qvf;A9"lkUB,Rt+5 T 3.r.[>JqjT!^$ @v4>fD=!"*CgrbKrZ7ŋӿcbnF%7Bz<ߩώ3""֕b""""""""""""""""""""RV""""""'jKe>A 4W8֊{Ҁ r%C?_8c3S~x_ lġƪfDU.v(#̻j=_My\Zo̻<[R^,PF`# @-]VASb+p`˰eV"""% x+r +DU +@}; XƮfDU,v(܏2DDDDDDDD":˘⠮TE +*%n1ѬKI3>MYu*uto 2D1r6"rV\C0Rzߞd-ՊjE@X +Frt=x"וb"""""""""""""""""""'+[T #9_IFZݑ<4w3>@ AAc7P½rqr^lC~ۛ~nEZr y??iv=vr1[>Wڐ6A]o%u`V5|OfVTIےK (WJq:nVe\ҍyڇCA;iwp^űUikue%6YTηg l^U$POaaO̻ͰԜ'LWzȖ|w,gխv5 kZ̅8Ey)`j*XOk}g|àR Ou2%ֺGӍ%W5}Fuh#0'{ŧ%a"&+o@BlH8Tb:Wcvr*BA:YRꞋV2j su)aFt]_ƱЦN>ױ;s:`A=_!y9 +y_y\ίJ}P?YEw)/ATM1ֱrlJՈk|J_gMEtꍀHv=jG]T׿~=3r +l&y-]ب_ZmS0mWAƮPJ%P_C!~]+^&^z_]6UmWn!~]~=F^V9պ5v>u֧;ֺқˀ/,NY Xի`O:uֻ9FEGk98'd)7ڬX18=0kǥӱ%ZY"¼wZg,|\\̥9#Xvc`2g`J#Ya +z) Xn,Ím{vJ(L-v5nη-c^O/v8u꾰&w7ـx.ޫ7be`#&|I_Hà@zr@:ig̰;(9D7Y(;D 3m1rW`,C2K*^@r#bZ +ƮbPaTgZA +L[:U A̾1+l+qZ>]kiE^CvB { EӴTfx-6u9ֶB26S;MG+鎡X'u+AbP@l3L܌z}&YQ v| gg7 + w\f[w>2uSb&q^#ײv[S#~A>A٧9{L1<*kj5&i/%wHChP5쒽" Еb""""""""""""""""""""r%9K9]Ƃ+x6u[FX6&n:`ܛ.~}(e߉:]tYrɢʯ",iwZ;׉EdcZs_%ԳTV,kQ>R>SO& 8s>2ovnu[3Gs?Qho/֊J 36 ,o#`>ϻ"YyWMm:k9)G"$kUL`dσ4_gG MxlB>~jUWR>xy,_GV˩ҥ[T5~>})}8FvwIk?Ne]ߑs 3僀{e#ZLq2pU5-U>U"z]5u[+{`5ʭ.={ȱq!U:)'@1PO1zQ]qŪ8 hz$hiqμA _F7mul{0Zl5;}jzޗiv{`}x]_3()ƷNk z E6reV:>On}ۯXsZaWmv_V -ùu?]g֭SZok:M=! +練+9\4؃]·_wd^HZeV~vF7GufqKVʕr6&ߪnFEtъ뜇]S?f:eٲu*//afol xRG-˫|[Q}v1}'!ؓ۴n%V2~Jc_*~2d\*RtaUߴ|JEuƩ8WrrH6gY:Jّ[XTi=n(e ws>!|݉G[ 1H3GKYkYKuׂ~_ޭc9lr;RNǺU-JHz$֦XU(TAzC^z~=;U%[h߷fwftsroލbmnmy)l*z0d\h/W~V 5T5o +3fEi!RJ֧MqǦ+UK.T F5}k"::]35<[K|M)awOq>"NvăZ@}{gY8?G=9:0 P\N6u8LZ{+VUCoG;u +Xa;0%Q>FzYTZF٫3h"lPuSi˝ʽx# ^`^.ԫ狖4=ՄR?@_yNk./NN7qح|#M0#W8%xV97tѕb""""""""""""""""""""%J(l{28c5֨X]*-h0P>LetڿxqQFq)V" +QFW cUm:ı+A/ې}%c)p5e֑ss a62Td;RP/myħ-x[Z:0FU1jF(/wig&Ma+e9vze=r> kb62 +/a`&-X.ԉąlKԕ/P pSZvP;>tWW"$.=iˊ(ZP7:;xWKN%9ZXP뿮UKJE +h4'K9X8EWg~:ފȭ]3FiS! +X }= T)P@ҟ|.w7r0*mږEb6;K To롿o|FxThū@NU + {&5֭hPr] H*$7RK2!`AS…E Е~B`m]^dz/RwGa_J]X}tH9{N\Z7&fٵ4ҏdci T%A#nkz_(KC@Wj9b Z5cGyUǭ*^ }Ȉҕb""""""""""""""""""""ZLJ(3UOʬV?2 f+ߴZ`_XK,{0npF߷$f]U:Ρ–}v+vBckHO`ԙpwt7-ceWX}7b=:ʯ$CTly׿izZ95E%r]Kn[*S`Mv""yz=DfEu3?pW5s y9 Υ؈MDOڔ)w`$f*.PA)"PO4ܗz2Ha4U?f?f5NjbB`WÀTH + FL\֬K oBr=u8\*:)'3nKguL-$U:7/!dZJ˰Mv^䁳紱?RlմB}w=2+>~>Kս;pTY=br? R5քʜ~E>  ^|@0I,wU{RX\U-lZz.$%U$%&`]M8E_UIwݛ Fo{ j>!swL9rJM} T9.ԏh|2vG_-DZ7)^dr`;#}G^hyYe´Pl]lcz`b'~wyǭXfҿ)%^`{9gOɬQcl)"s_z'C=Fykk7Vړc[Ԗk\[_n\9UUJW*;,I}..ťrz2jۧjsVʿ1T{5A֫8]Z)[xXm Va#}95U:'[Tŀ7Waۄmtӆ=I~g~ ĻkW2mŗ^}iA+LlZkgŘ^NUc +8zoܸ9ooyo[X JI+ɀ }~aӄH 7þa؍cOuuj7s 4I]؛ +J'a[`@ۚߋrşXQVu^od=wޟV5DW3X|߻oDλLg]MY{QW)#a66<_6%K9=bW}0}'6z+jxV}'C +z8crDg$l$ɓs5VQ5 t{3YjeVEvY$h1ȷ((j3-Q` ً@XLm|.Az[^h [0,KpzUqgw*v Ljz)^ˊ/&RR+hA };=_+v5oևdΛf-vf"]rTgMl(fF;ߋ\{LcVj!x(`c˰߿JYüZj~KY"ºE{01z6>Į=zª&-i wdo\81:] #^=]xdžݽ>6ݶ{뷓gu?idj#)C`1p>"Z--Q`F&'-}iZlǨj>~?#u1im15IZ +*5P$})2WBLO`u̬^=錪Z[qQع@}z=OgCmS*˦[A|;mדSh75h f?o=N>9avGv;'YT +@;Qz7G˭mlQU`6:~\|w]Mեĭ.8P, ~`neauzZŜ.*,q1i2ƾǢ—*wlxL6~{ȷ.<8|vַ']75N:b"m6Ÿ_KSy|rZ6 ~e2:͵V2~ %B7oQ*#Yu܍uPEܨX>m]N`u'[w +0ŷ񢫿6@n$b 'n=6뱒簳!RUDm: #ShAc" IvPvArI9=+[9>}/|]Gc1zIڛVڴ3n@̜ΰ~?PWzʁw頻QV_ꝡH>ǟ3ԕb""""""""""""""""""""s_ *[t?ijmw y;lqZnOoغ{oc?R-S.=w+:7$~'SshY +aï_ =|cѲ+tdªUSl/7f=2:l Zַu\9Y+cZֵbR@6wt)W:^ mն?tC5pzmjNȼϯ?a9 z~Q z/:X +X$}_8#15u*ܐ7]^ӎS~. }KOi>:ɂ#cZ+9*`*ѯϩ՗b5-rA +=h;35>@߶𤋮 bq/b/S>9N+Gp[e:kh'5stAM5=\Hj蝟>؝*KV*XAxhi}3:-,`|v~ )Mj5K"Qj+hSCǹ;2z^ۆp}7^Dwa;y?<ȯY]6uA +Qδ<~bElBeZiKUEv SWYƋ *;~i-ba4;FQRc$vnC%gZ^]t$ڶ{Ka},>P֬^-hl3+y&Ya5z#뚜;zQWGsoɺxC!tl76w-EzY۷y!En%?BF}EzJ"= 7ĩ8%ɪB+YB"xK#2?1'5Ҳ3)3n,K4F|i^?A+W7.j)k;*@D$iz:{nTx֘k~။K+( ܑ yWl ul'4p5bng5k Zo]+k|{-S1]r*TZ:Œ|;ݕ:5]>Z1k{5t1m +d5w]ƶ|qc >:?,kV`<\'^=b"qJUʷCʺz޻NsOrqX-BpfQǎuN[N5xFV bu1K]Klf5IV~D@yK=3!W*u`cYaJWga̜|΃jGcU U|MLzt EP:>܉sY}YWV3C)}=?'멻ꗦ>5צòCL+ǿlʮP17'Sh$ +dls/F;ڒ)֏6 ,WeX+$[#2JއrW~G`voZ3ueKr28  bn5 TY?]}Hq3&oO9U7U:g*{믤ԬDDDDDDDDDDDDDDDDKYXəU6## 4{`YH\<mCMxWPV74;0:oMd-[1#\pLבϱXJRҏ'$I?y~""""""&{n.NVWRvY{/κ֥ +@OQ5]Yҟ%Pd^+0h3k֕b""""""""""""""""""""%& 99J68jg ~Q Fy]&]B[$Ϣ=M9ش^F+:uzPn=+\BߗDJ6:5uK:1u0RYw[$"a|p.Vjg䪐dl۴oRYrEm~qv"&u :VFUhi#`o^-5٭sEm}67-_uy4Ҵ3BTy}TDu~oN­kVLIbIR>h]6;-kZJ>Wc32Ͷ((;wDM/Nv\ޟej)uubK 6FDk7Q>Resw~ҺYy5I )a^]"Xͯ>u[*KHwy~"%,c*1T ٌ["t5"CT^Ľ[T~nbH*I]؀{v7+YS`ۗ]kgf+)Xוb"""""""""""""""""""% .lūFU7n|y}׸aM%SjV1=[T'J}z [_Rxkؕ;V+!fP~0:O?>ɾak5kw +Q,AGӼbee[N}Mne,5c0b V9B~Fw9M9 uՏԕM^vOa&?AW2?Sɥ#̆^|G·i\`u `uv4@zetq2r.jj={R~3/E[ukw` ;?@K%ނQa 75!m#ďmTn,z3^WJ(>Ŏu]G ]ތ˽v91;˾}滢t{ͮ6j>tG.uhC =j՜؊;Tl} >Έ[UyogdŬ@Nƻoaf|?.ʷԻˍaU?>O}ӭRhS:_ aG6n5b6>VG_v'=6^)x?|\-|jWc*>r築*J-Ȫ؂UME#5S7LgW.wC_^n/Q|J([6>_ +?L]3)tVHeǩmwF} k~әk5r,$/oz$/o:Vĭzlk `w<ΉmG㻻WSTkO0mLWu?u7֎Qxd:WN@A+C'я-o/KfJ+z+5b*[ߺyw.x| n\{#-lZZuq3 O7=:U\)Ww}(mݥ ƣ k.Ul@#jɳ1U~En7*;7O9Ư-wSG|;ѱz8dQ0?Sa\9_3Z4dOU_ɹu0mzOʸ mzj M~"8Y 1}WY`O44u[=E`JkQY*t +r>smNǾZ3/IPJii7Sz5o[6Vڏm0zN_PtY+0EJ-f=w +ۀfJ'}>CgJY^O:{Vַ-~Omjx{y.Z_U kgr/O=Ir׭}kQnxng]Mi]em1FXa18c)^r (܀6FYY}.qm6n =Yկ˯୅,YhuT]fbui?#3l͆@Q;paҞ<䦆ɾ-9 `5u]w奄#2r%:a?YzoF1.fQk2qkTSYšÊP}-?}?m27+j򬪻zW\ vQk=*ݒڮ𨱰f'F>-ǨdticxbِсҺVZf-U-ߺX[v_f$:]~K_O_=.ےc|]Jh~)v8NkK6L.n~= ð~%_^ī ۩7PϧWcVЕ~+~^6e Y[1lZP>A۸|~rKx]B-*OOCd)g)6磌0:X_+f-MzNW3^hci1@A:Q|}N~kYf=Xh0{e޳5mm͕kKB*#K8@z2&Ez8K?kµ+kzb+2{#;6n*ױoK7!o=rW u9u 4U;]4O̥dfUZq[T´(`ܔlmK}'7+3F9+ +k!6}ϱBճԽBk'{o:GzJ.wUh9%>_26FN~>o+`bo^=+1zzZ=c~}69&et`kW%i1vx2$۴ͧHT5(O *If&+ְ5lcqo:>dвL YdT6Ԏ#?o_62I2Yby"}@S'osMYY:˭Q!9YX7?!{7W|1Jcbc1We,~o7݇n\yxK\@{Hd%m|-OuDyF6q.^²&3%z5́rw m݄Jdںah7'LlD(4Tf-@MŘWnKTԅ\q;8f.R6 wĩ 1 vߢSzjYevK8 #-g՗joLM5z(t~&kGPpO.{%r:}c`^?rHҎ1kM+NFn]g" iw3e\ Pinw$KymGiJΏN]+c/@* +ȍv⠝}bw0t/[(* +A:6VvN] `Z X*O#~o"hT!b=2mCnnZgj/0\Th/,/fL:-N6ƵjFm^7.at|Lz3d" + `#':luVev/w ^;(=%Ͳ@3YC54/Y]ڕ0W=鴠Sd1` `tu>UPꋞhEAu'rs2TCW=Rs۷V_TzE-BLK)} ̼L|[)މZs47-wENrdZͦ#.ǰߴв0r?ؤAٔ{}z6N ݁j uw,x`:ܳ.əg*$v22z5KjU(dl4ݏ:251]Q@ pPK|ݻM2QNu=WB|z0a~Lu.}ؗVŤ=1$0ot1UZ#݉IL?[³m s:@]+q[7*;s4OmWݓj#^Tږ!z) ǹZ?df&(L­E&XZV/~Qe.)MKeK+WEl_$> +︞E̫R#"w;,ܙ=;wѕb""""""""""""""""""""S~ұ3tWW"$(F 8c+E]\a}qWӞ[QKPXoΏr"""""ҕb"""""""""""""""""""%t3c[Vb8uɾ#,X?oW ̀[r*-qĝykml5 +ClF;YRw[xsz==CZOsKIZbdSe+Y"`!d2%06mV VQG8-mwemœDY4&K^:hߍ}w]c--c2`ņ 㷼ZgW_Pf g\9wFe/h.cu<|bjRՀ=ǎ/B6&cd;c 'CA|h:&sVlӒs_/09Ľ8EXve+\)+˳cGZq ϐyk beedzG#;O4,e<[¾=üDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDӕb"""""""""""""""""""% eϫׅz[`Um=iz'KO/+ME ++2L^en8G& i"3U~!?6Sʗ A;|~mK-d-Wqm(؝8?ܹ{W6v("$xRԷrqOT|Jyc,3N7Zyn$6Oo%߅zc$0|9 /1i63/<''N5|a$?'ND2{L + zzi 壿iQ-C#ز}@"hYOPw&;s#䳊3p<@oM=Z3o~lJR6J$0]NMqԏײB) \W?ǣ"~:F:'~;D6c܈Cx=?b%PfJ)[Q#UE #McG::56%HCbhC^ˈԕb"""""""""""""""""""%>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 5/Tabs/S/Type/Page>> endobj 14 0 obj <>stream +HWۊ$|*[R*4ٕxl7c;;#BRU`Xf2uˉ'^N=]?>|t>? /ALRn^6 &ky]B^_z9D|odg]`yD+${>-sx鯾=Oj^iw2Y/͇;EO(/|W,qy=n\A{7|3>#ggK,9,X,_`1ō(هZ_9?nC8 +ZO:]=Y|tY~Jwcvٹ_$ؖn +g gӻGs:G&Zjؾ2&"+*tAbzqi(TK앇OV '$ŋ$*9EVgZ!)@C",c{`_޾O@K& iyv:)ȔVi JUQJšZ=E塔n~K9("ڀB8Ey`39ľ|7E7vkl'|7de5DQខ^"i"k8ܽ RkTF*:ZQ/%;O'M>b+`g"o -"PN3ok9 <]V+BEJ((nj87a 1U kͲDƒ H+@SKQ Ⱥ٭#I&&Vem#0"D&5jHOLk +dl]1TXT=M% ƞI(UR*glXwB'Rd, z|JCiÆH%wkf~"):co6Aq+7%t6TƝ4պ<#R:ol({=䪝' OӬ1w2j >EyMl(2!`dFZѲH>`>=YÉαhTAqPJt@y|Gl:nY,9W^YUDY@5B4.,Yxo h!Q9t<_eyTM{-t 9dhipЄ@Z˒]:՞Rrʽ(,!jyFXmzh, E7twE:'*`<|<(J[)́ +.PJb-ߚWWtl5qhv72_G6l"yMo87:#brm{mhNBCJ;}^ *RGS.|"5dgsN$=e[z6^G7ZDe7[ZTɉ٘鴦a@FPhФc$CVKg&W{7j9z(Q.V߼6țh!|V3*p93"BZh¤.: 5/8&:q'@zJ^ϫXF-|h_4kM$ %G3aSaH!̒Nl?SHK(I\} Ȉv4An@'LCc]`+N\g) +72۪4qo5eT; -4r[kW%+2 9 p +*#%tTO?q\89=j.<@=X6Z ?/ +j'+ϰm$AXNBT )sHvp8&FM(%5kn%w1pi-x}bźY Ӳ@Jއ|qjR#lm#|IB_b;L >e^IDV>Q#)4MXyS5kr{8*3- #z*] ^cњ_NÏ?pN$*$X n, p{S{9{FQtSjHJߒkxskjzWQ beqN + D&hUrz6 @0پ/ķ\BoPX 0/_c1Ji:+`CÁ7*WsH݀NyX{M|y =/.ҥ$Ҹ<%/X몊k627iʚ}؆ZZ?e$-:hZ"~8-Ƈj̍HP ^m{_U+#倸d'a'Y],6vsWuuixc`J?'+;#C+w&6F NLHcg7Mkxde\0d2 {J^*6tL#S,J\zҳ6׌,B9G/}C/6+'_@p6WK60t!݆JS -ɠb = +˖:+v0~Gp| 74⊚rM1SŬ2EAMrJtpk|W.-z&2( 䭹YELmE,a6r:YGF$k*X.>;' {WF|44rm/ekjԑZMWlf:eA7GԚZh + +ad#w`9Xfea5֎ K@TʢP6=_Dm9N.FKZ6>X:!πm.DV~mqZ`2C,c?|=x +s[p7Ihyrě,2xk<k|g^eyCw6:{Zo +w]g΅r )cG@[0Xʜke;DY#yR43r8߳g,7a'mV &51ac9k'&T[$ +6?ȑN>EP 9|Fve 3)b6R|zBϐMihGᅱ}:.+a1e>E۝R)6Dxd۔*MZ\Obrp-? D9## +endstream endobj 15 0 obj <>stream +0 +@& +G-*8]R4P@H +zI|k.+"T0uxOmVMR+Ka#vzdbfDB,0=)/b8hA;brx +HB`72?& kSض`ٷHj`9BxN1T|TYxԦW4kr;O4o9F@Tx}継͆S}<;\!ӿs17%J +pPޘnt('{-=h* L2?I$BRA}SvW&7ON&`z@WLT!:Cif;atuw]ȼCh^ut3Fjl*Y  8Q'd zsI:Uc(#b_B=XQG/eI?؅ ̯_ z+?"{qKW#o +Q,e^0wuЯ!-FUZ1n%mFiɉ +QhXvgT{SZŰxgܟd(E>), ts)vVoq lI9ql_Obټe:+ \ι'^aHZ>g: ]{L=KxK=VR,7G$1KW0Z6s_vzdD:"Rs}er#f!,D|'-ȷۉ5onV=Ao"BiF :Wpɨ l#n# zB+ +?$=U{P#WX=uuYPEUO -C7B}0R!]$kYpkO!p,3Q9!0/XQ҇S_3m)ښ2YJydF !\9o4%͢z][F= 1m-_Tqp}&H&]q}U^UmiS \%='eT'zyӂFx۩ȁ@,BM̺|8d\* Okk#xe1Oݍ%Qq5D/4\u[eHXK<`}Q@ +MX,}N}mYoσcG3x}(Ց>2Xqmh̕cS)ʓ7I)Ji\/1cꬣa:R +(~ӼJuB8"#fGyV4YtaIdB&h$}:IuqV1QcUDRm56\y1MrƆb\oM;љu|wY藘T}AMJ4HlwvF-Ts-Bʏb7h4"ֲc.cfKJ-jwWcBNOĶ6pIAd_|CN5jw6|#k6d3+(Y}ӚU9VL/wAKx]O;BNoi(e9wu$˶p`7npΚu6I8 vک$.]X̳y.7pJ4%M| EJ#`C]BhBXYHa+O*tB8QPBܖl$im;$N rLWk9ش0'w#-L)uT E +<6(<$fF+n\#d7fn"7BbNE'xmÎ(VKoRfb>es~ݺqi8'5gKy4mxh5 խPOuh.4Fy,4h):,|fOŮk][< v)3C*@seeARL:cR yo\U-OCo[c#T.G.PFiJy7R>䢥Cù S,^PibHO]_PcS.GO)LcZ!NXFp4+Ԩ34Î 94Gȍκ!o<\1DQaBB옒BG8n7F_U`h F+5ZIǨ"m5ȓh,&#\/V+)_;|1+i Y^͘hs$6@t?4Jdwm-DW_d{cc6o|_4AVٺFߍ !Y/JSZNiF`v2X]&MnmGFM81{ 4յV5dZ#lD%wQFq1.疭 n(S>zCrjREtiv#(ެ(H% QA}VZHR46s@׮ˈ[Ք(iORsπ9B8,#jyCx\=W@yz6apr- obAjRѧW069-2"pk&>ЧמAZkܰgrߥ3? ' +VIiA1qQ(lL ދA@kBp:TId ȹ +rgc$ {(ScI+Nv~)a9V*?Z`a`'t|5VfB(>YKUa/~4(Ԍ~,,S nJ - (>R!n}e5O.ToT(/yj/+:Vz_Eaz:r~ ]a5b ?OO?B}A{{ tz_=NàJ+H;i蔁A*9C`h!ٗ׳ !oiUM7E8m 'Nj⥘\T|F^^w2b m {K/"W~51'$ɍd`rT N=BG-#]A" KmGm:֖NF .,U0Ry"#h7xSMkSa_3TZz>w'A2TQ.hpZڴ* -}2mJM|EI gsOT2vgHC3x !*4We[E7>,Џu;MߐMZ0JEAT +7.qU1ƕʹv:H)Rq@z~ ڢ#ΈQ .]12t.(CWIJ1񆟏m7ʢ4?_Kv嵱&,NsNc\z7 xRhֻbĜ[4OXټ kp.09ߠsvnܼLXQ_t_x-g,B-Л5^`:)e!H &Fg9y#V$T/U&X-4$)]CSGAqiXxI -C寅# ۷A꾟?Rj4Qf'Nk=qdfųQc{Rvn?,n\唃p~R~'v7]7tߓ;Vpo$(򖡸Ÿ༂4 &(X'noxhّ1#[BJM]ۨ{F#VҿO9\]=1).R~_Շ058ojƯËRzN4٬LjXnmWYێ̘F^)n_'rhvAGA$r2L +q#.Q +k$^܈^uae7F;D2%mtW Am6={~YV:!As4t>bF{۶?OB8h:6MCbeP.@ ܙ=sJe{]Xm +5bz_aXUFe5m@V։F8([ ϡ}g5%S$w9=AiReb;{n-> OVy8/hJ+^['_-՛P96g_boxX'4*C'sOX`:nw;7Yp+.:*/Hl-7FV[W7vb ?4L$fzJ~=%P]ı]=qak퀕M߅Z -'"km啥Xȗ/K]v\V!Šln?}JR dgu;^,* /Be;86F`kHH!} w|C \^1pX(jgSiތݓP{DNu@gE + w`˰! 6a +Hc_zj]-+ ï( d\gA=!W_S2' -[Xtrӗ*AWx^tWe0dMt {i=!_؍r^l-,]J%:)"?UHM_*QN];g6~PpGkt'HRCN`<.d:텧j( Ssoy:wac\ 3 g:u#at"wM'H,ۚ5ǢsTO~ cHk ʂ ɘFS<2mڲ*6F ,IF+WǖVJn-~ӓlI^>w$& FW7n]1H !RukRP:=9zh0 R'=1jq< + };!/Ȱ'vTUh1&̺cVBPPS(tgKP޿S +[l?IĜ$5`&ogHiC#L=[$U,S)?y4cA'z*D&-Q3+5_Sv4Pɭb6I9deMwwW.ТncWPA!P^Oe1R \I Qݭ"@Gr|Lu/)^M#Q8GP k*M}]?TfoP yꚝ\x|bRӎrԖ/P9:BA웦qXCk(c'3Eƾo誆B M*{"4U| +kIY[߽# 2?¾O>F1k)b?--~5E8'9]nC93$6d ]R Y6 +&An|7wxt&[P O +(AMAA:$Z,EdgR[LKUB# #*vNGAY&}j`Xdc<4A`2őOE9{_%Hؗ3{X +"_\|Dn+qB[d=I`tqhqJ }]8ݹahLe"vSԙ@7j`䌲FdGFԳ2&uNq6N֤~]K'I(hP>-4=yjWg;%,H!Z{ 7?Eήj.( +,؂# q8Ov&dO&6< 푬rIBfNƾo@7$u4M)vuFWd׋7ͧ:#SfM4\tנҨkE~;(ߞtr&xK@aQKK}\K@z+bǵW^I"Yǎ]ҍ3(CҵGoUC0Ato+$1H#G|'r:Aa;{z'uZ(t rFURtW ^D3-h6d>Mf΋-(I+pdC\,9Qv. 3{6gKXR1s +8&,A_[MplBN?7 8aeC[ '>Ĺ9tU>-zPUTۘP +.Xnd2ks" Bޮ>T=OdoOĵ1A0v/==Oݘd0ا]¬M#_hz: l;JT";T# ECߧ^yyw&b..;4TQ%u1Py>0\ѯ3{Z\Y5 0URI ?JI1"buUƕG#hiZnJOmĂz EC$׉xzrvDn,p{Sb,TJ%ܝ %̉5X=da[O| +-Z=מJoH#0K}W. +䕫 ,3y>}4K옚Pz / ;NjKE6JZӐgS4/s[O[se~:fzb8" MR:NYNA0oiQ}a1'"|~gY`@ЕtӐ8fu5njX`'# +^,}Oȸ3m)66l\ֺR+#U6L"ńқXh`Fn3L-m^KeGgTfx$` +2iݝ +=)D:T9{7K6!3GL.M_Nj?ؾD{G6*i ZwH!_zQ e祝ߦWM&;]jKֺC2&B&a~;e.p v>—/A`{qL27IMjwz6SƠڀfdB١u_씢F~$ZʧshBEFF|U ~_&̦JsG[s"'`cyZdRj{Lh;39P 8@iW;YFr kнp%i&_]C&aR:_XwFc75hvpsK}%BW#KEhݙM+5CWI"Ғ +1$׉)Ǔ`tR~yץ81T[Bǘy$̺.''Xeld#ux0#a:js>Jz9}dž6zr0r!'Z ÷UOYwoa1vZmP7'Hu3lXa=aZ){g6XQLR]X@#i l5oܐaQݸ6a0H}bA"`DpCMrBq@i"MN*?U B2kQ'XL8&@ - X_Hܲ"lH`VM]H[sOg I[ckKC)q + +D0{+n#T B5 Tx41?2;]S~맥 u CSkRe-ECGc(!}Wl!?8T%ۜ  +{ϒ\tRG);e櫭ELPdlJ})| Ď0hZØkY ++QY־pL nN-riLXeo-:C˜,+a-s:/F`y@+ݪZ4.sߴbaݲze@Ėaq]-.wyqݛm(cf5̽~`Fd^:721)\6H@1ɹ j,x-2A]Z,]w +v[;t%xH/K_ƢTkwNrWV3"N~u~EϿ6nRnef+D y3ZSN; bE7nJ ,s^tRlJߝck/D?QNmqݼBF?@/CMf*Ґ᪔`C)c,•S,b;e߾K\+߀ +r;)Y1AO=E$rؙ9hpYG_-0 b3 AazwAMa +~ r௚.%KkET3czؽ3=9Uɍ~/d\UHsz3*ɇNUVЭ> !z3^ϪS!H`̂;B<:پ#c*.ՐyHzۭEWw#6a7{ 2 -"T m7a.~IIoFx2A="" c)]~Y%1ܸێ)Y\ٿOg`vF9׊IXlLDޣ+H͐;Usfz4?}&QÝz2ZR+,HY}E|Ld#u[:تܯt#Y2E6}0WxTyV=v) D+qv-sDb8ӟ/ݳG "N"/ܩ:rKiL.GFZ]JN, o[Zt]))|N]O6lӱ))a <8 {Ylwg)A۠uc[^j [OM z&[vY$s>οJ64Z+ۦv=2˴f>.[b F* gzMHn {Kq:,C[3="kVYԈ5(UJ%q:>Q8A~~Ze㧿 +_ +qGP]_e=Pw>'`&B[|HOsY}Mn髂IR͡iDfh{&[8 p6إhq U槈"/[,CBJu0&n~G N E0^J+Qق4ERV^RgbǞܩtWt].3!D悧acrIw̥bfz.wo4v҄zu.17@3U*RҺwhF'tXp_8a2Rhx2z7 Tv>E1]ť7Y;]]DWfb XvT:5ʼF/'i[#c7{wl_^ߖQMf-4J,lNk {* qdf/4&Yˡa>!(RXBbS<'o{rx#/x\QQ)bb8uZ'z8`V/_nϞf쾁nHfDDwrNCpi@w[6 d`apܺGQVyL;2kr_N09"]Lx,dۦ"1Ym *Z@iubq6 s;,ݐf lA?0x\R@o{!5P~731'}3sh++ +QW}=UAӰYly%:XMsҟ/NiuЙfQQW6x!e9P ?9"p (hbeVy8C4a6tj NQ\r)E`}HV鰦@"ݍ9@`&5!R^OVáx|;٫\7Qnjv^̝_%}* P\9ĝ,B][3jb)h椓ٯAZՂ>*(*6\.ti\s+1c\D$ҾIQ N!Dm$P6_&3_T㯱5eȩWG6/?NQsd/RZ~h-<*G=aiz"n44Q\)њ'FؐAj|sn:j_f|'淹SnT@`zܿb]]g([zqKdHپH28/C5_Y/)Ee+c,E!Jn]c\`WW:F8MH&Vj3>Βv^`:yEŦ|r\/{HɩNw~1~Gm2@,uN{ ɴ7Ba``.x"̠Q0OofP֝ D̀N!$[ܻs'x!zWÿTԳ˽Ki!Or!Q]MѬЀ0diW\첔B#$! .=#ccXRՙ 㑕t 6~іTxtg g'̒J7@n#pʿse,㺨b1Xr6 9˹(cV;EYOLGr9#;;#ŭ aG,K>Óӎ_kFMaLbg~y,Y(E4uδ}cN/4 K^aTNvM3vh1M.uaα{a N-r<車ll_ +8íMX=jY;tNGU[Nj8SP}JL\&xx|uO! 9Ω,G- &_[bوO+ \֜ٓpt#jgّ/;Sh&(?)r۽ xcrOH_-I03Hb4P䶨6EJʯ}#z7f"aL KJ!42vY *'>O4!owt]ԕ`&ǒzM~n?YQ,4`*OzN̈́FBefr^s.ې۠N8GIKrTTpvȈ[_E2Ҵ$y~bߢ>Xyj0h'qODAݖV\sHo:/ Ȅi"&a$Iy{G|XSsjTt!%6teKroW9Q5ahai[(0 ;}as[5>\CCta_\pVdV$ I@1ŤWVP-yfʎ1D\(G DM߆WMmjZXYZsf 6ߓf֋/#EҞQ# iz]+Z-hQy-|/}2o&DYR~|Ep^E:ڨ!͋XƋkȐoBb+xζ E}5zbFyB'[I#lW2wJ5^pC5r_$@\8)! 4mxH;)/jpbk#y3p OCw8p:: ㄯ`lgd*Ti +vaߕ9Xħ)+Bt 5@3 MŘ:r%'d5UڲU\d0CF5 unkP8Vx/IO%8 +Z6D绎61Dqs#X6k"g;n,$Bp]g$vXQGbv~M^ri[_߀d3aSsά4&? ɚ@H-+rTkYDM //q1P|V#S@W6I899$25URr pDӐxсWI +#ȼWF-9cO|IYu\os~_xETu*Z_[:AQLzYB(Wc9Gdgxڌdg]z;:rL D~UV; 4XΨ$偱?dƁO}L.wr7}r:cdU-?[%Jk!)sh7xsWԎF “Ybʊe˩XfPCpk5vKUKJOz|R<-VxҞZ :YI쏁HIQuj] ?t:iIaBh5iˆ}.ReH5Z?^3d6P72-/ᑗ."k^tS0IA[H6\[kE$9dLǣtyyЙ4! $9w`Y!'kugHS5\ڜ|R&QgùCʃ/yP'(fo'Jj,_G+l2"\`KmV9 +2Q'Tnyǩ?77$*1!BSߛ@40{ɫ-&ی`brBY֢J:b\"xqG9iM}զn#s7]2LGU[H +h@00VgRz`%4$'3ʈ}Mgj\8a7&IM +d ^ݙHOdR `>"(YR-w_B~C-i~r1 +) Δ/`* +C@y*B=P̛_|o<`Lد{Jw8V8lp 1"(-"\u e>G΅;,Dϒ"Q։pՂ=/0X&ނ ،TH;Qxv۹ߞ#TT"p4rSˉrC9B5Tfg q3%INm1$m[ᄈ>)O2kT+5ZTgqY X: +=u_53i8,x$(^bKPx(G ) A=if!C02p;T<ĕ,.aJ?o傏ʺꓩ,GmC.R\a q5'5('"8R@9ӓ|Ծ?|;=ّa^m5-8 @L-(fudjw"L^P!'Hz&-0l“1s!oFMYcAH/sU-E?y~ KTpzW>en#,CoY2_ /^^rqɶ]iCu9D. i# +΢t,gtÙ613=<_<ơ6e6FB\S\ H yw vz(rm)-,1_ǿ +AYxm-ضdL7jy4 +c QqQ({:C&Wbm[_6S8Je^,P3-.Od޺;7ZVr sI*gqb\I`D:=߱0J潶%hcf7d'гئZ JקecXoZNlQ0v(&‚Ey%D;&Qxpbe<`w,1y u Q*_lwޘH{'bזL y{o:R(j.7d2B|j , -"/ק)_5w'o˜}F# 0ctTfebFȰs2?Q9H6FI6ɿ9u<%,T)I#y[r97q/نhcM$`;$ΔH *dnwޙ7T +3Ȳe<%͈S`lǒWt&3 M=KC"lbOp"Xg'|LgRި 3حUdpzw}ϗRBl{HS\zKhb a"ͩ]93SYQpCh5DxWyRȼI~iIyLktswHnq;ɫwt:l/DMΚ]p%Ug^sO30(.a74舛z懐0:=T$ǰmYP<`"% s:InG$IFxpGOIe拏?/(1a"K~H+eZrOD{wlܳi|']mXjG \8FxB !*B>$G.#cq6285{-\AY:$t_tv}BqE}рqefz5ʼ5$6*Qz'|Q=KC4ض^3]$$Ӱ Z)Ydg=Bl)Mg$FWkAvz'O({]ݚaQjȠR)|D#{p*ʴneN;ц\σفҡ!)o ,u@\}MdFw'8c?uMEnGicDI+bYk>"Fƞ&u\?"Q [tl''njkYzAOMA"t,20Th ?l"}Y>T:|9wu6W䊙HJt1v&QUE]c8l3ObGg˹*y Ђ3cl1=xaWD6Tb3&lgpWX{ Ş&@8M\aHazo A$\(@#>}O.:upC3A*жRiAŝEdh{]gg9<]Sރ];|s#깤 Ŷm*n~eIN!,H>%ҏ #o M)lއiV@p z/t&Z,?oWܙ|nR:U.1]w Ak%{T( Z+$QW +GOu:B3`CI +.o|lL$0;vWެĆ5$Hȧ.M\c62 +:&[I& v2.y(?B6UW4͞ZQX}UWyd~\G$jBX}U\uk5rm +wF<DCa 9u(Kw?&m; *& ,,N/ߊe؊"I.mę+t@ofD299̰j]=I<%.un셓$^kR:$:Uo;c5v +. {ZOmЗNd>E7G1NcSZC QοRE,˧م%t=a*)D*5}Pqj~Q)n4Vw), +{ψ:/Z_ps둾2@'|sNC3ѩ??^`Rw`qp~ TBs`̈~cT%b\Btݰ=Bξ\LxVD5 1P W|42(Dtʇ?MQsAɔEph?0Sig$,z"ub~F\3MET00EDIݙFk]`rw.a"<9yJɺKC6ڲ <ԉy5T8{l l20Q=;k@Tٵvzd͂e3L\+K4hߌ%py-Q|s1"7@apӈ +ROCp1DR~6ˮ!Z~g+MFv}*cQ4#8ɸ0ܴm)sR,ZgGY<GP.CM,X)x]eشxܘ4+h +>A_D,K ]tt`;/riXƣ~p+6O +M;M:ZnʟvXb9F9T^2PMfd5qag=5WU)x5(gB6KSy5 +?[J'c[8L΍?[jGurl, kIh!@[N `;A"ƼxE*ZF8w0:Sϒur?Ĉ3CE}(;)32 7ZnN=\YͲJč +A?eڡUg ~]Ya͑} LRV*o/66aSmǎP>bѾ2}1LGlzf섂A624>;g3 +N7r'@w2`14k˞b#$54PP[lȸm[N?Ƌ( b:)4xP\ P$ddsmVW΂7[= %CN6YsO:_~3;Q%NVhtar/ӸqnKz8]Jgt${'mPu\'&<5k5T`3X uPʿ[܉}bISkd}NF:U V%-cޫ*4g0?=$J=!dv &ᰘZ zIrr,w +;}5fVW8zRf\XCsGv۴q-yF!W#ہ"W?2Т9) g{U|.̂yCo;NP"&$X//:=qx7Exal΃eđ`fGyZ+GMiC|-D!*aI5| wz}Ow(sm:BM 0?|ˀ?ITpbQYe N^cj([7\`@8SRkX3/dkݏc$ź$qxAcO0oL@8FP)\,{Fj'kR70́[;д}юq:鐧^d;!pB؎VS;.ڳ +ors(aӓoP?^}$Y[mulTGX:]:WgiԶ YIuH|Ƣ0*I+bYwc'h|)uXBtLGw AitOiC^Tɘ $c⨪cAp4S zC@]w] u>S ƛWI䷑, &1r'FDæiccW$v@*\Iiw^}1zgx gE05dLq2TlSDx<\-LPN-or<M1)|53P6˒h.E2Ϋ %6cDHY <}`P +{92 + c׏}Or*7V1(S n`e!F24 559a@u+gӦ?W%_JQ;N 31?_ +q{+0)Z̍µOdyE4F'0AgX;i,8;ZC))Ў0"qhf!,?}Ds" +Ya M +T;Wtfv1g:!ѣo2 +4*XBfoyS\#D:u(&OEi_|` Xe Ÿ}Z1LGWq%3nx[9i]0Lz팶q 1ۨ ( +W7ed:Vc$Pu-+<_%R.2U+{z$m?1iGee btk-~;]SS'ǸF'ExT3b.KB&W̚y]NQnr[(Bܔ[_+¹8xwǃ N*%w˶$:A=IVdYIZ|1ψ̦,LSR'xS̆e cL/Q U2'M *.#v; ʄ@+~W+5=@35hv\z[TNqxFЪi=b5cT5N}"uåVR^f|U[0Xp6 dQr٦FRhncԺ%55M>_e#үB)VÕb[oyU*^zxX-yW|Fм#(볁8xCۭ6LU[kWonjSWD@xd ,oMɌ;%s.7^PwSmc.輮fU].ԇVj?)V.1vJo~J'~v#2:*YSBέGSbHi 1bT ׂC)>b׈%i$>IW!ĞG"J7=V ik{J- va6082{ޑD1LfϬ 7[RLN<_7Fa?oVL dȶm :Sp}@/4'OJnBB(H]'ō^qw-Cn Z]`;guZϽDSfC|z=s0<U btʐdUvI]}ɩpr<@6*7J,6B}^@jM޿_EnY&Zulߪ}# ]'-]Ο!#F=;'(r sR-gymR-m{&yF-?h^x9E('I}8lzݺHn|؝ӣzLlBqϩER*iea Nyhxy-pW>p0 o`.WH3yvbG:>ފ$! _բŏQ>W@lQ jʸgUĭ UesqWdhBv3I>gu#;"2+tߢ*%Viw2q7hc`6$p'd>D2{|7P9wǫ9R40tVp^}Xl.ԉ"bHi}Ѫ&b/+`a./AeIA<}vHf6a$BAglte~ЀҞ+}M؂@c6Rw^?}9D4hgTDbT /VNbI7>Mr(Od NAvB:<,MQKَ$d.ɰ,%~-O#Uok[t +rg3Qw0Ld%)J<(&(_Gۈ%L0g `=m-Z)i֑R3_*O{ּڿs'钢˸7=*iG9ψc fQ+RZrE~Y>LRE^pXT!~7=l?7&,˪A(P3uBiW*|3ZQT#/5,c2ࢵ4͘w%j؉xՄ:Ci gc'e\^q'\ߠ‘bgni\q,@PI[mY gSghYr/;_ je*-;xp8gmW,%/zdid>ua8bld}e$9=`\+a^y U KNq#͡~$w paS5l.ۢ+эL͕P{7|#8RK^FQ3`߄759q_~^٭bSd0ћ.!>\6qde7 X18m|G k8vw/; +3_'>xە5 oP\َ2 a@ ,2$`%xS檬$CbpN[JD4 + GxWӓ6B$@ [_~nO6>G^X7>cC۷F"[Go?D&*i Tr7GF*ViD1}ɋ%UCf>u(`QKVǧ^WPd#͹?vYܹI|oCLR"~$xITqu>|>?#\ _z`L1j=\D8䐙v[ Ázd,e ]H;G0"jqTt2켙8M꽯_ ^:Q_pC@{/lBt$~@/wF2^:h1 fĜR49+:5v_ũ(~]L2= +0沉}6s*A:FGc'HOuB`p1E+ fnqkXX{yV*p7<8Ħ +Fc0{:emL-aiCuoq=,:js9rU7Md +mKݴx +{2f +>;B͡Tv Q Y3;m.=[\[TbgI,c)0!Hq[~Dgz[ BRaw5YKK"|JuScL9e¬Ď۠PG=YͩFmДCiU;sޖ=syG2 +$oJL}Бμ˵Q|Mj>E, Vմ½N[ZBѢyq(*qVA +AD]Yp{]tt"ꮄOk+] d&]xY$bӖJyHFD@8 ;`6\|}^jJ֣M'0KuxHFU|K~2lrB3 7d7 x.O{z(4qg@FnX#0T&܉P#'ir~.RS9oޚ5X$Zq ;l&I U`J*0z*src]GD|A[rHbClQk12I AuD2O!-/t  @C 9|<%o=ei*?~qH;֍;d ߂3v-M +/@JT}O톰#,+cnR-H{: U;l_j1/߳J48OoAGQe2H[7 wX'+<Hj7F"wA ©4@00dlƒPa4l:)baoEE棴(ud)w^-$;Z#6=-jt5L@wGhA2Htj9ADM+p&:+C'Ԋ:hB˟5O!B>we_>H!CL {QXrx)\y= fI+C(7D);i?#R@NrS)"kEΪABwRg~mK:x]_~ ޅS/[7[Ì[o!i TYNSu}U&z¶ý8y>'}Zl dXÔr 1c@~ .C7dD- >b^12InVL&. }2_ӀYs D b/0n5J-GzM,?]qyY!k8lx>h*UoOd4'aO!4}w:0[Y! +ID!;>^~h2x^*c2Bsu]|'+|6Ih voMas=j,G?WْۄUG$޺$[Cy!K :ʽb:֎4ϵwGU=QLk{ ʚMOf^᧹L>[=fFvWzpODn4+9ESwquȈ}~{Uvس %)P[lǘ#<6TK;XޚC!Xz$c7G N<`Jr0Ĺzz̙Lc +݆b9עtk̊Hq9BkjǃCh8!zO#&NG$7XƯLзXs0X)zE@%FŶ5D9[dɇ<85!B|gyXyβt ^<H_PT=U˯#6cg9< 1t.f4NN,r,6YțejEÌeGjȣW*01tOp )AOH$> +7b{)#%rXKhԈ!<$zE+ PB|+U+z8t+cQLwp2&QE<֛%ht #{req*d+9}yA(S+3P^~mLB ?Y#9όvWGC(M4݅0UĂ %dBO5 )=P L2EWw +UI+rէ\q) S-ξ%Z'ڭIo14=n#];15.3I3\A %NE"݂n[`$ +26a傸ɉ&M!&]ӝZܬTrZ1PY:M&$\} =)N6U3*&`ZѲX=a$zh$\>^иV>wh[ ʍ͵5OVZ4IKb򊯙 ȅL9)_WbpQ>nb +JkVe.i8ZQz?bqe2(v< +LFTřc,fgU`Ua1΁,[*:S(:ޘ P*SAqzw#@RrJㄐwayϰp]6*EhD'7iu~#(x(v#7.8 ou^z0ep˩h]==ʹ?G9HIzdr`aSV@#&7i%W`KWM=eaEZ6> oT?[}S VY*VD@b[Q*O&:ux˻nr&B>BK`d&+\?cXʎIdW ΟnKI_3%9FRIJTH H2 &lMÄW[$G<צZ J!N} +$H=\gzo+I/}ƛ_˜i'sj:To|%C1y^ν ]zKUf~;4*Mւy]0/ 4kߚk9w88~6mޅ ?5ٗfoL>q9P $Hv X!J;=ir@ p޿ P({Q)whSD:';lc㵮[vk˻U+ Q723[e)?XYS,m/$-5?,HD= +mkW*`*JҸTK݊o:D=\#Th8*Fg_Ε4T\N9?yǠI[DE E>Б #קei^exzY3~ҫ{KV [Vj#3D=[Jtlj3 >tq CCKhjD9aAgƣR`S#,tqr ;Ob7Ѳ55eI_?ߍzp2lc<6oirOv|*x QR!,/TC '-tE@YPU$ 1nnQJ[+FA]bԴ^R\Ge_,u +%#o +Kkz~#0߬-WfrfƑ!iwk l,XT]2[c١T$$?6R:KZz5M_ 4:*UUϐ/~JI尾a&f5xwC^_elPsju_F51 ŝ0SB`D +$7߮@ԛ2۹tzVd[$RRǐ{G) Mq,MQ8}qJ=Jb!@yUI05 4R*:[`(7k d#HPza }o²Z񚗣NUOrzAV)9Pk$gC:_L He9A*Exk3OWFxw,%rw",ċnȉN8hh%$) +T-8+`d V+VP &X7D;:ۍ9F~w_fZ͸nN01U} Țj#@' LEi@ė$Vf{u5aPojkqF +hab%C!,JJ XB0Hbng&{|t+EFOW +]9l +Bo:_Mb6bb bcmM,T\1rHP^6:ݗ5(i4ֆ&  Lx W:’"0T$o18tWNwZ74u;[F7S^K=~Ϡg;,/ MWq+.N!:*wgi 0ٛ247'ܝx̹lΎ}F˱d#˜gy_`BrA#xg刱Zە!#Cr?YI"6=dw^a61a)ML!"bQS-^Q-CtS*x~%0%񬮎!f]j +6Ղ1ZtzH0%H|YBvdvJY/Pǟ?+"3 DdO-i [imV>*3 B[ +/zUWR-[5dIQ45VQlH+J%9՚,},΢ VZN2H[`Y.PpİbAW܌B؄'Vp47{I4URy2xۨ~**!jc*M>$F@k: d?0k*0qw':}J*PLOش~`ԟ}"@w?`i2+G_*$%1Nu`z8:l9NWx[:X؃%()7P8+ZAW%QNQF VtOar !O.6Є5Y ipUAv|(78fa?8 +ZFXU6&ЖVSb0WŠiIt +-RI_FƷ{aZOVÉQȩ_ܝ['c>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 6/Tabs/S/Type/Page>> endobj 17 0 obj <>stream +HWۊz' CC_f-oƈ#1 +kwȬ.id5Yq9q<ݽ/~ibnw8'x~=21?NnG|N@ οLn}63|\%lrDHsrɒc2ę =rGcwKﲷ)K:^C/=M4ԨCb8j O8e' fT8;ワK.hhHJcZC=BR0J$l-/vz+EFRXi{޾8R[D uDL*h/xK)"(-bHVEx5'6)euW +4U:F^nWŊ s9G%CU3K_rf:CZ46.iqUbɃA*&)_xcB35Hs2bq)J;`ō)( 7F:$ XQIʣS4Tj•VVr2?_]$ | ɓ%z0PXc>^DK]Kڍ +i>(N"5\h=?~u +A$_ (wE@C_z2q+L!oP&#D1{U E&FGʷ&m]e7@i]چʮ6wgƳ\R^ˋ,."`,nu6+'IdV^ھ\lT(6nsdF9o&5C~l\8b WfT{REW ۇ"Xi㓯Ep+u]ò넊,ӤM TdTfNG4մt5Ԑ+C}GD1Od668+x-IZƂ>JLEX$Yn:+:PW <8_xeOjU]Q/\5Kڔ@[TY6@%8`~킬zh` +5 +xA,3%=\GGisC2kXHyRFaVKϒ٩|]9> WWȆIVKU#I^_ya9[ܷb|R,3(N'ށ4T^GeA۝Q0 +o9nEU"+i3gzQW +7d*s/.MSA\u C 8Ȧ +pPP`w:s=57Dfɑ[hEZXtxf:y^ÉrY$2”w EXıv=<8#;`~ tS;mHv\r;v)6xϩ2UFwnLh<򅂯FG3):˧?~㧍*MNZ- +"elaUs + + +fl:} 8s7n0NL}, 0b<.7`Yf2ˤh$e*nMܼM R ]E( $֥{ذ#`Tlg[)D&3z + 'q*> +SŠP 66b'LÔ5mkv4Wիhm|DVWۣWե @[A"Pu$bDE1*I@#PQ%bުK5CE,.P-ɵbI J sBe>~]ڨ]-K^&]srp-[ 5C}iV\}*mU` B0A:frrEpɧbavO۸20 LG0ո&`IBT_G6AW{ nc>CWr9.BmQgi͏%~תˣ;}Hr nfTBNABm>* f^#Va}B!@"`Rku1mK΢4e;1 Y"l[/_? +* ʎSU4EQbftqG]θ1<1^쌔ǂ1 +wnt.P3.#dwSc)j[PB QMsI6 UguIrMOpnbRZ8L !C.i> LVpC^UuST"N;XsrذEU7_KC7 .P%'>Slo}m9a pkT_d9so+޿9ҥZ11kp+ӆMK}×?GMfRqNS4># zQ+,&fAʇԈϐF\4Ăh }lNːy5[W-J;Z{^jgqO yYxc!C`-x,wYD1,CXCBf +`EP ;og1Ot`S_X#u\}6i%zQ1Ur"(%@kU8}W QE"$Xwz>[51Rfh ^z[>qOKR3Zi|@\TUUhn ؤ]'Ͳ2BIJ|xz~>ۜ7x&۝RL[aLH"Qb23!t4K~3D Ǡ6<& f!򌦆N= P{%":^ٿOF_oMz.5x7ʾg1֨=5! xWg,]3Axbсңt?9\Ph.Ra YkQ+9}6I(G+AbCcu8l,g&! p` B }0߻ﮪ0Ù>^#RE *5t.s23q6 ($jC#] ekF>[%|2kӶgИ@Z`Idt8o!d;?xU|.Xv.Fd!@Dڴ n#Zј4<W$η MzBXqeh[FA=)o|籛jp\>,>B C!S*>M-KhG%k M"5M;GHB! OBZqaXDyL3őKBG0 3 UNVt.i[5Rld R|g8W1* wUWjdE4ZUhIy"U;1vSz'#ZrͶVo%veJW'С!NdHw0MdSO:=е:Y*ytDS_򜜵BRnA2>%4lSwA}PG~yuJc*I+2Zi j +"/sMWj`G!Î^uSԞ5N8t9gkVV&;ؤFur("Թke#P8x&DDT(}c:P~(Х5M1!V)66ZX6Z/ l |fNؗe4}>H2{DkZLzz孈(ܵ5vr}rϙL{ *7x #) A$GƖkCY|?<>|)kgRO +<.d"{w,voi]h +endstream endobj 18 0 obj <>stream +0 +@&s +KI.:^~2H!I UXtcCaoVu([-*>X7D[o遞aJs-!Vݫ<Ң$=0,X&=$GE-.iC޽>S#h&&)D_5*A%㘖ͬ3Evkº `2"ݪNuj X2\.I+_5Bh'ho)IYן |:Y)[<dp 7ogZTΐ=+*F h歄>\k lxt=.c u9+(o`fI:9AB!joэ|f&h<*d9S"9Io-޲ +h+\DX}cV[_9s 2P ZQuw)ý =%@WH3YBTqT97W),{,sI.,i?fy Hs`,6>hLX}I&V,JmKq?! wk nq~N䒫D! -,nM;NR{LcxMvmP4 + C Rhe!h{ދp/PG>Xq\B}1 ?KR mjX z Dՠ+~YK7g2L1 oO'Zm50:06m"dDviF,4ۄFi쵹CFj1T#ΐM6@o"@NL9aN30GukHaL3PP¸xvMSi0x4!$+L$mҔGe#QG![䥹ҴwЅ0"cIi%Bڳ+E*|.MQ6qZY4^JA' ZU E4S #փ6N~4Rd:avڄʕWÄ1KZ/↍ #G&P(tU6,g#kBy60s4H$Z\&P+HoI*;ovnBOLj _ W7ljT7竩 !Ck6KR]K9pj0;`ZKֹY8Cd{2w|nר ՎoQ +"Q|n9T>#E^{!*^cd\ڈٯ\#jPȞ@MZ=|<8S`Ű HSjeIRܲ|9HVXI w|N7`Zɗ(6p mo2w4ZýW3c%7})SFe[wibm`w1/k+fstV+jݐ.0YYVŽ863mq+݉-1N?&(}"i{kt?CSKraTZ;Oo}n%bR$nAZ10Obydaֲ:]~ׇȦ$s0ISql0 _e]΂ֆ (ԾP"{Zfz.]LXݩ6@Y8CaCpdcPWnPc[8Qؙ{KK¾s<&VD=b,a9(֯'n|}1#:SQGU.`!~Ћ=;y@ိТ:0ja1*s+ǫ.)W0չO^#8VneȔͲUIhsXTߪhLH1/@L*vDlHNVqJB+SEvk!?eP + 1üED VR2@U(Ѭ.NHhZ6,Ev(8&t~U׼sgKM0f}R!\#&5 qlNI؏*F#h,֬x>a9O|ƅCH9l>wKf +eZA{TQKtaKt@iT2+iCuj S]@Q8r=<"{ B/ō% ,M׸S2c ZDv +'@=m\?vwFtdCI@UNKO.*i$Qdsj6O_Fo{Ky(W6z0DAApW{Nj\93h*P.][X0xTP;;3]R )vNEr +@6-,GXM5RXd8²l!Hx~*Vjx`iǕ8Yd3,4q\U4Ptc,ֱSV”o[O!//? Wvn5jѱ-H!I\';F} +S1 =;k@~KhB+DM\٥EYf-ji)b˩ -_ߺ(qwߣ5I/n]O_,Qs ;شCyD2__RI2aR !-6' )XɅ} 9-(PX9~I~Ť_xpFtc}VwO O6(nl u5[OX̄CA;F6,^V.3& +ZP8iJTObOHGnrˍoQ@)vx$ wQ!|Dp=Xmd>x @`{"_2qwoXֈe +Kʼn*BEUJǶt?s>ߑ +4M^_)L оq(ڙ1|z^]vZGV6\ 6s M\5vƆ\CAm kN7ZӔM2:<1Pyw7=d'sNTil>p +̵b0SNrd;EA8sa=OO?/HEQ{IOt'i +{_J +?BwHAWJh ̢HeĊ,?_y>I|$c0C9c P UW fzzv$s?ϲ0pd #tjd* x +HnuSqd|C{/]ݰPat~?j6O#or<1ϋTaBz( $ hWcALvhueo *#> S5?Xf =ksÁ?i"Cr]!t3i@k=Pԅx9,-]h9q{9\SsvqC;a=z9|<=7&ե])FUm43O-|f_͛cg_c9)~̣(4HLMŽݏ` 7'`Z+טO~cGi'2f͔MWg'j{ D$j +'2,(A F?Ԁhk5@ ɻu[TG?OIQx+D>!.146a'AʜuM#M1.v (sl4Ӧ1'E2sFDƪ+$]5SBv +[^bjr2B=#CS %VLI3ޤ:ְ] TՎ Bpdo%Ѩ%(lj5N|INkPzHP{յב"bL}Oq3uD3ndڸ1,:ÞGaZ xO) &g|'̸jD" E퓔#`/.H&1fyVjCgLD5vֶ#3ov0Φa (<,-NBE#G3M~8HC-tXS=poo_R5 L J݅a& |ҷ=+ՙxbqק#cR᱌HR&tIe +D:]rw;p%;OF(*H{fa)Ca*q vy_1-]\=lwW~'wqs A. \K/~\G_f(1WMCy Y_>X(dD`"1:tEJnc}q wɾ[BJlk3JYyl \γ36l$5+9naqVpibRj +OS|QKΠ[R_i"C.dL)(ic'*Y ?":(|spOЛ#BQi~KEH +qzZMfh-]1Ø7_WdLqYJNj8ȓⴎr?]*-5A]_| I7NOZ imVfʠg*cծb9kڠqL5ꠢ27_)iJht-xۥ8b*a>P۱MT;{rEa/m_1I>?ށ))ZvTOCV2*MS>u$˵nQJ,_\9ߦإy:`U1r!-&0L4RF_v=30h1™Y0&MR}vw?FWr}L=':Ju0Mx\ ֻl~@ܔNztfީud\{3KgO3ꥂAjYXOxrS%epՁ]ݲELLӉy*g.pš4`5m믙MFM„-ާΝ@Uz5e{2u{M'݂婲:Gg>zQ~+xp}{ VcWp먜=$S%DLJRCk+ hLVπxX-fǨz[POe~cG-UplT ~NHc1t8KE g,NfU|&1Lj4u%!Ц*EsL9+ ϒ + A}9fb2'M04Q^1l~g+B>N)ӧ+cv /j' .Q)͊t-9|mQB+QRcʹ&_&.W-eM?ԚU$Dvk%`AT.zH,nFVGMSL:, 2,pr_S)7nڊ\쌵eA**@\ӘϹBd#n +_ 3PNYvYiE䝏-0/!"vC\A"Ca[v֊p>cf¿R4 P$ +آkmN㑱0"ƜA/&m>4$5f[GkMO0%SNnӭ7jl,^%8Bl5GZA%ٌufU. +68?"G[$ k5M)'daK:Y;LU*=664A|uIV Gx:u [dX/.""څ:rpB.MLv8tZew4Zg^A.tC`%~e@y{ J(ߒ/{Ѫuq|aNxdu% L.+VKauu\6kik<@Zؘ!QWйmķSJmkAc(]7r$eGNcwqRXKXЯ!ۦSo6SU"-gmoKQ*jq!Wpe$U{nKUMqߏ 'uHd>g +9̔,g4?AQWBS@dq'yAw~{cu*,k2rހ0 B @ ji7E7iEYmxށ;d }\\FpzX3?ɳ]lαxW1x$$&o%G,Y9)wP#f8n +qG[bᾙ7<ܺ}/yIi7JsQ3/̶ W-U~ ΁Dt=y/.!_)AfO!tHǜGgŅuz#!m"MUg|dp6#%O.5b1p6O9p*ui>㎝p&paQzr1vm-eDZuxpU'% >%7M@KW[d<, m°ƃ'^ki 2z[}@F*k!1eVs o )С_e]y+}G;:.bb^=I_4b{)fT=eb91*T{ip[~AMs&Ldhz^p٨*wڕcZr^¤A;u[jTz$ LX Dait&_"@n0X %*]VD3ϻbSqTlYs;x5:Kvy`X]G=} ZL~ u[r +ef;Ɇ*^%|Ń+4+v} @$)uή~9 -q:Ɛ(xT. %n7a&ļpciFuJ)-% $S?[hR-4!WMlY&F*=ܹ/#@3^_W ڲ#G*9P4 ׮1gU}pm9lzۤp|< :WGR(948jzGxkbE )[2 +hK0TQw2P1y1K [.&ak}@g$nsG +m xyg-c H~AxmOmzx!˵זn#Ұǡ +*QUؚ$fk@K7v';6S 7dPN/GK2/qe<KW52Q1W/Os!dmd 3|Nɢ|!}=Y9kΠ:cظJR]D&SW[dcWVtnQ;{x|#))ê5FȐs."@Nh]89m% ^ ʗRlb7_ȝ4  b˾ݦ6T fV6֐~X }\^>XX#91څ!i/@л-z=1 !+ŸN.Nj]fZ^\$z`:揹Iɢi! I \J#-spgzrI޶>쫟TXɯl{! =OGy ąB}!?@˃3-ꭌO*#q|GizO9g.̵x5ni^HaYZnwӜ˻ ;JMy"|:.RwKF">L}'ޥGF2k>3ahKDMsr09K:  Fw*QU1 +>Xæ|b'ĭ|ϾbM/u,'~* ?rXO 7&71S׌rO9m +-1,95Uk#:Ԁn=*5ċ\J5L̀DFk|D!5Ohl<4L ~6?<΄'ҭ{L̕e.*AlVygg-6u˫ +CX (L,f]!r47!JlL'I +f +>/܆ӄ|y U|yP+eLPՙ#hl˜C)%&1W1H*(f(ˠ鞪:zR\uB<<@R)q^Qx qŤ N!fuٜMj,M&i0+T^7zBasY ;ʏHl G46-eK۔,1@)}J +GOau{o(aRvxY:YS iLMP/ WL%H'm2 V="<_4}ȐoŬN|y,d(yc8>mI$@B"ȃڔxG.=M߲}IB0 R0 +/ oFvji%}k{_|ݚ&ie0dZZUqղ sƱj-f1! |?qc[UKՈk[z1bkЋT 9@æ=(TJg2$FuYhw +IiƐpͬ5wfrfd"_oq*e%HVspcX2: o_X[=aznZ6h^]OתK]*6"?O8ɢEcRo>Џ%G?̇yeI 11yᑀ$ ._F=|;pXYM9F}PV`i%}b`=^8HDm>M QWy-ۜYLPmi7m4_9Rs)uVe,$ٍ}#Z ;u!W,]rZ˱ApwcMx'DqÄ$ >B#NdILj]A@wG|_*{0\!0{saHeH>"_k88y:bTGi6`D{/۾.Wjm;95lή/غr 7 WZmq,vg)k ACOw\h}Z|L885@DH(Cg!E7sլ0 BqTߌosCf\J9ʌ^*Jݰk}]M>ߒ&=r{ɫ lS~ ȪvK]6lL/\$E8U&l ^ڹ<׫(#~l _L!e *-@&Hl濶4*u>}oj +ģGy֏ Emã8OOasFMp:ma Co\aXs$jwr:ϿPu1fT+h8pńe/f5mJ7e_HlIz=oԆx#^DN%)L;EuL6Pݧ)14h& r 3.r3Ke n0.iAnV}}ҟ+=YSX!4ms=F> 5I.-r兝Ѷ d][M_V-?'铿x- Iτ=RLJwԥhl~g_D9fx K4AYS^x+EcSk̴0ݶ#O fJOe>&=ӎN*[/mh}*1۳Ɂ$dN?R60|8hrY[,Pi"RwD| QGXWs1k6{Ix2ȧUMNKu-o/ȿ*9!4LC8>! +cڄ n配 (RDʚ=lܧ*|/ZqV֔ QʉQA8~:*rm5;f7{|cL:',s㶴BDj[f,PiC]Xvsi ~˝OQ9w"eaP5SV6?$۵c؟՚0vGFxUyޑ/yV5E@|U92œu\@rԅneכ<("[VLԋFt KCq98=B:XK3H6ܷ RfԮAA4ƴh#=_/ 0QP@Gz BŎraK@6 ?U|DД6:A9)@S,{=^\sf]lghrj\W{ ȝ!G60[qN}㯻CEe\~G.DY?T8# QDyR0r⛑QWh4եH%kAqx!>t!h-^3pme4=4֙Ӟ {chq'dkšmV hJёzbj[?rl 1g;C˗o0t/j|-˺=p4OIVIPx:‡xv8W +Y-<y9~(`5Orl=2UvJh0l +@ B4lAj +UaR8c݀[GgTiU0G\:\e9lVQ@ck + LdʺY +O0G\@xeGI2YnND]E~(I )+c +llz>(cPpxm^839Tebdwjd#VȤls;w|=R2[%}u9dךa)&?_6s|}_>]u:{gF)Q[DK/;Lu[fp`VJk?z6(wKFaB%Fn- gyGHQ {S_ft 51AD+w~-Z,4 3k3D悲h h*«o9 N|bC!<޲Zf:i Q^;yHQnkWr]^u8v f:\3_D固a^ ='z&O"aQeoGg)`(Jިs@-U7Myv:7 V;NUXdh'cP#{YwE Z슖Uos9/BɣƯ-YMѭ&B!i'q<ӳdyL2iM.l/3|,ѴǞ`Vf026mXtK_nl 8\P-F,)7UhJgBcj{+'@>nI xuzĵ .7߇?g`4"wh9|un.?.(g0R|x|p7v\"̥֩ n(xiuuRj.$/^üE'TCBgD޲P{\US|bLK"}jt1yeaPM%{_?9Vn%뢖*3ؖ"v8':uP +2rq!p|Eh8{+X-z>Ycj6 @iv +U62/yt3\6cXU[.ಹx9r`۸p +c -w<g3D6"9/ڵxK{-֧dGp~fc= !TO,02|nߥƷQ4V4\BCι FSPC`ʅ37e茬jOfUjrhvrN9 0 P ʛ/FO|>#$ kFA *g"<͟zOcj+_crL9 `J!|>DSV,@J2ʇ3 + TrDl;1U_LޝɵW@q~sշw%s;š*IJO/W mQe}aW?DZ^ؖ8,FTfX0TWa轿HJB[e.c!5G(h;j))ZȂfi_+c9&(uKKː*WS/d Y~EY +p|FAFS0wsmXuaU;wσ._|s=sЂy1 +l}~.w)c͑" { +jw[7¨ưaщgo(oΦ^= e"5ƩppO)sGFd~MznΐMuY.#R6jӁfe /N즦R# RD]-B:bJ8٢Xճ2X R Vbo3dQͧS4 +L8Xt2Fתu}lPjs!DO>'!6yu[X8|KฒIØ;K2TQpX5Ņ3>@A{c=iE_`b<>:78#~D-xRבШњKIaϊb5>G6pxB7/PmHKC%QlYQLx,:欫: oΠ]:P5UeݦQ4zۍLKi`: K5*Q U$.N*V_OƮWűϻVU|M)-Է4Yd'AyfZ:(ԢoyLb,Yr(EPnNoK}愪Yw%ڙ@g4J6H-`p~HaMO/FSh%7C#Lr :9-7aSV?d~X6}] +!Oߖ jtۋP_UZHĎ!֦kaQ7O9b`šS(:=D!PZ"_49⤭&;6T<ej&1^M?+k7j^5;rU@;љ@1nL$"3a8ED)uL?>X4c"':U;D I TOofŠUw&,~} ѣQ-01SĐQnKm`Z. yW_K*P#PhNM ,`b6쯌ݱx,&"ׅWq^φA+yzڷ:e9 +ڮG89Xl9F@`m bs %qwYX<;ilYH".Mn/& ]CJSrPf(9ZN>HїU %\ +xe4w-0[6uOߨ.~M6efعϺRȔ}vdҳ2Y{4ڿRbx (\E*  + wVʚ*g?ۀgYj? !֟"ɥHozM̍moUm3nƼzI 1}/:GڀG|(}F^IT߫dg&5R= uUڗ#1J5&HEpXgi/Д]ϭEoq3 cnU/eaM+qtI8To :R6^Mޛ@BsZ6ugH;kr ͼҡeЈ7w +s^A +nCٔ2c53ݻ$Onq2{oB +'~HR7__s@%_tmiAs-Mx1T;F˹MFk"a2VX)xR} L(5*@.06 $pFB ۍM9D-x#|@q2VLB[+!Q*r|uAasC^/"O":c7Pe=|: %Prl$<*/̀`34/d^r:iQy!rPG P +`;1& +I]f2_Fy+Ş(랳!(0kCl)-MG[)fZ7vN<^{ viKPNMՇ$eP[j?JW5 @UK2|Jޫdܓ,](GQ]gΡ$9M R\ӆΡA"@4jkD檆(<[ _r/$.t9UyY.p5 ;Ak205}raUNP"mp|?ۘ3敟쵖Qe g6e0(!^L+~91R2-FỌ͜'(Fp`~ڣ/250W$иS)JFm+~R~|hf>U{[K>ˋQ d+8 N + ;PBcH&y ($krjKyT &Em &Mb]9+l,"ަ4rFZ94f7>%̏s&Z@}z2fx]Rq0xCE| l:DΎf\;oo/_ +lvHJR#pqsG@s̙HiEKa +"ۈ$DSg6 yaɽ,e5[+nvyFZa?}4J.^nG$fײR :FdFlTd -S39BRR Hy${󭺉O&#^8{1Cs`H%vҎ'FC`Op,N~`cO95wUNFJO}}Maj_JPVqu%t; 'jN>uW8#?Ϸ|Ug& +)Yn +_9Q@Hݚ[nӨGHdx!Gq!gcksWטWlT)Z 0sv7}BZT [?\=y8 L)!!H](4EB <:rNFD;{[=c->qOS7+q-gW )qPH#K߻2| +4=xA.|H:ƝTxo8΍&NEx +?ut|mƿL& glX*KuJbs!ٗnݖ u֬=/}O-ITVq l#zz'F4ʡD5<<=t˘BBS%cp6G 5WϘ$ޚK~ACRs-^pWz r:NFQb0:}{,Qg7|j{NӿTSw H􀁟2E?1,iFI?lUOCbX^0DX“<.doizچJr`Xp4Ԗ!Jk[;of1`8xcP}fd~,^3 +)b2V3 2:5L@doFhJ}ɰw,A8m4>5_j +{bK!тzi6ߴPƮL5T +bm5(Z餬 + igj׼+&͠OFLԟ7.!R,#sRe'4sAA̼~13i/t$yN#vt3%`:c@iGȕ8FH;'B⧾uOJ(KwENP<gҍd>l(e-UӢ4* +sy1gNB;p@\ES\<{\&3gTtes]ݞh8^}* +{Zz,mS ~Cu`7NC.t`LzsT`Z +2i + D<]Geu=?p.PjGNuv7;"I4==RWypM'+MEݗմʄ`'b6/5N0ɻru(ז# rxW=P IFT>`~);D`DNi[o )|x*ㄶ-h2DwYcžE' qEXu+ +1c8GHG>O/o;{…@<.bbbx=2Y/"om h~u22c5+HEbPqIj\ ;8+d즲[GhU媗ȐkR;xcj[;kfcE.VgѝS b ~Y#B.bnwAjOwѫL / S;z[^E +/8W!odА+iRt2~~@pW8CSN%/{ڄSm:@ +Xb|&AN F;&  `b{?r1bQgm~IȜ?`b =oļE nTksY}e&NC ֡SSNu\3%|o; w\@(Q(ޗr9S>S1@[-NJ]>UFfZ-|PtnEA@g9ٚEIXk ƫ P h~#F1Aӄ2wf&X~SQ~#)= *-!t78RV zYiry+S8piHMq._.6Sz&vპܶM9Q[Bq1A +Ük9na!ELW/sziwF9aHjr_xE'o +ZĔÊlj+IAi) dCiF%>SYY35E +׌Jёc3,[Ta!]!m~N.&GZ$3U.;!LQ`X»QC԰z[}o;&VQ-N;q9 Ϛ~P3SȾ|ȄGm+F + SspݘyJ-+UDnj 1xC] ?s?fهƣ4V"sT-O(-b5xn;i0.ي2Ӛm^}:-]_3^ڐ:I<}S6i9'vvaWK GCYrgKe[Cc|pa;~gZ&1PP}qRk .Dq5vb(r? kv3p2$'_1ImoͤY}ĎXH%)X*fQ]},9M]z´8DE$Jzy؟TGO\WSٌjK1܄i{@tBkAĜGHـ )"eWsE@gc{9h@75;eY"Jy + 8X~tm!EM-XفAdZ{uk,, ź*?E>GF=0@1|V|7wF1/ŌQ0 '7<V V +Brb) "P×^!t8rY2iՏ"wFPu7 -zoAc6 2^5⧘QAw%}ePyz&O >v&a=>m;ϩ8{NAlH "3YG_9AL|wվ,oM<ϙʴ &)sfJ]U(9X50zˮ:ꨵKxG)v` OӻZ/bccJ+c0ԬrVǽ]Z-%c20+{%ktǸ;8F:vX7="UPI,)C@Յ4-)G{4R`lQx1 C3DGtLF0%!qUCJ c j.w +R\bd՟7TzHdY.ba&}faHzz ʕלE?!1F_4+@AZJ2u%d5Chtp +"=VL=%x^(c5e5!ef ?;SjP(FzD]eZUrW?U8jX%wgoz~ b:v4tRZ$ܚNLڡ6*r|agu J&Xψ`MQz;ΎÙ!?X4ΛZJb?ջU6E!E|Ѱks4Dم&EO#I\8z%wlC:9ޜ2>!`""= JPx:"T5lRH.'yRA2{ס9t4-A1T1qɅS 'PY G$_|b5O0R쟖#_\mFF2$yi'f#O5mUwT.\E\2PSG3q7uDئ4bi8KOݏ/BSH}g>(<<CaW4b~;Xp8nYj3_:4# >9W ̭"YF8Es!(3R ׯu@IHUh3(lyc+!dm?ՙ{w㕗+ #{V*B IЫ16ʼnv֋z.;(([& '%j* pz@M[[h +q j5 ݂9 +6&Q:]"gdZ[`$R*mY2oay1䞑/I+D䩖bX]5IG Y|W|lK Vb%?̩2zn{tsKR,y*rͮ.!'.q]U>awi}{` +LH1cp1`̀ dM$1Xr;jFi?W-T.K3v@q(4Q$`INN6: To.$tb;u?;`M,ܛtR23xKE {,O 1ևy}F&HgR|F?t02mFC-db +E +i"H1\AKrHKh*Ǿ@k / _vqyj67CNJA͏gbN:tPkR[h;nLTĊdj;'~31'E;͠po$m27N"6*;> ~Y3Fs@2ݦy{;NpKa=E*m:Ȟ36:~s7Ih̹lWd8dJ'9LPֈLy>Bq>~"PV}͝C>$Ψޫg6cPa5KijTNTY6vɺi8}UL_J0x'/(#nWd%r$i񷌋9^/d;&yvc(@ H]<408CaWN']vJd=$#ދVng{ї2xjLntj_t^Z!pL\\CQŪ +0HroΗyaoa'*2C9<"s_D%1mJ&{79C~UjPsћ^?Z9D;A# }XwgjK7 2˓͍~fDV׏c[Dy`K_ t0^_5JFٲPQb1 Gfrc>${AάuGnm$@YQf6\ k10Ϫ?̌*?^M"^ wp{L͆]ƷBO2ei6=eXUEE:!,!RV";Dw}>C$f^/5M}ռt x̗yAEV}k2].aNuREތŗUM0pAK 2>6Kcit~]m:UlMH \UӃ1w&,B@4"w-Dޒ{Opjc}f޶ febYx2pXaIjjJhbukw;3$ILK:imQFLFLOd[d[[>9sYUp> +pGٌW^:JiٕiVM1+8|&("On[JJ(gNr~:}/`Չ*q +p29XcQe fOkt+㮙lPܽvȃp}j <'@ܨU%S:ՒdB%IϪ,RHjR.KγBq1}|N{bֺL>jSj\`) ge-er,:!r(s-9-Ed3rv)ZMdr_lE$o9Εpjr+WH9hg߱#v" +ga%£TSh)LOr!EdAxh<$z\W p u:DzR;/xK8&Ko|yq~70;ٶ -+mv < +1i,wOWm^AӐЦw7j* <m~]2^jGyw?tonwXyHh9[taSvQҍ֝ 4 08ڪy#AS O'ځ`geO?WuSjViVtX=bޒ+piǛLMT+exHvXAʵ2%}3D(^DD Ec3(E{b?4[ޏmqCARڸkt:j$Ӣ-1v]9A`w6c ^KH+٘ʄY{tZig0?tdaQN%z}dZ41]pI:ٖbԺa/:LB֡Jz[Ǜx|^0JnZ^(k2ЮǤv +y֛12@d_!k&QLj:!yL9.t2&uKA,x@p><Jb;Qy^UqƒpTxSlYAWHl2W(xjb%|l0q6lOS(,=\.n Xi]&%bhQ\pwkMhg!8Pid|(4Yۉ^M< <0T-hVOsVmPz9mu(i04?wt0< 9o}4EWBsL$AK5q%ebH9{zJq.r&@ +% 9NMsAH%4/Fk\[ @ HSUt+> u 2DϠ%I}Ŋ',j?Sc5N7B\mME9"u:CJʥ~''LvuZSA03&-]_Ђ`j?3_@ uZ`nlvV+xM9_\5@ +͍O(ȸi Ru!؀VLܘτsԭTYv]Ef<,Czc5aSLen{2VfXH m"-(#σeZgɡqB$"2,g 0Z pOM) 9})"`)xP.gNN:(;:>Wui +j`.Xah2 +\%pOm_ ײAǥ %UQIx{sTqpD=nZ<$K-fiQXR&`vm_Ƴףw[9C:7XWAZk 7 &XQRA $kPp +,QKEd2 meZ k_b/3 7$ +,޾.9Ю%! +k|O +%Ϲe8-W_2 +~.l>WMXy+Ѵ~IIms\N4Dh;iղDM)q {(M]:>xEY=Y݇ oM=)  + *1俕iQ`tXULw:{?nj ۄCco->=mrPLЗu vF3bIىzER:IgyHO3 /sսD/\L[C⪜Ԝ?ỉ1'$ZU/2<'`1U)ZNV`T=ḏh*s9Ͽ2lFouQ5_ФJ#Wm\/xqƮJN?f5+:ҜP +zqD܃: fVM7}T3h=kwU e'+4I>s8 w2 `4`%QZ^w!:k㴘wycVLmP+XH +WHMI 8W(Qѳu' YC;XrjΥiیurq7=P\&͔e0y>U35"Ь$Z>0\ V!4Iǖ<"֌&{hQf>`庎;'B ^R=GMva" Im=Zjtpw毶ka_ +n侃,PL|X~}Hqr!mF& QۈZ(#uDp A n.jqn^6"t>/xm񽶫2}&/BZl(\UIzLH4J =ɲ$$ Vbc%`(uhZκAOOqaoNXt#zth]tR DRr?_$ eZ쉏ݺMXݕ xI~hiW$Zҷ;w_?st9􀐖?SU(p l?/|! +9' =[z&E9gJuT u͕U@3'Db@5SYqpa@U:shYTO/"GDG"K[QU׆w8tZ7$R# 0bIrĠZkLZ>A$hzD|>C6GU6tSF +UtuK?>| @chH0\6--ϖ4raKV;j=w,>F*f- |cؾ (ֺ(8+*rRed@B/:]$,ybOz yz6E`S`Xe, +0J|oe;N;y`ۂh"7QnߝoWHwVqf9ha˯@clS0_BqWlZxQ?M5*ց +2Dֵvxɞmc0D !;>AL"Uyh>ùOm. jyVFA[}FN%R<ϝ=BR@8 86/Z#&PTdA>d#MH/,g?Ey&'MW$ !.Z *Z? +ڠls[$BX`$ sxFn"꽑>?L^rGF(b3BEʅT&|00t&2е Qj2y_YEa2]iZD@@m9lRM ̋EPc{>}RmF@*ΏjVa`d,[N\wlpMX%X᡼C0.ErՖ;pg^|Cznd,.VX3=,|xsi ?Fӗp&G_!GΏr2Ƅϓ[tADwt;9roZx/dW.`=EV^ &w\4" IXe1@k'Qt(%1~P?*:ľRcH"$Hsf]=`Mg -CI,Ag=d" +uNf1Ue娵fDOa(]Ii +?^ -$` ++M"ءC3ΜR ii*+6$|WXS)Dddo>2-<dv@u_6)G贙tYm#4ș.0:7p΁8K]2Ƚ1TLYFky\ϑ9=O.r+vPZf)4 _N;I)N8MZ%^7s,d3Xܜ lǪMܚacEWw7:?bfOP*9NI.*|r)wf2X,sQK:'5][7ȗ [rrHGXK )=%M"~\Zůެ#Hbw_`ԦJ ۉ1- #0erёxI4hv@_*F.@̚Hύïy|q0uH/ GZO` I^$Kfap1n;Q`[}~50HIU:[DaieV9Z9pEytiڍLkg?b!tδ3umrmA.@TGܛ1] .U"DZN!m FǦsg +;\ AN ff[;XyZR;211M)hmP..kؾP>lHyVbi^C12OAc7BeKW{~uBYϗ c%=Oؤ}T 8zsЧv> WꉯFpbN$^&zCZ +M[o#Y1b#=f(@D3_5oGG+nv(lc/FQN<(LLZwdscj΅ӵN%T\'20%:-&ץ4"|`;ԨvJ)Dy}ʼK Od7m#u( n"uB\ \O]7 E_4QIsejf8/z. !U\~dә`Ksdǫ^zw%c8rzLֻ,xX^`Rߥ' X$z+8v[҅źXr'8+=ǪCb LsD!i@@a%9^K{N͹ k|%vNLte-U=R:}10Gn$ 7"î}yщ6eH6yL^qC'P,:jA;7㱙 A&"E(?1UsDF^wuD+ j)B +ކYyFc7H.7,)̹᝷Ul:/' 2A4f(4GEQu)lt6E{,uyri#u WǴH9)*SD_rFDz̭WfHA| R-ReAVV3KG_ +*e{^NNƱ1}<]'{Eg=O4Hq_Qʠ@wjq JU7KIoSV`!ŠKE +[#Kg2wq=yA;bٓLF}GifBJݝ/N]z:EX:Meg +Hlk#yF#3 ud<Ga$z˛f,  Cryqg*ZK"t=Dq7A +Phnw{JY<ՉG RISg4Kt 8W5.:H]ޞSC4ВZ?QpFC;m񅡚bu˽hO<;.^^o;9@>V|)NtB^Z/SdNʴn)A4'\e^ +0X|{)FWl}i>Y2V|0d2dFu+Py +j4wɺ+u%Ҝ= @yFu|Vʌd*?"Y-NFFvi$eHH1v=eB(%0&]:D7 +2IsI-λŴDؽRq;͑u=Ebe:_$e3j+ffohzx@ ljx:BB'8GqΦ6),;j\vYե*jX<'lJI.)<(=1t4wD\V Ųzj% +1$/ b2LuTʑi sF-cS؋u&Z(d&m0Vjoi@{ bei98 +9BVksb1{[n) 7r+ǻg8Aw/mj.'XGHuG^"?6A_q*|nQ78\L|BU23%EN HΑbx5P*+lm%+b &QY<{Z&|mQ$ +#A0:i`A׸Թ**]|~"sgmk|LU8d&%8=}Z˅!mٛ&➆鷜* R*Z" t|xv4rH 3wWib-s6/8i?ڃaѴ"K;rݡr^X<s +ŕ@2:<{!zǒڕ,3!>'9Bv~#>4W HD"))F5rYͲR3kݯ`RG$ =>$/ VV_sO҂E|{q^kӷ\vU?r[H7wFÇȂ;Pui>>3<mkui"LhzQP zMU8>OHʥ[}bQIAӂh ٱj5S9ϸEoe^~3OQPxqaCv1&-66G)6W#~\Dxͷ B{Z`.lqz1VSBLZX&5 PCC<(Zv{IoA(Ļ\v$#5l>70$)z&w4 ݬo1 JN c8ta;[yЛGuJR3ؼ06>;)gOW^<. ߿t"O@_ `ØX{UY-=9S d$V"7 Zd7x#1k#7ً*j((Ċ-̈́<'m))X`p&s"jAe_nENX= +}UqgDjI ~̷& AaK|;M<] 851TĹaĞ S`:0_teDb qV!T1r0@4=OyޢȅD,OHP^cx!/|Y] :L6:eXFdA\v@'NQc<*?.V硻B}ćצZ!5v Zc7vB&,`uE1}V-K~)g~G318!0~'8' S,=-DҞf9l DBC94ԄW.3;fT>V71@I)[4atgT=Wz735q3oG~xL%.DC;lo[a\hznr'(aLWu!jc_ؿb+{T2ov +}eG֔V{7=ldp-WUCRIǵu')L?ehKeCK2@}˜}ES#7JQ?3[id" +=jEDeg?LqRb%U?"ps*{ičYHjZW{Ms47nwF0#%ǦKCy~?å|Ö lVztDPa@Y,<,E#>@kezŞ +R.81'."zjy2({_tnJX~@|rr5FHѲl_7,άm2ߞ+Q:5(ϼ۸5}ix}-Bۜo{+kݞ (hƁL7Nkd`=(PYm !w*hffoliyaYF9Yc *%q jغזvMɬl_WϳĤ> T3%gD1;X-,`h{mG3sK CV6`ܬ G۫JpM6ȅ0zܖe%[8<T.N⠶`{IB/O$k:& 2ЉmS"Ś;ng L'F(lb̶B FTSRthvd@E$A\K/s% GyR⦿4f*}Z]'_C)$ڛVٌA=ɵ!T])Z~-X`[ݔpY-sFtۇi4&`_GOo\Q] ]H7c-S2s_Pɛv#įyecpL9Z[=7>cƹ B]e1]Z_:v?%D skVl)n4ş W߷d7J3nkF|,9B;Lif4{~u8h@<]MG +7+ -6Iw.?˃ Sn8|G6Q P*PKXIڀj3r6{B&ǜdO6 +%k/9BIr@^@~vKDxa7,d O e +ĝVQ˥ċzV%LkAdq̸sBET妑S(Viac@.BDx^@@6RqCµ>ǩ?:5x;x +ekYj昷![sA%3+"K=%Y5߫rh<&) ?=1@ZQ+4,`c84p͵9>Q(_!Sj)NFpIl[aЦ 6O0H!|w|8؇H\AE\urۢ#l;)k#ܮ!=O쵉Dc[&8?4/Ps8Q刵$_&NCn;M!Cd"2?.ԅ'GV*9,Zd/'@sa/\:-M&׍y'ߙ%ZT}·<9DJj:f3P.Q-4~5E8+x% +ğd_|;C> q( + @L'Re[E3\!NR ~C2S|̉M/V͝% +GU9نb=j-TtD_b 8~g3` +h-&z,LJ P ]j;U\!bovIQi[@jgIK~{/Z,~ս U&\4(1>E r÷ j֎#<^@􋰕0$?t="xEN,hHޛrf,|7' +xNqh4:UuLC nd2:?Y>#DξfBP%]X>f) +sWuɛ4Ϳ%B VrZ!udQ`FƬYDVߓ(/Prih&W/F…gc5΢0 +Ĕn'd sw$ܵY; Z?N /RUdBCfRLJt^N:TCB)ޖ?EX14{zo^kt 5T\G(g )dPĉWKNH;Z_ +:R5xExr;:x񌎤TMPHCB.E_ J2cˎGLtw qu$9+yLدkRdt3ك it pPj@栵;MCA<L t@m 3rDu*,#?֦:H۫381cbHFF lgUa `_(*M,B/o{}#o3bJB٢T?„R]uR]ꤾ@;Zd)v"4$^t_._(Y@}+QTjЀIY/$+X k] J+6胩{1,!u 0ŕ%gr)4 bq=SZKĢg6}-A)/WjUrq/ݥX>C3>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 7/Tabs/S/Type/Page>> endobj 20 0 obj <>stream +HW]$+fV[p虹'YصYTRUIKX.R9NovO?_>?o}N 󯻧Y:uNnqa?R[n~:jR.%`hFpit;0_qës:kzVg+\[5J>^j=åRY1nNS~DF i/ax? G-lf`3Kka+ig 6:䠰zp +N` ʐJ\OKRsl|{@^lA#uX%sq}W/[rzvLX}d!b^%OG:W*h;OK@eiTHї0;J.)~6®Zo +d_ 6!,Ck8AVd(̫_hYɭ%g +yöJyn+soRijH V|,Nr~Oyˏ5^?}Uʮ{tg0hauS_ Wz '`ȪR(ϧȥ[a3il^ ._c&)=a!A~|LK/PY2w=&~h_mF=*+޽J/R>Ꝟ>BedJeMr`]urݎ1l2 5)Vf% 7krTkB;{(B\98Yev2C MPyXWثr[z(V%E]y֋k"Rl{u-ْ|Į[,XX}X芤6O&UFRdu[De۠dS`YbdG֩+oXFj BC:Q%y"V\Bd${I6G.|ьQfu*sMKD4MOn(L"oj'$𪓁OEUϙ^z=0oqsO%Ny_)!j<8q6/Ny K uU8Z@_kw I1uyZ#(AVGi=ZA3ܬ(CWmZ#RvZ4JR $|4n](EK&7P4D6uVR;+iM9.UGVձ*ٕiHcŪS`2;TOH%/~)QW!Y3ljH J>bqCx ޜ v38ݩ)AIO Uo2 +Օ;a+gfE&3f27V;RꦆaI9ccuŕ9E#R q_P+׈ɼ:w_em$8X6m tZ~( ufyhA^JIGgnhMs]J/v{DZFM8&]="J59Rp֠N·[5jMsnZTZ:i^T +F42U] WwaX +PN{i8l"B)_4"O\ęgf I!W#,"Wa5)Ƈߑs\rV +DC{*rksˢ}׫;͍Ӫu}cFJEZF l/Qێj8NnqjX +bOcDZRS {U 3Oj>,f-&\6̂rq jt+w$q֭~UR)+-݁2t]zl8J\7ӠզGؤ"qS;k)$K4Ӆ?m=Zht|X^u}LZbdReg"f'l03T|&{ +Xіx~[S+/o-Y;)+b'w2ٮ޺&U?0UիR~ȈLVZ`  Lg<_v ״ۛ0CҠ*Nf^!E\WT- 8g9' d(+sNC{II.ʔVSa/ +iu3ºK<#E>#ù>2$`*7n\RwmSG{+(?Y@#uBgɁv}nfٕlRW7:`T֍,$ҶԮ庄Rx3cE 0ƍ!ŀA~[Q/Qn vmY.ּA^8 wS[bh4 =$o=G<[3 $)^e /3#,kag{Oc{ LL|tӦ (>".V!c=9~J,x<7}s30 ;})ntoM1ׄ%bòx_>dOƘS[T*xͧSCm5%c[8TnM+;Ib螚~NhAhTa-AʞϮT>HaQ71GYtF/騕!FHQn\ܓpn[2pnR`|-e\ĀkF,!zq~:ޝ^}_?/9w7?[eYqK{h?ʖO;|y}x`I +endstream endobj 21 0 obj <>stream +0 +@&| +0f_i٥ɴw4wQAmZO\ֿA$YJ|@gE"P[=iPi 9 Rbt=J&JZ) oIB{uY(oI&nZ휳4ONX:l]AX'aH sTőנ[C@M QȁI1x9i@3ءRA8GSv͗< +Q֡V@n۪mzWarײU͹}x~B/qIat9M5"{tu^csv ן֗ Tyi16iUg3ExQ+v3-o g(V6} >6l"GCmK1;Ò|T9c 3Ya"{ڙn2N*KbL(ŇX{q5ꍾr8,t^]掘qPyC)y~?'Y|.rܹͧM!c9s液;!`EǴ +~)mq @$Vʱ4MZI\VZ{1RLtck  &%$NônEaRzo_8Pd٬aaе_&3;83n9ujk0yV8]u E؝!7]0JIոw)<XQ͌KPhTm3j3xm|Qa ;,/f䐓Aѣgx{&o*#$dt 㕬>$xSjӱ1^#݈G3.LFJܽGHu50 +;1 °ژP%/E7?:Tx vOὌ9590 \V*g Jx丛s!!IgiDg F?TZ:bn⁦DsPEBxpd) (Z<[sOB?+|4kKVcF>-ƾirhw}W.OG4)Y|Cx +EϖJdmrMOBbA toёs~'yr=NI + gœW6VCV%m—(zE)ɚm#:mXʰnjjl@|M2WqyCGaWհ|2{^Ľ-tIao{/O}2m>/Yg+S3n Dh| 2T!0L%pHqBLDUB=}utbV:)޷ŹZ8$c5I;Dp+֍CQ<3hBըh +E+N gTg-@Z{hB5TC7#a| +^u=N``iJ_^yb[8k7o"`\+T^J%N-('9baQ .w6[qS5N<޶V61Tb +_RIbV 0 ;&`('E  OdK1\9s"י2 4Sטf)4'!aP+*phX (Gq/M/سMh-Ij%U?$Edw,K8x`:d5uNMvȐ_y`oqWmG]{$,0UOԭaJD7F@L[MpƴߚjJAQpt\Zt/q eZ! `] @]3_IS}XsH/ģq3H|Qa 7 0ie  DW;mݹBWזex]$<6qyOM>ѲGMUv*?A;46d wC*3AN:(֝$/3O&\˕B F;`*IѼj0=J8([Y5;͗&}_JmEi?oʪtQ5`ٗe +j߅a' 2Rf. 꺸5AY:dF0QVqH(oW:ؙ4A)~Sfdp9ȑ䡹 +C#&ibuմӑZ)k Uw^!8,/2ۘ{CwBu(<7:*"ho78/pJkɮ:&;M):#q!o~GYMvcX\[lry[%[վ6{"Y!,f7SNM;7_I! YCY;XoqPo9Rϻ[յ@Nsy( 1FKBsJ +[\ >tjWPEqMnЃ!"I3Rq"Lw\w}o#)W⚾ m{?g<$_fᲦobDK,ZГV5n0 |5Pj}:u˫H˿8cW)7yybB$KaicTqQ|"ߴlE29l\f561͍XIcY_eC*vT-D7*ih"yQD.zR im,@ vj{N1{}L67aQ .˹8pPqt<'ɎR&zBM=ڹOoEɄHE#hY69C0S +#Ruu >0ŕpm- +`i\2ཹ?*T"4o]H=)s]<c{2&<{WøtbF{OTVKg]j."$la 5U[7GDkqιAhlÚƵs{2^[%dBRx) /ȁ(Cݒ'ӘTZ,i/8#DNiu D.V@4|A!YYhJ^@Ce-,7{-q{SO`{3BݒvȮqONU-lϾɗ6L0O aRɽ84#F Ҥi6AWWz[gnuZyUJbPjEZ6ZXe)Ȅz ^{|h QHesW]m.Fz>l2Em~h+uA$@+U +V]F*=iSUcT!Mo[R@@ikǓw2nI7>m\>Cķf܁+tepm R)I> +'5=b-ygܰc0ov҆@TJJLS Zp'2;"~R-dUq~Ա{'e躉X4wџ36vb`,=3b.wM8=c+ +IM,E8c&*hU_4/$P"k@EdR4hg0]m_m )F]:GX["JlyL6%٘E"w\׷#qlII)K|7wIaʡFMWq;6 + od(;^C+Ssv2W(L-*tX0LH8ņ8M 7$8?;6gm,e?&mKɱ˩@ yB DHyNEAo ,cG#K!Ҥ(Ι +ՠ;]9v[Qk(f'OrdK[ߑ[ ^zEhtDxÀ* +Kv_;4qn_NN%{K'xؖLd1u9ݼ=ܥB0p&M?3n=CM)} 4Ds.띷Kpl3 VGU`SMX>:)P X,EL=~mGNĖE Ձ8za +/¨"ñQ1y1:~EQL}h9ϓB}{>]S^wz1AyG$eCg?fRπz}Ta=}3CÅUmS<= xY.|eGJ<+|x$VCKVH6"?ˢ(5$1@Qs>QхO=a) 9 XOF]y,/ks[-5F}W Ư̄#_ f32+:6Y$bSib d{0V;-2 xLGw1gI]#ɸzr34PNS'j*l*eĪiȬ0kw8}C.)C~[*ǎ\(z@Qc^ˎ+X3ߗN2ѓn_ 8DP+HKDJ}3]9F+{,)9zr/:pDiT Q3%Ksc9 Z +ewy- +pThX/&+O_\ȡ;"D6DSxaǼ"3˨g8 +{WE2>8,|3~-k+8sq?+Q9"um7BJGSR}laW4m#??HסYLZ`!\0\ECGy UI[lW8+T桠@>2! +*BSdխs' _¡è |ŐzZgI*%V CWc&w֮4ĨRd# $߷;Y³8ItΡ,oC0+ ++U4-_ -1P9+cp#L,1`H_BWgs0xtx{Ag/ +GɇtD/IA?~76B2e>`4>!4IQaO!pݒa#K +"Ƕf*h#,N%"HO@WB =t7n٧x3w[Mod^]pa*x* +ȯĝҬŒBo,ALt{l.YlDyԭ<۸%5b?/hG +kWgNU)0_b#^S$ipJۗ?ţ /) +ZM>NyF='rPwZ-I4bF2xO&=2K>&Nw\i]LboA"2_Xą7rs)a{ 1{l=qS#t,>PX3-Dٞ~CDQ^)4jPgz#AR2/==ߗ` Z@#4d-~hS^ Ce9Bi.G"BvⲰJ*YRXYl/Sô K ڳltAYbB(§}!X5iT fU%jYb i? %1uQ78 sa%%_VaFn {/q \)IdkO9zE'n~7љc=${Naq^CL8^*n ZF`t_|cDQ;Oʚ'@u' بLYD +~k*@z7ny_zY7r7FsY0:LQITrÍPQ0w^ Xo>n8bΧ~- k02N?ۆ@nvsx>yuTͩ$]i5MbL_*aU0k'6]ȯfmcWuHAx"'iY۳ZH. S|>1t?5xWJGnˎ!qOE3pg;}bGv~hKn:~ +f8;'_8:߉(2Mloh!jL*sn`5Nv$kwӪW}T]OlSX[fg1-vh6CgA<^R9 abψ$ <#d|Cي "q&ᮀ3i=r:O eƎG'G3#$Ni>@!_IqyΟ SU,6 oNǴU9+â+SI7BpTt zݺ-?^ʏo^=+#֒Ӫl\ԍPڧWD1殸DSt#(K}ɸŻIpT<-CzI@aWA S +#2t!Ae0t~'@K@jL%ҢFGf?k |uNM9Ҭw}XxK. 2^0 `4IS(cw3@>#߼D{xnU2{(K qׯ&F8ZfYѮprN[oRs"좍I©Kr#d<5I?@S:է @@thr[ +Nim_9Ò_ Ґ;x5,xCPZr@5z䞨Q7$梍l$UGX\v]{q6I#{*pS76:Vozk)IHn9V؊hD+#aa==m7À3eEPƔ'S,'0X Gi%dqbL1pj8B謍:P_Wr6hZv[q2H %D7VN|"}JT>-56CW3hÅvkCHV58L[SXzlOn*M ֽUuCƷd"K$eR({ mg`[∴u8DpEM'pEr U.vNkS 9  7{^aL2G`p:@oki#сV}9o@9CE igs)FODG;wbvhv}EңQKC&ugfɎl:tA6aVn&Q;ƒsLyKw{|@|˽&?,d N>c+`(w e=az%änUpz%GYgP +"8)Yv~l: (q聊&sф x`z|ͨh*INESN Pj yy 񂈖_ +`|~ 7xAXG֕Q.KF8M.pԒ%s4j bBVo$UZmuҪ S2(3^:r4KePq_>H9?u<:*瘷!MElq!wN7LZM-)kNҝ" `5_Ȇt!?)`M ӺI'dr̷)nEx8-068kQwѲ3~.wMMJC!Gūr/F%1Rʤw#|B`14Cn5)ܧW$.{[N>pQ!Ԅ\ߛzc_`OJYsiҞjN;c\97xoB/6b=uնL/Vy%f˯p&urɾqV(x# +?/n@W>dcH| /mƕemx1|H̏7Aiު5CҧURVJPy<@cUXSjbvHI+{Q?H: M1L?/>xE&;"0 M8o2w=-s*!@] l|a*8>@JM)QN25W Y0E(]BÑ g=]%+L~O\Qd+C4owdvTV%$\y>r +TaJ%yS= Gx͋o⍈٧ئF8*[L3RAP٪ZJc6>Dy9u#1'p6F(Ymȇ x. 0 oӀ"f}?OS^J0b0@n޻fnb9?KzxDF"C${EȭaLw>E +I{'ֆoRLj4Iw6Pj 3LWp0y|_ۗm~#Dnsa_Z fVG+Y^CZX `JV@q eUHhx.2=9ݤw,TILW"QMHn{\Ϗ[XגnGi=E`V@g 7/ ~A\BRq7]Eh ;ɡ7rE;R/Duȿ#VARʾ5jܶjrK;IJu^Y#aBaj_yN|iT6O|IEQJGI|aMձU:UЉt"*7dJWA9x >0' \_s8A%َ+JS̍ +SK| 'ݵag(g# ٭KKKҶKYu^;wW<(C=݌rb` +j3w-`V)^NU9 ̩>`udv+A8ŮQ׳ug'6$ZvQ% +Ƶ{KU찴xd^zL#Jdb1}vRL8n{CJq1Ʌ 37Mv~!N>way8xYp#?%\k"իJ+kӚ)iȔ Ioyc \?=ߠ~] Չέ Lzn4!j*>fK$ AK~<+D=n̅oO˱o2?c3XM}5Pmp>4bCO]}{ٝO,ag/wĜ,GI8dHڤqǁpK(q'E_W-&y=aU+f0üٵ@e! |:aLOyWi|wmF"]Xs"ۚ ̅ hMw&Mn[\r}qPmB,Gzn|&壖\'e i9[P d>jLhܼ!{3 ]yPX|QC>X1haFz$ገ3cih +\!󣑛~wD8.UxKEZEB!H(Mc!@3LW:O6A);iœ;-[0k=DVqcqHatLv`bV_UJX2[hᖴSVlI:Q +ݥsN&y/Ǵfchr ћL1 -W39͔Ԕ!oj?4zDؚHnj~7wjV9ѥ~_й{JD@{fnj/S-3̔u嬗| 91^C'tjIÌޣ w`Яs*'T?-C46Bb\fU] a;s [a/DBřʥ(o, <9,u~7nd2iQ}v~q`[LΑim\)4 jbԟS+KH[W K6HDz ; +扛EiALI%^R +UӶ807l >Bw ԨΪ:6Dm&cu /% aB8r!J1t襜9˒\*9n~i#j +E9 "zCsȶOC!`lG'\"rx!R),D??+J-v?ȅz*p-WB_L5e C!ePz9(.2T893lTMQ+}WrWi_ Od`#aNy[`z'\mX#*At$+ƥ-d5SS4 +]oNGtSpn'xUƳJtۤzq~"[=ކhLf] +2Jk, YeY״v'% +# +~GUҦERSΟ6\U@غ)N(q4hP_م霸 ?Wpwb35|*1oSٕJh5hѡ HP%yc00%m2%o;䯪t"o>:tTB(zU9}2{ZO`W`S޼^cJď"ޠb8wLpʂI55 +3cxR$0};CH&.c~Y[OAF֐k)L C:-̐z&)O9HGl>Ilo܌{:v۬^Rܼ ?]jTHһ=w"8x]r_+ClѸ})NQogq!.4)y向9a*yjY*$YTyNS&^/vr >2B~;mBZ5J^: ) (E[,*#:$Z*Oڳ|ĩo hJɫn#rĶ܅~? mQV Xn:'zr&q.՛O3bkAT?ۍd_dfV`ңzDBq9D:_k_'9y.+*_W(zUV8f@᝞jFox,57@Xc̱s|fYBLBwBHްP~D.~8ά1ycGVH2Kpf,گ[PNG{h@+U?$v{+%0D4*&qp%;Nʒ:M!!ܵZ1yJCU߄v1oɌWb,Nʶ+-ا1Z}8BѰ2RafcK$=qZ0$ Bb_K_ %=`Wxk`{4yW0;?;; +;p[ MC=.F &KN(چc *<VIL +`hs2)t4h +9PƱnJMćӤ bҁݞh>ZJݕ#jʦuAJbqmHBfc+sݣ壇i^<ӈz^./*vX;pQ`A_$Y]UXG,H"蛍kRR7;m\ <_+_uKfj')*w9ĸJ;]HDDAO4~Ty֢DŽd= ^y'=;EY7L{Y7[HkI^-L"b_A&^zYzf>Kudk e- ˝J +EYYmh36 ^|3>6聆,UjͅQUa­yKpn\H *9ױU7iQg\bA`0׍lv386-=1k_f Rœd9;|ffE /R=s,_ޞ-0MG83Y L-D}tmRf5suagDǼ + BfҬsE\ +EF27Rv"65p_ WbAM*qڞC@L璑m=xXq_-ӟ||9\0wxSJ&g +"ifxid ,tƾ5/^r7rX1-}OOcBCQ_l,Ht|rWPW0H"Gu%f HD~Ö>J&YMi׭KxciǶE`w+@_ÝfTPֺvYtAGιB/ +d": 292WOήk"u +V=!gh5a`-6&;τ8M#tbr-˕۫<Њ}^c)Ԉ< xv(2@lC3{g1sy6^ lGLg(o5DfIH.tmcW0w+9P^_݅@ 6AZYr䃭?$hUD rKb 5+%zA\b@!~U7ewbW ̣(2g1+ ˎ0Xn]}kWxbҍJec^tZ.L7[i+ ^=G"xgq)=9c-@ܔ7_у0 o-'",[~S$e2P%k[bd*#9Of'#ZQ g;fo9qM'|vwaO ؇N4c#\X;tnN/1,]b[(byYn̺»eM$pF6XWX ^DAr1DF#qߘ"O"^4mp0o/ĞqKq4+t٣{qTTsmBGf2.1Qb4b]yɕ̤\+&Vo`Q$^BvHmB>"ڡ-ڙ{p|sGfj7慙 ڲTdF) F6NҟWXz: +GAJvQO*~gc`F 'z`:;yЛtP04~\vvi/B__jiazCzpnP/gWrUtЯo>yꛚ:CdkQZ!O[BL'KB#)JL(܄mOkj$&  UZ4:;B 'z3 +h>:, N4((\RTD H2g+W<~ +`o*Z_9%SsʲZh]A~]8Ȗj} +ᓑPZR ξ:](\]E1j_wb9F7'3 ap_dqO7[:y c8f`kz<ƤqAMP\fP}Ϯ}[ȽMoD|I,h]gjTy ;w|e8RjhvXX[TRL \L +F1'N\S?U!!F[YNQ, @ ܩV@;k}$JWBEgӳ8WgsU\x{73M&=}BKzX=Ӟ =qR`!P +j)jŋúC4U|KI3G-f(Ἳ#ޚxiC ?TP&,>IZ 'V-üHKmH꿘۞f0[)I21X?qun-UnZzUQ"[YQ9] +a&YyY +dv4KĤi26!*H\"5Vx՝q0It5#! #|W…:-c P'Jh\wsNXOfur3xpCNoyFNo[oKŜ`v1hK.(HEsKvEf=`7JX-%Xķ&U-TވʤpcM]N+T+& w?XX'u>\!((:N,/LJu8+ktЩGvsfO">פ@6+k{fJJ}U 㝹%нDWh +LKWYR$ 1~X\3#}.IҀ!H.vO 3i:>\nCMc 8,e/hЇe7Q9q>vjI&.Ax/=.Q5w(˧r152fXVN&NU%-Ș@hsTΗ/Qx2vִ9IZqntB):H%qbPj$0Ycbb4XXe`^(!/òA-|sOUXi&#~ֳsbzX P#2 RgTr.&ZH@ힹ~=F٢6mC=tQny*ae)?V,9ʼnBc/7H΋Z&zWoS+?h~)3B,̉2Ɛ Ú/8 >UueIGCN1Ԩ 2yY'fJ!t9#a:w?Qja^Q 6CO} =ETV |ҕ!ߺc♥>Dm]z][.8){Pd_ 6V.k!Cl;eTS3gl{XcOC}jkIeWuKz]XkrOEYe6 n?8u,Bu1ϞHn4I?5-WXr{(jkG)M+o:-Ui+=-j켔)k~=ﴘx*kҺdE&/-: :Qښj힑vEGɕe +C1ܲقWzICU{DX K}S&ԳyS>i='뫮hZٝ_ݍ]'zb+~I_\ӡ6_}&'}]jR-HOKBO7$s)v"Q%E=8[QZx_z$J @QF +lC&1n眎.5t8c'sb&FGWǗME`lOȐROM3]p#>1aÔsAtXK$ ~dU]t~jy@#U3g![ +עGs;֏qGMOVtGwg)­&^;pL#` CǞ̉,o|j5:4Ј] 5/+PCA䌋Iv(&ǻ(8(D 6VzՃbXetG!3ۋn!?,Qd "Q~Aؔ/K͋w۴3¨ɦ1~xM8c d __MTĵXx[@&և4ʋg\"[n.[XQ?JhGq1j>:U?Kv + Sͣ@^kF)fCZʞvȠQbv؍Jz<-Ֆ9*o-J*(&ɧ=l'jkMeRi=I:`|p^'YGFUP8 (P6u LN=}ׯy<F_p*~zP ҀYYJ`GrqmY: + KshX,|"OQE?ws-mh%s'.GmH>ϩ}kxi>|H":"KzQ0 H'jcIReR+R9i(\C_aYs|ю*FE>t!W"m|)(tGxX-EwBE>.~ ] F5I6ۭOv[D"8\y|MOVĖ#nnm[L \Ѯvuc POڱ+M^\}{fgO&f +OyH;,VDbuu*ܣCm>Uy;wbYr+)>@ijU>^Q%99"!Kco70r` c 7Dܯ,"ۮ o#. R~H$ӧS̻Hvfû|%fq +-DK9"qZYr(j|Is&$Y8dЏLY7/<Lc +-fsvZ2N2@E,B 8/p5XzܞG6gi/csmQA08H@#vZ?Gdkmow~Ut'&|Gg$ۣ6P1:.s/%ZRF;g1G@x|aP~|6{sޯ7{@["Rm r_{ k(7']˧[H3M#n,u+zLt%' ~c݃**ڃx*oʕQڬAXi k91bی%R>oXwO,dF"O'$E_#xLad1&Ӯ/T b!ƨsHijPB/{ 8i~ZKNNRʍ܇΋W{{z#y&`,9 .N[{(T O6ϮKO3Yh.;Yζo[}; (*2%2 /Fêa6 ~mk0iӂO /sw GLᬟ%k97PFk%ǣT"E{4=Г57ؗϸPrq[DAttpevxpXlG7]m). T[>(,ANs7Q|Sixvd'Gwn;s-aVl 6>U=Ly eN2bvW/=HhU|();H֓u`M[Fa\{"Oy ¼ X?dt1GWjgCw 1>12kS( +Lԣ'a(gsڲZ}Ǭ +!(r8'1I;QpL)>MuE~o(KsNMZ~r7:RIs~)Vŗ ;N/I,kcuD`]e摋AE}/!{&|t[><-l!4NQms t'cI- :KÅ{~ B~Pr.KVԨ" +1MrC=bp,J~cA|j4uzCϛ{vWH}CHȓ8֍ fŕx*h5~2DwxQ2{cHJl;dgꪁWc3Z(&ȒѤ̭~w K/ Ixi5 N'AJ|Թmodz-<-N4X4rX̓iq/83b*n Z +ɑgT}JbKi9Ɗy!o3tg}￝x[/fB=ֶ˺|>hG,wq$60"m(q?;AepYS+̗W<[R+1UNWɡxr=}T0A 28!__CLoDG-b|zq׽)2V{rg6fVje'jز/gsY뾅1ثzd^x@s_iG@^eIa+-V^Zk8S1G9\s$W.v6$[J C%*F u^8VKIJ*wZ`5)s+,/u1367Ǒo4py;~P:sm εIwAz礎 lPwpHz8+-0ū6DZ8aq4NBi㜹+=56%6 JϠ” 24ga<\ +;G9`A8Ƙ2UyM;jrnZ!Na'f"gycѫFo{3e!4m9sp7Fxh҃]GoF. x\D +SĞ/Z ~bIoh<Ҍq\xQgzDK>")8du! "!%@ƇbK;¥V/s#GF#vGU28;<{޻^ЕRQ[53]|KX}Kalwb-\ +]E|JF`JmY+=[c% .["UP;S ??z),0;8(ltQG*@!$sgPO]JnxSc5;|1&f^2b%fƀ22ԩ39.SkM>-4dMz1MCU%$:H[v0QdqZ.|q`i(E2^N$ĕLJixu[QC痥.C).3}mv=r4ۀ Fo|Pa=Dv(4o_ ?9*T.®Bib]W Ȩ˸6'Z6`/O d:&itw-G$ĿĔB.Z`OZh%f +پ4ylgRj+M:>[AOK; *үNPrAb,%UI& +}8y\u?u1?b7 +ˡrnR5E'n + aw˷#F>/rK:4~s-(@/YJR%w1L>޳%O&|.ڌFp& [`Gy3x䌇+Z +x lX6w%"?y*0P>q91 Sp 1d +۫Z}'ǔui+ >oU5wVڏs4,lmkh=䷣`ڳyN,OXO#'/U om3sG]ѡsֲB@8y07`3ݖPMդ-cyLh;nN횺 Z +zZH l8OaLqüaݾc'JoQ7EoXh2ztzc`\{<-FÎm8;|j YY(r/wNЭ.,O8`#apV\ĢGHkpr/obmrhMcr&7Iyݷ* Qώ +oj60;ttPU'86Os/Q-Cē𑆅QvmN/ozq1Li>P]vqcp1{~cpLd;WFJYb:Q4BXk#xaѶ\ @hH7.doGTO̚znS B %(b*?.ߊg?HDET:[̜wsGۘjFJ)SCY5cnk @/WPX⨆a7Q\!}fJ 7g|L42I274om {ϐ>|_:?M +RUF#YsLo@E^6RT)Z={ }]h=9y\H,$䓤9Ţet6׿!_^JO|nj~pO!3'('~nd/iM/lʂ*Ovf7JL`ҋ>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 8/Tabs/S/Type/Page>> endobj 23 0 obj <>stream +HW]#+~Lju7?Ɇ؇y !l06yȿTJnSX񵻥8uΩ˧ۏ_wˇ⿿zwٝNu?~{uO`-<>}hO.i;=ӟvq/st_9lk6%vǣad>}}{i?UXϧ}8,f*?Gg )?Lxxzrڻlf=_RΤfR"I1{0( Qos"Q#5}^ |6M5~Q MB ŊüA什WnGyœ&23>bƼ1x",'cs\lݫx\zJs6q% +3{Acs_$BRx+*6qd`f[ ^XaVuW <` '\7]gGy&oTz1域ldgH<4@uӝU::{{*+ፃ0)+:un<#R'rPsxo"g8 +lj QG;x4[z{7x&lve~#mrFc5 :(}h#rqCxf-+5!w T$uO@&!'v~L7^BHfp1`C{(&BJI-f+3DA$eۛ$c ,Y飌ų%3*8a FŚC̙4@a^ ֗7et&SGS#][n2㟢.Ż.e3;֥=x/_ZAgO]Ya_G| hqsOM~~ΓjD8U&EIDI1[ |4 F[Ȓ]0A>& SaS+Kc]xg+ dU:q?l撳b LǷO[{6rVؑ1Ȑc-F<C?'sb*[32y~e!,Y~* 'WX:ʰ KUM,WoWm.lua]C#H@^uC=g> WT9rvE\PnwK;t +ẄYO7QQ%B@GMVX +e}&Ɩv<+ՙHe~75ui^68&388 OХbsLm+FTκ(dTsߕm!9lea,&ƯTD|R8&r!EXz(Y[<][U{ƐR"A +wHn(PYe@F6^bV r\*2;>M6ki;lXiy\*J`^=f[E=4VQ#Ҳ8 %[3Zv:zp|o3u߻}/}6z>/{G?W$#-HFyzk_H:Igׄ PuVʧ/oƪl0x4. T³},PxJc2ٲl UH;9 + |Gh:7C,\{o?m sPz /irnWaNWUhUAK%q}.>U426)U4O"]r#iNb5+_# YYQVV+hf}Srr_crcfTO:loGWR](n׋9! +b*\sѩ%WF§b͔ z~-z|;6kca=yު5.RoOZj&V3Xp3z 8P4 k03*l65CHX{w82frH{2ar9&.e2t_sU| 0ѕj=h=7eY|4Ѩ'J9[4q(=)2卭WH t-gR#Tc_JQo'Wޙk4< ; xaėyY]g>| "1}b SPk7l+|ꊔh?xThVcP&BRbq{:e Q +'-y*Ҹ^clHNbɇS bɫdZO_팡\Y\R_U^sj|?ƱawdlĠtޕͬa49As慀DSo,:s #M[H;Yjt"7RPYxmZahyƌ"ēҿ=g>XhZk߂7,sz^sD IUitB_Bbs*20OuaIjƶl ߜU\0p( }R3;?u񠶉^E +ma;.iL` k'FIHj`yF;^UYty:N?'k?J/v+?_;ej;.B;} 8@{LMJfQi2R4$8^4xbC[swBUP*uӥ &xH۔QNVUVzkR'<@&6`1-dwX $1`\jzYے^7)?OڌxJDqyY##E3pԤ)V-ֿY6., 5x7V!i#~jw])Pv)^mSm4kQhO- O͔?)@>vBK{]n0W]&r a65PX@+Y]r.h:kw#L(o\gW4ެ;* _ 2$Yݾt󐅟[TM+XNct Nk& *RV.6?uZ4y}XmȲE5Tx確2etk9Kwd҃ӯݴ SzW)D!g  Æ; +] +5RƐ%+ bH QeƵ5/MEmP5"):^)X^o=)~N1Shm=!e*1Ԝs"Vc +6a Ŗ ']N(E>=Jy%}W=qJ*nir_?}/vav8cϴ, Q!}՗ 8d{=;]]uΩs$j54I͸Lɤ$Q#Z?07jz0]x 8/2/~ew/_uݫïQ3YY>#%[n`Y&T + +0kF+P@!3h efpI/%>\>w{woF.#GPM7r wQD4HIGщ4-4,FhA +7 +m'eHf4m-PaIklSnMX¦eIޱֱgqnSˤ!LAI4pEpv9"nNrͦŀ4Jsܳ!qXjq(08ʼW-<y/+o zodMj` ^2F1Q|`3I %s@mwuQ^ʩV"!lkm擖h@O`&:5$[c_;a]Z8ekjK4;R (rMMq=Z-=2naѩ.Wƨk8[kr CvA,5"&Vtl^FF1*'8 \zrq\^cFb4ڃnt^0!ңEzCF\]LF4^aɳyhNg=f65qGt;n^r?o{Y"b{ ,!*"'j;1wotp +' duKx +c9K즣\FZL{: + n'OuH,2Sp)Z2j& "{7pC~s.l\+X.\D#7ʍz4=u/mQeZ{N=V@紨Y3KrqD=ɏ/URGp\NKЫ˵ ,2dxٜx+=mlڴ.jב5e +F"k.?Yf΁]<w{wokӹrUs<7dly?]pt ;j`1s"tf=:zsfl+c-orGD =xtK5ZJIY7Hɰ F?}@iڎg(Քm")jaSKyi o(0.7W|%*-[C'FeòSHޑ[aaN,Y%QNyKSD-|VC:g#O4~en$Qim&% -ϖ O֕?̛8TM;q']Ľ]yL!c0T +w)SHLVr%SO!29guLO=K Z;v3Oƴ!i3( +lD"36d OKSXȢt>>;H0[+$?𸙣L+[/:C8Q: v +';&UO~<2R:}f4T4F UHC~Y، KR )$&FdIBkpP)}#*ґ=.sGz`mu392NNI5ůmcDABr:\a.RPeTibaPN(k.sm\qWBmh ACu"Bs -Q0 7IlgRd_f@㈋3nqy͚ %Teܓ:׆5:+')E[!bz[`Y[]zz3 eZrtwI^7v'b@qpS=3a#Vs[+KL>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  e!1"AQ2aq#B$R35Cr4DUbst %ST +&'()*6789:EFGHIJVWXYZcdefghijuvwxyz?Z1~u2?ُ_T+1⍟K16cqzR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR*핳eR!'!C[隽y>"T{R8m|ΰJ 6}28ҤҔ(괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JVqi:jm\įFk!ij&"0zz q;8y )7p''|* /I`c9THsu"_̃$TaAn<<{UbC9 nĖV]V'Tvb@FF9zYqo.];IdWup-P]`c铃XY ^eHq/^7v +(,|6{q[%a<+q4,Ҵ=B5fmF3YVDӖYZ8tJTD2UsV-Kx/ F̯,Jr1 Y{[ܴ[CbJ@ \8YCI1"g$n÷~܊c4Iy󀙋JRutC 2$ \T8猌|]3[,ȆRaGVUddNK+IR^+l?6#xT,o!$X ) ncZgn,V&.3sޑ}r*c# cP ZkPl,7)/95&YyeDx^4 s19j^IRm*,$X Q=˫ (IU8MFB;ֽͪiί4#Nvr6}H `|sR#v9@쌠R8eHaU_ݘ + p@F]lw{K>IWxm,2@)Zƭh=2 cYFyXL'| 'Ю^K(Q!32xlk!^G xQ$xoF9޳)J괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JVyݭ{ry 8q<ޱ2e 3fQG $Hyu)oOzxYGqi$;&Y2#/+`k$KW`r +=ϛ5[y l!pHoG:&K,IjLͻU8WAIxf C|'iF+k^=B=)98\i[w4rۤv6`6#hڢj6tZrڳ 8WXb{Jm6kVI2aϼ;`w^tI/cӤ$ª~,#+1gn&0FΨ\~cA9e5IiylGUA8^;KPӧկ.#x Ok~FĖo6;ir^BĪIɕFL`8#E/t$ܬį0Q5hb klWiFkc#[OxڱDd yerq.;.d;].-#k:FG#&G͚D4v uZxųιbc9Pˬ.E1; n}{v[ԭ$(f6Ly`8qSIէź`3W,Il)J괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR`R)bTV)T)S0*LS1LUjZ1U)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR\]EhIcQݙ5K{I ҪR@-@'=k*i*p=Q[Zbqp/GqYU`2vFf _kHp 1zfR)JymgǾ+Z{tC>H 8=j*vQ*'vPMc0HJY [oYutlᔂ#WJUsJa†)n%{ҕf53.@0Qd`:ppyPbJd`HxH)Vnⲍ"cRjr,ʮ`#AJRn{t2X'dm}HHךJU3V#Y\cUfOP;O㊑JT9KyYrje)Js^-#M:䌩 2#Rqgl~\^%FmD7'ОWJRM2[I! +$͞o+< +[*ppAZ^G}V"JpqqZVbY$O22uZf\H :AFqgJR%rLK"n8}qWJR)@괥)JR)JR)JR)JR)JR׶LUmzfF޸$`+nZ!RIAU޿ZwcŅvcl?\ !qPŻI‰UR28#8^/5It]UTEid8TD2q4<l N{qWd#[Yj3F2a*传9AR1x$fOlf5Gg #FNh$̙'XN;}COG2ʒ2#,H EyRk(!l9Wv*C.Ҫ3)IеQ%̈́W96S۱VRE;f%:ġmhmqߞհ^=ƅY'wHdW!`U9-}*$(OH 0U} +3XSdF?B\UصB;T?s9m*<ʧ$g+׮.c .&d;_`Iz[M^h~7| +K^eax=:wF#&цdKr}A#KUPFc>&߿;{l]yotd BPb1}Qt/-H.($YIqx% )/:zc}+eԵi$Dq$QH9TmCMm2[cRdTz}衤yAV,< bVWo`?6J\*QpI՛п֟X?֚άDBHAyW>S2j Ɣ>^Ad!Kr8MZOKzr,n$ >H;ol1!wVMc!lsň6Wl!s!B1F6rвIq^uJX.tI\nkDZY U,-ZC;W rKXKkW׃oOዅ;prű6~$irSK|z``9V}UI̋fĹ_%lK[r.Nw}4wI^tbYTbI000I9cŋK;"^U ݌Kӵ=YHcwCIJzYsZjZtCCtSf^sߵ]4AX1HmQZuk[YA +?^\;9]=a9s^Ģ Q¿O;_(Cr ݌׺ARdrL{ PWf>lsQ)&,R5õ.X#x*ޙGiIQ+!E9ҳu6ܠ!e$0םWSGrv"e'@$ +Ŭ]Eqgos +Tc.?7uW7]8Kw*rBDzJ>)8s^Aqkst 2;=b@J)]>T#$nH'cn_ 5^N4F* 39K,@8T?~Z>wHVㇺk%T"hbAϰKorLF<2ȱ3g\چxGr$iLD2R`,9$㏭HDlY#n<۽;}j&XiZFAM3r2vfc{m + `']#h̐?#62j [eەFTr;J|=>ڜw#f.P(RfF-8 +Tl}>^Y6tA~;a6jn[y]OkBJ2@*@8>yMx#-2*FBm( b֬j(,,l)l89'Y˧m.đI!(P܁Xw-I$F?ghK^qP4KۮYw2F>'Eo:K,{#du>1z\N<[<[AeMϴ+z7>`\ jyʣV R43n&(cB}ʨ68%O +ju";BJ3ه5*uB+i !^@hAx&^#K\4rrbuV8'123 27+/ 3 P="L i4e#orNjj"%{Sk9cVn; !pϒG¡vzM:q#$ݤ<\W_cL qlBA bb=TR* {5n,z!&fڈ2N 8&TKJ7}@mWSpG9+Tb תSZ~r]#.:r۾3Uoq,qթmA(I\1*S89Ҭi 3G!c*I?R5zYA K*I<}쓤EU +=Ip?HㄹEnb;&tg($z?RS\m께*`'~OA!R}H |zW2) +X{FO^1 NÌFr9j+=S*/pO_)JP괥)JR)JR)JR)JR)JRlq;q + GڠxL"]˷hlݏOj-4n-z ل(,ʡ +7qVm,Ed!05tem韮9Px:7a~pI6F\qǦ~3^"[ۼ)⑘?5h#m;pw`VBRpq4vݞΐ>lYoJN%նi&.%gXHr7 R=k.-Ȟ8&P ͐8[%Z.%)L;{Q2/ mrs.fqq*הf̶t`Sd;9Z/-bԛy7&7e9k0ǃ1t'-‡2#!Bߨc9tu'[rC^*TDqz~ciJM Emx 8T }'R̭X/Oa⽾չ#+EwU2'c{w5im[Ĥ#*|1WrmfYVe0@qf?*zq3e)#ç  nիd[]har1P!ػd=0esLca~cv;~G5f:C ̀n. +m ssQ?^ `y$aUh Osz]6{m@hj>2q'95]%vI`#N co糽Z#L@7$s^A $Mv 8e8#q᠐FPI' r#U7TchVi<9ݐ1RZhd. ,D|V drGsTXkαE dp{?4]}矌zb5ſ1::ߕc5)B\oRl3`7 %v:{xL/ b[1FsW zF)')x`>V-FmJSlRxݜ ΄<Rkr[U!nu5L)z{](Ď$P9l\g c^5垟ص&GԙZ F$7tؑZ+p; iVZqi xv(c`sz͏ +GYc8QdXL/+W7Z0eAc<<fja-̽_ck܃c>(EFMٔKO!U3&G|`V=&X[1)I2xdd(Yv|6$k$!s̞cֳu1]3+F u,JT#P%.4[HcG;*MdRU:V )fܼ*5,oҿ#g89~\w5U%p`u .ǚhJpYTJTt IhLd!ɸ2HITg'5tV"K%Dr& sY^OńUPAwr2 ,4kŶ-Y${RHb: )K@I 1OEoeIVˠ0+/8'Wϩa\/LQ 2sP3Cҥ}S\x kh`P_ɝqg$؅ةF9ԁZͮ:uݒʐǶUܥՓ9Pq/ 4Bd$m$HP|E+ë 7P@8 8jKɬ_w2P=` :,aSާ$;A Rk{E恑&Y#brj+cBba3L 3# bG)ԭA.ѭH6~i0Ķ08wVNs,W*BdqPB-?, dBF`w8 dmn" R2%Aa a`Eele-,}?1ڤp1o4tkBNA +Q;%TdF< +lb?̋AquI˕t0kޛiumq6.%ܙm,X<U;q[DzHH +p Xri t֎#![쪕 r73yj2fsjѦA`F N:[r$m!(ɕ\B l c֤h sċs%S8z{Xo/58d_D%YN݌'?z{޼ֈa0$W1+9RI"' 8O"GstӣSgۊ +;NH."1 0pw#WW;{CN mI#K'H0 ;fX\ë_\XhT;b ~Eo$8gٽX:̻Qp3k>_:%.ͳ ^+%Z#f^Cpz("2rqqZ}s^Ce$-)DiZHF-o#$);qVm:Zy3ႽB`OA9ŭKJzHK$6x9]<`9|ͦ^EZx"JK (=ڽγ*})Q\2d$a3R$#vMTcJHYL"ѳcK'h∄%g6)"%@{i%mqFߗQlOW@ҿ'='}ِ7ڍy:|(C.ð>vn9`ƈWVߪI@!B$RŹ<{5}&EGMʒ\,Nn [S1U)Q Ԡx3Ux]̌,@HPr)bTVLS1LUiJ*q$ru*XI76 g'qJbVLS PГ3**HQB0u TR괥)JR)JR)JR)JR)JR:A1j`m?zjzLD p0=-cCk$x]r< >{r Z>yʻ}pLU=i-l"%B9p3k4%b]#znN׮#1ڊ.qGeW\{Ozy۝v6;qg4]fIE;ӫCĶ/o;=8Qp~~qGC,![Y9uh\Ǹ0=GHy㵌%鼋HB8>?\ȌXdo#=c:L3 *Ӗn+/dJ"^b8P9fc@I/+nV|uʖP}9JMYՕr>UWel\JdFM۔1 +@4՜Zݧg`+'O[YߕmdQjԕXj40UQOܸf5 e*sbxCXjvk׵;eR* dR7{¶+UT0QB(U# p1p֩]N[(6-$JIA=g!8IN#r{`^>nĖ6O:JGtX7V `m}:1;t{B! yz^CcwTQݘ>*үBYI.bn?r}"Nk|EfefLyfRx I sےE  KlP<V`C濑 04F8ڇs@Nn[1g  +ZGS=)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JRҟ,gdZס*,!QYA{VjD pwnM!{mRKG!Cc'klwm_S[lfIY2$,=03cn<=y9B +)vK9: +Bu-&EQ'Ʊچ-֙(lDOgxe)H%ԍ}S)l21AދuHeGGD5̽-#8c1IOQmwdXm;ʢlvٍV8 in#*l%h;ؑXZ*ܺCw*+ +('DPk7J5Ψ0 lzh8u}N8.zM22@pyϏe}xfpy+KHʢP+,pyOB-Vs/민`d c g㟕6Z@dxZU*Xy> H{pDs + +#dke%y4r8d( 3RZdpI~%雤#_n-iF;|2(`Y]`*e+1ɱ_23 lK+@U`m<~1"k> +5R0@aI!NA9+'Zťɯ6B51hdU.#%G&t Mۻ?7;TR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR%-dg0ʰ2+ݸ"H.OkGެXح{K33YIS1U)JV>Ly$x&->B( +Οa=Z$o% <gjlkr;k7ԞAV76u>p+ *r3qWqU)JR)JU*)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JRı[DeJ ;~ +>R\鱠.Usd9Vo3[V܌Wr{:etG:|"Fk9-4מwHSo!T m~[ 嘬HR1Ajֺ]j47E]3 +)g#ӯuVdf,vU\'R=EZY7 P]Sh$eg(˾F/s1^L*nv$RM#m!c0Ns_U5v,Dgq`O8lVZR)U)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JRn)Qǩ7GNqb$])hwg#%L'Phg=2y91Q},k#]9Z&&>Vi^`=27~]"kqDM$B2+~; ΤśwhAks/aro-☡M譴`~- յ+kkKqP`# +Bz^#'\ Nq2[ 坵vM4c'P72',tWFJ4Y+Œzk;ԨXQQF8KXfewY;IPH|5X-@"pG<QjXA* p}bByvMo "+r(a~k+}joplwqU"e1A nY[9/mZ;APW:@5X"8h]pOrdqWbjsP $w5RY@쨤>ORsNNs^J)JRJR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JRR)U)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR߈NiofHE$Ϡ:_ Λwc":$)"jh`dei}6߶ȵ#I]OЌJ^\ޢC dluI,ݎ85fĚ֛#)xȆM+m{sXNИ1"Mèd#n{~e:23jqTWV$ FS8 UC9jkbH+Y[x/0lvyVݼzI$oeVnA>7 +nBwRܤ#WVJ p1IZKu %cM|'ޱϭ6wNc/r7*npG5k7%#m#FC# E\` g +jv\IIcW\ N*"92*aXmJY5) #"E*0̸'8#ːEekH d}" c;Mõ7{5ݪ!:{.k#$ː U4f3X]QbT/3(}{qY¨dU$*wZ[ð؈NF0{3NkTVj jB<& ۚu;r3Uz)JP괥)JR)JR)JR)JR)JR^!t csq! +Yۀ=XϩsKˈYh40FUc^ǜdn/ +~8f~?R01 V^)c㦱 /|LP@ Mfo2G +z`d;ѹ_"aFGń]94#kp w+S]/:JفUnDh|s&ݎu0!]hWl2XU]'7+(F1В yea܌k7t $'l~5sAk7""ɶ,+6;1氶=nv4-0F,XGp{Ҷ x~#ԃHfk(Ò僗E${[=iL Zi'qϞ ;yuԓF:ԡ8@<uwk(_9vl= FvO#d(n$pjIjR항؎AIbPqϦ*Fƛ)y#FHg; hI^40V^ṉmi9E +ך[H$ppp{EH5Gm+㒮xuE2Kp#*up 29`ߛqP?1m$(ЈbѫB2`{ -muv7]ǔBH$s*|V:ơ$Pȱ:B#I3`ɵN w>M JP,, "Ar{MAXnLjJ/Hdy٘@6cOԴ"fir$b9ЕI@H 8Z67%̮q%Olj֭jtZlpV/V,L~\yG`Vxu+w1cdkP7GzZ$~H`HRObyf[V{@X,`Y쫴C`Os 7SnݧvmǮs+^-oO"ta`IV1<3 O)~x39>X;d8+-鋴ƀÁ)guUU'd9uv3`K"lJY4s^Hm~U-lR,5#"3Į~RIq%;{c ֛q,2PrG9ȩm6~!HQP RUF=Ia[5j.bh( MfϸǥyEŤ 6-!%шj׭ѳ 9:EÂ18TxfѮ!dtG-" Hbyn@<՛)=ݷij41=r17L`Y0 m!H2b^v R =Km<FrX{#oE$$,o?Z=҇10"n0@>mVP#$+Kc$'8ӵ_e# ֥HllYf~&݀ {v x[qw޲ڤsk)QlH="B6Ug9fl!VgOMNK$B=O&`AՠE෕"Phb qg {WQl9h15LУBb`1?6sfP>/ 24O'qBX(#$*$jVǨ0wWzrڼJ^r2m=RXҪcc9~TcZGkƸ`Ln +r8VJR괥)JR)JR)JR)JR)JR:%P1Lށgy4-mbvD +HpqQϷ_teI l1*0 +J*-i#nqCc=ջ}88؁2=vZMmq;.q-_z ߻Ϝcӵx_)m s`8q^ODmb(PUw|M:H6x„b2b>\ue#dE R0b9pXPn^80 @`v0gK1%G9>u؍eJ0;rmy or O~l!s k7<؞MLOEoƀFgW$ȡ)",hbB"ehPBR=k+ SO=W+Z'Kxբ s뚒m!iVcJ==5OSqȹ 3=GiZX $=6,0F*G*z]xoN=nYNGϤ<)v& +HTTAyD U99n}t 1dNH4)1~2Om*Gi"rT?st ucDܣ>{W49'2cR@+^nkKD YIzJUS"`+e}VK‹$R 8e ^EuL(D_ +|?}{k ̍,!f n#8o5rIeiV*0*@ʐqH0@ ;WKhPR2>V6ºV2AgHy8hwu&qn``VǦjpvwV^LXdg*Z2J3fG>g$ Ve&&J1=FmD"S@69+#ЊZhVR D6+]5:iVX`COuܤ};Untk)#R0eJcjڽhP1#*~ymAB"G^[AiD @ '%rE]JfHH9'{OJ6cp[+YHʒ{>㚽&o*GF;p18թ; FD$ 9$}~dQ";Wo *D휐0Nqׁzm"d +61^m"գHK<ǔ+DZQDD8ēFXAx"ZivP[ƈ2r;vPhl+z˔lc*Xz UѤY%@HF48ͪAs€|ZmiEJl՘?a&mӦX NJ>kqxPƸぎl}+zEPud8'9GѬ"kxFIE*6>v0 +)JP괥)JR)JR)JR)JR)JR"F5Wh!X\y$1U0p2;[k滹4 { @(#?SJ^IO_ +3SVJ^=Y0ZtVAEKkX ^RU5&E hH 6|Qq񌜐J ZꘛT?u2p}{gҡW4.eSTن K-⑻HTWTz}܉7+ǰ,`qz1{XI2Iڞй?(WMP~lGV?*(c<3[Eb9ţfD JYB`["wA'y.inry[;p=y3 +▚9LAV!QrI;+#It(f\# +3rr?~eom..HYI͝_c5Dϴ1[xwQk?˘?omCXi U}%2<>Ո[J^V\cтqxT%FN8~gϘv77"ߣc&}Q+ơΗrU8\w[Zi5+~*#$=4E楢x#<`RPr+W}]q 0s/}U\{PR+G1Wm!sW/"hN+ YFD{C[-h2rǁQ칷GYZhZ킧V"kFvv6DQI# "TY.=;oe2qrq2ii Etv_lu Nk6Em,&8uxm2x=c-[k{넺RNTuB@<1o\,\JYm r>;Ԧmʬ/< FbPAQǶ*,w4O )sg*H1 >rKD]|-20o`A@HyU6(b[j.ot^E䋔vC~;dz񎆛H R7oS9zciuKkous< `gn289. ,W@ZCs+M"価dpN6;涴pNAk\][\0! +2ӶAԿ]IwmJFFgߌx,7teU`q{]L !o(Bpwf=˸>iS͜$Uh71Ec|M$+eU9vM:Fwāb<k2I>$4PoKF\A 4Ǧj2:wU+ c O#N9ǟ <04+iy.ϩȱlPsO#bO]i$to;o,HjG ;9C&C,B'p=1ڤis˫_ GvFK\}'uxa*F,/Gb=k#چy)(d;w N-GIz~\ldd@'&R)JR)JR)JR)JP괥)JR)JR)JR)JR)JR=2Gt˙#GElʖV-Kk[.N9PX(MFki.IfT# b_䑒;đ" iPc^"x=~j a eQGsƲ1F"ҩX+n,t(Ww*-3#ޤzKHaf_U p~@Kf"E,# nG9sV ~Q%PAp;}9528Ib7ɌGcހ}B[m2I̲Ď 'h|pڲR "RT\dJXt8z}#(rI㊹y[ޞwȚ/ͱ]63wʜ}D@AQWJORI2N O14.-16EP70QjT:B)m be9S@#^$D$UgG `g9`ԫ{tbBUX]Ov:\Ӈ`)<808Zt o +pOO$zx[KLdfHbwǵNr={x ]svh6Hr^@' +ga$CYvef8$ҭf-0vi6 H`zU-(`tb"A$m\Fs8VDiI$ND' †=Z[¸ىN ry5~FDY^!U*`sA-[FM:)bH!.=+%JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR%-3䁀cT}I U:[E* +\re<⥾@;qL3QmY]U0jot#E*xkmcyAgpeK8 >~_[%dFdmH88jיdXI<5`^&;u#rNX'R"M*O@ j$qjU)J0AR{pnꭻ;rr1 + 'V/JƩ& V6I~m%{{Qs]ʬe. =EHC4hJPp{U]{O7v۹rN}YZ*RJR)JR)JRbJR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JRzP{X,N +}3cm&nv(<OҽC59'剈PPv{aW^Y1ǩ?AYgO֗YuI4[~p|H\(w>j"LU˕lٜ`=,n#Kaf@]…ǧ$Ⱊ=}װA#XpsXnC[uR%1UCAqXA,iӸxG[UKb;v+h-SԐjV`HʽT86>i2RN UVS`6`AiG34Fɴdn-+l7#d۪!dA!Rp-( Iǥe.)GymjCls Pqǘ ==/ a AEPy""xG֠ >l#6A@UnSW'tX0zqf%}RO$Rt} @o[Ts2+YþI3kK !(ڪIJz;z'џ ݴ)]%%7JaN?CK ܙ2u ;c1X5Q$A!B .N +=O5M;JC$"0r}@_EȸvTLAjL/VoRJͮAlg$V4mal..sgf$lUw0RB A5m-H'PO@ؗQN>oƳiWs[K)EѮE$NW^G^)GxV7RIRFOZ[xS*H&76frI'Ye=Fv)p<ޤgҽhZ]\-svQp +@/9zi?-VJdT- wޫ_,W1?Nx|n[V\=# ՘FUq:yvddrsW=)kXL*ƪYUHP~KK.َ`IUp0>fC[{w%I#yF2{IӬ^]^y&+d xA.)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR^c ) ?@'+ ^5b PJd}8㊳thEnPxsT^..#"YRMcWĖ1̰=v8F;ؒhr:S5v*.AkN2Bp=MVMF"UyRp_'ޫJ{yM4W?s$\̈T d}=kIh' +2=imsI,LC+ƬZD]kBnU$+6  >.ڔVgrB" N5[ JI'##0~<㊕Tf  z픖ze + +m*`jrp9dUiJRSX!ӹH@.CU7,$9O#;Xn52O vfZ5$#2|R u;VxA3A'<ɫv7j0% rd}qBJ*%Ac2H$[KxRDWSeXd^.UAVj\Ml.J>vO2G[vY;'<yӵ(5HH26USRjU)T,FԵ(twc,BT`3U@y + +?HS}N*\uF)H=#\)J= yb$gT]"XJїPT`my Ѷ=~eJ92ʰ;*$Iw_“C+ WJR(괥)JR)JR)JR)JR)JRgӭ^nxQlUCQa$RJ0xGڤ@^E47q <`F7|ji'mC }V3ƌҾl0ͨƲ؅I,֥嶣eNUv;AǩE6Nf-v P.@nutVC^ G{qU \Oy$1J̑I9Tk]n!mhH4r +_aR-jSiI)+adU8aCTĐ[3|AcfV N}j ^ +M0أpHd ,P4lXYS>\*.jv*ⷀ]_G,/֩x xd"xd{`}k/IڤQ*w.y CK}ڱB1z1_¯jYU d׵U> ` ј< vw*HbFbI70ݜ7o_?Oy$d2v@j:Žklѫ!}y@7.R2} ϦxzDfHn/ܫђ#8>յ{7Ӗcau0neaiCuugqZ xWvW6$CEBzl~Rϛ6ι +7q;fWibIB'@ Ġ; $0[2 \ve{3XAJyde/=4 +$eWG/ 2dE(#ЁqSnId-nu2ohfaW {7Ɏ^IVS$qmّ7Hc.T֩mMoYvL hD(3;18,@OjOcli2;eA#rj7U[ +mX`7d=jڄWߛ_YB&sq~~>X;5/JIwDd xZ^u>}g>°2T1dFJ]\lvTC+orI9jF^MidJ")VbJ+:l +]!I8a4$4j B؝q*.zF3l) ǃ,"| 8[T.-gxđBA2$w*989ڶgs ]y+TgkT#W?]cMJehT˰,`ۑ XKӵMZk!rUJUec,y8=!-nX+h)7IJvm烷#v@W,JoHD$mZ:r*! ^5-N)o,”IH*7}LLqyꍩKej-I9,P*}roJ7y,&eCB #+ᵼ&m6V;F9׳Vb"&̃pcn$?][oMRHaF>ΔS9[s΋F7Kܑ`d2DzиF>I>gҢx;;},XG,ԑMG6·YA6 yH<}GE9滎{w@KihdT mDVk.{P&KȘE#r.@gc5o)jщp|軜@pKm zY5HZ51Uƪ,Ǒ9KGwc<24hO %PpHcdgY,"g1]ѲJ$3^GKXH43!vnU ^IM q$Ou\*z%H\G sXɧEp!/=̑P69 +2k7z"U;yYhF_>a=7ڈ |UqV+|Adʲ~r#Ub|:(wW7Ue$k%kJ)bdRd!!A{s횙uGp̻܌xP~DS:ցDml;߲hg㽺{OC)F;s^utkKFDĈ[pE5wEd% v $RW(qʑV2/jM^NTr JΫ1ĩ=Ǯs6go'FK4o)9ҥҔ(괥)JR)JR)JR)JR)JR _vI鲔 +iOsq fnTs間Or䪠!7#\8jbm7|IZ\2\pjz-m$t**`3 G^_J,R$e#<(#! }64kֈUanH%Zq^\[Eֈ5"Ms@F~-OHnwGBB˴)u*G >f&~omxFwFPVP VHۼe-!ۓi=p9sx>i6 x +|,Gb NzyKfY7#b1s]̈́شx;+:T#V Ɩ,ኬT<NA⭧v#uxdvGQBwsz=Ϋ U$G$=0Y#xQ,OY5;%Ev*;n޻ X`޳ՁmCdTuasz ݲim"i!H>U'qH=Uĩ#û +Y {v;jMlЄwa>wnڡWOKo(xR.Y,^'N `c1 Gּi=|D1 Xx ++y+ᛆYʘVI`R{jz-‚F#9dYV7FS#:n--4lV-c!\(a#y ]6gc׏6B7@Ap7sCESJDr]R#pG~j>=?JzL csϦ+-eo$ +V !c$j:[O<70YWQ;F8؏Zm=ulI`mA s_,\)"mc_ 'n} cy ܭW2E"$ruLmaxPioR 9#I+PpI#8}jh 26v3ڽ2~d]Ca݀ݻOXFx& VgRYC)To %vfȄYcg+ :9w{UluBK׌J_WiRn9ϧ]t,y)ԙmOھVX G~ks˫;&ܢJ[9^ѯ.F ֭Lgi$w^t.>H'Uј7Ap{3,X㌟\-͵TI ipOc#ӏSX}fK{-:{{frcڌeOvv'{泖3=پeyF$UFN[K2O'QOG+qGcZ\5F`6zd(H;@= bm&kk18DpC;XvjCk9﷝%,0€*F˨YL* ī-*Sc>hi7V3%(b,H}}jU#s:J92>үCGiQKFvų1^bV=A./d(QIAϽL\ ylY HObu4 2YcUH;0VuKtGae؁QcXڋce21Uww0HR;)eP^%Sø<}jw>eI djrI{|E ndaը5Bkb9 Fq@³vsKZ`Z 'WepMlx<kƛKoKֹ;6C;Vn$T(|yW>$ŝ &U|gi?TMfWbH= cͫ EԳ*Fʥy@j^Q&xn$Pz}#ڽ6$g@JD.w<=I"$4 tD4HF(k'X-SZ,(EAWk#H'gMj$pT1 +MÜs٫: Ie"rnHG$ +(7#Sh٬aXfͷ XF2 =#cY)NNqFjkp k_LfDp!x7~~"Afj׉q(X)G|CY2[9Tw]Y\ӎ@p;~ jpkzvMZAvd ۔A54Zz19Gn@׽^/Ynt}ZO9!3pO䊔|A2GyZ@@1n6|犇i3[^DC{PǸ0jZ̽BxHn HIϸ1t hbKy-sϵl( @>c=T[ۭ^Kl*V T`YJMBsww#crWt5Fg&w "d69jjONx o@I#1Zj7H-Eh2ycq0^8obV%5#F`>  iOg ;~ZZݾ/f;VFC!(`e'vb+ll’H;"/!#Y}#K)濺uE*V8;#KS r..d9ƁbB>&}AY#o#5|3`QBzO<4MB)#/ Jdf'pxӴn4陮#ʹx=5-6%77MʷfR)9>Hү'e\T4Y 1+(81#`+ׇyVJCdKl`wbjqP,;TO1@wFȹ%nm.qԊR)^dfVGVU>MEmƀFgWj㑞?\WRwv5HUe\*LФѺVFAԆ!*HP,p=W)JRf"`cρUel*H##?JJWR\hv7Su#ۇfǦsoma ň{zgWjZ(Q†oRav)JR)JR)JR)JR괥)JR)JR)JR)JR)JRL5ZR*Zj)JR)JR!pj^UA>Wu~5ꔥ)JR)JU3U)JRS5ZR;@~BqU)JU3Ljj;T*V)JR괥)JR)JR)JR)JR)JR^ ԯ.,X7A?bK۫Oiq%˴.q$XzMܯo+*HH< oFSFp4ߎ۰7c隽J^ ׮u]O$YGpmrOG#ZV0E,B @av#M:dq. +bی#2@ZF:qX՛PyW=~(]c6GR6$$HZE znjPd0G؃"k,qS OEx[z: +cm 1ͿzTG B֬(R#Ga+2d0@#n9'^Q+G729qAzFu;4r,dtU_p7EH,$ +pW'Bޢŭ՜\Dx`Wgz]QYG8tr E _9?;V}lnuEgn'ҭڤZ Gn{VX0#"8gE#9R]xnʄ* ,v ܱⵯk^7=% +2E0>=BdUcAlcr;-lE"G&tM;dv2@Y7 +cdcZ.7K0>1kf*;UZ'm\ I+@j"I嵍eh#%f߮~׬ ^3`,XЁq۸ی∡r,3BDyVaG-_YEn7|<`qm"̱-+\$cuH2 %+0FA 8#׊m+>GTȌ18 +Isq˱3@LE*r|3G0#(]ݲ) wU¬GHps8e*)@괥)JR)JR)JR)JR)JR>,/tp,-eC Gb%wxӥ$?I%BG=Rt;-JIoGX8X.. +y{}sY|;`kG[SH03EcuFm>ͼ2K+#F\n}[|Mx㥹"c'p{1*o5y +6ccU#WٵooqnK }i3"G>wJ BDo^{浛VfHN d*Wyw1=3-[NXn# q/S<?J٬uIGh%X㷌.bq+>C't4{y`x刹a$L3;Aaq܊\ǨjpP]Er̐ +le+- >}K7Q ygw $s["lFr<ZV'A2R>d(kLҴKmZLlxG={o)<=tf3e2OJH!R Ű y+dЙ:MK7͎=W$GS% *F8+}^j#@]5zC 7vbNk1}AdAH#[ɱA*FG?ҫK=oM7Xl̏$#F"bxJDu#ຶ{W`˜ k*O0>H3i kZF{韽lr>Շ񅱹>C 珰dզ{ӹPcۿ8cKmdOspIJ 9%P>Bf8Uc2IG@ROd M/:l9 F}]k7sXRxnUQ E0bʹyүKԵ&AڌŰ@9~{oiH$4e +ɑ>prWF턋I, +8 +h 6߻1mߚ*}:~wŤ*Eq9횿Do.g4 `ӴڣZUS$R\# lFPnI$`FWw.3*;{TIxƀs!;Gô@WI&}J,*[*/KjX>Oi`̾Q=1aٴ.bvgHnA+Ea"yV.HRQGr{vV9D nO@n]:OHgͩ#Gat%ClZ469B"g n& rqlZ*ȊIwM# +6Ph8V9mI ,O.iN1{ih臡t#k?/+,d y#lsK ۭ&ZK$ JȦ7l Hɫ"m_JXvI +n$`V$JE^i|*H*E7 i(=^%"Cxq@`y8q^u{h&eHu(feU&G=<N{pӒ}_D{X{IYsX07$F6+Ut1 K#Dm_/xwx Jk9IWn<ɝ ix"Cjŷ_'_EHB">ͻq׵@=mTj;JdT:]jb-B +3vڌMJnR8K1N2? &AgbUjnjrG<4y<6fYN2>RXG\aAcJԴY=wcѕ%1ހFуy +` zkuۡyd=@{4Z+(G,'LA1X Y 5$!I ldpz=,k0,Pldd1$0±s  wFcct)$٬V)XxI3u6mbB;Ҥi+>ܭ¸BnW ߽XS{DiY|-AVަRU3F C2 XվyDq *˒x)JRNxfl+}@1@[kA8###^`-.hc3FpHlazԲM ]]"?$g.B82 V^s+>9zi%/.mU&#KXS LPA-{}4ZfI."FLn lx6L*e0.gX4e(*wyu=@MzcI<= ~ ӥUe80ϷnP"kD*,CFjKji s #X\Ufmج"TX nsL׉;i)'Eu +Jgφ8S&[]ExH\:FTdpGXoIoq/-ѹ +<p=PMk>qbdEh%%@=Ksr1tGo!9;bl曠)|d +Hש5k8hZt(^:{I%.*$pIڭldf+qG֢r$g clJňOڤj:{=.pmP/,Fv0?OeVJ)Qeup'+Fň:.}s^淽K];(QUc݌Ϙw=Iе{kDyզ{xsb{wzURFq {5;X(d .:`;WʶfnbN{J t`G 259m)]AX9'FkQK;tP$vNp+6H22#n3zoz\C"By?-ig%BRygqX†n{qVR;XYjc1ket@ 'gg㶣xŝl΋< +3q{Xյ!HSo[vAԗS[X:?F=m4)JJy}Z릙;aB޾䊝{CJIDURsN@#'cRm]ez])m:q&fd$͌H}&RBSk"!9¾dul`{8隵lPu̲ +]%=C(V #5>fQb58!@# X-z^5xts7܁ѹhHFMF}2F((Xj3:FFEv c7>GGz -fLfXUReiH%gֳѾG"R3[M5+yvڬʑzc[nnwPOO.U9ZRo 5m + +$9<=)pJISj[#T<<6r;)4JWbgNH^=+Jy̙P]I|PU`O;rpC^f– }hͅ-YT yuib)fx2E0r<ς5K{]`Bx@ c5A¯|) yaQ! `kgo"꿸RIGs',U.hw"^F>x.53قd9x#wec>!HPͧܨ#'lկiP^7"ndiěÁb?Jھ_1)࿐x=KWY@&m2R8ğǨ9χcz# 2LFcğAZCstP}~{ V6 R`GМW, + ZӤMSY-F29 \Ч@rV;wYp[Y\m +u Mb VSL#~qc@Gs#"کqR=?--UظVaLH}Nl5;l5(eU8;V2ux\AXFK s  Wv;qVg Dv%'n|5Ү"!xKتI;~5NC u-廷C>`O#tdܽSTQ$)>e`sSUBZ5Iݦ#^FIෘ~͹=, +FA;:5UYęݹ0;f +Aؿ7f[^\58*)h0ls\Z Nr d\>O޶'kVU u0^+m +'';V7/ZF[\?'}+,Mw,f:mzn'v89Glʳ;GI;qPItFF&AGoޏ+&àv2K%9f_,6m_2.wff'2Ml617BaIc - #`»@0$y ?\ 6ɯgLH(iT0}qQ]Iu%c&݌Dde +=N;^*;KYD\7c#^f{5슑w &=D x'8k%WUu@-:uX/ 9Z^Z;A2H( $g$pkuWP;#>wGfdS4&-㙣AFbmOڶI 0UQBզZ!|С/ V +76q;JuKKHGQrۊ8nl^* jrPij  n.J4nʏ̽۽g -5+}EI,dF?2# yqQRI4IښJ.4xzXn>Ue[w%obϖ9Y+.}}Y/z#ڧV)Z8|3JMepC)IUF9-[8pNAv"R괥)J֮mqڡ0Kx.;jV%n,{gۏzJRyd # PPF2{s긦j5vp3gօ3jG0+̐U0>?QP01U +FBHY#b2 с `9V%4iN%쒫"@mq$Y9cތvHc5ZB=tcqU#i ds٪:h`;I5L(I=G3%ĤXDаqn*5c4;T fjybHV0d{VoKƏuD@園' weU^^2T#}+LLUm3$p2 <bG֭YY<uE'$~W#P8Q[Ƥ@qȠE!G&ą3z1H㑞*@Ù.0[q^jm^*Ik:U`ѺF$1*Ce@82[?}m ciRTd\`'$v[MVB0y}XjZjE3β)۴퉝N2Geo`N,2dzq^"m'xEP8,1ߌZQk"<ssc38\M6%FڹTI +m^#I }+7\XV`*8^!-.9fAԐrp}=jJ`bn5 ܥ/$qP[* mnYcEQwY/(vw]n hq!F|CsRὂ)Q {jWbdgʆޤTi5Xyp1Qq"1)pOVo^Tq`>5m:l6Ҕhd w"hB5юE•e;; ҵܨeQ0X%xڽ \8>~ki]PXֽE*N`FAR?b+ ˍ;LBF +•!YmJ8Gdb>q^pGrr+k,;3˱r@I[䵟Mh%9? +bwq|7kǺa+_/EeBCwR+XԵGN ۲[Xm*{sY[9#8ǿҽ{HB!>Zy")]Yz2=ұ>c3mj9Uoe-5 {L"yUDB(f +O'_,0[\#F8ǡڠ늞mn{Mkq\4w)ҊhACs2>2i5+I"8x"_CI,6`>8~eO'_B.rzNU=}׭Zg[_bLK,YH>U2ЌVM+ ȁMq9zm/^=pͽvNp aG֢Y.v۽m# 7g#hĨFC +=Ůgz7 pBs[URTb˹@u$>-RyFs px޾*Z:\<Ϊ| rqڱԠKnRE&4 +vHIb7{LZ^2>L#)8Ջ[Ŋ.'"fE!cv#x>Ԩn#]ѸaeH#>Ue B0UPI$;jݵ7^889U"-m*d +X ?\",ʹW9>aOuu{7a[˰ʨu$5.)@괥)J??섟YzR*E܌gU[τAn on}r}4Cg;i{R)JRL9VOd~fO}"*)JVIZ"2~A>F3钙۟*>-İϩognLy( V[INQBmF1bax|!s$[g;3Nӟ|c+EV@9 ֽUZ9 rIAG[u[VRl{U905§M;DdL&SLKnؓ[{J HSn#6nZ{<=op"UvV!q#eRG_e;hqw !hcUeHg>F՟S1[{ܤ)GCF˹ *Gp+9l]"`vF2yq;BeI#|V +ZGPF>PWn*ж%H@|o9-vH{>BռNeۻw;UtEhџWK(;z,KdC$+m@TcS9$/kmDd>H`Ԑfm]iLWOMOF$~>ЧFxKf +ׂka k N8pq9ܑXH$&3e0s`.YV5}>?yLTR>[vknQ$>@sFjM:H&fe.J0p܁JfZ\-o1j8S}|*B)52@g%ަԅQ1}~C +[U*`ǵC?`,ٛ3`I6ǩh4}ac8y\)>#_ᲇ^!J 6` +֖2  3sksf!w^s vrG :u\JHR?@k h`/+emyRYNBGIKƲIIIm*`n#$'֓qzv $F2BG|+!g`G m Xa)r@zQʳylWd/IT(*mh'rɷWn }F}X ? +Y#"kNBd/9W@V2Aj)JP괥)JĿ?섿Z)J|Oݼ:ae,.jgG_63J}V9u6 qIGhXg$;UTnvoEzZQV5RH:)JRx5J:R0A{V2 ΊV D{d+0ҵkWwqkf*Gp$Eu=mdRݣn=ڨX(Rm=J!@1cTEB Gd2dvlh3( +?P hkFޮՙ!V5}#rk iNN>ޭCamn8UJ(R} @V0I$"^+?ʊrO^QgQ-;QFq3ݫv6H$H3Pdn,Z$|l^vȊ9v4V*]F'Tƛm3UkhdRrJr;҉mmQA琠NO?SޮUF(cOTPM6gT>#FPn]5B"UȮaF< }(DLbvm v=h<+"PBQgւ9sϾi0hU/T)lp3D9U@c dڶ4g(3AtT9R +P#4 G$vC,=ZA( ŰT + Wma5b;PHuQos E{޼#'$m'ߵ$h/2~+2F+P +5 +0@`z*P uT3Ag+1 w沵n{x cRyvRKHf`1* ETD$1aي߯ݶ4l(~-= +N{ڨŷdh{a@o?z$EBOr^#+_/^'i%T 4xB1L =+)5@#ldlPy{iwREx WI8$|=۷G,_QU"f\YA`׏W^(ґ>׶!WB sRͼџH,E\+6Pƛ_j*sHB,FbA# 3-X"{i L{pC"Gq +י#IFPÎ籯 mSNpT{$B$eRV"E P61>diR$W|n`1ǹV"6\c1GNT{gZ` *)@괥)J!74u)JT}B-6[4gc5Uʑq|VuOH=_᭒o[=Pj c&n%S5l]2Wrz#`Q1R5k=R"q)\jc<ϩ r dy@2)U'<`Hijs0;I<*ϵdNA80 `{f麩{օQze)Jy}Mq"ƋݜQPO͝ҖVԪvի7AueawSviԱx9S;?>ճҔZ;;[LE*X;$*}+%kk=B"vfM+H`>-ս\ȈD )ru:eDaS0;8HgHԒq!8gL3r>QZ`$31P}IVGƳ Ե 9g'mj`bJRW Z ב~pv IW$,@nzq>ua& YEPqǘ*ޮLNekyW{4AI>v}{Uu+ mGv5}=xىI[q#5TI4o`y kg4Bt\ዟV`a#*ulRBL~l/ P(Ũ]FQ11mtmpVs5Ҭ沾&C"HHx1R?:*c{Vr]Nm{c9~FUDH!~7eՔ3JxjESy<5;9Cg55LB4,=ӜVJR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)J!?,U)J rkUhs0Ȟcכ&RIGG /YJJUψ韆ٿ#Ly^{vFmg +e *$ P#ͦCp%8pKW p`{}LDH'Fyv1y <0&Ѹ nݎϵCtm,RNWqUQ}'>Y +j6֥֚{~c]ך۪)JRH1,c 9=/ݵgA8f#R-"i $v9a5jk +"~WqWvf h$>f,=ILP珱:][e ;] Fk^*w$qxѵ%젻U(%\)9#>35ZjKbI268>;lIxRI#hٔAe>$}*ifL}^fsH"7P#mH;?r،lрx3]˪j%8r2491sڼxV3殥bylg3nnLB4g5[~l||ͻxO5 OԵ-VѮVWsoAn$eXʖ0c'?l\5 7!uC霍ޯ/ntUfD?Q[$1y[ʚ}]8YgWhTsUqZL?+r#-*ݍ5\"|+1b~ƺmLMcSXKpx^[W/оYbnO5O)/y{wKøeرMwqG֮+mNG)yԀ&NWju|T}BJўK">2ƒ}{Խ6+Uhdq7^q#ǑЫ9{*su3LCt8*IT6=Nk!Yoiv.X(IuueQSv#Jo- 3W$nc {g$)$T{I[JA:ZH.N>u^f al#7JTMg3\$ ۽g[U <bZR4ӢUF0"!+`; #p{6l~5O-.rsJvvWQq6-.VHNZ9̜b5VS}l'4DmӑeFaYXpk9r[vQϱ `Bޱ,1GI+̬<.p8 +6jH#sݱ\v>ܷm1ghbFH$d;.l 5T2s +<ۏJ+V͔KI1rlqsMMyy3 +gSP!dWue$m=Th|7orS#_9lc1-jN(;C2wcq7͢$G2G +nyp{UtxF3wFF@{TGNR&FYYNVSe>nid(P +RfҖX7ywR3$E4Elb2S葼xdeU~P/#f7+H ++N7.9݁i^\t- ,r$I,IHѰ˄(!x~lcjwP?}5vM]g7T^FQ3REJ00 Ec-? &IIpY9 +jfN & +rld=K+.#␢˪ H$sԻ[dbaW>I䚇wGwy Ee@ᱸT8HY.~*))U\ӽT 'G ڽۥ3o*34(ifO8 s5k,ƒ^Xbc,;HW mL]7 +p ;xr;W{dxd6lp]zyE /ۗn1nyۻ%hoD(`a)F}׭7GKi6rfܶXaaW/ hܬ8#H Av܂p !@P=Ժ*CX.>}>ŎH8R{ +ȲG5pkBZ!F}}G^]-Xdy(660s~F 6Pn=jJ! Atݻ7mJeEas=< ܤǦVu$h%Kl7cT[i BJj}Mfӣ"7,ldw!rMWLW{it`29X}Za:*H"X_2+PUA=.+V +$XOrI$ՉtT:%A lE𵥞 +9dČBgw,jg`s;Fln;xQ=V&-M2ԂD@qپ}xE_C/Pq޽i4Z2ʱ<Օc#o;9^&=jo3ȨN;TG\m!r9iBb=]l',UQ>KM-OVi?SGXY"21Z~ ۶̄rr{0sq $h2@;2pG#5*6ڈ8'$I$K(($wG"2F#Zmֆ~lVxẺ"!B2C`g+̺$ܛ0cgAќqFxqTⶹI%\(p1'IrN7v9O85D :r(:ppX@N9޳vt:r2;ݏvf=P⤐ 1LV?V ֑RyUupʍrǨ5Y%}yrFZ=zc#N)JR괥)JM\rEYZRO[(?̖r(5YGcpD0 +JR@=ZtP*"Qoo~@E/#p;OR{W6tɂ]_ORN*)JRPӵV)JR)JR)JR)JR)JRNZR)TV)JR)JR)JR)TҔ)JR(괥)JOrEYZRZ&n#[ijߢӿGU5RS8 BCq\RcU.d:[ s88?n>"mrI.H޾p*U)JR)JR*-֧kbȓ̑C\QĺZ6y9E޲ "ȡ "Z|$IF *)JReE@,6;sWJU3P&w)%*ø2.Gisu%p%{nRLը.,"kmmi8~z)JRoX^ *רu[; NDz]U42g'p*)JU.ґ_km ;{URVӈ# 3${AZ).*3zfR)T܍3ܪ̸89`RQR)dPG^?,XÓuSU)Tը"FX1Sq)JR)JR)JR(괥)J-w?⬵)Z׊uYx=splP*)JR)JRkG Kj/o4m) .X c#jlnی8+f|&]MHn_%!29'*;{x6m;~bS/JUcKi\mx'7dm=Bl [igMoV^ȯ$.V)mY:R*nX9IE,F2ıPΝ|۴$K0.0k%J3MTdߒH_#p*fh60K0U1䕓yֶ jDYUm&Fb<ܷո|B+k$yt +lsTP]xf=" +:g(.gb7PmW<Ֆ1ۥLs`1L +}*]Ht:hݛ}kܞ#ULʍe6qq5KRvl/Lg; IXC$+ H69Q)8 >~GjkiEmyrR.@ܐw&WhΈ (NRU5,W}F=adts, @aTz3}k?tCQUeKaR0%HwdR`C9ء;$^[ou$&^y9aUKI) A eyV[HP0deG?]KuMfL+~eelG֡qx=ʛb6f}GL׍G1Ť>fp6eہ۰@Sc?JBk6K 2+*1n{`NV21mHnf>>i>#V+=Q$R C >ZZ$*F ,qF_E[Wjn ^r~^#[r$w0[#J m_+rr֤xPH@2c#s-g)8EXnI":Xˑr"|$2\a+ōJ #.=v"񂮀ڕ<4l ,vnl{c t{3蚝n;;;tIXbx|GU3u<ɹFzlluVvk J#Uv@;s֭umo@2pmYU@3ę;'Ӿ8ޣ;[mBic˜. r21mN5QNO֣Pt+gY!ycs&r5FncB@ܒ0E?eb"\x/#l[H3nVQGrxX֚^ܫ2#<X +E&wY.$%H(BIރZ ݽ$W +CjNFsX~;W2,FUFʻrA[ƇCz WHvXl$zyְ[klw_ S8d3(0QKsޮgքr+or79V|{`Cpdsvw$ sX :MO[,Fdj:xuD#ddg|1XMwETV4y.ǶxPj@AS|*Z4r{5kOi!@Pn{}*G纵{8t1^gO~'g 6t{5#CS0•T۫=/P~=ۥP;_t<0$ (*82ֵ{xՄ"#0 )lonB_ybm~g—rIBR0{Bt}jZ+)d߳ZY ^)V56M1:Ͽzͩ:Kuq:Dc +$Oli ӵMD@鉕B0G 28 r2ۉX܅X;mku+VWiHِFN;z~y]2ĒXF#f;USx< +FOꧨ8Da@Tr8~:"08Dl!qqTW%]bHXF`*}Gڮx m7Pt+ ,8~U685[WOkmvU{nk+k_46dY$**ˆ=1ڵ Eyx8&MJ:D0p 䊿OZJ$eBrw檐BUAP +Ɵ*(8Ƨ!}UP> +ǿwc7~cU Wcvѻ5sk .㓅'Sػ{mګ) +BDlyi2vEN}IdBhrr|ڮ;2Bzl ({)q*UxAP~?UTT(p+ǻ~^T1qU*5~:4w|f`m;(EzJm~Mf3 HdgDu/p$=FsQzK8I4 DG.A,vԹuݦ .{C08] mvN5wQt*m$FufH7,*5ϊmIYQS1 &s$ k'ksP=;d]>d c%VNɱ': #H$OcڽmK!ޭjVA lk.RRӜE1lcz癤*O?! rrGqWψ9vdjۣe$M6[YxE)р2J]5T[[>K(+ Pwq2O[tD8v{cS۠"M 8D <k|O$a]Z= AjUAV`GVe 7n22;ՔtB/Hio18Uנy,cB0F|\sqYYdF 9ABxeEr䁌ssd1d(0d3gKuJAdQ$ޮ麍󴲄y%~8P>L"beǵHQWadwyNֳȟ2C#3RGw:>q  i + Xnꐬ͍ +`^$g/NDL4lب5[Ma.0rE M9+dmf*"iKҍ%be!X6px'"\O;d^c:I6I# dr3Y'uK1I'I]- Lv#)>LǁH){Yeu:=Mv$c>QQAvU6v8J-KwHHJt'H$zԔաnBVF$#5H nF c RTL}3+mP6YpXr[YeCYjR)J0@I8dڬj2)d,r9 $kNV0MIOVZhfǚUiJV3ĺ28$#a}HƝZnrՖK8c38y8Pԥ*{c m7\3bm$gV쵽2NpTEf8< +Ҕk32\Z0#y#,c]݁œ WJ[*H%.6f6 dyy?$jNHr+®k6E aGԅ5Mh׫> ʒHۇ vϭHHc63ǔϷzYie7\g G.ݵE (@3ZZ\iHį:VVDRҽm.ŧAJZߩR+1 F.Y+Ku[07 +Z60{L +-6UXGYkC$}]x$G= f/U۽= y20D`0-}߆nAi07yv]Sow{I]Ί ] {=_h'ۡ7TT"rY6W#Ii,RXC0T&v9o\V ]HnK&a "D$rnHK2Hfy֫X,n`{V4hK %b]n?Lfvj3PIdd纏hחVzKȫԎx!©ݐF8fj"i"wkna$y`  ՖZ\As20쫐)ǘvK來ᡆB>Աa\=Xkk.[A8yadqǘe+P]r U_D3&˫c'?]*A43WE7ZfeHa$0U[yFף/VYoB'M7ZFhl ⓯s"U*b*GzquKd"q\mi e<]$73hI=x #` rYBh=8f+ іNY`h9#i~A4L6yA)Ǧ8]â6җOy`kL,RT}Pl>Q$Mo&}ާjndlVHഊQ]UA cϧyꅢVKeF p{"6`jvdҼ36Z\6;4F]]\ rO^|3gyn,/%)xN`On uF-? mqaqLf[J-  fʺI-*=օsZ51T0 +I,"{.2a,德VsS2+#*#v_'n]:&f#1"K2p16i7xmdV2"I|wv_VDXkk'k4e`rqju..̱Zm +*Alqqr[אVJjx\N[Ye?R)JT[{03 B'wr*GZρٺsA[raEJ`Nkebz,fw1LgNj]aYoL$۾";B?mdkt=d_+Zjlw} +s+`Ԓ9#hۆ@V`6^fG*ʱHPFO޵G\X'${H"F[븬)X/hz$hhMᘰF  +)JV #Z+z! .y*aWүVFE7$`VC垧QR6v0i4Dm#vʫcK5fs $ !$ >ks#UGXܞ\O5[kS\9qD˅Q縯Q֒#W<ɰ>3ci<߿ψdx24qp6S^5[:n3yv)ͰZnϯ T&2G 5MͲN m'@u>ĿSt +1^O8 רI{#썌n#vp15"65⃴NwgH 9<}jU \"`#l0{UF\MRCGڞms/gmSI(ˍc98ѣʡђe~k6 8c%U9ԭgmtֺGPWydzRKrȷ((6[s0`Z[\&qܻ:0 =;y"ؗ]Hʻw"0\3 R`[+Jp7yǭZ 6\N $=92+wVM#ebr9`Ez֭eer^7gpV;uŶyRjR%UxO6 $ +Wbw̪NOn Y)rr@  /}H]h`c5֭n$HUvRWr:J3 EVmrK1$eFeBFpO{mbnc2~rT,+I 1ýWi)c႕'αol_%L!Tg[h8w=b:ʡ DadG!#C#p[j?ZkuK4.d09wQDJp[w8,zE$;eӐ,nNp`;WgF&\qot +n#J5FP9!1q~1YX%xe``ύ/Y{7KB+HB~TxLt#8x8oJsq1Y VR1 dfumE\8cl@WpHGb3ڮfؕ'M_iϸr1^_^BktՎ0y55WOdG,4i$ w;Tk떉K  P]A@X`zz׫}b%~qYd^3cwnGhd㉉24ot'2?LW.1WKqbAđ'vjE + -gF1^'FKU^d]3wC.$p;Ս/N F鷺ꇕZOP\e!3'P>k\#k7wDn-HX#FX9׵G xᄻTd,wǶ{״// - +8UdqpPq~G%ddȆB@ps+#q<:QZsWkג2FPaȟ60H b_hzi)YoVĎef1cˌcӽd/Su^D(!ܫ(M\G5fm`I $RD1$kch.9W^x5SQZ .alT϶j.5.@(?>6o i]#R689V'tHTm*l_3$7g'vqgpUUIA=ψ]چ1Gx$vUhC0# dq^4B1j22F۴nceY5`<$~TuB#q.on ˌ\̺N=z7)p3pjުCohoأ ɪjs2^,s!Ug+ѯ#xͶih*S`]cEŝŮVDrgt#H(8‚۵enUubl v6ΣȮ[z])Z> +iC"wpT;ʆM‚qz,SVCv} IWϝ-Wy]dUUʤq^l!uFa P\V>U]6r#2 ycгhf)6ʳE >asXjc d,?|3Cs9kEŝ^T*;?}`ڇXAF"&FhxjY^C,rI:nWo?n3[-k3ݢpA!H]q^o0{lVTTgb23gm.KnS7vݤ%͑,DX9js&@]C S OfotUrExZ5݁XNťڰ.pq#R̓;sQ?$h>*Ksd`$$I v +GKҮmo%xÏ~kU|Ms5p/R GB ?+m9lE@M8 +vՀ'jqu@df.3r`2 +x%嶶6rC*fyo-32w;dqwQM'ZZ.]:LYڪvKTۜce4KcXn2NZu\kmF$pvVFP 鴫,rc`HҧEYT]vA iV{FKkdZܛsGoVlN)k^sEt#(Fxk!}{kVQ\B1@\X vZX@&{\ 3)hܠ]XWM#knKbeBˁX6 8b(0c8X V%̶8 s#J0TVdAlg*uu?4`q|$(8V!_ iYA"r1IiXgnpJpHV&`t݅6]Cc>MnLrfKƒHPNjM+bIč +22F;V29uumуC2,#o񬖫v6֖Asm#ö@W#M#Wr1۶+# q6}.+煣]%}O麄UܴE6#G]\r `kbVFA)@괥)J`\0"S+-JR)JRw?Yo ^i=S#= +l/Ky;J^BHƃ%^&qqaN#D={V)JR*☦)bT1NU:C +3 0$qJhl`j1 q8)b1LS1LSbZqLS1LS1LS)b*LR\F8ʺpܷK#KJیqDP{0+)bT1JS1LS1Jb_[5/cޤP{p#U'N]*Evu)lnڼ K1LS1LSVp))b)`Sjnh;Xa=G؎ ]U)J괥)JrA.xضFys:0 +j})JR)JRBZ w{&vˈɍ/V[={R + ԏQ\l U)JR)JV>T%xb +΅C +rr +]j_[ܘb*c T >cYM&KJ'qnu+6d5e,7~nc"He n J=)㵁O[Y!bR,KWY`0܁ǚo}") ZPC.V)& ,v=in#/Du˺='+!u[YʈX0RA 29Qcb'艄MAAX{SOAEViaP[p*.qWRXc{T-^/ 9"UȻjYI<bok044ci2.w}bjrtDzE;pv>oݥU 2gj"U}bR@I䚋eqqn +rp9֯\Cfu@NN2}T[%[G#lLhЏR28򥵨9c"] qj1 OMĖFHLl=3S`m_dr63y#GN*!,9arFGaA#Uj5o({8T``vqV@FB3;ss}o2'lv7jxi:'@YRVU>P`9%I1VMgPGӟHȪ6tK"A\A5v=fcKȪS.>ަ&gIUHpH 4ј~ZƩuw 2ؤy +ZFA!,|0O5#@WYBy#G`F5j-nfexNQxv;~Z}vMw;'A\D".6IdbnJN,y@A YZVj7Ms&Ky{VBBm*->̩:9V8dr0 zY58f: nys<:jY]]aNwX|>5lEX,B>TukZR2W<{3jJ!yU\0Ob{{}3ҥҔ(괥)T3U)JR)JR)JR)JRB5km&yQ03sGLGIl套kC8y5Q2`X8ha n+,&&fU'K];L5-͹@69|XC ݽ_ E A""(01`|! XD-,6bdc [Ht ūF4'rUӞ՜WFA9`!)G +cm'7,VN$ ;H$0#iv&>.p# +'T6[}kR[E3EBA'щϮqY"+h-"6B\78=X]vu/|~X Pl{c=~uMːyCgzKy<%s@w(Ubn۟) >ʹZ΍H2]P +k#sڢl,omuRSw1I!/"zkjiS9ӭ5^@B܌>rIcoFWݻdH> x,xd; ޒ%Lϻo|6?^Eβrs?ZY^EA $@# 8<c|hYFYGʹ?JӥtT9 wIJ8f4зBS1 WIc=|WLaˁT:[_0ST?POVm.ɕ~>| Z vbn0O>gCHe.W9 -19rP"լA#U=-1WV>bNTVRxW!diF+l@ VTun[`1ߕ}9qmۆaڼ=b4ULV,F$1: #i^v؊<(ݽ~(괥[|`A*p~Ac)\HV !>6݅latJ9ngKv`ʥ%e]ڲ6:ٹY#"fVibyq\\D•h]J6GW,Ki~.%ڜJ6 R2O|QI[Apq8[j!heWN2@Y;0_sUlmgn7LZ՛&Xdh|sՀΩ^IP'KGL9؍ymŌgk8I9ҵ?Owհmݾ;GFVkr4g+"+0ȫo eD$-`scQMBxm'm=]6yO 7zNn④Hs/aIuhec f5KdjpYDN&N{FN=+ľ$fx"@Ѿ-P WY-7U18$c׵B5;42"uMTXOoOUݝ("33j&n0i#*ƅaǜsT;oYp ~bO5]tUb3)UP~^WA4D;v߀{5[zY~:< zzԫ;oDHUᔃ؃TRU`"`01lh 6FBUgxA<9JJIXHkbGi0XՕJ TƠ(Q v@cb#TƜp;q4"@'xY#Ug +85taV-r +Rjm"HU, }+ 98ڼOk5qpdzף +OAڝz82E>:nP>=P3TxLndfYKOz?KN,M  wf#lr<ǒ?t#v/?",`*_X; 8GH<I 0HoZ$iP> כ%bv If䢒}H׵P`{T+[9>&K#QT=KO=*hv㤇G( +H#"^TcULAE9s0r{qOظ q^x#v 5r)@괥[Q3h' + 1ǰZtg0KxF$S m~,nKyUˁGPIՇtV$Orw;95 Lp/.OnmHqio/uq5nzH0rksuu\ly<¶}6j:p*d6 ;JU҆{&mp%FmU{ w\-i1 +2BvrOZweR.u6xd +P%5cy;%};&'p8oS2F6j브=$AZݮWsK+ i`=4S(#qxw2ayV&x7ov8[=jevz܍͟/h9?JƵŞkV[#?N>P +=fXjW*p 1ȌE(c`'+}Z]&b-X`]fnٵWФ 6.a"m'MJ Ցn!Tybw0A|~0-Ž2hOjh#7*.Ѽ!,pHudG$+Aֵe}+3=Q#qhcE15; -om;O7m lbUB@T#^DV([(^0YWpq+j^Z#ܲuĶh2}=$ǵ3U=T.bdZ@ x̓5ino )'I`z^=XZ;i e_vgP ]YVhʣq`7;#ֲr3LiPEt;҅qHX]^Kq|]zk@] ^nuIYcDNʯ+D\}pjz^Ggst3SԂInQwױмgj HӫXkIs WFr@8ʐAFֵ;ϋK =if%|Q lQnػ8s@[m!`, +یYw5j^HDX`խ.Yv8%]?zp>YjF`$z^{]I"4b'"eL8!vs9KQYT18r;>Q8'(#?ZOnռʜ` 3{#ߑY;hj4/t$X 'H&Bpwnj +cX12;V dIjjF 8\s9'*zױ]m-4l:+(%1$sVVX($TkMF Hn}v?\N*E8zTXu;{{*嶂Tsn~J*E=w_oVJeE!KOa",*GXW2@sQlTC fҔ(괥*zzzܬ "R ^ qsijJ=Sp#UMeqLR2 1Lb0)V>HW7++[nN)bJb)bҕdYQ*A bV=#(iᕊ`m2yvօy-K67 ,~8l~~qf>{V=*YO4LUfQYwd"A)x!cah[9hs3V6WI$rn m "j7ڐE~XJq''܍>UA1I1O \ҷ;2M-ː ۓ'0*6%+LAB02|xOJMs  +Uaڶ9cYU{J 1ܤ]l[#YA0] ܃yioENI޲^$mچ{#*d*qͱ$}pߨ>Zއaizgm";BfVbbu%`'EwY~xqJ*V6/LʡeFDrv&6:ʄfEKĩ}lȞGpx<P?մ]2V ;㍱ٖ0\c޲Z5]  %ZDSw[wG[x5$`x\q"xj9# O&b?!YtC.74;;j$+0Ox`FkֵZUF@<kkh-`3K{mp #?WWVAUMjuνqЏ0-mu4^k/ay<חKl]AP1wQs|}?9X\Q w1gprK TZvOCUF#!S A}Qhoyo? +o5O=5ie0n*苡!C F,x74i5W!#X%8L^vyXtKZa,eV̻6r8p0gH'-$.v$Ēx=>̹孠y'=k!Z*YZ= -('Y.oom,, UalZ>W' SW;%G%V^~ Vy=Z)pa(£wֳZŚI*DrU1Yv`'kECOjFyi tdHT턁+OaC#>qS2G` 3yr9խk##d7S"7qLyjFes/^4!:?CgD'A!>3Qlysڶ 1U)J괥xEKTIIvŐwFXn`B[fFXFUʌsWaNTm }7Si8 m'p(yTR@(2hpbS"= n"#.\{*Qw~pmuY;]]# Ϙǿ`;n"]u\^%EmΣh=2`AR=U+Y)u;ʺ\ vnf.`eљC0d'jE-=Ǹ .ɑ}H,{}]GՊTt̬x8utC4{}y*[(qs,]$8w 2}}kpnH`>vW-G(;XT*OcSt _xccJk.DhȬOTJ`~lոI. 6X8_Q7~pVdEEwTo'&DҢC:?l{֑S`3'l@eMݷ sW*Ad#޽RZD$IQRj6p +idtc ( ؤ~ƭhvS[tgHF #jf7Ap".?;|j<5PmoCp[eb F2zu^[k$_TVhm~B;wZ mƙڠXēwZ_J&dA2) UA#Exm,Z(ݱA;wUI'ԁj=ŭԢ"1$O#ò1`漗ieg(2( FcÖ,1!KawLysQK{Pێgd` cCEgZ.Ϙ vkǬ1,4ms`~P3!r@+{xaUI!r0Jn>KGdPܢ ~8zԭku]ccwz(E +ZS`5 A"YTȿ+/yj u#qyP:/66J0Bz vH@]e G2>r3vsR]JKw$;ATX;WT*vY.߰ t}3eS\ٜ٤'kxĎ1f8<8ZiaRD1A69 + gvcܱ$iY]#v98p8*f)Jx+51Xm-ۜY[h$U~0+ibm{)#o/Q(#G8+M=0UI>Y8699{D]*G+s ztſn#6HqB].$PY+0wp1WNm1!E,Xc>by'^&e A܂ Ջ-&+72y$*|HPp02Z^$&R@ 5LN!,! ?(>ÊyAl cnC*#p#<ի}Ni1`;`>5:FAǥCҠP00ǥpNW5 > RJv"C۾R 1!vga'*ޱiuw%Ac+ݗmU;W]I Cgp<~-U=gY˱%{8=87t&'$$䐠ǯ=# BT$< rO$k ] VEZB刍%Lk_mʌ0#v9Ƿz rOoӹE%܀yJgo?E)#cq`dzWЬzG1qЂp_klVv;$ jWIufNI?*ԑ"**ZR(괥ZA$nd`AռiV5%;ϾO2HA~}A88 HT6(03UN+_5UP[AY؝_"r?yzgݳLV#T@vK'沺6T77l0_l(̱[81]ٛ tf? Q"J<5 ͫIf(>ưs=P,30[h 19r&@?a8%Ә]"b!Md v셌M6xGlfac:kw"A9A q?MWs1_i~ӈm#!n@N$3L=v8Th+,wLּNUU %!m>";NDk7n5$DMelʨy'9>3oeLX̹SyϽf'1I'%dM'cm)<)t!L 9nlrO91[V@CV3^ +5M!P8@bFqExl5]Vyb6WwFgws5ְsCwdo2\+u U#{VZ:IIQp(@WwzUf00cD9`据+PʺK10yB@Z +aMՂLT>O=ȷ[NnVF``j,OB0?ǧ,R)J\2^Xai$Xv2=rI[X(OǽLVfHT6@>#vYݥ)2g 3O֯Ջ봰Y8ްw~,tn%HHs ?jZk9,I#JmrF+Gd,.+ cG88ו vֽ92,v93PJλ+)T"Uj."w$Qv'atװG3D\a@JfjйІ85jOq49Ʉm>VcRLfE2)L4Vй01$gU͓D,m*&`|dr)S V?#Fu7 ݷ{iL5T7Wv2ޛ3ȫ)V$&Dv .3 +"s3?jiLfV΢t +!Md+ eȖ^:IJFJсf csR-5H$d.&ܺAVaFFr+%Tj/oì@!rp{}*}+۾x|I!rlTg9ǖ5$wsR3LmFi49$ۏ$j]H(&jH2*6!r +;G" +S42)fJR괥Rj]$5V#h'1l-ˬ$ܸF၁ߵ[m"I2# 8c^wE]́ZeZiqjpq" /@O8拧$F +r!(Mo0"#U@ 94%R=ػI3"UprX[ Rb߅yNdS" +7ƪ4e}$ !@9'_w3,AH-n~ qrPS閷L,(8j>M$6c=6zeX‘8TR3;|kywp1`HQO`A!EJ;o$a}BvN~VأeQQ/Z+(o3BؑdJ'N}1=4=gꬶ i8zK4yŌc 2=ǵeuV&é hwgcfSqo\;$Yte`"7o~@p+iuޥA+c#kJSM ff. DD,0$qjw.-N> + uM* `Tp3eF9Hx}Bf(6ĩ) "Y]6jCl0~s"jz&錐]9a^K(Ak醵 JK $(@9{7b/^YA"m 0U +%.hL!J0Wۚ&vn,mVAG8I%dӴˆYImA6)V`sǥf ž,aԐ(QG dV5+dԭؠxfG\n+U22ϒ}+]Csyŏ^F:2P$2=pkoA麜.Y-$-vlk-&*#6Ƕ=kdžuoR9Mܐ`vMuJE7OsdpqsX5WNgZK٢*dA>뷷QDpUf$AVQԢbu d 6<Mj15 P*bR:fz>cAh@Ez䲜cZOJnVBFYayy泖6#,{!Iʯ3Xj}:Q!I?JUSmd }F5̢VEBFBa1j:$Ɏ%hžwDJۈB Pyp=jڽԚe\*b}Ϙ65[¥cTpv3|wV(괥*ZiUjvHC]`?YzJR)JR)JR)JRZ.HVeU(U}lvjJLP$%n9=q*ݏc5n $[5;JU]t,ag-#T1{@TV*Pʶ2>?m\7w)gK! ?`=IҴRbtI!CxUϸ"$36Us dR}M\6ӫLIu2Y!T3޼1# 5[K3tei07Gvxee{ϗ5~M f{&hz~Q=ssZ)C +3I; Jʻ* \r:R#0H`DŽcfyLIo67s5&mymxɾ6E& xZ9R{q<HD䴇-#pqWcgtRyJ0{F1A\^#hܴaeI9~{/ѣP% aܼ>f}r]ZEXe]A#98Ȭmގ^a$`uu+I89]JUQ@siy-ّխQgalhgP7G9b/ Vk$afRFI;",R(ۿ{$c>H#RKi帓̛(FOֲv<C#C@TK Nxb$ vXZ|L+vTF|yQHZGvH:vf̂sK fk_Ҭմm9uX\)pEOIҷSe#dC-l Պg-{FGruq`&~QWu <ޘe&prLRFanRﵗrcQ'CGKXi$R΋KpG ޳UV֭dA A=[TAx+w#ԏz4IdGE*fNbi _Y(NޒEMI$M )m4G |FdHcYN\F6yR괥YK9U+At1euA;@e<IJI[v^Oz];i<7M{6XˉO ";°ϛn985x$0϶x̡{ Bw}G۵b45FXܴҕ*lOȡpG5u-j%~Q[x-~z2Sl勲jjܴC$c'o޳GlQXXdyeI% xxb9m@xO"4R0f#O+3JR)JR)JR)JU1U%AEV1^KB9$vR괥)Qu+ǰX́fe|Jj2,ȸ*` WpK,`YQ vVOusHo='b3p׊}ç@6 sT98S3ި1`܀?s^Q"3Om*Y[ڬ6ni{19"3epY*R^G`_9wY}?jZ+xz<-Uf]ĜJNO'' d6Wc9Z&k$/mFDN};>Qv\MrIkQ1ǥ[V[5Fzldv!p,ĩ95?jhādu1$s-Ʊ`e'qNCK}Iԥ)JR)JR)JRaFKkY)krdm r=sXVh۔|F`Uϛ!9r^]5ʰa #UFpNyKڤDcrXAPvl97zjI[,nڻ"Ǚ=kP诬8$^"h9FcsjM#iH@ U<8qY+[aI`Xv XSSx eYgY[q"[o$3z5+ȧy Jv9 q^lk[ ؒL窥KTcp ‚}Ojǧ&4 J#  3S_TԦԞߤz2V#k`MFn;gu"^eb[[yL[+;1q^dYrS:\9bw8|[4Ekk!2`F;Y?V[υlʆaF+d9㜂+pq㌏QZľ#oD~k|EIF 9 mB I:o3E*Q)Xj%DyUj<`vV-Y5ż7+:LA y2>>=KQwY\dH72{GsW#'Ԯng"@rH%N;cYQ"4PIkpV!Hǯ,ήnGR^'l.5M:QWt/1  Yyumݵ$Hk5[m$CdUPHI{>Ng WR +vyϭM֞ݚdtkxX +s{qPާQwV241F5&DpO >ZyGa:;4 3 xxR,ʮ`#dX OQ +qra2 ``y )b qR㿚 +G'}0#8nRSo Ocr8C8$ddv8QoR&g='O#kU >LZ&Mu6mtC49[=*QlK"EYZSeawBpOmVDI&һ[k 0mu $hQ> ʹXn::{(^f8vA ϽIu fm X²5Tn@٭°70kGYՋV 9(+}-c.6<=}}N}*5ƫ6plh2$ WLeK2. Jdr5 $h=rIQQw ?O7?M%iIo2ig%Z>n\=9=e̷L˰6II^\̐xI >jpQp--#BҔ|޾VsN Ԥ(:mW jnjk7I8U/ 'p$ǠDxHc 2WnCdy)J괥)JR)JR)JR)JR)JRtz֒Xʒ;fPy? r+`(o5J+UYgcyH!${Y HĒK9>z* +ݭLKF[p)SL6 X >njtwm݀rE욤74XclrvW;p}͟y H.}VV9Q9=eSOu]w<׽?H.ddd%d2]Gn~1LT90џ ©{J}Qm )hݼcއ/ \Co{JyAdvff`82 +0 >-l.*>M,2HM$%>ا {ll\L#2$!bY +dAޭ򙴸KDnxʲ:*g5#G{,7RCf3³Pia9eyze*d +~`82TQ730QBA!p[JiQ:^OK7&pVYw$F8Xf1X𡷠NSqeiX'@I2ss08S@?V?zty&spe퍠M?ZFZd4iZBfGr7! @#Ep~vCm$%# Hh1iWW*I3py֬Yh(TtQv {sVi,|dwzzf7[89cMbw$1;w^gn-漱t:%c%CcEZnT=/J.p*n-.fx +REbm.G+̺%ėw?Y~CUn綺uYm̛wdev!H>J&42Csm6'r&wyH ~#JZYpS{U¢IdO$RotI2"g(;sV7°Suw,GVKΦTxĨ2`s\~RC.10#bH#xn=u>v3dI6^!"r2<̓/Y9p!TX#M mxJiJR괥)JR)JR)JR)JR)JRQj5H[px*C))  Jzm$}Nf88 + 'jEuKnWUe#dJUP",Ojj5ł(V||('Y]U0>^JRL|d/WfFwx^)JR)Q{׎I 1(Ǻ +)bZU*ͥ +R5,XW^])f $YجW\gk8P5-nIe[Bn8f}N*dh0OaWTkF2>U3 +Ϗ^B@yu[}^.Bxm)QӭhUy]}jMSEuK})Kح"F#s.p2}O.ECm-ǷC2#j͙qnPBPy[rdg-OW^- *cPI>*Vd! 2*Ƨokq Itky1{ԪR*&gb,֮=cj[b8yRym-|W@1U)JP괥)JR)JR)JR)JR)JR! +bb6De$jOyf>nCm@ ־$eFѨbm78n3Ȯ5֖@ wVlʊ/a$'}k`_TK~8^ -䑃7W ;8>ecJ`F3AE~xj/QgD:qB +ݹ@>+pߨ$1g" )vi)pk'߽oDl" +?n6l3^|K4]m`X8ROlzve_ܟaTC$KMZN.vMH?/< +u]S@ Nd 2pNk=]Pc'R5}0˸g* 9Oi^GR,Q5dWqBq4"&3\ .sޯ N;U̱8FBw$v g6EEs[|DʊVH%u Ʃ#!}7~K#d0!8 jޭg-ԣ!ƒHUQRH-CL&[Ռ-Gm1ߞpp;U'DIr`$3 늿&y.5YW {Ecĺ}ơӉVWL12Xl jդ+nݹOLo)`vqƲ{[:HʜH +5ج" !OTDyv7Ǧs{XmQlm#q#ʍN@o6}1Zſ eq<ȽHo(mnNNvNso%г;b`o19Q8Do5Ti39P(#n9 gw6[U1ldjk$h~PF7SSͻJS.!Y-Pm3 '88$+-JuEp+DWO$1]|Zjw2wvN#8\amb&ܚGIˣ!FheK#-}Gz^m" Ye5.yFXIVmxa|;H#1Zg7wi%hd ~VV"xRpT]cq kd*8qȯT)@괥)JR)JR)JR)JR)JR:%ͭ0?7IrˀČN[hז7Wd=|1] 1P8zJI9VF<Զ&1p#G!u]6RWW4.}'FFY.eJ X)=yTȴ^yj 5: +ٍBkf$ bt$wmb?#_Kk#V0] +sgs^.;}:%֒#1E2?Zs\Kd"dH!e&fRr*qϯ58]0-dV2Jc-DD'pH*yڭ\w-ّ2; 0uv݂wc9K{)X(B%bXı`^ؼ4,Y 1&Yn~+Pn.>*$ɭ;T}}26qc*}I+ ]%4,yu_kv\/R/Zѭ;9u#{暆5o*42d|YPw9`r1Y{H>mrh${ʗPemS h32_N?!8=4PUGI'ASKI-"Lh0v1'm]ymu8#2sNvsR5&Wi#^eDp 1=:iWwv7QlĕУ|s늭u d軻.ۙ@$j^Gxmm$L+ݑI4}";˛"(gt!W({{f]5lV36BbqY[/#ba = 8e+k\[wwФDvc 9;x4ݭxz:VSg 'n1Y tZ{ p2p;d5ywYfH>!Mo-g WvWv[r4l2VnĐȲ!X2E]y.H3ɯT)JU'Sn훆{qkcw 78TO}v3#8UʧjsOcwNg޽CYܣ3 @Kl`ɩH"R G תjٺeHWpBF={URIks* {1U)JҢ% +2=5eu+Wgcs}밞 ')J$I0{FKq ^`}ϯүRfQӭ.[tF2ȬHH +Fj)JhǵV, yHH$j@WR)JR)Ju[؅3ʑ8('Vn3EpzdE6 2H*G"Ҕ)JR괥)JR)JR)JR)JR)JR:ъ9l[q/Ur@13TZ=@X-KAG2 +I|աe6sVfة >̗~VM2٬;V_J_`EH:BpC.# { +AffU'vpaֵYnbkhXܻWwg{%!m\ʨ_λL dflN8XwzKs??p30˰ vP1r m:`VvYhK[tY&h;S;A-9'5IT.׎WEv C,b<2Ǐ]ʤWn(M }rB#cuoOsAuk%P680۞9޵%Q <! `N |$q)cVV%H\)wx >o݋y.V59Ts)f|{޼VREqv]E+$;׊$脖XDX6c^T0A<׋G,ϗ+m<?egMkmm.ULn%EPve~KWQA?P9wd/s5DV2f]PЮGqki:lqQ9Q'vb+84bpD \6eEИvqd }1Yz׵JQӡ:OqHG=OFa!7c`a0x(8\H٪]Ձg[LfIH䕏opwu`Hskˑig,0i"1@;p9kaQ2+̠}lﭬ"~7.QK28{h|K׶em\ ]H=r9W$dI㵃kw0`3ާ_EsH BmqBݷGn&V.d\x9ի?Bx`fn@1 ,8iI_lL #&!N=01ZنL]6+|^} zkۛ-s$ i6UB?~([+{Cy:QH wvm9>­?Iq7U\H)ż {8X:I"0AМ 2*R=9sZ gJ % 87Z̿%"W,wrK3;z^S_7F(c,zrhƠ n%F󶉺hV#G#)'۔#bgR@ z:vy>tq*gn9,O T>HGl#^&f~wryXlsPŮKmzr 2+uzGh }GҲ-jkXnҬkeیj*xg6.n͸KnzTKm$){}s ߌo*dc fyR6^B6 m U|H1X^BdQ$aT݃p!2DѲ)p>]KX6k}YWeB"cs3`d895aEL&{">PΪY1*Ħciqpbi#A!tu>т219lZ2t%Im3+}F}*|z̩y"3:ps#5oե[[ؤH0sHSΨ'A0bۂIC:]%b9$Whʶp2BH9Y0L%7l`GN3EmXv ͂y$$" c8ghhr;0m#;i鹄ʛ\:)Rp0+z춷7p5Ywy +?dl5{ hfJd6d+'Z +:$]qm8qڶK{x#X@(UR)JP괥)JR)JR)JR)JR)JRzݽѷFeR1/S3VAzKj:.!qcҠ7O$NC)$qÃq,v#pei<{g֤G%.d,e*B!{cVH-٤@R:@;1Wt$|eOYYS`0rck=X N`:iqs!#%ftP3Anszs7z-[<;UJˆ'wZ=z,ŭV)bACKaI i1bHr#@сH|TnN%HSz5n b Rݘwci-l*\u–`z\ V k/M#DewqFx_8-!d Y٣,F'f,1"m`nwb4 ]"IѤ[av# 9 ZK@\,NοQ2!@˩I +-L82ۃq[`;NMc';3/u`j]${vI Q0!qyKpmSxe#p{KU2}}+Zԥ־>{@~y.Ys;Jٹa4v =KXSA$SϵO徴YU`ʱ\=EC$: pVa${2 qQӵ*a/Y˄ɕ6v3V&\bDpbܝßNjFa%GL9#\4%1cA[l={V/]%.-n-#̒4Q`W'B}:g;D!۪J/,n[s$"2I&%a`t +uFlex  EѮO8do2`$X g޳s.cCr{gj:LɪA[$d%Rx=+5Im7P @n21ǡ>tjRS8cܥɂH$gܟJſͧө-ɞx{wdl//Ufެ~eP~}*%A( ]WծyWm8 }yTկ'¶)D.Gv8bm/U0"Iu-çwdgjƃ# 1Ekv(ۑ՛ +H>u=*a#pH# #_ z֗gYK#DOS|¡if,GTMw*!C.v+͟n3a4V%spѲ2r[clT ,NM+ >w&"lPFiܫ{;HwB-wPo× cIƥ$pY5R8,bXrc! >PzLnB_.8<ϥ_)JR괥)JR)JR)JR)JR)JR)JR)JR)Jqu3 V9\q֯վ}Nѿn޻s}W)^&LHʜcT8cX@UPk + T; +JR)JR)JR*EV)JR)JR*%ki4FIqIlvOK)JR+̑Q* Xid}+tO?sڤҔ)JR괥)JR)JR)JR)JR)JRJ)JfҔ)JU)LjVUiJRU)JR)JR)JV)TjfJR)JRLiJRS5Z`$ +7F8ʐF +TҔ)JP괥)JR)JR)JR)JR)JR"]J_k0F`!ZΝ3<ka!.oO #M.4򘧐H1"wjKh KT.8Vk\Fe=aK $g¶- wI3X,7*v9<j V>bQe鴁I_8_{dE ($pOcuk#o^&"Qdnߎ~|Ij16 m-n:n3>v}r9nWv> TDvUJ!@vu<+֩iK$ƥCȑr. +@e= *emI;02͸P|zR[M(i#d"@$156AɊ#`Ag8Px㚹uCm)Av qϦO>}~nɉWr6 m`WcCw: GjmFJ#I1a=jyy M4,hpN7RrHcTwgje [ Ǵdc}jeƭoor%*# P;ڱ_\2tыFv"*uVegnWhm&Sw6LĝivṶ$VŢZKcg31g]%n%FU~Zc.8$U]b)e߳qwێs؎fld bFPH*O~qxbf%0 nt֋e54`ULːIbU1$}8?JqJ[Q@Bn/cp@6 Nk{' +pNYZ+)R4ƻh =Qa_PK,7)ʒ\H͂p 5됬p2pkgz͍^o통\nљ#0!?pܠ&Ә]d޶;m=ia 11Rw=^Zyu@$B]rsA Ilpl?SUm%ޑ{ J]P;Tb5mD:%q!eB8+d Hǥ{զVD 6]¯A-Ǘ@]E5t=D} )S1`Lv@W]ht͌!2w69w[zu u@AP+s@ay7z9tuaD)a 0ǭKDi0+$0H +39*k<8"WӇ! (ޛT88ҰZ V{ GظެLsc-q[V@M֩-zo\Ikj;ClUNuȔ\qm9APt]>[{;MMZK.@)6q3Lі@i/.$UeYǡj7M=\t$Wd%7#WeƝlY2u'UxӴ;m"G9YyANTx6#t"R$X̪]#V|==Ɠgio`t7T4pu|9l~'RndxYT'?^i(<mRhN§qǓ ì'F#crl ݜchP2HYz|n2BޱgQӼEWAe22yR85%#fNlsϔ}*r{J @0283W4^Ԇ6ր+p F7 +2ǢXZk{c4aXa.2 fẏF糧qw?HFBGwpxm͕N2Dgx)Y"F56TQִ&TD цu]X q>Qiʥ^&|M;[f>S]BJ/(%U2 <ǥ`)g[)"d1^bIn$tYL(c,7 T-.'t+-҂H%]r2(LqY[[|G!BJ5vR+v8VgPm AlYa| +6'dY++r;Y-CM|`g決Zkm+`~O8xN;vn\x5mOko,|V1ǔnOdt'{yz3U>Uދi^];FNVea Xnupk+:$vr޲k fwoY j۔p͜mZncݒĩ1d;s$}jȜGedpR7. +ʎRF9sL^-ǖ D(dvbq=[bqR\tԈ{{Z_޵6lɸ Dc#~oK?T(B~#?/5xjkɥuYT2nƬkimZ*Gpr1ۼ!I9j%Rx-Ł;f򻱌Ẽk-*o+p8ÓZm2J\ b P`0ql>Jf ;s +dq߹j,3.jW9)#;X0 ;+44'hmk#u'SNɷGl ,2d#Ğ@9}ܫY:cf:G+ǮEJ&.66o#T@Kq0\@YW8̱HcRFy: Ήh,_ԀFT/e +yE^io.d-m`1OFMٌ9 gލm 힡lo1 msʞ~Ƥ^xgBYUpHk?czv\H6g }yW?y<\L5gXm"36Ҍ݁9x S#cۛd[ǭI/cm*H2HFX1'&'#'ƹw,n;{4{Pvav2M0A#. })$,}4gwPX/$~"JR괥)JR)JR)JR)JR)JRRJPNibҨim)1McCYoE̲#}'ڲ}|d/ bԩ#8}*ޕa2+`HA*V)b1b)b)b1JS1LS c%њ]B;4jWnpO|Ҳ`b)@1LUjf%ڪHBT _b)bj{ I䄫c0ASL+8c#P2Oj)(FiAL}hFi)bV/`7PK8/})ӫ:L[GBȡs(|b))JR괥)JR)JR)JR)JR)JR^Z{]Z$K.ERH`{I5KyHP498zw3%,e`e9{*Ū,F 2NF6QF*NKcVjc[d$VRkAXAtO(q"PF=HXo-⼒qDpsU k#ZOdd $g|sv% 4 >ްΦCqe|1tr f,/ 8|7^>7 l{)uȑM}A,Cw^m5+k RM=_le~w ۱ǥxd71oR;3Q[hA+iD;120[\yWFr)ss%uEو~&[+4r$1yH šȷ(RFsaWߜZuBV.6oTD*~[:''ŷ[;|}1{]V v9lghsԺ.k A#~5[V2FH spy8*a&ΞML0T3G<{ױ [%"CpđCS%WosP+֜gMq.a&0a_ Jxb;6ٗ^x YGpc* ;7aI+KG^V6D{?^KL:3GcԨa9ReE3FpsgnD%`t;[9WGO"t=I5@qđ&gNH:Lhqj }B`333l89, +xf;tD$ MlPc*OM@"t|CSU?*  ;;8Ilxa #?;buH6[eOF2d {ziu)<,$PñdxXHnXȫ#@5,300=pMK,NЂ# +2A5s Q!m)Z7:*[WGwMy\F3S0-cwQXIw)9'`5{s^M povIToi[݌Ȓ6']ňS`{ڽA_Zpecwb:B;?~'d +^ +}p fZkSrdnq?LV:'2" ʸFU#vxcӖȯ|LB20e' ߊO /RG h j#{5*:z\Ff 瞇Y}\q+1u/ p:(QAڱ:]SKh7'uNpNX~Y}6KuwbnccVkLt`R-Bܱ$&nP-3Dr`?Ǩr@Yi-bx&ӆT+uC91<휚ݫPX^D + pH).>¤Io{|iM!wۇX;Y4h~1nn|!v=ҳM2a{u +Ւ? `ɇurm;A;i!:A]Ro$ܑWg@Q"!pV>&OtH]㡆 Zhs*X3#8lB{+;Z| Y11`X b0J@uxݑ95I,o"i׆=H:yWV S#ty:vbfO'yy犙JR괥)JR)JR)JR)JR)JR4J,k̖ʆ7Ee=Ԩ+W +Td gok $hԲbdUxCfClۊxs= @rgp3~~H#U יeicG*AR$p~PC$%U )S1<7qVI{Ȯ `ƒ6'08dE@mظ1{TTP,):u 0A==E*tm* +v7-#>rԶ =^Z'Jȥ`1PX 5p WK)"S0 haBA*2=p3A| ׄ)DU`12j[[x8UprYX?(>TIE%~\{U%loElvʃGLUl9ҮbK*` ~Q*"|Uc"/]P,ox]>88Uy"7u +~dȕAJ ](P!@Q{yF>Y@[bs׉UB ڡij"1yGaWp;w={? Lc^ߴoǶgʴ9R W;dE2[h@5 )m"2R7` +&BcGD _SɫYs>ӑU⽴Jq W}x65 nxUVU ީaba`r=k(@Q8 9^Vv*?UUbU%ddޣ\\k/JLW+p#ـ׍#Nd%7gvV* #"Cs>ӑC`+DqۀiQ+mHC0l {׮ q;W1ʏ|㷿5㔂THhFUTsXHFPCoJ)$` T)Em+Ќ*)JR괥)JR)JR)JR)JR)JRpwO"o]{E)Q0V Tޮ{:E*;!Å`OEhdP aW9eZݵaq6@8Q!IV T,7;;ץ:_2>ұ%LU-|H?Ҳ".]qHI6ԆG} ]SCj7K">G #^f;t/#*b@$טnϙX2ߐq^-o&@N( 4`!27y*=qmo#ӳcN4MROQ<0q߾Gj5c$ѨS,0}ObEVgPI`l\Dép2W#pVeSy ws*o]v=H1I wKknhW`ݾՏ>t[ .mѢw 3J;F%KZ&;pvhhuLFj̑sOHTᶰlc^_ܻG jj6g5 +pĺczAWpȩ70>5tyn;T2Jꊽو~&(ZQx@WV "ֲCjD@Nf +3Ҡ.0{5;]x ۃX_F"6(om Y$A%{5Ҕ(괥)JR)JR)JR)JR)JRqtś7N ;nxbc X)[®xׂܯLjwa6UfR}yQ4+e NrY܃nyw?j KԮmJCK+Ns'YZ.nf {8;eYR,=3W}2_P JW,H +HW°ݏd[B=-e۩Z8g@qRSӣ*ڳ\GL0 #q_jqyjL c>{;K  +l`/:Ï`H>b D ‚+~53Ųä=a"">syӀm?:`;F~Zֺᴫ*6HHMfd]ecxT885Bn#r$m:J ۏN2cW]Ğ$VB|)~b*.vくN+bGi7>hN[F50t, cY 6[[[yC;et9<Ag/!fE;YHe88jڽ1XXnb@gޭx&6\1[rbb<WURێ/SQoid3uz0@' ߵc_,]^ FIN3Ϸ{EeI(e8g׵H4)cP +=ZmTv\Ah;}U{2k 9+wWm8œ}XQ3i=X\c#qܕ3ĢsqzUv +%IN> W!FR#PH[k1saHF,(I' x!ҟv?}=Z(-Tq:7Bս96'l1AoiShnw}Ҷ62\س\n\;s돥Eլ ]-!5`2s~s_鴙TUURA‰tw +:(2,+[?Z]E%#uHKcaJ gYXmGlMljsShq=zMZg m~;s=ֵn2yv5OjLR2j ?rI,=.@UWRNPlYٞRLKH`Y}H׏^FlV e9 UޏnUUlĈ:7s}.̞ٿnja5}/&\HqSC.,c6WרH$jG`?Q#\Gׂ9q=*ష2۷֪0F,H*ctXuDI6ѻ3ڼIZ2F.0nq+Οm{Iw(l{WZ!l\3c'UOč(1ۂ1R-2N͙oҽCaolYr?| +|E3; .XdUˋ(.֍ Gz(YTP 0 #[xC ` +5 H0ƨT9ǭx-oF嶨4M.4dX" +ܢ5 +UN! D0AUvr01P;#4hJca*=8+vX#n;-qZ6F FNx9`׈HBF86l2AlϾ8WvP_&I 0vd(ʯʧ@9B؊lW8/FPd`ҭɦZhP16 v>DҬxPj2;niD1qq0N1&ӭ#XT*1z @ȭl;zU/4MGoBmCc׹`UI"GU쬊zpl-ˉ:Iqػ2*iVҴA;g.{{m>݋1 `CpN9\TgU>xLWDU,Ab `g8ͬWc*N91\v.ўR]6x)!1Y぀Fz6P=4m]b0Z'Nn޵K[ {-=-BCF fF6$v'")JP괥)JR)JR)JR)JR)JRJPhY&W5B}2BVH +lG#9RJbV[˻iQGIRNdgc|GˣOw ++qV$Yzss?ňzܸݜl߷9UjkdW` ҕCX}RVԦWhwd1BzsڲFo`Urqgj<#ȝ7* &Cm$r{jz0FWHu"6#Ѓ3JRwCRIUW-"BJSjd}5FIn7pq=k)"V +vc+!L;ݴ)!Pk%JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR~#-p1vy.2?;I!.yu; IG|+#(<ՆԑK[fVv-JrqY5kVALV,s{s^#jQDݷI?"'W uC{g +JL{־|7s~^F1H9hs˅p͑V)2$+\`?j]\ˡh t62Km +y@VB++ m!HE^KI} +^RkX4֝W}yUqX?/B,|ŗqJHN5lVcabR+qSrG%$M1<FjNvkc B{oMS#[B{{U/먴ci,]DS3<*Pۑ>~ݧܭ,HHem#>՛mB \@;$V[}*ƣFA5i-tGO#,{;!RJ>A֥u`Tzg9B>ة qi2>pcc2G*Azm~*J5[$6Qs x%;$E! cl)( +D]^i` k<[q>F5.7Ӯf0J"eGw PrG,~,ڋIr7l^jv}rB dD,qhs*͛ɚʫ8XgX,8lyӵ[*V5Hi,g.II v=㊛F]yeC9aVh]6+bnuض(e/ 6k"[xÚL [pMJtK]4Dy9vf~NKd}km3X|_CYZR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JRi_4o*mu$`ᔃZe2Ňp͖?1Z7V͡ʸeYAnv5vEhWvI$+ǔ9`q^J2hu{AoV>~S V8>T[]a2g +U <!wsuKV $ #Ʋ``oU 7sjwİȞU*Si(PT +銏m3Hb\8ݓ+)7;I#rN#@͝H6ۺyۜWot/%}$a1Gr=EXv0Eq qKTH''#;$ՌDm4# Gc=Ƌ|3r@c8Wo[=qbb71F1ȯV4)uV2_eTc[)84#+gSWy QI`0>T/ ?V.d%K0eJR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JRPi3c{Pff=5OyLR19 >uKi%* +sҳPL.#YAVgyj+}5o }YYb< sީa-Ķ,I:p|BTҩ+IJ*PI$9$=[V]&K"FBFE k[t,3K&;He < Fp,;rp3܃Y9$+9젓jgvG: +nRʞE_7H$2Lcې.1z>)+hX,t#vܙ'3Y=>5+hc,aB=FjL}XR.#  :0ʰvi\,M/M Rn p>lko1XRÔ2W qj})Tի'im[jqHɩ[EreEpa###^&B8U$d3vWis`(`J6AԦia} +`F$riURY.OaVoO b;Ty(sR3UfTVĀH㷽a3¶rSŚ,#m KdQ($91J"U AdJR)JR)JR)J괥)JR)JR)JR)JR)JRƕe[J&V,P)QܐGZGX`%1aW%df/pN8qoORVYd_̉YP.A7:r08a^GzҰ:ޓqswޟqWQUx( J:Vuwqsg{ +[, +Da$e3lZu]["a8ڲ7fH"YBAp3LT[V4m eOFFeVR*A`Rk/OT +4EMV)Kdds v,@0pl`zj^ ]2[ǾL$T`FOyNⶸ2M$X8;nz+qY]YA3ªGҐt+s\zU$3i{o?@k6R BYJP@02-֯sd.8FNgfR0#\3zw⫝6)y$ 9Arr8S,g㢏pмir m +!N8~j:m2J;0$vǥC e,{ǃTaBmNlͣ+͵GwUYsG׌lzwY ! Sq f$1c%ĺLZ$V$0::$dTv7:pI- +ƫy), +2f, ?%: )<$"gE0ULc,t}H\xSRǒFUJc`UqS滹,ytfReN#`Q`.j-˹rJFd(tTMFogi 8rEf0$^-"ҥgl(`.C8PMn$q*Y`6O`w5z[tTw 2䭰| gJOy..o;gr$Imb}sQl/3d*.H:P +d> e6V\]LG^Q V~mB9Aml^d20N>u tyX\̳4H^JSiF;gՙ`=Jq5:$,Kf".v'cԌ +xfKk\@!Qp6(Z)JR)JR)JR괥)JR)JR)JR)JR)JR>$GMO$( )hM&;h,F@|U\[pҢ">H =0qE\|#i}EIQ26~9Ϯ}yڮ֫X˽In2 CF [89烞+ݖmWK n9O$McYKuHDB.'QwdL ՝Ie}zϧ!B?HfAG>~IM:R,QIFp +cb33DZ"2_#Hˣw2\y|#`؎Eha{y^3pŘ<,8#1B!&U BhAGsjm1ncʦ8wMǓI'𫚕zֲd6`: ;i'rn#X!m `q׻ݵ5h +v +S'b{bK$P]6Y38U?sĢN,Aǐ0T`Gd![;]v8'~([y)aͬ k q/Tzp)$hl~M;eK3ldJ\ckqF*},iKng 퀠Pޭjlڢ4+pF TR0^=ȨS(U۽Mj Ğ H$1f 3dfeTٽ}k$kYF^|daͣh^r]o`!Xywji:SVNm#2(eeyxV(,#90e\(q} X1 _ќ%i#GXI>78I_ ?Bk(JZʳIK%HO' 8ؽ6)bpٴupeR @^].%A +I\68yqY Kbʹ|w1=&\hR[byb7 rF}3Xb.1I)pB<Y-㏭d.tY.-.@E +ŗc߸O (/"F0>qYXt~Rgu +"v`$[o %ھeڡ9 GhPH2UQU*w+(a$D2_O d XaNGAUg)]36!]@|L 6n&Co#JHW+HM[B@C?$l}"47/29Dc;늇l,i-Sf!(7B +#IX @N9=0ij&ral63;sb +m.gu$ 3,0 0=+ܞiK-;@T(Ͻ]^{Y.f9$`vK]supУʻr0?]BM-6F+yaxv#I!PZJ!`LQm\68y=xrݬ,3(pd2u'wu,$RDBlFӸCUbНDIpEJK>yLvmj1I:!ظ ^Y;X#pqke\X.%9hxPF4>NYr 9U.$=|~Tzܥk,g**pFGUڱky9F`=?NGMF+Z@%Yv ܏I)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR*m?]{ZA,kLLX".5ƚj] ~sy a͓ǢiI%m['8Kx5۞Om]l*|>۱Oua:v J},ʹv}%WFa> "*!5>1;wvGol1O+Z$6B*HS#O/'WYo!buNW@\ e.{`lF\1>fqmuGWVpf9=w2 -f Q;8to?UKudJF&G 1翠}ag֜ܢ?:v15()q[aI +ʸ r1Ǧk-e;Fbf@Z6 $r8)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR*5xď>+=6}.m.]K31ri/-/A)`(]zcjvK.Da" e-e @0G!H+-"#ۈ2DF +{Ҕ)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JUly lcv= X;y$A#NIaRcTG{[[\\gUaJ{N0 JJei%{edHsqޥ0 # kjqQIүU-c.Qp]1$R)JR)JR)JR)JR)JR(괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)P;WȊ1S};Cy5)\!W R`c`:G->)0rr`[NJR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JU&1P 7v3JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JRNZR)JR)JR)JR)JR{UiJR)JR)JR)JRS5ZR)JR)JR)JR괥)JR)JR)JR)JR)JRXږ#qG|0EIBv~Χo-Φ6s82Vp[̢&`+qGnx׊\%8傌qZ5N~qP1GYPNF85iaI +eBAÐ3#}WͩIy̋ïBr;qD-amtP 85%YUS"k񖱝GF'J1Cw֠Q_QѭYY Ww20li SÓ,)bH +d,呥U$ݔ(H `zj_XLnVVG;\q}г(+q Zw4I&kء s"bFp9YmEt(#Q]#w9. Hݴ9vr֊ʨ ĜcY\^IrJFaXWM=`sHH3ҽ\kvNW+2!=TEp*]ZH$S|CI\lgCoFO$*]mwاWnM2@(Č0 dԋ+ugvFeE[խ]RV; +GPHSc68*ޅ'x\Hc>Wọ2#[ fFB6YiXqZ޵4O|rBQzrBfA ʫY ɱ퍷pc;H= jڙ#GH +:BdfV + H|ozOqi7Qm,^==݋3`dV:}GR"I UxX{[d&FF`B(P0OVY&h-c$#ʍIg'\7vB :{ Fm`<5EPZ]kx&.Xw##֭]حreB|6mdžpJsPo=OPH:Q1Y--no*9[uQ8`U_6{ze䕶߁.o-D100ٞAڳ#:Leb 8 biqmow9w;\r،񁊍AvH@T947:s o0Xr7 yXEE2қde,g !uuǦ9{iWL;"VvhW8>X sGgw$ -lV~_7~¼iZt co]MpfPS$nݻog[k{2i3̼!r2xwrZQ*ۏ$ѻ-dcj&Llr\0EEG~dWVtWaAcIEOݧ:U֓nGd mki B-r8׍>_lindrDȡ@ wLmuK=?OK$_{png>ǥol#rc 9k[ծVźl / + xWOjF;I+.bcj df@J$؅cL @]pN3{v5vMc8`['I!0k2\:`#pC.e-ɧ;;Y%JF b8L(aƙMĂK)I$I8U)J괥)JR)JR)JR)JR)JR\ۥO*UnA$rPۻ~giی=随؋gn@zKbJR)JRSTҔ)JRg5Zvcqc%vFI08rAJR)JR*91UUiJRS[X_89B[,HSDßS C2c8VS+w#'֦T;N$َ>RO {R]Z N?UMQ~K[,&1ei<JR)JRUiJR)JR괥)JR)JR)JR)JR)JR VF*~&dpf@G+׈.Ms8r(.F@9ڱ=ơ,w$1@Rwv0I幺(qԊI4V0¢(3v&א(xdWRX۵]'N3۶is5.me`Q5r8n2x9 w6໠EǸe>ؚFE A5CZ$v`fB6a4h1% {U庄]JNf!|rObEo<r:|p*-cČtO"(8FPxZڕ%V;Rxgd-՜8ܾXA̧Dz*}}v}O޼j.#˲Fbɍ3ǵb)A:]8y`2zd ON E:KyVjҳ(Gg%!)=lbXGUk]bp-fe}H 2I;Vr7YT2A=>"[I%COq2C +voV;TdMH{#ͱ-@ϱ׽;V :o.B a8nЋ*t}f;|R=JiL 4m (\jV֒$Rʊ|XomV,vd!H \08;VMo]T+!u!q$?pD; ڰvZ\k=nDd6$ g=fKfݜgsX3_d()3Kmfh:ɏ⾺Bb$g)UB2`ܜ +ФȽ mscH ֭xHdR@`IqZ^^z?ol#;ŐId>T\}yis Çy0# !9W#cƽsIƻMObOLK$YPQo/Zc9?6ˊXOjia$DBp;.N}1Y+k/c "򥕳F|i+{y=wF|p~NLZ⺰326wݼ\F8OH WEɿ^rPeA*RGMdIeDg8Pkm,V;M,*euJ+E[ԭT1,sܷqAUU.={U-/a]H/ZȳPHۆ20gT? j?eoӤ"2 Tʌcӽf)T'ZG{u]Co -F @er~P^yZb. +bY]{tb?X%Z d-+$`gYR)JR)JR괥)JR)JR)JR)JR)JRh8GAM`|uy TSqu8,}5ҭ9E(\$v VR5-x( z ZIB ,t pB ry(똮>*Ukv@$ϳY{N`Xp>ѭ571srNr%l䃿F q֌;NAfNg?Ju{$Bv| Fr3}O"hm +!5bkE݌wX_V{@]*!TϷ1W71Zy]QG?Z<:$HDWoq&@2U*Q@Vѭ>v<`^í=(~-UX( +hlYٶp9fr#k30917dbq +c*ԭOMVݵTrx E[`m =mƲ `xtda*爬6 Ѧ |߅X5u5[NBI%'4AXlƑ ;'vE!܁U {ugly('iޱZ4~3Q>NF6̆|b\6X7 ݽs8^j65*37=enIb}{c· _h; #6µg7W!霁r4TZܺK!mA_pR˞;oF<w3ESiNBdKsN#een36?K YΨb~ZO4k_\$V+pL"ʮ<ñQddrX;-|36V]= x^Wp=EAƕn2Z$`C9)E]@H>NI#+XKQ'{}3Y[.-3ݱtm'X=WXnH#şızU45cpcEۨcX3;q"+k7죵|ߜaǧ^E4ѕQdyu=|;/yjujx Gb&<|㏦}+cZVYEe +VciWVŦɦBbBNd$Kc8X Lw&6hhkn'FdP(P{s- }%&8-=݇ԫdk߅cxZCsc)f:˒&|TܪNAǷH'-,G<7򘙔VJ#WBqڶ?M;MwȉV @W)' `1Vf~"y=v^Չuj*YhV2O[$ά38+?*2%ڻM +U qgRHEøP㓷'jh,m`MQE*AS·KqKvzu3( fd^ޠVBO_ b)JR)JR)@괥)JR)JR)JR)JR)JRD*&?WFfhЖ$$b}E\ESR "q$l{$.B4ѡe[kp$Ef`I2q׳VKpUfnēܚ{-Sґmexz߈%ܪD`{1z@qUZ;DW G "̈XP >^tĤHF$>=LZ}Dpơ *(Or08&'eؐ r|.ޫmi$W3m8y)9 +w V)LLq +G>P?%ߟ2FOH# ,V˕U'PMk Pƥ⠶ gL G"8~EUϰW)^Djr1=]yXQ*v^ EM&9ojŤWhcVPD#P`&Ѵ~8=R}>7dK"_#Ќ?Kc$D"_##-DЈr!'+"mc5ٝcU۞> s01Fd6.VEBS0wF=wy{y -9E9=jX˴ąwOsw>aD9U >‘DUR' sl8ay|D3BaWMcD$ۅbI맱?Juj_zlpjMyd A#^@Nq1\UoRH]mUO?Rj>`֑˃,%#jRB20jXŷdHIۄQp#̤!I( Q]F=EEԬ#@nAYPZ(4}#rjoHlA#9pƱ*{dGnv6q!U7{*5ΟoyHTPJƬ3KecHb$m )JR)JR(괥)JR)JR)JR)JR)JRj[IpGv$T}I V/V-me.srK RcnxΌޱ 9tH=8ʞY*Ûˋ{yR/ (%fg]r@sZ/d!507U +A~/T׺)Q1+recP1NO 5׵+6K#“^E -*A#ځ$QBm3 Ke Ԛukn'4Hە\w#V.]Fkd6u%@J<|Ok+%$ʼnlgdil9V/fɌFT=xS8=e?Pr*])J4 +3U$55 B%4Hd%NN񸓴F=s%f鏒SI~VDX庒l P߸`~ҲUF`,@44p<5]C#885v}Ndą1VELg8Ǜښ60@m*BA'5eT*.Рw8۴T#r3{׼ڬY^~HTI"gܣ?j)Xj3i} C} Rq d;p {RJjz|qL!#c۵fFV%HU[cn'>Z0Q@ j?ơa38 =:4 B#Ror1ҕJP;*^,-R)>h̻wm*ď0#{T OT-l"x,YbPH8pw׭GVխlPRf*rt8p?+--u,oXU.1=jVj,ڌP\j~yVFP11X.jJca P?P?/$[,Fn쳑ju{~J#MTg*#o$ϥe jWik1;@}jΛom1t8G# +wcL7Z? K 96QH9 ΁<̺xܮ e;m-`PMa+HfYC{ZxZ ;M/$~ vHreq!ٷ3#4L2-&c-4 ­s6Iݜ_AZ L@f܀v㿭VDgi"?, ڥOkFQY2>|$]o:6oǛnwm϶y :Pr#AiKs>׽]k-wVM\ciTu֞шBAK\Nvw]#$CK0JxyH@`=yz]&VB$ \ᱟPj[&ne*8W0=`4XnڼIfoĒj])T5t^"bqz +5d0 px"eGhK#5cflcxeXAIaݜOkAn$L-Ş Mdm3Jkdpq8>8ie‰9p/n܁Ͽ4&JBфd$zҥŷ4]rWͻ39=|h,s<{Y]a@9s>qϯ{l)"c9  G(Lc]*6T62իt0@%ORI! +%R8V2}OsW.KRфRsWq^Xڄ2 m{}3Dд,Nv;DϮ+)JR괥)JR)JR)JR)JR)JRKhc-*) +TRysR*\ nwNm ׄv{s Xt$wRJRڍi\}d]K]@}*G|b{JҔiYu?15L0BcWGN!`xNp%U[ ~ڲ4*7q4#qT6?S +ꍩ5Ҳ6M Hm1Th+ǐ`>ޯj3:\$"*ev)yOIFKkUI]Ou;>Ҭ\GiV5ϙvUsu\](ܐ*#iGYUb=^Kk+,ػcpy$?Y * \FG|UTfM:{]k1@B>z-Dܠ?H)Jsuu%mFy<^W̅@ `O?UB5խ#he݂y#ڤܥRM'ʈFO ]J潎..FnTry>ꢾ1TJR)XWT6R[ơwT?nwVR4(Ӑ,m>pWQuKx;G8RA2Fpq^~Pnެ1ɷ9 3RX'U{y#mTʱ`H `)Vnz6/(rUs ?Ua4]v^)$lgߘة#ubgxn(FSiV'KXY&꺓XybM6tdAǡ:7(a؀Xz)JR괥)JR)JR)JR)JR)JR^/[[HGF*reFSQ5y. n!1[˶[s-.I}+=J@S +bC?SWd.%Fdbޤ׽G.4gwI(8ߒdsz -T(fiGDI`9ՈYELEPӕߞ_R!tܸ26ۿLWlJf.{msP +Tjח:M7uPY#WxbFJN3+3ĻzVlgx'*~aU΋dkɦi4;Ib#4Nx Uv70`]e}[ .nl.ݷl#i+ +w&G8Rs;֏qYBHe).#di `,%؁0 Ƴ,ADrJ_亯KL=Tw`HLm>ORdkgeEwAvV jFgMStϴsx*ͅJuL.Ɋba6 c5zQ}/H2$"M+p2 櫬^\ZMtEp97DF9SN #u4um}6 }W&ywC>#~uE>s*2d)s+e#rnwP#F.~P1KYA w)Iqz-6cbr$$NG&ڭŵqFr4Oo*׋#QE ĔԬs1y,I$nK <\AHc8>ՉnuZ;#eHQny=P;+[W-na>,|]I Z搢5̹osm=<K fkɻ$wǽeQ_J"I^9li ::8$60>7JI]5`;N1 K|Xpb%0z<8e[4n Ff:3:DḶ+e5OWV32Sg5%ӵgZG ȲȒm$n$T63zŊC1v.H#b/0rZM/L[[K0P][`yNPL{mK-v^szEoo1\廎6U-,0X0$`s`걼4ČH #Iҡ|H;%,1J4Q^|Gm C3m<W$U#}*I&є3Gݘ6R +qpȱuRx9"]\dnSxW7W1^/%1#ɔ*Hھq]M^D̒Zj ouWv]i"aAwxrȪ",Ȍ +\rx0^[Z}󤩓pvpGnj)XiWc5̶i+eyϐc>R"zRb7sP&Ո.I8?4ަ$E3u2b*R*NmD$1Vu=H]H1B 3Vn!֡I5!P7(sqq޶]6K\I)xb +cvP"$\Y7>Gn[`+2M,*,f < 8[M$,5.P}FjE)JP괥)JR)JR)JR)JR)JR:TN0`FAS#FG֬͡C$*I,m&)G* Kh(*UHF,Gd(a3>ۋ+ĽLc88Z[|$͙H@sz<+d,tRQ ^0m͜w8zq̳>̄gzy~Kݹ~{w1v(n!^[-/\-pqU@x L?ur$N61N96y3ƫ0w.``{cҫkkVL4c/m.>ϣC=Ćtƨ̍r,]GͥQV9X#e ?/'r9)h]%;11(^5=6=Z,A +IsV[iH7.L{yqU"JKJfoΕ '@^on_*nRfFFyD^)$2DPRaܟaKE.x1( B${wOdH+flc~-Fe܎FH<FAjGq#K$K;*֮[ R{,X#VVu'<-ZN\ v6PrTytÖ=} cfH`&NרR(~1qWea!󪭀]>Ʊ(E +qsy 4HU 0^wX#{^<;X,x ЁnsM +B$WЖU;)#?Z78 qӗNI=ĜsڧZ[%Kg $rI'ԓjfV2 Q$,0wo!́,1b~D⣼/!8`i*WI[F;Dc +K_qY@*֋ ]dEڥ\ېJR})gy6Ue@q_i1>R!/s<$/wy:;6W @'*f| ̐팗pϨ{Ö-֑ +E**A/q4C$Vq m)f֐ >AR +$)JDMv,}>+S'{fչf$n`!vFѝ+If? +EhKu9oܬypMg%-&3,;9A8V/4 d\3-nP*FãB @rg}I}e.J>ޠ[=<,u KhR\q۳16zGFwnXA'zmy;g"m>Qr8ҲbNI v\i`Fyf?-D(7Ą3n`ĂwU)eXf 9A f* o Mo`8M<2u!caF1Lvޣ [K4Inbf`0m+G|}M \!}62ĂpRJkv-($XX># zU gXi]Ж9fǹ>zHE;*Q$d+$A2jkI,6[t9HOr998530Q]7O&yi/$FVS؂0EA76[3"lwl0. j$m**@۞$9OA4*1>œa#YXQUP+)JP괥)JR)JR)JR)JR)JR)JW%T2q횇jɬBeDd,2k ާR)JRl΂Nnq횉^bQHY2vdbTA'<*})JRR* Pn +yUP=GSM<ąKlXxI5sN7cxvH6jZZ\ <•Q%*)_~P$XlOUՍ?L9 ge$* 9&$`#ʲ|~[@sY#5+K`5F$!1=jJTMOQM*tvTm8 Z-p-tIQ8Cגs$cW sNVt)FFF +jsFFFܨpARr0EO)JR"¬p $rMcoܶƍ]A88VN)JR)JR[dR@Qܞڮ2C,hJvm$yrFMM[y6Df< }\)JP괥)JR)JR)JR)JR)JR$eK}InR9ehA;x .Ol汖ͬ;qBU|ziu\>!LJꬤF qHpO]׬ qpm0OM\0v]xkӭשY|LI&AǙN; +jz4Y;Rcq" d`fֲ1^g˓SCԦ7HduH"6vL)V3 Wkj_Mv|,P Yܩ#q$ɫ{\TIY .<>M.'PMYzo,H;I\@<{?$y#O &زヂ39gNu+{I4 @9Uvy9ҷQuW;I'`8`G`n5ӴŔ[5v)W`7q1V=bk)i|m,GlۈWuG-E& Po/`qǯ˥qsi 1tht;[בX H._źEfv팮;2W p{ߵzKJ+DK&X?UGķqmI캁d`ebⲚU׎9pyDaq#|Kl.$#$d+Jwtd׵D|9۸;@@luz۰>Eaϵ/4+ho%³*G +Y6ARNG~yח(R@d +`Fѷ=2jڅ5)%dNQeI>y $BX_8#$F3c/ME4|([&SLk>-MI;BLNA +;keJ($'ꬥq(1&vk[ +R2zU,\-lK4FpIS#zSA?,CvWau9\ U}+3M:-Dtlg`AlJwpuw2nU|V:jWMvKX\j#q]>K9tƒ]&cڡM (@#^kOe-[vu+ [FMխpZzԠtb=>Y]RK;< i^&M&6e90VW]}cɑ@Old /Kis$'sqmhUw.`}86򮩪;]ɵocʑ ++Gozq5b0Vb~8;{p0~踽c\-lѦnmA'd _BIILi1K*;\S:˭>Mk(&JI*x>۳Vtk(c4W2M t}՗hSn1QOP蛔jޒ 7G"mw{iCpPrK%PűI*K 0On*~"m~{Kx M`p ;A]FY?*iRJZ l.GF62=d|i[2nUWh1m {k3Zn4..M؊YI*Áqjy5ݾٴȈ&w(䜞xZIG%=H-Vx +V\m${ +>x4&e-6&oN;bp2kY~LZvDi!C/'9ֽj/vCIqLb00jZi̱mU8}sT ko t@A NN8*3p14q\an4K:4n2H`mm܁-&@s˸wqaoù&XQ6h& kTYLHmVHswV h0F2ijrI5^Չ#vI\|~Eegmn" +UJ e=$OzKy-g}&\$ŷ wseaB>l}2{׸t9`'tcPǹ]ǿ|*f)$/c=^.5})D2&]WpbqYKoǺ[qBWj#<4vܴP ( zp2ONl:[6ݹ,9s? !iMәAa֭r^HR 98:"I +rޒ8b]f3{6p&.;+e䯙AykXdkb[ǢZg$$W1<ҟ$Rn+D#ș*Asb(uF-J5`#wg!9'G-Phx0dGכm[io%[RߛO++}>K{[hf jMrm*`0 {g+%ek4;yzb=rq$k vۚ؍]ّO56Ik⼺Nѫt@`ܒX3`)Ri2!i򼬥F F{.1V_,=&+Y P.&|ğCGq&`H"FwKͲ29߽yM3](Y&.Ъ 3|k&{ Z[\ԉ#X]v"6э1g8~ķr,nI]FGo9Á칬\)hՕ\(pQN28r0yZ2JI.p$lmڨvP sd㟧m,OA==Mlbx}Arc B.8>tpV;-2 (|=1QKh U[= k8yBʃR7 o +v}R[[VVF0(|sQi$Y\ #Xcsw@ri 0Kybx1tP>Ioj1o7Fb4wI"BOac5#VGuۛi/$2k֝6of3İqGr{R;aF{6,sqeqiT%FeCJlpNH8f? w &23+;820F>Wf?MsU »ٜl(=k%ag=g:h_O iR FObjL/.KoĄ->A!ڲVvc pGƊ=*)JP괥)JR)JR)JR)JR)JR,nRF=G(0U78Aڲfڤ;BOB%H`9.)Ph,fKFvR`Z*)JVե_lsMnp[GwKGPFAW)JWp2qVn/hWUi_jq*9 X!\!G +su>ƮbI\GwKGPrJw}u'c]ʻc2}^Z, +3TII[GwKGPr< XmVolLљl8?ZJ5m<]mHAnjj P;}jjAR0ᔏBmҪ\+ *dsSAV)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JRn+Xwsj7S$5HFP*%Nsmis[j[~"p{m`wӜijA(;!\D7ҨSay9A#4, Fov*Xcjߕ$c B$g 8*S'Wu\i+ 188>ùTvn\Hljw d78?C\h XB)&Y`ߚ8,Plt2~ږ:Uu98ʂTM:f(lNOr9WK.;Y#Pː Xa3ǾJ.H% pPNCzr1Zk[YbUNYo(e, E +1@u>|dFs3^ĆO^|I3!p˓* +JY..PxbǾjrBbv7.ldN@[j0u ;X&>p' {,qq.I7=i 3@aYy+nf{sYI#&Hܤdw֯T 1,p56rElR,E3F|p${8'tMHO-' +)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JRjӸPUx'$)|p5ZF$Ǯer@ Vdw:"w+ BP0q[P. =pЋ'c{皢v .$!gӀţ).Xn{"Et,DI  Īp1O&kzB7m38{T_W:ݽEv#,.9뿇aibBb3pu=II @29Zv.eo)8(pqElH@`f{% Ki|`Q 8<}5 1-dtf,q#%Gҽxʢ‹]T#UEҮˋ, %n$:JYvɀ@r ^jfߥ4$xw18=ƙ,WخG$nHW +IF .Hj_I!v@ʌwjJl/ !$#vx5i<,-L&L(J8!r@KҮuYnYbl*fEG!Kd$nIdT+B ~nGwBMԭ"|RQcsǭY×VZj+X0۝76T=p}*ևyuZ F`Xj}_]՟Pτ*a'sڢ.)Lȧ +ZQ.n#jnwY^M-Dbԍ3I[癐ܦL!9CX0x\}*>j:L+V'[t`uVA^yxrZY!>}ҥXWp88'{T١Ԯݾ84ecȄV|)!;Ttk! qvwڹcnw^'g,%i +r嶀AlU:z!mě/+cV-Ρ .&8Hѝ o¡pl3ENޥ푚Q/Vϧd#P1OT`Z;earM11UuFG$f8inHD_L.9I*BqV^DIU-1w8Ͻ wh]T]ۂr3zFEP0a@^s%W8>vRK,* `O1JRU%‚j<7nmvwTڴ4ʩepV#>>pjy45Z`*B{iV6iX\@"oSXӠU^D%h!}*u-;w  S ] մ309,Tuw@ H~$ԪV>>uLddv( mT08$NnA]7YF0I;ij2"BY>ۼMdwzV>.يvL>{F+_՞]KRMY$)ffF*N[ꗶbܸuP@8^sɫ4ZmX)BI< w`9h,gۃRt{5~%INݾoqSwP.^!)Ld*>#bR]1 0w ![?y/,_xlT*Mmp6`,vsP쭢ԤFiq"2v +Fݽ12^_0wxz3gvH#q֣Z^I^"&=>K+6C9>9~xzץq2$$\FXJvɨ89Kgєd jZ봋 ?5rUG+~`f!r緥CՕƯ--32vDwppI$ ^j:g|Lk*#s[2iA "@m%Hj6i>܈ѱC%VUWQӥ e BF@--DV.ۈdc +q܅kzŤW:r.anW88{Z@]bx@2qS@ LQ& $s[ndfTdFp5t肑Cs}hR3t#|)Q!p9z8öW|"`E.6 %\gpV*妏4WP6xad9J<ɕr.HwdgҰi46&w,H!kf\]݌sc*3f#V#JGL)cf0,>l1sW7w֑`/4saQcW@7!=jhwVWLF !* 002=YmFim/$Zwce|f)3`T<~hؐpF=DݜLe /t6 +Q{%mXxzK@fP@qZ Ƶf H]c=3p=jGvpiHdevNGcXy+9up쯓: $sY䳏Nխk%JF+yXt Z wý]J5*5+++4CKIBB[8?YS1K|^$[hdA14,O UؤG2)2= ︣b3ZqƝyRًBbV;X@x4 +\utC^c;qk-ulmeZidI[$X'ܠ]55fU Ƒ`R#͑N4K?{T wOծqthѢLv#֏Z!.70G m ;I[-Dt  +! GgU~I':\Dڪ4䪕7r=vZϧ\u&Y`{@>B-gTc;m>VLs\fXo,wsȬOj֒F8.KfCqE4K4{nIpK䜒͜}I4mѭפq`B;`rzjֱ=' i%, +cЀqq7FO@]c8|qڮKK#S *̛n +@n8ҽie6F !Ab{q8J}c A:Fe\lekW8 +ycO  V=8ܦ;Ϟ<ēge}8sŘ,ēǽzK)Uj6i +V!93ՈҬ-YwBuo!fn#AlYjR=>>۹,rplO`YUȡFC%X,=ŀ>kwS\Y dm9MLhvl\)sbjRVW,qw>]cvCgefVGVR=#VODgNzBʨdzC.>g֤+iVT\~XvvRpxk7P+)A !;v_D̻#XYY[sg%y]ĖǦIǥQ|9,*XFRTsc>~]&{$hF_)iJR괥)JR)JR)JR)JR)JRꚗT4J#Km$$j"jvv03v]!T*K0+"mpG>Y)4Q6gHIݴ|#ՒZkTՊp XY:u2,BPG$*5鰵)Aq 4j>MpG&6pO)Vn6CQpOZ/M&Q 6F7?8TsU)JUV#Hgՙ%[|[K4rm2c1bՍVi5<9d2+1O^][RI1&ncmzR+_RǍ0}f+ sYxWmD]P%Xo@v sG).Vѳu0Ai9Nr* ӵ0F["4T ~ȯ:utk^@[2c)V4",(!qmxVmRb/ 03=&Z.bwcs+2#]ۓ}3PXk0}E'a!G~Ր*7 >;\UR_g"tF\#g*s +YP v`vD&ےAۂ~L iP%e i+-Q}P$^wd[g2>&*Vz=rp>q^n.>Ă'`( oer*[D@-Ҕ)Jr$Jr= WJR)@괥)JR)JR)JR)JR)JR:[K#G!tH=x=c SѯmKD^Tp;x #"ݗ^M*.$x9@L7jsi=O)BQ +H eqs-6ӺK$3['[y(6(8 +KQq;._#|cV|O6|0N]V:-X}{Tyd^HXv,Cv ;{X95hmy'Vd!-GbvcP#9"jvͯ[Hf+\RvD7s5#P~P#` \[uzuіY\<#5Q)'lVS5x=EtڅV8@ $2qJͭ\irL%tR[b@2FK/ O>Ƕ+?3&mg3؂ǨybtNky-"3CHնU`.0;cB鹗*yScZfs-G u,-br-FiceviJY@vx[,5ܬ ԮA @$Ki(TF}kiuLLlPk|¡[\>M!0az{,e02mO-uxa[6x̒$sy=^o//t]!uiepJ+27` ԻoGp:g#b=cX.APkki. +̡YFnj-ֽl4'cV@6sϾLk:34R>ٌx¸cbu]R;^I+D2vÐ2r9jzTaߙ8m,2˒GnxVRkMy".Ѱ.V#=a4BkmIp$ڦYBHnI>hse1NHdPC; 2x ]KP7D\,1ayDj7VeXŽ8ygR7nрI> TM1g;'l>?iv?N{Z̲_šdq"G^ KS$6`tQm^i6/lrHms^<bD$\ Wm6[ 浟~rM#/eAeb`s +وj67wiNcu.# f%aOh%Eo&BgG{Nxm͹_p^&-~XL3_ܷz6o!&ddy$鴅QMD?岒)u+yVGi7@Xz`;bŜWޫsAG!Y@29RͬvY^[߰$$Gᓊol,%lB ]Y:GpG~כ\3s*R0(N yz wYmgDpF6pCy{wY]Rim1Rg 1Y#b.A]-eXݥB! ()%rہk\j2hW !%،}A )Bxе uo!pLC˫a :UՀ/eU!eDٓ;*q4kHյI^yT%Rp=8I.TO$֝6ww M&tuKeSUNeyV$e>ܐsT)JP괥)JR)JR)JR)JR)JRZ<:./#*J#Mxі)yw@ |"GhE&\I$dqǥzo@a )@ߝN6q8 ^bgydRWV_Vo5t '&*&EF#p<> + Aq Q4~jC"p˸TIsگ.ƖV9+m؞}*+xF4ehcܠDw)VC!U.( Tc|oCxlwCYdA^DK~n.: +Pߔbfx^qv%gE @Wn1ARm y&fPEld gԛ(u$"e=5DXfpUJ#iTd['BF$14K0S1 q*hqƽYeY.aҼJ$}C{hmg/+;m7'qu olðIm4 yNHޮ\hiu54H6XpskEmq=Wi(8U`($9xJ)g$oU1@``; *<3I*ؕuawTZ="<'~[p'QxmEMs4,oIERBeմwI $FV~?a(y-̾MW(TwdsKAwW8ݔv'9W4"-$H"g"IZF Cyؖf=Iښ:K`!NieicIwpi1`O9l 䟦'SapJ> ؂ȓ]M,&@bU|ePܜdRFC WT_ [IOAC!aB8lc$`V[{}%1b@=RHedpXA"sxJsfpTAl q*d$sx^`p ls9.˺!=Ѵm yQX!(bbߜB! &X縖C*بmԁ^M62"0یoCޭ4'&wڥSqS#QVG4퍔V^e7ysg ܟ^t|pT;#r.= ^ B.H(h)N}G;g[c$#waCo,p ]6!9I H r<2?-둎OzF[gS+)(PP$;sQ+kmd;d@2#`ہV +1 n*mdgW *qMSKU)Tq]>VT%&.Y$7+9PI y^!G}Y%X4yyN*uw$FVX:-,3B(!62p;؊"(qX41mqqrԝ@rvx*kޑǣ#2Ðf%|𫚝*+wq`vc+$3jχ4Ҵ-|K?>YRH;5"Y%B"LN@I$>T=;ᙤFFKPvHP?zd:])pw+) y4";ibW˝A {Wt"&[.:$0qث'TZۥ\L([;+{H~*!\#kx-ieU-&ϔ'#<ߩ1!!3g9 +Cksh,ܻ|b~<[K<-nP@Ro FUyaff(ʄb9e봏~zBxHېah‚RA*pAсw71"K;UH1:XIRi%yZ5eB|c$ikkpA#5H,Ȭ0PQ +aϯ֯nnn7t1g;p+"`=k -8z@2yV*x<*P&_ŧ@3#El/`z +UWS<^]1 r'?zvGfehUgiȶPI +H lqW 7]7U p;[I-^J0|UpOaWM0^ܕݳ7QfVS+))ZҔ77Y[hrIrOU-/aM6FH<AE^6XI67c3je+Wq8!(K*XȼSipKW$ng\2<aܤ + F zOA%ċU JR괥)JR)JR)JR)JR)JR) %'ydUIrB yyUntkXYcNM@'*#q] jxtq=6FC3Jk7RAy`@bWLnrTFjh^4W Dx|pA~5u'A[1_%SpW;yO'i>s{%}cY:;P.WNj߉o *fgbES{HOJ5;GxKg׍°'Ԃw`8"L3Z%Σf +$=y~/h{ׅ²HrFgP5D_ ݋G?v!@ du;9t՘#-$[TPݟ66xZֿu="2*nrJب$c>= gX:EWحED2O\~kF//]/ۡU?5::pD+(ClX&3KjIB vP=Q#++I}UcTk 4T`yd9 w8cH."̪ <ݹ`6=}kխȏY`1H 1P'G"+tuͰޛ=<{ G+^wVdm\䒩in$+.c5Be{A,x$p=7%ޓ5Ȳ U6*Y@8#G>F [^!zm qvҶ1XMcS1G +ts8%X6@V3[,d]d6W9gבSo:EƧ=6EQDiu.@,@9{ꏭY%Ӡ] I vP<jvB*HϽk*W҉1c󝭹$;~b + I)B."J!+z5;t,TP̋$RXf|TF dDc̿('<}lƥqLF-c}h|E$ a:CH QܞNp+-_KڤDbs2G*J3ӌSkW7u)mQ1vB-a߶8|,G H<&{nPLE0 M %FkaQ`dw5)VDF3,Ƥ.v2I8 wB[1Z\"-O 9FE]bx ܜr*͕iג$4O$2*ѓsr3Ag9M}I8y#5W쟤Hr^9]׬ b04ac9OKkfU +k;6AcC5+ˍBaQk.rwd1Ny7VMH] +ȍX \%F 8(*A;U^M#JrFIg +rxԸuYWFBT99* +xU[UcOTI8j躗 Odp%+.N1++J<{!6JqoMH?F+eU k:ioo:d@uUo*@lU5KO71&@ct$Sq 0p{~\_#WCdu&!>n޾.]FPe[,}I wjQ'><Gҕ+tFGzYj77:l`8`[cMʆ@2#XN=K_Ӻ#P3F=Q̐wFUdqr6 QvzJ`=^#]~QcU@\|\n> 21\׏ |Day`͌fXs圊$ +*(;(xѺ! a&ԐB/n>A\^O |;Ƒ+*+{$pהX+e- h3XQGfX:HԬ #"L` /+sVZ$HP[s$=qVҺ噿9wwd=jbI2Fr +A^>sNV.L$Lq9]@U^r"/fkyyR6mpW`+fT]VjsڳDH73X/nl--BeUjK'9ϵzWOİh*wT1pI9wYc13v f@`˒1jZL *OK +=@*sOKxᘳ02[{ UJ+a+h񣜍sQ|5͢YGg+F% +#Զy'+-X 1ܕ-ӤQ6?&Zt4lCt.N׍+CNw0S+%*m?(۟Zb-u|-|#,鹊CYh6w4ldeQ? XDeH m*NiI +.}j]^#$x;R9cިtK,VT)own2:Xmې}Yi֏}.K8|y©\sxjNYe4lE@W 9UlWF57&&` n2㜊 II"|8EÎ+-n$h%`w0A8&T-cIZ{iCX) 6:Ǩ۟3ڭO6z"fOET o6@{O7K⤃KH 1`*'wmau-&U^sJ:UԷv- Z9 ރhuesڗ=͍.HF r9;ݫbIͭZXs!f`[8Œg$cw:E$h)R A>#h."bW\ҽYWB j~GLY]pS1#"xe;*"F6@r*Pץ{eIg+qF {-<@CoMBcӚoaV_Xʹs-` +^]yuIzd@nAzoV3۬K +%*1BH AY$XIk i]  2b@@pk&kXDFɰʌc<ҭ\xXޫmJGlw=DZMO[s#vK+T@#c5"SXS )wcN3{ B}yEsv.F9$@LW! f."Y*#mܪ@9 G6roR +J2Np`xG=B Um+h˙T+])JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR1Yۍg.~!1]OnfU;iZPFwȾl'ܚ75k]FGKF2m`p!s 8gqt) :A-J8sǨZj:uB >h18b8>l6Z ^`KX%+YؾHJ m8>χΩ=&ޞөJqyW4} ۫Y#I!F|+ $lzQcuHT5ZhǕ +)0^xQ5 $"DUFAHm9nBv?xYKYGf{LJ3u1;=jy"Cg9fV.[n0'cc>{k*ƒKznS]i) y'YCRʬ9[qYEV)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR][."I8– H`JYcUn :6;cg8=GڠNG Ͳ@aT1cF `~=[lu|<`w sY{Kf#6Qy+ީE۴TQfbTrH ,t=%[v0r09>[ۥ(~v].A$Cgu$Od4s>#( p1)⨥pi0TY`21 ߌ +-jL![z3s؊OejnჅ ʌ'8O{UI1&P܆!NA P=[YfIW5ls+Ưݭqc&qޞG;w5DYK6Fs3k)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR^%GvexǸEiߕ؇{yh# 2 *uSy0Y]ŔsTKmsw,yR\bz%34U" (T|=֢W@Э"d2HvdOAIL-]KrP q&yҥC]\߈cdF6x{R,twk۫~HBƊ}X$J'/`*ռYCz–Ѥh0@XrY峺w2m75Qܻ$`V3j-*MZ %X 8q{ouI&۬:1fWm`H='T}FZH Z!|b>z-f:RŠEc.y^;V?N[[X6ygW & _ M>}mn#! PG;S/uMNB < eY:*.d{dzZnmEDp s^m4"hUdHרe @+*68C5ʯuL8^1VJoaT} 'rpJ99B)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JRjŝv)Ӌ!71 .h;X`8W=+*)bҔ)JRU*)U`S*)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JiU)JR)TV)JRS4ZR)JR)JR)JR)JR)JR)JR)JR)JP괥)JR)JR)JR)JR)JR%څvT K"<'g5DLeI =f(v5gZkT@ +y<{ 5rf f=EYdxY +^l=I<3L%YrC'#.Y FI[aUcZyHcof *JN;ޙq`s,(3ѮJ$n}3W`!2 +UvA?nxQt۪2?rG=@ݵ1gv9`Ǯ*dսī,]7 uʖ8E.5 \H:̧1$0?J[xO&8YЬ }zuCk y +pxW/"f# ?o=EB+5y#fꄌg)n1Eb'5rc X-2cfV d{+p =Xo6 +#tKEe< psX M&Nd **N}=q[ʻFklzOsWlaf#g}x"jZv`4]8w'O[6&G 2R<>ͭI#̱nQes7ԙ58"و~cdziJ@#ZGu*.6O#X g5Kw\@Iq^x2@kP]`D}IGA#$~qkYTp.aG8ZN䁏5f?Xt}; ǭ_4e`Dhr{Uc 1a`bBNkorls7L8EؕxO.S8&j[cû*`_hpp;ԋk"I;2pFA\k_C7L8Er8=j֛<<Ѫ]FDG-*GGj&0!(I<~]=9UG+Bݸ01F+~!nw1< (ʤd6z޽[1\:dfAݕHǨ#9xx%%'l|3䍿/Σo0:QfFEmIN #PV$XBP69' U˶3ae1mC0*펧&CсWBFFTǵ^7V +[Mj~dbdSRpyrv@7Ɏcrs}N8S72Zh3F#}Ofr>Y$V unYcP 8Sr0y֯B,yOn8|V\c$zԫvm.$u,F)G]O9.ܷTm道{RV`GĐ";X20 εFEqA흠>ҫqZ[$2IUd%nP@x\bDA `ޭŬA+Fb]AF`L}DhĀ ^t{9Ȯ6Y^W@r~[mzT7p+;㟷" YvwOGX(m8׎ J̑7y  5pkVwD]q#dz^6R[%Z7"0F;؜ ;UKMꛉrR8nԐ2'$qR-xwOr27d{s+z3my +$H~~ǜFd @\Ǵ_loٰN}pp{7,b229$R99l/$q$!c}vvi89#d $/lzm^ GH 'qvx3*zb ]9|Zxkk3u s2.F;y'JxYL]F)MqWuD8ad+kV A6]~&bbHh@lcU׭4VmR}qR4BN2S;TR괥)JR)JR)JR)JR)JR6i$q(#AI?AZ5g~42*pۑA;Ǒ{ߚx"(gzbKGV_\J8''Kc2)*{#$~v>7-&w h芈K>Jby!Hp@0]¨s?Ӭ-#CzܘIW&P1an| 7^3c4BiYĆ8'9Pbִo'd7y"`Ǣ}d,ĭT +HKe=PYaA 4hxdٲ23Xm>y{1XO2s;cROS"HcE.'ڽXS'}==qU&jή۲2px㿦k +ʞ[#vb1_Im'k$mZWP䏨La pq޳:VaVW.w9bw#q9Ǧk&g#*3*FX rHx RMkoJMѤfG9l[—RZf00Ol 6I [&e_y&~qsҦtY/;{XU^=Q#(R6쌎С(Y^W|%f\Fg{qk{k,}NqF;r5`vr8[n0x]'/8 0;ԔΩ2?Dp("(H# ZtsHyTuwoqh*O٫֚-n>dK"c~]Tw +$V]\Lc #md[XH~mA X0AEaYzZv1,nV`%AqH%]3Z{h!8se5hx%3ꜨSsڳMwO*`[])aS'L-oZk^Ddf1nȲF`I'H$ޣYͪM"VSq+2# C Ou$јNF`-)G99înwIq m!Ye FݼOzobזu[V2.S GX:}Ռ$}yW[,gGl. m*t +#I$zc4ɣ;d0 3HIT!ԛJC6g1q"BrGu[Z[XP& W88+^.t+ ts̤09=^-fUc prI'w~EXq;5oV-s:]e*b߬>*TfUTlmbx9^D)OxmwOAvܙP wRai;)*rr[-odxYQsgV?LmF-ij<@8<l8" H?İZg<yjuFgb1~R9eմkHFrGc;MtEQ1@;{Tb{Xc]GL=6=2ƨy@d~+j._vܛ#x&5B>/I/[oLLXᶒsnGj)4[ }IRڱz԰J⬭w t[G㊕gqU? YѴW(%Ja|;۾A"ci#B(ޡzm|+Kh8 gRd޲4:],k4v6ƍT9āXgecQ. #~v[t /@>汐]u#-A` Tq#zm2|9pt]s֥_$!DwPȧ$.޽JdϓD\Ksc s[kv3 " ȼ@uokw%m1v.k/mg2ybSlBǻ$7rH֓q~ˌ$#?zj+ iu~t!;+lauDT4pn^ V0N-_m8-D_3՚ӵ5h 8wU/k:$Ǧ{vw1\ߚu}[[k=v@CV"6H-4TRs'5-O{Br#iFO \vYV+ >}^?".('ghx}G]CF0}+;+h݂~sX_÷Kb̓J8U C8<~5`-n&qfV,@F;k-[0%H@$~5jH#JI27;Kdێ3Uz3sn~ՙ-ZKyQ~kW]Oöym! jܽ+skGud- y"!ǮkC܆E=Pr`S$6 2TpGzҵ2/yUYc]>P@BzQY +6$v{R񷉶/dd8\Eu>vNݧ |# UIۑc$xg3T$ + ykxOdHK] \)29bwqڥ2XF3nlFC/ϥRIcԧUZZ:Da<`Gsa,u᥍z2Ffv)+~SYUK4H02UN8VpϽg)JR)JR)JR(괥)JR)JR)JR)JR)JRTqTGj88נzU:j m$N9 vzTxcJ2S?T"Uq+MxqێA av]TXqnq8W5DcP UYC >@p3gת"E($Iv98d^*~P9V,1q'Z5cAVE vW+MO5l^;p=5Ƭ*= qT@` +bm9[qq^j Oҭ^nmqgJVPp|fWaqXg8`A),8d~fD,͍f8$Gc SAm*ZČ0[<i5>7$1#*૲Eq[+C`5bT1#JGc%RƬPJ^p4QU"1IEC+8AƱ ¢Q;y#dޠq7UgM~ѻ5bOkٛBM82}9ǩǵNRVV̱r0\( ~-/9ϔs#aF}?*Vͬ&A1wF=wz0Ux;3kZ#Uf( ~wD#P[!@'}j[)XPq4 "p0F[2tVШ#U)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JRB@U)JR)JR)JR@sURJR)JRSuVS45ZR)JR)JRN(j*Ҕ)@괥)JR)JR)JR)JR)JR^ܭ/+rg}IX Z门Af <{dR7T2If9n<(v<~B:֧5L .ۈ.{{Ɨ7QCm l["awH=ŽqYE'sjw ZM܉b\fR"y,zq-M +Ɗѱ~( zjF;97 Il]rRHJcARH;RId>uqy +9aqY{)HF ƌ@7(5!|L0?JkRE[K$(DzđQgDxn^c|AZ䎣e asﷶ}{ԍx/S*4o?QA'ڲ4+`y]¢kX~NA9ǭJ3F##+R?$YZRk^KgdIJ`@>?pPl.߯-/Vo8 gֲu6Fw< +63\ }*W6v}[LlHղ3F ī+`fS{U +k&º07)T'kW:oJŮȒi'cc!E_xlGxwK -7#>oN*G5PAw6t)UA rMXTcep+9JRIo.#JD|OԹٖ6(@mnrFq5  AD!+F2U8͵]Ēr}A_^:AE#`X_C;qCKdC7o4#쀏?Jfk70 +wʧ>=Z2`>k)^w +AkT0]969Ռտ#ܑ+"޻ǘ'ǽFIMJɿ,Iܻ1=RKߊX=j?ӮQB}Jd8df)JP괥)JR)JR)JR)JR)JR0~Oi[ ٦#DeQ#dF-wq۷5n[L1FRŻ`yAbBp8d#m+ɱl?lnkR[>"F{-ĕ+gӅCޥ]aO;s,ӵXkZ0wՂǻgʫmIzFӦ D ĩ=;cI'Jbk7{-7}9qd@N ۮVߊ?m[Gjފۡ>knlax+s&ԶX.J[kyPXv屃9tˡ:,HۤIUаl (@!9ҳ~VF^€=I1FU0MHZi}0"YAPz鑁Y+$S8Uwi oNϯl=kē2ruI +ب@蒬̽E72ރӵecۿ_?][!~?Y B49$|K~q9kUƺpT1`;9bXZ2Va 6Ir8q,{nk5Zψ5]WMw O+2 W`#NGqMm01`#<\X YO#9]WqT)2mv)q$[yRC_!1AQsu_sOEsH:oRb=4׽L+R,ŃH^ `yDH S6ڲ;$7YA_ Pӌ zjcdH>RJJ6f(JF8##X+I -fHQe,Mesަ.]RQʻ!ekwfSTT*?.a`Ki Wg[h7F@ VUT}0"$IxV@9'k0&Fr+bE{)X-jzMn#^g5H5on!3 ꤏ1=sڥx Y2j.s'p2!F9NN8Zs+V$+ *uI8n{1Xy+c~)渑[dU v c=komo`Q$i!w;SUV킚UII@S5R]1q<ݣ,FpC;@ⵯۡ{~.5YyEJ;k'e4rƬ΢1H/ߧ53OC;V):wo`#P蠯%~aYHţ$D.3s+qM 7JB<ǥwnr={qZ{;wsh"b}@IuԴJUym-_k0F7S"#b889fe@x@3`ҥҔ(괥)JR)JR)JR)JR)JR^ڭ/ a߾p*,6Q_D +Rr$\vzpiVȓTjX$ϩugI%aI<L^~}c o8iOuw9K!{*ƁT~sWy7eAWOzGs4+3>aeU;t@FI<$ؒ}OӵYҬ߭4O/Qh +?@~RPo4[K pY_nR>}NTq6h1u$R!#d{m)Y-XՎH\8q>&-:\GI-$Cߣ3id[:288z(P* IdRMFѸʲampt6d ) >r- +  #**R}HMfחJ퇑n{*>s"ڄS݄Ty[H#dY-J=J[i3D*H3؏zm['6FvFaNsܪ|OfE |CT]" /'dJ}a'@0aG9CZ[H¶8;HL2kmǻcnCe Pjb`kf4nۘ1g,ޅ[kƉis$2I-:m1{qz-l{ $$9dL8Z}f1,LdX{^t9=\,czTr` +IlW} +A$hFJ19T$qy=ʑ ;cBOvbI+ |ga:[ֿ-TbOh6s, ${n.a Ӱϧ=ݤxA}I'ޕSum q$(n qAV3:Iq5a,[[TRǦŗ2A+.0G;,j$uUgBH)X-^P1e9qɎO%OR.4{gdk̪㷘)NfȘ,R=˒I^\Y D+xXTec."0Y)Qٛk` dw튟ch["`T{&.I#">QUEhU6vp<[-2pli +=6VX`*W*cxn$A$g֧[%kkT`I5vziSCʤGj4[Qsb>b}I}jev10Q\5WaU$"5=NFwF2qCYih݅W7@9O8«JR괥)JR)JR)JR)JR)JRLUiJRNZR)^9dRpFH}* ^JU1UbT1UbJR)VefE%I*HF D3U +?AW)JU*)JR)JRPF@<ǚVA*PUr*ҕLUjZV)JR[O m;NJsOj)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@ +endstream endobj 25 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 9/Tabs/S/Type/Page>> endobj 26 0 obj <>stream +HWۊF=]7$h +ԥ.~7{ kdDdJ5ۻ/rkĉϯ>ӛݧ/A v܃~OBai^qI3 +W8MUYxqg2|V*/}9@j&Om9/ +G៯^>8n{19HqZobxPIjx݂[br78')~ݒu!ƤZ¨! [U,-V/Rd9^Ŧ1?m?rwAΖY@+ʼnXaTq-qF# ɲԴ0@*ϸ+k"sȒKݲ +_+b!QϋunWĺQ|$w@!M8mjB[B' +{@WӀ7 +dV caHC\y_GV8jBwPq^,qc׶vdZrn9h;ma&5p#PK9\8}aq}VܼRRfH˸,J"L`f\q~K'sx3Y)6/-)A]!;W۳ްv!/> *S21ֽiOm)[|zdtcՋ1H_HI~,'x.O*H6!Q+Д[)>!ZpaKt9 WvyI$@J:ϷĿ[|63P)2e">o;"1u \wpD)$-Bi;3: wGQdy`(ˑI;9J\i sItZM g$h5e)dR}|L)LJCUi_g"v<&#HMQ +MA[eV8Y31_`܅eIe5tukڳ[c\3٥EWty Fˆ!:[ XQ푥iB8$YHbG1%jXb֑qO +ZͦMB' ewVE0ٱ;s4bUGi,\]>QeE,(ԍLvA݅%f!;e] VGTu+XOF!ֳe_Vvۓ Z֍ 㳦蚒2 ?|zOow<\?\~ky.W1H'Nʨ a}j#G譐}Ϟnz.O~?S|%p~q|뻾p@]&Բ".V[\|J0_]_Α%JF:ڜ_h#r+<-!c4sTb؄0FX9H1sƌqHݯ -K>E{`ԑȑJ4$n?,'j1{c +gw-ԥhvbbnI9n쀕g?86.bsy9g׈ԣJѰ[[Y K1r| HG Q s..Mqc5^&Ml@BnDD!**t뗀 :C>܁b epKV\#suX2J|wK|yXo<ŦcZQ#J곑Q "h9eǝRv +J˿n7XOU-qelƾP+R82?DEGܖKӿϿxkiέHO %7 z=v $1+4PXc{RFg.ʭ=aPiGLOã^ YE_ DSC H@05{wTG.> جqVLtMWF1Yc\6㛝d qx3`7m`]KM5 c̄ydT#f3_?ٝF7FB~^J 6,ks N|\(wɝjȢ\'#E1ޑOG7I6;:yEoS.5^lՓ%ID5frZP2D*v.pas!OPA9>\I(ИB"4j׽I?]v +ATt>4̾T*Si}Dj]"Zwվ,;'ʅEE)Xt oemգ'P=Z%z G@/@tVԯp<$-Q`>U+/CՒeRk:נ)E[<-:ڀ2wo(mc x\jF 0yʴ"ٝ'2Ec[aFOZtX9b5·52kFqv85cuu鎳KUco.2lEFUT 2ԓ]cފݜ@1w4Iaٱ#EfajFqI|Bh0I$b&Nͬ~zR\‚}>&!ث1D:Гp@m7g]K{egƗ^ÌCj J'viXNM&a*y D;V j8&.{9$tǪsGM%؄ͪ/Uh,D0S4RIiAi&.rBo{$ِܣdnjИ7L(5Hlx]*T(*8͊g5`ҾȭH0=QVA'"= .ݴ38FJ% q8MmoH.h9M؏& Az `AE1 5hwǓ:ҳ S%S"苟7NWX,l#?g&-8(b Gy1&aОE*UEƟuK߯wrqa[٦q)iPô0zSVCğNH +endstream endobj 27 0 obj <>stream +0 +@& +zW@|AlJHPt0O=ZKڎĊ;fUw(R 8}"% >zvdAezE+>1[ѱ%bѵ;RgcT^@4u#:<*tS&I8=] ȨBOTn0a'ڡucHlǂJbWmcvԜ]-G&q,nςn]l5vf^!4.^k5DS$$2c~pcPȆhod q \T[<6jaX 4Kwsq^p+Qee|LhduS;%)l5`U1`άQn"#O.6 PXٿ+6N9 4c4U.aTO1auu}K!SOxw?ۨ&X$^>څz<Ĕ$Ҷ3|_zoq)hu2iBLPH)SJԭg/l+CVU%zm]%Yب:'.18=ښlCX +=D/h؈C7CXzKG{oR?x$\]U7-S)1r#n+aȳuPJ˟t:dB9<빈T[\}R?WmP Q~Y!!dIZ~MkuHO1"Zr>ΌR=g00P"_y'Li<AC?)ܮHSUI|u'B2t ph3w]NROv\"נpOg%nӫe#s:tg[0fCPW~<}!l< }M!正LU5 RU+6#"KeҵTn8pjmݭ7+92QvZ'=mvj&@ϬϨKS'ptF)._!MÍJ1J* :S u5}ES>8ڭԻܚ5PujOso?2*0Q ȸ͎NVy0,FzYr.oy1ln0t_/? hFež ZM4Fأw^sGbE[}.\ j9!pIdř"II GrCt)g &׵^-zzU)s=+l@cF^F~p:y#)mR [5.%3SX3~a8nųՌ;Jd$7S3i9i=* /}?J D {"| "& +B7OanCk9~sɻl1tNי|G_m#Gn?^סn]fk20S޶|ju'T/tAWXƹG̈́>Fם.Szw޶SRٱJ# +$? eq9=eB+X˿a&.` ufhd$+)ۍc (TZE|3)S0NfA]: z_ZSqQ#h`9S00EwS豈p–Ap ?sGk~=`.K؅5 , +\bǯKISƥJHu[ fz +ȗx*`tK|b%ǚ+^S]O.@aQfI +b⅛N!FD'Cm] TѲn2v9,IΜm/;;0i01 f9[l[p9]f4ha4^ Jdy\qdD_Xw}NIz:ǻ:b- ;^$N`Q{e`KX +menzϡ|}͜F/j ýг(+ F 88ʻT` ˯t!T+ PNǜ Y WwtUI%Lل}Ez1έ8Od=D" .v$B l'QR>[<$ R³=Tr;sIm\ub?w=Ȣ;]ZNힼ*<7!=~ر̞*az@),L"d:|3/ iLlɞ:Kcw_#0`I)A!0#Tq>U,92&s6,~l K[ )rsϚ=.\~bp={Ix,k_׎%ì7aOKWw,Pd$dSNPĬr*cbQ'ԧҽ QDTv{ 2EMJ\eęySt].RiL(؉0p]ScNcv,ױ; mc(* pHh[%i⠄xt s9p:!w9 ? T9չM`e.&9dVbIxLyC_~$ay?4OtGfVPǞenvn7= d(:J?)Ԇ<58Y׬@;|]W \AFtT,xLAhgwx,PvVԳ}za3yDbkhl=YlP-Ho$i:.41 힬 H3Y)!Ī7%,ڂ`鞀{@ꄛS(L3wnKH~ +bf 4Z(Ǩh@ V/nX41E̅%;I:yؗ3KPpvᏧ"@?2b}7'r Zŝhrc˖hf9mڍ:ƒɣV"#2VaR}ӔTU Us-q3;_D*Ge@O²2z2CvH+ޖkkq#ԡGX;ӗ_Y-O>Gjq+ 9;<tpm0Bhi,cUVVF ",TG1҅ر32@YoanP5*^d!pq\8G/)H"1x!7ëМ|HҎ-+0vnDZK?S" -C-_,j6Ԛ4umY;#HJvK2.h0٢I#"pms x䳼T_YJPҞ0\s( |`dIah̪ǥTR y0h[+`6VGIj%G$6\xJLS0I79GÿkT+fBP>a yfM6x栽aNd&?ݲ$#,( +TӫwEpiNe傊kGUΧX+l=ЃW +Z!e;fZ6PAksxi Yl Jۨh6H>rog<=i hFU׷'>y"a{ y^BS^!^{Kev@ث}uNeM& H-s(1)(^Ǔ +kp_<%'bBqekJ9~\"R$@1ư?0qR&Lz:4;̩s hc(^2vBlJ]w3+|`Vńrs/|Ur9uc[;wUZax;+M6jFAtBHjl>X9z9(w5,V&PZ8GKq `)$iWeoo֒43[9rvF"xt>܋ ϤZ>P[˔\YLgL~(=7,|zIy(6<3jiunvtۉw Kfͷmzo 0l+BРøś9 inpz2r4D PwC/4aϨO;Jg<+lꅇL'"kG*:g1pk۳Y$KľцqT>0v?|E?y= gض'h1u[j圉RS9m@B˟FKq*ؙ|NLa_ E֌2Wkdͫ;TFg,#jj`{zàf8 񩗾:­8sŬHS38Tb;Nd+)zBo2p:b:=vlp"(鮣pBEJ{X0\T{ "¸S0_BD8/iC9Zvd7ƙ0* \GQp4B`U+i uIKCvuw^֏4%.IQ#ϝ-7t]J\KM>k2Ur0͜d Kn_•R sY1jp-)E +P Wn&rX6LDUo7Z,̅m@lů:^L%4KSg B ؅S8b*oF=VA&;-C@#B ^4R!6g@Ti &:j)WH$jy:Νj 5D>S| J:Znf!4 XUZLBʿBOfp* *aKX)n!,18?B|n3c?V1<>5$VLW͂I|WGݔCҽR R%i]Ѣ]jlVǤddUEGOHEț +#Y!H4^l[+֐3nE$1`$|)A I&?ݷB1AMXRDT/LJŒ}"Ujr\ A˿P.ce.+2]ň!$_m8(,X: VʶIBEr;.w'ULxiq:Lr|}/a7ΌsIF.J0мy8*7Ϡ'bd|h]Fv0v5kn42W3Ϝl0cL\zA;Ȇ[<`լzXa`:KC2%BiVR`V =3tr1F')Aň+It8kv +{D*"7ɩAe@֤i,}@}DHm}y¦t{#%h fdߚyӚ2ˬ?P#g"!f@G*hY+r(q?Q{t19tkَώ`$"ݽP# +xʗ8yRcUe9$7x*raX?mbZ[=U+ęƞ碂%rNJ Ywۤ[xdt1bx@L VQmOwypK^Sc1mnjвgM6~§s+ ٛpW|'[3kCKh %N&btvGJAg?q ε!GØ9@ sW=7U)Op[r*h4rN G=OGY~TpwS՞DH"$? $ڴp] =7@/2 ?e6J\q^[WhdM%b/-ٶz&{_8|êb9}' C-»}bbXhVaI؂#0Cut 2DOh +sTX:.r!cc)Ś[df5xR'uQz$^?bDa -aL%41@ȐnӠI93,=2(Pga#r 0K^PA?N +3|N{MQYQl\Sw;eA2 ObLrS"uA ZW:`;WjţBGbmX|&]_BB6g[DwӃF=p3D̺YC&vBpuXMnI>Jq޷6]u^QsNU^6"i%+I38̷+BkSe`ҺV$f+2TDza5,D+ hނ]9x~~^{7iV0Xfa쬁2ȍf\8>T[\ _"DY\K1 ~gT|$mhg5[`uL<);ShS~ɞR,ilԻ?"Zz}] k0v|IO-~k?&`KG]kYb(\j"v./V[8Тs56=/(hH3 =8}&{d0*϶8 x~ dM +p3S6|Pae kp(k *wO˒BY388h@`=b5 (bUlzNje7X|_`{*Bs +Y LѨҵX}p/2z"_6d>]1L~)unuAdU#f0-;N.0DbQ |ۮP4($gO4*Os\(u$׃u+Y'*-*E)3'\ao+] Ƀp()b̑H+\5RA ڏT6]FU|)G9aK:1!!xLe50I{@=wd2՛a  =cEY*4 OԹG60ev\Z%ҫq~fs5=wXƿlYZh.ĵykx6Vݭc]U*jܥ4\?^/G7ztE>y(/HĀOԊ̜흖_ B9uNvYgkH޾+ c-AjMcAkrxv@ɆC?34xbiV$hdʃ_.{Zg;%;/ Ȓ5;}OqUl5E`qklCTpƯcq!'F Ռ@¼+T9%ilS?bw4[#7릨b:ɟvIDԓ-щ ʶ;u[E"c _x,^ӥriPlx;3| ~}z.|.> L8/+xK8,;)z(Hg|kSR`&l{ȣl#boNp@ݑb>Bԓ<͡șwFcLT(5D +XɊ+,"^2㛕B_Jķfԕ4 j/|Fr_θYȋkaͧ@W7,cY8.Qy}D@У<6A,~6eemL(F0Q-aW ҐaʕZ:fnќ«|4ۻ2E2 #W*S|pc~9-1Cd;h/>ԢM4;3?kl,&ۏÒ[zv3,)ǏxD^v0SmԾ\vnm:5P,8:—t[߫<~LJf +9= T2:U1qsL'eGKzD…3{TaNd"r!Jm>;E,8; VdR$DX\E KzM0e9! +Bboz8ӆxT6~ƊUթ̖ /ҋ|ļ0 5J5 y2kouI|VHXcӔ2LKg0R(9.P=a1^CSP}řz>qI*Qg![3M=ɎFi!]t+@sV>P~8wU+\Fr]4~LxI +dN?;=op f]X CΝ=CϜe&L$;ok\VQ[ʁ7,cuV!,f)PU0-a#Gҩ/(& U $OE ,3REO+JZ +Epj ]I;ꁃeI`%s* +GU\3WnG٥Hֽ@(x3B;Z1[o OgH +elg P88б?`S>AV8ڬ:QQ~V,jx!OR*ѳB 7"MT2H.$`/jƼ +5Qq#6"pbvku iuYWmX\;խ!] +| NL?%b +5*¨Q仿$ 3Pɟi,gz= Dx+ݕ$ORnIa!!LZֈ(wNGw4cQP[`!ˆΊWE+3|ݕ +xfʄѐyVB2WHRjOhOَi;3F_STJOghn"*(_l/U3v3،4dG}KдJ1oECLRC|ϰ6[p9Iҹ pb0BŞ4dA"`e$ |+ 'bMM!đ'ҭaA -xm⌣%17I2v2`&. -GEwjHJ5T^7 m,:@@L+)Zo#8Ys_l'Rݡg7W؄G +}JI:~0dAVr^cOTb-̿F )BA!g!{ ޙFº_\}g8 qSvm{tL[pRb*qɥDWaBЌrAģ +"cJ'VR"1l,\abIJrk#K jS^*khHD݂K3w2$sgtjb[}1Dsw-ٲ KI"]?fЁT\CkO)m?Rp-#™B`ii\!"6~*srb1 +ͯ% vʃ z8^yU.:Уm5c/ ,/skӺkDiڬ?r,?{ 3'L2F N "0<vxUo-: a.c; % @Ⱦx&עejlzEKGAM}OZk! !˺~׭\W*Y5BɈY]5^&.'SCG#|D>r3cCe(郀;h-r!e>v4ߘtc&blgAAz ahx}R )oب}"i ۽\? dzwJ,%"MZ0輾~p1Z2/HG@6x i]gу\g{2 Y5JВfe3#(P3H7E/ttTD3Q~ 2`4>!=D6[礯JV ᅪzR"< CjEq6+pc2АJ:Iމ7TqAb[Ct`"xTфN +;sqk/Ieom: ], 9L*/>"yQȓ]SuƖ2րˆwu~O2?O%aeF[Jih!B7},7?NXōq˻ /">)mq>YzG\sKz~%P<=oZXCXp&^xCU XdL{)Z8|B7(˭".6Pص>C,* >+%I%I"15el;q $i4)Ul j8BP͑_}Ĝ,'7^O3F,RK$51d!Nix96K2oMy~ŹN N<%X6/+vXm?CQ ), :YyZn[N}BPY pGw+2SO q »(뮋uK~yw1g +*g EabU-Vuyl\;uS+~YDb֝$"XJ=_JWR+Qu%cfUEZhyBJ"2R<9_̍%׭Xhmh盵GNoD 1U+dO:QaDF~. +$|HpHˊ%9,gANyB*ܾ`9azl7.V/QHf'|Ul{&SƷ^K|簪/f&d,HQmwMBD|숉jQe7/ӆˠ%k3֬iOC8b+z>sH)0[YGUcyz 'A-mH[Ѣri9*넏:"Rw۔#'+H+vYan&хCɈ1H#C1 %q|]tV q 9j)f s.jJBj5mBV=د_N1OnTRR%:籫3@< +LoF,t[V[+?{,@u/0.73gG{{Y:8 震nxl!!B2y꽺7'`ETp2? 7cEIy~6Z%W PN:B Xnxg%LʑY\ob\&WhHk{I s|GYNTX̍/e0bW5#*!XVP~"ɇ5Ɨu +eXWknq)aGm{/<ɦ,Su 1tZ-BhCi qQ7ݷ=E5 u2k ZhBQ̜`4ɐy?02վp<5z<"݇:4m -`󫲉EJsZNyD.Ya1^ +ZaeY/ɞ PQ~~o,7j]q"i ֞_!$$ :N qi.H[Z|(w0  $qڟ۹z K&5.y@4uMl-W ̿aFMZьV[ܱ=:oRm{TC*z-#rPdy7[4y5BWdl-@`7Lд_.+zyg;^(8K?bt]%c+8ob7: 2\8.RW6¢{Z@ ȃQjIvz*swRi; EQ,SL%QgIhW#Fvs,%&f&D0>y&yht1]kN]YA |8ʨZk9oU\iX9&F^X&NnL"iqq?R+TCM)R-\+&_F}n b7^ViǥN+^^0l\ `8B/X0PT0~<~{_?DQH>6FT)z.|HZ2hU畈^kʉǼκm)T J1nn)b/*Gin~CU_;}؍3rp'f9Ue)SCcD ;3&r!1 .PWuCt`y 7w9sӵmu؆6Bjʠ(]91!T {j e)W\RgeݱէgVZ\ 72W9+<0L؝`lUW׍7Yp]z_X)~e}}.lkt)*("?JLT6xw9R6ܤ9HZQor+G/p]ؓlTd +"ϱQVc +{ !LVK#l|SZs+" +Eu'?%0L׆X +mRuK'<wM֟3UEO="YŸu2_a^btT>s/ 'MUC< +N=s">dE8>|_.jϮ~^.}cˇph$yDAx7h|JAazݹZX]?כ֞ +c|d0?Ϝ hq0NtBqQLȮ1@3r9__1sYɡ^m?Йdf-qL6ǯwfn槟ñ/;#v+?^pܜYDsܯ\i4`,֙@\srg+㜿*w` 6l>)y;b*5b _%0zi͹PKS@&ABej=a︈)s;z؏Qx3zo+C + fG +$ nshB$۴>Ugdəp7T9l&rUmw$Qc&U_U>RV1r2Ht$pSis/6P<Js*t?  +fUW%icJ;oXZrq]=5l@ZvLXL\17W0œ@-Y;kiΊXXx.u{f 2"A;`)3X7U{{a%NB!r)>{\gIL~VW3ɮ99'y{<&I-&Փw qA/D%F1PoƋ*Joo .,ǫi߿a5|u7skb%BS5s҂G:,:=֌#{0 :D[1^F*qyH]5Ѡbbz-z6۳ AGؙИFF,Ϝ]`;-8 +l.OKУ U, +Mӓ:DgK\ĖsڍUQQʍP(_gur)tk}<RSjUj1uQ0YHΰ"ӘV[OAu;Ҋ$쳳 )si}r1gSI_(vHpr89D:^gfhxOQjuѺ|K`u!Ykz?*J& @x@[egCJ`p4׭x6x[AmlF\r۝QQ7烅`B".cAxJ5P*C“p ~G@C߽SՇ8z;t5J_jZ XESzzbĜf"{|̼_կl!GT0ѧ9CAzvbcv= ڒ[%\]K|qLaz7b9ЫthjF?w~Y`ɭr?5ӆI{m+*\fi'3 +*YG3Luc-H;;&nWœ5S*ƪ6!׻6Ԝ.f+pcFtFq$,ͿXџbTh:Q;cm*,65pdq*m*jA)]ɴ|mDcYg箼Pխ&uhᖠrfX4apMi<)EVe}!1Ӌ?^e5%^Bv8GYvW B;pxB]Ÿ{Y7g$F.yGAٵIF N?mR;sfRJ9-M@m~% ?LQ޿oFps&I +jtu?5M lV;M41z-㚀iim 83oͷ[:#Q՗5Y~5H|ˈ=Cypτ?z͂--K6R- JnI;IySk%oI9-mtHx8D!wXOvw5֍̴m=eHbsSAHt?c&Z;" cA$-0Mc0R6% +X^W2ЖPh;ΆܦtH]1 "l`,9uցW1ĄS!u,*oԘpy8!>Gʌ&_?or&COG,ws5N! SʓI'9T< 56Y4fcX,B !mO1:)YV"Kю97R1 迣d=мBEe؝0cAo/yG>vR?74LLi +\ ]شt3h L8ek$¾8;/e~J.pTЉLͥ2*Fۓ3w&ܩP%tk#l"[pw^Gpľm}V&؋(5qlIsV!tq]}N'C5PvС} K6Gvck_ q#W!d|$یmAoj v_O$8֌ܽ,U+z]Ε|/G.Uhf -,vmvsqosCsrmpN_+ך/tr)Op0FLMh d,k/>EQ$mnt1uxr>!={AMSsw/Mø7&_^ N}m2iK.GGG.4Z8͢[bY2ǨYJ<҉舣GSz+Ӓ$"}ﵳxaU<2nؿ[[y\ ~4`  dzapB324NO$mK$͏'8_coi'7HyGd04 j6h*Tu1G)r4_j00tugh&F#u[LM + +r(@&' E5])29V1Q/Lyv۷HF=wr]2afOd̜V3vGB[tp|5m78kr&k٥ qq+s8iq:@ ₳=c;6z =KЦuk{ŲxzuH\#da3yHJK)Kൾv[)m Qg=CR-ƫL~M_4Ru1+9nz]ms _RXg[/ atяZfjdEPbޚT}]ѵ5TvtHYsj$YW"i~ulxF\ZdQ`t58%:J"zAo+Ggl {|6͓&& LA4$cX-R^t!Ʊd@1ݤQ1&:WPjMbC  ce$m8Ut'J/mjPބnOKM#,*$`^)Պ&&Y֔o;( d2J{H#ȝ͜%ѠU3r|^$Y:83!2TKNcC3[*gQ^uՏcu^9'VE]LZTscsE㘤(qL}b}\ 'C햒K"F!D;3Ш8Tbz-%#J?'{\V;[[֌:cK*4k-!+3%]ה`X %Q_$@~T[_kv(gn\rNʦjn\i1OU2AoFTu ٺb9DQ~:h!OҴ5+fE̙G<2.7[:PVm'˜lpES&Xޞ9qF1m]ɀgߝ=" %]S4<э6;U (Q (iDM]mb}56I*nhV 4a2~'4^' =':J +*P7-Q ~ARlhYS]wC+aK ARrtey&` ߔ$k;P^J- +,/ڙl~jL ZFřkqx%O>Hfbn$V̘⓹VgtIn6ż|k@b<]ъ/e%arH}B&gḣ86KFheU9>S=`w:sfkk!wjDf䐢lz#*' X) k$(ds'4*0JxA8!!ܾl%))2i w}p+@ :8`VJLpNehJ*G"l2CIggbc֧q2QHtY +3gPAmiq3B;$UxAp_-gR7>kf~FkFบ%ԫ`qmontfleʼnzO6c"eM\01u+=Iox!}2"פ zAһn*pX ++bTKqY%wLmw J%V bW`GfNmZ7 ?jkkZ f%)j8^ ysz ܞ]h C*Ck HEҼhx$⊡ Di\%Ei8 +G" +ȢY_c~n=@Ś{$߬ȬR.4C1@ԅF^>JCRCPK2|(Kb_7HCQ ln +-O/,mF[1'y-'!q +IcSJMC {PE Hf)ģQZ]Ce%zV1pA +r^~yҞVJ!TsVW ?e4C u«T9SH:LDj3$,2aԿ_5\ç!}U% RIB,2W d!,P)& %_S!J6% +^>E.[wez WicPaTb7+TZlBAV9Q8jQ H^ +ծpl,>,z?LE&{ѽA"dڗqUEH##6JಱcOU7y/Fw\7jU!ЉCYD-9g@B{C!94BNk" +gtԠ#|޿L`T6ȺYe8D'J}[z EU,[c*gdtJĝsꋨWrKDx[8[gq&vez1k&`B0gçvԃjrǷsk|Qϗډ}Daw;VNşbbѻӜC+NE]\r;[xu̻Z9cNg,Sk+SVjfV{\$m;G!.)(V´Dm3+N v3쌰橶-?i슆kU*?K( ^ܗ)@G׮O ;x_?N}V|g^I*"U`oz?~^/ʤhc;A ڭxRDm"PVezmlYqjd!PхA/C.{,Bkλ̏]΍a!MB-M8{[n3KJ$b>=y 家~)ڼoB;5rJ |ĐaP\yva\<uLT)\~2vF+tY-*f~bԤt+ fY+<#'\Dg@W3 v+ S 9k.g8\Ui͊Xsu&/ ooi)|W22U n],"ߘȇ!珵2x)yG:?"ЍОwCDa(" 8'hFEI +J#[1 +-ߔ*?a FtdS&U.ץl+kWG>Ac,ZF4zRϛ)%H%)㩬By sz0`f?/SRSv_ yd#B cx 'g&l+wIu-h6wȐӓ)O;ٸ +ڕ˨^MYImM{]O5XA35֊<_VC0 D3)H*EqVe.aX,.J)ܓV!Fݸwxw-BRkhhǝ)̺h`e=n%LО/M&OQ &R;]f1eH~dod 6ampydñ{GN8 +V ? Z]MN΃|B,dF$ :_.kNfjb}{7*iYe2˟Jr}Lf;g: .ğolzVʃ3rR#Kah|Wyo?tWta/ZB7c~v82By&\%΢jp࿼BQA..:yYt j,h=͇b!+S6vQ+0 XWsAN%`5S9+ n苃3'YW, JU݇݋0/pJ@h[ZfxPƼKW;^Snɖ_pC?VaO0AMt"Kz[}EV=mN ؃yMm[߄?R 3g@ρBDoEd&2Wq.e6QyWy [Aqt*I0jE Fڬ FN$2:h.NyCۧIQMWF||C:5(QTe.ȩ8USatxS"y +aICkv.8-S2V!S(Q:t{)@e3#pNVdXw]MeS HF ,bHV)% hQz]9rTa1j u^V6~[wS)V>n.* OwҁyTA>Mfl-TLJ)>EhZ2H'_xy3, +v`oT5ms|9Ԧ>,dٖ`e 5^NX.H*eʏ=<(&iTc7سPaWz=m#[MJNKnn|Kx g%"g_r> PC]v~eSb1gR֠E\N$Dhj[OM4qM㧢zS{VY|؏W/ ,cBԙ=5EH3))=* V "OHGYl]e#!=2$r.QER1J@oC{^ F1{O8) / ˂8ArCtױ N(q%U+2 P5G,&HzjZ +x(@W VcPJt¡N34MZ^+PMslŠ_VL/$@U!lഷGpD*Xu^M˚;3)Y^,dgWP.S<N/4Z!ׯSy~;$uϷemFsxYm=_E ?[CʂBz^GǦmbkܛ#8іgy`VH֦6JH֙p~[ /?dXP7s7>`݄hM}0IOM3.^y -92|ka}eHgFl@CX!2~$ 5GFN6UQs_G Jvxbs|}d7G ȦCX$#:"3!;c9oGA_da8F+krdQ=gh1c Xl!Vɘ☭>O,宍 , S{a0h"fTo_kBv:s${ӟ+X-ŮNhxoVMhcx/VG<"w;Qo}nl>׹0Ifß1gK1c30,pRqϤj*v=%ǣ^z 1DOh:C4ݰ”y9[)wgdA,aYa,盔Ox?>m8AcgO]Gd +'JhAϓ2VTt PHʼnR&/!{]\ ;Pwu_qia7z#krca:'\)}5meܥK[&l[4axAjHvGĎS>3.KG`I -_^ES%lF•Ya1xd;ryYaD#PXy_=E.F J3+L>br_+{\EuPiHLgSpѝM''ʺNc)@AyJ3m(~GkM[m6ZM{/T +#IQ$`nvOcI!cEZl3F{\}зy'D54-c7[_끛_掁/wײ +$y כ +c?V?BUd-IV:o854-9fɬ9{rWhHd9m/&Ad)p ؒ>n1ܻ}J?( +К . FSQ?a;P.Ojc\ѹ2 ŷ.@7Oc`hUW* :_d7a8zdsw8O yG>82^6LCM7x2}q_T*@Aִ ot=-yrV] :M2X̶+<`a^nտpeGU +"]݁l\΍ÎuK=ٯaK<+$$x y[N4Puyd:Bjc8S{+KΥ𙺕o5&*h^$GjsQԅi+Wm  ?n, [ɠgh{Ki4!::Oqj+֜䡁! +O,:TGRٔ|@g}8OU[Ɓ舕<-݂&=O@ BH> .xA,wY'JmZcu7$j9Q; PC[P#(5%&[WPzؼ;62@_?OCLAIk;Lh01WkD {a KYZOcTmhj_Wq[,yY0J _d8$%NF/4^7Yz K[뭅\:wI6Q8a&W@oub1RZ%m3tMʮ~ժ]a%{]mћm$e7yflO)]k}*Ѭ|a'BrK{lM˛Trp|(֕D[mTkc)CI#X{G\`laŌSxCCb lv\s8 z 3;jWg6X|0d|s +1-bg\ +Kxb >™ɭXoPu$+"iҔWl&eɓ" cGG,z`N7Im?oݏ/wƩv;AU,4v~}S)`w@W#ꆨìvtow +S;;UBE7Raѡ!WR ZSb;g"FvcpǢNXUR,QXg P +x-a +܉l" 9Sx,c/Gkzk4ZjV#ϲ}L9FBPJ6_#fa ΅+@ƨ"E.|#ŇM>}bNe+d:VngoHGn;_BCTOiUCڭϭVH;"šYHXMr?$3#p +Y bqBxFm6nlmQF\AX(e.1g$1I6.{UO|-yGQ9 d:p. ~!тp[\9Alh|;c0!"kuý31j_v5 d2U r)NllB@p k)!heCF)#7qrXNa!%$U=p]X |d$tpb^)on#D ߹Fj=nժ2 tl䎱聕V8tV8Vnf,sxA_Sxc)͚%*Ԡ/l}5:r谓߳bEӶ=dֽy[^peSm碙oeV3Ir6Yu vhOQ,HўPM.Vbc`s|{qn?P٠miDrcψXz~ t3) LͿlZKS]q@@\3Dɬ1}{!rDxDKy/Hs3h mX !OIrZ7nfu0`euB>/H>V .<9ۃNP +odO|h~i<)TpI--9/MPO@hgV/@lh}Ӯ Dܸ!O)P/>iJR! |"OT + cXd.uoO,}/2 +2J,+7Y +r0E JS|Qs+NrY +_RTfxrkc~Ige$H_VHT`ܹ`r Lbuۊ)^0T_1I%!OqEU߹;M1%eoomF@:6ORԪn:4o1|#!COu~[K-!Nl-19A=e0|i Z%+4TˬMbs{{l g2)?PYڧ(wB_1۶נ@;ИĔs6 +VPrjy e "G5@5۪G9jHӇlhŤRWW⩃i12m87 + b8\OL.\M-F/E:[%*}I<2 ́[ y%%̵4m $HbC#E4A{#~ +fHDD6ܨVyzY|P P5F䡹^*; +SޛLĘ9S +YU7Ygsd" |3hdՎGPs?bW8P6YlrQrIrmH!?Om$[)A} QyJկ|$uwpY2.=ى\1A%d_w]بxCטW֚v-g0Il%f 4(hZ 9boCШn7. +"pYeJjO4G,w)J:og=ů .-WoXI?$b6bQi<a~ʼnl"Wc?{e+[fkL\!~ {> +?Sdm* Խ*vUbEF'#uoq(u Y[_MQ^JʸP:$]b}o8yӠh;cBo)WGE0fuHϬ +mqS>/d,hv +^.HlGMezK`t8{orxwv āAڙحpf>nj#lt{c#Ӫ%!Q1p1 кro`m +endstream endobj 28 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 10/Tabs/S/Type/Page>> endobj 29 0 obj <>stream +HWj$z{Uh(uKxlb<30~;2#/y.i͢ȈsNx|<=K|gN_q_CXrN/~~bLJyR:Y(F2 zo>Sfg@օs)rÿ~D^6rI<ȫR:) m] _d>6wgnjbG_<7bG`w:^y/ 5Ս`c8!Rݕe9OPOJ^=s|9n9P]r]r2aCn n)p:ʩ=",6_u0 |.èV3RW ,-3懁QT^@f4 8s2il0qr`kRdvآ1jL/7tr4qBr>HtADY+]+hiq9𿯆$"D铀DyQ*a'ZFpSK9֮B8gG=4s#-hNH +~#/[㍖l}sGX3+egMѿnT:3A* a*${uҪP&#z'={%a/ꢈ,"Q..[UkzԇP'^+o0i$e3f"=0c>ᏰFpU*H*={j" >ceFPMW푷9:Gf`,86WANȎwҼ]$fŞ + {o,H-nEliN$$Yu0Qh ~Ӈ_{ +/?},?'W KL@ i K N|,/x|j +endstream endobj 30 0 obj <>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  + 2?!1AQ"a2q#3BRSTUbt$%45C +&'()*6789:DEFGHIJVWXYZcdefghijrsuvwxyzᄅ?y\\S*dGign=RK۵xϴe)Μ(FP*]SMfZQЩyġ%(pGQۭR: fr%R.RHRRRSݜɸZ5;9MSp}Jܹ)/<{z<^^žλ&ڸZwTiԷeNPġ)$g|>BV1V{ERN[fM-ެw+JaRMR(bK>"˞Xѣq9!(SHcҿJ)9Ӛ8+>;TxsJm9q5tjVӵzVTԭJZI:(K{[}^&ZHRl'Z1%% ƓOtߎqҫVnlYգNލDNsNoRܓ|M^6[BJj.Jpu#(F-bk G<.=Ů}BIZփiW8M˕f]YUSRS*s6aAI<5OM۷J[%=\\WZj2zNSXw&[LUFJj8)K|ۜ|ZWe;|SךQKv齯&9oԽk?@|EJJY&ߒVOR* jJRFyϪr3,ڍƵAfw]IJqQ[fyהNRTMMㅜ<|814-Sݫ;n۝g = SVd:>TRrQuZTsRkz{9Zk&nm;C{sKjң*qJ3fMIs9XhӵZ*jReRYojpO5.bH_'qRꕣF''y$dGe?&z8ԻNHSyk2YL.kJ.ʅ~$JRO~8yo+8M]NVwԽ)\*$R{)Te,JOx :jeSM'T^SW-%EnrK-xK{(խ]=ͭWY;1YwMye-64J}e(T5e,{ -=ZiSB┝}QtT#- +-5%oDl4+=?u5*5˻dĢqWKKVVPTug zT4QMx^drMNN9OX +eKVܶThUNFN UЯ!*;#R[*xSNJX'3Yniөp=5jJkՊ녞L;JNBT!MCd{,{_j^ץZ]8{#RKkqݷ;s8=@SOQ|G?ό7}Z\UP*F\I6xI.[lhOEnԖa٤Kh 9VRܓk>O5.IZ3PRkIJ,ɷ8^ߙ>ggoG?YC{_~d>g{eqK?Y~RGeK^ne*>0+y>O=Q-M\thn{1ڈTq~tB=1oy|v~+5Úa|~3=:~>f;_uP|aw>B=uNX}%O1 +mлZvER<5`q_TsevH1'YӬ^[⧗c9)[VRM%Lg=Lɋjt4{j7,KŷDZUUt/bgmi?g.b:_K=&֡ܮ~`v[mnNXǨ'vG1ըǞv>}-'ڭsiy g-z'mCWόja}և/!m h})m? h}+l })m? }#eku]SS4inφR~&v;}Jt(VN,&{(&jeپ\XpckԱOY%*J/P-dSw_~_~RCw_O~Re~fcsOOck4?fWk4oЩW5q~ƔS}n*PSNr^k7`1 zm[NSEdچw[B*VSةMӒ̞bC]zqg ' +uU.{S%@<٩*PPR,,fRyZܡgnQwNެ$\Meyk| gV֭k4*[F*4SIM9fo/=I5.)ъ'S҄ nMq2@ʍꊭFprE2^M3bUmj,eVIT[U]^X^JGa^WSvX_rj<ǣx\y{JNtˌ#K:7;F{'r$|+'uU:;)B8}UI_&%;Gkʵ*tgJK.PO8I/kW5-!NJjY=qX$lPJt"qZ|㇒⏂VN +Kr\N)$閖~:Kż/+)}g -U.#R3YMgO+ȩϱ +PE+oIZK*NSw8NL1Bz=ԕ7,k!F{u8:Xʌ<ߓ|][׭otbrž:J +1u >K7FQkFQyi(gi;f6(oח>y%jAdjFy\4{r啟U +)9E7U^mR-%ZO+_̼U)8&U WZMMԩK2i/6_]),d?W1&`TCJRBsJI5+1x|p[ٍao +t :{ƺJ+-ז1ZWrP}_0;QeG#J[.*1UTy[%QZmZXVsy,-A$zG7avvM + #h#ipJǾNK1SdK =7d֬T!s.U8T-+3qKaKgN0u/U leNpce? SI[Bu)E$nS$>OMӍJ՞iь f3Pj/ٜ21u;NnNVQBsqQ詬3mSOC#^\cד6. amn$>SQߩe^q1Mii]S9E8iudzi8PNӕ*v*sˌܹ_ }r8V;K|w:q8ӎ$/=MUuK+Yls*!NQIM<3ymmQWN 4\xpY&nv*k.1RW*jqODžгIѺRi:QԚ̚ƑmBf(u"߬RNj[M-o\Y7j>ڛE(B0J]#&VRI=Nw:4%(oԌ$=OUoU'.;F#Uv[ڲJtg8m徉xu07Ӷո+Ѥsy4_-F:Uǖ1 dYV{5mEJ8(4rH^3qN4nǃˌ~@;k5[WKeJtW{\^V&}W%rPo!ߘ2[O<._-u&`KwOWԯ/BҤҧ$GuJ|7H+|{rU\Ec&]fuJ{r(QmbI>dv*vt aq}FYEjV|7c-4zkXeYF#BrKzIfR8ŝ:e,TV~]ꫳ߿wpXե{Jڕgnќ9N׳ޗZ:b|ԧ-R>0yKFHoRڍy9ԗsM*6=Mn[P,.)W5)+5}T^2Ė, jsWQV򶨮3Vd'LJ$ǎx5:~JYJжe$U9TNWϖ-2T5-J8ʄ.n;mf#O!S/n4[wSM2mww,jlJZ>pIAqNPn8|cVWF+QY+|gF2JKկUF]ZNXϴ7W\j}dԣ$+ɵ{MBӧB;jGRT,&߱eIQDƔu/}uu^q,/a-޳7yF۹Vݘʜ_yQc*=r󞄍r5j_:YJԪg +K=ra>8jJtک-ԥ&ܜ77\mmdNs~.RgeVڌQUujQQώؤGQpFtRR9XiIx?,ZH77r~raac -4J6UyNY5U]g4{/gAlxeGym +: \Gu9J9k+9\i.FU }?kx6xhznJ1j2^KJ\e+άM{= Kk ͱa)ISOY\#E}Z5ܧ +Qv6{-aAWi8)5Ws=m&9t.y fޜ#J*1I$XI.Dvl#V[.ŽӨuNjp{gai߳VVxF[ی-ӊiTmi6*nϣwMB5aWMsxQ1s]()I4M5N{NSŮo +?J/[@V¥Z]cJj93J +{, RKezKGzM(+t)SOeg-lQƛ:r9҃I<~שRy)թNXnPm=kv(J\iJM/ᦌ;VJ}s&۔,%߱/gmBuN8z<-9$p6̳;WuSwWI\sm6(875 tIcx_<̽ѝ +R(^-e9U'4*%7ۗ~1]uٍ>UR}fIKbI]<3,)nq%)9ɨ%d۳':2zeʧϵ-mW*4$<ҡq~I}Ҵӯ FI?=|jz翿Qz'-d^o[ſ%$ִ jRͼ!F-QJsqς.G)=;s^Z,Y^[1tu* +qT.:R1]w}oMIR&HhEat*ZF<6V2RY\IP +293RԥBtn%VS׺T<[̳եzJ)a'bjK %FVfz%IZWRP37N4ooLh66tS * +⳹/3dVW;}mrަeJ*:R,6O<'%ڍ6M%pL*x][jHU”6z٧MI=Kו +Q^]ےn*X[K&Ny~GEfUjab+96 +=sϗHʭys\=ht.VJj-iۺUTN\Eaeet% ҄a1J1_G]OZպik>!Ols̛m*Zѥ߻N*4$Wu#,-c,]BQ+&Nx})ɏX]70U+g[ssĥo 'Zn {6Dmq(Ojgmu%9V lu-k]Nu~\=} +Ug .ُgzM\'%DCF7rf\nu757KvmǾϫIʀw4׃)t~_|>}G%ǦQ>?|zeCzmǦ>?|zmǦvg=:?|zj6Yu3[w3Νl,5TJJs^c^~OU\Ӕ[2Qiad{mg=ѵ?Z~#Ǻv_}?|v__l}}_lY}[6)6!̤TxS:#M~GLZ [ByS*6f9lO-eFYBNqМfqyħ9GNXd(P"I$FSuG{O>֢o`?U91߇sy/VN_aܕ?,?5grTW5eRdjIE_?5&~ԚUk+4?5.mcR?[ԺFE *ujTіjV%8I/x_Y(TS-R3RֻT]?ջN+׆zoQE+ÊjǦ㟉Fӌ9Y/5]=.8-[c~cM>2|a~ͥ~)؝fKeL\Ntsq$ +_-)&}54v{UaNQRTg> +ey}(\թ(:j)lllg.ν:ۡOwx*=^1lW!})YլkQ8(c<>D򺵧{JTjt$ןP>שєBJ^7>/{R0 cIa$HFnM$[Sc:KkIF(5j'\7ypDCOU{r(ÏD΅+Xҧ&j1QM[:ה%QJYɬq0TbסvU9|M%K8KPWYSR^[4P^sQ[I]F I| pBӄ\T"m(}[^D,AY}R~y+:*|ü7[(ܸ7ອVN3dM| jvJr#ϱ$_qrIex8XIe%-:t*kjQ ++J*Q b/jW~ =ЄeJ IIB)?cө(PqV*F;^بu=ڐa(嬦ϓ"ƚ<3WYm\U\~k}#q[ųz-Eƴ=)Ѳg=̜pY7lB3j}cBX>;ʝ|Iwt쩺9ImF۵vu#N;k%%.7)R|7g״k:Qu_Q'%SqCc_R9FgA'Ī'R[ZV%)Ӗ_&j+FUa}Ӕ]7ɷl5}*:h\ʄRXNt;Z7Gr\]/LPT`ܛ9˙Ns{7ox֛q9TmNRnM[}YKIҪiS9E۹'x&a:-]6GR2)Jj9aK>&Ҩԣ}9Gt}ܚY[T8S*j֜jYqq[Oe^lwRUjSo9~gi9JڔiQz㯉u4ժUuo!l`Qm(TQ#ڍKYX;Ҧ] G!vcUΧ{ )ҒRU\S:Hy_l]УNQjSʢ۞ NgwY|*wt5{Wo}Vb2G5ZS,nLz= I/=?zn}]ȯeznZǠvezn֑ZμluKFvBޮ$@Q} )U((5R~-Cs*TmmxRFW)T[K!97[ڝOZvT+K\5N9rmF2TԔVRm`cXP#W8*uċ._Rj3SI<8#%ܓO:Mi6XTSHI4U{UIΔg +j-F᷅/bɍ٫*teYTwRTEߋK 7sNs[a'ag/`vgPմ{3 E56yXf.յ3N4>}lIٟX(ۨzTZE'7ݯ)+ڕHSjn0i[秶սTqu'QmcIeׂړwVc9(ӥoMmc;s v9ӧ8L[ɺ#52gC]+N_).m>_ rLBkz2=* Td&ia?ieµVVj;',p4*;xJ)wPܣ:1ϜsotI֮YxfhTniԯIǽ7بš+j|rouhV4RN+ MOLPwBX|7y\gT;CMaO|,]^?w۞tȹ\:-(Bء(;VŤzd}-.K8NRnO2ܥ&[mdtT*^NJT鼿UF $lEqJ;VG)eSsy# +dmak+YT$9%8‹NKǗ9m/zt9w_}HM,'.=^8jMaiPN+cދ c{ /̍'J'sYG n$3Mྷe-J T2%)R%/idi=9*N4fTaa,^^8ɳvnvތԶGswy KLӌ&\*F')Bq%ױr0ٚRJ%RRq}c-ь0_)Ga6mN*68ܺfy~M.OFK޴8'?yM+ިXggLL +21و;SWxiB>ct@ N{Z׊ʌqiIUܶo 5;w=̥RxNS+zUԡ)SXSck9cZܔ"嶎Nx\C*N\thvsKʰ뺔(ڿ^iAqI1EJGqiJ)ONvn;N*)XJn*;nŸxt+v£79J1RNu6E֖6׶u a)QR\{P ]B⽽=)*5G-_OTeVfoÓ` n"Ua:)ҋj$e (i\RN[nRNWO|avzyuPH+xBMՌ;I,s PyK~?CF5f'%ZkpH/,jgBwBkYk+9)XQ^"J̔3yqd:UY(gRYb Pݺ)c|c IѨ*`s_Q oQN_m[/nr0𽻅<(BR|&i5V+*u>Ef$ƒKǓGZۓVth?U=*YeWF5`G'ZQ̒Yiegĵ]ҕGEN.ieIoKns\9*slK8MSs&r4(קqE瘵%ǵVVg%KM.yquju]JeJ`7I&N=Y9Ŭ$|rTZUiԤ*JO4%_s'6yڛ=KcwJ{ԋڽlI<|<_N+Gt$M|ʻ8K&S~֓kt=NkU{>[cncz Z;S]ku-^UaZJRT)BRo-+))D4ˀ^RʇSm>g8.izڱͅ*1SMti^GQRk > 7U޴*P8g\'ɇoN֏hjJ*vtVyM]M|UkLMvNO2PғK+83 +vNޱ,ƟM? esᇃεFztnGnbQT#$Q~.K 0xXӰ4Ԝ^r:y +o ަQ{ }~e;{kf|KۃލƙNʝݽ#ZwwBMUNO8J95'U]JRR1ܽt|4hiZmZjN/\)j{{RS&ѥҥBڅ1ZspY Z}ڜʗz)-:J-a(\a7NĭR]\JMME,({YGVԯ.'T$oS>Y_{kg8J5%^I5ZJ)EsXԵ7*PmF֕m:{N^%rjqJc arPhES9]<}N;1]^Š˩qu嗺EԚ\siHkVI4uO_I5ṛk|zF')EI7e&+N)I''I ̬栛o ,GHT,JO9N-m| wejʎ`?E&X b_u(5Se2 RMp[~XZVU'9&)rgɬ]NP[˗K8͙.!ѯNvʔ9æf~Q㜛Tʽ\:# %=Jִ!^%R-3$*qڦ:qitDZsk*K៮%Q[n +;4/W~%R| RC 6dW[*jxvTx)??c+OV!R绔jMTZÄe.sR:E(rڔiӊm7^[~Ƌ{i +-)69s(jIoHJs:[ˎxM֭o*iKrO9ޥ;]׼~ITNRn<=GVT%OlgN7F>mz6o'V +]URI.%cFU˂#MKEG4[Zw219m;7ѯwZԧ{V ƜS)'x$ge][9ۻtB*QK {Yw :£qwFˌF2Kڛ2.ҍj#REE㆏`xTV:s'*XݏʍN#V{Ôn +Ƭԍ(MJk)K6p&_\[\jn.VaS\,E{[fOOn~=Ϟ:44um8m4:ngN2%mGE*ѫqOJ4]X_".-b-sE55`{[]Ѽ5!R9a%5,ų +7O8.OnVqg| %F&%)8' +7et.)EN8R_*=@JN󮰪YZ)쌼1ԳKơ ❽;UNvnn2W#ukQsAP +S\qI<ӟu(Fu:J\OnuMVbRUN[ڥ6I.nVJnj[wmK,Q|+ #* +B%)?%kk5J*+Fx)q<4*ʮӧR7ruc)ERRXC߶ll0rUflˍٖޯjfd{Kzq8•im'$38^e!%;iٽ%N2[mxry +4ad?I,ڪ)P/FQBRolwGS}p{j:=6捬T*N)8QYqo>=^}+s9Ei_kTQ +%_rF[ۋMq[MmVQyrx|5w5qqT{":XRğrK=ʭZm^4fRq#$nk ;O| i:2ypM ܤ'YJpw'Ŭ.yicȨ,Ri2% +T##ajө:RPpM$Qfao{g}Ov=3CG81\9JMF1<(_W^2S596Ia7Q.K>[Vz;u(t9+czdTcj_jQ}H%OKմs?^޿dTFg FK-eIazTtUZpQI/13< Q4Ԯ5HʶRF\TO +7 kYSWO5&MsӯSD÷:*pQY|NJ~YR?Z\ejNSHŷ%i=juZ#RMOk<"u^qxJrs7ϧHU{rS:2vR8sd;]\4B;&_Xq(lZiYu^ż(S9IUs|{ U)fI&iϓM>Sqv^6 YiySPF=z9Cـ5zSEq iVTNr\r0kBn:so3ɒkZ:T){RhR-r_2I7f-^8Fu9Q)9B[gK&nի_jNA(,Λ֏mbwNs.ԛ/BzT\[cm9VyRsn,͕vlu\ z{Ճԩ.ѯB'Rw"KmZxX|&E#R +zk^,#d<#__UFI(;_nʋ#\I}\C Sf_OP/0aq4vj7QMqMŬˣiU-)naQK趲}dI6IZŝJ7:}֟U(a)TZpXuy7Vs +]Y*Ov>5 REx%v>V bH_֩scVPPs |vnO>kF/@ c:yoR^[y\̛\vZΥ5R[%*s۞=8qr[RRn ݴۖʕ9fO ½PW5.kV'0I/笖^VK-c49-B=y=wm 5oٙ:YU'[yF%ϼé ]wvTTB755Mب߾Q} 2r >g%ex! +F$I$}Yu*^KA:[եsv2ڽ/CTէ6(nm6>>g +sԣ;tscyksל䮛GLqV5Mשj{݅${RҩRzJ*0I,qgBڅJө&fRX|*/DWZ~tDfINKV9X+GPRtUnob8XX6ץ:3p趵Jjta+ [Èx2dUbV;R#$R2nRo))7̓LX8f*PPXږ^7>qd)2͔R,£.|\f +24jVQ9I;*N\nRKSvө鱔NI4J2yX|366Srr,nY߀[U)7(Qn-K+Mte6qNe)*pSVYmF©RNwM;=UyFYTFPd\q%5QZByJg'Ǚ-*Sthju3F{[+TS5kRB2[5 <7XE7U7)71Ri\2k}uqB^k?"J4)ƜzF*+KږRk>< +]Rxi.k5&VpRp_pb]i(\Ovn -G3xRKʼάsI6u)ҜENjq{S\,eVzݕk.-cJ/;q>-n/i]GѪӆ3}9Tϖ18CSP2(ДdגnF:j5qV}ĭ9nܥR%<(>8\&Lm-)XTlVpW +O /ȅvIծC|xI):6ӪvӖ늲[ic+iƧNsPJ9nn0[]3ojV*"mrߜE%նca3tJJ[wqSKt}ʹ9UڌV[ImHJRZhUmΝ'Q%kvT)'$7t帹$[mO70SQE;&jTƖR09M=36_+ +N0NmuP?֬Z;wR q.+ai[UMfsguKT֤-s{ޛ{EѕJn\΢" ɥVU~䢒}1㞆{SU㍕7$ەI6Ѧ8D'Ziѧ^nbܷؕi1̚ѳU=f煏6xZVnqg |&%ޥkw+ +ﻸխ8ʺljw5kEMc1JRk< jtJQ79$^93kJe:W5)Щ(ʛ18rG9Xk>:wiۯz?p̻f֩(49mOj+}ƯiiF5U엾߻Q˖}-r֌iE)K0Q~RRIHZwՂT%EykVu:1(t>rڞƷgk +sL W(ܕ5'W= MOPymBu&/[MCMyMp&F)[CW*!7qkZM5KI+55[im|2| LKZN}& ײ/ ꖶR#Gj}ه釓Jr6&pg -坱JS`^/nƵΥ +UR;Jf(J2NM7!׬T&ڋĔdU&v.+jZIՓ$u*NXAU6mg{>hN[wmOg n[>?: +pY~[Ӟ6fX⚊ Py豖W5z>3"Uӝ(VWn{TY|z͝:9()YOkxRYV|QAdtal'-*xxM5:W wڥ)Ԕa^֣omC'R*QjY{1[c;)=J2H畘I&.X§w*|AKd6kygX=R%JfTէw5:5 U[ĜbJim~M ge%JUI?WrL{Ym=n*wJ3G֭{8N[UIIq'm^V)UR$Ē]\[II/cg}vۛ)nq[ T&ں +KdpK- Oeh!ZQu{5CjԺ>'}݉w{m19SYwNRT嵴=q.-Tj)mӌVc$φQO[:pU9w19dRNLd;4KSTع%'.;yB֗uRJ{dp4MjY|$7%qйnu+yBZ6m*kk9jQy)Ռ.SRÏ8Fﵕ֣B5#:ҽKd{b9gQ|x=h\}8Zm罛>OUսCNJUN"ӓwOrI>&vBTZƄmI>qϖ +m7J׃j f6iR'PqI:r[_ѳǒ3:h-ޏxw.2ǛeZ35(6iŵ+?&M=s8{]RNIto4Zsm6ң +TF)O8$rIHdn(hYF\O/jƅJqJqO m?^z~c^taK>uԋrffsڝ>gu;~Տ8dЖSi'%$Q&h΂쎤(a޸ccʍk ݙŧspe^ա.Rar[ qIЮGu'Z9KbJM|Fu'ثo4w+j48ܛIeď_WNtiэz)9)EEk J)uCv\l喱V`G6:JtBPQ?g\Q[:4E'يkjZˣ8I;>K9zEm9†TXdRqma4()RvslqXQs.raR*}ϥ{.\̳ `w|(Pݩu}׭=TJE~sޥ]U-/]KԵZY}i7҄`g+B7Z*-'N&q^3٦)6gN;9NJ1zv暷3(z9I9~dէ[96c+?EjiʶaF͓Iެ1U)T[b&(Kަ1rF5R;csmSIIZ\{%NTT֧[J ~M=TqKC>KkT8Qmڔ[oI-z+XQwdQM*:(qo2& vi=PX9QvUgY]M]⛔ݗX걂]E-LfuFիғri7IwMgRX_T'ѵO݊N st=8DqwcqSPueQь)ISigf1=fҍvt/$۔qgIGv4,ܝP̜!RjI4k),ӡNvF1\$Vu*4ir夲]:1{8'򢳗^JҵEzK.e-:֍W^)ƣgEMdLrxJU;J-ݔqe=ζ>^=%NZJNpRty945R]-GMm*wjtdݶkXfմ[R9J 8.K0{գ +p(II?m9RF*)'O'EQ?8}+H9o<4[wiϭ.zxRu(En֓< "AS[ :eI98$isUBq㵵-gФNZY녎2^hJj5Klw,tSFnp2PJOsYGb1qK[ˊㅞp.tKnBߜVmNHFqxd+([Ӷp#R1űq%a侶mqJ4=hF\yr6SNe9Ywq\"SXi,q_V΍xT E4e$~E=twT#S{.j;7nCncv1L4aoNTcZUHԭB mXtiƤeFU%i-Icem*B4oI.cMa|EZmcaQE*QO]FntSI1x]Rd[zүN8ԗY%')s^N5+P9EJPMzYP­JKc,|=2RnPڣ.9J>c +ӭ֍ĩAԊf2ںUzѸBGf✖:sׂJ2MMI-9>iҳFV""^K+hJzA};ﱓiqȤEIc LѧSkmn^'kJW:p-aB0:PvsqE:m*8/;:4FmE)<䲦kV:QcpǷ2[6Qj4J>_hSP'?7-ZsF%?|ir] >ޚqi5"^O+y(JQղ8Y89A.I$,. w(E*//򗏈wPqjߏ- +ҳA8Eb^/G[ +]swqߞ݌UΥ*rQMm@u>󹧻2{Gvd'gtkyӄs(1^R'aIu.(TiM$[o /<E55E2O~Gg<K[}zt-OǺ6_~Ot~O+_d~J=Ӵ/Gt~K+W^#Ǻ6_q}ѵ?-zqK^hRd~OulRd>VE/Cu-#˖jKS8Z~_t-h}_S5ǧ?%uaHz}aHz}aHz}aH>W>N}C$=:$=>$=:$=:aHzm]!>E}6#Hzm]"o} +VR+>Ch}vd>F=kS_ P}*U}A"L)HA~!_HT (xՇ/Ҭ>?\//COL)_|zmRdzm]!]!]ٯ=:$+CӭX}}2X}m_|zmǦ>?|zmǧ[Ұ8?|zuש~S8^q=ж_~B?|-O{mg=ж~B?|{jK8[}~#ǺV/GF?|{kg=ѵ?~t~O{kgzѹqq:풗=@\3Gҧj8WΩxKWGIOoߍ˷F\dIaўMkTྖ?".TzDSe7"_JD;cޯ+EWү/x۹T`4#!Ӌ_",vԥ˧}*?bOGIW*q}5Zt*sԞ0Y.&JN!? 񷹶R% <4A/z@CW_CWSAЧ1:jŒ591“^iJ +wpHĝ:ܪSRO/onϺJm6㎸2}D~B7 +:?!wsO"ўqQ[K#!R#"|sE}J(?_".`|}tC_"_ +:Q^ +CW]W*?ueN0xn)?&))iq;Z"{7і^۽MMT$ؼ<|fLyRiʖ;S*nO9 +{xZ=RnT^Vbկ-HFƥ:2s)F7%./3ZKxSqnR(sfw$lj[QrvʐQOަix$rcKTFSjRNɤMל{FG jT%WC|z';AWUh8P8F3ޜQ]~׃pѢ-ZT!o]ыgχK[Դ٨IxnN>^lj%sVZ}ZQݾ.29F*iJVmpip\>.j64hܧVMCvؿSG>27aqV…6R2P Y$lkkF1vRݵ&_GSnZU9RH4Ԡxk(J挮)SQXI㞙+NꞯJޝ V'R1ݖ^x[q|S}LI\2ܩ%k3O +u8K<~h'lYvf=\jS|HγsN]L(=mE𲢛wV5}ӍԟxԜc]cwFd'oJ75:tfnNPR9E.p2{{SiʔF{p\VgwG[8Q'%ᔼO 3U9BβJ L&ꢢ*UwÓϷzʧܺc^J0nIR~Y1hdqm9NQ4n7nOzy?K^K~RFAw]8ϳշFj8r&%']~Щyua9wcUw5A +o +{zo2=r{)8])6ZH{R)J-Q~y1IKZ=̤R^ROZKxա(Fn4tW++䘔u;?G!F&VVS{s=/R.r)?>dJIRUӆq}k۸NpSs[SKۃ>ucG󝪑qmIKld[wN1Rx{cɸ}֟Z*nn]ښ5ͶZ}̫S^G/ Z-/cTo +VI]SS"_S+ΟRRy1,KKS*sMN9\K MFړ'VeN8}˓IV|OMMNPtMT7겣Fu1)a."%Fm)0NtNAN\zZ}hZBRsҥ^[`~ջn*.:eyuJ} fr⽼"ʭ:NBQÖyYl!B6dJ fny\x 6U +0IInǼ|qCMmx+ӕEVڜdR>['\…Vpڡ Jri/Nj/֝KeHP.SŮx>euV)Z(tw&R}#SSQƜ 씾s9O|zMҲY]VB9ЩQd%\mK$ ]s[HMQ*ܖ$)mM|{x3~zUq<4)JeR,qvrd~%g(J.CY +>yWі/%]~+2)uJjr:iFM|RM?:SSW,F1Nyqa-IԡR羷gPp,{JQhuU/*VԻ*sԚO["A7yJ4gktJKQ5R~k+>[XlEkB]x)9:Twzj +(;JrK+ SN9M"ۭ~UէT{+} fjJYoO1fp&O`S[vU*VRNN9'=>jպsFU(ANMII\&6/i.*V:x/kgeu}[Woo.v+g wt `ۋm%s_-?^y5J{aIo9$:f\JI~7'q넽5rij +xMq~}+(W :F}7gQ-!]~ӢJ ҍLC68N5"i>Xk}m nq[x۩e9p-MM_Q(B5 I_[+ro?hCf=eว)-&6w$5Ic t\R9F[0^\zzqctۣ).J>B+o!y\`tZ:HΤ(5&M{qTRHx(QA@ 6Bx +OĪ-%e(%\*(y* rb=3}]9ݎfϵ ˓y).] + +.=DV W=JUSYGkJg7r`i$V7Y(U=:cWn1ơBm-n"5-J.4vzЌ_╼et]v/}:'̩KcVO>ڝwi:aqϟ(k4tdB[ŤV)R(iьTpѦļh4}}ԯѩj;ԫ,~3+KƝ՝kJ +ɵ2otkMWc8<\q~ũ/薚uIUOvSq­b1ZҊ^I9}GnӺaG ΢TWHd4ˈ:u)Jpk2^Qz^_NiS^:p! PIt[Tx|Z%BVi%JKG16ӻ33Sn9Bdڋ~864;֪5I\^ݕ֜ib1XI'Mxj:MQט_3߳V4*»Ԃ'ZJ?{LKG S"$Ievgӕ+jJÎe(1&bvGMӪ*(M +sz˳:}W^-}eokQFP:qUjԭF95i5J]7G9Gkv+HdrԩRK?WNv컟BRjzͶOfCMJZ8Qڔg$I=0{)uZ=miI[2 +S)r9ʝJ)I$>}< ?L(ІrmRofX5}_~4 ~Gf2I") O $RP o d-eS+XY*$TK\WRg(RidJJ'F +|EzE[(S 7ֳz((d\!-D]XEVQUB2eRL` +arBoW?ղ%@}iU.jƜ[rxYL"K*^ji3 }JmR5`JPjQm<>W[u n/UQpRQ3mnӍZHIf2t[Bncg6Zݎ)FIEe3NIy OyqVS鞭 vIp=6>93z[N:nNY5-8(׵]UF)ͼ(Y~m:U/)FjN;\,zC.iü}_^K\eF;*,EE4SR骷UcJ.J*S{V_E]c%{G-bZϖLJi}o aV9IMg+&-h,,:Un!w552hj[zjKaVFlF(:mIFI{;j4*Vi۲rxܷG]5w +tN{MS5FC<~\6Tn)B5)IN2YԢךhitIM6ua^2_qirQuFqRJU#>_FyKTV]bݞZ͕qN9^k/J8+)'* _ih4ܻZJ<\*-yk1y[TFUe1L5Qem^J4Ux9/̢E3"KerJյJ%,EKpeJ3eڧJ~JMc+/O(]SXʤ,(e/%c ,{(E +Lg + 6W%7/҉ EAVelP~Pd 66jJ]9ITmm/ 6=U;^;9lSncƪ[||c$]tG ӛrTm-Zl.t m Jvjl䗆pwIII/V}"j;Ce\*Z-.PrMGJR+'E5ŜӡVudܶ897E|i 0_ 6iU-Ni,I1~]D',5Mou*4JN)<{[|K4H,T*o諢Tn2΅/~=^VNb^8aG>χ4ǣYRަ)F-,zH"csU!J}wrp˞ݫԧ;VUYt'5s]: ZӂC/-4WRliQ(s{Қ^~>|v}ѷ(qㅜy`jNcGk"vzMxKk}^8"Yt4R + s(ůc-+•6ZsvocxkmI2#M mYWϼzwCnIM8SVaZwd[TP pY:oٚt! JEII%7m1}4_Ot߲c7?fpI7[4:bť_ȓL] +kTdKre L1DTEpS](vs)$`t+9.le>BK8eKMPXiaYm^ڍ~y,=q6I兆VA10 +炜AԮ +'\<_-L)Je[(rH8`r[ 冲C + (BǻqJʵ:tjUZU 5ӔMZLՄՕ]ݩ*v@m>Gve/CJvwZOuRJbFQ锖Tɍn5F +ZpA5)S[݅^vjU'gK[yүEcP:aMS̓xm5/ %e[]ZNg=T)5I>qeN[xoϵ{Fvz; +qROSw^$^\u7m!ػ;+QԧqgZ |17bot7PԵ>iRw$)f)/<_&ޯνItbq,IGͷաmok'^J*mM;تp*֭Z.6~%'^YQR9FE轤Ci,麍hܺ}7(%ѧaiuXc+>4]4Jt3T^S]gwiт)5<'E_vuq}궱eiSפRż,3ɝlc()USiM%2nSRT;Ɯ3/. 6ӴaymRI79 ;/k^½YUw{c=ԣ-cg_]F7w=ԡcsQ$tyVZݕJ$Sڂږ,e}Cq_WTڸuR)8GJ-˄Y4Օ^z Zx*ܣ9UU%)Kg 3UƩٙޏ8V)ՊsG⺎^^бRU"9ԟ $ j*jL_~4 Cf=ԗoeE4e[(o>2Q)%d-XS9*< YE7,`Xݞ3(]W%EX y23m3fn]h&Ξe:p[FϠǕXZFBt*En?] Bk*pZ|IR/,>x.9/+]=K0Te*2゘PJc* K"L")ԫOz*8) + h o0VV(TPSAL)J`Aҿ4rq>?61x+DH.`)C\]'g% +.-yc.22ڍB.M\mSn{O\&gWLqNڼ7K 3'5xI\SpRktdEci..Iҩ^ưgAd8:"<>V3JÒjwp7Z֍(UK +QM|hx톏Q8jvkwExů4m jkY8I.~'lm֩ +zq}+ |꼮.o^+8gJq/ze2^E8j <)EYWVi7ϰxY^kt^~QtE'?`{k9-0ۜ}WȹaJy^B+4I}kw]S2YL7n %Zj.QM9$cՕϥPtN[oKyX떋0Z6~Bjk)#+|mBeEԡ&O׊9p~y3i׃jB2_Y=(%l`w)} +nYUn +\kீ(W@Vck%`ډѿS[|TI-įf”wn\`ۤ:XY{gx~YF=.Ҷj87rܤ"=fꛬm[Q㵬t8/ <{;ڇ֭5BN5 g_ &ϴz޵qEN%7S{yzVwR%83\ԧ%Iy=V[F})TU:[9~\WuZ5.!F +>"$qvT5KK+yFiFN3梳_>ajzu+jVQR3*IGrLRͭ:jsU;=Ie#t(TJSL}N٫ +WK|ӌn\0lz[OHBT֍9J9\4 Y.TN;:u*J}[ڥ]y=]ZPz=*2mO~˞lރY_]Z iߠ<~sOEh(`2Q*EE +$>%d0:~-YBm|8et[8P{{0yNm2W)1>6N4iSjWTe,?bX6VV-jNs{ŜK %m1ӿgLN1/YKrn_j;'>I}7JP+*(zin[[B m:1osp1mu JHP:0ya-OwVF (ЩR*8xݗ/<5UhFhMdW( bx~(-qì 1B'ou &*s,_zKFjZJhcݞ0oSԫSm~%s^8HjVիjW8GE%nU7 +DxxmUb⭮VtO1[1rJO44/QݵG/I5=NTUG.*-8fEzwtRxG#0I]J4asBs$Տ,?&{Ԅ=SQgV3Ti6=3{'v\nIq/xt IEe2[Wݬ%lۈdׂu)p@msK2#ʕ[0sVݫh=Զ95|dБiџe4[{Օ֓S-ZNZu:u])z65ɭ,}ZEƛ鱺xάg-\`j+ t4h(eR㯙)4K FWu^9BrQM0QÊX[ZOiz?22ZQrF:% Л좺a.W}تԴZ^qw>c\MM?DԿQ48ԧ O +-eg + b)kw{R֫Rsԃqi||L_jZF5Zt)B+.0 |& ~{/WPfN4QQ1YYp%J"8+,=# +-^7:Ge5Iաܼ8'yN%o0--eVx1/( (3Tڔ[qjRRmme*t?;2mgm+jnSXIs]pE,#1 򻳥}OFK\jZ-:ꇯۗ9Yo1'WBڜrթ%&eѣϒX.XgGPGv퐌s8X ~F^8yFƖܹNOtOב5o)ҝ:oNXQ^^2~⏣]&8*sIs՗ŖjRi)aI.1 Kj%*rrY%y<=ʭG8ŪiEɶ8Vqi)tw5'RRQ7dz5%*RPo9qO=je(nF;b=qǁmBlYyooͿocF۽P;S9maBT?[Kg1焟%}ĵX޷nYsvsci֋OoB8ϟ9ɐ|xvE q^}T{<XVnBo-gmR%ۧ'JRQ\4i֧Y֦7a!&q-Xos^X:e 5R[dYǙJҝ*+zwnZj]&I۲t,kqsFMp"a{ ]&*EmΦ*X,mb4˩QpԒuzd_v*PZhbxWTS Vw d\e*QpʶUZ\c* +\u-q))*qro0c.~#=p&{׾᾿)OPZj/kv [^IF4,ckѱK_%:cޔ< .p:Dʶ\0Q|,CkxIu"8臙Hd +ꖠ傻x 'yGק&ZMUk +~;ʫInr~OΩmZϤJ/ )()skV 7^r^MG=ǣmqNwl)lj6%`|%3(0W2S9 ৾((,W#Dy.)ʆR]aQrX7&WgCn<_US$@{ҿ#s͵KE.Gn2U,E +<,]F)熋b\2c-JJc=eqIp\lQU8 +jqG\i4WA㐃a)MK +yJ\cF"EP-Tx m>n(炭Q"{)0E[ yTd쎥U> Tp<L=ƵӖ-LQGE)\QVS)SEzLm/ka<)O8) +4SKp_S$\+!pQd(F +JǐK%<|Jp9e2A")+#v +nD-/kUQӀJpWh|,"* ]Í1_Ƶv=_hIS4:YSUh=IKɸSjhl)4Z<"aSv#vMڛ|g njj+51qTԺcШ=:k2ܗ1{O(SƮiz7^8̈́y5&x(%jRnd%3qxqĒ|3Qn:qMk{WLԭ&qԜ>ZqΛRO] օͨuo7Ԯ%2Sk=p[^7g{s}{v9pVUc_jtWN\œYݷ)5Z2pR3J=[,zBTjO*k\ϫQ>R)6oxcVR2qʩ98qF{e/[ m/6p+ֶUEM}9=i_Q)B2sK=Qktk8G՗Yy::Tܥ%$IꌄY_e{v:^~Ixлpa4|V|ׁ.FqMxO/V )FK)4ןπW81gЌ{wygQKFpZ.}3_Pz&x}x3RO;yV8] ~Mo/2:kZQ7QۚQ˓o/c >RʵF9Ie%ot/(r.cMg Zݓ^8ޡԛGkqd>:0j$Mp(򸸧jԒ|_m+Sjil^xk=3 +fbRYigvkN kt{Ypn/Ṹm&'žoRQ"O2Wְ7GsxG;&9%sq''6Ҩ}fx6WWTiʬ߫ -'R[BY˔3%xfJ֤jTkmU7&o<AT徘Kh]ӻ˃+^ƏZUQ)ҫNwTgr)tmaOJG*9=s.*gy~8<ԥ:KK8Mu +Tm)ҧVUbQyNL{[Z=XGUhҧ)ʒM8eQ9=1WR̔iՌ(oSů?icKRw[d1Oɵen/)Q{\m QZڳE\hVj-6.yj7k_9SVΩ%&.VޮJUeNÕYnm5.1J*ҷl%MBťoK Jifp7TR}eUP9A˜.8d5[IF3USg&=޵N^EgJ0dO +йw )55ZС:QMJĔbMJ-Vh:Z&%On=Ϝx2Fuebn Aa_t[8[3eI4Q MguP2H_ƕn.iFu#oO8o\SM"5OA>$K{/YF75<9u[$Τjѧ(II8G<[ڨXɯ +[ǒ./!Z4j%&R|OMӔgGdɶjnuvw,EA.Rr kN֝ENRi/ 68ǁUqiJsW25otJ3UTen^8ǑF◸NcbQuJ[m69+>YJmw/X`[jJކw*UZ]# B-r̓+*0Uܳn>c kNr=s=zZ'R-u{-{^fjPyKٗBRSP}sē~B: )ReI5|KOۉ*-Z{iBs5=ʦz7j;/Z-+I9M2Ut]D|w#˳>+I*~=ricGdFk Ǟzv31RIEeQunftJn<#: ]JiTͥǟSl^&#IJSIJ+;1nS|oM67؏]}Cr;2J]"'xӫ{ +T&&(_OqB֝*ssSğY*} JoMUY+JڝWKGQm))y'm[MZj2>2xe͎1s9WZ(K3rqdoN5ʋQی=;.w4+JY5>~xZu,橴:u\xpmFOY!keAO $~ 9igno|WLzQ%MW,RTcrSVM흤iN9SeiM[K"c +-i<&P|ь'V"p]YJBT^vџz'cXVֺ\85!=6n|risպ9'WKFI)gç]kztj]VmҕR(,'ӳ4=>QQr^}Ҳ?[lDӷ\ʧM5ewkQGk/(WoU鸥cǰڻzw>QeS6)cqY\QWZgўd‚䚪7e۔v76pԬkTiveI^'NڅRTQnrX_ 5bibQRM{ SVUJV2*+ -xKZTRy~<KцaY;%kpa4eĞsNy[Vvђܔ(JOQkTJqFϙHTqY J߱2jIWrm=9]Pmod]J qoGj/tO7()F %_p+zO>yw4)>E$!iF\!N*/I?Vtzwpj/ؤXBpܚxi5YOG%#"Ni)E4&)tXHe3ʍ tvܷ-xYjkɬMCbǖ8-vZw.j*69]xV:9I6bvԪ<mxIQo,t +ʅ9ERړ{j#J[F{E +9EK2<.,)]SOj]ZIe~#ž9U:MPMA$m|wYz+fG贲ׄxѺVTcJ.p}:tsOx>E'X=hZ8W^J)B+nyYݦyJQmqYYxN8X^yt/J;j[V΅yΜe%\S|BI- oQђwkԵZ +4qXMt+*hG8BEAb)%OٌthR"N)tjmBԣ.ٷ>=ڮ LPR$k:eJ Yzi,rƿvtgUAl\S+krSc+'c\l= +ue+VVRI<-USiIbKGጰ 6ZǦԄcJ{'J51 }Wo29kRO c+ʢڒO^C4B1Nw2[F }ьʍ6}x]YFF>`%[MI\թAӝ91SIe6SM9&jP(I6),a?nY=J+BҔT0mZNc eU,??31gʮ~Z% R)cLJ&VBEJᢙ ̫)-+1LdW-O=Ju<9*):,['MO`2;s1C̒_ƕohTsiFU* +QJSۈGO&vqwgYSUl9pڜV#vzٜQkwqoZ +v$[}TwRSQ(T‹OɱѸ)R⭼ (:{m&qm;Rk֮[t \4K1|8vﳎxe(j5q8RiK]:wT)՜%(>ĺ+F]]=OsOV|,.nVuZޣG 5ѯ7D.Mwʞ))$R#)\Wv΅UTT6[z4$ӛMSrr3auuc'Ҝ8I||Lʲ%%N44a{w[IAΣ*U6I,#uC1-5Y]K/Ӫ۞3 M(\J{R8K e5w0BuWq{L] +XWִ3N XL]ק,%j0SQKxi7UNjEFj+/11<ޫ=2INuaMcskzӸ\Sr}[_| |Ⱦ+ݼ#&*2#uFSҢ匼.ZDZW R+*Vzڬ5\w₟w +;VҔ-|ƻ/#g qqgcr+&0E^P\ͫ ,r&ja9/"oMJTۛIYZҵ-ʴ$&T9J2u*)1r2/\ΕN*1t嵸+߇>\%yVNNKK;-qz9* +()ӒcvQMŲ{S,e2n+3 VWSlFdqP2L_ƕӧ1 e{Q6{N*[(Orr||p{l*o9{'SVS>&jU9FI)gjy[yIg;:ub8MzK<5S?LimNYEQSI'BdF{q&]өZO kRu'*eSaJ:m]>U}qPQl'ѝFKs2~&[S:pt=;-ܭ+=mkʥ[INQ\gY>Lzu-2ښVY^Ƥw'9lX6ڇŖ[icRRwg0rӪ,Ү*]*׬ss[K W(mKrQ}^MXQѨѲ8&E^nzJYivnx4|m JS9ϑIi5*VT<Ĺon3យ4n{Nꢕ)wLz{kr\JU5F+eM歭tNX&>8<4ln&Մjg0S.\YQBb;ԯ#dJc%r(U,)1WR(vU-O[(^lIE (75F~nR'ƕCf=#[<`IrUZ:׊J!x*)Ԫegy2Y5Sjzcb%K" %VJZP*KɬԣV2sIR\tcCU1R)G6܊$ 1 qvĊmC+FH]RMTKe@]pQS"ɑٷF)p:埫B>{#x(W'#-[xLUOQ"ܴ]R(e)BUp>u +C,e22S,d+GТx*l`deKdy)^>M\e_j lE|rB&R^aR/s uP]r] +d٥J)u1SE(f/}{[Ha2䵌e5-%259K.JrWa,,\xIk!l (HU ڊ6vxz%kAYr15EIu$);zq)9IOGy)WI "7r).^ҭl+)"N|~(ʖ˗ +X.22L% 9$O˗0 A=73mCJd_xQdzͿF5v +dgG @$S]J)W9}fRF{m[xĦV>0|EC噛j.ns;}O|t#,8y̺}M:"jK\NуzY.0u4-8qÒx䦙aBѥ&jvs_-^OJZ W?~iq]Fm}DVGRǫY}UIb+an3 +tf+t_^3{Z?9e{ҒyOt=77̥u}^uR#Q#mE$ Z⊧oIN3pԚ~ZzV |ߋ<.auIs2=+iVIM%,L5x[ӷRQ1mxecXu+Իra.~V2.mi(;ZiO .ڜHn6ıhSKs\KMR-,gy~B4"QO|92[*R)m_rx(e8-E2)Ԫt*QC)6\|pWYWЦp(x+%A.<2U BEF2P*9 'g-hLƕlX,Z]eZs*ZWEqHS821CY)(B":ql꺜Tݜ+ӄR[b?L hRe|У<2kIegmSFЩS.[$1RK tKw]ZPY$%/dNt[S5ng+Hx<kFfQyit2$ `$<C &3.I?.2[$0 g䰋eQvJ90(e(^xQy\ԣk!Rx(VO`gPx)eYA^~.R(wߍ+3C`95(e9*B2Q,u.)"9*zlE|xax(}L:-R9JO-=cBӊϨOv8qNQME㔟T2ե:ѩR/QϞMGgvj81qV~VYJ]qNݚRZ/.-BSjas/aJ2-\O%r1DUEԩV)^(xoX*EVPeG,㒏%J0cl` +ER< +6QWз\5"PƕӧZ F=%p䤟%[X +E3Q>Cy*C9(?o!&V%dw`aRLq~b ⭌k\߁E W`).T$U L\S<⋒J%z2|p: ,p(V/+e1Ԧ +>\dcEL?0 йN[S۳Z_r$OeJ i3(kx(-r{+:XCnJ4U< +rtQL.ese0La|eϜy).9 nah'Q>b0Z9+Z(CSqe^DJT5\`2eȪY2\\U(E:" Edd9] +'y uE2UD> +u}vpQp\Dt|ݒ"7ѝZ_r$ƕ[?(l"R JxKb\ J2%8(FψyV`&3W&Q 0sQA$=p +*QM>2˨YAT +dRޏ%vL൶˷xK,W Y!X02c8+֜y.y(iOFA7GĤT/9ƕ-(8,m`@-*E2W#yU"(+?Y9*gJJXx5wi}%B2W 94֩gmی?l-="BJs᜵񔴴ZrSrX8 %(EJY"䬸(W%U1O%PW82FE62J5ǁm(2Q&/zQ,G^ 6፸ RvrRK r1Wiv Z+"KƧ_?9pk:]Z ؼ[P#v.'J)ǞR%(Ԓq4zU7ЅKj2%4M&+%s3O!5Q +4K< N:&,se LEpz}J5مRwkR G2Գ3K^:UՖXDdW~?TW +QYɿo OY4^|Frxӯ{weOkXo5/)<>Nrc\J*3&y] +7LY-Q*,.Fz$-p`GR>ߜtxrg&D:oyr!-ҔczRqNxݎZW\F =^KGv5<.+Imzc=fҧZ޼So-8*Jy<*e*X{V7E5ˌEQ2PEBEqF|s((BE2282;?2֟8OeJ i5?k3RUVYW~bn)|j\.}Q&m-=Z{)Qڢi%E;;7SO""_pc%`Kk̪yEW.2ZNZeJhԩyouy +*nny|`u*շ:w/ j[33kukQ*]} ՌmWixoRqO 4REBakZ]kԗÇFX+'Iڥ:BM:[x`ԥ++ +Iœ'1{ZSm)($F8^ֲk׺+hV8X3QnRIMp~[vi|#TW5)diԔ)(q]d~"{VUH۪~s> kjuk\G5g + +7o/ҿJn%R><2G{kԨa7:Pk;9rHN⽵yUE F+/ō[dӇ2|].aV8ʛv,z_M:IMT4~+>,ѣ:YTeA}ZQ*;yԓڽI/{cɲxЂ\zp=O^K-){UcڸEŕ%:3N1XMJR0yqZֆ'UTᄢ?c6o &WC/ZoTvMg7iƿѕ +02ɨmԭoiGP՟\m^s(K&KnS^O?`LrW8QF\)[*\)_XNƕ?iF+J6Xâ +C,R΅jaURNSN\KC4)v~úBOKvO$H + +>X#g%d,:ݔk%Mɵ~5[i{V (tXKTTb ˊ˗ǜdTEk)^t[,}'-*j)%%)Uܶ<ž\*p u3R4'\&:5Jү^UkU"W^p>'Bwm̲χK=UQQq#u-NۯSmAB1s.M v.TSSP:Tjq%7MJ׎O +TtVrRN/s&_iteBM<79ϙ]VyԄc]$^zo*U6bwGޟTV„&QYK͚k]SNWT4MK|ߙLҕz}6}Fx(ЫN-gO-8j+f̱([m,~ C^R󝵫MS/Guc^ZqSQښKϰ,>(J: + RR +0)9 +M2iOMpƕӞmhLQGBHͯZ)Gyk؛{O?˶\(EsR9q*\Qnի(0f#)MzqӔ{hN75R3R#fm&ooG̿ mQI/Ma΍+vB1o3ryѶ**4R|TR.3YMr /$^>ER3Ե6^QY,F՝V[t.4!sNT,Qi+ȭ8FTbI%IpRK,"i2@\e+߁TZ7иdddѝoưSd_ƕӹI4?aEnChc#+( 1&nұYy.|H8hzH)Q9ac/,R(0T`dc%S.XE+\v+]pZWJาE~z > +d|E<E̦21 +Y*( +pUhd2_p_ηHP\ik2=5?iR"doDW/&R S2S,,R6"-y).JPctJD7 W,|g(-gIʾ [ %ūPJGYV:ljTx[D,EQIaKO% +`yETe\|r1ZY*-oXe3X(nk~4ƵcCb2y+s)W-QChq)4R1W CEZۑҬWl4Qq5RrP[Iy%Nm(ԋ~ I7eq)1SnJ DE\|+ X(UDw v +ǰҦYJMRm,-jwӯWU',tԓk;wcQEt> +ߣ2QF&Er[СI%B),`B8eJ2 +J4V!2# +>`c%VQ)Ul.ATQQ<(&PK)Ԫ*]C)xI֯8(?ƕ-(LQGKq +MM qKo |gkQs~}U<(?XLd⋖\-YD\O:48s%z>CIadU6_in)nT䓝 +)6G^{+}RBxi, y+Cf&_ڦoc~KK-Z5<<=":'J2ˆܮOfΝ9kڏ6q3רM8 .Bh&Xʔyѯ +4䤲S=,Lʭ+y%RME.[x/3#%X*~%#7er])fOxEc,9'3%,9{YW(U!+[ =Je/IsDVW9- > +~k~3?ƵӣZ?8- \.\JBpQr3gV0x8{^-+oWWVΟ>9Oo I*KU\d>GWI(WWLlUnlTi.qm-/aynT=OfByiŶ4DubνEJ5SMA[*p{[~zkWo +UJo֎Gѧ`hUik1IVTd( $,?aCQ_6J8<2lBc)K<+4Ƴ%5E=S穉AXis^6_OԸ<H*S nws^X}ܕ?$e'TF9MI,=/{ZFu!SW4QY_Cݫ$ޅ ̪SR\!gˆi{0+Ф%RD_drZ*^k~3D?ƵC=U +_Fi޵q*wWf0{EgZV:熠7SwgUR%'-mGktNˮ'gʾx~E rE %cТQT]R>F] JW豄Mܢ%qW=zGe>Zw^QG=j=[~ɝUI|Y_!*ҍ.rBQgh̾{_SJj*]VԮziMFJ7TڞM.-5uhx:r^,3ujN\ʔ8ƞj4"fO ,$k]KRӒ;M3II{WCsRiTQܛ^\dШ6T#.|2Fj\[N +rok^>f|?u휢-g =jyF^1oJ2Qu8=p]Ibt)zEg'&Y[zg +tÌ~*M|&&VvWJJ'R}Z\NP6MK7INt_OY)hB}I[mOoSd%b9NX14R:e,bo9D7%דU.w_J_iAm=R*TJc-ky`ak]J,V[\&QLt)W%Fp^j3Ƶ%o1KAtklHy/n8 [i]R݈730PX]@edr^s\ Q2M&\yW%[2x]18ˇ/%Cw +R%p9b\ +Mu޿BңGEpܓz֡5tk${ 랾=?i;gULM>jΝ%HPT4D{t*ER mwkJ1j9Yꌖ}o;ƞV/_=Z_ L"rPAGNALR}-[GqO*5"4?i2B(/"1_VVuqQ^I.pSy[[-Nnr)IeTA,־9J.J4Z\+dY+D]KeBV\C\Shepe:k!H`>l`XA쎅$UgLPGSATek% .k[A._:3W%>(-9C%2es\-lK<KsRRRHnL[Ъ+eQkYA20ZQ"VN2:!VG #:}Fp!() UO%z(X S!|#S8J?`I\.J? (e%e>2xKk%XD x(E:A#\t a. E$S8C `7]?䊾2*Jt-O%6UZRFRO .[EԦpWr)0y]JSe7AZdդ=VxU)$zdmpEf3Kest_!!|pC[C}}f~e  >e _ Y>j2Wm? ˏ=O? #˅MM~D즦HCOS4$?,QKS4$?,>du?HC>duOHC~dOUOſ2DbKS~du7T- ? %?W~SOFo˗e+{J^l~Ҿ}e}>f/_{Jl/}-no.Y>j[u_ިS_Y1Я̾cG? h~2ڿOփ[WOփWW1|TQWG]]TQWʾj.SSV_/Ue5l˅]YgMe5f +K?0',|iˏ][’2vaWVi~X쾭%0>쾮:&rccUK|;3/{Mb?}i3:iX.j!Պ!Ճ֠}OCd>OA~)biX|_ V+32iX.j!Ճޡ2i}37~C?߇ً!Պ_~ V3W~Qfj|_ ڿ*3~}R{37מhn4[; +Oe>eT/{9z]~P?rhWW_օWen>QZmQgPse>eugE\+>%~eU4 Ы쾨__._()J*EMUui_]W9Z%Ț*|j=ѧ*>e5WSD쮩4 +ܙGMOʟ?UrAqc?)uN mK]ʊ$g<RJ````(T(TP +``LP +RE@U+i]ݵ:igwNҽhBs([&u*qt[mvyJTV‹ҦQ]s [mZURRiƝ-qI>M[oS}mR[QVwKrq0Lzki6*k"%)ʓoKs\g?YTYƝJ4%gƝYFX-JM&)IWT(+*PQr_fw5ջ]SV%)-^YuuuY_հUkOѫ.'K9O86vVҶNR˭^7njIrGnd97bg]Y [-2%Z{(ѫ^RqYTrT7.^%a|iԩ?G\kEVomb֬n (Ա=Bz(JTRJvv/U3}jUkN׿h=s B=^/vWXT Е{%*Iz'ˣo8x,]ZRYFQg-1WsNNHSFUj8%si SOU*w0o('RnPua=fے5; ˩Q˺j'rom6<1N7hJ{u⭓o1Qم9;ۉU BR9RTr=iť.\^ԯNvr,UZ5)FI,(,nKa,n(ЧyZ+(SR6c8yS,a^9U +hVU +ܼ\` 괪eN +n{FKb/|\Եj MjR+JTQ))msۺ>=9e'lK6PcZΔǫ*ʸ65*2qR2 5(P]xV^|Fgi)Tt5|c_$e\_^S;74.w'bjⰽRp(˽LAOm.-/FJΔ¦"ڮoMU%ҫ[՚ڔ$>|n5$vҜdM|_>԰m(IΔ$E7Sr' +U*N0MIFZSm48=u}R볔5 +5FkS1MQ]y{k;7i)RV.-Cv&9s<uRԮ\+e{Ƥ\'+ .0pH.i^ҝS(SO#ŒקCNZ!*\GOԡtKYwh-*ҏշ.!J(G+)7ڥ\ݍENcV1)3qsYvn.^Zq3$O^JzTzࡌk}:prI)5䲞ukZt.f\':o &<\BZhJQKrc5RRj2mONV::}ŵJ3ݼf;j%(>% SPz!^δ%QSq43Z}\rSYO&2!N粕νNnS4OkܱWNSso+U4$EQԤ0n5+{Jۊps][9FmCPmtfV/^oOz㿩J5\n/1mg e|M1iq](1&TGnjݎvo m367n**dhû>sm*6W*ШF{ROR)a$Lz;{΢ҩ'VV7){QrOJU' ӣ8ԫ:{wFiͼ4f=ޥj4!oqo*IIf;I7Z/8I^Җ3 z5;b8&,{J_V#kgBaF$1>Z(fD*P)ӸUV]INNQbw;ZevJwZ)…z]ۜ:Q-eޚԔTfg QU*B0{V? JJ#R^_UF+>/ahNBIU)1kt|<.aV;%B:]g[0FYRK9-.SS[l[ӎ֞6<~eոz*UQQ0c%8,$㯉W@nj3тvRn-'#ӲThPFiՕ=ǼXi._DdC%aRRaG;b16zRkOqK QIͥ2﬩6m + aK W쬮SZӕ"({&u=BKz0 BK8ʒ+(ƫtXymcCi*}/S~mݷ3ʭ()(Q'BQKk畆eYX;YNJҖ ;bIemwDziG'G +0m1~}y^vzWҹبCkޱ<7/oo*zL*J\i5%?|K4O:]uM{-,%-)Q;iNRtTSq(¦S[^\Σs:pSUcV..Yn8\2tU[TA;S~{mQj/$oKFNv7Z%IAnQ/ +ewFsR5FptMR^̞ʧums [PqӒ9QNڧVtXmJIÔ$C:5Jp7On*0\'0ZiockS*)mpKڍso U)Mf3 ,3[ٚm*b%5x^gs(wU)EB-*5N ;ONW`;Fi{iVmx,,|-E$%hePq(ի:<^NK)&zrVyod$iV_ңZ;[wK3„'m mʪTqq*׽T3,ctx R*:npTV|Q-j)jSҖ͒yq|gĐV^ܤFHK2p4hJ(ʽZ8u$ǂo͓QM*}AOQ&cQ6 :kEcNSJsO5cQKwy[o=s=6ԭsj7jz9\<,t9tKgZ2jSbV#dzJ^n'EeCq%'̴Ѕ{ԵݸET`N}ho3/Uq^ݽN88)(eegiGgg{VWu*TF0`)f)eK>ӣowmqVWRE54,tX=,{wNo%V,l=_/%] +oqVJr9baQz;s3p}MeӪrR6ܤcKloz7^cՔ%J>N8NHԹu\7mQuVR{DCOP8_σ^ ĵn) +ܪŸ 6|/bYKM$w=%',wIϴFN +.ΫƻX<eTԥq-qT6KI97ncRҽ/' jPs~-dȇgi:5a{%VrEqRܛ}˾f(΃Iw,Fj N+X ͕[WAjR(&V|jc=JSqj߈No =y,9Ԝ.a_=G#(>O U#so֫9UUXN5R$LuY[}~N:JJ%-ɮ3i$.LuHE& c,xm +qsipJz#R3q2ĺK6<3鐷njS*iFM{zUarzC_n>AF6<9rsBn->˸IWiN1s aeb+^z sNQ=kaKj^Uy9J:iJmmi'^E-hU\5jJ9BO4<|1Y wF9Ԍe.rI7zPLʔUbqR^M&$$QYTZxxxy-o +.NQrac/ ex= )[Ӣ[I,7zϹ8cm,,YTuV,sK>Yg(^@*SqP +9( +[kJKgqQAJ[W a&&{¢(M|x)ģTQJ4Rxcӵm2Y wZ[m9K[g%pӣC5%VnYYsY^2:z;3PIKfq4Z{KhjzꔫwQRp,Ol‡i*KYfWpBJiӜ>Z{qc2*J=ҮJj1w9^8x,ootʵd¬(ƍE(eK:٫JR }m t=,Xk=6)–ԫ8QMni$eSOhTMJQjIQ^eikHgN0kESs[pܣ{ZUgs(o4 M}_1MIs:qqrI<&.kZ)b(nӕHuzYxo{eQӌv˼D]5 nrM5 FS7Ft8:u#޷xk̵<%irx+UNrKnq764x1mJN9Nj)4)RwoYX>}2.AedRQ#JJ2$獫tSK9%my IӄKIe,aǓY6N>#;V+u-itY|2i-*Ԅs5 +QUg'F}xx=zv;NY(҆,˦3B7a,n/Xi+Yw*\$mI> ʹq*(8Yϰ[uYP*ԧ(QUinQɁPrj׎k//Y| &֮FIJs4 +)6ZL[wZBqRe5ƹh[tRIiBU\V2mOOyvOJأ7QFRs=ymjѣRMNjvɹaeO]shT%)bjTP ? TKjǏqjA: TRX))aE&寀dWS[Z\mtrǙm Δ7¤"*u!*u[–%S]G ljl]S/95VU(ݗg8[s?UpM/}pbe)Su*(JJS[3j)t%Kt"SIɦqO skSVoU$O8̣(9ږַe> R7sSnZܣլpc[vMt*]=I)-q,.Nn)wQ:s1$xyCuSGS!N]&E]vjSqdWX/O} ay쿦3'YӿES GV޺n:PRs֛_eV)%w INSo㖲0oȥ]:[ N書+*:rOjXV93tFi{fҋpQ'G44 kz3ڨEٹSUT-AئZpgvV:ͤwJꌭ%'B~ŸkKi.{:Nm(Y 睍>Ԍ a)+N8-, EwBT7ԌvVd*[M_^ҵʷڌeOs۾P&e^x0nZ㻻iN”a%(*qmʔ8)&;j*VmK|NȾTg^P/J[n-{鮏;^2^Qm^]piaJ TbbwVSgZc}]c9wSR?UJesa +*0Kjp:;T_)$^z-KuH5gUksYE 4v1aCXܺTW$< qQqz:M¢*c*9yMsj +%{Z[MS +jm]9$TIIE8?b|U:Wjuԥ)єb$Um~X6-^V5C+ld/z#sqBv]ˊK˄MOg%OLgy}:2*Eӣrmr|>sfկgiheQCkN*wFa/5(%F i*7׊8Y-R5nm7RU9?;{sc =W>ҍXFBe9  h~wqV=)ЭmMT߹E8nn_K9IvRVRPĹ |yAT ŧ}E5/ϑ XkaMw/{(/>O+*&VR=Ԓi%sx~Fgi.ӴPy(y8YM5< Z6ޝJWu.gN\O4*p7ntmXz6y~cjT I\\I4WkcjtV;h5 V:ZhNJ8Zƍas5QŽ9TV0x=RVM)_]W&Ҋ=m蛳<<~Յ]FI탋ԟfk?wk j%sBtݩBi73˳eƫ=[TPm騹զ>u¤#(c);KjZF +RkJ<ᴾUw~=l{9=BTݥ- c؛`T,'ӂ#"VsUm^H8}QMڼ~C +XxφO+ _BNy'տӄj'$k(i4|i*⥌%[vwag.R)g Re<OR)GmHFKII|mA"/mJNc)gR^ +ZUu\лwvҍ9SR'$(X}exyটWn;TI[JM')yp۸u] =606a8VqçWVcvq咕(SӜ#&e'&L}* +U1IIJ2MX玘)gW{+EIvSNIre9$\,arm"K/xEF +N{Vg)[#\z.N7B/2zUh%4RTsz%9R8ԕ8b2qNI{TVT)P|rl,Fuc$xMet|*0̢i6;gv՟<,Rjʜ\㝲qNK=pԱQyڳ8^=BM&#ׄ;mqڰ,?B)B1J)a$Iycȶ*qN1Mb}^|i%,<[RIU򔢤/9Kg"D(\Tvm骎5 p$g΍;R}$<]R a=,y6qBzF=|yoo'/54)\gZtvR{-2pֿ!gE&J}# +U6Y_xQ)x7BhTq}r˕8([=fg:Zʅ8Ҟǘ9T]^e K[[k767y G~Gkk/Y/KXsu*p(Ԟ=w/~ -KGJNu\j(zD_V4nYCZWWmEӕTYFļZxoPj_T-“aRI)bm Rԯ#aaMi\ӊʉnn-7= ]5g +iB"׎2ije+zt^'suJgߜIp[;5sdi\ܪYojSMqxXa} m+O wRn#i5%%7=O[jΤoCN4\!&R՗ZSm*.8F5hΝ',Jw*./URMJT:q^tS7TZIs*[ZWU$cLyy^wu;hƚT%x1귶zM;JYY臨*W8i9꼸=jV4KN$(b8M4%u~_2qI6x#taei[]XR;֚En۸_C؞T~w^z +ouYFp+iF +$mm|ٶ[\,5вhe׼R:U'Bso:t1IRUժQfU֧:kjXsQܥf+8#]zW\ҩt8 x[+RNnZ5#%!JRi.m<=F)\J2!+x[֚[s)UyӞLzUx:R +U&K-'S{r󏋡";K¼HQ'mQK(^jgj6v+ZuN3S]qڗݵĕ'l#-{{UOouZWoF6E*rTǺSRB[m:vIJJ-tZ5nwsvzwq*ԫ +T(FeN/1IgW콲JJJ*(mq$ Ŧ|pz]׾;7ne*(Aa^yOˆSV[кI*5N8)9O-Km{ hzsnmYTjIfq;sc[w}JZƵ8 9+t\ܵ^kf\ӳnhV}qgdRrյ+yPBdawP{[y%N\J´(W^v}ZmJ5KoK)\u\2J.U! .>ҪW59_B:#F4vɦ^[w[۝jU]ƍU)ӔeJIr󻇟>zeiNSn;8wjy\mRs[֩*mWSG($8oMUyugJj\P*=Rˤ\E=ܵ͝ZuV 焩|ĥ~>au^X +N}Uesd[Քkru1cǎ85k鶒(mPqU!,҄NoÃoYPotN*R|K^FSFn2XT58xtj4+S o8A=۔o sٞ*% CM4^b$3?4dKG-J7iJww&vwn]zcxv+ƴ/pOqTpɗi^TֹSIG1p=xǞϏE4ԫqe(*N-8B8RZJXxme'񕟔i4QZe:=;f<{K.;)q_No:RSu8s2 +7 +Xԡ&.3i%),Ze:֡seQSF߸[5$ᬦ\VSn\|-6VTkѦ^j?}wk n}߳MeM~*QQM j}m;QuZJsXԒ8[1d*9J돜F/ciSӦ“Ǭ|#rI&iZt+ +ӭRU% s9{AGϰg:ޯwQNsp')oUfR\UӖ9qM'IZ)]թ NT7m.x<4; +J΅clK#57㎉^:5uOO]=;ޞsc<;QH{`x;3O;HKtsӧ*8إJYrm_h.Uk*ԓܚX^}k֯a*5vre Nr7nK޾8]CE%ZJQ%m[׻JڷsRQjmݷ=^2CAa}RӸԕKzs(BrNIoOGyRkѝp\(Ϝ hZlkwPڥ6x/ó.IТܷkc +(:pqKJ8Mu˒kZiBjFXMMy,E᤺g1sZ7:S\/{Y:x\Uu K+iT!NR8˙K)^֞q֯RƤn*Q7ɬJP׾EƇ^͍up3>;gmk:kWV)}ۋQn8痙<::zO9^(_zU +ի҄9}%KeI/{2*U$ v[s&ז VVj%JjUEME%g^՜Z=ƟZ[ +U'Ne(\dW"AuRW>wUp߾N2%/YյGiʔf[\I$.\_hvW]`MO|vK.:1Юz=jjWR$G1Qj2RK /W+iG.:e]6ĥ S*m,m`m/k^Vu֥\B4ܣNJ`s~[XTӬZ՜jwTMIE18\ݞ.QJMN_K)p} +LNSqT% )$mO9FR*[!,C ͹eѿi죎SLR(ҩJ盧4sQkҝiS7Q*NSەzߺRzA{NXTj~8ǰzזTF9IArݾ.̷,z.K)ht9ߺGpc)J~WOmkUδ U_KcvkQwtbН=Rgau\\jתpGf<Ƣ[w\ǎ>f+[Ѻpg)}{},$R_fT}ۄEF0ť߁4gRI)T%=;b}:{j*AN6Rq{N/=|g*urwa&җ1J>gT-UJJQXyܥ4$xhwZeeBUʦ_}󇌽k+ɛ'uiVps8) +]sש=ՄB*QVsѾqyxӄ(h:bJƼaNM)Ҕ5&_LZT +ѫ)N.%>G.[3ot{BVUj-n]J~8K|9)CC FXNR. }m9m{҅;<KksgٞK-Ԯ(Nv%(JN[ㆽeׂ-zwP3enX,pVG\_:qJ6wm4pr'>C@T;*oZQu=g?)J+*.]{,w<,(jPryRjqj' +*wS<^1]OLyNTr*jdܜ\x`UJ9Y\e{y.EAdB3PrJRV^:ux/-sQxl£NQML'1鶖RBZi-g)x +5ޝ8ӧpC \ʝ*ۭRM)aGdžK~Z]ZкQ(=ݘ}18:v֣TZNջ$ŎVdd%K)Rti˻b,v4i &ҳpS>I +itSU%V +HX\-otKV%wr7M7Kx9,5HWBxQRV'$c+ ƥ^իYU/iF-$X~/[S6>┩o(B2s'5si6^ڲR˨)C\z`5 Wi#ҬdQ%|[Ikjh]Ҵjnua9E72\/a2i]8"0B*<%m%QqNjpSd|\ +endstream endobj 31 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 11/Tabs/S/Type/Page>> endobj 32 0 obj <>stream +HW[\+~پ9 e;X`D$ K"JVUw:23}W_}uzYo?}Xyiw>~ep|X'HE{!{mwEr·oIOçNmaNm>u[;@HxBYr9[Tȶ|{; 9q#vjY&󗏿vRUB +5*뗝{gT T}>\-y 6wӖ9ؙ =shN`K3VkЁ:Kp2Õ-25WãƤbdS0=5]çEے"5oZ9o0m:Et”-Ik/HAa ,`tFRKXDŽ HR$r`P&\\]|ɰUp`d%*;x]1IYR$ٌ9k+]`{16VS,AQx:(K.#NUӎP`08\EG&<5w:yh13=#sj86(:{/$CyFN'&eEؑzKDS~zs^LJ~||"p8]Š]'ed- U`U17ʺ OCqO5WpRf΂+G c:ttYN0F#ČZ…g3-$u!rm# taee~Er`hR[7;"^K1)qAHOH\gyh1OStt(ȉ_|pb?ۯouT[ѪUM(zԱ!Jx)ɲAj,Ng]i:jA8OoG8W Z ApBL+Il pj,"Vf9lma!n#􈡠Xprt4$56:b5ǒ2MЌ-Txn42ÏLTHee +kjtjP` V RXJEdtה[qy玺vz*:Tn[ + AC^xw?Ro_tXE9ĘXBu o&H, +/-<|Q,_y9T}1 E'C /JŚ@ +ǥDJFq6x4,7khvKGx_O$T6sI;Z,KaM_0+a^eR6whnEY"θPON{e'ǀ +DԗH.Qwi1[USפ#A\R%喴!G2h:΃01#{yzϚ<B uKuN<)"-ڣoVMo꠻[°Y;g\d s(:%5'f^"7% :+0HpTD Z6<ͧ=NBԟҡXLHh]ۣNU;/:鼪ӌ5K Nb k[$Cn(:i*K:*!K >)`sΊ؋R@?ٍ3#}guwy%~I4U3&ywi:SƵ` +v0ƨ2Nf!KUL5׀a )S?;Ƹm0149Vе}mE`Bt+!:AqE}MGSd?]:~:|y4%CVQ|UN"r3U Oc2CC?!E3j8ttD$ks:).266x5ӑ-zckG`ZYsI%B!Nvoc)inPȎDɎ?֦$JR*W&o*vZ=vkz:J: :QUe4{pX4 D2Hgɢ`RjzTS1vlyiH40ת4})SeA[zʮ𾬴Yv&Kmxw앹Gsϼ&|visEύ`]E{7xFHL͐f#6KER~C|94 ͱPM^ճ*>(D1WUtd% 6|;,L@8TfkZ=.@88[D"P dDY2_k^+7Z߃&`bn?dj6nq&RPiŒ87HF_bF.`6XbqՓ(\*Aki#eC77\ Q@XGUry o;fuy5Qr#1"ό\D?&;@LbyQ^% @WMZ~"JBTY/18m7E>t0+='#>n^cʶ/y*Ey:2m-@k1HDHPQwvh  Xn̞C1'hCR[2|H ňFT"k 9{K;m܆o'SRw%yl^{vnsN3ȸxq *Y@j$ A)4Dk0\ov{w[_D: +endstream endobj 33 0 obj <>stream +JFIFaKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Ka +  C%!1A"Qa2q#BR3T$%45SUrs&6CDEcet +'()*789:FGHIJVWXYZbdfghijuvwxyzø?F'R+b%w'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD#edq4S 0q;hlr +陏(Sֻl|2 +mG)nV ;L.#1q lfy5-O.ŮϷ3˨* +F̙ٙ2p0ԕWzUlǝXpFC]7ש3p.ukmRUP@tF<[hlr +霰 +cױ>MbE z<ӋS"M.偞 6~E.+^e)I>UCYSRY9$sr=8^c#9XJ܁ԁ7߾cߋvs񛩬-T3:uucewdTt\o6խ拫-^^u$ulH{pr2Ґ~4GUQc]jfܔ_.܌ʋrPy+m:y9j)XFm9_]r;e8BUבOo:ݴ@^`:;==DׇKNRp2SvܼŸ8++0릵=%4p[b,_>B)#[;:=uj뙘jʰkØ#h0lJJCXz i#\L["9IZ*Dp(NR}:#ӤZ-c-\*MȽJRn""""""""""""""""""""""""""""""""""""""""""""""""""" 'וqw:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" q)+mDAFrcqܡ&V71"#q'Q qHF77+)b""\U}W-X]MA ^p$޿Og_Gwinmr=*Fzz̟7/үOd}b7n>XqIS:O6>?Ŗ[]=c./w~W8_G{~pTߩRW02V~۟zW6xfGNzw-n9WmhSm~r~tnOHovW߸VG}8fKv~@fGO^GJd~mtd$|:}?tۉܟߨxM>%.J}]Hi%>ڭ꒣6GHo?7WRcd?Fíc#g> x^O_%~ۮdGw_fWOq%~۬޾%'_cr?J/WG?vWxu;$}u~]a?_?~OGn>,v~Q|]qP~An )rq~O}ߢSy_?8]?4/%ůߪ_#c?(~RA=~PE_o8' <;$-J}[?TqGg?#Tk?G]Oꒇv?#T?8_%}[遑RW͏ WWq4Z$i $tO؈VSpbSqJn%e7+n7:ٗ(=vj"WzS-?LzĮ{DzjZz F0GhSr2vVSԷ*No_KWw|˥;ܬhJnԩ)WBSI]TDJ= J{(a~3VN>Ovμ@7i/Sm!剧UC2l߬а3swnNe4ػSc($=c:9K +}w+uPjBtOlx/Q")PzT(uCG_&xmZ*Jձ4 蚶n2^-Pݢ}Y be`[#O_j7Ͱծ>%|ukHp[oQMŗWo !Һ%v:Q?Y@aU68cc[{MC6߰mkml7lꈡyǿGYxwsi汱ޓe6t$|ai2IYC+PSRee JkqJY]KIԨ=%w;])(eDr"%"R7+*eLT2λ"Wzu*IEޣRI;JDDJn%A+L%DZeDGJԯ)Kf[ΟFl00W~ӰQܓj|%6*WiV +{M0OeLoyVmVӳe}ON1m*5A:z}?8~E2ޜJr&yn\{ь.CMv(;ju~5^ ; >ĬYlHaC!+*ԭ#iY(C NSTl`"*vUӱ::mxk 2Z'Ff8.G3+ZCZ::YݽDdO5H>2>ةE CfY<ϲ\Q-H-׸nkJӘi,XI蚖'O(LDF̷f#@;2DcqJ J.'2s*Fr*D@ܨP*`hMe;j"%eD0WqR%{JĤMʈ=bܯa*ImOD@(T6ؔ\G}5Ӭyju쎝v% H$v:rJj9GSGPQOp?(ִ5,\zyUIPs|QS>tF{Ӵ@H$ ]DhtCw2MgW UENj]R?ܟdn"7(L%L@ew(`AT;t1*: C*:KL1*{ʙI] LZQK1>6f%\b] ZrgDG%DD>Ԫ)BeA'RvH%HVR" AT2p҄nBv72Ii9Wdqkv"($Txרd'jU7g1*h5ʫ]nd.6zɪPw#Dz|Bg Y![aGy>7 lK6<0A>')ڊ̅ :?-J]j[I6zپ郏pn;Ur,:Rw݄tJ_#ې\_bgm)m=۪(ED,B1,t=O/]:`JKR`%ւe6Dlʝҍ}rG4ܡ2ഠ-ʃ -mG4=c}%@YpFL:v""Oj zT❭u+u-'ϸoIϿhO8ՠy,{ut/ no˧K+ZPK>Lxޞ7㢻E+ +Rw;wnSW*V#_@}w kPnPO2'G_7ÃWl9@'%^;NMM2Xp_c4(&u_ū&q}SAxjpկ3{z28jE 4M&#;yI:ITRRlIQ5)%7F(A-RXrSGp%te@YSN;kZWrOx&= )u^)#* o6h9:G0פjU=tIw +*X#z H=@=GM^hP T+(zĮ*LperjQF#ZDj#P:FJ#rDkf.^ұ*'?d[3uDD^rOpꩊZwڶƈ`5OJpx>:Q^F(QXi>y^4?ysscc1xW\de +~.ye =č +n;U +E]*$3_Uq~8zӔ'%r<)WYu * +l//7޾;ùvxn=)U(䷖A+ƕf_p&8,kle(L,GOIpfeϓͽwzJ#sDN닆k4?Gi]H,CW*YZPŴzY83X&Lc5ocucՏ_OAƱ6AD): Ύtx{q~[A٥E/OxdU׳Gz sqrs0}]",žXͫmeJ[HnԐ19t?v޹OLiMƷDv*#R*;@"[.T5-=%̨]))\:G/HޥH +oG֓)5L5ws3_G z]?zPHԋ@)qaf4706xnՄ|9޳ۅ|O77WQnK= `et^ƺ}`:ʞ:Sz2"WR qӇr-QU]V{z}2.Kz-ACkG|K32 +A;, +>_ێ 6*ߵӤ8`}U~ثC)dd%@ۼ ʮP 02F')N!Wq'-wBFP!U$6{O|\ %r*SDnliNm~,Or#[y:)V~~?@IK/fI{U;׮̆Ll!iS]W@XplI^*+:TbY`>ۄ^&2(k58/!w`P]{~)1ج5%};lta}(7Xwβ!IP6}D^#AlPZÕRtLL p%X(eìevܤ&z{O\'笍{4n~""Q᭡>ˉ՗*O/5me߼kc}72ū(/ZooURet4>xVggdA$Jh k)2]#]0T}rHhʀM6\4INc)߬oR2TJJK|}s?Uu +ȭm4z;+hE4S|}d^D(f~%cwerk .xS~i+e+U,POSŘ0U@#=2`|gEɍS7SrO {oy=7jOIIGz:mH2fXZ)ZeCI]BSUԆFS14=oQI̡Q k0%CCfVԪ8d('i$Z~2)޿&5h1@?I'Hש{"RnWq-֥֠J(c}`7.Ԧ7J"PfG.˭k7({ )5:䧨iaLJ*2)H֣Ԩ^MD` wpؗZDYB +$uH"j|O<;*NK9;ASvS@P{^g=-Zf@Ja64gOʧBqB>)O{%Y⻍\6CJ{`c'Ű8u`t!)@Nĝsۅdc1,)V'g6тt%S1IԬ1VS[֥=DIQ(eDj;J0 ʉCWrC]O6(fEMM[̵U3ԼjPW}%5%e;5+ JST1NһFȍnPA+Qi%+dV'4;,3U0OYYM7I]ˁ0#Un4tyUZPIV)SR!s:/9?Y2cq߱WoR}:u1|/>Yj wo-+}RSzlnZ7PIX^6t6u>~%j])ܤ@]ƆuP9L]#?F(W)36tҳmIj~Bx."N}XB-E&[;']fO +KTEcMUw85v+3cɳ` ߮*:ws `9 a qQV:>Ϭë|wH( ĻaJzNפUl+ütoqg$U䢠.rϧOb{}> Leɭs|6=gRO&ݹ@uߜ{U$~'Obz/)$67vt+ls$l2^B%51T3ձR~n{gVn67.AA~}982n : e1-z|]ty۠_s:OtA28=V +b ޻wϧ)+`Y5̿|7`<#Zw;O|\+*p˲6QYEV,7/1pd_L=[m/35SHdrfw>Pr#Mmd/6-y~wAGSY_ǵҵpK}6ΏcA`@?\ο)@}L>#eS~)GIc/˚LZ]A +,}$ ^Һ-ѻI؈Yr{")㗓TvlLw*  㮿DmWNR>i`Y[nqwGձ&5 MnT5f-GB7&^9TTu}zl.4Vz'|'KvUZXkH +z @o'6lT'%h49A] k s* Kf;$LQG}5_I:RĭE`9A>zK_x"R=5m0%J(=\ߙ1@6KZzJOoR߷~ֿ$&joNS+"W`H^=r6F !kW=k[b:Ln_10Py@:i{Ž땙;rl_J) + zBuugdQo@'}MTmzaiYiA̲{,!QIMe1o}&o^%Bޛ %Hbcq|T :' F}}8-ӽ9-pqĔRvӧYMVV|=G) u?cxHFE +FEsstaXC] 75'x +=rOI j\%dO4̀t['Y%BU]C"// +z 0kl}2?&Le8~btzoǩ;(c{Q[LGyqh<*}V[kS!Eu,{{+O<d\O&B/Z뮓-%$@/t+ DҀk(;& HżR=9F{.Nb dN|-zņ,+rH\^%K6(q*+SOk&i> dUOC=Mi*6Giٙ5b;eVvЈ\"K m4m}skF| l`V !ԃ;}Mu ǘ՗ Tt&{Ip:i%ѻI興)5Wv OĶAz('3:jVyI_-(K@ +>iN Le501 &oYQ<ƪ ^ĀH -lu +Vnց>H|*R v,}HЂI䲯"闈㕙F f̋zS|Lk'@e^;QFs )1kBlJ=DCR'p=2,W)jאrٶ}V)V #ЃS \qaB;?Iŧz_=/YqAذ'^(]os5T(>Yn%7k+V#* dKזVєRQB +.ҕc׎Iw])sVʎ`C`rMl‹r`=:05! r/UTPthy=VK@$}UqiE* V; (~5[v5/F>t߯e*@[Ew-70 >&kU@@G@{Z8Ztݽ%ˍR@~hrOg@Ӥ&4%R;8E 0߆dߓ8kI N°~Hr܈5?2Rz0㙸ٔV-$vNB|~60z v|7'?'Q@۩&¾vs~s. (#ֻk9A=7;*='eē/|{O3TJ6]H^+JKso+V5T1dER}BE_Cg[::Qi9so!*宔Q Ob7q/lVxO3sIHe|&ЩS0+86çKej !Kkױfp˛/#+umpzt MkFщBKtYHj YlA: .Ի5C*%%.3! +S5эPreq>U뮽ۗwc^Me+hϠU=gĺu ޹Rtv#a̜WJ`T$o%huPX"TJe{DJF5w+krDaLƁwkPU@445C_ "x^E5Y%|=luCWN肓X +5^5ȸcs+宔.={`ԸnOXWIP j5+HԤ`ecRe7D@WNWaD vn7 nV7h]˻tj A=e@M%%DBenSR%%cpNvj" +@u(`2%ڔ2;FK A/#QyMˁ0 <#go#tآ" WeFcR6% {oPBH؍]ؔv=%w+jSRtGxjQ5+))* )JrBʑ %z FԮ{JwFQ=:J+(c02J@ZXJ]C zJX)(jW[Lo8~:r"")5ZrYG AINA+(VP^˔5Ǘ)ɩRzlJj9V\jVP R%:"6e ܦAt*vtlA+˳k_ P: JoR +Oii̧߬5*:]J.봦+TSb7Ʒ-?DJތ$#X:2ޒf4H9{i7(fܶ)5n_.d' ?IkC?  +kC_ȏ +->ңCOO7se~~RL}q/ܩ1r•&>WRڿʏJMjP:_|3MH yY? +J fAAPxk7 AH>%lvFUTˇoT\<3*Ik9+?Ak9+?Ai,}f~ +K+o*DgA@>s?r +k7!/_e>ֳrX. HYuӊ5_Ƀn$@-[,ڷJjP:•~M'_VOau}OJ_J}f~zY__Kù|9d} +V[]ں|:~rj_KY9OyoT>?TTxs;~O`o87Y?U[@Pxw<ɕWm,º]`_$:6_#W/}8կJ}eN߶}xW4:O#[7c'g5u|<Vɿ">rmThtOܑ0|32Y >!["ky쇻5)"G]rkYǿ#袯 ~X=Wk;$ߠS>?ΉJ}OwCBQ eÜ@?)G)SGƿ3^ҟk\G4,־_Un$?UHZ>@U_!ډ +KsA|ЫD @_%~3~ AIC\)Ql?j'L +E@_I~\sav,@bǠgD@MJĦQԬDDQJDQ+)DDFb""""SQF5+))sNaeb"SrױjrN̰Ԫ=0 r)XHs V"Sr-g c;JDJ ߤDJDD`㼣0^뤨;'QĬDDD@!?W\Zc* \m pL-趾j|QRboS=x \.a:)˰t::׸MѕK +s,y>#wC¯]uߴöSI#H A`k/<9TKIӔƶڜΉbʠc1~? k֦ <@529v,':zG<xVP- SVW\wĉ}.FF:ev﹜jn?*k7^ w'[K>z xey*6+6J b-o:뤼q^|g+qK+*#Gcўxz+ͪZ1 + %wގS|e[05X +N>MЙlXjPh\V,9Cz>֖2AH,&ƽ2>gUGf>EZrYA=Dĸ4ȳݺ7b@D*8Mл+әE,@> ܐlC:Ԇ€Ez;%.'(/`U st;̎(յB#R9H`: ]4^<%y`רsNECsܯ0uRܿcYe|Xj +m5qX [_ u֤7gVYUU5UbfTĐoRG+X֊fUdr9F΀${2bܾf䨰r7:;u ̰W]tB`kYLL+P,U +a:V>nJwJcQ+&3*XG bNV:^)V +V+ض{JcqrlZ[( |w=Gqcq|lorQ^m=G]<a4.+s.y+}U%kpZCk־N08] mOgyTG1bzkS'Ւ[%ڵ5:M$<0k~4G*c*,<_m|&Vg ׭,wDFnnJٔt믆ƿVx)qRX='~Ok|AVfڥ$9TbtɮaӤb+ZY +eVF@ %g~QVo*}(:Aa\ŰQ/KKyZ嗮=}/|v./4JZ79];z>]In#n?ے +l%= lg_ eK נdpFĬDD@Jo^p:}X}骹lKs#GG`_ǯjWTJ*v_wC4\Fgd\XA܏h{'1Ϳv[V[C`zi}'x^1`5-rPPt@w%!X-v +0F wc/%beh3)ɩ*VE@RyO{ɯ+"U%Uj, Kndm 7׼FՕx#Fh%g,:[$-Z9kdP53jߐegΡT%˸+)g6^Ta$o ^+fYju"Y[ح5@=5m<,:WZ PGP;=,: +ߥIFepǠ#57ɰJz8s!xubfba2oelWMhERwԙoBi8_<55O( ǡ?3|AGV4f;#C.=%k27 +ŵ:iX%+ۘP}˧q N-ae(~Pw܂z!8,›28UoeU}y`P6*&iMJ[2x c\p@ 2Av'&JٔWoMu+lhOIg2)*X]yp;k\?H{>֣iZw }=QñUֶy)uKLtEP@%u)ȤBT(^PT0 :(ֵQ+Zƕ@4?$j4% \(#Dlq2Q(JjP6vt5(%Ptv6ԻCֶVPG*-"p1'CgjSu Njml{tjZ%{P6vtJVf +mllϬ ^QoߩPF wQWe|FJGiX +1=TIX¼GA IBI +}tz~'ͶWul5Cԁ[$%bF*ٙ_!j770abZuQ\jZ޴-?4~wpЩ#gT+qL:QאK΃֠9-hveVA뾾xz6T*zrl?6CJVFg7ME뷘rs( +w$""""al01mȮaʗQM_ x⸴U_%6VDllyRGgi/m&[J|_fOڢ-^nB9uAqz#/n*296R@npJh32©K1> ܄Ns]lܛ +6Fz.c?9E#蝑̡dDDO\̩z#V YYkGo1CZkuEy އCtQ2K9iרeDJJ;Lu/cQt:<[`rTv=bA2qcGmupݼu4w$b$7 qu`~g` Qq^'Sfl @jęG@ 239ɺE+ESzlM_}oki]P*C^vi_//LaU6aQU*`t58F5LⱲٿz*f!G6>yP7[uIz: OIomcN=_q7`Z]@]33ZQ`|sr ?p -~Wb5Гs3e sR3 +Ҳ򚍇.5$݅Ŭײ:0cԃ߯i'6bܡ7SJtázoYW +ñ,piv҃ɑN/]ScqA^,nӤCޜ*vOQZ3T UvuA28}_~6d>RYU[Փrc؞|3gp+76YRҕcMiPTkjJш@H'Auxf+bq$ۋu5a]-%vwo_틗e9쬐քh2Zzh1ܓ[')zjAT$QH3.[[EL4mauN&8~-bݐnd,J֓cx3둋yd=\A8ʾH1 +'?fC1m~SVMle#ƈNzKe`Zj enls"* wP -wD}oz2ͺ-9Uj+ ^_ϨXe(:6רhv#Y6/-z\ʻ>g@zlTMrs21MmnG> e הlR@$lЏ+߅ĭ6pJR|̥Wk@kYZmJVIܮЬ;}^Murr! _k[k獼G8pJ8>oCJwޏ}\SԪQsyHc7* deXRenT0$;Wz|\m Qq:TĮͅ-k[ř-3˾Zܜށ<{_Xy4KV,r0lC.~",{ICad_XҵiV!]?0[{I<ܞ'B^בk_*#'&H;mi1g Gs: ȡ}|x󱩰 ż= #+,>>B#Kk Lyv]w㘶2Jq{0)MufFc^}ne +E63~d/.$e71U8Y g`{ +PqX@΂ %?;)'[ci1#]eמk +UF U|#p{#R•˭w:L!R)v U4SSRY͝E$fc>!W([b>6W-nΫEVeeވ:Q~[0ʰ-/ܾZE֔k_|Wݏ2׶ǵ 3b${ WW#'1^e#Nlw5vTLCF${=8 ^&_e&@qQU +v 6O]I£-G/R>#ꑜ>7ת/4VY@.H;toBq{8nk_dR!:uI,\/qnGfLmV(]+hfE tTt_ϳ }JJVyMB5z̮fEG>EFf +yz3|]&R?*՜NU9íɹk mͱي_e@RzCyo3wrk)CmeC+hou&FU>{^~WU`Wv:GC<*ı1^綜j0u0:0>7q\VFSd3dӐR^/*T ;Ⓘ#qOd. +^R#^H38Y4pe0UFk*R=đphɹJlk6ֺv\Rp* +;ر oo]zu +ImoZ*1o~p\BŖ*0 $ +f.ԞEmoӴwcߚf25ucWVAk&~K˳g+ÈzՓk*.F;m6(UJh{Ckz$IkYxD.b䏡Ybo]~Q[;zK=ˎڭ֤g'g_gx +KZ|h Rv 4}dE{{f Y)6>qY* |{Z(2dl׼Lq8rYs5xCˤ%6֗ԙ >|*뎵[rr?}$qlJZ +XX66:$q`@t;o="""z"8-\-]V썖mt|)L+c`bjg;b ;:]m'13qX/R9yPkGmLd]MiLz`5lG 3o_yr:Nt>['&Cl0A-bU*>őT|d6MF*}Lr/Ml4v\p +o=+?x>:?rg ++ǩyRUQhHy87[K^_ڟs¬00.d=պ'%`=K ufqNMWyjl:_dѾw rxUG[{%*r;dq - &QM{St]w껉,v)I9"ߕGT8pMn RzL/KdXzkJξ$?1'ŭ_͢)~lt=̺-fg:jJ)qr[mt邾:oO "Ro,_*`V}R]gWx-ein? .\)j7ۯdW +ʮ3@[J<龲uG\ertK(V kȯP,uzhdwBP}7Hòpl̚ڲH؞W-x2W/b˨`hbıq-aO#]{w}6M=c퓦MjddF5?8F#>0~0cb*AO iG栓T_+1CB͋Aթnp ay? =uc$ؖ +6m\{]%?-fښTRJt驗1;$f3-&($aw8Ips1.kUhWz}̞ode`4H#/WWgkHP;SMz:.+־:eg!Em|Eb7;B 1X-B;ү.ïoC ԸeKi.;2YoSF 9 i`S+qM+:o9V/&2 ͵T/"I[rW) UK1q̧`#UkV%Rr lפに.ۈ.eu +}=em SԦ&GG`S v/)\Ǧ#-V]IP fljX=fð9]nWyD`QB%I kdMsv֙ 5Z pf8'd@Ԍ6O8tf6FNIp{ DQέKyzɯ; jK+Ulﱽl?iۚic确Fa=iƢ㣋!}s\fmylO[)^l{3YɍMm@_dz;Y'0VLڔ.f;;:jH`qHM13V$Uo&R'kY2<+Y;VdWj޻&(Ú<8YR6Gf; Pd\ilʂ }bB5 Sq.%49}&56os:fw(k~8[wS~go#%Iͽ߾F\8udfu+}~R olsua+j( Cg㮲=DƫS`(\PF_2[mu֙K vDdpLMV d t; / +^mH6-+G`FKnXy-6Q["(k=qpA]j=h~I}%Q2AxnSJ#?*l\(lQA`=ۗUEFEC@￲*XtVjF`JPĀ4uOX{t,G[=t72*(PTvh[V]mUȮXױUpJ+PYE{ea@ǯs~=L㕉Njyw֮L ǬecKZ( qǨ5לk ʱmwO̡&Yu!WR4U`~e`%U"+w +A鮺' @h (ƺ}'>Rrv￳Kq01w*]|j]m7VIU 2s#-BRX}D}XЂU@UTpx%ʀl{U0ϯZ_ñrۚ+s6Ȭt=pk\[1 + RǗ]opZVÖ-Csv}eS4?I{K-Xw/AQKt[/"AczD`ʡO/NA2&=|?vJkR!~b5b (yI3DҊ7U +}OA[S] ^ ]++_SZ򯯲5O[q=#0 u=%cq|?ɯ6[޽e>ryG"s t*;jk,9tG^K5ԂYqh<~cuN9meF'2pq4/,΁8ng ɑRXe_FOjiLtTB@Q2Al{ N[#.5!R><ǫ r؊qiP,B]ܝz6Xx4Vma~mnWv7)9ye *u{L[nzLEJA -z{#ӷMttEwr+oH6p>s|JRO:Z@B}I% 4m{V RXNc-NXEZ+@EӠ>Jx^&=}tV0`1N%!ٍKw-R1?I#TTP:pJl4\(r|侵Ag8cޯiBתiONhhOJ1R|(5CO|UZ ʅ;vO:x^&3;EhϾbN=(ãj;| ۷i-zstA7uSNn~Qͭo]u[O'Z.jk6 i)qַ*Xm{eEV;;; o)%(@o2u+!@j7(kk,.pʪ +3ez&B]ɾWEa%\z2|dxe؎Xro#6.t{IG+dV` Rb |KWmW-AUua,m('CdKZd:'S qehN]~=Nb"""$*,N5V{O+P >]^32"y`Hqoϻj,mY!)N6UxlO|̈O¼j9[nJ(+9^mtIgDDDDD^v=V#>Z2P1N6+ŭ5eL˰t4dDDF}8,t},|ccHDDDDDDH]7)oq.!1 +J'jھAM=xJ8uZЪ̭Ixw:>:'<&8aߗnj`>FcłXozT"J2X9^ 8Hd +mivںuI~%2q8dSϴBƷ?-ZT1kv&د(r:{ṼS.]fO[PV XTDR˼`x~G] w>(gxm.E)b[x++7/>3q<e怃J?^fXom=RI4Iqͳ^HML'g< }fzxn\L%VVq )`OzxNdX-qZ`9J6kg`5ԏ!"Js^)[R7m8>-M@,z6ˬG\R'(pUrU\ֽ5kq:}{Oj,c]oiG ʬ=Hs#3vzl|*| +Na=OkR-e m(]O$i˰VXf eֻ%kP +R$oN; xoXĩ jlP )0qm-ɽ%M_7]…:ܿqΙH" NU{pc d1C_2y>?(`}~=~oNh\*"S#)i`(5 +3l7}t|)~-Jc-Wfw7@$1x3JM(rH$u]O^! Au7 TXgJO?D.m|/7!yw,»M3#t2Bo}5ׯ]˥MadbwFGigW//&\tƳO0`=;%-YWɴԳ +<~VF'=PͳrؚtѴ ݍN;0d/^:̕8wZ2)jO6 xyƸO 96ۑUf=A,von3rX̃ڃpt,]v5˾nʹ؆ۇ!6sbm{2=9]Ƭ({B;;={tM[q^^M%MAvLrV2=j;ztq5WjEaa8nv5er!9pA9叝ZOsߜܡ?(c y8q ׄVB_UCL|/\?ϲkcd +Un]꽂I'`mť*O bgq!8vrT׌Uy + e {:qLx /Z\aRq$0N+ ;::Ͽ]u/w]YXyإoY{{@'O2ww~X=l5_'ې"V]/^$ͽhz KynY:{Б̻:TR,[Uuz\epƪ^LD }1vc:-v%䶶F~`:RkZZ=Ozk+$w<=p *eV +3#*ڀNg><*JfϘv9fU]{[S|f`悬dTkƛW!9nn@so+¸Vv4]eEp{JMz\_ dW1`حEUө@' l(UOUbDu]hv}2?#\,HSiAkuֽ  >=êjkUnRJ tތ.s WTuG0|&'YaQUƌ,Knm o['<#21^ 0'~9_redd17$kCdU]֡n|h*v g%~= k-g$wu٘hEU]Ym-[sۧn?p+r,fSstt~hԓ.C)09|ؖr| mGMzO7+#'T%dVUn#] # <ڮWgugl!3Ur/ܫm)Jwޤ'$WZ@JNe]k=8݉v-B|DԵcj _ 7+K3(1SX3+T\a:;`ox6-8;=-u1&eGN=Jl, +X%jѝﴅO )w{6@a kfCǐp3g +=!=\+/ 2#Y9 +uV3*Auu AB9z\gq)1͕-ǘuu@GM=}u=8E^݈G +v0~GYVw;Ԗ]Z( ǧRu[qd4K[efTht)[+*wP2ꪻ %^Na΄u׮X|@Bɪ+E `NLx^ŋU*]{7e/N!@Ku +b1X#އyø&-ζ˂J تt}GS1N^ܾ[Y#n`I +)rϯyM7ɾ`UvOmbgΧ_.jvXU/̜h}OOJ:r211@r9 zI8-5deUMf`>Q,lJZ:;u!\fқżBv/+Ǧǿɟkr틕gW޴ ɩ e d tL22mTzmnKӰ![a }F]rk^~byZϩ}<췑Oӟ^:{]*9bzЦEVr-C#a -خ|^m}u1r|Cs4-REyKdֵ샴KhڞX8%7U[3tR^x9Y/×*fcjRr*}š?ή߮B A%}7q2! ~nFpcqjHЫȇd_Nۄ\dfA5OYxkE"o,n_3\ֹ=r UnPV`@=px/h|22lm\6;tƱ/(Ϟܩ̬η73NUxichoC$p?<>rс]O}2 + |UB钬C7.z3ǣXPy{h]w5Æ57>ud^USCHٟ#AO0.{O{/&NB!i ^r]~>+ -6*+t^ۑmD}@O~CWO^F'RO{W1ܪcrE@HqLZV֯=׿=~%[_w5߸ӼhoRH\ߦ29-VY(n><{ "Uv*+r3 !OCGkU@TN0\{[P{2Ϋo}.BO(3 cq +, e#єdsȼ~:I[$?x|9omTrzO&?s+y8ǵԽL D8TnT Lܠ? {fln@ޕ;1٥T+ ak}症\oU?[X#vGY?U& )azvbx1/cZWfMp#} zIJ8.κ:<8+#u..k0@Vro!zcE=zSؓzKآB7^uɎeTI:1p6srVz|Dx\):Ғ땏N_0,ZkgVe aFΏn'C_eH a`:u^9{1>U tdfR#HeaHw@GXlk 3#;4 +*t7S&ڜ:0ڲ>O4Xd6*ڦP^Zm{t<ibwGp}/c?y9YY$ls8% +Eb!a따vg>]h$ /!A |Ln@ĵt!yC{>#ϵm@R3{ KT,V;Qu2TǙFʲ=m$|GI~ExյDU%$\n71927/r K\:w\U+)4O% eȭu`o2./Y66T#k<Z[0{4ysr_\s/-eyAR=7-ؼAiRA Mٴ'Xe-Dzҧ󂥆G}z<<}< +\5 +K1%ffw+1^nUG\ $/1h[ڢPf=Ǥ#s!j =v:VReql|%Q! t=L\Z/.9Y<4Nb zz7%"X%2C@so޷ǰjީV(7p +Oy<cKu :ÕF2dfffs/V!tLddp/3.֫T00?\;~Jio+U2nY\i%QXڲR y*-2 +|J@I306/\aqF?kjZR++oz=f&eupiEݷX +zbA:=8}Xc#Y5aeP9T͡@zwR]j_={usnVO 4|CǾL|#(h@} =qg}d3=V[)jv +7כ}}qkbUa@7sopYR֮d :~v6ln-~-V {G Z,%lIm6(SH?-yf> +W]lüݘƮ2;\cwԍeˬ G*k娷1ȣ3~'uq\[KVt+v=F#mjW3 %N߬-|kz9űr.Ʈ'PWm{+ w: +3fz!UD6% v+ށ]lAc,l@+(}Z2bsiј0^Uu0<;z"@(*5[{C&3+ 1>%H*4t~$XVOskd 0a*|G{$r9>3QVGt r݄udxݖhfKJEMҐA +F=o!Ʊ7chnİ(ђ>qn(TҥaT]׫3ƴ5LwG*Ǩ n'7{m@f^<v]gŴY]5>U^:EAWb1-[O7C@*A=ML\2]e0!$kߩ[g '#"!Ue az>j03Gk-"@6VVz*8ϓV[YiktRT$h? \ JiUKbX6w&<>Fw[-,64V?4u;q297C0 60!*sS3@9&?~S[y^zU:sq ƛ<,QXW-& Xf+y[㤵r"c^}T t${Sce_5Ko'Z\@FR7/*|t6U<A⬊<cOka+;;S83䇙7=̄ Fsk{@qKUsGnao\%X ḳ|SGR{dߕRx6 sT-7[cܖe|bIԍ{Ƶ2 GC7g!jjeՙY*SR8.}& :@6;/62q=,,Wg ~P@!0%[>dcqtR7EF٪M{fLpFyekn$O,J8KX@'S `OY˙pz%s kc{Y_ U?(Gm3sXe#GmMhQyWt kצDD@1;X֬`g~/_i k9WfPAQoT!Z)JvB(@OB@? >=q +q!59 9}l6xՀC + + ]rAֻkc+4(s(mxܺ:2˶u첆;t2MeYkPUJ + {C@b>'zjE 0QTGg.75n\q(g h_@s:7ZV%![;YJv-5ZQCye]VCGvzū- wVk¢*E](A(?SX `@:u. Yj@{P)}jyS°V+PYt4ǻPa19 BEQ߫s3@>3jy|[y6o[V!P4ݭkRŦ,bvHP D8faET9 +9)==7<8/L)7SH)ZPI +nL܌|_:96lsSAm;m+N=XPBKWZ;|OUN9utPaKSWijAc?\:25#ز#$J u,E5 Շf=:[+Zo|[/PSX +=t/~b*E U(V,}I:e:-4A'Z"yGխJ7e +i5plQ>o2cZQ P IHUUWggBΥl.RFA JB +ӕ>h_N]%y5|mёS]~htW:qh+V+jF/@:zDUQtE|mȁv}@J' ŭu 9a:˛ ʳTIE$o_>ȼ[01ܴ?^+F` }I``:ZZ*(P+9BRv3-H * z LnXMu܈ }QW^w88uIg)mx=$;$ u,-R >)V=t+D +h(P=K1pqT%`o51Ḵ+%tVLCqu緓_//(׻C_A fL|q yCted +I|L | EPc?P7c_F/9ͭ˛Cڃ:TkR1Q,Z/zkkh9E.>7=j(^Z((~!5-$kMu5׿3"U \,^QUuQR5Ѝ^RZBqo5F/7IY + +GfY+NrSRV*(A mZ=5\C/lZ]'RٍU3PHyXE%N:` ]&:D P r.={ކoGIe88Fq1E,5Dx[qQZp.ZPȶ2:;KkCc+-.6A:1x>%c{ˊƉQz2"$W <_Uʈꡕok#cdSceXb(f7{_{Y+>s ;HQh* 4c}G,ZRt:4؎Z0@ hw:$vd`fPG7/w{4[Kizކyp5YTW]bd>+ēcYj(5X-Eqـ#=Du^[:Dih\:Q}3 ^#Q`aK4G<[W-V*%{P)sʤ'C뙢V%&qN`wVR {5$""""[(nMmo^K"" C_T.ַ-YvJhS(V>:m~w( o V^6Д9V^^m7,j],`ֻkKqF#ÄG([aǿKV8ey6E(U[oc|mlkZUjt-gh-rOäZ-UW/7咮Ko3'xqo }-kZ"hzbt7ӡUqܫ3c:kV!}iH::$}),d5ۏY/W`Ƶ-CgrQ/*bcQ:VNNgr)A~Y_0d&זܦn}5;ĪjU;]=ÿ^?qSR.K^E{] |05e5o{?DWȿuy,l +X!ؿkU6֜媃HQw)xO8O56c=)HNܾM2Z7:MSݛ5p0q҄r=K|McV ;w\3plOثSW5#b#};Jm0f¾TXܢ»:'Ӽp_>jZ=ten}ֵ28/{Lp*Y}@y6q3,Zsaӗ,Fksdžp 0(J!qU庢̚eGGCzYxj2U"dfrr6 pʢ|fVPWwX8K5֫9F~&F/ ᙹWU޶s[-tlhkyqns S9+sX%ytѾqv7:(W^@z[-5H$/ГL^8 +.{/R c]w+4p|Įg.5S+4%GIx~~~W {Z clF$bxFc + ]yj6` _:ߡ<xM)V~Nj[i}6wl8^h€@npѴ7wyTJ؍[evhTu18&UNv~] 2v&! +0֓~ֽ>3/?d6]JO>bAv uWݘG%UlZ TԮYTśClà<-rN;є*ߚ;92|g\+/(!VNEwUԨ@w }ܳ/e~>E4,.ȏ+rjN=IYbܨz)>R7f۔j1"tw{w޾3#E<@ciRя)>^h:pm9yוN@zsIY-V]Cl`D뾆p80h,Z1,BzjʸC^镕2psM(W,ڱB<3*-.I*,d֘uKdRv)``Pw.dp҅1,vv<#^ +FvejFu럜5h9\>.ގQS!#Ә(6U yTW[i9ij8]tu.'ˤ[2Fy!z ky^#ø}8˩Zǚܥ;/dc*ؙ<3+j^`m魏t#?QEG.5X @ROӘ:˸ܵDz U]iJYw Xw<']{&ŭJYT'G_k̦TVNS)ftԐzt&ca2ڵqa~qnnQ~g *cHavt Ģ0S̻Fv]y4*cd9 , G:p,9qnbyY-2N]SIG 7rkiz7;s04߿rd\jξJde\XY3ro{=@Br*־F<,^W5C'zK1Wq-̔+m RSP]d328Uljc"PInPܧj˲:$qjQy/UւY]-%!jT.N38.;aڰ1SZ(g]Fu+w R1`XzIK8v_dz1Uc=UW{։'vf6v~[)PjRkz +|;˜2ZߓV1b7a]#%_5g"sUEv! FƘmI=3qvBڵ(쓽 L< ,"[c>H'״MvN;(F"b +u uǧNuU'vN=I/)XܬDDDDzĬDDDDDDDDJJĤDLLH9+vwRA+Ӻc2R bfǩk$)XܬDJJDDDDDDDXO5 91:߭c]q2QB(Q:OODDDDDD@<.Tl@粖Dx#aЖ7+Y]o}:f^n܂yIڮt:nYˠ-M6Q~?bqlh|1ke뽫t;/FU9KU6lw.`؜l'0#zG/`BSX״ ~PۏưPZ»1*crjC{!˥5-\wPGyL|._>ԯsϸl"YlG} r `@KlO,0kJ: 'ݲD|GnNRtX9I +J;3ؖ*&I˲U:#M`; O[v.)yH$= nG>_*q o/wJr&vZq-V=IL̳"u: l7Pl.1U#ht>oY[y Q/S*|wJ:7 Zа uw2bڡ`byݗN69^5.@1 .(Ty*>0}E.׺ao +/Kɶ®r<ӦfELUL?IO8kS.7ۦd3'@zÑRuGؕS`s c 8\wC+'د2!Zج2Q=j#>U):{K/sΆ>룽O:3q򙖫Q0V Tf +6Nxmȍj|#}~}c!TQ7ө="R6Tx"ZVQZΐѳ5 Bey0w"qP{؅](~Vk3(-UeEejɭT͆Gᜅ7dVmj{[]w^@Uk].FFVb +z#&)ʫ$UnSGpu1xXCyɹ,!|JI+66&zXbl@xKAaE68`2}'ũK;'@}fZb^At{.݈9o:t]m{*f )VU7bk|%VZu; {􈈈*Ǫ65~Qm6[ug>ؖOov&W_Jd,.*ãݫk@T Mg;_$ᖳsV-@ ; tqٜ !k]tGB=AyVqeIצ?y|gVcܾi6/[yB5mhk^r :fiǯYViᔻPNů۾qzAјHÕ=Ӯg=;/|5hK(鳡l^w 4ۋZM 2LrFUYtb@#67֫][RWf +=}67{5RWȩll\nz\6m~7n@Y⭗Xfʪ0-E93O3"{ehyms2=kiz4dmԋ[3Õěې9Rz=M_59Ij&bCJc=@>'i[77͡7Ss1MwpZփ1:t dgcUOE1s~+O3"cXf]U,W&0)h)-Wm焩G{ڍSm2V2r';7($ngCqZW|ȹք[(*u m3U^_EĄn+,sWCGBMb۾]}>B-r/>ϻ7 cZӝz"-8G ++r v{wW~šhCjH5u?H܎DSɕSpdaԒ}RI71j)9>:J8 A4 b|KURyr)چ|}tW_,} kRsGyK e@z@?Idd-@`=r+ +Ԃ %3Xt"vu*cN7<`REIrz +8m!# ,Ug0cݷLrg,qm]cȮȊhH0q? +ԶFbz5?虙Wa,Ʈ0K^W \K-<\،A{h0lNbPA8oO fl.{)U쳓^P@Y- MnKRmT-QXW{z7AC{-͟&t]׼B֌M\4=dg 9kRD+e}kz3cWx]Ս[M̄>۹ w|>^O宛M4ikrf`0<П+݇g:UbȡTV9'D}}tYx5HMfixҁ͏[r|? jPEH/A wm;oճ< 6ոrXuYb"SMb~ŹG*KNkj 8ؕ8:Z"U[Z^gJ53mg՟MvW-Wc!t̅J]&n3xw^իXOnr6r螣ZOYYĸU9;5}7/1ڽ =Jf/.?8F#$߯/xg?9U쳐) +T3x sTxk^9U=ʩ$};* 4U.u`{`Tb;~"KCCr׬@Z6e;.#- gjø{j'c_Yq8VXu#r9F8D\P̍]z,`MKRE'&XR,o8 u^Դx30V_Պ;=diq8۫f]ܤs.IL zd1`~D}b HZnw<'D m{844o@6'^,+/.Js,={zU{mwrNv\ 2k++0Ye\t܌9t=8%99uja70,ˣT[c:5lxe|m5ͭ ֥oع95؄_nw`4uק_YfWʹ!p;a׬WsF;t$Y|.4K9Wg(; ̧iWP1P70v{ ^m~YmRcmß K8N7 Վ35QL<j +] ,O:bFϯYq0:+PB1 ӧON `eZ)_av. @ف#c܁z}2Rx;rrswܦ. (k)wbijOD`oߘED't=;x_ QY»ֽ[ös UU:* yR;ߡt2˼?Q˫73wf5rg̳jTy}t$dm²A[klcx?8us@sr`F=B=&*5J!ľ61&6 @sO/tNFdh\G%س'f=N6OR7s{ hTcGԭ^ƹ) +윥71#{>^(Ju]@OM믨ܷ/x9UMJ[ue}a=8:XTDWWe~_,$|8F-|9nmso|x2 +a4i'0q.65ށ;N}=ޓοEQŬP<}/ +JQJ *v&c^2P4+_,w!s쟽6y p𷡧r5;Ǚ^zpq,A +X^bt:zLZNAD:VR毝O7w=Y^;!)_~}]tbpl%T rv%zzOPVv%;;7_Yoźe<Ct=hwzbp0gf݉nzzKxo +ˍ_ c9t{uV~{ٵɈ<쾺wdFeLb"""SZܬDD ܬDDK-)RT Hy&U,[G2#c.`,K9/} zh$Q,[FՁv?$"%%b%Z @_(HQ-Pպ>C%"!K$@$X/jl0w􈈉MܬN/sk|/B@3.ZRF 7[]^ 3d ܻO7ȪΡzRqׯY\aaWK=9y:ߡߤie +F(0*{z ʊToJ>u1q跓7X23ocbHg+UtuS]Xl7;] Oķܣg"U-YOy󩲤$ TMyM/rPη2W +#%β|Wmo]F'_jA{"cEevt^Mb^FGɭq(.4$wUv"e!KP O)#GOYL^2.c]Kk#:u VF`HwZ+ +k@;nκI %UV\i +BHk]}"fe՝R]KGPñDx]kVc(ThR7ͮQH6q,܃rRCq#AUKP"ܴ*[$G0eqUMِm{ymubffU)Kndu=!GU%I=f=q[eK竦mO/6 ,j^Iyҭ7cub9T1HPT v4Ax^~#ee\sJ9Udj)eoî &UyH[E7ԟ!kmcbɊ7J<3xU( [hG2yhzc"v5Wy=׸(O]nGdEg~|FSpzaYDyB{!%b/v rG3h鯢[2<9Q{PIh1euxpgBGrIn])U~xǣ/~w.y|{Lsp8R-_e| "Yi̫&{ Mwm؞B啵q!X zw:'[4qȯʭlPQA$miMQME|NPmAmuБ,+Ȼ`s (w u%>&:ȫႫZEfgWVm̢P). >6&7s<=e2Q`HaNђ~^+䳀^b4 *uL8uSSiPm5BF#lG]ga՟J_KGPñk&ȴhsm]N WcY^Y*Jgc^!_jՑ*F(}H,Gߤ>=X5]hPl:RvA3/]`?=;/Iacc`}oQ^RTUW;SMu֧5䢥z5|)Pc229VX*܌@*Bkч6m^T ;rO!rKU`U#z =b""5֊wѝTVv!mRìl^ PbʏP,Y*rS| . UJȱ/1lbun uߧiw2PVe~;6EyUl2#|S~6 4<- {Vhll>)d*bdV5U6z):$:[у8\-6^1#`3bqwMl +-vJѳ? .;_CddBvwuw' e^`+弦,JپYm8#\*mFdFzB nٗYNK!IOBUWsz\̏:bk*9뮏rq0Xi]V~ĜNe~iX*ߛfu[. ^Z9Uٮ~^g hr]~L\quyCޝO:iMܬ18(9G7$(|+-CVF^1r@31\z +CcnW)nNE#`ZnV3\,[ Hֻ Ÿ.er_,R(6 zMaUó/{n'Ds2H_wYܺ8AͺMV)(ȡX; *WLG# oB(t(X!R}IL{`Y׈Ye!2dO^&/ ĸBdq + TU|9hoxpi^2*t{7W) &kĮ5 *ŘbI볽`x4bbaTG6]]Lf8qD,( +byuᾡL6pr1Z܅_)ט0guR22p)ЇM}:ՃSd]`6ӗN瘍zkzgcS}XbA!CgؿlhnQsr/l[k[*7[ᬄqV^`,B̫RXs̤MߘߺM'qzOŭ immFz{֧ `f;E8 6JtSO(5סu=xOϥnÒ+5F%Xߡؒ<VGd`&/-kpK%0aYDu:3[/[ eeW+H^T9Idx}ƾ́~=T^8[*l{~%|'B!r;[%|̪@$o.8Z^asƦbL:+;]IlvAZ\%yn]CsA),-uS[s2"]y$x[j:~[.WpW[Wg),\"(sbTU ::6I×gל|.,,W]ki1/q6Wɲ +;/(*萼zo1oL$(S> +ٱ +Jӟk!Y:1|KggIJ#1uho;"[r8H2Ra[leO*95.|ZҌ}H֏p\ZpꪊM5yk$$'g{ QéYeEFf!mRǠ=ï).7)Na 2Xb22J9;VdZ#XFk+5}PʃS6#_>ޥ- ^mt=;/VWu.n)TbM_V"ҾW_1s-̼r =d_ `a.w ʯYKmRU/#R@ܘ +:*WDv@bNp5+)j5YMFEk13MP5|(Ɛ`)QkQ@FQjaqr5IbCJ{7eM#^bY>IMFe5blݒ}f{FRj5FJkqjVSQYMK/FUnRA6Sp\J͞bԡQDj5FQj5FQj5Fb"" )3VR-%Cws{#e6#rq|l*EUJbڱ*Du$Hi|vV-ԓ$%3/'+4yEW@zGQ!N0_9` mVQ0> #פΖԳ '&⼬<v?*H +yyyzsv2jNN2wX. +QzОz.yUqŊYOaOq؍V"""""""""""""""""""""""""""""""""˹\ܧ}6ۏEdce)%|:!'ה;|r"i<f"ӤVY"TnR*g%v ӯ:O~4#T`Υ Pn ˣTcGy4qK0SMn'F63ٽT:ڲU2|-AM򁳦:nQ䧆r9 NUVWpam,V#{e*pTY~E4##CgDEmTrZ͋[:Hb: =;OLGę/nPS'jO(סSm3W3g& 9Tʜ*v!=㹲QQf#~k$Gh[?0FMyBmoQV +ScGw=2j/ŲytO5tdI. +=^}ֻIu BIE@7Yec/5(`f0K"K2PNEw1dR + }xZ*`j1Ed#}M\BT_.kf~c崼ִ'~/8{cT %!q.L_2yTs>9ѶA{}gO ͢eѩ]GQi;bM(>;\,oXӣ$(pAh~*֟fj: =M)m5Pt װ1lX Y|aV'=ΏMzYųlB[zyNGQ^ɿ?eKrlSs)zA]e;S}u-nMv歎i9y99(zF4[kŭO(@:vI%[ڋ _iYYu̎2&#{쩳KE!EfQg6` IJx.M ókKBmӨTEa-X@LaerBm|^T lLl +rp܎vAn{8#+; H:nKYb]~Rsc\]BSmCU6jԦJ57Yk0ay^.[q*JS*.(ОԭS| l̺"X*Eb@c v5-\ |D[ekjaA| U-**43b`[ZeH+kz=>[ >[ }`~m?#~on$}pۭxoc|?<_[ }`~m?GGHh߷[+Im<; +O gc~?c~x__(qlf=5ol$t [ }`~G;?@n?~>8wGOBoIXi៷?<_0?{Sq@ÿn7~>xwxgc|?<_?,<^b6c~ǟ_?μ.6)ſdęR gW.fDDDDDDDDDM[YmwpYЖ ]^т38^7ȻP(Q7y7ߡpI؈dęq g])1p0.y1+øn? +ՎcfLDDDDDDDDDDDDDL>/'w6 &dDO3}jYa7ԁsy}xcdlL􈈈r5ʬT 0 Mg)v TWE}7h^|߿/f>_ +ȸ}:8߼C0<=oʻ Z.f=BQ 2=d`eQRz>&zDDDDDDDvұ99|Ø(%wG:t>-)wfDDDDDDDDDDDDDD 'nmxl'[P:Uw$ g5vW[(m'u׾efXt}҉uvյD~)9(}D*($hXɗx ȰXng`e45\+F*ܠllD f>V3WihvygA}J蟌=CZ:('On3+bcrYˮnF ޥYUZFُ`& ~oLw[*cZXezDz%λ޷׿R"5t}FIĞۻV$lig.F./ۥBtAϸs*_ȧIrv;ͯsk6YNQ!!obWZ,!t>R;+{,TA؏@=q=ƭ2jA̘C>K_{U^RI1p97k-RVnQ<~,)h :ͽy~:vU[^{]3 +yCoeFκ=qs̡r`P{ 5[. +MKQ/UBؓf]|g_lC S77M{%,kVb5*)4{ RaX:a̷ȾsWS2ll&h=gcPI'ٚ8XukzYm켵$恮=&n"RJ]A$ԙn]Zܨ$@$' 9IGWY=4o5~4÷wи"Ls˾sO/݆)G12P[7?#|28b|6;0`ܥ +y,65(kK*iηug{Κ~%Th+^|TIgS*_41ק)w0|/!ofgL H9|4}fуcuoy +C2 8qtV c[gOb6} n?5e:>iTP}ܪ]u͈FPuޤ <|So'c^mk=8 b\_+:M{sk_ 5((:O51WS7g_t9}sM$cN*{{(oժ ӯC0o;;I,VT} y#w,P.sXJ"=X;5%0M%⿕Qe@tG_Y+r+@YqsPK2.hz+Z;U u<1S3W~H S]{O q1ɧ Z_X$e(NƶO6.Trgeeog\s]|d_ 6Wx<Ӓ$>ˁQ8m+Y_p^d7ZM'z8V},"5!B8&<ޞfFƾX/̦9yM\zI\~ht7) ^%|G]Ĥh^QB:S!o87SmV樥u]~:Ys)\=ap3cbSW7ԍYV{kodI5^mrtkkWĸ]gte_;l립fͥ7brB+VCNe '[s+[v(rv)1M1Ḧq^@<'N-MLYNR ZzHv'.9[P{Uyϵ}mݽ;w-O}-C=(# If'Ixœ')Ts3GmfnW\+(g *+̦Pyfc|J]szL{x58'^PAקy+P51(llmF-kq=HϮvש2U+ǨiQ@OIOdDJ 4cR XF;W1$lLYZڥX {*5ܔ5KWu9l u(W@@ Kך˫QgUB"""""""""""""$Oiy_-?7-\ϕlގuyn/gZ>O=cq8~OgYy\c/_ y|k'61G/ϸ~%?[?V_$ߟ)oգ[|~{VXy_7;GgYy\c/_ OmVefZAodYg0lZe|~}%ߟ(oգ[|zգ_?;GgYy\c/_Gob~o겞_ 'Lo5ɼF?X_2/G3~&h?G<y"7%8My@eeSz.+˨b6 ~zJH+į8+U~ObiXa0N&IRه.(i~h}pޚP:잽GO1x&Qg# C[[+cd3c( ]܁ѕGbWumR,f\T;X*-A YQr(s ؔ;ŗ3@_y9o؀#|uC7R1s#|IH=4k6{&_ "qpQ<惮R%G58n56ξh޶}q#r6Ƙ~&xqN~CC4.+eHv +=?+#cPHfZmE Qˉlmw%0ɩ5 J>wbP#En' ư+E)"Q۪zcs6}e7+,kQAbtI#@ʛGZ;״0X2j6ל.`=q0*0 'fb嫨akNl! x çuEWYX' ܔT_ƸItʕ9jUmwPzWcUÖV,:(Ch5FaEUz6+v3#{ rySnLL6|\dZvE]ϰNyL˰V*6@:pNƸ#ZR^nfم`[9gGqx [sU@G +{`v}e؃p[Tl70cd-* +Kxd]Bu*:?\l<\Wj*0b檫66m=_(?#dLTB6,~U=1$w|l^s]vՔWs( P[$K8]yxJSieP,8: 3-$xH?bl^M>ms=c p!4zMwZm"9xBQ_s܊,* kQ{ *-`}u%\GUX Y:Ee^ ^=ijİO&jJK-oีSƸh#&2g1n32}f*}W//ÛZI+ZCZֻk^&p•56Ϲ;zkt2-8d 6yW +MMӯug GR2jAјvsZYR5vyzzFgԼ=klFs-Y,U*VCX=ϊS9r8=I?RWNZm1f:PX:ʑ{:3Z[ܲ+;=8d|)6* v!Tjtx0+[{ͨY9cI Դxk -tASe;'Kmzt::ҾVHTab"1Tւ ob=TylC]:H=X88mnbv뿺7A<kՁ]XVrSdfg˴w//7^n]z]-XϧPZW+](ON]PC/:6 5mWZmwVkO^#ޏ{Y>kVQ7y<^EAgJTmRjB#>21p,w=7YŪXyهNq&׎_-vssfRžq,1'ԓy?p[` Q?=dWߩo(:9C30N,W"ږZr ASy6y.#7/N'20B m1$3II.FBH#`z$gڿ+aK3V,{؞Wb--^}oaz}=%nx\u:Q7)ס<8 ]E%3( =R.V׊ձ̰A^ͳˮ==$~Zdqob!)6fOq2]l$ZSߙ߯zq Z2w)+z{uh+Pz{]Jd#WbVRPA ,N[_>UI61`P1; +:<ְ~Jp,?&gƴSabsd{aUk%%,z=l-KhtOpR߇MȨ[`_1]2k4zdploc(B]kDzSՆkmO,^6iSNW'c_lPp zg^|1463 o:7@}@>˪l\δh; G=Goʪ^(̣oתUR܌k<+u֌^όXINܟYwӴ._G0AK4kXeC)6?<ֵI-{޺Z^F+ '0xUp;F,ރx,f,aK1;,Sz7Cx{ >]am; \֧o <[GRUԑtG/-IjZH)=Ļ/c0rycg.Y$oYur2:`9R -s+ +5"zf$f'ԓPL|5_e\???;m[Z'Vu,N]#< L.+qxyyJκ H>+{z8e1 +SuѬ{59:D}i brՖH޽y}3S/SZ^_wIoﲛPչu־VQP>ueވ]#]=%cP*MJ,j]%=u66 cֶ*ivGʺ+< VCrVzujV"" '.5uZ + 0Q S="""""""""""""""RV""""""""""""""""""""""""""""""" Baܬԫ&t|{lERj6yt5KʲmLw)c6mV^xL)Q+!YOaЂwyq~*wqH\С*npjN$-0h@͍܈z*P,-/y\ЯQgz%12oڻ +UP)FMuؙqCnMsh}鹧•h·7ͥjJ:6 0NKׂc܌{܇Z +}'yĪ~SEekEjWdՑ+ơKm)rǘtHqG7n" b2:7!ob]}SeVʢ~͜70^p߇|(EĩG70^bJ^[ۓEv_QAj*}á)0VW/?).7?K G%w_wyȎoG?Kg?m~#'n$y$-ߤ?F8G;a~oqu(^"&6~27yjގoho?˿2_wDoľG#ğ~ǛOX?]HIg[I?;wp/}̆n7to-n~{NK#2ʗ߉߉}?"9KS?θ_(rGL/Rlp/D 7.DTĮK#__X'`~c'/$y$-ߤ;ğ0F8I {SEJ.ELo;ſ8w"-Z8"d*_?bW~%pǑ߉'`~c'/,y$%ߤ;ğ0E~(l/NO R oGUoG_t4_ݍþ2LK Jľ?//`~cğ?Dx~<~GO?]|G8>#\\?Nd3&&F[GLK FK#/GOB m /mvU.::M OL'l;31Z!|Yxw}f]`kף{#3+R'~-umowk! lzW,䰰;^Zxtg[HK9YC}h+k,v]5'\|?ZFU.eWR/ h[YSr;373rM|/7)1|+򗲶'_׋ֽE$׫s['`krx=e@z;###т =zwވkE_2=dMx%1u>F |cu>'kQծ]g?xly*F]={?+6Ŕ;)ڲtCA8U,IL|>==vsAe=5,N3FMjFvzxk3MYrkdRHTs¹4b^爜K/uNġ-;9WXvSof_JΠ}5/.6Ki")HC=OL(}AWV`x˟j"Ǖe[NRgp3)k*V*0>eDDDDDDDDDDPOsr|UnnF5؁>-()̯Ó Q_b@Vkwb:F^E~,<k[U e]>zt܇m7-b+Mc*co_9KH֨7X*1AN~1G_[dku{[RԎcˡvYXP*إ]#x>R,N/8X̴6eR˅s +݂& uL,ƶV7;;Y¯Uŭb4n:= ia8=شeXk*[lRz t!l U8d6HŪQvM{=GᔥvdZE.$/)ގRC3`pzxyֈkQy0GѬm6eulys]h9I'+Vƶ}J}CT)I)]j89Y+[ZQʬ ?P\ͱ걨u˲zӷY T֦.j[j n_ wyG8YK9qkmzS@rI-&~[=Tf*O~;h&܎ xl{r1ڀ]znp +n1gxu]jV(-usÆT0[rqֺlduFdNV |18ȸ[p!nJ:QRa`bNd1鯕]1aEr=Lҳq*\rr}9U ::]1n;+5,KR'ɷ!)[So]|iq/0^kJ9TKr> +tu0(f[gK9{_n{ׯ6/fmg?Tk뮐BUО1^ q{ߪ0QSo7\t)V+6 R!7x/єȮV|z}doc`Wgrhf ՋPT;ĸBsO:89 +yA;.6. {DG"y@eWK]nQKf4x`[܈9kO>[q2HjjRozO cMhKj~bl.}I)v~"So)r\'[8%bVFfrsv:$s +qnS s_!9#%TRjuZ03)NVt75 n#]V-[+#YY st>sb`%wʨrƶO 'Vf,/ɪ/֘&gƱa$ͭlO_ #'6,-z +3V_J#]ItDDDDDDDDDDDDDD(N+G dUsb6u_Lh:ta/YQU~rևQ)Jj5+ԬDJjVSQj%b%%e5Fe5HFbSRj%b""""""""""""""({㉅Fbzִ]QBSOWqZ=$S'GlWZdSS%,WF}3X)"4JDD]+uߨzq p_'l+/AGH#q~+MU EmZػaks0Bz=M'&:*"b{ɐx0;"ՀuVyG/V~0\̄9̨jT*t6 ܬ91ufZԳ^fNa~RJ֟(ZGz{fg Ljh$lhAeDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD*,X2GWZ3Ȫ]=Kh5j +|"6|טem4_ÓK\u{rgaG۟2|V!]nca+6>MV@m R^C"d~ďEu zaS!/Qf^E`yX{${r/ Ge YvEOafC IX*GK;76S_bZf:ӼoE*>]Q,@R\z Yvv.-lTeh9Uz~1FV6N%xcK9Fʡmu{I+nxaՀ*)b~wԅ}u2""xmMMa:=z@@zJD +H:57< |'+ssw{Xrɭ1C lɤeS {.ч9$FYoQN&f\1s*D1_ ,'Ȋ:U{Oll+[j`݈q'W1TGbe>㔭NP]z{ATGQ`Ռ23LT {=zu^[rlU`J~Qļ[3*cb6JR +\+tuw+q ?%Xw $+h, :5ny\KK|fwyہʽy8*i@ Cx߹%ֹwߧn/vk֔+5L de>!þŭ,'0 +rI \ʸ嘖*8>r"/)7gN~Yo=ut#8wÔrCo/3vGEA5f +sM[r +h@#ܮfuX(* 3PI?DCkؿ74[OXa>a`·+`@V#G&/%ei%/g] ĨԐ8+&j(Gb@ >>^!FmFꟙ=tGni_6V[ܰ{YԂ>5˟ep-P ++s$k}Icc62Y}sهAОTnyav9Mv'3R,RCߣ#ͻ3x"8a_0ӑY13p˒]~[u䴏- 0<^xN,7cb +fF2WkPea; :KTu>.#vuYOɱQ.r{}'x&td% `H:*ﮯW۵*Iuw22 ʜ6KX~B#{gdx wFRdsV*ekʅ.B[@'j@d5jGOt'֠K"*F'Bc'eVy? ߣ=g/OxhE +ٖv +=dHpΫ[|eɥmtA]\.'OƳR[!^q}Fcdck)Uʚ kt:[߸o3/c2ndK/ȮS:KcoHJsz{Si2?c ՊUB7thdkYrq:Ӓ xȶ +fMk k2O6gY;`B֪ t ̧cd),`fy+p̅N]ɮͣU7`Føvf&{Y3֝MuNխV'x[6++zx:>p6Z+'y77C܍)[qu}YR[,r}gCipט{ hcz2"O+6ʰ6(ٰ^9ĬnmaX,@>r^/-;ֱF=:Hl;[ j.&EzbOA:xzW~F[q[abSaf@ + PwtO#ÊlnUR,XtͫfqG[Y(ڰ ++]);R4&5<!8~S]v] +t>%gm R;u85Lk96. XAPyUJY;H+^o +^F5"#wj({Szw&7˩m@_gFcb`ʹ|"ڣ\`=驸aTQUjB֊=z渷rinRm-u˱|pF9$|k70m$Y ጒQ ?ʇ J&J)v,ŸYG\qQ,ݔu8g* +5C`kqbYX&;m%JT2x^HvX·(L励:3(5~OT i>H73y:{zKv;.Kj]K9CCRg֋Z=t舐C'7')0uWcb7 xq*Xء^ly>ojVPƣQFj5G,j5FcQV2elg.z@s=HjjV%5+)A5ec=$w(tv°Uu}&{5jVSQj5j5Dj`eZY-5[ 쟁=tFP5ԬJDj5+RɂrM[(p5jJ_Ѫf +G#b"""""Pb̜W)f=ZNvY iOrqw ([G1qD:|?|C%X{v}dDD-ή=v=MzloxNKx,p-{Žf$NN=+5?_AZAO6)+±3e zh_ЏC5nJ^$A$bd?kҶ>[R/^3W?^)>QX=Ӧ;?1W+'+=1vOe5Ϗxz>k !<-o#.y_X'NԁwkOT XFΆ٘ +&I$홏v$$̈wcG]oGЉ~9m6[Ts">w.Cc*km`7]z=I&|L*[؞[Zf])ܽ:fRŰR>DDKljR@'@}r舉BzXnV"""""""""""""""""" 5>5r?[!__*QjK#cqdpH#L؈~}.$G9Gh䥨yz=oA{ď7@2d=>>AfWmgďk1@߻{ L,zXYvf=I3"""""$7SH$PHANm#O},CMJDDDDDDDDDDDDDDDDDDDDDDDDMk75ix}}ě,)S؂:_ UM+B. XfVp4H7ӯY3Q\^wu-4c}j'v}ܠ˸UwW! +ձ#LJAgd&]mUjDl2;_oѮ;$D7d]=r1*Nv=HSo5fB;pQu ; =&N_G^UA7ىoZ]j bdQpȭ,Uni_=݇lkz"m|?>'Bdczv;q2b""&%u."$4v4Ryz2O.Vmu}` ƸUbaVmg Gnf`7ܿ3>l\E* m{AWv0~UߩjYz5ʏ6+5%-];S| ͈x>|f=Mއ}l5+_[YDU1a?'.̈́oקa빬ZjjV#ƩܹUששQhG-įQ?OĞ{DDDDDD/prJ{,x؍UAN̸}+[VU]~P4(@a4,d>v +5V76F:5ǻ?6 8 uڰGfDDDLJg-O&\DDOJfaGZIwᏎ7c3PCQ7ch~9ZpKI-Uҡk*Ŏ}I.*ϵ.9'/޴IkC]Oc#>:UFXkְ~wRYm!NָV{* zn/|: n[߻هiX/g["jgGP\|6$yE) m;MzG^b׽{‚>w>+5]s\z+_AggarY=uO\/Êߗ{,ݻd'6fiYRCYzdYڰ`2 N|kuއ'Vg.]X,l|jHv@A>;zl/}+UV5m孡`ֶt~-˭]_}UT+5 /+cWyuThs;5{Ȗ'=02XSK&}&e)~Eƹ*~o5Ks{{?f/Fe%J-t?%A|ᄶ)[ƭ'TUu]ZV `V Z`oD|=&W|KUU|%V0G*]% g#i19L2ڵ7[HV]k.96N r0x2_MW krw^a[9#}"sd5*u%lcՀ\R9ztp9TUiBrF^`)Y]Ē++ V+^R6}Wd.:If +z*(vVG B3L_d`[]gzc;z{{bڡІV]"ז꼯q&/4wnZbm ȿ3]z%GR~|y_6a]T+IH78Ȩ䨦K*ꦾ6ڻO4ޅ}]h&\ŲX{6QNԪ(^qcvMԠ}V +(졼~eaג)G[JFm7mON_H6s6\Z)Ϣ˽~g#vdJAAcks3^C-~^~k5o0^n7c/-/\^jEVip *G^`Wg][ĸ>oLm_=9+ICY7XNIٙK-f-mEXP7=D)[Y# _l6w&Oy8Ub"c3+!bPC t'Ge "mfYX\s ^}%8N_ +-62mv^^o믮LlȭQcVsk<1˭C#VR6=Ng EnNV?.0%bEQXJDDDSoQz_g826e=wVI1ht>>BԆR6} خyqr[}}[MEc~(FxVOߋ 7U 惯Yp+q'ãH#LȈp~/(uzp+,\U-Uчؿ|DDDDD4-|'gh^x`Qĩ[:6zH=K˧K,Uk0s=P˼KEC|ۛT:o{aqN l۪(.NzΈ7eӎcU  lsܺ=܊H ܽNgDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@#AxӑW[O$Fo0iqw7-ƚYA`cv+'*:ͶUOnɞ(g?n\Cn5VNfN[prϘ5(l׵=gDDїn$+@ߢZ|Uw 6]rZWo) @Mɦ >k2U3Yy\o8܃=]u@߯~ے8.x5m`N( ɲA $|L>5Mvd + +TY@_/eIeBRKFzf]|V#N @+g1 aG)=7*)vG}{q죇nMv]{~T2~0,/ )kL:;}5~-VcMĭU=PwRȥƘu[ιIK%/a<2<M,EFYU{(F{e}s*YZbnB kSߋg%>n&M#(dx]ԚdRO2+. ILg/f[T~BUt$t^s|Y_2h+8)ߗ-שy3-Lj+{,Y@:kp^%,*9[Aؑ"#'#.\JO[:3|I˗n5výPmckO 4PTVRi}5=7ו+e$7;Vʅ#`:F11z\-mg="Dzo&*#uiP/ejμUK.GQ􈈈(F潉qMQiVBǘ; :l'YywBw1x|t pSNYlRdcӦˊlɦ+[ZHý7Q>=_R&QFs\O|BXf%T@L;oKb6;[S ?/cߚZc:Vm氩^v%TQs Rq +1ڮ\˭1!O1y]̳y +nWoJ`U3+pܮ%n !nnbĒQbv~%²xnNMbL)G + +lN}e"+m^f);5)d]%zSStG8nMc +%"ŵX+ojƻS?q lf۟CPtWgdTk 3-yСֆ¾Sew\֏5ND,bGӣ3;dR~* wR)ڊܣAvuoLխWBn^3#T&f~ n ;pn& Zȋ@vcGXopaRlVHml e5O)=#G_HܶHROP}(H-0RF$ :Kyn];.iU6w]K9:ܬDDDDKY {ЕrZbd>Pw+' #so5@COP@>3;REΩh=Fn}(J[b,͢?|k{0 ṋqiNԎ=u̠׼GW'óS\v Tng K#Y9WڅnPu Gr8ƔOܥ>IU]o4cagdUey6]]G3VAgpKKav<=a +luR 馵mg yrtz>͆@/-ʭBe[Z@ +4ND<^8:W'ZZC;6 17*f~RO@'riNAx_ѲUaڂ=$/K j9Y4G^$K09Y_6/ kgo}ވDw y9 s36}YQm`=@~!$=PdʱӖ,6v I(HPIVӊ­uKiމOc!ի8`_]W@@W{y:龓eȫ㽶3UIb<5nk* +YO v>mJ*I:d[Mzthwn1zSlC7AL=F&GJX֚@=maRHQ:Ÿ9 ] +l -[%;-3־3++UkRtXꃘ@b6 ޏAy$ƫ1ܚ,ը +1&G%7[MwKMK+) #M=&Oⴎr.98k+[-N;}fqjjѲBRr +`߾E+p 2C >D23Ok&"kԮPܨ`y1<̚x9c1^R>x%H`zLW>ayfyO1Ohkj9D]jՐ@%7k=5^yScWbg]wk؞qIWG ˯gzMzdׇS[krf>2Ƨ ~G_hАG^3$G?-'5SuҺ ?W\|IH_;]NS:uˉd GR>V {L: |{EٕX}lJrcYcUR:Obcqjr19:[a3Lsoqվº+tK XTB܇CΆ#NFD7R*v${Z:`;2WRZs+c e]vP:hK8>6P`毝QPe) {KxQm`T,-2w=5Lܔ.M7zee9vレ>tI#cO7(i6hy~chNCpN7c~Y\ l?T|^-j}5wL+Fsa$VПY1]BTN`@+`<{yx~Zs)=v__xV꒲;qʰ,5 +ֱc%@3@r :l%~!ů5Ո )!z蓮xy9 R]V +].'Gi n/3+(yʿr VC^lL*"" +'\+[H*tG8,u?qVK[M~3q/3%[~F ø:Qĵl$)G}]#m ,!Tr9tAPAפս (`Gb28)/o'?'f+sx}L哓^OuIf=c 9GVeH z̨VdK";$($ =%b"% ˓j#L2*)L,,\NܔVj`ֺ^Pzsׂ=׫Ȯ`NzlC1jcDQ<,jaMmMQj{Et/Zwd~d7& cw5T +K{=%2їeyUx +*y:{^֗`uّg[Yxk@vѷMVKFr,Ǵ(Rv61|IgM60|rR6wѻM.׌qI[5aa2QYr#)& 5s +Mk|ă}=N6H *@AH!@=YMea |܎ؖKT(K=tOy$OͶ~\|++.#qj -6c\,O@9zﴓ̱-V\l?"<6i_K2/#Y_%hM%t}&g3(ȾSKov](vԒA޴:Ⱥe77%D ~[- *_ϲO^'+ɄgK~J{6I=p;M8y Y O?v 5n|{+no:¼ʠ g^W^iYb(G(BYV[\LIR<^fӦfV][)'L'Cu2+pvS-ބD-Rw̨^ہp/]X@&hXImt>3ہ[eTPS +ͫ뺸%x-͉uUS`Md}AN*tΌG Ȳ?&}<%HO{`P=1fP!*Cv'6tt&ߕU"koku[K0@KZ-^X8}%͊K_7Oeq,^$Ue&u5Q g@CS&38zibn@2݆Y;k2̫I llp̪r1]3)<_k^bozO̾Rd ^+m d7\k{©#G9~SFm[kT ;z{H?caSojz{=I3[)YF_0*%F \ QY@}J!v!3ů #':| ר"CfYjjy*thvo/Rd;QWilKHT.IK} lVڪҿ% ԹFP[Z>M;_¼ȭh̶8`9zG ĠA (hQ;6:DkPO T aqXʬBB :=?7(>E( Ab9@Ӡ_dg@KU} +Xv9k0|y.JYHٜ[/~~pM t>85]r7*8r6 ׼ Y%gFs:Zߒ>4=L|i8N vUkmd)bw]z28V*Ոuu|&ykΩGJJ߯o|nR42 x_źD;mymc|iQeيUZXA&;cPQ\ǧY_&ԩ@'u\sd_(Jysr Z 턴{5P}FؒQu.*d6&H*66ѐ3 |Ђ_xRv\{д}~vzyeg/hK+By@ͮS׬_kc-ʣoWV:'C #}[U˲Z0 ;>u"v (t;6>^.5܍1!Ղcduqɻ7h>f/'NqNu4ىW|bP3Գ Н@|bp)ڵsY+(,3h5H)r2YAv[YdwAӯILە/9WV5Xkc`R8mu- K?+;>c^^+L|Js+FTꬂ/'D}Q2 s +jiԅ`78o~XHK/u?JL̘S%JXYu6R'Dkg X2=f,9 {CLwAYV̽b~?C媚nWtmoDӣ 3(t^rRkz>tާ`={U=K$|0JkTPzDDDD@JQC_ +WCTT(f0t:m.=zJ7(di+0BJ|P @:DJTg ֽ̈II1Y7`X̶/B coB9wy_* 'P[k=/3VN{db9,,[)G&g+2eבX穊롵/І#듼 `G3Z5taSufeSYj+>Ɣ>>֏&8e&M5e2WZ^^Q6|[:b]?,Kx`'̵bh!<.w*Y^-³W26 c 8Ӿ|#s1M^"{:@`&~̯Gʪ_h}v&xlnƱT)un]l nb1$L#¸p PrcyK09HV:Qv>wʳhjZ@~;"ECÉF:o(P7zڒˋnut*@ecIGMo8nX5[֚Y^v̡':3ψb<=9K}ΩPmo:]FO˳>*29P9#]GQ #ً)@]g\8DR-](=RB\~G-UQ&݅|G鮲S XEլ+bO-ѽneDH3ĩǪFRSqmRAn?*|ywf!Wl̦009Vv*C(;3W*C`u*7 +uqkkkJ;BT ` uҍogA|,Wu]Yv^`ԱX ZrV L~⫭ɾT=gH@ē}{ƲBY0@Xoz߻e<\U䬷 Is$7V#؊Uf ]zRz}bq$S 5ڢr9 XWz$wufV-e!ijce%7#0W G2fٌ-.{%G<ȫpщSסߤ#MKڊT wt>O|#6BQ9gUކζF;hͣ=[ȵ_D(/Y;}eކӓZ3 +d_dkOq)ȵ+:^f #1j۸]t+V|]FYw1)_cWC0UMGVQ~B9[@~U +o!dyU]XY +0`W^fј p5V ҹU=Wa+0#+s."յҪ(m;~9'ěb'[-t,yP>`tdԋc؊1e +wDKUK` Øn`u{.Tuau f -]ekD)Ε][ WV+HbYJlIgSCPXu1ڷ=5rX}˛kBr_ŭJӋV=bUP.*֞Zz:O$գVB(R{hc@S(p`TԄr.ׯ|`ZsozYNSy#ZQWMN[=ε-فE`_Ί6@[B^9lUaaeMBZbLXTP`J׋UL]+E' +?Xc+n8]tzAZ#HܮkǬ-#^B@=:$P+͢9,¢Rӕh~3p[s05"ђd:b}41$6-XV$l)[޹F֧ @A<0kG;^e +f-W(GEeP@WZԡQB>-Xڒ*{lPbTE$yFF߿]"JT״cш@N".P[VﱖWE65R+E @$ £9BRX~03kU^Phk^O8v60k@ +OswJ񪩋*(' +?I^5U1dER{ԉeXXR+`1ĭ8TcTH*Ilh nԈ\튨ROPaj;ZRj.+P€u[8v6+;UMh_ERwԁ8v65mT֎QUf{PRz K""""""""""""""""""""""""" C/-˺E]lZ8]on߂qڸefN(V r/ċűcȭ, $;fP ,긅fN=1F 7e(oMURZ"& 2#պz9fiI +fK@DoLA_RF|flFVuMkZQ+rI='ً~Ȍ6f79yA}rRbg.wO.Nb|>eDL^%6;1UHq-TZk.VΔ{D wM1ꩱ; W/``z4-!VRUALؼ\daZ +˭u7䌏⫕K6X{wO_Y:ڷdsy o($(%kgk@ 5٫by\ۨ*G{ q+K|R9CNn$t6"""""""""""""""""""""""""""""hoՕx"]}eV)d+g]Q^?s08?j3Жrܡl:Ѝ̞/vgE|Ur=aΡ5Ў-oWteBp9ګ2b}6vdnɧ'k2yƳbaY̭XnGw28]ZXtI٬`Xw!L`~̃=~j$Gv5y&Mgm>%Ciu^ò2.#_a4ܵם@yuГL*3h3KYQ[V=wL-Ů;.{ɋ[cPnrFyA~93(d|mbrW7acªѲݛ/=xeebW߻@O.3;Êԕ^` ˟hUN:ݴ#7_8xvX-'KlRtP=u#8Fe-wp mV62v{vqR̴[?7`S<$[ߟ勱M{ٺpZ%65z/3~ƧeƸL7'2r*t}&_CW)zaʮ: +Y509ܸGLi'Zuu() +.erhkg9Zdl>YV CLFD7MU[e^hqy<_yYAy/r8wvzt-I[o^g[-*B2 ([e"jZ9.hd0f%zNDDDDDDDDDDDDDDDDDDDDDDDDDDDCk{'"eU<+~>3xyqfyo}zLc,knhpk>oP@~37Xٵg.YWҨ=ֺ]+0mՊWN[Z#Fyo a&5{s:\ /u53QiWvy:p p2lm)m`Z^P7D_by#cA*i<3G8XzOQ/C5^@9 Ꜽ~ɂ65 w* OK1 <OKfcme(?uRIlI6ǪQbkeIF e:R.19٬ks똁F`&&?ҟ%"*WSe 4:6}-VOʝXoztxuSg]t/? fEWftqP'G<{Roÿ))%έqY׿`}>^;]Ϗr\r2jH~N*TljA)`U,̥\GquřYu؁%Wud2 +Us#𺸽"K.YN]2={1*i2"緗2eBn@uD5c wk}$ߙӛ}ujz?5cb8"ASb5v4A^\9O/l*Uwtrg\lm~23?5yi=qF]Kꮻ"!>g OUsʙHLzw }t׬ó3.gØTo]5뒑j?y^; > L!*(S[ףuDt mr7IJ l[h.g ̬B7.Ha`e29Va]` +[[h,) Us0^nuqs +-[ϴ[C:VRB=%\=g]*_gL؈]JOUy\˾]m{ sx5}J 9h fxXkaJc*Б$6BV'6ls+!#""""""[λ޷]{.yF1\99O_ɭkwk@K:n L" y2Rm3ożgKec`荺ҁoGz:?ȗDDDDDDDDDDDDDDDDDDDDD@"b.#W +|ʀv${:4܋QZy;qL+^Ro{ u2&&}9l[|f.F&^Q卶=:]dDDM~N 8ή)FVh~mrvܟ5?q\S^.͞"ydeUVcyH? +P.ɻ 2^as#@{I|ᄫ;.cI %b"&'l9: +;w׺d @ ÷*;v#ů)lH$uY<)^=ˎZճ DH=p-ԝ =#DLq+:A*`5ԧ[972;$֍9R3r>KuF >b`![RF{XY0 w"G%B? ;u&vx%ֵ坁33(al(:V۩fm,}U/̜.*Uj47)ZL٩~rӇf!C݁M"&,wl U{'ck2xىN ekv G71$(ڒy]zTX-8]FSBKx.F\weHY, hv2xA̩EqYWc6..1Wr+sfHQ#Gpk,y,=*Fa>cW}~/ dcmE@*Qu{ɼ+\[,*z=yT8*t[bb[t*YKbjv#bNMO˼S_q}ǩ:kcͲ"&uwђhjuBlvE'׸cz-Eރ5lT1xdYH a++)N Aij )B5l}=UBq. - +uVg/0> C= +{rYC1y^WI?.%J-ϔ|+6Qz J37265yIjӰ=vï]1M+Z *P= uW - Xx&:o#XŸ\":+A`gS1(cׅzin X\n!f2H{Z+*36^NM,I4~[u>7 Ԯ 1ˑ<0+zW3eI`ӯQ}9I`ا5(=^oV=DxTر<~L5'dXʫ5[|VXcr1$v@'uH* mu|\\&-6o6ש=50|AYZNFEv-l >gg{cY,=(uI#5K]Ҝz~GK*5JCb@bJDJiYMjV"""E bSeEޏSm¸A,fZPh:!tvl@tI N12ʭV]q\P;Mk4+o6=b1|ge)jl +|6؅']fןMwv"'[UL(]H\t\!NvSz{0TX$C )uL\~ppC}}-&Ncm-HrHf|RIM"""""""DxW;d;hdįU|Y[PU0K :*3zRJfzZ +tH:=uȌ>vM9+=%Ֆ=#+_U rMJAWNas'3.,|{-]JGm[1(T+ms+uSN­qkG2IDDDDDJDJDDDDDDDDDDDD@Y~44d(A29[F_/^b{Ұ 0: l|ew%`#~ loL!~6f.,GR=+g }>nNcRc_RAelOfRO:L^ēV֡^_6RQs|6ApA57dk~[ٔ0,7cQkF̡$) n]]h PAKԶVѴ`dlFǧI|DQlVw},쪱6·3 P9ibTkWRú7qǰìVA`,uF1,*`Wkck`4Gy)VEwor) ;_.MMa: ^aUm#ǧ +XqjԨPUY$$lVř%Rzkfxx˫Tqjg^^8 3Vi'̨g[ԓ8Y:65X bGBv5+2Y + X{zwŔ&'('6ot~@ݭz*jZ -U 5驗UeJUxUW RP2nOUV^/d 1vO(]LԖp\a2U`Lg-ksmC2q!$=^ӑrU>O3BRS;O +olen.rJ9=E 7rMi<ַӾ3_=7 Wd]8=`A=JcPUʣim*@:zJܭ\D +[VzCc±-ع&ꫳ_#MV(A5MJDDDDDDDDDDDDDDJmvÙ0b_N% h (ƻ{ZIm|`J+oQ.%85kA*7נXX 6>?wf:'C:L3 kz6f-k,h4t޷YspL&5^PQ>}]J쎥I)xPˍX@/6螘'BT=7[N-Ymt`4N>uˏX9!>;ްxN#Gܾ@7)mF[0JRÔizo'6;-~v@z lB7!_r]#hYG +qeT@mMȦSaٙo$C? +|r5`*:r:s3Ķ(XAB +^e)[oBcp^%r)W+ц64uUֵ(Uvvַ)GPAA"`0i(Bs%e$}|VPI'aw˽ܺ pʔ^zk{'5܊H:av b_Ze !T o{Gh#Oo}kUx^2m(b~oeDDDDDDDDDDDDDf>"-ҡaBE shS#+**[&DӞ!#VĀ:84TP/'#ߖMܪ:/PRŸ^j[V,g7-v{dm}5uelCՔ]UAmla:I8HX ++~uiY'|͂i +Aʃ~=:I4n7]o,:, ]@ Y8qL:rX]v@ށ߯ܬgIÖǭF#b:)#7[UZ+v + hADn#q"87ϦNL{ִdm$llV""""""""""""""""""&U?g]V8 +y_0ÓSVf5^=b%evv64?$|%rF:ysWz?7_GY%ljM|ۦ\ʵ#|G~ɮ#uoFORT-c؁ rЎn0J5r\{(ͰrUOdCvV7-*EPH e;bG:zG.?P7MgGXxj%kN+滞^P7ө=?Kxehɸ`,<[gD@{/ 8eUk*'\k/^"""""""""""""% X +Thʿ*Xno/Z߯+>[\ n3~DDeaW@9ZezQfg,f5|бOI\iS0`5ʤ̍J3e I³,Ƹ}kngDz3Ũb m|ضAcZo`ųu 9^G$x^NJuhzV-*7XkN`:b0>z:DDDDDDDDJDJDDDDDDDDDDDD@;>]jݼnR:zJ/չ1kcRS+(;;e175 t@}yur;=^omW~k]rz߯{dllԁQ@pyN嘜.Y^Kzt=zw JS\oܹ +vwv={螠IOEB7z]":%.ڲSXNaXoNc3^2XYOb&~©-]NfZSfSޙMŸj^/E(rG~ӱ~&wΣpT˸-h3\vHbLb +9')ee*6Nԧ +8o7D.agqد_i +G?o餟 Zm5'B{挒ư+_A,Om4;>vA=qގfw%*y oZ#<5{U~(#*M$kY[XR3*6o8 +OX+ǰï6X9u1jUl6g?+@ķ130x+ߔΧLfκ1s0qF=1wgzSs+9SMN-Vc9)Vpk!yOPG^b&^[s #X)5lҕӎҡk,mv'Wh~ߤeb"""""""""P+x.5RmhhmOOč UQVe|dIK8U9&VRWM좢6 :w2JV%ܔ+;UPI$;dI ^yl:Z/L[X~F^'@L?Ye}︝`U6?|ϖ\=ҧ ڐ@^"|7ݨwRFYm6v(:'u:db#s' E999r|n{DL<bu(A:>=%4`.(S6}+ ^|_vufVo K0cRmR?A? Ʋ5jku}w(ؘ=+R9ۆXݽL`z;YN9֭(m{@1}By,{|{@:NYqe}lx:&q0Oe4)^`@]]wf{(*6z ҏNzDDDDDDDJDJDDDDDDDDDDDD@/%"ѠyT+l; ]l/_&@łruL?_-Qz, Xe:*zf]1b;ԍm:{.yX"~wC7ʲ htJk^~Bǻ/y˵w[IrYYԯF鱲R9O:8O/]2 5V>;rC_ï-=WAo1ٻM<2R\_͑VCUDf0tD |jUY uo]E5e{^ӃC{>"1n;Zso`djL4[VcTP]ҒP^seߍx`T+:a3o`yNKmG.Gs@{l{-zMNb""""""""""""yިb]l9u56r3rm+vq_0Ҁ>ȏg.bodNy@5jA-SBBQw#`os;]excEUm[`69}ܓw>NKlLkOXŹ^ @?4{魳ѝyXމ#};OX'q{r13~@yttXhP6ݻnx xC.:eW-|ܨS 0gրo'Ǻ܊v[o;ĞP@'NFw +6ʮj0  l<,WT,kqaA(ZֻcjsWlf +7ʼ@zk֬+y#ՑFK^'^1ׯAb'hLCbw)yW2e_+i]0rgZҪ*P=_18n GBטnfH)-ǡ(ߑO8_kz%T.lks߄V݀ WQne%57~\4d]^B+(+ k1r<7NM"wh`禺:kS +-L:bTk +9y9 @;ߠp +%qu5y0Q v=uQ~Zz֬I: ++N9K-U~FEV +}NO^cXc.Fefv Ӵ;!EFa'0|'TBh^RCkCȪWl +ASGyey9ipls`B'BWlZ3h<ÞJ7+ћS~MΞ[6X'oR:eo86chTzG`qB.kZ/_/.*I$L{<8%nnfyP U +%7G$;\k-B4F7d~K1̻(TXpnߞˬv(U@U~Y)+]Js뛧BFQUU.)ܫi9kvXmk[2nZ-H#Ljxc#nB#\F2b&"q:_-bԶGBnS.PL>ū%T L:?,͘WuoXpg8vބ*ē[,@ߦ?I6ش;vU$fY^u5QXtF ״ވ:::;DD:VWM-{1* tg@oTbeWMwv"c="b_ɧ$ݷL]tۗpۖjՅY;rC0s8qxN?ͶÜsr=$ͳ]o_ER! + Aw})"3B6'u{SkVђ% }wIUmG+ F鲽/9˫ogD_Ln?W罕k4yV%#z v״^!5#*PS\i*k$d|5uרjY;ۂ_BO{+' pʶtlQ5Ӛg=q҈k ?8z?{W, W0e)k9Y/rnkgVetyWbN@=:\r)#`tsWofQW淓̥Oy-xX,LoaQ*zkפɭsr/ ξXmssoc@vx'ͦRklF8}yLu,=8N!mETޕ%%9H;Άz̾'l#|M+2!yuh'Nng˶^ڀV g/X*Y]j{nPӠOYlp1ȿLW?792߇H"l{T}З`m|NeߔWMU5owwg7^*{l{cֺo}7q8>Uy.ٚKUtYH%g&bArcdnWU$ߧ2QO-tJ 6v+k&3޺$M1*J*~yV[bG0߭9<)g؊Y+yX9xL̞~F~6iGJkU +yc)`6eaMV +հ> Q!8 ExuZO9Rt 'Z֩ Uʎ`="""""""$E})2!^YT;rlH̾eWQ]6]m@ZKUL^|{3ZVWJAkʶũI +fn} 6)*RYA@➱#xNf c#r _zïB:2Ϣ;K2=%b"""""""""""" V"""%9FXiXT;uDDDj+vȥb@$}s"SA+5* $Ϟ&__^1͂c {onT \'ܦ> Z<5ofiY *[DS {3m'`]wm+Rt$f}`6c^EןԪʳVdkEnZ,:2x6.Y؛6'ndzh3"""""%$h7_G6+Yl}9d]Cԝ7.>"lJŨz6l% fuЍu~:V[Y #sP:lu=zM;܋fF`sq5ëɿI*p6 +sZmԓ /|B5k5WY9V}.Fw866?Pm7v^F*X@|l/NHZ2^n>FAڧۗǧMI)Q^[em7PyH:?Dë|ׯ&VuSӝ8zZhl\a;T ޓ߈\b)1nDSQԑzZ3S#*…YWU +:zK735(t ??UX&C7|f_Vb{z|{H="f |0 }[Gzsu2}2}U6mzsZoG_D8ؘ^+sV|oRİ$^lDDDDDDDDDDD@ b9z*ͽI'gd̍JjV"""""""""""""""""""""""""""SSv.-_bTLfBefpgkW'"Ep.' #SLYt߂(oŽ^0czZ[(vL$j\c5OΒ~jxp ѹDDn|8ݭ_HH7VOUnrɽo[p̠\*59Պ(g%X*"U:FVS]zKD8|6cGUMJġ+N]BJ7;w$@h LdY_'1.ϸudkuVneFzeL܅t"P($xuaҔTQ*ހf>G\7yHA#A#, MH&[AA荀zn¨jBOA%3F?dk*tu: 꼐^p ņc{벺kktNLϳ7d/hx?L"54*Zי[#;AxG +VYٵl'|;m.|g"mNI(2?\)g*ESYj͈ llI+~c~!| CY;(Fe5+#b|FENHEy]@>ĸ@ ,@Q4<: .Y߇*ڠϯa𼛲1-Z0B[@t$DDDDDDDDH'>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 12/Tabs/S/Type/Page>> endobj 35 0 obj <>stream +HWۊF= LR4R7,l3x`#*u n%+眸ܺ/__{||Ow?Ntev}=\?E'EߝToMfqn~~BBh7| ɽo|z2# +K1SC>VX&{TǨGBñ*p{)=?#},4| WG.x.T+Y!Iz9~"75D8ЫWZ|Q|ÐH+;x?o q{`1$GُRw' +a B/z@@̾v,.่cPƢ)3-XMguB+cC =Ӆz\i36F6A6|2a^q]=pbI)Œn\FL ^M{||tEv Vm^#@L^q*T"Bn(mq7KWEmJCngOqRC%ЕŦrC3K?|%]Bex5~@xD{C۠|D0"+~H;6Rd~AC[㇦,fr5,PORQy*y1RŢu#!2|২tQ1wP^)'&ʨ֣9XTb1e搤^N)7Af_XD݆:Mj̘3)T3qWsD \׼RT9 65Gˢl2*(dr~l^':W +%/TpaB*vAxcl8[L:Ļx017'LD`;CrCɶ;I%>̓.2l?A~yiYI$; Mw'yXŠK^g& +8!W$ h`_: ~;PƷ`KR)HDRO7P_?}ђyG7s/A{ᭆ7RÃd_^w/۾t?{/6M~ܲK 1wfK*~̾S=>Gf)56-BKiK h&"pf3O1n˙naxh$t7{8e|hg8}2;hD;? gct/[DafԼRl0+Ap# ǻI;LY-">א})|+A6* Gʷ •v#w-`ب S-!KwMIZ_8IY (}Ne1vn}=t7`~)\"ٮR"mGkr :#; +G\ +TVZDu4LYdRUTEz0L~˩>JR"U|go|,HWElfXY +]ՀΛNKVh%2Ψ2<;jAcR9U]32HQ,#Sn(/6vu]kz5f+}9^l$UUx<!5>uSp&_FzD޷7֓Pbm1njB-O&+$͊]r >*6e x{p<렪fG0Ӡ1/4=R )9 YXȺN9pqEq;D,&~~Sϧ뻭S;/8iNfbؗi&JxrƋ=mUVVA b^phcc7)a^BuoU+c*<ڵ$$R# +uU۶cZb 1`&enzhQMHeMݮJ5ki>Y-DŽF-YXGǖDgT>qSr#9ٺ>t#jA.y#Q2͙i9)8XGQw!f2ӘVZEdW5ᐒ\(ac)#\vUƿ-?i?&ج(˜^2}f$_ 67!YbiDKX%8tbo9آ4(;G'M`ibSRXeү؍vuM S+gpÊ/I#ܺ6!"Q@djԪiT- &\o<7Ghx ++ZPL&eN"IE?;)rq]EW YU ɂ!3mW[lltX䄏]¨v Jnh )c3pp{0LgiΒ8cV0H}V^Wф֔5t{x:lp:MVjXzLC7Op N/VZ[g`Kښ +endstream endobj 36 0 obj <>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb + g!1A"Qaq#25BRtTbrs$34CDSUd6c +%&'()*789:EFGHIJVWXYZefghijuvwxyz?_nmU@SuSY#TUޯ~?)]2;}'OzjV""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""'7ķZ&Qc$^(X~)\;z9g e^G5T.v@v4{shfJFd:` &uZԭlQ`7wu^%6+jΙI%@Mo.e=.5k;'[c|6Uj:VVGUshwT[P/ Ԓ=v~k=&k)ՐiZۋb@b@ֈܟ[W /Iwgԃ-ln &l@VC]:ucJ*uUUSw݀,NMhQf'7T שܻswu=|~'9s&'޻M7thu TgW]yk9 G\OaGԿrVRKmK:*/~etN91-wքyu{iD@W`>\\`MhkAb?'{v$`[sz-f6-WzV؝mk\8yjU`JҥV]-g@8)ӎ> $v싖 +${wxݘxƕ?PaPQ@߃zmBԝfƽTꟴ3WDg\U[p%{wB13P.bw>}D߉zWP2xK6Z]X!$Gu +h!Ơ[T:$|;5|tm֋#W=? 돴ܬ#'G<{8“͍V=F+{!4!|xG$'o^5>c+Z S]jCWf0 +Bebbv}~$׈1rz=u"VRf +f"N#5K7,Ve;qCQl`fraaȩ,'cXضOEͧgjǮ7[_mm~!\2w2+@y_,C׸L<|Sb#d( ½v^D3Ƨ1(-@È'z:":.!rJd&[;ҵ)6 K R5zq_Pŵ/VW*l<65n(NL{ ɦ¡s kW?II.FZMVRb8 N݆kDwLOtVH]% kH;t@Sk34% ƵU'J|簠@c7 ]Z}BVSC+)+Cz_-ʕ tv>V'HԬkRܸeYC +%e8]qoz+ŕ-U0>G JD@<=@_=JDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@VJVlev]uTf?HMԇX!gD}Qpx"r )vmgΪ̪,nTLK+R`wTzXvu ZA*[&I {2:[X-ƬǷi#xƭ*oH;:=fu m!v:""""""""""""""""""""""""""""""""""""" k?ֿճ ͦl5q(?vIu_YˤXku-oHОSM X KvHV{r.%x`Kw#;cN;;s """"""""""""""""""""""""""""""""""""""_(z +̱;rlǬ|iǐ0Ѽ?WC[iF,[2cm ~IYC5_8Ͽgg)#)PM"ZȤ[ vB\ ~sݕYKA?]}%zUet{zhXyQ's:u_`Y&y6Z~Aԟ_&p)`Yb} [oֺ0רѺlJXRUe̡[o\K/-ɵ6KV8p?(_$d&v=BڄMX 1IhcmMRzhoꀝ*U: H?Q)V*`m(:ߙ SԵ(a<Ǩy)_Qƴ#%հrBCr> DDDDDDDDDDDDDDDDDDDDDDDDDDD(fs-X}c*deۏZ%@}ۓMp,ۯAP(v 6[Cm'XU.?ot_p +{ՑЏ56vFhwOO/G0?Y8ֺa~b?غ_SFaӰrr חEE#3а {XM"bQpQ5%ū +|e 6>c}o1Rz8*ƶ,o,#'=6p4'^ǹO`a2Ru8Tܞ?M~n9ac~H6nS1|2KA}t4vڟo^KZEd%U;ЪXM@Еà[yi\G/Mzd[0k1D$$zktZ͞gU@Pv>"au.GJPnw*#XlT=O^&}k$~ĕwܘs\H6R{J{,&:S])航>$w\oGEڃ~Yzoc+bbƽTW%yWFJL5_Noс] =r@$on|T N'3DŷϝcMSz2UYV1U[UM쾺O¯c׏_֡A>OԞSf/-+n =+7M! pO~:v2QMz,X H:׮"_UxqC5MJ]VB [EQJя^2{Ҁn ؖhΟAe7ʚE|x}It R 8s&""""""""""""""""""""""""""""3jгWa*#ٖUQN?*>A%ֵ,==w~1ІD܍Z2JrքU!6|\KtlxXExAdL.f-SCbZ|AЪ0Ub9E@@7w6E [bGRЂ4GctJhU'dTiPoTzbt[m1ZЊrN{ + +^MILZ𩮊T| z%#RnC⥁E ;o]?#dًIjj6tUQ`wZ221r|-HQĕ }kF^=;%ֺgcb'V"""""""% ξ)^:Oe-Zo [.)Oe.K(76{L>lzOU`{w6"""""%kn(ltN϶nL[+``v=z"""RV"Q(:` T 6x @ 1z_]k9+8-K8$VA] w^'OyX׋[ NN""""""""""""5%Ӎ]elcC2 :lVauʺS뢨H?15NѶؒY331I&Jȏu:gMHZ~N~oGƸ`+-|e^% Gl3Mb>{vsϷTM""&>V}MRb)$(0?Mo^-;~01ʊq|^_)??QHX֭ef#ԑ_W#"؍HIkC?1'1˸ӓVb )uu;+S^Dx1f2N+ocξgtUH;ֈ !@t|l>ٮm1zҚƫ̱g/by1}?)uuu^uY`;po'cTlePmDk +%a^5=F̋y3rWo&ex@yzV =iJeZ+!)Rkg:k:gQl UM[ %K7u+x_3 *Ymj^EbQޕnT;B\`9|=1ъWm@ԨW1<؎1%1l\E-,+b橡[<՟uTV8Wkk$뺂x>c<}" +m"vӴk+KvYJpk*d\XlLa⮖NJvJ3T3ۺ~_ʄ8adDͳ :% (*0ڨA'gezkSԐTGY܎C׼պژiڻGmP{ iUӍMbR[#l!~[~.tUǮ崇v +Ħ'kgtS o7;Q;Ƭ܍uBp񲞷fSpF@[`7ceu\ljIJʞHKy{2SU BQFHOu:|LD{3jAڔ]G9CtPHԐm-OkbAnv>[kzzoOƱNa-zg𲟪 +:,fVBG{~E@*tDkPmΈ]^;$7AGUM溍fQ1Z(Ga>ou`ɹ;.ݵ1EIM~bTHj0czw2z{uVN',efek`QzFs&!X :#7S9yqR*X\Z:.:zd%jlkSר^=KfY}U/l؆Aj5=]߂1êzc(߰'$U#3yFWDG/h0N?RekP@e8˿1Ry'M+Zz(lt>drc!UK#DùZESQT:VIb =__=!S.ij-v5omV/SVֈ2GdZ/`܁ (m~3TR ίZiP6ȉ('p)#@0!˪Za.9Mzmo xW*gUe3d:޷GA_ጼ:"ͭ**ڵUViy9޽`;[ymY4￴j;VRk(-e[dh[rCeu,lqŠnUM@511z^6Fez:X[fZ+Vlh{4c[KqWeYBRޥ{@{髝njZfBBya6Ydnmk;^e:SKhlEdHoŕn GvI|J^M{Y*좁HԒ&LDaȼytXOxa66wa/ߛ D=??=t޵f;?Ջ۹cDΏoJjZZو!@ې}ww)׻SWZ6(ef%oPGm{z9:n.-k,9 +.€9}̫V螱3PfU\V+z։Y3SE7" +h^)Һ._NwV +Yt2J~5l|9o*u =>F`<mԤ:mXԟTbbtN;˶-ں!kv׾--RvR}|Uv~1)Dz^v_F+qߧ6)klG,gWZ?@j .Rv/)0/-zjz3mGû{ w: ܑA4DԬ`ˢ~J={HO_ݵ_>saC2j+Y +r-=f?Gʨz PTNm~Zm=lFXVB#U +R#c[}+eյնCΠK# +d>ߨ{j*-ǻ@Ow>ZzZfYAW=`oZ |Ȫi~%6e'q4V\ݛԟ3dYNM ctbuk?vrbdfeup8ZqN۷1͹#!iSl&_6jư(c~ ٛR6?j&FmIJݷ*OtN&k($:ʉ#dAVz2"""""""""k=}CjQlu_ܑbtZUVv + $(>:!2V`63DDDDDDDwW {6yf nbR"UA/k(Ciz+h5=dZ 5{f]R[>O1q? +;\||=Ԯ^P lTܒctuTD{7 m7&B-e` +v=DDDDDDDDDDDDD+=޹B^S`bQUkHnykkݑnS +boܔҘl|ݟ0GBcuLfȡHl@OH0<1+1Hd궷u*o^uGc0Z]YլZ{B,;z=gJui1C֪d v+SHBbP[>7qH&vhs}cHnZ"Gaz˗X0zݐ*~K,fq胯y[[ASX؅kk#nF6Y +̓!: +nvgR +V4*5|;}dDDH~9 3r)+_2;'Bv{o pMklmX3yg)Y4%\?YbșZ vqkVV{r|^ˣsEh*kv]̛A׾'5]6S~c>Ze DDDDDDDDDDDDD-5gϏZz߮={X ܬDDDDDDm5)KYNc=DDDDJj4JDDDDDDDDDDDD@ U =A1Z6>pJ9+E$W[ԅ^'.9v1"°HE [Gޒn&/PjT-a߉,k]2CG`m_k~ΈIZtt{^x)KfamX!?W({w;!sWӒp ]񐽌FI:]GvXMln`F[$&QkYHܕ0(#M3oZ%É )t@.I5Wcl33LJ5~ԣeіT}01׷;>=kx fۑPB^$Fx$&d,gXQcYoN^;j`aY3km׏ZXUeTo}mǬSZ"J Nr{.DDDL^coL|tG6d}uNuxUZ&em`qBUVNVcdڌ62E*˂Άet'Kߟ,S,rOsofDnᄃIXKu)"""""""""""-_N67ɂLzU1?5ضd!>+0z>QqfE+a r{T6OLRgE2I]qiiǩzT1p(5Yx-A\ZRuCi?UӕMfҪ#XuPIdwUؖXf:uj*0t`Uk{kx>¯`%@ysCDFє#`2v;m7wX=y0n:?jݕJCGc⾟ֻ  +},#5%ŀ2&Sl#Y߰`I?3g+ʭXb N[BX}{w'do ױpvbjPRµ G`47}K|j1vzZ}G[zR~aܢa]飹wU +[pPZ?B;e#oH05Arzu[FZ %xmk{1Ta*E[FRVv-?Qgfr1}ZQ H-'ii+8G/xfGܟY++3Z e]U7)׾,׏ũ,FE*O9{9޶}޿xǴ(ؿ'y=cx~O'4+@tF ߷y\1kVvtjNQYHzW[P=h>9WW[,_{>mVq!Xv~~zy~ gV,Z9w=ttq3y!qf/zO]Oc58uԣĪ:ңbuS+3S`+a^^]k\D>EApo 5v'nz:3V]T]l$Cׇz6N cY‹*Q [>a1NX (ߋ(,\JM״){RI?#dHԷz?E]YS`,@ܙ掵}I[Ez-bs$j6 K`n< okӿyu^ut]ϝXZTqmY⴮(K^k1UBt5$Z,rGu^FV&2zv:>r(e;OQ#%AE͎yՎV8ɥ +rX:;!zznHxqֹ%:Bպ?rnUCUvc-_1[#@BkuFZE2O"Gnbq5^6(Za3zʻ*,rZS.WŽx %q:)f{Wt+u.8$k&$K/5+6GMo ~Ցmvl }{I.pܹȾݮc__]FV*krwGdn}H"`~12?WˇP 7ݝf$t=/#cik+&mn;ASO+#)MTߍ)D`A;=aλ%reP`kдA#Ѝ Yx{Z^=vܵXKiI<)_3|zY藧Kn=/[YAQ]{߇m/vSK(TZlK ~Hh^[%-(ފ zźC}`WZ_Vkz ͙ίKDDHoMbVoAnc^5 +Nf3*Z+(C+?5cˬo_1"|%ʑJdK-95n—rJmzm|@^KovW\/{!ڮv:״ٴ'1 ZM`'GCwvcdk25=f7P[:vBkEu)A%&+#NE\a`567~װ$LYe城,kb@$vԺsr2C +S`Vp jUc=K +]VK71^1~!l-Qͽ_2WaTȭCdk6)EmjjN,l=ѺoM߂iSvT>`l?t1˷읎!t:rf'W`>rS- 1V\lu5oXT9Immz>/K+&U[*hng frI$Mu wRWV)Qm/nDzO}LνSןr1T^uiOF Q_hðbTv9u ȱ52m:#}ș9YUx~qm_Vx,${=Q(?xK7t3q`ksm +Rv$GKbcd)2R8Eس!I,Pą![^&ͮ(ͮB~UX:;eԭub;چ7[eֻZxk2s_wڪ٘( G?_&ecP FuDDW[nBƲDSut*1kCn^>"%"5+5+] +r=鿮OKU,Ǵ!VwC5M9Yoe$"!`:7%FQJjG_cG[צz:,tPK#SЍfmjU@cȀ6}7Оlj.˭$lDDDDDDDDDDD'c7cOhORQMu'c,;hӳe:wkYM.ڔ`]ʡP;z J${@$1|+r]pJuJ{2V 56 +̣qߧ-v޽5˼;OKU"/1ٚ'c͋lZ\_C~/<]σp.' lJt\L[C޻+{j_<_zK^>CTR$Yj_beŤ0>8/԰F `<[hBД]S*b=Ǯtǰ8\˽66|H+ӅfE!6 +lPAЃz0?M*/f#)ׯTtwI%UUS#{,ǪEcPVҡPODgk^̏' +H:;zFWr>cF.QԠfE]B"1$|,?|(ȶ~RVP +@1328ozD},LOCRXU`u|<yT;A;3t&wx^t}gc̏Ծm&n& X5U ~'w=~'$KYȿ|Yȿ=U]]Qv.A2O]3^JÂ~+V=凸L7"R;(M<5BL}h(-P@~ޛtϷ]w{F}M9CIb;]~>bIRu =:vyg~:m5GU~k|7a eޞ:SQ4-"VcH<ۇeU^E 6n0pe@Qֳl/)^p,O('65{sTnCL%vQ+I:#X7`cN-Qf^L\et=7,Ա噑UDGq܂LzzbՎzȣ䬃}!zzI1:%wK{*d whGeWȣbZ7a߆2f5%}N|縉C#1Mgd<(_R3χ:M,`x @Ds''g2or)XMDV""""""""""PDDDDD:CxR0U]{KԱ^8\`W{ַ]KdWpdlQ.DFX:Oc\n7MV"SqX *f]sSUY[w@j@'u.ӑc0*]p[mGw33hʱ'r; 0"xf>K::ya5{a%k-QKnC*tA>{޶jT n Tun5dUSewbC-,ɰXv~~E6:yG.@goC[i!_Uı+uT< AֆOOKԱ!nT k]L~vEUY5ȪBߧͦ\ӯZԐ NJu+..Ef +AOY]S/3}u}=Q Qb ;]#}zl|vs(^wص`ПSBJlPmߖ9 ۿinmmS`{o^ruq̈́p'D +ϼ^6JVjRCYp[z˶gQUkcء[\[cM_=jy^ P$v#=2^u8q6Qw_ua3欅yUH;ߏꘘz^`[zꘘ +r³]ɫ.WFVRH,_[}ia^\Yw;L`v Ff[,t;ijyEyskYd]W[Y =ۿi3bKZ]NF;.\n+ζU-e_z,u>nKdb _b7vOi##+# +ebֹUնb0R'AvA=nzx8̄ ^[pO;'Z./JevEX=}}KNB܆`S]Oh_ZojtFYý^ds/o}}'n&/CJ`/ܳܞ):I=ca)̌c:}N9VOwSųiA`R9@ȝz^/-mE|qb='5.Usz$$oeapU]ł} Gݏ~F8u:#mcǶ3:Lj_N~]8m;Wc@+Sd|L!.CZ3oLFaaUU$llbatR_vevw]V ^;fM=_!uތZrF뾄BT>tJwixtdYҺ=OXUG$w#].1}5{ml2gqج{9Cb~S .jeUUּC5q~cޭvEe>XnaBh>Iϊ,YZ3ۃ vX&J jz,l\͑`+Z-`݇abguL[s:-ke_kҪ|>~Vzs6S]ZClַ +0堺| +7waj6pEk?낎l1i긷%gXĪ-}t [ZLV/}K1>}>U8jb{޿VNȼ5^o7>I%ձzv$:iA s&Mv2 {jnw[xd\*gE[ a|bD״°ֶrY^*NPuHyձrk=V] Jۿq<7^Ld9)o$%r:-ƋoT(n$$@}L|(HUoQU>\J:Y~^/q-[VASu|;/8z2 7+&dǻcڔjbHSTrY\X}{{}fF/^[VSbB.U}z }r3X32jVbiUހlVeJ,.FϠ'P%h^:1=!dulCf +xt}eo%22Ђ%ȉrz~NHBڷ䭭l;} Wz,N/޾eһ|!vN.Mw>(X.SntabJ{jlZ=2e>g !Wo#sM9Y}J W"/ +sљtSdeeY>·ԜHZA+vW_#i: Ы:EeيV);==)nG%ޘ]pCGS&^WX{޼`v?vVܺq nw>j6@O>L6_낶Wȯ'/ן̸̯x;޻fF6?z!GO G~_rYΣ?UfF2SYĨWO$~~m&iġ)ZR(aqP=}$eL]BTXeΧ>%zTϲLMwb~޲25OC]}a*_3&I!m=E5@9 l, ˴';&uۧм sf]ueYg-E~O@5z]}g +K@յAѐ]*ΩYɤDz|Mh=tx_Jq5.'"W+ -66u'+B+wٸ^r<<@]yc)* }>g7-qi+J*V*h|·c7&,~%o;xo]>kڅRkCeNj5eA 鑊q؍Q"@^Z/%6Q y(f;2NYDzOTʼO-~F7I,@ Q)w߶߿%Uɍ:`Rj.@Hē{>:}qn^nb;{v2\xhZi{P盱xEkEZh*ˮ`)%Gn^/'Tڠ6Y[ LUc=dGmޏȀ]o^MHKXc7Xs>,.>5tBU~(3E{qge՘1nM65Js/ĜEgM۱Uv]AKܙo _ˣ# |VA%ؙb0eگQߦ"QIɘI<ǩ +8t=>#A#AVIF"kkLԱ"w䄰ފ4CxKU!rCb$[Y?A`1-ɺ.kJ V>]ä\ҹjf.bpl/-^ǿss n;&=T~t@apZw-KH|1MUemo6zeVa|r3ʷ .V.(GI:%8UU(< A$ooIQz:|q$iV]ĘǦXc|X@v U3 q*zu;B& r*, \P+ɶ=@>8x#@k \e޾bddcuWe>FJد7{봂D9mS1PYgӐ%8kLfuS.zuulṫ}։b+5o䗑]].u  ڱ >)ྋ ;{+Z ++zxT_dcz;nH$ XU:YԳCc~2ZV :X:|[c=; N%QbʯoMOGxa?JZFNlxIh3%ë;tbvI^2(qF{ r ]ȠzV K>ɯ[AQQ 3`{#Zċχ:ӆC#vvt開h`܁w{opfR5'mYK.k!k!tn:M:gNz1Gvc=P-!FgxI])S kP#Tq`LDOTle+FA;ҀJZXԖcl>ѥxuhk_-BTUPO5cU@"Uvx]ש4VARvFQR* +nV@PP=5STc*U"ނ-yr7o]18q#\a!KþX[;epsa m50tE( {չ&g,lЗS[̠HZE(X('ʽI`(#Fy"״x*G% (}T_a<%O,Rx: А]3#rơa`Y@Ky=u;d3*m1rE3Z΂,uyv^O|lZҔ@*D=w#?'-yvtkkGEZ; dh|&-k }`ؑݕv7e Ulwm>v^?ՠkSArNː͡=u;ԈIUԣ0bH=jPV6v{zyzPGogjy@q;t@=֨4BPԄlJ]kB +)kRv@DDw@|#"y{@Ρ(:d`XPqv֭cl:**z;n)Pw(\.:-ߐ*¡n d_2Ue=FQP6ێC Ls}@cѐ)~@:2FNXHԬkR)ƥb"""""""""" 1s}޻F&H +-Da{C;CE?k +%mgHנ!A=?LN-8ցKvd[-*CwS[Je*\n~Zq{wZ%9ku`*A;{yr"""""""""""""""""""""""""""""""""""""""""""5ՐzoBnZgaUիqhm`?'#U+{-o.ƻw[?Jͻ|l շr=;2k (};1:?|\x aT`tA>a]g/ Y۟2C^]ILGM.I݅e$bDZt.{/(7$iZToց-kf( cӟѲzH'cko[0ER#zWs)u_mn׌[.rF +H?aVJPtcdV{3u« +Pylfbv<Չ-e5uSXPk(Uː MukKW:;C:_h$п'AS?i4YOYej90SߴU)WU(3tʀ%J FߩHAG++)'ǨQXKnRRޖ3(b-1E 5 ʫBt,1ZֵXZy) pkbu.k N8/3(C1q؞#d{v# pYR婍gx? u|Nv/ux^W(U*}2q޷gBC ~GѱN % _.ś μ5h 5|5ڛN`Xw)?#%:NiZ +C3]nPFJmu+hb+O, zJ/ԕA:jcGu4jVeXyYTP] ׸~=uHIVE#~#b\1s\eUR[MRpB +*~jA;E n:=jł?I{˹]':U]iXmF;}#/׾`YAu!7ZH#uTefGHneUZJU~\1N)ֶH#cўSWثR|ųXdrOys 'X7+GaL>V~EfO, +JXV_n$S7  +*Ǭi*QGFJSSZgg!T(,ޭ,faS+5^Ԑt~` 1x9aX7;?__OCʻz#Ǟ_P@p=<ᾝm+CcU7v>8VjՇ tA׸0N>O"5vr'KxkPn`Ź*oJvw=+cjPˌ'~$ϣZ֪ƕF|;Es  G&z3 !}zN&=vUUJ`<~wzo~ҴN>BeVv~`.DL.^ee A>ݙ-Պ[QUؿӺWq߅UJsnKPx pv;1$(>ޣ=xS8אְ&E9.3K|$$Dg;57[BoLwG;0ݸ=4cZ}DT#܏=[rYK+wG~{nk=b06Uz)FЎG{;y1zn&M4]D_kր奯#[-mUyR$޻bky}o&6fm54!1;V=NWӅPj4_ W`]͇rÒA룭oruΡkL`\*ك?zV""""""""""""""""""""""""""""""""""""""""""""""""""" "|Hoыb55f6-yv8|P=6ex!x-B0;H΁cY˨cש(WZcnF[u}~"e`=}]' 05j,;f孱+ }& ~4@|" 8%V/7\_$ ^ǪfIkޙ+v'gg' uo#y(*GÑ@A~,eтCڕW_߄Mf!Da}x~!ZX-˂Z-Lk |k5-:(C w7W˘g/ +k]tc$j:tƻ6JH;)/J6܈V7}e:nm ҐX h}wׯ}&*XpȀ( "|P@q#.d5tHC,uZ|; [%溫\,>^ڛdzJϳ1I8]IYX}[{'H%`-eʷ|6t{d,LuͯU5 EvNaqetާg65Ԭ} &ĬDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@0K+Xu8v3% +/tij@?!:7Z"r~+_vץcz&Wx1.]ְ]ẒC]OT[eAm vJka} U:H 6Se8م)OR Yw}(=Iꫭt]T6{#&4,~qBU1Z#\AIaۼېPI`zz~Yç>4}@ԬTu0!K( +` ߦ0:V?MCU*B|%4'C^ôб1P곺гU'Kو&|nl`~ čX> `:YV,wٷ{.бb9TVdљSzV ΦB """""""""""""""""Sr-ߑ^0 cFdJ?I2fijWʱBmNo;؍nb_4vhUkC72$~WyyxYF5lYl=;$eɪ`qɁwW4*p GVeg!$ħQ+ZU4螻K7aweH;Kۍy6U;օT-m7>VH*߻xȝH?K%bSqo'*Dkq^HQI\؍[&`'TVc&T.CW4Zys0$:;y$ nxEbO!̡~>A2DDDDDDDDDDDDDDDJG!Nu~G jRƉqwDDDDDDDDDDDDDDDDDDDD@5Rl}KO#c{9<} +iPMO_j}eX>0p@UѯYlP\VY}݂l_]L\]n5KY`eq`}K5Qd8Жi j#agf&wH㐗 i+:E(-v/l^ <'F {>ʐSYŸ[Kx[>Ө#\q˿iְoqr\>-kSXuCcfKZQ}L7}7u&V6>>w-R{ٙ}19"Քqާ%bh/b9wGoM$IN96WK2׾R+en=xᆅ(% u=\ϰFj^(ĩDwF:>- wY:V%yyU=1Wdv^ ڪȲKqEks.M]N5'[125+%}&MC_b҅r[;]AWȨslأga[`|Cvvv=Gcp§`@`Tlzy`Τ.d[!)+vv#{߯8[3wu׏om;Xt;$7RͿVX==fwz39hz2CgӬu."4I od-w4N$ b~ׯ}Nz FnYEN%U|.q2m]nw%[dm1Ā^?[SziEǎ-6ـ}r1 #vM+rU+iNmJyeb"$wS븝"z,uom㼑3KfwFUn FMdur@_nM7zv=A/jG\{ +i6'zGXľzuW.JFB{w׼:],ж-}Ujl9 (Զ޲wXqGp ݻ}s e~Ɋ}CQүǸ2*8%{dzv"Q~BudD(/I$HJw3eSXk+&:["31>f?Gsf]ccG{flDDDDDDDDDDDDDDDDD@0LNZ1R˭ڶÿU_UU_/'/o.\A*!m|;{Y:!^MO{Vukg@~[t }%zU &VNMLlҠJf qjddxI2'>CRث̯*υcal@xr<^^ݵ-~ikI#Ay{i~FFNRgT&q^=@Kw!vG yot_6re/Z؜,%!>xn.uY + cd}i P+˪{)Ӑ5*Sk@"d)dkr,֤/.+ؓG]^%K- +69lݔwYM}#*Ə5o,[rjL=F%gE2Ko=V@ƔIgqƷ h`cZ]OӴ=oM*lFTǸ@|肖浚+[  Q(';;wx>0L몋R>"'2ߢn}/]#6>@O'8KX׌4CӘ>)!s(zysR\>o  z(ât=fF=Cڪ,(1  mߋ|9iX5X)S .~ʑK5pаXzkDkZik]cnWޔ*7gҫբ25v]w>}AwfSu^nJ)kI,],{ UmeQ%|ހ +'{c)Aʿ5qQNvmroy~ aWqH!~YFsLX?~-Yr dkGn==u.9H@'ges:RWF pA""""""""""%p8Sf'@&Yj<|(lfd־m뽳Bm_)qP}tlL쮒ME + +zWIgP驃ywXPI:I?䤽5e`Cq!߸/U*޸L+5Zi9O&`Fz~f f8{|,Y?ѼG@,8W<: v>IDDDDDDDDDDDDDDDD@X]K +j½Vy6Ga̘V%5չ*5 +:?I +z=y47$vDlzz#R#_йGb,Jٕ9"`CCcgxZ޽ |lOoΣ]V|.Jm2m]6qI5wlNߩω?smq)Yxbb66aϩi}+*к,ΠIҁg._6uO]@lήF.\FߢuZ>X y+|uv&puoB鞢"&O\Ļɲ058t&fBޠc;$N-H띜v]dk"tQ$7!gu~c 1wvZ\VO VSqֺf~u6RTx>h-߻-Fˮڲ%[ PX_[ҩxO]̬Fa&"ެřν$' ߰sZ%~woLj'7Y~[u >cAJWkޥ9[Zfr +,˺}h87~7pkP陸 p ?^7H#zm5#VȊl e@@-8|[8-lԨ`YmAz̎GTk*D,5b8]c^2~(l*ϖ% j U-3,igWqN +_e;-LNO RR|sUi0ROb'%{ uu]uKSF$UdaC#|+E_1XwrImyWcj^U7VUmRqa :ס3_2֛c;Vյv)+}S36+'p+ lkG1ȢǺ?/,孭M] VE}&uhj/*A$r;;?!"z~_G8ѪRj ܣ×2woz.Guiw Y6Zn@P5ߴ,JﺣS<;xQj4eub/go$sJqm=sMR=9zY;֊!! +Ok?~{@|W`6Qrruc ]jtq$jH 3Yu.At5q`Zn^~~_+i5^S7gn]s7 c[X  w;wGGXi% +@蟔?LiʪTg/NY)QS01> ~!tL|-TD2c`m S 6cЕ!):ƸuZY< {YëxXXT[[!+A(\+/ \5Mߌ XRbJCPwGOXOJ!?# [8rG_='Q+m.8o~.P4ߌRvVVocC37WǵZpJo؆Wl=;? /Aϯ-?P|[tOk1zٌfP;_,<Ϣ'm!# >_pRA?lV#qF"""j Cab!Շ +6G|ӡF?S6WhX +ZuxߛJ1{ZaDDDDDDDDDDDDDDDD@"JYu6*=)jزkt{2ʳa_%밲GE 9wMCf^7Ig|VN;m$NYJ9f3US_@hv 22mh2"&A +hP$̉&n+p ` + 1RtS۞mR'ERX\DzHo ܸMg6]VWY^/;#cdYT\[ZU-X} b=wH/&ʵ% +嶉? v]o^UAV%Kos#:M=mW +W*y8-Cvw/tmIJ}Vk)y:>Fۅb*:bŬRՀwK +U]jz8tK{jR,oNƸkĪr hz&Һ.J +Uӵ?nEl i|)zP_=al1${=d?L]=7&f+|:/fCON&WPQvJ5*+kb5]BuE17 +ԡ=-X0w |$&%k* Vbqh=&-~mmLԫ(83qdƲ)Pl<ǹ fOM9+|@Z/SMQQpF`@ӱ2b""j}"se9&*7en4T+mGW +%u># +JOX -xz\WfSt{&X}lK'ImrGOԖ'R)1O`V\YPԐ |6yv%Ek\Ar;Nރ3KZcCu3㻝*A'[7 @v\r~C1 ~/ZHzUӱy.]@"p:5nn踮BtV"xJ_qJ#'`&~H~cfۗ@ +=\]n,eK5lQ>`f10:mx&+,mrb`&d=vQߊ;qMrm(=UW-!ڲؐ9u:}NQ(nc?N+'8Xv]Mz0*݁^~0f8Pݼ8]`wjtW}[:xmWV)G$Qn9pxhuv/6\=͓X1w6Ov~2-X{V"'uK1I'z8]Cjػ ;TeӒ]jqpz'b ߷)X,*6 dDP;IX/,cZ@w<5 %7l.v/RT+h©8l޳"%oaVǹ%6 |3NupiLK.EߩuA+Fft4P>İrC˭8C <;O ]X5>*ȳ]C),:pގ.Bb~ 676 >gM궋,z+ȩ=NDDDD^[3Wt\ +6<ߡP> w؉'0szm5} +T]t}&``pGԚ =xexRɊ6;h=rߵۉQmmxcgߴꓖH`KmZV_kގ۱m }foEqS!V]etAψ3uv_gvz#^׷nt"U~o3[ƙXlMV>OUjF2\X&3Zlem ^#dMgO80VvWNUx w l<|+mV,5\W:+(f>K*=ۿ#C'1M7/P^8 ﳣ['a33:reYUʎƹ){OOT|%aID&\DDDDռUߡ~?+GO%U֦5aWҞZIe, Gs؏YLx uGq&[Ž&PՏ{ږqJv5jFF >퉑!L\Pn9fwcL2hZ +v$(aGJ +WFqu|sZ[Ek`T):b#ޛgJ<-?9Y9X+.]-uG״~g3mC~Vb8VAIo]y$ zzxt:Sա^M ԊOr[ZF)鹵l5.35 +.ݷ}<;85n fS2v";7mܞ5XI%@zL; +ʠ(V" نf"NStx0صM#`7#z̬l,~iRRV<Țyh݃swxɯ `ZG.UZ1/bA؏غm6#X͏]KrK1Pa!"J2 (݋k꺻+mcPw]3?th{mÅ +ė 1/X9gz e?œX9 +wkx 6α)_-1lx׾>'Lt~!)VɽmNN]5FuSlw:7@9ϓN:VԔjÐ;Leu,zDbTXy??uo' 5>bҦ񬩏݌HR:#_SӒP[usfWx=Je`ackR?%wl7z+tU+]u]]MUKQ(|Z=Bo}Y|7jkk%.|f,;|=s#tΠmeU:JCUm ++_/dMyWp~ڇbT荏@diRcZ%z:T׫g@"V"% y,JE)A;PNЉbk-_gbX]!z},/Ye֌ԣOg$s#˩z ~}/2򞑑]v`}^9TnF=BvW+C'22-qZϪX ~K`O DDDDDDDDDѿWGB[U?qYy ں^~a7IC4go?VcfX'VҼ::_Xgs1*Ϧ.^Ib20>ᆌN6oN^ҟ-EJ?#$#zTWEr2(tf(4WF"k_ +Aרg7.GN`ܤecSip¬wm~!(G*t봣tzUw\W I^nb>""""""""""""" )<;m@9Z޷_t)XMPā"""'X })< 9k]O{l)d7gC9I11Aԭ#CZBӨ XkctvmTwwc誾Y/>U4qJ݁(N=en{h**7mPA k7SSZ،4U#v>gv9'ˠV=R؟Oߛf}N1VaȈ&ˣ?_*SխN2jI;:8LPuMn;O2_~e͛+P:mw}t{{_[}['9&Wǹ{~d?^^R.__rdgNy%:wX<\|i,%~m1 +:ARNȀf%9Y_Ze8XYU/rdDDDDDDѼyz {v?lj8*J@I=O,B C'?3n98@,Zvjط}|k^F WڵٶEWM؎lvG`{}7e#ޫnoN8;h_ ks^^L~ӟkXIff˞;ag 6و}#zBgQ}2Ԗ6^#kYyjǯdցJ.=O} ^1ּC6W d>Xuj6bYU+-D/WL1aTY7LV_zʻ##2=ԺtZk-& l@'ߪLuG[փY0Sck]QeMÐڐcacGʴmx4>gyZn݉dSm%OkSPwhIKmוު[+бcO}}xufy+ױk*|\bH.eBVPK 0T>"So鉊(̦:"6 R?, -)e}COuhF I]i2r,ŲĬY?d +3Q ؘxVZ.W]!$+H$ԃU8*M a*8L COWb65wޯYQ@Fg*@>"ǸېK(7.-»5V´j-J>x[u6Uv8BCpf)m9Œv0XpMKb=vdx񩺤f{zҢUN\Ж!A^'?6i^*_PL;._LX.lJw3Z3ee:${i Nd]ask +bv{ki5noJY4'+dWo=Kù}b<Єqś]3p|@SmVV2 +l`4'"jH|Htc9[ +L^Y1]j0{=DD#+қ߿^hΞ%fU̬]cd{{ wYo&?k= I bu^WVŻᴵ +~{xtK09SuI_I~1k$4{{@a4,Sb[R5GO%7*/L[+`XpA""""""""&FE_*+LxMΥq_`wDbk( <׃̐EJ=z[+~.s~]}I?/UJ*X֌WvAiGy10< EX$պV?ZƳ%y%D{u.I>cb^)Mk1zs*Uo'f2+3#k޺EKZ&=J7 fJMCd XˋK\]H﷧ߵՅRSJDPv]/uA*Unm $ʻ5wR\{2/Wbm&!jãK"㫶Ob@\wNn*R')'#.+KP)`oLA>RS7!'78zŘ?/n̖> bIPu^33`jl:܃ XylznUtN^=̲*ŵRKw=ť%g$} vN/;"e6"9{QУ$]I وnjVvG0~!#/7[|d`7ۖkۘ-C0SeuWqՉ{/ z_SmYQ99E+eY{Ժn^5Zm"ly>ԺN])Zjܘ;־SʹCWޯotՐv}Ut +m5݅fH&jt'"@ #DM*ӊQ? hkCӰb"')EzntܣW: 7?VL?|+Hwr\܄M_/'&Ӑjy}Vk}3,288[.r?.ۛoKGyJϽUXw&n/FGPAR6=#5.c?6]s\4;rAG1>^VyK8o3+s|$J0"s\vyaz wD|'%U?P5Tfm}Ž7āw&QF\Gk)VM{/R2K~j޻%6 _E%@,"O(j~.%Xh+(ހ>%L: 5'Pj z {OsXwUƫ`6r M?ӷe=Q+^)ZIX=Ή:]=kK Ǹ#q9_Y]&i3p-F+[M+t;Q M~]~ķ:m.OmG2}t<R}~Ud|bdGuJ;W]u?"i)+)zƢ5Aw5A+Oƺℱe$$L\JJiPTz>t5,{1*XR``hJ*-b6vt=DJzƥe4%b"% ȒYZX;2j.ϻ6ںnHݮ=j;}&z}+lu]hG{?Y)-[FBR0ml2^wwz&7I)|ʑB+dzuV {Iރú1ʭ|[cѿAGЪY؝5n?)~K3}rΧK9X޿2=2ø4?mWWAxQ>bwf{MC =XŇ(m߯}{;V"PnǼǻEnu|s:z7Rll@*;lV>}@?Ýn`ה/gC>,_W\Mێ~veȼZ`ꡘ`~|.E%b^.V""""""'1 ~vN0:Waۙwֻ׻T}I"!mYCOR7M"'E]BjAePA4^st +T>zj~d Ё M=/}Ӑ}_f51qr9yy`̣X} 4g;ּCtj߉$ + ]O0_%͵T;Bqt"H,Ք63;+k"{ +2בjԁ?~#mޛoV K5h]C `=% t{] UݾetOS +jC)0o 1;]^"c0l7a>c2쪄K1: + mks?V%mdc ikX[Wd[x~Xq-xsK1ͼlXSBDiZތ5}65퇛`Ռyo[}J粴$=dsFR9 >FxE]*Fv`G)S!Cؓ3oelq[2)#z,o屹:=bm*F>KL۪C.Q 8h;"K:U~/]ɪ빔-#V+F|NNeRW޲UH ;l.:|쪫Fp#{=WsՄP1 5zWP Ðedu)bڷq![*snzj8.;ԙgYZsKblGq|CbV[2f'o/>9/°@-İ:(.b[l zƾ/QL.U**f[ F };wNX궱 +-۾eS춧l].NI=_ǶckeBRC{vԒ0wܬDOC:s/P{SRG޺Vaݗqk]=I +>HtiΣԬ]ӈdjPl}Ai=Gzrb6X^!qϖvN/Unizv?w*=k,=Hﯻ6~)Xb\6!S>>#R*fV +&5>2ixWjzyY7fX@Az+UbX:$ַQzucՄ>̗cYû8nRf\_B~WK48@x$vk;l_ +py]Xڥqa;1.'Zm_ڑXðIJUK+#!e@z ] +/m[> {gOakMjGgyl:cӂS[*d-شֶդ@Go 3<z@in`䎛V#@lH΢EWfYv>IA"^ +Ob?vG"y9?G®d` }?i]NUƷ9U NlfM/CIgd#`W*OfA碑mn_^E#Վ8v/RЌSeg-Xٶex/OmIaN%%i@')<7bespzF: r<`޻oS#ousIO=?\k`l(:ߧ}|z]Cf6UN)!Ϳb:[c*,H_M{{#æʲM$4c\۹o]?DggTQY<ԞS2YPYWugG[TЬS,kU`%J]W-zظᑌ +:y ĒT'nԬ:*1F +Ƶ`1:'"q}]>|_7.k/D֐HB*SZBȨ|ZiQ$+^cٖ~c'=q1oySx3ݍ<?;\ְ-nl}#/\kr2! ;2I+eЯbEfu-PtDDDDDDD~+Mr)BJX@T} ns_WVfkS] 3iN_p.İ~?q-M'~&8>l'(T(6ݿ$Yu +H[ߍ)c?$|-`WÍirz{:ۿq2^"""""""ho"a#w xìYq8rɠ^M@:5] +J_vs&HDDD<{Bn8óv˿H?uZ#q-l{zYӣzcuiXtv.͈%6tF$O^(߈UUZM֥A@@`'0:əsb לkSه5 />OT|{ҶUH?`xkgnZԻ5^nG/Bw֥b""""""hٰ}81fWA7S8&F=k-DDDDJH\yr[%ښm,XhG> ܂f3|&_u<U Z^՝^! >:̟qoHq[=ǘZvn;# M"""""""$7WVu&RhаO&Su}G +1Tc݈pߺ~"""12.wZ -Z3)t53weP%iZh 2oYppl5]z# ogo~װRT.uZ22.GƘحY8ӳ N׋2n#v*$3m,_4'2\~`rr1W)c.9ޤvO2| & ::Y}/uEkD9`6ɿR6=A״x}AuZ q o][5@cL@<+m3Me>!z o-ڏn' bՋnMZ[`k~U! 켞 w2|y߃ l}qm^$]6`VcnWLgZ +ŚWJȅ]'Ȑdeu2zk՘ (7:#loh]w̬jK B'.u,~6U``6=&!?NHJǐDorJ+B6$vG0j26#a ǑeTxuzj; ; @oY_øMEwJptHU{._e)}u7)ְkzpN՗u +/5mYXoI/%ʜ:ڲT"GU_%Wpu.eL)uxXb&޽G(e; QWǑοlb]h##J}?B7+))0:EQbX.I#5P~p]ڻG]2rYM"7$̥u g*z> V>nXf?i>ȯ}+)n7Cl}|!^N' JH`E ʿsv;7ꇧ*FF #q؍VR"#sx̋|M5ff%=묒ְzv ]3jFUQdFqĤnxzѧPxg,KU*kE +Z?.%1+uJz%Ytbfn%e7+)+n 2PUq[ܬD@!YfwNQ67TGQ5ʪη ^QuHMq4kKOP_/%Z4k;d?QwW|2/]]A*AQAS$|CV6_KͥՂO Zs;%1wɖ e4521OR96(*Gd޳[=+~ +Z'c`JCu:NVfy˲B3?ƙƬeB;,>5빇G~1@~jBGaa9[6Ee*XŕnJ@}5ڛ*Q5Kq鬄|]KNVip}>sFN1b-4Hh+ } ɤx;X8ܽ@ڳF^!^PMH$we}c՝z +)ƫ|F մ-Uq!c۷G5:|\Tɗ-ŻJ^ae1 +e,fu +;꤂}&e!):mf1HY{QgTͰ,@jHF>SUq*^*{(;l򐟁I{DcN˨.ˮġ=ۃhkS3fS:~. .qj votA]etjUWÑ7lj#zzZ R]̻DlGyV#=C؝"8[}U|lƴim#UQ`xmxcR_Ƥ%?bx-dTo;!#\Al;چ_?)d0 ThcBBeWZJ;Z?2ƪ!G+? Q +q !_8$~o?_ O_ _?or{;Yoazj|j!cW]dٖ5V=a(or au ̑xWJl/g]u=O_[4wMqM~#{S-S%|9e95gRK ݧ)C/j~P2Ʃ!G+ Q +C/n~/n~q4_:uN*i ܝI(Th~?_ [{/j-5G4w/p _Oo2y<<o#>y܆-r[3EO(Nߗw1[}oanVOŋ\i}slk'SʷNʷ4qM~)E|}9zYԻ +C/j~P_/n~?_ [{/j-5Kwŭ?-U{6OM'hy<<<hO_!wu H6VBk6Je/1?G^# /eM_rHr.Nc?S_Oo2$_ /\̣k|)ֻ̹;I6XXaK@ + YMW"*̜k{ێ;#'Fݽ~Bo?tKekZٙQ(F)|M/3,;YwNlY/.>7Lj[%*5t͇y1&^K4[sD%WFfPܒDf2ؽҶzZ<% ήUTh(B{MFSV@$z6G=j5F=wi] 0Sc[ mn$oFtlΣIȭ`Eʍ뾗ԚH\n>6Mb[zKء:bG߹%*վ5Q/ ;.[[yb(1F ^_lZRnEQWC@%J1JDDDDDDDK9WZô>ՆEƼ!S "+FY6 lr{ec'NE(ڀv}5H" uZ8;h=LzJ$6v=uUy +-!-~uݩȯ!yV0.DDDD7\_ّNt /cvEWҿi&=ٞt\z^-PU7ebj~;Cs&wٚA5>u.b4׈r^-aĮv>O8Ydt YC޻3a,e/Fʶ)<|G6z'W\Y^Bk-n 'G~nN+AB;""""&⻟Ш'VjܦO{L_c'=.}i\L/36=w'״Xy뮻̋XIJ8]=u̺|{ڰ QSjʷ5SfojȻIf#M`hpR@oݙ +.uF[Y%XF/~ug̤wñO|CpEƋ4YQXi~;o~N'_n3hGܬDDDDNyz>уF(?PmM4.G 4Kknl#XҶTs3w ~@&?ZzĻP+Gno|9Udj\Ńk'{M60>Y{zpdT4Oc. rEEuw uSor+>bw*tհ"yw`>sW2Z4x؅\  ]8*`qڣ7eM}:u[-4-ԸׯOSaZq J] hGu:67:.vLjfaf/\ι:]8ؕqv4J4fS{5kbh0;ܔcSjV7u~'f_$(:hN$|[orbʥAaFѐ-W#^pjp|GI++`y:Mxwpj: +@ ͣ2R6o\ԹCR>`gfdu驐k!pg `{~Te|w!ʠ*L'kFflg.Uz8]_>k[>m]a}f-ٖY_G[v8k ̫skVmqV`}~rQ̺\W7~`;l+)o@gc(̝zYɎo;;mz;JxnĴvuOXwVqLgaҹ!ᅵ1q(Tr1s8UJ^΍_S|$ʯm=ǨI'SP?θםNkv^7WIZOϗS^/ͪ/&ԢqVdv`}}ex_Yp/ [m9ňkz޷%""""bSh4冉a%lZZiEDAUP>@ x籠uz!>j Pv?LzwWftJK/ B[5$z_NM6^fqc>;{r{0T\#VPA \պ=ܻΒ,~@>}.ꪷTO(_֬#EIѳzYFZҴh/;ao7/'#88P +{= +󩾌]IEu=AA.+$}w1"E;55'S!IV%2 b_y$1ۂ=q>ξsxש^=}; RsX^ZזU'_+qZ'$C?ZNDDD@5U]4U:w>0H?IqoZ_O sC~uXUGbU6-'aM]:^ٗUenTyX͖fڷp[{t6x{tlJ^ тսkeV‚O+}Yo k.6 rDuL.G]bW6k@ IIf/QY[3A>Km~ ?L̨ +<@ˌ0D9o~6BV}ll٢y}_Iy6pׯ.'Ls )- xQQÑv>|r> Տ'2_/8h|zK:]2^ZEoMO#uJZH4u,bt2^[hlzӲ?R&+fʼ^Ʀkolz ;~ݨOĢ/(%vGhG9|ދRxT/6]_T/ՊVHPMfƯ¢jцg0}}}{M쟴hQ(8WZ߿T}q?qV돪 3rֿDU]g^@p[+/wh]7:;ܕ"Ur-NJYYl N"Cu |\w9S,M[v S%޷:?O-y @n+Ȩc={nd닭<:# +8rz㿮-F'wqP2z +@YO?veWvO{}2:./LQ*E +J*[~FNMU`qe>cy,*b@ٷ=.OXë +5v}';S +T@DDDDDDDDDD}oO-)YmW|S6!M9u d6Xv@$ Q? uoUawV2:o*Gчk<]M,%Ŷп̧~jָׯ~ +/M!g_SDDKY [[cTVf'6L%K̛@#xYJr2Ex'g[jG:>1Z}=;?x-ߏ^R5vV_|ɯp^ P%LW ++n 5{h/]E~op^~nyO1l̺ PtF֏Bd^gCɊ~5VyMja"70z~3YP)oN>ߧoE~`0پ@@i}dbSZֵ +AB~#Wj|ܸyi>:%+ZU4|1ӥbWyZ+Ap7~z~e榳`ܾ֜h:n(+Â;޵SӱX 4V|wo)wMȵ/k\,?Lɞ.My%0du zF>בEb M.Qka{6o uVfeboX>$DDMCֿ3T1ۘڿU7?6ʪJQ*@ &:2!o^B wfJ?HDD@)1zFN=)Y@BA 1~ClFe7"7T;#>9|JȮ}:>Wb7狙`޶uos-YR5)eV#߾n˨ʴgӂA +؍o#uNbt6,ZZqg$P +˶kO=J~Gn9ug;(acº 2#UҪ3…KrBe`='Dw> 떏[+m뾤zoW| +Uq dl@_K)}D}葯BGP*_٩[I8#2+ <]l%اV3y?Cчc2|9ת"ޠR%Q0C5nU=ɳJI[f5OYlDv*S"nh`Al=DM;76Ґ~gͺ֔T@T\~S({;KP'엀>^۪oE` +AsC~HZkh}ڿM{oCdrvŶth~'/Q8Y466GG 'X2+ŭ)fcɚlku!tS;{Ѱ q>{bR?F^y 嶏Ho<-A{"j=Pnq?g z?A;Yu>GVdz!yWba{9OLyJ|km~@ocRQOJb]t-DVRJAqLΩ_]jɲQ +_e qLW:xݍm̩6r6{̓2+m鑁 1M##O/k,4WT;`vvLNEoA:f[UC#~gXkC5o z6MyV=uɪ~jdvtOmI~J|`+7!gVc WP*¡N]« +j^u 6̺޵{{O88Win .Sg@ױ:bSTcW< ;R +5NLjr*|$G`Gmjmٔ" ]kc5jtӳǽr0ej}{:m Լ!EyI֪y+l`}!A)aRۨf:9ݙ^1&q,F*è :kB:#`Pd[]v!5( K)ȣIY{fWv%SCMe\S#DOʈw* +YSXU3 z-G ?/6mLWF wzWQ,(g?zr{/%_-˓iõjw&P~; 1n*Kqܻg3l###Fs[])6bdO_z}{ј~1 =vuIJni^<_ԇKclS;hMº֥@`'$0[(k^ާv(FnuCzL؁6.W07V X3 =y-Bc'^`ԀHt/^i_vG^DZWQ_ߔ +0ϴrVUXU=8DE,Njf7[S)dB;{M~SpͿKe(H&JT;G&LDDD0zI=괽W> [q#A2t {);9ao-ZOk/|.e..%v@QY{7pc@ M̀;S29^Ks,xߍZ we<7K--Eq歟ndUTzomKOéf5ep '#Ƶ;;Gq`YsW[JYV1`#vma= ijk|]kJqy\9k8ֻh&]Գgv;rv;>Y`YEH5q9 It: 1V)wԃ,?Å2M'n~c&vM&(a>-)rSY(hO6?~Ct:_.y@+}'̌%YTn$q_H\VFrʀ{.yLލNu9pk*BٻzCߴӥ|ט-;صF l2S۟%upZnKېS=<7fP:|sa{ֵ2:wGUTrOb $o[$z>#nIQmԇdA {32*ͥVS} mXUFgg31jƶW26hðm\Hڒ65Gp~3kXPmݝ]c3zV$zoBNZUҵ-Ȫ`O~ݧѨ]BX)ړč草jmڶY%W4A]]UTh """""""""""xVRh#16tٱXlMz- A k7u*Y5%H<]C.ǡњwzu~`ֵ gZTPs o_M֛[]C)#hU@mT{,c>_3&zB^OlGtYn$J=)|fg_@!ר+ͥOWާ} T nΌ={Q2cGt,Llo)d+*X~QשVda>G~m+'rjíF٘P>dB5}2LQ@@'"\ףR*#'CèMh{vK.Re4& `~&z``d{jg7-eUeQ +̝ /6//jֺRo[נ/V`_EEM }H&tm@ D4 lO[A'bfu$|Zπ%u=;̌{&}tF+7uq.5.ʚw$r velʪWtV ˱1u]3ܛgc |RLO9Ƕ;Xu 4A z?#3]ֵ,@I>bg4|Sj%~aA%5ddcd.]UڛӢc.nV""""""""""""[F 2AMLkzXF!;8lO:f;ə?}'9owm^@\|+@2:S7FV] +57^Ӗ+Sޝccеa]v>ë2:[5)kuG{ɬt^Z57ķC?qq#Cx陖 Xt6?[7r:~?Zκ%b""""""""Gu΃ sFJ]{XٕN'7u&ʿc#fIipqm$r*^5eA3~ IQƳbe>YURtU)@=ߺ.OF]"Jxb}K{ߨĝ?%RQ`R&lԫhPG~ُ-#o̵GiDDDDDDDDHxY:kceKzظr|_јQ12kgM4xd!t*=Oo Ğ"e3:nYqG,bõGo wLNiMj[qMo^[l zkSm%7*KDk婛z?Vr1[+oF4{>FeD>2sTth}}Θ>=DDD@0zCc5kEGg"[}PyTlmSG\LzEjaДqPtn|=}Tz5=^]* +n[mzSa[d)R +ՙnUۈ։"'1_bB_4 F>&[< h* b0zhKm֎Yj5UPm>0H {]k*ڵW qm1{'j:SqUmjA@MbľX%D|Jt;e|쎷E7kIJy6˃5~+Ý]6yd[E:>@{zGӤg5nQ-0FqM +ʭ|;*3 ;7[eSQSP* j׹;Ko<<-=5-xr^at v6}8Yuf.w3 BޝQ["YiҮ̾SG B:;]z=ީ.ɭ| "~ٷkGYkZe7"',U x.N97yY 2 tن(b:f`}y{ag}g$||7e벦*H:u+~gJl\1R 7w\.m֥)/Z<, d~{nT +\؄h_xON)U|Qb]Fwd#uIzH)ezcڢSG;v=\Γ,{|z^*CJ rڑd!_PlU +Uޱs![aFytƦk5;֌՟Ub6W;a!z}|O6;ă-O;Lr1)ϩ8YOdKnL*so2q3Ms)ڂ3f'N/by;Nw=ྰW-ECOhY[DT]~k=?M]o}G"""""""""%;1݉KͪBt\nŦֶ}Mf་WvuYV\C_:7zUpV/N-@FaA h6Oc~,+f;8:?vmڷU B3zߒfX= F}?6*>R=9ܖl,rI& o;xv +T!E^%J}گFitTsSߑ]]/Lⵗqn@+}RȨ7+_.+A머 ^Q@rE9q˺y>~ +ܩ^=ftDDD0zMcREЃllva5v_NJ(!mKTxU2,!n4sbG;w]7".UEO)On;ovLG-;9&A 7lmw[o{+W#?\ZSŎzN (X˪B׍l\{l7)eB5Y+Z'go|Jtd +?=(aȟJ*N'do3i@ZԽG + TOhof`۫ʣ-s))gV m\aW=~9-Һ)Ik#rkoopa R9/?71h]7lB_5f.#m'"|uA o iӒV{54~~ʫ6暑%=#`o$1n);+bB lomDDDDDDDDDDDK9Xf܁ԫ+ }t<;n6N=!mk?x2k*V5]> h;g#람߿;2ׇl<-  Q9^t`]3ζcT-u\ !<^Hl'9mYrtON""" ,WS[kU$;NtDg0e(YXؙq[2h6(ScPtH!~"""""P{AzFJ.Y}4%Ls[umYNԏNKfeX8DAO~) +Kl%TSRbdDDDDDDDDDDDDDDVm6SrK) 9V7[V]1+ܿ`5y}qPuIx7-fwI8ʠk"=o7`]`QV!~{VQ;%Am;27++wU֗S[GXZ:ouNE81Ϡ[_>7|\z:krM۰6>^__W~S@[UY<@#OI#ڿ>I??DDDDDDDDDDDDH^,U`Uʣ:}KnKauL4}Vo{6b(O^LxtΠN/||%Hz:ទO`rz [V~gt5OL_V.l_&D~rW%l2j)s$zw?9i:S+05FǨ:::x7ͺ `Z=#z2lUq!] +ּJI'0zGP]Arb*'0J0׾dOWzau2٢-O/%rK)s7faFЈፖD ?YKKmV%)FT@4#`fnvex|kK&8zÂGْұʷ*zQX^*{n e UYyH`5:]'n W9A%$imlއ9=["Ʊpnh7@Pz&G\zoTƾ~ͧuuyۊzpro*9B(vtvt{2K#et35d[@TaE;'m'nkRUs<Ұn)R_&"P;ܩJ66/A01Sg[OomfD䬻bOeWI">Xqۀ=jKuN6qذfZ63(@~$ؕ^[u7fFp>_A:;P;a-]:Al[(fbl +Iғ~6Ӳr1<\2ԅ;zyvUvEWVEo4(.8%wqsl0Sedss +mok)OHۇNֲX,b̼@I*yg.Ƴ.U˵$5kz;dt<ޡWFMr,+Fwd߇[e6|@*b}WTƷᴶF醻}~R;uUjTyhQ tȂwYKUAעI!<6t}wIʯ):Q8⛐Z, +;]"1ʧ E,*wzᄡu0*8nnY6X=ʾTN +4=Wgܕ^6:FUik_^yyF/]ދU@Z 뱩|(mx]?ߛ0jQB""""""""""""&:gT]Dml[Iָ>YIp(@7sH;}>N}5UeO""" u v85 +Nk/U}wURl""xy0UdSY-K `xt}t~Fzn+XaOy FvDDħI|*ab""""""""""""""""""""j%9uC^SS})N~7NFPsu2r4{`z*A/]N%b"""""""""""%ќ+uZI&`Wu^jMG.Zƽ7PWRTZִ#װ.c˴oغFM{}V'XR|A[54$|Ώ|k"{l{Ρ#V3DNvhށ:$ttԆliamѭٔ9?dJyq饩j"NTAL|HXdܕZ*ޛ%P ߡ޷.YֲzbgQVk|ʋ:$,;[~dZkֿ109=GW}84W*En,g`,@&Yy9?&T㥊y +4;$^uv=v2?CO9c2:}VKRr`BF{%Se]3'; Y]J|쭮gduw?r* u|.VJwH;K T@z];VGUZA06O_6t꭛,BrS''"""""""""""""""""""""""""$z]_SR~kgh}H6Ο:2^]^ [j`H>ZDDDDDDDDDDDDDN<7ճm&#aWpCD X5މuDDD@"K5r(`-Ƹ  }LzyVR=:YgW@mzX/T_ +n6I^dm kaί'KyL ڜt;h{zxY]s\ZUdn̖#J~̳saTF[~oCiW]wOX};6_ Nŷ_.;F0;GHuۏ]rfK +YwduN1hOͯ!;iUl+އm*Οb)&+վmm9FdDDDKMRڴXX'!ȁ@Зe71cْbQC2w wQ-ߓV2` +6N&\BQ*Y }fBCr-dׇ[[kE>KXK5XzDC23ig_r_t"lWLס\/OOMqP)a 0GFfK6E*) *6tNN-tHʢtx;A3-^6C԰|~,ui̩ +S&F䫣Ku9R#ZcΧ*Iȑ^)џO#ͤgٌo +Y/o}I1(7XcMڮV˛[]|cEx*v=9G !Fݏi+/.\E竡%xA ^f7BXR.fzٟcAT=}:^n6%4*tةjY^BhK8a38#qr>cF"WRNV==gBt9kzצL.VN5~PRX,khwGexlZɫ@~`~} תLtm\;ߤFΣUeLRP]dYmըbiPx`cęaQ/S3Zf z}+u&ԉ]a\Ex&H>7NqGqp-eQ LTUJ.!][X#]o_ͳ 򱩴􆬱d 'r6=W_jSP9!cuݩ0Q_fR]aduQz^O]Lц״+Tc5T,V2URE;Oc-_re +[NNȭ@!}zl`=h-ոc ˮ} Og?Mzֺ,Xvbzݽd988dԊF\+*Un;#찞#&jμW ۀuݰ wa?/ɿ &ʭg" עc"zmMB#cjXXiu޻iív*+wķdL9uƾ.2[N\ȝYuyU/z}u/_?j@Mի46Cz`y';`ԫg-C2y+?./mk[=w-q߇QB؛%-wM34THΑԓï3BYn6#ͰHӳQle-8ne@߶Ǥ9I~ +7ssg.?;׮ɮһ[}u 0F+A:#mmqU 뎊z7;VȼOgy_Һ_D*XRMw-u^C?3+t쥠myjNO]O[j׈bvqpf2\aXzr>bqf}}fevftg&bǙb能봘3\:ד^Rȼ]6+Q mڗ<0CLʭ_GVYΐ;|ݗ>|6=ᅛ?1k%Z8P1+7t~#Q>=7O8F7|5p3b-T0LYق_3̯U^(g/Źs[k[xCWԏZ7_I6m~ ;'ymMK֬WH>G0|Qr:QIzJEm|qvteՏ^5b ]y*VV~ +ާ7Q+jUY^jmFg[z6n-]2MT^V#V\چH8uJбYУ;@vC2xweګګs(ڮP/S׹[2r:MTߌWj/,)͙]jt+m2GxmZ2WAwVF@>]U}'ISɻ$G/$oqOM[:vUUz1.\@pއE}>y븋k>66*E{wz+' (lUҶ#{3kl8cËW#;Cט5iLK0~Z#k_}~*SfM4úc3zǓf.c@k; b\@&wIs־O5? r`u\{g25 7X8o{#R39~62ңiZy ɵJ8vwX>ڕ+|%/0lV_S#Ӡ#вsUPElk6O ր$:Ovh{wgqʳ^cglw LZY=v͢AWHʿ=2]x`& ͯ+u&cƵo4Z@OP@H$~XY,lv,'C c+fgLciݹ[! \;sIzӗR !8⬻+;cF^N4Uiro0( +A^^ܚuҌc<.o3u{os7&΢>;%.CBGe$oRn>f]+P[<$ +4F.q: +WY\rlKM@T|%8F2M:ĥٿ&55fB|[Йk+7+kBIYP8@`|jAj0 T؃K'Pb""""""nQX)A#=DDDDDDDDDDZlQ&@vH6KPlKWL{ 6iqY]jޟQWZ;2-7gЁ$OZUJm-UkebQEU$Z`N~L,јd)aFV m ɐ7ìt kkCe[O,lz;/mb6u~XEcQ[jY@lRAceUOOͽ0<T;֊sV`UD57[uES *z}AK"∻cxzNQLs𩘫b +x;Ca*u~jw_+s5:ǗamT궞SkZm.@"MT_EP`4$nOj%Q\e&^fvDW`P9C)#Б]=p6RbMC!؝0:>7ȧ*U1Ye* NJXF;Y-j*pBt91 }yfPصZ"Z7;|o]O +U趻J\sû6Wo]ĥ$ȶڪ˭~MA' RbB-Z‹e@e=}[zZ؉Cms%>" |S]uxxלʡI^\G"90Ix즼TkąY:l@>xpyl.]}PgbdPkp-"*UIJF {Ӊc{߉ ^o8"/?~Q>|}SKd)k >%`@([ +0/NUqB& j/?,w&HUփe׉mOSS؜$@`ku+sU3.[eT P@SkL:E,f|K#P-ُpt8m3Mr+Jh菜V:6u*H%Oqh5 PullnGLWu aXi&|Qԗ:Kɇ#SOb[j;ћ,DDDDDDDDDHcЗYu@XʉTÏ%[L6a2LlRƾ]V1\b`y{K}W֨.rcl(I~n^=q޵EftK<{`. )pDn.T({YJ@݇ Rވ߸} ftK=c݋q[%7 +\G;o]p:7qN*QKVmï'=trs;a&2;i׫ߠoCf KQBr޷@#CޱҲRk ʅIKFbk:=J:L(s]C  AtG}nB^Ku6X[oXP:*UO?_Ӻ>$5iZW~ m ͐6HҀ_@OחUn,䅶A ;?*i^-COj%yv ޲&΃TW[HJ K|,-=Q{,,ݻw?%zC X{!'EleEX7!Z(Gοa;)_Ỻ6E8g!)TOg{.Tq%n5UطWjaո~c0%J@׼FNoƶm;^.{]wx/7f;̫毘2*F3:ޜ 䪖.K0ؼ_5N[=Ӿǖ͉^E8ƒٴ, +W,@ txޤe_) Y9~Ij['1WUֵ("c~RG"TȲWn~ +nuP=А=:Oӎrof5^O@2{. +;}ljUy=;+%{S)hoĀ"pe %H蹯s(<]~BIfU0oLwJ Fl}O=jl )?au%zMvZGj}szmV u:!^ABv-~]_ndKkBI>gæ'D_oIӓfUچVcczHR&C|Fzbgy!q2*e-22~VDIa`༈C$7b>J_{][W [Kca4teܬE)͊1Rc[y|\+\O`bx{QkW95/-"~!hoG~~VOSʮKW [85ֆI?tͳ Ҹ[Wrq-56>~+u4Iy<xp-İck#z9p%ʷ$lL|KUbRTXnl7@ g~$Cw^Y0:NJʢń6k02VB[nk>@zXnþRݱwi:99C_U5PTh@mcCcj:܊"g'mq?pw;=3ObeNߔI^k[ +@=~8;qӁ%`r ׬M+eb""%7+0/#)s҆v$3%6DDDDDDD0A@:}R^U.}}eppj +j'e$&dDDDD4grGP@5+tt~QҩvK/cg}͈:F6Zyv :${f{ + pA")BJ;!} ; Կ1q:zbY`]e_QLʈӺF7J>άc}Os3b"""""OS80;?F"""""""""$Vtto(VڵT.9҃MO)h{2 g,U͡e65 P̮m~-*ԱUBO`s<`= +(#mG=c-c|.:P+趇}/q2.CrK5}rl_[<~ϗ;˷-qmi>oI鷵)a[ }*v5׼X4T^ Yydo_YvQMT5rc4Ŵ4$鄿wYnUҊ IzL/L;WUe:# GW8EkbH﯈)<)VnHC,y2_~Opp*,`$:R{߽.r/kgWj,U>axխV. ++ +bNN`~MʺuLwXh w{zOtxIQ`U5S F{u.ɿC" 6|Jٷ,L;إ `aap8#|vԻ*Ke6,+(fQےfo׾Ǽ YV+,^ Ur:T]us+)*cɗ>wL,ϡ/|]v9A2+7n=9iǼ@`9!:'Ƞu,޶:H q=; ts*r$wԽOXNDُl|YqNVb!9o2#Շzb۲zV* uȁ=ͣUM֎MLVʸ9X{˸w:o1 m*G5:˽1=t~[Nj-oNij˪T0rU`A3q* L{ Q?Նw::5/df5X93bxw^DZx9:^'`؎El?at[}+ˇy.h1vĝlv|u";`x>{:.̒寛Ǟ.;㿦auWN-hҀZwd|}JGRk%+f0>3= $E\$ G!9FoozߨfيW~1w =va{OrSMڊ#t;oeW^.a/F`5ˉ;'͈Kө{ QqRt;}&xrʯ[ODކj>H[~/9{.cIG–`TtF=e ի!G[܅dpYu +, +n:$z-[LZd*J7~C]uYzF>e8L̹Y<Q;{^x8~j(kbPk>rW.C%Z +rK)3""""""""""""" GS809 ?F"""""""""$g:a:qيrCy!&+YU5.OǸSi#՗;:Uc%XQ0e[/ҫb.N UWiBs 6}O]7*ݍoYlk5/k:+(sk6dZ˺:F }{D٘6خWA4X9,;Hװn/fz9JkeUYc k5Zq(V-{LjɲV^? JBdP,|[S$5&:^NeWeau{4G"cEj#ܞުluƾǵ*Gz%,n6y|!́Im eny#((BOo֞޲:?^j 7!}~RVAӅګ2,wFnCu\LSe*Et* 7'jJ :M8;[7~G*;}LιM;-lnGK0IU̅ʹmҷl SY m0GN6|{ll&_1 f[ +{MƧ6D{2}a> UwUg.lV;OyNoy}P uTTe@$I.ҪmfQX: q#ALD7[jҡlQI&]Kmgj` 5ٓF%cX/+aj>kdXgEe(@*7oV4|kaFB>c%15uB]ilQ::dHb&eKugj`TG>%ʲ\> q{5UXXXU-66;LޑVUZ!ֻwVO{w23Ƿ/YEVF&stҟSs̞rdG9T ;{ȞQlk<ԺP]#.פ>+rM~ʧCBAW;V]yN6ŝAhLngiǴ8[olz#oY9G[809?F"""""""""""""REx~,rK_gz +0zHS^I*C/^eԆ +X\~@ """"P1k©j+RIvI'$z"""%%b"RV"YZ :۹/DDDDDDDDDDDDDDDDDDD@o?ڴIy-ok*+32.zdWK>kk+b־2""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ߐΟׅV ,T^ + +4QtA:ww%,c`ʳ%oUg\k8ۊcŝ.r] +vU$͕FiX>v>[2unP:_ueoOH +MJFeƤ0V A=@=<=EgYc;ֶ(T*I:W@jgɶ,P֐IW +'=d?%/"tT5|B`[=~GZV.e΋F6=7/DDDDDDDDDDDDDDDDDDDDD {+hld Iux"Y +Gш4ODgfrPAË~ďQ2""""""""""""""""""""""""""""""",gP4[RR]Ù=6̬&ƪ׋W +l7uC) } M~mN#hjtcc4$ޭn-+xXNÈAoUfTe;}"KoRzj:ء:*8f~܀D}MtbE[pwYF%}s~I?[DDDDO6~IH"pՀ #`DAy^w=oQŊH A`=DDDDD]>f6B)zx{dt}A P 5f7JDDDDDDDDDDDDDDDDDDH^uvWxBN 鹬;e,"+u^N8޶Bt};&+;RN?D,/?=r0fFueU܏.5RZjv4tFc5qs=ٍr-X7ƺ_{W2Ã~ +:ř`=d +zŗZykaЊ5 [`kI xig%h+)2 +: [3.:]#Q$WMJp:m8Մc?xk ^R>VQ^a7MfSǖM"Rj+C#,6N{Ird"[V95+C`|I. Xj /7cK1:J8ϋq}3\K'e/EG`L{ZҶ'~I/ڵLZzn@Uj=7"'M`b~Y=?+/-%H`اO[p~?zΙtjhq~$DDDDDDDDDDDDDDDDDDD'z]_t] `{ :OTՕKc>`AfYev]}#'OzןV'0:U1?%FO'0z_TXeI#t?2kbGlk!;xn[ݱEfPϖf%\mH#v?zE^['Y1kSU[cu*ƶ-ev_R;s.tnoV_0[JwX՝Hұ>޾EZɀPZ@0No_ܞ-#jO3[ϋ@!OֻCboI54LT8 2~=O1NCvHDDDDDDDDDDDDDDDDDD@3to|vta}^ѐzGSZ.r+/DDDDO-~#|1 _Rbu^q@BkLEdbdjVvX*Z'rZ; zŽ&o_We<[_0HdDDDDDDDDDDDDDDDDDDDKy/RIm37S)Q$ŤDɏװ%=f#|+XRI$O$O OW6?ғO[7$f HRCJ=ᾗexT+)XT=::/v$gI:D]Xٷ[~5<{1zýOsReJֶߐۿ`4u'\n*>U9b?H}w'CȪ}﹵ʖ_c] +;h̬|>}Ig?1`<] +5Weda1[;ɀad&+]TGwh|;oFt<|1*Ydgc桎"|E+9yvypz0#=|C~SӺyھ֧iDDJ7g5a~֫JD~$eú?0dGzW)Z\6JDDDDDDDDDDDDDDDDDDYc{#ER 3T~YrUs%kQ5!#K~?wWvޝXUhzB\#g[} h+f.U@,}XO.ij֭.iPϯNwSu2BVE_ƻ8+0Ȏ:|k%4H) Te}=\*f vPklO釣tlF0XR3ﯠI^`Q`? )L>~5+10A]ÒV+pﯤb""""""""""""""""""  ^} eyQhA7OIe9TT}/O(d_4~֫JHz×ml@pv|mk0:TbbZ0}6(Pmu ⬚+un-~G^z1 Cұ!k 'E~_)by3+:$]c!x=,j[M5n@Gfa7%ljvԒvOװC 2Q2ܪ:T8gosDX'cWArAhY[:$eDDDDDDDDDDDDDDDDDDDDDDDcUYӪf_IWo﹓t2r=$@!lhtnΎ?)'-ddW]QG3Q{H /ڵIX|?wRZWܪNCoib|kbTH[2b""[ƭf' 0/_MnV{ $by)mNɍӺ/UO3հ̸ ⾜SPX!?Fq7#XԲƣMB)>zK^ &9gt*9zpɼ;J?M\qa"_<"u0S'`|'#=~QOSd+M zޚ &vUd-aUu ioe[pԿǮ?DqGQ?*GQo:)k={}K[2ױMj4Qܪ+GJtkz09./Bc0GIp}G,uh.ztԒױS'?,eW0añg?W$~?˹ӇXr{;XcCeelkvƻwI?|9K5K4{>w>?2#>y܆o +j'^Yv#=(smV9/NTc{,k:Qj5+-ddW[[kE1Ҁ=29|W\lfGXLֺqcWre:O0 vq'6k[ZmW."5!5 +~~A޼,myugTP`/DFĽX~JE*@?JJRU(zw~ӅZ1[aR-Mkv +LI={ycx#2+N~ﭬOR6Y+cot˼3gT]lSk{ӺWw]H{5/:|u49VǏwO-}I 꺖=Y4""""""""""""""""""""""""""""""""""""""""""""""""""""""<0P{D*QB$fNFOSǼ(t<4.I/zv?^/{(1>aV4AM,G[f'dZ{kfضe ORtkWpZjMO Q~$$;L+x[fg?Ǔ׹&Z?V"&?Pq|t`.FoYSKn/z0dߪ>FƦg23 t}1?ʾ!Jn\eeX\n|nF`OZGnE׍M7ZVT;!,\!P ;?u<'ҩ'2ſ!iDu*/ߚ'IXdp + F3Lۛtc5I[~ef| ӺCZob{ =_b~u/##ٶ碑my1]B@H&Cd=o;0 + ҃~OVA +b~Lʈ1zLq#ggk)z7Q% 3Aq^/2 3""%*{l`Y )^]IuLC+B?K::?zS8!\Xʫ7-kfI:=mU,co^ˏh%1gTﲫُndD`w~( +E{20ɉc/:^'ӓ($˼a_I',ZUA$ܙk(fԷ*mwؑu_k'&Dk-`d1j}XĝJ[,|BPEOoCߴ̈YZ%܇jԄ)aͽ#Y?Ң;}UVνOll_ʯ2 ;.WdWP;W~}Kbtǹ,)A7[f\KUdW{:Q,u:z0-*;kJPWבSPGtA̘F$]>jV[\YX;(O4}L!F]NO~E$)m`&\DDLc(#MF$kdDDDDDDO+b t{{;Lb.@:$aّ亟b$GAbe~Y +?nBF͏qg~ՉdDDDD3c>6Jƈ?Gȏc5΁Բ|?`WXGo-Nf-jЍc*b~@ 4!WN[d6MWʐIQ&[wLX˨(!`[r GٱP, hr* +>5_.#aвZt˽ |#9 Ѹkp+\n^PMn8ây,+:}c`xKeUb\Æ?m>Sj=zwPG_1$+moz:{:HSmoyΩ[e;!_=,CN^RbezONΡk{b+T>w :HS2iKqG1ZeRJ8VR ;פnM%ۖx +;:mZvO} 2+O;nz6B(:-&Qݗ`%jud^_T8e +K-Xȩ#{Ǧ>y'ym@b?mwtkrn:JgcsS%C3^K! *ue˻'zS*޴wG5k%9ka?)mwC.VGO5*JO+z e_Wt좥<ȠNۿLl'M&݋(ET@zwgԫŸZP["c[L/4mn+,Ry.uJ*[1r2tCxԝ?*/eViU;B Ir2z)(>h)9C}}5#^tu.ͯq:#Of y:T\dp0dR{2w̎18 `R" +[a;{jdlIJex? +ĒvO=6=umǭ +03/,m_c~ѺQ'˶cfZ ,5l3*QȀt7ai%L}iZ"f~1zKS;'jhtۭÁ7_әAV7e<}kdsu%}Ce] aJԥba_ X㭉K^ЃGɬk{%.ǭ-N{FgW^{+i}Gb&'qngf؞Z +B4aͭDg!.Ūoэd^$|{Jvאe7" ^όkɧ\.m > ro9X}GK"j85Z'Hmw{7~1xˏcE~v ;H;CsYolk.ZnG#-)[u;Ե[,XǵN= ]5Ȓ]#]dE(M{ Q*T:#Զ;Lɧ:m5ٍc7 ,Ou<V`.aU E"CHa6)юiKi)C5hr$lhyYTص&)T,P9Ҽ yz~~JJ,op<Ю䅭Chk$9!Zr0Bx-Ք:o#o۩_[ ddU !CIִwyddusTJ;cqǿWcNEUnĩPY+T'|o9>!B%auTdq]c[l2P;]Og墫ƥ) ]eK)*θm11] r/̫kZ~ {2+ӺUcyBW]WҶҺC"ҫve^[ ߮ A^m3W{)zJ-*_`kRzkul{SWA@C%ey0;Ǿn}}S"~a"H u2HY5&+#zOR||{R +K^"uޞJ‚ v4v;w6Veed-kbWL9_oi%ӱ[G~mfnlXt6{*1)pXΜdnHQQ0KL31c:~Sxqζ̡*zP0#;~n0/VP)[_e ֶGJl lfu +dRٟq-brn̺`ߓ+»1jj,J cUzrrmMA +Uu I{v;~ Cs5XCz.Ε{*ufVc]+۱l/߆Zxj©v oD)bGmKˮ|jc1ddn6ı`$ ]Kkeaȋ:Veube#Pe,l/c:md\[\8?_ƾRO+l##a;M;ù4tѓXT+`ykl3zUYfgWxXw˷ܵwA̠b޶ \XQ-ƹ vܭ='ِv}i nS]'z>FM8.Zūv̋l ^Z>&g.هM}ue5sC#jtz>XcL[my]-tq2lrTb{-xʧ?Yln~B|y׷z7ct<d'c8m_Y}NF6mX "`u$J]Dv=L%Bte_iS ;ڋ<O=R7decfQby)*g^`27эձWcy_B6BX=;'dvYSRЊ4zw˱V95VWr#[㿮Qq0rU0ϱt=U3]˒KX} 5ekj0`A0{<)?kǩP#}ǯz긗gcYMƅC@^7t*HZ'RI~>xbq._62 </jnGLΔucRnn5SXkgS{{hK=˰olUָ~-P宖?j[l6V._(j V?d${K\ m U7bfwL|5o2lx +T* :=tNTҖqKo&7_)0&~>5xPA@F3mXXW*Il7'e{jv: +}>kP6k`~YҺo+yw-Xy!VjM8¦;v܍fULnZ׽hw}&R6RVij0% +h#Ґ=Ye_.u7֝u#qOS{s)m6S}4{#781j5NF^[^_*WEUrڍh}7E-b\So_3vFmt{ܭUR΁7%AZܑVt2tSyO5,RJ mv#?FW+>]JX,9 u1j66vf6+⡲ +ԓ%Ls\7 w2%jk`lHV25;(ZxM%_]>{r K*ٺ9!^Ctؕ="b'S7Va^$|$f\J#ӯbY0ɰnm>P{cf:pFQO#(~s$J!Nj:{X􇰺YF=>i/Sk%Y:>gDKgQU㽊,9D'`,@n_|Cz_-R21lek`on?1) ;/PWkؕ /mDg=j{13%vA WG3F~;6|; tֽؕ{2U@ʽPWɝK)eoL$LluFI@lJ \,[ˮRߗ$|Gopi{Q?%񬑰YƏͯӥ_Rcf.0]6lu]TcxĸTVfV!ӕ kIWyj([-Ih}0?P{j,YJ?( ;;LȈ1iدNܢ B@}$u>!ž(_3̯EɷHc.Zsx8=ի(X Z[[GPø >r""cfgՀ'OTr{˫:m.сtpul~I$#XBH\dd߸:`Q(qP{JZGP>mQbK@K[>qRt{=OZBBdc:-7A@#D2b" Y彚|5'=%/OTO:;Mk +O"_}nS˲UJ׵Zµ / %t$,еcO%p8g{jǥ/nV-Hl?̈3E.GbFY*fAroKקI@1p:[eo۷tplw:ߛ%='޻n2GRL<*R9E*rYZ̓lN`h9"͓mپ 읎ϮӉ2ଡXXloD{zrqӨ_JWGAFvG}S? -6y"1Fm?rW7gcos*kAȣbwؘvޣ:rHX cDï=A:U]^5Wcԁˊ[`wǏrmYF+ zuǛ@eeXF}6=d@vu*UCӓu WaXuoEU(kr.V|AfcUzK4 L;][V"RS\єhA"['rV~Db5ߦ^5awU癌KmZF~6dtk^[ZPU*ЎXʧ76걲ELk2det޽3jkгNnzqv{=osoaF^V.Nc58J至[#?`Yԥ*5;k;]&`{_v]}W#5z~KVm,VU%4J']51SęMU^e7Zk:>:Ժ^'Pŭke[[(/2NmM96)}w*K1 + 6x~n3+Xqh^fdLlZ+"AG$}sa ༂mwQI̻q+/Kl|jŀ<mk'e2RhcՄ2Q.}:fNF58֣' O8:2䬣_}w2}<<{v;0䡽Ԗ!-ɢu]n$:u mڬ4^@*vh_I ^gPZ\b^>U7.;]]:"d$Tu<]Dʳm[YAtVP~CXsP@V޴hF%WnӷCp+ّ7 !wB$O0oz (abF~wּFŦP5א"Ej9hMrۦ+9Nt#oqEA;][tv*f"=[K>~3qi-U(T{`mYa.[ȏ!ZOȁ&ꝟ"u[&=YC9:%u|&|LBml`k1`=V!ke~C"T:&m8jV̬WI:vVGk1(+-0GtYl5OMS>Qn,]5Z]knT_ +Qe.v58ٽ4;0*3+zY Pr|Cq]'̷fCVr$h HԳOALu%NK+70Éh~DD+ߚ~dSv4 q +ͷ#mb }c2cj-h޾d]W_2ɫ: uUT׹7Ƨ7%1(ljeP 1'@DDDDDDD}(*-kv 뾈$~o9W#ɮb˓.{vLUT"kBl$ Ad>.j:VR, ţ؁fiev!roI˻]ΐجY>?F-z`{G*L7|ȓh + np3򲯦5Q\ P CnH:jfY^o1rj5Tj6AYO`mLү˻*aSN;GZzE5sr/]Zl1VT{8x]o5}ZRM@ [{4z=SXgkܴNo]Km-znɶ2H#{}XGl]EʘTuzZn]KjMV-5X 34a|;MV]y\Dr_mMH]l$p=3LΥn3܁;`'_~ Y6ָ̆=[%&-~nT#uab[D$T]YOKT 3:tՃAV'fuCT.Ʒ̩{]*6]E9USR&Pb͢Iևa܍Ù +ek]_bKeul{net sRk+mw[Vڷ.m/v#+YzFkOX5nF J ^^r["2Ðr_MjN{Ms7Tlv#ujlvnC]hwNӲ/|3Q"1@ +:C<_;-.mXyK@%쮕U[+M*ϙN#]r7I\,P*K0P$;.Oh6b ^hjO)vO:?93-q{yG ëPTT>`u_-Jăø +>5X0O}S|S]ư_hWS.uձKOˋq}v]Bլ!T lLk" z}L.7Rj|-ld;v@mnK +zӰ)O]K]*.3*Y0o^3efv%UmVr. ]NƦC[2zVExeUE87N'gc}&UO,'0/!~q-cxs#WVo+~.+/-Ǹ8)׸k BUDM`7ܖ=?AQUvEeM0>`՛n9ѝSgTAaf#d_YwBw鬶>sfw}`X}+:6[.ױt M˸-S<c2U$C ~tz뾽7 1z?R[JQS`k'D3!ĚͩЀ[($ƶ@#sXt m|e4a0;D6cdYR`4Yž{{{+4iV5 |Fױ פe[qsNyyvXVU_,]N~ü 'Է)JVOfv@<}vOi=O+[~I#?]&_.#zo[""-c%b"""""""""%0kZ0PYw2DDD8y_U9=j͡6F3ȶk :cccbdOԗ)GP6>~i@~sUΛ䡁a{,ݗN;"Yb+9`~tJųxkXވX?.$w'RbR>DDDDDJH ts}>e|Fe`; `x@uۣO0zaҵybI,L&6eX[$mwS3#tv=nBe@l:.ObW[*zX]UXkM +;4;}$O)z+q%H 룯^) W׀^Brg}Fc'GiXy_EYoNM}o6u}X;33zZ8P]w26FOq-8ƚP= Klq,c`c(+EM""""&OW~U[k|^VDꓥ/cN"V" Ea!b4(X~0+Y +*_cxݙ-eqzkGCf^&]zMrV4{l}fxU6hN"XT7WA@a =w]k)1c&Al܃~D~B7d(S6mYV=%,6#qe$w +d]FNBᐸܗ)s>XCv)Mw6"v`.$ + xsG36kziw*|bi{)`'ETMQqzbS-㑓o +DF۱w-!®C +zkvk.:Ab_= +]{Ta}z|Yk` ʬZV:WAo])3\*K+ Xm؀Xvև{͐#?>%רx [Řk$Lm÷ 9.VF(sQ O>`{l5iwK3#Wܮ- dBSR{zK^)wtM@:| OI!G^ɣ1Vt5[ a,4[`iɱ6`BuئIW%Cke4HO}߷d~ɫ |͚UvcOcET堺2kn;0F$}?<+J8@$}bͯ&*q^'L=6>f= Od)"f|kP]}Uuh]V$RZ#D{%WMǷ&ƺ 9zN2U*X,/e~a :ƨW}(9y͹WFJOi[mLly891__Yp[!{N?X &Gz)aq*]ؘ~Y#ϩt(.-ġERtާVNϿk>FW:.՞NܸVqº~eHVu,Zֻdbu2q !lXo;hyzGR X\l-6mj]BN:#Vtm)̪ͥ: ]ϷYGP n,ؔdֿ+lLj(s֬X|IcBfDDDDDDDDD?|k_hϒj'DȈ/6ޭǧ\ɭ΁bjGuNպ]C̳%kgU)ZXaOؙy][!iU5Q}#oߤ\ +lewHItz;e}LʽLIAgŴ`W#~$]3SRXuVr/~˝k#'6Z-L/܁_W|}Uf=HBXH:]wXy=? ʫod?gW[cX;-V鷶~/P+evW9f=+(#}Kt}#YNSHu9r =a^Y8>|Tą˫(>>dMv=H>Ve9o5\kGw!$Ut5 glE怾;wR_'2޳(Ux.~W_Sp6wA6cIPA tGqSYYEj~(::z/t̾Wl yzkq4NLLᅘ*dZū榻-[ז4u]S3|T-UUv2&!؝z^fLn@ +Fsכ|9맀Q,Sȅ"v5zKfbד_!,m5z )VJY:L36FfViȡoKjDbP hr$h{O :^5b2 no[z?FOlVʯbU7#3 ]VR>bZ˰Ct69o]O:{yb4at(0y=K曩~ }FvmZqU^|AM u69tlgꉍn/o" >q3wF>9',^n+P{kʧ/#6Υm< +i;`zԍ=ӼWYZZԒ9K=wat['\|tlXhS7b?;E=YSU" 1?8y+&iBdv/:s-{Gaes,tD{[FDzvu$r12߫ ָTR^::;Z}??+l>=N;/LL7d:~1J=8{\ޟf/Kq|[ƨ_)]}yocʰpVRT2ive^DzoDC_fC4p^kO& зVݨzv#L>C߅BJkf>k|$V=]$ӄBZOj׫o19ߏ| |MFN)"|nA$3uXּ~-_NQ*%舀<4Nղ_[.|t5 ~WIޥlʨ6&:[IG h;?deᥝB[+rlؕSL1Ӌjpâ0Rz6l]wij˫^lq^,HQw}{Hޥ0qC}V^cPVØGRA;q>IKMvգ= ˥ oV%6ԬD9a_v8Ceu;}%A::#^98Z@F z|J !:~gQϼ#ddTWMSV K0;}ɡ1L.;\#nECdf]YFR*kG'ũ'(FeV }wUִv=LlGR^i$=^ IMCH'C$Ж2(%cz:#c.DDKy[U`ڰ }FƌՊ"E>o&""""Q0 z6'H1jnMNY1GLZյܝߡ̨zzђ?QQ ~@;f鋂qmxZۉ>Nc&Nf a6wFO1ý5SUaE{Nz`u`E@JUgQ5M+̅޶f7Gd rQ7c?DXS=~苟ӺgTk`#{Lx.Q6=㲪C/oC7otfչ bU, In "WԶ U,ޟ|CO:#prRT6:ؘ,1GtSeme.^O`uӱmf{bU=vmM@&| a#5kMNd~奥:?XP_ֿ e8Yc S8Qӹ'/gdQ~@MCXyF[𱮳+*C:X"R,~CwpE$qN1f+gf +;bda,mZF` r}w6/a] aTQ[#lf#`hRf"""""""""""""""""""""""""""""""""""""""""""""""""" < SAȚ|%k +s`r{l;zDLޫԫ F5 +x}>ZFUvG"j c$_ųt]jRCr6ޅm_Hg 0,{JH߱M[ּtE V~:F/FՉP Nu%t1л~Q^_q#ܐBh=z#rtc" 'ydk5'&(;گ-!ߺdnwB|Eޕe,]@+뿦cCc3Kԛj^J21R}I{1u>[e7!LDDLl<љjBw̘MxZwfzWtojz}&}㮢[a;J\9sm~ǿߝlzem5L0ޚďn~=ǧ[f$($R~HF;Ћ-kP;v)aTV$'S +!mcZXp 6n:suKԭV04,V6>S+uM+Yj%n^%޳NjaSK]*vO^u,*riom*Hl;Au+|),27և?#%b"""""""""""""""""""""""""""""""""""""""""""""""""""" B'}Vsvubk,`N&}-j}~FaY_^j1Vn2W>MO@poz5v5gVcԔ+ +"GĚ˭l=TYbcUz# +Gr;//d}.u`N̎C2s7P5*UY$;8cr-__\&"-+v!H}=t0rK6@u|] +Ϳ(8bZTnU+f$]kXqsc 4 +x˕?UL o#Ph]˦:2ԯBg˪|l5l(o|'DIMgĔ[j؀M=;M͘zO6ԗGPA }D%~HEz&\}5=JP+PAT}<ݑ^:f +?tˀkWrlFe(0gއ^oUvY +fQkWvj]+:vP(Sȵ\xyͷ=2K>QnTFon`׀c&2CE+dž?H~ȩBs*McɹfezıꮼA{|61gFu{Lkr3W^I;\OWMoztnfmd#km>K ;3+2%ڢ~8ʉպ<]4Šf,wH6jgO8jH^Ҷ+||KԐ%""%\jܔ= SLnQ貒,t`<[\1s Q&PE쾦eDD*)f? ̷ҡ'% tH'Q/LJRۙY${tˈ<إԀtH#c[^_L}*nK]g;y!ێ_RG6ڲwU%)H`AS?|/Dcov&*a~Ц*=q +t뿴c>n +N@BmV_X}aj7}}\1]+}EL uiH;Q򊯲=DJ#[}mucʹ *3sۍa!m:`h] ̛#WZê!#D?3R?q.LgXTEB8vJMmVNE)9pV@ĶF^}%^i,"`v8%${eJr$=L翬P7ؙ|Q!-eB}45MOQ!SƧq}6A 1`@6v{/tNB<%.¿İ=O2*WjYCQJ0`A]~`KWx~kXlݛĎu~콃+ĺ̖ce"X(AWdY- c+IRF&%o] +_~ Y`(0`v;Nϓ/&֦E>B*,x pz su\~HgFjccU+Xgln2x\ܷj[]6lR$;klBu<9ܹ!x [{>}o+fڔ Z-932X=-Svvn'P v]u)o-y)v}7-.n4cT +vղr|2ל.ܺ,6'^:>ƥ :fzW^-BPa:@ӷ`:/Z. +bcS|)GOz/{le*5mĖHG-x^c7,jΎ;o?LY8(>}["y|C In^QcQrmBf~`UyޱMͣbcc#=aȵ8sDjx!(8Ux2IonfWb ajҞVPV-RGu{TƷ;֕p;i^eKHqK<.lGݗ\Omz`x?"M\X؇ˮ¾XakJseՒz#*%YV!䩵+{nk=W-mYhښyty)kck/+߄ wk +ݓ"Vn$#ٳZ^ZNU6crάmv_ Z `:#+q133]aȪa,tzs:YvucdIR.@kulnjKy`qcm$L6V>M2^!4 +n#|:zveuֻĢyK2>Ca2\>npA<5U}77LLsXkX܀==$'PF!u埄Q5 JoβUju4;MK*b)UpgÇ6_lQwMv8OfҨ~Ἄj2x\EOh c@*X{}nLM3=&BY^U]GGS]e;ԡj~+ZƵ%Gf'[<=.FOIGd]5o:I`ֶ|Up%8mk{sε׾.UNL4}P{L_f-(@:uW`z zH,^06jj< +R9${yWfYz}^u {Vբ);v{ +.ơ+9tXdDD*FڃC:=ˉ-rZxb@7xIzF%nR`-zÿȢȭl_FUa.DDLKhAT,-#G^l|yq~;çB[JZĮƎGp$eRc$@rf'T)n_nDT+lȀ{wZRz;0޵==lvQOޢUG$#<5U֪(v3:ٗf>N |$CHg|zQkB@~v`futtcuF*Ta/Us /Xp_~K6$'ܝ Nn2EN:JSeyMiJXVEH's#Mr+G%L4cz#X6qsudoZ#cj`x4ObL`H }] gzujPԏ7ķ#l  99xKcsX2臸~B\6U8eddGPD#>N}]6 GoN0$^oG3?3 +gm/h[WR?YJVk!i'Vֶy(l=3F1lqmǨeK%톆̚N]@KUʩ +Y} nLjCUnɿ bл܆ 1:-jMa֬[g{vҎfgX.Y9o悉~Hz(ksnDkJ :]v굊So` + y|t8eYVaXj" 7ŴH`Oia4χG}6He]^׼BR̉=ւUPn4'6[lzaL[&0BUF^zAxub4^$z+;򨲤pЯ"9k}Ǵ[)j+*P~Vڍwe]9 Mʙ>H5]Ӑ;pz(mxqE](f7KũVB,`vo{z}eqzxtW dYeڠxCG{}ek(qO,sk 6u/[11D)첥p ljetnezeR-ȊXQ(JoOy>{lngOGļW޾GlvFK°WcT4 ܔv=ǮᲸu v_/:N[@@/er|/ӱNh@,| c=v#2}s%HσuZN@ ۼ߶Ԧۛ[r`^#Wzam܅/ĪqJ7E o}F.!T#dDK=3_ӫOs96f@wЙa+qttФקTjƉ 3:E߇w}3^X!BOiif΋f/Q8H@6P{OTɯAhfK0'6vfd' gP߱:e}gK bkcPG@3VޭuZ5l3 :h!)j-K- u؎쾏c.^=»^[Nh뽀w / u&MluGmO̙1 ,d7r^D*vζ<3bՎMM"2~P>C.̥kB*Z3?2G ([U|彏]z~gB퉟]Z - Vϖ[:oNk착mUܑ]v˸dgW*R |Cpdus@_%<~+mog< 8Ku^`Wotyc/‹gN]"ږ3\[IˍXeuö& 㳯ݕF YOpA"B \߃'x8ke9ko.ە}9 +JA&/<=gkJ~iEt} +ՉdnJvOIu55~.>LdaW W]ZelŷN]!FF`Ýs9Wcfߗ(*TG C3ܹ` 9<9Ep]wFvk ᥪ]qb^?BL]_&B߃Fz5x5ȉ8! ɉ'](F椝K9P-cݘ )c]2ǿP >Ot64Aؔ'ʻWmTBcYMUeo}̔ȫY|7 +4o]lz߇5q/e*5bHXS]v-]= uM^m@ '_!Rީk=r{UQS{cec`@)W]{tmx/iCNׂj3vD59!A6Pxbk@#=wMN-ݔ_#tc,{ωm#)F/DžeB +l{ֻCU\#}X>wX6^>4[N~/]Qַ%$=kye6UἁezkE Ho-ӑk.o6.KQKB%Y468dY~ncRr}ҕlN7#C6+jԲ#v:2f)n@ƣgxoˈNNG}z$k.=UhSU|t8.4{$t;l̨J| ][>݇w'Vv+-սʟP65-tyM̊U`kg7ժܛ7.__?C7/^eŮ,F`3*xvyKE[׮kGчY7o-r $(5_F߯nUYg|cnNJ^iwj6G\~,<ҟz1uVƪJ`e*ĸCr5|S~U&^7Z: bHnwܚNUZȎMc.+N65&b"""""yj(ʀЕjjkW&PZPOQ¡MH_y~/DDDDDDDDDDDDDDDDD<$v::}d +Y+edǚI}R>LaB?B_ #.s^jK+(o.gL9Z)^{ɘxWxw1W +G4IeOzvܾ[]oǤԶ26F=;W藛+rZnkb}S8G߹o䳓Z(@t?$o@2oFG)4DXxRݹ11pw#tS,== 6X;|徣kŅ +- EI=ע/nM) x Y}H$'[C׳nbͮ $̬JFdJx`wf6дs 㖘ῴ& +6Cn"rfAl OMm4-u$$7؍r)E@I}L׺禎fKUVĝ{^aߒK8EVmZ HtCp$zlU!*v6=6KvCTP"+yF!=~o&VߏalF`5߼[ ciL2 HoEX{T~/ctWgj*BJG}GgIYZڥ {!0M Urfַ[.jeWyhSdY-!Sh3,]^<*mz~Xe,wZ&o؀4w +oXX~hV*iض+T$ 3^ϰWSLӒ:s^s,Wi +2~iD2'`hor2*Yk/ +#ZAQG-y_-7Ӈ;mo׷eu\GerA]}/i,PvAy]s +"lˁ">]=`u\n]J:olw>!ȱkKvYqa[DZ3W]v4Tm*cDqpkKnQV'%>!ۼS{5ds1hu\" m$cS< J #eҹX;g'5uB'CK9}K# +VZukuh:$2}ifpq/GD {lހbTho멑G]ɸPy0% VUv2;TduLNMSOؿ/䍝]IcVئu67/n^6My%0d 6wT,∭e]"Hx3ϒJ.iM#SFyyn1wz>*#3 dRuzֽ[ +k#ߪBVVfr:]A>2Qx=Kyk7Dzâ[Yv9A7 Y铑4Yh/L\mmqmCU!ˮCߧ{q7/alTw,u )K>[.m:ƷtSULpĚ߼o~k_]XW2q~VR@t >5fDDDDDDDDDDDDDDDDDDDDDDDDDDDD@uC1˲UZș[ʫTEfb$uضe wQ)+#gVSsEo RJI H̸GOTkTb֥t>dJrM֛ȹxX+o`˱S]C;#FAl"AlYgCLZpA[ Ԫ >Z oMJxQqU7UZT*ekVQg!=w;HU +\Ρe@*m)- r}f]p=F+ e~5S:W$Cwn9Xk[p?AKiQtvNKHfH޿L坕X5BV,*pGopNZ^*ݖM|+^W项̏e~^2o*˰S&yoK1`'\Y;Niyp!D;C2ę4gxz^˗q[J㭟/؝{(f:c@|R}ڶd~"rF*er:줏aec + +l#LgWQL%]pj;Ӧq +!KV/ÿ^_ifeg1-+}7"K=h7e@GrN_OŴA{z}$RCu? +ۇR6f67~~kXl=S)}ȡ +ͨ. lڶt<.$cxX "l?RQor; :6uR[|yLtA#\G}r(n0Xܔ0@[9<+W7Rr+~KN+mV5]C-և!yg6ζ{ |{oe+ن6:3j:'Hǯ E;P>2}F}"u9c &ڴ r^U2aL6qHem➟Hخ#K.:WE  :=.<MobP (Ox2]&#$F^ex~m!TtpFη$%|T̈́1zjqcE {$;)5/ۗԮ_)3sAerN?D> i)W{_2S׼K>ާwO@rXCbJmA;3X?-|DX[,}eL|ubxBV,9zٞ/vBiL[*ղ1;_[oi$]un `oOW˨?r)#qe; H 1G<kɲ("t~-lhv>g}_Hû.J[9z~x 8Ԭ|YyǚlO2*ފRچkCs2}`V۬ufE #e'Vx(lkQ1/{ZúJ!qw̐TzlU}"&f6WaPIFΈ?I'gU8f +2mj $V Nh;L? >}Oζ@F)8yhc}5~kgmZ 7{Vl|.u^@d+)' hc]o]5|DzO{;O#Ec-eQւ ?U[L oTךغlႆ #6Nakju[h"Q&;߷i'ղlþp|O-vK%+4ش+7:źh}1GPʿ 1Am!p]. +/'~y^V= )S]S6F Yk5J;w2;uOX@ȗbsŗWV*:?9T9/5wjSF$}tGfgE-Լ[%VXrm]K7U5j+C1*O.ZdE;=;ꦴg[߹^-Tt48.҃`´ x[㽢Mf9E/h|Z[{szf)>"dK-SF'mz+ĪT__A(TWij@ՂYu{ԍbK}a1jEQOs{SeکJ"(UGx'\`݌U@`A=)t+Gz*KWd YXt K{~ឆ5BWx:'APZq`q]jTuӰW,ŪKfCb=/Lm5S,$vNjpvPTbR+ikIp;cJAb`#DGS:FABcҡ[7솇c%!ӗ߈^XmJkW>C\2ʛjEb>e/ Q]vCCTy^O_8?֥,=5QH޵RCV*5!A!E(5S՘[[=vJ}yqzoi zUZ"׸(7]n "uTcUg| @;vԹe iXȻq3ozd8pGfQ.6[~RUWp{z!]uN$abYx+e<`8A|%u'<ѩlbB10p:2Nbۋn[YV&5Z{*"aV4 >C &g:W=2-_wS;Gׯ3_e@F.VIVWH+;p}3^|z"r2OUf@$q!Hb߱!e=+tRϏ.$)n&g~ 98k^3+J,\U*P w{Jz&EWeI*HEO/^OM{MH_90]ami%Mb+.;C/ZyBs.F5^_hr쨠,@{WRgwQߑed;#zVBua?Bdyg<]jYHװLj^A쾻ҰjӌճP+.;2Af^fFV'YEYUFY^lUe~AM*WoRCVd%c)f \{ OdW*zswYf(Mbie}Z+]Kv6e`A{hz̮6UmZT֪)J҂v^"""""""""""""""""""""""""""""""""""""""""""""""""" 1xJ6ܼ;6 ;f 6I4ܙ l2~%Ȕ'Re+5V WVPH=Fqz2qhn,U}Mw.URҡP4>@ Szw+WlEat0:2R(G """"""""""""""""""""""""""""""""""""""""""""""""""""" z) SyTPP6?ȣ8^Q MUX!Ŝ˺Y:|3~;Rj\rdevWn[;?tt7P_Lj{fmQ.d[;eZy! Өk(bY~27#<3,_5%oMhҿ6}>2/g.veAJ+*hƹܘ'SSm/*֭?|Líf`auo˚ +>2VlQHDDK}o9C"E o#A3,-WZSGC.HޭEUni>k3+%(שfPMoj~G[ Es(.[=ꊿuM$"({@XJDKX5ԶԏB>rJ+q]8ؼb:L.ȭ -c~Sו3Y5jud{s.e'IgR6f% }N¯o1@OHDLl@ ` =11zwe+znUCFRCkzkT`IÆ]Ԁ$Lz{%Fb{s(ʧʱհwZ6.$[vtvZ ZY +ʪ6HbbbkȧEt'!Cat}7dMK/{F% *tH#Gʈ:C5E먰` +!TIr9b7* WSbՕH`.0zwLo#!1Q}sLŷ$Vlg*RBzq2]5G@~~!oTsjD$: F"f:tGM=r~6 mbTd%L;JbAZl;qE/̝r]l s;cuk)*¡߆+,$/z|\e-MxTrcP~I`{"IVlt_5rޙؙv&}4z.䜁pXB2;OyYzXTRBryukB*ՋbUstZ-¿*-鳽ux5fvkZym0_.{cct,:vsf/㝝vGhLjɩUEZ̬tǮo0%qmJVt uZ{'7׽JZPsU<70zW~*^6SQu(Qקv>#^(Fv56.@أyRg'=s7kQN"n|`x+ҺMK[%E? +H#EI^@o]SUNOaZb$SuK7Ri1l*^Y_lkBTX;DK 0v^ d$8]O7+5ں +.ZFX?>Wxȭ[/3ʛ0^%FՖtGr-x^I$W[@q #//+Be S8NS:qJjS[u|$( +Fa\S"x\+bXo< 4;{_} or#귟=E> U~$g%MoZH +agUr<$~>u7r/[**WVpYroYW_N ^gXݿfVf7/y#ӏY:IQ^^Mt˽o2O^u +>"\ٶY__s0-꼼ETbR&/BU''% QȬ\m JؕF$6 +u|y`?ga+*`N''Ҳi hHByk(`b޶c߻ &G+pODr=D)_@w1g[ sQZ.e৏ש9벗.ͶY@VR@_]n{_|yfCtlq3pI#[=u%:6c&Uճxv z{]#::UqT)6>`f@Sc=['g](%7V+T <,whh.3nxܓJ[evSLuKͅ6XSM/?7˚զwGp`1:*.VS>{S}U~-t+P/UŮ_][_C&wWe`nzjkJT~ O$|7Mh B^]TG޷*2ߙ0OMsջ8ɫq]FeLcOJ̮5P Qxy}+yZÅ[V|[L׼~ǦƊgqU#KQc㌺7TUjRAo}:uYPh' _;cu.>}ar{^CM#c%kPA""""""&YƲ{b3:YH:ydbY# + 6 70Jt+pѼw.GqUF fFB e@#5Η|):c͎s?7_2ҕ!_}{IqFun]]AB?z~Lj3F *]Y~%zNѯ8ummڬK!=~1-G72c;p^* hIY})ոK(.,A#n}:&Pok-@s:.new#b +ٕl.mw߮]vAf6Oq}5JcX$zNoaô׼B7ZkE +ur;O|GjDP|'l.v\jn/lZ>%W*MX7b6@c v1Z +0쮪VGm_~gV[~]s,f +Tl@'%30Ϣ{X>` g@}q +X{%އvnEWZbj-+w5]֤7C>&-ҾbYX}D-?ҾҟE<(װAn躭QW'*0DžFȯ*̕T[,''F*ΓwTz-T +-m{ Lk_Pp/G9qB+9hwn_YԪ[P-U=KW\c}۶-{Ua)RW,w~F9("֌fŇbA r81<=~'OB1<8ėy|9NEc5~SK)kmڙ9#&lln+`[ 8F0^c,tދzm]]l`v~顠=~dX^jzE*빣jUڳd #`S5c~76-o٨Rʄ ,X[=6Q%lEGu}!:bK{M]j><9f.EJmH+Sk}hoϧy| [j/mP=Aw$ȩlPv@MK:x;Jk zoR\XƜlC1bfu~*k/9mJԔ +T<pǰ[QfF9ovYW_Xt܌A[-W ׈'N)Ŷc=<87 wKaMG&wc?q) h>tspUw` !ǷoYD'T|9x QIe-䴳OĿ22:=˔+>U|O] *nIg*RNXtFr\k߰efFGDq^䶪ԄYK;~#ȃA7Kr r+ UX۱N/kVrAV G׸vll{k'`ȨҖIOcY|阘&qޖj'AǟoNL̎VIŲZWV[;R6t{3(&ܘZ҃]t'xK֤۬ty.nw֚ȱ]{ƽ79]9VcXVf݊qa؞O='`vá0n|CL̼\kWkJ&[fއ_c,r9*BYZqw'}ޏmNr+$I%zFzK4l& ե6z5lہVQ{Gc+Bܼ<G + ׋nkC1Z.zkk.5#}@R)bR4AEU* +z-[23%pue؈\TU*ާ-nR)Fg*U:jv"'v}縈'PlzJD@VmXaM\* fmrt%nBՔ zߴԶ~c&E KU v]ܻ{ g񣈷{2z>38ndWXʌ蝉 vlyUr+ڲ 13:> ,-´k_Ȫ@m't[* 36(-FX,X:(fGFѸ8Q1z{֥Y򋀻P=.7\_ 3+(#we&>t,ŎzL_a5gE 8?_z-﷯i+=7 +jPԫ -261q{fsjEe +#cf1:i>S +EX!Ov Fc`b\V. j% A-pMMUIbvߧJn@tUԲ0+zQ?`%n:E_V m͟AVc޹}_˫:6zĉ&uۅU(YNV^'؝qz.-nF]wlږ$; +t :a^q(d/yjޜAϷdqgmYS"zyQӗ9-g<!LCcmd{\} GL +n'nUUZc*NnxG!b2kbd162(X>eb3n\W!fǒxP̌njxWeXm#y~E5k]}Fa[r: aQ*{|: ! +Uye$z2{WӲ6 E䬇|7YοWNm62(l6k"}%?Ot5 ZFn* ߬OR͡.Obe:e b QL\j(fp.GwQ|o]3'pٖYuhe@ =$*dۈ@X cŝ:kp5jL˺.>:佫7, .ImY:[F9m[xa^HИ +DU@Bq$ z.'/A}ŞAB> .x&@,PU]?Odx ;8 `DӺQbx9GR +VS uLT3ejxu\_U–f.o@;nl{ 1JZGpXW;O zsQiNȖvޕzo[dx !lvQvbq][?T%y+;eZk^/% I\jKpYNDx"Mm`㿈vz1|gjetK2e: [UI*8blݸ3_ILοcTّ9(;S:!ee #qҾ.Nn#kZOϸܕhC8D{8JnZܽY9^$^v8åmJ,ȵ]O4Y~-*;*\z A:#q_Ydzu*`<ob;WL>W1,EXB,ƽ6;[YR2Obk=E`O}' +>FGVG';{1 %|Orֺ5آ w[~đXt4ͺ)[aջ_/w32|:\u7(4ͯZǢ}kT7VW@ǶսGsTMZ`mߧ;6~*;]Y1<N/%e k鹋UZ4g$0֏& +3bb0;mJGopFe '>~3SHo v#9qJҧDm[Q/"܇cw$hŻĮmlæ-z,yY5]w#e:jtn^us]lPtWk#0wr}/y":39)8Vٜ +-VC qPO-^70+㽕U}{К6}}7ucagd|v%uJ%d%T'#߄swRvjF(Wqfef"B)e#5.`ۓX^Uy%fV=Gn,H||W 6HXKpg?^Ф5ּ]~3dt~]U`8j% ++ ڰّh`T+TfLkQܑ{yӺ^M@y|Mdm"dog5CvP, G"42nS7کΝ⡛~;R}^UU +d \{;orCjzʳ--\fSg▪,M$lo~ZEtF+fAn$r69\z@ʶ".#BWm3Ypoۓz\7e {I(FʶӖ[.rE¶#Vb;bcj23n!k2+h,+]lwMKUMccé`>M-٫ԍKٷˊV!t-- .c}% +u\zh̩2lfo*YֹbT#\ksٶF^/Sſt/.`3 %X@Ϥ1OIf;V$EHmMQF6iV v'}>/*}r2O뱈l.I쥆[õo9:06<9aޏ=R2+WR@# {$z^A'>gzՓkLl'k4':hKel㷸[2( ׬l*V,uaᆽ~kØظֽ̂kw⠕* k]j5wU'HKC1Gr}ث/$ +*Os6};,c.5l_V"f}1<;p'Ya}[9ٮ_cCr Gv#ogsm;sU{ =҃8AdGsۘ`=8XG=#7Re1ORn(A,b3^JV]=_|+ +XN5T^^ l莬n wEݰG&N- +d6]6x,bt>:@`Y+YF{5&?K\|7W1*S\1_U$OW_HN2l^jlw&*={F:gu9?lRͰ>/ +䳣c%|{i*L [WWlF·ܗب` j쏟a=;3va&ĝo0u++6G|ֵR;ָڛ'hrSd'gnޚ^&̥:GC r ,^G6@OlN/6v'ίOZPCXe8 zhJtiT6PX6v9+oO}#3cGzwi3sP*y?(hŕ%U0>?pS^2{( +?pO5S3jߔBOG*kԢZB( ;>(5Ҋ\z1Q~YK1*zш,L-EyV*ߣ碊WZֵ_-O5]+Twƨ +/pGp=螫*QBޞZ%&?O3Zs˖QXnA{7'dݗJW-Jk)87;˝+Ne֪VZyU ߓ6zxcZ~S@ٔ?/~ -n_,[Z.Ae߮%/ħ(mhJGt C(pAhK4`/ +*JԒHE +72%5AN'=`zz=zE֏q(5b",I +A'2Ħ+]h"Bw]ˤ2Tc)JDRvB'@ԩ*@ laR,kEhp^D|ȑ6ɯ/krO'q#]^}BeJvUw|#]{aHֹ/Jj[y;6n=dUI:6u鿻{Z7haP5˖.|=~ո߯1v9(:?1ryxTrTVu^ԶJIqþv (*5C]Ҩ@(A 7?Y+ lP #RbH +h>C^Tc"zZGlZ5.(Q"38U @Ͼ~HkVߔ@c6e-w }p:`C%Bũب}e|?+~kqk$ εJGp{Q(};z{vJ ++/qw(4Vצ:rx5#JH;YJ]j_0ʚսTzO(jB8?- ~ 3QuX5³ĕ-O1yp}|#j*L',jxQzlo1[&Rᵀ\TqPtLʘ]SQÒ*ls0w % =al c?5:v=+Zn#hzuWr~M:a2DDDXٶ]U6j\-z ʞYHgCOQ __k@`Xdl(uN?Sh?V^M64wOO)X9ǒC߾YVYw[yJԞ-o6/NS:R5V)uȭYS,܁ߴH5*V-xq @FrOwLtL ξ]wgޣFf]v5 +|I:m50UcNe2XF +ng.!{mkycPƪq궶r|ԕ=`&Rubڕj' ]Y:+L<eڽFUX5c_B&?-ɻ÷yG/wN +SjVŴ{I30rZkS|K·yяQ~ԃO|PÃJ< L\]iv"9 bCHSw5WBL~*.8܃G͗ 2?.=VE׷ffd7"{Pʿa $Uo~+B\W\NW3W2酠X޷ks;7Mj,Nܞ(vt6Nv"iUC6U5Ϸ X ;>wxޛnNAV5M-/vn:bA7+-ȺK;yv-91*lk}3u~_qlqa@aq00[0jkE_dEኰ,7l~Ω2qzLMH膢hR>Ι~FwQtM!b }F>spr2P̅d[ l׳r_]խwV+Ի-a$:YJﺪZekҬ4XkfK uz b rmvy#=C[[YnmkUo2=gP~N^5czx3*#?]̮r,j`$hDk-o#09oNZ9U7ζ>kXA)թ}Z'LQZ% -NLY~<&&zVmy98 JyԲF}cae2+2cj;ֻS|=՛1QEU.+RֆCSصy)!t9ִa 13+9fUU9(yq7!-uzmUnkb0) C #ߓVN=mŬ +JT_q!/}*|jxX.WufXQ{M)t KM/}|;$gc (PS/ߌ-v;}l>S3}A/n%ZKS*q'(2<7pFRr?ĝeI-fK=d|!+H'Y7Nt6U+Jp7krMyyjpk5m`<B׿izwQbWʬT.dmqc]WSCzdSX嵈4h荏u9*?f"3{ XI}nGf>H_u52%ۿU)8vΏd)[׷^j}'/r8B|{}FUV[&sHX܅:fe`dܬF"[*p$$^&n?QwRYt{9oaGJj̶̺Wv݂˿cޑ]+U g8.ﯔeDfS%7Ṗ\5AK'v@?)Vu%ҭN304I5g c hm?)%ykKDjVSQ#n;5b*ʕ BzfaSP +}{I=''^ԬJFbSRlj`t^1єşvXf#Y!)j5+)+ 6Exf=ͷC` ukfj]u[uuَɿ-Íd/$]IzTW}K]kifp+(8Dg6@{9Lӫ^דm@4 `[:z-qR3O;LܾoYǢƭ[Eߎ=mְ̤0KS 4þ?q0w5,ft1,DzﳥYU2a 🜗̿1:Wj +ѯl77%w ]f?R'+#;\7`$u65?8v)#{cr%Oh-N`&3XETOD>`}}5ys[g֌޺އaOa/TK)$PHpޞFWP8'zR'g_UxM̼╡#ƻ+BFP޵&B:~%Ύ Y `sZ3[5%ko&ة[{za^NqLZs#&u+_&'v foYZqֽa`={J Yr[R@ 8blbGui\.V{^7#Uc[Vb.zٖت6R#&!A:$}?/dul<~jWJԪ{0>~~4(, H[kW'ԱqiɩS#?j[-~m 5[^؋Q}&$ +RQqbKWmYߕ,lwf:1:K>:.%-lYx?MnezIQ-}؁?WqB{oy]3=WQ]>ܬfPp$2 #`mvGQJɀs:K X>Nޥ{{>TH*U'hJ$:> zz=EZ~ +6=~"{}eYogL׺GGBƻkǥzp.>#|)ײTV˓1pZo&N .NhԴMݬ{~fYLS>ǞPp$F`|{};LiӆMϷUnv[dU]쾽Ժג]vI +~f Ln6SyyiҶc}zIww\̧:OW\r,(IV5}ti1QO+ܖn:"Um]5z]=bxٚc! 3u77g#Ϣ+|*_2f]BԢh(@IȺ.=;8!j*pO5݀ ` rzNS(֕ V\ +t6H{zO Ke5I6)^M#`cuUT,4+-oǎ=Hܞzb |Z[b7켉e-ij1:y՞̬L݈'ͳMVM$!(]t=~^Jޚ VQ`R?89&Ɓg +-ˮ&/gVr%K]VV}\e*'ZUrGrO#3;.ce@U]-a%Oį^hM%_F}+>m-9XIN{}-eK3ZXr]l.nթz3$ImHl VZcI卝{5kT="$3[z1EwRSQ0[$m͝{oR?X? u\n~*wcR1T;6H6xؖ,Y'$WIumJqn$wLνVW59#&i#dV@:OC1MAE:JG&⾀oY陯mUEr#? zMMkĔ[JsRqrd~;?r\uScdy7#߉=zN5)z +,K߄zMy4&Ss2“cltZIϼVU3TcV;RiFԓNѲKiX56>H0OL]OĨэ` cu$_yMkb6u׏Vu~Z)TzHPA;E6cu'8/^[cYf9PfgKR ̪ɇ…A{ZF6&[k`TCU?Dc5+C0l3+lC6aQv=tw OHdw"kn?  cMG=YQ7tz_Q|[M9fu֪nIYӉ>R;uΝB772_vyX#3t=×iF"x`{ؑ/.kӀ_bz˴Rʬ;j6#2@ԏmI +zoWGxNJA; +gc{;3Aǯ[.ϥltͲ[`^o}Y/֨Yf%j؎ Tz>_-\>zTTs#eIG,oYі9V2*`2G4Aٓrpfj) wȯ+6*7:mrC[R=3+IU#qu۶^ZcroZ-9v]E9=5Vv8]俇. +ZPPRUAN" ;k W{һ:wZ6\ͼC\L}5F/@Ճʟc=iJ~^ޤ[uב]uʱy#}2!`{ܬf<ε'׷mzLZ7Zzvl3T较.dt:2sjf̨(q.Ow˳UnN| qפ0z,l[,{-=J76s;VKX5DosLseU{X3*QP7s3y*gg:|~A7ՑcZ겖av$ lY&[6؀`w?"8¶[_r[]z v pm0$w̜N^+3\̼yZ_R~%yhAZKJy / |oZYYWalcWP5ƴvE{N_X4fYM=o1S vb/'%_5 BYBWznCf.ik<\Oq?@Ųk{C5cyK `Њ<;J}ـ$$v[=6eesƹƊ$zy(|6yى#+ivx(U<0#p0u뱭zN3`)p$2zKL,.\T5ȑNĕ}2=ԇ5bT:+@ǡz%&c ~? ۼq2,Cg;A?˒ ax.69A-Bw>[z +"9wc]J0ᱦ^C^FEuy]T _jF ; ;hLҪ#˱h27q/|TO}SK1bX$G2tI;?8x5e;Ꮅ1#z[8Z%4 =އ66[槙Aĝhoi%#r:7YMq9F`J>RZߚ%][w: ivk ]45fF7MΨ*l̠ FаqZU#8%D|ЩnEJB-kA§*(ހ䟙''pzv?MW\z0_BMf%ŶplO1XȧG~?x6M !K^aB:]eܹZXw$zb w+5gq863~z6;\^mY~g{aى˺-e^@cWC@'gѱ(Plz=wyje6r蘹W>&L@pܷ@Ǻ, ef]vљ&-kUjQB@t^}9/KrV:?=)gz:g  #,ݫ:SC[[YK@S%PC~fbׅZRUϩ;>uLnI) !u.YE>_;| + $lSixwᄐd6Z=YUy=GpejCeՙN`lTk`C2eb""ag>ʙf@!Tǫ6 +@Wڟ憾]9a.IR^vLlGMAfCRuȂ@@:OirZe?Pʤf/Uz\]?!ʼn2b%b"adu,[EZXugb'Zt >OPoã /p{D1:>-Qm^Ejw6@16d-c:bm øRJ""""% X.;&ZlGzo^ DDƿ3jTʫn2"~z}B +uN?G r8jx빹wda*sci2`#}jYu>n{c-ՊK:;vNfET`=J~V206TiNǹK%[]M 4H::\&#&1o*]UmǸԽլ|Ӆ}A,0~k\vӼ]vjcƪ樞dZY_/ZwN`CJYu>ZtwȪ8V :@* ocYòE+Z9^IǢ֤ jozYnҸCb* ߯q+5pz-$-ꦮVVumX]J qeN+ kC_'Ėи9Q}ݩVκ ~dŭ.J5# lUkC{J +2,k^1cL\m oj}u-oI.,U rF=w$ VU +zX\mS JkW=; +їz^`ǵj껉-]TI!򲪯cR]5߱Bv=+uj#WZT'_9:`tWSXܵ.*TkԵ"%9V+hlAur$Vǽ~wXSw` +eq6Wee:̞u By볟ak[]Yk)+\͌Pٺ+: >U7ze]NM:l*CGg}O-udߝj-@ށodQ]Jryvym=F÷oOIgyc( 5Vűn T8; L^nx(rrq7ʕb?[7͟zU_1uw!} 0SWSՕZn|Gv,S۟ ky~~٦\vk|q:ik+*zZI!o}Vz= +Y]OVoܙZ4O6)Zn;%C5-t+ϳmue<ݸxY/ut8z̀0PH:mhu:uu<İ 8COZ+NFCUM`*B6Q8oS'klʳ*Kpb3,}Vkwa'CC}vw^y/fxG+aӗ5)P;# 11:UX_U~kW[0N\yhlקi|Sfcky̅aH s2hjIP-L\t5{@9#UO|G#`YiAs6,S"cR?CSea&M瓵D +zZ=9쬠cVB԰'w$/`,<C޵*ilsղ3abY;S]~ڙ(8Ș+Xz#dǰ;`oRw[Χ}N88>.wL +pT9 WzHz=s2uZ%CgFꯞ4܁-Ǵ#by ue$NA2\z}UtՖyXPte5zPX<vodJ69boLwŹx^:# sV.`ǏsnjnYUq(@)rhʩdT Q)g\ʻ!0R\fk`iUֱ*˧l@FA*ui_r1qklxIňم֗/*kĵ9T]b׵#Iƽܵ=o)q4׏m,XQ ˑQDW3U\*5Af رBG2{k3)=hoy5qrsplFN5S۾*sHͧc̵WQ{q,Iר' ^2*^%jƺyMSm}yiV?M/g1~`m{խif~EdڪF=>+ tu*ŷٔ R>DF5 L֥{Sn$@?fuNl>sirt(S`gSk*k̃gWzzW]0r +U)<첡%TGk11.bxVk䤑Uމ#MݑYzrj+ +k7N]teacg qV/"5+i}@}HyUt߳9M`UX[-GnT[ ~,L>DNMXTԼ,EeH^6&V3TBkjUﴧ3(jZ\- QV#lGr=&]}FpڔYX) =fr-֢yA۽bw".xr׊ry+ow!ի˾ޗ}Xseu5|@.6=uGrNpuyOA_.ĶCd Y;~T^zRWz/ajG2:?>46FNONY9^cTiMn#ggyj2^\Ɵy&Hcg=-hk`fabc55V|"mmhFn&fGF\[<%B-mn㪕ˑއxm,ڙ g@޸/m^(/&ť3+*Xm=.Pz9;:پ<SSVwPw2mВ+Z`H$Gǻ~7&)jm.-8v6F06n?H8K_}h(Ime۲2K&NWPwWaJǰu]'6 LF%/32oLR7xK|km5KB+/"Hwvu2YY.e;qYMhr įWҲ2#*rkGu6wt`ӿlJREC꟒>")YMDD(aʾ@'zRYGdX%4Q6I$ܓ/FQDjV"SQIYMJ2zjq_ΰc۟Vsjz>E91NC)6&eUhIm6tI׹Fe5+)XJD[祖Sg`;N6;WUc]Urd/`;yԬJ]%Ncc^MFRFQ6=F]!g!ݟbKdJĦQj5+)7#r&έmb +kՑI: 6$ħ d'Rȏ^(YK3={>)4Rhmzzw&`X};Qe|޶;>=K#b<<ɾPSS`H޾r_rr^RaQe%uܣfPd5e{Jp-z&U~4 )r#{/]s5Rղ)RVGMFƵLJn7w` l\,xNXa|[@axgd/W2&UH>\n7}V1ٰ[x?- lw&c&a!ߕqOoS#r}s[شS3' TFVvmvNeє0@Bxz0 +$;!=^ҝ>ܫϵVEren70znVQsJl*%I#-s-tcer%6Zމ[z]]#`/wX[81k=38cySmwdmTrRWG6; u+s~ϐX6 =-vJhfĩmkHoևypNs aK$g?-MwamDn9IYBzolӬZM!8R;Y.RzQŏ=ϑ? +Xewww7T詗([.-ʵ:#:b;u߼u^CzֿeeUu,̧gD_^VoP-ںC + rgiwr-c5Cs![mH$z˝o'E!2jͥ=qd Oܗz+:N`%lmZ:}\jx +xd"]Ud'A$M=BvhWRv˭]$(n%r&cz$^mJޟg$z!>;Xx8xbpvWg>W3oՓԞd*wS;3#37k^bk(P:=<3+#A]W +YX^{rnjNcWqԱi_e0Q~`,!<= id5>k.F֥֛;%0ndx5蘙-cՐ_nde{9u'>$67G@ +l#ZUwމ HluJlZ6-cz=3~{lkg{2Ntΰ-MMXe1SgOY+r.\qBn,g(B +g|{yu|cy{F*iwıYALΊ '{w uΜcVWC*H^[0:]/ճ%X(`[}=7Z9y3&luDZYS̝W3YoPMnlR Nq/x}-YC"`T3 s+˵lSY'{菗DzԚ#d+Sj+T n[kdڗOMyst(yP\YmjQ~|e =bx/-e=3+[AǬVA'k=͛Йwji}^3y#q]auyWZ;'{]zF=uL|ᓊmO孥+SǙgl==$Eιʔ6rߍ-m@Xhr՘Y@[U&abٰKr'lo_.9e`.zgHλ|NNkD_:no^$SA:cv>n5eљ[Y{u=ӇWJ/ +PI Ŏ#ebaB:B),޻WNPԃ%:y6YB1ب]ބhyz,:Qz9!eb5ZՂ2OiqLFqg+buA&7>阖/v* {Lc%VAbBSw,9)E.cJv#]VT}(!/ t+A_C}eލuj +b1]t~Dw}&D KiUۈ;N~@P,{0s{A*ǿ tk}ymU,qo][:h+P>S=Y$|wDI/zwH}W6*Ѥ$OCO"ۼ$=l8yE#]}䯈iiq6bݮP+z=_o[ jȰ5V]Mؚ= U^1bG +[۶kHւw|Cӛt)s/:PBX{m|YwF+(mw漢WI^:;jq~Mg2\w~ib5~"DfubZbu +U~fb]+tnkT_N'C#D2}n>r֖ref rt3:5 i$"܁[+}u'^:WH-;;E%/i2:GP{q$&U k< qRLI-Icunұ#V=tF2/#nU-JzҨض̹ODJN8ij"Bp;]0^G^܉ecJ6z%fX^]ݝ}1q%Qͽ\a`n\7 kMYLjg8TUϩ=zIc-[`#+Ô+m՞CGu]+^eXXkXl|5C56SeJW;pzi=5ec , 6q(. s +״%} tk!,x3o@쓳_!$YCl +K[W"V;!>A)Oiu/!$=Bxg1if`h}6 髍c=07㰻}u)co'V-VH !GHhʲ.5^CU_ǵ{xM|tVw弟 cd`7N eu1bȒܙȝ+Ld&wWR,h.[ВQT2|I> Q{ܬ{Y#5`k{XK}ݙڕb͇.<“M4?H"1_y ǘ_CkKGU_͖sLT|$ԋ= 7YRZTB1aFԕ'߉=e*t˅гNr˯בrZBI@ŴU=u=7ql{K+|am[2DhkZ 6EϐJ24&7.T|^ziÍ T8'&'KrswHaX (a~^12[l/v +n;ӹoxn`jʧ!*R1?{:}=/Dw%nl4xSWy}Fs@hۼW,c_hSVjT}%_ W~My/V]HbJ+ـo6B]cs[gFW]J Xn; t'du%]yZ +ȃ߹:fapnȺ\ug۳ {3$OW]l2d]quZ{//PL &VV۶w +>ۓjd#d:: +|Bc㎞zo,~5+ˇn=̻wKɵ-J^gŗ{;LeRXrfoV:&>gF\Mv=7)'J|YX2c[б|Ky: [N` M v?Sm9mƷ%SA^(Gmeʺ tٜ\!ט !A^>g]:-vg&ybVk0 ĐJ׹Ot EQPħ;{Y/!TRAH`Aav_}[m[aQB^ +Ηܴũ [`X : 0& +4&0#3'RbpU]2[/yx+eJq-ߗާme΃^mYWM։ hIm}W[CXjeC+ hfv65xuQ Ob" )+1z?NP6JX(.A'ۼb"""""X|+hkPXjr enCeTl>f/_ѕS`8'Q̤U˟!Ï~긘E֕:;btw2)2l+U D}92/–=TJg 6P `DwJLý;z]޿~TWs]4 mZVNxR+csb'z>b}+zI`uf&E^MRۮAУz5T+p 3^w֤;Ax#,ssNW_V蘽coafz"O^ӉIZ,T`/vkr70e1h;/ؓ΋ GCȻ +ϳ׋O+p׿,$:FM_n3!5;t[4`Ahu)oNa$q.d,Z]m`6@s6}bgt4yKJ>T:}U옩B9Fȧ0: XjeGCRu*fc+Q۹ezŕ] i",#6W` 6@}v3TE8酐c=am)`^;9@=?X*x;ukh_e@>|,^Uj) Bkf[D:P\6,iS +E?LOZʬq\Ml s +Ӧ?z'@mbt=;1sҬu sB_o:تC\Il}e:u +,ĵKB@}w j8a Wlv>}3:W^"'+ĤSg@ 뾦I4VN3ړ}Fi3w+UE6X,…WGi+ ĭ\*P|@ʼn5X_z;*z}|$;>Lo Ya4Il{mV!nc=v@iI^Nn#ՎKֿН{D$KjL@gڎLW]՟FV+T cTx װwx˳ +>ڔ5]|? >.F.MCK-rQbtObϟOT֡tFx-S|dob2ޣ,u/N{*YB>[kr鯌$VVVl~FOG<+*joY62Գ"gYe_1`m cOUTdp{.ex?f[RlRɽ?~beu?Uxd؅jB@t]Q&S +vktXTut%Xhk.debWk&.z#2CÞ 4=b WSlv#d- [2s)Fc(͹WbcZ͜>={iRҌ.4#/D#ŵۑҲ覶EQԨ$ܙɺb2 +*lw&V +7@ϲԵʵ/KU~'7L5/gs5ҠPjVNKa ļűW"~-m{ +Ǹ]Y{}v= vZMoZj]RUeˊ:/ ߴ}EĮa]!dvc{֏cCG-zYCRP0bW[W{ihޗN=meժvsr7UGO+wzmPXCD0@ߦiKz *Z>z>oUU5NSTRbRDrW=(\*m&ֶVLuɻhqӼ׺>UBʟ$8_YLr:U[w7u+鷺m ")ps6+/kDDžzzSjyB.T@`hObt@>b@ށOiߌkɿ\s(\F+԰Ͷ1r1Un04 i|c]Skz2H6#о/ߐXYWմRgFP@ޏsDNG:K,sUв*Y=?y-\4}~stlZ̚Ӏ_5qfԃw7DP;ޓO}_RA g~$b{g6Q\%ADzgΧ[:]|2c'G`ܷtExz0$]2%1-l1gu}Zbq2(f; +&c2|V>-Nmf+k8%J-Գ-#qZ֑NE +pdz>oXyX8"vնy^ihGIoÅ8h?=9nW6}beX P` < k׶P"$;=gu~cr&Av>U|Xiȯq׺nN!zu+]r6ZxWY0<LrKp+x Q HYS>-/mh(G K1 ÷aŒ1krJ +Ų[A/x+_bZڭUI<^*`эuJrl|7Lw]Վ@}bj5Ap46dS[/>:|pۗk=__Ӳ2q6rk29̟OI#ѓ.wig|>o˼eY?%H482&XSR-[jy|UA/};>ѝNU(cFE~{(6;Ӕ<5q+X6A}̏Q:~Xw3}qPQPA~W~LSKU~K֠y }~ +zSȡXT({-fnղĺMmYe^1>Wx6Ŷ.ӗ mivSdD\ejlUi{qiZ*{Xfc9 KG]k ?&_@T"y-ljMtjrص>"{;nZB" )֣QԬbSPDfOA@j5FQ֥e5MFe="5@FRf%yE,FV0FE%w8q$|ۙJĦ5j5j5JĤhFQYMF7Q|~ml=_]ziw1*JkTEU @Hu|MB[sX` ]׻}$=MUjP ?](%JJF4#RFQK8xR^N$~/j5X_cQ_1_.~Q52+bT:ޏrpL k:Ŋkc-tܜsGUP~[LmZcI'3.@ʦ@ :+}tczw(:ގm uK +d^^`Xɱ˿}Ll,1av}7+eQ[ڞ[)dn,Guw+13Ʋ|'饘=w]E"+Kߍu@ݶ{$1n7'N$9,zo2Ǭ׳~/S R +݈>M ϣ/v'3"%%e7=W\X8[/K_aQ+ma{6,<A<{ks?qerѯj-j{7( 7#<;meʪuG%Ov7߾qn7'ĽR*6?/ɱv׸,y-"|M2:> ɡQ}*~M +θޠ9bY9@H2ýg7]qb +郝-kG\^rԆ39䞤?>^ʫo-JnwaNޭv{k7zwK?tTk*oD/@'eu.oONɴͳbKz6!ɩUPebFúb=$nVabdۑ]yu aFۼܬcU[2!vImd_B23qރKbZήO$ݏ&{eduXIS,G2ހ=+@Cɑ*]v=tA1:9(g;g,8GpwxnmlJk*Іt@R~Ñm}G 64{HtwGVF(K"'L+mm}"]jLr]⬦I yHe.we·-cduj~kgbÿqI8ߋϝeu`Zu>"x}vО%U7mu"cumI\(dbbARNB~|I~xVo2r'ֽK+ V)62?zOmLQ_T{.sA+@5hvhoeXV^ sZ]@,5b ]˥cgUT^~̶ȫ]̌}WmֽN@Zaۋwʦr+5؏3'Ӻ{{|OD_Gr^.ڪEʼޑ؞i5ґvN=ܟ_ +&AYYYVx_)2,K6ŝIo˸3?-u[amvv8Z|&nwLJZՐq>u܏_rR UEog{#=[]6?NOz°oe>[\)z*QB}Dkd6-'((O0/u篋_M?u+©l#*Q aJәEbW\7)p~eKMaَAGs[wU0Iq70_'mr2:[rh$47 l^96dC7]M9U.YAvwRB7v}'W^г eM]f6~9Q(HmGg^[+.B1Gfl +Go]4tȢ{@Ĺc}{+@ Mk=R" Rn_qq1zVMvebNñ\cc݆n;*w">Ink}=9˰-ߎϲ~>Sxs +3iK2}I$1״x;8yx_nW5ct#!vR*:1WFكCLs/c\&@~%t7//^whSŇЎz԰#ϦT6 $z{K +˳?R'J,(w']RRM^zP<7ß5 A ={Zwme@ŋ'԰ٞz7T^ +xuffgc,9NjWcIK:e]1-5r! @{f߉{JAVf}붇L z2u+(9wf KŁS3/铍V8:0IJw/dt&ͣ5@``ůoiOOM>.CP;",)K{'E+ZփJ1J+VղSG_B?FRtv)ҥVUO-Igܝk|+Ux-K_8,v[w_kWz^ɐS +,G'/Pųkf+qf[+lLnVR_Act{ke7eYrׯ-X*聠Td}~Y_kJkl61* +4ۼʣהT@r:sUbcl }r ߧm?Ǭܴ]]wYc`V{bQפXIJ\d*V#@vْ!26yVʹqE~̺(w%כFEtC׽l{%j 4J[R܌6H 4DJ` yx֥Ge$w/nQ{ `N JM0Y!nU:>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 13/Tabs/S/Type/Page>> endobj 38 0 obj <>stream +HWۊ$7|Zʔ)h ++YlB ;gERwkLV.q9qtp/>~xywLZx\I_?M6=:#".6[ +̆Őۺ(SS4"᡼!*u 瀗6|NDHW~X_]kZ?H7$>YIQe7ƹm1 +z24-#bS3{FӡRg== y +-dhiaq3"("v5 h@붔*V!NM[团c(Ah#b9 h+)XF8ر(T\d'b1x Х6& MC B1R.GTV]UUVu8|pV(̸,=)jr)U5M B֓$j+\# +.ˈH +7 \*> c,rQ6G81d[X"Ѿr~,xr JdU(T9ߝ}!ٓ[V8-fzMJTBXv[lQB* C5IsW0/t|󺔼__Cu3f ֓[՞u5WzyovIkWj|ʈ%;^S.tTYsgm>K&և}\qZS z"he WO9sD֚V X siq\{[콢`IT?|z>$2b|:ԑ'<đd.p*ޥqBT@o [StK:ru<0@Խ3mnm\D-Tӽ p]b*t]`u*S$t*} 1APv,gW[n;uLϝb6sJ*`ڴԈ轘ڙd2 cƁʢz^Qh\_Ȕ`*͡*N"JC،Um@dKbbiPr0"G"ڙ1iQr[CЎAǣR|{1&Z)Fic.j6(Bhx~~ z>)w6Q)}k@rEOZo&{:'d IEUTp9K\6٣8_$m W"&E x@$Cmr4ӯ* +f5jxq+*cuY6%\qW:a5v1]$FYY}̘2Q8JHzK +Ll}gEvQ% 1|*?c-i3歴d7(p{&>58t9#`&Mx>8(> +Yz'B\SD>@+%w +)EJ7iC'KИ~bD}0nW M*L_s0]\^ol|~w +~y}ܮQU];LۻJjܛj;M~eCV=O+i +endstream endobj 39 0 obj <>stream +JFIFaKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Ka +  %I!1AQ"aq#2BR$3STbr%4CDcdt +&'()*56789:EFGHIJUVWXYZefghijsuvwxyz?ZR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRZR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRZR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRZRrZ#,H$wpp|*{ΕapvN$gY]XM>2)DR6`${ttױiIq3mHѝQZFV;:BcIֱ$ vv2G3j"dl)ʷ;WG00a2U0CpXG"9S +>K]DUPX}5yoYT$>²giEMsU4`d䁁Oݺ[Ɔ;Y%WìbFGFxXoG),h{p#jZY60V7#?sZk1_ ;bfʁOƷvz0@nC,2݈P$gfP cȰt@@ +2q 8Uɮ@ȱ@0QU($d䟕VFA B}B V#mrupܸP8'?>[[iEڈTz05_ӮeM(. |;)ľh㣰9x4HUHB01YnyR/#P9,@|IC6VVV%;G)U\OqY.1O&>Yۜkծ@Q%SÓ$T<[xA{͸ϵ^m1= l.̃^7ѷR Xљ",I2P<έOecm ҫ(c86l1

    =)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRZR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRZR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRZR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRZR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRZR)JR)JR)JR)JR*6IԞEr`$ SWJTnǝM+PLm6 zƯ0^Cx\+0 yJR*X ZH@f)V'[hGR?uQc{w6P# 8(ӭ'yee$!W,.%HVRBBH P3VΔc_A}"dmVE)JRqm,K31€9$S:+29Aҫ)Z˿XaBc8 w V)VeW\# 8"'e/`Nȥ 哊,|ϴgI=?p7$eNy#ҬVwrbYx;{cU^궺pSq M݁'dܢV Arw@'V?ZJrSf?1oeC $bBϸ61x~MƳik S P#̧~6r#fkQIbޥYHq88"JR5gY_A-RL#0h`wFz̊TD` yCUҔ)JՋo5̖[:an$`5ڛUhb|,U=;㊿sum,Ψ2ԓW{TV%o{QcODYM] l̥w*wrc8f"Hhԓ: RR}~`* B)jOIm.1|Ƿ Zn5UcK=xbۑ @j|E{ܬH!ʫ3 0o򭖩Ϣf4NE#:{yw־ߋXS| $]v=owѷ'xʫb7u\PF3Oܾ`Azu KˈR8q[]CT,U2L>EHʆ%6rX!atFA=}mOjHbbWr=Gq{՝\_dU^K(c,z/u DJ!(CTPUۃ$sgީomR%Vܣw1i5/o-{m" q"$P8uG:X4`e뫆$fҸ~.SFҼyF, a `7ϦvTn +'!s3jFN!ŝwm*X^丼7ki"1LW$<xsm-)o&-}Tp dW]$ crd N0Ox1yuTWtRh,O*A 9OjPYlR[*c bW{[bN8`C3Lu5ͬEc)|# ˊ'VKw-tósw^':a#u+wk48wz/R1+Hn*!W9EOd ;9 Q>d7KPM58ucmmn!kA#11ۇ `:k.HlشPU<*Y6L1(X +}sYND +H@8+IxT ǵs(-ўT.Mc5{;Ǵf$#8'J<#Vh,l-,#0A3hm; }%sl}򥂜;qDVpi~zLaeqQqUssiwbn&g'oq>v-Bh$"9H ݰyXWHm{2~b+[ސ#y; os/>@l^I ojLCm y߹j=~{y-Bq"rx݆Q_<Ǒ!Yep +ۈ>Cɫ;S-ef0I=SQYny\QPrrxotc,Yν0qCRJ|c cBkơqs~eXv Uc@)\c⨷Q-r`;` '>z^7:-$!0 (LLCH=8d֑Fbeb6e1;6M:10Ha+(<8>+zvR^$BQ˻aH23ڱnljbT4nX 2;ư{)Ŵht|(IO>>,=:K#!tNPGo*m:]kraf_a72yټnR(ZR)JR)JR)JR)JR+M{*#$Q@e_Ibak^]&Ҵv]A4t`E -ˎ;ɣW)m'Gtx$ay~p]Hֹ 49/9߉#sSܕa2Y֗ڕ 8GRT_`qg#=ift$T$=D0TG#5MƣquG 1pJa l,ZR$ҽe nC-@Ʒ7c܎rd8#9<1o4v1rCO2#@@>Jߚ#Pٸ]4k"]dǻ`rqgxYtn!Bo zݻ + ڕ:Z2, ee ݱ0}kc\n`m^ES.@͆~'snYGq]!wwY8d 8` +~YTZmMmKm$r@e㿕^l/t8`26rpI8eFHnG=O +ǂbR{'"sϗ5~ᵋɤma_rBN1ΨRFM8dh):&18_Uc2h&7 H+{6m.(o!v`9#t9Xh.hVá,W c+vǝf[8li")^;jtn/ݖ;F܇$*Koޙ՘(xJsɸ2uU'OYm`IFİEY0'<|aw{OmohedĽ8*\.N;.q۞ zl7VH{p,ymx{֘iw n:Q(РnW<_ÊYSUpHw.v+9oN"+KSfeYׄW@E$w~n.G7Qmp[vP+G$V]s:ݝޡEn,畝FǴlp{~]fmۥd1!wd3M&u[m"HTUVQ}z-Al~bZ@/ϟlnPkՅGX Ud` +y9线2n*9 wk[] @5ܻ=bKaܞr#[nٶ1#swqztˍ*`3˳v#hX +a^5S:f_yA,H:ͺ>b&!zja q`Le6?+z5LJ-5yzؕsX E4a&X\;(du;&F8`3I`ʉ;xsqa~ iS (rw]%k1R)P>>u{BR[kv +b8PH\3}8esmR9>5.u GӃN`RT/P+MҚI,"yc",JF3?:og>y{,P<]ʲY@&ݮv\AF*">-DKj滖TTte"@Fǽ5n[ӬmtHLw07'j8k(v1ֆ{hԖ"I;T_H,0X0T1H'8eigi-!.w;q&t)JPZR)JR)JR)JR)JR)QJTSkt+kpmlo}1ǎ+`*j+GQ8gPwsgUVZTvNeH#o}<`|d]72R2 3}+KG[kp8 eҘ)TRM)QTbMF)SJR1SJTbS,bTd=pH8#"aED*Ub*1SJR1Jb)QR5pj.hP̠gi }$ 2,~f1LTҔ)JZR)JR)JR)JR)JR*cDj+` r}9ˁ T\23Q%Y3AwQE`c2~Bx *7)G}.Gzvn;9܌8Q w*'WSثi.ՙ~҆*r@qHI|lH#f%u%9x7g$)=ʏܬI}c{8Cu ~un#V5 %6gd(zm'{bqڠҭᔻ41v;SrOʮRg6Oasv=X[vU͝-٪TCR2 =r+ IՖgT0CݳƲ(FΡg&TK;̐kM^K}4DhIU_rH`p~ =ev31g5jGIIgd2f$v+H.9gu_p%6ߚEq1R2ʐg`I D(\ưƣ4ԖJ:'Fl>nEu FA 1ebC]QHGV#8* K 9;{@[ԵhtQ2J %&Ee#ƨWpvlCpi56D"8PO5cV#m] Z&+ ˔Gdݥ&KшAnT.DwK]$}<+,ù>{x ctM*b8hf@K #?DW F  !GqǘZBd@d!`5ڼBYdnX @'𫒽ɺ!竻q;5z{mՑ=0\j*THϨ)JRZR)JR)JR)JR)JR+sw6؋.G*óB+VKGx䌰L +8:E jR^FtcGDJy$ʴڜm['`rCS?@>];S8tvinWu8brwck5aKz(FJYTmV+*$1zhz턲o4i+P#%zxv,VRଅ.zbG.N@4.EθjEcȊ/!G;FqT6p# pD{ĝN{vW\h70pl ٜf;_6Pֶa@ x+uEkgq$arΧ $hGbF2#FP=#&㶾ItؕioPY5WR_5 ++_#N>5Li&}Cbb2H<5׭HDW"m4eld p}|;X'mt O}S&d}N +< + ȿnm=7C$j b#ү n=[FU!PN3 MJ _gFY`uN#!W cƋ$1a.T1'?ZxRFe=1ȑCso%HxR}@ybĖ7i +6%hϽc'5[6_A%|0l|mcP=0 X>5+xǬaQp;Vu,5 0[Ác|gY"ѠҴHƽKymY_=Nl֮x o#]F6~rTiMfnS8Blcv=?\Eİ]U2K¶6My94s]D p ]Ӵ{sVtY60eSvf,@[ŒB>>IC. sq]Zlj'䉒6o`)UL]Ɵmĉ H 0 5]EdvvFm~{՝gOGKUq~$ )Ǘ+7ZKY.`CY*@STX,p+7՗#r-j΁@umi& (P$3`vAcFKG"VE@+uXJiT1: +ObUѷ/Gm4Z$^5b*\YZxklb FMfŤ,V/~8Qi soymLNH#ցKM5i!Ӗȫl\F aUOc +JVؾYSq?itv;;seXŨa%w5%H$1VEX`(B@ +AP 9،A;wHāҒއ%##⩋|6ı@cB=-OVZil"ic).@vmŁ#s[]* i:(|8_:EI"R s2nUqڨ |!FevOX*1UF+VF+VܱDNуʮ_h4FțAϝlm ;[ie;beO#=~fB7npni`$!o''dqQm[ZlVE.쉟V$A8qoO JA+DtuGS>`x^w(Fba29-~;{e&kՃۃprI$<ɪΙn16꿈vqgF#rR +0Ag{Sjm]7dYŻ9EA6^I,+'%Ac>xES(ތo 05\Mb^лv;c}jܚ g͜0N1VݜC}X؏{I{rxvx^1Bwd'5t_&`C~]EyB1r@3ʞtU'}M7$8tqe9zsNl < +JR)V与&Uv +\A 8{ ++ uEsmpЏ#Ybvbȱ8P[X5u#6u ڤ[xBO:VUCʜ){E3ۓW@20˼Jn8V'IZCX 5~)JRZR)JR)JR)JR)JR* q>#i!=ysKg?W)'<,$"(]OedA>ʀYHºKMio7ILjt]vM?JӤܬ+Xp)'gmDEy 6čX ,8vՕ]?_jGV"NC.J߃'tmJ8ŐX+Q/ ǞGYWCy%h^Sh/}I,@XV6:Iseeێ x7u4B(38L}H'z`f;X:X3\!L+= ou6fk9l#|x~$}[O m}^&Hu-!k.l-57B16R7U8l1U9\$ZRjJBnHd[T>X}WZr<24dBJ8H=ck2v[G:2m‚ȥH ҳ.1XTkMgYBγΰV>v8-uyD-*}P0CB#qil$1k"#nH°CI5ŀYcn eGHzr1]$`́9. +5AU,R(q$k-Zx[K%7h9h+.⠫##h)mWoU7"A=3cʮhV%;hc+H]!vlq[{{moaD7NG!rqFʮ2Ae,؏o h?Tm\Um0#=F{c5ܖ$V" gY i-%eb&V\ +? +Ǘņo$am1FJLxOk? +͇Xtm~1OdzVs=Ŕ6F,ҁWNB@ֱ}Y5=TP$9cnYOqAdSml :O,iv0y¨p{VnQ/!h][$$=7F8F;ƣ9 !-o2,6X8j!X`0r8 Ht\OsoojErS7)9ƭNPHY2OBCyE_m{{$86V8m(5cӒ)d+1L Z>\gf±ؤj;W*K ;w5>זWbxUX T?،V@k=7N/o-(E}QvtvW*O͛vmd0x :\jK,qv2x +ibdȥÕRGW.MUgJm*1yNܩWr]#Bg&2C>Yuo`ۇyZa 0瑹Gqԝ^i١ yLeb7Hq}1Da⣓4$Rzy0A^՟ږ5WkH _yr x뻘졒y[jFO$)BIw6"Jη:jV -v̑KfO**[kHDV2YB~2'S%IEgx_gR놵n-9P̙1nRɎď:̊X3jOeV tXW.G5D/.0} m(⋉=.IbÍVu~Nmm5g{cG!q"`#մ!l{Md)"w oS'qX%_%H.D$a1VϗNsdklCim,%%hd+䟙j nai\p-eT-Ϋm~<1Z(Q #T>*΋-և3Y2Fc +,9˚ƏBkxbncsu&e6p.-.<]H(2@F|<PMs2M$"0FP<ᚿ svVAYVq8Vk7Lm.H8tD m6GgEEsG,pl9Aȑ +T7XxdssPv(*#,CpU43I%E>3:bs U+ڼ?f4m,/MԒSsdl#89YXó=cpO A !w|gM[IPb yU250pY%]FH^yF9FDCklʥ$w +aP=ֆ6cSi,Kfb<='8WwR{F˷+FۊRr8UTN10VggQF$'1{Tmnb 1-ԓGa( +vdEow=AhAM9.Ht7͟w5TIq_]t_0I2;Hq +j / +Ub('\¶Z4 `78³]bme1aL1_u)H +t(X~>}NgtRɀPi6riJŠFDh \ϕuruuaЖ@ƻ=1X%:3\_3Ђ8 aWo5u-LrɁF@F \ akboZEHz"TTp9;p1W9tK IKȎ GcV5ukQ]'+yóg'{q皧K7jΑ\tLn BA\҉k7eXq/ΜmQTNKۍVTI/B' +6 x-SN[\uY`Um7.WQbGovړ=n#d.{``iMbEאJU3^pB=\NkD`mܱ̂~ҫaER-#!I#xnrc9*7O>; /L>08rcG^ u '8Uu8B*jK+r* *`|=sXWvHдy*r# gc<6uv#ya]TrU0Gb9Va#:Q!]VlrFx;[L*Z(BĒ +v³5K(5ݵ =eD iPJ.Ʋbѭ,&%9V8V92ηi{;JKivL<`,BFxz}6m5 '>6ʭ#Ps[{i=Ȓ9y#ڃ$|yM:ƟshiPO`H? 5KܲREfdux4ǎ ++ +&A  ;jG\M6)%Hw  xp5um3p\\,慜`aчaO pkae`iEfJRZR)JR)JR)JR)JR)JTb)bs,xdd +̛p]r<,4A82ISQLR1LTң*iQLR1JR1Z};koY GS, +PB.6'Ԛ☥MF(kObgty`Ͻ@ cg☦)b)Qb1LS5)S1V.l12B8p3`2ci;bn9Dxce:^ܡDϠX$ d~gcorsK9:e%y>uOVhP# HAjR=7PLc=̑ :}ZSym +vЁ,8%~U0oc w"gSpH8'V‘ٍI+ 8` ⫵Z!Oqe i}Sh9،ZLV_bH#X JKCw #s@TV67ڤi#Tm^(jwq{@#`&X+nF9ȭvpoHv ̠6{yϚjV׺DF#wup;0vk$ϝFk^v=Ua\s۰;Yu ;KArG V< qVCЪQ0 ?~fMҮ-dH9ǫYժ,Ӵ'([򷓃5}`@^*YZ-ϦN+NKu˶$Lq*:2Rg@d60c;1\b]BG6P78ֶ:~m*E2CFV";c[=*eHoln6A$qH#ֺ: k[t[UR a{ 3Hru.I'h@2y; |7R:}6#| 7s+\Ꚗds +Wj߇$oUҚ+. I k"1.] +~UktDQesTUo@#q5kÖV\^ĒK4B7)WhFWj>i5/YU/`D>Qr"ݸ`׽lo85 t#Kk +(T:'f`@TabH^8+MLE0S$vcp`[{,OcFcggd[5k4'Q1j8i6lUoi ՔJEqnK,*4gy*^#4#ʳUH#]A;$zʠU[d[pr#Vl㿅AWRlADӜqIcdSgОH6F{O>W1i(Qۤ2VI +nnWk-O *<>U:-ʂ-aFP)f/OYD>X̮08 +ζ,|AсDq,S@$f* jTTr)bqZuHuy $k٭Ж{(V9}BG8dl}yfo` -Q 9ѹ鲁ܚjkcc:)ѓgϥvBb+{Nd*[q[]YAky*~ȘH +qQkgb)%6; b^;Xh>9]E)JRZR)JR)JR)JR)JR+ V`֭q+dz>j} IL Ǚ_!g9,<=k\O$ +DI[ft؞F1y#LyC?<,wی翕fIm~E6!0C/9ف*o}$Rɿ|h]䃌ύjF;; +4u8s@uu ee9Vv"<;gwk+˗ HK0 y΁mx #9ߕ ''};2uc]D00p3T\rm"s,h#`=G| + x㊳g4&9V'"BVVi%d'r<{㌜eMaıM$jcʖI1QoaMyZFتXWM,DEb8#qϭ,tt웋Fv/#c 78Cxz D w~S'^WoN̊Ȓc,wS/e#eA h' +<[g 0#d'w4ң˽}w)98Xdbxvۭ2X&&n2k8#o YUpʂGr9 +p@hI(^devUsܞG~k.;8Q(,{r|$4c`C(fPvHf\hbJ/pT 8ʓh6LD.T#d~8wOm=ӥEfPFI sH~S XAxnN8ɪƉn/}l)v۝=V#.# %qp@>y>{aH?9 v1۽fUEFBHܤeIVrƵ-tLUνi;+ Z4u5UQ#+ua9*kf$\9Sh:*N 9$'gR)@ZR)JR)JR)JR)JR)JRg N3ڤҔ)JH29*iJR)JR2[I#UNέj-Y8>wk"+*dQ#)*rrU)"2EUJR-8TY$b;VEQ]27c8;g])JR*3k{c V*X68j)JR* PRgq=k?j~HM3Hu u YQ95~n90V *)XWŦv(V;FYA8A{ Sp#8TL9Җ1]ƲÆROU2^ ȊXlwyUCIݥC#P3 p)v +VxdG]t 9|GĥQ9HRO(ݞޏNLmYf==d~J]ZQӢx$ۘ֒}j'Qŕqل}Uȓ\~+Izt[LѢNѽl#v 8-`LB˼Mir~ù򦗭 YɊ&lx Cd*@*G VGE|d s&Oq&c]&tUfcG?!*x-جV-^k6P"P#{g[Z-‚Y0/?#Z 0ޱW <}*ŗ̫k({yLoc#Q?mvHa}ܑz_tЉ{;h +]rIm)DPl-+K7ZVݦ"D +|G||xQ[GS,s^YF:@>~ttac2t #ts$ZmFFT ɂ|^WXd(XU +ǗMЪ#w\f.ei$3;6~"yn#0v8- +P lONnm YXgʮA[ K%@Jr0;$bҵ.kk .$ ಲȬ_Q*KH#]Ak43I= }ёA*s0@beBp9#ο iPZDT,m8pA\c'6H읈_C qe[rj0qfsYS 6Ǽа;H rpp8n BIG8euܬGjGXk-܋gh2$W,B`+iBM_}Z".1Y6i&sQu/e|VLj$/ ͼד#mCAO?ܞErDG( }hѓ$<N+mCx]nۮFPۊ2mkw{w)YV)X=*9R|S{x'4TaFe ;Woޛ]iL@,KSw.}x2YU)Ϛah[Xۢao\ʪیvl=bKYE7Oc,D&x!OmBiU(Çr9/WwYUz`n<Y:\@HDoE $eO5)JRZR)JR)JR)JR)JR+G۩m\B1A {91L\PZ]JF8_G7KwF*@a#3= +$22<}3Ai~Btg X'9'#r+JIL Ol$pd Q捐r80k/*1D[Nrj5}5-i m=񼉱tv<Mt K]oVHT}՟0u^X; `89=x_RYF ,\ 7*'XKKԞ}ҹ԰rJmR2wyZrƲub{#!pbe. +'u(5EWB`J%w"T2yUŃZ,f1FMKdpI#zTx{Hjv=k4C9.p3CM4r +HK29T;5_eödiR#(ݜv7V ]ۄb70wDvGVFO⍖ kb&޶3{sY:뺝ּmw)ޅjN7gizwW$ȭAε(@#F#r;[r9oyT9AUذ*vGzζE&#`I-lFH=*[Mw,#^G'w.4i!AIi]N3>[HPkWTiEp%yArW$||][3fǦD6wupݎw.95s mu=IxGfѴ1 ypĨ`F;C] 팳ՒI$ A=۹|Iw6v=WAMR3YL7"caBx9^B=ӹaQ zcM[IPvi\9$>jznRE#^9魧K&XM0"HmvUr􋤶fk I3#!g'Wf[#Yb9V ~WixL7p*YϥhൗP9K[\2mJuopv˽t:px: r< c5Ԭcԭf!1z%VIaH#x$lr Y_qg ՝e]lŠ0G-#sx<ǭdwb]SR`<(la$`HVoDMGcrG11Pt{/I u.אI(L]!s8]u#ieM)&&EIN;`fVm:i䈵x\zl=X08]륳&J2I-|{}|]+⺴R\E4jb;Yp=AxGteku/=r"<+{@`Bm#{= Zmm5YbD-ҍ7FH1`ZZ?H߬ Tfb;+/^uefI!SetYl6$Ub&|e>ީvqUԶ;An-d+PX'>ULlog?h+8bĔ5R@-dqӑYs[=J(b2Wzo ֿOI-eNK++M0X6rZΟ@ȪXeDRn'C&T.F:iJRZR)JR)JR)JR)JR*)SQTS55*j+S.qos5ݔ?Ou%AVR8|v,uq yXնSqUPr{$O>*j1SQLT`S4F)LR)Dޤd2;Fk:\]\1F`śXN+sbu,O5j,aHS;Q@9'ԓIZLSMF)Xz wNG@Ȫd,88>Yh=x$QEzƥrx8޳5Hfft2s[Ұ[kwXT+1eHuz;9MDI&xw"#7a3JR(ZR)JR)JR)JR)JR+Cy.n $ rG<&qI+"iChF 0  U}lovg|#wgG|eY:c 9Veo%.X6F09ϕchS{ۜyuee(UchvO]]4_/rKblayVWg CmK{O<<,V,:Mcyc y*p9's*G@$c<&>&w$23m@\;FqSCI^U{#%BcZ/?Rv.dBҕ#q;"co'&rďT@Zf$J^EuTsykcAu [V`LP xZ;{kodrpȻqGs𮚹^|ߤ2JܕxxK#( jΕ{qhbiW)rȊ w>u0O\ѳ 2j) l +xI:d'q99β+ϼ5g]WTB q>X 7dgkxMđ(ln2^|ɬ5xN VN"}y4WVG [ qZKSӖ$7Rm?Of!!6o}g{q.F'[ZAyLV]%Ϸgbm'Ye}s I.}VOU׵&kHrwF@+cS# m6f;e(P`cу( 9Gk[;-eE`*\UnaַLUKTeyBLYY$p,Y`Qaچ-(b,J18V=xU k Ɏ۶5}{{qimd,Klk.F0gˢJ^yR4Z1"G*A#XxMm"uP7mV!> +qActs1Q۽o`WDQ#`9`6N+U"a0G U IstdAi+sǩ$F-ڕV`D0v$Em(ŧ)ʱC2ubPqϨܤ\AwIDAD$RT +}T $P۬Rݝ]Ii2d܃X*`$NcU38I?.*^{T{{k2:9`~'N3-+}f-l +$B31 縬;+߫s0Svl5ZdmIuh9<[6)]Cc=eOb3-i.08PF8 +1Oβ4-#Kal%2(f`Xv.$>ነ8.l/&7l>βcbHYhF yAƃDcM$J m,G'aPtIc.6uW`s]N181IRAf}Ŷ^s޶ifpK22lPvh1{3+l` McEm"K$oy䯭e[RC{^K) +M(cζ6Xc>U.Oj䍖76`N4gfI$DW.fOf LĀ1UظǮj Cmr['XcTsʃǕdk: +CpԖ9;qϑV< ~B 3Zњ ;QH`IñjÉwu$BefM`^"FaHՒ1LÜ:vʞX縸ഋF"2Wیֺ3Mu:Nwܕ,J)Rq}k y]NeH~!="FKy }Ʉ *Q.y'bu:MVDt }|&:{]=p@3s[Wڛw"=U^l|I-I8>ERM,R 174 x$;`FRǔgbF© < GO'h̚_3C)B Y@= Yb+%܋с(P7pH1ޗ^[K=FG y\9VY:fA$xm`q8R)@ZR)JR)JR)JR)JR*榕9)PN(aSJR54R@ާ4#<TҔ*  BqP$RpEH9)JqTd9ʮ8)JR{ +vP; `YqF{dyfiO;w]d,{MGjfjiJf)JR)JR)JRZR)JR)JR)JR)JR)Zv^I,rdƊ@O^DYC ~f`$Os\VE,F>:Y"] +ƴ, 7ZIADii ' s_oƚK{LIUF䐸#3YgDI"D)w>x^m~m32 +M˝˳cU~%8rz&$2XzO(6rT(kCui5a*jwbwd+z6dي"3@cy3RƲZFڈN{:;8 ApAABk .u+&o8V0!IIu]oxY7t*^g&s|&8B@xVcx$Kl2=۴9Uw +):rHCnVlt[SABܛ1pka퐉1 Y5z*  'Ǟ+U}DG 6@KQF{HQ*m8:MR9 r0{r{yv/*51#6F0J5l-3GĉSg?m.5='lrMYx&ϥdGZIp!2wr=j-rSIBo1Ȍ8 ATk"31cʥ<p9|sZK[;XR| +Bͺ4B̪pwd8[pykkbwܰ`+0P~T3 . B)T﭅ֽkg#Fu.R84{ho Nʩ2G,r<XLzcjl.$3LEcU<u}>,*yG8gl)JR)JR)JRZR)JR)JR)JR)JR*64ӸDQǰ~/"m`̜mXy%~7R͵du=ޣ;dsYt绑u\܃9PMiRDOs1:1w\%m-8̲`|h-"%un2u"wHx6[&&UaxCs-vL , t23.K|i=IVYIiz|qN1ߊEh5Z>PG [m.յK@2L;7rۤ-95ņw4yhfIw)묱!US /㊮fUR"v UIS\um&I= 7rrXyYZI6bl/vhSY:w6q=`!)ɔnpE Udd,FC6I%xaZZ`ѓ`5Z`wM<1 &=iN=ppIXm@'jtۈtnݣ_y‚N⣜|k--o*H!88_5ޗ{kY<>Ub[BO+m_ODzD}k8\nŹk+Qٵ"Y-KPp#e2dn9皷6n*WfHnQT 9U~7jW 'Q>6%TQn wƲ>V5l +̣Ү+HmO#ifb;eTO!q 7i3J=N*%sj_é $P{p~Qi7q3L}mQܟ VDU+ K iT1\>/ fy.ߧ'`><]BG2g,p!yHLb=F{X5ď֋/ev$nSb9`7}kpH\y=AlX>)cw2 ATQuޤnڅJIQzQ׬$6&fS( +$X~cm dbps[ A7M $q8U-e')JR)JR)JRZR)JR)JR)JR)JR* +)c"`R2|SzTF9sRvP (zP"@` u,) Z=Ŝsy8f(6F =Y'vU(NM*Bs +CFFFp}jm +CF6T;ځBT** hfeyΒ` UtT>ӕܡ}FGw +aTH3($v$Gʱ(&*[d֫Y۬avF3`;A$&ؼ9(9gTKi ZHъe T5BF@0?ECC0rXv$GX)JR)JR)JRZR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRZR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRZR)JR)JR)JR)JR)JR^-7;<>$ +xKZ\ӣu0gU61cʷ93L43L5,b8%0ܼo5cO>{g&͐n@!~A9,TsSSs>]PR#m[\4)֣Innu y!U*v9#=ofY5;L$yBIb=NbDl +8V4Mc[%ijĠUcP Fk]kݍb{J4b&q(U nA3LpkԀ f_xp+ʷ .laNwc-wzkGu]< IY0%BQ=8Xq{dҮEKa;6(ݐH(Bvbdr%Lva<+/YuPY*n& G QzAՠwaʍF167 +-Bn~ɵ"%T0rG5;@Ԯ$,5Rz,`r dXEDqADJ*ύ@Zٵ{+K'fh5/gDFKg'[(t&s㨯SI aCs6y#)HܗfI#56lt"F%@*;w9Uu)x,`;/bGaώQ|Eu= H@pnC֭rIaG$+as oiO쬤85k[?ELvԬdD઒1@#VK,SZ`gA=V)I98VI}VO;GpU\{?%e{ \4O3DB8<`DP[hw[1^d>~{yz366bkifp S!M#{đZ iZtJsg32m@ܼAp{ֺOfo=[٣Si'=8MwW5QcrYPFcMn<3jΈp6H2!ʺ8 ihQ'$I'${Nj֥[ܦYc C5D[oKv'v޹w2\ExH B@@1 Er,% +$m* qwj4 4c)Y\!Nːn `qUqr#tFyۼ#H[\01WoraLU=TP9$dVap)c98TNЬn2O`ֶ/Ƌo$E FFHR ǖjm?r%8B <6sN»Qn,ACڮE9I">\!aB8ɪX%Hd(pX!smrqj5/IY"|dQ,p<yݽ$ٿbPN}9=DXq  gϽeN:p.;B{NGmR^YI$rIwFp3WDDK/QrA. Ϯ{UO [Gq̗$R3@UgeIYYTX^j +G X]!Wq@&O<4t0 WVF g[k *I?< Q'Oa`Xjm=Ly ͓%$9&Hވv)g8P[oIV@*3D&1#$y>2>~uEφkyC/[kHc>qhQʭ[iV7Q${W.+<-bHYD4DL$>6idnl=6(.j=͜K#2T;.*,s +$snU8s#Ζz2#;C+ rBUX;;u/9rgF)o#7܌BJl`c#?Xحx;nwlnf\0Z2\]-*B=';X28<85f k+$ B4>_ +hGцY!ʰNI8;A2jz5%cDR"X'pbx~Zug +uY3&c<@Kb3.Bx'H.FdGE6%HpAQV|?ܰguFT+6pX qVfሩ*Q6{oq +Z2r18a<֨x^iL /@mm<݌?qW/<>fV Ñ>/Rϩ/0o6 ķ ll,SOX3cs1NF,W VX$wU:t: rR*V!Y-ĒF`}'̐OQhɠ"$).ᙋ0sXV|CugvY\]K`t_Ej3ItD2":4`lqw5wM7Vә'r&ˌlm$gq[t+<˱pNcͳV|=M#Rۛnb? [k y6бaԌcs\Mݓ<<̇bC*B3*?DN $[66q-3COLF2 +ʡ n&K$I$o9||[THeYq Gj÷ьn,L"9_nےUAcp[֠hQGX8r0K{:"kĽ3`C˷d{kxN؋Ҟ h(6ۏe[h)O,Bu6awpUNIQxv(%`n +%˷tiv`P +s˥)JRZR)JR)JR)JR)JR* 3u^^_dRdKH@X?TH I`zʚB1 )Jqw ެsiSJTfM)JTb)JRz[nF@23\UU⡤TI'Qou EqeX0A5ve1ǻn8㿑*ub~4GYe ؃~UU8(5bMV"$dIߊ̥)JR54)JҔMF)M)JRYX#Ȋ` =BuT1xe)k8J.`$dGUՕ07|R(ZR)JR)JR)JR)JR+\E}>0{4 r:[CrEp ݞ=w\\h$Ra∗$ y%5o('X FM| }mp=*NjmIn9eu +#R x%A֣[m +:TOGsߊ}umFu2OfV +?t Q$d^!v=^8&t0)e9w^-beFstY +gkie k,2C/KNmݔfœp,24r̥J)`\BGt#Z &. `~ͼ*d(r} IWk~ !e%̅8`۟"+U0Im~hR bIa 6M{z39 5iTKᴝie]0qǟ¨m6WHxWݝ6GlY4AcSpI#[iLR̮FNq|VnmӌJIP˫~GZc,p:w +X#.5G#y!(JTfb=Oj8HD dxa5N-Be]#RJ7,@r?+Oomsq,3/~ʘRm Xa˃j̞+yb b%y5m^,O C +g x^a vBniU>iݣI0# +=bp)ݞ1qm`os A#(p+]W/o(D4SʠgYN<]o +'ӶJ`;v ?q\u/gzI"ʀ:C(l{woPO7MNK()`B;y8[]G4ȨeVoN,UA$BH9 =U PN +8Ȭy$\$l#.ͻa͎ݹzU۩6u gj ~[cP3[ʒ1R +yW[JRZR)JR)JR)JR)JR+[+m Uw$^ ;ǂl;A+{nHT h$BÂqqm]:\HpVF[qMcjL]2}|-*tK` y5vddV Rc33,:xا5k=&=>dv'#,YNsW5+φNA1egvC) ~iW݅`6P}3zIodm<6Չfn8c$^(5V&lˇT݌n#VuW /J(iP$'ݐ.>nZ~ 7-m&dbA'o{Vix1Bcr_{nMsyu;SQA +īCU97uC1sZm0֚Arf\osrLN0N;p+"[0$Vq c +EXEvv@[sm/s9h^ +.bhgY^= ]մmni敭B̍&X79݃v[}~PXR!fq$Ylw`'w{EI,&Yae+1(ʊ[?Zgecwgn[7d !2|Vb&ԽxR搯Xϐ2{dx-}#q4FQXb]is5y,.ݔKgRO:KRĩ4`#U]Dt-%VՌ=и5}s{)$ kX+eA`0 㚷ۈ; WEcޕ˩\}s kWkZe̪Py#%Rb$ |ko\EfVUEʅ8* ԚnsjЫ#psQ~$:rǝoQe-v1=#7Q< ^G# k,v$$P,Ie I$)|3c#hV-^3(}ͧ>X\:7f85gm48*Oz>ihh®wI<CVo-ap!7 ś n$:vWe &8&}{ x>7C?L݌eʪh֒XݑK>.HΎq dlӐaH>bƹBGj{b%q'c5_L~Hn\B Oq1#͐sY'/ Hd(9Vw,X^F$q!l6Y]%Mh;,rI0Jr@-ߊrU|1 +:'Udrw ;IcoKm[@XUi XI:M$Hȡ@%Jub}1pzM{kՙ8dx[`8K]µp mkY8 .z#A^I42$u3llcax5IVO +[L6~vuqyykmu2PU+坤|ַ=͎ [+˒w +5\G&$W’T dh3$'|2 +VG$~ *VlSN֤՜A&<*dۆq"7uEP1fNyhd/ AhI3Fu"3QP~y$I-1FI F|O5YyY[6IYy +N{futkn2Ag*fyՏv62 +&3 "8졈:#ePr؃ֻė^Ŧ^MVR3;H }1ӷy(ogҔ)@ZR)JR)JR)JR)JR*1LT@88SMA)LS0)ڰ[;OfᇚXJUztzUvPrOv$I$˨)Z[ +{]RPiQ,`n<,V)M)91JS1MP; +mv)b1Z[FTGhnUԐI< qmBT1LSh+ UH |XFs߸fm}qē1Ǚ$YT0) bܤFb0 3k8DQm}LVL +m1@v8Lbld +b0)LP(8Pg4|J#4MF)SZKEmNCv谈<8N/c~u4)JPZR)JR)JR)JR)JR+SIt\ЀaA#ǘfxZ#ٶRTN1Ǟk343L5 A d>w%sM @1Ċ3SQfj"L`dapOwsEs):8}cPA9;qYYif3TՁyNma*~` ڬXRK l#1[Jf43L43L43SXyu*GN2ZB  4jj3LxX{?=MfjZ:TK,2'20Ejψ5$1!vWbJBαaox˰ g~E3L晦kO#ԡEFq(OaiޡwyOBcDG[|ң42)fif|ׯi{Rc+"b2G[c\ɝF5^]@(_vK++=lMihmGE+F3 niyyfY + +',GE^5bKH$8fUȍH ]˨$qn*R(ZR_ZӲ1 wߟnJR)JR)JR)JR)Jxk=&xdh8՗r;X݌w[[ĉ + +Cǿfxr/`yu` c[M:Ki"hWisCo oRiEEenQu ybE}-(!;ݴc j:cQ]5܀HmpH"=b3!f"1F9 eeYb@]Po4.G[GTsNF6 ۥ 0Co$!,JԊӶ;ZWI.'FFlvtK%i:{(UGQ׌wcZ BAIəbGn1p;``իGciwo$S(ʇNJ@8$q^̩iJtFv#QxWL6/#Hm(g!ΗFLA*yT:]6B 9U8{m4-B5w|Z˹Sf$7OwJk&+ >sl!xV4髖م$z֫zű8n7F$bBZ}ŕ}{<!vi%2d勱cVXy$n[X5\\ƖnO4  !J1 +Uzxr+vzġ3+kkJRZU.A g~Z?5{_4Y#ls3݉@|MjiLWp#Yo>AVVq=բI;+3!vMcm+޳JR)JR)JR)JRk-)Ľ1*f +=~5a{Gr:[Gtc $9XVVQ}K& @ ֧FDi ĉPݬTkinnVxa"@>ČC0l<*,j^ۄѬmAjgfs96?e+kUc&F j,ܽݔ$DY!767) nhEĮ'Fu/ +k.x^#z&O'̒M`ėar[oƳ,4ߣ,Ha.#$O5v0Z-fs$rYy ?YmܓIzVc,6(9asLRGm$1ڻv>y֙4 m gqцWgh*[l"B1L.,XQ~X}sDК(nU'a5nm[ ]m8]Wc!0?$z:E3M=֙.1"{*. O&4q[O24wQYpr{b + wq$!Ne` aR]} 蝔ŒWf۹Ny9*0sSw7S1n,.J(r09E=n.ǴU*e8q9e񥛄(n$g=er89WÐ3;Ź#2ň '4Ҽ/i^= / 'MSñ]E}jTHN=ѕ ?rAVwزP;/~N{dž:ۭM`Y7+}*ɂ{;KQdV0 Vχ-u:HlpKHk8~#$´G%NJ$DW+Y= R~n$3P,z58ݽR78ԫpUA՘(WQTk DZTg;6G9g6u7@5iZ&l GašOiq{$ѡSio+qTd]U1tۚ5M0wm:\zh|R.*ko +)JR)JRZRV^k~j` +R/46Cl +§qV )pH5mgo(tEr"R@@'>=N]fY|o^`ֻIJ,lז/RZhV\ lo+ByCcS}M<ζ7F%xϹ  HZMR!$ +7{[̀@Ik)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRZRV^kzjfFq\F{ک|N<iH˟L+Q]6+"~05ӬE҅#p} NjklԱ<'<Mj+ u;;2Ap L@Qw<]^ǧ@1\ٻj aqH2NƊAW0Dlr8e8`|Mcua˂GR|aXڞ;q{j\y$Loܐlވ 'tKuWϝLO[&p$R7 :^m"B|\57мD7#aÑ3zUQR'*U%ъ8Vu)JR)JR)JR)JR)JR)JPZUXr87k4{˦"@y&gm8'˓ZX < i3#_jO9)JR+ɷOhK{+?BG[Dʅ!#\b;pkqJR)JR)JR)JR)JR)JR)JR)J@H`U{BnQp̃*լ3IѩM!ol)JR)JR)JR)JR)JR(ZRV_VشkkJR)JRW-U&3>⟑9)JR)JR)JR)JR)JR)JR)JRfT1Z v +9'Nxǭei:zVZ"(38'<% e~ Y#J$xo Wthodn7۴R4L9YVYF"9'̚VnV&!Ab}5XiM,< sJ>V/VNKXݻ?:ʭd1[#1ۗ9I +[[QăDU%h©1,jd2L|82FJV>ggC[H(f;!Է[d(FUupKªcQ5ͦZR0g%FxV”)JR)JR)JR)JR)JR(ZRV_VٳkkJR)JR^4In$GQ`w/'sTC84@g[}Q0Yk&-ZKa1:,ynX.yQ|yU}E/&,l!ecܻ.OSjj@a 7 wl_qS㌌Ê?n2l>W$eXgn #A$)b?M]&:6&^t1}s 1ܶ nO61m~9 27_е&-W*@횼nԫx.I +YI"ߪ4{XoUq IbkDwlv_JhMu`9g؋۱'*Əyqcz")-Bp܂ +ks3PN{VUԆPDo$cvgM0s8Y7iحkY`P5Ouy5fHL'2GM}x涴)JR)JR)JR)JR)JRZ 00!ϙݽr?VūE֩=WzSڞɫSuo?=VYSٵgmOgmdGQxq ? X# A$İg׏U:_ʿZ{=Z_Oj{&;mOeտ Vo][nfmYPFfo"h~eۏE[<*.GƲiJR)JR)JR)JR)JR)JPZR6WϵUmJR)JW'`nQ읱9Ogٴ@!޹|@usu<<4S_⒪GU 3ڪXK@ A{m]&yNcp,Nޭp e~it/ 5]kIo^RY6 .29z%:N;yLpHA|313@U^v~-LgyLZ?@ޖ6\rF\z1ONtkKgi5VP{* iw4~ebPrG=JhZ]t\">'VM5@!8X}c,C9n}js 'ȍndh{2ێq۞*IӠ +Hw7l$RT9+cr -FdI)JxRm7I,aԼ`&:&=v%_xSG6;G{3Ǟ3\߷\-+JR)JR)JR)JR)JR)JR)JR)JR)T   0,1m?zJR)JR)JR)JR)JR)JR)JRZU2.Gl8855>ȁ"ݷ92>K 䜐m5 NX1S We?h/J€+AG8'jԥY1O$Ch9GaGG@%e(Vz{1=ϝtt)JW%ּAei;4k}7v!uH!Pxr|JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@ZRPꝷjc4M)JR$DI?2k$mxzg_i=@&R)JR)JR)JR)J晩*3R)JR)JTҔEM*3BqSJTR)JR)Qv9M)Jw)JR)JR)JRZRV^k~jҔ)JRu]kE]] f8\{n~$U%7wT"&R,:8W}B&r؝F,C;G~u2* OaMMc 6~vcqJcH s9iSZ?]OgM0pe9,Vtzoah1l#~6q۾k1PnbgC"d{sSSJR}Btyn(&>]JUK$ְdl2{sYZL޼/)Kt~=\)$n$gX]@v=WS7$fR9T$˻cm88 vHŠ =G"/嶘KvTҹ;Vy!$P_tYH8hO|(.pIf1/1k,deICib>^Ug2*C՛quFXG ~hr]#L1"$pq>j3LdɐFg{H/E5ot!=+ +H~g ;ԫ|9U)JRsRjz\,im-{0#8[nϭg=61Pg;Q3干ORQޫub*^L,7sۏM6Ls\,{<ʏw r$M"|R1qWVd( N'ZIQTd}a\v6qf4.(,="&Ut`A )ZHMjkf6Uv# qjQȚ^TY䀆Ba#r7rAgm_ޢ܉R{g (m<5eylH8vvܷ G$bg#kdc}`k:Dֺ._W!cvsHP)9#qڳ9;Y# ֿ0O䌗|,~l~ytϱPcc1tnvEb q+Wg^H̽9 +]y#BP0c׹jFnS>iVj|964zp[4ݭ}bGq՝3=95IHIN: +짟=ֳk;"otfGK4s{+,,2ǧ6IYEQ#f71iz['~5d>"$25226LlFPH+H-lu&D;7=%Rpϊ~WIP Cv,P5)ulwQVj%hzU,ɸrN>.u9lo3JߣNA<|}wcF($d= ij+awc{?4<e>j/>i:H>ܑ+;`b=0@eͻܣ)ڱ19lcv:IzuɚW LAGps,-.C,X^W9Y [܍t؜rzUvlk}BmLZ+ѼuчXX,[V_tKmqKS}&dfNkwB6ĸٵgs+ %W&Bdr3܀e?uRonmƱ-%x db#?ee0q\޶WMJЉY_bv+`/ v_XXfٽænQxG.j49[oQTe[g. D H9V?k?!g2ԤiuQ ',!H'n +09PX=U-6DWsk\s*P9{]m$/o u^\׃m ;C羺u}p@5؅;]zgg~gŖeyw: v#V1 əlUHɭy @v͋ n t8>ӈ< 8n=:r6x9ؼ汛K +4& 7s]Hi]T<#Rݚi0Ф0UQ*)VG¸%&4兑Xb`!1ˑ;VAuKlm xÇ +T<\}U1F2T +?} mk +f܅BNI>u坾VnI!z0r0r01+:V=+_@J'#q޶+ z`E9̈j1D +Hd#=X^n+V8.Q.[ƺQԕzZ;m63R='>}]yjnZ /)J>皣/4eT֒p8 g6VIxu͛\x v70G7vT4CpO<=_W8OTu>cfMe-zFVUXm23*pO|aJRZRVZkzj֧@_YE.;1vV.{h"`d,T!QUw1x65B=DiQ$-$2BXBX?;GjiJRuN={~QcZirrq=˴= +)QU8Ug +H J s~ +Iu;w<\5d^F6 ٫}zٲ@iAw/bvtyf[qO¶ksxVti+y5{Om5V5)YS"++eAo,{䐫IьIPvձdYH=Ĭp'#Y՝sGQVc>B]bI[VV]Fi#,˶Tcxydh|fӧKnR(a + ]YpiK7;@}aiv}AԎq"$#sq̵m줚Xk9'qJʭU/R^Q3inx8 + r݋eU"ws1[q\1Zp) pKs| +xEmf]V*G ֹ<5e["2ru#G6ʶr;ʳӣvsP\yOaYij+#A+_kں0icN7q`S؁qQ'm]EIHFX%GkDF08R&m%_dRzS]xC0-'Pd q{ThSOqKq퓌p v?S^Y&[;',3y[<A onyqϗ}'Sɑp;^ČUm3h7@۹Lip*@AF܎UѰFTV~)i]Al,cV%e4y ƘA')JRZUʰ#;*I?Ztڵ˅;U!;yQjDB5v쁝:6Xnq8ۓ|+Q:c/)n~}?5ubYE%$KVY!n pG9/Sӭ3Ĥ'q[*xZi]2 -'I[cOTkQcz}O]>x!UwSn5 ҶY窻xq=kg i +DݔUZۥR% N+Kg{|^I*zc "w:,wR4k-T^UvMKdcI\|6>iҀrBI{v嶸^**IE[`#v ʰ RX[4 :Ldv|ya-G7rbrI<Υ)JR4*3X[(Y%59ֲqSQUiem$j;5̐8u He8a;2DrVlpH|UJI3tF2Q>uJTc4XvZ̐'+gp^ue@@rpSVF*iX%Ə ~%ϩ+"h#55yZX8iy 8WoocM +YP=M_b,cɝ y*jiJpkUӚ$@i&A9cdYtA`X:KyE J2Њɥ)QLbFM*VQ4U\dy +vl>YY{++aGMtmPeJp%r25JbxԼd>dUdr M+T`ʨH>2}r;$!@,NM^Ջ԰A$ܡ'=ϗ~|՛lbicEfc]a髳7Q}~52K(=P3Y6Q^ijB*r| ])JRZTV5?^ՃeʱªʫnDqOz>msoĭ^L.011X~ҴV{{8csXXd`m)JUJ#H +X2Ms uN{>{uTk L n6;nU 7v֗{ JS51i<=à]vnm_r7qٔ"=*mӭĆE#$~8=W 60ϑ CWiV-CN2c}G®c4)JR+Te.vXvxwq"<ȥPw*pl:6w +1[po۴Hc5ֶWh f)4v#$` < +GTc(Dmऩ$ +ήsQn 7 e$|>ZEBxF>u)wYٹ_tߣ'8Yֺklnc8`U)BJAR9O4ju!A1T&1d9Wn|C2j a Pm֎ML/G>Yϥd-q巘G Vއ(2dVιoq-gA] eٻsڲCLh-bi p s[֭$#QX0kW--Ԣ\ق^EwnڠnZu&`qnxvuץ[nFwf [O%m[yO0EP Wa,?MQ{-h|(^@>eGTQ ]*M}@$bDhۏXs+c}SPn.`n><|+`֕YNkM|1L©k/QՅ[DIQ3a~ӳsD +N:O1AɍPNn8>iB30K4zR +/ƙm%#8A2$bx4V9$bB[p0'^NzG#KE ڥ`.qHS澝:2Ò=xڰ|K5ܑYuD }75֧g;tF69IŒp8yR{ax["Xa2ɹ#h*G>k\ĉƈCZAarx[p+I>]Y@ۡdI$(H&5A#5>qhHpM=@BNx>Ux7nYT75/"(b8-`w`⺚%+0|o26]# >)=;k!0Xw( TwIiC8"QCYg?WA vE2(V np3V&.@IebF 2y<$Nu,KLjHѝp +̫~*߉d:Im"*Ǹ#fI6h-1$U9E +6ڳ.fWCeVI_LG5FIZ2”c=EgM/p۟σ#OVEou'`a~ӳ`U?pɪlo~[&iN91T8\.@VƔ)JZR)eCԥ)JR_\Iz-h{./27ں[{t"aQTz0])Q5fhn[SCrdC ɏtí`)O)JR)JRk㩴7m>5esΙc"\L#3` 15so}ꗓo"J\~Fo$I}h5.@HϒA8=YZuZ-ɶ1ǼwQ[`sZ RMV;iPIقé 3VuHogJ O N##&+i BǠd]-GRim'7mHX20H9iky>]r0몆6?lG"=vf6bh%+$Dprxvo}5F;'IV^Ӯ;Hc]ӡd-bVR`#8oD/$7K=~C~u5NْT(,&tCoζeh,>{oCTzV2V1 V>]Xhv-]c,f= .m@vH*Δp#_ޫpp9d.`z +FkKh_GoPU_ZOsrc9ڑ}?dVOΔmuǶYZVQOWdq>@f~8\I4Y ъ !n,(r[\=YO'9-%gFW$dp~*I;nyʵe׸0v+2+WKLnLn|vh䰚+[:Xncn#r*6{Ǔ]Wq-m"%(a-Ē7pk#u-2٠F%=B뺊68Vnn8D3IDm|k 5&-BI@[&*A'qWu Ӗ x2C8Aβ4>[NmRTh[$hb Nonw)|2ֶDS,+!=G?i]Aio {KU r2sUKqi5,F# @ dg޷z$#Y xsGҕ{m#!Gϰ"[ưXیnF ;I~WZ}.%f6@N 6 ~#5״ۙnVPvH=Ќc-}Af1q1櫳XեA@w?|l4Qcm $Ae@Uˁ!DIgn4i.[9dWK"|b1[.PxV$H@6'@#ƞgh$9, d0+UA%cycKYbj^Egu!Em-'Azs[[[dGx@UIHk|?,餛$7$y[#ȋGzZď*lrd6G+vmrKۛF?puO9 {~J@JB>\1m6*tfs?Hó)۱-~ɶ$GLUpJ(sC~ݬc o{;U^ 2Yf~ $NN5R)@ZR1e)JRD,*]A$k|m]]k&&+`&=5Ҕ*+Ojod>)O5xh.LCrF#q M)JR)JRF)fGx%P*r2걦i6RXKBDUɬ@2 ؃V4!!VbH@ܕ_%ϘYbIv%ўʼy'JRkV#+@j=q޶uAq$d $?++4[zoc~&aI>yǮ=+'4aj:EP68gKV 6;ϼ* @F8 +fb1JS)Tb+J[z.͛Ќ@*28ɥ#)MI\hU@':MF*iZۍdV,zY$Ǖ$5F1SQTc4XZb2',XR};wMvq$1(TE +;w)|XVc8qXјYVe\犾vU)Jb*iJRZRQYkJRr3C[9YXa/~c]vP CjF= +JR+Y-usoue=gSAx9U&[Rvx%Gװ ;]"R G T)JR)JU75j+ylBB"WM n^yO jktS*|uxOl)5b=>[lQ:v{IۓOEI m:@ۂ9Ưnzfֆ}CP1>D'WnG+o7 +f 3LdS4MFiĎ[Z4XB'Mewe|7}1=D#t(Wq=ިΟԊ[pgrC猎*߉5;"#snJ2'<٦iҙjxB]\D (7^+q}$A#۠ABv`8dV#ƍ*rYA F||k渚sn |ܬfiǶK&E#1ɨ3J躝or +29'{)~Z["A "+{ՑQdTndV65ІbQ8õc[sDL+*Ց3 ֓B/QS٧att#FKg[jŮc +N+=R2 Mw4rD f9 +cֲ(X +dS4cK7ۓ$*X*aHJ˜0s+/43X-ȺDXcbϻ#j :[m;Hٽ0>~df)JR)JZRP6YkJR7W1JQ1&[ɪ>rk=Out)JRSr02AEo<KU{8i"S[9y/]N[%Ŵ"8 }EeR)JR+QhՑKm+`UKyVv;ǔ18j†3uHq2%rpqQsY=M +u5x6̶PU==N}+sZ<"fh_}Icwa|ߍ]EwGudfF # n<󕙋3CqqWtn*A-b{cskv9m%bf'v, ;KcNk[hmܮ2{ZtYrCUYZ~EU%Q$MnH9xLJkZ "A g~]"̖Wt'Lk2a'V73C:.]YC_s c'ʯx8tk'PrіI(1ikbi &mm10 9988ǖy$"H$pF# TfrYt-ܱ-4Hҹ5̽MU(<98$w$U#mhTY'TYe*,YwzI) + ʯijPlq G 2X7Iq,̪Dee20Hڣ-3HbC,2śke]sVOQo+;<L9o{'bz֑n-GnQeS zg6SnRNX6mwOp 9_1%%6 +IP|+j([.kyL3FrF .d\Od2*G\V4zQ߶NG>ٳ$==aGAIf-pۤfp[vݻ~hDZ%T;n#'$yF7&ldTSAŇCti'ht6@E\8ɪєNHz6|v$2n5 n`/X׺T7E1ܲDIIp/ GTZi+lJ]i+Jwts;sMFEF)$ef-!brހUBufUpCm  zֺQK$n +ew~.-Ywۃ $18*ð\\^ʊ@I G([#93W.4`HHɰ r2{]j *F'y$k.LA6i HyW ;0[Sɪզh')A]@2ep{zUS?LZ"B"`S08<ަE$21$Ď1`bC+H4 ;Kny8ZX^U'LqA {pmP[`ƨ(`r 'Ny\r^^7&cK= ++)&̥)JR)JZRPꝷjҔj|I&f#9i$n@ += fﺹndsoiJR)JRև]_XI׈8rA/*4/{l?fAgߔR)JR)JR)JR)JR1SJR)JR)JR)JR)Q@1SJR)JR)JR)QR)JRZRV^k~jҔwm$UK31w$'B,o屍9Ϳ'_SJR)JRjZ) v[ZSq AOؓM)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRZRV^kzjž$=ײskgP`*޷6Q0ȫ˩[ǷMiFo(apbSO +b!UDP`Ut)JRJaTUbc'8uO`ٳm9 +R)Xچo@\IJFnAc\2\Sߐ';X:VSAA+OBJӦ`APr#%p\p:G1e~zt֑g,ıŒ淶ZH8 TAwHj nns)~p9cV# <YYnƷ_ۛXlA$Ж9S +߮h: `PpA>XSbgˎ[<z6ŝ 3#v*bA pʹVM.>I!PF#HzjwI":^u" +`y ݷ9B  3p0Y;T~PU%8 #e5>GD[ؾ6STn|d6wߊ}VgVxӨ2(aO~*Wh^O0`@#UYjvچpV`ϗo냬ж (zOgN VOuOb@{uY#o sbZ `3]nSwZXJgv3 e*R G ՋF =wFq,.#eã )#*`p\kckK޺YPc:I!F5Q|aw9ę>k1Vi< l`rjޣoc, 1 +IڈY:G|'\}J]o+yqX]3%d $v'EKr 3lH.A{R*WQk7n|+ s+6}N9ԕ K2HҢUa[g>$p|蚵3 AcjW"ehoR%_k{#}cUE}og+Frw{1ɭꖑ#̊UfL-#;7 W]5,$bZ8!p=Ea]xP6r{83{$nA5y[izn'=*am%hcd`N8x4l//[TdXtwb{:ҹ/_i+79%e] yv+e}ZY<Fv` XUEY\ďPG=7щapsG|sL#;Xm,2*}?';=j5+[XsUyT83&?~ꃫY΂2Cwی<|긵 iLcpO<? +UU.%y +RVuipOaGR-Vhev!!w,u[]GwB@q3ؕ`UŦ[q3mHб=|+L!-M6 e2AݼpGs>eS#l,~X< % 4`==U Z4>׌F储 UA[;R2}$rF~Y|ݾiw/F)n=Ge'FEfR)@ZR6fr[+5U2ȧ,(b ^T:,Uc~9ta u%cH50}PkN ++{1"-㵍cB* +`;*)JRQ4n`1N'X ;EciZMR$)fld'fR)JRk.ӝGLq)wA*jӡH)O}nPX/s@iR)VniQ\ʍZ%>E. =ݜ'k_s֜x+6DZUmc>u~;_n{xDPb@Fymuõs3 +g-23V6ex?~걩2xNqRtrA#~kiZƌʧu =2* }+ {9q}Sw=>Cu{?d=8=1+:_6O<1LE,b6&@>9 *֟#gVe#0<; vkP|J)6|?<]gr?rմpH]s?4O3o]2_dFU +A}&GGĩ +3;H5xC{'/n1?WpXf==*w=k7 ii{"8xEHdQ3f^KVX3]3:!`\<O2o;) +T_9L)+'Yo*T[l,AYl!Nx?HoTSv[ k4MI'{ѣ* + :ܽޡ Ĩ#w 3;Iwkh5t cױɮ-L/<3k0/'ފs)5#}j֫^{UVq8S\95pZUjg-ɼF;(e|wV%vgDb./>L\7>xf}z%Ǵc0~l߾SdCp`H ՛4=O=W8|X uaΧc#sU$AXaM2q2m'}b Zn#~V/0'e5ՈMsKc1^vjν#tZ2m']X/ɓ?&M@>ht{yg%;,۩.KPpYHsʹ$X 'bfyb_<`dVgzܗ;[FI +3`0tvҋ@ފ<s&լ-u)#u7*0Mp}IY=BZ[{8HC3帮q◅GfBd +ټjcFW'6y(Yz%ڻ4 +%lcq#n;W9]B 09#o=}nSf}ۻ+񔨷 ,5G^TzKqϖJ!?t_U{ gUdA$rDdʂpAka :ѢH22znF|Ǯjϊn-dBdf+}[o?q8v{@c9U]2H:Jao, p} 2fE @;vÊXhkHBFsFO5׍q+Fm6XB*eR{5N4. +*!]f%2Ewj:Y u q b*Ô!dkMkeEKxmҜ2Uڎymu%i=Q(h9ln(]2TdI8m Qᴁsa 6 +?W6:ܞs+;QK5IQ'(%^ (8)M]$%=5DFcs;$}fAhi:J;&&-a4*5 ¹|)JZU9rK/Dž*MshJZhmr%g 2­j Dp$CQ5{I k-՚F%Ĝe캷ڞͫ [+?j{>5oͩ?mmNiZ :zkO25_m?֛5ඟȥiMKOrgk?i/zk6 5\[1+0U$`cyٵogmOgm:ŷͩ? :Z{_6OY i_浔#2֭3oͫUxR];A0hYS<1[(-uTkw!@,mJO«k?Kڰu57YD1*3);#hٷn qc1V4]<08c;S8ɬoc +o$lsdՁcn$>ѿ3Tæے%cU$zEQe +2-A]0ظ$ycm*A7F(DUf +H^;ʮN!DzC 89֯K[NCI +1pJFӑT>e$;[d\mmp|zwm."I96>YU5@Ʀ=v0ir.-+IU&m,iąT\ ``zTcޤH{eAҮE +@QBQ=WJRTWSmݰ>D @F{VpޡxE>LVf!X:!E(~5v;8!ǂ69jz5(Q-r:kcʵMi4ŭM+?Ppq8YdGL,%(6 q'm젴F5L;T/nݪbkp +W`yJFN=kAo\_L6{c5tJanG?* PS\g## BNwý]]`x|Nc lb +H`[,ws[xYѬ[5.@ۻO~S[kI]0ȫj8uH>=K=j$"]GjTד|f@ d.FHWTI2D22ֻĚ:t1r#,AǞ3CsO?Yz7bwgYIz+ѯkIca=f<{!!giW/OqqF5|ƶ]E~{V\NDF#z~I4]fT<,8wqcfwW8 ={U+Ruh[j q L܊aG֮fLW1m"Gp-1)9 +H}{m'he X[,#߱;ws}$n9vqqc  b,ɉ qceWwkv,f +lclgy[bke>"[WsDS(ppyb2˩^2t8r<*J<d3П<8>EN>¶Ki.$3gsstLUq\_ꚅGX"I2,%qbɧE5։ϻx.9F!rFk2o-,-"9d&c,R۞@]˶,GEEPܕLܞ+k1 s +¢3foڧ'Z}7Ol&_fnK DRG! 3]g(95kjΣI m]DlF9n bגIs7Eݏbdq]Gl8QGePG+WhEtHYC) + r~կvڕQBd8x^alؑ~m'#2 }=}+cX +ϓH5ԡB81KI#>'V_ЋwogƵ#dk+mI$F[l,6dUqfV VFcJ8{t W :CU@Ğk`ku,.QGVR j/盫Қx)S'vp=+a!y#T$mFєqC8kcs?Flg> ~BOPߧ)w~\Z>$f$#0Fmp{K;y#ID1eZl0*2wuK q O浟p}s`Ǟnjn(-%XvF27r;wZm9Y +0<)qf!>U榔)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JZUXch@ՆA=v (g YuF%2 VRGn+ExU'6xe~|eW#՝3¦P+XlR$:B6@ ߱9%%4evϑ<;[DGks&P˵:pF$@yYt >i obۉ`8cgXedq`A+Úmh-"e@lC űҭ4;nmnO5hPL.#5@o{Hdx̂]xR7`HϦEZmd0YTnC`[Gg nôNFv23&7p@*A W\@oj20%D`LlG8`0Nk +AqXeҘ;::e@ag]y 9 ;AĽhA*Rj.{+Vh#xԍTl_50vX5f!o,a$c=cv9 E +8>X ئVy"Gο,0r1IYSm1R06yؤzoϞ+`X :wc q SmjHU`7c9-%Fϟ]oXV cnSgM+I'$"*{g +UusO,E$h4Zue&V00ۀOA¶i9[; 8KnS=JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRZTS55saFpQ?8水}dj3 2[8zƔ)JR)JR)JR)JRn˫!b!={TtMpWeTT`(TyƔ*X2*YR H_1@}OnվFjiJR4M)JRM)JR)JR)JR)PN)SJR)JR)JT MFEM)JR)JRZUyceG`0J堶[Foe~+/WPұ.N $f߲;w|J{II;4H߼)4Qʢ>u?:榔)JR)JR)JR)JRgF[A܅OFkCi'UԆIm.%ձϞkywi'H$0XEHTű8^ŨBۑ;9nRN '.QTwlQ8cCo7@*yrb;VQ;GR)Xoet_#x$9$V b+_-tgrl; g ;ʵz"Ӟ{7W1+nqj=CGC-#rNP@``5Fۭn_ߊYJ9A=5}c(Bq!xɫRx+x^`"+m۵Nx;dXjڑa|eCVFRr0Ȫuq#Hb`Z Ecrw#Hd~U$b ^ 5h͙2Hl`:u{sq-ʰEV}|Y:.$UHܞX,>Uxjw7Lɴ  F'Th|.E*Tv5~-cid`'Ui*U + +2wu+}/aen}ԍ lvmV +>݄{}d>@T[j{ @ +1S<v=\I4r '+O5]-- Fr0R|ԡu ,UAgs(u.9ZT`D\Qn9몭Mlj3(n >u{m'N#+m@]ħyڽp\9lBh0l+皷iw*ŇBZ>Āw+coBV' $Iџyk!,8i[v3 +i}kwބヌ+g 2Fbc;gY-(bf-4z؆1آf + g] jwo8EQ8Ukx!Gh:eN3}=|G!n'T'P6ۂxZ劫myKEqyybOxMf 3=9WQnEc16b>bΪI +0۟u\Y6i$K6ׁ7ȥ_*rsm"Ň}MQ88zk-,ٿ(_2I:&%U߷(r +W%r{uHcPtќF ۷nxf:\Ʋ29AX]c!GVe5..2p;"˭A!br#fu`>@ y+Mxm&`yox?3յ6tM>{Jj1ڤ@O4yլVRFH<.-66- +dܓ~w 23C#^ a{ Y^ŨBBۑ;AAwifN +Afb|nK#Es*ȻY229*-unxܩeYau˿b mكQpɞہ.{UOZG;n$ q9drx5)JRZV.ëB`*ASAV~& +%$qHngmiJhIeNv5|;oJB>՘7Čk.OP"apF{"+P@>uEK>#NT0dm۲V}sG#H؅uBDgדIgk(qVIq#5o,07?e{ݫk-Nǣ] '!is}Օ j{VK+[yd +4gH:jVCv X %>skrt%VcuE*E 0'8sXv:-1ޣ!~m#=灁vsd0lwû2I>%1Y3t,1## :1 č4,x$\dӰ7B+ +bJ8x,m;]UHdm4P%[RFecߌCv Hϑo^KcYH3!ԡoz4;'=on5YVTb[mݲOJI5+%H­NnCe9^v*Z;N{4F;) !c} WBս'SZևK:8;֎h7?jgv1[YzΧ^K+CG+$ 3;gյvYm6ᴪ{OXӼ>%% 63{v5C*΋"( 2 i<_ le ݐq2}ObkuxgS8bYIުHmH9.Z`vH$@8$m;?skMt|XVnϽh+Ss9ɫj{Y4ۑQhK6"#!q*nbhnmV\ŷ$3Q#D̋^9U03+`P*+--/k"I:KBd-!sڨ":5m!g#Vú:ղI";N88ڗEQcpGRUTRNbhDf{j<=m8PA&Fr>{zS!ѢCFe")nxܨn{Ke_Dͦ*2b`ϕv8UVYI7jH +}j.]:/fn$g&Ip\D&ar4#>Ȳkf#SiF̖ G`p@8PYlkIH8pA>x"_*.]jX[*mD2Jp;5W%-v b?z:r|[w;BF;CZVkAw5幕`x6+yVf"@a|6n,u/^9X IHWM[CggVZF8X約BB1ޛwv꺂o}Bp`{2>dqY~}#5`%X(>H=HDj^+6?U ܱeXR$)qՉL5-)}1ZEd 2;zyu+su=ŽBd5V n;kokdC$@#c[I< :'$s<ֲ[uMF%6˵}īF1 # XK;:RƷ+8DPFk7TKMN)mԁLU=vǞ'62+!=d2A[V`w!9ֶ4)JPZR)JR)JR)JR)JR)JRX{>Rѫwj֐(Y#W(`*5a#Ќ`;qڪ P h݌g8NSXFР偏§L$0 $r;:6 +2#5z TI +L6?SzU1[v"NNO"% [$Np; D +$GljU"$Q3`b PcG~HEQ0=< q ƌ \mH*Œ +i7L?J"6T)˨#S̞Á[\U6fTPr ުv9gԑaE ?: qǗTHFP*݃ d|U}P#V AĈU |ƬC 9DpsZN@ qP@'~fnA# >F*BSTI |I;mJ, ~"50>^%=9j'8M((qJ@TSvv18z( +`cOI7n3끟ƧH<).7lvbjwñ+ "I2GlXcY#|#Gުߓ“czך U2“Y2 ƤFB01? + Sީ1c:)y>A +*1遏«(d0FA<#"]GTGq Fs1SJR(ZR)JR)JR)JR)JR* +2jfKY#` +9AiT.8ɬBҪ2lX_F[;ZϬ-OTM1c 4Qϐ$!UiHC1IRE##YuJL2 XVlQv7 W~Ufi=Lǘљ2 -y9(yuE3T2N`sGWQ"H6ܪX zRafIJn;v2 V©T 4Z=L*)v=9YMFiPV.ǪB']U +7~qYYL!a@$ dUfjdxEP {RX0skkZ_XG@N,ŹvYH8Ϧjc[!F@v6j3SQL/*GXI>f-J-.!,.rp9L%F4jq[FdQ,C  +J#~V?cId< *IN~&Bp82_\i4)=<YQpA4!92`BgֹEu)$;r +;ϖy<d7 { H+gR.6]28&4|Nyӵ+[V"udt` +6U8z] N"`b8ru}׌i \X wKTl{nmcWGf w2;Xc<X3C[MY^M"n 30x0kztɦ[4Ƞk+*cN7CrL{vV!"RYIu %ݶ 7-Bm:izIR7;!RqƱmF&]vWvy WukWJ +s4QʥrR29kRo@\Lt~w+/T/H &cr>pngaFAYv\ܳ:qby +}5gŗ:fqul/ pq8jƻ:H=pWIV +xp6F&Vf1Șç䓎3qZHUѐ\sD :״O=`?kR)JR)JRZR)JR)JR)JR)JR*念,9R7LFMi,7#ڛK %#-0lcU\ז#NT(h`*rGItO犪/$vR\٧Md2JFg-.#oF, ۜX7 񞅰=p0}9汬+"cOII*UUmOcqktP̒2dt3 $}3\z]j_c +{d犫]ޘnc=L:j{1[;qu p"I~^0bqԌmkFu-.wy!t38ԡ*AIIX6a_%Fx'r\~FR0KdߜW}sZ-^;YqF ߰^0njqY˥^]OjxFQ~PCd Fa/nB} Nqeo2@?k'қWk[70@`r9Qo#FK[t* +s}m+@^uoahBb@6w}c^Ii^2:DB*dEŠ0@i􋯤SP13 sɷ\Tٸj/AY'3ʠ/"*0 SϓA=)$SJlÞ *g';V.o⻑#GW6LM01=c`1f^h6c>3oVE*mr.5yo1D`sI+sZ+ANd0C4ǂC,v0yxzqcan$NRp2SU'ӄۦUNs(ˑOVv($bsNMbxMY糅ZT۹sǝDڂ$ٻWvNEUi <3*,={rp2rp*[Mk m[ɾ=rYNNs#B|n[϶;|*߈XH(DQ+tpDxOn9-Q]<FD#!QYAeySKI "ߚ$~5yZXbذP7=lSUqZG&哔ح)a Hvչ dm@7<3XqxL5.! +wrͷ bڰM:TyB368? +S8.K)VFT`c8d(pc A.i YL([,11j\ 1yf,uqn%Em#Gq]5ƫkhЬ,Yy=Vu+IZ&EP0'fj0j^ #YHXw C,x5cVI$x \1,Ŷȳ9*#;zXmM TY11MV#sB{6GM:S;ʜ0ۂlt@'d[ꖷSo}~c>UUۺ+bGgyUwwLq~'|IjR첡!c8݆q޹em +\K2nCݜ`{6߿ƫmkl<<,Ҕ)JPZR)JR)JR)JR)JR)JR7K!+wHOe{hYH Ę tyxhcĮ12y.V E" Nʠ+OʭW6Xp 9q9 +%Rܧ wX5kS?i@aCr +ag>ե1kT77 + Tqϩo4}s)ssx܈5!w 80~5jHķm7- jIN.`9'5gѯ‚I *YjQOD @AOyH ?}r$1<2y[[wׄsYHFiO +VڽюVpҹ +ɱA8wƬ[d2Uz w6hI|lB=~"W^tR6orMfxsOQWvprA w,Y̓<J*%- ?,\:Y`/hipBɌ3=ϕW={c LFj"!A"AnUZ)dEo&tʍvیc튤Y"ӧ6m0{* ( 8Fu2Y4+ƌ靬T\2>ꋫ(/Wd$\gP0ZvH=CU,.@vT̥\ ~TCi zQg [. {Gbx~oI7d9)i D2F@ $dƨ}:B塌6QNo:4i1 a +)AR1UhQqn6mݾݽ5s*0U NԹBMH`UMm@1㊏b;Iww//JgR`6=TIco4+ČX,<$fw*7v:cPU}©{Xdb@v"xEF##VPZ'N5v}pyDsGNС ((}(S d l\ ǝU=1]8YA^;p}*RY+oxћx'G$g*a1}j4U@T/U3X[E!Qq@`5SY@ +#;XqJHYA_UȡH$jT`**3VO.‚<"z, k9ʅPC**E m6olU661$`$3H저$Rh*^8v}ċ펅"yL0}NHbC ՛k{ D$`pLvpB$V琪=$J:R0APFElzd aIԬGj"8$jG` +}яF ]c-BDi0cB "* +8.ӧ4h {>mQ]h +kE +`( v##1"Y#E-܅PO$i0dې;|*,P'8w9=MPl-̢cu.kNEHcgO̼̊FG5xƤG#JR(ZR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRZR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRZR)JR)JR)JR)JR)JR)JR)JR5if)JRi@ififif3LҔififiS4iRM*)fjj)R3L42)f(ZR)JR)JR)QTTҔ)JRuy4ǵ4 g$ !|>u{aSmPu)ŸK/}1w蟦j?MAկ?P5{?R5{1hu{Pk߽Ru{1-#Y?~Pڵ;Gn[-Gמ 'CV~'-z|OZկO~_Z['Pu[QU}-y>#_uHo=_uy U5K^?OR5k4Z?A(տzZc[u{}H?OS{zkDO.` +?h5k{'ԝVy'z{DOSk)ާgP}*~C]~?*v<_uInFnGҗjV?[?A^$5#VvzW?}-w-#VOTVSoިJj~'>Ow蟏 +?Qߢ~'Ft|_uGҗ~I'}'wG꟤_uGw~IMS45?IMTQާҷ~ި:#T#?OUJ^zjw~ު?O+䟉}'v?3A.kN~gꓩzꁪ^+T*>OªN? +'iOG\Gum'w\Pq4(ZR)JR)Z]ZPֶ]5G3#}6 ޵Ͼɮ60uϒ8n=[95hhJ3U]sS =R->걫k%Pr6OK[̇tGv-0<ZHSZK~Fg guEI!nd #Aunz!7M By +w>G +΁jq@~5(88m6kC\ıI+$2kSr_DͱJwewҳgh#9\n fW hyǻxL}CSݻsJ=Pi<ԃ&*)Y7ub@;qB@ڌS8' +f[Gt_a'dvBk&:.J2A'[OY[(eg85^eA Vc}kfTHάv-"=9 +-yH"l$ybU S4k{#DmŘd0`iڭo4ѬJcX1C5yKqN! u`8[|Xf6N(XP0.+ v9N|`[`U'gϵ-bj3ZM47ƌ%HPIbk{;K}k۫iH`SXqi٥?wI4(ZR)JR)QWϏ$뢻W9RGh?xF扃#r##p~*uxrotzsI=j4CwMLudm` 9>uM.-pdL2ۤfؤGon?.E] 8"U'ƍ~|H@1>uEt]Y@H%`Cؘf㷽V^˭3]Pz}(?!msU\b1ϻ +"= c5o.Vʸs ޸ҕxTfgo¶ W!^:i]SU {mVcvMvH6ƱT+~@6 +Z V2Dsb6sޱ`gY]neoc*sO\3ru#.?>:FQew1։w@n5cIhFJ }<.1sXك۰$p>:xv;~Dxiqq}"ȬJ Źڷv_ +@А_ 8 }GƶklٔG48&F1|y>uTuA,S~fuGȱ{0P0ucs,iRF Hq $="{(w>8D8ǗjߣE(r>J#g8s8ǭha6b;.c#$3t;Z &z#(6,ŕX<U@^P oϡ`s"s2 PYO~|;bvs,>srG%pbs<j2iw$]F()* v8!ne' li,y.d{)*ϨWߺA7=NG+;UW`jnFxrJbYm~13ʸX ㊢EK Y2m*ATO-6,"DH|1rSdĨ;n8V eKtX۫ۘ}#*g֚qcKId9U {gO3L VՆGp1U_[ffZ 79aYٟyq9mϞ+i" $W\HVy[-4I[oHn!vLGm  ZVU"r.s*P98֞/'Ԩ0,OP`2{9;[/4Kurqܣ>U完6MkDis r#Vt+):VOq!K}.8eRHcoޮZR)JR)TM +#F S#0f&79v:u1~q[Ic +_!O5Ҽ)-#h$%J joC2:^WxKOB"P&t`nqS2vycjifF!19^(I<q6>m +FƠT`sϭk~!a)\M6`SV:LMؕy ~zm o,LьY$ O994X@L.Тp1Giaan,k~k$vfldC$$`?bO㚧Tm5avY4#Rj+Gѣ[HNVmj.<']'X.T}+ekkK`\,y9LI?yB4ԟ=5ve1$VSՆvnZUة_o|zU˝-&[ܤ3 'v#5:i^H&+2+6ՇJi%#Q$D<'ON*B"BTPcڠFj[pnILa60|kH7dHݜR8rX>2$" v0{6[vZnP8Ȃ̤Wm gVIֶ])&`8*&LL q{m0H3u*_~ 4i9jU$.@yH,IyUCFVhI2_ ;1Ͻ^KG7H2b0Cr25bCR\̯W .1N{ՈGlһE! +qTryY1~\a15 kg +<'IMc˧ .;T܃1[n>&r0۹`cCgR` 6{dcv*ht{}ݛ{{} FG#)$U" 0bd8K}-!$b +mQny>uL:4V;l<]C=yVyYwK*F@6 +ikFbGv]1M^I3(u*J6XBlFwF@ F;չd$9Qۃ?WGU&26 SV|;oo<3prOsMپWg-έǢC ۿͻg^i\pee +ہ".~ f{>cW.X%VנۑT\iLZ:CxY:WiU c?i)$eir'Y`'Ӵz7So6 +  IaªFu]՜2! #h'М*L;sp1YH)ϗ<;Xp$|~Fw0y= gw[T X7sW#F,.2^ۉnzmAcy:cqL\p? V,^3g,܆*pRF+ [ RTR$}ſFHbXa{qUSxOn$V6,0`=qVLn,kMBs p|X:os8UCD~R2?q3%k$lYC)#*W5LԟH42j@4wXf!TI +Cߔ2|ETjW>U59i*9ɩEA2{SEB*j{栚ɪmF*w*j@4}* 5*qLSA HQRj3J5"4A4PsU@)ԑP)LmRh* J55I854O55"g?φXTҔZR)\GEYk7iF2ichPrG¹\h2D!):AxC)b0)҄ qW $V]oYsf߬}aYkpMykOj?!_O|CntG{yxN+jPah +> dgyu1g9{`fPKt)/MZMZK.3bv'dV^˦ꖶRad3TBL>~[?\% }'uSi m`?A? +q1ąPJS3.'}83gdX ߅u{xMŵ߼ʅDݜ+sl]im[%ąLHB`!`rN8:lKC$hWlZ6wbז8 Exf9lOէl:s6LFݻl<;[Yb)>}#Qڬ#ef ,dg'<ήisooiS 09<ުZlu;I;+&m*EN+m@#_$@|+)G58jsS@5V)N==QJj3J$@h Px5,hTfi@jsRN*iR((MR9H5*IL⃚4@N*3CU/jPiJTUBH4bC}/]m)JPZR*3SQSJҦ55EM**iQSQSJTTҕ5B4̿@A\%@44&z**:٢}j栜T 櫧Gj$S*ThIyF*i)XPE)B*555(E*iQR ITx5fRsTUh8TbM@Wj$[cXcoZWrJQgܐgcjuXF9oi;{c˽m.&/VjHgC +]nC'l21ZڦAr. @dU>xϝeT|'nteU6c$7)_Fum-c.!@mʁH#UGWKx ]A\0]ex?8lHl{C >iڶjW$b%[e.#*;RI.̆EF꤁m}ޭ7>$+l-.LKi;`rd Np5IַLEѕ"ڤ2A`G#kEꚾ_}PUnl#~PSvVh6rpEiw]nf7Kka N5I6ɻ$1[g !6(;jPXS g-эk5cWu]>nu$6pq [YMR;[RhՄb6WFPG rjxoŲ=En-psqt_!k۸mG\toN1 6gߢijr $h@W~S9{aT2{ľ"IiYOLXG !w9#!F*4V{q$qBe,v>¬xc]ihڱWۓ :~gRr # 0+;x]>ou&!U `3=m%9vURyPkŇ֙Y`#A983L⃚@ni@pjw +ОibTTw TCJTR"5'JLfʋPEHASB*@*1ASc1R9+QZo`'`w#߈߱ +`]c X4I-\*#fp Re@1j44?Mj@M7O^ uz2xIn"H2F܁5&Gd#Cw䜌#ضYD66LNv r.Y𽕆HWv~𼟍i50[y%K,rm ѶeǑ&}{NncH9I%~rI .8F%m:ń^br'h|y +t4+$'H`ߞxd +m3s bY9 uil/bvg]H88z.ϕ?q1} +b >Cθg02.dq.!8cea.qĶrld>"#^+c1i8? +?>ZU?εi+[^.Lv {1\7]I,l +R;yFu/jY0чlAu.a\ׁ fך@SνNnts(`|Tv($T)"S4շ U,3ԞE<ޤ*2ZbEV;QHT b^{Ҝ99)RMSR(h*iLԁ٨"R8iSQSJqTUH⧃SPj*j*j Pyjfj梡3RjR}RnjTb\}}W]JRZR=SJX9}9 #GF;HV>- vʤ`b+f!xD1+ǜqQa~x7Py`6*38x,XrT_GLL)ʱQ@l/o*[[kg +071vى'5x~]PjΣDy*VZD˴ҮchNu^-,b(zYHZBwk*^0m I9{\KÖ:&3&S$_W4H# I@Wb+šn0r,i^ö+`PϷt{Jrd=.I?}jieHēʐ+ike1apxvKH-p 3Yw0j###*rEdR\էXP**9qQyTM893RZR)JR)JR)JR)JR+Et 9oj +A +5sS N MSy*`V.t6̊dn)9_;# +,Uɐ灎O"xm9她񄍌h!Ss5$0Dvp}kvHW'o'ʱw6J\0݁#?xunAf.;d;<QfāZByd&m<sR8")5-BiRhl05']Pe;}dP̽x7,q(ؓNOʱ5J@92+ˎ0`g˚c^;(&CفdZh$WJ0EI>nsTf4 )CQFuQ YkivB`F?}X;7tcr}I'EbIQ YGo\SQCHԎ٥FigRU, F1Rj3R ;9ɩ* ((jVmN*:V5wWWg%u)@ZR)JR)JR)JR)JR+IN^뼵XK<7 ܏QuNb7&Щ+9Wg>՚8*QުyԓQv)Mj &j|T۴b^L##j(VDCo5p\Li˃ *XA ߚ٢{tbI>rq32kW}7kHmln{Fc%q%)#8H_YQȆ(>[;Xc1́ԐJ~]hV {dn3\nx8[ivD"%F@VAa%+S$>&lY9>vbqm{Of9ۑ5F=AnĴ;cp!0|y53"P"k'On(;&,rI@I'ZȲk:*;(# dcc昨C6;(?g?WH⥈G>TM3TR0 ;TgB9իpJv #r@p{`NۏO +8k:)df?8ϥ]ޜp%OߨՀPgOߩ{L$珬B~jjv85X`|O=Oıfc*e=AY#[?ҨԍbğD?Oߨ:Ŗ1$O߬ NM/T1h6oɕrv?1³"մUn! +Pw7zs7pFH={}5<\wWꡭX +"~H,J٨u*_XvnDGc8VRtSة ?V.fӷysd\~؊No?ʴI/ Ds\??tXJ4]&8X%Qɫpj3Yldg\X.>k"=N +pϵ[7<d4bIw$֗]lM"zݑII{cm!lNŰdRIYXG?-$@Lm/믨DwG{ƺJ5&?jk[b-Ck/:]KA`Y >UI}kĩ1Q?*jz[KomI݀p.ZŹn4yޱ}#9@>u~PJ;*ɴXd8=¬6%K4I4DN r28K7A_f(`8]s<R%wvzgxYJ4jޡrõoKF#SɃ<+q4n0U%Z]W[euÎղT}\FinfHSs!kum9Ls#MRwi`s-׳w|<cqOrƯ6B9 Tjtt@ +rNGOp [V8Gb+dm>Y32c^8&V}G +ydW 2̎USp h[z#jTy⪥2*hqTfUb.?p(ZR)JR)JR)JR)JR+I?lV_k dHY7KyoR3ߑ}k Fa; +|vD D_ީ[8R~~UlmEwc¾~(X O,m[ETIx#FC_r #ϦU%twDRlx1qbحտbLa{~yPa@p? +ƾx̒&3}qޱ~sVeءEg`[9w.~Y>Ui% +p>c >+``;BUwrHkchz|hs/@ e]ek% IFqR|;ˡQ +ʯ5jIC`Yw=b|FҚqq';`8> {Ea֫À[0"7kwilÙGU ?Wcukm#G#EH†eP޿]1Ԯ!LjS]m#5^K=ŭU0ϑzqA,O1w$qj6Gk2YL6IsF;1a嚷yzGqsng9t+io{!C7`j>EèK>0Oym1//a$%Ō eer$ո`8ku%ofpƒ'$+9bD9^KlnRB@5|-e!"RXVvw玈Ry=[A'[r{7%0,cYW +v +άMťͱE̲ s7:]閖 [ߪ#,$x4.`\l--"؞7,c$lL_dиK!<Nesg 9.ޣ=y/V"YXdt}?dEL&'r;mj@)UR

    EH`!4kB_➑1呏^UmUJA Z} OH^<.;v65xU DE +=b""&53W4=b>GKE'z3$nA],,x_?YOj531F5*FvPI&v*d׋ӰnbW8s@lD:e6aRO2_EOE7WZ|PɎ<\{+>- ح@>_Rd._~^E+Լ">R$lΝ@\u ȿNZMūU(zU}Ģf˗2 u;=] F +KߧI@UWg@ܝV[1m$+ye=+/{+:22%ڵ]e-˶b-Cr#S^Kaf# k84L*l]l@ҍ_*ZrDij +$f"$.^Uº gՏSD6Nq"? qd5uݠ*= jHuG":\W%װm|7m8rIz~ `s=]vt9*y:8}et-x5g$ f^RgNZv 浴8&oF/U7Cj)@5z [>K <[j-erw6+]%yOs\Ӱ>.Iu<4Mɲ#rXI~IQ +ly|$lNo_Mkc;Xyyw.\ywWn;v;][ת[wPrpU>'WE~p쩑4gjB;~[=n7tk3dZ9V^*ؼYKk06#x|m$'GހܷϋѭX*@`6T{%-]6%1~IK#dyvZ !TXc|ֱ̍_? #rUOEײ2,5%b;h[=>ʭndHd +r{aA$ݑMkԌ-o˻' +G^ಎ>"McY.pV ], +v*C hGZN}P#. I0}8k/d/x FI&O xMid~Dq4Fl h7IOҕjl +ٜ% :MKy7:5zܡҙ:"'Ŗ-*YI=ށ[2]{ZoM|_9_V6yv>ѹ~@""""""+:%@.tJ;]!mf޹CTYgoxooNnK+@̚ nOI,_s?)}foX:Yq`~YUoRZHmcMȯåPI:'@|̄tLw\+Iiϖig 5nPhc.{wmb)!28l,*دC}){ۙ븘U+{!bI(2Ql+(*G3"""""""""""""""'T*r;:lOelRh6 J0A B@v>"""""&ܠs:Ue֙ 끗"إ]C)FMw:Ř> ձN[`+Oc#۹f&%If[r3dZfj +m eOCo6G63Z#:^HV녝(B~~3"&ZhC]]쪚,C꡻OzxF dmmI>fdyyu[/U j9*<{)o)ĥ]f9j%aSh뗣3ypmB]wU 6""P{fdvJaX,eDmwdOpgrͼk%d"lyM""&hdu\ ,r-`uM2'Vɯ%j Zvk󖸔=5eTPF4[^Wrzؠ/VWuJ׺X>o$ͽqIڝv'ӗ-|K.`*|kw]K``~KWjr5M"""""" 4.fu\vgr|$X> +ejPH$qo"xחp"kbu61z>O moʷ>2Z6t~򶜐zOR G,w{[ mVT{ݾ$S1r8RmT_TWd3\2ryS0 PDMבzuH?6" ]Ȍ{WOѹٓmV2:2fQJ#$6wE YCCdb""U؎;/0ⶱ!Y<|kr"""k8޾oZTnR'mz͊*UF=""""'EG6 t6h{; +VGO)Xw۞ҶUAm0t&_JԄuwb݀d%fcS11*LDDDDDDDDDDDDDDDDDDDDDDDDDLLϖ`}ADDDDDDDDDDDDDDDDDDDDƦb|r{ w3`eg'Q}oz /9&"`x}fޮql'(oYuL\+Dg!Z(t`FG>iC紐qm(˗DW=A/"F85Cܕ): 'ϚzCɩ*،.""bQ3*Q"Y֥DDrBΎC-vNJf)Zʪ(=×{ȪFwU$}Ϭ> {봯Wۣ%DDO #_eJ/c_Ա|/&£ϠLcR7,Xd6c(^$|%DDDDDDDDDD@^wgt-!q=iʤ;v>3àV_X9J .P/*9rb!Zrod(|; ?S}ǠU5DWs}|{)9&rroȩe^~ +;þf ?DhmSB{:< ~NB xܗ> z툟]ꕯ#KKd>SM% VA}t7f&c. +/}|>""&Գ6ڋe\Gtu6`w3&֢,T.U6 l()E\TYf׋[~QDzkԩU]KQbU57JUj=/]s,Fr""yߑ^2-uEQBL׽˥辡bnc9qkqhM""U8% +WmoRTAA }zެ 6> ) LffPu,\e޴<]jmXB}DDDD~^rl;|JUGGQ"u+R Am+ BN I/7em[#Wmk؉$/(zU^7c|Y:uK +W:~#zɐ02'6>WV](dϖW>g CD[ ?|HOUҩ6ʪ6tL=\*H]=""b:>uߤxvUEK+SߟJoPGs-K<+k+WmP#c+#jWep]MF@#߶x98XCס1}3-6:`AttuU[7rQI?2n.4tGD@Tzn}nWfuUETRt 3:gF|U9)I^ǹ]p`7-h~sKEtWeOZ=LS+ LXi=39e/[ +tɢx wMGPF Ƨt֨UB=45>-(Fw:Udڔ{juxDJ:#`Gղ8׉]m~$L +@'e/לzK' 27_;'"cc) >cF?O ?6O:n};z |[ |D qkJU%R_|_Q/^WB?Go#UjU;.o}>OOϳ96 zҭ;#ȏWjCk-9#"QjeVPJ*`G=6!:{@} E8w{Sm S|a!I{h=Jm+FUw{ޑ'$.{q.k`)^^26̌jѫy 5iC_Ggӣ֞ J1뭴G%@^bQwQ±+gA[ {}?͏ࡉcߺ ywQo%/w:9$[hA =+:*dz*ꕝ m*C־.XQ5cע[Z/GrOOM?LzBvG,=TjK1x#Ĉ]VY&;֥0;w}YU +:ʜkhXl-0#}<.e>*ؗՍ@p*vLxhoa'`[㜕)^Ar|@E o{/xX2m.z6MfljVW]GO*n65gdq,8ꔚ2:$wRy|VR| JQJJ*C,v? _Qcg!ٷ|b"""""""""Q͎@ +t;]::F p\?"Czlq-JС{:!zץ*{oEo +_.[Y3&0ĺz~ıH {vuԮ5@*j<1۷iھG%_*xEFv$ΓK;T?!Q>u,Zn]Akv}3ʾ])SY)% CkzĻLLjmLħľu)o}ǤzףX~Jl @\xyz>}E"zRXH>(Fm"ܼFeZ̷@";37p[|v k~:]oZEY5O-Yjf"bkYet N5(ygm;ߖ=G'.>udUڳZ8FtX|^JTilvU<%ƣB .0릴+mP\3V}nۦu+7#[՜Im0Ǹ2cS1(Nɲz{'.̹ǭ+_%UQ>b"""""""""e sN-K3Ll}WAȝO:+eWb%eR4'Cgm Yq>-Vd`*tH]F qc~/b{¶]7&p\ Ҭ"[=֕0E ضD |5{*oz1x}R{ u0鮔h?{DDLMk=.--ib!A=wפtӼ[,o=k$ }*~S'R}Df1;*=?i+W(e$;Qf"a7LDDDDDDdWs"""""""c mKr8ڰ >s5ֵ(Uvj}DDDDDDDDDDD +endstream endobj 71 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 24/Tabs/S/Type/Page>> endobj 72 0 obj <>stream +HWۊz'3++ +Ƃ5b̰+ ҃yAOw^"#Nsyqxx˧~;msap<>>/:nA)3n960=ZXiņ&ZלH +?ڎTg9&#.7瑿+@U>dYǂUTA\n/6Ĝөܱ5 UŖ-t$Dȧd>rk$![s&hsdD{Pr . Z6WbQ%IXaƊ2eN͔Y^TSfuB[5CA^.)D`eZ清!KH $[7eYOo_~d&%NH耴s|K 2eoNĎ:Q ,~;{rh0!! &h1x 0!:Z@kk]cc?jjPaH< v.oĦ_I:h8Nxat i2C 0_Cp]tKiJ +hYm9sfsxƢ2uɅcR'XQD5A+^뀈o_b}<6LrP`JKhCzf,Db??|Tyk8*$S H:@Ýw4'%S78wc. Ǡ +_W%@vQy:IM)}bD@Oi)T(޸zx#Ŀ]kc͑`75FW3tbxė:ͮSn9`)b48 4|JvW"+Q:DF63_s$%6b)#l{ +azɷBD/e5}x*c :,(8ik]MD|ǪȂ2x.UIt6]*׮fիD ,0n"4dL>mщ\#Z>:Alw3DU^2..NoP:?y AS;P_>~qeWf8 mxK^ +ڟ[AؙBkFlBVٻ0L_N9x r| 7ч_3jɥ$FX+As.4Ci#4?1.ں%fFp'0`Ȇ=-]tQˉ@ 2΄)nR0u.eD':M {`'2H9OF<a8E1=ĝ,$%үŗQOl`*f̨nU괄i=&ljr@I]-4kKIz6 %=!QxA [Z,Y{jĐI\WI +d 3e J LKfP_UU8<{cSeVs A&rUi,M2{I"بz"3OйY4> & <\e>stream +0 +@&~ +]:Zs#$܅*'BA6 |)68]7P.yc8$<5և`HUOv"iVzk~!7ClD7v@vH%bi@Rw)y8A;pxk OasD>X}b)QHy-8Z]g%: NErY_iΗB_4ܮfO&z0[%GZ=tiHOqӂwfgD641A{"TEOܘoزcY1qyHm}J*R눉\cRX8} }2 $syl6k7OlCD\vὓN}B^Z>/wF 5"ٓ~S$X,\l٨+5Ґb.oTK<(UZ'^=r#SIh 8LJ¤m[<ݫU +2rXQ)0|Yb =Vڡ}FA.(m#Z\|j$xq^~&T6|R_XNԔ'˓은{ҍp5>WIp+6qWWqBFT0Lze´6bsqZI.GfKyQw1N*T5:cTk^߭8ST`y+)s3mI_ciy )]q +:z 覂P@KJ^ÝsQK#htfDeD;?͛_┥tÜ2!Ell_Wu]tnūn ,ihE3sǘo{<=&yEW@tFso`3g[6I A)Lp$v=U`xBԘPto \p _1⵵cjdrM:JT25WX`ã'm`@L} x)Kݺhp,8IǮiRj_ m?D> UsK>',ar4D]* +ۛmFӂvp'nzm1xjYB|,tw.yDU0짥c6<ݒ6?`yuu޳K7eBp;gz~ +iodG_Q+J'>q%)f;eYveaEUufBhNsµUVʴ*F[*28QZP1* f&nj, C`/Cڕup]6.8A]{_ӓW Z:fR`ZZ4y2."j=kj6?Pt]ROR%O^/2^f)'+w mI;F!ʑS!DE-BHFg(Za zAsV͏H1AcpL7~-]"b6(:R/+!F/fh+4ĎvM~e`# +O9!5e|ڕaq1OG+@szU$̾+إ2 w=-܊ + f@&\a\BON^(?U62uyL3LpKMImW I$/WQg|,E+N8D)%@燴6< zLDj5׀=,oN86^[)kK'ٵdG'`xz9vBcbc7XJT7C&9fozQ> rj͵2}n +Xk}H͠xVUTvf5Qʱ"jT@DpxXgZPߘ +ARsdMIx7 +4;Rk7O`R\O + + Z&+/ضHLU ܷ`Ai)pSC_ 1uh%|(D>}UFe@=b3lg B%* zlN@@OpB~USO LNƯǒa6qa IY4myl/f(6|[t " 5ٰ4ͯ檘d%ioD]IDB'Ba6?gʴ*WU Zf<%9\F0 鑄e@tJNj,t#R_e=\rBX8x E8F<8 *u+ +'c +V!>ρrDzTs*/ڡP'hV@cg&c}tCqW|Ժ|nM`5]=t"T-:w?8x`!v^ #"14C`}KTbSکR0`@nR:'hcHO3G~ojgJTѫb#Vz-qi=Ud/+ܷz58:4'a1v6a.cz.s!s"p0X*FDZKRPfi$iFA~]^ shB9 ~y6:Fu ?\)J>#6A5C0Sli祥ֳ)e@풱fVƈm}/FTȲ*BI|"xen<  v,`PF}&O \=F3 2m)h&6Ali{6cS 9Iq1OjGK\4VH{j6߿'hy%"LIXrgt4 ]U6{a[m, <ꕲj pnۺ@d5#me~-ZAHFJ gT{[ՆIUi(Ձ);OEyP Jѥe?Q5$p$GeQ'7oWU_r`4suk!o_EG>1uc"52ub4) ƴbbX hLgAo8Pw1 -@}YoGW7$e,S`A џ4}\|kT>x%lTQ kH`۵B1sHCr\\UjSf:@9\@n`_Hm`( +[j;.& %))D&1#GnSyrb8 +B|;Nֈh>r~56ao'Лn.%`M$_Ef-0iۓeso'W2!%;Y +,tCHMnՑ|w ~ٵ}79y"eF&xfu5;6F'%z-8KA{f3}vrNqCv"'a6enנ;jl9B[9Iμʁ# +Ҡ{,@:($vc-zA]yq7Ǫ8B 緎kmW?l r# LHZ]jMZFP&:G bWX8{nst32+IF Mdn~a nFD|KVĈ0)NH5I넛Yqƪ9Ў:AѢ`;]nNz&yd+tni +S5\7óO?@:&Φ6{2`Q@:?ۢz.>1 1V=D†8YC4ӡWF_!4GDd*mˆ[D~nst5{6(-/ܙ7}v'$ IW߱ ޕAC\l}Y#ȗ9H)z \;ܿDs N'&- 􀜻Ҙi݉6.-1ߤUUӅ4O@3 }GkU $6 RbW>p`ZvHZʴXot{irHi(Pɨ*ݗ`b7=%X&kl!W>_"hod\gѝYMev])?W *_F$-^w.E)7Mnz5nL}S6I9v4iYf]uagQnǺٜ#^PuE*MgHRu\+kMr? #ΠjjzY4XhUj))Sn3,X/<'Z*nfVcEjM:zM ,׵]ƫj0Cd{y=5T +t3ʥ4 +{.Jz2kCNr%#4ezvrg)V*:sx4|)S\ף}xUXcj¦,uKu/~\s-o*z*oPk*nubFτ0L~Xmhr9n'ſ FX?蔚~߂-+`_9u;^RZte51ugMf/arW Ug$9 +^tif*7X)<襃w]1Heٿ#P¤)q.R+aĔ4Jӊ&ԇSw# U˽+tk7r^:[/]-K +6i;y#Dz^b]vKq)3ڑ[DT~TeVrc:cd?{Cuzx<^*YӥЕa}_~l{Mu8L8, [&7ZňK3e2<nQN w% ƛ""tkG)=tS2$!n [.KZ͸Q@yZ /e~gp !^o[ۺ]ydJ4b<@KMVm^>zkd[{ۭJpI`wQM'MmKԚf̭>RTLN%uʺE?YdM2pʏ}ϑ~9.:V!Np3>3iӂpa}PL4K,Z.D&u>5?̩]E*P!oza?brӭА9G3'8RMtIW]o^U"4%YzbF-(FJZ~RnR*| 9O:-:}"WjQ +fcp ١fekZq9jZ̨:]I6~:Z DECo*1*94ǬZ3/#8I?]p)%F3kGc*2I+ZĞvs$ +r(nӝgVCDcoU!na#Ř^Y'Pw_:R;ftbH},2|jaWҕiu\g"&Yz}}+\1f$bteYBDZu0̀_sD'52oI/Pl S k7bp^k%êS%Gv;q$F~yU`X|#I.CO,gv=2x r.X?ub6dF/Ֆ hmc%* Mry\xe%d;^K'`avt Uwދ*oQxOLm0|iDO5:r⁷ Jrr ˂I5_h, S5N(yIjxzu"qVֲ +D]$zkݑ45nz=&78G νSZ(̐0 EnPEL^5]~7T)+> 8٫>ӂ2?d'k%̸вpq+AJnʂ?+K3^`}m|6D;U&r \UGf* S;.=)6HKH7VN=OV,1 0y*Z+f;{>xc@wggtf b4q?ώO-0R wҾvy6״}x]-؉|S?=^I4z44~ZK& [iэP;l/%1X ÎԙsZy5OM8Y,):byB*P˨aYɖǠ3Uh鵍4&Մ@jؓO"BY,߄Fg +OVhS./t^aš +o;ખ`(mx@ۅmu54g#^g2A(/cVe_1*$&|n?BW0Y1"n9pB=Rf,+-}~QR?W'pM-5y F}'^oALB s>_iUCa зLzhT)M t$&WuX)N^yHu-/=y6t<Ne4?bo雌rɔdpsrJ:?vR.Ͷ1)BAlX9ɨQ6vVzelU)i܌SWA/TDkuS`dIi~c4?K* BDM?RC?P^If#ýhmEQs}%_\wVE_>.$Nb1`1#.~o`t+WSn2~S4m(=㶴~SRʲ#1K2b#=Ni„òݺ*e q5`R1 ]OiTF\ۯP9è#_ ؋Ta!I5(Ke_*JW`N5hpO .h9o\k" K7RɸOMِtIjqs_7ҩeX:> +ܐ( ,Wno;mpKp9gش4D؊xY1}2¢h'94WvK g紲!twcMDV5-aQ'KјyܻOBWkv`!4>kږ#>OAH?{ǝ$ A#Ά?{hN6KZv!$9c-ǃhltqtA]6ӫ os3Efk{V|$7 +&`bٽ[b[EBPaHg29c U鄳%qm$$dfBaWgfQ Oe(e7u%l$QݽTFLr.Q# +'yxlсJ1hSӷqR:V[B  r#n<\ޥR;@!-Fgs=}@صk)}&Êʢ,k |GQa[90v(ۡ*"etmN:pS#'ͳY=s}G΋pQa\s0~ A[J *ϧ&4O|hVPܾhgGOvwqJyM!֛5V6nCuhmJ=i3cMtvklYJA*ڴʀ͉o-1/ bd5mgp4tEcϨ4 Ǐbyc`r\dtDž@NO+ FQJgeORN!8;~ϗ-s[,"3("$$x&Нo%L$7u y SΜ)㇬4kz'fJU` k梲sxis͟X7e`YGYXfDʡpCgYD/m u5Xm*`g+~K"wI$_KF]A::~ (!=̹#PBkXrwt;ND1?Jmzeˬr4|@#'iAB"a/Yw<>_sԻ^`_wxsNZ!@=t&Đ\{ +hP֓햒3v(4zN(qeY +/ Y䶊AJSۍW{qs8H}m2"gM5ONyyVu|<)z~ձ03XkgwQ˝no^+H4+%JhB|)aA.}/-oa +Ư,`͸'?c$a}IÕ%ƉV=Z9]C  +]Q V˸k?t01h<1?R?Lږ}ᵾ +p=bCrgk`PfR9[Y9X Iޤ@SB~v;0-%@&@XVhy fC1I/BT[ZR n\3͠RxWޙ!.ADa@V#n[exl7Ɛ{XTAxصCp ҘY|/>x QR#7 8&AjQ㫄f˟^4P6ac y'@7Q =W!a>w-bofIE8 }!'E5+g9[+RY*B2nk) M [֪\!Dr 'PC\uL IX'it'EwNB&c¬ޣ{~ V㒔57o3-A2 eS/^鸻M{}tC,(Y\MtIؿ# (c^M+$+J+PZ=[vR OC#ք9ΔrU,p~وi!Rb2;fsZ_|&2qDsfc&[j"dTKp<t\"G.^I5T_@q<|SKH0RM~Mk;3#$:&ix2=8BT4ڀH 6u(1;,Wd-U|k[\n7#@;l!B<2@e `9;N6DH&r GdC 夃"C*lJXL>F]Gڏ_n,H2ҿÈd/Ksi\v_,1]bl?$§*ea1Y]GPq}}s|tr`- z@$ۙ:rR`jO4<`&@[t;y.2$"@iw؎[Q|:@49 z{ɼ(b0#a H_rěROh&A,őQӏ_5+wc1^0|~.0MWdD) OQȪ8` +Mo.Û.B ;zN uxsQ'Ce|^)Q" IoetRgVbH gbك?nOqxܒ39M4ѿĩ1.RwR(MSsFƃ.XVvn In»i? f'9Nz1V1|fZu4.i n俆b[V֚~8:JE+ 3W2k+9k aRCmʌ.BT9z Os rMOsTg\~ӵ ȖLv +4dҝ&PߙnEjsI"^ AI&1] x]qռzvx\5hZ QAl#[5n-?H; |2mr-״`3SĆj5 mK?rv%JjzīvsfGQ(n&H:jhă]īi+oܩ +Gm%ףe/nfxVsS2!biKo`61.M<  Kj3GJ݅cňXĽur"~ԁ|ŶqdYLIqK(xz5߯-ָ݃vULQj|qG +3gc[۫M-̹m*n"Q5؏,m2$o ڥ~G|V,|?Y`N7MpMvOh0ޟ|تrQ"6 9,KQ.Mxv0l>J` %,4ӭ`:;>/ſޓ%3E%Qa`$,;1v]B foM :1WHy&F5/^6D` eհyҤI \z?|yIՄ*I{{aŗ!Eq&FgU~~ߴ1,#>^ҋÁvR9m%!Ւߨ۠%f$EG"c ҰG&\G]k)U16|#»baTXO^+=Gv5f( +5TFӮd$-0M}Iױoй~ !g~=OS8"%N)G Lx`.sC~_ChPM୅;Ce{D߳s[b^H,u m=4;a%gy VfAsB(`D8z]3 ]2Y5ˣ;hTCJwCexEAO֠: Uu܍ޔ0ɂs\rw% +s fsWI1 .Jmt:07l=9C!rGO r.s +Pzf@D1}N̅E lmC0rE'AArk4>p&49Wvk~l +`dжn?Hsی% ANٌZ/%fc?L +G>+IxԓoxſLq@Tgkoc)(+nkJd"tއٝXy4߻lu9Čj F2z/Rʐ?+ژ<ƥ8)YGdƝu/eu}zplL; 0 +9)ɸm]k1 kީȘa,ӪwKOTVKz~)ZH27&ېܫh9?ہli۞>U)M5|BӖh+J{fy8U@<\X\Mk䜵#m{YNio#+I ڐ}3p%܊oZQN;d@pg i4BBwf$J!k@}1r#6K{0 +kN]Ix%J縣b}HwQ+VIkMP*㉡!ܰ$' +^4HJ}$l~,D*韕Ό/fd8lЈ#t)3X#A|<[„ЩP3,=>G:&:1)~a2m @ _'xEm|7HJ3WK:n= +]+ w~ ]vKf3E&CS,,ӭ[LJY$bԩr͊Zː|`=CcNS2*!8]C)Ar% Ϊa`/ z_1`!(O9\Z7N +ջ i0_=cHǑ3aVN +rmdn{ᾭRg10,eGr`зʿvt nM?WE!ۅ?-&u8uS7NI9CV%d}-%= 5km |xKqۏme?*kqOk GilSPn%$|We +]0,V20Ɵ}6ѤO΅G`*~:JrYt +'&(wX3_@`8yyKM0p!AP*lW:0pV,_=c:5H[/ʓckoFr3W2rfޡoKі@is_sf$lK8"lh3LFK3Yyb-QK1D>:ؐ~8@HZX3 3/,L˝qpبnꬮ\ρC%FBpjDziV $KdbQ|G !3xĶ!Sn,%UpԋQ Sw7m<̈́ôuy*wA.lqxգe%h+:qr5{㱞Ye;cl,{rNzAΎmݽDm T*Ze EU:\YכXШ 啚Cs:8/);!]n{y=1,}w[F2vY˘x]e}ŶhޜQ3o=*,~Y{t- OKJwP2NH RVS.˲dFj ~^'ʰn 9]1Tl*JAu)14DQϕdi."paXPgYaH=R |Q0毻 +(=X֝:zp Ə6=^V@󝝛Pk1&t>q5dnvG;a-1ݮm\'>v*&}+SO$EXWԯԸMs3qX˻{?Qݍ +wʱwݦF3]m)>Bf.tlіG%Ww~RA,2'CYXK!b$~ĪOpmvS~2ӶLx&|tJ9bUw, +}ewgG`@bkCVW(+FyQȑ79 3enL tZ]v41Fj:a­TT3_d~ vUnՂȅ7_*@uJMnt6 Z$D6O!ox=Oۥɐ>1ml +g7DQ j(9!®KU+>L[L`Pw-s'XnW:BB&7R&.??>4._"`S,Pi-{Mj  +PZu1x)dIpo8DN;prNۍ[ކen*(QQv.zհ]rk (^)Y$4.EMz`:By%,cWnr=$:$F,/ NL1vvO8u< +ySҤk{6ۧw{Z+<q?V#$>dކ=3!4YQ)M[Jr:z2M%L8F7 ۦ#U*+rS3l#.!WM66 i|[fWR' C X#,mQ1Cdҫ-VIն7$I)#DlWJ[ŚDSF5L/QbyX媾+_ɳm8ڭ(id_vAZeG㼫~wӵl?hngıh9(=g&d xY`)l(m8;+T4|f!~Ր M㪱ҾoɿF +I OPˠQQ[4; yq~^5vaةiYbvF[$">u%9߆fkʦr#̇ v;_Z Sn<4ȭnd^N\T4Yc$pYͳlri @+o3W(1\`Sg~Ui\$Cro^KpN)麩x?䤸b3nF &.uijl|V1ƙ b7^-ف)U'2~QU6>s+˫z8ǹf;ڀY~@7ܹ3B3?5&[_8m6" G1&l+jcs2ixB1[rbDF+~K$RJ3BUg$y~`U ; SOvm+L_dP@-pܱ\B? Ut:i8Aw{Ϳ_蠛k a\ibA?%.gM '%*5DZ7 Pw`DUm[!T7!*f!fn"ۢ5+n]ˊ)3 xRw 9!{=>RbGj]OyD^",Fí xWHޱ + &e@9`Q'w"iRf)ǹJ0\'KZ,Zm|c,Ql\Ī nHX5G17ν(>lH.]OY)ނ G8P.lz[aCIQ犵ia^AkC#hNAs0qsWv2+\dEX>0|~GģaEFIum+o#Wq&UbgVDmf& 4SF] +Vz'~kÔ.H[AYzf N"Jy=IFz? $I٠/l-Ḣ /0zܲC}+89^ sߩ児ڤEHw:gp*DydMkڴ^A[B6l]Hj*3.Lu!U 6$Fh*; 22 })grH eCH= +%qe$QFa#;@+ݮw5L sȲ25 +R"JIk%HkWP^y+T ^?=Sdu]'#5πz1c+;Wy.[/)`MBgKxgllsмB2T5pOy G_!Fïa!al)l6ci_´֙&&Rxh[$#y[}I ]UQًnY@,8dz`˦U h(t?.ꡛTGi;R[g8Mh5Wm_=#˝X'*.aLJu]RZ -~C) F*#]}MK4V1;03m(ZCfdSH.=8L+^Թ2X9 xʻ()$-#3s@='lc?FOM08=ԫGT0G=-!a6+|! wN_ |/dFO['zX; ىrIu:7Arsr ', ho-K!;ݩ*a?*>k`=N8[Mx-?R?Ng2Fv D +M +%! 4-0,y+|! @dCUlPe*ync?vw@|GE{sIZ$)ٿXJ13I][jcITvGbT}%Vg>KTƘ6Njq=_"NhwTQ㷂s$!x1VHfjAAd2nO_,w"X]7~b/MCWcDxC׷|X*h=R/!4pcP-W_ATd81q/hK-++^_}tօ>v>f[|YEMH +x"b" A]Z.)Bu*#(R~IȇcOpnP9塀D!/Zw} K޸UbMZeM5Z%L oU)–,UrARAuq~R!4_R8<.D1792g<Mk-2`ISp-OyAL +?~BIoxXQhpzl=#M/|2 [ !#~J$}fд̸:oJ V!|˺!! xEOf{M`Ds]Mr R3ݸRָNUqrv"JD"@c2FkY3=y][AHiuw/D@9|>pڠ&! uW3H`(U`Q\zn +sSxqҸpp.A#t|E))oʣ̓:r~{ca~bvW"LC{Ox+O뚽O?_ZQv{KԵ˅Ig,g_d&ГlNmzB}չQ/昈yN۹4Y:SʄxZ?Tl;~$3?q²NAC[nŠ,"1+BC)*xj_r܌qHK(C^X}PC2# +H]Por-;򲈛k%iG$HLA|S>YDbV/Bٽ % +QFyEe$ + G dϹ"|3\ɟ=э*#TNF/~S.[?z}$kapzK*uu,}#\2"C8 <ՈKJ-ΕU518H!G O]b}rg85 P|iH+Ɗ~ $j;{ ĊB{<:[fu;lDT,ýUj$i%/ KV?.Y5nQ1e_'k0h#qR>{6#n# ozg!t"㪵͈D3űs;/OS+t*iOar#b&ĵ2dL`w>ښ%:'IzK'QRXyl }f<4, 1!˅=lpȲ#jV~nqK;Qj$o ?])X-rYdۛ|7K8 nt?rv+耹[r"A^^"f8 +IdΔƩMBQÀvٳ)0z-+moF*y q[,ҙ)34"({P<' ;4띚Lc@ :"9x[ü*NꞦՌ1d{8vJ!:P.!I!$6~^eJKSEOv06‹cr}J‰e$F/H{]_S2؜8ZX޼ntکQjvOYAERyoxilDR(l2b*F"w-4ˬ(RK[evG.%X(/ސ8~PEZJѦϒUerIW!'#+]wK7xDߚ!dtg[^5^ #+OLE[~3כInW6yLB~]HH_+ GKѣNaǝ xMrZcGVn6,N +̈%T8.ҭ>5ÓS8͎W$C.-\m.]zBA.3sD«w3ǡy] ;Jr<F橧u\hM*_4\17(|;rB5K{5^1Fj T~{최R4t^yef%a$g8PҌ^+Qltqց:rЧ-JOe-*X42F60 Xy^ 'yUc9BJJ+R>@vh3ڸfIibDfJS뺢MekߏȐ/S_끹NF?MЃ ; >XgQ5 <0:lRVZ ?^c.mz=vX # +arڹ _ @*eJ!Pլ&:φr-wbWHwF1|eo5lOwQ>@l}Aeڬ\~,]:MٙmBx7, +kK8ZdVmdh\Vqhlg]tsW%*gSH׮Q>wtSOg ٙX < 8d( ЁGi$0zn(iQcY= JRA)x'H{f0mg %+^D1cGX\$y?EF~Z49hNh_Uu66SaX:*WT5,gdwuثØI*D$YY0+IQmԓK|ȉwϖJI['^l0\hg. 3|S\, azeՅ]ۦTΩ*moyTu$R"y-; x[̴%c-lc۠:(Y#>HO@4[P`^ᘈ?-̑mS<'_S͸DY}+;v1b"=Cm/!2>g7]=k5P;Vqv{xXlK{pnÎdB ;; p \V~EW s(p~P<"URM@MzmGp ,p^ ,>K'|YP0n bUq"b$6ܵG=`ƚg%_tm{@F[T6-9~KrRmx{IIn"TD|ۂ@NkXcFs%"$ -8{r }K?/>[Oe^](H<@P TSR(Bƥuƃf'q\ LiJÕc7k*2 +97{/*a e乳K@*.;e+[Tw}&wOt(**f>0 ؓCor5[0<'MޚlлhND\DuƿEx +x 25MZbzuGY5l.]}?ꖬ  Ѓx94fO]Y~_sjAS |k-lDy`ap>n`}}\)W &gw/G^^~94jl),Ȋ"m5(`&nۜiS-jl,k:ߏgGځ  B}ZbMߩxu#҇f:LJЄ.^fjM"84Mo5q4S.^/Oo# f>b_͠fUH blJ›$zm\2M! Iek[*64f6|sT= [=}DyZ/Q +N?acedo*8^>iǥ" ]3d4"o%}Kx.l5yHҥ'=1ZS;;$쥍PE[TqB&xoxwҦr5Mtl*˟C-|k]:جѻS4 W +8 V6n3s>S')@ ]BڭUm0Y ::M׃ +I{MV`˸-- +o+nN4ރUF:8a}۱4-i8Ж Jѳ8x@>Ta mߋRLW2+%_Q$zЏ@-?Q{UFNW(%^x7j9-LuM^& Q`r*.Us ѨU${cʔ,K*Hn9568p#B1v]>i^ ,bk 'ORͥt\ZM͝82aڳ@ +^2`:@&C Mtx\$wl]O똤i;`vTKeta^ +ӱrAT=Ne}]+g>?*1j|7H] +/Gsb% f nFTT`3Oytn6c|(NC<CQ+yYF^`HP[X)*XqmJYI-C)؝9L@A}O4aQ<:juUfK4~iD3h+o>ԍЌԿvb8폡Iqp;Ld ~զ`4L|x&Bݞ$V:mFX!qXx4T!tRG/r_Dl"]1pQP+(,8S֍udY۠7"ynCyv j'\i0q1Q~MnYbpNpaKvfxN\ёY:&YTo4LHb&޵Pܴ}L޼C ߮Fm<4ƦURYEt2kGA|Fc!o00'g!DۙTS$#/+^[R{VvVKt:D6 M{05gA1MAdA4-SdJ"K(D߁=5f=jގMB>E`%@v=@S&gPf$`-'' C ITcOcQC& ̾v\7UӫU45Kh(JqwwQ#?/[E~^J$߆EoTT_ v\V?G%5Ͽb!(Km̤OOwx x Ŀ>0y=S`  6@;Z.g΅]zqdskk^JG}v췆y|%Ϣ.2L^#4{R:Cˈ{֢1g;E'd7Y\*2![0Q=3=-TeCRg]nL*Uk^%oceb6Zey¦9&R^- |km~ΫBH.ԫ" 힎o]D=͹}l= +ye&x8}5h,$\ʗ!goYt{~Ak'B#UND4 kOh{R]j"E_rPM"6q!m{6FiL6 x84~S {3|6s!FJoHj +'ݜ#3 xJhmBS:UP31F2V"$8=5M$7AN,pVU},XЇ@D-:5>D)(jc ,RaOt*@LE*,_=Y{ bm^baE |oHF[~Wsg/n^3ά(o{Nyc55`/%Xh rcSӉ9?cO?տgqucVNZ'6tR)1HZ| +"]` ʰCV%ZC8bwv`%l~tvH[[/3k䒕y/ +7tCzxTAxN=_d72sq/}vXL +ViiCRхt+_٦-}Y:ژS;Ȳ$ߝt ĥlv)\%cryΛ㮚%~ MAQ[C BQH[.~H@1[ގKRy%fŏjV<ǿP(ǩ>dzuOŸ%œy)wvv.毈-]rsgw,ܗ=h%OhzxOz@Kcg+>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 25/Tabs/S/Type/Page>> endobj 75 0 obj <>stream +HWn7}l$\. d)V8n!!r)A L.s9s8\r{nx{}\?_۽blb4kAڵ<ٵz8~~B\KX -y*?"rt6}p9oVrmZ]Gο_yJm>Q~Bgs:D'p弩7.9Hv֧K +ף1S +!N)y[{Vc Y +Q1zmCiv>$\+ x}Bܘ.dmk9p_OmtŖQZЗ,JC3CE~!<т_ +6W69mxːJs{SJJIlAP6f6BfR}>.'+}MiJ2z+-߉FZ b,mHl$Ecw3~r#w H $u Arm9)pp_?]`# g~u(S勆E +,v1tm"]9k3Z_"a'IO2DC*"\.!ҁ4@R ,ܟaS3d)B$aFwBzI13g fA`m*4&Q ԄsZv&gFZOE #XgNcmvƹ%IO ʜ5&TCNc!~UÉ8=ndnZ<#ƃa$G4 }\AΩB w_o=fdaO<7XK-]Ç̓O{{uK>DPr/Gc$-xr|.4>ǿ4 Mh;RIa:Xb Y~{:幰F&ŧc( `W +e g>I]k*ȧ"x6'Xj𙹶Nmo"^ԑn䱿Ag6 Jfr4zS +lFDGG\= cJֆW{>T5dYn߾ iQS2Z/ִ-E@vIWN`jVn:y۝~AB*%M5- N-#u뒨 TL!J@{u,U%JwJW#`GupY6߷R47ZJD.ޜd|H3b ~9AI^xR{v| r)GuQ[7Pѻ*ϾL$pnDz xL.|y#/G$JP”$75 +p15 86Ȱ2%,mQ6{Emg̬!+"YoVVnd`CVM\],Ãų2Wж+ lsݑț0&>DtMw "L<1vLstnFR $X!p^őhY4l:Ste5@d*R'M&@1ҹkfۺ3Hήrز}q~ nQ*us"-+Th:qnq>tnno?=&nJ4FpA =1%J +endstream endobj 76 0 obj <>stream +0 +@&\ +-tv OFtTT̓?(߳̈,P?=7 s?23QSD1F9v[$?Uȧ`+B Vݿ+؃4Sl@ہ 7?l;zDz}YX]K5:N뉅I]I Ǿ`gBJqX-WA&\?6n&-L/쪇loRCRْ_ +x.K ,1v!7bȱhUJrO?~ ;H.;%}:כf췷, +s(pk.*'ZJmmjHl-P*D)lՁN^#]97|5jDгm^sPMa̹:ʚ&3F`խ2!p]6;!F3UYcUvI,J6S)*+Q(幧3-'OTϪB~,SK̛\l2ɨܸT"`  Œ'R(p/JĠtU{#L/+ZuREۤvQ+][4OȚJqg+ ժ@Ks,;Lz~ɕݤHۈXDwXOM|afTepΏ +C7Uܢ0B +ysJ01fWoםBp\y{`RCֿ6`.G[ K2Մ+^h4RV tyYK&Hchg,E#d8+h1F A D%rӎ8Xd̓ˠ`EJ.R=( LϵC no%{-։rCL :")Rd%>ol*qE!0LTydgLL>⸭ҨHw6324]@P~]o l|R4B&F1VW36R t[!m!,pwIw5J@F3Wl%_pԝ6V$Z~bSںCe4$Ǽ`J[(`J#9?Vkhmsl} ! d9Bs1qj㰎ʒxw$ mD]ıQyE yBHޟ>:CB=&e"VW]bE;<`$arا]r䒲·F\ZT=i@~XLO3횞01WmX4fBA{'߉glndƻXjk،H}U _ vkjJm>PZU? I|L>*3U ^!}@+,P͜g`e1ܩـmSj}`ҌG^<4HIq93'BZ KLQ*C-俉<HF}d4>_tl\e)չ+H6Vƍ/ wN&F an +E_loE5݊2=eHjv~b'O[HDuZ)^D1i&SޘZ#ۺ;:HB]&8:0"sn{o7pw}t|gpePf*8boINA& |xw<}.Q-&|)W%i;,ayMf^ϐA=~Dd}"_GWg›&gC`ɽ$k|RNďj$6'T?*ǻk4K +,s9sv<%qSNQ"/:(?TAj%P&o0I򙞇$*\ji[,;0.+-cjGS[yZwR=czZ!@F ]p%0 Vfp{d:Ԥ䒰[=_7& +5X:/~2Ӂ`KY\ Gm:8[Awe'}s݄mf V_٘?SG7GY^,+sWDy[&د d<=W刧UC^s򊭫i.$-vI|Ъ29ӛ*XchV'l6%C`Y= u䄱)eZ57 K{<87Zd +( gmS?Dp DqlHâ'ßTxd e';c KLqm."r!Yj߽PR|rS1OJYrλO3yfA8@jt/α7NZ35=?m`q^a 톰CFcǁd-z٧LNcQq +ym5p7NscLw117:ֶe.C̍‰C]Pg!?AK=mZՌ :*י=eGtVȊt8^N]6[B6T$N4o}PtFπNzڳr9^ +Lbr:I f$qP $dd,*uJxbR:\|7 ,l*,d"ej̍auv\Q9VU4َv$)Rtd4! "f+o2ǡ!):Jӹ_E̥҅ϙxIўƘ8xs%gVOY<S*RFtY6a Y]MrQhDA56gl0X&5UtMM!8^D6"OC[w:04|ĕGnSoqw8waF:A0R屦R@5[n["f"jcWWuT뫦/sH`ߝ9ڕ{³L* )jVmIPmG[,}m@2T :[YS{ fX}+n߄\(߆@3@}9qGs,ܘ2&?vxnsypNPsZ)s>gjBn[ 2wi>V`QF񾙤fCUr)T_-mQbPo͓X!B+r忙uYG'͢#xx)Kqˈf@WPߤT ++nIRVpYev N/R2\ +c:AS(y`6lօ7OkR! +Q^7@C2Fx b},¥Թjk"qH>Nd b!`#.b\*K;i)74ʨِQ?]yv'An=dlwI@!(mxU (6a}p0dv[z;݉>ôcz|`PKe/Tq3N\cI +_?O +H'BCbHlrׄ3 + ѯzIF;6$!m[wWǘѯ`)k(Bl HfMqI3:2j0 PhH]{o`:" +h3=ڼB~m;U,gڀ4?VQY+1UæmyA!>E".۲V"(}ÿՑK@YM4'4W&=[+'jwNQYJ󫉸պ>`.& ɮV/0wI28fcS0df))Z݋v$ؑ6Yd ,|H{H_RtPPo4_H.JbjzWpsչ$t@˧&+L;ll%aeSELH>k?]X!\0c΀9`q]NDkq" 0ri?U x֓\\c0_iBkEAdY|VHӞy ʲ< `CM?F֬ɯ#>PsurߺkI4Mχw~#T GL%3Y˶:,K>^3mۚ8kDV#I*l-g5M<[t4"[hzmVνbxg tc?>jn1DQ==GxͰ(EKvAV9Qnԓkyf|HaZl%q&P|lvɭI:Д~I3 @pL'u6Y>#rB \婬ǩ]в5UYqaX@ 3ϟSRK9+8cl!3nlT$`lHS{!> s}x(z]D3oJ?aPFN2*SGۡudGP΢+sT[t 莰q,luڰI+-[zu-H4p[{%( :W⽰1gnsfqQ@"vKK)9oY3? 'aĘ[p<'+d݊k_>uk1\ -X&4JubBߑ +A*dz:S6gI`''d˽1!8/)4"Ua#5o&+?~5TJZ2XRVCZf&q;R 1FQnWCL^r'DϾlmuBIIyЛ\P~㡝V-9_o~% ]vT\s +V;V[ԭv&(s5;ׁ6A$fsG]5؃6 *Wj|rتǍOPFH_aS8Vy5ۑ.~Q,ih#0uJF\<#@b-׼+蟍 +5<?V~$ytFa޷:$v7An +]$\;z4SxUozT̲۽ =brЖ0T \!l8@2O@9kł cAQ]Ohabgp[d!WDګ$јhQE[kdת.\[Ų8)jQ\NrN(6xPbgͰbm R ֓p@LJ9RL3" {47'ua>+KNdC\AKU&NƉHZrp1܇/P䠣C{ZI)]ie7F9 W鯜9Y܎!w1.Ү$16EvǶX/䗎sHcOY~xF?D"4tϥ\I=;k}䒘򫡝3h%=^8[$MpC;GDbzpUQ^,^ ?aºGl?˄0㱮 c++3BD׷+>uP%׭ǠjE(T2`"I)ӳn6jeXFkMdϿZk`||V'oa9{ǒG3Y/ +Ԉ dhW4NX*blޫ(*þfN'WA1wk|K8z IK3st4-VP8X~ X RgÚ\Zak=!*dag=VXy0'ڀ۬Py3"ŧ>}'Sa?GA)쀡Uޒ-r< +j?&[+ЈY4X.*\UE޸} I+ZKy)#ZdjT{˩}ఽgfoL^ء1$ #ɺXbEC6w2Sg5̒Ds9[A]{0> m)ap<*|ydN*oOZX 439kDǘ%K)5/UYR $N A"-9,H(.4_j?%e `5#QDU:k-kNIJs +,̩w(.> S}|)δPJ?9u惿"*]x0X0v{bP7U_W3j]$Dw[qVƓizv8Gf n9h]5 _|NU&{~JXYҳ&*[㊬pȥb#pLt9+}]0[??B>ИL=HJXl^ˋ09ќES=w\Ǿ"heJ|fM V8Kf_Hn`[hI@u#8\*g&O \.Xܵph8`ҳIBtL2 ᥬpKX'<>`̏_'xT-z"mLE_3\m"E;o̴g4O,8$_W[lQ/8%d8 +-l[]ժxFI9&Pw޳@&WlP{R*MO|1xic Zf2Dsíz^Isr^TDXD㎧3j3iL(#ቧOLB^;qO |J2ݞje▨>b"27:GL(>0|>""'q{䨽# AA<:*D$CK?c)m&r3 K q`TmIyD{|`2/y%c`{&oZԶfX jv(- ݞzrDyכWdtrH?.GI/Lʂ5%]h?a^|.<*Gч2vmǮQR^{w\U !SObo iz(9YS]Y 6[6AL0& "izP*E*>f|!զXbl.I|G-@4/ƚFTP[c#@rꗈ3 dE2UB0uDΌR-7j'O )YUHR5,_›5|r!uflEl6iud(q(4TFQ&P ZnG"!ksɾ01>f GN.Mdj2m+U~m86 JC8FBͧ3a\XRxdc] ܼvN'3k)0#t§jPj ki*KV27N]i!g5"ug3<͋}*_|!SPo`pHh(S5mT>6!lв9qzbx8I_x %1 LIp]qv7˂UY4T_Zj'7bNjBvd7͚,erɦRzXMώޘE 2ZPzm"+XT=5Pѱ*@O0`#dnnfY&)YX36YVpVcz}2-_@/Ң˂d +$Xq籱@3}_Tuu_8Z&9]ƙUv] p\׈Ȭ_X5+(Oboa $/ oy]NX4E)nL28V!i|c~1}=f %N.ξO_'dD2F U\eS GZ0Q//d{9$Ey=Nh,|5){%}QeUTv0~`ڵ³e9IcY>K57ԌJ&AT, |AIKa(c-\Ȧ"lہ*x$w Ft(s9'<ذi>,n{! +[H'EϵCXMrTB'䊱ނ&tTcA}_Cw簹)%6 P|hL#dnkퟄaU6g(!8CB?םD׃w 49YڪJoq0Ds8cXa at)~ |;K +4tѵ{ȍ3j*<1>hg$QO@=eldͤgmOjlHߢLZN)"L1ZzkCS);pt2!ҒSF9~ K쌊°&3N ++C ^|ۃY#oz?S-pɲv< +@1sh$p.)UlMJ AͪAV%GY"3{E7hGpG'*3hZϞaѿb:Gp5(]M¾k˝ਝ8^ݸלb̚j- `ZuD' m>J^ANxEVcudYLWAf5e\4h9b"ni%Y0Tʇ-saDx9`4ׄ^+@y {crQ8/zVBlr?_zBG\Vp 2Hu&X+çja3Vay7~p5]/zJAf#Tp#E$1ѷiON9v2b43V|jO)RCpkwi&rҸL&zOooxvg(xU`ۨ 7l7oLFo09LW Hy^:K@4~'7ŜQ{*]{ k;0AW#Mڂ\fqabKj܀!GNHdء1^R"ǖV'ohO1?4w(3X aB:ɢQ JqŠ͹HZ~!l1t\bgX!ٙHdn-mԘ@y?`EXV!]\ mwbu=g?|o F+gՐTج-9}n'-ߜUr v"VDOep3Oު7u ^ M8Yj|sC>cѕTMR5w!a1#t.É]NF$ܘưFٮ&ܕvBxm kH]8&9"&\nfꝿe-1Hђ,qJmKF2T5.+kښd,PY. D 풠Jy sR\SaM`SXڽjx:P؂kBht\gCeidgrHr!@l_`"1z /ڿ^ ;.lNs;JAڥ@TAx<#wr dhUfGyvU#R:mD%;*͜{h()Np _fϣ \.bnT;?L^xy𓳧cZNI0F7HveQʱYH48D!^09]"n>+RdDGHI<;C +d%`پx +7J_`F:%&_ u=CiPsQv+߿0bEWt8kg^Mlw}I0h )('^BQ}lUfJ ~TAQ7. @;ylt7CV a | ԅZ0I7!ʳN8A؊iiM"rӦ:Ƞ0Ӝ ΨbñG]8Ly;Uh>5=[x@(| q.7PoCDoD*s?[όdUk fh, 2븂^xbBB$&P!!"-{<|)AFH i7F͘d cEZNl;I tvzy&[Pg5 +z +|R2~b台PYYw}5_1o/K&El8 (T^+MxK^?ItރW#}JJw.W,jy&PRWi׈6[DuR׻'|skw򘥓+ȓBgL%[Ǐ/V &Ft<ޢܐڕݾ>lv,]0˜{'MV7-) 6EAèޡ`\ u +b@Q{uKyS/+MiC{<)+Mw6XdTful&Pu"~2ZpGPvg ޿}O{Jf;3@6؇eBʲs#LZwb]ʼn8o[y+cnbSHAupzW~օ˭y\ֵ_h~`ۇsxZsOԏy )fΘK];{~.!a#Bɦ,:粒*)_6{kAv{Kv{`e),+mN]Iܻb-wG @Nce}=ذYE= 8*'sS)o)2:i +sKZ}j c_kzK? g˜S=}!˱IwN}!]lKf";q;-i-\iSB䄼j)"N*ZQTGBc:Ӄ#I{qfG`z/,{WJýTK*9  03q%5j߬A#ك-3QS1prfw4V;YoHt,TWHP|_#zpNn@_\'!w]ߛ(36ۃm~CLl * gmg; 0y@zc͙?QM zq%rWBpگh G}N'F%k0UDח\]Spcr'OMr®.#t`T0ow4oX\|^j3{:4hP%?D!?z~p|Ks06oϷl-@7^YVE$Cz5uūYcPӈ5j:ʚ#)G]T'ӧ[́p`N,uGG)3ne&ej]{h('#\v#Tvt԰@ +nbH7\G͐LOm/b+D TϔzRdut`GSY_}>x0BۥcOp93\#@ݨcY]ٖ`o@P WWJ  c lo|N_wmRJq{9\YtZSQxJG +7H$bY$iL:v OHl55h57ia6طmAV?EBWwX֫RQ۾GVl#*l7N]8Ӈ~t+¶j/$/Bm9/hR Z +lO\?ڐ^SjhV.Y?\eB!P?YE/rqmwU,\GLA(ջR#-D;6avͳ`"u]20ͅ(0عI}ZnAkjTv#c ;ȈJ+sg|P_gVbm,ɜM wbTlۚ9eLj4w[?5ӬUګnʠsp׽2ז(<ˈfCitlM.#՘E/\.$^RqPBho8{굦i>L.WgC HeZ%Fxy>sHQ! q-T 5ѧ:XcoKSaE6'hM| BC~UOØ)[1M26E%^KPxdRoQy@‚9r9!7Lܼ RKe5uMa"XaY_?a (fVR]Ef>K`wL"-mmKUR]'w]}A&5D'bBު f m>cmT1@:6 + c y?lhIl9m&Մ-xvn1IVS_-uHYj]^ |MmF 13Nv}mz^qih0&C;Ȧܐ¦TSI} 6yQ +Ve&$ݗ䍉E Rlm+jMoO?Iqf4fۘPTKkZ?Y X{ϕ赮Dyc_ O`qf+91ԙf[f,4X +5 -V7-c:ft. @i)EꑉvMl`V7TQ qpNT#$ jX_GyB+tdG. ]Si~d:l0m_7Tڪ1 ߦ,S`'y{$eP`58N trP0qT x.%8(fy1.s`8˸?$~X? am [Ni PD-IB6ϯ=)@ Wj\yT=p4W Ũꆗd~x t %zE4q-Sߦ#1@Kjϟ:UC@IVuj.0N(gx.䡆2ܷy*?q`2)z͉F$uP˾U}wSsZΪ\C ^L99#]OyA8%Hʰ˒3Yv6t؛@PXaW ;\Ql5S|6QB)8T̜eU?GP3*8Q`tk'U\Я2:CIץLa])53U7*'^gk3DfG 5#Ky*b˨ eLj5FXK_WP:S%1{E>-ނ V|̮.6lު;Ϙ"xI_ _ 5<(CZ BvGn2ntY$I"v;/`hjo9@Uoi!2>pw#12T((>Km!L@*6'cW$hci$Nr8"B?ch?bsV+ŨoF[(`M " {'(iCs62jtXlŋ=d<\{QJf#) qlޠ= ZBdWqXϡer1-:$RƑuf,tI,Fh,T{1Řyy:Ȩ:1"m&G5\׎MG_.z=РOp:w9q ǬeWQks`rnU6fUV Dʆieo됊Ҹ Ѽ҅8Lh)sQ<^4NinkYnuiiB;Q3g +K8KHavԵpA mb/8"n;= D{~a/@Dc ](w~L.tYlsѥ3YtbTד0]ݑE>/aSzt0P +GUJ[tT3Ck\ASz 7 k£:;&j-~~rAoT7}-h^Uu9CIeR\UI6E͖zȇ| +mcgRu(˞%kW[A_X~1 wI?p̚/99AC5Jol9m5"X"/(/lȖzTf+b ZC2*?Wͳ+EkFC:fGɽ7>1V&gq-[|M?& l,HAYakxQAJ@d,Q -{ 't )BP9IkNw?Sq6A-ũ].goe 7[,1% z +LB.. WPc(߈=bm|bʙs=pH)TyqRz|xI 0d~}AIx܏ ߮ŷwArdɼCjEKʗR7*]amRץU[RG`cBesQ#'\ٷj/q㶦f'$LֺZ?e(@ +{\~S[SBuH@3Gɰ7湐id׻*?\=hS!1 84IfjH/  WcY[:fpFc: 1s#<\u2WKz%&/g`k6cMezUhe +a8}$m-4bo(*X#hH3T;k * d25S֪׃FGD~RۻAJ~v +QSbv }]q +9yP\O"AIPItON&VmY֖f#(b>f8LaptpW +5Cuu4YZ<Џ&z?R-:>ɫ,\B]ò/A +PXD0&FhB͚sN.Uu&}15ݔ]8ņӿ*dh*6g(05jD50b6D$9cJ-I"!s~FQ9#gfuF #A\8\.S$iV8VeP'=b'O(y݀jzr9/$_}w) {Rxr~mذ3"iwuò*es SkߘȦnxS4^*9cp禶Ff`c$&UTS%P!2VM&Ba3)̜>O EWuAKv+巗/pHT֍~p(;P n_S_Y:Y{w{iI긖H {pu6`966F&d[2!F-H]|;s@掿4T:7woClg_^$[Df'\oD+ڨx"\t9QZ~p"iL}K6Ɓ+F h +4pR[SISz 05t~D-kfZCTPRf4WBWj`hݎ9rE|DdPrI;^NWjQ@Z~;M, 0`6~0mIN\U.=\SkM]"lj3<1lX&q)p)9 +.ݼ-cQkj}Ww~PK_[pI ÉFWďpaj}1PӶl@ 0rhEv9+,f%m)ef,xvQ ;: #?}^ kQ5TjANOzDer) +$4\ tu|-@̧g䖠CdN޹..2C+Y`Tˌ4ҹפQEQQ%hH-ޏQơ;{pe\vkvȃƅq4CUx b"5oVf!;$eA= }?./V zS؟ +x&WoH&bqI%f)58ѵr|۹v&m4W`嵭28 [)7,ҹH<ۅ 3A9e0jFeʂ3򒟺D +kM!6}E qí"DǺBA92D|a7=bV-tCY3HN˖_]Q=S$ c,#_&hc藑#\FӀ gT,*9T^R"Zo.Y[]*Pi 8,TwEY6;CtfR*E.d O\3 p@e|C6@7׎ݲ> he ̰r[n{r@>5H!PPp7+`aSb5IM"$ (RD~֭sw8_z,|8}%-0xo35 ag#2uo̳O xp (Vs qlYK +&͌=f,쯒GeA3<`)ĎX%TظO겈!~F<0?F>dftZ6@ύ8C0j㖷Z,iڬE-ԉnrCpVYB9[!tQ4w-C" jJf+ +endstream endobj 77 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 26/Tabs/S/Type/Page>> endobj 78 0 obj <>stream +HWk+|~%;! o!,&SUniڻ,5sNz~~x7oΧ>|2x|x~5h?*3:eT4O˸h7F)RQ3Cyxp;R|w/h5 >(|}'X:piG CrRi})9SR +s%~~*2ósyJZN=, eR񦡒$;h.w]!юLƎα)?=Tʈ2_UtJ_AW|WVy, K0@bK_ޘs ~J8s''?W'i`[Wu:a4|y1_Jae) +u$Dy$ +zuBLp}or$~rɍS6 “3\O;F!-bg۔C\6*D] +rdXFW=EړkNb" u:ܸH.@Ps="<aqLHjB탑#/a_uvp ș:5P3I)Aݵ|:7t*\@)Aʩh6ϻТNYrqg+]~F*-Afap,ẕO@"u*L$ɜfS +¥g1BUBL7ҪloQQR._WZTSPI-X2cfl[վ?/ԹS2Ľ`Nd+5$ZR[\}v}YaGu;tX͋7۪+S2&o:z% +ɵ{l]d3"ݹL8z!~FnOJB>q!v'DXa٘Ҡeƹờո4ΜcFfܲELMJa4 +4wdz[+umbC~I4ĭXV ESg-?DPxWL*`mx 뾣WeTdզ8m`7ؕ\( x[f -DM3UP5荮{T*fu7+hq]3W e )'3GYJbT|}ŗt|fb|,.} U9=TmLoYXoJ{ɛR'@eÛ|Gwv  FIaAf6.O;4pdnt ^S Nب$6fjᦴY< A +*\ߟ$tKսHKqqˠ;`׻/i0,1YKi)萘 {d!>j) ;Dk"5h3bU<gRUGP `t BT|D#kXfSVI(Qc~|C +pJX1:Y.ab\%l8HscY8kEM9\ ܎($⛞D ]FeA-,M `GM@Ps-A(˺.nj|x~${fh'4aPp?Zg8忝D/a[Mk$=I&WȲ&l'ky*eccN)/̶v`uQDdH Z:֘%pvR"H' +4x=S4! ejO+жokM,E3Xw^xݰSc2Y$- YP_!i4|?U YJX6^`xW2D]P5xiXyJV]" !rQYϲ1%fkr4m]D'i.?I/ϻ ~6mE=aW|EWyPDNxKy#2ɱ'7+J5~{!;ZFTĐAJ\Gwc]5fJ^`BU\3(%K;DqaC& +""vɬaZ"O׹S{m gvzKrxq>8;4` 4I)sUO*:~rV xq$AVQ jMW !$ZJ\b޾73CHU7H̛,8 4IYfK$۵e~l@3A$Qs2OTR/T3*>Hq)$䫸'$Dז(הE:v%2#i͸ƤڵN-$5^&%&8 X>+p1/g ڲ3#RϚ܉֔T\~ x0th0OmpzlDլJC\ȊURTǧdY,{?&тQ0GG"5ffQXu04;h]v;=1jŹcqsBa!"Rѥi;IB@P$v2fop7&_LdT{|y,QpAD(50 ԌEw%yzg4vyCMFrț4R$W +}+ljwgO5_}ycܞ/ԋsݙZ̀F^J 1Uv59j}R_P +endstream endobj 79 0 obj <>stream +JFIFaKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Ka +   `!1AQ"a2q#RSTrt$3BC4bd%5cs +&'()*6789:DEFGHIJUVWXYZefghijuvwxyz?ꨈꨈꨈꨈꨈꨈꨈfd4^ ~ʩR5d +l_lA`?YVdX ­P[!!  Heh#gHdױֈ?DDDDDEpo%C$ 0l*.poUR xHD*zzß^Ȉ$,uU""ULJ*,7?겱khIUFN3>G1dsGޗFSFt,x7kB"" ꨈW92`|,ln.A"Fu9=;TD37'1ǨCdwͦ +\Eݲpq 7GADVf][,Ε~=j4nl/5lr579L sčpy0%5ᵹ,+z׎?iّc`l"f)q<,3.lFbM+9}Ms# G;SsPI3v;h4j>Ӊ)aC\`^mn YoVC>f=a]H齠X\ /R pHL\UvBn񗸿ٻzgK.#0qx,h1ȮOwxݖ~<%eu 0>f30ww˰A^f4zTC̥keq^_:ꨈ0eVXZ[6A yح3OO+D XCIq d@pӲ#/6,wܿwNٻFӵI2d1!W,PG]j3cL̑ F؉۫sxq/]++'TnwYd's8ŭ"jvNfvL=i%soBG|]oG%dn {'v77pH5Gƕzv^Mc̻񴼸l^&*n#Nv`[+\= Ϸ`io=-Su3wodk.j Hl3177r5T^F߉Ft$6YI.窹쾛bz4 l9$$s[Dnjȅ6X C\ H"Od&n4[l``[MY +VzweΚ\G%/c]0ftݻ:>N.fvLdZ7dm=n͝06NZ h1h 3-L|lxc@./p kǡVZv`1##nޭ~y^A~N12cswQ¶3!#ΊQK7(u?Tg' 3Ydg##F~9^ +m~ +o׳T}~ +Y{*>:o)G2}#Zydg O +~fjyF~ +}#?RK>HRO8^ϑN?NQS7#S~ +}~ +R#?+Y#+}#?!G%F~f23K;S#?8CY +SF|{q;?',ﲳm~Pu C~UI5G`:Oj]}!US +~gE3F~{Wq?3S?_PdgD~:favšs YTϫY>'f~,~USYUƛKy\5)DꨈY3V̓+)A "%Be.l.sw9ADڱzF~wb8-%gUvZjxD[8>#|e۷ҾUJsVdk Pipnk{QV$yDc"#ָ;qy-kXr@;F6 5,3MC)g||3w c#\QMMN]/O,iL_12M"uNpG|cIuZW}!^ ׺7 ,Nek:G;F;a> S? i,ns#8GGƱV٭D59Xddc$ъ!ֺ-ңfۯ{*ZvWV_bfEk{@qiehN1sKYɲ@2i[vh5qD#"2{ 姃z-+>_xvV;k#Hx-w]|צɝ4b72y#-zmH |T9ETPjѽ9F̥o5 42\v{ysd/rYt\Ə +ػjӌlHDwpcZ:Q$ݟz ؿ[""Xcq2:7o^UOqSɏr>6ɾ]nր6|^3Z\5c״:Hl9Nr#}X cdQ\mA68Rkntpݾ洃p|͒F! $oo +<|E\u(o*lZF?DcֵdI^Xjϒϖ\|y%5k\q!=>%:nQƂw$L}7jױqSu剙csIOvE2sKcǜGq-6r.4G*Kݴ쫮/V'O20Daė#{\K$S- p-%6<~%wϟSH^K2IfGiqU5nCIiƒ+[edk"2u>kߋ ڀmT *,> +GЛ%yVvU'(rYYcdMyԯ,aZ8mb#эໟ5D<|zBᛘ8#Aԓh0phh;AqbW,n${\vWQQ;R {M̾>b*UVίjۑꨈSy +Ŀ%jߙ|߲60Be]v}/(a6X[Ocwkq5mqya>Z"Ylz\֟bd >f=`I'{_7@NlIqpŮ&d]5Ё=M|,W!)cWN>"Վ&{"Ξ20\.h7 GugbY0_]UtX5#hMv0pmf`N c^m "oRq4'c7SYͭع *(b]S|2~ޖT2 w9A$Xp< +}3O*ly-$@r]c P<Z8 ㅏ&f3]48{5V.>6Ly/tR\ˣ 4WOUgȲ2ds[~CYd*u쉴+G 터5}CӲGwISӶ|Uϔ^C6<[( iO +ȴc\K2qc %k-ptL!3K E8#V FA;?Ehi> MnV~]#FKF=D\x+#'O%tS꾮 uY;r#lˣvx<ɓT|4em\c ^Y2E&(%m@59Y.akdn^ZD.SgwCNodst0^2̍湍$8GO +哪鐷q9  |kٌ3M՛s^'* \2HcW;o_5҈$khٸ,Mqs%{&;;O7烗aI= 9ѹD'cMSx_&L/|};̑ ǒ=xgH-cO#O/2apx .')2`vDSKe`NC\[&tr=K[^{)?UXG1ѴajU'Eė,L  umcp*#MoïU|8_!xk?-F&жWb^w_ԜGO}f}T?x/llu92 k&|QU'߂̛8G|9|G*7>Q؍Q6Z{1H#ds~{^򵹲 \KZ֋5Wh$98 lrCMrO3apvp#ׄO$!H mU)ؚp;8s13!N ˆ;֥avRεO4Ns]ԟPoU=7i囻i1k[XI$ut;~>ޛ3UUWA?f'FXv(W5^Qv&s$f^PFMhG sfȚHC#X7vG7MKG<_hPD_;p$c)k-֞okv;Hcaǖa%tn5Hy+.dɾ;-B(^N˃.l&6#L`Ƶ!aJt9і8}.|SN6G6(px>(NxAGwUY'eq{R|ߴhYl<;;2]ͧu4-FܾMŐGԑi{ˍmp5#Aό#9<rُ6LyZ8Gio"k&cpX(DV ՑvzlYS$| -c怿>JvwMWCD$vY<],3;fwtcksL|z, ++#@IiO}Zh/8cIH#lz,_<;缹h,?PLlnh6kV]̹윙fFN>&-crrs`wexwY<"n5 echcEAbs|̟H9KZǀ6'˅֣:6BIdž΃UVF-f8in8Бܛt,9VNruHdE zHx򲣳?x%q{||-pA{Å9'; ypw(tTǣem͖ G/w6s Ë 32k%U։νcS{c# XNaoH󹑖VѴlLRIKۑZ鶬{&XA[zWU,d,n;OYD =j~w1è5D|Du^l{̆dLύ2 m?T +tn1HZ͸P.V'<csNC\V+ ph<:+QTFe%wR抪#:s,KA*t=T"!{[I>E띋Isw~5:LEK?sF 5BʼҎ|xFNʽ*>HE;&-Zz+Sܻ1lns~Ʌ{Za,Jwxɛ;ۿuۺUlBm\@hPTj{Lwc 8 T{r6IӸ>eLXR>r氊⋨~NIfۻ -EA4%VJZ$%;hsIO]O730ki)#,hiixq] w˕ewu3\~v t9Dz[qҐo{GJy8"'92|v hxcƃ"O~^I,*W^!〼1h +e= +)({z3qα3hW\l=|iY$ُ+^iqyNfK24A^?*iUZabȘDꨊ/?4,qk>Cq4nc:?ߕ>DYLDg7htiL2eB׃EF=Wv9p-cmUh59d/\O D50B A~L-mX3]pc2sђO啰 hM$zhsOk2qq3 $(sOckH AA<\@8kecOUM<.L,sjX X$kYoÓ 7Mds`IWLwyn}o^jx%hs֓W?Gn8ȈEF@Da 8yU y?zcYɊGQ;Y#4 *A w/r5„k~ +7X=h_ΥֆBD%x~7Ftk  Y2QEU&F _K5jxQTUWTT8A#k-(9ɡx:(L |[yTBR׵ yQȫG4r &8~e)<E{ 2iR[#m TT +&9M. +iS\ DU]PC݄. YI{C '꫰.RyKT%Pc\ ʬrBCdu@Q7A6ZPKckI 䠚Uu#.'^(zr \# 7WQ!A6ilM nhp-ēƽG5j1 +d>%|{1?շDꨋڸ';sA<,_S>kMV`&I,k5q[+OUu2;0${#-㔾M9{VۤhVxw$zu.ELe1Gx!06wxZ;AiwUٺkݑ?llos;g><7\fs᠒xYË(ev+3e,r8h"춾Uһ=ICC})ux<Zp5 t-k Reu4WCෝ:9ƅ|ph?)^zSχ1]SHo>yL#u\)!,`FAw4\ZizG[~6٢f$-<4V=oLf4F֘i$kD-- 5~ż4ɳ5dUU Z3-?o\P@1|#؈^|ƏUm#Y:_ +}=V٦uYO.gBIikF9ds!.q2dW=2&/l9.ы%]&hu֊sf5p{ZU8<tp(?VҴ,tӲ"iiqm|`} 'Ѽnh\\ .cƷ;~ +b`HCނc/n>u+>Hclݽ9$ӑ^~ +.\)"I ^gG *sۻkE'b;2]:XIXAkiY٤l@z:luHR"I|K0g5m.>+ٙ1vױˆ5#G"4&v n=jYY(CW Ns_p/2IJ6[ǒɺՌڴ1wnsbXiXvi옴8X n"#l YcFi@Yj3Ihk=W.|yyap1cNGʮ|YDl,sl"Zep7=,6P([B38@rݶ;g\,^7A>%w=i-Wտi2t,#iiZOt,!F) ZƟA/t{Gнז kI|>Mj798 kO⪛U68t}k~ϕ-ՠt[nuHԚecenn $v!'vxS}QK›⊥ܤV|(]A6i\k7n(ꨋڹ\4Y>ly`7I9 8ҰLřbƵ㪟КKY>pNv4n FO EHTi0㵙䱍`I7qlsZCוiM /nLV8G7=Fvbx2`7|9-;#И`Ď@C$hlnl@4Ā89o s4YesAp8++M_2i'x8kfK֑[&PjU]֧1r1rLB>\ 6[qMmݙnF'hu,q2[S"q@:O(2;Q&Ck[#/"."ƠcOٲhs# .J\< \[W29Kwito 3OC$6, + p}/Y%wFw3k6魺v`=ݼ4mbr5<|]tC ̶X״a+]N]Y4qcdG sEǰ9~5c^;Rɑ>8n!p|.6MjߪLKK߰6B0qŌ6li.~"^BI6(+Lйi_xg쨢2bs$4]Ȱ`b hGEeu:FŁԶ˹NdStklM9k4CɂJ|a{fւù h6 6cjF>$?,y-Yu9YnVisHh轴p-2ϑ RF-/-uynqpBXJANޅa;+lY2|~~֛,mk.bf׏Ae4mvXx N9Ҵ9cMn> m+Oѱ›7*H$Gm[gx=A6x> {Ze1ckiQ͛lkHOMX3)hyicHu9!]j9 :~i616]χ“u|Li\O'Qrs 4MCK>;Q6f`4.<<+]~V%1p% +PXf 帏a4kqx/-?t|/~D%cA >:vpϕ^v#]&YQ`hoiVOʌjqhvs'h&*wQp_/n՗LkCKxWd~lŎLpuLh>gz;\ȑ ~zo+3{bsgW:GT}CuC'f1D֚>b"hղd"\M e>5ʎ'Poy `xO>4uVI;M ++#_$Z^C s #͠^*4G;6!||h:xd,H ڳK$#Pq:ccci}Wk㑒2:#cqQH-._WL~8Wh *՜HK&YdN9o%n| -;ȮtFI#ZdZe#CD`m[E;[767<5Vmg!zFr(.дrZȜ9׏h='L?\H +W*7I- m<쐴q{Ap>urdŋ!ӶLi(0wxc`CsDl1]+u[b>%O.*mv@X@ߙP,U+]EzQDb$x*tJ ꨈ +4>0}nkCU=*K6c YR?m/`+㍱<EGq32{EG[ĀecH|BO Uߊs@S4Ct +6 tG@͏,6J{C!H@I +*Q + qʐ/FѺ_sStNJlAU=|YN*X/UT>nq)k[RB=J ,@49>]kd/MsEK (}vyUP#o‚hyN S"T*t+ynꨈ=fq_tTwVghu_,0Y+74_uW?i2sO0%푦"ZZF /NݩvX_/z*UEeͨ̈́#-=wYM]Usʱ;cPivAwtHwmӕs-(#2749YVnWf%h1DZow#X@; kxn-qh$x Q| ˳:{CÚw6mp$8_![W!읻if6W9 h` p'ݨ>11Fb&Y85 +tKP˗X`hf6W.nX:x,QІw&Rm¼6FZO kyl#G·MLGKiޥܼLH2%s$pv1YлO$΍㺥8Ç4=,cCwfVgZ#ݻoitxlxo F0sZ i5c9[ oYޭǛFc!mUX|%JA9Ei!ImI$I*Zq$p;aRlթ-S)7u*wsJU7j `BTC;\(ArOU r-R8BZH<*CR%y*m |I5jw(HMՅ&BE҂J]pT)TYJQMuwTV9/PU6;U_EB#NJyf[A* T| + +SEթK?n~Vꨈsw셀>&#}Û%wRm o(rBtbd nCڿֽ|h9QvSc#'cHϰ-7s-w֥/Hwjh>\ n`O1"]I:1d[KE(ݯ}R.[}]\X" ֦dF3*O]'yy:>==æ ![{GϩbaN rf9%l,"6۹X/=N[98>^;x `3Uw<__-XYv;szׇ_gEÁdsworxc.-] hr+J* w&t*m?*|P|)UXJ EKZ$CTEG'$> + EO EuSD&€OUꥼ(  i6-O@P NI7Lf|I,9szоE^K,< gVv;'TԠNpk˻8-ho?Ycau1dx\qqej-FVMv8~ :cik|AVg…s#ߴz.jFhѣWGh.N'mct>~LczȔIk W^ S跧aoNʮ;(h5LʑO,I6G@rKTPuP~ @*AN.u8U]BIJ PJ*AU_ZT;M҂BS#HT(ꫵ rq_UDꨈ~hX8) `$丵h|v]Ud,Fk]Mc[`᷃~?~jX06;5HTQ +[q]?cWX^/Қ\%/,n+O|<WdY_6$~ӨiMc3g Y \EBlٛxrNKHOdwkO }?e4cۋLޓkerۃ++g'x~nq'TU44\$a&{_tmA#+kjXXP#k'iY t#H䁮sZǹ9`m/G[r+ʆMR8ZTHA!yP>KQ\6R@7TZrR6T + *@/$ ~ +ICʁIA(xCET#bcֶOAF[;pmc:tn'7Gw`& iU&#& +MFY1c/t$ՆIYɏ,ִu˷^Ϋ D󸞍x,\v#Zkƾu>!JP#z*SA+!P|˕aAh +@)M*:=JSԪ9=T|j*RυJI6ڍ03­ꨈ"<[IFdlM #Kr8擣dXFd8MѴ[ď%q_t2^G3;IAky{&<S1w&NrE= q`|3E'^ݥܑ{l g8q$]ԋ<{Vf>`qk75͘vesழyr$-پW 21Ac[ׂ4||9fɌem~:t kTAu9BZ]Ԥ|IX,lt |W:vVDF7#xj׻W>ic{"6 +ǪM+mF9&I)~ƾO=<,eW1f4PMNlmaݞľL6Ewa. qu+?c̜=JlF9 t;NZJat# ,c  @~Ej8߻9]RBNzPPJ,E@CyGR +z *k + @ @% TUy%RUHm(yec4v=]<8TM]yuhȞX,F@{n*BSUa*ԕ\##V"=yƏ&/~h{'iJO1|>n{痛&(쌃wpchp6K@soH2 ]]N:3&60<̗&&&HoڰW`pfɔ8M>;O6DV?qh旌y1j,s+}H-Z\uVp =ј$)uw@Z=>|<5H9o #1@YUê mwZe24h-$ tN6|qA6ڦ7C\<+8Ay8=x{$sP5.qIea0>De2ph +;Zsxr ^Mѥ:VJϝ=F\rKm0P"*JBV;?') loyp +tq&mhmLG |`[IoU&uEI(I|U5*PnKRR.M({ +k$(%7$Qwaht +kӿ\o⩿Vꨈ +NqYr+QVJTTAP9RBTPEZ (Z +D)@('@Oʐ b@3ch{.^WČ'~͛{xebGݒslFŏ^oA +ۻvr;h ? ZZDG+/Nq0ErE@M鹜uS7j4ܫ7<>"@?U~^|]ȉay&_Ka)fԨPM%ڂBH +Ž!¥@_!U`U'%4mU<zMh +)R+I5ʧpjԶ.$_Ve) $rh^*%AR{R F.7E7jrXF:w1σ,ֽcҝ!x{!@H9\uShJ*OQR Z(P-u>*Tڧp + w +lKPdB*k*)$%G6;?qꨈ +Ӵ1џw/r*-IMZ'TښNH^cئ ¥ĩ +IT*MR$Q|p tPMP:ZhG%NJϯF4RG |cxnlv#Ge \=i7;%Â,lo6B̨*ki_@O(zp䁒5xeVֆI`nPH$*'P!BR\ҒEYA~*BZO +oo +|T%.( +KQPM# ӢZ!9PG&u*T +5gT蜎P>jUEr<|j*UʤRªQW)#@r7jP(T\B@SN*9K(,m *8@)N6h,ڠ@AT& 7:%Sf +OUVαěoD@ꨈ +ӴQXMIQ|jBQv*J.BǵE9H6R8_5&(ShU;RI +V7x( ZG(N<)P!<= +Mr rBTʫHPOhP(wnSOE?u*K攇YT`YF&8|)P}_<6l(=ToA&[IZH*.UVʬ)z7zŷ ꨈ +tsգ}T_ |*A6T*n^uS|AUↇ* MA%*%;1|wKl>6M]i#xP%rsx)u\*h@_ +9Px# +ҩ+5P*N(XCʇHy@)REn+|F|q jY-SȓXr1vWKEt +P@ͱ| c| >'Uc. c ,m|~ +:Geidb5/ +@RZIWJK)T +8OQ^J +h|$MMQCn8JHA@|PJPk W A(, #mꨈ +4nq__/rh%AESaC@$p,Uk4zK7;L# ]\=69챵H^u2 ]1.|k[֎v|UtOhRx規U%Bu:ѦIU$BBDqEH6:CʁeJrmJłGG4Enko c?79:! "s !uG~&3sɟDƝ\ޝ}Ëxqk>J rJʑ@w4+왳һc`i)UdOFdH؜gh4OVO$ +ӲDCag`v$$Ll6gNi:wk˧\XtK" !RM +*jKT]'5t9 wtŮ"KkJ|*VԘG;YrӴI̹RNv浠]YYĕU Z촃7/S~P _>e@b0ad'Z]?,ɒ1n/x^)P9Gr[#_ycsczUʛI(ԫ\m5ȓq&g'm NF!u0nטК`HaI;Y.՟R@ѫtږ0PK ڳtϟ/ab>dg\|9PAU cIjw:65~gEǰ&M٠VBLʼn@k\OuXfL(ɒ6sFsC +oBTEUUJt/jbꨈ +tV}ܾ(<cCHÓ#nq=̼9FCL{4o}48h#ï*mVg%ѵsKycha'52s0^ƹ8XV:q.џ>;$c\O/3DǙ%SO=@˟ E$Ic^Up%C?UZ'znVoe'Y|xn*x{9o`[7}q+[w;t랛uA^g6dq9 :'4x2tegW}6԰zi] \$eYXi|n7{@kO#l!&㵄sZo:+\I1gblNU1fdI sZL^niV&(z,^_2-mS+;>Z<[WZ,ϒ\X9lwuZ͗XϢ/sU曒rrY(da4QhYTK'cxila5lO n 2@CG,m )PoJT`p~'IQ|# ]P@&_E?~Vꨈ +4^qYr+K<TG9 VY dd9k$gkvH)le]KF8ɒsEh(yY]v>31ƓwJE!15Ե:A&ciz/V1 +2"͟1 Gb1.b?ƍY)Juq/I`O̯.aO9EHZ<qyyJZIy+N8 d* /ɢlo` $4lpp>BՌl9ڑLx]A}{+Cgid{\<=v#).1;ZS6%q.wAݏ+v2@ݾ…b!|8cӜwpUon|cXhѣX r"92lmm9wP+hN܇ᅍn֞MMUPb<)d6XƆ\.זGgv2؋Axh<4qxPD-h8|TʱN'cyk[ lu q}Q_.;ςq4֘ #w6>npVE=Ww.YS}Ƚ6 + E4/1'0Y-?aE|⊖XNꭊ 籠56L:^@n,QޑMy_ p#הs}]>0t=^=Q iKZ:M-eDIc$_QG9fG#2_xتoCdMS##s\֖eh3fth$oWxƍ0SXƴ`E(k7|Ef[sLra3HƲCC~YZ=Pݵ@U,gf +l_>^ișr:Myy)0$dySC͚3w UO61'8.h/=;Inl9v@;}FD>b}?"1yV4X~ NwZ(U9n ~?#^HkHX6^F>K}Z6lܼG/V9[~mUo+ll#4wwy^-VʖM5:UʉasH/_cX_$s9^`804MWWR, }7mꨈ +ӴSտw/rܩhTOР +6R:!ꄀ}bK6RHs,tl|atҿ"Lv\M.F6^޼Sco•?֯Y4zh /vCZ(zI4f|}Z \Dh*(sCP<:UpT061<vjBR (PBvժ*TO*HR* +*W$aM$G!;[FxL~~1l@p84if<-GTQT]hy<(J|&UCJD4P8S|)TQZʤ((} N+7+ -93]#n pZb@ pLvh,xǴFI /=Қ{HW; d_&¿'H+R +ErxFA-OƢ3Jh, kED9X Ӡȑ=y22EG䳘36CZmh B C7i*J W +}TCک&P|ԓTT8TK +nE'A$JmGZRyP?Y9KO$%PDŽ"SkXG ʎI!-JjhkMpO) +fQꨈ +7yd5I+şG~I +^c~mw7TrےG鏃^ZNLĞKv_^<}_ךc5BL8>LqC.u Wܨ {_&rΕ|Frz)wzUx+J. )\d<ɠ#r;_h0~<'-}dtE#&8e`٫:1 fꖹC ԭ0KN#I;nX/'7Tm2H7D@6z#\ 6G : +#^}RmNϱCHpl,Oh'c[,Aׇ5 #zQPn 2kTՋY"AN&ͣnú,E4i[j>!#2nmwWtծ.;q!-* +<-{^ ߪ ԯcMM)'U…#PO:sZ#-]izu{|6$Vnd8`J@hW^W]IOL'd.-||W g'KpkK]&47~p8x{jgЍCU0l2c[zM؜8c|`h? ,(?i&2I$˚#Hl{jT ?my㻶!Кx2|U y/k:;nUvIXd<sV_w|]Ԭ-CC0LuQ{ Z|m{լ.9Z;?Nь[%ކ.FerFaxeGQF"C[#Nchzsp ΒJ$$п8 +׶6]/ G![FM-,q#l5`@p5s-F}Bk|"U^]̏ Nf#s8c*-ҲjNk#8:qǚYpZ9=Qn;?=g#$'[@4V ,%6{rJv=td,|E;$9 xH>#}XoNn4z-jx&DׁZ>/W]12 ;yC:F{8d,-jC&>>+Yy0=wc;ddl6̊#džeɇҢt{CG̵\XqƗL7t,w-kKހ=cү89cMFIxx4 +Xvܪ]AݛKqsH>w0bie,qYR߉u='l՚ܭGM?W 5LȺ3-ojѱg<4O:ywwC-1cp*g"X~bqoZi?{Zcp| cʇRT%5@^l0 {sA$/k31ou0ur'Qo4\URh|Q +(*(:z (J&ƒA+4ZmA?L+b9apRꨈ >̌ϡ'S5x?S{O Ddo]nҌ]'M\I̅=׍lF]Mn$Y"dt1H^. p,>rϞ#0F!n4, kDžii0j oֶG1E" +et$se[^ظآY$MI$IW^ac=%m@#\9;8qB%m&+.fύ~iCDXI6:f8Au+ePq?{ͻwn?WJLm+ZBw|<*Ŗxy chYI^Y:|Y/d.lV=y3H8=q<wSI1ٌ{>^@ WBȚtVwM,i;i>+#]E=;/5c]1i07ǀݣ%4`4OtTBgwM ǻilX: 1|"㸻W pQBn\žU>?H@*TT#> ҪQH%IBiî/TqD@ꨈF'쌓n*|Cʤ.*k$†*\iKBm.Rx&C + 6O7 + +O07pK@Gp4)BUYPmThM)K|UJAEڧxM%P֕qRb +G 䨻 +,“ER[ͩ#)K@xPz)zmATl͚}y(w5IHy( PJ-F;cM +DꨈfFPxW<TPsd(;JGUIE. +sVeIG)G +9SV +'|(\&WB xF*xMS`UC攷 o<)[xROOSV∀ꨈwܜ~w|Sੵ=HhP@C橯5J ڊU7ݻ)ЄAJ%REX,FPC(rԎ)<~ZB(Po(B_"8Te- )%Ix :@(-N: ["ꨈ|֊R@@iCJ\YOaguAyZ|I>œk JXRQ)K]BjCJ8TݠRPQ!OR9Q]Z@U*:I5!UU*:=/ qk/Jfd 296*I$u^Pd3#~ZEQs^x#ʐVE.i,;z>g02 nS/gq>&rgѲ@tfe:VzA6 w̒i`׬XNj?7UCEIN6ON$$ +JMhR:!*  uQNJQ% ꔤTaU(7Jjz U8î'9aqD@ꨈޯ @RURJHIh((R PDARFҼ_ +bGSžODR(GE59け yݻ{{\`#hڽ0p$B$(5dv=61ޙ1.cwYo-ݨC6Ҿn$:_Zp!1ߏ0kV쾣&9ܵQq<z4_=Hgd <x$Dy"i7ƈ~+,zp9<ŏʥ#Wa>5H{Q̗ =ex6Hi}czXXk e3FhmnҽG4/oqq#GK=Hּ%=GOxfg{{{MX + Ji6boE.x10pN^ ˆ9k,/NTN- +WJmIC*IP9-A +TEK u +] +T +[CQL 9-p-_["z@Vئ9,sPŊRNžkzhq&v mUuOWqvGc2c>$LBSeZ[1pZ6i['pi E4A\54pT)YJ +{V6mYd2 wz4qwOr{myqD ÛGΏU-`(QEr"\!>*l€-MըQ4KQ|wQU( +Zw)hRjEѥ)\!7J9NQꨈ>WBU4xN*R6+i:aH&('A= +9T4])7IE #IOAe?J q;QtTW)PQCוX$͞XoQ8~"?6EލDm}Y +QU0'$W) @,#tÜ#s0o;ui@'Y5Y :ڦZW +AU +ztQ)a(  +ZR(%A(.P).㒪B)M)BxTAIW+4Dꨈ }FOMZN Q@T)TAPoؤtTW*Or4p-Vj~ +[APpҚ* E_ +O?*&4hW ridnunkp 88S>Yӑ 5MkniW~x $Z%ZWVXZTx2,nyt2Ti4QTB>JA)V O`PҚ +P +G TSjUrSi*_@Z B5P]`s9asD@ꨈ//߽dAASԩ%REڠeHw*C!O(OUMJ@|HAU_Dw=-U`tO_*H(J}<Ӡbw9+ٱ0ݢWJT|[ zF^.xz+TnUuCRХC€.ʑ@:4pyQt7@NJCJ6)SI*AjG)aSv*^sAC|QEUyT*wU 6Q?|_⹿x$Dꨈ\//߽_tCT)JOEM +E(RE<RBOiU@4*TjPx?ʏ8 ת4qʒ8T>_Ix*O?0*Qձ?篙pD@ꨈ+/߽xj1ǝ FՉ#4vWO^x+  +ғD<sY+\xݾP]/z,yQ满mgT⇐-B)!M%Rj)@e*I+\\c[!S-zLXGĘ z8]ѠuS}$5~}BhqDr8﫭qqJҞBU<*n V=1i ]Th9SYOT!8%8Q^]⤺_SY)MеʠuU():}ո ꨈ//߽^(TT H4Ti͠$#SqIT9AjmSdu@.>㕟= >BWBvJVYeWA;㡽ѶüvߗW\ʈ4kx|np{Oq3bɔ2?_YW4= zή|i{I :,@ڰ:^Y_ q`_^r[? =,_NAḋcuJ%9b~[kl;!yz~UFk$~=kʀW:6b&gS8PX <ʿ%H]Nt :F-Xz{ZI)v3GO0L&)Bi8P Pޖ7J#@.T&*#u꠶ʍ[uJd\Hh& d1FX#U\~U'A<&T<*lҨ +4TEjnBҕ#iʐI +T`q?5nHꨈR﬿~z.5G@QԩkU'<xw% Aͪ# + G*j|O=}=s]޹ȁ<dd0X-|O p>WT9sFVGZZ*r({ck_g͎iyI7N=?294?mp<+y `wDƒ~鱹[]Y +) 6=3ymsW0IF#sMpWr}%t}\6 +:K +4|e#[N>^gU22i!`t紳p%x^}nσ|#%X8%9S$r~ik+7Pnzzi W䍆N.~UKr".'{x~UP9" o͑fwP剩2VB}+79e۹cGy+Տx;ln +]c|M1XR+{f跘9׃V=QkK>&?@y5]TiM25}~n πPuG2HD!c} EkSKu %N#t餾I?gT ɞw1ѽ[Gd+$XDoGDP 8*_CR:,V>,Cx>pVH9OJQ] + #,9Ti*/ _E.<pjܑꨈJO4 +M)=U')h!wANM(<Х-=i6)QWtiJuXܘe=[\ gF&V" #',!{ZUWy dABM+"4:{U~>U&Dn~IpuzJGĔI$GRW6bk,QVGU:x1q[w>db|:hoTE,>ț +|F?WٰiაG$l=N(Y:e\:V4.d-֝N4xndq)>?bŕYe|c̦-qp7C/=Xw=w>-kj6eC6Vf>D υ팹{`j7N$vߛ3 ,r#`Wj乸od29!y [hW*?>LX[4q۸p֟|a_QXMg2s/sSKq~YfWCu(q^oJFG,K/"h&\Cv7 w:(洼>i;7ŠZ|E +yh47dìs+< e̓E>ֶj"i̱wdH݁o].ӯ(|IRKn:ҚPME=iƩ3V∀ꨈ~WTh*@ +AT"@7x( wR@+.N~t6U\Hr;69F< #iu_ 0fۣ^W>}euXt9,Gs|[fǀl=Ch|EՑN:Zљ`DE!co녰X$mU5b:c3^_n{gpM=I \v|6Gq[g ~`w쾿2PСP5MOs{m:x!#hȯ +MA*@%@fS <G\Ms[O (*Bx)!@ +)yώ܀۸5b t>Ly22\ŠcZ)S c^洼h&X}/Q"۽FzXzYbL!# dڍIV{ K5JKR*RZBSٓ! u-w2n󳛗#K ^#i.]tYP +PB|M'9K)TrU/# +G* +#ڦF:U[WRA WR)KC*/>E#蠚TJPESzpjܑꨈ?rB(zQʍTrSEuPjHP{T;PC*KfL׽Δ:Wmfa%(Ə& CZ tlwK?.YciAjKE>I +B9B8Vil!.4_G9襶 4yFQxD]) tTm^8)ӢM*HRI?R(PO-*QS\POE5C]RQ|rI4:<%<* +/ 'ꨈ}NS޲R +*iOU-AQP.TJU$x(!Bx' +J4x$ + +='Fj*UjPq:*oiJ(4x +zZ]Z@6k<ڞ r ^?:J>J:O0 +TpGEEm< ^*AʂPI$6z#TmNG#yQ;}պ" ꨈ c lYV<8>p;I~B~' +?feP7~ +N+u`cT?nƨ=O5]vJ#TigMO](Wt7-IʟL:cu#*}0金R{C~1yiCރU^t&#iS˥witoAƧFjm)†n?j],?ߛ=0ù5G.\fƪtT0iFdoC4s1h4FULhc*i܇~nCw=03!ƨdҾ݃?T{Ks5O6_~0(e 5OA#h$wi4+ :!$`N󪾊W?Eq:+|ڏϝX>UVq??Pu|6ϟ J?j/fOgg"ь:?Hձ cʗj؄3TSљZk>W\@?Gg"8u;_)-9ꁫ_Ȫ3;?_!=~(:%u|1~+as}4;R5#_)/_7}6_ȧٛSgYu|BFo룵l:fQ_aٛGьC_):Y?F0t%O~~btEU3_!q~^Lgې0)i4u̇CG?>C\;U7+q]3|1_*ȳ5lN[=4-طꨈtmwVKqgF4|Mz""X~=GOEla?~DX~=GOEl!?~DH~=GODl!?~DX~=GODla?~DX~=GOEla?~DH~=GOElz$?cgȧ!?~E#)H~=GODl!?~DX~=GOEla?~DX~=GQ?"ClD8>oOClD8>oOCLD8>oOClDH~oOCLD8GlE>#'6~=3[?=[?=[?=[?=3[,?coȣGS?"z,?cgȞ#'ӻgȞ# Ą~=GQpȧa/GOElѢ}?"z,_cgȞ#'6~?"z4?X=/GOEl!?GOD,#lb?~Dh@Ā~O6~}GODlzg%.s Ns@ ^.{\mݴKnWVExfg #Yכ-,NMbK4L&C^dNs^M iץgf&H^K~{4Uh,kY9C E;B-scH"םus%::\/`?< +,~&70 HE ZV^g ʂMǶ;E_N!6TFkkcc32᷹2F-5wVGQbݨOcyo#UĀ]V$䉜Ǚ ;I.FHs""""",OhI, c˥0 #ƴE]N+,M[Un .#؅ѵoyh?߱l?:=:O-m] ;I-̨cw n.>j?E16Ipkqc=f8}t&PX,fs5&@oM|wgVҵ:<D0I2qZmΑq' IA9u8W7#(#t{ ]N&~ bijzbQ1솶JZ#1o +udVX?;\y1%16W0#H--pޗג<8*?OS#pr (= +.4$d|`w4<9L2H=r#s9 qaC =w1swY8w4.". 5sEEp]V 6&۵yp&sFw~v]|݂8" H'{##d{CKT@P/L-<9LYd,+YwPj <,qjbGc# 9s7;7MsÏC^NmRVK.c\Z.Ů~$qt84qkv3{wll=h +tç͚M//hɭs!ԡ|s9GC`(UWf31_)|z:C䪓ÖdX{Gu jvs519ozB洖 +}k'C1ҙ͍lEmekM(W*Ȣ""""/#v\wmoKL|'75X' eVLJiyBv$4 i1/dYS $.g}prP -I;d)@'$+DDD^r9ѸdOD6ͭX"6s[kȃ +DDDDDDDDDDDDD@ꨈTZi"оMU찫DTF, ^H44h4]z^gO<c6Vd oBվދWZgb6_Lw6G~½>eGY3<ޤu\)VQPZuоMuU=: w7S&ɚPcMAyY蛑;"N4B,@\b ,%{a:, ,kMkE4 mjƼV󳙇+[{K䶁ڵ뺏jq]/Eylz1.a: cgW_޿̫Iڍ-v)!F_ۃ-Oޭ*<ؙ4Gsƹaz""-gx̛ x#⃲ +. szx"{*Z<(W[[f4=? +}c@vIz""i ^ 874GȪTG+e, Lj"ꨈ!kI@I-O}LK\ܬ!c>v<"Ğbz䈝GP^@ȱeyj9Qh6XÑA5F8[Mˏ:di8?eydxN "(E].G Lw6G fgh0_#_s=/dB t949YNm ;_;^r=*KU|jYK3q^ e=W};;K%p4gd-y >Vy:X_/p`5_NqhAzr5N12nsvG> I'9%[9!|ťUW]Ǚώ@Ȼ2P - W$^*15Ȳ;1즼4nA5`|IM4EʹGx$,*;̛4g g$q* Zֈ]hy6VI'Y+'j(F): 2пTW74.'`R˹ x7]>5V/tX30GO"'{c*ƃ[+|ʽ&0ݵY&!;vG/-d5|QZ1h,TǓalK(4]iZw9a|McJa"&<v:FyVvI3`.ZniΊ1&\Gx܎-'oTedZ *FMܛـsDi&{yT;MEE DA."""""""""ꨈUC#Oi>pp s|'ǒy^]caI×Xyik\Fd2fctҲLN @=f\&.4,Ӌ6mhv7q[?!9F)sw/m~.;Xаm`SbfM 0z6ݼ:G]|~'5Bחћou1ȗ >dxwg $ʲ?E(ʂn K߮ ~\doN7ems.GHZ]\3"F4P;EL-+4פ˷ϥ>Kb^9yQ`xc\hct >㎝nTZNF8D2ޚv.vGgh;V U&)!;[V q8 I  s[$iKT s+Z ;*@ NkꭵH݉ xY$XKoEׅ~s:hqrû>&ZC^z(qVW n ]66C^Y {X(6Y>Ercs2lQWH^E+t{r2s֋7@P퇤wک'Fċy2:G78٩h|Q.'Ҿ%-cL.3;a tږFaWwD9Αđ/uz<+ڷ2! +aLm{ZԬE=6Y[Kyu_DϚPdtv@@?"99vTx|5$Wڵ%Éq_B܌(D:9+Th& 3cbَXZhwOĶ>WO N7KA<,it(fg53YI)앳8=r+$z9ik88\E\zeyvS@gg0[d'hs!h>s̨=8ZN494"f;qI>d +x-!kʖr}gP|8YƌӞw MkAp5ˀ{?ME/|,b xa۸@4=O>l?0=27-nEXFύ&iڃ5 q`ayW=̌UV3]6$ɟ dyA|Ad4r`Ze?c*Wvr?_e\^ؚ.BMM3?~K& C$ӝ]69hHm/XF\vt 5dq׏3qst4]O{' غ+VekOI;E[863q%} ;Y3w N<=tl߰4H c>4mLw _6Kֱqpk][\ꚫ6:+U/XXް&wt;Y ]PdbB؝յu9O E|ꨈjkt<9 yXY%ir_m21F-8 E+L$@OZDE.tYCsc4N8]8Q]OQIƓ&bvF4 'ROj/j=چvEd͢>g6@},û}0$"zihMi琵9Ɔ<! + 1drHdph>>/phs0x_灥cio6jϙI $'̫*).ͤms1̍OH#k.7ByUajӷ8m8 Em߰s`GBfbAX=ŭ|W4.7͞Y {K\B+l.ɴT͐(\+<-5;I\-U10<A?$X0 .mnE ,pꨈ b8Ǎ hJuHDm=,u9]"""""-QfkscS[Nwz<| ։ 0$:Yd<ktxȢ"""""i*Wcѱݑ+${[d^@ t'x RX#L5ƅF E GM$*|5Jְi%DI$OeꨈPA#Ac3Դ|}yK{q $87k`.'4I|9ɇ0O#u !W:Sg:LzW^=c,NԱ3RL:,"""""|P?.DDDDDDXi1c.}n9n W;Ek%%s>طzLx9n VJsuz.<> C4b8su]{ON32bk^Z!{"""" n;߲lnpꨈ"""""""""""""(*"""""""""""""""""""ꨈꨈꨈulM7oq6l8; fa\LǾ8fcτָ>Au[fm~m=@Cw4Ӭs^#q܉349vɋ z[Iڮr#YwVy5ևR~'!0F:mU~wu6\YÅ`D{׻E \(cdeÏZ>#4F^/ܬf"8{8F6m<3kXwRO_`Qx"oU057?84jGgaB,3{wWa~ICUgԿDq~>ʼ,,Ynߌ|YaK+afDN{(>F.U,Wi5xf|{c[y7OQIt sH5o664:&0Tk@⪼ W&tB`|+3XÖV̈ kCI|Q*,Y0h#n]mإձmsȐz:ZЉe~d1ȝ#C k sCnȽ׎Vd8M`&W@xyO?kWs!t#LYf=t3^ؤ6Ya 9$YCFo6mN:.i(D+ FF.;&Ú֒Gx״F7Nowe v +LʋCΏ=5قp9-4l9z@,dQx¶ɓ;CӶ o{Z4#V'"Gd66̌P qESS&9LM,q&-k%n6wC?`ܜxtkcws2c~N.DrEOtؓC^=p.Ym>kuӱ7 R9rcfbo1N/h)4zLfixZv |9mJg⅐p^:d3Sϋ#/M7&&VVls;О썱ny|v_V){;:6M$I֯w jx'{h ۺUvN;)qۺ\\rZϮϬߌk!4'fͶIpi`ZeeO.e#/:_BHU\̖742sc3'M'dtY>#G5w쵚Aa8LcJ,<~6bմTlLYLҖ #U|h M֦vSfX"l[Z y'd\]5 YxDmd \cO9=J|#Icw #. ܴDf.|H(=}Ճo;<}F)8Swd1D +(j-adm,H k}ml:,5áǕ+c/ z6Pc_1qAW<+ /d%j0n&o"h@7iܚ Rg?5\tٙÚN7t .W.m2aA Հn-cJ氶^鮾7h>Փ` >q;[9 cvjY,:x]-wa nW}ǃ;]w|lkֹE&ȼQxY0JǏ5sZ%ۺʫR`u18cE$;hcu[q].Moϴ>M.mɴ~7G6XmV8d>Gζ@4qk;fbgZnyl϶nhhU4< s\2cDsI3Ө5%,+3~ sY;N;vcm{mrEhb3 & aͭM\A$zy/>|` 84(kDDDꨈĆw1F9\KO$p~%.7 +,iM?d ,@ u}^n >mEqY'NnaiMUĹΡ&F,9m4m{|(#GZ(5yPS>3ZȢcH cZ=HpWg.K`tgKFh6UGd1[ L[&㼆8nIJ36F߭cC[>zGs{Uln«S>>Qi<ۚ\Ƹ,pxSkvO$m=F1ր@X3KAPAֳf +h)\8L`vuK4h|049YWLDZh Zt4|k6FIXy{'Ghx!Ey6hRcÆ16cC[ + xA^a/6kw3CvnpemcnQ8* eۋ~t/P#a%hXhh(+|xc{OV?!F>4XXtִ5< /~!IU1庭U&$_|D"X[=}@K\|4|Z/cI`-noybc` 8Í5}@Vv|1h5kc=zO+ FGJ"fknp&Wqpvخh_9Rcִ^lǏ~ؘ7suCdѱ`>haavw ё22KZ1DÍkl  +G!hL8clQ1: @u$Ăi+cς\߈cUKŎ{ni-}yˏF5ŎZ|>0F]co΅xkiXQ,8k#kohkC@ :*[u }iVꨈsEeL(56ȏ]R ~S9DM4O[_*m߇ӞkX4\2DG׻7OGx42@1$xc5pwxxV;tm27kZ\wkt.kѯ>|3񤕏is/m}VNֲKcefƳv>=D檔j:[&I;?a4oө$vm ՚+Un*R c#Dx+׋iVV{H4k>\/ Fi ƖXdop o.^z.s,l6ti=KIQB 'n$ڇ80Y4>eaͧ98x;NT7XMo;p DQh X.zqNlĝkU]w&v>9ѫ5[mK=DA{9inhw4y|AzP:hG<8{YKlcs̚MƮQG}ԧeO i[IJPbX~D*ˤxcG?`*_Բ4E-e jWQoY= (Z]Ջ:UY3رa=I-> ]mf+\H:lKluf䭧ԣ& b tR* G_WjG/{UA7_ԤƓ VrUSr9[(G Vzydw .ך-}ꨈ8|1M"wFqcԩ"15ވCl0ﻨ7P,htf>FOsR=ϒcyk+6=-2nG֕h3ᘙ+c{䉬/,s#vvaXHf\vqlOn(0yGm4)5&ּnXVSv1#M9{65u7S'Z3dBCYX_i Am[EKc= +w[}g5󼜹E +>u4.fƗ52ck0nq>|Z>#nt0F#kmk/ {!EvG[y;Myӏ0Y1%o{w{v*|l|f\Ki[NtߵxgB4}SMnM`2f00oZ8;5,ZƝq ݗo#h ypvy(2!F#kծ</wkYp8~38`p{^u֖#牅-lx9$r8Fkx**=?#[3!&i0N[6I]xn صCޫ#ngM.<cA'<{f>Cg9ᠼ7kN,],_Uˋ:&M 5֟k=SMxv>K~jߺ d7 |AR:P(,7fH#Wk#Rs=vOk':|ƾ5VsZ+sr"â# =YmXIXM[ Bw9:ϊ#X|Uil:L]ns.sM!f#߸c9ςBь$y-q/C@{Sŕ z7$%~m%ix8&It6?{]ҼXް+*ݓm* dL/wbO^8˝ sKYh}1Ccq&H8scM{;#ۛMq"'YY;ٌY Z;ָ1sHҖ.m?d%H2$ww2nkl;t!F>8b.sbG֐HCGiH >@7z;OSX1񑹍 [d(y4nwqdFRK^@zsTo{^[ 'n `|nkz99#P$Ϣxߵz;A,l.;h9\~=xwc6F v#6q;|]e[;{콲YY'%9C~"8Xn;4 qpǓe{MMc D0rc6䷽c#y,n@mn^#cdͮjb!ƋAGzX`6xo37/gb=i Ђ: dfabd|-`mJ ]a;q`j9%nFc#sؙ#@4xt\ ߑox.ֽq䴃[O%ӀumMqFYݼ4o7g^ ӰdxMaK47MƼydXVm1=߈{LyqUĆ 6Ԡ84/^Zˡ``~+cF7WKOEprsL׻'evFkPXZ]BpkNqp5w);!nƬX$]2&8i$N=kZO$׍ŃyX#2F]^I6`1! ,v# i36OXsaD :iuC|U}:G:u+ Ŏ\.%p9kNϓk^ZXcpi.c~/OQꨈzƟ+)Y39`v/2Ό3 k~B,+H (1P=s8ˮO/pe8NҼ<q2]!U/a;SǙ075lw9^.lsf5tG3[ AZ!뭏yi]C۹!6 H +0% XXe}/Mm{l8H.y^ @zu4-c{CC=BѱBEns#n{@/ } +8T4,63 +kIqFk=./c?x* >]/ +,yK-  +I'HE cj2Il_7O_5~66(: +VS踹9 ʒ;vshQ :Qg=ϖ;/>84.A㎊s4LLフ;09*i8WF$kcg=Hü1kw0G[-4c6Sohq :N`ؚܒz-#=@qɫHxݒGHڰ!ww|!a S`c$[ 'ux|D dT46^8镤fJɤeC^ $4G(vcܛ7f^X4&KOs'=8^ޙ[Їlx,|o; _uX#91=Z潼״^DGƘv>?{2K!ɮ E~0yK/x`CYZ>ۮ:`1-kX;^v0=_t58Ή>7U푎cB9/Lg2e{Iz#ȏUˍ kNq/s}&.LhuvJnakZf$$5*=ڄ-+%lpaSNC%Q68h 8#ұ Ƹ<->$zkNFI7li4mk΂DV4?&Q$6z 'xzq AA*EjKkw ֯.G*ntt} mgI|L8Ix2C(I7pA)_ceEesAkmBY[ KրI$I'Hdai Ђ<hR&,DEQb E񍿄Ϯo""",|9#)sZN>\֗8H,+O13L᳞hs[AWph19Gqվaz.K$sKḁԁԀ6<#[aѼ"PkȎA ꨈut)" &(6,OA=ƓHvFdf6ii:&#_zdO-2= {GUW;ho>9X[>Hvs[soSBi ċ, +x$;. \M>$RCGW8ְ{\Ց2_D]IJ-F-y74ZC~~L,l熸XN]*% dO;.Ď-Ȓl}^ Q+WJ.hȅ8o C"oƂh՚WX~;<>G40 "\ &{U qmhx,tdyz3AHw094ziK$#]pyi8+gk5 Ǐs0k$h1GKuWhg 5XAsZE^9ش$șYn{GY9Xhv4J\9sr|*^Ns4 doclA}_6ef;eB#a 6>%i/k1K0x1ز3VD7&5ಘ:͗!2cX[^柌Q+Fi1 CI%`{?˧llmD]Md>l-dr8s2fhYt>afw$ekMR3 +Vc35a.f֟o{C,cطcF.֙\6XMekahg ^ͻIcO@ [l{t.굼`,a\,P>>SP|8铋qwђMr|>{Y6L,|5!#`kpy^z܌̏ +/9qs}J#p觶O6q4-$ NW^o,#!#'-0w9Z@h,udc=&9QF׻0=Z*uVq%Vfwqy&K]x퇸u8m@5¹˘IߑUM hscǺ}*r{Kf22FX괆ЫqCXmGC=U>>1HBh&|Y\F7&ǽkV񕱭wJԞ72h1aO;877ݴٺQi:y kbΑmHL/Em Ѿx+dXMzFNdw-鐴4g\H;܇g4AF,ݵ2wsu^}sK`̶ye=r΢LCn>dm5ָX9yb Q7m͊=QE7Ò@ƒP~s@v cׇ1ahw um'Wg͓ n%>'5_Fd0 \ZHi5$BYNsy1 6=Θ2/*x(ekc92Q&"y6m}yUX͜6M1IdqAmlW[^_Mf$|# 0Ҹkbp2~y.lOp7Itp՞DDDꨈG6rgA\ WBJyfdк +28F>Eg˛Gc1FL-H,C~<9ӵ8rrÕܒK cDa!'o;H="ȉu $>/̏5qi#[—ik%k¶~6nعqOH2=mnc68m2DB*c$F8\>TNE664 d"<#_znF5HҰ^8q 7,v&>ŀ٣s{X?oQ2OC(柂ư{@ +·Vf {ۊ` {X>jxuW ፌ{y948N"`gvY uk-VQhyyI;'F=q<$[ݍ><wVc1&ĖH,pGyX/;C 5ۋ^9=t3Y lf68]s|LƊ)cdNǵ_\8+ȯ GKNk!o9ō1ɧYqGNx)\wNlHKǹU|uY,R԰;-6tMĒcq~9RݵlMWiltQDZ8u=EXA:[D%:/XlRuW=:/~ovq] lmimuY͡LJ@"-ʗ%̕#h[$G]?34{XKc6#.F_шkqm ګxi1qY:i_!c8aH,pYd,1C#syx{Vΰzq \r͛ A u-<_iqGsȑů2mGV~ egCcaQ<#v-mS< ,2(2AZ ?s^6l#[—ik%kµtڬRbq'C!~斝7r4K;TЋk# <6WHs9#{hjcA"8$r?a^ZENfK>;Y 8y`\͍vj׮.n.q;8d}4 >|Lm3nkXXAh~gGCrIʹ&X<ZOK-܆,2vƷsJRk:>dDe\ hmzKHհ3Gn66׉YSGT0Fس8^lka:t9Lj0Dw(A`=O&{VbB~Gl[LdLlrN$%79υ\|*}4/*RYs'$!c ڢy*tC#;6KQ%|`;k"򬾓I[MʰKCmMWo2Lㅘ|cd2svNkE4f ndm.ln浻 nǝR43]c#1$VE[#&Hd&9[\rWe#dwglclI#Dnjv#n49 o<2RZ 5\YEݸHdݬseiZݴeګ'N0p/qyCnmz|dMqmłYh-26;CN泈ꨈ$&Q9P^VWX$:Mv\_yKbfP3ffM6pB /61r@%> Lֆm12GkU8a\]Yi0'&\\mǀ({}Lrc79|Gh~ 5NƱ*lGIm{G' A.#wuWNUV"8yZƽacCCIsf +ðT̓o@mcbTaq/c|&"̺9/Ƃ3#k'm}Iںnd1懱œ,]G>3Ѽ4;Jq&-\C(3τX_nmW+jz|8h  +˕e6:Lm'Ic!nm7;G2G3Hӿ~֍ݼd8*Lt=;9 w&.K/ eҳ,@c `ac zvK#,B苳%hqik@ym +MtXgk6Ln tm|jWStxSЎ&48.coGyhC 2P '@x\̝sz<( T h#aOX65YMsMGzcgZΕҶ)bk$! ?wGXp>eFf4"C*wHE&3kt+&07t?/Q+BXӵY/dhqg{˛+D{Ύ9 u[sp33q2"i Qcffah[VO/s3#!"6:e܂9WéOV2ytopn#?ċ#Ƿuڝ6MO!O eݼ8u.Vx,>GۥfnO,cđޖzV;{b7X?hiٓdc32e:]C]mqI3ń  {bYzYr[uZ͂m;V #|? Bw1vˁGA)[k/?f5%- r:)|*UNFTɏ$|n4y):9Ο#:,pv;ddb9hꮠpXB8=.m9WF>9tDDDDDDDDDDDDDDDDDDDDDDDDDE³˓;ۄ4t|Ak/^jVg{ \nhzבꨈRPR)JR*)E)QJTRRDDDDDDDDDDDDDDDDDDDDDDDDDE JQꨈꨈꨈꨈX˽Fp [g^~/?u$^T>Y::~;>uOqFwUhԓyxɋڐ=Lo Z+Iڠ̬yV]U.`'nNeeU/jOzA+8ln}*oʞtMSѻ]Ο*z7k7OFw:ݮgOTߕKqZnp)O>_pѻ]Ο*z7k7OFw:ݮgOTߕ=lv?S~Tn}*oʞtMSѻ]Ο*z7k7OFw:ݮgOTߕ=lv?S~Tn}*oʞtMSѻ]Ο*z7k7OFw:ݮgOTߕ=lv?S~Tn}*oʞtMSѻ]Ο*z7k7OFw:ݮgOTߕ=lv?S~Tn}*oʞtMSѻ]Ο*z7k7OFw:ݮgOTߕ=lv?S~Tn}*oʞtMSѻ]Ο*z7k7OFw:ݮgOTߕ=lv?S~Tn}*oʞtMSѻ]Ο*z7k7OFw:ݮgOTߕ=lv?S~Tn}*oʞtMSѻ]Ο*z7k7OFw:ݮgOTߕ=lv?S~Tn}*oʞtMSѻ]Ο*z7k7OFw:ݮgOTߕ=lv?S~Tn}*oʞtMSѻ]Ο*z7k7OFw:]UxqJ9GtMW.?jљ0L{ۼ29CoW]ʈꨈ5|0­p0H)6eȉ1'%H ii8*K7ٿenWjr2bagnsZ/I+$x紕^FLX2LpkE94ќvnۿfvb`~t+`gy,c,zsZzrMr|>"F@=>%U[is\\u"""""ˇ +3,k:4~l${G5z"myz\]sٸonڽꨈ0igE8K(F?k]`w7>#qa*ݙN pkdrP98??;J6߄^ρ7+!@.gfdjX]q>$7~|itS!@>W;fs[MԚev{7tYN߁1O?%s4_A~ՆnG`Xi$/#I7*3G] +!Ύ28o6,rkxd1/] k%B.h%:ѱȬGfu,mCLv6Ď==Wfա` +,@v@MI< + THmn{FJ;$ܖkZr7kEgm=O%m苛>.::h?:ʝC n=FѾ@-,gi3瑱lZ69 R{H[HtnDj tKg;Q9 i,zncǧLZ2<^Xj+LӉ =#$9+g@o +q[6Fn&/ye0zc6? zl[t,Hָ9-p95I6Ls]u i 3؛ <xМFe͛u`AĀOέm Z@1b3ngiAhZ^ֻ\&:8%x>^+dDDDDDDDDDDDDDDDDDDꨈvQd[1l)iwvޱ 8f){ @&MwQk1 ?F)l|Ftô}͓QtE7l,kFZEUe5`I0x<w|.caiA &tMk=mur=idCX <Pi7J~ejz̷BJ^;G Rs_OlwҾMTu?8K5_CFM?ʽ{hZ|X9qwAI;skjڲn49v{zϝ?1ʹWh 7[yC["NН`A opbAx,i%(C!-x*ƾ6ZkZFj &&c| ?JO"=*=oVV>=_bt| +r2dc?ҟUO2םv1mm zU}fn2L6Ö=94Hׂ}_6+[EeKv<8a}<8 v[TDQbGip3 Yw AsvK|a`; z&>L1 0w8r{9.0FK@3.}7?}Ǣ {}z߼nZ.f4Xa=KE4o{.+2m74:E +"ǝi92<,F 2c !6. PgvkCKΛ* C;&nChp&f;E8=ŢVCkƈ,jޘ"Hcr;m=}ήyW:GMʼn c }gZn&.ND tqctkapcww >Z^`s_3se-`iX ~&Of9{3Eށ)LJe٪n8{i-ۀ>"_KWdNV1T]ܰXE&KFf=;xg=>鍎!,bf; 쳻[9{i{C]Eпm;QԴܼfF>G>MۨPuU.S\ W_Gl|[C:k^FKO}͈o +w @q$Wt=;RӲ59*ɗ6bM q,c,Nl?6Ys,r5$ dft,z*,nXm#S@eC1cG-dr3f.ycƿjMӰ'<,gNRi-u(Bӳp&c瑑M9xZC #u佡,߶zHXDO%Ch$qF*V+rL66n k#kc_At% FƼ2 +ͫFq0st{5 CnkEY=jݏ쑻\X\Z,|c ^ 6$hNwmo-wuW+.34-WW8 ϊ9/cl89Ӈ=0۟!~\5Ā @'A_ckpdcFrDnnt-zWO(s<3;[` ,&&ƗF@ݹ7ƺ/(2qudns#!턳x;,:/i;EȧAknv]4MP=H^y}’x ss!\hFO7J$kcsWm5g4fbB߷7wKx/KԳ1 r#bph!KK}GNNc5b7 ^4/ `tZ纮4:JͭY60ntsCZ9$}+RQٹc70ՀG=G t*].xp?xV+tw2sy.kbn$OsZI i{F:CCK2lgv%ww2輋 㭟UݪWH̗CCid0'`#|mkX -x]C+[oGk$@&,i9܀/u>ݬ3fGt@ 6I]X#51r<5;@%/Y='.6y#ꍖؽP@n=B9<\#cC%'{۵.;,٠/,r,+-s4h'x rKd ~ 9k](-Mo9v언v;cyh>qLc4Ha#{roK~F݄K5mYq<VO 8&c#ɢ7<$qsx +>HFC{ }sF[X3,'{Ƴ|nk,ǝMi c G^k89Oŕ nX׾LO769 n#>pݔwQy1Qs{@ <3}:lF'$ZIiYE d|f'8֑n°s#u2]z8mwoc 8DKKy;@WH"Gt]Z$RջAg#Yd&N2{Z@[b6Bشl<|HIcd/-'~*RbH{7jqP yT#bis $yV/HnFQ|c|N_dYe.~ nĞXyxҵhu$;{ 9r,"U385\<<-$n6=.W#']c7Ga#o V̈ꨈX%%K6D@mRGc&lv+o$ ״PwSǰ:'I{ Ay]z4͎"y!|ncq'=AnCFNP''ƳaSZz ߱1! lossjc>ω{f&N6@ϡec^nb2|c0=Ԁ@0Ӵ?~|-jZD1Zc<œܘ5hF(ya3Nc1'kC_Yph<ߚ&?RݨD6wkt2og@HM, q <Xd;C28BO=zWv ry?`{c%2^3 cl7[Ł":f2I=FJ!=;F30f1tR\x't칎h}WBqi/Isox{vOxmE8 9F y8y1Γ'#kc|C%;;!]|S -tAtai {k˜[gv'~4[{#$ U{ZOuat l6i٭t%&?s%>i"Bh ұ;oQihk +{մ\őrȞ86EW*vFcL|I)c#Xݒ-g:g|nK mۅ[Go)'CV(l cvo4UసzfDXZ$G;[;ɣ27h~ڲBn6I1L:B@ @u7w_+s>]7APlliq$Xm!HYk>T6'm@<I17d-MW~r`'RvNK`w4Χn|y +=9۪;%I_MҺ-o_gZv`4ǵp:9^[ݶ>h v;PvS^Y3&VDw0{,Ճcrċ!Ѹ.0p^]sC{ǝiBLmfdfC `{e;'+ڬŗZ`$Gᰈ.Ex++|EV빠IV}ZI\h <I0}d26aѹ{^Zzrhls6Ww1h=OP(x3H81I@ӷ:uӱ9Wz;EŁ E,kyÄK$}1<j1uGdiҳ110\R kmX + +1q$vwz +9#SU {qwMGq uԚX?Ҷ6'5t}#hn?"KV#qm`k IOvb,߬үuJ<6C)4\l6D 5b'g$N1gI,s[|63ƶOSE^vzNf ~2ء~~WXWs85fBjOyzgE3]).^^@JiH@x-{Թs%h>I"/F3n4U+=21=,{sH!cbg/joߖCbF#{^HMJ{UPfÍ0{-툐N$֒^"Ȇ<@ Jyd#s ~~E'V&~Ǽ\wූ8X7Ifs4!Q$mMHU/kFQ-p4\F#ج\_,x)d-ĕ#{錐9+:uYp3YІ ]%ý|(@ux+ͺpRF}2A,V|2O;ҥ˱'se{ޫ"4woqIl>h.;x(xVZ΂5W(lX;l"@$xAPb|@Z k{X &|ejz䎛]dR+saa6͑k`PtY ^&r5{EA:DDDDDꨈ(""JR((R)JRr|=4\h|[S4\VbF=f,u毑E)QJQRRE3)&i$$X/|@xd\Z  tCo/cIk?JI7>JYNh~S7 eZ>3?WJ"R)J"(*))J"""""ꨈꨈs_DDDDDDTUH (ꨈ4:fAa{f2CZ:k#e?'0ϋ_!dEu8Yv wd-FF9p.[fӱrfu]G5k&Yi`\%?QŮ>#pcǕ0v#>M9x湎h`n"c4n KP̉ 4.pOK=>5c`;/ <7D;ʲ27Ɨzb629!h"L`lΒBBKAgDžK;UfqlOtOlR,@isςˬfPȅs d:2A ǯZXNc N,!D="oQ8_o$,#'yp"9tZ+{^\-_8HX U51s\sks5k#r8T=nڰ!ńCHW;нCdjG76T:xpݽdbGt&kƁ=}wZ+i|mW9_߫祐:{Y-)xںҵ=wK18n<^)[;k>`k8ڛ4oQGb=7ۃ ţuAfaVw\;ִ,x^m!i\^F7F4qa:QL#c$ؤ;wmk qt +7_sZocMӝL$]:S3"cqgT9记a"l<=8t zٱc̍=pA +Vy8/{X VL:g۸w[is\WKwE4o{.hoKO656S2aߍ$1ƨn Xd3;WOzTM̅c_mH=I,<^! l67@]Jp MJ3_wMs]4I^vr q,u Ik ;EZ4 o+8'IsIõ s]A壪bv!:8wz &e5_J?h!dž'in< xv.FF:7P:<dcuM̏<01ިsynZc:~wWy{uY\\K34~D׫H &9e#av#KMG"׆^| #cph5@~HF x\('Lc\D}GoN7 +xE;Y06Aq N.]+=n 7v$Ep6:yLnqt4 268AFv+c-GK.d7*9DqMWY~E&Fn27f{"74H%Ta~zHVE."dk$=^utK>jqG;'6 #]ݘ^ѰH$x^1Ǎ4NFѺx^=dϗed/L9><,L&f ߑ< ٫v]ύ3*)q"ׅ9l tkI4 g ?"t=J&jzZܩ.0JZrY8+ tKE1{tNc j@c32acp=s5 +MصcA0˒XK!6Ƙe }Vcf\I,lkZ總-hԞ<7VkҰ^<XOlp{[$v>$><,my|l4ᅗj5>8c".\2}6I/_U{ɣ{@Vj;Yrv;/Fsɣ{6 zFdCY-c/%ݺǁ51gM=2F1lqcc7[ Y=W!gh;;}[N:l1f ضd74HϚ ip5 3'.Xk渚8l{75 .'x]K/QLb͋m{8U[&fI?;lHc>1l\ɹςvҧӵ>VC|^H+l\Nl*gtw;!IuhAѺAxtq2;A.$cm%f@pGa嘟#=k]oi08YQgA #kz8F{Sx[XuX0p%g~$kC$Hš{q3|8oAxZhcFI4WD &tdRR9<)'\AOG!is^YzǍXMMD0DzteGp"]M-cc;lkK.u my3?S~ǿ"fhM=NBG;y5r|xovle k\]46cDԝ@ݳK]ݼsIFz>Dhl}nUxUO^OՓXkfI:I;tMg##$' k.cϕqHd {,kk4ynZd]2D\"cs[4@'Y/=ӉăDxxD}kɀ҆򵇹sXNG>ޚ@Rѵ83##{%I;ءW| @2WHQc,\~!;疆@q~>!COi%4v ?ap[~ ׶Xl\YJIn敾e&yC,[ >Cgqۑ<9afݼ_WWJ5xifٻG۶ 'Iq^E71䖻w]О:2əgSLq6#q_Au|rMH>AQGѝ9)P8 Y wV9WZc{G8lf4<|aDZM8 +ϕ ƍZֆ@/DDDDVaE$6=wyiu|{BӴ4O.shn&^""""(Rf:F9qa- 8H>=Cۡ;%| |8.$.,"""" ꨈit啌 yy"-kI̳d'N5Ż71<|,1wG[FCQמq usд8Z|8>^+HlIX\T<͏v WG(`ۃ44w|eS Z\ǁ`X<`<,Nc`,|S,4ւIUo\EX"u^l7q`{J5X2C>l$hע̇'M;ڷ8Uc&NDDTܴ7d8xN{f,hsz~^FYZO;A`r6P AAAX33%'&h!k#lb#y/q+Qtf7:nCQwD#[{E\ ^fd%!h = +MggcIŰ6mN`:$rKH\Qa?f-vÀ"2|,*& z4j#Vw,c&x\ƕˑos\ULZvIQm}v<|k zFOĢR fp-W6<4G&L a-J(U49p:iMG*YxXL m%0M|G3ظ0d={6~j+Q~Ȥ-WO 6EZ Udň4X|A!σ"3,r5n zGVN|l*':P {Iu||v;&fD np}k=AsskN%f杘t85ĀIVxY1sE8X|/3x~ͻë庼:{SJmϵaq#;A!k}brd!Bf!'Pq"f4BZmQ|l&Ҳ]kwk$6^^5-2K]$2^C!6`GP9+1N\LjJ\7 M(enLl54b5Y;"=5^Y[6:;iZ^ v%ɈqvBѥZ&Np4MsvF?_EC.ffEò%^76C#yt0;3ݒ&FCZ׷Akz r +Lt1dyZNN Ekh,wEsZP$u<:L<"I;<̙vw@'èUa=|-3 wF$b1fv@[g1#$le1 +ymӎrrgy41z $2iH )śӐ4LAόH=p"MuZ'+K\kϖfw۶6_TfTZr=v5w{6R^wu5]G t#_4KCY:#Uy}㓺y~>#C]۶o/n<8Vxdc˫c6\ky aiyB莜v?TѠ$s0&k])map4C>^z^N'u˾?[&_[pB:+=9F g ݛ A}v1H:Wy! ާVvDx2zA OĂ.H&clqA廣$Fz<87PʞL}]́[b{4;OM,i"pfkYִxkW:ORJջHmmEdi\o9.LN1d8$nm%IDEf ֻwύ(ԑåL[2z98Yz`GH`0'foK{xt EbYs= gM-hN O`6kM3pY Z]Y%/NM j'0r:GC|$|y^ݷOrl cl>_SVz>DzvfTy8񣍰 hfi+HƆm VHXƌ+%h./AnjNpI |v¯"""""""""""""""""""""" ꨈ|m47Ⱦ|ԖuhKbc -h4VlL`mt , ;45 +tUyq"ley^nq&|z>&K[ xzLWm-*+PؘKZ&/U?GuG>$&J)t@?T6)DXthUt.5&KGRz_ƴEȬ1l,a.k@'~41@6OAG+sAt,y֓`t?"wL*<9247O_%MʖF5 )T>A@<[ 1ܖjR5@ZOG;f--./p≱@Hy,#lbHFא\hرt|ё;,١\k aGtQĝ.zQeL0G$lsES\ӂ+[ck9k@t+gKv{l%slX hB:FFv\99F0D-,:ݧש47o7yпIŢѮGʪDDDDDDDDDDDDDDDDDDDDDDD@ꨈꨈc|cqi xŧӬ{Dfi@~)!1_ k%d7)%c4YV]γe0Hꨈs=Բ0ټA 8<kҙ3DZ7{.sݑ ۚ\u۷n]X-Bi21!5WUDDDDDDDEZDDDDDDDDDDDDDDDDDDD@ꨈ?X X?zAM/CwLsKmn4: Y3?/a]YiDmyc$^p$~i `7L\ZEr@6MmlXey܄#Ȯ5ku}DDDDDDDDDDDDDDDDDDDDDDDDDEph&Y&22$c'\q07IWqeȞHZȟQ=ۤ;@;|""""""",f#iag~G*;-quGc~6!pM|cRf}R |khDDDDDDDDDDDDDDDDDDDDꨈ͙F״},u?X X?zAM-&AMцvHqmm$v2[ $<:Zˁ>6H苚@{+s}p# c:xg5Ůe-q,>naa;it2fԔ4,|p+&u:yJ79A #':$*΃K#\8KրRO{"-Y1' 0=4ܚh9Y }Ȉң1>v6łZvOZ^AxfEvF::V6Ly2hc\Ȱ`^^V3-|X~+0o|dH]ש~?[oE+z䤺 + :wuB4[p}n~ױl? +GE6Ll{jQ,~cNˑCAO˕F籆G@.>Vx cUHi`)xsaM;'uxZ̆KLLk6c28UZݤdD\c5ӷ7; +fD4:O}V5\gJkcYt;ܯ <'euG+Fǖ\xٴhU#N;"GD-3na%.ai\g^3q9'o+?6_c.,$O|nϛIޫ+UpfDHKTŭ`d=Ǖ[+mzC.C%c \MhQrꨈzh&^w"cKyk+v)d9{C]3ɯ\ilMpwE(zfV>ﺞ([A25wsHdba@ ex4f6ɵ>UffGXnq&ԳV9#iOJc?mEZO lw,%kJ:^^ d& {y}Dm4t>&++i4>\|h |T8a۴[kp.=E/GƟ*W9R01CA4y&,g3O(E@%})X$?}H/X<곳39#(BWjz%3I]Ď\_O%e=@1 ORH +6H5clG6Ug.,&$xQM'Oμ5\]>$kAkEd+?|q&)k\Z5-$H#תr2 s]ljNc˜|waeQꨈ1hreKgh|'J[A;Pqi16hUË>'C3=9+Wв%\ HghPz{܈ڝvM*Y2wX=7?rWg9g&4oIJ.|v<=^u$A H9QkMnmB9qsFܼWՔ{9YDDDDDDDDDDDDDDDDDDDDDDDE[guAH@B盾8:6ˁ9z=9,Z^S!^EϘ6,ꈈƎI+ Oz""+]@@5y[{(W+_]&.{'csl=da$%ɰGNi ]T"""""""""""""""""" ꨈR}1s^=K= :;|w2!"lwN3_EwY`p^>GHZfX{AkOSav6(?XI; l?X X?zA+xau0/hR޳NjdL#l{0`Jiiq>@ %jڛ5ɇد1i >|- 1 Q AU""""""""""""""""""""""",Ve`HDc;(1~ǢM"X2]%t|9nASLzϋ"2wwmcH6+"""""""+[IVdaJcx=p ՞^Zstb0l`֋ Q9C+tzsfW{&5GtKbDZg4]cPȦJ)J8-2N뙧"E_/,3D>Dߙ*Ec35`@WB܆:7kZG"Z`~$Y:Dę0g,i=LOw~j[R"-_Y/.R!meM[&,xQ2kƵt^ȭuM>=WlYEX򊿑a&Nyω#f4["""""""""""""""""""""""JRꨈ>8j2Hr[X + +Qv6\ ]qZOKSlwE(RM;wZ$;YBU/'+ٟH?ɭGYonfbKDO܈Q?F;K9< vI'!=RDZg'i-Kx.|<ꨈ=2nf,Â`Vꨈ+%>g1?E~gXx6Ck[2"";*~ꚶ1mzWJp[Z,m>dӌ.c9OQ^:xҰ1GPF ?X X?zAMQ,bf8X (/DDV uiƂ\ qֈS gY=,Y,U+i~#[b"""΃hVGk, "Ľ h 5ע6 㑎{ =s\hʭl ql/;A6c;?&v1ˍ j0LJ%dꨈS)!?cx*2DDZYoʂqMxcͭ[;AXUO F[0𢉾AҞRR~"ݙ~,-WstD2'yڑj}k9ǚf3:!o:/mM`} ܘfuyG-ke 맷@#shl@$uˎndDR=FC҃8bɔ1]3f֗Gᱮ>jL MԤh͙+" io~+17nYdDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@ꨈU>v>Z>E~5"""ְkH|V;ٮpqDn,>'gz-S?>~yZic)ϊR~"ݙ~,-wg7D QJb!Y}/0jd4ؖMz&wFFVh;$~-FcӣgʂqA[4XXѭhk~aAz""""""*^ *ϳu#Wf<"-q6WcU"""""""""""""""\WdLF1 !J""""""""""*_#c $я *Rn Y\@|DDDDDDDDDꨈV!msZ|cxx""-SՉ.f$sAd=yf{G/Mɲ x8UMo>'cOVi/'+ٟH?ɢɀdsOEgS94p?4<z~hn2>l-I22bVkM~,8Qh?DDE=;/ɏ+GS\m+nGF˜=Zy$gгhZԛade/}y8)YYxlH_H%sI74pʄd&i]wӵƜYDDDDDDDDDDDDDDX%9XZk[߽Z!d``gAz G78Cgg2TmѾ2oxhp\?]{""""""""""-WzDy8pE+}g[`A?̧33ONiLqm֜ E8^FN6C1BM 9 ^_/Qm{>|5ejz>C!4Lǘ[yu<,/\.OIb0=)$9ZQB-ꨈuߡ99'($PG^:a  +3מdtUjfmr? S6뗛^yh EK vgjhTcY3EI[uSv~?5:@)mH~gpf}N,K[R""""""""""/ 4܉.8/˟V>LylD;s'}Z plc~pj KL89/x$.: ~ez:v5ip@f興O;,.{`l;H~<<884"k222C+dX Hq%>%Yos>lq _\ Om$^У2eO+#0̇D`/-k`@eCw;kִ@5҇HX;E;ž\q264VE z4 k7u kCKZ4 +5|]>#Y:1>UQy"ĎiǎrCi-H+bB㯗kV^;x[2cyndk!kڳ]Z(dGHX H#qȳ/!O0eB#-]=<@$Gfoxcqg{zzi[G ?˫(nt=Utre@4kc\UAW|g4*x Y3;/a]WZXYaoWS3 81\=?>tϷq}~V<>7FأkXֵM?dꨈ^M4lNM6CZ<| +ڑk4.~,PI x'(ԻK[,M=?DWǢQ/'+ٟH?ɢ-S?$ҳGΣ\j钂tˀ?-k2k`07mHNB|OHqgjs+ #˒i Ēe *JݻZ6lbGG ۃcc%8 +A΀#ZX>j㌨eh5;iVR! ɘ yA\n&?XZ{" y2bឧ5|:M J7HAEll<0ٰ<,;6Nȍ3rދ bfgIiDg̕{H?"4S#R2!H(g&@#oAka^'tU[Aӛzs66p,O]6.OJk;Dԏw;Af],4kt ؑ08.x +S%#X Cq(h$=cd ![&Ӧ>)QA cy<^|(4Pӳ4`H&1s\b;HoZbiYy90%s cn}AIk +L`@.,pK-XtW?6<ǺvBL>F<9m@ MGNwn>_} k;KfN!.!р$z/,%tӲUDޤ4|VK}7);@MCay$ORZ f4Q͍ +r4pfFpCd=|Llnw:Ӡ8xܛwW|+>ҳ'f4q|r{3F€5VmR)OE|h.HHs.nsOh=sx`Xh^`eY93a%{|=mk*ʟYg:'2wɌcasK^(E·~C],KwNDbl 7B9>»4K9=3G^9%pXƗhğ{2DŽd>f<8uMs?~EeL{+#S5ƾqxi9-Ğ-cGv#74姭\S?~D8>y)@`{'CKkH<WHꨈLkVCO?:|~#t jeG'mJڠy- uj_/:d29I;Fư~ZZZՃd--`;{rLw21+H7'N68$28ۧt8{m k29ǟx<-9+Cl>BԵw2[˫7ky&$p'Έ6RDEK#I>ةcvCVL$Y&Y)vH,B-At{kkGreŊY+ ݵ 8kx# |Bײ"(J(RYNVXC^f<>7ExkJغalnA!o|$6G 5R("""(}&e263ctq}m'* LPik jqvlq۽9<m hy6y<@ƞ倆YH{5Nƾ4T~ӋSSIN/OM'8>4T~ӋU+NJBv $V4T~ӋUhicűH SG$Uh "ksH< +ft7"cBI-IYM'8>4T~ӋU2vGIiÊ yXb=4 r9gGSIN/OM'8>4T~ӋSSIN/OM'8>4T~ӋTip#ȰvOI֜_5^fc> 'C`/~Uz#^D^XsKgs5i!Ր8wMe '#C\`nң#"/S-lrl wh=O PnR4Ņi`dQXϥ#2 $ gw>K9J'Lf198>Át=c'1tp`4h*m$i65Z|""""""""""ꨋ/$bFd-{#5[d_kejSE'w2di${vʇOFbдϠ{wQ5dO}""~LQ{A.ǃ;]f30ݪEn-[1Dy.$%l}5E ]^7TO\Sa@7y,f h &YϦM5҂5$R"Uh X^v;ܰF&dНf ł+mt҈)5J""""""""""""""(FŀhꨈvjlÖC"݆5[Y=~@Zn Ӡ:WmHA{$ +DEiaf?@n|lstA*]3c"dma#b=>qȉnF[al3k}[Ƿ<h_ { .hp6-p^~9{r8d8 dz\q5"+cvl;EYDEApEG""""mJ"(&*ZcDDDDDP(tR @mJQwmuubΕh86R DDDDDDDDDDDDDDDDDDDDD@ꨈJ"""""""""""";c60Kh;#4qEfrذ%|n4n$PuL!25akDZװӚj0H> +CQLc_-665Zx +>Bѓ1c$XH%Pr]Ǔ9,S>]}Wdwm48/$=ƘC(d dqLZWx zk4L kChpu(=bdeIw}E[u#j~g̒Z$_謠vqs"f0hah2o%mP<Q lRwIžX,wew{3Zk KvIǎ74slcHy/-@*tiLD^8Z8A[vWH2%I)YpG+de>7ǷQuFXrG&_ZnFIĒ)!Z;nX u}Pل2 g#nAݗn .:Zփ`gT#d:qɥ}87CK7wI IEdRI&tnsM0`<TgvLYx[r!%@Wl jA,c%TVCAFaN/kq[)hs45}"z]k;Wy^_BKEW^;2ؠf㚝ц8 ۯTk c.-ҁɢe^<8?D ǨCXO|.;cIJ͛%ll \ KZhlLb,l4S[ft d]bDfk{3"fi_y ~Iu.VolǬ[GR{@׶X 157?sodFJZ<7[6i-s\<"3U|h$k!k֗7 ^L827F54QcshE4Y.yl@;c*s<XeY$I&;m,88ngWj 3Jș.asoQ<^ڵw3$1ײ!%69Ŷ kY#pnl4<8 jcCM<P/,9޳h$+/TUό9:7žǴӚjǴhBDDDDDDDDDDDDDDDDDDDDDꨊP]7u$kԉ6@.ċ+!Ou!@+Z~.IN钘; ö Vގhp8" +DDXhnDmHikPnlZ|/SLcK'^x2Xn "FmZz]*_#c 5d +/RH":y60ny qөWH^G,ҷ$#TX[Csŕt~Ă&I|+7I$RoXa +|}Weײ &cd>Vkֱ"KW#2#f0撚^l` +w=#0hF;ptKehmxգʼrh!Gq xOȼƍEd97AEF1ϫ8+)YY$ ݱ9n#xmٙe .pʋ 6&FkYÞ2" _) L[7_;'мϥK6Ige&GyK&l2Agfk{!2bYm5F> +ٙŊ t)h ˚\ٰzڎbK,Yc9S]nG{(& kC\c88zż^j홉6^!4P:G5½k5c4aρ$5ΓݰۺZ(uMˏlݎe D]8VvɃTY1p|S^@ Oe8:Yg+8<ї;Ju6I߅t|nf .yʇ4&7<< Cm|M`Zz +#+F1e2& hkm7;e]L3pu\qm1:us´CM8'|>˵\okִb(WtsA ‚ -ɟh:BtY34iC=܌[EtY}~|"v$GmmNد,kN8Ց,Nsbjʃ~\VG^ԑsO#kMn=G(42D]+Dl EQxiմi団>R0:sw27G7Qo`!^צ2-ZL٠Xfƍ27 "p%#sBďlpw txaqsc{I'qEjϵ04qA|r1 9O5n5 +NĂY#fJ<]de{:nK&< <{ej:#F; "hc'Ibu0rh_*Al;RKxsYc.Őx qJJX3ulN4:+6#Cn9kYX)48ݹDsM&<+1._s+~ {#ƽŬVYn|WN٦7c E;YN +"LH[ sflLxZZz2x6V>8ɒ`wckϑ{J"""""""""""""""""""" ꨊ?\?҈Ɖ7j6I7:&mܻJ$ZgsdgxM,UݞW:v$rvB3rւ#nWqxfMS#(IE46? ÀRѻMhږc\"hpFgiu7щ6Ylx{(sml#jZܰ6 qa=6=O_b8C&~C|];p5UI/qokSI,m>>Ƚh<[c`ll|\O'UZhӱf" X)i^dx#{]r4Y ,ǤV8v_QE_0t|ݙ!96ViW +{Q {(ny Zc5,̉<3`\Db>!s\ vnGS^Qp>[`e;'/eXY%9n x,h26nJ6"k=8BfBlX;L}]vg7>$1İD"dN~w`"oƒ0,RFӚ]UfI,$z7S;s? ؙJ$B`Yg%Xbv3(F{MlŌ,2tCA#YՈջ<[;1Җ#ph9>^K.>bcek#dc/so Xr8XɄ&)㙯ٽ6i͛#B3O9o*piqu N2vw{vo7>qil1[1{~1#cA lLtm7gns>@P+b3Z54=y1/&h8Ny1y=!Y_>4B9 +Ynxqk_zhD[['d0kCK~MMsNUvK\漒w.{Uq]""""""""ʏ +')4Uu؆LXG$/4-k74H M tH&VW$&KNa_4 9cx7p 8t +}/;/o*.۷xגDDDDD^Yvm X Gbbc3S=G5፫}7sȊOfAԏeH͎;M>*ꨈ]ޟ鸠 'x!GԱևNบC+ ْ \ DDDDDDDEm`CA&4>1Ea'1#q&_I(nƱɖw?Tr 5sty$?#1 ֺ!9qn. i7ut*_Kcٓߞ1k\SB·$)ʐDOp㛻-s˚l){iI 1cvƍ;q9X5Og;2bKv< ݰѽQ# ?e"t>` ,8a!5sK  =Ύ d%ց~VNl<92dz3 w5߻m֏-< EEs9/{K UF^P—|̆8Za\An]wWBN6N+fnFG}s8K@sX@:ɿjDVZ>#_f@hv8ydUuα&c~CX? FHk/8mXyddKdmc+͵NEUxs'v Br.lh{M_!ǩ+5 7XR"[XNEP+;d\ -lb7{&|S3Fvr \bů_ 7',5;lcxsZBO3ɛԦK!$v_WУ&2p$ȑkLls[S}c|Eҡ2g9hoC +^",^ɶ9!'ozKy{\}X|jYqceb|&6{- A%\i}My͚@e|kwsH(ysdlvu-j>3q~^>Cw FA= +N>ng=NGdeǗ<2_S}B]𽟓4&h$ +E9^LXdE)E+[]!c[mpv2i9!ɐ h@#leBE;=xz?*&7P?;bde6sdck-@}A{2k|h3X#cGv֒9JD2p TcDhhomJ""""""""""" ꨈ= ޟ-_"YG> DE|6^\xlY4](pȥlI5leG9CTCI Z +_#Y[hY>_9 +AI&7BiXRQnK eesc;lqnRs1.Ž4kŊhر4O9rd2H Co/oz0"H_#sdepn_@W7nb6y$MV4i26 ^I 6lqwâ[vE.[4bɎf-2847p5]@GZ +f[KȚ>FCX*L3r ,B\['vd< ;Җc m$ۜ89' +c#c.@bxa:h7<{ZޖvB'FOg,lX~yH柂l $|uec쐅FsNK[GbS[II$'įuᏖ̗XKglsF;@h,4/Y%哎ܨ 柉Š͆&YF#;Xח5 Ԫ""K2^HN!&Z;x.<YnC1rfa; ZZHǕ{qjz<7vx<9Vڟga'd{)Ѽ9Eв X^hMniΡZ "Ӣ҆Fׇd{(·̆Y$9LvڕHT6Ъ곊 k1dG{dm4bǚ{`Y>ڰz^r=c^#D֜I'WYs. c;e Ke6)gꨈF }j9Y9G@zQ[c &zjÂmO H]}%qztEqh~$PE 2#-w ۇ1S@ + Ou>| '9s󍭖csƋDUwíeg5SX!ZZ..'pO /Utn(&s#$'޳( ';*?f'BL${Y!;ka1q>ɍH4gG8=``И5 ^Pr9 s]#b.T֐(_=Aœ*<|Ÿ:i:oT7i8WRLj޴./i!yi /z|^̌fX66 dE[;9aeƆ#{n< fix3Nnn߸ח>![v_ l|${LsC~:`iݷ]H<XG܊u{տuWB~o?1uM௳[;:625mx4ʱ\\`qGcWw}2.v~T(S_n\1ɪcO1鰃h1L+~_kuDdw^\K~RzFEM|;y]*\K3׋tAQ\|o1GɆ ^nkwz[wM;u*P`VnH1GŭqYwر?/w6߰ c5@I״Wȭ_p~5Naw4UW _̫tzq.%?6vovmu /ESΰh q4($y~ɇ~7_/:{YS;@AbY;x\Y wt1_g5}gV:V K~Z wiZiGOvx .mlx鍽h}z$.=H}LvG#~7&Cg==nip(޽L/~7B{w­Þ{/~&_~&_y pm&0 {*bf[;y{yWʲ7 hZm4 &UaP9ŕ$;6ְՍ_Az4Lm9/^ݻ 7W{,w_iH[І=V̩݁"'l`,o^|Ur6P AAAU"""""""""ꨈڬAҳf-Ŗ_%>2B=ЮQG99$, zX_yN]ozֹC-E D1.`toI xk%*A)xONj;mcl٦|ױXٝ=5;+ݶ^w7'XLL:77 w4h{kpƝ86"+DDDDDDDD@ꨈ\Nd{zB*FC^@1lUJQS#-= ~%j ;!\8a58c W"GZmSG֣lYQk6H>%b< ^9.ÃiI,K+F-=R2IfU[䐊>՛ޝ{c]84zM,QDDDEȝ34767WֺUcNy243fw!\9'ʼil6.Kf:nem#p~>eaaE `>wņFȤsLm oQcq"%|lkk|8@O@#myk0I?:_?;f/awH3cHߴ9np#p>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 27/Tabs/S/Type/Page>> endobj 81 0 obj <>stream +HWۊ$z&3+3 +,c&YBe׈Twva:/'9<0<<tA v^? '/1H1A.j4c_F)|< Kn>z<ܩS w ǰn!BZaVsQ)1lt`D2]%hzfjcöbŰCTV vwQt;4x`c?$)S: ̝0<J&b@'I=ӧח/k(4Np+*^K`bL>㧸/F(Hvfx3=2kX BrhA\a6̗]o:aӺQFO{?zrgkX<1:WaQĩ~lqV" D; &[M"[8^p䪝@bBPrx9\ Xɕ-.^ߟ*iMXҟf&=azPމ1sqvTreySQ)͵ x"%: rhW{(٬!&L:,ٱPn\" BSB25)I]ey0eD>(B/qWK-0pNײ r(G8T|iMY p.NH>{{DL(u]'g>FUËԐxp݋OÏ~Ǿ2yZ􏓶2 ;'痁#4|@)Y1~&'Z\M}?uERz٘oYr S\CM!o1M: +2E8d"v6NW g*UfY/rmMzؽA)^& yK"lw“ v0x׍ ~R.tc+>ɝҋˀ_s·.^AF紋1;"Bd@Hg4-)scʂwPpu)qsg݈T>ԧ-9m(]hgƃ!'T0S@zpi(@H{+T ؼOQ*ʍͫ `Ue'H< +C{s'2r|nlrf50pR֡*1Mf{0-{Ll4[Ӟז3q +qg%% Z$%WHM:_ȥXܾaYPPk덤kW>⬨"!-+r]&G ~ z">}z}ۻ.plNFio7TqA\R2sl6d;]OM{%`RI-?tA Cb߹0 BKX+̻/ڛziXІݷ"6c0RS$eX+VAN߶}v[-+vjYKW]VKR=%n8Wg9T5 QhUB4~P-YmU: ѺvKxu<+1"k.2Ӵffjv.IyygLדMұ[luv\Ƒ2REب\wn[L~l[#ó򉾬Cr.4Nn(<']n/ܝN>fZFb^P /ܻ^'RΠ6^_^İ}~K?>wkA۸U\;ZբHPyÍ4k!76hyV􇑗:НKnsOdti%w-Ml8}8edqj +n-ޚVՓq]X8nH-c}B &֗fl +fu#ݛ{)>(׶ϦMLqEoe;t*&2/j?ۨ4HkTp1W$Zj@+BuL-J*8.p~!Z_Td.8IfdWe?ntdL[ `6 EyW?ҠK@t +V^Ү[&OeP?Jc {J +ؙuwS@2QTq9LZTHiwoKN{,,ҵRPt͊QY`W'row’^y.N*>stream +0 +@&n0 +z1-+i,{r(x]l-\Τ\e?biϏ"l)%_tB淝kA :~ @T )Z_|cwWKp.f:VVg3 +Wcw?^K+Γ=,+0W Y( (<4䴽_1pc&#2uh2YzW2ݵ.sڋm͉&dA&-6JsYݞIUt&C#H XUl~UY"׎BՖ=hu{m El{S&b ܁Qp8Q)!e}-80Dv5?}: +̬tnWy)Gڋbv߶p1вυQdU]c~"~˾&Z6=4x]*uZ[*hyF8\}tOKh]7C|:!kn-&]D8% !مzP?jn Xk^oIL.[pSj@JT_Bo{[dkt Gf\}j&,v+Q?Η[ȴFv/hJOɄ. ߙhW_ĄKw"<{KM1mLn{CŇ +=QgQ>#uZ wr1ɀD% qaltgU|Sy3]"pR-%\&5g5 +U|=+i#3տQ>_D,M?Ket󐱻|8;YQyqma+.S ;NA^S1yIޞGmE̗7h/ǂND<<.(CTq<dm;ݦcrf# ;wy%v]7' ~ߖȃU⻘Q&'6_Nqc w:omp/6iBkI^e^Bq!m+sYkuR9ur Z7O`hRwK/ȩ.CUG1G1.W%tLͥDTl+qg% #sG/ 8|F"eQ[(Dun!?)(l_T3d,#Ӭߵ$tp4l6vWwx^ah``sh%h)E7xM|ے^Úl%CY *ǒ!sY ^*hf;u:dvΙh}=noȧ{:Ka?["8#*'B7g@/zD,1OtbmuegQTIΫj@۪u9G8^Z*T:ZԻ4w>_M|{YPy5 % 8^ *e//צU[(ɯZuG ʚ7->%]!r/M$?X6(M} eǗj0g=ksN/ P Dord<%(1({hiKa2Tgm 9J_ĠGlIr1zU- AYQ4"=EԘQU0ohoo-QҺZ F7NNRr"#'T] ,6G +}txլ%8rEz oo@vᒔR{ wܦa@un̈́uXUݒ B5.$iO4U*(ي2c#1~5!< +u}jue5V뼟.ъ*/ǔ/qO]x7:W/V'ՍMYY?wl4Y\/\ap p6BtM'赙)`PdMW3v=]d~# LǛyQ lČ~gzO߲r4^X}Dt2CsҭmGy0d[:#a}N&deju Z=eeY/0 <ΏEEϽ_n + P삫W]5zI!IvvnS?n%A=Hn\GbF "\21j.)q^;duy@I",wF*uaRR\,h@нa:98=/1 +I$F +6z, h *#GL-œ2 w/3^ RA + +漈|XWKr߳Hxm MVVهmsH'Z}C̓զRAM9F̋I&<&mxz'(zl+^OQ-Bd/D"2+/Up(-X.\guaRk&.1 ++1[g%=X +mz@f4$'lgF_ R|,I:/*'#׍kWu=~t;`?繊G+Pq༖5-45y`P5)# 3ƄaX~=W|xK$4r"dU +Eꊚ_mm|0 P bf_syu]`8ñ ѽfbXcE\A*`zDݼcڥ2`|DKZ[6<I L]PL +B:Ȧ=Sԟ;HM)Y^iwMxf;o2rFfJ$ 0yf?]PM?{_/gbjZ@Mz(,AAd*]g@F)/>ZJu^ܿp$NжBVM` ?(#DF:3ő4zHQƚ~Շo?H(YabuFs=k/m!J>E舨e.^f;Q?SNn4&qHK2qP0 +>Fܲ7UR'CGm7L ȸsxӄcJ+M1) Jm1ƈy>*>y%_."Fd_+{knB!/sj<&lP?:,ZS {0TZ6+ cX"O-J촆h^R^ ogrG"Ybj\ZDEAkʨ/qQjnf"j #i:ؑLC2ZO+H `fG.syǒzU&SmKO&n6Б𢡄i 5!+h&MTU!pug`f};9kG$3o@Dh5,{b`ba x]rwe„`XK%lp'#rDu߁i"AnmI$lc'B0\˼y(rKIP `0ơ;w;Cg-e2l:2GΖlKP\EK &NC1ћ OH . ]%'p'M4P[Gȝ2T?w0|qbJt^$m8"ln˯1D$!Wi`f >DRjǟvvzm|pHtTRCӀp'_>"_P/{x@sFܨ}Ï]pM;JNvS`26:Q =Q+rUhGo(_3=!F8Cl奋,+rA0.K.[͸*}_Aa_)s/a/`?&3%8?JkYbu[#>D8Odbp|6'̱Sϥi$e^YJjt7} +PBv2n8t)^"t엄{"8*p &<Ή mgZ}QgPψ9hp~Rtz$x!D^F ۊq}yT&,{6nqqLAhF +)̬@t#ۖt8 898\7:@L/?I݅~Fxy}g0}sOE泮XФM>޷D>Vv%7 fO$(uWȯ#lbT|Ri}-!4B&xQhV0)h(NRf- +Z$ K5;{=%PrR,/f:ĤKfJͽB^$4-MǪ6BV{)>7gkL@џA{ {Nɬo!)=|c:H4Urf](U]zyƀzS#wo@wX3f_.R$HИnG,&(B~{zSUb(wk :_aJU'rs!-a p2Fv>s`{~~Ayv>=xJOvXtZuWQDFXI;%4iCG:suq tOr?YL5ͿB;6j֪XH8I7*ovOKU>SX\na$N>;(/XF#g;lC_4(n޴4 zFQðrADtehfZz UԾ!f7e~65(z/_ +FT/thT1Şq*̻~0掭a%7u?à^@BuE'S$y =YuOyAEI g#k1btP4~i,V&oy_@k%ufހ7Gy1` +[VM>^ggDUglE%]pkv $AM}ɥbM]q09h9aSvrՐ'[LQOeN|zpb6G݋S4&cF7RiKZx*ITTURL&Fe!߽ %阥JzxcE`Pݢ6:rq07;C*t5?@޷M865Hd ~(ȖD+4aaɴ2[{A=q0</O.K{071OE:寔YNɭ=Hlיs_D=v8ԫ&֪ؼȩm.)nJy^^sQSqueG'GĮ* l8>gUBM 0-|3 z\ _n{)-ӭ БWMoL'\Y +\l}yyua6' +ԫoylk23Ӄv 'r#jqKPg N_"ƅ8avRE!&A󜀁؟/44ٍܾ'sʄA*ycK -Fz+}a0*:Ґtڶwg=&ezp(y/JqoD2yL (5u&GWZu]nVrt;r8f.H:igȫJuwظra{Kۂ:VD@xeZW AŎsD7fgjzHɞ56Ð{cu'}ݙ)`^*Ey\YAö9z6fU-AU+*}/LmM6-3_/`פz[({ 0AJg0ID#d^l <F~?kz_J1`rDgΪ2⇈% +f.zRSCۖ37C4ɊR< Z >6u tOtGzGwz&&71yd(BA t+cdG'.T|=?.Vv);?6cu?+$l=!8EH8$S2}UD<{hb;nf[TŊ ܙ >8G,ty~K60oJ{i׉xISñ^{YQ`2:jRz'5p"Mck﫰D$=WykR"Fk~Ćx3M-深?r« ҄?mK"7ixK0tOz($yDd5%'5L,3gŸ2RjZ%' 8ԡ{'?WwP/N1t)qz0])8Wha&rrI%Ga+(?'w>vц|T$НȣHԛ|@/vczw OH6QvHOI4 ޏ +|اq3R*s]z ¨gv^Bnu%Cig҇6jͮIZZ}rZuc7/xa$ɣn>1}?+6U7&%| y1k}T>|<PhE{TI8ODG]0 śz  ( O7"B\_І޻〻'z- *+prF̰=ruKv 3B72g 1#}Y90zԒ6yf;Fnjt!P="| +bތOAf ;yPu>eCjiKhZ$f1B0$ NZv b;ur%յO*;;z% pk ^\19[+HꞨv ZUitm rMjvi쪔 SP8̥=Ǝ& H02Yi#xvzwph:"@NIDg`IύA V14JoL#KCRJS*>n:IӪv-Kbغ[qN?;}M +;YpuZկ'y_o#Kg "VxmF6Nfra( +`|WpT%΢Ӓ7oDe/+D܁(>1%*` +g'Vxc^_/vn[4V4F8Ẇ %q%=[HI"5TۋA׿}_fd~1Ϣ6mގeݍ"!xɏ!4=}rw9pA"M]Po\ʟgj3s.Xl̡TSV߬ <")6S<}LdE ؊EcK\Q91,U!#L=gK?$З7Vi#qTT!ڲ/oxFAW7_ %+Up A螲 h~g$>pߪ;$DEnvx{!kT6NnqJ*'n6x￟`ҧ[Ve(m:wlvMIk*~GZ8_e>{\APR.?\HG'hpj\:$S_;)(['sf7)46ϕ;mHGSyeO-L&{SV(ЫiS`zb!WcN'%f6 S:ꮪ5;j7=&dۖq +ﲹWhhI)˄Ho~cZ@=d!ioͫ<)XH]w&\>WlQB8pKeLҡ(/L^(Y (J J51ϦS!m_Mڧ(h4Sql%Sbf lKy4)qܽ0t'[@=߼r_!фS͠0F%h@l):&r3ZU=bfbX˟40>Q<:_PbSfqiڏMQqCF1[ޖW + ԅ*W]ԇ>kƶU@EiF0HB Xaq5"dEZf)vqz-5dwC>I`ȸVqNƈZ.͉nq^="k/}If{L=.Wj;EmY+őAu"XcٷBc!n8Jk=xO + ː}0 :8eb/W{DSy~mMujCĺOyx ܝ~9kawm"Gu 'NвY$BJ];t'NwII@9ǀ^TM5.Utl@84DqquIk^-L+]{vAf^>DreXA1s`̻!mfrhae +F=vWhKCEuC(JAΤ6OIfr|n1]AHrbP>+啘mi-ǝ\o# +4Oywg\Lsgz{ 3𞥦E0 ŏəWd _g7;q.!=) bGNUN EYuk~wCe4Ra˗|pCyph +D/~nYǓPSTwn= mM*9` 8,ڛ!4l +^C/I^] R9󄠻/?^U +)޴DbXl ,JoH<1Я܋7TkOjadmDD>ca4?wl- =@Z/[#_EҫMJ,H+tc8):čȃx2r0VX+/)4BRU¥<rIp\*ХURg +Ƌ.{j6t_Nbx AqĬ8A'ԙ< rh^,>}MJzBRxim_R3wjٟ"Y|X K)e% 3 . e SUXu@XcU U{-D^uLW8bw0whQlm2tV#`v}N V5RTku}AOVfg(ҙεiLHli"snxDneL*~Qf~q܍%h0pO[Ԡ zLÄ8-;TUeJ' AC@'E۟ +#N~.QeR-Z%7ܗ褳 ޣ.F!OiI!̌& +0нR0b_XâuB<0Al-so%ح]bilb1QTd+>8nH8o#,sHA? 3nQj^T ,/JZolr;3*\\Vcأя BWI 4=e$_n8ݓDu&߷2h*J8kTu }lDp5r' :?J*ėJH4U_0BH> n_ 6`Oԑ)I?% c"OO4]̣GX +/S!t +ҁqlD->°Pԅv὾.95Kg#Jܽ!bjcJ ]FcQ5U*z-4EVy:j}K? L'I5L!Dl+E)&Z`6f(v&HvP_Z4O;ͤb%#^ʩO,cAE3WoSn0afv̊ ]1,fIb(=\C{|'e̲-1{^Zida;AG]/qgZ0041)QT& EHYk&`QrNp +h'd-/ǁOs'_ƈ0P%r?<a`CsQT~ OY9 dGg8vF{W=BHSK`a ,Px*cXѫ1Tɣh FEwfI g?U"iK=mBra8+R`)sʜ}B*|?DH}:|⏛S?t˟_3 3M%sZDSb't s5pc(8Ũoߍb]1g">t5%]ёT!p\(l%:B3(>Tԧ1*̋.b`lpB嵂 B0 `,S I LIK<"M<ܹkWܳS#SV;E `up?%#x +f\ ߦca(B!r?ȕQ;c׸\?>E mXG`Vy,Ucp펧ɩEAzGݢ&5Y9ئ%z[zYsѬ"B10Z_2 {ӷ' \I/%H*j- zP@d6lmM*'3׽q< FN\ٿ(ﯮ6M/h"4Lȡ݊vAd@?#,Q}`6)afA  54wt3)x콟MĂ]W[~Ԧ^\ PlC_ +#7թ*SMZ9vM y t7fğ5w"NDEgao^W +MXrIr\htX SM,9&4 jOBGr`sո]q}ɸ@:}ةބk< Hq9 +ZpwUY?%tUp',CYfx$;mZJ}͍v[$.##I0s.wt%p$g`-DU'ytyi%N/2*Z.?׻ֽ{ez!$E"p {X:+1ً':ЅpQM\h;5%ތ&)&zwNؾr}k2  R N<LmּΏ9YcSs'G=b3U:4I*Ϣeҗz +j(E*jK~Q!@nRm+!m>>tۊc>Au2Z)V^r>z2zV|BTs:'\L@:1(-ov'z5F?}AJR3{`s#ccv3zq{KF尊.ofIx34'{: ѩ؏/0DDMUFxي҆;Wij`Y*>SUm&k6l7 Ǥ>VBs$FGakY a?n> +) +THRfҮk:F'Xk;gQohj9$VrhYwO@R9_F${S4KnRaA?v_MƘR t.Bb&OuXesT19t +OMO9L/Gx㎕Su%!8Ń8JPh 2[`؀/ eˡ +P#t +_`fiQC-cgt*GffACIϢlMdvɽԃ X1cK]\/f7U݈et41߳ +̈́}i~/JChZ:3PYfή֖+F/9wxSZ;(`A֕XCZ'Nr%MR)hI Ӫf}] +Q7}@AwYN[ԓ?8#UcNh6 l1 ׻7f^$%P`7&ҩYWs]~ ]Q1u&Ya1unA8O5= +!p5MP?SE'l$sES9-$V2%ϵ{:?^-(as Յg`W7CI4U_lrʹIWiH2.3z5JcMRt +g2?iy}hu{mq lרrH!DC#BqA$nϙS_ONʋ ⿥SSշI>ڮc.׿cKA*3(0o4u+tkHOxPa"7rT̔j\xFfVi+$/K;@icgG_+'0S/KoE7\ SWI;{ s'<2 f;Q4ظfK'?d.KN~EȆQ4Ӧ6-FK6&D?R0 $yj]4G|l'Z"aʾE!RؐNRa"޻' #'ya.i+3rw[r +'!("VA!)QuZLyF_.k3@ Q08z'8U!)J s?y-'&4I$'Tغ }L1"w..c ac4Q4`-[8畖/&>Vr bL +Vva\+Ɉ/w;?n߸l%c}vǻְs%`w}/MLLTY@DĥyF'c]du:A7YH Ib'FjGt4~oS:Aޙ'l9Mv[`i,zҽ1rR4@8stB 킦Ȁ}x_OT +{-VwZc#~)uFeSZᬙHKhΊ K80p^`4",bSӸB>ӊ4C'vvS,ޏLp@iFm#Lmuw0cz@7Zct@&mվ8(h1 +,肶:뺹5IW$3V(N ho8%`˅p_qh`UivI/BcD4>gP8"\KqȴѸcŘoh|)}ڌ QCQ(w,~dSI/%B[JT"og&N)ŏTZgcLFRA9ȕ<`F@ބnwJv:tthlg:$Fzhc?1-~7rXfpL‚qay <'Kdcʷl7<݇$Uz=DWp* ߽U#4lva?۰i_јv#::4AI"%t_ɳiTwN5C7G^2 +zą&t8p.Ŵ~"DYd3*gSјe3>pcBtc,ڇtygW5B#>'5Pk^J[ŠX$* NMQ@%K=s$cgӷ~pI~e ~Wʴ@""Ƨe L>o6/V̵֊GJ_$z#tm!301gSPR%[{-8Z K*FzA##g]vŊN"STi#^xl IB0nT^}'3k/pca\'"85훥K2 Nuvab9.Etx%Ճv=h% Wd7,Xܕ=%zYRr1ۥ +=$R~kӻH~l7kUVzܽ)Aջ))ߕU|I $=Zٴ{ 5|:9JT=ύt˴/4_*>Efdy -RƦize?mYzK ]KݡFq{08s YYpE<=/I;kgt G`~ wk?h7>{ #e@!]O jv#N'( +)W&V…iR3$ſ*'a+8M-;?}P4$nxtZp3g.ƒ{Q1[ZYcT/S) $,iVb/w,_oڱ,,Q-հotW0R&ԩe7 H9#_ƳHG:'Ĭ3Z MyTEx8ыS~X Aqb&L7q!9j ?4KgUT4їl2C;:VUSYPQU}$H=KFA%&Z@ljZ A{8A8j"")ѝaA]ڪQN'g8۟35;߄Y\% /A}:\hwQ518^HKuHF݂ +Ņ,GH˯#Ơ3߅`Ŏ=mMb8uNR-5qiAJPPUM┌LXJ www\~A*y﹩fg\'T]m5x]~'0+:4ѡ-e1l&pwGמU艃zK=CEn 0 \EG-w"Y#eN)_VG(e_}hv_Sv +H8KI.*޵+gEdم7Њm{\P/MJXKA[J܋VBsgvI\uq=;ڶq9-"V掲KN$5m܌}G^;y+ +A}ρ(!XI-lFn[^tjɹڗYֈxUt8H`:9hхhls\:9[y^j +>1-4n +]KOM=|@ w>zwGu<1!L,HH%4k16o!_T@@+Hb]Is\砺^ uy<pI2ŕ}`|)~es4U%Læ2Tu8DXAO+1iV Ql.z\6Xpo->=C5c\rpvWԟ8'O>cLTԶ/ƍιqJL1wԻdfZwcH:;oE';!T3FᥬվGtw~ϡ‚e6PR7%M|^ 'rZybjir'9sa3R݇g Ȃ?da&N~e'.ҸR~G ,ʹ=ެ)>-mӎ`񦉭IV ww鑤Υ]A0d?}8&EBq,)2λO/̒yGl]=S/n#ΰ~=j!"'L<+ap&MK.Elȑ+RJ* ]t/EFS-"qu4iw.#ԝ Wwe=#l<|iI}3a< {|K@1UO &wFs [SOz]m'I`0! 5)R͕n@PucuȮ6P|C)F^Mx p!h]3%K[ܐ\ A`*oi}eBa8,F.vk +w Eno*Fy i'At[dˏIi:WAwaq! &AՋ]yao8{ 'iccIt$eԧaE +م\P<]ﮝ3Mpci>i|j{hjR,]p?+EJgj9E?(y* ; +^'Ǝ*H4=dmW5Mg| +2`t1ajv{LP7])ã;O!pB-L}ڠL p 7w=v*$ -9-:MwUA? ܩCČ3wa^@4:6cVeX,&Tp%pRw B n:_dvfb0'L|;:;cN3[ecߨ\Oآ$$/܌+iƢl.^(l.S=y6B$@5[iWQ2/f&6XόqEX<*zϗ.3LOWh:JwNUH +Z 5q'u#3$wޟ(*ځp)x{<˩%0/Ğ UBe?J`%I9 %hMm%܁F5YoyNcҡhL}\1k#PJ(f752eM`PhRd}DZ +"#6Q;Fl3KšܴzKY yt\4\>@iU"f"\8Ut|nzs'..n@Ud䄟iM`rBB,֍^$ulauaNgG>zG?`M!_.d5> +^?rк.П6@3AMHY,SAOH.R8ƍ.yN!v[wa'$r`})A#:' +$:)ѵ)a( WߊmOtYm,C 4A KG;y5!b. >u\P ;v\+6Eͺ3\^zFe9r T b2S4٠Lz"'ji$n\FUk]pcZG)^mI 8|sV79 q[HEF\7wטx>c6^Ye&Jɇ"aBqm cGQ=%h'#Y7>ȋD5b liHU$)qeۅX 9J{6g:]?^ +NUX`}Z_A Q.lPYW,6ιYKejWm2̝K k10UT sfą #1SLiDžğ:6GP12Zjw_y7N3ԡWPp5z#P6(La`L3)I3t Ջ`/(Dλ'/i(1Gq;93j,qAX z8]C&.{=ۖXwfk }l.g UDcqE__dBZ?gc- 0RvnNs~'3uKIf'/[[n)t|.8Sr[>k?^fcS֣͈Q]^a ,Wm3DYLm# +&㖙A}w`ӹw=צ@eV52hTsѬ)]Ay'1ݖ /!Y db]u=j(,c/وo$G +X[) ?C+3-ґӂMbvg&4,N:#]眹L'4YQ= +'dPYW*΢{\spM:\0!E$}B-5ZL +Diyj9yphFd 3b@sʁS@͎l+t׷ח<}(0>9+<`;J+R=HZbs hdzfKX1!S\qm>=mlqy07!G +vHR{ԈaM/4*ZFh ;pfIkơK`/}ߙPځ0u݆/ZFs) {q +endstream endobj 83 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 28/Tabs/S/Type/Page>> endobj 84 0 obj <>stream +HWێ~L ,Mzy ca]A$%O^&gZ+ &Y:uΩttӇw_|8|qt:= Mwg8;:;]NlQk=]^Og3O~-?g&ã@o=1p:Ogܧu9.cyA/I_C {O(/v){u+础PBkܐ ߊJyYZo>@.%HfxV+$GBԑ;z`>%kW/Z(g[OWY6 |@gAQ@p]L  6CqG_IEMT,#,Xa4O*Rs P~_: +pTPnPx;^Ӗ"_c(rbA?._HhV!!FA}Q >]5zWX/z+T5HF6#FbpN; rق盎 Q(lc77 s[Q+sgjA\$elŦ\3 t21RATQ01PEo$pK(FF:eG8I8ɂsQ,ؤN8Er@s>ZQKl&6S +tZ]>ƌԓ,Ҽ#gp] Yv +wg8`P80(@9˯} 0HOsLD[x=oV52Tt[e[Rt^wI/&mhe7\}} 2aȟ!Ή5Q봙%We/Z )ZRWj'içlgR;OS jF=kx +t^=DFA1ZƼÇCDB\q_['˞ l=tisSWsW0 +\5{ev9#!1vO&SeX!e0`d' ,-E%CIrTSFC2!3ۜCاywĐIhΛe"]dYBx=NI)/C7\!--ږ/B#1pzf6O@YQN,M6vjF2xpCWUG֕)}>&Jfԑ n(}/?D0mMn4G=V i[a+ Qd;7znqO$-5mpC$!DY{6 1?1dNr qNڂoXF}f!+RuubinX%h4SDW(f%kP(fcI[ז'ҒtM[ ڍ$rYv؇rupl;8 OhaBeV8]pqϾAk " 2UFG)Tav+O;o}~ s sAjq|U23MR2nA YAxj[z +i7CGrex^IuQhGׅ(+sJlMĻtmu6 t&)(awHTIHk]~q" I |;–5OȐd6f3\| .yd,DA 7ҹNVgrmL&r/jD?1ꛥ{1%'Ncr$/yo1|{q5ͱOyDG>|Οn'뎌~> %: ޚVٔ9e 忺?OAwT0_x^~ZO̭Sf,+(<_E8_U9` sǽZJ"j-믒.wMBZE3S=L43^G[~ B/+0xkT9O{WWSHg2Y{;sf"uWU%r6ORdy_Cė,a)ul C鷗BhL +\*}K/\Q862:@ޢt,"2Ceȶ΢G[Y|+;1ZԍRImDQ6,[A1UbI_:ܶJLRsW˺ 9I3_cOgIW=%TFTU"dSw6tiAYǮuӹH3ƾݻ+]Tf JA=Մ =CNp +8I]+16m#\f!Z20EǔĖRxG^2Q)E[ݟVH3:ZTx3/@x+%S7n`8@oTf]jM8!:Y`36"#WOal&`v*eģG .kPw=o6,V_~{Oەv[D,DםDB˲g܇-/¬R"MQ]jQЫ)jY|\uE3uE:1[S\:-*"O>ٟp?o_=xʣUeN +endstream endobj 85 0 obj <>stream +JFIFaKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Ka +  + _!1A"Qa#2q4BRt$3Tb5CSUs +%&'()*6789:DEFGHIJVWXYZcdefghijruvwxyz?=dE~d} ?gL:kQZ&@Oqеb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb"""""""""""""""""""""""""""""'n>SbfȾ4OSnDO!l|J t =f ccdPk(f!T~2{MgX54Mgk{7O<&OֻnZV= +""&1 +lD.tWg6FuɎ`=I OiΥNZ ϬάlzOQ>zV2|;쭢?mq?C Veau ;jKN[Av.5M& $3w؝6=NCayZksύ>5uĐ $v=!3O_|UE4or~1̦zYm,lN`'@"΁'@dZ鈵V+{XZ o~޳Ķw 81VS67woz+PkJ*ߴ؍gccc6#9;"Iw5'^W Y"D/Jʩ?k߶o"H& ցO^n5A|J/;T)$>w׮G)[bwWehGcc0FytZfB@֘ ׿`xӚ*-ttXG(z"NƵ O'']u?4VP݊ڐ@:߬:sMך* +釡)u!8Ta5EVSv;#^߷в܄ .*y]\(bIfeKYSӏbj +_GOYS8uÉUKek]vz/iR;#}͜^^F-XMkU])*K#c@=l&^RW3 +KVӅ~v:.˫Cs]EVEjY!۱?3vn1AX })#G}Mnjc?`4 ޷!kU,,Pu=N ]>X|ZKQGN? r!-"kT&JO(^vmF7OXqe=0 +Q7} ֦I8$׊ջu q֑gZd7ރ$$FzLier2V~>TAc `>/;fa=o5<+aB4IKeY-lF˹ Zq;쑾N"r>&u=B*h%kފpFVndq_}z3.?ϬRu%R$q7>Q؉ )ɽ i=еb"""""""""""""""""""""""""""""&Y,cU6ORyRh]ӳ3E ]9%Pz':GM-N3Sse^['$k}:NwM `^^EorBhgݻLeWԵRܐ?i6A hit<ߩm&wۿb;>EUiR֨J4~`z~]Ou\ȣ&JUe n͇O2C2TG {zy]=pt˲cm2B 4c%jw@^b`7yg_׿uzvy=;ZT-n7rIeoO_b$;B`RבkٻʅF[Me6Ti!]l +PHm5{j[˰)srZzaYT]wΌ;#nE b{ژ2:>J>u CԖo.׾,Fޏ9BʏXqe/e +rzBSԺc\7ږA<\0Iҫg 0ka`o*s,WNvGAԺ6n~=KΕt˦!XV<6A#}`&Uo- Y5܁m4G&<,qLE.m#ҷ t?Q[c Ԏ*ykΧCU~Z$ kdtJ;֧$Đ U;n1zkʔq!Pp{4uw%.,:y=ZjtWאnVXU=WKʯc[JYl,q`U[{{wxg=:n.YK=B侜jk峽~3w+u<UvFؖ{ vg-)d #ڑ:'M~Ѳ85y#5@l3_m5}p*wXWSo]IލeV^sz򫭎@|ntujHrK5;;=;̇÷d=M=%%PATr;Ryk[w:Idx;lKʛl[hAZX>ePOӴM6UQNM6O"FfeعT=imT[-yʠ]JOUTCA#c*w7:e.rnmb~ 7c.V{c^_f ʧa@U#Gzֺ%Y8y8B}`\2jH;'p4&kfKuZqڒ.,ֶ +˿i'dSQbI?.`78Yg+tk s?5A¨PO*Oٚx6 +{4ԏS?0}ч_T$(k.Aܹ~#x[/1z<a}6֚T/+؆]]BzY[/k]/~@/SĭOWz1N]%x:Rl'wΊUU +z'쮥f#c@c Xr`~:-}+[VO#FAtM@\W +G O#@ߦnӲmW#-^U^$2eЫ_f`V'S2f- Ty_5ټB [iJљ],U}@ v_ju5!)>b*u`.lT7^Awk~{ ]f\vpb$$"&;40R)[QN;gGJHa.F]*vW`;2 uq=$.Uy%Ib+*`iȩ(, +vt{H:Jt>9仫i^_ +Mvuk\:ٞ&myleE&zܣ~3b&ԙ)OPjlMqY+F*;w xV`=jcUrbI ̄@}%"""""""""D.}Ym-x +} (,4t67q93q|JJk?=}f[0!AjrO";o߉r(IӼ[UVkaڧdWV.M(e.b[K&'U>{IH气 +x<>?IUrVK5{ykg{?A6&*VWǐr֭JXfD.Gf7KҖapy+W'ۼ9=Nyy zjHHs.ח~ֶAbg%H9qȳkFmSEr{ s|+aٗDaogeaaCDqC1Yq6"\c]=绳*f|Rq>bepޞ_ۼ ׯ1Y^”I6hM51h؍[a '~SCe]G*PՀyqx|}ͼ|ʭm# D׵b"""""""""""""""""""ju_y3/*/R!52" ) dw߮DV,>6`eOc3s9PnT5J |d!n|-&3u.]-`V(mD3ޛ>oW5j1ciKwԊG'éFEצ g C|=}Ht,u!1bXm W9NրH?&hxUR\6?Vt,pA2]Iw^xYUYȀIôĴx_5өN7:giw]f%: x5/&/޵H5(5)]-zO=&ḳ+W|{TEBY}FOy:CulrJ [@@}+[VvF]ٖPֶ:4W:GLɥ?6:\\r[z}-Eץji ξe] bOc@h{MOU͗IjXvs`-*2yxs" +l-RrnUS) M=dYcJp5w Dve3EjXt ^fP9gYnvY_ƵsOdEc8OoX|K9A@}&]/`#5imcqXaKq@hZ|=_FEJP\l!ܳo'j|=:}XƯ**#]tG20o͓χvX&8ҶB9hoi#կtΦnqXzW%9Qv~)321q˦ڳlYqQt 1ldӒz+r=e]6]1-]HZ+έ q5b>)oefĂH>o'szD2՗ed-+WYI,O&$F[:n>M,+Jc-LZ+NigV7V"r_Gm̑Y>nv5V;y#x胾 osGbdvcS]u*Z> +G`Z~]A%T9ڟakJ*]C^m;vפn]|XT-A`=_Q,-ĕm:"#Ex}7 ]*_ϠvH<;k1kQZڲ7W^]u8BS1ΜBI ܁:aT11 1 +I\u^r6ǰVa0k俿2gٝz]K}fxߡK g6f g+i7Ń6c &##_o޳274p>[#'.rlGT ϱIcq77Y9=N9m՟vUS{#[&i[8ظ]b5I.`%o#M,^+}#@>EtiEѲ÷o#r5m)P,ZCg¯^繘ٽvZ/-VUPKWbd5my[엯Jwift]Ejջ t~kbdsP#ޣֱ.7mSWiE\r]'ǵ$eYd]M7ƻP@! |'cV-H B?rnm{2sp&Wm(oVVEV땑UJ5b[*%ӴU|%X`>G[߇F c_ g`6>dyX#t,Ī T@-v;MV~H Ӻ]AЕKܞ3|΍ UXR\y' PCix^d]׭9~MG?5`;{:}})vw>pw{+'}wzRԬ|Zf G.5Ǘ- w"1-j[)y'\畁X1lkj.vU?{IЫN@cX eȂl: ͎ӓ+tZskWY*F=[-W0F<&N5kN;;Aʹ:+uȨV[zU'D79?` nmg^d)^F:>Cngveuk|Gߧ”~MnVV6^u,`NP2$ zI؏yl rXgh7cRy)c*@n"" еb"""""""""""""""""""iuNVSmkgsYa +;;'k蕚jO*a"UO=sCU/ng"Ӑ1ZթÀ(vOz"]Ԁ{qهpvgO +QvEߑ"1=w>ð?D= UmWŁFvޜUē`.91#~sk/^=4r봐mFbA xGlȶnh5_P .a6z"c]]u5,`T,xLJ|a^^wj5Ağ>cjuKl6("\-sEx##AE XĂX.H9^α^9p rmv>9'#.^|S2q!7 +6fu26E0J6[hpG-9=?Ex%jl2}=3W+y-=i]Q% ЍvÕ}@d^YO@yau*uyyt2/r [CG>qkg8P;St7&N +%J:tu; cꯦkCqVw@׿=&ȱkѬ.t@Tާiz1ӒW-ZM'x;o}åy;Y%5Hk{L|_Zw=?(ct̫o)GfP$QskF~Ҭ-k*?0_ +=/L n!Y8ҫ:؊ߡ}6gQV܇Ȧ)68 uh_!vW]hAOb8k߷Objf35cM {gݑfBօ+[x$ \gfo/ njn.{mL=IOxyoLɸXJ*nJ<$u#Ѓ{<^*2/ޥu H +l@#]< Sq<9r*YIc4[\6 QWPQ$lކnuNUiuZB_'jvy쏵Qsi@Pv9+G"aYf۔ˢXimO"_tCb}EKpd.ȯ :'-mWYO\+9eIV A)xz̫1]ժԈVY\vFfK%yg5sQC^i5a5ڵ~wTx1  伵q#~y a&ԫ"{X4@??D@Õ]r^mKYXړG#'.j-o~JqcǏ!IV#ԏ]LZֺ*hBuXkEc*dE}Rs'rz]Oa jN?%Wjъ Z~4gX/aYb`ij8v;PuLlP6)2->pߖ&n}D=*3?(4 >=f썫 +;αʷXPy(@}]GQ7,ZPP BvEN{2cE2k3^+BG}xVT=6+׎ +y2'CC&HDPjk(6@㭍1D.zvcUًe;WWǵ +.r +}0uy܊ڃA8gD!q=Av?[ 쏇ż~~hsױ5XY[u< 1.:c] bqC#:#co Kb' +B@WSIArr!øn:v]h]./Ug"0CPtF܍ {>ΗhKYNv1c1c'Ω"JfylӋm0 벜ѩ6'hZѦR>*:&)Z׹gO,K1?S#s|<$=eUbRmyw?IҏA""ѵb"""""""""""""""""""""h̯)LǗ74ApR=J~C^ILWeWգU~2'oEvPN:-'L#X_?snPzHBb"]V qloz7O[cZܸܗOb=DDO\/'!@rt;3oP~`oZg|Afhuή쭝 R@-Gaϱve}>Er~@rO`>s=mj' h=fYʜ+4FՁa4zV/]̭ * Dވ沯ˆ>==驹5?\wB(ڱ_S`;͸}OL\eTUC9-ؐ5;#E/*\yoַ{ŔSrlU:^hĀ _y Q&"""Gs1G?-ƒ^e'{C~B|ПbEu4֯5֥ʅ$`ϴbj._Ld.3TrĀ&zAuކ繩zGYY az`}n"&TtGuPePUYΗp@'FoǤ!UIa_؜V ::yZ9E}r5;wۚoEYIbmW'р>cgȈҵb"""""""""""""""""""Fc~e%{;H<^1YoT!m3M`_c5YӰ-Evk@6]")=[GkPO%vƏ}rCG_YFbݓӮbVʡ +0.QYUP/%;3wޜhwnW[sqTmȍȀ_u:rrQ-cE!6¶oM~`TSn;T&SbWGmRtH:=ƶ>'ԭi[-k\QhuBIBylvvfP%A nc}tIv^_[Tz9 MaS S2`Yq^ɽEwh2OđNb6G3cgVd[xxqc墤};zg\zx׭kYf=~mKEv${50'[,qpXY[މ}&sF;r״Ϗf'Grl }PGvL<=e[ɱڱ7 Twz#FgUBE(rX7;va>' +97UvG&Mxw#.ȮsT 6ނ[`R]#67q.j5F}'8O7 ֟ M8QTZ>lzֻމk[)ӽ7&x|x_=./ffMa:~ocD]B|qf{OWU +֮v=>NfV5 ^Qg\ْ-2qoQcjQ $D(]WPd4q„뾷zBswۅ˓fUj2ik@A2k}mK¨]T"# z޽'|~S_0X"iNtΝr&Dd঍_ހ _%+ak|| *Pn?-ʢ%ٍ]Vn(y-ND_zYvR>2yU{xO/ +8UoSH5k>ʕK!.י/f}/[Ƕ*V/3:J-6 +dq ^~VLǽ LnX2l&`&]n فpaS];yL7/d%+jsn%~oh0#OfQŹSY["g. k}S?W*Ǿi ̤P{c}{M_vp +ZN|;;ק~ݜORK Vګ6ZpcPr@eGUKrj_blwudC فUmoG؛6cT:6O}-n9YXcxER,u$ Ss}qխbA0ߋ^CV;嗹xwz9i8GJj'g=;cy2i%U(?>Z;#[߬P@gkIqڡg‡eODz[/:덄WV]ʩN:]]aK՜/evK+VU֔RďM/ǻ.%~*dW<$ L^gdfᗵhoU*7Culfym|0]Xkۼf^~Q`y;rGp ћuuq&1I`c\*Xl߼кu eTdU^yicJަ:6 Ky53q[#ofCgx:FAOO*₰,` +w>(Cx6A:-^L:_Ϳ8KlO{Y']Anqv_](6y15z.G}5}oMΠn=&Ggp`@jFxs#u*sr,ʻ3VD1FR=;'MFyS݃S0zCBnq]CYX.ڼĩ o, {k99ul,\k+ȧ 5jO-h]MKIwDh>q +梲, GU=9oay媯#` 'c; 1:N]Zjjv bN }H&8xkX v]/o;S&ntw8cf\ZdxvLAEb6~Jt O˿y2{q-5]M&CBy0tڃ|@4~Kz36+ĀB _7e*([*v#MH[<4f>GB[m6WyYP}h5q=c1͹2>YRO +@TkzyubcSiU6*@ Gm>K~O}[!|oASg^?@j%nUK2PIԍ#"dV)1zx޴i즣$^[r|w^ ~3cc 8QmV.XOP( V]^2Cw)E Sd0a2]/h`Jv=;oV1MOmuX&'?1gp-U]'f +7ۑ,vlΆ([Fd􌣑mXP:5BFe ǧi I;|FJد +2eez`O8 ˕`` #`AwXK긭S#pBA{}ٍ͓xϏ*؃ː{jy)\:bZlQYQkVcmeXś)%Kv߼✛'َՃkcYOTuvf[{qu7sf3e`3,JޒMe}m];7'?L^lJjҡx@O6{1aC[?~̍1~vU`ɹ+ -l,v^ɾI]3ۭű٬M`*IF<8Nf^EyXM`/ {gr2x4巔 Vk~T͡OοGK]pv!ؚ YX(u;o6luu+C=v'1ֽt}`]&u|tFd{72`QgPozn] ʭ}?S7ކIa}mVv +5#u}箵Xa-ײTy >@O8nrG|VǕ[oډϏ Gy;~$8yC1!QOv؞rz-ع,,%F>S/F>Is^DTUv{v$z;jjr9a,˶d5 U>O~frBd.ZG߅lUG!~]I^Q1ɻ-6*wYn}ZVuy%fV $+~6]MvJX-=+H =c˼8NF *UBF-t5sxiS/ڍlxGFS +=&7M#+&wJ_XbI==yWP{5v#+)hȗ5ӍQKxqd@ oJ732SYQJ^PW'_MIi<8T1oByH&`7ExubqyZ̕`a1^b{zI_Pq3y\l;+u5uU[zF~̦c7c+)V[و:~ޚ=7ۅͿRր'@ex?9hKsWXb'9OO3o<{M^+N+>Ѕ5+yDZ&if&}en~Ci57«tX5Do:& ]E1%r.[npt+נ޽ u <*zdZGk.VԵb"""""""""""""""""""""&u,|P|DT ?ͨWM/%kA`= + ԚUm1a @77bjQ̇ @JI ڈWu|j2wmjUA-ֶ72QUSq)V<&,,:K~=em:Jtt{tgUwU!{qPޣz;b'`gM|_!+:b A lj""j,~T/j$nwpzmVE@[ Pn8Mͻe + wkUYkgfS;cdGF6=aJ I*4{kg埪)?q{&UuqxUe[K\PvuwG>3gfdy5|5!'Dͳ uj,]Y +W-gXz~>{eV<7@B5)mS6>]1o-j[Q&ڑGcDwCuqG n!ܟSKպ*K eÏ-׾$ʽjS GlGVQP*X9o{`4 .e]Zۣ+&K: +>elj7/>C)79bO-'@vX=FhGʰjZ'[Ezf>V9U_BūdO0+tPA 9✺ˢ;L/L 9v$lk{;f:zX*qԹԀC5lId 'BP0 -ٶ}jEbx\BǨ+إ l3LjrzS6VyWR~n[D0#RNF]uZXͰc"??dy?ӸӪ&~R5h;xѯ.[-{;ձ[jWu7no0j- Ȫ[!RY>$^+9 +Z xyw۾oGXa+슬M()J53O/ŧQǷF3ywYY;_qtx91@BZ8 4@`#ZkO)U֖ v>O2馲.[Jke @4Z=n޳^(8YV dWlGc5c節Ω.QEA nh<`߶C2E-u`y!LOzX\U}[ȯu@Bz.[0/ED7|EuR;뷦x;ǺJEeZ$b +cgffr|kJں^XjK+l۾;$s*cM`-[讏r:}6ꬌ>~):~" +}4d}71E_{so"2&D7|>1##i_{ws6GUͻV:#[eC> +'};wyyY=Ks]cfï/b׮;ޞ=ݙf^6BF)1$0޺zu*WamἝ{$a{y}s/[^6:pK@O6?TB5w+vC3!kدU/"L7'ɤf2@;T?YoX|â|qkr¶-=<]eXv =KBdT1& 7xR\-TX,陇M{]/KwVwQp$+Ɉ#ᆭJ=3ôe*8J +cc<[Isغyo,䚾5"lu!3k` `b@cs_ tK ʞgRFJh`W%:r;\YmWQz|C[ ⌎ܔ*_*$I_0V&ӂH: +;^uSDrg^ M۴;1nuQC2Wg<5( +W\t4kFuֹvnOƚE +>G~׸'\wĦȯ{qƶN@P}{X[Ԕ/EƷ5:۰eu#}Mc"|mi;Fr3Mr?{=7-ueѓS^` ̧|ηUYIPǵ'/6i%_D[گgSZ['&)] h'dTP{y0kb׶:v'M¡ +6y؝;24H3]X5ZۍH\1 1utiAq- nדѴA`In]`˩+eJ?5tGC rrq8(qPzYWяf:}(,R¥ ؃ ⻲L8!L~%*ȼƒhOgyĩ_#Ryzk.B=AG]^N#،,~ZՁφo{?)ٕmf8)]n][xb=wt5*YT}A#d~I""ֵb"""""""""""""""""""Guގ:8?mv<=M<.E]j]&ܖF=&虖YzF* fpgR@_Ԯ;;36'K&EU.q5r-==>?m;8M {Lvtܦ꫞ e!I`ǑW NK|}o_6ޟevYy<ޏ{rm>csSkP[I,ڒl e=33Y/f +>!iAk/Bt[*ؕYa~u%BIҝݛM=5Pcĵ,}IDjM胲H}g~Sv8Wt~Ё1'KUKJ T@H2}}Cc=&% h@5c:irަfOѥT6C +dAwo+gb5Gs}|CZ𲛫#`Xk9N]C;.EiZ1t5 ~3>}"eVWڼS/6ujNMځL^`54RR;i~=](;;/V,FJS&x]߼=Zev5a:yy6,Vr,/7!10r td9v7AX 5%x6d:W={Vqn9 dQJjG. Cw::/P㖤y7;jX]d L v}XN;f;y5,87Kt켮H3;Xzl=$fn*]=E +y{l}陗ebd^jz04W@qg ̮^Bdllʺk?1ba_}GfuOzRb놉%ϔގ +/Qcq+rRGj[|\nF+(cXYy[Akf?N޳zbyMo3jCe#7r:]y k&̻YbhQ5QʼŋoBCzEVu9V=L1l;ef6U nk'*FCV+(_[!gdaÈ`ʠ~m:jWZQrEv6:h/'|3(ɶQVU3+byJɭl'.r5S.IFs`X ho_Y\l8%W] +Oo3,<(kjrQ]Pt{(޽n:hEj ŚUuSۛ=*2(5* =:9X˥A>eM:7A~EV^]ncv֣fVw,UyC :{t 0h1nbyYI;m 7/_ع _SAX@=7>asɔ|T):?g=;';?&/M2f,+@peZ4[91Fq4,NTQ3)kVPml.l_mLɋGQ^dj(ŷ_3 ^oKNhzҖ~pET,`{dQ-t|P2}0nC8koPmGam]?SQhՕ74p %Lrn4U.Mt@` uLl$VqU$V-n mv<xs[|5X5 C +m;>g]2ΩZ.N[ +MN#d鹣:FUP_fB[rR%U>/=}ŝ?*ίVpi,6W>v+CĻK;_Xk; 'ZLd>ҬMjVh +@w>g1l6:֡ wm}L#;dڊwη'eL_nԩ]:Iu.g[ƅmc H\kJԦmŨN#b{']fTuOPb2Pk+~Cn_E/zWt,ϛp5ĝܕ9}kY]v]_a(Mp3:NI˧WUogم7R`S:WQǥUqՓ22Sl[]؁aVŔ:ޏ:D?i|kŎM-NWȕ =zNeSVJd-LX.D?d}B̮~q-f5r{cf9]GR^5Z¬|j +]N^Lz{Un/SXIp@CwhB"r1Ք +m}We_S'SlJ*62V] ,~g׵b""""""""""""""""""""""""&*jŭ0P#b""jԱlJU)n ͨ] 6m;~o +@z &Sy>bsg!>ŢCR}0ٕ]VLw T|};o"""""""""'+[AV4AOq;?٪ro?oED6MG`YA:olbՈQG +,DDDDDDDDDDDDD2 O?kQ?̪ܽ'؈еb"""""""""""""""""""iun_Hΰ%\݂ܓ~GۧyPjcӕq'|WN꾹qMw"g6Gq𥃈`*쬼:pY[wG!2<]]xxYP^U $6#67g; j"z[u(;:>su*$y_| ۰魏Q;:8V mfz{hM|_mE+*֯͠rm1Rj)ׯRAZe[ܦЊ|ͭa_5F0K5olYMİe ߸;*zKcznifulv#!%K`{I'ī9]](ARmqDw~C>޶pAš*4B?/t]j[.(yqp+׷ˍeCZYTCZ$ݤp)l+,B1UJɨa&ox{j.򪰷̒=eA^EH=6.ʪT5i%9P~hl{MW/hT`YndXB=WSW̷fwU5Ջ/onεu[V8`T7ڞL[;ShL (cDJAsZȀHdM)qԕ]rm(R*(ǧc$9i7kw5=O3%jq!]p8/}ޭsu.rҧEibb=`o:*{&1rUU!""""""""""""""""""""""""""""""SvHily߹?#|8F%vzy%ѵb"""""""""""""""""""C?W(! Vwŵ66=&WFF ez9:M ~Cvw>͏( S-S2`auN&EuՉ4_{k@w1t +Ia|JG~ͯPi [=ydvAhC¼Tk=t~q}2h(h`gݵ#b区[c[:ԅfY~.{ͦ>vyyfTA&Ԓq}ٻMNmt(OfFޫ;΂dEܘ(ֶur'cu,UR2kNdLC@kkT5(*:"4 7vᎎP ,V9ruT9VsQbb꼴Ƿ o^e?s:~.6kǩOmw +9vr76F7OU ~5( +,l Wԛ:v?!PX+;:^n~{ZZh5 +߻'1)@T*.HDDDDDDDDDDDDDDDDDDDDDDDDDDDDDJѼ3B|`ǩGcjMҵb""""""""""""""""""""""'dPM>{ _-_N:5i4zt}pURQ,vN%$3?zmDFg/&Գi:""""""'`DDDDDDL'.lAɪäuc ɖ""""""""&˦j.a;f[$DeP rJ\lzic"ec lF[3Ұa=DDDDDDDDD@׵b"""""""""""""""""""""'"7Sh1|dK|L2 +Qg=7gSTqXiъlv#ؑ6A<|4_uXRUk{34~V>+w+_P ܳ]ާL,au6սwTD|,D4td}^4ǿ>A9QAN\^AzV `A hOBn,d.hOeqG??]O+׫nzqgm U|gZd.9Gg,S]'@."Nfj-cmk+GaQU̯CZ]A@>-~y:MO:[ɬXUbI~nmSדR fvAJS RT߾c&gQ[/Ub:He<8Ɨ]0򔽋bpjΜSCjk +ᄡ 'c3&=~gA rfr=}+}YI(t>hW^\Sk9Tdṭ!j+8ʪ-mo_q*iE}#{OagnVEU9 PR]{Y1Ʋ2Z^Ÿ +5-:=rz:(Ř"eQ:zڛMv#` ϕZT(99fDWp +tgd(j!RӎA(5v%Y~ET^y-]h @ Aеb"""""""""""""""""""""'#vjSAj'ZS6U?2i|G{-EhƧmfZv?zO~ [kN6)9V{K,,9Z͂)*ǩf5ZO'VW  (~v:zcu +SءUt:G±+Q)+eVk +Ka7LށuZ>[?bFr;]w^0F5XHf] {znCUoTT-Iwԟ! e6>Sȣmu۱UMYJ55B] +Oox=&ի5:m`6diOdU]76sU]B`ʜ,B ,7۰%Ne5̡T_b V?ygŷ#5h(,ZR@^Py';ON.u`ͩKk|] +t6gF(-2_%iJ ^=gאjId/szud-\AV[ٔ`}Aӯ\SrJl^|@IzY5օJf`1P  { jld~gOjKqmVŠ0$ xޱgRAjpM"'v38*'[9<-Ic -ZֵGAg]m`㑿5T(|޳a_Bڙ7$v?zWN3eWbi!0u#/^?Ld.ɇzQeRbO"}oSs׃fPِENY`PYO e]D+ӳӣ_+XYnsJbm Maxh:]ZVx6Sf=doz=tΣ]VٕUxQc*" Cܗ켚l{,ݶNԩ$?{gzCĘ˧"QqPCa;zSt\1&r=ώ>j'Nn _xMl5?,l|<>@z͎j޳G.A(،;5zW=GX3y k;w ߁oT255ZF&׺o\^ޠl:5|ED(@?I㞙-ɾ5_{n>K/Ո ~26PZkpF!#^O96 "lJQURڬ +OyL=ATZ2*[7vטQ^$b7+]p8Yg^5;,>h/lB_+2(0!=9wPIg׵|^W%߷m-*K\-W? o։{v2;Uf9ꍘ61j+PkNs:vV[.bV25dCbu _Muմnvyuu1m/m7%ޓ]Zzkutj24~qoYڪnc +sl]C/ ܉uX/9qbF^\4 )7y:K[]LXZRȪX l>a9t~,EB> +޷-ŏ`v=uW³7&kuz^ U"1PB}ݦ"#\F׮u<lLxyu]Zڰ:34DDHl>oTR* r:b d̈귶bb*yOg"¤f lh~@yyU|+KObI +ؙ#!VVW)f,Cf$>LDDH :fmIbm +*>#In}XuFtVj Pv>SfjWseYKPZ2J>PDFUyj!٩?ЕWa3DL5; +֕q~đ^A7fjk:Uηt;"'yhuMo#9_a&MڥTcWؐ=xID%^԰pJd m'b"""$P`ݓfi!:bTi:N7SJΌ_vAo}N"" ӵb"""""""""""""""""""Dx0YWcbnQ"Ƿn^M/UNEtc-4d;Q{qԟuLk1^z1Ȯ{G>M| Fߴ~b{,{mʳjs5=-U$1PI޷%z;;/ gMٯ-c#&,̻2_W& UUZs-G}ulEIFLP8:3xg +9.fr|}N΀7)-UM7L-ɫU3)h^ݶ$KǺ|޶ks +EYnu>i|Jȿ~eJYM-%ܽxi6N3λNC՘[CPY(cmzMޡGS.E [dc%yΡA#=HYr.#)[bJ s>ïofֳܴ'{!:>FfxWV_ڭ6.=e\'bYN~O2NG>э{dTZΔ˭>lʱ1vfeSNlI#isWt|7~SX ; NN׀޻_J'Wb+iExYze Jج\_`Gf'd53mONg)JaQ,] hi⎓v'B)fCje**?{g$߬V]7t 2$puu9noK[ͱ+{FPY7'HfwOʹ겷wb$瞕n_QtYye Hv T&P9 +呬R[ +) 7k6rVBڻ̝=ba,N)Xz/}z{]&/E4ٲcNbOU~L9}\&F_/@C{ﹽ֟ Mebpo0}]]v[e_|?bk7~H~CMǿo31f!Xf;{Yw6oSZ%7㚴V0;}=rxoW9[NUڵVɬb,BXw}L<9fm5+p,dr*f 1$ۚY_:cUJbyإyF:4i=#f1˕zUNcr`|ΦfRJ/C +yye{[۰g,GȽG*\6vy+&e0:ͬmUV'cDGW6]͐nMd-Cؒ;3";jS]Ɣ7(<]ٜ! DZ:һuAcYwR$nF.~ަ~>ÓJsӒagʰ5߰u֗]e*Tg:B1 [~G7/=y8ٿg/[Z2);۾%ޑz&E.K%cSƣ`eSH+:פ':*d[wzȱ?m[> ܼjp־boCۿnsY u05zv-C;bݗyqT`7Q]Fz".uebev$ >_ĝA7\biXrΆʃOfz-heo7|`v_iҭn:/:pr˲NzWY7SɗygHna󲨧Ye~`d%*APnxW_n~=g|؂,C6Oc[}63,Q-86%?̱j"4qrUC毘I#󦈕\W9&5wE]eq޸6[i/TtQm `}=`oit~]ٴҶeSZѠ9a]:,{2ju%>Ǹ -N鷶E\ +<]F{lJu~JĨ4uU߰G+a.. Q`KZ9U4u'KIȭ]uOl ~ʵsil]An5_R*6t=fHqtm3Եb"""""""""""""""""""Cx) Z{kEUgfgB@PLuo72 +}k )CQј1OT,v{w_ )$能y^WvFU,M v =zUlc#~Z +|tp}`J+5r{V`P-c BHĂF;=g:vUs˽:O+r]߿siu[h=A6=.OM6;3T[c1FSվZT |Xeyw +;ﷴϲeYUlFJ +>{QQU|R4;;bdOl*+6pP; z}$wSG.efƵT,JI>.F|ǻʽ*j!F`<᯹ϙe96!U.6{ax<']חf[o7o~sѐ.eȥ + [𕓰 =[Ыvd,'JuB>^s/E.-m-2kDܒO>v1|)N>8-u(uzlҭ;R:nt6l/7PqW+D4X('lGm0W^v!ҽ#J>5ةǮCc[}9Zme +.:45%S[fEX +"l*t6ĝ:JbًieħLX26qq%C*x +y=kg3Zgz8JYvu;+)1MvY]uJ- qn翧;th[,uZ84ibXG:ݦ%B~ރu_ZfdjKev؏W\]^FNS[j+G~O"l̓,Ϳ,e{֓Py| G-O?N9erMa%+/!vsT@}'vZˍ|~uzmkU]2jO5>4 +ニ}5|ɝe;?>ծN:+ÙB-r^-WRV[#k =![X][vgMķx|'NOONMEjv`KܿOLpNSb _f^ +#%>@™va@^J#VyZˊy7ֽ}?Ím¶̧Ԅrmh}m Lu7?h}+Qp +/$<6&[EAݫL+Q'6c]u9GCX E8o]nIcjְ~RdF=LuB+#Ǿoq:Yy)ŲJ UYT"hWNgMkݑ\lC| 6>7rr1d.|VTx2ܴpfЀ_}km9 צtn"܋>k]Y+qUug#,jd&mRT&$r}Y0c/}H6{&CҖEԯ5h Dž1ƺ+ )*AR/#˷vfFg >Sju4d AjhtgoaR<)[SE +!~[$ӗ2S= wc_=nSV-k*+7ׯrVEUZsKT: 5} 1(f!ibI'gzᩩpq(,,j^@۳` w'nY,mu~¸DƦV8wtր;r`ZBdյb"""""""""""""""""""""""&,ՙB|2TI)׮='KwŁ3:6bz.""""'/I"""| I""""""""'`gSތ '@'Hֵb"""""""""""""""""""j_NEg.F;F7Mzzg[Ѩjj[,kr椩Sm+mkuC%I`0^ё|jXڊ?A㒕Z(t A#Ȏf!- idߖltzx0`vZ2YEWr=NNLuO0*=O] $wA3tFQeXWZv{>;I,Vzm kOej,+:պUP1Rлc6wN?:;-.pyv>Z2֡B\:8o5v5U_e+Ze ĿƏm~qFGPguTK#Nu cQl]8S[X/ X؏/hɲ5]PK؁â/rA*6<[ +Mj6^db6ƈ>ᑓMv:Y]%x> ӿϷCX庳CdK}v:'g-:Ysbۑ彞Z⃓GoKZrlzȌ]vx`~s]ɮ7@].;Nu]{YrY峷dTkM[j]Wu_3P¾Cc{aG}.οyuS]RWRAL6;juЅm]VkwP@Po>c/\g[*Եkj.+{ճ=>3<6 +qzk/UouC2T)-߰ϰx` +76mN=0:*T #"کzm@H:۱8KqҶploذ{g㻪uRsTiܣjKA]POoz$h6ď>!WUFAukyg2QG/>.W:( +maKWbn-=ASњ5;B,tÉ}rL]n{:تҥQIf}Sc٫rKHp"ݎƶ4wH;.ǻĘM]m]/[0#rc+Ę؍fJ֪rHcu者+cCfǸRV96XMGr@;jZR^e]; =6{oScZqQIjې/p;' O5 +&'X2^Kj*##qoF;ߴտXTr'"j ۾>Poo}! U6Xqu(T?V븽9Em `fny]z21E_ W1l6Ȕst; uNJdd13(Yr֋2;=SM4af_BZƾjH`4Xρ~"\NIMΓ0q:] {~ ۘ!HdM>N]͎UP9 *hFDZѪZzUT& zrao#s "8=ʩjJlʤ.Go!^F2xgo[˗?3(:R{M9VKJе*| ,״t֯l[OB*0@|-'O_1*J~vkzm&O0/L{؜3-[q \1K &C%ݶAPƎ"æfmP@ +ݞ[e`kZ5xj*UK|Yڑn`woc}8|[)!ﴵL΄_/>zѰ1n=?ݔ+mʗ8j;7 YtWXJkP@ +[܏M?E,1;L+ug:J 0ܧL7q/Gw!Kk[ l fu6^ſYCװVVe$@A/cCYqVw53wZIsOQȩ05hܮ{V։$t{[/u[`ZS⵾FN {rR4W]E#/~8f[dS_Sc{lwΝV9ZY@6RtܴS]=9ΑGK^z=h[:`>w ,˺eհu5kq~Ig•Ke3!p1UbI>΋_~ +yy.>">g~K"ʭWVV ey3ky5)ܛPUs'K+-f{$?o^+9V<q{:Kc-W볖8 +T溎B2.jmf֡Pu=%EbÉzoS[ba1rr| U"ak]3ħ_ӳk-wfs{k Gz ހ9}S#0`u>XdlNIħL۱dd3WVç$,I#x _BvƷQM>iЬvjf$=u*2zRTa 9$i;ө6u6!#Tw%ٗA?cPŢ޴b9Om'k6 T|X{f_ G1,7A>Q8G+z0z 1Q$D企B}Ǒ:E+ܒպ.H{'LcwHΪѭb i/ט?Wo3~R$gn~hwt5XlP/7~E VR $.L|\[WaOoyd2:u8.Y^mw3VX x}w7՗Q^߳YZRo6כOz?h;SXwѪ{T_cCu}uQf盇=r0~]qe+©]@#{y_(2Mj_X]6sݹq2&̵8 ek R){#:zR +KQ{);%Όq ;'u"؁cY}X>{fbaV!pT<%ho{>+F{O$ B5N6*> D|**ڲε[JFgw[_uOR׍z RrnG^swĘO_TkuӈU`Ckmv`'P̯&ˋaZJ=LTZKu>?כaKtlXw +uD&^6ceOuR"FTT\}%~*=}j'B=-lnUkך5D1r+ʩ,+(!"fеb"""""""""""""""""""""""'aT( ":WE37.˕SZrIu^""yzŔ#cgСFm)0j,y33ijf:'وK5AFz!ahZnJWj˒jf] RNc@CC~dYƘ}(ϯ +A lzի貃t[>DlOQP6Pa>p^\7o]DVVJܪi}V_1{-<]jЌt6d?G}Mvn7]ǻ|(JݻIh6Hڝ.Ku1ʭ7TYWy TDٟ@ٛi5үޝrxoN8v^YƳ3>\փp-}'rKk*.K_¶.ĆbΥm.E+V`k&z.N%i{iPvGu@Ijijn=DiYXH`A=L]GOy4 gW ^yhֽ3?RժǺLzo` Y m6 GcLq)eV5V.#% VE +{$}ϙ[h+]g1|DZ Sq :#9c3/é%2ٴ 0#GY͗s~X:j^Mr:b*Qś+?._)6ۏF:!6uΩUXV[|p5۴]_VǡZ0ml6Rq7h8lmT+[=ѣ}?u] \i?/2|:(?~ǦkJ,[ٗh {m ^OMK{ݫT +brR;6]K'zZƪx;{lkSzg֎9W]V[(Pp$v׶l6K7p⪖y :velǽXuʤAmw EG&v۲ul#)}J'%pgK20t753(VN[#Gs.ľ1r>1Yp i+1񖌗yZX^fNw.ot۲[9fzz_ 6yD|>xPu.F6]ے!uFz y{ja#`ulk.mW-SE[$[EIVΠ=ƽGc`=^&̌<Fd#pPJihlxӵb"""""""""""""""""""iu~OY4\Xvee;WS?Ow2PiUg~C.=2r1S.ԕX[\vt6uV}otMʯ^5ؕU=ƉVU)]Fܥj"B;﹬<gK:06/N;G~n F=KfSe.BۭcoHY;밾-wP;vBovw=l[mW&޲_V*zn'En̺l*Ȯª$GlF +dҮnZmar icb>KiWCt6.2RU>KbU`~,tķm ΀{=wUרZ-v@`)c/ͺsK=Һj_Z[n*746w#\/tIqZsq8:wZ S]ńl=X lw9=#'bEn_f˞|7L̼[S*x( 1~/AťpH*=+k@vzWbߒ +oo*XBQaې:?i~^oNjRk¥,uwvCP֭u 1=oE_VUf,b,JGJaWӱƫ|*vvt($~OE+TlB_m+) rɼ嶔ڏUM*` ?3u#WZ*EE`Y*96o_ܟzN~v"[y̅a$w#Nf5t`yᰣ@4,ݕj!,BQ`Ck@<5MxyX͗ b$;(S'9Ɉe%YW;1qRoHn_2,u ++5r0vH>N~~^.Mw"}Me3Chhx=' &_2ڌGkԂFz[3c+6@̻醻2~#=;w&QXȂt7ų3;>Rb*Ib3`ܾRz5?Bie$9,Zh/d$<@R X]AuU"Du)ruw~8H}[T5FkmixayfZ՚Y:` f@Q}͜>*UvZU h;s+Էù8ߔcS 0~=קK}'x3^r"""""""""""""""""""""""""" Եb""""""""""""""""""""ytW` Z4BzǮTi@ֶufHյb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ׵b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb"""""""""""""""""""jԛ|nK[{{Ѱ|jqs]ttv9v=x ' :$Ov}NX8؞""$ZAw PO,~mdDDD}s *]_#eU=λL}/ĝ;\Lm\}x_]I9뒅.@$=> xǤ +,m#:Y]l~y2}׵b"""""""""""""""""""%M^ҼUmʹ*B@3Q=N0QxM㣍@V>gTd +qzx +f ~k= Ci<Z=HUXPصּǎkr:faGO EeDk 6M>b#dTp(r;Yg*ĵ[\y"1 +;lw}S]*{_6H_"] h^{3G'rqxO2,)SR@w|f8SqRX㽶ԑC7:J7d_̥a+ݝ(D_6,6$.Kq,S$;9gGzRaȟe=p.}7*~еb"""""""""""""""""""%_tެQȧ ”e;˚ހ QT^=:NoP|Ty;hm |,+SLzc:˲]xƳ6T;zu_֒z1wb6X;'ٗy' .V8!tB{[uJ0{T 邐 =2Yu5Aeŷ G`;M/t|t`ͱ%'yԬUnY1VbuؐI v/~߲uIo|>1-/qm #|-rmV0ՈI$og^~)lUhlDzn9tu)Ixzx/ +זԖ]V[ّ¶u<Ή--jY'p{&<3NnRZ \:C~lnu3w(( /kq1s'^M#?[R;]vDP{vwĸZ6*RA=񏋇jZMeF\[Gz|柎7÷dQNKŰw 3YnND̦g`*l" +v}~[N""""""""""""""""""""""""""""""""""""" ѵb"""""""""""""""""""`ï>J2~A |r;-߮9X4aOQk\pU|ruP-+3f c&&EANMJޠI,]m51>D`72zV*#^µ-Zk#cҼ9 ^X r Yo]nlu.4eҖKp~i`Sյe;O6.~j,b@u tίwGZ%zOa=xgCU?4[}'O^l{W:.QkۦXڛk~y{1fr5Ycgk >b +`yuJMTXKqa˹;cX,}K3Vf;,O̙ :ǁO]ߕIk CŜ{.аzfPnJ}exBRYQ +iovJ^.ZȺfۓTPȵ֡U@ +Lҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb"""""""""""""""""""'%_oZϲlZ1+bm9[ q7%9A9 +?:əx#5򩪻Wmv]烁U*5k'(fvRxoc^9#̴!}%_tJvg#bgsbDZO~A~Ye d -'x^aVG[9;Dfi/CW-;#^?{/e@{;̽g~l V%0nH=r]16MvٶT7`ZA\pQԋ\@Fmp h&lʭ5UYq@oHr_mZ;5'ʲ8aP W}s7sKp)W8g+ D zo6Dzgb)W=Q?>3q#̵j߉y{ =Xk]tXl~S9ze=Id(h˰VPvSk}Γ#bj8$/.#Ck]2uzfX,U]Xz+A#=fӫ.n+Ē}tI0mS`bS[kcz'[\\ j73\yv=,?Nk¥f:Q`~>u,l++L cdw鹓+a3%(f`PB}S&_Td[_M`b;lt}$DꨘW䷗v^KPMj_2q-hߴ.Mh@6j}tLY6R܀wC؂IVRGY[ng3*`zvѳpWfd\pso^FL]('j'壹aeصprn/-{3w\V; ͂9Dލ(>g>( /[n>UA Alo["sjJ!.YI`Ou+a%օ(bB:RO}{&mkz>fT%f:?̙9U᧙kq]I$$wQ6VrP @8f5b*t{C*N$i__´>aX20S[tOa۹&<~U$+{_*I +UccG~i:3165"Р(O_-nbyVUH 9XOL+~̷V%@,.uߑ#2MX) A YyVm ؝@}I=3G0U` +rhkO~Gk0nܓy[bWm('CcgbUU͐#`oc]6{wLNa90@hN]"kxe j ~;,vy/QH ǛoH[Z I[][ɉpk+-o7uk FrO3b0KLQ߈Vv⿄@Hg+Yr}tAza<z/.`D6WPHqΕV}8;:3_9 +3%A zF[:cziD,JZXB~Y7mJrTI:}]k- +܀p6>b@tCP;;|ȹ,cA#?hzN+?&l.|{llͦ5.{Sltù +w$ bfjMğFtJ0I2zM* J&߷"7#zkXUݬ7}!BH]wvdM[8=w'u*ϊNJv:ΥX) GpA)3~=5[%݋4bvuɺ1F-Ia}$?^˼cpg*Yt}qmloD NNṧJ`5GTFmp_h(xsh}f[!m4OR""ֵb"""""""""""""""""""a˯ +m5*{~ +ODžU2:vfVE,^enkŀޕWZ+1[o#.Ė*G&`϶kkR5)d.$z}]k -[EvI3ӛBj`a 2~)Tb,oMkku_u ^ +SQX۰.ƾM=c:̻nV2Y vwLs]h =N4Vvg$ Jcul<.5tC8 *?^֙]:5aN+wr`U0ł&7YȆm ={0uLLhȖ-H ++c[(#3.?ږSu_jvC,ˣq:@ns«m}bZn]l9(bxr_7*:7Vs߷$A9pMTԢO"{9 c%?C4ڻ1(dô4hŕH}̝y_T]GK+̂7 o=]mU~G?Ե`v!F:;WׅYhtN5K)O-Enl+.9Hqzʫ +2N}^ $şQ2_)޲F- rbxq ULՋj\|[,:7d0_QS7FYcWkb[׎U +WQJ9fP ״ttK"Smi^(>>?ܿXW\Ujv +6[|*Sm+U&촹];'v{w7=_mjB#\M&ŵ&'^eZHVGMoZ!SOnFe'3 9ٗe9k9E@#;޸tUvӳ -tlu=YT=Tڵ}$M⮯S\ⶳ}91nN!E~Z衬IrG=!c~wJ7h}2:^Y듅UZqR|̋[P"/-tw(, +K rvÕb~Doˬcu| +U•Qaz+Xk=F͸yE .*ÿԝw2< ]X5nSEU}b}RvⴐU@m/ԃXu r5C'h/nT<1}~V>[' l:F]>PUY?=ϋӲ/Y]loJ܂'Ovj cg>a,@ dυ+L6lQc]i.TR_fe-L>,/0\|܎(w=v.g۟5qe;'M6<<=T-FYne7(S}Jq}8ӌG2>qc*Ǻܥu)N'aU$v}4:WTJ25*T*W#@ #tWƯ2(^*i¬G 6>Exeݱlf?-Em}~]*rSK+WYR]̬g s^ S06V!I/ukYko3:ގ3/YnV0cFw_[^ө鸕RY^(gREevw:'{Xw+ yOwk^J (9 ]ǻNA =!{kV=bnӺ>-wAOi޽䇝j2,SM`%srPOӷ~E)K.PVtҵ +/"6u$rx"ƪj<~jM*H,3p1TCkU7NSeױVMwTY܃ɿ{LJՔVjj yZVHl7 Z y;6te񒽔bߑNNǔ6ǐ +^,MoR?efmPMzgld߿f3_;Pݒ+`.}?< \,a*4Շ/,o^W^5Wo'$P,ucc-)O~.~#ޝ*Z.66>kJ=q! ~o|S!JJv{k^R|=i6W^-[qqPu,lB.n^%t9O"Ic+6PwNZQYP/4WV?gqs +,%Ok"oZ^ ۾#zv~0idJ$8c慩)oaI#H]y6-` >]umz ozgyǗkVy&ey؎lĂL]O%cV?sFyӕ}ĭ-h+ŋzl~/ >_H>Wf'ʤA$6xtb*zʨש7b" ׵b"""""""""""""""""""""""""""""|#ba\$I;bI1?2I&g17k, + qP4ֽdS}_6y0]懈AWB(rZ֥ހ}}Mϡ1C_Tg1F޵2beӝXWCvN +yصl ܋|8ӐC Jc۾~ۓ^(,)D֧a䵉]U`8|;߱Fe%C(6ڏ]ߖ}l5BhE^;ϟm7oӉ}'ڲߖ$,Dv S4Muϡ4lRZؚ]wQqof+qt7xstԛ\ٶe=X8uω:OKzoVX4H _o#.<=aG[nvZ.GuB ms KuDWX#A~#[oAzQuq~@>;I\;U^ci&{EϤӢn~nXY~=HxR/}%FIdaUN={;WcTn}EVfbhc?Yu܊Yፋ}Y"Gﯤr+;ug] `S?䒤k`FQ#>xlڱ `]iRQE/ZX +}akYn[-ubV k&wn}Un E ޶Agl?abֺLLN#Kfh:82aV8ܖ>L ى*DZJvtJecIuYV5U; ʌBCØjOozjc{|nZ +NxSo&誢95hkۛ?`1NEtW#1ڵA>YtK0hb+$VܡrvPzQkl9H^ ~PR +me:%O"ix61%Tz>{QM'4N*eff5wHV||2>s˙䊶s B%a?:fFIN&vTq_Ȼ>*qdֶG5_l1~; DN_A7\5 +UP9=uRF v6zDv^Q=M#ӰXyu +R=nBxm g ݛbu's."/^ۢ`IP}{KY]@ĞVo֠c'9ޙ3}Ͳ%6+=#Ga'-Uf#, +=NS^NGW$ZyuBnzKaGLġȼ(fM\]k7b}]{JY{jď@&u].ټm4nV$QFT5/޳rϖxhZ͂46YwlI5ueJJZv mGzԝfMY, Hb3E5Z:EmHw7(mN=Qшʊ,8+訊6uҰb?!Ur؞^۪$p*'/JUA ('>sVtF5ܹ-U[iOYFa$m4u{QnK3w%aYZM +:}oLd[e{ Ey 6rϦz8-%R-F(;| +t4Iw7 8/bQZ + +HPY!Uo3~s_Y\JOi.Ԃtln}X:wOc*.v{;͇}IS3zݕ/]? oMD=٫u.ܔ +Wf|%:=N_bIEl;iH: 3q/``db.BP{_^VXPw 5wQYOe%xT+[W,׀Y@=Џǩ^bSVL޾Mvsb4;v~/N{lk+>UBAlD@ҵb"""""""""""""""""""yt p{`C0U豭QU l,u~YTlJ)~%yq}믤iBx hhh~I+ }ibzt7fQw pԞ`yg}ޔWА O\xk52)B4T*GG1A]j;*?]'':mQY8f}{6 orVS! +X` aSI+E!z/aū!<Y{|,qm88 %` L^EmuVꊬ3¤/5A`|kzOX|kSSj-mZ2T*}hk2q[K;\oħ)B[Z: #iZtVt* .tOqԫF|灋R*|L:kZ'( jf#pQ4Cbلr+`8Xy#a~0G MvZ-g +3Sl*M#H, 4>rJ&#zXTw#3cbՆ]5kPӱ5aBJEmo64 ޽&5mY+ljPWZֵ鯤N𦴭w(~CS)ljRUUU +>}7ghS9oMl\H$#%_z'eǕUՙNS{no3hl1E,pպ}">fhtX@fDDIJk|aM 1ؓb"x"7v>Y=[5c0{ +C7a{GޤDDd[. +j0=)>b""&`bg7ۊ0]ݚy}M1216CXZOAȚ;aKKy3U'z@}=dDDœeTRyNAy;G9,}穥}Z`uuءa{DEu +(k,kzcײ^cB  LxcDcmH?8gmoi#mEhpBdv~݈}uw7Qq>a)iEވ`krrGd\(=TY($A1r:MEG9]'w4dDDDDԵb"""""""""""""""""""`̫6[D뾽$Oב29ՖKTy!Q=u0[qPk廙k'] ocgcgU:PKYv#h;h<`zEF=aw%؛BяA>~#fdjV~:Q]MIJ.b7̰#UfB%yX^EL^!XXXߧٝ. ׏]X)B*^L_S󛓟#YCbҠ;陆/춷VciJI/UvfZ'4p\Lc1sQjH)kywd8x8O_l`}xܟyjRf~d{@D׿M_Zl[NuUtX5w]IMhoqO-T*߹YkS%Q*z1Q/gD-jyҊ9k]zN+zVYelqOamYza-mE^jv"V,Ѝojjé2KbdWcMƴVUL^_=qRi.ƷpeI;70YҼZy[ge`g#z{])8HscZj~5Wer 4mVìK 8Pet߰R=֤tR1䘌731kZ I;,k5du\֩~:XyPP-qE'̶զX7cGu/_Yքzû&Mz V3bcVeq8iR-dzcw*՘+/ckgeJyhP6z8 saUuZrv?>S[,̪s +bUrl菜N"ΩJev;5W}'c{kCti=W!dofcjG3+FkQ`~}aT% ;'|G$R==ex3;u8δԗ;|{Y|]q&:XhZ3ħE-`Wo. {Ox|tVdj+e6k/!v~_ZuP=M90܆:WT¥mnKeZA Jmi{v xtYҗO_+5}[zo׫~ۭ:\Z(:(׿."sq˧uG Yy!Ell$_d_~Nň #5a13kz&Jtˉ5Ic;t7V#*RTù_8+ZzwPVe=XC~+-+b 1%jr3EN>^bֶ]izw26Ѻzc-uHt}y+$ܐϠu̷%#GDEZm]ߑ>_+Xx~wo)Bl;=7& +Ί01Zkr FA;'c^ἵ63lX/.jwОӃqz6WY,*A5Ш7ٙ[ܓA!pS?ttnUX + #'[ A}x=9 URUtb2܇KSu[V";EZ$̘czVIwJ 9OuG[/ lkW&]>͒T`&ٗc[F-u%6Dʀ{hv~7ۺ?L/d=K1vT}EcG~7RױNCs]fCt%ؾn%nřF͗1+|۬ +izO~Tʳ?cJ{2.u k v057 ؘ7̠ b+B{Q&|'zƚ흇.#o$s-Zݛ ߷1Njβqc a^ަ baDOlt;=ے?!hLeYvD7]]=~Ε9 X{{鳯S00zT[e1o=r7}]%c0R˭1@x44Ha>Dg25#!3lOCuEU@[kݔ DoW}+r&=j!K +)]}zy-i}*_5؍p{qgCvUVC*BV$;3GH5+SvAkkv>Q zr#26ZJHx|>VmxӴ˓Vb2lmN{aT/9k__K[; mJP8;`ALH CW릺K«Vөڶ$3%'z@>ý966u0^jك7 F\ ;$wOK܏U*{u$ؙsԥ!@= z>-ͫ.;(G̏n|zF2Gcv4Al1JZ9RKr\$~d ᾞWo  Y[G޽2t\<P~=lܝh'CCd+Q5[M:6>L*׶puy* ۸=zOy)^*iUʤnޓtŕVmOMJAI|7%H6#rYٷc^޽3qk+bH߫XNb6t@ ;y= }_(?0cMϟ `sBQhBPt? HoM76pi˥.O$$vc>˪Ƣ29lyj]ېvO굽~Y0.d,90G+,W] ˝qzec\v*H#Љz})rBak,^ٚ{(@r ȒGrt6Iz7鴯8v3|؝&.XHR + $O$$yGpu*bEv;fT$I0s23PE(Zѹ˻l{7[=5:}|RxJ)Dzx-VeeīJO`I$Z²qr, {1v='ܜS؆j`ww}<~B + k2t1ZeBbGpzN+WuF){3Zl9`'LWt ;Zھ2ɶCwܞ)[*i@^Nڝ ЛU^<܄OEĢi^NS~^ķ,Fݴ5)gbc_nMu(ysoCzz]7nRi*+B*|G@'K?<]`55Anngo`UP{ 'p~?O<b6 ?/|ylzߣ>H)>vJV+%gG[C;cWu v/$ :#tcb:ԯj_v'lF@} ]YJA f^©/[kfv_D#tlWaOvvtxދ($F|9mkJ3j{5oo}׿oDƺ5~bjf0v@tͰ;O.Wv=LT%%wSkT֡UF@Lֵb"""""""""""""""""""$vuK:uXZHQ!<^[m )KXY = KԫSv y6: 0 +Yjvb F""&Wrʩ+ˎ)%NF+3ĎXL;2~g?.%0P{}-4VΨUI + lUXlPJ*uuFv iEEkȒw}O֭=1ũ[K7~!y1Wv@P]n4goWS{1(=J֥Y쒣K7""""ku mwn-~hg? #=P?Q;O/_g~0܃y[Z[DuX>h.]I-z.Ay('b͈#Ǩde=V5z7uz RCi;%/e T-i_&@BUs&0ʷn*lUSObĎGIG*쾙 Y9|Gƾ^᭟ypr0 N3"p}H ܜ"o#ɏFQm}DDfm^*=jm[^  DP64}n3ec]zO,6d޹?u=p=g?2R# +kR ̻wfm a|NS.gMiU5Q77vBFmxỺw戁Or{ lgۘzu_XTBV]wf}Vu|T SQ^ޔ-ҨyQG`ʃ^ĐN]q̝]mUcsfl}oWНDN!\nFM]ͅM=3:t~OSȶۆ:譏` RhLÑϹ6_JonuXʝp<@ױf cu6͸ӈ\_߅FB.FE["Oob;@fqr-WXYk=Da ߨ#=;rRe4eS[q/r,b0 +;;mc4aR[06]QS__iĸWb/ڬfݍf/7r'khkiߑGV¦!.RWXV.;|Mc(Soy32oS_jоhUg{|@( +AI훩ӟ@e7_.kFúOy=ӱ-G[okc,*M\{y{ectew+kX&X 1{6G}L9Ə.Zͬv _~eI &˹JrX*RM;' d9Y[܇%)Z͌=yzYk8͗o-<4^E#ߴ=/3Vf^:ɬI?!3#cSV[-w \dV7.陘eŽLRK9oSq7Rvj\o6ÎP1RMu ve53ei4D=O\POތ듊%Z +- -ZS[%)dS:WjE +^ؐF9=C)HMê[ wZ/4 K6w9z_jllOg[z}:s pp6 b;skvQvsusXo*;(5$EOD('6E{{#r'cuBak>ڄ D>D=0ī\^5ȋݘrwO;O9c72#; +k5Ԇ࡙~\64H?"Omz88(7>+H#P#rh#.^eBը +W š :gnʙ,ltKb:<,Os|U!nrN) ߧOWɯcScHTXiE0J6N^WR~YskqŲ@1 !Ny™#'I!{ktBR+=(ߡ;.Q6WEªr䵫Y?N52-UZl&=}&̉>]=n*nX-vPn^@w;UmwSeh6C0#`On [+7lIkzg'e>|Sulwƻ|\ e#׸ Io즺᫰ؖv'Am|_Oao1,Kr~ 삻Îgx}3m찆 zd«R\Ƙz~i/t2- Y[V|ޑ@[cK F. +,dJ "n#,'{y|^{=N*u'mg]}VGfR-@ue Gބo!ij 2ܝa nr5 @P>zV5y=6dtee>Xh$CxG+Ͳ5mgV +@vNLzҦĭ#8 U^BdW)*N)tJ:ǔm.b%(&RAgFCb3TjV7u`G#ԡT;r xgZ|Źmsw5Cl=:״l acȐ\seUk;@=@6fnwOZwa #ԂH}?td,Nk#q%}6',wƹv#Џ؃c0z۸,n @w7f3F`2-vǓnDo]>C1a`R:W1F*7m봓pԪ)F +G`sX<[3 +` `q ϰ][cܚ-K~إY۷s|nҪꪋc2f`T~$jϨ>~5-d|@RW7ȇ+nVu-ԭp8C`xMWҀvUBA a7gMLj;ead㲯JC+ z5/=6nȰo{lhu=Zj4NAUTFSk c~Ek%IGbTlsr6WdƾZźjG$\eQV!DoN=AEW3/Zq*ǡ +)BK[řJlI[9v52%C+W|Hc{߯yWn=HuP >lwϭ][ؖR"`El n`WZkކ,ĒYXI]KQ5?#]zPU bi[.`}~Zg +`$l;?NLaqEH4܆=1gbr CmNR5{̝#kgonD* " G$͎WR{ԩ`iAuY86pdDlf58g׭ Y @hhhDgTk}%Ъm\:U @A{! #_ +M%lze+XcǑ|]櫫$yQ11佔UKlҭeb4 L}4>8+S]HLwnU +w=,yZևQOOېVm3448'*E]g:?9+Ͷ2YIrw^, ۶@>1rn¶:/#3˱Ϊdzv](bX=mK_EUPG}繛oxuc21a<ʠ45;{;3O򫢶5ch8n?Vm1/Gg:H]Jt{z#]B,K) icA@e㠝>ŞŻ_X;V5Ò{kCZiZn)X)f:ݻzRuDdz[+u*{4G65]6fx;o]ԁ%YGhA Xߩ='v)\_-UrUx Ɉ:?-wkާ5!ApuʪA}N?!=#rr\Q*GrK0N#dgR# NKRWb moܻ7V{7N`/Kģ=*k|F}fDDѵb"""""""""""""""""""$M"J=g,ڪpO\ƻ|\.Db,UV`{1[gKƷ**[J6t R] \`l=O/U²A`w=X=}Oa=tGT͡/"VV^̬D0>ͨbl|6Gx~ )L}g+.""f'@fw+6"،zq>RFjg.5V䣗ʡSj"""""""""""""""""""""""""""""""""""""" ҵb"""""""""""""""""""'CgeuF~kPmt1?O^eb]Y@#cg=_Iu\:U̡fT:vh ꞫM0꭛cS2P٠>I$O']oDV8墳zEW 00-o#2Et,; Pt&~oPZJT[rV7qu[[#t̜6nOgS8 `Kqʹ=rjong'K&8{^('u`蝑2LөrයV,z,sZl: ޴5$|?آ.Vw5؟NG` ޳v6L~{a)cį>J8V,t=Mo S++%JY-H-%:QݕnU[9שއ +}[,YeycT/.*D-h98T8Yg/ƥfHࡘOeSjD!y>ɰQȏoJKFSc2:JWogt%ؖ*H:#~EᛲrS"U2a@A ,W=; LᴲYYaGf7۪WufBkr47dl rKcX@]"_}f\u;0$+=e?^v'dgeeg][TVթfnN zۼĿ#"܂պn*SҪ~oR}y8A;{t{1Եb"""""""""""""""""""""""""""""'+[AV4A"""""""""""""""""""""""""""""""""""""""յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ׵b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""$wzܞTX˿NAON^J272~>MU[5H’[c9h=HQmda5LdDDDDDDDD俭2ەh%@a t}/&?_j"""""""""""""""""""""""""""""""""""""""""""""""""ѵb""""""""'3ֺyǢŮX%k]S߀v_I驏4԰'|C q$SNS+`OBg C}`[}^&6#}DDDDDDDDapmĥϬX {ē}fOA0vU]WWHZah~)za:#d\~#vi!ʰmzҵb"""""""'k6)PvB*z]o}k +]l $W%eR0P`>-Kۋ^ENz0ߡ̟jQ?ϿkQ?Oq!}DwkQ?OsZ~+ƧfYu[E`*}dMVl,{'&mH^_78Ջ eoRj""$eFJJ\+rTrGD|zlAZ,u;'`q>9uKZ`MFk9Dک;'3t~@\mUC.`AH|:zyبcyEwD~Y)okgQ̾El';̵Z.P :#ǘg>DDDDDDDDDDDDDDDDDDDӵb"""""""'l򔶉'@l B2zp[b5^ ]_O{d7KwEۧhjRI* >goK~ݍ)WC۱/Q +v7?A]nG+mҗt?RucJ_M=맞yhz޷݈3hƩ,Fu% O[ԫm)`=zͨq} ~=Ē]=fx*_ҿM~'7¿l!ݴ*}ӤYCOyU޵Y]_8@Rgt>fA'lՇ(bA};3[9•\>~^.]Iι>#܎_p|2zry=:޼W˯~nR0'@;?^Z-fT(,dPǷiDDDDDDDDDDDDDDDDDDD@Եb""""""""&W%c7""""""""""""""""""""""""kuDz@6s܃9}:B\nDoosw_MM nr6Uby`ҁ@{*l'6x]YC=g`׉r>χ_PPUBڇF=`|;ƭ͜ꋘ~uB1GplZɎGd~S$9.ӱhiڴTuP~[OFsnŪ:2݆sT(DPDO.ƌNUc=b[n~'ԑyOOUB* ޕFsygVIF H)o߼VbP" 쟩'>$};34N/"ufzj"$Pck;$L|6333:(m+ӓ^!}NH;״-z/ٕSE\ay(FHDDDDDDDDDDDDDDDDDD@յb""""""""&W%c7""""""'b6u!zoSc]rCYkG['Rr""""""""""""""""s2 j%!v }`s+c`tX q!.FBt*F-jHf)>[)=&a: ľ"r--van3dM ApHV'IoLwf^bąPBl'_Yꎝ]ϟet5R} T%9>5-K*=-SCuD""Er)jm&܅? V=JDD=_û3"*Z*K]vjVB1hw^>}DD{6OUrBHv>','@&*/P A#֬ozZ͸T6"؁kZ#F4؂ |ԂmDDDDDDDDDDDDDDDDDD@ֵb""""""""&W%c7""""""&QʻPӎ3XJʡAS#H?u]W}  +;v}=@oڈ'+4'Geuk1j"5PnVbˬT89(-\Gu&4l"'^C_8ZoWK)+3~5 + zۿtbPݷUmXFvBfl.DDDDDDDDDDDDDDDDDD׵b""""a˧ )::1Ҩ3DDDDc#7z&DDDLӑmm*hr^CwL>O6ڔ)g!@$3Ұa>DDDDDDDDDDDDDDDDDDDN{1Osƺ:OcERӓ:`ޓOCttoCEĮTN17RI;l{hOQ WVF.+5Js&iP>ݽ!i65U-Ǘ4:l:* ..=-_f`P꿘v$Mut~$챎 A4a7dfgB!3Qq6TxG% $K[\;90^sg_D 'QlvWjpU,'d0Ucr{\C@;M1ǸfU'с7GDQc`3[:r;+>N--DKHEpwĀ}lƽA=/@Z*k+JW,*y7I-ܓеb&ljc8 +w0#+?sN?q+?sN?q+?sN?q+?sN?q+?sN?q+?sN?r?tL0b3&n9!+?sN?q+?sN?q+?sN?q+?sN?q+?sN?q+?sN?q+?sN?s K>&3 iv<? ڽKy͉GQEZUv^ܬ8ܬ8ܬ8ܬ8ܬ8ܬ8ܬ8ܬ8Ν:۳mE-@G=C$gnvI.>gnvI.>gnvI.>gnvI.>gnvI.G~)}P?G{w9 +'}6R*(oIJæ*TkW*Ojŵ%XTA}fӪuy4 !K3qȝ(mDDDDDD""""""""""""""""""""""" ѵb"""$^O_łqu$eR^$l^ENQ@}O_6f(;޶&!պ/SeS{:V F.e'p;Ζ""|'Cr^ީak]JPho[p9lc7""""qvԗ{Z|Gv}5u5,JQ~I"""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb"""'N_ٝ/T9)p&׸ٗu@ʅ +"(sܒ}O""r pzU ag6U] 1 +y߸{70m4:(*@ec7"""$g:܎7X(H00hɴYU5V A>r ֺi""""""""""""""""c*n+ηSdpq-b4qx, ?4{`.7Wȶ|-W_ +] G>u,DDN,,*t z::3DDDDף:`C-1֗#~zF?P$SjX@u}{OآR =H1:*en,UAPu~.mY)eaA;h jjuY?K=_r""""""""""""""""""""'`fqdQܘVzZJ܋kczi[ְ(vK2VSj+K21hW-zz|L%nvʃd6e9^[F7'B5nVR>$uU^4tq4ct5c`2HOD9} +*5Ǭ%w˿}Vr:bi_,l@Rkm{wP}4H[Cb!W5h96u@+##*4y6mNAv= պ8 +2[@r k{1zrkr,Tlk{2O'ګT20)NoxuJB ղ4PMۜ`$}ܨe*ߏ>n#}& u(EFO&cRܴl{hw'jmDDDDDDDDDDDDDDDDDDDDDD@Եb""""""""&W%c6<\b2썩G>synWCƲgrn3c:H-%T::r yF܊h^x +Ch7Eg ~)%zm&*!uqC =Tؐi!5S4KiXX@dkڈFi"<l~umDDLy[UbVR :'/eECFF۱@G|<{ɯ8U%PTS(`^v'hNf`JD+b+>{z3< 帴ïcȚ}u &t>Ab>Rj"'9h::~}ޑ= et3/Yopڪ<[b""bɿսYn(99ހ'F5i,CqqGeW F6e{q)_Cߑk7P+ӓ-A'`}jq|zl[?.bl26Ac,7us#hQ{jt8)rU;bHlHP>J4?$Z` +S3 +qVCU>ntF5f +t ԃ~g"rr^ʖTP]'ۺ8\LWR^Tߡ!d}Dśг3ש1IFTRRʼnt"}յb""""ȟ +3(X\.!WTh^[sS:R,(F̟U_'_y9gn&>-WY)a`4;nGtVUIYsZ1ZS<@iaSW"j?5Z@yVOR U5bEQZ _ۉq+Yik +[4?oߗ ?,_6ʎ`PݽavPhJ# LCOv/ml}ݷoc~_4=֬NRreά'CO |8X+“ۙ]Cȧ2˥ +R.Ms>hk9r Z:st~VK%YUŔ֦#[]Oq[KUICAwC@I|@MXR÷5dm]O{,N 5w hyަ_ml}ݷocv_4wm۲oݗ ?i6>[eCO7R"Y5XId̿wmٳ_08SmOULfr6IAĪP9w#׿y?뺪+K( g; ֵb""""""""&<&v#F1\jִUQ """""""""""yKFǨnzE_VNC_]"nޫId\,Bmr61:5{w< hYnfȿˢC 5KܷSht%\y +< +I >߼yyQ^C q㽂I7Uʮ9|Ȁu. oN@6պ{Ve)G;=FPF.'i-Bo,'oumc3>:c#>Hgs./BL\۳K:_/KAAvu}Nme֨u**(${inr;l;vW)CT~IT.9?#8_A{ozȯӥDfc +6Lf/N~j(-`) o@}u"Fp9WUCjd?Y 4" WA +0猋f|ǽrKSztV ȵBȅ]7[@M՟SmT+jnncuyhz)2/üj:9sNR +}}9:>S.YVF ::ݦ vUYe^Wƴe{*2 -6b +B9V{%;˿n@g5 F䑈 lq=DDœ@ɭ,YIRUƶ?#!㸱2<)ig,Rw]7@r'dB]g +ZkbtBi׵b""""""""""""""""""""""""""""""&qSY2J1VL;8L^Ҳp';'b)W[W*lJ֪*(ҨHкWR\2UWe `R_o=|]kZ#-,KujkkI;}AgcžNU;(=I}&o?/~䕗Zu(寔ǮzM6Z{k?Ed&5'_:٫1jC.V#M܂;NaV3֠gbbI}{y4zuQx_vx޽ ObLnU;+eS[׶,2Tfw̷-cc~3AON~2dDDDD:-O'\iwL[o7 ճeP8* +4WG}~E [bGVVЂ4DvΩlJȬrӭ5Z>L>2v.%5>}FoFĻJ[P +I$WDyU `5o{ѵb"""""""&T܌[kƪ[ k~'GZ8w('!4|B +#~"7c}ϭOaۿrpޛ[YClinl) ~-ҹ:lJ{qTܢPY[V 2#x̼)d[A .6Z߶$QÀG""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb"""""""&RʠԸył}Iut5L@'cm{l{zHot,+ȶFg߾}]:B6v{{M|V2q*i\X~a$ 01ҪT69$lo!χ9 mp{P ,丵~/;%ks>#;dS*ڻ+Fe 5IDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDӵb"""""""$O[qt:  jEUzL#/l7*@׾jTr JOr? E;S+F_R{[Z!=d |CIM.ҫ顈Y^ IzX̊kq$Od7ZVDd[{\wzԘb"""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb"""""""';n6`a֖p|E%UkgDw~>.K/Ym/Bj!/"_#KRW&d']S%juҩkZ_Vc'3Kx}r,]dX?4???NtO atƄݏv/s9=$DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@յb"""""""'O#? (Ix/3k56 0>xi-uq;9/Xؽb5xG'OpkmnGy勞~3tb"""""FӬZHY CeAn#lf{]s#3c#R7Gu(T85ZֿPw).$/]wצ˹>^hdv޽K^Q)VWdt>tuhȈ3Sّ`b1CG&:^խhO^ ̝+9>eYKe)`lkO>r"""|sDO}G"jUgڅ Jق f4}L=Ƭ(R=x5XA:qǽyUNAnEaB/[>Քlnāl j$r 7܁}6'Y}?->)J`嗥X*K(`?;7zoW^KÒڪL VYGA~"&GP(~\g $mTC1G>f]#Ԓ[3fӁK_sqEgRI:\>F]ZKS2o\Ǩ#]p$]JZ1wTDAwoEI5q,r1pue@ h;o1[3;#}νt>u +%qƩX)7;M#&JX*$޸=v2sE^ ++U-Vya܀Xz뾎IM>~&5c3"ӳ"u w۷i +EVuk{%Smʏ+(]ogrG}˖bCԲ5z]r [MQJ5}; Oɱ}ʱ[AH_y.h'wE(բ1rI:IE7jRG;bGo &sZoM.eTklI Ι,+G1c;kc,L;q/_=dQ7j ZY=zoދC-oZ;/(tëU+A'[$$I$N*I[|ñ4Fϯ3Wd[ikǢaEFV~JP;v$?ͫ7'/H eZپ߱c2.XM~x RW$홇j6KWu>+2yVnCQzVe)+J2|!@o?")_0QO9aW$to˱ߧ>޻sP%s I>wݙMzԽgXF?$f.>eVJ#vӟM)l kbؘY-QPܭ`vֵT'L~MB7pa栍Rv'Sί:^Xg66=3*7%` i̜AG]&QXfPge=7;u87#禵(X.㣭Ò=ol,@ejO[2O+GUVSU?jCo״xQwܴTUY̟|$l*K[R-,bJ CrSd7";Tb-VHPbSS1 T,P,w] QW'{+Tvrw? +n=mn==Gp(L;XeX>ߪ/4c#7z&DDDDDDDDDDDDD@׵b""""""""$GQnS\^I.թONdχ[XCɾ/y 9s]9ta5k<>9? + Oo, +źdM_&N{Ğ%2E]j*?dGCooS t?oEF{X5බ? +ox{plUo]7s2F6\ހ'H^>e0etSIaGлn'_2pc†޼ Og}ZZ+֤ +vu˱޵۾mv + $h NH#+q+RWP!ZXԓħ1<;(atO-=w:$\ѯȵ.Zڌ|Nm }o{4ב _{%G}OY=9ؖvK]^ +V!YHewtf,ە/ob r`r=}W k:|QaT<$Ofnv.M86f>r"R]oOZvrv=wRRX_~cuKk["bk*hg>NDkS,܌L"j`=\wvn7\ d&a4_HGywu>n7>DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@ӵb"""'H:Tf yp5C .)JbIgf>Ē~ͨ-(RTI$$^_lj:>w6mqS|~ᙝkfeh}8AH/0$30ϥU}N1^⿂z7""s{du~lZ(6֣*aRdOɜ.N?-~' Y܁緧mDDDDDDDDDDDDDDDDLtl╣31 @,DBs +?^"""'O0םKrKF9$Ԁ&.Eo=)R:GמY}bCg1˂KE(wCO"_~ϳa]Jic*1>1t qoE(In}3,+.WR lcf=ɒ1535iZIeejOw6Bqu# >S:y)J@B[};Ο)locrz;&"""""""""""yu,GGr}//u[udR*<Ĥ˻IR25wJ~CoĐc]O5hᗀgz[?e@- VKO]O-QM +mn`L,j b&wďoYLQ1c7wx+װaϢSTu /^v +{'0cuR5eֻLZ.ChzS|?;6k{ֵ_W z&e IRUƶ?Yx [֧gjv oz=Yt:GQ9BחʅP˾qĭjB(UP4@/^MfSCױ)_ߖtXWAgl>=>izKa醙OO}̅4`|nإ͗Fb2gQ TwMBq(B~'zGcP7/%MrO#MMDM'N{k~X,7YSVy|6Wp:3}b7]^L>`odM.u1[2]ZyXuؑ3WT8r(Jl;!X0PuP+kXR*K)c{Q| +[O}7ұƨJ*oEL~庺0;@@0>?YxܫWCnkװ`=Փ2j [ːo3eǸ#CR[ޫUfڰV$du?Mt7%J,#1Sg`t w1t64feUUh ޶K+lIThX8BO; {B1(eX*o;zjF1ҰCfWQn A9 F|>MI(r[ rh,/jI'K$l=VU׷ff?6'rOO/i]w]?-vŒm,A?Gy}kWMǗֿq?ly}kWMǗֿq?ly]kWMǗֿq?ly}kWMǗֿq?ly}kWMek_8}|EUH󉩛nG/B)]#z 6ϡ#cU|16(Md1axUmN +W9x vH;k:#1m *cwʿdjQkŖi}kWMǗֿq?lˊPX1wJW0N{6{юllbO1lڡD뾆ߡaҗ6WٻƐn?v#|7^VNET39mO={ +qv"""""""""""""""""""""" ׵b""""""""',%D#=DDDDDDDDDDDDLkR (C]YC)SExȵԊ*a17Mfw4TZ>ZɎYqiV.+@쐣d[޽t'яXb;'O 5аݛ[=Mf(mlOB0aR-gǩ͉MjřPnv}p1)ZF9?-֚Ś0_.ZH}Ct o+A]6=>p]?z@+92ܒk/I6cptXG£=:7I8<2ɻF5۷j=w~S=ȫz _Oh~R(ͯBI#"ZE,6L+ k4ϽY>gk_n8S@ grqg-C.(Px*Cz0ze88 +"w'I~n""""""""""""""""""""""" еb"""""""""""""""""""""""""""""""Bj|̬Z+{prP~ :q+$ܩ#FJH^,X֤/l@7@RϹkYw훿迬Mމ^l|D*( Zv 0f%oS Wq$o]='h_?$u>גknzzvפ:cjiQ*"@^ޓn""""s8q_Mp-eǬa[昫UG G6 +kO?tWbmeRJ$"""""""""""""""""""""""""" ҵb""""""""""""""""""""""""""""""""&`P56[|xaV+oAFsiwCVPh*EmMDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ׵b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""$nOXJz>+eGdz=lmOW_[slMޠq*{_]ٸPR9BvWğوѵb""""""""%e׏X*sV:D鬅7gnƥ 0 g7W^X\2 +HYj66J_Q:Q}_S1P3Zॏ„vctu JÇ59!QF;zIԫ&N#ۋ2/ωOۚCP٧vmZ|UKq]b>@Wzuȏ}FνAn孚>jv<޷{o#:GW|{.T1@݌@m*=ΊH A`A"""""""""""""""""""""""""""""""""""""""""""""""""""ҵb"""""""'5~y깙tV6)b.W:נu9=.ݭb![15?Q'lJTcUkTQ*UY.z./X%U&Gka ,auKqZ&:o~/JO̜l'ݍ3{~dPʳeT=8!@η;9tޕV׏a]z1|1[See'[CJb\()kүQ};H9vpu` z>XYx2"uЯ(lI4<0j_%(N""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb"""""""$_g}䨼j5)b2`{_Y t/WEy"t5vIԿ=> ,ߩu,$؏_ 7ͣ(Mum Y/jZڰ$ޚ؞l6A%=wcv{}@>L^魃]]s]hS ǹr,Ƥ5,;жr?_?0.1zv.ljHDDDDDDDDO/b 1I$=I?)5:+u`m$kcdFlDDDDMl,Սg9GSٕ}Dv1] K֮ՖFPt˱C=P4'؈Եb"""""'u z:_M曮fDZ"i7TT$b`׈v)?ʬ~X>]@:A'.=}qg̕YD5Nm9>O½#~^:[{~14:.1(q2Rhh^?nx_e([0qS t+a3 v\5+ȯ.üyQ=ߩoI :b+I &J]vtUڡ b{ i[[ 7ofcfDDDLn}*q[؊)e vt4 >ٕ]NͦrBs=L1]^9@6m:2DD@t:P? :#I4 ϱV-E7 U}_S ʙ[0$`{c9[ +O1#{ON;O5_:^>gYe_llV5Vk? v?:0*yxtWPu{ǹn}Y?ؾ/V讇j?0Fve}5TnQa;>D>l+d@7-kffZ`m}hiFؒ@Uܒ@X* =MXT%HG; NӦ[{EacNS70:cb;[fEX]et?&d̝KW> N@b6 $4$n7~gjS*ªH^;7FNgYp22*t}~Oq;TWcI׫1?-׍ueXp%]l #cjNNJbVپ*6t($A q1(fַR{'> ԁ@>*1ۇw-]K3|j6Y'^Gy/>k-5~${SuzuCO^@A[qkЬY ԱR- i5ֵb""""DaQq/k;i +:/Uf7qF%.|'Q-hATh +'lJDDu䡮WS)`O3:%#*>%8}?NߊotOSm8yU.XSFqA"zV6>0g/A}x5uԒI3VcO=6""""sRGU2E++ȱ'Lʃ|^虸OZQo =՜ ԜJE=Q+K6gk>羾~ے,] એ`ydnClku㷷b=#(9ixކڐ;FMYy8Y98٫%J˲RvNcv>ظ[[r3W[R<5%9YǤqL'(TNΆϦzWPu.YhkO$ר:̯BWAh@߷a:bاLVbZe픍L_G&NeOEHχ=6Jnrj[@aiO_:(U«vٓ^nը|:`=Sq|_m ݀$w2KхMU%O?j2zT6@>O{3$k舿'uE<@~)ȯ(xcZ8)[by0yoUxƴ0` 3؎v@)׬dOS1 ϋ0zO+(*E@ytڲzItuk.Zr6&}~zmE+Z*-!4-v侣v> 9R~>]0Q120WK[^Jr +O~߈}F9em[ 7z֐9b.u:y1ZCWhxZ>0#>mNɐbhAG'7O9/r|ɯ^"붚IӛYHdo(V{ h-{qߨQʦZ=0u#hMoQ1xד +Cnm<ǽ:m{C W\p]UCa{ـ@P{؉䥖V§vb?>;7r+TֈB߹a'麢|C~998BËmܥbr='^ިQARscp'IUy+~OVK_BّAYptH;ͨ׵b"""|-rC=^j2e6M @v=м%]Y|ȴp?ZA'b"""Edb͔IXs~ Utq؍ø#N}:Qk +6Nj̬zjrQl+U}$DDDD4J>X~`jQRAj +tȫ$Zv =#}=Nu5pS=U,'ubގblD>wRבG?Ep?YЃ"&tR)*YF뽀߉21똩RX[s|NUZ>?It~7 ֓cYb\lRŊ6{Ex´TPIb ߴؑM~Ĩ>} 9:~|"-fĨI'f|.YUuPޭ[^'70b&/>;%gbN'f8+'"QN:vcP{~WL1vēI$O. +xq^*}KM{rvēb}'flDDDDDDDDDDDDDDDDDDDDDDDDеb""&j{pYqvwXEznl[FS7иխu*}6~gLڈY?ؾ/>s'%:UB&#w +={ӳ6Q#zuz/Lp 5U˅jG k篔k>oS%1ҥV6};Ӥxv]gFjj]v}DW׫t 947߄5>NH^VOW[rTm  e +*|u=aN IG֕Xm/` xGQvwMUuf]IDDDD粺P5_j5e:nUf Hxk/7oR;)#gx=Ζ&Uyr AO߶tufxy1.eMsQT1R4JqQ^.ZܝW;Tlv>srgyUYu};;Uԩj R[9l]%b""""""""""""""""""""""""""ӵb"kg +:]+E1>r/Y,}lLgГcqn7qnEb͔M^ҮNhO0UZ6 +@ob{ۼΗv5ٹ+̻p%+EZ;o]Ήzmȱ:Oa^m#>r4F'mxotekn7Rݬb|)}[XA!T +`;Wufh~!M興C lK)\柹8~ؗT|PjAe_7bH+A>.m! #ъaF}NkG|A,#b7G=ĐԷ|X|?=O +o#NMvwW5֣G2Wj'K5Xt~A?9Zz.nT7rS']'KԵb"Am_ Fku>zV%vbTR*6lj:=bJ5k*{+P\lv`$S1 ~:O_S1 __-2n?@}wq̿[Ee2\~//̷W>e__-t'c:(оmd~?[o휏#/l|g# ~9G_2?BGmr?оmd~?[o휏#/l|g# ~9G_2svW[!$dY[\y\ڼMwc`ؼɲUy.ԝYw z?`aYw[s߃Sjy~v&%xU-U[fs<͌QIgGCӼ=ٖ]M]>e /Bfllwؒ=7Pk5YUWՔ0!G5>'^Hk<9}>Sn""&}E,ɳ#J"Ȟ mDLY-bVƥ OONtt7`au؛(ƭ {ClV@ڨއ]<$s}NABEܖv +3n' h~gj-KeMK+]jGrP$χ"ï/MدVчQHl#R_it ׷^[QbB쫩;?0F:9 `hųFE|єͦ5'I$^>f\^Ǫ#Dj^ځCFq qAݨ\pߞg= ·6=O&؟5>DeRbIzfM=BP{?w״9q2hɶ+0ݲ: ߒnuLZ6܈69_{z=/ #?>ʴ㚎26?ᚽ;9s9K;v= ۈյb"Exc tX՚,yNTd楖UJ݉P{R[ _e/5$N ; {>_ZVTguBV1(,ưhodS +i+EE Bfr}fx~e]k__Y͛K=OmwR)r,ϷVUg_"' dUylMFS +tFoBGNoG9omK80#oB=&P?X>Y-²:2#O H;:#}ՑkŲh9eE腗ؓ!1[Fecd[ñ (mn[ue&Em7 N,qjmD×1+62ȆuWd*j]Lz Lf]uʟq>cY֛ٙ4*se.@@I,yWsk^׬nn@cXH>Xq5YC ԣƧ?PúבBYur̰;vQ3-`vZW R!G܌ͮY엏Y%2*΅h뺶GQxwXxośwR4yrs.4׏wUVgnjݾ |G~=Mb\Qf-~k8U*1'|NɛzFҷ%U WeYGPPH`@΢S 6R_@ѳbU`Zg/S0괳nEއIX-~ cVͱizQ9#s^Nv]z)Ւ/J,úǴRN)KU^X;$r;sLwrR*X4UI':"f荍.\֯YT ]J᫩(z+Vcے@@P{k~%~|Sex&,wf fR߃GDjd9Z'V$읝ItQBkxI a}L~Wĭ\4rZZ޻nc)1)8rZ5o.2S 8+F9zj'ZoERCg@l^*pwG +3lDbT:]o^Ny%:9κmX 72={p,].vQvSSC ˼'h׼>:b1jREJf^cgDs}YIpK,+J+{z)xyz;9= Jɋ{$V]X5=8DE,NȎwTC Zi?{z'f;/JY +=fHk͠2VYbR~:P~վU@v h^M.}ؔ5Ԁƿ@fqJkU +VU`Ct;Iùɐ~NU%x@;odmoI/f!1MTadf;}!tA$z+_~-PF)sa#@t;z>8?g8 Y[˚k+8ڒč5c^6+`m܊hSQ$'3W;%aٔA3n|dOV-ՅVv=k~6~sVDž Y&Վ[:gQ=O}!'[;J޷r^"Nm#zmcOe7E+̱}̟@=>BG|k|C'cZ -P>UU#ɽ]5dbNyYW+Y82=;'6+ʭ(P_y#ʢ6vt5k]iq[!\\I׹ӈ܌ΠnpQs2F3"֡T4SDDDDDDDDDDDDDDDDDDDD@еb""""""""""""""""""""""""""""""&;LjPUb$}~F̳nU ,wT: ܁I).Qy cňD\uM{lzw5YaUhQILkl` |MsWQǽĆ>-3$HλfBSu 1[QA-yZ30Z?˒hk>'HL +yr%ypˈ/gSu,[l1,߯n#_ :AZm^D@/3MNN5Uh|FfDDDM.ml-W[,F;xv<<5u5BXĪYLv@m@mIѵb"""""""""""""""""""""""""""""""""""$U{1EffoApC +osmNfױ@1>d:UPB]p}DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb""""""""'w>DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@ֵb""""""""|f +6g!g!^D:q~u<#1;V]QT=R0tڹaC +]h;~N"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""׵b"""""""$[#eԼ:;CooN-uZ杛Qu߃'Ҳrr1yS" +,PCoB?,sɧǠZXI"nG]kes_R7iеb"""""""p7g zwTG>ګn Sd3׼ 655>ImF$hT??.ާWhp"8ވ##|=lѵb"jguL^ԮEu͸}_"\KZ\(@CxwB%ɲY9JNy#w}Yo͸vj]=RIggܪhtUg$"]v$u61Εs=\ÏԷ0B{vGR y1 +5h3s鴵-uQÀT# Qҵb"G΋ mXv#?0d?M7?GdhV ~{:dDDN?ǹ_EKkvjú) >͌VXrzvdC$|G 5dK9f-kg&j%.7"'ubO`$.^>[0 +MHGڀПb""xKRXMסD,)ɵk}z'sdq2fW@f'?! ̴+vzʎ,GpGzOƷ VзуR-nV˧DDDxWa4ln\cFD֧cdUunJGG`;N'CSm}B6뛩8~D6"""""""""""""""""" ӵb"$|:rzɡ[Z"yLj۬-eW㐷~~ο4oc'"""""Dx{&/ -M^,N {_MLB֧؉N3d\xVqĩz=ؘ`Ԕҁ*3u _h RZGhzl/6V9vNՈ ;Թ=K iǪflsnS\$N%Sڥ1pkѯf,>oIIj5Ŭ.Tjc@wOiӮ˼ܹT*eUb$]M/ +8Jr1A̺쀇EjIgeZl–~&Q4COC V,5dp}wX~JZk]b@CbyY8+c` ۷fE؝M>GQL7yyZ(k:'fOe +ģaNǡ qW/(JÈkЙ`b!k,sT@yRNOU`U[CM1X31'@ 'P8W\Έʁ}w ѺM"8F/YԂBCk:Y=k"c֊b1GХv+OK1I0(H>2p,Zs3oMD޶2=/#'"9T.,uA:oQ:+^-͈ĭlp Q۴ĝHح> b<d[+Kv֕$*JxD}EipE*M舜IO/YӠQX t^aj~_׿ʙ4axk~:ނ@V b ljߴy[y@q̫zZ.V"G2j) @>ЁeYQ&5e浧U'Oĵ, lȤ $l#ǧis:%da5;\pԶ=Eǚx]omoa0ю)TɵYgTn,;.nntn:*E-Unj PVR>Gix?!O\wbUvbXmTq +ӴoUb_*lPi6v};|ًsQ{V6]&t}|j^ʼY`RV?Iןf3UZֵxp:*T *F=َlV@% +vO6!Wc=Φ']_V:cβW63R{ltd_X)ZQpVv(+:{ws]ׇM|y+mTm+O[ײ9+.b65n*cgt|5< E+ZkuɜzWt%b""""""""""""""""" Եb""s^*/WR.n?w!mMo>s~$43(5[q#2f"""""Dx{&/+nV! sZT߯IX^%/J?L~Pa~}t}'tLd@=$fDDD^{2rP/&?w<42R֩wW[-rJQ^&=0}G!r.ĺ{A~!~I9Y{TRʻb(O?1xT(~$.cVe _ʯk~3+-/UY V*Dܾ.[5d Q(fbWedNښ>R䑯rͪjC; s#=ou7 4C4ڻ!1+v}wݘdwRaj]aX$ا>{S&O'kֺU!-ݷY1To-C6n ǣ9Kfz{l.t媿:ruvܐY>BS5~bp/i2r"ט4a=ǷjejzKFW^ޒOo +,T6 L?tXvcIFVduu49^ûeb:7RX@kαfU]Vf?j`Ű3r`l}G/-55jq彞eaѢ.[OzMt)o (|$۰SYS]՟J,Zvm{붇,fWNDCwPt5-{u:Z돞)7c]XXؖM r^8]c +5ʱs5zgnrG]h}&M~ZӍm(U{CG +48.{oY:%TgP歜:=6fMh7}zk멦 FpĠ[Kͩˋ{^IΑ 8>CD(xo&Vƿ3qlzR^$s=7;ϦZɦưԤ݉$YR'"PZ O~| +#m~Mյb""'1?\o^LľzZC-!AۍԷ3#7/xWz(]W =l~=W5Lɯ.6,NCu̮v֕>zs?/W4'3VcLzWlq>J㠭UP4SVY< e >3jbů2UjݘlGqe(b'OObfETgfgnORYJb;}}gI; ~f5>S]珱Џ+SA7cT'"x>Sj""it)챐*C'rfDOb'Dj}5>Ϛg"'ͨԎKcl ©j ϭLAbI$?)""""""""""""""""""ֵb"""s}wOf@}9Yګe>onߓc~&#ef~·7J}#7/xN Ǿ+rϷlzB{{E3;eݫ\Fh>~Γt<_..*iGrOvf>ܙ!׵b"""$|/_[}V|޲vWm#deEz c"<=lGct#*Ůَ (77:;ߧYpphԭuҪ6"""""""""""""""""'jcgz=DDO)b6wDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDеb""|4zE|}a9?3Kh|@('*,Q7LfĵmCG?C7"""Dx{&G|F.7O 1VC"6A 4[:ضA;B >Յh¬Mga~S_Nޣp뎹 oO3I""'?>/zYUrqac|C^ĖUH%lCZk}RvmDDDDDDDDDDDDDNjl_ʶĹnp"_lέN>HuXv^8G(6I>r DUKklј:#Qm sW@eC+M N;T] k |*kѝ$ӧUԺi| @6=gA>b""i\j2+7Xoގz>Q^>u{5 sr""|'So^0~f'U..T$z>Fzb""$WNaPO!(`C,,45?Y+/?1~nj5@;rX*WM}ϧ޳s rxl[#߿俁KB'sRv|'Rx˧tGˉJ|U ;hܲzi.{,.WJ֤1|NOECL52u*J:=8'ũF]H>їgn5 +:rgU,tn+Xw1P־ԛ𺝶Ƕ=%RM/=۶=u_+a%kT p,ZNv?,̝2OZ2LQvb]/=;lĠV̜Ixzv#b}G̗mVNށ wEd]aFpsMmK s0܂vZOtW8V춶I=ؓ~sfy:{Q5:< f?~ ֲZ""y sV|cj% NImd7>zoînڼ%uc]hұ=I+Q_g]$<@,X/9T΂""|,D_OVޚSZ;_=Wct+W0}o$hH:>>t t3iǵswrͦ=N'``OQ¿YiODDDDD@ҵb"$GMm^mJO߿rltΏVJܖ`Iҏ:<+V |eh{0mc7cwSe']]Jh{|J +Q^ oA`~(}ACQKtqb$K`߈372?K?`m=9MYXF--foZԹi*[!@@f⾣үqy"5Kbڡ?0{8\ Yr=vߦ猏aXŊتMU3zA7c`t` #ξ4o}Ǿz2VAߖՋzOaC7qYFtT?ޱ @yfЄsߩ<fmQqoYO1F+ى*ɿ +TTNwQ1gRWNA +ΆDDRVMIjN^ +ǫXc2s2RPIsZ;N~](wrI>I#b}GlK,ݾ@3UY ⽈=\ηgn![UNftu>[ױ+U͂ẅJֳ6HU/y3v]mudջ +Fx?sҢܛ[ww=ݏ?A ~Jq6xϞ]˾seV 1dnw& +AoXJc8og9ɰOD؈uʷp$V/JVLZRb 4;v܌[,nTgJA ۿszظlsUosrOkɪ1m{t߰{lUY,1VF0B ga 襹R~MSڷSb+*% }5)J*)fm( +6lt== .~''D3PO`Xy]y.8PVג0lAxmx7+hlmtCӒ,]'1kE޵]X=^v$}}JcS_}}$4tŗ1* 31UU$^i泀`udt$P[;'X>:WKQp#G_ȵ*`6VZ,K,T}fg,O?%Yѱ!,A޳D.iSJy+UvFAP| * !w&|ͯ9پJݎU5cV\ٰ^kbX=N@>m&;+r"Y[&""$o4Tӵb&;[ёRS4{č ~9G_2?BGmr?оmd~?[o휏#/l|g# ~9G_2?BGmr?<ҳ%½8L0VU='{<< os{}_<AH F?U7OOmd~?[o휏#/l|g# ~9MoV_ܟ#w'`j2?AX?ڹr?A8?ڹrAX?ڹrV_ܟ#w'ܭy o?IvfManDTƥG>ߏ`P\Go,ݛ1FWXꏑC~̔(+#u$};1QT +q$::ߦ0O}JBafk9V@=H'^!=8y W;:#C'c%Qp^~M[*㭕>܉Yˮ(j%]nQM< w}{n#/d/א"^{R:ԓ/^f +[yttL)Bۄ2j<R۰"i.]C9YV'sdm0-HaplsRkvNh_2:g>(Gk6Ol._Z޶Oa"7LJpjeYmNؠBR`!Ӱ~E{ڳi|;.b, n5USKr)ZlSW8->)^0ˬYwGj߱fRwLlT6[6e%C՗} +ZPObV+ 1$-sY85UP?)ߡd;5i-"ճ9cdW˴/Hq0ݞ5\Vf{{zI NCwՕ𺓕kQرݒ#b}ĠvQѨ +^uVRh[GwvJ,]9/;܋iU#0_ϕU8(dݻ#3凰کSWqV֖P= gej dnڿrm]Tdb0)VZ*ϸs迩d[0։ҝhl:2S#֠3֨zmT 6@nk~ߖ6Ij7g鏈*vaS6rh5eC mHV5IΟ6}z~3';lE]d@bb=7ab *{lcXbN5n7L\>ٙ6*2:HkSBtfq$Ա_TS/y) ޡM-k*Gbu6AczPl\1+@[V@b+q:#0#C4ڻӗj\^-~Cϑcuf ĹU]|i\5(^ +ΏdUU\Ujm@=>lvnp-FJ_-.UhkU<ѻnѬ_j"gKZN>!z~%V6xI^C&,P6FikH=z}&~V-r1/|HEZX(aﱹ8CgXI[r+6 a}幥Ս⬼:KOQߚJw/jOon"{Uukί|Y^"cGL$ʳ"l:`)4$'<.ʯVe_ XL*,k *XIj(J@Oڿrm]T~*iwSS)Gʴ .y]x ֢=&l<=jneuURGMZGٸ_ʎYPݽ%aMVnST8ՊǰNAs}1}:y\<+|_Z/o_I3 [ʷT #v;zl,5γ^љo4Tӑj&B:{Եb""""""""""""""""""""""""""'"""$g[驝Zh xV#)"(W!u_}Jq- +e󨈉3+앗vYdN3_:-kIf_䪴Z9j[emtYk + O_3&ġ*E߄y":o'/i|uKz8X?,MZ |(H;oF_Cj[~;B]WbW;M:-yHԐJ%Yv;lDޚ]7k]'l? 1dVŊ0 $h9[ GL:'*܁oc̉C )UUX ߸QtGa<X }J~OP Ue}7}YMXdCc +;l=I-7׏f\{J7bB(;BݹlvN& Z\#rNl00k% *.${V *6N;'̝swUfOJ+TpGmCo;q,N0MdZ*Wjܻe--Su%͎{=fm`Q aj"|+Ӟɭ;W|k7^"#0ӊż038Ej0 $ +{w:NRdb?!ܟfٚl!. (O܈_տMR~""""""յb"""""""""""""""""""""""""""""""Dulƿ#ܭ,?R{؈ۈ6}>&(!<~)˲*pJ;z'3^)8=/*/%{~9).>>ͯZ8%IoYDDDH쌢Rܤ'V@'.dD2;_"TbW~rj"""rfguLjCy j.k,D:΃tXaX?~1%ԒL߈_[,4'""""" ֵb""""""""""""""""""""""""""""""""""""$][fBdSX0)4%""xr;DkG;cXՄBŸH=mDDOb""&T8fNRs@C6x{DDDDDDDM>q=mV-|Lf?'܈1,̬%w'W eͬq- +?S1׵b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +endstream endobj 86 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 29/Tabs/S/Type/Page>> endobj 87 0 obj <>stream +Hԗ[kǿJ?&^ ِ,- Zۉ>ԽΩ'dSO_>}n|.. >|nlr^/3cbV;˜\ټox?L~n|OSE:'alr6JL,uߨYG#%rgckLWaowi?8oު-wZe>8jZ KR72ܛ23W.fߒ`;CkBdQ^ݎ9?5ObIΏ֙u) yլ Oyh֦8nFXi)Iyv4}'iJLG"TI崪J΁=JP~`$qʦ vjvX,{$/& ]xc{.ʾJis(^N %ж Znk:B<]p,]gMhowu ~f>9B|^3C2+ +B{rSS +.-FޣX/{-rUi8x#[myڙbFfYkcd#Ŋ~`- Y)jSybuD"FWi۽™ oTZZώ>ok%_cg:zXv}gG蟓C;sPU,bl|~ +>GUa4l/P`1,N'wՓ:tK2/ܿ,Œѓ",y-r5@PI0uqV˫IAO|4)*8NB"ZӠvm]7xhwq.(pb$|ʒǧZEghJU P[S&췘v`~JU4ZTl@J%ʙa7e$JųK$C +r>ͱUЙ٬N(8Vz)4B6iZ +y-@,VD - hA5wY@a)PX줹s< (W"(,(pWmP0 jm%`yZYt0G;=U+O!\:  Vr6Sⵎ2ڞpi{BI+\Ew05o~Mv剟SVK}tE4J0/fîWD8r)peNt +τggq٤5(P!]F5zyHFդ fNt&l։i3C-mfJ3bq&T==ڀ ktJ[Sq1tU7c\&B̤WډoNU NC˨ n3&h~&qAjC^Jw+a`@l,0(i\-DN\HFx˝e`ٚIu^ #Xyae9\e}+[geX8\E(:jRܡ{K8sZs~]" +WP}zaQs0~j!x(% +K4KJLH& [ zT[k7O␭Մ&#Q~?c0>z˥TYvoY2pA2eզx4;-Tw,ԬLf=gZ:s\nUN] A:oMmsKi[3<aajx,:xN=&:zc!kJ%Hxt<$=A:aABKjavtc@Csn%U*1i3KcgaSTViH(=g3mrnBڢMЦѓvp~M8m8[.58y;E̙}w83$N gq6|j=YBoMZ]_%I2bП=ac2ݖ<yu)*B|.iI`0/C׽8vyI;\Q%Pj-ҭ!ۢnࠆ`V,~XAd Xp8lc0P&.k@;1X>zr VN=%߸%jTrC*4<py6,UB)Jp<_\ղ wkF|o7RV*Cv"rQN{H5 rt0 yzӓr +8!`sR46(6Gjl0mv"; `)uGtEBJ"͙D+))3P/2$g~mgӗ/<>stream +0 +@&N +c #/ 1 dc)!c8^ lϟ 32/z@H}'!o@RD$#",HQ OB> $M˞0\ d+@fR)J|&?K$,Gt>925hNN-nM%~rf7O(o$)-ʄcge%3ɐsx= O[wQ|ƷjBli0m4oKBj]1VkȐ9Yy5Yw?n&ֻBR}[GS󯨮pOQf2v=Ox,!~:|rإEf . { ܐ-wISժ8y H\cp \3+E-Z+1 IzmC "=ͧ6 l搌+KڦplѱD8g$m_&X4_ fF0C{ .+Vjz2VF0J=>lbk.t.( +SE˼qB˞=!W{'3E_3db0;\t3<~QsW f+u}NgVBjF-C,ɷDJ`k欕n TZX $Ov_<g.My8 +İ,9*ShcAA d,"lU3Yŷ'p֓q8YzVuF*hVˇ$kVớ:|}BY%+IN ?9`rwm\ok5A7ȈZ7&$N)a1'gQGf}ۖ~$w Aǡ +S?~(E6P)$&drE~$|v #,^#GJݑZ׭05ZڥɼS5|zLDހxI-ʎf8m)3"s0FނOɝ){]ɝ$\J g{x+q&l\AeO=D$}نwn^xդe+O۳?OL~t~sZ9o.&]'_ԡk ^0"a[^֪s$;1Rs le6M)o#~'`E'avɄRKDGpԵ*M~uQjr@ +9p dIQ{hhTT&ʉ*WA>>Q?z7Z)(I ٱ/b?lEhbQD?=檡<y(}(m;+ phW3acuǺJ x_TxHl4>]JPOBɔ2ڌ)g>^G$'7v!-T,fRI#MpϨ N;җw/z/ImdZ}i̭=K[XS`*HW S@ x!" rP`HBQ΍E!*,ټ&s^;<%ryѲ~6S}Vm 1ϛl2JE;Ļ'ť߯gyS'OA cc.xn3h)ˎiF @C~NWWw`bÖ T=ΟVm@@TxoFbg aƍeMW5XpEa6kX[PwESl}Z6Aёe(l,Я+0*BAƌU7)JUڕ-}g|57o!(^$PҼFӏ5m#SǻhUF)#zZ@A;7&u=ٟKxY黾>jl 0tlS_!<) zkǧNTҵcJ7cC~հWIqR^2B"xdN?,UCuE{!ʋ@oq}' +FvE`cP匝sYd)8OHl֔!lF_ +6>6&FwѼ/Ml͛u@ImB4J] U=¼;\WsEx.hwN?guRFQl< <[|\ĹـB2+Az +ĭ"AM_C9.`4qV?fg"ek< 96'T8/Zq~S R\#gW8o}i5L*rQ}9 LH] fGQa XXf3m: N֥'Чb<͹O쿖gX{NV]| Iޏ$Aan4nH-Sx60a2lxyƶ $j{)@g##.&r,7qۉIЭ.3\&5&RQST9?AI\;Aȃj F +_?2 !Lg,^,sV1ipbS*RLG4g#̉6VWa=ik^!c:k 폹I|1- K6npQ2{- 379Ƣ}֐Y.$IJ :U*a?!V>wnql(TV1uv$c, #  IB=Nf +D"e,o4+@92MFŠ':Up@W`8eɵwASb,C(ӪTB/4JMb5=#xuzj6,q֗/p lD߯b^|wV~x{-ٛ#~+>ҥΑѩp\ck/jmAV$OEVEoq)H;Vx_N3O̲sp #]!>/hEʆ1ShCI͢[1qPe{\:ց P)`nb95>p#ޕyh nEuֿek쯣aŐ7H3kRO՘6˺hpA;}H>_tZsgO\rPSْ^~[=] kمR)!Q-t1Z:֡wYi:YݰUeAוebRd[!'ĭ6fLIwq5+6[ ȨܚG_a.T;K223c$h0ߪeU8B9<]xjHbaNIye:OHhrsFƺ 㛗A0:qg,)+NE=1p)A-$r#l#AXJsx^"؋yP˛w\} ]v47f\|WbCW$b4w(lѰ79?a/AeNP<'MPOUi!0j`4d㸴x ;YkvqHͲ OZ8J|L'3 yǪJLN-5E`B^-p2I J)\xNvq򍏚1]}+Y‹ƣz. YOoz"CO8<ߞHD2nτ|7E yșJ+)ƢY:&t#->}K8K0Pte Ήu1}n|]JjGX %q} ܋ 0 I!0B5* +yPFX1>f,/cɫ0C dXe +|a#ߠD޼~Tf"|֞=tXKZtƜ@p~d239LOQ%|4Btb=)40XJ)r}L0l u+bA6Kt$Ve !gia4ѳxw|jWfjz}ʿKV.[ ׃%Ms{"ڂ bM/TO_.` +;A؏P/VGF dا~-9P|Kӓ 4(˂ $3b:51u+zX9J f5ݶ0 +{`jUʬGK{ Uy"UNRZ""M\d˥eWuwc:baӼF‚{u鬢w#-6)]])\մ Dn weck3>gioedypk?, /rLۥgS\f.6-h|\!+|L_GQ9nO4?a,vym0˩[DK{c LZvD8D;#J5,p9<pZMMMV`О1$O+w+u;Dw{Ho&o+K&Af&r=ۑa㶭+uќ<N%:)S=pяòg}KN6Oł'@NK(洑r]nL-D#]D;Չ-`ՑrAʥM92 /;?smrjs"ɩv{?p]"7Dc4l89T}tMH7]qa\G\a̾(PdqZ.#n9"O/ kç@ΉR`>}I1U'ٶYU܃AߕIn5* S Fpgl $Z3*\EEx^fNPaݸw+7o>kŞ=}}| +xTtMH{[.~`h 񭈺įPH1Dj:ه[sY$}vԐA9Dybc\CC, ԢDF$3GOkۗ_86_ѨF6dA s!۲뵙Hb{"Jكq_A-%Y/e'3w0gvFH2Z|E!,p)t\NѺ|3vцkQX/cyo|V +>G!I WQ!~oYg3Yi-E3I + +_޲(Qi]$\ʡ릤E PeR!_kXmmO Q: i2KKp l/ +xΔFg4X +Wӫ:~jRA6Nj›|ۛe;ԣ~~1r }и`%rH R e9XHyu30zQ_" +UJ!K˽. &@-+$ZQ\dS/";ItooL0f[m>Y6J IY:2H!d5?'~`|f r콐vJM$] SCm֏Fc>zU}E>a>?l\ywzO +5Q(8VDha# 4G2}^i֠[yK^:HU$9^~vr \9]-rF3xtI<\lc&nٸ< +K%A:Vطۅ=B֔ *s˿k;Ko]AWv1FFT+wB$৶Ee^e^BWBJ;x8 mb-GD@6}ɕ-Aw>s9S~97Y]2w3rVgشzzn&brԥ :E21~ַ߼hh v}f Iaul`1U1lA$m]4x_TWG+u4wG +7;GD +GJIX|{0n%5<=vCǪ3,·5=|[uyhDzf12Kad5f1:LqQhVyVӄ(R+P^9&ݬ*ipT]I]WO`!F ꊻ^DUUHq>hpI_[_KnhZEG^ aٕv6Jm) a "-ivLTp,&ѧ+d!%#["+5(SO){iϭ"|4f9 *s#  +)\]#S +2E+H$/U97W4=*ORYz5g$$ ,x)g~8`K!HcЙ6d;H{/ӀiXR.Nh?#շ5Fz?FAŹҭITq|O޵z?4ywDzTU4ڧ۲',Bv;$zƣ.UeJFGW"y/\]0df+S_BVQm~4֓d9MX`vt"*Y@Bq!f0dX^ʹ30ҌO=9 '"3 ,1qȒS"f:D[/dd@pY9!-c`/tuZk4 #)FJ^â>]"|7Gd gQ{sGPA.vCހAAnhi_DڅNZ{f#̀*cyI[/uvaIW:LU'qurw/֥˳sb>R)PM-:;t8Z`Ǔ\w*u䤋)Ǡa~o"S +^M1rz8b_*)N?:WaH"pu4QS8 ж)IfxlZnF]תe> ̮L&F}]di&My cs$ +\*^ c`Dʬtvr}Ҳ'΃ΞwѼܐv2R,dbs(zZj1ȌNo5[Io1]jakgsum.|''})7w#k;y"sO1Is==*t%66 @p*_|'pI[쫵ʄJ﷝ڊԕѕ\sK.PȩUW*V-^Vʨ @ f/H%AZJV-{hh{ xoӼlEHvi툕 `:')EJ )CSFF=NB} +eL0:p8EaH3y@5mti +huvzY&CP9@}167w +9qĵZRute!·-++RFĩff0Vc!PB7]MZL9 E,}?j6b}\}+ ^XlcuzwiJU.#LqCWM6EMJYMs +źek$ш3u;hFRz]M^\GLCĪ8 {}ؓ>q6+Pijp4" Gi_BN;i:sXIäqg" sCN!:5^L{)g\ 5%lѭTlA% )EM묕_񠊱|3$v&/ U.fa棵L[qaTi.4I;z)ZACa@F!a=,}r{N&>UF du&D3kE%yjl5[^2rUќCS{0ko14HH3h`v 7FMr ]^e&A$&~3{̝Hb50$"<bXnh'Y8gTP+Η}MI.q2iHspjꕫGւޭad.NՀN%|9o,i-U4)>G*j2j֘9BݷQRtZS|BXR {3eOtU419h|S7jH'T+}յi#Mb/K$#0 Qip ޝ'å=sK=2H]LRufsXS6MKh1v#'Po{5Gt<Ͽ;ɝ=}ۑ[?2 ?:X\.rtuMX~NzXK <Ҥ\`aFyfhH jL1H HB x_nkW[ThPE3*l Dʇ CxK +_|]p%+wqZlu]J3.ܱxV==-ޏ_cUӕq[CڊuiYY ZX/r-wrIRySĜD°O-ٓ:>RtC$k@3'ޅAf:,>BaݫlfD1l)Gs~ -7CYG.5: 75hzH:w Jb33]Tc1eS'Sۉz yG +Xf'ٵ V:k8uՌI_ 4SS  TO=y{!vUz,5y59Fne1-n9 Js8ɑ^!=Va$B]pGu<-v}er!TCJ +F,45dc4bR#" q.L-K`u&.ύ 0'zl.Z~Ў&-l$D~EYx{oa`lF~Ч;ioib0PR"T![l9_Nl\ml0[ND_N7>.:**(UOJ$FU{ry947MeBs޿v<8߲SY~=K3X>}<軾݊_fa}(Xue, ^`>un > K`J ,tuR&M~~,]I-۰63{͍W1!xUE4o3j +AbB&v^YY^w%1e<4i=_ + +feţeձ-bq$1j +P\,eG?1KrNI+|!1R59#`@3/e؁E1L˘* {L$P#9*JLA)'dw/ |  Q@iA@^t2H߸dk08AC{BĽbjn1VD 0`n_>8:+Cڠ :Kqη}&Y s_*DF4<si­onVM"ӉǾbiJ5ίRe?%!8NCAT*_C3FUDJ@""ǜݡkdLd6tЊV VN7*=M¦df-O)[Xtv~GJI`SAlt_#cGúfG]Gusf۔H]b*.l } bo9+N>SOA̺+9}/0obaoZ+Zc%}1Fۥy$;& i q7 +-9v {KdT3Һ&D0SO^f$.ׄ6P1-P&$0sA؏̉RS\+^}263 mN=''*.XC0w +9|uwK#n0+xJ RN%9t-(/Ye" b + +L͚%:,BO6S{I([m(R8e7~Gh,">;ʓcVY 6-n᫝[ n: +Ȟ򈾊;osHHu9NCRx4mh8<Ŭe,+q -.}u( +7'Uxm=s\dm +ρAjE|/˹Ty)*HOؑ0mCRIG@3јG v^˼R]dot"}-@1TzƩ6sxm Sm>LŸ_*SRȤ!C,?==~,@ .kP:U짅9@3P0?_0znakXzX5dj~> slE&Obal1d/$D4x4ͧ5z4dj qu6R{05VW +US |eWܩ9c=M΅y쳆€m\zֺazg{n@k#))LB1}^&؃y$Q=PQnx2_)IM.]=S{5S@VQh]y$hJ %q#3zkjЩO}(A^{&2jSX7HO!ޘ{YV SZ@%0AC,B=nBELWg&к8h{cR+cl6+ O6e-'&Yր>: z$=V"Xjf"~P4P]IwK# gFrH>u2K9L^4؍vzBgcp$j`Zj;zvًz]e~$!w9୫vlCR8j;Oy !Sw7/q͚bڄ1ՃՕ !.G?͠bfxBgےpao0UFo ":cbi7Y᯷d%*@RG?&pxKxͽq7g]_Q1:Pʛ}r14 GҬ7A|\Jg~G "srm;Sm:ǩ"XDfwJVQ"|ntLR sg" 9"tc#lr͉7%Of +eu=#+gh#_Fɫ/c& *A<./zLcŻ x X',+D)b٠q"š>+c}q(1)OZwL]-ltۼ^:*1zG„J O3 j +w kЩ{d OWkeQcZ(ϗՄ;:ɮ T/40n8U"i̙G2/KpW9ҋHMk&ll GNg{62LQ\W""AUڝ-MSLz?l5A8Gj|k + HDMvUtp*nc +Kʮ6T 9Ȅ +sBT|C٫anx4U}ztZK<܋Q7+t(Dhx^CC[p n v(+Ul\bjS[TB`xzj-N S*_٨lM(>BhA{e(].o썸0ުJiߢ1H'bL8)^c->4Ǩ?tdQ8"eY :yꧨ3 E@om\gm;?nsfDR\K< @QD_T+tEc9sY{HT5^\ƔFDM*7R65LX&|5V|5^$V +ksך3[xL,%g!Oaq!cuF1.[<604gN3@ev WwqcdӐOy`MfPYT2![4]VbƷƾ [k=<h:yrPw*0?pfH@"e?yE-qrF[^9(K1)Q9mrUD7̊p[%JndM;~Z'ȟkS"4khV}B`aB K9$7ӠƴI&2Bb+Pn 8#NP۵HgmFMcb V]i0Y@ʂ64"Y3sJ&bCtE6yʍqJ/IgB|(?BW%tv7XȾ)Շ0T>K#+frE?RW&PF ڲh&i g*O]V=̾V ea5_OΒTlP?/ Zߒ7_~ Y5m!hW#5>ShGtIbIǛrm[A8+hއPQ5 TaLSL ~"uݾiq2&ב؁D}ids*9h_cӪo "Se"7޼6vϥ "_O0 "ּ?/@\Y03m]]3%ܱbO&١i ӳHޚ\p5\vt'鱻&r2zBJX~7Y+(QtqdY7DG om +z.&A; -7"!9iK|HH" X,ZVV8|qOf5 $ѻ9/gAt4yG%Q׳t~Hb{̬ĪI}[l"uD=3 rI3}}388y:s]0MFL+*ËXg8_* \[ܫ_#wX5:+3Fyvc J6rw/\q 1d'()7PzJoPm..8`~K^WͲSmץTS2}Ul$oF/E<CT>_kT,@˧Qs`At%x"Pp\J(c^ڭY}XhMϵ]N*#Fr1~Zc7tvjΓc٘מZHPhj¼)ն"dvj +ۮT,ʬn5FZuyKF)` d V{! j?!Lm {ްb$ZCkC` mЍѰNRC=-C}B0O\\EjFoMR!,zv]V8,\uLh@WH0 + R,y) @ $䮬m\)qeހϾss50k d Ep + Nod(R*ڸ`s} 'rYH"M3-f7p.lNHs;GtwS̝>\= +XP|/@pڻ3W'\"(mIЬK4%U:Co|\RP2CE6\;4'c>L@LB%- +$[0%?3*G {5{R0K0F :x -:2l0u\OPnf6eŋ,q#,mFnC׾dڔ\^g OņDH7a&_ "JxN&*Zk}onb^)bvaiS/} 6CE$ 78njB@u|1vӄ[]cį,vX6 %rBf0 +5?ZK/~[zgA"5u􆔠^׸-An1CEM>ьY4U] T `:/9k]lG8Xpb2~ ]ֽ^1Eb'j5.c>3~p&޵_C>?/m9U )UƅZi(f̩ig`P4 w%B"2s+XL̪vrF_O>u\Xntلsjd]{ +ZRlc߄4K3 \}0dɘ% +HXſX KmJtt]wmi7cݪ$B1ùK,uA%$vHZ_֣9 0'&E3k$DͩyqF%O^˟ӹmE@a,4dmc6"\Zo,g9*S}z1,@)KT?J0F*'Zx."͔AbP"P@UgxGW;\)c6% dV{g&tYr*s${ D (\\PoTi>a/ݞ?gz[(ߌ޳xqGLy82 j)>&NWKSXsuޚiA'e=EȆD?&$bro p'gʃKTcȾ {vgKopqhKit;zLzUƎ4^=5 U_;vv +m,v9SrPK}J 'L%喑oT04ܹMv[ )LvyR!)`PJ&%(ՀA,u6w#X F0׿Opܴ6 Ӊi.&"a6YlA>$ߍRksT%MPNiK{*wbN׭o#U({a\zԤYuuuL\W~I9pPN%?>B@sɚ7p0f*W9ё1j'Yd|t"ԃN=2U? pˀ~(݀ /$cgE̓Ёzԓ[QENaDl3rk҄hIQsAuikn:v?uA2`&@Rib.ΗЌ&;O;;}s8|c_o0LPJu|]!יmc/xu.v[˸_bP`t}]lՆ>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 30/Tabs/S/Type/Page>> endobj 90 0 obj <>stream +HWۊ$z]/3HF xW3#yޱ,c2lwWVdΉwo~t~Ħ|Lp?ٮˏ_gĴ6/RO/o?=2I{du?0~z%ۙ.L<3O>rj:,vMsJ%mm: +xx%|v5Vin8l/tjVO/W> +cbM56:@+@fy6 ΤVHWn +ޯYHZ+TeGI滓[[69-:YYY΢:n( QBLU>,k̮Y]V_T Trg޸ފMN;YIF8D"HIg>.t/4! & +w(Z8ԛЩ Оvգ2Zy[c8q+?sˋU{|,&*ha|-ȍ&["rзDI-U 6'HUPb4}zB@VHv[UHzTJq6P\nFLJ@~>&YPnCwTB*TZk5S+`6R능>D~Ho)kjn_{Z rpXy +xJ2w8;qc  +Hv.)x_f#<KPJ[NpU{9ThZѤE0!QCB,vSK5WͯP,;Iuam)̀u!Da܈k-mJߑD ;5q.3*h\_g?0Km~.`̇ Djhnʀެ7uzv:RJ"&v dIFUXE1wLCt28#'{ߩcz forՕ ? E +w$螅bzR ߆ݛ\C; ܇M\v^~$\RdvU.$ +eAڧ?]Y}rb݊&n`ܑ[%AUkc21 7j_;Xl]yXGyXb4̓p?v;#r}|,v_<QY?>#sSΠT@b ^>4Y|0+7VŸ8M +z8[W$ۊ62}j,K!P-2kf6.;qwB<įUPdÎ(j|,յeӐmO`lO_WQlܾ3`uaD)`2i5<'9_r~]r^TUb Q ^r(Q ]qXëͯhavt*0BlθAfYtF.A u$HJf8l4pө=F\yM=¸$.]o ^`K@ѐ]XJ˝:XT"w.n(g +d ba3ƂI5Ug(IX;iH-"ZGDMbxkL[mZmE"=S[8zu$?j^e M1W.R ꊑTh\^S&ŽcCo.Y*cM1P pb$ +pƵ E*,"*~Hg7P}"fˤLIԶ7gwPQܴq%ϗq@>a dG$R}b2෗\Zo[WS) B8>g+RS.)'J5ctqu¾9#ɷW&i{3|hS*N7/ wCԓҷ(be;xK 'EC4m+"Vp,CVkIm4P%Nnݛn@MԄ0:1ѧae9_tQ^8t1}5K%\I|O208C02u""e6øupJjZaCb$ ۂqPΈ3<(VNJ!QP%ɶT|!&ڛ\XK "kR@,8WJz?%ӤS2c7&[UG#x@ULv]Bs K䨾ॢ!MfkTjYG?mt-م6.$tw]o?^Aݿ]{uxy8^_@>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  +k!1A"Qaq#2BR3Tb$SUr45u +%&'()*6789:CDEFGHIJVWXYZcdefghijstvwxyz?-UU܂:Gu\MnV"Srܕh3 oBV""'p:,D:f cDDDDDJV%ܬx""% ܬDJoRw^b g_\fޓ!] ( :V]QłJ|R}O+YcQOV*9 KV6G?|-|`7MJM1]]>f3t]<:loSgZ 5Aw󁂏ٓQQ~N- -!ב$v^gX4ёRVUbˑWdw'X_iF޲xzmON7-6Q vnJuv׉\ޗ̡јwߌFX'(b  sA;塯nf ]/ )Tb1-bTT q-L:fUY]G#֤QyRc{In=q]H%Op7#zO]C"A5VCZyY!} N}U-sk5MljB^ۘyx깴)Gs׼PwHpO܃Uu]s5[*9)0!Ǽ6]]=L?0ju$#w?ߗSF>;=9DҪ\"xz$z6Vn:-C9Q@!OsxOAjs̯\JMnǒFHc瞭r3qqHD9cCt˸lI:+62s?gcf△-O2 =n]VKhig>! ::3"1EI ;:7R%Lx*]*<qs2QBq졐ϖZԌo#?N,r=ޓm~ ΓP6Xc:< ;AiWRԬ8*B[׹lO?jvTޜo?pYoIM؁ﺋګYbaXe5]16a,FɨHUVkft],UPGm}Dк~N ^ U81m +;Q>NeKE(-+o海E bO3X2I ^:,~Nqt(Ϡ+XkbP6Fm?|9Á̶`Eh⠅;^^OfunNf3"ظMHptwįw_VL싎b~\H[1k8Zv;p*&Nm |JbBt_ 3/oK +g_M{˿%}GW*(F&|(IdW]/'UMT-&EWv`ATngɌvwE6(V rP܀?@\5e6.\;ށ?ttfjWUe F2Q[5S!/ o:3,}W#Ůwpc(eWq{b:F7w5)~\Y$l72zGvp(\7 9w J^k.Z9X/D -SXI-h {%A$] 5ҡ`U  ;^HƵ2J,ʾdܐ|ԚǬ\ZoΥ؈-dd&-mmJd߀Z1̕e`H0}81vq؞]Zy~VZȯ +[ܚRSgeAzbӖ([+r(;0!̔2 >!ʻ&D&ʑ9n='~52(vY]T,lNԍvT[֖q+UL67>\][=f-+QRC<@ ݄˭EV<]`9:َfczyeŷD}|3%bCu.~mXiYZ࡜o˔u|UoP?.rx%b&6naT",bPr(3 DL~:}^k5;75 6D)"\{2vjpʼ ->B9w+ۖL2ȘXenV ձV6;L32 +e${N+Kk5a0u_#0A'({Lj3}kұ}>;. ^ ʉ׎UYw uR,g(]k8}'%SņloD{.Z#XAT?p2?uKUmRY[2hw#2N"ZLZT:ωk?;5-d÷dXC8tUnN56.O2"""'Xlkc}vS}'#TD8$Ảۀ'DYm)oe|XlldO*AOQ1:c[P[?A6lDv~b zr-,02"" M?.QGEW"76:@="&QfC6N""GezKR-{aĻD +w1:QK=N&;ĩ WߴM}s)~WƱsjTԹu/ eDكx=AsdKV*)]^{'E)gA:oR>F{w{v~(֛b(cnFEvz~mۓGwAFfuL\}[.\s[F|{ͼMo%J2+7EԺ] gѺfFFH^V69WdP{_v~p˃dSEHoP];%z[wP}TX|or#u北[]ϥ<_Z=q2$ "0=u\4ڣwkCEJk@?eWjm9TU36f%^53m%Tu}Ho4=UeaZ +H=׮eǣˬ7^j&N}?;{Ͽh7ԕmd7nHt\'r&nF.eX9-if*/  _[w=CXx+s ,5hZxEb@$v7-ۙoEJ²֤Ԁd٩irMǐ~&WnoKk)vԑ9k[ަ6{nűnտ%)lnGn4v yW}㔀*ۥΐDvC@c>T'Zϕko;1;!V"D1m `uLMY=AU dylk##65Kr-[XUV,P{[YX2ƭoI,jΈm3/~I%9*JGu!pAF:+uΣFbQ=:,? H:{'S xʢU+;6;*Bۑav(BD> +km΢Kؤ]( os +ܜ.ho^AMa>vio]c-M5bcn63]_ }1zBY]os"6֚Aq(o'&2uA@夤;@# O<3jYqjjKX3?6J*OkU9,I![aDxd^ega5ߏ+̣e 2I_㚸qY1.ܐ"rVfnqֈܻszx!"b.C%]1E] +4IyK#-~x}VFeV V^tl:ϩImƾͦj_Y^vU/{ҵ-pvgAU}{o=G#t3#xX+9D~ru|Irn~7&[j6;,v-& \l Cuf(=ĂwI=EԳS`u6YfN28-L[*I:l}G/W^2R>FrI{=Sg/L.~euUF%=> o]z?.Jd磦C]H׍Ig}Nɱ 梳ʾvNSEʫjԬ`AG}R)/mffXeV*(rWddX +ƴ[`׷&fm}y/({Ȋ~r[,e?zeBJ^l=,odI] H>dz +/R5mY Y{:Ƿ:y"jg +,xw[n +bQg/ͩP +H$.IL O`c7VyMw,(;q_ёc]FNE#<UroL[_X +GxԳЫ(ՎUpN4AA2<&]Y]rNpÎrf_OccYeݵ!B s?C޼ƈGCuwddYiz/Wm?S=tވ6k3)`Q2DȬ)Ÿ[|$YJj7ɐK'-<;;oR#- XPVxG33jy;Xv;(;Scَ=jEn/p/º^Uޖ%w(:r>ʯ2 y|ÈUNhMsd{ĮriFvUF6}UگPPNUP'Cg%uPu\(^䡏r:n(t%=2A68zKnq٭jdn&qߒOye>SW +H;Hddtz]lj˨oaJ 1m1̭2.9w$!b^]J#t LlP^>/F=+=c36aPyo9B\=Ln~O{,z(~Q|/@.2,{GMY[[^!t;?&:doXOK0|Q ДT4>tx*WrޅVV5YoLx4<2Oubۍu۵(w ˙ /j[].L\y:%H*TFv[Z699,xN@kRkZAڂHxdR[r|ȵurZp݇Ug\mjͻJ{÷aǴ.c-G#iL7_ͅ@v+ZؤwXJL +t;u14}UVsM0tV*=!7r3NGD\|t~aߐRJD;NNSdsuz^cK GuH#*dߖ-Y?!PRZ|j0=klXz%+ߝx==Y`'@yu2nB $}}9K=k!?2?709qɿFV6Si|p)8`#ϏSQVK^7=O+zޥgZ)wgjPu{ $c[Xj|tkg߼:UL/[PAw=奯M"؁OR,"rBg2dz}B6v7ڒ;zn=XUjXQ;x1)XܬD`])[C<Kqߟ>"bu_MY%ZGv;K?a א ⩣OIvE.m vf.w=EeenU{>ᆈ3.""&.gQK9n}4ҖO}÷2AܬDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD-dz FD9i^fFm;T{O/oϞޥu(3C=_O@!oe0JYOwwac$ ff'IL{X[Ďv6*4Lh ;'^זΣvn^>VjԱ-mx:%|9lOԆ~vnUx*d:-~竫53pJcY;c4>&Ng0/#r@t;&FWSr+V[`@J:"6 t.bdϳ=8A,lV7T_ƻ;ttP^UUZVevU ٝ:_)nJTdpH`9ISh˹ mN'ν2N{{j^]֘X}۠cmM,Ք ѰO>Hy׽?Y/*~ckr촾D)'v,FOw+J(kSAM 8׆s}.wLw_`@WLB˸u`[2?Mȣ,XuQuel\e_g[8I–[+BE4ٽLΫ!.nMF]s^A;r.UaTʼnm^u>>цSU7m$&\DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@,f-9OR^KKkc~bQ*ƿه_ܕbV@?OE|=^*X@[N{Q#rz)3Gt(w$ܲ,lYo.-x]*?TJ^)OR,NbU?'@x:R~սuJEq1,`u>{Xu6BXTO]C[Mqldnя]~2M`qIZ<U@;'] Qv r^kB**0> Gy/c`ciEM71JY[UWVT#?H>Ik6b7_ +P^+ νwm21 N+(AAbX6ʒ;v;3Ajljy\X"?{?(2"ߣxo;{=t'Y^Jv4=!j3,khk ob5lXy,ۍW}aپ\v~gXNe`5`"z"[CĹ)({zV""""""""""""""""""""""""""""""""""""""U[ֺO^*X:=辟\}=](^~./V̦9lEeV8:#ci8u|J+EbE |l#)}r(&e"T=O rZX)tw==l> |ÿzޠJDDDJV"""%7++(X2!*JDDDDDDDDDD@$t =i|F7~W~>l_ 0=/W@L_~n# Itꙟ/#~NRu!zw-]1r45Bf`uTŮVXvǾh'c؀U`4Cb9)_I1<[R^C+#`4΋*ZcWQuA`_ u~֦+.eA`s]vpٹzoĞ7^W4\r>+x9y+[ƭNDw$]=A-obXȺJXOi^[&l͢<Loq׹^[` \'-)ηUB`z5|Ar uQc_%?:@>w-GN3NuAﳠ~myLpj-,@6YH@2z4ޒXֶޜ>"1>Y[+a{P?Q"l$fG^ZmXTwBvԉU ;kKq8/}cY.jޫU(% T#}~7NkU2z q[v{Fu,ZU(+RvND0꬛ZX+0]@#R']2ԧlFz5R :::2KuJ1_p[꒙ {7lY +f#uLPֶX +l C~މ֧5ErPO[%bt[" ù hvbu, +8yВjS-%Z P{|XU@XKqy:o#z`_EXJKXdFS#;|l +qJɯƻ=u+BWo*t:='NL,Bcۿ gZo+`EzT*}\fe 2Y_uonĂ؏3γoC[k $;JW))~qz#~ęu_VK+2 uSe c{;O"sQ!eR~GvK\"6*=۱'rAg +Y[HqJ7=[+VZҫPԪ9[ol5\grYֶT$PO3EC*Zul%7̕mh.V1WL֮^QJ.a#qW2WelXu +l +6x~Oq\+Y^7oS7;ׄXV8!F|n"YUY ֩kA iއebu + W0)#ccb;+WNԴ`vf=T{1w]XG@ux7b@|'[rnZR R}1Y 'ǟ=}aN"fuyuMߊW|?kUb$z`?o+ר{)7)Kgwq+>)ңEw[{$pv#GR|J劖a[Zͦsr#̔=;T+^55d/ @+*f;6{IL^,,efD(.*otY~Xp[Ou)&&6sV\kfHHb73^lYUƼob-vjPJVI7i1)zs}e(EwyiMw׾6 e*tF&5jEh AJEt";xS]TVqR6Gr;6~m(WE,iFj +!e~#eA Y~cXR +#1S]~)#cWz +u{; ;n yTVTq9PLͪrp~Oq ]H=F}dQb;ހ5']Uq Z6;0U#Dc58ub:~PɅo6 A@LN.^ablKQ{7nE@u< Dǫ6VFu6={Ka[\N+R/O-6)Uiev&WHcpꜹxnH\+cQuf)Z#1kP_#133 zf𬃿uؒ|Ӯj8՗fE֙5|;PƸngԵ{6}>nJc2VS"Y$lOp}>~oT[$q$l${m=S%kv +_󅑫SA:S-Qe#der!GURY ;e|7uG3"5-JϐUA#طoUvX0Mu}Gۂ!W؀< ,~!vN5z[ZԶN?Uӵ}|CeoHeQ`[fFJq ¿Ln@?;:#ʶ6?zVA@83&2-x378}Q2cRTzp:WXWba>kZ׿:l ~:WS̳7=b)8+%+j=Gej=R^6{:K_`SIy_dIY]h `YKw;c[ԅߍa +6Rv t$gyWu.iճA*]3.<6Ƶeg9`oL-FtzVmWh{ k};epAr nMk[*oW*j+[:-Ec{[Z5b,SQ{Ǽ!]@nZOur`6N71!ͻ ?еi9wBеHw_:;״ؘYsSv;ͷކK?kT.XeB{?gyj[u|ffUmVV͝p[()eC5f_ŘVBw:"=_gUUDzl,v+OpywXoVo5-Z< k$~D |pW=brZyq+_mn_b@8#] ktկ}F2ޛM h/zI#^3Ij~^6ewP\ rvΡm `zޡ'ϰԎqnW4Z_ncԩ[2>R\G 29t;= PA +\jeuI|M]?Nw*`DlTٙjB uOAnF[ +,IĮC-ub yzdӺ)^,e[^2kmǖyfvVNw%hp5 =ej|kh9 ՇjUJemQ_]rvOsŖ«Wc Nmwa<1l,kmdT.* +4s3""""""""""""""""""-pǭ`(ޕK7QdoGߕE `8̊ЧvGmwOĵWf=/uUk( +|'7/?Nuaч#7${:Jљ-/!B\AyKw IWWN㸙҆@/g]ŬUkcʹ!tEdq2i*ՑkZU;/%Nw#sdS]YmrRFʝ{z`:fU,5VTB=>#Q]:յ\:=EމGo"azJR92iH(ozIX=[ gM7pVuy깕dNV2VUtK _I/1zcV){t^5趘r;&dXc7!(խ(Moo]غAc=DDdZ-%m=E [ruٮi_&7Gꧪ&HCHDϫnAP>bT}˫ 2E+Gݗ֘L^[>E]UUH؟ wǾɔ2 ݒA?ωoTp,]l  }d5}Ic!Bʤk7Ļ-rVҢ3 zWR( UmN^Z"Zȯ +-u k#\@dXC1kq.ư Ey3*""""X\{o"9LX_Xgia58F"cd]+c{:$ Ȗ(̯"kC¿cJ0"XζhQ$) oDHN9FJ}ozdD@L/-|A'g+QB>nVl+? + G[nrWu Se22A"*['X:נ>~N=x̱{-H߼kߦuoAǭ}ggtMhG?ca\CCfޜh\F[@lwM^Ѷ̚"]f~%:?ൾ ?IoLs +o1v_zի wD9U0[Wf6QtJuE*WR-cRyDtlwku<THEuCoL|>XzԳAڗ${+\t߲:B̳b/]gPٝ*\?]9ݍ :]tGr70.l1lmVbV% ]oig'&:Ydz*RLJ2KXG4@f,\i\T4z<1n[ ܿao)~E~J5L<#zfF&hޓ*X~XA`c+>*#XV]yh "fՇVGexEśڲĆ˧cFɵ6PIf +e + .[}@S{Nc׌EfB,l%H$v؃":S~Ք[jkX0 +-ߞau\ +eȣ$˂P#|{vئU?u Nβ5^@iuF&X6h]M˹3;-Q*{;r:P Ԟ4ѓh(ɎաTVf}G/bzT6H=xm-qG9PneպzmeUn "2'@Xg(l['UVk߶LwSX:5vc[5\m/ eu|odT gdwg]W2ucmdbD,̫m_3*|}1KqkľuP052܌ -oʥk <޷%Ntψ-Wy6 dV'ؘ{լ"> {OΗo9\kxP=w^n tMėNLyl{a$0WB +=eK}.)0 lZѫ6]4H>uej{Qrfry,Gݷ:V;>FNmqE@Lo)(dM_ Ӓr˽V#PvG#jId]OSԃlHkjkNDw?s˯)2z@+|Os̳.EvZŪ|GY/GZ;:ߴ\*kY"&6ejzV\ԩ+! L\1͚[=NAs`<"s8կ<'=|?CeGdYj ]bFt&M VR~<}+P~ɯefexWE͢CwNUhg +qVNPw}uqgZvw7晎:rL|{}G^- N#z^>46t=4זك#Ĩ|hd|=>M˗NG[b8V@߉<~zS&.,Cxl aU0k er'`̌.ll{]C?͠zN^Cdp9޹q0w*-v9w_TJr}S^kg+X-uUo7|t6uɗKꂡW%iӺwH:ĸem¶.#GC۴ǧ,ao!ۛs 3'aCΆvtRE +hx=ΦDDD)+iԕ_ ᖥ1Rx `ؙ*]B+Pø?36"Zɯ + +`c\r*K +o؈t 'S5z +쎧s\k/ @\v2b"$nN}N%HZ٘ +ND̳cZ۳YTWl9w/'0[RU{6k(܂ {+YŠ׬FCG 6>v3&xˎ޷縞lb)b ~M=;AjTe~k{GuU&޷º8T0>A1nѓV1W-jR5<ߙ0X|~gE@Xry+.*Ͷ*5|fm~m}&J"&t=??V|WdzGmj %w{6&$Ż;tz{nҪ>h0ڞ=̾3:M ]NyjJoZ5ϰ @I?ts#u*13.x[SPH<;Bzk=/U;X/%ڲ.J< K~]_lskvbL]?@x=5czШiAczTnShΌO' }*QBltsdfmtl~&0[H.E^ ׯEt; + @ ùߑz*+f=lk ĥ  =5.hSv +#k^&bun&SdQXU4MBw6h}̊Hꘘzĺ2jþ#soTV*:ƺj{ﶴO]>ΧqG;qއ"V[)W2O]#⊛ 2 \2 +G2}K&_{\\}꫷Ŗfa:wMeÇ2ݮIzn^nWZ#)UmA,]h떾]EWcT܃ o{׶2,K"#kǝOvy?]y%ݬSQ0'rk2h=)z׆~.{࿢GmǙVbZ)jame=y5Rnʞ}L*:QxgcCl)Z*ܾ{xrgT /¦ڳ%u˂ίM摋°Շ$Vw3ՙ}*7zܷ.вW2!Yikh1hc[el1]O ocV%YEu>ك`vGv~s^5T3zKrrFiW& Ԫ;@~$ɰ5,aS/]~IӬUNʟn.O-}f,[F|?F*gesRd3?}!3)*5:,<[Z|eƾĐ[^@ Ζ/vgއb?A$MKht[&>։uK67_=UYύzye>sS7ʱjzY# GnCgHnĽNNP"vXl݀zp9BkZ*?%nR#`b~C̔h6>&kzT޼o@nb+3qO+m`|ֿ\N5*a]<{1 +4ϴGMZ2ܕ)^D}y":êޮERj>BH#xO܋@h| ܞ#^9dX=0AqC=!5yVJw+kZ2ݕVZ'w'gDgYyYm6pW șPn + k::l۳UYwfְQHEҨַz9]u+_E$kG;1 fro͘m[M3$[`.][+NG;{oe|=V^M cVY|H: \B 5j?y'}LFן3_[#Q᯴i5Tscav^ʹYe[ I{[SESWRB*!X^Ƕg cd=5k;:/|X^G|j{9휷ڴ*Q6To\ '{ȳ'KڀYWW*4<VKr;k^8Mo65YU'*[ {˃6=>.CR«)bfR{ w׿y'MKB*/:+u6CW_UThѹ0>H?r?;{izjWa15R5t̪n]/7x9R^&Еιs S'#5^tT0V'gcDOĸ⌻JlF+mzۃ#^!}U9q$0 ⓛm.ۧ(Qn0]n[}c/?35u嚃zBHwvuۿ/tΡUL +l>2k Bب_z_f2[V2 NiyFVG^l/J_MYg~N`rw:Q6}7.Al; AžÐё`r޴ %'gnY-I`<##{#Z#&5Sn +ljf[Xn/)Gλq꿢- :+Ggdd`e [ }_3эM jK!]́>C#.=^Gk5PUX\Ǖ:Gq0Po}VXeAJpvګ0]?]LLQ)lsʥwؕ[RuED\*L<,FVSR;OT>6usG_dCQ.3(}BD}71.cgznV̆a:#^|Y L\kc%Y `AOh8X뎗اUoظ~3gF]e`V m~>{nguЖ]CX+Xw%| ʺ[oUr +1 :c1>-E3QY *y߁[#I{)5p*]ӿXxWXS^%=vYKؠ ` RtFs'^/3b^JYydS[@6$&w ])U ~Q,JM+6~*+NzHHމ:<ź*{+ U*6ĎCxדi>#pPZmwm}ǣIl螚#,v8ĪMJ2 5g24WX-kJIe؞㎆{hO4ISu֡fSn-^sy{(jZcHfSɔr(u-ߴ_YTy%CYo&~oZ\{ƦuXrǰ 5VUQ?fCеxnuϹBƾ/uUβ wRTYY!m0Cb]=A:ua,ꈃTo`;fNGٮӱ.`h0u$l}_k+ōet;Q~5K|Y-}/'"%֣˿{n蹭ǰf[Evkؽ[C2Xn\Sp{#U/MmxVRTW{n 2V*]C)#`SccAQʷO}MU$ec݁]}^%z" +r +_{>6wIcf>]^5n=rG3|L;'Nys7mX)LT#ΏS;>]r x5nUu̫hŠh +n!9뾻yUfZT: +@,d>Ooo2W %KZQwtH~=wُ ˏ>*{hno||J R#9‡E k. 2b͆wQ#/~e +jnU{^}^+jW +D(;#l˫d[]juAb}>UWhEm#ޏ.DDD@+rz]hJKk{ duaąm+ UHۈ'l#7.i)O>mk[guY־n-ؼ߳⇬&ZΆt;}ΟBb]5*"AF1:+Sfc:rQY8lgK}C'QNՊkl}pS4O"@52l{Z[gdJX  kgۼ־/NQ j/ʼni%Eet̪( l h{<0` i׸ӥggekR7ͭeoǙs%uMRQUD0'k4}2:1̮r*k<@`I  ]𽹴EmW}dXym9 WlK(`{l;0hG wa;cǶ}ژ߁xr>̖#~c05r+}k]RCG܍kձLcɬU%ն< }~\\}/~?F^!EԲ읍lї>6%5Srw`8kZM ȮQ-C:$ s?t0~L$~y;葿-dޤԳh~εe-Uz2߷nq:P=/̀p*{w_ ӓ~qMz(~RHV:o󃍛srZK&Fj-QԂyr44;{xE-j|ܯIP66aw#wH8iLU{1-VTY9/"̣^}&&Zg_OKpmc=jeCYI!zFĵ;w:"W瞃Ӿ{Er`tG|έ:6WNZ#ʙI 6,^ =l:v{-!\;[?Ygcľ'J9QOt|۲LqA9x/ÿc؏_.7ɼq|a "g_}nyLjr赴Tf"6H2hlKڋvg^u<|,~Tk9,TZRH;_MH{sHVſ צZ\jo}fGWnMc2k"i +!j?T8٫Rz?M8T?01&=Z/>Jif+ApP~[`xי;"KA_l6vr6]}RZ֥q'CVŵ(}%b9l^Mk(2sQWJм.лr v}vrZYԇ2dm>[osKx6u,kuv7$ [g\{d^@~o=MK1*_mza۴+^*nx<{}^ٕ@K򬺧] tG8L쬳KܹkIoKdG#j}ٝ1zfz-,gezươHR@'K^LSuW +rEr@ĶθЖr:Ǫ= S^=͔сKOR:fɮߪ^] }H?t0Ct!i{+5(룶]-{˿nYe lMZZfGdA߷oNNӲWf5Y[Y ˣC֦wJæ SVP=b܍v=u};;Q8.Z{)bw3qs(W+(ŕ}I ~xޯ~&mlcp4ӵV(^[Zߎܑ蘵cN/E>ݶIo@)O/P>6R]<F7-=^kz8@llR c`בU˾$)[\R{y7NtܜZ6:ߩFS}j}*k%b1|<]e"юꍧ!ʯKGooU6}lkq?:j5}ō_R'^* (րiɜ1-jSW2M.>]>~{ٸ}T>>ey +U2--d_׳oz,KWodb*Pٖ0ezUbN~3mYBۼ{)Ѻ+jʏlm{13.ifWsH(VB>b66Г7.p~֙-1P͗G];"ӚPcS=^: + v&52|}~DcePߜIjv=ɾ_.Ga–K9죋k`5^[cˬtץ+t ++ɶmvgY6ʩ,]cܔy;'ggCČ^_O7tz6]U+w56]iZk:kzbH4 %Ooi=s=77n Ow;Ԓ̵)(EibX +0{y+Bxz 5FmkP |)xbޞ&ηl볿&^ok&`vEc_GcߑWd`PjtmX +E>rI~x)k';8SKw`>}Lǫ *p$J<( &dDDDDDDDD=¾ǏxoǞ>"""""""""""""""""""&oK9duRGGe0UX, =Z l 6"""""""""""""""""" fҭ؀5o~~zV["H޶oCgZb7]XfLDDDDJO5ڶHGOrVSr->EuΡ uCɗyX,**t6@[CeTltLdk,`O`ܣ8]l:F~;7m|s]m/K +H: Hu.JJĵfMUvwUX,V?@2DDDDDDDDD@Q8u]C j]wg鶿*$q(R63WqW鐺?8@UڜWN~j3BPO}uRWlhLluϢC>Ԁ@dĦZo1ATq,Ճ{ |w_Lfz,Zֵ#c7m۩k#⊩Zl[^ t6*.7q=]ueكx?|f>_&m.Wik6ik+&*X*"f>d~dcZ"B$j~a~U/C?37+ ET|ڲiؓ^{=.6E8֛[j-:=t|M]Sw1L ،kJlT1Ȼ;vJ*&PĪpP@}v "< 93Ob2 lv2G7\NPff:UQI«YNU K&7@;>'5. yi4YW|9Zv'ZkF:*ߤ}FȔoLt݊ Aa^GZ<ԋ2 #x:>Yfqs`A1}On>>1\-AI-'}L>roTTXD.rAHk-H=Fġ]`!BP{w&܄z=Xb誫 b'>|Ĵ_V3cZ*ZƃiL=)OװܳŴ *}S d?Kl@^Kf5A@tsUTn_cRྍg~50P;'΀{^k=-)`#oL{G"eg?c>3V=vʓ”Nڱg^߶mq!++NU׳^ȓEjF OYՈo+Sؘé ;fDYNUM]Gg$#[mR8enW@}Bǎ%r~#ZvWE +_o:{.-nE5kefdAdc=c3zǸҞ_D=Ή |[EUbk!x~4atI;GzKTaF vېפֿyH=t_u' "X@lxX +dzҳ!j6hIg+uŢ ,S8u X?=۱72Or6t;p:pT(Xn;;,= ~EBӋT!{uSK'v|?0nPY]%+oi{1eSn/F܅|9[#wUςrawݹd&k8V5TYM`YW2J2ua[9[+;3=&(6q]og&?"_eI?ݕӮؘt}4tAv&uІԻrUH]|eu\FHũTeLX>}w5mWdeA6V(zc߸zN,ZN]H;5mkWUafT9XٛJlr}Y{x?&qo)2mRÎfRu,馬RCT=FRD6 vhNN.*mR6{JV:'[v?C0ߣ  +֟*hA:E 72CwRJieXl%$u,f`eft1*CHjP +e[\@t⛁¶ 3 =?O[3 %5r*%c>3 #j=.{ðE\kE9k߾rWRȮS`r et-c~݀gJlzc$kΏҿa?S8FEbt6@~#w\֘8jH{Q$C#bUcXH!?"V'}wN1pqoȏ[Ă;M6ϾLnћsMηCO[rPﶷRLYlTŮ6FlvOm'rpWÏXĽtH\?p߼كkL=7P@$U:O:Q+MUZtH<$oEy#++du߸$I k_O8$fUi#*I+JdtN8.u`c5+,̄E4JMjGXz>e:mxHyىfS[ giae7X\Е8-qB׹/Nw[}s{ r$@xoڄqr2z35jMh*^,[d3}j^MLRaSEaIY$r$H.i£DOeʤqJ۪l +d|Sk8#h}6p,#d ޻,,F3 UL@@۴=/Wv8ӰH M]̪zln(ifeږoX=/QE@QP'_YYyBmUlJr; ȃfd'] hHg_Gݭ~&8ŕ@M[ߕgWԗ(]! +Ջ,Ӵ=''\YKqZ`mRv|;ͭRt[@ l~3]82%*T$V-ʼn ŏn=sσu5LKS@R6ctοd) X%b yac}Q响|>m{`d?N~ٗƼ$?t:er^ò -I#" T,FIc=.}_kSi8[ ;*[c@=CMkt:U؞ +-ޛTHfk9)^ |}e,ߕ[g-8KvwAﱹ:u7Е .Z*Ew7>f]"V&V;F}?&J2T('6)<21bRzMD+X݀x+?yzK۱hjPӊ29 zPUK(<:7zپqYaȍG^u=DDDDDDDDU k?zԺN7VEL 6F#ؑz+,Qw$P=Uj^у+  "{(׹2 {S Sn݉,esy2""""""'^jT#ctҫjԪɛn~bueDDDL6m @ Gzf:뵮݀r~}#dJ/͛HzL2kV]J5X=DL}u9sbʨ9}fKYLe!sfH֩ɲڕlWZQ`xDhs[.fKbZ U +#[.|=PWܗ.Wd9RJcHT"a |NF5yN:Y֡\zK ՛etzxte^jV`rݫ+[x$p_Š0 ZIA%P ǣ[]R\6,R[]3"ɹhV`#NڎY:5B=oKRk;y{Z$vmXJKX͡CLr> +mH߿8/>L(1U$%dl;~o[ RQ9(${y/UjPC= EG?A'ٙ R]Yں)؍A|R,PC 8/^,`H?Bu60zAȱFTGՈ܉54/D#S"""""""""""""""""""""""""""""""""""""-d޸=t~?!:OE{Z,TUgse -?FS|.QMy(*Spy5I_R5t +qрh+m-[.zų8F1JX:;s4&Z`uc ~ޙM1o!تtNM6"R=0^l{V&k{ }xm{+?&{>PO:nstΥEeȫ@?8! %]XM / pۼ\ZޔwTd>V-:ʰ8SoZ:dɢ,I5*U,5Mr֢˲;Q]1ePOv|;V +{R1ө҆$w3z+6WQʶ֪.5JXf'IqB̋s-r z-:$q\ֱͪ\+>VߑٛZKc +/.2,Uɠ5uoBY{Cy[1+u sXqBWN_O}wm=0i;|GinGzjqn~XkW. ?tb_UNJ"a/čy;a%\eTv0Gz\GiP`\wߴ)09V:ZTHeArXt<3""""""""""""""""""""""""""""""""""""~iGod m&`׎zU?tafŁcA'GBX\rI:dO^ͯҗվ,$GA+/+a|2^EHBԔoY~Q$Og}>&2XQX"AAަG??$12AEW rmwDBePdH˿H^Ymha/R?ꙢVCuã+wɽ!r/Ru|l|,Ĩk#TU~{K T2JC-mǗ`)dWXo]1#-1~,g}ۻ~n~ G˳acZQʂHmlIYIGRLU[tE_.z,w=|T0 +ykdx]2/_3q'G|:renJDDLL^.F>3/y ^D.%mUW7%yXv~g֦N1XTR7ݕjuٰAUL;tQ/jX^S['@2&Sut<[-co_Y+13x-B8$r֡{I?1nWiPE1EBdDDDDDDDDLOI÷$/2q_1 +=t3b"8v$2 MizbK!Twd1:9x N *A4{y'Ť5zMN0AZ:e=:L9شF#A>fTDEUF1I4{w""YɶڂUؠx=ۿ}=興'5u\2CaT߈h;&ԡy門Ր7g]EgtJĵVFZQgQY6>uo[)Bkc=m8bX4m{"H >l>?RcVnǑ}}nSYQrdJW: +[ =ͭhovTǙ/Y _U-Um4 v!KX*$xђ#.Z[б6,kn;=im)kQEJvlw.3Bpq/c*T|IK 5'7긘`Ye1SVZ܉-GN\SeX ~[c-u֫N$my-Ѝf +%B +i(թG=5gYʰX"k_{s>$~nFJׇYiyK[q` >;kIqbZ=$ y@Geu}(u |fw~vi;čk5>E/[z)F7qGso1;:Oƭ|?W&:\)ݼfYci9r:-c/|!rdQu|o#{!U{AsF+ȳ^3f5wljrk#2]6X,b +U+W]mb{>2ov7pſMߍUv]:VYuW+, |KgN=!l%[klTnvueGm.|CsYpm6f-5 ?2]Ʀث@<.-_{=T-c׹vkB#C( kY٬E]MhT(iHٷ;?Pm?_u\-gUC>2߷a/t\2KԳCf#prNWR«ef:j%{"db6N-#뛕x__[\|Wػ(atfuX=[?$Ec[<ɷ#4t)VCӯ +9w!lnKt>8ݾ(@;o~߮>'V"꽕UY={\ c G!}>r^G_̮.'ŽC~fUmy=E\ Uݻl÷XK㌫؜`wM5a~q|'^7eV7]VZ\E5X@'a}My_Nl,z3͵V]T)Q{ cge&6^Kc30`XR+ *( [w6JQfR3QƳ`LLݵC[Auz On= ZփJ@lĒL:nGWaNp=ESexE-e}EOP +(!J<~O}O2)P?oIm (5ϫc|NLON&/9ҲY?MOZ Oq䵕QkD!ޕ_V\ײ.h"*W*9oSgȯ +w$:_RakK~uV#i:7=%3z1εֿXl65ҶmQPd߉ro!j^͕,-P*es+R¡rj.찐*Pk~}ݵd|G +!=EeZP3[Inc@}dumH\jcWô,蓠Nw}%q RhX=L؈^\*i- Uj݋ҏ{ tUظ +C>R o:mp֕BZ#o?O]x&Ga6'hMƸ6кur? H؂*|Ai+tqlB5! PGGq=NkCTlS{⠓1^ιJV>R==8=ZRƝ"vGVV5y56%qLfZ-!ÒIn[dGLMl\'dW QӔ+{tl(f yynJxhljfVF)*G$*PWS+#*U5U],.|I\!Rfkdx Gb%>}:ꫫLFۑuPֵ UBL,>]I!HwD{ô c7K} +qҔ|=hUݙًq 'H8=6(^+'g{F_N1+0 >SV1lCX50`vw|O}yOؔڗi;چ,~n$w^nYjS]LܘS+cfU.ް@ $, @=%E6>m/Û +;߿z.26XR,bfYW~; 8arMh3 +̓Õމ} .OK̵m26}`F:MېĨ޹iOa@Ot,:hjWVxﳠ<oinոkw'Gjp6%̄;DgfhNz>5v{<.bKT૭(=ck}ٻLo]1 gǛpWȺ:V'ĺ ֵ+@@(;o+h˴\MBƬHVFٙtPխuUQ`&5쁒A 7<7ogCö%5 ,v-8]:atub-w̜< +;f$=ɕ«TZ6_q=1o]]{;j{4u.el~#??#n.w{vwEƾA(X1A|sv|g^Hܱ>X<.f/w+ǛwF0Xf*TuN\;Ϲ= }JV=6Vr{BC'i/oEƶ,`ߝ*lPʎ ۱çйj=AO蜹qǙjJ؂VmVb̺>,NcBp^nub@}nղ+~lj.̈?Rt>i!#O@6xUzfkM߷:ed.2ޕJ͌k5ܑ'f }^M3''v3͝ )5 +JҕAHz6>K#iN +ջTy#dcWX +~}ɘK~?i tUy`vJ@=Ǥcֵf +1v? ,[97%o[ 3MI{9|Y}7/% :z}4ێ*ݺ -wF:L lVR؂4G4|=؋^`ff!@ +9CR7G?:qgDz=^LIF&%X5%TE +<;+uVUA"c`p;l{_'C}ַ#@@@'@+DƽːG-sUbtCnt5QU?L)}?dx-ߕV(k lF:V"""""""""""""""""""""% ـw V"""""""""""""""""""""""" -JնGLT}CPf*Nuğ,I}cqd"㚆*-'e#w1 +chnY01o@ڣq6؈&c)Y:Vqtڂ>O@ Y$I3S9C2P@ +BEo܏aDDDDDDDDDDDDDDDDDDDDDDDDD-̋ɀ:]oj.3sޚo_wf_)TXF_|w~'? t,l9v= ш1LYO{?^_$%b"""""""""""""""""$O?/+IYX0:Nţ3 Q;//c"VRV""""""""""""""""$O?/'!%eb"""""""""""""""""1#gݎ['"9h0:x8vtjuIڨv =w:dRees\{?׹UWJ%_U]+/_?_ekUtXKUdb|4>=9TV`ha2r""""""""""""$/Wߋ2ǵP wkR|]OKrHIYX0+gHLȈUfOH˦DzET^D$m[@(JOLrHI3b;yOqYIX0+gHLX־lze巳Gn7ۖ6zn;Ԭ``-Kk3ܽ~u;T8_ѧ,/Uv_k? /5Eݗ}oQa7Fc?O/47l,QET,+l0+gHLȈ}WofDDDDDDDDDDDDDDDDDD@0+gHLȈ ׺WL EnL`v'^$^ﳲQ~[rDDDDDDDDDf2""""""""""""""""""0+gHLȈ2?:,l֋UU~KDnH\ݎO׶0.٫̈(N2k`3) rSŇ#RDDDL> +#R2""""bi*F'ԶFi +$&TDDDDDDDDDDDDDLN zk2""""""""""""i~}TBE+M\6 #zPOQ_7ßms>{'Zb~'Yb~ۿEwY'V}EoZ'V}-{fZsj"ЊطKe׿oYu[iV}_U_ſƗ{i-5OoGVb\_oDw{ɷ .hl݊Hlz]gF鲞Yѷlz}gFOǧֿq?nZѻlz}kJO+Jp?׸WL_X\ĊִϿ|:'#Yӷdq?טv=gNO;ƺ?~*c.sVyU\AM)׿M~^%)}Z;Bpv"""""""""$_NɊ87;} (g/ڞFԆ#`1ۢ9ʾ_?gDDDDD(Fv7PNV֎j[@@#$""cu,^-W%U }Dc{q}IZv%Z~IkeKorV""""Gggabb%WXlJ>V>@/ y10sp[p+Hjwc+c'g'M?vOl~YòmcGhr?Gd?圏;'a6C[3o%WiM^;Շ^\q_?yG ~7@oc?ԁ8ڿ?@}?{k=rT.8!BD;NZQO2ʽO͞.[COo ?c~_4Mo ?c~_4M˶a6?.COo ?g> f=?/'j$}RN+YR[$``uK 0GmwZ;~sfVo v+P'x=9C~쵀?J,%oj+cuLk]ժ +Y בn3>/n-: iNGfDDDD; ;9oUfk?Z\I0rN# _ڦk2uu/&`qר>C).D~bM|KV+_-DDDDDDDDDDDDDH?EuX+u+BVȽiI97r DD 0QA>%ePkQc>uEBtfOsro_]}' kj$ɖ>Gzk|9z]C}^r`o=@;18Z)cfa-˫{8R A 3DD^-mmN2ֶєe;ryf '@I=FUYKʧWU`eؖrr^vQ;<+Vmkm.62.6p.B7%mZT'@&UX8OQ<]Pz`A*{&:MթB}rvÑğ$>kPVCxjҼVslxy'_N0.d{$D̞ wIb]Ap>}. 8Zuߝj:W^ɇ.#ݩ9z*ɩV*X'[=~mw:RG ngN$'{;2)bP͍{n# o.KrPWam5l\/.ĸnߧ.8$cP[8N̾GVFK|-C{2ޟr)P].1F0:e/XƊ֖PAg{wKFBeXp̺F*c~$+d";cqV݇ vut7I5Y4o~{Fc>?`6O\l!k^=bn;-ۊַc"sEWcȋP*qD[dxճ0՗MWh(o׸#Gs}zָ>]h{{:ͽoXpX~X X1#^]lrױ:oOir+EB-ʊ;~7V`jĩmuհc\8G$oR98|jO[_!{m>;fٕz5gR|MDEEPU*_u^`f|1@x$xe;WeP  0b| )"q +V+R{mefu\ZW󶣱ѯ bw۷y⟈}l 6s_vSMV.CVQE u⡾nX%R ?:\_@LL_qɧkUm51V$Ju<|z>UMʻ[מxy?,JژmŕCA7 -WP[X~û2CPm[,ᏀWt%Xa/l`OK|);+6MN %m59loL\65vS]7j۳h c\K9(0?L_޻]l+q ++r`L|Υcz/a +Lkk6:|'"GZx2AfEeQQpe]kCG[#z>!U hLsS6_qdtުrƱ8YC&nJXבș+q,} MSVe}6m:'Ka{ͻ4߈:c`t3.{MmkHj<mآũ[]fdA+f ~vRfWL'U&-qj rAeGlWIH|EVmEb zO_5bcUOT*1#`i2|CwRU6b\ZTHPk` $=;:VM[mh뱣\%g\z =CdcׁF8v,Wk8@%_Wݏ`Qu< nHUUՈD݈"{:ީ)YjbJU2`4dUAAMzXK(5 rl=f ._aжSؤ +X潇8؂ަWlb]XYw49S'h(@Tʠ?&zuZ(隣d=aAS[u]Ь;975GdNk>e?N2czu<b@GuL +p,n*Ea ̊[Y2a0#هq2b" [՟N%klK/5cJ{ wtz%u{>@"`]Z.lX`IF}Yᓏҳ1eCYaSeA:o@}''`ޢjMUWbu~er:fe]G"}k&d/ ^bO\vY]+&Π"<֋فLJJ+:jpMdScP+T $>.,l5 +G9\6^w=|5zuy+ ܼ_kaIsu SJFOPBJU=@C0Kk}xVLvbS-ԹgCl,ܜë-2l1en+ ;#]~aKq>E|W0jg~puebwI +^\C1|@@tޣICr]o%=e6Tk:*qO +U֥֢|8GlL΁:]8Ԟ`-*5H>#zTlJuWpJ ne߃oO˧sm-ZUN3V~-nLZTuEVUsbw=bql\UFڶ5=b&~aJ Wc(hp]z:ԔrE E:; n䶿>ӓR+g=5?(ַ`[ORɢҷ9͕I/.|0cG~f]x\-7Oz"ā׳ 쑳By=C.zN*:R=6#5,0ߧSPnU*k ^+ˢ2gAۏPo}hk԰3nƾVB=RG%7^u%J *`O\,T- gzZk֏/թnE6bXoP:yߘYuюvxF.6||7v'\+Vf~%GF-۴N?fk$ z Ʀ]Ha@e +H::ZoyZV({N oQqd9C(WHh_S}x׹n7^E>#1;_ajЍFjJebeaSy,X0P5"Jl<~!jQnZu7/i~%9UeV]h|n'@hfѫ5f)\jd'p؝wn鞂QfEA޸w{FNnMHU_SgV܏=#;b\zhy)(voį`dc㢳MMG5+t|o0ؘS*I]Pץ<ӳr1Tj9Ml7"ժa*]:~V؈:̳pȬ8/n@Ž&LJh]6k+ +\7=]77;Rq5nؚӇߟ}Hкt\L%m95XwvxljԭIjοct5.Q2l3YZд%\".vtf=?Uy%mnmY`[/ؐq}*@:ѭxrI$ܟ_y6bF'P@>@۴jbt҃.5Bɀs{32"'+[TA *b"""""'Õ wc~ >%+)FòölDDDDDDDDD1km=*y,@ L[:X#*X)zH'~g~\UΞPWE*샣⏉yp+:$:?Z?+25Po51$ya&uON{ͳ[V:ttF}%z;-ʖX`vbA`6~<J]5JA*܋!۾w7Uqʠ eɈ#~ N9VzlT GqGqk9=לwA []5*4Nv=+r.FMM:}3.|gRR*S`\H l߾]5rvfU}~nA5 Zy]hagtW\Zگ^Zu(u } &2=XmN8ΥV[r 1䑡czE~sh +_v:=0K`V黝U 6IX<[`'@߰̋\˰-V}D51`oz[Mۮ,+5l'&:?ZNQq$7#L;AIDrc9Ңcl2-̡n8}Ÿ2c,6}߷Lk+&**"f>dȬnz&E%N6sWT fODߖjImE_\Dxܑϖ钔 +\Vmnȡ@'?vu&'Bꃭ`ј]7gĵ^Mm3{:.8Z,\s;v puJDH|αàZWMOT:#zV'@=KXb{kCSn* "S)}NU=|-d~Sť1@ q 5⥇$XkcyA܇̾:mU; /8(x>1;%ԩ*Msm{ n]b*JA6<}'Kkށ6tܒtߐعzV +Foor[ڕUT:㴇}w+t߷QEa? v}Z羗׭(jl'!/v>8x7cz-n+ߎ C'bY*JI]}Bk\00/+@*4FN,=:us.45=u:TTtŏsn$OtJIuTbbG@뼒ϣ? 6B5w+3(:'=DıPe>EzEn;%Fo}L>fXr/}y{?V3Y +kG]$v:Ov+ίMvXW&hwgVU'JG vԎ]_/&p/ZY_ +*l;:}%,%A 뾏NV=KZ1B +K{=,Ѻ/叓+Zޢ䁯yw.܋Cdȵfu;X_.wM굫5U1[691'Gܽ~Eaf:#Yu,QWT`51ë+=&l^-kzd+({etnb3U* ~־߂$ ԖχSTpłXtk]<.R2n5V9^%,tG@$™u>y[ww}͙z᪴R#Z8tIxY='׵"+z,I+O`뱬׋-]#CYee}s#.۬u\|GdnHX=|51]zq_c)ue]"CcZq1l'*gckM_C%>]r~aq ڟsxܐ^M1JU[/Yk>ʺ,^sZnic'4d7.ԱqݩʮUbN$:ԌGΡw,i;p* `N̛s:EUYZ޷ B?I箤=.Pʵe5Vr#kwyFaBd1&i,TZC2̱;i~ޖjpSN$v&BWek*] 'Z3VdH K'Rv: #N灝33׆K.=UBVޡۯ.D7u rzj=om FdA?;=ʑ.7M-ɻXGn[89q3\-")bK1Uڗ#o}'g↴ضz±'mvN%u("?K̊^OƦ¦$+d$}6d"Yy}O37Ż4cc>2kV|Q]+~9b$oG镹oUYWEEl#rnٍr5 +, 7Y$5v>Qɫi[D{V{0e$,X].)zXOb.Ck `73:f& +d٬̶Sc0]kYsZ0[;=ν^?y6 +*J޴bOX~ԩQT]V-Ws!H/%5zնۃ%eoFͿj @6.3*DA^mJAI w'^d_]u%k֧f<D:N>M3N6YmW=\z`{ol14n}??tM}#iF=OQБxUZ(r@xQįӸcEa0``FǷi}7ms]oi[NX3l7u;cPX_:\(_K9ޔ`dos;W8Z}JZȣﯿUbܡЂ#`_Zm 5gD%',uKzO[j+`jJXד2Mzu +ڴ{yؾueO6>bG~bݑ-9w |]kUT ˥V|a{i\KESRٝ`J,vNw?Ys/Qz}{mB#& tvA@3Yq89 + +kG2r3n9&ɬYU6 +8YǒSk}ɏ3 lk66>?ID@<؞lv#~|%NWXV%A+vֻ}=ew1dA-X 28>kE-6OaaYv:OGx덈+R.w'g$twaml;tf/^ĩs+d;2[Y5mhAqv3r Ϗu䫥Oq+ӫlXV<ͯr2%>\ernͣ)Qe,e?NGGȡ(+V*tyKcΜ ǘ_!TFs~8ME,|[mks e*7g~>Cqt@GK>wj[XjH#~M+E WVc-?8.*W^ִ~? ce /jבR٘']@>㹃,nA< ]@ Fk׿s'oiI!Ɔh{H{NVC/ ^QLj^wǷ}۞1ơrZ2NC[ݥ(zۮԶeB`X?:Tddm 4 x52:_Lc5&blY%lBpY.$0`F1jK +u#o\Tۻ}9눼d;VۿgCm6dC@Am.t_FcRkRJ<܀u7fS?nǺph~hDh=?e7pZKNRYU`IGgU?ֻw;aK}"K*ol ,ҔS'kfwN+xeu ee;Vx"X諍w,Q^;U'd(Pl:И)-dk)V +r=r|kc."{w$v;D_}`lwXW⼼lwH'=dUmP l0:::ў[M*Q_ +_HcDC{Hv[lR^P0Hwu.Y*6Գj!y*PAl`{V|9KEmh]Vf[ܿʧ)ӿL҂ݘy$v;5=Y]SZ*[č<hSh.е pbo㚑:X Cjlgk&V ,f ܘ ^UzWJVSX%^^5]PHUs.`Uji/'nX혱v|1cٔjEb PC0EF?X1OSSֵ\r2TwFoCǻ5sj5p>T f%lR ֎6NFOØBԌkn$a}IWZԡ@H=Y9ufBCiF@{jZ|:qiCb^MpSZ~ļe\vbo49.:'χ# ֧+%`]IΈ#`0 ̎fWTl[29Y^}cDjK`j0VcݯV4 >7AW[]EZC·$7dҭi\ %vn@aU~WktR+`Al^ ~`lI$lĞe(NX0+yΨ~,Gf/Iqwt4=.<u{LcSµQT2Û* }uO~EHYW +ʂ(bϝjKDK9yIMپ53h:g@w&zǽrkKS|]C {r""$nwY׌Zi{5M Yg=|]E0ShBimAMv71z]=QޞR3d YBux2ǧqZ6!lo[ԏu'#+#eb%ȳ%@6kȃ&vf=xqamW[ +W/ pc|Ac&K[PYAC[5zOH˯5Mtn7$> ?ޙz,RB!U⡁bù uN@Tzqc?A3&GꪦvU٬,Wg@0YSEOgP8ΏV%p y Hee/^_Ɨ%]K3VF=#ͣ&Ev{YPA؝~3z\^גTe7\p] ;grƬ)`WϰbGir+i]P5ykm|_ɶz-l [xSj_^SW]*,wL*GOL01GJ)@}Y;^jF}$g ?qžEOo:ُ(EW{p _OE[P~K/!(J*qk7ӈށ 󳺆+f2;_/ p`-ӪBu}E1oR*mGaFܯnMp ^V?ӿ.UO8?˪|+#qk}A#pzJ`M](sXr +P6wRgRY weʁ"ᴛ!{}~%.ޯV8e%_r%#ZYe͈ĺ";*?6QJTTn ځ@U;G#uטi$hU;&z\CA.U>H Mb;EVUWo'^} ke8Dq +5 ! xbF쁩,x7SGn9WVJYM6tTε&2zQeL؋b!6v;A}YVSqljWx!+H熉֌U<~njJϽN05-6ԍr/L|7l +YB@ןq2zgVx?پںyGW?SʱZVXV}?̵˿5zqW]jT*r|I50zf&7Vj% A>+?ecҝ\qɺB>AjԺwzmxq: S+Gz,:BYhTZqO}wyyulLJmU"˂M\O%?SG`r'R7Y}jTsduW'`ΠxC՛釙ɒEwSޖuJ76cX?>J +Ԕ~FFl=}NW[̡9R2zǠpyrr˱u)ge_+\VX4ʡ;viQz2]Sb<] >봚-PU=N6>Hj>&ƹN%x *~_o.D%mQjXQgFIy~s.b vvN-~:zzhͥ2Nݝ֧:rЀ4R5X~->ZSWptlh#r[eܳ1>h.΄k*)bvo>F J.7-m"?\v둬F-Є,޸yvl_ltq\GFl_.Ƨ69nXԻVu +o213tzP_ :N^cV."N ]~ٍzBu?IR^[Du yg3[MXL[Vy#*ܒ{*:+dSp֢Z#XFؖ׎I澂؂o5WuBTݜc/Q:g>jdw8CX*ɳˑ c"E2p[)cޚ݇ae@+]\}FquLfdz)rXxBA$(F/dm qk(;NCDdw[1Mʛ~LXccH *FqԎTJp avIB`zCc8-VAPK;| v:U"֥k"Y3ch}5԰b݋a`J0kY [V2ٖE޺kcg{@1Nc{5fUl47$}~t55~k1[E*YcMhNaZ3;$I;?{ \>n5»,+~I*Ď=׉~}s'DT5[i)R6˻9L-}^AL,U)mi]7#pFGXPf*K W*K/}ϻJ:dZKgl91?Vd +,8_Crо Xua؍uz[VߤvI'1R̰~WHNMmr;% h +K+?PV-b8)O}lJAa2AJEcd2? +(.k'!,,2 gI˦ʯ?5l+#zӟ]OT*HqW6,yN.Ք@'wo]peҞ_( +w7@yߙ)f-] +kň}~3&$VF{+Ǵ%STy)t(߂Oz88-]ml~$0?pղ0쭪 P +4'dƾ~۪䓏k2rC?"|G@MuZAc; }Ϸ8\yYH*S,w߿0”ZVVߘo%΁ӨK X;c& \1M,;keoum~g+FJGM +`=Wô2ͭ^ + +5*GLŷᬬmW@J|vƀL~Bռ]Q^&l{$ia}_HsV[G}OyX8')r@܅6l{$ }>yϖb6MXYBF v~%r=IOMx [bI {{ ~5̳@(v]o9]'aJ5Nv?]e_]~_'zEV#Ñԓ*Ο0WB:^+wXXMu5aDU..I ~""""""""""")08";*PIߨ̜l˩.,Eu>6ltr8@]Y03:&sp^,y֔A#bcd%E@E痿bG^{lLlf]VH3IܳNuKu#oLjtt{2Dmg;Oolg +:+~;F-?D=؍x10V)dU#$C3]VX8q [ֵ%mPvA Y̧T.DZlBH 2~""%i)K<Yy Ƕlj~"`>9YNB'G(e;R7𭪫Z+:f?fTDDDDDDDǿ11ֳlO?:7QըY/&T00z'R6 +|HGys35z8''o% +r/1]]@lKdoEyt{qOURV$r^yYIbbP,CGm{SN 2(}.[#.%wVn[fdwᾱԺUm4fk~.6Yy 3 hgģcʩK:TDt̼_KiMVGNAmG~^ouq򬮥~G1q`mkGSG&bb '^߮@Wju` +IĒ +{㔲Rk{T u=6n\tWZ׾un~n^-5P~bμ>eݾduUU[}J:/1YC+%ڒuFā">'9O\SP9z$V쿢G}Ň!jR*f&NF6h_OX`6IJH ZK.CȨ?1<]Sl9.2Q)vМkGp9>;OYg*I5* cYySZ,/rF_ FxQ_wj!K5c3EmDBIy{8m7Qt;m#`׿/gvV"ڪGseOPtw}I#dh<\̊U⽣k=k#j܅k'ZJּw!tu<3T]5ZAHrLI+{/d^uƥWonķ>.nf OGMZ4=b:;?I-Ν|)b6$bjwNg>7EHYkk#4;?^cj.C8ُk+>P:R?>HH*OpͲC|YMkݟW*,ҮEXH0 +C~_]`d]zT0`~E`tOmjxue[z>AHώ[5,pZ $wncdrkw=raNB'񹞽K+cddSk@WUIJݏo$C|l-c6E{T;OpcsUլLΌաvTTbzl|w`^,D ê+s#/f|zF,"j +vI9y;wI_ԳpP +jadY˳oWGY>PiҪ́Qb~7A^=C?]~E8HQ23*,~"g]R•3qTUvGaVaǶk-fH<6j7bWC}NIFH@+w&"",PTKxtd>ݘ܋dtz( Zl>y5:=EkU5扭@~3֝p& º?8O(E+[jTGt`v Twt?Tw]8Vkwr#z@xY'R vZ޽yy''K-kʔb9l] 'G_E;ʗ Isv߼ó3"V)@ ͱ<~=qEٝ1kF9+mb˱;=L?H zoP}RSl$޵I6V_ +j ]wR,Cuf:vS/Z`X©?*oCzdg`dc"S[ +S20ɭUuqP wUaQ*T[-Mgv ^_0}hO/՘Xc2V1,\=gVYZ +Tudv` Gu˟ +t#Z+-2oRdz]uZ|3ӯNP.V6*9XC ONPN5]TXke:ޏ˘WԲ6a[H^#-nNn}r񒟕p{ rGqR]S@jv,~0GUb-RpXv;fˮ3*.JԆD9pabOŮ]>IS-ēxn7+SM7gg$W>M\T<~mL.3 Jff]zdf;[ؤە,_Zz=t^F>\9ZfyٓONyҷWjYNj6^eɗwJ%)LNzKjUȽ q[VDZkGbܤȹ*ƿREe>pxɬ&;V"Xuih.^%5ދ:F2t + PkLz[6v] @Z*c^dn%55e_Xߒ[ Rlu8xҾ8-ºI_-w>IfwDl,:.ܗo3\ӦZWzޯ[Vo>;N^ !Tܩ {l '~pbzn˪{lXe>"xu#d;_of5gmþT3S WvNĂEKJ/v3 ) /vzN`!1VtS܍/bI޼sOS7Ea@@G- r>;nM{K {p7ˊWp`du^v.2{T.ݸ(wı03rLZV WK }#m{>L͓mrO$Rp}tsiF7~USIm x$I,^Q*i0bO'bCl{k!>6wR~UmM!/lo=%ߣ[PꘃBʇu'*w۶:oPUTs*bVTRXv=ft0O3r>@5)r mǰ3^^$Oa͆@F~U~D:V^:/cIogS]O]j3Xk܀m0į'ǻ7$o>gX|zC,W7[W}D"5 idjjʎߑCۙYYyO -kNWj6|۸($:y0EmS[kUa~c+ÉĒG~ JYx6ֵO7`[hW@:;a[pR\v5{oFE]3zXXJmun~p'_/]B%M5g55DyW¹tJԵneWܓm u~qZŖmED.W/NpXq+k-ǐ +wtޥE\UBUN› lhly""Xe*lm{4 ]vD|yjR@lt3'.~kĝ[0w JJJJġ:VrB$yG=Jj5 BO`h;%5+)OłCR};o_IrR%bY2jg_PX~ v#RloyK배V܃tQlʦUwU,F` =`P/9>zx9r+]ԑ6T>.HJĤL\mƏ/[+)V e.ӕXPz;LMFV%%b%5IYMJDD,fS" ]hYw2;U^E-Gr!TP[h)*)tn]e ƶ ;:6xؗczZWlGIɶ-WnqwUaݥz>E46V/ if9~ղr󪲋U+QI(Q@OͽJ,4T\Pvǟ۩+ې5*E-wn+`O_n֥쮲k袆UkjT6vrP 0ވ?YՆ5ˍMM}yѕJ͋'> <&Q +9JTCci➫KЭۛY*Th3v~D ͷ9ZKˈ Oa1⊨&ۨu@#تFÍ7]vOx%Smkhw= ?oi+&C_E8dd}>M;d|iQL. +Z˪"]7s4;̓8fz#WaGV`AA/U6Q[?JKq-kwu-*vR +6`xrw=.v= lT'|\$:?0>0˿;X);:ތuDn5F;>NHNw*rzK-;xS2gge|no_gd{X["""""""""""""""""""""""""" #>$zvF*0V|mHa,OضSΛְ+ +H$?sR2|ޒl4%a^TP}wtDϻ"{r)GJ2{ў6tCU:":mFܖ߿s3*hQ +0*-kc!kt%_r=&ek@[ɬz6J-P0 +ICd|=m#"]r2bXm}Ŀϥ׃bjH#m6®lt%| { +жzrK.n&vR%GWbٮIl|^iqr1rNG;f#)}XH,ƆGY}C/|l(P~AΡ [UECbJޔ nl=pLpCmގ_Ov%/e+WX WrO߾ۙ_ c߇UTkE~n;k:>gq.ʢ sqe_)[=νgWyU3h)jl+ 2b er0`X zi˗,bv㰋?] kw q=hm9koM[ Dz-m-ZrVX*v>mr;?~c\P?OMvO}{I߆ŦvGIVU{1?7r.矉qnWTϝ]ݸe$r9o_`[s05.J=J?8+[e~LvoW~WEpU{=LmOzUՃ TZgYktcQP䍒H̞ ^kjZG\驕MUSB{Xj#Ϧ z&JT/*FdʚP/o='ǜ dHGUisH:|ĞtܤދU4IfR@/12m}Y9Rou2:\o=LgeճG0 >Qƻc6@,瞫?*Vo(b^ ˍ,XNs+*ڱn)VK9R6 6ݮ=7=%u2oXʨW/Sg rtWߖLYMDj5+)YHԬRDj5Fb""$~WF)%E#v?^5[Z^D6eԬJFQ"cQқ$vr$=TDDDDDDDDDDDDDDDDDDDDDDDDDDDD<[g-N{3z8YSՎW1 !a̳~&险YR;v޿}}Ʊ yl0z_Su9 I+#DYIa5%[PXk~F q+ɼ"M yw-6\Z3yҍ]c>M: kP@Lk}zr5ܹ@s*xkozxs})3V qy>6d;(@ zW1nGd0t@{ܗۼ'T5hU+r@C s^OW>CլrdD\-;J#zn >[&JͶ8 6{nyĶirYsH}e {JlL_Hҵo˭չzM2=eUjs.'G&XwkT{j UK4N=/4rpx\Sz$kcs/qޣqNJ}^7| + +)4.(Io:?kX*~''}gHƫ`ԠZ3%Oԝ/jضI05Hl{%c|7[t;#q@Gr₩tkٴ_ܼIeEvoL\ U +ԫMM-*;r5'6 N5]5=]ˀj0ם_jK&xqk`&WZ(هNl:2؋-ӱe-v+Ć\L )GlT:ȐFAO`$,ab{6XΞ " zEΌLvGQuix+,dPncJl'3j:U[Yugi>EٕЬܡ[ XWSLQIkRx`%C:X{ǹי i#z9r1fьTh7" O. XժrY=VX=w(?so`v$o翀pVZʁr5,oZYє~4w>H7+ɥ汉upO{;)ױОy}Z(0\+A +v:Γ5!}!b>n;:䀝xtZrծ[;~IV.=- sapBc#CU +jz8zUԂLAמ%яcY*w>Hj-qJ_eȺ(wg 7݉41p3:]dr=}I>gZ^C!^*=lUzZA˷t\~~fPOon3T:QlJkCjߖb{^'#Q~[Իap >{ynBOCؾZI^xL^ce1lb{omizxy(]*æ<҆tbph{0AGT($6%A)?ħHV Zj٭w+ Ă;k& 6qU_wxzs1}Vauؙ̖yY˯;|eu<趣yK[o$+~V7K28b1Kɻ+")Lڊ2zԐr<"âgejEƜ}~$B!U{9x?t~Iɭl%[)WZֻkZ־O*$Q6vda ڱcYrM`;>{wY}>ТBJJ +,Խ _%r r,kL\[;.atڰ )ɘ ;@99'C~%Lڻ2e#`؂$=Z#6[`ԭ(Y#W,~yy缞op8~?T@``Cg۸_\y}k_v+qm0e/u9](Fe]UeD@X +v#cdr:>6MIS&gu%ڲ胢{➃E܈CXKp._b?UR˕d~fV&XJVۑ$bt1$;\*sT P7 + 4AX-Soݵ-~ӺV?IC^2pBw3bBhK}WaYWu_?Ƿ.zu:ڵ2ZlN,޴X7RѬ+o~gSm.@}ە8:ҚZ k\~rݵSbq +Uw`Lz~V*Jwwn6w,Hne~I)moXqhd`;Kt=6F怖3;XGAbt&Qd qm4!0$c +a CE:޷fp,k󝺇uF?VE![~y]*k),^eoq1GkbYvgA~ꎇBXYU1SLI{QDRv |`v;KX5tE^ʻ$( CçMzUd3<[N9Ok'I)_Eū!U4Xa`b;omjw7+;ܓg~_yz΍e5ą^+v:^$K1',Ē~-ux}|i|8r6>k+`C]{H$}GCT [:#g}z>.f0ĺu?)f?v6wYѱm6+bJhϼ/G¶몯waǑI1n@VE69Z;-'F֥ + """"""""""""""""" V]xiá'PrO^-eeׄ:^J`Xo6|,eӁYc0j?-&ߦO05܂ᖧ")K* UK5O^b[;JҊ{"GW.+"jlX1-kITg=+V I<ˍ`gٓC_E [u 4lψ"ёhm[/NL9~,.ja͗1$ͫ {fOKn hڲv=%.A=gWaEĭHGr,G'Z' {æT}cmBOI9{}cuT?(S5qz6l<#CߍfXJ00 ؉+V&wWH +@6 +Ce3Qa$=3Z'6Eb썣R{v_]D`lJj=%$Ϩy][)q밯ur?{˧ ybVE6H?ʄ}K.NCzxT:l[drF .$lP!1Imk=;+Je!u!/ع-K:%\n?׍ NЀGȟT'^ʺ^WI'QMnJhZa~´u<>Rz^ܔi0k~7/@$_]J] +*xn +5Ȯze8Y VW] {y':%B*>dv5gE +u݀fMdkԭ_^9(o};ԙf:|)]+S6 TcrWn*l|ג~-pEmD:|ztK&.DDDDDDDDDDDDDDDDDDDDDDDDDDDDD@V-YkC `;%%J‹º:%|l{Ό%goOEuȐ:=#`aK j)f`yAO +l`K5jmgz@x0:9:a:%@6wc>KW1ºjw'r$UE@Bz9jP8zň*l1ƫM۠"bTei+'OjX`aw;?].t.;iE@rJ"""""""""""""""""""""""""""""""" &:IGԡKP6I:%>*봔݃h<8xXlX'GU[C!mNa;wv"c;kc$dYH-ܕ];Dr:0b +Bk}ɮpMr~KMv>UH݌edvO=?ƪ܄WS ;g#,ߑL2]of89s/{NJn`ӕc ?]hngn9n#pW>0~7H?%c6B/li*[*;F[ҺU鞚%,drQChJ6S`8;+Aj1kw o[CJ^⋵[Tz|@'gKYKrcRK%xQ̍a%l+Kcbqą,Cq5_b~jwZ37u,d$wښVΥArkTnP7܂J]5kꡊj(wo}hIEpNx2WOqUaGߩ?Ys+L|f]N΁Ў3Yuo]~,$ԏ \k|YZ8?Xirc-z%Tl@Xv܇Q~ɩCwg]tڐG+oy(DSc5z aU*4d5=tmgW'm;/uZ^ʸvԭyx;:,|CbVJDDDDDDDDDDDDDDDDv?{qXk Eu\l婞it+#;-;/Y\Z0V ؒ@n{u܀fT|տڦLugVj[nT z>=cDo"oEmGmvϴz/NxzbvV*{;I^5#q:3SS̎߾7'all}[~ԓ5ȳ6G1LKk_|Ar>tH~è[4skSb_&F>* ]k~{}'MvbVZwGcQw!dٕ=wR0ceZpxԂ;o]ᾕ^>M箶QM]sLYA^76&DR z.2,-+']ynߪNcaUXGo#a|EZOiQ/lrKGa߹)/1%eU77!aP޼~2PGv^}6L:kRT6|>wMLuXTnwSB1f:}J˨(]AQeoG!`TT#>AYqնr@}NToz2J~P2ݶQOr5%\EdKZBk`1s>U"V'"c>LyvgR2xկ~\?r[~;yh]ݛ_/X8먹xoFmoxo}#:aRPVT.;3?s +/zQu]J9v +(bcH2 az>V̰;t'&JռDwh}ϕ]_L6͌^Uol3EBW*4Հ֘x 0)VUiCZ']̳M^i5bG@|zXFƼ&r x:=Ĕֺ}u.J.`ds$$~V]˝BW;?!@5S_ԬCVcJlHR z_wTuzlHR||W6UA_8ӮOʖ_Z?o~<˱ 7ufM?=Gv;=I(kéQI'kK|ρ+KqK\+X= gĐwzլ^ UK.q$wt{n]S6 {rh] X-7N:cBfS~M dդmkCrABeWe}Z(g4H*l߃+U=kNAWd::I%.gӂ UEDs [II2/6Y +Bru_Y)LLO?`Y76>N.;nW~~S}p@5aᛍ9z]I=Ԇq˓VFv)S_I7k٭Tceu +[Ž:j]j:_,{JԱ0tnN]V$b 븗tzrn,X켬 Cp[=NdV ~fRx؃"lcR` +TXØ +H'/I.N}z55Xζ2f:`N=wdo.u鸇Sko2 !$X.ʼI*]Gs>$]̝ 9{DRv|i4uL>=|ʪ! +.W,ZYٔkEXd_]>o?j q{#r:rkK:뱾wTwPm~fu^m*C}wm:!>{;o@Z@ b~oV˲TRk~Nߩ%eF2O y9B";W* `$Ezu~k1N|/?ynT袦ٸm&?y>aڔ[ƿOYvPGqq|H Ժz(i̟?o$}ob~]x,.-qU*A)%uȰ-i~ܮӸ'2i6X-eco y=$D8XyFuưJ́՜7r**̫ي=uUw~| 2WϪ9vF/OO<ܙ#MVfu>eLkEJG@ oR6XY,l;"rT>S=ηxs?rq+"¾/ ES(#g[69oE~'[[~?'ΆOXFܵo@XuL^3*. +ki|:gPQ:N='{kjE\@U [~v|LnD͚oƵ&z7Rޕc5}a-^7O[kR2U,jNF}!sl'd6 Zz–]oڜ ;l,9J1k@tWȷ;=إv]a{븙YuM;z3I;kG~?NvjE=4u굝cZJ$C}O]aC;:StOxt>^VE5\m%._}6qJ7,G魭9E, qYպoQ YUMoC"u6CY1CWeG+hkrWz.L4Ƚfaك5h][[}'^gCTcdQ5JfqmukŠT8lw;zKW/'}jGV6{kzmqK]8nnv՛['Cia[oWǫm_jqvTN$i@n@߼rQ*2q~ַM.yR@,m]vlZV* RJ DcϰkV I]pog{rkdfkp+qj~Z).lfsC7~e\834幏U@gq*{wfbMns$ox_X97[o (Fv{y8ۋmam]U @nZUG16c_7(PF?tnRZ;\VK>^$v֦ :WnWȮzloԖ<o[d"#,]m~rZݿfgt:s\VUjAeO#}уM ,.]qz fį|v&gH=leVʨ@u;WC}ҕ?_}_U a7UmRJ9WmD# jce|7XK:,bgĨ .>WWg ~%֋;7K*y@؎[}{ﱹ3SAǹ&opW|pg^,k 5!Gsfzx)nƳmБ:.EW.Uٱ>L~V6[fXJ튡PҖ:<`f>`DFA l?J^"I]Rލ[UF5A2G1qdL(̔Džw~w-'Xb3Eo֏m O3^Mۑ%ױ֎@ǒF1ڑz~U<.YlC>? 7K(0aA+$))neJ\„CW~@dusU,50^z 2>ǻdk) yX $;u +I:l?yO~TOM!eWa *He:gK^P,tP7Q׊.]$. ޴5|1N-ᇫ_b4]Ǝ yܸ}-Ucc- uTO&WmUYQ*J*:ٞ_Fr,`bK0d%rŧs@a-r}{N]Wd%2Uې: :t4 \SWOhV +*45ѪUW=67`I'װ*K(0^fY:!=P}Z/ôgYZؼ[JׁZ\TʽqjJAP5eyG4gj~VxxDӍ]e8,!O ;RAL?ĶcdVwܕ n'NE fEm[T(AM0^Gr'Qknt\Zc4ĜS`S|{וnac3#|k{ +Aw҅@9΅U_uY< ߆_R^GqF +|ֶ TEBxW#u h[["m v#$c T9o'>fV_K:c+V+/ 05Xu8zf Cmf[jɱAG; +OrK*˯0jX\*:u~I9g63X +Xv>@`r 9Vo7R*P-Ď}%"&M.WÅrV:߯eՆVX܉!eևˮG"anAe}C,G/:-[ j[,ӀzObF=Hppom~Zk]ӌ.G իw)!~?!rl :)PcγWm\ŋSχu/XW%Y\vxJ{v;G)XԬDDDDDDDDDDDDDDDD-qfPB } JrjߦŃkKx"V o3)櫒ltG3KvdWIPXv@$ߓ=xO5N< }v5gw+<إԀH#cZOn顀w.6t.|}Z7>u܅ uMuƲx={<=m|y1hȵi >J蝏}-[rR+H=&3>)&Qe"; +7݃~kV5d^ ; }-F-k:e\*GP4I_`]b[]Z@m{kĦ/[]7RUe8JOG3?&f]r:l2(֢!8P2;6̜޸55T=u*'<:~y睔kVYDH{;iµǽ\dG_Ibh}|?yNM[vË)aGEm謐r2*tBˑw Lv%]kWJ@0}DWf1/YxRj/" ۸JWgz* +*w%ZX*"f'@ܒdbBUeY]W8TltJcԇQ:N6F+PlPwUnf:7|A=G;wX>]x*YpuWGy#Ժ>.?QdUguZp;{{|AYL*ޫ2°KL#ܵSet@$m?=[cxofm2+obXk&9pK +ZRxK:;=[T%u7VRԭC'{Y@WCԢ@z}%R-jZ h<}vWb^Z^Qj*jA,72zlE~/fAul+ 7ğm|L1r@37c)ߕe==/XNT| GnL{:dPJn +#r^ IZWEQe2%@C7 vLG桴F{ yw,EyVl-w:і}6|=ʻnLz5hle:#=%~z%ھ˭M};MjO/ft\ѯԫ-|c阘dTrXaZك1޶E[^]~,eUvY32)E5.:`saB Gq0`zmڮš :MlζQj±5دǿ]2E\A5e('g'ĮԦ-mjΡemOa\K_uazyZB*vG|_迥K;vjF%eTRuLURK'$hnAM5ƕH0feO_S'/\qŦf$gc:"99]O[VC&E4CWIkSa{1 ^)=KqYn'ͪ@5DF(.2,d5-oіGAd`?]r(BҦS + ~:W7N(f;!*@ *ERĐ!6~K|EZۣ*M`V]4;~Gbʩ1KjŤFӲ7ܝƷ틓FQ"qbSgε۷~Wߗ}?Ϗq2m43[$ѭI,@޻f\[z;qXMJĦe5UOQfPA*xiktںV:cSӬqP\< +Q(Lޫ2`|{RV]&>^I8k{hLj5+)Dj5+-d5[3 A?Btu&Ҿ)N `jr$j۴_֮59j}>{&PȾ,=+ڱ sïa2V&>~u=6Ƚkgϒ2$W=ZfZP-J 8S^~u=62/n5֌΀{8Q#U=̿O kˉ/zrn͕GQK_Y!^UkmLC+ArX˵譝1z-hw=Ftα1*˫8ځMm&ҳ)W V)#LȈOuVԺ +v66JʉVgsPI'l ~'JRҋ+ *'sS&~f6=Fת{`yof3+u +:dRIGADA3&""A>gʐ~Q~B=qu:/«.˶fFQʊ ־܁SlF+ uYwi!ru4R[֚ƫrPI>6t%zNyŽcjRٙGZGO,췠XQ{GU/2!/cj}4G҂&v&NG]g[uUiUY%&e <`|e/UV] +lnV9 k~Exc?ָ$X;@>l) 7S_cRUV⊷X; }#1uxY1p<d3zN#u˷!&<h`їwM&ߴ/x!Ϧ +ҊC߽kA@&:JRQ_G}SUMVeUc[hVmFx3GX/#_L_S2َ^[qT:;]Nvikz ط*?*Wx'г)~%W s.ŕv(>"g7fgV{!E'Qbr#s?k0w?Fo{i ~c\*;5?s/:GOo>6:?Kzmc1_d%F~-u^~960pNR&;QJӅ$mH rrwNF&N6EY_)a"~eJkOJBߖ# +!mD&ED:_EkF]M7ܔǸFTh }#*/Եڇ[!ÐX3FljkoR_܇kT_P,9.=yNoOKczӬeǖEz_@^VMisvjߖ! Z@#Ryޙ-~;b֔z'w}?z;s!?_[E|B2~YeZ*n뿓'_:Ub {Ys!FKκM*[[jr+>v $7H eݛsYfPT6m{M~oUxWk6ΤGy8#й]XDjZ* uH|;٩[{uSD6 H{>7H0WCXrͲOFh'Ƭ̬URT+UD&I%?\`3U=u~9uW2W|_@ߙSzk^Ja3Gtw=f/[zvezlRHnGli}[/t`/U,T*チ^>^{cZ f85m_# +H{zTk'>]GCpAο}it 3v&Eof=N l{HrL5KWK?d_:m[emBHuI$H]?&l{3EDZU#x=zstwWnuUeA* !ۑԹF[m6 #{}o_v5wG%[]x5UOPđ}_3gLu9Fa܆m+>߶⮖䜬v~v+rd$p?({h jJu+ m{?Px+~䟨0sW~=k59:x}aM'de|O0/#ѮZ3q$;W:O,jW;Twŏղ&OΡl-R}Ƽ},'ijrm|UC -9M w{zd,f>7NF7L͓¢aCA<~U6әckz7XnӰK,enNEw*`tG׃HCb5ZMz^7qE\&i[WO%kfKSvրk#OsΫV +357b`S*,IOLe)3T_g[zMjgׁw:$y$+h9XWmk|iVeKuKf3u5}t\N-͖)WG_R`,tJr[.nxQO4P;4!{};fj^#dogr7}UpI%l'L3֯ md}X,Dé#k{O]_Z\YO}܆G]u(mVF|FV +肬**Yҿ\Fڨ??돂d>6-S9rL>td_Nc^1kALRVͨȮԎJt~y?C g$g.?~O9ېU5[`ǥ A_]nY5ӱ}@rr&,Iݞwku,.fO%-9r{{̪ũeƅ+ 89m{k]ܿqحe7l3/ cq^XQߙ<ϗ.|߿2NNۓ'c;ЖHhVTn!*݉A:7EP#`]Ɏh|vȮP7;}˸9:~:+;nmw~8!p rI8EuAw}/ >V HIo)\^@Eos(!Bs cbYXإYâTitݥ-~Wec3= gIo% 3Q{z>ZoOU5_P=H J6^'_޻yS?|nf5MG#L?t~uܙ5G+}~<7^ RK +;#/et +2:JqKnI0>+1"--NZ{&'XXwT +bl$]$OKc&-%V4鿠_n} +UXּ6|1oR^lU?9 :~ÔtkeY^>]v>+-Q*6~7uu&Ū|FM#1 Z v{}̵.7[U`taᕇpDkŴ\skh}w:eL|+ݴ+>×{뾾3T_6]x؍V_qut*ۚǬSJu߰f7xx}>ޛUmbXz7M%zWMN^-l앎+`b/qMYdwԬmmNw7ydmeFԵ~&&5xbF?h\85 +ܑYd qo>;l2rlmo:645"ok̗˩-KJ{aa"T9|~1>Iܯ3q>m-@¿Ti8xceQU5ZXh7?cGLS~;fU/}CJm!B荂5}Ied|KɑMVQZWul6Cl]Ml{>kXD{L[~ ɡqkN>||qek@NE ddӖwJqFhv`tyk̾ұ5+ʷcA"ac[q{ES@Lj?˸ +o\-0`x U@߹N׶2q7l->|tYN>C?En!b6ulh#QUe?6x6\{K*Z# [!h>ݻki Wc\]) aGed(YT8u-4d"Uh{1C`JKO&=z>==-BAI{lx~Z֚WK05k u :LT-->{ f -hGnbT]Vcܝk`܀@>[[-k%hhCS=n-ଵ@ÉllIcщQӭ%\6l oC@E\q 2x +3岻߹Y}r.7uXȨYQT l20j鴦= iGOI3"""0۩*.G Ե +@ac"_Bm̊`(PH'go$6p:1YX!DzR{ܻ0@ETX$/av3yK,ZTA$w#kﮗ[*{T'zS:}fv}=62on֥pqj~zsS+_]C$o S#u$b*HP ka_ǴZFNC|X ˑ< +Ա'H쯈10Wa;C@m\ՍF\m AɁ;@>bu>*vEb1뭃zUMc.v+b(Ɉb@$ }#)6֮mW0db;dDDDRrmV(z$ll6""&6>}y7]B I@ܔCOf/Wj66?QyV;D~5.DDDD,峥65eCbΓz=[WY\hWUJ¯%G"fxUt7hoq~_dہQGg!ve᥷`OtkC6j9_d5N,.~ܵZ|UGiOsvԒYYUul,jVE9 |X0']>c3gQk.ʱ*fU!Z[=}3ލGy(9|RE%cLltd`0t׺} Wm[c|@Ͳ]<^ȗ*=ou&YI*nZQXUmȭ,ՙ*ڹ 㴉=zt]/l$P+ |;ic,\[]_qUk5ݸ>m]>Կ)tT"XëQf=,B=˺ΛӦ\;kwc|X%iʿS]ExW_9QcX0Zߝ;++^-(d-lG.`~I_G[norFVՀCyL,#7/l mF6w RT.X)br~$=93'gهe6($x *KD$đ6QeUlll/U(%݁u=?kWٚV!#{cL:L~hݪP fsb&;dwtOMxXvN;jK]կfl̫POOQlF2M}EnC*rlk_Μܩ ڬ-e䀶^A_BU lfu҄dlhߎ[jFo6Ď^6DRvr,ƻkJRQ|G~gK&:p XGTV{޽6ٯu}J=Wb$ؼN`C K=C7Kّf"+οϐ{3tWRzޟ]/蹸TqjeP`^J۴{]}Uت+ .M]l\#״uG!rIYX ޮ +һpwFK=?YgPơl{kɢ,ՕEt +6Sw#;\tUL| +tuH_S#7..UڂClCwK\O?;HP~&B|gmtNjPixG/*N!V`aR>td^@~GcL*:ccuS'M}hJԶWZmlC?u*+*ڋmteuI1lZFeOF=LS̟J֣+ՇfP{oK/;#uwדYX;lv:vNW ~M7.Te>^A'l`F`LƳFXǵ +<{y'+Yx6֭tj /eAG(/&DGf!Wv-b kj/oxH*.Du̪iJ-E]E5XTW]{ܫo_a IO_P7fϾWyfU629H_ο"~ؼO:vGϋ}vETXPl@#Dwg/>Y{joU).Վ(t p/'-ZBA*w^IԯMk\J/ez-Nf'FK 7ҏk{M^ޣԳ,"Pqڿ+/"e:QűץQ }s\{&Ukdާn)l>]ܙU'P- NSgI]gG`[kZ]MaiUr%[@ON[+9)Y鐵wB9|$hw6XٮVll̈1zO݋n[[#hv2/#Le|q ++dS,L;P؝lgǧ:LSsVA4'DZpt<ͣ6R:*'`wܙ#cS^OX&[U8z_Rom ~ocdVk=u۾cӌ~-{S'#T5[רH;;~}=p"R#&ەXUX>7ݵ.}]S.!4P{ z 3-Jpۉ#뽨>Q2BpB7qo}3pr^b!UkOm:铛WP{XX}A2,;nJN^Q!+1Mg>~=3B+!E9qPGpvJgFUn,TމuM{qkne\5l7"|Ϟ?[:3dZUIYwCuUλkR6#*TA>=H or)l\1MEw>{gug9U*Z¤hOǼ:MUXY!uR~B$D:鹙ybcbU^*AenדnN▻_Tq%k;<76kӢ`>AX@rŷxz˪|[29;2`,#ź0)֋k{}OVtK)pz;#0ڞ@/tލWOg 4ā`=Ӿ8v#+& D˥pHZ9\(QÍe @(޻Gz}iOMWN :%X ?}PW^,^_=5߫jŅ>WBcK7}r,RLjTU]I>IMfRꯒoX-=ڏV@G')-)f?jSAaոݒ]Ř=@n;Fwx!B6h 2'9R'Oin.jʢT{w:O9?>mےGA騭J:q @`FlB_"MhyLf +xXwfsc_ WJ .}Om~?Y}9t_Uo_"e}6cb|2rŜM2ruş T}ñD];ַK;jɷ+C^Upk; lF_߲7[HiFi>daZe+PɏsjT {ǔh"Ʋ`fF$q'[~/[UE5b]ɽmdgr=7g%f+IeOUdz]Ut~؏ L~+r2Pi}6 y{w梅 F)oOl~('|xe} [\~)A~rG[!;U]3^ݥޯXb\X%*xf ׉z#dG.rN!G 4'(/LD^CX-hXo>u$խ`@;'^LzBZ߱yL^F&fFjoCwFۖ-tfͻ0^B&4랱:?3r3M9 Mhv>w-t2qjJ@͆spze*^[[?AisY2\I^)kryyj KC1$JJ~8 k6jY {(:H3"" ([SԽOE5*U1s]=TٽEU,Ow3u=Jȡ#FdDDDDDD1iTݓn*+DfH[`hˉBt7,` +:^;NLtDDFr+vՖ7["`[ij$bGy ZF|DOܔXJX`2_^UkmLC+Ar""""""""""""""""""""""""""""-̕"`޶@7OV.=l`VM16=ǎįvEm+z^Uq1mK {}f5:ޤeFu+yү̦ +כkb)CFn翟+' +}?J2v%RvEޗԑ_Vtƛ}EVH=GK}sm c5lj(tT$}1[ã!,gUQ UKw[u,CUjXTD]HnԬu;P,"OsMG}^tQ+ XqWj }{g/vn7eZ+6IVմI 黍=S*,[.s `5#|BoakCZT8U0 A8[f>z N%W{ q~$9."~w6jZ(,:,}ħM21tȥA e$^ԪeݾVX׀7Oa"zWHY)VUM>`yyHď|BZvP HC/Ya@2jDl!z&Nb/X%cӴV@?3L[zMqj 7!64$%= +|^E۱R@?yg g/P  s Yx +6`~'Ў12Q@"euqX ;״WL6: u>LtF-O~>~uAv7oCsHzww< L7;{l:,MXmGiB-$ +N'[#|3n*tjs% }|y$؀:5fW16=װoBq!|v]p6R_Ƴ_8V,L.OS6_ %*vF[(ŵ״dgcf-*(%@)nG=A[*ـO͊~1Ƨ߃YWmex$o@:#dں]zuVrS.A*9o~_|2vmeN#Wlީ]8B"eH#gL=;/##K#X3/P`S<,\Ʋ5A3arCA=2,C77.E>m &G t,LC0#f,>mbкXQn;۟W7}=/.vvf=uX|'ڛmZϕK˗;u%6fuvח֯Sƶ/CE2< z^v7YjR/l=?o/Wa[*U@3"~g X(jYAfg$}+ԧ;|~|̈,fqhF3_b;/NҺU=c '~kJ~->k7xx,On%Α֭~)UQu?{2OO,95χ['3+3̵.[R +jA~* l5VUFى' :0mUZ$%G'et܄|ȤH#ndoNm)_"z$o~2E7W["{ V@TyN{颯C/1ZdV YT47I0+6bփ1 +7+Nj (]R t[W:}O7u|&=[[lňm5z!JN6VŀtN>Oc1}#p +A g󨶣zXl8϶[Ncq\A=Rj0uϚӖ2q!,U MAAap?^u—[R P`5A{+)[\i>M _O([D[,山 JƦ}~dURy~lxX1d;<&EK[r+h{~V|bQ &ηxߣj,6<}}D zl>݀0>|k۽Q^VB  +#Ce~ZdȩA ck/Fʙ{DBT<t,8jW ̩`^u6e9 ut;v=> -+}`D|Wח !2QnDUUd Dya??9[]K:rV]پnp8 >>ǰ<\Mj܀ߏ+ORp[1^AUՉ_h|1.ؘ +,δρ;_^V̱M({v d:F9M]聽=ɓΩIp֦sߍ2:&#*[r)a\QX{)S~IŸ\g~u3u~5695U?yPLNz:LBߍKu+=w|28lqj0Kz- ˑ[=sVR0#}]jBA#DI[+֞ڔԞΆL:.HϷ\n{$z%?~l%ĸ}6xhx\rg^xȂ&}/꘸VUHcm_hPT葡`|SjMwUK`;+&B:܋WNr~a׬%z7ڗju~-Ÿt|]f +6dOB +Qb mUr#~\k*mfMJ[D׍ɬާӕ["~6O[V`r""-rcYcURO3OGZ$ű6m|cx?OM#KB-oz=7P^-ts٘)N9[ ?8 +ߴwt$&Y?ҡ6 =06 =S?Y6UN-]N-\RI/,nh9Mp_쥶]IYtM_7K +{ IiNjY68ҍgܟQ OdccaT;5fef#ϴª[e\KԵECK)= DƷ-UZ¨<@'Vx:N>Z}]U]C:sJis1 N \pکnwg΅T6[Wbg2u,Afڞͅۊ6dd.GOȮĦU:XNwv%-hu&. +GkۺoCx́pY+02IP^/m-h?eVqakk"b>1ūᮑga]4Eub+IoP)Ԋϰ]oί3#V]c*1]BL&IԬllX!CTT +}D=)Q_\.m`]o~$P`͉Mk]E+2cYUB誖ׇa׵vGH :3_VmV<@UP?k9ouĹG+1.T~:|'t'`X~ ?I7l#а׎[&_A>yx׈䏶TC*7ٷ;V{2]Fx竷>$uj`u[DU T鋕=#[2Ay܉ŕz6yb%ÿԩ~fGF歌ڥ֡ #?>|KoYȲ^Lh X&D vt++Z͕X]K']=ț9X*"VZT?(n#QgQlgBY;6||l)oԎ<-\MR¿KeUb+hc~7SvExm_R5"YFQEMXMzU%Wdt5#~eXu\Ve?(kɥf!6s薥[vPq1,e^wĸ A_GD A`4W;atf~ au^le@gT{`?C|ОxF.J]}@$e.&Aw3Z9h~:4]]lMD e]?~;:et\q4 +bOGBW=Q]n +M'5)[vmcBw~cG_Zse.ѫV]A֘irV^""WdH2j&N*|pZ< +;U*N}tj.Bhx~/[zu\ еRq2t`@bNƷ,l1~Z3kmHR?y{=lV#[V3zbe&aފࠄ`Ck}ev{Kv VI~#h[##zd j-ֳmɴ{G^ cgRC$WIu+fn 1>.?Nշb=lMhqfEU''Ts!P"@{]KF8N][-iv@y;"T`9d{?.Q{e +RޛXDtb) UMUbXY߀{JD@(@#Fx+=2 =ĪAAfحBֵv8c(JQG~+U)Hl;'DnDt[YYmZJpKoEv2"_$GczJ:R;JJT"(U@ܵjcigFwvNZZNxԶ(!m ~rTֶVPAQjDP@Exkߟ</RhkG%Zx2^݈vPYx.ֆ>k3ġ62il +:=yjYXC@QTd̹K?IAGp?PPVQxix#^;xǩ[E]7B/|'rUlXfPR(O@#at6yъ, Ty7jD$I =WӔpe =hX(d庰2H=+>Q{o{4t7("[<ՍUu;b'u>W"aF.hvPD>Q[ ~v4oc셩T=pp1@?,5(ک޷;)㞵+-}~\G-:( l((/{hkO\A]YISHOA@?tzC*QJ G셥B=YT <~_Mu# z^۱PGoDD< +6}WVJVө-~xo~$1xly37[ߙ ,N$/чnS: 5{ X<\#whR }Xݕcy3MctVچ-7 Y+p 0V5fvn:istχfj.p.'d1Ƥc.t$}3ko(QMh1#{JuJ+6T'N6*ɨb_(2EltSZ{U6G3Ũk]kyH%t}&a&5X}dVZoߜ>#L o4-s1٩ɬ询m|y6ktE#}ܻ<]JޅV "Y+u"ihtL%_2|#].7Mvv5&i >=taSP)OMI8GZjҵ +w{-HĮEhWxIǾ8H4NqAnIf7hSc^#;ll2QU,UJ x6#JlOml$s4vDtgUpɎރ Jq<#sQ֧ݙ{9q7=/ץk +wwsxCl 0UQIz+#lZqҞ2@='ּ51k]R;ҩ%P瘃>1ikkB" }O.c^Ue?PFĻuzKxxzwĂ|w&VyϺXOﶰ~rI0:{tEkcᑝ} +t~|DH bCoRJl'd +fFV{.E8] ZNIkcH$)?BG};9: }~x>ALfLDDDDDDDDDDD;7Nʵ%FQiFý0>X*ą~ +Dl> ;bVA#˲HyRë2е#;74G:5Y? YX7o}ɹM%Nx̽:c9ڇcj +``ٖV,(@Ow۟՝~>U +37#Sc"``+RyXWVfxOH޼bzw#1jPhEB_?[/I+ŹfUZlFdO]4zUY[o]~2¦Xc?;1 FC5L۷6 _Uqt ]-la6fT$>;%,kqw& Jf-G2SPt[@8?Ju TʔnRv+Fjc.>мvIƇ{>(s3/?;.)F#pU[-b, (+ ˫m~`NdA$~o{.4$'NZ6s +0, Oge$˕|-M.\]i6TK.U@t/V2*^XѻJGd~?@G>%jV&'R|ʼnKA +NkF=}oòs6|а>l{l3HDDDDDDDDDD@j ,3Z)pGʊޟc>s| +C=,[a=mttgaZ V?"wySU +PQ;XZÉc{K_N&/C*B.Ra=37}gtdW0Ar/S._6ֳxio>ɛ_}($}EcVUJ{z['Vljӣ[No?:>տ7/Vklӣ[No?:>:>:>:>:>:>:>q:daUNM:J˶͉ eGMZsQ.8DžHK׭}^S:W!+RA' z, Czi҅@ހk3'(y7#oԄ$߳2[T +1u|@㩲ꬤ0v{j 6Nnj"P^ҵ w +XhdzӰ(~$q,cG|(M8yFǎ~i%=V;$53zMJ^k9\6InܶIo=5=1+JaĂĞ['{'ÀZ},u3_2nT;~F}g?NvTz6502q:3SZS̎߾d.We_꿶,}7Uc=[bmY_u_꿶t}7U?ӣ]WbmOUmjGu?S:>տڟ>ON_tR7eTj _eWEJXe|y ]mDDDDDDDDDD@kVې1B6c3y=fr@ +i7rI?1:yŻ": 3,Bʷă. ǯh&[Vu%LP5U ͱ c@hJjV"""$F~.NvrT/IJZkoWI*O興k#w"*0? qQ5B[ y ( +5z@lk~oHS܂AxXv iǭ/J[^u&lHεWPU0 -tOr=盾ޟ_OTp#jdoN+*{^ёKnI$iZqlʴʛ";|xnƏp~X8h1 pP6|{O=c~_ʶ8:_n@g +*""""$WVƤ+b-72Zj`@Hb}G'w} cOͲl^MQbO.=f-(f&:6}.DDDDDDDDDDD #`鮛 jkJ(]vYMd-kj5nݶͣD';&KDDDDDDDDDDDDDDDHoz5"{\5nM;O ܦK%;Y-,}'"""""""""""""""3k!eC1]HӿdKWe@$:$˱1/긘%܋c늓I:>׃2ܥ-*]UIy$G[2A>""""xFΕA$qj̭mцՔ}K2^1ͪ,'A69o\2g`$Ev-H ]"cgфkX8Du>oKpX.ڝ K< + >s!~MslfCq*ϲQij%鑋VeI_ډTUrm b07]tn$vIp?/jI(#zMBpۧuL rkUy)1GhJ5Xxsdjg d%)`F;Apr:ʭRA!YXrlZpGgWTz6:@}mzA`45̚:e }nz]v+lCTX1PN l@=9ٝ*r}2G%ewg$Ak#9/@zU=pֶGmb7Q]CaY; Vv߁[& I3)QeOpN?lX_h5W[3ꗬ}MWắ9wC!&vVA_nE#fm a^MKhnx.uޏvI-5(\abE{݁?&̚[_H% jøc +r ,.z͛V]OawaYm6H[/ݭlJi>9g7XGN7muܞ=u11~*[lWUReHxdx:|>$5gd +U:O0%HؗkAXfSVZ֪mi?tZ0u)J(2e`|}bz鱫fw (v'[>}6ݾ;v-N> 5fMz.e*} ALꄮ%[?4#+'jNb> ttUu2XvMaP7 GɎ~Ul+"Q( لZ^筬1TDR vNW*0e['O k u$:#_Q V~F-Z%(rlMܤrx?Y9wV0YZrZ;TA%0'P,I{޻b"""""""""""""""""""""""""" <#`3_4^:CVca +} VswU]zf5e@#l%z>NGN$3-޽[jB9}vByFR8ՆenCU:9Yt1kGNsxoy=Q2Q+Ylb綥̎ձd"րTܮSGH kG[2AlΣ.N:lݥ>-M60߅{55\:-HhR~T;sUo$wJZG@}k{`UsCu,~BUʂtO.fkXO~KCcl=kyx'jOpOn? mnK+(,KovL4@G+Ԫ[[(ta7x'*,,\zoJXYuu;ᮔ+XPnKR{$T.:u +[1Sq^\ԷnJI>A4aFUUMiJ޾iӿJ:eVRc`(D#~4YsaEMJ5aVWZuP4-|g?WDZoWj=Jֽ.㿴 m8UrjP:u#:Nn2kO%LEvrٰv;o5~iҲoHT!g#D6ܒ̿^*U3MVk!H}<8=7/ĥ,P6DƽOX9=3ы^T`y2zUQk=Qk97hw]yh}ߴ.msdP`]`|7%:Z;l #];,^F]4wV7"B:'G^~G.S{T֤v7- 8,aY`5!*wW|*zۭoCD%-`%zT}9ӑު`Tk龳6<~f5BJJˊ^T[N[]GWRnUU-Y6@:hާ^\wǖmo~%؈- ,1|,GAWMyG򮇲fTK9a(kJ:P=܆{4{ĬDOrr׍QYfZu"@oϟKtj(ε즥e'b +H6'DO)bY$tG+(H.N&s[]v2B1ؗ#~VkBV<)jV"'j*$kccc~6'w+)X#X#6ﱩ%c}v>$ȕX^r:LYM[Z0c+lZ5+NN<'KhʮJTк}V/JL"FηZqQQiNP;v]t7O-6',@rۍNܕ'cr%˚GUy;Q˸ $+l}rHby_赲Vcis"]xTyo;HԲ>' a`޴\wgh^u2pe_f3#WmjQԩ <#Fd׉SkDRl}UZhV4 + XS?b݋2X +|\]KѮHC"ɀ߱WP*gZʨX[l*>&4 +9삤|$[f2Rͯrܟ~m'Cf>K^yEYi.և6V-ؔX~HF/=1Lq"ٕ~X׽4Xl0b<?tb :s-̫Rv:}ؙԺߍ5@ 7.=WRgD7eQWlE :qfVùWÇ!~'=u]nWP;Ѵk8 7}cc|[FUe-6{ZTv +.Z,u5˓^)j5vbOjV'˹w{ZJ`T$+]c@tS.qP֭({1̌=U:8^5uIT* T'[+Oٛ r!9SZ3žbu$K? +=O\A\Y~,Kkl@>fgĕt/V 00+ۿ2r:XX#/" 1[Ekǫ=E. oC{:u">%c'g[]uVbKtl1`NjHT˹Qp#=sૡؖ:-Qi̥K?4\Y^>{UyqEUYK @:$Iw^Nq:J@6vGrNEb*6mzl w߿!U: lz*t;+f;V,5+#3VIԒn_Mzn\K=+T]v$3[_#`"&=Ǖ@wL3,Z,%[XP/ͣ؍wOtccaejB!Ky"{?vVX[ڛR#rRG{Lj~&U.= +긟bH] +ttSG;((kSOxSzz;S1ݿ r޷rjAr߿iGƵQ +[]{y+1&bL8*JAq(N?ŒWUS =-eN>[{x=i4U܆6m綵2 tJj&! !TMJvY8Y=k~Wl>jFՁbSղ)u\TŅE $.O} ,Jc{(kzu=?tG`Nk-/kjPjFH#wb@N@Qh+a+*O+OuTŹWz#7.?6 zv,,Jɭk)S[~juccVl$oGηb֬aȅ\(F+J:ijޙX98x}VIU:sHߴ3fY]D0oǕc-v8lКĤedU6|GMK_bkŭ>fOPkq0տiڟ/ +MkoZ \_{KwF .ׁ븡?@~/^jRU{d0؆G(H ]?Ob'k&OOӡ.|oN8Y7@q3'36ͣXl+T(-\' "e_QD sjߏ[jYx=$w |0GYn5ȹW(D;1zVFUjqs;==Ύ Ӱl{IskPY`bx]}F:oH%E_5-c]bat̜M|{rE^j|#x븷U/.wK-^$> ;LF+N>;/*µ <Í<}Kuŭ;;tX61n)co>4ī;ߴ#G'Ѻh !' +:FM=]EZg$zԣ)A ubYijkS]}X +K>y+F.pSE{F^4ظumɿ(ϺI'J65<.Wt֥й8̠0>}cy=$G +2:^߸GiS\Yڴ(!$*w?.i^e};19NS >}57}_-(t-b)MLF{oUYmٱekZk(#߹8y~φ]Pڼ Z)̊37#]`.rXn@ހs>-.w%>V $lL72jz~>J:;|ȋ0s zOTjr)n6:|E3Zq͵MtrUUTVo@ &ׇ*W(HXk?![/2q8?lcn?? o};? +YeK"PVO[~є3P1n Eh҂lyt̪Sp&u?p=#Z+ ݇R ,BYB,%For_-w|Ňzj|N3c2[t3o#lvD Z2wJ;YAɉtWV:c[f~P+߹"fNktΛqoasf$wހn^c]qz{⿩JMf;su[ht$xEq'CķdhԌP߅avBXx>#Wq8QAQ[n H EF~cY~@[˶Ĺ-XEF*{=㺒<7"ш濹,㡣:&xܩ ߉_2DJj%bSR)YMFq:}}UݬbKc}oI=O`'n$3)x"d Z>p᭯keg.Ae _G e#Qj5JĦRDJFQYHDj5+)JĤDj%e5(l,Nȵ>2mYC`~>':W>9vXVk;(u9kvn *OF ÑzkskbǁubW}Jb’;@to+e5rfbM0}\PBo?䯦, +Ue{1}/յ33:> keg$lUb~־*6dܘX*[ 'b +doȗzUymI8ۗvWRf UKq:U~kfTb ]l(xIf x>s3x3T]zqzzؒmη*G+W BQbԱ$~ʧО7~>klf |~YUX2&O81ӐE~cۇr={uL}**YC+'5)`FMhqaY}Y$k[꘷d>*X l_M&h(,5(lw_ +l-kgS=W^ܻS/b9 m#QvA {LV\ǵFcΌVR| ?1i7`ृWR=suXy,,;=1jkJK=6bޞ݌r/=S_\ yy)MY53hlFa!u\1KX #'5$iyRZR 7"]?MJf^.rG;_7xC_FZ|ڵ.\\ ?dg}:ٹM)_dw|A0~$KZtzҬIzF:vcfZEV*Qn, @+Q^hQkT+l|To޵?:dBy'JT// ^]XU8DQ݉!>ޗuaUiJp~~nHױ)v+0F5iZ8w̞Lq^HcW|ZY@ #ZeOmǸcGm#FRCqpO܎˹zzZ䊉-H x;w|W2l 2N (b}T6K**H~ݧQX8= ]r;ks 3bqڪԸzl+e,OVs6㠳cm^kρ/g*nv&Sжdo/#ݦfoWq[ge,k ” 3G\\.QK2 wǼb\}f IJFNJ4 / 9LN㹑]'Ҙ4Xg'e[xqkGx3p9DH0ѝ`XXtX`hoԱI_G|7[ֈ0=4a+g?.uK5s@| uDֱ,X\.(c޹~<^ܾY-ˎ{o8+>tgT $;u5.~[l[W$q 緙#,gXk + )!_Z{yvW]|*=V(My0]}ƾ*Pz} +*'-k`$nCc%t޾EhOua fάcu,lEnere-H + ?M͙Δ7V-2 8̪ŪJ]ٷ'no\QNO.S'$):߉m7du +9fJFa#`$jz~[)jhƴ[*%GosٺU[\ +ܩ+鿾FR+v/ڞ'\k̡]O64ԏjgۘ5/t 2U5.&˂0f$ g7 Ǵ w$ LھJfOIkvlSp٫wND[Cz:}WX/<=jd1.KLqfOj_juUy8#kσeu:nUV-:! kwqMO_u:Fe}WIP[?+ ;oLӧuxnVW[ Oy4}:US@z +YY|[ +QʧAeɡUjt$|1Z3enU\5hIB7GGsqWǩ YR$t[`|Keu˓(",\ +v|9 ԰?au|*C +Y+gVHT[,~AnoQM(^6-6&gDk=Z:QFed%Jµ)UE#δwc_VGÉҪ?ֳ]~qm{{FWL͡M_e ae-ů]8 +J a '`nbuKQe }5襌6(E;ӿn=GaaRQkRƴ,ͪ徵;(a؍u[R(8ځ@ +F|i%n}=V +[VBo]H.X}m1v:+Vw|vI^__'M]ͪ*?Ԫ~x=Ӵ]Ζ5W'eVIoےldJ#Dz[W:3#5%T[>QOc^M||$aH߃ +A,V۹2W7(~UWbM8E7d +dh $V-͎Z㊹mH`VeGFμ{M8gzaGaKdR7!0mWQDz9}wĝJzu=VCWYax̡OJG1ɡ=~7Ǽ»/ ;#u`m^'#~5- }o^ekUzUU~[?n+hweϋq6tm}{$긙=oh`(NCrcY v܋>u+nF=JW%Y47!DZ;YQ:e+* w~5}+_Gz E,ZNHf!Y}PMjUv;w3U'?JŌ -WQ:Qyr+ntLb>WG^ G|]-j-c`].=~%7~vkLI(+!`|sb|S!/#年b]f׵![]lh Uzg'핌Py0}TZyz/H+E nC8=K{8ca!gsӡOx z}ٶ%167d!^DcOGYI<$rm~%PH:oX +2Qd \{nlXg $ytQ)qVKr~Rƴd9 + ի#YK) _R+R_nFcïQ꺦YV,eUn!t7\;d%Ԫ m=. -%uC!-۶eGB}H7]vU'L)߱#+GvJk`!8@K ༴`RT3ʎZ$u!WLA3d^,W>:g#`7cnUu|1B8jF,Tmx'q2""""""" )+)XMFe5+hJqu޻js1M+J@=rZiUBh :BVP(]X@*` {XQPi@(@JDO6+2 z>^= kXC0P3#y&gV%%b""SR,t}Gt.-CyYs۶URس~'IIM(NoIn< ]Jƶ*__V`VWUȹ%dkϏq&>CћnXjxO־>N[eG(H 0Ms>VVFnYe'"2UZ[vr}rmR_[; ̭Ț>#Ŀ>/ZzCmw7cug2Ө^32kz׿y4rjZbÏ.| }yoZ\3-mX0ӴV"`m(6H?S}-u<5{x_.dC0pU}KVGewڏ >t~<2)=R6+9nCʫ[jkgs;zPumodS,{$k_]Ԉ}V-Yk^'L|~WoSc,ZT遱FfF-[[ZB1ߎuc~*ܴa*Un]Cr[ +i=W ~!9L^ j]ي ?/10:硗*ESo[S6UmIٳe>B菘 \]lRQJ#3+ಥWYI.̍9[ܪdg..!#?O-c<\MոO*yZfe-}GZFI[ȰTmM>j P{~`<̧+~[A^XQuv:`FdWd׎A:0Q:&"6!>O]~Z%t\"TLF]85 !vO߼`-M9!%%9}Yin Q/ͯ~GP ]uhJT<{і Sb(38G֯.#L3lY;F؁Xh^`uODķ&Q·*I +=:nKֲ8<_^K؀݀`;eu<_UE@}_.e_~c/ݝl-`;'˨bR GpAAd 1~/O%yox!{zeݪ3#@^jOOpH$(8V=UZW^KP6I 1YVkaC$}=缮_j!mN{)^JJl$lqNE<\*O&kC ]긘,}Ya$}{}WZP8I Փ7֘KmMkR%lw}Gs}[jW8_LGmGQbZl`Ocoi-eZX3I`~2LY6QρejC_D;}gRVtdplbŹZ>]9h,e!K(s~VO ԱmCbYU: T1k,!UT6L]jf޽ =%`bѯKDxJu,n@OM~3uz&!ʰ9"ރ 'EbHǑ/DD@(fӽvl z^;,R|{R:nWO{ԊK*w[/좭ְ_qr)j2jyv $nj2)=)T7G zuT3͕k939ad6^}K.Ѭ](2oGoc؉^QzOXep=2 zgFF}nd{8on~=~E 8FSc0kos Cї)rmlx欧{~RIZzvw[ͮťc+!*K|3m~MZScҳFyidb?S q:_Wy yW=헆q^P0}o{#guY:$Wu;蟻[ "Vbq$2>oIn[wUZFJFP++Afү\,{U=0B~_5mJﶵoqmePk8p8<<ԸWϥ7cqU+jcGP ;Fѫ_]$qIj+[SYmUZY +IsɇGǟy o]ҳykVFpNI~.v n(C-dUmnZ,'S*9Y87Zk>~8ufm!ՓgMhk[+ +[Z*)ΦÞm'0z?S]b؄N~kxWXVloM{1zqzӯFjӳ|x:]7#R])z`Yv l|qr2dzeU^(宿Od eY[/J; @Zr:sj@=GfEZ#GM;c*? 74 DbޏW\W ;yG#𼗨}lVyou3 vن h*Gzۗ-mL +? wX2j=NSՍ'ˤ\1X* +;z]YJ ؍BX7_ԽAj+tS, _XYD6k{>ů jֵUgaG]{H]IM +NZ0vjTtu1^6~GCaNj;n=Q`_M_y\ZsTwتYf_M]CRVE5VxĶ Iy-_zn#*mA6A^)jX SO-cJp׾WO\5,+m:Mqc +ڊZIګ.; Ƿ#(uqߚeވDw{uj`eT75N.V\"_I+g~b@̜KzFGPce[2W3<ّ_T^V.g&髀rj27/fRٝ%SUu[qB-ߤt}_ gU?nؔ7nUX }ld`Fi|)q,{` u|!X[C)ɓ9Tʩ^~sV,U *{HJIcspdOMWJUVP߈-,ԀNe^C5|i#Z:ٞQ`6cT ZX5POH|{-[ڤ6(\ksҏV@=Ի1鸹Q[:)a7.YMF#* ]ZkR7PbR`C#g~wۼ)ѯǂZ<ӱJ)#<"X}z'kChƨ?y\ZoUMuUB̵OKţZϤQ]`EUo -ӱ[( %~S_;atx +SB'q)ߥZ&Ə BY?aZ^*8E=w{~=y(kVFSTԊ<Gv5Y#V֮>TQZBk\t8ǯFk +4H;#:7 lnE+R1]o\0F-7]Ks* ۰}Ώ$)WZ&U + ֽܧqo_ѯ_,m5SY?PH+FbCtAUB1iC]խu^;SEgD]mxԨb缴;01`>\YY%I${r2s#+ Y]7=Vj0 &g*KCr?(m5GKj[|Z<'T2+t[rF=沌K1R@뷟2WDZ֣¢_%nn-ʭel`H#:GFJVRb4;=fdј.,ޝCAH/Z6m:Vz!JG# +mHDlvJ+ k8Eu"(\7颮P7Rji%R|.O6A/!ip[72˷} nJ~{y)^5TZ>HP sPeU>on_ ]x*̊J ?ԋJ"Id'ԔDP`~=D@ SّɈW;6ܺL됴WFk!?p$LahKV6G.eƵT &Rn6FԆ{ \8fjc;pC-'f>~b`Qm sFvmkmO]%f^N mdԵ~Exl|?{JElTClq ĨNA:tђ̕ZtYXrYHVH ďn~C\G3p/d׎uEYUQ-bjq»6_J|wW\l*xs]Hga5ŦP@o'7$<ֳuj5]rcuJ%U[WP{zDȧ&_̻FUYCN7l.DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@XTu/qkqN 7$Vw7cؒ',Ziz8Aq.^~]nJV=;ebv=ޭeAzjF ,V׭[;@?CW)K*,DPE{K=c +e<4rpYl: ŭRX,{sus_VmEU)6iS}w<[тbfR \ ̬,꺅Bڎ$ R==دEi Xg)@Pvp?O[Q} m7Uj5ZthG@m;Z~\4zZ_$䁳&pzq-7cЭ֭ ݃oiDظ{u@x81`ø`xݩӭ==z7ID_S=VB(].Aw~{67BQHK]B-I<0} +0:OBz<v&SZW j.R)o 2ٰuI&V.O{SUȺZ#̨kg$דZ[V)H>"\--[W*Iؑcr7tn+))BWax־C[bXO-AV;Up.řV'7ɠ&3[.ڊ͚#P[Gn k ֧ko=&=vR ˄P`6f?촒jwQ eg!8 URjP y3M"Z4.kApAfGK+eSɞDz#Ex5.c*[{{~E鸨B8. +{xIDMiZ(Wg@ caXEu U;#S2aGkYu65{}% +:~qjíj|*'*zEnd +S\E(SR]քИ7te;1fD-({+iDzM]…}ɌlZR<?~wW5.ܐl{:m8ߞkKY@r;v 3bgu( {OmqZik8cK[ӱd5(mQaP\~ [xz5##r^9܁{cjCJ+VdX( W#ص5SZV*}yL^Ԫ<"֕T`)003_:ѭ5>K:,; uK:6V Ny?6 ifףcث76}+ (y] hmȮk&1SZKɬi 9W)$2졕ܬDDDDHzTC[k65Go$@w+4v{/aLz_XN|T$߸ђQEvn^v5kkU*I䮜;MQVI?prW.P@tV:#cb]1+g~[v֘H:VͨeI +Ŕg\@=:w1CَΣzve]纆;׎upiͫV,G}VGy].7ަ\J}&675~r)nauܧRµI >dnNUIlM0J0DNwY'nʳL~*X8('}$W]rQ0}=%̭o\}[8ΩU' xn[\ZޑF̌y޵nkO5߃KLH\ٯJjJPc~TMDH޷- XZk'}oyY4ђ+-?9Xj^AJ~'UUMoHN~OpqX(f2sݩNU#?4 c=^-g2K r5lj=ztLWJtvJ@15o@îH̓390>`eZ:O]Eۙ,9EM]-f: +߿n c7]:YmTVwXlvw3o_sͿBoZ,61Jb=n`t~;fk=n帡QPo}IN`γ#1JZIFImajC 3R=f3 +UZ;'zXJ$>Ǔ2)e􎆹ErXvP7qOwRX{rEocr쵓rT3F-+g&^m-E!xAŕ/oUpZ-}Oݶ^翙: :2ŵqnr˂ulJ 9TbVP=G)UB5'؎ᛶ~T}1+B)k!: hMC|c''XP?Cs +\"ʟ>&`U̷.'ARIR Mƴe!bwRK7w?6ΓnLzJ.(~bI$Jtj&My k[|Ad;Wg`twZ5u 7Ovђ1t,6v64g~]c,lؔva#^\x%-s]a%}>eڴ ]@U2h%UO~cZ;?.Lz#ԌH~$6mϙAp<- B7:h%Lj6#^u}Ջp5nk%y-1 };nRM8b@#c=D V`m]aO!@Gbc?C>U&>l@&O!:m@B ֛g̹wTcd)oNC#ձBh=k]l_W3?+8uZY,(:EuűwPR>^ق YYT%Xm_a1 k336A~buhk(dWHneOl{jo#V7'MUG<|+IagՋ\"#۴Tniưe{y*l,o%} ,uP_9c--wW{ֽDͷ`RF[Ըz7(e[K :$})'P]j.+;"&wDϴ]g08=|{7~2aXf* vVML3P%(Cf$6N.tzf17ZʜVbBnNFd|;BV."bPv'?2UO;'9k a:$~?P|T ̓|rGvZmkd ]`};|+WQ5QWi;G_i܃]AT#Wjqt:QrZIDGV1Iz*O2 +mx$V}MM[[; c/MKZlٝTiC9Is ݓU +Κűv"Ug_7eD RHۿruȟRrgΊ|uķ-kzg/rh>b4oσ=g`h,R#c*t%v !,X~ގ-t\;.C3^[qV:޻ LnPU7rkc_ w:Դ +&=r^ݱ?w7^nj\;zZvHױ>Fv"ީ&r]ܑ=k&5MHNH-E\6QW ӂFk~?^λoS<-W5336Z5ٖkn +.;l<"Imu>|?IN,qjlh`<|L +zgrff.tٛd?f"kr7 6?GOO2m!e OԦoDͷ%rKc̣±B6oītL6kڏ;},-7WZߋyRKw_}~Ot/?',cȞ܈ظ߮ŭ; H,=~Cge*w5'`Gy~UY]r'eb{{fd_qj/>fc +K/O|w=hykۻ>6U;xyXN_='!F aaU}5^֫38bݘdQAcڲֻS$|e|?7,p7}#z/_rxzXmXbȣk _бwq MP}y&z"֡T< L|ΝNqCbU(J锃,1dz+a&]>K>wώ%OLҠRvC:]'ԋO/yqI;ςe_b=5^ed^ݻ{ӕ&Iwcm$g:>%YKR-uf}~3LGReltd}rVS>RG>&dDǣ0_mzv/We7!)+1n=0]#rZ0:QlR_eEĖO2_.ʚa޷e;֎Kܸt6L]6;ԼkdfWWxܓ<G5߂qM5;dg?[Ka]v@vLO/ͪ򦬬5}"> lc[$T˲hGJ˂-GNG?'|1utLb/?MڽǏ-lx7IcҵzkRya۴?|S: ;Ub汷V¤ښ^WddI2jxV#g{Zſ7 ֊+⾇F'/(vzՙx$ j?Dok%|.|L,!QaJ "zu+wb_λ#[oɯrEՋFq^5+R-eo SR"FY]mɻ,کFb5ZfއMc3VPHgΧQ__ǮP=[/>Tj,!!Au6\*K\oo&|BwOd oDf:z}\mqםq}o{qPr~+_sݥmRMkMK`7=m.ڹc tYn,T5H <}N$LNkflpٲ,{(ƻ={gu*RjQZ6BwM,îſ՚ +Ht({cueYxX4F{6T90rn}< vQNֳYSde FwPt٭g e K\v|͐¸Y3E)ja^T7P{7 5fltՐ $=ؼԀHǑNtj2;׵n5ޚbm@]y!}y^Et.BxWܽSSZ릮_U}'E+D25_I{'G^$XNM[i$l7=1-tek T3'.$2TZ;ۮgw,;܄ }f5[%/QGMW(E~e?)}s&2>#@^ۈNtMSl4},r@'RC]3xzy&6O >kfd %!UhOǿN|vLi(K)=t'=_2Jn ++p +YP;Tx3nM ;SJCK>#`[:SLEmY(\q ],UĦCl䠁&L9 }IkTWqɊ|ݸlqן}̞kΨ()Yf@|[z5<.uvQN[dQy%˯<{{`@`9(}GP\XX1-x6m;o;$A=UV;/[{'[^˖uLN[9zި@m=~>1 o֫\~ {}u̥W"ҬujR +;/%Ͷk7#'ݘ.jx/$] ~[Be0 ܙf7*XRu¾'ڞ]8vB5 L`v#3DD(F_O Gm~*-"Qv{1U}Eݐ1%B7ǰxLDd}/u;C)ڝ C&6?cw *bvv} #h͎C9 + 8Ҁ4;=>WVƳpA`f6C,θ{ u$Ga]'+),Pq<$q÷b5-.gɶ챝PIoK'/=cjKV +<|߇fjg}IJVq: t}U螥ٓ{X(P=BN`| 6"nrTڪH, RW@bJ8_jX[$ߧD.k j̇PJmd'j@ k~L\2+{U;z> +u˒_'nDaƵ ӫГwf:3L@[})zڻ)~uغ%IOc؂2w{5^+@T}Gz%CK7u{$uQҫWj3H'^#["(Yu>h¼kvsȟXrWs+X*_ +'A*>{}ΌXmcCSƦrmCMmo#ޝemʪv@BU̯UK֢Xh.Pt{=?Bl,g tR{ PJ;oGϜ,l*-ACmf~m*bG﹵O. 8mbR!#*ykWae?O|JɵQ⑳㻑ߴ|I@Հ+dO*J(~ rG00!̲+(FFMN#Pߝ,XS'uzf5ze6*smO}6c,1@ +G1T(YhTj+M2:fBcލ)$]|vtP T:cq O݇nR{ں&wLb}3m7Օ*xۿ m:2r^V +2ە=':Cs&fFIa-l.Ϗ:H,XZ+pRǑ h}w,u[lK +fĖb|#oQC=|n.4A|4*>i77x?(m.~{3ӝ=YA>B<?AR@/5.3z}W|@ny>T^ +kOY^kzŹ[cZ2׍Bh*#KZeL{3-)[ɵ`6d_P/i.zS.w۽W{]qf%~*Ȣ{ˈaa`Ր.V'N d= *d~fXԀIF>Ѿ^jV{#&n\"ʦ֦_&ŕG|?\g'~w,Iֻ ;i mźl[9ULtĎjdb!vjZZ<*?BcrUVnq]=SONȰQ*:"1*s[TaiI`m{OiMWK;3T;`\I>.ї2ĶV)*Q;:J%i~qٮj(MaT5s<`>=ѭ%D+yȨ='* V_ϪeU\VBߤA O].[CjN!TŻ;#%=nF1;"$o{sc{;:Eg9#s 2~b-WQVŖ}qpOZv?Fˋb6F.kQ7re]ϒ'Qo+.t.lr?رI%|ly"2L*^WZ%εTTA] }&LmKz28  "bl>WQaQB}3b"""F|A,뎼x7Z8v{ -cijCdeDDDDDDDDDDDDDDDDJj%b""< 23gTU9H,- +ր}BƖ'`UV?I'C^i`>Ǻ"`|;WNWc]z5\{跕>du/0ۏZ[+Wec|Ue>"]ͦr.X?r{iӺ^o@RP)hvШ6Zϸ?ӱN5Tcz'_M<\Q$<]MwྫྷX8eڶ9cǙ `qcl&:IL+ܩw‚ŊdRqp;yNe+-n: c-r?Oa.\l**U`665[ _aF=wH;2:vv5c!k9fP4qP$݈ɘ4dݘY\e[Fg!WTEmMmx4c'?1Ӯa?LCmHbt>|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD<[jҌt $w&i=1jRk3[zYKe#)֚O|:Gd*ar84S!{F@bbW~FD5 _pܒ< ?["A.ʠ/#{GW#`RdQQ\xX~c|Pҳl{4t=nEZ>wƣ]U!N$om؟[7 +`,m %Vv<x-O; z)iV.$~fBʠboQ]zVd=e t%rSUlkcS~5&* EI,VHEbr BKu +sUEy6QFDV0|=<x=SyG_K/WJs^?:Pv`[fK[IkrɦD[a䑮bWnMJġCZo*"""""""""""""""""""""""""""""""""""""" (HjtFgP |o]bFUQmӘ=sŦe}3kɿC0rx._k}l콧ATUWtm.L+NYy,~T1!Fm~ +ADeޭe˝[jֳvvvu&"?Oя5C;#s<}`2Y +<*VSR]խjslU6Xxs8チ̯h, + #l2Gp{L ~bSR)XoN]7e!6io]L +endstream endobj 92 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 31/Tabs/S/Type/Page>> endobj 93 0 obj <>stream +HWk +1 q .33]؅-`b8~ȿTsb鮇t$_7?-o~x}"]x_>,o.ob\B;}./< !N_y/IVx^ix9AQ0$? +&xp=~Gϧ8؀>Ƀ xY ol'(k:E|Zh'^.7>u!K.‰lZG/؆O>۶@=3(W2eIpBPBD1o2 Kda__ $*l1Oȷhmkp<%{@k" +2Mh 1&[aTaNwLt4Ry3p?+b뉡"f5Y$`llZg)|9~9aH#1Ó1*3 |u}tӝ.Xt112( KU.L bQRʰdZ\A>}F6=sDme,J<:ېG>A=S:Y-9 +Te} +Zm + !<azД~WH?ħ4w!iɫB%PAf=iTLM1*pLH +"o_ĦzwkjEhQ9+2j{[ `7y.8Ym x"M 2*TZHHO '|/a24m]]cZLu: + +t`˨8Exi`1Oa/N9#,rI6c3mbZY w"6Vk +[q 6:XN4l<{&P7b#[l_]ff Ve;!l qۖPZb=oHXqfGTܠ@_`'t@O"%]k"-!mIي&IїxO,SkYx5vةg_D~mi+jy%s,#2fpJ' MKQQ()ux؊ f +AF+kCiF4)MEc0tvUM#Z46ҾM~ QVR3= 4mgRT?Wh>fSq [7Z"Ig+%U*=6F#N|(6B\_q\ҵ:o-)Bd:1@3Xl12'+UÙD0iHg\cx۫U?ջ-0ܙsjY{D/· q @ֶqYƀIo:12KnYDSm6<=6 }D1=ZJ&x6/Pkgz$ìyBtWV0DfZ;EA4A5~Wg * +~yZnt S|fF59 KY,-6o6I@Jy<ϭ[dc3Xe* {nmC7 ALPwj"ʸZ{k͒$76JYy3//&;MTD@3G%xR^&9Ŝ\貕\!zvuH6:2vl55v!G'I%ڶB%,q^IyO$:Ը!^lN~?řI Etfw0 U$I[s+,wwNiް&1#?'V.W,醇n?yUL|Tqh%T&j:oQtr4 ԙ !Vy!6vVq8{6/~U{[5f[!ACjonjG7-i/p@ wCervV3%xA]_,k4 +>s "nJ_A٧e*ͯ69uH>vVݪuO_ήC؍s͟27 p7=Ip~ߔ(Cd4OE˧~y;WbR)FV^ڮWr3ܐʯran85&U` +w|}i ࿔ZC)J!au:M埵l+V$rRT|/ˏh +*2>1lL1Cw[72K(6,y'e^yZշ4)ƣ'Q$=BQp,köL!m⥻\K`( V2plDdX2O`wc>&:E(rWBfAB124!_?~G5ǜ@76\CBlȩAݭ+߾¸A!ͦfK~m {0#xSfh9;3"ڕ: 8ӦWyE9]@YA>Oxx?l?h.vT0d3rq=쎾} 3bP>FץC"#->]NJ +)^$~_ +*Sdݩ8aa&%Ɲ z!u=c& +u1JwBL{{ws@|atv,R@Scx"e@Hq旰[ j,8D= ,E.7;@emތW3so݉}sУH.9Ĭj>eV+h.UQJKիT>_̭K +Q{>1iKL>f|.Y!9)WX!9 q}TIsPjt*Q7DN7oGw\;V &lĆQqJSTE+PbVS=s; 7R2lga4w(&Zƒ'S&TΊ}V#wud KI(**0_ȡ$k-.DXB® ac?.9aοhFo$1һÒ~[M#@mmSxnw=(wKu?oSՌkypef>stream +0 +@&( + Bs8̑[ԫ_ƻMoy/h WTR`}?Z4A1&)qE++NJ\-uj-|RxfCЋK8̕7Uz *鉡\>o~?[\|$/N_> W`&s@gCwӸw}P|[GœI#!}F#IB1;f Cz ,| U:sE$,5Wס4p4/MCMzĦ|)=+'Sd iҭzg6z- O8J%5)3t76+ݧ+jOwJ|l_Wnb,!ߥ]2i`;ky$[9LĞ&aԍ$μ:㝘 +JlԿ*# @MR&GKWTN4|*F4 I|}OpLV"^ 1?\#2O>s$9#b:!}+AHj"aOE4G+(%{EO&߿tH/vhOP=-C1W} +v{iEGhЌ=S$]}5S;DYqFCȻR1,َމV)&>j:D ns=*Ǡ22v=m'.g͜Cg|׶, 3?+Ap6ZU|ə6e]Xwf5VNI ]`F>!y&7,gĢ]?y Ȭs% q'j[mzrs Z3{teLq~)FjD x.q:e]lZÃ'9CFbzP]1`*Go5bVeɈ M[XA'auG-YݻgG@Hm%ZRM*QO_qL[7y'#0L0R ab@׊A?KEglW sXُ5qo҅ ;ǾXRQ*Uev]H6L_b]j(X<9:KY.q62GK% ,lqcv!.:׍P᪎Ibq*KNWFt1^7zFc u^L;,H]|oOg8$rQemѪQ8{EG *c紃mC+PT&?fSGvLt`P{X}s'XXy(@lVP`VHK/^Ӌٚŧ&Kӣo1 ln6tb vN@^@2Iw @0umILT7K0Pw_GNUK ;YRSg,{*FEˢv!vcr E_ 7bv%,d+zol%g|O)SW;D%أʧ7M6~!CuBL lm;%8';l n"o縞q ݯo+)Fh1Y>k!747~-\PrK\qnҋ*Ґ[5w05|يͿ(q)4ߒj.{Ҋn7~ԶpGT?QCl\8˂?Ѹvj2'߰F[!ǪwP#'j+qjmH|h>Ux˱){1ǟaۥ1R.N祦%u%*뤳9odQ{KvU gHsɳ0~ڄϑ4Kƕ#£5W{0/>w-iHZ )k +Vbߖg%{ɻF?xs3+**uQ`xUW?~g吋Q SNz\Aw!9X2&w4ؖi#Q 52C:Цֶ~^MQyK-WpcAbRXdt١#Snx"{ݏ2nw 9bt`Y? AY` aΥRӠ&:G8nޙ߿z[4A1 I!ex nĂ6;FĉX>Ȏ&&Ni.lEO :|~ZE%3hn˄=eDJe [EON$b~BRIia"pm4Z5Kڿxz,v閬o"T7j y9P)b,B8X_)AnqCRr1}$;-!뉮QN2]#1`7*ŗ9 tfש? y6' wh,Jλ?%.nsgi6(fc_+*F7`] Y5ܼ C`Ϻ@(T BG;<) Vff,I_|Iќy3u1W38#Ap ^)b&_^L|^ DsTǧR@U#麻Q r]J﫷DQ:ZnaBpSSh;ǑE؉pt=(~ADqpG+]lpbN|7p72l,Ød3zBs&Wek)Rq|> S7c*,- {\ipF 𰶌{T>oOK? ?߳7o@Ob*s!Zi2,gIP捳Q.:\ D&5tԇNdKx&P`"&5/cz }?=dg<$x*qNQᆹf~'|d4&mj햛)IANV#mq}r9Ueo5 %cJ$p_z< w"cn}~R6B{ͪ9Ӓ5vv S:n0qvAǟ$)?)lF +T.aZ؊2$~n? |_+~pǹLc|V᤟Ղ!8" +tZ +Cwm3B\ "O;iǪYqnzڣMi ? K4ЅF0geڀiDSjgmAXH'Mm^,x``f}~9?a KDNݛ/ld*?|' Ёrdhe^h%}l4 ިRK*~ikߞuי ea(U]?$$ 982E}k-iZp&|$*í[ ӡg|$w?0Ll L@cJ@T' 0F~XS?"Cu%dk_"ٮGך*-݉+GX6@tkH4kIOHd%JcI,< %5P9/pbcȈƫBi#3a3̼2,9\Pu&hkvZV)(2~$ q_@Ljo+7|&aT .oϓd^{{sq~ǙX:R5ȼs@XItum;|bf0hk5ury2XNA鉖2:mp|Kr9wݞd:6 NAEG35GxHP̍`g˹x4 +R魶>&0 (/wx>8(nwdޥE*(;*o*0ai9K3pMHL:Sw"eq>}$(gԝ׺G!ޤe2+YZWZ'XƦ/mImbE0 8 us +Q7 O#GΫ-E_zӞ[3m/s2= ac,*Gs +뼗0UÚ_];S6[B%{< &gn/yr:==I'#L_eKc +rb:`Ga xTt* +".+2l=i]%US}?ED<N-s2pJqi>w'}z}e aǶ.b.9&4jrjqoOE kw;i +ʘ;H*ڑ: +CybN3C::bL,[̂Mdo'Qj+]3HjOWc OР7|jENȃիTDK +In+J^"ga@C厮ֱDh|".Ė,e:vD*%WWM+p!>^x8Um1b:c^t_B ++ePc܄19ATԁEc6~B}C܆H)"3΋'4wnv?]g)cL|-X~q,_Qĸ0E/ҢBټ\CIƢ4B (8VOF}՝}^<-@r608.h;rabX5y؂If\ +-P2B65R m6#6]DSq(M6asv2ZZ^MIp,$}軍wxdf~ @NKc  C Y oaK{貜* +HsDǝӿn"<*[ M9Yݷw|`r7߀.pK?C:6ܙ^wt `dW/WtAE17Le0de\#.qlw:NC=]/=$2@4F-)U29!r숢n#G޼ c抗_3g(7(DКۚs"5x.v"S^J5tꝀL ꇗ7_9%E>cќA *Tݽ + J;4h5~Ecu LI t5l^~(٭^kEE0v^t'f50fZ,#3鏮& [oseu&zhicfȣ)d_z9%f5p@ ~N܌Ew>yZd.| +R!R C t>乿ZQQsB[]ty3Ѧxp<~/+"=b\ƾS ~dx35:51yWpe]\xK i'QTTeu3ZIcD'lO;Sv84)d+H6qéPYv4}=I&q][rwV^eXUbZ8G3;~QyRO\^K +߂]sN( aY@:E8FBY-&flo?.UtȫlyЂ;!=GuoyW1 h+yOt^?wRI̻q}^^nB]dS"Ȉ| jDMBʏVr)Yr44nWA.2l“9.ԶgIIfn41`^׌tn'%xt!\VިldaxhK;u6zohƯuGn+VυipnDc[49-AK5Yh.`g"[2m Z_!tFh%aUs^śԀ9Ny/ S,lx{9)!䝢ꭉW|TZ|KC_- Hn]L%)[`< um~VdށxJobF [6\SѫY=_2u&~Bb(m_9W8ny\C>:}}nyq5@Rㅑ2)/nVq0D6bV%Sl{m$Կr"l>2=^e7D-yq +Ba;Mv~.+j y]RBN4RlŴ&$',* L U/rd%m MWC/)|"xB۠sIgB$_UP(o5C20i] UdZ&\{oos%/Kw $z7cBH*W&O]}Fdo z94tF.\jQXgnؼǦȂYQ}t86 MS +mRoģ]vwyK޲|&?Mvx8沛z=5G$EF.C^pf<4^/I>gu V[5vN +1WXug R},brHcx +lHʣ\ ͳbEK _Toly(Rd)af yG&GwAq?Iu|m'p!^Y=.NF1\zؔP:w L2qX`FmD8;"_ ž+*n F)20FFptwde=AxNtYj'!JIQX}E W׈'.u{`؋oUqqŦ󍢅ǜ(ň'<>qֵKB<]xͼd\zBH 8,͈9_TҐS { ]Sr*gm 'UdB5: |\$S$!)n_m[8";P3Wrz@1B +^ 22"I`_>=n#"dl-r*NQKup;جDw.n5YLc +5C>ЇO$R9ZwChYҌgWzmt5-V`ck5rVkee ΁ΪY4iG۷ y +ize %C߇QIޘ ԥaϺUi6眉џ8X$eӦ;Y+\W!χcYY6˪ERU{bCčjU.@/t({pNinp- IpqqWpP"̀.#|%\3f _H#Lr/9/`72GH{׫ޣZ8G>:nh=խ ɑxlL1 cn6ȕ}E(AP̅Ͳ?M ̙֒F%_ LyA>O)pHۍޅztl'P7b~}yٍyPKɞ֯8_xz5c![oo`S:)Wez+@xR){(bQI&ϖSEq0>JRL+$CH,AhQPn=u@B>AV}'b]<"!g0Mu-M*%hJ +X'։IuO=oÚC,=rez{/Lm|cs\:PtdDlIU%l>]Yh~v8A-ʽ["w?R#(w:vZK;MU +o(M[4 vy(0:g{ zLoC?1,}̊|ہqr[uM&>D"%t y\!)&qqR/yLԆA纜B^낂 &dV +.{pE 6kh'j" ;|ZXtr|1|Y9Ή#hRgElpYܻR(Z\pm=BZP)uxG'p6}}^ +Pow 1`q#m7R鬇ɛ]bSe>"B +Vxa۶Ӻ|]~*)Er؛v&]rzS`0v8`J{Cdƌ򈚆 +5xjgϰ%^L fzO@Ƶ=ߛӻ;Qm,"gvCSgrp.{9H8N*1@##b :'A#V;}nLS܆wT/YHSFښrUT|[sUZ:2TOgƿ!'`EJJ4ɡ:;>hc1Uk~zmLc@`ژis-mDckt4#EDt ݸ8BhyHmQh߯lࣛ4uA]I}7쀦<\LUHxcDlB)^5&#ToYqi3_oJ h\t 7۟#0OcXލXW)z C0TPYz,.5.!v3N~bLxc"Lv<`2K'hp߆$5ko &$ם1b-U?sHnx|6ǣfrPLX/pf)1Xrzjj@ZCUN&Մ0(乂ǿ^! <@KY%gTjy%Gކ+#pFSM/=g.8":mK+FBx/]k6?v%c7:=(sp/1#'c&/:T@%%%WuCa?∿7T^iu( .ӺᎼ9e/@C34̺p/]Q;E{%7m/.Ba( ]}Vw)]/x0ʁ鏫3;>F҃6ݳPX{w_:,Pa1 yF#<Ј'm}]J2OE I3fqk.0>SqA +h30؍jRKp~^RH 4/09?(z.6Gʁ/P̖𚕧7i{΢D-fԮA{+g؂51A}z6r3({96T,׭2I3_#޽ϧHȿ%`e7*! ͆lf7v;ulڽiwm)PUNmKz%b+J|w 4xl - ggƣ]IlҠSCLR!v(X$XS- mMW@ϻyjQ-H*S&D!bܩxR@w -ض'U|iy]K*ў^9bpK; +JVӅ[:t3"ǔʠ W; ҈ +q<DF(oL\=afҢ&ӊ&%h?`km fM+jBYoӃaE~LO63J&ڢl?CNn2@9iP6uHoZB4 TZ>y61ڵ@9eykD'Htnh)L2R ;nt&uo.X}0D#e3 H\{KjlX6>[ +{{W||k ++O\ZԷ˳ufoiUTV'6}OASb %?ʴbGwJ ,ˉ2S{soUM|.$nr6<ȸ1> VG {tjtKc7Nm*A0+Opf'"'jo;\=FɊlj!4RɼΫKezƹICӊ? §-SޢlS'A`O&5qCwq'#,К]b=sB}yѥ"{fEub{Fvu΄(Fp}frh7e">3Y9cyM%6rqJ4X Vo|&fl lȠ"jxY aD6|HFˇ)H.IMq]#j9)p8z1>NU+nWM%}i:%[3Թm6˦t9L%kR]ӽ{V޵*eY8$F|}޹۳q#G/XTL}y06ܞ;g`oo ,$r[ԥLE +B]ŢΔtV7Xflk~nAOem屚)FĆ mL}Æ o~A;xׄ͢Hg1,kpv!2%]2RըGf <J4 ^D'E 99Pd)[U,3m i/G.$HAz1G|Z쓣Tcj +448ɲw6RT3mQf-񝢚MD8mrtGo& +U qΠ]!r c! 4ӞIr1\dL2W%]"b׿^G*Hc"2[SrR5; *I0:*M2D~1gwP j!b{87sf +?;ʖmȝV["q91lM2{W SKR8 +iRDw*x ~9=J1Cj[ñnF^ގIqrT0*T?4;6>75qs<:6CٮoYߕFL1i8߆Ҥԏd"L JJζd(c5냙!R0(„2f0wq/ nu`pFڰzV06 :-8N#RMkWt̂3t],td#PxT&"B +4d'ݲۆ-{`=Nd7 +sBKUKSۃ̵)Y8>S88c{YOoZrV5)4xT"q\ +v{ s>^\m}f4v;=20e#:IB@Xds90M0*mNQ!Ze*CH$|09@yoa-bׄ|ɱqؾ^QpGiQC# +RneEUXP2mL l@_tLZأʆ~{2ȩFYPmuإ. fG=7x]oG8,?a6/͂QLy-r?9_MEo)n+J@ģ᥺i ?~id>hJ0?M_K@?AZ FTYFyMᾃ ޡ-ʘЏ,NO+,ĽCg<\zS A`OĜy3f$M׺sw,fHTv+o~ '%ɯey5L#~/ƶ͖hP<6yA2]?ΔILX28x u&LG*$R)%Q:$9? 1Z|"bq*ԠݹC5|D6MM4&Uނ`LAlH6[>2]#58 f"Ӡ,#' $UR|{2x/X>FpS:tٵ_/sj dEJi[C&^Ǟmt>#D؇heOΟy/ic' |)CEUbA&%-8 jriP-/}ˌq- bt?%sRڪ$~/՗Lvqc ™At(@cA .D/gݣ=Gc&IP&&~!&m*lm"*Op&J?bG-߷H$/uwK% +×xVo] 㑆1]z+Ւm*#GC?i;c7䜪J7jr)`CGR-cׯkO~\v + ^:#zN Sr"yZ+vIk8^Y :Õg-ݟ[ MۯEz +eӍڗWNjh%9#g*A!$U5^3K~{I8Xŧ0Prd,Ȧ#S7#Hl8݀@`ZN¢5q(XvfUZhn׼M*/hhWrÊ.[*wYE[ΡY2^ť][,({f4l8nH&[3e!'J!z?tz-+}<;'0߉wP0STֲ+zz[y)3*28> 40&6OC F_shӎ}jxu@u +v?y@בz_8pԪUH+ӃA״[ZqI[y͓2$Ѥ-뀺HfǙͨʶLQ%paパHć`QPB8X]Y铆Se|zZ!e^pG8X]! +|-Q XNo^(QIt$VMH8I}hՍr-c=;R aɾcX$O8/ldZk/;AWPG! {t&wGѫi_}(0,$V%θlM7lT:`*&xsb^=gQ5ȥ9`W$4k#vethb~d*hԴ1G=Je +DIƭ@#aG 8yA#gӐ(>yfsɆ< >Ap ܁1z4!A=K37F4/(8oNf]+(Yj:)wj&jX@nMZ"Ճ4;u&Y{3[n7sb6 W͗;Z2xĤ#0JqFâ*{*f {sK;8eWTZ~a9י^HYa0qiNUmn$6Y@z1]s)}NHD$Sp-(UO *[U1P4O^Su.`엥ź$\)$sL0Eb9gF6GIʃ>_&9!`/ڹ{ ^>?,щ+@ό) p! 8Gզy@Eکz͏lU(0?k'*߃ +@鋗v{4j$rհ#=bbeYX%9j!\i;Z ":/H5Vs\QO +{!~HJ*Bt ~-vr7JC/&_2ƕ IGq__O&Sr] Eβ}ҴVm* + }WF)#U |IM(V#I, +ih}xcZhPb.'Ud$Q9!N:Mʅ@;'Cd# tqI Na pqAܘPvGõw= a^jJb:@l!,rH߸?`I\R;~Wkb:?i'U5f9 +B]Ȋ/5 HH=P"@xk3ӌSYjgلݚ@)(Ї.Hu ؎f &2 GyJi4F)sx0>3L1ksL ڟP@9`0b6aĪK4= y( f:pw.˧%+;9mAÐG}'8E6K GҝciluX呔C0!{t>"+[WH#R^bΝC}=Oh-\I*/Zsl>jka?i5ށ\ 1qI9yE /IU$Ya\#S?J)d-A~dکVDK&k[G;}w/Fxz@lf[c}&G5 JLkAjje|~Daitű=Y'X2lN̊m[k^v=Aâ<:s_1pe8(MֆRj֭M>tMK:p2> 7 l6IG#ʖs/Y \ ɡ?W(I߮rc`K&%?\Yd˽]5+F`Ivy@" ϕF%Skz"X 5%#7"q%#f[#/H{%AVyFs>:&k͖D4|Ӽkv=IYu f6^8xvWUQHvՂs(J?<#ﺊ&s>cEv#bd0ٿ1E{Rk1+bVL-[l}Q9h[|h]`WngƮ]9\bdU}P~[LlB(dʎNgؾI jEo]JEME˫>gx<]mHw98*)@Hz6rŧ +lai/)-''2D+(5R,{#H4㫣 +;"$e>@=zv^k.{0,x2B +y26ѮLHcS g?^~,szU>}% E@?dJt<.bwB.XoXعפ 3ؙH.."B͊*+ ~XaCY*%-fk8 [# ؓU~BW!`pu cOn<5Tۼ&b̠CA~@Ͼ\N:mYt_9Z\yv4& #uԁvr&wLr?#}q8 KC`ʩ!4.sGO0b/nΏf2*3Oxa~уyͣ5ޟIFZ!b,aġ蔋=C7E3'px $/+m&yXǕ,ʨN7]I}!M$t{I7Z]GHgH{I8=xUW>SwsfnhT\أ8O3>눱]tqWAsX--K4ʗ1>b}*T\@yc̨g]ҨߏՌ|:g\چz9;ZqfiJ}4b$)@pNHW ϐUDCc1R;"ǿdhzYIlUmrd+-k&)C-616㨈uu; CZ[|VRFls=zP{Sot>0h8)O`^- j@_/@,Ru/T%"Xjyۈr.rg4#uCƼ G^}gy|nVf( \k7hy$HC^qT$e#AKvKa+ҠtDP+y|-rP]W  ım"iުf.͗2"GykU[ DCAʩ/¬?D8kn\@h1z"~)7Ͳwus8m'o%*肶Biɒ$6Z3"Bs{1Q?Uc (s|=>(C@DzT? +vPZ[F1\FxѶ6[Qdk;7Uh /&c5~PBsy(fyL }f9920(7j `KBS*CZ&`aV.1-_|( چz+k;FTNcpu3}X֜1ñ#h1e0E3-EněB8/4 #׭׹h5ގgOX?[\0FnQ:Đ8'_r(߷ 䟡y:V6V͐YC!xo[) c{yS\m^Aϛx¾OUL;=VIKvj{A4=oeMY(G5N1詇ֽ2gf2zIX՛9W ϒKZz(rrgzp1!FQR[̗f?Ӿ^;dj'ձɎ'V*}9Y{c[fβ#Z JWξ4C׊juβ 4X~x){Dl"ʀ*HmFgu|.~{Ҏ"7bS|!Բ-Irgi Q]cH=tI+> ~rtJi̪1J/֙׭Y\K +w)I[sX$_Β'_{p(%`/],bB.C hTT{|2'+lKf(`^]` G2Z٪X~; D}˸\" +j5c`93%Pxy0Cލ>rdKp , ]WWKl=*E /T@Q{cXpWn~}ުOJA@Fʄ'= +s|U9!'J$\rzC31l^,U*[LOߦaX_wjy R1 lyVDѾ:R wJ3Wiv. ׳ПNsGEZ5M`f(HJ"߭[ԶI`z~@f4--mPM{ 0GVWu(N-{wYXU1,!RNZdZ`/gA ԖNTr&~JjaD/2Prh%tOZ'/q/b'J vyhcL`_2Yw!TZMȩ~p*5c? #L]3]68)d,~} _OKĘ@$)硇Po۝9;fG+>Ep(LjtyGUT9%/ eHJpQw⿏~9h-79$rw[Ldt[60^U3ƢEmnh$+D}%;taavE­/W\/qQ)/M9q˩)J)ʄAf,U/po˳N-лS>o +, O ]~$X! VCDzz5mDC–VxvM`Ax0^&Jnj#Ey:{Lgu*J5}Z:$aMyWRl7!Q&ʜ֏Q$8wN8ʷ^y|V#V<=~ Ծ5Kiys~yVFWS^4CWo+ɖAɅ6 ?j#;SۯFc~c3G}1O>'5ѭsp{k-W[MǰͲ@0NpsSMhۃ ed>~01W/T$VZ杷w顔"(|6pjVA^p1"]#ItF̙i|DN/wtJ,]0>N>- OF׍%+8U8HۀѼ KLx3$. ƈ]sę\MDy3%3aXݦ& 2;˯DֽF4~ptZ LޢH#57{ ɖCjD̕åQ)-,puEP+725 +~ʶ;[h%fw@=ռmuȮ0NY.S98UFyΓM% ` zdsG-Ïs.>UVW܊>5A->5G *@lXk0 +7 tC0L1f_VE}c $.83:cB(VWSy&j3)y/!*^ +J0"ِq#*G~S8*;K1%b/F?)ǤA"(q1$jÖ/_  Igƻoݶ Sn3ݸ^` 9ds(:FቖbP Mj\ɐ NT5:q=R*wq,)D"]9DLE Ad *:]2w(LDw 7Gb; D)dԄvRezNd*&gvz[0Ju.ovQu{oCS܆[HG ~dMx>?~0uϑmusM>>Z#Q׺(; C-'Aj]H| (witte$C߱ F@Gl,Enc\À":#J|=m 1Б#qg5xᕥ '`\ͽx Y팈^_Iur>U9Y&.蹰D +BD߅Q{xE9$,\zpK +JlуUcQH5\o1<¯m0DxJ.ꉫgF阉8mSƇBpQ[6'#N afˎ^ܠ_)tulE_`7mcn+~=<ܤH1*6[ƏٟO5R'YڣI"xUf%d۫CGW:m.{#;~[EKjG1GxKE^UvlVW4B&6bGZ%" +5 [Wh@NHв@ܓUX1NB&sVh"R\$BW8M*rDWƑrچC+5`<7IqA$T?|i—5_ݚA{ڒ4mҌ&a O+}I'áEC~PVAQ]hbfҐn +$A0E4"x7H [- T8 )p,y}qM pGk +Ǟ(}bZjRO,YPYj#Rޤbݟ(W3mcá&M[2D!d5~9߽J;z䕥m`2[G@ { +b]~d[ַMUQUI +5n=?<+H*'ueM`V|`a*+LaF繇83`q+>Wrip(֫v6{z0,Y3:R _ 2ÇQ{v8v9/i"{z r%8Pc1Tqnm;s&u2aq7/J>)\X\bYFC6mf3p#"$qqK-YpLI锄~@x\KtG|v8xWylH9 B[%u]̀Q|EI/d[jN #-j5QI]$ºx8 2_%!  &{ Ց브n&#-q'-:v҇dh2Dzg)` 4s%a!}u[)6$vk7S~&qVkDiQ[Lɐs w.>xnhXo Wt"vP;arn~Y=.qU7 `';uo?! /@^t>YCH+LII\#ɲfA0lsyw큋u#jF,*y2"FT;73DG@YV S= [؋qt&H?)۠"/<DxG(SG jWYםEXm$^Xځ1Bi5(־Ԋa]2L+F#5ߗ"Knx$n;nZiseІÖm$nk+FijLV'fg+Y؛dxmu"]̏&q 6?ʋi&5OZ2W PRK +{PػOe!V/)|d!Cy§-Wz 6y m.᤿&Wl!W2sCty,S8EGbZS*£t{P1狇%w"s* $phWnp[m^;pYty 7F-;˩u*Fѹb1A0ZFn]Eg|.s7URNE|R B]Zʳx :&FtxNI?Q*RU{x;Jy#ăB1n1\tUކ_-.TT% n#r&ń1Y^ЬrD=Ȁ+/l2WwzVsp?T`dE("{iP:*jUZicO,a-Nܥ"0GA-]o}FڇOԍa_\z٩\]޾@|;$YĪ~>>pÈZA+jF<)ـ(-e >S)>z=[]2j sb\*n X/S_::m&Zlp01\%e8,mm׌$&󻪖2H1X!ThJOo6h)0(u C|Z˅@;P xjBK(Ghoo3tKꀮsE!pόb;y:n |$'" +j9^͉<<;h ](JaZd~@wiZ}-= Ҵz_Pǣ6j6EMVW?;MCߦ)2=ex(Y~w&%;q˰r?M1:t"V,ޮXZOk~N{hP K1ly"Vl&[î}bUpZ:_BmdO3SbPXp.Ǫ!Rj#ymi46y9zׯ#jj4og⎝:#o3#!1 {-O%)XOևpYW?y7+u+ DxGbḪ~\,5TԞ 0>~8!H i'|y{?:,,mkDmR:o Gz*.brd1X2}a8J}*%x(屦QArsJO ƛ;_&\/t7! XUhJv3 <&B; S/ǘ]47_ +;.:u՜d7l)XLolKxrlᯒ'CCȮ",x#E<A>"؃O߁ѿf19׻w_=*ExGN{5:5JGnxQM8mm83~ȶ6-.{*-^b/󮋏goZXp6Y]`S%LP&x24\8ze2,邞L, Oʳx3Y\lu!k,b3 +Rzvq62j w {OJv2>ԫsXG:5=û7f(8.N yƟ}P: UO;8$%Fo "^m#sGb)ӒT8üŽ纏8^m_*񪴚\5W^$1?,6 EhHR p*&B7LOl3QC7;8?\! s$G0nOaH˯T%eלnWǎ`uQ&TPVH~)%]<EYܹOwJB~*[I ^[щ3~*39D~qKuXxDR&ZQAWv~ÔcUhO Tdw7ۄ"RoZPK)tjl7{@CF(V|{^h.P&m["0#LkN3'(^lqG5/;:Eɵ|2%R "EQ"TX @C<$=.`.5DLAI^"˟خk7k; m3}̲+//O'.~+& ?mhmh@D[#Lpw*Iv'՗+Ix}栫v)yTD:g)LKL<>s&_@ dke4TknSPyK\X`Nk. #jc=&jg^#D~Y&:3IԦJbHYɥI7q@϶?r_kH]EO<JۼMYVC'݉Vd:ml1(wT +2eb)F]bҧ2!bP|-ݳvDXD5@*HȥctRdvj v>Pc10NfEp4οQI>6$ս% +]ENvn%%6SFd{kDUQ?OU@t!Z/3%=TÞ-%lQ Rcz[|q=̗HI]F2Sc3vmP/8r*g-*!Ftjo 0w ËR^iG0+Ww`ÜaO׍)=E/4}+$,l+%_Q`/P3GhSb:s- WY)f&lP~C.7TtQL}ᐥ,Xh{-%`>Z$8\Q5)X8&Ppї ŚyPȷ?fFPΈ*7x00ճq2cE {..N6'cH?p0eWsԸh-Ƣ '1KF2QjiJ9$Rzاջa_l% +m!Ʌ|+uS,uϮ{e=_E#E \wQO-жɣL0 +9{qp&("xߚ;|e6= \kj+6\3?S cMAPrQI*stb+dc|YC&m =XJM_1[j([U`G]dY4AGBw!"%W#89gL@L2R|٨n}VOF~Koxjyeo5G".#`C t6'dM~YPdDV;.BDOYKnx;GR15Ep A]Ӹ6}e V}+/TW݇3; '?R}A +8ZSM;7:x 꽯鵜NȚ͡ {N_i;J^@p~KEZ&ej׶Y?ϗ84i&_ȁC7~AQՍ%(;wgRD-bO+4n8v11Iep׿Cw,^ Q$ d!(! W3eWpۀ)QQU'Bg,VF{o)bS:R/a=Ds[Ϡv#ո!qa?*aR$vaR/6m{'ZɑV'[=^IBkjb`*jtEx|oEt"8Im$}-q쵣 +L8r{e%Zh/=GkJh(4vps@\Ͳ&T+W=Y?Obn;bٿ=\f] W6Ks0WUq=)s GW-RYqt-:{ty|H1IWʼn?Qj PE[>+jn|n]8Bb<ea+shnPrŝ@xdm0㙕xH̃z9ՑSǥ>.Mg,ѢPQFpA?z9ɝ7#@7r'gM-E [>X!f'hf%h66)fz_υ&4#*#߀3qpxk| <瞪cլML'0L.CMOZp`>!vl2Gz[:D; +l?ӻ8~"^/ i~6QNl\vO蝦{ПLvpy-V(1&u/=7[^|4V}xyXOٹI%R9Fa kfXq tJ -{uRF2YEj8ݨ,rCK(4uim({~'Z!#NI@iR@ʞq/T+akb6dWcj='h!۸| !/o|q^֔-W/(E̶KAV:( + Z y)}:ӢlE]i lp(s{{hTG`o~cl.A=|p=mNx/ڂ)`PZ1wϯ1 y%EpV7 z~ &:7ļ0u $۞v +9$Sm,n@UVdꍓGCk8;'Pv 6&c{n+OߥLWk!?~&"+$9\6l;TV}IMQ@-CrOC=>vq*SUD֘LjԺq,88AގLҾ + 'G^N!JSHIG7A52 >gd ,zGQȄS%Bpțf\.a{ze' |~q(j.-} AO䡬L( + Z\# @H^6귟Z)G4A.>XГX-ɀHs-#if?Pᖧbq}q#Vy؛|:T@q*u|+<%zfoK@G_`[p2I X=CJm/Y0sڣFUpr߹b}KzWxFԞ$aLT.ϘN%1XJ?6V*E߆Ԣm0{ 7"Đ-W7V "JI5^3'v(&Ҵé6gu2eS}KOoR/D Me(W'ҢL[^x='S@ +ޚUّ(@]åVmu/ї::yPIT #k"V.\(VeY"hF[M%Ҙ2Ob {U, |Ε đd˪/qZ2Πt .η$$DifY4Fs1WC`bxݵ ;7gpt%kaV_(A|Q6h.g 2/zּMqlm20ӷ= ҒߐMCmg[ +&ڑۺ e5i +wR wv{쵵2i-'s~GMo58>+##Oɧ,sW*DPF_#5Ɔr f!VSP^'{姰IK-e;0\C@֟ q , Vz4RXa?D@ y6Hk=ˢ(v畣qK^C^j|*; BTFe=n6P)dkHF\j؃LBXE+3</>?9ݰhKX*@u2O/ǻbilHvx+ٴ:QФ,=\MM"+^sO|Xp8(6SDX{p]yw/hۊؾs3 +O+=nM;1CBɤbV*!o^^Ldgh3/N~5FҪel yčq c1#aO=/uS'U-JѕPh4IRƍz[aQ}YOLG]+x[`z>H4HV-мf0tZʡ2|8ff}Zh7=qE7lY;%1U,ЏUɾPqb+ҚuI\¸t^$ul7ՍJ"&:y4ʳynH+U@Œ_.?Īfu;9&μ4ݙXmOT#ԗ{;g SOd7 d\E6Y`u)^~&N]]jm|dK{43z7.,yX| +endstream endobj 95 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 32/Tabs/S/Type/Page>> endobj 96 0 obj <>stream +HWۊz'UCC_5f",$[>yKw$c!:322.8=O߾y݇7vo~8wt8. ^OoILRM?Or ٩vz~=Qc?+><^?=nz>?Vcirb.@1گ +NYvjoM^#鰓{r|_x-w1OaE`2^Lz{,;);_]tL ҺtP>ƻ}Zze5=sªq XпCqiB=8Z4W9d?rzHfc @6'S6srP-|o QErٰ+Xz/E|e:)txZyP 4of%b*8a*V#R<sp0$,,VD^.ca5$ģC! +zoDF@G&-W@+A RyJ,5):~Tz'L.#G' +C+CޖJ)Es|vѮS4gE̹R T1 +:/<(P*OͺJAf dWV$P%Dk˹6^O'(`"5wes%,A-F?,3$/@~PMICn`iИAֽIRB&/f#ȳ'arX5UΊD 08I9Xu1ӟO߽py<;t0 +G7ںͮMT7rF .iSG`s|)mNN!3MQ$x`'"hR0 l? kc-b4;;bFέT]Q +X3L͜cS1|Qx!xÍ%Rs{XS 7X!r^22P2'B,V~x:XHC@yB d%6;H:BBAvK',חv L9<[Y1Cm+hv98ף T4#l{2SxWHY⠅F«+P:"ϴ5yaPZ pA] +jg_6V5퍩tlI&f\k(Imv3Ol/ :\/ Lxw%qY2b]4ڵ^X$P~+.x6n%a 4Q&l}..:C1F HX3G-ob<1".PX&ZSOhmvY~nE93)SiGWh&1RBj6 m%v#ԖA2u Dn&-.YdA(GE5 ;'VMQّ& +JTJ*(ݍlmE29I6t̂R\"zu;q-)7 ^vf0(%j~KogjR8P^a)u3z_l"vDCD5y i8 8ʍ&ejb>̒"je]vYEj;^;oѕ@>!Mu#^Oakɩ[nAyrJƺQhG6cućӌޓ|qy V>G.c-jQ\;UQNw8c M4רe[[ |-t@ ++8^}@85]zRGe8 D[̂tѩVtzl86(ݬ>yYTJ.cɕ pF1ɣiel!A"~5lQ3zM@vV뗮B 4iOɴgry+3Tm%֪]G]!UoMfΆ +]ݭ֐Mdz!qBÕScpvo*˄cV)R +}wb}0sILRM?O;RO;%R@nu O𳯻:r +Q [|=H~/T?tH Rwwf{}DOAsXmɾtaf)*т$:I?ң4MٯT*[C\D ]cUL1W[CxDbmT#!T^kO] v=-J!2#3wk+Dl!"L] RTLY=uI lB\vC\6`Ԣ^amyڡA~0@Ì(Ėk̕Zz~V!wf)g-/=h4| +9b†׶j|&;U)PErAw?勉cKq,eprVQqmj*#fEZQuaCF8nF$jU^4ћ][,]]3y!Oep"~G yD<;S/tƅKt\.KY4ϭlsIlaSe25~^2k9-JЩ}OqII7Q̴p$}_;eT9kr3T *XSz_]E41I݋TWIiFY_'8ZOp]jPJLG̶`$4;`YU^׏z ѫEQ4Y 00P'i~YHI)ز8]8%5%Z|!ļ~Y~fiVngθXnzE"dcλ8ǰ)E f2%R+Y7s#5e]3xD/!9 +s+0O̍GBf@¦L3-ڡDn8'pӽf,YMY^3 p6a]+]A$@YRWP|i+B'q<}FI6Om) 0ZhhNjUE6 +z(]E(%)5)_jCvR2u)Y\X/JJ112ZAl,1/[cvͶ5cK۶sKAyd+d./3γ2o_lrs$aZZ%lZj'<2a@AD%!R#$-hP<\}3c LSm6:ߛ9+,bVaR-vGpu=|k4A\  @pvY ώ pDo^u l\|1Xhʸ~5haL՘9eK̈́њr˕Y~yYhDR?gDE{|no׶?o_̝_^ηK<-i"V`4)x3k&i|>_uO+k{ +endstream endobj 97 0 obj <>stream +JFIFaKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Ka +  k!1A"Qa2q#B$345RtSTUb6Crs +%&'()*789:DEFGHIJVWXYZcdefghijuvwxyz?0^W,Pzs`YYn +0>4NDOGˇ!ώˏoX;ctVɵ+ t 0POZ) {"|<J+g=-[1rЌ*t :g+?zA)]( Q ~.UY-Ըtae;R>1}xlF1 +}I=, A#=DM_ lS׉ >_b؛#KtFHr)PXAf +91ҍr|L"uӞEF,t('@ *eWeB;Bl%rWlY}ո%mBűze;SD.e9^3)*%:a""cȯ + OOڷ(e;A oQv Q#џFM[(%DF@-aMA +NčzͧvEZf!Tl6OԝLŀ}W,ʳRCts ,E)aWK*-<}E^ZXNSXXj~.kz#g33* cmܓ3"bLZ:Us~UUE/V+j3*؝3=k'*Ρj,VK _1[WL@:#ccR"" 7Q\khf*,а)sZlޝ]u4zVWTYX + 2~ndWsݕm0ǹZ {=Dkx{IߕszEᄯQUKYbz(Pm緃1Pjod3V֪*|˽r:{H~]+ +z}O=;ͽ}deI׬[hdK &>]Wmzv䮕 ~QɟM5ʆ=AUP#%M?̺!)[e`r-x$Σ3!QllcYKhm_EYNG%Λޘ\R~cĕ?aL=KG\܌:k:ڛr =N5h;1Q}"Q[u/jz=LG ϱߴq,kjFn;(tޥS5E^Y JW9|ͮ;^:{~2ެ{W_1skϼO6SeUKgG@VL;ͯ?ϓ?(Sr;eWqŨT&h0!7bc:QU}o wflψ.ftj-)un*NoXv{͞j9?eaQkZ (7= V&>/Vn  5f`]6z12÷tz,J%=`}#Wuu=KSHM62%S؂6tFi zLӘ5~6RW:(Oc<:\YzKBM2icz9y86ENc "[jZC {{DsmIE7Vһ9ҝi?[n~-ZʩXG{m@vyIh䎛QgMaz ]兜ܲ +;$)'3v%Qi-Z!,7du zUv˲6ٴttA㼆?LW[6=^ƹSv{K}srMbXz;Z:6ԅ#ptw*9={+c>b\ I_=gӲ8Yg+}裲 bf*IE$썝qQdv[1yhm5w{@vI Kq?/+F&;h^@zo'3r3ۥ)Ųul])@bxfDD?P^n;  >VFW:9)5XH*Q7B$ҹ +] #o'!12PZ + U!OܶAA[,5uYS/=ZoC \Pk H'd$$TP-# fG.! +͛Aؓ&Uڜ̌yPι{e-z.8h֥Z'WK3nSk[F~L͋џwaվ]#CȻK>Nm Eu$iG{}7ұŠi+@ ;#n'[r;zAQ,YMaH73ɷ'#k AXP#M4nG~W4kձ \9rI;t|9,NejQŕ=>K[_c=[l +ƈSŽQv5櫪S̠ut]676 $O?—ɰ"}.E7~&Yb-E@Uvl;5z*/\9ٛ^8J> z YltE@~P~[W\T/"k`ñw oѬQżScXv@;|dkֈ hn]ώjNïV=[]jJ4%uծ-MW5029Oc߸>+sZUeiZ*c*/\q}\ʀs}l:LCٓuY]YZ؝X\`A#hE`~&97Yc\z@~[Af}yi%qW+}L}?xS^S~JU{laGx qr,<,k ZP' ޸מ^ǻveJʭ]]ܷqirVSUB۰r%_ 85.](^|zH㢼L>@cE["%rG؞sU%ٗf:zǾH:?a=W\D=Ƌ@OH n`fթE,IϿF)s{+s. +"GcZzgD=;'/ W`ʀ)UP:[Zұ{Tb9Ÿ0`#q_cPW 2nMط*lua+!+`{k^'Q6ڲR]ԭe?>H/NV.F=99EM }4;>\3ڛ[*KP8U[T+#G? *fљ]ξ7+ҕ){7þLgr2nOR)#k;GWJɵF5,[~S8vu}(WgN4Z}U cayw׶e:-iU@v )C*ږ|I,kXcT֫e?PtY){ZƩt&<+~r}u2ctͿ,d9qYT8Uo#)s={e.*P`q}Z{;5TPv9 +6:ۿm_bU{EݠT<}MXI:X`6ԉfֶ}lbOaMcY 2%Xlk`={̌Qr+R2W) }A߾C궶FWN`cpoPʜm_0 ̰عeVsVdLW~=2y53;PlKܛ+}" 奬GbOz MU~h_zAAbRhO=w ~qxHkl@PR3*5[0[=V%Ȧ) 7`hO4;4r6%$5r20O/[cHGx:?qg +o#!v,`|G`}{Ne| +XyPq' >~fNfC⭊nE +|6_0^zJZ_(`tA>?FJՙ]-R){>[=._OmogQ( xU$x1Kd"_&n 7'ͅ񺁰Q`s[qp6 +#`w,Zf $̋ql# !  ;O<:SXp `&FK\\>ϴt́g?Wֿj<|Ya;WU` wVP@:, >}DGXu,1A9⤀ܛ+,7 +j8Aw;pǾy}.W-ޤ`6̤yo:y:!2V`6#ϙ4 ڲ̡QaMO^vy9 "myqz&?JRĦhZ*⌟zqַ};LU;:۷T|İđMpXm2z}GrnDnc e_VOq`}&j-̊邹}I͠?.>/Ko.׋md ֹ/q>Uϡl`mT P):%gQ`%vC 鋨xXO:nӭL>-ߟIm]fk[9`:w@˧ +hv=E< u XgbرzkShbve銖0w<O&fmo/^[_ Ð򾦸ro~՝s +z3ػE}jCtj2uԪ ૸@| =\LWLÇȯDp8޽IY}WZn%XC{Hw +zGM(@PXd$P_o/𣒏Y ) 7/cgy7/`2%*3(雈=w:>hI#cؑG="We9t̺_r|AWClUpIKYPvG1=uWk1 a5Q|Arf_6 #;ktֽBjM~nv>5zdX;׫}0,hx.+:Ɨ ʰXyRDDֱuuWz#bP(b뷉mo]¦k%Ur +4;yL:x.=BokDoN8[+Qֽ} -)T݉ +91sǓpZU%ԝmt/սy[NW_7m~z CH1O}?vwp˧ y(@uJ-ee l~O9 [t :Qw2uz&8f*RG-}F`&klUBaސٮ<{.z>X.)[w :2Ql+U 2DD@0fU{n(Yala<ʷ2+bdQ[;{uoڿ":5O.W=t c뗖:feFeA!1NoxX\h}rrkí | pz~d%lsrX:^(pvDS`ߚ\z:&[a3faWGJFqE`6d*\Q]6tBX7ߺ$5eCCl/Vz!wdon昗ǦYehXo!Cl#ShmGR|\“nsU5{*K1>l>F`6Z)ꡀcXnq?)'G^̦TZ%jMg;] {H <[Ixʵ%QPO0${>>zrOOa̯PǶx&O-9T90FCX}*3'ӱB" +s[?QNXrb>v&ܾ%9˙ad;"-1Aij{yёF 7eEqtmvW۸U {E}V\cԚ ⨊7`@?]HW-z;jV_2V嚫Z֭IWWDZ G}v9Jh"u+]$2}5Χr|) @$)Wn'[󩃢gc~SzR[ۊP{l~+VއZ ɯ +6{& +ԥɗmʪ[k+;K'PRǬoeBA>2Hh#"Fy6P(}6޼HoA8շOɵ^AN"KrZ0 X:*IܝЮa6 6U"7|<~4>]$M?Ҭk{w!t/ 5Ȧu58 +À׸vDq+h3á*Y6 _m8XW zEءҏɮΙHo)[:7;tASZuNA5n,q}́OF~gjLQ@-6VRAܴe>e'6(8SXO_1-fnNB̾~}( xI%jInXXWp@T~eWo]ahŬ',R TT_u̡j`z*H+q2קs\:TEhՕi$}~5V}jBvT܊ v>=Zu陖-Oބ|Ր ~`4eL˝J~Ct}>~ $o~8jmg"l7[fj_rJG6 Ên|Eˌ)f-ZW Dh}KJ6]Cn*utt`D/RJSZLoU @<~dwPl2-9` *$'|ѺW:wඇk}?%#JQu<8:;̠=> +zvX$"zv/#`Xl{zʱYU! q Kblqq陶⽷'+5Vyh{k( %*RYٵh BbwTg9A[A_ͭ ~/SzAM>`沙/uFKHyk[i[:wRBmܾRj~?ۯ-y߹ >Fug?*]k鑢0.rrY Ӫ -v?r??ܻk8p jvkrY +~x-HEW|l"ͱAnw'uSY/تt3Kޕj:նK*LuV ;-Yx֥]YX20!|ilYS6~F/_~XQǔ=} Tjٌ8nVnLٙ9cBclB^d}0bHc}q)îAȨf-`vXDD@<1`gs稉V  螧P׉|7Czb'P@=߸b| 0 P ?y-5w'w`(RH>DDDo>υA >ρ@$6u47wb"%vgJ.c!ֶkhAmUO7QٍnXN9]#Pqs2ʛ\黀w| ol;O+N5jr*@e`_)߃%&IMcJhL0Ev۶b4v{0#|3RӜ%5dҖ7KeIOSv]7~v16lG1p_]vDyGtuÒFFWO6קˏz$( ;ܸ{zq}_I=n>|9k[X6ǿgQ11~ֺMJz>URv }@'.:=,/)=W֬U蓳#3Ǫ㱽o[x{Vr ll0#7zFy~,TH7~ cg}z{SF8Ul^RzUm\R9[Cd@q"ݑ^ 9#G ':my.^d*U +.R66~VFF: u4>)wW\\oNҳγMp[]i66گNo{'vŖZll=[SD𖭛 +AG> +@;"ޥu֌gR[8yu>7&GE/t܅ʴ +^Q+(mv#r=cR=*F Uf +mm{JnG̘VLdV;7),y{(_0Hb{޴6܅FfC~cTC0]m~KuD+O]Ɣȗ]6r1Y%oYJRU*\w:?t-ã-k-Qeuv=Ĉ, "1u +]ҟXeJ2 ڋyk[`TN\x>~}2Ž? M` NoGO`UCOoxZ>jzpNNJzXB7 O̩虩xĖ +-{ؑK ޛv/ݏeDR]w^.UG#cQ/ +{Zoۡ(xVo~Hs(& i> "6l:gVc[]WK**{{їI= u\|6:\v񿖍`F\uA*UH +m +u˵;RH榳*b.>#SQ8X>S3b +ANGHgUj>,ɦneq#D>H:v%}vިr/&Q() wГjar6[5Gb{{ʼ|UŲ95y9[XkkpKqm1`fKmLt_B4#ϓ7)j!u/r5K]l +wm1+[#cߗh%X'0,d%ϴuL{2.V]};ֽMz#S}]iU:E J + p`v]Jdb9]rv\ЯͦG$E dv#_3y2ǤQEPJaU}:'8Y[v4øV^+m`ոr;V!w~6{LjmYJ>#DM;qk^`|إe%yL?Ss*WzoJG@BR+RܛiQeY1fZziUIcH\v߸vqOזwo䀘DDö̦&kVVB{)I_aږ( b'y]Ym^u.Ykjɉ'MycNXEK EOB:,An46U"2"+X +v6~5%DDDDDDDDDDDDDDDDDDDDDD0UY `N.=ur<.wG$5ɶQ[ +}i9M|x8kXTNzسػtKw3/FG}e-}OcJ#Zwaba=U貕 ($e{'\ZRq8塮WRA*2F|^&,^x~÷yxxmʪU{5(#D('K::F'KjRPr=cbaWeT҈.~V,4I5V +C#2k_;}\^&lm݇"xðЙq˭C#OpA t14>|LaiCmk_2k@ I9[U` 4 ~4TЀBetR1jzx<׷VRr -v6N$aR$`vot<*2ZPsM|~v}ܾhp ) n$r_lOmұ5)` O@Ʊl^qP[]x"竺E޳ԥ-v fͿ`QZehȥJ(* +mv"AؽH&PA 06[ieRxZ״W5ȤSgd:\tsI.b& 챃E2;BQKװQ̕Ym#=DDr:V5%?I_<&Uxޝ;s {J&צj60R~bK%ꔋ2uٶvQ>ULY[䬍Gh2tDH˜bXv>LDWk,&6{IX=t뱵=O>W365<8 >"bȱꭚI ˎ}Jg72PD`A ﴑ:¶tORٸ/ *].ǀNА#")\C漸P'w͖ +؀6t?|9ycPwb&y(>H2 +f; vXRs}ɯsuE߻""%vW9yXoQGV[9p>Kk5!Ϗ.;z޾b""F9 mJV#hL}'Zç2*`\}hbM#Ԩ]U |GөGN +Wt*] +݀?1>>|K΋iL|e7$Rձ&1~ROYs24d+dy.< +gw6ܧٯ#73Uԛun$;q]GTz}TdZl) +I>V\+/q|Vr `dzaҲ3st#s- +& +їcZ:-߶ȘzwTA _!.#Cn@}f:rr(\P]jVب .A K>KĕGq׾2HPXA 1q0Yu D8gȀ7k;&ަ9Vuqb>_dolٗ_?P༑#1JF٘$֝ϩK+y* ߧ^L͍,P2-%YnkI h1~Ye^2+(x6*tGf(s.aT?uESmzz z; zLʻ\3hho:Y-WSn? 䪇6ύwx鷚/jve =m+7WŠ7 7h޵Ю]C3.{j5 +9)7->?(B溥z{t[NmttǦ1L+Wo6 R@e8*K٠΁΁ܳN{ .ʒ+`+X"[zvܩ˿ <+qQ1c6_ZhG<*]ea]NMιr`PfC]+3_l72~'*ձ,k@y̽mqT&ʂ#؏a0zR5z"1sЫg_˿e5d|V˹igTF +88^nVGX>nuʴY[I1#(oߴoLcΜrkf`*2^dYNmrN?/s oCz*:~GYF+-k;`ޥSem;!yh2: rUOp~a>>=?+#;{V1XܟK%GU̾zuc.{ӘU ,i^C}NޕM~>Iɭ +!I>ĕNv6OM _ q:}m}.VF^_PlXRצoRKXvX{uNqJ?R;^u?.^@윔Ht㷐H=>H-lحʐ(mw>ңPL Q^OVT~qJ+Z1TccrŗǒDf[Sg' CXH@K0fU/ZZR. FTqŒ~ G1W k6MnDֻ3`^QǽTr]TW 6:#c?]um2Wʅ*p(PN@?y .-暮( y=~FZXB;㷓}_/UJrMmn:ub$>Dq: +rv"٭{7*&I$xq~|T\ecqnA=]o].GZ/MVT]ζ䭶RWaN;-B_^׹14⵹VX b9`b[m즦ޚ l=TeꨩU 1QNjJv'qSi֮LUmuޏb$}o].M|Co^>|5ޫl +i|*iGa:D,*P>^tA~.E[:QهZz˅95JUUH҂4^{2#rʳ3"mGRԏ}=/UjZm69kͭ|Nk=/7ORXbza-eOQvyt/HмJW.\ u=wC'{UEU_![#~uEYIbGoi#/ |kQˊcOww1c/[rdY$mΓn*5|蘩[}l&KtUi*jC#0f@,2 6J_C2G& \3}OFNƭqOЉ""$|<:(lP̤9/b?H"xեKOrg\jK`XpD1d1k +)v?Gs*$%ILkOٔ#Xg$+6Ք_ I#F@.=SY'PBD$DLwޘXUT1:I>jފv6 ^Z6Wa47}('_Yl~O,@~,\ɑ>a2-3TXRA܋2VŘ@+G:=DDDDDHx=VnE5`K#.;;$Ȉ>7 9#UV)j!ծ䬡Z y V1 la ~"a,F8}NI[WLK~ 7BVGFMK ;C v>.zUVW]ylȮazӭfNû"͍]e uμj)|ɫ*18Z}΁p|x]s d]Ww,JknT?Cm6 +@A7T]QP+7"pk%C7@i>'dd]fmEM;}$:#gOE/m(ɘ돑fӅEL6ߟߏpvԕѺ1=7kt +Z_O{Kn%wrScuDnh_O`JA538y .EwCYCQ]7 Cv=:^gQ8xgCwVWśUة8Vob-d xQÎh{na}^hхðnǿiO_vsh(dOMCT,0?W N㚞|Td`V ߧ2GOlSS-z@G.ı]Ātunњ/]·kHLӍË|rC{3~_VɣԨc2W9o;#ק6]uΜǽ7ꊘC KVȯ&!U_hWΈӃWΧz\~Ƈ1qaql6 vvsSo2\e}@W!YĸHm2~]9kl88{37Ys-ڮi%*5n=4u.I&%;`c%zuSԺT9eb(,q Cg۱ԭE̬$~"""""""""""""""""""""" 0Y2u,{O_= ܖXnK6X~zn~exg-rO:{wµہ~'yw6mAP8NvWPξʗ[ց/pG/_љGH_j:d^+ &pUNUɗ`ԣ#UNIu!uX:*v:܅' 􌞉q=ݬmfv;[CWM%_\C۸yS3V/ul*yaJG}3J9ޥ]@^ηz>WI[kYu|E1fݶEVÃr-ʔGg^㴕fTΡ%(~$+ҥ{i}ɊzMgWlU5\5o~fB:$7t|)[힛ln,Aǟ@$̮0=Z<<~h彡ʞ5ѺIKQ21[ȶZGcr j[uOC#]B*`XPs|2Q/kmEOVFb]v ܆w'H<[1n3l l'm2bnRZpnAjV筒Ǘo!zVGOȷ ӎM[|+:뿿[oa57!ڟQ́Am r,֋jnMjo"Hn&7GB0AMX1auن#z>]"o}sTuφֵPjJa`{_C3F\zm["~fn]Dkxo?!`E1~<'”WяGWaYn[cȶwnSŽ;7+&jSepΊ]2LlR[b-;[S3w]&EX%S8GPwzczVr |P!g_YGa[-nk]nD/50Zj.JI%-2JѝliIӰh+Vͺ?Z?r<$~Mndk+7Wʁy= a-Yp*>{}QibĀ4a2ҳ-u lJQmOZe!XrTj7:G두i /{rφi'2v)O~P? oL=>YH̀[H ]]JuǵmU2(ҳ'Aw{rM˒ +(r;DÓV`lzqlkZR+uޞKe l}GI85eWSᕃ)cbe؉˒s`?=DeP,$NŏNVN_N>gw]K&(`Ywly72ڴw`$I'nK:0e#`#=ĉoUå"dekJ'`wg~4'X2"yf z&|DO{ bN=f,[{{v>TrK`2: Y̕ج@`lf\?vSŖ*YI$I&x*QlGVFSfh!ukpJ+eK;o}NWN:XcX,E]Z ~fc+qקS9`f`  ^u\*صC%qV~6|iEvŮHx#dtm_ϒ,閇@Bj=XSaZ)a  +qJ}N[2-]]{t:e?_>*(yxv`&5{v=Φ-}{?)մRjh1oۼ߶FekCBugr|;iǾ=oOcJK +f +Bݷ&luz>A6e1]"/Uw'"ᒯOzŏQq_]w3ſx9B5e +% <6}y3ۏuYk+(`'l ux#zCɑnADp +ʖ~~+GF- Z]#q^=n ^tr`II?m]rXҩc6{J.ɏmur8p/qހOs>+VsM$b=±qoLwL&T±އMRH{kGmţ7sѲ˭/]8FiWhbm :n[yΎs')~ty6HׯvbOe3M꫞Rk ed\ՁUA%o!)J+fb"Tp;a>aVFyr-魊 +kݷ&ȾL"N%ڣ|8x%NtI*q? ^u.|C {$}Z@ rtj`[:G!13%nIoGR{LP6(ן?OiYUލ\Îc _ȁޥo^a[R#[[ ( @y2wItZUEWԺEQA _~r&{+"ޣ0/k(B\}'\|QCs*6(C\nĀ{}nfNfnZO5`1_o[*1ISwe~vZo'͉cKNM:SjÚ7Gy7/-c + g9g!%T  ^E7%f[SφnonʬX;0#]Fn%*eHzlyǞ}uXNj  'c@x7X{g[2yWhnkC۬c+VVz.K <}X|9GZzUIǴ}C?QZ=9Okw[']u{]:Ia_'l|{ƣݵ&SVk)6* +;h{FN>>EB_ 2E@x;k~7?c[uT;꯮\I &zxa.B^Ʃk*[_ +ZZ~mlジɕkF݉^;MQz `^ Sqzܣ o\«XoK\@lw?i%W _L]t R_=Z)!ub]ANc0>!δ`+z-ajG `^~'Z=1:~7Q1.sg;V佇w,&~XW2/pa~.WajAFOuuͿ"zC g l8:l }fWxWیUREeq~b>RGig{)pq+[.5|AbSI=/~S]=[gR-b$Ȉ0fKZcKk$oC~f~)m 1rV=~<.J{(Cϝy13.̭ +E$j.-k9[=߶.OI;%v٩4ms-z.c@s;mo1|G긡)`WuWVO󩃀~ZylgyVm.Q(dhC漢tԯq^M^xaٗ@ ȧ*NhbrG_SA:߹M*,Mv";`]pr8s.,7o:P kK`Z}{}9C=[lZmwz7Gvխ=B&a@+E$ w@|_oY[8uN>?P}@YE)m #"̬̏1Z#͈Ȗ` V ہB:v]L:U}..,CRenOF;/ӧ3U+0,BH6c3Oȥ1RYM'oQFa'"t6{c,X]IUmS +۾uBj)S4{gt +ޚ梾 ,#*s'#/65Ec|)'XcќWzet! =׍w#ged_^HTu?oeu\&tuOL<**}GH]> o~t;˾}KUcxZP`3[r'P\Q-J h b=ԶYM{^{H5WVJ1j8vSR*@A̲-f,Q[z5w(Jrj[=C^ʪ-&&_D&i7ӑ)kk?+;#F ׎jtJP פYkXxzuڃoWVm) kWĞ##Ir;oi"""ʸb@#cq=DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD9z]rc"B~nJJ(ҹegM!lĺTBN{dtԯ[UƮӰf}0r?xz*̯ lGtO\oE[[ŅکN#gη۸ ~Mg7?_^lrGI2T(c#!(d* Vaxaֲhl1fCdRl;IwJ쵕WX Ww $w;-2bۖ^$YQ m6':ZELQ\u#`lxܱ3?|EYVEр Ȋ@@o2OZ+RJ|߸߀u崣m35Rq;Rw_3kO«u6jUl/nxEʊBMaaq'@S.Q<ڪ^8:0)a` Aۃ._$0jw$H?]UEcت8TIcNd>$ŬK f-=l|w >_ƦʮUa]d:'L^ WZǾ9)x0:`JH_`gڧn6RS>؍3./^WEߢμEwڍ@lxQ!rF@ +M6bJ&kVcdf|1N2hVղ94LA7e:ןi/'!zNmjRk}7hG1ʛA*OnE+SD¿ z&uYu|Ԭ(dmwֈ'ucj^ GWj;Bx] v߮gQyO]6:)Uc(K 0`>zoW~hvU#9h`7y:!d_㙎7i5 +yP ԗvMX׷oǠݻivl͚j5mʛG{ N R +wSD!5AKQISa+]fΝձkd<5u< +#D3Jl|ޱe=/ Rxww*YU5VUz,aW ͋1.!`sXl.m~ƵYLt*)v!.Gnr9}g_]v+NM8$ >=U"Ժ3u na^;[g0E HK~`9e m΀ e 6uyb~{S`lS[b_<ɐOM.ziK(Q#W wSe86=mT.{t2R#;z0s3Ezw:zN'>ے"""""""""""""""""""""""""""""""""""" >Ri˶ TevR>{I84+ǡBZU""""""""""""""""""""""""""""""""""""""" >x` `A`a9-΢RʄGFuA vS22tAHuvޢypǷͯqwrORWRXrS%H؂$7:G߳Բ*>+꣢tV [vT~Rxm]~ў.Kj9x3j҂eu:~-v)Ĩ]W *""""""""""""""""""&P#PLK KQ/?@ 7tو݋'-ԅ;E] +=_q>IBZZ޷:""""""""""""""*>&XSħ*U$ W#~'zU=;Gj`r Lp簖%°FP'DDDDDDDDDDDDDDDDDDDH8,Uk]msrcl䫬40R) vf˵fp*}Y^A:6؈>i"CY?x1?$ȉɎ:3DDO,;"""""""""`\,VǾf>HETG4XĦ_x܇\~.?t^'!?]?׉OC.DL_zt?ˏx܇\~.?t^'!?]?׉ȯwN:qez.r삍XnI!bgqSh{楼{jMsA4Xhxm؃+r_دbz'kQO_XͮGֿ?]:_uLF/mUw3F`eUߌ;qW~~2*B__?Q8 +Is, Ⱦ;g/Zov4_XͮGֿ?]:?9q׷z#K:V. w'\PgXjסVuj2Oֿ?]:W]b6u>kΡe(1jfXtDeUߌ;qW~~2*B__?Q8 +baV 겨P9ӦN{ /̵46S]b6uZmw=^u>6QCc{l|CXR6[԰QbB@F7[|*z߃jp6MvjR_؜GvN_j;W'/wQڻ %Qi 1 +tywߍIڈݫ_؜GvN_j;W'/wR| /ū!]@e)[>ѠlԾ<?8Ϣ5Oo~һ(7Pkc5h=,>{yˁe?ùˏÿk?ÿk?e?C˟>mj;sw&} wԭE޻^⤃?ڿ9ݫ_؜GvN_j;W'/wRsr)WTq }w׏ڻ]T~jvjcefQ!hN;Io3v8t1u+67K57,ӭpGY2F?ǦH($n01oUcK}xv5LW)Y-%*?; U=בu-F5ROh>n FK"6 YO~N#-eV@:nD;q[Fu\J+%kG1$6'gGCznTޮHZ; ;md s]5(Dl!H.Gs@]ϟUVVGPΤJ)b]1$DmkraApF{8и@X9 =N_']65&fDB{g/LŻ%+UVX@B)b?4J?ưlu$- +'uSZƏD|GkCZi"'L߈8Yvc! UIQ>gdEP<j>N-#IUj>L0Rmm/#:״z21EL iv~vL:E8r-tbwܙv`l(;'Ľ#a;걵OR3~@P%a,Ê8eU߲rxb%'X7>^/QP,B 'm÷//$j+NZN=?_-b""R;ۨ'RĵюheСn`,0?%)QOQPu{]6bA[LlTx:o&zu=+jV@}=2TDDDDDDDD<#Ҩ\|d ZNKܓ%DDJ6׻x xĀ~be3!Y@ݎϒu%HKMLW/͕AV ޝR".%!R=5Ұ} q*Ք:#GDw1 +f=xjAbl$DDDDDDDDH}?9kW58t,6UC$DDDDJoW'DDDDD}#u/[6y35_#ܢ:.eO]\&v#:ߎקmǥϖ{AdUwS|M'PɊ2fn=OK6XH2"""""""""""""*:Ž+Z)Z`1%I !=?L=?LփЬߡ-?I?㞍f=ʹ[&| ~Yu\~ 5z»mJ7AWDDDl+nz.=DDDDDDDDDDDDDDD-cl@s֭o,DDD.;׍0^x9U('q` DDDDDDDDDDDDDDDD4 ,ZP{nXSԲ*<(u.T[phZ'z_V .W`~,r~nP o9Rahy#cCVMW-6Xb_Sj-{w|UEXw[p0PG'^Ho`m}L>!gһԲj)K/*;޵Yj&lFe$b; %ƫұept5x>V.f?L㍍`R@*7Y$@u+\\L;s9Z[6VAwq#T,ڜVۧepJ?=ԏ\,1B@ڟ"aH5Wӑ+{ B.yrm⮨:{slEEDK'~۟SfHxxKw4;ksuk}4Q gӑll50񺠥k:uctt{OU|Ik1Zl:c m 5D%lKޫҧ& ),8K=~=V^AMf޵y'nڕ[SֆjG:`ʝ~YELN5NgE^n8+nU hWfln(nZ>&2Az)#yM|EִN}%R޳1;vV { r}uw zp[\ + 2$lӱ쮋-mGbŵ|^=2w΂uf! X  ܓ-8/xqNC* `Cyj\wUo*VYC>URE}^3ĥ-V%APGp$NEIWF@jfjYX|m(.\{,%AAI F"\?ٍvn^f5h;^AR^u.Z^h[mg,HڃʼnRy1]M4v?j0?wR~ p,{>@n3zRܭZ~z!!UλM cEVMj9ҒJfJ2)mM^U<,趿H#|*˅texN<+ r#DGvOi'||lÊ3d'Gr?ckȟnyV=]kRcmZ7P|=HuKznP[OmX ZÔnu;NSvuҫ,Zl?6` x:>b޶۪РSD)#Nrb;o~D^eIuLC+eWY驑}wX*pԲ W` x>e6fe}Z*[']K|G=1JEX~>C 6(5~[p2WeeBwF9"jn;oJ1:uo(ýYť߉o':nNOVƶfpoFrWG6xaږVJjK-`s~}Vc]~-Կ? ĝ'u,\\3xzk"nh~*l21޶FJ{joGMldRm[@'Cue:]{ږˍm΢,.쵢P"|lB!ab]OJZiFP/e6PzYw\;V3V,K?t@~;+阘xWf*'wķ6@ֆMCw{Yx]AĦέs3ExV}v`DT*wa?b݅[3_6XO}v u5K%j̡O$܂ b|oΣ"(6enf*G==ĮLz1/*6,k?o~fwJ}?Vc6[? 9jIǿnZ'cO ,^ +U[rh-!-<8Z|1a{vlFj=&2=?!*(~EWIf%.BV=uQF,x!BF0ceLձq@(]۸*w 0 }njai.QX"bA4Fǻbb?_O8Fk*O~v]N]twM[ +(;`vw1mb*pV+^[# h}UzS=Y]9潮jߵ5_6FϸOH/2̜{[= iȪ[ hf#D>cT lj%<~` +;{v%=:bjI:'Že7)%w@:S$L6e%VI+uȟ?~W_nF5M |v +Z[Ev]IvՖ T6;&"%6Rͼ?__>z}"S]hp@$Cbޅ,Ee=`c||gZד*]irq d ϱ"ܫ([/rXك noQ0Z͂|s]ϑ:/Wfl~Eb nIǟĬilP)Zw״V 6&3mAEC|e ~3ĥYYaa-ji vURI޽D}8ّWc /Y!ė#Ye4X,n*HoaFi8x%xh JX!H W!ι:b_M_dRu|e'T#A<]AlUXS9cJu%G=O^ ]C Mpro}j <.uM4՝=䨈*޶} rh˪4(-Y`OӐdC7:Ub}GlETJs{hw,lV N@!ugM #(RĒv?Ii^UxT}V~d?ٌ1ȥW%Z[9@mI6^mʟ8~h[ZWbW}o^#VWT@<cݎ#^w؎]j-8A 6cZ$F ؔ#_Wg>9l-> vLdb'!ە_kmwWRtKA +1[.jV̊SQbz6;XZe:׀w'éN)1-.!7V} R:U>F^7+:uc_α]]Sɽ7;Vd,jw!uK6Xض>MKYr[[֣GgHYߏ'afc0)gY ߁fNʳtS+5:U]iyѓ:rYF^5]u5kNmgT'Ƿ}U%Kz]krRي.lnZ;jlQ 0]nEM23̌qZƲ)'߿Љ#et-5ҮDZ[켋w5dSMlz kݵGcX|au,КwVǾ|55L]'ՑE޿ĽԐX |~MX?>V N><&V[=9)618g!,q܂BA"N ]]* [dQmP?-]׃;3˶qƳFź90 L;{OeXtEsZdXJpkcըéՕΆbYM:Ĩ< h{=2L6}9Vce؁ζ}篏nh_~I#+&ܬƺ+UN$1fmVFu;xBmwr +W;OR:wO§!9UV׵-p@PG{8 UE46*_pTw; }zn~I`/wݴ5ct÷pl@!1{yJ(-**J]_?ArTXxUuۏmXu=orI^u 9RKJiz~!%\C( ^ț־[ +Μm>V*(>:mĴɯӾmkšhk{&-9JzeG"v:$Usd@M@ށvv;ii}S5e6ߙOSCS~[mNX0xb7[TPzy,΀yp:}U=m9X̧TD}xzz7Y{=_S,*V)D@G}I#? +zGO'-eGU[w;mS]䮢uӿl!-V*,H }ʬ:ajDտ>NYt1*b~%6]i|s}Lļ)Dy5_~ctΓpcR&*(4ʼ>9ArwMkaJF˳oyVRۺKc98^b +X'GMb\8dw2e6 zG[G{f3]xu;}1R!c;2WOX[mȷK2ڴC6-*[T_0qjrrir,1 y⎟^~oJ7En#\|kf+N\SD ?6{y;**:`Jv%l{Ya8YjQ\W!6~ 8ՊW;:ּMŀAFkSڞekŶ歶!MNďawWmI‰]e`t{TbϝfƯ̊VGTٵNu>l9k^P@zmrr蹙{t-V;TP75?U:0tlƫ1Rv'%7+J彨tкos˯?UoIE@Dru%驋_Ѱ:m 7>ꤱ׉RՉmn[>C̓6GӴӨ^fcjl,#bߝh>ZdevV侏 A?7>^Gz ;khK~0kzE61P@:""1Jd#VXAhIOS_$gZDzkbTk۷oi3nkkT#5v!#GNx>SZv.Xi,HϽ/Z>%B$(ߓܝL͗VmOMHe#`"b*1lr»e}}{dic (!A聿wCƶCW' +ڷjTjH::ܕ^ bI%vXI>I:F[5|;#iIR6|ύq_"Rk!R4@PtG^75k H=~ц͸)ZY!y3u~$mjA:gF T +tQUb@S_H1B]X1^RT_ى#Xx{*sjv5ouf$=\ǡXeɏ!>\\1xD߮ŭ$$wc$͇ZƵ /nݻe-Y( $'g=gtz*\ +e!X $z*mnjk2m:׿1бֱ*T3e|f$}&L8ᖾ^nB;$߱108KPI',{H$.y|;QRE6[c- >d^V#ʪv.Gd\ar`vH}vwPc[l` jd+&:Vbrv$V蘽mV΀S7rU#߉߇12j4n\9_Iǯ%oUb.x?X͉]:eݔc'}zNsepf{]߇lͅqu5VYuk'L8}WRuH֐1<v<'8R%eQnWVYlLWAŮje6F6 mξG ͊;7rtr(\jz`A:*Aȝ7bt +s$,`I;'Ll3|7ϳχm4>.e?O}o}嬁dfx;'<8ډkvhE 1 h} @ ;>}X[rw x塯m_C~\ԳDߖO}o[3[б/Bl]TޥQ<]%=M,uWްx~/JQBv͡uG$ Y!*A*<lVȯ++Ry +T(n  Ot,op3;f#;OX=I{i}K*?r?D͟WRp%?b}!LT(Ǜ7ϴ1l[>ǩGbrMۣ>/K ++֔k]Ï=wyRY,t(1g`I;'1?]O^ hb$9#g~ܗҕP;R4B'n'K +)mou}L4 r +rex#25}*ChBmft7ZU6XuV-zv;ccJQeA,J'-C$w'$w{yb޻Ǒ![Lw=cH1u\Rc@l30W e:; F H iw{, oKɉ _>t΃~ +rǩctFf| +z܁ / AzPY_j5`3VX _Dī1׋?7;_a{{b;{vwD|̼^eW 5+X@+o=URҡ _ӝ1ʨDZY̭$ؖwb,ēiECsRk'=p:LBa%ϩc'[$3þ=\L7F-nٙX$;㷉L[RV`՝+hF$.n݇iΓE~#El: ̅ރq#|/ӆ#`uC9cX{읟vFOHJ~AاZ;\ZT4KKI3DD@>zG̔W]q@2v*H#^X#!1kkl`Y&a=Azv;d/aIQ#bg v)Vjt;bb&lzd{CcFG2C;* }GѓF9t{ro:Jљ}LnU9 ջV6*p v[ތ1dVm1RU!lyq4lG=r˸Xv/ǀ4lٖ_S i^@z4Jeu "UKf䠞{'cKzoUm@A`Hz~*MliGRǫ%?-6KZ,s[X^At k3VeN5hH6߂=;wFnrog:1Vyu?)$h+ؑ6pS3͙m jg (Z*;ߙM[~f_Wlu"8@Om*qu] ْZ_[+**@_:m7itv=g6N77*Jvg@&j3ް$h{x +|CӺIs zRVg`(fw״ܖpACpnЕf,cbgC!xտc{O zuc*S!G[Md|VQN_y;vXcR5*:`vmɷRX|wLdXEޕ5twQ*zNvjr2^w: + #$yߎ'KW`v5Ih(Ŷ8ok۸;1dr+jòrR9! ]_ØMv{(5z`1PuwWwv|;Mo{*Mn sF7-] ~E}Pb q#QUaq9+G0P;tw&`ceǓ].*QϹ'׮ck-t, NL"Ύ-k&eQ +܆ܑ= ߓk;PHɺߐaN`KL0ׅY݅]oJ{~jOJ>4Y(lu햛FDNv5b 0DH]WtJvzhX/"gG*կյkM7>'z%ཛྷnK"oI ]߼*z?XkɷT VpNPx=:[2x f($oz:Oq unm5^ Ŋ$ W%2A#""cȸc0$*!Afr~A, 7ϮV?;=o%(5~~$+>2Եia ƒQp|vMN#bښW,c#]|V$舉nGf@ÒHz$}u!3N? F?=oa<[jҼy3Pϧcٓ{q,΀{OϧדCr {IV@ĭ*]UYOxy +,2.5̝_ܐAhL|YSCU/kSVQ /c%`|"jpN#ȓ"GϣTmZg\s"""""@3Yրƺ]NMAc:Y3nP}F5\,N~1oY[ĠznKm5[vIIk/eт^%63ߒ Q~Iߖu v5M d[R@%On:ř4SX<)vy1 OfM8;O;&+n9ˇk?]^yg~%̫aE31ќ0t!w=}7&})-5bڵ#I;|'ճqz=;(`C"(-}c~?20*$Âhed]ZXߘl?1b u#IwS>JjGz&sSэcrc +` #C"L?2sW{! ɴ>Trf=}L]Hk{0S+z/` ds5zh\KCR{>=e?ԱǨ#8ce=ˆKMd⎗~=Hi,Vqv%cn/+FlDj!SE`~{zO]&}S Jۉk-OHr޸A>a{1y54z*%pP>_?]nFNRdۍYK h߷q`ͧd5-nzo0 5?+Ѧ*imozQy2޷Ѻc%˗ħ&`N:S)cD^۳J؏@ =eȪdKpV)ID5'gYUd{3`}A綽Óki3z2דKR:YSQVXP;4vM?gjm[rM6^Sc]~8+U*<:׽kSgЙ4ИM\a^lB_iDXζ(`;AUY+[RUIRK|}FoV£˩]TO=lN;}x:ĿDzڨuQ-̠l HǓ<|Jp+iwuBsja8V̍b#Vփk..WdI +D1dZJ\] _L +5]͒O o^җn)mklFF Y7oG@ٹY8QL*p4ή~Gzn6/T*v*Oa+۶̭]6_͵C%[ZtpE"nUo\~@t4[gχԲ3{TFRUs]1{j{=#tِ޺\ 'ǀ~icұ(K{mUKT +u$fQѰ3/߲?ϔ|-6c[lVQ#ZMu6dQmu0WjU؃߄WmhU(Hf,v =}L>9)ަ]ϕnMMm-kߤWqWfnjQs/Ճe_ٙ9m7d߹rzm6R, S#^oO`3/7tL=*o]jw~?MLV!(UVw`=̝g̾ӲJ3foݍ )Y)qGp|kԓzffFemz]hj+RkZጯiLdȮfrkaKJjٷ֬Z31뚵g+);21<˽~7lӍzq[qN>܆psZWN܍ϛ3GBu7Jo;cgem'Ph s;x$d/.D5w侩0?}?Ds)+S5ϑr'Ŀ ]NEvV|PȘs~XuUiRD.]׎ov%:֛\ܑe;ҫ)5Yhhhu0d\{p0E.oMuxnWt(b eV@4]={tN1GOɯP»YXފ[zHgΡ^WV5V5l[30q,om /w}=j*̅ΔkuJr@Rs2:?RTZObH~yrw㴿Ls'VzmnU6qh=\nˑ[8Xj`^}"a}d8Sght%u./B NϮ'`׷˝-B藊MV5؞@o Y/uLmaBUjTk1H;|]+z )_P wROWs>\zDbrG@p=ϝ{|ή=)Kwee]wn a2[]vot"MI\~O|rޜeMh0}=rE`uמ+_ֱ]5=~Ŋv~eF*R+f'g:wA9Xe=6Mkƾƿ;mL?|+q,ı+*սtXߡt:9(ke8qẸZ,vIk:u…`3-T&A5%=oDN_MwgS2zOԥ^F%O->_=?>W⬶—JC;]IC^Y9QȪR;5\Օ ;v^=] {ӲY԰8VPOq<3mЮ:Xzy/R8{tju GQhaa[.KA!샣:Ft㩾ɕ^Cmh_k[=ϞS#"in&ȨxpXWG'7M)b\YC5Kl䠝FOv`:]UEj 31e+CD h侇ӿ%a׎J8ً젝$yUZ̧̈LAd-$f||]vu\ w|[SSgZ)|T0QLt'MbHcؙ'pčy""'ptOz+?Bw[I!{YQGbG'UrBHv=yxɂNl3,DDDDLUeU{h̄P?\1_^*'C`?IVZ *uu>H`}"'UA㱿 U3mŵI"xǼ< llC}稈iʧ$bFX1S x?f04Z2_RFWWR阕rPY +jF؇o> %KU93!ys~PcSg-xokX$v.[ަ4OJ'W]dyCCfN+Wu,`F<^>;ˮ2f+=jfuWV1ԔP]oÉc~_F>B_Pr S։-lYYXidaTγ1)Egv gO= +8^~J~պ5C7UZ,1dz|mVr#:fQ%쨬lUQķFnEF[`[P:W5 +6ACsɪipG`7gdЙzEZd)noΎzRtޅ"t*Q;%̏_|>͸̴^-|B)?!az;֥_Wzg5VğM[TfY;GVIn?>Ulu{#im gj=m/%'}K3;ӍZ EispM{M;sh(YwCv;=8} הD{.i鲖Cژ"g\[nUVKqF2wYB˒>A{gwZK _\T~l_G8%@Uw$I$:{#9= +RyH8E$ם骷!Z6(+d>V]iY]Kp +駭 mQ[% ߅Ǹ*e_~ ﰞWӖŶELxaҳv E]nEc=oB9+:Eb>/%0ѝ6tg֚URVVmmhC|[ytɶ6u?2l`'[{'"i/rHH +l]b>Wߕmz y0\wˮLB'1xrl[*A$auY]amlSy#ns3+Gs؍w-2:ePlPt= $i%5~-r˘%lR:ֵ{kv2ve U75J9gCge :'Dy(W]xqU'l}oݏײҜp\F.XVVl ' [tngRVF(}0#~e77^MaƳgXWa +{ӽvԝyjS׫+;uɷy|Nd}6#!i5H`{<#PR«Y-Wdɮ[nJb&fA-ßXUb͢7iuԺzc/žkP [\A}϶ɺXf5RӇcrV:c1r쟞+^$$l_Y'p +zzsnć(̠sI/ucea,ifsR,RAieNE`]AJ#mոUv@=[_ XKY(*̼5w[r һB$ w햯zA]\ԺrG󗘋:hz6]ho]l~~ $cҶ%yM,#7FĬjv[7o9;+䍝m˜LiXG6JˎAƠX)PT!S ޷BޟV2JvHQ. +XKk>.3? +Wik?l7 +2$Cc՝rSˍF|C1{H1qRb[kS5:q߱=WòΥ+K [%;Uj'Z$oWRϻu +j뺔߬Grw6?_Y\ZϭĻiN(!X=fz]c j߱\DD"uJoƶk}+Y%Cqoc(3~o[nMȦnk+c:ޒ 37#,)ycb(pԢwt>+LW`W[E6>-VSҧ;/zSlj˳*vDفO{g. oE +*+af^\zAWy뿙WF}]Bq bW.JGsȆ4'Ѳ3Zq@eFW* qtf[X5]mr}7 nNQC)UIHNOLvCoᩲm6(cu]vN]*̛ +̶VՒ hmw26]=A㭍EmXh-lCdgG~p7)Yׂ+練tū¡ _4 +yroֶ{wƭKH· X&VfF@>8P2~y;3_4aWT74u,@%I Gc1z5۟rvPepDRbImxC~ 1<qZ^#o}vc\-ث@oQ ;?2?##}ECt->;ވm}SIӆtRQ$eŜ@ }{RWH9GmFS Q]kXֶ5teR[TZjqYoc~{Ms-EOWE'd1#_} ߃N>%9#(Bxp̀=yI녈}D\HSlhܭn[ՐQ+)Z9}mv3./OMǹP(6{ ee&\+uZ +O},|K޷_[S/-oD]G ?/O5>*El m 窌oq '/B@w?P%e*j\uߝrM +:lЇpM׀{.yn"b c__.jz~ ;+$`&ZeJ Ň|Sb[V>O_="Υu +F5]6Í>+HOQ]|EJQ]G5IҲ1+Ǿ"_C#`s|5pòPQ?1#{֙@ǯ[v^2z{1Rm 6G?:~eE[He(W<l +u +uae`G-nxY9o>XpGPcD^n&E]FU^-H=׼(z3-տ(+]l;3~mt,kmVՐ]cze3d"aJF#ghxY͕Z-MWr' {:G.5Wm3]}a>tW3Pki#Z$I*ΥneJԚ€l5]TI d.vBMDf\{xo'RwXV1쵟 +=f{og+selZ kNO~m22Y0*d=ސz͝X6+vWZX(} Bص'sktGCVک|XSfEtϲZ* 3ӯֱ Zo޵e~V>jjZmՑJtIlw4a|5U>ۜUvY:1*ǖk}2rqszcWGUsQWvx%:r +oŴmVT,OpG|773=)!jlxV+t71+cRq<[%DDʸb@#cDDDO b {}^xCDξ$DDDDDDDDDDDDDDDDDDDDDDÏ^/?Lk#ۑ@uԮB5m2tH:#G 0t~ji]w1g'C:i_ ںUZYɟA wՓ)u~Y6 /"qEzo{ꮌյeږSH`;hv;LTƧ% o()Tk€uwJRYJ71Qy@%'D^Oz_Ҳmɧ*T dWkj["vcǹ:cy |P(9t7l>fNU1Lz)r%16Uz'禰Q+1j29d^Xd`U=̿\+ײյh6׺I>~e]B)nIbV""""""""""""""""""""""1dVśJNrcJwӽ[F@bIɷ;tm5LMPTۻxYf6oU kİJ;JΝr:6Co<jHb,B]ߴ[׺fuH\[#FϿncy]Gu=VgLHmiC6t;ӻ+ld b%d،J8<r6hݏq˿g6"ۆVWW.w} ;ԇ}y:N0ƼEMj1}Oomˏ垟Jl3 +_bֱ KeպHó]mLlK !H'D'>u%. T(JKveӇJjl"K +?!Ch 5p9a +#jÂ3~$mWmύmuӏe/ZcU[BܺR]#Y|CfoM̢b܊7!l̥ϫ#ac趶[1}[,BS+Vޘwx=*LӗE%z +wϴغN"`BT*T]V,l*q+~:^SUj2#[Td($mh}nY6NKbܖvw +4'; }d.iȦ?koVɇa]L-un dQM)oKVr$aq>w!^?O +;^hWԸcB5hnE8 o}/TV=YSVYU"yunWbt:}yxy9.t(KX0SnZX-VSQb_NzK,%A@U#zy+#3|:K-"ŋ87vܗ/tګǰȩBOXcu V]~7:X饋qqSpI .0:M\rӞݏiI'=Ԏs:J8S0Uʴ&owH^.% ^ ZN|IedetZ 'SE,U}++.Cxaַ74~`q&՗#WU.})U.b2ׁ7t99YZ2Rn^Su$}F۱[8VXdXXk QFK9foλ|zL(ŢJVթlw>aun8+c s/U[EWT:ߐJ?=bǾǴNc+.kƴ 5f&uzSmUb53"w#$]7L}#_fLߺvu%y6dQOY9IM~#e^Hܕ;$ oa~^faȹ/Sn̪[ +tA^Ż|3(| +g״*bv_q̵8مR§Lu>/HNCT~$ٴamh-ŬT;[#`v5ޱrz)/YCYٿ8hd'3*-l{3[EXm3'DY!e#aSf,Z` }rlkd ^${ym=O-_nV-Aձ z@$omJq}g#u,ƶ65u*,UI +;?s1+ނZ :@ͣl.Hʱ+G`DO~]_z>gIڎkĠ8VD>d$98 >uv~ё>/W8̧Az?}>DUա|5;%U7&*Tw:julkDʶ!Ao +~@e~lL0O;οxm+zQԡ +jkllﶾi&V̄G &(I%OUZ8Ò*'o۰}%GL~]\Anr׍9|}݈]q}֍d_Dv/~2X}=DAgIn="YTɵbX'ӹP.+a3N,8v.+\A(d'"_Ĵ t]OT }%er)dǭNެ2|Q؟2_պfKq5z@r`8<46{wHwHǪ֌y %=8ǯnRW]UꧡU/ 2<3{@=XJ:MQQiUF^ʹ[WI\JEnXB%e{|ܛ4R:}]$ /"_<TM*9 ՀwikuX[m´۸ҀK]K|ؽ8" 1`9cض0Xبؼ(:E}DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@ xVZc@buOoJ[j^6WJU +~th 0kXc#)בqGxơv ǯB֊WJB>^p[e6igÏYR׈O8t/ ++J{ofПg+[TA >3Rӊx xПWn|nF x?7үn ɇНlv5Y +VPAlwG2fTo롿ߘǺŹꭝ5ӶEcFd20(ԎPK"SLMl4QH@#_>+$ G20À[O~BN^݉>H#Zsԕ +W*ypzwSۜ ]Ŗ3|ŏÇ>԰l.W:6t? aWV'ULʞ̔jL@|]nYX +I?S5>cO:忿UérPYVƯuq +H}o`""""""""""""""""""""""""""" Y̥-xֽV&=,qY??0Lwe.Ul| 73ׇcf{lvkEz`B@ +.DbbZPGwΡ+T ԟv7LF.C"G!۶`▶u7=OUجwBJݷVe&_MmS:z}bmSH߁o֨^Z^]WZZnN@F b}_J2ʬ[S R +pܥc VFsuqȱ]i$u:5.|zbZ)W%K5%UB{ӊTtO~Ā (")BC`j팮X2Λ#>ďUYdY/h!+b@r4ɍ+ki]iH;~⾵mRdTIƴ}؈fn7؍,~||lUb/;X(?S~1~S5V +N)A;["z}jg +kaNc=PK;Z^Jr;0]|j]ca|Fw'z ~oRMrGD'_@3BW`3bVŬ3R(,|?Y˹$Va>gz%,|= ~ LUe*XT?Cb"Su.u>m>`UB`F٘wcFϹ0onmje@%y h2j3rTfl|‹JUD^[SYw׍nqC8އpqb4NObԅ\! b|K +a0[ +H޴XPt>du\\dK gys>?Wįmr +{~pxwg˸!ڳzXt=DtNL3\8V=G{o.Ft[Zm{{>gPb;λ@OOPrڌ{Poْb"">1'5n*OuF,fjI +'=;~'U`˿W_?o?i,V +0?2S0PI@&uk(oz^ÇA׼"*RaU!Λ@:AKs鬹uijtã8V+ Ƿv=*]:tSZBmU W܍_Ram]~(I߿ye֮;b{e/Yi:>::QիW &=N&SO_)=>^]k0 {l뼯bDAmgb<:jo&H2ᜋ:}a N?6 tu~3]Ui4<A +I|w&,&pPT{ v6ڄ~Yj$wiMq:3zrPxHͯ^~krUkbO}0sZF-~)bEu!__z2&ˬ@'xUg&OS\kK 6Iˉy+^,фNr, |llvxV !BcJ{>a|EdǧpRAv$>ߒh5bxb|%mVCˋ/+ENE ImvmOԴ65|]KF\˟*>9(Yx|&^vvb1'%"I$&U^&FZW7;mjKcu:}V5Ӄ5?b1 9 vE|sNFEu\A}<zMgtčn|ꯕz-wZ +@K|}RoW8unc^c^>c{AݥmJ[S _ rWd^;:۬kkn# + UI l,FGZ|3V&!J޳uʨ7,xp<~;jLjlŽTll$ MWǫTԵ[AP[~ !Uc;4#:> +dדղf8ތĪbOiQVP*P0C㐬0sqRҊWҩ$kI_ uɎ`IvBOsXkysrh9:eSm>'΍S^ƁːEbIf'`gWҺ(|Y Đ4HaϴKr+u`'0y)#Ǒce_ܧO~uMƪAd߉w]īI^CZ=o4F1X-lΥ擮gtdםүWgWjll$H?QCb(+'uۇENIyUNŵkRSEۏ#~ېS>0\gETXE ŻS6xLzMWWK^g̊xh"Q}4P93 +x,G`;fu3M,=6~=mɐbitC+M|39o<'ԗ5k:''cw= +OK&@ɴc=J~ױ2ks)ƪ|KU˥ >9:Ͻ~߆[ٚndp q Uc|AN|9VP~%u\L^z؆ЏR.S`d8aV\}B#msUHFGPLKҊCMḑ,vT)sNf`:]iN68cͱ.? +=?9?/*+17rGg0#*Ƕ jrhޚM1G T?,/r<O|+A|{?>ZaRP? R" +=_\:;VggC]RA# F=yHkVPH;u*N%43:V̪ wTP{drq)BV) u DU^űBte0` }{ܑWBE]t;Os$L98tVv`׸3N-YhkNv'ԥBW\@ڃQ{xGцǭXQy@bΌWYڢ<JT +T?G>ۍU՚* ++ǮE^#Jooo *>'lJpԭ5`HE +6|;ϩZb >I koV5t UP.k^{=؉l`(^#C]5۸<6-Lp]7#G<)Xk@kU qkS>=x+|*?@0hkiQTr?yѯǝAh55eR@#5}=g~蘭ȏa;1)К0cߪd)hPTP{=P{քCv HTG5:w'BvoFNFGX\/}ov`E(W'e{}@\ʜ̃WT ;n%IQΈRlg %gEPhOԕB +XP t6\@:OyGez;׍@kԦBU }>gڪZT*< y[޼|ZXP t6\zIx?=T:[FAB6?>>?s+@ŽDw:| ^'Ei@>32 f|@'J10GkĐ\(u +}Ϟ̎rrsr)T4% Xqg?;}2J:GHe-R*#}FS}?K> ɥQJ~]<X:ds!qK5l`%~'X$'mrWT ־n|su5ff⯯a>zECnrG(܉ճLƲ9*$B"furcP&*Q`O}f̌jR#^G$V!Ob4AeN{+2,ie5oSp}D=TcRQ.[>Of[r@Ie*:>,Vu:RԪ+Ay1IUɐ_c[Z]LƅF񰳓^eAɢHhxgqɷ|j[ҍl$+r'P@;:-ΦOo> B [?-:w*:R8Ւ֫l75)[X;֎I=׭Y='ȸ+%s$ԍ+{ҽoǶpW: ϝ>쫅k+X={I<sDD"ulgľۋYM,Y=oFPV&UX@>+ qTص/ʶčکې3U&b2,%Hϟq:~;uڍZslb}P7uT_cq$JHlnz/T2]u5 +;zl4*ն.RD}ȔG "K.-v!ܚ?)oy37"YK`n[ֶ;R/N?N eSe5nT8/#ܖ~+ؙ_>҅cUf 9%[ +mG\<\Σ{Xuk+O’Wۀn$Or&3CM862N,G,Sys1^`[1+Pŏ!׃]qܳWhRc ^{j[tnU]7Z .tY'?yiNhcSoqa;A1 0Gr7^˻Ю_`+GRܮֱsܥ.XuR>̠0l{2:vbddA*X%M`w#WuvUŹ:i\zXw{r>$+x 8 چeͽ{ t/چUͦks8p~G־8 acd%MSa k!soW>'(2x'c->@ozhkukngb}:x;:u>{?ֶa[}w3ZEx[^ʪq$a.:^XwpȲVsB'oi@Y};$Mfu:;r }c ܳsyyzԶ!%X )RJ~ :{XwqZS{ojAC)!GkNԎ8CRIfn6> ={oM-Umb.dMlu-zgZFcZ91+!݆2&K:n^n_P a/XEv>}Ÿ~-f ?cӲW^R] c\SWmElB4I:Mzn,qnFMw&6{=6]q?yyMIҺ覓«:uXRj(sȞb ,^ʩx$ )$iI$q޷ۖs%%>6($|@7@ +O{hLVu$Jm@̾:_dI?eGvctzOv\ɐYx![|z +sz*|ENNVznɭI$5+[iU|q#[ߝH9Yw )- 6c(gn}Lv9,*hYӲQOe#=47 Ooiϟ=MX8;):u+\+rNwE|,fY9`Oԩgҩ+XLƬ +]ͭw+#ct.j6+TAtM.&/Ƞ ԃ֭[s1µRIQOM~]@cyŶY32ֵ_UKw!9x~!cPV\׳PH=؏~=v:TQs-Y}J*GSR(-eZ&fpiQZ ]ZTNKgbCc}Ba~|;;TWP}P9| {*>G\^쬷mWvVd[+EelvϙW^^7O=16*[cf-uīњw^t S0v!A,K[z p1ywNό eǹSgo~?So^u& +[)o`)ytoav H? `e }%WVn$Z1Q[$ۺoOR̥:ù\Sż}_@L;z}all*,oXlߍϘ+ut+%+=v{n]{O.2z6f4.NDD+փeN=yET`CVr\>f >`*Ceo:ڧ2xW_*y#XKגݻvݼOq+Ưkuj7v +<^>;x;kRc;@ˑѱi DX >oD>#aעQDwgfg ylS/el+YI;SƼxF_E0utRbX.+:U(U$I=$ܙ?u&G6v*DrFu=kPʅe>W=CN;\9 rq@5}_xuڗbEX?ܒA22XR,$10F`{ɗ/BA*t~AO8AX0Գ ~}p<HddSM+nomwCq,%k-۷nčUBSrSɘ5 f +O}7_CfW\UETߧbz#og#y>Q>15EGnͥ,I'lN߷ t i֔Kk;^ jtm;ɸ9_5[HF6{] +z^vw j "G%V[Fk0f${}<B°ܼ ek*\?ø[V9䵓ZH5u7/$%I#|X0q1gnק"GGdkkXL9jCL;ߓӯz$v',ĒOH2:=9z亹bvH Ώ%bWRSRDPh 3f뷨T+z$nrg[-ӽ qnNܷiA$>&k:Kfx?}~_e2E֫ ^$) +N&``hLzh4mؓ65KMʥUG _Q򞉉@~$o#;-u۶دN5xTm{IJ岓jޥ~ʣ@JO6U +ɞ۾]\ >d=ֻa u +M,+pH;72݉u7-[HVC)I+ +=*0>v~ V'eypH"Yݎ ;b} 0BS%~翞_ø= ,hU 7nx2z&6K#awP Bcu |J^HWG);;a>Oy+|GWyl̥Z=Ѝ뾏O?ស҅ؑ߶ى}s1c`WQCZA`1[ήJֵ p X!vσ@1r~jĐf͸q{x")Ҫ=ٙY?SUVvYXh.:$v:>6.;,.lˍ1fcHi':*"Th&Y'ګQ]ie#AҰ.V[e~cJeҴX*;%44AD_IJC\v'OMB܂K3;lēaWt}Lj>ǶF~t6| S.n =A\`! 4APf&8SՆG;`Ř,ĝnN#;".| Đ0Wu[Hzv+cH,GK-YB\2h`vZ޵y+^QW/n+a{֥*vP#jHg:1׏XTmX#t;-S6sZR[auۏ2lV7&l}8z f8OW+^ BaLLbf`ؓ܎'^U֥kۻPą۷i~Fֲ[Ho#>@;vLhkNNG4$<'CÍ=DDDDD,=q<)?d5܏AnȠ?8)a~@DDD"L #M ^~k\(g`r@fڱZp|ϧnzһ\%SXʱc8u|'uE,Şzp{zndUeZVmzˀ|]FHxחAKjo{ wBc7Sv* ao% }_1qIfM*Y{>SWsꀢrScK^>b;PlsZJEte>l$7ܸ:fpT; x<]Zڌ MG?ش:kO|ys?_i{}2Q@U#,8T>-Ӓ1Jo`T*kMs&_kȭ<}fP +Zd ;븞gYuJ#Ðu+$ ;^yϙԱ +T#ȿN +ħ6qnv6My0daa#u|'ꘖ%Qs 0础TyU-~kjKdT?72t}Zmd5p͢[v1`E7dϫjÆz:ϧ|5֞ Xw]3nXchlœٽx%#~ϝ s=e +[3aИK +`qYۗy;~>9mRv> əѳ2Kƛ}Ja@=u\gˮSXhpر t> s쇆w,Rɑ>0?its!ZCFk;iCl=䮭-ϊK=n`Q]j"y'ɕb]A qneV6u{Ve[5ῧ6(>0JSx~/I魍~54Ohc(IT r%;y(ը8/8Ԥ&^X{ZyV\M95Yj9 J,5{31ro&KM[EF]+*{۱m+2Tq#!BQbjWaeKZՓ[pz|;ogqͷt˭sc^:qT6 ;+He,EniDN]ljeq5x7#v{̈́VJBaIKh:װ߼hُ0[а[n4@]#G&]mCtoW^R;: +ʛkh6_:1:"`%]˽6,vps ;cŦzk_/9oZ 2z^n_Iϣ%[!r]w#oTY&3wBoɀ_vV Ueh7hQx{WD`ӱSuVe,隼V{/zv-[,3ItϥKKG~w:>G_xX=+.,X=46fSmIMk,沋X_,;폍v[#Z1\ly3b 6ׇ~n_dtܚqTk]̅-i5*/`lTP:aaVp V9w [J\Oo/'؜`,{ 2kҭo*]Z?տuȲ,w`?^;:7&Vɥ,*?:S`N~:O2tljGN֫(`(`k]gzࢋ+G +ɦ:#؍b'Wt_c)uqاIYXB0[jWZZG-o +o}Gk,xsDDDDDDD@!BQ{d"Lly. kOLHDj5+ۢT,춣a%v2'q>hXXU`T*tg$vI'd{L>j5gFQj5 E|W.{%qF#ܨd5'B}Пb"""&7Sͱ*ǢnIJ樻A⍵7z={A`⼈C鹚"y zU!t6\5s)%.($3+JP<C?ͫK*m״g85\)ktZL+/r8ߞfz9Tbtw@ '؈z.̳g jrX(*{lGG{?a"|'֒-ad@Z|hv M9CDžwm_3ۿ˩'2j|XhNJG3YV%c;a +f h{rwMJH˶}.AEe4(bNmhw$i=:9wG&JVdsyٮԺ5~%yv?]|K>F_oN`y`|wZ9.lF\K1ۚ' 0֩ZݛFe`?ϙ2"wGf>Ҩε6 ~sY+|MkFwqge;;`?Չқca!Ki c#Ϸ\gP=,Xhuia1s*F`Υ2 !`9oI5mcB'n@&U7+U`*] *#GCf\?Dz٫t ߷?E5YƮ c@>@s*0l+MVW?n'~"¾թ\ +$XG:==w62Ad/k['g[ߴʿ὜UyS\w˷o\E9&ey|.GRӁB??v~D# ׃.Bu\3)iI AY$q ^b\闭[473~3ONV,Fr68 HeFExXUF>$Z:;VC_Ek?va-'FjT-U&@ ؃|2%wmƬYG:3KxېmmieEe8G72LELPypWLuZniӥꎅIU* wذ3eӃY[f:·#~Zs[؍U@n.D +3 xScz\{z_@oy7'֖3rk9lqUn{w+:5wVz}]_):eU^vK w#`~/Op(va:VU@>}J[Uv#WgḰ״'QNՂڣy+~ɽk~QU;ǰ=O5߇V3V30;ЉcZgRPYSİOŨbIy$O0lٿm[[f7nGAroO^':\]mϹ={#3 JrTĸ7YʡeWR<0^߇Ժ1U3'-qr~WMikpK2g?A/-dՊVA5[@mk` 'QnnUµu߱!|1՗`_k3YZ $;BX]au +s$5mсWS#>+#碾-nmg,>^?I\ΓgVx=nx2o$o}U5C+:`m[G:=Ǹ#̏SԨ[ŅV" +jH޶[-7K]Vr.** lq w'ˇNxsSlpA %H><^= s!zt<xm]/_+u%c@{x=<01h"e}- 6cZ>_X̮슂gS[]mGyaըŴPy= E."~O:5YETR[;kmdں+}$mT$A"SM,5gb9X(mCԶ3auTɦl(+̌5؃c:2ŭ(6ցCєhb@3z++J5O-ĝ1z.}5&0*P}\O}#gjon+QؒY + I:HƣBZ *z5d*j l#}IubՍ?m asd}kr B +J 16EP,bVJU&]c猟11i\!`>4=<Kl+7bu:e?p{""">GS| +tj\V{kĪKt[:scd=w)5ĖR"wyLه*v6ZF%vr ?i~' 0 ʜRյ(R௝flSgM9822yHO(V$@xֽWP=K3.̪)רn+80>;w-0ŴUW͕m^ I*žD&Z|EKtʪR*IBs)Rlޓ][ Ӭ[B|kdb񣢞K& +%V]cL@nGtͿ%WZX ]o~#UԮ6Ι҈QRPyt#(zz6#ulh}*&LzUQ۱r0o(g5/:ط\ʚr8s3⬳z>rU[=[7;O]S=l V,kYȪ^ksfaDҰq32zt`_[7MD?~$tq̫-Wiyoɿ eR2~zlMʡpRL_uf&_ڬDReHID:Z'N朦zj܋ >S܃{l,;oØؼ}Ŭ y0vXϱjf7S*n/ŝ_ǖ͘Mq/='T.|̋em0b<]y^Lm YiNW[`KwAF#j(U=ye#aFSnڱE';k3zne/'Qmg5Πr:I8+b +gzߕiG IZ 1jj*JSI%7u>Ahu]HOr-u +)-cYh'nj䆡I|aXß0xQ'QXY[S]3'>p4 =~V G UoΠ/Y=T_H~/{QձrlZk[v=Ԗe|/8'R(kʑ2wQϯ7]8= uى?[@cyxKcXs/kg6Tc4G~2\zCar'-9#'D6N#].c`^۽Aˇ-(h)qfJzvXUYʯb⠒6E٪rW<^j-ݎ̻ωr-JRK,rׂ;J˾?NļVUV[RRV8)QZOx,/ɿq]hn["Phh߸RC~u5fgSk'Ԧ Eu#۽:ʵvvEUsG+R/k_ćm ѲZTRࣗ#kĐ6>N0l꺖`U>^@xtgk2qlLyp}MVSčJ||.E|IޏQ,G[YU(H$2LZƢ,XY-+d-`D[EM0lGkvn+jZĨI>eoPL~~fKޔߏ@G|{'y# +N7BX}fְG9<Ϧ_r\' /ϙT̾pv@Dd윚km`e*ރff˰9C@;z7b׮D λV?Ľ6AM,}·M2}z"o& >W1`ulOIdn~NN^=ȋ|Jm^C{>(ºɨ3\ĵ^嗉B@+wԁg,KM|{_8V:` }ev20_C1oޫ* + +mv[Z߉ u-4Z׫Y+X Ha;:cWYanU+k+z=L^uڝbZ@;7dN3-SE9vvbU0@v=}{l6jeO>O>O~;}+]MmFwN5_cq?^̫#fɒCN0f|3}莜QMҼTUGm&]%*r +ң iz1b窃 |ڳro/5m}5*6 +yy{}>Ob"" dTI~|qKӨcilRo-{=eFj 8J$zz^ִיr+>qh K++Ce@f ̍WZDȨuܛ<[jR܅P $$M#_NJr6~3%g+K#@W wM˯wL\kS$0z].w%?[Y?8Hi?ŗmֈj7t< S԰;qd?<0?-6 rޥ$٬"8??v=3 ߣ&nguzJ*wtP;ԱgNMNύ_*Ŵ,.I vzW1l~1k* kܝq,!-QsmfƭELG% oד"|G}#nPJ|U<6vIJ8+ n@R@*h'_i'O2urr#:Rw6`rrt,,+sZfNc3^){ ettg80zE9t!;<}-kwn(CއhC&l^lW&T]Mm]I`__auJ3:ҕAnVHk9dD{L fђsVy!X1|7dSn0pW"BDbI>; (L\EVNH^?=eYKqM/q[-u5ޖUh0NH>2}h N=WZRBB,mRF؃<5Uk(44h}{Oc2)u* ||r{缩t׻3mmvH]q; +^bBz5qiDZh5B hOξE|vDz=^ ϏZ~ui{+W?P7>R~zǨ.;5;o[/ĥE=h_R6X;jEVdѯR! ;2"jM_Qduƣ?r&zaQR )wg P$!H:mu*hy,F)Eu+&Aoֽ}[_:Z$x9ubτp>$ꮶb9CzB5n#g~g0y&=[־~T(][ F(]9kNDqֈ=^DHWU1.˻|*B^N'؀w>DJwM*Wjkg*Pm^;HY]s0ts0ECUP{d]rΘ\ʴWZ+Ȗ`ew>ү'GQ=-)Dz׫!bI$k|vtjɠk.޲;)|"tާWT[Z쨓՝1m}7g~!EVذyW>5n 9^Jl/P阾)ɳEoo|K=;"Unq-yn +I/cW:RȽ(CV=Ey:#ɟj7ﯷ>|Fk5cmUWwԉ:6$TVLKlJ?v%:b`LV[{ދ~H]c[nEEd 0a؃bZDJ Q~>xޣ +RV&fb~)k;ؖVXqe( -7>č}J%<~a}= {n$u} >6چU\XAx./Ύg|'P7HLT1q0xU ]DD@1d׉Sa"31']ٽ"i,XՅj1YO+m@_^"ÉF{Ͼޑ73N^=͌Tqެ*@{saʥlmKG|2 ߅pq-b\i'Lw̏eF"RG؍#bcU~-_~O -}WV;1mTQkT}l1<&~'/fFC k׃qgPmUUr`S1z>MXq c]G`~S11kzxSkeݔ,lbPHFOh܉~r-*?Gm4]o\{A[ebө؋lȭ>wk~e}_ nqUCwfZVrކ uwGa-+eo37>coB]kUsvjײ#Z#Z4dzq,qXpm3Rͻ?Lnp#a=yִ{{ϝ?!#+~M;چ޴J~zCYmvj>N _Aϼ(8{Kq`N;5Xc|Lb_}:/]ܩKN5 /5ڎ: XTF'L:gQl_֜**֬FӰߟ,kWY\e'G{f'SivܘQgOpIa]3qڧg +U]ՐQ~p>aWt~_ EVv6zJR9C?Dp*» +g'{3^G\"uѼS_,IEjB6ύv0=CU~Iwl\{UcvNӅ0ig`3w:,|GGM?;yq7)_PՁߣ"ٸ~S6ij|'{szXS&BVlN;{=>|Oh_^)7:׉MG2>()NCQm*IPN`vߝvsReteĵṳ.@^-6"/ m@?"s'c~_nҿzg~Kprˮ{IXby.T|^&ސm{6W:a<;H5W]qV֧-鬵ޓR|{=vgr p2VNJ)RGibJ,B",K1ker~k]k3TAzq%,ty`wԬ!uXr鴽k}QbŬpU:߹2qi]y~U]ܬYP<~al1-N;/$|S:1S%q Z=ƐV39vִ=~qjԚpQd>%Āv6/jgdwq%Je#DA~wNbfi*$kb=Ljz1׍Z(`M0^=_iIaOacw2"">2#DR~zi YJփc[{ث||uw=;9- `>{):O7:]B;&I}#VbT+;9 >O}$ȔwK{AzzxV7T85m[~;]G>Sڍk[cغoeaaUaykȩvu5CZӾn*kI6|{C}coLjچ$& U9hS% +tzqmTVϔho~a,[ +q*}{1~9Jʚ{l+Qo:Eo])WP{H:>yX)jԤ5, ߷ҺDW\J0l9 cw^}Y_øTRէk=B97SE}NDsWøWYBX1B9ks_};;[j&XwT$tG&}d+3pߨś܂tl%GZp:mrSӋmeꤓZ,>~kUB7$rI?C]5oPv 蒤A;dRj -rʧ&$W`eL"9*ܭq;w$nt>6B)GX>D¥T Xl&qLj ϲ@Q)@+`S[c҄wkf*5۷ʟaך[o/YkAx{ hOO>R5|V7xo+-slnBհ@mt5߾_p2-Ͷ1p} ovn(,M+uN }AOt;-='~6#VoɢtFwdmׂ46xPZ/cf]T)jfzv^:NWgf=1 ;L)(%} bIr}TG(\-羵L?vbg]~n:}Fgop2eͽK {}=Opo9ŹɊ+?粡ϮVT!,/{ϙ eBx~,7߿}{8Ji:ۏky>tLl%V,gfhnyv;(Sv5TYf뿛}[q;Gq[c,iP܍UW aG "aUk=2.Ա ۖy9} ،jz(Fy? eE WAGz-#eOpO{~nG\;Yeh@|6 Vk6qZ5=i];б1DI]1gxr]SmYp@Oq1ft<| 93Uc\maّVK!*Pev0:5YJ%^ؖ8P]uqwCƵ+@I8;T[PA3adUVVJܐ H~>Ձ,vvϝ1V +\V[jA${nxgX.b`^yφje+JjUn$ 6DN7od`Iyyf-;PaBV׾6"c䧏6:>3V +W#%O*xko]itz7MZRY-v_unB;>h6Rr:28wa#X"X)$`ǖ׋0'rz^@9al'6>~XKΓk-Qĸf,);lZD_Gn6(̯c,|XFcneݺ!Ӓ@`w:o!z8WmaV*@ A>;WY濾kZ:!]B];_2^y=w%C'~=WXNGDꬰ[YJA;։<؅ԍFǑ^/ `["9le j (=K쿦|?f}y Wʀ)N+׎ņ۶KN.Vd#ab91e<@_'ĸ7eߍXṔG!IcWֺ9-9 +Y0'k>?S}7oQ"쁳Qy7UWZmdaĂ2=u=7LI!{ l6u;:E]0ed-f1mqߛ̛eY=64^<0ay#[FM3]Ztrl`{ƧgLY]Z=V j|mɞnk~"M*d +KʮۺhQOrkogͻ7sjs2i uɖ +:y~>[Lˬ_>7'ӓӺJrmt̔? +$=a]oS꘍{֬gCVl[q<7Ot^fS5AS+^+!U|ڗoR-UxTġ{yqAҨSjU FE\fcF,k:]΄W`[҅W1i'SS[Yyuz(tK +;|ggN_Z¢7?n b4I߇fgbb{۷8lN?lw T SeF荀t|,.VGPL +â4G&5>UkZoJFB{f6N}܆ĠU3X1;~fqqWZ荞~(B9P,*wo~ ܫ}|r[fsl ڭzuL]USX.ީȒA;;:a\SϏkjKwA68 zY hOz Q rlw:|̎\f1$iNȾ;_R5e4)TN@=z9;jtyvIxGEꄽl!vw%UOd]!zDxq(?y\v;KtFڀ.]̊\SaX= #*8[#)Q`ꥸ w%72빫;R,Q9!'`W.g:.%~c$8C֧SmARMf,ݻa=ъfF5CۯSRptka|gūzeXv,n{{>rONJ(tX{,o}Z3XX_ dۙ@>oR} >;5gWH^Vgc-CL쎕oQͽ|x;f޴.y|K޲W`[v*܏gVί1tOmcds>dU9 ۪=ڡnY,oz 2%W_t[\.T/c}+rȢ@ԵjJ1d%9_%HS!=[$UpOܕ%]E/Ȳ09n*' o̗# A w0?Iq$į a*U* +ConLoGC{LM.demckbxW[C_N,mPv"'K[zN{F=V\&,jڐ@m7FǙ2'=O!$oǿ6'R6NApJo#\O2|C.4,[t Ò7 e@=:?ʟZ<+0;𱍹e(I` + 0ujdzS=|}7f :r+6y_EkZl*46|"G«1k1bo}37Gľ܊Okc{r>7y :""yg CV]XmYj;xx&HK9F + +HoDd؉0m"Z:>=, $rz?N Z&;Ud]OL^ut\8Sc:TN> UkY1I +XLHu~Kdd* r`nm=:ȽWZf:@2Ujܪ0=<Ĩ#`F ~u + ט"I6IPȳҮ婭 _2ߓiP@>"yf7{{ym>Ծs@,mxF%u=-AeC0Ήdk4Y=ܽ?%Ab9oFL:wS#I$%Vܔ """`[Zt^oεk>V|KzY[ EWiLsL }#`dz)Ea6&Ա:Mη7y z,tUǎ\wQtnC)>-؂h2VVvcVd"QV`SVEƳK]NbR~ Qgnf0x߿眫~ ƪQUpoM_DnAgμ?ZkC*;e,W~ ˅ճl +/ĵxWQܐ7p k3ko %J!=}u[!8QW47>~siIlSU +>۹ј\ۺR +pܭ߿|֫+)m&> /ad&t.Pη":dVk`I dG:>ȢB0/55v7W_ ӔUZ+V=> + +mXCqԯ긘)"Wz _yuĽd8ksX?΋@}U9K|TގnbWGiU;،/FΥQ;t6mV|ԔFU]*:=ug|zv9 cP׻-jtclo=H2D8-(%9}B>'Y ON˵UQme'lFyu.:F8% 1f@;]mw؍w|qM*~Ŗ {tvOz~m>U) kseM^ے!3U8=k}Xˑ] G_- WYVEXHࡉ x\m-K Bl +l޾B5>wȧ괼!,բlʱ+-[r̗ӑO^V|OLUlh5&>"PefR~S=_3kP̬ZX- GxϏկ'=|nsY͙:D*Czgy]E\KJI Zöىozy'̲ Զ֋XoZrRıhʜ&g^-|qֻJxyjjÁ]Y$;:!]/fselu|+C>b}&}8䣕ƹqTQ},%WRXuda] #!:ze֮2޷>ի&Ӷ6$s]*ˊ54P@+>)8c'!ֻmP&vP8 +ħ6#l^&58}f 7cBڇ<_&Fv`_36K꽎6ى۹6Yf:9i޿Mш}+ R瞣SX.]G8`=Lo:Λe9Ml*` hJnpȳ"\rP+qwrU#]јzg]c5딹YT +lW|d'Ζ3/}Mt Uն)s +ϱӪeחh)Ut}!;;;NǷu lķθY yG<_S-V䷤Y/vr;v̓?9킷 +Xuą@a w5UE46KjٯVZYњ8 l]$xl"̬UkrW2s<{zUt *(?l;T1<yuv[>9%HpTР;,ݷGco) u˷tʨkyWJ%b~߮zaU$*tm޻ŝ~OS9$]%GRFut䡀mmL=;F*;"\k*ZO@ #G'?iߟղ+\|b@,=G~'ect,-NЗGj"^fZzFVNvEU :Y+mvǏSVmĹ-@K#d߄,%}#opZSV20~Yԕ!'}=N]ȹԾÑHEI-b,P x(nf_Y_uV^E[g ҪW]גJguW*Ցf=~p5 +\(~;l#.VD^$]F.zVrGpe$D§0)EuՎ-ɀbOߒ2ש%C!K Hr'u'%+K@X1[ L۬} +(wqJ4@Ϙ?ޥpeJj +??oۿ۴Ňx*°GF:2'p=Ώpr,U7P-{dOI|v>OD˭.ECoR(^?(%N$w>'d"ĥ&XCA<'@meʨVX)5VU@[[$FhLOhPl75WԢr=c2׫WO ϊ8oլV-.XbkJu~R#1A6i7gƁ96̫9 +WAͲē۷?Æގ:Vkj ZHQ6Fd=JlnUlECo^{kS䞣}'!.2W㎿L&N&;RB2YvAF(ۙr ޺hPxV Ica>|'ҫedCEiMh7(eڥm%Wv=y( +v*Fްz>nOPi')pp +?q7w*g6GMZj<ڦeeŀ{I39ՐF1 $~p`u߹=;tjq*P7QzoUľEŷ@ջJHq eӿ)._Ql/qod}Gy_wE V.]Lzzg|wiޗY-[9 ze}1ڑ۸_tt驑Y&acTߘ >mv״zNWZaځ]1@= F2FMY΂Gb!U@vRbA߶.s)Uh̃!rNTEA w$~cemvZ"Zߧg.&{0:bXX4(Wf=>2p"εV +^uogxSIXi\1R fή2[! H;Ƿm96ZUQGEJ5ء](;OB3/Lk, l~pGtÕoB/JТ0z-?1':NUUjDa̺%v#A?C_2 ӫȯZ5L@ ay:^HjJUr7!S;  :t~]%2VZNې %x߿OEcՂ{/U]sV3%M hV}<{S]{E;>{Lضe;Agagz$ ri?Vɵk T$c~Y@*uE +6s'DDLt_^Je!;L>32.'U,(,*tX1/b[J˝(fdw>DDOy4V[ED`L,6dH""&*2AeNze`u ;*"΀I'@&yΣ!z8He:e "{ɫ maLvuznU6uf[% v`O>$z_G߿HLy5bTQ0U:i""""""""""""""'H:<[ωG[$ 53rsuN,ZZ^;%vvHOL n8GAX,O;x=HKUǰXwϖ#Op5Gk#.V]@&cQd,4SO>FE8E{X/7DkzqwkRq5,55{泮]mDul769ƭ/rlj<#c|]^YU ,7Y{1q~ם>r*m~]::dnN>E{U\'ۼZ# c&R+zؐ7A 3uzn+MHF-J&)H?!ʎv!l/=}12152hx>zΟ)˩RUOjXWn|`cPR6!o} ?AfmfTSݏ/[H?>Ob>|F)O5`kAi(@}wtzU=J#De֑=iO~ ZSdGEq!^݇r6Dԗ&*kX>Rh| z|ӃpCaFPB;b?H?IoW÷-56hZjh>8`S/M4}}#[Աzmj=5E-Sա*']Ӭz^U=Ԩ{wqX,@IMi>0SVqkmUQ~9OPv=! +qRlV:A~#.OYbԯY,%TrvgW[猿_"_}UkؼWmiG~D:>!ȩq>Ex!8XEN9c۸SlY蘶%LJmkf8 loG`w-oELSi׳ZAH_OyMnΠy +ӻgn{u zUV`>˹EU[g;@ # n\goUGft|]?f1*T0FROBc3feu]j!Ֆ^5V(+kD6c4m? dߍ^3"'mj؏w=ρ͛.BR!+R4Tw/N3/Tqߟ䬾MUAb`odۿs D3: kU6Ukm~F*L;hg[Pin?qn̻"e/g +@g xfWQ:W~C5 +uk}}9xgJ2( uMbĨ>F]y}Gib+VG(o㢖8w$"$gRb>Rp l@v\HܾƷn0~#g̫!ݭW*hN[w{W\Kr +>=6m*5ZYfUbdz3/R]+b8,Lc)zSUlK>)qYֺWQYQZm =qznGNQsWŞlՕ 4Adb}N2~^=T).U $@gW:=lZޓ2mOAL.!\WR +z@և}oRCu\p?~[\r7cc!|VuR ՖAF.+:!O.w'[q>8c5ZִC ? :G4Xa/"Ot;﹗>|:Ұۘfʆfw#rߐ7Q<4jrуm2w>6Ksi~tEҖ;bIoLYX80E E<^x/Q}ejKkl:b_(ڊ*MÓdjvwfL\l !F + HRFƎLt|?wOȫ'I?`f6qT\ch5 Űpz ;v֏x'3ЦեvxVWm Ge~f>K=P +w'Z?]J"UxȚ)*@!δI7eFglec[TC[c\n@ EzVX|b~ZX>V|c>n'G+@rzT]ov[ +2[g;*-:dk14v,ꭄ/߶ēҲ8:A`~}MEH>Jߏj)z::rNgOosdeblkF~R?]lK>!XZչ->$_2c:jOL ҷx߷aegחuuX +Uo- 6nZk sEa[TƴH.<{.2,¶&[Vʧm t,5jrvVk$6MߧIeb}w}toUfzX]-vX[{~Ӟ6-aZ:5/ vԴ«(إ馥U|Ɨ_~> /f,MS}$F6&eUWSad(xù?OG9d +?M+|s]l@bߞ@I՗-kSV㢋3W :k[?_Һ>Mڅ]k~U?)H3T[@X7LG73+V? òlʤ/woi򎓐BB +uPH*=yۦaT[Vl!l8)*X GX~M998tjѭثĐx0!Eይ4C%O+@@3Ys:&c]u]TZYmU ߴ_Aȳ1꭭2c?0+R}A-Mrʛ?j0M'I1<[RܥlAP|J-p@v%}Ucz޽zOZA?iz5>ϐ;ϳ5g_i5>,{Ti䢻*6 loΌ>j}51C]Nl :N=kZ +J7BH5"|Ou>Ϛb'z"5>|j5<ˆ-o[{䴲P=:?=DDDO}0_3܎ > ?z{"%"c`TkE r#LCWNNu}eT}F[|Ej_QF9of-c`s>DtO;Vr;M5FWN-d]Ԫul ~.MlZZJO{1` vQyL\Y9 mv9kl/RcT_.I`x3u*n>(bu+7rw;#yo"8i +Mza|#GgicQX ż0XGc؍O}C>fMܸV!G߰d$ 6V֯tVV:RuzK W@@$q,=i5+/bU% +^[aؐf062 ,%=!u +zu4ύ u=ψ.w9sczmh%JKWo>Jn:޻߈o#bMT Ŀje+1Gycc.-IJo":Cd?8][Q8 +iܒ?'CgΦӰi露񑖛>blTކ|"2kƲn2w酭$kܝOQC\,PȡI#d/BL9hQ \C1FG@i+KlڅMX&W~1}"dl<֋oU!ֳY"5v=y.M^pmor{b;:3&ژ2:V#`n]tdN~J CInHF^GysszEc*ܱG}aQ}ײn:?^/ydrT {Kl [8Fr!Pm?|S1۪tGz\%dm r@U|Cg̖VuO;R߹*]΀|;+qUr #8'LJ`JN֨kн;!y%jtelvBCM'S c\kT lrP'{#[6&=9Z,_' =]Hlkz Wl!J w#cc$_RF-2;F*Fbޔ1v.) @ ~@![-)q1CXv n]bzo8^}1gqocyqolYyX,6ˠH1g|Cn'SL%ǶqQT!F2 {5ߖZȘ6'̒mi_K#NoNT,F|ES]YqOm}g2=v+p܇`@=~o'PϫٳEUٙ*]:-tbϐMj qb@ `Nԍ򞴖X=VclDuPX.ň66ajZA5鐝măGW zsT "ĽNO&- -!Ǩط+ޛ"ϴGRdvT,b3 >uU¿T4@;N{zM”K +sQ~=^^EK`[P +DZ'KJR3*V"@l&g(tU27XJ H=bA6яhϕaȩZEֲKL8!JMtHSߴ ]Zh}%`X1=P{O]O ~]:b]b"I vzo@̘b*p(N G>/ƿN@J,t5 6.g ;'SCUZT"qPl@ w'H-X(bazAՕ9tHDxuصڭ׶"%A,1?arĹٕ bg_ V"dSmBZ~?tĩoגm-ҪaO@3.؁ ?&ʒ2:V#`șa+VZY8|Nb̠ot诡,֕'\-<*MՑǤm{뼪e_ڕ8@/ELȄfP~]]Gdzv +8D!}6bW.AXV >)龪QW"7H+]'$s +z/Mܘ.mC> U6 +Sm +E!P;#ɝ;S*i'AWBU"J2˃"~V  Qӿ]9kp.ImT0=ܞӎ'KrvHĥ{gM O_ŷQZг~hGA .;8eqdJ +Yog[lZqn9`H,q +meHm{|/qk% VpLTqcٶ2?ջ֛MuS*n}rw۷BeuL~*WGMAKy0N}l4z,TutC[0 +-@ȳ.ʬ!ajc[Cڦout2iev㵬9zaFGH֏sl}'0qk**.jł l8vMI{o[Ƕ״>{UbmT*,o8sn&'/Ƕ[/}i +s:oM &ҳsz [RɄ4W]T_#Zl6㵭b[k;:&[: ?S>-m6(XءJʅ( bd~VT)۸;޵2R~Q-)^ c[_!70MvߐFėO?/6Zmů%3۴u\\Zo 'K9^'zԆ=701@ 7;2⊯eúggUenPRB I WQ#èo2U܃0$h}f~l +}B'6,ַrsk95crq>v":,2:᝹`SclZzyk-ws^Uukr/%->0;$̃իݐ[~9)tw'v:=ʅYXwWY0V/[Xi79 7.V6=mV-}6Fh~OKId5?:#qu]S)f6V6+z%q޵-r|YTw>\`-6Wbd+ֶ1k!qUτRޟ}Ű!uAk[fXbeGv%[9< 9.zaxTgcSUbXqYdb䎏q=-k&ʊ +['Y5WYתWk;i|FƦл4(7cz['GU\/en>MVꂝl!5ȏ]uԳ0tXj͢ +G*?lM_:/qKn5Yĵ6+9YGs~>NnFe9u^\aW5|܉3?4w_ 4q8>Z!Ƴ7QR{1nEِ6~Sufq*+S(o~u,˚,-ejWD`;<^ahl[EݜkO/,P1߿i+d[WF EӓM K!;a~8պ*lJ1-+n2t*q + sa'9q|yiEԺc[]wS H$FǏޕ8}{>ES+Zil<.nCDygEu.8εM!_L;9UZm y~6My ~?.rI嗽l}q3`;c;I34DD%x NEl r̺]k%jG /\r(?rrDْb"|hOQ'FQOSOFQj}5gF؟#S'j5>ϚF5F#QFhːht$HçNQ$v~U]D Tj5F؟'؟#QFSDDD<[jҥ~s)~K85^H2r-lN~JB +讗DZX=VΕYիw`d..?VP8dY<%:z*Pˋz~~Y=BaA,>]lސ ɷ3sR 3;=ɞ~ f-DVފڭHvIAuy?NީEuX@qnlXlwֻ{CE+ek6޸#jw̏~";zK:cCh|'B|}p h#3 >Կ.݊eXzVe#-άU*x{.yKȶ0@ŘyȎn+eΣtvYvGzV=+s֥[J`e^w%Eʫ۝Evݟuf:T|5ԕ.עV_VVFϟݣ+aSӱy{gWYeٸ=Rzhe{,ӵ+hX䁢GyYҲ]2pXTp9. +׼ĻZjŦ[X]yaTuwuΔʬUq6⾢MiI +oS×KX(P`ƕF 6%ĴOKͪ,zIBL9 հ101A9+ne*zl.#ےz.F'TSBMvo/ 6JZT"@J.߄;.E)^Z;VuB׀x]y4=Q3jWHPV,ĐFcc~j1.X*yan>,bB6l B$̏jĵ Fn$v ZQoPJ(.gɛg]*K\˩-P:+FA~f>j}SD+Iu{.{g;`6ϹvCv1J2UQ6' }oقpkǨ̰"#j/L} ;gMɭ=\PY>T3aȲ1ZfOP~<3WOUec)md>*coQ] A2^@ #`lw_<[Eb+2m};3B1R +w}dϻ ^-Rvo}'SFAaUXq`Hc=>Euh3*ѕcU[EȮ^@7><$lR5zx?zVU(#a}5S#~(VSjWq/r9 66Ȭ>Cc_}@>\8;ԁ3n[-j]"muV1ӛod^%_P&[Wb>;ؖfeVF~kNRŰA(#'yOr+lydWu*<ƿ~{G6w7V{ĹuWZٔ]q 1[tLT>Vȭ c2J9Yx} +NA90Y=P۰^ޕ oN0|O|955y >0R166T)zu[ Me[}l=.k|/W;aƺنD Oa3t͢AdF 7-Pu2.MLaCyl͂у}c{a[;oL u7uGOS[yr\T܊jUfn6~\Llޓ]`+'}zJĶ[驰hr>2ceӘl_䑃/D~*r޷k3ڸq '|1Sl]r0qL2:P9؝:?Xv. *(vG +y`issd҃ooߗ+;Vt쎡fvbz?R݇l`36Elטߏ{&$QvhOOh`ڐG+2%}Z[vTmjȮ[+) 2Gi2zV#:U|MՏF+h-aw``LPGMaM9;'@lDD1h$*6N:BzjhBM[(|2~+['buv + >QYl}ƻ3M RʹXm]o}nm=+aiĴYZk~i们Z y$קΓ6}%oZ7Fn]͢ރҺVN-U(s0o*Iff'edtΗG+®$my }'߃(ԫV"6~oP~wۑ:?"Uȅs rN=F>Rn6俦d( ujSXmnu G}ud_q*ߖ'*\J+z~#vtPR-ju#Mۥ݋mL]v^8(dbC@kyZ//&OfMy9YRTZb@ DV 鐿^0UT1P#=:oIC]X>B>}/g' U-UlwN֛ߜņ=箼/D\_hߛˉtd:ǯ0 *6s=>u' Mɒ,,,N;;']LK',tF| ,qv?A:G»uZ5q +ӡzf7SMUՓaZ+5 t#پ!,{`kGcZ\D g_*&j\X'b! %]7'ad7qԥ5t3r䣏Mlm}? 1ݝkZ +xn_';#RïaUVbޡ]Wבjc;1}֍GEc$}us?vu*}Ii"VSksKv}9g:"8kA%WSOx7|׽5s\\9B3]{Y}S.u!.n[ŷt>\SKuPRV'8l-cr+9$y;+hUYS koq5|־Y)Q*Moos/s"jkT-I$pC?@~MUgWδ *ݦҾv~*)v(;f$5Ѱ_ᾩsR0@}ʪO)$~#3m-ia ѹp+s8jزl{7ui2! jbl]~?~ 4v){xNMrkh>Om):RӁu7.Oi,Og; ;'R~Mu΢rШYU|vuqsܑ4t0~7zW[:{ekNWtx^v[7Z><iCiO+J"ۭ/Qq]yStrl̼ʤ%ޡ]J@#h |yQ굖|1#) {V{K,q>+Ư -ðh .6e&fu=4*\U4=57wA-^ӝ(Fgz[E b5;{%k4r" PV`>z'>|;>"!jh*mXKؓ_ndsOX׽a(5S|~C-)ǻtabQF2( {iX7_ sX(U|>&NU?u <,fm$O> +NN4S]1YAXn]_̺v@jkE7ܖ޼!3VŖ{?]go|.0r&p.x^@󣿦Ѻ6?Aؠa-Gd }ĸyK}!1!XVλu 0#GFkw6:SN܇pJl-x=;-oʣKǽoDwl޹FEjs*ĮrWu$#ω#W]_mhd ȟUE8\rY, ~֪0hy2M&,/E^7r wROOVfc׊}^byly&m=F(nUءlfyZKP>.SuZ):'g#[3N}K4~=Nr=klK?[%(T)]v֤F&7\').EjXka6v75ϋλ:+ǒVch;MkETU +*vDD]Ũ7"C_I5Y%teƥ* vB(]UҭSn*l|'8'}ib.cL#ƶzv,>ϓ^ZEu:ڰ  *J(@R#t=[w2N_0uzO8am/s]\+q',cac@L00,hƪʀ>Oy# rdqrn6u"Gq2{kdǯu*(Ҫ& Α,ǮM.NkƩjBŸ>NyxDȢx Ccu2URR*"*ҁE`[׍Rٲy2~>nj~e xlO=/\zRg>Eۉ]$ {y:w!qr ~gE¶s/xnZ_@5J8, ya+X"eTUV}Gəqjíj@ +@K3YbI{~M7](* ARsD[ڨ_M'^xD +HH{6L+7YSXYX@_k'vW0sbcTy(c@߼ѰsǮQT@QR["*A+ޝcIe|v׷i e">jܰv<^vWKƫUZ<:ߣaHj+7 j`@g|>T]7IJFύp8;D( +)ֶx37huM#CCGr2=ӕ-!XeRS z(CIUbMjT1$. i':֪"(Ҫ>a^  C f#O<i}VIy"EoUtTZnџ0:f7KBԥJNE SWg.\w ߅vo +(Fwk^ܕ~L?Ԕ=L1WvR<%ҁy4`Z*J7"Bt;o@L а+\jLvI$G>(8߇,XpOhOѰ(j+5ڡ@P38+ϧpI?/}x42ҕ;Gv=tL7*ǩDrZ[GطZ.z+k׍11f|>1밍wdކ=eLTPiC"#a۷iꎝOҤG}ִDPv=Hy]'9Q])P]h ajRJcϗtl<"+kT9P[oi'5omH[m (%Oi&Qt܌j\|"[UP<&^DDD<ˉgC~ԮwZL#JcWؐ~;,"$^n%-e4 +eRv@=۰;AӪVDmu ;kd%MwQWNl|sm==0@`kzę=; 2f#W#*5<67G؁}YtOo̯=mz5 +l8ocQkuKpWrc8GYWz$c2VKm0P@[u-%oV9ۑaJ%PqRF'ӯʰڙ5(+jrڂIqɱ8A \_Ѝf?1k_Z'2TQT RFv:B^o&j U|R?xeH7[} YNR,q%^Ca;CdN<웱> o;LH;;q>OoR)sЩm>m8/}_c72M%7S]\!^hl,v=}ͼO\uv޽ýUd؁UXāK8HKr9;i8c &c}=V>jru@gb[o|A6U,k5+8Ŭ誳 A{k%}%BЬ|BtX2U:%׀|ae^g2=J_?$w:@?i3e5[Eؖz }qm.6+#k$f1>UXuFF(=J.n[(uZY|i}C ]5WXTدrNPtOE}r67x3XU2,ҁ"|z%uKBގǰ;-aվb@#Tb~EIg-v ֺ5XU+([|~Q$M"9WRW]V͟!],tO#et,[+K] )gZv }e\=m7lb +;67ƪtVv?=3txe?nU_W5^ `Kmxs*zne?Poo|jpߎ_N\XYaȽ>UHz_`nާGVu\3}~m뷃$tTB&P@fgum{r~oJYT^]c`AP^Ycu ֻ&qf+#L,c%wz:\{'}~:25Y/З:-h̖0Z%xȀ;x]-:Tm5-Xlv(l[9bK >e%o}}&/Ş`8F'_Ժ^+ucՏ7`fkI慼qh 2Tp8,$cÖr_y[lcˏkZ{ӈ^loLPkm[¶zG">qFB[k>FE5*vO&4~svv-Z:~!UrӪ*[s]O_"KȪծUa]n'$hEjJ: cS@_My8 ,*e-OğjR~M[5깰^jο:e^?s*zt \zguސK KX,{ĬuNUV Xo|86?(PT;s-qkgu._+V}yCyGO{lNbB]ŁwUsWgG"㐙}_Qp7O\c6='&;WP~mcom}_:tcc͛@~.~zǙQؖ@.zE9te]Mt=hRZ`f Far?Zȳ'.VEU5K峣߷S}S'PKx!ߕlT?.@6wnbGEu3w! |hJ3+vfOlzk=O'gi7CIoE([jZ +]a@uw3UGI ՑZאjGGot;0>a=ֵװ+n +@XDDDDDDDDDDDDDDDD@)P+$[gĞD|'ə*S2j5 # _OB33v>6$kvIJՒQvAG!s-Qsbرֹ{Fo$I-16{72 ol t:FZ7mh#c0[Шwkצ䧸'{X1;=Ѩ|,iɱ0*$.L +Yqn[?o4쪞]fIlY%Ör ~|9?e[UKkM 4Xvb{V,k^!b+vAؓv;]cZ9Vv{# <*(VXq#=rU9ԭ7m*ܘX8 ]gc=Vg;Ír̺#mshw?S1Ø̴~FsWg}Lt(|,~h*N]:~eJ썂;B%nzۖᘆ v>Gd(-?1W-Iz) 66Ƕ{Xu䢓X96Tt@d;v'?q1s'vېԞ=إX 6>FE +T9BXe}aJXm=DvG+}S* I:=d1; q"k̅c _d]k@?l0¿klFcLK9ؖ~cq%aWX${II==ʸdhQ#}Ď `*^-;;u1qoX +UͧץuB7uݥ鳳^f;,z}3g MXȵwz%y.?CƶWky;0n;kCl,M0sRH%GaL~F6MI԰iػ*N]~ zơYp /χ0{«Myoq0B uo@^'۾ÿwV+]QË6[r$s:u=BC!E:m(ׂs)5zW/%a܂ 4AK)wfIPtu0;F,R:Dv:?YQUva<Gze&F8+X,kZL=g#6Q@pO0I]!9kA`8E'@{L)bp²Śe$%Ŷ|ϼ(⩡!xbGﶥb"""""""""""""""" >j}!ձmleM|t|66:޷!4xzSʾA #D:$w̸7Q\ {rjRN}C%3>q2/#-UU5b?4'߶DDDDDDDDDDDDDDDDDDDDDDDDD/R=:6BraCJdUjs1R6fo>Mj«.fֿIOx߼8$>u~$nB` +;%H%|>\DMg+?6M5Om5-AT(`4&HgI[[eV@yrzM\kZo8#e%efӂ8P%kwrT~f4e%6( bM׹B^@>5lz%5W*v0Ptoy!*KڱWʩ&x\=-:|j]{܃$tN[UMXTGrSo8ʝKP-uQ]J4,3/_kƺyh{66P[GC?mwЗ:SzYG`{(^;ﳿi][9Tz1,#ۙ+'(RoQ{eH܆+)땿g-`3},zs{0M~f乨Vߎ=oB2[~_}f5l'j|3f )qXVI2fIz%d&UsȽI_~հq*Kq(8cBSܵK'OKGea~)=链 꿑p\P?t~nQY1o{vɸP_P87~GDL[] Д^:jˀ7ȂGsYSv6d]U5ܔ~p&u_Y|k PH+20u=v v2l]xȽsXUE*X#dv&d-67J,Xw`5} L9Nmǘ_7c>J>a4`; "&mxuny<2zKSޗxU!qI4ԀBCRcZؙe>(Ѝ """""""""""""""""""""" *I56W'I68;܏EnuG +ٻCD1?RdϵbԺT.>5Yi^_Oʡ|ļr ]yiӱWވ~=I;ڠピeVm` )a}⬆}eP,$I2>RAհ#b {cXv~K>"|!ݵ&iinUTo2x'Sԑb4Gx2LOږADy^}Jv;B̼ڱV$'&JX*'aَ:bn.RE*]UPI$$RA5`GO A#ĕ&S>ꯗ*,`ee kc %DD+G5dd]e*} 'J,W~ԉz=9 +mr-QȱŸ>.Ay=y)[:}R?N1 l arx!+{8p%Qzd[VPU{""$|FkkcG`6Fׁ$DgVېwO`x2SmZ[=J$Dql_R,#kzFzUl}&[O޷e"u*)>oQj[ԅ*NR\DI:y?a:z:Qˋ0*`AD5BGݔDk#Gc#(ɿЭlm,MEqx:H cB鹙y}}20h~7Yy)M)xy:uV2{QIAZ8Uo}W&w8d!̀2tFƈԊ{'O邯\6ؐH# ,\`\J;!]l|˩ٔJao=Zc4Qs5T7$,uk!{nBCjiO숇~ , s#wވ#%+\kCtqbJx]̿!j9[kbԽaI>T%y9Ӆ-*cUlĝ6wR&ZZ[WR$uΦ,.k.:ڍZ +1v+5b +KUsמ@x Cf1[qz]Ԗ 6Md>V5v $ܫ?ڔ$}yA𢅻4T_js:gꇭ. 1V:?sߵZ*ʒd]0K25S@'*>n ,Ty97ΡbUug'-2ކB ~Oɫ3K*FA|ߢHn/V陙]9)ɮ9+`$t|6wl+ǎG.~ۙ2+~6[[mH9'`*GLvߎ,XYOq@-21={WW+qnB; }xpQ_ 8)[W#dte+#[S! =2.>]?puWeWC֦6"/}ҳ)bQ;5 չt%mcۭ:*ozy5();,S5ǐu#`@R5My1葱nPׇU((E[8]I߰gVFָ^\gR<]V^+?cbd,̾uuS/vm Jjq%iOo$dzY[~PHʧbW۾ӲY](LUWR> +h]9z8[lSekmv˻;=O`o[̯+"R'8韝yQqv[&N=(,kCXsCMj.3^N̕>}r-,,r;/҅䟶;y~&/KZqC35PHU[s:R˧[PZ"),PYH)3g.gMm [hmNlh>fjFMxz pfc ;hen5nkh,|ȫ&E֭!80:=#=6+_Mx3+Զ=ηQ벗Ŵj(?xgdeeuEHR)65dPU]b։mJ2[=2S0:ZY&YXs/:eB5=#; f`Aql>ԅۏb>lq>76Unst.-D~~f}}#Y,X>z`t㴸YGa@*n|/E~/N en +$g#ˑ϶}<~7Q~KMTҷ3f#݌r"ܷ((Xˢy .nfFs)pT(,>~9z\N.*tI$?AFᜫ0"1 1.ha9ͯ+ <ڜZFU%ܘﶵ򂞏K͗Jg*ǎ~]JgR7M^@R3v;; χ/Fƾ2)WcW\+CВ+`_~- `}E l Vt<@+]gT2X0Dɝo-}+x:׺tt{cB^@V[dkP ;>OGɵr#UXb|+hp?iz6KL֡T/b<6373~i l3pSky#ayf,t=a;I7(ޙ%+v~SѺ>_L{uȹ +HrR\_qφզ5ivb].-xu%5%h4OW+oLn'`J]_Tn.캧\ʪIr8GoÙuUeuca]mll* iP%7=/ȣ#9ݫ\ XŻtd\NWQCu%{H]U#pY< :^>-i+䠨!GtI߿xYؖQp}B}gE}W^zYMJxUUq*N{}t}66]5\ ZeYj;!~ِ:Hd=R}sՃU%kI1TY+U8j״ݞĮeJ짏e崻VX; z/S׍%Ӟ̭e`(#A#ϸXMb߅22QyVUel(Tq#>Gi+3gu6WS5ү] ()[U$ 1d h}vfZ=բZ!tn+) #ΈWHϽe&KT[u+ه +'y { + 1zbd_vՠ`%%׋.lgjkd~!națv`4nD=du\. +ml ȶ|M}~ԆK*Bezzg};BZddXp̖a۴]/܁uE66 ++Gۿfs]1Ĩn>~m 驓txV/}l|DlmNF_3srʳ% Z,ćځyeb]/Shx(wH [Z_oR +u{񶾊^ ~_!B>cd۴7Qj-ʋ^jy6H{KXy a"'"';b""""""""""""""""""""""y(܀|{}=O7BC[;b"""""""""|e 4F_1q'BY ڬ@#쿽'V-;kQmmoR#u[K>JWBɰ۷-N=voSTBzjuglx/\  +(T>t=A ^XQ"n(Z%dz7sd ߾<@'ٜp\Jի cȍmI}ޯ[9h7~^U'؟}nHtW$*`؅?DGSMO +" +(s!Nܷ5a@alv2]c-O[ OD˒ŰR A ;_{ϸ^--_L\}6ƀgӱV ii5O5uV -Q7ݗ\wϾޗӔٕmYKjUS^pø֎Ǐa"|%57ߛ֕/=V.u~+Qh{8Z5~Co7<[ 5k\8`0g'\~Ptv5F"g͌Xph χV})}-C+heWT:wQ~A^lf +BR?H:Bg qՑKr +X-tul\lj$YhPȆ }.W-ճ/KK܉!3;/Bʫӳ2$h:ߙu+хk[{^%v 'a +M+%[LHaOX=ZzrGF;XzR##,ޕN; m>üٿzUwRC=IcdWO7, W(``ŏb{2NMURovp7gx]c6jV #ԛeP,$I؟bfڕqkf,lf7nؖZ* ~fN{E\K >媓̨5l@wםw2:&9EX-u铠Pd\jK`Xwe%G+Jޝ[q'C}JL}kkV%RgU؎C̫C2T[j2!J{}7J}WV 硢wmKZ:xU%9Eꩬzh-gfPu뾤v d0 +64;u\s}Ō[|O;hvy~ft]#&C`tg1h²]ߔVT/$I_ub^t&ǎI_?H܁Y|2nVfjqcellk=RMAM4 ! o0jp۔8wt \dYr +m +[W_pMQnCu,iZWb±($߹~+~='4i|kQB;d*&@G +<7J8]B+SRڵojq<|6fmVKzfqdį؉ #tmG_K=md찀@8޷IIgڪtEqYdـb50?iL^«yV7*\(^7(Sr)o%6dpkXlu#b[a> e.FFKUU"`mae Z5pdỊLik-e{^Ur+<-A#:wSʧ*ضpmfOHp\&%dr\g|x^KYt`~Ve7O<_L\=*%8e ^dlgmrNW6VyGI 5-/n@ +7A 2gؗgt˫K?*(,Wer{=S*§j)*l`x3AOUtպBk#b{?l99)[[fҳPIBj_S֭ꏗIfbiEv޷mTE +`%_ůǤfŹ*fBPOre.Z^0K~#ʯjʩ!^ <>Cw"Lؼ +~DDDDDDDDDDDD>IF#Yfd* l{}jmƫv:<׍GJDUt5Ug9 m[-a SpP5uX7y[i.!5X@ JK) +tttuc`'MT=ٙ31~*"|>j}5b""`+Y + ܒ~3DDDDDL8S:G)#}Oj}}'؈>j}:P؈*uO3 / _-l Ʒ(z⬋:c7 C?o{ǏiЩ]m]((Bکm;~%f'P~= +K#/goN'<g+3闣ۣaT-=''@'X7u{YDDDDDDDDDDD0f~ +-':cfUOMʝJA: e[~_HF֖(<}Mkel]UzV|UԬ}>ǣsewΕӫXcW]?v;'duCz6=y.X*Z=Cc 7'ܻ-ck+Tܖc՝KvȨWڳ3)OY\,Ӿ.]_'/ +U Z-U] {О+Nen-]J2 AP568V|ꘕU{/vnXϛ'۷~/Ui=Z]Է ёbz6 v΀6u3l8ՊǰAs}Ι|*c9%Ra)"uQAm;y*{DDՆGQy7SM5XppvAo/wN)iA$vv,ǹ2KJ?:K-Ƚm +Wͅ{Uא/b`6tvBebozHNkC϶fSS{X +56NSh`vHSn!wam^mqXOMUx*䙞EY oJ;ɶX)f $^]W(>G5^MxVUmȤ~I15ψ~};}%F*}[Z*{I6]`p9 +7'LKob+9!my'gL}.ͣb!o I=|XGߚ}bJq+-DTr?>~8n^$Sjl;P,>Eme'W^r[C:c- H6i2O.;YK6Nv:g [P T3t7J-ļx1|GM"""""""""""Vl4`tk{6@3OŶZlZzUf$蓹ױcZ}jD7=+&*֪< Ņds^OZWhoDL7XI7O,9=LOoD4Ƞޫoo|Ӷkz=T&St.:]#:Wm}yr?M]_RE1~q#(obG R;K]3[mg~xX­tUTl~Knz>Q^>{5 +~$Ϳ (.MHI=.l7=RW& ju,dNN6F-Zr:^:IPYK؎h{ƬZ}0eālFM|KA_v-:qʯBwQBOcL8Fˮ:Ҝ~dvzi=WWW꿺YwNYhaNz|~]o\z+ML F%VY{"\orlmK'DZ^Rcl˱y+2mq 69 HxU8,ļb66ZߏeFO +}<QHBym̽B:[Ӆg3Uԭ]V$WgsnŸdS]ZܯVU"ື:?տuȳZУ2Df$ҏD iGeUڊl?#"#.W:=#6Xm3'~/%0<`sk\݀Fƽ^}4Ҥdܶ+_&񛏛k)Jav~溑uȱ.Err2RtOw~~?y9Wrsly \hJ~cgϝ>^:c-VBTlMN-֪`Vv$)3|ҭo![AxAx8uuhj`eW# Ʋ뾿~JXvunVǕ+H-{I_zo{Hԙ~'R{̭N?2ӗ7ື:?տuȳSNĹbd6"8Ba쓭e+>fEjiaX G0@G"m)EE +h EIė]YYUaT\ꈣlt}I3"8`A>DDDDDDDDDD%' %Ʃjыk% +@Jr)׫C@N.}đgOǺs҅T|JcR.ϟ} Nbnl P~>"`V5)q3WM Q]4W>u]m7^֭iRrJB;;0iƒ}#3lѴl#be]MqW/84 +-CV<~菠+}wԃԾ "nVEh, : +6I{u Z8zF;Mj㭏c*''7dqꞵ?u+s~ -71RWT3Q;l` oLnFETCVԪqm/GL(Zvy|~c+u),$Zf:IL_- k(2GòR;?MK|l*K`謬<aXrPV(avy掝mR-~{&`|J/#Dtg\aҢgzX5"w w3={Ҟ.e[x sOؘaMtYbQɗl$έ_UR%R =@8m&ɷgȿ?y%okp/~Fx#BھqeYB$vX5VAdxN RtG/}{o:^1 ``]n>2эV0"TP&YS6..GAV[.jrހߞS:Q^Qջ::r0?mXϑL6puTnj>L5+ulӛ=R?Rۣ/̼u=|"*ҍ """"""""""1P5n6Xl4FqVZ57C]FYõGgxcř7[xbնQ]8ڇX+ Eq_/`jҹ;UX':b~]3I>.ݾ}jfd4?qk#L( 6C h#v7RɼVMl+UI( UMu(]:Kb۟jPjr/Mo=g,N;ZŘWX'l=y7ET߽;iy~274x >M+[kkRuչF](?1U^_sY/2{]e(;_AScʠsZi-pOTyf' L~-m{ݶo m+~!~~B8C]l'ē!au+˱K6*=(TKDCi%#b?sOG/^Q[^~%0zVS<}﷦ЖzSQr}zڹ qq XO1dr+jòrR9) t&-x3V4f{$興5>DDDH7,ɵl"Q?6ҍ I9}rJ꫏`lbw|k{XDDDDDDDDDDDd2+FTE,*L1r;*I䲅ojy5l,]}}7rV =}Kv;=-6::={=dulJ}EU$vdfki=wmhv;'k+@A[-@7c-X%C2mGؔu` ݽ1[q dWeLXl0;L/WM_0ɧLJ#{LN#jb6=>V~6^suMιzMbs1'@ ?OΓpt{Q8R=Ϗ)6>yp9{dWQ<ζuSrMG׎1dՈ\"l}\k[iutaٔSL1ߑ^2-uEYU8p +6 Z0-Y7'qZ&}g[|Ҍm58{ߍ}fVtL;lt)Qp9w,T +A]v/2沟Q{ zHʻ#CC]y ~,kºVtʱ#D?}L~Am[gΠ ѓz?UMmx6Pܗ`[XAi_W>aRX0]8{/r=M]8dd0@Y'U 6;c\*FKl VcwҠEW/w2nruKMY[T]:QΫّiQIλw'4`rj%eyhgnT?a!{`5Ƌ@[GC6^ We*uʃvH ۼg5e(l{vN *Gg{p:yZX  P6|=̙_ xlJn@ܵj5{ +3?:&zZm˖;5iuVOwF֬vw]Nv ZӲa]#zo_·yYBzA$5|xN̝O&Řk՚CtMiI+um|(߆6jJRTvE_l[[?,n`;o =Y zkZQ9YW̪ٱs/_n=Y ?tʼ74v{lvw/S3̃]pK`?L֝%mksb Ď2laK(Pkw?i{5N'Po^@6]T(v>dbMYC!g0![.uo|Ie&nl8zJNyh}dꭙxHH]_Y}Q[?Iz)eV=+ v$ާ;̎AfUA,j=dP0R%R?D9)e"؃/6@qۗsU԰`a3٨̨5cWU)E9}4K95|,]VPF?]͂kuJ:]=Nz,l3"0m]5'`f\o% )YʮOQ|<{.Fn%hQ+ŴTK-,eG}&9/*{*D{MC>4"Bo=Aڌff35`R&) T3ޗn^[)^Vir#LAӷ&W&ål2kRr5FU}J[=nʲA}y{uԊ;F~ץUm~^S|Ahv,&~c^3c|r,_E(U'2CpըruRq}bN<7+RQdooR wM7+x!r_@oLAw?If$cVKn"[AKv$VWZN^<ڢv߾TTE T>eAdYҰZOJrl(w}ۼ7ӯ-+f.:f[de}x ծ@#ٓ_RcWN{0 ~A(3"zWZFa[_=;}'b4cA[#hÆ@x6#8C$i=_rkCg'OʯL?Z{T,AQ2w纮kQ{}^Kf%F:7^H>+C)d)Hr>!ߑV-u:oYm::[W3jP&(%YHv87ّJYmFd,NǢV~K5DԆn +e +['Y#t~ݻ̹}y}ekTSm5A*8#o|wcf_f8aQJZMv(H óƾ{뭌p̱+E@?2yҕ?YW޷ :=L_V݈T foSbUܰ$x_R7acaUGoKXTעy$6~'M~EY5V/[v@: 6 sDD]ae?}=2Zk@wJ9=;le݄+P^8RAC:gW[ӳ|ŷov%d3Vm9vVC)JAG䜜\FjaNCX[US[+^Ǒ^{$^޺H{rͮ6SeF*e{|;TܨLu-T~Qﲟ)$>\v(q/6Hٷʎ) +.B+ƴ$ :u 3xf}QRd P,~Xu+gد ߯r/VQlz΄ېa_ +/?7У]emaUFTe4Z<lo۷'>%F]z.ۖkl<w#̾|AskxՐ2 V7b)S۲'W^%f_8[%6:P /dܞf}닛{PiVeJIS|" ջ˷3rcm犓6?]~7Sc[T=d%.Tҩ% ;;f7· V;:5+e.6"k!S@0)_Ģ.a_-r[`i򏤞?7ϟ:p?5z+Jr=Ao>z#Z{:,[0iV]|_#}$|,5K4J;?.=CAᜫ-'T|G2OlTb xDvO87dSezu$w?mwҰ,MwEDljv;gdf%,!<$ i~ow}&-y]G-T^6#mS#Sqj\ĺ%`֊&ZZ,+hk=`4>'EBe-jd2YbUY;"ʭWVVhraҧ J883/:M}5pIoH]xƭ\WďS ƔjF~zNܖ\fP +دѰqsEȪTɧ~JgcC[3bY;qvt6Tl;ʌΝ_JQJo"5zSǹ<}&\\,nJ/#!Sk5m)F}k~ߐv,wb:iL<0q7;==F^#o<;&OQT.-Aup +@JK}fo˫PW'볺KXnI rnRy8Z#6D{9~Sޛ21XZk1ozV| ~;/&)2.7,78=Cu2Uf^'ax%Y7f{RT-%EBO{X?Ïor=܇s1>U=7ŗ#Wي~+Z^H]۰߼40֐Y%G Wl/YW蟄ɩh%VShT6m&\ZzwSB}Oy{}CuGUzߋLJ~#|o־WY uX/|_]հZoL<۳Q(JI̧E{\`tnqZHQJ>>DO/ǫ% v*O]kRE + `nMTrx@΄)x6:WKt=W8%͜Ѱ=U 6q翸5> LUTg"$xd'\5ܝoCCyr%>ūLB•+`:n?q,`ZV^!yqr'^翴oA2\^ o$]р|Lk Jͦ#IJs@tF=bR*@{/䟔eSؐ3`N5u4PvO$̓j}57Q))R߾yakB3$doR|>j}Sŕ^emUi#VTQ*}X#S|)("N$|ֱ !X8>',Z܀>?12s4O}ƣS1ѓVRX0toHžɲ֯${߾WuLLaAȍc|q^tؖ/0L\[fuPѕx?X:KȻz+&t'9LH7%՞*I` p$kLFёĬfV[V!ԯߒFz~=FʤZ +@$?OlMSru($qbڒ:?I +] qU|cԲ:_NkqԖ6қ {wϝ~(ec|_ N7+źܖ=$nB<NL./w͏guMrP2GS2qqXrK2q#.'d{eͺvF8sRA\Io|kri sh/X;P3Ăo>wxY[ږݪ-Gccy6޹(ǡltSg`X ﯸc4 +~"hrW93xInąӑ^9k*SmG~T)*0$Z( rw:U;$(άY2S7H$o[>/8]T_QYl6T}nfue7LAуL8'HC0t,Vt ]Gkui8uz$)y$6G;g~&QUfqlAl|h$McYYpU + ;=V c$:>'6qUM%݉![U:F!d|Q]L[]`:dpX`6KH|tz=kYN棗Ɇ;oUߏb.4` ؃,%GUTZ;UV@6mB9։Pljmy-LՌ3d=McW@E\v2|QcbQf%Oͺ8dK+aj:6Lk^՞[ V#$f>x܉̥nw|F*~ʿʎe,9vKdN2qPEtK/fgHؘ쮴{G5*ŽG`ܑ&t I%vGG@g# ޟoKՠS X*) N۱aWYjSM [d1;߈_+Y^kJ^@{}kˏF^^ Mtu߷R'IGG[ÈjBUv>tdnְH)jk _E[ZPUR7-kjzb7#pzJX^ 6H= bt7)홞yV纒 (:ד{aTVbq[_ qM&Ow|S_w[e*8Q0|&>v5]S2ShƦDZڱ#'`?Z^X]Ż3WW>otu2J[^3>;V2jPG~p;Vc]Ƭ].+UN\Af#gzīdtnk*qyoDq<GGŮ6Ac*+cmtbI?Nf LhlyWɅ-c6;>%ØJ.NV=U7tP4u,kg[:J/k)>JWS$~(0*k +N>ӗGPA$0߸>'\VqmUJU#d:|An2WRRM|@ܹk{}b]A/n;\94%m{})m krBT)F +0ߓq}ɇRP(6 +Y;:a6yQ_Oi~U::kl:P/2nYZPԢ_ᇖ,RGPɳfr_T wG:&T6v&-ZΣ9|[>N^ˏe8R[֪/crWLNuXJl${5v%YjŶzJrjb}:f7IZV4^U+ByNOVt +3s-pRT+#seF̘&ޅ3*a/Ujd}6֏o}Odb6=:Ud`IQbue\cR ꝧOFǶ< +{V%9E[$(uOv91L[jƸR:G9ض uޛkC#TCn#2/ XRbV+a>V6.LdS] oU '_s߹>#|_Iq%ZT ׿$|QoQz7YYKlJ \y8oM`- OTkj((}gm< LM- W[ k8@l#& 6̚|ǭq6SSeX7~} 2Vb]҄ED c'SYPpoDJjoLX_;9 @{I=NΗƋ,kA(E5~9w oהO^[U"#P`R܆;TCtԡHYY[C.4dx=%}65VXQmzw0W-'|[q2, Lޫ''!{q*9w?Oy}#NKUbh V=K_ }rv5WVarC(pCA{'ٸ ߉-,[pO ࿈8j܀n +vHOogCmS_(w)`{w?O{\Se[:w'F|RnK\Tv^>{x*3.oVͣ#)»Y;EOkd']Uٙ.i@QlE &HuVՌoyv/鿆cr:]agCJzV]?$R(Cmn +:F71MtW_$}~{GzvN>=&׺k2 Ш$2 Qn֪9bEXjT|#1}XSCvގ¿ zwLێR` - y~%ڲYٶc~>79!uڕُ. +dfCq =`򢿆z>>=(Uc+%ֻ,J~Id>'LYX+K$Z|5Mؽ7"[Eu, E Tf|M?/1 X/u'c=>.~X^A 5{%ZGPdv,}T7׎5[Mk23,zxC Xl7c/E N=5#xz,@ %ϾKѮ侼'B1=Oj,{J,;_QU[ܗ]v%a}EjÑ] Aڻ'V夽CZ-jzj]wmoߙ`e[YBԐc:q/MF2[;J_]j5>N"z +2;ɏUUU +}&X5FSOFQB#za?7,Z.y3Qj}5F؟5D>FQj5j}5>ϚF}Qj5b| +endstream endobj 98 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 33/Tabs/S/Type/Page>> endobj 99 0 obj <>stream +HW], +%![TkpY WV}8FVFV#~]*єgsppShL=!˟~"빲x$o}&2e6_Len soZX[4 P 1{c$6\׿1ȉw**.&st#VP7J&e,X6QF/wPLh82N TT%C+sB!x_}GOÚ&Iݗ092pdV$Ǜսb4U&Qm# +ed*L5qex6EV.V_,|Lwweƒ+#x_/SGbїŠ(co僩{Q=I0;*m&nm6;˧)7;ߘ7p ^'iscr0E2:7 $3*RFMLz6GҚ KG<ۺAjȱ`m۝>lIVv ݗJEJ}b +*ЄYe0d!>$~b*S)9HiH>e8H-/+!K2"ETu/*DqE{]-{}>LJdyzHa.U&qKdgS%,lxXR6д[)蕓Rir&,ICLY拱0hìبs>*<@+b)ע3XE6'ĥoS޲tɻؗз$?P33{aK)m%&X]*}%;+Nάh#!Tl4E:]JT8U m)uAf$ 1chj\tk%r[Q#RyquNT(Tl~$X'U7#Fk<"2"@c@e il+O|H`t Ɏ  w>Tf@h+ǿUf*h;_pkp%ӽtRNgC[hn5Iry?k^_D:f3LWnmJSKBx [hIs.PddoaE"*IM%7 + $k\%4LP5h1hD0^"rĻDDұA{]%7?ϔE?k`AmUEY&ȅQ j{d4f<}Xnh>@Lo\=~;8z+D}]b{&vxDBO9I1iilRZD9zajJj#*W =8|+0$2 WVGj\uSİ60?L^nX1mҖRA,1K#JHsdžI -jfLL{}\lJ XJ{H[z\Ww,YemX~ԣ?4UˏaFkh)k6I)42=BWrnARX[Ug7\3Cz)%(ק\X>kJ}B6PuuDK$E,e[ Ġ.Tj)x&?{p +^٤P\U<"pLU{C=}$jSBJ-3x#'ȴqPt-l6dk³YyG!=NL@`0.dDSvy*)F*Xh!vKs%j%z|+><9f+HH!N:@N0Ht`ΩX5J>_t]q@{Ysõը'|0Tؕ=(''I)q-li6SnHJYVprca$ +hVs?4#Q%-rК_DBI6Qr!oz]MJqsh-W{* y'p-F Z }q~%楾㹖;bB.Hr$`eLИ`,+$f[QFuȐciQY)8… ^ʐYṡO]4O\JMwVP C~s@;HJ' T$Cbʖ?|GN~Q˧Qm\Rfk :h0z8}n8}(G3O"Zta#lC4,CC% +АZYC#;&k,GJcvy,7Dky5 +&H sfUւ̂Iɞ6ntFuvU(@ [N`HAvB=hNÂh(i0]A21,&e¶EQT?8x;%9(cTT\BIpv+|8a+CR^sdn#? n_(L+A9`U|V?wQ>p>q\D+I Zh4K3MgE|, mN +endstream endobj 100 0 obj <>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  +c !1"AQaq2#BRS$34DTb5cdstu +%&'()*6789:CEFGHIJUVWXYZefghijrvwxyz?ꨈ +n@ꨈ@ꨈ +Hꨈbj֠Os#[3wc 1{,KUmJ$s,66P'h"ˉsUZv`Ϸ9aIA涨VִI4IZ{B2cv9m@m_lwHO/4E;#DTcq|*aVyų!xcev;&Jكb•g3'"t/k/? H´v8*,,DY8Fm[\fDɣ6ױip΋O\m o !d"-nFY3Y{DZHͳFzUKn\-6#VZϋw}VݭsN{AxY( +ꨈ{`/>fG>DR{[ تv d#v4n.c9{WiQ|HWEx;GwBe !+Ln1iUW/-Ef3a)n}zyW۩M5X/:9fm" |F^~!; 0?{^֝9 ,~afo|[!y8IlثN>C-c$Z [$xx>ʬS;7;2(>#n9 .t{ސKyUe9-aJ*VmAnzz81G848 +&yc#KvI9乑6RKq毝ol1Fƛ c@> +]TKpd#C8m,~.$YZqS*H'v;1b`f<[i'q?*MֲdYx:H-`in[RǛV̋Mե9$?*VCXָF˨/ZPtFHѷkynqV_#ԫYKW1X{ϐ~CONELڣN'"9F9xhUP,d /#/Hˌ s2FZv ['he<3Z~v;[] IK j S3P?1>3`ҹV5-K=Be)KnA+%xz$Fǵit \DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEYꨈO7fȸ,tMtݶۺ^Gwn.trDIFP{ jQM;JN2<9I)IA{:QR k <ٌx#Y e" :NVwpwn5ŭi V)^ ns#44nhr{K43ۤۓ3Z+UqUo֊R2|N. }9 G q& |4 ỉ!tWzꬍ[{dlF!#Zi>|V$+ǐ:Vr^YO[[e=M<3M<:B,:mxsEBh8KDo/c$kú6lQcgDas<-{~6iQOxK\Kj9'h{692xS.7 +.?ĶFAq}@oֻUXvO{Xɭ{[d` 'VZX{Q.6^֘s]mOU`!`5D&qd&^2|1ӫֺG$pbvN|깣o$ө[hmuR4 kWr̹Y$s {<G}}X:IHX9;\@ +1r̍Vk4 r]$8JʏT~9]GR5C6*MXҳi!QC۶~j !)7pj]F ǽ<9۹ hV~&xѱ̎qAco{Xm9xvִݍGWznp^q-mnik} k4|QYDXt>n9=ֺ2xVCwO;ߌDN{Aqd,}_&'<,Úп\:(~1N#wT~Js +GE6Dl{XZEi˞Ƴ.2 +.uġv$swJ788ipZM!D1dFhY |F 79Nu( $48h+2QCfK̶߿ >_LaG!0]/w6}x<,lJ Ύ2wYYڶ6])qNւhXJ2uLF1J*Al&`&,|l89 5{ZI$u$$ Z5Mz -&w?.Fφk1w4;O=E +^hWG dM l'=w[ /t8={\l7!,Zl[>{p\Z|LKVtHO>92{qk>㻁|Gjzy3ƒ-/Dj1b6Nlr,a%|L:.Ls5Ϣ@ ,;ٹy8F~]kzW-Y1絏kKM]:WQy]#\]fX%}Õ cxe3uL]8dLCw6@jM{╮ <:9,xK˳fLn@:œ@8i'dYXږDktlG Ov枖'&ixf<\ o$r<tBly# Ӛm<>k,p4Zl_n)#Cok\ pEn1uL2m9pEK6OQn $.hqXYzO;u8u u?bms +Ev${ҪM_()4^~è~ϻ;l~!uS~JfA$o`On>bhIMsͽ哺6Yρt,33!6Ud^ɛv9<:@J'?XOn[ٍag?tt.i'zEIlꨈAvn ǿ4&qzJra-5/li$9qxX/r4|<30qmkwۤJyriFf-a> %Y"Ԟ/-l<2@{r?2?/5[475<5lcFr6~+"kECG30Y4e>{wQ1OKUhz&3;sMZ/煑ˍۋ$bӁlqy7VSOݸcYܵϐI݃yfA%{4m$X4ufہohWޛº21iݹ5sASG ~kXjrEՕ5iۇVוѡOgOg>'ĸ!]!s\Xdqx [la _c08G Q!z(//۩Ig,dfׅxA^;'<082EZ)/V&㪝n ,,(Xf26]gg塯5= ̎.϶cEv+1u'[k$Q.<\#s`2p$걾X[;Ԯck R\\@;0g%|1F@L_C7[XݰYp.6X:&<:F^ײr۩e2p,アHMsN{AxY('Y@P:hҵMcS3%/I+ݖRcƒ,cX憐F .|QM@E#\1;˧qjyX18"NvfK՚ގc+ʹϲia\&bZK n5\򳖧t'ᮒa&;w{|^{.ТnAxȋ`&7fƇ $[8!@KM}(Uױ;x \A p55,x=soscytޤ@½!ːwŜJ pq_̂E>ÍB>O=܀ǁѲ&}V1 (-?mtFH`$ƽ+JvUQCK]1sdl^ejkG s~]Whokq@ 79dN%{̶;#Aׯֿ`-D705x ;:w 8Bk|cxZhueAc\I$k8- +r|Xmv MLy[9^{?"\lQR$nm$P4/%+ TӎctrF:<G2s\c?/ya'iosQ +5 +  #˅\v[BPMTXUg``s#$3|nQh(/ljD>- c֏ *z&<M@cA[PZ lo +h% h)US3qR@p CX)< |]xUA(,iA:(11-V"džw*_dc#X +8=ҦXY0 j%9k#SZZpTŏݱgkClҬ4!Z#Dgde|Dvǖ!"$^92ElSÊ,#e&'tʭ(RH^^`.*PZZmjMOủ1j19 9 [ddEx|7`W _FOHf{Wqnl6ɡfN]G8'#0upHU[%lRJB8<#UL2f{CT>n1 N +KvPUUzW2&Z>JQmmhs96z*Ƽ n5RۺU"(=bRꨈCL;Kŝ>kQ*V݇KEH&|A u[\Ȅ6WF"y]fLRoZp5z,{4nlbCCE]|q*aqѽŁ5qz:}T?i L{I<ǚscY`M0tk$n|xYz&\1dC\ #{s4r xqAav8h]}ϭڤτI:1) [I:r)_]EA.$qȁ9%d"15v,OikLƖF5o>'mkE>2 |lm=UgfC$nk =l*7.uB$ZOLۙ,0&16,Wlϔ(X\o j~ nȒE8h'Uh=é䵆9pSwQ < ȓ Rl.q11eFVʊڒ٨I90eӪCw{+H'$"i E5 be5vC6=oPvt ce`k 9ۅ4Q7ړщea9I~ ~ү*, !{^!?hW,uU4J<$(73sKJu 513O򖵏 sZ^PnS8q8|܎R(VnF\ yl44-Ǫ,Y; B6%qtc# +"+s;KsX!]Jvhia]xiߠ["gj/3y1|p;k@9!^e'77I<GB5`1y,a`m1v}ڕyن|caM*0$I4}`πQjx3#M9})cPdJ!U9Z. deT9r\ I#Z]unV|0N"msh>Uyq1GHTo=9TEc#V9. xox-[\KnC$leȡvJ{7x̀pCq`=iObb ulM|ϒm6-J+bv7p[cp.fB)h`ˋ%{\\!Qg_j={I23\Vf:8`'wq%4>?Oe$ck]AVaN9qakԟzT͟L#2fdNhFKKO$wǢ92cgxcx^ߑDZgPv+;_)c]G ZΛ5~Lh- .4m59qA$dls},]:wÍRC֗ 8䬶e! kI=/ӕ.1p+;7m,{H|cx>G؅Rŝ:9p^U60 44KZI6Cㅮkx..fV!:}&AfLq y]hOc3*6KsOp?(8sV%H5F`͌#fw^E49}ϻ3tw7=o]-prlv=>3sЫ㒵}X&#Xr=\dr}eǧKii7GD _o%ܻ}Lv)C0ž;Aw־N56.A%n1#wn$ , m0tt̍7&3Lu=<)pcKxvGi4}g"9%̉E#L05I(vּF|vfnhnjb..'i">ا&e.? q=2o]Uq7Y(n1 + Yҳkrre8;}׀~ϵ_GS0mv}mqWW_}kaQFNCd/-#vXbiv%}H-$wm'_lXZ={w5c9¯'a<|N&#L ʐ7tIkK ů9Pɞ1#5Ie[8 .7śV\  wh[^"coxxNF+#&82]7ϔ;P>d04铽XtM}'*𵘱F{tkoċ?DY2w?qMym4-*ϭ~h 2[+{c^8 \}AZtɑ !k9[V8q.O6qrݙe5;~@oUGß"G!IkIh;-J'ysK&6W:'<,9 1]y>\n@=11Cc4fcu#ӞF⅀ˏNr(ťՒ7כL-؍#Z.]5't6En:&?Fς{_7|OAZd Oʝ<,i#ٍ`j d݇p[X$D4 +sϪGI5bg=I;ch$Va.l 4+¹4P6 kVۧcgd6& ) %Lx0B6&4P4 +@t䩃[c.kCntQ>+w-cZÓʾE4_g/Ks<,KGY*N94l״=dwn3iknB 3MA##l8GIK#e3Ofʊ1cFM8V.FHs@9Ho89ץ'ڼl@ER+8Pec {C$8Pc9Ί604]iR;)1!xcCk!Xv3#z\hgv5= #IͅeZ.i`-h 9 +14fabI |,Vzzp0 pƴ_ZhN^ x&csCP4f1H&d +« + 8ckVaÆ60d5Ŗ͓1mo8 LXp>8:4dk_Z' `܇DGĸG$>z+^.$(cc{ր}yVaÒleL a&&=hb2XY#Z枭p*\8p5ㆊUO 2kZzE..SEc˘>?mhzWqR18~c{s޽7fI&FNFKZ]Hq'ּg9}XGag@qC['GypeZ|aMLNc-G.{z"iꨈb ꨈVTXQ:Yq4=+^etIFqtrm׀kf31CZ֗8Y'A;2cd9k\`WGswCDݤ߸qxˏ)|.iR_UUQ49M5V^xxGF9oV6V6CcѽcH!yVb",gj3%+slo hF'wlsvݝm^b 7s| n!/W"l<=b,P qkNwMH?%ϪꨈYX0,?;m&P{\lSwtik4;K5&SK76#Gtgki'wW^\]GPrdmxMkeztg~;qowN,\n< [;32ɎssZ8w1L0u49თmZi^|Ycȋ!B@s$#z8pȺYv>FHk0|R8DȞ*C˛umW,]$2nׇS-pEXQXt)r't ٵdYj{E sw-i7s|~( Y1ZmaV͇4TkW26-;_!i( B Λ3L33@cmt^쀜xVH m(ۍ~>KU˓i3Z6kkX;Ԇ s`\6=l/e! &WY>p7o;__dҵ܈fIkh-$;MӎzL? ύmBmuYkx۾G>چvF& cF,s6R=svb +I Dii#{ {x/˃K{lqca&{4{]6WDۃ^xt\:> ݖu z-[SXGxb|O;^(xIj g#;9YbE3 Vט@] +wEݔꨈQ^\vC+K%dpV [WjpyӉ$28wn6y>t#calxwoPɹ;94LlOzI'[hNVȢG=teŎps@@..T8r?ec6Ni`e$~7ky.U7m3|,-%5]]~~ Lwq#Y6` <ٱXdɲ}^o' $ ?Z_.$ngK(์{d.|;vUy+)^|Ҽ7yg'/1Moy1in`~iG9U?F"yw$siE#Y:Vs.%{n{m>HI]8Ýy])k߱#yL>ɻ r0-swD{RвuLL|3#Go[ s7'Ӆ͙7L}I VHlo<;ڱh4IVF!sYOyuِ_7c9BFFcsU cKf.+Zu} _#7hh aqO6ϢM>NO~V={kc¦='3!,yk/{ Ϳc,٢ c 9/Gg?6ehG$ZbC6iǏjYK3q\Owd{/p6 ~0G߿|m-@Ƶ iFAl +Fa4H'Waev{*}E2X⍦8^:^4̖l6C[ kwCr@Ueݞȕ{@fI 1 q@ϕ|Ős Hɭ1?mvkGQOWOc0!ͯ)8*s Gd꘽Ĺ"̬ ױh-'B6#XXto;vj]vK0(^$ilBHihAmq!|!ܗ8hyOU- caNᮗx}I$-0EgvΦkߞN35%wd1PEF`aI#fA Ds#Vgr'9!(0gAHh%eGNl"=w['ˢDv~&ids-7sK^:656C@$ +֬ݞNx |MLo;AU;'/2g(#=sy{}YѧfdYFw/aFWwxdN%PigxAǃCMH${Z͍ +oy=O?%c'I<ѳC'vcLBxI$0$ ,1cG/0=A7 M8)lWHZYccZ }RtI[OQd.ck}m.=yI6^Ð5.isE5iD$a;" +,AO$ +68.#i$,9=NK=4I{'WHAf0ܛ'`'PyqmTM!]ܯ%x?{8zg{{]_un⮖J"bRꨈa@ꨈEꨈ XJꨈfX]mWk!PXZ@p,XEZ"-Vgjt:gA ֋x~֫ӻE%,mjÈ`1M94鹢Ciڌ"|wa$NoCGIe,mCPK;cVh᠞֓뱺\9Dk@zzh0=\I!MRz6rqdFAGMOUeIN< xA>KRO5麳cd~Vk[4DDDDXEeJٸ7s|vC?~hdY49<ޢ""""-|6dx2N FoqBՕ9R7Pәdș`n{[gmyIk<@(~Û]3u:dO;[9h# '[\:""iicbGPG>E]Ե]2HysEKuu4:h,m(6VKzmfia v`O+1S6X/wјϠ'4VAhwQk~G1e{ZODWaƙ n(ktYYq4A䉮FFW_lww" eݭf#Ly+v/e}Eo~M7&/s_q~\t~akѺLI{H-{O!XxC&\XC~DY:NFdĔ?iZG4hX?ܷaH#C#|mY.ph*kDeHG8͊Y&I!"8B4z=V6?iʏHi7l,m+]oț'佦`c8II>d'm{,r(1E懍$ח"Qqܙ` 丞 I>,/ԫ' 4Oa>fikq c@.{y kEVN+f YF0x@Ѳ< > F#x?k viC [-?P`fF47k Sڌ(2$1d1Rjm^74Fs=4ӱW9|_^74T:*_:'$bg$qFhwppNv>lgI ٸ$Ep""""""""""""""ꨈ^7U΋/Er%H,_;ݟtRca06,Y{D#ea75yM'Wɂist<\iFxC[ss`yw51r:Zho!?ݕ=춓aM>=:6nJBgA{j~JF3$O!ZȮ~TٹcQ_,ZgZOȃM7IvW[uFvڨ%n6 sBhfψȦ;1ɪ6z"+SP&>Gj"=8 1#pkB躾f64dw-cWR}''L{(10ٜ+G݂ y~Cn'Jhe:Q\E]\ +泷xZ}F&/kY _;Zd84r^эaѿ$$>M7?Ee^hkLBK˭Ho7`-j4K8Gyq" {d%݂Mh&h׎;jzܨ.Zװ<~6z}*e"y@;y[c:6Tt?P d5l0_$SI$7=lK?ܿ,eyoDw_X1]rf@Wڶeˡ]SJ\uz[굽ڽa]֒$o }}Jv&M}9h#c#uxq?%vbϦxv>:rcWԱ15H x-@| ݭG?Q  Jh?T-'v[>-5Κi_=81#p '݈ŏ؂6p$^w; 1̗ V -of"0gbG|OtU`W㖴 g:S~GIfu7BOx2Kk6d~F#?`q~i[$v:[h9N<s$0 w#wMze?%Y4GNF5X C+gcdahp#AjHKs60.sC,vI's4n?>I ifFGiYOi:#gE|߀4x#73 +-)%X/-kJ)?K/We.u&A44}CI?i+h9 &Qs]3Eu 27ObVQf1:#\Nv.=dr"9 ^킄Ey7Ft^+ Q?Vvs˕lv m mot1<}lśKM#DQ6k#L3 +l=E$ 2QysHoZ?XCk}&gc4zYY;w-G;v1.IUhWl5:w,?-wblƴ]w{q^-3u9恄@ȃrE.M . +=@߰Qf@wUe?yek#mrVdk.l kv[?,.M , c;PHi{},SNc {qC+/Jq5MCNm}ܘZ_P6/-48G`u[vگ&|*Z^N+uX_ Z拓 ?x"""""""""""""(="ꨈu<_|dDWx'gwLr3{Kq.+='es<95W@Paɟ< ;/\+Z] vzgKIkF 0/Lv>l툖[aw鬎t[45dQu'r4[vUqg[dFf8̟&6;c.Fֹuz6-&(s6Dn""6CN7~f̉Yddct zײfe2j@4i^TJΈ2p; sy ?ogd2bN"!Moڎa{쑄z N<L x`q Ǟ8Q101Ge&LO7lpM_Vodغ״2\$ ٳϢ\h\nVH4''kحa;:l1lpcAp54<>~4Qlw@{Z<K靁Gɛ+3!M{n<cNse9m&4X/Ye@_D"#Ehi=uUk# a44;(} iBiPɕ$5b£ppn:S$3r6ochEb/f1tC,$8fH7]ƳF|.lvL΍7w~F7aq3v.L=@׉('G4G+y݂fv5gfx4 [W;CxI$o̜豍] VyWf쀟#-ٙ6K;;\KiUW+&.nɋ++"Lo c\(66\YZOIPv~C$hEZ.b}H;%c? U,\ Wn6LlpwtDq lipxk60sx4qTM81gTǑ|mZQbi]Jnd·"9X^m +煙feƄbß; ڭG4q_Nt;Ml7=|HA‡ +K"i$kԕyW]Hssg'KhYrt}-4ͭ͋hZ75ƾj{>g3m%+_f[,|*Ov\qTvwPd984/ꨋcNYw.0 w<'VLLYd#^8 +p'c_9Z,~KO$D2v7ٽ$kY}lS3'.wLtZqD3U띝8pto;dcAaO'jmlzdQ@8ݴWdjݘVS$wu$tTͻ"h˓$C!69zѸ{,}wɗ2v\Y݆¼BM{^+122 Þq%@웛36}]r#ٳU܉&#FZ7Z Q1O˗'89@t9.sHGOYc5v\XSctFˮ˃dkhȊbͲ<92r .95n}/sLA*жs,0M:.Yvo/e?f4{G lݴ-5Ys&FL{6EP9>jf{3`fT>I$փ>eo3I&9LvzQ8·ىu8ntCBJ9Q jLb#ko[<@+ZWgN(r8|c>}SwrY|o^xA==22˴J]ݐ+@`Jge0!5`k'1q4^v`pcְ;mc@MZoks`m-!ȫ<# D5ѳW4t__h$Z\]aϹwԟ5웴1{w[+ZO]~ٍ$P#_+\\+Җ'f'ebə97-hn|Uvui8͏`De'<; at Ǒ{1qԲ ahf؋]'8 >HFnnI.o6rlc~ G80xߕDDDDDDDDDDDDDE~Kꨈ/NdCt!bvoMӞ !p'ОGضhp1+,hslt4U]# +WMTz^VV4k^֗QEW,rG.tf^찷Űɏ{Xph%IȌGޗf۬m[J!ȏ!=iZB"'Ɋ70%x$`s®;,O޺# ރ^-^."20f<%nr R1M;k>xI2M\Ag^\\QDscs]DQ\y.\2F9#?*#Cѥ8䫅OuqҵHlf3\^_ըӥ=_N쟹?}]VWEb24z? P&c8]]XXr$C kkÇ<:6wc>Gh`s'og54k*>l{2Mk&^Ni01;~ ^A>*'feӔrbݰ9kK E+=-8>`Bf8$u +;Vͯ[Sip^%cK9'-Ѻ^wƫw=)\: Ԭ~NtxW;֚sӑV2\:8 oln{KqW Hsefeyߪ6LXY}9S,7H][h5S^,G)$ ,hfNB!V`ꨈQN4N$}JvvQ \cp"V# `{$u7IcMgDzsd ًZ:BVg!:637%ZXZxf7gW))ckOÕ:@lo&;0CAw5toMƗXa ȊZ Gy-gQ{/G7rծl=LN ):ԏex RaXQ5wwIRoeZHk |6G=8Yj:~GxC9@ ~4.\Pvca-c@ L!Mf j7 U7d>kY#VtL,]G@nNPoy$YFsiisRĘ;VB"- A=i kgǃ)p`-Cik>!ɂ,]N9-np -:&{Zf9:$ǡи~Q3\v/l5{hqiS=4Id#%pYB A#n{~ p=V%7Uɏis X\njqgfWd!{ۇwY$a!34]\d07AǞ\,b7'Pay8336[d>ẪEΑcgcJv̆S{s\U[A#CDxF<K#ae/)Rtȱ[1d=˺8$d0X,^[nnd1Dtp8K'sx鸘]LnC0 G[ +K \wi rjHViV4ޮSih,EnvV_bNIde15oAZ`l4vM&V7p>Ff4윌I++H=;N6G<ں42& dR}VmyB'\]7Zh 5=$1ټ#̭1~v܆18tc[]P6QÑhLR &5*[NMlcH|csIo\&w`o{yOsg\XzF< "cnvm3h,6fֆP~],ovp\NaC>6Yذ=*NXCw0q2,`s%M$lsds[@FvmK/#OfFfyd-k(-Āklh"k$4EMp>25-cS '+2pIد%1e.>D7!)^NCF[;F9{rǸ9GZi[CxąM1B֗! ]Xz,ӵ\"Dz61dt@_!tv +~㼌 rIm>~KbCg;av}kuW{TVNȢ-jI-$>Sf"n+!^cG4[H!ټ:2{ P6p$Me# uͻ<,xMwB!6Gx$]JѴc4=|m\]}8Zٜ8y~Hr Vce}<-&( {I#D=ii1z~Tɛ c~"6&>$; ѷ_|Q?gc)c/l_P`Q\\$%ǵ΍( TB|L6A#M<<}ݻݟ5C{;ٙ?t qpysIIQ)\vx^ǒ h-kA@<Qd-\)#uCXx3=tg{N'1*n:7Op >(>(9[.R'i޽=+ݛs lpXCHDeŠ.Z~2Ldc\ָ@unAF>812{\q'Dp/6.v{n&mĎ^sF{%qӯ=TO85 Gi''+P& s7Fccwvm&"+YG$CScis:W d8o q$6w49ѾG4Bɓpie{L裖RqJIv{KZE +'o& to-p="Z2XZ[ -DWWyX9Cc,vw08V![g7 +B'A;Nk:oxJXZd| KAq-|ŭ @ +j증4dL6@/pDٚX H ,x Eb=fͯd|m5Ćk. 3FߴK EX~> @I$ĞĒOTjdX&i;kǴXsH#JǕ+s͂wO#lꨈFDxY\4=X~\m7s,DPM+8F#^c~džK]WCʾ^\X0y48ZԘ$,p ^*Aʫ9;Zq8K%cdgXx HKC;i.U֖@J "tո@4 ul`PM 6fc1Hִ8u$Vƽk ` be3A-|-mq Y=JVr"L4Yq,ljL!G nXcqmQ|-"5t_>A-: ׺{MAXU,=OVﲟp̬•еg6 B!6+sm &'555]>x"Nk+%-1ŶSpգʼn?G2FI;c^i4I 3s nj;V5|^Tv<[nzm/?BjMcc;ɧG/h&&5Y4Ujʼn4\G[cíe˓4A҆_1Zݬ&>`Wcqn +eRi|sKFNn?vK)?9آ! ofI{N @/לnqb Ʌ-Opu=UEYLq2_ RJ;ݻj"}ZC(e \hsޙeݖ߾]5vk8fI#{Iac/Xݮtҳ !Zmۜ[M"8[s14eb@F4G:F<5сb5ܜ]J=>,vˎ#x@ۅpw$W9s/ѳsXO曫ȣ^M8vb|7x#c[ⴺ6i/PG1%h7TRgA፺z ROkvvKqdwӎHl |b@x%t^hg?&h#Nj| ڲzIVNVa{q '=(bzAmn& kY >y!~64lPDo?~A涎v~hqu1̊9I{Z c]]<u685-p>Ah{QdOË8ҼAc۰'èVt_̍A6>T,{׀Zz8FgRXEi #{N"7芓ꨈE8234@^AגK +i125𵡮7zz{j6{5|_3^^ǒâltC\h#SCRҎpBKvn" =8Wq2 4Wņbđ CkVo+!2)`&:$xMs 4Y '!T,???UVL1b7Cj2ɀ2A{ۻf溍nŦԲ3NȂʍ..㻍q-ޥ;IgvQ-mzx +擎L,h_&XFp@vov>dx kUfvfܼ$Lc!,iY=iS3+J%F6ёeܸt<+ggdG10] [@iqOѵ2t4l7{inF"Vkavyzo%F% rHkHqf:~D6dFC94nz1XŎ yZz UIR !eE;NY~5Oρ$SlI67QcwY7V$aӵ lscՂ>EdkXrAذ,Ίw2# cd6Ar%ױ2[)oz=[ Ε,rnkyiQh yd B - 't<4;[EƼxXY9X.ŐLkEA5T7CHӱ.<n|L68gv&ov{HsH>Y-h Iavj=_=D/&g{ƀ[Ǐxk},&i=Nv5&i.{y p(}3TMǜc0s_kzt[zcs+!ȈXm,;沲N~q6g|XTOy_d0#G~C2^ZF9SM*L3+d!Ɩh1<>M^y?ó!rd{ c8u&߭l;);DӢ=lo{ifjMkfmv׵[Zy +-:e|TS^.GF6=n׏*!ajYyk}Iq%oGRoYX}ǟw1Cl4\uIy[#;nmn+cZdZ>;1.,`}OڳꨈZƧ2Xdn3v|Aeح>xۡ}k L'K \ϨgMіDqY<df-1GC#&Xj[l3c y+Vꨈ=#}gR ?qwwyCǢjL5syXpv۫ys"LY%oy!n|q-GT,P>#Ch !oh-E>#Û3h.2''F1zH+_2<7cl۞F?UUozm+i@`s2\O%iP|{s- o^St}bl|p[{픷phX4jK5 ,OJ׸:2sZ48UsyyL%08X -pCFn4nx##)X+{&c^-u +Ƴ;>sDX9͐HO] 5_&+eI c=Ќh?XUhLC3fǸ@5{K4M9y\KZ4FL-l"#ƪ6g%6>c0:X.6Ik].k1ɳe{;J7]6o5UTuNfÜ-& }u]g/g\xcD P9T|KēIL Iu7,,u2 ` ZxywO{okGS,-8cv;RkdM=Jݝ#[džl)˘^tNakNuP8;"gLN'c .-cZ @"׷2x'vWu }']I#.6Wz QwQY4m&i^J;6=wW¼N(2[B X@?ua!*x&̓سHqy^1X&`c|1Ā$x6h2l 'vF:@#D3> +NdE31aeDZװHkwJ^x20Z+J*kXwχdWLv,KC a#dylcHա89n>Gno6 y[F;2fGmÜE֯nu$%Vؘ%wy..^$9 nj%ҵl9:;p- "eyYf|GO+XZJZ-Ţ V@Ȝ3'{,>8QOjZ~s\湘ҽk16PZ14aA+Lx;ỘAb3]4]>gdpc\4[ˉPio2O  &$yv[n7~$ gwrwt>ANG>Fl6G5} $79f&4aq-"Kz^t阧?Hn]㙻lqi 4@kAYVRV9A-km&6W5Kk.&6sw<+[Eҙђ;fqw[E׊ʗ~t373x0%ցp*յ AvD0ȣk&dAss/%Ӵ&IjOcf _51iCrw8EDnC#+ 06N{{ "m~ Qn4J율!qs#=|YLԸsa6dpK%A #yO +Mۓj Q͏hs%tA֕YtpYy:v̝)dhz7sA3eo;;\fPK؏,k,GSrVRX?ǖx^p pA5Tp3Iֱ͉sͮwx?5oD‡fY$ikkƵx-^Vyh4+#$;qD\^ᴏ_ p/.{p?Zq'̭7n{1$OXŤcUs0f4fnMŁ;cK=M~k$.A0|@i p6=Kn0G ˶6f`"[uCao'w:̘R|<ɴ8HFZA!^4 VbL.V $ע>ghyW{{[<_ęDy8cF3{ѣmfs\297@dN̟EDPV.ꨈW[D]+Z,^aK&dȞiw]kYkt;m<F7^%fd^_ 廚 4 P+ENy_3ֽ pxikHUc7f&i] v.iOe3DnDɎW;b%̻湥ҕvoxs̑&l;q]8U\ZEq坙9,hscKi筫ogYdK̙ey|{Xm Pm9};1ll07mߚŅ^aѽ ,{dy]t/tA33FXugs]|=)T 9B6l۷~u´{5 a)e:68`3J~1c$c,9VUqT00Yݰ'9u9%q$-/n[LvN;6ZmrѣhrIl=y_Mk|Dqe'Z2 \wJw{)境{],R7Qe>٥t{8y^wn$9㒯,z?O$l!E"Q7%J%DݻMnZAu*h0+I{x<@RPό/kܵ h&;nB˧ +fTN9Ǚ91k#W\tS.ֹ|Os(7 {s6;}pi k%:wJ͏sE'Tq4#D,{.lcG" Va,Z{t^.ppp]\DsN\b/kQ!ו&>lM!<[6kH8-?N<̜$5ۙ<.e`5|4YLwkC.  6}Uz\K] 8mȂ,-~Oe/&i6րw ")]83"`0s;^Vۡg7.764eY8Xmahs\983@nE1kH6kL#&ʋ-ID֐ZF߾ Jۻ<͆yadFZrZKK*Gg'ďayd7hqqs˞V8tp:cX֢#a %!6AX5^Nn/d(!Aa)Ţ '"y20 6#7kN'7:(wM%s,v%]VI,1I 0H.-&]O<=)[ϔ̩獍} +kdqKdxOJCK+ n yYmDHsY(MKq.u{Y+bXꨈ2$tM=Kn¸AFU"σ o}+#OZY#Fѐ\EBFI4qLj❥A.;쵞cgd{ݵg_Reu|׭z*dcW8}W AAC#ClYxU"""F4hDE ppl)DDExn3`.k y,DEaٰ6f$sK7 7+興MRgFV #S/?o+#>B"""(+ꨈU!atdc֏nO%YĞ.f$ ݽa5tx GڱC6\“sCܒvV;W6G Kwy_CkEsCŒj3Ct AC;QA;lȤ.Or@ +=Cq3 SYiMim<Yqf~L?^3Fǭ,?|^3iDq;5PV!ڜ}m7\ς]ڡ?1v#ÅN=sn$kp6ymx[Z.Zz?aO䅼tu|Y1h!-pȴZ A?*7ZG3m_w8 N\|7א$,}m78n ~>1ϒk6toXU׌:wC_65-\@5j>,NdOi{2}V&?_nf &n#v_vHy"ev/ҷüi*o=}lf;@x{q^FF}+ҭ,ď\`v9vɮckUAp[f +N ZK]ȟ!WI-湮sZi.ݛϟ#we̐m&&Ei=7 GӤLxws'v/vfD8ɛF)ڻ{*cI$ }#ncke$t3pltkMߵ h9ꭻ!0z"$0AxV3`tlS PݥĐ9>R"Ws#Xׁ5q"x#WfɧM4Q\ZނXf\_Xe{Zh%kϐ;aPw}ĝ]wֹkG+U6!|ӶJC>𵝢 2nqtSݎo$FLMhkq 88pGߡX6[qm?[}kWf>#c{"'IphvJ=ds sX\\d6*mq3ז9ոX5b֖Zֶ8e 4̚[=?[n\,f`k#\CK\c#0?Isxeym,nspD2>J{4unO;xŸ0A5A+|{ZdGhu`=GZkmfdatws[@wuTGEb..3{6Uzmh|OAf$nֱ47;@u!5(X{9^4yBӌQ:Ifsm\Z7I4Qha1 tokL1np= +.d7*1ϋ$k~NA|ʰҹƽ71/h\g:zNs\_u[NmAZ.[tZu>"hsehd89}Z1kY;byp$sZsgӂbl2!C&<>64XAHSh4jMd#@ ;ck姨b{E,ȗ"a1ׇhM$z║@q/Z7l=*}~igF#5isAɤslgM;ex{[h汧떃NxQژ 򌶸m-y ݷ8"=i2O 'y{\Ӓ7ЬNj-hΕF=9߯9ۉ-ƍ!rGV= ##2(U~k\E7uKyxdo.kq5oi#=ٿ~KKH&Jc DŴI8#M'51w, miv]F4)ӵVghKLryGE +ꨈOWe#`9ŀ:Vs=ztbm^,IFG,1Jw5@ӵajھHA'=F`$uizLn|+n [v{I:&ct= q &W?p#I;⮔zz|c7/`iaw#çROr"Ykcps\!kkҭ`K.x͊iƍc,!C ,a9} ZÍs\Dz6Mwh#A 30#8jT6߭ҞkJ`ɃG8E"N L`sc0JIipuW7cyqEYov= =y{Iqu\Fo9G`!7oknȅaE#{ @|rDno{OfdѸt{/p˜ Lx#kitn~zQ#ԟ+u@>\;4YQc h߉q׻(p|U\ǜ>'mo{փ}}<ֿ3 "^'=Ηa&DO;Iv=W,yچ%l3{=xy A&ӱ yd&Guv 84}o]ᑭ"dcHZGr"'Gt4k».N~&q%ݑ/ `(}d&&fbFa͒Q-CݴzךHlSEX .8;׋/G#Ms&4'@:47,\'}eHF8}[i:gp_#19XCr;g<[v.nvN46=[@^kO'Sn`FEJZ#nS#3KI[_-!i,_݃pn^L? r1wֆKjzv>ND9\^k@ {m^ :z,圭D q{lk]=ˌKVJӾJXQ>@:|.l=)ke9,Ccq ɰ<5=+J@% >ߑi*{;6&k"m ?y缱/Eמ$ޟ##&d #.hѻ޺k\ ^>F7# +(#{}rH4N ;w`{ٷϯOu^aaI[9).8 ZpN,,"^h{Ue3~F>yY!|ujl|b>HƵ/qs/ugViYc{h 0A"+8~;WNcG9v·j#R 洇7H#ANC!;8ؘ7\#v=x]h77nG#c8QVq񥕲A9Փ>\n>^ulaE9$J$8sXnUä;'* wRH{M"sscdl/da4G5t0[!r1H#v407<pTUV 8{sLNsv^[ixa!t͍7@›Q fmmtHwi8xHȆY_,OlR8cZu Xbӕg0 ~Y8^( Ck@@-i%lAd>(ci5[axiKŐA1v9ֱ^IyzEITꨈZ3D:vNNI|!/k-kHxz5W:WF8q`iqoYк^Z dod%w# ,\iK4+I&xt?8@P4z""""""""""""""""""""""""""-f}<6w~ݻ48Pp+fZ?g\v5ϢǸmI'ϏEDZ7Bn+طK~dThꨈ[gdise@89$Z*v`Ô@,,%\K/E<\ZYȋ/2x'8̌{$=,ɿeBȚlKw-J+lf VFD9!ZI$y+/3 `kXΚB&3^Y-D̲ڲh1_䙘z^C'9X-vא1cnD̆\ #+ kƖ'=9O>O#)3(|۶ +kOZZ;)숆,1﫵Ö =[~kEb`q$cS&<#q-$>o q,}[lp@~Kx9i%ws2Fq'+3`ͮ;sn3c|l{xZP XT"'vK2SW~d'|e3o{+yuwvO .vLn>ƛ͑;ۏn]@V̜'GW 3^Ȥsl|Vv=oJ1x ĐO+#w:,3Z95Š[:-n&hԻ|Z%ۍHesg2de6$tUe|2HDNټVFUwGW+e:K#̶#htLq uMWEXtw[ ts8Uг^#\HEAЎy>E1]919$Hc]6W4ij23&,,l`=` i9 kmٍJM_N&P1ńbEgōeE;g63$. vg@豴 dQ$RL6GkZ9YRTueOrFǞywػtMGDpb x.$@=y^AmꨈUŗl,qhHG!SK<~kZtiK'd+N~@m{۴8X3N\!Ǘ:Bw\1EKZ'f{s$cvDZZHsy#׏%^;U_1kXAxd$WS'Cw?7s1$T# 9cń9u1|'sMGP:65qy >( X:ɊwE$Losx$ G+^Ù=>s#~C ۶uL׵]65 +ZLKN汤=muQ\:A|e *1>HC3xv$JS ϕ0w / wAQt$1т{e[U4ݭ贱e>+'pǙ9бY{C$Q?,ɓ,o/ŴE@.>k;?G9.=EA +ݝh"sdc3em %ΪvFش2Kvhk[vj?gߒhZ7p f#g5IY8ehs4 !jb{6XֺE +.>wQgf[r&|v5E0(x.f]O<h PG4Y ; 0H zQwוsJɍ3f>Vx`a^ZF>@_*grOssd`m ѷQ%Z|"W |2 =OQmiwYv&1[9vlō445zH{- {M./96 {tW*c7pwFݭcCWQuTX]0ozݍ{^kupk˝: ܩ#%cۅYy8cH|3@q0%]hAIOdfC$9Iݸ_akp={gt:#Nֱaim[zzƟ9CɞiXȉ/bj 9sctaq[ حbiYsc֍ PϭؚNF9cdtG[X |Uʹd+e")gdZ20 :^Es5b>.cC|P,3vk%-^wg>)؂)19&]|5u#;P9$"3fK{7~/]餗װ; R,Mꨈ-J"RԢRԢ"R-----J*Ycր=JP(-J""(KRR""""""""""*]t~KꨈAyx1c{ɑh\xZzIOjh5 lK.#]@cyĿԇXSavR ^,*h5{5W0Z wR5_WwT_cS+3A~jR _WgQj?W#_g'^Շ>7~^Տ>7~N߲⓮߲^տeE?OjO+|S-+|P5W_WWڧ?A׵O,|_sU1}DsVwݤO?_󊃯ky?OjuJ#Msh5_[y?({WOI-<_Wy?'OH5\Oj~eGjy?H5s <=c~'5X׵*oGHQ?9Oڏ}5DT!G>{PϹ>|Ou/!}?aܤkډ?r}=~a܃^Կ0I?0}?;'ڏ}߉[~#i&yysceC "d1ϰhHi`orꨈ:6.$9LƓt-j^^<Ɉ$q$փٯjvNK!)dMsv$)쎹L#``x1$9-G;Kg9:[>s v̪;QGظ͏ʓk ѽv:6,e!FcdY=D:0.C"k TYnن f-eKC\A-&Lѿ+Ow3GeHMh &ZN֌QwwK$Z/@ƽƧ3wjsL)!rI>XC4_K{lz>Å4U*G<耨-TߒQ0IX߷uy±r5cldRR:+RKk}_+.+P,i۸F1<~bby0.~{I&>J܁\_UҰ$ȏxԤF ͐wOcY7:5E<b[)ANIL0^ uc䲁 +% +Q3f8PwepTݩ) ( +l/u~-ήIuCtXX5)V6׺UuI11d)mWh,^dsKIh%$r>r…dG [q>Ҭy.D|mn w˱I.!X7=4qii{Y y]OQKӾԹƚ9%[2v7hhps-n >@,J_ɐػŻ| Y䂯cMG(uzXWl(4THJ$",lÄ"|k`t7aƆțZ7cdBgx^G6s&ѡ,#itG +O=zNG$=d }xm:)Xdtf5ťҐ(,@8_:6M˩O;"|P@mcPNmyndwgu7"7WF8.,RW='rcIŇ8}[.VFv`@6;g|m)]K Pf2ٺ7f|`t#uy~iv켜1=ai`9ǩhpO #v^&@䵠<=\v'RCP~fe~ެ>#{:K~>] ~%X~W +QyS'ZoNvw3wS׏z-v.f6s} J&D$ah{-@[LL+ :/-r0"p}CȎU#Vlm7◖QW..6l2ر>""kpuWgMRel"B>oO`Ownda :&U;J۵YLhs־GH-|Wcpwr0xݭ#y>]nOՉX> x-姏5{[vV鹡g+3q˘{7rElZMM܎#fhye.i~ݼ|N~|jmhWy&V ++QÈ=}B.k@i%dv~2IdF|,I 8.>7''; v9nԬ0^m̅CZE/zƸZ֝#0tr:72'aZ\:OdG9' !PKAk],1$yox;XW5ɘJ]<28Aπ4(xzVs0qmX X5iga$LCec&s\v ;qe~0921bwjtUVӘmH' +i5'xy{b9ոoHp/r42F "@Ot+֟9 ' <4*f|5 lZE5$pUPI,xfGlBA/SŬnʳt#IOdcjx#1wb]b?ߚɵ7Ŕ!%SN,O3jei`1>F7jsrrr̜d.ֶJkApu8:Υt{ӁDH *t7ꭾDG?ݒ1-jꨈfc;*2{C5id&v]3 g[m[KK\ݖQi.kʖx?'\9 .6\7~=.'aݨ'$Ŵ8de.|:0ݬ {5hY9œ$lkŭa긿 |`(P y%쨞;-Аa{9oK7ב]-z\X]m7|?+YB g͏=C $v,`ly׺'4Bs]GX{ .NCc7n@\}I*"7FW8ˆ#>b0UcdA%8lac6AڿoWråǵuUߟv[m=_.W^}V`D"=t2;sXK@{'z7mk&wlkwP$יU?41k0Ț&UX; +y%\\ִ '衺{ȟ"'35]ojC夀[׹"[+]ld@ ӂi֢lr8b=`xj,h&L~C6;ֈ'Paba "eI诳\ydkZ#smh\+AF"su{.i<ΒY78>򮎼<7ZBbpAmݏuo#J|M ݷv<CDәIGݹ@t]'HonVDIc!{EqEe{Iʯ"Vb^Hk:h WT1ݳ8]`qu7JǍ_nczU!v2A!kϯc#ŃD'JA,a$Shp"u¯_Q &}||d4W̅hUPV񝝎Z(NkÃLDt1সXjY&3]BYehf/ aŤG:8[LWŵK>)ΔE{7J`ۡc\ת嶳qc744ȮsX6cuVMyfHD^X}Y:gPn`*q`Pchs 5\6Ll˳0^9OcIM+KZ G[6iw4]>~Ӽ;7@ں>JM9Qe"794qnd4{ݴ4y +j^3vlw?O+{{ 4n_'Xܭ9Ŵwڽϔq]߁r۷JW 21 sw0}yP;= fǙy^/ +WteLײ75 [ 49)}̀w yy!SM.n>Lrkuw^>>lNlh-A fJ}s3eaٰﭻEY$&|$kL89,cסaA--@<۾W4\bqcsoRŒiZ3@e(wghM2)0y6Cj\I1w98@hU¿6S% 8nvch-E|(I{&)M#vx۳gIXmܿGIXwwD8no{ZŕFǪc[ }r 8l}A Qu(,k9a~,>9"7>6O ,vގ+yTF6`z*ӥ&,\mpiw_5F>4sw&Vm7`;hsוc]$M:c3yvÒ8=JV9<<V8M=W^WJrtY6+ᕑǍ<^`eQ8ycٰkM-kۥ\0~fxp#Ȭ85.6,ؑ$kݵ.sĻO4.g3qu[ \תkK;.1WqTgi3i. l$8~r6XƖl /m*7G#ߺ8'v(_UIL{alihp%GѲ7Ǻٲ;ux1eqVZG-pha $Oke$df[63k[@UsOҤt [FѿE)_TzBԀꨈ0Y44*'ILM$ +_5ofN솉j"ϭu]Z#`&5|sjx7hA? +ܧb6׾S>Au[;9m0A\Jwm2<]im WD|Mh- AU^znkٔYbvֽ2)U^Fq5u>2vHC; h{E8|XqvL B^dkC/yVTqd{`0 ow_W]}I85]/so #7&csr| A4B=W>S8Ad9w:~JfHbϧjqf@lj#{E?h <GW:(^8U[i=yNXydds(ƃ`^K+R]ؑeh4>KE.cC..FƇ5YĴrGڟG4d: # ,%z-\<,h'-/1ŶZKZfZ~p݋Ka5Ž#%UF9+CaGЏ/U6nn>k`:[̛-usq7IXgXkKp4Z*rElfFbps\,Џe]~K\i;cd"i_`e#L_ ųJzr ]XUucE23nmnibŃuSv@/f ->~Ƃ^>/n<-" w8<.jPæeys\d7j[6<Z +ĺP!;;I,#-yձt@?u5tKo"vc<.U%[DFCM(hG -"~=Ń/|S2'O~ @[s"quP9.|W^ڄ9"G5߬<9y*~sӵƷuӕX ax;ڳX> OeY$t,yZX%m<4/kKțQ1$4ͼq|QH61m!4 |L&K+?s|#}xY"3,ru!=He}!+hn+0kX6dOUk}[GE{p7ɴ_Fg|z=W<.\s^K>2itt:/ݏ*]a_  s_\tKzu+ujxc G%5dN&Ә-{Lok5;cixk_ݿ%ƅ:趋 7VY+{4STǮb ݵ5>bJvld /*r{K 'BIa1 >>- 1!s|F-̝c TVi4]Tg.>lJ֦Ԣ-EZQRPE ҨuPu(RB1Cfkw ꨈ7MƇA' v=$36,$l/0nEySgK({1oz#ߺ1Cy_'j{H0 dϖx"~wFZ3t#e,owϪ|3E<-pnTUp8Z,]b(W:,[]p۲/CZCq|tRF׽C[P8Z -cv7Q$c]$F>>Kbh7Gkh%҉hMK\v?qclwQr;M!H! &TYf 60:5[#,ݥhiǙodv7mŚ:Q352Gol1<#&4ܸ'k[; k|]V__t_5~E9=-f;)4Z)#Kta+عz{yt4w(_Dc4)xd28< ȭ^ s1$47p4휰Ϣv^Ni{H?ŴE;AƧ_ش:f-C-kFySoZ22 y9;GάԍskMqVOC>띧vHZ+~ŷԠ;mniVGMK" |i m&yZVj&Ƃ>6~_%Ħͬ6@m8ZgJ9푎k0HOt ݶ{+kD9MD^<'[/=?=_'mc&y$d#c <*&+?Ux"a˛<Kz>Crd`slQ,p5ӎvLx|vD}xp[WǞme|y#NN櫓29'bwl{v.N@<$=m\#p hkJ֯PkM" Hv|aӲfoQR6ܫ^?_፾]CEY!'Z\#R!zw >Jr>6v[&xk Q *3aԄlD8\ֱcW&8F dc{A5Ñuoxɜ3PCւG/&\j󙝊Ǵֵ݂CE|ŭ'i|(jIO,2>LgO3L2dr5ёGO; i&4φQ@F8:ȫYFDY,l-~֑9ÏzLashkryqvѴϗ\vi9\oVs6fd6C#۹cV(Aŏ%Oc yKӪq]G5ڃk$k1)uz-I^DÖz{vN#{$dѲ6E|.-Ս?#~fs _|sy9 +ݶ =6x -`۲ji͓n>Z͎w˙~S;\#k{I!oհKy{,ŕ{l{xɁ s &sZqV[5YyG$s"HZC]GޫE3Ɲl';?/m;i~$H*-6.VO-{ecw>hr8fI{0qɐnu5ڳ2{5ϟs$;kw-8׋p3#Vy{@3_uω&Cky-49d@y[->\\Xs_ޏkʫKfFn!kc7e_Gd3 0f{b92ؾ[]ٜ hqi=WsXe4c{=:F͍ cg y!AB!ImQ§u*B$TҞCTIj%J$(п1*=zY>-vꨈyR3K hp""|D0-CaքDdv}VfMRbg8+Mך+rFٚY#Cx L=ai = KC:}IkU^_-GtkAR (0AkO7uUPT66Ge)Cbo'h{Z>* B<86hn h5օ]p6)ǿ!IvЯJPÆCʂvGW8:68yq] L5`ke6Ϙ&eӢA  +[ l0D 'ԀTQj?6 +qMn!FM**yj! +JRBmV:(w +QRTuS-A5ʯCcCPG/+ꨈI1th$ h^sݭ{Y|XXChub>akYٳfMSGxD߰8#t=ʏZnw-{GgY<#GU9PAS+$Y jl{MX۔!X /se7Kv>j3oHœ7" I"lRH6d%u5H A<-;{i Ѩ~{[~wףa,j]qus}.}S蝑nIhأ/8ckxs!-GS*5 s#G1윉 "j`䱵sT1DC3wbs۳slj;_lʰewKKY̗{[[[ha+=Ѱ5,ݴ6}nmk4oS?1@{2=(,7i۟6s21q`B,-FMG{2p&8:H9$8 ^Ϩ'zy@oiypamՠVB;Hv2F"HxW*%LWfI q 7UMy[7(b@Xc}@5v^_ح (FBo!T%I*O!AJPO!I +l5.6M'KQV!hB9> +O +K Q懂 +Zy%<_8PG<PW+RSjVBRP9Rm9Kx@ڮefL0czN/sR=gOˉ$@V-8[^__b2?#TWE +&1cX;sI.8YW ؆blki…fe?Řa-.tW +].yvS߽1=mfS&2qNF9Az΄`$NS#ۋK|㞞k'AfXCÝ9^jvQݨcɔkIm11>Sl [KG WytV qsb|m2Adh&.DJ/w oSӖs.w-c\++X1Y12[#bjTӣӟ#;DA]U v+'#]q{Mm+yAj\RtBIR,TڥġaB P #QJJUuStJ* muJStiM_*BrF +?G/FZ~Koꨈv?\o$ƨBJ)E*: BpMRpA!CʤxJ胕UҋF +CA>Sk4lG#lGW4WQ| U?1{R+~n*guB読a:sHФV3csV9#KnsO!ۜoVv&C!/cAky.=^VV25Ȥemp. Z4EWA8QAO +APQOU](RZB)TTPsA +*SHl +SrZ<)R)4sM)O^ꨈW2O܆B4|ws<^dޟG =9]M:!|yOŘ\7xt[^gU] T TR-E)jCi)RꪯDTIITHTը퉥h$ %S6`l/ٌm&7:h<]zy;^ :aUD$rUIijfẮP5ŪXrYF-ͿZ{,aIvRߪTAM K%RYE#_EhJmTE4_VC_Mz9M4ꨈy{W2O>A/̶:;^˔XΠZ#,0y~KdcjXkE4SH5ܙ.:Py7deNٟlqJUǑ0'qa9%tdy@ ɮ͛6FV6$O-&ÕXE( O>kg :9nG|y,OԎ?\ߍh;?ar>V͑5< +lYԣ#ɦǚY|,u}I<炪SV5;3RyMg>Bʳ٧9뿤|5_gEy46B}~Wk;Vվkt\^lѡ+1j ̟+d4~F[dM cCZ: -yd}qs||·)ǩx rO[$15΢@Y5عr /U8 qtlNyU̍iEAԕ̇KPtq4I@8n. ATY7/y[J(!J +PPZuQʐT9MK*T)*-U (E ZtU?5zIZ@ꨈv֭dv-^&N+%93_h,Lr,/{qq=BJ[^I!m5 $*Ty)!KEpy#AAV +J:UZe8CaMb]JjŶ$,oe>sop4nO_UQȘ1|BGJ|#la7*s!tJtohi?[kVEzMC>-6.HkX>z4{i1!5X63Vq>ʗ&uŬ|!"mtr }V>y5׍6n_ ڦCa/1F.v; + uPnp oh(M8O?key{[G$^ɛٶ*TR8&TS8M򠺔MĨܗeTJ@ +%(J*IEZZ-*K$&ڎtUvIv RyS +0W@ꨈk|cDT-@PTqRTҎJ*mTrxBxڮ)TrJ %Sʫ$iltPE("UTdiciK^paH6jIS"ԃjQ@I7+]hꨈv ޸#:2ST-k{A6&\7A W+:'ؽǟ>\Z /xmC!f sdykMyY Zw3m^0HxIO$s-N>mŧYEsd&l=⯯M6'e +s몣#G(G8wnͯ-z'ŏ.3py&t;ڣnq-/ zzEZC*4RJ +,S|ڂwS\B *KyU5O覬rU"OF)wP)@<ԎM]I JQI UZUҦ(8T4QE QKZz*SIHNlώ8=8Y,]K=n#s.<ư2eш E&%dbfL348#V;pTʒM怩"7_&UJ*EIVrك i]I #gs3n .[}TU22cĉic:^p;{dq>w!09+ +-g/r.p їﻰh| O*O!/%my*·Ԫ M9A(D$RB8S䠑JBtH)T @i-E@U?3*Ľ$Pmꨈ֡S/UM@uPuPiRN AH +hZ>1,ݖ-㓫acIuLIsQJ4i>Օ$X.6n>B^YZ&gLWF""8,>@5;ˋ7,u cow]-3-I&7$uVf7|is2qÏlbm +kE$E!<<T|PM)Ls nmn.Z8;-i/noiIoNLwztzB}Taye%8!ؓe_ԲǎAsc5oxhdQmi['ʸak;3G6f\9]*}bh}O=T惕ߘ3nd&6A'l fKw;/zZH_nht*&!,\s"1FZݼ5y5~gbԖPNF,ZA x]8+0sЪescnqBϩZSQ~SecXa1Nhv@U7!d"~W#[@j*i)HL#0MVꨈvav-gh?YB#|̍yDsbտ rq4{h˂Aϱi<ڋHVai[O?cOpjXIoUr# 2m-vo eV6@8sC-j\ٙ6no5IԲ;[=2׺K(~FSX5Ž~ +V[&y#tQbYB/I7FLYɟ*G_½2}IF-<‰-M<N:MD.$](e;qcnp*8}W-E#{n(cuE->wЪzk`=;n?r_ʐ;'*b<-c$p +Ç i0|0+qkEzk}.[Z״3< +=6]gGBYf}LHu?p1$5MB5tTuB}ϗL<WÇO0"ŁI^|Mh6kq&ǘ̀ ,`k"ِ,lGvdȖۺ~-_8ßrk4Os0dn,tdv:q` ,)25q`ǿS+&sxu 4}ym(nz?zrTإ>_>m=l6M3ھr31;]ftZ贺#r+yRIw-0ՠruN݌ѻw(fTZtťύc^*b|YN[g&Ŭ72$$OɺYpC&PRR4x̛^6YOǼ&M=cbG?Q]-85Oq4ЯD֧Km$n/Έ|#6.P966A^_WtGꋽdlo7Z[;cKU6s2Y }>bK“<:MSgoVkn 4U{43pw-p.ϧpP,) )U*4f?ʑK?+Zꨈ֣Q/BjxN|bXsM{"qo.:8RVw0GvVx ~EP`[mRҦ>N,ympp t7|AsKp&3'{$Jq{XRs䨵WUKɡx +7vWWzґkGZ^\|N 7/>K<ܭ Rz^>+L0b5[Z6wgK/iǙ>QnUh 7/䫟yJqKE4p6XAŻ\\۰:P" GMquy[ѱ]$m cZYʒyPM*{q#hy0ˍ'*G4RXol.woރƹ zi!Ma$cy5K;ւ&XF9%s]V#?:Sf#kql8gZ^Lxi٭Vxx4!bäsNxݻip h7D:&͛"| +tfFc-$ _ď YйqEl#5?5&03`q sS_P6F=;5ZI pHžKw%|Z#QkVhkm9_YC;cIdP5'da+?PfFHx:U4ҍ `H TSʪAjl^{[\~3Qe'sW[a1k\8 _n!@ +TQ(ڛQ6*+P +B-FTUsTt +@%JM?ʱI +֠ꨈy~њ0_DRJZ& +StJuJ@JoQO5 /c6'cyY`q_@D2wwN/k12!f4ܮqGuw5IFWtW;3&&Akih`ZmʖE<UʕʩAaGU# M#)o+^fa1stOcEp3FNJ bFiGP(Mm*>}UUJ ST"ҫhTՕ!qnbrA*hy*\O !O6 \(UmM):8)PҍPJڍ +P'T +E!DE +U\ 7j-)SBחF馭kzꨈy +_\ݢPMQ^殼Kk=IOU&tRo$Rx@{e=A~:FFF~Q*ʚQJM*O(֐ z'!J7W@pwB5(E#BPON) +g Uj-KT +JPUH} +RP!P!P%BUMIjPBšSIJxRPOH)ʔBU\(ZQJoUꨈ?l/._%/)>S\ldא +q(]W l1cEt-pkE,J~c ak;@7jjQVC# hxP =:”Zݩ$Cqx5s}o,dDֹl\n-lc,jQVNk fMphX3+ECh>BF&"w{EN>s2_#\FZ+ *^[1"2vWS<0j)2M]=dׅ~vǾ69m4k֖Ú|2 g%CI>gkd6kϕ֢vCq1isw +[x;c]$mpL/זNkyiL"2`nkE %4*:dE,R<8=,5iݡt9f$|lƑH>&,97)# A7Yb+!" ks}Z|ֳ s36;nD̬ڬGɝ\AFL~b &mfd15.U?RfcbcA|⊽K/Nֱ!!v#헹/MK+TfG$U=},CE#dqlo{6a^Ucru赚~I$fBd-qk>1erq M3NS#aܽ<"WETz]"9a2ָ yU=9D q~jtcl9cc\HݮV}$n +NPreI4%*-J +Tj(O*-Ҧӯ*yJB8P Q*PB +6Ӹ"Û,VꨈW2esxE4 Qi133-kKw4ئatI~3[DQxa񻸶-">D9/skmg:6Y8@>e>0 H>dOڵ_w:E b|-[nEs3LQd@tCM[ŚZ2?'ㄅ8dlK4 ZDŽŕ(= 7mt>7Hf`sv79i>tvwÉf6[4˫kdԱek(lwV:T-zW xod͍&Zx9,I$i"F i )[&N@. { 4&[͋ű5y u4sjXD깮˚XY9Hk$uuvw&X&$id7p%WƞOmݴG# +^SB0F;`Q\|6dq<1|x>j1ᗿtx<X[~ʻ+fCee\ݮ -W:}WN9unZM9Q6dlj!m|Q'ëwz[2;E@zQY춦6;!dW{Z6S|u:nG]U-\KUƉŇ͉g<[M8g.eh 6 +>OE 4\8b !uZrN y `4I8Uj!lI6+\[cy98;h篲ś7L#k1cZwxj8#@ZR*NO_UPTJ-ht3Q̖H܃hi_VV}PrprA@r)PiH)jUT<")D!RE'UBpJU +U5H + +ZyJ"(8"h#~e>ꨈyn +GJ.E(>!SUT-R, 5NpJKStwjQK( ܥP Rz " + +]䣋R@ P86o#D@TBQ*mTʟ(&7T + KKPJZPT*JIR( CRT* +P*z)ܧ(c?sPaꨈyЁjohԜN +RUPU#?[Ez!!*or>7F=i*ģG*AAʚBiMPځeU^J+ + +G +Eq4J70mT*ANz""Qוp 6ԑJ)*ЅJh@))ר aKEԎ*j)& +ճqrLJr=`t7̛?fD 7z+fZ洍 #}[(% oEdώilŬ%AR],XRo61@5.IRݓ=alo?`Vܹg.'w>Dm6L9ή!+[󵙇ǎ9(h$t$ +WD# hI'V6%~dȼOe}X=Y#|bW4Fm5P +ӕ[E %)k*$ibg(Hl;lWV/ +TETUR6KPOE [X3dBրꨈR*ZNռ&d1 [ʢ}_nPJO%H Zr<5ߴ/lׂc *~[pƃ#{: ^s h{2]isՂ.R'|;̷^2Yݏހc{j(~rdLVlw]²V-qya9#?UM&]PJZlU˛[ :MO"J{-8H&:1etf ̅g +IƃQ_;ԛLda@!k sYɊG5;v_z,vS^mk8ㇸ4XݱΏ+Gty*;^5oVόAJ +ly<)ܨ7bsVDꨈy~ҟS~^ \F +1?oIdHڿ.hג˨d˒X#ceqHE^p̼xHe)I[-U䩺S< JxQAC©O +EW@)kU^j5>X ʁQ\&<\O+Ogfl쨘Inj8zTyV%KdfP|.4ڿ =5KGMϟM cg;egOCv;&8ЭziR=cCӿlyҮ=>vg?)0{v6wQdb'"M5oJYN f@8 +vOAPG>ŨGI#e(taKc.v8WG*VKlvp^ôn& +{\|2Eҭ?JnBbk\w8I^sC-d ߃!qnxK;hp$xI--?h;';|m+;Np~dkwO$Jљϑ< C +ە%#h.:УUPPZ@mTPJMANUU¤'P'HH*TU)Tz(JCU?7'1/M +ꨈyCt@}lhYv<J%XTA>Lp cF^Mr&Dm+W~ݤHBć'X!' 7Wn ]#Cj@T!MWiur)a~DQm7fBz8UÓ$;u 'm))* w +Vǎ@ή9tJ<ԁSjz:)PEV ] S\+jT hc@*z"%ZEQ:ʊJRHQIPBU@RU!RTV|SGBꨈvS)jN8T5%H#QG* N*(RG(R. +RSGSͪ* d*_U,I391@oX}eR +@N)Tg4$GZdž)Zc@|oq Ey㐶`ĒIYH+ZG*mTRIMETUQ( +ZꨈR* ,qʞ:r  +Z$('y 5U(q^IaTEtQϪJ@u/KJpBE*8^^|S LD.-.xgÎ~s~Cf 8}%ks!q qTRj:*[a6~UGϕ RRD)<PDDRF*A(Q\NvTt@ڒTn D%MI(rkVWz|Vꨈy +x?9?R@A‚yP+MtQ|xdo@RHwBnRU#U\XBw}CE&›QjK4<*M6*ǪUUMZ(R +nKJJYU'TW\65@&kUhQ)JT")RE(>JRmڃ.ҔTJG)ITiH+`z~29aZ@ꨈvK'1D(oy(*Iro*J@9*T6:_JGBHQ{,<+JR(RA@%(自HRh JBZR( G4 +yVN-zꨈvK eճS(J8hIwPxKRy +T-mU-U%_U;TBz)>ԇuQI?%:)M)@ltUt +.ӡBRAU$E%H!I +‰J@URKAP +E(F䰩=TZIBJHHRI*RJUj_¶S daZ(ꨈyҚ԰?jۼ@"~6$э[)gD-. u4@w y?57iivBTAG8~#O*€Pi}Ta9M^JQw*)9I +ATz*A=PE'YR)&л qP.!'U(%PQjTڂT.*RA +Q/Ka, +OEHRJ QeU]jҐ*H Vb?OgPu{ꨈyq`֓:a:V l\p@X ˍ%rK{޴,pӛhyMkiωH$Y=sc,ע˨fb;h p nk$ >Ld0c 0o%W%5426װ:݂y-j!E*}P%A JC(RQ@:o +v4 \);}T4(-F5$tPU9@SJ@Jܠ6z)kRGޏT)HpJP#)㢚E%Zڔ%ZJPH~UU4R-EZF R8*4JQS[)hGBHU-J~WW$Fikꨈ+(氎z8UũFݴ =թH2MsDE3\MҙZ\אˀڭe5<@U܌8cÎGC~DzOl7=q,<R- + +oPI*rDjh>j7zUuJ*rTNM)J H(&:*(6{@RS)(zH*--N@RG*£q*Zl!+(q@m:)T&Ґp*)XW %VrꨈP_bA] Iq%#UA%-Pl.hT)MS| 㪂mT8MP *oWvRO)EAq*O CʋPuYu(O +<(BsieUj:NMڑ‡jUME h#T8*mHRJ! %B_*Mn*UJJ¨(KVHl_/M<kiꨈvQ+PMrZz6Ojՠ@U>\Y +G4RG +ޥMWڤPj}J4TaQ#,x8Az d--3ŭ,F\{ u>z +xÏc|␂ 4J:SjR_]W*jCQ|*R% Pz'mTR ( =RPRE;?+aZ@ꨈyWX8D@=@ |=V?M@a5ywr]^mݟ0@ߴtViZ-:QwJ@< @ +C<iWJ7SτR:ʵHEVL̆M=hp%䞂lO褋RBC}!GvAè!5k&k5]Bly񱛺I_@649Udgˇ'h$wVn4odm;sϟEragc䵯u^.D,Vp%`. dY7b` |>GCA۩U'Ff/eH:߯VQ XnfHCsy$9&ۃi\}CuZ:}O(`nmI䂶t@RX?'6HA,0{o +e$,.3!zi?"xVq5Hr]INj=~Y})[U@XNE9ٲy#ǚiygy@4v?h4 RU4*R!MpP*QQVa-?_ 2|ꨈyzOjv#\?+ Բ n;E7u_PyP3XC ]dg?UjOlcXzcKmu{|@Kuhx=OE1[M#%"MDYP:Kdئ4p'TXG3CG-/+yh4u݊EVK > n[I8firO3Ce@rZ7xoe:f|F2GXhSdb{O='Q I~Wjp #<[7 bh5\XܹX4 _utz YE2~c-gjk2/X>3TbF8˙0a A5֩ؠjX[+ q;n[;1zvq>ye/+TF8672'y[<-/ؚ. Yi ,!btyόy͎ 6\lzP8R-Gg|My ,yruia2ѳ$5{()jă$cq'c)Eo_EˇVcÞ=A}G6Vf&Rn =J򴝚c6\Aw.mZD!E"Ɣ +JW(RJI@YVCv:y{$^sL+\ꨈP+sqpHl~UaLm$Q|ÇP1C('xX9nomWKQ3>;2&ud./qTg[BЛ(6:!5IР7§rTQrJ +U‹K){!k`1s".1[I+䬌)[ȸd<K}/{'ì4vEI }*w9#IS7y"TrB)꠨*-JT)TҋSOz]7drµԀꨈyzd6 + '~g+P5 PĠ&Ԟ,*\ۢpziHT +y*)RG +l6q7U8pèyV?QsF'7 Gs4|G2w }wW7d Jۤ>Jf%D]0 {/A,m6@BT(pR!I*DQrBꨈv?;3V-fe6n{u*4KQ6axiS#)3$KFOe\$a.g*Ujq鐙^9i[w,,mZۣj ͏{۽FKA*Qc^֋WkAk-N;~ʌ|\Z<@\|]&\X\>8~2ی2]|~ȟ*,j24]uGOjѻ?WWUZ t$%*xߕ`k#67V4xm^V#6IGP.cF=IWtAK9潻 dBȒaQ[h\QwK(YY¢YY\Q䆸:?b6D .-}~~6!?/ULs1!k#*y({<`iZZn{Hkuu窱9sE!kh5-m+XEn?D=9ӁW\)Y9pёG_O#K獮 s  k:s&1v.DLv#s:ۇ^䕱4P3hb(dii#>aTHGj9Zn&;Arjږfr./OWPdA#^G'9WZE.~V~;,7Gv<eI33kœ`Y'lϓǗ[ūrvJ$?M~k6Y[̀d ,*ZjEx ZI.w>}Tɓ.K4hqi0:S\Ku.<Amˀ{s[}.,-W%cɿG?UWM}mX:Df'w.>= ]LYxl0O#85n-Nj cC6< dn}|[SZ+#V ?>:uͯAg`>gciHxYL˅ WHV_RrBbꨈGM{o1"g`>#-7c[8^WI3n)Hƺϕ*bf?f{E:p?}~߸^ +O& D XTtMc@hd] +XyQJ(;*7##Z5D%-̞ G8sŊ&#Ը|wڐr߉⡌MM{-VW".#2d"|Y9ɑ\-[c! k1%CmE$y #ppi~! ?C_s {2ѻ? Xɛ9Fm}oc~F?Y /cMzXO5iւ7r<-`a=o<37Ys22s#=q"-6y*fpn6.w_%};I1"C\ MGXŒm=K_'[%k2#IrqlatbFý貴rsٛ#ƾ,O[kOّ<Jjt1~QQ?9?{Rf J\88+dpt+Y9Iv"huY}dokɓ{go-pn8{4hoy 6^zGwv9ج~+u7T!blӇ{nn48ZJS +Xr0 iq<3?OϏi1[s䴌zF,C@Kq/bgŇ$u6#waM ~e8 +s=P1m5^Cąٺtmyd~k-0꽝$p5, s@0?#f-E\ϯZ f62>WP.7VK\wt PyVGWf6ְ:8<<DžkptL.BݤGpd0a>V9 De}P6wKEǗ1i4 cAtJv~ O.ֹ\ y6&.~F<n8iV6kOw䊿Zb^h-пv~##)[=16nA63 ȑdqOp4f/e:7~l=AZآԵNƜ(K?Z[,h[FdgKhEF4lpkzs=raZꨈyӚ4\>~kXZI,sXo r#[hRt|37s YQZ4SZ(U91GpB;OK-.&O^4|YZ 4+rρ KE *Zțc1[OQXJt#;ѶvJX2>$5r]?YDΌoh#νO$p%G>ֱ4z^"666Phn("q}X" >:):N,3}~k2ǒǟ,CkK^E\Ƌ M,I&$%]qaǥ dF͏GYmÓFę{k8Y/ŋ]VIhPy4gQtб߅ KiGPw='LZ7I(ֿsGoۀP+k8sa`..$UzViѺ61?z^4:f6;̬`kyw. t=+"5>]R7(L 3hUA;n..5ϒ=4Zf4 lt֛ =:*ƒ"A# -,:Qb*r4\{":,Qӱ"L$ѯ^yQ.,Llmy]N)ai_.wv>3 obGdM h 96MY>.Y]we Cw#`*Wuקgdʃkc2 .ؽr='K,xc@ s@+ϪϋJk,CeU,\/)v ѣȾUSd89A:Պ4bňM hdUcgCc~[UmHrG:׉ z*-6=8NH 'OEI-O<CU@ +H@ T-A4w5MK@ +zMV6RZ誾ג}^T7>JTGhjx p~37/K-k)ꨈvPk򹟺1XȏY\ԓ@y* σ,FZ, \/΍X詏PǕ5IЕxaP׆֔FᆝuXVe_ӲaY]fh丏Oد7U{Xêӕpc{g7CUt9NUP[毝麪S!V_Op$4ݐE|LGˇcsZ7_XoqHe-u[]ur=B:$o$;nc1F*e{ >%4xH <Jc%A~ֻ:G=&G9sHŭV|7CNimϹXkn"IȞ +fΐIGy3qE4cTa9ʊY-88pǀ/VHx üY@kN{lVq4>/,9}ae;FUѻH2I&<{/s\lTfkѸHcXXvC+)̖yXӌƼ>))-.Uiod/nݑ^}_Ey~yư3#1hV~,=Lk)LG$ kExZ qm ]G]82r1Ği Ӫ#a\ lCn ·.3$O87Ҽ՜mW-8A-:({C8vDbtwuW$|ffnw4ݗm>2hԚl@Udd<@> tm]Rl|gl;fNq|+JA (RRB UU()Hz'@JW*( +MJpڔJ "h?n^VꨈyӚ4_ZiI [>21$y'am%G9^eQK 6H%ѱ5wT=TO]^&3emuh]|^D;D 㵡}kQ leʕC=ih$l%$K^;S'2I`:Y\Ȳh4,'eq a&%h7mK2pM^J ,HL@AL[@;%,Rǖc{H9БG":.E i_Iѻs U͏&hh>žk#pkC?M6llat ߨ.¤i8>_啖939s? ժi8 <ز4[ׂ KYh=D{+֖Aq::daؑ3;##.8n[jZ"SxCR# KE&T* +)46AE)QM%)R/|)I8ڀꨈ֣s?tb2PZ=U1'Nց|PPG'xؘ ^}E E呱ZWTOkKD1jhKʡA* +ZS65&6!䡘0E 7W)806Ŵn$hpDX5hoY7h%*'{XPZ1{c`.6HhH} H;ovlmh^k :RY1i$,f&+U _b!{PYjN+f#{Sl"kbjFI&Íj?7kOF4:jt?^P5^K_Pƣ٨DgS?7g^5j~YGZF~5AִVH4٘DgRu?j?C+? sC+?<EgR5C+٨DgPcra@pfb>PƠZy⡫ѿR_Nl908UoiY#Fv+^4:4rb?U?Li>&?| t`euӼoC~C֍]ӝˀ֍[~5t׸?Eg\=QI״G?ìj[Ir'HXpD_ +F Wb/ϵI0\>Ơ}D_j W ~}>~}Kul!W b/Ϸ[ b?υK~G5Qp?f"E4g b/ϷL>ƃUhu\?oCo}-oPul&Ȍ~ƤjDXȎxT[rrcUWҸw_¤jd2"种\>Ʃ:] 4~T[ sOF4oj/٨DoO?f3j3j~F~5'[F~5I0GL_3 V~5N`ؘDgOOL_3?ojYi a)k+?}53>YCce6 i5ht}ꨈScE8F5x*јE?e >6%?E~amJ>6$/^/_'ѸG$7️Iv/qA1B?7);8ğGcoSv71q>?7'ߘ$?8ğG~c}oOq1Iv7q>?7'ѸqGߘG%??1qOcc oc cI}oP4A8ħ_" >/_" GѸE_# AqOB?O" >6$/^/}/lIV_'X~ģ/hCgR40lc~?;K\x7m?΄# T#O00>?΅?D~aBp0>?΄^? ^?P[:iGSv7,S~?LQv7,O1gB} ~71p)?8ocI~?1p~$ c ?Tc s8ģoc}oO1J~8ğoO?7'ccocw66  +ꨈS!ꨈW]G#+䙑,;4k`xL 3vݐxfL2Ag&%.F܃9ZG#5l3DWAg"""ϓ#+"cųlnvQ;60,иl4sFW 6Y&vxo ++Qn\@MsA[}=TY`<6@:E@<5ly-",]S"LdX,_Lِw.D%ŢI9Wۜs~b*F>(֝̎g}\jmDZmSUˇ!xWw;h6ְ~H< o%FʤDZwQI~S#=< :lZ\BFGz@eNJc$ o$ +VF)4o$x`"nmԻG6a:Eh[vWEK͓ ]a~lO j6h>VV4w$ ÓekK,5,""""""""""amꨈܐR惵ۛb=gٿz #F4.&xt,ʗw5aO[mmJLM&9 xOsni z,IfK% dB髽td7Q6A~tl9epdKiA~Z\|<3Lɕ fˎH,ygz'A1^2> ߫m=ˆzpssݖ0lgq1i,$A +>>(Ȍ9Vk}-Z,G]$8`-;W+c;f\Fԁѿ˥VymC*WeEM#fwœ%n cCgv8#o%da{PΉHMkZA<$#Oq]4,q`ꔴ2uL3p002O,yq&#mcw҅I곜t[ I$yd;-k'q*Xk˜x5 CFۯĵvf^~&L+k^>5NV+W6}31 1,i +|T=m{#$`8gkUҠ6\IGи35#ۃ!\e EYf&>&6d0kwK<,=gedw16(;#-^Q~,stN VG.-*W#%򑧺GM qۼ^eag0.LwnpsKq^א\'kZ;\9|[0{I!Gjgڪk[زD2|w÷a!9c#v>HH[H7-hx?pϤvF,{dy0w-..cɐq f{/FIJꨈ +s'+:,f$-'8[Yށ#Ş .wee~(TM n C9;A 5ϠYs蒾h"l&'[$i ә㕙&(qS+umoJ=}ʳo̚1I7ӼCjD,Wi2N籽hQi<,};+crD굱d;׊κ*4}M*L#f5dPTbv|9997FXY{@䞄ߪA +6Ò[ >֓{ pT +N|YąabGx +dlk=(-^ @/Pwɮ '~~<wWq|{4yt8r Xck̐yV~Tq?\=SG -4hy ~2&i*3ncF^I!쬹2aKd|ta۞K +f;593H-|M +KF`_bK,|g6@X#FƼ Ŵg{Hq_/{00;ha!`,kX82 xp{zWR)Z^Y $i-iMKtL2n Gy#bmyB 3e=ZfA.S1&A#݇=- qcA%;OOF] -oϠ[l)$is[Hh(Qj>3q P/pq/ v~l|6.Wwf=qIPH=ٴY#ɓ+a kDX|ZFX0rqDߕG5:D왘#n1Y`uWtY2sNA5$ M󷊪TrgdIscZchkC/eWll{{H{v,^c٨c9̅%-y6GBnL;d5yqĒMy~V;3!9lsp #7eш; _F@ U'L\&HͤGBC;rvAheu=ayf&N@vo +l';tҹý{îQ샵VbefHDXb,k#sK+kVGkW5.ʻSʓ2@Sl!\~UsZǰ)Ö-"LTꨈ-J"""R.ҩC(8nB(َƱ k@@\DDDT2&IhqB*XvƆysU'ܫ-J5@'UHh&_DDDDDDDDDDDDT@PAhp,(lmgh!JT7CUR"""""`ꨈ;::'M;W$@9$V6&0 #k%9m ŭ/e~ꚫ˚WV"7"Ki'jpX>^Ԏ)%c bW3;G5p$c] A4I 2 ǺWwn,^_A7h>xYٚ8Ev>K py2xLR EҲ"<1sK@puUŀƍUwd~]d8X{yؚ MsY6D͑Y)G`[;?.SMds]MX.zzN?~||=gݞN@<^7TQ5f,s<&c˒9e7#wUJ$;vNX#!qqx~gP\)Ƶ#c5FUwNO.$i,ik}y4D}#NƏ%2GʲAYZ9e19i"Ŵ>K_F`gdp$N@ekXn360cWiU4q2B AռqVk˙##?{uMa{Wq5H3$|-[<z +fl8YՓyC* kI5|N,gV/ylӺf|N`:6GwUY-6V<ҼM#".Ƒvz20c翽೽^wx]͎@WED~s^ȸ#Y3xXE -2:x^Wjil_[ `{36qY(&YtOkC[!kF6b7:-=\ִ9=JAdiѰ=핦2֛Y'[.dcD_t2J'V9 +ۻW4 lo75 4M1ڬe3t." IJnb@4-c>Pacn|&dIymڭML(.;l/ @b+XmN@ɜ߆Gwq:@sZހM:6Lsa'96ݰnKmqD Y9:8ҘZ%{Z!`=  +{]%b֗nfSh2'd7wntok$7 qKf?X{PꨈAO~u rMwD|q "ϲhi4 (gYv\k$0<Ӷ=JjݜA4ͽLjҭkti]ߙ1S+NN4,sKqٴuCu+q-JLq1^?s7XgRfNcˆi\Q!-4>#=? N>ڽiF^.tu,{쎗JA+cpyZkЎNX8,iKqpjqdd͊[i,SޖZ=:dJ o#@Z |?Xbw :(/ d2XGގ2=-nޥ<@c'A09  +Tx+sbbdI,r# d;i- nh$~و['ϸNsבěHWu /^z.$y:D/pٱv, k#fٷx.5ϲj6F;ܧx7t~>i"s2@mp 4Auq}VV3&ȓ%6>R>:i%cZ ևUGhn.d9y/|<_EoYd۲XtU0x[ljFRYF$^;/vZ?FzfChMmh-W35]o|R>,͖FXL}b6}>j{[ ];"9ZZב֚MNKWf8 r-!-h/I4ڽ OY_ ߘt=C a9Fnk`aջ'.sݎWL44Xyt[6V6G˖wg2{<^u±،<9Բem EskG8-ϓt+$;18 *{7c9e-l.k l9;0=j%sA+]X"s|fXFI6>aچA,PG;vCC&t/ q_L1cl||o߼4hvk_0rCCC #!W[oi9BP2Q-XuC.^NV5\x=OTLճb$ou'nh,m=}8A:gx˧F#G׭hptJ 7Y:ޡyqx}ٯ@r݄Y'JanNy;c~ת~^ٚ%= Xa2my4I 363$k$;YmvESk7I 483X@Z=}:mZQj:kpd0Ne{s[aiipMW^/;=bOTϓ)kA,kt;l4Dy:2f9ƽF &>ltDo\yFnl t3܌: iޞj r3]܆ccƖkV86#s,[8kB8^v~O&&{LdP# 2lxŖY2uMҹ%nc)O.<afCNfDDZqк?5xbսѰ2{lmUbUќ " kO<43Ibt/16FHZ^dV/AaæaE{cc)CoOf!RՌok!s6-i A-QɎ W{wMmwŤ3:,gRƗOK%ipySuQ3#*#H'F6h],NKinu-rLbxҗ<9 x"EdǧX37i#_#SQd~f{7@>j5̈́˕F58ՖDy-6p:r| uޣqzrɴr[c;MdPzꨈ46A(!J@P5EE5@@}CCz]35Sœ$Ofm-w/mm1SZ=SݷSc@B+IycH GbF쑮: ;rpH=|C,Ov'h%H!T26).hp Q* AP h +SLmcCGUPJARșqk@.6H}O4Q$Z^ƻi`>*Amt-6ȅ1ɠz1\`@qN:ڂƒ C\ksAQjNN~b֫\Ҳ5Gc k\Z O?Dž|) h а(pVFŀQAzaNRkZ +6lz,)4PHkUJF(~Ud,kAq$TG !1I4|RQp(qӄ?5ˆ|J  ײ9PZ4Ӣ@ހc_V-M#Z( +67vUu@ ?T18:>%ˆJk8-T2}RDꨈ b˶c>}1,e -*&ckIqtVǎ~hv#+!ZL;ay$*""kb{gʎwm-/}9-Xelsw鸹dP*7TRmk +5  D,E|U""*Z`=U""-f~6>K1瘌mkCG$}='i2r;ar7s@;y㪜ˏܷcoc!Do”DDDV睸st;Z\~IXfgg1;{vZ:E@.Ln@ޑ'n$mbiړs!kdƝm-!x;CJo͝IۻuQ#  +\ވ\vhv*Eug`e㘷7&G<>\UEg;OlLw1"$p: EDᤰ@ AվipuXyWj_Da͖YEyh;IGV\/XYjDDDDZ Uy44ۄ$Gfk{$'s/#,EK#4$`f\l3m{Z暫X૨*8dDZ(WϗP5wab&PK^m#lBV&ꨈQMaF6^\KRO6 2F' $hZjyuta윙'ȉWcFafAøv5VVx̱ya V=ł8 }+'e8d2 ǸQiDxYyoCr2VU#,oސEM1d9,B(^*i+U Ȏ(# s%\ֺ:qd,mGRձt=KDotmh̍ szXup/Qd9-f{4K#%Wk\WOә"gX7<ֵlgOts l`[:[>ťS?+`y6} CcҧI|wXF;-v[p`w5 i%4rJcM8d6O $Ϣ}@U Ӄ,oq%yseVDc.vh\|Ǩbb|[˧I2 mƬyÓe%n6;x=>6s!!*zt̜9-ڤJ=,( ,kMk@kGh$XΐHc{s]@1wkC&v~;Ț\X D vnbpRف{nnך:U!fZd:<~#]}_XQwJ̧Nl}\hϲ/֝1*0'$}x4eh.,sI$ EX2!'.Oz.>kcmJ][NyǎcCj[e/oRo.3qrݻ Oqkէȫzfa`߾Hv@h"ڣ+_vF6 9",x"'9ϔKZ oAś[~dedcO#紱1!ixjidž +d8k7rBCAzհ$8acZJfǻ-cJ"g#kMM Q|6+tI$ic6=.qi-|D,|ghL ǾFN1ZݎѠO4ϓ: d=|DL0:ZH~˪CRچhQxv@W@}g$&{|/dKݗb5ͬ/"N;&aGDLuwNi- hi6rcc=;A}V~Kg&ό9n;hdnw1߱~ xڬؙxK32|roŻ2o4, e]lh`!wN&^[r3%$ŏ@ɶM6޵~>3LZŅh]>?i s;#eanƙ57f8v,Dag4|V_Y*bO"Čfő5ۣ-Hpw NYd\xB\o{~nVV+y l0:{,m~=jmfjyTv$NŊ<13\5/-uhu7G$|9id=Wa4BYϚIp"6G( +h4IoftϥDIq+  g9 OdoG5"-y92;DƌG=0R70z?u{d.s>K6ۍU5RG3FN${&[ͲhlV%tR=ؚ$o}+L8@x\旴sP[y\D QltIc&g+3 N4OrH{i#zgȗ" F3`9kI!̢pɮo\Dv>SpY1=!}[z%tkqcZChzJV3kKZy+]vv +++&7giEᾁ~ůRLmX X\W'yÎϋa|YQ\ZLm cCCг_E` \EgC3 $1r6@vlMqҹgO+@,0ѭfhek7D72V qqiy=m 9.VnfPc~{w9{M/u Ѳfv$mdq y4ԃUII ecyc.]UGGNx<>caɖ&klݑdgGgtI\S4홶au 8Z&N fv7Ր {:Yff;XK\w`y+x:6n"21N acC=W9Kb iel$ ,/672 wr./^iK'<ΖVEqk[M; +ܭVuy'q.tx#;?bC 3#-q3Q ?UV2;=ҰB!A /iݻn&T>VǶhrdy Z8-{W{=ˢb36FZ,.ϕ+֘5)4eYzlxgZ[$e0 ukFe; +FG+lr7P46zpV eK&KSl4Y!kX[$oDyB躎t+ƶv]К?Fʟ'V76c{74mn4EF~>s1GĀ29s߹ʽxgL;apwp@O ';On&,$E qȫߟ!Xe&V2!pcJ΅;%ӃKgsZm.od|Cip%O){ws)uhx4, wy'|gMD9Y4N|Mʝowt&0u\ sPp,~ii}^ PXZo +l7LDwQ$9CO-|Vv8|ZPa[ê_H;n[vi^nD3>cZƐ4E&֗ZvN;!Ɐ,L8| .6F)It \dX

    ʖv;MC%ȏjǗTdy| "2<7;k Nڌُdxu;y831)|C[w<8 +m׿+v/a@ꨈɏƸܫJ( Zn4Lҵp:|]DV<@ m{E"dk, #^Ɔ6hgU""ͮu}_ZUȢ5P `UDDDDPaPꨈ XJ\6s-m ^k8FflY99@)=l'D^L 4 tfWēM&k0Bp;gw+X82<[ 67xmoR QNUԱ#|Y1!i-0rx>c6CZ֗,Z 4:KAy/)q5G FW0|MBIbVQd#y:{qqA +&$1w<8SaG.kH,.h°irK/[}ʝ?"93+ ~&n{]鳼3_ql[cyC~{\"~>P\~#8}O|NV2I(svqh;oUbb673Zkc:99SagIC3\Hm ,,&J׆N,=^~ժv3 ,dl$ N31qY$kw:wE9z. e}7h4=ʷ`,iwhm x^~Kq g;GSVI0Y.w>%m. +ug~3h73/oebC,zD{z\3| kA$@p\8wYkW[^#p;z{_$}Kv0:K,=΃6! ƹ<81-p4A|}w*V]{>#kzzroႮZoJ^->+F-memN]gLʚ-T{e`djotvpN~9N2Iυ7EE/^'u ^KKŔ$M{|㕍(8pKtHchh_$^|=ٮҡ1#I[WCavֱ8]@ѢUR8p)0B!>OA~m{.Q S<]v="V-ꨈU{Y9qw2u5yhX9F;ɼx k?h3` s6weN]> s q;$6fS1k^"Û Qoa;C29dp$Am~׶ <{C wqkXdP6[y潆w1wFfa:?%+c+&dlCkDsIkuZ lgeaXm|Ɇgov>&6-0[>NDbǹF2 Y-}E6ej) m5Im\d#Yՙ#DG㵤K_jA!kt|c|!h,@|M܃VM48ono-m_U4y' ^źvy--Tj4cz{w7wqbtDqV#0͑.y 4nkʣҸZL`6o Rj !eN6ΞoY6Ux8t4+z-`M<;My#.̈,s4x$9ǩ>WKf6Vſs6 s8{^y :58ݕH 7XE^_j.BcptyK:EWxW]w/PŶ|Rk\i7Ky?Ӱ>/FdDB;B+daypxx0vbK ۦ2<|믲T {\1Ymevxqwpc 'hu\zƙ6dl9{si Ļqo|ai!.n7 Q_ش5z=GD|n~&͇Qs#nr=z{y +^?UfA!l. \CiЯ=\fE?R4 ;i $8ךYxFx,'G $?E^hs~%?dWv@~)u]dg{x^W4hy<¼~Dݏs?(x<|lF5xڶYb'`?qkY%ݤfG6OÀ[9t, d}áh Ak=f>@I.-`0 coi\0ى6l1H\ݭxm{4Auy̽"l<gM{ L%<,&:y]u[Nj$-DX}cJ FS$;Kl4>adjsljiF'84:*5e$3c^C\_h2-GUf[d~Cd]t)Cׯ:wE$25M FCwx^A!m;E!d|sv ĀQE +, ꨈF4Ym+4  ED8:Xc^5 yVV4YM,m{n*! T,v퍍`4_+Pisljp!lmi A rM?inݽvUUc8ױ05Xr+8#Â(DDl zUDzn,,ƆCW.$3=>696PH)mM7]U^F41s"»,u~Xą KE\y+n+3 Ɨ۪ɱa GM+c+O6nQE ccAXv(1 U8ᗺfvȣ_E0aI&0Z+`x AA,xtLv6~[_uXDLn߱yH0q 040>/qY@(?7o}$sת5 K6oCN"v4(q^JX!XߪƸ+p|pm 5h G״Շ= +,h.tqH.hH6,W4MtB] `P7^AD4 dp:Zhe32#}mYU?%l΍5堽֝)XwۺvѺ]V1r$INx{8WNHv\Xg @"x=G!GCvx +Kdvk)kÒm`ddzAfMMwsC + wn&0[X֟b l.n5j"Â|}TGcE3dLl熀4'K{dsGB>$9@ ccW +#lm k@PPҕm7 p*14=vmF + aB8k7TꨈVLxqY 4}u$gXwbV.4H+ikM/j"L:,|ht`N<4A!сo$>VK[Eֵd'yam+_Ufri9 ovpp"!漸Y~kuh^8X#ȏ5FO?$987uOZF\Al$PpA'&^=&w-asAkwtYjQ>NTlІ0xǃfd45\iUDXvB\Cc#~KCD,DEn)vmqk#kQ.ѻamkDDZXH22D1cLL|`X [[` His3d 84ur!5Gni h"×S,_HYM ]yY4E32Kz}GYhfDZ jC%VVBy֋q>ҫDEnYsEd̫#^ @YhC¡ꨈYa4uŎGZm^8xr,4pi?uۇzSyN`MȂ#f#Y0iv4:$ci/t.%-}WܗsHmŅ>倕E|ZޗȄ*ʣMXsx1g1׽}y,M@zs{G4A{Y͒)@'Bil\*Ho1-sypfj6ce1ƃ _KQٸgnxKFͣ`o֑vjNC5 n$Wq^j5,ܮ̜H3v5o!n6/YfյyL,d}4_ %n@rM{,nE?k,t0WQM_7Y&3[u +TY:!h$5.vq? +Ok':V&FƉrF?΍9hap +K՞s#gv[ˤ, 1=x]x~{mqikE}Nnzl [f[Cb2 \-f D&kZi17[IlzUM&VbAǤekrXMcڲ'0wM&8k69k@ԡ=ȑ .Uw;PӜ{ -Žvyyڦ(sLsC\ iۣ } ̭K/Tldq2)6Gy_Xۯ*{G=Yfkk]M 6*~'Rf|C/lZE\lu5開IYZTG `lkKOԴ:>fY1ݛw$8t;+/9e7)1 pa + 7[3Yd_ +ܙ!fOC3v]"-M`=Q Vw`t;_0dXH; tmh`a#ypw6geYG69v>^v^!vgx1.x@U'ǀ6V:V2iX5{ZZ\M(+=NvVN'zflL씷c~ZM@XZnVC5+"8bm?|yPjƱqxsCC۹.HiAumܼ mksKc0Ѝzd͙$1wp6Y$wŬ`$XC2s4d,8)vs4PQkztHfaql.0FZ熻eۈ7WJY޴?4G.,"&7=w;ch8[&i'ō8n7ri9Y;,OꨈT'#XdlR׹@kh"d9(_ 拻.㕹(eJ .kv;Z&?O~\߽t8h@Wg6-J 1\8wl>UlҲqt|$ v#y45Έ@=sƁ9}Cdr_2Y#$"2`uwW&6f9K +l\Tzj.dMHnDmgdžCw >}T$]A6+wa;H\{ڽD#Ǔ"3euiᥤmM@_c͖5yt|džӢuw+LD5;s&6>O~Wi +y;潮qKV߱Z58ə2|_#Upozs1L>܈ݡovg>Jccg`s@׵2 +$qʈ;1c2bI p qC_tW}3Sf$Ms7 +&Vfvcf9E`5v9yXZV^Z훷JXl -r3a˝f1FZp 8* +I̞yb{r^)s\5#m×YMIX8imWSDO+YRYeFە"PṶ#WƒM.M_V1ݵ @_Zg۫A Laih0ǰr(9ku?kx{ƍC oUOb2Lݥ/wx&Urq,$eCv9煨m7.fZ1t ߸?OiQlrFcA# I{ ]/IisB;gi 6& +Yh#GM2l}moީl#3.}>f>!.p-y\"K?R7S4cZ Ym3!4!ocZ*6)Sϲd蹺3prgr;#ٸI3[Df:TNsX#8 y,kK5[cLdk]a:74 ;G䱲t 8SZ1B쉤S|>K@p0>wFni Bv#[!۟$Ih&h 4lVlGV1Ӳ`q/sAMC~Pc8nٸv뫾*y&~9h31hT'UhC k#]}m,pqM42fK\=k[cb=܍+ d?'0k@i5АѲ!~Nccwr7@G$ş@e2[$Oӻp{u:ShdHiMk\nJ꘺FF3cyÚZ^0,P7@DDDDPmꨈĘqK+&smчl&;$^?U}pH7ipa^DXXgmMj +q&1*R֒@dSUH|m(,Eabx8O!Ǎ,|>ŞlL]4Yo;,ꨈXq r; - $W3 ͗5g=2s]q^$ՃǢسd" u!.#jL͘6@F-EY-K185Ĵ: YKM(k\ d-kZزccetl[@o9{$Ǎ,k%,iK'Sձp)z-"G&4 ' +Ky"Hyqč6{\㵵6'O xVk7;]+:%[+X#G=y+,̉2"_UymS3'2l|8F<͐'oQlY:kL8P;k uYlL n'hOؓIvfk,e<[^GYKE4:YZu,tffHd5`&HdR,k,`u>;h1``|o-%kX-qdr%kY4mk餖7X#A*. y__DE6|ώ9$k]!4:Cꨈ/|DY[w94rz-^F^Tx:\I3Yi{F M/JsiZy c\"'nal,OZ9I21~V4cӛ?IA"if|c[ךXR.f'vX8Iܭ4dk$4'h 1&V)A.h4N ėq~p.\2=`s s[e$6y3R'oc o@eLœ +ܑ$-^w6+mi9,isG-1fI3^d6V66e@[.n&vC"ky\l,yaV<.s\Y#I-F^H>ѵ9{E?2 Gu 8x#ffşg3dk1tn6M.2%9[1$[+A869KZO̅$V=ioibtBeW~td;IN["7,kEu5Ӎ2FJxq H} UխǓ)ai:aFpoh!evLWjY ,׆=-dnCl3_&?kdK+2MIjڣ3 tx2(D`rKAHzy,m;_u?M$&hw7wg,fzs5T?&xyHMhϝN='4e8Pnؼ\qJq.p[4(Zx '"HtsÚ8yq%;i32ےc4p]#y+{9ږq)[joM17tݙ̛^=;:w5lqYgx,O>'#},FH(^ֱ'gtŁ#?%9FnN*jdėM7"'6f XIz ZYfDǗ$bGmqABVVkږr q8p@C&\l[uL\ֻQg=tE +#z֋(u9[pԦmx-aMOZrig} uK 'CGywޛ˶3l5aA#{nt|zY^ kt\hzI?jh2\wn m{wo"wCW[饸LkQn$o\4PY-,u~Fqbq>'7sIZ7ǩi6y;ɻd81n _=oi‡tys ɷAk{#\nh7"@YP=5ޫW?_GdAe7'Gx֏7rӣ{rsHL[wJƻmuj͕Ns6[&S>J{Kbqs!ύ.e<⶛$Nɏd͑+~0x\ڠٯG?O{en݊8$}E12$Cs^#tnŏNlbw%_?ۿ(#K\i5rB͍3[paqx K1kۙ^Va;>0FցAX~[a.m/}-y?ڌڈfL["֙k}z=_"A< N@y x'm+{#G|'5xԲ"Wō;^;>w5{&q[K,&Ys8DI$K@Ϫ"KiL@ꨈ3hofc_!#bhc``teR~cD4\<͒<<7<0i%$AYfTxɌ to# NOfb× (l9:dwب34ٲgtl VƗr\y;[ gȤ<`Cؘ%%E,g sZ>vG<Yy't-1i=ZƷs==GgŚ"ike\s}Uâǿ"W|h7Lhn׎|Fػ;ǖW06G5I$SAV;-^6hk(`o7nC7ʯ#9oŕ6@:nc 1BL|~Mo4{ZO:f& rX^g>ʼn}AD!t CzAb$ʞX-,n mւbn)iQi'8:Qak>kROٶˊVd:W$/ĸ=#eb6t[jm68^98Y;y$s4H*WI36<8G +k@ WGd9lmaMz_u+f[db|Lcq61j4ݎ+++-H2}ْ=s?*9թ; &D?iu@ zX?d]\ysb$=^<nf{3e~<3$n~$vֶfZ\ztK&mnk0A !YѶ LmvƱ|,n +C~$%H607p-h=WEfO9xh^fk46Fv{y祈&ieZKGntdGG4-x㖍9]/G&4zQɔl`06=Ich=1Dkmp>>Ż^_Zv<:|p|n1\CE7]_™lt6^w9UM1190Z{q1_Km0.'cx'>L}0:)c˘M&wu` oʞ= v˜R\O'JF7( ֒:nq.u{Y4 CQ) )jmHk J{nS5si4|Wtq48Ǘ}JɈ?@F.;5ɥ8fp ҏ$y3ϚS4VhgԬ-23}vxMfȸh+ּ@pGGZh;*4tMWH\!%$_<-7](`xh!z*5-/Rܰ9Cpz:>j4+,?]E5~Vz1ZVN,؍s$ K.m|{ڵ-'|n^a-.f;[4Hd?i;8IʥFPE-t: ‘Ñгuℏ:iԁ +K+ai{x'^C:we<;C iqlc>D-ֵ4x7G ۨW+;I"q{ZݮIiSl`:hj9i#7-߶[FȚ's]%xZX}& +j :9csv"ϲHfC;%ŏ @5zEjqiqY/s{Z Y2#|>9b /n״ i !ڨ8>91s(_% r(Y#8g=@8k )5x2FnĒFTml.  e떏Z^X ݴ8mkts@H(yyDݍ'i"畱K;"8<頟,}>9g$'umZ=KFqpTI@rWCm5τ6V8-s^v{FK%Ix!y&_3#s':{WNT%N:;kIhCg⏴y9y8[s/m5%ƺ_+ݭ.O.w}D8K[$G+ڏh#׹|[_ 4H~+k5}9y; j@ .Lٗ3xZhy<(ǦgOv8h o{49qr֊kuE<gG m`4 \Y~ X}IK@׵9?=m?;+tIx P;Kkgt27Šd:qۃI<5pLg3Eu(7F&z̬b"Ik8=GP?5L#8 #ŭ<_lGDo \y(I1Ęqb&2ZH!Wr 8A½lr&nnwљ2aNAÙOs|/ΛU"I#m-InFU[~ f9 .06,n<υQjZ _H +{]V/؎Ay4,[,G, +7LƊXXhx Aguσ6RF;dq$^Xc|ya3w;qm5k>Zmaad?$#X6VH9 װt}'-bkMos7C"ˋ\c"ǒ)"t{/ }WV;D8w4,y x[:)B푲`;"gkAV5 \8ar>Y47Z@S i&r@ /kֵ9AbGsZF !xή:Fbw<6Zݛohك7<[4;s7x\ӛtm]"!_\߿-l!GK7d\q'TL٘%3sYm,]:W)hia׸͕MϤK~Yl0X9]nP4H"UK%xL(dnqc}P2}:Y6c#` +A,wi wFUlc==Eݑc`:#u~G1мogO1B5< sngg5;{Hݲ5-\QFDFF#~@$0 8 xN`H4c9ۋ$zK`uWhٰ򼽱ː^gtȷ4W>.8Z/"=#G{y89;͐2d<:uXմy`4{o,TOk>U.qJ?pfsCi秚k3O˅i4I, Vp5KŕݺFF?c; hRҝZ ^,׹o7/U܆Cٲƹ.Ued Xd~Mi{#>ǎFD-7)/!q?Ht/ϕF^ l6KM-6DVFPLgzLxF@ sͷV|[O*޽K,Ninls?c7:$_WedͲу,E=cVZ Z/ ]=~qF6J㴶|o|kdx9d|e@k;Rb6|vM3'[X|L$-DVlyMFܗr;o֮2c {b~MqG#Z)3rplL6m漶O +vFwk;]7FÜA xhӥ!ŊyZvη$yC^}k]Nb_Uqh;rwhp9ϖk\9t ;# ǘ80 uIuٓyVVNS2]t#s\o!/l0 DdŴۋ^iX3ѭ͐d00Z6np2\Q!dbFX"xs[ <-}"fr7k.kt7H~^>tfM${$;#f 1aZؚD`vz|֫UMc1qb\ֹ=y 4}xXLE&'5(cǾ'Y׈ׅs%kDߎ$!y}VouҴ`7]3"_% Xn +7`:nִTPxE,ꨈUė;C3yCQF5QLsy(4S&ks>*`w%̭D_7su,sqk5DVvh_䱴?vo{q:Af"-Vɩ& n4[*5J"""'EZR1^9=\',DE M1T.0ak15 +m(jw/FFh/t. Rā>WJA>7{}P%gNݧk"7͛.o=.RXz cykyznO0Fր8Tև.#k%Ѻ9bױDSU@f q45QVbHLJ${d|*w3&'v쑦̻>!f)EK#lwY$x*Z\|>m{k[JXzn2)Y: +X>k5BDDDDDDEBQJQ*_ꨈzi>|Qpdh%[%铤ɎZ ok8DDXzsI[1c~*tMIڶ9Of7a{u=r-Oid֠ߏᝎs%_ i&ٷEuWGhuJ~^[DED694 'rU,ȵ"Ȅ%i- e}L7L-_C,YL2G4qiE +""?[l#ăd3 v8K|` t[ڞ&6KqݐkN߱_8uc ;CO$_:X]Վagvd!Ť] (Mklh d"iGk[ϐ+pBs]衈K3XM^K1`g?hK0 {IY= FIY-7t+g+')̋t t}<9I,eZ|pFiC# ߬Z,Y Sj|&I;HpVr*wiT踁dMrxU""31ɗE@]s|ܬƼQai4;΍ע9hQ7,oG,僪g;Nk& ȴ8y,mJ""-&n;3%yh\l>Ï fs cEXz`Aɋ1YD@̺p>&,PꨈENe߹`?Ws:vHv$Yn```獦mSv|/΄L3nK -sL{AI3;Hs n-FIC+g6 in?%4ҁ;i}ny+wљXmn BMG2d yrvFڧ8v+IԦkd6c\kiR[5tYfOY3'þ0]j6Csh$W|F|\K$Hѹ}#:yVwlr@%ŢpGi2!̩f"hZh)djZF~b<ٱD2lcl =OZ7IkPq6Ku~=ٹx dH$|7YPQ]5;p6=}hxOo=jRYo7i5$L M{p̬0Z_F>:-4Mϔ's> %kZov6Qc];ȋk\? +ChZyYCtiCZ ysk_:P3S䉑N؀C=,gtkói7goT:I+(`sK,`ߚ&>F .1WǀUeOе<3,ǖ&;yGzrGJ ]k(MN^^SX2Oj&gd p"g7LU_jexbϩib||"{@gJܩqXJhٓ ,Ǹ8uob5 0Fkv ݺp}mmѣs-SP~D ߇?WυWMdYeùs7m qW +#&~IwPр~Yzr9wC ptd <M};;t8YKb-E-t+1kx24cFO<rOݴW- w]W}%ߥmW2䙭mN+>-y~cGLB[XoC{\㏥:-=.$n%k @}Qqև5yȎ.~f>c1x|ipKZl]W_?%4N(J񹸮q}nG]-#,]IVKy5-S`1gxC}Gkدh˓f;)n!88c$rX`s!tEy4Vw%ȕcO#>f4zNsZv>-Gzߕ춣&!\ZKpn~V$X͑`(<9O=s&ÑPD͈HH\Z9k(+Xzܽ+6E+in0mnok1ְv/΂<Gř!i3m|-&s[liF,9o?$87`qly;~eF>TrN4co"Vλ<}gpCetW7n k;Tn h1L'H̴Xߩ,lcbhsw6ZdS\h-is#_AfQmfiܗxBܢL~K_ꨈ[90A, 6< +W'Sffvq86!k>]&$4_vNbM^VEՋĘC9}FnmءDd٬3V8=.@n6cכ=WV@>Gh9$v21s/2g:.;)4}qwc0p4+'.ty*ʺ(s13ֆw@d q{nTjݗRnPgǼYn^i͟x:Fs!SX].jYظ)M2 pT_#Yd8Se9EݺMT=۝;@ixw94ۺ70cb ,:cc6Ƕ;Yw`0gcd&a!1[ ++1 dvnS#,Co,oVtn?SqF3Gv#otG 6(㢣NVa@ƺ#pOj;C)51Y8׹9.מ9Sv[#Xp/5tk˃Gğ"h-H^c=a68t, 6m!TS6Id,s7>\{ʷPŊY;\ K٩5y8q|q.#pȟYU qmpݾz[@vCl5} j}̍w4oM8pEfY{$,{bk[ D({(l7#&W2FJdsDE;kZ)ENψ~6~\avC Zl}v+} r%h1;;,L'9s?m875cuF;NGcIي6*%76:$Qqp'۩[}8qFM;O6U:_W^I>BVd[$͐~^\}h-tZ|3:9Ɇbء0X]3=hmvc˴82j8 gAao&Tdְ~,1Ćٶtd#GXݟƖW#C˃CHpjirq~(a?twɭ}kmD|z<ؙyvi{<z}4} M,w]ky{6,ڮgt. &ZE5jt$O>\m)c> &O+dr||c9?u^9P6y[(lvݏ=>JW#. iF:ÃM:wC\v7g |3"A$[!u5!R[)Yƒ9F4~+ 7#DX|cNph$u^Odj_Hf;X29d_riDcp?V:f82>waqy[`qBGcǘiq#(R`vPꨈPׇ U"*^ \QX?b池A~DDDDQjQEPHhذLr[AAyB[1 \DTI%bAkڬJclQ+n jRpM>G}ba4?hIm!j{_ɥi|.$ WK/S'cP ^y^ dMy:6\h-,+[#NKCi{O$9Ji3qԒI1vi q2}>dV7y޹1 7ncj+#Ъ;G8-E`Ϭ/pl8wطM6,+99a}+#knՐ75j>\9ct25%`yy>dZ{1`tJ;kvr#@q2j6.u,i%sۏIh~ձxhִk@}jpcpaslns\HwӕXڦSp'`+= kKz#cW5\[ipvFN]9[{@t^L'>69 k tbjgf1Ѹ,im=\-E^Ƈ5#k il]yNkHdw.8pår|/m$/B ݽX#EѢ _ضxݡə7i82M89˕s+[GD$`inOBN9fo+8_!-ɾkq`4dtO`Y;#X&)wdmzyr݄ iv5(굚ίLˑ-~ %cX6N5]B˪C7\ưxJdJ/;%,cd1xvݛzO %Vtk㕭1ݏMdO熹sqY6L̈́oi8^[ W.G1 w}۱շ۫myu³eAy+-s%{[nv@ŪԱp0 c{I*˝SJ6HM{ `1;wy/ ܄9W-v.[yA;o?5R:\Zn04D\ <83"#6>ap{\plsac@c6:qvzy,J~ecsVmf'F0dKϻ#e_ș;{&]r8TIc$0ax ] 5-%75kA>b6ߔ ;kq>[oh0S9$1dW}:֢{1fFmye6/`,h;_Ɍbi!X19<,bW' `=n{bhycMӈy+^y0mkkSA5IbjQnۏc ^X Xݟ"4\hCZAꨈ])Y^ &, +jp٭= }.sqZ"լW3k&|Fs6nx_b#?*5#Oy|VMӴ hӏ5C[؏!:ZcKē=MQ׽Yuamۉ1<A/$.~``ۧfc04oǯgSG[v=49E =m`깸npH p%htl6~CI &ZZ}Bk4YRn}YhG +46\v5tg|FA6?Z`3NI#b[ٶ~c_ˏWMse.͆wplQx]h JGɚOzȄ IjŬxaLqh3"g5\wnݘX49tNu;+sf@[Hhi@p:dV tsd2;>YAo]VhtsQez[9-czes?VE +yOr״]dvPeEw/hq# _%c7N"${$8cdx m<]-:st(6(& <7dwJkzNLax0x,xZtC3mxm;G4qÕMe$̛m fK1k%k_ܼ1'S,x煀fq[> 93+2ʕ{i15@limtN^qasÀ=BZӴ>7M>=̇Idk]&4`';a2z'd6f Lx[kW!ltc2pt|%?"x ӯ9ybaqŐ߬~őNK37M?0ϧh9L(,q{<.o\sgd cX}ͭ/̯<+3&<2=n Οg;3FvrgjPA,9?Yhl|HݵŎ >+P482 {'kt X=8bNCH!tƈO׶FL6=!hZ ٝ#bsic۸!nkc%qo0|2Hچ0ti;lvn@5H߅fl;6YQcuЊ^BŇ +`kc\֫DlVG:! zOl'aq,e̢D`8wC,~ds72LHdAc w Z7*[8~ɳ^qtk~9H ''5j13qqBֹ`}.Z6߲ҌcJlW{q +}]wdWEf~? vP +=3"yFG_6%{89Jꨈ ChJ(Ҳak]#&mcD-q5ւ\@??5Z( Jd cCZ:(*DTL߿hUEZ(-`*b1 h=U0bC\bmZgZ"쿉qlF6 +CIe LsA#cS/ׯAEG5|.CdKR֒@yq,22'os8u|ˇ$2 &5CrI.@7אAz G湏KlwϨqL wͽ~}b&58՚kZ<,ɍH潥QTƆ@()#Z&s1;k)ng'(taHihp/aw;yY${װYKEj9x!z,&hqӎ;:z$2Z`*oJ(-@㧲FsA?44S,S.E`7R|5:!p_>!W7ߙǨWv7~AJ*д;4T)S,Xg*%(1Eд,kx^@ #(P&&FG$Xj(uEK"db*R h4lX>TJwEꨈDƍvs}EG25'WGlɸ885ȣmióߙwu=%^}5geipuXyalQZf͗ E 1Ǚ *#CDPY^k'b?PvZ]qepm=BC  4?OHi&ڲ_rs %WNآ"""-vchIĄ5dnn9>d-N +Z[XhN0cCVIrIqgLc79qcsIZk-tNLE $86GI!8ZHY49WS#01>'C/v澮Ċ."3!'~Y[cs%97cwZ",,Lc#@qk6&\@3:V$5HY$o^"=`G<kCZ-s5yV,z_9e{ Z>4mV$bˏ)/ &!/ +>g18`yp\߄Ui:uVCDdzrZʏ1N=ZDDDDX:ޢt9fA Ӵ 4OVy"-0nD86ȯp+?<`wWw2?v|xh*#c{EhYV2uu#f߈_DDPŢꨈWx.!aiMh09-<iv͖#c"{ 4P:Yysh9xqːʔ@~Xւ QzR~VGFdUȆ=׷|.h&_mϘ'|Ξ7KR#Fx ڞf.f>HI $!+[ӵ|WM d oi>|س2F.ΈCK]lYb_Igdpf4ᑼ2>D>j.SL\Xf8%xr-}Ő˝.&=2{1-(?hx-<(7۸ټأhkYִ4kp+9XΟq#ŵ-)n$k1q0Lv97<ٻum7k9My=Nlqk .VU1KK%dZGz&D|A[/+ac}:^=WT ,b{򼄚GĔwCeH6nQIprC1,mi`N~ "s;cG fwd9۷ +'ڗ mZL̬=V8dȬ|f,;lm p~Ò wq׸ݶk_Ζ3++Uӱd X.w+x?ßbU=jjO!7tA ʳTce&N: \lmA-VTچ>)_ bd=wppI5Vf$/E(IӻP9odGa.Kl!/^y95\q{LN=9lmN.x,?:zYp 25UM,gG;|05-p dXX'7IԱݼeG -!^hZA;Z:d τ:Xǎ^.>$R<G6o6OhbN4dewW6ϐ3Yv).Ț9qqwTZf&[ZrCOpZvד:cFJpǗǷt\fۯ]XFI9'?&FɷkXֲuzV'LI4d)&s*&iH{d,?2yl_MshzR:-Wi4)#cl\Z\621ls-k@,k` +\ܬ,-''?/0 l u Xwny;' &v) L]\tୌnc\ ckci.sGpg6 m!6\@8H5?y(FZFp{xz]WFvi |wm6ݯa{:j|FXZ3sĚsweN4!t ]ZV2`oH \mi+z-GitkLHe8fחPx4yy̦GY.ξ ms[UsSMWŗql|{Z̍7QysFA`k@7l]R#9yk 0sIkaÛpæd?HlӾ^M.{CGUG.|e2ltv0z,lMI`˞"Q<^- 26&q1'`\I-ii8sPr^,l|Q AV MXD9%7Y<&^}nѲpr|c #%-[Zn(jܝ{p㕽aLwa-hPb,qP-qk[Z8o3A/P.!б-Zyez-QiHnes;N} !Ò1 {D^mQ6kZX=xOŕ7G9.{Z}oYƛ`;,nd sѸs*y?Db0Ivhpo$1lٱkGn~vld( +@oVFV>~Fn3&xa5ij-< tX3I@h6G9G¯+CbY2pa0١t,UjF<otm|29 wv =« B 2\.XKFֆk||98Rfa:=5h#s)A^ey6ɺt~YFȋ\,2XpkŵEgeeI,,i$=XĴG*U6y|{2$=S$s۷<*3Lfq#{ƗXCpxTz>K5s%w-fAqsܛ>L1DXC0@4-ʳ]hís7nvuq>NL߈s]#%cmݮi,{ZŠ`Ӓ"Ws.8:eyaLkm#qsX(ݢKłPꨈF>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 34/Tabs/S/Type/Page>> endobj 102 0 obj <>stream +HWێ7~LὛ a"0bpc#NX${d-MNs4=0N~0}~jt>_ߗU&Ύv~rdLLGn y?g~+</V'g׳]|Gbwv>)Un g!4F%1B|!0=):퇋`YA?ñ7KHHzy8O@aÂKoˑZ19w[ ድ~~^=i<6q3 Zqr6ӬmhOFtW<7^QUYrVf\ωp.zֱW#ܬj -Q Fx_ZPw} j-ـ@bP5w,5WC-5Ek)԰TNв!Hv ɣ +rUS +1ޫW0AsЬ8i; 7dSr&om/ߞj4 >QÕX1Pjn[ߢQ!W; 'Kp(^"J`iBKxH 5ɰJ B)Wk>U*I6'x9RL`ksLkb h!mT[J*['%u%kP!ne\¸3_Z +5DSE*i$(YC|FZ"pW04fK&; 3K ˊb c OSV`[t3TbpWDe +<.z#:jpW +/Ix_!iTlG:.8})(g+ mp 3\uR^1iI.ُMbq1 u:3Oa6 ~k4RX mH4*yxW?#bMSj8P[R~|HB* ?ĢyThxi_ EH]P֦n#Qn#%1A6k^/S:<[QW,2f@U0E|A*1Frk %ّ"B0ELz۵\6|&MRTէ0mhCdq7pxhcAU(](bQjZZX GA)g/ùwWT@D$)^S׃IS~׊eEwbȥ<a5nU':|}*Uz?[h "!#|}@(8\29S$M:aNdRc98dӒ@ oq1t;ַz;ݎv=ԇoϘUbƈV!P + ݾwIDMP5Fg㍈oگvVH4c, R#IHy(S#?RTU}M<& a`vZ` G#=pwq8b;Ly@:M{O[7W4|ܺOVLO8ΌA9/m(vv5> j#|aR>[YWǰIx˫LR\J ;Z"{A \̻(-\*qz%97x^s C ǥ`]R)aRJڲ"@JZUy++kP1*@`}8Kf #O]$`i 2+ZFcJthˈSL+̌[$'3lZ; i\Z'cfe2l*Y,!ЮRd&0 _QDsZ 1ji^{U(f5-DiLPDqYMxL;^c~ψ/6?6;Ӌw3 a7).aYs!(x3ӏa2pi?Γp$SrR#ӯnqYװû`n\ ȍ̌7ۅ6돿qtAK("7D:10?`/pEٺ9+!j\ؐhƵYw b$m~8;di-Ue6w +# q#vydV.>Fhp-@ qlӥ]LNwoWԋan|{qX3hhUE5)BMw*oJ}~s".OsRFKʛ;m%%R3 M7٣ ܚӣbQR;e pgx5tom$Ar磱A@:2;)scLvCc Vn.KSc,+0u{/ٍG$t\wL,>kuďRF jBKh!EI+LR 2q[{[(Zځ?9[ǀHĢ{`ND[Ԣ 7e DZ11A&^5, oԶC?Kat$i1ڤnc\b6خPi.70:VU1nx"뽮Y❡LJR`hP>?!"_A026Ҽ -,%ݵ +k-,1Z&p#'{68Ns>?eW\":'*14ENd0gMz$)K+8O( ٞ5NLRXʭ2K\kfWߝcxx?N@ھߜLezU!lQBA _Up^l` +endstream endobj 103 0 obj <>stream +0 +@& +rWoSU)KFe 5wBٸ 8MєkjSoT8taY)>OmWm6d9·}9}.](8P~T0V䉞x9P0"%TʫFØvwF'G|cv8~7i饲}~4gC~,-vrIfuU3.ENa軸ѨԍYE Emm k-yE|bOL\~t7h43 ?EPYlt̘ q@}Ĥ9_v#wExBWي_/W.ș)(%9,fkђ n!٧쁂Z-w,{BZHx3Zp?>d z>/l +67R?Kh %ݽrqJ"һY9f(,Nԍ%>N)8үѧӻi1%4Bg+;;S%<}x? {[$" UMTy?A@l*j)E@pbT[L_CV keqmJ pc0 oA'1aCzR9wYS[ &`͏WZsyזG) I%aqUy7#&&|T^x*9uoZ7_ش`f +0b XˑS=|hmU40_ + !Ec%Pq,Y}7Oqlr=Yi@IbA%pϯ*4bT$}Nȗ>RnI-YIjg +U-.b]f iҍ9G5&R }=!ū*ӤAD?nX[Yaz A$ҭ-PTgo(vFٲ>On1T|B0R4QjNp(rԶ!)}\3΂9Ut8p&֭ŏ-m-'>az +yWbaXu( y`YCOTk պ*U?T8JRHtiCF*STdle֥5^EFS)LO؃y %B/EƂvdcL,|V[bdfI8; 7/c>AIb8OݧgcES:XM,z+υi-ƽH3 Wo,LHGTn:幤X{9CH%6]OPΠ7 Mx*]ۍ5`on#2k7oUBmk+Տ_mj1֭}CU΋L*ZQ}tDkٳX"E[x=-F32 )-( n@"a~$! >]vl"\yeX&R7JU5 iN:-"wlt Gspm+kkgAnS_[)5/D79[J\ֻt3>Qw0qI\+l׺ #R-e7A-aQ;qMɟ)>d]C$>2ybPodBn@A^Rr2~+{9$͂3Xc:s4&n9!L.z,xQ*TAW㩉$]u~ UߒǤo}N | +2#>2z^mBp/G"҈^ky5Ũ;zē#I)aSOTɺ͚cd9cERVHVbWzdi7vque"aTWTB́-^Qlv˲Ϊ`}}GRwxGZmB)Չa7|l;Lr0Q* h?C`y[_+-^?/~b*hz OJuFӁ,/ +zmn؋x +e=zi>NB㡕0yDdRu o.* ~!8U V1R?1jh5趖eC0-m1ؑs"  |iQнj bbshS #Nv+łd_#gAJpPmZ}NG4mfْű$~*AF+y f8>w`wa} @‰J[؀Y*A}R@h*8>poE 1v+rIƐ 2%nY#Gٞ =7@&gRWĬ(+0VyOf%jvu +e=Sk=ΝcE@7vO(J1Tʟ6#kW 3 xR,O&+l񎎦^>"1AA}_ByknYG0ߩʪӍ!fda~aB-Vb &SU>>vSQV[u^um["$0MDpr &^Ѓf;Ua*"RnQFͲOȚ̬-kǚi> +P`bHƣ?یҡ(Q !&(} f$w&@HDi.+iP|=5AM3텇g՛^  v>[bXB7>p?z˰<'k$fxwuX(IC٪1yU;aBg(>E +UNhԯza%4q4ROBqܷ)n_#2w +ў5QqM2C]/@F\฀!wPHI4حHeht;.`t5^Xk>e}-l׎fQUq8w>O5F]'ݔd(L_H@~*г`~AD8G5^K.a5<~'5}dSK'!1" nݞ ?Z)}6r.A])mc&&_}{[ٻO],D'3;zos4|A `19V$G &pai:9< ޲gj"LZ8.g ։ODS>|?eg{@eNQd`Ԕ(rbp)"l-T:W#Z2`..)'FMUg+fc |֜LQIαH?U=C\P +hgBkK(jY8ZcMgY-)Y}RT͐``Z-:aWT8QrJ&>KU[=K]ʭxt`6KBȐ)۟S߶^܆r찧 uW!;Jkj:xwaZ[Q 7P R/\c +D1'-2Lm%rُ[h*(L\"+Cy c~N։WYpyx$;N Ld3:'?7嗂7PFY)o߸V +٥r3uÄlzRJ܆G?f^Ld53@FDOwCtqG\g~ުy>HnN=]a`B'*2;фP} ݚP8`⎙x|mE9~N3#c؊j'Z\$u#Dn b֎D<> heִը gӤ#K)_[/Ldضd85Q8t, Gο-4C'w\p9Nq h@M^5bD#ʷ~1׺}{ԀF%΅I(s(0ҢUpF5VgDIZ%vdY m;5u?v#?pj_k}Hqx+YKnS!` ^rѤGSOiVܼvKQKsPwf:w^Tssف7jR,oD{z^_ϱw,SDSxWG{Jq` PܼfOnC֬l|ކSbS/V d?=RɇA- CY$ Guuix-LM\=8UU_M>xQc[;QdJUQ7oy[Jʞrs{)CFx>=Аn}L W57I V}D=LoX,"۽{DUEa(t\5svR[ pĖ()7RSv?0pfYoE>?V :H'bzuaH|֭Y[ƶanaz2HTF(٫PTT':|٪^WypJp"K2eސ@&M1|Nrui 4^Y1ݛ?0.G(EjOQWJ)9vE +> C9R> i<}ܪS=^937lQUK,2HW(:ȺZS(e/ނ:~lXG,VsN.109ʠ GCsQ%{1xZs ==Sٛ} ^~ "'Vl .gb»ZMjOE^FU9*ڧ^ߚi+{sHFBV4_xAՙ,MU *a ^і:>&}V]q[B~uuF4Yh2xi7~9Uс}m!Ql1!=ta]W[˘232g2Sc$-DThIY2\LfSeڭ}Szza3Qy/ WMYz,6=LugYfsTS984͈0Mx?2M+Jw崧$PRJed`ă1^\ mƏz }93/@W~th CYnӉCj J+|"s7Y@ nHdmX?yñ*ˡoM"豝ڮHfU"7,Yp*!--f<Õٱ,눗5'47GxrYgҐ᣷S RȌ3Y]EV'ءT%u5ZXgxxHᖓHfdPTm&aKd*O1{WAؘ8~7テy%9ȼz3'OΟT8w?̺uSbLoåo`mb<;d6ANGߤ{@?A^3BIfiz-` qe#Qp fS{5fP$iM3s%O'&y_[ط@hY-rD_˥PlgZd,玏$3YM(ʈO _c{UL@l;E24zTzJXl%зk Pz7?mJ(V+[[j)]Iek39OYxژ̛̅斠*JS[uP%SrXfxňlR}Д7S +|Yrr%GBxÜ΃gCA#=l瀵js*~(Tl7+uգλӁ!TOpIdѴsF3 {ڝ  )qy㦪N  g6Lզs5)vpUǢzs'H>S ):pn:0Y-©VЩCuagKo}M\8#`ӜΡ`1B9pp'j2&]^֪ 11%ϛKSc*\IG"a"R_mS?By ӂ$u^#vF5Ѿ}aF-;1YuvlAYJ~ +J`u.(:d4`= }sO'V,wzzeW+ՅfgwU íx\%_=Tei ەsq궰#KWAf$oD$OJFj!m+Z.DF-Oj^ +i=#qTZo-A8ߵ8zzIEW*wy4*jF<9>T!3?ё-/0NI1x_5|J^;z뱑H˩]ZOϝnT ͥn >~RdX@$!N'iS\{R$s|V穝IaQ%5x'8]WMI=+C݁Ss~ˆ~"`~mr1WOqs Ѥ<42 z&7M\h 'med3W~(/".?井JtaY*Og +4\u&ބ!(B*UԨM.%k0 WMm8RSfv ||.]/BÊ%E.⦂r&Cfl H#!6 &)_{Q:Aehîh [}A`zT7}\۟^tXX* z8+} (lK4@tv8ܑ2"6vS)6[F9 q5t@ĐgNKY'km> ]6^%1!>X+Z+|֍S]hq @|wY= UÌlN"8&m*vY?ߓVĸ[x+Z{b9ڳ8ڽ XãSUbZ jdLG>"uX}+^<' f1o8Xj8Yz }e=AZ}ja 2[zӋ8N2"B-WV+3kw^je\Q*\VPX|yHb?"nIsJX* h7C>u_O&] iwShe2雑n2@i*1gRW<!hȅi<@A +}ӫ6zֳ6aaNq'7JI>ֻ"ȥ +3Qڑ<\~[?U.hRylJ阹XP0j9f.~Q&=nh^|t}GmMuf!n PAݺ)nX +U.iN2Е +w@?f];&h9nKa{6Lzف_?l5a{&'J$P9WX +š ^2mb~cy Y 㹤=Nh(Nةr@JF85yˣ[ŷcC2j_5T eU"g%j$p/ $2x_BOč$u.6! +T?ȋf2BX?u&-\F›,Ύ$G\.i?#&ێgsANG*-q5֔ $B:ѦyXELx$r eMMI ר9xdr,:pL) DפxJZՖujg^Jy7I ts +?8aXG읟Fi{unJQ$=xc"m⑗ +EȜ&dQENݩq7Xq2@=N*slwMCgvV*hȠ)߷+,#a^UY8`6Sa`:5%Y{}K)D k'z~ioEj ܰlM Rji>_QKohaNv4 GuhLeyDGۍ$ݯm]I,+ùtH=V[,\ K_`4 W,A*# 6zL'= b@Vt0AE֠Yg T˝SqZ~rbٛn@9|׶H3r5@\ε3scr~3E_@ueǃ* =1 ]O;zLHhg'!F!Pe)^ljh|B@е*N) .D 7k =WK%Y|Nٓ;X U${WPo*‘d/ʼncdW⁰S%Dʷf2"owz9.U{cHX.śY/ lygvu(0 +q_K@oe[1vٮVs&x͋@0Wy$G\6gHǺ'/PөJ-oCղ`vB8\F|`Y[SwϓX[S8yO9 < L{12gu"Sѷf ֦{غG|"Ш چ_hG _5c\6L)s}Cf4c4שl#vO˳ޱ`טJ1JS}j`(0Gu[(h4flBgTo3*h"{\ Vzg̢#aSCہ= q +RWcD}D#v{ҩǶi" i| +ns5P=J3 ^A܉N.NpEpIؐA6=k\kqM: w.? 3|M|$#d6D~IEƜ @G%!٥jMhmbQWG (_QR_=h5s(=Q̼j"iyClo +CVoH0IQ4 TkA ׀71,ZS!&dP2wG ]0eoh.H[ˮdK: +86xު dٸO$%OT˿)ꆘ_fn)jR5'qcKclcN^`3ёDV0DtFۼl*:/? _ X^ uIq9ڐRXKQԄfHV{ f|+3U?o5/}Ѳ>;Ʉ[l>Ɯ V<+ĚK6F6xΔ5yܨ~`{[GaX<|uH''}Cp/{2R+044OĽ4oa -reTFj}4稦0|\kyJok@xw>v Jda@\{$|FL >qk9Aܠ/Kr\S%w+r@Bp)ynXrp+5b5l +D@a:N1\qX +9mWo~D H[=9lW6Ἅ0>0\%1'I|k:B mwss={o&e# 6K7iwfPgJ@SQAV݃};x";4ܟ EkRNL-5! 5*Um|k9a7J_4"u2L">YFuCA(!KX5dBDaTO[?Ewl7!/ҲPy!}S;'ۋ$ҮYAoU񄈣EτΗ\ 9<E%sL(I`qݭoaʤ=݌ +@J1+@cc8y^mGSbܚ QRNah?bAAQf2wҁPoPX0?Ļ&S]hᵺ󂅍[rQvN)ᣟS@U(5nLhoNa8;mkVϱ3_'B"xԀo(&0/VY@xC>^b@b j5ㆳb +L%M9ל|eM)"뤩Z27Mџ]PA2rY#X{F֋jGaDž҈2mPZWS pu[?!q"To߷C!t`&EĿc3սA#Sm +^-OAb\v+_5&tg):x4s׷r5* *qw$O&)$|.ۄ$fMA\-p٦2ɡQQ8gR"fb$ `=.9D/Mk]œ +(~Z般fx+_D2ʙ8ya_L折[7p3|Q'GKނ8oB +k1I~J>s]4IYb-@fRw &<љ.ljC!T *ґ\٫2|Ry?Vm̞:0+=K2I4"HݸݏCyy#M`YCRhg?!w!7}Q>GGv}-; w1v(K7f؎C$ +TŎe OmeGȬQB(EBޚ`ִr2meufGfN KQxo*3mhyKzk*1ZdzE,R.}LھѲ5鉦vmƋ,(#sq:(?B8n84AЕi/#VCssoy1$ꑉʥ%:!D [ffUMJ8=ǀMS=Y:^ B3V2!c3ݧ4~1x3CvZ# Rs|$@š.Zfn5 +s{ٶ5ڈ6=pH-KdkL-9L;6vcH +PP}G{)םq5"'hI.|]li3+2mD IDUU?r:`(g3u2ĉZ-|s20kA_ `«BI./(O]Ilѝ`P3'&8Ծ:c +n<:vsf} . VT&\p+ 47["Z vNm *W\&VQ8:+wp3ݱކFPu#87aֶv +ภ6rT_=Ě0bzș[hfo lZQgZ37VwxAWGO7jb2ME&'gZ}ix4-ӗB'q_K$Ie7ֳ~xř:֨y0ӷNԆuoYڰۀp&rr-jdh$+>>Iϛli~@=-ǤȯNX4&1=1_=(O>K"U͹uJ4ۙ?h+"4x5TM \C@RM s`) 65hjx/"'0,e_fK 89s|M.1l{-huG\랰OwƳ\ 3Bj9=Zs13D"DqֽxJZ_ (gn{F57p2qaKeY1@b mBM|5gYx:+Jiҙ+#: $cBP=9r뢄A"lemI#}*14{0w ㋒w@Ae6¦vE! @46GH,N2"عǀA 7x}p1A*0Rt&:ZZ!^*! H+R=$eX].A8|8fB@< +U_6+{Kֱ7>3=Bဖ\̦KaA쫈h*Dԉ "<+VӜ3}bZ'LRY_킧ΤSv 4 Y51ǶHIWJ1‡H +"xJ5+Ep)ʒ ;\o(n1 aZe9al?U;*43aCa4q|aX!>qhGT3w2g6Xct9:޴bGv~H+X(p-{Nu Eڿw' 9A6gO ^aҚ* +Vwv>HQ:]gś#aFӣ|f8Pĭ6epO:7W;"6<@F7 :߱DDJΝ[;͕{J, +oՇeCS}ThY( [XGw1ԚŵvXʻg4=QE){:RmX3 F:| Aɫb_bMG WTk /z)3'ryJ16|թec a! >0  rR W(D>W +w~lۍ8ш=쥮c{1š̓ 3ckMB8W8;񿹋 +n~LuO7[$^A/f1$o9VXk )RwpEs кT.cBA= !M܀Dï?cK~@不x# dV4l𴄠^@yVlw>~*fb.+0"Ags{/z7dU>L/[rDw&]0X$ʰ3OJyv P@h)k;zVebڻ9߹$H:jJ ~*8 ϿOWJ˃p}nz@<=c{ ^g:k=dșSN}g-TCEt4&3 V}m4qMg<2}[}"R5ƉSiЭG(b#GHAɸy ), +(d450j! ̎{o8S>mOFHzgwM&KV28}-0_}@`aW5HJk y0w),(yLi&f.7~w/9-s WLjF'tQFL +Uc1޽h/D) r$ g0/"J59+w > i)$y̿yŗ"NZB k%a}6,uW9mbsڿqHAfK8!ytj^DrtFk Uf+" d> ZYR~je9k 9Nzbz,D/L5Fڦ/c2sZtN-Q"I^)PbX"r[a5R0x*c +-ݫ˗aY _Vu&l[BPU?\ +ŷl;MY5(>)=Z;E8⮰x Hod7],'6*_볉͓|, Ou"!Er 1Ϗ$L]͕NIe 34kWu·SdKfB !,4J yxޫm^*Ǧfڽ~㴗8},bDg6Yo -aeg5]y=3iH +n @#?R;Z>HR',T 6}vs!Č !u꡴ng,gddz_p)Y_%afHRq/]eFk /]˞WL?P Lm_./%H/]RYrD +Zڧ\5 7-f<ዎߢ˅ 8{tv T; t`Y=#G%i?%.3k +kIXLp)EӠӳ1 '](REͮvȟv_"/c&\X>a=~C x'%lôpbKI$**T,g*n7QjzBգlGeU j=D)ޮ?W~ʀŸ8qUKp֙6dgx,Ҵ#aGU-@µȝ\:XZNmI& ,HgL{1\D`Wh30R'L}s֫; =PFySٿ%RWSz%b|%؂|y, X« +JIa>4ߑ { 03`bvHvy\Bs#q"cb5jNQbepѤT Rt.qjBOU V |$fjۨC9{|.h%`]=-1?VXBɖc)w;> k_K,)>i*l$%gC~5"pviKñؚkI`Sj$ LOz ?N ܐOKX:*s+|Dѡ"ӍpIA()4dy|ށPH38if*Ql0@p.Ϲ(Ҽ+0>!s# YAqSE(78ok%NqI釧exdb5JgCˬ|&.֞ +8`O%\*I=D* U(; )Ypt8߀fB Bo Fߤ@*K({S;w;K*].kèLXBb I7q%>/T6f%~1oYMrMWXqx9?H`eߨjk\:G5:i7Ex cʧӜk7&h6v8_zg:PrGEqJ؟ d G.KH +('"݁p#q6=g% C3 B,Gz\p.8g}IAVUw`{5)>F8%FaKўC(=Ո00zр4[SX)vub`T-J6식p*wJZ +K{Ȫ[0^,?>T@ۂ0yreC]7,w-@} U'*,𩑳=l/l؅AcmQKH쫺zDywuHbS9RS5j![3|)m/`/]ي35=1V1#zW6 +yD fi2վ" ̋jP*^-¢r1Ojc1wFPG &0sfcޢ`Tqxi:Ƙ ;[F%w:>J%zpD i +]D,@y^2r :m)F_Ɯݙ[&w?&&z6JW]jE^ 9=6"eEo1x{&F解0`S2.K?[ӧ T1Ũ@JߊUKK(4 GǺI?3\349XOkZwD<LGtjx] !Lu բVavQf")BO+*W1ެ 4z*Rp@d'CRO(°NV_G_{,vqVg *Q'Q%̨`E,0?de4_}х1$~s)H`*P"Mb; -'8n:/H`"&jQ2P0WP2Za3bp[)10 &Hrm@& *(٩oQ>H|tqDyN+V,WH[a놪-!?Colڽ S]NFGYNcwOy@=*u?OVͪu nqߒ$)4ߕ7|GЁ}7M+8GN`ux +H6}ᎀS)/^i6j-vv>Rh2 +KeKd{Oо+hN%_J̴.8twʗ.-DJ, ]up ^=dG3 CB35vLw/[Bʕ(2n e@ޘn.kLP]Fzԡi%` HOd :hANhyKupwNӨ@I ꨇ?Hh)z +w{ɴ?/Z; 3~ph|?`n)&)-+q\q=q#+.c~#Oxk&ksVE},&P>ifR*LlЭvK&D;fiB9ѱI4x0] "^T"%;pjE=>['eqWۃK0:#R8?#-?kma#qo󲖪`>E!Q;x':wp-gt3П V_ErqJ̲<٩\_A^"㢵Z +}TA#jG{}fĈ땹&)vCw'90gAsLt#c[ +؈BߓZ܀WvmUhTh4$$;,4 4f68iY/K:Ax?CB%M)Ü|:eaDSs%e/E/k0n<Mz2Byco8w9. 2]g )Aq,xE=FKlw}*dBڬF.`Q3EWK\U8Mr bU&EHS=xI9H(&PN5 +h^- !sPJX1u!)_rpJ-YSܼȼ_}n;Ũ.ךGu*̜#"C*;mm =ĽsV` +)x퇝;0㣍gXn %{wx$=o{ZN *46^2e|1J\,̸z(&9pe8^#x/ZvH7%X=VKT/BA7P}ssGðGsH`hTnP<^B4( j}a w M""UĢޣHA0Z]YΆq1[nduYhm%Vpoӈa!_@:[}*zaeEhY1a Z19/u#ƍz'2ITޒ +Gljl덉Wa'wFjQQn"yM߉{nQ^[bj\L)J3Ĉxq cx-z,S{Yhw!;Zc]Wzi3Qē0JiBi_poW_vp&ߦdB_~nz-q9Dwre}1&w\VB&'fAȽB&Wa<+m !0n+A@aH]L=D_UJ`rJ])xn2(tuu:ZGΪq-=;D|>`T,SA&h]S^0oR!8uus?on\IʡFv/* /<ń9< x!TR|c%ɐb~(0w/˩ )DzE-:,\DtӚdpu>~ j3I{̡ѧn')LKBu^&$4ɢ~c{i(=X1Co3+YxKHLtB!FIP5U +WL=1>X ys@hRSn9L!Ӯ%Åztlz[AW*cH?'=mN6b1,J-<{Jtk}ܩ; + ~5ĬѪRf9&gDg;Qd*-zToj3KLû˫`MGkȿ {B-'t8`RɨD7$b'&ir.D<$Wi~8ØqM-J]ϬFRB=NFqO鶳y…*eGSxR{G |8+'4.%".bE)"Ѱv@n qYq~oL(îUb!zXmDqLK(r i batt|&ޡEg3oۼX`mS J1aEM=/V] +E33{˦Řע˜|BHa@gɄtIgqKwzIJ%_>("8 + BR\X)Ck=L%wP3iϢYW: +ArkrjO.)&?!:b .fם[lC6O9]zv$A@UB?:0s9'cc06:Ȳݑ*A\R"ޞ*OAQe Dcr)ଠj\K  &ks$ԣ;|^QԈݼ'#.fqd969fPDLI_k\(ȍMuL({ d&-詯ٗkXjfSrQT[Y_k zTyݱ+ \Σ21 +p!((lU[,b6AK\$msLq%/9)y*k\X~-%DYNIW4,`0ɂmYOEǪ3X֒;" )0 D1>C#6VJKNjXeA%lvv\ː S7̠@;9Ai/czҌg1rBI_j;E:Kb1zw(nMm_iX3ƪDm-bYrc XpR,- e +4ʚݟFob8ك: Q'+} /I͑"61UOS<%O/U\RQA9Gc;W?Ze RTB0pᦒJA,?h<"}rTG:Iݍ"FKqa?dĔ !#6 ,M0xkSk9$/[tx|,x]_ij`l>?Ziݙ%&7\}b/'~!Ŗq8J/o'偯d0v< <|뽢˛Ǻ?hIS?Sswho+aCo=VA̚odjKMFͼ`ע)K/wdU8 f `Pfҩ=Ko^2ȆG6+JC-'M4W/ZbټM898R=ٰ]^]&I8;rk(vhkݡR:؋Cu)PQn:-ney-:\B3YGE<0S.4__ ;)"#W +\\_ԘΥF?]%J"Q{97al؂b|S OT؏X_ +䌾"C?3 &hu!GxaC|Y! +I%- 0IZ2yZAqG/L\Cf&+q¥s{,2?ڧZ~z OLB_ĮR:kU0)pLFr_@T+b,u&&:JZd;"0`2M;c2{S'L2ōarSƉN.d ڿ1CS4]"iQVh)]1'y/)7PS\WjRB=FAn;W:_P\lF +,x/|p+Գ 梎18E}`;~zvH2 x + +㠑!bc;'{q5aI"$X\\uqgK3cTʹZo"C)Ja%dXKJ=hdooz±~3m5(K65]F`82kXHxST^,K@@ngd !q0 +<թqj1lAXEO{|UB"yHG40)w[kA^R*^U}N#i?q\Q;D7N* {>2xe [}" A^zJWl`Ėi=K 1G&&^׺}[1 @`LK92=XjJ>$RDHݴ'DǜP<=ifu@0b$H4$rR2m ^!yT L Y-@N^Cp3Csi8nvEvB72'cc]%a*g'M]+%N;_ +YPW*{o<;N@S-rl0.NriFRGG2uLPJ#)Fo4ŧ~K*F%7./EGX=9fy%8^"='\j@՞N T+X8w/?͐W 6^67%(&{> ,ſA?捥ECӎ׎> +~jMno@<`YH1W +4ɃC0B~Y=vG*E=7@7J (ςfA\巭 mT st [Jmlo1W&8 i9M]bGl@܈bufRTC~HClN3%YFPSf>D;dylSyLFB9٪6;9xadB>tZk+W_񱔭'Dzx*yskSUpE麷~G#ţel1=^LQd׮K`%9 +c +;N %N/#0x= 7RYLQT'\&Oڛϯs:d {6qo ObGw '䚼))< qzѼH~>h_ϗ-K񻥷4?}atŋ'(&ȝWI/a0(%QkL ;LFVMyco_i-YŠ\*9`TiT<3_ʘ@ngBUS*KR` 8'!RǗ CҾ4u +M! kq`6rrSx䊡F5$zkx3dkV~b}!y#uz*&?CߦI;FGMo\xB*"la(h?x2˛@TꀶY @+X\DF#/O:3YdmdasJȃ YT@8W4Us{Dϡ^XK<lq{j4{^CnC(?!=NYzuXZ>DJ2t XPݤ.r96^|Sٕ1诵´+1]rw%uX\)lcҋec6cRfWWe 9ӭ|PqXEe"9u&s,};*~U&wGsGf:K%Z&ޟ%@ٿ+^.$ܚ+xs>sD9-_Lj\}& %t7>^xΌf.9bƪĸχq  (-#] +'I+lJRhce| y"ڷt82Ҏ +M4 ik~LVߠ?JQUCLyB dUjT@h'ҨM5>B<'F+Z+R+ ?LOy4qsSNr*څR2ѐz\M7W( +3d,G|h:w :U{}I-&6 կݍԸFj z3l6~'uۊ+4 Rc#$`Qnɤ4򏜊!d$Y;C|[>nn P*T<m,5 1pĭ,,&J> +R/ J"私k*BxcYMrXxCgߋ8bYprmxDqi8V$ f CPdcq}LvF g3s';^#%sCTd0˭CcK|b:FI_#2i`j7^s1Ͱ*3(9B_TyR ! r_K4J9|d'p-z.A ,D찠b-4FD}۷s-FX)by^'.mv) %FC$M7S,א>#L# :uْg#!ER֕mN3q<)r*~i脐xՎhĝ t wNvϰ~panwJiVptU2N Ls ]⚿ Fop&՜Y] *4p|4LW[FԪYHZYwV0O{CW-'Zj^Y XfO_@@uJFMFeQCfB4;3-DgL__YlB#4wVQDyo2j'7[DH>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 35/Tabs/S/Type/Page>> endobj 105 0 obj <>stream +HWێyL p3 , 9KX ߂Xh%a6V}Z}%u䰧ΩS;.fȰ`>O# z:aR|Rﷄ<< 5(ciJ>]_iP&~' Z/3߆ZId_&H&B`s$; zřyQ٢ rYv!G9[aLح#.ԑ݆eP2$,N:*%P|On{9 ig!>8ʜ'Ef(Įu$&j+:Zi2{Q~\$~n'`+U\.݉i[yZ8}9)%=5A功4ڥzh?3BbQ.I$ Y5 <\Ƅ)ݏFIowh):.,5WbHgDT|aq1rܛҳy/XBƵw2gbڊioNEP#c_4@J`d?1QS6 +Wf+Whn\@Q$_\ (*UC頺 ykK/$Qo \Rp[QYһk".]Ԧ2CMyk,BU ?"h +-*JC1`gM?܊BRt\r(11ol) z|Eh%sd\'taWz5K>SD4΢@[T^c2BpR, +d2VU&+K$XLfE jEWWZ vAre%ZP5R`mo]jp׷hM+^t&hTx@C2϶ +B{y%2 sV)ܙy˧wЇ\ѱ6H>tҦ\Х$ma 4ӂg1}n:ɫcҼ\6AۙI۠;F+RNa'CVT6 +/afg&2>]<^ٰV%ݖuR]\hAd%) ~bfAWOy|!'ŁKe+g6X]GhQ[!#v0¦};d +QX[U3(56gqTɩy=S8JlzǦzQJpEZH 7vtF^P#]̐,ҪvzvS*:bvv8!bX}ɭߖ6nV/+GܺЍ>' Ll 8_g9Э܈m}NbIlxkxTOYNxYҞf|\K`7a%ב]ؒ˵E $tig *=zˈ[Abl"LYL18T߿x4ެyk~5{tL#K`-[w1dm8;ŀPwS&p +M:5~)Hi`Lϒ2N}DDHw@0ހ].MA(GU6Uߵ䌄0q}P?09wxxcAyBR*Sd0 3 +sDbzx4ܼy">stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  i!1A"Qa2q#BT3RS$CUb%45Dcerst +&'()*6789:EFGHIJVWXYZdfghijuvwxyz?b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb"yjY N< GB "}DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDҵb"qy|/2s2u[ӸP@%90SG}ɾ!g Q)MVTG^?lNr(eG:|[W1.˷[9gCzH '#.ڭuWS}Bh-ēSC#q< |[2NJV,P4w:N%ڮ{t_wNfZ 6;s ̿0|9 W[ C~gNxؼ#+ +n btUIo3&_ +\$ +<u58^3̖]ErI썟)!4^v[u ]shw&o(a""""ҵb"""""""""""""""""""Dz]q 45-t:jG>3¨P*H,D<|ۓ.(m@C|vXg!nǣ57"oݖ+p +PzktJק+dFZYҵ!I92392ŏ`LY~zZ +F߫ɬKBQe26#38q pm@^q|7OX#MVByo*( z:23OYG28 <v5]{|y {9˶CүnpU~ה.\o;!rr/LaQ$#lJOn}q>)w ᙴ\i"0M>=%I"̀8#( _i5Xyt˻9ss-b%Jd]gNmsw֏|[#/+,{־pspBֈ׆sxƶa~BX'[׼M+nٴ0k1饜9VH#c7'['¦[A٬-X/@;_[V-a) 1ǾDb1􇈷gJp[MM{/?~3-i|6p=UPFg"5rpV)Y3GQw'4sW#חMxvF6mFu:ʬ[P20alGs\&oY|0aɣVtGp7 F3[k[uGfG%,y&ATu]<Ϻ76kU<^pW`˱qMϓͫuմ6O7=:f2Cӱ:޾mL\c ϡ.k;6At:%xVG !5ڭ઀9tWþ^1l aK;Gs)dd҈rHdm3xٌRQT?!`s;{'=54ǢǪYUչ_[)ޏCvFV.ejOhpCU˽:>swz|dʲŹlr6믣R?+e#]llw '(?} sήLk^Pb@nzjQhV1@ }oS)ƶh؟8l[cT#slW2pFn^bBJAw\?#2oϰH X尀ԅt 1}#˻ Efe%zERf 36wo]u3Zo FIo5EOC: F$L%װVMՐ_Q#nd%[,*ȜgHZAމ> 23=h|pR̥z]dv?ϫaq[2]! +Ŭw6I-V]gfb ^Eg-@ϟCv#dme5tQeW"d[Pg!Qj$iO^>}&B%Tx7J_/yw_Īg7%+󂅇pJ{L;[e}O !2>a"_yfT-mʣf戀7rGS$b\q5rM~sv2ޓ |{ӆHCڪbןIï{YW-Y2T6&_Gq{l%iʨ=в($Coͩ= 9seى[R@7xjyF;32Rp&8r-o[6;h<n@lJSYKI  w]7O=={BG[GS#q\\c}&MY,_e (H1/[ƫ-SA8 XBH+u'GO/#q<2֟VͭG~yw*jl{8Lj}Ve%x>NUW!K_VGy,:%u _*QmF>?%=b:OJjp1-.?Eߊe2IJ1Z׺- +:=Cq |@]7J,rBk*sWbt*(wڎjqع|ov:%y򸍏U2 e9Qi!!+tY^Sy[+>km t=Fή"" ӵb"""""""""""""""""""hqcZإ_.ʐA_ho~]fo×u9V:A_˽^/3z& 8  ;3JC_7fZW-%*ΏgCtyM9YWV6TrÔ:kzތ),]Ht~mz%PƧ. (X ͮ)>WMv^ؖmΚ*`Gy9dX*^UF + a;ECd[i. *B#-L6ecM-jTu*J9]Omlk05`A0~ff` 2Cu]U UCλޙ鷅0 X,l{>ayMZx:}֪ʠ<\빢}OqW&զBչչ=l{6yU{BU[w2 =y2E%]h!1;!Got¯PWUI$OĒLԻf[+b;0GnC>œEuIY(IR=s9OT&*i5䜊nVub~H`9GV|(ܛP::X>Ӂz=ٰg@*= FhlKq"Vh +W. t'L[аa~]3?c%/&i:yKonkQB[\b5=JT^@>&F/EU63Ԡkث;[e m׊U4WMߘ5NPYQA0vr$߾|1VU^]`GrX==5gŁri S>PX.Q h~Qય)FޖȲX! Г1ML1sڛׁWecS#$ rs12lj*ׇQN_ y}|9x>;[BGqM{,zZ+cya1z.~j3VW&b~nshUl6aA'7bqs +o~&1vd MO>ٗZE@`ӏg[$ o|$|,_ U̺/w= pqpKqmf'ŘUf>c&F%YbsKrWcYJɓck)7A; :^97+^9k֥щN]F c׸ltu +r>wC5$|{0b^ebϖA$;bmez;Fv wK.[VsskG~g&!BNFFAtI 1# h{" ߢFϙqN_WjY[=iw;]` yBm<@jFjf}}fj|"'S}] p)JC@ܼ&N%Ckjt tY>WZlwץ}>g|:vz(r֑uyBQe:q婳W2oʯ"VUB|j =DߘkQ0oi/u\[xnB-:2H#߮sbV1cK'?zkq>ŭƺ%+ 미@~p&< oz|@WR`zj7Qu !lbHf;똘v٥,)CA RFU2ɺ1W#0]H}z>ԪV(R@.3hOn5>.M%MJʀP32X-Եb"""""""""""""""""""""| k'J.ر6.ԅ*SH؛q1dWSkDRǠ cKk`Xv | }DD\J7xuUg y('ClSjދb(a>vj`VlpOUP6t1JpB yTU6Xu y66Uy,)QDAA21slz,dU,h6:uўrK0*:#˧M9eUYr o@mG`㸘R 9=Qq` FA^-meTljl U Q~]+HM8f*{#3j&*&8R_j'=GzAa9yX+7#jOMw=Pk*f!Tyu'ͣ:a̧cjtFǸ󅜙AVG()Xw_>`6b""""""""""""""""""""""'o7)*r /ͮy y{1 QՀ~"" յb"""""""""""""""""""Fq&=iJ6d%5PH,u ןiλ7qxƯqeqήETO1MmXZqTt:QSa]?4Ä& w(ל^{=d{7^sV':ٚ|E^-_ND&:e Zjl6Kz?cr:{Vb>}~ifx w/1H'=kJTPc`;MHCLլR(~2'߲Nv?IOUM=I c'(ϣ\5? űj|&qJ%9~^eFp$mzCQ_P`-R[_wY ʮ+-UW=d~ ]k؟nZ0YϽUϜn3$jmNlDqN+dQ}xn色ĞzMp3ðg.jyT ̹Yul|[VsקPIC w՟PA(z5pБg;hyq~E(Vro_\{DDDDDDDDDDDDDDDDDDDDDDDk,m:ȷ^1ֵb"""""""""""""""""""GqM*(rS`AO +̧35l%\܀gb$jWJY|+#bӟӨ:r -jHމ:3]xC O&EYx@9T=@36=fѧ58C"pFv?5Ҵ8Я,zn'v~"6Zns̢̥S\<|Odl0yt"pc!#1^%xX +Ѓ<ëYtg`a-y-eˑW;C?;ߐopqjpA#0`tH룹'7;790®ܼ9Y^-\Yx{8PO)>Q-/7/&i(@T еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb"""""""""""""""""""G[8|]6ƬUmY\/-TzϤr~o}#ܘzE6~*y~}LJM[^%_HY'x_/v?gQGh3*e6ZvIYoiW9n"" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb"""""""""""""""""""|YjTv RSu6E>^ vdWHU ן#2B!w{VMWՈOpl@t'ME6asO/:7<;eKV!GOHb~?w2s^mk{Its.K>Kq>"&6nBvަ#q/:wo2&MV9]K  āeF]-aXaw.r"ۙ:b"""""""'p]}~յb"""""""""""""""""""EMNg V]CtʌUǑy|2^N ڮg (ցߗIpF11,¹|{`X?^]yjpg&⦋m +B<Aב2<RԨBuO9OU}HvRub>c7=gpl*}C'M9Mx F 2P2]s2W4cB;u~rpz8y]fX16 |'Y^UxWUʭZrs{$k@sgZS>ʥ1nsد-MEe ٔfՇh~Uֵvּg/4rё+F^r +wuP1kJ'/1ӣ :A5ܧ=ە7p.WBK9gSgּ}Zš4l͘w䧇U"'ʂPS~_W/R_ny57je7ePleC~Mb=k1hf 쑰GU'˼ĮL1.QgV3zC.^oճx Hl_w ]CxŸWrW*[aLU0l'b@sB,/[iSWN^fë6=X}crodБnIq>?^b[]}V/lś@5xwT2lKSwKݚJW @D|v\[N>mA6 +*өj܊vPdmyoQY寞UOnf>g}Ib}8XZu +shI6q7(d Zr}_/UcK^רYV#(^u7:r"k~VC:C^#gًrc-v2ܜ~ퟄ㞕[Ī%`Q˽hO_I :,XbA Fmb7}}T:P-g;G[}#.ڛ<Xe6rLDWF98ks6ȥa:z]-UYbW,Aʶ!S 'Қ˲S&-nQjJoa{:YNJe5"RXW$  'op1S[{K4@$yMֵb"""""""""""""""""""Gqoֲ+ +)bCs>ep^Fg ޫZಆ,`7|/'ՓsYvK^)ZTo]tOS#s=n7,͡v}tuح _2OY#oL4Z-웭=C|3r3*ƱV\k + ;>G8` +RMl]NI9-Ǽsw~}co76˯=o58Y<7$\JZEsUAyvYW\ l|3 >uny}&~,7-J5x}¬w;gcgJ)k{QV;THӍl:-8ȷ1Ŵ'3!6;߲@:Ȯ3xͻx9IPQ&o`h|N538?vbbcXsUQATtȌ'@^C~fW6dzSf]RUx9@3y;ՉB +kOrG1Lډ}8mcZQy\63y e 5 ;Rصl@!oj`_F..M6^ a rgyjLcdzA1\Q^--X;/68GqGu3 +ڴ(v7 G dz ym0 +b~&f.w#\l4.+ cϻ]fUV_!DU^eߙؑ. .5t(E4I .%/ LGz)jv;7}%scc⽙5kĪ +.C/&\9>Q[/;xCN29R䝖fX|6W_ߍȶj?0c@ͮ=3ࢬ bMjJo:Iq;Q^15{,*ut iM׷#ծ:trdϻpE jb7\ +(cjxgKlc^dfVYNFAefH{tBFx~?lϺ5/-~'m4u#qKꞖکPx>-uS{pG,M~2J1t`,^]:EpxԾ7;%̅2^"""""""""""""""""""""""" ׵b"""""""""""""""""""""""""""""""""""ie|۫VWFdpuڑ}ǤbՖrx1w oߞ߈*Fp^$E: \/.5JDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@еb"""""""""""""""""""'DDDDDDQ{<'Sp6I!A'"""""""""""""xX{DDDDDDDDDDD@ѵb"""""""""""""""""""CYprk]}݂)?NW j_Y_kio2h^kS_bθ6U <Xu'v,J=e]t#sOJ#8'ղbyBGC穹iDz]ڴp_kcdyTqovaCX8D185=ke "s):b< kz;+|:ˋ1z)Uwb:;LoJ0Ǿ|Dr5nŕw]v65sc~&(JYK:q&86FYVo`oo7 g+jIa_0`~{مљm5` é~}nneCeg5iε91z롳ԑŹІVNkҼ3v-Z3䭊/AG^<++ Pl梠[ ~קsM08wW>)FmS?}F EТ6ܤ[FPw]]9NN9ސ #[X@0|57'?Z=I1QbpC |B@}qN}x֖-V51}w37 0jߕч+hf9_H8x;ü-hD03~Dvٔ^=1d*{178f! E,Uvmv>)Ʊ8%XpH [^-4YOZ96v|+$(TI:䙣>Tωs {뷗[u}oߣ2e׃SiҨ=&iնKeߗGBNo}M,H0x_ {mZ\}?Mn5NFGzܫ2 U:,f|쳶Ts3l|R|9RʛVt@ gmGNURoyIYʵ]ͷ!dqNcG]tEǖzp96#r) R7Mo? (d_gBז$MEI1MXy0M|w؛q:"̖.莟1>s5Ums0TP ;쪣eM.n!GAu3|ڧ~JV:lܟ|ޑap@K*=y\3Ҝ./q,7j-E 2LDNC >&E/j`yOrR9ƲpVҕccʆ^Gkr{["G8C?"dx |+6,޹yyw܁j/MKVJ|g,"-_#s/ʹh bf(J@Lܠpd'<}v3WbITcL#U] F eƤfqwGg]4f H}_ ⾪\R kAڂ@Q~w/Ӌi+k^rwn>B|[F Á@ kz;}uUqWۜ bucַZohg:FW̄od!~S86=#د]bAk=4 b:<ˏjm<+Tz6=L֣ g5Xʫi\t{zɉ:-F +Sy6~KOfպtֶ{o81!ړhX%dZu~T켵zF=κGi%ҵb"""""""""""""""""""EzM`[FF#`:0u[f*}%QkW#C ًyr:{wϯ/7H܃eh9F]^SNwBu;+fjvVҡP(^zHe[ +k6Z]J˾|K9*,zj0%I+O۝"]Wxko ¨ |yxkC+ +NhRAk^W m xބ\R:{bgTud⊃n{,oh `tzu9LjO+/e(CZ*tD%2=*t *t7#,Ϸ;e"`Q5?nded z 53EJ=ū{ARt1ëᙙ-_5ܖP95X:u+lju\/11iJ +޾ySQ{5To@-u6{TQp($;nEWpoِ]gy͗.e/\R]=}2!SYe]mdVl[ŽB># W1 ^ +9\\:J޻lػQq[ŌZ;l;_p풵]RV.Ğ{]z=SeESͣGIe|G3-Fe!YVBAi= 0bmTcQ@ܛ_s0 ~;i츙`9FEbыge(bëv?0 N=$ n +d F`G`ioDUۦҲͣbga̻dW?q?;K1zX5T՝Iv"كz!JhԿ) ;uQ J6Qj.ɻ1(b>הV́ۛGu8 6!Ƿ ^ Ɍ{d•SmȦN@[Z~o98aZql9]TVs>6LM_gR(:Z$:̊VVC]H'j40OsP%ʭU~rj= R?&=}Ds=dv_!3QqB$*}OrX-_af:_7-nDf-'C>yˮwe5V5inoANU9Tѝ61cZS`v'fA w֮Ɇ{GsxxA*Kkܶ :F` {Wj(]`^u>yj uLׯ Τ>DMrs )ֿH%meBCqj v65h-YskCAt39y@An|_/? sJ +*E-Uh$v!Úl1rb2乜 sT`z򁳾c؆^R<Ň"Yl +]3qkAn`b{;/2xh ujͭOsc )ŹEjlB+$iž7gՎdTQ+kmP}e֊R芪]0P~iă_Tr#Y7:SWF#}:wSz_/ U8*~MþGWIpB3bG@:qjS\"!TA֎h܎=w-]wƯZwϦܻ#_ty+Ex݉V5F~DZ)j']mT|ç^L~"+/-yЦB}wp)p8Pܥ;ʆ$ oKLrP,nW}7H18Ʒʵ,lr +y 4:ގazVu~eUV`m6+|`;շ `qs" 6V5Z5l*5/TF5]o +[(n%^k_x[]㐼V l>#,ZddwkњŰVmh@4<+t\J.s5~~]l]t;$FW(@ַ秜ncc"Y K북;:jubV}qg//ړuSvsGwAk[[cyټ;.>%dvE'sbpŪ{𙩱å@tN[ӵb""""""""""""""""""""""""""""""""kǷٔXIF*;]FfbYY@\9xayY^׳ G$MfF@m6:鹇 x}+Rf=٘I;1<#s>xmk_;$&D+ݬqfى:ȽFX&\> Ĥ8:׵u |&Do6rwte58Gr?$AZu$}DDDDDDDDDDDDDDDDDDL rI%TF{""""Եb"""""""""""""""""""|[jҥ݂$=䙩W¿yߑt{~_oq3:x'0?üDZr+e& Y,5oM=~/&BkThLOixxQ>ǛW֍ :$}2w+>*[*d OL̫6e.O;<'OzFk tYg\SKs:ϊ-irnnQ%z{@'f[Z'r> + -}+k@>}O&\qeemXu;~c68-mlԳyd/F<|OIg܌3V]A-{L,cb(< =3Z=dڞ/7?0׿s.!GR8`pA}"hW[p̌WUKvyx?AXT+*>< q*[P@0,G_Hs*!Sg3,~ cO@$Gq_J18uxxFEĞ]GmϛV1*W$'ux' *2-T-myN3)MIsZr!m7n^+aU(bz&NVR|lJ׎@Mgg-fǟ=vOi]Lj+1 :Hw|LW5r+޾}u}utؗaa\ O3ħ$^t_sAMx'xDNo5q8hٶ[]oPWFшN͊xAW[xӂH7YNs@zC5&X=h#MyIb1Ƹ]5,TPIq;n.I )#]@;wk܊ժ Tď!7ŊNuy[-Owۛ&̻pĮK) S6c\c;-ZQ^9GLYjҥP $rI+"HnSm1Ǿn֭ =nS>=#l˗q\{6@ +oqM~VY6϶ضCO+dd+_n=DYGN%?ŨZ 0ڂ6 S~"5)>Fzv&~?RX:ވؑcqesf +vX*.rzjdAøӭ}OWcsUgu>)~aˡ^s b N=}˓^-`;t=hg|tQG= +oSb#ȷ]Z)#6Hq5fƵl +tyNu1ưn8_[X7SzkSq~DKu:މ'd0px= *ŀ -ՕVed @tt4̠쉄хø,lZFW@Ud^!JUbNvh~ݰ4z0 q𭴓nFss9]T+z7b tw+PG$W +HNj^11Q92F;њ2k9M ځX菜I k(f1+̼?M;wNsev5sXʡ(,gUxlWdڃ/ԯ l >"|iNUn(snczC؄z>[M;H!ފٗgyu+|'@ȹgU 9O )ţ WRn^ͱ;R[L*hQ~K 2#>lp&/Hlfʗ%y]z{Ns' gqo oEu32T:sݴ7:_ez7|/Z:N;% +9Ӊữ0Uy y΋'c݃uj5~`W qG'u{[T}yYC֐v1Gb##g$ 'blk>f + +sXܮu$ 8Q_>M*y,Tsih'Hlv#bs\K%8lT8Ko7"Gߟ6=ޔU/ Tcg1fAql >"Azs:^J+|X՝GZaeKuv}&oJ(--Wby-dbB:龜-&k[˄7X JJIam9VZ& !=+p <^8_bjQ}^HK(lzuڎLb_)[;ӕ3+4Q^]yf.@ǷBOe:*zHzx~6dD mz]O'{aq.-֧-UJ+m~r:~!Oua8{, +`Y_]_yiFvl[h*vTh胯kC_u֙ugȫPJ=ǩ#WH:; "=ySRjNFVP>!n"e?+zks+\< ^oCGcR3 (rR~۴K38eHo9Nm[h-21]7?۬{IUT bWJ#1 `)KhC'_Q &o1m + +F@b:}fƅeTWw-~kL/cv +MRzt}>"Aq6Qͽ)#P7$Ry|'AEφhoZ޺< 죦o=5JC_zz*-j7( +7Oϋ^IMCUT b'DŽߡv#;3E7_t(Zkyrt7t +4ȥ +9m }j{1|6G}E: SOA sPܼo^&>J)@P5xj~}n5Wv96ozVPAlwǫU+!QȠhC]b +;:O\t}{7XZ>Jp`EH +A'>Cã<:E]T*5>5U44'oߩC~}UUS3(fD(w^sso~-Hw=Z>J]҈łOr0dP @}ρJ+ +h Ϡ$^w9꩏|*vw5$ҵP1iQ@ ^zye)r@#ր9F@4=cא;0>ʃ'׵b"""""""""""""""""""kqZ6JTW@u`jC&Y, ӓkDw='b 12t>bVDm~7v;GޞYrT6{~˳'V6"u)zlv }+1Acgz~qAOb"""""""""""""""""""""""""""""""""""""""""" еb"""""""""""""""""""Azr&njI Waݓd:b͍(WF +tIv^YU5jǘ+˿0}K +q^`\\YcW╅~ԖvY©3pj:z`RG(;^t<]kWn*SeYs֬,\ZjΆR:hu'ڀSB?+^U*uԇߑ1^)fW:12#(x*Bv|@5`tI!8n6Ox%J? #al'0:؛V _EQ*( -xa]i06VʪvLK}L+lդ*CZ@Po~rR[T:CA`Ϩѵb"""""""""""""""""""`ç>Mڰڝu 9e +GeRݦƭkB@ dy+Xb $Ro]tfG~ZW]պ׾@˰Hߙc`'M}Z7~ ˶- Qr9.}Şp&÷%ߩ//!PSݣS*@ 4'ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb""""""""""'C-J_SGJ[""""""""""""""""""""'nx(e u}DDDDDDDDDDDDDDDDDDDDDDշVUXuPwaյb""""""""""&LvUoJONnzww~Gm!Ƣqcq0G;=☹YE7#VX1]۴yy uK$ÕG_79kĸ/]JiNFOa,$+RTah'/S_\onf +]OGf$}t""""""""""""""""""""%avQ*v桜)*wZ 'Yu|td,Hڒ7 }ض]c] |ȼtDDDDDDDDDDDֵb"""""""""""Ep_˸*7?ELjG(EHt}>P{VvA V 5CM%^*(Q8}vc%Ks?&RH񚞉p\^Uok!aX{wԎO>̤5JLYB.VK{5^P@yfgr.vudmDDDDDDDDDDDDDDDDDDDDȥ*xHo@ZzI~WۇXjq. +)b\O \ gk.[@7>s$""""""""""" ׵b"""""""""""Ep_˸)[3G {nIa*,K33mfcy3f"""""""""""""h1')QL@&swp/$m*U +v$9qDm(>&.Uc+Gu89q*RwVj]l̠!A C}b'Cp|x\n+Z<>OMsv :茪>oNY8{Wnhm@TLy95a\ꈀ33+zZK=C,("ݾFFQzEid: 1:cz2<1;U[!vTb l.ϿPejΥ%I#u2DDDDDDDDDDDD9߱ASeU$ L8ۓBYuFeVX1S3b&>i^mJkzůG6DٟǨ>]ְ 6@'B}Mjn:86Tq'1&]y%[Lеb""""""""""ESǖ)o YZqw9+AnQ ?RVEpO˸)RFE*d\IcyF""""""""""""'q5~xg7k&2`7nYM]tܠ+|g`:n3+ ^%k%50G|>1r1ľ,iaQcr= l1PVK=ܡ'> +HmvO|)@BR8 7 y C9SSC_첤kP#70S9o^'<⊿8*.+4~_$YouI"@C]qn"^F6Cy'_:iثs M9^Ew&-Y4@1#~[[w!k)gb~[+}C.:ܼ_7+_BZc+0u<>gޏq8W+Y^[E::޷2zku*jzehwM V\s[byz*vAװvdDDDDDDDDDD cVnx]\cf}w#W&B[/U ǹ޷7GUp}fղ̼Uk;2_xwĮ5>7rX9^/ t+f8Uzug5a~oU{:: a?S%b""""FzAjӌ͠21 Ԏ~5oY]O]b.p=GYxA9ܕN%6Vy?+OIJq8fuŸ.UpÛ []ת뷜HNq)m55!z$אwm+bѵb""""""""""rEm&q3Zј"n0;cЏ)>,iRBNL>XOדDz`hOqN. є]O0eՄ+6KRNٻ9NO$_hH,d ZhJ*yfHH~`ۊ甝2?:V1އ8:dPM7ۇYǸmLMEWՐQWVֆ>餜> +mKNZM/CumQ² Rmx`0MX7pg!)% Q@7#q2)w_3nX/M Ѩ Ϩ[1*:$w[l:Jk|;n8X\ק&"kSqǽy +9B6[s[@F;ݔoΦ& :jn^dmllc #s[3xŹ܁,b\zy|,j|3ɌԎw=;N}I¨Ȼ%.bvF9| ;2!<܁=|'Ҵc*oؒNp7""""""""""$VO9y֧5/6l5ƿ 31b>Cllë+X}߆QfJ0&NU%z(n+[M`l=k,tV=CI a?S%g\3*,Flyn}DDDs`>/}"jj7)עTmuZsŪEPR;8ۍð0!w_#1\7׼X\kfR_Cp+8fmWwnY]/#9ۀߢV Y-ҵb""""""""""G3ۈ3T*'`reX" hEb}l"xU.c*@_ߔ33>"e?7~Hnh4$G'-39ub{.?;g\ax,JwTN:{$YҖ^S{$+cggeEf]5] O]k̎/q;7ZJ[YIr+ގ\J/ɸ(vV.7nk1rֺ,j+ +Ohru%Pz٬ٳ0Mo=ͨ᜗uظcKmN"xg'[AGQSj~td"""$_65/z~zrF8b5gμtNGt>Haoд"l?6gdƫ/CmN;$DDDDDDO5DDDDӵb"""""""""""Ep?x5IYzMkKԱ86d0$OQ}ܟƭ+B(UQ:2Dx< cD\|;Tٯz>:YĨ˷5}KTp@Qk;a`r/bˊo@NΤ\*"j;Xש=4#o\[_!w/z9}b+ +˲Iaюi=B:"nfSld>qg<.֫~-iL_u('$# >_ܕ[^+So.saaчAQ 8Wz?NU&0]0rN5@BtQ5x|S[:q2pƿK}K5mk*)btOAưsm~"rttGy##)]PݘUd:N6E+kOO[g$Rz 'NVWB +A}DN_Er_;VuvE*'|c|J0NJEd8_9t{jxಢNE$ ~?4$Nc+V8*x^>Q߬۱<`Z;-i1ru#VV.~fM2L9_h{ngz;Jw33%U=GO􋈩ܚp6# {Mt?jʇ-{EtOA"'F@<(xN ][.,GqZloG='zGWů%8Z-#S _H|rFtwV_#$"""""Եb"""""""""""Ep?x5I ĩ+36LJ[EAJS{GgC5 \Kkי,R>HDp[#[.Ϲ;9H{ӁXȳk}D"'r~~[p4޷GΖ4b"""W[\鐕š13hK@B{9&ߣީUkK,gW3c5)} +~Ӟ56ietxv= +[}rGrd~g zY[UVnSkDDDDDOmZUUPI$ɜ,e¬ A'򓱟ԗ#ee 6=Dv18<͈+aը^zY8 ˓~ʤt{>%Ɏ1-xAb|=I8/Iֿ. -xd:(>͋yةoȬ[˗z+0fU+Ff>7 j3O`-G"u&us[p8c zHe#nsތp|y] Nʹ~I}rͱNƯU@v,}#³ܟKӠͩGy'qrk̩.#eaFb"""" յb"""""""""""D?x5MLV 2|(Oiz(DB>"'7O>'GJ~aOΒ""""'|  y""""`ʯ/+Fv?3ķ\{Z~u19?Mp`hotYuH2gDDO #L{s%x(|G&DDNwӮfok"}+/x|[MuA6""xzNIޓO g:}:ѣad_f2ܢM[Wcm{9OM2>7m!۟vƯ +T4Ҟ Fl;S-OK\rڌ^:8G0e׃MܩZ3>AF= Ƴ1o9 +V {+ҵGYN;~ֱ8>?LdVW/e=L } :#/_i֪'= 32V#6%87bSIl@Ov$<+-Z7e_HBM7ۓ#)>g#"|ZڥX ؃Љ'c̎qڠ7b1Գ_43ֵb"""""""""""D?x5M.q&zUcݬ5"&bۍoɶS8#Ϸ7˨gߋyIdDDDDuR;@8GhORcVPB"ڪN@gi׀gZ,lo[:s2E=pMFVA{,ma+#G'²?[xL9eeLn!їM{/Q _Bp*&ƺ{upC8}mo#{p *Tlx{/5\'&}i,wnG1<*[ߞdqOW!=1m2MVWobls뮧_ 8>nMG-llK;s3f^Sk׬lV˾e}F;Z;Z_v]}kk{~wsox%>ى'@d /Aø6{\u^lZs]`4-֧l꣕\d:o|E|FG#_6Ϳ~2>0?3o9l`'#[pɻ UlGgi_/ L` \F`7S׬.Y'ќ/or?9Ȼ 2op%hͥY{v3&?>~{l̟b)%VgsU,Og/]Ol 6Sru~3NH/]4(kr+r^98|܂;+;#zN֥ +On1ìJ٫"Ob,]ol9k'Nu\te ?ǩٹp,ȸhٜV>=O }:f'_ b=Fx5'(sn"""a˯BB]?맇x]~I_v}YMԓ!>)ǯ6QIkY]|5 ԝ/OmpL1u96QuXYӜYt؞NM|IAWG/t2ɻs챚E'(l2?c '2+pZ"@Ap8YRj;^m#ˎ;=γx֮Qw㖱hd?[*]yo $k$%8꛸ZXN@'#"bɰSUf +lH|OWN+]e~ք)Fe*>S?{C4$+NuDNKӢx\.{n#BN RHwl1l== Ѵ&+VZd '~ǑMGoe +xgݸW}pϻqVv_Q>Zޣ냆ۏGf?=~ZޣjwWxwݔ~_Wxwt~??VO]'t~ZSqkUO#dC2/1rq-wgb=&vQ>_ݔ~^e/뗅GvQ{U}rp(U?w!=-9X^6>]kR ,eؓK=nEm5loDos' Sq>Y?w\\3Փq>Y?w\\3Փq>Z~xgݸW}ppϻqV #pq/})U)ul.өM c_99øɪoaXtoDDDDO'7/rq¢JYK?H8ӏhw5de9Z"7"{s-<#]^@Znk+۳xc'GZ$"sޜ3kGKr*#5^־$/Q_ɶm{۶J:`3ƢevU,$F)&̪hNgcQ9@q|;s{ϼ'j$ U +6p8.7seJKTwk{(f$=~""$)21_eswSHANZ{gHѝ DO ⇪TF˕5Ť _gm;-S"}Rt];ώ +Ŧ|eٷ^k=I2.ű112%s2nTZ4y7]o>"""'#5}"V ~Y ZGuz7zWi~ӝZnmuĬ?/uǨyΌBK#JMU*~nDDN[k)c[}g֫87v}$vwo*aIq:؈mKz28ڲG'/=ýsٽ|=4XKV~:#{[Ygš? SE@ORQx*sA:@S'R*"yg(}c7|EhUUt$kѵb""'=Dvz?G(?J?uGIQ:?:OүGIEz?IEz?Uu< k">~s_Q?H}N/v/uSq85ZX%uԯcrC +j[F~b#`ЃLҕz=W$"ޏ 2>xiȌ#Ȍ#Ȍ#+K iy 鳮NW:k&̵ߪ|A#z}Lt +9IG(V Q ^E¦Ow<5|fyt3/Q@RծlYDDD} ]2`{F>_8Bsmūj:w%Zp\0ӵUw7""r^/N/GDkc4z6V+>G:iDD-8 oڙw=Fpq!|;oYFULr])bt'sMeɣ~Tߣn~c#}R"""$-'X]Ck'-F.22R'G A,?_};R׭,K)u~q.:)[jU*yZvlLߵ:{Oc7ԩ6>ڕ&?R?j8?Q6ao:(?daꇳ ٳ_яD3}zsQwcW N`~H4)z~ +?>OG#x +?~Q+}&Ǩ_6=G}Wɳ➉o̳*s >nڒ'Sק^.-u_'Gqo:{\W?RwS)tzOݴ +~SkK+bA>)QSz?ĸ& 8P'_r|Qqo(žVtz[?oGqooGoGqNwО!/⋓Z}/6BfL8GϻbXf>%H{N0;?kz} q}{:#`PCk C:ӵb""""""""""Deu⺥YԲ=dD)jz߼y'֬]Dz#Eپ<~eIwZ2j""""""""""""""""""|]Z܌+) bzr^ޏf[2=Joއsg2!e< +FmEN*k +UG@#f蒒px +G_Ә:ɓ1<=gIqaAB:-Y; w=>q99r]QMF%~Ո%ݺ2Y؅D6Ƕϐ+qn(J5xn^@@:$='y~z< -썖6#MaןJ_I:N|>3DDH% +V#*6kݑzSW7U qxfI0nмO) @$DDpچ&ªĵtM.ߺo~/_ǮkRzx3z""Fq\ "VX_ڀXzlYF.cq+L) +WLBߵu&l+gr$j""""Եb"""""""""""s~8ꊧAGc#w%;v=)Ž7Ũx8̧c7e<ދz;g +[r[Zڲ~|?12[az7V͈]uVSgZxEןN=b""&s\qсCA'9=$8<}_]2SN+[WU$[c o_9^pLܯXyR(g:7ܟks}<"* Z'72ܞ֚)|lAmRՙ*aי_+p%lWgf;pV' Ƣߑ7ۉ3 7.bX xGjmY?eu*<ΎWUP=nfkep"""""""""""ֵb"""""""""""E~g:*FFW4w2R"""""""""""""""""""""xØzВ'k؈22q9FߜZq׵b'1c2hG@tw2OKP w>| T@F<7q^1C'C$sH@n{16MibX`HdlW Zص[͹x($LC;~f#חzO ;5) @']>b"&'ɭ,v +X#̳́%Z`6@ l.sb""""""""b"˄`ykHn1н*'lA:?{kSӡub"""""""&3z+,H]br1}tʼCd oC}7&B-e` +;q.KK*%DDDDеb%}-N*XU8bПwn? -pn{V/1bB:oZgZ@8m6=Y|=oO ,_rFftϬK~ gMu]RH` +=;{2gSìîԷ1j`Z yczkz "wU;< ~aUhm𫨦gOZ\u22N=~ G(yzVBؒOۤp1~'nxU,ZV k^K%wtÆߒzTzU$\{*{x$6{N;̸|ernk*zn@y|Xt]8w3) + ~o趇azHwUbdv3VKP*aI;hȪ!gCuZbZ93K+N5VzHTՊ,mwkce/C+T&UeJe?<ǽrjKS+X69:"b_J8s>gs'eRc$22:2;-U9JR75fuVCYW[ˮ7e%qlڵe0Ze +F@:$ww,N@$,W/Uuu8k?+0뱽r'Ҽxg Ⱦ +]9m![% LI;`W{yΑ"=ّ{ʫQSvm`?SB7z?%U7!ږ*Ƽ+^({ޠЍZ 6-{骙\G^- ڢv{,q̶FnjYS`)`=T+2Z uqOy;{5VPY[9יH*H 0f|xu/}ʈOkR貏Qr9/ןCӋq^$rhbiA\Ňus1ƛ+ +e +sz^'u jx$F2upZ`]UAK@$ tz^1̲Y7tgEtzhz23xV-YMMV%y0Ǘ͹ ф5Q5Ǿ@I$ /I*FjkKWd=k|#IJDDD@ѵb'%qz1q1( $ :^3-6V!MOd7Ki[*{P0#d2H{ǯ:|ˋ?9I/ZzW2Uk8ujYwY0׾iz@y $L*tw>2K%.R\SeLꀀA r;v}073h%ZGtmsr+ t2pJ)쥃{C/1c,$'$ +r7!a d78^48iò1-|ֵyN[  !t>sYMVR+?P }3W\#xf^8^b&Y],J 7BI>r+n/VV.>KVq{]G,E*$b 9˽ыӦ( 4ސg}OWa;uxS~.7bߔoGz7́"^323z{@oYȳW#U)yVp\0QC@_Hj8NK7G8̣n7}JkS5n9i<}{f4EYKg6=^6 ,9@6Nr\;\fï#el s˷ ͵|2*bځ,jV:jMNk[] ڊw=N@::~)5bPփj)ߔNtS+g܌nh >%WF˕5{H\} +ыY{\ +@s{?40ϽEdS긨kRz&ʻe45̣YUHtf;OEU^V;s`=oCM.r>>N53ّe\dac(g쇯]v>7Űb=}ʲ̀fГ7ab@ZwP;+˫]Gڇzk2s~=vZnʚ>3vܓz0O⍖EuSFyG ²qZ5mKXSR(މ%z)ed*pa_Vv-J+m#:)U+|2pduLZziRk]fQ0=] ,t,AJo#D yό #cNOh#0ڰ$h뷗c>xGXa`(ʦԦὊۨTQ}Ҫg}I?^i<^3cXn#ڠ(mzϾ-d\pj"pxlui{ײz[5/F-jeUl+=Au~oA[^.%YhlНwum^!Į.G7<2'@SV5nC~4xK]7RK}bgR(?(=H9)%DZn]0JĞIt7 =>2RPM`fnGrH=qg[yD sdW4k T}*wDH.x~jʮKEZ] wN&[|k,-~1ngS0Y&mx2R='=F[vIn%v#e(:{>^r75ǯ]^v!wr}tL]+4n-j+ʼ{/lb"""$G²PIBapڻQ}^dMl2ht@r1'Pz=ۚ\?T=+>%|{GrTwӴ=/¸V&fIQu tu$lyofS/֬35Ums^ 8>]Y!k@Yw̪T(D,;gdtY]VOԛ +r22u=Vz-\)qvR9j.4穰u̻`dbWm)f*$GdVO +\ (Q9 ]Q; a3oK*^%汊+Y1=^{H=|/Ug +qr=6x-yyomuX#;]q[n×癨n!.ɭùnBg!i޶r8%>m,d].[Mv鹂¬tш ]o뮺*756-v&2X[]wmzOíM$xZ[岺oU]ԴW}j}B)#,N65NĸYb%VTA#i>mNF_?o)Њӹ8}P8MK(4R`UYU]^a߾%cc05S[ƺH^=["ĦkKeTKnV _[,-^C>^8zF`lzmknVqtBop5'6υyz6zوҵb""CU12(FfoQX-Ո F]±E>:yIffcfcԓL܈5d,vq=@mllƲA,,ǾEQ +;͙pbQyuBLFj%_%zƽjj`.]3孹<O_)0-kq^@` :˩|؂*`z=0z-‡N xhaJVܣ[mֶͨF  "F}jp,X3cT5vqT`"䜥%Y,U${׮mMLǖ,)ocC"""""""""&qJI%NՃ O<:jV4'$II;&}j͢⣜!P`@[ 0Y<Ī(?j>o;bI1>dIX߭@(${O_Ot0p5,*܅I5q0F-'ƴ9TDDDDӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb"""""""""""""""""""kgg.~#7ȍay~3(@OաQ`k8\WՕ[ÙO{3~"'0ާ\NI`HRo_6'0=[ ў%DS`KR1PuЃmDDDDOpXƶ7ׯn"`ͧlzkmPvx=AQ5ᴽ""3>aԟpxg؍S:؅P~SbTĸWn܌Cv 7N"""xz@!Of+oX('KfcLtɡq:+v:>Sf&UpC`f68DDA:'&L)}|ܮ69}*3Oys%jRyAnf"kq,2bùw>mhFw:URI6L˫:(ea؂6 5s`tI1x~vA*jڔC.,zZחu}%WfOs0PFMH?H8W^ +hR}}W;V-vX[?]N@zvu8C^kߙy oc- j\s-yf'}$pkȤ...Q/8'}AS'RYդ`{c[Jy}z0Sexu-M`ϳR)-F%^tU~Cu וQ1n%uxurI0clOIqp2AFe ZTk Y_do>멟q̯fcPlw=w<r o~a{sݮ9lO+C׺sރݜ.o]^ +ʸ%ؒ[?O_icɏɶ?]K]df^=g2W؉lE)b!f9<!Uu5Bѵn>Nǩeyy|u1ź71k֐}yy9}8EUlIP +&Ǵ_DPs //Kѱ79g\t5[ZyuDWʨfCib~&^vTxNvf%3upJYe:=GbdE +kĦTrܧd^o/Mu8j #mc ~%ui5xu`vvH: uqWVеT~8[a4e 0Il<^!·.a_aR:ߘ=?kpGᶨ7P}w˳?#`8O +TVJG+y6F4oEr>W—!9U6:W(:r;[muc[>`HVUP;Khl ; MC/Dife)hhy²Fpz?`b^^i\_cY N }݄|dxdYF~ ,p,*ֱԖk}7c<<܌uWφbRîT}S|?S@npŷֻMEs'e"0uGDrIO= z{Mf ZN%OZI`\ð];̜_ò3.uɸ[BHUMlҏ.J785t=uZjsWtAtӨ>fg([+ לKi7_Q + xンMNMK8YXPr69Rn$k`̜[7-Q+ϷXJ6=:8O U4Dnmӧ8UVݍ +OtyOCt]( S~|Z67k9عeJZ ^Dz|M繵ǸEQZRWK,XN]4'zOx_cU=ENW;Nڟ\?SF1S]%@`{_#*yuozߖ!8WWR&e+uAXyϒmq.4fʗ,PYv=mhY԰ lNwחu6;B0bCd1L. 1EbV;_:ށ=Sc]IJs Ry9e +y;0]nCWJTkU @=zC*|5TP +4\wז|*1}mq]m +uR;];еb""""""""""""""""""""h_1\wNΨmP4Py5P/Z뙴LV&siȲʫY : RF#bg1kl`Y$kk*J2/2Xuz"xN)(-P3Dz? """i>+Xs=Af;M\'u4Z{2>dl o^6&X4)P1]`H $"jƯ)0.z˪hH:Ol ~=qkvViIf%Õ0WRRG"DJ`:e a#~8M1 )ވqScrfws3DM<122j+تu3&~?RFﭏ942xweH-|%WX-~ID|tfО O2+AeNٕ)2DM E + 3 l?93W/`8#"Jow4x d]D׿jP{#8 iCr=V::yzWo\Ꮑh;=Nu8=/lxwJxyÜmZ6~m/6^N^-=`+-[GOd`߯\Gepkz]-YB +]# 6xEO+9jzt._)՝_ [U*v ,-59Ru<=$O#)ppCԲ"1A +Cc2/g+1qJu~m0[# nPHﮒCe݄ }TϝUmА}A#,\"q1e#:8e:1he[m8]*јTX==xUF,Y5O *y7qIq n56]NlȬL(e#*H+̥u}+=)+fPd +[cUZ _aaht?q\84d_M{Q&~ ,|/U\+rmp`u3Sӿ3Y6s|#UAS['5 tmL ٖqUƱն\.rAlΏ1s@@pia.+ a-bnzY}ԌK\+l +B#6VךG$?ɧ0`͖RSeaU `{D+#//-ܒyy'}.v&LdZ.JnlK\TF2qj6~&7Nm xEY]Töm"҈^MZfUȯAZ݊Ұz$@l{% +#dNR|,`=O(^6H#S\{ 3 {Xܚo^Sy^ۖ>ʼ66wLea6Mg1f@#lt#dyyLrxufxlQe g)`3>ia'ۮq. ە z>!/R +nD .кnǷQΈZj\3dSh{DwzxLqr"9:eq1!,rnZ@>l/ЮyE6q)>QcSIv +Pֺ]G]tfc/#"]y>.U{<@K;f,)x:M [:l-|~޷~-/Ev]7+ߴR]OJUŦz['㞌܋;^aӔ[u#8 ᴥٹ8_k*:m}d5plePvYʨP]=hMWeYFjXr7"/+|u5zIU˱ݪv33A:o@;ϯ! gekQ67"VnV zuB(.C:ڊ¤pt+nf%]k6켮Sj[}eXYUR*R I{*oc<|zʍ! =ڑ]AkRÖvfW@S:pw Nmn,yj,Պ֡#ߺlz/ø^.>Ss[]*w%ߞM&;諃̋KAI l?@ϟC~G Xd<3Z֣Qusm@l̙"B"#1.M^U^7#7Ԃ N/RI|gm-FE؜vQHdq n'ʆRxP& %rYAnrlX;oh Q3? "07 .`wtčc+p̼+j9_Y :dlR[j"1 -{s.8(@#rPb=bayaa Mh}L rs,*d ui(nA$:w}& 2k[e!oz\Fa>]UVS`2y?ecUf5U!RyyjW@ uvߗFw'>2xK +H`Ww4p-k[zrq-ר{#[N"" ҵb"""""""""""""""""""Gq_쭵ccOxF5Wg !I%J6zw3 /y2/6 (iw;þdbsr2GC"?̩"̊Rݩ@X{;$?[n { c^ǸﯟO?l!%uwSYnVog-Liʺizy9zWJ;y{K1[C̎;Fמ>q=~ +#*w)SB|/ YY6n.PHcn ̷7$[ahbAVshiBuߙ\# ̻.\1)/"7:]#a-4{x&./ò>3굺(nB}A&NjY)"T@jճtA;: oF3l\1$mϷ6g[=_o +SSXv˽u \'/cTYVUY +E[CҾmoZmo}ucb5f&I$/Ċ@t vO̿+ V+r/8eVyM D6ߘ7 WPu:{nUS7bhnsrGMt+-aG Ulnbt'F͊.ʮN8z cpZ[;ss3X؁qծngo^d%Ӵf*{++4K Y.@^^{M|N1eeCYȥ!i65W}f20ܻS>pL&;FBBKkf'gd4:ur.uCPvw nnPn>y=i`P:od蜽<㖰\ĎB}m~z9N5W˷PUu|gs8F=&=JRřWAA=={7Ƨ˹: ]oN9(6Bg>]7q MJx~-(G;'5)ĭ|)C%U;(f`YٹT Áf[FeW{C(0K:r=uۯYV_Ȼ j2Ylty, + GN³[V3 @P@ +A}3/O~]zb|;8d^xOaezT4SR9u%<u؋]:S sּ'0V0ǿTZͮPO~{o=P)]UUz*kOH/òVEt>o>2AN\376ت2nn]7^Zj}kYVm{;׭o͌ ƱaXζM!ϲ؅TaͅU^P=ZipNhJ9Ֆknp9}vߙcp*wX-;W#zz22UFS:<#s,Xgc+>2T ),CȐ DOpڵT-񹓧NfMFqŬy0e;,zkD745n8Uj<4۰y'wmQƬ5֒%B4 KzN:?Mb߯U {|$O7;+Swidg˕eց$oD7,^>1Ms7>9ˮZn ގdd+^9Yj*?)vw6q L%tՐ;3p77(?>1 %(fر˰HF:)Fg -YɵtX3XV҅볿>f +s_e㛕E˭o[rjBm|uꙈNՃ$:撸5]gef,O4e=缏8fnnb# +H#S #.f2/U֌$=#爫XzMSΧf +Gl}[]+skxhjޘxJmt^üʶZ +[C-Vq ~P[@^c8^Įg4M˳e5T$|&""ӵb"""""""""""""""""""""""b!-wNH>Y̺iuEf tGX'PbxN,LD|z2cs؈=FgDDDDDDDDDDDDDDDDDDDԵb"""""""""""""""""""i>%_ l~ZvPI松hzEK[lj~s +'^SڸwzTX, J׿yInެ;wWiWq e]ZV9ՕЇ |DȽڼ 8$52q<~@6>oKk8R]Ean~@|}Wj7-M,R#+uYxnnKHf`ZP E'2c"KiByr)7Ut+[HOooz\xoM|dGXa+ dT< +HEPNىRd[)j,(Ch2Nյb"""""""""""""""""""FzCE8.J m7h0:[}Y5aWF쪋غk~fY )`aSoO +%kIaTr5$Z28_ "[)F9Hm}Ho/?c&E+frΥlBy )%[>cC7Uu`ڵ)p,] ^g29=C*Ƣ|sP Z;'c~-Ʊ/*UB|SW+RT7+`uT_%Pe%5A&yQB1~G6C-wB_! 6{tv.±*o- OԸ]O|d`{_V9e4Z`#';.az{ż/uhPA-^$*71L[g毣Xç69tt>m͞/]Zg ׵b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""&w\Qk1Y_J+{ҵb""""""""""""""""""""""""""""""""x{NO?q,^wڋ)61uO(M똖aIb_4n󢶏B9~"e2 ?v'Q$ExO{ryVJi~H k ߠ;əm&F;Z9Ժb SAVHͯ'!o QT0'ڐ, /SF ]Avǧa6"'˂T:::=ܼ2[ O iW>9ӵb""""""""""""""""""""""""""""y=og=Yn{Oؼ+OؒA@$o=5:[kdV*Nʒ6W,Dzex!_cџ`g!#!K3%{Y<Ԏztv0`KIyt:ߔ=پ*ɥW@; ޿Ԭڕ.F,H1+FuJ_27'Eu{u 64z{Z{;z3\H%|lzuZUYcDDDOkb[=ܙ [+ R}>"'͖-JYw$8pH QԵb"""""""""""""""""""""""""""&,Ħ˟|3hlFO9mlscK+G'8hf a𼬊1]F5!6!#̑> z,)=>N: UUBcr>$##=$EրomUKFX*Fs($z{do.'o& .Uws6{ߞ7z^wOHrɬv;=: ű-YX̖. zM興槱;qqe4WYrV/nŏ@O5Z=6-(kZFt@[_&%ז%râlט\?[*euuFmv>rx]gñƱsը >C +s|SzF0IglZԍU?+;lg5/SWaBt$vzsn"sIGx&%rΨyA:q.!U`*2^[7Vbp=T|IJMt A:c6"3=->#2CVm018|Riwv +d 3յb"""""""""""""""""""""""""""& <6 Khyp +عt]\`-i>Uc͢ CU8 L)$˾>3Zc]ik56}LgPzn`VSӐǖ8>Um>+;X;j1RA>#{$oԜڍskRܛ.޵ε_Wfƫ2 }ֿ + ñrǩkRvBPN;q"&9zy¾IHYS3YI>soGv%m8գf $|ShZj=Oi܋ݏ:p8Xь22'QqP=Vu; [b }5p4u[N(d+GNI^2}}j𿹗W}̿}w5/^lvv;aau8uqx=~+UUY_0V(!Cؑ~⭋>.P)f^fNB T1zIx-k),@ '=| p pimFhtMISd +[mlt|Sc<:Epj`;ה|6 [}\\@BwPHydvgcݑ\PPssX5tV}l$7¶#*Rikʲїczg^9CTԅMIi'eHVu">'ˋ1-3Ib7˾]뮷9-_dTUNev6+@n[CC[;_rBbU>W1o3]n}J\S_Dyn$Wy~Zӭ>9 ;O5Y%A:އnD7/]WJM}M9P}eՀ)C/عPQdR*9;ߜUCƺOhֵb""""""""""""""""""""""""""""""""cUlʥ]lprkl_޹_[`uOK +y肰@+I";IJ3kɩRU_/aNo +|YiCrΈ׵b""""""""""""""""""""""""""""""""xg?|a'Ls2kd/'@?#F}F]WԻsovי\ +ë `mrs:u4' q.u,VB똀7u?|sGN7G5 Yb ef +9tOߐ+oO YgP=~KN:c>""&x\#f^nU,u7UGPg>,iRTw$gt±]X6xHPI#2A>"""""""""""""""""""""""""""""""""""""ֵb"""""""""""""""""""%[קRv7`PCbQsXpT\NG8f%|M'LtW!]rE ywۣ>+hr >4KA:/Kp:[cUQԓa *T{l Z6f>ecq>/R}ʣdLXafdz%yY[ry}q\+|,r)]ok{xVjzJDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD׵b"""""""""""""""""""%G¸^7ˈQ_:sdH>fwz-Wy9F9 K"l[ȓ͎ ="kmMvz*zòw:p xqϨf38\7Ӭ0}lNT +HאSR;O_b jqJcby1`+=wߩp+͢*`bLXVwd[18  RQw~׉8w'-PTo꼧{ށyqGUי_2`u菈MNKc(Ky#' bpӉRR"̺E<>Z!G+lJV#ϱʷ.MjςE@n'wp~)m¹_rV\uخj:f|ggp;T/,Wm%9XC cf5$#\D|\GPu>rO`䲸e|EJRj%}g;t{> +a0=deVo(#k1n*P1sQlVfg=hΛѓWbb6Q[jOqODDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDеb"""""""""""""""""""`ͪt _?)C9|/7N!pɳq]\ͮm!R7s}T7k[ +jڟ"B~:#晾 +x~6e]>dZv1Sjy9\phSJwk[>|gh|oSl2(vs _;05p碃c?jм³u}zn&={75c1hKџCϢ9=Dk,m {OI1_)I+)uafz5@[O*/-h:{>z*UnUԚ"TmZާW>Vۙq|GfK"9%yWz|k}99mzUb+ҵ.$(z-#ȤΜyЏeg7)J0+ꥂ1F,;#;2ʞʏVBe~\7,s-T.TRHUUgg-,zZxvTUR}2!`F#`ʽzѪ}(Ks+/pW:=Bz8}\+ZUjyoJ=uj_5렔>|Ǭ_)YXj +ש-ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb"""""""""""""""""""$NG){X +)1nJfpLgʹ:$y)gnR)d^f4 Q9 lDO&,\̭mNm6̥C&o'{rPgurch֕'+1Q{BOa#6 ^N6F$3iq/ktj,7.Tz7NnM̵#;*#rxdbn5-uf\ԁ=zfXϢ<\|=DDDDDDO\z訥'@lLU`zeltFCOW ̋,}0|ӜƧq܂6d|k(gVe]D.ᱹ՗.}YH M؉7($ .Ekb(#`7 ;qx[*:X.ܪT`$;LUsheCz#`u|߱c!ڕ;c,DDcּ?Fs3}(&ZNu +T 3oRzGݹLl%6s_ (:y7"""" յb"""""""""""""""""""'/q)P hZ:RxoҳD9@l*UW0M7}rTr;4$,4t6;9L, +df#bBx=&lv ޼UT 2jVbᯈ:>UKP5vD0F Jn\"3&vFwľmyZXPy k<_;b_j2Vljl4Nӱ1|>+u|^3Nw +ʨ%HYXYjjiRO0*ދq[ آ6Ue~ZN{I=Gy[oHD}S9cW1N&/o 9ʪ{PӠn[xv1=/?H`߷?% Ü>>I-w*#~ca Sq[ަ@X pjZ1< 5c.! .#6Xs!:(s4'r_;^aS;CcxHsvB[J']gް(WR@] 1@v3xeƋ +9ECs=w3[Ndҡ]?d$^P>vb}Q͵0&Šcy~o>_^#Y,NvzޞJR`@'JK1~p/';0X |“X]NkkXw+ۗf=Ҷ_n/Df$vֻȌ#2߯>Ty6zmkƫ P)yI$١5KaCyƦ{>WCȜ/vv8Ej|B:;E&,HͪDa&a skq)vuJnz*G71(s =q8Ŕą)Zɳ͖&t4~Mj{}NxPy).O8 +$1&_$aURJZtְT AOuK^oHKrUM4Ԛ@fm wŲ5_&|ct"}6bHϛMC:T-e䨫`xnQ_mb[nqT>Վ#AAT\&e ,Zd;߰u>8xiO4l/M]VR/hZZlֺI!.98v+15Tzs1}u"㹫`#_=\m|u-L%ԾEV*ik +6OCǕmN&،*\ttWa9O0 +yW4oF'5e+G3hĝ_2H8O ³n(Bt#r9ܛ׺uV]؀ > 9nW9]tQݟee;^&GcdQũĔUPE ($F’5w2kq5p^J|k+6nTE]i=ttǤlF/1n]o]75xhǕ}zf "-=p. jɾpեWR򞀻 C$x~n-HAڐs{QG53}!ᾴg>* EfX/SӾlוe7.ju z:n3Ěe͗Z +EaW`[gmwז[Ɍ|ܞ9E+De@lݞ`7$'Շ}U6;2뜖Z݊ ֏a6*znZ*;rz|oH켏mqn `RFM<67 (sgE/ yv@f;ԊbU9966"[oiOH^FP^{mՇ/9{TXÓL϶!h{pyЅ$|-#Yw+.-r*ȴUv,J]vss:ͪ îU˽T۠׼WҴ,#̿[_ﯢF.7vuTLZ~אrevğ)q^%ZJVj Xfa9NTNǫR-kN= Ft=fϤ|j lzڞd5minUܫ:*y7(m뮷ֵb"""""""""""""""""""bK,{,WߑY9/kZXW Fk׳a? +.KEX,u^/ꔥ\y'L'#53,-X4EG ߘ|-|!7deҾD%eIü¾-7,67 jz߲g5mMZ bU*IG_%\9U'yy؞|%.rUuAX\Wk~S+Wږn`y'=;/o|Gl3 ̠6<Ѻm*r91anc>nSMe+̫ȭ]>uW8/"M] Nv=5h58~jVU*}"7"~ka%,fEHenc<;]܄0-OcͲN΄Daf0ĥ>>))@PĨn`A?$=t|<-q굯Jh `o,YLp+u%A%fbYI$;ӜN5ıq* ߵeOck^I@|akR'Z5zAp 73|_ht'~}arR|N`) 6ioli8dx肵:}~3rd5Mu,^}GnC+cs,ʱګыY 9<`g/Wz\n +n]|` myI<^n=4䔡{9rI]nLjC/M9c@b̫f)bO^_޸Iz"yH +=zGyLVXt5$Z+yLs jk{G}ޫ|;'j+/BJR=F1p⣹`\L r/e"FR`-oxj=Z{|Zԩ6T|4N+=/Tܸ6 p,Emu龧DMzmN/ıE +VsPy|4{Do{/`,ms{^7 +10q(ܼ! +sO~þdYM#G8C̩OS晴XYw[9ݧ7h&5eՋrxeŰ"s &3V-ͻ8')jm*.<^`MͲ΁?>2}jJ]%slsssFmOQ^FKQXE a:RI'.!f^KZEoX +:mvnQöI!W k7%j6 lHF)w\^S( װ|]3Q})`^5._|ğhs@:=d/'1+^:wʊI'}[/Sf-#kK u sb~Od-[ 類ތ-8VaأH*41ټCoj.}uO ^'/;6xHŲ܋ľС.*4_e\,LZ*q[UCs8$f' 8v![5 *O6̈́eϩ>,@?Ѣ>bR2F8 p[r/ Vj~P b [>lH\z|Ǎ{-4(Qds!<"tҨ(^Wҍhp%yӴE^ʸ|]^taw6l}7o t@~d tD@׵b"""""""""""""""""""""&;\zRNc7|`h"JXTz"""&Q |± 0-OH`! 9X21V|bqs21\=˥Aތݞ +A lv>b{<޵={+5~mt>:e="20'[TRO'7.o~Sn&:J0m1SGO12DDLٕ,Ȼa+Fv  t:˩.M+ z""yDDOmJUd>"hg8myr!YyۧYO:x>;Ȝ*Rt36]Hգ0V|z1 3DMlòpumD~}͎Q""""""""'BDDDDDDеb"""""""""""""""""""b{+ڥpvg]n"12PMoFI]]z$G.q5mU`Մ(-|އYﭳNRluB+'yTt:Ls"|KYat|4yft˹=&9ɑlb)<^TSܾnmp{ʯZոM'`}z:ǔlVIs/LqXĢu<+?'k̀a6n^0)%ZU;>9!BE,]@>z2ql8t/. ތ:s0P>+[R$ qkULl @U;={󛸜Vλݫ1tR J*Kht|W?g:X6׮Gp@Z'd:t漢zMo rŘ +!aYr:q8W/*Y_$ iz3fW^UT/+VxĖ'mbNIøxS\ +/vZEj`u]fy9WFkz֦ Xft 8IAs^EwC_##0*O]5Ӥᾒq+K,xMsh +HAϴ[;2J5xt%egg QkPKyy -G%v3ܪ޺1ezE~MEwQ X/`_V?3]Z-[`<䪩>IccԆ +k9GbGEz0;SR.= ;'s1(2mUCXt'`Dգ/{pu%bPg'LFxe"RsiH!&ޑ+V+dUj0= +;v҃c~4UF^ĒSD_nFHrƧk\{mRRm)kG67/.{uq➨º#ޏy56opjt *ϱ_247,ǧ̗n+}vLWk#%8SX]GSNmVFZQEL BQ]7B8J}4@#)IQrjOjU5̎P:yILkvt[Eʆ!AߐWq\Z5uXdYeS+ }=Io"< (7^ji>1bz':7y/ŽN^CMm\"1m|MM =EٰtU2 IYݮ`Dtz&{8>~n3)o  1c97oj+9!!%yO]HH +0D'Iѵb"""""""""""""""""""|$#AW豯د!.tm!ͬ;}{M8-ĎhJk 7 ;V$龚YދddP2kevpUywBoW*S*]Y+iR.ar3TIU!ztzL[_0]Y@!"T޹6Kk]䥵Qe #SoDJ-Baேm!@|ֆ_y+v7+cS eJ(/}od}V@dqN;fUƮ+7[4èo/^+b7c`%lk NƻvcM9nr-jBӾ>~ddNM֥yb dll}5 ]Ue͵R' 1RĖ$yG50zrqn, +v$3ͼ. q3lWj5WႵs > m>:xވ{`A`> 3|£4bt'^Ku' ٟe5Z3]A ֻ<~ +_vV`x0_dԖ>8_ VE4Pk*]6w +glUP@59vaל +`|yk4pleX"SeZġkATPH=O3C 9 s + #z:LRQ|A"Xe--K8O%ҧ0?'}OMݦ,džp,beS艔 zSml)u"HGA&>\01,%oB shN$ij1 PUw̌Lkk»Z. h38xN@fVVF5*,9GhnAjؘ +"'"9V=e׹ +2+*rWӗm6u7b;mpNg Z^U@QUT"l잤8qߓ[ +)'N&iWU]bܠrBTv{ wMN5䪌0#W;{_)A%u X*l (n`={{wƦ÷¾"XV[ ͢7M$p'"gCTwIo?JN2+.ƈHz_zEHsmz署y;cqw޿h2}:ϳpm +nj u^2qCcc65Ńzv<њ[6aٛ,s.jV©f6a.m{ywzueʡ{Խ|Z2X6';AG3[nǺK\aCxCs,ys/ٟU5ynL}<Uֻx +n#YS*ۏpÙIR{=Qj<)ZEmm>dMͽhtȵ@b~@-lI7!8Wtw(%HS._,Q oErE.Y],nD{ d(l7^=Qў¥v|oȪԶ!w^b^]Ix.{Pb + ֺp&^ CּuYTmQGcsxYeJr`ߞ&g^2 x` +FgMv)Dd'X{ Iҵb""""""""""""""""""""""""'@;""""""""""|khӨa DDDDDDDDDDDDDDOAbaFgTD*@>""""""""""""""" ӵb""""""""""""""""$oޏPo#:$Ga~^kp,ܤYu${:=vSv """"""""""""""""""""""""""""""""""""""""""""""""""Եb""""""""""""""""$8q< |ݲv6؏? x vԛi664ýN,]D*,esROag=8NF_1gpʒ@@ d GLDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@յb""""""""""""""""$Oxw,Q~.o\7 +]S2r{ k0! <ޕShk,(%/rOF }Օs95#r1'(wcV$yh|JvjԪӷgR\оaWp> ?DsExkYvVnD@yGE%2"?o6v\f5f^ӦǵEIFM̳^.GWXe.CܼNC_N)vOO<|yNt}=8.CتywT6C-mWnj'07=tt9@v*yI6N+`,d@%Kpw{<'W|z1k P;$쎀Lշ޼Z%klgPk9)gq>j +m.EI:OK5EZ˥5{(==ʦN L +.`5]LAmHD;l&ded=m^֪Eu&ʎnmd|]G$`SAK{i\IsYfFN$檯MK}Sk7p +v@]3k z$xUŘٷyufL4&ȩ-%ku=UBֶ\?۳6ߓE  Rf=}ǯc>' ddک5=)Ͽ S}PaolȾSm|FkZbI؟R 93/ZצwK'$:Inv,ϸX<ꬰ.9|vBRֲw;^wVKU엶K/Z׮w#]äײjs+8Tr +Y>do~skّ3!4;%`lv +NƜBD% pϚw6*SSw?+Y~Q56_omj#k*`~Om|_xihL!)Fe7zpn}\]tbu=Oi.:Ve͢,z;`;]\Khk.%* +Uk(V#ozc;8GY,C*F +'3G};r^Zk#a݇1?"r21'¿&0)нw?~U?F09Voڟ:ׯO)vG¸f58cdר3ku\ '/-GI>Pacc2x2DV"B?}U^rxrS1aS rHbpkZIaF,YK8]>&ip2qK;ܻ24wuBYQ^s-5I]ܫZנn^3ÆoȪgJyrjR#UwSd=O Z5]5 +|}[alLڶ;1|gSU"29.Ǩ KOWaAOG }cv41Xby-EE$)<&FCq su劄Vqs"h ]V؜)NnnZӓz1;,QXXEU#h~lDD@׵b""""""""""""""""$q+Ƶ^eS]^w$wc[d76hw_[4o~6W_ߏњ_+3o7Q׬iRea&&%ްy?.ٙS:0q9ס@Rۣ*s&r5 >&K\#L.~;{w>x}\6Mv}|6|&<~ _T.SdNs H]&20V8`뙹|s ^6AbIfg%bcG]\ ßm{9W򎃠Oq8&&[MAZnc~Q`:Pǩֶz͌L*phLzP%hUG`=dsz'\h49J:h uo!ӻbd.S  Wc'cc}H,] fnbϛx&-ԥ2fWV;;;;뾳> X RlI,Ğ'L3W(e:A k'Z쩓/+vI}8{3 v^g$y 8V׫3s}Gȡh*BR'8y$ ~Ju[&aa]%+be;`W~Sth)o`f?h9},IʁM#vZ5guv^f@9M:4FlN4rzj}Jc! ש1oS,;1F!xAA 2}JrF*JhQ3cbՈ PI'^d$'gn \BMN;{5ׁavT>YaI>>6 sZ\9rNveHvwu@{V$(Nt2Q!Of3kN7S80j@T{rS^T5Tʽ6B/AӷIVb*~ܟ2gV+VX+tA +Icms1w>f}pƯu5 + t$}3̎V+#5~g\j kzg:˛VzjA*tG2胣LksWfY'߸^Zx@Wd,읓3f?>z +Gb@$_ĪbXrv_.z׼⋼nV9.rw}wgͷpY,gHOC34h a:"ïR0 a5֚d[Q>lXZVk$V,Qvlw`EZӑFbzkM\kD#85qE4MɰcId<AN^JjQyzXc)EKʠh/) kl|ύ^" +P7ӿRvI'$$92 QS̛efG)GC{11xcZ^D=wsnN/9Es3ͳp'ᤚ`ͥjhLuJ+s+BBۡBYtw +I 3~*U&Hеb""""""""""""""""""""'؈e.qѬsU,2'B0pS_92E#`$R`v="xĀt6uv }Y7f[mz,F*HaЂGI#<"""""""""""" ѵb"""""""""""""""""""x(''øfFxkχ`>uK*H,~WOJޏAPMr_]M/g'JΕ#P:An/?x\jse1pvyxn_;mZʭܤa]sjl32 X][u,}"vWMoZk$l.g>U߯)}_-C]_S.q 1zlYefd3{<¥%ut䇤Z eԧ=]Kl&=dCf +r37_\+qv:{-kt<˥Uk %o}^κO.Eױfp \ɯ~ɮsHIEߗe^OPʠM,;cSJUE(6u,ͽl@:efqȱ5Xj+Nmt~m_g7>&6(Gs–D˘&CYVNQdeZRƴ>}C.*# y,֧{"oGg>_u[LrlFgT_-_|O ̋,&ҷ)_(HcqX˳ƭZ M +)P)](_|dV*۲\ߔ]IHhl m:MvOQVm J;*ǔ>}u9٫12,s|,5$e5#{|z~5n|ʰ1ק*`$;S߉pXZPn^m-uCfAsg W"I?;y0z+gg[.T3&i (=|wt\C6vMIUlQ9sqqp?cj uT;-cgU6SBm aZQKd.A=H-vvvIkJ\_9kp<ѯR7܄ӔЃӼ8E|.731R¼qQP:tX|if7kiĹ֢Yۖ^ceq;6*좯h{5P'\hytnTgW3+̖efW]5 xB܀=ǖtn_l%wo „QC&곍.Tثᵷ"s}9G}3.'f=fW8]@)/oq;ڗ5ɰ* +Mt! >}L[5)5&59-u==;Nҵb"""""""""""""""""""`L,ǰm,FF OQeZCTP6t6{ֻJ-.6GyEꤑRHߔڧQE\ +M]:>[fO>O +NHAAg#UB{ĸ]|KffGenVSA~хnBik9}Z ' [ r[RcF1==5V=@R)eBz$)$={Ͼ ?R; +QA: 'fl.WnJ +VoGȪjrrUU +4@;q2aeǴd]khBrH$@7[3G%i CZO#?|:޾Um+VܼzoGv c3)n :k=8ָR WgNGYku!Q{e~ EJ71^X\oEboGl,ķ Vzo[뭉 zf`ZV,~w@vtƯ2 hmV[} EV߲3k3l;̼|% +,y +[L\&_"1c[!T* +@S'm[EI#86_75t5Cm~vcfn8ae:gK+4aV.tggfdY5_?*ސfיyYᵜǑݴ;LO +';me"+ZJ vi>.1Խ u= Qߝ9v7nfwqZ=$HQC<*Uހ`x>鲢EO@v$Ǜi³*YR60]똁nmcחZSV:&XOb'nip8krbPo&DDDDD×N f" lנ9sK ,,29[@߇b5V#q4x3fwDQcT1(+Rg)zO7Wdu޿^kg.}B +e?)X23j""""&gĵk^훰s1q/W*~TfNT\2+[*Ci+ zC-aLg#x,#YRv$jS⩴n@v3N6"k{:ئ (,}v6""""""""""""""" յb"""""""""""""""""""xFiczcQ@UO=ǦU_? P2+V ̕&ϤdX1o7nP9&ð:ܚdrdZ'3{:Uڂ,{l!&_2Ei\`WE뭙Xu4: xd˭(=~?3quF(`:$H⟝b~\?#.akXwBoHB?kZ, +[ۑV6ٙ|cZcQH4ڼ('C;Lz쪵[_`:(]h[t$FױijB93{q׎,9uar +(ͽDHay_I3s|G/cd⠵Uz.@]jF`Rgח]f:QWl{uy^-bn~Ark}z4G7N6LU.af}2ԃáH;#I]H 0et;p<~?@#XVʨnQm{>y#x"eSbd$Wb֌G'ZYDDDDDDDDDDDDD@ֵb"""""""""""""""""""|XB) z:uz-]jUdC9tu7ޱju`+VoߘyNӛjr+WZ*7:>3'.THzGnF'=vmW \Ʒ WKmѓ(0p=u}&. p{Y]+]A< Ϛq./.bSe\¶.PL؋j` PA$ $ω±0=H(wA3degtnP27Kx"I7)Tw.k'Yт7) z@D †SV^bk9;B:Vc[gߡGm*̼KV[tS='gF5Yhk(aw4+;'0N }BSI뤃9.jf2Wmh`X퍟du&m9V*G0#\{ǩ+{ªv3t """"Gg|j~n_5|៑p96*j_g]53dq}nTͺZ7r +/pV*bހBK?3|7JiVYο1~:jt+'Žxs,ZnUH; gwM,1kTjvuvNXMn.[}@m1b>Y8f!WCut3KkGkFZԒtl|ᣈ9g*)KyFA~@~p'7,/k= |:noDAz=af%W!oBIs ﮇg{$;_3UwAvtjqa)E+٬(FwKu +W + 6H|2U:#`=al_VT(|R*_kqw[ +zI QR=o_Dҙ\_%*P+=LVk!~e"wp{hcz=n=J]h˧g C:h-R-݊JO:$l%Z?{-I{1.7*NPxrS.Ȧ3#(`6TM n^ؖSc(j9{Sɭ +ٸM-QdeRF5"1bǹufH׵b""""""""""""""""""""""|k_u'RvO==gZ4z u'd&}DDDDDDDDDDDDDDDDDOCQ))v^FM QӲ*Ǡ'dX?dՃZvǣbO] &3Em<ԲH {q0.FjH[!߹}ߐғ*a#$ pǑi[|;Gfy]u%lmv<;L9,s8XpjhUjzTubcCi vWMS,9G_g])3qN%dwԵb"""""""""""""""""""xFƌЧpȯC#MŪ֭ X,F2!^SfkUWXHݜǛ<[)׉Yį0aX1 ++k{ 6R6׻űV\ [ ͳ.O +&v>[rQ58}A_Zء Ǹ<7ֺ]35kxZ(,pC8P DapNY+By#ګT2lQÔܒ~$쟤ͩ GPz1baՂE-;lcYR3reA:s縘4`֨ +5o >^JL84'J^byF >sxn7 +5%[P~Z*J71 +A::LEhb}s01Ad'5ZmYC/N ËpIj1ꬰ)Z#t;LbTQ*Qש&X^\%V*Bt7K=$3=5p/bXel|fDDDWzc-u,@@ 10,;9\z߸ '*D6ZTw'c8E H=U#^l7>)[ !q""&O׏jWkw>6"""""""""յb""""""""""""""""""""""""""""""""""""""""""""""""s\cOΓ䅐$7تy%{?Rl:Hf?BS>"zhHxޣXȤ0~mxS߯͡N'?8˵R=g5> 7w bˮ'NDϾj^i78-t kr>V2sRu:E'i1%jG`>4VM +ƐSX8]/^@7װn ijuQv8Hc΄=κ<4pZEΉNfq/Ǫ~ـ{'U_g$1h8խey=$tV.ُwcN"""""""" ֵb"""""""""""""""""""""""""""""""""""""""""""$g/_](uR%| ٘Ux&%K 7o:f ssC\^|㕺zm_^G%?t: xU|kKR7hWss| W ,AQʠNDDH3J+ +ś 558o +gKrQ bF~͏uL{|J'`27|pNmyKR*clǾ˫ +mJ5o=vPOHL)x i%个a#,/{3/+v{kqEz%Q&$flp\ +/**%uՅ_I?:|f pU FČ<6Ɵ? BG7U+^ g+7lwgXuqdͷ;cUw*DkXI$q޴6 1E,P2DDDDDDD׵b"""""""""""""""""""""""""""""""""""""""""""'/8n?xإi0( ^F Iq @~dBn*MLFnW]ϿR7ю+ "ll$4shog_v~>$ug[G$nj:?[?+ŞY꿿>'L0b?/o{λo?E}[ԷG?1o??St1<$/x}D'u.OòQ:P[;)<&=""b&ak lG3XX |""""""""еb"""""""""""""""""""""""""""""""""""""""""""|O/}o'|T[=TCPI 0l̩Z嶫$N%Op^$R0qވɉqx> +r w,yW<8m6mw/)QZ[%$'mٸ] HOSt^JT0'vQ'{!n"`e](]`{ho}72FoGms/ߐ Bm^Gwud2F3)rWh)1!+Kһ49}/3qoFxv~nՐznuS[?ʙ-f]FE `ܙ-4̮~eXexM'^,,ϒ\<:k4g,I=I%$Û]|Fv%@}¸O iQgCA#}!{*># aS 'GoM*]iBg}@a4r8i8^յ כgCi&)l0mP[]5:ѵb"""""""""""""""""""""""""""""""""""""""""""'؈_.UNjq'ɮب`+fsno^[!8v'˵E9WR':@][=uŏ?鮮mo7sCҊ2spoƫ)bꊜ@cu;MVP0*OCMȑYd]1-J}itwu1vYHZZ]tq~2fbgT,*twɕ'F<6T)WPa_jJU'DDDDDDDDDDD@ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb"""""""""""""""""""c4f)?xnr#|"1uۧ`"""""""""""""""""""""""""""""""""""""""""""""""" ֵb"""""""""""""""""""jLq/+قt=8|O>Mvsc<6Nn]!?ƳR]dnb""""""""""""""""""""""""""""""""""""""""""""""" ׵b"""""""""""""""""""xØhZ +2P̈O~`&7&꯲k*#}|=еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb"""""""""""""""""""""""""""""""""""""""$OR*O"䦽g͘"Qh)cWCʁQhNIx8eiA GD6"""""""""""""""""" ӵb"""""""""""""""""""""""""""""""""""""""'MgvBp݀|DN7T@M!(OH:Dqnp'ZW]P)}; Hz7]遏l|yhlz|REd;n88PpYP6.Y'@7^q[8)zmb>(Gg\[* vP=SRx\nfzBnC$, +67Q|C!brkjK<2>LA=͢w[Vl ňRJ(vr:'w"0F ŀ~ aۧ>R̀ loz:7 orxثkk{FDOM]yؘ<OhZյb"""""""""""""""""""""""""""""""""""cԵWZPֽV VȮ2v=A}O'?-?5#gPZRIxl#kqL\e䰡!$uQjb&`TlFfE`b{<=ֵb""""""""""""""""""""""""""""""""""'-/?bwz\s [V8?֚+QTJ^&g %f‰XNv{C]~qEjv.=_w_9gaBVڝ4 `>ԓ\J͎VvuTfzCLqu6yk`:g?4nem vBkڵU>k7Qמt7ԓ +6Ifq$5˗=P dr3>BC7-`0B>N}^ֵ$8vUHZ[]4N:ռ=89C^vtf>Q7q.%ҕj`?pzlH.ڪ*?:WAJ;#I+]y[M~"e׵b""""""""""""""""""""""""""""""""""'BGN>:-/iGdO^ܖ(EfkHCca:'˼jjUq=$@4SO7ohBtY߯ILY֟>zuSxD\Ƞ0k^KQq^j]0p~pzk8ni ~1Rhx6;4;abi.sg2k pX0$cRstbWjP~Srxg1X6/uTCEwi'?& +>ڸnU=Jp|Jik" +HSH=zjlz9›SkX#&g;F8OھdI[UQ5?}܌e G1d VEĒNى$I8?Y{D""""y=ѵb"""""""""""""""""""""""""""""""""""""""'_2;8l_iiF*ׅA>{="-3Mb`[Mv^ML͢-N=ANk) ݅Jk]쁠ws˫> GOgr~jQrmO >v\|6#˖7,ե܅UzRd=ޕc%Tmj':=GM1Mz-vFy7cp j}>3W?+6)jg<0NZ뮭Sw/)0klހ$$"[mQ[k!+~nNV'{5=ҵb"""""""""""""""""""""""""""""""""""""""y8De(txez`~vQj6WH65]4X&6[k.q.<"ʞ3**:)oMU6A +6҄bKoK.8>> no +?I38#6OcPx=C(G,Zrڧceݴ80 ͎!uYeUTϻm}2&e؍SDGW:pw잇sz"""""""""""""""""" ӵb"""""""""""""""""""""""""""""""""""""""$\쫨D.V1ՃA#DwZԳ$;ּ>\0["""""'U(fȨH؀;︙ɫ!CT|LgP2 vN$̵ضe 6 2+kZÝUX 3,D|-l0y"""'{']wBrP9NCnZ|N؉8'Ǯ)M@c""""""""""""""" ѵb"""""""""""""""""""bʸT*3RyW\Cz܇oEslBy=Ԏok'/H3p/Ap\Scg3 +K)u${Oc~&G՗&5 x׌U:<,JjG)X{d`$@#]\jǵ[^"9nN7_P.:2FGF*G"&iF]y=낱C 1ECU))yu&ȯ F1ȶ<@é]]_:Lutfuiu%0꭭U @@b{lϾjVU=7+t ldd׈]Q@BK'tOT־O(J*dlyNJяp6&6%U=ȼ5|zdVں)6ޚclYaZGa:f~E%5Ŵ"YHU׸s|o/$bVl d!T}$j-NAǵi['xg6Ch{r7'Җ5+d\;ca9/w->Q}\"}gg. +*Q\DzyLЫZף1Ŭ٫JrO/W[Ԫ]|d2=:N{8o/BR\oJSvq>']\M5(nėk5_9è:<4޵t~*bd*]9Q0nV:m68Y` d'EG~X%W^]HEp eθBkӮRc Qql}Juu¶7P~2!oiZl(G*MO}%M +o]. P + ۚrQp 1:^IMϮ:Y]HVyNeĶAg)!!<þC'cdgһTı@}_%Ⱦ*\cC?/ʼ\4Im);Ib +{XrXՒy~R  8A'RBdUM]Ymk{+>:!TX@$yޤ;-&BTf㘙 +g,A=jO78V_0EmΜ͌FN G|U-aP>;3'\r5jddAok`bmq|^ʷRcHU3[맇~zߨĒEՀ 莇zIj/h +8^Pt`zIkMRGUmvԑ2DDDDDDDDDDDDDDDҵb"""""""""""""""""""xz6EsVXm,gÔ| y\;%E&l距Tx@{&N.m;1Q䩑h=5L'ՁْYK( [eֈ{h6>ߏNZe9 + NzO)Bq[3|nǭ~"=d]'8= @ BХ6=s4%q,^#ZjUF-zhท>vo bѺ?%A3"ā)ha]]H$2&n!]cP+|u*,WePtÕ28MXȾU 1c"DH,AkX葮b@7-~.W`zNva5żCX_|[RIDl4zپ[ʵ`|}ơq(Q#Eda[ཌྷ`e+ʒ>[V4˅ +2q6ĥnOnd9ÆaddT!I9bpcRբ6e;otĒ;PCo]E@Z A`a[C@!T]z0xёR4X+##{W^+_ E -Uh ,y^vKާk[lFH;$uLosͮN^3l7eKWcJVXs) 4|n16'L22`7{| +84MX]`Uǰ(?45XՑSV+" R9lz=uM\%l픏5!ߖ%-K kO^#^]MXyQg[[gښ_u|d1pQŤԐ~eBLVxr?Ce+ߨ=ӡVljH;#c]? g ʪ|{2#?1J:߲ &;EyX*K,fGS7/'[W`.3]dfVFNHJ\ZeJeK\I`y@r[L>;>@K_M!A koaZ}Ջg4emU8*V+1_%U5bU^?tdǦ[E#^R:uYǭ0J沷@lyFKhƮW(k+0#[3o )W{+nnzsx?-6=P +ߜ~+X!BPYA]F4gH6Ih:| +{ZjQ~A*`7 Ugэ^dg3(zI#fQ-n觗lt5"·0b2Ne6wyH?D]/Y ZJZԖfmv;אs{;+!єiu}}5qړ~W(ȊϿCksr*akܛn)Nvy:X"|t3ƶ;lo]nE9_i9w0fDDDDDDDDDDDDDDDӵb""""""""""""""""""""'#S槱<'s''S槳ɭF +mHyK/a$6H6Os^ZG Hyj'G;Qnyr@b4NӬS؈,q>h1ZU<>=s=6SI ^_hzj(]Aneߓh&e> ֘5+ɻnVr:lz`%FyԵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ׵b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""y=u=ѵb"""""""""""""""""""bLJ($*I(ľ-ZY|Fcb k;*  Gn}D}MǪUPaK̻۸oM_h,а0=;kFݘf~)` zolD u'_5Sj bW@l|D/+39AE{~Uxcߙf\g +JfqВ>} ݚF[a1㇇w){WだU -Qgdu%-K]ɒBCw yIs\|!NCV+!hIJ{RS4;| ^)FRpCkص@l@{f/>\d{k;PG7Ah7Nnl^Rwy{ 7MɐelX )-JY H}&icqzլQk@#11#=$czQTs:>o|ȯ.6N"""""""""""$'- 4ˆ[ZV,[`=!Vwq%|S]ju+Ԁ:g90xn(_itŭk:*z|w%-l ]5-h뙙ԇ^^1v-W\60=}yiUiVz}GObg(FuNy'0a4 `*7ݶu286!Ae Tw$@:85u-rX'hɫ$[:: ű1-Znt}LUej0GGz:ޏ3, ZE M* {abC"xǥjD=-O^؝\BJNɮb9lמ|u5E0.K{*w 9ЕӨI`dEl M[_,T$uw벊Q{ۿY^}+u^7̵w@ (;:=7};͋J$yd[񋳶>¶UG:s?F2KlZZsN :L޸\7eU,/1L\r-+BʍuLDD@ҵb"""""""""""""""""""h2qT6b{@wb$43!Ox]aSm^t' Dzضcc/*YMF[V; >3jQGgRuԩߓZz?vjGӿ܃'SYx^v%-+߶+U{~m.A%3ѧaEP>rSˬ5(B;|&qOZ߅boRD/߆~PyuAz˯kri⚗cZ m +@ތ먭kQ +Pht!8 l˨r@Ol|M3-]Uk|؛Mm]jDlwIzP +Ȉ9*W۠.LGA5RőH*vlDDDDDDDDDDœoe'޵9C.2o:w<;*xn^Wj1Pˤno̝9G}=R5w1oן|= \w~e"o86x y_6] gGbeEfLp"ҭ/C_:>zxQzy8{UVa/0 X'G~2G1)uV@~!G=|Ga[W/"۴Hw7=J*KKy3t5*c77(^s۟169Ų+N=`ʼ׿SSq,Ԗ:{Β@XW #^a& |ìQ㘭Q ׳֕UMޔ3OLD\EXVKF3h褖&Aʬ9'{W`Ac#$[QP19Pbǟ/BDvfl:*^"n@H 8'd|<<~_@5Yv>K+-#َj5 U+r'5M[XZ%/M(Heڝ=ROq8]B؅.^ fDD@ӵb"""""""""""""""""""' 9G0 ͯvքxc|9+PvP %o6c78 +$s;U}-K91ۙ9BC[=fu7l5k]&~䟉M%kXҀjM^nnQ~=QWd6vt5>9F9OCcq>2TIuwC>ǂ$t7^Ж(%Ԑ Z>]&I""""""""""""x&ƻ)Sqą ߓv:>xW N)Cigv,~rL{2(ɩ|j܂>c6ڔpC(y(Az}3+@"ʠ(@9T-Y:ï0a? S!qk=or ~T7pֵTP,fʯmz比7O/iXuKj~I jN=jcX@Oc<֘C5a9ܝoY~M|K9 eoRZ\ʣܜԵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb"""""""""""""""""""|ïޜz[w~/RoNCk.MN-Eqٔϸ^qWxkŲڪՎzNxv.d'V][_I dzjQkvytifۅk<5LGt'7$'A'mGc!Jg`y̳#(ɱ7W~AilTD tԱlbD{Bq{Q>S䋩,)bCJk{\K[銗`W,4@׷>k-+*\W~[$ OXʭXe^b1;oGmkg͖JYP'@~Ĩ<,! #L>#bl=:>[=|bԥ$TqCUn^nRo ly,S؏'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@׵b"""""""""""""""""""`μpRܕIөXY}]e[OOUmm6)S>54`6s +-D|#6@cL~'8]Ty(?c; 8|qM/u`k +_OI}]l,p @'r$Z_}J#t;)y՞/u^_RW3>_?Y~>~Ip>9>*_du|F2|:* y=H w^YVl▶(B@ [f#OI1ʳ)4aE+@PL|H>$ WQ񃢷5jmghehkz"Isx[Wlɹ|>P'z=&oFqx=c(5͡ 멣bWMer YXDNo o~[]|ӚF]~s xx[ ~N4TrZM."5k`s8 +d{D~+чflȺ nTho\|M뮽 ^~o¾{SM5yk/d/*׽#X*lD"kcq 'qCx\ǗON슱|GTp@7ܟt=еb"""""""""""""""""""y#>w|ݽ~OMhz춴vFe=6 3my¸nm; +ʼnGXgA-?`!}oת{4Eܬu0 u:^:L\+j*T.z>A!añ,̸hxU@vIכ0IDM\ĂEKg+myU=qONcYE*(a=sB)v4He0Դ= +թ$+m^cNvfW^ JkG#lbpL ,RFuS1pn <h]^-kUjThLS3bv_RVR<Ǹg\?Y>rf6{#_RM먌^ũPGOq; oڟ.U F& < +xzyA<>ū'@ܮeWkܨPBf{VPQj+e`/P~c̀j{ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ׵b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb"""""""""""""""""""""""""|ғ3Allwٟ#2͙~l˻feuVhϱg6~j} Lč +endstream endobj 107 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 36/Tabs/S/Type/Page>> endobj 108 0 obj <>stream +HWۊ$z ӓ/3HF xW#,VwgeF8uzazzzݯ?|ro2xQ?IúL?Or9郵vz}?Iq///Ax t|p?ꠄG%||P+l^>._"$l/Y$O(" _ Ty ?B ue?o6=a:{AƥB:P}G-{ՇcgéY>1>E,pXo(Yg1N |x__ *9^Ct:H/l %|*a.B:2|% n|ѐ}Z N$RH'וBVP.<Uk'!=47޽=E{ѷN-+{PNe ^ТB}%?ϿڂOC Ogibkδ1W Á_3jy@3@@)6Ԫ"aݠX.C ϟ9\ <ݙywVֽHx/GDwemӲfi?*@oԏ xʳ `D4g^, xh.ܛKI͛/N3b +q!Uon@wf+5SfJV +!,k?# []iJ=1;~ ϯwwy{~ ZìȘ<&0fM{k6ᆰ#zSV]^(7kt=VX7QSIpi~RҳQ*F՞E* alVrBrro<6*<zۛZqICE1p.2[LiEÉit]:J"3x~[wHi2]4 J ͏TZFY$:O'c ugkקhBK,+uzx{lNeίIJ{XٗTYV㭺@pzpNѺ ! {UEYn1I3kWcEXܞs܌ذwLX pREbua\ 1z@tyOk=2}ˠX~ n\4p޲yz_!3Z*MNq\\M^?O—^k`Kc*{$vuXNdpQ|vO2NԐbݧ</3ȍ/ʂrŸA9vP_. m#bl:Jp]l${W!M=ģl:JGqb q lQ @MGjmINQdAJ_%ꝴ6sN6t,uxڄEb}jN)3c*K/xy +J!_}a̘YRu~QtLқb^f` f=DOF=8G R/+ezS& n)[ހ{;kAs8*{$=4F1 pUeоܡ}gbn8 ꆈԲ4;d5"Of5r֣1#$,OEBg{9ٮs+!fUA=5Fon\]Zs",u\ʀfGV% MףwSiP.%A*J1IMhOebQř.m]I0#7DBX`#a`!c.wZCZ}KṊ-x5RC5q!'jh`txhsCRø1*{A¹-df<a) *v`rE9*][Dhxv0;oM)UϦ۠.xO9uB^^Kۤ폅LI9I ,iLy(C>gsN I+19v_ |2^B4 \$Z\qŒX_Q.,畅{ LJ^M㙋xO:ݪ 0%D Ԕp[Xb3Y7k[C]AM~[+$poD16cU~yw$L fe&EӈQp ̮b+iZX ++Hh6}sK;p/{5 a{#"f/(n vUIs0e;CDFCE5eDܸ.#%BESyߟ8C /5h}+3QCɊx n{H{`̃׭P fa_9V{:C4zW'rW |pPP>'Тx('%k@o"ܜemJFϡ 8m"k_rS@9hPX3"$~N BI6Et"Pxo\=wuk݆Y@ mLm27RF! |ՌOx^Ԣ7/-JDISf.!~(ŃË{ف$์*Uz_D 0)+P9ETmr~".`[|S[+EQ;<( B$ӌAVȗ5h2\H^s;SSpCqjE';4]`oET.1E.U-OK<1 j8fxe8k/ )>jmWDKr. F^›>PQt +9ͰGĐwvh^;UQ ֓Y0D` ={k{L5=ff dwrS`É5w JVfe)ph#R)O0cph +\㘆m$\wsXfqN)Go +4b F O}HdͪKP0vuL]8/iBFLfNeYȜePuňlq =ܖv)n;Zթſ TZ~yg̚D48jNqag|o`זϾ0Ei X +Lr &,kpbd;9UrY9D2V m6Dk!+HH8]qM*jOPt~kRy2OSŷ"E(#T{ P'CUc!xȽ +Q6eyYXüBҭ:}Pl#9f*qNҚ1MBOϛbiIj?FQ,tFjB\2J^kDyԏj41oEc̗'7PiyO1V- NXPᶯ4+a*ꁐl'2͡64NL֩d:8BHAy[QYx!!  {x]vk똧sKX4Mp7gOS 54$!hG>!ozWBE4 pX.?Cp ^gYLqǧr}z<+Eӟr~{Q0Ow>E%Qݥ.sCzlO>:|2< ?^ܰ ?i ΋g +endstream endobj 109 0 obj <>stream +JFIFaKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Ka +  + c!1A"Qa2q#BRST3b$4Ct %5Urs +&'()*6789:DEFGHIJVWXYZcdefghijuvwxyz?y O¸Uy#QٯƂ2DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb""""""""""""""""""""""""""""&S-KzUXGKkEGP|||{[ak!x;/'BI^*uEv.h6b (f +O}{ *[DwsuNG=˛%hFn@:֏ss{ KjP: {fm4^PFo|)Y[8p忩>}UW}ڠP65Vͧ/tkݮΪ~$aZކoϹj@m9}7 .^ȶTŕlĐvducʒ+t{%e"Q rlRQi {}ʩ]x&t>~>nPA;pD=I-ġP\8گ.F6ͭ('Skj +![-#dx4&fSckbB(e, ǟy$~`5FuZguU OZ;;U"3PLXqj{VZ )uu;+SF o_l}?Ml` Uwy~.dN˲^3mBtJw=2]K@,aO!֙{;Χʨj^Cr+`He:_kݓk_Bl.Mq8Pmf]5 r޵KZԋؠp]OʭVΡzR1Cɚ(̫ }K+wu*t?ϱu$פ@9o׾$3)k B.s3+r2ѶMLg򙑜)㾷>iȯ$$lv#Eu޲=qڃ[͢B Ob7&g9NWSxIR + rŅR=Q<|mt~7fbb:uة:;'^Wg_^Nr+k]?d8:{<*וn>Oz>BWml銺H=&4NS.v,Fd:eVR{v 3GRph!`ۏIOv,ևIK6>" Ԃ>HnS&]e}:{8z׎|JFFmm7&]Lͼ"* :A܏,|~9"/FPᔩv4Shr#p$>O:=LWU8O%fPXxI:4Hyvr?cۅ~ϲzVX:K|YsI׭Wk>#,ڈյb""""""""""""""""""""""""""""&R5/ ހ&ry]3¬ԫcq-Ҁ q?|uZsrE&Wu+XIx'Gsk*7{]MBh.[Zp:%Q~]aԖ,[-}z6Zۥ]nC@k==+$8,#Yb3w0Fz\\^L5/Ͼw$mˣ`'X;On>~$R +Zryrea.-fx));:ucXXԜ*U8Ѳ,=KW*FUTkUǶĘ4V]v^ȀZlp4߶w*&& vY"5˿}{Kg.I^vuuzlizvb;?&n|Gn+u}Lݑ8AޏޥZd]An56Bte6N"(}nď'>=8Zy8ζl-w^_#[Xb+e{/{kTɾA +'iNp3 64#:<>-[ +=!Vm\،{r7 Ƿ'S~pMJXjPbG`OЛ~(4w[ҽT%];`tj.%OujK+/ [ɞyعFCzCV7S/6r )۴阘,j'3VMJz|pp=@d樂vVS` +r$eKU]3&D35˪͋l,X/QMY-Rm*pT WUQk2+KxQy.;{1_b'H]-K1\pPαaEHq* VVU)ժP;Ŵ>*zUxq*JϟmKkǷac:屠xoRQisiM M-F2·:@c[nٟ7i$nZQk[ZJݼ={Ȭw8MC +1CenDZ_S}'6A}|yp(Hy x7~vmןJD@ֵb"""""""""""""""""""""""""""""|1p'C +:;<Z#[>"|hPH=Q#|7o_H7Cz6 +Z@@4?ziuNKXU%}uA {<#p<ObGgtqme;XR] +7/SԱ-Qm%@VNljq+J~(@h|^\7o]2<7- [}}7>|j,ޏ}O4kTPΆgTU7OHcB|-cJP%{l>ʢ$ =<@lX5A4gZ(:;;o; ZP5COx +$lHܾwrlOZ*T%:;@v8lUA$Xf5e:ފ<ӿbcZYr U9$#}.^e8np5'Cy'L:^w]lccjnbcȽ1kkl`|ɚun|tjj>*\F`?"&TŖƁg$oq66uLgdVkNC>7Ij$Yw +[+W@g;S>.UiF%XiX.ƱP4vS̬ΟvhdtLAA>!"Q-F.(  g^~3QlHa*(eJ Uf63P UtRo|-mP+ZTvwinugZnGuP{؁ޖqX2'D^U>㗱ǸYJ҈gUSfۺH#yV黠jBDt6;}J̫C7EQK5)d cM]ӎ20Vȿ,;0g{fdb^SS'+|AI$S+v%Z[Bǖ<wc1Ժֹ,r9-ubI,?]?<1lB1ׇ`Oou_V>V*Δ߄;B}"yW#/tUecH&)WR}.H^*)ꗀ׫R~=͞rr +}"Ȏ{>ަt|6 +N%`«܅d3IՃ +̴MK_&`pP tş6.%鎪֌pkb{i vA,[GƦTs0(¬jn6(_(vOyOŹӾ%m[#-ܝ.̠yҙ,N m `Ib߰Om[K/ ]~5 +=ƼW&pw^?ı fZAy;LKsn&-VrꤸQ]jZčQ(+~Gv[fJ w5{ qPHw";+J=ZY?+('g{x0)F9E,mw^^>:2N?Nlj~ou<[i~V+M]w|f^eT "] ]r#Ev']ϋ'lDZEv5uq6E{gGedb2%V 2^قSĖ?1#M&=q3Щm6|ǎIPSbз3}^6^l|EQY65iƲZ*{m6[:~/`յrZО(86|wցߴ-0rP-I49$':ޣf&^ȢdP)2~n;VXf:I&soRa/T*>Eb0;z#`xSyX*0:ޘi^z~T7}٘%+S%.GdbHԝٶךzsdUMIf@1n]?W[8-\zq6k嗱Swt$r6MTWMU8"Wn"Nxm45czGgh[eMAqmZvˮ`#Ahd 2GWAs2i)+ [q^AW[ +5>3;u:rqj_ fl,kP;MމԮ̷2xƹkqW&r8Ws5~9kJe4'ձPw>g͝O;/mUeڭEOtwOo#"kTE*څU*O]t oq:sM_QRj6,Ǿ^#;[կ˿WXaȳZv%uz'Ub2'>\mCM5,|75gI-hw )iu[pԷb!,L4t ﳱOYON شl'{Yۺµ=+~f^%X(>MX͢?[k1ےh;*'$w{u\/Z[AP5uhy3|Jݻ5,sXP 7,uU,rtĮ ju NRܽ%0 M!= +gXu,~>ҕVU0#[r{g}u%;=)]kXX. .v +xQY/:3K7dc laR{Uj6=@)#di33lîHsX.UXg ]c3|>5pAZbX2|ΦP꟥\,LgjEU2R6HUP7~ݷzexW䢣%eȹ\Wˑ{}lΫmu\Sڃp f+=Ib{~ / +HzX6j ,cݟrsLss;Yw +0?x"" յb"""""""""""""""""""$'.UNmհ,+9 [sֽ} nN[YmTTNٷ>>1@Ή?3K:.WUKDԹQfb"|{ ̶̾]V =:e<ݻ)ogB|r[1]9Uգ!Xm_CrL=/&wbc-0~Dyn:.ͦ,S.7+vt;[v ű,G!#bSuzׂ= 5y:hkN;ܒ{ϋ~FŲpZs uڿWrOY8 +DȞFG3#f$w$pm:6UMjVRb;|o~EMIZߊI'RJB1[f.˦!{ Ͼүl\t8"lC傞<0h#z֢#~WX점 I'jg?jg.R̗钥ئ=^Ve]{aA昹]SR w,_]GB~`񵑊k֯L)mAk¿ aC5W-ŊX(o.vFOKˮ}QcZ;ϟ5=>t:M/aG##gb6; >G?#&B59/1.̣zwӕnbcSJtT %}x sI+VrLbW]!]¢۹-ܟcXV[MZbr;Mr=f)[TXSK~fnë́^l=\_vV ^g⟇\lyˢPPhy;>'+fF+\*)X4ۖv$:%S]K2,Ņ&'Kv9o~ K$I:ҺNn4)VE>°#$l&MG '3%;dZhk"DO=:[krl$s'8#+V5]e܊Mnd~QY"b= 6PЂzδI=IZP"U +?tJaUj-P`k`rHcu .||w*)]$ߝY:&%waak=W*{=yokK+NJ挶v%q)ĀIU +x߾`tLsm˳ iU}o}.Ck[b-70#d,~QaVBڶT}Xbż<c\X\Uqykŝ'L|\2pMMUm} t>cwg|.VvVkv4]sle-n=* *leSAxؑȠdFS:#Fsߠ/p]BMD Qݦ^:oP׏EN<0@lr`ҏZ·?P.ζ 0:kɷ*{qw锭`߾Fu^+u-*;}R}nCazv;d.CC5-&ENQU I3L~UگMy/rQ٬k}Xy=^^ ' q**(#dkmKӖrYZ|B5zEoxplƁ̻i@96Sۑd*#_=+"s9vV88^M,r*=-0M~9}CǺ5ʂ9M0#MxG['}+/ݔoWť YV]( ;wY^Ey8lr|3g<@~bߥjB; S.mP7' \#"la_րOn^u[$V ^*Z;ꨤ⠏0tvU]f*XjT~_3ctIKV@oeiD7羦>KeZߧ]{Tb݉M~da5rE[\Zn![_S'qj+Tw.wcؒ{=8Y㍹+ZGk;>;{naUr~JBZKA{<<(mb,7ls vO>KWmi;I!x`;y'y#'&R_=Qaz(Gm٠O;O?fgepU{Yg'9QMY ]|u>c7-ʢezf!nqt4#`[z>@Բ('gj;$M"dF]#c[߈:ŤUHMBz4{; }|qq뺑V%e[FcaR9 {w7Ibt+qIgx_$u;&b" ֵb"""""""""""""""""""&KE6\ +c'BmDDDDO,fP $lll{n}DDDD])Qbc IֶOЙ"""""""""""'r +7qN׵b"""""""""""""""""""'պF&!(>~^YVgt;$H,PlS}euR=6ߎnt?1 %X-ɱkQSP;mIҍހL~^C=VQY$~|y1kkVuT%I#cΦOZ,j1Ѳ.Ri~ζvMʠr5 ݝ&#>!eb*`s YZeE֗u2b""""""""""""""""""""""""""""""""""""""""""" еb"""""""""""""""""""'5OKٸTTِpV_I:ɮ:f>(n^5Z ˩t:֩ڋƵmz u&#69+oWTt]ړlZ,8h_XHB~;AGRN1}+Fk+_.\K $w33?ה6>=VSX9)ʤ0 }dy)?w!bH::7wJ7eeلQ2:j,.7}q$&}D}0Cr>>GcZﹷѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""""|O0_3؈ӵb"""""""""""""""""""'3r$^ziRގIoEʴfCJYq'fwYW1^LB^;=fzJHR ::>-LoCV9/Ա﹭[X*ʅv؉ֱqam.A +~8KYH_`UtGDc['d*I'd` %5s +ib{T}@`'UV[J:sQ~$l/jKz8i~uLzh;:#~>Y"[n5vEU A >}咱x7`w^ #s DDDDDDDDDDM\tkXDIh o_\YZM֨U$+hl'5:]O '%l6%w`>]kd)Df]50GuV Hvd/DV4[IxS`5^Ce֪L@Rt?<0'^ߟQ0Y9@]K' +T_;(N>_rO=Ɏ=[ ʝŢWP[-ax=#+.k{1:9(M#BD :M+7f-J9% n oﹲ:]n8v@t +c` >x5Vєe;RĽ:̷sZ_c [2Q[(,yw}3J*WU 66A.XM6|ASk{8ǎ~;׼ʫ6WFVS#""""Եb"""""""""""""""""""'*3~E Qr3RW^NOFO&"bMD۸aG[MV*TGޏ'1Vj]Mnm~GEU~2NbJ+RkK,3tbyzM7?j~G2ٚm|OGo-ZUl`󱊍:e 0t;+/Wc-8 i#=k}Bnĭl}O*C_":b66;93cmU&zUGJ5šwFLe|9m; Cbk{O`b}DDDDDDDDDDLwX),@=~㿑E +chc?Vz@;|:~װ%)~]+{y¦8Ϊ+Pc׭L+TQ_J⊏Z镓 [}F ?wČ+OЧuB$:F 黠C#.M8H$.^Y:}Γ&ӖEJvt;| dw}>ﴓi6o}b\*Reu,L1U&YkjJEG~ΫU(@zCL;ooy_Ro8VރV݉#lDDD@յb""""""""""""""""""""""i4ڵoc:gē=}nDDLw0G 671``OjN$|1,~$6b""""""&wOCowDyFS5g]Yh>f wǓUZcvv'B&>M+*BKv&wEN6TP2%p@7)P$ؖ?I3$M^hhzB VW#}OBġՑ4˅̍8HO+VGLXXTSZ(UQwٙ"""""""""&:3T%1ctL6/F=U%+T:m@1B3PĒM5II#kKUYE#R^4״ٚOѰ챭4WͿ .U +S'f#^&5x(PV7HulUXzUgg3U*DpG`Ń'YGLtQ?A#nЩ+ܛgu2[]PK(%O)""""$/_zuSM=T֚yO>;} :Z +B΋oϓֵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ׵b"""""""""""""""""""$Sэe7!)S镬 l;h7z?؏O hkdsG}};.MTlp; ?,&צtCcb oxƵ RFv:eЪq[N[hkeN6l6|I-Mo(_Դ(*^m + a&p9iZ6y>Cu +so?p>L{j멪',Q vI91ed ZB#1Δn1rUUXL720Q, +%\m5 mo`_]i5FM8(߬gomڙ_?:P]AcM 5oa򪮳k:e}wz5q :L[;=p3%W[~!И:Z U 4~V+}܇p6U%܀'M[PH ly۴պt+vDF{ +Qb$ +;͜,ƫ+Հ{AlDDD×uVZͭHW}k̉s/ΪVzנ@!#?MVu@ݕ87~=KٕAŶ+bnmlyfIH\ޱ11M(+Ⱥ̳5kɓQ5[ENjG`NĈ]C7*+{id%fڷaAȀU;{Ӡеb"""""""""""""""""""'? +O|E:JW<}'P 79?3e6^9,pʨo]C묡-F0,lyy/u[ϲ}GF#ee=*I_h;r<'ӆ +F8+QWvt>*bbe_Xl`cO) p_Tߊ1RG0HTȶ,*C.ײ ^JۦEaيoDSnQJ6:!A:a=ns=`}q1فnGIOe;>7aebS[v>)ﶭeRXɓ38ax݃w׼ oUp@q E-EVdbT\,Qy;k@q;oω'e/àߥt,׫v_g7N*%t$])͎$7tޙkBcQTRաxF+v דzs-o=*.iP8r~k` 3LA ٔlwu 4F=.TrIAd y&ozfBF'Ƿ$qN6B|>O:}\pSԾEɈQ:gܓgѵb"""""""""""""""""""$OP_KE5p6Z84 +)3/'*ffA,>L8 =*[.u^:|M~v]U*pQc}~it:&TԆjA 3ŚfɬbOwGsۿa0[7W- + i&;&a 7N;Tdky/7Z,N@ ζ|^NZpw:,&vѧlbJRVP =I-k]`*xxA~BBMG.O-r;o՝ ƴ]Q8@>HH>.7:ްjj4xhvlbWX$XOrI;3L|=6r-YZZfPF l3z\Zkɋ@vwP}˕̲-^MKCmk}oو+ + }Ib`{Ϛzn6=]*d ̞W } u qAZSZ`Ej0;5ͩ&5V{$oة}=+1ߏUzξ`{LP+UUF +}_Bາnh.5iZ~ +* 0 &NR;:^}<;=rw;caOz& zύS>k]}nߡүe~ ̏-cNZ:.5!_\T[]ظt' +kZdE +>Ni`ʼF@{v9 eh̄,AO>q:~>?Brn*gu3V v>"""kg`zgmmH:EgWګk]d[7L붆W[i[+f$ v3/Rs&E*##*R]~)%MC#[XXec|#XVTUFjN2_(=jb8$;&DD} YXhGЃZ&^- +vj@6&Lޙx}P?vOT*x/Ǐ#|kuTD({OWl6[Kkl#1aA3mVIN5yuVdaV~) t+RV*3&BU`avЍ̑ҵb""x؈ӵb""r? :YPlQSh 9O3^~Y Ŕt1ޛ]+pb;mlws7s2-skE? >ݎηCa$1N 鹈4Tm+g_t79/g݇XAzf +_NMGƫɲ ]ĵeאd]ctR+fdge݈kŶ-6t5̕ׯ}<Ц5fx'&TUt[ +gmw:ωҺPͶ[Vޢ3xI׸'""jķkd]tNou,6SUJ+q!N('9s30⚽fRǏ}f6|LxyiMw,Eu' iY9jhxI;|#;יnhƨ %|c\D~_IPfqrͩ.,Eu?P`'[sP\ +`8=Z"|[jҥ($dό<ͦ,Epicc3L9yUxh3GNgF6WV%v7I "Et.oS9kmjX*nkIX]c?/ܞhHPtX]ly,q`̮*+VŕƁޏu~#Q~( +r XorF'ż:ގ~w}U +eYXRŀ5՝~$HmƶSmj +`8=%fkmn*gC󓩚kgۉXzk4UHf(侀 Z[EUYhg1UE':{vדsoʩښ,A +6`]ͼkMIh?00]]K|GM f?S(/;uCDD@Եb"&;R[#ξ7~Ic +%z~@[M]vX + pA^#X2Կo`=a8|__ӯ:Q)#d:$Nw=uʫr;f'j8]f:ZmAK`YCw#sf')*ZDP +@`8]+aѳx) b=A ~ WunvnO],삶`ηzN_~#Km(4̉Cw>$P.S f!evڭf#|@164ӾڍF5(+ıw~>qtSѻ,L9hjhٕEdɻ%L[if(CeUCT˲dBWCBH]|:ΗM˾uh +X嗐'A` 3z6jqq݀ک#|H=@u %8[SڎTm0~ ^oЬ[]]^J˷w~}Mcޒ_m^[xXk6@#?|S5ӆ ]sߌvNVFE>EXqQZxyt3:Bc,$[]yvߒWϾ'z˱-p*j}7K +ͽGr~ngLzU=g,Ry2^3c}- +BW'{ :Pɻ"j[8S'acGýl~ggܫʊ(I2uX09D̟W3cKh,B߷!8Yu˷/Oλw3g)J[Mv 1 w#Ԟ9oeν,o5݈ntNλnHt[+;'p_*q?4zVUa+1XZhho/MQ[./$w,Ҫ2 k[/odY֛Bࠕ+T־&߇R>7̨jrw!Ijv]vvek=jNfN w$Uxd6b_ Y$~`8ܓC|;݅6O(At7hK^:M۵4tml]!zܔ.[]3Cض2i.YEj CzoS{/2MTŹl_є_6>?[гwؑ0#ǑMouzoOlrrL kR + ʼn +y.>Cο^n@+&H5>OmwᵍBJ52i]ONW&;qFevkZ.ǿ`w 68hg8"׭68+yN,P +?3gIAɩ,j+P=oC1,HHbw߰GNɷR- ~BU*[׏FfÕud㒘]fOQ%N~۳;#u;kj^ţքTy\f^\8MM˫cužAۇ#;1=ugS{71+ #}̵Jꘗ5\RYɃ2F]?3/-'챱ZoCz 'G\kcYe"@ƠvE#l8'~:ƺ́o;AS%zsU]XD Ł;o_t˷3[, sw%6;S~=]t[,G@ǃC0#}O+_*lTHc۾m}>)?5Lj;8v:f>'9CdcaXc9gUQk;VŴ5WRG?W#b{o`>nnVv>}jzz`4J]hl&Õz=S$Zqs}HecNU_ָ# wן2zQk|ԓe@ *tAJ]a閜LKjfF{H<{L,,&F]~E*?n䏼ώ.,eR{wiܜofѣb c 4YD~ bq-Yj7)农7.@vמړu:OMʨmGv$}!9tQujی,-c,QRJ*;hk#ikFeկŶm2D;{I??PdB6~M)[_UqW6k#j#~'TGzfc[խJ9 D ﶷHguzlk_v9#u0rn̋\ٍpZHf%OR$ ܞ{[WM ~)K=i߃zn@Qmn5j#ځs /"P(.a>?J+P3 +o5`cd4~̿[^zĕLJ֪F٘v$f>Ө6>B y2< i蘔b% +5gOn?1'_A47d[{Bk-=xKmG>6ȫ&[N66X +pjlva$m־hO>{l+!j]vؗE 1;ufXHT-MNd&VB~*aHjS\S˿xkHt;Su6Nqgb }5!ר٭}/ xkMǷJsn[?Ͼ_y|/_tp9[c']KRPm4_pўkXiy7.&j~§n/g7wg~1bwhCS6?J6mc^Qo^}O/bG`lA$"'J7 Sq-B4;>cN3̩#ؖsXh|.*^J؀H2o؁g +GYrIp6Of$?k6RNaն +1}yc3zf5XI>IX2mYvWkr[+ Պ Ct;1p,x7gW qV$l7@ ?jkҾ~EbBOo (b/a[Kow~3J|ӱ[ZPZS.'H©Eذ63%'cibaR* B;Z8@s'J=7Gv(P;sī:YH B(l{;f~Vhq}1j7];w{oBƺ,#-=λoλMkPP4}?LD 2!m|?MWT}W,,I$쁢G>WDZC +XXXh;4v; r1i-s.M8<[=6@BrNUnLw` ]}Kes,[؊ʶ#pv<}~ϋ+h ܒOrII5zM962Y:أ'|I@={O8va'rq%{obV+ n}ٶL0ݵ`35eٗy:WC%IԄXutuR}2ԀI oF߇0&(e2ȃ;;=ϙʮg=uZU%JɷA;b\;mmOjX 9PEk͈`'j@$ژoO8<)<{=kz%m aVΎz AFΏ3˺=PMR.;t ~g=_vE\Tٷf T:C.oM={Qc[e,85]1DƲhK Y'5k];ɠol۱ͰC'}J3q~MGGwFȶ1z?6:މaؓzF[kRYc2ٲ3q@UOsߚ)k]eƞ ]PG˳mV #inUVZΊ  l{jy_ehQ(@$)q:]KUqƻb`P6y ӡ>}ѿJm#DsA;>|e;CcX,bƴŔHװOo_Nc5)@>A]Ϳ3qz=įbIdp#ȓߏY[2Ll]vo=(P+:ߝ C][X^ g nF""ֵb""DtLxg ﺁ]+%t򷾵>KLIR?!zWPڳ*I [0ڒ<#X#g[+jWk$;o$b&zȩb6%Ъ;Sژ~_sz癢D.+=4=->~ ޗvܬ|>;YMEnU$ װ,@Q:9U9;G[v&:nLW+A`2DDM|uF뎔$!U@$É&SUe.PtYJ#}loț#p v1?ua~V?QEmA5ps8,OJBy.c6AvֹPXWԤLU~E܃͋ךۮ[izJ?5F`H#Z&H̦2E``oEOp~f3qfIuu$I(O$v׵b""DoRs5'@dDDDDDDDDDDDDDDDDNo 2V=$WMU3umb +) ߉Qt2n#eʯ5:}?Ҷſ mk|'E9>M^Գ3*r>j\x<+q +x9,MS΋{{ȿhjɵݖd+`8m紏yX}/W{X+&;b(5LԾ C*e.b- kYD&6qK~kkU${{ΆAJNGo'oG\9ޓԬ˴aƍs8[:Pc@;~K +h }]O^|L1JHF!A?pZ==EbaeemW  As3zvex* >ח|CwL`/iBlxvnó|.;^N@E]۶Nӛȷ.f.!!*ƥGuwLm]2qr[-u^ +NgR7u[q |oUWYUG /.GgX>~ @ qӭ75&F)1fF`Ի*A=ngb}y v9Eޟ27b*BXhqG0`9Nv*{և\k7@'Saa5-{,n;xcFr9?yֆ_nF=C\Z)VaYNm7A^=CaJRUR'o'}Mӟ-a/zZVS@,=׿ Nbsv!Fş @0@=:?jOG'xv~TZ 6::ed`M|Nb^2rZR++[K;w~}GkwGGL8vY>;s"W7fYNא4tL)YUB>Oy:\3}uVi.l4=Fue=shλ--e[G}UYvFlk`d%_ YCjfY8ʮơ߇n>Az?T(:^OUaթ'ܨ&x1($tR{zV0:Uf:`6I~zmc&=PSg˔,Bus*~+ +Z,Nޏ$ֵ_P{wGGL4t}g§&).즒)hiF>>eq%=J+0TnA{}jMWXQ}4J>K>8pޛ":~zֆ- 'iYBR/w:[Qi +q(M.i9yך0jTg$i߆1-L`3Nv;f7֭H-į>`FikC`# ^ٔR.)#C_Y9! ۛr9| IJBx:;0'¦ON.ZlnjjF|{IԨ Hdz9m"_N&r?~I["TrwEڵScY %t܊+}npZ| nc֊+a]ko[ˍivTT-g~rNח;f_B|\:=lIY Ϗ2v״ɝэ ox-X?q8k$fIɭ lGg1~(}3v]\YŵZf̥TwޤUJdܝ{qѵb""EtR'mLҵb""EtR'mL,H;s""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""EtR'mL:?Aշlk{c +N;tN'1g0+Q4H?xc|9֓a&J-lOt{:{RR"""""""""""""""""""""""""""""""""""""""""""""""""""""""""Եb""EtR'mLDk7]E +~f??D~oSavs]+x{&tEA zz^Hmv7󯈈=٫IV˛}[D߱#4:kNK?dU}?0w߉3i뢖[ZU*CmhC/?j.׀(RǎK\lކD )mvH{wQNUxYX46K1=w~ZەM/*7hG%"&S\kU+f +Ī#z$>zNo>W>5{5 ۛ]y-loDoDi&E*ZH<[J^;؉گTp4{s='ۛj*kkPU `: hJ@vVlnU gp6| -R +W%}M)jQȼ[W y|TrZ&6}= 8XYJZFD׿6.+yK> ws+n``˷y/CNhldq`-Pזn~YxەjW\;N޼ +Ȑ?u+6|Ӽ@']:x] o/1pǨV}e,l|)V*d]lvFN[|0>0`f=,jmw* rW&1nnBа#m S27@/n+5Tr6|l[hGs6u\V58Ļ wRZ}V\ջXTUyE]oEtmmLYi-lQ_TYŽBl/iF6>_?]P65>2ů*ޔG";cU y&ꩰ0饘 xu3]ͳ}VzGP(.S;t: ,I7lFdB@;#q>I䵫kX*Ί;;i=z_D]YAA7 ^ + Nvz-ϐO»VC4H:ߴxY{0 Up9[nAE]jXݡh6Jrnc}:$v +ǏiW${m>NWX~tޔЭ]m s +;>@#ұhVYLn$y[JގhlvL3 r[ٌ82hO-~5iGYT&bneIҬGy<|{E†ښQ): l뿏Tĭ\7YʑlzCXXQ{fDvG>l-7Ŭl~À\/:mo `ޘ OIJ}vZҴɱ&1;73['7'|ӓ&$k'NHbcgUkU>Fy·mA|Ijֹ9,:-+k8X6;&5jJq ׽,{9l=cgU[.Kl{Og#Վ(APw̑SUը Ӄ?"yo[;xۼzSsZӆUy)u1_<{F5etȸޙhPMh~^~T M{+:UΘ溫 paOٻ;8\Z1*voZ塭]7WG9V:Wq#^{ϼj_<5#4GpwwVwfa R;m*Xa&^&] JXv@m^?+Ɉw:+Q6v%OqGp~9wQK?3R] +X/F5r԰iwvmk6 r fqE^ޏRJ!xV~lnk~kZsݼMW FP܋Y:.=]57zsgXt5kR.,ǿ˽T=5^ny1 lNW.;ǬzEo5#]_~]O::~vsvHVNl빓ֵb""EtR'mL^m=3, Xໟ;zlyoe|/| /ZN>E8~{ƒ+9m=[ A%IYWo=NtޣOVƫ+WbS<fDDDDDDayeY{&ACe|fsb3P +qTUm>nvK8{'L.27$u%lFֶ;GL{,p9 vG@Y5~9p$:6=W]˔-,};/vG8#"hvk6XWd:{#:bY5_uIB%O[_b{N>wǾ_)6/]X( ďzCS +A*v3&Y=E>;_}훳}qמ澃QA,6 +H9;O{rFF[%ѧUEfRJqj>F6(#Ey۰ %;36δ\쟘,Jڶ32ؒȠw}K뮫 *#&/A}Gc%+AX +$mU!-s[93GϺ:>>el->r mvlsP>fRGt5Zߡ}z\rrz-95P#5mΏmc&%kUjTh0gt:Z#`iDZvwaӅAleT7:oqɰssXbn?^;~.UCʀ +vqv7v'C޺YJ썂6q_0qԞ:GߏI>TY꽖`FE譭 lg̝/cqbV9vcٷ?1=5J؞U<ܮYč~ű1Q1X5_?b;{]LtzRaUW(BU$`A޶{ަKa}EGwwv۳Qe둷[BY]cbvN<PI %O3~""""""""""""""""""" ׵b""EtR'mLuntrlr|;ѳ=>z@zCOy;c2J"alKYAzqoqA3O'!]]a9z;k[zT~A;еb""EtR'mLn3wcctMx˵QUGoNtnvI>O>nDD˳-sq ]}3n#~!u|A$#tp~iZYCV3WCÁq~Y9ѵb""EtR'mL.YI'@ܝ[ͭZ/WJv phԭuҪ6""'Z $ kg_A9/s*kjU[ۡuUZ(t;V;pgDDDDDDDDDDDDDDDDDDDDDDDM|zuF"U,wQ~IlDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDҵb""EtR'mL+**۝Q*$8O+tc쭹D{xE +U@CNocySy?|gU=k/\@[r*BYUΈi-f +ٕ^N*궰=c1&Mm]2`|Fr \*ޅ{}\Gc'~:oN""""""""""""""""""""""C|Q8Պud_]E{7ܠ'O=Ǔcgr-߰n/+lӅGc~J?Vnܪ2|7fZ-sD#Vu*o@ \w>>""""&S/VkY@qxko~#;d01rK!l%x>/A:#S +\/'ꪬc] z9e?ש z5ʲ}`3C/b?e=K*{>̋U"gPoyⱶ N U=O1ٲj{>܋n_ l}l3qgb9)}A}DDDDDDDDDDDDDDDD@ӵb""EtR'mLCQ| Z.ُR}屰+5!nq~+`+T4?q*Df\+Zsv$x]~Y?^ދtSMgZblr >iw㾵&Ջǽg-ڵ־6"A|W4%^3zl<q؉:]{9 2G$"""""""""""""""""""""rOާSC76cZz~5omO0p(roȮ Gyl| Өߴfc.D*ޢwHGct.zko]kK^DDDDDg/!GpE kՇƤ,: mr޷ oΧO9/N 1,sIɟ=fIVm=•ZOidR2+j 2%IVø?x=;'P}?v~IxFkO#iۈXȰm h0E낃{)ȵ=hqT`xVE#")RTa; ~AUoۍy$l?Rx$:}A [+GV#{e?]"""'޻b"'!O]`\60wj ξ"""""""""""""""""&Ww? }62W֭g~cZ|ofy3k7}smwAt{xߑ6';VN$O]˶ŦQniQ#g/Lj'U\P6J$J7DM0{Px|}On" +=Oq^?WOМ_Wk9rs޵^|MɎ%2!AWwg&Iׁx%Sňc_黃NM*FMibZMrmr~>iFr,ߝnyӱ55"kܝ~-u֫2#cr3=[}_ҿsUMi$h^\s/%OMǹ[ xϞ b!~DDDDDDDDDDDDDDD@յb""EtR'mLkctvnҨQW݌34 +Xػ] gDDDDӾ[2C~ܬ=ٚ^;o7""&YTKq/KaH:YoN.]eDDDDDDDDDDDDDDDDD>r2) ry3/n'J|ַ>MtORڪQPldN +;-k(cwsĒ,w7\AeS 4,*`>nΆ2Jaf2ik +|sE [Ϫsœ{s 9пZYl Ry"xi#{Pgg3؈ֵb""EtR'mL 'Ĕ|=Be7i^X.9#b+_ST{տ4""""&̮ ~ +;l&xŘvtk똈ZuzƟ'GV})},,EeaF9ϊNM}> Wb*\"~91p߉~0:irR:uVb $F r5v ~_gbߖ@rRư6QS +Gvt}h-f]N~)ak _L5$C]1)p${$Mu? SNfH@ l?ZI}v;ߑߦzu:}dR;mq$tfOot""|{~׵b""EtR'mL|F$%4i4)ɿb&k?ՕY#__kx{&tq1>-ojWDuV1Reh4A9Nߥ^!c3[Qg[5K(TҺ/_ۘ(ï3OkG艹`\Jֻ_9Pw߁w?ﳉzDD/uȅ*FbY+z-3E.+[l݊K6϶:ɫ3?Cn*l}}xm~:f'Ù˜P=o7(U\:2sn(Xy)4zZd} Qt7ϔr `:i::#Q1|=cv=ƽ|߹(˿JČ5U^w +~k?#@lx+:ݝ>oD5Ycm(#TǰXxc[>n$wd ۳=ӱ@璮^ ~{o}b""""""""""""""" ѵb""EtR'mL?dߡ%d{B׹~Ǒ+q,cg~Ix j$r 7܁Nc}DDDzʟzTlfdo7jnkEtD{D=1s䭪U~mࣰH_=gC<mK'|^@yS?gSzmSa0|[)b?szCu{LEmcYZ}QRI|O0*zݯE[{@{ $0jemczVfPAݶ5ݕV'ɓ 0ƹŌc>铧aY6XcZ*ɽ}|ۈ 6z\kTxb  w߶B=kz?]{|``өZ*I,ēğ$I?Y>lOPv:=WA|%q#_|嶽k̝~I#޶@5h7i/O _m{u2u&,3ǹe( ıvvR@̐ҵb""EtR'mLw#/"¯xo6e?Ӷfwm"&c|ZR=;1gwP;뷰Zm'!-CX KGͳw8]Wr"ڐ{*v:3dd׊`6N?V/jւ9ZW~/ Q.t!1#۸練gZlW*pf*nSfD(mhpo33Rs"%MގkM}xXjU~@$||M8WH|~pS\#} pw +r4g^^ EoVĦ{1P c9xgְm\TucsWYk"-KWgOhTmX7ۿOS RfT v>~'Yߣhm/._ iW_U"V  $7ehn.'NΫ9e2˳WR]b[OoojWG0(NK6~r >XǻS]+W :r]6qdNm8a}WUt='g 1(ނg!wh8@{wm,̖܊T?M+⾼4^R-zaV6@]o~_^ׂ -X^ =]mzO# +Giõ89%,TtX$ֵb""EtR'mLtG)sqo. @$wSsk>5xf$O$fDDDDDDDDDDDL_gN|Z- >,DDDu>kWϿt3t!a[c6nһ32nXpK6:v[_ bAΝ//9A][^^UKV<Pݘ߉ĝM:6%MC+v{¨R|:Ǚ't}S?SM%J]IhOu j-,\,+>;|u$JE'amo|b{xvd +2:M daBB5׼Y!YϿr d';++Z/o; '}Er+F^jt޽e"ΙZ׳Q%0x,^n7z)#gN8j_rO_aO'AS'=21ڡ1S@l{:_o2"V?}߼ʺeVzsʭX,_H%[Dh3uLCӺAdtH;hmE6[gGZ'v0abdd0䶢Ji%S(,N_j\8V}oAGĭn6Veel*Ul-d뼒菍Y(x35خc5:8=W*h jM0jl/Q׎ieOZU/ ڶk߾Kf Zr)R27)𵸙y=Sٺؿ¸w$_JSӬWЕŻA#jLaN_PB "U=^tYVy#2r`<,|cɤ/\職Z a| SiWd-8Lz +T+Gd њ=c?;;LU,)IV,ؖfeb}jrEJY4o +6v> +? ̽+>;3g.闢63@}؁{n,[,L*XZ9mx1;#ZCu:bh6O$ Bl2]N}&VPV!uIvRbu.=?63j7=uG M ۅ|ASY [oH.Sٷ]$kmc|>\mh(t?[D+Xٹ}V[k+] ZJ_tCqt9}8*;pvo0<~Jɹ֓'"""""""""""""""""""""""׵b""EtR'mL~ ``;Ӧ<~Ou?yCy7yqlͤЌXxzg4G`}mMZT"@Oҕoߝ?}2GqB@@oCϟ**oggC[?Y>Y$}DJֽP6wk}OkU}.Zַn}Og[:u=5 ˈ޵ws'ȭ +9t7炤V,r#x]^',Xʳ-oZ\"g;ϔ*E +7*E +7O(9iG]\F"ޏr ($uB@ <D :-A#b8.ֆkZ߼|hPH;uF x5t;-rrr ޓԩ@ !_Vz5aI&ɀ$2rmWG5|nrR5'ٿ W\+9UpS57^*eC `Gi', :q7_S/a`.5-v2UmD<v+f.Bz(Hg'AHă7x֚j@2o`9~-5('UmUpbμNggWT8OzA`En@xwKV>T3bR~<̷u,|{R,Uw`<{1rΩnՔH9̝v6˾oƺU欠i + w87[puymHw2Az rχ0^[]k>6"X瓂UUY܁帠$#S:Bk 5~O׷{q'S[Ua,T*č7~)Ki\u7V '|UT7Tc1Wn꼘{#guLz=͋ˠKw&ژ:0ڰ;}AoKrȎĵ~KkG*nD!-ZNh7V2OTtCڟeu^܃ȍ4DDDDDDDDDDDDDDDDDD"'0YE.+{XJYC v{0ffՁY҂ēPI?pY +2=u5qv䷺PXMLܔ=ǎtA4M_W7 實nlDLR ɻ1f :bUkgQŏ"v@x=|U6 c!#dRT6Nǀ?&PSC1J;%;lӵb"s\?A]Z+w$˩wJriՑVShEW '?^uՖlpU + xOi]D7'%(W f@ S:h#}7% +eL;X\!YHjBu~VW;)|rnP\ˀ6eQwXSW,gʼ%Tg̟tWJ0«UMԃ ;3^cuwfYRW]UqaT]:}ksKl֗ aFr +JoGWaa]ʮ"|Xܜl~X7kK"B 뾕{ڨcq .Vʛֹ7^jt?W3׮MaܡQSzۦNs򶊬lڮ  =`h:V6I!,.[ T]ēnbB˭UVXivG ,u\p_ 3hFW;;}oSmGU%r(Z/Bӛ'ajjg׏ҫ骏iD{5$![yY 7b@.f9v2z]*C(+ߞ>(n@@=Lv,~8_3so5jnd#޼IFӎvAMKt"֬EoO{ udvŧZ9kp\r,@ 'ϮN[݊(?*^%J8WbdqXX{|ο\:ԻT}XɌ|򬶴 +FPII0؈DOb"s32(Wѩz; VlHBt UTꪻŀ^vOa>Ak{kxVfԵb""$7_nWXPy <6 #驟tTM}͖X, +iWI2J""""yOb'DDDDDDDDDDDDDDDDDDDDOV 1Iw'ũK1I~DD"'=:Qz{WHE؊OvvF'?U`f<@ z4&k]f_:]9)FJPpգ=C k" ykEv/K2$hN?DǺm4rZR33*N>R""F|BaX8!G%WRTGr<}.VLRĂ|s>2cQk@\jA|"k~M^JZlà[V- YʹwxDDDDDDDDDDDDDDD@յb"""""""""""""""""""""""""""""""''&w'Ne7g[vu XћaW鵶rnNGvDI αF ~Dfʠqׁ룯c}U5{YĩճV*:&.Ɔ%ceϦT}MpםΨl@w?Fn_̧5yb 73Ob"hYк}f% I%OIĨ:C*p l.^.wR77d|v>;M.+YMFiT6Ȓv MDDN|+ ]c*R<ÿ?q3Χ^E 2lO׉DD#/L؋ + ۿnnnfiLnV}""""""""""""""ֵb"""""""""""""""""""""""""""""""$OS>)W?c}fmj;#opX=Qgu(@UՁt]: /s%ejԩZedcx˫V/iVJa9JYb겠49 l ͌ZH;j|zU1 +Il2OҾm2a~+*"oˊ#z_'gJg#+~霏#r?Ҿm2?Jg#+~霏#r?Ҿm2a]3+TrF@ b woҾm2kN2Z2o7x}Dzu,ڻmfCtU cr3fWH>G* RH$P6XBc[xň1#wmw~~"s +gqfى:ȽF,~IW9G_6L|3d7īcȪkQېҺ^"⼙N2U+e ٰAgr?Ҿm2IUPǬ"oJIc4;IdzTX;Ub}MQTkV]˺rjwB;o z'IL{ՕΞQ]${}gj,R#"Jg#+~霏#r?F:Ef _ef!Ga$~96 l1q,aMGTqz=e&Ta_̵I$(#[݈׵b"""""""""""""""""""""""""""""""ku = bn,U~x=;'NŘ'r,uvPQãW_~#=ȟ7+:tH:޾:vt%Yٙfb~I&mDMNԪdݾ(1'Jb@yuſAȪ avkvlk.iAEm#򵄙Ys]T mZV6 (89N+*c*ڌ]΀$Ȇ0}WW"mm}dN9(lWXxTr[GUt5<sld]-cUP׬ZE{C|Hf?@|Msf[+*ʫ66 󣿺m\RX2??4}aY/hVª@oK7ݗ ަ y;CǍk!vYj*dnaܝe^t:INS|WҋvnHEN)O"<<O>tO_HΫt(ّcuXbbXFρӮƭT3k[ w:S2œw{8qV {.j 7p0F+P#zb{#~&|L\f+Ɩ`v{?Õ%8Rz8a-b U)r*f oC[d)iϻѬ"JŌj=Az֖7DlLеb"""""""""""""""""""""""""""""""""""$_=1=kYȢ tjpIkz-zJ8[ܚ-8)=k7SϦީ~iS(gƪɫROPL&5UKZ=€g7@l<_}͐YmQeyoZIVg +47TKUYڛF*@~UэBJjv(q/r޵. E^wXֻo}7C|EJҜ.&ыSIU;OigYKGΤ/*xDW7e/Rr^)J6XWW̼y,X>щ>G=:~BPoe+g ss؉˟ODzc!o;zߩ=붪iN|?Z죶j"""&æˬ:TFv?r3#/tz Zf;{e.saD 1)>޻ξ֥'DDDDDDDDDDDDDDD@ѵb""""""""""""""""""""""""""""""""""""&+qAd$?y,DDMlש,sPߒ7: @Ư0@^dfX N6F^2Wl5(d$p 㝇D~ +_y1tԳf*R[ +~U95賳/оUOV7PԳ]eMZ޾~ :ѝ&JeVo1Jd!K2VQBcJ* ҵb""""""""""""""""'0A4 tAp۶`DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@ӵb""""""""""""""""$g+;)!:Ø+\3Vuȁ #5ެo2yd *ت+{ͿҞ_?g[^m@ + +KB; Nidgȫ̥AP ߹'J=7ffɮKh!}IB=Q"1魎-Y +{͛UN*V\2@N O&J]aK+Z xoUyu\cV-H*ąy @N& rx־#N^NJQmH 0^ٿH?>'xf"""""bM~sˎ޷YyXG%?V!T~R@sWQ]c cQ}DHP+"6ʐy pAdO yzdֶ!ڲDl̒?7ohFăC y/&Vc +eSNJbVپ*6t($A5gW֠ZknJyV =S^F! o[?_t&z[V;!{B~]fN[YCl+0#LLpDڈo\ŧ*FfXTppG!@UnGϷ  =v7"G?^į-07ʣ~$.G2|c$fHX;]% ߰v}:O]FM.#A#zӀ|Oz(:]v }xv-H A`5:P+종Ug\&lkUIh:akuÁmg)ι<}&.@ʩ-Q7L6&Y"TDsjum4ko[޵)s)K0u(cz*{Lk6z\><znkQ2Uu~C`H;oDDD@Եb""""""""""""""""$g+;)1|QU@ul>ղ_.V9!KPOCsޏ@?d?d?WדrվC) p6g]![3NXb=fuͲ&Jo{x㡮g6 VoKz譡pH'bs?}?/a]~y +3%@Qz/!]n;Jw߰fNXض]2}Nްufltj켾cڪ +PQ6DZf ;r2:VdVxs)F:kћaZl\:- +B?ʵ(c|ww8yR,?gչRoDG*} tGb?+YaPca@Puܟin_L=&ŬM/Bq#$__^Lqkgu:ڊv߂whauc\pu9bZxֻЫ!cZM}F&l>W]ojyEVV]k ěO³/6ӬS6g\541s^{G J:>7=e9/A +։t\ ܵ;>>+.#9q.`B|NgLɖ=EK)X4O`_!z>)ګ`נCή;e:VCw ؎j6sa.UoNv5B҅d $λn_t鈗sv}jckrV ZF%7*PSKo:r;h̶aP[^+6E6OmvަLΣjәe%,[!r[\@}[W1.˴V@t;inoQ=4=]=ZM+'g]+E,HI=4zFƺK֏~MNܫ6n}n^ns +.gFHjX7Y2eop5zjZmN Đ7#~SGWoڶw<v=3sUŮ j쪡Z l;;yv$w{:ܛsvg\|ZX +N-zQUä'gՉM×L|1]febUIduw=s #n7{~U~N8IPϠ<['=;'IѮ' ܁Ƶ|JKB&f tT7$RH;Pv{y{}$^ +1[<\ {/aͯa&pqRoa仟ԇJ9jQִ[R{Y-3,r:}bI\.oe_/jk|R`*Yĵtt81.jWk'`2YYt>}u߉ k+|'åCwR'&쎵gP_[!ҵ kPm=GJ*$VmVp!칕U9* |?M[Sq/oS츦}M]9,Hm{e\Λjc_XV~[~ǗqrszcZGO|PK!R@@*|w¸lM^Jm; qlf *[(* N浝s= p\>ۂ<i%,ؘi21,([ A=ESd#ؗ0C*Ь$fhjuؔ65K[֐4]ɾ1{Psj-t!!߂<܌G[:e?١C5,:^NuARAe]qVݵ*іq8lM@::յb""""""""""""""""&PNn; tNղ|CEW +EVP]n|lWfgSkKRX+fT[H,A]wxfEYUk.Ǩb]qnl44w;pl[-7 /yRGA!UIY#-ğյ>ݍmSW`8b;{3:n6 [uk?b{pe;15zNc[x[[#kΏ")ӌAjo G~v<<.ph65kӥϏ6 yӺ@s-8ֱ ;y#&~LtDUe$3 +5^F*/n*xNa؟iޘ# +u@̠+;*J00 4D?zKa XBr>v[:> +r=2Cm~)sc8]x|TTUZ?vIɂ~Iw#X R ]oit_H#YΟ6,X1>A*\N=dUx]9oYk _82G|xĐ{'۴ȝ2] +QBqc L(ܕT?$~-㾻m#ֲjR8!V-ĆS{O[/2nKOYRH+6(c0t.=M]HGP;}gKn7E]^ +`p@`HrY]TVڒt~_f ;=83wbI] xЙ~N.S^2r]Z3W}sײuŶU)@ߗsO":^+tt|{:, +o|b|kd%:WNNV5~+@=>wNərkͩrKXh"JۈrJXx-j<*x ߴ/mܜ(y.{`vnr̮,enN _ +iARG)1VܫX8tmWȸUb= }!ý"PO2j{e[V#7vbXk-VZAvFi#0pO][E0sΌmf=/HlrGDh{BkAaeWU.6Yed5ySJВx+bQZv wQ@QMٽg.ioOp kXsRFNE($Nٙ٘;&fNԨ?>~GIʪ#>G&[Rũ +i ^ ~d%{>}e+$~}.]-j2ܯ]a_sd5T5tƌE +U@ H>V*tAExM#jJ3]Ȼ Yח5'pFCg]ɛLsQZ^ Z }x|2]] v wI'^;I`*+~Ȁ PWmc؍ej0kT iD7c΄eUs˽p{kKfecXƀ\V&۱=~ٍSd[MHlQ9mO/l6Vr6T@Fўy.ʕN@]yJ1>mobUls%Y@q'Hnct֪}5NJ*/b*mvֵb""""""""""""""""&Ql{([^Wh:o}c/U@N:|]m~ H#Z=z[$ϜMH3QWT5l>&?Ej.hTSaYIŏ.C4tT@-.AҺ]-qyNZ}[i؝#hdd ++KmjO*y']Ɖu$"`6hlq.>evƾ&ʒ$uVS߸#`X/ ^̴$ ~@(UX7}Iϖn#z5wSNlJx[3PzI!{{X z#,ah:();ؑnDDDD[EV=4!I^D3v""|޽y>K kgC^x3biuJsl tYC>vMȈC>K_{qEvHU I <5Mv5nJ˭l}_QǷ"Upm;+o +c>͏tN:װ5StٔGRQ:0eded:e*Aq<7wVu7_n:86Tν][]v=n /}5blDDDDDDDDD׵b"""""""""""""""""""'<3F~~/H~V߃a< +t~jl5 ]Uuz/g˛v@)y$ωڇ+a/UMOIjtO` +*@oorVN!O#M|L>^C+-ȥYSR66{S:"ShNy8v"u$ll_I%ֳs:MXL,fci5Z6F>r3Vڋ]poOv'T`;o`e`̇_e\UZx7&u3љgQl/YXWE7CG2dr:]}I A@::$lolo/3>ȮfA/2]i;#m}[;Qb2qɺR:ָ nm^MޞrfFS]]kjc|KoMŸO"KcPsgFR.)jh;] 7?`j7}Sr21Uuж㴭V{.!@߾}JsM/f;[E8 ˹k[A&cTH+tT<'osv/Jɶ82~n@P9 HаmucbQ +Nq26iӓ;**!`nC3Kο mUwWbMYO+v ȾI˱WZɪށ{28.ogI[FF%Y6-jduA +G$xOeUԉq2-DoI~˷c׮˯ +/?Qךz5 7;}2|?, u]m#eC#V+=pø;>%xVeccVՕh?\H;Z뮝M?ZNh_*؏1u\LL Zyە]%AsrYՐM\ݴ}8\c +JmH_Y< o$>Wg||),P[D,7Ϟ?BZPuX\5(ǰֽ#qkKhUjmkv~BV1lڷJV }=liZ:dMNvY[֒W\t{ͮ~7lEN,܆2iwͭku :} gϙmN耧GZ=-k訲 ENNOA#]ѭP@nKk$Ԭ%iMVsv +?7beYFRU!ktް/?vN_/.?Qm.^ ' 3ΉscHfdQ` +భ_v>Zrd~bq$3_g4ce[R*IH 'GyY%}/WjtYJ]=w3n-mEPBUl!CEF>ᄂ{u33|KVgTOo"ouvwOBk0R` ^;Vޣ҂ņf"T0>^=ӯL]k[!YeW!g!`kc]WǾOM OeLĞ[p@P}N;HQK<;;+dՌ]x+\C*5uHk( +*H6/:+SNoucmw qlz݄U8 JV;';Ǐ2/Yj۬kYl7#u52TLo_Ѫ)N;pgM8ԟ?\O=7cy62l`\HB{^ 3W'c$>0i[yq&PpxړŔbgX,R2B/[Y[hcn2:n?b;9|2~aqlYXօ)^dU듩CG\vo3OK0iQjgD83.nMN2s1㍓JC؂2|1E$Dg9/MDϋEUR[Ŵlj+)[=&~!EֵRZւ)8BöR=A:z:zE7E!ʲ9 응ö/_#o,UzTv +tƏ3FVZ]w5؀o{IDDDDDDDDеb"""""""""""""""""""$N'E-Z=+ ?/wXvWZ_o*̄2[ozFaֹ+eW +WTzj0p]_]3y۩PF{3-˗DL V@9њmZ9b97%|7cc]])uYhk*m; v 8bȌρOŲ} \4Ŏd."MZĺ+"FCvv> ۧޝF6 +UgJIv kqȦįgm:89w2` hy3NIޭq<5ɗ'2b֗_Ub=22z>{ȱ^GN(Va$I':OgڿOS[z/0޻ YEaq`A5{0'쫰{:Y:AHW +Wrx ^Gk'Alِ95)[ @@$[;LU(%ݲoiPmo6GɦkqC֕#" vIs7@ԜG.?h x"s׃ZeYYjl +%e4~m|Τmn zmJjB, j$zEC2ȓVַ)F  4Dړs@bhSHw&ή%v*zY]Kl{0$w鏩+32UVoێaV,4A5}'Dt5 G +Ib.[{}cteNBX]wcs>vM~=8-ղKq {dyc[t|*׃ ewd-Y +iT}{N]Nj辸F,-K +ƿZf .=qD܊O#X'jG}F&G9j0Y0 Wr=ccj`oݿDj69q>VT聭mCB]ۉj*U>9wu@&2 +ۿ3S}~Ǿ[ʛs&]W;HlVm7DlYZ4κn@'kzFGI%n{.{f<n46Mi@Iފ쓿>|o-?̅eex +<fKffF6K]]MBXZЕf$6gH+3&b1UBx(E;G~~Ա22EMy+$a{ -\>]"5YA~fsifE[ųd +O n{H=̔t||̼ź"5U5W>^=>&[}OH+[qK~< %vo;YmG[V5اM)`=y#Hģ@Oñ3̢8{{['AgN85]Ş9 $0VRHG'HzgŨZJp; +Χ/;nGOCZ '&!܌KhR.v dKorV 7İ%w!Bdr콀k`8v6rCp' G| #AW^o_RQQQF΂|I?dr*cqBhͬnԯk)z֮sŹgͱtKݙmn0 %˹%'O>$z_{$n_>3`պ亻DO3CǟȨ[R0 ĉN}d\R߳0"Y[_JSGd^~O].E+L>VXJoAOyrq3,^ +e ++B cA?|>[/6l.WJ\StܼJkURV2$w?tĽ +jŧ&cSJj5xl{'EԵۍ䃈P8vѵb"""""""""""""""""""""""'oUߝ?}DDDDO5=m)zu !J"(US ?}DDDDDDDDDDDDDDDDDDDDDDDDDDҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb'Ŷ*] +O`IRpqZd>Ro :Rߏb[ )3<̛12EvWǐd}|Ð +AfG  +bGTX DNsmq,љ@WujzYo|:h,ȳ|QKw'$ zƇ6o`BZ)C-{t Σmӱuok)xm{k3>,EcY]zXhkODDDDDH>n7W9>!q[3nE+]nJ :G|/5E>$x"LDDOMiqnuXy+ ׾5{Q] ־,yhUUy_Ye'lxaX3:`c%I>(GoMe~::; {$ic:H7]#uU:pn$Xpj阔\[OMNvG43/&Iv1PP#pf~'_rnbm({q;S:VL%j5496S>DKeEGs:hl G[WLJ;_{7Rg/[7at%9@:#$<}x;=F(t yhGm./KZ:3#zh?/bV)gkYe\0dPF>'GUrC`# }ψ86ރxԾclDzO5RoLq$>V 6'3Z,jVk[cH*s߼8qc`OV ;5dSnfssW_I9 Bt8wd ljkbRUx&Ip_NOQѩVmIkc ?;L$څAױ$[6xF__~{qy=77#v>Gm3Ӻnjicj۳R۷>>-ecSqVl(o_;ccM(\jjֲZ*~ͳ5)(F"n>;#]~-j@@)͂{FeB5`l{|%G$XW=Ņ7Ve^ d^W}PI{L2%G e6݁ed]i!nsb`'Yc +Ο7o6<$ kz~C( eRbXy{w%;~*=7?QA#'%*U,~8Iz^}> j_ԦϨ =ag,|3m.B]9T| :`អ0]c`KJTT;l I_EE AYH}{HgVec`Cl{]G|H d6Y8!=4A;:#EQsy39_]հ"W~EUq"6#'CgX+ϩnӽiH?ug4t|Vw^O 傱i'_kJΠѐՇN/D/ =>>$3s?q'p1˱-[1׹)Ǽ͇zg'( b{;%{lv{|/7QFEy8u _ct̜T~WĎ:̓?jur%9NA[ֿ4?n=+":k]ǯ:Yik[VN@Pl&&2)eUUnŊ2(:>tgMORL5v eaM?$+*Lz}N +u[*kg'2Wײ:Ǵco "W;t7= Ֆ_ޜ`ҫryvrL.& >w:WXx|M+N j9m–p;ŻoȜyc;NpFNA~W: H#:,':Νh6ԻJİV%?͞*fӲj4dցs#rx }zzy%8ض@|ÿr5jߋߧag~ӱU`ylJ4{? +v"[gTM歔6ùۿar+p_OY,~ThwC/*\6SGU{3V%dƪ}TC`{xg_:~=8mKzmvv_6O,Q)r=Aa:ǿsχ mi|3MuebYlX:NDDDDDDDDDDDDDDDֵb&;Ldk,`bt$:7\f70Ʀ+w[HƳCD~'>ߦɬ(yC"נdK!YL'`w؝.gI£;̼[Xc2$֋ v/YK~V +B1=q߼4|pTZX FRX\㲼}nZ ۶W-o@dLd~S݉SyqkA_M4@ֻh{fcVh0Vwq^Xt鵭w3ީj@.Px zO6WqA9UG~!_?UK,ܪ,&XRi7V7VnNi@B|;GӘ+6Qx\r>lnfz-us>JJC'D{jfDAOONCA9A﹏(Y^OKfqEWc^['`)a'C·G${rOwW$ՏEt5?@Aם9SuFv5cFKr,$*C=['t]򬽨CUK~t@}$?[r;_d|.G^cXA+m*NSˮe'mIZX8c;V1UOk*.p,Ď#cώ9MoAdR䶾0?>ϟY+5~]0'SMf]Ut\VĴc]}5"?7õۚޚmc'~7_|沰o:7̖sGr Vuзtyg 7glГ`}.777tJ <n]7]}{sJoӱٶ픤j::O J[~$cOFp.r5P]+m{ǿFb>)DXv1|a[b|U-iNv{_T|.m6$ȪaএL|o{8O`'-1-TUK's~%]у/)61"ruRb;$d?fsȣjZr.T^gjCJ8쎿:# h@rAu'&}0T2ܾH_\o'iG~=:?_])GVSS)E,db v:nӠSGWP +qV^,u؂;oO3zs2l y[@5ݷƛGw+gWT bAgS9Sֳm-mݷO#W,{"glqbhP-I7@8$/ 7glГ[ Γvj^~Sj9  翟J|ԋt`Eÿ0X~k~z?Y5\̜υ쮅%Khy!x3=<ȯ#p`x̤'5\Y[e cGpG&lNɺQfeۯ7&}$! ΟuO?! պ1 ò{êv42E骗c^o?j5Ǹ)>X;~YΦMVWzNy3uMXx=BX'1)ūejT?y=܈׵b&JjnEtqVR>HgD ЗGcj͐~u>2>kZ]KOCbyKεjn;W}3;U"r@Tx~m`QӫZdQg"yvb }2 :2ѹ}f?qf$J^MIbCG7H+jv͑UҡmדsźH+mlJQ>k/9zX/5e#n,Jv L}UZ4q> (ũ) io㭩^-JX <0:n6%U8ޙ)4|}Bږ(H b Ob]ՋX}v$U$Kϛ+)VGKĵnu;oͼWRءKu:ke;P)q?[Ng8ۏsSKUk[9Sہ6øbv_t,\.e@_PjsRdlG*wSl@Fl3gUV*-G[iVQyWA.}SVm M\?gN[UN7D +{tƯ.WFe`Hde? +]!%Ujw3_&Cz49m ]GH\[iGB[.qwW}6lZ8@+hl}{NŎ6-UR#☩WcXՇJ!w'-үvbKNߙNVz8ZcǙWv=oR~ +'|5ӽ'¥śٰߴυ:uj%O/#LOc0twJZ^GlBߎG½+.׾JwnEy=ON̠R=dQ2x~N:v5jc?}Fn?lu>.QG_mtYȵǚ$?ϼ:K݋1B*${ܒ`u;_m,pt!w/"Eȿ"-̞\}2yޘ,Z1fTFﯩg|-2)1.w7{iz.H.-+Zw`k'C +tbW(fQY֢~;>p>].c-vmԿbI,JP,q>2ŷ+eW}%nwøJAA-]N9_ڒqQnGs1'ܓOh']2 ] +ʁmM̑çTEUQM̴Ia[R'dN$>5xU"(Ҫ1dlȶk(,kb;!>hT+ 41~`*Uv{A!V`6tj.ǫ-wq='_ +އaTJ ňZD9PbXd`Os{{M +:u~vIגO$$I/~c~*;b^: =+%^r 531—;p"0S}2J [Q _v6CꌏR!ڸXІ}t^X^ɉgs}q'=Br~\yv}Colae{ 0sSU@Ux;ظ5U5[ /ݙK,Nw3KΓ/\|`.'ƽͮ0zVTjѶ~R7u~.?n$ +Վ͌@b{'CEA5N=-]WXlvH:(еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb"""""""""""""""""""'/պHdYQȴTd^SdяSյ`(# +U;`[:s$DDDDDDHqr+RRTAOn~V^~5ٮU`$ih%nޏ}OjnUc(=وԭkm$r7>:.ku,l5X@ b؈Vƭ& +YK/? +:N˵UZύq"2WHkވu5qވw +SV'KDD6_U>5bB[e"buo""D|ȣ k*9q&p7}p^a (_0R{~73OYIUtt7veЍXһt )rfDLyjޑ szQM ˚ ֝Θp?1ԛ+ȿwʏOmא|%')j@Vl f$xyyӵb"""""""""""""""""""$]u+-t}ՇuaD| mOWr_Ծ(ŃG 8CsT$-qxs4[_:OLʲm95B`6G-*|CIlΏ_c~gE8ʣޣ3 ROaԯ=Ul3en ]$6_tVOQǡB8W.gfuy'cW`;L뫯VxaxX6gM^G, >ڟ=#uޕK]ts%׹}65GSf#ՈZzYklvn>l9Myl22yS5ƶh1NmtT;ҮZ>4< W, z]QeFf.:,G!%݃GA`zV?ٌo$XnY'Dl8GEʩZ6r%XT5N:x%lN%x+;hgk4ߎ0&=OzU72p,V]}jhQЮZkh^@%I'r'Oirr?b"Cho~[kwK83T[v>]er/YZVJzU)P`[[}`O-B g#$_bw`+p(avי cӾX"G|ljЧֵ=Rޣ֯Ƴi+Eabl`켈afaKenuc{P;X6~]y3/ zOU鞃87ِ}@). tH*4u:i;b7Q mWjMd䓹.}ɱkrg(Evܘܔ,_Bj= dB(zUKKY]mBt,AjH;,[:Je NJ'j=,6]Aqo"'[׶OELNїU@a5P~R;߂I v{9Y]/.8(ac!?/}rm{}ۛzNNC_ً B. +']`H$N:e>2甂?!ܽ:^WYw?լV"Xެ@7N؝_1ڪPoLؐyHΏW:Nʹ]AnF`nZͯppz~ BEaRR#1doLtc3\k`즶e=OKU;"ӷb&@IBuޓ׺q1/VXH+,51:q/"܊E w[wgzo^ZhӬӓgKQCIN4\=ƫէC"*qnqn4W=4yhr鶃흖oԟR zuYeokUrJcqXT#]Z/SVRq,Zݫ&BTl{׹8BskjDMX²=F%AJ($yޥwG*PM_B1Y*91Z l܁?'؇+ +lT\ΊUNG-i +;D +-gwT[11mz\S?oRp }? ^ĚI:k g_ٍͅ 2"yNZM+kW!اzdϝp=Vdz,ȶB1T }ةKy "mmF:._:5yA( W xfE7]ekضfa5F k]_b}v0~A{mOiWӬpX5c؂ ݛ:'FWۇurr+8ԆNͯ-z"dmY\o%|6ek' +Væ_rF+'%z ,Oe'ʐg%va|-9Ƿ͇}÷&%"wRzӰVV؂_Vtcnܪ>P~N֟6e+Rk@KoNc<(l{hծ~1''~;{jEtպϴecM*;vI _f: +bWRBH + #!Y#Dh.osݷoQnc][ljS^a}cs]@eV,*EYB#߰ԍFǑT_nuͶWp4u^5)iG=XhkN,UB-֥K:۠$JT$5|<.m|R۵(,FfEU/;6!ؔx{{{o}ij|e98epk@/#:>[2ޫxpgN#X0`tOc} x,Z,~qῶ΃FJ\, _ب@w7~brŬ_u8jWB +A;, T;^Z=Ԫzb'xߒgCvBYk=  hk]mga/Pv`[qblvG=¼r8 +wgw5"5޷Za WJ wցwL{fyXm4Ø#+UU=5 |HSRЊ4@E7X/~{,]Ȑ}׉92)<4@]|/~X-eލABpX-{wٻ%WxW&_:`W C㽖kU; 1|kCv/uݍ}Z_J;1{RA׀y'")-x,߄,gD~I%=zq.! 0*A.-Sy#0 +@$k[Bcّ{MYl5Q-1Ew]ّ 4/$͏Г6վ(SK;q~0+ȿY63Ő'~-H djh;D RsT'G=Ktq\R Ga\f}#uuتo_ KtlTkN\{LXz]!-lŶDZ[rKʿOq>p~kҲߒLBܴpD}ٷ;}7ܽ~-MӗWU.A`xԺ:ucmy'M)@4ŝ٨no>ea4:?Ut2F=,鳫'&yl>Sj*[i[clgEd6>_1W$=J÷*-E@ot^'JQ]`#Co~p~L.Lfm*K,{*cC^;B9Wlb|ϻ +[C׹lZ01RO'{䤉_z".{+ڐ1^J;G2d:r)vլWΰ| +e {v34u o=*E㛸!bT gHMm֕t(2]c&;:6SCYa4j!@ +Ƕw>ly2t˺ۙm +pp +L}l~k]us!Ypo:Gmo+ʞT2:e>#D_5Jo˨8?e@.b|qffלroK+R \K#9[~ٱrK|OZI2J3vǰg=e1ǡ(wRؖ A yWmdUF^EحBb~a^AWSvDb`ߎ{F7Klxkl؁ﯩ?Y΄=k-(NZsrm{?y'oŶھIk(lqmBO H;>Y :sX*̦(P@;=%R@m:$J1ӝ춓_ (PT/a05/~UZԩɣtI~_藫oC@^;7|=F!v{R¬F}_M"j[]PϯnD|>lj ;UM#Zt4NCַV++H]qbIaosPJND#mOztu4Ǭe)%QC'?<} +>zgL((+(H%H{y0;:ZO6] #u%b" յb"""""""""""""""""""'`I۞DDDDDDDDOkb=VOb""|T0RFρO.Ⱳ@Rt'ȬŔhY'ŖCl@R@>w؈X#c"""""`9b B9^>fx jHVG:"a9tb702'B'ofh.ⱶ : }A؟QFBb;`o$?'Beֵb"""""""""""""""""""$.#7VBSpHBH>"~M^3dV9H|887ˁwOheK vVYZWiA͇Xu@Jg RymX`[_b 7>LoZj.U-d>_}ϑ^oVvSZǸ}=ǑW NYX%.vPo>9 +lB趡B<ߝ{# ת榺ש'0$FgxX8cAʏQUG#[Cj7f_Řu+c-A}7RC/$a ;͞Ԇ^N+M|j<-7ĸ-PӪ]Uo+{>d*KKl+fʂ}gzeK}J5Sw#$W1j].Ii=9sPד4mI:>>K+UEEu[{S`Cp y@:YV0>>=>dխ{H=1?O¦hNW҃66LMާ\ +4@=͍1~+Kp(PmoƁ +"v؉iQU*r߂=>܀߷xOlȿ-(]ѳ|wGo3 `v53V,I4vv{d703갳:VM\Ư)47|~WS{j"GRʼnl5\DfY`n*tt|;=kz=Y5b.vפb< i{omO_Ľ2YZMv$ }&Uy%ՒU2 +kguneU]}V!f:U䠀I 򞹍~UkխK2iwvFo1'ĸ6cv(I8g}늩b3"gcuq~9Sl.*T%/%eD?b7/ëFkkͬ{;vR@+] =7QLQtx3.ZƣC5s[ +˔^Z؞neuz1n\r5]G^=>m]Bm-I#AL4A ]'nت {('Ckxo& k*cV[T`}'>8 pe^LOgdv>Žw#Rj՜v'u߷oy\hgsWU(xHG\`^T +.`AIQG2=n ifewJ٠\ >/ĘORi\w^)h 0w]t~顒k:8cz]Tȍ$anQz֖'ຫFǛVf +;G:09e\^+O>lNvQDZNm!r Bk?_@,ښZn+MlN׺yYN q 31 +>duGlj*n{ĕ`Ak{8k&էNz#VY}<#cboG|;3zF]gۛ Fƾ1:QJ|K +B7.`o~d?b\~»`=35ob'o\Hw}/P;-dQ),GB}/#EuWnW`EIlnMZܜ=@;p;:a&+_El>aOfZmjB!~ [#ΎE +)61=aǾ͟Ս/6!= G{&O"Q͜V9=mMlӺI"+kz'LاΖa/ΈM}W*FK:xS~Adfu1}<|vƻv4UVe/{l7|qlտQBb%d<ؘ>'WUM,Ot DD׵b"""""""""""""""""""'7Es).7&V9*yں`@S=yN^_\V ߡZ˿;n6魨hY5 +W|7wg13tڹKFX#b~6Nu{:Tl 7R|gcQUAOY?m[:7P΍oG䋙 ^C^v5mt갘Xfؚe,;/yF̧ifȹYİR wּH.Kat \WS/+|}; ge2-qoZJ2?/iE?z}qWNWemנWGLtvBd l㛄R=@ͺ9 O1׼]zE~Z M@~}~SA0,Ag ?y 71k 5Le#lNq7-_QꕲVsZo:QM@b{?Cɫ*Z]xd!T} Ӻ;#գ7@Jfs3R:^mF q# ^V*gQz[ae׊kY[5]Ƽ}GNNn^*+9S>g&a8?LrNlS=ż'Y9si'#8u܏p3dWYThWn,j:zR=0}zjz;wf;z~_K]>R [c#&l\^}%m;'?V: 㞥֜QPh*U$v2_)3!_~eW^yRc^2ڜ~UDk‚@Z[#2Ltjs8ې l[5A PJO##^i/n5`u~m:%؎^>6A*EBWvԶ~ʪWV'X}:atӓ=@tr:oMMfUy.φ7g1v7/WFq_ZZꆱj4vxR{ + k>+9꜐3E+M7QҳUbP䝑`Sc1=8u 26:ﱩd&wDG[7K**QzN%@ 3L4tkT)zД^](|f!n~Diʀ?#S+&?VkUR΁ x]s.n6%Ι̌W]gnŗz<9(:RZ0{Ag0>v6'M9.1tֺC7:+A)h+u# lz͑S[O+[@qؑnׅOM{a=Ո"I{NA~C1RF^(6z־qV\׋M~]I( +{ 3wS2"ޠj:€l@]> ' 0̩)ǴR$8eԠy޼BӐ (u=EvsiλvQ\OJ׿'`bZ=hຟq$V )e<1WW ؈еb""""""""""""""""""""|]޵w}DDDH~2z[Z-WUw̌nf_%(FU†:-Yի뒃O ] +$yQ<'C( Ccz>~a[ l>'+Pł']SOg|rCcϭF>RqU}O3EP|IhvG[0oũ =e0N{w:f#QZ[Z "/a-Z(:;g{>x(%6|w-HҁjBʎ@h y +b6#:O懙#YA# ?V 뾾b|HP ;:oϸ+Pł']y]//.Y):@wwؕ|%I^;:lϠ{>i0@?>|@xhOH|WJU +:-HX( >wSueP@oa^4:=7޵q`>l@@ hk}DDDѵb"""""""""""""""""""$*|쇻jkr)وǟiGY=zI:Oη:`v7=6r::o[or}?OڥyrѮƬW$b""FC1o׮ǥ` (7_QL;͍'`x3nEv5r\CD/:w%&~leo׆?.}{nDDDDCVW^yqοU;fDUI'1Uz+ڲ6 k[a%Ck,+;/ q֖ ϐqo"4GD.Mcc5[Hn-4twO&$r"&+r+W` Gո0G+,oJS^\yoow3n""$>ota<^,` +#:Rb"i)IѲxؼ[b:3r&]K9Milj~c+w޵W~2EzOFKRVRܘڛqҵb"""""""""""""""""""&R,[ڠqAbuE|  ]r+u+hL{/PpW*ttvy-NOM1nuתRi\$1oݓ`5SѰ wl7fA]z"%\M.F?̷@zަZ(]mr*ձH?.>s-x)b#`xݝq:(:;SYnD ֶusUq1W*զx,T[%.4v·qk.'nQvorOr~}d.fMn2\q{!mV]7I>brSmpі3ֆ>E_cӰ+$NEI=3S2MomV +*z\tvrsFnNNXf'+w@P>Ru?6Vznkgrًr}OT=bU\UFmmOX-}jDzk^[}}[֦F=!5ˑx7Ա粴LW[ (*arBf DV,!@BDhMuѿ?՟mP+-iU`4OϷӴ +dg潶կ0.Ƥ&#\FJ 4Ue)zT tW@X޵>~ٕYc"V‚j̤h8oKPuuG6 |6w^'zkrW& SXuw|}z쎕qp^沬X/T +}A^E3-NʑMal2n2r~eJ2mN#x; ɘր}c֚hڬ5ԹW`x;㿙!Ѳդ`rE}L=ܜ=n)ZV'l|_R_(`P* ?ಁv$o[:쾕l>8dq+c~ޡh̶/eSEfB0 +۱"3ssXȧ˶G(]״9){Ԫ Xm" +N~^-ޗ//j@JݍJN']q߿yNS\;WRvɹu;U9|wvG=EVZ}]s'Vq]t<}nkFVGȽ;ηὑwTkd'͜nVn:RieS"kbUdh`稜ý9T{wxﹱӳrgPk/oRkKQX +: }O6ԫ0Uf[7l[5NI` +, + o4f<;:͵ozWE@gF%X[ۚ_*/tgT qřC)`Nxԑ'#хJή[gb~S↑uKpVתz+{ +/c[**i.sz;8zjʯPT#[׼=_=G[|{Ui&()e6 +!Ǘ"wi݃J圼s}y*YQZ ٝe}C0ؘ:XvنPQDlrbw'R7zWFEZFB5w A hLyަCzߛRZ!'~>GE(1  djJ\]'Tr^kk6^*5kcˉ_Z{JU`FkH $|5XFUq/*_W;o/# +r Ҫ>V^v ۛ}E߬ *2+ +Od&FT S;֧AUZX, xorgRٕGQ+L,GP^JH$g_Ӻ}>qzzm@0|8K50r*ec.cT1\O +n[$w2NÝn\J>ƗZEfS~V̶Q}Vʪt`w: 6(${J/m/.sf׍$~=n{Uxl:skǿUE^)|OYdu*³) q}au=Fc:k +ø;^'dfޘ~cgCF.KRVT͗Y}~d@dXfr]N1"t&!JV ILoTMYPPV];$[:sdbBǸ[] +s12k؋_pQ4zb|Q|j,VTݿKWDUÞS߇r1qqZmVr7Nަ7Ž|DZ!zا`+) ǿ~I'/r׽nKA@^7|=VǶ9;j ϰ߿fu\ߴ*o\n}koy33* !14 :c䧡Z*eVn$?Q6r.'Ǻ$6r6;zzFr}P}6Xq)6=.^9 ܩ{aXXU +C[w%qK-] +A;1ctDߗnSpk-ZtTbNTA$C'z>=yH)|vG*]䁃q)%v< Z:vgCSkheGc>GrcfRY][*VMf%@tk:گz-ێ(CXܘm]'Go(Uױ=w|5ӉE)[9ܥ9nL >t>l^Y5\wgoP rOm}/?hF&n")I(pfR_=OK=o~Oiz.WQ8lrkR'uVSRytK2qQQ ARlk}'tk^Kej<V~{gO]Y l[+)pS$Ƅω_ZqZ-~>972>+ Wkʹ]. ^=RQO{'?'7BoDR +zg>wOxW V쇼2c?0[9FT;ڲ)_n]IȎ0rl3(RtK`75ùT.](}ʲ֣Z>p]o:o2o2P-DiedYo9 +*Yؼ\[oO}etol Dk\!W_A=6ܸSylfGz)G S#S_Öc㌀g5-`켆=S>_Frv]R`YuS$+) :;u}V6edq aCU{**rvLnюBW>*[;2y/v5i*+Tm읕籛OfPc). +(\A(yexcY +m =6nSKᮉ:BUjEg)`@n{YA/ζ-p㱰u7j'Kʻ!2l+hӭ|ȳ#_r"$ 2nUtWgI+IV@WF{ spZSY΅}w>'Q5KEaUv~nӯk,ȼgw5FWuT!IftWt ܺ+bS’+,PRR@ +Fu si\},q@ِff~C%Nvrtpoq/;llϿnCZrߓjCUXU+JvH%6IO{Ų.YFcaL8oOD鞥X֕Ym.vulx9_NU`~%_mg[{=JҴdSfܙ w߶ //'"qRVՄ!B 1bNջZ.vIVRU&rq>Pw̽=e!ZM~Ufpyr߷LޜddϓwIU8AG`ӇzFl=o~:pFB\P@ ς:>F߇2˷)UF# EJK$ǰf~rrmKuZtQ R\;ynmC#1[1*ʠ ϗrcS&]돏~BYM/K5]b#=^.RMqvfR[ 9f~=6RZ2ޅ*X9+)x=#/JYe@/cb} 5Gيr1[.Y2q!<]Ԩk-ډXȰ/"_kk3r%z|8PޒԵb"""""""""""""""""""&3z($HHe6$5#0r1+-ςȏc[(g& +6 }L<sbwB8\x}ozs$OEpCA#b+*E +7/]lN3$O""""xN>I1AdRG|SS؈:;DDDDDյb"""""""""""""""""""'kL/-+S3'bB{z~[ם]5&K8n?:~7e*+S,ېK9F +A +HoDfm^f0zPo]\ޓ<7KF1q^)VEީf [ 3/ҀF2GFMWmBE-jKt7;:$ $xgTj}bI$rbi4qPG…Vn 1w Z%[%Ol >nE5ږVڧQ;RC<8`u#@7I@K)b4v 3p*\m9%V *f)S] 轩-;:$w$xg,}s iAoً펷?|8~ԝACydz~p}?-508K 3VS; Jf*An;}dVu4ވH:E=vI:;oGp oOE;m<}7qr~+S:kZ>]`M-bp[t9|w:)Ž-X ܒͧҗuڰGA:8@彃m7[^LsϦ[{};;\NVʹ/mv *QWĝSKĸIscc`nK<[m7Ǽ͕# +2=f"%lk >7n{(դB#ṾG IJȱ$ i `Z} w#S̿𰚅βUK$GޣdWWC,o A}R;+5r*؅&}as~F*2؃_t\D;*״qY`El֎;}SdbWOKsw^1S9^6@&mupZ{-e*\@ +m;37O4uJEI#~*tGA'fHé*dCc};*|3_NeUhӳ\nݟZ߈ AqOSY Z·dېJNa}_5Q[1it# x8]RgH5KGFz*|lwէLK8+wUv:&i|J_WqK2~e:'c6EǬnY(5p5İ$wvr> k@[,Z]k˹H@{Os\ȫbz}%aAbL\( tdz~-Ư+]mճ^®nO4F|V;X8X¡nZ:mzdֶ!ڲlMnը|?C"{-SZ"d,{dH9.`)`;뾼뾦|UkR-e6Ǵl8>g*0yTf\.sP@,bp 2?|I+ejZDKQ_ˢ$tN:y_b.tBWn_1΄,YV l|_kT`]Hd`Y {󮜯Q˯GJz}Vff!*u&G1+<ǡ=6Wl;6SÂ0<}#OA =i lRE|Mn-Xr9 ˗ Pt;0ψK޵s)SYnx~`:u[ XS@I_`יR`j)VV⯮sزjn8>ӺReWFW 1ߴ;gT84c6yz`{+*˳ezҴ~;!Auqjȶa:X l2#gןi(37i]? r:mFװ:`oUib\}pFwiq0pq;RN (=ٛ&z~dZ p>&mJ[֩`A"5$DDֵb"""""""""""""""""""'3q<[#ѧ"\5UD}%zG\En0ZG׺M8`"VԒ'Oӷ}Mz[º6N}@g|ANձu])`TZU=A+v"f.)YJYXubI`;"_ +޹ӺnqANk¢4[_+ N;6FM%CF(De GDvﱿs跪2TI#DkUvmB̋q-ZI& +Tԡ #20.ǯ_lj?1DGc&0EN*OQ+Dρ2*y~PYX2;1f9{u0ovcYX=D Xl9FP|nIQ8rqr:̊պ"2ΏѭE:~]wgu]1 pug%X[X܉oK=gVG(x6ω:-B۝Hr4ARE^~C{y6~|][j"kGa*ܛk^c~]KgWZ慬hC\uLG k浨{tUבBMS^h''#)Z޺ِ=le*^=r?蓢{b͋j6PbB6 Ew"W6:\֥ ·Y_3gtCo> ꥇUZ2yPﷁ;FY +wے 0[q=_Sѱlʼ1Jd(,ĒrN7ߵfd?*m5Udcu,ne&.-T; h]yot.NKNU:m*)LF|R-MNY'W {oNөqcњZJU`l4}U|VlۯQΥKk y7ϳWFj n"L/N~`9ߊW 3,^ן3&da%uX +Ց2=`yֻ޷V ^Q}{:WĻ]2s? )RKGoq6s`%)f ~āo,nTQ~I2W,:޵kkeQrX'^'}k0zoZ-`[6܂FLRPWe_@$ ~v.{Ẁ6-5b{]v4{lnSx5]diR~$UΡ~ k.cϽh:yYZdtf}zv.w9RRʭ5֥l bt!:>mac+vRT8HϏTyv;fj{d'L`U^j|0:]ޭV\[.fTTd w7bu^R.A't w>{]Yy6>=lX=B ĵ/=!:y[vCBVj Oon3[]HȈA [ԋĵqhǻ嶝amÒ(/y)=cٽB1Z̦5U_ T{~Y GEIZ,k{Wf +ٱ\5ں}͟Ģv":[` _xތߘLVޑS"v~E8RO'W'Y=n~+1u2nd&B%WAq,H<ũK1~ =KuUXo4V.%\³'܊ZkX T5FOsY)zN8.,uX] soOWIe2ϘVF4Privw ڇ4bRlz'>vC.[SjlĮ߾Ӗ\w쵵Қ) sV>j٨!V$vܚɷ1r\~{XR.K^*ؑ{E7lTB PWRI:?IDD@׵b""""""""""""""""""""yDDDOj{<؞hy 뾼"y=u^$G@3'&ʬ7dDd!&o5ü?t] EY& (Y|2G><*[]g%llXС@hx+Pŀ#DSKGPGЀG@'֨I +>H'Ϩ>rַpQIgTAeիJGFS"|1`gsd7MٙN/[FDZv$;ɹȩ'CgǤo_i0@?>|塽kzﯤK5ASEpCA؞ +@P65:%5x8`{ΝzTk+?PA:$¡l"xȮ`>AP; DJֱP5j~)<|kXҨ}DDDеb"""""""""""""""""""""kukr=7B+^NYꪶڃ4FG}DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@ѵb"""""""""""""""""""'#Ժbd՗v axH]׶=]^׏E-c[Xe r +>;Y꘽*3k+ⷣX +GZ I%D:nP9APREJ +m[u Wd|ZQB71~u qUBWUNE57ŰmH#OwDDDDDw$x DDDDDDDDDDDDDDյb"""""""""""""""""""""""""""""""|xN5캪,lt`BQY#)7޲WUmmT}ЎsY5L99=zx(ȱZ5nrek鷋[b6wMDDDNDz/> USmꞃْ)P()xoXкS=ekrsj^HbtѪ4 #lm>r"""""$WĦm {J*o9wO7`U7"4-hm邢ZauٙmTfMd-1:؞DDDDDDDDDDDDDֵb""""""""""""""""""""""""""""""FC՗ߒYC%62:ʤ'cѤ[+,EWR3wf; a3|:TzAiKmMqfVp]AQlߴśRu|nX ybI7هؙ:Fx꘵dǚT2B,$$}K=Cږ6bi\1 n{r'G'}8|JӰ-vcXbWv<{O  #nEt[Ox*Xm>?Y%~~>)UB2=do2|[rP݂$d=S+65`SG,=y{@o=Ouu[:>gչCRA{L8>kD՗p$J;& Y+*b|;ؿd5zܹ.[}w)5OS&e.Ffj2+^u:ݏq2M>_dYW]S,Rbt{@k@*G߿Ճw٭qZbx~&fACNeU%O7/ʄcse-nV,27;36(l_ ;{ώө6>Bl><SXj2FRTh ΓkcAgbjaT)#$ X:;o^;=(Puv&Ve8)_b lw++[PPBRuR6ۧu1IjIb0T}0ɨ׵b""""""""""""""""""""""""""""""sn.>"99xϛ߂ϟSPփ65ܩY/kDm 6'KT,v'OMse݌W.9@*)wusY +tttucM\[6}T_Tɜ|N+[[=e~i#>]UV saNUލʒ{/~u;x;Tf\/}&7P\NԺ^YDUTGolrvdN8 tj z-* +\q6}:2WW{czv%RۧA']ǃH96wI[-P!4~7碑*xb[pҖ-GωtXdI5k'7۟F6ݙN=[*4`2AWeUzHiN5 {q1]cn&um'^Vyq?lz}kO66q[.l6 hɠ7Ȟnӟ1sN&)W%U빽?YtRlU\3<ۿ1l>EUWi6>}EvKkͤ/rCYI%Հ$nѡΧ,JZ 㳯9<kd(-i +@ƕ`woy؛]/ý;-l7zUYvR½ w#JVV[ka AAd-f:]9ZQمJTp +؂7;i_uYx]>}Jt(nQUb(%zm;wߪ ^U{8鳡}z2;Tw?O~ۉc_Am6yl_Wx,dq䑿 l\.^Kݴ [(`NȒ˝C6)): Gеb""""""""""""""""""""""""""""""stU٫XL[ozxVH*\{v~Dt||DkrIu3;ӬPQˀT?S/U׊8Sc\ܣo'Be¯Q^=#IZ*(k͉槳[7V’@a +$Lul:1Vj2U%5=Eg¶jnÂE*$ԥuggz7:_P|[[A9vVW#i} +G~jI\jJjP;e'SBVV]Fc G|L[:nur[ô(p뿨MѰ=d˞\V$xD^#JUJdc^̵n{WHvaJ+]q".$N5yW"0+ x>~jl@N|pȯC{>nXBZfFl-j@@j}Mf8c֠t@쥔S &Z2+^uT8*F=C ⤕ux_NykPSkWꖽ}ݦnz7.#|o`|]).S8᎗iu,Coc]Җeﱈ,a`ğpWC׿OHfgy60Y]>.8 eE@x݇ǴV&69?i7IñGn\TmGdy߼ܘ2kĭ"1r_y0 @ؚ`{f{oCv?~I^(a·f^}/ZhH6G"p߼:pn2 "_0?UnL#ѵb""""""""""""""""""""""""""""""y=j{Emul R l3E4(hQH$}6K/o⦞Wf"̪ |33cgg}s$w DDDNS]Udɳ&]:ߎߓgV9YS-;Unn7Z>`{tQ"#z˳gEv;#t>]Gv n@ޔlouN"""""""""""""""ҵb"""""""""""""""""""""""""""""""""""""&_9I:tH?*+-V*eԙ'96XvSZgSZةӣ?}U2([^>fïk.RkS6 kCC~KDDDDD:Bl̼̮Ů_ꀕ(`{*w::i\tZBUP4@= (Gw~Vdz[ oYJܝ%b""""yDDDDDDDDDDDDDDDDDDDDDDD@Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb"""""""""""""""""""'Ǩl{loO*ᷣϨ(gu #6U9Λ.ǑHb""a2fDFs K݀'3DDDDőV".uE3QПgԉcڊ@V.Xtw SUSX(Xmyғ&h#*Es.0QlϯY88N5yj=>]9`lG +IV A=f:+]iub@'^=xֵb"""""""""""""""""""$.;V(+ZXo>Wl[8g[Ԭa+Mv-Nxq:Iw襃ޏ6e ||M~nJ yulQȓf; a91nEvV*#to%Oi8g=azS%-1 <7ʧ^zj,T)x~S |F[*:-1Pk Ź^f/Tbi r$i}'U[sPvaGџ9}-%jp;on']DX+ҖkJ.9">F#Dl1os&rI +sJ] +|w=꩝mdѴ{8%؆ch'>Zރ?S_Lv;w5# +³ňp>m~[ޤ-}jVkcTj=ldfVU6/܎?Mos{#*eV38AVgf8 onS:خjj^}>Ll%$ǂdz6}}$ukꮪ]UVWcgBJ/j4SUX̌J++v==@ofC`Ϗ}җdwB]rU _}v;>'AX]c6*{oc2ʲr +˾~|Һu|jREy(m@ȐQkXg`rm A:8ml\k5]+6v6 `Z߳c[zTbfy1wص^˰%v R}1,qY99XC*ڨ O#?Og@uLtZ8[+ؐ c%hT|%_(uߗ*>:#`Ć;ޏ}n>=UIj!Er@P;'`2:]G;p !*]FAg?ltvm):Z(0dۚ(:,;/>Ǽm]*҄/ޫ~Qԕ)f#Z_1*fAobi7ŔlW*#4x ˙@{^O80ؑ ʪPcv8RuO +y9ƫF>ǡi;^F;.Rca6_UU.{fn.RlYUt:F(n%U:$3}}W"|-$R_W!y3qm{ob UM&3{' B?#0f~7Sb&mއ5Z +\\wxi:o[1cUQ޲>M|m6]>~5Y3,c**Eۙ:emwrfXPE|0|t,k,ab_FoY^ƱJh}5߷y_yIYZȥv^ϛq:Y6 hRϹ:-h4@44U 4[Z%vx)քYi) ( ]l/yZ1psC[y@kVN#$>u1@_T gɭF[}cz.ǸDKDaf}vQ ?uppk9&GnZPBa}*/*;CZ߾F~uY=SOKzVpEǏp:Ns-X@ruO3Uh(@Nc+ƢY `_yw}|9]/è9X C Hٛ?t\JYZ20 Z`H frO꣰d/caoZ֣[ |t;w6[gזm[_^>-|x]s/:_S/&E`"Jjj&N$oium27b^ +$6~kҠ UN%aث[@ѯ5{H>X,Zͽ؍5=ӧafa%I|{U F+2νWSƷU&P8 T߿|?JvlTcAN>h .ܬ_I_Y͂ +F = @7:;eqQJ3cuǷcftZOpl Si*,u~I.+F e R@{ET7;TE~ZrFeaf_L˾ʹXR%{0p7|DDDDDDDDDDDDDDDеb"""""""""""""""""""'DO'"QmL0N-AD{<""yS؈'BUKx%iBݔ!hߟYT!ln}DDDDDDDDDDDDDDDDDDDDD@ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb"""""""""""""""""""""""""""""""""""""""ju&hķf5+//)~C<.t&/=k4\+,2 ‹~KSVlAs/8]OXu6[ V5Ҽ|}B#4l~@nvTMo7wK}lfjY'CCg:,ͮ$3x=_Mc3DDDDDDDDDDDD׵b"""""""""""""""""""$֜V9|FGv9(<֬d7gJ<E_Nqmw ޤ\Վ9FBbU' l˲֙7,%@ +4k>u$&B⵪-u,`;>}/S wZojmâoz^]O>?FB°f l/ojڨ Qdż= YrIɫZ}TX $4`~llN`ab oߛ,t>@j C+:rbXVtx{6w]GjV[|C0Rugl+EXYkf|ޒG:%ibbq8:ÝEd$?)]H,>ol7ػ7zVLWX rf$ +}azm]Ou v;ILY95ZQ1&CU)'jpnV-RȤ;:7+ur^уoJ\Hȯ}A-KPl|SR}=z'ntrUpj2׾:?EUP͎@Q_NwΝpכVM&zi<`wDS^RaT8$*$Cd|L[CXWI0} 94'H"d*]XXcD}I[U5@""""""""""""еb"""""""""""""""""""$_@6O(Uo"?3V?MǪ--.fBυoJUtd€|#2z[d. 6;?}P]J[;p^$GA|}xS]`X2ǰf.wV+"ocεlOoI'sS+t+JTcnQzbܤog\mvS|\ |Ky2-[(6'C`w~- +Јљc<@y`dNrud+`Tb9ucznF~WfϮoʮVL&/0//e:}lx!}:bQyVzLMgNDי,'.P^KFWA>?I6;,e{ݍ[klWdh~cᮙwŭ$l,iԢ9SⁱlmZ{mLk!1=s oU_6aY>r*lnٯU´(fZYKtOy5L>}WMZ@+GbcFIᬬRVM6<//Lnrpт>7o]]8ԽV*һzGn=~MNj1r+}V֋0Ckf] ӍMS Kʵ [pVyxbcW͈h4T?^9wѱ.H]7[XGW9G_6L>sWAfՁȼAFE|O~_QZ P\^jd12ٿE +Њf#Ұ*#wEUr+[@nks1]o[N8% +cT;:s$Ȯ'W͵]LK+c$rQI΋Ժê?QUej]RK |[WUHȪl?>)EYx}"5L6ۿy,~1.2:rd`9|7k-chpExfOSSyJS€fDDDDDDDDDDDDѵb"""""""""""""""""""&P²`tp7Aͩj)[GDucsN^JҤK131,OԒIQMN*bXY˞MGg.XTDx1f?fޚ2mnTLum@>sSλo?囝lL@Q<ԎT[s)T &B4G}711*)B"(UP4~tttFq#wh8W`BW{ފ2OQHι?Ak}2*B/9jf)VSpKuK'G̜j{#{{[?Ԫn^HY{ ލ~PpKBW*X~yj{>,T'@ۿ!q>!>q4пd[s +luy(@:*H7""""""""""""""""""""""""""""յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ׵b"""""""""""""""""""""""'˸@INXZqeo,>@>Dڈ/b6'C>&QUt yؕ39v:z A%Of*{MԺ=)k6cekFq-* yod?OVbT#}NCZ*(Bl^w7-hFw:URI6LLJOP/bV3DLwZ(FrRt ܟ`}R8bNՊU#Dը zhBHRG`t 7b"""""hSrq&63ʹ:`[:~%«:f8A*ߞݤ{r l6u| 4gTKcC0>V +HN,ӿэNŗsTz ߈u|ƮSQ0J6g0_3""|q=Nը4XC##CX4fDDDDDDDDеb"""""""""""""""""""$PLlD)m\ZeQ3쾆SP:Uk~N,Or)|edzVSʫG2u|Bllcw7O*z>v *ԓŕr p$Jx>ĀA#;#c{el*2Yfsu[Πط5{M[L6uG nK*^[V Pd + MՎxn>'=t x9{":P Բ+Ʒ+p;$*NwεR\,e6<^%Gϣּ˓c6qBW^KמJkEyo02BPAN$26|[:}':o!g Ғ{z]^N[iq7MqGUȯ "׏a3rJR On7rӧ>=hB3$NאOu&7^y4Fܛb꫾EaO-z:;waf*@L +=Dv{X?J4i9zGBFF/}}{ӗ[E([NԖ)^p*絘HW8 # +y\7NȻX* sm8jhVi+uV][PT;=5zV/E,&*;kqmIn֭xzu¥5U$U=kb|K,[}Y*qm~jCq5f+Ju]`sw jfi@q6Vxy8k]ri~=`o;&{Rԡjm`}jP'i}}~럢vbc5{[0mv3sS;dDDDDDDDDѵb"""""""""""""""""""$YXK'9Q/6+Yw(i +4-w'thȱ +&o.lAS/zeVU[HrIUREOa35GhE}tb_u:#{ןiGLYNC{P)*֬[ 4;>7`JkX:v{Wώ[.:jzo ){6Aju^DO^?MZU G&Z@4[-cuKNGJ^)m=4Lyt;i,Jr71~鿗7>KxT%unɴ}U~M@͋p3S=5zH6vW/:#Z3F)*Y#X8//o#s-e֬[NF5 bk>BAʱ޻lzkܹdҎ}D<{c wc:yC\xJ>l߶KUH|H ^ʽNT&jJAVzz7nϗn#8=_\uAO毴>|-}צu=S\wڋq,C.F+ dduY VF?U@*3܉̙#cS{gtʱ-!k[T2"=8~;Hw>MjX_,qk0v4x)ak{[]4sDW*>d# 6{BZ5"h: OvS{WLί+.W.T*]4,q>nY[Jz5UVſ8~/ipsN:`J1=:MpvnJ=c#}19zVu&ccB?cA:ۼncui.#\>k|&WRȶX[+Ӷ):gT; H/ajqxP7}L0_1mJ=6܄;Of#GM=}C{T%ж\:|TnGZf?:NV=5~m3r~hgt }M 9sFR{RO6<).lس7yfM]5R2Z,gǏ/O8tt\%c5ze. +{{S@L_Y(242#cZofb]Gt%k]7Yo.~&vGUˮ~VVS<~)VV97\Ss^20TQT{a$YClAc8ʧ rѱl;eDɡOoؒϓIOFV>=.[Mzm{>=M1mx댋] +<=Vse;2|ߧ4N&l7/8|r\[y&8V< i߳5'RܫnߗV~rtwDZ$%^{ɯ:7ʔڞkyАYx«2}>$SZߩݷ58:oR<*~`@~>:z>WVY8n ܅L=klozؘQ_fZ5֗Gy0z|a蟺d99_g֧'$`̍ Fx=κej޳ +A`;a+G=J^}$i,U}Ζ@u.WPl@m8n%/~@ώVj6;F@wwᄉ6V"?T҂ zVwLǫ T+ +Pv k }$mc3-}VW-{o׷zwQǧ6UYX[%{5ίa.ĿZKx&R}_QriG<8L^}weۓv8Ŧ{)cav@uUyMeOmIwJ}5vGܓ\ IeIi53 8ͯ:vF]w%bkZry]V7xb}Nϣߙƴ!1T=3,X| L}LBsk~Uqҵb""""""""""""""""""""kfSӽ}'#Dh=62bV+iW'C}#Fgɹ8k槳DFQObbū2WF2b §Yi@vxj{FQykuOSyVLv>_Q>i4f}ؓ6!}}-k$FyDDDDDDDD@ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb""""""""""""""""""""""""""""""""$5VulUCUk6ʍ`~Z ǧֿmoq?lz}kO6Z ǧֿmoq?lz}kO6Z ǧֿmoq?lz}kO6Z ǧֿmoq?lz}kO6Z ǧֿmoq?lz}kO6Z ǧֿmoq?lz}kO6Z ǧֿmoq?lz}kO6Z ǧֿmoq?lz}kO6Z ǧֿmoq?lz}kO6Z ǧֿmoq?lz}kO6Z \g؊+[Lx&=^"""""""""""""""ֵb""""""""""""""""""""""""""""""""&JQ]Ui!\=*1̊*9PmpĀw_|33W?O*lkSg"j Kz{ >*}F;2mN G|;DDDDDDDDDDDD__bbmDDDDDDDDDDDDDD@׵b""""""""""""""""""""""""""""""""&JQ]Ui9G暑V?gѲOj$מVX׾Hc7O®Q7T +@4~r/+j.on'DDDDDDDDDtcl<2`ԪPԒ6<{|MK+QMеb"""""""""""""""""""$OUk1+baSW fUx#şuڬz kQXzn<`Tk'Ѻ7,lVi-B˰5oqг,1k1mXte[2GJDDDDDDDDDD_?Kʭ#>5}9qn5؅B(D~lTwk8VQŌ"M n;2m¥ oΦDDHuEkuU_~}CV+k79}~×:xg;J~b;~9uɎc*f?@ɚ= ʠeݰ+]}xO&\.>=V#*yr^HloU lkdO3}:̌Bx n5Wrv/7v3lkEfUZtNkM̎9/ҍY%w.*l+D!Y'$3$H޻jSVn _ESoRrW;mՉ?_3nG{ֈ;ם~)gMΠ%"7,} oGzU-}!bWrl`*odtL˸zZ܈%v ll~µSN56͖QQC߼ԫ\ 6~/y9W^mTx-zm&>Y)|5:WXqѵb"""""""""""""""""""$>!<}Ʈ<;_$:QJ@kօuI>m`zV쫊ݐ;|UP{W + ކ=g;\.}]Rf""""""""""&JQ]Ui~Ηߍ uO J{Fn_@e򦪑lrR2}ۛ_-5_eV +y+~/Yaa=liw/MautS?,']/z_<>]~)}ſnWɡ,V߿eF0kOZ5IoW_X(}| eHiqԾ1G.rHuc)ѯM8#^~l^겚ȺH[X=:wg1u @(OY{moRWWUzwY]OÖ7׍r*c>+-`qm2} oFLWZ'DRQh?~;Yii}]~iTXªo-m,ԫ/!ȭ~'--le dTr*GR+)+vIK)aX++b 8v7Y`ݨ+Y?)#LyYzG IAvpRScїS{ 3VHx?>1кnP'*-h⊺Ա[P:#?}|޺ ~mϯ>wk|N_`UQ̢ $@rlbӆkx]'@9llTY1Ȧn+s~N}`*kS|yOͽ{ipZJRRXףXEgIg@QX!#cz:WXqҵb"j[+MKWP ~Gmd'ýqg9N5V@A |tpM~u,LK hu*ɛ8ޏꧧ>O΢ZgrOR`rv +w:uLK]KfU,Iy$o}Q+q[z0ӷ򮡏}RZ뽨`Xkj͢ʖ# I:;2b6c2 bk~u>d^C`l,nе,txm~ic P +Oپc0u~ҫ,@-RO"6ܻ~yE䠲6He##$Nٹym{E]'|o7,ꘔڴ=ȶ1!`dl oxQ ~,'eY}) KӅ_}ZzLضe ?O,qjj hS75ڍK%k鲮r@ "J Y=Ab!z]F:Yj o,bO~hR؀%%$weG }Gq>$GXı21RO4tQz >H G3ՙ[/=bt]90(?A>z-Ջ2ȴ^"ƺ=@LҿėZj]Nȼ=Ll<ZÑN4vt5E+bPđz?IӑoPƭ}+sx<1>/T5\zv "tX=%Uɨ]WY^V6M8$1طnК3޽FU*KW:ؕ4d?J|ƳeصA"U>;0߶`[2Sk)By ~ػ{oS{0-ĺ-e!0`*uULʊ*jw4{~¡Ҳ%̾|Y￙P[Px;׼uw꾖wWуpߍ5ْox7=Agig#E{[]w JM{TR] 70Cl/;{OxkN:!oO8oEo,_(W׸,C}~Կۈӵb"'!x?V XTYwݕX&e_9 +N\f%|44fՍ:+;bBYA{ Hw/CjD[Z%iz]`O1<]T +>]qWh[gOWNzT*VALz55;GTv#~:7~?P陽brۉÊ75J:;8frᅠ!xU₵`Ll#܁6[aYzi xSQ7jķ;cșc8Z|w ~a;;M4Fđ3[iH҇eUi'0/Iͯ?Bvg6]')džIφNI队k߭zo^ܿSK7->~ݎ> 1ϫCzǩg|M5uښDh$z?~۟_hzֽ?[뷞<߾E8V6o5(ެj<$e#nKc`Xq7;l; Az~C=3nX=vPxs}f 8ur#. ]0{ B]6SzH+F˱N!qWYRܡJ+Su'WAKUqr;nA-^Je+w><($NXi {/Nb*QU1AeNve!";DDDDO5=槱S~ي?Եb"&#SF'{oƫ) v*O=R J*U> ]7fԳ%kPK r6{f|k`GЍq:/o(SrJI,v{t5z2S_'rq+^ +RWb8!4{O8]4kq(s֣ϿQip]_kjdo*T?>(EJ**xs à/5'A`}9kz6tk[ޚ(Ƽi؛5ߧZMeJ({IكuBR2UJP+PAT}j ,ǩ&ZM;T @{4WMȈ[uOzb3OD=|n!75ET+f#|Fb٘>o,ECҋf ꏙ'$t}?OaZk_t_=Z]h紜&\򀬡I]x`GoMЬoW_\ڲ;~(U T I7miuB+#D⨻yO~5:WXqյb"'˸@I=yUrF Ay'ŷ% +]*Ib@P'&ZWjX^V0Q6(t;:""kߟmTjXVX>u6"""""|b 1~OJSoxyE=L{޶oDDDDDDDDDDDDDDHJSb,`k}o~ڟ/c~ڟ/c~ڟ/gjxV>O}XU?/l_cTؿ̑niI?* -qSr7qn7qn7qnju/1GPMȈֵb"h#.oO5#-L{щf Fw<{{M +>"oӵ h* ;zg.D[nįRUDgB߇O[R[(qԏ-7V-ȱ: +ƥR#}lY$=^WtހR`c'7Q33'bؑ}3g'[qoVoHp۹ }˳ +rVjձ*oDhXdCs8WV +-#=zVʫͮNLr܊eU+ +[OqֽLÃhOPVШ`AyVR`Y}]e$@`ADzW#S\)8q*-u7߶HϟnN=sB]u#v败QM#|8`F8%\{kZ>}w^-*oLM6|I^[ m SЋ`)"ibKo,_R+\X fRVʤllϪr qν$`[o־rEAcc|j׷o:ld͕ynoR!o\o*X)WUf"hOjn+ԟQ4l}>g|JI $$ϟLŏ1_韸?K3?OWC ЗJR?I]7cB_G+oKH%t?ݍ /&_ҧIWT?v?J'_S*tu;Ncq~:O:ҧIWT?v?J'_S*tu;Ncq~:O:ҧIWT?v?J'_S*tu;Ncq~:O:ҧIWT?v?J'_S*tu;Ncq~:O:t7q[jũ]NՂ$"""""""""""""" ׵b"Gu_VĶkb6`˱ 3⼎r;>:VEd6gטTcg53kȦR. G^u0h+v;WrXb0@=wOK>gzuXXvY= ]>2q3w6Y!yǰ`@#~uϞ ++9ZTLb{kS^oQǨSecr8b$x'MʶL^ӻKX*뺕S!Enq֊ ̪rvXNXƿ! +jNV ɛ5,8!jYZ2)򭶬vmma,p ml g"FO3Y#L7߿ҨZ:T`zmc#_n?,ӮU6ZAgl{jaY]C_Z/5٦5/o~Ffcu}բEz#?t=:%6~yq!1)*m0rsjJј9g+.kNu%k]uY3#֮q։mhj֖b]hc} +z w,I,6u Һ朊v x Lm|@{Gbw1lj]jm9k>9>keE]Br:v_N3SPepNJv~|{k2t<\׬b7[}x8}7aadS]TڷTYl5:Px#zü#r22rLye}jn,7ة{|0OWST؞0r,ee;:?INoE-Ɗ#J8ω GLqmfmc@@ܾɻqs1 1_C\zEI=A^%V[a∌~Fӆ>ejnDڮvݡT)PF#E꾽CyT6 +:Q`mRf y?ҕIu +2,tňV$=އ]G Zٿ2+Zb@o7/JZqi |tnamfKɳ,kkYf-j,v|#ua$玜Fc?ݸYa"X |:i=t? IZuF*?cgNŠ+Jc@٠p=m7"""""""""$!No#aMv[>㱽o[QeP$pw)稻޽Zk< + ==-[% ȯ +O`&a=K.ʹ 1^Kt [SJex*};Y6|.wqX{!w܍Qn;}u=w$-Gޟ>rrloyd|TGr+e4aRKV >b|&-cԝ`0>'a '[tSCmnH=^0: l;.Ltk,!UTbt$>WQP\ozˎoH/gD鯛NJ\0g ̺6 I>zNj+_ ;5!Mɐb(e?PFOb91}IG #3Ѹ 㸬my'X6|OlU!I| ?}ru=X'C绍gǨ޷_]H:i]-UЮWN@6Nzɔ)~%_&]Qe@ sKZu* +7Գ*ikQ +T~^41n}O9~8 +ܿnjٞ^(]k}¡Q} mOQ/31_/;;d윌gUzi{4."+WμmZZ^c* n9O9OyO @>'@;@;+j H]ddukXcR [4{zܕ)blllo]Ah~ +X:305?eZ]&ͮQxD'DDӵb"`§TZ؍Jj{︚L;UTԠ-kZ%"PAmc׊]jTh4=2պurM +>Du$ z;e>6H wW7$;mՊ@k hBJ2nɆI|=Qbð=g bX#܀p7S踹֋@VG%ph6%ޚsD(rU:ڃ;x"""""""""'%׮Hu -'# ϸ;>kηlaa:5V +]c1mf +IoCCөo 2֎]U_U4eؘu sl߷UޅW›lV-~EU5XMu呾* ruwކ}713rM@_{ZM{[s~9F+K6KZ޵XJvQ:Q\J+WKI qm#[_z ՛ƻXd:?1R:'p{`^b_q26FW2 n艻 H7׶_ +ՃZYnH @g~+Pu +suwZ]~nNGSXXTWrv?]v8$j gj{=:pN|8]]F&#b3YJP" 69kec8UuYةO0I.oM|pcp #&~nXwe.;9.@EfQ}_DXVip͌eB91?w! ŧ'g`㽨͑r_jpe_-Jdٓjkwfc,EWRF1.1ZƵix f^VV#9& +[K mIq>'[=?5XMU"֧TbhkrsHol5l#ץ}20o܆׸#rzDbsCRr7ayJz5Ծ-bBnkk$+#\Ab~moLn,ێǰc!'H" TtܬzA*QrXO5UG@JzM+K惰O3߈~?L=%nVVљ> zgQ@i _Wvmv}GgLٹ)̼՜[;7n[7>MxыFVJ^#cLDDԵb"""""""'؈ꍀޫizHy1% zbf-Ɏv-6ϗg +TeEOV ~-HF ˓68-k{lR [;~cӕ',Ē|3l?|_O"Ix3܇,Xޟ] pY*րe;5pp?^< .o#`o[$=kXfn cLӷfC=O`QazA ^}ަ!Ww^ -8|Ķmf'JL[Zey܈]hgܙmKr` + {4p6 ]/ࢱ;P=0/I؊,kYK[Ēz'骣,Mo?v|kzi^!v]r 3L?p&.(t|FAeWd cčj]F5xv=meG}[<|.ayPrE#HN'c+UvcN;99  s~]ٮv)'J}5?W_SjƠodGrHy^ǦF`xǴW Io>;'J5tzZ€(P5B^D&.ŲȥݫBQD[.6l4eA 'G%4C< {﹭>?+dU{DcɕC'ξ`ΝE'VF ?1 k[|~9V!`8o&^SՇ wcm#;`{ gXxMtV4P :?R6-*=vL]EJvBDZ`K9$a@υ1pfE8`|_ tgBҲ֛'#f1xWȵ8v ad50ա +Tw4%up]596< O'H̊vluO늱 lu>6>zn؇ꮤ] ]+ǝ={ f\L|1=S3ЯƖ,v!Hs2uqzY(VXԪ4Gp;5W(]>hGQmr #q-[ZN"|e|?NCQH-U:vTz3 +l^,MT8oZݦgU,i.h,y@$`>LNOoUVȡo@Pª2Az0~8LX,fzzϗ~[&[Wknu'V=?;x뿼͍(|{Ke` + +.ξ'Qu'"_kGk3GØ6cXyעE] ~:=vm9/eooW[8+{cGQn%jU*JK1ARX\ +R,UCm{|ǹk]j\(!P΃f-x8[#WĐy+б..n]C#jeA>q܋{,>h؀45v x/1lgr7'7%q-kXg`˱v{S*ᐶM3TPPI +K+vk^f=>|K#p|I3[>ˊޕTc[(U-*F@}2i9BG}Ջ_R-cnԍﶻj`a +5hS*#zm{kB(rm\ѻqxb+bF;Rpߩ4$3A)B*9&V*H!o~@Ǚ&mx7ՄR +~bQL{1v)V#c4ADZ)Rֵk͖YZ{vu2J""յb"""""""""""""""""""'{4UJ޻G&n|6i/EeeFG.6lko }w/`lEa*\2~qG>~B` +y8*/~]}<^(&mJ~&&Hr©[@y:POOqrͩ.%<a{Dw50:7SkVjpIۼ܉;DDDDDDju\L+j"f~Y>UÍ"&oUy,bݼ5GU9'\NFCSn"| z ~lWZ׼܈槱V.O`Ip:?T_jYޙNc3f'T{kvbRwG6'DD8}=ҼrȓO;g Pp@X(._rt$b"""ֵb"""""""""""""""""""'12z@`\|Xbxw$jLUSqM,݀ޛ^ +Ԩ:6u JN>쪇 <覹qx UƟqȨ!<ƿ~Y?t:lc*k +Л +3gp:i]o%Ч}? BY:ُ0뭅5{_b .crK*-9t='u|e6TŨ=n`;7߶J^1{dfFB%vW{סSj!c44O&bVMԷdAӍhro}]8u;Zm+ToDzO98w%ԛ\Ut1ǎS P |$cjzKNxJ8a@?3ng2Z,X<ֿ✬ں}z}+AC{V.@l&L+&Km [?\ALM׺f&6ɊuzD s&]<[:)Uu&UaQrnV`""Dgyu72H89zBtJ +v}F`Y譈j\!uoSSRuCp`U;]t۱>ъV֤`71;'|=n:uz*[Mf +}|NcHm=]=@Mb|l1zXgUOm+20*omφg>WJZB;S%O#k2zMX+`,1;R|#˾:X ,{mpB O4>'MC jVcd56/.k dSTtk2uf>OܓHNm8)/U`BZ¼xx3/VΕ1et )qoǷmOLʷ«b'vtrx3Wbl YP $kA RNϝLo:eUt?cF$/::._Mʢ]l[hūÒ::L}'ܮef}xL~%kzMZR:V=YF&ISp&G LG`|~$2z.`K/$V?1@:ϻ:5_^31,Ve^,v[<Ǔ6b""׵b"""""""""""""""""""$TtS\e@efuucȁC>[3fSA'Qj褨;%ڙ:wL#]/OLt΋`fn$E{=̜f s /raGE~ \#*^=[ )Mzބ.(9A>~vޑk0 56_a0SGI$Y3ܛ.jwCgwF +l uS(D(BcHp; 5ԚWʠRBRͷ6tvQMC7?c5U1P 05 `};E}?`.E)"黭*aMej\hԢfcߍEͽH,[youL{'>;cYUy5[kXP+%'m_?|r=[}]92֔z1lT}v52fjVXl)$}.작@]J;I˺:o5WUa{!B0Mek+"ƷjRڬ6:ܰnN64XYVbze +m?tzENע: .{kp>&p3p6# ;8Yg_1htӍ޴BZjwoP9f +#'f܃/9 wZTs>KtN%ri}2~.v)nORDZ#j`TIgLY9d}Iy]3ݖ"|kA=~;w4>λ?Ų=J͵e )We]eUC"0P[;N=tkTgnnYJ *ߑ[P}_Ozf ICYW(P9o@75-f@XQ; DK Zk9Y6s؋Um,7|b.re`V% f2T 96m﹟LK¸דfڥ o`__ffu^F+^Ղ@ #]L}c>sñK5`5׎1S{zَ1r`Ml]ga]]gk:2ÊB]#:ÝA>k8I}Jl<3(4R=fJ?(P{w>;Hc#*,2)$"Hv;=11U9%ANN?6 ~k,F;=K㿙39;0P#JϢ{/̳3-b9iDǖc_l+Ec qfՁG=:tY|Cn%NUu7*_H; :._RI^r]ࡩQo8uV38enC c.*˿:< +c9"Cr= +C-2>] mVVQk_Qu?,n}*POmeI5+#P +7ߓ#@jBu^sWC=aGTD7멓װpVF+Ȧkǀ!>5:C/Gv+;`Wge'3o[ӫZhQwi i'ArE`֣ 2.Byr_ {*f'uOzexN.OE[z\xmU:1l'5' oAqԈzeAyV{vuƏg7TnYS+[YUgUӖ5Ux󱼱f$2z5?*NhVB,D'Ǽ+\Nu\UF[ 95-HIoOO"Vf:Xγǀ#(bA<~#gK=N̪=5kD~Ox~i/7E06(y]yt1VXtElV]mH ;g9L ^XX& Wm5oJo4cl{iuJ ho; #t|L7\6I߼we>Ed5% E\;)hw&Y?[e\zYlk.݈2Xɹ?n&OObeRkzkT4pIzH+GCgS )ꙝB.UeThI:2;c׻O2 ğ'SSʕT)_w!K߾Q~Ϙ´5j׍}ho$-R=;=@Y0)Gеb"""""""""""""""""""'=KSj]-A ~dïQ$ܟ M,:)J*Q*:>O35QO5FQ'QM;:%7;Z $۞QDS[QljP)9%GdMi\/&,t{=ѵb"""""""""""""""""""$7>]bgM]Ȯ\ó*V۫ 6=S"쎞jʡC°OS:w=nMn:wuA齙խ˧ +vllf{>?6ޕ(V q+noIꦔ/B;2o0bղj˦f-Đ PM}u6mCU۞† Gf$MNfUX6-'NƿUyj^h[DF1o!ך[ɴF%gp^pnnG:VNNѻoWr/ճʸǒ5Zy';u7=n&P9J&'r +@A?|G"ާiVJS!JړqLO'ҵb""""""""""""""""""""s?WLf$yl>2m1IRz=̨뛵RT6_ [꽺GZLUOlrTlᚸ]?d`E5 q9&O_GW[M |=?QR[`{{OH_:i/Ȇ&!ԏ;rKL~3>R8ea[LIOPDwSŪ1NlbUE|ƶeMrm`WTjEw@tx)}}.7kͩ[_}G=vf|4܀me&"1cV,PÓ NmzOSV쾺] p.^ :GsD\FkmL[J! YH*ADKux-]+XfQJ91kG#M^57~-I@vv|DbŪUAFr_`aQnրgB+bgInr8[qNl@'Ǵ̳tZXb%9ho`}H¿45XqeMj0.(X7ΧI8~~I^X+X֡HCm²hsk=ۅU1ǶKU֩Em6=>n@v1uu-黪5:QڍYbS˔Ev_[``FRxx#unͤ"=MS'Sr:c,&o@%^ֳ( @&'To~KY,`Z7`;:gfSV*\1F3V=BT ߹i{z^{_nBՖVT+QHv,[kZytW^k9+0;}e[Rc>ӛ].قfmbB߶w}Uk^IoJ-vCV'yy:eA\U,=[`gGM"W`'ammuaֺRr`\IRƱǐ ;;0.c;Q묒T;Wa`7(;O3S;#&v\i! vCX +P!Wo1tpķP,Qӵ+fʫs%l[)JT|6 =ϬjKCNq.`n=]RrvckYG%rlxOGoK]s:^»^늞>T]WΏ&WA>YA)@-|T tH>>ǣb'43c#X?ԇy8}+_,]Vt=QOYǫ၍Y(oQln-[qsc,15r϶_cd#8?.Ki +;'C'8vN,K'`"UQ0|~ n±$l|q/Ӻm=&F~`xoڲ[fvf?pJf`Q] 2lkWe&@^c`3kh;l+]xUր_ ^bڎߑ$3kkޛ&Vm +`y{V9L=A`+kB'R+dzѱ+ ?_];%Vv&JFʡŇ]#*l^Tq c$"r_FxFOͽh(Z=ar-@?`Vn]Pʥhr=!'nk:-Oオk|=j*> );=6۵繟}N1~B}D;:o9r#hhk]'iUzx,i$R{c翀Dīu,<|`ё]B+(=<{5h{mkk55 M:6dF6rv><{bv}:~TTwmCCcg-:_t0:Hð֮Jp}I|UB05$(X' _K/qBHBHDZG]ղIrQjʍ;mҎX٦-"۶eQU6aj]-`H=v{M[2A5=-m&G9'pK^N0PA,f.}'RJB|1VvReF@ޑWP+ 4AB4-ks+\#آv"GGDs.Ye?3wԫGWlaw'\}7}S'Vy'[}hU>Զe5  + hkc},Ėk6fEa=`z[l+vQg^gË6&VA|<ٙ (aj1+ j;^ #6O80n{)Ug +8T +:u +c-56!F8!P€>gJbWPN|^jSt*.|֗-g.Ey'Buzղ.œHuMu`21OMu2-c%M`k`Kyal<̌h=+ڜK.>;G@ fV>EjÁW u`܇}I LJV4~I$ܓώtn] %X2+MJ:WsYQHE h"$;?MO?S 2ɽ!:` u>y>\o.Ogʶ[w'=y//0b8pJ0#$ũOA۳}[EWF(j*xϿ}ϊ~Ji[:;/.<yk]v/-KYu6z2ռGӼ7gK +KX6k}Ʀ/HZ7bp{*@;>"MlKWX>^> rm)v3 }ޭd)~^]-oQIb4DR B:EmڼV}PmB~(e5̼|EJ3JVOќ;i.AIYkvAjmbݏb}8"岀R%Xgze*AzI[e=Gvwcf's1?7 +c5R.=:tOfQ5ZlFU ҆5}5.A ! +aGtq3ʩM 8^Ax*VLðl|3nel|lzgUlR˪Y<7k=G2-+sQb-_a#>ui@F5w45/\h\+FZn͙_MLuc~ơ=(]$M>ꈋae)`tt<]xe:>ăAǏ֫muJIUU +}uoGڳ>UYZ{qr )ew+WV%@00!j7WPŷl" +@5!¨Vm°ŵU6$M_cӔש`q 53baEeyjTEU]Gg]" Եb"""""""""""""""""""'Ǫ㱽o[ﯮDDDեK~w&|Ֆʝ]OV ۱,DDDbyxN5rz.묐Hι>~:ɵ6uƷ߷~8/kZδ!ߍ1:2}y(, RH;"|'C+ +my2llեAcU pElQp>w;EO@nMwf-K:%\I\8;wy¡qB{< 6I/mv85eWSᕃ)Gi2-":POsf!|DT(t"""jPҒ;޿)L4SΕ،tX1S =hյb"""""""""""""""""""$(hVqyf[5-7|6edbcc8{*X0 {khψ'f-m +N#kE 69:ܘ~0'2!dz L'6Gp7_S *V+u:ڽlUcy.ne]>B"bbA' [qKevmpBQ)c ]]<)g{5b{ !#\sS +]IJq::$ǹot ,>j5 ]lr>rTMU*nc: RrGE,M"낑΂EҨ:oL_׏zдc=V@Eù~fN}:mb :oDHP*UըkR?5*kSe@ +#* x^?>Z:C1U-RT߭vTmvǫ-v[m89(c;#souz=y4QccD{Ghֺt]:T,OÔM|k'j@%TWבE+ho}}nt2.ΰnEx5tCȠp1tG{ψVLjdR-Z $|1/WK)jz{5QGMc61JW]mg3kq~^ca6?0?/״rW}z89f5J)b +C(9-w=s5lqS*^&>e|Q6+hџ]Gl{VDl{͙t.\ˑvfGwmR%1&H;=ddEQCǿW{`}uo)NUM2 +n -s`#ˏ~]Uk +˅'҄؝ h^1/p x $76s# LN% .܃"xԌim|ԝ|pғƻρ*ziŠdfଭ؂e=n\+X`;>j0ÊXmYRvŁa#]w]B,lںs!m>'ęxS ePCu,Fױ}{425F~aɈ=ۿ>yuJEY,jFtu:e:$~"#.ʍʵ ^'\aj҂ +lL^k˧_ ^EHjHF%g5zf/VǧF%[+_PQ3뿉)#е\+ ٛ +=qzPRyX: 2 :#@x?6}kĸbYvKȟ|n&%O1/'%_Jܒ;v:6S,PVM63qfO*P&uf{/J(k=e_~ ߳yzWt}U:oM*H +,O,nӏOq :أ^`n ]K+}=Q[n""vGa3Ýg3;+9-pea%i._7z24ǣԱ\kX 3@OM>)==]XGFQ\7>݋^.e.V5iŨFy4w׍x'FKD@ֵb"""""""""""""""""""'?bZ~6zKm&? v{ c1;ǹRoHB c> -x2}TxcӲ&URnk8;`NǜxMeNWMM}BA};®lŹr*d;Sϼ|E3[33e_&ُn0[F +Ve(oO G{y>хg-JzRø([`4oG~{M]Uw^Hu"^!ن{OȟҧIW./ҷJ4t|uLM11%0/eɟU#ӹei,}z.ރPvvZ1Gmo83LK^^tv*; auL~-ӏehdg+qC]kL#uvtN =yk jc]>} 3s^CNh#7'+_K +b`mhA*&nӨu[hw% `J +nZu::ء$AǃrkJՏ}덿Ym'(|ᾇs=ÿoPh}6tze;71]UVهGq:NJc"WG1X~62q.tea 4DE0ʶ|ui=U1G;mtcLVVsU)vk,m(,(aXˏFʍvֽnIv]&ĪZ`dRH:)\1ĪnMǓ9.7gKNΪ+-[:=l[v: +yyx8}̆ `*+nFh@{u$lN~03˫{8Ng,"`Il%]!qު)kWWU:ֆC*6KRB+bkknŋ*POI<Ϭ z==ӺŰYkSY:Z,םMa^;-D.p84ĩ sӄ\/ j :=,}G/!vϸ\ :Iz6GM0\;Sê&N=~;gJ>goi'CֺM[5l+qZ$1k6&F=ȢR̫Ec2J +אk}GM}'=oe)ȱiF(k>>wLdfeFM4z׵(I #ci?1Ʃ +=%k .ͳrN\VrjpT%q/FDǸhů70ղsa綼Ns_.J/(ZE/^]Dl{'M9`f;SUYj.ʠH޼n3]QYS;++jxmoO(nԾËfjZ6T=y5Ѳ`WU*jj|PiKV:^/aZa^8Ԭz)\{ϥMMOY5۹}7SҫqڪګjCN}t}w_^;yHmY=EظX98KBjsĨnkmֺmBţ]Zp +1IVDYE\ʙ +DkdΧK9~=?/6ԍB_Q~}.S/L\sM-#k&"솾:fMkE՟)k^bzݴJc^dN9T6-gGizĎgz}:H׵b"""""""""""""""""""'FQy"|إ +:=4?HNSS[X-س oY8[TGL:G2;r?x. 9k|kϴۈX9L؝mAGu;2GI :/mzcdX0F(~Ij{nˉP~S{lZxGDl;~YS`ECHMN֯cdwJ RFa {Xp_i:LW׎#5Qԅg#)34tG=VZt_ux~\HH;IPvL9IM5|6|̕F:>FǃϹ;u=#zn}T\ +rGNC$c2rh^^|HAȏm`r(^b<'P5sO6ܕ(6g9}Nw=MWUxVXgB;zT~B ;j^sHOځ!|q|95ozqw=;M k2Qh6*u'$@[R[e\e +sVy :2ޘQ'lY;Ob&nk }×eEmbC):LWEܵ|Rwf{hjuvN'gԙҟuNμV=1[EetޏuulVZ=2 +Tx ˺7bn(bccd1~ +EHurdHoZkLk*U+֩EnX,+MW}2BVo_Y]-TCy~÷ujl_WN}]*:N/A®l Ԏ1gD96)<}^ z]触.imKy]vssdt=TbڵlX<@}I,>f.#b}_^-B +MC=b"oT\ϱ+r=:c~d;6f-ɃT{':1hה-{zX[5=(%%Vk='Q=EN#ޭoVWLGR-irY췁C3c^3bS~>Ajѐ\uTft7Q mɦᦱں_K|@gű^C=TZ=R3&L˫7u66+mMj{GA[7܆7>5g7 +2(,z0w YS]w%_/Dܾ[Mt/7)6'D`wV^+bR>tFYMy1Bmj:p$PɳTJPm6P *GoZms'=ö^[Њ%bTO6-˗=TOENAjvKmxZA[mOv3g0:=Uf59d3ۃ|ǖ~s?J>nFKm˾FΩZwd Mn=oYn8I0 +I<N +]A(;D%G_ĒA;3 +B`T6b# e({>j2XA$bNTNGLlnjigf+܁$y@F׶u 1Ҫ"ĩ$Ys}kI/~g"FivEӺ uŪ存~$;#gStꎵ=*׍|&ۙnꢬE U(5f@ О+jv7f=eoP n>FMK2fRFX*|AGN?R[k맡cXUUm2Aꧥ]3ngbolۑZ;ICᾉ+{CդYYcaiWdUl$+#u:\$^,G&ZSݸ&b" ҵb"""""""""""""""""""$OQrz_m򫍜Vַֹl}J4Im6ȕSTS\q.=auǑ]wtX=OʷCБ AMLolĺU3$1{~*&Esfϲ7O~;^kے1(:# +5C^DG8k[-q˃@Ȁ{[_v|>f6j_zz:pRH쁭2ZGtz#6| ^0`J:Fc[iJlKUp2az.lm=Kf!@t;I46YUvX]F_Lv\g*ʯ*"_oֶyiaW; XA bQ'1E"Cjo亱 kj5.{-BR@hbᄦkcV vyo^;L 2,ƹ췇P#-F*05wT[mB 鲏%?1f3qum;G2mX6>bdߔ[dVaW AvNїV%Xߪr A +܉ן#q #'!2./@ Vb=#N"-eL}l̥7>JBDGs=ZrKnP絯h|$:g}XMUUb;C}x ;՝~ 1g`vHО7cKYg,r Wl : gɕS&MkݛZzo'=t{9˄PAA'^OߛY-" 7$.tI*ЫG a_$3:eڹM[ !VR@:#OzoH5k-eG4,Bq7[k DPع!# #v8+Z3P91 lϼ*fFղ]rWtA =J/ֵ,ެ[6l>j}bekhBpRvB}lI2"Zqٙ7&Asfd6M6a/Xra] qo=85S.U; X0bK|I_USd(ejʺ䣊<; OduR(8 p''ںUt[ARnR-BĜb[=ROa|٘hmR%([r㺵,P:Kl.WRn.⧨VG}l{WAM3Se »+#M2>;hͬ<%v]ݹ;17/Vk[u!}~ 'KQZA=읚$fM۞=B(PF/It*ˇ.%/YtI+1Ĭ^ǩvUk4~Boȃu[]ŭf۫$HoNa9OWct5CtbW5T<Ȉӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""yDDDD@Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ׵b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +endstream endobj 110 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 37/Tabs/S/Type/Page>> endobj 111 0 obj <>stream +HWi#G+^PufV%56e1g߼3"ƴ$eEŋ_}x_ӛӲߗ˟ tz%Jc*7%X~_܏*B&^xYV$5)dRkبI6FSIVRtD?EI3rnN+FWlhӏߧRmeoZLToQ2w|u6h$]-XgSo)Y7s˫|u6ЄL+f =MÙعyME=*_M#%W +a狢s:_AMRMLfj&ۍpyrvӔl7Omz̴|ĊqLLMnH RHeޜ~8/̶tN{9Ym5_>eGbyymLqw<ȒtW|`YH<1vOv2A#Djg}RI*pI9( H=f+!&dVظBdUF6ֽ817_9NXrd%hȆ#Vm'ḱ>)zB$𒒦f ܊sf! +lfTN +.#vb7ey~qy||7 ߖΝ/tG|p 8K Hw̅BsO,~"C /!=vZdƝ<>:l',d[_vo3i` Tx[4aŒr4ro-=Y09<+w +C]`XB8 +<+A #'ߚ)|5 @Q@(. 1Ckt3^ Pwu=YbjH>=$C?>/6G<߮KԇW4R`S3uI0Y~LbF%@PjNEbVKeNDmJ*UXmdjoUr,5h:Fh݁=uE}Db_Ξ2cq~7{OrYO ЧX7n^05hڈD]"XJ'E$(A~5rH޴P&Tjе+I"`+ ;">9m<CYG,p^9~F~U7ʔɗSzr߱EEg6<$43n?Cnl=  T,D QYȝLjƄf3>yxHF2noHcxz#ඩ>:pk,a3U0^%K{[\ =~g9i2,9-+;TmhG*&P#Wi8N::X3Մ +ר+Z$'82HbjdԂi5`L#$8&}@Ib骝QLFlVV†ZFjT+˶ 0Vce6ԩB߯Ct4yd k |UC)0# Hx.nKե୐˯rfgR %! e͐hHC>/_)2aYN.W8K5q7] xu>MX%>jw͋ǮOzʩΓ}I_@¹'ڃOYr֎B t2$2>RgIJDbNҳDbk21ioEQH0u'cM9wm :"u_2 &@\^>X8P~Ә'vbˁū'^s ʶێҷb۪gBI%Kr1:8]LbSᴖ`BełC]0wP}^l䱠:4*>OҜ"KI)4Q`^H [X&]YJi]Q^}4>KJP~}m5!7-3)jT +O&>nͼwj'=9[42Vg@rly(lwqdAP漰Snfd x>-sKtU;[On5. Cz*ΐ9.S;˓8Qe t_o`n~ 0{EBoJ7tqCyװc\s}FTdϋxԇ#W},d27Gw% +eXjQƴ-'n- h'@R_^Sը'ADqNdG iYm";E-’(www٭ѐ ·"͋2J"jTa2 - >٨Hn.e56.cG웠Z3?!S7gAޤU]m6NP{(:\L_*A<24IZ`t4Gej\am(9z(A|i"<ӹW>TJ~6 +WǓfl+5?DbdlBe_YRAw#Ͼŷј/=BQmN fnpմu + @APOŢx51B&J.+PC5X./EFwp[@,3-y +gn_/[Ԁ}yPxoVePQJG+Z˲Ь܌nZN(5k@S}/p;9K}HRydgxFTˌC<?Y >LpSd M#cE6ha + \t.A  sM4a{!)VՈƒ /< EiOdj?Y߬@[nԵI[{5wee5 -.+Fg-. S##Rop"BTN^A h\*ȴ|;0 쉪Q'wv])8sr%/C/[,=6|]Zl +H!0\ƷrfyC~xG;sŮxl3,D"=2G|V1XnTzt< o޾}vۇuPb{ġH*";4@ C"sьړQ+JCɫ~vCۻfhEsv1 9p;I vSbgH$.Fҩ '~QZp*v4n閙7\ Ե7iU#Y[{QYөZYrAMGGf<,8PhZe͹tL96I2!]Ǫ͡.Z5O^͔>l")(WEtKc|sY"cq"'2igWUf"z xnZ6,]_+J!MKXl +xC%_<:bij;gPz:.LDXr +j +)/$Ãzyjao.#x'-cXᩡgUo(M[9' H?1آYQfbm<`&D\ւ8*` M>H9*KQ"!UAsbXϜ֎uUfu(,^CJm_ˏ_xsx||xoo_~{麺F=8Z(͢NbUu1}x.{ }* +endstream endobj 112 0 obj <>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  U!1AQ"a2q#T35BRUbt$SrCcd +%&'()*46789Eu:DFGHIJVWXYZefghijsvwxyz?괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRb7괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR+M괥A$hBC-AH )b{w43iMʡǎwH6429)?֟hY"I9$jYꭧbCOq/N%$ gls@$󨚂jeN.]TDv8$i.%ۛ!0,n4C!eKdmǮ{b",Pp;+'vHFe*{dQ-5[5z]빎 J7,*up_,BHzw<7SB0;I%<, e~{+l2*,P ~y *PA=~6:`6۲)E*N#b0U}.#O"Ÿ u!3un^|5+\VbbFOTFq}ne SMlcnGnݜgs*Y)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)J|괥WYM%+ʩVg rp2p;'']],Y%[&%`Ǔ#>h=ߪwǵ@R H ;q}x +5&{ >EJ43C=[YeRp;zfˮʥ,yƮ qJOt)|J742F@=`H9n`]&cU5PY]W# + $g>ls uE=>sp+0^iIjhTwa.?kL:JJhH]1HHlnVF6VC.Cwf$^@Mxt}ZM Sp +ޫN1j-5lm3ƲÕ,@S1VcѡwwTLKaЪxS7Pki-n\!Q +>̶wL.챉cOhiRՏ%^ 'iP r#ϵ{QڳJR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥+\vX*9bOz cRV5RH⾫j>g򅴖 `t38|Y)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JV+괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRb괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR`ֽ괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRb3@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR`֭ƀ괥)JR)JR)JR)JR)JRGX]`( $dJ⪦5w} Re}-g =HBB, nPz+ejAU$T^~"Ҕ)Q/(3;acw'y'IR@]3q,dsU:@ۑ*k[V;}AY\+ 22"RdsY*Rvq +DnI8ϊC 0~*=o*QKW5>omqVItVFH d9E[Mu%b&DP8 #Q7R ۉ!zŋ*զFA<_vyy.nm"8ݞ|qZ4 kQn4Uy۔BVO -B.^6s*@8}G9m[AN$;ᑂp0kYnf[xKM +0WY[$d2$WO>qwy-`T2"*T +rH15 W2J[;Es!s3R ԧiwH*oBX9kiߡK&b&b$3m>^u=ֻg-'to4Gg8Y SW d-y\x;ZkU۪HbY%`12 N+ฉeCԉ\$L!\en"?f6XFwV#v0]k?-bkiÈ 7 ;sluKQbd(`FWxPYݰR3pb}ﲭ-4Mh+* F}K{gTYURVēbp sWmjvǝƮ8? ^}"4RONH1jx#+\+ Dkѷ ĕf d=Oq]AAB : ϵ+#xσyk'G? U5}(.4Hw)AID#t۰AjǦڥY&^kS5pKoƈgݺM9\21}|~.\԰\%R*Al+e(m> D%FL78V$;zKmFl/,p35G=#)xш$eݖ9`x#hTKy.]T;2& IF*Zx<4_}$4C9jq\iR[ iEܻ$obrg.xUgEx6>wg摆?EJ\=cμz>,Gh!m ί QUz-#M(=<0Ǿ}ڝXk2dR]zKy|W$X[(`6C縭MZu5Ś8:}F$p@<~EӬ]2]4k֌'fUHn:V q :=}7UXc9{ [Y ]G\1lw>m,篴5kZ(%9 +GaZtx ^p[x ,vX,nWBlyI派< ,pA=T}"QԮ'_G$O@>~o曧iu +BAYA×:myܴq&u6v( q8ՔtXoK~ |Mk-o$w2FDw8½ PΕ\^C+T:Q&F?|$lm? +K]\\X*K#X4e0y$Zlơm}2cN1R [i ; :]։$#Nrb TDzŽKtih3;# q5IrYlfK+DE +_c9I# }oMw +${eq~ʏ'.) |r}:}_j&ZD@y`tR{d3QamBH'ya`^(87!*BX`No*е ZiDmfE JAݎ?n5 KEĶn{lRn;+@3Zѥh7Z_YʱD7ڪ8#בVwʐTU07RN~wJRkV괥)JR)JR)JR)JR)JRSfiPjZ@;]sBM Iz{]`d 8}cRbfViJfSfR+4)J+4)JV1LVkV+5)J+4+)b)YbJV1LVk+4bXf)X5괥)JR)JR)JR)JR)JR\8S>+qG^cÓ_kvO$bW`V6(܇,xo%3]s+ʋ*tT1aE[#Eν2>Uֹbss.s1 $G#V }gԍ]$gdp;A>NOM _w +G|շ1G8'zCj3H֒=2by]GuKhг<(=T2OS +DCSw<ζۆ0r0sھ45J*]IQtBn%w3nuoP0=*rjz.Ewq +g +H)Tԯm!rq xʮӶ'bpFTgڽ 7pܩhWJ`29QH#GVIzJJu9#<[DGMWvF0Nr1ƾ-o ]H.q8ϦTL;_^lTK"!s ʥꭥ8xGhԲr}@THx(f;y SCjD@N dKP2X5QIU]J`^;8sLnc쭴)Z괥)JR)JR)JR)JR)JR36{E%<"l(;듚+W&[dEm;2@ gbXΫ4Y4Cp7+ڻN}=*NFhVVQ3 2++Ayf%UF=Uʃt*`Z])Ηª;c׶UȒ]"zŬd*dt9cA&,0?B@ Ҧ/n$O3_zV +TfE9.NN3UBi"XSh`6Bn[v^aW>% ģj@ +47u}q`-g43IUhF0@#jD9mYQc0 Ux8*@_}N+GՍ0 ݰ#^+e 4]"rfp@O y9 b "hm+V;T.q3_:}tS;CGvirqdsU:|=B]#RDBY@ޕ[9t-5Ley?:Mj(Z0Bb0HTHp=Fq\vxC pFQ ;ST8ȭ> +d#eM$yB"mDگ+2 +XMIJZ"۩'Umb{`5:j69ؘۀάg#kri[6cj*_̩rrvɓ*CI–ΕPѷrqkE%1&M| ӭmn-B]P |ő&a(,w6P;ᔜʾdm]V O;K} V>=wLN`Y]ʃ􂌞֥}mq琙e7tثA>90w{U3,ePxRH7M/ Nb^o~+:fن劷⺽LH;l;w?Mz; ,Eg@F*@H5Ih4]A+uke2) Gʢx4E[H4eSnBe8ֶ[{\A&m +Ƌ +kˍR̮Xϙ>k[ +-ĐVv(f!q^E}6FFǧΊ + <_:vgI4Ak=$0KIRlqG1vN<jYVJ[~NXaG<[j1iri l6,ǻn'>|1AjW[>―bd;k5cQY݄B& vx'< Ayiu,3ž*ź[#1w5-psmL֭"2+nSv\m8VCʚ-p6!mHːr )J|괥)JR)JR)JR)JR)JR:5H̀Gb#_7: f).T k6>XTr1ֵ:ʗ + R}"8cǖSV)V qaim 9%ѝ78k--$W &1!界yE%lϽʖZ CɝK:bG>u)Tʍ& 啊c[R'ЭgQ7xFأXQQUP`8 +&d9S֨hx`qbIƵ趖n$~U,!P{ͷ? +GU/A%=-Oj>isP-]]"RȄv*J<*Ơh҉B$ z;sҾTJxf  ;[{{ nyB9* !SO5 +EӤy`k?;䚔`Fe* ( 6=23$k*``AA*-o)X +0Y +n' +3Vt+KwWD#i&畏;AWK+$a$`}}ʾ +d#;H=r{֩9XAI4$3s[tmd2܀d* 'h8\U0 px9[-83nD9ݞ|ΰl`L팻9o//O,WԾh.$#c,\n>y皫N{r{mHʹqG&tn司aqWm8Fweq۾qlq>d>uA1z{ <,]X8b3 'm4}P']I(IVVde$`ᐃ|OtG +A 2pGq_6}D[qdj {elR>@@=|M[xdL3}FpCpn*evQUQSZ5&VUKޠ)f A=+lQO EJ[#j$Za8dd=I\+ 2oZ::=?դwDoH Vˍc9 CF3Z_yv,c2y<'vo-[yB}ܥ~kGn!C +2y%$O$&MdGLYL) +vl22kM.`JՒe2T܅dox,93 }$†dH Ozm`^>U|r䝧<$] "ICpXyxSjk;;]Ƿ \qI?i:%]=UN\@r\ssi0 ufw`F-9F[#{8QWF]8% @YĊ"]O[e.HnpAdbI<:V ,H!PS+]\C5'q~Ɗc9 3̶K)iC[I_x/cL6mh#88OځQm;[]z(;v 19WW\y;i @۹UW͖&i4$OԌ7<8T]`na2Km!Bm8vq^xX,㷅fKc6%V]fQx,.XhfxAT^2sQ]j`2Yt ; cΤd51G$bR NsZn|NR/ჩnCQ&'˚oyu$qD3u>s`yyz-o{д) ++7pcv}**vӣՍm]wl̠ NHgx YԢzvyEQ]S'0U{8FHjIj[UȬ\``Iu}b{m,cFxU #2FTA%օ0Hn o`HU# 8o|sZnS\Yʁgcf +KF %YXqAȨ#HkYUis2DeW=[UZd2Hrg 5n2#BU9lm?NV[m-2ТHNJ[#S%6rQrCڼߏ%>TpI +o)ddHV$lp\Z6(C[ %x׼q"@'$zV}cǦXjH#@>u#jo߼@(p+AP׵If4>x=\̺}@m!mRcn|s#;.ۉЉX9qW4bYI#%r88UɫOs<iA"!GmO'50b{~F* qv;@ZgDw5il$Պ +@>U ^j0̯c:ovkcqzo(#,fGT _S4w*tܴlyA#9{ԻK֚4)"YaEܫkJR)JV+Vh괥)JR)JR)JR)JR)JRTfq!`N 3*)Cw!`9`d#c+˼m wVE $!w gҶo.KŴ@Mf( m go+2\zם i$R(r[!>aէQPylv̂4LKGuxy֝3M,,aw)RraT#5l/Ьi{@aq݌_Z A\pq8$fmq&M6exvK3.y ӠXi^$ /=VR$T`w/}sk;{V+2tBۼ۸;vkuwe{B`!q4LH$V UsI vqڮwmVSنT6=G5n4),Cqm,+l 8ǧjm1LD>5IvIxO}M[W3*ڣ{^Fŷc) !P;xH24{@`C9i^Z\FH߈\+ Oc\9.a=5efc>g\[i% \X&׋rG|082yqR֣i{$2AoQE}-P;5" f[G ,k<6{>9^Mҭ#jW*0TkŖ%-+-ݼE,GͅkW IY&26@;O"߇-oԷxʥ|KӒsH+EK9u9% nLKL|*72i42Z +; +r+F[hlc>$|Wm; dq^2NGq9ID9T݌y༺L1YJ+&f0PF#Uu{u >I0-&͊y*N qQqi}}d``;zHǺ9 TBH(U$%'kIM9XJ! ;:ϖMy7=Α 퉒@^݊}yVrF{ߧ it&L1Ic5JⴾM>kDAp +{9 Wt3}YSrS)JR)XT괥)JR)JR)JR)JR)JRcҠD:F]^=kV%ijQBWf+)Yb]{\OM$}JҢKh taC1}>a@1rnow槁LVkfbұYb)bX)LViJfcұb)+\%o+`>Mb +n!PaPp=ɩՌRJfYVk)c1LSf)JRV괥)JR)JR)JR)JR)JR+PH8 1p57Y6 ߰'C[Vs|lwڨ& ywڬEf)JRu]c-fYHw\+9 VT)JR[%Kn&dd:]*pp}EXj&l.:ܬj] p5):`F_T)Znxcf7 FYʛ2m,!I7)_f{gJR)Jj1 YEhdl8^iJR)Zmy8Uf88'w xC U{dEo+\s\e`>%l3´0P=v@ZY<7l/i>lmf +6#i9Ʒ Zuזphd3a ^`۠_]ϨE;] +vsWޛ6_BabD1۲07c  uI?ZtV&sApOqW: fYQ;GXp jksk j"`KFq9Z4fMʫzo U 4HʯpoOBS! +++Ve:uA035Z{Bׯ-V%{u.Nv8W`VwS}񍒽[Ʌʬlaڬ5Դ6ڕ%y"nUspI 1_}koa=iut i=}8W:mܗfx6}{#1_>#bɼ q9 Wo"duNWcv~kqusq#H +8(*-p5gU~&MAB+= +եO'h1AE@ᙋsᴼm fYrM'TCRm{^N6l4ba!MJkSY(Qd(Fqjyj[!0Fdxhvw(Hcg3)EHMME:A3؄rWn;yYmĎ#*>OFĬ*9{$kJV#vL<ϦxriR0eKKh\>Pr +<77a[ WX9s%r[x@>хM+M3@0XMDɦF}nI dY(H#J㊴E:%c0#X*,NyiK$B`P1ZZgʝmDl6࿢,q[/Ko4%E[-dM09H8:;n^P=AIp>mƙIsl7N{g=5WWV i"q;B@_x< ;ˈ56擪=gW*Q qWUuMFx&#ۢw4.t|>kQñc HބU*s9kZ!iI`\ Mt'#5-ܺr~"^MC|MmoK:Gx"I"` ml)S*>:-^h&Ŧ5p*r||WиƜ5^gu;lۿm6{bEdP(0ELMIy]FF%2rwc=ḵDdtbLe+g=}֧Mh1cbb&HHT2-JO^3+U}J=8kIq,e`$E#2|Eʾgu-c=ӂTDlA9mSyVY77)vsӣ|/nDL"*Wg +GҡJIs d֓q+܍Y̑6ͭhbg{cm/EӮ5 u":99?&l,t$Vr=0 v +"F^ f N0骗SѮfYQYMwD < | ye<2FYvfWPpcOzAhjpD=wp<_V:^g vB 1\7lSsww׌Sh 6Ubh_=9J +AVOHl.-5{1tpXgcC#snߚn.d;EuTdf$:#!0U_4' 2+GjB{$iz08}|u#7Gfߍv3j?wcsy$ ܁Ԍm +UB2A#״? pR"ڪ $>8.v8Zn"Ŧ("8'u$ħzm ҆v cisS$mwrI!(6N2N|ɭ6Ri$Uv&ݼ5K,ʝf ٍ8J<u\M$$|yJRZP괥)JR)JR)JR)JR)JRY)JR)J% +:R0A=5 8* +)JR)JRR3f{hϮqRj@ 8zW)XjkXUP@mpz +f)Zn"2+2+dqJ@W+hcCX`AiNs$P,Ǧ{Ҕ)JV+4)JR]~."I8Ϯ5(T`0TuҭhD%z~Oj])JR)JuŬAnݰg>MXҔ)J@괥)JR)JR)JR)JR)JRϋ58ะG-B,Df H,Gft˛;7[M"BwdnRbխg1K!8+>U?ij%1xV( ͌)Ru43` +{*}B7jmQmR <ӵ[v@F%2JWpA93D7x>g^M J#xܮ7%$K)i#8hbF0Ć=րbL5ciZ^э1dxܮ7*͞g4'*ymmH{ipq߽W^]ڡgims_7q5"y-ë]ݰFhNrUYpŀ91qAl2rO VSbJ0WVVGRF@*s_wgp=I$$ +ee pc8>4{oܻHJwCe1{n6s0)sPuy4+8d]xcFX̠#'*MJaKm6K$Y`w6;+ 5ہ9$BC*TKi2XMpein#Xɸğ!Vz}ҢVomJȬvmdxV^/L_2kVqt7L\cylc'< _^ M0I6 +Cdp6 uZϧIF9w擂89:W`X]Gۜڀ>& hKX`>>V?VC@UUwCd@rň$*+H;TZY=UDh̬Ǎ +yݞ1k?T`b]ά6pp@V%ӯ4 ۸;Ήqrxnv[-u;DQIl%YQc&\F +dmmm s;KXIT@;*xMXܠIlM9|ԟzXÔϼ6(l;YQkj¼5YĆ䤰/QUdNên1Rt%BJ c$sVWڭ-; yqT 2^%F ʹ4{#/.n"HAa4NHb2>6ǐ9Zr?EVw w;PVz oÆ#'ϻ`Z(˝( + 8 RMTv$NdOCT2Yc qZu};OYD逾2JxoS[_Πvʩb^R,- W +c5˅2 +唯'p /4inmetxܮr;{Uo,6ݪsSV[Wv|k7дHezTENq~DgHFg5WgiVRW8ܻܿ_Z)e\n³*gPBVR+F@UiP1YN{Pn9kwLʎC**mp[k$d"ڋpqwlJ Hv8m̽ Kr0ٴ۳g5SԃvӆYy>Y*b(괥)JR)JR)JR)JR)JR.d7SRSQ;}GӊVv0lMlq@?*_ߑzN1Xޙ,B{m$dSkjzEGYݦ#9'U2{ghԝh4dTEy{c#<)yϺHCm'I$u(Y@jy=WޞCK yOWi|{oV$&^~x^2x?'9ݯSin +vDUKӃ!gzKKD+2x_hp9 ~fծ7fRc*6 AW60o!4+7r78U~ʺ֏l>!Pb_ywto#F;UHt:㨰FVMjZP@  +VѤNA  XN +Z-d_-֍s$y'VXGۏTbq6em<34FڹOT ]}KTYױows0 =;RozլPAmxioH |Q8o0AKM<uNWRMF.2pN}5gkF!eo$VmtDɶ~Y  dž{udbҡJcKsБp܄Ыpp}8v.o-:o$M "++A8e;itr:[sJb"/}g~]c2vw50m*!M9=^kZÚKa#cE[kommkyc V=|TA}53#gDR̻A# Uر7<3صwq /ers[f '1dsh>ݍWO:IG21.3|wSFfLHVӯ齿k|H6E +8N]sUAtй6cE c`A֍WOmn6`nip{q^8R2̪eqw8M^^j-[]0;D%CZ <Ѣ9ʜr@ jibS""D<ł/ `Uawx$C>N3{hEknZhY?Zoj=lhm9oéY#]wC\K?;ڨ54Ht--^?N;L!5Mdѣy) MWF#D3 DBKS\z4V:tR *}KoPD4QeLee +̼ ATm&KmJ[K֎s"\,b'+($pI XՏ"SЫ ml銕K?"Ჾ߬϶}qЏWzV(G86u|g_a0 jq1Ϝ3P[?0 `NGO=Kydn}jFq^~ş^gT>=v{&/Gl@rTj9n6FX$pP|*Uq5'̃svKcZӧ{7L.%k{ qY1ߴw1ΑJFP`s5Nx_Wuu!W}c"Jt+Wcvn,)~h\K6y<Ս K=B|`2I {)JQ괥)JR)JR)JR)JR)JR^鶺$ =Z]k𣪏t2.3ڵG:ZĥP.W}ħO٢ٻvΚca#l_;ROs>gɠ$QLf xUN֌6ӕ<>8>cξmK)X`eP;\Zv&Eu8`dvcU6]T8¾KD'ܠ˃[aaFT}Vnf"Am8;}5 HC hVѼQƫ!R/>b#4}2m7ch3*ʋ\ϻVåZ\ǿTwZYǹH~8{>ku,kȥ UuW)!lѱ8${;m$UGF.-COua~j4%$ m *1_M<;[dM\,{`#Q4?=۱ck2+2nCõ`hP{^vnxfIӉ0rq,IõjAG U%3'n8䵉!@B@85)>]XZ`ɖDR8=qno@ndH%bdFu,Ǽ52TKTUhmX+ 鑃Vu{]EI$DWZ]i`p@>|EKWV+!` @S#/P(|{s>x5Iϝ[^/%h DەFa!xU":)fX|Trev#rSw.;ۥ#P}Y'5gZDJaDMM!f d97OIP!cGܹld9:hGH:w=rVW 4` L6vHdY x2*.9*I%g;cR qzΕy=q2q ")Pۗ$ 9ھ5]JYR"2e'8pEm"ICGu%8ldr>"|71\43#;._7ݡ=E 9*@@eR Dl:c9WQfGXzHFYIm\qd>d_ɦI۞FFH`9#>/Nԧ12xI28,ϕ[U$%!$/R A^r֣k;آ^,Rb (s@a.~>W{[Duܿ; /9 +O*|c-0HH g,H_7v0ZQʧP:p=qWe #9yz{ߕ-Xd|I@믟2*U67YUߚ!5mrus$Hsl+nv=s]ing5GU'r<7ZR^#`c.͵S'!sxD#$n>ed6|_/2ZAkjc `9>U%uH%fY#y$Snߝ{"rgі]p0x #3[kl&e|g1x$!b{`gχ_dղV䕆)RHGWl +Ik]{P8#G0.[HTu8]T^Oi"0Fdq_Ze,2M|-;@Mn1%ʴg +݈i3t|*+DŠ<`&tB;(I8=O Y h#y'g9(m=g#8YJ W?U>)-bcbY8m}oy>ct{%W&D ࠐ2soťj qHXD`@akEKȯynmWRǩ_DO#zgۈ(!\dd澴[k$Ml﷍F<)lgE,o.kW vȻH݁$wsf]hڌ-Af{]]y*I ߜqV:ƩcucfZE Уn93YM/'tYHu]s #5!5N| 鞬fjzZnu/R 1J9'9+t֗t "E em}w^洋; ۽6upX 7V]iv'uyX 9TLΊ̻I8>c#_?ϭ_~0WG9׌ZXۋKxq"RqU^YOZ{#ܟR3ߐAD[D#9NAƍ( ! 6^ps%Wܞ8AM}^Kx~}IZ]3\N?q@57@xOԭGa%>a1;{UhoV;+X항XdU}S A:Ѧ}k]X]cvܤ1%BAn85;]_U8ʈ"yy7aWyxQUX rIRF1~2F*Tdp3L[skY0@R9F_4 8dڨAo?4Su{g" #;ʜնr4"cuǁ \zsUѵk46>Nh08V =*ټK 3JO?xBh.W 6pXdVpڞ /by9T[}7PY &BfF\;8l1Z4]CIi:Ҽ/D +$b\1'#쯻? +G&+2ZF\ԑ탌}hɦo8i̽S` >ѧXZ D^5U7?{1^7;c+uA w_C1¯Z+tȣ,@*8>Z5B = bYazaX~'皗5ԚwB._p^IDblRcFr"Rŗ3OeQ846H"ܖ=YJrO9evw}K'~ݹ?]F.W.VFޯ,\=i7~-_2v2) g}i[c:tI:\@fRy,yޙ}+ U8r8[ORٕ6,s\y&<i!U7 $'9s#wjg^C{]vInm Yz̉\ :{{AmB{oLi o1P_Q ܑPگ-wr!'g0n8`p=BWC[vK61fOrjs>ӭ.\qLZpbvydF\q_:VﴄL(X.TA$ d5mww3A]ޥbD@Xw,9\֩tIV29G4I$r\5=5#q6EvBˀ>c X$% +T +m)Xk s"eXS⾌(SaQہTa`r W_#ǥIh[NHCnj~lxc + blL5AP[+4+)b|;57+4+n괥)JR)JR)JR)JR)JR.㽂!q +L#`#fXRAXޏhvOWYDhܩ {}aq찋;I%I7$0W:zsP0zp G8⭢KG"UU5Ky$ala7g޹qgmUKP2I =I5[Tzp3e/ C +ʅ@W9[c"&A#s*kh2IEs'Prj'oHkFc`#R#+8Q vsYT~$Ѻ H$@NѓPtf;O| +?B$d5*9SVӫ=ƞ,Q7Vڥ48$U 7J^) V F{W.n5KΘ) C ;ZxAu.1kiK)u@$nxX.#$zҵF٣iє\pc[89eOb b#gdI{`HP/Aka{ ƅس [Yh-eng]9^mvq>kJ[_ʒ 6 *EWI8Rx="8 _5hicRlR 6pxVTt]gR$߈m@O wʏ} qnEb$kMoTsA?e>ws*^Ic^8ZR~,[}5mkP#x2JkW*qʰ4$n]CskΣhyw($e!ch=HKG\RZ5$22X+B{2eA||m~}_{ש?79Q42FkkH2p2@|Gw Ѥ̟9Cr>JUETk76wk9 -ІHLn䌂 +YU`J$yAiaL"W##?e`̊pX| 022*7Cm=?m`]dQ?VREb #|}orJ퍪Ϊ'kcJ<_0\tuu2g#5jwaaxv&U#I!SāפHY )%cM1`F6]cN;!mw EuV >[iJVj괥)JR)JR)JR)JR)JRj7X~G~^c¬* tfd>PM}x"}EbNtެOb>MN]j4n2kGQ_v4Uge +[" yAZ'R_򆠌#qn R-hEbX]4'Km<1h 68<UƱG$6{Os=kWɢjqI66h~>תZ"e\1VBrp 翝n,r*[Ks8ǕWD.H퀕$RRA2HAX<WX\H Ax(afE@oߏp*Cw|*Z]!@`b' wy[RFtv"]lmcxQ -m4ex-V !CN~3U%Bc#G0 _:ŤZ{hEi8hp'v9-u} tU5PE}55Y[ʧ)$埅\(, +DSR`@ cU"l0E%jdX=P`{gl0&YMwn"GdxmgVFr{WߏcI4K(%ee$g#ZWe 档6nʈU$ :IfDPdL GETZC:V5j%"(pa*f N'p6 9'D4tۂC6cʐ{$6gZT MF>|1k{X~!WhY%¶Ĩ$_Z|KXcrr0-;wB+$h/-0I{ /?Iͽe*䃀CacF#` + vx" =dURmr| A%-^'Jp5km^4DHlcݼIa8 Ψu[\r>񩹵NѢX+W4Q/B< P6.kxV;m6جh'KԄ+Kc<5_iךΐqos4 " OOZҚP-&$+ +s h!XmA쏴p68Yt@$j8:7> Ӌ?d=t >u7Z\:[b~v+fX^h2@X'iU»I1i;H<ڶr%P{06c}ҧ?MPL ׆5w$7s%>!VuZ%-Xp(!SX!]VV7Qt Iu!] w. +o'dRyEIh?#*[Kqe>MiܦjeXTrۧ+>&=J(+hVFa% +HX;Vuh5+ӹ m zoZ E2D6ĒO*6akh4pI#Wb&}_ +4{ ;xW= I@ 2 mA<0N/YL+w-"YX{Y@RL/9$;薱$Ѻۆ ڟn4/jvQgrqTxԠdy#̜'/D6:=cj $;}.Ǚ'5*oKX#XCzUPqU:E޳7;IwrRC2mrR6\n;.n\vdI}TpjIE5PYɱx]稥 ++W͜j:؉/$!J5 ArYkҺ,U FAEx.ۯ1ʑ7ʗ" '+guh*Y-Ͻ5/(-:yw%0r;=jM +;t#YٰF +v8|C }8Bu@ ;v gӿ=|oن _5xsOע\1c&e7HI~{o9d[/t{mACF+on YIZ&sDgWNHvpcrr+modD [<To'zE1"|ϢZ]xif.+cWǽ|i l2dI!^?c lr2BVn +ل s,:ѭu I -Pow4;1t/:_~'v=h6(2)YKo`;l֤𾜑9_wsymHѭo5 z3F8#;މi}=06r˳#isg M # 2 ԐG*ARJ +F1Jg6 mbi:XTbY q@<YCtQ#Џ"+M/%Bwi I=Z|?cJ[;g9rrNO4k[k<;=[\&'l%2g,Au غ) +.i5^gYO%O݋};GGն āT`#{*qu,e Ԑ0sY-.d2%;X<ʑhvpAGS3~ߞl3IT$q|7:)o,*bB +l}k}y"mw,{wp}}Gi'VT;ܒ5wkQ|ʥX Eh>lIMcF8zk*{’@,gpr1;.gTpH(+ sxn{is;G$3ڦҔ@괥)JR)JR)JR)JR)JRcf)Zwꋐ2(8'ֶwҔ)JTyoxP͂[FjE)JR)JR+Uvq<ҝY MD]K& +&#֨.bY 1[iXF(d YT +tڣI+Efb@$:ȡ 5JR)JT{[{o mmqS+6=XZI= g~M(8^ݤdS*o0?eWɫ5ܶ * QePaX#1ZqF]n2>{ G9zk6W*7K[1ȹ*H=]ؐ-u3 Ykĉa㺸E^lkNEeic2 XnL1 +kIjʷtc%F1Nx}^Wk) / 7 #vAZmC,2|bΐFԍ *Tl9οɢIt40YX+%MIiq=$P9xk7:RK(VHs9S)N& O_G֗dh'pWFw2CsLՍodђ'VW 81+߱"3[I4 Y2ҩϋ;H5 mm1!Kvc->u:-bT$h{v֫rMɶ.&6sn=HCĦ *Kue:$}ܟxCStb,^6vm;w9'S^,}Ae߰pyTE7v[]vMq&snynEq"!gFa ݸ'[p`gYsovAXU'oXIa2@ʭqͮ˄h3q`0C^r]6c?&yK~k[~eU#Ymf"hnnU r e޴E$S6-G}`G W51{y{-MjǑ!8mg5ݮ \p)ǕOaմ{ꢉX=&!RG}yZ$jUrF>5eeu$A,f6I6ܬ0e>?MEK3F_b*s6Nlwr d#y` Swʤ%!*mNsA']\( !3abHȭϬ=YB8^i6n}`pjfūڥ$p{AO#]r%}~};{cm{ qq TA"8$8q}n/6 9@sG#*LUJH{P~ ~5t˫=a-7BĻ;@bXӎ՚)toY&]ۜ>kVutnAnW#5NZ3ΤUp@ci ۛ^h;>` LCzC*l "}YXJ*d[<.,ݷ +|[M5h: +]wO^aFY^`ypOzs iSF1@XEPBHm$`yV>O(`ʃB/Y j[{m!ud)`7loupvUQں@$=krKIAV$_]N>(G3bVcdef#zYXY[<@AT][Y}2`28\2o{#ҖC3^0W3T綋R[-F!sN=pBl9Z{-.J, 269ᚌ5l{ *ǷqG}Yf%Dn;n8wyy;Z7r΂9$![zr@!S9kJRZ괥)JR)JR)JR)JR)JR#[=IɚBqdX*O&Fy?lzӤMqy%3l9<9>Fln 0(AWd2󍥝ʩeLOMmo/047rb]쯷k.s}7E99F*v,1|+(ԵH{iQCdy +g5LJ#PMxȞ3 Xk i-}r@d+pH8@5}Qt]ۤ*T6H}5^3iҹI/7\dy9_qo!Y4]Own?m|wCu[_؋yIxYGޘK\e yk]u :E@pdTb0Hl ;sS֩iyxR:wy>UIy͒]rj1{;]K,$s lXcTS9 +6Ѥc*$ߏ͕he%HhBTN>w=B)մ qpʪA{:~#ۄ9 +sKѴ_EEAw${Otp#HG5Mw][,eWh VWNZx +sH mU4^?&>qY;9.>٤8Y ě\+N9 zWS^Fڄ/-yN[ޫppkVm}G{odFJ +DzHp ``‚Ln=a\n6s_]jXȶDeG[A'8b8'^gBe2]ʈUwp}y-g{7 Ťq1;&Ff'v0@̚PK֍_k.a"y?\Ԛ~Ysǯ=b&[kYV9-_h#yoKԒk2pYJ%Ni+IP* FEYxf"0%X:%bdE7I nNq_OaC$S[,Rt(őAAnZQVDCsQT>yɏ9Ơ[Zi+ 9-;˸'8ۜ&.g{]Cx&HX 2U2 wsuVf;UFTrFAz]*.A 刍0N32G'uU&cp{{k_,zѴIТXymL=<誾@nŮk)V33}󖍱vbx޽V°~fڹ9 Ωtsqk{%$$,d |VZjC,LGv/+tʓv9klsZjY[c]Y~li9ϙZu&=%KGDBFߊι^q0eoYA s*E1#Al )+c$p翖*VY5"oa[1n%Y]SI{׃Ֆ[c $!nTsGzMMA1!\2Gm֍F-f٭f$,_#`s. d35ʞ4s|mm.o +I6*Gg9+yU)LS1Yb)bXLS0)b)b)bVz"s[e7FP# AG )L +b0)LS)LS-bNI' z +JRN+^@괥)JR)JR)JR)JR)JRfKQC<q0FNVI8 ո`{T{i.ZiȋubYx=Fg۪.mKQ$&Dž@KO1ޮ3YdS4, M| xm}ytP3,qУ'_=fZ0dg^՛Z-܂!,B TqFP,Pnh'; +.L+ygHSw$aZViJNu:c2K*Eg~o5FrT͍Ԝ`Vd{+"F1j^iVڒ`Bpq}UYN]Z;fH8$Up܃g`8=k걸vYA-45~ibysR 7 +fic4j-HxɉK6ҩ(9+4f`֪괥)JR)JR)JR)JR)JRϋEF`hW$j;ղ7!1}f UL`G5?j؂ێ=dsԃoZn:k%u\b#͆O=:\>wqA"I,3 +8/tK!Wi!KМ8ikL K@'gsR$bӺKͱ%ePI U\KU`pH=G"_ [j(.Jڞ2ΪFO=WLմŷ17pO FH#lMֹqgvl.QQ# +u:VHB8VZY@ʈJJ1Cb+xbOcSxnxܑ_[PG8[t  +vrsMB c33#6ӌg'̎[nw^VuϸI T=2ڧY;i,A ˁp +1ytO +.K$t+&T)=#νAe9Xg;dNGbsSKYkQQ2$q S98'a^A2='Xnޚ=ȯFjJ'5/QhYu_,J-'Lecz}u3iVќ{u}ǧo`ee݃FyPr1k[XC{s;Cm$n"Iox 뚲/䭹##'#"a$ƥqAԄ 9\mTb+"]Kx6=g,;n㧏'h$W)InA=} d+Yx5|Aqw +,ww)ڥO@|Ga8,$n%PViPcUҁMD1Ex&oVbH`bY;+;μփ&I<(HTB1 92qD1"'r0*uΓťA m.ZX6 +4{Ky>'r+nLAr0grGo4x$IYI Z [#Ww%G,68~mR@8;rqKM:sTf-KΤϨ+Eͤp2$rTIR?gӞ*~2{|ѽYR`%6]qzZzlus ݱօue[qi[aBʼ+ ''鯈4X _VAYpU-ݫnQUܫݷlӃ t] +6e)s=z((cDvp#P`>M|quBCdbqZ5 Eٺoa3IfWU]˜q׺ҊxjNB" |3+RT}ƀ괥)JR)JR)JR)JR)JR{ JDee=a*;5Χ0wZ}mQ'y$(7 +|ϠCqyI(%ڸᷱ  gMS{`p>|?mp_Y'8\8ϕbosqt$Pzp+[t6rw/Xy'RnM3(n C3<%e50#eSc|R/D2*UĊ=kF ,ɳ +<1f,>M?#gQg;wg8f]hݬ[ÞJ>9 WCky D4sa1*Yk fQ2}ۀ9>djykYdV#22̬8.EXPOz=W3Gp:qΧil C! f֑d[ +^98澭5klɴhOvWܟ1~ګ4XleV1B\(yu1GLa YA kM-/wNFRdzÒ>uMnf_| +qmö-̭Cr&ˌ`v+i"d%`1HU"_I 1{!9}9fGvs9vıF0=I$|$j>ŨIH7(>70A;ZƁl` J%`321w c1+6PʓO${4|_6 vpԙgpF\`G{h^aܝRs%ʼn8?a{x`fqғ~&L 85"NK{HC9ayYtHLT' Tr>" g2JD)pVb;r}081P5-UiAѐHddbq߂EaHd[uU + H6{` h\Or!yʗ唕aJR{TL괥)JR)JR)JR)JR)JRZ,2G5f\)JRզ RMlC[JR++4ZA$.) >`yD'v +;g=x"oifX3IW}3=*]2]%<=UfQpk]^~{ j煷$<YxVc2v2.lwEko̶ii#΀2 +XϺ|z6wFY;J:'[=&ױBA.+] y^";33Va$u9\֫m%] YN"6xҎjLZ}CV(+6cxpGq_7^%٦RIU|b5'FOjߦYm4xc`F 8 P|6qt:S y<=O,l];O-0 gYLEwlT;k}u᳁MvWUd(Kᔱ;1rOZE 0I"3l +s诟6Vq2 "q*}TYڛrBAfbp1ǀ*54`h'1\Hï9V^+H-Nг;RETco*/[eMBe!Dj%'W!eZoA+ϰ$Է7cSzHm0΢,NNptGqTm2UO1ᛨFyԋPdbxS5(.`0՚$Yb2:Fs5  ^zMyT@G O$V?0,۾o$ 3ZKI14@ +c :9V-cͫxuUp3k"'Eߧ^̠KRTJR)JR)JR)JR)JR)JR)JS@괥)JR)JR)JR)JR)JR|IƝrAxLAbx`sHϥC5̷DnILq+U].uY4Y˰BLc-yir$9#32ȮCc`ñ^FKKHqmA$OOj֤٬imʧ`QL2`d+]/Y67L3.w-@[+ZH<p~?E}tk]B3$|9=Ooqi6v)AS{&A[;AϕC"Z[Xg),%˰fc@U9;Ó>RAdBѺQ +&A`V.͸F̭lg_QݍݫmHC |kWK(I,V)(-[ Oo:nwm{h+0e;,4 +:{ IZu(\NYFʩ8SZq(IWfkf#ydf>` V5YW533;ܪb[nO1k,RpIG$ f'jZby/I4*RlE( pKwJIf5(߅guWFHܠ] #<޸-Ί qy;pHk:1OlVQUT$Hb2T%}p1ަ[Kc5\ƒ93,`#V$IQ^ "etsws.GCI #{wסJYI}0Zr+Iq|QLNĬ2nN%h췴xf8j&y՜\۲+Vʂ2>*m֛a )ʠ.BHHǻ +R)JR)JR)JR)JR)JR)JҀ괥)JR)JR)JR)JR)JRL +b1LS1Jcl(]K1?yVSfb)b1Yb1N՚)bd/nH)P7l=n=5K\w+%x< +Kmg99&bX1Yb+4)JR)JR)JR)JR)JR)JR@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR`Z괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR`j괥)JR)JR)JR)JR)JR5֒wGo*|TCg*|_UF{;l-1bqQug*Ʋ Z)#qȊO}⅑v6s7?[cĬf _]o@lħ[ğ,7t{/M=Y~>_#%Oi_K=YQ/UjgG2#OkvI=_YU'5l6Ig|E o=_~V=_ZVۼCmgCm[#Oo}mc~[VTG_M|gU>R׿S!)ߩX?zd_<7u,ܒ~е򗊿Sm)?ŭxifBG#[/%J?,)*{WOi~"?x+?ʤF" +?o{ow{w>F O N%OC }umJRkF@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR`Q괥)JR)JR)JR)JR)JRXImeRwg9bO{0hok$-8ϭouk<^ gWEn#v |]s[-!YQSo*$zYGuPP%Fbɧږ+LX.>xU=*Wڇ4ŽR( +n I s{_ jZCк;c;aR<1{jN =uc_q⡶pAxg[uJY%2(iF_xqBzȦ"~0Cis^Oú֡ؽnB!V\ +$_h77ҋo!`tR"VW<ެ㍚4.BdxW/X}8}p^s̶pd d})b:![7<gO$@wU$  fHFe8` HmBwRho}Ϋ')өGV heW|[3>u[Xn& NwTѸ{"ZDP +K8ڳfH}AASfn"kaO9/m^TPK }O?UldKP2I -ǝT*/HEUn@{HmeۛQn>^9o`*)8fU<8&+p 0PO51 a9{[n#H Ć5R:jE]hgz=e9d5Q!丝*)$8Ohҵ5֬'PBv8#}j'R]BhXT;q s^Ƞn$cϖ=sZ0Jpv0lCkq f0 I={x@2]C0~xB0UQB=I=PݠE9#^>#""-h׺0@9%w 22|Xw"ȹQ df CPLFNQwpw%n"; ߧ+w|}yjP}V7hM›63vᜁ`iPH*s.s_m[iJR)JR)_-ڢah괥)JR)JR)JR)JR)JRW[n3D@j#]QDAa^酦Xn܊y||kkk+ Ƌ"9$uK1I&?/`>"֏U>=۞~TywKJ.Ğg +sp]yKqzVhTK%Xgm6ڲj ƕm((۠`v}>Y_jv1&v|UViPgX?p, yy:K&{MNtz-~v>N-_M${[8ٴ!OcS<="@SGpv>ïg5/v|r p/;nn[x*v> +m:]w[lBؖ*T}𘳓ZW@X6zIu"mF 'yPbY'Un{Oy"k8d. 69 Zz֍}j16j:9cvР8,v;'1=e6O:{ kӧ@R<ܡfR*%$ky~}w-7FKuqUCuIn*P&H$MMe(meG9p>it|[J˕݆pGTo ]-0 ydd +yzDFǯyo};ƣqq/tS0n`AEoiZ[MN6D+;S;^As ^}a.P\ m_o, &erNA !V:-=A{s7OݵOr{u0\_4R)-4 +巰W+|nm ı9y6m8Ciw]d1t2 @JOe?Խ%:QPlE ]\&m6ۮ7۝Yϗ۬>>x2l.rT ?={@(ѐ9cA? +ͯ䳻f1e7O zf|E]h>B%c HY$>nj%tn`t ]ly;7*&2A#ik[I +HFqlg|xE5+I]6oec[ ŷ+HXc?P;gtrBD3$F +6j^[VF.b r<_h,olW#$<<[lW:zCtIS zx=5KF7Y(Q.c04Z(`pS#$WV,RbDVV1cr{#{Tkm"UF5@ {sG53vz}ցئ;K6\F9qyMw6-۬`nQ{?8هQ<#Nv1#`{Ӟy9e[n f^kldʝ(zR)JR)JV D(괥)JR)JR)JR)JR)JR\Xݐf7 `Eb>kOȶA +>irAZ5b#}Oeote/`Ȭ+W; ~i `ccn"0SA6.NOV(tvЩXNq;Ͷgd්62ze@Oet39pF+BVD0 yinČJƪ@o5J:VFA /4ݡ} N:)H ~6.NiDZ@9$?1Rb8#EQ(tYA V!E}"0ǿ9ݱwg8i= ,1+zdT^-ݬ6fcIR + \99[e4r1D ןSRDg;ݟ.ⴆi*UB=s_6u- H(NΟm{1Ɍz+>u,rAdVQ#vI:2aad&۷l]۱vqӭ@ Yqqp[(;bA@ʾ~Oc]H 5mQQېP9eJ'1! *7XYvshSvwR ec Ȭ3[ep2Zƙh(<(g8T^'M7m;ӭP0X#FG_p[El5@NHU +3V3X[@Š󂢀\9YV  Fv8Y +$T9ʪ=--a8ELVP2D]Zc6F>Cv4ۻ1߰[tzXObVmm씤$jNHDTVcWU HyuXma6#oǖ8Z-"F gHi6Wz6ߛ58W<1qRvundV?i vrE>:@ܠg) VH +F}p+T:e"X[GY'Y-W;j'yinh#gEb9Y'91z+i&m*UJ(@=`;Wݵ6h#5A'j(EҔ)JR)JRj7괥)JR)JR)JR)JRW nKdnD fH8{Dd, JƨN:~(D;N-n8>2ï"Fz8^2D(gP2|YR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR~괥)JR)JR)JR)JRU'! s)ۨ_'漎,ݞ5` 85~75yXCj@UbC M{Q #1w=|>B_]rE #fh,|x +!B15lqۚfiVOvQCdyƵmb+6ХU"P[Զ4r; wzW:鰫FI8#m qs٦w$mhGa%YA[8/4k]ԍ.TBAl8x2MFXewn Af^]N{u|$5(cXެJ pm6v(P~q:[Dv#3@$L#٥l*$ i̷')JUnn%TGcnQKڬZ}^Kly qQ+kؖ&9E%y1Up⭪-֪beE!YWj'4iK$P%(}&ChEx>ݚfOwJ]`ՑPddTĢICT=<[<ʛU\,y#5c-jd!JCIYi5pL}Y w* +-ԩs+2:iAPWw;RL5Rm괥)JR)JR)JR)JRTϹdX"eVv] *U>UcA  X\TcHTd7p϶0VKBiX>+xYѮe2懑1}2F3^xI~jr1JnZ͹aْ=]ij BsUz1 s*(v2Kl,G>XVfM% '},rNW*>eQLbT< +gp#<'>MQ&7If򉌬NT*Nҧd8Kk@3) +yRc_Ěqa8n8˶ɻ262}|P]7YLYJ C0q--׫I(Fb!pv=ƵXrnaF6sYKɆ' .c"ć-q7 +6 !I{^?E<3?QXc\jysXK\4=IdN@m͑pjML᧶;8QSk X$7,r1IKWqWz 7v:6DY 1#R<'+\of{{xC ]K>]g$.}IÉb!6A__>k7QCj3\PLY$L{ѷ2jUAj5Vd.c + ;Կ MBݝ 1ǹ^6͒@$&|kSX"K whk93(kYkTq3h՗{`sIZԵw(:,ihK󁊭i4=.+Nnvv;WUe*Iml}<(k 2Td.e`>k.<3nWhF> 856[TF1KUbRy#=5J]~;p:+wG9犀Z"4Kb"ܒTy1@~jDR3jQYm/-8$gRڢf괥)JR)JR)JR)JRv 6ĒIo*!k0]gcnZ=H[I56.F19>@f>kh$aF,c(sWZ +7(7#1erO.<=Ǽ=+#P#C}C2+ 25 + ipV9%i#$*rHnbW9H3V9eqg-%UK`rry9<6m</l_0I$pIGzEA%qdTk L3d/ 2Cmלfno9\${:VP G֋Ni!Vluveb7bFH|gYؤU)Wc"`98As_Vz%N۝wTc +H^8ˊul.1uۃpE@孏9ba$䐻ɭ鉧 *1˹ݙyޠd^Y-uvHY W@T=KHR pt GmVHݣiWp9 㱯 +Obx 9*NIb['ϝMmX;T`e},I?]E4kmMyՉ&$tf°qmEu$ddGЌ+5TKFո ˂ + QT]jak 6Qս=\@52ףl;nA8]U0xGgR}* +Mf5#x66 ݑ3>MKe)VS{+RXaUBO![DPIbX'4Oi+d#>Q +ZתK[ٳ?@M –F2u#MͱMѕU٤c8vD(feM!U(,N3|ϙZn,T'I,{p 0=+~[ȱ)eWW; ܼH<Gƾ%ѭՌTm8#-&xHK>f#>\ +}cC:RAH AdPͲʬȲu93ݽH$真:%q޲4ح|s|ZK!v9g;vy'Vx-KG9;`r=Xör#!ebc<}~yݤj *Ȓ7PF~h+qLQǰG Dw>99V1) X噎cd}è*W`unV+(LA˷QNaҢ[p>ipjar2# p}kK<.U$pq9-nORQ v!` +FWŞmb01Wxӌ{āp=XkFr!ňm*Fg1@'r*?mH4UPz0Sx}JT¤ry1jm y + #Wђp3Z428$_:ku|mݷ=_k[^=fF[{ch9 8ڣ-Ç=n;gʤ^P޺w$ +>A+v5YۥqmL<޾iل"8ޅNTp#˟jeGe ;7;lvCbKħrH$3bKWX†FRDb%Owss[,kk ^h|%pltKdq9!@pL<*Vb0mCm+L74Km(aJwV_yLYyk~ZeT;0VFh+|ʐv1ھNlnc +HjW +ݧ#F$HHKoǗiv,w +YUS>ȯ" Ecn nGGdN609Z,wA 7/ߟ"sDZ>Ct*QNW;Ol]$ +nѳ(9 +{\h +lLeAp}kZ!lXw +[\I#%UFHK(H?:u^K)nAk*c!Tێݸ4{kH`Cm <*m)J*'@괥)JR)JR)JR)JR@}Mk8 '$S$=>;H4 `$EҾ0oJW..8deI&`Ƭ}>p__Q~{UG􊙚MT1o #g B`ϧzޘҩEDր괥)JR)JR)JR)JR)JR)x)>+qG^wv>$aHlK(*g",^^9$OY > +y/P7 )u\c G {{tmeIkiU.$ǐ#@49cJMj YVkT\ rH) +shN3⭇j~$A*Dآ#tmкۙNqڥ\ QdIYO[aQʨQQ~ܨny~TJȊň OW6*=5Z9F,.wH# +~5&*Aa.8TzucKQw"$1%q8c۽Jn OL~h(GK\|+ Wlo#xhv$}8[8"OP nq ]IUwiN"u~X>Bx73^wOKY&P AzK,$F X,uc8ÕM?P$}u*H($FG>q +\H7+V`󚶕M K!bB,D2F 9.a߫]D禈Y݌8GŴWSܼXmdB +(';)JR)JR)JR)JR)JR)JR)JR)JRa(괥)JR)JR)JR)JR)JR|GKMk R4**ñ;@OO,FiPƙgjac%ޞŀIfVc+ ᆊdKs;y#%?>nd0DpI>$OSSm+x(<( +3V'[t"H@giʥ*6\ntk0ᐎC 3ai4lvroHJc?hI=%1>jxa+6Y,l,Օs2m;}~*5Dʼn7c +nrG#${}*DHvLG?5Ho9Dlpm6;{<I3*$YKmm!Bh;Q>Gr0Ue?QhE6qވdR)JR)JR)JR)JR)JR)JR)JR)X5u괥)JR)JR)JR)JR)JR`$r;VkFs}k4*D&Y2T( +M$~9#ýL1E +9p9=fqf+ViJR)JR)JR)JR)JR)JR)JR)JR)JR)JR7cTJ괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR`?EDܴ괥)JR)JR)JR)JR)JReiwf!GkMg8°'81ߵL7wXFfcA3s_qJȌYARAd~5J56$#m@cku)JTK^OqmU85u<8Cw@ LیԔI%KؑfҾ% R0P;p>P^ي I 9LhdՆC) z85Jjub@ ھJR$Vb#gE}R)JR)JRCcy4\eQ9&A4TO'z+E[LҤ{j`id1N;Հ +4)Z.bC$Ψf!TyrOX0YQX09֛l2;iq $m`dwtV7qO:+pEp E|ӊZaDr;`}851[c;x̃9:5Ҵ)*40.J[\luEوUI@괥)JR)JR)JR)JR)JRơn7v-gw! z8#$gW&Ieز !7`=^/&/.-tي${dPđIMJ@%F3`̋ijvItZO0+%|IJwoU7(KXHȭ+*f{aN~((oYw]*G/TE#~h3_u^47S3LwTdB g=6=C6PY$mV K2xrtlmV_@ğA.,erml@rKv ޕ+M{F% Aˣ.AS ZW𞰶u!/w*1߸|1ہxkYIt9"e~:Ψ6+{5>qxkiLsż)Fc 0ArO5 k#z:{r6p5/]\\onqHz¸ @S< ki$ JgSÆ9oY:(.lE%2R6⳦xSaȄ[vǑU܏FbO +%e3 KK}v1j8pXUi2},1 vKXw"q*);Xd@ D--"Ј(i鵊|rk;ƫ Ԋ@]wYqN _RH$IBY>F\pF9⮳yY5Ilp%^%J޾bq͒jr5ieu@d;p A,Kasn䉐#Fv㌀kdK9݈1&r>vt 5vgfTTU1POÏZ%EknDfd16ܾ=Ml6=n-TA}*Z%خ!uCMFDRZk9T/Y7m䪐FPmUO +j2xm4Mo "<]>5lXYT+(`r pH*ECԥ8Bl0iz%V#}\21g-0c>bV6H] 1U{KbX.Va$/vcqs"teGf6ڦ1vf&>9'lؐ 'Ҩ|1\ewG] iE#=Vs}kX],BD +Ar01/&NԢܫ=#rLjxڀ$0N;*څez5'եR'r{·h7ĊY7<w{JnV+қ_s rF9}+njcLBm㌖= l林 uRu?4r~hW31ᶝ8s42f!y*2"'q<_Z>Lij,fK0] +qϕJXhW4p" ܕǞ^+s^j-: ݲE|rF?D#sY۫8m хS8 ;@>fG,ImW+(inam9`P[xyzT`I :b>d,W΍ie]Rc;b]{d9?ÚЭk=,4•b[w|&jn,BHb1m$6CdMmHۘ('vnȈTuxfAn +ǞAy[ .ԕY XȅʒA3ߎբm-N {@َ3=kJJcLOo$hPysRl..51ߗeJT`[s|)uTL,8A¦$m_`rJ6BA<Y:-WW*-ȅ 7MX< Nm.v -CuFܯG#$.jN<&8Zʦnc0vo1izD:BG3Hp`8޽%A60ECn3P5.Įܬp]'i[KߖĽc) Ń\p9zυ,nW0H6pD3g6w:=ix3m }*50=Yp?7 VWI Ѡ0i$0$;n9',VNqbYVT]O9tn2`;+=o-XC7QnC W֧SdFU<-<}j.bF{9w +;xζ\qhNVPgx8=+7ŶS5†#ECd:Х{KfI^+wXC-0>GUƓn`  Qߊy07jVw:^C +&'DdEIHLʟ0qZeYUtA/UN쁷sP&.pF (=HПIHm,vV3߷Lz}Ķ#y)7⮤!Ob%; /7Vbi<{sIaqq[N~n;}jt{t,JbhE#9)ž`Qҽb}1mVjNG9ViZ(:emVW+ ?EC|(괥)JR)JR)JR)JR)JRc|G@:LFΈ'BAQq1Y_w9> 5w1ie'Mo=9a#&&g#n{[iS= L[v1⽝#FW*a5T%kn?61HoI׳t%Ű +ͶHHھgh1Q#b RA88@CѠҲFP仞s'RQ{i`IZ"WzF|U%I WQ*ov/()5Yv($s4!bf3FcSUcM絒e&{peF=c\tIӋ|'4J;hv!w;2d +WdS"b?e}ҩ ۵+Y51$v'31E r{vIk;(VQGq䓁zVfLVk+5S0)YזKvcca`A T{$UI2Sp%Gf`~El6H2eHa+`Ҕ)JR)JR)JR)JR)JR)JR+D괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRcʢb괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR`괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR+Ҕ)JR)JR)JR+ 4괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR5k*Xoef 'VR)JR|8e|sY)JR:) pp{|kMS%\fUBX2*)8+Ҕ)JR)JR)JR+_wր괥)JR)JR)JR)JR)JR)JR)JR)JR)JTK;UN$Ұar f^0dTVwskkki-IԪ*w IQxXöVRX1*75vpi/bm帙hjvK.܀8O&"v $>uJR)JRUR(en&D`FAAv8\gҕ-"sg% +E99`9~5@f͝*pAǘR :7>z[$ C$Lfc1F;U)JR)JR)JR)JRXqT=괥)JR)JR)JR)JR)JR)JR)JR)JR)JŌ7zEȈZ;Y3c% eJZHst91G}V@M=mdg$irH f|@#g$`nml]s),RL}у3AWgƭ+xi盵.8GU^ W9wh7\nIY)JR+\A̎~Y&K2NVgL{,;mnhc9s5.##cqgxjKպM 1~r2|0ڃ$:Am<Sd+Y"v!r  b󵵕]I`>1vu[,!2"nrvRʼnEVK; X⺒4U2}oRHn9VoYIK1ŷ~};<|jNuyp-͸#& \2}T}|G44ۈG闌DЏ +ߠ?+X[]E=RiJR)JR)JR)J iJV3Pok{YTI3nS#֦ҕ|oTM&/ &)7cT_k41"]!@ #Ǟ9?UzI,-R lpQH?QS/,༊4(RDnYGyX;ZnB#\p +۵H ;V-=L?GuԲI7F J@i@þ[fb]‘ c[}5mj3Z  +HnqQ=Yx +n*(A&0sw`zZ5'Qԣ1]E2/*]#*& ϗqbY0!TP`'֤vi40_]D$VCϦqWԬft Eu8$Q m9R9,)JR)JR)JR+ ڣl괥)JR)JR)JR)JR)JR)JR)JR)JRGuxy-DvKLzٗ*K AozK3`d)nڿ_ƾcjFŐ;rEV2 6G'<Խ.Ky4mە _:Y\CS'?]T|'ꮟA^twnnG5- +`A>N_ڨ-OuV-MuAM{$mnfEyoYguc@i{]JR7⯍VIlWMFB&<ǿڷE~PJa*"12Eڥ2 d Xܚۦ5=¤,/!́Q:pFƨ@f8}ͩc3pZnWծqq G sfkRnd`{}=Ev8o(:G1% dR]>˲~wDS6Z^),s*f2>U+\jݦxfxaiR0 eٷFTLKN$q#xIk_෾G(V`w 1>}W)JR)JR)JRa괥)JR)JR)JR)JR)JR)JR)JR)_.73㸪[ Fوl2KM)eHKam +9˝KKn#y%Xs*TҭMH7xsRY~kH`*v}T oT.$*T<Ҥ1o7v>yr{ +3aӯqZsJVIzwbm u6BY95^NO<Z.cB6>IJ8)bT^jMu[\E,#ĭgb=q|+2xn6ë ɸc08Zqk;bĬA @''̛+y+Hw|=TR)JR)JR)Jv&(괥)JR)JR)JR)JR)JR)JR)JR)JRY)Q車j܍#듁jIzKhN a]6M++햶yA.\1 `WNa673;|rI?mnwf8dFAgPfM.O^i]K%񈦍Qkk*”;Xk:m&p?D:סRɎ`xf +py3 m.-z˓2I;UќiJR1Y*unYK` 7=  8z|/ȸIlNfWZrY!Y~0A54?b"e/G!#'X`wG_XF I&ؖhMy>L1+Ճ՚V˔Yc +2{Gb4y&INec&NxV4kƍQ\ffbe*ޔioXCl#;}xRJ=^+ٔ"AZfcqwl$7q0 +Ӵ}&Ggj''&Ҕ)JR_a*Bc@v\` m3O<3_VzW>vpp˅p}2+0X*M8?x~֋니olI`;qbJwc΁ȮNTk]Ηmy",a3 皕+8tȏy&aOzf=5}*}R)JR)JR)JR)_/?E@(괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JV5]iB@ls/|2;)JR)J6]tX(U_徜.>e-iderba<$Nyn*i]m,s9` {IaMX)JRYio\I>lq=U)JR)JR)JR)JRj.Ġ괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR`e괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR|~괥)JR)JR)JR)JR)JRiJR)JR)JRc5RbJR)JRfJk4)Jf)X+4+fc5R)JV3LiJR)Jnƣl괥)JR)JR)JR)JR)JRo.;NEFRʃy!2x=lԙ5XM9m \ep{qZd 2F($|8\gA|Nc>22Hde9NVDW s4vϩjv\El$/>Q|kXm;B[ T+o.m#'#Q|7n;R#" w ԫmj]K&erǗ==tb#.Q޹@yVpXܞj2F)hWn7{젅[L4{U^Sזa&t I7܄T+߀hť\f9DkYr`xѷ">VSٖ2~ cַìZOjnĪ#PۙͥN0l A %ܲ Dhة gǃQ4xjwWဆ~@Kc$8|knu IyȮ +} n޶ìXu3fFT?u9Wky-3K΍crc;޶ū[ sQY~+2rY["/u8YQ3%cE#={ +kǥ1(YdPx+||^E M#+.q<Ƭ ci%ʼnٰJI`> ,,$pyl +5}Zcnbوm @Xpi^WRP=gPY1"+ɍc9V ,ɗdF*fXw zݥbI(Vbw A?9[b Kr8ʜj=ηok.[llG +̈N HyxvffU[A@Pr=Hyֿ ČWl#rHa<yu.UO$$b"$lc;UrNz:u<.J4,N0GU?hRpsbC{+ۭKg +071vى'6Rs>QKL5{XZ䲁 Ā\7|{Wkr$$>U屴@'vF1V=F+t\7#G8>GȬcJ$p${Uww$۳'RQ<[4vmrCsms8k֎K1'MN# q>m:$L±W`6O<Mk_شuN݊Ln6`Is;IGa+GF~ yyԝ?PR UYY~rAWQY3r˾<ʋ8n#ζ]6|&% c]K'޶j0 +2rєl2AxYk; 4괥)JR)JR)JR)JR)JRmeHK#d0|a (յ]Ѹ2OFh+,q*1\6qZt{ZD3۴`pG=*5ɧYҫ 4"[ZD"@1 +<^nn-'G&#rF+<@;t-9 YґDEz)#n<`D+NAә;9\/<]nҵ/ЖcV +Ψ*qo3C]wH#ۙ==xkhr`VՃ)V 0U~7dieTL";Gmfk8"òʅm$3RuXkHm%m4FtpUx4d{+XK0Hy;g׭5:^,WdI" :=cje ʭҳrT;O<8kqFPBH$yR8+I]"+32UEgbw젟*խLT$ +"7`څnI5kz +Y-H83G.!Q8`NjCToHί"*fBc|Ihb eGb䁅Ӣ{ ٮC +Vdr' O|wo +tWa@<ϝy˫jgsK$n V]g- ݀6nѠ-4Iu 6j6z1#NԌ6Ֆ0-QGy̏Icw6vϕEԴ8-N6Hi_ǡEu1ɱc HX?L,UFVͷJC)k#1vqH+Yu XFb#} FV,rl"=iv[1Bn"`9N~ggs)47PU"Ri2^{6`dرǹ$}U,^)]*6|Vڴ4UC W2#hVB =[-dd +xl +r}N9;[)t :fEFYz/pn#85!k^iIݐT ܓ毭@ +Ul0 #[iJR| 'Ҁ괥)JR)JR)JR)JR)JRޛiS23I p}p{J$w@T܍qd☦)b5Ybd1gFSjؤ s}+[~[{Wb;s*EVb @p8S1LS1LS1LR)LS[);ݳ px(D`e/ѓX1LS1LSm1LSfS1Jb)b)b1LS)b)b*497%CfaM$X傖 psivo;PqI$嘟2I$ԜSLSf)JWv?EC괥*5zfH$s(oEK;dpkڡk\ɝp2qJR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JWv5m괥|@8 #^w7/urKRD8.M]Eq4am6($`ϡKTFYtQ w,O(oľ(].YTfa|_I7iEMZ _I7iE f->u,ŧn% ?Ս_/%ꪌm\=I/?OWN?iAA}tKiB]N_.'z}Я=a^onǧ+SG?Gw}hWhivv3]!t+%Ow + w;?O +~ w4O(_]K/WEsBpP}lIăW_]K7iEMZ_I7iCZ}CYO(]~K?iEg%EoFa<^.yz+gyamnT}8# +#Ew}ht; 4]N_.'z>'H"kKwOn&)BM'S?&)Ekf->IO(o/$(GXYv8|+%7QI~y-_}ק=H_ #<7~_?](/?OWNoxtn>2|gi@?A}.'o + w;SBLOn&)BM'Wݾ oӞ7pz`OȚ$1G |?qG^J8kY$jP^ʱvtSӎ.rqsWDK #9JR)JR)JR)^gF XlT|l}צ* i^_Śk'$Zhʫ#D(rNsڧj7O}1DC C!G*%؊' go~e_ZTMMcA?|VexzMSN.H)RUΛmU1GFc%qd(9}*%se.}9j RI o$J" +U9zRLVj_~ʼUrQXIgIX!.~W)JcdךnIujg{I1^ViJRmhk66,(zrU.Ȧ@m9kf_?ZZYg)mFBQՖZ_lJ31'8N)J/3~Zڄ٭ϳ7b"䷾$iT+09B7 󵱑56SSa]umToM{> 5dfi v@ ZoE(,C&3> qVTҕS~yXmT'ԯ4q4=HP^UC1[JK8qԸHPY‚@iPM>yQ,,rUlBq)J$Z"8aR8,}UQ[[,Cċ}g!c{ +̵kxZL[L]HZT&aŬC!FGwJRUΛrjA۽ÅU<d/u/^+ѳp1{AH׬MMzS?;~ѻ?)U/ }J]|\)JR)JR)JR)JR=5ٱ~+RPo!jY2=x#EQ0`vzW+5Uk>SEtʊ@e 2;WF(zW)JUW:?Z,6ȡs6p[cU +hVRK% x*C + Jk[X0B9m?NI)JUW3*VKX;PO+4)Q,>ubT}[:I75JRU+_&J.mE_ ċ)JR)JR)JR)X/MJܳj)?U +>^fI"XZ(. &xo3iKRN?GODTKQNo4OQNo4OQNo4OPMj ouw4'8q 皟'=>TM*[oFkYG)ֳF +|:9- |N*O%>P?_WCS)O O<~Rŧ:x?Ou/B>RԿSO/1>RԿSTM#WOb53/=G9=G9=C5SPM*_?OoSdulR?y O!_h>Vɸ V>ݪc_TW*S_#'Oo?Oʇt:?Ղ~Rħ J(j/+J|STi.l+qxAcCELGRO'SK?GKRO>RԿSS-G8Q>SS >SS >S?S WC Rᅃ6ZsUʚk>S[?lV6_[)OoSeuV6_[)YV6_[)OoSfmXϫ+- ,mh׎ +oQY{~~R?O5O%>P_WCSO_SGSOi?(O:)F# +{Q)޼}{UZq*|4OQNo4OQNo4SPNj|~?5>UM*_?P.o%[ bIPw<oO[*꧷jWU=U?ʿگT?ꟀGPNߪ~~RħꟀ/+JNdM s +sy* O<~Rŧ:x?Ou/0Ou/1S-K;GODTKQN?EO|_PU@K >+Th괥+~[`m8Lg8tjR)JR)JR)JR2[^:]N폠!W*%ηֵKWS-RHݑ&WNԭ-nù'CnuR +ν^i%- e+Qڧd +D3O&u+^XL2dH#XϦ{R[mZ{bhqɖ1<O~jnRDٕs"u\Eóm|TiOݭ=[NI(N6ZC;ʗbHuRC#0vS[Iis^%(8-<d'a >x?Slf59U{UJOi"|I}%0Gk`>r9f zg5dmTM 3BGg%NGDeFp Txfk{אc'I®Ioy>]k&ghh.@ #95i{gsGov#,{rw ͸<KK`yn.J ryUx[km< HbF#!L*nǞ36RI$K^'Y$i0 woA|ಐ O5<5ws&M;̰Il@F6*SƚW h]#FwVp78>[-T~YZWI:d2N=Ob>}FkUW/sybdZ,.Ȋ$Ǯ'^n]LF UR(N˷~Whs^r*)naׅ4!UA*p8; OjUe +!@Ib28']\D!c$x*yljZוd@͌d 0;UUhƣ0~Ym My.&\[,ۥV%bP`gm^z~w|$1vi g;T 2j ,7 `N3QC6^[;m*;FYBĮ T)OX$P{!)2c--wMplns'Qe$9 +cҫе;Y=f吒AX\u/Ċ*63;X)ORkſ_"hA\wbTH}B]NdEX4R4eBo#$,Dr4{l*5囉ۨI-j ʝURvƧi".k% ttK(Xn6j>R4њEf="Z :G EE&m_jeyj:qb,B;!/!'%8I[so6 ~$~#5`ic3PYH8'7ꐙJDd 'L$eF|VzM_bJ-{}*Y>dQƌɒ $h@wqcUwV@ŵV+Xa;Q2IJH 9j[cy0UgZ.ݵMYY"e`ѳU} B35Uh+ᓨ$ǰH<ֱ7#)uv US.<%#ۗ`v5jQ*޾dn4괥+Zx.±UpQ{JR)JR)JR)JR8/2[ɏvK˧SC^:BX(W=2,xDwڲ6c-68Z+y%B P'h2Mn{m;ar&j]{${K_wE- *?2?t3 :J@$ʀTV=Ρ\j1)h8Q?|`#2@b|7׳[\2ued8!{U}V6Z2R"@{ g,3R}i,dxٖ3jdf#;=H9&ai$Ag0k륻V٭Q`%UMY]B9ctj3hwwdyT;K,] `)qgf t!knFŴeF89J(v]+Wl[#U<ۥ"_Q.nxo3+e ECxjP81IB`>;Tz-⶯!eKf3A*t`{ ZUv703Lnd,#[b}l +8ax]6 Y:}kZ T cmreA$?8z_Mo/JҘ\acF,oCk&%p}sZsG#7Gk2hՕw6O? \jQN{$U |2c%Z`Y09+KqkakmpsWxm^[RyԵ.rFϖKr;Toߖ/uj;Ra<'=0 +;s_ZBӠY[,ZF|A#kٮXnc8I}yG[kk#osW{ƍFHH;ϗqWVچGbci9ٜ:}3:ZHjGkdKy¯>S[WajzܴSF,Hd<1_^Y-:>缑F:)|vڤn>U4nxRAA}ޗm=(Oi@Vܜgh6*վU vOɂ٤ 2vI>Yz jlmh}b 1wr'i2F[@D&m_jey WaD%HNmw,r^5W(WRTqȆ Jcexv>T{v} +:Ff0HM$)eq-k6vm{{ >x#'ƭZ#Hn@C {r[8潌9mqu祇wխPFu<\ @x+'zZtg,%QBHʪH y +:fo!7f`Ǔ1Z46[kbc[*&wG*FJ~UHk%$pcncFx$}>U +(d]N5\)c sw[$v9GOīzs WS€괥+k:djgif?oiJR)JR)JR)JR%ܯ78m~}zW1,2HUI!KcaA5N/)SF?$-G[.&f^%,60x9Prn?Կj=t?5ޕ#L%~ +}iO/NR~V>괡OV~SJ./WURF%ʷqbplVi*^\y(?&%Wz^%3r(?3ӿf%>4O;)TħN._SMG?OM?L RŪS\juUldS*H=_R)RV\ŬRտ'k)'k?*[7Z|ofOmLiz;+ǕIZ +V +|m >UAo|kYZb[++ZD +UZoʼnE1XX&SiuyJ}i[2uwVTħF*_SN/ku:oŬiRS,T$޽ |H7)U^(괥+}K5B<9b)_21PJ 'f<5doH¹PsҤ5 ,%>c-pvjSJa`=ܖyOy97s5ŚYftU1l:9| VR~r麨ki@I+Gb2 sEbU7Sl!?=kN܋cHa jT9jUo"2/b}x52\jqR.SikY$mޠJ(OOǐF Ui)h#ÖbZ0GschǑJ;Vj6-.NBSTxh6Iz +RRX1JR1Jb+4)JR)JR)X)LS1LRfR1LR)RҔ)JR)JRb1LR)LVkOPh괥+jǤ,?^$2I_o0?E{R^g2F%'9=f}?Lcqrfw?A1R }u6'n󺍜5uymQ٭d#uޕ9 ~jI=ϋ-oILG{ )A¢xGKl(be4=9_D涖LIF+gYZ(o98{>Pԯkv".ae""HR}uZk{F IanFr3[}}gUJ.:~ɷHāz#]A{bn,Eȏ맿s~gf38^{囫n$Y 1PrK냑W:%M!%cL=b +=X'.cmrἕ0w# m'*C{s99Xc'`TMvrqR3'-z"cM|UOLϐlIKc\3[WmǞ0OJQ[ŏs^)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JqG 괥+ܷcbMxkR$bU*܂#{k=2NoE$Pyq"`U@[M4Q6Nw9u9V9#9іA(p \v9mbwEf!#%Ir=+Lzm]G + d;ѧi^OT숹ڀI'̚uޛs5ł;',p]цFOyzIX3ŜMb-"(drёw#ַ6s +}/t{ciq 'z; fA nb;UYKY :ʪe`vFy'M7% H ENë{I%Ď[(^B P 0 #hcyfv4xQPڠ}[h?' dclPP5jͣOU/H;mKfQ *㓀swl +ιcf1#"eg<+7Z՝I2qʟ{]_W:K, R2$s +/0{Hzx1rR"֬ۤ\11g?juV15arxw=3[5k]=* |/f}VI\p EUX㛪$pl[]EvH]I# dR;T2HTw$zV-FYpNU8*<˄UbT;r3}.5;6n6uY%%IS9;{%gT"I$ +Wk"Ova؎?jު$kHQ}_2}kjkRȑ$>6v'9}ֺ{"M*?a8 yVx2PXTzGjZ&i0_w~8.k rүM[9$+ePY919Gk]k*3>uk;G̠9A8QXlC:@F@SPu{YؕUaǺ 5Auuwyąl${klTN6NʖXdqd;Ukx +L'L6<_sC p +['#OGֵ4WI]1S#1n> mKY#`#-;|{Jmݽh1Svsv;kvo L–m F <SJR|5괥+갵Ə"w24 N;5$q +`+xك7iJR)JR)JR)я4SJWGnIQTd>x)+Aʓ+ ,ޗ%yA' k2^&lqUV$P6{[m%#,m +kǰ)y10h:B%Tgz +2z^GW[4fFc2/P1܁qP("$ъEXbxv[/8򫕹<֓+ӧk()o4ÞH=ǯzԌZ]  d VHą0$u-9=6jl"噜#-{ow//ÙU + {QFV)PiNCd1܏*,qX"8l8e[ jJkQꮡ漙9*e.6^An k?bW ƒJe9l<)lu5,[t XJA{%@0\* gj<]>{od]eER^#Хqk:Z%+f3PM!eRHPHjeV1I5Ơ ǻ +ƄFP}KqOs UYG-CpcW4 ]FۻqaKVv=$`gRR $9g`嶌8}ՍFed;JYLkdldn7*LJݒ;F[XGin SDP=+f5#Wd Ik#.>onA⥤6Kk4׭0'1qH`r@9gFXfH#an!N*Ŕ6{W(54i mdxϺW 0vTmRu3:Ru=3xƮ|K{2W#nX+"VfLA%vRdt@7{Ga՞Cu&tL)xtwl;A:]6>һ`g렅s {v>HRQ0 ɉOp;vgh#| U +R8 +gn3zgҰm.$(l zg}E 6cvqt=ԣ"=yb@r|G\a#Ќh"YT Dm, A#DuܱѸyg’0fPHHPDrrxk“Kx]U9Gk=+(#a('8Pϯ8lE]' SH#Xq޶W2p2q'ξEBNߌo7c8mf=}5W Q\ Gc}4j?PMo”CU)$k(*AG |(Pҋ#U O}2A+!@@1Y^1p;WI{y>mbHP` ϯ5N8v$ka@#5tT_}5++xF9;@>V(ٝQC7!@'#(U޶j+Y3dĤ`偊tǦ(aF!Gc%++(^_ݿh끟|EhM,ۘ I$5)Jnơ4괥|H2?^GOEuM5UG'9}UB~zzsu%`;|)m& JƇ1|#_үsk:R)JR)JR)J%=]oE~ru!EڮTR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR+괥|cC^GE^nܼ͟}f|/ cx]U)͉4"#KqyWVXG\9Qf*/5>)JR)JRc#f+ꇭ}=+ }U>)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥k7+*UY(1QmG %ھ@O^Ԍk~y}%[E]'gXǤAGb0.ň űss[⿉fã/ QPޤҔ)JR)JR)JR)JR)JR)JR(괥k7+i s6<}b./o&5"-`]H:Q\Ix5Sojt6ᧉeEy#vy+ #8#kDPn&D&Q 'mɷ`#rMznfXT@d,9#r6jJUԦ&X66ʐzqn#TmvVht(F2A<^.{.Ih)GrXK@D1!{i Lj*GGۚ;?*u)JR)JR)JR)JR)JR)JplѦ YV7+,Wx|vjb&֧{ hC) !=SɦniiE$v8=}p+oo/%tP%Ub˫X#I)9vURy@VR)JR)JR)JR)JR)JR)JR괥|K[?^[I宇GE{&c?^Ҕ}-$1cdV?i:VQZ) QpX(]=ȫ*R)JR)JR+ ͨkS +`p1?hתқ!V)JR)JR)JR)Ji)JRViJV*jz +VMydd`Uޝgqou#5PJPŘ0ݱޭZx8wU>pDOsڳT2M,~ !+OdEPzԫ-B%gI&}Q#8(O> vطN ?8@VR+Xg*#JqwQR HV^ӤAnww'OV'׳)WsJmv)(oXҕQ) ѕ+.'*@&[YUJ,Yb89¾:k7{{cD$ܒjSGi3]؜1?Y<W"$Y'kdm >Tq1u4cI$<s )Znⱌ3Qܟa'V,a \}8 o:ΠtInw +*"V}Yݳǖ?Y+6s :g=o{KXKlJ\yz|H y`o!nI)tHl e!W1ve蹟E4,όj-bfUIЗ8Qxσ~*m)Tm!iAhOI +TdxR)JR)JR)J괥|Okg޺\sMh㴈F߮)JR)JR)JR)Q)ŵ򓀐“> Eن&-%nN_:)JR)JR)JWקuKz\dg>'XҧX\jsyמk>3.׸9lz;P5, [wOoێ?j(74Ӻ(f k7%Vy. ve]NI +v׀\@ A.lm׀ِ ܜ#~Ť !.I,N2I5]ٛUos|3T/!^vF`L(F0vל޹tɕIzT-&DGO%0?20>5 +[x?#2YLwzyWJ'LD} q^V_[Qгc&7. F"0|I +牴ARaVg1V.j~ygh{S*v9=? k: %t7i*ݪPQWIpmYBȎc%H 0JQ*Iaf\"iT%tVb2@>xFҮgG٘mcj }-,76LK1'jOI'$z՞}gd Hv +98ݪ MiqU -Σu:ΘfP)P>ޭug)i'r` eצ%EaujZLo+\yMnGEe> 𭴥)JR)JR)JR괥|KOryۏYlb*9\ϗzE AJR)JR)JR)^FB`pL[8>io +/ÅmgG'HwgǞ<'n0 %0_-&f)JR)JR*zƒ#xd䌆c@ [D&4Ib `6q'Ց}~9D;xMwm;gU+H)r;.{gg5u5S2u3>f,B3_&#Ԋѩi([=b 0J'o=& 緒Pw[Ԍ8 ȩbJUKWvb89 pʘFs. +nykid,j2A8P;r<8] H ߏ>c$3(-@`;vmfcR8@888l`{Rn'1F}8?mxfJӤF18]$CĐ1Qq g[4wJm "ga/xN[\\v"5wzR^ F$@!sqQinn:E$la@_|j;^FQЫv5vFB\8'5%-㍞EE @f|j%sc!zq,I3Vj+TWrcZ5=?+vy@r@±y[Omq*g0YJ}A{ 2#+PF im+C>{'RFg +~Q g{q)09ڙ=>Hl]R2L}X> +Jm/ڻvzg+#1PA +Tm c}%q2,@H[)J4)pdUe`}pU@P_q[B +)JR)JR)JR괥|OkCV5,.!}8$zyzMm2bJR)JR)JR)^O]?OQqFqEsS+ow1UUD$rF8s~$Wށ> 6gB_NQ`2O!(<3boqe=cܞ;* 5M +Gл?[<7 mSHUYr +}6k($u]r@ǐڨtDOR1;hϑd#ἑT]6W..ר71B3.p*)JR)JR)JR)JR)JR)JR)JP괥|?A)_zݨ> %0\Xe;W:߈mtY#dc*MRW FV9n+ m|{չbpBOWEC) |Z8. >ѹJo)JR)ZPk5QtS$H<ݰ>~xWt4\]nP8c_{w55gÿ}խߍZyލ#;WQgdU~\,/1iuX^ Of NX*OGY2A>)JR)JR)JR)JR)JR)JTk> EN`+̬ ADDQFU|cmc F9$dnbV$3Ϣ*{xftdV`I҄LḶL]H/*yWeM0dNb~ڦ SfQiVE翺EX|sqLTK +w $q?AU[Oܟ*]^~ʬ12EBJw+?i'nRqQUYqϽ.63~W_``_;Jݮ6m?EǓtkTʓ|;poJoΩ{ vBX_mb()6dǓ_6i^S-qn|1VBVoUS3/'.'>iE*Y6]|'`%~FEV!fDXy=B/*F8ZmBM#HٙrjgȷZoF@1^Cþ <4wfX% qb{tf 7?WR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥cy=бG オ.AP@?mu[{IHAa3^)JR)JR)JRzqtùg_nx {{wT4nwc5O vLHA=ŁF`~n*4 d>̭s1H&EuAǑ_t)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥*zdڍOl)Cʒ+Uڞ6,ݤ`\=n; +R)JR)JR)JRCjW,N2Bp'jY44ImX.P.Fp*;BX%lX٤$Qx? ײ3~5JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR(괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥ki#2$~_ouS=s@'8JR)Jg2HqQTUg.HdP2YQN`7II@=ֳJW̒$xMVX :7*rr0F9hC> M5s(qH +2 חdA_OxGS![%=pjE)JUn =!ܻ) #w~RocŻnq#F~R)X'PRnP௼ bҵ2[#I#URO2MFh5&",=rG JV3ZgIZV*H 3JR)@괥x +|,FxˌỌ]4h']--.tweqA TCs~J+xM;ؤpL._+|8I|H{-f@ҕ*.Oy~F_,tښZФk"ǗC{Ǽ5ej~+E?OM85ZDzխH̨ɴ899XgYuu t0=~& "+|Zs1+$CWsFYpQ0r+xO\ywQ"5 BKb)n v2NkEexXIiHv]3qYӠѭRA4aW,\$սg6, +nۜ~٨u)n:-(\nmw _jw[Ms,nUb,7v3t%<+P)e +FFs[a&u0;2k( G F14 `hu&-qqC[khf)iUU,2#,G8ȭ7)+)38:Y!7sRf6 Xu+@EV;<̑[Jѷg'\~6WKnf"7_{ yxjF# +i,FhMk>$}ZUK̚fs0Kj II>v{i ݁8U;5Ė7j{cRzab@kvi), OdѿO?I*ח)!XY#Ps߂sǟFh.e?GQ3S#qϝiO= }FwIlϭ@Ma%D762yc + +@88$dgˊ{wy3D-R0b +BvGLڅI&d F$}5McI#d\N[ϨKI>Ez׭m =j8i.wsޤԯ"Ӛ pOڤT2;V6h22<TMOpnАF:>~>5.όsckFY\9+oI[{;iBhMj#`J4ź22vi"u(a-DiZ0T@ {լ:ɜDfw]tr:"2UiFo`ؒ:`1ZWp$n)GkB]ı0}hѢ?^1VVP~_RlG`8]3ϩP>PԿS .7[pFQdϯRi'-fPxRxվm} +<(D@J0lqq56#[%đ+n0'; }u[j^yx3P䴊'b@RqY(%s$gT.c@y +е3ۙYpVFB@`뻒9eBȐ跽2n9`>}nZdº=ҾsRԮ%HM"6es|T=Hi2;*l?n./Фl,Hdf*rNNxMUk%Pu`6rl`3VWbbc%C%LJj7Z6RDlC!i +#\( s8w)6v0B[Y#r}cl0NEXYjW1jO(DRMJݲ0sW4)J괥yiw622"<ɄpͰh-bv +*;=~T.!tvH6_gP_%ڦ%$p)dCxc­0@l(ݡ]ISgp9{vZ $[#tp9u]ki6°Yw)xm|1SZH6.чM;UϺ6ϟjt}CTy.$w+3H mф䚲P +FqkZ Q[-3mx"ŕ3( 3ƭt[am nX@ #qjƕK_{(dD +#Ҭ,q[~{ _8uOyehl 4j䝡q۞GY]XIj,VpJ O#WWi2jfّ$1&90tFQ# SH0E S,q8s7"O!+̇yb=u۝88SW~ + Q&!5 m&;z=X}T[qip p1s<2{KQv@x8,q6UqRF}GFA ؒ $B6G9#-|à\c}jeuԷkmNs.yO^:i-GU-*Lᬚ"Yeߘaeӎ|-]Iwh4Q)dVh 11ݼm"8MI$s\ +qk $ <50yM1+A$ I5$(1;#u#5h +dN*z w]#P$H]փI{#;&{f,3ʀj믝*?mM(!RAϘeQgѵw-7뿁ٝPzY5:}.i H$WdL!q[4}:M0\+ɼIu,9i>x9=bWv([?9u$殪B({L#Uxf~_n?@1UΖu%,D=ӑZl Q 2YKncIf8 ++/n䳹єwسncwvMF;6,dR/'A9ֶܷw:]m Qǵ FS3{wbG I  =Cg mϙUWJ#aOaNx~}3Ka/뽽Ny:$~s{hF7\5p@d9GDM*Am#8=TFۃ܅9`EDUP` +4^%VN0=7?aK%2"<*iGE[wgf)A*qu @$*e! 9;+}5kIm\I  2W"U }_S|MnS6Ov=Ⳮ\sƁY];Yxo>y*QV9>EDI*]{cV_mMq<oگT)/-~sPU&(Q>ı,UHA֞$KӠXh8c8OI}VI$< t2`I0Ie U152,vZwcKӚX$8VDYeI85iǨڬn_df(A+;|*xZ[y7}Nwdx*|]w+nͺ2>’J|4A".z|)Ow 6>uF}Ct'g$-NGv}&MOrIK$98Fj4;K[x&R_ E>. +F$7仓bS 9qڮ)JR괥)JJnb@,dU;Գ2I_ wKvRA@(B pqY{!'p(V($8Tǰa=Vkfc)ZR7 ERÞg=jZ4mò\FFEeI8gV*clJ}\)ߨ$Xo-m M0Oa{gY +`n||ZaEf8Q5R)^0ȫw/uӞ+u)JR]TA#Ql'Sn훆znWP +*  + Ȫgb;)JRdbR@dpɭjaPQx# 2><1_- \㑞k+fI27`Ys#}Svg9}*_ipHb{2I9VE GkꔯS;@98ɯF涚 mY0H2 +܎;J`{ 7@83}ҔQkV*C:%i:JlǝYY@t`Ҕ ZG$< +! O+6[vH]NpC;Z%~Cd{n{q޶IJt 'dykobYP0<2`AAVRG7Ьnd^!pzfR)J괥Dԡxlsі8< +?`Y'%Iq^p>i'$2"$il`8pm]z$zFU˜UR2Ų1v*np`Gx<xT(!/1:ɝI Mg>cb -cw3W?][ZYCw-M67:)(NjړvҳF1dwY2uSfue2N;f@k2Z5 rM(eݾP5TfWxgV2DJfR!ꐼ1*p8Qcowkn}*ú6Bc+,Z;gHB v| +7VMd4H H#$g{u"9`x AWQZ&X nv +?EQxQP0[]Yw.@q6{|*zƦK`Όd}Bcqcz]\ƎT +7LW'U?M~ +Q~ګM{˒=hh3vӒIǝh]q1 HfBH8榨:͓-Pxmb;v /iR 4HrбG5#gP~k Rxؓ'm-Թ3Nv%h +'7` FjDZ%HHL#;I$mXT8ro:H >=% xZ2 ef"ɸSQkw3]I9MGF(O׊ ۛk2(JKq o2 +}>PQy3͹ N3wjTMcEfH.I 0 `t}NA0&;(sZ#4Sq'f ȥH3*Ox%MvpTA<*`P3 NԨ'o9ӌ<.HP=l|? +؞(HmeMg&BUYv;]z_k8Ύ,r2>t)J괥y_Ou{{d1Y nwFE|/8lm8cp ׼rHH#6v*܀H8*_emKGuGiZ-#pJS޾'Bu]6m݌g9Wmn+XXʠU` 2xo:[4vC$rFB',rFAu{q:F>pX ?P#]@j7 (m3(D쭌qXumdH!H +f<O$֟ ]jn$3 +tːp*@'o‚x<9&t*+.1@&@9 r; N;d:rxf Q5oHdSPEG4< -З+嶶|~[JU+W˳42fC;~\u)Մv++#w!Nn005SLEki . &2+]7:DGo7Q&F;RFϝqʽ`Y$V(U .cې9l,PoBKoLw}{>–w +.Vm n]wW5zw ` uXi #dgc 7&UеHz&'Vc,uT4n4U!F%Uf24Hy yZTMPȶ4P dr +od{[Ds(#J7qsz]oD^ +[8dzI߁>[|KFw+^E#FCDP?Vڌ:zONF)f=*^HY00ұ{rݩB2ڌ5z* Ūsiyslme1F$/T8#yUh]8#,=psYl!I3ۧGlA8= Xu5 Q#u*nؒs>3 t%6¸Y=p >)m9c$4 L|'\oPVˤI9ff[m6gv]+^a=W0(smpSpRd27gy_K-QR ʁcU®W|y5-QԭR8\{SGӀ_t {SL/Y-%4 ]@TN[{d`wGo3}G{ض)zV5= +}Hʷqşe\^UOƨl/H涷J$y"UNĀ8F;Tq` VGfXoL T;.o5KQ)fF?Ex=-@Iu!Lm3o +s%QF ppΥ88Z+5K[#BA,lgUۃVE! uubBxVlAMg3+$# Nan4InD`țX3>1>='d)p{ wOoum7C2#*& Z ocޮĦ@{s04]4K$hق],v\)JOneB:]"Cܧyw \]#K=Qh<-д`"<^ 7^IfӖ=Cv{YWvщ7㾻-M-ld08(xa,GuZmC-;gf8v|ZDK +&uF?tszkVI { ) 'lKޛMb"Y?d$b1_3R7RZ3l`(wnW#8>FL1ۥ,vā=)䜞>ډlL IU`XK+Izc^XAY_ɢMa*ƒKKnSOsKԴ{TEq"xY:mI,9'n-kw749POS쬦N#b)<>XR괥)JR*oi4lu f;H$U2*XїZDIdDWGm0e9envf)JR%xJ+!ʞ5,'$XrXRy5)Jr$hD@}i`YAFGT.}e!7RP) $rF8V {YIð]OtWV\{BUQ # j  D92<{qTQIf|<վrQ87VQ^]\)l<GPi_,XH5ؠ<}+JY:3 c#3[KZF2ʤ)<=;d,ha0NNn83R+E՜wPJVHϨ|+pJR+ Rc5R)JRQ(ʈdm,}H5Rk`"EWHU>k$;I /e9@fViJR)J!{$Q=46bmL*_Ʊ  Z|KUYrW*FAgCe eԳ3;3OIU +6Ȋُ8'sSsY)JR)@괥iGUlOTZm6FE}We򤑁> U0~qiwEFT`C+ڽEGON*.qqXMB*}= R8T1Uu$2=6ڝTf8'GϘukKL1̌wwcx[dIT†` @sV#g4KGn_>GqZ>[܉1en$Sq}xW3HrpI5OjOwF&;z`V۲E* g}epcX#c&8% |FjmRGI`ƬI-؀8<:!U٤Rϐ],c[~g߂`_o|GGq*PWS L$yw,nM.+n3K^5I#T#c9_[EÖ{{*mZ^J2;P>ŖGus[4bFPz`޵cfUt`A{E}Rj:Zh8fieƋ|Wq,eTg9F=G,eRC$R1k0]4#d^E +w8 p #|G9v8y2WFX`'oP;W,O"6߽ndq:`/G.mSQG#okRA UVPj88xI(@̱U1P3O!d;ASO9 bb2)vAܨF`H</ĖD7ts*{ ='ϿZZDI$ɑ\1,pgo*4uBve~a x)!f:}{LQ,>UZ%V[cip$*Wj#6<#Ұ+yZI`# +&C+8fHN@'u?G 3ۄf4 W%y_VֵxSIO5:POU/]F$(8=QVYd*vMw.@8$A;q4ؼc+ʹt3$z;^;WHZYdRx,TwbI/IQd"_m%H8݀91|ָ|KIbVymuhWa¢xVnn;E<LH*A4jʬ>u;.J#)uHiaFlv\3F%f,0zUU:^ve X>vq/m"vA-!>u:[{ 2?爆$]=N{ՕPxIuk# bX!P[q.[<)} J VJqt +V>7s9!A")bVIhZHv. g;+lz[pX] +H=3T: &7k: +l>y.]BFH(dN3J5C{MoEdJmF(A|c6`Y2ܪ$P7`g&X_éD&.YOpAF5S-UUFKr3<ڵ@z|#lS<%U`=sy=IDN*-w V H9d`3gW׈L$ DRq g +V 2eP]ܒKcISiZ=:=ヂ3=[İY;nV LZ(x U*/dJëGVb9{vH=MBLigQ!4X|H.9C4k->)R9..-܈g.9c]g*,!jNX<YK+DIy=6.A$*N #ξ"[Q끖ޛouc|(u:g1FƅAV +7*#«euf0˩ɜA'j +K^Vtrg\.B$\<ޢ[ xs.T}ˏ>uFIzԍ. f$|+iɨn vB#D LrGs^ [KE24n7,*@lZMY +gn1g1[qCd~zD,pFI=nMmwxwT/_6 +ڍ#OJ.m,Ȭ^~C | sǕId#aQ@!BnxTGcN89_1EJڅVu,jZdР1ಌBō֢k8wYQ.DKٷ4'O'^ )Qٔ .)V"VdNb 9U7aEp>F$Qqq޽\Id9+WHK Λ4QuR@N##_fgi5{i d3G#RAr>ŗQr:>Ue}QHxGM#(ʠ{s劧EsBDuV]:@$gUc4LbˑJNKy; [m.hdM1IsW3:EI1y}NNf4Te +(*=\5+ÐMly-JCpc~տL7/QG.Xm +/ez$hwllY݁ឤwzRXDwlTo\RRa̍ H8ar2KsKկy O\b0p QqLX}Q>QYWny!>v@$U^x<3ҙD082N@Cߎ"J# T` PjFw]n#ٖ }||1H^)jm0ZLt m]qg˨7 89}**yxξ4ѭn-"YμmvqS"EYG,onU(x>Yz)Ų$KTMʁ2p  g:*?@[lq9Kd`PC)eXۘ͆26O9oҤ-՚5crѰ!Hn{zFRYbXXJ =g|#ᢉb?IĿK |>5WhZEaskpG1}&s +~v;W ;PqH}4W%O٬HJDaDQtYl4y$e-,yhPv8^EY$5d>}>x䚑m:Q٭UURZ}'HXf2Eqf!,?s֬'/O:]Nt:yQ`ƅV]E]3/ݛprHcNgmkqk3MB$1`giQ|c$=Ho2\,! +UbHO8kN]6jzCvGV37~쥓ʷ߉RT%l +tn 4~19U[_Aۍ9$tc<۴[8iԵe :a +ECxJO#'k}$2㚕ӭ$ݎ)J퍈qVZ$;ĹgXM1GF@{K^8᳝(q 7yi]>SՠwYeRUCxݰU+W}J]9ᷜo&M3"jv渖n̍h'ۀ<0{^UK]^;>xP,:DtV`q|keon.P\wMw7'q]yjUjzWvFy9eU۴0'qVJR)JR)JR)JR[Oqsmq0*A0F8Zn-gxD@r>5ϩ[M>ד3ǭJ^*,H=7qVJR)JRAY82R@ =R)JRiNF) chc@$qRT!Kuh6 ll9='5aacAvg|'̓>")JR괥+h&4[Cq*FMn$P +O9㚹RCk-3zֱ+_!|N ? zֵ"{7t,GPPDA +w(@IsKӚw^|a.|8'ԚHoZ^Dd|2XҔ+I%,Id˨A2 )cF~f~,=yUVIcy +ɎEnY@,Џ}\޽K&:S{'0|j^Ӣun'LCf.A~5{fDN\c p2zԥU_{R[Z,DLҖnڠ|V僚iDg-.W>v+e4ijlBG!ssOW3$lȻ)*N8|Y,Gv@Y7Ou88Fg )~#j4YHfK%< c5 +\۞m1S>{sVVHV3/QI8#6.5W]brĪ>=|k٤i3ɄH\3ƬIAk^9)C0]W82mv-Z̽8g9 #:.o "e (Ug%M{kYb`! j8㻚Kq.oH.3du/Xb 0"\`$d.cqYXfj:FdFڞmf60Op߉bvG}_t|M}] Ћl*&I j4'bCgs0$U:XG3ݴ+9 ر +xqȲt bwծ9\J<0@vm=ͼ}E9n{+ 8?eZiQ,PnIdwgFscv,eou 0([%[i: "7RR% |UԚV^ +C7$_v6J6e8X8 U~1՛Ge6Ɗ@$y3_Z\|YKdIcIi:2r<*{=$S ߟt'0sբ r$d)(8,>#5Þ \xl.u7 g B;=,5[Dѣe ?WdedFFf֬ݣP ++wڥh-~&k!EچnybfhXW@Td<qo[@bNWnߜ6#_6Zͮ8\ +Y Sa qRbR@I8<7w:#WDtP Vֳ/#AYhFNq#YMrQ2pUi9_+kyMb]M.hbRq|N+mƫmjT;YBrT p={V'5&VSAVʤ%Vepn~+$d殕G *YI(n_"D^H;vמ{}2OY%^6rsV: ~9Ic#^Xt6>eo~xyJ܏MY/f$hd +[k'8 ;Tj:M奝r"6̭"r#@NIw '!8M9W <}GYM"ƲY),J~֣m8wHm,O*#ڥҔ(괥yfgVO÷$tjw# ^i;r@#`R|cja@,A''hWuQ^]Y>8㫼6G-N0* z] Kv!ăI=Cf}Mbh!T/w/lgh='⽎Mkc,04$WmbVj$:g$oKo&d ;=qq^s@ZH)}Bl{Xb?e9MCI t^U}j"Od)ȭ>H ש̍dvdŻŵ"ơfWc(?MgcPj_oOi!Bۜ{T*&BF@8m93T:կZ$ڮ*NC<¾syXzK(8S,Gp`dgB]+KX%bC+u® #|Nn"&`ꅑHÍ`| +Da)rs܃Tx){HU[IJ/ b oӋWSh0GrU?UE@J7U#I'!YLiF_Kc57`LoOlv.YDvIrO¾onb}wOd`Umn#NL8v+=/[%[ݨGHԁ݁[Gzm%_c0Th]sl$ʰ2&4em miht_C#>y+Wu5V\n:(9y$qo- . y׻v FWg$kH&EiBOռo5 ^;١&pQ!dBTgAM/>IgI Ʊ莲q0>5%|nZN y{5}E {Iغ6pqL1?GY5X}]^@%,q+5Iio7ɚ44A>#ά!GS–$p*%)wqppے6Uc]"Q !W;0x9jKh!L* P W֧$muETz 0HUHpjzH*[*(RH$sV:Nt+B0ZPq^O`0; w5I͵ӂX mɺmॼoj8)lx;'MVxrx|=Y+yE +KdprI PSTYcEoei2߅U?V(w]h@XlU~$H=]þv<c\QoJwVIoXثT~ e6X+h/屵s![PI2KTvH͜y wf.;K|CBF>M[-Ӥ#[S +٪XGi4XF @8VA-}5 +GiLo)"ųߎ@:5!F#Ӝ1]kv2Oq*Gj`N̲*] +OלCycu^ FW} 1<ko5kq<,-p]e*ghNq3[n5'm$29ΡF2e# 08ߑ\xzifGy*1Otcy_~2GkK2v 2g@ Q nql=- $7IK0'pKI#pàJ6s6>O½kK{弨p̹r(1ʢܡD$f4!d'ǠzDZ[q+IAlI$2G8E `IQJLpO^6kzB9iԾF8ۃǵx5m$̀A=ٜLJRHX{g +Oȉ2*H;`{n+^Ic !p$Sɯ-7jwP+7Ɇ}ϥnAIAH;f[W8-OƵɨ^¥H <PO= .P2"q)nF{}qVK@HVzjE)ZN8#Fvx%# c5m*xdMFrK{8_)$Ҥ{^p6;s/kHb",c*̬`r3ԛ+lCsK361ĒNI+]nsgUM-݈gcq< +JRsjAC93mRW֫4}or7W9X1*thfJ+c +ꕂJR)XfbXҰ k5+4 # `VkQPa@ W)JLдK  SH.znH\5`#O|5x{H{kγE"g{ޘ.A*6RD60Y#`{g{ME_SZYۤD}H0lm}@* T=8O3F{̅u;hO ӎA!L|_觜zSiJ(A vX%BYtw#ԓM;AՎ6E~r$~f5^$r> ElJA|{APlE\P4nO! , 0QQpI5+n#nV`^jm)JRViX +aYqYZ $#cpJ*qA#5 *i.#dxN NY8>=98Y)JR괥)JVQrTyV)IѭJaX"@FK;r|])JRWV]V)dTh$܌yWq'RCyvREnD5i.f2I$*=I TxvkO21K(!;W #gśh UVd1mϾf.ŴY=Ι! nJݪjcK1I"6ͼRĝ̾ou #W@`Ҕ)XnUvlfhdM4eCnB3ڬJjJӺRh\2Y^I v0U'8{VpnHᶰlCƱogSlo'7NI.dU#Ϻ޾Uo² ;sT$_de2,|1w'N?]NG$@!YXpN{%-.$5}Σh=?ȼ(7qg|"\ux{o:As{2<1UF}w1RV9 + `gBʈ=Ͳ1V(ZeV283LL~Nei0"$ԍS{3 Km1n+H8S/n= f_dlW8^nmvNPs,(rGJ<ßzI`!egUZ 1KA`r#5[XYJMH']WzsI ;0 <ڣhxQo&7F**01[Ou@0Qs_P̗6 d2Aʑ'Z~R1h/msNp+lW7VB2H*GGo}L2$v:3۱=G̠U=[]ZhMuwvvwA*H=Q~[G-teGpX6orʇ*Xa;+w BȄ%@`I־lq4fQ=5%0".g,39ڬ;w{i".U$7w +3_X42+=!TVPN¬okycQ>i5k;q2YVEf\w"㾂R%F%CI 8aoC +ʅrԸw95p#"=~"&s8Ҿ&-YdV,ݰ|YktJҠFvmdC *C%HA`.{ !/`>ȅ9)^>9f X0樺-lQ dQ,Vyf/dYQ +:R2P^EO#· aQrM]Cc"~5 /!eUeVwZ~]}CE[vT%-^ήbxc $F؅R~T;nIZ^.G~~8U. E 4'$E-]xwk/0JpJ:jŚ7mrڮw "H.0pLx6@YYe9_3O,*)wH$e`~jmْ{ub>RiJR7j<@]̣|okZ6RGMFAʁ]J)@괥Rx@Bۘ\H U$1t(\G4K#*6N~%+\{sL7(~ڱH$K$&C28%H=;Uc_H_\oaOhf +fG C#h_O?*X6qTZ'羱=5xSG{k?&LHsz#5b//nQ cd+t*ppr]vКz4m6 kwqVq$m9DKX<&ǐsft&=K~I%qGM NvgouVR7F;yQP֯p+.vp\sZ[SP:[M1vU\FYw>CxNK=4sף)we\hOKZXsW+%8WT,HB䌒{ Q<[sm6#U>P)U.N~Y" $%A:I\XMY{^Z!JHȹY2b +Utӵ +wo1q5IК2`w9\?=HMC!%ΣEm$S\ yz%2'G|mTab4-*V瑜SAi-5(b +l(ANAjGok M]6CW$̌$*cX/u# Fg!@ "dc+cP8GoQSE?lJmOtM1ņOǥG/c}_Q`5)ip@<҉۷vs1fxn$)GۣI$Y +g9Wx+[Y55Ȱs)e>1Ā8@ޅgoq$hfTU1hdՕuO"'( +>VfO6x6 gEV;KU4>IӜ|{Ty&fD0Wqԏfr;օm]BѶy=5_㥆K{DiRlv7ww¥c$is]}idZڰjpym5nЈg^,;IN%cFDcfI 9bXcWksG X8&F; [~"ű7qgk$3xFCbݎFL͟nC$[xN9{E8ʸb=\ L e-Gq er9l>7p/՞$y1xV#-69la[5DB6dW>5ccR[.Cj˲!MCr|<ƂolRvgv9FC=u +X"؍Ox?`H5٬"/ R6u +f8E<GgW}U+.qsߜ%- I8IAR&H|p +j 53xt11vy6K( 9PG# +d1apptd)Jq!pNծ l[e&[捎PF+Vj.4E'">%9dsaȒ$/Xr\47 8/=}@j7˦^²$*Ǿ7@C#R9aZC*{PB#FaU>+P𶟰FcbAD2>A}GU%,qUU@; +wFOf˹ݎߢzLVnd$AP9$=@V^L?w5Jz=V2=Uэ6!G FFoqEw"ϙ#*QPrO6 2 Gs=Obe(ZU3|NmRF,s0{|m:FrA AG" +Ӡ (J:c&S;g?[lt,0şݤrvIVʡԫ)A*rK&͊Ҷ3>fZu)#H$e`~U2o4;ھt+kyz*T+ wzl7y2F0A*A9|&[a]ٽݸ ;·* bINp2H\? +-nfiug$ #`PpsWlߤeHAS!8a(< qE}HLSoh;jێ+Hd`[( >bn[βpLbUb쩚((rX8k1rX㒣fcm qFH9rs[D[j' ebh%l6colUU]aUbD*@_<rIdl-̍)=0ͱwN2E&$!C ;HFG֐ѡA9PrGb}M}G +DT/<+]"0$"8ֈt{}8wĊa#s_q fDU-P lcuziFN E;ghϯƷVbV5|vܡEkq9mIN;-`F$q؁2}Na4xa3P[=q_Q܈H!@8Uc oػ6nQ +/wv3|˦ZΊA*Z5`11[' r{%xŠSF1l$B"P0=EJ#-tv.ͻvm6 +ŭ6I5E +>[5mfCeX*= sRj2˿75!MFk(eɶB `@=+@\HbM`19tvvv]$RM>eJ)<@ +$E`nPa،#_VP_.I9êϮڈ_3BRE `4;TĊ;*>8GoD"=P +(Oskꔥ)JG+"5S}UJR괥Ff!ґۜ +1ɩ4+\ #`{rlktU(X#?QʆL{ / dS`갥jCAd\V`>@;Fj.g )Q*n +pH/ڋ%4DY7)aP˷§R)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JP괥RxkAdɻP\5v}pZ-̋ J 2mb?eDW];P[޴ +weV8<Zn$2ђFJ,yzKawt;м2k3:FJp MXK> W,ՁfF|WT;WLcuZ2jLHqL3T Ydnu> 9nۃm^*qdnf0QN$lw[ȱA#T{6@'F2:Q8>G=kTso\+d.$1^wg@5Qy݋y!s1$BM>CI|5 sɾY%T$t]Ͱ8:YPap۪?T5{9aY4vDdqjK($`dz|+ꔥ)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)J괥W:jPC$Ngo2> .GL)!ssUM.Ov*UFrbW.gML'N(99T^&IT|a"nZ0@y8 ghehpA_X|{rj檗tӫVc[nާ# gZuavgg 뵙pzÑGom +JF 2(۳s+3j#798QkUբXܕ+,r#.2[ j$GH +420 +IyY S ˌvxn+{2s+|0Bv5Yd6$wv{;qSK wБ6EAfF1*кȰ,5[mleCN=N1ScXiþZ5MɌ`!OJR)JR)JR*NXmtdM1kt~"sp^P=Y@5eY)J;FkUV0͵#R8rO q ~_t)JRcpuT]GPM2EvUw' l爒"0p#R->.&mb|Z4V-HȨ*HK(a9Kg ߊhsqFn*!A8w iJR)JR)JR)JRiu.)JR괥)JR)JR)JR)JR)JR+zdި|Sj^?l3Qkx5HR9K:xqbϬ_YZJxWh0$;IPrW[ؤY]*Gb MX"êjWwv5Ǘc#,}Ѵsh틨H,@)|ϗƯfӧA N +$GsU.,4]BnvʹmB1⤦wk{mkvim1 jknc话+Wԭ$DV1XHI&7[C=1ԅsaZh:kvQ] ۿp#!X;QOhu i YWV$1Wpg'ϊsj֒,b^FɂC}ᷜx9v {cB됥X 8#iu%og n\x߆sVrȱ4p,j^qv+n\x=[\hTJHN0PWώ |yX2GҼ#2F] .Nǖkמe:Q"TN 20sq\Z٬J.Ff5OHGϕm.FTJߴ i֮l%%077MGqY쮡/r!-$:.܂U~u}ЈI:ɻdӑPoRԚ]bQ*#>`< cY䶆%ƫ+X݂S^ɩu!e$P{GX"LI3Er` +.^]D!d"`Lr.pN2<>5eZw1D$;IFQ0r$Vusi1nfa!,A?ܚjڄv_*CKmžu_o;v>uk1EjrfJp8jKkuk9y ׂ@ G8uKu\ZPY2F9Lr~rv{qޢx{K Q L"=͆#hpFq񯫏6h!(C5K)9s?AƱ'*w!d<>jAViE*n`FWU 1 5\n;x'LeeeRێ;}WR]X# r#`II#yT/saJą1_ZfOpoAP1# =JS՚f1pnY>6ƒyQ n?MJWI42Z4Ȭ*YpE9Q4mٔ"!!v Qgz[9<0o5YuqYK;PrsUIñДv'Ԯahc*##WrϕB+>yrȬI@;2v#_vZ/Qe>Z(wgֵhBh9>zF + ˜8 =~JR괥)JR)JR)JR)JR)JR)T>-PօyP)$h*0) dyV/E`!h.Vh' +4l#, 9sޗeƵyg,񈡵pI8系3Ev|r^O7/(рwd2@O? +G[Mm/̖6F8a]R=4ikt}cfݻoq[Qj:HVthdp7 2@ mDjKnƫEY2I8¶\O(e8zk]h+VA6am|@=B=Io`P2+Q}&m>5굫H] +=l iz XxK 3ȜW6t“Q\F`NpFF>Uf *d:VU#? +>KK$w$v1!??jaw5x^w6$e:,n*煮DRYeyfmÒ8=哊V4JFbc +;#쪟iSjq43^Apw :i[}D{{EK`: <[w@q绎|V0Efƻ{6x}{9>|_NP[qv%!bP,*\9PIqhڵ6Ӊϳ#LI# `/~*M5)kiAQ89ze%Hjԭ%d!L 6`n~L:֛ 蝃a]D gUnn&-"ٱ -0k=/b8yc^84ktdjT\@$WF}5Kc)6E*f@'VwŸUyĊB9*%A?aZy%H:qF ĐFxKh"TQhzzU.Ko+>q nGRVjR.-Tkh70]psBؕɱ=6Yr1:Vh^[tkFm>_Ew:ӽ:[q~ϟ~3kuƕs ) W! yc'S:MneMa8;qݹSHUOe`2I~k}MD_ u(n!奄>O +RQH i$gfhVS&*MI/FeG$p[~VxNլ K#3iav8l9+2yKvu#UMGRj[ $*3  +}gsoǨEY}dVUpLս`~j·7j{eȚ7F8RprFxIq\[`Etl =U^s1Z$)w"ŀuo{*N=|k¬$(3*,$1'I1hfFSd"GQ5 7P $]A4ϳ6N+LVBd>rA^>&Ey 2 +K*o{*N23^0B'$ Twz]Ŏu+T`Mvd[>D=kW-[L ](AS79cA_zv-^(p`޹0629#Gukz X3N!Y{'z+\H"yQ]!u ~NjƷzV=夢7 v-ݽRD3Iooy'o|f|g*o"Ք6s#襙 R0U}f‡*CW8לo/uw7krR4&4Cdn$sW9ۚ? +twFHaǴǿw~p۽CZYn{T`|kcxЈ.re3#Tg oe\k-* }$EbTgWė""UK m#"' GO7H |L{7Xpζ?ȖeW[k9R?MZX,@U5 9zMPɪzѶ3bGm m_̮* S;{sꯨEdTzN0mVKyXقđ<Fp*T7}f1.S;1n⤼r۪_Mk]ͱz "ǼH.L.X*1[UV]P,A' %Ik+N:;hn]t6Ky57;i"WIlZX:ƐڤwDAsQu}n "Ѯ܆PT 00U&—.@9lk ntR+T`զ;evdFuHu 54iFKk 3nM76O1Wk2CWj$p Fa0JGo8 +; +8rxݣWRC&GUm?mFuh4ց$` ҄PH,[ 5t ,y2TǜݽT.]QGr(MdLwms`Ί (cr3WD>$V`"^rRu g>11f< + +inF/Pʂ;{ +Հ;tFLOtWzf;5y- \ھ$ #A'\\>-w-x&>vMy[twv#*B\3?BAB @yV'j/]}Yy1ܤncլş%cxguPݲx?*&*F޾dPH;wV<9aJ<)*8,B~tu}#4 +g=epw tdr7|;Wf{xYHLHKce-Rm-%* g#5!/ 6sVr6L6Xctۻ-fI61,TzYIѣC+ FA"4_oA{ot W^Yw|k+|ѣlL}vUz{/TSksC> 6pDʇi%vk_$t;Egl" "'@*A[Sέy3cpYߧ%vg$ϳK~ c5fۑv;",U <q:L1C\L'8K6}#d#@kxѨk[^ |ɜ n[kjx1SO5Qu3ɖ1ɂĒ9 +~1®u^k66w* ,ʼT`RH>Ut:~ c mZNHX}e`䃜5yO+62^( .2׫1x,(?,߅8n;ƇmOĨ?k>=mcnI&!MX g*р}Xåi&eʌC E4HkQdnJlP7n-m[JI48' ta&$fUNEo[[ϧ uT]gT`8#]qEb@ew3x,oTQk8)cIr7>:K x#(3,0(n~⯵+k$ioq"I!2VV ǕYxrHFz܂UYr  +-=:uI#`Cq5洵Z0qDU6৏|'*It\k,]J` +RcpeKg:% !zNeVB:Y( pslյ֡,n-c<yg6x۰||Δ)@괥)JR)JR)JR)JR)JRXèGә.aT0#|VE*iBwih.XZodZBK$b3~:.xPUA"5ajR#(ݣR;Fb, +٨hG@BȬȠЃy+C$ٺ[=Kqu,[ l}5|=ew;\4dHdwla|gNy(LI*~vZb! eH;Ơڌ.~OL8bzag9-V@Ʊ ª?]Tj%8LA@ +UU,!(^jΟ,isQb g| v?;K Dh@$\z=ee4oqvWPx 2p|klEոhWyjl +bMvyXg׊uq5;&E1,X:*muX˧g4-r /+;$VunH+il\" u*g$qx[MUřC8cݰޟmldFNs1 s1_?svn°eM 9E: pJwqb zѭ/Hg:Ƿa$R;9&O,'ٚG vܓjL,ѶpG7{:l C1\I;I#$OBem6t9T݅91Rdm&)Vw4Jc#|ϟ}ǣZt׋ߘ`$NN0BP;g;yNyߚ}j.2efRT%Hʜr-w2!i#9|';T s_Vތ9"v 5qYZ9"ʸFE|x~aY<&T6s2y|;g#:%B{U`ӟ.*F訷MU:gdu ZE1I +&L!;,'_M4Z>՗o| +-cX;T`d8X~U~$@b{ 6g 8POT{["ad7}"9FV T&x{MeS 0r#ł~yHUą#uEp57mMswYei&jDPgS;ϑ5{Slֆ0blRI'q$ss֣7${PIfg'v;[ج2fn sp3.@U # 劯PH5gwD=@Ǘyb&i-ǵ2F{ neGUWC[nQXH[,G%*2pʗ: ԭ+ߵ079+Zxf;Ab"=˹^Nq߶yk}Ƌktд96Tod:T)xvQX_wZ= nFVMB4)+ULJKy6ߖw9>|ۭ&Qd 㫲ʼ`@Cs>tH)"U IsorF2_;ƣi,z"==Mg˵}IGq #7$S}5:;8("(P0F.mooː0 i>֯gG݈/i.YO~MYA+WnݢbW͖eȹbqJG>|sY,$# .}@n;TR(괥)JR)JR)JR)JR)JR)JR+ZFcWRCl+ $=9Va0)JR)JR)QoL`bO`A$OjkHEͺkaVfE>ڹKbXa 9JRX +wyM4dyT;Mm'Icxf1i܁ g"JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JRc$YI$I2qPu;:p̮${ l|3YWKգ +]Ke r3|}Wh'WS #T1 +7Al N3`uKQ)̛rF$}5*j%HTؕ;X|Tx:+2nA3䃞dR3o2"Q{vP;U83#|fmNȲM3 +ؑWݥ`dC28#7nKEY9p*9dj61t:̈t)|DBEI WvZ V@ V | |j&Us#~;m{XdM(R6.}@լ3%,ea˭ipʷRi%g4ij9=0LA|}Oab{niC@}SҠyu@w 2y'1{Z:%`ѬǕ\(BhNivhb[#b>Tm~̊I]A'kL]aNnoQ'hesQt]WSK; 9T$3s82̐)w`I$>^b-_\6 (IOL!W#\F5,ຂw'*w+'V#*A\EfIQGvb}XjtFĎpBz:O[HKՙO1nN}VlU-A)ATY̝F웆{|G"6mn9&nꭏ\RPP  M+v%H !VV2[°b<ǗƦT+bUyd+0RA8*ڍrZhćB緻^C,H\"A]J`xAp[|+dM!LA=P, >1m߼mZ&o Bggnwp=ָ{9%m'o5UpEeYd7qJ3_wzQ< y'˰ն;DݙHe>\_Rʐ)w`I<5UԃyU=8<s[P1ZAҐx/.>8~* kv))#K8 >R'#p i.m$5PKP 'fK!dG8@]AoA}kLCIw*Z= +4b]jU`X}.O\cͅ\K4 $I8bFS&K1Ac T_,Ra,\A }jg:>FΚDĄHskGvEmEŨc"oL{<2.\eG Ǩ>Uξի#I혣נ5&Nӵdϐޡ6PifY縁bAf 睽^-ZAo & 8q<9L0dUkXm[H&yJ}x>oٷ5l彆u5ҳD!`8p{םiotV0 +YTO8UHgSY?Qo;/L;ayۚeO -H +h}q"H&dIO* G?UWj2>qk1!1͟Dm4ɻ BjUeb|3E_x#:\/7S|;=sLj6s4@v}>C:`z]q~h1R5 &,M0b0$c gߡ%&cid(%rFUȦ8"gfIBffnI1jUmKYѥ +1|Tvp#|IC>f~zUHdžqAYR48m-%>p n9OK\Du>--Njayt<=emقbZY4y#I3O{ *A]ja5Y@1S楲EWќ <?7o%w~v3YGi"߉ÁðAs^NgexlVAg wêdiTOC`~SBr_i xaU@~8?I EW'Q(xNHbG7ڪ("M!c Ė=󊢷OOlOF@I99y`U, 3FCk3(;*Aa–?mLN7'Nʭu!]l#)Ǧ|Ҕ(괥)JR)JR)JR)JR)JRj=]@$uCPX,1X309 +`899m4{;u8qlK/(\]iwgs#oӭ6Ѭh !T` 2>uB #sln:mz1qѿ7c=J2V>|ޥ׶F̒ ld`{sIA +-{I|ZR_jW c5xq~6;)T20؊ b€B|/+3}+2lVrF)GA5|;f?gFRAGwuG\Mx~kXAqʠ'ε4+[FVOnNNN2y8'O%4U;; +uibGeT|7qR HzF{P['LDW8r¤VB#=S/oMj #I3F7qbv#\Dc9RG#ןC;Rm.UHcw\mfPYpr0Oo4UclZW@Fvrgk$% +vTXT"(UQ=E4L2@fqhISu_jJsJcaqv-|U7.v%R)Ku ݠ{CP]X_귑ƶ] "AĒ{`bUVm\M1M#̤DoGo:V1mf+o +4 ˟E +Rwvw%&K.S +.aI6Wp3HX] K F!ʁlqZe2" sÏ* ab<Th?fT+N#6G$wlu ،3F(+n|id]+h4Qֶ[Eh8QQFp|kmh4j23G @6 K98Ϟ+=")`J&Ѽ[kA$HUb@{U^=łEjH̥F3UGtF B,|)i3(`07pH󨺎vPY@C"aB e+?M|h $D#@H!ʻK.}p Om.ICc8n.[;®p<;މe|mlrzT KdXP`eo95.9~jmWŠ(8Y{c!~e,*{3ϑ|-a\@UY]BÎ21ϗ519kXp +ӕ{cG,9P}pylbI7ػYO[,* $QrkMec#K h휲m)JR괥)JR)JR)JR)JR)JR_j6b,VnczԚWȯy}RBV+7ecv6іdqS3PZb&,]SiU!`QW؅8ެJWpq׺bY!QdaJҔ)JR)Qbm.%WX >v9llyJ pUnz1^CneD,iIEKL{>C]Id{ >ʓj\i֫*ቑX +s2rnj3{Od{M#[!'nµI[%Vf[лڧrGެIjV A' 2~Am3WCu 3MW'Ԟ6/MksmİL. ]/ns^8) \qՃq=?nML֯/4q 渏n[#kUnl/Z] G[m?|\Z]&c L{ISEG7zFbE fPwQt#WSWs 1֬uN}$Z?Md)9!B.}pkI.oԠ0<7b2N2rpZbn$XU'Rǘ x#΢ݮ'DY&EYP0|Ak1u"㬻\v O5oc$@2lr=@#ŚEg4bAeΑ#yT=[k۫69Z(%2HXcnJpq۱nI4bs;e%;TAOby%!E:|wM^p* m_PO]hG5"za ]jZ<\L"t݇;#<`6y}go  ,${3jI.u8cHedF{I'ኍq մčsd~oxd#xrJ:iBsbḲ@]ITt,PC q1qϦډm^v^t2H\6$p0x:V>ŕ\C!c\&v9(S#dVıʉj),9 e} T?R3!H E]#|k҉Ey怏%cm'LT.m4wHУJ++lG>Ue\<7"${E 6!u<զ=ͬRܢ#fE%2qTx[4e_t, ;Y9{Tuk\Q`o 5mNIt>8Xc&$* یc5kG|lc q1FvFrN $l^ֆ vg9 '*A +O-C|q3;FH8 z3k|ZDbY"7Qce9vr91MY[ewK,hvGp8&?.tVWFDq8嶮2q:Z듽ɲ[#秔 2:1<9|[wx`ĝ31;WM@3 +͖nbT03/qv"Wr ̤p>sTmfE pڥVL`;d/.R=FC3B' ݻ9aq+g5Lڝ{[u$KC/aN~kntwWQLExڹ5&=Jxo}f!y T;+xK"*:gi* K}~CP !pJ#vSw y=Jhl$HY>c\r1ү:%?io60{gS4m,m|{~p>UkwMmZa w 9!5u-FQB(e!LJer}qZY+Z d5<4S{y*lPGʒ$rˌ)˒;Ty#|j7*P%prF8[m5eỤǜ{ 3k7VʓlYZ%z9<`ommLqHѻnJ*$JR괥)JR)JR)JR)JR)JR[iwڭAɚ'%"&9%qƫm{s)n  y}gtԷk Gw\v;'\Hdgd]Ԃ=g5izB+Tcb!,I%wǻ;.Υ쑤1E#(͙ +bRAy[4wlvk "Y>EeVW8:U+.U|J4;粵[8[ymy^e=g>o|=*Gӯɍ\@J)< 3\_&<}.2$0Vbdvf\>ҫm3sivwr\FP^0>i>@m#c&{8չUk}o_4 +J% @ ?E+LZu֑Fn&%,j% >vOiuB[wgPyՅ:p* ro<+C[ fH &ޡ _Z鸰VY-U2# $@ Rx p|FjV*]."GgT{~$z4BmBFVpGEjKOnt =ڤkp82\>f ik4Չ-щl,X jfospR hxM/rO*{v[9ɍH[$TOiQ$qXKlSyN T4A5SGImF=V7ݷw.288 )xR4ilUJ2H ZmtI;Uk2 hѳ+o_Cj$XA|{p2yEOnYqyV5 6r,{<0\͗Wy>`]N)_[7oz*X5#%6o4{xzt#gEeYDr7 +<MKunVdrDN;SZ<9ˣY~}[]|wq$ A5Q}%{Z4 Ŵ`Y L.$}Wv88xria(aϘmnzYkyG-!Vr;xoUՖ t2L"c' {צ.abPA㑑TGZdV B'y5Z[&#A= 5UU`''|*UԂߐHJ*ĺ\Νqkim'!?F*4_Z;ŵGU!NRۆ@lyUjBV$2T xθeR1S܂=GZqSseb\b5;yZki5-`4Kk%~ T{ۈslfne4QX0\|zcˢ4h6c>p8ۓ*&wewm3dI$di7Zq\jA8 m2=Ol;N-`<υ:#%:r7 cMN>fᄓajZךѴZvI&"צHSz_ E{;8q2 Lq [-B+>EQvQ}[=2-rPt)m}\bw|ϨҵKm*KfڶLdQY]O JJQ֎愺mXgqS,t@7*"(C`;;2H>jJL[&ilʀX6Koz!IhRHf&e,6G\TimC*cj"DV%l{;'+no5(g Am,6V]W,9U`oܧ8}8mGP4ՀD<"<\r9vwo +$bbc۽xUiMV)E]B~5'd!q b."}B{pܲ:\g;qhS_˪a"TQ@'Lgÿ%tEayÍ1]SG|m֙r5 :H"^̀6#T so995,58uIXѮV3  ^0~w~3ҥأhtdf2$sǝz:}V,SU@YUO G XYi$6Q#;g +ܱcU7Sk6aE_&BvqU)JR괥)JR)JR)JR)JR)JRYbXWvs$nhxK63a)vb9IU.+4)X)RV1YcҡjE `vu v#<9Y)X1Y+ w:nm@(!GA3TV1JbZ/, rnr ːAZ|) Aa$VS1Y+fbX1LS╚R++5R)c+4)J괥)JR)JR)JR)JR)JRI2@{Tl1RUUaAUqjEd>,IM} {r+uJ[}bf ֶ +2xs$eX0+HkbYh,?@=gzúƥ$RxS#{L{{~3#v=q޾U@I ܒMd8`bV9%O H@_AWΑc{l3Wnl4YzrDڮ;\6I-QHTWRO$d*jŷ:m\IH + y߸uI H M{=e\?c3T='TXK +ڬp/%B=1M] + ' xn#P񺺟5!+e` lQh@0 c^u麾;`pk04+d7c;r7c$,zMS77:SI`UU!Z%|{gFG_t +{~,B҆ G aV֯ur*$.ۑ2rŸ=;w;VL\|XYUR=?_]o"?R195W6#|8 NlkD#,PWog=[繊nq`?I"̊I} aq"H#S[kW5P W18$ ʐG9^Z+{mCWQ-c*N쨺!) Nr1ļ W(!r2Gi#dT;˝/Kך̕08/hԤ[nsF--rK\i A' k+KWH=Pi1Wܜwڷ\G}|.vOia\L+6-qP'VM{-U$[+޵x=cҜ9F'cCSt;xͨ2ԛ{<=M\k-·b*]" I *]Ɓ=8yhh|)CynDj~mF88`д-RUVϴ`<;L6TeaG>N$E)PHsǖGzգi0MZ{6ǝB7VY/QʬDf +Ǔc:{]BYC +n\pv=2j[]-4I!_}C {e$5ܒX7]Y5^t4d$䘃 +Sbj>kMX( L(8+88 @cgLHtb+ڳ =_T}b+Dg11Fߛc_/|zp\K4YLb/-ݾ5;N?)`s~җWYӢ _.vUld;T8u+yf#ALI"$z .q"; +=# +o47vOuٚ8bTc[A/Y"غ0 +Pe9 +kogm( ++iyuR"E+@Σkr6XCw^,lO3 1njuՒ$XÕg9NAO"Lq"Ǎm8;UV#:o"'Rr7׮)JP괥)JR)JR)JR)JR)JR\v$} ?F +xPPX 8 Ǐ=sV« k2F\+żyV<1,[V`C$ 7q7n-x6'V@>ofǗjֲJ{~uFZ60hdv7.W69-nm1aB0 +@#zۤMK6e8bM[3bc$QYvy9`rsϝiS K Nwd=d vH„xbXQUPXC IW8`A!fV=k] ;†ؼ=vvpOo~Z@e[mZtK ^-y(<!QiE Id :[x~h<>>HwN ϭj4#,ҩۜ`q7gWj}j dfòGrg;[a~ mbH gUޛo}$2fI>OZJ =ɻ1T0lnݎ˷³w 'kuR;v 㬧zHIs>ԋ+(PrNI$I*ebwGi.s?5nMz3{ W>6VHub^*-熬X%F(.$AFrku֟YIjљ˱ܱlRkIk 8 s +!9!@_wj(d /pUfr"Ӫ"ffb3y=Ɣ)@괥)JR)JR)JR)JR)JR\g3DRYy֛ NR`bv0VYYI*pAub^ȯ> u8EH)JR#R8'kM+=Fdg"PsaF` 8<|iSn-U6U[DZT2EI#ɻ +^KjmrimTTV$rձNxBkٴCr6evfl9e*0qߓ^׌4C,WW;,sU(K{I-GQج*g* r{%A*BxmUkȉВ Cv8Oi^[A^},78 \):#jn2u"2HP`2Uti6B-hɺV8,c)#5էX5Le Ksy^huJ63<u94{HY-̍'L${ 38˱^8UWz^5xY$y7lPĄ\/%Q&.oqt"E.2'g3[tuONd݃ TbM:ߩ/3E +n8ڽEu%GH%*[n90#j┥)@괥)JR)JR)JR)JR)JRcms}`m2%zUEw䁁nSX*bg6 C9uwٵa Y&a&̻,d΍դĶ:#]I G$~_gǦ.WF](q@'ס-nPvchF`'ꪯ_AfH^VY0Ͻ1yHV-f3qFOx0>=^msᄖm IJBP HwmsI8 ~3:~]9 Oo{ed"C#.$݈uC>y6gdm }lq%e@PdU*eI#Gƾ-4I%仁bT4U*7pXa[90[Mm&{r1#j-n4[)#*Kq"7[pT01K}~i x"^RF`w$++Pmex]<UQiz{[7H7 O~F~7>UewxqȂ&ތYvğ#R}tyxe UxPiuELѰ` @H9)qU3ƣLKwV-,{נ\xv#wYLRM] {ԯZ\id1t#rl;["haYv+JH? +=jpq,#e`]wʕRld(hzzUf.^d}"*NA?MhC[kYn~_st$7vE3M>CF J}²#!:V4!m27 . q/i |q\gϵ;X wRGjm\edv2HYnXv]iꖺ%X2_<$23kms-ڤ0Ũ})lN03UxjFkp&3dduIc?]"N F(Br;~ʟMw<"Xj)s^~]2}#RP(% >8G <)`:"vCQO|Bk+{ B %|iLh q(ʱfr +1e-|ZHDѩc@79ףV3U-n-Y7h#-;GI8Wֵh 4JJ}yZljMOnEsJe)~v{}4Z[4w1[cٔh) GƳk(byA  \A@swr۪o o Da$R)9@M>j֤Kq5zI {ee`*[IJk䍦x"GTZ2H4u׌.cHYrUK1 d$S|3֖ZFCg%Y[jJǞ¾|ImwwimxʬѪ qM6u(m1na|VfeCتpIqt)J괥)JR)JR)JR)JR)JRS)S+4S+4c1YbRbJ)LRX+5b1Uh_GvH&PB!o' ⬱LSfS1UH&ۤ2v7ua9 |Rt21brNX)SҔVkЭ7ei +&1# 31~YV)++5SfViXҔ(괥)JR)JR)JR)JR)JRY 89ǡځv99b[i}΍"%w$Q\8H 9ړ]O̹\ IFFqTU_;H8889Ңj p# 9UR{z+0Ozʱ HU'nFqgz⾳_=Tݳp݌#?eSk6WwJ\G=JD*w2*$YT#U닿m[`%;BF@dWw6=sR5qu FBpr3_ Q%cK謆 2J}UPߵSRj7K.!nzUq62;*$Y PA_&d { \γ*rⳜ-4:QJ S@užcp!{մU]K(,'޾ق*PmZդWm1)ԩa{楦Xs+4k쑱g(kk(H rʤ[}G=rcTwGH=# zxdTu$u9?cM.W_}@*AEa #{ Ĉ*7Mi yg*7ll4˪ lj v]*VKk č}sd* lW x&K4_m; D^8$}ugCqVIȶXN83o*}&i֗7Q Ǿ]<@P0UN_/mr1+MS}* W_ +0Xeʟ򮏬ig32&JnTq>~KtOlHo_v0[5* ĶЬ2DUFwNcP{޽[(JAA+[Ifŏfvvm@Q4dVY_a#1U-#mI1+88rf\&#S}]B6i,pqAr'iI!V9*.¾+~34QʧKv%6 Oǝl%*=``>}ihd(e )'9skg߆۩N߼67oJߨagĢL¸f ;{ڼ֗z׈7"u 0lI'R㯤ֲ&b[I=ʷj&qQ#?lB`aI\cኦգQinbHQ&u+ym嵊viє\Ĺ! 81^Dt9VE*{d?ey{8&Dq4c (Y{? +s}6lJto Eʏ,nf@ԯXOXƫ4}uR-1s}[\xq}.Wm 2I=ʃcm,sƒDAFUe#R?;X5}"9T2>C<õi\ (¤W,h0FؼIO_:4dwǻČZ/f#ݺrܳl$m׳g8 rqOl:-^ hnovn<ַH7I,NHA8ζ_n!Yxe Z [!yTGER;@>+F^]L9G*v"2|U&i%D,eWe-[,N<|_ZO 08rR>kd6K/IyU. 1MCsp7$63Fei8'Z,["B; aC 9':՝Ca=>k7_&*b8rr~U s:ѻa趼\ҡ_+pzv.bX62f,Y-Z ;fokmIV% *DIRc ^(xo-ʩ$Uw3]&Il0T\qZ¶">hݑR=3GbEB(( Q}HLh*N2U+Tr< Lnػ;.O`>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 38/Tabs/S/Type/Page>> endobj 114 0 obj <>stream +HW]+f,\ Y؇re^?WUIi;.ǩS_| /_tr.u׃^O +y=^?J)֧Ptx}QWx4~ '5ãhGuZ;ҿ`դ +[J?6'V] N~c1wHG 8/oH\><97x\ rf+@ќ\S*~J^~))H4ܶR )¿5[ 31ኗ/sBEy ş@l%9Շ [?W]j|tܰWp:ŊWFD!m,?Uw>^]Id!%'D6}Yr~k˛f&14 *הir{:LL7Z)lV!4@pN,5]cD]T1\A;9&L""J'*YN9<@ݰtFQc@ 6 lbG\prԃ (,_yy(%0'`T$ٓA+M X9@,$`p|sbd\:| !֪pjN|a,KCϗpI;U FǏԥ@&q7~=ɫP6CH8b-ðX Z.0J8(r~֙ߜugW73]L>vS8ZFgI)"M eКrsӯ׮5@%-*bϣΊJZŔi}mсI8~Íڏf>g/!Ac!r4jNx>]cXPtTؒ̉LΎHaɸaԠ*zq2)lD(ۃTsf?>&zUU&ݥPk9:.`OtV\( L-Q0hUDT\5dA0e$Ą lwrފXڐth? Gj:.BTi7WVɂI#j9Bʒ볪 >N@f 5T;e DN8J^ه$\˞=]u +)^TR]=\^TsLp8ŀh%CN~c4R;+>T$ގMD'pbF~`*P!"(׳Mu ( q1ל$~/2TJuP"hw`ם: +Ζ`C(rК:=F^HpeX\!LqJv,] `;cV1/ZF|7]d{ԹT׷2tHSW.PZ5UMV|Oo}l]VfP5k _4XRӺuȹ?bN̋kR1RY +fK?p֩ʘ *# ݍBzad!|Ҫ#`0hs l{:TLk;NJݶ f*֯+]qHri"tTЈH,fSɂ֒` +%`F3ofrVųu(liprN]rTX3!:DyR:]E\w9RM@}(mi:DԇyEuHFOA7z![o >a^7(;ξŹDPTΎ~_5.Y7R%#wpjS̹|HzE MIR(~QJ1C|Ls|=۬ !EZ9hlβIêۇߡO~yw1B-)p}9<߂'*aPjʼn+vUhgԜuHh _030CH!UĪ aAұdVˢ, G#?kU}@P  {nC_5kUϰi+rJdn k}CY'Z_7BBy5#zBo x5X,Ρ *> `4eM洨{މc44؏Qڭ/Enq:S6?s,fM;.jђJ~YuP0:]\_/\P;Hy }TCGz%aPKPp t%Dj!H;PWCT +!ƔD +{PBYX=!fԭ +O6gQ˥65f@PlrPij-&Kpx:ޱO{X$ P4bL`/[v^7H:ڟ"T +"b SwO(IJ80a eܭ0ΝC,> wEYe\+HJ2o7جjmk^zt6U6u)wSi1dR׍[ +XiʍtP] '4E.e\M;^F`H2S]@%eMo\U](c5HddUYqR^. @@C6PJ@DiVlg; U.S1=eD :ْriFWh[xv",ܳ D&mJ87#{TzVy5W7,k9]@ܠpHS=7 He4d*M>Ci`K+!ٕ_Z.!DMdA9MzФ>8 $Ӓ`aEyBq"p) ײu 'n~a{qLjKKҏ&VuO$ +jeLZ`s6DAM +_Uv1ٰdn1 u[T) +־UL:N|fvn HT̨Vħw}[r0\AX* 8q lDwQ +4 6?BO[pob'uy~Y2s`{E#9[Yf#.} +endstream endobj 115 0 obj <>stream +JFIFaKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Ka +  51!1AQ"a2q#st$3BDRST45CUcd%Eru +&'()*6789:FGHIJVWXYZbefghijvwxyzᙚ?wz;'Sv +wQg*v{ V"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""R ]ޛ{g=U V"""RV"%Q_91 K"Q(ɖR[;[`ZzDDDJnǜDDDDDDDK^b'W}jsX8s5()*h9M;Bq<1NیZ +H8kh֪8T0Y/y<=uo^ۧAY:i=7%{ĝ󜜃24#[{] Z]ƚT}s$DԯltJTB-sP{̵߉VKti]ry>W4ֵRZ7JVT3 y=:6W4=UI)lRːyJ_WkRNMޥj WV,cL{nrb/GPoV銋_er=$XկҁkZFnö÷r9\g#Ƴ%Ff`eR'-qZ TiZbÍ'JZTVkjnFo|ywCš {Z͵*啋(vl,r$=e0ԍD)PUBNw,fRiZ裪[j¨.Z͓ph|gʨ1͗[ѧTjҤJjh9GYqqK=:Mސ*ap# RV^;7IRZj7H@:JjJ4*:TrXݷ$d"wնk@4* p};z>5ZN +5:): =3]Ե:{ڣ %ilq`qcQ4ˋHl0Æ\#IBN`Oe`>)܏|UmcBF58 BumqOyH_֚gd#~jmzԪ>;Z$=>Hܺ5RTTءC q{O/-J!.WpJQQ  /gkqXڕF.Y@vp#̦c5Z;hUśmB[om =[uVuhxa+\UiݎB䌱>yo*+pFMV>Dx֕[{wzjEPN֬'9:SŅzDT)Rh +'0>CFU6gUL.{r|92zx"\ZJjжjiUg8| G ]k6fN}d隘dPq}wWB^w +) +p{ ^j4ҏM2T5;9' y|ؙ+voNš6 UX r\&kaH줔Spgfy }MWvw(U@I)Q{˟zOJTJSu}6$s{V/⽽jH(U n#|;rӭcJ(;ԦX<Ǹ̜DD@( _h٭NPitڱw`L@6J OmRl[ѢRkpNx݉WJqNSjTl7]*TCWSҮ>f  7>ʶ}ZU#gwXj+!Q➋ycNVz KIp 0+gZϠi-P/9q~34-nSjf`: F!cSFA=;s#(UG{TaIRiS~$1VkZ-(62X.0U`j\\5g۝H +gQϟy+j/(pQ 1GEP3>ؔ4K([m%b Nryj7u(R.]uF)*B!#ߞ)[FZ&)/Tmg}E#3<;~u64\ei)@ds26ze R>jTQ@,\trrt]]RAiTSuM*,q!=ީ^SMEPfm@EI`:Eo,ktPFc +[pB#8ݻ߉Ӯc2Z"Ôm#olH'ÚYVoYR;jnpHKAV#oMnCSPB)`d({vz/UwPR4`zEJ1VQgMt[<2_U!G'2\-Juv' 5햅Y>w|D%Rj{bMϘJZ};-*h|ovb gAd45Ju(ncv~iҫwyNZ4i =nʞY[+zMor=' A,*2P(2FNg5F>腩cYU) -2[5VJ@c⍸Kj%P2ҤOMp0O {MxLiRli U&am2n^]2(%*˲IWVO#r$%zVOڃ]eR*Ǒ.wqiuAizJOlm5 +},ݕҰԉ R488矒{iMΝq[eEԹq缵EB;mǜo\^ivUSVZUdUKTC`7+|֗t5:ɾVE@ 8fC@ceI+(U7fF$ sK]fέ e``c4iSJ޲ؕ BEW +3rLZek*TWcRV + `WI4+^*T۹ݷ18@LDD@)YLDJO:ԮeTW\Gc.IhD(pĦ%b'͝4p;P{I]J#Ak:6`j8V%""1XLDbV%%b"""""S)K>ֱ`~IN3XC;~+\I}st?SeYt?Se[NV;(/[b}M|;[" <[~J/Z?mSk­S.u;sg=Z?lq*Kz{C)쒆^ϝ^>Ź>~x!w ֏_k?(~߾J h.(;סA\/u?s_}YsVv>5oe|'^#rz?OAq%|k8/z +֏h~HK~[\mK~*o57zͿvXn? [vwY|%RW @H'⒋yoC?bGu?I|'WCWZC;~*/54?Sﲿ Տ?k]WTs>t{~u?|'X ~N?e|/ZC5n-/T}y׵*~*/u [{J3[?mSnVVv>{X?(%z_NQ䡭q}O(S/{G? c_-]|c3q@}a|j㎽P+c5*s cO#Mgտv_jj:PiCf" ^yj5oZJThѬ醤j;QwcZTʓbxW_ V:p oSXfRT.-Y(WRhD6B>6loIY4Z"E4:d rFs \ӻN#*"P -U_ԴwJj.ߧr9 {EN=3x@@r{O ըhRG'>/mWjB˪prO>S9P0(TfgT/\jt6[,-#zhkT\'MU)8U;tw0J9Rx-q(2Oh.P q򹺧gI8U?NݞWUmj֠ HSKymF5(7(8@2U=O;kw(P\>CȞFԯLp*lz6ywt 0J;<{CpOuOujFi`r8缓Q[&W g-,{`[۴9>Tݚfۿy++vCQLB0q+|gH@5E +h=<,Nyu{^$W +bFĞ|ٌ@qC sB&=L\4]09O>s(23eA` UjU/M힠Rm"Q#ezk*hhZlrI\k׶,^0 'ԯP%TrvvI7IgBhCRfqS{@JDRAqx\Sg*53!zkT+"QT$w8}ҟ/1k +"W;x,X@==-ӵ_z] !8=RG<]"kܢܻ $qKul+P}=Xr228-Fj(RZ9^3ϔ ZN`t3m=g]JU2A$jJ.s-$GkսFVL1d g<#A6ΰwVi=_*I9Bz .dY#AѪUӬ_].m 0m.Ir{'ŧMǗc;~:S8ɩ:}];uif2wxx_O %jթ0ʠS( +z̏/QRZL*2U۟i=OrAue2L%`ʆf?v>buZ$QjnIg'ִ5QVFPf w)WӖSjT8?l>E'ո[*i +E}"o& /?;RiGU~ں2Akzm뉴T̼d\]izfͰ}I7#1Sae5\9f 6o2 +]WuwH`ˏLJz:ƘMzKɖ*9ǘ"EіP\TzuX>svpyy}SZP昭j +}O[oާU!rHGN'iVzVލzU-NKӪ= ')cVW{QJ[ 9{͆4)e G#|ֈ$o2 Eys$Ӯ,طy;/[Mt˄Y,Wo#32ZboցrT +cy`@ OyΫZEWw܆mjb;rG|1AiY0v%^LBޕ {T ;)tEILeeqxm~=jyY; +>{s$iWs{5zL4+nK$$㿔)Ui4:f%/C@WNjzδ4)1Cg$sN@[+Pg}+܅e;Dz8dQYjj 09]j;!JP6u 1'a}SRk֫Z!p m?6}a+\ioC]꟩M"}+ťoVޯQGVq$ W6?f$RGbWpĉ[TZFin#v{s5/WT'$n p')>avbV0Ǿ;fzR[7ZU⨨ݑYVncR QSk&(^wOmXVJ7UqR`͸2s2;zIڍ$t33;#n%t˪T۝BEZ,CrpqxT/Q7V+}N|jڅ[jG~1%D.VX(-f3{[Tg x<%h[u.'8ϑQ=J_)@.Cp]vfRPOQX`G9*릏VMKfY֍Ӣ9;vc=33}1: (/ @̻o7E?'[Tեi='35J4hS5$cǐ?,KxUZK" +Id/)=Jd!I\AhYK] ^h` IKruJ* 7O,O2qK^TFGb<湬M Pq93Q֨Tn=Ai8Ϥmk?]%g .p6`dnuW SNX}ٝ$1!O{GL.թꖠx @9fմۍ0fcZJ!L^\]QYY7 ?O>3fUJUi:Lݻk.ViYP ]I0s)%7"j*m +rwzM (PTI#d_ͥVGri빨{d)s'Rh)/V eaVFASJݞm2階g'j1 g^SZpUo]gfqj\c=jv;6܎Ē]ݵ:HS/uOinE + +3`bx^Ytܸv{Ѓ i[uf<*[i'a+(fҫ`$#ƏTЫM^B۵W +P7 C\Op}+MjQ(ly[ôX*} Qxrrf6osXWtMFjN6s2څ+fz]:v|d7]zug϶i2b0w|?N +J46э@ep>9 m`d&IV&޵zBʦ0Crf"B{wf"n d*=Z-O˴0xa +vw LT BT㼓WJ/Y.–`=F PA;{KoJjr0e!`1L"A҅;}Nܸb xKaѯPQ`$ CN[OZO-ԦI#s7G33gn-9d?j4\5jYO@!O͐q"pr&*FMv(+=UC1F{z˭4n+Z|0cy5 d՘TI6Kn{'дZ*bXNID>+k`B 9sKy^ǵAِۃDAni='#AHRZ*s ὚}K9Jv ``01q2vvҒR,[b `vxƪ.Q f;TRqA$55#BJDDP0[qۙbh}-N*;3!`n#ǔ<*kQqSknڟA?jvkSr .F-l-5r:HFUA\v74)ZΨ2YULKz}WT`pdW$dg7WڍLUԜepN>a ?TmnE;4aT㿗SEk۸t`p888kiЩQV]x*B&=ѹsOONwKnCL\J}VpwzxKʢ='*s̟quNҙUN p;fyXzam^]ݱ=IJ\ +Wf +H>&ee5 jw_<x#Ϭh2ۄL*PeH#r%OT 3̽2<K5`\Vg ˳Kegiq*9*1QbZ%w`oIC2y ն,~~wK*VJC,@%`Fg[{}ɗ)~Y\8$@0y8p|c1e@֕VTs8c!cp%s-Rݑ>Qx%])=yA\s*%2| +x Ǭݥ>, 0@=ҧ*3%,8Ozd)[ZSfPO`Hʎ@9>\PGeYOl q Re<yw̠J]_*~ʳn5Q}eiZQT~mUy NKuj&;~j}K=RQM:U.*T0k8ɺwxumRְokv 5K} ++TVG',H)W;o,>V&Br(9Q~.F;ȞOqӢq{*>ڥtFob\inr_֩N[У(O͵b;6u=6eܦx!IVFD Z;Gq;( +9 kګVEu[kH wShj^SitdD\n/ܻ7HXi/:͇Ŗ[P`|Ș]nr*YT; u9FϺ`<| |HK9oNs=v_[S3HpS+LM?ijbbp)Y?44X~01ۉ_ysir+-%J2G|}Saϋ&Ӵ(:2DĜהǶ)Nmrc @wjKsC:U4FWjsT^&WOCZ՛sphf:YKSKUPe#- :7]rZnidyfRUKnRSC~T2$G20LtE]\ nG9۞3LwMVꍝc\ItOVWV|m *xM55pO*udyRkJBHJs3ΆNz_;+@* }e z)IU (9]i*%*Uko䲰okđOX^Gjin8'Y&IϧP:~T*2~uMr +::Ubo ϟ8{tUZF*x "mS|JMPrwZάwVTQvCAۍNR.5V +lg8yruELjoMJrc{ӿYh:2+BA85[V'oqg5ҬAS;PԩP;KIE:B +Kcny}v>DgZ|e98 +u#!A }_CtbCQ@l``vsggxZu)n ʕOxj)P\e]PY~L=juFǤO>g#.ҔNTmpM&qdv$r3R\otNQ)ʶ;Rh`M Vm +mR 0 qiӳzO@m*%IKaZbܚ8 T\lv&+-~䚆?.fiסoynB(u1\rrO)xEVֳmj8Y[n|:U২ꆦW/M Gj~j%X>› +0m1G9o[Iq;p6z͔0a6f B޵`q]QY\smZB4]ة+3 z¦P~(qOyT4\j[mwyJj{tۖTp(4a%涩q=M[kcqcq3#iNKKSAohdqO9MW +=qMf:~ W`B2m fm:+E箕v3>_)E--fzX5GImgk b ǯ"2p9SMTO/Y(NYp@d& +]GFI[/޶Ҭé{L*vƍ@kqPfa#) q}t]w)\GllRrv\5;o5KyO}L* ۙvn4uBEW + <Ϙ4飭*mPC1@i#8匙⚪-(6;V,}xxնZqJP?-ޝkZ:F];֣oZ +1{J!M*|}p^9YSN V~hlxY]Wm*z>\+^_/ uʕʄUdLL%#TNzb]>$M,j[ts֩2UO|^pfqԽ5FoMv$+3 +1tl5 U5k@# 5J܌`GR^PSu*ꭀ8$ xc۵[ +w9.UH`4Ʒ.ڠrO׷fl&mKP~BD**$s!JZ5ۋ;9ͳd"gtWZ6g"5  wlG$G7.`"0Ng:ō` *ѯmܜyȺ=;:m.V#`F;y %NlTEs;fak7OmICmmVb6126vS'p/Z诲9=DjZMb-P¢q̝%:wvڵal3<~7>iSNd/PҹRDqh^s#RභlUBf) c8P`*ԤPe 6pf~yi_ieID@)F#F"VRVSX?!Nۏo?fi7"TL =3lTdJ{yt1 +DǗm̴*G=F2WU| |J`v̠_,WZ)KxjyKNwܽ >1<9tlzǂ$z V][̯ov 4):TGqǬT. u=rmTwdy$yBW*L6{68q.DG*>M:}>9@ǧy/tTg(cQϜ{6A2%IC }NBͻjpG׫sYժ:*B$<& Ϝ`c$JA{U+4Ѷ-Ǟ;{ + kM)SUPp$mJʵAJR*p8<=4m싌ܓ'* yS.=;6r%ğ;KHP@(29eDfRx?WdtDځ3>SQ>WW}u)ZP=PH$7):GvZb1ZW]r.F(+;A*yJxzRܭ5S,q$N1FLgإ~&Sé][+xy`p'뚥qNݨ\ FH̉xUm[cgW+W|']͐TUSht;bUphj5P6T*ootsz,A-i RQߏfe]ZS@#cWGA,ኝ3>SO M,5 +TBg+,g 1.ʃרp?_k~& uR-t.]r  #,uZ:5Wr"!nfNT B'N.=hl1lywp&oomvֈ^v9y^ +;"F :υe?vj]n-^mŒ$ AwmNQyBCeuRo$l&esf?xcR*5)֬1pN8]5oTNڭ:EKIFyFsQ&) [x'*x9'OnӥRMIwo_y{h_7|]ZA*;Sw+,p3Q|?1O'm +UD #N6'GgU`J`0$dHV^Vz[ $G 0eb@8nA)\[coYhW #89yN8'W8\kWI~,R3mPѰ>'˙Nz4Z\ +veQ{O*Uem;X=Gq#i:57;CdO-^X> 8(+'9$bVS<˥g^O鶯b 4+.DmV~O؄ KuVjMrY  t{C:> m߹8,4-_EkS^+SlhR#*̎/تUk܎ZmZgUA}Mpi7{%PcAp#٫٣v`.ޮo gz#k`i5nQ@]G'jd'ZOz~Bztv%n'0:!G U/6jtч=88$xXi/-U$pQ*l_7j +,o lq'CkS^Q%(]0yCZ&͂H㉨xΧ5=CO)TsBە #AFft;bNYby'Jk?$;+-awcR+ڵkQVԒwmes>Y^^6VWek:aaQH0ɴnnSU{cX6*=O7ꛭDqz_h׿n%ƝZʫ,F7p>ɚKUҺH0S'V g{v6U D8]M)Vw22*Awu^5J.oqc$UXeZlcv*@~!NIiZRV %QNi-JJ*#6`1u[Y\-BwDPHFf,s `{L_Hh)A l7huKpiBr 0YT/iujv> =Ǟ{zuJִJŶԃ YTTRwǿ<^-CROg|F=}BmEU FHkqӠh]D*X9uU4:J,2$>S ƉU㲡_Q r @1۾dVh_VI QBBɖ5>fj#קIԁl0#̱jez)T + ;p=n5Z K#QKqR2ĝ@Pv=BSoSu'4@;Ha$cKk^VҧM}>e|\\KvEBPTev۟gfRa_W[ `KfNC\ ~ƙiz:qU2 |L5$ԞѸSһY.Lֵ+W5z'Ocɂ7K)5(S<-JFyH"e2ƹFڛSJ)Bl@<}qf30z;4QQKw*1iswGNyJ6­QQg5*'F\qnSxHe[ޱD`g>L5Kʺ0Ժj*+ + +6iFy3[-ZJ(Iz8>eu7үwKz+R`H紷MwY [ +* -9w/!Zh@`C#HuMpXׯFSDMFNl).Kri.;1|rKZv$6Y^]6[k:Uaz9, b5RS +NaOfVvE,`&/[ڦ>Ote{Yu : IАבc+kWkE5`601߉.tB5_WvSOkѿ^DԵ:T:•6KeG#v~":R+[u"er;@=7 Izڣ?b 5~ ԅ~ FlQQ6'hqyNu- $wiJЬԫ)iT;JVtK.$@ltY^ot>pI"2)ه>w<5GĴ֍Z9jhT+"IRF=K4:u[Syne0F&zQ +wwʏL~x\_ +u 8ʰ )>a5 +Sz5R) +PE/:%i2v} .[۠Jh0;?1Zׄ-\WUUtUF{y3V +j}hOH3Ot)׽F#庎ŵvrܧv@?4Ww7*`JJ O4*oMQDٷv|=; ZVunQ`gӫҿyR*ST $;9'Z+@R!B㑁/ֲqRٓ{+@|`[KN[:zbEeʰ*r9fy^hVT Ү*iダ;^e%{svA s*{)5J7}u( +U Tx %sY[jFJQ@UϩfmnʶP)( +>)$0 s\j4j{U8R'8rfOImquVV;+ۀGqc<9yIJ MӂrT2quVʆzhQ䤜{Ađ|+@`X~=.[[dTP cמZFKH2HY`! jvƣ $ϐ+^) F?}KۤjUL̊EWd#Ďm6U*|o^{n\A% *ZU.XVۍ`|"q{}x-GB)H/AjX®(NSiid3O2gG35@8@*[.}Ąl֬PALle8]<1"P=W+Uach'OiNL\(a=r}d@㓌dLmVTP߄ْw75QyqrAeBm  <<_õjbj)(ʘܻ=a *ʸm׺=+dI +Q@ A^Czg<˩]SB + cxxdT'7!IpM"GҋQ_9e]*|V UU O 22#9.sEH5x,%zcw*6u[=RֽR8Q)C#=F'=.|IrElUp2fZXZxڝeh-"ǫx Omaph2]T3΍]SRir˜)_iv;@)V6ygf&S*NE]=ƑѦڙj$$!gxjG;ZkQE5)Cp>i;Ljf6=,ܪ۫x\{!ϲp=AJmRnsta5 #R|IZiUiRNSMT.u* #i )5BevP h>"k:ҕ-l֥+1!p{2DV!|8jDE*VwSCn'2jGCzEmj{VP);"j˺+b;jMQ]" vuj#a)%q؜M3O6iSRTGQ!F <zݮC4ڛUR|)88::^S4ӡU*Q]9RS 9 `y;% 4_?;2e#&PĦe`D%eQW0N%S̵ ySfRS9 HJ)e8y@Je2"PYC F`"1Q(DJ(x"2HiJ-?m&j23Ҡk)#>ssѬlÐUʍ +@#8k7zmo xjtniiP2W GKNŅ[+75g2܌(G'2mZ@-npI?&O1 ըNjYo`\tlaϑ]QԶ2SF[VuBjm  l gWq]GkZvMo +@izonoME=%8 7A_[:%:[ɨ٩%@3I^ԨYX5iUJ8dbq1kiJSQn._U,Ż:ebi* ˹'9ꕫsNtYTqJq_nO\h]S+;roW":`6GLNVӯh +)FM6 gܚ޷zk'([NZ6˚(=X?J3:"32r@3^"=S@S N0Osb|]sV޹gBʼn.FI/ 0:tJ*wcL׊iV-PZm +q3\%agj*DKƕ@5XvxSŶWkNQj8Tj8^{7V -s^ZU*K)-նD *@ԣC@93iVG4.j{(%Qr +bgyJ䚎8Z|d2({BR%1JDxFq% )ƕJ+XJDJ)Feex$9Lee%RP̤A2V _S9t% b3b%S:Wl}~ͺ"YHĬ%e%b%1YLDJF#~Iig=_ɕʞe 0e cfTP`6 l*O%ģ PWiB3*xV On-&?Exk\i\]T2%f+U.mWH)L@*4إZVDaLexyF=0yLnj\VBҪpI;r#L1*L92Q({ʁ+Je3+ q[PbZe@̸qJb;ˇ1-FILʃ+ Ĵ˥fL 8zHǺb ڟi_"٪}Imn0LT$-&RVS+A1&y@Ǽesk tvj]2 )&VvrQEBBF#<򞉩[1#;~7nr)V#3"z@Nb%6q$H65CV=N'ɓOK*X$5ZֵuVq$0s +s--GUY RՇSR=1B͵پڌUWyM#MkK*#/QgLi6icLxAwyZr&vB:=0')q*k~_L{ϔռ=ZkvWWYn+7h'OLo֙cĩsfTAe |.vnO ݃񏎠ݵ!y `"xp"܅ʩ=Hr3ftO:UUrk2P}H3ڸ?T1ܴZkP1-@kע Idg⋱cTQ|xVXvݽlygnpƙ0k;bKq1iֻO,ݏg˰"m]BܓHs&n:tT $L9 ߷ngNR\\*TD=X#ⰣKʨYB̥4*=5ɧr L!--ěRFRğ Oܚ* +Z꛵"+ݤ6rqLLjV[ju R}{x=煵v'%_5 TVe Xv;}L*Zo>wC4ܒnZ YpIc ׬ZuC|vx_r=r}̝0Q.O3U6vtTj?c5kb&dBv4Xg}F +]_*FA'L;zu+5Prg8㴳Ukv |U*c,t',b~2ZE[Tz[wFn? lR.}eA2D]n5M.>JTB{6J eOO|JPL@J1Lʑ< LYkob ʿ֚I֥_imݻѺyIK{=*12qLqaFؖʎD\*{btqLfgvv;2xx̧yCȎҦW2c5z:jYZr7NW#OZȶkM B2( Pvr3ؙ46}!GO`9 mϮ1Fm j4ۦ\;}1⠯M +7=`qSG[K˛n+m;1¶=ی&REL vyjCp^3˞PnKSڥ*P Ppw; m56ԪЦ +Tꊯ,ɝv'y׶t*apFyK*W-s'9iS ZWFPV =[YQb@; q֢P FG201.2"3F2̿W8PIQ(%Ihmʿ֚%Oi8Jb +C)-Dy]WKZoVN5F-44T dvLս +µ@;PX$I2t'럟HյZQPd .@1&:մNJW-l]I3պW[j->3Ks1ʃ+,hw5jQIMr5 Zw;Uyq#䙻J6*7a >~Rʏq#и EJŧύ@eϙ.ܽJWZj{;.=F1g; r.k{6K{=6BDյkOj=[iBp)h@{v+շa[zc<H6$/&-hTq¦}@388 |[(ծ}Žb%,I"&iSjr+-2Ox)Qp ^̮l]oyLJ0`VQ,F^%1(D1Mw@ڟCO'eOi<#;e33E/(D%19CBeM*)nьcbĩO*Vti1tB~Cg@Tt~1j3=@VP R<̦(F%I*GP Gc+NS@P03,RbMC傌ߜK~CSo7sߜfz&$)b :֡oQPNm-϶-n0&^]G VSIZm3%Oڭk;R2FB>C3Jr':°-4z *۪; w1iT@>U \o 3鉴1bP(W{eD% hLbZePAD2ZNLPJ.Ħ"%#2Fc̮Jf% dt`>1lڟC4J~f@va + %e Ħs(F%Ǒ% +`Fb"#R;JSwXn++ı(e JlEa~"S8uhR# V@%_?;]~Rߪ_~Ը|qktwu3_/N2m~O˗ZSbs.ʞ.S}X;POW2Vz(;Qb?~ԯպ`йO3 +y-j,kJ]rq+[#`h7|5lG\u9հ>_fTjиM[2T\~_z߹?;Q3~w?kj>3]~Rk/W/̮?SV}Zj߹Ij5Z?;]wJ XyZ^~P)yJ vw|oڵ|rkѹ-l<~#soT:7?/c`jj߹~j߹RS5_ʍH~wMW1K-_ڏ9uK  ~y5u ;#A-ʖ#]>LҞ}jywok=_oK{?s*5aoseX_+{?jS5z+T~ uJ}Y_?<a;ҧU?W?{UWʍz:.ŞՄ<|?jTmuKN;]~RO:KZiM]M"fSh#h+)ĬJAĬ#Db1b1fS`6/%:K>^T}:j<+`Fm6IB6/#`D\JJF%b"%"V"""""R +)_A5$~4}_ʏ:kQGMGG+zJĦ|6/#}E%vA)}}}*VSGm)XSXKjU)wt{E3gӷ#mFҮ؛>U8–98<$*K^S( H׭5UkQf)DrQA.#$9J}^- JBo =8[}ѡ(UVx {yt L^Y,jѐ˜ EWz`oUJIG|Fi+f؄E, (&c+X5E\Ц\6UbÜ10&#ݾ8}i^]YT[p;{MVcI*\ RT# (=nKQWdMԦFpG8#gM[]͕ZLv9$xju4k]o5k .I#/k[]W?́ѓz2˸ D;ŝiH䁜YjnFi!qƌ{EoqFQ9!F8({r09v>%^P[ +@,7y~p>7۷wxR;V@*S۾S"8$-N*=*SZmqܐGlrd٥ޚeRܓkީQvRjlSr2FF{ͪe;UKd2LPqH\%G4HTa|Ԛŵ5:wtpT0Nѐ {Ѳ R@)#TeSٛo`qǬkmNjnJUQ>ϴ^Jj T]#Ё,I#P1B@'nGp9Pxѫqt\-V4 mO9"nn~{899%ͅ+A\u7_c+m׉kӸڕJb:Z0p;63)qkw|41T>gvR15!W:-:IF,p R-jԭDH\#8m3OO{RFTb)mʕ#nJV6CS + 3@$Y*ԪiT_i8 1=oЧURӦjD-MG|y8MNK3G{ +vu5.6PA,8rg*Ӽn+ FD(ˊdL v[*vRW-<I}7M{j+L#\Wn,ZZ-M8GL-|p]1|Z[fqf)XZU%"SH*5Mw Ztgӆz&gִ_҂*l)Ls<4wVr£) P8G98mڗTi3E>ekNMVl]>P_j`2Q<ڦϗp=gJkX藆ӠEe:$p{3WrΔ#KPȪ 9xh.Bҧqp؅ED< <|MҾB$Kv2N{osJ^~/R 7cK[\]WfLRUu,q$=$> RҠu4M6'yYcU[Xԅ@-Vҍ2gBX(8s-zUk{56v}F@ѬmiTJ}*`W,Uv䌆ߙ'K R RsdLJ/9br0TPgyxOX;FvRk6U˴ZNA[ej ]B=Íve-]9j-**WQob]rrY%B⥍qFU US=D᷶Ԫ^+=V%PjTeX'Aۑg_[KUR@骎p1Kp[px2BQïMm񵝩(=#8]R֗t* #áqps27_W4EZvu*lJc= ֩JPTeL6qǨd|}.M;GRGw6I=^wvSEO>yQi)g ($rL,k\jjz%ӫ cyg4^Ԡo>qT-adco𮭧XU[T + +<|KM/n~GUdV@ƞQkB¨znm6rȨQ*z㓉r_5-#L rƶ(8Oגj5TS)^ZPn*nU`$}kuK[л@<5JWr0$zm4|T\6\vڜ1\|ӱ gN[ +(fJ 7<`4jn5:M>iF> eMC]KM>:ַ(+ r@|%\K_SU+鮊p`rx9wnuչkm4Zp#OMŖJ^/N3>ƩCn6錇ϟn "TG<RxalD.URT;X3rMUNw=Z j bmZ(gb,>\n+rը,}̗5چr/VVP:N,$mUN;{ Hcmzv]j9Y:*sQ;{Bt>p+R-Qt>2|lRRu*S$F9ŝ-*KV3_GV9dХX% +1nZΩP1wm|֊\ZUm[z^(U H;; MZhjTC>K*GݞqXSkUceǸN~Y֢_jAmo%p={)h ե=EiMoTja;Jo.kBkQMSG}4w1mʥ77P0{7 + N@B +琪';5KFڮuV=ZK*_bdCLr ?=M|k{`=E-=M7\jMFsOܸ;KmpmP4Gz-I'oKJA +)q<3}GB |WáR.T#9̆uKSmRCUn#P@>BMnFB`Ud]rWױ.j.~䆓n;H3>Oh7u{  p=`p2TDD@-dWf:keT*̠9H>_-ؾ-JILaTܕ(>q\qytz+m9E d|L9wJU98>D Q)1PC"GGM}lv/[RޕbTIPH>ҵ(e(Op@ UQT\-4)߱wc3LmoI8GOfF:DSgR7\vښRAEUQ`jكRó2>ChS*"`~c-۟,|{jt+5"**a=Ic[nuuh5B1-dcZtRE +=}QSv ȤĀH AFG݅EP0(¨ KyoI1v>)R:E` v +a-ZHڠdc'˶3K^TeyQMA,q)$( b +ueDVS^[JޕzhP>́eSP>a*QO \ -(g81XFzl g8YѶRJ8?!3MO%GlvE*C`2יqPFȖңNTv +J%*LΈ܅դK LSF Č*@#Ig2AE>B6.1JtRE +%6`HʃP"0JX15uFͪ&U/զXb>jҝҡ@A <;>RyS i{e8aHZ~u +<H(2tDޮA0-31 +3ā=-SMM`ʍrTAI =|TRX~;hI0~!kJCHVK,J bJ:Tmb~ lj=Y'IYpj +mnϖq#Rlv:p~M6Ӫդ*(eX{r>)6"$MCQK\;mM.H$Q7lRj5TiRv +lj:S1Y:MW@یV灌9 M7WM^/-%Qød'F h +@V1#8編d"""""yvMs$.v>YDYxPUi ,uΠ-h[1*깦>ygv1ZzթZ-b)7H08# 3=FSH^UogN1=yuVօ1sR7j"مFij-xY\WoYSjqeU,X6ylێs1$UJu\LB0˴#M/;g^Qq +avv}Hx<5yn*\-Fe*Qjhic=Һm}N[VڨZl׳>YVk&*iNMkA򛠚~H#1OjվiaA⫻遝K2gӵ::{g[50RޘFGs">ڲU 3Ԯ6~}ÏtIMjۚoFPpQNP`+:Ό)BժSGKrk7U}}o/.h5ZiTT6ShvZn@Ǚ̲}rl,BZnJ;X{&d k]1o2xRX0N1#ڨѭ*0jRq}YxH^-ZR֙a1Q/ę\]xv+j+Q]\"TpjK2F>s}uװZ(:UrEfrRA;y89}^n}rfU +Al3s$OIz?BUfR{8twX}O :uQ_ʭJ=ùlnU ==|Un*iҸ]id>3p`r ɛrp9dnnnKz +7W8-~y*=K/jAIwA`|W4/qqmNQ[{s=KϪֶ :U\{yV`q`[ ۛ]I e6*Cld}rA.潗W})-P 8ēx԰jըڣ*UV7] +:}JƁZYY6gE >fKе4nߚ&/JXaFیؒ|`j BF3{gzxvƥ{:B6As5.*^Эn)]RB $#?ju +;hn-еZکfaЭZ:ud F8=<< NNr`.r{ڵQJNː-=q1~"ۛS_ T%*PTP1kzM\&)l?'8ֽ>ja}: x< s"k76e^꣟u)x* U|On{w-2TZ\.7Ew;QQqs&RҲ`5;ckMCLj3HPNn=䙍Q%I6:_*Ӭ v敭g 2ٷFќεnjv)MCd{xhk}B$S MGn/ėW} +teJ +@G.ߙOe,h^Q[XTvtЬH`ޞ[Uuop5)n=3>!ڣm;ssN\Wڣ!FHU.2$"F-OenUKZV+ϗy?Hԩ*\U1zLZSf }ٚ+׷ELvO` j7.(ףYTB0Qe!DY.n(VYhn@m6v9sܓ~ƫI֙fJrS Z][Jv:mVgBG}~KS8:OT 8T;] Sg*osPZc$A#9ıjT4Gbō@F8}3k׹QV垮>Gjcirye\թmx@I +8cn&NCՖk|8 7>G֩t];pv +)'j{'6KʏS4fIv@Ó=15+ڒWcZx `[+;OplڥͶ%:pSƍ[vEz)[VZ*) ;V&BՒhkUn zT}a2#-:⽮WOzU:1*#83<.ۇ.</_*sY*'VQXGK&Tl\b[-0;`|+6^juإY<|=啺YSaU;&#v2\\Wd8zSQJ2ȑ|*t4+Vdgcr<$$-kzA,9j@.@=-&jksVd@ +r<]Yտ` +l0@"/.D}mϞfD8@*[$ &b bk,i]uå:{9Hl&g$Gi@^ڻ~)W4ܫ?x\7x]-N\R il~5ls,L +U;2xUz'B֭w~{\UQLҦPsqvqwn۷>Pfn'ݭ;MJʰ##9vz +0&7U*]UsnʕXeYXa؉m\ݛO4iبX1 y v˼E^k^L6#*qȐUkRz3!PܱRzJ6V{3ZѬսQJ񟣉-%5FNNAcyuV2SZj ݻy?14*:͝˒֩u9v?4%e'kDRGlYy8rGcN='&<\[֩Rڢw2*F2#Ͽ5'NmsY +6=<̛matRdŧLPHbN22.]ޥJZkU6{Jjy=YP[{ +|*8lsKa&e)ԳZ**J1 +A0u!^9AL N/X:w6G=$֤> +w ̆L 3tzwum\au$umHGxփuZUVjBˆW00="ug d(OwV,};LDD@)XLD+)Xjl](HeI9Cv ;2啋]^3$DJf3 +$+LZNVP(`8-隝 ^נIRXNH<Is[ZPRd=e1# AӴ(TE@zO*v;U`zOX6R\ 7K*[Ӫ젲TF'$MU4)UQ )Feb"%%b""%%b""%3+1qMCL]6m- sO w&z]p] V.><:5EãU -OPUј<6&cJ4)GlR^gL;;r1ˮ5+CHVRim8'z>88*O˭; +uC> `N# j[bM8C+)zlU.gb*xOà`FYvĀBIzτUZa)cOanj2=fPbjgi G #8OTvJU Ŷg8$L+G7GPjnm~Ie.R\dܽ.7/#-M~!WpJ8FcǏ#2OŖײ.GHRQ췴[ `vUK +v*\UE&O89g[ߡz5bGpATJ;rCc@  ~$6lCҭR*p@wv߿22 EFON㚕"w''$E =ُ,ɞtuk[*uAcpp﵈cy=jQũ9oI*z`)omkcP&}d %hjViӪpr@$zpHAk;ˍ8ZiN3ӨH)A@򙘈RԨKssPw %!۱ێ~^+;R֏UݵWuG'Te*UE{Oy5?iz{n 2wm=x3{B`S~QǑ׍ݏHXz0^(9'q_v3ݖi(S +Xdy wEͥSYMZyU[5=131,U)c{d$)/57%&WID8\vg>o^Z[wt**"1 3{c;&eT)M!~smB +,X + +<R |}NwpjaF2{|էӥ|n*5} e B1v;rc nYSj"/vc$H M}w>~>NvQ5UN(gMrHm2*) ܩ ݙ33B:`eېL۹|M..Q#m˕+n + \yAZE*¢zye!e +IZjj€OXYT#`l0GAcM a%xV QHf'*.^2ID5JPذRb̤@lYjv3Q|8`AWS@ ct/+"ȸ* F{:핝FVRw,U7vǙrar$[RMr gjF8vcqU^-U4.T߷$jlpnrɖA>@%^,5g۹,͌ +2I_%޵-iն+oHѯNWBA﹪TבNREFLf9$ѫ+ַ-Cn>f]֥OSF_p13c50dn^mIniM-lr2Hij#gW$5u,s䟮פ4m6::i-$GotjA._km U'<zhU꾲zMx +,JCX.ٟ+GL͘wsyz+]%*bj,d3ev3tbn,hX:,ޥn)`S!?1p qȼ]7X*W enM'5b7.\$nO/\fxQw +:LȤ [ =q&0J F;58yNZehU#)r |UO(AִRb1Pm!hS|rƕj4)zZ@gq;G`a@]5e;2@禰.))E#qZ^MI|`MtCNޓ=*qL!|p{} FGoouNM:C= +f a<=W5+]к5JOO5hU}ɑ$ &ai@'3t:AWKrAZrل}ŽKJi9z!<ܤK{~qsNbD$?:~܁{jumvQ +jG ? ʏJ am͍Tm'|k!ʷ:z5jTž6sP JS魝dcQ[{K@fUu;ctlA9>mJIK;'3S4/^1 |7URiaXqԖ28ʲ 9N=$%jƢ1wQQZ$j+j-墒Qh9+z|Xj%kz N%l (2 ڇi-ZmVPFs''[%Ѹ^’N{3F/-و*I8/5~ o{ﭪ:u!N]FJぎ@tzVvu[zkB*n5FeM_>83~)mOPхfQ(?<>!zth*\QZT)f|)]ێ<"UͦxjK*Iz8\ (#'OM +l]U +X>=6_$Z:JGZ-~U8$&<[tM)"8!@iժ +͵ +*]mT- (C{D+;Rޥ^~Vq㦌r{3 ^~p lm`_#>x[UMZ.NS\S(<}+oٌdg '"l<ޓȥf !,[tݶ s9R@N8U v=gFSrW' [MzXBYH|UGʃ + 5!Gp'[: +$u(`>@DjKQJ(hO|O/ ^o'%;%>nw}e=w{ {s-u(S>W^S *T-([`%1]-~yj3J:DT Q)$Q VRv.Hc1+meof +Ф9!P,- иm@2=8Ҕ:5oMjc(n\coqQ*ԤQ\mh 5/mw[Nދ+`@l2giHmHp) yZ΅MGee ABVӓVkPGu=x8"RU yLoGn=l}= +[ZjNHPčm*ՙU6 +Np;E=[fe es +=Kn%#qҨ -އ-m9ԐROu3R02B s"i6/IWUe$v"%<2OI(Vg;:,>R2x̏i,)zWz0rlP}Zӎ@-27Zg{qA/k+`/cooQӤTo-K*WZ䳸sd< ZEHIֳqL}s2)+QKju2 Aȃ?LVC|VԅgPyϺzkSkGhv3vX1@Iҵ «[tvS߆;|#*\W4\[ 5oQ;y!=$Y. 02|ati +N1)*çJUr=# +^qѸM D52) 0ۘa~ψmkY\:RzʠrI8'wzRsQ+l4Eu=+㏒zkKu_ +,FFvuVS½>BSnHGb0s +*3J:5m5@q>Hs=JmeB0k1܇zt6s>~E{*3QShFaQ7rP22{ D݀Ÿz.{NZ_t=jRZWr -{Wltl#$SCR[IRV.Q`I|A}OOFMud\)\r'v88=$SWЭn/.v:E_nNF2@M^޵Yjg4?9>OPe^޺R }py̟ի2+3U"U7N[{N-*t+ +H}Jx:~SI_'+_ժim4mIK2O{` g^nlaLQXleԎ19X:vzv“1zj-nr8P+JUF>s[u"W8R=Ϩ'>tkk nUYfjd>C"5/7ڃ)2dPWσD_ն5md) +k]M X=F;o+;>jRqpUܡVVhGH=j֔:i#oa^TEZ#Aժ_VzWKB޵pʎ8>x/ڡwSWdڦ/I͝_ũ̪>D tMqojX + Z` RX r=-:Tu crŵʢTZJYS$qdbR+iUuM0T] +7?Rv` +6 +7w$jӱ=|H+SHCd(4[ v֫iDp*mTbr8+&2+=;źVlh0RuSpxtj?ߧ~Z4[Ruh]\QJ)uEU*&ztݨYŸk Ad5['PU֢^T*Gsii}tڽݛVEVRA h޽J{uP[jr1;bm"x_Qqlʵ6rЌ,tۦMMZ;铷 ײ 9'j:m3{{Z(/cHV"*lKUL8ԨOQgw#nހ1ݜlQ۰$jz]*VojTiV( +2 @1yRQN8lNRېTCA2^^jku[P*6623DDDDDDDD@0utkAV:aj/Oa$*r>Դ)N_asRVU<4;oiXڽ4ɩ\0 cG<$.zT,w܅J$y&yi^Q;ʅ˳ɦ)ci#%_ S҅JSB~Ҕ08w Iz{A(gw\]v8bek\5D q̲MԴtԺH-To,s܉P@9KEkGATّal:'x8eZE}J]:VQB1b*(VbqsQ,#P)@S4с H9#3!j4xZ٨:faU0` +n#,r>}{V57m܌JWiH29M6Q*{< wKeZ6u\1{T5K޿YGJE`9>7}2^UkwEdԙ\)ݴ# s%Y-%$aU؀I>|zHڠVoTT0k>_)K;FdUhפK0\*_Ɓ +έB*cPNe_R-hԦW\q9&im宥{uSӸ`+1q]zN>\5= +J&zs lbsϳ甽[ h嘗z @ϵO|wm|ֽ=j̻AmԨ9 G.,iZ8z(UZ*p >\SYo +ի2gJaH`\*JmrƥU/LU7 c-@W0Yщm+q|iZ5.+ժzAg1#S;-6N. *WjJY{3%P{NVt\QI FxbcK*ƕq^T>*į;weP4Z2R^w r3'[ KVnZpw,w<箟jtTwaR'Idc3=MJ ' _i slb֝$j{Y1߆Yk\]SݪEbˀ8e#\!c1JtkFOSH GjIl2*8șm\ի_6͕(% |#3;^†wms\%E*ދx0Js#U:KEêá %lq2k +d!r]ظH7E?-m$N]RZ5Cj~FD֞T+`&ՉjOn/[q8V;izU]F,TR5e1}pTq24)YQJ-E(%]72s2Kiw}JeAV);r-,N}2R[LPZ f!#`@F8癛Ɔ:îr3}AO -OsR F7$gtDDDDD@Qnw߹'DDDDDDDDDKE5 X'vDDLu_i@n''I%T9OMi(T@ =0%(x7]MJ潲ҫM6nٔ5U4zVR);mU3µ:ZgTH!؀Lԫ)27{9rNsqxXHiɸҫSsh_{ f] ѺE*i#{88S\x= +VY)գJ.>* ,j/RZ T9Uݵ%O=u*e6uiI(fN/?j~YDMgYkeE+]?:TX7V5ЦU7J?lpHX/M(ٽZ-RR,Fz< 2S9̬Jg2VP#\5]roʆ#ioPs"""""c4 doڔ~LO:V6ݕK *3iiruVzu_8Zu VUdBԢ2,XAl% +ĺ"""S2)YLDDDDc3u* +3|$JYj5/AOYXwR&"""""" 0>u^ֻ# w8r͒;fM]ַ {IiUTm)0debQ pq0V{|Y-%qѦZd<|cΉXQsQZr<~m1KJtVUOBAS9fV&3.o͵"Ezǹ%n?7fyקF@̹R7)xFkJ +\ @02Y?Zv-R F7|n2*~LVaBRZ½zGS=l|QϦv.WHs@)u(X>_Dɡ;FlV%3HŅmJS)VW;BU$`yU]-^U)"}l!F998BkƨjșOnhK\uճmSM}g]4V+b6)\w>Rx1+)clnRQT*5 gp=>O>jkW#wJ0^?_O-.EC|)Ps7SDkHT\߿`z̞d a(ےM#*(sWmpt3uVSȞ8YSUily@=#N7, B70 +{<9Rʔk:Ҩ0@>)]f[bSyT{C_fu)cݔyDm\]!j='j@@) f b4R֧}jvT=@X䃁!e%b""""`4 +{g&;O[×ء6tަk9+OiV8wVXB+2#7nGM.) + *ƚO>YĝGRƞO1N>O&e `2~o3')R粩'1FV~ZRs坣 .cNh2Gk۱IP،MSZU䧆kC8AdC7m_p/P=7 M:VL\N%SkPjsNAe]!#ȨzD}ٗji(vKm jߜ)ڤ|&1W>\K5VEJΌK0PjvO=AP4^[J +T +@NcgֹqawSjil֧Vowy} +J5nphت@;lc呴O:-hg($/R=jzە%M6wUL` Ocim; +Uv dg9 ''z0kf}[58\[=ԤWQ#6~XԪIlq`9}VaR TS#}F93h)^vᙪ=v]Z o+812*(Xݳ0 T# q2v-DvWȵCrji)lNB&?FFs>jڟ}S}ۓ,n+)5$]_#+%M3ZF;49cDx}WL4t̤^/̠0 p;u{p-. D#(n%46]KPpZnԩzhj%=22a&x2}?mG.i\RsmUr|gf 9m*05Kn15$vToYt BSmCt6cӠ-<{ x禟OnA(0h`=`ƯklVW }ڭRZmr|LoGQ8Z^׾[[ӨcL~ofJb\5oVJK_Z-EՉ6q=X޳TaBUs9mFd{]vK/)Uje:©vG=% tn 8ЕM<ը $+m g˿yZ^J> LYF)hZei}HT&ʌ}3Gѩ;J+MY32I$J7Ruͽzٛj>#l*ڝbuq^A)u:ilPyKSMo-t(Y MUʟ<h-Ӧ**c'̟Y*jvk^ypy#㉎)]TkE5#ہxjk4XRX }j sϟ^ҍԬi*S`PH/ׯԠ@Br0]Aa>߽аJ.-56(0sIK^wHU2"O̬x=a[8gG˼%bt"ʁn=eaAnԳZ,.4JU%ڶttޕ'*dv${K76[ڹ%1ؖDB(mH5ˆ l|ҷ+VPR**#>r]\}C>2;( +9OSjoRR?Tq$&f"AzXzU:%CaS=ĥ,WPnU@&c55m6=*k8TZ # +IQvAb9w`$zTK+1x)q?=mDŽլ7WUr>IJU|nmHp;$MѺWV)".`R=K4 y0!V*HV-Qq~gRj +%H ) &6i\ZUWa M-OjN?̺UjM]*50'Q PqWh g}3Tj>7; (jz5PR5Wsі>ջ>))The2=0f3+4:elGO+vڭV + f=ɘml=={N-QB0,C{'=<<=KRjLWf9 a$Vҽ+T=5*E=rsekqsr9.p0 (Pv|;ncsș6V ZjD +Tm̹Wcǡ 3__ԭ*ԶFv8˶iS8>[bEkjn2Xz0G0MSO}"~hH%r)>k CT6X9(U&U D`yqZt/Ӣb02'g`]U%*j='2\Dß -JBTE6.IrN<^RQYѧDBFvE% qUUF|Q٭hx0}2s9>,hRN"瓅֞[BRJP:Ȅ <–j֪j ?IU?SsTfnS  1({MKWRճ;@-EJÿ"f4tZxr"\dØ_}h,]zPm+.Why(6y'[N'FVeF*ǫ#ve޻n/jCv)LypٜyvݥN0gܵ50n+ +͏̌.[hӧT;juj#;g3i +wZUrŝS&O`Mk<_Z؁ +"u 6`1+) +h bVPXB+(FcXuR}0&kZE'JoS/$}bDbzPji[u+fAQ&eU1|35.V4۟=5 MkO:uC٢{6yLf;\&*vpkWa[ W[Co@d ;u#l +G-֡FiUdӦ\w2<[\ Hs"u[;jӥR#pA,sg?,qwtt7qLrypeް*]\ B0@*T0~Y Ĭќvs}eeb""SJFќDDDDDDD(FDcӨ(s3XĜdooNҚҢFTa@OYaw}$J=\9@)rT*^FZS{h+qpfH(Q&Vw5n{zwtFa|KNNgVY3glZvRJBWTRrB +|2|̓ԸmYTBps0ֶI- P<\fZbJ@gv=\~=qg ME*)xj 8&Q-Ң B 322N=?EYC@}.l]6g8cm<#maRcquTQbkD 7m8t+*R6eP䂸<͞ҕ$E" *Lf_ܚTrO[8 +JrXGEn[sZ~Yv2ֵI8NZc Pd{WnIFR;#'rʥ +k! Tb #ǔgѲ, ;F2ĜI*"""""""""""""""" JYC"iz]-&Hfع̙2""""""""""""""""RVS!j:ZjF:5Ҫ 9#t%b""""""""""""""""""" "j7ͧzڤM?+_.kBAQZT6>0|CWU(жjJ59*I>*)|}CQ:KUE)%X7Q$}G@Ydj W=DDDDDDDDDDDDDDDDDDDD@""""""""""""""""""""""""E9O2t}?:x&Z'e_~@2fhϥˏ]Tpp%:o.^n]骪U!Z(°\wm%5`;%1K~n*lCPgEGIڙ.,I?1 1J/pB+ 'v@MG5mh8Vnە|Ǩ3#-^jBS %B0~03HI=:t)UUF;̟[WDLw&ۏ-E +ӣM8ʁJ5:uN)ڡg"!pI$ >xiWk]BVPRJ8:G#M(i >Hubn8'lgY*^1Ozj=@̊Eڤ͂{=P* +:W8 `r3yLDDDDDDDDDDDDDD@0W, U#,;1H~I~vzT*RԱsNJ>g1ij~햦RH;dDGLH"f~""""""""""""""""""""&'\KaO}2[6EnYC<KftK̗ +.8ϰ=%%K{~ JN4#fEFC-{eGkly\|׵4PԒ&/ǧᷚ>9߭FϳKɛV&Sĸ'~+Hiؗb'W-ֵP83ZhH?`<<-jZrh +WoiZm&-mvZo)ownol:UIk5`Fm$#yk*\*U6{".J g|SaҝjZenN_ϲp&JB%w~:ɗ0O'a#}"#"""""""""""""""0RO2KRuLܮc̑,=\gp x@t*:5JiTP;Vs"Y7W:i 0E*y&&b""""""""""""""""""""%1YLJ뺨Ms^s`W/mh]oJ5Q\ 78Þ{wJ2O>šz{1`qpZmV$ GIKX;RKvʉ0.Ab=vOO53=JGv `v,iWBTF@RBA{=dZJөNm.NŨŪ=ry'.>WSZˠI2ԩ-TE + av%bcu4=ʅ:iWGu *ZXf5[?\vabWn~ +QHf +XROR&F""""""""""""""b"""""""""""""""""""""""'wJHPI'~i}R]NkM3=OgvGsN[Hҵ[8JnPUg*5Zwlmju.԰$Ǥg£G.>AvO6yk8^%9* ^H}%6Ph5–28ʐf6šfQni}MJq+1n$ H}k닥nwQ I'lh-:jUBLfsЬEMb{{ZPlچQ}$ʥڒMt>@|MbŪ$% ̬LFUNg-:mL! eیk:IЪRS;*Otq\ЩSE+OipXĘA#G˥314ʶޓ)]U$n3 #2 Xj}quoUc0ܬ'9ڈҭ\mQif G,@$g=n:ɝ\gd~f3"=4R5d6!| a&J2%%a`$d>c/̲dkyK:zOIV4_ns6ARF0Df3@ḩ`N=2Dq彛n +0ϭ<{g[t}q=gZ`ʣ'f8&Buۛ:+l* +`8C2% NkUf%C0ݏndȺ~ORZL8UPS{C$DfyӹR0qk0͆gM|㨟dU `q9o+Z*k#W\%mVZ[nCG).U W5n&`H.iu:dT+P +0@##9xwqַ.\%0@$fBNvCV" 0vwqYk +KJ\"cV;v~ڥ(SZ7*9DMFJޥ& Zr0FsUiו(]J}44jl܎NCvFQ7GY)fOy<㙋5 ?SB[zDl]fǧyZj:tj\-)?͕*׶:HjjBq,ԝY336w4ZjuWX1UVB8ϯc5\k\֨eD4K ʹNFO]\ Q +W!AݦAYm-K^ҝJ\mNOʖߴMn/ +Zt4mM`ԠܞHP5u`*tM`UB);t[ywuIoET/óbہA8`gu!Z*Q*p}䂤o\R'ğcVWjRw !s>\eooVt4jVꊇ>+dTKken: +;:n|=ѯumEf(?A}s)uPp:ce _)u5ost-\JPl#k ôحZO~߷ݏv{Oi[=Dj@{89+Kտtk5?`)d9!)]t :)Q5CL%pǀwm:u^Qړ=$fFe$dFuJ7wҘ`ӨO% m8x3otKIBוHWv׷vZ;EemRnœ!yiZCԫJ^JteV*؍##E{2P(Ҫ5QI9y$R[Wʵ2cN5:wb;mZD.u +UYv ;`sMIPVo=g/om.vV:}/S+)Ю)N +n{w +nVTVF+Ac"?+]iv-uJT+zN#~3WԬ KX6Nܤs+ݛ˽>mN*XMT;J}tΝoRºz}X[UKNZUѬJ{@0ؗX^ݶ{eV% +iYzPydOӺ6*V5WTPK +7ng/sEd;3|!qۓ)2jn[[;K FK`dz%ɵJUݝ+#*UFr8,vQZDU8BNI H ⭘wgf)Mo5 +7QCc&^O0u82H0UW9$d{u} QboFO;GHd̏!%w u~JPV`Ud8 v"4jV\SZzh Ac%xMcKZW&auXZH8M( ۈc>MsqRJJ5-פe[' 20q3)wԥ+T rB}tJޭn]u5ALP!>uJu+SҵZceAx8/Q蠽rU[U)6@UI*q[I[/Pr:mR]M Iǟivp> aէQ+)8ـAzFTrG ></_UP􃝊SCA`8_ۦMIڨ'.}[Lj5pY[8Hptj3}nIs6x1un4T(##>ynvUiT4I7ִ۫̕*H j>)IO ԿCAۭB][-3*Y޲2]WW4)R&NJAi˦p;aϞ bD/7uY!eA왑,*V4-*MP2qxxK֍*MM.(fmēIê1'lv{çU҅ZbASu|1ط(F2sۻv4kkpP֡tׂ)<8?$mbvwv;F|a{[i !s2@'4(iJ~ +Zt7UTys'Nlj۲'YJ38c#{xAj;ʳ48.]2Jbn*u.+d ;"XV|\JņԨri P +H̺KvڅATP4SRƚw1,@,X8O iw=]2\j9r03< R4 CPRrXPp %rG]W.ݽHR0HUy|Z TP:As1b[,4zB#ZE(;T`Cz>bd.aM 49*9POܘo ךգQ=:%w QW`뜟I^ʺWRCSuq}[7ǎ#JTm*âiȁ[ pG>m^ij\TCRfj*sS}JZj57-:~#p28̕Ԫ8@&03F}>_ LҾ+56\կnj%y'Ɖw𻪶UPhUCK%1ܼrFH_00L7KE)Tn5>A.rx$ l8iB4qsWTbu i};w9tKJE"\%W +1f^Sctdz;s3Y>m ͽz_Y˟g=qP4-:@,p|jMBDNHy$H&wTS۸Tn$/&~"" )XĬeb"""%%b%2%b""""S"VS2)XȗzUNQ]$0%b%%b""S2LDD"vv޽@rI~JVPA PD򻿷 +n*0KPI[֗U:T#62=Ǚ3ήP5K*iWOQ +j #O>B +]OfR?8ӄ]o|;vP:mEpI[kJB*;Q|—tjQE4n3-(W @{AխSKÄ#=R{r8o(PqNTV`HV` q< ZHg/g@<{)=>@2c=Ffҽwaj0rW3 \\~ګ_-*X +@QecLկQQF9ca򙄳Ծ\ԠwWnAPL1֚bOc[*.a sHfJ}IԭPԣQX/+yq2lѪUWw KoMT`'2m-:w 4sr8]]Nҁ*W_vI)uZ0JU'g>>fAz\h6uiЪR OqDj4*$5TEp;rq}g֣meZ |3=VJM+(*=#/Q.җũ0d`ۗWw2+${޺tPx}GWVT4ѝP@+G=iuku#n{0bF9(݅>CqS.i<=/u;kWP.9b8U=x)WeV- +V69LŞg3zu +|`qSֵmZj`>=/j5>2Z[VZ+ ,|.hVe6*N^❲5J2Yz@~0X{{4E][↕j n)TUQj8ێT.+TOR&PRI l.Gb&7šP[j3R.@ȤOy`Jd'bu(uyyy"k5 +oصtIzcq-5kgԬ f%5kK/^Ud r?qi~" VD-TeBAe@2KkI_qnϺz]ꖶ,Za @=OںՕ3Ը 1`$)$_oZ^3ܧ +Hi_NecGR@ {f:PjVu2=H^f~"" 5ʦӴT[v@jE6s5eK.s#x:t֠|jC&p3q%xK}~*um} T?|EZ")gN *nfz]zjpOݿmHUz>![@7Qm;}̟ 36oL~_r3'#_Ñ[*~l̞Wzxi=|[ >ѷ~2s:S gwv~y WT/3iT ~6NѕBݐaZ 9Xk=fQDX8ޫH]1bTwQ#3׺eVvoQӥp(:7p oog ̳D6 +np:T-v}ꊗ<7њ ۅ~@ݒKd-nAR3yYؔ.!4•-ǺNk}E.=N2Q;, OkT6C:` xOgz.+{[hXu. +QpEd27, =m>cu"#GHkڳ]l l3·gErvϖ=kխiqskvI7G']:T LZ,+#ѨqS~A8In6]h]EV b20{̕ڵu~PjXҩE^:q¨?Ԧ;AnZԫR~ܗWř_hpAlMvФ7yyS.tn |`ᛆq,cL1\x-#櫁{|9 )-RP|&JĢC.Rcwn~nc GKÚ Ou?%þ>)"U[ k4Xأmsd+6& mSR3cT9SF_ i˶>l8zu%WF+S*VD|sVzE)!@)W4 =xI>0s_av}pJ2?i` + @wnIoiu58i d*,xMآ=è.|`>xP>|8<wfI&bQ|Cvxagn-tnX!x-irPH. >Mhޏ p ,s1Uk)Q-v FgzQzl@FjjZ9MiS"~!s{ݜFΐhl=SS滱_U5gT<̶3cu_3{mam:`Qy9'oE<#|.]/ُ$T~L Iu;ڟ)]RH3:U/o*ewfDBAPܖ0$/:&o-6g'qxtRwJ3N[4 P{asUVӫճLUqSLerAIWv+ZQjڋ\lS8$XizGªNTb4|@{&:RTE*J 2'Ac.޿B 7unvrAǔb"""閷9|g=Gi} {ggI(b!bacwi--i]p@`st*)TuF{#M2֝S]h $.Snh@#p3օ;jkJE +#[v6Mj6<gKjڦmAlcIƍf+ +oq'~3.l]jW~+2#ς{Ir-in(SW Om%0NHE +iE҅0ϻs={ŮieA)0U +p{YZs3ЧMU +H<ҏYTj +e$9aؑؑeZez)P+P -Vi:B0TW2=-Ε'(GὭ`$!-(.:kv1eU["QN~W>i/m䖫oM$$dfYP:` UQn' E,[9}Tm[h'SpmFww Yr[$rsljv)WʪO i`)'d2Nq)ϯ3;gߌɳЦ\T*7@l dp%iJE(s`'"lk +-Ah'bDZWk=%.@Gc,_;ഺ! +{[K@[ԤMvR2#ȉmٺԥn翶rN}N#2)I zB6Ma>c˛J{)( +9v_gaB:t)_@?\SL]V HfYԽΚTAW%IL< 3Ǭ1vJک^b8MW/ v=ѩ2rTS9lX3R@#*HI\nOjT.5i!m#;cX*2Q[ oNLa7 mgwo}yRAnO=0 $`qY mj)pNV*GE](qA:al +ԃѬj*#[*E*98`s+s*-jddF;e MB'ΙkzQG`0 (bs=:M\ A aT7-KJZG6NNH̭mb]RZe[h4tk$I9=;d *kBNMMReךm.)-@;n{-4kzl .5뵽3S(wߋcQlc_[h8#'Ȝ@-3kH*-1{hlPЦY6mb'txj1.B +^2$E\*zQR4cH!g9=?9z֡N*(eazgk7wsehivMjt)C92OyenV5s@ yre>Xljؕ=KCE /$*6s'*bTQ*{[kRJ SHQ(P,\Z] +qN5P(s-ӭ=Zt]3?:5J!wm>EΒsqV_ +Sf藦A#zJb-V߇Ojl>.B|f4IMU0FР/==-Š 6.l{M2֭EPC;a%DDD)+Bթ\Zu{~CT 8V3Qg .3H>Rm`\X|"AuzZ:J&]K0U<N3/ѺfQkrd5NRᶫUJ`igY)mw0Q}j1Jna`=5]Nn5lLn*7 q,JȚCH ` d9(ԯTг`p=txקգrWTL(㹒mw5t~8Z=H$3SjjS`i =LeZEKUN$:j zST1CFG#\HOL*ˢ*Y*&[TZ"5`pTXdpbTmsF+#dȈIX^K3qH]VZkTd&=E2@p.u_ഞ}Ncd=3Q[RIJr6|TDDɢ[=TvD Iw}eb""""D*Eܾi =̔#1(Tyg]1z;+kGJ.ƒO*|jOR:lR+V 0 ٕ0zUzmGX}7Sw9i:Ưը:^jlWp\q&:5vڭQKmF IU)O$1qe.5Z֥Uլ mVl**{MrxBMgUYv^҂0pIeW-A8P +Ol]f!CglSjaı˰^S()ۛj`|^&Z5mm҉DjH؉bHg$hZ@Tj ` 3ͧQnm5K +PѸ+Cg>ơqNT*v;|=j6uPFsMFaQsns$jZJzUJ}p8#xƧ%n=F`Yh@fCzKc*\$IupVp(ɚmFKV#VWtZr=tK߱YvӮ(Ы]-j pP@'Mv;zXn^^hj N4vmJwokwQj M +e]FdG<`9FWIӫ]TcH+PddpG>^ծܤq.j?ju75dtCO\+)R0s̥;MF%I\] NiUZ*=[X`4J:k~uU`X `h:aCFFNHq7UH;U"HuJDRVT.ol`s>Mp5 +\Sfe*TG|̹P`<>uM`]&V*\]]l5޾҄h!#.01` j:[=BˆTdzIi90F&:u*][RZMoYHj* 0&M*I#kZ.Vh-cNR7\"$oI9<]KġhTJޝn.LeB2f8>rƝfn+TViLj͕㱒Ԫn(\'KUP{"9V +8O$&) +XQ{2n^X]XҠ\S/p?c亖A-u+*bM=FA8 ⯂Zjh? \=#;>bխB**2RL!HPxb@Iz޴թӢ*"Y%Yl]| ֭⣟MQݓ<^B=+Bɜ0nӖփqqTR]V g v<ivוܳT "JA 33mʟ;•u]3IeeVbrq&*tj%/PRnyrN3B׆^2TȩL\zjiRPծ*TpYF}NJV֙V, ǡT5OPi-J`U @vo\s WYT*NWu:$dI"ozT.(&A*W,`028ěۚӷWHcS{Ps'וF-Z@t ,YjHQćcn jVR՗ +coo>$zm>V TPoW+čWZս֘ˢQvC +FU85;լjl(-00˔y xSt spiejSfU{G\n6-:8pv>X폞x_we:4+ qqr>H)-`Nr|\ fz:ZeV;iZ}`eH}t6꒣5*{,ΖmAiZ'؆$.jkc]mRBP2r샜w_V^)k;A +0 -ͽ>GI*r;n|^ UAE#qkRK(].W|Eԯj5өqGlW}6pwwv[SR(]J+J7,z8R 8;rW>(hѤk{N UFYYXCr I)|?GmQ@ fIi GBTj5U:~rnpr>ba4 ;Uq^\P\'m@nm] +624!f%26}AKvv !p g#8ϺVjկ)mjUwGf }۽xQHzm0A%A}@VBâ*R0,]AL[q/|\ְ^ޫS-EJfay\qϺz}J%VWc1fEp +[IB)W{;eSյNۃ?}iڞԲzΫLQ1#"p*h j, +iK&1G<|-Rڝ*JөJ:}"^,I-זW֒ڳ:an3̕auvtkeԊ+_Wgn5wb|)'1,/ub޲W`,Co~uK iބN5ÿerی}75iRRD%*ᚳ3L}LQpwTSYs7I[h=3Pe*\Td+U$ϧ>[o[ӫn,,Jʅ#q_d%7ZW*3jj1TDmyYaSKkiF֤j56Wh /75L{tGP]v6>Ү-VӫI`%ᶰA3Xu SMhpTe%a2xA+wZmtL wf Sm 2 N='=>uD{gg216ӀN>@}jvWhsV6́)cvq)7wtAA3Aٔ Ub|v + $$0uwSMXr7T!~|ئVNvjF@HsO={Ž +;ޯFldfzډNbTp1n.7E:uVr* >'Zޝzt*JEer=m}[ZT芷KRNW^8yZFԮ^dEihs1t HϢJ` +E>Ulp$pOyԴ65> ;spY$z&v_bIVng +B*^W5U;3!dɒzt% }Ur@ S*6|izTM蚎ԘSLT%Ypw'Gb{xWOҴ6* 2N@~iޥ oJʭ}c"WIF~.i]=zjZ Mvq8>uM6X( H'gkVNˤʊEc''=gqm.=8`FA^s)`n{ZyZjwIO*p +PdlsZ]֯ukqyM)-Dj3T % +`{4=JR?ʂPI49vćOځ+錴zQQڦq<y5ݍ[KM\ԧ9=q[[z}p۫TDz{0 {Vd-UzL۳7q1t{^Jl-[pM@{Gh +6<)-J6u+F^E[C3z[aulUE]ZB23A [ DNKQDK$1߁I^ , 9nSnwvtN=&k{]b`GX}$cIVˠc;k,@#EPztѺǶ[j|._WgGh5f$w|bSJJh\Q}N?J]ONJ$nm9W-q\cs#Y藚}d@Z5@| R+rþ~/]iopեZUP4|w.yAVjŪƥ{,G c<̆wukN{z U-JbD;pw AϔwieXjjʯLI pF{s03~t@fՙj +m-Ifǐ3%{]| +3Z޵Z;z Az*F*zuj۽ 8|cbݥ⢭Kzn]p0ʹ(@dj9ѧGw0CwH$Qi!g`pu:UC#dAz%:u$wDu]܍Gyv3 7f +?[rw#c-F]C)[j$Y.g^<؅I(Pa*-AXDW]CH ,I<%kӸ]\gR}"FZZWZeHX`rBy`|]&m^INޢ:ȕvZfqUޚ+msX'MCK\ר^2@ZLzCP[\RaMQҠlTsA~*^VunjQ$3; y)U(g`w$>*e 29T;jFb+ȕ޼1RT@92Xadg]~W+g)&B9cd4z6ִUk*JzLc O)z }ƍcydѮS BHn@*w׷F-)+fr8昝%]RյQiY0O,wd_wj4,-|T% +"Uzdm6ҶËJyޡPn$S1ЖUOきD7qvw/[ӲZ.U q5+M{RJ*~ fvy Ѭuҵ0Y.5E۷vv݉ V}[BԵjrrU))U>l):M;]VsZ` W>c!#xNͮP9#* gm{+XUM +W(xR03;U|x{Tj%X텨bFsdYZ*Rt[:Uk3-6Td6⣷dWuZ\NW N1R@\3*{'<֓muhN:)S +efajz=*mQޘzuǗi?[mtRNڥU 050WăYI?qIK-g`7|#S (a ,UEڹd1^ZmZ6tʕOjwkP[u-'Mq7>yLFUMI`NEWEPJ;LRާ" +z{t(r;'ju7:5:@zʒgef{Т~Z5E:Z?MD.+0>Y>􅻼EjՅfQ50 7u"Xը)vĥrZoP#;3ZfV; +P)J8Ϟq"xZO7*hU( +q$гuު ifT7* 59V]zF%ipb3c9*u4KQwlYx$9IBкQJVv +s]u[^L`ǪT1ǘ֚\kum*֭,r䆩H\׷M]jY%dǵӬyd <:ՅŮ*+ZeQbؿc8} [GqnJMPPr9{Mp&zZ#[p>tTܜ=o E=50xfkiFƘAvU枸߶b8԰#7c#3YFA2ۻZV֘((*RG `<^iwSwmUWU-TTr*F +繒&TmyUnAZԬH$m<>fOX4OR遱jTf݀;oQ=yy}:hڂr6$`w.{ K.-dRnݟ 8Fx5@v; +A p;Kt]:֥}Y+S NTF(O$'\n[l<e^&r`|%Qn]fx5?iu&K-VsV@T*́FywQ/5CFӳ@U\},8|^xx[DkXu{𴳸Y*sN&6: +/`EfZ/A3ۉfZQ @Y0 229]+W`CԮUIZlv,1N/t{WQlo Tw>' q5!WT&@BQ HWǶrIS 5tYkWeUY `g$c>y4[#HU ԩߎ_H K7¢'#I̲A5+Qؗb'q61U 0# <3Kö4iUJ5{N[ߎ +hPjA@]!kv`=m4Lp;3;; I-h50˜1\sqIjfooW^T4L"( n@u()d^GFy>e:=*t6)cTB2Rz @EN513d8紥BD5*JP(=‡'iX+.\Q,NI4ry _ړ+߹r2ը6v +:cj1?;̇)>l'=hiB?>N1==lV!n,wb ѹҮ-m)լ.03ddO]7Gí\JuYv8BNt>7*lS9 v6Pj>Mڝ@uܧ2-.OFJKس%،ĒdJ^TJMUڊrNn8ךdO;jHw̄h]+n/|ybAMOSRQxHyymVΘݝ9嘒en(-6ŀa7A1o +XZUj֢2l^Žqu=X +*Tt d8immEcV6GϞ{\h=_#T za6AH>I}މkwʔ46IN2]mzH],'p#L4*q.̋% Nϔ +zژvz{ɞG[xuJݽ.>.3x~{>zbS.Ov'vwq/IѨ-K3c>@'"jo0OA1tYilZ nKFN;316UY:N#) +wVP5*Hemd||7cMk-:{ox8Ϝ7^ޝF4iRQ `FGҦ)"$c,KLyнePB 0s+gб.ڨ۝v=cǐ$e>T0Mō-磸;{KB_uJu6/JSfQ <Z+-AVQIfF'HoKwFdiRԦ āF7bku߽/}6c1mZ=gO&Y92C;qq<|=ih!>"5Wzi0;zL&>A4ÊIv5znq/:=7OX8^{i4;p7.:8Gg9,j(5i/^•C/QIe%y2Idngz媰-iIoT`I9' duKw`PS֧ I5{slfP`q^գ]Ve*jPz+';A>T wo:j\6zb71A d9."C(YVB!Z~Xn̙24n觿iVq0Fx1#_bRy`nvcUG$IM7RQZySIR]Z VnXT[h$xېlə6oB\ܤ0ʜgDDJw5˫=RJ{y}'ZթOT5&M2uRIr=$ko\7FV\a;+a睧HwqgWVew`W v~>iY@@9,n.-_Wfe +3gdaⶥBnP%p髜+kܠqq%R ݵjN6Ͱ{r8`qInEX]-2߮Op]!r=|kv.-* Z0Z6qqKԵnִ-=kzjh +s;yG$kˊڍzDvNEUR)>m3FLc:~V +R҈1cqz̕KΖNS&FJ=@rĶF }wucJ54:dgfB*)e@wZ]~Ӑ?)պ R֩Q@.y(ܟ?,LQʨy}LgY_[sy^R'RbBq" |"VmeӒ`_:N!2:jWAQ .թP@8\3*~*쁏tĕjOK=O+T*SNk+Qy׼iչ +wU(+ +3QPvn32Zmjz)6aV;A%NAMQM%W>8zUl&ᷫ1}gTIgඳZME KwL g2}Lj\-|A۹Q89ǗxmJusѧHnbRC01}2ZF˰sA%q30k+Jme\ߒ%վ)օE2ɩI2|ɐ)iv7u:ګ^5:h\y1'm*Vҭ2t@V#$]3ZxU޾F2@IgO'2f;ŖWB֏Q*]Q@Q\r@]nl/hRw*Z{I2ZjWJ +.5 b{q A|z*Sϲ7wc<|T:`ֶZO0eGcQy>J-TzlCPl$y<#W: {sh-*/MeBKT`b²WCWT50@vG,@,88$fxXпs}Rm* 6sN HfGҴ}?SRmK5)U_ˀ grMz?f(N|l)a}l*ӣlZHnB4Q#mCJRNZAJSRy1|RsiXR&kZů©H[ DCj0r8'4*\ IYWiݹV}0`$xsmkDzԞR7p=37tjOFjԤ6[ǾIBkt->~0A5Msc1U4+ۛk[aV깸 t 5FȦ$m ɵt,IzQ 5'vv,]sq2U6B݅*T+Sf,&(9ۃ1,i[KG ](`=2ROlyz Sƚ*STSV*5M@CNߠj7tN܊y;s{#V=mUPn$d=;DorYQp)lrT<{>V4J^Qdn˫/zu_mj] UsCq [^(&Mk$ iہ1}%g[Nj]Mަ=۰6cdU53[jTX}4bswj=GH}9lҦJNq {kQ +$T{A:Yv2ݜ3 k+DԨIT)dUDJP#1<ڎqNٙ( lfEN^ ^#d51G}a=*rrI|v8^[( TH73fFKLm怭\l^JǾREcOIjSͽC0KgMyfIWV88K"" 1 {P2-*RP$_\ӺѬ>D#!l`G׾-4ŵVGBUSJUWaV@8 +iS$x&an)#Xm2K5n9 4{m:jCT]IQI5= FBus 32VjIbB;p99/oN;n-Hf)$Fi}#^[R(*6X'mxm-hT] +D k) A%SBGQ3@&kU;v+Qv!!WۜbeF*FXԠp nAq$:Uk:1շ5 Vfriu#q8P;LPhj(̗Ibvj'bz:T^S 6#OƧAo4G+4ް Q3h.vB\mҺJkJTA[=PCOVSyLTZM]mBK( +{9݈Om,ӶK?Uujog.%'QC+) bMkVvuEUZ<ȑt*ݞV,P rFs,mVt[}Q^֫VJk3m'JnJK`ys[#iZT-rrRm +5Wu]q{r 9MBㅧyZ:fb)ѶnӁ"xjQѨjeկJj3nO8 +"ivWF5k ׬lN&rݦֻNRFM*(Jr92]V4jwO[ +ʕS\R?s[- +KZ&4\cQR`C8 =ua-{";ڬd_ʇێ=OutMN{LSݭEGh@ !4J:Q4liTdL;:I~015 %CL_. +i!* 9$3N; + ARܕ1U!=G:&5)>j .*">F$qUMdZ soJΕT# `zgxm{]\:ZQ˵ nqf΁iimwQ7 !9'9KAC𞝕A\5AgE 13-{iGHtմWp*QH[?&AԒsg T66iOln6$tmȥ[~yH/.u +BU_S;UT~49'昻냪rƧB NQX|m-)YR=O|fL:Z4u 9f>@O]qijO9s[ +8pq,\7ں[Fƅd8Mjvݰg1n}iP+Ӯ/ }\S +go)ys[U]ȥpHhUQ1VN-ԺZoX2e|AmGt-iuU8Gߖ'9elʯ.O컉Rơ熜4aXJwWWsp#o)o*5FJ )$3 K>Njl[y g$dYiT.RgM TZ֪0q!gAksSqG<(9DDWBNJۚ"Y]X|| .Ӷrw;噏$#V +*4}rx8gWO^*V`Q32֚ v?+Lubv}ڭ2x##z++WDb܀0wc>E}ZVJZI#8MޝzUtirN#VBcuZTVŪ.i~[ax)5FTzjrNOq]\- P`sݳ{QjTJutIV j G;M/ :FRh _h0+FGRömkRкUm 13@ʯ-pn*תģ=L2 +У ZZ +BWΘ6uM 2ppp{5<1kN +*@bhw#n|0LӒ̵BRQh€<%ڎGT{z(AGb3hB +j `1=:Ti>]V nF> +l:R33PV彝HɞT5B  +ṽipZSj{2OaǸH:m+R*[$S +\4h]5J &Tn;ϧeM!u;]I"B+ԩQZu:44.s-tJ#HWNb< o-*VjFj+bd+̊I$$[VhZ3ddݔ9Lsev'r{|/mI*Z'~!سg ' 0DZFz5z}2q0k{W}:+#jبSCmOֶ6R}\-<6*@ϳdjT#QXnt;XTq{K)xb҅ZթUer,; W'$:=@LYǦ}{|_PG 6$w)Xpr>`T%wgL>QpH $B'Rh6 +A#.<9gqh[ +BDbdO<|ϴ|gm~S"/-v.%ndnA?8"Yy[ܻTn"pr8>}-+ڗ:QPQ8Lz'j=AGqoI}2y=+ ۋVpv۴|#wgJѬ  ѥU*ԫZLUP;'&z^hn$5Juz]2cݸ{H|-imJmUirpK||yߎIѩi֋ .\ +VcQYj9~XoNW逕䚿L%5~UjZe*uX V9P3_P7cJ*c~ܼCڥOѷ U?F߷Oѷ ++PRo۔"SGqTۖORxOiOj?De +vsSFz?-4jFn:UG䊿?+ҫ኿?*)[fWm^? Vb׫^(zV1nPuOߦ7j5V2mpmp*U5nT[c_?L۔4Z7˅*O7ʚu꟢?*l?UDn?Ǫ~ + ͟\WSWe:n?Tlqz茮ʇOM?_љP*/iqzU1>V1nPU5n1Sj7jcmqvr7Z7 Ku*"CN+YIE]&+_{ KS/q^:tVSm؂*{d xQOoakۏѳuWNBN ( }d֢Q5.lr@5Z4>Gku2OW?c dS>\GS@Hc9̮Ħ< ctԺ7GO"IwmMU t _-޽C2}>g{AP8>T$gZ!.޸G({-fDJnЦx+˹ƥŽPAP@=Pp3X01U`#yRo& +̤ՠRUTG=B1EBIcǩ=9f 8Fq{efyP[OIszD_LwbiI ef?Tv+WTjfe$9&15SO7Ij F1z^Wԭ_SZRf`Ty5sRFYh3i[?kD/KjiSgBxvčuk=f2@%3[{id* 3͇mo-j&k JAPIGxڮ+ jE]%Q,GF>C7-oZljqPeʏROi={(6.#ȞLRҪt, u8؞J׼PlJsY/H#?5G-@`N Lw˼kTJe6$v-exnIAk7z]m**8{{hY~UieG"  Rhi6.n\%4,[O4ZA^먩ihrYiX J/51cI4k/֨sRj >u|xZHt˺iҦ%eH"c) +Sg4F߀fKYM#T@HwGZŭ*ظXU128|7[\PU_](cjw6e**_Ԥjdґ;#2|2zOJ4^էT/-}cJ/Zz\lGe}$i[Ur Dl@(>s9RigJAQvpN9=QqNרێFx/] LC_<.i-i,W7՛q,CRm0HBZ:jհbF+ck +X猪,r})ώfVڍ:t)41wP08;:W@W'mlblG0:Scnzb鞂[Zja1=&mRJH+"PFA&x qvoNF!P-jxL50`vFStֲ#l˟2י2ڐm/Sꍻ1T/PBV* ݷi;p}RUjֺP˵BE$:cvݕs鷺Ѿm(9Px|d}*RwW(=@_޲&JgqR%jV҅NFۏ/m!ވC8{>YTB?epOO *ʕmkRVPU~ `,cN;M.<5p* + p'>Itt)l{ -Vn +ml+3mޱZ;H~6c${MM12Æg!"]X[NSV]Q +;6^9B]֩CU69]qSEs}u0jkL}ٍqQMNu^$f$`@$i?QzZZ=`Q;sh>{:uCJN+nّ= yǮgYdR]OBKwQۦ&B٨U 1QDz|iG{#S܉\*E, 3uۗbHp@|2O߳$^߃RJ';ܦ12(? P{qbykZW8FNlV,J'$ Nտ(TnZ\*5s^ljMe5:k}*Kk'₵㽆}8đM7jӢ)YI?4ieVeܗiv-M^†89d,5]1)(][P).̴eF|岣8)q-c*_(N;A;q-'L.̨<%3LZ22"ս7w΍tZv )g@AR@r;M֟m|\QJI :fy쭃VԐ:`CCȖ,;@z}F,$E $$ɔM OC-AF#4֢`#G jZQV^S\$˛JW*ȮV##hvԷMFES߰󔯡X\V[5ߴn$r2G|{*xM҃1$i!$IúbEA=[.f#2I  q85mԵ٩#1I2]:kIB + `mu 3gD*ڢեeAH*IC<ɁXmۿRnkԹCQ*T̮T{XÄ.ۙv='v3rΥ +?I&ss&7[&N)W3XIaA{{ +6^V5pY{zptZSnwS$fboVZM@ +q؂;-JVgw۷sH`p1؟SF(jjCc7cK-+KZu(?VRPUrx$Ok db}K:[R5IeAN}BmquU +> P{2ޓF;/! +\gLG.]C\E)4 +inΆ}W$.%tgZ .C"p1}yi}jJZYO\IU4+fJN3=1 nIǖO>CEjMe#d2Э֫W#;1'_4eφrw󙀳htW[gTz7,QP۞Diu {vjZd c|6ZLG7Sξi^YᖗV {='g]&u_4RUcyps{Phj,Qfc%Tu VVrttjB=3}ʖFҥjV _&w'Î ittf 3c<' r{ + >URLNWARV09zNn(ѴtqMF`)_Sdi6vCYkyspO~I;Cvc6QܕV +O²`(9QmSTIz{1+*ZB\zl RFff1I/eP`K"]o z\ +T?WI4*3aX`}WըRzR <#^ޮJPεBl+a7K/t;k"NifbG9hԥYV-DaP`;;̀RQYfy^LW90Je_{\Jf+7'*LN֪=ZLeYy`;+m%WZ8۶Z”R GҨ*AFy#jcTwªISF:URZoM؜Gn;zmR\ZkdI=O="TQSjh< ȓoZu>Ps9! qEѼIel>I8#s(紥| B[* 2^U5@M{^WS(4M<̃o.:k5Ew\"d4NU+ZZnS}f:z긪O۸9DOU(F*өKq<`Q2X~o=A*88Pe; Lf]%2²Į%PǞq37I4/ޣ[7SZuG'33ΤMkL?,Dž_'|c~Ye-zUg]+ +VpJJjSPũvP6=ypu +**{$ϡk^+j>&n4'AۓKo+qeԤjMXԩOF+N{u*0D &_حB/F,9$ǼN + O3Ci~ qUVf-Mi<IêךP9͹${鮔ڡ!P@q~5iYPkwOmB.=c6e94?~ɤ)]S2dKvʈ2eXʎ%b q2e"TJH0"SPĦQvI\Jg\#0XK3.̡bP+LVRRVTG`%7@821+Y@e]C)rįih2;e3,3yZjc֕ެD@`jФ +c٬]צ99ϯ~닺6|AS $pX;>nu2C 7pݻ-zՍ+u3pk(g@YVҮu uiI)5BUgs*9M;Fp{GC= +):\U9͝j5^ޟYQ[p[v1u |2?U*lav̇]W]-:uiոWWx +œb]ġ32JS̬UaJJJf1-<\8+TH 32ĺ;@̬S[FԮ*[۳SAN< +Z[6pN = {Knk\_SJ(EhAC=C>"/t+l p8 ϗm(N&lqu}c%c2S2DVIQ* +c }VmV G yUe,4]6枡NOt+9aYH,(9xR:MF1 +!>k}m-uzPX-LJ.J-iccfJG4g=6)u$۞&%nj5pۆ(]R3M +W{ +R-X{!aI^{ohqI* $yeMBgVDI#{ 6jڪ뉉zUJ}JE@:uSXyD +vT2ksQpΥv=#>s~V VZLԭnt伈80#2p`72f3c)9J f*% .SC5iy|*P3>%3@A2y./ChaVRj7SD)eeq˒9ǖ>IeIh]_Hnxj(ZnYI3gݙ$ĩKgv0NL5;f( r3$`TFbao3Aq1jBS{(+`rqeBKҳ_!J(c#٥zt*SI8QԤPdəF2=MNUQ Aۓn2}3%f3)VDj]$VcA=WsMjRp!3׉L(T@wA2bWI_)P%@ĩ2cmwiqmNMw:8㜏9T,ZƁ݌ly~W@!0i^8'k`)%5rK*)'ݧtCZIÏe@p;dpej-ZVtUԂ ۙ{j.*W`>1P@1D[Ӧ.  ? iX[!r:) +Ĩǖ!qkJY*qc"hV:ԩ1Tw.5KZfcsmlz2CYF5 ^.?$Vlgj/.(yWPӞPÒX>3֥'j I +7 +8's<ֺGS:v's 3Ġ< RTGh=a8-[0Y79p*Q{TѺIH9ǎQ|\եkEԬOE۟d3 a _k[S +GfTc{ju6mjZ}rqE.ҵt*)g9n-Ԭ]0$g$ʌix:RbfZ֕z +VTeO>;ͅ KG5 M:`9$0LRF +q1~$Г^zD0ޙ=7\]jicmſ28)LAcGRh@A##MQh8SU@[{7' ;w(PS>ұ+iD¯#w]jN̂}3j)ST^3r3v{@ݱLpCR~5EdfKp7|eUP8kE Ql]8ɐ)ԩN??ڞ7W%V'`1&斔VNO;k@[QHvZh= Jԯ{v OM2 8nsK kuraOouCFLZNm;;!hh]\\,hzgq{ch1.]S +Q}2F]s7bJկiZE:es&d9 2wQmLP-48>E;qIhФI|BCEB`3U*qlmBOGi~nn*u,jR^rR(s&2 ƶyo?!k~ޯX4Cnj: +< 8Gly&a]U6zj̇D1!%?Է|s.YRD>ZRSRs3KmFΕV*(UX'紓S:]zU՝q$$>@}lް۝¥46}voXT +9̟x'Eo-r*}IEzmB s嶖T]ؽZsO;0*)P{hSy*%](VS23*;ʙB3b[7 @SR<*pJ |eVzgd!cd)Te!) 1$3<52z*ێXzb=*G,+n&Q|`=Fe?/%`dc葵 ӭ?ŦS[[ӷZMoU3S-7V0LJ|ۃ5nZJ1?ZlHoT"@uT6f}إ*~^[7J೏g%mK7ZP,ݜVBMIjM6 yRގFuf]C ~pA?bGf +,0Bev6JgTФJpbA1]ڗQ8@eJ,M[$v>$f*5WMJ=IѪv: +*{!iS^b~a; PnrT\U4i)ْYXeR.*JGiyǣ1${&YX XZ\Iɂ`AiL2ee3.,)Hc+IX5 czLl73oe3eJwve;ʗr%3̶x{PeO1JC"R 0AzL:,vFN|VVz J"Pm-uKT(PܰlgAw :`9~A0 ~x%Į`])L e*kHE +`= s.e J@`L5 Mkh~}eG1:SH5e$0Ojw&H,hVW9$h~{m5+NSj</h32W*`:} i^c nRGpl\8Ѹ3pNHϤB  < +% LYCi^{J QW*WLmX$ i8/x$U0NDy#2%qfSyE2P2(Wf1BeAy {]̨2YqGޙ%C)\ p}fWh0\aMrSotڞ^שQZta@}pRөŘYvb{X{%AD 2.̮c%%q)PÐeqcVIq٥Aǖc>JB"; +@̀QX?ժ[PJvZTQM8#oFFp{˥"VPs̸JLB|GWC* w0%DKLJH6ś"jx4OA9%ĸLc21C p-'%|gZeA#* fStvq)S1-n% A29f[yeHPs))̨ C)Je{OyQ1)%e ebVZe% JyoYޤۥbj6_ΪOp#lA+Sʑ(%Jf1I\@%;J2bW0Dh*Ħ%#tWP%p1\gR" JwĴPH*D%+)LK3* w"QLv21b;JA90x+-pc"mV 5$)C1PJĦe3+)* bT A*c2DD";J@H1P%1`A(Fb]B%%e"W29tXf3N{]?JEwK\ڟCM.Uq +ܧq?%SU8y[i~?ؗ|>CQ} җp/ r GOcjUЀt㸢}*XuKoIG^Z^V{+FʍByOSŅCRwRW?poN?'jTNySF̠իN#Uu:O258^~6Tj5{ S6\~B'e*u +ߜJ>+r ~?w*/q?#8ԫsڒ̵Jö|OGFq ?PŅG>ܟ?͕_uX|6kusܴ\7?O J)+ROOUqh>\/]c} ہurFU͕MuW>q_q-w uZ~WWC/? \#AO_]4|k >0>Xu +H66?v[T-cߜnIG+G.??ruw?%E:4|#_A=ۯֻNNu<-3/[}V31Ӹ-J*J }&%b)V%#b1F3@ĬJF%b"SX""#b1FGmFbĬ11+)f1Ĭ%b"%%bRVSbV""SC4Q>=yDDDDd݂$bTу)AKxԻJj*8%P@B&JEj)td (=QϾ{DDDDDDDDDDDDOT2GU,pꕢꀰ=O:`\ϯ)UJ0= KZX<興w,}zMI.FOLGZH A +y".En] 4©c`|)hZ.U 91{WOjpIf+`1YO_hۭdǻ3h'3KŴ%;VҭQM+dUK [:] fVĕ;?f=ڲk{Zh#85UPX}OQZtқ[Īޟ$q1b P?̷m#8Z( +6kVj5i #dɺm_ԝ*22GfZ֓fA+m,2 `eVTjjL jRUH9$t էN杳=Z*+17PH=p&fkM^\lґT@'y+iFU{(!U8<˴ZjN V`29= BA+A{@$o3\ҷj Y]e mO3JM&l-Wq5%TieI#V(NSO e2q\O? w{W1R=m~7g/tJJY]6vA)k4qnSs&P w$܉ңqiCk0 ӨJeW~9y{VǦ:KS$ HN}F9xgXШ^զdeP.89{x+oY[jTD*6pH.Twe-iRJԘ2:)# 'u :.VM+=g*YUB5 & ο\y kfנ^3H sypFq =J qmR0ZĻ,TV +IR@>;DD@9φl;B=RsP>%e_-j3}H|)jcGB;$]n)uS}v~2_֪ЪZv5`ECOj;3*9δ/T`] nǔf\uNSDUM'U5 U;H*kMzuԺ5܊eWS1{JvF*d+05V0B@$w WTh ֝J@9Sy-jڕJ4˜9T2N|4茽:7nnO|:=X|_s +As b.~i T nԖ#pT:$s=k*MdVWBfJoQUB:$BH!jNJ 6حFcc|4jMԩ֩ʝP0 e[zdņasn-*iDQ + +`zdL_]ieXҡqTeRCQe'Dzז6Lh.omJlSJdzs=:۵>J)SWaMʩ)`8'7&'LҬ(솑)Y*6#v;s7 6[Ҥ%Jj;0>x0]ڦU5BݕU55%,@ʡ~N:eو F8LQiutH2 -=&R4zk^Tp:+؇$xa55"\ mL:QVrY$N}2:%ՓE P21d/jwO4+JE5 +c'~*w#h-Bkz,V6vST`QWnH |LWkݵ*‚$20{DKXD]j!P~X/|gYӺRͣV'==Tg!wXqi^YԵRP636ݕ ffkkJ <0P0CG#gFʸKzEUY)s*y6)i] -nk)56Qj᎑Ncpٰl/#F1 SUg+n8i+)eAi*UU22A|;Lо+e^[CD뚍 F\r;LޙuiH)98 >nziӨQ.+-:lIC^bRJL⛔`ry͗3V5隞/sCo&M9{ +x6=ioRwf&W\׭)#+W)u髅J]{LUFM[m;Jb""JE7]|!hChVi5Q2)BRsA(eUfFXF88=31:WjJ;O3)!+` 1#<ΟAV#L?CD"]գqBPgJB22'wn$mG ';hV[kQU0>=""P]RQMW]X1mSv2#oee ^7osZT;jrOlGJ=0J)4 p|&F""""""a(k77-+ѧwwb\zv*~-usNΓըp '#74:4\Ҥϵ!FH8 _RG|nPqdgS{oFq[Ovv )ffǐPNGދ-`ɒ""${Zu[ IdψڭKE":t\Rmo|Z^ދms@`5:4 ;s&RDzۊ.Q*TMo{g.%ʅ;rihlsa=$ kT]"*XF!ɕ.n-Aw@RdTp`C̭ۚHS"[}$)_96&&ViYJi-\>55A]3-"joamZ9Mim +2Fp}=%}դ630z{]GLZu%j)N +]qA}nk2au +a_(MZtnTal M˞ހs|I-~.eI] U^exPz٨-ZD뚪AѸT1 +{!s<5MBS)QiR 쑅ل9N{vWޟѩB:un9p WUdlPs&6wu$d{l@xW9>@{wҵUލ +79zޞ öIROtPժq]|W=K;v檌Q̑ZLUS54یq0߆/NCi= +^o{>#Q^Sf +Z6H+w {MO,GaO2wVپQQ(ZLaGcnݦ+V-[Q҈U7]: +PSs$^]רԪXbTmMC rA94WPխ^FDj<:Gs0׷NGSӨ2׾-)Vdr7DR{sOr'm}XU٨2 Wb9&bд(U w6T=.ia^~W †rώv/wڵ|?sg*ҹ`*Nq;`O+:wZԻѤ +!MD,@u^~w/j;3jcnF@2@e +tޱZ`L ,[v3/9וo+_ٳKjmŠ ;#>m+^ְԼZνR#jRP[ dVauh +*/Q)#8` FVۯP`D>HȚ5Z̆TL\`1ǔ֟Q4k5ZƙW .r;<4MRk4k5I~ a;2B1r)6ɢru{m=`78=vjaLJ^QaM7I e;ԛGjjYTeݎ|'ԮbnP@r)T`q&K_wE4ʴnTEU;S12 KK\^Tj+l(;:l1p9uZjzjM%%ڈ q#_^j6zv NW +*0ْr2G3ZUW5 +ݙX`(ժ;j]SFBnxz^mzVTj/ @1#+҆U Kcyd{^y<@Vȕ֝k!uPW<$mX5dZT3PzeW]dprHR1F>X4NMn_j}#dm7Z5Skp̵X8܌ ]x\=/֧nzghg%aL4OSjueP:lH6FFG9zm^TkiBGrnv*XSs+wQ5KT*e!)b|zuԥRūQ*q YSZ{;uVZШ@K3`=@RT]CyT {TmF@ P7o\-rQ)~PcTM +03^[|^(jF y,}qTuR(dMGl yWյJ6ڃJ{eه`|2Ԁ vjUTpQl,|x'\'[ ֫k5m-4[:"EjH^JtTI ꊗ+gJ-뀵C3[rr v1c-jקYmj݇RǍ7wb%f. +tꝧ}4oyqlDD@1u [X]P*X!/kV5EcTm v< _i +TNtP)$=K)Ӡ ԩ6BUgd !9 cqSꉳk5&ZM*l.샎xV}~K֐S4k qt_T[{jS +Goldr$[ T+QbEc0q!|] ׾5w5jTЮ +e9OW)%JԦãʸ#BqqFh35%Z}$F768Og״x.*j0vwsgAQJ =b45)-Ѣ(AhOo Vi{l{XEASSAvÍдqJ8ҌQϿ:ҽ65.+u0R襛IR*֡qFEP28;xr+nܭ1Qz`t*2+$}L/ֳMූ3';WUdž.PRwQU̻n<* QAsw ;HncWtu!쳀hl3{/ ++;[nh +.08`FCvϺ]_u ]Bo 9brq'tU=ȢMu@s2˷wr9zQ[pMw3R ;,t*]z>ZTtV#O7T[TNOKm쑂0H&;6~ iGzM#hۂJ􈹺mjKT9'> kw]XkRM* 9f@KDYZ +RrR2fb"" 20O/2<[ӬAtV eAzDDDDD`3+)R(w09 `v̸DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD5ϥiNu>zaw$|7'hUݓ Dt8;;J*S]E۽W$dt%V»Ej² C ۲3Tz4vQ$`kVAUcLT]lryI=*5j&+R0dy,j"өPz|\I~GS:aP! 8sv)ukʪ,p9,|v@U;%@ r0H'"~ +6VS-9>Df]Mb+{VSӵw0' y(ֲPF`@* +AA"휣qEtҿ/h^ a3"|?Hnq]x4jg"lS]"u} +QWsfIn8ϸ2:5TSyD!sqx+Tu$fQ:0ú#(R4T-:WƅUA *0 +x ZJh:5*T7Arw3`bV""""""""""""""""""""""""""""""""""""" 5mFqQ%S},)81'!ug]mꪍzTTlI][4p T=nL=j]EMnNҚjU~${eM9FUnRjn2`}eu?V4I1!X)mBH< fjԭ;dw)֥VWuMάm:nZnuU j ,TOc5TWOV%Ц}fyu Y.VڵvMjAP .Gb>P2{Zl%CnnU\{!}N]i>{רqFWJ]v)c #Xt5ʴC8:u!LB( c-_i)YhUgIBZǓ3ZƧNI` +|jA$SU#^s5[ҵ75]>Rj>P]F:kN(5*MJ<N@=#WoqFZdo*#')j4 ^P;N +$A,jz2Pl2Wm55a|?QoW)RAUbI:Wʾ=<)޼""""""""""""""""""""""""""""""""""""""9ݥKU\mc@3'ZUpSD8dw X5keJdoLzesޘzb͵^!MڗHf*Ϙش- !jG8`$sײvCHZSR''=IڞKJPTqyGp,@#UGPm*9as$`>wRҮkJTS}əEu~TʓEHPԯ(\WRK0 F˾{tj*+3@L]\5&' +V II>%=B&*5*JrU9 $:UŊM56$sF2r30qW2=;T&~U (ē4\S1[?rgo|9CYnիHbVmT>y])WdjT)C!00źwwI՞O/SiQ\[0#9;x +S֨ܡ'GXy%[VVAL@ķU};z=2LޥsMfbi'P_[n5d:۾.9P 2ڵϴ1? VahS]̀Ƿl^G)etQVbq/4+-5*djp\ewbA$3%YviZFf/O-k.^۪ +Aӓsשwcխȵ*%3Wlb h֯VTឝ#sFpp%:K\`݁ 04jvֺmn:#pQr7Ki-'Q|wu蚘cryiַ Fw 5G*4ATafnIv.[ǖ{jLudTgl0r|{ֱm-[ ǯKQiܘ. q2MeFej eM2U<2Wǖ{L%*u ph̴*vMKZ[{T)T(]~=x"b5/( cFEPz2x3U(YKXE[;MERNN1<+j+vźۊ(s8S%7{0g%Vպ܂R7_ c}&e='^., `O sj1MBG^ +z|=mR֎y| +n7JkR.XSNj%%V[@@ +iS;~L'1Rh0 qfFj6VS{9;sFQ}qQwzvA w=FpK(5\|seu]gѸ_p`H#ҾVdbr=樚lLFݭj u4Oywe^®`EJUSzwc$[{wUj\J#- +DppH6390j,S;) U$״Ե +tB+QWMz{O  @p>Y~a^=>=*`"5F\2kI$[k;gjUhemdͰJDDDDDDDDDDDDDDDDDDDDDD!^hZ︷QˠcNd[ZVT*(*KԶ&:sz{#NRAM `;ZZT)cz{.m qI*p!>iu=>ޕAhs6|}~F-T;gh$+T*nSP3<Apr e:+-Tbz1:]5t5JlWiusYDˆJ ͝4dWI:v1OtekJ +V֝BKP#vT)TWjdOsO<{Q=UԔ 33ζep(#;=<翾ziUDv;rdv2]*ӥAjj(*xzZiG4;Bp; tju2FA2iz4v,~T'8,VނSwUlr|䛛ue]X{`}%pSmTUc 9~ӴꂵN`[cjn^]IOpI$n~@'-{Ejd 8{p_.I6u76ݏ]:>tF#ȃb) -@ +7<;;Ʃol-(E 0˶*]'=2%CR G'jKIrKL +3c8$ȈQI ̾"xռEY($yȐ֕JrԔp[`A}pQee v /f +2{ұ<>Chu1Mvc Oz=-تvbqX̥:UC)KPOާ p,03ʎ~i;KΞTzlL 62}b"""""""""""""(FF&ZQ5ZtQQvY(G6H6ċޮk^R&b jmt[@[&5 TDLFRSEXR683SP2zMFcP$VUK3?UѩI:hW_RU3, {&HBӻ5Et-Iz9ɱꝕPQK,ZJ#0hl526ᘨ\wA wK?ƨ|N=<ÚFegBt*V<&^+;v;AvmH|\RWҕ7e3ۑf89iЭQ66P{%-k"GO`]Fy>y>\LSkI8$dP8?vSAwOi|.O'uJ{W,'[$ܵ>JT>; 6;Z"ڒRG k Rw޸7ytt;3PG!ʐ˹dekaH0-.q'̅SկQqjBJf!%x} ugMyAtelg#&CեpkjhB07w8ruYQJJNP$`I3NԵ+OEZOmMBkE $'ӌvcٍڍ [V?[۸ӌ;%4+S յ R1QTQ̕Y+BlbBGe>G?}*5 TV*T#FG kڡk=YyKL_3/B<sV@}6jp ܞa*:w_ +й]%2'DMBE +Sq`(o&Թ2興1ޏO]kZ@b2A3EwMԽ0gSSsKzt*>TH$n)x~nPk2g\mǡBsl3RbIE$oINB(?D-]fKd g+QTf + + w=3RZҺP2`z/2TpnYsv۷j+3kjվ]:O)ͬ] O w8@{ҬWUtji+ ebi1&8>OZ^*=Fjȋ_: +S7Nzi+c,hf_?ѷ5VEz +@FW,w8_w*7h(֑)TmuNA!9,0On}jZCVP*AЪ<3 :"S0efv]jGkUbUZ7Vai.*} |gQkv8i:gp#3nu{%^z.pEJdwhv tZ;}}ڛ20je23ĮPSPV}$]_Dkйj=`P\Ѵa=eޓt- 8ϜOACVj鏃T=v\^8 ''u.>3VJuijloq+j[&(\SVې 9t4-Gt)) +1㌞~rgNޓSQ50}(yRN6u:uhC>H/J_{O+5U +r}<, _,:Bd\PG~IiSP`D,Sn2sY-=W8TRpO +2xhVzj*d꟭r3̓8򈚮 6ry(PS lM% R pg4J.I/P-;OZVD5&RUl.g<.|ϺE[JY2VמV=*&PVǒ E9CkT^Wzo0*608+؞mq`*ըYwfVcotsqttk5*.ۓv{]=2ޭ+Ueq=ixor^]pwu^8Ǯr-g.:6tgqq_ p}I0ڭB,%Z˚8L&m(T%KҴAYa +ˉE6K#{84ʂ}qlsZ-ZicMoY MZ:XA 88~Y+)XLj~cG۫Vi*R$f䪱jz*Ÿ|N50}qw3aTjקnח͎P\gZVʐG /L+)+)ĬvU +0$DDJZԍý5ڔ +GOfyװZ:{^T:Ztʩ^dVzv=V:c$|R۶gk^?yDO͒X0y p;Qjd 29IX0~oz'-no4IAE$ۇ+s|nʕl$b{d'LԅkVPVfV@9@Iǵ<4=,VR kR9PxTtj]_].I;UmdVTz)jKE18>޸ФF DDDDDDw^6lSkf˷C.FgLSTdzr{|MHj ReBT MGwqe64D \{,~RgkZo+$4ЊOFppěi-j]uֽed $62qAQJ~C0%jVH2#pX'^Ĥ¨}se<|cI("E +Tt5;JSգ+RyP~I gh H"0<3HR.UACөSzMj֩ AnG״x{N[2VTE5Q癔YĬO#kH^ͻ7mv>S""""""""""""""V"""""""""""""""""""%3)̬ebS2)XN95 kRj]Kz,Snbߙ[m*uh_WsB&M]:L}a&N]ziF曵E,0%wYիZmG1[[Y޲Js Rؠ ndÙ[#* GcGonn=[p郆 >G֭/Tj` 8$l"[(ժ  mRsH̛^{I5o`QS9O''mJޏ]ꨦ{6x?'u(u<C+m^Q@l\yjWZ^Yj7v + n)p QÖY&OJ(֩fijhMZoQ]Tۉ-t^R݇$8N=Oi5 +0EȠ@5*ճ M]RօQE"*6|Q'XՒz&>NO5jžA*j }qݓ1:u/NlmNPd ۘrx>Xm^榟ѻRv-TJlw|fe[ zig?"EK/IpjpT1r7SVbOTpyKڽ n( USlwϻ"]cXձf%Z^NHs)3ZM[Pq]T%ie +*c9iײvԪ()ZLp2mu;kjj*cm<8mi|j O c$ xȐt?MJUS9vG*8=׫wNaɮ%2B@$mwtTGbpy1 8_lrs{y2{[OziGUR0RG}k+P[NVeT>8㙙Z +Aآ30OӨTvAԘ!49x=N[UIڨ 32QyZB;1>s۹,|Mk{sb*&Udcs5շjVtkA-Y@쾤2}NůM)T +TOݑn5 P킋^2 V0}%5<7N=sJޕ:V2TIǖdLuN;bUkL +W%.r6ɹi5Vn>{jm[FTRǥ{{;zߚL%0W'a c33=[u4UG\fJ'1VtE;[F^Om=V% []X3(7w'm}:Qz7Ey;~U\. ڍo!-U@C+m8bB鲻B!j#|cT~_LƕyDkڪFa}Ϥ"RU +0o #s34*:`F9z䔲zw[AYQd۪Ǚ{_j*(KNj6}e]M`ҝ fBjف.e+nţRgUn*+LRÂF54S[Jjz7Ϸ{{_Vc~-SRުaHLUX[I3xyǦ|vnT*w8b<¹R}y^Vk{2C(ɅVa̧/i\Ӽ՜_3!N6Iw/p=*XQ{k@Ic3*RCA! ^Gݴ{ +Q}rRY +t += _6)=uJ}-YXgJ-6@,A!A8 hJuQL]=ĉ[j>"Z׶+7nILak^]TUZPIwH+ԪUE"1JsBAlTNڝ(z AjFisBup#d#;LF٬Q5Q:5צ[yf]3 z-Z6MDqRpef8ۜ3%Z;d5*EQB{M/Vv.fԮ*ÐRuBpTLk?5kUJ +9jb0}{:*!zK޲7G!hTyr;uymRMD! +;s2MYڥ7f+dG>`N'J[R)Z5LA#ѻө9T7n>2gꤊnR.3$*&Lg +tE[:Kl@QAr>N"J(RӡxSՋ{: Jo*zSܧ +>l$y=4Owe4S +22BH`@>u qym۽=@MA|ƵE(j0UzUT'}kjFkkt +E5A9g XE, ޛԯuFZ}F NMevB޵֡]Uw+XJ +2Le*[DַfڕƤw ݑ+{%e +*UPge69PpL_ZiâW584;$`®lQT{^qK('=nieQj +FVzlLfݟ)x"׻0L]^8nUkXZaФ2y +(=箥Qҭ\mMw13[5?QqZ5TJt)L)[]ַCY2b{viP֙WS@Ͻqz> s\yݙ4 u) +#z=3P(T]*TTQv""")M zc]Sbv}q̮%(*;JU +p%vZ1 T;"]ZQ + JBX =5DlWh ENN2}`9{i" @`}}Kj[ҪtV +A ،"zJc26H3*@%ea]ߖ#nv)ar6Hbq yŞBƵjKuz<rʴu `2(P8#яK*RjSVP|^T;yzvK +dعa8#(g4(}01K`GSd /ImjDWS0 >.T,KZ4mqa@>MW{z;Fy(( _b=O*8O:)j"8`9\Ȭ6#JtE +`B3:o@˺kQFDJz+m9ʚj^Qbؐ !Ms~YQMGe; AI6*֘ +;0%;B#mUE6Qq# UJ# C{IސsP"#OyOkKҤ¦w5A/yǤ%C#iZʏBJddn8v'ēF֕"5@XBEzU ԬT`Bd"{$ܙmd-֫U'`*U3ʽZhvܡyE#11-B=@NfDU,rH㼩q={e@U܎Ǝ1<}Rʲ#2դP>@yҶCwJ㓵BHl\ݽR Ӧ$*g$9@$w~XF@8,""  +endstream endobj 116 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 39/Tabs/S/Type/Page>> endobj 117 0 obj <>stream +HW]ܸ+zLv(Jhgv r@!8,lپ4[MIc;c` E6_vx˛w?^~vT]w1?Nmlv'j4|_cJتa?el9`7w@6o )/9*n725cKWrwCA ի֠:|'*WVzWOu?ܐQ3%C,aTlf눢SK\&޵%ZEm׸d{KRW:9<7, 8Tqn{~> 'aAeKΝ*.uF UBN^sӐ'WQ+bgF<e6}3 C,[~evx|};MÝiMmbaZYL~!>Jش QʱR]ۯvk#Bȴ ۃ3G"QA8>c 'Fj ๹ˁB1,mMVu ƟNQ @p̆$9ŏn+65X\Ҷ 3 gm#wtjLjJd1+#f"-4fӧ5uF\4YkE+<^|2oL|dlVs p\DoΓ"ۖz5 eIt f5pf.\bYڷܛi~,!z-*LV`Yő5mwjah%_)zBnz$.]A9N E\-@Էb2zes@)hueϒu 4jo`M y6fPA6<finI; IޕB-~{2)좹 jHDQf*_F3[ Ƃ(sx zA_fwıH:FAݢ=ԭ- qh)i߁b$آTdclRР|JM:`M>Y*PMє$C-{DFSt05ϚiDQj'sD,ͅO }|kJm߶?g ѴfKɩlaiYWBqqWkwGهZCƀԙ6DDdkl7 +J|(}DҸ 9cS*75ݵ ^b9O8eX6k_5 =($! !1+$xe1vPgIq)L4`qa9E< I'G񺸐?Ȇ6t)},=髶:Կ/*sB݁$3[TbEH(j-zF =S(>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  +8/!1A"Qa2q#B5RTbt34CDSUrs$Edu +%&'()*6789:FGHIJVWXYZcefghijvwxyz𤥦?&-xT^څuI]w8UfTR`v=vGx pTWH0` +״㸶ZW-V+6h !R:si k6KB(:Q3Ob>F=J}fbܡ0x=A"""""""""""""""""""""""""""""""""""""""""""""""""" 5qŬw(GXeb|NQ5}lՠ%UΆ$vX8\j00e:(^o͎&iưr0[Y] sאrYӕtgYscar(r(+rF}SdĸPmcZ#yv=|哛Z?8t]3^忆]!Uޥ ^(E};M1ߊkvvʷPz`G^L<oWӐ YҮd /+121qeLWaUsY˃R-J[^O1yW:$^mPКt>]Td55r6U {dceVF~Ȟ.hFvޔl~3Z ;]cjnhv 8GR9|ژ#95`ycW@Igq8G[nl6ŕ١}^|<@MvnӺ#mc*)^vZndqN[<;uT D?0NR7|f5?6rxrX~jX1T:?#֮iEbPF0 V>^&%IYP+O[F W}|piŧPyIΠhʈ)#s/[| A 3b""""RV%%b%5+)18NnKaZʿ9`N2rE'dp:8 e:]ul,{nT6gċ^&Xe= ˱߮DDFBwLīs0 d[CKֻ1-rZX)+r:K5<)J"*u8? \n>.Qm NP `5-qpZջgue(Ԃz ]d[g̡z5(Fgt$z@}Ȍ%,P3rUT·ټE ֚u_gK@1ѕJѧlvi +|t{cd*[/#1WCL;BY"ȵ`Sk}s-5NQKdG ^}z~XW#')Tj2ZI(Ի^.\OEC0~Gs1Lw,;9v6Mͮ%XGu*>>h{""""""""""""""""""""""""""""""""""""""""""" 0x >-ꏠ܄ dk+&sԆ p/×^'E6!umϘ\(tOYoL\Ojy|ۯoi}32 ͑UUXGe +y`F18&6+,;g.=c[XO "`S}}}LQNCg+%2 6uٙ88IW#vK3f=I\C K*)K;]Oq'ઙힶr]5ؕ5ʥf}R39[q̮qCۡ,-[U_s.NH$PLX"8.WGשijlz+ cjm:vGIMˎZȜ ۜ I̊AskN^Vn@+P NfPnW[ +ߪT:o}Iw+͕T #z H"ݻ2(§f +X ]^`}L`o|ud^?ɝWO.vOa'Sj3KŲآ|u']:slJyTW[w0zaZ{%\(B@lFq2x^e-O-SIMt٘# ((\o^S{$k]V78AXj9!.Lo9I߲[Ow%8N9`c({w꯰8cxk9K]}|U{6;\NÀq6!oò=9q`f1|D3Y8UF40:ul]iQ~c +nf@@HlaV7q ҶJZxwϹ)klZ#tğ] rV5Vez=w8Y؍jG-YuH5mU (]DDDDDDDDDDDDDDDDDDDDDDDDDDDDD5B"5R3>Z< +}}4WCQ3xX*WuеmJȞI1ּ_>%h]K^6h]CS؍L.qx2NPرҍ(oǯ. XP{OZbܣ[c>S,ba&~]]c~>ũ-k(w +>ᾓTU@ε,gzbTU}Q̀:o["BA[YThNI=Iu Xj+)8Ε]y*uZą: ugQ%b""@ht/;k#$/ѹ8+P'E[1 +.(~Y9zPSs= +Ғ6t!{shszm~DDDDDDDDKy.=okVc4=9e?z J},< bzMN6=Rq[qcqj:fdžo4 5$X/DDDDDDDDDDD@+|;+aۉG.#2mY4ҩk,.|N\y6U`}=Lx+p1j}w}37Z-iFv: + '̋f*cU)b;Duyk9cwA9仏f 퍗]6h%םFuA)3Krx:"0n/;]Ǥn[[Ik? Ȭ.6`Ǻ665RO&wܬn>GS\-)^g``l >: Xn7{3;ъklg_c( 7Wpb96'Fy{J@LEǪ]jO(܈A( G,tJA_ho'Fb"""""""""""xO_6eX-7̺3q\ݒݏi=`X,4l|ᮝe葹^ ؠam*L;.[eK #茬,+^֝lAN',܌+n-6 =Lf36j?΂zp +A32mV$FVՊ^F%t n8| . jp N; +aYԪuPC߮.ǫ.kz YCYǨ$L3UM=+O&N '*LqW6V{ Z`dnDKeZ]nQfڸE ++l&݀ukfYRnHjp矣 +yu]uI%A o@5kggՕ~ +nLed9b5 6Vv0xnCew5q󖪀-} ~/xymUԮq_=1FHp#fx[W\ke,1_aVsx7q¬QT #D\ϕp%rs, +>bR\UĒFw<'4aHt_.yO7PwbS瓗E95b`䵼n!A$Y]lv龞PM떰es v~_iJٌҷ/hH#9ttU@~j :nlv@6YY8c7lz~?5&0& Dku}i=ʹrRI5leVA +{JێjkyUbWH;skzν{keREj@f>[B]V,H]'f2`^8KRA@a=}$U 1ޟ@0|Am8ظV^+V){r|eQ2qRz*ElamGmrb_ӊ<4o1AdQMu+2ܻA ++-H1!Abwh}[c%4cTܨK./AYkWx]eYp,:v233h;s^>5Ԓ\?-L96VNEL)C|mmz=zkHf1*p#|Պw?k~P_֑rKO̊rϥuKu@%Nąģ2֌z;]g1ߠP ^ę&;Q)Xo[(+]t;=O)G\lK=zs93kkZ1^c2S^]6chrq*)2F?x|<|vyԔc`=`#]8Y¦c[ѯ6~^= +[Ԗ|da 8R' \k﷡l:ZչOC +28x^=r^۬f0p@ l{Xu_Jo×|5빵s[k[{ozV]R 7יu7y e;t:kv=%rӅnnQOѡ-pEʮ~;T.oa'vw38 ݋%kI:w-~!rX][<#_#k]5GÔܗS;+=yBu=E|)ʬgw5`Br:鳳< mi']G]w׾cDW΍[#h]Оl_,QTZ3$ԝlRRbdyXEZ̔Ѝn#S`(Tr_z;ZS$?5v.T 1|?F.A c3?;s0 'FA1_2!<.kNQKoH|[0kKZRJ9'SoLFBhBed*zinS-|bX~[oXyA?h5;=Sk5d<] 5} o|"zl$6 +ܻbуw}:\.p`RրӴVf YyxslT 㤽74 J*nQkbOmB|،8c/qL:+ՌZ?&cɫyuAmQL>e{4دCk.VSR^Q¸9mB:-oQ'@ MJDDDDHAh&D̪nɸa-iJ}=㾓}]kAa^c:Ȉk*TRtc[4tZ)mS\_mk$[=t5| iqbl;,~$e8F 򬣣Ώޑ)Tb׻#)`Y 9*HpmYYYiZZ`*T]cN4=$DDLN)ëcٰtaڰ> ),j2 __vqv&dDDDDDL>/^M&(_5eBUAaߴFEQ6:l2V"""""""""&>xis/16tzo#=)kHXsaRw[b"""""""""""<'C=DDDb""""""""PDDDDDDDDDDDDDDDDDDDD/vO* _ 7C538seM +|?<6@ +!{U;+ř^SB .Kߛ@uuXyV,6ATzpew/U;rE>_|FKbM9Ec(-ϯyx]Y.)7%S˦<_~僅CYe;k(ޔ::""U<{<ɽ7/>Z-20iϯ̥ï3)#є4gwsiSeH̠ndn7:91TMX;m>t5n )N!Ğ˟ \ԥTGj݈6ij^ ^rvͥK1:ހ3q\kq.cP*ٕ `LNQ32 ˏuYT`4Na/bgS6YXtU#1NuyO{NO,/.Qk]gEBtb zJ{|]t/}neFzo `JI`c$)2l+(e`v#`=f]&gðUmb ر<:'yNEۮd=-Wc@$CJjVw l`;q1#pu#;;}2й9 @-Jk+\+vC7F ·ng&g_8zdɣq lo|ܥА=G0ͧȿ4>UK7j i YNY-ĴvP\k[6s.2fN_";yoЁj(bB AG~W:Xi|Q}uwO+jȺ9*"3kDٰJJUrdSOj]hOV ?~cp.gȱ:)g٥HȺPq2ڴ<dz7#U; 55.Utbr@ ӎ"X'"빲Ώ־l}#Y5d|1MwXJz"Uuu/kWWjʯPr:Dgf_ +djRFO* ]:tb!ʆ +J2C [.-wiD,7lz3×?v_.qZzb}O/弿S_#]8~S"6&Eّec>iBᄇ'k6 +hR|-`QaTzUh@a.C5דy~)a=̓ƹٖ~Q`(J]}\^'NFs䕊vozB5Ԇ> |,Ͱ֍Plu7]}|Ql u`V. Uw$5jC#FR֥PtzR"?5Q˽hzw(Ykv7@JY7|yTuAe\̫u rǗC N`C) z#q%f5Ƹ@;Z}Plqq6NQX5쿎IbaT/nUHp.nɾ 7]B`*hnW* p| --c\l^ky*1].3sDU} qxqh"|I,7 +Z<ֱk-n3>I81)xeWX[l;vvގ=ޓ."""""""""%:sjo^tnz#u{Į.-xU-5/*(ҍ뾒DijW~BdY5僮U'":ovf\DDDDDDDDDDDDDDDDDDDD@baqWUF/QFI"Q<_p9ԫhQ٭eyT.}&c#8mv=+C1k_grjj*VFvt,[J5u6;+ +%yji9 9z|ƻ%y[GޏKrrPX (6}L-S]xكX@e$1];=c.'o\||@<uDl7%%7XM-?o'?&?.ͮ߬K32U6-ƻ5Wo)^tVa,C.ܧNH:}eDDDDDDDDDDDDDDD@0s \ku COr+d|rK[k ;F8Ujw;ҭuߠ;I?^91a-]ŽOx(&°PʺZ"`q +<1:rvȱG*Y +mfNOW2z-wc_3d_ddw'G;c1]ͰCG@OIpr12%`oU_@I'`9욑buЙaۃlers}{Y95TZQ 2-l`)˵j d+r H8 yBı6٠cQ E1ՕXp[}qA}ܖ;]ձ+?p#&J]Qlԙr&e9-XVjC)DQFSXXkrUv3K-meT#<;ʬk|=i($7I)eǫ-qSvJSQ ;r-nYal8%4-i0={IZ3񲛖ru2Ŗ5p$^svb;.9)cߦVl?..T'+ pU;~3bkA -*t:mN'22x&"T${H G9^neGYv>fZۼŵC#;˧19,]̌v;D֟*TԶ&.-u_* r֦NUY|pQ6;TVc`h{;HdC3C?\L!˷ȢGS`U?L1srg'V#svaGwb~m.Ĵ1j Qu>И#n#2Ybr Ò&FgMeezH8 R^ثXYkTn7XG:ߦ899 +yv[i#暹tyI=G[ۙF&Y{jԕ]]z̟ ۑEkȨ6ZeRX:OJ(l qP= Y `*6oQ3ò0չ :=Fe%_T6@y:}{q+wC'6(or{ku[6Эyp3ijES#5ځjjtv6KM5㠮tUT}tkŪvK3>Gs6T}O"F^JcjyמMS~-ysH܂n/<\7R$9J`@:PNzr%ca9^<֩uBK'C׬YOƟ^25<t{9<p9PDnFqV\dm_QЭI06,|s]HZڨSvvRe|zNe~u.%b""""aـ-2iK'T}=ShȻ%Op *PMqޅ̠#Ly^^? +(gb˔Rg̯/aSС A'7 "O _-ـcJh?$:0xMXG&Fr1UK9H:z3-1(Cuj[%^pǗ+s[b{V`y` V]oDL,^q[Mu08fV&뎥5 ++W]֎wܬbGݙeN\ޔGň'gX7-Lq\ {67~+8T, S{Bv5׿,rdGLsnNQ@=UKlML|jP쵶r(KN/7aeaVB\-HM{'{;X_z_R%<շ?=y46ǧN&Z"e求ʠ{>N{7,ۗ]6K6nAׯ(})mץ"T#\כ2%7miFw!UTO@&R;WP}'e7+"&AUZI g\}N7,e& /uJX?U>^Wqnc m( +]kfP$ XME6S[; }͐XD+g0!'y{huV(>z"59vTk׮Jn7,u=U`;h/FV]xKb"K1bq*/ anUT#: :$w-Z.> }a1u⋀Pr+\g~˄־=$wn79q18\\J^|FѤ)>R=;Ythga[Zbv>Ǘ]LY8oa O}G| %ZM괷0bmH=@#&rhqyFBetNH>8~Nfj<ۖ!tsZ E-rkOq f +n2[pkgo_'0uٖYp/F=t̹jȌ)'@LVzܔ5xXY\ܬtezw6[mZT' fƲLj3*pīIB6Tr]oK|̐Ts,v+2tGSJc Ի#OkoZx_/ύ~RYZZ[M]i/`}z'8^8Kjauk[! v Q +Q!orP18>?WZ9{I2 &\ |-V|CvФ>YN>]GG8 b(˰AMJe%+U7F u\,vJ喴]G_i\6[;:=L<Q,ϓn>XJ/^N,ZvcR{lO3VÊnB0 043@tFr_aQv5f۔t)wy.GC1; +2@|bԮKZ(b̈lб={Oi(j֪}̨z@?s"{.( \ +uKkf~2)e~SUV6W\o15 +#-x:f +]tFu9\kUg1Ʊk,=?.0r..?@oJbr :R_prj>î巧uV?b}vudx竍\uHBq8V)b]3u۾&gʩfUSmHWLg{ k|1u9 \ +e +Ab( EЬ/}V*&C"XNd/ X G2ZBvOPI,|=±Yo6iaљk [mV[JCv3eIPYI skb򔻂fXw`AN18xW/3h-b}:^YUU6bY-&tӘZlV|nmo|D|/0Ya0CZ]k*8'}ɜQN;f=dG*I 7Rz뿿N_JVնA xC{)Ṧ~g0`[26{&lx-?4;2'%iF-jE[Jc\6[~ V0fā6۟k^fJ}) tb4Qoo|o9?딟g_\]({mDyc {O,qx>G1T,e}>ȺAI%~%;h1Pܺ޺멃~&E +kĺTcR{t971(zl/u'RϮ"cd 8ō///@$:_~F>.:^ۯdP^L9-UvB6nmG-O'7)ߧy7e_#x`/Lj,T++hD|5kSޘeegpoul\Zn)9-[_ +cr1ϖYR+ӛ= >՗^RVX5tHґF8qm{wcs/a9;"`=3gȱW1 l5_5χK%l3c\Sӓ~.YМC[h`O {t,pyM"" 1uNNBse#L B-L +AO]!F/77*sz$zʞFeI6ؾ+r`"|/'Nu SQ+$1e`b}{&#f^u@moX )ls[0%` h~tݔnfGcLKd?]XQ( Z YV!UQfC.YLBnEWi} {ƺ' *5Άgp.PvI$aӛ[1AUcaYR^j)i9ۛ}3ֶV 11>>-b$l/3{ +]:vrXP XjCs!:VdQn5@eTZ$`hGc -!X;8*YJoG-k]ḙcrWDZc +jC}fd2]C= 0pE +CXUڠg,P723uI\e ua2A,8;LR|ZkgbHִA:8F.7JӔJ3r)=ʮ%U]Jեhmyv:ů +ʈ4dzA-dl˪,y=:_tT"۔+w| zkOp1)71B{,ă5׬xN+Pq{Bl|]spBS河j{QNy> 8bc(W qkXC>:;C%F7gzT?ǻ/ Uj[1fX.ze&EuV@|Y԰`AwׯhqiU:kNݺJW1jȷ)U+fצOIqlde>cs,']=mƥ5^&zwYט{bO@zhj+˩Fgݹw^bvnؕ+-Dks9A,Hx6Q^1u5k):wrYw//9v>ur]f{ԼנKN@e/-BTҁRk*dc],mX{zzKÃc.[fsW[ހ߬?KQ+nߘ$1=OUy9T_p,N3##ګT22e#`Ђ&~K+rճc +W(pP8P_W?1~nBucOǶX>@4: kS_cV;6L[彙4Yz +JڨҶIc13w[~;ܽG ƾԋ.7/I[1x:4mBfݜ]zt°,z>C#QBoOzR8p@tڢĀw2ǫ3ȶ-ǖ9]VԍuDn7؍ؔw '@IJUr\b( F2>KKR܈9#fz:r +(:az{n6%2k5`He:alJĦq+)NU4,U Pt=ɯ 0U?\ &cf|e\,^[F}ndnV"""""""""""""""""""""""""""""!|cǰ):=gap<װ;6?; FӧI&ĺCWMͺ4/e*Wcן.PdȾa)6 U}cU2ض9G6]`ҾYuKGaI֭iX(vKltF^;eՃg].r0Pw{nVVE-0o-s#/- S}2Cη>qo!+ +Xy&BN +?1g|z2N-\K@d `$_OI-pnK_k*fV k@ [Kׯ8MK36Qmaۢ7UOCz 2_)ⴾe^8 +U +*>Ҩ$)p*W@uA[\)߿G:MO6#c[D|A5c/|L6ݾ:g@yl57ŲűŌU 6l†uyL$)я6NWb ;g^gx?dqȫHv נ{<<׋l~n5yFXX/o؀.7/SQzH/w&nz88bN~[CzmۘnNqN5i^a:Dvoj 9kA)ŴX1گ4-vm}}.%;r\ݏf`KtSctvI$])|r?ZQ4=^f,fWEZ KttF_IKqmƶWve(/&€p79#5=YZ0eN ͼEE.`֭|@$t%HNTAUpy۩k[H `/0=7t)GL|3yа|\9vu>;8;W~~;3^@c_tLK0Pcݚ X V_4^NMk@v2n X2Rע֫]Xt$Է|l1j9Vc0~vb 'o .k +P0-`]V]k)B1oCk9B_y8=b 'q*9H֎ځ.Ƚ.^Uc4 @yi<3u*uz7[)*;=%Br,{͕٬H4xzhmO9a +aP==H_N|]o/' rW @N|3z6s549zh_d:Ccnfvr9A4r],]T w(7vn zsv4?ыׇY)V[+s%^E;hv1?^=V1YGA5%jF뼺 + +k +7GOvS`oU=Nŷzs_So}+UͮhJ&-X+9 +[ z}N:w&9G(#_`նfFfYE̖)Vf\ |ʚR+H t3ضgAueV] r*`@=C)\ǟ78-ԓ- ^6x6(IS˭vwIvU I]3&?(yA2Ru]c9Ns'@ē5nCbv7`hRR""""""""""""""""""""""""""""")XFMXZWAupj-8tmD%O02b,pk'kRY0nRF:17|nwU'z3*""""""c՝Eֵ5ڌꡊ'@;u""""""""""" ˨qcjֻrk'Д#dHqĞ;K^ִR'֩(1b9N1xjqYbk%J-Ykg6+- DϚܜÛ[(fÔ:,W}tDH=uze 4ztkW(>=byK`FЃ=DD׼txEO5u&u$qDDDD׸}IO3(:i=إ WWPw=DDDDDDDDD@PaC*u,~൚9}e ^b9vz }/VuXX ϡ޶ Ds ?1붜z/k7SQݾ=fhVǭLʞV#Hzq٨-`טNnEG>MUf8T@_3oGS6 8k< +Gn'蒑U\*gwpKb9BsTcצ%B: UlzPJx>ey8Qg*u/9ORz|$YAbb2) l|d6Wąʔ2i4<ܣ}IMZ7.Nmh޻.DK99Uy\*/ś6ANsoʳ" YE,r' >aNN|Qe9Я2lw܄8(>LkP0&:#tJ8u,dni:2&5Iu7)bP]]tyN?Z~(WNX.-Vf+ђԫ+ʠN@Lo^I{I +'$ub=Mvˮ+F^Q~-dd׊evg؅@QY#}9rpbkKtW)f$zZ?|'ð +2mW@/R9O1}e ٻd Ƚ-czuЪy`zo g-֮ak_9}zLnUUI_rG~TR3ݓÃūmb Jl0gIg[]v&i7qQu>805ac +٬b>`{YI@ @O(?!2׈]TRKcZ} +=>%%МDmG.y( 寕o//]w<[[R1W h~NTgz+-Ȧ|j#7 cŽ%ɾQ˽ozkZ)Ru&e/;kl+UʲOrVM +4)ר \[?g"NY*%^|Zh 5f:$u-p5[rxe-US9ae\/qZmZ+)e1;]G9-B,t(C0pYș1 ‚Hun;f7ȳj[ >׵]VWj":Tu}=dW .n`eb|,p[=!^N\3z $6FFn +.r+W;b 2_vd 8XT8 ;ߴz]RfdL/7\[GI!| Ut#^g t: IR/g]CW5/8~,H* 3*/MHPt;L}?7#.^~F9ͭoBKKaUso/)`|wboCvU*$ ['P-ƵQkM`H؛&^yܥe%YII{ BgYʪYwdz~܄1N닑h4H$M/QOrs&쏚A^Љb""""""" (N-/pdǵTbXGO8a%*b/*d3|:_nnmQ2._(@ֶ=u1eRc} Yy[.ֺXMaql\CwC@w'_ɯ)y`F?;PG2DDDDDDDDDO.,NMO"Z`\le 30Acm~vOȍJDDDDKwܸ9Ҫ'3T' yt׋-. ?]Xԝ"""k$&?u|caMЂGv`.r]>,$w%""""%Oa4[ll{bW ~ۀ(F{UYbNC_Z߼v;ԕ+aҵ:+iJ,@îjHZ>G.]k@#?#oꌏIؔc֎Se}EYRl]ս;VPA=tΦ]M̀@7bGdDF}Ͷk' `*WDauuؙq,fSpucʣ$˲(f |o܅V%% æs>% &.Ao0ȴW*= %N5h XSH]luψOqR:aѷA#DzLc6 e-̧mN~"""#Jc['/j+n''ssdݜ1Wwg$۾=2[[3qr\d/!WE*F޾{̾7madYW/:R9י=[Dll{Vo˫eT+UؙTe&u6Y[.hB +S~ϛj؊2:Bķ1zj{%,bZ +.d[jsz=͞#|V˯A¢Qd-vݙy\GgKy\g#S^A7.g6=W5șѭ"1'gٙH'z#Ĉ^;, +1-^NF"Iwϴ>=~iƸdԖ譯nkf]8ב2(RH`streWx衆3e/y< :'xoօZ۪" [Z&ĮɨuKEmZpO.씎o>1mw|Rʋ^yGrK,j{har 9\|ԍ |R/oHA+PĂmztc{0sx9jPȷJyk ':&pK#}7wOy{'ۍjK,]VyW3>yhl+S[Bs#O);#Q]u^U:SehBBONB8ȧ6u'5aQgTޙ9y`XjU ̿$=Z ܧ| )v:IJq1ay< yndG[Qp.)K_aK f[M(|Oizwzɻ3Ubd[T)akNq,p'ijQ|*ç/Sa4Yǫn_P r6$Qkt'>1Nme9 lާGóP6#}=̃57v}*_GR?]k Em{(=0|YfP!,k!^h?71(!h oGѕ[{κ($H'yX8LYn]rźNui<|ChtU.ٔF#sF}>{gZp4ētMgf^("쪫~F̫܏p-+gr۪GPOnVhwwp,\efUB ;@[箔T)S!h@>g2&J-UmŞb{Z LYSU%/SerlApż[Ljl,y|Ѯd ')(D,X,܂cʨحОRH;:}YK5;XTAVUf}5סܒ\1x9emz03GǶ[2ꄨPTn\`^oQV,G}(QuSd`jµ+w g;S:I3Zyjt;==GgqjC[(mEa-|,^k(ZX +H#[QL'pY+`dhZ2Ekb؋~3SMLJ 1ۚrG6[UU*rRI鮽zeb%~E +ȵrZ $tw>ceZqW2̎*Wmt&UqWƴ_X|AnͷWZUD)`WbIJ:u+8vf&VE[PrܻxW1?# +[pcc98b@WձېTh;2۝-@*d[b3|\[qecmA1D;{oRhUs_o fv# e\*UEנrG|{ [TV'[dd\V-.l71zeeWxeSl AFـ$i x'hjPnf/ה n Pɜ*naMm_da!޻+A:{u_/F^S4 L$t2x%[6VYӬbc-w4(7@G~'&GWcE|z,|=ݦ'ũ/Y!QtU0~:s/ 3kOOkU~ 89-XίɏfK0ԥ%j٪7@`D9z}2WAsK sW%YW h{7`K\131ON{t}ٴr5Jv#yD`0pe6cع +=KgW'!Xnoy;00lB2lֲ +,4[tw&p(|j+ QBT t =u߬<ȺBבe`*KC;֘(c_|a332춳B =XaݺL| 6&Ipؚ)2S$e),OAX`},I$~+*2pP_%\iр룡v"[y"v! )??rZZ;kJlZŴ3mlV 4t޶w"?uٖq¾[XCuV:v&nG,0U\KER,T~bOggoS"d մYlJ6aNug.A;Yb , e-̊trͮ}:| ݕ} eU>FUwYY5J6A{3rfE9oS̲ԳV ( +؂=&GMy-lͰo֕y}Oyo ˺;B6J1Ƈny)o?#yz޷u/bكuW7Ub)W[ ݐIOx3?3o׭.Xa5v=4 ˜#YoͱW>hJBhN(LaEC, . Oݚ |W21ݑeMs=A3FN^S m! r<=>$LNfVљ2:͇3~cZjj'G vxMf(m6\8^.Im:)UJp_ l]mv*klknZ33%xuY_yWt:soF:eSe.6;ta x5V|f  73.՚s1jJB22o]L[|,8Y]2R9] +ׯW3q*5}meƆUcI39UgtE$jfPy{,e? k{:ʫ-zo_^YMÛͨ|7y +{>A{NDDmaث1蠁׷O_q*`IS2p9VR4x*{63T ZGDDDDDDDDDDDDDDDDLvkN3dym^X!<^\_Qj<}DXC߄e(\?~S$DD@0Xy_]ӯm@ U "}F [ +u^Smn6FMBY;9NrO]jz 3G(R1q.ww(EJ8$YPqr/(meDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDk8ɮ9mP]1#zC\Nrz +Upfv-R"" X4l zZ~nE7L`PZ }A&Rx 1.ZYb+Ty-jTبQի~VLOOǿĸ3o7+ڨM( (#qld\"\ճm^6w>J 4wVRDvFJ񊯱+)j7B^FXĸQ#QdGADJX̞^C0Z UÕO7.QOY/3q)Yԛ|5[x&[;)brFFW0 ~v೒RI'd&fgxj .muEff쪣d,fn^m"37NMKyugT-莪JסHnkh=J1(v0_dJ y6ek{.f$uZ+/pQMT2ӦH"BqFcyw;+m޵mzlVU_VVrA:[6`x2DDDDDDDDDDD@Vɥ'2ĕCbdmV܉t 89ٶ~> ř+.lz7|dZEP@47\x Ve|yVUw!Ns1_qp. =a]H=5uVڔV\(rl[9~~m:]^ynpv'HeQxJ3r];`XVS2,?e֍k +B+k$oHE9M{=1>#ťNʀ0?{`>E6^'*X4FmW0W ۼZ^kpQePt|~?×Բl֨Cur'zw\t.H1_IzHs0%亞&8 "ؤuXl&Jgtg+i`B^Xnbp:rx=Yw(Z@ C996rWڼ;q4-q~)gmS -@I,>{'Խn7ɸeٌPiZ[]2n`llYɉ2pq3E}ϥfXoײ@Lg4jr*qJha]aP5bDtmɶ^̰̫ +A1F1/]ljNۗ) ~[,Lg֡2`yu.̚ +b l”wٛ>cӡܭb3U^])]隵V %x:qx>"^T}X}=No s tk\>Sެ@,ԀP^s +2Fsa\`5V)Jk&ܜ ZJv`~nbWaYWp\F ϥSb֥՚tYصfk ̓9yM6*Z$k/vw\(ܼXV +ا7N Z0T b aNڑ~)ʪysQE0;q˱Ur+jU(U1d|w1V5Bڜ:Wuߣ}uX⹴ pڀÆؽ|ߡߺJZH߃RSa#37`H ~x"c54/?>%!I^\Ÿ=MneqξG u5U>nϰ@݈P7&k})\h`X7ͦPLƳNj*`/Fq<2qlhbV +:AQSax`QV%ꫬ"`׼_MU&[E*0qqRlבF[#CQ]J׶Gj*ecsRk`OqӧmjEҦdy@0 (# w| w[@ +IO|,]1no~78> ʀO^ gV<ɅZt;9_WIeRpX|_-7~:i"~'dyT롽O^$bdS͊k6Ƨ5I$ |Hֹؑ(3#/q9|]*C_reDDDDDDDDDDDDlK[*EM x=5+=%ǭ;"^T>]Y0|F"kQjD$ c +b+v9mY袞uJDhJֱP J-H L vOU-vvyT.ϼ>MQ\QynQͯw7xȩm^GU 67dgy<6ܧ^nRT)]GjJ ++^m"n_Q]ꬽ:3 G"A'*lEnSP>{j*{60+T`ޞJwȪ4@#틜ծK|޴4>e[}kԌ1E,5$lKO^Ⱥֵ;wY,UmeWXrǬWUP @G~vI:% +4b"""""""""""ggRGPMA]R?>ُN!-~* m;򿊙M\߆n9#_/ׇ_<XXvG 2C2Sꋈ'svL.S;[o֑;ۿM|u 8^9jxMΠam˩Ÿc,lRUuUv?~*6q#[/]cc+]*?er8]U +;{u_]&'?ZKC~&Z6;?'\mcZGoq#[/]fEy#bl}:c0/FWFPuc};ԧLmQy_\mcZGoq#[3׆f?~+ ?EGȯ:Pߡz>;MrAe?'{oF l}>-HUn?~+fzL|vGŜvOݣdWscjv-V9dzixNKz2>ǭ{gX.6Ǚ=* n7?=xmc??2?vXZw_ŻrYO?l +'Byfk\ʃLCzr@'IXE[ %b""""""""""""""""""""""""""Db9-qگR""""""""""""""""""""""""""$O;b~)-͇J~#3ՅگN""""""""""""""""""""""""""$O?|?6JXU':IDDDDDn@+# +YExW#%"""'nE-t OHߎ)*fSm lFJJ7cSTS-]~@rq# %_4/56SCui}&X!@'};Q,fe :ͅf.~XV3̵֬4 ܡ :"Dqn=hZZU0N uf=z28OjT[|ȪK̮ 67)+m4ܡ 봐vW<"|+׋oKDDu錍eTlt1qKɮeedqīt}f\DM_}Tq'ݺ͜/\~7Z\x]C_\Զ}QT?}RYoqL-܅,ʉI'Cs h.A rsFtDDn-@#ay73"""&yœ`߆G(Lt=uJקc=rxkhc52}mDëDP|>S"% ³Ux{l$ svh1ūEʥkx"|+׉edDLn!Ne]0跴W\0Ac )+ҿ/1'[,fUuo ~G#Vi9>m|0Bܻש=$L|mں*O$RSk|ۛlrZl Ų~Wf&KcMv3rmBosV5,oa$ H2;1MWZ筘ԎS~_O+J)Pg_d@߼V_<XXd~Y-ru 9͚f>AXZ]nLpl_cQhh>7PvW-0jǷYH-*ⶵYWj : +ۃl{.k@?DqJE =J7A}#Xlж*rtؓu#Fc%B-ʝ: ] P*ktz?يۮ7? @yyPH=ϯOtψKb̸ӯqñkaJU{=h%268`5`o'Q-B A {_vXzO75^I;#s(#nk\S&U g51a + N:|ˈնx øTdzh%T/+@޶ORfT7jܳvʑH!J:j^%b"xj)PCo` J U +_5{FlMsc/S^šPy4JرA׷7Q~#*wV#.=1#i{1dcLJM{cˠzPu -AI[0.2 +'w =^R~'--§JkBSetO?(Pbx{ճ/;%J[jCR)kdN&E^v5]g56ESf}D/l *ŝ6]$GQe<<|ƙt|{&|ڿ%jO +'fdDDDDDJj;JjWDDDDDDDDDDDDDDDDDDL>#ڟ~_fX0GAs3"""""""""""""""""""""""""""a~ẍBaqåj|l5:؀v>2_RXW[kTtK&Wc&oKbdPLTUUMo_RX_[kTTzӔ?>+I?M"όA fwwfHg/-TU~VKwe~jrRI8W~"όqf&H +$NE_\~}QU[/-ߵ_[kTTzӔ?>zRI8w~"XH8ٝ 󸏼$x7\~}QU[/-ߵ_[kTTzӕG?<Է>1!Lī`%6~F7hHӼueT5~WKwcꊏZ2RHG&/2?RH_#b#NJ}[`eG&R|ߵW[iTxdG Է>1=l!Mg1O0Te<9#"[i+GVHHG[i-[Eu-󕽪-EVߴߓV""""""""""" +)XMJDJjV"""SR ;pN'cgdp?m PT[S:l&+xŶQUUK2uH+I}yAY#į2ˁ_,.l-B}x.M;6j j8 h&=vPe9ƸVMElt?RA#]x3sQwpl4zođuxVO9bUfWKoON$jxz]W_9(rIK'*EEa7&U:$C!B^l-=6u<\`*yI77;|;k%(%tbH&7.EխMAޥ7 P6Ԃט0ֽOJK*k zO^S#V3~yJ{( +;7y\^{|GNrRH$ug^ϧҷ zżZ mȩX*UyK0^cd-p|/nڡ 2=xx+яZWMa@I_++@ rs@ * Б2Gp8ڋSog{==)(S,cME b +nJMCǯm3f31 e`x/ )f@XEs:{${ 0mU =3, +)mlXZ8=8~GPr8"/0u{I@> 5Xh\펁eY:N]_7_*Yjz3'eQr{@k K23+JL gQηna`kw~`}7פ?oJ[ əXk7_,)u$bb.nsXl^}XWtoC{\"rxNeNmk7caf7 + +;Zk'lX*6Q +]#3fU|s.: ~aؕߺk,.`Ҷ 6I;sqBq1\XE˿-md~+3Zn2?\tk6lt1\-y7Q^GeVvWQLۇ+gl1N݁3FT*mW-gPL-dRs.ϻg<~?C^?"ڀ5yHC~z8/dPq&i6CP;uIĦnV`>#!ZV9JzcQ~笵<%mfʭ>쒫e U5U7/!n>pN /W 9l]=6 3*ћDIN>2u|K-#̍do8L+34T9y(A;? s+3c󟔔^ec辛wdW;hUKLR)HPp\VBE޷t$Any`YdT`0;>)[\1_ͲGU:e>Ȟ6z^n}e/e籂 l {<"|-E#t٭ L1F +yX}f6bdNM Y̱Iq?x?!⾙e ĒrVTz0 Soaٟ]Cs[ +Wzn>Id뷈VIL9Ȫzo 8TD*S$P 7{b猔{juXnj\#N e#!N >>smsŷ% cIt>1xon-%yUl=;K65[P,9P>^/Ux=*ZmX<^OSu߸UvʿF`YߛXމ }ā_AUR׆E__r=NcVw '#Nope0 +3&l4\0qoS)$oMCq5UC5>eW\N{YZ>Z"?>"g o+1[P4q׿&5ٱ5=\ƷVtV}F'=xY7ITN&"ي0dd%;f;}dۇ*kYDTRIcbu? w21)~grXB|;̕㗲d X_e,cgXm]wL72b$kqs_N7Cڶs)]Wz +X`P/(ߴbˈ|W䙸~P-pFy#Q$"""Jyԛ#r>v::dž2ۆ!YUJP'ClG2\Kêί| o*>IV#C={]L&U*cB~]`iO6ۧ},.962k ;cUV״I龚ܰ*{Sv !U_devOV/9]KSrBe +lZ@Sc+іOg)U,р#E`'cmNI|6T:e0l5G٭A/# czmuH28gp8ǔ[MN h^NV5`Ymva\!Yl Ѐ:ݽ518a⹜Oމ_*֎6$NL>+rs= ٌPΣ?/++Еa"KxaE6G/+#zr?#7Yt3e-8+ ȧNGwͦ(='HQ}`:If.uV[^Ii ̼VvQ,vW#ZBts.xƳG>mX$<<+;Ȳʲ' KX +PTzOS&әKX={Py +Fc=&ϷMݚlRG]$oṳpfĥQ݅;caȫX<EcؕT5Uw?#`q,Q5urEh_[Ś*-a*,ebmzM5]!t=߈v`>P9`.CɌ^5^UX!KEf] }ElYFT#1N{fy|@F Ugoӛuk/dYl⤜ 7S: +ہCG Q9|Fd{ 涯-N~3 Յ^J˰&PF +P(n}3+1xxֺkFnp +6tcC# +^Cio6o) + @7cv?.ۈd)JXZYgęy-&Ao1{{Rzp(ʡ-BSB}vF39|_FVnVbtzw=pe,Nf`}u28~G/zPaf k'H1쿏bcjcے6ϔT/M־{gyVWv2+JՅsǠbAo.dڶ)qitBy@ImBgKVWyFu)>o{O <;EkVEG9u->3T|'pcQÔ4{cՒe櫪瘓އ 6ܧ{v{˷`^^IVPG!oa]zNjf~pc|N6.96Z0 gfq'kLbWˢky׿ -c\N]ܥ9l+;DAǴ%$(d'CԞDq:aP9ƉÞ3W%m_*Qz}y\ ~],#TTQl'gk\$dLz1kг>\ڙk`Ty'חcv@ +\x/@<޹y镝2sJƵm *ΠPXrw=%z5/1^!|gWԤO_0~Q9Y{txQ>PZg;f*޾ L!o#-ƹ-$UA^ |G±k{UձKH`:oz#n[%ejyԚu\0XC[}* +…)'s)xQ]ޖs˱v6$bgxz |6O7p[J:.q ~}Wy1*QV +<$8 +anpEU ڼάBRu;!8ݸ5in.&:P_;ۙx`A?Y6z/ }f/]*EE @QQ'œ5!:7~ˎM=,Z[^I}%Cgr8]mT.d%VbVϑ`f$Pe(`meʲyj+ҫ&doOn5[1gNā2`@z*iVnJՁ;;YLsJc[e.Hp>hm/.uܐO% [9f6*3iVDUv!@-l{5dgMBk+_%9\h-FFF+U΂ǯ)$/6o2_`.B,I8uu529)yDzD2RU cװ4YEd]g;b**tnb^sl& } e!+qzj>eF!u1ަk"F898)O?R|c~318V&MN5)R6+$k~κc? cZeXPWr ׾h@yI= S2V}@?t p2_)-浙[CvvvҗWbV#`gP(C(`AјpKiJֆ:L+-Jd9ԫ؂4Dg ŷ~Ҿ(:Ǭ9s +[]t߻)Jċ".y-G%Α,#c@dO9O>ۍ`D|hvw&w +%dZmVP~jz|OUrY[unRv$u]«P{ORI$&S7 Fac_-ȯgĐ&C6@UlIb=OJX̠$#$kcxJ8 =AX1x"l.~cX&4vWgcSapZyu?)6>$}8'!qlB[:K +X)=zn2ךcT-ObIOwqJs%@Y`:޳'-Cl5.vT(6N5Uiu 8r=7t)fK<r5@mu?|eŪ벾^z^[AЂGpd'{8"Tsc$Rpo )3H{ﰒÌF˼XQK-ܠo^Z+% +nY& ^ +y=={7(q9MWJkQ>ƹAávxZzbZZ_Rׯc0V*.oQ^NG  Xc@jѳdjK,5lӘ&>? LaE{*Ȭᙻ.OR|1TY֥Ml4;#D6.YceQ] XkQY AؓYk{kP`JJ4{!<~/ [QY[[e#]{oeC55 + 46ywOx'x[K}YvyvoB_]ُX8wAncI_q,z.EŒ*vaPWK3f¨ʠ::7Jp/OSS\)ADz84~$g'|\*CSaPuf{'N{,P؏@>DxUe z2cޤH#FW#"ZX*b{ɘ"þ堗Xs}GZ[.d!'DzgQ}yUe`#DDDDDDJjV"%5+18V% +lN>iT^k$ Z#đCۘwPwĝxNK%vey-P.H]r=4cpr ]f=򭶸`=`} )ZYYiN[/OQf˫/]vcr(e w;0^Jygj`ie`N}.W -8wmutV̬]UyA Hc;˭Ցr+m7Z]O%_hδ=ul;WE5 Z[.@?nCxfE:aWl[|4MkT csn`֒*$O\Qcz?7䒽0メ1'p:rT1ثR&sj_ vW X2jeZj˲N6UUHRwI3[p,z\-FB8GFcz S#Ö^ے2W-ܪ&)%zt3ύ:'@$U<:7!Th~ȫG(sBA'ec ̯@]/rxrVik(S3ח:=v;I S7d|S±ȵB#i@>qn +CNsf=:O|#e.m1@zwh_6~SP>ݔQ2B>Eci')R5 G??1¡TK[C["=Ԩ*~+ƪUDU +4(b7lh#Ҕ"zbgb_t9+ۧ7\8r Gm\WnQzQekT\.C=ُU=Ʃ)P;zJYUW* A=Pe9+JX`{QV*vUP>=UUEBĒUBλG 1:԰Ԭ콁S%3" 7/ŧ)s qoż4|BCUq3$w5K)*TWIDDJLN-z75M΅6W]W}^eVSr(qsɍaJUbm lib%=x䲆 +Nvd? z-CZ̬UOArXܬD^f +5YPI +q>QINwPJ;F*zǬ̈°Κz`ź&|XpW_zRJ, 매ޥbGq085u5Y*9| yDDD+ę I簭Iʬ:$*$ 5G +)mtjʞP4{I>.&SjvVX}{Mhq%O{_ʂ2$%.=j䛑ENVD6^QMh\33*)qm*LvU+$lMȺGG مVaB)htu&qs},++ rrUzMsݙ +-1^kSrk (2'1ScbM6@=$7,B>꾰+itAGio2̷GRD>};>G8"=yl)b,U6vz89rC|+.eVZAm(]{AO_MV]m4-5ڧPJ>ZRALN!re<>IıKJ΀- քgY~J]mu,r3}uEnc]$uU8N lO + }nQ}:h6%>)2rϤj-t| ntex-;l1 [W9' i[eS>2x.2l|6:0GZ¡ƹJQx p)-}wuSn7/,Z+ ~%CÓU Ȭ5\:\܇^EG'& e~P@O]-x.\ K2+Ct  t&V^y=^c wJo~X/r~mm߼NN>ܛ֔fTږg#c|C-^N |5َSM*}o\1֋|SvbQ MxmvHz|ݨޥ9ĸ7 $#YUR*J3'Ի,n%`]w@U +6Jq.1w|ܶqlJ)=vWkw=j`UwbmֳԷP1TQMe I_"ԸUYMjXyYذ= kX pKt +fea[zo~lR9We+vtTVm'Vh^!.ɫ-jABY{_t|3jL{iXB-~`@$޵$yXWԖ*reJˆ K+ų,PE")胑OV3xFvV^_ǶE!^`V?y^ Qk62m`枒Gq{RHK*ÕP^cPz)Ἔr^b}媣!{!tO`56 fu]MC8iIr'-©rA$cS} ů_ |h=7ۿIsW9XpJR5kTYǼ]yrerIu 8YVAEJGB+bl h|z<f0q+kǎM: ll+q<}cݖRYP{e]rǧ~y|R3F5WٓSr5NyH`ztb^'²88ʫZK87˯g^3p{LѨ^U[6OCנ MoWk;1~o͖"k|G',[L#ŲW$-IMVڦ *Wߧ[ę8;"_V#09<&n0#s{gc;"#rec9'ªt? iQv{[~oD*NkcCgkxu9ɪzdvo,ʍAx>&m8t^fp֊~;"""''fdSmUK1Z+1nnt5YMZy~u_׵ɰoqƶ)zvD +8>? Ln[:P[ o\'37/ %-N1v 0b 2wcݙClWװHc~+eY}VՈb }=G&"vC/#1<+xrYQėy~=ñǪ3"**C@蓯b[Z: +3 kZЗ8 |ˡdR)`J2FGGCGG-ZTV ~hOX627(V,Jl30ѡ}9y\:h\7)2iHc[=p̌l|j\-gQ~Ad.~U"]VTCd*zAF?u$('׬xRqsK2:8t<~%qj*T}yk}}zH\ჄZQ@[bμN;>9ۅo+c}7:1g WO쪫i{%8VPLj58ƞ@~py'}I8CcfʶC)*b Akx[ٹXh4 "F;I%lAcgpqE(PU,֭V"^FayG.aL UY +tYy7k-ntW#elI֎r›*ØlmX6;tka.M_(eG^dfRHe [e/ +X5,lI@I'2r.]-mkr뙽zʎ#r/hN/~/nm{8%{&d?!~G) ߤbYį-R) B ^<>v[չ ]N]̖J>Rm_+0}$]LZAcbi ^V ӛ[R5c]Cu\x(~3OL:ɱCSGWy< Qg¦|ֶˀ^}~c˅ z ß|]?x&--VrN>Cg]XUYtU;`޽|a8 L~h}vt\G6'DZ-6^ Xk<>;~.%okQH;;%abǩ386ϢA!@fbyTtq1qcZN`yr}Yr5[yHΩ%FΤDDDDDDDDDDDDDD@#A|?**6ajw_5lqk־M|GP58K6e7gߟA:HYr +R =G]{n\(NN)=#* 0xvx`%̄yĻ!ORI===FK+k4+gfq}S&9TPZ`6/ږ8/-\VV)JJ +*1-$̪k<%}@pMŹJįieO0/XѰFL[qeꬁF˗c~KZ$8U+p\LoDȩ_ N]䷱KR8Ne~ߨ0ɇ8}0J6Zcʼl>$ϯ#[q_.۩җާxl_U0'~``a|m5T7?\Jm˫9,[tZՅMm [$ԉ[(*Mszedz\?lO^n'\:9uuEFrZÝtq~TXA+ע ga6ik<ܥJa88u˳X/ +8B''~p߬rx}3-AjWwc˾Af?W`D +ё.}rOYvZӉ& ʉW{#\}@WL%RK+/:%E?-G =>:׾Lq˳ l]Ga[hr F$t7=\lwVz1s DC;ff^_ToUqר,=Sd+6,O;*ssr:|6><0S%1KUV\=~=߅7 =)Ox1U >,q - Dub1s{~w CEp~B_殰E6(tե,vo&)Ȭ^oʇ/0ߚ{\8CpvR#q7xgߎ-a*U=td!o7S=)մB[m Ho+O箷 +GoMvJWm(9]`GA}51|.&4SeW6s}~oopɺ^cZwN.UY%Ըtu :c [b%(3)=Hނ>ߖ`= '[䲶 :&@˦ =hOu#El_q$e[]cogg `yOO9֎J;M&Xغlwտde;c7_Iw zeZ|zʊ֯ŤrܪfJg׏^M&ŵyH\s0;+׼r_v6[Q{.:2T9X1:;5Ҩ6-]12x&+WUlTDPF,ޝdg'[[F]zg:I +:j@w +/( ܝ'b""""""""""""""(F1 Mj"Nw"rxN^GLJZbŊ+3g[ ŭ6Nă$ox^%V[H**똞6;何-Qe#DG<эV2 +EET*:O5`ZDTUހKW?ȼߒhE5w(pcRo揝o}zze.V2j^̬hB[7J+CT+ss0bܫk׬R),u2cj!~kܿ-Ey b+LeZ(=5y\jBwoDZ|~F>3;R!s*:{Sȥ +9m 1)Bֈ(֏qzZ+BQAmlo򠟿=YJ\C+ `qxLJkAZ֡@Q;JZHזr{_;PaЧb ;v{UȠ kd$̙ep1ť4C0*ؔV@Z0V%9yG¢j]OT^:VP}+eIru h6{5ZT*QZm@`:-+gןs^oroy8Rh {N?p_7|UMWyUgWM;vGGx2񭶺\{<*yf+˾U +zNjE 13U#ir"\@Oo^v2 {=0 Ȭn[≑e ^.@{u%qp1*VA: u̯ 7pwȺހ'dv{KcUqֶۢT޺~-9 kWPYp K`c\yؖ Nc;t2\;4_Ev\KcUp +`T>є|:,/ڃc󗁏o, +ÙChvZ׻]'!JX{3.> +UP%P6q,=uVw:gZ<űB5]J)QKf%+aY@Iy1뭙3k:#%)ƫ9ەBλv"""""""""""""" lo[Q;n7yn=gOV%$N'((omZ[Xzv0/^F=y*#ګrn龀#saDDDDDDDDDO6X*Rt$0xoU X+-epJ BZܭ˾O5jmwVW[ĿC28ef2QaX1e興yFZyNm|ksr;eIw+7cq)5 Mak3]u_|@kbli[<_[LbDlHS\R$<i_9^X w37GBmHI`lt1!E²xC+-[1ef}bؠhWGrG_瓟g7.>wY~&vya`oo>=645+'mclkoA;+IV{deE`G6Dؖ[9K|G~0ڼGgD [є`A`BqJr1JKZXauOm`c[ĭi[EVVRvwv[qJnbq,DZ +-VD"VDaf9by1GMKZϷq69)l>a+]d+q3jɰEVXkO`e"w2W6 +YElU[a%--N:dS5Ŀ Cv8=$'LkNBcZ&zVtrP\½ }'; T@>G;X6KrfeK/{+7zo/³1Ԟs !adR~ܻˠJ =}|3jnS@*wͳW76d6Y" +*%xf%^*f=VO"[<R~DZ* =rWfgCd Q{fW\Y,@6F `p.󮡐jmk`v͒c[°bc{XDx?~_fhF\Eڪ@+Vpf'@=ƚɯʽP87tm@= %7+OJe=GP>p׉2f̊*` 9:AGАìs^*nnĶni?UfycAz`|sh6kS%1>k>v@ty1<5]rl১*"伎1_-_6e( =>3Ï^UV3Z7VhA:=m^m;'rs#z ֵ-بCwf,zmz&SQ SNeXO:+o@oaq%8efeC**L$m3؟d>˿|$DͫP" x+q3Lu, +mUz&|%uc?xu=%¬k2rYq۰cRo/=L쾺ʠ d8h\q{ڋ2V:%U~N5>P+y + :z,~䦷<ܺaXf ض;Kx|W6EOmપ%a2{ML7fn)hn]f8gu!^Ae#`Z.ٗsdBO%j:U$su;=OBcq7u)Uѥ]݈; lh$X#u=lm@;'9UM_%d*"yg`O%DDDDDDDDD@|9xSg{ dw~,p2vZr7=K8`{wIx5|)mB>8`c=]SGɴloӦżK#/*BPQ4jba'>YUm<ժG]hN׬˲e7rɰ0ڰdoݳw)+13qILBhuv)LA!ppr8u]ǖӈeO]}uc_-dqjֿ8h7eށI/L +ɿ|^#Dy(K~xs뗕~GL/Sװ鹴D gmGer?v\-/^[0:#ci JDDDKY! [}IZVzئu<|ݗ*-׳#KRvc?ôb?l~+*y8n(>\f(WZQ'D hu Do;{q˭C# 2{xv==jYlkb% 4}f)8W]h(.GZLR`ht=DXxz[ecXNRG AejQnJ Zv7鹑+B(e:#`+!ץ=|# oigUba~v0>FàxIE[?k#8n0Xɶ&Ohu`@=uW ?3>T-U 9΀"/\5{.Ȩrv$8ꠍ]ckiPUMsrS;SC*NƃWF"v~3}jD {dpщm EVEu XUGRۛR:ߧYltXs z7M&"""""""""Y̡izڲ5̻Q jȵTK"kjϔO#`O-`c^ck{u=JxVN)ʚY=D*ކv~|)ĸ*<-WR6ǝ͠lv'L~I#1[Uc[,b#G]7͈u)5+(N$~;NܨYksJ;),ylrJlINw6>En)drǛ( #;Xpы%h^5A=!_RĚSYW 0^?nEsQx&FmW۰{GnަLƱ(^-Q}acc3""""""""""""""""""""""""""""""""""""""" !]~_̫K;P*>lkF.!yQUv=&9Anm ld]/1-CkQC.OZ8]U%"-^빟]7_יxb(Yu~PC]ʨA'x65;\UmR2.l 9 /)>tz:0e>7<_rqgUz3cuwb»ڕ!ԎlTP{`7^u.;z0oiQ{#sX+hgFӔSf%j籝tC~h&+P;73Yg1TٙQ18NPv"@ c$~^o9|R(~?y_T S/;G +~UMgGRYr8*䎛AX) 96KIK;unnU޷}@y_T S/;G +~UMgGRY_*+\rh޾ui_q[JۯzLZW]ʸy:t%?*x_[ Kߋ<Q@?*e1BrS<}QW[/-TU~WKwgw7($cZ|mq+>KuIK;u W빹W 7zutL>S_g*+e%~?2R_Y;Mʴoje65 6fbnnU޽ql|KT+S/;rRTU~VKwcꊟ_/}QQ'-\ܫ^F8/*_cS4Xë7*fohuؕ_[kT5~WIwcꊏ9_o}QK'=RrJʰ65Y:.=~f^/ŹW0w#ꊯn}P_/%ߵ*?~\z*ՑƹG*_cSh WnU^DE_\~}QU[/-ߵ_KkTTK#O[i=`_P \7Vfƪ.=zv 0~5q6wYꊯn_R]X֜Է>dIk'5V~5Ʃì@EǵSf^0Ĺ9dOML*+EG9_o}QK'=k\|WENUx?K̿E_lԶTxn}QSFW[iTxdI Էy)nLעOLLO\|wz0E,;_[kTTK#O[iT?RHCy꠶=Ȼb 6O"|Cq?^%_X<"|A?-"|Swbhx+6Vذ{J>B_Eg_\Jm@LWbܡу+A`؂&|o`ҡc'_zw}g (,^:xӇe[e5yeGV"Y~be`[l~_έի|y89 5oR6zaߓ^!+nZѴOQkro8o-:۰ j%y'Vhqۡͮmw;Й-_~])c%:w^oģ`ىi!ez0|zl S1ݝ lP_>EH(URTB>%Yj Q=tr'x:͔q:Zη'3kxI06i1ǻNɜmU\y{ktI*tWƫ&uҩ>Vooj*66uCR#$WQJ<ԁ]i4ļEjr,Mm!u +L J+Z[kicQ͂$G;J~IxmF%CGp$O"˚ sk߮""""""""""""""""""D/I-P3W]XJwnbyH#)xw*æˮvUZEx?Ǧ:ҬkDOQS>10Ŗ i(GPT$G5Gx MNʌ>N׷ixO̺y<Վb{rn V ]]Օj͆GrqxgؔWe\:e$^]rˡiL6wQ ]݆oS0G'mU`s))i8ų|zQBhyCg]'\jӢRL^=,q%{]>/31 +cj|.0˱I;yxm k)aEczܵ|;Y^M9W[A_ïdq&5P`{;jJч8YyKUTE5^»bJ:IYY$e]Ā'kjW2 +t@n ]iCnFCg5Z~zɨ<{`^KDDDDDDDDDDDD:7 Qب>a筫=ǻRN"aN'_ {P; +>,H33W.^Etr>3:0Cȡ }t:/q{mXyk1M]/Lt Ǥ,-KHIװ0gR4sC@^w>YKZ0V#`1jwWUup^Յp=m5b]ꮃeyJ17L|zgSm=,W%"0x+bTy4%?YΈu%W[ )°64n%Ǯ_`k>F S1*V+my +b9~3 -`TA3:""%pk ,=WZSV `.DDDD}錅`RN)QbD2""k>='a6iWxUeds2d}R{Mg)O+SdY˜7X^)Ƽ;6]CdO.bt'17,( +vG}C2"PLdx)[.KiCczdDDDDDDDDDDD?,W%",Qڰ^!]$q?yv2B aJۓ)K@:zI/!gv^UzkrB&'ĿǩX(g4b*RG9?=@k0,V9uvۄJ’˳ܑtYl"ӪXOEi|dDDDDDDDDDJ xrgw+j':W.O_'D5NiVk+M#ݻ?o"$⟉МW]ks=F;? \l˪ǶZ|d72Ө^&(]UR{v3~k󅷧U:W߸>;͢YҶ*z7]l^Ø6.MMOp~ +4uשEk28Vyhw6oJW]+WZQkv_llNdw IJ3Ki$O_ +Imk,0b.Gѱ.O. [|?3rr)d؍jJOuA'hGPthwFGm suaD̫=%Ktnר>zj s1PQ?3?N#Cʮ%N=Ut.w[,UzkI<_}x^ +t:'R -gL*kPlHܞ88Uc窅ޓ` ?nu+7{CӜ̞{lJDDDDDDDDDDHVQ[q#@'(H^s( VL"`hp=UWݝr/Ruø]/pՃ!w+ Q̖.Jݾw(|B33)׎pw32"5_xV?>.BWe$w Apn5ø6`/]7f=ğjK_tsʺYx~tY7@ĝ_hu+tq;_ǯ* YOb9ffYbYU!ܣftx~bb^ b71[#>Yјb)ѫ0zuZOQ '+kUƓ!:Nx!\Dc3/lv^cܪĹn7j?ΉYO?zN8NPeC~NzI8=g姉mzb&!x m_2v a-\7(yod~Oez$*1'LKJX+Ғ6&!`J+rȹٹΏ.Ga<6~}7V}X?p6̭.I(TfpkjkRs3l ><؈]8WPgX/0쪺']5#7.[qV| A~ܸMR2 Vc+[%GCۮ J+ -r;+'1-q^V=b㧩_,W +H^G8Z%_NY^MseR=XVJe~Eܝڜ_VeV=hơg-CUI\3a[qK浬O5@?Q𒙙 Yu;rR*:}3^'!Q5vkZ>s =9Zo~GnҼG?>&۶yjNvFƇO78DlŕU #`9&GxbYka Ă3f0B=ԉ+2'ěZSJ{rٷخ>k8YcYHɶ\]yos+x_,GRt؁IGnE'Dvn-ca'^f9_^g6aӼ_bɬU:zOޞ|M?fV@֖~fW [F;@Ibʀt*uܕ\6V[@7ZNKhĐW`ڵN\8Vvƫ}w@%b""""""""""&'Ի~ˈ-dՙYWCc11?ðӋMnFZ[-7Sv $~27~qjG0}%&UKjtlufK\J{ }e7jlTƭjgNz8\7-a$(Z:.ًUWcVIF ]Mf 9Z؄cc_ p$*A=~XM2jKNa:jZ1l\z$^' p(:mC/p +$u^Z5vtal0|=ðыUn;2Sס$D?2,Ys;sm:;ÄëǼnSȸ| 4G/8}K;JI=9WC@* q>^NT~ +>K +Qڞ""""""""$U^ڰ[ܵCM;|{dɧ`70*YNH0x_8~Uחkl $t8 i0W%6.qkUKߠ=zq2TӀA,#GD%8n)L^U,^أlwVFnZcUmFQV!Γ]+;KYU'%hhk^ʡG!^^MkmpU965Ӽx-^W#U]V*]ozoَ?UX2Wy<)nRP +? @vBb0bcRN5HII8_fj(АVx{!.2Sa{Wv([}6=$?p\,46suEJUVC~d~7˾>J8 _[#9Վez"f|Ϋt6OOA#*4|•u9F#\ޝL|xe-}ʊ:RO@$Gp\!\ZߓX+݈&gkbN} b6i2̵:}6>+.U8w-F[9E7Qط)f&'QJ!Xs?;9 "/;ִ}mz$m㘖f⚪Cu:#g.1Çķos) %xKIu{VhJcplF^@r+Z1"wD%Ň q^kPy5A쮵p ե*,U5H>ܓſu. ̸0̯&d1lkB@޷n]MX9z{ݗb"""""""""D.*kW@UϠȯĖ6A 9.QʳV:-Y°8~EfU##|4,O-@v:tx562|웨w;|-kT(З"RyNl'JP95OIrZljո.T^˱-dW[WjV 2 lulA*"cQ||[2w\OqZkq׳װ!߶4!/¯T(z ssmjl0PGRΊnZ1姙{"""""""""Xl^,MsFRV+M!O0@$V:6)3MuͽrI~VE񇻈ۀm aty)0@q3""0ͫ?3"""""""""""""""Pk=Z]CXvG|4$DDDDDDDDDDD>iwp[dlКZõt-PuAdCUCXm0>w-pK1+cV2dZ>!Y?liM[hl +\X|f0#ExWm1enJT˔JTp˔JSp˔~+I.Qj̯ G3|oމKkj2_8fS~e9Q}i<]7b3G +OĨ7 ?+I.Qj~_o*}XN. t9Fa7`?=TOįG +Oį7 ?+I.Qj~̯ ?'uq!2m{C[ ߙBt9Q,igPEZ\Gщ_nre~8Y_.h5?fWꇆ~]:KWl!c-pCc~=8=:Z7 G2Ĝ,Qj~̯ G2T<0_ꃆ~]:Kwxcl' xgӫ8c_6tL[g9[Jt Zo+~rT|3?2T3?>xgӫ8c_-.Sgv|܊b9k&2/ +n躿ٞ8gӫ}Pp˸WiQǸq:ٞӌ`t4j9sC]Jt XoY_흎~6{"_wmT7?Tq1NeG]'iŰ:\b7U nM( ~Z_흎C?._ꇆ~]:J=Ï?̨|<ˣqO3ͼw9ˡFj7 +?ߧW3 =qOҿT7?Tq(:OCt~='ðr*?Exgӫ8Qu*8G3 ĸ-}lI@I>JDJykrSOȏ%>OYJ}zߜ ה"*タ=)rSC# US@=kg#rRWT ܧ(>ZA%=G"U*J!K~r^R+~OJpJ| (qi?"SOЏؔ8TIZ$j-O?b>=G"PyDàOЏؔ?$ġǽ5bV*);JwE%JpJ| )ZO5~~ġ?ĭxtv-ĦIt֤.| )ZO4#'c5bPSފK_ؕ:DQV|#wEaW Š*RF?xK%_Џؔ#'c5bzҴSP?XE4s(#ISZ:E%ϓ~B%>KI濡#~~p1@(xn)EOUcv֧A-¢*Fޙ\3J*SmkP~Ť_ЉO ?B?by8_ؔ<;/J{Z~})?bP\ғ'N ^=*uh]#%9_'qOz+-bV zNҚ[+vʑEaW Ĥ%)ZO5~~ġ?WEGkR+n%7=h}85V2؃T%X#0rf +_=L)#/}񗲸6qa} %kwTyU tضu; 5\_v_2̅p`(+d[u5ߘW^'lN|Bۜ*=O`$PQ'!(` O@;u3\in`X+Vm6OeNeZ1': Md2np_jchr +܅C NP9kϪ pjTq7|MWŭcaBֺ.f?3x9,-es2UJH:mq Nd!sn}ߧ\bd%v۠2gMk3% 9OrdȵT [=̻IPպd>铀F+r~Kz\9O=;vA*zu2mPvz1^Zk1=ztoY[-=OrDeU_y|W=V0(վnW#xeμ_ƺeRK+ z\&1 ,>i @!CsB2,UMV}8)bmPmmM,9m=ͮyGS74ss;ƾ_~gQ԰u߯%{aq-FTknF#$I_ >N NgnMgNG:^|3Kưn'F<QdW3r=xƁW@ʠHFϲESmwH/\,5b;Ix0 c[}<}u0?L׊#q |DV I-:2j99#L9QGV=},2 J=mr|N3R>G*܌[.ą5c"7*^A߽}:χ.Y΀(<"'ovbpH!,GPo:_t97k0c_t}Φ5`jV;ǠGi&}^m`p65V+c!|Qr.gB1:lssw~Gv>B̊㾷osgᖛ(S[r~Gj/ |R /Z\ٕ!XTz|e Jv\Q2qX7l=$&6F?dzZ% +훗4.V4P\ȼ{@ 3o?h+ôdF_)} zB o4!_*kצ̓q&^_2@Fߘ>\,?Dp1,F~`T # ܜo`Ġz=D˪J(R7._0{Wb4zk=$ps +xk!Bl޶ub; +vĵEv݁3wrq>b3Wy2;mr]UXڶ鱲FčKQQF D~-R͂-hX6{=鹗 *qbc&0(Kzg5Ng2=j^~އgqnG%Sm[/Rt>(}9^/vzւˢI!/|6э1߀ѱՓuMrv:k[!M Kjvu(:b>Xŋ{=뼜n%k?ԇJvv߸zG+f::mtuqКl/3%V}V"N97[_ٖfі딵CcThts$xŕՅָEl +Ԏs7ˈyy<_iΉJn?(VRt=+5r6h.5Dͪe`k[%+Kx&MҫUTnrvdo8+HȪ񲎧z]k ,~ *ox ^U n~RVTlŲrX8?@|;cZE /0S:؉zMO_]^%ԁԨunptR}z6JEbG Su5_ ++ UjBz +|әgϮKAWO8!2~ 85,w5 +Ciz^v=3iۇ`@,Й^OoO*6„%V5GovY<3ݙUI% f𜚿x]s (޾9X~)3M_*i{IoWn%˦^frv3v{bXhI:iO*Pjz:u~A5߰y~nzz{n~w/|O]udp\U`jյ*FJ(7Rz u=IrQe֩ i;uzCaPYBIRI@I+NzH%֚ҶʂzLJ JƵ=c׊QGeU +%U0>>S"B'l +0 +*J" 1)Z(o)*9yIŷ7Н1*9 ~Rr^EtקV*( P7]}%^-(+J*UaEj>{\:Qŭ{x^V!l=ǧY+T-]EeUhfE-u#7%[ENGbȬG]#dnj`ZPHefcZLJ']DSȯJ/)#ֵaP+4V~Ôrwֻtc׌ +֊tl7CZ+5tԴT" S5=Ex㖵UޔpEKQ]Ou`exv60E&ʀrБӡ#n0,aG7^fTK5hI* {yQB K^[\oze 7o4ʯHv}O YR֥7B(+Y#庴qu >zPʠ(@Py¤sPߢP6BQBևږkǨ%5`C :gn^O"^R9|;#ZO]LP(t{5u5m\}T + :~V;Y]HeP lXtRR)~tSԳf%6gʂ~q)b +A>v75#^]:ﭑ<]=;Eb> A(իV4A%xv6:-uZ0PoC?;?_3 r/1pN\|o@CY<3)\]6uD4 ""/\*,ek,m ɬm=DL1Ū͕r"^b:޶:X_yr#*CkLwcz&tDDD.FCy75OЍ:cs.xkU @$lgV"%ܡEgN#vSWɫ|֮:a-_Ū̧ \Q~yoS6$wd{TC0DvG=I&u6[ze 6:#c`{,j@:}gq8]ܕDdl3!X0v2#ucUu2 +*}$љ~&دަ>HzMgqCQɧ.n#"{}72fSrNMxlՍ`,P64igr-9"+>Hm á KSaUub/ǮRKK/%/VƯV#+$y\g]3 qn nmZ\p!5\1 `@)Ģye2PSYuf sֈ u8K?#(yɱיQFƀX^"|EIJ8f#K>Ӧ##$5V]Mlu;#u.f[FN.?(fVA$_oNukm6 tS]ǸfVZ688;-OC삾N#xP&* Nzґ^ tjVW,M >[,>'myx8y-]+MmtbX72?8pVgMr!]YAzt#ݩ^fI4ْ9[ ;=A&ɁzoּʑP ~(yű8_nLorщcYF95\kVP<ߧnd9щ]I~W/NP/ON?ۓ/(c  '2:aGaH|!]PjQMv[R;%R9@~qlluEed`YO p~Eu²9TȠW毰y/'3r1qyQq,u. U kZq خ^|_ӃqΗ~x}yFƤ󧘺V9b:lrK72)zj|@tw$(/:@]JTmv7WؕoӸܑ|Ac]_G?>w=x629魬ӂT#d~W\75.խkRÓ ӴY5dyl[W@2ŽN#83xmY9Wy5^\k[,}q\>è|f^%%CVս: qx]\C&/׫p,v>cY_)Z[c(U,C@շ^ 3ojQ +6T u|F~/f轷z#rny(,,=;|c+w:вG5&7&sxٓkvRAX-I}f-zrq{ϑާ*Yw2S:J#4Sa/:XOgܦ"tpHrK;ƿۖ+P{.ͧٚՐWR{<|}1;'|ab}j:̂>{.G)#z'~3g#_&ZX +lMp긕Ջmu}mQN@`yد:dѐ1.z_%ח{-]G@G+F,y`z輼mv2x.EWp"yX;5]Hd;[Z[i`T"ܔs+?RyFl(~Cg'lJMuX\=&W9-LImC["oGw0qx'pZMJ`nfns쓱~ȕ͉ev06֥~v:v36j(#[Yp"V0wp)JySxPHOWͯp6ưYܕkR`1@;Y|/ dbUMPY_7%C4U r2׉dԨPPps3LN hG꫟&܆M\JvƉ)g2hTUSU'mAYK(`y0i] +T*{>:y6k)Kkj򫥚$shPGO_ ^'MWM*ẹ١Ӡ6#ȜWdjT >:I MTS#Sʡv ׺c?s#KIh߉sn-J2Y R]tk:Nm2@WyUV7"rO@Yʪі̮+&nB#MA nNGȢjc^7/0M3kMGz?#=u`:@?b&5y9&-VPiU]2raͶ&?x\#y&tqf< p)@q(oj^+Ђ#*˞f @*Օˢ_IxV.HǕAaDf ;]UqnwSiT"':Lp2VfW =5%KΪi#eϷІ$aӴ5-`^Kpt|\`=k?0rPs#xwq@^{j1Q5t{}'p`VȪ hJ#,f7\-#ߙpܼMk{텗գ[|`'kJ=<7baV*{\y +H'ߡ~Jj§Kg+ֆe2`|pר,۠~h UEw%u +aˮx♹oRywH]Yè׵0*vG +6|,F]~g8 kfo%nqOSsuow]w2p,ůyYӲkD |,+*FC^ +J:;iokrV"{nճu3_2XZHWנIʭK:0e A}ADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@)#T.J@`ŀ7{ʷkIsYUmAtPJyN[5;{xmPj핋71I>NN/Ɇ/R=@k1V> pvLG^}%?JصX4K(o~=Ϭ7Z@IE]!#DR +MKp\z^r8!bēӧS2(1kBUP4@"""""""""""""""""""""""""""""""""""""""""""""/x]w]!k*{V?8C("].Pܜ{(`HIXI)/}hCpTG0:|/)eNF.AA$&YGЙ +pJގ\:zEhBC ތ͈VbTH::=oǧcd]]!zy~DܬDDJ3rtNS"|I c(љjm+'z=!G]C)$z:*A=118P +ӫV}y + 2wC_g(JΉlۙܬx42, ڵL3ᔵ+QBS,î{Щk6 ׼|,2/ +eJBH.R( #cQ(NƩmU,yT.RLzhnj^e$dV 6Ĭ6FqXYAQb2Ͳlu](zHoam/Xȴ2ؐWdc\|K Y):ߴ2"xF +6I^mIu,C+e؈)ץZ XV3뮷uԴ(q]xQ1 +dvNT_O/'KR}{ 8G T{kjUr}%' HsuD@@~v%|@$je[ _؇^`_d-r$Э66xJl^UXł{1|규yW//~k.*d%5ĝs3S~Rg-lrLJ :cN1Bٙ_S52%C1%kR"Ҫ7~r-v[^^eA]t@ש&]m-t$u!k +©̲QiClg(B}u1Bo65PoO+6:~]v.pkWl9@^R{ wxR_(c؜_Hڰ̯۬eS^UU^[_[Fp&oqj3\?0妰A]$zX\F̎%")CRIag6\%MrW*! +Mw"f5~v>E)ScrE)`Thtׯ]]-L?>:u͑q\#f@í +QcUc0bA^ŏI$qv|J-J#z}/cԫ=B#6.z{n7fFFEXUrk aˮ@=Yl*Py+V}OMzh8. ū`zvWJVclJaW9=Fu1n7[~&1=**YCP>[JICIWHqĵǵʦy\[-N3F%xϔ-[@d`ϦN6|Jf lv +LC⇫*E6<ܕ +ֽA+2/ȺFױRߖ;gnfuXxZ]O} 9xXz尿rFյzzyIqJDzQ H6w-Yk'&+|*VEee:DN"+pZ+ mȈrtO^˜{'2+j[yݐ}IVN>3|~-oBȵ+Hv +Z_yz/ZVsY!y9u{$?O|2-f]u,ϰ~y\n,0k5g*^9N^~K8o?'"!XBlo#k=z8US\j[0}?ëB;nl-ejtO]Y=TLuװm֘,ȿ[a\i{~AWMr9rU512M֡ɰyKU +A{m6<%uy^{< R(wtq8ݼG &*} mm[6AA^9\/M*TI%R]l̀oyYgVq QfUUҕbZܤEqWowt~AgBf^QƆ{G`=5]/^U8^PkÚN]v:RN"pG!h]?3%xVbqkUzt,XPڍì<_'jή[5;80eS:{.a{2rFZ[\XW^;:quk5Җe}0^&]\C+5\.(ltk=r6=yBFd $sk ']8B6QU庩`IC[ )rᕪj܆W0b4d%ɺ11<.r=~2+nNMjDk^`_&b:C_D%|rT؍rhSS\ĭW&Dr̎Tm/4W4~NkxWú:) 1*r= or]E91ZV^=IPԝDZEgBJ ݵ$} n'u4|):^Dnbu0wdfQZʢјlBhޗG,baeZ. +@A;ؙu܇nWC֮mAޏ7O0ucG_J2O0mۮ8l%e.U_R?MtYY-HiYK( 4rFkTp 2\wȮ/j_3EnoH¯̌ߔZև[ +1ҨQ;k3C%I}HcU[2!P@' }5_ Sx5ہcʾVՍWDSٖV~X{=H>2G@hfԎ{DN񊷂[Ĩ5gCHّAQ=z|e)G|EР/̬I=}~y2jȧêԪ3sQjNdqLFJ ZR>s +w'˚+r *H vڒ>[םmJE-˦ތX`cӒJ;Io]0<[FNe5SCXW#!@ZW#a t~SWr^?wXʊ@){r TՓ+ ($tؖWl*LdVy$uַ2q8VRrM˴g:%zll0x=CqzX*noMoj(s(SfqZvEb*^SŴ}znfdagܼwȧʬc*թ9b{1N;abYRBfee Vw|e!°p؅ժзRwg[njT֭5hTY(a@ v#c'/fwhX\V1;ZݖJ +:Jad*^zѹws(:߮"M~X*k/p&kTm_z=tzK^Wx:YzB2@o]Bdɾ2c%yFj5j5+FB56?^Zr}?ld{Vһe }:e5ЕMJj4#QFj5lRH;ih>mrc󛯩FQ#8>NO[1TW%0P5L܊Em[oL:::=qT 4FBcq_,ƛu@>NJQYbW@6}d0x| *,X(f`7=|xЍЍFe5FbR5FVSQDDDD̥4sp=ܱM}(&~ڙ*Yyϭm{ʛPIJƇm˪`Pmh r +Uq V7ѐ̵ڎTBw_l̦ZVocvdo/^U{/O`BH\++mL汨d +HS.KTw,BUj^у)ADK+.:Jbz*~_193 {.sbcdo[elT:^f =L-cl@t>  nmK~rK8ve-B&mZ :PH\6jݗwH{_~gy9uk^2AeN+S"yMa̻B}\W:|DBWLϊ¼>#`$WM6+Zh-c <=%8nN_])9T n#`#TX `l]r+R@r"e=:sjd uPCN %z,ll{斩˧%Kb썫;cp/OΨyl#u6S NKT^/J6߮R\ eodt` `uRTիe {;F\z޶7|5\ +'C^ʣe;l*Nj~[k+==^ ?^Tأ{= T`F='ߗb)`?un2+H*|u#aJyWc {bTH66>󓛗oݱ r8%X;*+w< #l1x]z:sַ7-D?oIӌgpW|kT-uR6=Mkb +jAv'C5뛌.6F[d%\(dH6|\W3?iPBnV`1 ']71 KMYHQﯾL򶣍{ qj99aә׿p;PɤW<NZB.D4pzdԎPKٗb""0xEV1dh!#YøF3܁EvnK9!)'<]Px;;OI¸vW:׎ebӖַkڰ$nVQ롦ei{ ī'c:R\>>ROOY&<|v{y(谌?aU0SNF3{<[{,2zM__[msg@nFZgcS!Au΂/A@+ =t*WLY[|CqJ~7-hO]ԅ%b[r4)׊ߎcYt6*ЎǾoW_nE̲P9Aͽu܋xSs_;.G-#J391*K{kIZU5_3Paۮ3_^o:0 cm& ЮHE6boE#j\^F en,GfwB4PT07RXjqN/ +ײKTK|wDpxԼD#@IMKfve X|Do/6UյnYCYS@։uff3fh68娳(t/<ʺ*mu&&9b?)gQ*˱g;nmdgCR鰲CFk}]i?:+k-)Ao +/=W+bT;ԒVU;kBbxgp/2ꓙIk4Z`[,q[`mʓ8 0l.O~,p[ւXąuIt?L.#׉𺱘U9 *ta7؏S4-oEʲ|Ku: +`o]foѲ;1Jv/AjGx~/IQ匼 +zPCYXx sKKYүצ:+'xNeUK9d`Pp|QT1 F^s xW8Xvrr%PG^tlYۋhVMgO_&q~Sec>5 ċ}nfc6'j(Ks)v#]$u%FSKo0={LVRۭ0ʷfRyA 7U̗|5}ݥ8h*6d؎W: ~{=N|_'ѺҤuU褎:O5ůZz Sm438S|Ck]b[Biʹ"K9w􅂩6Giwfļ vNf=Krg~e6N:mٰumgfU?]zfn#0Ԯ̿3mX6%]N ڰrN[p#{iR1rNPY+bV`?/߀fI<v~KW^әy$܍Ϯ~YkՙZjXR  i6mKJ~:fMx8&FU`,:7/x{ׅUl*o(N>f9j)6e/ű¢*Z'!R'1yS#?ǹnɿ,=bױȬH^:ztR:sr],eGe<-٬ȋBc]͢B*)$*6KI'37cvXnGV(4a8=y6b@ 1$m1ǯ^:ŪU#Fac<\`yJ˱ +T'C]wx:9ʚɶ۔{?jd]n˴*,t 7)};Kg8Uܞd ʤ:lS/SH %OlqpJMr!ڴ#}U;I Dm+Z;yYK[O ׎Y;t>koX1VիӰd+y[{4{t.? ƳbsWӡ$ͽo67y Y_/=W}T; ِp O)prhPk&NH룯uRj'eyљ8*yT}$Rf?a2UUli[UД0bF,e'c߹g 9Y1fSt~:zJc{mZAlby{܎p,4:B)$4z{Uek^ Kx mJe^v5s*8&/ 69YHrzYb bVWSXJ맠;RGL<[`t +t65{yRe?'G]fX }$BxSj4vZZ)vMF,yI3{,6;:".X2JD dv`{77Wp8 b`÷Llڗco̶lhJep K_+@gǩr>CbYMwP(]h͒¸ +֕nfk*[iv=)Wx]8f PzbyOѩ\ Q}MaBnm=}er|--quZo__Ư.YXl{H<3SJ쵰5eFb=ZGdp,\$% ڞ EibŹ9r8m's%lIj@`+69yΗ}5ī +ݩm_ll}' +:%l*Ek=t} ' `+vzEm +kL43G0.^f^^}eOpNhQ@yo]mkO8|ʪ";76,Aᮞjf5 %.ZX8gj&Aס NnҟS23"ev؊Ӥ=2Q>aRa/gpn$+Әv:Ԃ_YL>FwPYvz\7и҂NI=I'Sx!lzhF<;\~u]`ąD~$c҅ s?c[4;3%Uvo#--*ISmX˵` =y:չԆg{`:2H4&Wɧ.woAQbZo㳹 beb7rKwT4:ڰݳۦǻ@^-um}#c`шֽU7Y}h.bqQcc,$UBb" MJDDDDDDDDDDDDDDDJJDDDD)+X,~A??-\9F??,y#L?3ر<_5{[]E,Xu""""""""""""""""""""""""""""""""""""""" +endstream endobj 119 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 40/Tabs/S/Type/Page>> endobj 120 0 obj <>stream +HWۊ#Gz[eUA#(UI؋0o24=F522SRe3X-%D'__^~~?>~9t:0߷/Ӧ>A2?r> +8? !\Ny\ ~I頎.v *!G8h1Apo/eV!F7GC88 VV5[VX>Up<%4/ŮI#4 6H?+ϟXX`j;yi@.f? (Ol`3Cej\șU;KhY,}-!guҰrT|C战0Eꌑe $q2Fs.n1C_WN:UW.p)P,UTD~R^"L^ʨ f=fZύ״I3Ma,A+r2^\TM2ߢ.DD,* x,L5q m!b2=#1NSd9sq6l,ꡡfd|9WK儅$hZg.5Br@Km +* 61Hx ,-֔,6^UJ`g.n@:>`atpjW­yX^*2 s(kö"tX3VF6BEKweC0He7g^hjRQ咔^fo^.AVa.a>aeyG]EǭG-ԣ`* g1 n&i22g:bʢQ$l;A ūGxS͔8CԦo>t\286:S%ӡ-%A(\=0iI^d +5y.}~A6 P)bk-±SA('Yw$RuN)[hഋʯb*5umrnE7n̍Tx(K2!)x3OeNjMh8#؊ܯ /|787\r\2SA[e1"U$kt܋ +$)l~_j@͠6fCѩNϽF5 Xpojvl$*hVƗ)UY42'[@tϻ eJoW`ܔq eete.*x#U]ZrnFv +y{'inI) LGpn;"RSuw "!0E 5}\v_]KM9ZP2vUd@3Nr坚?44ѡMLP.K[%No*dc$rtA!F-iBruN ,f-̕;p4>ob7咛H ߏMi#qyi3YcvF,Ѵݶ] PU,2p6&S6h^Vԩ1M:y:i u7= +h6Y!)6cF/[w^BM]Gиv^]P$V PJ]WkD(7wnǵL4mtfM^$r.9CISʍ@I4mw Zqqb=N=rPp [H11 x( MIVd0j>P we a: +0wJIˍjɆcć| Yţ_*Ki4_!_l{81Bǣta@,$>r=4OYڡ8gJ<<#t* Ldwվ:^2k4B5t5]{P:#a +Pb§ ZHy'>m? KLȅffpg| Ezie5O“W>GRn/ܤ 4jUv #=rdA*]|dQkd6vؾ}B7;?wsg,r8$ ^ +@K{jx_dx> _a 4 +endstream endobj 121 0 obj <>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  ]!1A"Qa2q#B3RS$45Cbr%6Ust +DTcdu&'()*789:EFGHIJVWXYZefghijvwxyz?b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb""""""""""""""""""""""""""""xNjKx{AedF$vPILρ}f Ǘ\wY"a̧mϺ[:0e#`#eSob+qİ z'}j^у) D>-E`GG~g,|kkYgM(ﯟs؉'*D/kQNLձsۍ6C-`_=MȈ2ץ\@yCo#z:""|=YUf҂@$zDc:Ve8AZ: mߩdvO7֦쪑Ki63hAe-}T3DD¹t@u6"2o&mQb؛aHa:#cfyqzfMV6 kzߟKU8=?/=xYu{moDD׵b""""""""""""""""""""""""""""`x[B~ӓ`FZ OEc&䜁*=7߷ujQqdUE tFͳ3/[6\5( YHNߔϻFJXղ y+fGֶ4v?ܱvfEwWs“`޹kֻog=[.v.=w+# =GHt|e]*>D71bWFIkd!`r_dl~٣~3Sk5WUdq[qދkc/TE*PȐ4|ƻCtl:x);{/n݈8?ugݚ57X) 9=s)j:jj9}// /QJntllMv;4wMޱ2:j)X܁C9]]{Ϯrkj)F\Ҟƾ>kuG!-P%bmI# ~ap6-TScz:mFʭʶGñ N1VĨ9uq/e]X,As 1Hd4{wRʧ+m>_I;,%ucccjZex?'j|UY=g+ +o7]Ut{_]pޏ}zL+FMv=v5uʆh"$0@I:luTY^%W"J"|lz_hݾُMVصjÐЖ+T=1F6fRT)S:]iHvVfN:PL{RşlλvejvT㡱2!!0: h=g~da_Xe\jo ﷦Ϥ˶l=t'VO Gq]A1,X=Ǝ]_hﲌ jELkEE$xJ@w}k]җ"5U»~2߈q#˸ rrRت-Lӆ*HHa>~xu~?CgO~Uu +lo 6HH,sH]k~aVF\[ 2݋qFo)!3b̼X 1CiWUm]Joz^/vߞkh7t#8kzُ|_ 6+7f[O:X) N]w+/?d+U7ܕZ)'D[=ge8ܬ窗T +&(Sw3*@?-}Ot}Vm"ʬ?F%MrU~|&'_ηqZTfffhuŶ+g-QӇD[)WcWaEitPn^S&]ĥTkQb{G`$*na UNPN-~G`돗i ڵVn>%* oAGqnMes<e>gG{d'to MB6{e+\t2/y{/׬E(qnbnkWAPQkf:rjɵ+G^?ouU1fcǓ1Ioz:mH!݄1\zZp*MWt[?)1겵#]{(UYr8[Nۚ{G3nwM5ՆFQBRPNe `]ebe.2*@#;z/Q]JEpK܀]k7,[+`[( 2(޼\!r`{ fHg8+]I@H#~g%tހ X!ϿrOk #c=XR̥4@s_>gZ8X?:\n&2/.\Όebacv'CY-K!؍Z{%s&2:yVVhJU+: ^[ۋ{2!nG}HMxӪ&G;j emEeV"*'˿n^}ss˲5ߊ6%n^vJ9x"E^jT ڛwœ `X V֏) g&h1T8t }RĬ^l_>D_)eQ{WR 1>lvw0EEӉ\{KB(P~Ϝoe.\C&G:Y(~=Fj}İn@O~7Pſ$iT#\q#hw#'J[_氪/R@otKzbv"lyp̠t;PzEؙfbd +uߖ=o}Jeƭkͳ&<= `} >o'gdceHVPBk@v ; k6(_#]451Ή^\.E=뛑D)޴=fUHKwbc>zCXl̼UgXM\;i9ӱN=u3reQɵ~lvfMRU (t<=C/+=,WW"k3hCZzF;`f \_Icb%"" ѵb"""""""""""""""""""""""""""""""""""""""'b""'GOb"""""""""""""""""'؈ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb"""""""""""""""""""@u+j}FǃRr<@^]6[LxؖtJ2ؙoLDD63E,XiބYSe`~6&H׵b"""""""""""""""""""s8xudAMX@^'}"z^mkxu*~619a篆YӺ Z*l6lx갬 (lI5nFfE5)"EERG c'""""""""""""""""""""""""""""""""""""""""""""""" еb"""""""""""""""""""GCKTW` :m BvgBX/>@twcG} ;],zffo-hvFoۻEf!#eIIOP@ `00`F#'N7D;XbNQ>CHyq}4ѵb""""""""""""""""""""""""""""""""""""""'מf%î*C`SkW]=ނc:?"Zg6ﳋ@ѯ{qIد{ҵb""""""""""""""""""""""""""""""""""""a2l=F–މKs%Mf`AP|裧~߱[ty>o;bޯecneaGa>rR'l|n̴]]~GV#Ӹ͘G.\v6Gٽ͘ӵb"""""""""""""""""""""""""""""""""""'A%o0Jێ /$^K|LJ){ ]HbomOK=lNAt{'e'0}!IϷc'Yк?u㝫[OI(2ۻ4=^`:3/UlSU5n ~Jzf0˦K[)eÐ@!԰ݯ-K-!e*mɎsڴ#;I ~lyOdoHǩRx I<D|dW\鵶54ɴɸ'mm=u7m%@XQC|@GMٟ&ʒ$tVSlL򖭛tAcԵb"""""""""""""""""""""""""""""""""""huΪ +Rl(f'Jy HLۺ=NQkUlN +jT +lp@ hI>~sct6dzX<-US~GO2s)JDP> F5_Ѳ_Z~!}&SkVGNJ?5 7߱#D)]Qw?]JσUG~|X :9cz]v˛oE`Omv5$@xo|,:=Mš[w/bAm'MS[x{"5N79iz5fkǹ{Qi^{ _=͌E҂;\>{yY SU6rq8et.OP61'*MDAeֵ}2nT#Z`5MI@(wi_FŲve"vQkhvs4GpE{_=ӧ' 쐕7q^;lu,L*p+EE]ϙ?}IN ӍM_"@p z_]b[UAG= ]BY +UCl/u,G܇I3FOo#6b"""""""""""""""""" յb"""""""""""""""""""""""""""""""""""hgVblNp;Hܾm96e"ZڞD"T$?nĒ>Sq~~߇e /eKH6oi/?<%&Bó )\ZNǽc0$& ʰ){`'+]/O1Y>d/(sV`ls=FmD[Cc1ٹ +id\;Fzа!_d|;n)m NV* srw~b5?f6/Oȳ dd Ƶcv- +ձ/"+(gCl  u"7ES3sh$-yS"qrqW*ղ@ +*xvy h[@[V-"ɕO.IM`FaPB{Aeסߧy-kYksvCZԓ*q'dtZ7϶so r5 @TtIAelY\dC.iR KԄ K=7kb{7Iģ=?pB[z$>‹UӰժx{c}DO MnԪS *v;4:WNf:؎E-JUfA4wU5[جh0 A,(d>=ϋlZTA$1}/ q@ e&u^ehL fh5ڷ(d`v?iu>_J4mk VbCwމ>zfDDŒ%n(gT {9z\]8U,ĭԐU]v1x֮\ŋ+o[,ep!ST빞ΨZނBH`$2ۗmym^v1̦õ8nJ\}Hn}KOb""x{Fu85#½xg +%[:~3{>U+[KUWew(FE:gFmdf_cUk^^]ImB)dO}]ĭ#B{?WRח降%6Siʂ' ;zv&^dpVᐚ7lyb""Եb"""""""""""""""""""str*;NkeGOz~MjR1Z1׫c_qkVSeU:lɁ.;1-+7Mn p,ߑ nR^pXuA;=|_h:'^֮,+Bt_|.Կ YcSVMWLCvkZs ?7{63Ɓs +ʓև':=tkUwݘ?@=g;m2Qi/f]<Y[tA^{9oSXq>rmrn{KgWKsO }u~%R%f + {6U$6IʭŬjl Ħ:m{Y2>"dbfE( A;#ޣ11mdrV +BZcGo\μۍUWJZ:f%N:GYia^=/Z)${u&zWٮؖlTCԜ]w$k{Fm8J\%_4:#g:;}7Fj +5y_WL,oC<3OBu<:~[ +WxuXo5%fUZظ%{kyg'Ln (;Xu02J{WVJYV܎0]C#'k+ԮΊ;6Ə3PϧSK#RKVՔ{0݇mFq*͍z5C+ֶ.gDrϴNΞ1)JT #.uF'!f]|HןЯڋpS1ɗjk냾d u|:8tp]oyFk>SGfmq.u{Ih|gMw,ǩG* b˗eCdb9Fd}0KxM@XzkyM9&1WkpqkA!;yw5߇}ĶH`6G%VVc=𱿶*MĀtus~ON͹e5FU]{$u;ȣ²GXہR.{K핖L>ax_-GҚ:UBğ@ɜ~^oVYY-ĹҲPl߰ vF2V}5vu89V |zݪrEєyA52{Qr:GO342 v y3fNՕpe,#vˏԲ:VMx%ub3ɀ +N_Y9v[JnJz'K\ /ɡ" 7E{oaTèahu߶jz^?S!n-S#"yzWOik t;+U jy!nFcdacgQkcV7G6d[Ecmc2{YP]oc=i; I)<s1%ԱU~(~Saf`+MA_VI6@О}M.ձEkfCqf>J}uF%gED:XiX vēK1&aWN0_^l*Ɉ' De{EʝQUbFU2fo3AY&Kq| ώG!ra!zQ5-uWuV + +31e~ \uį(Qu,v Pw;G8ge_ 6oizec\XlglelzHK>F΅8! =itH*S ʦJ%=a٬2+ժzԪ[ۦ;`[Ͷ{yUzXbIbO'fobrծN[ȦEǯ!Gu}i3S=g,maђsNEx=Dfcl2άh*Gjгm`t]-wm^@(Ҩյb"""""""""""""""""""kuԠvK$kg]柳:VOZ!$0[ ;<^zf/cQZvnhX]1Pt='ّV.wQea׽ v938tq |LI|dT.XjitS)|栊 r nrt+zR5%lEr\/$$?I*ϨWm؛F?XٯrM+R"KZɽEԊ g:EM_`s3-o^w3u lo myOO`xf`]+o* v)Mp[#=(ymaň=@ywf~vSUyVUdRPHNh:fgP -c䋏 ҲT1>rfu[1| +Mx?W],܋|/&pk@;f`[`+6[c[A4vܸtwI'[NU8rZ '"\ZK0 kλ3t:5jTvN(+xoݝ37Y%rU]ֿnkgaWlЪ{wORQ]Sp׽܁:gPY +<,+n _ؠz Y-w ֥ݑ4@X'ңپrX,[6 +ƳXv߶cG,[6i8 ݵϷN:V=CԀwZUvBV{鲫lyJWbzJ8OʄW1<ֲOA=zI"] +A?s +m% e>W{1 +jׯe $F\D)سVT+)b:~3-=/#?:#5+x/w h;uIPVP$(ߙ OfӭQNlK>e_w{Of_Gɷ +E梖h+agaX<\ֵef(3wcf)6eSWXDvtwE'MUU }VýN(?O+.**0f.h;kW3*;Vd1c`[rix]:sgzV+Vu˿:StK1qͳDzelp%L}?S^5*Arl@辻ou&5#էN1}O3FZTk+߽Jd~/#".lwJrV%e6[S{'}Ư/{Xe=^s\l:_LKYeU69vҍ~fnN29ѓU걬>#:?Rί0uũӱ cSVgRבְk4Bq lOy7Y H1nrt{=fԥRVSdo{p{\kY(/VoYu A +׷:L9A%|TGZ}h+@:f`{ ?O8}ǥ {rywMqgo1jJkTUUBBއUY]Yj3V}&Oeoke-f3Et _(}AI+]5QNW" 30J}gsT~}0!-;k|{36鴽E$ğA4s:ľ=lW`'}gd>>=.ZDՌJ)9懶, {af7׾C*G^s:юkZ{OUN:fx[gN{*m[PQ6}[_*GIZXu:7#-k[09;<4jcg?h6fɔ8īon믴v"" ֵb"""""""""""""""""""""""""""""""'溒P5ܝ0eS.@{L8]1zj +ȖvĝvR<7 67<'DDDDDDDDD}b +YvL65~2c)EUe>VA̽7t<{ppe#mYif]s j`ь;/ Afx|${ޏ}oIdt,|k|UQ%FZ#ߺ]'t쬛KCu4y 1'Ӆ=Z}x *(P;q؈սUuJMV򚿡 +m{ muWl[[(e;%mnmYĚt49Y.@\\w{]љfjlܔ'ߖ5G6?L}sYqW( +71ݜz}rS,JZ?vuYN|HP ;:lL"" ׵b"""""""""""""""""""ku lFT䬿 =[-J H}bRMg[~F-6xk!euUdw'瓫a,þ-.c_}klꘘ$ ﮲ute| +$}I5Qkfچo|qۅ"nŀ#~[nas㐂K638;fжB'gC[2+ nſƵr,!v~)1sYŸX+#ўQŴ)[nMө l}C-hW[[X'c@޽u-j2SUU9yj +_ fMT.ꡈ&yN]90V:f긆x9iC )ueԸןOi.*qun?no|aL^Xcܖ:` hO1gFp]AP|Mϛ&*}h%T| =[2)wUvo׶::6Ku][eWVad]Y7/_GoGoc`IGX1ōsos`wȾ)VCQ}&_I+#BP{0*Iђfkk{ʮ;dgkƵcc*38;N|w+cVUKBڍ==[K\TNEʀ.Sw#x`Y¾Ku72)Mo!_O;[UmqbD;V[u w-wC,ؔ66]5=byVyM0S-km(ÿ +-nKʼnG}UU[x:#yj/VkYzy}d,\6T䭟`̪eWuR,:'QkF˦m@؄oAxF ~%-j;mQy# Zpחh^Xʰmo޼zH]_9U-^ ˹=hΗ/ҏOj4:>my,[/ h63W[WP胮sG?ڭƳ2etF ȹddkKvסĨSn?RkZy#pG\|sG÷c O癢qfFmUBɑ[rU[eߟ;9*gw(Ö}> +Ox.C?ckKej Or {\] ŲP]nk[|2jl`nܖ8=ד# fm\ߥKed IE d ܍NObr_Ө6*/oTGŘrV L~gdr-F[Pt{7$z{6=+]ijr#dR{ 2t[9C<ɶ;_lE[ԜՔv;Cc^ +܍`hK }e,\"䬿wn}_F(Qye]=dԁK:%>@|w0հZ-g6_2Gde2s4v#e"Z[YY[rHD{<"" еb"""""""""""""""""""A<~NP˩lvɽ-h<T|w9ޕ}x9dOf~3ǾuvU|195:6Ḷ43QbIV ND9eL+NIZ>k˺Γ73{,UU:'oWd3d_NHݿOt Q~[#Jޮ?Wr|SnAuIRbѼ%9Tj_46ϻӓ^o +,@cmy"=&̖bae}\j k*\z2}un`_yP=\5jG@ R1du"2U/.DlCŠqq*^XA{7M c}o!WS\/z6p䳓srAt`vujMUh|LۜգMbۼ:rT]dø>^qMb2](ǰH $[ճ1`O9=! 2}bO8b y}Zl׊ۆrRW{Ii0j8=Ƌ>:u>Ectei2>ߪ*c27snZ E8'=ŧ/tj՛7Q)bWA|{UӱzmIE*CU yO+V­eO~>>zv[[8VVv`,A'mγ ;YMJȊ]n'CGdy3l (j)CX<7;bgH;7#\fsev Ps;Ե:,d +_X*XB'`h>l>mtR*n:R@ 4FUVՎ8%5|X{h}cی}6ȷ9.Y4-,KP[Ѓw}##gQZdxTƫ+ۄe<'fY#Mmo:Gj+FV7N.%Ïj{#[֙V*l\w܇|ֽLx'zgtŸfѳOXIGGc_zCz1H`sl>4O3zOTٙC)# +gha0rjKD2s,MNӪߋgնC{+h2{|kpcr ]bm1)ſ{llJߘϞ:Bj]8Qbxof ++kU8o?C}5:-X# +P/BMSϣbu<íYҺj{*-cczw iWL}:?/$z*RF]gc)9wQѵb"""""""""""""""""""htL<]J wDo͑OmHA].)qr''feP¤T Lj c^2lޝ-ՆIS2ka?0f<ә03zޏe@>#>zn6]#ڑ +- PJ߹.??1ygCñJDsMgIŶzؤr=cϜ%B )eҞ$lw3b`Ma%u;]'EbWClyiC|=n4N;vXSu-e;dE.[H6`^@AY?uA@rOoL[y4k9)"k YmFzZ0ߙ9Tt|leJ;[~[>@ /U @\xsĂbSxC}uҪ~} +; ]ۗvevY*5;pU@sMTzd5jlEeW#?=L<#s6XHVco6 XcVMr?) &,cX́d+q#ch +0f:@x|fGiMvi,}2m{J Vd  +@`=9nf!-a +>f}щN7? yv&>l~gSW'aenyLCCvV%y A 3F5᪣{ѱfcܝ3ȁF>?MB1A-SZYl:!=ҵb"""""""""""""""""""hg.jjUcy2tJSY$TfDDMN՛h$vF YNH`LxlGSGzI!,zjTS yM{Qm]IjaX++Eu+ר_XlU5iitr=sf65(Q*Uω^w}o'.EbW.MXUObO#\R}6'iuj2^bU!Q$) M؞j{n av/8y/[9`H9[3h8x[SM@W@}JDDDDD<׭(I w?tܫC){͈Z)Fr 'J 1ȵ^_wdthu/TO*++#*fD=.Ryf"yk]֧Q[ohd;~"`|:/d > ӱ,{*+9%;%ٲvubUN@U{,|TE Okpm."{ ttH2< [cqDR}dyVeIu,C+"3,O7=ӵb"""""""""""""""""""B{CJrІ1VR6 =se+rqP,O.$ܚz^=RG.snCZ짼]ѫՆ?[ + o{ϸLfaS)P+-P6[  6o%P @ͬ/hki[[vRv69>}zyHoiz+M cV֘L1wTw|q>FHݏ^BC`()}-n{A*YIď0~(ַq~#@ea_;d6=x%U*(y32qG3zZE2AzҐ@^H=gpɩ-:#cc2ȿ_vG]uuLU.@HS:$y-rE^+X(ֺ-,@اd{|DӮ{YB:~(ece~:8S/5 +טf6vc#jea֞ M܃S<2{ ǧlyX,*QN:6.c@(&YVUUey9ZK37Nuf-ƬuT-XH/Ń)όOhrzK̢ͷثᳰU%av{zu̿QUm{Iѱ5y=]<|(W/1YX}$N1Ń.B,bCnH?mr/Pʬ(pK{~W~6=yu*x{ P4y윿A꙽'lЩHY߈0m]hԉ==LLʰʫfw%|$L5<)(eeqd:/Y֞[m)r2Ӣ8TӍ jZ}yjeNh+ZlPԩ'Evp}&pJŸo}_TU(!VK +~DC/c`[u8ҥm,U^L:*{hy:_Etnɯ65ԡAf >?7jǶ)[R٥{TbT#ͯgVJ2ma`ӓbƁ /#6N:3cݝR5Ы5:b ($~gBlؘ[ւ#m羀KBaך3t-U6mw3 +G~1dz%/5ܬI<0iF) ~1w=/wZקitKDȹ(.| ;NFeaIZ(@Jg}[ZUHd)EC1uj~kܵ"JHҨˇ 8+}XmvBUedVb|?FzSJUZ;5{rV˶߮Zʷtd avw?olM`>(W#m]}t!ΏrM[bHQt7S9{q|sVnJ="JcLO ~N v=S^^`/+F>M-/`jUײ:M*2 +e|G'D,>_9z>h²oS:[OeH䌡GDwԵb"""""""""""""""""""h~C6Bȶ0?|QEX7a!< +nv$Wcf)迆:TTh,λ oE6{=WM"Po8Az5{17SVGmAA1:NW\T2Rkc}Ѣ`nzaˌ#hwNG?))#Rl0Rﴕ7wv*yrxrrgsBeϫ tlkAL|ikX+6P1Bb5vߟ2WרKn@m[{5zFF.oN{0&_ηUrNek] +ڲ~^"s.UWK6s`C5x@۪ԫc6Ϩ3w~GXG&E\7@'2g?ԟt1K+)tF$$~]WVmaO2!wD>Խs.cwWpI.e@y|NԺ6@՗-.,C{=IXWpNywjmϗ$) lo[90s:nU1n֫hSrݼ}??uBJj׊9 |=;:foًE"1boI-=ޘ#־ɫgwSrX2~Z\?{? #z=bc;cauCFE= W5e!+@;fKzΟo!S%~]ߴc]rhr)BʎĐ_V==zPΣ&UY P+v;mvt7%Ic kW73zaĽhySWg#[PO>c-ېR-AԎK˛;кhtj$|vF]]I([ +nInJ$zMINҠxֺ,eIv6ow9K? A{/rc" m@}{h z&UYhlB:?сYB +i92P nOPƭT] Onk7F~ϻFH=Y)*EJ.N%4Imw5-vag +PݎS*뢡|u3Ǽ׋]e*UmG't`7 bdtMIY: I39*8TT.;6pV%'Ew3#`ft3q^2+]_!YZ,R#]i_0|HCVWf= 2]gXq`5mOoMOR ;x{9yGѺ]/[Ysdhxf}s:f]hIëjF@{Z2CvUVQuL\Y@H=;ZN])nu냮r_#L}%HU`. +z;oKtd"SNŹ{;1+VXf +xl}O/!j[j.]5N6pɢˢm{6}'ARYw4NְQA]'C~{QvN-QgcTꏭb43>SUon=MJyyrm6ccF;l*YN3TT'.A:e?vؒ==/֥Ccَ|;0$tFĄŷI&WB ym ygnoN-V-ȗpyWko]̵zEfr`^~YN7RUf:%GeAtÇف=<=9xE+k|~yN|}==|1*k]|B,ԅPB{G6Va'3ebږԩo噸2X0{ . ,9qo^z |#gq t6@DJ*.Ҁd,7LkEV1]^eN5noQq >Cx"k~[:;b&XYUj$13vyu ,P|3 yOgj{sҳjspJ%y7OS2,jgMrP`zU/ ]G_o~˦ SK߹ؠr'M|w>jj0[RoAh8y!7᳔]- dfkoe_sUeT'D0#FHג㥶Qfb ܓ&J2+AeNɔSd.2{ |-MոWV]}&}bK~VW}r'ӷ5-o!y5c/+]Po[f +?93}j!`lqמ娧"[jC'8$X{~&Ñr='nNS `ɷ5ѳ؜^mkx]Y?"?#mĢcC)D30z[G~[߻aLw3uxrY*ݻqq:XvG/]ndukn6zozP7olCH_vnB7ᾝ5kSy9iMN^7◧RDzܡXvaɄgZD6ywvr.ҸSeeNوI <5rVk|Jݬ +AG~j ,RnZkkԦ&HK|OpL:Rژ w/LO@Dkͅ:1xݯ~zAwf[Dl4Fw>V}`urWL@`{!~;GfæPv$+9։ ? ZԳN̓0ןuMr\Zn:0_V/:cd)?|ޘFX>Ccgɩ4c^\v7czc|k`b>JX{'yjtttAO3(Xem=*UU `I=,ΡF;bhַtΣ_Rƪ*1^jG_ ̵mRX6@;2YΕKO˒,2H}B߬cZ~MՍ&@}dUj:R'$xu.+rXm='܆v4wj(9hZ3Zxu6bu fr+&ZJчt +2*쯨;Ip-krv +?9mZ2/ox.2+e.J{yUUR2ڴYCH~~BL[/{R9x ng9L#2ԳɱRPP:JejX>(""׵b"""""""""""""""""""q߉sUFfYkזrn!uJ܊7gNkDqٹﳘ6OYl8_ GY&-8YjT^o=ﻪrpCZ@2IOGeXԉeia6l5װ2bVHAPDxh3/4.F_Ub4D`BMw+쥋V^jU Djtl*nծ|K8v#kb?EB(:iK1o3ۿE520闃`SXOSG}ޟ>u Whؔ| 1Ӻ}MTٌCUPaȫ6x; \< ФIֵA󘽗\/P;.kdyM=s +*G9䁳V=Ī䟦Һ^6"/Үb۬ B2}7bl. ves&ŗ߇~_Ǿ9oV՛#@ߧ/C$œMwjFF #?-H?c([b1MU>t j0Jao]_9p1( /o/1CPЁI׾ȱDTUY{Y9߄DƶUkH=[jGNdt4!͸ZGU <=k{m#L,>ӸWZ]~.*`;#ΟsóShJM){q +p䏵Uctڴga1eP3r+7oR`;S5wglEV84Gscc2kXm-~|;T37Ki3kkQwր)NO +izبq0 ]?dK:Jjc@vY_+|8Bg@=L*oI .B u{-=_PڱV0`{;WS,"_cޯ͂aj}w!Eu~+R^[@X "O!ŏg|Ur1˾pAʠ{P%}LZ2V.1`9W@p4F0`O&7DQf%iKmaú91w2w$uL:R^ ~3?x#jԩ7[mzy:3/8[(~uX AU |Mеb"""""""""""""""""""F'5eT3lE7ĝMFc'fG QOx]\ ¶X:o?yS<َn7ځuMoϻ}/Ykƛ{̇bǏ>MkZsaa!|}I'>W +W hQJ5PXq`vN?=_g$}v,Ėc}_а5v$#l yr:V:bCMjJ +@#{Olc3*ЩPY)S!AOJƦ[CsVb͏Y:t'FN>KG0W u:?voP{F9vٝJ{); oL55|4 +]2~$}bf~E5cBu֥kle|WO4R̎ H::8cS^oϖsGNjSfw'$幵9lNoPa%i!_{ (}{4zs=jǢꨩ e5\؎)ZI&ޖxdx-ow5&s̔9v_zVXE2^m,B1:ҞP ?mBפV*A&/Inu&@K3qA*''3wO5/VJ 4c+1>+,;{ϙBt%<,Jk +G9h Y>*PT5)ŷ +).ަf_mJր\:]}>˞Ej6Zf;=ޣuN6/;;."׮\;2,8ܮɲ  `=f0rX6@ޱ4>~S\lnRV3ruRY+NN%-P[jf*%A~O>԰-Vm[]lĢ2+5::[M·n ,֨ZcƵm.؟a$/'UԔ~]itgRءl|էcQbE* ̞;0{9qGWLYan ώ*8_Fi=p%GiӨuW 0C+&VMZKW'BtwŘð=$= 䜾 [+~,,l1Y} 1)_ jx[] הͅӫTkm 6=<.k)N$T(c[ӌXԺu5ꔲ?x.p?3<5f}VBd}U]%m`r-:/5icCzŏc I eP>ZpG~n)ıH逭 +@ .QPr'J6tibb:jU-f5)O{бrmkef>=a49 7n'WFZի VQlZҲ@# K,u e5 @|gpzvEEu/;l` {Vէlj]'9~bf8A  +]lrBg,JУ~,V[70yr>Dz5Z\9.X ).Ķǧ~ޓ.'K @İvK$1,L& RW*_oI{d"4Ǜ'G^y 3_}aא``8=*.{,k_Ǔ@ߤ݈ѵb"""""""""""""""""""a.KYv66=6&hK2W4vTyul^UW;֎뚂 .ǦDDDDDxkVJ5ϴf+3h$:ΧӲ-Uk ǎOYɯ]Us-Fsj?ed%8k~C{\=Zk 􋶫ly\M=lˮk~Fyz{0]os^Af̝Mp }.Tܑg;&*Dm+P~b&]nb\}Y`ā˾iZ5kհ12R%7R|z| N(t'@ws iUTw q$řn=W^;,rԨZY|mObyάCrE~Z*kNgkNyFr\@FwGGS$D"" ֵb"""""""""""""""""""""|]Rލ[)R> 1+1獜o:v~L9Ѫ$ydz8|;7z[#אNf{AnLC!h|俳E1Jⶰ(PRF߬ʠdՖerF(wq4]Ξne}u;zK@ =+պu |O +/,+lWkdϰ}>r6dPѭ} +$+yrDѲrz͕eT:[ºθw:C[=鮟S, +?M>@;_y/JPf~]԰gˮ.ʺJ.Ar-LYbcXMy>PJŀ5v[z]'7OGp}᯳SoGAN^MU7%,GeVua:F#Dluqr(-ēY + {|$GĿ-{܂yvhy 8o`R=, s:MmR7;!Dkq== FʺxՋ7f7˕e=,K;a;7@0G-@:H%o_'A9L7W˧Z}^ڵ%`yYvu:Y*\A{ooT0$w=̳?L{8+Oз" 鳩?9,\u697VXNxVv;Sv32u:,ŠznG2 N]u%=dm\W373^Fp\k˶jvFC6Gsk>,k(ɳڜ`CysU ZקvӱLnbZD^.4<_]uP8>rGwD_:tq{fb2l +5t?t0[^ĭ pgB{oa;Q#NgRfʽug^-ʤ#ּV.rG5rܖ={y M_&U؂@Z:Dh[<6͸v=W&=cAǑjk!gY(SiUѫձ'ՃȦξ#6&V~5e^9|Ky= NW&G/Joc[:MU깗/}+VXʥjHI~])ӟ!k3(;ڰ2RtޱV Kl".A>Ay v7`z^aUbGf'[m>: d څ27Ajo}=s݆5MA+ȥ2Ff[4u}=[gwQL;F:<5gZ/y&FGwW9"tZ?x{zzoe9YOz|3omN\[>DןyDDD׵b"""""""""""""""""""""$f?Bu߉}u=Gн:u1'>gG{2~oqVĠ ^Iy؈C;L~C@{̙ eGF(JSx'%w彟>>]6eoBCJFq=E2YaѱkDT$yn\k|Y:;65gRms%,5(nU>})2+PM$9K)m{?&u\;8ŊJ~c`(+u_'*Tڥ|$lhc{#={ctÝ1M#u:NXȢ gSg=OQ7|#W`˾M q}ʠ([,g]rEL>$Oq|DŗUVV|&_Ǵo7!B2*Y1왳:BuaC$AfGVg[]9%T<45> $@#_]yXwf^2|HT r;Gfoe}1m b TuomS>G@/*/&PeXB}=Iw/`׉mFKB! qk|t>f&g' +*8g.EWƾBUf%4wBL}KVMYt[ZYQ<$$w|7ScYǫRG0՝mllvFυ҆>EvuˈP!w lvN̐ l(2iJ]r\NӦ ǼYgR=o+xaC0,N;O_e. V{Ѳq(*i U .LHwWnM6#_A;w5O>eW۬XݳnDj}g fǽ7lUU&-Pr ^e:: :\4 ﯉:-= +Ӳݶu`oJ>5WVZ,])WB6`u}7FŶ0o ߛ(r4Ξ3)\O{ݰZ,|^\^_'yOѮʾn^D5-h;MȀN042.-(+Z'AWDt=3[ѭמoZ=k_ǃ, ?=99 lm뷜miuk!)[!콼?lһ+-(=s{jV =|y%x-!S[xShnhoJ g|{6s2mn(֙ 'Zb}A{|ɠ5#:G|̌|-BګyV< #Df?g>٦fؠFP~C} +O ++HGc=U 5s@C]}DDDDDDDDDDDOEi#`S؈T.b(ѵb"""""""""""""""""""F3rA` BLtSi1l9W5(jY|xuԴ[Smv_ie_ ňn]ÁN'T:մ.Ia鹱?QX,`t*6̑6z~ruVq ɴ{sR4toX!e孄au.lrUhY + !FO]Gk?_@ֵSijvwZt [}P;6d(k%!$$9%Uz+ ; -p['ҵb"""""""""""""""""""sQ[;5F?[8?5RtרZMd(l{*NșU8k˪+%$yH`K:M5 Y2Zaـk}]UOQN#S%d.:3/a9_m/H^MAs!A*;:<[p[Z܍+zUMMPE$ ėXӍOM+x;yyץӑ}:`ecw, +!ޘ7GLL:jRj(g's$X7s0: a%:UVձp5XJSbr=Ѳ}LO%zo[*Em[DW ԁ%GTj%wSg;׿/]l ݴ=Đ؈ӵb"""""""""""""""""""'q|_Q,9/f:eؤ>E-aǰO9$Qj4#ZF<j4'Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb""""""""""""""""""'z |i?^ǁ #X_潿cx浿cѯ~IǵAo$}r{K#i?UO9x^~߿? Gp`}18G^CQi~?R??5/ǧli?WO0?c{IW~<h_hnj/-Fz5FwVק}r:Dk_OՎ>~}=s;}wخhMDllx6oěz?ܧoGOv\s_?n6Gc'_w;`wO{߅x7\z?tmko_Oԏr{K#iUpx_w;`w碏h7~n65ֿUoGOv.ߴ?nn6GcrG'{+w?\G<}-iS>G#:#^zqxs;}wخx_[r>x=?>G#:#^zq]?}=^өZl+{.o[׮32+]XAOumNX8Gq=@`S؈{<,>pNP~Pzly皓7z70${96'BԂ'O7;DDDDDDDDDDDDDеb"""""""""""""""""""W^`OlUYm1Ps+00ݔuEx틝md)TG@6;j`d(_ +# + TMkE&_fVSmEIYTr&~؟P>&uׇSa∌~FJhRuzCCWK[5̻0ߑ@{$:N)bOt6I'G"19>9cf<ď^/dIxtCHNAvF?B ^#Zo~$:{(ԑ_*'%emy[ԑUAt.@v={[vNgkN`i!DyL}~.*V醶 ֳcmPk17/IR + +7뼇}'/ + 8%aOB6"~kv +@ًʭ]H{}ekjp pAD=/unٔ%NMhj@!wz ~vJdϏ^e(ڒ}M^?Sͪ\:U~H6ˮ^]*/uxa=Gk!@C2z/].VKLv}תޛzXh @`dv'Q2qnK ʰ%lJr= QpqmըXV~k{[UgHٹluS3+/2iѐvO!h{+:FMTdS:(m .Z翾m/WP/2)K7-Ȁ{OuucknZq&jtjd2c^]]+[c"{I\z:TR~ "p9F-Ev%IUb|%kĢ̖^)T'LF_& lp"ǦrUNH#G`}?XU V +gWS[# ]o~[[wJ$JPd%[=aFK>E̦qzm,^7Cr =C*QnZ-B2PŻ[LKvUy5Y q#e,}i\{)bUxm:jC}MoFWF^DX7?!?Tݝ ʮ4]H*k2ZVx7L)8{E\ 7j&+'yywSY5u^r$`͡'S aўދjאn}C2>xeA#gcc6qŶ]]7b]I1V&+Fڶm9}"me qW' @7>5ykSVZMdKޑz_<-x0g_tfkh'!k7_rX?=NlNFWNJ^v}N};f^OIv7.UM?jqsuFgYSVm;~{ƴZ#!a-CtH2DDDDDDDDDDD@ѵb"""""""""""""""""""q}_{A^8bTy :lG[r,6mf$\ucيɈc+&¿Q +5{;.(7sV~:#RSkrUR օj'n/]udWY~5'2nȮj^]SDo hzIܬr6(j&E\v~;Hsz9(QaC0 f}u^t=چkND*,쟗$s򫩯7_J)PnytwŢ ,$X(v{2 ;%x7W ůz$0-Gy_MXKU +Rl ` }u>-b̪XH[?.ӺUʿךTPOi;W6ظc2V% UWYo+.59^ mga@9oy?[.9U]v!D&=Ez&@y#u,+qCV+etar@,}y~sdZxC^oG6{3BTu+-Z:빓{oZrzq]pS{z)]XV_~6VO+ٮ(.6wt5r-})c?#8/f2p1܍_^>v/$Sst :v{^Eޫ8Ovz1uދgKr^գUl[]9k,k$W}]N{p(j߅xM` `Xh{cgAѲj0Vɱdڑ;= ٫,{sa3Bη34[Ǒ:}yiW}]MjX)?:fmQ:[ыelԠ2{yL=CtwSp(^#Ju=V;ZqkBlۙ2z~eQhLCK?$b[z dۦuu_9Q}zyo˖~'wMY(͢ۮJX"VI0gjN浽KnmO"ulߗlb T  AtgNec +j vB]hzW.r}<^WyZW9)8FO'߳z/UJech::[`tԯI*{.Ñ2 >|q4>g+e.'PZ[ f%6ۖ'p%-oNS{:qsG9Mw@v߽;c8\ ՍUNf:T ¶BHHn7Q A²SUѫ\0n-ɘq4BcQL+NV,^hNc'}web:{ lNJm>[׬x}Gdۇb#wY,8nPOgN +[ &B:;r3SVg)ŦQ+>@F@w>:eV92> }']䷲eaN]ClJ«bA G'" 1j`pӛb ̼Bw{ҵb"""""""""""""""""""yj4#Bj5O5OgOb"yQ 6*\\)F~QjGNE[TK{H'19 Z5}VbuwԘj5;`$O/%0eaA?|j{ȫ$StJ?޳1J@BH>=_46~h9 +4d%&ˑ}i}556sN\MiPOǴ'[4eY}`ԔWmO (mԝԁ6c*{~I M^K/U*cWSDR@̞G9jlGzckrjcȸc@7>0~EWeh|9(:""""""""""""""""""""""""""""Եb"""""""""""""""""""qIfgr줪t{(GI!p7KºŜk~;Y>R?hȿxk e(+43s)-F:}}hBI`p[k-:Q^.O΢?}3c]rQj\[G 2+tB +nb]Hg>UٰXTTGd=Oz`۝POYU ՇG Fܤ6O.bvH彖quf[_ +@fpN>ݏ|;0}vj9y|*F%|}*%Hz{,;銎GO{?V/EWx.WJA<&ku6gbc'ÿʝvRWߟsu9Zu )ى>gMh(]zmKRϾ{}fP0CB?y^3gtUX2|?;ڸ\ʵX9`[_^$%obߧҭ%$Oq$2*ũE;^s!}ȮމhP@`H#}u9wq=VwԂ'g?G{>ڝ&:Y]j6q'Redc\Y.6[ع5YJcfԽˏJo\'˿~R[mصeoZ)UOlM9<_tXc#k)vrE~cNQC'㭝~y2ZC-PZ)jFދC7Q}meJQʼn$ >^s]Mn~׽u{ f.ur,T?SȰauhUoogP6yF˖ΕG}06UWqP*}GhVDUv[@lt; ӐɕZfmq=xb@bek)%>O&rǭ֦ ++bG .[=f 3܅' YEHNBvF߬%Wv(TVyov>}_8orsb""""""""""""""""""""""""" յb"""""""""""""""""""`l,w$HI;$j}WU;((> Sac h9U.6=8kR;5϶}gUrtVр#áCRXqoNŦ֣DDx9k[88hԆ4篇-ngWw3 [["z1ZcהJm!R%jTh*yn=wX0ƨW^## +EI܀4yԊQB='bmfJA]}8T^#JJTPy4'V:>kǪYTBjdkŮ,WMgGh~a3Hh?HtuPX*{ ix)>~C?I\^%SP%5v򏽮1'hFWnl &Ijkcs!B s^E9X,/FG ˿u3LэcRҋ[ NeFً:U/fI{fJq6V+7ĝMn~B\25$vߧ+[UϚ)Ljֺƕ*@~i"'DŽ뾾Oֵb""""""""""""""""""""""""""""""""'DO5j{Ob""""""""""""""""""""""""""""" ׵b"""""""""""""""""""yOby=n{<DDDDDDDDDDDzDDDDDD{DDDDDDеb"""""""""""""""""""r?R٘7f'kR)JKr+6@}c)2"~9!Nذ>~&"fǐoDC2:KJmy UR +[a?|\w6VWyϊ:O_[_qun[GWñ6.QC{̈t}tlnU6|*^%zzn}Uo\9-5?ne:Uf +vf<^̔_]X+#mD,k}䲊ӱ ɫCZA lwOhȫ%ydmH#cvO*kk3y)`ρ15)75O}hp7 4U "<1F[@~_[[~^saz3#.d`UHC_9Tb` +a}ObP nJԗw=s7ȯ)ʝ]Xl2~&<~-J:('FQe'/,Q+pAn\l%յAdV`fFXr v|_qJ,X?qV j .J[ȝFv;X*sב{A +nM 5}NMY +ZW ~'SZˋ=v*pG܍33r`Z31'C@nF]?[hWu7aH=4v&~)̣^c쁇-723ZNɂ^~ff z5+V:җO#;^5/os=̣SGٮwXL«ڤ&2vϤ>ǩց/aHfu 8Qs@5dZ={ r8{+p6WlU'bJ9`}$ODY)Z=(0o&W8XXm(vǡj)LO.Z'5c>]+]ޗbݭœGEuLǩbg9_f{oPƢS܊ZR7.¦]1߅"0G:3>9`Q?7v$ +}(p b@<>庞*^1ՋH윇?6 ZB!zޏf$n`ȫs]ymyȼh~mxw[Z3ΩU_3XW;]pU &iȫ!锆>1ڏ #>za0RC Z`Gy{=~gZ鸹uR/IN1q=F깇 B`H$|>ٿf]4/b(bO1O^|yp9S3 +V_9ѵb"""""""""""""""""""q994JkaQeCw.2'J"Gd&F$voc5tE_`w3f2.Zqb}w"ʰKm+ZʇouY#&Wg]ʅ}`; ߯g߰YcFZG1|=/_045>1n=z)e lZX|Ոk`^.+Hxæ-G毴gꌢϤnˈv/98UUlOЯ]hӲSұɹ)=΁:>r{ctH˖U`og.G}nWWNv6_e^W^ڷRGrlYk&A lWa8z: 0&-tuENOpܴc$U4_k VQGy'mw,|z达U朗 [HtluMq] +|u:BcaQUv]ƙ'GvחR;)@}Mig-Tn$d$fFݸb-t[SkJ@=2^&U]~Y_ On:^ueQem7+k[2{A2u}~Z 6ۖ]jD2zw>- x@[__빿׊__MG#X_ mQu%wPbVV/P/W˹(a塹:>fRTe\֥֫MڷV,68DZg\|:^a  H]+om{Dв1:u*"lO4Z:mXu wUvUr$>\°יuy~3X[G6%Kmr{u7tF !@hpצ:8d"ئ@쟔 *~ZN5 ogԀNTtuwu +Q]?+`K]eASOo?UoR]UEJj^%F =IjJphJ{UjP]sDXlƺ*NF-,č+LuҶWADT1u!߿1'S \k,] qWsv9M:(yy=fnEtΝh#Q͌LkR*^l +[I`4˗cb'h_"h|}̻# +zsoV9shIxXVb0]N1BY_yW>}OH|23xv2-_"|rǑmNs}{*/{a]YKhyaZ*6@{-JTP=I~s =骊Yn%Ao}>sw7_vZPGOa}j`9uɝTև ͏O3ӺK}=ZR Zo|}L,lӜ&aV$݌@ ']Mz=)?tF˫[un <p#;?^. NCx<9ڜ+Oj̩.#eaA|՝EY .mw{fe5[],=/o͹^m8?cyG[&pvdr,xzgL lSr8l$>㣯˝^6ZT檠pM>Y E&n+ؚV9&Wq-NNf]TwCd~)3t.vs;#'_ *փ*mZW}Ђ7p`RF|:?d8@N.&9>P5r꒭UC5ڱ˘G|;Ł qǏݯIQ Fܼ=o] 6G_bk'!|]\N&Zzq-02$5mBc3zL{p2QXL6݉׫~èTX'E|*9otUSNNv["RFQfTGKgڔ@IyS9?b^gKnf81Y7\-]OSx"orBdRI|5ud߸_=+I+u .V֏oIAnzlt ڳ Q`dnFXI닆#[ ͚PlVȳ:WjUPD5po]1{2V͉vIYYp{|'Uҵb"""""""""""""""""""a)mh|Ք0?q + OZsÖ>ڤcOmEpos`E FߜSXbG"4[C ǭN(;'z;5EB\G/=z+E[_Ǩ]o>YƘ< /44>qie*kR F^s꺖(@ '#SN>h }I``:{3k^R#d ͵lewV,ǯ +[^g_T 8 HWd袑ܝj}=n"ָ +-OZ*(P@|EwX~L>h'3654؞݃TvA#>r(t7P|`AhLxt/ +kJ{(Aok#0rA=ENϐ3`Vس'̑ +CzWC~zr}]VB;0ё/da +`n }7s>p1x%N% s񪱃2)+H(dT2~>jǢƶQ]**H001ž8.u 6lyyϚjҵVoBOG_RX~=kR85¢u"P5?!=Lj;TUܞ/ɎO>־!rkCʕ%[o@ iӵb"""""""""""""""""""|HI祀1֤k<«Wuq3jʶֶ_{fX M^C-mңrtྀw5[#}5mujȸ+Jq6$llyY_P G>h;w 0`HL>2x=4 +6NskǷ"äv?%>sSK0]ԁ1ٻq+ywLYO!tʺS}-Dk^l4 TC}'P^8t%7g [EmX Z`<̍Q]Հ^9lkb}=M222l]HR:5^iKMnAxש$2sk&FYZ핀e ߿I6#q؍zE}a0,$8('z ߐ " X:`5['bNUxj#E *J] |F+R7y :wVJT1艹TrWgc}?u&qǑ=*#3fC'WF6fEjd5`%<_ҋv֎:'NU[]0vh*{;&==ifUnhFΕT?mljzmsTF>*-Jt#t{Եb"""""""""""""""""""r;L6ФŽ  fNZgu,wbuz̔"Ⳑw 6󑲮zQ-@4$^heɯ+]BVԣ)v!H? :[̬=tPԣ ['D޻}'=\oi$ "(?7v3U(^*@o2vH=?p1.ح}*,N؏-*]kYQ25|")w9; ׌՛R!Ijl`Gp"{yzInrp1+%.nvL ]os$߂ ,Z0ږ.4N}2 +Ϡ&bpLlY@vqc+[:MkSՐҪJHަPrsR-S*V +:>ޝvJь hZIW[=|揲ct{쮱n}u]/sf$}=Ugњ-G驿kun]9tmyi+{.Ϊv8OF5\IvA6MF&Bϣ7ijJ@<`LeOecujcAڝ^Ng|'~%6y@ٻ7!y=+z%/0Nbwwߜªh\^MڨWz$G9vk+KZY|rj vN<<[[KqкZ.@XN>/V- U:;>C ӯw} مYӳY#G;I{*QkżP#O90{~5O{T%B@5儇j>9Z5YMJ#h𫂲=9"}' ?uýk?b}gwMKB* Ҩg0~NjmXu9B};$Oz]X*񙪷d{<\L>'ccYkキ;WuOY5ԢnpRm*#'/%t[mQ`&X}F\ΝF'XTU Y+/1{D<鵫q~.Ei*<$}I1}RĪſkYνc'xt/>"zf.OW7U-c;ϻ/]qZ?ًeMN+,$."ϴQ|j+ ek6޲yXh1[ڪU&z¥OU,|η,-E趵Pjr+ +m{>sg Zwp@I|ΥKcz}RJ!|Ǹ,wyB|*kuZv?]vEfs.fU޼…'^[uʲ+nEVk8 +g^a51:)$,pkcz>zϪ|ocDr7="O_ ;;TZ#}{;ߦBkinSTT?UwThH<K:MxVju$~-߽9yo%zWU&$ܗS~ј̋6ۣx@X*|ެضIS*~GZ3I|9f,_ EZVCatGosǾ{UG*';ybYwS>5|!$6OIέٱn| b5g"vlR>[NC#cz>~wCnXTJI66;';~֗wU¢VkZ;ahw#Ctxa.i[+)ޙH`}<%YU(tJoDzv;j*l~]DD@յb"""""""""""""""""""ietlL:n>K#:{ȥT(@=H:yOF/p|Ʀ| @ECf/Ҙc>עa&H(P<j?#ӓ)o?272S1&m> LT,,{d[͸>l|A;=TR\w`럋|g0bWQ"W_-O[bFWYIF jAlc׊*瘳zexvLոߘ ߎq^54֔޼{u`TҼQ|y/7%I#~cc]>N%+ԩF{kZCR,T(i/m h ]8BI߇߈>{{ba-UdxLݬ#sf-ӿoI--(_ lPwdzszTA7횙}5͖! @ U<{gDWMԆJ(Uז;z|&4:-h4ds#4eG;rnL މߖ&JEлzl{S;'zO_YEX ֺB<בc#ae]^URCU; ۞gy:pfW^;CSL3&ڊ\ hl߮w17FR<ؐ@,XgՅVU +,(#z(а.d[2S-ݨW7b= oðWuFàcI g}:l[ۖߞ3qj؊ʮG}`S<r~NM_(x_˟'-}_|S#aYe@qݔ?@z$W c1z+ǓXw$/m[J^64GML~KBv~\N!06. vX/cHg${:[X +͍>?ǯ. 2ALY=?-U,@B}_1ko +h F}յ+;RJ)f5>eP*NJTp>m]vL=+ LŊ7ؒ~ȍϊF66-ҼXm;)arwԩv=G4 {`yoKW怡 )Tw?lƫ2WGRX|3+Z" 1ӃXִ>$kŪEV 8OӫfpU-BWG>C1ֵb"""""""""""""""""""ynEKneҪƲ + +u^REu;8X*ok %Zܐ;Mby}+zm?0A3II=3%EG6ܫiĮZ^gI1]oꮼs%FHOK|{lNV7ۗ.d}[&P6XQli[2Lʖs]1Qj61"-1jV VX`Lֱ+ʭJ +Xݎ=ǜވcuZbKx!ֽI#K%́nHU$u:#bJ`m_I//x^&<̯F߿x2.lEbao%1'khz͝!3k" i{C.ا*W[`DJnk[sZ,(Kt0#G67:qj6+X!K=J޵k{H6<{q21 u*Ifsn~0zkeeQT=NLG'* J#t'R@:b]q؍ϛ q<5G[޷פS9jCaYTM{uۼGSUr/9FI.BCE|yrmĺUY+x#Evk\6na2kmVpq DǍmk_Wl[)%3)VSl2n{Gj0G#l]Elh;s*@7NV'ZY|_3&Y5 ];AK7?$+fDZM#:`wzuwz(@R>}WجuZR) +{vIܟ,:0;>1X dd{E< I"?/ŝ}puN.cwfxX.E5(yHe{嵅{`[mw2hn 0Uik0{ZF_<³ۑpy#yO4:Tdxm GwbRv$,|O:Vp#K[]`V]`{:Ȁt}dzf`$cZ`UK +FQZЬlWl,Ht߾7cB—œb'`ȯg-һ8nɘ|nۙtޅ_TdT[̱%"zקb $ q7U2 $clGߺRG;fK d `:Q@7]ձёK/gV~EF0G@'NJ_ƜZX ]b{^Z{Gɩږ #q/Vӑ9i5T^Hhg}}tiL +\׼(CU8Bֹ{ȷ=7K+So̧[Z"R { $|utUqM`WOlz]~ +#V +XV%An__^NS;!t_~!׽F35>KqnW,(oR3zE9,NEe t2Jc#bUXulyN"""""""еb"""""""""""""""""""hEv}ߊ>8z'_.{9R5d)Շo{,= 2t|j`S0~lv`k.(j5~#N +߿i#MKB*.$ 繚y=.'`P^j^9}5qo%|:]͌|=-At^]\.և̒5"WpU}cUyOOV_aR)`Y RrNil\+Zꐫnyywm5؟/I[ k,R; Ow\C q Y`77wnMeȗx֏0V'5>)•$cCdIQC>bېH*<[ Co.S/dN\.3jbI`7;C/*iev7mH2?nK$cc]1GS7O_BPojI(!;'`hvϼދFs kX.\޽75@ƻUQJU+(LG%e*4Ac:" l:q/;^ʰ.Dͽ[ʰ(r<۾ۈbF>Sfl.r ?a塡[G@$H #`ȆWVEU_#_gx+sTHv^ImwF{qzWj̄;(H{_L7?^kϼOT%7ە9 }I~W|}dwTu-McU[v:1#+|nҭ6Jb-vXmo,bZ= /OPYgw[Fp5'yoEĻ"BlHG~ !ZVx~b4<2tpߘ6;*Ҡ`'[gů6Ѵu |Ǝ6{7mth;x{H!O&oJg;>ן97Hr&Cdy>sg+)`t!7||Dasx[D y4u*_!Lߧj'JcX8l^}+ -;v.vnôGx-j~#o{I}-ֽ.EWeGֆA$ f|X20R;j~&.ҩ>~AbIN'} ,k!];rnG[f#a3tޙGIQ +@>@'SgG-؎C5v5lB@w3j +T `&c3J!@xϼ׷ټ+Ww?c,_X`>ETT#tGf^~]Ԛ-Wv.}91m:#Lk/!*P#yWo}Wi4ϼx+Ŀ떻oSNmjS^+rlX'3H5Xi-Z-@UivHQlȸ.QI!@{ѺPB@,Ȳ@v VmOM +"^U#%m@ 7cX-ni`^3&7}72Ū*$}JxLǏ^R +`IGG]2DDDL9YUVmf;μ>(``k%* ^Ma7k`7#MۗQMVkk<qnܾI5<&nmeyM᢮1>@ O_=l@-~ Y>^ ː kRK/Pee>a~>l#s؈յb""""""""""""""""""""""""""""""""';8+1kd eKg~3ؐ~dcՋY!jB݇c@f_wtK9c: Iж(:QthkX Wda_dt^gK`=^avQ}ɉ-~OJX̆Ei^AF~ɅR =kC_ zH?f-dTܘJgN"""'ˢ +Al|ƤLn)ϸk6:jd*GIu\;sښ4]T1רYj2ݒP֕*<IDDDHjj~MmMV=<6 7:Mn;$OrI@IsS/K-[#vT#5_:@W!1r'|{޽57qkìW^7I$I='fks7cu1EVp]v +;|~sֵb""""""""""""""""""""""""""""""""'7mؕՏuke"1=HloL8A3$Ng=&}T Λ"x|6FV~{gtm}u?=zS C{"ŭ$ ~m]62.n)Zc!9+ɩwk#pMBy ,g!Ww\,*2XUJ6@ޠeB]vPB{ȮGV yosץd|k""t>uUֱ)ˣ|-@˱=?0FH=u3#eIDtgGLvTUFr|%'еb""""""""""""""""""""""""""""""""hf3`֔YWKr%a=}V[=|]㋣5#f٭O3 $- -_-C:;a)7IJG 2,wYVUEoeU,9:h. lN]gy| 0#; b? H&lu|:Z2*{AdCψX /r˸d$ڀv*T0?x2@>q|'PҀ ڐ=gAj!}v,;Il1xV|E-O?i< ˓weoq@av>F`>x̟!3Z22HY·7H:ڰa#C725‡@.P)ws?u<t/ƩvlGM}uIkAً;Ԏ鉜T'Knk~i?FWw洛u($ܞ,Z&YKPĹPμ+4vx5nR`чF}^67Kn#ͣ"˛;$.-XU%4DE +@52'@@! vK&Lk-kPyO]D^х +p*TnH!Ə};|DDDDDDDDDDDDDDD@ѵb""""""""""""""""""""""""""""""""hf.Mtݼ<%*7cv+goJ8Yw֐ +Q4z{_B%ؾ%(֢P '@w>gEWpzNeUqG"cjJX UG3܁{H󒘙IXbH4A 3Du 'LP' {XX ?IJz/@U}$&N X p}E~=z*A5>17Fc~,DDœuo,4@$lzDZUv! }OJm?DDDH1m&JJFː +̒;MOfm.ձ~ƴ?0s&ϴ7 |F=6mC2,#zNeuBQ_FR%VYrL~xtq]V~mXb׉.KldeƃC}f3,γU e^)Ӗ~L++$u]^SCYQy T9??It+YM$Nme%Ҁ +; ɸҵb""""""""""""""""""""""""""""""""EgUe_Y7 +WOo]vNNҶ\0! =/S~5 +zx= g=|EUחXCrGJ*7ܖ:-CZzS̵R1jc35l尤o㯌SʱQ~nM`7&$G\ǣ7nf$(+a*1>`MڮV#cub;0"\ZN믇+%1*{l:TRI?HoQRܪκڡ}}3zTYrj>˴J0~[c9 x Alu| `ר@~FJ%Htڕ:m'WYzuUu*+B6Xc9%5RO⥘>5GATY^w;oS$""""""""""""""""ӵb""""""""""""""""""""""""""""""""""'{DDDO +؈zYOU#|> JǷ5=꼟*l7aF~)F(SM%lk-<6j_\kR=zkR]I r:o>"""""""""""""""""Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb"""""""""""""""""""ifu\f+x|΄ʝC6-U_nCm[b"""""""""""""""""""""""""""""""""""""""""""""""""׵b""""""""""""""""""'r_vUC*kk!(H%{mH3ё&Z_ eO8:ea%zV+Gkľѥ_OJBl*yV#`k^qWWRcՈ+ȵ@'=C~]{wu{\UY{UP,8Vn+a_-F;tеb"""""""""""""""""""CG>K2 + v<^Z3Fރ:vmhȩK;:U:vfP-,n߬{j[d:YX|;]|.Rg.~ut +5zGI5Ո1aVr;k|[DDDDDDDDDDDDDDDDDO7=ѵb"""""""""""""""""""""""""""""y=Ea.kώrH;:~3uj~P|UaϘbiytv&_;M׀耎 mT쁩#zeVڰ$:LUz/qk y [y ;DDDzs)O_JF~j|=A`k*k\ϕfXf +[aT:̷3#c\1iSIˎ}z=W#cDH 6""""""""""" ҵb""""""""""""""""""""""""""""&,tʬݎu ܈9Λ[ !|l H; $O МϳX d/&2˪;#'*vusdH{( Y<\UJ$-3k}ɛ;ۙk51E+X{\MۑL_Msw? r?`֔z¾+hg% ;׊?$:( 5" eWI<5['RijmDŕ5*6t ?pɜdsR/ j:We_]K3:(-Vj QKFMPU W@'[+;ӵb""""""""""""""""""""""""""""&lTma eR~ Hodq:~(5kX?;YҝOć3/0__"l,/?Z5ԧfDTӱdsဉ񓣴39q6 +f1]1d PHt0Ӛe(6*h<ɚ>qxHv415'D|$lw# ĹTBN'>ժf84j~K=77=Ѱȡ,`4 (bU7*`He  +>5ƳUw,wm -{j'~%Kl5rsja:W\ܟ@6>@Qɫ0<6O!D-I~QeȬ-yZGX"Y6;w7L-ؕS]Fқ؁-g2:1k;v3kAbdoӛ! Վ%$y'"'s/9N-*N.]eWDDDDDDDDDDDDԵb""""""""""""""""""""""""""""`̯\va@OM.\?Gi P6yec77'%ߏ?ƞBECrmӰ`^S^K~|_OљoVu{ AQ5Ґ:޿Fw?JLBZ־661oM;VX>jkʹ߈~x¥ʗﲀywx8սX6>:&uOzQ͜l?ؐlߠw7[nF=6SqžkE~'0)E>ܐܫLC^ՑG3cVM=EH.B]Vîy7[s +uTBy.;=y~mX [u,p  6~->Υ^^= 6R4 kO~DGfM7.eyU[f=74 T޻wÉUNaN;;?Hy+&bfmzl)'`gŬʤ>zfe$b@˸NFAav9ZrSk k|U}U4?D5o= տՉDȣXq?!K|xYܟY^ӓf>%+sRm[Cj#~xP` `UYOR> _|h#Zn l>G|E9%m +k}ܚ5G&_\*euc #gC`@d-+a-;n|UOxUhȰF+>_ʙ0dgWJ?I3NzfE-ufUBAׯqfU ^JQ^!~@(|vѯkU?*kHtbv˷#t~RZV(`[N/MYBƵ-ob;yv$Oss+YiV~F̊hijXY6*Wb,my 9z]ܻAaZ3q]rm nmQoZYUϹT՝̩=L7o&}_duYq@.:w}tA[9ֱGd 49FGvq|%)[3*XCCt˯ok23 We2̋ kr4>5ԦB5v(e`C)b>8u'V^%#Z j1cz>~sk 5c [[!#fj YG5*U >OL5mr{{lmklރ}~""@W,)uOibbXGNM6Bww3ΝGJ56xmDǓ=<$=׵b""""""""""""""""""""""""""""cɭq`A#`#c#qtrK:`GoO=+dٽXI'*4Oa3>= ZUXҢ*Q?4-[#:g4cʼn׹?ѣo och<8aUا XJ2(+OImH {"5wtp- X6F>_1udU9W¡vZ>JBl;'dbI$S6b""'CnWZV= wQ٘&"""&,*ԩ*t{> OKzS+ 7 +\ǿUdP6>zN;UU,GNLC!ڒI̔`Quր=m.N: |"""""""""""""""""" ֵb""""""""""""""""""""""""""""""""""""@ XU]UA:?9ln³+ 8Sڡ"66=),Z&]ux}C"c{FBNDDDDfCKwv|R5L=O>]w*D| ۿoaĦh{mfͶ hiw}^"""""""""""""""""""׵b"""""""""""""""""""""""""""""""""'X ܎}b><35^"aEC@MP'9nYk-!bm#yV-z%YnL"&,ĭU'35t7 g]Xdt[0! ;DDDDt[  9ع\]T J@;ToEHDDDDDDDDDDDDDDDDDDDеb"""""""""""""""""""""""""""""""""bƯ.]Nؐ~è^ x&shPڕt '"BCa1nx5e;#SǸؘ2:#ɦڵ7؝_.>̟՟tu ՕKʶ+13u ,=z>Ot{l )H}k|][[33PjH>3ޟGX?Gُ5bR A  eR݉:98㣹Zu'=&f $3#D}/}TI?e_ͼ>T=`SQ~Ne`JwȐ=fpOSZ5T^J *uu>L2v*`Jבg|kpÐz=o}[}tۊoo3DuWn5?h^XUF'@21 c͟Ý?{T͍1IZ/GW }͈IZ m~i#k?}:kճrzۓsHHI爈ѵb"""""""""""""""""""""""""""""""""b{+vR?Z:^KzX\3Qwk(K@?#1:jPvB5xOG>Z67%Ri@9t⺩cUU 6;Rk,jZ*jչ `oAA#{N6g_mH=Ҷl߸`TjK2HpD|O .Z3Nyl+F%85VoUáּ V- !zŕקU(Xlo's\# RX#D{ þȝQ4>]VV`5FPw5уPW\z@`B~7#PեPZA%?w1_5xT"/uY|}"&F^FR[Z6*ƪZ*nLBXIc/Ǐ-ZJZTTvߑsl^hﳿL#xbl5qnJIfU죹GgtۭPޮԗ +$1XQWcG+|ny/-LB(;}#Οt^e"lw tDDDҵb"""""""""""""""""""""""""""""""""""$~~6%7'P[۰[G$EG4" ҦcWak״踹!+PClwvf(4F[htjaŅ;=s½w 궬C^+&]#ceL^wRݏl"73u痮K<=zUc"8Qam3 -zyIj\UwRl kWcj6C7Gfk2:^vrZ QeBG~C؈ӵb"""""""""""""""""""""""""""""""""""$WZG=.2H5o!}'I-+m(:QW?|ze_]*~`~iWA6Swe ­y k /"B\k,7#rV%=GA>S"""""ku +; G:: `AxEyWp ^@y9k +Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ׵b"""""""""""""""""""""D{UrSR[5_+]"arՖg/!)+,!eU'}}zmjg=OC1.~~SՔ u`M@k}b&xVEunYYC54{sC&븕-ۋYU‘{K65UVUY³zvmȮxl+GVtx:?)FUX` ;kjHu--{F]9[Gן oF|[q({QlpJ`4^cYmhl^(FbߟyU냓{|jR[OcD3F_/~'MŃhџ<\[VZ9֕U͇kR@ltsC0e2jի%*g>2f֭gP{kП@a̧e-j?)QwIU ԡq~S:ZbS\J["6(]1)(e iKZ 0{Mg mC;!eA$fVe8)_bֻ0Q2Srd 6 +A"'_^:Ty}mA}Oy}{h [j!#cgUU^Te=9䠲WSC9izT韌-l{2GtbGuNGK_i_yB3}uBĀS:Eb[F 73 BX*kP9׺]Cw a4| Yq OO1)RؖtJ0q2']Kck:TqE`-hɫ$StJnt5ӨcYsPVl_4ڻ܈}Cy7%;+oŅ`KoI| +mǪlTgCi18fZy4~#g|fUͿt[H㐶! ܨmc}Iz2+:ڰa|6S9^[yeP C`-IN*x؈`˹ПUܗ 2|v;LTu |Ƌfiҭ^Ycs}~`rGr{6FuH9-|uϻ2jgPB`<27=,)>MyH,2*qYCiKߛ|fщN[7U޼iGmt̻izueE,<2bu +mTML6TMʮK20`|G  R'GٝwZYƒ1ax&oX(hqwD""еb"""""""""""""""""""""h0(:{;)=\v=&(zF5gڒ`'] ZncXTh:!^#l]̉Ǫ}ΡN*>}#?G6z`LݪFd+,íVW{U´f>WPfvMOwScWv 뱺v>YUj`PFq]җlXBA$GXEu`Oni*@8|)2 ֆ!\5/.prACV{:Oe]K hlxHôm^t +(=2҃T. +S7m}'iu5nfELfy8r|i|I^UIֺ3Cx}M r91솵>*> ޏ`7; [Vk7őXo6"Uwկsf`?T.N7R{qRYżf!w*fbKƦ>q_ ]\ށ:n;uaIc@b}Oփde`G-6Bg(UVj:Z`G~EEG+j2Z6 \@_M :{dK,5J(;&nZRK04ٰFOg 2v)H W:ܗQ\ )mR,T: #[9yj敢6lT_ cf^zh׌^uP[HYvR /b@[^abxu )s|Zo= Z6SA,:Of@:)t 2sA{Ա\O}k]}szrޮJq|4 V(tfAqlĻ2ߖfM+H, ^MǑƌ -ٕLK9`n?aI2:/[(5_Re .oM)Vp%ZeE  t}qH>ZϪ9SkO}o`ib6mZ1ujBa;N#]y5[ U4@O*z0s-H rOt} تG 6hw * 8[T0ώM]3t:T);_>g *w?kSjVJG~ vª^P2L@އmh|31zM]v½lWl:]MkenZEM+<+b@# ͮ,@'\w^S%T*Nk1زܡImzL]+noXWX%XrUJqSrc9W'7[^kh-U,GpJ$66vUYxFWCXkbXp6t##fۋqܩXwa=cXm6 ncߜf`ӓz[Ee6n;`*mNv쾤e^KHc՝:!emo^a=jn~:X}7+?㸻Ɯ{kVClܶs=CQ*Mcѿ_ g z{+!e]ynqK+b܅::~΢ΗVeGTEң B<:OI@8k˷\2ڙD`dVٔ1{^cWȭvgcv[7pOc~Lkd1VZxt5Latȉch F =""ѵb"""""""""""""""""""""`§> +$) v?5(w FkltSB3en( bð>ku5`m﷧S{=>2ЫSjgC¶;~zk}_1rlKl3!Y\OX+l' t۩;!~!y|tظVTU|ׯiSטM{zUKЌ֧d)H9(Ծ(^"o=˴e[f#6*V{3gtn#r]Ze ]ǕVX.*4c]VtlKL\_gצ|GdtLgXR'&5L+'?0&gN<j%]w锂73 +Pf'Y$əyo]2ާhi-ҝb΅eoEsWtrh)e`Hb[BcKǂ%|A|AH*n_x$vfp.CUNJU]ݕ +p+(hM|GQU[7 d2e`A'k(\sX\G<7k3ҧ35@77f"ιΡrU`oxv5yV(de*@*A>OMˠcZ`.Zֵ5؏)fGzGGٞ$vL&̺Ћlo#nޓgzraSaɫ=Ȟ~0!RMz,[|3%] +J$~f}?JgrH$H"趻r#z] 6mYnrn P`uW%;C)`Azf"ʃVrn'~e.!{*ժfw, ?}L蘹 lV ljdw~FnURҡP AS]Y6i7GLǥU7.a}bŶXoezs y;BW-קM:>-#,X Q>ixx]|Mߦӽ OJhU(,81|6,knAbX N;9 W4t+.Ɣo>KYvj""""""""""a˫ +6I}&<GQoԂH`4tDڈLO}lvPÑ͈:W:۩=)0SY;QLs؉ +oѴN7GpA#6$]@, Xٶ +zn%~6T," )'Gx]Eo)*,]0+e|z=ۈձc\i#`)5mmUIf'@I;uNb$@uede$rVݟ68K =>CÃGRnpĀFv ؈_^÷+g `;,u PG i#Gوӵb"""""""""""""""""""s9Ykd:@vm1$ vϯimzGdNm6ha~ͼjddbf-ҷrN^VH?GUm]C4q\Zq }ƈ:a$hAY?ˎ{_95YT]>g`[/퓇x|L[-ɐvݧG_aUեlf6:&x=>HvǼU}kfP67IFM@:t"Φfu{T쏧lhZU7dR-߂%zfmw@ iWjfqvs{v#RC7*+N>!mV\xwPA2zWPSWM[5Aw_kg^uqպccuIbqde]M,+һFkuѲhmd6pbF<|'܍FUXT {F Zc7N<- $9_U BڇHm Un$hOT-Cm[rܽHވהԵb"""""""""""""""""""@u|,)oh*Ǒdt^ fk_"'dv|yO:u[&˱cۃnEf-!=~ M~^)5(E52-ytw:tC)LUvWe.őܓ`G;lMY@1WNJqE}yho~{_2GQ/ٱ$i|tAs/k،Cl&^rL@ME<5A,6=*޷VW¤ƶœd+uߤThq]*k?AH?-v̤4-Zl9%݀o'qZq+'aܯfN1imI_86Gbn|/c +?F5oLѱSk{?̉oC\noP8)/ӍnYE ؀}7>:NvыXՉrxoMpŬOx{ՓSܮw=QlZ--]"$y9rnjY +!ظW,G G5rf'IŪ}ML +"2;y:Y Gȕ$~c4}'+SYd(v~#Hctj+6SEQJd}9\)=i=-/A}{FyL!}6UFF5^.:ߨa".ga}<21ɭTV4Sr]Hf +;/)0Ue,tg:0b;llszf-vnUFD(@={Mtҷ Q_`Qηʽߗ}9!9ޙH=<].{ֵb>xw%F dJ#\~m]/'Se9Fmkdø:;?)?˫tZ@RY8$k'_nJ˧@7.&Dp)eӣr#~z3vјi1 I5eUY'kv[] lk omCim܈R}I:8tU9-ul@5e_Go pڂ@9U:o}߁ԇR_h,\XEaML]vҲLbr`r??2^3z:pR+; +[LeT!?FkZ@r޻%-lK_ku6V^n>w?DJp! HFB⤆< Fnj-U7<%>o7䜻kz@"1%鯌܉ + +Jh{{QH(IB"4>fG{<^Z"\4(,ݾH<+yCwcR`W86gOƲ +.VܭU[ooNa6ȃג#Ͽi.$7=;'3p{w +ֺfRbbэɫ[䪷lDcd=>n<%ǪdL +3"ܔ}ަDɯuK쥫% X+w蹽%q]p)ae'|E|}f{'nQl#hcZ+{Bux|FƱaӪ2Vbh]] tQJ[62bC`:39#&r>UTo. Ȃ·ODVn7*3\+c:kZ޶Xa$~c0lVR )Q3>m X(Jڿq8Cw w#E +37mA$֭vubܴLj5+w +*%Hy3ѨTgz/KX찯`r|7?n~+Fq&g[_bh![NI^5/ex jeU@Vmm|x7{2ªd0 Xv:fGMu 7wǿcB[Ggodӕg[\g5&5ճld`ud:=^_E";zoUX1l|G~_9ى Ա/5*kkc5Vy5e@:#Do0QvWRnmSMUsv 1Q3:2pid"X'g3Pٙk+YqPF;zeL2r[SUR5ocu!=;7&].0ʬPN:t*Z)B}{ ;յb"""""""""""""""""""""""""i[h)3/D-M؈?IRUqp5}و bj`{>>YxNU~!YiAn{<$3'S8*(ȫVZQt{ckڈֵb"""""""""""""""""""b95׳}ؓ>̌"/Ꙃ3-WPlAcͣ1Y, +tJ:tNm錭e,m[#o3e-g,Byp kS+RT,EBT $=CG'̥lϷr7fS@BA)>dwa5UEՀS{h,@ʽق>3:XAچ`t .M6ly9|fk%a#ϑ'@Sƭ$'sOuzz-ws7A_Y2k ҃އեK +$><=lȩ ?8& +ƮQ~0@;'&T/s(g`΄ߛm" + +7|ڜqzv]h#uwJ9)?il|~Wz򭕆!ʪ)`fD7yxv;Orjkت͙_{B,)SSOvFo>S2j]XjeEa2`guq%}½8dVwɕx`G~q5vO2m7-y=~[;ߐ^`̯ XMul*_u۶1/˾T!@ֺ׺|rz"@vzvml&qb)Rӧ\ =FmoKV_y7'^E2w9ʽAm7Vn}J2: Oz SuU!+{ vwFDbq- i3hk|1ܚ'gΣRcCob v='|A16*uɀuZΆ"""a˧ ybVQZyuk_Uռ=|f1I're"Գ:,LG[2A;yU\Rb<`H]z-@IJ&*zfޝoSaB , }k%7T,^Dl/!ȏzk(f`>}WrZՁȂ?aADZklֲ~fX׵b"""""""""""""""""""r]7;Ԥ~ %+x 75219^+HnVtl anө\{nF#A*?I +};R3^J;P;?Os+u\SAQ8|=Xx^WR*YV%4+Ă;w3&[͕Rnl] SsU=g\zp]<@IuSṆoYtպc\kmzGDSYZĮn 76%yl2[_ƭ$HNAR7H,v#O}*Ί~wų*2~1JClhfe7)rl:bU{`kD&oLǷr-dHNΏ.>ֺzbzd PDY݁|{/XMhS1ECcH$\Y +C $v?9 3S:}jۄt $y1ߣKgk؍Ӿ>`lo_nNmd+fxorքr̀K}E佶P *.٦' +'dٌHpl< vߦsWz:gMLDZ9TL}6 zW;e&FQrGQ[tEՊWQ 4>;bgSCKH +!9s-Iou]?Jo&շv_)]}7&o$]Z +".SZ%Ek,#-c l@HODb,üÝԭ }6#s*gWzRz-t<l>3c+ +Ӻ~5uõRb {`]6^|s@1^+"/w#Tw +X? ݽζOG}[]c1O RUV|<(i|X)#;N65  ~;]-7>SMCd{?v](mY@{bH;N(Q+oO'Nxx\N3s$/ae~R6&!(tOtܗ$`dmH#`荏ϴxDu 6 ω8h}~J`H,"bLZF:`٘QT.bYʕ;RT`k W^":hQzsFiљ+8 8-~#\FkZٝqVtJq9ݹS76'ns~vux%y?E; t47L(R%"n-g*hv]F0sضX/u ?I9lֵlko`=^~M +6{=gbR#`ŵ\ S?k)` o@ מ.(dē=V `19h4#]rc1dw㊈48ܕolYME|UfU ;-~M= 6d׃cVmԞ:!5:WM]ձ.qg|õ#6"Ae!U1(a-:zl[]N(`~DlN_YW[ j #\zw'8]3+RFP]l2ٿ6}i׉U>a^ao?.o2 +)VNY`h.>_N+uNf-629WHzeo + DNj +(@dP ݁T=ƽw2'f$Nt=fXеb"""""""""""""""""""hY0MP7+6܀;>^S.MJzrvVSCϚN-T60|ȹ$cbR!BM3'eC,&oIdnJԯ-3glG} *U鮱᳗]F)f䌻*ݣZ~nmk63}=EܻڐJe N +ٙ-bIb!2V[ϑ|wן9C<~>\^]ϳ=9z ܻ ,brxl[CQ RG]0ܵBu71k^=$I;$fS*4ށԐt~ GpA& . cYay'C>0=閽w3"}Hf #cSGb`S5+ٛ yO4Qf:U;tb|lؖ3V<4 uUڑAx=6Rvřl䓯Nb( #{Uc~cu#j驗?cK,䮛en^hAS.+o{^DtO`nr[Z6ZDq$LZ֪ƕ*; Ŀ>*[,eePӱ,`{I\Nc\BKTy/&LY= -%X+vMƮڍ,PRJ5zf3xԟ ixݣ;SP%YIWVL~ɮ}|{1ba{r#[zM.45b@;>z.>%lf-{B9y450WMWِoR|Gݳ1clKL\ۓB=μ>ӇOAZِ}Xz{/ufYvOih]=7˷AMU();&n[G >q'59}ޥg;9sCXML4kwڞ{5jYMXܿ"f9lS*}Q$zSU}ʄ +TA],ttח}ngu_GNbؖx\ =}d=1:Z\C6$}^Ԑ<5U'=WINoS_֭mg̎ 佻yO_k&KM.cɇsM(m6%hXQozAr_bוfQᢅo1 Ѻ_ r,5mZ|BC-}}?+{nnǻbl^S}m\8ڐGw#,FoJbvY/ ~] +2QM,ADnut v}G3t4:.6m  V[mw~OU +*RF ;}w2ޑ+Povr'C&l +k#^^}䖻jGбj|!rJt]ॕ^ĺ?Y1;'ϜogmKUX=Xu]v3etlE&!MWj{mww6~c4xx7|12޵/bG&'e7b}Hoes. +q?+}އϓq5[ZZ X-et+JbIgf>lĒ~dK zKM_\wGIM( yMAю o.>os(؛fc53?oDDDDѵb""""""""""""""""""""""""""""""""""""""""""'ŴËa۱c SطR TroS4u)]Xh|3'I%먑Q ޻ "ʭ}te:$yMK%J2vF + +5= +s8\x[crW<@]NL5v6nzk]4Wׯ? zPWR*(@U1dtr-C;W^$ȝy|&\7vވҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb"""""""""""""""""""sQg%q+7~M8ݼ>zo][pqZSIٟCnC"e؎ U؝DDDv* z?)쇵L64$;lb""|]jЍcT' qNMy V ]oBI>ֱ::XA`C7;}.&o4P8^k֗|&^~/v׭TJ]c""""""""""""""""""""""""""""""""""""" Եb"""""""""""""""""""qo4鑘^ށ jE~ `"`J9YӪ)2hJzӘ>uNԱi 1o~?HEuH.x!_S=O:lYɳizyyώ5 )RkTɏm 1r+u9Mʞ-dv4F#?ձxSuY *-keJ}]zN7Pж.B#%d];˼g{[eۊVmI>6Kd*M[eȟ~[ff{Evze-kvEQXmynI?Wѽtkr Y-_hMݵz *zʛ"‰dfN}[zxX!|S{I3ZcL{fΫU#3K:B0)W;,:v%BT#E{ ZjGbG"Xrt/bdd)rY+a||g3,*ؕpZ͕#l՝"-yVCA;VU]DZtB{յb"""""""""""""""""""p_L|1}~:I5r=hEゴ(z`~`͏&'}od]OG}o\[;?Zir}$nF'{1w@ϹxQw^'7a=.iӨ/<<&R4?.r^c%kX1 &KP?!!6/K Ncz3mLq]s='Ǻ`N|nӭ1=0#Ӌ'j-,mK@z{|F]E¢}+ _F=wl^mqL8UL8tx7}ΙOȦڑk-ʝ]}Y|ƆvGK])BtL子SW~Oo#"dz/V-!E8k},ClǙV/}+Re__R6uUfp5~:cjʬ2㩦т0R>{~zޡWbAv#GMZGw92ܔLrq~*[`moDCdvԂ 7uaڿ 1^^Dic DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@ֵb"""""""""""""""""""blzI1Z[_DhD;UB҈v=4P~=5 k]8c*PU +?j}j|YEwk+kj|%CZִ5xڢ +6=mNvl¦=H̾L 61׉M.]+Ec@c&iC"O%t]B~P)$7cħ1x]ZXޝCgT% +UQ$DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD׵b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb"""""""""""""""""""FEzwOPQp@Rv;w=>eSWӲCmjOX(P ~t/:lW]LӘ99C=>Cjέ_=#m5f@jW"7u@ֻI򪵊#0>gMk[ojs? rOULΡKO3ܨ^bht~{de>/'|9z#?-C0R=7XȀ90]]٘^sp _j'gЩ~w_ _Yl0X͢K2+>Z~=$Oz0$0 o}m|~Nv:˹P"@]|w<ʫ-y9) 6q5:u"SV;%(ښ[3/fw,(,G"ݎ~bs`{UbgO2ۯ^44 !||ޱ֥,$$z}f촬/W 8[Cl]I͢Z 6P0.Į&y̪tC9Cr ޻P) rw+PY@b@ >;W]ł:S z:VO7pq%K( #@nI[zSlgCd } v~GL7>ZVH==ѝE¼{EMU0GZU$hlZ~;n+˶od{C,\^[{[%X +(wݘoQIu˯«"W +,]Is&WʪΡ`؝OG6˼]V?,{ +Y}`Y vvuCfΡ-G]@l{ 7#~IxƬ;1Fߗ;cuxy -eGq3&w[ ꯇfVΨ_zbC_.ja,^:v[%&3]]+'&P ߼Cu +rUfNinD%:NqXdfڑ7ћqҵb"""""""""""""""""""s>dW?͡Xrcr<>I^Lx[ f^;rV˓O]}x^ +w,@3x=+?3-ɳ%FbocMm dߎ`5ɶ5富4/Kg舧.7bx3|KXx8ϔ jQY +ܕf%sn`kb+&NS5*~OxKӪ9]Knҽ^>CGs{hZU1겵;U^zzO쯨ctȣ&r$Ȩ, hqIӫJfܵºԒt +gd7vf1Kl[h¦6v?tZkDEB>SNoJmjS?l * OaKbee8z3 HT{]nlֿUM2SJ Hmo[9 OTqMt_'X~]f26֪Ο?nk񑐒9)Dlk`?gmΠ ƴeoqXdT9j e{Wws^3 ie]9!Zl9kG֪i{yiW@;h:  bu͋lWb8 Z>df.wTJ'Swmsg>pQXےv-46[tg|p>1 UvU-`ךz>oڿV'wχb1?dG:ETu +ާ~EH :a"/ Z^>=Uվ Z}9jn;@sp.B҃a/ [-ʲA6~|gߴ2&Ivs>C!WFɵ]Z]C|!;ҫx~5}$שٝ6.XAKǝcw'll{#B_v.Ko=|DDDDDDDDDDDDDDDDD@ӵb"""""""""""""""""""`l*HYJ.μuS!Kro]x%l̪'#.2^'WkI~;E<5j=|>qA$I=.@%`:Q50Wܔֶ69s}O98AuCoS/OgjjD/ET.cMI^'_o%^'y\G-.4f7'RO"fU +@ <ä9qZr-ȷz]1ּrEU {NwMf=T)w-ew꒠' + uj@e 6<YV 8dz[C)öd8əR ĩ7ȑt4V]x]y)t +sb6cNpucWBxuB;Ol*pZkTBPOǴfUkO?l vdr`m u߿xԣ+)PCoߞǮGRedbY*Qt ?oKSExµT^Ba~QQ܎Sv;ƄgW*zb#~z>ضR3A#ZΗs|z&$"}STևZڢŏڜFZUMwȓ=kD\c1- ŒrؑmoCJTompK Z>l?~|G"5Cod>A_寭ڞDӳϏS5̚Ԗזɘ)SZ Nþrfħ18]ZXN:;3 QEu4JVHm@8EI칬o6&P)K+;;D]rf <=ÁS2zޛUo|X0*XGC>CqҮ~d$ VM\k6*? $:^čJDM[9v9u3z>Yӿ|">D;y4z3pMLpĂlhQ#\蕛/@] <Ȓֵb"""""""""""""""""""rC/eLY I=IdLZ(t`| C)o|y7_fM5+k|TwН-I$$!Yb, EK]֐F=u +;e}G#̦@ѓ:ӺOLL<&k8;0wJ^BuΒ:Ec*\ouՐjN#t3WQZr))*{ N~SΣcXb⦼k3#,Ps% +kZ;:_z +J[ek]+q;3q؉P>ɶ\|7>{﹖r2L:; x^oٜ˲K6UB8ց=PْE U+(>Cw>rW95k̫8,O=N~qWG5{TEF bbN۱MhzRڬEyTʕ_QT)-Q`:eu*xJqI y]io{K4b[=Wnd +[n*pP'z}:m~+>Isٯ{D>J{7fO;b\X_03G,Le[+lX{P l}oU-{knrkACl>]Iu%#|Ociӿ"\R_KlI>?wgLkz{׵b"""""""""""""""""""Eg%`Oo0DUV-eWb" x;L#Q1kWX!A%rI~fjܬzXc[UH7{ߦI3PwTk|F{\jmYJh*ɹ) !vm'׼}ZȺ#`ՊCIZjZQT(4tUKl2U@ Gv~;\aߧx]xsZn礶=Fːt ?jE_ݚr\PVMzZˀ}BY}ةy +/EɎndxKˎ^^]L,r)V+kT#Pv+)S }ܞ^@}h +휂 7%;nÿz=}AWu%v/!`Ay&_I_ksekj)P3+Vm+qe bxAftK! ~.;0jgjWBXyc܀>9Y Yؕ5ֶ,;4Ls|W-m~k*7k_}c_g) Ccu`E'\tr"of=3ŎUqxe<_<z9Y\ְ~U|NҗwԲk`m~]VE|kHFg(=q^_5 >@kL\kmJVH +iTy; H|V -nDl{}BoXeh«ZC&׉s:Jѐ H $:LլXtᝡ>.c: :uk+pvWC 'e,tz<7`lXr<ڪdWtYsz~*QֽD%USEJcJt-emqk1 T*@nYRZ4|?>>GIȈ(|Кg'[m0Ӣq6J4Gg͏nE[{]{P?4U5=еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb"""""""""""""""""""kf,nd\]Z(t! "}n#ھ1֓A`7o@oz7b"b&GVjT[,H˽5Op\o3)$|ex}At Gˋuވ#&Ek.d b& 0}ZLB.R|Ha5{ҨULx[6ƪ66AW^G7"&$ʪ^u.PHb'&:50UPI$<3~?POűw 73Oa5>xcEgD5bTΡߗ$n#gC^,Nm9ehgNDo˱>gҵb"""""""""""""""""""BtpBO *ȷ~~N%Yv5Xe3R߉vts>ɥH̹*afvC+EMRyJy}z[U7ܵ~E { ##BYu\wjWi$$hlH ,gPSJ:,;]$u>nu5U{Ub33fRt |SSȳڪZz])׍*?nL`INeܭ@X=A:>csRh3-k1>XK*5v>?0 |Nvet#9ϺRIcjJ`8'&vR8X'~zxu||l[)rnITt_zcC~SOn6aB\<=xWR/يP}Cd^6\ms&N/P­njkeX 8?15|h|^V`]@64{l>[3S|4>Zo-L{+>ƣE@ xfI +vŋ\̭E^5q~M܏&zzUmU LZ7(>#/4ݿ'eU:ҟG*,(9x£$>.GZlǮbk30R@h΍SK!pԲ=A>N~h+sV*KX8]C"+|h.1|˃/־d|xSWqpĒQ>F_Ku,[_[}S=w|Zիvf#Ch;c=yΣSV+WQYOkVojͷx?.MS + h^ek>P]xFa['edYֳ*E丸x^~>? OW|Qhz͝zUvʪf-ӴWծ6LMe|X䭰=hٹm.%ƾvI+%`~QmxXWžyf]=I͎ѳ:VEX f7bmGoILgAIǪ*v:F&e99Udߎ& DCClwCt{YpoC0(,yykg㤹O 5W^1] ^)tyhx q&޸붵OgnWOlÑ?-^ ͮ@~FvF3Wk9?-qyNQJ&?6N>Z?yɓsp>BrZȬZ;=׳aԺ>vB-) +?7v,Hyu7:NVMWw č;}Oe]5zؤ+ ԷtdIY^Mh˓vȷh密ǔ7+/?T+mk 3_7f}⺪U^1{܁ֶ;ln335QU85h߷d_dt? m`k,FP46>Y[JqR~1O|K9\VTsTMoxc7s<(wx.ר?^6L4gav7圓5ٙX +iw't< v;Ss>=̬<ʽ>6rm`>ַ1Եb""""""""""""""""""""&:rkGGߑ""""""""'UvIS']m>a5!X񼰪?~Hoc|dAaSk*Tyw;:޽f8S@ h >uj6VMhv`7؞^_HCa`ܸZ=}67XJ.ĺߍM`pcǗɎk՟ӉZB["kp@eMJtGr ܫl %ln oߋS-c'ՍbUwe.lGn/gGQif~^ƭQHe@'Z;yͭ}ԊkW +ڎitGouZ֨gZb6:e M.Ex-T#Yd@ԍw;=R7f" +NvYvRI:WV ؍ cjtY<2o~n6\};!_kK9T|Kt{E k¤Uc Vގ>DZqV +J1 goOhk-uf-A]·Ŷ2m50VM{hz=m0-[x<@ߗ}]1sM|B1cz3`uzfI ; +2|3WJSKrȭmUL}o]|AJ331'N7؟NOӗmxV-w27vޏD?ᕣn:n*?1' o˹,tצuf%A9s!y08vp}=Gq1j1oaux +]PHXҌv)U:> 듳k 5={:6?,\GZ=X{a'3T7$mtA b]cl* rf:Q{wcu| _%׶v=67ͫ+׈B1^UzF ;Rv}KN*=H@t 7gdvunO>d7 +Ƨe#XX_#w*N5bh``: 9Ѝԅ~l(O חv}Mj+/PGb;T8XvRkW.XyTಚm΀Hg;`4 1l9u.b|EVf,=ђ[wSǿlRck#prFb#O'N|?qglgaKGU^Ԝ 7mf1{UFOE8HueNֹuv5L]^lƷW`]4r5ڬ 1]y]~N>^u⭸)Yjı`[{bgFWaֱ7`[޷}u^Y=jiضZBh),:2T r `v= ft=;U1ȧV: D]f Se.K,U 'B?KOҊ]MQQO}^ŀy|tLl0i'%'WCٙx53=}=zŲkyZ]A;>zf[tcVK_)_.lc{?.S&s +k@ /a>k#.ˮfJ],?!P{y",s +W-G2հ77=˫(暉 +e]0GDyνjXh'Z +,{kae]}* G}6틄xt8եpw<;-LEZ.DzNLژY3,-i%h^AIԔCuƂb}4*{ 9?O*I:C Oo#I5oP/ KQ9fv'JO3ͣHݞks^*tc>IvYƴ{wTZoBy0|saqMڷ%o@j_ݒbԥI?<}8Ժጊޟ1*,6>{Օ}˝9/9 1n)еb"""""""""""""""""""'[q"ʀWVT#0#㭀}7UKJ + `suAS؈PDn{< AbyOwK۶b\*'͘$3cf~.YKWCR.ݾ(("'xS؞*Cw;b""""""""""""""""""""ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb"""""""""""""""""""`̫Ҩؓ@;쟴#l#+Ǎj(Δw#I:8K3g\1K^Zܟf*<# i:-iR951P<9T@O љdÐcz{7I`2;QҫC۫ *_75usrY^YCq`U*AfV̳۫e]($NaM,~OP$#{QteebOc3u.VkRI ;{@v|>SvUݫ#C )nh^k/܇\JfR ވw``s`^"DI/x]E%g wvwE;ӵb""""""""""""""""""'6.of)uu(c KW>g/.\~kZ8UYH݁읇Io2_o'Dyc߱iG B`ZTʿ`:lZ~6gYtT⪎]AbYːv]0#ߦfb2AUXZwk]G밯\*AF#9 ӕG_Hczl|XX3C_tIJűӫjF/ʐvʾ_`ћٸtuW+}&eU;>fb`gg}#S*fz 9ԩcb}LzŔRX[uD6ƶ31צEYؼŞDe]Rv{%"S ) |A#u]71O7G)*1kYWnB>V->%XGW'>c fHftrH \ NGQ7g9[o,-v{t*zjqnM#*`b?ܼK6Gl|~څ _B I_gOP` ^o\kSvJszeF>"SG\UU}A{Ip)k * R{ +z˾lkdabR?)-RG3ba$*պw~Gmˡj6_lz^'D&}*^rĆ5:#!Uk1,KwgNaH(ʱ)ш;>GpcNޥ}LtGϸ!x)տގ5;^=y[{|;nC!&-` f!T'ÀT# ϨԵb"""""""""""""""""""bŧ-<;K`u ];Eiiwit Z(U@Td*׊Յt,-CXz'zͼ:~=XJD_F4GB^zǯah25Oz6̮VJ xZן7= +}pfvù|Ðn&ǑM|zQkBJfm5bRĖb'ϼ8SR7m1>6z8o|{=#.U>ָv#DvC|;|>x4@xfl*3k];vaWa +VZB >v&ڧuC[n ]oRuqח2ccUZR**ʣ@O+[TA|=X rl\jfR ]O;@QDPb(@{z# (,;|=/F'^[$|ѰJЂ͓ w>g^[?8axz!cȟt\+RǬ˲;;BԂýQa|_\ߪח/N#},Ҟ6qk~~QycRWr??9GQO "6P˱tf.\65U1%+T$y`yL--@nXIct=I83͕ +[elI|`t.ɵv +46.ğS7YC#Fc/{ݻM|mw_B;lOn>Um:}RG=G߯9.{)X]>`t)RTPޱ+|j]v<].~rW)J'@lܝ͉iBRлq7N%4dG{N ߞ`؈յb""""""""""""""""%|u3몬uK\!mA z:gj멘' !y*g𘲽wŻ͎nW k˴TQ`xnwqW3b"䬹`7bR#`Gb}DDDDDDDDDDDDDDDDDDDDDDDDDDDDD@ֵb""""""""""""""""$G#2Y pqUZ؆RU21,u9c_dx@EiZC ǻ Ng~p2 +TSK%)*>W)̬wT }U;$2Fbɣ5|9 rCŇ{je_o]@匫א}xYDxخq[$nbnu< Uĩev,= %"Cf}s +E+p,]v`o>DODz-\ {C]f1ljZVb>`<?lcS}K'%fUc2 `OI-+̻M5kgXpg=w+mɎ`d5R\)n$xZ lw?[ʴS]]+kϋň}7w!zoC;+ 0U0,B1bjRBPҮǰ$.{Iͦť=[ַj|UԱ)k2/.Dock`0t_\Llo9 {U'jZծ4YIA^UcٌċJl1(k V&y#:5iGfFCu,>Htr,Yx~,[>'Q6?J+Jhhmߠ=G#YMǮF:BSX_)Ϳ`2յKu-m_)GVK,e*W|f*z bԼd*Cxv:8Y+f +_ zw~aC0b=@$yb4NIIK/2mv*U!a,kp} TLA>p.y+E(m M;H29#)a³^ٷYDDDDDDDDDDDDDDDDDDDDDD׵b""""""""""""""""'3%=){W(kXe'r(etb6ޫlY R97>϶Tc}/?~'ѳkzf~ٝWSr$)tR $!v?F21&"̿XcH~g1faYJkes:^Շ\ï,Ue\X4D׌*btg'W})iʹj_}5T=۷ys:?Z̭,̮N檆@krCl,6XjoJ]wlXCu3^޻I#46VbaΗ6"Bmn}Cm} ],4k]I;hmSunᆼxK{z:v.S%ob{AƴCy>}49|G#__xiN9\ɫ' 2ͅo"_^ W #zuSbSc}j6RTw:vu};;Pm2NWR5b~v=uf]3R- +GGt=#UMF;"rb fot+?Q46Eղ8P(`ǐ멟 ^;G ;$}ɫtMW./P|jV$'Cc_tcӡWYy'},NoFg3(ڃ9a]ɼ1:hNc3y3f,F$kuΙU7q +ĽGa-˦K}C +'V/XuNZ5KVH:ŧ`< 1nbli@̝ }#u jjǑj~|YEvtV@?=DZ* H/h3*?2olNϾSb) I9Pā-cXvoi[q +||e?aR$]}&`R{={O(>r鲄qŅ|Aaٵ|ir[%2'QZP|1Cַ^WY}x-X@Qv+(>]*+dY_Yqm] RH~/]sOea")]Wa@|-9}+)0RBuj<81d׈}춆8/.Zַn}D@zyP=#ЀOb'T= "Hg빟S#{x> +>p xOg"*GpFО2+X@y4'D( <5_O<G=q|H +lZ +FϙsBwV*7ܞ%IY%T|os"ADDDDDDDDDDDDDDDDDDDDD@ѵb""""""""""""""""'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@ҵb"""""""""""""""""""Eu>YԆ܋@xI>B}t^Ukjow|v$O/1pK,-b1ZSsvX _Q@ٍ{ս##?-&*gg Écu5筀fmF heWCmu.{dߔY5Vt9U1s:^"bgqcYv FEu U7W&]Mթol`_f7 DӅ䗽V>m%w=R VρwӐP_fͽqBhƶBTfP$ 葲&}YNdmNEA$yIn7'gn7:'x]o] oUZ-C=1DYe}b*}`HD0f"$oTο@] S1k֤ 戎ݻi<.C/ B, {qS΢z}/B:ծ*_ۅ#:י}d[o[VWCЮQ)%R73CW>NBU[Rk km.@OoAIuJ+{-PG#;hL>WXü8ؕ¡dbI쿁iFk/TxT;AOHN&ځڴQo!dyL8 I Gwԃ3$]FHXJ_SYxcum$c)slhV+6Ŝ6J9 +m21}Wkf6'Iֽ@+,\Srә>@']Me>NY:>e`W{EP~ngEl q~OXJk뮪.?ĖVhORfE_<'KyX\Veߤ*Ul͹7|O/MN_1:nvv>U +2/vܶ5eC~Ԟ,oF0C +Va; +B>[UzDxITW+Q`Su0LZve)8ʐHcO?˖6gFWP2޿S$` B(\y|jOEUGG5bF‚6 f:vSBMHwJ$vze]L{Ϲ*&P[ԧ:oK\}RfxejM +c0Fmv$kΦ.v_AkH_weO=c7z% +x+~QͿg 3WfJ +&r DZ{]FE:1ltZ83!`la [AfbYkc ܀oC`IuNtfC35ٽ7/y7t +zV3[ +Hvј1< #_}oѭzgx+ev3︲ +(;#{|\|<[aA'@<Ƕܫ7RxRciI}K%ܝ A:2 h l:[u͎Eyw*mh<pN;-+79%[,66~8]c2th!ϝEӇ^ͮ1:KNe~"% k+ӳ€[ͦ<٭[؞`YwԆӕ +7rIcKI?iyxgTފLS_L/߃m ]ie)>BoftYu!BT\QvX +0;}-3^oM̀>|orN-|zOz=]*\Xxj+oŐQZUzv%5"ٜ˅eMWe<<[w>[N<g3X{rv//+َ}yJ5#&fGҙmn3((F=Xb*6)!/*VʛyQ3a\2-ĭާ+A#}Cϙ^n97ꘃ?i3m:f:}**ٵ>$G[BcG:tX;{^bCufS/;ƻ"-+bq0t,g6=6܋-a(7n#]IQ>5`I +A"xZ3x|s_g~\~ }#!, U]H q܃d2.PIX{\AkݳmlͧϘO+ ;$T3$'Ku- ַf=EVTi 1p*BѣR5jv#X=06q*hsiluV(w]!?$C^SbދE73mcH# U:kdXm*UnV{C7I6y  +Jpp.# 菳f{zF?T5UӋiw1hΣQ(UAX$r|˿:ʼ6*A> =1J .6F@e!J(pj +{ltܕ-BeF5 oiflUC3]%$O.ϼ⹰g*v<ϐQZ β}@o)ޅ}Xٱc~'Ϲ#'v7 |l_j+ݯ}Gm/яUc0jT6ν76?㌳^nmza,j-Zɮ9mIO>ElvsS'Cv9]*ֻF}szŀ H ۷xMy@:ZB:(As8#]DDDDDDDDD@յb"""""""""""""""""""""""""""""""'؈""""""""""""""""""""""""""ֵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ׵b""""""""""""""""""""""""""""""""""""""""""&cMH{H<;|fDDDDDDDDDDDDDDDDDDDDDDDDDDеb"""""""""""""""""""""""""""""""""""""""iu\hki* +WI{3 qS]wrPur"$GXV.-bK, +Jgą;>R#e.MحGM+[Ǒ4<'IZ%xZ!~TmDDDDDDDDDDDDDDDDDDDDDDDDDDѵb"""""""""""""""""""""""""""""""""""""""j?L?3K#t% /}?u֊_=oF$ZZ&PJDLxҵb"""""""""""""""""""""""""""""""""""""""kg~_X7'zzOqzRũkS޻vDw ':''-bGzN'=/U4߅[:R+;Tzn Y]X + +X%GK_GLDVDRBEPNzmU7fB4G%lo^S_0'U[#~`u zMp=3*bIf: +I?$Mc7\7Ǧ YPY;J|Đ> Z0>k^r>3%sk/ +W69/xOXNo'@]_mKV'zҶlij! IЬ7İLl|zT9Q΋dfDjFŘ:{I`x[{4Nj׏nN5rPTY6 +BPgc:3c}mWERmv؏L5u\u5eb"mFPt";2IM,>׋eOjゕS˸%1<|%ǯC!˰S:`5{1To1R~zM.צsc[cj?v"ILԺzu*MLJ+&Adކ@O&O8bveց>@4ܞj5=յb"""""""""""""""""""""""""""""""""""""'s`u܊6M4-,4 jF##I^N""y6v3fzmK1$'pOŢFֶ7|&xve׎R`.̩ÑH:>z8]-覴g*xbFqNMxuDE,N̓ u^0콏oog>ь#RkZ/b1&kb $ӷֵb""""""""""""""""""""""""""""""""""""""yDQu)]YHe` ÅEa96ζI>[$쟇h5e귵mb)\l޷v޻wOZ5KfH׵b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +endstream endobj 122 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 41/Tabs/S/Type/Page>> endobj 123 0 obj <>stream +HWۊGztM޳L],XC-<,,ye\Zx}ߦ4_'D䳒F33 +@Oo{HPMh7Գ"}o LHtY/S)Lxk(&|T)eD"Z5W̜CL1Ո}XbfZu*f-!bLq33[(#*WS+ʉjf|g[e֋Ԧu~%WQmÐBP=_%V,^ر+!t]7jr܈0k|bXO ;!Põ2Ej VTp\sjXvbkհj" D傐L.-Ð@gZ =_ +aef+1j5aW+@&^ȵu=Ta 5( { I`z1jV$\$\ ]|z{yzoL{?paÁ =}7YJ9_G{w/y=Z'ia:6}߃ ؞ݰY τn70SAnv#gb" +1l7=grWNO[88ݕ]ˍ൲,_/qЃi!'Im@O(N=)i*id;/>$}!v#fר9"1Td0qڥ}?i;dZƢzpɸM_WŸ9 /T$.?w廝Tu,FuO4*-|)Tm9·HD csR=p⨭Ot{u]PpiGi1*% KYW,AYSڼx\k;OĠر<@ +3 +c*g.fQƃOĬ\Z\2 +\z\EjF8"fQ K"ej 3T. ZTQdN[ + ib{u*P(⨷r!7]M; +:`gm0TX`ȧK\ d,-^^KB\UO.l3xz޳,!޼cڵX*EjJ紫Ԓ4}ggSnV+\2#`;<@ӗ<@87qˠges>ǚ6b3 luB9 a+:a̠ptu'#QU C2IIߖ7M=-ߪ?,tQ\Xa#;ȷ|S_^WDzuN[,I*h{us(ĭ3!f=KV0{k떺mo<@{md]O +K)4~JEq v8jRx8!J:SGR-pgma0/Sc.xyBYjZ"YJEm;aAY|~RiWXyJִKepW(lx:HFKtg.zБiܡ5G`S4& +( +ԇĚɣ_r|'v-Iሸg%p׽~qkvX@ɊQ 1h`o%.YdxkVJJ$ "#3'K “g%ɇ;M#T)'#lv )-~`1  + *hayV4:mV=yq{2 'KvѣFou+Yj«OHT2s1x qχͳv2T?(%rj]}OÁt0Y :mL{ / zJLce&`^#q9/ G}F2wFb)ÑwFJ0,"Ipۨ/_?y;Q@oX[pnfTzA3}pBwjڮCĤm<]eW4?*eeY +<8?!R]p&~S_Mũ mʤށWŪw,AM*5s)cQ^)oLQ1ītj^.:t1uE*nzu?\8@i +M~^aW; T/Jyi o=m<"#V460_^;u0 ]laasGҦy6f[7 a$xT@li16$kV- ՊhC2K.O;,T]~urcǡ0[;~ ѭӎv8ځOJ7ڝ:wY$eŒxѮrAQ꺂֝j>.wH \+|Q6N)Jp t;:OV9^ + >fXbS 2n?UN@,uȐp/:*sgjveNP!ڬEv2lT鮠ɂiD}SBmω~"6`Q_O/:^DkL!AJK!3v0)son5 KSl$'E1"Nww8Ȑ8#QvAj"Eq霌TzMZ,"+v~m}"utC#s ;=4\k 2 1Ͼ[NG w4f|h@3l@a[yyr19cH S6=n bpab8N ~혀''h^=ڬ/ +Buq˽»'OMFˡP\zx༓"Yñg;zpaR@fo&?|Dщ,ô|0p%Kc-K7wtrۑKg%X4Tw<1HZRrs14jNaT;{7nR N_ؒb:OYܭGfsKUgeTEXn; io~kc=d'n"JƲNۑ(`J'' V~o|Q)btQƬwq F%6bWa M\/ܶa +_E'HH,. F Eo_v@شH g\9yDq[2cv$6]kR4d/]\:.%e\@R]S؂dpxj,ΔXW9R}f +3z꾤P|zVpӺCQ^mO}f;ax&;Zԕ!%H] t]jR ( Fɚ霅"ׂt%lҲx&MW-"$p(mφ7Eۣ=*8ӗ.ǣt 7[5PMHha=#GĈbnObwgUO.Ÿդ=PYq*8k̮Vz/cF1 o*`kF!HUPȲ^.Iq_'f,ZE_l0U +[ + ? +uEIB)V'\r,U12ǧ~y=Ͼ~m?N/~vigLum螏궧s?6 +endstream endobj 124 0 obj <>stream +0 +@&i +DE'\na --lśppu}KD; UQJ&9! き; 7BU6<۲ +xGhm= ӂVJ&"߱~BXRTXjlm<}'9N*wN#t d*ہ 1/Fc @{;f?@Y$:qg'nxlhWMӇSG>ku8}#<=B9\[ʲ^|TaHs5u@{*v %NJ}Hg]u/xPW.(vY&*!b1+2$bySu ]&B9+i߰n6mGpƳ&9D0z`;ޤ3c.H]3{:|?c6_CGևG=3b]%x'C <61M_gDԹJE:el&1|sF mԼfvv9Lihg>M?]E|P$k:< +O {㎠f!H鼍ohn6sHFiZbkw,@ݐ"%[RZo GINDGo!Vp=dY(WlzQD0n/mڊ>V -B%zT>PNJ8O{Ώ;U?4i i+<2TQmf(C0eIaɡIWu̹MXUNׇ*,f.4 2qGdLFϩ t'J՞9_rXj\-@ȕ.ͅ f2l0,<̀$d`%g3aa }9OK~aM7:_X-!w +ߕ UOc8mh%\õΖr&hH_kţaNM_Q[-/%Y3F'=tN3s^x9)ϗPdv(gĻ +BC5#ٹIӝ$);V4}qVpob BAܼz$Ӛ䊉R;?$~H$ۦU)ϟG!ˬ[$ ̈'7FΌ{ yVn7Ka/k֏lW; ?|vaO;'ܡa'Ŏ $!NMViRq| yHގ^`ɗEr<I{P6|BY{XEÓ7JN!D^]Y<ƵҮh+.It}Ȏ'ky s]~%L qA:;Tm\9q}Y-gLhJN"}` +(-ֻSL^т4e]u=fH?"`4x1;YGPOvLav)p2CͬwꙀ0֛5{>kRصh5.>6Qaޞ3T'&2L?usπD&0`=j+r<EG CFOL} Dbc(|HQg2rQꑫ<ѐfzwvg+l8ѝzVgtW? Xj yKM6!M'S~k)d_-S^@ѼV[R{r8X$H+9'FWWKUl W<℺:B(Y7_n]w6h3U?-OQĮx[F5N^EʪFYf>ds^:uyOf nO7ߎ1H0gLL;$P@"bDC8KX:nb*¤oX88f}3s\;ʰADѵ8a D;)[W׳3Y$;,MLp(h`&X-s +9y$<\.ԙOk`o>H@p@nA~O{ȗ^[c3$h093O:+ѻKe!tӕ.Yv"Y$3DnX]>A{à~?Lzӽɤcj+9ԇ9^'n*w+_ivE1zJalq|kCۓ:B=O +yK({-q7PC~_aKybo~ϪTM(Nܦ)ݟQrww{]`14t{z3ooS./~ܜBZ~BDB%A=^;EDXլiĀd1e8V;=Bvȥiٖ (" s.q^<96VxaHF(x^a379;a!44ڏ}TIdaً +s4w Uj$BbP=& Nh:CMƄeBJE$͘;YRs m;6N{~斐5X}峹K,W4ɂ#NQu5==reqۅIu',x +!Tk\dab]f-P>͟I5ny!^~I2g-+i8 ؗ8‰ټac˅HYrvp:{K$_MJ6>ws!bNԟv_ h&9@v/ qٲ6V缰*)z>h IX udZ(-ݺG lֳj&nmrTXiB{c AU+> )}FoZ/"D||έ\dՌއ < b]B-*H'dS Ѝ^3UPwr3Ӊ…`n{2T[M~ڬJGvXo'N;pߔϴA~8^ PɎnR5!9?̂^r 5r"E?l%˕5(~,1K915SucTN1\7r:*D)`P7}̷n ԯVQP- dgyl (#@j˧vEY=(N7o{ NT1U⳵FvΔޟ U<EĊ>b ѩCuˋ`Y(W6Kߣ=-IE Wԣ$dvG!?<$O9EOcIy3,gf.>Bz-`-1)|m` +UX8FSNxv]L,o5 1Cr$vc#b.DLԼ#k 18/cOQPX\˿&Y_mG?sAXpP&48m##'XL3O;^Iϐ6z $ >,A~aj6{jV(B,׼ue}/: \J4AVy uC,+xh \bJ1r̷x]N=m991IoKj1 A&MY@T_ Zc|tTIRXOtzWDW3 IpTM{gŌ Ogǖ}݉]27&r,HcAãh{>s]ӽ׉jt_t nI\;MU4N~Ӻm ]حcp=&ýy0SV̓~d9WŻyhC(8ʹBkt#iQN{ݛpB}qb`IPgaiܙ|3X~|, YbQ:Q/XmCP󥐎yT4_v w/!A6u2axK,G0grx1RXmnOV["[7K?r&4R kɣ sM{Om׫/0?v :Cr.ևY0SnςtTvDC1@ثr- -zKPk'JtٿGi5dO+ ]d1qn#w8\%&aSfzc4 +$@`U,F 3ϼlF[>ػ> , i*7|!^ G +H湠._B>3 06*EsD?SRO,6+8x@Q~K O^,5)?aU2.JD +( hMlhQ)2Ug=ǥ;w4#I7sSsiVĻPTILƃ`yrSc͏u28r 4t#<5r'.:/=Q羁.XzZ>S +%:^n{ [5]sV/3Slgu"RR𱟖0<>"Nze( +F^ME~V(l H߹8Z(9}?ސ+`J_y˳] bEҖ-笵CX;o",:#N03HA;iANw 4%4ƞQkn}X>6vIǕulߍ={^NJ=)l#)a0F;ݰ9 l7]Aa]^y ij0x9Qd'op u + j7zg]^k sWf0>J)yǠ]o `@h֠m_Α}% ++yaGܫ@q)Rd{^g%وi^}OV=yCHSx?vv;DCJ=Gq3i|L*?|W'5 w۝mh.y+cZ!Kt/I<[?B׬k:zR/a'(nY@s*$#JD*Փ9q٨LjYrop>V#'1})HLY6CQ<[5L(\JB}^}X}M(M=_SYb6gaib: +.?{e7|3C 4F2y{s]d}.ԳdA|@k=8$?!P5ٲTU.z%(ZӲ;TͷPo"?`OՁ=VX\?L0Csq\7&eǣS}w]'JlkRAhssX/?D|Y[I5,S-Ql w=Ī!ft +{5nn=*XsYlȒ_̵E?F0E*[ywCa&wsl߲N Fh"V'8T!7,3{&v~V%V^ל + ga햌@0#$(8cF\73k73)jnVańۇ$--bT7ք:Jz^nt47xWa~'X(9zF ii;Y7y+.S,?Si")蒉j =_ujS.ЮZnu}$ +>v]J +x!Xsֻ+ 񎘇&o|zV&YyȰ?fHY/4?qYڷw^|;dm@$FcMY⩿5hQd&8CCFl KWS iKe8@e2Ԣe+ 1WpշJ ?];nL7 `Ef} @ d,$A1.ڳ@eHgſVK|SU`}ۂz ݮFӓqw7Q +Λ +z?xI MHo9GB46D9fl-&8scweSQpz ONe%g4P(@xAQqRќΘU[%5S)MD,*abuh}w]9?bxat=cnT}1:BPD2-^,ґٵJz̚6rF{[~ⳌĂ@.\"3-}ps=9b$tqB +m?{~UHWvJ€?W0ro͟@]-o>* k 0JIV(*`r\ d9rz(g :d\qzY\tDrs&$SJ^c!k+q +?+[p#<뫨 ( Wrx'K;p|3{?ڦ5ZKUw\vkg# Xp?L8x9v5KXs7s*8myEqq,3FtcVuMg/C[UFf u< n;QjeeX:QcK~U1ehZԢggNzs= ^2oi0Q'Ǭ +Eo' zm~zE>2J#"Io%<Ɉ*c`lLchJ،`3Q ]i0v_WH~յ=MܿD35H_/`o)Ӊډ;ފCXCW= 6&(!q䨼dlؼ ;f̨%ŒںJ YF10ذę!]v;ңsn:A &hj+F`Gc2?1i Ȍ0F\:00dh>(\p!LN8K2A,!ٶL.i`%; +J+y kF. 'nkzg,9(iEjYhJs1b+uh]P-SX +L.R~G Nok:4r|Lz!CMށzZuFqهM G8#El0nu 0޸JWuVBfRD$@jMkI B'^&,?1JaMR4Mk^6dټ #pU &1l(`uP48ZL9$/hiҊe2p)y")s1ۈ5-_^'M&_Eh]ޕeFEs覢)"1 c0;ńv'T'!^Z4H܃ FG@D~j崇!>'TXA% +H(jR-&KµE X9AdFAu["I(:yuI +Td@OO-yGM< +Aڠ9㡰{9<մ]F5 z󭣐gӋĺI23ԄX5l$*Sbډ]`+FؑuPؙE*5(ma=>xjb3<’ Ӟ)p;X0ڋ צeK=\C܇>s_kp7lCJ68xmMHM=sްJglrP0ðAԛԾ.O*Q F&3ml1|8vF:t:)Pf[yXߏT @bhfbHcYon8aKZ/Y80fbz!V& \8V)ͧ+reVS,&G?!rO3mq1^p%zr;@6A9m7M[٤?d]?UVM=XAm?2\p\B~ǐUrw~V}iЇ/iIj'-fL 8N#NG4.GJ6d^ʦє#! +=%Gʦ/Fb'NV!B>pq3Zxi]whM읍@+aV?Gn,nEGx #FXd0aG"_,tZG|-1J@{]w ډ6J?LS[E (2X^y +1cR +$4hWo;S-5C_EesRtoJ~v}BImW1"ճd^#kjMvJn</|EUWr៼X V0˟ +ҲH5p hoO` +K=T:k# G!AY, +N s'ݷg!}5] iJOBA!VY~/3jJWNuiE|:s`Fˎצ4J2xo_׭ ;(Kewf_y;s}h/0&CK[g`;vFs],w%?MezцGM(QI+yٱxb[:fM C,' T >la=; >S\y^\ :rFJ}ih'dSl5P)JXٮm{dpqU\ grWq옥!V" ^ +n$Xo46K RFѠZ 1p?;y堳>@T==Ò]`{tl4}šɝ`76.]kI@J`$LD5T/"Ln=Tf6nX_Y}ke;iQA0L2t¶Q98.BsP^z]9C]_܁yJ GtzLGfjk5ff`~h?*ӖVPBPW + 6u3xؕ z'6rsZŵw|a8+]14÷lD|ڠpQ +j%>i;0-&2?a!D,twhirJ7(KN}Kazl +JjWZN.ZƜJDGT90cd`b}˴ +`5H~2&8wY ~~l;܁}퀬mӥK*yjX& !x  +)!*V'2Ll;Uq@m~ag-őJՒe v' .)'ʈW9ž! +a*o0^o gLwx<3ixDI0!X ]y|'X&@ؘϲw$$\}а2ߜ_ K:X+eU5xy:EU7>7B6L(`[#9)|X| fɋ!0BFJ@eҽ> fǺ,ΔeR5GC!Eao~f5:@irI(?dȳ[IhD%+bV"db}5R];GIXMH'iaP&x_K+0{oU{`PiW̡3K3 R@ܐcrQ!c1+z_&6PJF{/>twF"]E4(B튷6d@y(|y!4Bjr<W5a `h?{EL\! +ڮl(#='Hw>UuhG7?-~7\tg4PD|SfuBr3f0J9'B ȟX}{l O!"pȇ`k~`f{.7ylmU3Ҡ@h!HcN +&SQV U,F[݇}e 5c,,ݭ \\rQǚZEJ\U,2 XwYtY@VQ4 +><KiR)/7!Q_C>঑'fh#>ɦQ55mbe@.-umCceC~NVU)4~rom(k^TE<;W̝|]MX`>dJ<+{=}Vvmf֨?jYCV~^(HI(>7M󂪇flL1eZ&uI䧬Hlau؏W9jP`b;gXJ +pwZYtskܱ*k%D|t~XKk%WlR`f9hfCw`I f:WzcGz21EkGc_FٷIW36p,:T¼kOYid>+=4ݑZlrHėHnV=Mqvde"Qo+#9 +p=p"VR-(ӤhtLye"L/sQ9tL &g,la$f+Q ;VoO8 bg~`'B]}Uf~H3NcLO?.U>ݵEz>rAൣHp@,=P֍/S8'ke +ie~VUq=2**"KNϦ#ObL #Kj 3| YR[YzL6ɘ|9#޺#\(7Ss/09 +չk [:ܹ%h$EAHUpsݾH浤E(Թg)qIp%sKqoLM)zxfVTK3H3emoP<%Bd4T`9PŃJuZVV0E54}~Ct(aEck_DeRT㮻d=P~Z,/swWώ<@8fby+RZd'{ogr+9ZkȔT *H:`󅯲&+;F`{7sXEVH7jw |WYYq+lķcpf, kӦRg;C11mٳM{quaeCŌ4MN#J>,WMq'W$u/;4ݜa܋ !G^C=|uM_o!&vfQ (:"M;O-^B}T,)5߽~$mV! 64n$j\c#9o7ʕeGmF/Pjh3MKg+Q-ػɂ>Q#]U>2 *SSօYD%Q'%^T2$;4yB!eU'E.{ǣ8#f77EѸoz.{ROAWf}*C]{Dbn؎uW@<@砣sQwpXaoIDfVҼ#JsIM?<^.qҿ!o |f5ɦCV2vMM/'XM*mÓ8H>z.K YeeMKr y{s j6lq|_ӥrHHOf=4yͫ_dnߌH}ӊ]xjGF؎5Lyܞ.rԧ& |aYGBs"!e_+%??\\tK횱v,X++<;r i„LFI*Ze OOOcD`9=1c-nn-NG˟@7ʕѸ,jZ&q*IeAf=g760| L<քmwȿ3/C?UoW jV:e7ׯ;j©πqNă&/6Oaf-S܄X٥5ҁgZv!@®6yQ^!D(Q[Nh)C6=RjcSf`p]f/+ F5UQu9 ؠ9&0a4?TA^\ +F\oEa tW]3+;t4 +dsQ2>k S8&q5$(5aboHֺDEYhíUA +h19blnqRgrrmHe 6LWRoK7?5%6~H=Sjѵ]lvccu< <ڲiF5춣ct?/o V,&Tbz>xj2K^n75Ly Z6x< +W}йۿoMl`ՓbU%9|Ms^˟[ڿYZrvHk޳c ̺^ Wt{?a'4LŞS78=DCP&X*mX +zR$(m"R5"|:p`1i_.ooF4URol?0NEAODXŧ;)ʉn^w(&~M~(61F[ dGGb$p!.vTXjQ ixޤL7V(zy} v:~_YA5:`D| +[R*LtM'j,zw!rOU|m+{wDSmG9e6:D+2V FkӰ~b]3Y^YNi/Ȗۄ%ꪳc0 KJCig}xD>-'`w G~T#I^%<et p*Z&jDgf]YW e}zͿVtё݄i8IХks.t[ SZ%p B 2^rIvqsԥTB)Cw@>]) 4UѲZ~v 4 0Rz^~A;ҁq$?-I;:+^<?%pTmMv Jg _8p>2x4v)\ D ;Wg?F#xlu[*΃Mۙ\kKC Ow]ac^IKyu? +!m%T7mN3%ݓ!bOGՊ1Uuϳ@-w h V7\F~$D< `Y"qOp.'%؅7yz~ E %u?G)F%$<#пmAub_6%"S5&y␙QrHB+uq@- [mmxcb}=3w!/8GJ_'v;!ڇI^_y GP:cp +͢ B~98.V$ۣWXv쒏]S4(hk ;ܟ@$;^1~Pq(!5 {5[oPחVֆhZw(Wz[ad5t={8g\h<{-2&SՕ-S7_4*je`~P8$]FaBC )Ozʱ K@6G岲yC3i+R m ū WqŬNn0~1T.?Ph]lb{hNzL42 BJ9-&% <7,!ujΞ. +P @]NVzf7R0[S:ܦ_QI5\gWn0{Aײyk(Aꁊb4Fx` Sۘ2xݭ/Js;`.c,hh4&/ cְ8"5 E9NAjP `>FJB>qS#~+rǾ~fzAQdgYJ g -Ҁ4T3Os#d:mg|[5.%V蹵z W[hMM*Fqư8}0_KkK,1zO!|11=js_ | XA04AjNCfA#T8CYAM@}n(!NY19~ n;qii@sw5?쪃XUP8tD*P@rAS'/Q́--ZȦ.Chԟ{IY {@ X?f)+%//F/ +iKV̨(%Ʀghc/9Igl!@w%uے7/7-Gx#z8M8;@ " O- +1ȗ"kx3FXa[j@ێu/llרŌmKgM kئʗHxdate FJ*3>b5,|(~;rX?mh9q3E@s?EpX5hwh@2y(.ϳE]>Hps$ ӟ:.Hu:b__7 `ڮ8,-w$)/ QEBU< :ѪW20IV prpV"`u{($~`[Bm&$ `!1&s}ؓ( Db}3͘)K7M=2ee/D.!fG1qqwYUGOoq`DKgCSa/#im)6z1ҡY!}(8 +\eczWv-cxx R_g$l0\j )K.flThh cQs9mT"00t747FZROz#R,Y-ROh H .$_ը@]7uU#F؉ 7_QL5pdaĈw.srO)2Ad^!%qM'QPaoB҈UZψz|BAWLY;YXGoNkhUqPsd|K܎oȟcQb_JljP6XuERsCr&>?n37/7R2&όck;oXE Kǒ[EA+ asS7/gmR[FN/=#s`i?[]3brGfI7*'6D\"̴3lN0b:$ͺpq/~#ÖtTy袏%␺#0VJm̟*^?| k>A+)^7"^!.˨3vEV_GE#|W4QH+s8S,Ts坼+vYJhƟ[QD(3~2VF55*<E{} 3YO63&Ӄ JU>] 'BhOb<f^"UV^sr>`٬|qnv 7@$vTg^mQo'T)ʳ!<"I}e@8U<6Q0v6U$G3+lA +nۗ D>gd7k>u'[nhiF^FE>?G +ٍ[#yO@w 8B4LV-jXP.QASfc~?w6uT9BԳ'0ycC}ֽ<)IhQ FRbh796_;"JF6ZCg]lɔ7:l1yQ#9-RG|05otrb-i1bj-TD.rw¼ !'*up9RCP|t1Plg5#O%??-JhPZ'ܪcu%Z_s]nV9E&SKfঈJ@jIa*D?CH5a + όSia_X]I٥YPAIlꑏ-l_"AFb,P$ݕw$$W;~/ vK;jqlf֓co ujD$O=Z.p1AU@ D&Qm=9;Y6:I'g`BRQMOLiQ0t ׶O>,Z`#FA0PT<3Q”b:>+ *;i`5l]W;1uBHۘ냉LWTpZКoEH4X茄ʴҖY]FjٻBW`Ŗˀ[Ų؎!w''ВTSw@|=6l2c6}tre.\\\bn"?>}?̕DT |$沽(QǨgJ(Vsq3z79hm.ܴpZ{iOn΁[Q\zd"@ʥS;pgjNh`M[UJffQu!H{Ԙ·3v\ kr؀zV7I ;(eb V8^iHiRGޛ/[,,Z:w%"9a-^a3;5421CY*` +R!e^h0Gi_vT%zxGQ+*.(6A/O vz#.%':aG  Ly1؉?;kk3OD„@l?zŊzd&WŐ~GM9/6ŘUr1 Eo=iX>Wrj*K"s |I$R-쮡L_eM=.?ߙk(i׻Ci};ҰނިeER~o^nu#VIZ9}Agy'R*#E!+T#~(tDay,Mx)GH:u0ITB=UaG؇v5h9'8+:<%[ZjJ|K݇Ҹg_V!c(H޴q|-rx^Wb253IqlB#Z9J68M԰#GzHx:&_ +@C4F\TsvVwvFƩe y?.}›a[$J2Uee}ױaY1Gmɥ60_Ü,מf`i7qU =ۋ*ʖ6LxSM0\m"S]?k~ZCPѢ ő6˹Dj)ueywc^ +cQ3_7TғcZbCvaFdQҝ2/`3-irR{96+[TDr_yXo;'y2sVzI -A2{҂Y2<xxX+)u#(J]] tUԮ4ț + |+fo` 9 jRVa4f2L\5w9 v^a Of?V0@^7N + Y9iQ aVR\%0_yWϧ^a=5TF{:Oz5i3y0[^H$O]|Z\ DːR=*]9?efRr5^ݠ; hA.&P1S׳m}ƞnGFP] %L%ee.|VO':;(8^w1Rag2| 5J'+ǹ('LOa :6q ZXr x_jbZV`VW#3ERA[0){FhE2E;v,q!t.qXBOjK[fL< #2@\7X,gOu-fy_n(Y~ SڜfNu:VNPaxߛ澓wZ9]$t6$@tPA|VSƭjzvW*-z >Bx~fnjWxosKT-jF`"h, ٛ̅N撏2o}|"u1(jj g!_0usG_NKYE]0sX$fL[PB?0׉sjfj=R ztP2ۚ88<'Wu>w8{⁴-1& _u%r71KN 7xw>rs<NL>E2]˃LEVGOz'$"1y7|oJ~LyPI3Y (yXr (A&nxYqBy;Mb +pWO"\Q4){jl!^{5 1?\$8IQTݎRad pg'  N }>B(k )Eh]Si7i~]8NBcg cVd|ywm.$=eSĀ _4^ +endstream endobj 125 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 42/Tabs/S/Type/Page>> endobj 126 0 obj <>stream +HWۊGz5LMޫ +i ~7$#-Ю7Y]f1Ъ̸8q2<~:z񻷿4_ l8e?ܿ?  <|d䨵^ ?>1􏗿n(ڍ2}zfݼWYы?q0~ASf /f7f==0{^3ʳB-x,_|YݘЬ_rdX%Ot2UW|x|6+|LHv۰e( +6_i4R>['E=nFWP +WshdA!p^"bB@pR$@ u9O\^+ېCS0 +CT!|u}| +! +u+ڌ&忠 Yk32dJ0Dep 4}0~q:LFv-; n{ҌTpMǢĂ C9ϵZSO,?|\Q.JAb-҇_Op;& 6,mт +AmgyHܛkzoKqN|pPk%囐qZ=u-}רAŘJsM$PPu tڊCDQg +;@I@GݸLե{=9[lY?;O*z"hP$1Q[.́T8ȗ[QUȼuJwEUĉT]{uB kvAKmTbFZsw8r9grEhvVϓ1*Sv:KJ[b'ly-w-pH=^>p9.axrxzBUO.~ֿ`xq. A.]S瘃Z} TM9@A]e|^| W%4~u3C[Y%R;_M A(ΰl,N!GD"+b= 6BL +g:ls!Ds +ouu!#z\jAAF}cq(< +kt\N>(<ﭕ30ƊDBP)ɕr{T꧔xH1]X#5,'g%\a;mH=BLHphLU-TH1Ǐ,嵛RdNzuo-zrJUE!r%Ke ⿔ %D 35ގ.JS7hQOt _U,qO1ttʂ^jRnLQJ7V5H jFy +OF`9▗AZyǽB(;ȑyg ]U,ldOnP7BX=XH.m(prF7t2,sD,>W:Ar"BfѧPVzJ>4z`0cyuMմlNFϥætgX(`׸}*VdWԇ>6!g G?@"ɻޭ˂3m0V.1.L@j'~C7#\'7,Y){`oh-k$ zhI+mu(N[|g1V PMhh9~ Ky[ѣZ5!J\ﲠBb70 +Ќ`WaTDq׹5Zo ;F|В#xƄ?>Gܦ@9,Jah2arlM4 /6 +P3a7Oo~&lyBڐȸKl˚[] +=CTL/n B奺>A-]6FP98w k5Jk\MGL\!{0YCiu@ǡj8sZp=I3omHʉb]Hn&n&2˻6sd~o?Ի>R83Z>}y2(-bB'鲛tpx5Up篙n,\/OYUj@´3Zik`z3d&ZVdu.p9..*LS.\6e,t[]\b8X'9uWC s..ίbD(G`Q1ޜX=?*-G40@]5^FM,Q +H;1m&Ϝ'G==*'1IZG}ť]%to^^Ыg,&Q5v2^K;XL2f_h"b_Ȯ7xt`gJ +k+_)tn36y*Sz%dl,/,÷sDkx/;..^-S& /%!x}/>8N<*Wyf ت,@svtd3Hg%¶wv׆qƎ1gjva) H$ҎQM9ݦ\3F`l|]D2>h5dzI^<` ч;]A)RΏJq7aNJ38RMC PbM?4jT"\0q֬p Ee/45wG,]P;_D m`LZ(T~' 嗋Cx ݑH4'$v &,#ue>2mW/aZ%U{\l~NQ\; YN*Zs˔6#ҴJmM,vK'3_6g+>]y]?]j 3Ƞ +V +BAxX[vÍ? . +endstream endobj 127 0 obj <>stream +0 +@&p + [2E߁*^X߀fnήtMYiImidvj[)"M" )|jpEEZx{7k=uGndŠG0^ԣT u460ƹ6m!{jC9&ʙ_}FJR +!0lR\(\% @,pN+NfʒD$a]̈́1Ij'C1F+|lO<سNv=.CdjP`j7pqE%k+X `hg^[H"h59W!tZe +_4_m$Ҡ}>5[\N } 2؉es ֝*ÃTPXBLX +w2CȾزV'mrR$^j= nw nSbz|CxxEFޚL3_BN 0V +A?QoOD*A'B5厯[ +uQR +^y)^T| O@WB}lc]ԋ4mT 6rß]|˧-TځwylxCR~E>0 It3vM|Xk `;^⠉n| 4ZPM% !(Xy +/A A*pW0t lc)t~D5ʬfErN7/WtQCÀJ1ךkvrׅX8")LqM@ӫ11f2$nq0TM-VelCHpݍ H&#Yǧދ?_6YmhnYK.Ph@oM +Ǡqb;G?}0x?Ns%};0/tэ@؉]&}`;z!)'& I|zg(201r^%U7iPdK.%K݉k,lcx ooP4ԡ ''V%+VbםLvf0RA/WjVrM6G$bRmx`'Ɗ4`\cxDkv݆Hլ0Ls'R~Dݦ, \íPͱ .g݃q ~t*FT$F dkяT'aŒveOCpZ%KyÜcs/ϟQ,yE&8R }ӛgJfHbڋҖCloIM=;_e6*n/\B-z|EuausvYrun4WPwVr 5ϴ0 C9:Ks1Oh~¡gkU0m@10pt^6HW.Dy\Be@, + o1^[; sJ=CF?GtaPu8?EӏST/VY =E2kk~J MQj+]aEi`dw1wr肬N̮V%}Bܜ G Eca"_46| .sta‰/;F./Lpƽ.2\z`f}˅8֑%뿏[e֊Zk):Шix2h&]և&ihZVWV==6>p%&'y dVcx/jg-hsXg-iB@ޖE$qȠJZ)ÙuVM@OWѶ oHSP]F-JL/2sdɶ">D`czf&͢*gJ|cᇵ%/#oOA@ͯ ҨU?C^),Ɠ=a^ l6b YP'o=ǭ[2f2v k}=M1QME1{@^BE!1Cwh3o{#Xmȹ8QL⦕f.{<@p(M^peg<EJ{c2|.N08ϣxHwqK~ZnX͢Pf2my`wV] ן@=S>.|y_ .%d[L)8U^Bi$W3:̸cȢ:U%;8ը@ bSċ}Ͱx"5[- +Ї1OgMPS#0Eme9emEgSh +~g 5 eΊ*@?(IЋ= ӵPV#7OZ[4& |!bΊtr]N GQ0|IiWﳺIlOʳr DgheLє8j#еҘߡ1HNHvmP^1`\U;=B2zTis?d3GFwɉ G=?҈H=TF>fGa=8N(E8.hp}5Fc%2{o4)W_,6T/GKjB|jUCm69+o &3_c4uzIdz}sUso;hKCiG,i-<ޜBm;FI~/6 + `P +VYV&谍N i4B@5dM{9gz)sEZ3'g'Q{³Vr`}s~#*p1@ +O(΂+ݴtB% + +{Gq˰|Ŧ+町@AnSECfpMʄl P` $ﻛng\g-n,bww.Hښ-hOgTН}[f$r:٫Е_0 ɠoӲgՊ~n$/:(;d.bOA!ym `z1@;' N%ⷄ4/ ?hb+s>2C"tb:ualX}? ?7D,vՑMk1 ާUw/j&Y;qixF +ԺAΎeޏIIu̞xk]xTշfe0;xf-wĺh ;XpFPj +SqzoČkFH1%J\ѿ($Uy.p°3|7z|^뇂Ő˚"M.P#DrNJπY_±!%ѫ,"xтANT;@$Oݩ GL:):o$# ̈/_t'?e͚4kRL0*ʪ p^!`!N^vDSWp{ :W +ϻRR @V&8LT.UDTHc E1[ HU$ K;$< +JwU̗E|7~@WXfl*)gAܧeAlsſ_}03g)jmP~-o/'4L4g6ዘ%$ skNpUE|YZBb0]h ZV*3 n r^K;:`C &ꋴeOvWR]i4^P-]%FS/u,u>!2R]-콲.n't(8 7\/4M{r&pFohF*/Ԩ2/B!KM+4YOPyu=Aѯ;-Or +51/*fOd8690Bk6H TOQqN[Q \pC"b/T Ϡ4izO(Y];Ogy%+-Ph%c MHYO!Z ,|~6IQE 1_NPH$'/R8<涑4[7ލum"$l!ػӪci|rAk[+w$* +eāwDʉei`G6(&ĝU7}Ra ֠Nˁ î# 9㑻 Ҍ qsẃv=%sxW#Qa|Cq~'1F(ܬNVܶLSW&E%Lm0CԞ_Ye#Ga_OLQWTnNH +_!t~{ ɵ%H`S:o +4.y_1糲kelOwN_!q~b;R7),}nWk`(%9vtzZ%T56dNKkwX t/iƝV @Ejd'#fǬ" ]"P4 +_z4sϮ7Qzy3YVM':┗F|8{}ȡw#!Zpl&= ?:9?rV)-*' G &sYDTKqD(Ȁ|PeR7E?\ܱTcJ65+o>y0L_x)]|>0~;o2~631Kߢ-J!w[~kp$lm-mx;(|;\dxF$fU-rKTx~;3~ (P}:w~qyY]wC1> 'N^ pjn5% {"j`r~TLNNu, F)\_@[|f=.ZKz溲ٓsyjeP#S=跌Wn m,H(ʨ܁w8blBxyC(z6. fK:~^~9B":{t7#1,WPC%:RP"Pxoސuq%0`cH qɏl=E Ǘf#pZ,⌘Obk~"[9oe#wLrDCOw襟Mb.3i3sk&aZ4F"qkCHxŠݨeV +B!T*|%ys0;zeSxEbGT8D'*h]DRs?c]7>+^uA$99vS*Y4M_Kn dSg* OU'[X_E66)` 4v`a!t dOu.Y)p EYtk`{]u"[uFqU@@swj_!nj|ɶX HdZh|{{!I)BKٽ?L.I_O(x'E + b;ƾ\ 6Po,C' aY!n @}_8J-2^50܁qbsH=$-6i„@Z)]d[buN;J[ wSw?RtZj %WcR=jr$W ɉLw9oƝlpl_H[`sytO a)r0H[_Ro\d4[OܲH*}WLinh ;CxwA_aKQXlĢhmcq(<ǂB fOݶk(_Qk+. {7y䳍 + ?D b}O]zw_D񦟃ȇF\!n%g`<"`$'ERm2S$Q9J2٬!dd4!V%1e9zD&PSK3'܍z*He7&oR"ţ|GI"9xc)lTZEQbuBAԀ4-rXٖ3lK +GXCh j8˺05O=-4#&\oj݄֒|p#&jU|C,9ܓ8 927џt*" DAn z&:jYX,2 i~j2c.(E?zږp ߶6-N^>$KU1ˌ!{ Cn JNϽUݹrZ!jBc$Y%HflwWODԬ0$µaba8ʘPj.O_]@3up-V`_t0d ЎLv]ĿA{W.}G"ª`ky/^$.7׭~@tb[2En.5-Y5TBbOhO NXRlD +K<>r1iqth&]+:{op!Mw1M^GZiZ؛HBv%ͣh^wGS:_tQxDf p7byTJ'i6#@{fdVpMDs,mF>Roxng4&rn }O8kYR ]:R'{Xwuy<9mʭρ6t'U3X"[⽭ݒ$Pܲax#g2?K\mtp+>2ѹ$]0:mTɡcruuTT+[,2&PE؍0دυR׹\]P)T_vѕ!IE6ܒ[e;_Ld`+[fG|Fg^ѲŦil)}p>CUJUaG}8_V,ap::XfCut']R1,Ӭ'͓F8 IK +\EE{ܧ-@cD;8(ȚVlSvH ͸8xޏ^5XJyyi?Qo8M(vDSY}Kf^q3$oZCna얁da}D{[8!KbU4-`ݍ||أI 9$b^I|hDъJ2a3RERA<>u5aLdQn^23"j yY뒔s*[-sM6Ӥ0$ny 0jNbުcQ ;2ǐlp3%;tҎ6?HV?ȐEd8CQy/s~6QM]Wi *P~}zMFbI>({`+/,Q +C ReDBnJGݳ.Eq5+ёk#5BI`+3oOe?z!;ŠA)" m#FJ8!PP9̉W0%[JEޙr{H|5M)(A~ﰮWK< qI, dIy ?J#^)EGyMt~} +ȭȴQӟ]Qr[rvc/cus$ؑQ=A;=k:Nm>5@-$ 갅v+ŮpkjO͔yLbQˆE5ܷE$?4 )t04H~d*3HKU~MW[kjAJB(Ag>E1 +}:y$cIz.V)1@ʺIJvwiݴLUHH熇O" UgUM[O3VdȷPvR @uA7f^iܞ/1vvQPSIߐ;ע73rymG#1MI7Kh k|g~dX]f!#9:P4Oy\TFhxD]zzX{X7B"P4ҹ)[#O-*)^")k6|9، IP&L9=YTaWW o٤\wT~_a?\bf^ +t)/oicq zPj6+Z@a͖6$ROn̡lX[r>R,{W{Iל7+l4<]ytˎLt#649ڻAG]{|j - e1 S-'h__N+Mtu!-|QJǒLX&UF֗C,>ꋏ`[(˽ |ZM,z*u𿕅5/8䩱ƸҊb6/aN22o9B`H/B/14)L(v-izH@DP`5V8I\Q }щctd`Џ +%uhH^<1; 7v1<K;?EEmtBa%ueĥ\m5ޜv +K2Qח[TE+J@ؽe2!V&qnJHfpB;kg4QC%|]W8iʡm]ɋ޴+U@j[+-EZ%z9Iv #Ӻ:>T'}+]L(E rف"1=L#i@'rm+Dujr'lxfPѽ,%!7_&v|h`&AaShZx%=N3C3M-fCЗe>n³{jm凴,.ق!řrsxw&,VVmz j,gֲ7n NE8bU#c!(^svXG` ^,|Ԉ?bΰ_n;Ae +7͊^JE,wXg۝œCV9[)LBUa~00",(HSSnqn<02kQC,6fh # +f>$1sxㄑ7hØKi[hVV7ك$ LK ^3=L-%$k1rrO*2I?-*ed)VC%H|/wN7GNe\ i .z#̐PDVfI@O~͘k}1?Ù-\a:YH.t8T:o·&&%nĺc z9=M7Uz۲ T쭯Vk WomWt"嫔bڣ&mMQ/SW=m(ė퓩iE2{*2KM j^٨a&.uy&,N(-OLLP .&udS K"Z\<3Պ !gIe#/Mn74JT'=Z&}^8`ͨve⡃0 MEGrUuW&%p9<`S/9zQEP*ySA$n30ȉ%Zd(0pZQngWqA d,\2f/4xUefMN_,h3ګU% [T"sۻ%L>Ml^BӜjmcPg39Q#D) 0΂9Ye%1ޖ+ >_XFe'qExuy]8YЃ@DNlԬ'=(zr2ZopSsTKHa%pE7:8pWK7ʝ1&CDӗ0]!vK+"܋KySxgɩ]ʸ+D +NO_Q%olA=5 $zNJMjtdUYFM}iQ$ɗIYZqdBg(m A_~Ow&7_ GƤ˽M!.i#`Oծ9z!Po&AF9\ <LJ&kfwC2+zZԖDAW.Bө@V4) zW.{.bwԞ4>'+%t\K}i,j%k{kgq:ڞDY|0^Hr &YbP:Q3u-I2. +<@a,hTl(U^v$r Zw$m ',Tg׼r}J*gna.{J]пu'sxF\_> hmnKxb]s߻kϝqSyzR`Z/2t-B؅WZڎLP g=%5 +03223g'+%c—o)0+}o> ZvseA2hf0rri>ݙ4>:e}φThG[+66I,9ܸi&8YT wUaE[] +9g̙K +^@9#"Oݼ7Ph5^^I-3٢9VbHb#>HU"l iMw bo`"^UXjZD`9vdb +'cɠ>*.#^W8Xwn.c{E\sٵf^6 f7O9'6W64)_TRG]Cz^7Y$)A5`e.; 9h3rmyI-1~b2!TvebOOSb)aBt3tVyOp=,G,'Hyv^1ں}I7jRI}2& +u)dVu޿ cR*}-xAY!A1918(N[:ۏ|kV3-;BU> 0hB$&ms=?fTOOJ$~Lv bq ÑQOizbKlsHl\ _\YAsvTF=!7H!ξ'lQbduxl$`'ܷT n/W`gZ)1ԠK +]Y.09Av m[hɤ`rF-,M}~R}ʍ8ĥA=[Pc_tNq_,P +l^$Mc}o'>1JVt'KfoPڃ7C,MC# KaRLOzŎabxUoMhҟbOu&U0RV33M'eP W$IJɔݔAȖD^d;`a5ya;;tq# +$5W˩sE$ +擊Swi}'7NjLO\JoP8XCRy=QN 0/+Kߨ0SVti_L#oQT}W/X*Pu=6bcB\|V"YՆ.qwȮd^&؊x #jR2ptjSw]yi*Mn2%:VS笲GTށ1b˃*Σo!#`-NX1߰}x1@l $OJW +`.ԒQ R^6_0Ǥi{#G7l(YAcׇ[0d S"(eZ Z.?^bvVOj9nG4"9Ck%-@GY.nx[B2S 0RQH#,T/]2r,DFd|"0.z!椷{:HVobY(rδ˘Y8'Y1oƔ `,(¦³=E@vxyq_:i+R).4˺P#@I^`XQ5?R#[34H^cdݻͼZ;fҮh0'{U](._; ӉNk~>x%xKI1aԙĚSgh/ &tذr7Q'Pڑ?= -pXifa$[[T{@}$OQ-*/Te`NZWUY|R #yqB-[\-Hh~SAojKo*)sݔQ8_MNg/NH xהyuӈ%H?NVpVbMF|ȫklOdShb]IERm`Q2q!(=^2$љ2V:.*}}P,!P;̾幬OHM`_c0=Qw?bKyD-c4H]6`ySm@s=q\$k_,mu*!81MLS_E-{zNtrνw{*ȣ,@q8UgF{rNL 1-'j־UH {@QYot:B8ŷVm&C<7暬)1i8e eap$&Px?;s-%BVZy +iifI7M;7+82Z3P$ZBilM!-ŝ]. O8t\hUmPLi43%HJ<3q-3O>vн=o@4m\g@(}?SS<ܸG$.5bF{ +@V +Yclk-)-E\9 +lAˢ;"$ѳ yhnpϢYC A0*"ufw0(6pof/s@MY7`3ih~.;huι ›Ó + ºYc,gd->[5̈́CKX%iv3ӧd8]ArzBDO=k5az(ړݏǮ?C=N;w@aD;BfeYPٗ%;[,}k"h_\áQ}|}W4MQ=%!.HiTv>+Ui*캍lMmE-<|HJ ul;y7r+^O;~r@s +2S''xBE8~tǐrH-͆~wSײg7-dFTvb,SCT:Pd #30/ZSE/$?U4]ΘtV_T q܇fWi-MMt&{N#;U).ӍlD Wux(S+8I-6e-٨ӑ0Z@ 9uS9!xǯ\#cDŽyEL7ys=hsn)0,|9 癴S+J0*v*SsI> ^33vYy%sݟiD,Rc=-t/4$hR.ް&qx.lv]cX"dN`胫poViߡl$GL0(5S)ni<fe9`KLw9t Opf{6vEs1㋱=- 3@Q]>+^לb8+P4_b*K3LV{_q_,;Nm>sTiG*LÏ w|1+8Gys<&̋ۆ“W+ap 1*k +b$mAPTҐJ0r0$u*=5 Sd ~OEz|;'* Q~q~D.OGm`T\>"2Qշwb>#ExO9^\GM>-*ctrV,ؚQLV<[UWr擀cS^fW)&#(>o +f$b!䚮LM>Z.z#KwccfF-Fvtm '2KBEGE_ 0ekA.P"_%| Ž^'uH_me*n&j[x\α)6Tݍby 030=!q}<|XS I#4@PFe*Md'+-"}Sf8ɔjʤ́CK=:(:BbgG* gUNs; 3%ns.! sPH}"IA;n&?B/f0a|ko{ ptj=C);3bMAT ' L`D8L` m:+Q\71Vm4& 8N=C@Pͽ R14vH_FrZh%gy;h!1+ yݯ N8HNq=Z(jÝAL=8rX8)hjRLշWΔ+WOtZӤGwY^JN9=:<[ދhMkVLZ|3vPi&>߇دnP4]Nz}&M^f{Й7EiD[TG47C=;^'#:$`ޛ[JR9R%r\/g\M'ʉo߲:5CR{8gXy`O`}] vQ:mGFޛQN[.[ ۳5oX5 +Moy:@o G_L31TL +W64p2hZ냿ּ`ړF5ҽ$;} w'p|¾IFGc@aFI7âIY ?`dA2!!81"~|_m9٫YJPƉ tT5?'MA>ŦK2fYT-BX 3*`!|>WDW-K,PCiAj}f3@r9P5-UJ5l7<t-\`sw:P$>‹|޽ H[~#p1EP2tۢPZJ ^ȣ~sNs']+al'8C*=2lRC>\fl%=*P9 s{&>mBUX%h]nhk. w~0{ͤ-: :;&좰>U# R϶s2B_woIi_V|2&b9%ܻn?V5%U%&ES҅ů43d!/4E%X06&$lb:3 +m㊕yۻld{eˡP:'i1Udjnp'P̒(2'@OHvwX_]HaRQPQm}v_J/9hă+\@>{"ʞL2\UMmaQ5y;s9)ι)a'6ݗ.fr`jh?ŠrdL$뾟vK+NOAɈ54 43I 5^mL*(e[vhّioGos!~QHʛ)ؒ X0Nr+@TCx`fNʒ}tǏ_g/Ñ:$'ysncяt̮ig(xτ9Vlp[IDU I d{ S{L8tVb@3֋ UQ\wlbF Ϻ{tL]dja[ŨY{ǻ=Pm,%hDK +6;8}=R*n28;8,x].X49RKH 4bTN)B]w~OY|Ȍ +k)[ ϻ.,77,cLJvsP%hSt6 ṀA#U <:ѻX%> l@Z3cB'QbI TvOhh$eg6$ LBRn)b,n a<7/3K{FU^9I|3 LEKyEtpyʹ\ ƏEU|j_1_A'+ϖpAvv0m0rQrl +?vB=T%y|;+9_$,ˊC޳I ݍr&Meѫ%wz(Dbʅf9_(nBÃsu)8b x6ā[c7]0@D딫?ܠTVISA`z@]Lz6LXvB0wLA|&U?n1 d0k"s%<٠ ;p8\*˛5 \b#6u/Ra$<%n*j.}GXCEd?gWu##Li|:F($Ln&眵 bN#O*oQ -*\eclCNև(v3 `Aʱ[4 2Tg&>4)bKO= 6|k(@`~.by H#8)Y%yC^ߙzޢlfҷO!ۂ=^1%ɗ*7U`sLq65XжSG7V +s6rh +7g`]ύ ʃE(88dّ) +(ڜ+e$eKw!-H[_TՑ; p͂Uivjs%yءr W`iN0\iרuX|wm,ýl*3Yql2I7A"l٫(T ؔ|SWCaC"0hc ASI!.i$j(S3wx;ތ݌: +8?'0;tzL>hHE;'m&*  ibXQߕr ?;23޷ZFYyO*w va UEA?AB]>!bԖT6KMF WM2nkMOG(0Su~EۺP0,4#eŷŠ . @$*&wFҖsߦw L_MS"2ˏ,JI@h +^g+r׆POeQ%"=dRM˩ge=k-J'rKm{?i-C uPwdM/lNK{;OYA^l +ˤADa.MNg;ܬ/cU:uGWMׇG0m{DsSy,1Th^ߢ%:GmS5qCnEc t .$Lcev(6xm s奖_J G xFM &Hw`6`=aԢa"bEiT..+oQUy6]tX>嶱{jtkL8P +endstream endobj 128 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 43/Tabs/S/Type/Page>> endobj 129 0 obj <>stream +HW[c+zL΁A0o!a !>}KwiYW_>px~~9ߞ?v=o>\͏q]o?rTNOgqOY& O5}ifʦb(ܖ G9Z4m| +4̅y9?[Sz9߸FCYkٗtֿ1~]:c);zo[:16 c_hk|ob&;Z0-PZ =cdj߬aD.ȷm?Ćǔ7{$.#~uK=V'5p MjZnօ٫i}EZ-MA"|@_Κ'qYDLYimנ2u.9.6G4Eb& seƄAk)h!hZjHY(E ®eY#bO E[韥s)eCb1BA/N_2b`8՜Mޕfd(Em m fSKY9 /*Ȓ#C.Pi+} +JKp?e1LtǙ&4Bm}KkزlZ'i^FԵI(}t"v6W5sE&k2׉'h5;,lE&1~'W&0Jڄ!E◖Ge%¢kݙ Gֹgrb]nH=`j@& z<(5TV#@-: C +[dKxV#1+s ,QoH Ӄ)C-CV$ O0hRm5|3yLt$cA +/"5pB`"s>'ՉIŮvMJ+P3U_f/"魪#~׿_~Ϙ|>kbhOS?ﰅJBFq El&=E]ʏRi^xv 쬍I&u7x%4ި)@}'U;svxˉ%X ]"1B )b[{ ؠʀ(nkuu/bbk}DǤNM7֦۳O.lB!( ( U g&ҙUXB'݌?&Iew%i8,F4cXTkǫ {2sﵔť4)p βbsRn}-8|츖I}0t3/ۻ}tPtzۈR!I_#ER>nj'29)UUg814BP*Ҹ7ddt;֙EC=m5]\޵,vǸhgW)JdH1C[\coLS0sqV?N`|F fťFԮ< #󺤩+$,=]uhFC|$3:PIUs1f_KBgkġLün} 󶾫:3JHAU3 CDo;m֘ SQP"5"Øg+c+ b}dSN/z߇dNZ(J;:D ã~]ߡ$^B+=%2ƸJc-OǍmy +~3{ր٥rӚDƱ{pb*MŭjhW+ +2^\)D:/Y4Q^*L7 +(=W}Ԙ\5%x"ܭ)z+m-\Tֵۖ\sf>U殺UGɮ< uzzfZ6 IyzċNӥNr'}tGrce`h%W"&5oMέ,n[W'bÞQu&`G"O?{ QG6?|xNO6?RîIDsRCCGX'y%%P^9~肫;F^Ktk=6S`sx\/ 0ɭV4*&Fo4ة);%]NJOQ+ɇ. +[ॠNtߕ0MhVPtѤ x +wIdH94xD$3 {o6{K̢SDo114d.E9~mVB}tUJLIt2}[)־NJR[#i͕)кI];iI}=/SmӘV_s iKco8)9b8ܾ~珳´GN|*.)njQOh vU}uBv{{e},ZO) GOo"Nts8W>dCBwz߭L|0Ѓ'*u*U+5nnyXhq'K'it6nzKE{ =.i>LxQྗ9PD.ὌX̰$ܵ6|MU+\sv†NE];CټM [Tt;d' +(9kFh:8}1j[GKN忔Kn0 `@"ѐJ]VHVlz82Ę17Ղ4/>՝`h+.3)q/U|8%0$qtŊAjԛܗm-֙ Q +Uw@4:.PMAFW&` f<[O2# +M8;ۅ`Ϻ<|'UY,.aW!G'yInm*5Ӎ,ːAWD٘iZաtb wMQL-JR90x(Z}۱=#&9stYuHrW/zpP)f-&n|<ŵLd?8$ʘ}}4LĒL$tt$#]}B5!vʐ~> T~ ,9+ ++/;ew/5x"K{ _'Ђk0ʦU&&H9zO#b)Y&I'e sIp +y!%ѱ;iYNi"-C9^6uj3ivz;~|ZGz>l@M^K;kz:8t6Zn՛ğ+H +endstream endobj 130 0 obj <>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  + m!1A"Q2aq#3$BRrCSTUb +%6t&'()*45789:DEFGHIJVWXYZcdefghijsuvwxyz? :͌.ZrE y׿o3/u zkr|9#{OTleWWQ^urjI'R;u:'\72S&&fZa}u*""% ԰s[=#jsy-z/YnF6Y'o:jU}`V @{gw+ +a? Ua`}~ۙUZ(t!A'n˒!/& +6@>ߓKŕ:ߍ~Lo2 +WpOg< 5yWoFw@}X&m@mm׹bke݇.4ڪ)U3o۱&*¢uD@Z֦ձtJ0 M_<}ξVoԯv'oM,ӻvu,t[+4a=]ܖT +Y%!~7F zO +,X,Y֛X:R@ %VgUе}:,|T˙~6; Tk~dȻg]u4cc6Ǫμ* lZ߱2rLt6߸m_ߧѻr2nvV6s6P4*ߓEJU1~=956 o վ̸qXn1W(^31e[qU1Gb0 ٗ~"XUҀՕC%>RYNV?N/rn.IATv`GoTeݔ9R^_L>v~vБ ̌eZ>^O$5#Xczߟw@7gEWʅ;Xq{P[ +_WC`%WuMЗϣ0^U*0Ł$k_ u ȵ:AvgSErv?^fZ +(=KY55:+q,lc[iк]1ZbTw  +g9Xn@.D'>ىn-MKRێƃ);- Y+j{@,Ta?3I}|쒬ay lԥʲ7K-]'`) #q<Ь;A-ys6 > }<~2[R-zvfZף nk8ڄ,F ^K+gkX˰Z5ǿb5=u.U4[7Ua`@k`U Q|c?VLp-rj|9kgжc_v%W +u<yoU_Eurozw&*R€΀1:7O5T68DuɏR~|G{jAvEEnyB٬a#`TuLe邾bmkؙnuεBkM@ {1\oz|p5ǖk{i!<[jҬt $w&j/d +j[#yo^k3r +SH3r}R%⺧~վsl޵C2quFm7f֔v;+q:}ՑhFAq k.bu3yeR +66iZŻl!ɠ߮TtHoFH˻!JRշ/ /:!j ?"̯EE|2^@mMh߯SNzCl3ӃvA!UY܁ s%xl6Szo=6 w; +w=`|n̕1[n. [Zg@䠙O-x c2^'`>67/]uJ~\ VU~?{0gװžgUEAf{o12ﶾZ12K&Qr2rE:wϫzlEUׯ%(Se[1 ~!vR}RѯQH!tGp}1~ꎹ +Q΃ޞ%~qǭyhW̬@ ; zPFG>6,|TX;fN_Ա[įȷ +ec8#̗Tl欬)G=0 Rn"uXHNw壭ygD'qelȉ}MwFeR Z:>mmmORCl+0vKxs)~ՔX(X_OL>'F =!Beߑ?0k\t{{tfO[lU+.e`kiwTǥ/ko 'S]clXWP(SCd0`o7^LZ  +x:cL_6'`(#~QuKYjY9+ edۼ=c0 {w-zJRAy +qb?r]ת2V,`wo?<&ev\4G!ZкUoJb[kgPX&?KzT Vg-@eS(NY [‹Wִ&f & 2pu] wAW5utjDtuYt(VD2WX²Q֧kξ:.^V՜ږEO2z%q`/r` +Deu+Eu@I=fUj܊C+( 6 Wc|o@!|rfEn>*Mۦ,QXJ=bGLKճrS>Pg=YVAΨxW)AXF|K]S8JO11Ĕt0Էl>u@{ڙu\zxHk˭m# bk1mtevRK +˨~d]7d͈Cuُ!쟠p?P"LeaVv2""">*|hZV*<_^{rZ=2ŁBUN 111r]V.U= S@"vu ο߭|u@!_c@?M.<}LmjE(&;>EP#6UX~":6t˵X;%Զzt>^diϝH.OY%.6^q^]-£@Ⱥ3|޾H +j\-]\_*065ILΥBXI$ :S@L}i\lP2bWZq:+R.òAR=Uqޣ}\3SGG,u~uWTC_ab2XO+ljH ][.c`Yrye :kd +v4|Z2n"ֳg"US:,I=}sr'`w~>WB +uW1rQ kRsk_EuCN/T'-WKݘ$VZR:qO;ʸi[]+dq*"[/W`.A~^g7&a+Mwu%Ǭ2:m[ ~CzJ|.`z{_:#kjmpV ӭc0n><ͧҺdR>it^Sr׷zm}+H#:dikV#=^O0XA`BFـ y ®)n6Vs?|q{ɾfwGۡZ4?=zTuXʸPG88?S/-{5DUv nǶ52OiEuLp͎CrC ۰bW9{6Xkn,vkU oͪ߆{V;#[O_]}~Iwb:uqqY n]]˹`r$>͌rWꞙB&l?X~[>\ޟ]ڭ[cJĶBsH<Υ:e;ugB Jl+c3 +2'Z/fyUYF[a˶AfoGca_bF(X>o&k&:6JYbpA` j'@O}{?_֩%$+胿c)ryk`HDDDj{kܯ=Ea˄^DwmG(qik.q."S]w5!w HvؼѲY73o7UΫ,B#@eJ)w R-j=X%}#=nfe`RW[1⮌G;$ ʞ=$ψoC*+UvҺ/"4NgP*% hʃ-jdSAh `8O.Wmm, kkBdQJ֕U +%N;P'~*v~Se*@~{y n\FϾ~SЯ~ ȍ>(Nd<J2 d-(PZ~R_ +}v׉G,%Gc`~T<+J +`^ hjRkx֡G@ɭOoqS~rMhIU$ Mj$oG]SȭQkB +>Fj%hPJSV0R*IҨQ{KJ!,o$ ̢c[3(f& +:fuE Hx\zAo'7p]C]KxXqSVAǴնܝݝ&Ti)󞸃St#HF*ZrP#碊{,ƪVtV+$$oΉ=EF)K{:8qu 7GABքWˊ(o~?z8.-S8A@}**@܂} 1Ek̍9k3Ц4u J:e AQ]E`?Ӟ%bxzϼ=z;(=zkyߏ""?|J يޕ!֘w޻yvc] +_,xhh6KSsib3/U`X~`Uɩݫ[PǑ#[?!zbl_ _xf:w'jX>?|J :;TڪtH܁-iun.pt}OH깽Sbe([hB܋*k lCdՌuAlGWȮ]ȐG(FÀRܶ57&VKdUf쥗j}fN6=o?k]O%##r l^N U6y oz wd _2THϰKR pA#^o=*,Vw~oE H_YԠX?LnwbuSuJg_]J6%A̡rq}wUlKnJG?iUucZߞW&sXu.ʆΥlg`y$>? ^Ewok_=b䜥U>;>} u_9˭zz}o^GQy& }s,u^_JƳ&7I'@l3+)Up}A~ҡVCnLX4ָ{;կ\: l'FXlȀ+vV}hD!W]Ɇp6I%h F`k,@luMkߍ}guAɎOa(#/ A_ƿ~+-^HA~Uaq< aט_]y!Ǫ̦ʰ2pN xֵJ?+(:}o^ܗ(d` ?|H޿ߧ- Y2X lͯ}*~:}?J؏`gqy=udsw(-BAdlo_]Cڕ'%V|Ue *=~F{6dWz;'g9v|q׼7 `ρ%}E̅]G3$gvbI=ɸ!zw[~7٬ZZӴiCw/t|pSY)Ztuu@IkG[8(f@0Z^`X渘![Wrx{YEX{ +kW$$l];'ae>Uiec}.xqn@)_m~sqj"N,VM|54F>?ØwUǘ)P@.K%j?] p:Ksk•c>>?_حU2B?ըfpʤ{ Jae+.>;ZWj_lv o,tu}3(ߏZ+Qg5wg]$)FNR&Z{h# +]k[bK}On|HCV UO ?O&0eIK +*tlk 5ƻX36f}e:_ReT+WbHRE@ֺ̺HrQ[.Pm-#̛@V&Wf689Yk{E/;ߙӞ̜ǰnĕFPkDKi1EvGp6FǎN5)}Y`ka_]&z>Mوq?QP+((9|oH8ϋFGU=M ~mq̎ӫ긷cZ6Vlh6*lL\I[̐Ӭ^W +Ҽ- _R0@ 0GkwEKY4He޳mvup" +ƞva͆??3^YW',V@;!oz)c#y>;R7c\Jܻ}g +##1h,-+āIT~'͍N9U\VCG`}$[§ x%kO@;N';zx­PZPLfF|LszFK*bM[ةո:Dٺ 6d ,(ލ@D޴;VW^K0lLJ~qjIǻ=jI"#b+Oﶻʵ9cwq0JYhZDb\ΡzmYuW#/%O@lk^|GLM[W_:Do^$N6=ZW~yFzvH?(Sv±ǥTeA3Hϼ߀sKA=; *0Rweu7dL賷T0#$L :/O^85( h["z7!Jr$14;ɼ|u P6Ceme޿- ȱ7t0Lڴ{w +lK~GY Oq j +# -LVn]-32PٲKqz]-gX +7;(fW G`N)w(L5Q 8w>~c3Uayad'48TThv#uۏת*>א8*5JxlZpivwVթb_rzyM7USu>]Ǹ%|;z%]J3Gg]o3@[zUZ wMcw=1i9yd 7X+cp >QG7>mcճh=]m2S)W4+KeQ* lԑ {Et*615 +kUva ijO%""1h]Z~t|Qv3h5!{k{=ܦ7Mĭ +xy]=FHÙn"5:++YWBBKYC<&R)bV >LSѰZAƧ 'ַ+q3B iV{k_#*+EH։_`65dV4A~X|8Po's}BcֶnNǹ˸[)J䪅' wQԈv̪I햱N&%uT;olGso^gpG?zx{w'gRx+s .cU]N;?Ign5lG!#=}]M+G-GuKoW°MU iu:繒83MTo;;C0Aƫ '7nW3cuR۱씷bRRԡTZOt`c7:Dnv< i:^%jVϾGdʞi8zG{N#ș7LGQwW7Mxl oO9= ,T]zr]nz,|u+G~-=lXhhG]^J5v"V N(" [3ݕ%U0>Asrǖ-ozsp_%mQT;UT@c=nzhYsƹyGNƶ˫U;vD˹e P:0;T=BJ h{>%8VTkg~S+ +ujc+UKep޸** ҃۴ұ1Ԩ]FB, G'[USp,ޠ<]>?zJLŲVjjc^g0q+( o~Tw=/G\z6{ZnMm*7?#(z>go׻ ceF55\ x>u)\Ҍ˭10ׁC..:*N6\qmitEg{]l0zf?M ('#ܒ~'C{Ooe{TseKXcO^Y{$k]@U{ m^+ JXTo] ⾋R=`X4@9 VmGٽ +[(; 8@t71gOǶzڀrȖӤa- Ec;J3moKwnItAIC[1bARI:>>$mayD5Ԯ5B pXheSJcZUvLC0Kz.[~S\:u.Ʋ&Tep@k6.Kh]B]/2g2~]#Sw G{k_5!pG  o,f^Rk ͽ#%nGcOttlkEv' +W3u JZ>7ďm˯ӱd5HlӐ v'앣ʪDg;fU<Ӳzlb1|ІP`5V"" " tDzVWʦ H:mu r6]YjSr +aiwr%ڄWܘ$+l}G}{x㐍rVexja++AUew]WUrU`Poξ`y](ab!um]'G~-@nv +IƯc}n7BPuZQ[]TA__CdGʢںRCqsݒRޘ'?$J5u=e e  #g.'h{UMR܀(읉$q#zvVDGfNDPTii:OPKb@< i+aEaߐ6 +K#c_H՛NEx+IRҏYp()V ;ߴu:Br.Xm#qq~ ǖ]G=>+XRJ>ݧnQMvsAx3n Y^I ~y;ɮw'C&\n$oSVdaֵK5$#8>5 cqn%Z}.Ohu[v^Bjn5ȇV ޣr~vuɓN.:;,⨅A:$3s>kbm\C: `TɓT:)eJW{#-g[Qzi77$:,;=_Wqg.ږշ#b""5ߍ[˨a.{<j԰)L-dUpA?6=]Jgӎ?>~~M=yWXB=f6%5eYVn;uGM5ۉ;( 6 +bv)5􎦘tJ˻ +,U &_Ki~sXSTBYy'w@eB~vvCsE^*/"hho[dMIN[?;v'fz׾ KԞBnFkέE]a\,r,oU~@>DNY}w>y5geɋn;?A3j괻ULZ$z_FRTbĥ5YŜX?]:}YZ"k=:ek.$'hcGEahmZׇY?|t^Ve ļzYǦUL6qMIn0s]RAc=$GX}V:p!9TJN;&SZrw)/)#8#Έuqox~-ej~Dde`ܶTi釫tK)GdsnYՙ0½ԃ?г'P(כ.$+!p|Ș8&wXKFdPHM +vwK7UnMZ;#Ա4om{/,?rƽ)j 6=%T>͇mDe忻_OcuH[c(!蝟yjL >&YcWʪ3|,` zoQcPƪ|b3_ +Oe^oM\foIJr0kgVx.O+oDpUXIr!2?^ L-E_/pDzt<pZ5*6{" g+ٕe(ŶNtNM$[SSeW;;7t3^))HEA}he.^;W1G1ap޿0C 'ޞGpZr5 R֋y?w^˼־rw5N;Vk^{q[}?+M5 Z +Ն6fغ:dWJXZ#>\Wv\3Mz_u z:ȯ*Ead'qv4ܙֽr l빞&QGl^؟ܢm=@WaF_䲚z kܙ)Cc5ImUbT[jR]+rֵonK|;VV>)*ű*«h :]3ȶMiM@nğmHrrz]Lr,-_XZ+:3lS{nꁖ;U~{˸tΰ8TقFKېccDtΜ_ ѐ`θtWi~VwE鵸yMbe*bσGtg#$Mk*GJ{}|c1GX͸ {vHy9medzm7%Zn!y#yUQQX[a[z\owfڗٍqmRȬG5aۖΘh{Kb ?lX*@l{=o^DvHbte,w'grA3*:WOA<ٔ߱53Ui# 9/r<}S`8=Y?*}V;['s-}UqԲ+#Հ(>PlN_SlCfYY'uLvgfєLz u bf kg` k\̥~ehaרW -xߨؕӉ]vczE)=.kZX68hdEʴJizZEҐ@#1~-ë/7 ;u:f_䏔DҌeKgr3.=Y12ӪȮKfSvtx tL+6{E`P6Ă÷i#v~GO A E3 eYt;nw+/º`*!bIe_?Rбbb]8CInYk/5\hz[T! ϷfrL\"Ҏ4Gܳ1fGW/+ ,RԌ AkwQ k8ۈڛ*V Kl#8}+ G" :j\6ݛN]RbUgz@y4< gL,nkԕC%O܏1 +8?2* ~NVpHb1#L~\j=Ph1HzgűJ-Qn`C/ c,aӚ& dQUkکbI :~-^ٙ-v xYaŏad¯cSs^ۖH]`c@َ1zPq_ɾfmsUa[PmjѽbxOB)f&!ZTMi*ܷoAܙ^Z3̨{n̮ew[^ޣmW})GHƺMY`Սɉ-xAKXbضWYK"%W qz>*_nB׫-^.ܛlO>,y8^K5}r翟=작 cuv[W{~f9jb ;\o-xԴPdW.,O"w{-{ѱskJB^tFwOqc+fkE⮮fԂGLɣZֺ*OvszuKWFKK(EN ݷ~u'cZ`( +>P8kDk؏'IŜiݞ;b[C}Le+T)Nl#XKk{=3TB{8y7Tաi;|vU:x늵jbPr}Dj\cV֚}ɋn=ܒǷo29f=xAJ0@A:߱YE?Z?&_kKT|?V1g~1=|9}>uh]{k,I|~,3e5L~XonF5)wg*Ȟ vV YeY(~tALO6'=&$%2kíjxt>1z66U޻++Y`<G ?DxU5E$þ'}x3|>ڨ5UͶ;T0{U|>n=8m^z;dxRg^r*Mm->Hw)aʯA}c'd겕oO̞loʦE +4tj[)Sgđևn!kҊ]Cb Cr^ 9%b[3"$vwAO"Pvg~=21+Ĩ_.=ğᘍ QoHB#z ]aVUK:1޻8+x?I=>8]=FdKޮ貥a +}y?V5JYT?)DZz}9tl]0+`))%b0v:id2{WDM`'}ye:^= YP|oC~VtK]ܡ3*9쀀w]2~VX3 =gGYӓ;;繒+Pr{=R[Zb`.瓩6@LN^#.]ʃ97} bAA*0a֕צIFRUН}.NoM{۱%cܙ\ + + (u'-aܵ>o?|߉z_-SVfj< n+_NB%`v +OA;vszE-GUgd }CqxR +Y3AvvN-K/%b %֘ﱡ=btf*gvv68(oR VV4A"Xi,H>OO=Sɳ)T.lo`h4=O  V(^IU4;{Ľzj@C) qϵ+kHCNL^1+IOY=}o5W{77⛪P +3+8w=>v׷oЯSnHG-xv<6=]?'rGM=.gt33tvq<б2EB'~iy,6߉VS*Y#77;Pvu|vIGRy7 s!F_mwϙ)P쁿 ̸#Ojz&{wKJ!%D^WLZgޕJ{}dJnVSr~Ccmj`Czގz[pK8zlȽj:~H>wUrh_Iq-V+ޒ]q+ˣGن%H>|3R%e Jxk˩.#*G>n71-)j$82f6N[Qu568P8 $h^'r얪ګ-P8m{Ȕ05,ٗ]w%˭&\Ԫj[ |R}}9IYM7JYMGJĦbSr<sf6]ٽ7Zwk?* |>j5Ukr+,[ +:==GMBJu>U߸q21zghgQ"YT~g;G][]7*QXGeE۠}-o}үë +HZkp~fr^``#'n^q)`cȤ1kGDv3(ll%{)\V(sZ 5O133zN[b!'ԩw؉{+8EސtŝyUR+ 7-xj\~dkƉb\zԅX2m g* \B r̤ﱢGSAn%I`%O>&r9^Tz]Y1]xgf[!be6VV-=')f#"r"ĀڟYPmӒ…P✀=o:"qS{[.lGAX6wm%-ɻ"2,0bDn-]fwAsvH*4;FE9г3.ֳ́YހZ-* ; ]c.ddG6bæ^MʹM6`=?QVb!ƧMC=2A [ܝ pf)+:ɔ1ǎ%tL_){mE4ׯog# vU8y,x r>37dk1: |~:LrZhZ n.9Qԛpd\fL Fd+kSTAZ盍rNUvEةcohV; {^dޡq$ $;x"zNnv~>Ub޻~t~߼ֺF%=JĽ J* w)K}+|Z}=8:GW v,Pte $ =ZlcJ\N4kr,q7qKh;.ZС]S|GΧ#bam^X-mδV>̞l}tu]pCaǿ-~"gfE+\|IRWҺzZU֤Ciz*DTVx貐ǒw4pɻ"knצX~x+5[앯UK^ph||a%Hg~!{RSz;.%U=zonyLE=V:"YHRHXk}M-Ijޤd4IV<0 MuQ/e\ݵh`OSrfV嶶]l2x $0^-,-u\- )ֻq n;3"{GfFy r!IAb#`>%mK3WvUkPh s@ -W}WK)_nG2ZCW%9?l,lcÐ,ᵷȴo0eMtxg6a{ ;x*mi.}r$3!jZM^+ +Yͩxqߞ5?ֻҹg;N%ð$iw3 vqX2ûq)ڝI:hʘV~d}RģtDlڳEJ)N}~sr.S)XTHkG_>f;ݓe8E D +lVegb- elG[܍᤿\j_dGC@l^MB_q k(c-U\J k0x-*5ccZʴ>x0;J7*"T[+ b +\IPɧz9Zֲ@wؒ|/.JS3272oC0r]ΓI yHHNӮ\r2]CZA|SiDGCE%x;'k5Վ=},xckLc|˵:ko v%m̽z*b-cB9vP~b|x7BktmC܂fJ 4FĈ\j"юkGw^`sO觧]/ ``IU=0 ˿-o3aBYJzEU7;Sg*r5+w>#Qk@EKX=[/o)hJDDDJjV"""""""""""""""""SR7ct2nJx߹mPv'uK1I'y27џ]zڰYs-Fy/Z#5e`N&"""""""""""""""""""""""""""" ''4 d]w=[Xcqf6O:>]/}vg)1L ¨ZDx^ar3bU"Ei$DDDDDDDD`;ܬDDDDDDDDDDDDDDDDDD@H8igzs|ThS.ȧZk&${ԳwUoLn[^ǂ $ ̈́A0b`uLwVF6!e# 9tZ񯲷 +#'ʪp{I]uj|ﯺX͛RgI[;UEgcWA[Cd }$eb*Uc}UƦEYvhӱ-cw +܄VV2wbdGGvFzܬL̳#)10ڪv?O.*}d^a6.n׺׾<<ã5dM5ׯj[5⼋ubA/ˢK3QbZ&X'.fcj'g?I,L=Zެ+ʺ*Ń +[ y;$+U?WXrY+`GȒ8NoG.}268<&^ظB[nFA_An;S&վUaIe{NyGC7u?Lwkpי%dЊJQ|ں1%7ó"EK[lױ5H|So6-)@,y㹷ĈZl{:޶V + $50S8u3&Tz'v? іŅG 8}[{+Z(,vܭ8-KZש͘T^|:ncq>~2ip(7-}*e +-h{q禎3Mſ)"lRuYBM2*621 ++[bU~Pu}^7+P8D5jlz#316iVVͶH XRG*Y:_akZ.+ciQ8`|dO=vlA$$ e?1~''b~lD _&/Ane[)EeG&`2k _B^E;'$IG.u ]a]ԼεQ㷃2zM^63ٯG38;3ʭ5g>M=l]eNVgͽoA({qXapb~ 1.kk״z:]4ʳ6zR[[w9 u2(*]׻[bGn5W*,KclʀX<|.g^]S#λVP |v1ձ19 Xloo=dSrd"[V PgQzC{THT9[Eu`˿ځ#W+3#%E5nOrIKqiCUHSʾmV?3v#iJ~ Z2jX+cX;쿇׿묣(M5] *)g:В.5iR **B\,vҚj@sfuYjMUIk1}$(U{"4hE)~[&{ }zL +qe<\#(?S]_jvI؏'0tiWBck:&I:RFdgEiAr?bGr$x +;}^&*aS]5-hs-fʃS1s*??|;ne>ccroPᏸm ].tGN`kB7%N=agz2qp{ZѶQ]=LjV"[ǭ챂)fc?qLMvK^- +άZTI(lZ]XuYC\udku]5Zd6]hFʶZΠbo]?doQcω? 1% 97ܙ)qn8| oeuR GpAЕԬb%5XM YB7<-A %ǨJkVE]fE٫E۔+w]Pn(sZ#/>{_{=zZk# !ȍl}IE̬;[vԤ_@WGDXwG"c(Q[=8_"Tll6})3nE*9t5ˈ֪I|3DDDDDDDDDDDDDDDDDDDDDDDDDDDD1:UaMlB} ǣ^]jW(`ۗa8eJZXU 4c>Y˧:m-I]}"PKOMv-bX0_@,]+j]Eʛ>b^MYͣ UP3)c*?QkrxiԨkV$\d ~oq2"cgіSj+T"""""""Y.lYA{lx"&%O"kVq 6̹M[ʧ 9bQ!F rOiv"% Glǰ:e$o/ =1)V"""""%WUfOo_C~&5Km̊AmhndnV%O6e,z)~;Շ_ӗ嬌+knuDAf!T&\V`JuɎeTN$JjR A Q1]ĝ֮[>#}$f/kҫjSeLTEzB:%lɾfg6&q+xeՎkm)XbBY뾔CU^`H*H>{Ru*{CVR'@9O370&Ȳeoթq@wRjFaQA!{x;X:~kke!אNKtzRC2MM`aAHq9׫#VZ/{,Z.t{WQO+QT25m̋^ e{׾nH[q"k(X2]{ݑfAeU%=d^*I y?YFu´k[W'"rS{߿c2՗MLN[_qK.'ߴq#} +A].G*XlNYw%Jr0@r>ߌWUlZʪ,YZJgR#N(QbWbx挤ILҬ`Ҿիi݇ cAM_.BTԳkСiokm48[C,v yO7 ףvs`rNw2evȩI6 ;Z>NMWYCuȬtH_K~'3_3/$!-fRn뱱w"SzلX^=1j{6;{zKb16׊,OpIo|Z,+kYPLGmȎٚv6kjO@du,#~bx:ގr<Z.Y4P x#]~N56PY$+ǑUiD#0Ʃxfa9}wzfdRCzvqf6̻*eQ]vFbƻ]Ϸ_Rk + dl^;Lr|Z PIdkgj[tg.yxs,aV6Zc"R-ł*uf0բ#]vآ[t%W]7dj{v#bAa|JsߍMS8O PycCWRD֏b nA51vPH v?Y*] &v4ͻ#K"BJ^ I"cL44A_oi ~! PJ7GDd To뙖rrWjY8ewU10*[%{L[ lݢ} m:qOw/r -YOct;4w5zKeAV*_(B8.M5WOQͱX.i?kmekGiXEa_le+$X;e+Im\_7t;2YN|'3eH˾w"v֫AEGZbwA+~r+?T|z8'w<~=-ꉐmEV.~RJ]ܿ3-íMUgS ;c*^lw젲onkH$}٘=7⌜$9^?{Ͳ@]=c|Oa8wT[b޴݆MtaAUي ZO 18ah.ߍA]]V_v {;Zg/">l `Y` +7Ā%vx钵SvC0PnW.Yd|R {S$Uk\6c:^L]#A n2EF^N7S}zpOSJѢ{zmLrdV! dm]Rrb ."q; #,C}ȼH ffUU$u$йRcBބ9 7{w>]}"Zߐmk*a֎ w;?N +RWYJXy +@ޗy_3.k<ɢG}1dXԹ,!~J%s{i֝tDrx6T؎6v>Mɪ+P=exk@&fRl0E]$32w#dDD@<ž#gG@ wx7S~u:2v*/\cZ] }xw@+OoPG+jjU% !vN;hA|9NgQQժۑ"Yd(-߷p<-,l 0+TrUY]7AAz~zجZ\w.ff&v~Ne `Q8 }#9~:[}_wFId̬,5PX6 A] lw~Ֆlvj<T'm&P5^,Q]jX=AW; O#w eL Pq= ϡw׶VI²j-ޖK:V`O.]Үϳb*3]R%T6ވq0Zh$痦/Cd('CH A/ߕ~u = 0X :3lΫjF*nSj6kֹN-ӟ*7R688o]+[kFӲ 512~+2Ev8RkVR +ނs=++>8 +-*7;>y5ep4쥹Tp]B\ nÈ'& ]&R']:\T)ֻ} s/umg`V! zS}MJÿYN~fA^c~ߌƧጊv;X0dU'b4tTv7'g-݁%Yj~27F+^_U&Cy:ޭv56Mb[#Ԍ__iB)6n*=w}n&*V,ƽ[*wt:ֿ32wK MZǐ![a7]zdx$vkyґk >k]{s1*JkTEU@C$f7My ȴC1VcJtGc|/GMf߉oĆlW^ %v.n^%VeN~Wͳ)zƃV7x^;_VΒ3Y܇YӱAK +4v-ddDq@y?=ֻIDDD),gQb($>_+- {-.RA>*Pl*j]Zɀ~3DDDDmIzu h}36jVNE7^m(zmC}2DDDDDDDDDDKWcU8ڊ0v""""""""""""""""" >59IfRZبI=ãF.ֶ,7@iլ:,j[X4t1j0SВX]Fܫ8a愓g4QJ/'k%{}i/JbկR}j|f ufǣTX>=( @_G#,,:t-Ys*P<Ē)ʧ[2-\Qzd:4k+)GcjR,prnG(ʣvOp{_,NB6VU.A#؉cuN'p3iأVḓ?o[}1_^OO[x܆AܳJUA15'-n f+=?._Vϫ#]8|L+͎f $l^ի\*| *S+voK][}e#b5Kn7z +W`}v!UWMlj/s;US?%A6F:>?#M:P+mÑ -ceז cĠB%f7N˳2Rɇm~RF2w؍n%3n> J3֐q'VSr.1!_pW kain71j̛̲(4"0wǼ܍,|w\1Tv݈2Kr*Rޙo%,(:?SL.N`="^d*[:?t@tvr +(Q䳰EVMKY[^/2i;h%K& h@@:zrz~|+C~>?q؍ܬ]Bni \Yt{=TuѝPMIMq5-4fWLɻ2E q̹fնՕ>w0OWnn]/XFƿ$7 Epðf7Ĭ7A=I SdjJ@[9w׶3tdHb|]#7f [9T[VYA(#rb""""""'ks:FmT] +bO{j:^GV(k#R +Nb_WSswH  9KA:Q sͦ6ZM61ǬcZYB'27ݕzy-ʾX dy]}?͵0њTQp͙X s@)m~XeP/&5feae(2*6ZRf]=;;Z9 Yffn: d`cPgGEdz`>n;#l[SKt"Zxr +@ +9lwluRFU5VJk۹G}{y]ZWZ,1F;S̛ +z9wm~n{zem֨6:őY#.쎧m֋ʱr\Q$lCZ컯_APæLXycG ^Cw⵱9 `cjtgk59 9,5׶i9tW5f +[%޵<Զmf]n%lZVv]\llHQo߶?Q~F-:kOm{˘MuѺ^nWJPxgXQcf%{x\l܄=IԺ[b먪X#;:(ɝ^u9G)8%|hݼL?ӹtz]f3iL+ X;:;׉?k˥K_@3vIיcg[gWV\RUP0r,,=1/YnJW]xyUr,{rr1R͵eCe˧''f>Z-+kx+r^EvƇOص}(8CJp׮Z*ijBTκ* ,ʣ X$|˦oRg_H۔CIb =0-˝2f RE 7c`H3E$fTKV$};f]S=xtAQ#2 tL?\KG;P&_G8&j9u+<#܍̋^Kg@X8$:XK,t);dd*G#v$9Vž.bS|tDDDDDDGw8BXŞB| +#d11N% Co{2lt ~X >/v;oxw&jwU7%+k#s<)s?Qԅ"6#e<ג?Y%Sg`;;7۶ǴˢŭkiThw$5ӭ2_Z:[PRC1qF?)1WEī=0km K$1XՍhU` >f?ЂZ wmTv[֥YGjqxDZHg(]-T+,,: +B?=l,/kMnڦ<Ēwͣzl?gQռH]Q^c憰ŶNN>4 $~&X - ցΫ!+)#Ի_d&B++%MZ FWv{)1լ5DžmadN@O]oMR͑]w$ g}*Ϳ9SJSPUX;Ic7w?Q̧1B>M+s-DO&H| J갆.a5ۿՉ3 SjUkv&Z*a:60X2y֑k@ {gAˤ`4.\jmMT(xR?/ՑwYMBK::3WxyxCAqGd$ _1߿y@ƭk ͡c[:EFgר{ƎnZ:05rM,|V4|L~/62 90k= vʛ~?IJsrX ,j=CV޸$oDSXZa{ rmȃ;j[o6;+ةc`)v#D@>LjYm, =&0;lhgSJcZU<=/R|8qθx_ +@^|soFA,JӔ4ĩG3` 1[e[: #} +\}Fk ckv l|7pindY8]wv7r =L<%zCаy~=v׫ac>ֻvhmLsm+Ԣ8?/3##Uu{*+lccwiLtZiTh 1~܃UppY~$wiꮏMYrWP}~fb:%llcbYܕϒNw.2d.S.7|KKݲ4;V;c;=cyw.и m̟K{#Ʀ;1ic~b-Zwd?G̚2عmqmrw&tDDDDDD@VBT3@l+RZ6 +2嬼æ˟|Qf:?Mz-ze 64tFO{glLAވ1:OV"pʙ\bGĦq؍e7b7MlFnVc]dSC9Rgl;~fFg ; ]·0mVm/b wHGc+0zS#Z-T°;5oBFT"lrQ\du5+*qRxމ{_W[Vd6" U$;lfn6#q`xSZϫUˏ'_J="d0oTSMS!D )n7+4u|%SʮGhl %<%g.  tG{^Փ%eL#S7r-IΆl2Wx땏s!87}?:^E{ baG&Fq}E y)C::ߑ3'qXXbZlemg+\UyGUt4ozq:U]I YvEihUBu%Hn~ߕwLλ(c!m˕R4XhRo` ]UUUoߓ'ै[>M 2-N8 ^|=dtC!d*٧"FKoklIkw&e&+kwڍc-H깴sZ)FI!;ױ˲jp&Zzy(;: #2Fx@={s39]VqePv 7c*xz/ iz0#|Lѓ~7R8]#bzQ\26#۷Bu9)*z)k|y}/u٬lSRj÷+u\ی⿵dQ[@-ͱoi}=V ,6/+YJGnd_^}co*m?;J +6H]\=W/bd"QYAǍ[]n[bFeec|`_ P g'etW̬\۫gb ]x"rd|p&ӝYd.=Yi%H=ǶVNF}ZrhpMJ[5`3.BU[`)}5&nVeyP ʽ5Gj;Fl;?@Za]fJ[?[19fK$;L +2$܃]Ǐ0[+=_UN(Gx&htbYioǹV lߏ2nkۙ!ddĎL1ۋ[]vbZAPS`A=G&WDdfe`SmOm|,+g v8HNS9䦖 +sTfEqmH5<#}XʲWe,\×ex/Yͳlէ*9r3#u}Xb޳S)R8 wxx wUnecZ[SRT{y27K`E}Q~U) ;g:΅ֹ}d78ǾL_TŪੑMT;ܲF@ޙ_B09kK|԰qX6[< ,/]iMָ@^{+3'daȴPܕU¬A ܙQp3(Vyl ͜_reQrԣ"/>i9UZα(y:mv6AnN^.*+֯62'Ù +wGY9 j#]̨=DUyj  Dji_MZU~lco ٭P޷dOfsE885=W' ^=y?eZxZc~FܚXi8VGEo=x3esRѲwS'ײlٍH wbl[33*˒k)pֽWbAm=ǙuU: +ʫC;z""""""m Kԯ6n߿!]v(z_ek;̷AsvzA8%6HߴחXc.l3*^g>牋㍯OhOx=ګd=X8C[U +h;ދY\'hUE)WW ځdi&Ub$+ KYSնB{7w:=ţᆧ / ;.K0w2@>=uzB fn)ܳ4΀2k{keۖk|2.EqާV✘v;̦%z͵NI{,t&5^ˌYU^GUB}R7Tє5& +l {b%,dVik1D%'k@~s.Ǩ6y\4#$lHj ېm2PPo^>ۖJ\B֪VdT,Cp#dr>=ƥқ;t,YEt:'kb!RN;Dɯ_uaZnU ]w_}̲>sF39\g+Z#/8ZnݼOA35.}.2鐬 +){˖t&̜k}&TX8G+_D0;Lj>Zɛ^vĞS**U\XoKdؖDkR*. XO]*L/A}'pPʀ=%_)}!P X(N^>c/haq+պe}_F K^smU@rmk@h2~ݏm=De余v5~bSҭ9ߑwj*KO#a[l;p%g^( 6zIrߑͻ1El\49'"1~\Ll~e ׿b^^zs*jbg0E'@ }l4t{`$MimlC+6Ĺ))X uq-#a':og,|Jhƿ1ޜ+Y|<}>%] V-KlvlQG;Kqovw=tNo LW=#Z:#jjN9PW[?PgnXqa]7~K fB;}ߴY]TPڷm) +u:>%vV@}:\ޘ+9jYehEa.$8Ba{8S.Eʀ4GMM[Uz4K%XU0լ+/׈m{yB(P?zzS}prR f܂6;H\+$IcGX-Qay!H*JBYV>K̮MY+Jvvo͹c=bl!cbfGSȭ4㷦xroy*ȔgWjX={α+vXH[[A sӏ+ZљY )Q>^7S+Oz;TA^'|Y`RcrQКhTɏIdu Ir]KH +()+#^EVQN2kY*<|Hlo"(VwM +kt'Zd]34X"5*v<ގ~y)%AF1ۨ"&&vUe^1=lpwsN_wk2u70q3J.Eub u2ÝY>MUBTv]:v wsԍwfʮ `4GdaAC6FޕjveY>uWcxXeO/b6߹ԏ21yB;޴C}$ P: ynKxTW Ȳ$kiĬ`4 Lf* 섨:Yd@ek96`DZ'yNUx[T~مSȧQmź [ hI} !Ԓlo llX( zCzr^A8El>ܞVra6ѬU!SͲ+()WByN@2"UkZ%^љ2o^jli[+1QN}ωXONĊvm&"AY׬=c ϩ_{o{;)%b[#cz`;߬|+X!w܎Ms-ʮ1q <.(f^N7u&P53&n@jO;xݒҕRp4>].m߄ܬL)GJ)ٙ`~שjV1Й,z%Lnt\+]EnB@ކq`%f3gV2F/g!L .R ; | -yX欓$~VF6mzMߘtTwiDD(DպouGm2/Dd/˷RDK8:˱c2ǫP 3h }ecyP +=$Ll+.fvV6"7KU+ٛ_M؅El<Ig5@ )a` SAR_S;|x;kRY6o3^c2{ؼT:IdՕ:m6QEV=^.hlhy|=f&tr]y)$6{#`|l1ռ7PFR'Қ6Tv[@R#uzkձf[j,ּh*ǎ\Uy9^^7ח_P 6=QW[9y5)c`$9ǰrzWϯ-CkʪY +-ۖ1.鴌ދllҼۑbH:>;L{s.=lEYS^+Gs+dX'EK2 רu6ķ&>"e뮗vH q^702pWmgvcϟBl)1uXum8Zպ&5}msUb_WOn=5r(lNnJ!6(o*jUE +`&0m~f䡷ʊlS1(=gտNʰ)1Ah>;getTUZj6q>r$}=L7cPg&k@WD&S{6M[%{~rtV7s[e=\,r6k[%Uܶ䵶wG`GP)2jΜ=WrJvw'SUy +T=0Gdt;I0hVUū㿮XgqI}=ԭ{;($oMLSUx0Lu=%a?NX0 QelZVZY,qWtTv'G{5 ᾟAēor)^G'\|jIeb^ɭx-V.Nop9zu[ YT_cGsmXeoΈؖ:otlv ZN|y?3StflR f3;?i;ReSMNy/ `f _Vbcd׭YA=WeF>au\i>mk|_'q~E7Jd]XjgbēIlz4݁Kp +K5%:>F:djuVW +A̙+t᪛5;+$/V<4ĊK+NCrjm 7bxh$Jl +Hۍ63ntZӫ}Cu!OoM\mcߙAڌLJlΖgoA'SXs }7R׆ȴBٽ:F u~q$-t_;?qsgD'Jv#3_]W'~B$Fe|qr*ʨ-#Rrbj +roQm%Oa3z]Uz)$zuw\&_¹wgt켒Phߎ3,Z[-H񢏱SdbVoީBzgZz&Q:=&]U|=v 'ZiFM]*W)8XBXAp5Ekgs 'Q[!+.]Zʀ@^pin ACky8d !zZ9;#t{OW>#_PQҁ+nC^ȫr1m 덌IcPրW~@~fΖdX)q-WRY]*D;IѺNW7ݰ5l`yoz!׷$K[ӕ[6Oئ>6 fVsj@sؙjM=IߎGכw 'iYeԽڤg_2#VG[Į}$'"ʏu[^2#gft8T9FUr_f54lfklΉ(|#ioctPm˷@+; Xpk?Q؏c~?N97U2vQݾI&qUtL:Ůϼv@[,{B65fb¾?}̾+fFQ`2 ̚hLt ZP;4e/ Q]~2/Kvz[elt>%J6}!ɘ3x${7< *Q +ͽ*}+qrKh6:tFLɇqslL +h+ ~ KGYuЊo }q: U!Ifn*|$(j]v=TIvywS[xzRBP,#qr=RngjaftL>1x wE\M go +;/g2=Ն)'l{wk.\M? L~zt{{.EAXolt>@t`wi3}`@ܥio !X>'/ ry4AAt V(VEn@O;?.Y1-.j؅x^?Oxx]1|zBNDGA$n1z;:_٩SД,=gz::-}86ؕglI{5 q5#rZBWHt2k@]oxni]}l?V~51xVԬQR;>gޑԈ95-@a>DQmFQ]n, HpF6>t;_+j8f3.SV W=ʂ4@ߍѰCJyw]'%,ebηb[ o+ 5RU&CR;{<v{~AoIƺƵe +^@x w.`:mbzh7^7CyxQy5m}- ʼc'vQo`-y c oM%f&^Mg!s#] (d'12:V6]}z~_ O p֠9?6ȠmxGk&z6h̠g^A8/`?dˈ1ko $ #Tz$|XoĒܬDDDDDDbb]uKl>#z:1ta_U!Q<šՓ-߶r(L]s3fеԿeYۖא>3>2)EG#VVP hmISTiBao0v#CTJĤ3c]b<[d wm}%}e%eb`#d+fbe_nPj s*Ṩ3.%rکby[Ϗmѳ0Kx,zٔ0+, +uЙBIք}_/4*،܏1*;w2f""""""""""""""""""""""""" 5t H'і>-L^MnfP'IU [yj:{?6{msShP_|tbW{$&[sPHOSg-VG/$R^bBܽ2p?E<޴5H$=WUcuUv[e]eu+z&jr'9]J-l#[c#}˳^q;*q2^RRS`y Gh[o2Nb>R [)[F2lV^\0.uDo}J,{z~27g3pzYδI;Ӵ9I^-ˠXzuֶ$|z)f5ߋ+1}E8߂y"NwV./zrd1_ILKN7L6> +qwZ9U>O]\fE X )d ވc +u,&%Ͷ>l?O2GMni6,X.tFlCY?&&B-FDP8<;m9K[u:gʂFu-wJBšzQ y˯dSc}Y"z.GǷ`~pG0mP2mUHqgq:yֻ>mY[Z*>O_Dd-*DD1=/cĖ[XzvSJ5`z1;ֻH+cn##&JG B*L-^*aΚFԐN`gtzz:vk F˯6ΙՇ'|*.JrO}ە~M;(b`(lk3wH6]6IZJ3gabcdc*VFC[b7-!H`@Z_'-h~\Eo7=3K6=_(1G)U[=mynV) +6;jf)oƵ&z-듃Ew K5ǖGG_YxW)Ʈ*FgK$hEu6gHط´֏Ȇ*/" 4uņ@߁Ĕ1OPQ q&&Wsc;sӱ$k;iVFV>[o: 05ܰ<7@һYʔͮD䚨Q#ѻ59kQXb{1Hč_*ֺmT9 +4 6mmū W[[,A$'ޣ*UXVFK2U܂7C~_K:ǃNv3 eb8 +o@P#]-u.(q[n3WN`tltdSiUx|> '3s^;j,_%R8}+, o}ϙv΋UT嵖z!E<uCg_>ǰ[_jqJZpCp~j1q)d| |zNpg*5É;##r+;||Yܥ{G=nN{ih +18V2YڿO--et#cG#:wÔtZm{y?!cǓν32ig +:N9S9</;#rt +f mS9v''ʃ2l3ٮj\zd(!Gx]wDnE1YRUS3}F9{@=_k׶ٯPTU8C+hƏ n5x8-EMeF_ ܷoSmVsQQܿ*7@w>|=EeűI5Pdh?lv=:qc=7$!wq54t |uZѬkQm֤Op7adl[X8;^'k=xmejf^;YOƿ^]g b_Ǹjz\^eGn}-(űu!VB0`;#3(x( +?f>_ILEch^%]YKֻK +廱f;$y:ofsɿ|"> +Jo AUR ?jnǴ4E{Z*c46N̽)_SޅQS~6ZLׯ6WV3٠reerZ+vY ފ:u+Rzռu*ټv2;Q|v60d>N!OP>+]K_ZV[x{\«!!hW(&n;ο#f3d/ m~i[ڬn }bq​]No^>E=wzW$U`ޚ?MKrp򳱲:ێSVKLN +l!BG$5d[:ZӐje(6tu={?V/0(Xov zJu_70VF #?_0c`PKhV{29RUKV6Oc͂gBIRhv:=R~k,OT!b@Ku,ZqՓ R+)M;~23:S} ֪C + >ucd|Un>BX>Emiw֕fgPd%wvJTa}F>7>,2J #۷왽{nU ʫ@~+ '٘yYY=Quibʈ FH]'\O;^X x k  دů$\op0Ad_;v݇|~ޑ_M;eb0-.=/ܜN5ݏ}jxv_Rc335x†55a -),8Z9vP ,mhh3 +s.Ȥv>pĺNu l]<̜~&sԨjp\PN[u <.brSjjm jX $1rJUYDOM9Yss45,)+jxO1Ǵ]$yX3b3S8r)lwkg-ԋʕ9Ew#cCsNZQU< e'G/y&߃mهA9(w1j&S}BCUPޕk~ڦG]̄ۚm\je{%{NywJ`QU^,;r:ݵk-Kjvf%En$(xgE$m5l{;K׍G}82{vWcfq]+N#~9~%-5# +7(֛fkj=q"vNBka|~ɘ8=O&M7kʐ`upFYTMkk.䰆މ=ljWgYNG YdXpUvk-`gCgZ:"""""""""""""""""""" # ;j _}|C瀘&>5涪v9q6cl:j};#7pJj>!,?[ԗOO5g0t U6aKe\K¥fbk̖m}%r\r_Z-lYtv + e:A\͢eI]5`>A 9_M1+^)ª,fN vމ~f.e ?8\Q ۱އX=3!+u8~k6zKfۏU81^kn/e1lnԯ1U^x 6_4܎uǎ̓i`׋[YcU|5/zEOUmjfqm~.kH w~Wt'9epOJR' +ةa˹=%_1mȩ`dI+ +dljiƳڭ,u.= ۑU Jjzmt<.97O2,鸪wenWX|kT镔Vܬ̸XU"Qcy{}u75E@`*F@O0zKTUfyfu_cΌ10a0YK31jzp]0}$%^;;7uy2)$`}OGøV/=wb7RWX˓FI'빙kcυRqu*OuaocYέn=,^TH$ѭk,`^,Ok+,7r@@@z{ ;L{2z̺D|;Fj+5Te9>k&%KVkO V,s2?ݍr ++t +Ն,\~[o? NEeXm}'a̤q{7yYf6 j2ծZR8,{Oq}$ +ǡq/6Զߕ޻w{˘]23FS*| &&+i6aio`PtAG̬sr]jU8VKܒ)o8՟V t~h91%IT=l]):+c;$ps?1Ѻ;($ +{'ۑn[OO&zl1¿vTJ~9`@`6Gm̌mf/EdMMSZ] M[?Y+T=DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@:ؕ(Nf1BlDt(=؟z&MlDDDDDDDDDDD(睪H*ՏDl#s7]ƺz o,\NyDDDDDDDDlS)Gb>C"8uPsZ͒IJ)bv}ϙDDDDMc12^7.XUH'ԬttH=$nEIKT boGe{kKDDDDDDDDDzH÷"mmu&5_'jtWƩ82[~Uj^ւzmxa|bM vThq +ӴwUfVEÏjhr:׏R"""""""""PnV'U2ҾU43yߙD +2+5 +’8|aY}/ {xq0:MoiOt/R5)1=\`^!F:BE[[%s2""""""""DA_"2Z""""# °u5;l{/zU^HSb{_cdJVaچL]y傋US?S)nGj'.÷%doڬK5g|L?^W6Ʈ[o~t|˱13/Mڵ: 3gWnUe*u Yun=$kȓ7&-Mm=htF}eIЖr1Gc  K:;6* ;):72b"&>Nu8ZM@|h ϻ-^YJǾԎ@]O.\xTdYXbG6%&K޺muƾƸNB>o>scz+*{D~٣.lk-t@FAZMt~Һ%YxKc'#c؃ 3&߅R޻\3tZ1^,XljvU>Tĝ)(jяcqP/LqK^Ǫ)Df '̴PWnUpO}|#ZDHܟpq,5Yp<fNTfc=nu I 4;rP6`J+XS&+IrE?5l4F&_V~ 'I̧t2qi<}/Wm՛QŶ*] +I LSrdV!ڲR<F"sFWýR2b%/H65Waq-nR}*ݏďoIlɬR<ձ #I*27ۄ@N'}K˸K1Oo*\::VK,ٗMVWS'E} z&_\N@;A]^= {U߃S2XL֤UXq#={?RZ""""566|AkwL,q٬k 1+˹BY ؕoD4'/K9,{I +ϿpOr{I`w13s{suuߧ-$19ڲG}G|αӘ.MY`H vuﺄ5c,T^@|݉;MZrI!:XWeW6m^Uԗ6X'A~r&hcegWQZ[+S'\9R1lKCqtNI᥵Rsp>f  yc+̚?+Xc;c`sʭj) \A& l㓥c(s3.QbؤX0縗V iqloqվa?u$gCq"qwri9 ӦGBFύ u/^űߧRֺp\驛oN曽\Q_=!c\]<]Φ"\Ƨ!U)bgmEpI玑pV˥jz\QɉޠOWY#GV2=jTqf?ѪduK-w٬qSEf)ch's1L7's3{kC=xv_U?x+eJrTI:0G]0镋 QjX(ԙNuwUg U,4`l[<Ⱦbޝ#@#`{ɼcLTWjk;T YO;"y_U0*αM+ccE.]YRdl}A -bkpysG>poQX%I>]y@z:at: yz\SzDHױ[/8>]Epݩz(NlŵC }%OTdz)VǑ4߃oc=bûXwN;IAڮ}s*ORR.T ƿwLvΪ|SO1T +8-gz`}s.~V;A矁Cyn}#Yk**̞/,!6LG=\vRccgoWoo~7ĝHL+ҕ(?fòϘCZ؟ +ĖM:%yHC{a}{٬6C_T L$Bq76 E8;b?H4YNl#o/4+b߱W;Ja%""" M]lk@e-壯ސf×eUd=E +޾TLޙ-#+v"ID{rN۷ Y)ՈF[ؗ>A~f`HIغpBX7&93z71?ڿ.tamػ͛s`ZDZZk6|le([G87He>&yObȏ|_P)x$1~i29'k]ozckMY,4v/v/{+JZnc[C0zURh6oPW13Sv}cL:K²ڃo U^>8J>LӺgQ'* +)ʺ r5(|5˰NJGp{Du^n#Bm2ќPBq~$V?!#:Y!)Z6t;+p9*7Fc%JlI;ּKF98_!vȦM{G_˶ݙ!*j+CE,G`w:'j̡)LuuV( T.Sn[/疦aInlŹHicSdS^]VU [:OQNI]`#ʨ9*kP;Җ<=figmsqwv,O_-wןiF^EXd9<(fIbu;l8 tɸ'=q, +oVQu~AvI64eUvD%_qBͥM&`|+ۣ`kGa|@59ھ'/ +u{fc](Mf^9Y=pǓ !n*ђTʣZ`Lלu!]xuVý܆7̜>釬 y#9=f]v;H} `QHSS3kcC\YɎV W T ߾.Ÿ߮hȮyӋ]QBk])@u U@vVMXu=0TE%HK$uLRM]dcwY7(Xo^PE=K q6# NSq\W iF36SUh,oՀIک:=‘@{e1SM ɜ,O``;vX9tL*Yʽg:b]SQef]ԪȽ YP-ؠ[m(q{ӕ*QS 14 2M)JBUeeۏ)*R5pVMc=3Yt+޴ +֊yH9Q3y;-يsaX-r671NT2窇'( US3@yYXg5k5 =羽q:N.f%6=WndUE_y_yx8\oo+R7YJE?:IC#2eXPnK$mu$b"" E [VS#D~a^3.#V]Й@jV"au<[Y*?،XCGEaafdEmm N:8+V'alN̎fU:b)ȵq r;v׿y,p$Ƕ/vӡGsT5 RTAT~J4%ؖq̬r+yVzUB@'nS!2 6>F"P$v{ʙ準(~g9& t~9;+/mL|z+JPTx .DH.Btf3$reַ"tm1@cHwa=DZyԪݶ;'_A%s,BfkZFOu6Io-`wQ9e+Վ]X\@ykzw78Y? }&ܕ˩#b(h +%00׏Y%kPc?>vJKA|F>pZ?.A-02\WVU.V, .:[*U Rج`Y5̑_dtKdDDDD:1Wf +/h0=ρo=]q֍kO%iD7Wch+&XyY]57[ ֮;B""""""""DE7̲Z""""nbޙWJUW"9Mb&eDDDDDDDDDJ,+UYBY@`{1?eUIuXtG3=:}?&0 ׶l blԛ%[T*a.8}q-Y-1:mnB 5J[<+jF/K"E +Ñ|}dDDDDF׏÷QfxȳU*7Oob;neK\Y_Ag'n z;Mrԍ +* Jl|SӺUnȩ@W~dDDDDDDDD:UW3%*8foSZք""" 13:S]ăsO>`HqLuepX[!c}V1p?QkVi)VC2""PnԨtFCpuɴN[N<|& oƲZN,X'5 +XPR 9lLg#.^spȁɏO]&*,k'Z `T^bԌY2U:b孏>Y]^}Nlrrםo興_Zĺ64tMzJlL金qnJ,+PbBh~fDtƀ*)s +Nq-edׅSkqD'MɑZ[WPG?Oq,eWm >'O99a78NGC~[ާEt ܪ:>?#"Wt;2EqPď |&0:oO8^&菦ј=[dҰ9}i%r|\Y޶VWAbNce 9!'D1^>=f?VYK kit/-xoG}>;Lw^^5mG)l0 cٕf./ Pow$gDCdԧK+S}~|kR]d`6$my^1VVYXyRdHΥpW|' h66OCuKUGyT 'Zy+MUNʫaA|HFPBǀ`X3 +OX#)z +lFa Zۋ͝QywE1.kmuMt~Pn%¥ZضӺB|ocSR-[1M#̞:ZnmǪ{˷`gc+ّv5vQqm;@jIn,6K=t`(m r7buȫg la͉'ܮ?T㦥_ iv]bt o2|V2N[c=:Ʊ,,c&xʦT`C fo|~Ӛlߕ +W}QSԲiekJ΃v 6$v+]/- *}yoeeQRf-vbym;~'=?Jm(A_c?rrȢN5ɘkk >*˰*4֥t]()2ؔ&oz] nH ; ;jMtz%nAv'D߸& R̻0)PeYC8䨪 +;,YzqkS޵ݺԼBȱ޻jy"0Mq`Y'RĖٓF;ُi>ʼ1=-kg_-AW +vw<.kU/Ejlk9w/Pk-`b&HsyՆ~]wճV)Rŵ0ՀJlvKft\R;MEG~$>u^lImUFek~cB)';~Ýl˨#ٿ{l-unpZQy[oX?t[N`ÿ+*g2q% Dl=#fUde6wOln UߙpP ٨DE3ev :|Mf32)ýp哳0mkNk|FaK}U#v7Y-Np[B +ñW}elV)ֱNn^O5Z:npU}0,G@ܘ6d$kRG;-¸/:kIrވ*}̻tV6=Jp2EhWX*nr6OY32rѤ\ |z#4tLwddcWfJ*X U%߁LWq[U̙ɲ9)Dlki`</K)_K\C5_xv=iuj kMcV%v@Rw;rMUupMl\; +݆JeS(?#"*ĝ0׸ajw}2[5 bzN1AmͭA~RW[2˯,_oͭ7`| m@ hhQ<[Rލ[)R>5 5aQʭ+5d~5$>!7JiOO&O0N(֧:vMK j4f|Ǒ;j[33cׅSiߨ7d:wKYNj)H/[;ύ{ny9(^UkXS9ۀ{` μIRvt6|o ۡdTAqD\.\lF5 +΀>ƻ7쎖)ur~DR7ܓA3#NORʭSm+$:-߇S2vʥ +|4e]Jq,0?0:NGEi}}*;vȍ(;};#};=ybEbI`6Os&Zܤ*Jp!z!~'b>~-%SY[(uH!f JU;YFm$y1rd05c}#pšļKne+)32:6}SV 1O [+r鲖~`A6¯!T(O`ks紋̧0՛x$dt̊6-Et;nj+o"rfHC6N +̾ͲBM#G/U92WDq^JxKO{z5BTRAd!ʑ؏3#s-Uƶ/*ð{`~եӖC["98+RT +Tf: 7f~*ԃc_L z];1VgKjkug Ry(ﭞ۽?EeeYP_,ĆLljabt/Rxg/b7^ے][7UJ!8UÕn@bFOo3'.5ַ%ʻaX2; w}zkb{x#wL̻3ֱmv3"ApB}v#];6t:GRXu-@ 1^z:=V|.:Ylq1k + +HT$A3qs+55 +y7:y~Ϳ_mzU] c;)pN5};?##!Z?"<v{v'3]ڶl,oW<=uFIt浈^3Ar*q-tޗ_(jkEfdž m^yRjE_5'Ə#ጤ+^`ȭ7E޷HfGY mkrZC~:sۿkh*z=:Vt6&뒕޿lnWNz*̥Ku$SPeُv;.[xhX:z}Ϊ?~lBEu1sr~B~2"x̣9hzEjJ+ ݏyN2oȴ2/ac(>{Xv9}@?2V1l#\,]v]/U#Y63J-G^?U^}DTv>W3#" /]Ӊ +Ƽ ~;yu趵պ{G~bCU8aoAUHRXZ;:޴sn:⽌d밐y($2v%ޑu٨=AVu5Ch=r]b%:֍[+)`HN:P¶Rm#jP +?wdgv>i8)JE``ƼjYnkcZ +8<@6{{/e`P8_L]86;;ɝMi'[/e67ۈy8)\"E:A/ϐrߍvԀw;+ޖlOF~WeY>m\[鶑](Jے4`fDDDu,~, +!WG#Z*tr ˦bq-t/Cb<ekxZ%յu.5jƦTJWE<37&R|2ĻX]`6I 'ȕybﯮk(B(e %i@3DDK'.pآ¼r̽),[ˆ-}uRD,RHly'V~=)j5~6<&:P6I ?ej/P DOrb6c'u֫96ʣu=ο ~1צ%զz`=2b""%jK +c:.wRء#`{CSW,P`荍3ؕ-G%OsϦ9sހ߾z׼DDDDDDDDD@# |< qSg!w".ï̚|㪍=|$?L>c]"{V|Q^do`؄}jaMk!?#&fHWk' m˃ąy?.Jn48l{f:|M+zxYbs +nS]lIUV^<뱹c~S{zugS/uOJz"Y>{~FƇ}I¹5imW\A׏Ǵ~22qık}:덠0q`{~2uTۏP +]?̄v͟/]|w[>WGa7=l[^/566>"}ِVw[McK/r)t e O% `}2 QUCy(%GZ><.LCaRUVǛ,`q;gr*K (%[)#?BSm8h޾2 {q3u:Iͻx +)uB>?R6Vp(gcu̱} *ޜ^A8PxLOE|cb ׿#be̻ƭʋ ,#@fll1UE҅t>`;I`[`On紈O +ۉTk,ՊKzK|W/Qlނܮl +Km$h E9WVհ6 aW|ݻLLl}<(-ƽ"Oʧ~?=@!2%ÀtΩh v:Ozu(eH:]'ezݎ2hjrM)>RAb?)cᾡgK#*gcyA2)롲1l~P +Uo-]xT, *{vVي֖5"I0 ͳdRjS l%kֵL7"oޚ [o= Pqk+Bձ U~4$y zOua-ZFBx6="z[#͋YRN7؞;K9=q+/n;/RTv=Fb?ߎu+WW6dYual7_V]nWEN~/:g +BT3oEFI^~4~<_KH} pE4둹zM}@_3bt{qbZR /͗>E4 ٖr4Hl~;#>$dz'%KɂUhuk⟉:McRǾ,ebe1뾏F/oQ\W]`s_/]oޓRz?P˦YtR^2.`F6A99Dڕk]@؞LIa㾤e?W1YєոU2 +{<`5="M8G +qQEeJ[׷$&m=[/)QMJ9Zmg|+kðWk( +đ㖘oDuvtJ鶴 ~T ^\N3:F&f7RϺדel,V WXm@ gB-Ji¯f p#JbW_e3}CGJwocs3t|걟ī" +ӉP'n# +WǩHI$ +{$ojc ޛzc"J +(;w +tOL=HTnJ{t>Izkg]o0S*J%T$HŷrO#^7aًoV65# /oeνzJr)\~\yo`<`|[,ṘkL=ς}tޙv>>-U5REjQ8nYF:xIdUoQZGڶn +7<;ҺvnE +6`a[j{㷟itlu,{k97 dtdɢ0-JSBY;!0ցijNlJfpcRJݒ7Ne%MSrV#׾> Uq(ka;ki'NX2O ,*OaQ:vN38%]7$.A߹~5gfg`enB: yO؂e> G}?azOJdUA[l˾\N=AEE2YP˾1:]9 ՗W^Mfb;,|@/bt[Mg6v@_r,\j鶅93]yy#FV6vfKc[U:*ޠˢy5۾]E׵h)o=EeH޿ 2.<ʳ.L[>Έ;?m}%|˷Vԋm=Fѝ^@:ڱll*P8q; {~kNA{BqQ {mv[Vulw]EzV +McL iwmljuN*z0߱'mF.ÿ@P? T_)@T}݁7@_Q_ `%_M8/u:rn=ϻp\ζ_ɣe5cӺ1uǰn]Fc߆%PY_}~vFi7U.;uvwPBNOl6*b)Z6Ho}Kįe5ɉ$ϰJj%bRVR5JĤj5+)c/ r?jiP@j{JJjV%5MJJj5+)XF% +:F$m[:;KV*Pr{q0:EQ-gDNCc{}tw0ݽJ6YmE aU4AnV""""""""""""""""""%+k-`dO\ȩKU`؆ u*@m w56V ~""""""""""""~ҩ[>>:AYj dvNV3LȱB6|RYcdf+>-Ӹ>]JDDDDDDDDDDDDDDDDK,v·q;x }CZwQwz{Ҳvut?gw+(NKp`Xވ?1.DDD*y lozB@{o״̲rȲ8Ln瞑ģWkbNL} ψYtՄ*E:'G۱6/%:ROGiuB\B}`]}ia2zm[~KbSSGAfW:2 zLΩrq,< #p䥘q'IoJUI:l)RTy$b""ygU >;+^V0Q6|w:e죋W5B(QYa1oR"*PF_2>$H oIDOjծD ζO'ثb ]\#}vd_P덆2]hgL`i$^D+{&U[e$rV%&B|EE?r5ũO>t&hcpJm4~!}1/'b/@61S0V_[LE~;#T>Gd.ZbO`eUG1|Ƞ('#zCuwU2úԵёĂBH Q `UŒzkN!Һ]WԞA SFDDDDD@5jW-RkCXyv$kZTYF%g0 k`[h}:$/u8bj↕EfEɳ۱=͂5e>ҮX$Xoݟٓ1:2̨,4op%[W|} o6U(cRi&Zk~HŶ)k_䀀Nа6y53éu |ĹW8ߘc=?-c:;PDȌާwªC v,%`3z>) +95ذ`ˋrcVm΅kB٘>'i5JTCņM7YzFqnk2=DȎ߆slmR6 ؉rܴߏu.ҒIl͕)gefsje%@ +}3 .۳3*ci ۸Xc߼܇imŪA\ Ӛ3}eªdbm}Ft;Mʭ-+6KnVilש\Jplc\(; WcҨ+5zit5U}-7 ͪDu;qrҗ7>[\̗WONsŃw;o^.]{Tu)]:D ?8.EIjtVVl;.˱JCrʔ;nGhm׏?ȉMni 鶾Fq]@ֱ,cTk}Wי@ߐu<:rk{Z=2K;:57q!UF1#r/?-ZkZLoBl4ՑBc6II#3?'QS`^9Hjx%6 oouV-imIQM%Qo߶N#/ ZJG[f $DDDDD@5'';pŲ(A +v;3)2sJþl=K^(:]'d_ˈUֽn4~:`"^M:[CT#[+r3*7*@mt{HѽK1?C1' Ik|oۧZf@+߲_Qځ*ʦU]vAS~fI¾=U[ZT@=/ӿM?Gt{#6z;#ZڅlAƯL/s/cˏX@N&X7d +X60Vu$~lB|IKܗRQ麓IW!#GX7A1*dXŖm`O[@kiClL02)W`5Nd7BoUl̠;-`=g =R2Fr[)=>JN0_G|YLɭSWĤtp5s`MwhqJiQB:h \rUaX[:NI vcc I?S]W!s&K'#?#NaX{oЙJ0 ?"^l5JֵvBYdŮ v2mT* $C;s[~ f.IVCnt{$OPn^5MZ%XK]BD;mkƆ2~mհcǑl뒀f?µG' oNvE)!лs;0&)$2'. qWzE{v]I\ZZP;FfvSBxH0u_/&Uyo{4^ 7~?]5ag`X&t6ΏcHNÒmGH gbjWƝy߅`\;FF$ޚt u&m˿ *Vj?,H'3†Dkaw=qznK`ޘUaA+h;$~=wB72_̏Ӳ\*$2p(lljjo)R)׍_>6!srr*N=uX lh #oL:%Ow Δ={9]GĚơ1jJ|QB@hw;'˱1:PmUUFَ{jF)tmq|M ;D'zEoNHM=KHȤ:z4ۉi˃-UpHCpđ_),=eߵEXgn:t9I\.F{8lxQ<\g.n +"q/w=/m +N`ncԵ >#o.] k[JTAF}ll ?OjyG¸6݈,O+l,}5J&rUe)c#+kaďx3yE{ԊY{7r)GSy!`{~"""""")u>IpCRbygdҺ=] \)'IR_}~&gJ,aa ~#G= OHǼ%@9pN|A> y)xH(I#oڐt}ljL^bW[[Ǻ˕M+#/nV}|Ma҄b|kLPV@w,}'~!Jk-p8`($wJ5vfbX]bx~h7ؓ10)u_Om +/UA {&n +檆%Y:0#OYXi?pó+K.b]66#mkϷ͡˰ w%5>_?Sǖ.;:)JC@6M5- +<"cdE[S>\Ck>DԶq,Qy2czcW*@d ˱dWRA"Yƭڥ-W:_}#HrClN A;:Sg' r䐏/'i(Ð"j={nOJW^1\2co˽[͹{uB5tI'a_Oe~eҊ7M|m!~}?Faw2Gu?qΗaUiuR}oߛ'H\Q;b]~S2Xï:SD:ee;V؂6%](: kq#!` 1Dͯ%,ҥ o;}}%)+)#&cP.v!~rM`-n/!H.ʼn>v{~4i^ Ba=$}=̽V"""""]=k'.0)KM<O>u$=9uRNk+\ 5'J﹝a?VY[#buk.wlVQgDO +m|lȼIgewlvl j,`:K3:l5Dc~dWcjqƷS^1:ͮ>؈^鍑M,j6䀕zx56lpmy^\9/v9~W+& ~c_MUuH~dȷ jf.m& }fEWJ(hCG  F=o}u(rySȵ + 5߾vy/!l{]A_QնLFig+dcl\`}7{m¦lֶu ⤀^t<[2jK;@~6LA?(݄՟etI%>p ^ho&NVOPSjPאjz`2/ϳnXTqGB쁯;F[2J.H#}7H c\}oWbdz^eQ|ԨK䁑[R誔Yo|IfoP|SV +{1>i?-6kHm'@}z}xΥjjRo2U/ٕ\%MJ,9יss\@f7J矴WǗ5׍k ˚ +_]y+]p0a6#c۴-k̍寮q˯Df 7s*?$qł_*4܀| ˑ!.@⥀Co,|bUb^2Wg}3(XڀK^<Rt7Z +2Ѷ/Do5&%"kgJAR{;Kq2"9+^ux6vW?pȾRbd!ѳM-`UQUn;aVvNY[WmHr1,Ɵ Xh$I>>^6}ϵ ˁUb=ŠF10eáP\0Z~O2NǮd֠(/bd y Bix+ ^6_O< U7㭥vQa8g,7} +2_B#|yâbԁw 56d*AAATL^[\YPv lh4dM84a|*.y; 245%kVK(ìҷTHQۗ. bOD.m r?'xWF$Sfj-^<[~ ω)F7\LqVЪ>Rmڃ:N%j^'V@? 0F̷Su3*(mN|$ϡnWD T\;Jc`zѷZ-|t7щTvq+anL8eqM7P9x~ g~z>?-ԲnPM$ۛ~$v=CdWM[ O/?E3*c1x $N]f|5U=M\ϥ7Ibᅬ2S+蹵Z UU g$`G ddʘ*+9Ā=L!CJY5|aO=fnjWUYelw, X;\:6OTKmU)6P;;,gJyUyIVoNƮL[{G^|w#zH2+6N2Kasgb6??"o \k*G}Q&X{ߪtS5i6` [YUvRVusm~s;!X_a̡߲GM? Ђuy"n&՝CX>PH:^ΔFjֶ"cQ?V~1+~۹ŷؿ^*t2zi'`k@.ӓ&2%NZm":j +xeZ+M|MںmkJi{4OQ̗~ѐ^Vl'€8设xMt=P.ܼ4dJ{[/ɱy3%_^ȶt˾v5$11loQ + #r@xb&7Mٵ庻~N-d]OM24DƱqϒ0$}HG)cԫ؝>OO+lދo  +fkWd?+/| + +TV$@g߷GGƹ[X(?sd-5i Gжe}?4L"'kr;+rpZqY$l:  nd/*P!ƎwTt\dz_(Pqat^cҕ;խOYE;PpZԡ&IƫnA=5kstVdP" $hv:&kQ*崥bVF"c(ޅf +{OgcJsxpx: Ηu!C`r#o~&N=;%YR>IϷ힯£$*ZS%XjmaE{(8^×ne_aصcV jB:5\\:xhQ̏o$KCx4;}~|12ԲP[kN~*"" )lFqʪp]P{FZxּ=7OnfNr^]xhà]}K;P?iqXnSzEC ] hE|?_6EWVCB5dafbo21'Mŭ cW[:L}:Q +Lwxy~EMuη/Y/Ov{v2wܱm-"U7 =Ŀ}"Mօr/|О6\}m[>TIw= 7!ND AqnQ<5oQ9nPILW:L՚uPo1ݷ8kcCNqn7+)n7̤1 u5V tFj7e7orAѹ}JWQuv`L$;=KYbZєHrv uzf+T6JKmޙn7?"ߴ+\ oejҌtI'ٞq&~뢰FĹX!>2VedYX^u^ŋ"ˑ; GxTUW.VJiT8iEl4|=k̆Gubk&mb ӳzqh\w`c`ZP8+>z}[&yle?OiW[Ϥr-?1#{±lYꜰkscN;\/b~gRϡWQUHmdা\cBOt4ɫʱlWLvμy_cדV6TJA>&\)nMOR.Kd//H^#?dbuP*ODYEU\ԲmiHV ;]o'M9)~F`'g^ef7Fu[ŽV/lͽ#뿤T>GYŪBǡfB;~+C_&z}-ı+ $iN0_f=@R-X@}$eݗЮ%v +ybhFޥ]Ľ_fDYfkzޖEỳMkxY? *`ύ Ve/m3a3h::='$Qk],`V]jRfCe[g[55"kLoM֫YYcnI=' Y8UוbbrRK lh1cD6 >vm ȬwVH^o"?AуGkЙY"ގ]=sH3c}NΛYqMMkfWח~WYn]=7!ۉsޙ! miozOG˵^Of/L[VǾԡy\;{Ԩ'/Zk0hzWV'Od7eyq%zu.l*؝ky޾7N]/US# l9jܮWnMIbn-%yzwzކ> =?Ycr;ɯvwᙹ7dmYbܨfg|9,_WɉuFﭏo3ExWmƅ]]a2 N^@Y/evAўNFF#5E"g]![lFawJHP,/1ɬ ;'ogd5PfǮ8Jw?uT;'Zz#YXWUalbꊠ|x[&3zX=նeXKc.,CNG~e:޼s)v __t N&Rʃ3bǻO/2e=_lWǮ6l>܈;7/.%E4Y[]VDot:W-syr+HPt-ֿ' ,b̯vHֿy5]29Z[Hf,<"|И:۰ï: rԪ(r u6j}NљgS5-|B9B;[c^Ow]h5V ء6;.}@||ZK?XQje`kH x~508}#"έXFVG(OUFۖYYgqb8%'Mr=tn2䙹 ATJ]}ӯSuV).)$!. +A_ZivSk9(8wz9A㴸2ӏIe2ʘ;e[}7]{3euSm Bӽd+XzgX^&Y%#ߓzߝ~3/dg4-&X59w*HV#C{I~.9tʦ(:&`Wuc&FeuZyH$/!r `uqq)MfBs[zѰg2TNgN.%;1znbIqG%8㷦X r#lc"z~k[кPˬR ݦf(Clw~%2?;ՀX z% 3>8꿞~*m9cvi }Ѻ5K΍bazّ-eF-w>3>y=?`؛$:w.A$olq1N괶>Jsvxc[ Y'jY˻;OY=)HA+2-SWEjjLB|뷉D踩JZT{[? A@,k{߿^٢jGWdA :tu߼ P>cֶߍ͖Rݹ}+ڢ{_n<(@vg~j[Yʎ(%GDx#ʿcd^2>p K*:V:䜵N6 4]>xW\wyc7cg8Ճǒ;w$̪iLtTBv =FMI[ we.-&^=m%jf^>=؋q |>Q%$~Զ I"]T,7kܥmcOl/QөeeRJ'&-x!vNdGNǭkNLThm̈.r~A =ƈ jPea[3XN΅jue~sp˿M?ֽyY*YIzd$}F_Tv-52.zmXjGԁ)csq~#D oc+ڞ::e#`0BsYz˚̠{'z>N_ʩ=N˟.;w><63^מe{h>Z69<=mZ@VSJlU +dw8K񫏪r՛~Nλ'#BKuwX. Goig=F~B?"%dvM~~d^eOMJ&-=XͮlēnE +I{lv Ͱ?)rF/!@ocg}>zqMGҡV<Cۿoi/9>M|9>=xD UfTRHn ,Ѱ` ʖ5Ptݻw RDd5Te$]c5gbbUX >I$I=>ϋ2:KNobQ(b>+RK#|G7.PF#RL\¬tgn?8Rv\c`BFjMGmO#bFDQ8Fdn;F߿gCĴZ-^|߉ҨɰTBYoKH:{J_p~e@`};{WG CH(ֈ6߼ʢ^4QurX䠒{1QTKMvV$`vO`u=б(Z~Kb綁,I%$/GK^)uɛ,lGHǭJ@@_(t|kfw2u}ylJnXnʬj +ҩމ:ܬDDDDDDDDDDDDDDDDJJDDD0d:(P I`Fٚ'35 ^Uq@>V${3/dg} j9qPP%^݈JA`*@lʾ$v%n:GxxkA}ر*_~tbG/BZ"""""""""""""""""""""""""""""""""""""""""""""" 0:J^c֬WB ;~c%9nnFjekb IsdQY*BT _3J kWwm:v,t O ^ܻw]/\=]#M\p U|ց߉^>::SHASv~J"""""""""""""""""""""""""""""""""""""""""""""" /6N9oUD$r$CSzX+u7|ὗ'`~OO2+%x #1.V3be\kjʑ{7e9 ^ʽ&÷qWY|;Gݳ R)A#>4)˼-?`>7I3r4 HSc+]>dSqm@{RA#OƙYx}sDz_n.e%"{h_Ys8d5U+j'fbG^WRvk_#G&6WHJ**qCR7ȝwg~%긿QWVRW[WZ3oWz?yrj[Y= i_a3>ڞ~Wbއbvۼ_p^[1q*߁$$X] :xWZ:z,t!o~IuֺRg%PN?% W2e8a w'!?aC`gB!|Yொfb怪e'Gͮ@|[G]5Ԃ̌Et:]&?̍gYz6#jhTwn x=\Gn+c\[s `؎$G+E?+U|FN_^&MOt ^_dtqElμyořֽ^e(VA{wiZjy˔r+KZR @LnDr~S0^5EƷVGv۸ Y ђ+|H,~E>r:NQI Z[g7kS|Qgt\(=2yr $؏2gdu3W[` ?9jNcVJ!@{'D"=3 >M-FQ$|,P7Z=ǝL5G`6EwJyh}HֺwVc]r_uSLUelvy$Ƨ9^z`ɫ- ` : +y$:]D=wwc^% Lðf""""""""""""""""""""""""""""""""""-rXJYg+3x[IRuyoG?|!edzvSBUJ%v Ļ3q^_duӟ 뮐xAmi ?I +dmK#%|2oQE*lǗ_΋ ⎞`oA ȟ*N^Y u H^U{~?Scجɳ]{㿆2$`y6P~dPM6s- 7]5vt{v+WXUUCv{wģctm~.[qRXTxUO_V*VX-$wVR|dS +A]- R?Rvf ͥy?\{zmL2/CRTg롿:at[KqrX-clo}8i/~7*7%!Zu=|-_GP4,[!mn5"抖p(me}=ϙu,%7ze,, d;XΛQ̛;tWVUoNHYY5$kFmQ)B2s%eP,G},އGL`j5-7l@:( `\U-mk] +Ͷ)Ujxw5Jz`o{+o7+/W`/X('g~=7,̫ +-]YbV̜;5QQ2hUVblB|)z5?TMXSG? #NMxhm)踽: 9'`˿+ |qX,TXhؗ4L +Z(z8  a0="5Mg*HlጾB8P_L{S_yY-BJXVkceuŘkUl?get'ʪMNw^fNsRժuu7䵕1F +#^3,_zn?X5v<{ T@,JGc?J^; 8_R5XcN >_}C-"D>V4>_Ζ%f-]KU}Z&䄨1>7,2Y:z>;/ ^t̪k9' jھ$=gۑŕO)siF~})VE@( qU`q:7SĭߐEToLli3I]6&75nǷXSҺթҮ{0N>To uǃ7(F j}Jh*Zƕ@@4?{YƘSJ5"8&OG_lL;Elhlx[R[m^]6u,<_#QqXԬQDj5#qA"VSQ#q֣#FZDJqZWQozj5B%UB+IYMXܬDDbV"""""""""""""""""""""""""""""1*{Gj۷ [Ⱥ-\9wb-M'.Ek>Iķ׉fg=4 @C~:=sQџҭU;̻y!mJTIL~^:5[ ~4;Y]G,pYqjAe.ze;q29ub66Ēu6fS87+o:}l)QH.t~OU[Rb=MlbWfZ*fe, 6yroeq AgR?|QW^{N7!۰_"ژ:e;~Z8ؖWU"5HK-eir3UޯԨk* B>Mzx;~>cq~&Xֺۗ ~TTc~@,|UcɼQ}#%}?Rs]V0^D[-{̆`!imNKj"({I:nwSӮ=5vk +pKo;'3/=F9-1C;>GܗoRdكNcz~V TCCB;~7*zoZȭ kiRT=$0L?)":=8,j +#;:9ۍѬj@\ĝ!))E>cnǸ@~/GBcIJ"/R7] dXyK %ƶT葯mȟqҼĵ2+_Lą|1WTRiJ؁rRL(cf<_XfO_}iod:~#0_b 1.:vcFfb4ͯr.c)4b\F.CZZ6vwE ׸z.Iݭ5Px>g1Tdݙ:r-JG;*I45y:ft(Z(xnbc==G3}Et4dFč&f|1wU5­v=Ϯ#ڿ _g +FX<1~`FmLσ+ȫ.Jm ]{@c^h=b jۨ6uzG|{MykzkJ@R256a;sEa%J! ]ÞS\;a`lqLY|{nJ|WVWD´,x_:N8]6>0˫#f j'c-qȷVSaPsۀ ]~`~s'[nv3-ZtQ߉%˯[Fi:2P( +saгM""""""""""""""""""""""""""" ,aќxijޙk|: >I?Vu^ԍ^+Z\*0SӢw( +?y< +mɸ]ɘ-0,ljX4䢞_]{V;VVT2j)PT 2q)^7V_bU*EE:`+.=IXcB|wԷOD +QgMz#Z8wzZ x#}% ve#DdU% +UPOLqEB*W0{x~v6@Upt2+;J?MŲŵ닔R^4H״Դ0[M´@c-ēE}Ք݁r |`ªkU +;Ga[hȬUej5eFv?If/z5{'^{nqJ;!.㩓bTQ噂1S.~'s#2EbmI""'QCp9kz}}u=DDDDDDtCXRʅ"d][qp%O/DK5fS}RXj]7/DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@7]Ew6E@ ο9yzN[ц&Y*AZ5T9v6LP[n5BPK)WWR@ڝLn8ީ[?Q7H(?c!v;׎q)ne~G})Z$au%ke[Co}/bGv#7ĭvIez &k̸`ߎչI_VŪdmŻtQؒ;cŅ쪫Z8Ut|N{L6])ިc/c0~!nF R'L,IkZ {"V$=jn:YǑןa%]1ҌJZq+~Un!3^_?cj7f#*;R{ zc]U,+f ֵߴw䜊^[ۚRuv76P|> r[#f )reumd2>c)dᕳ]JcUϪ/壯mYƾ%V]F⼸@#Af̫ܚE>a Q1:[~[7>< U$~]}WX" N/Χd[jl}>cՋR\rp@*Eu@ '@GazM]Q13V~,pd림Z$ ,=,Jf.=t׻{,4짰,g?yDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@5OV0c*EYO!Pt5SqeAK)`V=算9 RV7BlñbX1:eb_M@A'G"O@1䧚\vїmIbæXO=BFN_(0,T}8+x.R־܅(㣲&/C:ݶ=Wtة'DocC]d\p=J@WK:v^C_Guz=n;})2ƨ]VMoPVk?0{wᰳ:~cUZngdeZb$}fQw7+RAr֪9q% ߷r~?;773zha'oY;{׍O]?6ej))U"L \{C?^voD|jSշ)E5n}+/Ƅv"""""""""""""""""""""""""""""""""""""""""""""""""""<]Jd#VjD}D^/JC^-KR47ʈ֊*?/;0%b(K<~C.jJDK^wކsI>%3c$yXm̍DDDF;5BP@~9u/!%AaS#ċR܌. JlmY'FKJ3r12K/TV5m2] 4uy(ND՜. Gi.~~ ܬ6v^'d|-Rގ66>)M:JƶHps/ZxyAh׫y%|vё?yG*Vc~iG`u)ca=y{is⾕FF˩\+[*:>zt%edftߺdXHuſ~8ieuvw*G@ẘ`es"еaʆiY]vm$yo̠mKe +2qlu[q['Gu$#c[73ZV}ؐvX;R.Nޣ!]*HbW!%Ν:X_O䯹Qf +6tڲ0psE춸nq#fcc~6 $o1dm8o\mqg1-bwmIw%pXϧ-A\Q@_R{o]M]/ ws3643Vc-X=8A!թԃC2k`4x$k7/*b|\!n72AQ7kZQQ{~PJ|:> A~5ň'LX9kë;+QGNIIGDeTXubXz̡9 v M,U=:ԏ ;1N:eX V M_DëVѬe@hO5 jZ.!U͕#Ev~S.Wp[+ ^ŭӾܞēE2b]z0)[{R=(YS.Ͼ31$KM {k6!nL݋h$95S7&]O{m'~a7?_ӷ>geby5$"uUx?G`P4?3$b"Zū64|3ރrQ[׵ɾB<{Outj2)V!Fǹ-pD ,a~BgGiwaGvOy `Z[Y 69D`yK߿mLbCO,?,=7P]X;y[kz9F>ðdtjZ2P-S*K>R}x2:Ӛ\/g  + v@>6}0>.mu |L{"3nDkZa_B(ZWӰ;-' R&,612"""""""""""""""""""""""""""""""""""""""""""""""""""(ە3o:q)XBu!d۔Tk\4ÚUXrzYKU͜F*Ykh"Kڔ)w`CveTCG*:4f44|r#zČ!ӱr0$eGس6M XIc/?y_j fǟcu,ˍrʥh~[䛩>f{({V'Z\ekq=rj %^UxU=0DE,|ɑ@Y]VQmF-O0@|[G>)jK pθ޵Ŀ"QMm5)"B7eq%flݒAǐ'D:vi6`8{:$om[aEmYU XM&/NN/uJ3 4A{=wᾯ޶=Qx?)>N022@Ƚls(:P3zȩkw9BvG-woS|RMt_ccXV^ [Lt- +bd=j/ڳ~gXWU/c0E,K5 > {G[,ʒXYG10zUݗh,+Qf$*I H~}cav Fd_u1ptsЙx=kKeX<< h Lzq,NHB썒C7 oBNpRlĝzQǹMIz:.EZCx(Lz}vV'C +'@HNf=gfu~˷Pƈ'g>7Qc)uk}OBJ)[[U?Wa羛[[yx۷Oc(hF<{>m\3 j~-;W4NN~wLo+ 1=c߶·y՗Z+f}Od ǖvN0ocյwD=̿H2u{kT`,kwn#gq> 땵j9f=BCe6fܣ2 >O`zȱK7v˘5"ZA$m?Ix3^cVBa{$oMbzڿ;R F38{YſXzMxjA T)ֺ]x{Pu3oAǨ񒊕Mzt=2:Y]{ACT޵ k8T].3]GUY-E@F#P`.ߐn'Ἃz~ cT[E}dnpDwOX6+YeJl/v`@_6wt%ΥFMtֱ&@NJC&]Οs urWcEDEK9fvg5rAV-f;Hr;f&["lmAW2l85UT;k-|~% OUOf=QKWPC>6$M?6Ǹu\\|OJfU}KdmM{og\O-oSPյC1k` +I0wY)Gt}~dR[gƽx]-0|sCy6QvgN$w2.WgCZP}Ab:$ wdX߇Ƌ*L|uj;U`gGa-`ӑG}Rס}GO]73#lV(,Ź}s61+ #\*[^B9I"` en, ޿l=%&Mw"B̽שc%YwRQ rNLܗA[w#r=Z1-N(m6GȢc4dZ*Pb_?Hfv 6CziSI[+u!%t̬F#a9}׾:u1>,kqĶ6'uuzHk#$}OLZy}}hvBf.=ش[c`ǷlNt܆)rIBRtNcEn/[i_+v@ۼdd`[UF} ޵Yo,QSҫ˟"ֈLEHlcKl3u[P6[]gi:n Co/L*Z%nKV8V y^vaDGaVN&2˻.k*V:ހ,ݛW]tU~T;{n_}B~sy>@ ը}{hj4mGzW ySսˎZ +3#M_?cݿ~_S)r/m?ޱv/e_޳]i`b]Vϩ=;qk@+,/aW.EV`߹ZRd~˲~X5]8weO~/O붏OWSlJDDDDDDDDDDD@~uUKFNn$/>sm^k'.~;Ca~s3qce5*VI$3*%%d^o^L|W魜@}l/_=Q:p/eº\O>S{jzoQ@Y6}׉d5K烈VWk}d_)Jޠm9:U5w'gRljYQʬeeC.B#}>""""""""%UǶV&R×WM߻P6H5Ɇ~c'C\ӜrjZur=M$޿ wd9.guSՃZkD +=_Wee,#ڰ>enFNubt!4Kmg[nart(Mp>v͜v]2bZXjS]V)PW)ZN73:n$$ ,xLg'r8ce7hgnlMkdvܘg gŘ@g2V&{ȢX%O1i߷eQ^2eG=*ޯ}]^%+olg**'gDw:uzz2S eeaFSB>興)SGcZ4==W@SUr:PL~쯲$ k`GM1 z-z]3?7-$-SF/z34 ]X{Tn\t :HtN'WY"*(#g|Hy@k4B}Z`Zӆ~vv?'ZeElkA- 9u;v{RW{::,p݀=2zU4gcتKB?=!}%Fb@#Qؒ{ 5%2q)ON$|b3G?:^'O,WY`(v&TDD}ɍ[E, !L̊B +d] ޾nKe_e4kv +N[a^9xK7/e>f r`}?6ITS{RQCf0cu?W=j4zd?OȾ~vv6>uUdKZ]WfUg{GީԨ]ʔۈJC6}띒5v.M¯KI@@b w+Nz~~A`-{vx}NڬLDS!0bA1zfwRtM.Cc.wQ{:yYȩJ}(# ۄgGmM혟QfO]5tS^f{ʤ}[2oTkF $GJ@}ϨfXT_Z!Uμ$![ +zKDZT* M,F^v l;ZOԩojMDDDDDDDDKKfr 6elcs`QȨRzˑ/90iPmtIEnZw{na5v|<~1<[Rތ+#`؂?4'DĬ-HUZ{w:Zl:谫ݑ]u;_I;5nڛ՛QX [#Ċ H&>EʯcXWuٶS} 1Aڽk]wks$t5۴~YeVT`+pzcUvoOeȯ>$+^;K\rKw`,CIۏn#ֿ*۬ޯ\B8;h o<^!?k^1xMf^ +ʐ +.΁<}gmK;9=_[O+E5}CXԒ g.F z&GSu:7*(N'2wH\ԧv:I ]SY_7WbO21WnGm'oB\̄XS;@7 -ĝkz=IEP OQ-rXJ2.* =_ uM# *8콆ϰꀳIЕ|^kic. ة#^.%6 >&~AXv2iE͝J1bu*}¤[$߼;r>㸘KWɷּo]խ;V ^CGo:t|ƽz x('Cf+)+(7pw+(H vlwgfjd26ʕxmB 㖤bQ e ؕ@O'Kƻ&ϻUlǸ6}ρ=d[qgY钊@?MEg!Ul’T6OxGi~N]:Օ8m}4~gg.2stUBToܓ2AG+1:wPN[_[{f(H׶C#&2Xezjxrq69kr}vlyҥ}1sl[(VbS^Tvw27ܬDH3?##MF8,/r4=ŴMv7Xd.lg$e"hiس!iB#s$lk3#[v H߇DɽѪQBtgvT4|LJVSsU%g~1?l3國ȂSe$?7 { S+czܬ``˂Ttttu~:IljuZ˝5_-6t-VᎴv|Lk3ކ:%zQYs`Ik@|{5uAcKY&ũ C)mv7!~ 7Rj=D!:=˝W?+ t,Rmm``5I"&/y`}HkBi]갎 *߾fV-t7ٜjmUwNDoV-`Tܮv[C]WUBA_԰mTn vxx8Јٕ!H>~ ;-7005!#D#T)ҁ;0c.H'z>AĿic&AH?-vCn~*ԯ6©sS!vɢS#؉1^&7P+b%znދ_c ?!kS!aO0|wּngt 3UX&E^ݏn⃇VOFk1N {j7̬1pp3/ [o:G׉v};tv/{N+.*uƦfKdu̚MU]/9r\X1K|7Ed{\¶Tvz_ n1+:CXGh}?lYnVORoW^P8HH6&WQDGP++A}6~|GmDY}6YWRF%Y%ޑ4z ݝɛ"fkQk +diW]okNz;kVdn-SRTCqZW x&K[U  +sq +'b>}++)[VU/mHU`.ctK*Kh,Vz/sHvkUF_hQù 5'J:L~@<g:bO"@5nFw\|CVXY`Jٝk*]ѓ+,^KK68d]vWõ[Jq?;ٟu +.B1&DfNbqXY1#wMO7ؕt>r~[eoG;S3 2> , lK+E?1su|Aru+܄/Bh{{OX++XE42=L?h:UeǍǸwNRl&o3q!oZy~8,ORG~&ؘxy8cc-}Zd-9{W.`"o'.yX[aUgsNfҁ +v yd0uG°?163Quˎf(8޻) 5VMޞֶXx$hoz5] w(mQjXxxvF9YXJ >O<,E(G/2;n(O:/L?7}E97uQ_׸HrrEVvNHC`Orl?3POɌNFm׏N-j-UmR/n );7$~!Ư'd0Z-aC5ޟNke+ķjYO??OZljaKε%i.Aj=Qbjggy'[W_ӺGSJd&{j{+މ`9Mu7p5^9Bڕꃈ{=m'DZT䐻 o^e0r6]-y#]VdP۔O}CMTYYq` -`prpۄ(r1=vVv w#{nؕvD]a{}L>F6/e?-Y- é{] +Y_ܣ"[`MrEz]euX,[ZI_"J{=-ֺRuKqc, [G;iElظӔś}gD|î.=V-PB=]EY+1,ZI'dm[$)O7yDDD<[RܥA=с[WU+V.YB|<q%[ѵݝyߝ1;=W=p)] +t +:A{#*B$(*,#p }'nqCv= Z +|tNCa`[b߿:U]*EOc c4P[^_bҫZ-\3t:)Y8Ӓ(*{q_p MT>;@SF{K;n:PK ڴY]cgDƻc8, Yƈ}؞Zᱱ#\`(}wp4=Jq'^Ie购V֪3̅o}c ӅRC:8ҋ']l]ߑq2{_Ӻ&?Kj/agfh݀/z-E b1ưVMɜHqkZkǴ6V4Nv;I -}h5̀hyw?j226ɮ0ZX5a]N˖tj-L/S̅ +~.F ޭc=\8w`; {O|;5)g+=:ILjVRpA bEZseMJm?+Jց$=kqʊb8.ct|\rѭ/wfFOnK6-v;1e#Ej] { %u%JX@,Cd3f܋kXkr${o֧:=a!kDaRE+m +3 vJ>Oxk `--{{kyw׊mUnþ2sp>([qbGqLZ:58gxf@51_!n,[~>e~e6b| :7{h̵&-wզtfձ؍3^OXgW6[`O.[P}d* Pd }3fk^/E*6.9kkY kQ\[_F̺ίv^ l{vKnuOUb/xٗikq[rEwu~߉{QeԺk=doʘCQ)4d t%IxDNׯ*˲6ߑOy8ufTܡԫ)>7I(˅;?͘-pެMCK3Z;%p!NSZ.߇pNނqq;Q>;OY :-ʎk'$v;jV""<36U9Λ޹#F؈:㱽o^,qZbIy;1+AeNve`";K{!/}w2){(X~ϣb썩q2%iir{ B.%興I`gPo8ުzyz|>?^>u2""bSƮ HX }N mBچ0511P[1=R|2>|dDL[:-,Ԭl +Oa<0%Y4 +132"%ĬDDJ3=lJDDDDJl1Y˅mg,UH @uȁ~27/01kUxxB{nd][OԪ>uN%F;~"SWS 8c(_a=m]AjHK-E(AzdOYC*UFnjXuS%zx `0z΁b.cˌm$xp?:Ԛmn7Fay~rMbACL"*Ƥܴ\2//ö`7ﴅWz!ȵJ/2_mk +?_Y3GZd.V9ޭ8\&.4`1)h?gŽX`$9}w[]}:J2IS#{̏2Mk*/^ךP'hg^өܖE+SN_;]"X*v O}oy_ E~Y~*ɘOaIKKUk"{Q"^EKxxfgYmYCVkvHdn@kiof[2/cN“;?_}R:uwTk,d!V:g։~+Վ5k: +̃К[NB^hyGʂGiѳQzzOjFj`O v%كծERC㭝vdoX@/:7m@(>?>nt8?_ 5y;!Nkv W\o{=Cn"㹾i6z!~ TVb!v>zfYex*UC2HS>Z + 7W*ξKd|w1:wtP~Q~g8+sNQA]㏧A]iGQl)~T!ag^njeT6tt WPe[ +޺[u.~"jWXljbg p=ዙ^c53ǃ!]}%ïqQb֠V]gG&}[ ^Gn\:QΗS Wlmmh0;A#w  ?M |+U=)3sq5.c`PY=O/XzG-puaȍozNdc +k[yI[O9mŵ˩7<ސa[z"SE)o{'Gec^}MYk"l/eƏ{X'alz8o3-,T8G>F#\87$ +J}3~(f*32%w d|F߮陚& ;$.kzIg eMZZV r;z6?X#v5u(GRN OmJOI0c_yfESb[.`?zd.S/mSXYʹرð>{+*|]kɟPP}22.]v#kX}+A/6Tw;=+)/X1Pˉ9xA1ʾ ı)^D#3rW#jpdxҜy 9dqֶ* ։ܟ'Cfi5Z븕rWɽ䬁DA`.:-n0*C|c1rU}lf*l@ޏ2:frQ +RLj="y8m7eemb-keT2dKXmYdeRa SbաK|q1m hwv>wRkwe"kb,**Jۓm2+T*[ + ?}N:~6I[Wu3-R+8);sb2܀xiN_?3]XIAȁ:rzY̥YY8~,Yٔ6$cSӪlkk]@]JlSrAMg Kt1"aTfC* vI~ӾՇ,DZ6{MertSm)9XG5\Τu߹mV8UfUI)*F(yo]qp`"@??is1[-~Cde!^e?0AG&#|~WgȵjʬR `H )Ӥe p1&]ls +^Dh:Sǭf8`4tGyyP]FIڅ}MV=?mn눦PhGrEUNFF&#d)kU#X:aGǧV:e,b5m=)uP>|-G7cQiWIg&䃠=1X)qfbOby%n1zWsG: +cG,ullȵ͘ukPUA)v .dgQ螲n1T{( +eA-y렲|4e_S>۫r [ +F +}= :ܻX+JuSVE+73ʨI mۿ0;1:BYT_+vm }a7NħZnsH~uXԪ})D;xoud_u~f^Aԫέ`%b""aݑUTr};&X=s[zʪu`4A׸2Uk=z%nKǟ-z||]eĉN{XO`GrHo>ڙ}V(WUnjdDKuRtw?S)e[MFT%k)c۰2֌PA#Oq"~'V&֬{6X^w]z>JXm !ڳh0}>%m ֵɰ|9=-~)͌+]-NOm=0:ev|UN^Sev tZ}3ITeWe4֖Ǔ6{st:O|P +$kc2199FŒHkg-u*ZQR0=3YQMF ,x +ވ{WunF>5vWjǰ *AxϙOI[]`uY +^PD{yXKUwVj;bI$5]W'#5AHrd 'ηqn驘ӕ##;?D殼#`FbtLu*nɼNcRX2MX`ndJ|#oR8ܝܐJ']DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD1iT>=tGbpfmkV%+9|#}lnU',2,W+*5Ȧ6{I TYGnzs:I.WTkgmc <;ictCG7S1a25[ަtg[~C CB ͭ> ΁UmOܖrINͅ}e߇,*~eҺ+!k]5}o$ofEQ4{e6cE7㚱V#|XZ֟u@'ϓ02:sklT"_ ARN=l˦MnU <xfU]IF!iʒ Kv|*tiɻӬצY}VC"iѽk*K/S]F|jVNf- ܁CZKmKSui=[P8/mx?c#qlQ Gcy1:?pɾBB);!U@sKx_ݼ.<\"""""""""""""""""""""""""""""""""",Zl5Ƕok=F0Η4=UOvړ}OXtYMYXOeh=DjU8k^~H+mYtB*rCg2kBXjˁ=Yq63 +b]:5?>kUvoCA\${:'ShY[^2c6bhק[rX2J-_&VKF$ᵥzrDG]!'rs]}eZ_VTk}_ޙv2zKƋ *?m?=r+Qϱǟ@=f0-[בn#{PV =d%. ʖ~]׿eDDDDDDDHop~[oL?:Li 7m +< >2e5M`F~#|W\:׷6My%԰du <Fb"""SzK^2K~Sik"o|=nEtĠA=)g½**td&N]>F!MÅԖ%Tb;ǷMsszU`t׌Իmw֋1$DDDKY,[&Fafkt,oӧ&D"{I$:9==GQ!I$$.·׶lKhW +_ʶkIXԶ'@l<^h4 r 2핐Nf絫E v;ʟdćl #-zUb^P7﹏01r춰=lv`ZJQu`[~?/>|Qfm/Zt7 '͘J:U陀;ي~,؄DDDDDDDDDDDD@1Iƺ7cI8A- ۋɜ}V&nbdg-oɱjJ6Щ6vP?ɒ?1[Oۯ4.EqF縈կsl_''P/ V,vcr2> 뗑f[q孽$,_N z֦}tې z}gt۳mkW.^:TxH:{}?j(T?}CJdYmY{vQ0Jeq&Ve\\gZ6pf=_"ݐW31ҠV'BG'VʮrCكT96oƻC#ccG` Dfoc܋]soCJ@,^ 9){ܚ}_Qֱm^IbAaM3ίiwug򬧸MAI"$^:jMdQ{rruf>{| zn8kywkZs0/'iA,3a +O'e݋Q9Qm+8ÐEUe;Om6}hr+fֵ3>vunޟkee@`RI 65sN7f==QY!Ko /Nf"f:gB`]'W*>(?_㟥c)&FVc +8;Z@C"G~" ʫ&)b6O{ ص)f ${p[ys\n^_ /GXq]94Rf$=o=zfFKY@?i +۾阷Wm% ~3i_bǶ,ޝlTmN3[ߨjbYT#bgcu<{F\lk-o̵|!|I!U#@/r~iۍَk V{JIVN kU V?nK?xhޙ8=8`rշY_k_N^&}6ΠXq޹ c}&%=C/.o}Ԁg3IQ̎ںc~ɶt`Ƥ[*o.#Sb?*Nc_C@%e*{m`Y$>k1:MAB)\E#NT*?f)+">+qݗk{\=N+n;6au\>U*"%,`6o߿i.ť0ŷ[HX4Lo1pj{[޹ĵ|J3q2z6fMo)U], +UxX9fnZڒz vttŝ;3R5^[kŭf㽎W`xOm-r2L5ƺ +(pQՉDDەG-V7^OȮӹ.ʶ/(ۗZ^ZߴḦ meJ7@ r|{ (ڢ0 nn:KqNzt쎯V]2YV3q60R@ +;({"l|LɱyŒ`8MjbA {>ў߇ae6Ϥ9k$!S5[*!@! Cvk['/+e:\T,M:OPyB-N:r9x6^q[S-j +6;thw vqKwJԫω`[]#s]4u'Ͽ7zibX 98vކ6,a`}R *4? XC|á]լPzEK #aS2""""""""""""ǶYčo믬Ș`{MjP[kv߰޼.+e]b PHfgLwVr!:̧oc};Lo*Tre 4J6nҴҘ赢UP""SSޓ})kc׶LX=2Crbo,J#^OމRYk֖7.Y~2Ҫqqr[a@u~u>\O);y;,e5?M"*V% +@[zbf6@('Iu~)ZG0*NlpdXiFE;+֥;URX6O6_R@Ob&0GնXrr"""""""""""""Jr)r?ӟuxxY/o,K1~, $Ɍ{[sK=-h6%Kَ8-a?娧s+Ψ09<}YLN+֒ +M +=={jfDDDDdV,MUx?\@44"""""""P<>kMA]K7}=П͈٘ XX~ X}f@-ُ]CVAoK [Z0bAwy;;""""""""""""""""""""""""""""" 0zMظg,̄Gt̬ oR.N_ga*r޽Sߙ-.+V 30>A~v\ +/̀'nJn7(lP@$| 3Y]jq+Gsb@M2xny{Rr lyr=dde kXcZHzŚ#gU_Rԣ$kcʞy}oX̾N9 + +*bNC}]92F[ mR9=o(ꙉY{65+*{:y!,G{5~{%;3>[1}% ܏3)\7pw+JslPBA ǴBPehw<&Sٕ^;"#PBu>r1:mdGo̢y+³P5g'fC#QMf28elVG!Eh\!ȼr*΁XiFcZ7ɐCx2\lVwԺי^u|9Z^] ly0At?zT嬦jsH7Nm|0^U[J)P}p('۩tH:=v?=b+o(+v_{o_Y%d(!mLӗnPXH<i}˵/o +-ܡJԈi"U8]w2ħ)z}NZXx9BFIuoL lKvlBdĮrbr6?m z3.S޷#zutʯmԬm׾&GM*r[0IMrΆޣ]YT{kq'ߔC#;[O"Ԯjy.;޷[׼VWCudqMSbtVZK9hcUxX^kXwm˳a~fJ?nXeZv?>. +fO5 zvP;ǵ TXT4D7HDqaDub|C_Muc f&QHrI; 翙=JuӍEС sbe 4|j Zsw]O(׫iV=?IkxY-llW+U ^ߐI2򱺂Zn5KXԫ4G]㎟{soH|oSu,U_SbiWF;Iҿ{3/ΎZԺʸ9:L_1q0)([,)s \[`6Lm`<$Mkr:;NA +a/Jk׶.^2Zpb6yVtCk~فpzJLRhk[>HEChGE]O-sx\1ZЀnN{G`;{t=OLUXt,qH({}:ޥӭ#|kmt>-dઇ.D{}ntw3ֽVFpܹq?^7tmUؒ.15/$ﹳ|5fwKþcT~ LIW=F$v2TLIKE(\h|=@j_JXkG|Υ -j6ܯVzU4x(íJ]d*߸"]ȡ:gX reޜ"+.Gtg_m'"soVJ ^ĮnͧP.R {`4H??\ҍ+um*(~1U:U0R9 ĝA,Qcc#ެUj' +)@u+F_Jdcb':qjna%HևӼG+'tr*Z)17e T0ESԽAҳqxW97Ǝml=?3r,.fP myvYg?1qYɹ,{ϟy#0fڽFd{'gj>ڲd%S G! eUi9#Mt̤ +_#c3*.[{1>˵s:+JoӨ7 |? hgG=S_Uʭ#e`$ _J6ȉr=V=w"C;`ZWk[mqYleK~{\b`*moE7|} Bw$`R[m8eSZZO ;}C${\7Kg'GW(S?O#[]SKmm90'Lesk'C4;FUv!Q.Q0SPGKqq1+^@n?;=0|A)׶$rqz]uCeby:냪6L5T5[9 $wӀDsڬĹVK([ihl0h"ݕZn6~?`uGEk[m̪ .2G⚱Z0ul]NclJu\ 5s7.kvG#31:=( W @:ԁχ2sm%s vzvTv9t ׵ܺ$qe. ;Wi*s'Z6NU [-d)!%,;&:KqVtQkg[?Y.oQ~j޴<@}|M_tMub~t c*@VzK̬5; 0?юֵTUF:Jץ}>y + +`'_|@u[*۩\P^Dv?X/ӊ+zj4c(n#܁3܎hɩk\*KFSY;} r]OQ''s2+ɺۙvzpeP;䈠so޿"LO7NwŶޘ/T~@NZB 8 oc^It:%JԹ˫*2ĵmo et<|1bqyw`܁ m *P(]P/$q+ĵ_LQbX̂cDg^fbXG+}RžD *ɴ^e ΢aHe`@>;vxepyr-%+;ZKNnzw=(A]eR38jtk7T;bѫk-.]bkh;(gխ5I [|}mޙ;^5EVW +< 5=Yk8t4vG~,ZҾ` +T(:e`љZXҪ>O1IVx6GpH &>oX⹱kÀ2$w'V*Ri6Y[zmmUevʅslJPխu*U#@]]mB6,r z/K,`;ܕuOˈkkc->N5zT(ЂĎލ^]zrQmd*{<7߸|K?UUl'v<=?ax濓-{F8xG8BQNP?[0GN&@GNZtG}=e=^s*p4 tXAoCda6e眺kDmZVߨړߗ} 7~k}doUTmr_0 y?ظm%ʕ;c۷^([޻YˋDezwB)PZ-C!R~a}go X{`K05;l'^V&Uie~jo+|]蕜ѝ[>u]U1se~,rkz5 ۬5zxgg[._5KjښHkn?:gcb%rz>UזN7A/n'v;~S#t~ZאlK4vOQrRAAwnZ.wk/g δ>L_Pӳz:!H?1BYJ 8{ o | MZnk6\-$ږS\Dgn[=Ȗ:rgz6մ?"lY-&5Բ[d?=h߼}$V3gy::'sl35YK}v{2~3g*2H[D.etZ.*0Ve![`v2WØtCTUxXy1 =t:2s*fԩJ`8;tj[ Z-)~^>o:䌋{Z=k+K +1 wFރ# QBkEd iuuHԺ5]I봳!X}$:OVcX8Z^۷iptjW0gW>q|h㷙h|?!Ȥ~_=ߴ֥b" ,eU[[sE暑g.˫x?ҙع'Eb\ 6=R($Ǚ"""xCczy(NVSsřʮK($[Թl΢E T$myԿ0wdeM˾׏{̛mJ*$u{mK5emoǂ|7Y=O9̘H{*:gMu +5بK@;&MSe62z{ZU :'G$̿OXkl"+.؄]__tc`&?ϥԪv,b6L>"G]I O~1QA^R){h>d<5bQ_}$ fb xٖ= Pu'\E{VDZ[+U`u{u锋ksAc MN!h*Z6 ]47N]1W&J/5{ n{ VK9XeP[NNcZJWY̹RhAmqqʹ%ϋ1O鮏.=r6FۭZU-KYo+鹍Jյd[Xl~uc#TMIĨJȎ^}"j*Ʊ. ],@.4 SXr.jJ}TOP75v;?✜!W YmIʊ!t|Oyfj7YNP}<{׬:uW]%ہ;~Cq2K1zV҉g~HY\˳l y27)*XrgX Ÿr{L%D1]fⶔe$v}K.\XWˁbu ]#[wucElBgMc=|72rk .-,Y꽃'Gn~utZ\1 teIؙc,:S!!,YP]bzw19;w#;d>.B+Uk9?|An,Ko@x<nZيX[N8*xWS?r!+Zlh^)=Q'k7u멏U +0r݈ ĎI|OGo_ ]lIO`>IanMؙ+æ憶$ AoQF?[9q}>?pywɻ[ucԷ5!=RzH%]bX4M"  ѐm΁;03Ux5f" :ͦ{a<}FdҠAƈaev~v !|1[IFfXwߙn&N^*zOPVour/Nv6B]5mβJǶonfFUu M}f/Ð{rQNEXe,⺎~2w!>{ k3 WTI>sl*7k~D+#_ݡMv:WZ_U&݅AX߲dv5՛@^+u^zFWy^g.*q#*TQŹoDqgy:ujM]to)nw:MRUhW9ڲ6;4u4b/^r8G@ oo}hҺ"`'J[,k&6!AY6sm)eCa7DTw;"""""""""""""""""-d} w־T^M־ڱ d^(l ]3:5=U:V؆UkO/;@x?Ujޤ\AEj㋶ߛ9SG#N׽gU0ك o{=J~ֹwUT*.oV=6Z+;ߖ:G=J1tyWH$w!=sq6uXN=zicV ߖB,0hG'hO}珈*k?gQmG[5,F_B|[.q.a$ }v?z5ᐜC^^:ۋ;Yr|k(M|!Rz5‹ I}LGJ{G"|K/+uCfAٙ+)ּΞBBz6crO~uYVv׀dcTn`ݴ\)c1'0~ zsUE-& +A䍝w*自6W kޓ:mے o2z..*Z_PH.'c +×w'Ǎ{Ꭵrt*qƵdVx~cgodGMULjօ-^$y-fMNuyp6tJ2b,Mͅ,{O~Na|:{'OKŽoG eYTrtd;kLXcՉwK!kZٽ?7͝:KBHj}Bb}<L.mf)zMGv-މ wԓQU^E(7kR&fBb[^CSnKKw'm~3NWۺ~}TPŔ{#ׂ~&ml/\jU(F;^2MNY822!A^v zzsSg>(F壠OL~/MïmVa@qܐnv7 z9Y3kCe#6+.#ga.=nzŠzo(uTڵ]ҁoÐk {Za tpfMH+ {)$=Ƴ,.ԵZ.Ud*;q?Mli\ºT=!Rr } #ӛW*Գ㊏!lyGpjbɚ) {]w뾯tZ2U10`bIG`=N-vcҨMgdϘߐ>KLu6TϝpZܗDl#}X{1kJTOmD 'wRȤp|ږ,N{$nEB?(8;Q;[:uVϢKhԟ[rpnj*kABi=#HX)ƄkqЍFhFQЕԬAȩWj rBȐFd1E$r +;oy!j4#B5hFRFQԬhFFQFhF5֥e5Fb""""""""""""""""  +endstream endobj 131 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 44/Tabs/S/Type/Page>> endobj 132 0 obj <>stream +HWk+N! bc -0e!,wWUWY2ԏzS_{çtwY6|~.{/? IO=Mf>R/ Bj!r=H|e/_.K.e=*aܣmzgq6p08B_.3:YL粯c /-yH^!@ @|TK}`MZdR9)Gm$r᫿ϞLLw0m謲R0FR}m9P,a. +%Rĺ{'8aG+ yp&>Rb<ɈzeLҝS͋~KNZZ [K{_S!?f`Ic]j'g3kn.[,]ѹI?atԲFa4뢀s>>5}rHzx'Y +dcM{zWkq?TL-15:u93(˯`RBy}wψRDMehQބW:D.oTv>-~Q꠶vb0@fKi%5DʜKkOli&ټ 2gXA<-$.եCk;_͔f”3VqJ2Q2`Lf)9ǤYdr %eeKvY*DTt`u킡SVZyD(^WNRĆ8[qt + c~'|0˷5U8uDk5)JUB"xBKx>ge +076ђxq b؁{p CI$ѥ&dz1Jvza{nʩ N6!ax*e@Se{OΉHv=(+d +2nx:&eG#.|YA\T!\FPpSsLA"Eq : ([dv8Dvp#o.A*W4dr|=΁Ҍ;Jy΅'|iq~i +\O(SZRauU;ki!{tOd +׭1w؅;YB *Ah P$4΢96Lg r#$v*`+f'Vg6'*jk)$dNA}@-j90R'#">m6@Um ̨Ҵ6BVBDƶ~7:ʍg_ :znBđsAݒHl{H +ztާ98x'*x蛹 #Mq BX" vB,)(pCKP$ D1' +ZO 2 LbaaH8#oIR7SQ$qr#^7u ^XuHjt4Dx5QȰוY([f(2'Pol ʫf4PmE9Uc{q $VC={76)F%Y(t[Wn6τ l.f(!Ɏ5 o^ERsey- $XD#;D(D*7 D!b~R 1$\h26Qo?ۓ![q t@;Kr@ maQsZ|`R|]"J=ԡ%~eVХdiddqMɷä[a¤,\48쐶%՞|$s?e dV2ӌuD^Xj\yZд98olDh|l6G>9 ,+ 3Kq\ 2Q\9OݛJLL)Qq(Ja˜#ݺ?tfIo4GaSh6<]^V01QN v6~:vJɃk@iJ KZuԮ@cO߶o%P4Nפ|Yhj?oB.vhv?vS'SUdڭ%, 0f&tI8yZ, G +?^%ݜq'*Je@$YHȵ';W|(Tz<^1WA?3e~S& F'9-ˢbp:$d_?y%^_t +endstream endobj 133 0 obj <>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  + e!1"AQ2aq#$4Rrs3BSbCDTc 5Etu +%&'()*6789:FGHIJUVWXYZdefghijvwxyz?|#wJM> Ӳ;Nʽ.ze?![&KoZRuLDDDDDDDDDDDDDD>Cc*'QVV 0 +| P]@j5FRb""""""""""""""""""""""""""""""""""""""""""""""""" <3rW +܁R0˛ j+joK}8KA`_H;zL^{@'eV.Ά?.O]ՙA:~ WzzzkZuuoc̗*f w$ǙP;C c-FA씌^6lRƬ >+R ޏݥkPǙ_ƾ{'{nSKLz}A!.3YDZoPk#|~3 5؂u*|0`T;}tuyJFUD]CkG[Ԃ>`Joe/c(BgyQ`ۗ_Ct+ $|{q{#{j6{i3k)jB[ы +Ti;8y2d/QlY*ena̒dWbWR#ʍ6;R.Cᇝy~_|ų!rUUbINv;iV]W5ح祁߯j cr'JPg:Emu29UUc uo2zON_ |egQeJ؆d޻ؕEl@ {ֈ;י}Qk+}?RwFzUMkR|תX0z]˷ԎQδ΋v9q/HG7%h{nJ&nGΛr 59@ آ"" -5װخr>aT5L+NOʘm]icYEl$~-܅Y6R[mLsXtn]@ˎ;O"45lI7_v#<)cjW6}B\_xzKdVZٳd߽eaak=Kljo/ +߃q EwgQ=Ka7pķVU{춺@ 7OEkXP<x&ypYf \{GXmX6H g_w7Ԇt/zB 9BxgX|;P;|̢~Q0>Xqu:Dy{Cn&v2Z_P{A'9O3U8 +1LvfN65^j suw@a{S^=\յ A׀hlpOeU=pr2G>dΛ~L e~U|~C\gKX gubĐXa-H\<g8f5 +=GW#oV#Σs|e*e/~YBW;u/S) d ).mvyrO =ż/^=`G]Z70ΟY[2z^ +:Tk]URJH {isi*@%-5;] /ǿ#\X㧨U)T{zTXmk옱S{+tG75FWzկy~ $S_u˭O_N4[u'^$ExZ* Mؔl?$5HEj;(r/ã$re Fbz1-r\F)K(b?TzkZ_)BaQZ5kRa(E +{kF>GOO5kz˴}sjւΞկﯲcxgv:,oy|vv7>&Lb,6Ӭ_[/5RGQλʆ +R'ezGI?v=UBh 1Wj]#}KQ]O0S^%5T)JPx@(P5$T)zT v$c֭Cv7kQ];E]FF5Yhku>U2CXNzGH*BVT <YgE`#Dj񗢴T%ޔ*:IH$<T1i[ |Hdʊ ySԋI~QOt;9U55Z*J%_~yc`cz4_Qt" \:phH#[[WEuQI$IZQ +u`ІEBI*I>NԫE覴w"=bAܷ㱰z +RP*l,w,RXROۼDZ* "" """""""""""""""""""%^_y:LDDDDDDDDDDDDDDDDDDDDDDDDDDDD"""""""""""""""""""#RE8N&"l)v:O%󘎡 +~i'7<@?˟['-Qo.ob7?П'sxs Ø?Пx?ПØ?Пx?ПØ?Пo.?gտ? b~@q[34#'C}s}? ~@dk.b[}8f? bɿXoGo7 R ~ɿo߲?зH5;?зI3# (<(\BG_ٟL~_ٟL~u1o[/oOG_ٟOI5?ПkGd7I5#~? bɿogg(33~? ~ɿ1#}kM-O-G-? cK87o-? ?-? c?-? ?-GI5)?OoX6Gso ~3oL~&? c|qm kд~ P9o@'7Ϳoo7H77ok)?mc|)?qmg|[Qk7Go@ X7@q-OH5(5)1VJwo(9~K➸\=uԊRIї!(ٚax8zhl RF} 3&PnN1}'֙8֕TQm|2.[@ zU{G |?Ǜ9XmrP}Rߎ9ko !m/Klwo/xh;6ǺRf ]J#+J(۪.;SWNUxԶ5%*,} {NUzH.$4Jn1~ OHba +F#Ϸi;eaH6~L7rc^ώ6P͚>u{Lss;GU0SFaJ=AcMC1FZRA6VpX6IwymWiI IJy>'_Jkڳ /Ҿ/Ư*Mv/R:N]Ķαo?6_`O({yycAFezl675$ > `}|J{_hq~t;nZFt@e $]}_2 C7Hl$);4U6X",@ٗ+NȖ|'WX +m: eVrU^3X ˃OV7Kl^Fi9>ه]uGQm]}գ<3ﹺQl{w%e#`6V OH$*uKnR-c^O-WdQ(EG[.j\2Fī eу3XHUQ LL뱰TCO_PJ _9r5rI8$4|ĺ#R;Oxߘ> =a[Y}Y9SG}u3_ >,1t" )ux{7McI^(Ut#<:f1K1Gs zu5/)/Oѭ[tc[4oMS7-,E +7^-Uݔ0/P=LJ-lkϻ[2/'mlO?)2Z韈=}^}amW)SYUnc:.QAuؽⱸ~3W6V ~{_ r56 +ߧYve=]nP|8SQ_H8\GߍMov ;1/=i_okqiSiV詡a-=P>h q61с/8<6>݌آZXgL?b )ndUxoUMBw,זȫ&,j_U(T$iofF+`3. `osb$k^^Tlm ept{ՆY.v~>f_}k<kyAC"6e,75pua-ȫOl{ iSa^%]ّYHw۶5~ZKzZ`,*_:~#D>s?ۖ|ld4;0 L]lrs)ѧf~]D>H\!~F?EJiېz:;2+=(YN԰A*t~#cy\Ji.RհH#W_)f>r2jOR;'rPb۝[UYJ1I:O/fm4cw㵊N/HwѕMyȪl$_ƴ>R9 @PQYlw<fBt^-7m>%M5X-~1u?L^{LN]rxRXlU|hO%!rctnfp6T ۿ~EXuf+Cܩa98.j;pH'`iS7aeUFH^N <ߡ_%fBhC7}I5v2]pNmTlo%T\eS].AkaTdUjs]Қmimgykj%of#b]WR7t샿1zgbAKg :p#dr7!Ғ:;-a\"Jl}) +Hlr +J(+'gZ;=zjű;iR6|̝kB@ށ: Ϳ%]OM%}Zw|vX}2q +Mi[UFxܾnF*z`z}Gng<^!JnCu·m|LNIskļ)l6;vR6{2yj־utF>&;x\fZGWNޗ61,><2K^6|ws.rd.6bXmB:;:ȯ8?,ǵH tw񖣞͜uȮwa8{r|$'A#cgFGBo*N@ ˊ9g:WaVAA#fY9sddzk]lZ{JP{j{e{E_б K^^RU)X݆g'erzC+4$rEVu~!FWtu]x\#ǟKNX{s=g'n3GKtcZ7,ohi͔k7[yq u5_]°?#1O:XzS;{okŗ"X}:_|{sY&UOk%ڨU7GkK'+;?wPRĚR,dߺͳrf~ӲN% >;L+w+Mx+7 .I 4we[ 6vml.#|jrGEy';qcImeЅ`;ggzJ+ZYT:/*MYYT*&l;L-ݓ;K ns+Χu~9Iz@`HoG=5^Pe=m[g{8*{If¶l 'c݇]WUtdgde>q|&5X]]XU+[#>I.A1{)#S"Z.[k [Xk0op.Wy.=-Wb;znP -}gl4oL3%˄_r]llҝA_pgTlJKij J?B񼅹eYZLG$;e{/9MܥUR2_NXu$c_(IJ3?R{i➙^q*+Ԥh'OI!y|')ӋHǭV"R@^lji{)pYUeᩳJvCV{2܅܅yY5rK=*x|,ܜAB:Q.v۾~ٛf;v5J{oQ3Y&S֨)w6A1o#CQmH#3$K [3fp&WmT+d}D;&r%,7wO5k!?&/ ο"`=P +]~)r}j5 @ ]Tղ:{~9[z-_}H:|~fCa zf0eVkUOH ͭ~~!R'YU kZ~1Q.Y޲m9C؅Z]#@e1Ύ9G _^Ů9loZlb(#][=޻myP>!5>7\E=c!^!HS}k޵{cf99貺H}{ƿ\~}u+n uOqʫvWR){؟#e\W_D3 ;<~_ EX*}'L4~?)E qcR%Y7u۴0y TPC~7yagdQZucK *@=?.65LFfUܖ6BR-nCU_ 2@ޓ.Xj{ޏ[a@5jH؇C@'ny x):з_`7Z֥rr6?me=JUʹn:_'SjRa>dwԬiVF:@%Bb`}Q~[ mK9 /iFW}l+ 30q2zd^wSa\w1JEOIg-Y~~:#0ٜ3cbӣ;2~ʪ4z1\~&fVmZ>r̤«u-}L tb$hv }Qk(#;eᯫ5'pY@ZtfGR:R';[Qq(+[?.yll*LbY+VfrGv:]8{3Wj-DuUT{$+Cj+J/7܏f8;/.ܔMdj劐Oo64|_eэqlPv$;k]̦qXazm.]lh ?o-J8ܖDzn7@ ^?#j5tRA^W@*Thu'#̮g,b,.x[MoujGH̓5xC*Z@b We#p98%2;en'2p_716 +]+W1~x' +jxdٷurV+=>WGgcq9rz"ذmg^#3xO+6HOŗGcʍl:'`| 'We7QѾ=X<c:=LbldzJ\pڭca{!xڜu6dd-cϧM{;Cخq6l?&|E^cڞS4mXfا_K(v;IQoiȮ=_:>Ox㭷4ge% m7 oOJOWu߿}[;2r.(,rzz@y>&3_;ј |4ów4KҮ/骫k%tv~ ЫOMUA'@ O{m5 4S*cB\;-FޑE7֦;hoNgfC]vT8 w0ߗXd?M6^BgӑFUy8%*>'M%,7oMk`K<hiȣԫ egaiebsޱ4ESt +ߙ*:`ߚ.ͣBQ:S7+--иÿWJ`m7nUkn}UI+ ]TfX)gG* K)a`X|yX-J#Ĥgc7W}kcys#a[ZjL>{&T(ʫʩzԨ+i SkV'NPם}ҵ;&y_N1QmGC6e~}0 =,2FrK}6 x}FhuH$]5r@lo85djX|~lUP]Cv=ٵKdWWu]Ϗ2 o.wUz-Y%{z;33̱rEl Ԫc1Ύe dH!>M姺ތzUzԉV!H{I Id´ID|d4 $7 &$*I:$ujH;y$"I Ir $ꑳ*e2BFr#Rum_=#3͞"UĞ +{d^*lU[@:en[u-H4Tw<]S]Z{GqzW|js>fo6׽b7n?ģt]f@w +wz^s3|SgIt/-u%|LW=u8z9J@ c*ʬ~:\nvZ;b>'ygZ}>bپ7 -]kPlũ:*@vDG\)2:Eeн9G)ܞ^JT{z55axlKr+-zv+kD6;˪V)R X/<}~`\|rʶ.Fc'ҽodFnC SMHXu7L s1NR@ņ ds][抳SC]6Pc{n9&#f=,0~տˍs3_SL~]D;r9cr8S,_`|bp/ų-Cic܍h.N~= SG$#[)FS]nuwԻj#@MX0;Mx\:>oUw=J;Ͷk +Q/OGt-MCp-;RXNZ=_b}9_i@d>̀v ?8*1u +jD okz-9_ֶih,@{kj x\UXJr!(lG5۾Kwf{Cq`$dV0z+`X8mkek>&7bnljv\(>JL}C~i}-x].6nC 3׻Omϓh)?.QRۆ]z/RvHGyX}P/V3hkgzÆnE@=x ^G7DZ4pUU=!:Z\{a^*q>eRwe{C^9l ]Hďy|;|%gVn_3!P> {%csvSbOK S'֦Bjr WK~ePi:G}x1\oWV5o]Oj1ֈ}39u镉S^Jմ.nYQsJ} P46{=rl88]nQp#g+ˬ8V=-t3t> @>w.N7E\,Uby8UZrqGEgVW܃f5Udٖ| +ҫ%IuteFox[¯smƪj_N +Q>>mzOVƵ +kZZֱK9*7tx;v55k8M :oK_[331kFin>缬l "l<ʘJOi2$KvZbA# $2ԍ<R7TL ܙI;AR%Dȓ d'QDkq(;r$ͦ",r8< 6[KZ⠮TU +* rj& A##~))\Z+Ҡ'Կ@u=h\}]!OHF9Nlc嚤f?Ŝ> A!G;z(+ vzSgUVblSer11bpqRw#zeFlj]e>;ַ[7)_SPlj=^42S]AE xޥoV 0MLԿ@u=jCz`р(+RvB(Qب`Ac*cja1`}5O̅䡮WSXS[8ZQ-H>9 Ʃ2)o˭8+Գ cZ$x;#r҅ŅGP#~u-pfgƥkBIGytP@jcϳinѾK{߉{mY2|#پ1N8??I%-9_֗~ߚk\@5x?6^,+K/GH9*-j*c_|)Of'a{}mt;WM(ZIr*֪T*(y}o~Uk*{=nw;ey(fB3Lu ou}^m0 #~v.OW2x$MIe;;m{YlqdаִzH7u{ww~g?ꄔ$[ot1 Jks +ĖFīyEB u2b7=.qr1%k NSOAfYJwwmbHO4sT*Bzk{p";x\kߥ?m{HSbR_i"U;)%U*I%=sf2Zv!@D#TBJGOmLqmOnǯ񔣭 2o-Ӿ_.H2`ɈFJO1=LFLn%2cj5#Qb 0  FԝFqtDD'rdA<~]E]^f!oL"ג*5cε^K_irr Ϋm/^|ҩz/p}D<{rS䲋K"ZK祔odslOgTYL \򉝎rB`2v!OsIZ=Ae(-4%/8YۍEY/m[RzGG}rU-]Zf`[w]:#`XXg62oR#Rʲޙj:$,.0q/-RBYu),n1L\U{7z3'|3bQ]H)b#h2stGKuR~ +Hw4{Mn]XN}+J6OPڑ-\; \'a-܍n=-k[k(tR#BQ{a |B%uJokKōүuLkz-o,Wkڵm|^}JdPeA''eeY]Muco_(KjqL[QE`gM%y֙E/V_H)TIfeZTln/쾪zPX +BF%-k|P5]NLP$LoPr)'RF#{ny$j7 Ub7$#rdoRw&"" |čFkR7$Q;$֠FFJ N w'cQID%ZdA<~_#?.?m3w2+k({1y+ ,oMs +ll˻*:Oغ\] ʳ+()*s=ofcv#c6/O~woiMI] pn"MH3gRGM fLG[>c(^7oSbj򹸜?UT0wRk[c}Cg)o~S{*6A??>\Vm5jw;i~Z ב9`";~W{wMi>`smzֽ V|xW1g1 3=B k@~˰1n>U;go{bvVߺC|ijΰo'~itvD%=RdnJ=!r7OTcBN);D";un"QnF 2 UA#r#R@nDĤʀuIPLv|oQNpQ:1 ȓ 2 _3W&TD)r@=#gGCzV7]z5m"O 4o)UZ֠*!g^f23]zR8 {(s"ccT g0Y/;ϴ~6tU}/qU +.]A Ώ3p-{]}Iޒ5C=c_.:{Q w3ʅ?H!ճO~Oߔ31NJՏETve_pUr8Ng[Y7؋nXώe NnW%Ҷ +CԈ]Ȗ\;s3\;cUQ^$n#̝ARDS"F :NB51N%$@@$jLGLHi5ԝIy'Ru:Ju*H@j2V$I>&A$5 $ܙ&P%R#qdL"7H-65&"$FDDH"LD;9Gka.@;u#}QGQ& cf"Učn7)sC- II=uAړ s>'R JLů3*ۭO^_gV&KѰN <myչWWiO_V|H܆'r|GW}J *ܤu$yL"$jFɐ#rdY;d'Ĥd~w\DÝc?50/y$A grY&T$%?&DNLcNʇh2$*2UEZn>'RV?d 0'GkO|J~ -"tl^uv URWFH2ůDu ]/ٹmY7WC6H_{|2{*ZҌĆIHȧ'WPn:L.F)lȍLw $L@DDIHd|!d܍ʁ['&2\dڢ Ýc?5+-{a*-W"K3)ciT|O{35X#\XJƶlΩ==@2cqL7 IԤdĈ$Ie:2Uf\pxt.equf{fn;%اO}?NOinVܫ/\t 1VcYE^>'~{K Ǯk5 % ] RbI'y3Gvfַҕkqբ{wpeTۻ0s7Cas97OOKW;W Ǐ9pF ?q2Ҟ"V)B{;o!T/vIԍIDDā*jN- &LHLqIA# J28D+{.kwhÝ^[UE\ 8 }h%2k'wjRd;;}tᰇrmZ:٬v?~c־̞̟1 ;A&GWzd5)+* +nF&HAU)&Q&Gq ;(Fĝ0x2SXLizG˿Vܒ@),|@b;'uc=^bF~Md7aK=ւmL|=ߙ$[􄬒 ;T&\qUJZ"+?n@㩔ּ)tR#`lyl('ğ˟l)av8!F-D'/&W؏1DAGTw ;J2$I'Ry&SU'IF4I[^lÞ:^{OKplR[7|SLfʆ WoF'R#Ă7'ZhO wVԝnHY@Y=15'Ru)Ԑ2zDG/hs3M`HZak}E|O2n;ƮmSSnj= ]oU[j +4Gf+~p(n zﯖSάj5Q?zzI^!TI)#ēP%F_f'Qd@|2[*ȉ2$Ox[D&F 5 I2 j7#q#VכbH)=r7*$DLdD'4M"ÝcwGbSKvdN$ԁL2Q"L#z#N$&܃NF'jOܝIԝGrmʋn|e.'|ԑ$A5'RI!GD1eQ  ;b"DINe$nG2 &5'4M"ÝcwG_JsOrcq +w$$Fl& cH1'[ƤR7RK@2w US>Ld nH;e Vp{#Pir7#I&%&U#Q&D D[ԉ`Hq$N&F" 8#J6ÜwGķ:sOrF* OdH>dȉ;`ɔR $Ԑ7'dU IkrADIGx:( 2@{B:{HnFĐcPFIdLjIHcQ#Rw2GiI2~ $F:0Ԁ$H25$H2$ IGֿiӖMJ{eDr4Ӝ]BbeIY9VF۴]Z=IKxqY-ʪ?Fv#]]7(@:=ן +H3o-)UmLzz5(]7'Զ[uekȺ=H֛_l9,kr鳤{Rulo6Rֻ7FF ;R}F㊝Xs^]ؼƶδ|couF4f:k+;kxU"P: keh͋}igI^SݘloGNf";Nɭ̾)s1"+PK]MՠwOUƊUZ*1,}.{/7>r1 ꀫtGA'-з* =øm%\7⺙KFV?v_uv]mf1Ո +%lt2f?rޯl/OB؁[a{Cg/}2i{Wg ^kͪ731Kgôqt_2K*L+<^{܊xߧ[6~Yijiϣ!:`’ $ߟ?U)v']P nF?7v'o꥚ +@bu,8h)'fKItY$xD2Lr5}}{։=ʽ˭1NkJ g'+ֺ#CdW)/@%=vXZN<)Qr2.XY.LjUU`[-rNW:_ o;~Ѭ[,aݐWc̯7+WE3.w^sm.8G$rٜuut#T0$ >f'\|y2955;˴=vEYw[TUWUezA.XImx/á-fMOΈ>[|gB܁x9^9˫!5"r@r䝍6u /kֳZ(u#dyK㿦檟A +3\{šKU}=܅;#]KyeC#+e eI(WֻW^o) ٖ+@ +\Xޗ~zŗvmTuFU~^N'EMf,#}j7O]ĵ9|;܎̕ѠMuݴw/&j eخZQA@vu>Nܵq:}1eG%jF##oj_-m3Aկ}FUff=azzIR:{ ~GķZk%gdᅬa3xImtg;f^`$HNJ݌nLI=>d0`&@Ah$n DI2fĎgWy@ӖgMbSk[y*rB'HQv;J׿RI|r32C~uçJǾ?-n\k-BjS*E d+::Jf> 'g^O[m6X۷QgdPw*5lxQ,NÑȣ&.{\  jZ>N]xj'Uyhv;;񙏜}ut}"mf;iMVO[X>MnekFJzϓ]n}H5CAWZO(Ͽ( +bf* 'ް?[%+wRv }!lsc\,;`? V>u?'nmA@Wc۹ZP@`K?|ۄf,Ρ +$ѓq4\k5zZfbOmyg׋Zd,K8~3=_Z[COCi睋_!Chں?0?Eڞ;0[*FǎS{5U2 +y (}9ܢna>\xuro#/}:Cx'9صS֎p 5rxWM"R:]?-)I_`nJ::$9t\vJ JV B<28LyDV +*t;=^{c9iʾYPƏWü{5}Y&U]tXvˋ8Գ%KgW`;hLe;$bX|a(8~N>]dz6Nqh|[NE֞o +7ܒX*oVݚ6k[g,V>&*&Kr] +XR^n{58 ֑v 4NS?+QXHp}Va5 lM!thy=:R}k4[Yއ5| \]YX.: }%] .`w#{#C`)ּ'+z:z l;d7J򜯨‚:ū.mddYc+{kwmK:qzH0l=ϏbCMOI]<21m%6=;Hh+̠FGs5h:ބD;ɑ"$p{22 D? 6ӕiMԔ44w 7 A00S٩"~1*:Ԥ2|Frnؽ-Je-@ _g!P<22/䍙.B*G_~7<{lơߨjƏQQ1HL)_2X=ZH"Rd: ]2:e@H271*뼪NHID~? "5R)2D!lђ}'^5ϗiSP_Gv$f򫇓cuXO2-oL[5#`42nEcyX-4W,׉1'*㿆ccYTRŇȤvew ^K,nK(<˚8_BοdKofOGW%sW!e~㙕3 uSY]c]-~hw9\љ'[Y؝tI ;{8Jvv>@ Eb $h%X|2DЖ<"8V/SmUz۹ +-2sX*owNGGw&d%vϳJ[٘.IuF7Ͽ2]]>|̡%ejE,a%'=%,Q%^vW==t26 AX +<䒣S&EN=[Vɽ*.;S:V`bV1h +i8nE&Wj><6Mj|fnS[cyeYuۢno]]ekD:WKevgTjThj`>} .9$;?|ŸD䜧x@Aclz<@{ұ}ިJ}ݿAqg \Foz9mկn~4r7Z>waa5!͝c#iOl_%a`bW`>ye` oѽIYXHlUGvmZw| e~UYy +mcK9HGə7GRw#}⓰; +` F`1!mB쁁`+@b}L?;!2 HVBd, t%>%DĈeR p}+͢"ϘeiXU~O[qVOI8ļy=$v'*ZgFlQ%\NJu2߲bIcɗ`vI鈔<@P{O+ͩz> GVn*N=bu]+Kߙ` k@С{J(IÚn2 gƔGsm~nGM,%juo`T&UkN#TTAgy=h3}w.f@i:?=f]f%-iKI.c +)JװEU x>Qzp4{}K~I*4>m[rYt6*kv.iη~]GVM:mבOJ(Z~rON逺'Z5 K` <0#"[I~]AzSkܠvox[ZK$Ҡ51m\^鐈 +}^U^ +zsƮ"{ $;b]@$yc&]-Mʬ4Aq4?MJE}N@#_'_PbU@v*?O\53‹ ~"X0>zyӉY X|kbHSʎǶu7z_6ׁ̕5=xs-ηld$nYfԇ gWONkwOcCc[yZm2womvՏ$O9Zz +ϾwkǺ_«46@ᅫՅMwYz`P!|J213r57<&sisuX˥] /}y%[y\5 +$tɉH2H#P'I *$Gۓ$͢"ϙei?eH:#ϙ7uJD6Dn;;25)Q+dnUg2OLB^VUy6=]ο ᏅSWw%qT]v9v'߿쳛ȻDWf]P#[C;34<~9i}k ý]ʟtŽgTw)&q(޻ 4Wx7VL;H= $ʥ #n:R2{ ;H"LHw)0$=5 =lޥBRDDjH27,u#qJ#r I$ĤIޣ[q\'iɈ˙ei𿬩^ȃdRe0dtL#z;^N:U 噅G#Q[S%7ogF"+Thle[AWs1ހn:"@&72N;t=O;3uosO: bӊ{oX5U{ˮ;Ϳ(RUZBK :d u$|JuJh꓿nD1u{JzN䃸nIP0 doRAAnzD&CvbF)x2OH2ԣY~vDD˙ei𿬩̿'G܆O@A$F AU 7RiPybA2#&uVISؑt\R=nL)"HH H!k^d*$1܉2" w{HnL@$® =2uPVU"7NR $jAR r~⟝Ϙei߬̽HF +H;D$D5GxnULI @D'z$:VFcDjLHԐw@j5 I܎$Hd5WҙU #r5&F~u t <)g)m1;?L8";̿ތD ?=Gp~"F[>2҂DhnЧ~eRA{0{0|h*F"x#`}uޤw2bF D $H7;1Ԥv2$Hc $R;JyQ:&@0cq2:#Zԁ IȍvA?RD@?߹?LԸCOO2Үk7#6E@ҕccUn;ޥ>vWҾ}H]X)S]̀?2un@=1#rk]TX lhFw'nV-] +}]D2Ios& 2KjSwJ%Y> }q=` G%m?9LD;߹?LԸ0>Vbf@sѱ֥~/#+Gb]]%.ǩ~kd|v/g`{;_<>NG!c.] +;x(kZ/JO~,{%mHe3|$ݯ&͜cCWs .̮ kaWómGaYW˽׽sx6Xm =Dbzr,z~f{5)Z̹ ppch m}ô̿+#E"Ƚ I3|eىKdMX_|f$goq5䥹VezP4[7f}Z[`%3}g=mp*Ǡkd'G;~sŹ;3f%Q]F6x=V:h @};O./+"`(B} +w~|qFCY]Ucu{L6%Z4)#cUhyqVNO,qS"ĭRPVeªb,@@k!f%K.uJRԢJOO =NebƨAwlGZ>dA2,벧 +\Y@d Lqm96 @^E$uٜWBlu}*m}? Vr5}%qE (Ϯȥ_)^nZ 7[uSz޻IN9ⰯU5 }ϜEƱ2:kͅJyYf[[bŭQ*bF1|MUY+iKZVm؉kp,Dxu'ch|>K񙙔X)F en؉mm٘eֳڶ=5ץHl9uyu)Uc֎vI$v+e{9|M=|}~MmȜZ|tf+{vxA1ӨֹgeFjJHK/8<λ%7MQ:;~ #*V#+鬰tG~`S}݂SϤ_[=r9gXP[lX iƾɜF  klu%zGIː/qG3t4CS}|3۱cYKEؕ.S22>+ +Y]|qbVmޱ61RG_W~NfX0Ȥu2G:}đf7e 4~`h[8-`Zuokfv]lvOOc=sWHtv}\q3=x:NC)[?eL_xC*YZ}ljy]suXf+ owu-ӘNeKISQaKmֲVwؒ>Z6;fsxL/'N|#%9JѵR݉n+˳l&%|ajBGșpZ@?߹?L=}zx[jͳ5r kQܽx)5++/fV^x7fM[b/H/usxjͿ/߬ +|U<|Wc].4}~Rս C>gjC?wߘ47_0L=tzT.2ǦjPdoֵ.Ӈmorx`||,Y5'G)ƞ@QoZu㥁2ב;1QVa%u++'(ߣGVAo+_ +_kd+,c[VjP-f37tm[2OpfUjcG1K=8];pvP>މ|5vSUM4tgzgz2jeRz-gnXok5t$^d]ߑ_NAZ{zvr>[_<==sFFj -2f1x{Uo2=^!1_S_];]zn-lJEPc%P,}K3tH!@ހ' +̼[({VR{oec7AР0c]K%XV tnIT"ƥ~Uaǹvw^]oUԮX|e/v5iCd3ֿW`=&+l5ޚźzfyrfSMƤ=]n~CK}oW!v=̭K7)V3rRģR> K[}Vu۫@ʺ +t:q֭ I:zK="{E\!*ލU-=k{Ul8M[[V aĮ%?]l:zJg'i̗`X +0SdzB[!#[}NIԵnUwjy>UiFEʑn +;;6tXH\殧}6M#=QQtu0xڵ6?I[tqu +ڛC=#"3][I_NHPY'Cd߁|4 +:tǏ~&37leP+>{o~߃oR< 'g㭝v08kpW''fE=/ kl̸O׫{u-'|/Kmw)M!L{k bN_J?2b4N`?9R^1Cc5vDv&̦='^7|F=G +WMV]*}P2L=s Sxkz!{P:@ٸ?Zkk*P'Zїؘ4[dIN̶8̱\^VVU|ٻv=q8ҚE}HkUq0=*+Ok܏KGOkwb9%܂Z /p;#}ҪF.{U~HAԓO;q}>c]irT>Ob(xYmh֯IeNG}9;Pֶ-$| [?5 o@umAp~B7YX1,wBR)rF if)qQ6z:ܟ +>eλɔyo2ʙz^u`~G^) dD}I`wJte]_do ub=~ĚjJ6:{E>{Kg'նy`U=ZpTZ՟]W֮%uy%G8FGVv5yw̥NJ\F}']yHG''Fϙ5#t+O?~foLz{;O[Lc65`7.[ֻ=%~}>?sv]9tr_aG!:>cS8S.Lb*Me·c*X7z=_ݎ`f +[]̾ YY [aҨMvOIjж}'l\`rh4^c3Վ°ތj u6N]d=ʓ'i>|@و<@0e&;Ę"HL1#R`Ԃ"LH#Ę'QcRbLT$Dd HDjA?+vS#nzFϦ6OrC<}yms`E@QTK,l̳*5 z:|HDOFg%zbv> cbJ,}|;L" j7$AI܍2@$  ʤD I$A0 ȍ{Jȑ'R7'qr5Dj7HX@{Fj%'=›\DߐmwVS!dvcğ2Bk<QR[3,6V,KhE^|jl}runLxM6]f5WL!^Xux'2pzr'H,.pvw +ON W>rq)l +Gok{8o\贠FnC;_Q#CP:lb;f_LȠ3 wb'Иw)̧NS8ؑGe, za:3vq=c]HRtƌ M޹ֶ]{hszˍ5IHC˟w,/nb%F̝IޣnD:JLDoQYV$1ԙO=Dd@2HJe`nh&FQH5&DܘP{@"%'ſ5›\DߐmwVK`pin$&G; `lzȲr:(]3:`R䆐A*Sz$m ;ԧz* =#R@.b!L7#FT )$GA:񎯶7* |$TI)==#V5RV5hu|`NARy>]JO)e@F FDH&'FA=>d+2u(*2#ĉ߃<~ܽ'4ڢ #!AcS^ԧA3rUA';ܫ"OņgU"?3:rGC9?19fLO=OgW}_c?=w?^gR?AxWP?AxݿUfT7JOUvp- 4w_ο-x=ӳ/Fuc[9G>g'#_/j|ЍۼgW8}Вn '+wl~jeO?'#W+{Е۬*Y_AFj֎FOmWY?Ӛn7>VF9?B+?[c̟k N?B{RxΒm#Y9IRp>d)L_B4nru4}Ѝۜ岯Х?ۜH>Q?BTnr~T4~_'%+?ڌ??Bl87#+;?A)?ooS#uT۬꧞ߡ*yc%O3y( S? +?Y QT~9/o_M#TqoUo;WU#^oKF77?A8SUd~?v?9 '-G++G|8 +c7'+mUo,?7~mSw#q^k{4nu2#PLDHFLDFčI25&$Fj51#Rb""""$jLH#Rb""""""""""""""""""0sYNlAeu;vW[B܎i]X+WN1NL}>v?_Úqɦ R:lgV•32ɘJ=e*MgH''\e.n8VXav5oGٛ2z–zJz||% zR ll eʎkP7H$tR6;|%n6'FUXl*6|mQIxk2=+-znCht{ŅgG@~Xp| Y[mm5lUGddn6#q&Fr|׶6&?-J̝aIn Ά+[@ + go<|ߢԠV'ELA?`hDǥ9Ղ],}eM+9 ]_OY2 i2XMimg]C)#`K?u^}^a]&cy\܊$0MN6{crd0=lvlW[m2[S8vэJu_6͢@&O~K]VE> )cS(`UToGc/%w pgoFzv'C*m5H?<3eV?gFzS^en6$&ȭ,JT|H]uű,\ec%W]ƗGq&GP؍n7#s3:G]ֺgbbq ̼VŶ {t?26#qɈ--ƯZ -c6LaIU CpAvJ9k.*PPfP:CWvz¿hrx|~e&ELuZ+tP<z=Υ1r*|{+[WK3(*=Gs>;H<5=,ۯM?;MoGO]qA^Khs5l`Ư(@:Qvw?waهZٓe_J|__OXJ۫ggv7* ǝ-y, +(z#[ݑ:^:oJg]דM[>ZL5FUd ]v ʤx;c.˫(bt^X$8|>k~mǓFUk,T߰'O_eVSm[kG-rQNBҖuyl +Vuy(k''7c.9'ElRHat6 bZ,v>dߍB5KiOT M7h4wkzYًU1suPEO$ml| f(\\]GU[;*Tjd9۳jxڱ k֥UXik/66_dy;xѕgzM2{ǀu.}ϫ*>m#Lʚ O[rvqmS_Wu c<.c2g>C^#dUM$P+Av?aRhU}Q~ٵ{4ɐKܧ`Pg1{c~S?ׂi}YN1T+kt۫{UfQ$AunpC${Y[~5ޕP!XX/I cyko]q?^gQ tp7Es2{:l^nAm՛#t䰴ޏ4uԜ8\Q=\1?OR;#HP;]k>>K'˹j*K)%P +t`x3\E4c"mi@ {@7c[[]hSdv,/8kܒ:ױo1Y\M\qꪗz*)VrOm֧%vg-XK[J)A鰭 C)[!<;2mjjltBؘ7'γ2Lkӊ6]?r|Jd-}qh`IG\;{E"KRR&A!udd`]ǽ70fUMBe`~;DLyC3o=$> +cQ%=|gVWe|$K)rWR:K h孙Yx< n +:meR:uG{ߟb^ϻѡvR;~>̻= kkqQz=o-vI~eA GXbr|WӖzGߕ@J{r}8 ^˨7dWPovpON]ʫkgtwZkSÄ2W|+ek*:OR|NyL9lKk*kjԅzb6޼ _gylebbNk's{ML\W"FھR7*re3C6(=bR/NjNe. +ۭvtGl,9,dFsdع u%+v)[]]~wpy85J2wI'eD&eT(} WG}hR꯼aSxkT5\V7` <d\VI5$zs[8(qT=l*f̮^TdjP^N!}cKzfOPӽlٗ~K[_^@;Ƈ/٫ܼ3NԀu*S{$@K.7[خo?)8^eqT48'Z 'eV~S{3_+^(:Yb6|]xw2}|KI`EUI!Fo,16TbUz{kqYr7?J.CZ!{ ];'r?ejư-YBJv&k aRgY۩$3dkfcLԥe + *!InW =8 q'UO^If*bޮ1qEE1 +_}>{ Ad,n +%*]oCZ2kK9: r,rW>y߳Wk18%IX @gC)TDDDDDDDD@<nE'Tg1ҥԧvP.eވW&""Q])V.ΆJ"""""""""QeIn6:?>jLDDDDDDDDDDDDDDDDDD@ ;w,5d=uP^.3of54 +,K$RF"""""""""""""""""""""""""  5seR٢F÷[+ezl5CTW`b&_WeۅUyuE:'>ueISgb,Y*  2.k&Jj'QKk56@o:39˙lEHn֗C߿Sc=#9" *NR%Ӧc:4O}Թ೯q+P0SI%vNcbGT +0z' /7鏋ʴT YU%@S-L1ve;RcCoOe"d7-)g&[Oc#+̯;K2|sFM'"Nsc\u;lC. yT7{(Գ˺Քƺ{2o,;HordosgܝnУn7.xmw&Vtes>?ԕ}:c} 54#&Yjjzaױ* ?DP{ck`m{MFQ o?-pƶ³KN}s#cX3: dC:vG(G۾lʷ6㺍 *P}:~2kdz: +6N?|1͜& qԓa=y~5w[sװv^vT h7UWzAs@,H@~KLg~bkA3rF6Xa]oGNa@]9\w]T;쬚{*u{9+{ʡG~2$9r=׫b,)3k{|@ qn~-*[݊ǒ~#N=Xy*mz6:}'dz"[U`~a9cvpVCJﲝw]C#dllո:lM{ȕA:Sk ^$)z՗dlo0YRceU*z40#~~:>>S*q&%V´_XGd$7~q1K:ڲv);p&JTGܣBc8J+pTԤ/r Tӂ5x#Οezr.K+OMjU8 Q[)=#H;|?8iDZT>vKG_%a@&%/WPmug$JmeE3ü8q垬_ⵯJ:=^y_V0Sc c1myݏ}5 +utr<|eoe`tMvmf=Dս I;')]ӯw$TR( ,~Wȵ@)= +/,|2j 4|MT + +Pp|}yk..TF}]DDDDDDDDDDDDDDDDDDD@#RbGH2d Oο*1U +P=}Yb~]_?;8?2ooЖ77ˮ媶WX*طIP7m#BLDDDDDDDDDDDDDDDDDDDDDD@)k g[ՑV@&Vmi 7 Ϸ'~EU$ԩ5h<&^N~8 Vd :wI'ّ0>/ ؔt3z5#z6ρo-pj+ZYJb|bOvDPg\fjǡw@Oȳkk_:0Ҁbe +v݆-nlԮ5IREUp#Q152b""""""""""""""""""""""""0>7%WحhfӠk yпFw9NXC`z u[uWzR*LɑܳNM_5Yԕ-H:otyW|}uP}wTVV-#{:y-x)my xZhT?J 3"]7myjzU{Yl.ŶwjBxj[׍UuO7 +ޘ ;-a8̛>Gzj +z}33;̡׏vZVEU#ظo+] ߖ\eطUjOQamMX7VI'~RFOP~u +CGMx%0֦C:̭mGV>A֌-y~+7>Zj鸪hս~-LLlK/7&MY zSGOHWÿ/|!&QQK;Vo~g+e֗5Vݒ{A-ˮC'2z۪ +(l@4v։;9wm0 ;*]+/#iOd7O^ PN-Ѳ 'ۛo-]W̭ZzdhzVfU5Plkcϙee b%%P(]>T~] k*ޓa'nbǽ8K-kj! +"ߕ'1x d纨E`JV'GZ?2&HK}6Փ~ w#,-ֵO] nVΡRpT|%\l{5) C?'MsENGzKz 9pC/pvgsŒ{*ySe<MYGC-GOf+-ɪl==]-Xēe"Ol&,2 \V]#եd) + `4 ;f8륆c>)Qѿw{[^t~ɣQh:''*җ8Q4%~ߓmzoXp@=Ԇ-=ZdYmY:}@~{W=98]/Vg)bkLwӡ;|#:sj*@)1;a#Dg6~RR6>]+;U[QSpTӮyeV g5upU5̯%U R{#`:ؖ37%"ijXNo],z[vT}&Vz EuCZI9[..liݗ唩NZ`ervr56[(dFJY0`AzU5?SUW`ΪvH-;u9gF?e{{J"ruvgߔ/KzR\՚DaU};@=qhVŭMXg}L h15fVnV""QMB +|o8VSK=YŸV+LTo;sn>&6O>S.T̫jV6C [Uu^k0kҎ@}}ғ6Fm[f6kck]El~]czexMy8]-kYtEJ.cD|{YYO~2ګ"*`d,8̒-Fk즲H u.-#771me/ҥ(@|tg/eccq`N*X +m:ߏ*s1h|B5~! >;;3ˌ2mE2bz~t|L i.Nf-L](:YYoc}Jl9 L{o7Sl@l +,KzXvֶ1=9 }zlnzǩOC̽XkWl_KB5uPpI'z#F߉agXdQ27čvLcq)S^ԅU +GoI 1Ek+kʠ +WkIyr0=܏efLPP뼟e\rj~]MvVZկ]^,b@$-8¢YV@ȭź0ֶ>z糏TBH^²4|lyٸcڨ6YSNv'O9+8Ӕƿ©뎦jl(]llٜjSS}e Cz$G?]RmȮ-ݟGJԶɳqM]Uz +8= +"o`e71t^8ћDDD@- 51mnفϋ*܋OVƘ뿝/gS$XpWwWCp=)a9 +ֺIc8K+NYUP dho{{;c}WUw* +;;k=s1rB_b0,`Ta>f9Wc=;1rQ_q,PiO@x̼89\=ykt)Qb0%oxrt׆.CMj-z Jz>ffYel/ZUQ%dss1ԖȲVU7\/>ٓp0lesUJJ +h~ygq9-Wc:3% WoW0bTGq)Ono[yC;? =ixE+eYuVX7P Ʀg_]=nt4U n7bmW2sj]~{{q؃){5۷Ifz0;$׍t"[ȭٖ_UCT)D`=vmA!_k]ٙf3=Na>khՎZf;=9 L+qhu^Υy[%"kct`QpěDv:֏g ~ zz`ҁ[|~3seU-Uue(Z6荎?CkU_"QLjB:#Ϟ{rFW!fձbY8]Ձ{Ctԯ@d*%쓠<Zebf~5C")IbXt^%e1ڧ@[P ocCߺ~z/ s5PlUNk~ +vCGg`s9~#tמ x;OKpċӥB=^Vǝ_l~#%)ZdF4ee;;{Ģ.FF@~$>wlk`UjcWMH~Ygn9NQ$1#=eSV.]eu5,-zk`{)݁'ύ?2V_{*-7\Wd'+g!'K%:Huk{n=QjdZ5lXRG&CA}ePWC`I !('0#|ƹ^,mFtztBl;S]-X$#[9W1zlTogr9YElCGa4n%|3΢-u5-ѿA~}-p}1qhRzzv#]kn:q]H]) ^{G/8*7-vw /W;*V4z0ѳmܶ}'o/AEtyrmy?!\e?1ɬ=Y_H=UnTu=O/#fCh؀3 !$Wi-Am詰(U(RA̶ofmHK2m.;Ǽf_d*W]vaQUX=~GayqV+q +c&FHvYt`:;.ܦԭZYWXbK1w'o+Z5QC{:ߝ Fn~FC]Rf ++bnˣ?=rג|}A[ bKuwmMź.=(Cvû71'-Rb]evj>~D|FĶȢ֬ؒw{e|Nv7#RRL0`O}|DD7&""""FDDDDDDDDDDDDH CQ1k>GIo範vЗ:F?x25&"""""""""""""""[q{7S]{w3T Fv|Q5j) gv"PSow<ɯ{ ++>JB:'~;o~&o1쮶*YYzjʋ;z^]%@fCy>61/]}'`C`mWc,\ ZL +%7]^@69CzF֏s%cd2*gfGD?Uw%i>[aSDësX%1ح lߏQc֔ޮlFt ::#cȞ\UDkm{tvP g';jԅ2N5BǏ{Yš!T`U $h28xEYnՆ^y=3y0\Tn)Z5z!wo.{WyPC,9^k3^KJ{FfW/^bt  +~=ĺl+ 6Ɔ'?'NM$X9FFF']Z`;o5C!p9cᥭUy*ኲ ;s/ VH_MNu{+]|A}is~/.]qPu` ZqkS޽lzT#g Z-ު *]'ˏ`%:Ӵ%;|0 p\xo9-҄1dRi̳|%(A$(!@:ay{+~o*ʚ V xBk2p2԰3 zվ;"{bcS>kc6WCV[OmՃZSԿX5@;Ol XI=CChy$xtmٗXl MP-n}& jO綷/{)4Y^jvoT*-t*GDZ3):wy(j{Rv E77JMZ#_.nzRiCG13y`1&u >LN%'g^x>*u}mJRvǏŦk `3k2ƪԨ€zVF`㽫sTW(ě)^[~B ҄TajR45)85R{]緈SDU^PՌ@NU + Byq؏7S w;>6ٴ{O+ll|QD0p 6O .Za%QO;&;q 0XJY-խmoFDM Ikg#Re&(X\7ңS'.""""""""""""""Z`r5r +6 +XåՇĻ6ku&ʕ>{T֋P!P i58VycT} kf%&77ȟP3+ 3{OWWjņ/t|'':.O@::TwSw7P\//jFLnurͤYn;đaBqwDDDDDKNC<`ąP@ޔ{3,Fů=hs7a!\u@}3܀Osq{AI\kO)IvQ6gyY'ɬ +GJ =񹝉%ʧ^G[BϾwlLc<2© |6I'@;O`>&z A]tuo<1(#e#L÷ȎDb7Z/)mHG@w+ kmw2>^aWG+#j)3D/]ST|bt򅔲e[U=H>ɵQgZI^lx#&1_{5h^.D1&yWM4da84>Cܚko*EG<q)RR ~j[.D}hb"%<G_G}|u<ȪDwUg$($tOHj"3&U-kQ@ IcWS5[[ХMֽ#d0uɮfXã^ײ좥~]c{$uew̍kMGx9M6VGFbɶ:KAj, >F㙨 5~-Z+h`zd{a]yU{As(l@ǽF̔~9i)YU-m8֩PTmuyɔ+X;0E钋elXl2>'`emlĪ}|Ru`sFnlqٍ}Z_-N{;%Q5V8ܒ>k͆b. oJ)k>̬)ʎ:|9qjʬ0KP2-|},gKuUm{6IO T_DV?~m'DkRZjj@렺 :t|VZjӀłt2/8ֻs0 U{ =y0E= egjH [GݹrӶ=;S0 T8 KYKUVmr 0P㨓=K?1s^=h `~'[I-+2)ƵkZF=*[ Mc_Q]g Վ٠X\،t+v [lnw ||{!o9uOzًM^ +u |K̊E<5tF,,}COnO?*zwR*W'Pb@- <\?IҫpW܅ؒOfzrB UgfLŶ$đl}N}RjQԾpem~2D}F6V?&5 +B0{wcYI .ߔ%!'>k>T z6T]"o9ћ_abL9&VȨ9P@=3 r6:Q;fÇO_B]gߵ5'=\*(fQ(~ҏsuJQvvtyq_K&/gk/ksln+ ,n륶grY|wSVU4Yj@G|~Lso|[l +Җ +>(gya,g6,^˿@7]6N>=L{Q-b8p,t[5`91MB]`0g=~ZsdaWpn1NUQū:|kM\ġr'{wmwKS $sT9H ~ꌏ⫰#A=&rsf9aܕSvקk@ll3d{Z +d߰āYF.{3)ʑ0M[fZ~6i\tZiU@`4;|*\zY7:XA٥W/EWa/~;z?yK0J%#@;̟yc+ɶ}@o;|'ɺ;iX25bt[2Ve7KhzN$ 헖WmW +,ʍiKv{bLgz-D!,Bڞ/Q=$e. `~꜏~?agEI#َ<Y>ϕV#߸l; ֆOݹ=ؕPa|'3?ǭImDzi7:j@-vKHUܵjžԹkۖ_w=n֜J+@crv!By8+_OQVVWFUO#6%`Z޻hoۼ-1p=voZ +ٽ? ȈiU,tb.Ǝ|%x85qu$3||q#orfoiiQ+6T\5*{;8}5ًcڥs4&Jkz]·b?E㑓i Z7`Yhy wN:=uu0P h ;s8͐bݒlq<2p5WҰXc@?<%=o%w`|""&h-L\bZwQ$lysr؁-ǻӰ), $LDHRbxMz1kd V!eDq޿Db,@:$eDD豻/Sv>߳rƿi,ȷӧ&ʑ6в ؒ<[bҬtI'fa=뻎Vk*o:ug""""""""""""-rxL}Xh\<qJ?RG%k>cF_DDDMY2~s2{zԡQ;+v}2g]^A"Toeb""""""kܻf5#ve=t"[.] oo5PcX, +zRFm*= M"`v̩xwe#Rl?ii\zִUP|W3)+1@J!Am"$|ϻ#'"t'cvWD!=:0i&C7mM1 !ƊrM'4興Fij㸚xhm6?S%ϓ/b""""""%%Qʽ/q}ic&Du{l/Ԙgnjwnl#G^DDDDDDDDDDDDD@<,1E& +DUBt(yeL" ZQ{a*0<)fcPvTgN$l5)2&Ԥ:lݗX=oσ1(x|+2UC(w?-dlS4WH]ƶeH7"7&DWfebވʂ$[؁eo±-UQb2ECLm Zd&9>VRRFq3-쪗j,վ}-.I| |Pڕʃ67(ņzʁ:|inoRUu. + + 22Ws=Zlz[2"A3-(+Z#їe')UnWew&DL:å6do#A#cz?lU:";re\ *zO+`*kDDDD'!B+oP!Խ>FrFĈ~/wu}FF$7YDLg|Ft*9 b@ y Uj\u|f56}Zg?=(޿'#ǩma֫(W`bz@/"UIQg%|ʽJ0~I%V Q\xe~1\DHܘ5i一~h7C| %h3.l1Fj%z,Vm''~OŲiJ:R KsY(޼xsO ɗ_=YA_YCO=̅_\K/\" t~Cf[Gf#rŞ!~b8ebӕv]ߖ3Y޵V: C.r&{*u*A+X4v{3w.աWwhcXܵ=aN]_Se+2W +$ ory>O'WmrUQ&C =PRFd>S#Nn7#Aǹ1ʺ]ܮ4~`͈Ms|cuUWʬUQyTF;>7/oXY}G먫t2zh>Wcz]U`G}k{󿌯 ~-9r-ڬ:{V!F;2Ҟ~hfUeږ/t ;].9S2-&%蹭ݺ];=J1&׬}bWGhgKVKdX=6Y!AӦڝl[9Bl5-8ҷ*^WaҾf\7u͎&M=Ⱦ?kqfj&Au!6zOto]dq/-Oޝ"k`Ul A#wh[.=QU,#r7cqLEgMK)jژBactH+Dk(oh9x=MB$3+|r:SԦڻ?WdLe9 +(f?I[R= +|N9>nj|meR;bD9J=Cjc&E]dnHڂ7F{UFjQ~2\Tֵ]v@t;huv{I܋.u)u4*ʕ^rGSCoiL!-,%vaZK7->em v.t̰kx㚿9{}G󬪣kحSd oYf=dl =vvk=U;^zS kZDV5hzNP6$xie}Ǒ5Z^;ֶ΅u/Pf::#ʷ{;@鱓_w,+'9KpAJ:3(c&W>OFNQfg-[2ٶ$^xປ?r* Y:׉ vA4\d2{=n§{W:^z@PFYNE5IOU,Xukבd&3ڻ*Ԅ_ %"[tݘYb@#^ڷ]tNQۄr'yqy'3]VS[d <xT;|l& /uyH%:6WξGc Q,T2{Υ57(/K+jVv!V(k{y +[E|Dmk)V`1:KFƨ]bv[+t2}w+g +y\c5U=,[t :}7MW 흋;;ևb +Q[g@:v8ۈqR(ȮŲY*,ct;xmSܵq%j` U{>[?Z73_=AX}J=ų:ɷ&5e"UK,D f$Bm0rYT䌻*45LJГ~&E͌׬dْXkaZW<3-jZo᷒s14ՄsA)#<g? c fʵAp+,0'N@{dUE(ʷivC}`Rn5';}؁MBJw>w)!Ti[ 3gFf.j{5{;@=t;PU:;`{'gCjfB(hf'00BfNh(1=GYHTA8|e,) eDcD:wfFj|52bVX(e3V[4K.ζmrn + UPIp\!0GP$U?n=jѱizUJ"X{%gE_1PFZ=؏ m6 P }{q!Amh+}|l^jv" {'ǹ=oG8֚l +؅WW@vy+;8 n^FRr: uԣJ@5'{qla$k$k{}S1X6ֽݭ@P'BQ@~QM>ΌJEWO{I(ROc"zfIzWcT↥=U0: ̅5iUcQUT|Hʡ2WFVc=0mݏF5ok)jQQ4[u۸ܺ~mlְ=[F6OeF!^P"QOWPT 0iǣ0% /Ӯߐ^fdl6:j@%WZ(AP'ykmklmu1Go(s Wsrlz ;FU'e:?fsՕϠǼF]T:)=@f18*(CXMϐx +O^)9VGMd(=#ꡰܭx?_}5"bV^= w|uNGu-'щ5 +FOP:]|'޿L4{RI<=Lfl 4:Tk` lJ8k)nK]l ++?n "lJَQ:|?z=Z1~B9Yֶ:w=;{!{-U۩II}"ZlFS[z_'{'deoOh[`l5ÚmǸnPX1@T0߃i>.iw+ԡf.,eu(=)Ҁ>$&d&/#2\)[7ѽW[>5]:ٞZa}ގC0ַ@;q(|e(-:[K;*Om~?34-u6EU^Qw]!]㹓s6!ʅvCCZ`~g5uԥQ}L_n||"22/?MFQ:WNƗ<Ro&IU=N=#]!}Z,4\ג@bWg+u[!RJ;xLq3 ȴGL~ݻj\~O'_*}>zc!6K&E,.źAzH5ç\([j3hu${8muϳ1Z\k*O_Z"@c˵2+:I({`]qF/ +1Mzܪ U :דAWWuP?A,}ࠝ9_f*nc\ֳT4v1g!I'd818(׼:P; s}VZԫ) q_8QPhl}<0RҤ%RX0+yŻ BҤ >ῶ3=R7~,VbI5-ϯ=dT:[]@)z?#/&/TF'ln9e,)#NIa &1Zn*[kZ +B$܌~ 5rʔ T3k>{G>ʯWjP 4C +F8*⽷^̋)uUB +=p"pu4cT6UtbA +r|o_)6$<ɫ'~'DDDG1#Rd &""$uHq&""""$1&""%,<>ҨfXyU){`Hq&"DX,="RH OX'[o"""R-cl@iԪPP xDDD1o +aC pKk0㜋k.ҳLBij ާM:;fCt+}srdeqa%WC:kz[Df&s/ӏ]o}* +YTzGa=#jW~N0bH(mnDR]qMt]qpU2+.HH$k w_]v"Ws[K`Fl:O~Ǚsx{r,{N;/-hsæ]M{U w# v8X&ՂBe0* \y69GЁ;+']CD7>e5d}PX*X?|gj˩` C{']~Ӟ(?ÎdBJna;Tjϓ`zk1cj5d'GS"ե벖pM~Ӧ=GG_ oWuzuznNW"-]cVU7׻JDX.TU~{arj@p|0 =L_%"Qw a3}rSZn+G-Rm)[Z\ahZ[utnּlKhq1ر\EֶubTmAuՕ^!ltgF*N,;9g'#\i:{WNz6;<7+YtHu|epRʎ6`v<4|qcJ]A$u<=S^E]4 { 2rې))km(6ēPrI؜YV.MSq#@UMaVjvod{{@OLh1gbVn* 7Q_t֋UV?J GWOI}{OCbfUF,$H;=ıjժҡnj*v]o}?9iTAXL } Z)LRuգd + 6GMVſO5\!5\l{Փf5aɯC +zzbtw.nQ[9:Q:,j +h[JmBeV" C >1YG!UV8hD|4ZN%{i$#`; |ʏ)HDiIPI v$v{KU,W d'37ҥWB]@;]I.տ'˵u)C}폞?;3g=_Uq2k6ő:Fύ̷KK+}BB='Q6N-ujoP2}a紡=u,ndT}t}ܺñi +XWXtʼn$7dO~*ܼUb`+߬+#|%NWed%} )pP;ab*ZXJ:@KG&Zhejz$|~RƟj ]7-AV47qy̫> (ea&?eʶ55 rtw`cR8vKs(utzqq՚;9YS3'ϧ*6~lB@\y6;We6P +{|fFc.o!YKaI |`kait*yb~ާ/7Mev+Qeu-!*Gc*=ŽǾuMu`N:ܳͭW,Y`ULn9OuTږnU%ޯoY|6UJ 'Poo&ktzZXUOcIþ #UIψǯܰ;է S0x܇ 9VzڿSOP̿|&Sލ^Fr@x=>|ɰ׏3.t4U`X/|iG6108fhڹY @߁w D8dA½wmFH[/.y\*?S6ʰ]%Zr=nSzi=Q{Y#g`{E`5՛cX Fv񳗯4+z8ܒf`[~;2j +.܍:^ScEݠ~yuз;Iֶ{v>O&_q@}Ǭmo +w/1e%SgZDgeэw)r_B]C֡=`Onmdc!{y<ȵ)72RV?ҟwB۪5y$)ˡ +Bnt( ߿o\2+[ 2Xo0^[-C5xmʣg^=Cg3m>a2YsXkB|kr#`fEPDZ,*LzOrOa{CRIC:ֶ֫lnk81Wp,ӱxܰ½o๮}TfFz?).?ߋUkH$XU}T'Ong^UxCcގt~" uYqx/;:_W8԰+(ebNƦG(a6? R:5=0E w.~{|\kYU]5yT3'N^ ; 2챯{UjN4/Z֔+?WnZeMEtJұ}PCl +Ehe͕7,Zq8s- }oPvݾA7m|w/?rYpd{߽6eV`na v!pFeswfd6ĤUkhVP@ Iџ: {lFwñԸEY +#][5mԣ^tt;|~`Q 8jսӮdؑʹy[⌇^u|I=TL-[Lv^ੰ2UA3;r+uDj?%Wæ@+M3h{;|ϙaY8 &ѕet"u1#zTNiUjܡЂx bȳ iZkkWg_Q+R4z<<JYfR}&rC_BUC웜=ɢ${&w݋iVctڼSxk=o,Q!,v=c}(5m~^]^m_YiFb(z H(]@#īJֺI$s]@Pi!u&S$ƢG@2Hj:cPDJ8STmǪzܹSheƎ.N{l Si~~ɓ#5}˙~Gd`ڞ 4NqoUvgJ *(Iw Zou#R:AѓGLj5n5&@cz;jAPGj@P ~MS¤V^MƢňu`q1"$ʯӤE,΀{ >&-֡+g +Tldqyq(iΝ]J[7.wXIRY=,66 +:gHɑdn$<5}K@7m>2`ծ@6KڠhiG=UY:nO'n#))XuS_:R@ \̲'{汯49)̲Yh[ct;/3ʚ84]O]c`ң/lvLގ3^oYPPa1^t;KO4-`-q]`;;:(Nn}|V3dv>߀se +T!:|"dAykfFԢˏR/z$vLLHębr~l_Y\1$ knLD7~o#QD[ [ѐ6X8o#6#pNAKcgK,wTܷاj^ęVM +YeaZZ$kGL0Q| ef#Q +;h1켁RsFBc٦ƩP~>u^yϭ[+Au>/b""" 5^o.ᖙbڛq2 +zÄv{5VFe#ה]n„pc{ڃˏ[Yڣzޙ c|OG%VCWqfeYt݇r{>O Y=:o l^{3vBeWk3YU]̇(WsUbV*#R7>3Yl+޼5]eй׶ONG&$z+YSA(`-Sgn=az~f6OAr.+2t~+7t~#ҳLy*>ԎތǶ;lOZ*l`{A婃s9g\R(bn'DjoR5z$w#0c$^ZAR,4@P=3ܫ{>-keW'JP{kjT۸eq9gÂXzemdB:6}ve2 8cf @|̗wCֶBfg4zYeUotzaKU[eдc=k'ɰׂ7IGdNڷ;9i58SSe3z^y,@-N3w[fTi-e;=8n_Jӥ]ܙ} @::'?~ɦ71n)½o׷&e]ۼr:e]]wӒlU*auJIwjM9VmkUeLǪK;Φw#5oגUz,eRӦ=Ykr9,^,"Wn5/UQ%[e%BĤb̠壩Je{~rھn{8ދ,oirǭ=k\gU՗muۃeF v;}mrYEȺVߪ־5e<]x7Q[P:YQ~XQaBsQW+)?N]\EΕHA0atw={kйpl^HF3kzVFn? L/%r7=QzLS񯙛%c)dԆSDlvcG`J+&Ǎ# }3 3>G[# mXxԝ;uGe4&Ca޽u5lLgp7=VP*!kG@;2u54n>a]C-}qXF]hU[JQ?MrGfpqY$w-|#ٱj$H>߅ۑkVD}تA2LqrkkkloO!nZCֵ2^_^N"VIFw*;ۿyggsxڜrMcgԽD)bā o_9kee{-Jc cIff;#l47s wxNmjڟYlrb_c^#!rV% .d{0 :ڂ^w,3yl̟e~5w֝RYb4F"_pxc5 nUXF~?3 'Ĺy>̺/յz h= +V,x?)x7o+zI.^,c>~Uض:'+Vo=+凜izU4|wf/jZ+&z:Nݾ"Sd,?HBT1B@\,N^e=kk'_gy{bSa uH*ߍP3Qv +t@=N](0؜o%^u,Xohv=;{wzfXIJ= +9^Jmu+ &/JX܊^To0#?O-N>MH,RbC{`ŝ-׌X$ժu*u#g}ڲrqrʱl*! [65_[e6Vi,*c@l|fB̏f]n%mG]yΧ膏Xzt;ځig9 )*톘X|gE_ifƻ(ʌue?|n)5I]+!P>S?&[i9>O\mk{9ɠ7:39$lUHSo_eWYWrbXU4DD0ce_v-ъX* )]춻fXXt⺭/Hp@&/r6Zfb=eԩ?(cb^3*}JvFoFBNSc +$l>|zOdvdlG[{J*פֿF]s`p-OVvqb.C=u܂H U\7!4Ӑ2[ ߾o0Mu ҍ1vNM*JZpJ><@#coeN>{ҥõ-, veqG^COLc}>X1=[>SVl;QqeWPcU$lngz嘜+"Û,O]˲? r z dONjE֋= E:RfO^Gf$ jt$y]{N3RԺiޮ]5`&[_pUx7%VxiYs_ekMKZEi|7rH_W?'tɭkAk+=;r539^VదFꥈ~匞3ɧ2_ZEAW˝#ȌrVq"J;ֻP(U*ōdf-e9Zji)wk?c C6{ g1UUjVkv[f Sp*\q`(X~vcgzw%HtfωyNN{U Ҹj~ )z뱫m]zs6C+#k:'̝|n#rЃU~2յU";uhD?2yc[..XUcbW%w^%)DDeR ~'31ÅY6QÕzx CO=Ok)e׆}˓q|~P]er{KP=~*\-T|qpKIƷ#㚴1OM6vcic01i*NCP7c?7ؔڵ3)~#_*+,qҷC {Z =@nۅ;eXhPS+wsW+ [tlYnc~A1ʵXz4k@:OyU=ZEOIN`-4|x;) *KUv~I'=שƦ r,f>HﯾSp\3_]ں5mgj?kS&!~B+׺/ĴW/._C&lnZ}|eƦRI.k$tN6~=O3F;!jUԎ}O^-yϺ"eʕIQI.tu߾ħ=' ٭~{ُE1V)l߼o|g qg3[EoP#-F> Uɴi1}2\>TmTsXh}yx-8m== +='KħLSbuNPHi4؜mnE޲X.A=6ŋ ~,uW8|CR?J[*.[\)Ckm }/7m%:k[T<"gr1`ZqH"UN +D;z1V|fepsׇ3-IRt*?F_ WC[?4-f]U F-Ko_j'Ji`ZU).㼒u)Kѵ w ·?;Ioo}צq1E,5Of@U'>%8DU +?{S""""'T%GZ+*Pjdg(KgDDDږ(2 6>Fւ +<R1PY7O}o=b"""'ekE~ԡu * """""$k*UWSg#l\j겕:$v#GR%J@%q-oZ+9PmoΎ51]D1OV~VNkQcQ@uc |Z̓(uSVO0R~6e{yxzI:ue|E,&@wpw,sZ.}ƺc|jWdzeWYwۯz h'*Rȼt{ 1nIٞ:ѽE}>;V[eeժǤ|Mzv>w2uޞޠ$Y¢L  UJL`<{&VQPK{KZ㐝fz ^~3d}OWG~S_sS"㪳oNU@b(è]kBTe od YM$:v߼# oWgB'GZlyb~sgKt}tߞeKdh`^@:eU\Vh牢S#rŭN =J*nSŽWztըf@/(Σ&]Օ'cCZϴ>BbYs >z0u#ϙx>pu|6Fl'6; +?IK*~FNNUxcI=w$(jc:uedu:u`ۼOh:u^€[D1  4=r\&d +f3t: ]%jB |f/ڌ\^Pap&3XC%P&G1mX|KYF%#/̣K:e ڰGu?oC7:tz-d71{GcfMj$R}Z6UfRʨc[:;P5X~? y.J@7*@e #cj&'ٝW)Hf)Vb*)bA l fo#&Dk-`d*ƪC#|0_ln]Xg Fod2+M}%y$5߉6u{\C^#C61xY2rJHZϽ ?` + 'SA +u6Sm\N \fr/U|ʠJs)ͯե.|?:s޾2>MܕArgpH>۱ k.L1ptONK-SWOW^x|>uR;P#UQs'::Jn'~=H4u۾k '] +ԀAkK&9'^7ܧڥ*Q21+WQQ?yR37 E-QaೲP~=!F'SWkYԵQ 'Zӎ;l$܎3:#<1͏2P6X[};DlKL>M,R}Zl}g<7$TZo=,? 0C&g _a^vө)(T +>#g"g13#*̿[EFkf]l|dcn7 +o,p(Ʃzִ` ufnG5$̰]xXUZu߹o |%{.ʰC, x˯kiҶU3tS +Y0܍q|y(않BXA2D\C oc X~;E*%yլM"g6~/f)Жpz m3]zk@Jtb[p/c: +,p*B"{$#BOjD\Jhfeb]vXXzH'Z{K2~ۅ*BU: +s?ʱjB]ޏZ+V z~DLa`QMVf%vuC˷LnVBsuK%I0@"yyI~_c{V;(+].Pӵ `;B+wM;l/?3Y5#؜ T ,?ft^jm̊ȊCKy]lǬo*̶ +S]zC@7z ,/oB̹n<2?LN_}|9cVЊ+ \vaT1YyXdzDUg@$:$I^VR(Ŕӆ _%xu^^W#$Lߵ9/mge)jl^ƹK7?Yf}َ? 8dϼTV$bi& j6?rG'M]{lL}(tw"Ħk gkopʻ&G8_7})^c +5^KƦOBs;koSϊ "xuh+>[^EBOSO[ +:ʨEPU +I$= N*czOP배 Z׉e_@ܭ` +͸U4YZ4>CL>1#ckp< QcY߸%&gUX=[`oY[||Zg1\uh*XiK( +7'̫-An덝Kl"붉e&-VabtjөtNwc~ jSa؅ty{yre&n#JV +] N6nVLsM6 +Ɋߚ>N d#Q2z=:|vELlNS $7``Gq5:Ʈd:uٯQH]ܧUGǡGiΧ21ۮ[Dl|te}?ǿIv31}>${KEw,@|n|V?d +t1Ow28Կ$I614 ;yuEEO}-Z;Z_fKPg2i}e;䧴9,rV[ʝ^4CHknv|<%f̺6_xbN﹔r^o\m~קSe\y:*xu}k ~ O;_%0{-CHY΁47f~5ɷ5J5"Fb""SNQc="#<R)bS0 ])JE +? m.Y]6( _QP'Cg +#<ܽ"jR{/a@`}[C|o m lozI:~Z'PT6(_>Cw'~vU`& w(ߝvb|rJJ*4; <~>ak:3 O+)׫ZIP?1,¢zQINr>0NI :o'zn76/_/>eL tdP>N9x4gE0ϼYEz/ZZS֊}!TxN%8u֊u:v`*F#`<+㱩UT +P۱ecŅk{jDU$J<6 1$w.B 0 +dt/V;2JUֺB(>r~Goғ'/4O$y_Ze(Ⱥ*׍ vTGa@:)#O_)΢SUԁ}PUlh@F3R: " @V0V.+@{!FBaRh +?x7UMhUGP@yeEzտ1WMc!p~ã5ąQ}'ljwkZZGPm||ew`ѐTK"Ď[R)e+eҨQ|LƮfTPXP qmJ\ +.%㱍 Ҟ:WaѐweHZ*T(@ggC]rJ +$'2PC(o? ǿC<SZV `'bV}o׿}߿yn%WKYG*E4ZR2(Gð#HJ][ea(ťY܀ $w&Zq/*\P(*@uCq/"""""""""""" iyBzLERXzj  +5*?hGxXy3c׋ZR*"P@'DDDDDDDDDDDDֽW^'g_]~9Exu*(U@U|""""""&ZpUٙUP~}Y#XR芬=D ]a="""""""""""" ZQb~6f]Wqȼ}h'R'20RͰ:JA?>u.1ѬrUK1>d˥mzuw +O]x[ȩ98^gHøS4t>'ɯ2 #bzx7(z]}K3V\w="A5_bluv Z߻J_6r͍|nH[n#M׾Ā 'Q&[י성Giq-s S+]ld׌@:'C?|[qNkh-fL/Kխ dnRI=L/nҲ0=!N~e]jje=MvP:DwOeOEX/gG6:~Y`|y^'uغnP7Ҡ ~&cJ2LzѫKz=*^=||l0˺ۊaIF:QsmȪq[cgƾ=[#׻|WR+*aoYsYrr?c~E$L7aN~lWo6ir]Z>8jCaX;0{rx9xբ/MuTԩk_Ѐ~\cOPŻ԰ZV]Q25]@L{"㔤bUU'=Ov>dAlFE36+RI=k]bb9i36:Xx>F{ڕL?:!>cxS+!Cٿ{„ [O@m|mO9Fma k0R|%_[x_ߤYWNNnV\njСM{CDž[GGX λ,W)#lw+؇'OM|]\ Re2 Y|þpo+"([==Luz mOOa2F/-0{/+tmuu hkeϔqXaU}2)G*p ,d| +y:OآyiE/b~CX  ɠ0qSj?&g&7k2mfc?2"Ys6rX9?65%\eq³eMZ+RtNC;qiQF2Q[V( @yi唟B21'V+Zg!_n}y,R:җen;l}}M\U:l-_K%' c#qX`:>F6҅]LVkR]w{/&@joE`1+nk#dcVB+J% O]Y>ll،믹Y{9gی_f!oYSjS?. oY}dtWJA(o#ϣrXf[{_eZiVw ?I֦ГZAMh ]=lZX lh%=ɶ*֤jhRI%2r4#]J*VdjzfqW/!@Wc29:Æw_ vC5Vۮª+s5==oⱩƱZ(;vlm3Rl`4WMf$Ă7%v\0"=ثJ),DOZoNSHcc;y㋉^tV46II$II="""""""""",Z,.S[lN;yfgrlصӿTň4f,^V"uʛ=;sO3Ǡ7]4=M1%`~ .6eiťnEκG_r7ZTԿ%`~#l1!WͫхCܷzY*/]~&""""""""""""" )`>ACRb"""""$2EP @xBԪXc@?W<ɪ0CfRm ܁^6c)Y:>խuk\DDDDDBrdμfUu%N zѱ\DDJ^ŬmJ"yzZHF ۩<ȮU]X 0$|;=""""""""""% j,>Hf +6N-H AؕDDDDDJ^ŬmN""""" 1##7''*-}h"$cx<~En?<(v^%\0G!EEluXKNjӒmVeH2j@>w>Db 9À֥:>V *S@|u^hb!G.&+V0lfkg +w?dy>#" z ޤ ~1Smt1KI!\y$gXjzfN=c`xLZ3m7\tvusӽ|@{SfE EWqX, Gn<9~|rx«Z:@ y~]S3 k.Wv1{UM;zbEK!};o =,XֵXP0RF?djl851W[{KR{T" G7ydcseTE6=w2=b\graX* e^ {%o7IآDfبc#,TªvF^zfsj*k-pJ_IS̽NM$# +e=Lx^* gr|񖘼YwK)-Pu2:?d>ct[o_H޼[\ȫkw鞆(_!)>cjO>H>(3|g\5e'S-eèBlVCRv>"[8Np=U"M>ۿmm*3dy VG~3 +1,z[kVV_{w#]&nd:[ꎠr]^:Ct N|n]]`'rf7l,9g+p鴤l-cWtEՆԺ1 67D,={2[b;h0~dh.%hB^;@sѹz4`kRmtֶ h{[*m[j5V~!cz[|u=z1{A(*uexUqjZ9nfacP=rҹUo@m}aG| Vcv[^֚;ߔ`ۏqcZaB8^&3ٳܦJ]pJEkn@u%PwaS4UV%ڇ>f֏orz7e o<1=j*V\d(qޔpX8`m-cAYyU*^Ƭ{8jkN~g$黃]y*vNtV1΍`mn+e^{? +=]b:tFdF2|I{2T3#iy*8^.ӑMo[U:(ۇc['7&f#2UVޣ Oߧ@b.n˨du*ҨO_i3:d,zz=NZ:UF}K1K6[e9IeϧX[r)~%c >[>̌q%qڛU¡ ee ; cq{C:hUe{ tmG_,m^A UQb[CA=_lljRt$ffT}N]iƒZ߽6Z! $e.4=K[>渫 {O~'p;uu1N*q_I˺w8RձԀA'mK |uxxxɆڹv[^F{URgޛ2?JG~k/}_ǯjԫ+)>ܚ1 2޵S"ԌN~S _(umb:;I)Il#@zZw߫ƻ28.~? T~jk@7zdi3sJ+h[9wkK~:ѓst {-,E`̖鲂=%|Bf#uۍ] Vu(?T&,{vWrޞ'f` zpּ*ǷrW:|f7*>]=O뺃X"[.(tH +z\S1-1&୛PtaO8ڲEX%PfV"" #Q޻ƇAȥV^}xRֵҪЕjLHLD؂e'ƌVLb#?,a= ֤UV]8n˲ٙ5A#QHd4#bUEqnUEM6vt5 աkzeR:Gxeu2 o@Yiqta+(J$s#DIEb Ī%(XҀ dV ;xhGLD": +A#lj1 (Q5ɉ@;hozmll,8!LQ֋40n92Q | 2b"""F[ +4DD@(kP oCt6e_ 1-J+ԋԩ]DKc^#e.ZDE +d?)<^fFR21.2k\Zw`q_Gu۞-3KпOVׅ.珑^R +`I􈈘|qώCFU*W_(cz)e-U $*Ize6e]oSzz_Xos!nc>`KTdYK+0oy5]J"cy~\O="~JRX0^Td$crPnTdʱH%\)_z@UB?2Qn(;mbUlu^DD^0e%X~" v'}QzvP '>oRؗ@\K9WlϢ[Q_jհ+ lv"db""""&.e*0Zvd8X;Hk3Z؞ t @~k̰矐}gjZv4=-bQ lo[rǂ9^XuiXt|+jU?B/َ +;񞙹׿J/H'D$(7㟘TϯE#R}: rMU8ԭTn 4 v$h%P:'~ꝄQ嘍qOw_@:@j5^u;YI2beX է kZwb@P>'Ȟvqi,ZVr]UzLKDcg%SU~cK~R6I7}|&5ns=S*ʃc(BP#OsvNF os-it:fߍ w1ec%MXAQf:UI;-%_'eUvzYH+kzO1fу wYɻ ^+ vևV)7a5+#jP?>(+'qǸ1tVW[, +{H=QfcEwאzTP#{x[ǽBUKfX:+u>f?FM6ؾ`= Oo}^BLuǰP'}{~]O+21AJq*-h剕]"SpYT|d8YRz:ۈ+(VһÿFg15sv qȽ)Bub8;7Gav&C/X+ҩYeWۉֶ+zd0e#m6â˟}59ם($i`!&S-TnJzSOv;2˦ץoT*1R6vu密BNμOf<%Yj٩G#RƲ;mu#lfk54R3P@ y[8`c]Fz.v tB޳JztHۀlbVVj.Wor]\6 +ylXC}x‰\VJ]n!~adr~}Zz?K~_3 n;;-5I{i6ñv2[=jxֺ<#r0(W+!2!A٫^l"exUjRVWj;&cyj* l֞#QcEAb:f_##蹩EB.f,Q< 7;#?7gZ^+k x)@>>qzweb qnQޤp}#@vy ۺ[GKBo[e r9r46s(:_Y RmH!w'YWbU}ZPg'NJA4 z: tz?d Eȱ6@nm?=>;%UP:ݛqݐR+Q*m:( ~zrwr8Xuec\u2tT'ͮO f5U=oRn=y05^eΖkhʬWn?K_GD~LCgj'8YkgJ2px2 o#0$V9 v/s}7=ݕ]6 :z)P[P~fjf ) +6p2h.嫾ȩRLw+%Ab rJT|~%Ur;l u6^Z>c^]EaT B6l|JSyȢ6~ңhO;2|^m|.=!/+·Rw9<_rWJS`Mޓ}== ;}Js7,[~MkjD*v;#j[כ=\Ǯlb%ITZYzzFP:z{^\ jO~tD7#)E-96RWX}{ov;}fl0"U/fݗaْTOXdWׯb[exN{'-BA l(;:d}#XS*驽۬k]*o/fP{ÑI-߈S˔AVYZzi Z$r~2W W/FJIp (CW.'ˑMrHwǮ.ίO;}=em jpJ0Aq^]eX5Րnйv솁3#30]T[RƷ쭵; o}Ҋ8dem@ +wL٬8<C =2Kz$z7韬1A׮ :ah2z0.)wvgz˝R6IV/#nA=6(nwo~eٸ-Xk^o#%rkwSzTtʾ09PWRڨҘ*wK K GbY=J[Qv|f[@x;G$^aլ=Nې {-uXy\w 9y*M[F Of?gsr)>Yj*m[*(4D˾Oɳ*.z[jQ:lm^Gxb?rʲ*˥ʅl5ҥ@ [;=1xJ-+uVUYvMȴXgP +:6y{;¥[rگeBt0{OE0Vkr̅u_Mc3ڂ{eB+$^G܍|c5/Z2hX*Ă8|6N -t0B +evgyoG_b:=7*t =ģ8,ʲ(!RN,[K.+JͪQmTHv1ވ^oħϣ)벜{UYYY+I ܋,q}oW!]b.Kt{S"G1lRtJe, ׶:} |煞d_~ue҉j%ug̿܇u(3YNd ﴺÿ7d5,vA_3.1JJG孪}J?Lw^cN^I-en,Xo>"Z/+j)XWVf/!GUy^OM_WNϽ߷䙉¶+1h{6qGUᩬSw c]:~[N^)"t"+w'|vpIJUq IJm X-p~!:g6|u k^|w=i21V&lo{-xx<,ёun-7X)x<%XOO~z'W"z Wjy=obTU`6ߡ=b$(K/?&VPHC}ΆJ.Ʈ FSQm-EIe, 9*;x\9Ҫc #ɭ-CuVS6gDDDD,ߖů)p.e,AQ }ξ{ +n[A~;st.w,5{ t{]3x? ΕK#V6OKtu& ,(\Y:WOA] ﷟2h0qn|{- b vN-ؕUU͂Vc5յU8Yimx*ASR{e*L.=l6] H Td@o=ͳ=ēEc*֒X});@@j^sz +7K9'Eۤ߹,k;I+nlW +Ģ@t6>?l{.̌c]vQu9ֶk: D?dXm5EɵO`Mc`h/^csXW +ZR^FGPczu1>@!嵭Gi-dsjVZPTGω#la,zA[}=u'ֲC!hkwmc=1TP0PiF l u3q5|J a>/E4{o#̦h0가@cZw?u5:2;/Qe1o`#uNO̗[܈`{A͟UKt`t5ε^w/Dz$"#X-Ҁ$_,*bk c҅Mmc#T+3oH>lHm7=ykj*կn- ukC86mMlzCt:ԻyeNlƱޕr߼4dg5ϑcXzUs;,.簱40 7TN"_bZO. r.7n܏ns:9 +ޘm^ϞxfgUVR~PIBF!G%_Kl*AYHX.&2iꍡ  +o]#`wO\knYWMh_~+nWP +ӣ/zP;{'2u$oL&? uLRĶ7eD/3dbSڮ6gK ]u ^@7xxC=-EMܫ ( 5?-^Za3Fu^ֻ|-Lk%~EG{ht*ozֻ>q( ʠY!?ȵ1ta`FG== Oٹ1js֣eZ7yab=j@r~:dX6n-:4K0= sO#J_CՆ{=b?}32=N5J.p!vOB,H;߁0Scf5kʭY"{؉NbgV2;k'V>M￶lؼ[Ub}S{C5eϻ`C` ߷Ug;VCc=SKk#G"im9Fea`="\_?*ؗ,Q7㙖汾Z젒4{Z?u۔[qSHFs_-V% TtVv@~{nӋǝte] B}ע3~S``>cj#`UM%l"*mGQ Fv&O"C,KzUk=ܒI>{G~XV+f^ʀhw#?z2_RUe՟U4zX)k:_"9zTA۸;dMYCv̽-=5/N6+ۘv} +]a#^\XՍsvt3lg]iq(GߧJ>_!":OH5l: 6%pj/zYT6 ERad# joǫΊ]Lk +{=}mZXB]^5b8\1s3DEz``IJVɷ!_t#*kj>Hև3?꽢]\%ez={H^# +WzkˁPaBZyAWxc]auAS{{Z¬ZleTf߀=e; Gw\M^WOɥՎ nO nEŽ*@ +ڽCuRsjQ 5Tpn `}/7rKޗ(}`&VN6S5|{_\wƬ˳h|l}kI8j [+-}]h:v@,릣>z)vvրEn)ͯ-fCd7o]( +#\>FW6VKQG5Jy3f?#W_Ӳ*t5k罻`8%ClQ;]I +yWŭ-j +ZXmհJ5 +79<r HYVM^~`OP;;mwdxms\:(4MH0Cx|̫L2dR>lLz98;{!ٗzP5헜%mՀUb%$}Ϻ虻5kۣMXxWCtE; +?-5ަFCr7[n>-RV-62/͂O2en,pmeE{u?y+qԽC0^>߄Uۗ-mDqUaǼ m}țfJme!רVio>;?gsiVrhPB#Ž7}f]oef4a]$冾:o_/ɇ;XԽ~mPNS@O(? Lm9>fvP*wBFraYeY^ +c`'H5 |eZ3֖Fw'd}adzWPn\y;]tkw|VAZ˝*@'[*HXofסo8;hno`X Vw/=}O=w|Kx' \2H;$5KNqLk)GC㯲b +kr[>]dvb_l;R4{ Fђ YIU Z'ljdgcqbe]cZd(|eO,sj5v +w:Uzr[* [-ab[$ϵ6CKY7m1K=[zVV(s6$}?(zEߎTmI;2=C N?$h\H^ +ۘ:>A||~sbzr_؈@kM>8ec{_l:}KZ7>}0U}&]ymW5o<~.0=N1XkOYȖ'_OlSeI$`"߃(Ҁ,7Z5?eON_IjҁW4>.&+27L ÷qʐXv')`ưG™ms \fjOJҦH9VMw-C+}4XU"r_Dj/,;&Ã^7bǸE`uR7g|fXЌWMøSTP +AzE:P{x*)ˌUjt+Y{yVDD@!a7#ozǿE^AzՈ~5A/WF/C\/jk6/(ؕZuRwƫ- w"*O;iLt֪ +KšXPfA[]L ]uYN떤%F-k>Ic_rUXc6)S#JqR˨YnmĜqkRE ty:R#^+t,K;&^O}yҁ}^; ˝D +[.g)ӫ{H{Js]Cv!)zZuT˧Ƣ:1R7B:vܭ)E#{l:^Tօ{An;r*4+MuHϓs$Rj4#]#_-xctֽ( ::"7ۅMf)qVN -%GU^5TȊ +;OI [} ף:[[@*ljRFYE-Ul\FĜ|:q:Ҿ= +gu[']}yq<-D($zF<ƥk͋~=n\,ZצWޙC 8\zу*(!zA +/zĥ_odeaQo,N ɷY4C(+#R…JGJ hv+E_PZ׏TVV,H7t_q{nǷRaS_խ}c>'>O4+|%UURTP ${(ū;ҨQ-æ[f_A#&,æzјkPOoȞZޏD#c RZ<S]lÒcN,|,njؾs$bRC3OH#'^euԕ}U~i\jD^wՏ] *u@ a-8|[8Y-)5})JGq u,#P(~_D+˲a؉gZReccz:|/x\;l<s _!PB[*c{zKRE+lAyrh=ođ|LjTt +]@jF>%8kJ;!. """"" "bGoֻQWu h7o=<^}wJrt~={2ZB@,@=),WΣA=FO+Wb[`%kBt<(IW)~`I|}eDDFMy N2cjt÷z ԙmS-mN؂@'rZsU,Olo#O-^V9&IR.'ȭj:@m}XY5ad6[oC}HYܢ]*m*ıK]J@LߍɯX77OIJ{S + R~Kuazx{WaT a;krYx%uYjUYN؞_¹\`UEVKF>5x{A^uJ2z7tP{봺9O]Yul]*:O`F9vĻC_վT{]>evg)潏_M i.ֻO˟c/+@ DujӑzV̥cuqݟ՗P,6Dz5 q˭mãxe;2dPKzz1+[Ko^v # n#n֭l~1ѳ|y%o }6^+%lmYP{hyhyBgԗ&;ZSns=2y5-dUWCW) FL/bٓv@4fcQ@5?0m[=@:)}NI>Ont6-I1Z@=dOmuO8LlFal0#^UyocF)x`~}.V[Wʣۥ:DY{6\!M +U*;7쿈_#VMGimj ˈ0򉍅R6+|I~@ܿp?; }Uf ߙ{n[Q +uWVX ](7[fܪijo⪫NBI`@{ ȽN_k6|uUS[(t+,~ %eSx¶SBī9Vb6]li]e ږYUu4,b -y,l?u~OIr {W z{x'3\n \f58ԍ%U/@k򟌹-28\Ȳk+T.uޭS'I]v{vN<dPUV(eu*'3ҵ=} +{#w܁eDDDDDDDDYwнKo^DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@<3s*"JгfYpK/zLV]7_X| DDDDDDDDD{KW!Uzޝ7,~315ew["Ek܎ðȗX9cՐ؊0`ll| 5mli^m+z?lj1 wC ܘi\^^@?O_iӀbIzFk-hr@uX|d5NAo84\l;=5>Ϝڠ7rWn~Z͝`v[2fهj i=׾54S +64$<jgm뮲>c{7kTmhtQcҵ5B翉nu)x@ˎXJPApcͼ+Uޝ^dX3X(`Nm XsqXWg!*g;vg0V@ug72b"j1^?js J[xD }9qqQHGHt#yUR?Lr TEw#>fz\UkeY]`(,@y;9nk$o]I=ïkLDDǭsEfcl%VMaZm0pkVhɶCw]~)ycUOWEzI\*2kdoSx[{muu8+Қg!A'Wl}ʃн#i7' eu־{*~~ͺ[-AQAڕMܐw'um^O?W}2ۤƶ'9te'e]IV]w-9 q=/JF t+ywq-8Nc2h~ä1]u]?ߟehehvD73נv($k} Tlvq csaʱțJ%b,)#n?X oz{,ީl:T%T-5#v䄬$.g/g'+kY"z):~GKҍK-DWeV6{8*Vp{7R.HqQbD펋{w=9M8L|*&ad`ӑn] m`ꠝtU gRۑ1MrHV@@R;^,Rzhl?iL奮7 ctb|G'_ g3U4I{]GĶ>LP{~/3rF}6[mLTFjcc^FǭrݓkSwLor\:ܠ 2WkЌ:,!M~ k, :bj>$2!aO@?W_S?NJܡBzОP}s=5=ohsskl[RT=NMvܶzQؙuT^Rȯ4eϳt(ɼқ T'7*÷vYr\`P,׳RA`δ{Qmݐ4PUV͍>J S0rU*ŲլV@GclXf33ejOQ7Ikr=|}q)c:32֊A *`>x͋abYJl sn,,΂'nێfUʕ0`9{k xm ZH;LGysn']8kǒ:G/bpORFG-?|M_\F8E.ª@UY }ڪqQ~n5lͣ"˟h,\l ǬUS>nF￟.Yc3VԪニXO {7#T~dP|m9jՒc~֩kZ>_}Y-kY]4=N ao${̯.ϫ-YjM57HU#۶gΥ;^Wg3e?B}6/@G{umcp\W|Z!zT@߹3VUfP=Xo[t3g%Ʀ/ {Z*/u#{ٞuSW`U[tAI3#9OPWC{'&ַmyOjX'Z'b5-5kT(И9e"U-QȺմ]bkeUP:4$kRNrxhj_';m-om+]V$ve;#qK2m}U^k b9 +Xw I:VTDZtKzi 'D4faVG4>-pbS1;$ք$JO`Kٴg_u:]t?$[ +I|<}~;ƪѫ: r]-疿@jccuI]֖vB,zI;=ǼHf.řğ v^Yu.f+.Uamt +-Uד2QĦ7qWQ|]5QFЋl;xU$0'كV0L3k}OW`[=3{gcZBbO}5}Ҏ9 s=)ѣ:p~BWě2e +MD}CkԽջf֦#5L@zog/09{ XNttvz@?)'fc.)FS;wPQړ?Cpٽ:AR~ ~>;j=^ez)A~eXMzh1:@ ˸ Y\xȿ~S/8Lcb_ߗ47IvP(%[jOu+iEt%%(ֶ$􈈈,@O&i#ɾuC9 mlp{ QeIru v;\: #RwDDDDDDDM_OR䷏3hB(Jֽ6vt5+[GK`|6?$"""""""""""""""" !:oVj8ʕ2앱u*;JYG@&"""""""$HЙDǫEhOxeلt5VIN;/cxJ;;+uةMoJI};G٣3$DDDDDDDDDDDDDDDDDDD@-2y\\;=U~@ٹw/z#Q"xfӁS]{ECg[:}ҫR[+(*A -(B0UQXdGpGU#rb"%g%ǵK} 1Q-\mQs'P~_)s`e|2`v#` n; f]G}wrb""'ɭ5^+ tgɈቛFrQbW*J釕?h 9U-Mb@= yo8^5a7F\LfEu,PA+c J(T|2~'DDK.GU[&Ξhҍ҂t>ȯ* pAOH1yagbI[z(dR$ v['W AVfV_QOVY埴6Y^ԐoH r>cadT+Q)G_GrUH`~}sg!U- N:uz ^%X[U +ʺm;͏V>m+R]7C@\|]=;p&:a/E^'t7_tO{{oOo=`S]u)Ѳu47*^Zk6XVat.>ک :2=sF}XKH)v9FK ر} 4~&&Tມr! +5za/&|E^2gouzXZ.\ť;=leJׂ{ ߥ:_=[}nYSzq}ckūQ\m;ަ,9 -S;L~_+q▥h[:BiuԻ<әF-}!m5~E[%{;17!rB_Ro$A;%}8T ׯA%ҶG;O]Wׇd/nYW[7X>QI:϶چ8V-HdoyDZ'-C& M[!QF*+\bhDZK%eF]2 wlSܖ w/mVW[+[XYӂGH +< ,[EIaFB V˿D3("D]|I=[߀k|u@gQ Omt|,ۍQSiImV^(ԡm#{k?(Vp* A i:Hmk|~gz67Ag,{3#zVUbU{=bt2Juv>}*2:1z±oTX)c<{t_?ަnv +)q^[4߁=-[:j~#e115mB-5*8bh,T6GRu/oyH'οHG+?ptξz^o~6:ו}S]͋m5mj>ȀPHj?R: u0LڶP:w$\<9vdՆWK hZ uUTY{n.8U|,T+[4ZF%C)` ߎdѕO{hl`}\\ +=m,_h2iݘе0` F2˚̮#3/F:\˿+5czסkX3;ElAb8E8n[&NS ylg3FvS]ZYBusWat:;EL]ۑ}UIQsX숥PAҬKk'fLrόX_I+!QA~b]U5؎YH=_ʐ;9[E=FػuoTOcF[ +<5~ +˔-W}c]Ʋnr,cfVm:č$~s#RW=v6?־sE|=OƸwbʪW5Im WzE,6^[mWG]G^gXZ}T*=S׏G9kAg [ +F6fcf^{k%:޴ߺ{h*eδUwȬ+1P+g G6vјaԑ|yre2xvi*ީsft2ۍVfbJnz`:Nn_1mQJEhREȽ)bcW. W =(970f:_k , qOW]5MUu#Ugٓ{tjKkO1Y*P̊XX]йz ltN9}-H}r:::͙T @ ;*0gSb]F·Zݘlcls!3(drJ.[1LjUOISYs:dd>Seov^Bvw$_M͋_: _do}:y+8qv-Νb%KtoL˶뒜EV% aMtGIiO;#U6c&j,[wy 72-Ҭi\zOH豴<Ǟp#;kU-lF-j{cp8l~~c]A)g%A%_?2&FV{SE=ύ}s\9eSH\~&M}=[OOfx޺M%=]DX:~?0adfՌqj+BI~?)]qTՏ2nR$=ώݷ#[ll+|n^OQF=V{5_Bʶ}CJ8oL7@̖eb籢[},H`XO19Y"mQM$p^~ɹVht{e6_9j]U]DXk6cpxisZG^Sodrqv׍iJm +,{Ugu6zUQU㱩o;;2#]k+,V*!QW`؟@Z1YūֶVݞ=K6z.ǾCޯEwNjR@'5MR&I` +C) 0|f^nmwYveHE,S_IPV.¬cYql+VZJ<*9 !cTQ}JEJ)*Mlg8Jr1%XzN>oElM^uu%tf3|hk*f^QCcu*z2Qw4O'^g)}yʅ.LOXڟ3`-Ff7'nV=lޯ(CX̥;)civJS$Y` +U C69ܠz*K;mE[[ h,6MiZjF[qg~ݺ[r_MK/Ӡjwb|g5u]UMtYAm's=M"}ZN uz}`/xp^1+{B1ՒUoq9 +YmjUAek=K!\+u0~ lsj;5kzX'nG߾5uieY]mϨ +o4ue9S~GqűYVvt@C8.}O!f&P^1 bNu.ۅƮֳP_c^7<왩|FP4.-/oz׃σry-ǵE{QU]bH:SO|5md  +㿞籚Ke7M+2dnmoiw1VpMk]@=OSq{pjZ[R޾[#}VN.=ԗz ) l;Kh&Юqͧ)^ť:}5ܯW #|l_NqBcgRaJxͫ ̲Kz,G~=+xp~: +!Y)mp*PnN>DffgZiڲKT֦T+)Q}vZܧ٤Ʒ7Dz~]=eE +zXߕqW/{QNP`o'g _ԫ_FJ'׎㑪9&lnWWҵ/_6PG[efP9I`뻎D_9|zkD®B3Zluwe~݋ +rjj]JI<4k㬲{S `>H+G%? GfEy8)_")k=L{tOb;#אQsպ:= չ-֝=:qs)-xzk,z@)Mb;Q͉w짭p#b1,I^gzud kMU>9p3V@Φ#Qj5dj51$čIFw%cj)QbH`Tq18qE"^BY:UH@ކη2#Q&$j5#QЍI7Lf-AS}'ܹ7"*]ZUNFčIԘ(AVR#`4A+4.]ž2]@w2TԡQ*j5"5&$j5dI2#QFHԘԘmi}oUݴTO<&7_KQK7&"""""""""""""""""""""""""""""""""""""5}mn_DfOXV :}aH޼|.Yn8*["~e_U4E}nTt#{׍Zi8ƪ0gPH\;,8բ(\rl5uñVΏ}̝D-:t>uY 2ki5&]Ab1n~&SzM^$h ']lo}=.pW,!꣨,Ͽ]gwRx|˲\{՜f k, Xؙm5/XոZ荍dn9-}VKf +ʵ3(+v=K..۹y +mtVC'_/>]t-`°K}G^Lp"mkN?5OdF6qݝ3kKgaݛKnc gc+̏zOb豗ulzJU5uzKWw #԰'D^eYW m˻ĸޗ@tܯ?ƻ:ޡ:f؝Xh2nWo-OKC/6ԧ9>HBJ+4ے~Иl9KpM٥ԯlTF=K,9dᣱv"`1YwFzy7ee=zz-= P ;xVJ-6#L~]DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD1N>Q|racxY,RʟAѼlA=SQmYכQU +K=(ٟ5Vd_e+YPå@=@>K\ղΥ%Jk{2@jYdpYfBبw#l2,DK:0pum6'>cVXn!$_ OwzxXt*)$@;gOm~>MwzMd +i:=Cx1UߋkP06dyȿlL[@oNzunjSѳsdZBHFu蟁251G?} ,{ +F9b:T/c"ԥW/v@'=_6k*qk(Žc|NSnCִV++$ t$6uQet;;5 +nv1R ֧#Wj\5N=DI Sd0#]$e>6X.U:zT$)-:2?{t_hmofUlLo5)^qzqt?==Gmx?8+)1]a{J%v=dn +t3#UvU#̈&""""""""""""""""""""""""""""""""""""<ᄐd6ZʊeP>{ kg9z_.:FGe6e9Eb쎤`l=""QuɎ*$RHA$ +tOs*'2pOPWGPϧ{w_^:(Bfya8p ˙KةuA܂|D_?=If + =LDDH$<ɫ$S< 6wPԳX1+:K0PXQ$ٴ-I6#{"{DDF + $L[:0e#`?qs)MHNׯN)kO~2)U5J]@,P#ΧRH7U)e4~W6Q@We^XwA{kiڽ|I>ڒ;0̻hRw-J:J :N`U}XU^튽Wc>ux'_Iģƻ:eSղ=֥N5M}~=(Rvu]D6!ڲ3&mw} K]:<¬Kkh6?nَpq-K5# l!<A#;s0yY_q;Tœ +'`Op|.z[H``ET0G=}>z_T(!=|CGrG!v&ujՙT{@ ![8DZ%Pm;3ϛ8.{=)F#jt yS' 7ٖ 7S?m~ߌ)|x 0-, O}lKW֮55d/P*f ;q9맩zVXx=#ȖC 9EG%:Lc[L{On% f^3\@Rt-`QN;7Ǧ_PG0l]UzItH?۴R^rkh U;o@zYɭON=)eE,]I;pWN|AzfׁEt3 k_#ajV}bzJu^xֆc>_+3+0[h klֺ$uo΁.r=J221=e"ԍ2;O\gWz~=>H#{O O/Tk[VXlC+|.#֭jRV>PQ;l$7ҲX Ot:W{:1|>Srߗm B?Y7WP,^@ou:,En;߃OlҾi:#^U c7O7j4;P+++7XRAp{ޮpsEt-evH'=@ 6'7>"Zps +=<Rul f-|^w zY:"u~$U]pǹ baY:o^;%ʵoMkV~8labԂ H|;.שQ%cxniN(VӉziν0l?N[z}?Mؖ |G2|Bߙýjk;]*MX$>ǖlA`S-Ș!R7 6֥^.MsKWuPK:z<>uR+;벵\mDfU +@h2h^sm{,Ktv-yyU\}%UQmus^Vu2n22ۢΟ__bzlbU=Y}W!{+z8O+i[ܾ5Sc-ҭKb'[#[{K|n3nKfXQzix~4gs۝h?GåE/[1!A#>5<7'SM` mGnωE\OJ_XaZ/}uT>/c&KtHzGQ:̈;j3t+1҃LyGpEUHw7dh}/nN5V_쀲~'EVfzUYس҂f79mjuBշn#2̜M.aMYR F7yad1O]kypxq4U{XSuX l]qYVqy-E IuX v~=xuh2[ +TQ³YCk]rYOg"e=Ufbmb}GOw|{T8F'vPQ`޾3X⸂jMBjؕqv,p% ~*g]m+%}tYBh*ܞ)'ykRɪQJVHv}F_U!F؍/~ۙ>^GZfW*AbFߎyan':v-zz:BoCyG=]Ո=B+ϒ>#,9Mڥ(!@o2}˯w>Cl`eهW!t޲v@wKFvVEJ+ߩփlIӰ\|ǰXFf6%(a@`Qg=_N6TGDoZ>U_}lb+~ r,֦UjS@ a}ٸB ^^ݘ$WFMV:$yW5`69`eYB(ܝu}M;Ƴ*RP2l [eH:=ـ^@ᚭ=-F/OrY_~-;K1ݬ.4Jg5YT-*_nRᗦA䲕 !}q .mtQ#Z>;ͦkY7̾Q[(`tǝ~ss9@nQMAխw?#-\jWcV 87-x'ziɮEU|vҽIsѱ|~>wqGnFngҨm@lyy+_[0wB]we:J.ﶧ@xթVj`s_XfwMnc5֏}:+5#.FίIz}m`uk7#QdI2#Qj5-F[Ǧ0j{_)s45Բ8˲Ӳ'HaRCO7eE# Z + r +Đ;)Г"5ЈjLHFȓ5IԙԙFRb"$jb=5U@>twj\qgk-λ: +QeQ&FRb""1<)v~(䳦ʌ@ֻKl)jkV[Vb{OFq1(=ut]~#oȮĩWUKf.{Z;2pLB5UX25XѰkcv׎0/ۃY1VënSwW.eԈJWf +H s+&Fn7#qܙ;#{=c="&EMl禎ܘz[ܬ .;`̤Hܰs2UcUL,Jl{ˬKM5F[_-u=FbyV+Z#-tEc 󯑙xN{ɘR^S zA]h9yI[X`6I'@'S+8wV11:$yn73r7dnLP'PN?d|h˶tF7%ܙɑos?)hNeӳ.dFq15h?ğ5_h{+}[ m] [(J`K. +BR޺J=WVOH'D`|6/YoE[:1n0]oc#&^6MVъq!պ-)sGv0߅mSZƷ* +/ +؟Rݼ(sXUȣ)lAc,++{b_]XOwXLIﳩד̮!e\z{-bt 'G}i3Jġ3O1u_bEX ={B =@MlfQPN~RF% EP:c3V9\2]糨Sw%ê;S؟^SvG>qj׬XZ\a_HrXK)o}|e>_>EgM,r!#7<&\5R`l?gLmrv5yV5z!H!=o3f]\5-mBǠv+L{G`7'2lFZ 4Oķ.6]aEJ6tsN]7635oXVbX~ |eMܼ1rRU\D۫8|>Ic{ 6Y}?o}/9<ukyK,!YR㷀w?lYe9TZT;*'=,pQJ/`tlG@հi/#.WIv#״8(Tm0m}]y? kv_ k&oH}v +[M=ӀJj Rz,h_{ScّRYm_٪02p6995(,S +γ*Zk zVTX؋c^;L~U$p|k.o& z=SSa*eߜC[-dҚrx"lŽ\HPtC|<|g^%_]},$1e1_{O +%W>> @_\mWGaqcS]}9jX:38Q7U]7{n{{IŮ8Q{zm߿L'<]zm˵[ւ̲f𖆲{jjl/[rzNƏG zH/:~V{I`_#\U^Cn'CY =޵紵{6°ZXENf:{lx|^5Y޶UqYT#=)zg6eν+ʿ" zfaV3w.bHo_Lg%~^s}ծ&b+8<NQ)c5|͢`9K:&wN0"K-g(a|w#vWuָzZ nw +~]ZQxd㍍^C@c^4Zww-- XFkBwB{[-abe;QP9'Dv#ǃݮn`䅹wSjR5Z1%Dǰ$^e9_yOEeN==AﱽvWThd=V-v2OF<@ySwb㭌p*QP'L;1K˿s5oT Z+˺1)ȡSX,B4͡ci^>^'!uQ65YUVacf;=,Ob3h8-fǰw;v?2@KnyIevFJludbT;h푇rH+ak"{Me֧>i9gA;PлxfE=^J{ǩF![ϒHUf*2.9vvݻuV4?$祼F_urOe۹CwIc?OmvY,y[3YerIpO̻/&ë(jCjvF67qң8lNz9tz`>;ڶ [־%/NV՗CRMh]ߙuuکǑ1\܎V6HzŕUk*XOu:r/ܳR*S(=C[JdZGFZtײĖ_`}1oVna_]қU+t tup7qbe7nlhvQC=rŶǰ$r 7R{&Fi_f1<_Sze-eagcIևa[ķZ'~`fOV_H̳EjPbT |{=Wq@HS$Q;F/us=kZ$ڎeBvP~xe{+fv)»6@E g ns[m'&'Gĵ*Qk[5Z9f4@rwr k[R;(P竪U{&1Y#2V-ң]u@:֯djǪjA;V!-naqCvXOLU= o-J9V5鬅}D.b֎nO Ֆsq4ժ9v:?xo]VVMvXv7mk֣ewmTkWruI޾R٦ţ2X):\(|Jn[.ފD6" `JN"eN1RԐZmveq8CU͗m܃YXT*}*>Iz#kjh؂kq +*鵥f+؞n]Hq [Qd01ŨWu˲ =/F*T4DU-|[qgղ0WWQJߒ^UĂ{UGFͫ.= +}'`sgL215z>+u!mvqĵB|Yebel]aCw۱/dz+*v%uY7q_rqZAXQ*~6m̶)¢KPH@>U]5ev+!%GG=+&Ʊ +Xd^t6G? l꺴B/@ vmybbuyzkqO<Lu@b6ۧsٻ0h\TX3UԬ\ӮhW V6/H4]&HA/Y~SU*Ӎ7܂~}S0f+soj~`Ggt$˜ c\W?{ Cat"~g#6kڛ.Ju]X&H ;o~SM6]bڄ!mn@X aPH(SnN?zF0 +GMg[ +}~Js-1<73)ireuoFĦ3}UcƴGbֻjM)@ɷֹk)[tJ}nݶI>5vx|`JWggbY!ҁ|a".㓌w-)ZR|9#Yl7WQ: 9$My'3&ZOV +|I: Xeu}yNb@:iQ}=qx䵵Ьj4 0y;m]Vew6T}p(J oB UWVQu0Oxܛ>eYk +X(PGJ4܋8+OUkXUX#*?eywAJإj +z7 +#pb""""$hw:&""""""""""""""""""""$jLDDDDDDDHԘ +endstream endobj 134 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 45/Tabs/S/Type/Page>> endobj 135 0 obj <>stream +HWۊ#={UA#PK 0oƘ]/#UÚq;qӧ߿Ot]to~zӺ>$Iuߞ n99A!𿻜$YM&~翝^~/?|<՝JM&siEMzQMȼf7wB|&u_5sr6LЎ萂vt~LCJUSuXS֤˔ B5w_@r"1IU;iU*vsCjG wI}!fb WZ-i'v5r@,4ZQfZyy'|uXJ'r/>l)m=7 /iY"zR4uzk.GoR7_j@1֙fm6 3L:a <Xpj4]7ru௖$G_NYC/uU%ּ:a$™hL__e#F?Td̗X?$c8:|Y3ut+&l*0pZ \n9lu]1Nfe~̬U Gr)Yosn"Jg!CseW::>/³PQ #YAs3D3Q3W3ͳC >ji8~e=t}K@lCIM9l6s@06י-qFPW?q7p";!}ze3[wy%T\Q.n'䀉0Q,f2.Ȓ,V j KCޓiEoMP⻊e].IPؾG̸vFG) +4B(tkFKƜ#V"q B4;ym%O} +qNfqC)J"J&bHwBl 1 IAa<\\l݈TknU=8*Ue^E$5O .dArƂRϦvtZ P *[>x/h(;.yKsѬ1l5Q +f]m98aݚRF3P:zgj7XW0#V?tMK71Y`D0\2 +.&!!wt(r(a [( y<\8]i!8"gy6=bu݆Q apj>Ӝ4H^|VB0Yҍ׸ξ(QY#sΦ(2z ɖ2xpYD"%L=l:e;)iu\qԃ% ⤚}jK:W-Jxtmu!S7 RVUc}. +7 +G+B,v P##)ր$ 2ߞvpsdkmc`JT[yAT坚?_ ̽d?Meu~/?|VJʮt+%4tlp[WarY"3@9ObY7c8QE +PpFjv8 94'^c=> ؉$!NtY9c~]ׁ^- @W;n|A"j=V"U%`IQ.t"x |ǥU'P> +I^{< DR\gF ˦4L>#څV-7?]{hv]|kϧѷ*ja*7>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  +g!1A"Qaq25BRr#3TUs$4ECSbct +%&'()*6789:DFGHIJVWXYZdefghijuvwxyz?b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb"|dDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@ӵb&"3F|3#FU2r9X_ܴJRB7w;wjcFo5WމXL%,hANn^dz%=#}!0#+M?= |~_[kl`-7ƶ |n˲+ *iWvX-e~Ru^`H﯒q[mxy C]CVu2(vqyHK%V3ylvfߑ`&z;?~)u}nkSH PJ7=5=ڵHnUXG!#}XޭpVU vJ ({P.6'1|gcG W_o'"!*:uG.' R~UP# aF3C73k2ܪtmNN@=>]ܖXou?0'Sյb"k9Z׻}End LMb×7g(Lrp6JmS˽箛</\p"nVebXI%Av&r Ptv67_p& +LϞE,C`hu$G(G( Eml3G!A# &Y0{΄DӴ@H:Ϩֵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ׵b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb"""""""""""""""""""|Xu~IxMGusrH1dDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDӵb"""""""""""""""""""yLP~1T *R yYzakg}^xέ`dz)E@fO85=lnS)S[ +9cϽkI'yWN:8;=l9IQ5dzK~7XZldr{'bIe%ɱm1pR[;ן}MDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@Եb"""""""""""""""""""DzEL{(*`V]>V:r;#29{tbZ1A$61xZ1DtA"məŰ{h3~__Uz{((=DF]Y bƶmv Wޘ9Ҩ$;lPA;silRICr=ws1׵b"""""""""""""""""""""""""""""xD}-ϷUH:c|ӞyL]^&=2i|uɜx}-ulCO`yO>-IC/b)ge<Ǘ+(F}'W VGEa-@{<}r_:|LuKHR[oiA{#Ǥ5y:D@ܼ.nG'x%h\7#־%un=f IlJ_W1#؟xnJ&ÊBckܔ4qVGS_p@UyÔM|K&n[C%ejS_3sEX>sЛ6Un??ƀ$y 1h gA_ +ߺv8:>/^\q!O FA$*;z8kҌV5s~QRtu.JfTIWPAtzͳz6~zErj{oq=Z_NCQB+s0ߗ|Ux9,) 銆a"r6 ͛aXm=;/Ң|d 9s,Jh#ND}];>ҎԐ8fo +hڐ9*BOzk;uƆ:i$ TO=:]ggTھPM"q9ǧxeˁ7PzuzT|Z1y˭\Z秹P9O1'Cec[""Hz5(R;ħ~nHǶAL%fxӔ'h RN8чm'nS=ʪ]ەzgd#&lսeU;!zqȺRt晶ե۲'sp۲tr/Ϩ-g]ƲlBjiѹ>}N_E}d>K]C#ۓ}3<*EGOVЇa [4Ca#9%,ٗvAueUcȪiuwű4_cAQOLڧ+ 3!H#3qG| u`"zmΏN㬖.0 6GSj:SR5V,|K-|RrqoI1Ў_FA]a0%ZvgH|jjt[svsEIsb\i,ۧO.zu<yX%u5NY<:$p4m@'=|%;+}c=y{e+&OmW/J]kGӏR+0*{^·Ow<IϏH> __,kn3r;S^%U~;+z-9YC\\iD HZ%CEbUCT,ভw-ʻSԎRd |͏Mc- btCѵb""""""""""""""""""""""""""""$~òx}:8 pl*;|ՓpQV<ߕу#|mePuf5Cá|j'Oɯ*ӣNʟS~S;ug 3]R.'7ӷś@o y0FQEͯb@F:^V :7G>nmNKڭƏ:9h9Ym̭mݴ4}}drY^}#΄{7 ?L[TLu{bY90"!}tS@}trT FS1jBi<:GM`~k11OH~2N&58&˫m%6!ݰ4qщe3ssۢ"~Ϝ*[ؙ%{o`^=u΍L=Op< TcFKp!ð¦Tu{j|kr,޶~vMɠ(P:kZ7r! MCO^O[:oWdo<|SR]l=٘̒Lj5ҵb""""""""""""""""""""""""""""`O9镃aуSs̚ n{ +z5P311z.+Cvqzh.Y$Y7q#q̃W,ǹL _3יl3 QxL] +2y$S,Sy/c׮:9S&5$T-LĐS}έn7r?[ +BXu;:؂$71j6~>m܌[d^Z`I't_#$欬êˬ訌(ٜ\W6 : Ɏm +yuN[WaEmw6i̯=<7aD98>E@Qݙ*IFdqN<[].MkZ/]`7z""b7392LrO;rPOa9qDuBן6%2<Z:*l(9F*\ W(T{ܓn|bҌT92s/}\ځ(>0݁r񩹆#\Non7qG0ۏK=5kH!; 9oƤ5);!K] k>c:E%X6 ]Ԑֵb"""""""""""""""""""y?ؠuWSŘ9WۜUT +d9'˦4mkގ8e="Ú7q\;td]kaCo)S܁v8 \,ĩ*zsRxxtYg.U˿tbZ7C('լM{%Q{?c +ΜG*&#ЂtOčAW𬼪?$eU.+%q\lbc$0$F{"ȲӀκr֏ўꚖTMTI쟞F, u:6|<')8 ⩷W@Od=gbQ+\j1w`!vp̌4=z2'dgq=̹Jx&RFg3;e.Ȳ Y룰lܛzGSE-A"EIґn͗FrxmbPC1;tw.'NQQ҇[s (\Zzl:`?K/p!] | n<ڰ+hZb?oY4/5c( nKZ*)k{BhH+򜾨Gwky\πmI>Lz{v.v{*luZRWG^$}'O7;'r井 s.f{^]ł;'{P_l1*ApcsO!ā=5q[g7\fp=`'ytYҴUG2y`f #by?Ejᾼfu֥@ +$l4a\fQǶ RyyW\up̗Ģe5qegMmmmԵx-5* O;:ŧ7˳ڸ q,e-.ojvs +yW ʙmr]P-Q*z;i ~Ea+]emvK 6:wCl#g/#>c]W܅UF)'Sr6|Z6ey"mYUn[n=n_{K޺^gW[8SRw_]k]'g ˷2ܢ|4XI'1#ƯY'Pg'2@_X}fn|:v"o N#+.+{O+~SWr-F7UF`O0m? (dVXK)(Ђ4r{4o9E^muS盧>p-jC[}_7'˟%CmzZ:ݜ9|S+US⫌w]vyg|{/  :/SjY]u>L:!i6UlX1:{ +Tuy\ lH{i8m6=-~VC«3f:nC x+؃羲&/^ٛ be9޽do&NN&g7R05xa`ОoIB9_9pir%F ?O @蓭!ab]1wo*ff֖s\U9믌eq&ֵRK(M76?nݑ~-wYyW;yt$x2ĬJQꄖ +l G1$otY޹K̤s#e>D؉18Fm;*14WYV 9>L;)z?jAZ{ t\G W l;u]~gC=jβb"" ׵b"""""""""""""""""""Gq~PW>uS}Bo9p8E^8`Z 4'C'zFZ@R77WE"HH=-~yQ_ƥ~uVT[5xF7 !m[tmkjA?x >%Zk{wc?FCa%v ~Ȇb7,V4A _Dr_ jmAezkSz5-KU٫RV~2Zh«>vcӑp&-&ymDʗ m~q̪˵Gu9Xuϛ=·53ހ΃Zֹ5g#|Gx]v=EKOrC1u>6%)[P]H$|Ig7b#պnk;9<7'K*cUGh-//-y~`gE#T-^^7y=O\KѬ/g>Z5B5x`įBf=N'ĸ>/,+:tó{$uQ('òaáΪZ+ZB +`@'A_?%zgf449A{זؾaa¡%+Ҥdo/*.I&,<ImC?hVQQL,%N޵tapCrY.ybf=OIgVะ,[vn=+,+FUu%vwp8zsCWU-ks-}9UXhzI?&ZFv:G1i9(1f}sNvg&Wz;{`Hr(f(:ȞJkR<,O9P*v=(:;̞ rNP0\o@y]Ϛ}¢qƭ$33Iohzy>5.mrǵ&mZ؊ʻ?&ūUG`a>2C+)  ac3 K** %Jj>#A}tӴ[%c6bl@*rW@tv;W&=xbWCy'Enm: t;1{y>dILmT*#:v@ ͘<.Y:9{I2 +,ma[l/(?,=f%T;gc$ɟjbîՕa[NPl$=N+3I +|9?$8 ŶY΄r'<7І U~/IS̠evFmBTPzLTBVm:څ޵}*_ZWy&gw$hOR= +9ֹ(T3ʧV'kY`"xdҭFm=Ghy u;?t<bb0RWdCԣr̿0w9akz]kY~M-[Kݏ1=O}>f eKk,kX NAbaA;LZ,EnG@; m(|F| +q Pl؃;^lxٖ:*z7!yBlȭS,97z?1j W|AgM>< W4>n1;;N*,WvraϽ=öj7.3) r解uז6q|R-p;h4ևN}qòjTCk$OGNj˲yHVmYѫHzII1lU>-ػvևIеb"""""""""""""""""""pq'1+!y릵ށg=6|7pȫ" : Ʃu=.z\rd: 4)Pwffl79nyxO@+u[f@?!%k&r΋EN#)麚֧qc0g]r[~Gלn7AP(̡[0keY{Pwߦ&i2+[VPGb2*H>PqYCbORBK .+Ȩ,Eu: |HH8ҟkR(nVc`?5 j۽)֊Q;=+_^BT3x~٭V+שCQ:oB}_ca27Pk ;;#}!1)*acKq9xc[U-ɰg]t^(}s(m~߸n731DћeJ+fo]BH3-yؕVT=lX+#{:~85y[\A M5:w313]9kp1S: M*LFhE`ȬTu +[?$f6#s̲ @ u{>]'Fb9DD@ѵb"""""""""""""""""""yLFC^})\律C>'q ;lqV"P[ט2Hdwȷ?qlk +9TjyloDoة8g1vY(ʽ 2jZ+eĞ6ǖ7Qݒђ횴Dވ95a mɬ>YZv/֪*P'@ uO_7y9q^#rj5|9Vٙy\^%O~Ճu[2Z][ {#Kod>dq[;,3q6֤9k[[g[iJ6)Ke_ɋ`ZmeubKK}L5oᘙkdBHx),J] lO3^5ǿ?"rdcXlѢu|J `#EVֶYf#%z׷Q5}~l5ujY}NT(:O[rsx)!L|5^ҕ^{r28vE&_ Z`#jA~㾺>vcq;8xKL\Zԥkc72oZLȯh_"!s.@>\hOvu?o[;ͻ7 f.U~v2):& ҸDlr{BnG\lFbkV郗Ȇ־2Žj_/)3qNE5zB\Y̻ U92sӓm5w-uk UsNjFó+[X,;")f~e h{8 | 63Q5LW] ob1.BߕO|7'S5'4u>I֯\]OX@˸',]uk@XQbJvrf,K;Uf ZCN* l;Ip跅ҿ9V};yGz -h;*EBhȾ.WbfSz^t/F,eI9^.~5fڠօy~:>R&LڻՔ؂4DX2a}w~';s)jgGyg&? [jO)G̦Vo1ּj򭦖Jl^m̧A=^^ZxNן^֏} V[xjQYܤ`zh|gEӟUTeV vjUKeytɺrUj<̅71A$r53Yk-OYýZ]UwzeqG(Bp^S7=e372 o{V[ +阃7%xNv[EU3; x91oeSO!RMJ9z{D6blƨ%Y{1/u ̠}MBvD1Ɖk>ۛ1E͓͢ZuwcO琳eksvM.5`6eP; J혟Z?$ίՓQ%,Eu:"kS~>q8G zAJY!W)FIBxvuLZbZ"TignR7Ffql{%M1U/IVuV(p=XڃDz`4\nnױUKy{Sщ]q.sw΋QvyC'YCwmj0z-,>r8YeU.;j*Z-Gr&mXG@Pk Ƚg㜪9]-RcH)#Elնձ«i#*JH֏ϾmkTE5v=XtOçsT0ŢV,v` MXE[HUXrg^c1̺6_#zA4:NkZ9`<;Nղd,]FiXU:iQt4:{!gVwݏu?:rU 6@Б|)L. bn`]hh?VkxkTSN_ +s-c368*+%o\Ԁ̏G̫0[j=IȁU //)yFrx=y)ZS0 O)͓"l|;P2XW*+ɢs'ѺW[B^I*P冘`Xt$kƦզ3V +tzA$"'.lMYxX4;v1ÿ#"ՙ *9[u6AjT+9vyuЕђ4Pխu*P;Y\nmzle_mG`C:#oTYv-SI5bANmXPԭ£$@*FX>P{). P:KjVYI#s"ʩ>gql_T(JCr󓪡Nn%OgfUJBrlN+=qkn#YPC(ұ!Fʎ}=Ϸ8ko;ayy ƁЙ8bX_3/(@ ޔc.P*7@V|apZm5X5($ؓ:q˩C#VhWA[]`TuNv_dضl>Tƴ̕(Onp7 l) J͖ը^`%w]oCz'd*|zjTYm1,FԆA'gF/UŹEgh^ziC%љs*jG[d 6=/:WiU/Rzos<-),pƯ @|z?YkWbn`ĎwhP?(3XIuV}=>s* zǬw[nnnZ^m!ز5$l !59 ]m5H:oA?dE~҅PcPyy ):u'0QbQ dhnHȋƾ4_>3bAn޷6Z7%+8Eh=Wv5]N5l^Vm=lՏfUm;Λց:nWN^:xAv7kH6NV`u׶N j!I.H` o};kODDDӵb"""""""""""""""""""i˯ӤE,N|R}sr2Ƞ69 ^_4NZcF?Xt`Fq$jq +V ѕe?FLDDD:ŵC!  ϨDDDDDDDDDDDDDƦb"""&531FDD@Եb"""""""""""""""""""AzRᛇkw0p^ch:I.(Mx Qiw)?(4=V-uS͜$`>-.CrXN3óp]mn@e> -df/˧>MZcJk w?_pn=~vvN-yT1*199Wt=~v%WdiSE^/m|G=aqV\,!Iv ˯lkH:pN[ͲDE`s9u˪5zHİ}h0#Sʯ5x(*:{興յb"""""""""""""""""""EzGeR||U*HESK aVG?z=䭕Ԁ+eToe1s-'ٴ-h7oaxnL*=i̮> aۉc2_R!5'rвP} 3 u6aZ5ElF*4e|đĠV]՘$^Sq:'o>O(Ǭ+5uضbv TrSXxEm96j2O( [cc^{˅9[3lws>'=gUD LDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDֵb"""""""""""""""""""baQPi@'IPDl|cZ53LDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD׵b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""b6#b7ޣqs11lF3ѵb""""""""""""""""""""""""""""""""""""""""""E#FZm*c^@OJ*"VF YҰ .'߹N[*MT@S}o{>GOpqaU7j 46>g;bdUJcWP/U :IX֭br1PYv^ww3)%RAkz?i8YSԶOAʗik̼@ 9˽oFUq] +Mj$9T>%zcѯPas`PבC2|c{-?p\}ߟHYeXTM:6:M0d_ 쌐25Fm2u0sk|CsS.'Fvoez \[w\Ǩo /(׼Q^`>sj P:̻|$|b.Łj=4>|@[{vhLqZHv(e9x~zݒy ++cYv@viH\lEL&JElmսF_η:VKvFz 23}b dʾ}I#zGqZíәO8bO1]hcdDDDDDDDҵb""""""""""""""""""""""""""ikV4_o qk+Tź]WX𛗨':;))3>9j^Zo3mAXT 잛>q!MU[ῇ]ٹ 6k"""""jwjӝU]!O2g[k]J.M9p\-od>`jJWZԡh::ʥ]xvCuq8-RðueusqJ.%wlk/V$GĒS36ٝ]_Ei`c==礟|*+Z%%bb{~뮵B>An7e&?ًr^ϐuv@}uvz=M w7;28JenU [RNUQVNBbTXt}F́y\I貭jRh2Ty6=Jppmn,Am,va7qyl6d;q,R P@[{;9Xup;'q\Rw>;?Փ^mmJ?9ӋX6g3Vn~# Z~7ZxԒ9j];]b6W{#ͺq0B/(.|bzɟ̍UhdqDX72 $7&sadېRi"PPt'A؃yZۇ ;;) +ݎ&5}J<{Չ++ ٱ{TB\ބnf"""&7²8b:|uHV,9H;#TJc: +UΉ:˕tryF7DNn#CdR}3b ~-Mo*E:=64crD8泖jZuf glDԘ%b S46~lDMUdsX+J Ͳ/ݓrД$ #ZbJMثn;gJi:BkVFnb@ *:MYg^e;tB`4'D̎^mm!WAtguJU@cSoOrjͭkj{ӛu3Եb""""""""""""""""""""""'˱|̴c]3VȅGIuOF8ՁnVVI"[ZKPs]cgK߮L<\We {y봊*ӗAd&H G1G"qqUX'/@:ܶ0bI%OcoE{3b&8s}:0m9[}m.7c[|Wt)V,q)~@i$q_5M~ٔ u')_7-_c[o_=SҤZq2v"rjX$u<>-r|jT-/vozhhNjRVr1WNE|H;tUլP y>czu<*1xJqkVgGm~;nroDx`u ?E`67=] Cç|ۇt]E]Mw>#z,Of7KQ+E@MMpŲֳ"+j$I*4@#@OS{XCʖu$wq_ϰf*!o\e'۲,a]TX@%u7Gp/q2rk M{,ǔ*{r@ydA;h\dd'`o W_[|);FV8ayLW]N+赼G"ugVd^{,<o;8\^K)m uso`ȿ9] *N@@mcG=⸵^aͿ>r,-؀T3CHNXD?cx\/-N--JG3ſ(+7Ql߉ZkZ-T՝Ū|Jl +k5Q,>:k*}cUZߕ(߁[Q zW^⿔+j^⿔P}%xgks 5գ]OazԍnKMyF9jRڨpIa;dVwx\F-cnCS|وwbu|sbۑ`b|kC*h~Ff'w-Ee$fus"o}: ;/ѻy* R b|d.;EQ+"l]kC^ N+TyaPj]S( 0:I>SDǿwkbOo~ןXLX̭VpAQ$Ӭf 1I'y/^޹}w=wb +yG@yeYӁ+YܝkJ!&[lR|JSkw:wq.UPװՆVqAnE_|&Oɱk*0b\"/D,IƄ ~NfvuUVl[  ]}/,8,ir-[kobYMt=MmlwDg&w$*IlS7]}BVJ=w,ﬔ[F5U2]),g]λθ~Mzh[Qh>-E_@gA#Nw"Ui]`6@[^6 4U 1EǼ$DDDDDDDDDD@׵b""""""""""""""""""""""""""$W;#a669d9yC#RFU…'\ܣ[?͑cݙu42[ f-܀v|?yWO^vyӟIZ4CDDDDDDDDDDf5V+yPOϡJ +ZֽڙD@}DDDDDDDDDDDеb""""""""""""""""""""""""""""""""""""""""hD.{۷s5p'_ī.ʶ0 o]tL숈2}Rg#Ob՗P`.a>#cE衋xiϠ=FE "Olp];F*~6iVuGc(uz/aQh$'1%P) Nv޺t07;WcU .ˢg̞?=ߜ]X0mf,/.-@O:l\TK+J?/k6r^m1 d|bԶ=wUut6}jr r+ +Gb'̔WuH1iu.B2[:0~:Mt;&WcRS}A||zkP?Odۦ7LnfGq> O+=TWNe<QubZfǰ} ?RC9Ɔ{d r޴(tOPOQI2,ȹǖ* [޿L$ ob|XZaS`uskFIVHarU~~s|y,8Pw,ʼn;]MY/.XSblPd- s ;YS-UtG#t dZ/= Q>?SbZOYvIej 1pr5j]8p5$=8LҀ"\fyL SSuo +ySͲGvp'ҵRU[zaB sm]:tTu/Qʹ )eoevNIՓ]+St1x~Oߥ? 7Ul%U]i}Fn&VCFQ +}a|bf`ks 7QwӧU<Ξƽl̫J) +P'_4uɌ6Cb9F{ݤ N'VM{ bfz,XBCRJo)7+kתH^$ؑkꦠ +EFݑ;}Ό<1m<ō>{ FS:}Z[߻R/Qrx閣!U1So9XYZViN nzϼ\vc~O<$Gߵ#}1xeWv uyڃ0j՟/22,:%[rǯ)yFI-ʭJ%ܜծy(cԶ'A8+u`KojOPH#`胣6%.~C FGGžz)@I@:# ɛʥ !o}gգ+ 6Zd*l%@~sc⯪pnU[ȹP(/cEٹzc]XƸ-6"O N$ Q77;"p/4VPr/'䦼K,Pzi4wv>Y;bOON2pg$bYg(AbYt5oƦb""""" Եb""""""""""""""""""""""""""""""""""""""""Eq qB68wbu=#xlN/qkJm󢓾#}Y/*HPkձ߻8󝆊ˋ +`4C^t(B#6Tͯ͡vq*,TsgvImcBQ:相WU]zOI&mçy)+_r* ""&qd]ϽB(lfg$n^r[j׶j*ͱ1ى$'l%qp&M!bo>3a9Ol6p[Pb:'cc: k4.;$gXwj?/NUb{#e5HWX/@|ՍV?7ͶP>FMCԖXAq[ vn0I?+XI۱B +/HmWpӨaU@vյb""""""""""""""""""""""""""""""""""""""""EAB;[d_a@'y6bԉ l-̎$؈FAQ|c1R}NFy +WZVrUT<yIXf]Fhž}X`` 2;{o_[`ܼGSJ2V"""BE~[b"T^[7$l߻RZqZܽ)""""""""""" ֵb""""""""""""""""""""""""""""""""""""""""|[ut/5=@tόr;X-ݿ%IlsY'vlrQ?%^+u8ڝ*c` *zwdҶeAlDZI9𖫳(`J67>7?/b,9y]_AUNxԔ+Pv~5ԁEYe(l*(3⻒`tNA(3dk-j}֪C0孉[:N~b&Wk tW{v3/8]J-baڃ:#~{^̗Nd;9yl_<嫋]c|Q:|jį<'6$oG˳(V)kUrͯA!>lK:zR,&q3Y޷hP|73/*WF@!s`4Iܚѵb"""""""""""""""""""""""""""""""""""""'/LJ5as]VqVm5#*ONUx~jבAlk$Ƶ ܬRS!jP =avJ!o)V8絳Ơ:nhiTXB7F/tru"l <ۤī u UBGGn- +\dUZ']A#&*H65}Лv6iC}IaNn^e a|<& 8*V + ן@;ܻ|,g{+V};/O-ruMcGvXֽի=fGUb T ͪµavoz99>9Dkv-Ƕ2/\poɰrw;nq*o̿ą]WԔV:ԩm(dJ'|i5^c[]jF  '&vuK.ou2q\X2F::z6[I*9@|GMz<ћS,mFAjO#nFwz9¸}v=[rOh㾻3Ӯ],U|D 6G{Ďw2 +u#du`zDG",Q\bVԹsI=t<#jo^cZVau|Ҹtx@@>_dC[; xFXLG^ՏW[UjGRlzDя±qljUyv]tPu:"""""" ҵb"""""""""""""""""""""""""""""""""""""'ֶt`7 X]5H1v5"SaBTu:׾hZ/$=җ%9yщ^0#˼ɩxeu5RfyYXoq*O"2=9 +` ܨG)m6'/aoLZ8|簂*\o^jɧe֕F >T(fmԙp*m9 -a&v7쓽m_ca$oIO1b7u8U 2II=W$Ҡ3*~饓mUkZ(nfvրө9C\#KC K ӷ,k^׵.Wboῌe f"'&ۓg6kCZ֫Tw:F^VNFiáZl +7^5q4-E[1m],}tA$8X.Ǻԩ"mo|Edu8j*<-^__ưV>;'*>gJs6z3*Ȭ#rtY3tbt=Y,F/t|g/sȜoF0tdڧ1`;1::SYk:r3(nA(׮Sjx&f>.H3 0,T%$o]ztKDׂ_b= +ݳ:xZ_w#vFu7Sv&E,IfcOv'C7jf'>ng G,bhQy1ӵb""""""""""""""""""""""""""""""""""""""""Gq7d:3@ng$o87e&NE+`V4O(:z$E73C1EU]h%MH߸3޾%5࿉ZXac;0bI}NkSxE5VMXl/f::M9|F@J$d|;MAq]ȴ*NG,Pzkc>P +ח=!{v9*4ȞHrO߾A?Vslxñ=rlFor;Hq02.v)Y`EZ1=&W GmER@PN>ie: { ,⫍~+5.w,%Q2z^UxZ°ylBz3hl.z|&xW( +u(I::I(SDbDA]'Q>Dnn^eSU{J_!6;1m>\!ŔoŜ{1g#@#r70$yLJuGs*b%C3X tzEj֌2Ua]#FOI1Kx&FZtM/1egz8C/P@#=gW)^[x'Z! Ij%g*kqS6ag^S^W8V]UԠw'\Jv̎J#P?qeL&m^@{ ?^Ӳ" 6D\XUA,;L6 +9YJ^}9Ǥmm+;YI"e6t-1,X N no F?l>jSP\nC-+n}_Uk8Nn]$?w^oeׯc~\m୙mhMV%wYP/HB:~\81X-+cg/2\RJJ؝㷣[簗6%Poކb5f!olAyH+k0ȼ̖RzZp=F7eU,.7_Ց&5SۦGEqs-Ӣۛ2x&);TTZY\ϸu='c|Rʁ):oyϛ$¥K*Fq_/xƾ2N(e uBa~V+ ͠`uO~Qy./ı+ύ_àq3W[?3xҐ9INVNE\ȣ7]`uܝه(vyC({8 Xސeڕ#7XVkkG9U2ASCen.5j%+OT>/Mo2R0%\keyc&,K6Խ2PA7WE +qm6؏r.Ǵu9̹mLkkTvt(̩*ʼRX()+^F;mw\߆Mvc˫S:鳾;8Ie`,ض Nɮg̀Jے9YuaVmS'@y'^/1'sG6iG(! ˦z^_X\gAA'Cw4q>*chܨ彆jp]I);6,eXfs=c՛=:ڨ: 7靉 -6|3lV¤R7@=Ȝ  6gx,4gv\՗|>J<[^:\g>4G3!F6>숲x~)Eе2)~ecD'}f[]eVE9O!kelGkị 0;+QK5TVU,(enRGG"s8NqCWn^Ryvq$!jUdN~V#,WzQyOc8oֲ2-Y^wZwimN9eU`RF~v:;. oz%IP5Em얪{ +U k5ԏ9!>aeQ}~9*ܕyjFgoˬN2>Gu}tNH;er^!"*j*FzG[ŐEpx+ 8*?g&r^11ӈ,2MxMRk}{?q壹J-lE zV1~M*]y@LAd kOkpo{ij?RKfgS%ʻz-蠙VetW5ȃ>;bkc;mk`H܃L[{AquEWX2=_4|*79dqJ P枊32'O_Hģx㔫Rv)NǸ{ub& +Mab5c8>Wκܬ#[4<G~ыJbq%<-eQֹG[*c8zUk1RTr٩ +U@ 3`U,_*ĝggjij!v[} |;Z_"W]BU +̓xYI+(ͣzG2Zuw&]YV7>%dsV`pպ8q&8-h+eawmwg׸v$""""" ѵb"""""""""""""""""""&5n5|Sh-K̇cc9w OXJ/[A ݀^cQ+Q@F v7|ff5@1s^FE O5!@nӴ8%<)j;1b=~NBcQgxR)k,NbmI*)\zִO@4:[1Q``=WEH#CgZ쎽&uDkq#q˸&DrTl#[F6:T'Ң*aLL))鳡- +sck[w;$!N7FSVFGNN:-̵5>A@=nv m֐mmo7~gs~>"㽮 &$P>@DDDDDDDҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb""""""""""""""""""""""""&WTقgm 731mSw&^a'047״賅td54؊ k31+  1:$>}ī*B {ROmDeK.2_]Ͷt`nU~E ^y\DH+n{6DRhKo\Kk]Mnn~E!!=ฮ=ͳ9g!WW#Ջ\fA`dW|-u૚Ӧ2߲x1^9*+ + ^oGy>b9]]C'jvNuӐHV[̺,N9{wtD,"'iUEϘNn ,"kK˳cq451/flfO9=zmrb$WôY\r*NPySu&ȑdEf I]H:+JG3f>W{mĭ2 >]# K۽. '~>8@q9ֳE +ض)=WGH?@ba/OuXlKk~Eۓe+pzTDdFξR^wмT|9Zv%rLLk^s#H\3/,jZ:֌|kC_/^'S/5T#mO^[xS*Uv0D~C<~O knpZWR&bBGVvmVaԾ}2`g`z5KR *(P>hN.f cNml;t?bHผ[BRXU{.!wDlj!=ִ&F{̖*[+b$뱟/^)SYfGSUi?}1zOXIwd v45mXa^^wb{7s7>pX ?'!V5l MDvN +&-9 C3#s6r\tߺmybYI: 9ϋVe+G39s7`~5J9U@,WTl#1}Q ִ 5âsz#{tDDDDO9W bc.:1{;^Wݲk"V:.nsDDDD)G|p+9}kg@΂uXTޗ&Q(`W8N@;5JͶ5a/zvɮ҂zG0%>h|ɸ!g8wV-u@SҀ4{2d LDDDDDDDDD@ӵb""""""""""""""""""""""""""""""""&"f""""`n}w3>YYԵb""""""""""""""""""""""""""""""""&"f"`:8oс}u-m#36_<|GYf&XcxJYߕ:+#b'e6obƩ]{֋wd}zOAàd*Ou;Ȉ/t,;*v/aT v}DMwWu@HblOi𹔵b0,;yw7fS-72MrK-V#:`tDDDDnUT2-]P3XrgJVd:` S v˦kOn}r\6{~]J#VJԎhDOE\21e$\Sǯյb""""""""""""""""""""""""""""""""&"f"`;nEgJ:pAsrtf`7腞glEJ@zh{Ս}צ(_lH(={TOayUX!#@Rs}{ +i"ƭnȌfCzK2f[CAE4$DO?麩v>G'[yø_Ū˜vŇӫ$1^ +joȴ n +V 0:L@ IoF1qicZdU^c:%"""'U['&wҵo{ј7T8EZ1ҐknnøUM#8 +w:cJ.S=&%EhNzzMW#Ht8 +V] I30X1ֵb""""""""""""""""""""""""""""""""'.O`R{o (G(e>br + +_~{:YÆ +ur3,fxJj}cFzXjFpy 6~Y]g M;SIW$g{LeHJ]* |qp>1wpY+2Ȼg}־qsr>wT7,*YN]OMmjx.k)FLT;(IśDkotgZU %U u=Oi=%ź쫙,+ ש޾3Hh qZeo7ґH`Ǡ :(>-em\s뺒7t/Zٮ`#c}Gc򉇡,efU%NԐ =VR6t6@ " +U =q˳ +J*Ƞ-{!@}Y9yTXO*uzoBug;AYpUyvBD a"xƶk-('V٣ >[ljNTކ'WU$f@T:+)=-ZH=:v>|.,*9m`5lJ)v|}xjN;{3s3jrVWȆby;H_fPn:#ca p5~-ݱc͹p^vOr|\C'Ymf'N'*)=هMk]Z\ZW6XX@sDDDDDDDDDDDDD@׵b""""""""""""""""""""""""""""""""'mV4(^e;-?I:*g]uO p𨰾Fmcԧ'?S V)O J,\{tkbuu-/dB}6M;}{'šqi숪<(e <^ʓ9}<;bRL!n0nRfFqq,5VNH+k:_C#jFݯs8 l @ovUxk7 ǣ}4[mc|0>C~d6o!=Y#%71Mu4zq/Vq]^-yl(:꣨5fc[VzLc +Yp6rUE޺+bQ0t_f8Z7IqeL#gp܇M>G//5ŠW۞tA a +5JwFPOȧg{ގY_/:RG=D4g{ bk#9xg*9 *n8;T9+Ys67sF]ؕeNSXTyI:vל /O5ð~NJ1,\V +UYj,P4DF ɻ۔8ꮦodcG)>+.ɺO@W_M鯉"""""""""""""еb"""""""""""""""""""""""""""""""""""D_^Ff~]Ե5G@Eau'}efz=N7*XYVA.hQ4[]؉R2+X'?+ kPH|d8dl-M4ƚz`53;,^)bpbUyt+^ ^B^~ca:00 I;ffcv~$)5[ +V|ڟ7" `Y{C^2R""DE퐵ZѝJ( i龝>( V.UHF,TW̯LDDDDH~7ƭ%Z|ܥ +w-|prC rbU%bBz_p |e5 +kT^ʡG@5>""""""""""""""ѵb"""""""""""""""""""""""""""""""""""@2|v5V޶06oRn p+Ȳ23sQ0 ! +O^JQr33:R1p ;$)#ĩUx Vs  y#uT1j=41kXw6$28E62& z: 5zKQ >!C쁶oٻ ؑ/d݄*Y{ #P,I76^""$,QaF'"'W`VWەJwko]u*sۈdZUVjO31$ :IxŸ~-A\.dc˾U룣:? !¸[ӑ~nFRkDZ o$lV`HG8 =fXڃ''DDDDDDDDDDDDDDD@ҵb"""""""""""""""""""""""""""""""""""&ek+G*} !=D GakT`݄yKBǮQ^MYam0d9`;B|LlV<*O#oAu7Uk"d JX*:#^s *ymW!XwW]kv `*X>OqoO-y$߁Zc[Ul)s9WX2=fK+8v%@f +TyGM|3k+ݥPG*]+|I%fA@+.ƥo]owS!2e#`4AnBc5cJukFm~s e l`RW˧I9pW/2+w jA 6vP*b:\g+k#}mg]F-\ +;0EL\sX?LyC>6J^;`Uded&G興еb"""""""""""""""""""""""""""""""""""yJ="v ={)]*ABN#~]gs">xeǕ~~U&z-ϋLtkTlC?98&q E#G{[׿[ѵb"""""""""""""""""""""""""""""""""""$o/qhE!m+TMN_wz޺m l"7+9Na 0؟]('[b9ϙvG5kMJkvo*CuPlK|Q.}w D:,הb] q9pOSdԏ`b]/9,6UUQrF60t߾wp-Wcn$˭1 Ÿ<&m5֣`@v~/Hsrq+[A]YF{k}ĕ*»6hC'0{3Pw2s)[&`HNa@{m媫UxDKx@˯sC)k[Z[`9O±rXs>:;E]}N|n-fO8ܖcNXjNIѼ.ξe^M[=zZ+~k) 5 -֣y=jyǘsvmٹ:N >m̢[,EOf +tAˤVm6/ /9uާ9'=nze!N!3x#ƽ,QIQpyPv;ImLZ! NMu%j.ݢ!(GvS۸&G?<ɺ!Z٪M.mo>sSSob6cϦ;;>쌔TV!谵|*$ ޹U;WR{P~8uV [p<"yAw8x6NFFjU(mFʐVI[E eJ?N>3sq+G÷1뭟`OA5q ò~QcN1S4pƪP*R|LN[hS:"$ll|z5jY{`X|n/zFYq+@.ʆG1% StwvFWȣ2ZZL% ; ݽrB/O[0~-7m(7ˮ;n˧K/39=-k9f}ȫXHݘm0RFdq +R-cZmf'@>3oB)VEK1 +y,dחrJ'˺֤Ip 7O-Nϼ֪-yǘs}V%8}|/ܛwZ:u>$! IW:zq< `Fs"BIpXv֎>FΘֵb"""""""""""""""""""`p>g`l_$382bfܔ݌߸ykXX2Z=q5S$vS!1=׍s!ۦHO=z'߷I*xÉ ^j܍~O7g|[,vtB.g/e ʭlnoz )^=:OаYTvnHzcp*hcƬ +WXS^]G"PWJW'֗˧n,D$w5h<m +AdЧuu%zBi"p̋ hmGIWdaԋf>w#-kͺod7HЛ> ݉-UHG[c~8sb\qgDzŀ%kG~R_c13@QV׻}uʢ|L:Z;JhJ*&Ͱ5ho6dN#ʣd-kc*뾗MݻO_,WZҽSaGxSFe?LOob{ߣ>YTǔ떲7?l'/ n!P}T.҄ޙͶy؝up|u-U6̬u YlB]^} #ypji#uk1mt:. V\~1KZ_JO/=<95zNTKZe>}#W/ q;aP}B^Q߶ӏ'qj23Ⱦ/W[;;sQ@ZŹK 5{e˲7q*#!2*D(bBv~]1pl+0KVYOMuܜɕl3hu>dž=Tq|t]aJ? 5b=׻yم1QexZN^U GϻfJp1)hr8}+Ϳ𬫱άZG K"Rnf-N 'ՕVbxw u:#cc ñnjԲ )a23Wi`]օ}wFpׇW_w"zW ;?ktnnbb&<Ye՚OhNr@(="S\c>AUֆxl1׵b"""""""""""""""""""a8*F=AéedġJA :M3\co^|s}u%**Oj׼3J'ҩE!~A4>Q_M#b*: zӯk"x3ůk%md}U?I|^)7pYW ¡ +WR`V +HH# +=E@ )E v@8wYegZSGȎa}R^|[J^,PF# +Җǩ>Ze #l[| +2lv5!~(ۯ~S|N_1ZPsJmEE?-GT)xV-W6BRc {=<|Cqn:+N$ΏS<=4crEUuud`kjG+R >b8`h ]=:vՙkɮQU-t<]kgynw* ӴJkU$ yК[bMfA9޻)Fa1PONrbm^ QYN";=5f~cx৅ˮNPS_$7ëT5׾M\4S#cwNx&jnvbkRIf' EtFO[|²ֹ.L;u؟O,(͏Q(BkRTltזjmΤbn)gŵG~enb[z)3|М?-(oD(oyJqVP私cTŤp\ñ:6p\WvO,/cX#SYm(JwyEƫTTvhvֹG>7OEJPD%hG`< E5tVsP@̧ Ĭ8Z*^~y# kljJ!%TօT hnob+)ԀWn}WZԡQ@@|]kPE +=h~yJ1wTvyT.] _ Ŧ(_Cu Θеb"""""""""""""""""""bsd]Bk@T0M}:7RqI8NT'}qqK6*$qFqn7iȲSSovʇa7aT:ۑ[x6ȪdKrTۗoߺJn#72s+jշ,u$OopfrqN%giMw); HM{: N_F/^sI/73Bc-3~>ydۋJ\sv! ON}xWf̊lnloq!eQc[BYX3PTHS<ѹ<* '^fs܏zMf56+>S|>yEeq1scΚk.O(]IQ3ѵb"""""""""""""""""""BzG ˎ,fj P}$BG|Av=_SI5/+!B@޺%*19-˔*ʬ_8N +jv +~?tqkkc/Ƚy)(:6>򬶦Z#ZWRA;*yќggrfs0m A&x0HYً(vUqYB|N*%xW# "jE`|geS(eW&{C9ZH`=,G/xG$ +(ړV!V#`v$'K>l-0u8ؙZ }DXժ e{+iXm'<-n#5{tHX]z\[xXҩ;áGLI\OUJ@k+']}9px-tUu] JZW$ϞqjelZ}},zhW`?6z ^!Fk:)aoz:`:Ff^7y&P#] +O&oD`{5׌p/KZdeѵ{Z;cΦm6]{R-nHr:/1 +WmuF=58u7ZMꅬǵZͰYOOk^GwVRնr:}ǬX8][CW9ec7gc¸:q,bOCa]vC;cڵRAla4z0 +ƧDUPI3`VS?ıڌzkװAZowIC#} KeݚvIMkrC; ϢP ;r쟘Hmbսk8Z çB 8^OOs{|yҵb"""""""""""""""""""rpfybYI#g6Gؙt-Vugv۰Y릇a6r3YHmϑѷjb׺^5il ]NF_/ 50eAeרm=@I vUymyUGc6NsK1a~d%,vwv7߬[CphY[l]ݺ0>d9-"o "-d`m#Qcvhhs![N jx 0a@&HQae _7=hm[C``zx[bexݍ8zr$rRog}wۦu`]1ط8X1eP}8ɉ]zb`Gj;k ;;g1oS6z=kc#T|[v]zt;:loY9\螧FE:nB  8[*Ɓ<:|WscY+"\=Ico?ّq* V(ֈDt#sv!JW\Y%ff$ɟ i@7ˮ'???}p3lu0GRU7iާ&xjV$h'='q4Tvé+H h~gs3(6:b]d?ZA:9_Z|569ZN -];M\ 2t օ+2G̻$Ԏk٧_2@m>s+]Pb4Yta"}apl^YL1-VK]q;U{'|uAY3quY|{5Kfg|۝<4qlKqFR` 9Unvp ,G6WHemh H,GBǩ Ǣe|y̽XlOFKSiu4wh=Un@\:Xv`Gb& *R|!([yN sqŬ"TU5޴`X\;#;/%R5|Az%}O[/λ6*bUbn jkT6w*5ǻyFd;wbdx)~BZRܫZfw,4&X@('gw&#bv6 1:>]|2_TdG0x=qټK]=b2|ˍ}]Rh4*כ)/ ^[ULeh/u'@KDDDDHI +׃uR5#-ʤ: IE9ʲg xuZFy@ۿS: +qT9WEEHtMg5<LJygKhA$ywԞ-f/ )==v5믺GE"ځ,`>c~/|LU~k7GuN'Y dfb""""j|9wr#3úғ`SC(;Q,zt>3q?Pd謥X6*@0R: ؝j(V0oC.ڰn}&b""""""""""""׵b"""""""""""""""""""""""""""""rqL\'ZQc=o:+.P  ';ǰ)s,] :31q*Yjo;7eiXIZݷ|;gQH!U6Joxbږ(~;3]'!rlM]麉/.XvyLݍ^IMCB:h 'K=ȬdY :ӿhȷQ_ zo/R>s(:>x닋uBTH: *wKp([rQꥁq7i55zc{*Ñh9UQ%DWemtfϧ<|&PJj7&n!XSj]g3:6~3F/,9+;#jCt6m<>\-F;=b6@3OhyQwuX]ıqWeȬuјzͣ9KQb A;Gf{ѓ1E*$('CڭK:0e#`~y8GQz:a`8ʯ k +]R~z5pE[.ΡXS~=ُČly ^sGxl9Ma_e +s!y ukchUM5̭c"V$zMJLq#ÖuL-Ê݁=O^ia2)^{(޺'r~}X ݜ[mg?P qo;1Q +yW7ŝt]bdd}8 [f1'`oꤏȥr<\my+Z܏1Gc7n|CS[UwP:d"""""""""""" еb""""""""""""""""""""""""""""& WeE;ʾH%K"'w=5pq+zٖ+:Qt{_7)^V 0qʭч~<|ZŴQ;T]@[C7R7֗o"`UC7 r! Q]ՙ\,Ėn}p"r/-<=6k'2F&#ܾ']r˿z﹟Lv>)K(v׻s9|VTxJe@ PN3 +Wc֌]I.Ҏ:mmzú),C9V;ٙY4d߬"*r?+2#ro}B_8~߲7tlz#ʫ[:A9dd=$VHm;+v4({Ƽ.hvheO~n=7"UsQS2e`~$$ +*m1aIPOCOIl Yu5a<٠y4 y5FG/7˽v"?_g֭ y~l|eOWqJMu>PQbwuq +Cp\W b0^ʎPO]'VuI,xw2 t𚱫$䚑xaUuwC}{'~#r9K~~ƺ|8Ú+Z*hN>r^7o-Z+*!]otۏ1qqAWއS_^lv=̡1>߲yN'3bߓlk^-"P2bMwӛ`{Oa +C$;-ycS-ϋjP6tI UQeǮN]S;f;N\^'Fm[z+uF>uDDDDDDDDDDD@ѵb"""""""""""""""""""""""""""""kzmb`Or'>G &{{/&'SiGr,܂Fv,z6v{R :ވ~YRZ]CekU@4-h6N>zd\}8( X(7)ܖ=_9gڻh>*0WPEUހoߡ2kS>xi}N>%ė*w`h*f$gUkbV >]~3GaqϠ&b'TA* #*$e6ˊZנVnf#N|pWUSX*r :ߩsU4 ޔ76DDDִV5@f +]|3d40r P=۟ZIF>FGG A~a[Jj5b +v|ҏΈҵb"""""""""""""""""""""""""""""""""yJ{xn%u exy($oC|̽"Yq½0myo눈׵b"""""""""""""""""""@]j-/HB֎ eweGo3#vPIm\lm'":Co>R>qG`_\ЯR]cW5[܆hPZ6":=Xf +GsPRz|AiפM"ChYOBA<>ʳ*sEΩ] Iz7PuvXCcA@kеb"""""""""""""""""""|[J^,PF G֪ZTǩP?~Wp'bR+jԠҠ Umεn^]뾶<c(q75cцVP~.:1y9ۙT/17DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""""""""""bf"""""""""""""""""""""&711Fb"""""""""ӵb""""""""""""""""""""""""""""y%v&x}clRvHmj`Nw"Jt`@އNN'ŷ%+l :gNDDDDDDDDDDDDD{'C}DDDDDOp ?4NŎk| YjO,?cUS31Zf,$3""""""`O/=|Xd.-h6tEs1>&EvX.'@:HDDDDDDDDDԵb"""""""""""""""""""""""""""czn|K[]IP::&%UҟJvtC6HNSllkY(_'}->D)SC+nbKg'<;ڠJk +\Goa|OIxEUUe$lȧDwbcVVQRN"""""iʯà5I'@:O@y='5آ?%+nZۛt yͼ[pP`= :[3W]sul{QF]ԦB5v(ee ؃Љ2%eXx;սrz2n""""bs 11.,BA=vsx>7^aM؇z!bwnf""clFb"& pjW; Z>!,@0鮚ƖTQQn؍3յb"""""""""""""""""""""hl[Kt{ϕfc:""""bbR#`o|eo¬|eOan5ްij)mt>/)7s6b +sQ(>>ø;Hl;"A6xekw~D8r,|eԪ~'^Bآ_fߐLc]êzq0U* +Cߔ ,z {^^=RʕUuŴf|1;єxf"Qք 0?tF&uE]闺q|L3$<VцՔH;͓FwKdRʺQ̺ߞIwp,'[+ x@$G/cK\J9Suյ糡)bzg*XkNa_4}-qpqW?W]n73n5kT΄-tOf$_}y'ee.]LJ{؞EF3'_膜vIwuIppت1z<tdjȽsK)`k >v)%x%Uy9Wz>}|tae4rؼ^qexp5 +=zY=Y#Ae*b :nܐľ1Csؖ_R6OkuuܬJ{ +yy, c$"" ֵb"""""""""""""""""""bB`@K+! g@9;=䕜KƲ[lw׿^s5nC+b*V ֺ3Ѷ9>`jrcܧt AG'ԁϮ60/,!r.R֖.-{A~^  ԟ-#~QPR?);+̠˴܊SUiU&VYRT"w^ṋ}#kOszrCS{w]Z +ڞfFC`H]V>vk!ؿ15V}MVTIN)Dz](VST;10Pw]@%x~FF@*\ȽvF}]qhb_ZgU?pmBK.=oc*+1=<O#`]ja縵H;n=~C[G0A#@::{'9+*r>32ڇumr:H. cVZJTUY0B:l$(I)ɭe$FPw~uZ۫yuQmQL3Ok^S5Ver=3/d^^=>#(y:ó򲝅%Mznӵ-BOI; TV715Kٽ ާѻoIi*ODݑ}j`9%j +>؞c]) -L@鳩($7K8v`\(tC}{xt%P} {bt+Σ^8󒾉C_PGƻ 31@dzAv%-8%py]Pv O#cx9iRJ={ ]do|my~cI +xm~ׅ@E Ӱ <+}3SXzrI?4;MXT>iH等8rr+/5o6OR#ЉۉUVK66z sH)ni ̕ -2'1/*K6 2mƮ۪5;/4A]=TĊ|q8[Hd`=&KV[9C[ Ϩ7 í=A"x M)Šg>g}Jr޽׾}fp;l:m}әf܇l㧊[ {8 .jLDLrDS#h4pv  ylNAdtמY)׵b"""""""""""""""""""s%QbKJ0Fa̪HԄf2c2 EIm=zp92-݉nS״rK229Yy]B#fGl!6wbI1kriN=[4#`upm{A( + 6lgƢsWRmTs,8q}}5[_D@,v_Jޏg %iY] +!<:cۓKX]j-|_JI =72mSc鏀i<άGL}B ՗ó2m ZyMv/)B}Z/\G63_73;r.ɕ^"bj[N +ZO`U@SNdaїuIfsm|s |Z?u'@xitX,ls%H׿PXS3#ے\l,W+ϰYP{k]g0Pʗ;'iF@7{]%ُ"H1[k-(,:PM;e#r.v-  9C_9րUJ;֤eF}F\w3+@#]AI\kx"TU^lg&kQXe#wtøV? kE]bmgdNZ}o.6c +o~ڝQеb""""""""""""""""""""|k_E|S ji8u•$l>FyMFFyM[X ߙFsk@)""j`0tAB1>]'7[30lˌRD s9ۏmà󒿊 ӈ7Ln~?4nKs',Rݐ۔hG= ɡ>J{_tp^ W %"ʑC;`3 +5!'Ϳa[KwbG6ʏa4~ɴ |g8yxy^0YX]xE+ڑԀ}x#]aS188նӎS`mJJ"7Bzho S l~{魨TP s zҲrHj-޼ODMoEv躆_&ȉ*SIQm{3=y\+:̛wT+P}Pκz-w-2허~C8\f5\vr{*OM]]Yq=U3eAǩf=YvgT( jf"""& mųw ̲ qvDz!2TzK?lv|Jx~ _^ i9~ˑ{|vJ~|10F۴ѵb"""""""""""""""""""""""""""| +6@yriv[>mO*dxfbwI 0{-Uڲ}#f"""yMƯ ͤ3kaU?_.ԎN;׿=JZ6NdJ""""""@zoפ7+d2R^#U&tcpvk%Br*k;n^އY/ZԳzs!xM-ߊXC_|= FkR@u$|UM]+T=qld%FEf*WJ$폖9C;,P9"""""` rrؤØlϦ躏0V5҆Oߔs[ إyhg숈ҵb"""""""""""""""""""""""""""sVmIU=aAl }C"vZe@f!omL#sv u->;m׿'GudcYYk}2<3'=vC l6DDDDP{DDDDDDP{eKrpϠ53#} a[MAKRݗf]+jjEǯi]י;<~ F$oק,ݑ8nN8J+T +{k ǷupJ +@`uVMkuN^Fi̹mN#GT]]aq*7@B1 "$Orj|2.-= +ho2^"""""""""ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""b&b""""""""" Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb"""""""""""""""""""bpp*5 aГ c\:9sj_lu~{\DD[ +A޾Y1``l@:Ϩf:I|UZK ) |""""'=M*ԝ lН>^ԫE.d>"""sq |&.P}^nNaͭ}uzOf~=W3ڢ@߹hV7r\o9,l݄]j0؃vEe,PA#}<>\Y`!I]<>"""""&'8zǪsvb0LLֵb"""""""""""""""""""yMR멠8kfƥ֋^{|$.BT _Aѹ^Ec~`ܓ|^89U*Xh񔣛J Fq*lW}xTٓf+z5s[(K"z77*l_/?8:B7> F6u5l'+b)2$ ;X#-`gNrUmχOlPS`` 7ub8xؔcZ,U@!X$- u8c.SV*=zbAy ztWɳjrTlfN6?6[NskԀsXK&@] t'w.U5#kVYֶ ){ Ʃ^OV|lI"zM3.ǵy/_hmY[Cjzq?SY5VYCj`I= E퍗ˈXՂ^u\/,]0C7"'ʫ [v2ދ}V h`Tfx6*ksg*XR@:¸gYEwU̇+h|3u` +Jt @O] ffnw ܔNWG`g$*4>s#Vp{ʲMq)#mu UI'G|'<ΌyXlt#c9<Ĺ+ crV<:5tپS)ݯoEmw>nWʭ^+_[s*y hjqڏX(][TyacvhRZDڐ196Ovֺ?I'\ɅE*cuv4 QUX7/#\i<M.wq+x+(9r/^ z<ӄ\xH +5h+U%wAŶRԏ$|&WJ˘֪=f +0;ˡ\g=xn656n:3~o%s_*ƺ }$~>Yښ [UCV淬=]4zLpriW #{u3W’G3jUZl@ld 8Չr1F(6:xҜ˒,o }zO5X-Uq؀G7 }0L|N!(O`Fy>rj%Mhyu;ݩf&ei[?rs zhdA}7pܨ̚N$|rlч-f{9ܬocGq\j m.pμ h`/Gɮ8qf"U9λ]f2pB)Uo`y(s7qEŬ7nAݓ|]!@vioY+g +[X:) /!["e +Ľlbu Bܜq[xaʺ1~Q_5ۅ&Uu켧gSn7@]`C+vյzw􃷏d\'ny/3%j썁ԁ7//!jW[Zlb%S KtəY|ħӒ]W69u:`~Oɧ 㩶"aBk=oĸ?[-WKaV>10-ʡLz+z9@:Gv5G-U m`=U`@ +Y׹Gn._ :9o]5B?͔4ݑ{2oh}#}@҂I(qq\!,ZF6^>ʢZ8Ź ƯV*ūZEgu`;{jlKXkX-9g[ 5fVW!fא}yxGNNe Wr-m^cVr1쬹.k,9 ^G^fWmM+ze*H*A~"kRꀐr=:or/puQXte,%Ej>UnO%֋ks8U κ|#b6V]5F=E*#t{gp캳!Sz/8*є1P@ 0oY CTV#I>BLxn)Z)>ū1BG֨]'ܵU`*6Z[Cg=.ڵıIU$gyj<VQuSa^OnrUK*tN{a1k|wOh">&2}:s8=xNABBORv6:nwӦe0u4y\8mq|{RQF ,K8x=f.Lv,WQ3=sGq6K5P$5L]9zOG@L[2r\%dT+9SӮ`[M!*~z/y*zŰ3s0JOS*_{tοH2x- M'q`YG(ű;45ϙ_]؃* 39J={񑏗Usz_oU!F+ +$(̊Rv*މf܌ 0َN;69~t'|Nۚx/8`D筀CQ7F=yt5{OO!Ljh-HzPAwF'@^~gnS<5Uc[70 <~Y mi\i,k#rNoYصYTm|'g^s̻xz+ʢ)굲TFNF̢CXyv3!הkz'w##"W乩q[\;g~ [XfYmI%̑YoI)ut/15+}9ӯ˩e|? ĭFN]*Y]زym[+ع~Ǿs1R +zhAr8FetVE;d]臭| vJ5TmT!JZV54ꮰKuZӖp:?JyI l̾/(媚/W,v젝xB[kZ\yZz73óx.?ZPmJvGq|gejlj:wnB .(lyyt:%Hvٚv6n&glsː`:s{*롽lu߯IVf<ԏUsB #k_YM{b[Ybp!!XG)r CXkڹ]|N˫[Ք="yʯ͠VN1iqQd212[ MQ0@7;b-*JV9It$qV>mJ{yjE#jAO$~ k!_Hn=J)<~O9]Qĩȵ+oozm` ї³k?cϰ f;:=V=z 9frW!¬ Ws8v`⸹y k;r78;᳁;(Z+)l"1eR:{9^:MS+̪Ό[ڞvbcZRf55ߛZܝеb"""""""""""""""""""""|x9lo[sMӐ 6`v]G_ GšŚw |Kl)@?$br]i S;yP}qqb0*ŘԱvI:AlLմm0c9>Q Acs""`|b""""""& A11#P EŬvzY!]kRPv""""""""'.w )_WU>U/hVʇ?ă39}t#!Ԏ_5n_ew.hoծ-Zv-tPU+Ԃ]ƒdqf,e] kD_ݖJn588pHR&̎i,6MvV)gt멥m  N`T4@V=B?0w}uِ1 ˯s)7dü-YpomtqpbIAW]{u&Gz*c, c9<(gb,<'ud.ChkzW[*k}DyQXV֪Yъ6H{Nnd,J¡kv^PJ]>aYxn^=_Of=J f^VG _VK+E>+Xk*{$ LzF/"ʍ(ZZtg]fhÅdqX=x8e +P~IqRRjy}.Ur0WKحe)ʥNJl~n~=]K|?מ"o|KTڎx@ߍQY(oy::8E<{q%ll{TY{Zlk %WmJΌV'M^-\zۍ6vbSJJsͲ; 0z)85xٯFE# []5T)GZh   )F>B0E殳g'"sg 7Q|{mm_~ӁPo}Ǟun/ĦڷJYXh ޕ|~mkоV#_q ܋jv/ttFvPVkePH=D{f_L*t6z:'3xjφyWPz ;t7eb[MedY[%mb, +;|m{V0,I'zG~nԵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb"""""""""""""""""""""&7DDDDDDDDDDDDDDDDLLDDD@ֵb"""""""""""""""""""""'lN=N,hmrV u>E~)_yN8g,9x|uܻ`i)6k%K=+Fߴ})"tJ؅W{t.@${ 5dq`P`H>bqX[f +Oɳ>˨:1WK<9u~2FILoMFŠF ('\[iVWl7#^{UGRdK@nBG)Rkh$oX.vE^URN><8fFOmݘXC)Gm썂9|M|`I޹u:*TlPIX w: }Un- [r򲲽YN-IjՊ0V :='&϶-B+|$&Pk(T|Be/WR0 |74԰Q>d3(yQ6X{ϦȩQC7҂9nJGr>s1FEyH,e!=䜌ZWT]k'Kcjvspf'ŪᆁaQ? //70ַ}NMYv+ܫ}f͡mPXa r;].u˫FaVuV? 'fs/Oe.|@'t-XYcgP^dv3D :{)ȫ%yuutOǬkP.6bڡ ՘̵9FUnFg@w6zCY9u zH^%8 8)۪Ua )|t,nf f}71Uܼ#¸P-kn|ʺF>x/RG*jhB7/6}pÔZmN x@T vө2kbچosжxF<ÛwpL:Z(-˲C=!j^VN%=T/#DF:Ҵ6!Ԍsu]nFm5_1ϸlq +^56َλ 38Ҷ#+mW+O1:fʥKboMdQؕ۰AD6,%ŷYYlP|B$FU8i}Z\WgП^2rx×c]tsҶbe-̥M΁o8@'0׿[\SQ g`<>nw+ԡ T Jr걼1bs 5&oͣm\̫htͽg2,fՅ՛u@9\C^wUɲ76^ 75'ƵUkpI_6eSjX#2'FzUV5ZPjiHe=ēΣCjVnFgfP֠ 6}gٺ 1cgq׵b"""""""""""""""""""""'Uo%-?}S kxMR>2deCϒeG^ξ3g]=CmȕCy%ܜ\*<VŤVidXmm<ʻA!~}'kZFaf WyEnVA faSx \jְ˗[wūeٵJE =܈\{8#X>3XTYR{Tn-F&p Z]Jj{JF~8K'Bz«uЊې;I#<m^q Zt߮ )p1w"~ty5q,}K~YY7/!G3{V:`Vo;yO5F'VUj킙$) k]5=ߵ k$ͳDT*bϞ;3ZKא*,ұby +W^^'gLZ*QZ'ZͱLī-(,W + ᑰ;886'j^^*Qt`֪ɞO=(ȷm'9Ө!rmս^8&eeNfQ`]G^Ǿp8 ܃Sٛ^H@ N~1ҚhAAHf!OM=O[e̛&aW$QUxaX^Q;N +#u^젒dTGjxUf@RWcw2-hi"uaPQQ[vS>8 aJ\q +.:VVMhruJSR +RU@U$_t:tGzN7 \mh,=;]T3t x5\#ю=P"ycapkqה8:r1ye RbQUwxϬt* +ĻI"iew\ +}^B=g 4ԕZNyW@9A'? 0\]J7= :.2]H8T ++(RHv]/gBQ<)^I)xBQf% f@I_ofqp%Ej*:I`9luۤK|kUa[̠3莾Gi)@lQ9@:W=bǫҁ ̨lME u޺8M99\O<XKU +|5(r6rkѼ3+7 6C.vu$7ɳnރ[$td?Y<(fıIs~n 5r0a+] +Dt^^߲|-Mo8'ljH^I7<B +([ ݉JczC]jl;zNE8~%q.zזO8.Ckl}tos9<*Ƶ8;@n:NjJ" + +BhSV?,Zk;R>I0Feb]lv;a,}'~!PƟƑZ 'kpF2PW*5g],9tz;-N]ilP/VǙG/CrW5ýTx-_3r߿n{ PEFǼWr'(~w־o%NxZqcljڽS$o +h2=s*&bAg}܄d& 2t]Gc>9^8JyPwXspll)[ڻdR abK%1XKo. a9yCcwP\^PֽukT,3woc>SѮ]/K@O];]}gƶd!G3s)Z3 S;ffgs1$ˬ)1*ȳ)k"W;mkz򚱽êj\w`,<̒[}|sp,%AH y^]jm{=w׼GYV%#3F,ݦ}\1$J}Ƿan “wcV6Յ^nmOY iAcKwoů2ѵalg%<% Pw%l>5Eu=l +9Gx|`8^^ewQcw1yA$|(c6MuI=O/3}3ރ7f}cp\+l½ k^d~=M8`X,RQIZ^4o7GXw-I7)$;ӕVuMMi|W;p[v'gajC%Zՙ.kg6?{M43+2Q[`>;X>'B ivO@&}p~JYJJ;:졘:{Lp~!mS̛ufG])nhs3qܥ߫}v}vw6ır*ŁOu3{dWP2gC[] Gs>q8.&m5f[sfRyWg- ²`#rBië::8=忀dz,}wŞ`\#ӱHQ^`=33qY.]b;Ige4Th4j}Hu]-dbܡ=y=}wg_ͳűHmJ!`;+r>s9\6ꕑ>:4=Mo S\PQ[39d|OO ±֟4řC5:^#E|J[nEK[VN0'86*tB +)UmXEvJ̎]HafxS +m6;7[r^6?f@:""ѵb"""""""""""""""""""ḩ C_bV (6|/⋆ Б2+;q+AeNٕ)6DOkfgCd pqǰ=smi}[3v/bX DSP b cd=O\XUA%w$/%2e D/>}Xf + v>$zwđչCR6 =>K {Ϩ%eUJ oПqVgr$ԙVmku.6jG6ϗqX,'@Lfb""&pSĹ®'''Tv^ ȯ)e#)M|Ur\6lGOtҵb"""""""""""""""""""rqU ~:Zg;pz,I$hİpv~PY("K mI{鯏d8lsiPæJ}GǤד2c8Ʈ +AiI ngB?.3Jr@ {9xƾ z墠pY7b{k~#oZ8xkenDEbB}ח]NKlj½6%L$ Ϸ4-ƲB*C6*Oo1fxԮ;VToz:!z3j(k*K{鯞|?MC.fLRKڰ6$㾺8Dž}x-́yQPst7t$_I8<VEvWjjmYNƆ9 _ Vo k*O#ho&p󕸰K𚜋1Ű=:O(!2/vu~RJ}8D +ŵ۸>l÷bk 7U F Ǭ˗ޔ1KX8SΣl{l<,²3-LLT1v~/ŷzR}h{\W7UcSr2?[J k@&hLJylɲ{-21ҬZVV?W!ZC|]WpX_URtt5{O׈=Բl$s(e Hg7u E|ܜc9 +>WE:qg0b@q +cVg0 0N`zz0i\:+oj^nDT.ٴut:ϾŗTm5Y m:AN!3ppH1`f{15 G3ueO|Á5śªZO`: :p2ˋi[Vzu}fV +וmUV_d6|7Cw쬩^W2>l{V?=0(jl(X@=uƭ|ڥSi6 + uT+mt9=.,aKo4%vs+#\7>`d~R<ø1x|&g e]hlݔ}ΧNzxUef)j7Vk+*0iEm̜o ~~kXVz}tIc4e]RiZ͜xgG)][N!u.܌F&uS3NyD|noVb5+abt0md_G4f6@N#je8` ݽ־2.-㚪p*_0N2jy*5N@-sk"S\++(6:Ǥ S]֢sWA) tcqZc/eMezX)l vǸbckڷs`@YGyzoi#$x8MMHP3r/Gv̌#fWcɓel,P{r8 xbf|Pߎ/0k7Nư8w9US]iQvYuq}flsSSMs+k RF1Kj.9aoGCzlx )xKVj(P@4<807 +&7Yeص%Xҕm}tb[EUȔdXZv 鳶Zߊwg"rs k]GaLfXWuNK 3 ~6=|A[WZ u5Tbaq)]ÅUȷ+vlpn-~{וBƭku*"#mԗWMU# Y_1a[3Lx ƧEDZTI59E"c*5iD0}y_D|k@Tm~r!2|F{Vms)*1J,ji8g, s?7`lS_fG Ʀ趴E{(T}G-馵Ӂe!#[z?USjܯZ5_##*:חIߕGՑV[Lxi;zM};U^-ؙfeAIx-]X#8湫*=?+^5U޾6vlnO |W+Y+{`e:SW LNUyI1+nu 6GOIu-#dKRshoadaԏZ[Cjs)ɝfOMW".OgFON_ู6عv]BŬGMvXtӱ9OunePH@aw:r*ʳ,lp@/30utw/G1*e|+M$0v8V"p¹ 4#mvzᲱ2uXٛhD0U+*@O98`[1,U݂9 modkS-X7&=4eTBr']9Mޏf EMUe.6âXGܛƷ׏u/Se汘i0D U~'PY/YU:mN0p*JǶg3W?dh7)ʿLEƹVR*itg$Hu:@wL{MuUxvn АNy:Hh-VNϑkmu %r)ס}_KW*ᦹW(N&V "j]jk] k$erj^F~]0}|zOK8þ)6kgwCXUVHkF+llG N[ҕޛ7;ź!qLznK<%i Gzy+(ԼGQHnjj<ޫhGA@a}Gş1W& +w$=ߞdqn18x@8&Iu;QUC9*cf1m+eר|rnQR&^#ṋ>9qn6M=}9%A!%8(o | E5h',Í=v<|Tq|%ѾnAgF^'02-Ǯ۩4.ڲvסԵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb"""""""""""""""""""Bt¢Z\˲*}'Eގdk*:'eG_{ľYGcmI9Y'_*x='a=5d\9bgK ~)5>pNǎzvl|co蜏L&pGߢr? ?o9'_*9 *滽>I^4~"8wd$Od7N͗G&NG#5~$~&>Y͔j\zkMs^|=,t~!sSo N͓yag 3[o蜏Gk [NG#7W$~&~#U͔z=禴03}Oh7܇< +[{neɻ16$g w蜏Gk謏Ox-- ǧd\1&rxv 5}S=Cxu-.=5ɼ7~%>?co蜏L&p}~$~&$~&~W6Sqn`מd\9<; >)9i7禴Y~nK}r? 3['#IWť0fz?_`[֩C8m'an=5ɽ/7~%yqDd~g3NG#5-'#+Ed~>Է0kN͑s^3=ίóoOOyW:9ٲ$?D_HL`r? 3IW0ON͑sDe?_h~]W8zin`d^? w]~%>L`}r? 3]'#+#Ksqٲ.a \;!z©neCu>y-,?; v?/w~%>gbb_YB[=sfȿ&؈ֵb"""""""""""""""""""Egu?erV"""""""""""""""""""""""""""""""""""""""""""""GzE33kw _ԛb"" ׵b"""""""""""""""""""EfU/*JDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDHIN^oGJW&Ȉеb"""""""""""""""""""EeVRV"""""""""""""""""""""""""""""""""""""""""""""FzM/7moLGOѵb"""""""""""""""""""Dg; DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD}8~_?i(։ҵb"""""""""""""""""""Dq/|;$s2:Jљ}6g_f]Ւ¶T4׿6|GrdcZVf]P{u#8x߬3o Š:b"" ӵb"""""""""""""""""""Dq;rX[<7nU|Uc\z\lиW.EMn WC2+YFs6y]zRBiMhq,eHrP115[YnrYH<6beea5Kr<`9Sl*N:1VucMg!23~:ǧb'oFͼ/iy1n7XՑP +]4?rv;l}2UXO1 幧S/.sElcal;?oexN1Z 9uĔ8wxaXy o|88N5oOI:""" Եb"""""""""""""""""""D?2Zg<9 @vPPԆCj /0,!DFՇ~EY-RHFs0އkzC&3x+U{,G&"""""""""""""""""$Kp;)12Zu Dp[@^a_YpO vՌmltz1v-Yr|({s~'RVʒߧPV|z?qOJFBSmYj\JB9qo[o ϰ_$66 pXM*B*@zY;E1FC`tHϾdDDDDDDDDDDDDDDDDDDDH?73k E_Dյb"""""""""""""""""""DT/+P&>V@ l}DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDHHNngًҚPMֵb"""""""""""""""""""EfU/*JDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDN>0fJ8NaOĠ눈׵b"""""""""""""""""""DN'AGE2ZsW+6վNf +Ǡms?jq +;$y6W\u6/na}1>lRBu!o[R(OeUH>S$3 >*DzYFUMcTK0,H74p1|A8*URsg'Ű@G3q@;1#=$\ mŒ}r8`]鈈@IМy|g g!Cs.{ `؍z,E jz:"'6fra"*fcI'DL6g/η¦v؎[5!Ä ؑ}898O#XXzX'\DDDеb"""""""""""""""""""D/\;~1] i:{ uصo}{^} }BT3jv qU-踥l,RPFoHkKz]O'"""""&','/k)-jӘOA[sGߔ͆=lȂ5eGlƯӚ6գX&̻vd]"=dW^~+E~7pf )zҝV)Y?ؾ \ֱMJ_)8щJx]@ޕQucܝLp0C#/8Z332sQߠ#JL-K|u6 ab+kLI? 3f^GRr򎊣lO`>s#877UZYE_b< 2q[~6Ծ^oǘD`ր[l0 x=~䌌.@InEKOqZbO`s k'.ͣ;XkVn_("N$;qkvQ/~#vD5w~WܧPJaՓU|{|$ +)w@|~Eky jU߸*hɷ;/3 uC=ݏMNGRV, &0{)'}^=l̼e:a##j2ӧUt'_KT:0+bs!?ޜ\\Qc|94txd lB4 *HSj̥N%2A@7d^U5%u {#vqt]>_LL*hQѵb"""""""""""""""""""Dq/|;1eVYn5o>f>zYpG<6ʪ` Sy:>vP| FO~CgWvbiQ?w|r"""""|\"2o\Fq?*4z,l9;W[߻e!}VeQm,y, ʒIG2̖SkV\Ùv<)ά&P}hu2I + ܩl5*vaRGr*]mlK9 D}r7I G)ŦuT,.5j$qe)E:yb!>C90lJ@FPP;`9[cf xe Y+6ݑu0%ʊ7Hw;qaLOʳ){i+ecc;%dtul {IfOrQI107eA"S{)u۞cp|ʸmؗ(ZX:<Лx8VRQ5e>#T%kI+Աmkϙ]Q5+E_`_V*PDI= -]Kh+`:GhYm 3fM]|<6!MGt(<t 1؜|c<,`ܦ,@FNGje5iZ3;P ^RYNCy+kQ9O#"װxTmoe5pr2IlX"еtSO^~G93Jl*Xrp_JpͽPj6-hZMXC]wI,6: z"ڨVOk^]=3%N5n`DN(әquUuZuvq\j1+YUW* +t&~^+֪xaK9K*@ +ܘū1<;[ket eXx.f˾XQ wߕ@I6F*yeT *M( u`sf!Qj򂥈NH$&secat]BI=tO@u5y3q2+JG~buS%3}O]6Z?9tDD@ҵb"""""""""""""""""""Dq;bb798f|3uRv~`oC;'%X<6ds3*tEHz{\DDDDDD0 kxkutև(߿I\ZԡTo@|N艫)޺Nv +J!o x g /mHJ)QOG!nVWWGJ Ԡ7SR6#b-*)k] rHGc;@DLw^[ }1 O@M7\QU̠}2*~ ~:[z2NkLJcֵU@tl(Lګ2:e#`4AM7Qz#l]>"$/euӋnGcrRyG=;lyξ +r=X t #}+֑KV]5JZTTI 荏q3M\:o! ,kMuDDMw^J5vua6fuu!QydYUF*֏OQ;sB{EZՇpGt#NȜ=F[ecXEu' Kt u6DDDDDDN;?/k cS"""ӵb"""""""""""""""""""D?rXZ"""""""""""""""""""""""""""""""""""""""""""""rqZ|<5U"c[cXFm{ȈԵb"""""""""""""""""""DT/%&fDDDDDDDDDDDDDDDDDDDDDL,[3:LDD395J֙jX'tDDDյb"""""""""""""""""""D}U/+g/÷)o 6wf=~r@mÚ,U`~]J;pEYOUSO:ȸHz;wi\O ǰ1o|O)SQ0HQ9.QsiXA:cq3>,)RT H|xٴl[vo3Gy\soͩ N|^#̴Z:nV :b""'&uY`7Xo~3rXAlv>q\?^N{UlLpqj+2`JL#n@` +8_G7e~1߼4<_ 2/^zﶺ{d ȭҳ]je~RڮK20e#`OɳfU^C^+%_6f$l>Yl7SynhwPW۬6;ok=p̂ u`:nvj^e``AOα2?9kXjX'lDDDֵb"""""""""""""""""""Eq?;>zNoL&:Tg?ۼ =q %5R:(PoX|oZj:ذMDDDDDDޘ5WʹYkvoEw眹VbP0qȠVwyHLFLij0޺sk睭V^7eZtNZrq8M^5:Ps N$ >xd63V,ꅊNFnc}b.헛|gDLO9Zq켜qT-9wwuA0/*2T&*zϵOG*פ9VW,$Nǔ=+VhG9/ +tOr?bxY4|p[ԗUm v˧o9虲+!_ܞ>%~ZWa{lhm>JT:.-zп'Z vt6@'뮧u6#quUP-=%MX8Պ@P +`f=-q~5T]//8oi:G(a؀G V\,fi'A^Qp6Pfk/]ίHr 4V&aH^}L5p8& ʷw\1*au#>rhCeb:? J컖[a`^bgX<垛yF>%*c6Z\%Dvv-G!$k} >X-go[o[!}_ +7Օ }#n§8@3QY|q_`Xt2PN'%"""""""jū2:hbPj5Ҋj wGl'v U O~\wƩQviT}jQӯyQ͛rdTv K&VJʬU~seA?<]gL*-+X]{JK;b7uvRo/x"|dcה]4U hX5JR=yT ?KJ)5qVV=xɦE@8rb}\Nh)j9u@Ms1bG_)>(+=,K|Nɗ±sR(?\[7u +koWU5hV/ +[=}"oz +I1 lQ4S(kR@Q< +tmM#đ:ӂaUqh@幷?={oܯ~:SY0zm %*UUԞ$886UhFp5F{c͗p|GvA,߻}aQSZ؄P~'ѻmͤXrB u*'~JUȄ=켼E-== 0iʊR}2OR}|Nn%Kk>+1ӋKb9ի0Ҿ(ty:2hO:u 6;rPwdjcԨoZߜ虜y#9+NݱgWX(JiTy}ʽׇ \tw=#I;bzŮtf,@J BvDDDDDDDDN>2u7g~qW눈еb"""""""""""""""""""Dq/|;ܗLDDDDDDDDDDDDDDDDDDDDӗ2趒HVH99uDD@ѵb"""""""""""""""""""Dq/|;ؒ98WD눈ҵb"""""""""""""""""""Dq)+$1{l`Y&p6m9h{Ac|bĵ+zE, hRtu|fÞf5-Kv]sy~!q4TRwsQl-,ljv,cŀ :&g^{ )v$JԀX2Iҏw p rZۨڸְ>u\7cVmڙ5OCXwKz@#'YB||ZcY^y{O27;Ƹ}쌬Z2|SMx(V60^ok6z'^w %kUvKe/XVA!NI; {7p$ګ'K$A#-R| G!3mEc|RȣsInnScx✑1^EjQHbf)  +<j6#1*dP6r򝪎9|E yT/1}h'R m<)ftR~ί"]r@`Gĝy|d?Z\ֶSI:֪*og3lDDƢ|J^,PDG3Z +(=&}MTcWEyvIͱ>-FSOZ'LDDDֵb"""""""""""""""""""reM\DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD7VI~S"""׵b"""""""""""""""""""reO\DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDב~i։еb"""""""""""""""""""rebx{i5dEg7Oj:tDDD@ѵb"""""""""""""""""""qb{i5eCgm|~Mҵb"""""""""""""""""""pqFکkQNm~_(~۲?sc';'X5~Wcߙr}?/ GlozzB֘V3]e|ȵ~I1Oȼs:Tlg#?'jOf>[?~gW#P֟n υg~u<~ u-*~MF~cߗ?~gWf8޻L0Nl;~#^h#{AQ$<{&2O6͟Fr?3~W~g}? 1ni,}?/ G_!dG{ԟT^*)|8Qh>Ob?}c厺*~l5~Wf>),}?/ 7,y ZaP?|vG +;*Fí=x'fRgь쟻Gcߕpcߙr}?/ GlY7Od.fZs*67Z{u|/4~R&ϣ7ѻ3?9o~_4>_C/Z~7ZH]TSo98l`eٱV@}< 4~jSv ߙ_r}~qv*,G{>?\+Sϛ.eUVoh* |:>)G ]Toќ쟻Gcߙ_r}~q}N>?]ϛ1Bpv x:{u|Qr ]4);fߣ_QX1ò~Wg~>?mYgOf8}O!t~T'>w/ʷ`;|QDzo?]);fߣ??vћ~WcݿrʹqKoO!t~ɳFwe òmohi;|Qr ]jm/?mX1òrf>qX7w~_ܧG-ƟqK/Bpw~94q +6|ke_8^R ͿF23?rg#;'jOf>Z?mYƭQQ*RSЄP~a6DD@ӵb""""""""""""""""""""b53Ff&#S1LFQDDjfcS33Djf&5Lj&bcQDDƣQԵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ׵b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +endstream endobj 137 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 46/Tabs/S/Type/Page>> endobj 138 0 obj <>stream +HWk$+11tTU04tbo!%6;^2?W= []}{O>O~8t:=]<~'5iuףRfZ|tM׏?RR |:?⒧raK* tGLx -_N\7vH7:l<[|[x wG^}͢N -t# Ԟ]q`cؤ%nŸ*w%>z߲s,SqyxVNRaXH0 p(%#Z(O)R֚~H u>:b}GHbGbeN@q/ ք0y#r0 "DblleS]SY\s# ~DDGL O*f >y+0Aۣ3z^"1靝?co'GYSY3!\JE.?T(V#PFI9 hP}D [3K]?m|V᭑>6EFM` ޛpU%~Hf͸Ie}-ߊM4-,q[iԆ%fMgq.KҪ[ X1V$U{I&T-se=bHE +f~|u.N_ PDzN'}Ķ̮|PR2@w(N-: h*;ݰ^w[׬x7v!CF (IkEߠ@<ʾ"sm[% xo@C\1]_#WOg9"kA.N>6=7qR_q &9|i`\hk-3jBz u*zGՁC]02Th@\Bqaң}5,!soU9}v2`XŹ2j0Z.)T~ m^ےYM-`# eL~!M{ E!ˡfn`*aQ=Kі(DThc:mx́)@/B^BꦨJJ~J:\.p;E?fL!^W +yctAo9 +}K~)d']QO謭 eBCO2B&JU!1C>{" !/_^~0K~YtVD&NgW$y;%M?JdAK`qP⛪#j=zouSmc7ܹ8hYQN~kg09^`ᝦծq}杙ez͡56 Ϩ# "LUSG/ܦMbs]xƀdr届ww8JDKNwGo2re@H"⤫D%VǹAqV|=7oO"|RW%Ċ}dxwJ[j%]yz7ܱl#F+! t#h6:DO> +4ڧӭ' &9Nn:ErPu+MҒL7FQZdm oى: ͚Rv?]j[Euո 'kބ51I5cLJ+GTqɊnEIpɨ% 6x).fQMg-Yc빘FׯnkG%YEkӂIb(h[Ҷ]]=U('>y9[ldovBd{'[ sM]S"(,II$ʃk(;{4Ln^A7mUMgC[~,~._OqS_6Pe63D,=:0TR#\]\n=$1V闺QyJ +|SlnU?VViVYrt!=ѣp #;ֈeWSZEm)rj>wu;Mދĭ{1%kKeӏC{ݞ)$P'wRԜ%w)uSp%Bt cLS&#sxu(زd{L@1 ѣ/_^~0Z9ՄxPv \n~blEw`Pb)?^ijEZJL +fk&oUA&NLQk<t3(ʙBݙ&VZav}.[!=ZK"+tLF$4$WlWbc-(fLf57ߩə!p~-02djW=$]X7挺O)$@!̀[ * K"V1/XWP?Vk7%HRnwqA;w\baFyFZ.Rg)Ј1*aҶK  $+!TFnʅ_3Lfb\iQBH"#,/w{ȑ nTQՊ >H]&;8* aap2:nOLBs<*dP Zd:#\GN\ aN-Wz@>[k\ +@F")ru<-8 {I2Yrݓ3~1BE +HDd0kNvDc֝|ԏu#]^D蝁aYN Jr^NSI+x+)T]ɇI=D.rK+2l Mit2%+/o_?ts_l5#φګZ#b5FddviyHXnk6ZM^0u:abpaH^贎::MXR/Ν$<D (\ar\w|hq"y7h^ GH`h\Rf_k2/Fnv)T;L. .$YAP(ƌ=Eid\fK׉f= Un2i=L}D1OnmhmBM*Ӹ:b]`wjhځ%Ck&x_)%P.]D{k[h\cŸU6,U?U,^\ҹh87Ӏg:+:#69*x@EB\PTCJȀnc.=jw?|^)CyP3qς.AO ؼMazL997ݔ|+eێ $LkÝ!whH$ t\_bNF$xTq{_:G¥{?۷AP۰R{|qꥇF^WfVKWI9/ewC] xPG FՅ~Mq +ZJ ^L4ŵ>L*0TxcEpKj#kJ.G2@E8˛R:-"C0}v"izÚ.6^ZeP lS:ql g=weWŀ/Gw,TL!0+pqugK;Eh%Ԧ=kv~~%teщnUOPAOmq-}XHm{-̪:jt@fFho&7RH%E[@V())|2x0 18Հ\sBfd>$ }JzT?ڱ"|کPEBc]|yۋkb/?Rsh9*9أ ngq's<~/$ +endstream endobj 139 0 obj <>stream +JFIFaKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Ka +  e!1A"Qa2q#BRT$3bCDrt +%4SU&'()*56789:EFGHIJVWXYZcdefghijsuvwxyz?!f{QUg`?lB܎>=BB6H;qo{O8P0rʕVVv}q=sfuWV׭zYwܱ}>_W3ܗMVY`kV{ N0t{hzLqz^з c G]/e7jO]7^h;͊&C޴jlC +d#=g J- +o~}O:|GIQmUO}1m=gc`d&3%RlN`ﯔ}G$^cUCf^GcbNyi[u ҡK4ilG\G}9Mҍ1f:n:Җ^2,:${|狪ϰUE-wmovAr:#DInZbyPh6- UH6x +:ɲ_WOn5-fs8 kۖmW$r>#֡5eOv׮|185ZZu^\{W`F33-sFE,f5-Q$ht.xĴّwɯ]пO(L[ +ZFOPN!omN0e128C/Sj6Ԓ"Ktr$;kmؘ5%YQT5a;c؝zAV&C33s2EntCU;gi0rњd[q !5hYägs5SWBE0DDDn>Ev;ُU<׶RlFw[mqzY)ʳP%FC1*wz2?\Ū1%_ʸZ*{kgw\eNht/m}aS qlSb6;O *B*;w;el+pl9=ޠ[|'.{h7'crCfy UZLknRSLnV5>BM:ANv RB 7k|Ff]hqWu[`CUuXVX]{w=Ho-RʲVe=~S']c`+Z?/f[] +jٚҺPOqD~Eyܖ25-[X v u+ukӡgtPD;v=f/S2,uTvW;:}Wmzo ľ- 5wv2xj2SӶR+}L6?/XٛU5},㲲2 .P7X=e {TiS-r2u$#z OOu`xns3 ~k31>f7wp''NML Eww;xf&5OeӠKHВ|sPԞw*GD3o-U֢S!v~6nz,T,%J(0;lb}dZ1q=]v_/;ae_٬-n;\N%-Y߻{o&rqhǸ=0|(znklmt(0:Z/첗DZ==,Zb}GmI+mnU4ֽYZnz&cJ%mv! k{/&/3Z %I{LN/2aىg3AGkeKEb-5;ǹaҵfη@=f:fg5}YviGu:{n'+ɌM\{c|$2+GduկYr07%m0@d=:x\6[_=159WWG/RtNz/>Pf +]Rn:W7MrqS`sU\zŰmH:$v;G!aǰX+}~OIQ%2SSn߿ZcvU(鮤kXll|$KQJd[tGJF Kr/!}]n %UGgcQ'zOyual(>RO7+Np'ewGNՀ v:8*~2Ij0ql\W%IU dW_.:)f}v'#@~'Yq05Mn) ۿng%^%IyQ+*W$w+!rܵ<5" #?H CBz]` 'i)Kpڲzv$J9J2rnR|ʕԩ4A1{lnE,y˫:<=L^F8zUã!CjGPwI"4-'EfcP=2o'W)YæFX20%>E҈6N:ܒ{%;BUgCI0$=t u[s]6X@k`a<_eb'ZȳM-J ,jڞ@m7i6""""C0%֌JY=+{zI`VCJy@,zw=̯WԮ뤺2u6u}у`p Y +JRð:'DO!oG#rte}ކUh^܎RBmD|>{\Q]Di]_i*""" 039C1- ֝v&=U.],eͯj50a b5Ž4x2ȔXՁi[b4һAe,v*Kt ti/u}n bd$=qfuخL#/eC/6szKs!XJR2`&OţDMK#6Oe[[yAr@nbO5x/[1MSUSe,Hz#M>IW}OE-%H_] {nl䣛Hcvm~ғ '94_`ug XUkQҟA2x_Uh2|%\m>aV^?3S3kh'۰u9ܻ%Uź uXr|Nw{oY.R`J 4EnJ"s90-Sp3daTk56>>#lp-*-kAC7K_n̡k[ϘQ@߿z_n;)k[uU$ kN="n^OFkMXd;fm}iLeâm͹AQ{Ifxk#?˧XkXm^,dp;pb0ߊ]SGXd{Cv|'sP,`΁b_9["jg%Fnt;ԉG;=ؕ`2oZoy_ٱ4}5Y$!-E,lB,z[ |ڒQW-h'A:קmw]b{2-+uuqvz^[6,ڸ,ȸ+(ٚ=f\%VaXXk@+mPomֶَl-aCd $2.O219 TbHc28,j+TYY.I0D1#WZ zߤg/jUa1%„g]wh M"Qeڲ_f:m?9*~ًF|wc&C%1 q #婞ǴwJZfV@% 7w/ ؙX[[mj{ k2KQ;[doݏpszzuv *@pTC)>;S1O#+wJYI]:Nnc|C_SeasqzCtGmu_3]Z];߾S f̌')KlDރI`áI&#<@Zc+U`4>Sp +^P"z$, *Za ?&gqiek;)ʭsuxʥŔrzT_@}nߨb C``utRAly8FE悶J5(OPQ =RUg.6+v#9UAw!fx?ThO_S7ĤX+`;Q%gy|&=fGVTynT;Y+uzh}Oe}Z)nM 7n-q+ɮ_Hʺ@+ ˖u|Lj;7t;-վA;]Ǹ>@_#o]m͆Vb<]cUgv ^#^nSz Xϰ2/.3S;-SՓ_v!c?Ẉ+VMWu.v=w^Kq+ ֖Wf( +@*}Gy7Ix̮{1zՑ~e*K}4w"x<浜en#x$+$* 2%~Nv~#A,R'^κ模JaiHoΚ(Jp;j[6A'祐Ŗ +ư\Ǩub!bC{j]peeYuV.V? ,]N .;͡g0+.Ƭ1B6;O#90@Y@\2X-=!:$lQ+dX9KtՁzb{h,!*ů&r QYOX;]wԽq֨5edQS0ԪAHo0$9~vz^77e#U&NEV-̉-lkїx -ê^2Qh }}&_#MUdW~ڬצuZ'6م|[s\,_Ow|jG}C[3xɮ,+_)zn Pw/}~֧}.u,pX\0*.C%acfCqYħ +V#۸߷cS&A 0"yn:XUmVW vڲD{nG'_,MUW^2mb6:bt#}ᦚl ~2OFEhd$#W{nij7#DGj ^:=Lw"s2_)%KVoI n=;qXuώkUw?Op5MUa ޻KisI{;juv& &aVe yU}{%0S+W3^u!EX$$qxi=ʅε"3XUw%|/fJڡl`8ZkG:=xYՓORLe°'˱3 =WՇDkv$cvϣ鲦F!RR}GrʮDC}mZVK.ξ~ g'7q;V +q U6a֌l]L>=l o׷|-'/~# kb`,~W;ح_-E΂t@n{mȻ<㭌M`UשXoDK_'fc%)Y]kԣ`˱GV-z:hFWYV Ŷ;g\Am`[=x'ᤷX|u#=dmo!sQ7:.dg'&;b +/t麕 8\ߛm +]Bb˒ hsCש0};$kk)<宪~ #)צc7::O_ d*S:=5/-2ͪGo-uv\nC?)XR;1xc*o9=]u3n%x kG̓?إ6zy.WZֳn([V*xw*'+c=$;PzA$~W%9,pz UnAO`#bx9(iUzkYv+ ~IcⰇMBΔ5ՐYBu(c7p*[mf{Ed{S݉YfE,:Ic{Lj=M-aJO3yTqUac`ˮf`56;Gyo0ke:kw1L | uV۱\2\h{ɷT_*.c!ۧ̂x ;y5̨-YTdפlvIn_O!REEE|T <, /ɰVPzXv:A@Q$e9Xt$x*^V]?C=aՑ?fD=-ׯ@u؞nA᰹ &ɺ{$ֽ{Vp|X4%Un:PGֵ6޵6/K6N'ZS[(:uHF׮B3 ڪLw/V_I2G^7Mw0ZK]S 7J<.]~:da5-^nk^ * +2u6r lv.dq96ҙ,!0e9??9qRWЧ;gBV3*nDVZc5u[/hO^~]E6gI?UQM|Ǯ7*O7&Q^@)P*65-h+7sI**mwu+-߿i!JYLTAl~U455@ U:$&zz}d<'l+k|W.^ ӿOYԆ +Im6}N=D@bVSQ+)#JvڟU?1dk' `چScߴeKr28`A0{*+P4KYuTjz: A u)H=Ǩ-aa׃RX7vI'e$I)-Ҡn=e5Ԭn +Y}ytV^ތ-/dKxI,U`bz)+)YMJJĤJJjVSQXIYc7 +BJ7+:#VIM+҈4@le%e5+)+XFb""%5YH"rߩU~LHT]N HWUyOӷnb?h!&!\dSlpOM k_εr&jͬ~G!I%mШ0̦5{3r7>εynfoWנs<%Wwi֐~eݍƊe[K/>`zJW}|6y|ə;lwՎuSv']|!Y'?.MmէSߏzz 7nxiWl(lc~lOZQV +H_J=Ȅ6'/'}ZFf +2myG﷩GZa^#[7+O!]V2nT^V ]oA#"F$|Xf[)ٴcb-z +Aw̧5XJCkpl@~&Dsיîuڃ~M*ЃGx_f)϶eVPҪ=|w#*D6\=YU&*ʪŵAndXjկ]6Pl_0Z^rE3뱗}AX5z}g1 ՆEu.J>do`}LNMY+Sڰa׸sU`}-S" +!q( ֏lkMw֙-HkݭYn?M鐁`F) rRG^K86T~SS=6;P*7Sޣ6QbؤHae|V]Xt=HeRGy+DEZ`H?<בj֤`6~C8c6SڢB:z~{x~Zk +چǥYַlloj{偡 `˭u]iFn -Uڏng~C:62/pZf=oS$^®uݕ!q[Pӱ~~q, Yel-a3YuaVmz2xGEG}u{Lw-mB755o˄5 RG0Llt +X~yžwE{jNiMV3Wisk>KŮ}_7}᰾,WD3^TYF?R$֮  my v'ِ*FbⵠN=2Մ!I#3؇zrkuc[t@td?8(X7d/ +d^*ؾRMvI;$M=㧒H>~ݼUkҥV{P=5ߴ1_d|E^JֶߦWɔ濟.X\)^rd ?#:1JU7Oe8,aa{H1Xz%WRJ*"Ti@O9uVjmN6WH2~RءYP] Z߼qxR{vf|4(0M;lCe qo-Vlk,=:rL>*dX|^~E~^/0pB}sZQYXJQDlN(٫z-OIϹ>GqOQWtקPF_=zK6&SVSYnPGiΊ< +%`kkzַ#N$}i&Fƨ]JrP[cI܂<+5=i] >%UkR: ++ @_ys3ϰ[j=J[IB6C.[]4"-;_NSp!/SP]<=mcU.N+b}KVA'ܑ"xcJoʍz+fjO)6OJt5'Yv5Vّ쨷m-@kbԔRڕ*WE{vDq^?hN1:1$v2Q8l\uݔzGw=Z_P mXr7~?}ʷ@k$̬;_]v>^ ŕԡ믹sܓܞVJv,Ilf޺'[Ԗ@ 1WcӯwEdqܼ+Tm!;ziW|ٕ+nElś +:>_JdءR6= _ Y: 1^,ĮۧR0'_5~Q4q8\LjOSvbOߤoBXo/lvHM􃿐&C1kZUdI&F9/uANvF{:#c~X渶HT5u}#_2G_+va(Rĭ7ܸDSmر; #cSY#Yf5 (OJ`%oyR!ߴNmF:v?N"xh +T,urI׷y~(0#DGȃ!XxocST'O=qXܑSzlX3#A0iUB]O$$Xq0ŢƏIa;#躞WDBX;1ގwܕVBWz]6Oo]iVKXT!WRA=󖓉JR ~ﴏfzXA]N*-ߦr.&^^J/AD$GP X6& +P@^6~5~SSW3|2oBcWNcwSxmA5Y`YXubNd+AZ=>z(Ny99 +,B5PoW1 K2o @T祙c0tUp$=ėW,XZ57IU:?MMMDl~!QX!YS($s%30b""XΣ1ZW59G2J cr6ME*,VFB:b$興屸Gb*:A[?92"""$lGַZlp,FLXk'&:""f=ȜW5O/ +jCQR^?љ޽%~f29bWS#w&W+**OJV~AFɘ:9F +1Ts}#CEy~W+Zt\jwPh/cF[Sŷ#U m辧~R1b\s0/ƪdcεuOrGJ孳.mJ+lD\c!~OOJzDyzd֥:d]sVm B"ov1ȩ 1,)ebtP}p{K<=&{n}lL/=rl©kAZ~G'{>n˶\Z^}mA,Nƻzn{/q]ePzTptHY~RDrP_s]`炙1nU N33*믣&U I]hI?A򐒯3FS-=l +eS5x>e7ʦU $?eaI$8G Qzt{'#SktWZ[ yjᆑ->ޒ6/-rZ[hʍ^a?P$k^k3Cj-+쥆^'0WQ7V[k~3?'g%%ԿI%u >eu5aRX,nTN]uZl_N.Cmxv٭*V!H$:w{{2?)T^-OP#D~{>Hj~ï:ji|#:`23-#u +-)$Th~(0/l2⠓YS:G =x_vQ[:7{{H>!lz%oHTBOs۰|}+r-*N4 -y9UhQC%Rɹ8R^(ٰ'[}=" erSEUyaʩ]ȣxŽU!.Yu$Hi<F]8bpcZ,N&N/;cuZ׶vYb`HrrmDnePvS`6SGC5vQT"UNhxp9'`ժZH +z"$ k6yq8sَH^mJvuz{orutyvc+б4uobifO^5wb^7c?I;9iGRbu?|\ +xb!m$zFb29*)*ueGeשuy'͓X+*˫5tu/z\;. f~_]KnFVYQEvHeL|/"rVbhwFz%92 -tBzٺwb<1n#re$5j: C~WG5ξ쯴ʵyk(-4;~:[֫! Qpl{_>]{D`tI>o3 bTѐ:C j |C_)g1l#=E,#ec'x@~_mJJem r64tvAKX[S+= UT:)-; obOڼU+*~.MipzbRG\5韇]Mjҙ|^*rxܞgAMVQإ=^Ƕn65cT,tj g[$z ΢A29 (>=˲X ==p|>f%yX]VYஈ @ֺ`Z<<^fF |vZL,b ^ƫT"I l#zF}=,}q5uEm[u֏p}Df؈E:jq=ۤhz&ՍkZkb6PHmI/#v7+W&5ʸRȝ=jYPA޴{x 8܌bu$VPY{=YrI~KZN/]lvUW@>$neqlP~S%ؑ/ffIMXo2JH>-RoQo1zԧp212yjՏH@߼s)'R7HWzu%|Baq B[PXv:[v{oq[w"}5j]g#>!̻OXK +?KOfy\W:٭@*V$ f^Ax_ + Jq/$;5vXJ!GRt6 {FZJ5UԾfn @}.+U f\VSƱw#`u$Bd_q 1U `$:QWm9>3#;_%- ց2(Fď OGQ*(=G{|H`-9,l*EQ7ϯ)+)+)+)XIjZ +[î=,;#[^72PEt__uJԬJj5MF%z;{v+፧8\X>jVSR~>Z>^%o'ګP::`DƷt= WMs5d~#ePhFb"SSEu)S#r`P M4C]o~VR5+V-Y=7 tu*}>[S{If:';uԬJjԷ^KUKҪ4#Zt3~o_cryw8㙝9*|.6~yg~5y_NK#UY{ wCfYKU'_6{2_&R""""""""""""""""""%7+1ȸWj + .̰{)$ %DDDDDDDDDDDDDDDDDDDDDDDD@0+T|}~(m ~Ҿ',ZUу)=m`PٹqUYZߪt@{>LωTk7NλAd)MW>,Ʒ:T0;+R+[l䍒~MM5\UKC]G^],c\s.UgllfF`|:_|sձ__fڷcqaKw=|ۙ$1%M)# =Op&~P׳VT V!2n!`ntt}2!s][um}=hX*QxɺǾNg.lzuW@?%>ҽ5 cj""""""""""""""""""&!<7M$w\14+iz'/dp0>mjʐWyٵ*V۬4}~$L>hnەފyJ 5sj6Hn + +IP~@Yv"ct dU u; +:>f@>.-5 d9ifCvZuo]i/;ZP+hWZ'zvG@}mޞLԬDDDDDDDDDDDDDDDDDDDJFb"%5,fQuGCّUG׷:'Dzǡ_"R7K?P*F{Ɋ`v؞|Z޶7 !aA llu=3A,V-DZlBH 2em@걂؀;{b$|CNuvQ~{/l*[dg֨Xu=Hv"xkQm@'^""""$|l|Ʊ)n +?"$OܖU`J0arzto*:d~ExUPK1:})j\8V*tw~D|N$J%h F`OQ |-Uޖ b=g/2/kM?}%`v2),coeuZՐA>{zI)1Ʃ)t#X)"L2UzzH:C;z"'Kу Aa:%֪5HM{o+,eU[[ktw?&/SH;?"=^jeCk H2qK(#A${~""$;jztfFuQw^޳͜NMJ@`lPFΆdp2;"" !` {&'U`}3 M_c.LN#t.Ƕ½ t~<b*˭,,7ɵ խb]nʎ7M 0ŀtLe)ȥrvuP~} ǫK1we*N1]neȲJ KֵV#o}M_aa7pܬ3@Yf`:$S29{j2icW:ՙGSVX(mwפO0cep.A$zz}H9X؜vNf +,zݵ] #9t-ghl]8;VgYwSUvZVh/!,fUm=gcխLzjZgk(T =i'u[mVp:+km}]״_398=vmX:5Vh$Ŧ;r1|U-n +geGuy~e _^FE*knijΟIcR Ǭ̡BjLnivF]z̷1YZ굺-ߧGh3KHRUUttw2tJc3c5MvYt(Wjul}Iws[ӎ1ڶ0 +E +}l z'wa.2Ap6zqkZ2l*m:+{_]umH"CjcՖ=mpޒuY+*Tv'"kiZξYz7m.bse*6'K+uM*#ߴÀ9[Cp[Max;\lb&OFQX0;q]H^_Ym0%Yp=Hߡ>grXCݙF=k+&֬;͇ū*u[$\nM4v:hŧLEE-Xs!mRkzֶ$7Z0};eʌQz޶}_K3Zn{v\aHl@zz1rO{ܳ=^bnwU=bo~>S;[šJ9PzA k[exg&٬wR #)K9W*ǰ}e/u\H>ĕUFEվ3( ukĬc\l9KGk^FU 7ҺaGÞNO]3;"1E .?9 X6:ب=HUN1k,~7oMJgyT 4`T oRqη=$Io/9*piųk#z}wHxV11 +S]zulKY}r`+f;5|]e~[yx[]z|{[6C޺RG 3oO^= Ҩ|>r}Ik[b[ңn@,q۰M(Ţ®t8 +:wH錎}א…Ip;m?CiE=K~EQ,N@TI/Y';0*)jݕ1>A;1?1]}n];1OfwQ[2Z!TCCG[3\k8X mZY+@N@׶,&gYnֽAdBoWVSW 7؏MWe]Hu)l`^%Z΂ + wyZӎM4*쮯_ ^Y'26=\F0OMjd*OiķPTnm5ҷ~L朗 + bA:˞$,*YA!7؎~RAnKYX#X{2\I+ӭe^.Q\ƬY^3-z"v=L==or%]cd3h~_gcONV=q-5_ZTUXmm0m'ZH](_4=a.DDD(Ǥ5 +mNvHd-_X=u}keZUUnn=YHcn51L{\ +R_{c}A6|ǚΏ9Xߏin9Xq1r5e>޳u˥rk%62Tr _2?_ţjܺl췾%O*G#ar9n"W뺮J́]\y`P & (㞶YSGGý1wkhk1_723-Bo2 89K3 '=[_i7ğlʗ +CVR o爛9neu9Wm0+V~RTq%YEi.UF`Ld בv0lDN +Pw~yOm<{vcQHWu+'{yq3̪q)q{Xi4Gy㩣B+wga'ryn6ҖeO|ںWަ/Gxȣgʲ Ujv ze4ܨկM8l<jSk/y +_ǿu7AolkG˾nzM܅J@{G3ZbO`3GU /6I]VS0.g#O!ƳaY:mCzWĭE0q,9Clb!.~0daq^-űVzjZrVAa5/C#-]uyg<9jPKykhfI3-[#=-dPn`zyL6´_YްcX^my U.Lq[1X7o^5 7.E䲲՟VC6w}{K +KqlʞΠCΥ[=}=/YkW,I^Ʀ&9k5tu}kY*֬Or25urr]Ƌqb|}hVA+3MQ{T]V1l]Mطy \{U&vlp=F߈/cև'aSkr܁VTu+@{oe0xض^.{W{ӓ1? \ȗy.vSZ}+EJ-ea'Рms)~_etFN%Y]YS.wE]qUiZrQBkj |>?عv^MN7PStաLa0PƋ0J<";=~\՜["s[iO}̿ve]w7[C0b@: Lp] u%Z1V[[[=QtGp|~ ]MNKB1]_H(嬿ĔՉV5u_C'BVĨ]%V]hVؕ֎}Oi+O"c4Wb =.kG΃h1?IN?3\ZlUgApG@E};ke=4{H5o=~ ˞TQђԐX1$*vXǨnȪaeZ},Hɜٌ~4=]=zN} ڹz*;KY?=Y<6tcP Z+^* ]?9{J#+S=60]YVSqn n7GϫE{7Ƶ`2y+>Ci*F# 2hJ ZLJlåɭ-]Xlh草rSroV.1ZSUAu_YN7~gr@`6 V""1>-x3q܃7%(_@@=\<_͜AmMk"ʾ`(`~"N*~[3}(좴FH-;;'36ſ:]Zj`F-x|XaXY^>F\>1ϯv$fo*.@ݏdMeuur\bnjsyX4`d~ZP}3v-Rz A#£2( Heժ0?x7]gs[.cxHzK w3yj߫S`mӽTNwpjغb^,="fٗqv)?Bu ;mw#~aOZB5}'I;P@1^ c9VH^[2E?jVWT̫ ԝw +dU}y>_d.s]O>2$c'#>k)g0_* lom!e3%k;1Xd$,Ish;cSfgV^/R~!VrܭvUwPY[a=y\[]bIkmۥ5߬q`gg|R=Zf=mkii)caB,u% 28E8J|ĽP-A蠁ɸfjlW;ьۖlvTtB5߷o?U|O!]*ʌC~O޻Eu-g6~A DGԛZ3fH""!j6=:+ R4F:~([*~U@]}a|, _WQ#.pj^\T[^OP }*b-lsm.%MCC@Б1ۏi  JwӾ?Cã|k,ɸ61 %. 2 + vufo{˺-vb)$﭂OYdfӚn^eER6IݵՖGV€ _}SfifQCkJ};6ԋsEngwp ! e o˘xAZ |:P`ȏ +_^/b:N@?/*j(G.+)|K{:l$X`@O5ZľAVR::};38*1.jګbthv;e*J-qiuXu؅LҀ5R𒐁 gz)،IR loocpimŘ{K)L{Pvx)#j:j-[Vwj*V<Ӿm/_[Z/ǶWϿԪR˜c7[!5陁yzu vw=ŻMΥj@ =[Wm8>67mM@Iv =ase[cy~U}zUTQs,xi1(Ȣowg#%~[+] NMqjmӵ wƯ,=mcVXC1(=<+j㭃 =dڦeu˦lďp"ZZ[^C-{jUbXXBOb{#"b홭p:Wzgp= +\ל-|{g@Gp${lK?뗢ideWkv%Op}Q{r\ܕ /*};Re_]n@`Ж0sP'lf+u=0Lz+; z!kֶ6k‚-`BĠb{7i#cSLh~ ;IO'Wp:VIVVSø"Z⼋EeΪB:~}tTl=Ol{6vTKc,o結0( +{('^GÉJjfbh='eTU'{hOy<ǹuUv!+ IXU+MX1O'[ʹj|wT`~`+gaهmiUw'[@C3>c NEu|Ѕt+IS]KXC5V/CR1$؝d3N0bB&s﹒3j䨳KL=?z ORIJ܋mҬT( kQS'9ӕk|\~.ruoG}cBV&'\TC[*RRt'`fCX{=B9>.QPY v-2L=AAjvBed[m֪f +AJ( `6}w$cpIא^H*@Tv>?|lz`~WV |_U~]=uD:DgSw}]moOiF=j vԍB0hJR3>X,v۰J4[mE|Cuߤ-3du H>?(fϨfX(N26'8NIޏǶ䱱mEϸy3lSbY6: ]Ŀ-ё^R *`}== J3dUx5j51K~65(ŴmH#pv;vXͣC_b ($ s/DDDDJzTހ;:tӑدtzX6G(T6}DNbVnF϶;%shһ,Ew:Efi~%#R$g/LՔ?0}yqXԬDDDDDDJjV"""""5e>QJ˃Y C'$|$ٛO2t XltOIwlkjo +,wa?)c*tc^%AuPmhmnfw0vQ_%ifŮ]F}N;xNIeJVԸWVgTtOa>7kV=byD*%Ԭğ?{oc.Eau!v؃KFUEd(T171~";A赱z ?.yV5U.]7Ф&=}=0yE]oRS۬:OI d^# w.3W +z;챛OK{D$COqyecMZI%SD'װ'~ee =X0-׉YӥDCsg9Uy$uv15*2v[» +{keRH_l5~$dӍ犟ͷ#%R3-I=<N5(kMg;{mq~;|rnQ{$,h&gGS5UHL6ݺ6*2)R/Zz-ess)stavwuX..b=@9#ӯvrc@XISsܕ%q,jUVCJh/x{9{_)6j`t@W|62YYYuǏ'Ot={\74ׁzjOIV٘ݴwY˽2rj䍃N6V,^ bGs[ޞpɆ+5}(cyv y_U,`Ns nL&9We5؁/~ۿ9/ckjϲBq盐i׸3mzVYu0*k]v׬/g3U]RKPT^Oy_`G]Ir k}yyvv:cU`-X{:hp;l|?prsɱ+*ˋ:R\ll0I;4RCHudt b>./NJ̚26= 'oc x^-]9[vkն z$}~nB\A-46d|Dbs}'EPF\}Z 2c($l>c{\;={%U~mN5%MYYcefV|{UdN+&Oկ-r-eޫZ @ׯf1qw!~ UnzNys# "T.Z\֟6׿4쇢̅k2.3ܗӻV +@>@=fK'99^Y>bgZ͈T=+y]< +V`Oi +eQ33y{թz\װd興)j5ԍbn=%X f[=z +T@j5+)q/6** KtuP}-` =;:3ޣQAkq0XXZ$hQ`?gHjVE06R+c6G*jjSL@z aqlI>X@=og_j5FQj:AjVA8fƵQB! *j+9r?dt z@,rlvbVMKn؟' F>;HB-E$;!U4]IOܹ-eU$2u6$.Z]YXaa#ؙnVSqn7C;Z5y62uuʌwD|?9Yk+%0gcF~xKohKP:mn7,f+]n]*?Аx~G7?˨T+_g>z'[]WA?c(ײkА.Z *jɓkV[R}:_@w~]vߤqK/7#(Lm"Jk>O(u%oQP!ћuP#-Ď-MnVDͳ"je +66Jz+qlFr9Uymd?FS8YwdzY-vGfR,P~2^{9|ppユVjgӒ#`';,bѐGI^P#pLaڨjKltLn73|iK=u5mȧiAbN͆&ZX++̧֬E=}Z7ZX2/G<`OWAe#qf3O#@mW .#OA:9B+X[9V$F:2^ckEjeW!NFb"":=Bij@  ?mG٨FdR&M !a[t35EE+[6V#L|7%6EYs]r>ӮU{7PKi;ܵV)#aY#nW]yWs_]R$);ֽd< +2y>)91bG$u-~VJ}Z/ZMMa dǵygo ^T +,PS@>n~''X6VEI`oP>?RG̏xzi U-SЂ;}˹\,:ucXu,'d uJȀĞk_Ֆ6>M+e{EKlf.=)y4;UFӥB/^J=&/1Ckӵ ']} ߑqN-w1/ȬP{4^m[m9*Y3DzhKXTffrXnV5/ZvľYs"u~j֬6!oGL?[!fEqojrֶ/S-;/ rrV.FFƯסeb}H5!%HcVY ءz22䰹mx^`[RlUoCv53~n1ouaAS!-}׃~ JtzZ}}q U `iE#{ס;ue[7clFccW*tާcL6/'q2HZ'iWϠb}Ŕ$ N\'-GO#8Ze9Y<_c+e8=}cv{}t}_YmzMmkCi,̵%BmvLArӅtQP .&g'Eue&-ﶼUf=?q3 \!~i5tKce/_9j:ף[޽&׃AB.=Yبbm{>f5U[o[Bd&,[]zvצq< \ZOMDulW*nvMԞ8+=:Vos9|/rMT!+#1Om +/"̮JO]ۋdJA״8|Jn>b?of'KKykCRUmvwS??(SԊhtG%S]j-Y563Xm\[ c 6[^^$V3~1%=[R +@^2xʮjr/_a/ +2+ۨoDλ61?(a0>=H?Nׂ0,lI9ٕ,u}eM=MDA$=ppy,LcuN枇jֱ ޽S6Wj-Uf +};oBDľfk|sV}ut}̖Ƚj ^=]lR'G}WG' wykMfeaor}1y.'nK:C#|v :#w"r7deS V'GgSalġ+ֵ$@q[_5nwZkggVu1|5Oe_!r6W5UC*ovk+uOa.pWKcu̶p* 2?Ȝ]f:%ГSt3Vʳ2˴Sv WuN@*F,q9Y|^Jw׬y[g+wh-N8hR%r8|N`+i;cZ2oSo_]{>rيWl6Md# ҕ?t(w1nKrjjr<$JF<[mY˫f:]d_#3iRU}ѳGi GluN3eǤ71܎%eUmN7OV=:J-ey7l]\w[%uoV1R@:БϻMvLc7] v}vp0욬u#,![k\iL"Tj}bkVjzؕ.{Ja09 y*0^_'&U-zN$hݱ1JUРu9sO" q6T>0˪d +9 b)\p2xV^-DDZǕ +46CkK4pӟvw6m@{wR+^WyO_fAew*Va{ݦ3} hT;|U]3y ȳT_Pv:ֽ{MYFEw +M6W!eek׿} E^*`So44=Gi\^,5tzԂcᅲ#n:YaS6UysCTX+z`> ~ɧ'6հ\Ԩ ]glĶa8# ;#1U;{5<+]V~Xe%5(mhh2G 1VMO1i[]JC`s#.!* ub_`qgǯXҨQ{n ɦ*붽 $wڂLW#T:Q$l:_s$juut}[˶|N-PE'lgWaH+ҽ+۶as#:YpnJes'E\JJv-u7#H]NFuiTYvKh;n,ᯯ.[fX2y +hcӴ_.-2˹%C8[If]DL+AQa@>@µfFlB#;ęّYP"yh^SuݷֱPRʪ~&,Gԙ=ԀI(WL;?לrNiR|uNפe'RS7O`z ^ݥ87'"2,6:a~-^ +hgr6GP4E^X'WPyV Wѻ+b#6N^ңŲ +8f[kzHEM d.V̇n=X領 +7:$e ^(6 \.KS'!mGAY>w 'Y5a[eEmN5o &%vVިc^52^—:T,NڐFb[؞*}?؍(?w&p|SpyĩUk%BP5GcH؞-#%kcg{+bO \2V5_]iI zJb~Jɠ0(; ozzo]$]?6|zN +u +IBƈ0sqS)ʲdVe6 ?&$k[ۥ^ =}ovR[|µ*7uJ޽xO[d`ȵu5dAI񏃝=µb~ +tA;cHWK:[f-7oIDaem~͋br87͝p+J v|K#}é2ߴJ/Z,1m';YA%f b !<Mg ֙Or5:=u𥇉KX^(=HGsI]E`:A?=l\ G/f5oxW^DtͿ1 u\waY~ty} P:wTxmC|쬠P>D\2+ʕ@ҍ|%ؙYj, +@!~=0PԪu| o>#}*\(`Ute:Gw'm͝fK; UЋY +Xv^dg݂g5cu1:Cu}f]yj~h>XR `AwZ/\^nLFoYwݼ%ʵ:7WLk ׽4K1$I,:l'g,_dqrXn{ibhPR+UaI`-s Kҽ+0ͿoǪ˗Ʃ X$~c$DD@nܬDDDDVSr'Pb"%7+)ܬDDDD:XBzPV"""""'EO@r{v"%7+)n7+XM=e,׬]{˱"r\/X*Z C;(9lS>tutZ@LK[]eꃫGVOyh*XX~$cTROig-pyw(Fuj]Tì)|.s!@Fe`n#M aȯ^k3^lo;NExf^Xm>֎s?VK\Ɛ|tݔFŜm-k5g[Wg7NG~!NX`vb}O zޞ?9pGmTuפZO,[_ީkH!zvFW|anb]] uuuvַ\jQb8@,nJbN3P\mQ؁*-aeoQ"V@ ;K+C(SrTmk{d`щډ{]v%uS}=k#e9bCu7Pn7~D#ȫ`iqW-vMgkNBON6#~XX"X(M[P~+~K')U݋uw +{}BOqolkmSW_UAMW#Z֥ܪn6V;dH]ZV,~Pa;#N{9&ѩtW#kz2M"æ[9+k:Үuk5q9|>V1.ኢ;d'C6f_,*f5ʂXRM~"v=&OvO{_u Qm@l|C=x|jPom#nt4 k@mr\.}كz.Խ`loIۘ{%l6t16c؟@{/drӏm/q`i<bW_޺n-ȵLK*9: +_խL$x,zkn`JfBxKūeGʬ6C'},S\-ߘRzڧ'A4I^ۅ/-ooH;!'N?/t]loVH c[{ʬ"ޘ6 +0{c?U vDPYݽt=~Fo%-q/r[֠==`\:VbL_9kRK~c-h2!As%4IPbu#}G3,H +Ҍ)bFEt˸ХΒ^ecgH&Ǧ+m=iMbJ__C"x#.#.O$*x,g޺TP*e?Rڞp}g/ڞՔ܃Ftx[gȾ31`>%rItֵ^n&F_z^>2<2apxj(r,fUv1S֨Ht :0t$ll}G>WZufzA_b)~}47d~cS7_HFR/v@ߦݽ}\ƥ#!R+k $0:Iy~./aL4oR+p@ܝV8\Yu?ec~DZ 88)mJٱk_JպԵadpݟq$꧴,os#}ɛcdc:Xy" [^}d+~?mM6V[m^T?PHtkRmMNA$~;5e&e zڕ]*Tuodz~3x=kéqLrYSqmj)ECyld)~yR_Sc+ګUb>6}ΥܬB SƤh%@ +/;3Ŵʹ]G]%!D3j5m~mⰊ b1/|Q:sSm^ n\cfAa?SW-p5+j׈WbȘ|w.V5Dɍ#.uluz]v( O:+2O!5W̲vQz`=5XZ*67V +[}woI81vfB'v% y.m|-gSn`Z&݊h뿮+YLX dk;? .~],3Wv}}4o6 >1Ҍ-;~S38bPԫ*{W#+NlabZpH&bpM-/._wv" Б=a3(Q` +:[z{v0A:o'^?,jcnݴbw*R3fŭ@$lqǼԹfM7"_c~:Ճ )zT܀bEvoکw.YIM[žN~E8~[u=f,U]HM;zJajEԬ8u;Z#^oCc.Z6_W~yG'ѻۖ|&߄h0ΧS|ߩ5cs nm+~6 HYԃ]̟s[-V]:h}~乃UY50׸"lzI3)ᳺ/V-ʻ: '1>" +ۭ] Pu/,BUeMj"tURITbf[0K,EN,sO6Kb^*t~`G9\ 5/y,p/= lBWxYsX4;Gz>0GP0ޞKַT^S3e`ӽvnd8||Qmd>MW2h1* +Ϧ2XUX6>ab[F/ZIsy8/ nC.5SO-kt X>ʁgc,OקU`-d M`b7嶛{r0HOI5JR}@*צs>)/`u T(0Uۈ~T|:ohvGȉrVs=7|.+VJ}W!c\aΛya, f^ݏfҘtWZ:"Ԋaۅ@^"" ([b:44w)&?_^=yjkv ȤHJkox# vq8NHƭOPw>2F TWJ"*@ | +c)]IPE +>@h~=y4WC_T֭;s]K"S$AO^Zz*~ZP+J:+)RZ +4h| _-~CCV +?RRB(A@ I#CDReEj'(J"t"'z_*WX!QFtܥXA$dp00fg c;? z+JX}Cc*%`* SbSJYX( ;˞ZS{Z*@ <.5IV;֔ o_)QEa/QW5#JGqJzR~eA?.ǫ%zmEqt0:3@z)AJ+ +: z~b-ZQي>.ƫ%zmEq0F{vפ2+O)=zGBhн_>(`Azy+;ԉCC@ FJ#^@}О*ħJZ 'd*宵AzJ>Z'\`#DRkB'<>=v̊H$G}|Fq ?Pҝ{z~ir.j\/i%<*}53f 5۴ykhkШ4*F)O#w,x߲dWθKWkٙλ7cr*Q.L벺|NVpdE|'d(v7GSFE\G3êf +]Yմ@]߄Y76%>M +7AR|:xy%l{ uүv8@*Va=}&W/\%7Yp#@"yM~q! +WWd:P #{|IXk%`|Ouz)$M{.YYOB{f@:odaJo܁{:ۨW[զ;@=QeֵTSi "[zYxUR)c)>=|jm ai JFObjdQ{Qtw^4WS Ⱦ*t뮆zY `7QPfvV-VYƭKV#0؝Vd+5Cle7gd^ (zc 'Gwe.1o#'U)ͭWd%cWԷ_D%VXԭ`{L19?.$BASVd?52fa?q˾TP3F'rN>^Hr0}Pt*uv3'+&4nMJ*TC}ereu@c YU`N-}ǿn}kmTڏmfA.v;l}&1ܵut8G"uVY=.td;?^caYִ tyŶj'`a/qiKPUe`eӣ w_Y|=Yh!=On2QuW;";: +Ks LG砪Y0X;%6Zo!=Ur_J]S~CN*5gX=]^oxe˂LDh ;QHK5["[zk!$վ뮢7'!V'%UZ׬=Q$TA$im=d20r)m݊ZMJ*^OϼfRue/` +Ep=`o_YCSO}a=jt,]J&G8^6EV;g2K{wvE*QyFqRAOqvfٍC*ۍc:Cu!FSDx{'+UjwBNhCgK|FVG!Vؽ=^gOY_o5q-j`YRma[: C縉ǨZb*S׹W+eguu˖.t4{j-1-±TJ㤂]pivi:MeU`Fdqq1b5C O*xO'&%Pg<67׭310R6+ʘ:5:WI2g\|%颤|B_<[bҬtI'3(i5(ƾ} +]kS?#ۑRoZ,k羖Rg. +%T 5. ) B~6fgpZD_2(-*1B_3_gQzR7,>u)ſ(U 1ߧ """"""%7+ܬDDDDDDDDDDDDDDDD"O ߈| X OQP307 ]O ׬sȿ TQ(;?r'LlMgZΥ쐭 ozbRLuQkOn}iA>^W8ga( nK5HIMeEͯfuuVݿR~' c8uN'z8negTe1Ymjޗ=Ut+:mRSWmۤoc]". 뺪ƾv8P*Yʫfc&a^y,]}Z4y?Fu֨8YֻIA!/:SqM6[b.{02x[A]Xe`%nP -~קּvzO=/3jĀA """""""""""""""t]or&ܦGIdRҠuy6j5/)Rds[҈D(ޤLdũ_PN$߸ВjRB{rI?)ďs%r_+^݂퇨ޥ?eWAU!K}!9ח߹=a4csJ{cT] J)b1KhzI  %]N]^'/!WRU+7 ]fܹS/CtӄƯ%@b}%AzޤHԬJY(bԌ|SfGMXbhG׀OS3v>cJ9k}6zo~[ԗ-Ey5Vte*jAALbnQP$ y&k~߷nke*)PU@Oq^2fSe hK>2[TK&U__ 2̹4@#Z +N=7Iu#{ܹ '@ّ^3.*mV ,t\l8uQ](ߩ׹S/ȜW"],Cb4JQ؏B;L24;)gw cCCgC8|W''JR;S^vbK~Ko0s/Jks!l? 1^'[+.6}=Fگؐ7$L/Wѝecܗ~T5X%R£rX~||rkf/B"hv>}wGr I`5v;뷼 X\kc]NiRf' u6=m%s?[py~unz^,kl;hz.ܒoRdDD,R#}>SDDDDDDDDDDDDDDDDDDDMwy.H݇s+cp%Ɣ#DӯVfַ6P4!qXbe տN+ԄOI8,ڷZ5`#`q'DDDDDDDDDDDDDDDDDDDDDDDDDDDD1$O2L{*@Fԧ +7""b|O}eeb""kW+e{ SҪ0әDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD57Qj`}%dhX>[\nȼ|ַ6 iPA%bxSu|Oq<%HVRAdUc2+eHG#(ܐs=IXB@K ;DDDO,@'ӿA{]ְYzt?L;MOjT6}N=X5g+Wyk- Xu+$DDD4Fmq J}La? ytV{ɱ-eR~oS,[,>mP$vȼm!WWU]v;;|'9F cںjMV }u{n_{pכ]- Y`muF%܏QEZGPU_Q Ňp;#c0ܖn-|կSv$`j RY[v6#Dw&d|WS35xl+Q%_mRH~{# <ΚаnU`{kKtsUێm$Vm +ojͦנ:&@âHa\jk,]u7MJ[̟.::8T7 7b qǭ7Ҁ?@ *fi(+=ۨ R=F۰ĜyZ)p56k waxbe>W}eom4uԻ~M>F겾,)=v:&F&]kM)/WEg^oɭl+e#Ђ6 _zcVU1dbKEJvԷR*Hu+oV˦R+edV_=C7OH:gKĸ|]4dZs*u}HyrRUջ)j^ =/aU-WbAՔ P4H=CЃŸX]wI¢z +Vodlﴉ◣67&?Tn;g1F@D{m˕Ҿbl~.Gp0wZ +[oM|̖ܵKXP>ֶdPw; :bC0XndDZٺ:='ӷ׼G=MhKme7jkIcw<z~^d_s|u:hLVbpDs׋m[+WJ^*@g߱ nKƼc*h!AQ,@fE^&~+m[ut{_c +ڭ[V-QVsgz0QqDz*T,pt̄'~o3^%K.R` 1,U@$v=٩[v@uPˣ&M#>!H1Yz::7ŨT-p=]N{۷K>~=5 :i.2~u==?F^Uz;! +̑=,&=8dY5@%A}n,f4%Uu[^}L/9z5TmʦTf#'\eL-z=xm4ZU{#`/eiyǮoUYS}=E@ގ<TlΔ%ӧ!}Ʒ+Qf?FCV /S1w{kĿ]X+j +z LlzLg9G9g^=ʦ w p%*Wsjl`W[UWcrB}Xv?]3|?k˪bCv: +|AI|tjEPܷۤMހZ5a:=:^Z-ZU*z}IYIyVXWZR(fzlӷy>^5Yy{JRۥAn޾E\=]`k7c܍j qVQGzn-[꽒uE|{1.\`i$Y\ȕu6s܎T%CH_ 󘸜a|ŷ/g[![/ ޤXZȊt'l`Jr^Fx\^NfEӓ] Uk^J1_C߯}{ɕۉb^*Eүq'M҇ܟayOSw,O߽zv~}k9W_>mAOHFTփo[ _޴+$;ݎܤc+T%V g9o e+eEL@$ϰX*>Yo3ת|e?)3Xr X[@W#Þ.MWYvϿ[xy[Ⱥ%ZJ;xoUW ْfcQ+mE'ZS neC#ZYE֥:Y_voz|=en7X;gPEg^^ۛ48\8lg}8m^a޳Džkj}(Nts|Y Q5}`Yu-BSRͽdcT[,a[Wpm^>siκ*l6[8q:VrvP,?beP=I7!xUvV6Zbhwtb`bq(UUc"X 6~C6kr kBRlpolܧ=RòeL\c[bI$x?9d]X],X^d*{|267v9z'ڊ*y= +zOs}kr?3Pu)Ƽ<ݤmTI~ݻkR+C]Zlur,/qbʔ[HR-YNBq"]iU]ZF,$ vstVlL{1heR¼[CzDc`;ŜyU5ut9M=Mw٢|uV[wI_%f:FD'bu + ?-Z1 ߳kjw/U`DQ ;+̧t 0 GerK +@'Q3q쵨d1aj+@ hs!Ǹ> ̵l\jeg.csg`<F>FoVe!"""&+_/&Sz9,lo0=͌C(k]&o.*ImI$lk/qfvfV;q*%=z@?32]M-~w\Z¥a)jj5j:Dj:GPej5DH뷧j5֧db""&+ğ/ļOPK2~lceImvct,^SI|+u%R枰ƾZI>>CTYDo!7~}oNxxrG^:mRȘ͆""""""%6#r9w~U(j1PBH ߷nVGک5Z6uԻ#qYM#qvfжCİ5שּ'pNb71",.̩Rf*p2(@ԅFuݎZ![9U"6lȕ  ˻lD|&MVQvE^R?WSTu}&O澔̊J6]&;;11Hjg@gYQ:u9+6۲otJ}6:l=#yzCSnh b%ĬspiZŁlXutlv;>%n71X݁mJh[M*4{|̛_f6=T̈t7HRӽo[#s:VeSK튕(aDSq+)؍F͵sQ-,u{ETU%@>*ԙeٙJm/KiI;첄WtRY]~cgN[n[OԜqh^kj뱂.ϰ=fZ3*DeJ7RGת$͈ܬq؍x2ŞR2ڏ]}v ["z؍YMX|ǧ]*[[%mk-{o#g%o]4uHXM|1qʦ]2bK*pLq؍ȉseJ펖btS^#bVCԬk2MO`E,VI?CS\Onz+4Ioة^K-ue_jƹR:FjN?/> Ey7X:Ku]MXx#+:=V|>$DDDDxUOs\ɲ0#DZ0Q"VlA=N'/L2R=#`yr%Ε +6fXOMe]DDDDDDDpnl+ZFt+ A~_6fm} +/n-Q'do̯6{r? +tP4 ܆dqw^EROgJ÷Wrr|^#V-T4X2tF8vTBS\{JZCk6+m'~f}#R^6=+c[b {sx{ɾۜ\RXoiwnb~bl6'vFDoԸ̩k˵J`T7_@8 k&u$8qvuH;37Q J6]~sX/Kʶ˜W5v~:{r4r94FUN،fV567N72y66nEMm +UcuyrHN]=Gi mvU hhl6G'0Tzs㛜5ڨucaBW +y|6M' ˦pUɪ{״=䌶ˡ˸% BuY=Un7Jÿw̭5ut=V):{` ͓V.=f?FFA&/5Mj,։>3&xg&[t?h[mI%A^ĝK<"3r]rd=,Vh߱LWfE';w;.⳹ |u:cӰmzpֹ6;(1>$ɣ*_Gl߫!1O5{yk)ҎRzdr,Ups=4a׮ex".ˬ(*WH$ vG˳η5`e5F@$k_3!Ϣ*s]-2nM̈O((A t;2;?y'U +N~ tM۴]gĵ.J,K\}.R>YAFKPGeRmؠ'}-6nlgdXu bt]' > r*rr1XG6|>] {ϳ,+8C : +;od1Kh(SgA셖bwmAL9Ĝ2lW?]7Bt6ߩw8 _av"({PgA lQXz̰U6s}~:2_M{bGd荍-xIs\LrRҡlo@hlOg bݐFR q?!V[&E]Tb V*>ُm]OEkU_۠I'=1sYpܡoﺱjKZe,4GptIquYVuUM=HENjHw.cd[z7c+bH'-ؖrTߗN`JǘTԠݽ A1FCY5 E[^{7llN=V`ԁKh^\]hp/S2U=W"<FEۆ7 );w#Z?my6x7*V|5멶* lIor_/#k>˔pI -nYrBff D]FM el5Ъ&9RnG.N{̷]8r,ÙgKk`On1ȲN~B{S39ǥr-uyT^ [6.MX4־K31wr߅W3#̶*:wSs8+ɓp[T1bB'}%Wm )\r+ z60gXdWN]1@5n\^Fg+LDDD@]\Quf 2!3b'ۼ?湕ywʦ|{UG̔ NCW.dL'ld?U7.r֔TQО""""""P*q*=h`tbct ?!f -lR4u#$ YM,iƢ {mwK5j*RK,G}ݷ[<>(Ƴ% ,n,2P@gxCuy`"$NS1S-w2Iuk)XQR[Zb6A=qU]2aѺX*޻vZ;LHSA}¯e˳W"bl$_nv'be}*ŲQJ媩nسi;&Jߠ#c> VK֨{8 +e}ګ z {~lȿ%.r[zvH"[+[]N9{#zׯH _e`܊ߐ/k24t}1qv϶U{#ELC@b`/7lm\"3ue˹FuWWKb6KP ~3pc]m7 +|Z1z6b'+q񧨥#gf6YYb[vgŋij*UR +$o#HNې9 zyE %߯;ܳWnK1|w6/ ײ\$R ƞ#_0*@OHvsRs.mɮK2v_Uwu*@r:wor|['(,N({v䱨5jE;}I?1)^m/EԖ#+hoW{6(z}~67 n%i ]hPATzN3$0V_J&W~2K|ߴuRp{S?#;Eժt*F߶,Q+ԲưGFg6RK2zd^A^;}@F_YE/c8p+Ta=ԑ}$HçXl Ef +H%s~iRyQYC#OY^MWJiE`F،^|Y7*V@ +6t6{$˜&8+OԡXlvGc~BdT4A .'mEƫ-2awh vܹge7~A,OX F߱פ~=tKYϠ_X뷠'ỹ3͖T:ؤT  m9CGM-:z7~/]w~ۗ6&RZ&odv, gmWZm{ےHc$ppƱn+B[ VOBCmȺluZJU(;r<0oEE+.!fan5ۅ-SR,Ӱ==qfM}n`#U=]Z,{'ι;‹Guq>L%ᬁg"nz(PVW[[2ɢְRXkBJ:$GxN]YW$t(Q@U=YUWdXS`zҭThoCMa;_+IJZ׾+$쟙? _=EOR* $d8l4lj/)(cfUhK9! j'Nհ{r:xe fCYt6ozt]/YVEW wIỤ̃A–]6#G٫ZSN'v,3cُPX@][Y& k^:W +.D|-)e5&Q*>٘ZGSx#v؏omMlL^˲{?͇'UQDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@5{\%oa,lG5vDDDDxRs+<0#D& e3'-!$lr}'d )2<8 l]R~m̄DDDDDDDq'&寫}=G[ׯdO_G뫊_?ҏW?Q~ҟ,8?ħW?ҏ~xOݵJS~Oŏ ?zŏ yge?_|'?Xwo%?_'+tu]H}ߺO󛿉,^7v,,Ft;G߄OGW?ҏ~xOݵJS~Oŏ ?zŏ yge?_|'?Pwo#~OUĖx|gI{߈{~8?ħW?ҏ oG_oJ~Oݩ?v'_b?ygc~$ K_׍?Ѽ>?$?~G߃O%?_I~x?ݵJ?_<'ɿ)?v'ؿ~O݋?Xŏ ;WUĕ}O󛿉Isw%?v׍~$wUOG_7?_<'CJ?_\'X}pYO ygc~,~8OCݿď GH}pߺO󛿉\87,^7;GW?ҏmҏ Ҕ}p?c~O޿e?_|'ŏ ;?uv?_/Isw#~?n$~x8?K׏x$~xOݵJW~7?_\'X}pY˫:GP/DD@5 f;Vc}{1FrLآ"""&+q̬DMs'.?lBV"""""""R#qϓX<<W~CGJ|?I^/Dy@kR~~+Gҿ!#~CJkR)WWȬ~@"/M_#Oڏ%|:?DH(ԬJj[-_5}J/Dy@SyIQ<+#HOg~z#ȯGJkQ#~CG@+>Q+ߑ_ _&<W_ڏ#~CJ􏐎XIXɯ _-j?@+>B4>Pb" M>*kꪇB ܕqaъԫvd؈z9ؠb@so01k/)r" or*f+ǜO} +X`;~yy:*2߁#<3-TZ^uB,*Rfׇ۟CP?d[AHZw!rg[֊K$v^w!qVf*ƨ22Kcof;Ϸ }hGk_}=u$ +s[{ ϯ2rn7j-5}26׮LGMUk7D(M"&]p+EՆ&p}tb7N$H{Ȯ %E5#YMcڈ\C0^=i9?Ȅ'Z+)#硱2|5ac[jSe!e=Z|?-̅V.{QPN]B|Dg'J%RqN枛;-,*[~]y&73%inz8ۓu}B Q$ Om=ڏb][*o g}<_-iS"l c4|*ݑ* Auݏ^g!ǨlNv ܞ"RZrU9k,z.Pಂ6 1lU7*%N-`Agpo Ow bxv +Tu 00sӎFWa~TA`10^q>Lܥba<[6& KyZ*z!4q ɋ_{V3+t,ʹ +RX2+=lzMkӼutyu|[צN1>bV|IGb4=Oa0>oO_uuw^& <r"rTg0OpzGg_֕ O]HOOypƪ@@8Ub44A~n_ + #o^G?k_70տf?6V]MՄ\]_￙';^>&uXG90,=5<C&t 6Cz5Ӣ;k_I& g@=4 V}-0l c? +GJB^Իnϴ,(VZgaxʬaKy'ԟ@ k^?<+};޷~oYxS ˳gp0RuL 𼯓Jq܂;:`kSX.ʧi4W7&Z_!d]~mWazi#fcjF`==g4L/7[m=Cd/ĭrK|WeHN}d)#-yvCU}6tO6 K0k^I:uV}I=斶7 JwrW[.gH?g~^uMVb ]l}";5!Uc'!c!v"۷mou˓Mꭂ kRDDDDDDDDDDDDDDDDDDDDDDD@#r9qt#3'c<'mϕ5~]z?P31^"U+,Ms|1fWj{6@ f,aӘ7V72xSb` RE. ]oQZ۩֥TցĮ,( }O^|IvLZT`ڭGPop^80ƥ* A= +zYŃ^_9ƨYzjgk{/*X hE>ۿn8\ VN-(Ե"GetġYN +0?0@ؓqMŞ׆JqUJjؑGA4 ;Vbqj+~~ yATo~ZdԬHy<>k/ǪΊ"{㱳wueq01=IP'd"/:0#DȘ.n>=u ~O[]SoI:nj3u0<_Q29 z-*utUA=t}xc_%'^E]æLz֦$a!'ԕ֏FytVҊwДŒRФ`'džWVЊצ@3xNG_h,סe}o_IzjUZ* +S|+ĕu8TiG5ۿ]v@Qf-MZֽHHuF`=$ј[B 6=[V /_}#ֽLO [^=jB|ac]]@ЁwLST>>Ⱥ_ .E)hj_iMH8Vk^~}:0hůɪD^n'X]]ZB*o^qm7UZ$d|Xص [~ZOn"""""""""""""""""""""" 5]W +U22:;>@|+/4o20&l㱂c^o $#īJ};&L\kTo,3v+U$@=vb9Zma:! +I`ld^+w#_3w2L'!]oP#P]OWb]Tq(+[{R}#gHY|yO=JȅƴAKqg1jYǠv*]}& >{q,k7OG2>{XmoWMdr7cc7#a[-5a-*H"zƻ;nVyfЖ8ˡ-vk}^]YHyV-C%lSA!@;#_K_qҮuRvS!x֎+bN64pOIYBt75(ՆjߧS>(e;2)nE2Ej(7eM):/QJ71|-w~-jɑ,C)*X5Nud6TԕQ +4k:d~3\[M+cmX ٙnO܈9vڱO]iY'/b\]VkvE,TRr'+ȧvSf:=L^S&\OQ1aƾgeP^]R}$ ՚ضO2:e?U$~ Yg/.l +3٘v̌ǺYM7V]?a%Yn{v> hlu=DJx]t~ ag'uU-N咝OOy̿Hׯ +BN[MO'rRcS?1iYXO|n7!]Y 2앳,)m>ǶJ[잫ʽʂJȮUCG>]Lqq6~; <+Uug,c\Uc ̮v:ǴqzP]7.aqVeRUtb"XaN'x'ro42PVR7]~rw +ǥֵv-%cynNUvַ~_Q?M<WwkkIR׳!RK[fwdb\+,Jm7g?9L/˺zR5]; Ӷ6[+##oL:%O~݈&&?3mGX [` m$|];s%`[`fGӰ,Ǹ[Kopj,`b@{݇Os Se7 $i?XPsYǯ,-* o:Y[d^Z18JҧuŴRFRS>mpxZecw7GXr,8pl*Xo﹀dz"H^r(VfҌWIPz[vs[:ыA/]h[oDђ|EBcS3tyتܳ7;f;;̖n;䨭l5㬎WAm܇U&믐(5UM} ߮m|C"*ib&fҌw)뷮9oVd8\WOKc wK#0mSJ+Z:6}eӑ)zM>9!8uX_TsW}#^7F-.YA9nW2xs"3oka~3)?^]&Vk\x)ʁՑQF:zbUT"""""$g\f`֤ucvT]_V᭙9zlkET̠;>3"\m<-WC0WdFz1B( +  A,qeeUʁC?xkІ(K2,[. [HֻE^ħT  WKVGKZ8z3wUwՖgзWIS!ekr28ڰ A"c*-8Rտ0}((ٖb]ъA WA7/pU]{d%/}=[ߨPխuP #{*kO,=cG]=Qz5$Vz=zmڞoFdo$Q,OrI.?ed1 Y:C{ۅTη\5c=Џs^ +G{ w*1r4n\ ,Tfe՘hBtʠu۾sO-;RZv'zAO9~Lz)ZԵX t:H#r%cRlV-c'ƿuI"y<?l|e@6BF$߼qpt!k%7u=rU&{ʷK,ހʈVeaOR:R" -վjȧ-˪ +g~B]K_uGvw_T7%u̞w2ݶgf"[$fkJ:~>ҁwGYB,}NfϤ(CsQׇ-Nmy{YK>5hF3`] ;AIg+xge.XQݗZf)CCӰ.gpx*^2)CÒkgGy3-WbHeN߸ţ:ο[3OTg/sU&Ӻ:~rZqט٠Պ,J`tGifb V|oML/R6=GbMAvunr\Q'r('MJl]nc:~:Xho5Ӡ1Ӯ{޽|9N+tT䒬bzN-l^H꠳3'Ikߠ>?ybcWeIi_sЧ{QzO׉^ ^Q&R{߇oIX|lZ4gZYxGp|oY}{̽uHt0'3쾃MX0%yQ; bv>Bey~=yLKט;~c"%|>J5vЕd4{y؜c0UD,Z-'+qWU>FfZR% +yW/ROȂj%d;V*{0v>n]t]L~+ G%r2+ŭ}cd.3-X-}a~NudJҒ4ϠY"PKXUԗTv"k`AY_Mm5qX+ h&יU.El@ᗾԍ5r.7mJ`2DDL_5ί 嗢!_R R2WpSv`Om̮nJU=n72>rr Q]A,4շOI7䱝U(@`pH|Isi` A7On'/SXՔʝ]J$G2vq<*0lUulI=HqoMIaFN ~wFp*_9BIaH${w7>S uj H{/c'JՙY3n<1S% 1n`c eߐtW*x +*fB"oɠ|W>{&{6%b&g34uV΀;6FMyXj^ĵ6]et)U(PIo]z}g9 .6 m%K h诮|3g!z2݊kZ…f7{2g lMjvW_"[:tqg@**IP]ݑgCԞgV ݆~zwȞ_ڄ;o?9\` MP(s"3xAّC##T +4f+h̭rJ1RWT F/~۾k}\;/5U;d٪Ky>2F#]IǷ,FpH޵~Y+ +o$)}|! ~ir7r?1ytu:5^e0lT!z-bGuzH kcsh<'Ւ)±밎Z~w$yWr90eg]*;):As3bcoø7ՈY ]? +hGW}:|o^-.[񂁑e}1aic=Ƨ&|5StT +B֖dzl롿wܬMo +_QՁwMgy-ߦ’?SG9ی\깴$c#ZQTʫe;Fș^c8X5cEoJ`Dh݇~o^1-Un:AF.*A뽩=|vHf[EnԾeeĠ^ q݅P(#Brr 9l5R^tu='!E]yqڲ+_5Chw'r?_)*l7M+]=TAom͟ +oǪ˫jԺl#oz3^V&e;*`mԅ{>ҘY]ƥ*%{{zh {x"긪\>f9RuU@H@{l}xz z' KH+^7;8{X+) D|-_>FPEU+]t#* gc6۝cVQmfy)!-\g-}6t8.F +] {DMR +ƲJٰ}Gq!6fyM}mEJIuX}L}{y]N_7XkVЬɷsWXȤ32륈]>kIFK zӥ?@ +o{O㬮*qZ0jGp{kMbqoSlְeU'cR\5h׵!PHHg16VG W-ң)kd>Ί۰[3x\*lʨs 0Ou~:>uxţ3# cCy}lZ2{Šy#֡ +ف>!_f GBu+[ԧ!\5٥F?ʚƿ?{28NGevZ/X6MfޚETyWةlu/׼V~&9}+GjBJ>{dKj3 wnmiz"":,=I:a_ Z6ptJ|4)j:2 y+ܭv\USnI#*|+u47Lpu|(Qb%Rջ/+pNq6M'qW:ݭvVc&<_PGp)&KqxtaBick9L(6eem~M7k{]ڗV$k^kGvDuF@:ܵw 6y/8K:nJz7)b#6F/Zyv: (W Jrrb2Ch3\JSnrmVtOUhp5`הdoLpU3_158Tu?̐zHv)U~{+- +K!_`L\ۦO,hH߯ZdV%jW@o[m|3`d-he.UzWYA-MwXX}3:w2T)EAlOZ?\Q⚭[)@2XjְKh};b}I?nK3*B}>" ޻&,n-L(H;"?8ԭjT#DL%>eJ16cPP=p; % ɛ566M\7W7m56ƪ 8#1DžgFޠTz1tkD6~Yh*tn PA#%Oʯ5䳩Hcu foGt!Fm~c0pY] X^߷wcMg*-J #m-%}J6J~޳! LrEV/@UBI۰{)Ȥֽu`FFu3WQIMms,q&_]Ts +M5Um~;müQ[hx QN&&63-$yL 0߱IJxz-e _ڝu,Kv#`ДqQen#Q^,`ATJ=yk-oZߤq-P)kǮ*PVՕ!>GZ3K7+Z;];,7|.<:[VMv5WԮb Jb;2ƲKxVkkb=[EY`k`CتV]ǜ j:]:ֵ{oe*¨# WSݵ+!PEe@Muē11q*ޛ_ZK8]w$vܭ6}YVI_B_ڝv]~ʭL^^ze[d\jޕ@%o=2ct={נA*oP; r'>5"-!n:zCn[b +;_)us8bFqRk=YQP ^= 5x.[e57eU=N~N;ã+{CF] k~ݻK)wlr0M!kESO[ 57_n&C25X֋[M)K(!*X6I=dq+LzH(@KzFgOoM6z5SH;R{C29M6>abp:|:|׮eɜW-PޠVűNNՇi5w؈^UP6U]nWFEyXbS= u8Zv@_]M6laZf*T:פ}[SgZEJ7Im6m¸op֎`-Pb=Op}^>RdچJF RRInDD@(NG~uզ'Uf.aPkՆ]V|vUʴ!!:' zm"F{xֱ|-nu|^f)PT 1fZ"""xI1>(6,͠71K~I2صdo+§z*}ri?] +gp'͹;;w#iּuu?%x\@- +sdIX9=jYaɮ|;Sus`;LDD}ɍ[cTROlLl*K`Xwe؈BuJjV""""%5+)JDLDDDDDDDDDDDDDDDDDDDDDDDDD@-6]*H6 #u?mqq_rz~ӔR'/弌d{*U`1|7[EˢYʮXi1ƫ(U.yٯ}ۯک/}~N>O?|&+Ȯԟ0?3581)ֿ1cO#O&3`21jQڸP=ucqXzqM{ /R"fNu^~}If?8u!;)o|[ +3zϲ]n__Ȁ|6j7ҿA/+_<}|E bO 3;PĒM(I'ԒGs)s_cǏ)G&Z?'-?ΓP>cS?1W0[~ +g`֛ 7޻[|_*?'[g*?'~rҕoq(oqY[`rg"P./[;T F Iw\?+хBֵLtz@3?qn+?~+?qJxt;_GgO?qU?Ӗ+ON`dZA`znNj8jO~xܕ8jq_*~xw0cF(Mm#H?{][1/̷/6~HYQG.^۸'QP9z&Lƿ#4ZY\t:#0ٞ}]M) +Nm߻c`{+VdU|Z d}zF+#np> zR=z10kvv=,:z +ze$y .ƽkt"jʅ`PA=]^{ק&˂ nJՅ`7I|^]#⛖W uvhߠǺ x·X==(aCOVqvadX|jlr@AS7bd,J,(B?H~zOS7 VdH+W߫<{kcڍ$IG8kOSfBξVoz[y7f []}NfSPW]u;ccՌp6W6Gg/nϡ&O2,hE[7h)֚#؝K]T)VA&GVklZl0t=LWgZl_4؋,$%@קmqOGy,Z&H߮W8z..Cm|DDKY6 uOnj-Nxܵ.6|uݶ}Ѱ׿*(fGWNw߶縈y$ɲLVTuL܁>sٟrߩ'*1ZwU[P![}&].ڷΠ2 :be՝R]KGVSD Q_}Xe+(@uv'}dE Z?Wec35#dqn]J;!ڳ(b3~Zb<{n~y.""'ގ}%[SeUu_>w_ZZC^e]kPGQ@w:1cxe䶑mI|5w#/FVH; v;p<1EYyf\zlDNע]luiWJ[Wau>_<`AR^JkhkҠjV"""""""""""""""""""""""""""""""""""""""""""""""""""")>pxr)+Czb"""'umNw+\Y- Oq9'GLE t% @a_q576`>13U 'G܍'F-d5Jt*v^װxN_2qhcDtAL(8c_mO^=1 JOm{=x:׿,͋Y,I$zffiE7,IS!h3ÿqqgR,»:ѷ^؀71>8|ZrcZ܀蒓žm,^>om3J l>.|.Uu]e"9 Rt38{@&!|΢,5A`n/ ᅯ^iV9PtT#~8<U櫱B[ڷz)aOGr֘v#RXI=1d!lS]XC&Ԭ;c/s5rO#/`u]Q E_smM-xS^0>}S$`;̽V]( =f;>Պjȥsҡ*R|[,v~sVh~2խ=3sijk/Ư)VR쑢osƬl&X\wB7 z/6MSeOu-bI:#v3',ՃSsDRtgp(͸J:^-[~^dEǤr~/bu,"B@e `m:x{Ru0 6Od^[99v + Q>@%W`C`?COqbGk<0좊lb[Jzw^/;zefU*,]Dulo'9q쪭{XQ롮? ^%mmm>rfz5^`!lp~%DDrcPIj20u0L4\dץ1ZUն;c6LZjҝ + X?L'T)5M=BҢŀkR?&merx^:K.j])u갤Avu3|&U\)Mmm+uV +gR Gs9K:VJkC^MGbv'o_Fe&VZ5Agkq2*ȸ[k#)o6nqhnµ%$=e]0oi.*@-ۿXhƶՋtIVmp&Oɻ좖75 +Qol}/_s3NVN%G2, A`*H27sZƲ|[2߰߾&JkzOu$w,`qٔej@ wU׿}}{5оM~0_oMLG7([D9Yj--h'@AUkf6O3'N%+cӂS+3ʞ4>;r0xznŲeOI!bCGc7sQp -ܡDvFBS(]x)c5; /b}Onع 8ƱL7J8@lw=nE/XlOuom}u˥*˪t`9=67H`pn וW!ȵةmչ*TVH 7-8[1-k~YCl9:'zf2q29n?-io-qr YPA;[ +NjSWb: f"a|ƺE[Ǣ:q++۞k~D׼ !6J#AB}:(?w?c}|n,G`!K]zk6^C?%G kʨ;u~d%;y;8΃hn"ގГH#{~3%OK9jWzɽL<6}q.:aaoAzƾg s'n>iNjl :lvI( ma^vJ;}܁Y8_HkrTl ^"ϧy,ũ ymBObww#þ;f=vL+k{>v]=SgbBu\,RUJGgDٯcWZcR}aS5w6 o-Fw$~sP{uwꞟ"w) v`7lź ٍK2O铦;E n}`X`￱'^Ox )0mCWE_~ÆUP7?;V^䇩&U-nW# oiM6C/_",.6nKe,i~1MiKSrʽnkE^~:c[b +:oz?9/1p[ l;#H&*s{Zy}`vͺ""""""""""""""""""""""""""""""""",fS^ƙO2=A-o>Uv ﯮb"Sr)*⨧* ؊Ř;""""""""&3HpSB:muo2|7MA<*e )/P+QbER{~?/sx-W$>^ŭfSeӑ]KZ6֬g^iT{~+Y]ShRH멇2 ѕMFU@d~Rlj-W1etQBhѵL줓=eܠx"J L]'6?¡NN%\ +JHٵ{VȤ68!fu)6])"~[y|:ke?(FVcXu3,g!cnRlWTuӿ^<zmЫ?J&{z%,*|v]bSu$n\8l7&mY.J`AD/I w1\਒&f?X&)yyvo2ݺ=EvB%b""""""""""""""""""""""""""""""""0wk3:==!ֻ/qu^oq + +~z6be*G=L NdrTn`!n׷Q%TnL[+`H;D0>.B-WYUf#±lHU.k KZ`mm(={If? lB. PK1= oX%U^H7c]@z >Nl^@=]6lfMk$!?HބSf |' ̻V'C{$"bͽ1鿪vA@@4G}NC1!P1*.M !#BsV]xh^á~AF?@$\~{.f}ocd}>R|chX}P^vLnJOsfVm{H-|' X.Khs w!`K=Nq-]^GIA` =e,ev*I_ƌT6{OQ5,8O_,_PzVpuDSM`YW@N*E` ?tT`S2Rײc=_Iw.Zñmծ_>e IpzY+),Fͦ`y+϶UȎTna=7RVm5B@:>_l񨭫meY;#2YsU"`XP/3%YUTbToF{|ǸxJI4&k³,|fed &{[צ'k\Jk:Nr~=@ [޾S܋Bm:$ViK O)WBV_0CĮ;Rer J +}@ zz$l>`p8f4 }oAGjR>3Ygj_醊]: $^Sܬ\N@qFP뎾*e;N{|œI;!e 2v=F wepcdV7q؇'/FzyXvFDZPG OɪYk/eeQmR9+! :rkڐ:N=@hכe `}lU>Iq)֠(1g/3+5>I]u='u/-}sd٢QYlz{o73^ԩc}GŮʫT(կ}|r\ JĴH>:7( |؞ +6{JlQ,[T2z,6v:&M_~ѺʝkJ>`{9+'%MiɭzʫE޵&S7>EX'@nzv>_G~ݼ%T}UuMk`?Iw.ŴFR?\w@Ir&~>zQjX>j+:-6+^@wJaўtX=p~D 1g[n +nM] +?|"uvǽ鰨ұ0`2Wd)d^XXN2aHc6J? r&'<|nE, _ϭDxS[{ .m^H}hg'xIQu{ yB75cb0,68+]俷&r/e]koܓ 3_; ͕g+^U];=f.ɠS]+jj֝tu@oDyRqKܖ=.A=#~䪸e-XJ4@MHc9Wg7bwۤ*ԑ1_b; w붺+l~'76X3|=Ս|]+]ll?~51=չE7D>@"mTP4Z7y/?ru4]Z>lgw/kckT?>J_Xerܕ$ѓoo[멖/[tتlj)#bOq[ǦrP/F;vi;ƻ|{(E +Xk97WXW֣avTlg@3ỶHk8 ~Sc#h4_N)A'^gR09VadPij[+!bF&m6љ8*W}SݺA>G}vZQQW@ߠw$Lx;-]ځ2Os`-+䱾zl TzMy=1R+WJCD|}&J"""""""" 4K#:9O!qvb[&g羰ST{ T߱$ Wm#;kh^nDDgs`5C;UI@ JS< rM~O̩vѳ3zyvW@ӯI;P>g*bP bD"TU@oz,׃t)mPm`l|DOm}KseMvLu7Fr;_9k"X̪Q^J=3+!Z0Wj6J!;;I(Nsl+VǬ1jY}=6fܗ޹\OsldMuvBe ^6ԕ|qJYnkcg׼44wK- jŦ^S>C/_yv&+/޹|4r7"ܟQ7㢃\ijf]<7jVR +`z3V5כXV[( +~3! +8u)= DiT葲H.p_8ѮԀv6f/|R.FH ja+ +WtUcc++0cк+؟n]|"f|{tw-~Z>͔9'>H5yw}ZL`fm/zXέ zͧqBV]A`fάb(s} +@H#W50ڐ\d3(##dky.~!eT[a0gw~)(TYot)I;#k-"*ʑʬ#RURB4 v5ڊ}U2{Jя^* +EEQ%21C]YC/;V1@hū-B\:`lze3o]'ymYyۨtruE)J҈hO \g1uko,bw[۫=K-,Z^ +G3_+vM|yU\V(Zj (v?I{TU=J]>~CϿ*]5k#nFW-fFvE6(V}:.w3ƸK%vKm*dO5?έ$~x9~&]yՋj$މV_Nތvk~IDMVY~Exv +kXPT7]YYlqSRުD+c:=kronmbn-C/B̮7vY2m@{W)eV[ja!R l|mKcI;$֤ޥG; +F }+gb:Gm)czd\^*mRːAWQ:ccZԹ|c*cbrܭ_ߐ\{o66Oq#"Kr.|zBV78'=ϧs[E."ȪVͭzzM7H޻~ۘtrH$oהu=/bjD'-_-wf@LYG u_7oIggMʋv=fRb{q-, I\WI~I?ҏWCJGƬِF %$t^G만ف,@}?&f4q|,؃!xuo#[ďG4?]q#сk?SFdS\2Ii$<ے Pil]!_XwoFʝA>u-fYa+T,^ +c928.˘ +~݆G+WoaʬmX;רI/rA6:骶Ƿ`fDDDj1nE[YvRu썍}e! ת2N=7XNAwgz*7J,AC=}tt 'Rfoȕ94%ACk~ᰔ(@Z50 zH\$0Zz:u1K\o4ۏemU? ofS+5?'ڹg4*FJ?"&qnTZ){eI[ ֞Z:l'CgŻ[!׮kbEEȹ:+օjC@c=S)1<uٔfXeu[Q+2AD4ZtX*p6TܾJߓlXB -g} }Ψ +c|k9Xn%SF;uVN'/8k׎Iqk&Ԩbe՝MwIb+)/~yYKǣezc=cQoy>[t}^gnk_pw[c]9U/ǯDş qlI8``- 02y,^5-[VNP#cQDJj51iHkKTVP@hR""""""""R,AbC{P: z U,:NAֽllZ魾#]Hy=Ga99!S(ҺFֺY#KkSt%)W[ҠuzIٌŪ[+f?Lxpz׶wk=3aj\4FFS;1`Xt/sHUXo]tҕVGl"oP;D^rk9 WXVec7P +7ݻw,%QPINo628olPu*ј3LJr^̜z)=OԨߌnM|jڣ?E"FaOwM='&̛DCuIqW"˩ re:WG-keUU5:Ww6,FNOQ=V-|*_IԬDDDDDDDD1 G9ZW{XX v5gwsQĻ[vއY:YD%uֽ@c]I;̜>PdyJZr$4ŠU⢡B`oYoBo}é_2%XҊ$h6/ +* Qfm7H$>^E#) yyZ$aV-#&3,Osw|mxVZ}P]y}Z}uRwJNy3n XZN_]k ;8b5uMn I'LJLnGe穭* OӠ{zJ?x ԉYBhdp A=CgbL¯]{,I=ٙS1>䓳=eӃY1 +gC +WSF̨)ڝc;L_!aJt>5z?M;s2kf|Bl݄pܟ%e*6E&YJC: ZaPYX#cFat2-~u*p +~-zeq$$S/Dtl޺d`{;q,c yIl '-i/eek  PK믤DJwq*/EmuɁX-6-NLǪ']]۱?yP}%eCC,ՅE,R_: :}@A%b""""""""""""""""xաzPI,t>di9RF;hI]@3oS_X0R ONR.@$2|%2*f'@ N Y?eݍgPPz]$ry.)!z*#,N>h(H<\ +/Bu,PlL RjutuDB=u疹f@HܦbfRN]jF `q* 1~,*ւ,d#vEX5 `gwORuk9_YsXu@CYrP0$}=`;RѴ`z +J$~3V#<ʕ_/Ph@;q+<N$ll舘rg/xvɳ6zKng)fa[mBkuNَ;zFnF xHvD%Uߨ+.AYdJM:{+X^(TEEֺ,t5DJnk9=Ӏ ;(6P{- *v.eفC~FcaFɏ~ȹbr5Tz,% +@춀߶%nc +PIzi>dg1zzo޻`vsٞB6mR:==#_yl*NG̐d'ubbO;a;~2uPI hl9ögPYu,:uҜ?!@V*Rɱ< }NIY vHNZl.w7?#Lӵ~ ]'G%p聴%m'j?>s-`U뜊O=K鱑pop)GU,s7=Trb4 |9o]Va*wXhk`EjGMx +EmXi۷Y({Y]+~;=LH=XC5yD %ժ)[ =L$a)dk>.^W!'D){ܕܟ䲗oB@A۰}MN}<:[-e^UQ6[PHEkp دtw(m@H,; @D*kⲺo[g`o^!ƷOS:K)hKG)bC |(o?ֽZNWkUO=縈15mXnOW%y5\_פq)xQ_'cfB|vEc",:7CVɰ>E'+e wcې~uVkh.Oz9oK 638Zc;6&_'o*׏ro2)Pt=Cm 8uZ->Rn4__Yc◙d)0S1y>>g Z;4EC>K84J,klߔוtmo +rUޡշR$}oZ3SՍ^?/_mΖoF\>}OlyV_*b{la-nrT}&'«\vVS$[+{ggqK y:tEn0@QK^ڸ ^ Ǩl$ U%e nBk܅k_8aTu1Aif)[ldV#u( QهoYfƮlǰfnU1#=ڸ08g)s>cbxMX-Y=l,:ndzmu5MN&7ļ_HK}܁q +s{ +9(nn~oCo0`n$1`~wbv nĉ|͎q;!`3 -4Gmu8zŬD#*HĮ(ZKw~eڰi.Dب ;nH*EMåX=Q3oL}붾0{LiPMFXt}NIS 6} ̾`7/Zy~/OQ6kzܽyGOOo,VȆ1]A3g+j*}o8ыRV^RVȦ~=؝L~6=xqۯoRisiq,|"1PA:$w}pvE|GAGoefdryYF"ĶR}&O]k㥎Z-ZΦ,T<'`I3ZʫwYPm޻k˴MTrV=A@#r5u n[[IAH?И<K~M8k>eAO=\q?}oc|J7|?MҐo-k`Y(U:N?@w/aqܗ&vt.$$$k'm4=#}k)_#vU8YzyaG}{Y*& {ˑN1~Auw[oޝ6+[cuXTz.5/,Y |=FC2Шrv |? 1ym&ѭM -zY:: +mLՁiCORV.uBAbtO#{8j2|孼pKeokeV{w7MuV"fJpUjmZQ`tN39녱[8˵2|cjmǖaV*FZMފ+ŭjB(UQ&j6 `=C`hVtd_l +|Ũwӯ^ldyԯ?{P$ l׼pxY9e9 m[G%m[{%{Kj[Q٥̬͋t: ݀=#QVG, 2]Y޿6u2kA@S4Fs7<24i5^"" ({_c^tuoZ}眜3@ֶv=hmhО`*CchiFv]l 74 N'J 6PzNMmJZ$z tDpd(kR-eSYGJaQǧB]ܒ~dAb=xWjE:Ao]h\,(n^׷~6e5uSt:KRA$;{{ȉWrI~ճ؟c/ r +v7CaSjWO߮s䦺Ig'${I°MAXВBts;>:7^CJ}ݓT"`إX 6>D-E*$$b""""cq1ʸ*f@% 6?!YrT#'j"'V ?de܁IH}jvPz 3[]Ji_>X-D~'X@#GP`U#* Lr=& 7锂73x6]OB2Vvèn_YWdJmՄmƻhaׂJq%ծBW[VcA;=jjPEOpe>Q^Py +JHow*or.8)ҁd DDDJfdW%uјκ{|XXXlԥU%Tz "cχw>W:~sֶ)FAHV&mU4#o@ScӿW:JjH*~jNi6gv7"b@=JH]hvKc9⭉^rSK۠иmwd+YmM֟fCY(I;րTLYQJO8|fZn ސ\v~_/I oa;=JWye6ZRbQAc ?F5yhkAG½,T,TާGa|7F6Y:Ɔ1 hWWV[Gn޺8rX1|)f=xM +V D{H8+2Q)>5-!wf39kMoefdRH%I*Hu31A_Oa5ىLٯ]Vkjuu?ڀ$d""RcxZ^^ֶ&HV]$_d\֥ :rMT%Ի.lAe?"Gc/sl/[Khh$S]]KT+{ YSƽzDIw+w_zdV@9h ]~c֋Fϰ]&oԵne>LDDrܭb㢵$(ZөoRv1'=S[^,(:ORpܥ}tX5=GBCzJJcYhpNC*Fw2q^ӓmtP]k z9,Tt VԆE AčuWR];Q倻$DDD0)η +Cy2xv{V)96 1>K-l kBl}iZxzUt&ݒ1#d7}XXԭukX G}nHq-Q +Ш, }6%9]V1EB"$NLp5y} +f{jeiVK,5kwg-|D鏤K:3Mv2sWaln{WEYMzubu u6ق=AMgAbT1=Dy\yl[sWu~-7q-s%pcحfS3Wcwv:H?r%jiP @^ \C=LIBZA ;'N3 @*Coܗb~9;&3y Rcb_U9t1/mE=9lv󆙹ƻMucqB lY Sְy_]d*kb$Kz8dXv +KWKAR0ﭒ72w̩ū ZWuh{z_c#1r`,{̟:nWy aB`B}7M/Ss>݈l _BAnne\Vԟ06տ4} cمc&E_cƥR ;Bwߧ]J`[nE/mSjzX*W>u18^\[%hgrUױjoEI{3`^w۽w0q۬uNRؖEܞƻۖĦ-K6 ڂ\9\ёEhLjߓf5B) +u[Y5Kz7TGy*y--^n$k׿eyP=jvY#WR466Oa2FG!EUA:.~_4d=F̅Ζd5;oN\ WF-­gbNH:ϑgLMͮZbV$0w8-a+t!:c۷y^"\F; ԇ]Mg<8Uymv%>`4 X5 +:g:V޶̇+p02٪JL'e=9i|f,d,QT(Ek~ XVnwWKd[w1\Je֮BZ{.e|;iԝl +*l3<=~?b|Erzt=ޮ6XjɲltKru{g!gG?}GN3TԽtn.̆7םQǣ!ktkXh۱-$M ߔK9I^uNx܆v"5h1UA[C1'Pt~s1k={ ; [lZ\`>El.:kܲwV?۹[C[.uv:$Brx?ZњRbկGm.uc1(Tέ@nĒv yʳĭR߻uםh^l;Ģȿ4Pւ6Yh|>RM8C1yyVYU=WeGI(븞d'8Vm֢Ԡ6@jڿt륽F($l^ZmZkr +QI#۫zMCبttp!մuivd["(qѦI;h8l-fN$۷iQeã4Xy6oNܦG*ƻ&l[jT /e丶Ķ*O`zw-drc}ֿU@3 hvK#Um̮X%Ovu@;v=6+cYaЯhӰϩ:i{L 5XʃubL*/ ܇gYUӵA,w؝ȵxRrFFALvB7oRxvEև +?IkE|v*-у cI\w_Y/eݽ6Hנa&L'0_+umkmkX~Ou=ubk6-NtTe/reATrطZutI޾Bf&?73&̗R) #E_ Q[d2[j:gPj{P>C +Uf6. 0)3%='ZrM 7.zmuE)=6'K+YsX|zw=rG!_%KQn[[=,4AAW u6`GDbz'AT{Igw=Kv~:}%]¦FemVTP`tԊM|MY#u c9xP|kUo3/W}GNx(TTte]kx`ZBe"oMnv ==yb V!A(= oIH8|„?0gbo[%ud wkiM_W25^U8u쌬JYGJڐt>NKb\H\~)Hbi;?7˔K[KXE;6Iq !۸#1΀hXǷUUF'I'ԓW&W:0ǡh\K["By0@v +sE Զ0C2[u0+'I9%YMScf +K.# |,*ơօ +֧`ib>~Ş lkVU.N UvuR3w>){3Ã5qC^3+)V@Yh3|'DMwi֌szDWBTқtkgd-x +k|w{7=7u)GY[Su9v=!IQѠH{5jqhjl^: L8aֻ@z ( +$ A{b&/kEML t +GACx50Ԣce +W=}T[2W Ra_ +2-LzZb%{ee*{{K9» 5 +,->`; Fw _#WYaGN r-[%V _ģgEv}"^S*et.@:aV+.(zz>7^ȣ Yb5 +VB`v `k/I?nb[d:=ﱣ-rú5W]=ϰԳ|zFbe&[,*Tt%blԄ uvodYEj厖@6 ]=>w!ivJD jZ\"VZ7EQOy#ZrK5Pb Rz+o麬J2 +u% f;"bnX6ݻ$kӼ/{/O4 ?ynQz]jH:wա{͖-JAA$s,SP]mc[eRS_CvOru9~;(mКma?d#JDDDO*v@;3DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@1 ϷkRt +!`΁;a\ϏvEY5寙U,W`7AU@4cɸhlAo׌z,S@Tz;'yw%SkRzF%l T0$~`d:We|O}*/S{ vcG@7֩MrRݫfk3 vy5Z%}J؏b^yG)O)CuRsH Hm1qmSX±[#@T~-in=v[wJ5lzG{ccVʉ:˔_fҍqi!rXwe +yM]wX {2ܒvm5*kir,IOJsmeՂ? '^oo(ֽ5Tk](n~#r'σn^B胲{ C )2?3$u>OK +e vTz\ yvfZT%*T'dey)9zEllK+qXo7,WݓVFk# e]6~-l7+qwϐܖ k{VP oS/@P(>ncfg(]Z>ݎDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@(Fb""""""""""""""""""""""""""""""""""""""""""""5c:[^ FOKfm<}Muf>}eq` 3DDHAJMvtH?/dsv~EXb1BA @lA&rTe5~_:l~Ex^TQ0Q߰{L~W'e/E86;V1#xf'e^}猪bI# qTSe[kIܙћ1V^6l]X~mgN|.N^19ˏ}v;p穅%8\-]('J46R͝ 36WD[ꖡTG|-bXC$3;,72F3aK^dDDDL/!..h6SI5+,_A@}Xq' nS*!OOpz'sϿ)KاK +@W1(9 _S4뢗m{L?/VmyUV [bܷHjgK9 pКjB;UF,@ 9.BҭB*Y{3bh/_ݾf"auyc ʽMZ4 +V=^fp2Nn57(lR弌Pk(٘*=33#{z +#иv)Enjl7uuu5d;;ZXUNK2vLDL7ƫNF]9ޏAm~ỵZ6*`$?G_sĀVt$1{TZk_v>0r\!eoߩcD?EX( } s$cM}%b"""""""""""""""1\&]3*}@SE~u`;v{RQGT +X\TSo[{ ?U3H]^ˇרַL}>Nv =y/U1bNεs|1lKlbaS!_ez +N{S7ެǢk/-4{/ǵs.a(onLp +hT}oRd1P؅YOڏc4/ K<"ű.d_On=oq7)5[ǸT[كqV=iU #Vd:>1>fLưS\:S=WD~3)WETV`C̱)T v]:31;oHʿS0fj"b,)Ԟ+ +T{1m.>x!+P^6J'װ'O|-E@t ZYpnI6[_EK[ 1Hc#rLDre7U95Jڷa>ܼ3ńdpř>`)ҿ O/ QKTu0~z4C{zkbyYj1:Za?s{קdr8۹,,ΚM`mΝ;o&x6Xgt7>]@X6Jw +:@P([~Ӈj }b-~z{{{Mk cT;(߿#r8c^UإX}/ohr-jĹ ~> jk1|xZcVlEv) @;Z^TavoHE.u{6E7=Jq̪:܊C+A`R!}vW베OCS$Ynfc5g)~kxu܊>㩵j$|7'({k6T7bx[ݑX]u{۞rMV_Xu(WK~!yV`ע :ˠ}QjnEt Ayy~lğ`;atϱ>n@$1-z{.+mN[{wZ3rlW^t]zu H#}Ʀj""""""""  r6b8EžW|NXZw~?+~GXY?;?}GXW$ɭfP) ͓xNGĻZz>-ӡ20^/~'juq}| J"|GYvAA|`pyLs`^IPi3bǵ]jF*Xw$ QܽnҼ}Γ̵"~!g!ˍ8:7A6 +4B(vg=V= +_`z}rX%t)llZ΁!Vb!'[m +,l +u0Ȟ*hve 1>R"΃ύzV oJHQ5%q8,l+ ײSzMVodb""""""""I~%HُzbF& i70GoTLQb}UmcYU7Ie }&QVW>z OE螕BDDDDDryr?\L}+S?z;2VTQ%`]XUVHjЏiz'tuۿyS{[} $) +plXLg{΅~)yY[`ttt} .nV>zMBG{~s-aM*{)mI?cmD +2Q Q4U';øeuma.;u]`̬eduo kӠgUV[r^gAm~/ o}=Nn1JXvО2'!,FP>@'=Bcߐ(`?uIJF#mv걁@P7"$TL޵B RN2TDDDDDDDD''EW+XMӵQ xq99Xۊۇ~OAO,z֧_o Xh1%Ge,CFwy*b$bv,vbOs%}?Zcy/ +sr9*fq^vzͺSP;x?#U(mpse8%?BcYe1U׮Ė#9d[y==zzӿv'rvINǕOcy +s֩X.w}QJc֕Ңz&wMP'* XtS1ؔ}U]tmz6`{O~!G+9 m5Ԫjuta!Voz8y?؛m}}fc ^tt([{ k_Yuk" oɪkCyXҚ d Uuc%V럩U'ggcz/ksXE_@#ofiXV%Y7(tqSGŨXQz[/DDfd׌b(@,Ocj{oQ1ۺBAnGnǴvư}IC92_=g}ꍠtwOhɮ*:ԽOӾD%#n;qڤ[mKpmIrԯ#ut`oؑ1ʭC+ #`x+׎}-̄Dv=CV]鳩qqj^(vۧϰԵkǬVއvvk+ڞ::{~I.׭RЗ"brjXԗ+I=:=^s4яmBS(# d~HɧCJƦ[تAIy|{h|ۭPտ@4@Oo>^f;)_G?#}d.Jmrq,YXNDlv2qjC]N۸?ᰱlՐiX(>缘;J8I_>NM1injtwPY (H#Dig/?k^޻o]V""""""""""""""" +Y2-P)`Ƿ̐$lobш0jR4ho׹Geiږdqe A"bt填22k +?f$^ϑm +Va` vl21 E7un8tB@z8<58xɌ֪kEOa%,0mp桰;i} rS2aA#}0cvyz鿚ڗx{SiS^Cd,d鮶vs?Иx˲걫֖V!E;.Bb,<9Z: m }e?0rWmu3Ggaf!¢k]]D?H]: +[T:A lWŦT1ԁeAUp2 5* {v9*z'A~DZ{ ,W"kkd7!53!Q[}yBd`/u>^. XGc0l/#Fk::zD00^/ߌ2Y_z=C>o6JN^Xƺ,E}2ƭFACYvx1sW[e:²1_l}DxoU-NR6z[~ޝ$|[j`XpALo7U_KE~zCEkw?Mn[=uL+_eHRojn<%y gߤe ^ +kߤ=)S8 +ֻKv= +[,̡нJ~̧'f9[W +ľ/}5r+ܬ;tuAh^baWuJ [*Hܟ bSxkY h  UI b2%%et`]#m`ܗ_`bL; VwsT9(u} [ebATs%s1qm`pbQ{zRݿLg nW\UD#2s߷̯/xz*,,=ag7E7iXng..;+ʮV#L?eqM?N=};9<;:ש'G;ȸ3 ;뾎_A^VA.2k Ame@Ϣ#s=q|,OJ]*^p)Nw֏ȃ؃=SmTjNoϷy݀]Aj^h3s'ƫ +Rp.@QDk_C^;K-Q ;ytyuax喧&7JG뼽}錍eTl-Uq`/`//**YFPtYzQD[TXz}t ^^:-CMZ{~iwMded6׷~}9,tNOKj[ۼ YkРzRf6UY0ڲG$^w.J$mu1#W-[E1݋ +XMo5-AAPi'Sg9滬fTлB[Rp=CcG()s1p"d6ĀbI3dZـ~^ =)cZ 7b Q ]oG0-L[Εt#ؙ\^g2EV$z+`>kr`kyuf `F olno q(ޞKί:}&cere(*꧶O~/_IMjl-,]be9|l?K+'A]Tj-/S2~nJ܊.]I~O:>`]NpEklE;[R gԗk'[vf +& zk{Y\jK`XpAb" 1"3Qwx=a8F56!ڵHPAu$o}&9xn` I,P6vbY6;a-UتΦC֥Wz^a1pwZ]=gW@#$lqo4^k}=}$ۈH='+.Y둾Jp !Q +#]ܑpȮUln)V ~ 3 >ì!IXb[Mm[R^vP&;(j&>?þ$ʣ&bFX9\3x`^Ga)e`Oǰ5qV# %O:(_Vv?EtԤPCY7䲸۲Wzz$**)S 9iͩyHjͥv=oyq8*M&2ݺƺǿer5gվ<αP?;Y,@`l_S0`X{&m PIfw1ؐپUgVR;GSd#S4Mx+Tf]*+c0w;ׯcltT{˸0wc5VTkT,zX0 GP`OgX8HC,QB{@n=fCY ]uo詀p~A>}qZ!_^g ."-JbO}8wyy6|5! zH'z#7 SzrXg hox̡9q~RV=Gi Z1 +e]-gPXo2+W+Nnϵc2խl43*|{ybʱY kLe=?=w"k!<JkK G{ր$if- 2 +XzLytS@veA]3Z^4AL6uunSPuPevkRvV-/,RdWu=@"\lL˵X.Vد=L\$΄^4kn}zN![+1k.҅8•lhGdlo;Jߎ:RŗNk/P"bwgװ $x#65 +hֳb5%x3K3cZOIr<rT (8(Ժ9VEdtB@/= ;Ș45&웜)ZvbK),@Jﶽ;۸dĢ.U)E^N9aήNIMkdGbYtA?-LnmUs+Ez*y|N9(a,zTJW7^ p+c̍޽MJb3 VOWON̿1}|GL,zdn֠:OI~RɪCU`CǒO#K<?Ἤƶ5I^L !mp7 efaܥTZk&;ê<]hκ+,u0;Oc7;W1v $̟- +ڜm6Iנ_Oq3ɨ\lu);=bmbՕ,;m_^2"8NnfFS֚^ +T~z/*z]I!BX wY]YIQҤ^va!+ar#/-tmeDtyA^.'*D,6;ƴZ* ? ""(FƤ>/Lҍñu߸}?!MB7+|qjVSQx/}Ɔ%., :zu!I=b[vLA 6=V"%+)}B:G5(Nϩ:Fk~rOdICROxUtcpF ԅ]p[}tJ7B%J;{{ߧnYؕ=5ZB1FSYV^܆M;dяʪXe죷ܚIΣ$!]zŇTGC;y(벛EE(6zwoA=r}.%'U!oӨGsvF-F#^%yv[.zUtVw$?b}c1P2ydGއGl|Ȧ\:ޣɻJw:Ǻ胯Q6x~NC-\7FK}z~Nw7ђB<}fzܶ0~Ԏč^:>\)TY*d+ץ [z;37qN[U v@jlF$u^A^_8ʵ:EEʷyOaױ֦s*۫1m>]uWULo KM&eJiASށn3|!e>Ru06 | c(29^߾Rk[$^F+鬂)xIĹ9XSR5}mp .oho_by'-AX[UFeuL^fE&:+Y~e4Ck]c#:Q ; ֤NžQͫ^[&D#`k'#|kPv0܏M] CLռYVwbUG5ӾћkǹU\: $2x}źVQ>عfWodZ;J~))lze.Zӻz$1FZfc_.8U~>{< ]eXRBmvk=v9c[Yu֩KOoM=b-Imkke4*T,oO^bO[`[]WUF5z%1>qḻ2Su6gB;-SZh[_O }{̆ u=7OSҺ]q)>-ȏ[ o'9y8/{$UP a]k^\#Q !o'{ª\EAl>X]>zߴodQ׿U*@ C}ooim +fB-z^ƺYlz Bd21* YH f-|:])JJ[CdId_kjS*7ʼnQ0q^5J-BӰi'u\wmtemW0dց-/'fq4]\)%Omc'bcˑYI'da!q6%kB:ówcy-X7νu뾵2|h8(=:;ۘ/ca}ZZE}#k~JpϞ/~TWKҤv '׾E}+ -e{إ}CXZ?ois'Ï`+R* mjHԺ}b5" jtV t]裐7ɒYUS[֬48={t4|7c"c-::J?% ~' 8J|N.Ա, NK>N>~7!zk6F=Kuy?hW=%ޮ:菤~ Icܠ+t]lz>-߷i/r 7ַRun\8z֪ʺe>)ǾݙtwB'OA=#^|벝,@U$;)WG=a9o>۾<0bbb}S!:^^yrݯ]!jt I] 66~1ڵWՔ t|>,N3ٓHb~/5L#1Sj@(l7'@*/w _[-1BQs +0U?o]%!i!-{̈́2<Шɝ=D~k[I-cֲَ%?H]Gߩt&8+DE hwP7#,̶e?Bcᅵ<5RcҖ|MyK{GǼؽOemCByYʾ벥u +T,XwÔudy+{k]%~C2r-qvҺPI +D˹;giԫ+t6;l #ҷk⠞! v"-~%\Ԅ +At;FY+,,omv6U{(P%o^o㽏ZNxkߪuT:p:ヌmv´,LgOH +PG`=w)gV;֪ȫQBg{4GeYƮo0`ͥﯽ=&g-FrX`:X M˔r87][1FcknIF`$Jy|KjZg~Qўx^L8)X:28Sw:""y-t76O1 d~@<t1V d*nEue~lOqlDDDDJ}ĬDDeRcO2e98zC+B 10u~XUta޶{˙JműC`>O,~ +xҕv0/ȤejՑ7jZn3FQUzCwz:)?z?.WZT4|'#}"vw!FٺWgJ=LcQbZT+~ :OaܐUcڨߧhlZ²b:+Il I'Cr}+~=zattI({Hd3)V +w{?؏nIQ"r>z+ o$P3+8Ou7oz:|8 +K?쁻~__O_wf%b]vVGcwO=r10lR15{B HKTMUV5lvTzL⹧|ц}Xֈ;؃3縚!c"+ +:)6n,]zAkК#mw!sGqNK_]wuYU* Ƿ=?;a3(QmryU̠*>F-BK!? >~c YSU +7݈]Gex\nukzRz'9L#(U!ފArtq1g"@nNn;59+l j۲7v%~g)^ZcX+, . ;.TsނY[吝lv2׉'ơʹ#w!nUIQ6ڰ:6Y^^-75dAHkh~.UԃFĿrGZ LznXfddb7k@j]ɧ8Y>XR_E i7ujuk?pr;7x5[{kiw;#66K3t +QK1\oU[MeHCjIwռLr*N%BBVRu~dC+VOM,Z%@26!uca?v>;drWr)@UٔR11ű&u:e-ϰUFBXҧgC7gr8R )SlP}ze-ܨ>=S5񪨃z?֠,;̗eeW_}'``{.z+564vzȫ4wM0-`UE$?/i~K'Ư+!ȥJ[X vfG3ͳS]uq6qp_yHD-,Hde'NqGR^e.ʹWaݻ l~]יR5~v;t0:7I;-p|-Օӌn;2,%l ڞƵy9?#&̓KWB +6E2Iq▨h{0cW-vNT;^ mN}r#D|o2Ǧ]bPC3!I>vL~.^&uljAZ@:K>N3+-IdGU5ثբ 6 1ڞJ(GCot'[lw+ u֭]uu3ϩ?!4sQ t&jRi0'^&{79F@ڌ{ng)t6:X5.s.GJ[E' hY<^FV XoP3:U[z l7a~s-~HmX[+u`!A䲸4(؂ޠĪ7BvA3:WߚTSɮ.%eTwր?/ڼ?g#XYKu/AkI2'r~`[=C@t;艏.j'!Ox˱a k}_ϼٰ=z۶}z"  s#] (H!7!KrtޖpMnSzV۾ѐs5ZVktP`\_lvn3vr v=o6RW[T޲w G%mʈB ;$}S +U\UH* WwiqkAU +$oe@$~G3rprQ0>a ΅;FgӐS+OPPH q#s.nC5iʨVN +UTz'ϰ>жռ'}?B ;d긼.,s2p e>- +:η6I]nA]ūwpe:긱Kk6Uz?!0Ye[PBUQ|yRĿOMkzR71#÷fcyy6t8Dj )`QߍfoiV%U`:@񙩇lL6t| 7£N6Ik3v/ ~ 륁}m2\fԵ:vI:$]yfգBFq"꺀 .:$37#&*u+ch:{g/{`dYk9uwOi&#润;`*P;*)Op$?s,j]kҽ[_+a{a }fS"mnV59V. |[+XkNw =_I/ΣMr=c4Fk =Ƶ#7!ARe^[T`H;Q![܋ɲC kD(Oԝ\&Ex+_mV+rS}>YvJa]_]G!`XiFŽI\veع5ٱ͍YS3.lAR;Yc7) OPǡ߬<+W^mBX ۹λK|?Wfeg@QaP/ezT:ͷ*GEU~,(]#@w߹w/-6 7*h0_E;{I8*S[Tz;h+!{3xfªW)H*,YB裬;IIf-nwU>[bQ~>OinjG)(\mI;b~%*QQ+,^x{?ܥ-mlv+@ }}fK >0SWJ҄WvZACnMdjvf = N{w˚Gp1>h$>Hʚn2˝+w1ՍҴܖ+X7kBӽv4TkV)kG$.֠tdr ɱ9-Cyutsܖ>?)nm|^}aX=UK7<7!5fmPW`i8L/̯׿Bazu%gq9ٙus̆>H߼WkMnקG(c6~Sv$lS2|DD-ddՊ]QG3QDpqqWisc [~WC?@1z ~׫zKr-_VHը>L=UJP5Q߲"y z7؏ɯ t1Vנ`;7]+̪^,M{Z̧5KSbX*?.Iz%bzzȫmaz<,@IZ(d`F`q=čb7EYu"xq]Y4E[Q`w&DO.}N$/DDDDDDDJ}2#cxA]jvUT~K-U]sNDeKrp?5cWFU;=*gg^XȥJ{]Ǯ[lܻ!q8yv .åǷr$45+!|jiZ9Ve*0C5j%-+[;y 0GpSNb%6I` wOv,K1H uӍ:ֽd/loƺ. +uhUՕIT##oLGk>|_ faR>9IWʯ*ʕd^wY^`旿\1" 7WV5iZ lkΣ2w!dYBcYPK_R;4;~23ҞɮK ZMSETJҍ3;?k.APp<:zI +XvC@K\@]0R&fZȱꭚ`OQln`GSx!2J**̥j*eؽ`uؕ]6PupYX<ȹc +z:PAHec/$LL +nǩ4߁frwbWH9kmnINzt;v%}e>XrVVH`@`{q6.eԂ+ZGfCc+ݩkP +`t$v>!ΕV+Rzvuog`|!r}VSene۶ק[7q|P~ΡQL ZP0MwPH+?i|Ld[,u?}ݴ{kdLP@Քe:؂&ǴӮ6+-S̰1D븗.e"-YWޅw%?MALg+NھwD=u.`>}>Y -@+7OOx`[]Yb;70)JYu|CLM-b,˪U@۳i fEũF- C X `kI̷/%,D@;zF2(tt{wK'cJc"v?@QK3N]cc1qE`Yo=;9/&;bfT:M:G Gi;;d2+ڵ]j=MB+Xu_G`7S{kۿW|쩪`Υr +_] =No<)-bߐXu+8=? G}ƥiEֺf*/oXgRo>]Agu֮6R`G}_uy(4CV`#+@_-*djʁf{vK)ǡlQ4zqnzoP?A]}J=6,jQ \Tmz-~|zWRTCiq9˭:@F"@F-_rb=v_&c, ,{>z@Op"2iʴ}CpUJq,|kt!~p1q3y=VibV(t!jQe\u֢M^YmV=C׹LH::.7 '0Jk zJgfnųB*b=IwV +FR$#_µד}z|ty{7全Ҹ%K航>zQ0^'9!S+9 +Vo!8+[::=@mt-*2pl53='qw8,;E#,u4`Nq.>{4T~y0dzQgX r}˙|ZbE~j-= )}o$lx77̽1DZ2꾄+lu3wz?Q\w^'6Zo2wv=AH;xnC*8mڎ(tإsԣϾ+]U}}ҕWRe_mwԋgrrzjG +VTm@{wUs-1ϒ0E*itwЗm/KW]wrN=. +T9C $2DDDDDDDDDDDDDDDDDc)V,M糧G62bVW&^A-beӝRCuS]&')eMKX,Ix$l-KkzzMo71W,vb?d޵$`dX Uɒ"$ozu߫&z"$c_qmE>]ђbY]>o/OGP=>(وa .G=HKWrؘlt{6Myh,)ވD"YmuY[0Eb5bxf\}fdvv {*v~G!9*hzwU4,5ĝkc_?_+$ZSZ*ʼn w19NTbzAuUuu݉v33STYJ޻z6g9l{-- +(Z+BIO]g"ۅUUSVfֻ:'O%k%1ed:ܪF=&f$gks[]Xa7 ܄ŵUW=E-}V⥌,,9˧1KSbXh[k~֙'e^ZU o5G̚D0_ˣ"DC@F0X?x,u2* + a[w#{*5y@:F}|9ԥulf'CՉ { LDDDDDDDDDDDDDDDDDDDDDDDDDD@ q^ԻjZŝݘ@Q15i\vҝ W}_ɻҩm3/UgD@%O?0v&b"EkSZPc{GnEg jjiHW^h*U[߰[qj6v>a oocZ̞^ffnQJca$S}{%~?:K!Y(-=(DnL g=5C@r`-. Q}I:2_9~Fe5X&ňPOn؏#v}<7 +o5m֕hXbh~9-3)aޝ z>l⳱9Dɤ+bDH>b +F5~|6e.ޯ@/( ? b^m%.cj܏jƊ-HjkY8||Qe< N='rwȢ0MJkW;kNj"C9n|zW쥻X5eYF`g[ɯ2uIvЀGpFQt[tzu l0/f0dSA]NHcq_79q h(=~GrHDDDDDDJ73.R'eXw}\DDDDDDDDDDyr1ZS\k{oGr􏗬YTKX<*x:,WC{`_O^U<[Z߬uϯ=-\nlrazSzO}6(W[ +u߶ϰJI>{yVPȽV^PìVuWdseqm,~k˗ŷQOܹk?ɗxp/L;G~p/kuOdSiF&N'+[TA{nm0V=֣v~_#sOܹk?-^h}aJc=$G7.&_?re8o~p,nYp }t:7[wvlO +pqOuCuV߯BZƜ4vXҀ?1bURʫu5ю+c 7QvͭRN:zsVSH>PL=mu}Nsg hw_lo1(2xW ]@6^s8kJ]76¢wKy5rer-ҪQ}=d5@.Ŀ~u]>% 1W(g{H +t}/P9;*&HF }{r{u|]nXlhBoqY{bcY#Dj *"%"V""E*8wȽ$*I:A8^^{ս;'sLĴ5YaH_ruJLo&V:)Z: 55`#[$xu Wd.:!l=X9g.ږR6tFuKɹ%ƚB;Yb%<=]+%(bcԺ:xj'qnf`u?">?_1Ŭ妰<*zS5$NH6 z~RW[vlt5}ɑGͪ[\kλWj~}ls|Srҩ`F"F׭IMocͼnoc#C'6>8JkL kҫNяIU15+k(Uij-!iX{+bI4%b"&))^[vKu׾Cf=ed gWEkGSoJ_6X`V o'Le%aخkC? ~=J9^z:#i=${l s\ܿ_ڞVCdSN;钸+=w+R;IcmWkqcS1jDZZ(SIFu(!U$t)qIjy]hOŊ$ȼp9܆Fj+J+>0ӿ kqk+ms* ](J;I15qee^۝ҋuK^ T wcG۴x[égcm4Xuu3QZxc'L+SJ~Jv]C!ING|Uo~;R892y,ȵPBkaeg6o_}WU_HW򐎓{k皷?#[[Cdkqjk!sz匫(CEdoa[Fa5&8xh£eTȯYHd|Ѽ6^q{ {L%?j:Kw^ݦǟerWVbGk&.Wu$ YqŤ&E~ނQI ]}{i""% UKJE +COqˢ +PF"@"ckQԫ/n^ǯ +4"$NO;:`IIFkβO:u}];( +[nrHgDG'[j6[kWt!٘kx[tozם^WV=OAV 6j&rTE@!U +@{;޳-UrC@ {1WxS]dr>cN˪m'+i@9'ԟs.ċ`/ł}{d^ %Ԃ;}8ɉZZUL/'5̫b_]~qX<:sk +BG}o]ߤrIŌI8qk0;w\-$yi}#{Wq6k Bڳdj20CU+8'Z,7}}^W*Ph r"""""""""""""""""""""""""""""" Z? +@Wz#߸8E,@I=r6+Ȇ8%'GԦ7/cEc +k.Cf lz|3֥.A$v}6Zu{e_ʯteZ]`QZB2t zy-:64;4ZmGu-/ /Z(HbS@ Bq8 hmB}dW*2/t;')X0DfeUN=Mb{V {05) 1oZԊ);ul?ߊEsZ~NnvW~ȮꭃG/-]7aX5%O)/?g:Wᯟĩ޶u.>{z?ewlW]+ӻ;ܑ߼׮EF:.zA* F`"x7ׯ};gބ&'k'mc25b[wݭwg(@繃_re+bk'FIKQ.Uԑvz|z=u.;Dtb/ vz؞lǩ<Ƶ;>߬q(GvG^7dn9\v/v=LvB3('CIQkkbS(`X~#zk0<ֽﳛ~к5Y.EŢ{loD,1,1o G]X"!:]Shoyr,Xu^[ i += +OI c?PdO./WNzzLnZ衳iR?95+BAo (2k,zmc`|gc۠l4Iԍ{YO]gs׿&R=_[}W;.UE*ZH +_>]ũK +l@|2,VQ!]X)G%Ε][]ISr>]շP%z][x̶m? zF{dsh j/KF(ͣ'UX~2#dWr3X:;DpcEyeL2oU:WFνWm7kձӯ]_Y挺rj_GGk߾ VbGr{Kur%ճCn`w%39,lZ ,r6]MEu@~)=tGGݒ˧~eRǩG}>g+fcXBASN~'%NN*@f=jʻ .fњTXa0PIFrǵ,J0ais泭zc2ʼu#{a):3s}xnEڪU +4@,l&7Tʽ(NôG'溮 WRu۾ bnCh0,?7ܶ&=ˏe!pm|3rj+,T +=[DC<'桩Q`˥'`A\=@bYS2uL3[;+1E%1C/DDD-dW[[k"bG3SM.MA2d7-ۤ*і +V f1E Q]oq.}*ʦp+Fޫ$OOVb>3)zo~ Ƣ|Ƈ lyEsj>_^n,V"հ7Ovg@Ah~:F/9P11h.ŊPt8{/<'K, z.P__b~!Q+s| sufz h.i[{GL'EG+ ѿO$MzuL% +^ +l2O|#b+̪Y6fVk%ǔ6W'xiޒ>imY k|ǥS]{I׻v2(㞜-UcZUT|Mҿoic"TͬMUVϰ952 0ER }SZk+ +m:b/Ġck!gbb歉ԥ"=d@^dk|o-˺q6;0H/*8rJB=A5ۯKʊ=YUɚ鷏52rPH"}o`K^̽8L[1&Ƴk(TPYJb@׬qsx1IDڣ뷨$ϩ FhȮ#$\^ 2`.4570E5b],{zO3:eqpcGI%8̞/ +U&aUT OBa-p9_-jd@Z:gG5x͞ǧN׼]n=Jy㌰5l ~36G%AlBTNJ+s/~zšll,9(4LQn513~#'E͛=>n{kSWk 1^]~}հh9FtO^^I <ՎQU$ (> mO%mXl +:#>}{m|53rm9 c]&ĭJҤuzazH-^gS[g0q8ĵӊ΃,BK#yf+>޾wwn@ '*ZZXljTw鹓 +_V{jGF&N)-mbgf>פ&@@_@Sb,Fh'7o S@ک4GPgĬfWuT骠ZtOo]K>óþ؉juRnI :uˑa7KRA@mli/YM)kh6(A;L>=96qחWMJJ-UFE[m/;O>㬮۪J~[$.˰}L<6g@ O#k~_[/Uq^Y /1k2 cZ+ȩ nt Dtm=&w:ǺTB切54} i}E-F,~-#gC"j˶(xB1h0nUgs*:T=v/ÿS c\b H::#ʵ|EQ96==oOiXJˬKl|UR妕$;@$"g_؍VH5IX'}.i-tS+ +q?޷%܆#qx| +?^^g[(ֺ}wR"];޻~" ↓^=ASZ(V(@8c˭SzJކO5aQ@J^Д ɭzT./3V:۩6o]Ϗ]TI~`IrZ]]YO}Zgl׼&5UU@aO8T`Z*J;! Jb[~=L6Rt5%jZ*5KNrVN>`Γ֊?1u=ُ]åXhw>Il&֛z lj{NҴSӰozߣ|{ 78%OI#c9ryO0 +JXt 'dwjQ֊ l>Leba +~T0#cEyJ"zYCW}u+xk]~%0-ˠ!j W #@ҽBP[0XҠV"" tFR2;M${ïȬ~Up=u3{1U#w_R֦l;Gvd`̷0p99([:S7\v2+qy\jE/@<]|[UTеۓk;`W2X;iǫȡ|@3&Է}4޺$Oy  :~2 +lҪ}@lxy`ע :L-bq܏zrt;:fmk}l6hMԷmd}?i73wc㎅GUefd{+Bdޖ(e5>ؚX§d&-6%4KCjO̤s-q)-Ep3yIhkX}lB6EpA}pظ.HTfpDv2}|]N%|>U4VPB*c_0$dPjR:Ĩ>[y>>0`y3RŶ,,Vƴ#$ꊧ,U?{VeWFoSUQrkwPN-Kb"=mBBRAloock|>`k@5_yN3!91u3-[^E5*?&EyȟRfLt5Ҋ[ggB^f6N_o1+WFE%tkF@>:͗ܠPRՕ_1E apWXְ$uh{|/Ÿff>uat;οH9(\cU)t[]]sydAqX` }BO]|'# ˠԏEYo^uuI9TmZ(#[^ZDZ1 pYҪتCRA:De"> :IPpLEߪqKneW~aorOuxUWm,B*&uOWN##%xTkXfzτF.M@w?Y.W )^Jz t +ZA"qKr-DZn3ֽ$2m{JӇ5ɭUgv2=UF@[em\JؘT- T_G h O9 NJR+btocޡdf2 +;GZ +*t=:oPp85*)Fރ[r1̋gL^eP0dףOa.ّdpZR˂/fҶ `5i0&z# jxPbYzhutλOb*Us/sIցEw>bo؋2?QXWԪ!K26Ƿܻ_oKq؝5dG]eu.Omc-rtv~Fb'zj̠y欪Q& i!QU]FY u5`m$oipext- kP/4[L-dח[UjFe=#üsUmQJI5Od=˙|6&u۫ k{aR؞?[Gپ_W=]qEwtAlv??y<7[+)Н,O1',VXQm~Z 1?4 +؝=C@R6'F_Ё t:xpRmߘm{-Hc[V]K@#eB(azv2 q!Ư +7ޙ-BeEZ1B]k7-GҞu( +tG};L.u ) z#܎㬯ltf{/mIAƱP)V%rwep^ԫV =-Rv{rWZWua}ݓԽفߧ~xV)|}v;w-aڗ-CDeZ7.N0qj@ؽc;/GHs[u+9k_aOX|}*Xa;LC+#`؂>jt;+tXA.b.S  =J6^]mUjAHi2oGcţս{Le%Ք6Gc0Omnm:?1I8\6'$h=dL^5kJ-H P:#c-r|hηFY%nc:zlM}/ mByTmh+cr%Z( 0fG*t~[ԓE ]jTkpYf``$&UzBw7_^k1ǘ沤r*][z3Xufiջ=dי[UjV En벶Z/Ĩ; Nܶު)4]{>2Z`)4H,+$w#AYn b7PmPt:nQ#ruWRVʐу)GJT:t Ao\N#Z\Mg~5^¢>Qo'MɭC+)VR6#D `t!+t $>lŮKP RFio/7ڻ(IV)#GL#x{6C*9u>vO|һSa(z:4 +=@7|eZ Z\v R$g٘#82 +#l +fTol|>6s)]JY#{%1QB/Ͱm{-;} |J۸=KF/ k7Ԯk;֌8|AB,oVVvr~JB gz?r}ϩQq%<p$,I>嘒Oe#>Ŷ:k} o^WF]s;Wdb7T{H\y|_X)mz\¹Tśj2xf@>AH 缮+5ku:=q8( ++w,plԍ+²Q}܉v#j_gj>Cmzl+W?P`)e ݌a`[JzňI'{oScYEAoCg ҂{d* e#`!fjCUX`Oߟ= cTP-PQY%}4wV55Xb h^@j ^7SfDsU 1A|\! ӵfBWץHi2֥ +'u#fu +|lE+JNj;IS.=ocTVc)xɪ@ :+L67>rHVF;RHCjXG:3N/v"*c2կv+S/_q13q#}@e ᗷ+)Yg7aMUءX3݂iH~YfקH.Ku +H:/|*j +Ԩ-9;^t)Զ'C:YfcSc=jeI=k>#2JY`K7w3y^=q>(wI#~59=>mUu(mo"YL*Ŏ @d`~Xͫ[Fh=vA9[x*+&MKzZ#>dܐ6ΏoIȻ*Z`zfT쏼IHܬn" e]O}a̮t;KԬDDDDDDDDDDDDDDDD@1"N7,쎜kXJU AD2= 3_'ܲSn}j: Tv7Sn\+U@wǵ~=Ěf)f=#[5]DO^=h[l'_$믤ߢ]3 d_]YbSYb2vAϷ3kM'v`M E +*tzH*6uwFFw)PoVK/rֽ5$|sQͶ[RIc}0r^3ɶ䖒澴.BcjdxڪĬش.%V.{oDorm5˚RgYT5"Z--w wOlb~@Z3!cedhhzqT{{{O /ؔT)]Բvzo1V!齮|l Z=Oۨ3 ¦pԥةJu "om5deɱХJ~ղ>BD9\_Y5bbJ)° {ݽ&G2pj)\z:ZsZu`5 4ռ25s>/Jl~KvKB1\v{W|DWd+ZƵړڅe?V_i~3m}qtRSDz{]9\;2QkjiC$m@??SC%=bkYL{w#YkV@[2ڬpZ ${zKYDY8Ȩ,m^c0P'gDX{mK]u) 72[oCw#  Ǧ>7#w⅌coH7dSeeWaf$2X*W}:vyݞy4_\VZvmNݘ=4 єq%/V)vR4}lx̝ٜ 1$~> .h;'fGpe|GZ]g ;*եF~>Y+13p58*5zшf%zG[9CWeGt =vc3̄W:ǴH,:[[}w'ƨX@Mcmp +zrKcnZWjJ@#׸|qpR.o&o{M6#/qӣv#s#ji{_źUo[#}am-a;Jd?ב}VUv=c*l:pH!zLDDDDDDDDDDDDDDDDDDDDD uY~MU!wz,E]Tw$; QoꮿɽehJEG?3γ`!Kc}zIB6>[ =cu7wSmw߬bbΈwx"ާf`Ău.ޓ^ª+% C;LNI=qk5rscbΤ)LjҤTP@~g?A]zmzHҘebWwp44'C;KtVf"mo1R=nҙ\&>]֌zŀpuhw9i[kie5]takVSN@{8dJ1b:IfIٞy#r2hnHZI{pԱcwi2-=b2r@嘯 +EAx!^*Ty)YjO_N-8Jo>՟-@Gq<0Ҽ.A,qu{7bGׯ`ZКCX5tdL| m@ +ԍtQ:ZNAD;qȡlb 7k 6q8G#yԤKX˿hh2 p؏SRi^+_?W7.gH')FV]{ Kkݚmzmu-=ՂXU6;x7) u>g4=__UxL&l h1bvֽ..&g{uX/A>nRV{Gq鲅t ؑXI; +;];юT:Jӽߤ_[{Hplךc*Y:nݿXna S|#nP{:u,*+޶I$fbvXܓgC+e`#H wo cvA'{ٔe]ojt3yGOrkØuR֬]eel~f{Ixxu,.z?Ж*K6-[t$hGv >7w ]ݙum뷤Q}^PպJ"x^'AkY_]č=g +@VU=?MJvGv(r, zLO)᪱鮬z WTEGS"]*;o`|#ʛ,Y\҅܂rvwSJ,N^co{wd1gX&nיgk7=[g}.6&{3ݺ""""""""""""""""""""" Fa1<)»'Ʋ`GSE~R~Pó":*DF_OuU2&'eeWH̤GK )dV}nIȼjV0$jN%J3=_%NenX`7?T܊-- +EJd[aӕ (r~C"[;')lty'c{ԗ˲22E7]PQZkΉuLDO.;*7=DDDDDDDDDDDDDDDDDDD@\]x⺭EmBfTevOy/.YjY">Ej46;N#N>;uJ+k[TPuҝ=5Nyp5\t/>Ջ1MϪΫEcИ% yU[TK\[""(,Ut]''/,`єU\ Ptu B"V T )mKҕut(^,t5}IQ7<eKЀ}ŵbV!؃<яV* +QGQir%ez%0 V ȍ˽Ck;wfHJDDDDDDDDDDDDDDDDDD@w2E+aP@'}ZWJA~8u~W?ZW:x%ZW:x$?a[V2?n̪5Mh~y3ƟH~xkqG[vYhj?n38z\u.H dgD&Vc1a -/cٔ=R ~2[yWK# +~ZwAm-f=c؅WJg~׶c且-q]? tfCjmF۲,6MY]ehWk4zIș?xKN={~k2OOi'•]3VꞲڽ@hjFwf&~u_}쏰Q-zobv$ƣ*cQALzVfο \.CQqVR;L%P2%a:m$tٱ:}2]103+%9v[SthVuz)ccO]eT'DDDR"4#B4#BSJ5^㹟ۑEH _Xip[Ԑ| +endstream endobj 140 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 47/Tabs/S/Type/Page>> endobj 141 0 obj <>stream +HW۪,yL3[@ύ$Đf9pl VRUI&؛33JUZuy?ۿ>/r}AzxxA28$:LN/o? r> YA.cT~YTA/wF|>Oa@hxMEꗻ|-?QM>31 +4}_s٤o9pʼPL^Y,Ý$Aw <8T1[lɲ4.O:""rX7*M 6ߠFo+,BZ !8Vp!,Q%|{Ͽߨ'4dmybG%\23,+.&R"rg U)w׳'E>dդ bgT1PN=#U`lL=yUu_"> ]_*-3H-OkcS:=QH9U "\E.+7awH{n]GI [26^ /dRU3*a*.c .qQJ6SM$(WDxtɠzkbU' R:hC +CF"3!%a= 8R.(=V<)aKvWN ,X4LPǠ[bqne*AD<*È`-:lH0yr(Rqp[Rhp)BZq,VGm$(?<wxy "FzXBs`(n6&,r7MVkF'8@x%E=yG03H +;ܸCShLt/6-tRFEsgUden( +s/kEFXwjjȜNH\kGGNL^c/S !pSF,4@(5 Ui3{dZFRxL-Ra*7G臺8VbЊ]#cifX(%RLs5;ŗH` ( :cmv8[1@⼑dsd"oFEDtؼ1Z +濜of.(&+D)~X Ql +,b Q:糵s>`Ol_ 'DRwTW6\iJRL](BJ+A;1ԈQI(Rh̵-U* V\^[6hFUH,P]|c4Q[¹oA9vD LeH^]#J2^RݴYÔt(d ii"t[0jJrOks![-ǭkxʥ!.g#FrKgݪ;Њ6Zq,)k:fS; uz +$BUf93*^O3#rr +` +^Ң-v8L\UQʻ,wY&팓r%jV/Ho6kHfĬea6uH=H~7ᓠ?DmOyV)N}&V>`;?9`SP6PL>ܫ5rlN*]!!^lVqd^,f[=~ܷHxcї +Wܓ`Vg~m0ݜkԱvZh7g}ҟb߬`1CY,T/ (ӄb''b:P_\ j H3 Ke^zTĢ1:*! +]܈T?"t4XC뗺8YA@n֩m6 mR(Bxw wkDy3_4Ix qe+WԦQ2D2jU4٪-USzo^RQŹl @zFiF7Q#"t6LmO@*X)5hpy{.g:˜zJغ~jiG#DJ:'D8n-6EV|=>LߚK3@6h)jIݮ gO.WVjvz#i.6\SݭA7wWp#**EFWT;BjRf6VI O&O(:L4)(NnyJ=%G8 H&W&g>t,<.K+ ɱ ;5q);#yV?Hw_3*t-h?|lGav[4? +xSRِ\:LѤl / J1M`A؋d<8YC!Ln?ӄت }2ᥙ/.e%", e;1K*.Uzϸ7n-#KNRX;uDAbd 3bx3)iAܥ"%'JNF=fAv5U^;}Kॻ#)@y;fr]`5gT[tt'p IܩRxpPȲ?nzRİv&!hB!>&^/<2;3Zͼm0> DQw~Pxw+L9SܸѰ[ۊw ᭘5ɑo!n ŋcF +xct hYM'Ҝi\Jh0aϙsTȹVHK5{Ym9A-A[BLK"mQ&&ԍ*FB$kgwe׵"OGsWTr,cnN[edE e)%ÆB;HL!*xj8g=l +c~PP쨈o)ElXQl#@U̽& +f085n?u#fN/-*rt_:LA5y"%AiΘ{bL)kWz.h߬4?B7AǓs\Dz#ua/ws-VDP$+4wqcz=%d3Q06oq~szMj^ɍjYMkaQRU +endstream endobj 142 0 obj <>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  +G!1A"Qaq#23BR$4DTb%5CESUcderst +&'()*6789:FGHIJVWXYZfghijuvwxyz?b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""`6b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""ӵb'?!?[<n?/[ddX9 [;0u,e(4=+VXPu裹3R!w.'w?\#= "x3u&c6`Խ-TVVI*zտy7de [uv Ԟ/GNN;6ZWN+ϸLCZ]T:}Լ3eY@],ʻ}J#rжBNS΀|$3``2~uYtQP,-k)MLi[U=ᣭwi}}JǷ~E,Q~ul훷Aןc6mش Su6, }|zwf"""""""""""""""""""""""""""""""""""""""""""""""""""Եb'3y`tm[)xܬ2=m}+@EWVy.3vdc֚}~CnS?-hnepk0f k=LHksK.]9!|Ntx-^g#ݨ>K﫫~ zEh<(>[2C:FU+,+@ƳN&ʭ[NMV,EH'dFƷpz>֨@Z->>` }RYޜk-*Wki4U,ՊKP>SOy5mvYuu5g +:"I&w5V@[eeu$k]COPQ}L]ןM\֫VѾ"fDWzQ7rij! +z|pqo\L..bx, zH+d7]'$o?^NGY5J Kr!~&f$*ݸ zϳk'^Yo!i +1lƭ=Oһ=I$UM>#F:5GFulw211y^>Vr<Õ:ƪִUThOG u+ZsQnљCv+۸:;ٚ6G~u_]bè;&`OA0pApՎTb 9`]N_ km'_ #W!]Wٗcj껣cjP-ǶS5ײ[U.=[g2=;z{q3յb"| +P7_Hoϭn53Ns[ eK h|ɉ^/lb[vA v(A *ԶuX=Z<14gfPl@,uI&Jl+E|C!>ϧҶvUGq}D鈈jUd>>朼KU ]u;_'VM[趵u:a:"""""sr<]5y<'#>|U]zlt*㥃#aQ:r9׺;n Q^E+^.KREjTgN6Be֖v|l)&'7QcdeR`=gTDD䅆b4هp7Q8 +mT0Sߘ'vɘGv||WkVӯIءv7}NJjmͳWZv)V:7~vDDDӵb"""""""""""""""""""q٣Ŷ2HQ߹ O)GErij޽X]C}3͞+, , +ڕl;V= Ӡw%ˎF5V5idS_mc~w2t+ُpϤzZ{ o(̆+bu@=65%ZĭJ1U'@6dC"FAKzOE 7sݻώ/#m"YVFJ"x>ܨ,7̑MM^s(4fhd +l)P }z\d<50F+Ul:N>v^'&p.ZXt#ZܮOŧ#.9UǛpڞD/!zgLZ? v3;d^_)χfuxHM} +Wv7{)4h2ľ)Zu+_N,X6pGa>vCf`';-!XT0^Opd݇_,IPh:֤k8k ]'AsSW@BNΆϖr/;+ǪW b/"6Go1y(OKfظ]Jx]7 7>?"eUiŠ+e!R:N>geC~.FE}]Vt}>ghvP'/{8Ū_W!Z*'IH^-TSZkKEuxN·y谪ɩHɵl;VX.?`Ue:z~3qr8eM+(ּ2חf.~Vxl!UgX*B;@, 32.՛آ{.>ɝSr尯f'c{־rOZHH =*:XRI9}׃\A:O;33Ǽ_/1rlv(bX9 [vSk㧉bz`; 3bWWvBk,+oR{;޻w9ܼŴ;nu: +UfV*;!'~}'.ytcTգe`}58EXgYEAWJ-`{^o;*c,DP E\]OO!VJm6ޞAzFS|'!:$lussytkG)t/V(;ч6M +צp9fݶ|Ohr2k`#(ee:@~:|~7!y'e5.%7 ww%r.\z쨌fy>D> TF(>kwsVƳn)=}w>y>S0sv8-ʿ~i݈:>CqĶ'M(v$z=Ruԙ}kƵ|k8BTjCg@}އIY׶U^ZQ,UFdDD@Եb"""""""""""""""""""pr:-ZKk}]'a~vS]Wx-]hniu.} o͍Z%|&$=::=8dƬS}%'/97&mƻNJR#0˳#T7(P/JtPyLzlyFH8̶TUJ[SȞ˭_SyuVge n a;{ø$=+oRUY̓3<܅d]ar[OFﶻ7f}/3+˽MTVV'|g2-\>պQWj5kS8{u7k }Gߥ4`k.5 Wf[VA=uOHs~;8 WcE}=X>9{*|FBJ}Y|8 _t5FחAzoҚjs\̜fj,E*TVf~%eږ.3c;לw[AŮ4Fg>8.+lmbs@Nq59Dzl_vKm T9=uyl75du+bx{If?=I=y h A nk5?mv`Wv~!6yβ,Z} +P9 A=ىߋf\Jt_ }{5M--c=>S㟕ŷY-Rm0k}srW-'RO(7-? f6Eںy1p~$y z^FoFC.w V-]BV im ;N er/ +q,J5.Dv޻|Kk @fQ zN>onNnn[jczPA3goAv5/~軩 /)_yJ=FbGp#νT*a=#55=za63`g,)eዣ7ߵzyo<5 t;=˛kS-Ԫ$Luտ045;p/Z'=ag?t_M6 #z*y~.m!m]>Qdڂ<;73f ~Jkd)צőeۅk܀J}*ߐ*}=f>"9,H K^N>o~K z"g> 3Y]XA'ߍA .B2E𙂑]诟o1XTJ}ܒIo*>i/Ų +1`H`Uh<>8bo8spש"Ktlf-3ڬ[n}z=__ig-]1z.ݭ!HPc ϋ\+1/y'"Qaoc_.tՅZ.T +-`7=پ,w*Ph>v-WaPIe<&F{<+]/K }iT2xduxa=Sg _śZXwV7k^g32tʷ%VKN*~yˮڲG[Rm;;o̫'=olظ +Kvֆ;o C.Ek-IPݻ; }u;3s)@,ζu鿌)^q]`,~S`pb"_an=_{n|4N!ط|z6gW*܅N7Q/I>&U >D1<{73Ŭ`tOA;}~g~zᐙNux +J A[5 `V]IUUߢ}3' tVQԻS~&f_Vm"X=&w ]@>;sƫOv7FqX_=ټ0pnKx$xc^C˿OF$/%ە +( X#Ɏ;>2+8Xc-==ZRXd? L-VS_EbA,A9V_S>S-`}'dDD@յb"""""""""""""""""""|=U$}{|gb"`ϔDOP>7ג`w0t{"'DgQeJrO`bQlë RH&ȘKʬ SAODDDD׫uk[}y 0F OJ*(P="""""""""" ֵb"""""""""""""""""""Bצ>WlKz4bHjݑP R"k$rUt6PGI;?}+ñr;[e_\98*kQu׭U-ږm.Ut.sr论|ejϹ: 4GþImG?#GN **@l]r|uqN=.KGo~ eoXV*hv`O77;?Jdc.e+F;ޑ ٛ_H&`;9.tO髞[ +^K2- bԏ]3軨@hv'܆sWƢ"+7Byً6OI'3u-b-Y;+;;W A>v@J7g[4Tz4q9YsC &TxmgI] +{I'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@׵b"""""""""""""""""""Cs~W!Ԫt-Y'JT{Nbҩ6"R=״f}Z%#٬x̬[ kebhRzAZ:+Zl +.(]UNQeMGFol020׎)ېӯw//ƭ,SYqqc{)}8z*{)$b)$v=Y|v]ՎmJP`AvdyBq)cUyVS7e]Y^qݛL +˭k~gd jebY|4肣[~Sz˵+l7_kMA-l왷 UO|5]›NODDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@еb""""""""""""""""""""&&b""'%N%5(Yu޼]IJE +'jf""kǯ*WV*~Pȵ֡U@ &Ȉѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb"""""""""""""""""""""""""""""""""""""|Xĝ nEtwuUlH Oi31Եb"""""""""""""""""""""""""""""""'p,!r+TwR5iѹ)EwR&8oZ#Do}%q3'K-95W4@=oHl~/#Cv/ ke!I`I_ u=CѦO fZ'a~"cqtܷWљ~%O4Wmu'CX13յb"""""""""""""""""""""""""""""""'js3:nĐGߏ"{)mo쏍݋*BC7>_P8kbJj=#k/eC;5_d>U1Ӌ1""&7ֵb"""""""""""""""""""""""""'56-]O^{Lfrx,Ec؞}6]/CCoߖ;r<>VNzaDC"IrxLjwP:X; \f >SF/%GG94dvGj֢361Kdu#]1&dnWFMeEfN]n>'7ccZ]UH {Ox l{OYxՍ޼!!4Y EIaUnto@ΗL UW޴|۷YՑNYځ;F}pƲk@kr?4B#ٜ;:Ǩ vuu+uwߡXRԃJCI'̙|w%x^[}s,)οyjK2 6>cSq*J}(WggC3lHEĺ7GCܧZGr7 gcq +ˎA>E6HU:PIt\+_m~ۨނt >Fc7f2#tYYXWUf̾6ju RA2; "vQBc"ZUPh "'>^~>@N'Suv-0>DG;9dfՍS+-|ֺψ$$2LB|:|$V @;r&3ǧ! mH0nkKtC:ˏs_}V]W}1Éeٙtjz{wgsO)21jAp`N`o jhk'3 ))KԖ)eQ0C$pl{ܖX + QN NfYKA薲/ 8gߗr؛:{}W񩗘RY׫+`U\u&bJ`~5c/J="""""""""""׵b"""""""""""""""""""""""""'8<<*5דn64<3ƚ8MΖ\^.à-wH*!^Wg&["ECvv {y_WbcEc  {1^Qw*HO-J#l + n{ q!P^{ǕufJuVvy4Oz4?z񠿡QW}?BH+=W_ٟr߳~?N[rЭ-;0ɭHɱ,m)Yk^Z,ΘqTTw N6#C^ٜWF>kX]H*?}'"'v6]N>@v B59~~ϯe\켛ZkBg =Cgi +輷Z>ch9ٌoKNl|싚gC(έoI{lkxʖTٕ'Dfj?-dQqET d@\oc2xhӂ8Wo?(==Ľ]ڷ.SzH=>!:87+Z6*TEb'((Lkڰޏ}z/-V>wv{r`W +{Cb.J,6z@O"sxS,֫hvʽJg:3{r_nE-–zTuC) ~ p9Wߤh})>u:|?Ĝ~ '^ LfYd]e|:K:Q Nyoklrv Wcòw0+)YtƤ;v]ӰO磐ɺz)רu/+83]rg Xݛvg8eb܇ yvΘеb"""""""""""""""""""""""""&q^"+t ^Q]w2ϯ :z:GNvS1ikZJg4=<ֶ/K(#F3RP44;O ͟WQ|TUQܟ{gGEg}:ưGۓLDב^-meUK3$ ǣsק!x(IŬ }݁{N($"jd!n5F{lBE,Gq𛦜j{nQ=I̼bZi<7FF5yyrL{WciýkdrzTI>d y=NfeebRtXkr;p3,uk=i^^B,E.5De=*wl +P b|OEr]T\w==oӾ:b&ǩXQK|aBSېU:G CcYjԡ|SkbkvR{Uap5*-uOQAЕuxhXֶ~&jHubǷ&q^"+hut~[5! H{S"^@&>vA +4^nEiXU +75>mŦ+V?POg>tW}dTCMJ:AR5@+9}kQ:QelFF zBw`|>bр_]L%wr} v!|:Y^=Jɖ >77]J#VSR'w 3P-fwVu߯'0x8?[e_ˌ$7ffwYMVٶ> {˶؂iU._Ȗ;ٓuqش?]w[p7:""""""""""""""""""""""""" ҵb"""""""""""""""""""""""""""""""""&530gȫ+<bUTePNUo)vΏa54_:zG4bf ujT u`݇J_%*ťuC#h{mX: UP aڧނO÷y eqnu)m @`Ѓ>Je2]^QrQ`zε:Lj4&b"""""""""""""""""""""""""ӵb""""""""""""""""""""""""""""""""""""|Ӽʨ@4G^Tl( +6{JRP{>"""""""""""""""""""""""""""""Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ׵b"""""""""""""""""""DA֖"3m}>W5 v2--~ҝ|!~Z#'H,[}'`g~̏9_ZY ;0F~؍pNq؍nYoj]WfP5:OILHg-X+6uTNb{n~S~G8kë.ehu"h0mo8NH3>3R[a1"HD0PI:̟)fVoe +)Ǿ1Z)Fr Af:ܟzoW_SuI +{yk13-Ż]hĀu߸#Gj(-ctGhC' n7ǖ+ nh)g6']`mpَ@$Y73#jmcH ^CΌot6Q#9yp^]D=;k19}5[$OOp<}2J@$;ҦG7alqZ; ?y+lD l,^݆m$&˭.J h)ݸaۤ~Mvz7C]Fn؍ؑlDc^?}ɇʖE{ۀ7u4O&q:ުŁC|f[{; 3lܼ6G0q`$IlF7l|־4؂;{Synf"p:UR.ҨOFc*RĦ֭P/*$w\G#댹WXt1K`{wqDDеb"""""""""""""""""""psh021Lڟ+HomK}Xd1)}$ku: dV |T'Sn93["ۅ >G_ބ~=n1]qQg|C|:Z-={H>G##`ֲ;-gjY֕k )$!7X[Q;2YROṚ+Ko]Jpt|7%̬^*<^|G[, + B[}- >ZI;SR#`7xoeS,d.V :GFלrr)ʷB-tuVOb~ݵᯘ2o,{RSZ|F%C]#7՗_v`ʱX EkԻ +Ǩ#ubwEػwGyC/;mzhS6Ŕ_Yܜ&+d U?A$w!}ޮtd6[?QUk[*RMq{Ը^ +ԷޛϺ˃m-EUY&t`q)e+x;ر=[𧐫#|WZ98?OcZPm4ǘfg.r~ya!7 %K~M93Տ]En֡r唃h[=Ϸ+Xj|MIt1;}m۠z۹ޤ' o;g8+ؿWuݩgS :wydWTZLtζqTm5y{Z~^;#ff1鶴mhHW^02Ky:튎LdLok:Z&K6JJ{{2co+3.5j{QWPq]曮ֵk*e&ة%t|JXY.Q,ŪvGEW.!c|I>573U<{[y)Wc#ѵb"""""""""""""""""""'cbB=g?oG% -oNL}9Ӏⷱ+wj=M0%'oV}_c?UXVA'C֏iƳ##"c;e;z@:5~EhqRu(?q=:*7{gngm}GeGg`5G5gbRW]0h0Dف*G[vcu;.v:%bC1$TSmHC}M*l/Ņ{ NdhŞPf?:C 7ly-1Z=NΖ@;zvkS1Ja%BS%MIY¥ ]Rk*:LZֺƕF'ͱ1 /3)daa987qnuٺFhڌI]1F?_kUןVuewnDt;h|D)詪f݌^9 +y<{1^^#;[mƾ.K!!bO^"^UrcJ4 47|fƫq:+]u1}[o`}̃fgּ["+jfM2IPyԗFN/ >zShy*%UAԏ8jVFLtNz6Z獡Gޏf'^[>^s_ƞ+\>oslI in7k|<\mM'u3+S-뇆UeTWt:'̑+:K=  4 'MKB-h4@4LA|X}v[l/`/f*euIHO-zDtB(C{c-ow)vҊzNoCq +[,Ğf=؟6'Ϭ*,{1UJNMZ;P#JQGe1[`{E!>_OQ뫼ʣ-!}!ﶺա8z;wRz=#@Hf}6qf5RcۥP{*p& +sJ{5MTЖ&{=m,>,?]~EeYYҠ"7Q3◆@ ^]LK6['_)#"x |%_# :~ߑ +cde%x*TtR@7lllD뵖|J|JdYTk>{#˴3m<<J"8Ռ(CuUASUNʥ;)OQ:nwUvؔ3K7L\sVۮ, +Q;.λs8XY9^% +bS^a@P>8Ŗ-Q`Qw>$Xxf @uNgfxYs\/:bDN&nʩ[+I?$}`|aSZعWQw b2nh|q=XԾK}?}Qlo{2*-ar!\n =Ƅ>.Hk +@uҵb"""""""""""""""""""Gs<\kmH:%=Ǚ ⩲lAj} 0b"s`gT.SSـ>btL0/|znWlWOv*`_BzAyIщN}Kul27Drh7;#Fv[jPeTI:2L1?(ihqq+5ҭt2Hw7k'eᵅ*PtH:w'HT"+w=)K,G>=R*#@|@&}):{Bk 숈F~t7>'F~-yu)ow\N;U +0\l|t~٫&t3cںsid%PjJ_B5:h3RF Hc>rN&c; %Vx%g/C +x` Ǽ|ȼnoNxW/wT.:QU Q޻}O|E6qۙAScu_eۉUfJ\c;(=OhhS|WrCViN"ÂEw߰H]|!eԵ[UN6:]~3ݙrYxXR) [L6=w9o컳i{U2izwvO~;#.>5n6W[Jmv{=O'FwSY]M}#z֍><^~NK^VBҚ:V -ex +қ|} j};NY23385ܫSau"}il mv.E3 +~Y'c?5mD7ޖ^ X*gA_rAnz3̾7`Xʨf#EG4fYUi틿=At|D܀{hCgؤb{U]XKeac[}:gU?J+H?` cm|6O=Lɿ0צ`eU:+EGx\HkK![:%@'G_ 3#UrXVʥX(ju{ڮK3BOE].V7OƵ>S`NuWp47ANr~9GKe`[ӮStFυ؎ޝI 6/XU;4$VG?ȧW"'I;͍>N]̯g]JNΉ}ۜ17muhA{$/C[oX|5eJ #`VCڞ}KB_^YٗfPWbPuL{yF.9˪b=doX$l_ff=d +ÁX@i/Եb"""""""""""""""""""CQY![J̥OKs/rzNuJJ0NSmg]"(@DK63E~͟&% Qa]YYC{GSU_P֭ +~>,Z8NYд?j^}vWpHƵj U`Sn`A:tg Yٖq*#`ݾrJb@Cp]}m%ʪ@_#r֦-ܩ}cu2޻썑z=^IMK҈@H8pҊ? co{'9⥸y{^e)bVŀOV=moK5b'JVj6 +p~r+/K +P=@y|s8+鸶 +5xoԞ":چSwi~`e.Abp)>ܙyR-u8RQ v>`0>ov.UI`b5ܝnm|ѭ2ɛqrc'~\2vzh;OYY9u]S}b.YNsSn73?ZEt (wjJ2 +YP-|8%!q|V H'~*4M~']]z z_ёĽ @;߈GQ-F|g5FL]XTk+.vvFs?ӗ%|Lah 5XmI45"-LVN'4@$z)3QUy-5qGƤﵘ@] +P=Ϭq̥(^Ewh59w +rim+Ԛ0C+I1W!7d龝tr<ȶ29z}l!d|KNꮻ7bPF>v^hI@wq/q;"wgm{|y~)Ǻ n=)tFB +D7>ٍf],׭BYC}NܙJ8 A0A3KJ~o0=H(=vfRհ_eȋx~F̚r>S8$=q9Y> +Z} My<ů{ ¯EdZ}@~w35GT> v`ARO(r,$+km6~2N)V G\1=$נ_\?+ю.– P#C>VbZ׊dtgB5֠:wt&m-/ ':͋Woo}q\=vVexuɴY>hI-յb"""""""""""""""""""$m.>R3'e,8,H$~:_5FB%:֕wO{:g6vr`* +]T]M:7|;wUC+dO7ϭT2#,t`'MzigN·RJ=^^_ns-6u`AawVCl(*` THi";Dľ,$5ʞ*J y?Iվӛ|.Zոed!0wQ0dv=^qrޞZ ;rkéQ'Eee yFszSFuN*TI*Ǩߔ5V-fTa[w*H;SHڋOr(mhw>SNwOJrUK|dϜ\K`bVDf؈ՕVO}K3ܙMr+AVP"3"""""""""""""""cS1VNBbTXzQ{|79?p3-4a䭮Pv{ֵb"""""""""""""""""""|X +@::$l ^ӓs=v]äTTV C>;^s.[۹;1r1j _MMj,${{`nw׏!e9ʁZeJD|{5uku9:Z[u6eTƮ5^;4}7WԔRHGڇ̿!1*cԟq{^mP}>~SzR7n1VfWe! wm)@dcPK @]&~̜J*lݚ;݌M~d;Ӧ*3V**LTRv/{KNL^#\q(EpgG^}&g!e&(D)u9 Aw~w3ɟW~:J! ؎=^vHk#?E&سɘ5jzRt <"^ujԟ7Ӑ =bh/;Acea=ԻԡIVWiCԺ",\{z6 :;NM*M!Vv^àR/{ng 2B]@;ƬCӹ`t@G}99|d%>N'K -wDVf=_/Ɗ9/J+]LvR|=xm=UxDN[J/U=Dt)ϑ]=ӵ8\oHBhh:m v?#5B԰4ū ju$~vPrB* +:]vM^%M ,QZC_=de>.-v iSro+ӶGF\VhK+4bzQj:a>Gs.F6kxfR=F7Խ5ٗHVu+13iǮܪ6nB΁`$ϳlrUP$hovtKDDDDDDDDDDDDDDDDHi% tS~#|ſ7~䈈׵b"""""""""""""""""""p|`Վ5v)߽Sw`gߊo9.GN^n)/w`1}VYEEv֡ok H ;I\x&gbt|;@O |{ںQX"w9kH׽kZabTO~#]kRQz;!8,YF){;OM'^.jERŴu3~flݑNnCe}>=B$d T21bf/@\;iucV{u.NwvdFe-+AG%EXUYP[} λȜ~;îU_ٝ +Y񧌩ЅҨ=;aМfVG)OWY*5wrW6kEY]g 5>\nx`mv OC aK(abL-T ]P7sb⣚=ӷRp3mmD + ck" 9,vZ(ۋ WT#G@9 kYVcbk hϵVG7ؔ\f~W(֏q$|fC+l!,= 31oVVI+ӢFc7|c[ֵVGP莐|~>y+Y'-SmVZ=wר<&W [MK]d*=9kw!10g#[0(Tz{N.Gɮ֥Mj]A$$XKjTpPhT==?'^ij_/Waeu{"lnç#鋒6+o~'~YuحCVeOwеb"""""""""""""""""""|YJ] v67@jk|jdvPY *}FƏfq뼣:Q~ZlP5 +Po}DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb"""""""""""""""""""bf""""""""""""""""""""""""""""""""""""""""""""""""" յb"""""""""""""""""""Fr|`7?6̸XONn_܏B/\/ї?!'7eߪuߢw2yvMy闝.ɶa0yf\5, +3nG<3n?o˿7Q= #-5qa4fTkrɚwvc*˸kY[7'R?!X~f̏3g7eߪhSA)5yq4TK9Wzlf=v=woXM?_2?&?!8>̏+y!'4~]關?n:6efgi0VpmL*Fkٗ ~6B.^'FgWoLyw=ǣ{-컎 7ؼ<⥯^*_Gxwf>=p,&N2#v`\~C1GFhQ YY~CdGӽf>=ooD՛f6qRYӽt5S&[}{2Yf^/\~C1}2sF]mF]_VMYbdf/N*_`3_̸kYn_܏/ї?!'7eߪuߢ~CdGӽ=ooH^]ʉ+9̴ko/#0~_~fQ38~e{}{*V}^]ʉ'5̸kYv`\cnKX&#|DD@ֵb"""""""""""""""""""'Z[oP@$wbd| uS3]\l{|~"33DS-' LDLLϒ7>"k5`w0l5>UU uJ:'@{M1>310NDDLlLL:ڐG1A @;$(:7pw31uq Gs"""""""""׵b"""""""""""""""""""yxlAzs[wIpD~>?Ȼ٫Z[u6I>}碧ي8ʰskWQEkZOefdְ|b_~Jl# %cqX-kFu<_nLGx&>jjzNk֭[}NW3R-=jm|C;l=)iʪ+y&\n7}N*Sx`ѳ܉5r9_r:@U J{%"@4٫+ߡv }1oNe( ޺λ|gsWף@iz=Ԟ[lȯ̟MƲ+keWIq܅<=y47RX#Ѓ؉'o?6etT=?dsUwMu>6|Ll(hڛM7;@ +XMΜ|UxC`!:m欿j|TKzץKkEwl彦ᾊnK +ؕ*Z ~gB13S,^P£{c'5RBUzY]GD$)p''TPbɕB6 GjPVmb~nt{CVW-@ScFB%=n%u%ߓe}A,}Q/Ax-B ZK݈ 缔[-Gn67H:3l1rx]JG3tr>q܋cSy%:PuC"ȫ}ݷ׏f@nMfuC +Ec1%vJuU@]ZFw@]z쉊6e$/F.ߤ¦e` eמfh9gOx*4X w:*4ZFI's۫Z6Cq!m(ը^ԣNXod&H˩- +acz#PEZjϠ?K(WH'^&}a{!}xGCkڋu6P +ݻC˿}>`濉Z撌t@I>Z3r{FN>]/*ecޤ$ס75T:9h+@:TRt?V~^?%Ɗ.{(,/ Y_>G]$Jq-yxͺRFc ȟn˸.۩F.EuUyΫ\e'l+ocgSڪ8g-ں eE&½`H >~4R4ِڦ.]]@䓡>e3joU=- {ufUe8DK3 ,W6]-F#nZ*]/S_XguF&:g1fmp<-VH_uVfׂ[URmO@  t=*{dERɺl&yOh12PwZ]Xu`ՇqD'g`j +>CG +)um֮ 23 '-~b2uoX{kt^buG]ĖlꅭMol +Z߿kKϳYnU)a=&Z7b(-Ϸi2(=(5ܒrJbsf+dW_iṅɕ=y>r6o,C`#o+ nu_eM°T _k7WMԹ[(_uvt}=C(/}4L +A"""""" еb"""""""""""""""""""yn8euL+F~}y<6pNN_1qB=GAсf`| +=tK^_1v_O!-<27fvR$t~@|yeadWjA_V؝F\+ёtYemCO=r +oCm]q&K+#+;*{+*FGgpgPM|;q9˨|\q4J#]Ϭ'g/ JӨ<\XaF][2 +kvOձgdr^EyR w}Csx^.z`utPw`ާ8o>S9:J'+" ˹?j;8}We޵Zu v<߰K'uvQou+&v>~SKoh# j/Z5P[G^`LvFw5j(:wַgIQcfEqXYo9|[b@n|i13ǯ ڭ + +[=OevX#^ d4F_f֋P׶T.sv!i+1+,🠵d |^ӑ9׷p]YX y󒟉5\-YY2=ܰ>swwT㡱Ȭ^zlV: y[rprݱJ֠SM~:<9v{xƻb[ߋޟ_-}/$x]µBma0zF6=Zd98AuHKoU`G7]YY8u;!?^9~ZߣcBܫ]nHfOFƉ&F5]7!NU7e=U=z#ZqXokSaNV=;֕vO:=6݉x{, *v;ܣ{GzkWM%*rtuHx㽩Mc풷z#`I#LʐYQW#r g0Pc.6%Mv2z z~z<<kqoJs,j|Fj: 27 ܃cc؏en#`$s/^խk^[^5mܫeeliJԩ׹_I%gu6Tu.oQѵb""""""""""""""""""""""""""""""""'ŵ%պVFg/Ǟ.3?2;b""qr'ȎGuy=;NZQQ +`}DDDDDDDDDDDDDDDDDH/f.VZۗJ54kZ%""""""""""""ҵb"""""""""""""""""""rrc~>q|̶VOpG1ij)`{̖`>[$On2)} 8uazӸͦEr?i$3FvFWiJaέvNĐN.cN"/]hg ߠ$>ɭM> X/:>έ~]xZѱ;mo3 +ݼN| ~Boӝp{EoiQg=$;6ut|(6%bjR:6lK9Ii7/BdYߗNMS)si+GSGvf7on#쵯/PCңgDS}i`Em}csd98:ń߸ݶ"HreXT-5S1:? ;yۋsMobّK! $l#6fs]U>u껭zFmMk ARb=@$~6nf"cqnqq\YTA!~cЃ+xXh6^7Zuz~ v}%wӵb"""""""""""""""""""ym-U~|&TȞTVg (h/d-Rk:c؞ g`][^UTm +6+=ސFvcՉnsw2jU{IV:R;6=ry82HZPzqYV[]A|'쾾_-||ɿt*YUwerE ++,F@#;J{3o!bd^we#9ֶHu"y$-e>ĥj~Qɯ9Ś!1 @7ǤrNcÍ2ROBv;~5rܦ}VZ^/fة5 f*Xؾ%Db@}ظXw}ov.{Lڡ(r!㌮z 2+Գ] _3o뿑|S` Xlv=YT{Gqڶb`azܕ*~=^R/R7 =Q>>9B[(eVn ̂s uٜ;]k*5>NCevew 6_A=oc{msn;eu*]Yg:R `8>וk_[YSzͲѲ Z /Re8z׶+e[ZcW\bI=kC_\>6{Ui>c&, +J{cLñ90j oӱr:'z||:k+rJիP*:#!z,ەMOӦ[0=ƻInS/w|kccv7{mC?=3Gó#!^+NSueًE\x(׎:zmAӢ*|ݵSP$(@ޏ3γM›-,=f`V>Do̫cj˺U}s?/|O"5yjAk?[r-JNoB=\lK[Q`}JFyӛ{q`;k%H{:;Tr O;1RFގmNonL)ds9#ٝw߿/W]#TWظ,lzuƗvY.jCXKƵ#3cp-f6wFU='}FUW[ǶMƕŦ՝L̄xw˴_6?w.Fxv2)mrpK +zXqg]+񑸈{%x=-|9Gu0dԭ>&2'P +nYO~z̏p_'_ xlL,vڶcRװF[s]5ſ*]zXVM~MuyYOpA{4 _}v2<(v_nٜ^6}+EVFUH#D M8-T\/.T=: +P7[?LUS+:6BΝvb;y[9ϲ/oHH {޼:_z*礆Dfj੦C/MᰤvT +(\z)=!۬'Gzftz(zۥ_]hN؃2.3_VǭFԯ蚫s2\ߌm7{ פS jc5mƯ2 YOhc͌j&롢mue}@32bڃ応q-ہnX::ڂ4;h}@NwKqqEתbZu~T~.Vwz"ũ}}eXA|W[;ٜGƻnCu^_tcD3{۶<>~,YPF؂Ǽ\% 3;1ۻkg@.8Jʍ7YjeG 0cD-b!r|2ՖoZB[jTz)^LVK^K)]|V=]SoZ*#1?lo&jԽKԊP@G};f᪯2xT+> +ֻO>"v cKǩSyCq+^5߱#=غT[H bu a̟":5u'XwzKUӒ$vֵ"Q֎)k=fg~Kl )B-jXo=f̎[65BפyyO~k2[ zbH*:{i{}C/o~"h[x`Ԛ^2ˬUe:UFλ741V]Oe.SX}4H*GCSm|!Pzv*:ϧH;gf|7jڧA Kz>wӮ޼D+nklbCʖ=Dk k"2@hWm3<_Suo„u#W]N?UZ.ENZJlRk`kNoJt˰:RW~8|JiI ꈈյb"""""""""""""""""""pV۽,*㧧u=nfcs31ֶnmFO[ vGmN؉N9zο鮷,@e}TI1'BsqÑ^B7A?PH7LgǪ=NUF٘(۟gPu]Ăֵb"""""""""""""""""""j|jոʭX}"y +Մ|4y6]Eq)6?Y.mH +A{]N^s5n?2 +[#KhyuSn>g(i2@רּ u~ ύb͌:=UXlnU~c\u|f56UJ6uuFkGR:UJDis7=\M7lvtn0}%M]A{fKrӕjd=M֨g]OԻm@Fr)+7R`21Flvow3"XP`:{~'z|k8?KʂQ7c|vW!b[e§!^]Al^=#;B5?//_8MVlk||]`Awf{qy tcmZhw9*y$ɿǭ)ꤊYr5a~֧~_#5aڷ8M+ܮٳjT( 7k~_. "v-u}@w؞@[~]aAJ"\XPfSټ#9Y]m)[S#z̛ﯓƨ?ܬ tBn?kR/䕲%8 ծ=\3KIڝul|K}ܟhrw@`b좡cKt6~V_Y~%}Ybo£]žvu`{5Hm*v* + nm1rrh+uIluz 5{g幜fk'R:QWnwG}}!FV:UF9$(ב:8yssy{ЧoiSf|Jݥճ'"""""""""""""""""""""""""""""""׵b"""""""""""""""""""keFb:'Gԃk#2׵Fju ד}7 *J{خ{ET zj/ʗaS{;.aȩRzW})^`sé討)k{~ >Wk*G#.mOvUVTeUM+/C?5D"z!.d[M&©j>@/Osbd {U4΅^zrG6ǡzQ*32rVƮE2umH5>18USuL/豊+ O$c k;Q +@;P߮V:eپFV Aejh̷ejڂ+U(P{^C'UZ$P6N?89Hw9KZGJA;yzldkځ{csnŽ%IhrEkЅYbN>}M#"UVzN]u'*VTP kgI`?Rj н +2CwM4-R`]em!C+3w-/6k(( +}`Ϭggte?V]t&Е k@# r շE}E{(vkԕ =eWd{];5;1ͯYiа؋6< tn7McBQW~gl3v?`8qX X 3k7NUYHpp{Ӑ?VQ2+;X(;T-%ƫ~*oϥBNNWiPEH+jA4[vM}ȨΫUTܞuq{J: wrеb"""""""""""""""""""""""""""""""""""ciѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb"""""""""""""""""""`Km]Op;|`Qub| ly5rT@v +IVR%Ue]_}$Q^z}|u>"""""""""'K c}>'W%0؎""` 'S⌊T=nX0"/ȫ:0QyAlv5>""""""""""""cczDDD@ӵb"""""""""""""""""""yoFXz"U^cz yg}įdS*"I߯y\Nc`b޵u + >M5>n;ק=wGȩ2q=W 2Z1u&9oj|{ +hj +`NƁNNwp0kb})婯۶8gcȹU7lU5G}']o:(\*7d5FΐB@@s'q^ڕm!R:n檞D+{ ϮoOC_#EY:a:',zp,&ζ@X{|@jsp\.&dMuZ+ƴ: JˢC{gmyzꥬcuw0^P RPECbJ,/6ר~ sCz|J jfSG'3Wc6U@'[#}ϧyΜUT=1"fV oϼ{\2PNـ=0rkE׷UXl:3{=}a;>'Б~ӕ3).3GJʚ_iؑy,~f7iluV9`HnFiZ(z:֘YAccόOiFeƺ/!rlRgMw=OWrElq,̠nž.g{;nNKkqvhdG@N~/!e%vPYp@H}>svv_h FQEV{ZRjwԠ@u71_n>=MsRC* G}.=g56Fk%lA 0ڰ*H*~?)re\X,~恵'EƲqٖT߀tk_f̖ս ( "2y[ۚ~ĭ' ;k8~\;vE67$lfQ O?h-^S~/-d6-5VŁXCؐH='^'b+3 {5نԍyy ;x𞼌ZA^ӳ1UyIS62UBƤf*|A NG-|ӏyWV(Mvm=SiqHfPQIn쑋e6ScV ~ԊI3hj>TYYM1t҇GGC-L줎-ͯ'~o+\`{.B ^>fO6׏Y˪kQUAAb;{^s3՗޲ԫbȐAc'>g/]z*k b\6{t}\:"=v`V{;Nƈd EUfmNWOJ|>3riK[hGT6uŐoMjoz9l[!pCX -Cn?ڕd +ʀI=,kښlv4شJ-=$X=K(  ^zxNrC7:1_$'5omGw|_%䱨*jw%Rһ~DC;=˯t.Ԁow4XnEO[=ZTJ5tt޳-.5fV ez{lv#buՁM,|d_h)KhzEIreU$$_id\M JXWXR4Fm֌[eB +Hv`9ϵJnjg[* $y7~W]Om'Vk +:݆wߗl%b]R4OT懶1R g`Q5(GZu{ >sFg9uXkEΟDw= +lE 0 '}~FvsA2^+@@~{ͣu:Ƿ |NQeN*A!N>*} 5k_geT3_6\_#Uo}9uԕ>8/[>åYKU*bBw79s?'3ĵ~O@e*7_b.__'BF'{, eaE/2~S'M jUUj, oxtFyڬGZ|Kڬ|7WlGA>8ekS#kVˮ:)~}Ϯ+ɯmƦjm݈= yl̍x.O٬:9V N[>3"[J#)*k`#GJ|f%SKSmc +YvD__eOF=H +G7SETgr6;)PtWv;pہŋK65KԠFt`:Fq',J.ae m(Nn.Vܻ|~ꝧ}yx.)_;+.ͲuloU}OW~=oY:J8Uo"'~76iF(q:Wqװ@=p'4QiJҝLt8M +m&mYƆ6,l,ڗUUe*>߼xgi\[YkTtl +`4g~%Y<NY_VNGfPCj#s ~2cևw-됽SU: 7hh6|cRP݉-fV!r1#F[^~bnm29k5kF~,z[~:_ū]vTB~`}Ԍ|C7L;BSu/WJOp Gٹ8nd 77)k}RT?v 9R+ 'WmقYYMz=]]$ zz*HQJ4CZ|$#YQo)F!,[k6FB[l{%V!·3 +b,?aפu)fOMOMezQt۷}SwMm6VHH =dW2a|lwN,Q +[?N-UbWIZvb L=oEeUɵ$A28?Dd ^[բ45[FK p:C;#[9[/J2ަ+qr p;lvƷX6W绐Nηۼ+nmvemo^+!%;$طcUR$dT>Roٺ21:/.uek߸A; |l˪ɢ>.lpw`c3񻘴Rw JUHz oCm˼|}uZ9uc=u2tG Av7!}^UO+B8j[Onnl RqCYn.OA,;>c]gn+jJv4pQGgEY4kHU)OXƯ&Vǰ-POW'czw{'E|^.6EF*ke$5TAdfֵ׋m[[*}G޻|Ys UZ1Ony6-ھm)mẑW[P K7Z'dڼ./"T]V#g|6g ilŶ cWyն%G6r.aY:@H~o8V)?{a#WgŲz]-g]"B?"rxOؖ5T6QgGS[KkvuoZ޼ ~%meV32yd)³dQTuce[;(?nIjk\_nNևd>^6{ˇc[Uy'RQ%y*>Zpl(+ap6=ӭӆadSm)=XeZOKy;^*IRBd?S߹Ȟ_.M316=3V`{?GNnR t隣>&3;=M\.vZ#mK? vF7- +ʊuuu[7DD@յb""""""""""""""""""""""""""""qrN?1W`ɲ"""""""""""""""""""""""""""""""'wG#m7Z_ꯥʅoVIN53ֵb"""""""""""""""""""ynr2,:ՙI Gse9 +[ڇ,!IIaܷ;mю|= lDg@w/Ec1nRP:`u|WfUK_^"mR^ύ&*h{W`WtN/=cdd@:J:t f=ڞc4{хznA76`sxto8HY9 [[aU$U)|+YE*:~]75c{CjViw^PlGq>1}*+vd55 mt>q8NUd_SYS'w>ή궰xkEf];_ݏU}_KX +ގ5Զv%mHe=$lL3W+==ʂϺy[jY<Uԫnל<k2(zW^ov\/]֚%=H:X6MV:ܥ.`g=wGk.RTM`%J7tdtjv2YAbmBSEe"C=?r{})GOJ` f |O1)ok+mZoԾؕ37앨G~J@:|gG+5D2:*Oq,E/3'q$)uJԐHRt >S9W[߯IXXE+@]>09svTz˨w }Y-|Fz[V*a+}G鹄QG,%:{y͙b{:RH[89s ~c5 Q ̧ȏ\_)^YǠ(;:d2 8Yg?KEOq|Gq7Xԅn~MXksr3k})iUr(K-5-z6w6gsؼmM6ۯ^jAa3-6-kt=!pwLlvz ^ b#>o@GS;0wb:+Rz/;ssh40:ߺ v6EOJޱ`gZ3ὤJpY>FC<+V3,=ݲo״~K\ Zj5l~64dgT#7~#skp/D nOHR ~ah¶ +͝=IA4zהFn>W ^[a֍S!`E>L4b #6tY_~[4rЎ/?v*{v= ەӊC!u#@_@7yΌ,ڹ +[l/{=Ag6E1Eb.8>D)EֵV.ac;AQ`&='\GkuUdbhA!]@4jUxYs:UޟyO:KXT>2Q_:<&깼kRpJ0uz􍝎^s +1kSt9ގöz5_vͦQ^)]'@kOhm9E,{AgޖF/q{ wcb:C{w=NqbSF 33L, pWTVJz=u> ajΚл +ϓ;#,|''ݭ=dqGoQ;wGbEd ]TTHatq/@Ut{쁡}&# "KXZz^ݻH=b>+xE~يnfq|{{no}k2{㤑vv;Q׵b"""""""""""""""""""yo]Ym}([Y0=A|&Z&%W}c#8럃| ,ׅ [[;2:F5>ke[ꤨ:PIsGjmF)oFC[7򛽐v뺛kjiUtj>mnE/qvw!/e]=jX+Cl|Fw2cxYtvjV|S@'del1PWUle@|}Cܭ +WF@רKc-fK4(.XMge6_'Z**ٕMoJvz{]NNC ?Ǽ\uu|B]+TpyϮo3WMi{WJmwZ]=x;\c+N,r5 +zF>ֶeqѪuu=fH;]+˦T݃mw;ߔZ8O(98HF`:GH;oIfn:YCnXexJa {IrL?gppX[z@֏mg6QV b}HA3Aٵ{/W]n݊ե}͘}}rPv ƚMdӷWI`_t\=Ւ* Op Uvj!sge*-}'NR.Zqp*mqd_%} ~ +K9RKVǧi^|,vl ^z!8kŬt;ұBVְYJ=k~6/^{_keb0רGcEwoј(@]kZH F#˹]^O>;uhS'u>ѩ'/jmTEjZZ3u9^YW=FTfDdbFEW_aV*}*qkܜRߒ7nD2)ae6M5VUt$7V܀hK8>BBt 76sazWfn5#8 A-wƲ + ߷!upS?z~([-dGrζ]NB(U1LJV(}D'{=DD@еb""""""""""""""""""""""""""""""""|]Fǘόltĩ*iU@d#WZ(= A@;F"""""'7'9XWOQ^>u["* X N7vFN@2QQwC(܌GN^^ZwJƗ`zt)㗑Dl]uՀ A$GяX.KrZڥjCLtl)'ѵb"""""""""""""""""""ECc@붪׫z8gCg9r ӣH7*0>h>_fJ-W+﯈ߘ6|U +﮲7ѽk~kķ2w].UaO$=ݐ͍etOa]+6Av#P6j5XMlehaWMwX)f*5fcM*T{ ׮9[U2(@6:@>^s_M-r O'w5eY}jgR2 zuڷ(t! A33q]օm "zA3_n/_$|@PNͣ4}'O tk)y[O_[@#`@:?korG"kɺMf*굝o{ɢ\^@]Xqf67{zؖ޵$_ĮGiIa_+(}%l 5>#>r\%vX oLWmh4B|Ƙƾbh}[^H H$ vP~SAuJ :(2#y/p6}I@;ӚU8az=G?#7㻗ŢK=!H'};39|."d\zFη3ўpL;_I 1E.6QKjEVBuz#{щyB[Rt'.@4yOF;'Ԍ·*{?z&mo9+r~3bDe!=`zLJ@w>R/ GSU()սhr' YxD'塳/ʗZ̥OHct{N[]*A M?׸^4Y*Ob%+nO +ddܟ>zX:+$9H#cMk`*VHmC鹳%h\ $O\p?If }]uo/ho:.e3jtpw{HfXsV#zH_.t'qEADL54=&|2Īv\+TXUSU)N`v7$UXdPY+~F8tWt>IUыUc2ծNrH=zQMX,s'%[RڅءR6 ]<QE".+֦31Wǻ.-rJH|ڜv:wH l1s,juPU#7_}xlύcev G~8djc䘭 oɆu'øQm۱ml lgG.} UC jfs`EƎGCDZ9_ʱ+'ݥU,^y=V}) >@Ip| +z*"p7z4יqVHf::PN!1g1O}k'Rm >}_JV sdsQaXePSw޽'^/'5Xpt|tӗʵU#qҵb"""""""""""""""""""ym*Kҹe +.]bd7&UբvGW-tjO~YAG"8 $SUErXݪ-wV:=.k^aUz.d'hCkV{8*^o@7Sj窿0+ǂW_-O?jG,G_~ޚ'#o5u}fv`=M\x؜ Ua"Q @(נ>p✜^S*+ ֝VNF7UF-iq[!.v&>y*iUDU@qsgh3d_StPxz;[w빳Q=8E'J8]ƛ]@܇]nKW;kpW[I@\ɿ&U}'j\qq|^%VY $v?$χ_}5+)!~Ww$&PYn7 zA}HkS<\Z6Aut#c$]20Dd*+wO[{tz31-l#dm(_> [HȖЮ3 1>]w9;*p?r *zC 2v>Dv^rpkvTzTBCYIǺZh{6:_\ru֙fg"zUtzKtᄑI6?Mv*VS0*QJ\Zp*Vd= +Xto^_+e +>I}:șՕy98L%Y#x#)˗ZdP7ߐX-N޽A?dz؏">3ZI2m5`Ǫ좕*陉?I).6ʭztzهaOmw!_'BVIqUbG>FEs_掝ol uU%kNv(e50Ϛ)Nk12 :1tz{l,|6ߴW7xJk`:HҰaG{!kkf:AcUy{뫮|#jVG^X|`]V].çcCKԌw}Cu&߷^{%0E0wa,݈ BN.5dso~/S3~m|åY!d'ގuӯC`]O)VVMUye[PVCFv$+Ԍp `nD+7Y~tMړA?Ao:<wu9}L rض3ʳv<|gݵh2 N(|Z=i]C>S/ Pm/㥅YQA dkCʛ*R|uH;`GX83V>+ l|@w%28VA Nԃ:}}*4 ZIŶ*f:?zY/mvt= +)Vx 1$::d8钸.z˪wPtO1ӵb"""""""""""""""""""|kj`#DGf+ZH~B/H') VJ4HuZkBɺGW󛦚)J,mRh6hxصaMiZ%E + ~;Xi/K1E,FuOIesZ]hyh붦[nN'ŘtZ3/ޱPXz$v\j]㿌9d{jԲ+N%9uje ?:F<¥ ^[GZ]lhkg\*] k'h֞ ]`|:La7GW-Z#EGQ ϕI"Р|{ +_,Ie^OrH֌8*ڑkAX |3z@h jz|DW`ԡG?9;sq7G[!eu oYZߏr;/@Tk] H;v@jj8t uׯV0tOMh:WCJCCa>زI$|| rgnf^u7Ot/Vա|=jY(j`) %B_>fvZé{6@*J i%ZaᦟH}BAR]ww!*uҬ5hoUVN-YZX]C/;YWȥ:Bt%]E4;z[2|k(*CJwVЗ}?y<~6oOMvtZ+:< +Nֺ77 +?Yq~5Y+j+L: cӉMi^. [2+0ĂDm)zu 0ϊBhUhõIzwdǴ_ZXLöXf|98y֋c:Z;(~BrOSOҮZv:>^#e=qi^݉:q>xSu,ƪuȂq`]q#3/nC#…CiԩA^|d:Vk̐~R$uxzkSl2lv|>Ӭ)|2F u;VM@bS":jfg;lH35}DV `>ulLDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@յb"""""""""""""""""""yX&U(+aRAttocerU0p#xHDgG1vPv'MOC2VJ{}s|.ەŚ.@ h )ׁdr+U&+'{'H?RgwWYAk$' q_Lc(_Ź-g>%PUnR z98j媤˲[R]6{h=7xu9>zMz5VBQ᭲Z!^+;8Eo{˿mHKnB݀l/ZڕQ{[908{͊H+$V WQAt;3FNG(DWᵶw׉bԤ+|Gr$Mx\M4Tl +xv&Ngu'מNNp*pwJw ).H_W&eP94sS6V)LbٚźyOYdq +ύB(ź`7P7Zxt ~1 ?p{av^Kbq]j-&שMo{x:OCSXk|Fk/GM6v;N=-}Y7bQc Wy+h:j\;9SO,Fn]|JрnqEuE>Wa#yI+Ȝ.;8+O`AcZ=[l֬z ?Ҡ3ut6n/+㮱:Y<4}w;gc"1Y(x+b`X5j{3ֵb"""""""""""""""""""rr^7(5IXGJ]t>^Sa%K~gՑUmlfTr=Y +h3vGeVZwYњ1(Ҡ\`>g6qV7YZ- #g'k06Y[ևc"6ۉ_-R5c]H~N%\M 1']M5OSuc[f|9TEt:a3=F]m[m]٬p{~i'Zjms?/)8\AJP*+~oq +u>.GҫV/Řx|zN7#xl'B>[$QoM +'Z߿o3jXv@y +@`>s|JB;ʕH@}\U|R+u$lAj}xn*:YCk FBbZTH @Xdŷŭ:O}(fԟ2'~`NNL:Y*˨(4~>l=֥ B]>2V ߞ~sE\8TnvI#Z8tv +z٬q?y'f +*1k@$uOYY^3P^߱H1׵b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb"""""""""""""""""""""""""""""""""""""""""""h|tꮣad9.OΎt^ކt˷&(ZiZ”]v`wR; hUmf}$(u6]{PA6'LLDDDDDDDDDDDDDDDDDDDD@ӵb"""""""""""""""""""""""""""""""""""""""""""kRHb?L:|]/UC)[Z*{Z6@a'*enBj[\uz`<f] g[YڨA}Yƙ*,v5!bYV]P=·7V`p,jYكìlw}C 1c{Z#ۡ·`{< ;fxvV6%Ir}nx)X:,XK1bvI'':"""""""""""""""""""""յb"""""""""""""""""""""""""""""""""""""y^_?#(QBc'+)wQܖq3(99t^˭U#eIoyNz w"*XH~!R^IKGb Kw$)࿒\_2wc:cUw"2J6JSB[1'PGf|{qz2\=l,EWf؞}$Ecj2- +~g[?LtaFA +A6A^{#Ob~<:zBiTt4<'6_fS]v_O}o Mj{}s9W^޺4~0ܿݣ1N?42sJgC/*C+%ƎOJ?#:pmɲZϾ;2)pHR뺰Nֵb"""""""""""""""""""""""""""""""""""""c|_%Z% +X#.#aGc~;XZ*vO)K;{>C]}VxWV`P+Yt݈=#x>2M[S1'fbY$8N;V=3kgI>BjϿ#f9@J锝w1FfZaVlpH(bI2L_y^AA󞊷6#""""""""""""""""""""""׵b"""""""""""""""""""""""""""""""""""""""""""ArV' +媋Nk +fQqsqrrE`xipzQjEuTl^sDMw3"0V*rmwU$WroG= DDDDDDDDDDDDDDDDDDDDDDеb"""""""""""""""""""""""""""""""""""""""""""&531ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb"""""""""""""""""""FN3%KbTFt~N[^Nv2 +͚ W]Zѫ[LQhy2sLN^K5xJ<ى +>@\1g]=tY}.ݴ6h[zīPwHq:^ 0߯uD{9+cjm3] hd:X9͛e̠xIcV̳)ӟQ? [P+' +:t=]MY슱h:oaлS@oSUrԕG}l>k%Gp&b"|z|}{ngr[xPCu! y~RJf""""""""""""""""""""""""""""""""""" Եb"""""""""""""""""""C{du-LrBS}f  `1U 5yN|JryT˵qש>=&3okFEU*?J`rH8k9/U!YH gQ{SJsMƕƦѷ&άw˴w"$k; Z` kڿ =t0$mأU9-NOgPه^MD_Fx r^ |dr[R堄cuRH䮫jŵApylubY/˸.PV ,`?n|CYcu&ikRU7[yO3sl{5c ߖ` Gq*G슠p7Xltbݻ{{~L⿅Wg*㝞~z}_ϓlql8l2zy gŷ?e\o6as':N"Mm{5+vR#j㛓/m_eFm=:iٞyO]gQsqsr$Rl]{$dwǫŰNv2U \K2<2ɮ=O1QֽԒ;={ά~I#Ex5`vtf7mbu;䳱jL.ñ(@}[cf""""""""""""""""""""""""""""""""" յb"""""""""""""""""""qbr6=8RHRtHVx?OTh.3F' +yWe- AVN^,+Ka&&kTRsҋO398L{ɵJM'IE +6~gS)l{Jue`"Njlںf*BA*[[iGL)XK&/Fy(=\쯶Ckb{shkXi /kDԓ"D4[6ǂTJݶ[8ͮK.VAwt* +>Z2/.(6B( yNG]C,RjZ.OA6S/G昏5{;2br_ёNc/iK,WoƥJe67;Rjމ:veILdFXXZCz%Ž݁&nSPn5jk5BH:ܑ2 3ǽ8L^˷cR'fbiħ1:/l]Pco`ƸLO6~y?"Ƨ'kGƼ lxkbQdD<.m(V'GODDDDH~[N3&,E\JzH|._#r?Գ[7_FX_Qt]eM)2Zmʕe:~=_=7/}WAmNbm$qȩrY"u;֏nsïx [ESU/ ~yS-tֽ;7 6F͹-owre^D#j5{lJd7 +xPG^o6'8pćl_TgWvЙ3Z)|G.X"(!A=#dY>Qj@7Y_fVۤ?Aԑӵb"""""""""""""""""""""""""""&QKoA>Bg체kWMG93= }4r8שּԛO/bԡgHROK)'?r3RM`@,,Df6}}Thɴ2_]O`#Z: ތټ˯)|+o @+ܶ %efd wvu%KAנ$SVdQIVEot +c@o/.s=˫SI_]{zC.*nvT6o?)ۃnGRUa rݐżv]82* 1!5wW]Of(eJT.{ Jd\1{#17U28 sܖ'b&Ð+?GTgQuUHex#LQ +6Ż(ןɸ%=;_;ijݵ،lfR \6N%TdD@kf`UT('WG񁑋eLi￑g981=(Xխ7wN^K8qH,v<٘НEGVގ{ϩs85Fܫ/K"I:I+%Bx0]d[ټυuwn)bIֵ|`U6TۨڎW3;*`ۏiwÃ˶Og/ƧEZ4('c:t6e.Z~ԅnuwCƻ{NJ^+?le!J/$ʓ;FOm]j'_ ?~3z}y!>=NҬX2|aqge_Ծ@Eԩԇߢg`TP%h"Օ=׫~Z'o잕;E@t6hou``{B`l"ɻ~ꁭv9ѕ~N;覶/5oz:6{9_c-e**ﳲa$o:Եb""""""""""""""""""""""""'nR]pV/gO, +@C?#'^%PBI?!(ڵ={ 뼎yvv`6S+}(TxL5^;>'³uE=TwHd U UgZE,s֬ @ +X: ecxY:'KDzOIr9Sdz@wem[D~\<1)G@d}o㯆OƵC{$jB4764'gZ9?%zfmq~O|o#?F/ >FὩNIu5wXY?<3Q#G7UcwQ#Tr;ogdvno[~LK?C1T~KW<~Kk뉙WUXkJoB쩫_0<ϯygm\@!voiO*wa2QgVͪ|v󞏎+6Tѐ[m|g9ϞQv;I:#ωCx_#mxD~ڟG Qg?QX߲oϱ1*>:%8~vh1 kwrOMLf5Y8B3*'_5U)݄rJ~j=feקvU;$W1anWV|#J~Σ%rs]JRH=F c0| {a`~ ==ƏtIlA*[O8qnP͹B+[zv'-s4G]GSW!/oqlAꪓbw>s[_ho䶟\\l?\|ns*@?Gre$C#Dm;:FCLK;1yEѝi֭Ƕ9vEc +zQexu_m[Cq~vZpF}M^rrximCUzrSkɯ2FR7}gnDrϘexǦ:0w:x̫>SER> >x|NSu٦zK+<.DDDDDDD@ֵb"""""""""""""""""""""""""b4&b&'4W5Qt<\mRA= +*Jߡ`G~zF[mh~nSu~kN잿Z֤@oddD68_Jr:mceml:}Ϸ #":lm=N*qy񩴭ubuZ poGL~OeYuuJ߿r߲5~?3ַUAW2ÚQ{NU) ++J":O9ݴ)^0;YaU;(_fh5[ehЄoI*HSHOi.1qb]%"~Ҥ&\EX)kfqٷt/׼|@q;·?Lj }㶀G~_I0+B*>Ϻ]uvU qU7I WEAwOĞV&0K誥Y#w#cAT_T6.(79g!;q[y8s~ˎݧػ'.-IR"*F0T0P*4O*KKatF}DN^E:nZe m>GNʦ ɸ =V>{yd3xÝr37׌:M[O@?n_\fw#JetTacVq1Tɴ[`'l+]o + ӓ*Įz#og_E{/7į֞=3ʼj]KweBm<67G^sTE + qеb""""""""""""""""""""""""""""""""""""&mid67,}\q4YXUPuI+ʭm#U ܏j[22 =㮝uwxܦ6eMuVOST &^o2Mv{d++#<ӾGs|V?Z]]IG~@Ͼ+}Gm{g:>@y(& Nj[V0$$=>, T:::$lur윻 +?+R Ц=}X7!_%zVw#R+Y)^]imLU"3lDDDDDMy5meҪ6IcUdѕ{+p1-^ЮO .zxܞ6k +ӢID {(³>>!p^t U# C؍Ekp~FtX-vJT|w5ܒ{'%,(mNޏ10d-3;#(.Zz|'QY&nv?i뿋uf Wv[7%1l\MU tcdlNȈҵb"""""""""""""""""""""""& +6fL3-*CG&Nk\֩[l @o^Mv֭B:g7/Z +' w#Sn[7O=+߬=O7_K񒜷UrEdeւ鷽C@e bk ֧O!}=<N]ճiXt gv:|b{ӌb sbkGGYcԤ2VB7k09yrU1Ҕ@CA~)PON9̠xCm%,=UUYe_d{AML6x%~Р"y\~S硱*[JFDDDDO,ZT >rTEvߜ^C('zO);Vb>b"&7{[mz7oDvbc`TeWrj§pO<#[SR8;`w`d!w/XU +Djyë1:yT0,`s!;*r +l)%wה{.y[-e6ԯEuPmߴ{C.Cq6=uj֑]\7aN>˰:5\V5S*W?[׺^cte8^huN!Zktֵ~'1ӵb"""""""""""""""""""""""'-*]I<~6=~U.fttP;lO]̮%FC]N}F|v2 lrW@I Kcog"xBMIcou= իVV9 9?}h|?~_͕S~X?;1!ó3ؓ ژXy`wя~X (~3^W }g[[M-1b~fo>s¨ !UFuo@w3x{23ևCX ,d xu?st~gGQ>$_gzˤ9h%i luc,2NL9S}Fv95?é}&8 >L4?S? ȕ9] x$=gCrXH +-ߨe@G] Wٹ(:sOU5rxyU!~R1}]v?2IK'C2^]"@{)Rӑ"C'fI3~ECh@t2 zzJsd9u['*`F诤-AO#jS{m~?22i?ËȾL͏&C3=΢|ա:$16L4?_3h;>>AC!!>2"}DDDDDDDԵb"""""""""""""""""""""""'/)y KѶ#_n[ᜄ׈j{/@b{{7]3O&_!`'PURmwtֵz[]|=;pq/aeW{ +s[MUGgrrpz~;;6=v^ -|}XwSC#ςaiԟqq4ҕ[E]$E99~f8=]=;ҙ8T&@֏ԤHkdF 4T>dԿs.% |5oz>5L ֺ#N4?F 8}$XkL~GL~G8*?u'?#|`0ֿ2 C_#ˆN]Lz?dإX 6>cS=~c33KJ~c9ş*?u'?#\YZ`1fN ϩn_IH=&euĨ Gpdǰ#J)' +s]HmT)`MҗK2 <'a(ԟa?S>Oŏ<,5g=~c3]J38 +'`8^>J +:S>GD7KJA #?dtq|f^')rY<ق{Os&#m-E98JK+t .Rx@>'_Wqӭk^"""""""յb"""""""':e  l>9^]IuLC+oεPd%(  1P#^[ȉjQ?OQ=h@w>&m 9LFRVOZ),^}os.o[f?(b}O@N璿۰ohR.<=ZZކY5SNObF5v>^<4K蟺Qec fzE *'C9~O(b]=i܆EP;֙8XZ,c @} ùd{31>]ֵ,@I>@3<!n|RQK.%R==X2nN=fbTٳT{]2GL<5:'vQekns{QauT DeZ1:'M'NJ AYn5JmYbU؛00t1]{0޷ߴ̖λ?=+nIpȷQ4Ӌ^;X67Sho^@_4caՊld^9wcݘ;M0wr-TWc'lQ:==;w 2+MdX7Q c^E1#m|mxu-hoa]_ #vёGĀ,!o'1 +iQB \asfbzqOI֦HU6 Q\(:#Dlo>S""""""""""""""""""""""$}JݓnC_ERIb>d&;cS\Z'Q53[GVm-<A[+?|~)3bQL{=ВvܘtAk{cI;'&njpqխ[2kGh +@=:>srq|HG1Rz] +9)*;)as]Y߷iRŵ读hvW9;OMm]iDZrrzض@zD*?Y'3W7 BRxQt:*GgbIc~KDDDDDDDD@׵b"""""""`]̻XRkER}w SR'xyL1kǵT~=uob""""""""kGS z7sdDDDDDDDDDDDDDDDDDDDDDDDеb""""""""`7ge9a +ؕlV#E@fEg^* ]h̳-'}^]g\DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDѵb""""""""$O!)VWŝov%=%*GRu<_L+de˰#ݭ*~'ocRa9W^͏0 In%0qF)Pfnݜ;2{89b-說u;Ҩߩ?Fc{E}JEԖ[3]dzX9]]^t +;0>~9XgSN1pyy|gҵb""""""""$N+IVP9Ƀz|F|>C;NȈpseKB JoѾw`Sm5*+R;J|>gdg=d=Kg/:}PXd?!#%__{ó[ӽ|lEe7ߡ1h1|A32ʽLZPdnwN.CmKwIאN>mMbb)yy"""""""""""""""""""""""""""""""" ӵb""""""""$O&:y9GQ$3N]yՋj=JIhuc~c}c'.Na A'g~[>|Dבr9Ң3 ʛr{7_yߙs^w""'.^YEN鰺Ԕd1Z; Uz_8#^,O)q]f6 |7$(/^GmկuHoh\x*͔[j:uA(tϟq:sL\{t ]GJ]w;IlWѭX,(>>>ܰG[ߤ~ݟ~o".iF?P馰;-ό  KľKc?|JtdV[fVM ff;t{`WOY`zY[؂=*3zA>d,RgRe&A 6t! +m&^o';5-bJu $}f۸Uz3z3byzhȻ;Ĩ=R, /Vyyzr vo +F~S~/ꮻrî҄ulPw>SbOmIf>)W'*-!gnhӖu,6Q:08-6:zohm3Qo}uc[}ˮt!fh.)HF> ձ^F|r86`P ٭OFkR.R Ov[$yMg,[jZʖVT]dفcʘ2~: 3E*e-Ur $I+˧1aJS!Rͣw߼Te7|aOHN{|=no=atE=uZ-~~ўy~ik8?m؝$xXN V}^&[_cJWqԵb""""""""$O(7z%$?oM~#Y`uy! V11 ]ͽg?܅KK2*,|r̀7' Ye<+mo^c۹^7 u;vOgdDDL.ίɯ"ܗN1sx}Vh(rB΍q.g #>JJ.կ}{jhn^kԲyFe{3Y}OPLZEʔ]myzI3.(թ}WebA:xZ]CvV,Wztk}rz@ecZպm\=L-נ4TOx|<1yg 0#Ub|Nj=ȣ=UUkټ+R{*NގI92@fZP?jRI>}'fG5fL#+,"wa X*VY^`.xlź[ ,:@!I>}[j _$+YC{z=R::I?q\7kwX)AH'c{~l8:Fu `}s+ ;ɦ(&@X[I:=_Yvq]U76!F ;3-_ut}XH*u{R%.-zRVEjIec[#z$< .[5T芥6FSώ;k&1 C {oX]N7'JS^Vlu؏¨ƞ]2 +6Ng U]>2 U}+:PX[ +;>)1K-ǽmJ +$M fә+ +g^323+9"6::u=_ y p=K<GLRda}@EuuMѓ@g3-2o*zB ծ^b˚UK +ZE ]vOsLDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@յb""""""""$G)(˙KN,2zދRUqk{?HLLm=΀>duel;V?.Iɓ^]~cYA">^OB*nxgFzԔ+g6]:gXk4v:݋6gRZ`z0l:{^rx[dzoa@>_1$b"""""`31>-/R(`u@#c>B43ֵb""""""""$O%(y- ƈ}:GIttywB"P4 O!Jء@ 4Gw}:Oϣ\$o]u;3+\fcUFzWll$4wIϢV 0 6""""""""""""""""""""""""ҵb""""""""$O)/+ϟmcWXJ}ϖ/ ǽYΕxׄb:wvZ|‘=%ibqH5OԀ 2 yʻå1ǬwPTt5lTuߜbٵUu [ @@ W K_rk_N5E%izhܿ&*Ԣˮn}y*~2'9\j[ꯦAjIybXE9Lt]2FSCR3l.E~/73T/Eoj%UX+WaO o m7+#@dYkFbGsAvu[g+ZdXۏV$5mrXjhwgL{쮾Y*,{:y6F& XZ1k& Gލhhz춒q` +X`Sqte[Mvgef5犯?*;KrU0UlUN%]:=˷3۬.xXGbkHפ\U}M]6UU:_tWoqvcCr[xY5vܕֻ'NMesr.[ +ގ{#s'-9-`RNܪϩZ'OEEQ[vȳûF?d]5rkRhfڄ@^Muu x\\ֻ[\u B?gA>,̅$kaw<#ϔw5Jtwq׭(h쟂ψaªNmir6(eVV2Pr2+3+ +WtbaFG+ܨd$o]?5+va# +VCռjPǿLowsd8Yd1Z[Vwt3y|g.rX#ΎyuoFrՇr8*2Yv֪ҷkJ@L%KYvr6~hMӵb""""""""$O)(q˹KDO񑓨R:aGk[mt􇵃2*:UGr6{lfM]`u#_|ǧMC$5QFz:qy4 b^m:NeI$ 95|ߕֶ%;z.0'B&6fF=.N6'qP5VwQ4{? +k1>&R}D=MҒ4Prjŏ^!}$S*T6ZSGw E3yolI'O&jIJ*}u`zGb Ց>U-Ke~gRGäh 6nM9MeFU`m@ކ暽YpSWn]'{3ؘ؂ە1iz p>rC; 9 {1,*OKh=75BdW ] JtOˤjs?m`[WVv{R;;ifi\v b\i>^2F/]o>'t펻vrrt>=ptHou>PEJt}ҪI^9˕.X֯Ҏ̽$ HD<4N%YوlC!5rV?5f.B%A>e܋{b|=>ǤsNF-yAE}.>!}&ؑ<7[qcɪf%?G|SI]:$8O B~9rшMMUGĪI%$_+{uU1V55գX'j++32J,4x5MO`āw׳|s8eeWMI+[hOWp:+Ce͙OiʪʼeM}%gz6eEb]HLYMvoJ_65Ȭ A 6@LU}wX|T?J`Խ@أM"E`ȸ$79Vx̦WeK/Ad,U(?1%e+SMhG}̙[[:`# -\jSlM^d߼VU7v#20V T䫤;: lLvlR桁a2+tPދ 㯄ͷc5onH*A~]|=YDoΈԵb""""""""$O'(˙ZKDLω^pf+կu>ϼĩef +6B)vש +;yT^5eu lN[lG]Sulֈ#Xv?.6Z?}]g ׯ0{_l~ }KV [U~URGO"|:z{͞PV7f9[=ZF漌+;[O/W 5;.S)PgF0 +V1]AGU$|:~ 7 #%Ӕ;JkĕqQ)L~6?ƉT~7r_Ƈ__)>G}/2c;ﭷ6fWbŭC`AN,9+:;kuyU+W~eR{Im~3,խ󜿍Yƕߺi[N?9J~?yE)~7r_Ɓ\~7ƀ rW:q-􌅷z^?mvO#qUrWQ#7 IH;ש]*mkd^3dpYHD篟y՘_6{ٮ_r楜xS5}GCasz/'alIC?yDC@g2rەǔ[Zk.}ެuv9-VEJFEi'Z ۑ\slZz >9h\3U؅`/VoΏHųc{֛m Azw[ ,@u k=U^o;9 [[< =wѾrrTdU^3.C}H,jR #z3Jq+_T9J8z|{ԪLݕA$3!R̝n楺koCs#u~0d/)]oP_ QmWu\WSw悅*l߯_9ƭٸfWoj} +P􀥃 [!ocn!^ҕ`?5zщiWB^VTv"lҔՎnj +& s"E*,Zhw=Lȶ%Վ`2`ZCR{u wW>z,K0ߡ>^+r61kIcfј\SbNDյb"&dWuSct'ED|Nb"""""$O%)qʲyIi n|oӐ<:d[wQkXFKǧ}O_!S +U Qd-jbc*# Bg|6>uGԨ;:g/@ּϟd<)mX겭?P,u=ӕVmmUh [rIX:{f'O`1jN翵ǫY]XF5Uf˭ @1*Jk^EUQ +4gʱk.EkE3'/Ǵ19i7\P@IҨ$M8Y/!I;g~3"i˫ +Ok3Y \ή3 ^;>TZX(e ,67"&ŭ.{=nJI4f舜qm:F' =g+%Eg]]}67&7qq \$e]l:%h۲ߩ/3981ϑj>U`FwwgI>c6]%aOZyي{@ỏ9"7uu WYISG/DzO<:Ŗ +ї}[`Ws>UMTб~[agqpo`X~^ZaW>lI:UԒ{H U!}$h{vaq0k*[;O0l'}@.o>yL;,4@X`ݝ7|aQ{f@+ehKTGI=֦+ddR|'V%9Et>j`01?Gֺ:GF:1pE)Z +g>>!fBlU@&n{}k~XĤ;zǤmKVtcz_{ټdDѕ2*KT7>1xL]]@o7-􁹲:rj4ZC(+˱}Hᲂhּ9L2M*l|&Oj< +=^zuaK>WR +u(_ 5驽K +PJ #>N%-h֦!GXzgj=D;ֺb yLjƕ*@OJСvI:l2uqֵb"'vqrt|z=DDDDDD}9M*Ι+9yKrLz2WSg<[[]*[/e_g0+ pbsmzDiɢlu]Z5°6f"ƹڶZ@TX}{9ۃUnM{ΖT=P?10($jV49ەbDMuZzbx?..c44:߾H~$C˩שּׁr=uIwW?KDDDDDDDDDD'ފ2ȩT@c8r_˲kfQB!#w=4DՒUk,:{y?0Y_uLÖPf""""sZqլȌʊ6@d'?C\Ҷ۹ާ{?e"^6̽;I ߉߳I8(IQ>ȧv~tq^uTZT{|@ lv54^m7e7t`݃ $vSU]Xt"POavǤ쪤B"P4> aΦu}< +He_+ӽ޾|35VlksZlwKS[e:^?f^E+㭕 )-sտ` +@QH^̢{}͆wOOn}̾-]/'"""""D^Yټ}z`ù <0|A9.-3*ߓ^B_zn?xLzсKpNNG +_tF}yA 5`me]wck7@JǛ\clW"{=ẈXG[UB>Cq5Bd#WbVRH 8U8|R؛*>`+h!;V"""""""""""""""""""""""""""""""""""""""""""""""""""""ҵb"$6GZŸ|P!lz *]V"U~>zd[VPU """""Dr‡DD2lLޕT>3ϿiR4$v͙L*8 kYVE{^d'O849IV-oU]"^K""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb"&FE6VNV6O#&o R~(uŅ`;w'[O"u:`;f""""$O'(h\#haauHNV}HgWU*gff=N~G{ao#cJDPggvbu~:˒u0_Aj*yI@󉘈 `u3oDf"""""""""& s30nf"""`0$FDDDDDDDDDDDDDDDDDDDDDDD@Եb"&uvKlf:>B'õOG%Vbq/q#X7&,:v ~P}{~`79'9s?X-5O%DH_8*Ԣ%isč͏3Ffnn֋:QN+{mpY̓<xiϼAݘb_=v37bP6E6x}Qt>^DDDDDHirD ӏkʄ>2#(NR7TN_ =Lc:$ lnkl_粚VҨū']Kw?jp~ǿjιFr*먐Z.;븜|c^ȍmSXzAV +[l@#xU]Tf`At#E=C~e9Zz,_ux,JF׸'׻^! +R0:~s؆/%Yw:$.J.e=NnJ|LͲ:Zj +^`>Nԕ ѕVmm[c6u _kp/) FN5ld vʘV+X +~>F_r|l$FSK= Go}1^.q2IdgV~f#T/aʺޛ~`5w)OZS:B}۾>]h M%؁Jzz RN!!2Fz{AxT_H$,@90z֟/+ףuv>^;Q uFz#U^݄ʖ( ݻ^ЭbUEx*_N=Zéߥvu%^]imLC+Amյb"&$c!fF/P?ic$~\Ej: {8V?vvWW =ȉ+"׮8"V'7!_K]n4lNTz=|>70X5v*{|؏3ssq\ePD{:w y^ro]֮aWZ/PI'BzZ8q5TfK!3ԁѵ"{lBN ne'xWYS(CH~W+d%xuAv=#ڊ[{wz 8Zԫ:lw[Ͻ O-]f_ V%P! n-_:>qrpylaZo^o@G߫~_9)Mٜ'|'ϡ:l>Ѿ߬򛍲5at9]7Z?l\,2­&S+<_(/iCb1R ;ߑƽxwtRYBV>̏sf5Yt5u￾#p#Y}W- ,kd=#Do%˼FE0GŢG]ez3:FjޠC2 # ~u,`硴6Ƿ`y@n3;pHb ll$Yg +T +Zt}3L{E_mDdZ:€V==g~9&I}7qcJ3^q5SnI ]z;zOc= 2^2(PAIFMT:՗A=Dm d}9ۗcM]~#bD˳oyԳ2Isl°~5 ,2 BzdQ܎E`RK+z)*~qO!V^9?HV,|yb&KR%v:&޾ ?YH>Ld9Tζewnp%z~{ߤ䓉7I@G] 6'bwe.J/S5:5Ѻǂնm)onU-M򬺧7Go%*FJ*Ӭ2;'`km<`F#Pu0wPo4pU~ek,*RA;o2ӓ]uzSl{F\~!Ӛk릿qˠ~z Zuu ِX$+{QMu(J+Aö##NG3Yy),UB$V:$<ZՐKej~za&MFߏx* (I=oo迮!mufrWæI}ܛmkBgQ:a5z +F=+Z¢WCGa}Roν[4,k,~;▔e|.kGGXowy[[m4YݏvmxL{ ' ~7#roU}VN=ȼ:YH7#Tu [2E{]'j1O iGNzuDDDDDDDDDDDDDDDDDDDDD@ֵb""yeVC/'q?S2:+1`߻ln + 1#~3´(7]6wzg+`[t[^(~O"o;g $$N:+gVǯECԽѳH|N?/Zv9D2[NawL{Owv%eYԪECl_-fZ珗6/GK;eҟ;858ڊ.챀w>lulDDDD峓ŨX^eWۨ'Nwf""`./[YcXnlOcV.to޾M>-ZԤl]|c&%IUcJG6u+[VRcOAZQ'DDDDDDDDDDDDDDDDDDDDDDDDDD׵b""yNb1{7뷥v>ΙQu_Gʬ;N?oQ"N>αkD=>5rtkU}0"u o=7Z萊 @Nl(䶣Ǿ 쒓1+~\8Yn%Y Bկd37#By Y㸜\ìAB 7Ȗ=Ϝ=͢/qm4g`|hS^WvC +k y"~dI4eW[[kEf>@|LTWzX`Rf,7sӮģv'O`&b"""""""""""""""""""""""""""""""""""""""""""""""""" еb""y=hsL[G/Y?;n3.́Xdz~;R gO gR$o3~5UWQUًUfCW 9j% +~[ yBQƟ}3څ$| !=)1[% dV[[ a=J˷^k캆GMAjUҐ/W-2|' _{KFU4>ezC wGIǽnl\,?~+Rma~_^SSPvt|{'O%N67 +ίmREDln<{k}_7!+1`֥6ϭ(mh nZT"(UP4O#&P `;|I0Fl!H """"""""""""""""""""""""""""""""""""""""""""""""""""ѵb"`!ˎAW~{:z{8bRO:1m #8&FQ;|0nM*tLjl%NRo~rɘ6ɦIT$X{%Ao>}cxNU+vs:AKt55p|k["kS0camz;!A-nFK]A4ïj d%sEBIXά.Ev1& 2 U"CXO$߉łʩ XϬDً]YM2qӧ1A]>c~Sfyn7"ܼlK:jUXGt掠`HJ7x}C|WQxM{hJ!_Q =Nw xKz)kz2.> 61RvUbv|nQ-U\DPRl?4?qL5sCSi_9ITT~7scL}~?9m.Mi \ pzϏCtkOdM$?o!Wa:of"Y*ҎC7^p~c ^yЄRGf&x> z{(w "]uk8LnJo bGO_@]8ҵb'/!,k4k뜋r!<#c6'8<- K1.XzJg%<>fQiZ ;κ?~(?\z +o2Q>]@TK>քʲ%]YOS#}'|;'rTFQWԟvO`r^,]tkRobcc~@IYדg+cMvGXο">Nt38w;:+ū~: M5>q>=&y,Z6_Zbp5dmp|:j ]}D7r,r,Z~ aOUz38DZUC:g7©NT.MOk$Sf"_Z~f Qߐn^["""""p X.Z:f;n;/c_aXkY&%YjJ'rAv>-RzZˍ}#:'O'V&Eyp KOa:b"""r4EDU[YtDx c_ C &z}¡7;N؈5쮋ZQ뷯I+~+&:VugB뽃zhڒEq2^C7FbAۧC׷i=N^]xU=֝*)$S>kkVd(H ~hͣ:k]lB;Ϝ|1#u lkzτh|olz=@勞H_5xNX[,X@;ӵb"&צ 't6G|"x'**Q`у!8qu˭=%$nOU6EVYEg.Rz6>38|%8u [i EGǤ ͓bEV+_f< +1hSlTk̊?^xo>qdLpYrE(>z;jpmlAR:l#] """""BVKa(]):`X<MXO1kWj|2]}#_?<߯\@LG$<ݴfEPE|3.nc+ %!ft#~{+3^gŷ%@-.A`5S̜ҳ:A$yi!fvn_)+j@A܍v1{Aݘ*zDⳲWrQ kiiUc'wmr+Y2jED}1pgg[DL)0} Ӑo|kjN+'OW~~n^u)PڋU`=K`bA#zng-e T+e1$7}zȥ{CCۑ#m$xFѕU3c==`tUk8RhȢ"ӦnרHaׯqxڷܖƹG׾%rؼ'ed;4tgd9 muZ=OTjIf +d`5]mcwu_*9_oDʵr0K HIpg\.kїcԻ'.-l+K}u؈Եb""""""""&(K +(%NԑHz3Rª;}+L-EwcЋ߸!X|#ne.E!{6VzQ쏪z3!y~'Ȧ-V +,64Ǵ]E`:A>[:2/'"qTm`eۅs }ýy )ZzHT,AcS=tp>H{Y^l|M[~ >@ ߷o-M|Cbgfz  gsup.s$*~g C3::nBOf谱E[qZ̢0Bjl,c&ARNo>fjXO2S6}6"hiHt)V=*t>۩C>@.#LA +AoW [VU#NnBm)5ҌC7~6>]>~!ooP'w铓fCS@^PI,GMϥZqk֫gnAFבQj~ʿ'L+fV= *ǧE{vГ@jxm8l')=Wv?Z+VV<קIxNgį/PU76EwtveW]zݽOi%E钋elX;YrrXekŬB4p;گ]U!Uu &m BV~[r^"F6QzhB58nǣ;Wŵxf@Y}o'S3C_^(R1*RCQGr5rRva?0{1N|jT +'Bs1#1񳒋4RcQ!~;`~D|$DDDDDDDDDյb"`0^f"""""& >|U޶7']Í>""""|o[ڼlZ=ddS@oy>dFxN?6=/NyzvŢznբ4FO<l[SuVsy˺oxU> w1y7>xvfWCr=;xGSܛ`UwExvu-^g*wϋJww+GX?vZ?qs#kuQs8|_IGˏlo#I-_F`t2RH>_l65S(H7Iȯe:F}[={sZ9p*.ޫztUZV+a3ٚF^6.]X˯=%:U}z=j 5(fPk%r]5c +V!} ~ŗ݂ґ ]ga=gvP~!y,|\0ne1h(>.C;1xઇ+]X@[$=Y zwұ}ǿ#&MUdK Y`{*H#kzdm+n/ܖCuLy\|k1ޮټ^J[t{&)ʤ+F~MUHE`B74`&O1[cE/k8,Ȁ<6ҩezuyoṾiqnʈztSqGkt +tWd6fg{y5mz /XmN'zަ.[Ÿ5ҿk3vUbI$μNJAzYX_\v S}`#=j¹T?4 yVk?,)H$z~=8khkQ.c`W=]WV=b;}=hUHmW}@Κy,\5OMKkizm#^H徐j> GIpǤ@^BsUǠ{P;1G3U'oչC! ~>'.w'ƨ|RNv + 1}\WFU61: ++$3>-Zɔ5>0 +MZߞh97DDy. +eWHbB&Xhʪ;ҫCgI\%el-h=;W_@ v$?|}I؝6iBT3o؝qs8yMͲ5@`|o1!2q=] uؓ0މm۶D&TzT4uNJulKĮUz7"]qW+#H|~9(1%Wo%49:ouFq8vq}nzcj {«4 վgfG ib4g4:קP:px85н*NޚdzE%ֵ.v][uRv1jezwϧ1lVSuh(A븛p¬WRmv|'dOyG8SZ-׾޽]-!%i V~ 4!_weQҠ|tDOk1+f A~8Z +u4+llj۾$oDHcrXU]p@(GcU%(lRI!m3>kZ>~qpHc!_n>m}f(ȀڏH]8dzx:1`bz_>x ,+TnhI:>wRcE'f^9Z+tڝDDDDDDDD׵b'-c-Ok22N[}{_Wb:wF7nm)O)[KYeUU`b445D{Cuϟf>5ra5uTvah|FC2k|;񯷯!̶5 i`5ܾ/fMo]8>4#*YPjξkD}7 *WWӅ,Zg2/UZص導m~>{*nyyO=n{3;\bݍQ˕U0" ^?_t> nA\ZUz)VUVu.{<n2z-zJ0{K+ҚEl4_<=%]Yȑ,MwnjU`wݏ[Wet +6p*H"s/Zq-qc8 /AޙH&'%P* +HU7ǣMGz޻Ύ3NQ(ưQv-  ;u=C>:m,^K '<%22o{]Qv;2#A[D'Ƶ6bUr<,[ֽG (%ON>Rsq5{ŕ]mSF^6SqEkiz20J)b}}Z3%oɶWn=Q\Llp^WêcTN7ISGWVz=<=d죉}+KoF.,>m9yG,RUlNB r~:N*Ȫ,̋OK-]t;מSo^:sG4+Z7LDDDDĎzE{|3tUSF }{3qɫ!RgejyzI n:yunwt /ޮA/ː{2~K<) @}{ofq~S -N_l|FJԕK2hKokS7v17s.U]XȠkqmQv` w +F}Iеb"bfG-֖+vΝ里OqC\&>,vwX$"""""""""&:LDDDDDDDDDDDDDDH3IQl7c :5gG+׾scxnk:}$ c;)5T|Tw&k!NXVdd`'z`5;oo9xiK|qfGUX`p +g2 矓ͤhZRkQҊH'I$opq\|FO*0\Qބ4uhoInƪn ַt~r}s6gujܣ[D3rMYVb:5W=0 h !6йNZ )ߜܛYղ؊ +0e`Iǁ5SO:)-л:@߸ ;ȧP`cV@%GI#FskX}c>9ҵb$/XuRװbC/^'VGdb3[H繫*l 3t zzCPQKvAn&dӝuϓVcޖ`UB;#{O_ZMhЫZ_΀B{yb7A붖T [K 49œlhWQB;)e>`H!}¿!Ů +\їC,X®XҠU(`77qy_$ʰVT G}v{'j/PdYYԀ}gźm%mVKU`Ἴ.deSuq.\m'Mw$WV"^=U*C*.Ƙ).gCp»"|G􎝍nN|^=rq,-¤KiBaﴞƲ+/OqSGXA71g_UCz[VZށ>rkͻ [WUO;8{=[lɨv^Ӑ׸i@ia@{CK՛o;Ξ)џǧwvv(g} oWPV\C~=3q6فKVw!ӱj@l ~;'~(QG=܉Y1qvOG.%Ov5mt : +;&a )_¤bQߢ< -Z=)PBv,T >}xҝO]ܕu%Mu<~OFe +ù''rB"""""""""""""""""""""""""""""""""""""""""""""""""""ӵb"&5331 Եb&+^Pl >Cfiʱ\`3C[j#:޷1o%CYujʡRt|9fƯ;7j d,yosu c +;̆,eǢI,\0_120{[S<؜6x'> fuUYh,2Gϸ1rқr~Պz=' ++b,#%ʇ#oSɶ[:'s}eo±ZK<2u`uZyNG%*)lgz˅T*O1 w򝙗ٓVnT +kYNP*G{ zr,UA`  bV»<;z|}qǪZ >cg|Lnf|X,$;3BgQ_UW! zC+A?)~O"u!GS VΔ`hw=kRr""""""""""""""""""""""""""""""""""""""""""""""""""" յb$?c7f=iT2qگ DƅNSV-Vu[[U=TXm@w>*n_GawGhhmZ {}r[#踼JxhF.RPHͯ)⛳ 1CA^>jb?y]b[_ ^~yC{AȔd퇉բ= _-HJO㵦^?Ib݇iߤ4Յc{{H b%ʥE:Q hl@ePRqZtb =ewӸgl{9#e #/̩$_}E]eWqJ0 V, oz:` eJr@$td90L [Uejـ,^c6bj" ; +|iɡ+Y[ +GQm9}j`;W;0m(:أlOi]+o`1D$:GV·tFpqSfcS!6]# l9J5;V +Ƶc+>A;&}frحZN]/`ue>g]kuD{OŻ%"و7$[sɦq eqW_n平qzK?@,:[϶;39< <;l U&nzGo3ڎ,}w4gW\ Qؖf>Jl~j< ˚NlfD,@%$yQWWdOujuYUmjmk;#̑ۼnk 7(V??qzlbxuY]SGVIg1ZoF"o>?#0`[4vi{lLsxVYzVeN`]lX6ZOm%͸>e'"umفވ#)s]VmikPV:+ +tJ?)81q2 g3t-H#WŴ]um yO.CU:o{Vbʻ=Pt ״tXxM>AUcԶ~vںElEkwzɌ.SVj)le:ޙX;w<71*e0ST&vy-UqvT[G]yRCǽŲ^6QF^_1,zߵ~ +2u`v;L~=2_l7{LZrY>@,^U +B†o~kgb w5C]N@Ă/cs'f[lnźT3h3+Z;XIҭae=@ c㿔Ŝ BꬖҸOb~^s+"#Nr{CAߙ :s9>9;`*0p-f_P6%eԶ)z6.l>Xc]9XS #ר2j3{z[X׮k9;,[n3c5Zר1v5%Lpq +iG*} wDDDֵb$o\eؕ:zK2>~(faPN_ŧ#FԡlLz);}#{G1ZRvA;|ۃuk[:+R|seW]Xh~{O(BH/H@~>AZT@>1SZ 'd*DGPP`㳵07B'[3)E}=5 . nzLՍU$T2}}&8l[کXd qWgiP ϬcWQDUoCCzИmUo[Pח\u +:E6ZԽ(G~hw&,G ^ ? ;񶒅٬mk-|wɧ.@ [h=fjB_APKk}؆Jq~7nH=Dl6f%IQ>-צVL]UJPkPy'\{zқF:byN75W5>#['~''ˍ^GҪ:=,! z=>g7) eN=.OluEcՋMT-`*%F{Wn#ur7/bsChp+Q"SZ nA:@srX3C5,){|;Z#Dho踎FS/Dt ԣ)RR;lŦ*[.To|'rߤIrZc%tiHV7XMGޢ؞Af7s8-+xkᮮc( dwr硞o۬^8Ӧ.T*;f>:ObeכZQ%[z$:`Hjmj[T e@R꠸݅Gr(e^&,PtgsryK gPu0*59B`]]mV]#Fu'QS6"zW`Yd)J xllkSg']x<XV#jITw~m.˿Bݏn.Pǯ9ŕ )-KH Hu]NNv)-."J؍h9FgQPIe:}Myvu^a{Jkdd>@b@bןnӝ2ry mHqr+%!E?.O#Iߟ[(iE6ukD/I/3[xzBU%n̉-ĺ܂5mLV+Tԩ빏`kpR +\̻S6 *{R*IBL[;AT,:SS)[9r咽+ T,0lkcG}ӊ9|qx%em +V&SpaE*Z3m֗0;cW~ї|Z诐Wb53Iקo)̪[ +F^5Y&GzBuz=omOsBg8F Ed h$0:Lp]YW샰>"j8C\SvPkCb1r,-*T${\O$ވ?\~Vq3ud.N.>-xuMvU{/FљO@;|Đ*¯ _֮Xv-u^$EYrѶ+XSe*Xu/=jMsm.J`2ِv؀ ~d]9pVJML` +'U<O#fe(SFh#+aj&Wlz +ާGv?)9/!+ö yl<#NO!=à-~+YZg^~K#n+^uWW B$p=xgҠMl`@g^sxno?UŮeKXu w;68@:E+mgKLG MxoU/tvg ȕ=/YnEt{9f3[^ak+~Xs.<%W bc!Eߖuhy}O5R~ {kd[n<;ʹ-}Wu]] BXֈ=nړ?7Ԡac!XYv{=<2sr,= Z%:IP BY=oɿ `U =un!uG$rqu+6.-,ꣲfq$d1Tk\NWzP a?#侗Q̥a:AeH |L|smj*Q㪲Zq@;SpVYn;Jƥ&>"ɮ8ͣKk{zGy/NLI]蟔ϱ9eW8o)m>bLuaEm 彄0xZ4z:,cdd<:1c]A:$//FG'nHDʶnG]tڮr*pԦ~36 +Qo3_cYZЊβȅތ¢rma+ ~8.aB+$ ~=|?df]HE6|u*;ukrou}#k@)aաI׵b"&"fbsO}X %|H_ߤ'SXz>G^~ yw㭁}73DDǜLDDLa311DDDLzf"cS19y, +w }5ٙkW:9TVQ,]l cBf'ʢ2HfcB533#FLt(=Z>>53>YHGc ЍAP`ԉg֩ec *.hml1ŀf:@OaNPzLhozеb'#1 c_1zϬ 3X3*Q =}FxLDp2ہ cwU:T(y 9'2rtF+A{kJSgO}=uc[g't}GfK.Izz(!*zui_ԕWi_~3(5˲='^~;ܕoe!*ܖNm-j }Vs0d!tD-ߥ@vus""""""""""'6V%_f)bIwde5̫2 -ؠ >dfY6]`A@;+Uj?H:ߖ{npq>a_]WVƻ ydݧg'ozo:^_8xymգ UN/rUׅ~ +Aխ7ue}bY'0+v(Σ(UHV yYʼn^]u}u:שQw#]$^dartdޫRQjPՀ:=&"Z +u:ujkΣ0M`KǗf2v#`Hcf?4 S_-}Ztuyo_95mh +&0*5mEelbOI^C4MX6{z"PXg%@~shrdܫM)StlXoC~CRa)JvE}!FW13O޶onf '@yqEj*xvsfc#eKmDfA#N5dՊvXV!Uxϒ :Om]ݟUyM!tP-0]'o/ەi"n̮$rS\ʩ6^j6TbIbrd}mFUKe,?HKcñ;:&jPֺ'[fo`+M=e2j ^#;L2nzkVo%gUc];|k b/N5-MnsgّUeT$u̠ ߺv?h].3lJة&G lzNxz6:v7w6S}yWV 2##ni72mԠ_:'gGs8ϷpnƿKfu9wd>e9@W +tzX6`rq ^>=;߹6vKn]G!ȷZ\C0RP3򪭊!KXys}WmF_;˥omǦաE řX"eWca6UI_]Bk}E]|w>hͣ*rĨ_Yw^PX6Mna桁a9̥6 U:f,:Gw>11o_A ^I[SfPC5Y!RHﶾs9,k +*܄`u=E{4{ Yq[t {^O4-՛[Nos"" ѵb"&zjPUb'b[нhQT`|Лr'U!+ a3/տ~پ% v(e>a N'թC(#c{ v'};?v Ȝ^=w%+ %CQ؟#sŪU|=NkwݻzOĪRE/X`Gކ興T"EI:R? %oP;W:zqyl{8, ]fJOMfg r܅q70#(FGGo>=gVR rC ubvWkQԸƔ_}`;7Oÿ!/%^d%kBtVBX3hY~/"9Q[!Ezcv8kjE*z޲կ˻1'gk@;uMDt+aS鐁M>uWdcr+UrUNR§@aYf]-XХY=d }=>[2FRZ]>Q:rOyz(㹮M4:ag::6o(1@ b[}$%w5vW!g,T `*O}k򞫇.|Ǫ:In:fې~>Z'^ ;#!;2ޜj/jX T !w/rv?In 5]G)­LRhi;z_?22qlejUXP:4ZOo:jAt6|{yAe} +'Ao߰bŒ1(t톹9EؒjC(= ]o#i}qpq[r:TT-܂|mMX>G/FnE(lmaT +p +sū͖.B8BܒQQ W&vd>O׿Y-`"Wx Ш,z޵DyJʯ$PUpz)-]|Ob$)*Sc_ )$4d};JVqJ5 lNJ9mab(GlYq|O?*ʶKOk4A. kaX J( ]udW$_7א1pB{㒽=(O9o!įXӮz/bҵMaF$޿PG5!?nBx>F +C^g} P5fs)GIPz  }81dWMgsSֽtifi0ùO9'U} To uN NbRؾWhwO$XׯtsSxh:Z5펮KEWk +Ɔ]w?5cUpe(\Yv:N0SJNUu==(Bbd/b4SQ9y7UL 'uq.ӛE=l2TZuP|}Ԫt|d&9?S{>yuto=N,qMvnkbQ(6I|{쩕|-N-<'OZ Nx>B^65dPݾ,:I qVq5X繝:kv•nOSO?q=ջY],Z_0%`=>aqU! ݻ +\#(Qc 7|pF,k-EԻ|Nŵ9xLC5uu-Ҵ;cib wK(|2<؝[Oiҵb"""""""""""""""""""|+}0cJ 4;>S=#ZՏN ";!T(' z/BZ->/ᯉu|:6ϋ)u#`{ +:t6uwLz쨣;|;O1(5T:ҨQ؝25iK!\,fm5:lUa#lПՎ7ҡ)Mv5Zo`1ζf>Nv]WUm\C #KJ!$*@@ |Պ +Z$BOUM]zfǪWtVd$O.=JIJ`c֪T"cCGӸ8ؔᧇMiZ잔Pg6bRZit_n?F^ZשT7zFzbJmmzѝ>6&eIhu >?N|z~EֺzGN򊨮F'ЖH,>nCn +4*@5кdTäֺ51~!E# Dy)ƩʳVIPHזbQCYR1E1}6=nen{o][3 R(:#a@|>kǪRSZ$v|N" +kQP4WP`X=3רA~~QmH޺6筏5EykՆ LZR֡P(Djŧ1 wV)WP je* +yv>)P@?aWv|Ǒã$[R9S,͸װ{)0`YǑcΉU`|\cE4,dnGVpS +ODU`ٵkUޔ lll8BVj]mؒ[qOQC+ G>U HUt/5gԋ<_ z=:~sX R!/::fá5!o>rlE}}]@dPox-˾='c,dRɊ>s]~5RTQ͜f-֭EeԒ,7Sk5ڊ|Ք2#O*A_N:GF:֢:1;W`50pqxfz~[ֵQT5a)i)b)V5uEAMaTWt v3T1ji:.m:H_/=9{ʣ+!(tA%פ;*GrLqqSXнks7|dP߄ꈈӵb"""""""""""""""""""cqoWKtkG[ߦ8.BS +UUOPSԠ+؟1wiL7В;G_싫-H,A![`wפnGc#~:VWQ ̤6l;v}gdbXID莏=Ir3-ű w+)'X}#$ UȂ{zA=/:;+9,<<| ٺQ%K}_q'S0r.?X^@ڒ wSjPbd_+4iK%WHvR@b@#k닳\[^;VnUOVhMnhκ(l +J:ڌJFǞSquF7#~F=EN^`݇yӸ:^dA0$Z]0m鯜̫ U: b %g=}De._@܏nfcqni1,WeT-۷ {yMۍ-Y;ߌAڿA`B}w&eA$sFScҎk "qr,(&>x9^nEJ:w\_F~FW޽uu?n>) \o]G[@ܱ""Եb"""""""""""""""""""D{[ۉpHdƵԫ`ʤ +{ x_8ZlprֱPϲK1uDEͰC(`ogyc^7IkkkDD밋 >s{)]z*j1zXԪu޾=ǜDz~%DϑX#Xt*;d&Cw o@'q%-[c}!+ᔵC_Oި+|y+黗ɥ!}oF~󑸦_/6llzc1!MAZ (,~>dg̺M5oq!:?s#GcCz=NCfR2q2Ć{ώe gRnΘSk^]N.`k^C VJ;\=ˋc?-?ILKJ?؍gc{rZ#DUz|6+#MX:%O^Aay}YXݕl\ާfl5YoԹt%SZBղ`rv='jȭ155mr2C]>Z"ɩ Ac +q80og`V:ZX@fBq}n{ +S[ADzMs=SZjSuum kȣ+uwRbPǥKhdW/V޿\Q#΃/%n75A$OJ޵FIUa9 ]ŋtCE\]Գ~HOvvBWI:C]b\M}/3o˯GI]?V!ǔr7\]Fψ˦Cb|8y>(KʮEw7g߼:^<抬pu|WNB=iR<=R筀 5{ V>'R%ݶHV$ u R# {9]xr +)ӽtžu8.X9ue =vv?9lz99flrɪKocLvO*,5p-Y(Y^,}!|eqF7W^(*7qJfՒWevPt' xK,ZS1mlt 3/4HҮ]K`wUGYӭXGWW.67lۈ&ũ|WRXh2{zIgs,0eԳd^s1?U{ 7q̺յb"""""""""""""""""""sgS^U/S. >j/GU]%z6}U.=묞̪2ϊ}£q+KrjĖ}Gbffcܑ;=;qn{M3'n)oR<c(Ɏܻmox}aUj:#M:BsYk[GSu:e۷;yUt[nmd)k+vP .]5]v[fdT„F]}2ZEgݔ:LĒœz;'nv?Jf!tN{ vS: +=}bo{w_VI@Ʒm3EZ{J#͊O;NxŦFV>&CZ#zX; ȿ2Zt[mڒ&GUulx-3k˿Wnݻko)5صDS[" , a؝p,fV+~7ޏϜnHU;Z3VuS^GpX~ + ESgj>`QXW8]}޷ogWE*%|ZH:3Jֺ*?;'.S>eQueav5KR!FSo~a-ⳤr_[!^w۱&".b ]tceU\V']cO?Yg n!ecI%|G$R]Zbj& Cj5@v^|W fR 8 jֵ,B]bIg>GFMA[U:2N'.5WQR%'{!~E_JbrvͰC3'ݙb KеC6Y^[!~ggNhZ=vpdt j G[{רį :+LdKII>?A]^2ea"khWT&:ݝ݄v]zLq./1PuS3y)?ùv+ VVS`ø Y5U̵1uݏﬞ}p(tDuޑ޺}uo_Y֊u WWᅲy}+[)VFb::x "k]N>1 v>S{-AG(ֳmmJw/IorԭRU#Jɀ=-@ގniƳ =gL7IB]ƼHe6vErHcۙfҔiPBGV]=;FGkuYchhm@q \UuYC] RvU; Og0*6㼔Qp/ :VPToKӾ y{wR[ZÕ)bb! MYHC}7UcӓfR,PLzށRHnN/n_XT$~#PT'CbpRr:GY^gOWOm'% XBːŭWv1#DS%X"k `}`{?$ uKuZE mZ%5z;1F]}1>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 48/Tabs/S/Type/Page>> endobj 144 0 obj <>stream +HWKo#+<&=3@"E8A䰷 0xm,`}ȿOwU?{|t9쩮}>}??O|O:ϗ!~H_~8<ͷäL*~2->|wRz|0y>>iI.=IӇh&Jʉ1)~5gfm|nG/*}OY#Ἦ9[ jw\jZDBwxYG/_Z4/)0Kʮ3X/ ї/I|寱NҔB郎-~`dC,KB 9pۀꨟS2iƄ=0hgBw!c11 I9_]t$=gLf>ϐ=eu5L?-B>uՋ$Ķ^IDWK!5sC8Qg 4}z3K89ĘY|룓,_ O=ܻL.{Sh5Igm8 +Rr< +3tZ%kr> [,Yzrڤ,zK٘1>I7kzDnrAZ3ܠ\5KUbRBJc'C&֐-C&k*#T)ҡΣG]C㰒75H1I5DOBPv(xK%[#b6Yq7'ś>@ 8^R.]wv}[sNh'qun<"pZ P)o%Mhmh~u,b"bbˇ(\?gP}5Yn%]9{d̈́*u`>*uSG$h{]vw0ve@@WfSBƍI~0:O~˾fuh m׊ce <0-N fˣ#-;w(=ñ"]x~-}\J-bqmFSx[VMn4- oe&Z6xjLqjex9+ٮ^m+ZrZ@l!lݪW7WL];F'5$i-iHdD/wMkQ>FsG<VL+Ƶn}6{*H")Uۡn[]3AAUdĤ%SD6|TcpoXԁ òXt{76bchN)*gyvtGVlJ Gfc%vo^j"b16Fo,u +?duTVAZ-ک%ɬ~gd#,oúcчoT1@H,JאV]+ɖ^YxV"ܻU-4R-{m;n 胞YvB0X7YMm@ҩjᔤ1'R xb[K!̅sMuogvўKoo$捺F ֒ŴJm: !-DwGRܵ46 +b0H Г2XS2-*^lhЇ|gF ZzkTF{` Kӗ_>}_RϿ>ƶ_>.SlXǃ&W2r Mnrs=s \!V(= +endstream endobj 145 0 obj <>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  + e!1AQ"aq2B#34Rr$Ss5CD %&6Ubd +'()*789:EFGHIJTVWXYZcefghijtuvwxyz?QЕQѕQҕQӕQԕQՕQy{s, +6d9 6Qm$/RNȆ8Hh >$֕QӰ+X;Ț69>J TsN ;|y12[' \9GeY|\招{[Km Ě Swk-uS lP& :.sK|mdgbSA-q'sUpdRr m`X+Cy pȎo[9̇7$s#Y##u<+ڶ^{Ș=FWkbYqagPD J񾉍f82)KE`:бtޓ.Ögv5CyY0k咷l}KZE : +b "owuIdjl~V$}|!nXIq&-ZtwzL$ ;m`wBUc&Dlƣ%Dž"0 xpdyu^hxgG7}f@l#CAX #nG<\[\mmh _-i^H7"WIVv678 h[]>7ŏ$r_j\Ǎ#MDݭtBBOZ~̞tIsvK8nK`kC]}W}>H8z#߳m C5$6èxr<RD,wM$]Ua]9c_q;\q+d vmp4zѯbRn>^&>DƂVr=7n =Ey9b%mca\,|~GK]a> ^dۥkm1HKg{#%nhl3g6,p.vIa\ ٝ[l|c;]W{|/cte!cf0s̖Ic2XKϵkus!t9068罱2!ĀZ>h$tZK';I /@4I}s-[iklңWiuްّ56f4$L1V2+e2͐cv)֒<>kG#JǕE``k.vh +u80zep}_B[)%'26 åqߍVydÏK]OZLl9ݦL K!Ϧ5>@\Wx=:Wf \ 1z }Ǒ%PsZynG̵ M̄;=AxZ xڋtŕoԤ70W q-,ӾI"y[8W= k}bEA"~湘\kÃ=a-K0&Tb^[ĐgZEzɢ{_\l Kv-wblFՑ[׋Ekl8q69[N>\(%u=CRp vqq=ky'ZYC&Tm{)Hzm>΋cv46 ""ЕQRQQU7Vśs,e-x5`, "..ƬЫ5A^TTDTUDDDDDEETTUTUDDT"ҀJ +ѕQҕQӕQԕQՕQQkr||D`tcns[\I h>WG'f.K_+ű^ZH[TV<==4]|nj{GCH_vv}-,gv Nq݀[,Y [FiqUjr;I#dl_vKvi8[e{Gܘ3s}mXܘr!b隮.r1d1,xyyy΃Q nq꽨r2d- 8$u[UUny9\}p؝v,1XjVwDq$JZ|i5CJك s)hBۢ"psHlyoip\8&3 u=y[.=ph% y+""""""""""""""""""""" ֕QY˔ c+p2sϖ!&ݰb1CGH߼:j34} S dCn;=}gܘml2]qS7SՋc$<[L +7t.^֗Qql2CXqDfH4^h㞠7ܯi5A౎wI%oZAs},y q58>h;oak-p3~ŏ<]&ʼn+wJ6A/k&pߪ289xL{Z,ZW5mWQ1>#$pM$sAթ^r7ksƗ>9\ZFߎmZ^tZ)a#{ }Z^3^k(QgN̷|@xU.uz̰;MI/vOcY4N#~wzowk~0+>mྈk;XKcAbY81Αrlx<-'}7 l2+ Zn#92V}j{MdE6'3)ѿ.g?2.9pvT6C(97Z>ek.8P^=#32TnƺQ{,'dm?=E^Gjt2`x- <)OC,h4AۋW4~M web{[wF{og{O 8Cd4sڣӫ@+Wږ[%l,mvJv7Ι~<U X5 )qa#q7[ }j;?kڡwxg_97}.~'lªχ4YSu|,fF,`ph Đ=nוQy{CiB!iYȆ8_>20\ mUgc'1M3K ?>HW\;4 Y$ݻCZK4<41΍׀+GGN4LZ8y~^S%V| 8۝ѥ=|-_^61ecG3ݛvnx$?U;Y9b#1t7<[r?U{Oҵ`lrcsvvޮs\?#]quDq"xgxݒH,T̴L/Q0N2kđFЦ)afVÒ8L27iecn1K3"1:ָItUNxZo#@촺h3؈ֽͺm|L"=w;6CW5,}['JӣǎfMˍC;C wCCtb3/N\r)gl5r\nk/kV\XMؘYz;jyZ MW9lmK'6`n߳l/{K13i|f.Sd<[nW$v3 sq4GѮxg8yΕ<&/e0oH+ vo4dљ  g^öz0K8\1 +\F\3cqI?w3rs5m#&I;$0pBG.ŮS]sef{È%=^F^.K*F@x63hց=Dޏн$rNi棛.Ouݒ#.}޵b|ف>9|9 DZgk5ad"ٻ_Py+=fgOrFFetn\1|tn&1P$o[<9]e+a#e@ֵ.w"E4Lټ*Lw;Ż1-zrݗ7ÂH$as r ǹ9 Rʓ"(d"2MI*6&~3 ,kH}Z'Ӵ7:,سAv0n.fniY_UhlmzJЕQQ)U)))`s4n{ݺ6ֹݶ-\Nyr<|zƴpփy+eHIIKUh#T!>qs}a3ObGg9q96O'R*R**RRR%%****RRRRRRRR(k2!D?-i:h)UѕQ[2b /T8i>e5bl(ۍ^[+l>&UkumMM;[54xUj9XعQT5c A>UYˏ)1 nC`VF\#mnq$_Uy 1aasK]H:+Tԣd5\睭h. rO‹^|Yqbf`| ne)+p\,Z Rx=={?aIݏx-$hsMr>+""UF6Lx.- HGwaUY˙##tq mnqbJG14e"Z+S7#3V1V4<8=BٓJ9Q{XcQZ5IrsqcZqck Qڢ""EXʗ&<#{w?nƵ@$5KZ~ ztoPs M֏7r,̉ҹ.vckKIh%גԙQ$q9 gu#Z~Ta_GtMޯMo&[Eϒ6td"Z MUV w B|J"玻F]68!sxa-h2wy{VdlYQcDH.Z4lq""3y$p%nh<Pcj9bc,Q:g5@s'v8H=A#J*-gguY5gK,b7ysZo,$^KhfLxdG5!,4_Uq&vDL1i,uni"Mx"4֒OVcq3q-ib}@ݬAc-p] [DDDҕQQs=u{{yTpÇ6yY23e=NQi$LqX~qkU &=\`ɌH$h , \SIDs6)㏺{d .Y#ZMc'[Ǜ-0Jd텤͎-`uz=b->nV3pfFיd7y'ڽ?*=%9qds Iǒ-I+sc;Mk2f/dR<< N:RO&htq!̈:I>VB$}y9{ ({_zJH9ĝX KJfNdO̜"FDC"k0&"6 li{`tۺwl;4xzEkL?0잯p$5yC,dmkyU>XYl{`0F$A"@4EĢ}V+?l +v3:x2Ҥ%S`&vL~6LwakϑѼ@^]]:܃88=y5nk xu=z,}K#Q'/cɿ H[i7H(9ع;2Wosz4氒Z@rvfd܆G!@mk "q8DQ<}A I贘Zv6ey F1۱k#-/׬H=z ̍{P | ǃQ㝭Mݯ}..~]˾ڳ] ۹Y*Q\cqL#&GL5 wq/Zn5}ag>ݱrTGc398\2m]irdǜḄzrw[^+c^l8:.i,sZIO/7;s5( y[isپLm 8j>Y#27"繛ӨX]x,hn=丳CRepp nzCd0dxs-FێA+0}PzNHٞEb~]O=VL7: I;%=ݶCΔju 3m-> gdJ 85kMd^+tvi=Zx;,lO"X`CWZdmy GAtAɲ`n3K+9,49Ē*<V,߀!ݗ#s";1E})gq\Ӝ2&,<4Okcs2eb@xso˳qfNd}9hzsʳv,.쬑Z缋D + .S,*gB)-.kÝn"Vt,Gj@Nx!j{PN,Myw:RZ׏]Avҁ@,7ٚ~XLè':2q.=rL9xd>'ofAm%O*(ӅЮ6f;s+k +̍swkʿi0+i~Wt+$`ypUdǚ敢xY3e2Gl%A@ +>n@ fRr=GwXyƒ]F'qfFoxְ4^5~!{0{60q睅_w&O ߯G_j9P_==6Gۀ |n~f{Cd́|cÊ▻?Uϫ6|@v3њ Ǽ83.|AcM{6oV;cѳ\4iZM_BNj6Wlj>WH[l⃉?Qr|YfccʔIhuB>)pI\-n6^noD潱!18o%;.YY:,L!=śtAEoRf0ŗ&w %.!=6|)v9nsKK|o{zMN~+DM k%@$]u>>J·CE$P\wP zAɂaşBHf2K;pI4~&aұ^)?x22FNǕM+ENvGx2\90ֆpC-+ME-OWA6] +&F^fWzMkCXAfx>/dDx +l bx`ɸQ7N'l10r˗;_Fb fx<$ظ=;`y%cVE.,9˜D+S][Cע4Xܞ:gsh: /xfc mݽŢ{8VLL|y &S!.塶$SGV(윟$4F&۲.x̝IvK[ a柌3wuU24|\Y1a11Maw^O$ ˻:_MMT݄oU`-6/6O+]'1zX XCWc3;D*L\ёc8H)GKH)dDx쇻{w;՛z$ ~iLXZdrZ5< =lsfl &65^m%ɇgr em궋NϘ噓G4 Ej7 \:;q? cPz6V.Tret!ۛ#4٪ V|9 o곻/4@.;ϱl<;7j-o|.pY݇n7}eȵ\wM{^-4m`C|C>v25c#1{M;{O4(_Us+Ey4d^ہ}gfk"?e|6"bB&D3EAo^8y]etEl{d.9$<ŧM&C2rdc0>s4[Фӛ31K[,w<8ŤAV^#[5E7x'+/Pp ŲKcny.yOl6F4`1ͱ-8Q-=&'iS#I3qh%xBEeEtӃ6DmkXis$td:giyX+V5ѥ9]9icҏ}Ҵ$ɚMK]''6ꚮ:vo;':NA V`@ޝI85ca3QǗ:Ӆ,]LV?l02;nypfK750QϿ+3ID;lnHqbP+ c܌]NiDyuYyTlLKf564 V7&/wXvt:G{xњ3&i/q»C4G#O;]7ūy`Dv4Y'gA'œ0 is+C :zxDx͓9x,Vq/sYz5AZ-'31 Fb eǎē&?L`JGRb|v-mX6d6Fo{,d7z9V9 gkKڎ^9`p<K78תVVWj0pG7htc H^GKг\rh1_i`[ xX6!sZ\- jc+?DnHY޾Hߵ k= +g=7X>uUWwU  df懰ptz/y,_|W>Xٟ,O#nj a{ =.lu5<fnMyhcX7 hbp l^"6G ]y&Ҟ֒Ez>M0^w{{KIh(W #CfMwn cCDx/PwG,"{fѪ>-\NjkJbs0eŹ 񪽪z,gņ7h$o+i#|?DH ȊQv _PYҺ ˰ۋb+n% րѸ +/iq"=k$Dn0 +/(W2C1%{fF +>G`r<@WH5&ݗ湒0ZZh= 3@ K 4vȁ&ݏI +|->|nd̝-{ 4 sV>2GFhٶ])ld1hpNikv#\lcs%· c~.hzk:=!tXc,tnyr["#CdaoNG zv3G8 {[[IKo9 +Ӳb3Fes\$"*=Wծ9貛7:0J#dOt`7TBx[5EEJCzH·&rc^ v#^,F66F._v@tkOyoDD֕Qk{G.nTV][GX,bO6(Jז3vI4Z^k7uy&;Ũ4`'npvPQ2lGN$m{|Y޽y WGvߐ8g08FMrJZ.6ֽ&-t@]в3q;*XZ A9$=ˏEN.sfIƻsޮZ̘ 4sj7|!n#g|_DiŬ=L#G2_a*j3ֿѤsZh46<;xml|=MƟ';oo |vcH`Y@7AАkY[ɐ6! 7{#6H>=غmsHƋ.jkxi q?(_! ˪<-_k$ :&hv }ֱktXWŚɞ6`]cϯj=܌vqheMyut˚~x/˕,gvFi J9Gdg؎L#/c[57ȞZ$r fd cc"5C4rg|ꀶ,"6]9,kI.W;N9s#FW8:旽g&(93,Q= u QP ǿl-wi8#f7IN*'M=|U og3I<20dcᕔVN {C=5FT'[Oxى͊Γϒsn94djYLy`͸a4X 3{"IchMzc>~68JݡndK>旿QAͬhxmذ8g47r\82[uXYXaw:D܎4qfdJLHikNyy,b3RAm,خ24m W4qx$mO3;̬v} 7j.#åvs i-M]6AG#!8YkZv}T]#& "MCQ{#tr ,RAw@^Kd3 %dNkm ]UG#\#| yvsKW<yڷ>G l#s!f>#@nV;l.$MYbvҼ5kI4L _NU "Mk+Pcqل^ yw`5~ZhavWgt&L/Z׺Z<èo`C*%)kˢc\ck@_f^\P>݌۫aӑZ]6TYX^`d8i}kRSC eyQkYO\q -av$Vq~nFך kÞߏ@kX'A>%hJt=i6-qO5A͡>ͽcFg AVN["Ɓ=p|eǡ6̭br|qmYƼ9zK?S2M uXU U +._cH">ŪGMN,ldXl'u-hWu^Y q֋$Y=I^$Ay&J6ȀGA׊ UPQЕQP^[#^-dpohaiua=F9u^|<(,mC&\X ; ZGKKڬJ!>$кd{]Ȣ[}+Rf6˚S渵 b"{؛M.;u<,DDEc;6: 2'v1S䴏D2<7F f|rC}n;6i1"r#k^ûu;趫p (n[ꮾk) +{^-H#^Pf܌7 X.k˃\+i[DDXx9X5ߒ[wm>DVz̔5k^&c,dY8e*:533;G$r1A 8r8 cH=sy-muxVc\l#+""""Z@Z;,ɞHHH48۾͏RNj&+#-4E+!xVB-4XxM󒽢/ɷlp;\Zhj5Sdݺ7ָ: 9[DE5@BSւu.tex$6&VQۦɎDZO3bP{|*H[/[0Gv.@ś"H+",Zm'.%l21k=vEzշrHѕQxsh`\Zܧ2Yi~M ;~&gEXda\톈M>|vaidŢmKwQu^xY6&Fk+rܙ+c18tוq\dt<;{\C$u|{.@&6D/ ۼO@OQʒl9hȆ&>9K c倎Cwg0%l=XH--KPl{8\ \/U_:XGfXdl[kg`DJ}bC/I7^X=͏K6!ݏ#wC\浮a.ow^E:-5=0[apw4H;xkU~ fɔ+CZ\`t45l5]Ynrc"v\I%{\1胻jÚ\P2p3$8nyFkiV;|N% =+UvHƊh@#aϟ!i-/ 6yN0 } &txqs[5]KhI>ꚾx aa.1cfMi4HuWk8+IKL43`# KżPjfEe!'p\6|^QUYs9dŤXJYZ<"$m23</;qVSQ8os:WMqIh24ְE,Lk\A m 񥕠kng/d+ɺoiiuX?v[}}@ YclBQyi:ru>|#1L؜ƴ,s[ؼdSegG Qn!teYXgvw/'Qď.w}Yٰm圛p ]!鬂f}As5L*,hK&NNCacGfyni7rUeqɗ&S_1쐴i #? Ӂ hѣW_2;w6F#,8w[^\'xݼ::mP^tu{qB(]X/i{0.^Gi21#w4Q9IYY4d#kv9 p"{EzT n(k,X=Voj$nb˟&eŚMiѹ; 3 ܐpwX]º|ͬѩeì)s.;儆文0T9b23|Җltv=q s˪X$Ԥݘ"I_80Add>W4AiV \*~Ga*p:興ҕQPe[ saIwsmSv>&詥iZ.03e(9 Xoc 1?tonCEhQ^$!6%ŭʟ,=iw@@VzF^ 5.7.w#HKmπC+KwppUr=͝Lְm_SdNg3ke.w;[xqf9S K;el${Z^V1cLKˇ18<4mOE}7//fI#ZtCW䀾!$%mcۍ[^ !1 XގEɱF\-59iGؐ +߆6^jؿ&DC[,s:6kY:NF.wl%sZlpp# ZΕksk7\Yc\IoS]WWM1i kX6 s^s>~sB3 q~m5_iVn9^ݴ/{~u<|s"ĉXV zt>cf诖,V$2寄xsnkڼzN{1^^#Fh5eHˋZPp&>dp:OxD lTN><D~utCD~/vaixg8ĺ{Hym;~*315 G Ŏ` 5d <.z~FݼNƺ9Ε‰7V}gh8~#] _S@vzWt/ͦeco #Vn]Ҿu{,39hh{ưTmik{(7L`[Ln1 8q6m{+}1 Z0c]t#1.,}:vNvlYٍl}آc̔^)ssg&."8 ;[Ћw+9 Nnd'k^ݻ uN8oݜҙe{$e[[lүaiyٚ~C;s9ٰ$d?TʐDfdkK=+Nj׍?LtfLils9Ǽc>H193/N̟' 2A#2G2wm(tSBҳ035 nnL쑥ئm tE;[k Eu`f#(FwGY k(lCu<5xuDyFV( k@@-Oi4V"w пRh]cIey|q !9 {v!T9_^2)u'<滻eC]cUoH_&e42=ͺPy35Ǐ߱ye9nf>fV>V#{u#F pkjޥf;w=> #q"4ZH?\m'=f9ѳd;Iu07M +i{3^ 2kZA%ӟbwfF4-3mn d:ԴCPmhpkZYٓw?tmԫeЭ??f5A/vtn;Ci5yS^ԙpld3w|WmZh\O$FDYg""Itl=;Z[izN4ٍlQ=66<_%[Mh&[< +Ns 24L1.?/=ۛUM/&߫nbeeH1$Z$Ѱ1OStlY_ØI#7$Ӄ4A-5귘:y7D cJiq8bHk8C ҳY!n=C f \EAZjU{4201:LY$!ָ=O8 XfF#22vLL+/D"t.F0^m59IZpHetȷHKA}c#FOɊ3 Hq洹svzsI4On9^8ᥛNH4-xC69bw~_궅$xhُcAf+۹Vڻ⯢?'JɌnq-df躖T FM$iYY:fd>kL]PI{=Zh5k+C9YrBl sd6(Eyv,}}ŝ3 㧨H>F6Ʊ@y(gv c7Ƹ0LJ8,Tѧyo,vNKZ-C Y$|iF 8s;kOA""ӕQQU.QQURQR<:~><8׿8 +'?t|J*|,\='Oq~<Z@6,f.T,k~tU|x#lQ45ց@qfhZPIV>4XƱ+^9獯oȫ8:>\!c >+5cŁ1pDDDDԕQ[fcF$vִIZ_#K!8֓~5V=Z>MJVVv .源ւhy$&T/)CȲ[Y`V}2Hcn-玧kA )7i7psnA`4i25<\vK; ԅaҎ2!ezJ~IFL<#o-4EԱDz4+6Y'1s=>eoZvpd1MЬ?Tcqd6p~+$oht/v _!zpqgJK@ap~׷j}{/\].wj)F^ ΐQ6Mwf`jڛ  qkkPZh!cWC$޳+xk^"֐>H^XrOa !poӕbnmY,Z oHFill8вhi> +Ks.akBXGҳi̭,Zmۍs| q&kmn"7|Rj,n/댤( 6cRou\"ȢC|q䶎.2{m.M \&7]ό{O"p]&ɍBn4I>@ $Xk3G2`{SXFz6V Ňp<׏:O 2G\ez4\]{ 5)}vto mxi贺/mu]G.;;:A`q}_$]&ZC tpv[ga>n> V;S6L,sKnhh;wvYO\4SMݴnG-g +ՕQQ˔Vcc$9bٱFvm}Z':m+B{%p¤6PqzpWU4.Gs=V57mgz>VV%1  QIdvw Ad,3>NAߺz:[n{MG/4 Amcޚ1^jy;+`8k8]x?lFG/ل?I6<}t`fZ ~9{m >Ed735{p87`-d@Wo`kn Q&ߋ޹C7,زwkZF`3ooz@(v$XƌeK&4k[p;+M(FV^әmfxd )`Nk>3=Tձct{Ch -$UR6Nf- y{Ņx!26B1:F%wUz~ aڦfacf81J;yhjE6Ns5g͹\@6լ ay֗`öViy:|{+梁jy%sŧiØdrDM%ǐ[\+Q6h;%V'Kqlp oa k Atx,x.5ڇ.Nɚ1&&H[L{^y[TV;Ȣ ׻_+[}k`oz<+?j3Hqp91sK4=XTccA.@Zg K@'Hrcskkˍ6)/`V8{mz-.Fˉbel|QC& ~L3<\+]:=NllA'&l!D,Y6ҳ'zNM t K Nt [nkdH6|ʵϩabA!d,{ l;mRّzeLk B{̬nI#i`isDlp_4Mt`([drogѱ9`.'}|clhZװb}aem]e8N C򶨈֕Qa0=84=J;`ncE|+005׹4WM?O0MƆ~`8a }' l&Hۺ{Cz8k[_ sKLL ՍFBg]m6[IkA7OÎ&!q(i@^;7 ;Z#\)Z G꭮N>e dnV +XYrU4זދ8sb6|`5rV<,xXcdLk]ա >(-QWw{cwu}Wxcn7}ު7].j?[2$3Dػ mmu9IBǏ85k#Ms_4/#H4K6Hh Ѐ|B019oө+qad}che4++>6 "cko@/1ixclj lmQW01N衍5`/QbAc\Z ʤX8;|psX֞z/|!IDo=hosMlmYz8 CX:p/Eݲ׎xsC=x+}7Ě<3c9hk^GVex1Ï3g"wCyyz%"b !;뱍ew't1G4{V[v$tAT~ccv~vx^#Xc ovݤO16z<[CmY0GݑmM`WוQЕQѕQQ @o*F#sEUDDDVɋ+M{cĀ9E9yHҕQhZŞL9fls;966ll~d'&nt]^4|q4`- z $rWdH4A:] +D큄7;h$XZ0>H#{Yw@kA:/O;>+][Y2$p+r6P> ?QzEni K*ˈYag1I5p  bpO&7v.vȋXf:b/h KM,ޙllUm~Ysk2#CK$|ƸT0A[tUIS<1E1xuPfVw.,4Uid2!?h=䅭p;@s:pi~[M wY;kXWzy,LY Y%`wpǽ@Et'ߵTT`#/ȖhtΓ ?`tM]x^1Ivg t'c~˘4{X,|Z`ȝ褚MB1i$:rH 6CC!A.v,8xlKZwf d{)w\ۺ秚;].>5-s{ͬ8 Y;G,ږP!ǟ+cNx/Ѧ +nDiÐ1оy{&F摶$]qcGl?8ee*]+s7#sY!i #,~9rְ:x |d$n& ]I5vhV;J~lyan؜-s]ϵb| `S*h 5T~γ$qsT:W;4C+: {N ]W8߀]]\ƴ45PDDEx|W=@uLw1dl$S; /{Or2-Mp܍R>>]1=ϕ3(sOM;԰ o8ͽ4Cv4M +BWŸ8:F6G2Vw+MđJh=VDtll/{OrKnSlBV`:eLov% M Wۀtp# Lt@Mz]60͚sC,{67k\kihuע"""""""""""" ԕQ?sǜi&b`?3E\k22^< gm9YvݱG8Apc4Ҷ28;;\\qgVQ\,C?v"i̓&ȩh[#im}EdfŧA&D\,]2e3:6(,w4֞9K [ɟX˄MNo.wxAxVhrY:̓kֹ i4 sX=ŏ0GDos@&'nCwa\MřK3dMqgVu\G 'O՛,:9a,m<<[\ I7w]TpO9GjX8\É1l8Ϗ,rDN~q5ırh>9c~,aksH$Sp5=xU$x,Λv`--ox i,|8}uNhmЈ+g] j5Яq{$,]wkAz)[E$(gs[ #.r&z<+[,/! kgFQO D"=B+fv~?Q <-x`;" clh|Y٭i܁.872y5ӏsSF2˞: g""""""""""""""""""" ӕQ/ cIf,mcn-hy]cx0j|R;+))-협h,͇(SHataD#`-' K$q1|un vKW_^" Y= \oi1ۅx s{@X@{{FpYMĮ}nUGһ^6f9bMiv#ay"V.&Dn"Fߵ  odeb#aOx|nh.U+k 9, ih"tl7~kT3#Dq<={\ם1˘7ӈVNn432"sb~9 3p_@I6i)ɋ#={vvmw['ע>+5v3esBqz-}Ҷ9 rݼ0%/ۻmt&dyZ8LN3728eXk{Kg KۧyZj 1=Ga|Q2h `mH95sEXnb8sH n {윴=a?"fo\CK{GRvW6\\G]bD#4K IiYM[6[޽7c& GGPk^4qN&6 ܝ8 MXY $N N5Ac IWUlJ2dF۴#xWk8tF3 k$ |H$y6}fҾ}gJ{i|[X 7Z_$f0c{^6&I.7NC+W#dn$aҾFި ?Mif.s!wk6A_l4u/#C\X|$,˖wyRI|"sO.!`-ÎVZ$o`|R4|3k%bjùW{ORНo cs$ONχ5w^荰azL2J17.\9૧2>gc6߶ste33`Ɏ6H#,1om_'VDO/y$[+6RXqb`&-D;_%T9X92͍6vA{OSZָ,'8vYb`@ +/tA)UR)k;A\faqp`yڲ+9kdvumkU))))))=| ;kw_o%=nUՕQ֕QוQP6TY!{^#sHphE]DDDDDDDDDDDDDDDDDDDDDD@ЕQ-UysA$Ig5VsZ YTqyaY(^:MO;F,'r tqL`qčD15 +ӳ7/Sa$l Ln/a9Z, 盤L`3^F8y9,p8YKp=ߣ"om|R9PL[ 7t<4*E^6u|S˔Ϗ꽱0[4_-r HѕQx>em;\/Ю{P{߲lv#]]V}sӚ}W<}y| 67MfMC6H{ۥ &ㅳ11(; 745/EKb$ ȳV@=pfCxQϬ}U5 8csJDD^\\O!ְ㝎s4vv}s]UR:)khAr6Vp0y """"f5ruȇj!¹F;H^; a9ޑ\A+Eζ6bݥ[N'xѴ8u}FVFɏmdxA-v?6Z]|ŅaNW<gK>#;̃`i +璺dcE9ڴ:~43Je2 6-6v\چs$ùF;i6H]+a.Np:C ѶG瘇tؙ'w5WWF5<iZL֗rח=F6ҕQ?r=_ ۠Iu*降pap7BŚ&[#C Xy3|d4)sM9xVB"""""""/JkI4 49< %sš7&x %Z-R9UT+_iulx1# +FXc~ +*v>kh&?Lind;YywY 9giHc[͸M<bgi|sˢw5wkl/8_+˝SEXqJ>[K1;8]WP[ߏNjZ‚c$.b>Y[3M > L×+-c䘻HŅCl:-,3cc2i.eBpH|\6uA~\Yr7y%w9Xs ,)4/p}/3a+0ٜFQ7~` ! T:gK#]DCx%q~繣EP>'QUQԕQP?e!fA .W=k՝nΣ f9tIX kib`c\N|*#]h ,pDDDDDDD^^ G_gn0Kd}tVpul؃.'I,X}b/۲|VF,R7+p^=[h'|-b)tk0}lx`9p7`kz4=À*R""*R"""%%*".[7av܏݁u*iuIM.lQCk9[E'9f#;.{Qfε\˩gfdC Y cV-.QRQ֕Q +rdsҲ&>l$ +t紹99:~DYp+pcf{nF'n4ޣ>(1Z^ ^ K!o䷓EgoW8s\&S]zŊL9㻋-nG<-)Nj_wA!B$WUزg~(lx50Ha!%.*"""""""""".[;vjQs=kIucP`rdEshXm~#wVW\,Niǫ̈j吏Z`^/2tѹ~\~)sv$,Y5|/Y`#fh~Wh`p)N2#g] XG׸s潠9:"8-sۼжŮQוQR/E/2 $| pcZ#u#[(5_7r Yep/{縀,(e/;ZMBu+t s09ݑ&L wRk1ԅӅTDDDDDDDDDDEki1 ˍH 5*FFgd[#nI=z^ŲǍ= +.ui]E~;x,hxwJgdٍɘ#Yݒ(tz2,pE|ֵ~4w lm&9].t.qkՏYBv66 +kZ@ + *U,6iq31ܙ_ "qp{͕cA +g4 [$ğ}4s Q#v=̲:WQ+-ЕQ:*""""""""""" ȌHNJs\,M:tICIHw<l7uY|R""""""""""""""""""""""ѕQҕQӕQQ Moh;`̆4m}ۥwZ;aȍ]^:`8ړ l-%#>Ed""! ec.^v1,L1L?9Z$SbVr"2RhGWD^Z[H!6K"""X5p@ ht fLO|.q 4ͳ\1xWsw;2L<|.ka`9Gq$d#e-u7x x--i-@4.kUTυz30j=^y\,8y8'!qs\Cex:j̇jAsǹ9a6-dꍞIsNdkC͠uj25Í8in77sv +}"9z_) Bq-/ PdK"O UAd3q|c\Bge2YQ 7nKK׳h,$҉ ^L`i"ssK6ihpFݻ߇KzFcFFsm8U>Ű+D{Q6qMd,IyK n',]uۉ.dw?ihi6 vmKLb7 18HҖ<}稜('y C6Ӵ/ٮYŀ1ӝF֚ݰX;\:q0sΕ&4Cb{ksKVc%%wތx;qn7@ kaƈ42k85ɠ6}/Unޱ1 K6ZHծ =):vmŘ|8U> ]WPk[xV@~L }A7n,8SZ};L1>7G6bM8c*Ho -M&&4Fg|c4~rVGkË3t́974~eŭ2!x.kd/ctx,-R .Ҳ=O-89`~`aeLgFl4pAڣ"LX#I#{xS$xZӳftOuSy<-YԵOB|01^#ivƝK}paȗ.'D!s@/nʫ$V=fXb˃3n$i-@mus\Fœ@cr:\;}HYճF<8F7 Tγ5I3oK "u"LlH{DzwEAG<ߘ v>8ǃF!zԭ>$I$,H"ǚ_좬:Yԛ ulIw{~5]Z=.n@%AE8,=SUf7kg6gxd^yht2Z.`"|P}<^ݟoʃD׸my,,:GAێؘCCk5ǰ.;gtQ<25ĸ0r'I `3t޸f`:U:#!cqp%ʹT}[ɛ +yHD֗l:^͕hŀ9Oh3?L̾CFG3,gWWOe?]? fwd4ݱΣCJsFws@{75u i5"" ՕQ-ۖMb;  dM%f}sMKq$hŸwMp<֓E|jy[&:2 usyV@m;LtJd–Nq߰@13de7zkwAӪܮw/FG&>\l(S]Jt33q{=p ~,mO7i9af87;iްh Yt8y'!F-%Um\13Gbz,g2H־)a $I|x9?Բ/zۇר$HV>(+a`$VAϚ3Lg:S3a|C.кV4\9S$b8sK@k#x}(Ȳ}y~rZ~ɑp=نG>Fp]elR5e#|'ĂzH+, F\l^dU>,Y, Y[1M$>C2^Ș+cv,q5a ..ʜ( {yxrW%ibl%2] 褐 h>LN 6;1nlmY…qURh.8i9>7O,0 -pe|]֝#eksF2 oužn'Ct?P{ᑬx{AkbkMA9X+301N6-f4=?;MtѰ2SXkZl\-g0]$cݘwy~7\-apN"wv.:Z|WH02a"i d.xx> YrK6,҆F2YK jwSece'1ak\c4O}V"!&N,<\5`)icʃ;Pl` ;턂7WGĭ;#' 5ų\nqȯ p9kK@$phX^֟[3&_|u{WƛDSƜT9xԮ KΏehEvcHHݴPmai~4pOHzlǏ^txtC6\$+^s\x/z.?^6.}8$ +S2ɫ2 \[$pa+]x:l9ו4>8k\A_Ew͋"tRzNK]J8<a7.c.o/ cc>Ym+ƍ,pfȖ6Gs-q|Xd@ӱN6^443kbtv~`EաȏWd.|QG2niXuff:8剥,|. :kCE9$rpq|q1{s:yni5)`㑀[e WBZ7I~m֕Q))6IIIIIIT +%RuJJUTUJJJNA(%*RRRRU%%UEJJUDUM)6DJJJJZ0@=,xt^ppy.sn{[jp -PJJJUDJJZtw~.KǗk$k@5uYvlvGӁ 8#mKKKZ-C??'>\,27CɷHhaCFI|m]tUK U2C6&.% fi(ceyc0hUVTuL}O +C d;sq165૗hYxpgf\&62ת \X>`])iiiiikcn qFWHtt^y i-"-̑i ky[-'1ؐ+v9.,XD#hM۶38%|-FdKZ[ p=4. m)m-[f,O9>,䜬f;xsA섾Vۚݢ;VQЕQcidOpokI:\7RtՓ wdYܐ0Y"C<;5C#܆5iɲ}jɖmZ Ӷ Q=Y:W ˤ'lsHw ߉7,V7^8N%0> X>3]#=s .*DÃ. 7#hX}GY| .1rCEٮ:+88ٙ^.V3r^!>QGqg-\M>I .d{<]_z''ҵIm.H9Zk[ foĉI]ݏn`s=WnsuM@ +Li0"F9S˽a,rJ0q4 nF٤Cxv$$u=v ѕQPZ7 27HC˻裸NM_;n»."9$6ChHs\74p[al&!_w\nϚGgalI&& +1\,\دu!Z@hdL $#P^t|1d%v7<k t+bz-k48ٚ$iRI U@[8#h#]-$nGU72_ -tl65:t/z蓾BC\h9ikean;#![ ʗ-LƶB5xebflQqw{Mݶۺ¼6;7tf?6Y!\ax> 2#ܒ045¬ +3OѲY]l k^MkHh|g̕ظ/Ӏss\ݏqu5@wZ=U;?xFK9{`Ak,BUt(OToZ?1E~G _eDgZ?qDg_Z?)?Ȓ~* gX~_UgX~|1~UYSfҟ/? kbu)YSnT:ƽҰ=7 5MņEqO~ k_t_Oq$b cZ?1?E~ևA//? k^~/*1Uz_Z"O _b~~_O'd'eG iGjߖYSmpS~^F,?Mr}z5WW/OU~E}+$DƳN/"|1uq?Dcs%E_O"5=/_ k/U_5='*|/WYSc_*xvUO~쿮u}nf%^>+O5*x}PY~ƨiO1/Փk$f%{L8ʇXևVTg[/ee?J~\߬YH=7-ދ1 >\YEp<"֕Q&n$}Op p8+hu7>FysimS$Ω3 +iN<4-~I%4-5wVnPs%qBNxxY9:#v5tf87v>>3$ H('48}ei^42WdIntS-Yxt-F>=kxwC H<'^c̃)]esD®`5ݞO^6!h7cd>#k;2| {íG+vs0d2267Hq{ŋKik,7ѵ23u7oջIT9YR02EHZͲp +]%} =&8dcK7> Ur5,Atnw czn{7é!h{j=l&&69䇺c Y ϒW97i'0bA^+ƝAZ,W-vv5јfǐ4D#xEoj{W,cV{KgWf;[x[ G[AU:>K2wkpUhrn-cfGrAk]{ oo=Jn1[rkKPk\eˍhD=͢AC|.  +!7s 1#9VtOJc|~׊w"լUO + +]^h xZo6|1rcsphpqYl`zxyjʽG+=}QvDp99-ۚ\( +heu[ctJ୽ZOZi4=XZ2=$84vYcn#՞hu\Hr+IM~ebX[h64pa9qరB -3A 3oH؎ͮv{&8davK!% K+dN#%y71šwcH2ek~0$<!̕Ā}n-Y~.KhZ{kh-?}zq^-VKhl,cf ˮsF6쟘rݎ1twBOsfx!v94.|WLSڿfGb:; +"N?VFi1`}>l-Zѽ=U!ʛ2HCdזmtom9XV<A+k-- +hQix{ָiB.HM.;<[]&|H͒[БtzXwGE+s}V^#ZS78iX϶CkK^d-dI.V~,NɄ~Sh<*6+ʒ!û*'&3d/3k7<*|-#p"JZww@/&LrZ1c\Xl'hUlYco \j8#$ !/tl`41:@w ^HrtyxgKnK) @UrFb>^%~[1C*m;YZd>`|mqWdZ]>luٟ {&7X;|}կֲe "A0'iY9:v 27 Lׂhs*ռVykP }djὌts9lPX$ OiYX9s*-{ֱk͕Cd4|Z@iݭ;-n4q9fa5%zx}fd/3 q89ہ cq_N@=N[߷(mmot@}7[Q6YK6h>u#/;r,yb\6<>`INA@y+_h,lwm2f.v.6oܻ6xt mTCo/z\Yt]$z*0Lhu>&7>Iq@.IV~{uS&qYFIaislVMeHm{6$xk_eEKv, |ڷNdntQ.41ĒzXJnxcOv=uh4p)ae꺋0aqcۜMdcAXWJEn^:BX6Zy[ϸٶI~mЕQiua뻆[{`@Agik4֖I\ }RWUq4]n\K$[@ꝛ֢lFW[H6 #q|?V.kâfGcaqvdg3Nqte $|6[ZYgvL[]ݗC}_{1p&vHg7iW$ XگduL] w V4ڲ3t mKn3Խ%݇nW~A9'J kZ>+ON1eɈ=۝wwI1+hSڿ^GڷڰsȿmRi:vDz,|y #:@;˧nKlvm_EiZjy%hqCpz?Um+SkPG6+IvC04wL~Ұ5Y}V;2\yZ .aer$l{\Ʒk;Iqxm]:7É(ln{C|"{Vь4lI+YҎlc n,XX:6NVTy&p֚^ך;hfF|3#^iiqE{ԴNd,.$S?U[&1iolV.F tg7GZ6+ЫѲ#ˇ NasEÞԴH|-qH# +J ۻ^wm(x4s>G DnVUqtǦ˧K(s\DZk \$\A6W'353FA,r69Uɓ#i7cl.hDQ^dў~DGGA|*;J~|YΝKdl$`}lV ȏ1Q74 Ko1Df"II{v7V'H6+ldSE,ϒO|Zd ې m>6굱vc"<q_3|,d4pl'OPlL 15㯷8y2C45ǀ<#tq2&h֑i +|C+7[#s$١<xEK[e(r9:&Ta 3qnʹfdbb;zk_/2hG;|-%X¼4pfo}FF8VG Pu\fJ`cv9/X9y-2(|2<E-"A'rM:m52ICN[EˏKǃ' %g[5Urp=4O I}*}2mJhZY طq>th^!2(R컣› +i$Δ9]t2m>\(@fuWf}V *}8I$봂,_4~켒`Džkn{߸?wOUeXG$$8wpKBƶGn!p+j˙ npA,} Nұ,{c`k XZGDI|yN{X#\>+"Duޱ-69#9ilVVHb*(%uAmS+^\>TQkM3zdk .4xOUbikfdAE xְu'dG)cs=/oNȷ]opm^vHp {}՗6|񈉡&YµyɎQmyU״[ 91Ӆ%˅i5ұȂR={Nc2.q+ $_U>DXtkE8|`Nʑǐ|PmۀdgjxcZ[\к&XDQ3`aDYLDC~pӻF7~Wvk1~TBP@,/5Bp+ē2h\@yV>irFܸxelN&Vչ5J!?ѣucgy4,{^;IY=f@VX^\VipXQ̮p󫛁Rך+ЯMuz}6Zk6nPW^A7^TKw w> z%s<ݵ{H@G#\;@<mqx=ʒI%y-yC2%LYsZ@F,z>6Ӳ|;Mi>ц^M k8pxwZtҟ3G{6&L;o0SG+߱|5v)g=evSִ1X0F%uvg줰f;tӤ=y 4/ƅ {?~r˂_luQFEqv]Hf ]ٚWSZ׻v/)cE~dq;;.cԚshOzN͕h4vxtGxG=>vGj4Or;C\z=ԴuLI1f`,28wP/]ͫiqÝDmΨ\auMU:Bف2]7F*|%7{w[ hV~Zmkֱ!;k斵OSzWH]wsl]Z5xawn۴Zˍ4 +Oak1@d=qMM;H{_'z#})M +ˁ-aۚ\rz^qÍ(t5]7/+Sf3SDN=ovO-f3dsMx &On-.жCc3"c5z$Q,,n2L܌RǎK p:Q>&o6o<41Fk"V\8w<5eǠĪfG04P^B&1>O 5  XZ7Kmh-c5lqx7˫EG8WVw>UǏ<*+c4:AN+U5lG o.ik_\w*ױח945oEtm'5Zn׆GA;]D$: ¼ Wi; isCԍZ&e8cZ| s^(5H;s,/ҷMv沘?!{[8<ğ3ej#fֱq?w7S,Dd[4Hcq><B}'}[ l\y{2c塻/uUӪ0{EOcw\Z2adRH=bW잣6Ï.Y&I!^4nVeݍ,'&)\X؞׾Bе̦aix8xy];Ǣ +++DȆ,ܬYgvN| e]|R|V,u(ǰ1G$]`K5 l<$18q]{f̍KTӥ{0I'U[$-.(5n;}Qmw#\h4,Mg\ÌɰdFߎs[ŐK '_%&tۺK hz*i 즇`>G,c.$`_ K%@D=+#i'`vfQ98$cOUůM }Cdc?3{e{UTG=ܽ7Wʈ f91_6yG\-;W^ދ 햃&^lWQ|\8rxvx"LF`8wX즌{>I{Nh qgVۙbNeL  -ۿUEj{?.[K S>pɃ! s[Dů4WЬ~JLIE;M/>lCN@BgQ=ӈ 1@?OQZ1cd!gcE5&>ekNKƨv|oV5H0$.3JHiXc"4K/^ayګ$^>38<|fMdlG&X=j W+}zN$w}XvUmq \OL@m[HlE7 2>74 +]W8ύt%yivК>³\[n~&.BL ~ݨ6BzF iHޞ|+a|IDxXZ<>\{i}YcJr `|RFƆͅE/b׬*| biީoN +ӿǿ/;L[7֚ zŋo|ÏC mǍPÅG{}LO,^) s1 s[|򳆷^1,9v9w[`G\~gHisY@G +ڧ| y'*`Y 3"NWJ73JkR۟Q6~0cm㥐7Q~Wx6WMm9J4ˇKN41w̼?M{ ŠC}W0`̍q?}B)T +@P*R|UZPBO glEk^2r.[x׵z->.wNHZÀH$Qev c^NֵQmm;ifej#[Q)7ncCv|`(B+=l=f;n,fۢӝKzA@ kYvF6伈4@_jq+i#o*>=?Sy -y_ÙFL:tQ9^I@44,_uXcY{wX#bۢ R T* @UT^Biy%Tr4,&PUURUO*U-U +*R UQRBmQTpКNW]*!Bt+ݠ:)j)x $^VU%yS:%P +T ҢZ QjikT*xT^ofGķh֕Q6,%pڈ[̀ u|5~-_ʞA.FT87kEjϊuiv$k>J􈌆=yGw[wuiS|3X1f +k܁xyZ6I{.⽠8'R6c`h헴ݴIjɛ٣+5H!eiQjm)Һ31]o&&M+[?&Xq1Yc{hvgܸ^jCچ;-k "hq 4t}r;B1JQ5A,:?]c=gn?aum&8?L=MqkkI4]M]VdXaGVY|m4pm{kCkKi"{s;7Clȑ7[C"]srd3|"?-KztjyUayUBz*UWNx4x*,몠P**' +(_()PVTr/V7&TWTܪUPETNIhHT:"BQyO[TETJTDUT!)Q)Vgf_#[DוQ&6d&(eX.,=R"}Ve`fdb84#8KkcO  5D>kGaE%3k_4`'F4"q˾Xdz*꽏Vσ9kL Dͭto+$w2lw2PDvG +ټMY̨k`7i.$Mh9'/0:$k /e*v'X!Ǧ[mWtV vcPFz-(ef| c!:G +.s\fC\Ζth>smDmǘD>}D0e;C]g |Gcfѳġ4VafTZ *.ESquTw yUmR{tTU +BiP輪nLBX׸4Z Ʈ,huLl Veҍ}j5go}ܓ_iǒx"J(E!4QT*6ԫS,-sΡ1tۙ fQ ղ)`s3+eŮvWOmIihͪTKMUB@PPDBP!ER---Qgg>?#[DѕQPQƽڝ; D n?L6[u>f> doP-݊ҝ䞏΍>Z2kƕ9Wx-m6tu}m2)>A>@t]>c'Scwy$ѝƏPk7ɱ%l!Ǻ{ -s۷ߟ>մhR冂;l>)8F>!m:߇-1cF$=Yk}R I>J vc7bzkj{IGg t<8ğ%^g\v[sKi#ȮOձi2:WHmcK$eVcDX8:vo'HmKK#ʄ4C.PHHؘ^A|J\g5p uאj o>kyqy-3n[͂G]m3Ls.4.5\P+jXXX.~O&75wq=@+{Ɨ8O@RϜVv?(w2=۞_TI7eTXֲBտ;^z**JU +RiRBJiTi:***Z\.{_nFVNǑ)8[V/'xH- 5aWr!sd鸗A[/n]EZ( lPT$4Y4umT8Aȋ)M$L绠y~`rU卙0X$sIn^?( z׽WQl ~^WGɽҪ/]cM*FV n柘hώ9e>ރjj]d{@T,٭xa ܻ յ`Ɔi+!Ӹc678'ԏa\zmtqunW\J*RtU TNvJPR"*Z%"U+3W [DӕQPB-i6E%ZR%%%%Sh^&kժyWU[TT*QQ)UQQ:*""RՉ`a<>LQU>Viz{K4צPx3v5AW\ˀ8l?y髕SE KNmo7~x#~ 8yy<c4:|eiĹ丕+TȊ|xH.kE n1]j#6B\[{mV<,~ S>79n@>d mc.4MCW-S$&3cI^|e`>AÀ]1?EuF 04zK5p{i]@>irOG[Ae&^|6͔=+ǟBOvS꾷q#y]`xXw7cu]f'ŭI.h0:{VMUjÿؚ^O@$/SDr2"kox&n%:QGe2O\lX ;\KKuK@oϢ(U-UQ +NQ8@/(J)Qf{߷żD@ԕQbjZW-n>אBZ(EN*8Pm-SQyUT"Q:*jꩳbdc9{w=k!}O V&Ick,,`ΏW@)SW1&+;Tp=}]96JV^bbFC_G؇x뮞 u33sO)j{>_MmI _;haXԦȅunE:#ֹ<&p'f|X,t_$]-YV]|s,l-KLHI<`lL lΪQ+/"&V9Lx Uu&-+%dEXsXQ`vE*ж}/+9t7#O/vsWV3ӠtkG<yRO-vRcD:7~eUy@KW'V^sݷ쾵t0,X퉌tmk .o*ɰ8Ze@Ed37m4Kn-oUis.p{7 P ƅ<*QRU-UTUJUEUBj{=ocj" ՕQbjZjo}y JT-CjP! TC*!6V(HP%RLkۺZM΋Uߑ-l,< +Q[:\lɃ,o|x<OV=F *J1S#{VxJKRkހ Gęk\I:hZ̥!I>!#쫋Wk' '-K|^دJ7*qeTRC +Wv+L/wIeqQ7)e9"8ޟG{VvJw +OV2;zg8{u/}&e(Mst(8]^0gG;xۺy':^ 6;ԟ21Fց@@,y4MC^P?yeJZJTUDBUQRQPBBR,}sսD@֕QbjZMjmU:/UUTP! +! %"KU" aы22W9>$xV +U4R U8JO[TUT=RO'"PoUHh+UPU!x7kDUKR@U8TuT +xUP7R ˮ:ګG +R G6$䅧yOݑ6$|iM6$|QMқORr*l>G!a?q6"O|V^oȈԕQx&FmsH#Q粸V?Dy?wr'R~}!\Q!KboO ?_~:boO ;e17iboO7e17n7MG>4ϰy>44sDp?P *iuwwP2&vMfo^ts7O}yfoTnjfu_8_foT |17ic7>e3?^>D't +D +Az_J>7gQRQW"qm1L{{>?Pl_fi͠º~IF!z~Inx>0[ӽ{bГOׯ)?Gcp<Uy>*i885g?}$"P>Aؽp7atכqp> { P9A-at_W?}; ngv#Lr\׭tݶ[o&~'lzHׯ ?o~2І7鉿S?OߎyKboO;e17~2?L LO'ue݆\Ig'Tt{gt+@zA'>d1?mNl5~MfO3%3?f7KO7KO/J?<~RuCح'~7n>I! 3>m }ߦgtҾo3:}?bOM'?LO@G/1?}h?yltDkۋ[H9y%lՕQUUU)QQUQQUQU))))UQUQU֕QQƅ~eI.&>A'hYwhu,1[9ΊVIp# +"-SWHc1$+c@EG֛#kbѽ7kZqV>i1|m#hۺI.{ZnVVG,!G$[7Fp%= Yijl&0 i}ֿ^t'!qnƱ xĬ16atnahjQf$,cKZ7 .!^ +&6JϊÂ,+`nhkgdqq9mqBW+~Q %V|=K?')'yk7^H-oĂ"ZZnN$zzlTVrYX9M4YrWf[>շ}SWHlo-|C\ 4Ei Fd`2 Id 0#υIk lkUXsqceA [Nn@畘kO#ct =9\ôUKX:cic|ǒ0s9,pXAVߨ4d.qa{|x|>oh10%1Hև?ksE0O$p-d˨2YN$c^i +ޡ:.sZ֏8Z=X.$^[_%yYba4Y!x/p5 . ٓdsCGBUTUDXZ"t, E睭!k5xdGh/VbvUdڪ"""" וQu<Ռ8wT\op;|3Y;cl<X뚆nN+1{ p_ YYrZt܈40P f $ډtܭG 3 : ^ǪSh'XlN@ouso&ƾʓ[B͊WDٳqfֻkdr[DЮ7EZ'Κ]\rŭj $>}i6Qhkϴ+ٸxX8װz[m s;3?H1 2ed Lfm'<9sr,Y)G) h`A0VsRn&$qϨaxd3 "ex%nLe4w|[Ҵvf??#$x`z\ݕc|Kr481|C [NBfbm>#tim$a^2\AH$xǞL ${Y#XP6NEk3?^ӣȑk󙋍6PsA;]dhDB-d{`tomz0>39uҝ,{2.27D\5d_gWŗ'l=Dwٸ cϕsRqk`6f-XD4߁kWtged7E,G\C\KŒO +fúlH~38 ւtH㒷Z6T&:MGQ{e&5㶑ɯg*zچqteҵ-z^E7Pl n&[{]^fΫX&{'{^c~u.Lƙn{ Z|\f-/kb\X =8^4,%};鬎*m$}tkTl|I 267k,,zF$Dr+^c\0kCC xu+>v>g`f,wB0 Hugh-˟>ckc! &;h_nㅿconW'j3#ĚI#ck#$46MxHN%fN^OfN58ZQٚ捧Je4NX%iidv9ңiy A=j8rƟ+RYLwX9kKFií7q/vݵF<PF䔿v;:FfiN&ceig{]֖n踿nBU>̇`G{ꭏ9'hybG.DF) + 4@Tj&ˁqN ߘ {+-'geYzpFx#–V,oa99ۈEb͚,B llog4<$+q 2>lx5_E"֙đ%ilM80Fffqۛ%=9Yp*&>Kdߑ0}Q# VZqp2GCYo!w^|ҽcHHZC~bZ;;NFa/lo]gZM7XsdۈvYncwu~bI9$ba$b4$ sM6& pj8jxK{%uu*ǵa <أ2q˜qpZ]$R%{q^/ϐ fCsL""2ֹF9"Wu&=o\Y懁z " ,3M>DR$L?GkӜ rKD]?uwMheO dP8Eqs):prb,R7rE ‹$en_ 6@I= ʆQF 6;nyb*ns> 2pc5vֲV]Fqj^>6<.@ ǽ2YvnI4A/S!- $4P{'P?H8&u!-_ȚvdcdnmsLH;7}5oG\\'=,<=>|}.a$i=HKE +{F 3W<{ՍsF^y74Zx>އWh8="= +:ʽ[V.4I܉߾F!(AD.{Ƚ +esdC>@_f$yc%ǹt;\Ɲ9Ļ -:&&6+Eޖ8mZY&F8EXp8,DDDDѕQ6U0MrzHEYtY& GBGBG"Q&>+0׺@f$6h YtElŀh} +]]s]jפDDTsCEy q&4P,3^<S4칲4&'6W_G ;R|bMS ] ጯ#Vv$Ȍ=:"I^Z\?:\9,ZF|3# urK# +"\hnsh{MfSQx21vMϺ7bbæG4.X.lϳKM>SܬvFᇆɐ 73ݣy=]dq͎YvևZ^KtM{Urt܌ӑmDmtΌ|o"?QnFG6LLszh#ǐJvw/l L9/%I3+sE^feix ɍ,^LϹ8lptV,>FDݲ'TM*33 q[H8x~וQjO5ō`'w[{9 :q{ q#9K60= 6_D缵F$sI.w {~2|= >3Մ7yu(l. UjߦS㱒cXXcTC]m7|:s1 2If~SMis06~+A5ɵk?p,'J|q/|l#OB#̎&&;%Pݠ‡U͝4S@~B]eCp5oĴ0h<,<!!2%cGZZP䝮+kQ¶45L4Yasy+O \M{NചvѦخ'(ZA +ԺFm1qp/1bO7Pe?$gK{/sxisk\:c5ܩ30 WM_uu~k=1A> + VfN-;I\6%#`ӸY/^&`9񖈳&ty09cM4o>>>FcDc11^[NEqVaQgx f`#qmsd'RI~#E$4q5Wu r1fl>Hd-sj~ fЕQZƏ-9[ipo9ō;b޴" Q9]n ۇthn$lOsC\G~u*RJZ64sѼ[\#ץu^ր `c@s~qR8 +`?21#塻$}9]|UD\Glu<\M=@W A /HѕQ:MSMn#LJ5 斖+! onQ7XHFC"#2:J^qWҕQӕQԕQ3 ,|iZnw9jp6Q {[ǎ'Z12~&C-CD/c{bvO76- c$|;AǍEcc;fkI.q{=cSY2r$ ;VEkq1\\4Pqc-'̋(0F֞K@ǎWt|X;=Ĺ$Q$8dp}\דYޛ}n8ܶ#a, ikIlanݻe>=L0Ӄ <,s\,q}u-"-;ݨ0k]^[O+Ln>N2{XÎƐ 8)|OBDrh14C uЭaɱ(tD{GDDEnvp Ӌw| Xz&;lg=JN~E;2ņ-#ɣ+5k@&uHԹ-ChX~\uYʒXpo]Q tz}X˓ |EMn ֏6n拦kx/ˈ=18\cpBu^,qg 5\!g\*"+rA1#/ Nuzk`?SjhaLq;4yz^&k;k5`^+Lw8̐4χY#pᏮ[nmլдL!lYe-g|H;Dzu潳É$8 I h7 Wf?v2dk 5Ǡk',>c͙`N׈XFl4%n?kv*8d%޻4sfյI01k]Z3s+˥0ō<1kˈ<5X.V5q4&-t5/'coa;Ge9d,R#{DDDDDDDDDD@ԕQh_9zwwx>S_GaeO#Ia +]V33ag'aC&㴸p l #aS&]邏 +. 2EG-53Xzҷ-/QE:̹=~i[} ^w;6xXȖLݱ2I8Xvșt.~V46< 1yaq :ۏ$`\9 R?H`kPւ\@kui*x`;. ei1`O'H&CmcGZ,,gO85Ph C5g}O\΋9ѓ긵,s\4Z4AVul]㳼[ǟ HfF |;ͭkIV;;.TF呍%Bd1m/-&'w o\E8 zJak\CZ}_qszƃq_+u&d*(n%ݱ竩19Xq#l'"I {q*9N$,Yozwo~#ضkx.9mqh%:౻N?"@3:W:Ǒ;hswP>@cT$FljŤ|sc[>&f5VOf?L.s8Bu xe3XzwqMO_%uAמp- .!m12ΌIni- Eрn^Ǚ2Uiő4 <c<꿥u gf=ձyp1};gֱU24K0eŲWX3lOY7f,}4{ZI^w{CPm]-_K,'/g_m8N&-biltxK  +SddƽS\Ɵ?X5='N4nuqRdrcc|<*kV'=K^/Kkn\y fմ_ dDdwwV8+[x"ŌG Z7ր=-nZ5MBXRu ipp# {DDDDDDDDDDՕQkqqn#><`v7a>6W=k>ծ$7 tcqy3A @'ǩmHc}%`w4xSWf䜑å{GvDECAZ{Ma E[FƎ{|Oj;3湱ZA9\Ϧ:LӖq]b5u=4|Ι =9A44 +5Gw<._YXF60pkIݮ/sqğ+Zu3FnDNi MhۋXY~ +>6@,I6KҚ@q~F3 WsCw6 iΟ i&\[Qx?)O&{Sv0xn\Yl'٧hIX/k3 llh;ZMI{ʾ֕Q`kRDi;^l><5dIq9{ck7lx=h5)k!{Ok{K9C\WG5Kr> C -Jּ[~W%vhוQЕQѕQ?uGn:W<5д`dLaGF.slP-"""""""""""""""""""""""""""""""""""""""""""""" ԕQՕQ֕QQUוQ_p>廆EsYY?pO/H}(HEDmXagz$CkiƼtUg6GAN#۲^uǚбcd4E&{D7}vzG!t+K`4$ᆨy +Vz""""Z e#:9^-JqaIo@׈y]Fo;.GDDDDDDDDDDDDDDDDDDЕQQĴ4 byr t,sy#[?3ٿE,\9N[[d'IhZ$yp斒,DEY[ K@Y$XZ'ͭs\Nj;\\uL79ɷihq4ߴ UEldʑ{cnjNk4ַXYFùDezg#VQ49xqpB:1us^hr@CTDXRț(=[\@#JDZ|shp슿hYXw{,?9t.@KA`4, Uhp <7~m[h?>"C &=9@ `ЂFZXp ,z\faY{X$: >K Cȓ ew.ۛ;[~ P̘{k\Koլ3qA|7w_];PdžV2$n-s1sHa MWP;1wF\9<s1t)F28}q${ҕQ,.?:8y2vA,V_A]"?3+AHpILF]zK*Ip4ݬ5F#a"M/Z6aC۹w *Ί.]@yߺb[Pހk%wtmql}YVfvڏ~oY,M[7D[u9Ɖ|󕐱uO?0J\hD4aґcpc$xBA6Dѹ%plM{xp7 +99mk8p u04Yn`llqe8P*7Is5xtlafѻ_n] +^49&Y{yZVnr1$iC+n19|Upˏ+sA#&bQϟ_.z-`ъ (cR㸷qs%F]+3$ȯS wbwbĸ,S8znlmc1"YDn54Y>埙ǖ6toh䴀Y. 8, &uց_Oǂ.00- I$zD1y8G$'n kOPփDDDDDDDDDDDDDD@ԕQP.&98ǽ<}uO=Uח +N]|ˤ'- l `dl֎]DDDDDDDDX8F֥XDr2g*ޫ }gufnhLse , I4tUDDDE=2<9cYEOm?]J#*Ȝ=BnF<kKs#qՕQ>ljǏ$3d%5Ii6o@x8zNFpNK2oXZ\GCGnf#p\ͱ|׽tYRMdS\?[kÏ/S.h~A,_XdH[`1lcK>(qsYk<˝eK9: ޸«:GM o{vi-D#WQj;IK Ȋ6Y'حzdA,{asC]4#vm,9NDx$}U׶j囻yXr>uҴPTDDDZO/*,X s*Rִ>'gO]&$K#Gw;1clQhtx+=퐴48\p8 =Jtl=EG]}ֆ +וQ#aGˉ>u v:6g +o\σQǑ6o%Hh$,Xǥbd29%uP4h <o7*a8'2je/-;cY ,hc[߻uV+,./b{%qխ7$b;Hcy.hu~dLJ4ti=l}֢12>V  ,/ +΅&y,sZ"vq<[ ysw,lARCa깯l.`~L{IU>&f,B@ws]ױ61ٗw|q}ήv3%6DvO.߰ohyxq@֯A>sɚG,`|WL?c l]~wi12\Nj.u#؏lFp=^ӢtˀL4>+9rԡ`s'P˻ vְ=v̯dd??: {a}/hkMH d^EGYX9M͂)d WӕQE~.undx{6א6{4;" `бKη(]I߃` kO kcao2 #s-C||@-g ǧHfݕPQ'Oɍї9{9s3GsH yY+M/YNh XhZ pc';)AFB`مk/&,H, cZK.wZ~ֺ(9F{Mx]׀຅v;l_3I,>1;D6HqL.2]4ɔ25\IΆG?=Qluׅ0ܷtK}5ӏF-HxЭN6FM!ם`=Apx^W^n>̍7"6+ V?R0H9F#Xh]+|YچK11CMdOqJ}?7sqyag"""""""""""" ԕQ#ls,8}ǂ: އi֐z.$zu<y18HkdX+5$߽Z1Ϝ6M>l,ӵܝeh$;,wsI#->?oF&۽Nc؜Coln8m6d݆k{;4\}+v15y1P ׳yZLL9 sF[XF!|n1F#Ox8zm +z^dis\A{V;-:8msEt֮Ȋgl@6Y}߃xxׇ+p" ڣh$\TejTĖ,=GuKCYo$̊ce s I#^x;WD XV{q7s?je;7?}da$2N~!61'F:)s+X+1kf6\]q н.{4I;~i1#.5$ԟ32l w:lHui,'h h5Yziϊ8e L o5׏bUDDDDDDDDDDDDD@ՕQc-s -6:t=sFkueM 3Fn6\]C HDB.&~#ЙVZI==%6z ]9{WoFFF曢[tDDDDDDEnf1jq2f<]#v@{F'-CB.x}җ9}r! ݁ϝ]σ+fh5oוQ)UPzЕQ.Q /sֱ\ݣg9`{r\.(Ys_қ ++a$|SG $oa!< -ѕQxk^XH 8Q#,B[#"at-Bh5 +hoV>nsXZC湿iE9d+tɁ :鲅4yf&{/t~:ԬDDDDDDDDDDDDDDDDDDDDDDDDDDDDDҕQ֒~ŠSq0֟KsDR@ek֚kE.xVH릴@.syCc\a|21ۚN>eX4biĚN>DZv,"f;\9} ?鬏X9)3!qJ }l-rcl9ven5&ĂUmecfǖvCZ]^p¼W=g`N6#\Z׵kע8B//x4$`XRnfj{0A] >dR2"͗|ĵZnppp$]{+ӕQꙀӦ<1'2iH?8$yYh5UL^=ß#5O5YLFX-}`  `z9Nl^!.-͓`R+$ke!V/ZwcVt@w&m.]cê]b^~>C%dm&{E+C[ $x؃kE|3!G'\<=ǡY/Lz< G4AV;;5RE'8ҬYʏ/x=%8mF8z`Lf3wF0_sm[]`aP5uDݫzoh02!z\.{ ˈU=@nT4_F +fۉl/ws}:6x}گhNe˖^ccĒ?]TvgȆV\o {zq rQԕQ+m4!ݶy~.Gi[خA4kgkdhd vfk]XqifdffddӉ"y..ʖ(9L?@})vˆqZr1؁ {,cysx8Ǵ\%ׇC!c7|N:Wiړ3z?t91=@ypxW[Ync1L{yqpmp8ݸ_=NYFӽfu^00L,h,n?),>vwML9ݾb yGr=fË{ݥ&ΑY+;Բח_+ܲqf,m1MhE4}b;Gy c 5mz76gyhmtۺVy>j""""""""""""""""""""""" ֕Qcg7QH5nXWֳOX7d"9f/4 ϊeeŇZڳD㠲bkŢ C5isZ@%pYdNssIpBBɃ$rjԂZ 諣f?Qxǐ.p~ 5וQbjزa/ |9pذY|BX!qY鷧<^My4su >l{8JJAc~o^g(qLe1 pI[4DDDDDDDDDDDDDDDDDDDDDDDDDDDD@ЕQy:y+Lǐ6VMysʾѕQc248[W?c'#Mk8O;Cf{E xnK0wX{Ϲgx5OXxkm6mW Ce98[L,nc G6TDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@ҕQ0@ c ƚc{f=l=!6Bngʚ q^:(lll`pJ؆44yExV@H%bX٭{~+ #ڽ:!,`u$Uz0+f!1>ZLK N=hc e@7n V+tAcj8d}C hYՕ """"""""""""""""""""""""" ӕQ{\Ct B,ye9_=KxQf;1ctkEDM$}6H#dx ?SԚ]hoRQ;[Ѱ.C#oںȗ >p6z +i+rŧ?#"dkd !mr_, kq%1f3\ĽҀ~HW[{8}_ +F&" J#d'uc7vzDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDЕQѕQҕQR-QѮD&q̓F#{e75/m˲Zk/.,(4 %bkz^+c`~mnK~0mUs2<'d ;UKZ5ls&Ņ=y{/vZ/ӅTG ڮS2䇂Hvӻ*Z%mK4i乥(NM|Η6|laacdzF EjG78噢L՛(,1 XÞ#VrZZ% w6m7 +|:(גCAqMX 9$Z}6ZS֋"YEW5ohuYC F$ʂ[H^87Dl-7bnV(ʁxt[ߊ]ŁB};FdFG8&p/UEg ?d`Csk_񟪜I"Ɖ5k745q] >X 8Ӄ\@~\yR?k0x{ծو٢ fAI^|(һ,GKմs̑1s渂jt8/ױfk&ֳg"Ѻ];v\ױh1صA aI|Ē ̕fD绽̆#˅lЪ-&ęRB~,TsouX051 KI$v-ol7i@ EͨX,ǙieTW%Uĉ桚̷n18-I&k=G8l: +IH})`qط[Z]S"Gß&ydL`cpTN$խ,sicZ7G>Ds2 vss\ӸONxk0$fL9s[x]sWSXd&o:2lV9-n,Drwϊ&OFCHqbsp_#+ZDs]x]4Hsd=xoRX|&C}|{U:- d 2r2< Nqv++ jYXq{Z<&WK,+z> 2pϚIl4>;ig vCIlNqn붒}am(*i303Hb>vAtf0I VTR躎d2$ɀK!|MWx1Mfs1{\~@Qz"\3!lџ[sX_$ω[|8p1I [}.gX~N,SO DK2@a/ahkak:FN>\sA3~(.&xW8gn.&fKI UWNțUs9]8&5p$WYC:9t{'c=h9*aSO$[+A.5ċ VZ|kxp-ř#׹k9dhcn#}ӛDzy$,jSf&%6X|gZM D-f,kkM@L,y--jre`ɍ69 ^qi{Aaϋ-;",lwM k^< +< )btkX/w̶x?pq2bp;G|!9Ksȡ-cqq1|&ntmJ}MŷMc|%絓>۫f=.|qH>-5kc9ݟӆ.6|sko$i|+ _gg&|/l2?'aG.(cR2 v/'Cc\4oGC61Kl\Y>^ +xgDfhs)= +xyŔ={ÞL + ^qegqKsuMi|;r19j]|V + t\fɕ$fǒM-'m 4)b-`idn呖t+Î\_ynW700#hcf:7=X67xYhh6Dnr54+IG{^#LN1]xyxRvkI1OZ;8,y~ofq{r^e|ݽҼ+o W>6d19=sm'|գ3HdeK ;WOYohwz8I^+'IO2b]!̅v\zM7dI,]qnMsҺ-XPhd;#u +kFw#yx𜱛oCvvoMӯ+.;f`a-+\=.!GSAŕ}1mwPx;C  (r='`{ݷ|mqY6 Xi$|GFoy`-{ϵ\ux8q5a#Ȗkرr;;x2ў@jd%di,ke{\Z: y2H^P*Xn,XD4JD7wr>9!V݇oum'Vdht+De|'/p7}jZipjk&x{=NmyXvs)G<^٢Y/O1tK!%t{m׸hTС{#d|mxzׂZ .}'uy,;2Hd6м2zUY̘N /]</1U1 sFD-}=ZlI68 hI!8Iq{qH౲'q=ltMm-㠻YYz$9oldr_<<;?#NT gpy.M'V  |2 !9kKO;hp\V:83`YeϪ|=z AvѱN&G<+/l[ΕW:Bo8uwU/P`,,iۻ UfV,XaydMtugll蛸燀 sx]H 8Wtu`#ZZ#v<#BEbIhr>G'I<+;蝼Y;lEBx"Ɠ$4ybdhPM,E$w9p=Z.4xbods]>'<8.K\eykM[FB׌=tfMG:&xz'!.,ȍsvS8R<̜5s9œ&C6dywt'>j:.?xrKq +NK#` ١nbkoLt[M$U}Oʮgpk\M}y,9nUUe(]tݱ7m{mM^HJnG: ->nF֋&UDDDEk+<ȟ DZsy8\̟@ފ[~ @>ѻ)v~GɅv籬wXo#ϙ[tDDՕQ*"""""""""""""""""""*UR""""""""""""""" ֕QוQЕQ +endstream endobj 146 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 49/Tabs/S/Type/Page>> endobj 147 0 obj <>stream +HWۊ9z])h.306,03*B6Le(.'Nxx>{O|!vxw2AI^'-nVmϯ_R^O:QOK#pT +N3so|*[, ps;B=iC}OͰ~xM79Oa0hI13Fhmj +#g 8T/$)Hf  F[M{،15&fM{ow~׫kBr'ޗ^zL*:GɧOkt hMCȣ+w,{T1 YېMF|_C%O@:_6:ʚu )59h%w''Dۧ6Lg$S`Vm-+ߒ0 :`oxD )*HK)$La#4*3kln%| Gр L.1H>>1lhi1 ?Jjfe`Y%3 ,їH򺌩{7}貃 k\,)LY0V]+W 앃@)Nӫ[ k<_iNEYվ ߛ0T8Q%aGȒK1h`HJQkC +lq]6y)@N,2DрJ%jAYR2inY6;0>!p{zxkX+cTW xahI7Su2}_kiJ@4J;13dPU8{~<|H3Wy;9v$^< +f2ב*̗~PwCH"o 2HùqR*e8ͨ6Ǻ&YX{i);zs'0Kscluj9D[wN/_6 R#T.ƇTDB#jQ}jWP2p MQSdWrT4M#N=rEZ9cR=˯'"6;}=+{"I;7_oo)#"jn{yktCJ)[kJeen4_f s,{2>JFJ h]R9h#izšV [[+ Gh( 6y-6{9ZK6p]iYvU|0)-|A*Mk RD 2pAJ̍TKŸ!0&7W)+HXәҤO߇/QKQz4΢KT*7 V'2F Jh6mfN5^㲺hº]f!HM2j]%VQΆWbT[Da<`)㩩H_ɇL8Tin:0[QU@U"HzE)I^{2D.hT} R۸ +R.~^0Oϫ&r(^`[]5&L<?Z^m>po7pJ hٞ+ +POalFhq!+OsvM0,nU":gH u2y{4a8,HInՕ8QZۛF*O u8VqXǕ"ڒO`peked^h'5eH +t(6fD!Ӌq[@}E׆,Q\!Z{٦;S#yn_ʵlpsMC.qRPO [(B>g^k1D[h gդv;ӄ}yRdc OW:"H}R~D&O[Y:ҫs^;QBVX&*Q.$!GRRlwWeĬL\ѥgoޔDReHWTbF7ol ?#m)} ˀsf|slahU;|P=Oa=<:gD7DBcg8N(vV^|q]LjHA+]^`6-E)x+ +ͽO/ +84Q^G +Nd?gQwœ[<մ8h^z ]Mֺ|6ͦ,D[bdسżLgf6>-JA64NO:b7Ҹ0EMr[śd5N Fh +Q9LY-*~ x"d FjD ;bmxpwUX<]W!pDGSKz`Ln"c '1/R턲ٓμQosJ*gi)N.8HA4K> |ݖA+#7Hm֮tmXp*2:57LցM h{/Zpɦ,AH7sS֙rFw ]_ů~ÈvFG<=q(\6~~$L#NӠ6d7,ۉjfbU9]$#U +q+B>:=ߍ +4m2`ajd, F̊gV0캻HYZɱs9G q0#Un+Ć,Vf'Nӵ$a5Aߘ[;\ϖBQ't"ӝn&v4f0@TMgpG{K[N'OqI+ȥ-#kҢd3(.+ _5<[]i~ôwp~|n7uJ֐-|RcMۑInk1E6?:pVT6*4 +p%LD.cd5`w<؛DLXl@]p* U 2;FiN"-mc/7t5M61[Ori)3ry R$b%)DI]wov"M'-W|kʵ_|y[rܚƔ|w2AY?A7P6cc3LX: K]m붭kfM,2h04hW;撸|us +[vېM9n{LGtj%7% m\y g&9Z$6d'JRnP!H9Z.{3(H9[իx`.) I1&Pj+ܰ#r+@ L6X5S +! +] *_0)BiID%.(wᙙ4%kG$ԟq2,)Sȶ1KH,)lW'mVBP0g8 O"X;6 XYBVn8Βi7Uxr1#ɯJ(5c,P\M ƴV"b$ZMtwQZUCJK,gտ<zs9n;Kn \$sm4Ub$(/v8&ۣJ/bp,3}"wj=:QEo_ʤZxF k'W$PhD$b?Ƹ#Ddn.@bVLa( mN}(Srd/Պ;^ smteJNR,ί>N X2d1Q+'?E- ƯX#a +MjiTz3e~~&.`ڂ4xrS`CjPͻlbCbEӌUBH_iX^˷Kƻ-!CۂVS<e+#"JA$Ri?^wu.*2Oz2b#601iHRo0R|G +Jö'm(awG08#'nn1 YC: +އIHj$T @a7C{j($==t>7?(˭/j1;RFG[fI-Bp>BG YR_rhwG(yBŸvtuM^Lf&*j*]#XgO`mJMdBgґ&[谜!R&-;RcؑDP uPs~CnTla +أlpŜ`ϖ9-6$q9wrۊQ8/p2IxRP0dNlFxVB0 ׇw|.?=<^"Jl4" \͔K{m?qȆ?ʗ^E +endstream endobj 148 0 obj <>stream +0 +@& +-+~su6mr:%Ѳ3xWAGJ늜WON(6$vhߟ{eh\;FoБ:*vK7yO)>S##L{3>XI4elpKZ;E]ޚ/YO UP[' l~vEfH/Q +-Cք,?6fm8ɗq ՙ|\ +dE~97JuqzpGrJ֬ZDևn%NDr{}Üe 50#,K>؜r,kyIK߉ hqo -&i6hn{  iFm.x08ˆc죞yPOHKw +ˑ'x7OR1A`߆c28U@_0cäsՏeY-ml +CY}xߩQGvgc%RsYQ8Ș/_5S՝ȡ̡3mnCGD=lv:M5{7K(#MY?j+'WrD.Կ8&ؕY*dcK=q24/ɟ$hEM$](nqFliLF}^KaSؓtG&/(pؽ^H.RŽ K_6A=c _S͍4s!ˎxH%*dgC  4,~Se`T\`R(c{P 4!eFrO`a%Ŝ4Сqxw#6x\99pM=\sϟV,Y`íᅦ؃cׅ^vu?wݽ #Z\RZDg%}* +=Ǫ;p Iy2&DX@h$rmXL%YUIqM\N%foHsXؿ1<;8!>r@"2E}sX?3zTCˑn'!6{Ѝ+{ui&RaT =s;~ėApEmYjH($SҾ6:#ޖ +w BCBa3g6<5 v#8WGfͯԐLܬvXB1X[>[+;I uTRZ̎dCX+GķZ8Vj&C9Uwm-;|tk.)O/Ssyxh[$_jei?\NKU uf޻l~E5|Na 0(&7pίHȽEJSE +s#{QD̸~.*B2E1b#;6+3J<"*cj=Զn[îGY+"A{4۶S'?U\ܶ}Z:'^H׬hwsԏ\p(RkV9zv{Mf%YM^gU¼+}P8vg lT@Р1hAè\L!Eq2Q M\c2+xs*#ŲXFٶSLp0U$v|-uC^-id IѡyXaOhaQ6Z۷hD{Lr3Crx@uPiD¸u+\-s@q_VYzW!Ud4dZuu?LعaT=K Ε4Dq!r>2ґJUkm17.MP$9ϦRK,uPo#z_ZT s܎#l|T1F<|壎tűf axSnQ#|wL5PZSLo'H; Qq) ˥8o*}g,#vK=ǯ:M00o=7Ŵ7P#aI@xSQ.K@Vg9j\M{w8/Vҫeep5WsU8鳠# +gG&X39}o@s؞Od} jy z'.',C8QV+ɫ$[dD?KvSJ6%';G`)Y8F3hqF\h?^8Fd4H5-pzZAe) KwyqE+цt@ð~Q4a#Gx[d,tcΓLuKb`̣Q3ȕ2xjİ9];#ٽIG;{%\H!4ڱ1%)=чe|?ݚ;5*0Y}a(K~FTWU<B"Ѣ4X8Ҙ#T +%67m EʑeBUpPUykæ8f(ب(7`Fe(ƴ20Kb Xs+0)(Vv:z}?lȊr@wG6Ri&ҳEf޽4l˗P- +eybGf) +'|6ljO0MDip n},Qp^s?@b%Rp3fRwCk_(*H_Q + ( TXj@Mȭ.-; A*: 5 Bz4! G|Phu'zlSt  +)7VrOޘ|Dy[ z¦'&4^ 5#ͲC8c +;@HkBƁu9|b/C q>n99K=5ݑ <)r MwY6"t<\.t_lRqcnA";tF=ڤ[ǰb], Ӕkv9}Ϡ鑂y3+C 2 +l f7̪cNv%5qr1+%^gvd9㨾 C[Z^mVs q$bh9kpu_͕cwAVb sU8{|2qR }=AۦmfpL^3ݗf7)yY5.p?Jz:Wvw1P~B@ՠavٙ7QDp3r/@xjA7M9\z)'6Ww~B}3a+{KH56uyȾ\ p iRE`U0ZMC?JIuo#9> ymr*|`ȩ>9)+sG?izIG`þ‹1ʔ5;ܮ+4o<7]MPw/JgH8(938/KS{kv,.Xezne +: J"i8:mW F0H t%>?2IIDO@鈘kyORM.f Ih:Ax~DuHD+W68~ 0AWa{SOcxkaFDI~K ?0?Gz׈ӌW[i]n[B"I6]}@:>V2_zlD[-OYjhoEK? -*_ago:` +*vZ267 mmLʎPknAιR7JI +&geUIjtf.4-ּ"Im"=$ЭC^>4*GkȀPT-M +TP HW8|F~zQ(S\.~)QMms;ؤߔ +;,Љy +]?tDz|`} \X,IҬގgr2O& CC6 ̰WHAW:<[JKƘڇ&՗>a8 /}L9\K\G)]J WΚIg߀E0WTq7kߔ\SVT⧸oz$oStRuuRbm0W:sq ~w]8Vdr! ܘFbr&"l7 mhAH>us ("$rJuorD1U)cRG $ zY" 3sLdrS-eH,Bktܰi Cn &5hnAzti&Jj_)4m)-{H.>%=^(>xk{w?y U~ȻuX\|]oV>[`K94dŸ/"r_ n7^:rk%YmZ䜆q4+0w]1WBA +; kgC$oZJMau'nP[5ZdyCfV`sm:|d>lt؞k'` +opƓUs +Aj1y7VՎ^!mC @d-^,-*Wt9.8&8ڎ@R p=.䯠Fz(QΈ* r@kHGa =z(nU?fLp9/ky0Pu 4EDJdB`ņԦ:i\FoUkB>kJ| R̼baxfX:#BE'58{+<5J& #'hCˌ<,Я(PjJ쯐MQ7[(ԁPj$e{l5KvǕ?UFշ$ w2}G7V2"Y۟;>xH6Wz0֋SZ[j m75Ix&7.I]e9 P.F{5˓3"ܠ"~r׭ 7Wb8ⵇ]Yw +kKDDp2$a0^Et +~̮hW߉FEr k [IWA%2Cި ^8l~tI]0: G,0z+}U`z +aI XٻZoBu+ˈv7u$}gy7zIsCIO]^2w2; &{=b" `~X3T+Yq0V\b?q8GжQfICw YJoswYy113x oc%c-n?R& +Fk =]z(A wgJF:^l^˙, --5iGi ]iG^d&;& ,WDKp8aZD!ܖKHќ po;} eFC:ܣD1s쳖+$Eg`iTv$ɤKע*Z>8be'b"{U59Ů҆fz;R~G/גeeSMkC6V'X-ȠrGFk"Mt0eoLϔOZJAc!umM +9%:E~ypOxXAg5q~('A{½#[׃ +|=kd]\y~]X[ Wl`-̳߅_G iqU$Ŵ|4cPsYt+8/6.7[2Y-[DʆUf>S}3>a5-9>3\92}|)pJLvz kG1AqT]{>\gcބiwթ -s1͑BNoD4̛t+Uvr- !Ӛ~@ 2ᰩE~^+XVYW̫0m+"PijeO/2$ەh5i2;Hk"OЏ)%bz @RSorLhrO"*cOS%p}1qߪ%IM^J,U,5d=dy.y"=F.ޏ[Yqo*Ií n{K:lv9 [):wEäy9T2Emǜ_#JS_x7!u>*ڶ!eݘj L`JETKg 4W$AG]ZԻ~d^אiF3M./o* G?MaQ;usx /Q4isD%sKo<[isaǘH]'T4xeG|-%)6dFgff 2_[KP&Atd(O2n*FcO03+[fkgߎ`o`_+DWƾQ7XʦE ;H0B!WCz7r9R_N.7&/L_9|殻5?-*ZN?/ $Ě˨ +$l `ws(3Tb +x{ (Y4Oꁤ +rN5 +Jvn:B6Wރyh'eLZO?q_\it9 +]R2V(`/֮cԽ~Ab{i e%m9nvt%n5SGR)oNFUoN%@9_*?o.9U0b 3ܦlּ Dzĭ-) |'ݮ)H4pO7*U%}P \g!"?z}S& o׬ز<OWi>6xY"^FM&3kBxG:ps5d{1IKDVYnxHg\sUFψm |8_VPߒ75fؒ@DI/,eUc\VLU@^nE8Nï>$հcvIrF*Rڸ^;!P/jÝePg;TT[x7\ҳU7M, K ȼ)P@-uH8_v4La9KrqkjL(PhZXro;=wk),423>hy6DB2rklJSR- +H'p8~e7PD,lShDhB\SBb RWiѿߐ0+Ta+8ݩ:*^^|K-PĻZ?_(k,s0;JLo)o0WW hT3^Z"pEƟmT%V(ݭ@e%sQld/"~3?N7Ts['?n墸63;/Ƥ3)e .3UFa?N{ W΂?!1%vaX"xѠJUE5X;{vR([@jL~?G7*{AjB\HA,ܐ^ BȤu?Dl'(&;We~#6>(!n}_ ^Y*S7 l;By6>}|b͍ȥw#4100t]Njyf`Z +B +@7p2KܦLR{<ѐk"6A e&oX|!HpbIu&0 e ."[ɉ(`2 X!8yf@8(E>4JQsvs&y +M:ZR!Ƃ *n߼S)9t]ӂ2,P]qe~˼tvU_؁`OA)G{@ⴸܟ>u|O; +^K%\Gkr6@=sAh8,3]W=OeN +_z*3٩RfGl)=ȕ)ՉheF;`sݿ?@J2KU%Fv14m,EOT E+oZW ln:XeX3*c˜nAl v oB$x.Pg5$E}$CBO#0p\N LGVԪR +(p7ockoť,noTE +!!OGԖgdiѨyz6IZ 8C)֫q@1ʳ-䆃W|5__lmE{w!xSȄl'jgڡrC3 i|7 ,4jboD@g?;%iJ`2ԿM"j.=EzAp;SQ 5ls N7߭|).{UC U=@e.O[jPbt6U,lB@Jb6Уe4.IliJVZ7֣F4$ Xh!{eA)saJI׾ie&rA"ji#gܠ0b5Y@"}{v~3Ա׺"4Xے9Zcb N1LÆ{ܘdx/QY ɴ9v$GRrwz cUIY\ĚpӹA% 1;7Wѩyz{{%# ;t[4;ET`$P؆I3ɲB<dvjS^ДNKL?E Ղk^ۺ qR"Ow +y~[3 P{-JswOg .+Ka˕us +Z: nhw_y-b.x ffBEgw=? <޾3*^i]xH| 5-W[#+%c Wvi(mUzCG 7ܮw=JR0VbFx=TsfOܳ +Pd9~0(T*3zt6ܨcԱ?7 +;QSWSɛbbɝc qm<֖@p* '{*3X27?RJB(YV4UT]/1S u#ȣ8re~RD/äKPU)R-)M撩4K +xf,ć'mjoTAY2~ ق|J,+^r|3@F-Tx_9{('(T'n@XljĊC*skR6P=n{LRouZџ_@Dqià|yoP{LH6^;9!NX;B?$Cs ]S +խ6Y˅Tm&d'/-!omӓoNgsԱӨgAQDEq._/fx]KLX/Io&I`]VEߌaˡzW@B|xЫ?vd)YZd7@[!P_5uy ;7ˆK3;X D2ZSg'B6߹gB;:I-;DwGdM'kЃ 'i)x!i5U,H^+Go1 +"p5K#P<]Y)3UcS{ČՋfKف{G@#W(֐=5\8aNja@q;ٵM?!ܷ1 gxy$wњR2zb1Eӱ透^*ȇ}ӆz!ۚ_~ {KnCݡUMl.\8Κh<"y35[6>~ DŖf !HjuS`*pkQiCY"Q +-dx(L8s!-=Z*&EhC'op8W6PYbRqf5C,_49t^]je68E^i]']$25W|)쁠ޜ%b N~4Ri 2QbJ?WϨcO +7G)Dd8zF;b)(PW!h{@ٽăJnL'fNg|Zœxk7? lW8u:TZ }xUʮ#Aa$y~Φ[8l>+@]<뗩FJSOjC{6zGg~5IHo++lAK>M8u~79) !L܆ǞBpC46ל^Cfi +%yF~ +Y Q2QFTI_9 F +{]M2Jԉw4Muĩ;M̥Ze-`\MAWrT=dH]v'1>)$qNrhP&3фo3҂V!NXA7px#ň] +9 O#F}iSFbB\XVnX(/M?5T5՝w .$( ^$\y? ߻ +?_ ]wՕ(hA?vq=@$Cx*b R]2~Fj̳Z6Qt|hEM"`[iz,ΖVڲb7ivt?JOde˧ީI. C(9RxCsIbke>ZʼnP>Tʯӝv z>Dd>/2] S6;Pb(}@6d{W^ +u,]?Nײ- "M| WqR_g xݾ(&nlW!kZ[>uxZ'8Jrmgz dW *Pd{Đ>!ͮ>+p#r6S]MadJ~BZW;T]A?%ۼ##W[ 0>(TE8;-a󸉍 + 4AM] //{h?u㱴QU=/?ҁ>7gs튰s- sҹ,KUܮ+їU0D(RR'&6GXh:`6pOϋ1:=M f+ Ipvˬ%/qu֎G?RG<˶oPVZM*vejtI:N +Dwmloc%@$^ҭ{\M0r 9MfGb<ҭSEk.>FٽhhZt4H+\ƂcM6nW,B8ֶο+m7Jΰ3܀jonCFT1O\/Ĕqk'K.ꍎxH8BpBN+FLW~3fmh)kIe>)](lw6ZN`2Uӱ[VbtW@[`=dLd< eQhT0;V-圲+Ay792EM&IѷKG=e2q NzC +YN)P$ EOD`^`O%Wo۪S0A)Dr1Uaٕ(s&\jmy+n8tM$kQ刈hdh>јyYkT DnR E,%3v#654㚑e)e#x<c|gR]$ lC8^gi NUU)$¬Kq5:\jԕB*^57g8w7cs|) n:#/U>'%)^"M6Ql3 2MaK$ P]E[d59+j9HBl@윑k?/r\]l7lS! jZ[ кʓQLX=EBh]):ƫ>gwj^}ˌZ# ﲯҫ,USOT@ѻ\^Ckl5^c%H +`'vmZTf`\'SbF\s++t -P,#F\i%Ѹg"AI=Z '*q="&Mӓ+Zzi9lL,.cK7r MRh l$gLj:hH5)}bX6hWdc[kk>NcT +*rO'6Q̷ߧ`H*5ù~ңXT\?9X]V tIV@$6zeOrjvxj6^uP +`B9&(! j{V]ȊohK-Е8I'}iupugL_|F"/ ,O?4Qy߰()PnZFqRSc?7kʹc02\z ,bs}}.V^+9Bܣie3;]'t.$ ?-ɢᛇs;;…[$"3M ݲID?ؿ oR:qv} *B~?^$>W[kƷUs^"̕)a%FMq{QIpL3)Ի4}#Tlsc:4I}"hfǕ^>j[O 6|Yp|f+w1ayB`'7%44L4/rJhu lrAˆ흆PREܿt;8U4)]cx(k=hyzo}؆Y4VQ,Rolk;mh}MQZm;7u,KAu -d;/ȑ uSYp/3?Cye +\X +d^$.{kmWR|d\ TT!eW uW` Zyd$qVVoRSHkSX"q~ւzHqCJ1ĈCQr÷efnn%}I^y":~ְqhJA@ʿ6!:C^/\5J9`ob}/'Ǿ9~%Æ} I^̙`Y?z0S8qpקf|qʀuKQhw#Gk8zwUE?L .1nhaB<I(N!"EӒ_nZ)wx*̽o8 U1tEz,M\054M yDm&~. uX^w ؕ٫{qSF7x_-k/0z"V1dMp [a}4ZLyؠ`9fs.[6z^GU\E\!NFm +wz I:Џӷi$x7$7vg!ÒF Н`s lt"X Wz.nѹG OAfەToEKD!uÌH؛[t&Hj4 {P[ZBۄ#V+=/67W꾺/9~N<Ħ|e4>y"wPk;b.zNW6 xV%3 zw*bG-%yjzP-D7TPџ*#j(a |#@G l@= %7+:ƥרUh'pN+2w?n^8Ԇ- +Puu!#ōtq(\7a1 Y +!Lab5HT`E%x{.iE9]V Gp$iHH+c1#Ϻ_i K<{ m:͠j)~ ݿ2kT`=KWVb j0KeDݍ24O_Leqw"=JdCBg^~OjEr{÷9M/{PD2ђ_P v)83cwd.P6f;J^p@HU]ZƐ=ߛYf'sHj_U< \YhDӣ=#ҹiHe+oUנ +1) +eЖ -oWj^Ңa +@[˼Ȥ쾫\,/;&0Q."piR}Ȱ8C]|\mSX]yeeؾ&z/BK<*3}eo*d$P?({Y}^OLS}_# #z^a"vrMacsTtw>ߒZ)k 0UPJ¤Ҕ!7Ep_@e}_dZ$R1ɋ||oQV}qn|} Uς%=Xp&:S,/+1y=1# JgVFzhs^M#YV-9>9laR[_lo2t +:Yŭ@wWO{}ZzO?izAeTV׏v1QfQt\7=ЫQ~`7PY42D^^r2ljjYbKW! pLi%96L"p:4Zq $fuGmGަ6wJ{W~܇^I;f(qt#II"Tkt]ϫ-nK7t}%/@3MKe$N%6n+6]kFەEyŏZ "C=iR!mØ bNDP24jJ&``BxTY{&kGihrCuWyTvn`~c\ըMg %Y?e޶U௲]#mF5CTg# $hyVBOhu=L|l4Ӎxoliem'xwTL u:\ +q]Y+4ZMde6{6M'Ve%vv[0 +c^#ղכbOgA #:#da'kDW T#i `(3 EuZ e˾T, Q#,[+y8WOxYҾeqpW^s=p&;"οo I\jZ'=T3JTfQ!Eh>!V2bGK&5|NZӠϣIGEFt{(}N0@t*[^Z~St0;Mfڦq"㠫H=qȂvHJ9nMUyb#0/\<,vNX$Pdya%PNϲKWr"n <, ŭVCufDy +H}hUO);붤E)SbRRK Tsp QhVYBP%[bx|>G "w-,3C+cٽB ՅJ#艙 p;o层 N,sne,+d}T<, +ΨuVSR'6b8"~nZ-p);4K\oaJݐm8JG b?!TLp!S(=Ym n%Nt P5,Ub]}p;ll*үB]_KBeN>sK$SɆ4}#Jzy in-@8j /03wĪIַ;HFOEU4kgTUM2Izƙ/tkP;K 1IdJ9$rWjYY;Bf=cN5u̅c;X%李6Vy" +LgIՉCثeQ6W2AB+0Ā,Cܓ|T#GOe}Ӏo#)>9h(i`SJyazr9x$uLDm)ቃ5um_F1hyvu$OʱG r}=AY=L/e%qPuӒ`;g#,P vIȉVJJ֤οxp ,<"{f)P<{b_&f*gձSԯdȚ 7-Qe,w))N, i1d@oaHޖ,`u~&Vvq*jQFzq]N#;%fXL;kOu0ĤDf˸eoRx́qR%DWܺbu<45!P}pzvM~G̦|[m:] +lu;f0QOQsvt,M~YRo#@|ͣ/. ;kC;ܔ[;p7 edu~TqK~p4RVI|k9?cɫڤ3N9nRnaX6>넌 XLHYT`ycŝDeڂ@l#izz9AL% W{5vi-J-qY@s1IUWpAaNݢk SG))д>.Nd_T%?f6kk6!NAhHPacVoc\ lJbcH2wRnnicY4ƊվI S<*K;ZS񢦺=M)霂~Ad?=sW$=/_vPln2*ufe"¬EI*}5&QpZ_i>D=)Ɇi-T2a`ZN2 rSWHӠ Sy>:FNt|U3 lπ(şg5/gu3*@4P$<ϼ~E$F=xn2 tW!Ƞ5Y g]j>t7yŔ+ٜˆYě +Ktb :mHhCCZU2삅l0bW**+jIcNiD78*!J;pVw,mj8MsYZ;tp mE:>yPszq\r%U ]Ö u][̄ˡN@&AuBʐ#8Dia>no,<ÐlcF\rS?u+SZ +Ŕy Du \*IJgm2nYPC GFoF܂&~ }ˀ]p T{('K_eg'o{! RFIz+S]y%GL9M%[jA97YOaA:sknw3+Eƍ:S߻EN'%Jө(CN,.N=2b+h4c[d"heA>cr]f/F"CV>8]y.+ki +y4f^4GFf&zܓw"5@BYjG}[XBVrpx#V7A]?=#bFcV?aV_n#K&LLt1?t06&-xDENͳ륩,: v}57 +A0AI&D HV{zY4ؚ1<nY(ksbęmi)\$v! 0|oK7)v:{k8+w&ф(DេH:@cys*6~@.h@組P;@it A?u <w-%lݍX9g32혼QdI +t 3(CAU(6n/D~sOS1댻8tcj=;yi ݒ40PKpԹ@ xEonms"ዋ*[1($sاsԯ~|@7|[aD}Ɯ׭ &)V%M4`h9p'A§~!FD)Q~zkJ@dE0f‚-M4fգJp;,>B0b$ƫpۯڙ))rb)+v R+_TZFqi}HX@#S^e;Ӂ^8OTwilWSZ=\Ƽ6ݲjR2gڛIR~rlOvLJո;2@5*/Q74.(jGl<8"lݚj)!r5)l+'fH ="z`a~sCmlpg0q)[=_U1`aPэCst6FQm2nTKA"eCoEw[Pn 3c&D ޹][xbBC<.PE|d'.F)Y~ }^iTE@<:cza +㶓dz#Z =k 2V"GS>ߚj;oI7`BIm>}m`VjBl&<wIIⓩD:)nuWZ+x0dtӿ6* 2"}?1s8`^+يsKY8OOHom Xllb[&tJy+dX|ug~[_Y1#B!=L\^I@Ia-LrL2K&ܨQLP)&HpG}[Q :dbOKt%*PAX sh}!wi0aq?ϻGg Z*Clj@)HWpq|R,t r FvE6r,IVI@V3[}U-I\` aRu[ 35謎z\e pw8K͂gh`\[/Tr]a_ȧT}#he $ꌷUb{C`p(BPE)U׈Z6P;Tޙ\97@ql/ZPxX!f:kZ`G5m+3m=;xvJ "y\8K I9ktSXt|3v؃%vkG 1z|3~cD:cXG㽤Ǩfθ _rZ^/x\I붳Ʌ} oth2f175!t14?]HH1XUWkk"6X)&xIxF6F@¡595gB03U  +* Z +HUntީDX FR2-]OUjKIj؋eZXbgB&[ߏr%QoEe7#~,71D3Mp 籤J3 @ k'Lۡ4jycPYݲW^Oaru,q5=g&Ow!2@01JJN==w.ؠ 8.( FqatOs ;F~TC/+ׅTK`n7^_b< 8tnE+Qq׉ s35Iyo8Z4GTr+cϹ\܊ަ9t}VELĸ :fM׮}ž9yKȱ1F{;0lK-Y.gaÍ&Wۢ"29v9,Bn{1ЅZBӷ9X[,ve %Ѱ|]Fuf+{ije{K*yUD!\VZ"BWiC)ouL ȼ'GFrݘ}Ԩ[:ZĜ1pD>^ytUZeRZgKn@}r)^x4 \3 tljThnQ &(:? -a6$S#nhMDj +,fpD :.T9ߖةZn4/& .wk Us@*@- pLT5E\Oj%IN7KG?m q@]Tf(9БGi^b\o:c;RL?Z~e>e >@;%r}l6徝:Pe0$սqfk0|@`ݜsǑ?0ޫ;ܒP.*Y)1oL'T)amx./wfcQo+2k#oS=`ZT@X,ca" >4uqң,Rcgu|1LVI{|ʀXxiR;0n^CBdÙtDOu~sP:ڄBu_2c7;)X9u;??NC~1Ae +AaS~! +X k*0tP ZQ]ʱ + !R608K3-ݗ#s@& X*!YF WcdOYGޝsq + +΀otT'KWnH6,Q1=PNʘx3@ŀ5[( +H`PoY$6 [\lk)e4p76\g]~Lsw~ղ#yYZ GZSg,@9h-n6yoc `y#!/b"ܩYI +`EY'Urɖ֒ݜ"p?RKߨc(&q6gل9H#ZxD-p(exHRܫ% q,2f&?=huwmT2_.'Uey ӡY77wn(Qu RSZjƊ+!&c@=E8p/]HswvyA\IE5sM/y!_Ȏցj*jMB nk`Բ[js@uN \E&HH.!m:rI R& ~+Q>etOG ,BrvaH4q+pFI +vp=uEyK'N:;vXUkX C/)n_CT%Z7k0r\ NwS8t= ȹ/l}9){;ٗ=/MZ}T6I{Bs.75ek*n9>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 50/Tabs/S/Type/Page>> endobj 150 0 obj <>stream +HW]k;+0cI-[0 l˲M6%v@JҌ}/q[*N:uzߦ3uw~{<Lb:OoYKLrPb~uzz2~B!f7!<~b9$VQgpZ<6n16c gK(ْ{S4^ۿiNzTf]D|ii ^ KSsHy}HZ@ܿIkĈLK431@O)J.7DX@K8;b.,Ii84_dDoW|N<dk3%9\k%NDf cʎQԼf(2zڱax)&-@Q.!VWEa+ C;iDCjx{/Mf [{1Ҩdte.G+JV$m+0j{.E߿Z:jZaYGg qh)j+Q(HDF,̈lGb~NP)DY;ǂz\pQPGctY- 9ˣ:OFL ^,XB!ngM] АjT~O 57b@uaCߡ ҍ S܋C$ ISn*܈~ѩfGL▤Y@Ƣzm%H2?tPhzmWRǵxiA5&:MHJE[8 r3UU`?qelZ3n\oӊn#D'L,Ed# ƪ, a}R|1}:t4=ϯpxx,t̼@dK@0cӿ_/b goy-lߋd kzz4`k9h«/m z-%DQaR{TjiCL [s<ÒirȤȒ+DQ(GQӰb5 D9脐s`bha#{e p\ <V<]fC[n*<D.Hyn +2`C ]|k6vF;e[oP.3?hެn1i=2XF7 :Rt|4Njy}*PBk@ۭ|7'9vEsuꂨfZhe&H7bayB|cktJoj,\BёH%cm#%[hORHi*4svL> 5bnZ^hT^Qae-u]{>& nYoFFdfTA f1~{'~#)н=*Yg +BgՑ2 +BLd$ޯU_fY7+g԰:JZ>gT&{첃d*gA&QaSP)pٸVErA@뽶rzD(*A#N_E= +WAFnހ״%5hRJ]R +^4dΏ +NF@(Wݗjejֲs{LQTm>ؗ#(vsl# y'ِ a :d5Zvt", JTXEվD;L(cxCj :28jyRR.:2I.:d{(sΕ*љ~PY[UVu:nub *Gr|7.WY9D+k-z>"V/]d-YOh=7ܣ:@.G*H9!8w5=3V + 1ܢ Yg^ 7Cn+K4wu\,Z?^+uY ϗ_ߟ4L3`aZW V&J}MƐE݆J4k*PTPL26*xZi㭙% _oy]JεA ]ڠK+UdL74 W2v8"Q9pFnE4`t6"Vw"5Gq,2_1 I2yS5Hz +МSy iQSwyaLC'Ŋu} K׭hCCkB3_:n1W޹%Ŗ" \ ")JV9HgFmL \: 4M,YM;-$2'cn+FXTx4=i1+Tj2sw+YU%p i",]>oQ%x/>ĝҮmnfK'1ϖVW"Qˍ +?4?ML?kYSCv/.a:dsmΥy*6*: +XE :BTVXˁWPjķvi]Kemde׉Tրq܊VnBps,L.!ՀgnR#;c/KF~XT&Nr"rxv!V2pɸe!Fz 4=di3j${);4br,?&^1 QpcƉd,5D4p9VbaeWǦPzA!}fK_36Jw;^),|.r4B9sEmWS^`U8c=7₤ɣ$w.#wu[8;|nL?+EE!QIڰf4~]_?\ޯ{-t.Lއz5Bmњ[xn^߆75>yo +endstream endobj 151 0 obj <>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  o!1A"Qa2q#3$BRbr5St%4T +&'()*6789:CDEFGHIJUVWXYZcdefghijsuvwxyz?3: kh +4 O + ?O8O5*3/]]ԀGTJ⌊YSޙX2v=ir"c/R{}fKly{̆`{Nn_[rֵbƻ̘O(lV$tb7N 2Ol )'rΩnцՔV]XU8DQ݉k.RY*+k{IΉkU <י^A9|wY맥[w `Yn:' + mO\z=.ؒt$ n|ɣ{)kP+zU @#yg${z=Ljb_0^H&qrk̩.#A]fx% +[HaFES=t;q1ԬEem v7ۙ+)(r.=?M9ml uۿlԲkB ȪSI<e1>?!r&FfRF _C:w :v'EInFU""J~#ȧ)\֜VʇC/"{c/9_MȾfY]e8u,>_|͜M[t Pzպ:-nby/ܝM"ɭTkgRӇMcUaeA60<ޔ_IDֿ:k?j?l=j3Ym +YNV=VOGEoQ +m1!{is)Jx6ً['^Ӂ{a:~}v֍Uy-RA/hG q>>s>./Ѻ-6^Pa*=Ē7u+zbfkaĨ#$:s)<`YQz~=Z2/ )TSs Ǥz[(uML|m/JKrdNZWSHnN'EOSiԱ2sĭ}B1(լ:݈:y}=;>'s3/\zY3nOKƢ[+mgTt~w~WRʣ ұkRv2+W@71{=r,Չ:r p="p=,^F[pM {I>}c)>v GmL] aE܋r8rK7`Ofٙ?y;Kb" 3܋hƽkj*]9SR5DZOP!*o,O kںf^B59WeFVPeK}?T5'eJIor}{Ln:_wvi%_[Ȳm +F,TK|̶ODNd}f_ O9 +͇jȡӕ(.L}bk5;Ŗ3ȶ\}Yȯv̟]TtT{=Y>QjV,[QPSȨo{el_/wA-@j=0_ ?Y喲 +4Xۺ&Oqʱ.w Hm }mflox+}mމ>z&CFe2yFN&M6V*l[C2*3zFpbɬw 2l}C#3"f3.$(|#þJ*!ZTzB1]̕׺? +ږN~Xf՛b,Zʀg%$-e]]mj'wǯ +UG]⟉)g.lZv}ٴtlFuψTכ}TdcGX+lMɡWbSJ^1h+vRo;ЌE@:ԟGnr0=u1Bޡf69&=״"%>!_lH˔ 2muM^;6翅zGSۗ\ =n{{xiؽkAVz#`m@7)k'"JX*"f>d[k? QTH2YwScl[MyY,E]D&/X븕㝣#SpftDSѸ}U$s|{21fG!h Ί dGg]ߕi60kcIg:&]ŹQ DCxBn1"[\ ,><*k߾} = z/_.">`aJF;[t\>ZՙJڪm#5nV +nm#SP;ۑ㖻q6.SӅY,*@9ğ$L̾FՔ#DH`./NI3""'5|GM@CXh76'}KEO"֯L^kE? I?"GiřN,?:ᷳ.Oz96h2qҺ:ӓeW+zdzlX6kRaOԚLֿCa/&Yg/wPdη%:U_5S1/j<*I=K?:s~&tt[#,?6FwJkMF9z<_c~ot؍.աpA?Ixd܌G"ϙT@LiMwX5Q[Jw,fo۩u_dVXvl}Fd>*fkr-oQSbH_:A?d-Ժ[ѕu\jl6)Qo=2~.tFeӆ;5sV6R@{~'_OP[Rltŕ=cf_|}<ͦ""""""""""""""""""""""""""""""""""""""""""""""➧q"Y.<v*u ++0=H6{}fw9Y[j^A@$uޛgMjf/?-q7'S|SպLͣ$Վl&B݇.0W8zT P+:{:.WIki(`\;y(û㡏EJ\]uյ@qUmcy#,|[l5S@U\;M$TqBo}fFOW.{}Լ#=1roXd݊kٻl);U~F=X,{-6U}(m]WR͆ZzXIE[W1mbFΤx?QgOɢQnwk6kau+z~Bh,=ƃ7: +X«f=,B>MG ;i#/MQ~Uw<#\3jzV]zQ}v'ƀ30-,fkRX(fkHm}$wRÔhOG@1}K<"bb6~@/^lt[:~B)N; 98xcQ&~o= +ޟE3u5Uv^_C=t:uښ@V Avd*M}L`+$",C@{N^~gO8y.&Bc"IS#i/r.˨[mvb*]ι!'^@޼jnӱ\ZElPVtv<ּ{V""""""""""""""""""""""""""""""""""""""""""""" ԬJDDJJjV%5YHj5+)+)+)(Ð5.빘o{ՍV+_\;{jl?8! *!Sowo3Gq:7FEk98].g4.pƽgJj Izsv]U~# bNWRŹ%I :~0@X6IqحW#+~#G]Y=M~NcoqqlRNv n].վדH?aG$b3beQ,mn.u6_Vʜ9\9-z(3+[X(..`mkqyUq$ +|3'+cZɂegт+& ~eK:0`|A:vMڊ'⪤;=:~fi̤U!GjVG*\o[RozK;l@⌺rw:`uR}KZwƼA܍ͺ~k =}LW&X:@`H@bh~}1s^tZ.`Nzz&%7'\(Pe]wtWiyc%:OW1Rۓ׳+C zkm(j/P "x2#؊KhC>Vj\U ig[ _o^WcKfSKV*X)`}e(̧,J}v<6x'R 113V=hUP:l^*Ā}I=N[:Kn[V}~P@@=L±ٱ(b~$ȏZԱz( +f5.9푝+S+vד.Sg莾?q2̷YZ,V]?`$?Խ>bZ7/H ˾ :c>h'CgB N=G!V:,mo h[ ,TX +.,Yqet:Cmj>lKNnXW}4>ojkR?rX՟:tNUV;Sl,6{+ ]V~^B{$OOV*s\[" }~cjjpR+A2>:uƥ6."b~i-=Mq@@:BnPZm' +lƨROI\VR=/Dwc~WUJ=L2vR$?U^F[i]rX!0ϦhwX`{L.ӲzB"^oKXZl]Z;6e$a:Y i(kM ww]Ug~+"k ;x0r'mMk +q&[bcdZ֤2 Hչr֪_f`wKf꺏T鋢13 ++( +TBeW4|Cvqo9 +U**v:2%ecPUcUؤ/=}G'P@]MkcWv;1WE>8p[=N.'meT&-oKf5aܒǹ{!nmq|ozG+ODWw3&Սۍ&W~OIJD3R.{~Mz_e(K!ڰr[;<|v\@:cSZ(_J44}Y֟:kp +N}Mڃ3\Ru苃BܰIӏM[ˆJU'D{n`|CVOYﯥ[-9S4b< N LEEŞYfJk ߝ\|~6m{l;S$G%Y -XR44 _-K?`bK%O!cNS#zu~is1ϽΔJ/KQ[c=nTl[\I:eo??(? Oy F(U !oGmvd575. Ru6rT&Z?]rQ;\Tl#"#raΗv^/Jq?]4eu +wD702^]ZZD8&.W`OÑ5L44 +8EFecܓ6e?ťTmsHs5;1i屑.NS +7#z}`ur즲ؙ~&c| %ӈ=l"" (Ðԍsźas@3ܷiJ~ +.O`-dǿ2zLhkAZ'''΁:;KxtKP0 yv##&=SZ~U;?_=1wDȲl3կMnKݎ}⾇U\{rX7rq>=1#^~E,̉)$/a2*Ωkptw^a ] +#۠ᵦL"kfX^ xwc~ʃսb[$LoJƾ\;WC@@1:V> +:Rس3mwv%{hQ[g@X+߾̬,*}KM+|Wd>da{Oy8e Q]y+i#jC)OzÞn;7XE]^ Vj$sB[ޥ\ZZ^*|I$2wMQ:4JFј=SbҼӰ~ !SWaؖVh@sZwuMH]1+ڧњ>@d t*)Uƭa϶>q:}ON=~ +=ﶾڕ etԪ33yo{x V;ckJ^ݻj\4QXBlvı6vNo'ū62 cQ褲 +Yʃ܀Xid?m- #Xn,܏5g<Ŗ:>7SOE̽r-īm룡בJgtLN`< DHp 7BgHW#!jWHA}ebbUX⠓II'dIܷӨ=d!VVֶH#c<ұ1ޥ5R4TGO..6I {oO}j0xaЏb%.Nb0HjPYS/W t:>;=.Nc_"[;:ے@K^J5v(e`C+ Aq~pY'dk[z}Ɉik#CrF6rڟ#+2:Ԇ{q+ìWROI'$~cdLL&Xb͵O|:>5y)kխ7"5~o=GǓ|^o}2oE._6_ܘq=OĻ1 E'_5q荍kGc˗޵7}2tV{Z)7%?f!oWx[j1,33l} YƎbdWT#c߰M%r2ϩmumRk~\@fVRV[j W.EInNO)0r"Cz?~gFqe](A#=qڱu R<F?pccފ]ى'^Xv3V5abaYIIoQQixVue]wf&XIԺ|$I$3wNK0 Nʲ ~Z[RW|ŶیopƦaYݿ>ߥ/eXϏVMZcc{K5 :CM3=,{nՊԑFI +>R#>GL yP$R踃'~~}.Z}LN!$=E(Ro7{l E C t;rd˷p=myG[Pak$}K\L|ˮ-}~LI׾tDD)^tخڐ`荏q/DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD(NoķzwfJEg2XikMbR?~-LLr.Yprʆֵ4}OŖUiWDwOP)Ec:]CYUטa^vynZ6a_e4}/emS6<_MAL~?@T4rC%5#cc쌧1R4G$r lyGX5[JUMĵlݗA:{G\ɫm@^A_c]̮OQ9؜,{+ó$""""""""""""""""""""""""""""""""""""""""""" <}F:=}`d{!Q3j;^]vi%F5'['[R5wA@;[nÑX!lV89|/6BP!l*cI/YԛӆqKp@bGk/{ߴVt~U6Z-`w'>3bbYQQUv?'p{yOEy؆UfE~Xj :L|O0kgUx-a]?YuǯhǷ\+)6q93޴}y~\o~=CVE@v'DkDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@DɁ~BYa7+ PGВЍFQ1:RUOv +}2:lT:'' mS1xλo#"JX*($ '%Y.¸ߤ-oS_#0O؟3"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""*e^ +n**iӺu[=n$WX;JP}4i,N|Lƺ\5$;y)y;lZT"(UPh;9_iCԴ*}ϱsgNtʅUNݘ,ݏ3i¢'̋ÿXYQSue|/Mxw]gV6= WI[nSajofar&hdZP r"""""""""""""""""""""""""&RtQڕ)U-1҃}CtSjHb3UVQˑ_wcӕv)Uf) HRftDDDDDDDDDDDDDDDDDDDDDDDDDDD0SYy<l<{Mu ٹu]aJ2;ws~̷Uҿq!~#W>3dc|ג7NW{dtQ2+ + ;&U^RO_{ w^Z^BI<đ3)+鈤 vO}w \wE_qaQ̘Jzg2+|El8sU?loM.y`"JV2-uU@UZf|^Yhr@'u02"""""""""""""""""""""""""Guy-uWཏW~}\Ϋ^ eYtSE!lr}xu3ZF1Ub\և?:[+P+vJҠmuC2q+@; կ~=uctNGN*FٴO#~&g[v`Hs|GVgQ՘\;}oIy 7M6@ߙ"""""""""""""""""""""""""""ӿ $DDDDDDDDDDDLKx׌.mKys u;=hm S/g6-pB;r}{˴\ee x .DDDDDDDDDDDDDDH_z]ad9\i^`!܆7%3۩6aZYU5غH;7{wU9\k)ccSo:ߘiO̜{]6^UW8# `홒cfR{{ 7Uz-vv#c0> 5V֎U?a|Yh7,;w=]rC@ p{5g5#}JpՎ+[U^DI#QSի-*FRGH#Cz0)VWX@~ kg_yE~7~5G!lRdd oפ7nIS/tZMmfS`pBw7Hˮ님Aw+$1Ҩ,K/5YbQĐ;z~FI59G rWv_0.Gb$gIet8m۸tV>"""""""""""""""""""6IX1FfL[FQ<|As]"Jȵoˇ$*Tb>>lg ԱB]{W,ߎ&"""""""""""""&ѳ' +6eԀ1!x_zKzQ5 o +˳'in ] ԅCD ?Z=/ +6Fi| +s)jT7r=B}"[ͳ>쇫(#_İ)ZS}l I%Ilf/8 ʙ6IH޻RՑM[ru|Ox:T;oQ}#V?#[9ȴ ˥,I(/71|_/hL^x[L lHZ +[bzxm[;*gS#7&U+IΈm^6 '?cY]h4ص¢A%FR;Oy,/'>ƱlDpv7u73l2goQ讔EvfEV,{׉ȸ=c+If +~u)3Vcu55>r׷\-wsbVۑ"_7]͹84%VNmbo4}1z=9A`4YU$ u1=^o`"c:]fN:5V3.e4Io}lw5>K~0ql+ɴ㺽VO`YH$0cHDDDDDDDDDDD~%y [m=Џ#^V-y6#}~.+,[MUs/W> |!ŵWNǷ"΂잡VTsT&? &ColI'`{kdG~N_N`_L79vG XљxJ+l~Rh>;Í_HB `kzQ+uVóeXțr{<s#)쎺+hg UC 2 PPeSZ{'/6[8k^DlÓmN2eK׹SA ӥv{b~d3&""%:5ٽmH S`}2,mxT('>]j5zt3s)wa~˱2?Cِş-Un{L|l'@ @i-N~?#Ev= [VBXĩQ}C0Ka߇a!m#{Ȭr +YA|["q[~op{vkLˣ"8_E{&(QZޕ@;=w'ɗ"""Fu9xٕ0@x>;ba?nMWk[i_ ]fխX4wknwϓ1 +5*7[طB|0I\IbKU 1\lUɥOz8?<73Xڦe#DCxz:*=nA|/}{͞"% ԬDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 5e!ڬ4>`}L\:gHaU9b: i:CW3)ӘWn2SWO/mvߦK%*5(95=PǹpmȞ['"E r> Fujr:wQ[)7˰#C[}@AK|WӰoZ5v; +,=.kFYzWX+FK !|JK+e`W~5]5"Ucr堿'ɻbӍ^P~ioWɬ/UGO\ W>2[FVOmiԩʭo"]vm{f5?`EJ7#{;zٷ68]9vVw@7_S:iܸ.ύjX==4;73$Vta%nn!Yň _OU +9G}Sc-{OY`c}٭)zҷgw>o&?S\,luk"kVUm<ם 7MW?q :8utOMF!ܣTVvw<<LzOwc1[餎ăfndceduueKDk0v+,Yб]zTط.pC~aF`W[m'7Jٕ4O"=ρ57We}CկMh  o{qzgo{NJ5?OsGل)~WtkbUP %A3OuDZUiVCv? z-]u9P +*È#C¹Xywz岯!~+X%2oO" p@YmPGr_=cfacZsq#K2Ґ]N:vVxɐYŔkr=FE]e5axzl,<}@x}ԃ]y E5\_k)]AFĿU պvNF5_?f,gF۲GwZsq+MJǮJVP=Fq #}s&eV>ȦebJ2 +[k5J +75A,l$t {Ek`VP`0ߴ{K`bua:5*T+ +AFHDDDDJĵVOuK311Wڕ2Y[XN!@;=i;DK8,$qr%'R[r & 9ozmqKyCMƢ?WPhd.sZ3*!I +5>WbJ#"8b ω@w+u:p@ᙬb9;6t>ù'@}e0:}CUtt`x666{D̈IӺ7!jm| *H 5=._K|CMl"n;2PVvFl2DDDDDO6X)w ({rIV`+R GpA""$wK ʤV5·ǹ*ĞDG0R +)PBbad~7gT^ءRR6]stAj˫F(Wא2[hx܂~'"b.e#իrGLp5Cv +؃zF.[>єo[H{ :9Ta#zLnE U'XO/rg|߈'>qJ&J,ڇJ붿_m2prTcƉO&3Gz\U-Z-bVsV*Hf>rȭl_:`q&`Za\jPlod xs6u1N-LA$Mw N`ϧmɟkzV$J ''$[k1KPŝP"}m}z#)9lU²!A`+u DDzHbF~u-/ŗȞ#GO^?)m~w+'z^ӳ~ǿmbG|E?rnV@9_T Ўe?eJzUb^0P*߹󩵉"ʭmYH#$hVQ@Uemis]PVKhe[P,64nC$y|I$o͵Ο2Ҕ/͎BulJBTPM:Gc6/^VT #Z.l51V +2P ۀw.EUl[kH*%5L^n֋ XK,'%%t۱gu~J^Rf_[Yhy 1wL;2dVL\] k^$L]s'6kijUYС|FZ߅ n=^WVT<@]%ކzu[{iX+!%yNճznNY|wU _g6@mx]~Kll{GS +U *A뾵b|CM嫩#>Ehr8ba٦L1p|~f'r+hèBXհAsҽc(vI̬΢c5܋S᛹z{p 6X98}[՘-G&SH7} }%sp-w55Uv+.Gxez~-:ݴZ]8 +H!es1kՑ2XƼ'3:lj TXfv X9621z. ?T$u;zPMqkX UP6NӴYmL.`2?ؑ6I}tRSk ygrJ6lQEc0[E=:Ƣ[0 +ͭ"6{oIt;qjJ(](]?¼kvjk|IyuLgUjeGU::=ηXuzWFiw+龿J/;Vcf!z^MRǡr6se7-՝bţ%-€C=ԐFĚ :YNᒡ\Fֺ/|=5I=B;'d]v(̼gƤK-UKokM>Oh[ +_F`;7d ޾dDNLcV*[z2,S'?y?0VAgg*q]aL :Jl +yqEcxZySv.Aʍ =LDDDDDH;cfפzl5`GaosHc]`~B۝kBc͐~KoikfUԯΰիjJ)}YfF_'qeZr17fQK+2ϒ-x=ǰU, +7!6~[?ޘj]}W}mtúR,ʷUlXM@\3 e&Aek5[ zd=7]?yұh>`Igoؖ?ɁRK1*ʺ0tm{bd~#ezj Ff/jJ7s}%^5Ԝp`l>i)":Jjޙ)zٰl2T>`fג >C.]"owF'߷oTtĔ +c베1#//GU*=IpACky k)zdX1.H`x&fg10pQ%Ѐ#mFugTu]~6߸u,kk& +ur.ٸy<ΡZ2J2/ϵd@gS ;O\L+NW)56kKVKWE9;4wˊ{hb7UHp2iA<~ `t|Uث][ E`OȞ2ĭ|['~_;O`}>5XTQ( +?K+t,ɣ?FR[؏:: A״tw-бJ*V6ivKI )!OHyԵv ̦Uۿ0k;#2+erl2ۛ2$I,ntӁP(P~`4}55b+Z~"+6ICvf^&eE\8`LFc^Fufy0;*v :cĽK=SeY~\CsX9yYxޝ kq12vf5v]XmF +o##?K"ݏu7 r5cD>yպ_Rc-b̈+q]h}Od~n--vX-Xnz;G3 +1E,Zx3w Fߓ/W:]L(5kW +[zmOݍ0şmboܰIn0Jo瘝1&d5=3+"HKY ]YU0`==et;3j[&t,Hluo^zVCe6~Q)5T[E'|K6t4};bz7Eŋvwݻ:xՇ֪-Yx}m;r+`gc3-mcXE{5|tv݆2WEyUd\}KX˵jGyk]މ6Vخ }@^Uj69k6;r$x־BG!+X@OT'iU)/[NU>nŻ%j ç.lJp8Ӯ9[`jzN%9hJH4X}NJX2oQB{.N  +SӲzzeV^Հww`<͡ݦFwExtY}oH@FBܨYr!I9떆~ߴ=5ٯF<[jI"67Xl _JIJ9Wߊ>>÷ԗonv8'd5l+-Ii=r3[*eV8+uNG|kZ+gG8sW + }Y'.}#@)-˚[ݻwz]'"d缅IP*I5߉ dbۅ0DzNTd_hEbv4O5/+qbws.>OzrLZM`w}y8Zh7nFQJۦ`}%b$/9/ҲZS}m +ߓ5tBO.΀{>j}oa]^Z>śDW%2j\_JR I-XsÝOȮN}[0~KمH>٢""""""""% e`6`""""Sz+%b"y(A <}MDDDDDDDDJnV"&;twr HlQG ?Y@gg"""% 4FldA]kG@ }dcWX`=舔52OHɣ=B=H5Ll_rz*Fs*rufHpuWa}ƫ1;K9Yٽ8z0!ztc176ca/属!l]\%$ȷBmֶh2ވQ-JVxEKʃ7R%dP9 lO{rONo\B"P4}DDDDD֍İHed vȥTܥiף]'y׾<}loxP0,< %3ҫ?2@=5kͮ(mr.o[>.Ƭ98^Z#ߍ GV~g*=z@Fˋ#($lyya(yz`'̻x9`]AQ~)ȫ%yR9T͊^Czo%TzV)Uݍ>;ܿԯ}7Tȉx0#cTj[GQƮReaGĒq+ucnU}`~eE֥eΔ;?A7%2l3 2^lpo@>Z[mD.ϻqr^;.CE[ v`llT!yf`fAqfb>^QǾp+ ZGCt#^X .Bu܍udUx&VR)CzA'Gk$VEwjX ?HGw]^o3/FeR8(*: ۬ד$_(Ⱦk SaUD0e,A˦t[kloc^o[K`uDU;.ʆyyjlgt q{pBnZ?R5=Yy|oRzMw Lpӝ-kv +?_'xk|8OQy>4'|=J}{ulͷ@UlB;e]&GA8ݻduJlb7m=U؆]hxdYtjVYZ* +Y~[Ҳ1(R[ty5ZjMj9/>xcm~CbwHԼ3˚T^@5 e\Ks=u~VfPRۭ?,;铳@+ꪐ'e5Xňa6;dSUATw^\gԷ!p@*y=YM,*2'ر=NkS!iy(D֠]`MR:) } ~6e˦u[0%P<~PHabx9hڂ9?ܹeJv +l@}ɐT+.V@ΟeT tao7&[6R֠,NvVEo+^5*}fv!\ڟ$QM/ÕՎm69~]KT b$ǴKdԖ=KX)g` NRL^B[) _@0'býSӫ!sr{PȦk* +*3'*R@$>2(,]0ab^1zz"bTUT[D^>ωƠdQ}Ue(Rޛ7dv2|DԽH;T olݷ/X|vVpĕMMn7+!:̫؅J,;0cn׶]KvޙՁZjxҩnA[=/\t r }&V>^7L7J_Ҋ@ֽs ؽ3uѪת +Ma=3lo[:AatJ]t%og^ F{aQպC]RvW*,<wrS7` ڔi !QS;I+y𲺧BV-JِԹXo*F׉wMԋU_J\{8}O%H#dVPt=Ȟ N$U xbXA]z[J]{&;iR +B@6 ~^U r8=2?-tju;2+eJ׵hk;*jD +͈^Ă=7Ӛ+bfs,ܸcW_ĹQG>ImYװ`\3YX'L2"28UGߒ4~/V.IZϨFmv-?_[2|ɜp_7 *@l@SBA'ש{8zfZ9T~׹_zy5z\ Z'%c[@7ý+:jPTIx$UoF.I>=Ε-@Υ1?eWtM֧{-g)P?N@Q@ +9)Nħ/Y](,\@v{2WvU(a]6$)bc|7>E1j6؝߼G[2A>Ӿ^GWO^͝C9>[\W?⾯Ӱ]WOy+ ?҆a,tX'GS7b0~m3;QZuhP5Yp ,tק #ӭSe]k,ݽ[(6ׂ^ynX@]{-=c? +Wr*֎~,e~!z2S[J+qO:6ƥ`2 ^-څlOjXPcVjc.x$}dYêUiŰYr.o=>PFy+KihˮL\Akc3}fj+ev 6#8WBGAHo qP|c%TRmt%m$}{̿鮮U-Y$6u̷)f ezހ~(5  |v}S§=J0_CRys7)RWMfHb;+뭝HFF!{*7YQy*FAniN̊ɪR%YuwS+\j]^SGa׿s\5ʿU>˯/: ִ-(7JbUG%oPg_I:e9jm3Wdy?H"wʽ*тdiv5=1 Jxx[HZ> .ԬU%WZ +P#5df +ꫯ?a],;`忨d\zo)Ȥr:B?ޛD:%]_ux}7 P:P6^Sу] jU6 Gm47n&Rx$)~{^5x/|)&Z-n#?!_@H>A%B.X +^n`R\ʆl^2UMPx};y:v6&_Ã";>eAgmkbbd{z y};1^ =ȃ!ؖ }Ǫi5 R.hvv3t̀ɏ_nJmve1Ĩ=IV$>ML̽ҩ8Y5}PI#A(: +jP3:oAަ uINe_Y)z3WmJ}oEeW0|KֶWP#`>&'Lm,]3H{77l^EA::lHlr}+{XgJ7ߴ:vN7Ql q4TLQ[p'" ")ޣ?FeޞgOlŬ0:ָ ~B=C/` KβiB@`ik]c˳/d,̲.rʜ2E$HnoGYe·_;/X -kQ1%Oy-vHL~mb.V6TwY:ۿ0eTw$SՏUE\ +p#_ytB +k +muY=*]թx];WD˻!Uc]W5ҷ9yMKB*"U;`&_9 me_ޥ^;=fl| :z }Jz:_]t[ +4Ocϼ t1 (v~ ׷_շ_uvKcGNn~q_ʷ 1,[N?Rw-BU9ٛNmoZ?q*zCPtwmҘ}#V/e99'@g,OWFCٷ &G(:{ՇE:U W_ JUv8GFRYcUHlv::?yL_q,ԫ精1fb.D?sY_EMO5X5t{ֽFWE˪H05#]R$眾]U]Hdɔ)GqeޕFyB !]rRW񩡱 +[Lo'ܓY? 0;˹A㶹xx>İ"s[lK +K@߼Ư4\8AS +[|HAJ'Fƫ[X`I,I.`t~2pOe' s/:03-.0gb\;o{K9? ʩڙǫhwv{D9+k4]q<{>v ϗ;NF7]}h)0Ͱ?k{j[ +z~w }˹`+}l {ͩl6՝ ܱ՟Xq=ZkFycŗblUһ It+v;qM"dX'K oȝPu4Tw+UՇV]C1s +k&gvcyh{Kknܘ;'g 1eQسP3{JQqV +!v5CHI^̦WA˴r=\!lϮB +mL:-C1-?=]ƴ}t7b|'z%o}g^,;N%-Xq-ɪ†mVIۿgjl+)+/R Ƨ*o'8Zk'd1 GAȵ(A"YTߴ}iV[M #u>C߷yZz&>UYZ]$ozm {hvĪꫨݳ`,<;'e #ϼcxè^ff !{-]th[9 +@؞@۶}f/Fù,܏;rzRhw{.J/$ۧqȟ$^OaW5 +{i6 wZԻ)Sf{'$뿉0O=SCZإ\ (Q`ödc~Z*EJ@5H#εs9Nm{ku `z Z;TCkG~߉s>lԽ")PpT:Yu}̜oĭjH:e;tJCᛮӘx!UN@n͚A=Q _fRt?i +7% 3Qr׷О,ɐpz*Wq>?Ҏ[ؖr9 Vû${mS3eyim(ZZ5nu%;؛@ЕBu0Wوٵ@\|G{~\Ƨ)>ư>oC/Ukzw2,[C)DuLnI~n,t?(3(9y`*-jΨ t~SĵOPnDZlFޙND-dW[kDR;f/O8MJ\5ede㸙FExUE,w&`eu^B_^e-V=ۀ`ez8ַzֽx꘥hoY5Kd{^C2%5֥e (ȯ):RODYA]2GG؃2b""(X/s#~!ͽqsgM(uE$"%#R?tʬ4Y&V]}1t'l`:?awe?PThP_[ˈ ؑ=]v9,~BnK3Yut.;;~^""""""""""PL~iGtB֔n,WJ@RA?Q0DRZx55g_߱z?ɤsBJl\ǁR|l=b T.uX*@ŀ;>13z6aLumMZT2 Av'?+'K*PϾS7ނ f^pzK!YeL$|oa|q䯃RX8,Ou*3Ob윻hZҭ0gWv]#'dZV*\ +[cDlg.& q ;o-x^[TM3/]j3z1+ tw_Qz]hKu v6|r}c`dSFz׬)]rDlgM.ۺPVl`͋Jp@o٬sZ3ht;yJaݕJ֙-Zq-յFƉ6i{# SmO351>hk3zU=B +1vR^$>۞:Ͷd[uj5,U MV!: WcGv= M!Z{VÐ-mK.+sbWUج2FrDŧ̋zbucSf?e[~=CY^ExmfܕEDrI`z'ZhE6M,-BcT7JŭWg Oq˷}[?4b֦Q#~ +뷼_/e%dTYoI7A}n#36ˑlJGoV$)x Oq.u}k.@]ͣ:jkJzUK-p@uԘXYn1UVh F ķOIy~,`,s$SȮ#%ӨqRV;qehl$z'mE6ZWSE u$5W*+E^յnZhj۶ǝ}/Yؙub \gm q&;ԾWN>kF.`@㭑͂B/]lOêZzĀ{!>R㖱>'?gQ6 +]ke%P}ru12 9 g0zoP]CզUlEJ(28iͳw'+m|GXǨ;7La7QI $FU{Vv2ܽ2 U5YT{u߈ν&X[%S I=ԃIlƠ h J>  :_Ca~6TUV2b}vߟ˶|SUvbi0H9PK~ҴeEt 'GR}gֲTd PInFYXh{|yc)BR)Ⱥ]=:ݾ''etڑkwD53N #{R<orf6Xdㆩ޻@ +IPA[}r}iDDJkr)O*I]JDDDDDDDDDDN3gVZVE^.¹fN1q>bQv2fS.]!>u*m·>14gՕC rBT!#H]zUIJĆj9eN.G$WOLٌٔ2T=gB <猾wB\sV(-n?.euJ2.ͦ{}SD܁k@ w<~ZJWU6ݰAb[J5ӨòUaڰ{ֻ^&'BwTqoU6?ԙ]^1?G;*ʔ +b\hvve(rނb=>:vu`yrּo0q[WKT/e:'[PudV7P\L6@-˵U3F :L:un6UܨAwH'G1r#QV>GޯEPݶvI#=thꙶ>Z,g:lb{붿l u.;>x###kuMme lKvvfnj,?O5Nџ5ly9UY" Vљ]Bq dۮ)Wr v߉^EBީmLxޅ5{@o+>OO"]r%l*>O ++zc:^`21e5"n͵dh9_&r%{Y-ZsmX3*ڴPb?678ߟiYK8{t ØgeJ군nwhw>fz_QFp +h.Zֻ}w%zyY=2]75ud[}n})]cV#r-x/?ՅS2Yc]m@;ҟrFJ@ƴ0cꐤd yG*cgבq*! +$p_Cu5|q޼nEt^#YlWqlozz4Ր볱x/oeA'r3zx Yl3k-:fjwg]Ŭ:,hlպn_[Ë&]7MH+X |G]mi邎 +řlnݕ=6>} hNv1ee!vn;! +9orC :m udcrk˯۩ޏt^6F;lEm k2K`u+߰[y\hvhmNW@&ͧ`:]̶„} TTX]FKuwFSrMr.,rmx)9uoz, ZףŎ˹|lz"SǨw?/'Wئ D*rADT>`^.- +X2zN3T?m{b2,6qnٵ@nvۼĨ]c`- ])=O+1h554p*33:^^%՜{2bwOon_@k*k aQ[lX÷sefK]^ZUWGqN +xFmF-!kT@nuab=gEUFQYYK-jWzʱT*6l6;';@]Kr0يe=@uwE.z߇D=&T-Йח+1uކJ_`aoε/|W԰w#]a׼\,Q:X:}}ƌ1/p{Bk AWg/ct̺l!]jGܴ8N3 +fk|PG#hu2uF6=bXܴ=e#CK[EoHaBA~-i:kRmwzrT[ v21[+%,m !~ CPua0:R=o]x-U7cH +VELfʾ%qa~F'c߶:e9_- ֽ.4\`W>{Z݊f2WjFut$Eʝ[{ɮ-VT|x0~$ӻeH4G,'r:LƨT>dU%ndtD&N?" K1~"̳QIqNmW9`@FDu:6`,j/;TISaX_Ru[50EQ)!yWQxɃ`p^0˿i%FUfcUxIdSG쥼:?gzйqޛ)i|\pw6ޡE]l@В A'p7QR%G^ oR&Ԭȁ}OK <gk'&:X*('pB8p~F[ЍFQFRMtL{4=U^*E/mu~B5;՛b ǝNQ|NӃaa^>]|A>35FQJUu +,ǹy%U>{x`) ȳYٹ;hhla1Ѝ Xj5DjxY6WB*׋rWPe;m;f —5Q +bD01R٫cءlƲc_&.uy6fnC(VYc$0^=;fKص}I(Ψ6=?'trUdl yJ' I'@G]L^ԫҞ+Ml{ܡp<~wPؠH㿙ԺMoEURTIUV!GIrCF_m{}U7әznIǹ\5]8+ŀ/qkzˏ!o[S N(-GGGGz?IQGitnoTv!8Ʋ诂ioB*ZTU7% +lx32ާzqJOLss߀4|{P;f +6N7=z=y4/%ョΏN=E >5l@NZԳ$7K^VJ 7>-֘lguRpy7g0>3 +pj5-6 +v;3r3(!-m/@_R|va-,E1/PZ[HZ +:g/(r632 + RIl=ei%v[‍] ?_s>_Pij-wVPrH^"1.(_[YK: +%l]ܕ똔tdV(Ece`?7nfQ+UXt/]YFpd<\Ʒc6g*)`1ZI+T)>eu^=74T= WJt=[+qjz6ce>z>9Ft :u ZjWm;=;w$ȭgk/O  X{=ocFc4Eh{FQ*eI@‰Ctrjd֗XvYA$fgfbV,w,t΁FgOH2'΃.|)ވ]_A\,ZNl70XW<@;=羑ӝvQked҅7@S1='ωs'qDeV18JGrG*Q>! +4 l.0:~5cun;E$ `?@Iat,: +. +8vInv8b`UAU}LWJ*ɂ&{Շ3˾͗W}Y 2= +8r Ʒ TmcPbKo{PΫug` vlw|Mn_;Ӳ+6y{P&5,kYyjl$!g+Zc0N[>vr[,Xvljl0.KO"Öwvb3^zj m*4Ŝ@*|ptdWN+~/Aakz89EDIBǓ̼'lΈm+’ob_qjT\z}S).Ŵd28/U9Te(z5&ŜH>/'dttb$ƮGO$dk_n.㥍i'fbķ'ƻkS?ZS}"|D _ZAsڸƚ2(zó;==F=31q hx +Hr3^BQK%v+MnVq(ցgOɣgdU6RMu&|I:j\/~WZTU^Uch_#.]?'ژ5gV] +٦*bыUIԡU,޴[ܕC +K.mwОp:%CPhJ5X+-Zt~^GνYig&QgrЕ̨n\Ov~FzoM븎\(bǐQT0v3TtwKGX}W'_OmI~1Vt{e{gVYK 9Q}@Ggrv:&e/kҮer}>[UO\5GU, +S}0N9)k,Upo/nJ[Dbz )o݌9}[U] Uxs$9vQ4;^ChXtV +,}=t= +_̼mzLng䳎 mj:%]Kt-BF5T8+a`]J3oH( +9-dp[ۿio,g.B+b3/my^Xٸ׍F*/$ͪT}5 3hܬ&t[l>9c 7_Xpd'd;m}f:E5ٓQs[lT=Y7Sv=Uc|T^!FmI&:)uv/%j| J, N GUAǰ]K$׫qTk|L.2Mu)+jj(t>YmKVG逦ʀC݀7ptI.\,WR#7?)㳢yk5.|N&/Mv;y%X"" "s\3勳άgPf UkGOFFf|S[a2!P:nUHwG01׍}{K#9fg>bߘ#zܷoXWcf +r }`ŇOP( ʿQ}9.)FۗaͿ2J,GnOM kgc3FtMsf +_EunOX+pŸ0 vR6%̾NkUcS˃qqxqcK@^`3pN ĝ3wf'LlNuɐY +OraGn1(:탷+̎ŵj³oa%Dމ;=|?EjYJN ~`~c\[M`91v%)Qa 葽F?ØxffewgcɈ߷xU]m^k;Zλl}4mqݢudwֻio/li/v* q:Q۸ei Zlc!FoG1o]V-O;0>tAw0]U5j\H,O|~H۾ɤe폠TGcE@m`X&Ngø߇6Us ]w=tJBwʘ+:0lvL:4[$K1$OrI1=Ym[q) Ѓ,6F9saV~NE^.>ZWvjcLcEZ K xֵ)ѓc[uA >;uw#GAkпaа ǿTY[ӻ9XY\@{|֣/ӓqGBT >e-b *$ +Y77}o'\ʩiZHjÃ)Xk|.{~MI^U*uǶ^bm2t {^FW~Š 4Gїrz6.V')*xTx A.xC+co!Hmx&NaP&ʢ#O~BJԱ +?%LƯQSkgi yx];2;hv};neVֱ`XbHކI~PE+_tlC#z{?%2{[i2zL*8du<]4|]"w]3@ k׈m ;kk{mNNM kXbc'_St~WӚ>Dz}=Rǽy#?':siz.@e>LL^^+-S`kλl7Ft ~DYP,+V;!z!+:!rlfBvϦOZڽF`Es `=&{P ӝN)njx}x7}ufb6JB/t,^ҬDB܊>:!1"s\3?ߚzvum#1U❹1 x_kG3"|5%\Dk &#XfjR+A(EQ:x~Ф4VQOlԶ;0^ 6za_nh\L7!h,kl[Vt ʈIgRŦաl:P~;'ca]WZ cGƁ=27<%̪J 6=ɏWU[ʓ2"""""""cuҪ7+@@,w_G[2q=DĬDD+$=*/@eaA}AJDD}!{]QGbGr{O{cun̛,3v>LDX@(\aG,<̘o=o-}uRDDDDSUNէ6 +W|y; sG}&^_VXڬ}=.ͻuue5fUy +IΌ]3kwz:VgWF'mmٷz?CNGM?毱WOU/N Yp -o̊륺(irF=|wy+Zݓ։W`%XVo4?˪N(]1q׻k.\ +:vUvUMC+Zp?Is1`mCl5̮ g[3Z=D(Ir]{+ORɱwMU`Xk`bާFK]7]6ǹGqÐ篯Q~v>*ED~$ws + WXk9sS=Ivl~^է ܝW'@oMuZT ˙`_^GtzlGS`|(fQgYzrw\̾n65?J|3+JN6] +j% Pj@#]<2*x\%g.K*:'G&u6`Ԗ}Vw5V%{h{⿈"&˂(,ܛG]n> F1F&hp)C/q=bL e ~Wo ǿ6v`!ծSGrV[VPf'TNAWUknǾ6Iz]v5k.sM>ʀ] :k+eG(H $c}` ChVK~HbfќlW_;?C2zHF?75O5(/@əAC_M 3{>csgBmi$=htlw~$l}|K8},ͩڷPXR]@|H߈7c]KT[/ {8J#KSbaR+{*{+*1ygfP3: qC5lP2H U1Ŷխ6m,R~z1p򭫮uZrlAn +O`5':?TN.U*y2]D#/**lfc6L{*ʴ%gkA`J@P/ʱ))USc*",(H 2zXy7ڣe<юywU-v~ߴ]YlSMy"V0ghq'b{eUΓaPVm7^~~V+=H75Z*97r;2'Z"ي7rU+8a_mnXHX) تqgaoLHe߈}8#SNv#͕VBz6b6'Rմ64iY?fd&),ķsk#޽}VF.&:#؉fMxtB'g~C>j9B|N`[ʻ ";Nʥwz]W/SZ ^>#tγ+h-_c{'A#G6-bԁ+ȕ@bX+w45+nXهb YIEt ( ղ/Lk}dKm ]lƫ Zp|kUXʕe; ]v]eu`_)r1tUmBܫyhc.'TޭMtW=# yG4:zhZHTz:?]M鑊דa.q,_1fuǠdW +qa]E++]Y, eeq-:+emb!^aH !v-Ym)~3(%i/ IrFW0*Z-TtAƿIwUve7Ueqn,ޛ ڃaferU=Qr;)$οj%JR_$6gO{ks =sN56~T @g5=C7ZQλK׎Aw,b|Dxw ++؏[X.l9x}w/fƠP} +G%VGEڸƷKb+7]kI[:;2sEc򭞳0KtZdQ~59-_.++g=2>_,aG4׀}L{7~PËH>5܉m1# ztݝVpb+Sw;"qH޽p SX[*A]u~bDu?X mJEn o xe7[[!\̿Zk^fbFUJӔʴ -ɗB翙s3>'Pc5ԻS\{FxeYv-xp";;ۼWgH~ML=].:j5՞zΣ] ׼fM5u8Գ6Qro1FVNN"f;'-آNμkܵAiVea>{+XlU}%_*Jl;GuEYvi[f=qo֋ZQ}'Xֶo;jSSom8FR3o/3gRI?A5Oo{`?бX׫qpF7mE>{Ȭn}n+/b%HEVYв%44~+tLᲠz\g~UX?ừX٘{qϩYw3p:OLpeWStF};}:Ue]+z]bH􋿧u4tlߊz ,SPdNmEM`WS:V@Bxr:6_ ZojU~g% >DDDD ;|f"@dkZۼkn/4Xi +6jEZXU' S:J|wLAwb5$3{?Sd^nmY7 Cc+pTjGqA }OWYr*m7%=5n:b~n~Y .Zڥ}p]%8ϮǶ=tޓFmt[HvBuPmtģdXib^Mޛoqc'R'QGCZa!V(^Ȭ^%_R#fY,ijC?;d_r6g@O쑉Դj=h q+KgF5/'>vhoZ:)Sf}~,KE!ubMn_\T_0'ίOAU:>$?z +7Tu;:g?E55ym v2>4L{ݸ(|-UOue/Z.޼bet~V'fjdwH(:LSeidz"+E 3!"N}ɞ:OKqjjL::$ypkONmƪk+`Hgۼ6@Euc毒PĹb FRl~3[,|Kpt6Pr+Tw g+OT4 TǥXsqɏaRP9G%R` (ߟ޵~V5unMU {8uL[UmI]IcX޾asʿ`[H5 +Edl?)߱.*g&"0uZ)My g'rEv_>wp4yecV@kqE'H 0r:M5mXIHZ ;}zL=1qmK9t"g?+; 'a[%rE[װ=qrrѱk@ jRO-p| ;^lt`!S~~-JS{A=຿W]Z]5hl/b號}Y7 ]@zClwMr6=>gC$~5cWA g{DncZޖU7٥"e#v9)eG8גk! Zd"qSCȒtq%fiYYV]܂;/E4k00!U7k簝vS>'detƽ>]2+VՀCIG h9:>urJʮ{mδ\ rMC$ qo~}^?WP#<ڀ{x.&V+6EW<n 37k^⒞\X|s%$:йlҷ1 m,q?.ѺEkBطg*پm{y=6֊U)eȆCd|CNmf E-bXC\}0y 2n 6#ى>J7trjj5 `ޥgGo>11M՚:g`*'?*uOt?bK,Ÿ->gI@r"T: +mCUuB{vf \x{T]y]玩SW~܆&4s+):ODvkN9Ӣ][X͌i@5xI}ֱ*rX=`gtHߍ]z2if{l_J*8@G.Dh'~wWO4NoyM~:7Sf +X*A_H&M^,-V;Ue,kzT];1zuFQnCYi+–:c^$WW"ƶ]҄ oCsO}/׫+KVLoEJ̉_y45/uVq љ}WM{lgR+;37? t4>O}LiKk>^nw},_Uyr%emoR*V5ggכGC/pO6{IqŹie)[6ֽR/"|g.FEG +Чg0ޠ+7ћtdjGv7)Q/n#B|!D8£cC@+Etd>\L\L|N:b;@@מMFB5+)ЍЕ0e4JjYLupא}KVR5j5c@FhFj4#R1:Lx=?LBh/$$j5+Jj5YB$fD97䋬fRUx(+5翼#B4#R/Kڑm8:7pN}2zNL;͎@ dn5FQJ9XStH:ay >uO/ qH#r㏴nVSqe7+ k0K;rP5ypR66On}'U1kɧ|\ e?pFzFF:ǣ&VqCgξ(>Osu,,lP+rp (:=RߒsV`2Wqd>7S=Z|.0m3$lkș3''&l=ءy6_c}Lqn7XV^ȃJ]ICDqd_O<} cqdVcٙ]wWA?=^ɮGHL/U ym\{kԕnVSq؍ncu,1첊M(!cۓvY~,#GCcξqX4f6W_j2/5N7=hIA?e=*|esZ)Ggzz\@Lٱ +ZoJrK1$Ή;nzںQHbH><~2+n-VPtu`ye["\n5n'A@'2鳭 M5gPk~Բm#%Դ~j{PW1:M3@^@mI=aڔ_Ώ즛qqzO^{א O[Wa䃰.w2p?&h,h*w_M agy y}7}Wĵk+=Ǚ!=Wb\ԣ`bvpe6m#{%٘pʮ_!{rOo{2j镻87YPW Q$ST_1~ucYlpUδ= h;YϨ}6,M5;|QAYuʻާ'(/LT&ԑ3svUzJ]4[lUv!H'|L.O߭ T֬@=@=qp1:ˑEW\ 9fvugc~3Q,Ae֣We|tBMk/wmlzKnUFhְR <=Uiֵ aK4[C.gQv(NGR %Y=P:Ʀ̇jwG+G5=y 4=fe~4^%Vc&f.;.\{\ru)btP@=v🇨@ҦR8Tކ.vv+q#rN[n.gIŷ+91)-g'5:&1b:R:JENz+gNu*.f 66&.~EZ,cs)Z{<7dWNeRl6+zegvGiYu:A^#f,\?. vYWԿ4SL*7?L@̛uKهvo_yCf w)YU=Vab,A^=؃#n^W^/$ՐrnNԭjZۊ3#i  ^;wE ,]Y:qr/`Fd{ 9E^JA +4Ic$бOʈ ~mI2-͋ըg8&;"5qؙNV>CF^%q/vxy+pJ۾ec)*]ަآCa =mX]Wdme${vďlc甫Դ +R5eI +}L}T2p/-ir9.k)2:rhû 9S`b6q%}q$u^UZ9AֶS%~gT > Z?2^'Cw<*֟:jq9,Wb܎C/ AzOHG‰~jxWchÎ zQ[|l.ŽFT(x~}ojSѕ1~>AXWaz?R<.:ճ_:W`$ly#ke=JխHIP/=GzA\7z難eo?8Ym_ԩbTb}ֽV윇*D7@tW%,4fOC=Xܺ–`+d0deLޱ҆}kq̴58EJK +yucF uisp憰5#um?YsUbZ5 ɮy:Xw~yQpIc{}Jђ`m5Xk +R^@iGuK:9Mޥf>Rcu +.Wf--poخvU ~Id-9dcb\Ŷ^mKa,DDDDDDDDD͖ +x؟ %ONEl?ㅕR b6lR# *5JM_v?L|uf`Af|;o}΃^55"(0݆G푟2n͙ؔr-NҲ!spV_gv $ :#1]3 "󦬷MүoLMmL% }gLJ_e. +x_3x-uc 2O;Uosĸjr/8QY LڒRrw +mB~&$G+[f +v`wՃİ==˹g]W[ +pfǨ:?Y+fWEOPYBR8yu{{%Mk?HV;=TUNי~F!w U΀ w.s8 }^mߒ<'_= ՏOxjG&ao۴WCç1.q0'Gz$"""""G^z"ё0aHЉ^҇F1ǭ* + +ܶ:*s狭KD. /c-b5FF=K,⫭oiwYC*ۖȎ+v%C1ܟ"65!uqE׎\8DPy$=[}ZPʼw)*HiOբSekujےN%Nvw3-:*Xol.k51 (tԓ?11j먩En;(f;^f+ؘ/U;kP9\@'gOmIZiZ+Zh*;}ySJ*?GΏ֤]Ĵ;;LΝxPJCԒ}=ɘkRh0e#stgrht{BWCx3J^'31,~f6wH|NMzgFBwWSc|3^Vq {vOvԹۨ6;E]4\)R8h mzs|t=2Cq!~%>r9qk?0*!ct>Ne9λtC>)=1AkL@u&x3#0[a{o]e? +{|߾3t8bjK4y].*V*oߴJޙ97ETEN^HTr#}v\1A[+6XsSŏ|x.5kZ ?&]e#YV- +~Lz~3ߨ P*pB T'tr)|o-'hl [*;x2qCvFE kE^CLuZ48zqBm#+ ME^ ++& c0hFZzɹ.aC-ՂQd[пXm>.qcTkԊ-eFQga݈1f7BAO缎 kV`k0m ;ӾN~jkz R:׍IWtH=ƶ>N?ëo6f\z +}# +T?"][#{<WZRy5JU[?s z2_VJXZ]]H`|hx!_X~Jte@VfKZ+Ȳ;`Ju.h $^OD-8׾=)*G!c̫4qJ]aPiUVu]b=b4;?pw-U]C;R8*YT`}jzk[GM(]t7;^%3-fډbq'~d!N% +eQu7_ W44~xcڷ,W?SC.(5*{9e`_m(mkvڵ0j0R9O\'p7wC ](LnVZů6 0?C9bI4TNʈIoĘ_r{ EA>ws3泥V~t mX:2% ůmRVu*m{15X-d!!=sŶJ :o̳=RnUbɉ@A&auZ:ܔ6p22 ;0{)1˲bZ +)=i1/tcdSceܽ1ŴFl2SruFűze;DQ/DHޣKr9-f!m[ܑcr PYsmxU'"4 zlJRÑ | 9ɃFpR{.2^u +}XgTRY*{̬J:#d9l5Ÿ ̠mk^I9{ws,tޥGU_Ő.ʕ;RU #S*'uK1I'y$zPđZYvX+@l'RB"""""""""""""""""""nB߆sRW%G r (rnKdTVȮPuoocsctݚSLrrKOH;>R_Ŀ rQ'iXf6!-'U-?VXV}=XpJG gdL:WS8K WE#lw߶+˄-l`kZΝ52ebє⽏^$s?]uί M[V`ԝQ|9g] _+L}?&p֗aȐ;)$ķgN6A1b~A5χ:WOJPӏ-@~~cUuǨur<K}7Tl'r$e>t}Ƕ'7b< ~7(ZA>ݻw nk_dd{d%\Nf_&Wb܅h)]qw%f_YSnVr=geŵɧȴR.S#*N㾽>z&WZ^ޒJBd} Sf>6bX*媭.حv8 +h32޷Շƥ5 miyq6b'|| 6n6~Wpwڐ@ w/d} ++N6rK!t,8nbm7bAb^ `kmc]m߆˧:ْ1B,.SC;~GSĶq|[Ukc`p@~lh|Ӄz?Dگ[rBe cZ]Gfdu#̖ ~t6B:ޔod&==V<4wڡ^'>A'is4~%5oKɿk qrULum^H?$(?SP.W N9M#JzVn/P+J%^BV+f+QQ݁Q2OnBV)D=f쿙/3:YTjWى-@noO\t$R%betNzV'&XIcGY +BTjUUcwcoOOO3?d 80b0G~F#:']Ul7?S)N޷6H?eוw SQ|eM=Wڕɂͬ{5;'3?,-ЍLs_t[ƠRPۭ? wPKUq{~GW)pѪB+i*[ ֻ3z}dP}~d 4v=K6>EXxUiHt,z^γdtu]ivد̡w˱G^DGyW7%鞮)h~i3~=9 +Ԏ(m~""""""""""""""""" (fk#4ac}ŚHvoNmԩDI4}}Ote]Y6Uڻ +EvSddtYUVUmH@ad#@Ω_Q-hf(YP06)a5y'oJ|<*^k+(, +}fv..e}bŪmg$ܻV\s+ z s,5mh'DjIc} +@6Ub|F":gQHA#zG5;dy&='W5~eՉV30bw ~nfHgzVlv]Fb}ԧF}O&åUd*x-up 6Ic\wf\#XZȾh`EGm͎k7=^z({Wʯ)Xjvc%α~.-T.̦"*Wg.b6}2#U)jkޱ%ag:v]yfaa-q-R]\ʌA w)ӗ!zU]®,Y jT?]def"+>GV^C|9^^E6ªknsRay}%x4t5[Ǐnrxw:Mtz3r@H5 s㷍̜\^sj>B ]{1Gژf#uZ*22, ^h5@çkd\\OHdas 2)-y0.Δ؅=i9etb/7($w~'#cd|N5Se|!8ȓ}ԣ0ur3z?ZU2YylCsXyxG4d^m׮w̯SǺn.J\Od'Gic'#bYEP(O>z]9W:1XUe<_ԨWW vf _ӕ59,sj-u 1z/ 2vطVbYhv cc˜oV-6T %Գ^&Nv=5claEUW`sy[x2Y3zxu[:9G>foøWt`~*[D,J!渮7TWԨꔥ鲰BF!)bԏ>e(VխXUU,C;1Q@Q1r}6cPP2ev;m} Kbߎ؀9)]VDUϢz]>醭.e!it9k +z.^>eqP ٘y3Mqz ?4c||_YM S6 dLKY\u!B$ol ]}K_b_2Rڨv# 3/9AKǤ#Xh{ Lij+=<) *>ڞ>;c.CVU]iXG[>ߧ1zVSKUR:l!7 =0v|l}J~ +Hm5} ߃1qRebxojHJDDDDDDDDDDDDDDDD0:Yr/[ k̈_^?P1lKb8|Z>'8AHB6G"KJDL Zmɭl{96f|LhlƏ[Zxri)+1pY_/ޮzےζ;2RVRVR%b"""""""""""""yz*AA25~WSį w4Z5T"ZUP)XIX ?2am<~'̙ݔ-7_Yb""""""""""""""""""""""""" >=z7쾢WP*cm˖"{l=ZWFe^@ vN9F_^u gTǭ,vRK|F^+-9k>BKe_@Ub-lA` -mN7Z5a@;K=[/3/3ҦF+'({=VZliʦac5 STʻV[D}Af5-"(shnR3gLz//UsXM6-w~:N/[t0A">"6t"۫jCqv$hHνOG;*yQ!WPW;ky~v_E\Ed)Y¤4vAK//e!²=" Ql=0 \YKSP׺T;-k-i3Ӻ V+ҁvjF`{kW̊2sT\ \deRofVoB^ UٝqVBi;~uL鿃}!q\jKW%OߏWM Ju +5|k!5*>v:=,|^up]fQZƊϙ+3q3_OzTɦ{rWqU>ƴW$LkrleRsAߝx(`gG_%1~WlIUDA$kmn]x)־=r, ǽ-Qi4XCa%q+g?7 ݇ik1ڊ4Yn$@=%ΐ8=V1 G:V>}P*Pm۹y6=Voך0a,6AŘ?٬܋v*G {TKI7&VI-Bp@XhXf:52^Sza8'g-tW;Y;l t9w@ՋEF3TCJKzDF @]NVlr$OKr)cVUp5u;K}Woƹn=9Yonx9zěJpT!%NħOK/^f X]y۬Ȼ-ێj~ GTlDR|?_W2+KVk_gdy~kَ F?t>W-ħ&nG}$OQ +[ly#صQ^Ec:_k)-[ \O34;EeN7_pֵ)b'YHc{K;:n:Q_6I,NaܞðQ)JġP|Rv*?>^ #o2sŽ<㿧_geiUA~l7ܙ=ؙX&nƾfEc:1KZ'`oBȧ$ BL$2+i_IDDDDDDDDDDDDDDDDK?YY:۷c)wKg^3+-WE>*]옟_gQc}5eMVRۿ׏u߾ùYMXIll(,X.e2Z"""""""""""""""""y֥.$.(z:V[LXyg^E-ʻ2>}g#`9ka؊v$s[p<>;LKl+ `"b_1؆vmP;.P,uUē2_%mVcic36 f]'AA=&[_Ejof/@#zKnB"0 ]ܻ7uKENPQ[Ggd wu.:vN-Morpy: ;Җ'_} 1uaɉcbm?{ + +Afe(@hlZ̑[Ҥ`_J)?e$?l!zn@_Pv-~PVbIIUH }S7\rU詅uY9:gJ'g_]lFR?d2C+ FE?KꜴSѫ=nxˇEt'TS 2jdѰ?#MFq%J, +|7ǫ`JQvV cېV$oisCtη9W=4T j;ybLy/,UáG6 kگ{T~&'!Hx:D k(ͬw|vdJgb5eּO27jHeb?AH+t,F[k¡! SҨdKlu FEt}^嘨n~;w'gW`+gRPd_I?3&t,@Q:[J#{%q>Rߔoμz}}3+ĝIQEmun #ʒ5q!qEcEA !l[#dfODDy^(KE1#h㳽@GɋxbcY9mL|(Y}}[)jj +7`]g#9*5ޛWrY#q ߴWgf׿WekE߀IvIّ_wak +6IO݆]UNT{mldDDDDDDDDDDDDDDDDDDDDDD@ܬD2)ܬDDDDDDD+)+)X:-Y m:+֯Nt8ů' +_vUeV,SKxK)Ur9: > uRuuy;O9]W ]z#3u}@[*VKx {AVGYcd-V*V1?7 OiְlR5>:Cs_adb-~jUw÷@*4,7'mnMё^JEHaG%Uun'JtfLķo_2xz{>C[ﶧQnB!D'z6=o=fщձS@9*P )4?i꼊VttAxq:/P,1K +` 3G]͠XűQVf[CaD'Sz++!cCgcc_^O9_զWmiK~;}Ź7a}20^DZ[.D`AfʦVE T,<u k=@V}=ө<#xlYS0UW֦GL$UwB`nvw2Q6 +}j@^kȑ܍o{oPơv]ZBKn#}|N6FԆGoysz<\뾶cIם{@u~]ZB kuV6{o_~cǭܻ*\ 4Xۼ?+'lO^lY9o +f6'\[XP5Yzjc)#~;(y?FMY(,Ն)O?Rs]W#XtOi1OT[oY,wOyY+U~@[?q{=u lEb%X6ķ󝫢ݗʫGOYO|Nfg3||V +>kRH#;ctj ,uujSZNC;ߍL^h}nኂH] =ľ_ 8̀!?_w#;BQ60RuD|+nCg-YΕcFj:vKcVK{v/u{TVqP`7y\ާӂr==y[.=#"˫Zξr'6 ^ŭnxP}gyL^̔_]d+ xi+8KDcD~fEY*@c0ȭU4aVޭE+[n;o{cP̶]Z^L v ü&mhlRuHavY7z+kn{}3tTȮn3:yz1=) |I*JW}R3k΁uoF,~?l l|ȹ+zo^tn\lVX؂<5_y:MRqEy+Z+$9 R#Vڈln(?A&y8.K5L)5.gdu,D+_^c%^b=:f%@ڀ5 w)_[s~!L~[s' +Ra\^eǧٴUZ] EaFJig #/fP@]lS*ު5Aks[k.A +u_[ϼw,*YQPr8QdgŘn&6K~+GeoJאܢG ,$'&;xS£(\-ȪQÐ&o\6I,`zJNa׉rv. f3!06Uʒ7xO>,p+_ԙ`Π`Df5,e܅5Tl }lt,ٕUefM%B.Ë6YюC ޡm#" xy#֪u +)]f$V] ]9vEv=%(9&6v5XtL5e{;󹔣)$Hã/--q>}lC5zhZ/Euϼe\*dvrκ-zUfb7v;csLu/KĊ9yivt1jP5wd+[!w _Q +l9b9[{Z{HtfŊ@5 ]k'/G}  &xPy/g%oVuL@obm~)n|HqA 6Aܿԗ GVe&ZOR+X759 fH$ѻɟ;uu {r(M\Wew!`w컘-4td.'m΋W?^aD]tް*ebA#5ŬP0=-?|]zO GPawVl`-EUMԚu2X`{?_I3@7 ߇S˖{nl ܉3mW5Mt:5w#5Nmh63# +_O 6MY醱x>Acuхi8me ,6U`3rgZz}uTJo~ڔ?G4PQ9O7%ӺQOPyYĩ}l~fgAf֧}kR9ek[ߴ?&;f* 3q^To>e>4t,jq0z;>51^ +|jT蹹,CnEX_=ATknC8e-zSRE`q[zK?ƕzO|A>{{In{@<NNQ"f $hBl!^g6dԨޘ6~!?i],G"T}PKF ў.-#f 31׏dIo}~2>/\ٲ0>ڑ,;A r9MNe/,ua^آ""" Җ,;RF:#c-ͮL׍}{KVt{oLMWm/Ib҈XFlaaXB#0 緁%1&q/J:2zf6cfP@c>F}ȮBh< H>NEUz؆P~/]~:>V*q[ݱPS;ܕXҫwMyr.㼚;1p(OU ĝ4A>u<<[RTokMSL51mX޹/P6.z8#^zלG?|JL'{)yoaanFzކL0SGObUZ՛ZjVXyIiQaPvJǾhndEîͶ^1[MYJB6[\b֕}B +mvpCnx9PZ`9 {?7q /į6=јΝWӆrNoRL$9Bgg̻jKѫpYJ>#DL<~hB/s{hRx_Aΰu!ZC ұzbUkJkoW'fTX(6ARVu`x mT^<#N=U(l 쑽l#:tL;^iTwE_SAT6!{+, #) 7=弞]u][{ଠ'>&qSm@^*% 뷍{J#,%1z^. Rskǝד[z˗bBm޷=^zm` {JWȂ.׼NrǿclZձ+W`J=d1:^{0MҭqbP5ۿ<խMYE;U* +~ΑkJ@X>G0l]J}}=_d)<~?Kt[;,6ٽW +)VB=2_1z2bޏ}ץ y+Ib]xzQR9`Wac]DDQ u- 7"ݷǑk[9 =ŗT kEd$:Hc25FKdž:xֽ|9Ӕ8\:݌x\?e@b͢ʬe?$8KEw>G% 7=MƲ5Hj +v@p:-؏.=``d+ȁ{I.M!@m{os} ^A[&@>M@JzZlYX4~bI?wt|<&TإHo}'^uU䊗>__?鿧ĵBʴeuGv</etl҆k@=7M{ԡkNT`|&""""}s f 3qcZ3i<DDJnV""""""""""""""""""""""""""⾣f>;SZq睎+r}igcj#d|*߿9EAp >GHDDcjYd +]kJof pj3}cO%`ڰ#w*b"""""""""""""""""""""""" X( JDDDDDDDDDDDDDDD6>mB0 uԌxx/Z֏W*JfϸzOsm;fEf=6HH2WWxSaא'~LL7Oi 6(ד +qEO{#>ީb'BWJٗȝ:N'HBQ/1#fm+ tJ1J'."Sr)X&{(oo31YS~&F^HVvRX\Y~<~a3uc +rRk)Jߣ>f_ٯz]if-K%b~r^""""""""""""""Pz5 jX8$w؂'JsjnPl~`{>Y;;HP іGIUk`RgEap8N܂VGq+2.r꺅KDnf 7TFPwj̚$:e셮ܫUIɕ: 2RϦL>U;ў8Rח&'J|~5﹐a(lQSbzo]9Ͷ]W5jE,t7Cs2~ul>v6WuW-S-n@sѼ|F^gG>~.)K9VvS__|s:Fe9%Z* {=oEu;&'Z LDDDDDDDDDDDDDH:_O޽:,a:3h lZG"X]MNüҧdPbG}DԿoQS0z`"u`>a?os2:V7P L&ωK3g4]l~]Ϟ}6rŷct$Y0T#=7]hWUu7 uua%=ƆhM(%XʪOP G?% +``26X[BA|fqe1CE,?75@ fVRРћQ;5ޞ/nUe[mv7,Qflɾ#c]ݫwT>ӵC+v 3\:J7.UWgd\-~a?Y=DDDDDDDDDDDDDDDDDDD77SF512GxL(ɥ,v9(:OW(+RA_,~+f><mL興L^:kɥ߽h$2aV*LA}LEu0qR,!ֿ.Iď2o@fˑmJkڻ|6?`wOX(5g9ZM +4UGrCC_q#2|uN[Xc7|ic7^A*D~D(F:v6+sѵ*ym(Fw`I$;LԾ#S{s+e[zIw^Av(̼S[w5ZILȈ|޼:u{ذtduڬ (P^Sٸ*x:fjsMcX?79` _mV""""""""""""""""""""""""")< z/~|߯Ж.<'XYƘ%j5;x s`QȀ9hr~u.DDDDDDDDDDDDDDDDDDDDDDDDDD)XIXܬDDDDJnV"""SzX'Q+(Nb""" 3`8ݻo['aR$LWgZbyK7߷}uK(Nd~{iM s\ Rf xFQ %|25Xăq\ŵC#v 'ohe#3[X+ :bLi ت['ם *M60;{,$ gcrڮW\=K6jc}8.ZvuU;ܝJ۝O_Pu]}pqKrjR o/eәXe qqzmow 9vu>zRΏ}Jը. +O`w0:؝7#.ٹz O˝G-m\f6CYRx0wV>[}C |:>O'O/հrֶ:Id\|zJX D,0ɑ4m}~=W5;UTӰaG,޸oܻv~>=UUY-@FrzX.ly5;\(']ρfrV qo<<\UA PEeui\ ob+a%kXV%_׊}lt|VZ`U؝ö|YV֍O}}7/MxN+X-a!P@\N`u%:H,l#lh}7 ͖*](PI$4;]cۋ]oAq̱1>u$3z7N@jNfg+_Pƶĭj>!C]k J[!<˙]OUQ|65=?<O/.y,WtӱyX7/uJR+ky99wr 4rtŷSI߈k W^дk3@cgR!A 5x3xտ\H+޵ܟɡrz|]J;י^zkYE t+?A峯=PWGLU*aE$4H$2_[;V؂ R?ht<ńj ͕=N@ jùe5i}JR&!,` 3 ^Ҙ.-wck,vmulߧY@)sftʓ nr>B`_X~F_[]y#vEcvlm {GhmMqi've^cVT9ߜ=kr7#.\޽c؋_HH`=ܧQ'vZ-QQ 9Z,6Zκlq,(`lt{xcgZPd܁@@7ב4UQ3c~&qy: +qwG˿}}/x8&-,OZeCHϿĺ?Ja7#XX{vO (G*j6#l{bFϟm͓ Zc;ȷ i^-vsCv<$hVexBZr.f;9~V =W?nހ0^7vԾ?H?s,]YlAY!$[[hh+;6Ԟj@w mQoor|<,$Prp(_z߿S3'5h#S덟IyH:)矔`vUQɒnV}3~ +u7Q H8gt~ +i(}n_ЎԯE[v̈́_VgXPziULb#L%zS l~uR8;MfK:]/sR+z}*IJ#)635K|Al kǺ6ξymWnNuVx(r* ˿7ij[| +uhln!1QQ5r ~f.U5b|/=.0;ɬs%O?rq(JGQ#K_Ngo@r_=C]a+-뷛OuJFCQއJ|-S?Έ>zCke +D>mS|x=3zBƪGv1(FHE<m_+)r38O,\8Lj-Qc(c@?:Z/7o,tΝoR8M5дŖ4v\Iٛ?ꌔ_K_7Ź_r+UFhHuS_Awaw'/yF--ti 2QC*eeֹ6zdڈQ^ʩ$'ksu+οW[^Kq0>"Wג"$ ]5d*.%U +K~?)3z(-6iuFU4u.c^>9/B/뼊[*P*#-;k]&sn3k!לk=C)k"+u:x 덃^餷]><֜aH?DW/ٿi|N/m)O=aKᮐ ^Y$w45]ԀL?[K^xc_?u:uY75ۭu?0)[>.޾=*^JO]y ̌ίh=M#?t۰U7%^2@N4Yt^D-İ'yUrur2r6z6 J5O?6)n'b" }ҥ+։*4׶_rx/GkZoB1oMB x~5zF'Pek lh{阸,E5_\ ]%õl+ 7Ğv'_TT-|,Kn}(lSMyu10)ƮrKc6QcԜ=2^5Doʼnfc$/eaQ/l]aGbXYE +Q‚;4c׌]jTh +ګ[1Ӣ` c״-͟Я`31mn;;rfR<.kd}WKltw{, hsL5vgXlU8HoP @;c=^5jZ!׈wc~аRH e(G%; aк}!6e=0(ϯӽ?PGp~[yEv*~Ue zxխwVW^F۱StEz#;}QN xI;_٩7n9zMX^:s~]U~aﶻn>16AOXOP1!9]q/z'ptb׋Rum{fF&>,Bg.]Ey(ء RA]Wđij6bHaVsdWB-Ig +f+2 K>}w]{oǴEPZA#W4RT//^gNaUv~ə1*XX%G6ߐ[ɞn."2SMhJ;yoa;YE(H>a &|Qz +UǬ ;X IU( +tZ>WGέ+uO*+(”G;W`~ǫ"8)M'XJ[}A(KFe)*Ez3DBƻcrr0C5sdU};ɼge*ͭxk]0,B3:bt}Sr~vaz>"PF'"蟾+1zS}A;*}6}La@P +ֵk0ޝZՕ,Jֽ Xkde^PB[ƫ.]XwVrMSy'I2OvNWcKbvԝTJO؏0,i1_ 4JOKu|9i*bUaWJͩit]qRCCC_NJ +Q[P5۶ћұzҶ;gcHSıLUZz^ +Tr- hoS:֥ +@v`uB5j[Q>9/0%O.+2󣭍)pcǮFE 봱ϗv}tJSkBO~Y$}4=³93^Aܠ|ynt$} K,=[(RŶOq_6˰ܽӱb q>h*-kAM;-Zl' YQ~5m((,H1{c2+$Oar12z4bjcDwo˘]_q*b\޶;Ln@{멇z]9ꭕ/mAɛbu ++u F&DDDDnm<]lJ͕  3"""RV"%̓YVk[ Z?11WP[X|l0ؖeWϫlWGk*a_ժ̧ ܮQ[fD@++qւ={R @C|#NT:VCjm80O,|:\ @˰MY/2JmVwǺ2};atͨRw>9rnǿr)|VU|ޙRJ'gVyɢ֭V]4ùW}=6j& Jضpf;:*wiyzRMJ~\.ay ￧3zU ۍy'hNJueuj+ &Tl Bs#1 EytUR\R5oȋ +n>("ˉ>a~tJst]v&1ƺj\&]śs7+UJjVىtcיk3fTͪ>1-~@,9@VbWD#zGGȴ"bRE?͠6!qَdTw*#Ui{"n #KGV~]uxޭv7w;=XӋjy3g +=)l:Yj?1Uu_Sh;r>cBG-oCzy /ǧ-{;îPk<1(w0f(g`fPǫ"u Bau;oRV:R鏝ë~[[+rXPyM_I#*-6Z-*Z~gF-~Tk6J.XoΈؑ]sv>?zޡlr&mωrCp@ j7=՗daYgWQePX&wcnun(cݍ̎d؍4@m6OkK,D8@ɬ3؞]u^£d5d:BwZg.ܜ _tnfվʰKʤw;3ꙸ7a=,afVuba?s:f +E+ k;bA=ζ3^_˗5Zo VưWe_!Bh.OK˦d'[Mr@A_ꎷ7WK}6]?,~bz˽kbYO2@߉OMHj;5@č,kKVFS"Abu/>iW[ lY;k˗u+Z.erUJmvS P鉦MG|oyg ږfRװUNSv8Yǩ-:{Nv sۙ`5!?Vm!- wkZmHh )Y_O0cY\;}ohΧefYR +ǡF۫U#Z;H]3+^m\w~-?Fû?qaUkcD.v^dE.<>z)32q){KY:{b|UѲzt +[jȪ屘V;)'cIEꨥtUE{UkƦ/8yS +LœI#o|.T!Y!{xo6JU[>unV*J߉mHf'TnTb/j=/]}NϞ^^#/1 V/5*XC.Գp0qVǷ݃L(#S'ǼnW]ɕ鵵UثǚGb;w2:VUn=|v(Vhmk}JO32*m3 +\`Χs_)rhT[0>B,tGx] umgvV߈aFΏU7lZӏ{[iʷN*3bgs ()'.<|>4҉xex̐x6u,;걫gQV*Fr^zljbՑhnv%ȣ=ܒwhs,QKQJMB_RŽMeO:nWYc*BwૢO%բruP vt? //+*V\{V&8} sv1iSOZ}@zy߾u%+8lB*@okďiNJcV,^~I?N"}'ߘ3* 5e<^T iH;>^{y_ֿL@fjuv?#d}xeSWZ`* w\蘹91.TJ̀yUnφ髄եe6[qXEԖC'+^ʇж,bPG}ԍ#݉EvnXlvcPVC$뗝iEsz}tWv JA2:vy溓nʬvO-B[db/r +Ժrwiq.,,XyuTj + ixWdt<Ǩ]VMwA,*ߑ߱LPv}=\u>RX(P=l~cN^+Ӳ:Pʯ\dӨg, k߇*|,jElj6u=OuVksVjK%P򯲺 N6sХێx/ e Ԙ/|jk-ȭdh ÷my{̻)1^e!ߖńW$:fNe rֱj[em՞'[g V >fOY8>֕XZ;BC}\6/2v~f,~8\>=Jl_"W!I۷x"9gMcߟi\Э-kޣ5;jH#5-tvnAT K|9W +8{&buE6cURmٛeu|y;}y}4|u+z5m0*aRnqr* +r$ :{̽DDDDJ2jyU@Oq2xU{l; ?S-dcח[UjF2"`kUYk=CDxZܓ :{TCbg rװ=cЖq`W`TZh̏-oRDDDDDH쎅cY+f;oJ*|l` N~+vII$$ÖA)[<̧_`؊< V51 ~/&2Br""%%b""_2@qdۙE +QA:O|mj/R%K:$lohX0]yr7dۍ:rV뭭*TAK ޵ԪخHV u-Qѵ,t6JԖ:PXyߴeZbdsj2[(AX1r7a;ԬpcV~E( T ('Iu@Yy$ 挊YSC)VnU؀?*[z <.U.,70'՗%#QlCXx-c}[n +IH6&EY^+ԑ];e‹6v|d2-ՓU7VtX׃Ua:mC~ڗ(t``#K002.ĽV}6+98R +{:2x LC +n7"!#7짾ktem[_BGqiU[gPZ=v_7T*uʦg_ v6m2iF/Ca$vb;Z| G$lcv@׶fmkWTȲ.VWM[]IK=lR1'C`غ<~fe̩R}Izx6) lva"wu gL=|{ Pm{r]31oӎTjA8L n^F&%c]eQR)hamF%CGgV^v[ _wLHU];+;7+ܷW}M"鳃Ŕ+˱gb^O/rYON-\RSR3vuaQZg fM5-3LMNHBO}8L;jZhmlugKcE}^jWcיeY8?VY]nU6zōv:r6{$ t~6} J𧖻>qjyj+s>Bt:k(ۂyvow'~eο}\pS[?S]$~#7yC~6R;vak=4~%+ Ժhbc.s J#yuz"6{s1 + <U-\lwmD#i`f=k{W1[v"_z']U+ ++Kϋpkc>uNFEoSleO]F?M|W0cQ՟7˥?t&xe{=NXՊYaCT۱~ ި 6k[0r/aCBS8aꩬe߼L}jh]K;7)zxURz۱U`yf?̢d![:M.jqWn $XT, zs\.Ж㕯P2 w=lO@ŧt=–VWex25]]z:suz̪NpˣU%(*&hū l46c :s'ZuΏ,W}y-oO tkzFt?YӺFFgLºŨo9g~oj_:N|Mddv[P k.YN__zUlW'^yT뾫oT{N{۫Nui]+AbO[ ̀U$G$q3:N_vLomy888=uWEq-fl@Qr;6:U-Е_Ts;k;(FC\%8<58?ukǫXؖAլws)޽l4ь)[قv.vat<0GL^][Yd,kW:aݵu1V:(`q,-,Q}jZy +/RJGȾzYޏ]=|![~e-==ROJ[-QZ`~S5lSbt.vߑUw|IoNF>b^PR7.w#߰]V-&bJ[;exX?붰sJWx1z5Ydohz+@$&9Pn-y:7 M +y.n?zUF].iu>m eӃPH6هq=_uC4QZBUn! {kzSƺ|j +⤐?l1ۃk^.oH߸&G5`ywC]abmXOy&ËIbߘ/70A׫-cPn2K}W}l +⽻{̾jWT3EG$k~U ,g(wƹ\o ~%:Jv7%xyz\Xkqլ՘V{A_RΎ.7~_ T|AԳ)C׋hmA*{?Ofmy Z(~nv=t>H|)F/uKiCl$W{^aߺ8| W;s4ߋ>?۾S]3z>7X]ܻ@ 3>n|td=bKp 3{[۴ηѥv?_ua?y#+f!_aɻ_ Wt{Oێ6nBG·g# +#A+8(ɫ +h'JG#T'H붦/GbĞ~ hsnONg֥o00ԪYgͿ$sipkPFMA$G)NEXt7zu:v@?c6>Ҙ]7МSgak{}5`X"7ghݫCZ*/t~QS7՚!Gn{t)J1$1>K1'L X+Be*YB(O5)֍~@X蝵1U۰:=>P ,t=;$ܒ|-.tԽ)πg: 뾄W+&B(qe~A39@ַħ:4`a]Rj5 +;ƃ:reŬYum*"Qe7ԟheGJQPx }H|SֺqQitrݍ wIZ[lK~f:-&F.8JJ %혓ܓ)F-[ZkZ7A׍ȉ0Te6V&kmiY3+Y0Hp<A۷ys+5-. *64t˚+ [Hx}ˈ-nRR A Op[Vu"!{ve.:^"keGpȈ(d^GĘz]fPQQ[{{2-RzPI$}s-`gLw[hׂ&DDJnV%71:T=䪽X!Y&:Pt{lȉhjm"l1n{9lQk!pʃn_jVF/Yͣ[lT68D@o^.hFvޔl?6Lz[2qoGDx%ObDʉnu]UbԟL=[8X8o:<(X/}JDs/r[\3~At\vA\ D<`Nɕ+107P{Ը[+)#`y ˉGOվŭ9(Clẗ'F(bXj ~^Fz ;u"soUOs?@h*HNCם Ʋ 2b""""U)LYjԥIٚWz⎦H 7uyxiK2uY?qkt[Ǎ{ͦCuoFCbWɬ"}"ޮUɞ-fނ*'Cǃ$u"1zOTk*5X Vk:P{g}!zY; +5Vpo`;~J50z,7WcTvF]o~aa|Ms023F5KfCp:H=kHu`ï2bs3u+o,tש2J66v;9Ku%NnXr o(^NF"cmF.!wI 꺖=Y4fl3:et~znE+v?/m8"@eb1 v3Vʮ9"LJב {K# r׎6Se6a￷i)z}c boG[SpF]fvcZw +O?Xegt5"YJ@oמ?g]M)kvm;TH`÷f yu8ɏ]f1gf_U+/k?dgպexQBsf]@u޹fk(yt'~kGC)Ժ^Qq}6rZ9r.w;w3]FJl@̤dt.= xy/Eb˫JϨye ;؟hk hm?)%Cknr1i4Ν}۴W;b +]:TG:Uw| U*[v#L~8H-Kq[$oGJf 8WA"+oE}]Gco:US]L^V:y[ay3 :}OB1U=lmlx kȇc +xe[^\y˂@Nx1Ӂ] +m{ʁrb{ Y% +U.ʫE7#X R̐}ynDr2Z@Cm* +$;X;6ĭ=|.^l /qfGI꙽Dc,W6_!MIK9<-N@?Mg잣2BA Zy厯fR^x*'?2կM5qk,7s5{q'w״,\r}&kkwbɴA$>$:O'nlVb.+9LvKk:㯼7=:Hǫ ٱZr>$[χp&mW]lB~f@'R_r0Z8=l~KHRʟEg6N]kMt@A]s2AuFXΊ^eJ5`oP7 d?IOSw*ꬔԍ8֤ZcfJ]]xW Y}w' fYPf ˂ +IEB6l$wyc'~f%tCn˫~ݎ㞻wß +V ngĝ[zsuZ%T~GʽdG_#O0=9bBמIGA!OZѿtտa'e?kPfT=C&@bB8c>)`6-]7$ڑ!>#geb Zur,7#Zlx%" (fԱo:'jȬH-Z` 禎NwZʪMUY[3cN'HhԪl>kdfu \n3))U(%r^5Ҵy0PN}̆.9)ojUZjb }'/9OZkX9ϲ6:'Ŀfe6UꥋR`lxc#ff1~D{EK!@8Ŋ&q$#qظ#$XaV;1PA?++kdy}=5o:p +ȔXݻ*li${~ :Nnc02|ČwS]}nz鹴Sd*6C3OMZzk\jmJ5 @ sis{@Pgyhxyot>[q_Yӹn̂ +oc~eFV +QHeY}+B@@fRDlrމ敏M8~RIJZ`BTk˝M32:NɯP.k>zpʟ:t*=BΞ2얺 [.>doP#`3fK+Evi?ON6VX5m76KY;}l:Jc.F~u +ӱrio»Q6b{oX93?fYn[Vgp}97:լ^uz.|wǶnoYǾܞU,⇴cV=Iq:ظ(jk**QFmty~M6t[d?7-Է`u.QJ--%GO~]7ޓE>\d/Ү3dOca7k. Gl&Ժr ??b}ws:^Vs{ż0up[Av.\zNڊxj}Fsv=6@ +7:+eCTj)U!NԓېoZu \i}=.Z$&IOT:%VgFRvGncu<>fOHM8Z֫VQ{;̊ie)rnLBHOA`7D˫V kzJOMf l~{98}2Yymlm*K _cA +2z?PZ#xeH~f)AT~TZubx'G':!b]Dd}P6 +5$&Ұ}@lTW`b.Dlk̻K"g sTՐIFv$H̿WEF{-nQ]9r;M]^]Hc_Lo$~|[GGG]_I-tKtJŀ +J?r82[nr¸ંWzbxfI6\rѴS6Sh4 20AWQ|mL,.vn/ZOit5%D!G? w#q>ͻd|TqoC}2; z5 ֪f6+ڕ$;vc89+{1#Ks`w!?ѭ=Jzbͻ~Jz7ŤPXAfz :SwM/*ZFQ!ֽ~0W!+w JRA#N3'^u~ly߰F^=^u Pezٖ\c2e;:BꮥY_ e'[׼CjDڻ^Ʒ } l]]|=bh51/5ݷ~-f#a>DucaL!ǍlGW}})w'6{_M`b)+Ȓ%Fv^%aX=bS#0ody:66RuK~N“紏/?Q6]VE;ּ˹;.Bަ-v=Dr)X;_Q:ElT, 9Z3#/%sI*,:IF}3>]I~3SU$ُ*7FR; +wOAIu*ޱ,]6 J F##Ku<^J5m6&<D2@#*0ib{$ftt +_ +cU}y_,R]j N7QNWcIT~J̪l:ˀۊ{>ݷ2mO! zOR. r*WEgD-3u^h`l6u7=0*{nZlI'Lʔ lDJnV%6 <Ď/;'P+T{ͼ O[;xn -oUiC1z_R8VeĒe߉ST*桹 wo0%8m+v0P!8G| K;'u#N{*g].U{ ;OIpw+ tY[S9yo;1z^> W :O{RNߺPؐR*uu߿+[^2i5ƥevRH:'߶?L=.EƼ+85$r:rg|AP_TN¶]߶wfu\u:&(I:'湳SǼb +hjWth4 e6 +(&|X8h[%WI9<>a]77(d8٘[v_զ$l虪?fOj6tklUٓОw;f:@7ZBV_cdq3mmWE\A#E?z?&eW}Y/J;D%@'j=!.ϻ>@RB 'Ga)%췝322z[la}XTBmZ¤^84^GT)%Cߎ]ۯǤjUUY6M{{wɺ}Ljld+lk͠GF긽H\,IcIn6?~6e^˒=z6@=@ؖaq䯎ے&bsi}xɎpיĞ.7@uYwMUl[u׾U#߷_Y{婯"J!ཋ 4t÷#QoU`gJ5ȼR?#[cagakSvrܧ"6 +q׋]U{v{<NW6U=cQISw=eK't>R۫Eg{5mUNǗmO]18[\# \A~cuJo ךVffTR;I?]#2uom_X2S'zHDw*;2gl\\^j}*WnJC.uArc녯ΕF,|}̵FoQt"Y:X)1'?%,.[l5ܘ5,U\Oޛu?6UM +!E@TTO$SeŽ?37c!`<{[:wM!1˶J_ɼ"\Mj(iQןMshCy(QKv6}&D})qrn;nno+X_}}ǿiwJ~$r@Zآ;lܞK8lqݏk|mAA>f,eYuKk~|fXk߷GW]RjltU4/7/bvU$GRm͏E(nÔۏnjx+bx>a7>.[Rԫak +i\RGaٓ]$~#' 5*d` l}ԕ?o׺oqpNl$~}Jɽ1kN*EQWo=Ӳ.ȭ/snV34a45$$vOCpS*KVm~eUX =bIIcI&^#S}nK=mXA>V_A?y"+$LV bX4Hd;SZɋwuJZRA  +:o3>`gtJsm=Jo;{Kw|;}iSUÑh=3ط rPwį7/K|ޭԲh[֮_t2rV#arSܱcbOrߝXUe^k;\ ;2t*|eV%RUxZROyLq{Zŵ3~f[zVX<@:-|7Fj6G{$|oh)G`ƫ%䲐܁V#M}ܮv%a[672݇Jd|?FBcv-몮xc <'8l491fboa U}U~rM['xS኱h(-MaWh}=_^3)EGnW򆱹?A$].[+e:tu~Yn·v8e%CE\@mS׋oYux2B +~ s$doQ4+g-0ǗfҐWdv2}Vs_TŋiBCk! oOcDa^g7Y-g᜸gmmν}^Pũ+k:b;4fv&%X%4DAQ t!˜ix}]irhnt=?,93C[ٙXU`W493I$|e64fOx3"p17+_sߴJ x>ԡm{-jr5~|kdBI_QwZ:E*+>s/bY1ŘI̙ WzY%^G??*Pe OmWmԽ[랔(`hm[5SZrڱ64t{?6~бj5zi ͯ ~_m>eq-xZm+&Ɖ^þlXϣT.DZlBX_V*G"dDDDul\1kkt }Ȫ٭OĹNaT;G%+6 ϟ^G)A3DLleU[bkRtXy6߉:m UV*WԹpsӣ!zc:({Kf4خy~"'b*7·18&3ڂD,=CWz實LDK9YUQFS2Ƨ ^̾TDDJ3'#bVr"1Y$z>-J[,,63""""PPI=R[V G{c3-p6:PSjz$('̠CA{""" ?YF+ +5;'HOtL?"2QIgՒS[SUEܹx'^ϒp*}UP|ON}6_N+U#j&Tǹݟ.-lBw ˷m6ۋ}!/J}UEػ#aʮ{q0fu1F>2\zx7{PJkoY7B:HeAWO;۷6j2͵j`;s?oMb3]e[cT,HQ'Ԓ#G]ǝLnpqnFPVz1o[Jc%ᏽ[|"ӦڝJ췵ZVSBCq_s^Wl8*?-?':R^ײVG]/>cau{[,TwF/[.'DT`q}'#'#"mnW"U(C[l=kjn~;@"N](dc#ʺ?msO-jp(uva- Ys, ?|Ҏ.:+%+uec>;UnXyp+#U MwSY̶ʤUpZ_ԭ|Nr322)>3b*CJCNh|X}Xhifb$X4yp#d6)Lv2lTVGQ`YF؁z:eՉG+qb7NZp;Z#}2W7U,u^דȯh"U؉[se.. יQsԁZg#{'w<־*]f]( ot8{2"7=|*tYC h]5'4* 6 +*{NK]'& exBA$hy-ukzU,t :}d-?>񬺎4:6+mBW.Bp}NՐP@/tήsƲNv8 Hu6 *-n[Y|+QW[QR*۴Adί3u'I]c@^\; įZȤ;l9 Ty>=e9FŮqWezߚұ*-}_½K7;{1Q2Ao[W<;>'ɥp,{1:ĥq6OGdL˺ͧ&\|scJXܘ֭|U[u濠pFc"P oMQW݀߈C}n~)J ?_2]8ŭ(̳+X~`u4fR)7vD/}2x G빌*:eKZ Vx9#P~{+to*O&'¶*Ƴ6e;٬i0$܎]Y$z@ rpǷnM?)x]?6 7#G_Gk)uȃuTr5 JǙg3~_CX6>_ZʰX@O}\яM< +sP@#܂~Kn5SRZؼ =NouO>Vo]+?"Nw$UI}̐`G7U]%jgQ#[= ~_YnFn/XY P?Py\V;8ʱUU] (m}vOgsdc9G  B=ƶF5߈,W+ha\r:E7bl`kd]?cdUV UAz3l_uRz,k JG OrOQJK2X*,BN; _[!SŃXY*6e`w))ZVߕD(Xҝ;I8 >W|j,}&_GC#G='## +r6F^,z5Ue +h;qdSќՍEwA_*ijہy)k}*Ԓ=LwPnmXyEiϮvRvߛj/NË&Q9{*Bv9e[F>&EknR5fUR>In ~U>+/`tZ|os:~ _C%T&Mo_0c>FU'zT.lV%dOQ>55N#FS~|KWlt;޴672zEw~0d +VӼ̢ψz UӉk\ճ?6G51+tx(L[أEj{u{Ұ1V5V5)]ڟ]w㾶kE`^Hhs +ߛ:YiظeH'mKc:Xʪ[v)^BlmnFtON9-ZV^Um{r׍<;5Y6(:և*2Ǻ|Cg!g{w>wTZL;Or,l]rs΋-L\ +26ג9~ }w-h4@!~),󩹸|Lj8TNN-U+j2bЉY])Ǯ!,:鑍ɩ베Cr_33 $ o$ w8ޓz|/=|njV`bZdQvIuoP?|̀`ZY1U7zhjg׿ftXuE~2R~ݻɎcWiTg>iPm#Zbj +ׅk}e|G-)>ևc!]c\⼏UjMXw]7bMl6RAbUp?Y7WN޶EOZ8BVQ+a{˝Ӈӫɢ/`i8 ^>F7;a +X{ k +k6m8/tNcXhݕG/M +g,ecwQu;b)j|mž{^Һ /OކMkYc4CWdWU֦|ZOd>H'z,ezr@\ +~R}7;;.]߈MW^I'd)ӞzQZJ7HoEX>c]NEwSeLr-[[lf^yv>@fujԡ7T,b UCj3hKl.*'f͎!\uk=377#WM7ȴBø?1o' n72dPIN×ek:S YC @Gi);#;]BT`f]ziJnN6zuuR]$kK)[{wX!PI'ysպKU`q1R95ۿ]37jҳ&SJ=oUGbHv;#ՍPum!kk(kqa +OgbTcܝO]dߋml*;goͺ@e#D~Q_oV[a^\Qdmc{m=9/`֊X@.r?!~5}&J3?'ڲ kkfM"^v@hܜ[myZ; w؞Y=IM kK6FκM5\ޖV=i6UBFX nN hņGε`?7UXAbXcG{s% ly:5],JcXy/,Ga!35&_h}2F_Udȶ]Y5TtǹހW۫*cRƷ ܮՇ)GFYxY[v菸#DpD26ZgзPv$<?gVg%&HR%rko6%æˬ:DFf?@d^mm<;|@NOR_0_{Y-[hlK79z r;e>Ue?pA*"a|.WzgĨn#dl܏β'v+#h ﭅`DDDDQG{M2=΄:]'q6dgᷬ[0o6w1_:[;U=ǂ:Y޻M{de}-qt'hEN{e|1oP]e2oC|Ȭvװ<|cLuYn:/AÍӲ.[^UNT7 w~MҺn=nkV~Gzw]be&VFrqfk5:#vX A_O4X.Ƴ)VV޶fRq'x]W[V5cuiTv +M}G%/Z=:%t*k9A>> zu{:xȳ%W 2'@zsrn.132.³@>kRƫ&BZ[葿ȉ8aA;5_]IDuȯ2CZU[.^7♿eȢK J'Bp\Kޝh [}ƏY^kf>ST UcQ&w%@;%(e1^ijU6_M|{^}&M/2jgۀ3T*jy.۲k,o37>[K2H1m}eѭP`fQ`oQ7}r7/:iQj.wVR V^i#!լeA6O;-+! Ш:ܔ5ڊ|} ~tSwb:hFJNGQ|{)L>: ¶ҩ*cy2C 4@}G]8f,?{ ə +6{ ּE]vu*}!_ Y{dy ~|P_B DU=U-W\'*v`|{?KL?r=:vn& }l@)7bHT +Y X8[X=^@WFlI^95]'`mh:*ߊs&ԩY@<qvdMǿ+rr,WfVCc(vO`-;׉jc)ƫVԽPx2j @Ž͏?P58`OobefNeyt)1+[,.z~7gEAWdffOM{i/zVTv~eO3ԬDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@͕Q FMJ(`A ҨPh,| =ǝ~ߤu;;yTeb'R.r>N{+*,Tkg~RK2 zbPJDDDD~=yHkVQjuJkK};V-[R]o^F *@ ABi҆g)PvFȈB@+(HPI:ܬD'>-o-}u=Ħ+6 `V""""""% l  tz;hToȚÖ;.}e6cj7@fW˓dUZ1^@+O%?87Z g674>[ :-^V*FXyR=_k~<̊Ir iA'!ij6cUeJ~`S-~Fr/UuNJvO富Y2ej`J*{&ORln}wXz|:q峢Ae*:oSˍh9X|6;rNSU{ чFSGq -y]'5vE#D,kηl7堟S_-e|6*TYl 1MI;q::&= i6W{1I g]߰)1275+@9?O aZ賑z͉`YX .\ľiKw밚wM4;5Y躛,fʻ}5ieu\+e̋.= O2=Z%| ::qx2➯3acǴz[5A>c.'LM)Bgb|2C/bޘ1[,Vd^ yB4HyWʊԥmI؏c$e^l#>7FDZv2NEk`Pt c.}R3 $GU=?S\7ǗD1 ^f'*WGtf9Z:؈We +2:%N;~vcP:P[n|c[]|,OTSXR}Gp5$hVw!UTIw$O\Ǵ4.:WK z4e>Mu-Xq|5XW @3=]kslj!RIsֿ*@ǩҧ$lOY?q_7p+Z#}?QԑAF*̧࣡5,.5綉}TU D{l21VoV..*6?nZ K?ԃ|V]J:S}V|ԩ+(RwOCvt1#*T"B=F6(nj8:> +F=ޖq=+?GL,P:c [ɵ쪫pr8X,/,$kc_I%бh-^XXUxt4?}L/2zcT[{he͠< J!Gb(NȎ۞Nu V?}-ovԱUjܛqԍ2SիcH>S>7YJf!5O]J?F~2]*vv| o_x][6f?r\rmש`ӇbYb3*5aV'Vë^kWQߨЅ؁-ڡ龙)@?(י#3~#KԺQu)WQ]F}YԔ$8#l ܘItQۀIGCbZq̊ZXmx=C싚:2mD{h0 +F'Z4,}'o9(u y39޻Ǥu +览V#AQ}wMwY5N8k] 1Um 9FE7'Wʽq#b]}lB[VNK1s3wO/Bʙ5]QG;#fu>ֺQtOHj=`*s΋qoMVcg{`}x2̤|MØ_z{":N ?>}.-=< Eh +`2Ic2rq0:K?zZ}jza6~oPVkBL0.AZz7m9&Ŋ.Kd4V1ڵ9pUpx}ce[ԯ%k1}6WFnµ*fOp$T/(x^To֬rj(" {1!H; ѓ9G,_8NIବZ[r(7N|.׭rSkyym,$5.qҎbM7B FeӏXX>*{05ލ`ם2WUmS~ +%w!N<ʖu`9)xޥkuSi}VN  a܎ۓîܙtVR\1+*'f^f8" ƪk :Izu?ZUiЭYXB0C KOEg'_K0,_PSig7#v%ڣ6mG)v#εٺ5ɑo3iſ㞮w좷@zt~]eSX-zl^58?]@|T[wں3$W++ Ʃ^CεbՃXz @vMȦ~8+,ןGrSUwT06^N 3uz> 5wjHuX لUz`[KP~][zS%a[/3eq׺_'_>T h:R~ 9oマiq_+)j +j1eF*Ovut%``Gq51-?\)J?]7YdnRŠld-koDoۼǦEs@iNkD"gu*"z/7}sYkţc{Q oMtU~|[W/j;$K[dZ7dYY>GVc9̾AdnbȈ;:Zī!QEh5~? ngElҖ=U @yԐʫuZoµ\^`Uߒ>A J*Õ}D6W ŗq{d2f_()$#6 +Ҁ*\Or{ L<OU-ˎ!mlǗf~>GAM>CYdž$wcsγ&1H+ EMǸ>HC5UKw@+ZݘW 7*|1үi`՞`sh|gƹT}IB9Z1pkM*`Gc䟦^*-˝;*q==P&Ζȕv?J(QTpFq>nXo5j!ڷnDY_i͝m`wxbWG})+<=jG=Jġ2`5<7:qJZ"S{@Pz7QSTC  #ODnyZY֬]힢xz@?EA=<@1E/5$6~HiN{R8(U FU4J8[VR`%jg:=LBՕRʠNk*=57x5DYC-J 0 }y=LQn7|L[;e%0pt$uNΔhl ޝr_#9ҵ3Vbyc=k].]ei'#L NIʱ͖b${B""x*`'[ sC| *իH^67M`݉[~,_J|;̌ +,6:;O="8Y>yq|k|$Fo @? 4eUB Y瀎" +5+ԬDD7O{־|fi@݄B(D~$l:9~U?EP( nüή׮fG`[*46]LKl$eV؆5G>&}V-Ȯ2A ԳM|]T; v_}os%O \5]fv∺͢t6@ $71y9'ޛbMRtYYIV=Q12-J$NJ۟a2dg_-б5RP"d[VqMvjX“Z7;2"% JΞ"r? !؃o(fON͊EHx{_Iy2zՁd}66?.ķ +&vnOt=.CPwD}6%Ȑ['YV7 +J&g{:V!FdD.K iv{3+bcu$ȿR ̅Q-NK2+6`2b"""""""""""""""""""""]!YE&ʱ?ܽ]uV1 5t܎eR.Qȥ箉~5UYrh^j2  7^}4bɵa=&0,6o.[n=O eCb>PVmCh:/K YP=!a3u\:֪+,Ml?)+w^V露fWM߽ʑu?[K^5+ ;?$*|G1ܢpE="x 6f{rW*o ;2g?6^JYBBZ#yNfOYEEx*!/`PXlLpSe[}*!kn@ކ寇R,gE浱 a Y!GDԺeuZ +V>pW{`=ב%sY:55},W#l1(>kZIYoe@٘lnNlM]WLX掿U~'n8䃯-UgUXu*#cJ[ցP_9rCi56!UXZ >G|=fX¼iǢl j6n^bk )P֗~ Ɓ: OsdaUn]~ˢt|rzNպ}IoW!^+eՃk`wVQv$-oUj9d}&QWfga-% -8}?SeY}V.=X f`A1K`geM:]`<.V!BzޏiztZk;Z(>?Hвz^.Bވ֋ME%X;}jv)V4IkгΫ!?XvV9 Y$^g@Gr+@K)N'D?csKbJpn1d*ߟͿ>C9}2̆_s\`?( 1:5fe\dֈP+rUXc˷F9*1F(NB7.?( _ypm]骮FF'V-K#RfF~ 3+.`,F>wS\Gİ-պ+2y2293#UeZ3ZR +Qؖ=ϾhK?+{+fD[eUK/#۾H?,N2 ZdP3h$-̩܅@iV3cMʲz,VUak2 ž͉c8w;=ȈM +P7߈a-}gXlmR#cT%;઼΀>6u.K6y%[`Cv`w^+0:Uex+eUS&'l6)D;emCT>OeT`8+l~RI13zno[:v4|?B ij[}Bjqym^ kC]뎽VM\"]r|Gl3% N62a(OS|xLC"W'ЬPVܜl%Ajecu|l7S2d+0>;w~0aH= ~O'I\LͬZ$ddn_?ԗ""""'qZc$L[ +uZȳEyiGHyӭ>"?zaN(lkZP1Ly2b^NG [ 2OqgTqg6Bm:+^]ImLC+]2,`<=VgcA'߰EVȮ2v> ,ٗMN+{X mxޏ}}eN ?ɯ9F'@}22ɬi9 ߉:˱"%°t+C! |}5ߝ^U-J5o]~lWL,nz`S`B)3~ʷURƻO6kH?ԗzTi NӏMTrZ&X-cs}$DDDFOQ9kY J׍PGݛ]~-jk]o:ګrZ;Hܒt%Ucbmv Fy^EP.mTNu'<[^k[Q+ȵigA󀼶uĒŊx BV[Ʃ +4 D3\WL쇪SƲ̜TlC n[ h͞`6C}jT'[UJ{='c&ydcy. L~]k oG_7 }ׁr2ۈ8%cbd !g-%l5f֡Y'I?zOX5Ҋn.J0[p)鳯Lga}MS3mwF(G}xT^#(*wl;CMtWMڗ^ֱ93nFkZ"Ż XC|;f)i *lv$}"kTa'k)#)]˃p.'o]\.oHv>P6ϟ>&Õë ]-( cV# gFܻqT CV BO4孰ǿ&XSհ7[XP6 ^E)s29SmO'TEG +nk'H|1:Uwvb ~4zoLN8- }HWe䐔Ȏ|z?BT|^aݕӨ{i#׷%)C7R$Xq'׀o_lpG2udj+5U|ǐ$l=;RM@j@ב-u\ޟWr Vf~P 4yv3} K+T^@%Umd49~főBVձ:e =x?Ȏ?/ "8?[s)qr:6]xEgm[莉EtR jE!tuC׷"?$RG?Sj q>2"""""""""""" `Z#- ]7/gTb'@m`ɹX^ֹ;y?`;=2"""""""""`u,'ɣ^[=kdo@@Lȩ#Ҩ 䵃_#I+(@2~ ]K{Gb:{&]eT*QCfIVs#:Q)>Ev?a"]r+ĩ")fbt2G[^W_|J@#7'WeΫK}ȈlņL?u[-W/ao2/ngɷԧX]e<@"HןEy7$lK/W~=[x)MNYc*~M c׳?*F'|Fo^](GuF""xաUI$ "+2l|{G^HřOϫЙ#؂==ɉ_jw +c=k~Zg3sSbBR@ +Ck:2"""""""""""""t~Kc:\l~R &?n~S?;yA'~VI,j讚-hQGp%"zWNn: 96U߽Lo^$_C5>E}c^Z [0bo%W9$z[}6LDDDDDDJnƾMN9WʚZ8Oy9Eb3rjo,ՉRc]NԠw +x:l>*`O;,seGsZL#,Vr +Ă(׎ĒNxYoƚib3% b+_Wn\]v~VS2>×MdCSˊ+Yj ˂T::::ޏR?tsѫ=fԵ,Cs$;I(r|+̤1nҿqpUX'}|DDDDDDDDDDDDDDD/֩^^{0O&ܞ$V mWjǭYR+2[}ky{4%n؅l\\vT:}c ma>F{LȈ2FΔ蠓s?-Sq)ONI :}+, +lHUP>&c3^(VҰP^a{ #bMDKX5堲 z#nxT+qJ?o:L*Vwv╮6@$&>\2zޛvqBt,cg_zcVt~F)WTµRe*2=IF7-efuVd U>Yg{l#Pl dgc]΋c!A k`=WԺRՐrC`vuX63 :G"^WO긘y2ieQŪA^ hD*m] j1a|6nf%]QǩKA[_2f+Rkg;3"U{LNJ36l-UY5A :a[ԮjnK^…|@ĝ蓱s"\-Sa%ȼW>S4=ɣ#dx6VziQZhq=9gSxy([qwb_@yN{1|s2.esmƬ:)u u/ SkH8(a ~K]ZznU7;]ke=宷s҂OS\iju,<~xsUgABmKqX/}϶N6edf-9Exa V{nb|YnGg.$ T:܈B'NseUN>M5,WvMCq, +1g5Gۿ%gQdՕ# fD#w7[KO c}4["$2:K95cVil6Tu{q+m4͑m !BُXNf'P]a=^/HB]TR;b <mͯTV^\w֢L~#!3܀ [=mOu陾]S詮Ŭ=npTh%+u5֭C~xx5aԮ/J +kGG=y6uH?XkuJS*ګeRǑ=MJu.ӫ̾̅\c[+4ȪVu?i!QL[*:[ [q/ǺYYNÀ }/'3%|%(kbܺCt==|\nZ޼o}_-OaJ.Hk^ +t{o߸ߴ~V~l%ժ@GnvQ:wGrCfE5dQjkI_QOc?Y'qYMjJu>綴v&T7!mlVTͰ D$A6ukjj#mTR7<n~c-,ߗU& +lֆlN~c;[XK5$?.U;!A]vwdԱ#Zz'[&Wn\j5p,^;?)NtSzj = ۯ]{+tχ\E_D"AnD6ߟi-:O>q:&<ۊ [Cܟ e->md*/?WD(,@,>ffed|;d=d +5(ؑcGX8d֟[@@qܙ'%9Ỏʺ`|kaͺb%yVcLjDם#\r1ޞEYX}7t$> ?ʤ3gto([WRo5B*1fZ캒"V__G#6QV:ek^EnTh{l]{;%11@}7n(T*8hh{l98˫oDP\L\h4;hnñ,!UO;gd`t̜6YFmUJ+aFfuL*ՇDJ*X}E* w=Ÿ Ƨ[hl +#D"e;/93e5\u஬@xcr+\ f5א0e(u߸=f'R~!z;3|hr^]{9عuKuukcYߘׁǷJ:NWI{``kfx`O}{TV\ݛ['BAsU[ؤ>񯴔-:|H!@2;+uuL|*Uv5riB+*6tI 3 ~X)^|vAcbt,1?~]hBَ`~ft>J«K U*+*(%0_^&Ueܑxg`\v33]EpMk  o-tnӲ2rn6Ue*UI[Lޫeu* !zFoN0=Qo]PxOXnG4EΦMZe|:,|'7glEڤ+SoodnsOHu!ڃ̣>O{ǿgt]}G/V+  6 +t{x'7`dckN5uҎğ}l{OY]2dk;ӱHOv`{.afbdWmTՅ 'd+12鸸>!j ~Ay{I2l\]Sb`YsR6vpzʶUeF.(/Coe^#ccv] e^b5y,$cu0?AY sՎ9|,k|;kijA~gz]ffw* mnmۚ d'O{^}aq~`FwW/'Y%V-j<:;̷]/XZzňs؂S>YL~6k`Z#vC($x;V虝W 7wfESI˙#/3/'ը~0;:pm_(&y)Pf30N!Ww?J>_sm`/L4Rά'[b{Um|~|o/u,\|u|_[P$5`d Hקiw^r׿S^lѓiJPX&CG$_mZz"5X5 +F3z%Jnz]IQP`A<ﶥnWu{r~;zZlD%@y+/?+)ޢ,侚Mtv2M5gzmustz ]7z.bf6) <ޝ8^}BawPA+Ā~c=]2p-5Z-XYPCB#]J[zdkXWuCMV;}}̬l|1B+0y:>_MJkdƥqi (bZLLFKGf 4 ?G~##eKQȯ6;P܀ +6 o~7qzfW 4\7/kmzd-!CS}i|;_PjŽ)ۂ6Q߆oyWQ!-KRpO6?;o@ {Y=]ogʂcq##~9>XEl +*p]ɓipTZڙ(TxhorF5yKW]ǃ,atN҉$fDDDKEZMbc/DDDDDDJDDDDDDDDD@Ͽ!򬷇K^ +v~B6K 7_#&ZPBv޻~VCΙsMro-2wc& p?hZkE"\ĸǐos7s%l )C׏׷b ھoo}ÿC'UI 1sN%ykPE69bvd(###]czNf^?Tɡ+Z{عVUCO}oXLa5bDv(wWbL y +}>YP YΧRgܞ6mMmV"$yz"k :se92ADXvDB8=w3] Ain̢::zFߑ?vd)zɶřGOɌޥGN@@NbI>ts)ά[KSv;v#b|C[6C[WM+Vj~c }%nAXѝy6z5 **Oyz(9^z lpvY޳BScX[1aq>؞:&#т* +5#bdӖNrV`/Qؠ-#yԱJ֪OrruCʷTA[5Ձodg\3ClW[x˫@OK*Qwɹ yk\ ˾TkUrHJ)]6$p:7.^o״pc?ZpWgzcz Io\?E;Sy߄b|{HbB B˶?a10|KExT; rg~潙عYa=OHWPNA}]/4c[+[’#}'wy* ?MސP\ֻ=okSiOtFO} Y|E֟N_[' U|DƏ0#bo ~Xs7_d|f.xg{odQH֫c`t7SN_U* +Z%K|D-DW;Tv/FIneXYc؍hTX~{ XlVe tE H{5z 7dnl,Ow? _|5^_=:hւRޗ7rU% t{}djMuG$.y|zpV[ g)z-SƖj]Լ_9?C#>7E.S Z^W^'[=N%43h\@7$_^2woY=DazWc}F=Y|Lr|lӲGr݊9.w6rVe7 +* ];!j4 +bW?%B.?b5Xaia85׏}=?3*>JWZWΖ#FzL+¶ͷ5 Uu=0>fOSEYm\Ҷ?9P=3b"""""""""""""""""""""""""""V9ZػaZl5">!&%TQ:~=lδ B('~v@<~a@ǫDGz֎/я^2UoJ7V9Zػ(aFxbKPֵ@)pIglO/4JOKڊ+E(W۰=PhK98Tfh]ZAI\|:qPUjI$ؓ䟮nǭ9|Ҹ#QEu."""""""""""""""""""""" VUxuQP {{gj~! `ʏ;lvJcdיZSrVo]CcU񮹨KTؤ#כֿǼʖr2Ϊ$ywr+ + Ӕq/DDDDD9]=|FC^\E)?1?^u̳bsfJ1>6i߅,~kՙ앷|)l*;}&ˏ`pt{srNUXu8DQt1Vekm.mYNԏ"]+.F 6FlOr@cVrqcWJvczܱ,d&g 5gҩNǒ`o~&-v]vkRY,j]R<fwE;(@mx/DDJV 6%g,ZN$Xٴfz-K:%\o&_Uu6~aFixn܆BX?bP%ZuG[q!{d)x_}[115,=Jxm<^5ҬBrɈC!({Q A Xm53-; m<"èy!Ur+A0sǨ{V_ 3h{+Ѻ}fsٴA ='/$*m'J{HbcEѕG֫zsod2*ٖklʱc*nko\0PwLzo ;쏧i2Qj7R܎,W{AL_HQssz!1u-;َ16+2ov$?mr?;TkOkm^'&7Rϯ[nV: ]mwֿi{pt']Ŗk].]AkX'>ɰ;jGu,f.CN?2;=.ZV DzNuE'g_MVtoz=CRN;%OJb.3=hlshfau滧?h+QUV ̞S=LzMc=Eރ7eǎ]V4ud>z:LwB`\B> |.Etd,XXk#`rp^w?=5=Memv 0-K?ƣvK}91]ɏordOI\|T~o"RЊH@wMVڷVRk9ӨqrSݻNǙ3а,JFbt|3|K2K-Y[b$]Ut:I,c8ͩgs!t471~ η$l.*'6Sn?*~~ӝYak^:۸LWM6 }  <6o~Agw[zrZ2pTmOt}#.PT~\z|;f,ǎ޽ͿVn,Aٔ=? `/"?̬.y-oncʙl7dYZ};F͒""a+*UR@ѳ_Nc|FƏ4fc7xZd-:%y|}62V TQTX{zΧ2ҿ+\6:c~LJﮰ/l}>/&aCwz +v+Q]ma!|Ae=+ڬiJ:{wH-ԪfS[0bw׷u u n1̇ޕ+w?udNPv{/Uj1:xsgjYx֬C^I:&7Lʷ7-^ Yvٕm C*"VVG-~]w̳‡YrmGn]qӻYKx'{J+/L|sKv8+HS{mv`}FJʲJ?^0UAm 4 } *tt~e %1gc1&LDDDDDH~3sY;`}}7L:PWrP>9#SXa}B%A +|ezO9MU i~Hd#XyL&%ɮ+Wz^ @:N2""caUh|{L6Wc鱣Yd_]=jtHA؀{}hXW.=u{te +b4>cp:eYPԩ-_Ṛ{~R"yd tv6=O6 YNAޚ(BPk0 F$"+PORJwvbb׊zf*ln&oL:̊xۏ`WPy 0b=! `7\'$Г{wq)-b*]I;$'%IfE-;'(Tkl/Fa׀NSdN vE:,bɲA(_"eȈ5~ְj{SouE?U$ޏӮ|܎䮺'e+BHG&'dl<P$VT#aX K)$g>؎>ZEuv~8D5佈I'`xmIXF`-bdm)r0葝k?O8TɼT|َT=VY9ߛ +![qoU1UvB?FEղ::SmU_MoəX ,T@:߼12+Jű;Vs۴ˈOu5fN\Ck`D!VZ߆B +f:߀>SVxPYwG]}ȉc/2KI/`I0Ud}O&Lw5*kȭ($hly{Q^vN Uc]͔]- i26U5g[*g* +2ܹӳߨssZ%N2}Nr]v-tn׫QS4~HD]0ͭ֔fubT<#z;a~/,*NMmh;2Jx\t ߶iU~6V+bP(쇾}$DDDLZ2a#lw2edHWb'kj`Icł#C[Ih_g 5[-EәC_1#7z˚™M Y`487 G7髛؆ޅ(T`r:'sL볱bVNE V +-ymy>fXw<6x9>k22,g7(,[:OS̋[;r*F6"}|jr9)JX k6Oy+-]G]k%K`j.;v[:ϑ*5YWXtWD /eΓm=C?MU[9lhX:#> ߋѺ&-%席u*v ͭ&*SEtdW hnv`N`I~2%o :۹RٔəincWsI]ox)X&uգ u_M +Fu"h̫mk^ ?+ co{ԙͺ~ӸX/ Y_2SEenYnrtz4vPVg}l ҳZnLKqik)p2 Awdt~(}Ze +; Uڵ҃ݶKnҰ2BE xmo^;'*Ω[z]T-Gvv*P7[?aFsV \nL\sّ6+0zd]}ɑX{Wuk +Z +u|2sZ]WOcgWmڕ"WcVYkG2/%[u[8BPk0IIn~jK]y3;VՐ$7Go2+=B˽ťB +I*O>{ywaY݆,VUer|_  I}]diITr[:Ś (t1$߃KN.2_ܤ;zjHAo{z&UW=?lEm)e[Ӻ؞RnL]ǿ>CU^~=YVeZڌ <<8'%2+/(ԥE"Y`510zuq孹~J|-x8ڶ/Ce|=nO7$aqwx:׺my]WQ96.Ezɦ"$T)P'k7'l=ݐa{e&Y؆޵Iѳ\j?=|hޱ\}`60?A쏼=tQ\Xz²@H>\ܓhA đ=,Ȼ@ؠkqz_c(,;h gzcйWX`d[RF쫺#j [rUV:o=:߉бG\̻ o/[]X#&xkyW/)mar{=ױI'_j}k vtgUq`M0~vup.PĄ {1$e6>I[{}zeu>&GIOTuX\f@OQ\S HozL{3Y̋@ۆ߰/2̎OM[]ZXp'CG}2n3YbU(ZYRŋ)z?7!Lu/S5+ZB.y!#f&UkZē)Y]7 }λW"@&?15r=?Մ,v+;3V=o> n>FjRV…ED,W\]c9vgLNj]rdfq4^WTMH9W:oIHnj;n jN؞cݾQo*t|ERG,dbwm"w܍;leبYtpLO\`v#Ƒq:dH?iN?]^yc"fɱ˿mLϨK0ήۘiʢq]}ߙu,^aTf9WAIf?G9K12 qwbsUr;޼+dRɗig^G7K̤h&wPR2U[QM*8w#>(]JPs'x3{$37cӖ7%kWR6'[g^.xTӊXUQ+a/m}MlުpP'C} +/]):MqR9 +0xց'[Ed2&C>E=nμwjp$qaR\.wM""6/盜5U*4志}==3Tث͞E1fP޵ęP;jE.YsSk֕Ȥ4ߑR+MbXʬw;ΧӪc;*T醈`A1k# jfK>Nio ddl6;BC5;oU +/.>Ǿi{7|[mSAbu*}_r}&u:3Y[`:3І*^{ˈVcB(ox*«Xiuz_++H hљxWHTN@O]STƳX,'}Lt6~Aj%^4Jb tNy?O~Νv1sa,G~&8H~MDqƾa<̼^~?.SËAC l w`0,.2l'/UhBT2%u>YmFeu:'y(!K8x_ؘ-E6;VXQt(j*Ա'75$m_"ʦU=@&Ŕ f>'í~S䵇"JRYGw_N7 ͆01+^xkCm̛6;C+Qkا^}c53#r/Sب-C) L7yIqı]-AUm{jWVU ⨾xldaqq20"Uv 6h-v<|3f^6!uZW_&55c]R |0U:b0ejvQmā~5w3lC]!DU*FNcֆ̏ 5[CVCJ>Acf4x ,[6 =Pc> }'朂,N:~>Pt1M kzj̥)o'y'-I*%o=KqڳEU?>cDOt'Wr\5`]|od}>nN]Dw5E] + ~ W-iENĨv߱3}SO?tz +B@$g*ےiV4;_õבezꮴἁ>Kȋzu% EBL%e8r Weyw#+wDeەikś)]蟨Lj~L~ӓ"N.÷PJs.f|86]%UəБ]ÿ[K, K&׺v:=e%=qb-=X0kCKW;1T6:3WO/UvuqQu,;s5Uq2fA =it⣖J* +?#bC9_i~f &$ߦ_|>,Tc:R)|#12ЅTt *4Jș86;9 +rCa2.Ft`ĕ 0Gig.–;rӱf_ˮ䓽K|<$R edb X=-7Iik2m'!GP:PMy1~Okl[#i*ňQ݉ e>%`f{ֈ1^Mnk Z O`:#-CY=G| +H#ct7:.mVQBqRJk]ƹJ[ 2qX!}s'3ޓٍK(U+ġSةDO,Q::'y=}ȈpNf '@ { ⫒[R6 +A{29td3-v#:`:=dV5jm.DDDJj +6{ +*Awr9k|v9k3b"""S[+)XB|tא9VR]'R-z^ F 2{tG%Ȟx.hoZ޻P@jV"""""P;JDDDDD+wP]Vc-" KG] OyPB~bvu'H^Uj{Xj[g7v2;ȬψŲJюĚ԰c.ul 5nMIr_Zs~yNYȪ*_T#@Sҹf{cUSŘ e$ UJsRHݞ8kƦo9v`j\cۢڞ'Ga|p*aHJ1g(tCvs|&ĘhlB'׏=n-)1ơg(#7FyHz+ʽ_抃yaVv Xr}e^V]TX5*<;7UOӻBrW~1%kEJޥ }:zCmI68Pu$wPnzQec6^xZȁBFʶ_5fk'VL2!eD8vKGc'ŘYEBI>lڱoP֞65tKP~`7.!H`V9'*֪93~UQO}fwU @zXw'ҭ9CEʍͅ!PH*bT#47`6dQV=g+zePb_v+רȲ^!~qcSjC$R@$ vtd:UN6KYKbzaJ6YfdmsOހ;!ħߖqJzޅ[UOpX^>Rw1. +nYqm`{MNViTXШ OC}1txZi9%w;AJ2؂+K:il߲[)XI +r?Ij3)X{zߩN@MDDDDDDDDDDDDDD@_>5du%좖0>OZ\ k|z1ikmf,X[$DьCpޥ_ )_L\[c$wo +4ԯwj^UTX~cҁ`e;0p}AM + 5Mqg^|c$zSC9;PʅH/tۓ",]Sp_JߴWfzSJ0Gg|TzNh%E +fRPOrd[L*TK /F{gx3*ozVZOS*9q ;x-SӳF܋P6[krW[os'HdU}|5Y}a{yj^߇:S"cB!R߰͡/gu\쭋W-=@7o^fLu]fMn/J\Ա)@Ga}fauS֔zC8"֬cd<ʼnΫ(V*r0+K(8 my S1ȡ+k%#c # #bWsCIv7=teWݏ$k;.fƹT}IBӺohvN=nH^BYywP=7 e`w%:Pl~e|.uڷQv$ZlDꙷM9^ZN>y]L +W{r__XFwp]%5ۉً +z;v!C,W^3?Mm& uk1<,{k=Z)n +QﯾB[]IG[ +j96Z.mɮt qH5^' ]i_M|aeYrY]a524ؕs6( Yѕ{Ulr@<ވ_ޏi]H)63hXg5P f"b`L;zM"e Y,Ust97NUcQ?'-ke{sbv~kڃtUaRIW?p6dFmԱ:w;rk<#V[ֻL̋:OQ*N7:: :Vڞy)PcV\)oB{VΨZsXR2RFY}v5cTSVw@;'d[uJ]VQeͥtd·n}ߍ|w3XqvfdkzasT0-ʸS + +p v`v׷f:/M}`dX+U$G^Edct\],˘K}4  <85쌪.c3[B6H:םv~ +ɫU:`흗nnVmv5f3Z̫uN2[i~ևtdO7Ԫw#5•ɿ{:IND :G:OMב wԺ"|Dy*qoL2XX/-ke[~f7M˷e-{Τ*tiVGw6|=V.s_jEcrVR7DyH{1: elP9 PR䭽Gblvf퉗VubX:6G!#ΗTud,a}J}f_GVCYWUfbzm/#{B:9յň +!$ ʛ W.,v;F +wACuޛ*C 5S[ |d8cX-Ȱ\-Oa~vM/ Pu~ʹʵz6 I興#zInؾG21 uGϥYQCX('܁5+cۓCS3^L +׎Epk=OI+qx^>"%t}`Qn{QJA=<5繒cVt粅^ב&A{I ЍFR)oznV"Sz}bSC{:.GOȶ*UT<۷9/ԬDDDDDDDJqyX7e\DvJ(v:""""""""""""""0zU/+7fm(qAm;(1svJgHy5.;mw0V.6?~G'gĺ*c[6WD; &~E7"c(dwEW3/tͳZr;{}@`ACçu*QF6 Fsv({?t,#lǵy<}6~-+AT<9VeDDL,OYe6-;)G[mc(f1:c9y0pTkn*;V5r{ckʫClSY/ǂ?U=Hw}IqrroG7Щx/P/"Bfތ}%q˿绮f!OLlRK,[ݸx2*4>f^"c"7dj?^q'gO}>[Xy9<(dKA6pƹv; ~{»')[4k|U2.$s}^{}̞ȭFZh8$wV[L ,nmң =Y@z_vsrlŵ+dF`~"B |[Rjί}'w51F3ԛ3>KeY/иwP/?]o3V!Pԗ2^\{s h~Vb&NCe&R*V[ɉN>F}dczŭEa''~xoyĀH:>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 51/Tabs/S/Type/Page>> endobj 153 0 obj <>stream +HWk+\ߒdi䒅|o,@ϪRلeX[nuW:uuxu\~çu6zm?o_Uy^?r: 鳵vx8vBjpYoB^y6Sh:yd[?Ꜥ9[%- X\iS +3rʷ&vM/i]#mJ:Kb<<) %13)]ݪ `l,+A='1 IWd2^FV(h<>yvx+|P; KOJC,E#E0]k2\\ >$4 ;[) &N.u}-h\bp8G=\[5WyLĪg +™NظZ-2c\?{ Edx[,HˋnȄK1Ё[' +{{!q&kReVN/5jfD8i$bHkdX@W_\?oLJ.;_eB g*[@8kCyh1C<`0LCn2w;辝**qx|+dZB"S~SCՋ׶Yɾy^ᡞgֱR[lZx+R._C-9noc`-Nv7Mk{7mFtB6(ȧ'=+KɨNaSgSS´G,QNt P,,G7ctG \ݠ1o45x7i{Izp<çu6f^o[{9H_jx ¥Ƴ2n 5H<F+6QUK?CvAjvXhǧ:iFqM +y ½ђ _ +rlg`x~$A}??^;}\C,w]Ry@&e ڭo,0e }EOK\L6,g +h.WB=^}_3)2\ gϾ,`C_r @Pkʍtg L%'_<8M3ju<3.]3Fz;eB܇gCF>a`Rp +,U `S6س6*RVB6,CBӔ3x=Ӑ{m0lDΑ/ȃx7wBmLh"B$ibw/jk D(IV^Ǐ4Q~Y1TI&=@v(Jn _~>jO;wۓ``Cu飆 7Nk]t_cU !Jayke0+r>@ff\]_:T4-G¹Gkuk<{sYըXIguzܺ"xdN2s)gM#45J[ UenH<]8NHo&rSRp%:^GFIK _CCм!s[r1}J9ҪOZ֎QRťA !;jar^am+ 8z\ȭGހxlNssfhDիzwojw.$#[1hzGOupNL,؜yg;M9~ب +=t)ٯNfw6/q;|BV+wG Sՙzyn{8  ;~yRLeL1K+hy@<+m;)$}7A#!оu}(8-4һ)#?GgZD2_?VS"jzK3{O|6_#!L`'3J%E<_ڸf8t +@s7YqiU"]bwq@vgR!c},tUrV=5#4UBs7sKTq -Sp7Co2zaWS \ݸ`Ї.c.Kfd-37"=-saJ",]7PU)4O7䋨OWW:.*;e$W̲C m: }JUe /HpڲV!/"Xxܾ4AUX T0jEX+jaQdL&ɺ-l31ZqJ (6fVR xk=tjqsP=vj!9u+oR2G.uΨ`|moE w3YB꺎~'wKD8zǩQobYJ G g+x*@ %^F[*+E.'VaoZ&>{Š@W0Fxx.oO3Dtx{ ;g|`׍t@1Ejt.p6Z'ͦ +endstream endobj 154 0 obj <>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  [!1A"Qa2q#%3BRst$5DSTbcr4CEUdeu +&'()*6789:FGHIJVWXYZfghijvwxyz?|_mKF!Gv>J=^L +m+ȣS1Iq|8u+u]s|:hwyqqrV bL]rc +6XL𣮙C3ݣg&e/sP|EP69]+bql<o{' :N#qxMbܫV,lIe)A=̓rK[)^gdzZ lOo[kEvU=u_l+30pS.zJT:ʮzC*BZʶUWzוH=6eӌ+xd`ɭrӦʓ=&W|ڪTX&ԑ [,kL,NP:kZOL|BZ9AR,6}_jc 0ɍXT]1UB[>:}mhj+T e~u =z;MDDDDDDDDDDJnV"""""""""""""""""""RV"""""" &f~eϐ +|*ҴK]v!<{H_F~%ocOϏjL>{ř)%Ĕ$J`K7` >}c`y=Db^*KQu= Z3=nk9G :x0_'7ܷ cZ(+V'A\2u`c1[-nRNwIE|M0EjͫT[w$3x? ےUY݈:E)WĿ䥪kݴARPor]nG./,4sRlu B잧X|%QW*ڐ'Z-gZB9իqīt|̑CIpK9//8B7z|-_>׳˼q5hބӹ:cL9ZGW+($|bz55MׅHE}k2T(yXvRrW'aX]r;*N^^7)_HV. ^ebUZ]KGP|rrkíQF:ޓMVo9)knAց׶{~5T H32fʝR48+-V:-r^9 N85ԭ!?vfmlw8ȅtjߗ\#<Ҏ`eW> =Gy10,s#ĄV>[qK* 7Pz{Σ-é$oDAG#r&=;@` Zaac`oRV뽤 OL.%Omyyc`u2"")M_fK=} ^g[oڍ%?`{.<}D+Z:s{6:3Fx?ofKzMO ֕޿apc_)Z}obO9_Nb|I?D:p^bjf6V~!^ű&,W[iQnV;r>^snfe.Tk +shuG]oRp*,[r}_cޠp.2s սQX5G867 %*UqPǓ}y{ܫP st_ܵW,p&[n}.1=ģp>V]|խp 4[~9pN !~g%|03_m$>EY8x|?%/c\>2+t o3.L{t-y`.-a/l6\mUVrP1:A\x-w9~"Bm#?E he}TK_(KX#8 +-Ybn`ľ gꑤQ}Q=<_̾׶֛ +LoK28[V _f©UwB+vcП2#p:]&UO% FA=1C*E(r2)nau>{e[RŶTw49D ׸za`?q{ 7}Do6J9w~ O^!_N#, a o6tQ¨d[+^L5^ny⫅0|;-nV F`9& !pr--Խk$iNmtGL1 &_:> 'VoW˾<[|]UDz?^ os/V tAWY=5CsR j˳#;Cuwח88ːCW"uI)?XYTK1^Ə"/^^i.To#P-|z]E5 pʌ0^3Wf1?PW? j&מn1||E|k&1o09,qj7Tc=HW{}Ej泋UٶME@/.W Mcy {pĻ-ֱ^@[UӪL3H8$olgRsZBPGL=fjeў+{kucF+*A~"" ߯)O־ ,?j>L[V=hQBMuh $Rװ*aO_+Fk>n]1xQJYv96m˳01xy- h8N"QBxG𜣗n(XꊘY}PHc`N+aڷ]Jc]}gF9S(Pn9y zg +l:ݬ׉me{s7a +L&bA' ө_1xɥ-Umo[q8QJYɾ^a}lw+s*ܣ3׺Q]S3l mjٱk&l|A(@ C~ؔ^Vֵ8UT^@Ck.8ǡ@:oHngn!Q6fYr9O;k&WbARHH{&6͏JaF׳gzJ& -c5JB(,$W&-*\̌LpHzrN?LXǭT3f6o(";h=WR +G Q׿O=nqJ;! 'EjTf +;{uyUh 4"|zu힕ZzR|;;P5)1xbƥ+ vy@>0>#V߃̽(y71m;>1Q? H]2RwXzZ%/ƫ)y-Eu:`t,.x5=OROI: z`c\(v u|z͛ؓ)[8V% jaaP\4=nQvJ+!,s|RTvB(AnX*EbG3 'ݹjTJP]BcQ1W Pčh\8F bgZIJ+$($-ƨ*,A:R47dC+ F #c҆z;ܲ﮺ũ)Jk=rxf6XAeJܟ$#B48 4A$wod8mlR:lsd7 kEƊ̓Zr\kܺe2e= =m/^[0: Arqi̬r+wV Ʒ`_JP5u( +;jB<2 ^ O +:dcπ bA"uӤ<5N"=($+1eKuPt>ħ1y.EuXH= 8~5TZNP5,X7*skdu'] Ln ajs'b75ԣRe뾾ot*2%( @Gb=KǯykP{zjS6LQ0fW'9~_ yCkט\?!E'zQ&"" bT]0xFJw2\Ro\0֋(an01w[Q@d,T0 |XA.OU7ZN@l*N8gI;+)c#-{A{V9lzjxHVZ;]'S:"S -qJXH̀0G~@wX50Bkn--{ קRt>xՅSsDRY@-M]W^cP^&ptK.Wk *,BI興#c[7cʳ _vֈ=wu׶eD~VnPO*X$uS3UQ$KnVbUf޶@'['6ey&E !lYFu\1WCԫ1eDDD@!vF=ٟ֮% +=}Ҥ7/7 K-GjϨ*˳`GyFOT.e+@V^nnvo_] SJ7ԟV*~}vd\K)x᚛ބ+-NT{zbKmɶ*Pyz=#:nNKEmXlwZeߤ!v~ ׆@oR[[srprKNKЩU67Ͻv'񅢵 =I k_^WIZl}yRX|1WUls]6U<t32x7UyZ FU,L+w5e*Ǯ!VXZn[8fW̸"_~>FEAagKб^^~63W" S% 5/C(ɰM_.mg9pW$AU8ַGgLy4b(@t +MLśjR@ $Tؕ|O5]5+l)w:אO0x_e\/&Nm[%D[VYʑiJmX[HUD^'M3)%Q!u3'Nuϓ^P>Ij*3zll޻̈́ { ;vƱ+B_0T3: yGq~/o??`ktso' $了݌%j-pV g_^k^8Mt"՗괾z@tᄈSm|:i_+0}@|\C!rkՅ>l>ҫ3Ee*Ԯt^`s~sjQCz9Ybf;T2AbYI`y~h]OW7]QW4`Sԝoٹg~JWN0֩E9עoSv=9/[TΛd`AROtfSkd\B]F8bB99bzr.yUgX :mxYS?APwJуrH]קy= &{bݒk!Pk6$@1#>8c*R]R6F6'̀T}bOې><+ҽo;nfWx mڗT~Ͱ|FNK'2y$1;=)fz*I@W/Bt 5UlasVG'Ӣl׮7 ƲqUnb(Ryf]w}x:Z^:ؼgL:9/j)ܧGG[us^|Cr-K(ב}HcS~7{K'xX[]fO~PŹL5^lVd+`nRW}*A<^( 2l8,R^\Ÿ6Qr) mߘ2B#wnqjX);)\: 8n%ko 6ZDw,$/#a= *hy%~~6G!8"@W=b͐IyFF'8H +9E$tPI=|G w8"sh$y<|g//cP1U!p2:$']uWV|2qV5jzף홍32*j†V~Ze:cwKqxO2 +9ıHV$ af/z+ƜzC#y"OOnɬ)~&oBZ`AR~kR:oZ*QҒ{grqiR,VO6 'vUU^(j˵Y9T]u1o!HX_5yrNT]u؝A˟q2%/`Q fXS[dٚvzVeUnY+~aA֔{dw7q>Tѵd_lL6;؛X@6uG s|lyʿ:V{S# ?%?r"5~:Vaqs+dkI x n)VzމATŁ6 Hw1lɲ) `PaY]`I,:uE*IU#a߯O-_shjlh1[+5 <@5{qdKHjsW{ FqZPe< +k`Ϥf^N>?WJÖG +oa]s|2g,2vBrb!iJn[,$DTF6N廍ّ[=4T9of!rM@,5FwUmnư[hzAO>#r +׺uy@V כvƬͻ/"Ul6"U{%[?)(0~m6^_^GQjq Fl^y3#딐{ږsm ++5sk^S#S[1lX>u-7dr8`4چgeX +@zu=Y9"Z.{ elRX w|{m`dml>Jz?9X%]]1=gcc{ JKat^UJbp~'VUR]6VX_te^{Ieϲ7-U˝;.@H Nx69=`X@Xlkz_*df 2??dS]藺͕9G0뮎}!/' 6f%0F 2qV&kzxJwNdp̞%Luhs7or}mXM=bytbHNP]j7;ͭlyLN)E0vFp&v7qR;#}u5p/m좠6A;dQ݉7Pw5!³9EƸWs>jiӓ|:̻|>^Fo*lY`y5!8磿bW%_T(wC'+ic=x*Ṽ쓇]vՑy#Xi5_72#KkE rv>/%nnve-G(S{Fٿ8-^o\ɮ5YVn5AEAr̿SZC".HFgNE XHea {׳L6.}lǬ[Fcdzجo}HP@t6$c7(bw1'n-Y +`߅L~+s>дǿŰD2iO'dߎxsBqoYOYxK3U{fvFnR6TzA^18T%\5h?6* >` i8]ٙX-.Ўdyg/Χ]Zl+(0%kZԞަCqWwe +yc蝘`&9+];:9 Gؙ+-It_ X + X5{1óxb]^J]h(v9nR +/mGӛLPɯ0u{Sr61~N}+3 uַӾ G  R⻙=hI* |1]z˫>eKq$3++ zy.o2i+X@>P +F׃c`=sQjUf[f%v9Of< +C_bSdڍב;׷NH8SzZmeR +cdRxW\FM5tKm֥+.2-g+!Q9υZ&¯?.ruװyd[ګ` $70:=<;`d9d63+Wɵ`GG.7&f^\zcQ)wяNz\+21~ Zn!^޲³8N"Wmve mgV (=]_ +7/omJQq!TF^3s8~fW XZAv>*miuֶ&8絫e(,bd<ܤ65ydz3ᑍ}w9IbEc1 y͚nQ͠t7=#}y)ӷ:fwKR +v* Gbz91*ꊫEtfeDDDDDDDDDL<QT4Ck]YZ}s(: t}]VYȬʎ`]@=|DDDDDDDDDK] ?L++.-)Pc4 ."""""%5+<1* H>`˩EM;'C]OUיHlt3:U(NRI$&^%{P6I:=/<[. PޯXtKS?nBy~~>c6{+U[`kt`ŷ'/.K9Nkѕn!-r :zno}|!Sor+*s. .˧59,]:pL|FfM+FbXt{h&U<lӇYTAc.Ŵخ)}qǷNٴfږtJmoG]s2")fbt?qjxX5uZۡڑ徳 ў8vJleV`:/v]nI݌e%?Uۣ-jhwz\L'Zᄎٻ+8R|2Q F`"xdq,\F uգI{KhN{T_k?ב],F l0 ݎW-t[]KttnO[o[^~dʞwܘXUTbtI&G>,k5[H!I!zu [GxUd;&k]Uo@뤞񐽌GreV-Lcq[Eb+9ҫ21v~jyNMYN*'|Oێ:܆0.5ߦ0%vzXrh ~f[!6d;Յ#`יִ&T{2"yU1/җ? +ߦ#*e0Qfɐ>̮#kj#3iu:N\^+_](+Ga ]G݀&(m(^kB*G7[nv=%ڊUyyWGgS%6-9ǖ"AYk>X"]#V_A:*{G}ujĮD%*ږq|Ls|D5l)6=B!JXJ`) tbeXU}n]Y c}U:(׫~'t-aZgOQ}=>Ш_ZZbO_cmDʯf |m>S([R/⵽)ǵl]j%L[nlt ܦfv5֣`!vMC/}q;*bW5K\3ł^π/7DWω@ +lHѣyj!>%WǮT(輡_=T,U  Q[:dRr~So[PSڙ_Ÿ(r0U o2WW.@Nԉ!*y^GMS84XyTk\A$y}3UƦBTmG~I. 2\4+0d6/݀iwz,k׭ӑ+!taԟ9cxh?Ů7i@~=SG#4r]aUbŴ1~G*!l/ZTҙP*}QZv'MpэKK,tzT5q/_oV|:Zil )Ƨ[Ӓ}*ȧE~ܶ)Vrl%8_;#uTPW_?%e箲GZhN)TQˡ5tZܠN ַצ$n>~R\9zwlKMq^ZfSni:nҍ'eϳк3 z͆[ojzwêȲS歘cs7M%F6|Ncߘ7^R_{2mXmz6 r~SUVZ~{n1ġ]XVJ&…yz=z=y=ֶrؠH Нuaz9l8od+UY_0l{8vM׏;{;A3))c.q 7 [2ԥP(<=ۯX$~rFG|<:_ʞhspv`BPHLqTx#QS"z:P)r@zTu2Pq+9T>1f'Gel/ffwes\b}{f6vssd#0h+謾zGnTiCRY;MoϷCԙX"˹, G:WUh/'PGN l粜jZIZ˽įOQ#}>'ιT"i+.UI!@c$K/3R\א(d`6Ca@\#'[rqҳ]"C[[iWO1@l[ ύpU5Bz!BpRe ɾvt+ݗGݛ3Vt m<3oCOD\ۼ/s9rOjڬ^`;{)pqmЊo avn5pӂm7R'kOzZG o OZ0. +c=w媷u>ޛwW㑰Smzk~Γ^:Mhyr@AxJ`·/%3kX}v|CU_s"l`@|ۘV]m|K׈z,Op_MJbxe[6պyNWlɦ"#d{Nނ +$UAijyyzxZjl,J:R4A=FdbJo ]-ñJ%~O2׼oQf-CRAq7yɸ_e*_Qv^[]wȽrluaP\k^rkǭmm€}{@= *K>Zהp|&8x|ܜ˭u3;R'( +5@v׺_NbP"N;y+l+.ѝQ}awvU锂7RzԖcW @epkhR.9z-yO\|zkZEDQ|bd, <[qgr]oŽ{)rnRGO[±x)r4uܻ3=[8):bamF;e]Jd! #`p\_1/(cа}{bфSZ3m4Iܟ2ά}j{?)Q|_o 8ߣb5yN[ߖq4O  lNGq1TV +"`=:yWpks/N@@{<# AjyG8{bbQZYguP^,6Ǭٰyv$v'fR p+dʪA%keO~/5J-\q +ۛ O*8]q͊VXֽ`H %:u*q_cz0' P@/DbplgHt=BP|3wWs-6Xvc#(@>X~-XKЖ:}qǬ +Aqˠn5/mW$1}2ʸ>9%(Ey}>f_1jVzՈ4v:u 1^iG8ZܷSEhgUgggpJT0;荪S׸{eQn7)puu:ON oN=uTǗI@ zL,NgF=hz螴j-kҤ6s[ =:]O@7נ0rZͩW*9ƻ{bc^ҋkL9Wz?ò9LZ`#z|筜'uzPԠBm{5/ëDӯ}w,x51Z@?,XVЈzַC߸Kxꢴnw ± -;݁@swKEW-oo_lY|jHIT* +.-Yu{{ E[6ǜ.|/L[y7+qsl[-Yӭo*Jۙ.ϴ{DD1Ջ.mTYeUI>0>tyl))=7q*x3vG#!1>eSUKGu$lL$ +#Af,vAw@{7zdׇKkrh̫ٔQ^E'ib+ֺ{DD:X\c<+, 2*B04wG21=n6;{J3:0Ox˓ձ` ;RALǰk¤/3ikR~D3-(ztfe ~uePA#`Y@lC 4|5sc[# )dRiPIGSЕ ؂ ˔ԬD`|Z+kK*]N(lDDDD;zS׭Sʩ?FLK]:'@qJ8F vF YYNH>`Ȉ啐=TRNcߠe0ϦC#-+bdڶx@Q\mOJ8#Z@ke*vrt l:[ȣ+W]u2Wi 鑗ӞOuXVs.zJmޞ`~r2'.;V v§e)4~K=27{. +]0M!/Fy̿3qsqe yEe[V%0#gϢ쒉Uu_^fp]vꧬ}lR[Ml#Fsg8Ary_gQϏQ֡@޹)rRLZ0ʭ"jI##.ەoQ2l]&-PszT+tw~iG7g`ϋ_ r7m[pc ފYF+3*\N;I< WԄ]E,%uccMJk5nv]){xumJs+YC'76*r&=w#.WLNOiKb`q?=/b,:Q:ӛ?*/?#f^GnƸc츫}nl*,T# t$}rw ʂ0]FdAmTP )rEh6RA99iBҖ_s*m=ۚWjm>uPbc0*w?G02jTnZpÒ+ 0NG߅0qQ{PO:V< L +rx{2&bca:bw$GN[)g5eK'n[7x`x"z962tb +ʻczX.[7+xU]_ZCQoW +J7}5ISXlN%uV(E\ܬC}~Iqs-O/zWkͲwٹp,ȹRgc +6d+!FvW_᭍H -g7>ʳԍ1.ʿp1V),7|CG7浉v{-ID r0Fk46IX?1 $*u u=M^ +1NS|ꫯ(=AnB +0>v?9RjY5룿9% uN)Mf5 ?/7: `ϋp̮7Mv +ތnro]#7 +H1M=x q.PtUPޯ]?0ʎo+Ud^ׂ JϮt>!{ON#órrҟP`#"܎aפ8Y_z2(^7fSQ_ i &ͲA[cql{Nk|JaH_1tЙM<][VWUiS:5G3mw#ߴ L. r^qiSXDza;͒A,rCFe-o/ƿ+~^"-Jt똖@Kta*EduvFW5**b{^7 !Q]jyVv,ŷ`vّ|:Gq1=jX#|ā宧S6F "G ܼ̃EYy^`Gcdp쪩zҭ֤R )+nbq,%ð(Legxˠ(`z:ke>O Ϳ6JO+^PG3*G~G/e_jzmBO%aH{OijՎ0+|Zu%ۯQ]_ Y.MXo@,]yч@@sdԆ$~:z)fV%؏XM 3|gO Vjw4rhJ&6V]|%W!k^}u);N\*̴6Yٕ[Ga͡ x+f7}{$K'VqS{rt9:>c#s8&g8y5e}GQ+0^f=3 e5 xYHrnEפadq+m~OX)$ +ҾSGOlfFj"6#+ٴHa&W nM8Tմ +~'"@^vZ7e#82?~* @ՉC`5%m̵/ r(zТөL { 1~PX^cߔ7`ߒy'B^–RYm m\3?p9Y +[@O9ű?&pG_v'!k/|3*d=U|U!e;'c[,%5W_39`:րǜ8ceZ[zWdbWcl3ҞqLm2EOu\܆ 徝Ǥ~E21>P"rПv4GE9gue%YXK~r47`3F: - ]ksEo\R:rOyK6'V72R݈`o'/^~[aOEGˮ:r}M@Tס?(5U0ճFhQ#Lq^_Ļ[!#n7Ji|rkF+^QԿ32!8XRyPW]}c[|3.~MثW!KzCt_/|ɻ*3NXUWu%16`F]}}T||&mG2 &g겫jWK(Qe( {.fN7̣Ll-E*>[jje5̀zŘ}ؙc^N5<ܻއ'_3/'+)\{I5|=򋋖xfuP4Υs)~wxyx_ t>@uq)kR)XMJfSpN^Q2baWlRnd)]'|FM% +|(zR<Ҵc".f I2DDDDLl!#W’<2r XԬDJjV%"VRVRV%ؼ1*?53~(fƵ+)JĦb%5ԬDRԬJhJDDDD'!1*{:TFf>6dRzJ etܶW^N.[=gAUw[TP\$'rzn Rk|ъ#L;<=DDDDDDDDO,*km`c"j¬+ 0ߑ/>#_9 +POATDDDDDK\lkMS>0|S~~kLl8AljY֊VpKyBֶ18:Yxu\TY΅G@[^^sb +ܬ;bԥ$tdN7hKe,akeK7HDO,lYKޙHe::=Gzāv9y YJꢚ*wlaQ{|!狼ݑmֆr`V64"W՚Ըk=9OVHҀ}+1Lm6|27C k~̈cصf`I:2`26WՊ]QFB|r5X!}]C'""""""$?kŨ+rO {lNV/}v?PIA 7 oL(Np1SOMr8u|e6r+]/)>I +{dp_Z5i\/*A@{tg9 žsP} IT5w?0?ekԝۿAoTI <+G-&cn.,VM\)t.lc7 !VF9YX +l <$ž`25}WԎqMc2 f9mu>e^T)\Vn@-!AֺlOFq#;ޅ uZ0w.rV_5N\(YKtZ֌$b~(}yP^W􇈷 9H5uӰ;;ևc%~fQ#Xdܕ3} ²ߞ@v< +^&JbFqլ̪sO[ZŎ"qW:5mUl5f_%)Etv ::POS8AED5LeVW@Ők{#}Mkv݋V0U<0]uAԣzPՋe!1ZV/U6SZ[Yį:G׍fCؕT -m}ivNiͲ }]ϡY򎞩;_dbcq,o=ETaoHO \vYFyQ^gReƱ{u_2*'G d ^'NJmHlIfw\ /h?(:z*e~Hbe.]bW]VD֬W a _Oȴ}?p3műm]`㔯/S>R#ݏa +&} *v_ 'I^Yzw"=&>e +Y2|BG]uO +,b$F5 +3oJ ;S |3cc﹕~'"""""$UM6鱪QeY` uWnbcՎ(VcFM7[]9-ҷ@$FU*^P6Bϙb6 +ĭ r>!nb":a զ"pLP']O +ga>*r=ikxm39,ŷĺDHChk~^s/8)uG0-Xd,hD/&؍.#cL ?t~f)tf)GΟ sp1oL +RzA}@[j1qڪT"Տg[:Pw}:1x Ŀb{>Ro$pG+"d:2&1E(5;C]a-ؐI SShV#L(י/`iz@BM&7Yŕt[mn*)0#m¿Ǿ^^])d ,C~sӂ+Ī*zڪBTT|i纯 +űӘ>|4v4g͢0k]Ȭf |浵ĥ {To̷*7r^`FOy]M=,Tb[3shr[m5)e 9oGybݓeԄDp*`Ԯ |2dTKm遞oF&E}_[L9KQEJw8E;WeE]u}uчGM&`KsubIIRe|L+OcQkCȎv33ZFՆ2z޺l~v +mrt;nx<";}L8gM|uPOe XMFäYeXuՕw}L >UG`?FgVBIH\I9&1".G~^fK긞=Y4Rԑ'JO,\TR:v;;;f,zyǯ*GRbB'OjU nPuˠztqD_I C{¯ r}WГ3_N'[Z^u7DaԬD\Kt$-0˦Ǵo̭Fb%4 獋^" +]I=I$vg1lrI$@~=% Z-yFfNb"""""""""" -ֵ,@O:'depE#>We[NcJ}56ׅaш@Os5QeZ-5<> +픷e۩mg]ɏFM#mJò41x8ct!R@mDt7xf5XZRܻ:vQ-pXQYx5|,5a6-発Y#03/j;)`c\ܨ }6gSalv*tʴΧBz'.-\ Sr+1ޗzz]Dؘ5.MARʭa +H o2J"% &Cm3HQ2"""&*+2Jg#\ uLao9ᇜfW]\A"k{m`YL.UY%Ըtu :c=b% gY}UحS+G]jz)OAb220e:`U 3'fZ`YDR[JX;(&]^e)uG,Ee=FWz1)ó=gßZz(l 㙙^ MuQ*3Jm[lCe e#>8KJC'10 `\lA#D}3>"S +jbK(yO+!XyNRkf'lL ?p]}Pt`}DJJ +  xQĩKVett~Ȟ0'YS#:{by`q~5< Y64# eDDDDDKY؀=yX1 S&̝]iT>ۚxOBYE?рP3Fri9UgZbY0򆛦aJ/ˮQIw"|>WGK~Lǯ"ej뾝lo[a7sWNj:qJh Umdxҁ9՗%H6.yzt⾒p2˕v=le#]4uu׶{ql\ e[[VeVV4Gx;]85SCؠf_F^PN|1x^}K)Xie`⮡Iq!f 离<\mgL^Q222Z=`b| oA*UfRX23 ^upGP{{[^?@)Z-`.A}{m +3O*@'C}+]FEK_U6mInQ`$#l|κu\|sN_!Z3Vn}6|T ,k7*姒\_QݴTx˵0 k^rC1q}L=Z%sY֋V`c=:ziBpD`_B9{J:nJ̌YPWòylRN:5x~"mv}7 Dnc[uxc1/>T\dm7fsp Q-+T,UיO.78X?qd^ 32,~3T]={!J/':WU(ЀtGûUkXZ8ת9dkD"rMAc;8_QKP}ogn[FMC2w9^nUj +;}Ԑ7&]yaUa +30+Aӿt\؇WX:/w繰dekSaBoېwg Sֺ=P r'1w5fc{b`j.{$G~»^7.B-8o Oڸ*p*9?$6ɪI|kݪt$f28O铍nZ %ܤ^̻O1p⢊E>RKxư7$1^׻~szrx8\O"FS.kƈY^쬚/ŭjVQo>G;?ڼzܳ1{_k,fnoaqc/a>~RCGvWN'=+%;l:''acgeJVtYYcg[u,O\5yNQMjmxkozu[zUĸ6U[cj1gfBP>{'^]YL?K +n)Z%uXmf% Rht{&MяxA][ӗ~C`GVOZPejXpC~!#Wix.c3+?t $<XC!PL^5a-K;'ҋ-b zk9rvQsj̡[H Ypp B^ bB.Dh<&gU4TK < +>8]|]N|'G=H*cQvՕ}f.pJk)O:';,ePXA<]~;g(VaZBv%xW +jJ6Xճ/1 s)=6>cǷq3N-NҖx+1r L# +jkcv^e#1=\uTj1P+i {&~ҾsO&'ϩ5ik_®#Fư֪#dʷp\_{a[GG^u5#UUTg+`$ N<\P|okp5nQ|#tC%pd?s'FUvHd':uFq3óp,&fR >yzE]Mt_eRk0Mu$ m^_˛Sx/v5"dc؄NԂ:K.!OY_jKb*0m:|羓'+ޙegF4I+Ha3={]R)1ed#<_K[ȢpI-ii;S4OCz3㣇ߕQ誥qeGa$g:빏_oU;VZjngeIhD ,ܜQU(qlAϷd`[{wYW31]f8\Ww*w{pj ,嫘]r6u t9Yvl&§|Z#តB~Eܵ03RuĭE +9U']t:H>Nn.fq220V +LT|Cf>gauZY=yֻWp\]YM΀$98ٷqLcU'|t~ijaz4Uo(9E+oXY y{ӧ6؊Υ PJ$ltGK?!7!yiDs&Jy89<7# 'jNI;1>Cd/[:Ck"Q=_(ʶ'loBOo ;lRY]i"J:#Z=㘈 }v}SiZ{:ZJ絋CUAUwbk?b,[qŦ"5={=LG8a|Uc!J9fҒ@|Y|Gt6)T?őԱ$H)pP" k>Z zk-|/.!^^cc5$ ț$f_ 6%reKRƠ˭ͽGWwdW[2jeI6P7!=:3dW\p}'!@פ~>1RJmUB`@::J7]j*5=tl@ #G[O*'^uAòYY][#kӯ8v}µOضe|6G$w=[*1m 1ʼn[{#_TVg_h5}0 ׫uIS3⮆Mֳ߭s'[$nd.Ÿ#+RWӢYamOWL|5k9 ,$23'/xn*cf5@5Aϛ]:tb+4u\7)IJ +Nur3~վSDŽz+l|ڂ'{, ([Өc2ۄeg;P/6~Xr\[|?"1)b.X웒Yy|/>k~p%1sRug&ې-G^$tֻN8 \9a.^R-'zuw>]C u[t-@O2_os6p2xu4Lbtr;Y#nyjf6?U$//5ȌȥRB$ylu?Ѯ >'t-}^R7oNBuЯr{)w|Kz;o 6 +9XYI^o9} +#իnnzة] 鷯hpJj¶kغtO1:Ի;d8[{ [\/ +k9Žr;t -_E|K3(a՛NS*k6;=Mb5nZJZsuG幌xeRS\KTZ8 A<~&~uS"C.P0d'[̿F1/+:`6垓p26'(Ȣ互'OP}̤2N#a`4L,fm=6I$ +7#Ѻc*rM~m7[}_dy~-xvcj[vV rWI;? hynWFKb0i?Q׆\+ͽa?t/,7ȺG[OXu:LTfrױe>1>&GN#]bJ-iWıt9ԃit7@ԏ{0j1lA^F.HX23-`N멗+Uv3QU9 u 13tN|6/qm*Q g]:7Yqʯʷxdccc[ћ9Ch +W]@>cr/Ҭ| 103o|3/fTr[^PΥ,4~oFLi܅(%D(vPI;=Τ˿`_Mn.yw'&=RpFJ6Hti:#k UƫjTmP5#L)hkp, + ï1<\ʿeaqk(IJ`tf O^9Fv>*zb:sR;y_f&HTaRPKUןzli}O^z"f]"_O0 Q뾤֯].%TP'){l K8N.n&g=[K+ՊIS7F &JٯYX yn:g3ԯ[f= Ksn}}c-6"~X.ƇC׹DD(F/L E`T~Eԑ+r`CklOϢdX坛ʈܬ+)+)JnV""c)z-qb1 >BcȃJͱ'Cdw+085v}5`z[~VJڈA>GRi2*QՊ#(e[-E-C0ir*RTۯd9T䧉U ~*/7:۱+A:#cRrbm}i{u 6;l{B;ڹW)tɥY8@wГ7]^:50EQBOim5e WSٕ)GIp2u2K,߳dٕMEت\A` |K)RTw$h˧)y]vFՃ bZ3\$yG]x&mUrsxd̪6=c2/ʧ XTot%\lXl2ADT*(f +>|SQplFUM9YPݺU{oGcX)f`w$!>4xxpzmĶº]##:Pw6VU龄KRΪj[~MXu6lga[Υa 17Ԟ 6[`ohlḲ$j9RC`ua[q%׮WG۲~~U8lD٘*s]]rF 6 =֢0#DrA5XK۴{֖0:* u6wκ;0;4f3V:`I[3(YP(/I/9//76.ﶧ6n>`-E`D*YamB]OiᑛF)Qu3͹Gnr2k*+%9:=xEUEm'2tm:vbչ^kZ- -0*λ 2qmeȠt +*vuUs2+T)vee$3'.r"wn^owuq2d[oSs1jCmo])˿] o%u+#2@ ֥`#6( 6{{P̶Hbw/Pe=눶ťKP6I:y|[PYyC #7⧉s>f z z9vot''Tr@娃O(6Y:!ĪkZ|v- +}Y5r5ʬP 0} lfU8}Yc(<^CIl0מRv6|HeFxcq\Eg/~GWLg b& z2Z`z+On#˘|Fkk +!*HFصf 6I:键Դs#v>DD5Kpb+ꚝSO 'TÔӦX v _1!h@< ͣFyǦfeҮ)^sfTݏ] ,JY k{='*V&}QוS}KiXvՁ[(K6+=LN /O r]Odį'@xp :0 6q̯JpE8eJ}yR*//@;Lo| x,kPCW8¿E_{b2?p_qjR3=tTiTt^M򙿫| [hcնYvw-u(kצƂdprWc?>EH<;`rU؋EXsrzPG/o>6>_OK<j^*Ay#jpqVK\)mkk^37x7-XE%KGE/Rx&}؁źȵm,-'h$k>\[ +o@mbgoJk? vm(>0>fxn!EutX>[*}Q*w SLVl^c1ge]]41/Y}uuVv:|YkX|Y+9T$P GL+p1^]MgqT/+thuc. cPf1pnj$X@$*l+ gzt<$XIE`~}n}" \XcedzOu[obV܉NM6Sg#*C(q=ĸōZQhBt5ӛ}}#.>SJÖY7)b?o/ ^v2uAJ>Kk-c[6UR0qU.߲aaơ +)fD%X.W&kY\׵~-Xw̬O2"=W[n&kW#&£:A ;|8q cg_QVJ􊞷1;9s=)rwK0맲obJQ{}kޖQM#K(oTa+`O/K>O5z Cg>/E*#) +u0x%Gkq굟;">U=DMr1PDuߜ}l jmtUIeb7FgכM9ԯSXyqG]dvv&6O¨X0'-nMst%(L^1eIB|®ᮃE:߸avq%e+N]2֐r/>'dl=e8Tq>1}u'd]jdlO>F.5v쮤7.W̠L\)8O!쫉cebU#9C~iè>֨_-v@#b,.ΦGq-M`*.E%T (-JdE 2 3^68=r 6(Dos< +O?,|#x/??~`}2-źq( 3kjr+yXl;=L~ލpZj墰čmb@o3/̱oEYv22IÊ/{srb|{bfq_&. ְ̫U Hҡ=f_IX hb; {Jķ֕+]uxQuJN mt\V7brsj'r)PP[G68މ\U0t9n!xd­FvfMv%_"@tt69UGA+=7ºi7M199{ +y\v 44 >\[ JBgZ/ḫf Б3u8:`5S}VuU lٙ uI {n8ֶͿ\˲0=daz;OK^7)g{({,nk^}47x@[-eaVF[=ϴ=gWV<57Yvgdp2 zUAKh{}<.NYck@cXTye|*F0ǻ͒zmo=p}R_qc+}5Gb]WX5d|(#uՋ,z'EΎyOLݟ:,Y|Gd,eX}l{ WrX~{$zi=\gUqK,6af=x7-D۝D#*;](.] c{1ƟFȡfkfowͰOe`ݍN# <*X2/`Sg28E]̶VKlP{o0|؞ظuaZrY;fc݉=ɞ9\&!RtAט kqZj,l K-bvIi\nU :?\%]5,ta8p?( ,k޺t}O_QcKӶ;$!=:A'z?-!Xr?:vUwIW d%lǵ +z߻1뿌dd21 KXwI$=#'{L<Feɐj)UtvV +H%zH؊F2Qm icg9/:{i_kEĸvrvNxiFFfN!N_Ͳ]HdBYUwS]1Z!VGPFwt\>*s;wmkl|t).7)c +YH|: p6!Pcı=sõ[^ǦS|7FVC G '+\q}X+ 4yI뽝-M8>%x T R +w}I'=x).w֯~{yG]6v}6bfL:N]t@}둽Ge`p+ר +69t_cl)POrաQ L y u~C,_/x]ǭH蓯d'<驕@{yHLn c4@ 6myw6Fpll Ȩ7=vc1t;tx[JPXE'eO]~x}14kݞ no|#پI`44&Y\ejv&P75z7g5a@{+O|Cԁ{xyIAt[I,׶W*IMv)Cz!S:Ք6m|rX0f!,I@ug;KROP4L#=XL NU%Y귔)z)e|AΛFy&DeX+>>69e`ً^ <k_`Qj>VSI(ٚŲ[RKyzlH:뿞Sɧ=90bvtκz21 0 =}u-qF?6͙#bZ.: ]`_1s|kRc`>pC X-aeVA R5SmJإ\]7=ų|G}}Gdڕ&wٙ +`v2.J@.A Hg/ޥŴR=;\KRYuVXUF]><28㥶c:"ۖ*2o]lKj䶕Gnud}`jAtXd%1dT'D~SO9=/0S;R,YGaII![1otg-ȊtYG['@ve/uV'u.cX ?N΢MZpݦNg<'f+^+!CsF9["|jۋbfIK)60rhI=>?\kQK&971tjףJT:ט3)jmo&ko`u#ٕF>^9-\t*~o=L;*r#ITˎ8>Hݥg)nQgw޺{dCmY׊G΢$t}~R_Hz2_-`4C`+[2X-`qFR ѕrq[PVtCuIs߉CRjU,WȞ^9<^쫾aZy!xcGSUׯ#E<ᔁ0#<[/)gO +]/ .9(uk^Ymؕ'9͡ +SIށ ?4Y"T vGK}Z,VͯA2/ѱbp.=7^Nws^gv[)wgy&@^[°4G/'"iNo?\`9k{'+3xEnUlE@Tqcz: G`Pϥ+Kl +QOd*̌:*-^[P +bWc}ƂY;SEbIĊ'"1qO._72! zu:r&U*v|J=mWc *ɰ%OϷd.ɡ˽9>Rde&?6>5-5tTu6ϔ>7 L{}W[]|06ta :CR;\x9C%v( uٞrUeU9D.,BC@tehn0`K4ۘq+ WH=o{?>ޓ[^nNxoeR]}um֎ƀ7q~ѻ|F(o'2me@>̼j9دK8BC6NzvpH28Wm8OۍA>w]7߃ +/Y)R7Ilk,kWaI6;GWMyY/[b'(dEE!cӔfeF$I$=ڙu\_ qq\ Ýyې7'`6BWDzr21iݘ\Vs) 1$yrs5=:o0Q^BI#GqriZ!VtU5]6FxzEt/ej0Bŗwp/BԵmu W'CZQQ}"q?bxaHֺz9qh|u]zCr 63hFǑ$/dZPܼ99~`AH \/bbd-?J2KZ2 +t~MCc$3y*3+B귈_(v;2Wo~Z K0#:=q /˿h%kIyIa^p!MKky*A $ 3%}%`1)JKѵ,= =r8 Ƥ]etlۊ†"mv=8n7B +Muڒ2uzLMr5>"no\/itG]gnn*>^O-jN?kjJtVbvyW95Y^Ÿ=4k)a33# +PA< +K1eNBV>_> +2 uZ5g(4v5=}_վ,o }xnr]zzu߉eC2.eDev*'#cs} =q z_ Ā`|3xGN/AT[,tb6:L4> DZq2xuܿ +VZ/(6O682:y'8eVu  eu]0=Ͽ;.ʀ܆ToHh//bC`z&gq30^Qz.Y,˿75?VfP\J[Zl,C/C&cq*0qռvmPIķNͣͮN^,&^`ñtf 9^}w;ےmAuz*NH_EUy]a:|KpWlW_VBΌ2_TX_@( w0}7춭Ͳt\u3.]bӐֺޱu޽f ,Qkچy]{z[_cq<|1p2[mfרg3 ?HMc݊rXY{zD2Ves\W.`xՏ3kk+)W!zr9ΏӾ7Çׅw7]Z>3ķAr$LEaJ)nn] o]l,jiz>jLu):&In)WKv)qTUF@u`q}GvEvckxCꁇ^l@h$T_u[x|t<0;=o\?/>,$ :+ԥוn_[=x5tv%lht!.'EHIo[Z12mmR+Qp,$.yUXst,OC˸Ve{,+b^FjزaQۘ ^fOUtTE 뷬:Df|Vuf3]v=5]J|+r|l +TIde}xzfOYyM ֶm5̛'cG}w홊=Y5"̏T.n}Sg>/Ȯ^ ^3.M%V 7QWl5mm?DccK]l쪀Hf#׆ZnԏZeX;!٦c+6q ^|6܌t@Vlny;xjpL̛8<:*%Y}V*tIbHYɎcPԵ"rT'lcC%wMő5ߪGDg1ŏms=O[/? &QEZy@3*:rS%wy6U: [Z)Ȥ-_zW#CvuspvUeUZoJM`1*~xWţGyuZԿxFnMjm) 64uNC֭-+(Yy;^0ׁ8]mlr;Gq&8ȰSG-(jqϳ_NWbsrԺoq̿]Ӑ^uSiB[Nu{ ]1.omBs(|,m#=.Tcck9/0 b~8-.BӾ2,SmMlTǙ:Q@e-5 +&\a}I ktѠ%zq[.n%mšvO\@$7K;Vjv `Yb%4Rȡ^]]cltq))T孶&Wu Hy,=jEr2̻kbc`SY[lޥ!vVy#la,dW?_m'\̭HʐyXzlw֧Z@mRCM8ծ6``5/!'~;Ȥ/pjG|W[*K}Gg+JU6!rQ'c}pJ5KT6CӬSJkfEZ+k^O]wFgliaE/m( yy 98e8vb@xbtdu'#׻>rL }6|FΫWoXjcz!M5MXYIڻ'C32<Ѿ:]||N۲趃SQpQ9;)#x͋e"?FRI*zt-I_;?*:'e7  9¸<#=J܊O1P~3o+PT& xyi'ۙW|`>+93y7S,9 +P}u@;YÆ׽ly-`440?t3-=x}eCfvwvLܟLMDDDDDDDï>J:mG4D1xxcbiG@v};ZVb +[ԂvHOtE*'};?Ita_a{y0*yFht)+)+2M]}=ubܖ+ êkvl혨ߐvBeDDDDJ1,%S]G޾s(샮`'MYv}iF-xA.ĒI: Oh)YMcag'o~bFdg9KcAJPIz#f]h;7@=GR<=FD12sSY̫z2fRP:A )f!WF8ט;Yg +ROl2 'RfZ  +;k)hؘ]^r3NN:FWd/NDUGUtQx6)rTLFϞvpQ2y'xjUH`Yjڐ~c]o.,sN#fZ*|+vP871&P2fN_UeecZk𮾺*4Sn̤A c Hn?";P'}3 P),\z{jW[GDyI%66{ 2؁Ѹ؍e6XSw7Tϳ9lS!S]]+Jr嵇Q :F[f +Q-, zzk؀=J9ޥe ]dټCFk: +7TWU)}6=$0@X6I9%9Ȩt?$:She_G6xmt;;R@L+q(0>*o,w_y{ufJn7(:=t{JL\Ø,²'չrk6$̇9wgӐЅMjF_ZLHq0SUXG/ +2(cwKZO@ΥKN0n6;Fn7(I+Q(I o`:18^Aj[e 3/bQ]\mH#ĺ"" 5K\1U)6f;-7쑵dg!͏dcSzf 9|zdُH-)uXpBoI_KmUA6] +NrO*ȩC+)k}*"u oyNkqm'lU}ʹF!oJ=v;KzK.|'L^ʱ^d:#>P9*l(>O?# +2]^񜤶bIjAUf-s|ǡ1kZU>sd/6]ͮX,W~ɏƫdppP!1(zHK & z2qq[ ]-@-3i5OI^/xz'!)@$rZV'+_vE5f WU(ӆ1Cp0&OvX[i#dJ}/ın]eVhTОNʗZ\(9,EnLwf8]W3b]1=&P|J/d?(q㢗Jrv<:75HBdqZy[!V_]|I<c` +]uxSRXQX$ :t4͝c=sk5R +Io^cܢ5O0uUA!PMg' 6uvK/@A_e:Y-MNfk@Hϩ&qi9B0׭z̮9[]qc}XCZ9_ 8cAx?-am`Gs_qzyvJbzoS$K~]Uo\f 3 \K/"܏IG(!*@{7~.\jC+Pa2:.ʠSU9BݬƵv 0*G_ogeS~ڦ>6Sʬ\;:ђ\b s +1؂1 *W>E.lp\OAS ;_q02cW}CZ`7tp̪ųڦqsmm T_{O^beqN-C-`b2XX(@QgO +ƿ0Wc3r3UC2G@~}/b _ 9HYkl9@msrn;G!1E# a1<+6| +U-IV,?Co}ܶ8Ej zvah–V=tA{/<3/\!ujY%՗kz>wkNatfcxXl|gWf$TgMw)3\4bPKslYטK%sr7-+nbVT&{&7-X2|g͡Y+]|sfcL=]إ;Q+aiFjvS(rӹlqOgW]ylBF;˰xux!gvms=]:ew?n94-̕s #Ϸz4%z5(]Z$tg&Uhsϻr::d#r}\dxܼ>77&rMH~/ecq +bmv6%MVPt<=8.7,kdG+[~f?8Q +Ӱ=ynKUZԊ4@ИGQk^:Hee;Vug^bxaTgrlw.㪚fjMś[D`J)LZ|@%@=FCcQ&+$9$;/+X oN@2l1xx6`A+D6:Ե)b 1f׼bqǪ J#'G1m{KVDGCPg .؜CהrvH.5㭗k1b/volF1oǯǹֈ)hM] ESa7F4C,;We?pP0!~ON ..C^֊08]w#~zt%-z޻-Z֥nI$R UTDPvL<NmZIJ*TH$kކiU[bY [ה·Lk܆j5Nnbu-`8y^&8җV]d-hlX|+ +W$\󵄍ٮ~B^֭5K?5IF_‚H]>KV~kkav}=? Fɬ&V2s`msTG'8M=l 5v;gsmta&0sniF  ӹRupzȮ*{9AU "4gO)MgR ZUpvӻ߾zq O5؍8ho'\.9CR#"Au]w_jʴޏe6lPI +y=:lym>#dnpC?7,(w6]crNԖJoEl6z©j$y]wр>;y([ŗo7Տ@pGC^9pG6RvzPG N;ь\l{ s3?՜-bmy=\ZqG?-5796V@ s4nF 3ng v}ОUqG]08&;!k,er~N:T=,݌@VmkDgL.3Ku x)',9OjM[ g Zj@N`]6u?_ؙdU]@Umv* ^pܥAB$\]8NZ55*EuԮt6<9Et:a*)Tk6[ֆt-q9oh;6h@a]>MykMk㲅PBO1[`YI2<,wZŽff*2kѓ]۩ߌh5ztHA;O*}"σeiܵ;6I^avyfg|!LmB3G3(@}'RǏeE!9s9w=qxyR;rV CFM0|ûzxm\O¹t J@N^K +{lʥXeToTWM6r9{ܥt YDkGd S5ޖF—X+oG?<˺ +pTCz!wqZmYYns\ŻyR/q4*JEH*;I5X).29!A永PחRNLڛnTO@HafmTI:4L8\Oql4@k*-`"@%ī3h}H'UmC122ZH7X +{ga oy>^o[Q͂2VCs $k&ҊM 5.dznM_ceSVUm{[]>(T@. j{Q:z@^'Ybٔg-WxwQ[lX:}:Îl~aS0P+Ďc`nGQDzb=ƺU +& Ӵ/8҆[FInRIMa6 [Y- D{K@!M>ưr9%@7'P}l;3.=55dBIf.@gޏb(?wx{{u[鲛Q(t,?[E\3+؜=ePX#wfOM$;q@-yszHtd8؞*xYLT6lHLn*Z[m%Պe{(ͣױsw c+Ȁ]ud2EU9P ^?OMO]S:ToCDvUSM^ik)lhoux;c T.m d}ykήD~zYʈ"v:ޕqCOs:(d#Zoñ!ՙk^f͡u:f|ׄ|3v9']zK8=/s"kle+X:nyꩶ(7.6P bUוu%7DMZZWjPz:jQlZyU s>UE\UX2˰RI ` > uOE_ARF~$ c +?TDonַ2xMvi2':X'Ct׾W^COUZbUX,;Đ2c]Paz%24 @]SܯvVMX=,z_!)=x| AuzL_Ks_TGiTV'+?'R]Ў//n!ι +ig#3L_IlǽKCƶaGg<82c=5mHێRz@OHx;3鵅cXS<$l$O!kCfz'C)+-m,]?)`mOH!98<*En(*QZغf:ֺo`vAdǤדS[IerI]lR71.αxvfgVɩ޾j<;\UG0$(o{cc.EҶ7ŀb܋ԁ uq̤0D̳*UhVR {kWRK2u>=jA"18e?^]BTbQ#vGN:ZO\#L^_X Fo3&-*+?ý,7neD{ye XToRW"bHd+Ƭ-!N`x9Ioc[fDžG +Q(({~~{q>J VVWGGSa(.9w˿=o?'?-+[RQ Ħe7+'#V̺ipՌ`LDJJ^'}O)ds ion'Ev@,fdDDt$fr,V#ES7s#'U̦ + #{[ߞĻ6b: vۘuoɔ<ΉH܉dpl3BܖV_W^Fĭ}d 楋K,-- zwy#bB_2xu9Xmrk>VGIm 33q.+[m,!YV}{]lu}"4XE~`oC~ROǼ[7>-xkWdkv CyeN=?ېH܂.эuNP@'{ l`\՘/VFw+V\7cpEvߐ⌧JJ㪐OSӛz 2rOgÕ[VG wӯy/\3yX::lu[ 4p [1!=`N Dou:Ƕ[~pkr 2l|?5ٰ֛|G.jԦH 7Jq*-e~ VЂ[^3XσXSfї;>No[МLlnH{$]* suFq+f^]n\kiQ=&F%*-@rǰMjشW:wF BN@yyttzu}Ҝ[58jUnuoIOG[V-Y`BfM:sb6}3gSr6K6;uQ]_ nKTzHmt<KnCط^m x\ʁ ] O}볲 +Y^;}TyC)rW˿q3,n32.ڲ،lnjTr%GSZ1_x6g;tj==_)j'!FfpmsF퐼FW?2h|*%UaI`]iI_HF7 m'K׻OQ5.×/<{/EuxRfnb =:zL:VGd\ҙMS|'` +@o6X,xv%Js +lu ;K_xbճEwX*-Pv@`bQ~%n[B)SZ@oSg϶0˓Bk?щPd&mSuJ|+ tDΦ#Sen *3'nɚeD+} +^loj_'}n7y*;; 6w☘KnM`*5;G̣WͶ[Vr&]oc~Gs3}$%4O8etc}-ݘ؉Q%ށVkzȷ=Ջ&A%瘯aTʤ[\3孞.Nm^;kʫP]&q?VE|F% + _[@m9DCfnUexu%^ +Jw^^O9T%/eQmcJhϏcfacX[UUaX˗s`߹\S ˸R+Y΁ ky'K=4fFe697'ؗbe֫["/m3Xlhh̎cNBTrUWjuo~؈#^)eֺxx\*)ށ=;{eWoD((tYHV.i~NBi| Qʤ^>W͖[9q̎X:2ypv99dz" 4.6~}qfEBW +PnR:sl{w=nb}f;e;,RjFDU[err& +螇[eގUhYŕ(/4v:k.M ׺9!UTogR?G %2ongmh)e:&9?Us`ܝufG$coBKC\Ā9NS6Y~1*AW\7׷SsѴǺ.v% ozsy<<:,§¥ՐPÐX ]> mRc(ke +7 0SfBv=_ @u]N#YcxM6-eFۨ}2.b,K@$r~zu^ ufzqw-m=5l¾0Z.1>S)Z[$33 ȧ+SB>*^V~?]&~ kjvuT''1 [-6bfGs kAQN mV$"4Oyk,qV9S~}z_l21f.@%,]"4f&zIj^GU)#dly=U^Xj4˭lQ{;N(eMg/#5ǿQK/jGȻ2W ֿ | jb:>-|Aiv%<0]'}>I[eɕc=o!UR;}Mkɶ^C[Cz4z]::272>.\y@TtQ9>IS+^2)1 ɽcc[;Tr{Fݓ(א5,kq%::a0Ѻ> +;3O(Ҁ9y@ }x\Ug +zߙ̿px>8ǣ|cř3I3&jmYJ#FF`pZ%UM/(:P9skmBB~iwǼs?X[$_8rq\gǰ DzЉgJ;wt{~ܽA#ZֺkRYTV]^mP:*os {|{{QY* QT 6{F"" ,KUX;A"_ΜA5:[V 7OHNe ]̇L}*2ۛʱ#c=y:rT`ZazDDDD%bZu*FR)X0=5feUK2n7M15MY7)G[.1XV]WT,yzhI r|?iMܚ,9l$÷*]"53 $)%:>-8㥌.̮<˫y\:;: l~3UzYJW]>vI:ɻexfYN|kJ0 )]$uI8\=9*Fd< +251W6$uɌ/Hs"g.;:W llYJ_X`J6mhF=y9!wlȿH="|~r1*(ؐI=QT>]XXY#P%Uy{&هUt; R0cV]T|[zO\~^>!eU&Ԕn[tA'#JYV3cf$̞1aY*:Yw,J&""""""""""""""""""""""""""""" 5HrBܕ?__SҀUy^vsI q1_єzUecTltI#F>ws8CmjaKPNs-}Q.HBmR|jAf +`\^G]&ſ1\\d)edTOM2ᅤd䪏9Q[a}񪾆eTezrը/B)oc2j]S]Zmj+w+ epJ- P_ +и,Ire3j!gE/EV?H%.Jb +u ,b@i坏~7 +M\IVk5o5|\?dحu [dG3+[s_&UY_ v!lׯMn%vN_eי^EW>. +6u3?9E+rWeU)w (H#z=}r<ߕk[*ɮQyQՔ^GwБӮI'rq^/[F9{lBWRc˿M-}vqtGROv=yMU?1 ^7\\[SU8 :kY +ojyv +e,IҾ1]Z͙5msdo*9i/ ϛ}q0kJ$ +#*[zc} ql$7*;33)[rϡz,O.GްL+z2R;ǹxWlZ%qޫF#@AaX +\M&5ZTtQB =SмBVƩ[G|mOdxW[7&ũ؀ $RIMoьs7n5c}p(mzá&o*Y1龊Mu3:'Eua>%+݄̈,y]CcG0*Pv޵v|jYSGy<rT3 ^Kl.u =֬ +#Z#iTk(ЖEty΀>ӮZ32(BZC)*@ -rH܅U@L>+ص +Y=A'<vUݻ˂@kRU`oa-FF zy˚r`zxؕ-ia>̯ ˡkZfҔTPK,5|E#EG1Լ#C^tj״+@׳C_Z\;vҗ[00}c.ֆ|ybםEZ9da 4f7 +"+LPy1({w/Q=^O09hR/~kLPߵP|s6gmx7%>?2Еb~ރJ}}~fߡ+6F O/JHqO(ߡz _(`A?C Sc~Cz ocPރgmz oeGއgO?3Џ6gmz ocfߡ+7Gߵfߡ+/oДOC+?lc{,ͣA67̟#A' _|O%OF>?_7(ҿ>>c~C~Sc~S)7(e~=? >?>V~f6?3oЕO81ǘߵfߡc~F Okq(ߡ~C~CPߵPߵTߵT|>YC+?l6q~fߡ+?3oЁDZ9xm)~PA߅WocQ9޺@RMFfDDJpɷ x-.Tczs3{q"o /IwTW;7Yo^:=\Ch(e>( za2.f|& +<-pLM~7~:g]M7WS]`JJ,U,N#CcU8E,zfcUTI0E[21$Aܬw {$r=^*ăԁCMxO~.6UAe}@?4\s6-E],DL;[cZI]Ļ'\_jȨYb֬0^f:czqK}e\|3!:ރyz/L2R;Fc N#iPZsXvIl="rpq#rc{*՘&cqlL,Ƭ)p|GNSųG e[g#ch}c=: :a(mՋ[Yk**f OW@JKv"RʼDu+,㯶7's%FEcRR o@='WwV25EQf:KˢeuyʀeLXx5Y*̽ yX#D3Y‚O@O,ͫ]<9va>[ӕ^G8Nu|9Ks_PՑ=w1JJwpHQ}OM^/yy{'sfQne\U֞СCE&˗Vdz^UpwLuC#;x6M鷦޶ݏo316ʽ(RsS $; +L^"+2 ?nw).5\G7f-9|Axᘙ|75gg~uu*F"}#Ƕ#nklg N,Pj+)뾠)'T]VE:{oQ?~67f8`DzUzoQ n͡[z +P#Lo -+;رv t3߈q[02q5P8ny{{#Lݲt:ɛ2.^uYnԢ1^~Z_ŗZ鯚|: $*w>4SUYѹOQGFzP-ey(תw {_oToꤗ%y^m!֎F(#Nt; 7.uzyP*2Ɵ5,Ƹ<U\޶C8]w$&_[ڲ^KZZvd*uAG/1$KXCUk+!z2bqܬrq6=%m:%)~b jpq}(eLt ՠkYT@~H=&xaoWN~[]A|*v!Zb;$kܿf?ZAѾJw |ze4)Rъ @hS׊8}нC{ +YcCrBZׯbLN/qȿT)ވӷYJ8ݙH&:+V@Uz\s CmC*v:uY-_*T>zw)m +@jIIO[y굪p]AAO^!)'Hى: +&xWrQugڒʀy37L%>&m?~nO*^3$.*-wjO^nNvh2 6YU|mR +:蓽9?TWmL FK3/,phsTe>[^mhe5 ĀzD4߿RDFAa?xs0+]۷1ܹKQ/C]Oy 1ɣ)=,F7R*f΃(Gy75[cʊ//2UJmdhCIĎ-c|i}mUUىef(O8墧?YJp~d1cc[M+cdҋ4+O1yG~ߎl9?]qٕ7)wQU{{Os7'}U7GfeYju,eec5=ߍY™38jCU^=DTmk]]o݆e8[Y([]' 6/V*Wc"~nmk5bzOv' ȲVuz5iHl-ER):'BDp(?aT["ά5}W/TDS{u,ǰpWbcu>`#=;c#q2>~Wr\6:ϻ)mLTW\s3h #.X_:[nFF-G=7K15nW"n0{h X=&Όkck fK +l|ȔۜQYNEvs+grҊW[qX6B5RG7d{'N.ZP͎̼c7]\xEx4s*NaJbYq5\WSIF4eD +ͥ9KuۋT5fJ@ ĝvQ_ !T=IKylnM@S3q{eQjxĎ`@#^ñ3Q/?1~ݳa:TzV5۾V5oB8d]UvIvT_8ޗp7n:&MʄR[z9ĸVMf:z+)♼~.@Z@P'}nd"rrɹYjJ]]=y!~mt6=mU+ח`%ٚՕ3; L+\w6 %Y++;.-Ydx+-\9U3tn*kM`z1s<=ذ+PtX1fmmyͧԲ2HgB>8,W@t9lztȋ=2+SUk}~/ʭk73zA]XƗ|U{!*蝖=mJUߒԸR ++sz]ztɛvc`Mղ5U" :A;^!\TM7g* +IWZjC`.~m>̈)fH]eIR`]iW:n{Q +,5%ۦ!(>F}GmPA^'î/uZuGR?Yw@* Zy>Pזye+x1j6~}z< YȾ[B +]̳ۛQkX8~=f +ȵMt,R vO`>8!v%d,6z$Wdn=W2r]{]-66:?&)qOWc<}6<~v@_A7~}>nu7E,W|T=L^fqRZFAɏ%*ARQ@{8%Ty nQ#K&YVp`\ʊ9Pyp!ٛ>MD/J+9 +Bel 5:9؏eq6ttg| +LjVnfT7bqb=F+[u Y]G/๫͊Sks[e78:'Q=}\CVEE[i 3'ۣ<7[b~K#rO_$O,.%j8-v\VT?7mǴ2o)uU+do[zygUJj巭G~)[YMkpA\|#uaZK `ftOs1C'57<*{PRR܁"6Nqjht{xigv-%BB%zGVV$'u"/8 EEؽmUt &Jc%[#6:0OIè} Qq*yNB #/B)sC,,s]bf +p:'ٞ!oL˞D']yD^[gkZ'ϵMZ:bp+ୈ-zٖ KvޏsȯzPMI՞R;mww xlBSbSohJ^F`ʱ<#8t/LF8`]V>0ݖ'* T @$ )Ğ˰n˽V(OT6μ)=.4Y*v1|slɪG8nEepμް7io h*42؛H!A r󓻔xwOߓd5+?Z F7#]5fUli(W^3ƥ2׬uc) ׬Gh5sMJJ+KYAߜ4eyB4eRX`,R  8c;2y9_%ߞzd1[eK;ziW|>_iin&bX*HC?\#2H+(zJJUKB?9'd|M.xp +}VP6vN'|绠nttzҸ赯@=\Dk%~xײ[weu<*l޴r\򇴏~ԕT@{nnSC1r8ewڷdA `ԭ=*ĵB7]/!}=J@zXOXk-,=/(=}bWr-bL%DF{Gq7״QZGYpLL]6ƥ u*f$KT'nDӾ)?6QV"NI3 +BJb6᝝`; ?Hd:ލO]G.\(g^W<)ȸs;J΁#f3Įk4Q k*ё9<>_ ɔ"RZLnW{ԷIvSo.nX +zFYp#R^5]"QGw2L;KI%w2:%w)Pee ЦSz CS{+Į UQ%AJPrS.e=`WxcW$DELG\?%3}s#/8uz(k`נ"ĸ>}* a;Mځ9]ocZ&1˸x¿$6ؑ`'xOx-S˒?(7?~enڞ7!⸹,/20)Nvyzgk*Ji}k PI}l"Of_ZUYCskc4@x~إ39Q1ځ`}}NG#>44S;oi~p~. RU oGmcs/ќ̟en+lަeK#`M##aJ5!UEevfy.#s׭k\}fgp8*WZרGMyv؞p +ë>T v~L:~ 3YPW}s9,{]?fHMD\q̢ ܤw.yn;JЗG; U2JkVRԧ|қeDب bdO l|ZU’ Rs'\0' |ĬvjPAr<5)+C2 YYC)ܮrJIp2j;ƢZeGy^>?"cyl؇IX?/`i CY`̢`>񸚖ǵ\)hSe=Tql^T_g)m u܅PI}N|s >U7+9WHw eMW~ ^]{&25xNR.L7 6>6B= )\ߣzy^%0A_\+=u%|J1ei<:odks=%ʭwꪶXil:IH01LC)^҄Ĥ(uS;ܨ]FqJL(A7H:i, lʁ187* 9ш=A +vFpx鑇P}P& +[۬v̺W ¯.l%:jRWq[U+DWrJD)PebWSr v2J喞X#rP:"c}ݳc08sX]RDF8EylK]e7Vf u: Gw4rTOOHrn(v2Ule:# |'pJe,.{pt%N;ݏ^ ѻ~gߕ{Jz9>}7|x [z[d&zcӬSý|vnc]XO`yYĞy| w6ԿP7P7#[]z/v< M3^ g>&9ϧؙ|efP/ dOѮo䃗vFaF5ԙ_mqP1:y|c-8rl+WVyZc}3\KK~-O}vO&GQɲ?%Y9:dB ^ڛxUPQB ˭k]<[!7VRŗ+?qjHRr݌Һ!徜EyH#"w|A 3dO~q]νȕ;8-v.MvT6lozkr5 :qacə]cZtܷ[YN^XeP PLw*PDkQSp)*IP5)gnbR (:HKqԾ6>M:Jo=Xuv~yd[N v&Zi 3WX#/3.ifjy]LVg^oJo]J)+bDzIm[ [T\v׳_~Ej5˻F{-O)j%i_ $X6;KxW!oEVHV+ʠnNXܬoRHʃGWm}^9YcW<>_We +Ԏc$\sjd5 ѭAca<6ߐ1fMW c܊GcȬ|r3~ʋ8z:w$'^ۭ#Mr+ڲ2TJj%%w+"SRVPK5+h,ul"16#L4f6o>E}+c57R!!ʲo|m/n3G̨я Lv)!F{$-eج=|pz혔x3c/k6UF`A=wO+g\ȣVBbGy'ijsjqq-/ +^f,Gs#4Yy*k ,& WsEUr!9Kk@=d\eԑP4Iy1ķr#%}.~S=cpe! +4zI.;#*+*\R^`9@Q'ѪG ջ]We%f\?:.ƿ e}w2RlLWcT l&}{ãk*4ԅUSFc+\GqNW@[mG?71ooV%\YWChܥm̱ƸѦᶛuzݷ\_=^S/F-zedNB)myfz;B"̋mV+pCA?87cOPQbR[q['VvU"_㧈0!y4v:#$Vu*SIn5jQX}8a2) +k-khg^J'O +B6p=ql²΍li23ӻ)+V,>zKyD#pee׭ ڃZ˷=z3nPp0Oۂu܏1s~ S^V7ϟiwL\|rZ1',[f62do:m~6>3vcz']}`<0yYI:]r3жP`Ahk/w7te`zc*LuCZ@, }!8v=A?o9= k9zDuG1C(ͩ@`%ZUE`ܿ1Գp-c#V(a =Vq'T#/' Q_=Y5=xS-D@v +52 LJلmUu&eGU=䎿nyp2ɩAyDtκE>)kQXsB}g^ɓwtǶbd,=y&jՊї`yWl+FcM:v#II鋂1oɸ1>;@B'Y^%+̗I 7ICG߰.<jr[F̖2ԧ$P FQwiic~rlh= !cVeZ:XQ]|e.9RMI*RcH==$bW \glc;:mCzoLFY -uUzr$>ɵ4+k~K8u]uŗu +)>d7L|:'Suq,uʻ5 nDad2arK T..Zܻ--^KTB~;#S/>ymnmj:u^aoY uׄYz-i['krC;:gULk-Juֽfg~<㫿dM]Wø 'LH0k88SeeAtC{)۳w!v[ae/nF͕0@mz#u *9G]ܖ"DՆ8X Gx-}Uro +t1'=&Ȯށ׳y IJ1C}>k#$lS '$' ſ"mJYأV3'Emי[6#gIj8^0bk CR'!f(i޴AXA#uժ|޸}8Gc~`zGB 18r 8!y+:ozѓ"Ԫ:-;܇'5Q;rhe"[]iRw(y@n997҄cr8|o߳e5sN;|u|~Y5T`ɭ+y2򨯉AK#tz0Ex$NBeZt- ;XOE]L-Zú։u(5l w1e-9y =m |u6b^f;Ԅ,o|^ae +oFq^߁b~ nT9ߟGLk-5dRfHyx|.`[=o@^=P>o>8*ϳ,^=Kb.ʺ1FBuWS֕f嵋2Lz=̥HJ/9`:yiTt64VlP _Xq׸X 1KlSc6^]e՛5]7<E|jwu`ޱgro9=yb:?^@?L>H+R&w 2Ѽ#Q*u#:;Ե(U13eJe#i4Z7uE_d )t5p5LaTA/ z>jx^ :*kr@=1;2YUwESDPIVpKYT=])$=+1k[ŬWAXw^#.UdkA}a$kHNfY.r*)NrGg}LJtI#"쬈4GmluNdюXThDr28F6W"5R_9tvdhJ5)P%DSRԮ9eäx)Z Q&+5;Xk06~ +4:)F@hN@z{F5)+l#z+y嗅Vzr^`uq얲sKԧ Y])Ժ%nWs0ܵ9C?) tl)p/H03;g˳'ZaP@N~i2ˇ3}71ŗg3 (އa!fcOI==dQR"}%&+ohGQe^yspԯ,9ܟX9Z(ЍujԨPeڂ%7@/USoz|Z~MZ՚cE {76ŸpwX%K=ܟ!.X#W@;!vyLˈ0DTrJݧkdC&5Kߦ_8߿'.'rTIFH\:GTjPd$]lAԠ]JJ5j5)Rיu5,kkfazA أ].J\aLj˴ɶT4Г$wed(nWVv#֥{JA.A }&qq;+dm*:4UE9k9yyއ3{N:˼ @5. )e;HoJpjY+WJOu]̼>WhaZc3JO#[-*9• D%LD`Q."%e'Ų?!f5K8gXi箌J2JJ @0ebT)ƥ0e@V%0#R`qʭúS„'a}]['r;q2p + +ү3rި${LȳwVM;=zy̌,[0::ЪCqBWX7G+N_{Hj]P C K7DJFP:K-#rFee An7*"VR|dDG65kwrԈ|%7)%T(;ʝMupDO9XS+)]nVSzis je% 0%D4w7Ke@7)+%{KA+C+PwR% +SRA(%PJ%eJkrQ+<x2SVMJ@5kN8pg;Jtp JRezY\Zì4u wIN0z:JSy@ʓB6~]ˆ7[˄reܹzJ/YRDOIMe7YNҲV95iѹv)S(%i=eP S%ԪVPA @ )H5<_#N3}:e>]+{3vR@cό,+}d(`t7g_lⷨ.:(Vy_u=;w6n>Ibq"'][ϐXUJf>zJֵ90o/žÍ'p{/R}<ɞ89q_  Tޤwgɫjv@{<̮>Myk[#ζ=m]V:baIt=oI32TʹWAmuV<oBf>v:TokTV;#yu2˸-)]r*ٮF,=[ı1ْWLSMYXw xەw̷*X+ F“Ny[Ԩrg%2|W:<aZrPI'w360oZKlRyzo슱^cqTSbV{$reK`Nao>. N^$ e-*rIi%oƮ[XA=O~[YW-@G~W,\BVۑH)v~6=SZNxr+r|}|q~G^o:7*׼`ߗVSk =xYS8;7xaeS[ݔ J߸dm;ڊMoymOlT:o+oŢM@eU*unSG`F*~$/ +H[ fFI o&faE4;Awl +4U6xdYoQ0 s6[ ^ބ;>(Ƹ8C,7CG84`ëU6.BYUi5^m=|xp m)u*kAe_p;6qEvQb:uDUe>__~ͭ{ew|;YòI=>Q38}澤F XG8w(qtO^BFfN/N&峟C2Fm׎sp.C= u6&Jm5"TT]C]$reA +0#|D:/CPIS$o6ִS[2Zט`<9]fl7"@ 'ϴ`Eu9NSˡpnl$o_U@Mi)*TVֆ\YS9)r;ԆVoWyR\k6d_g!j!7=}#]񏂷(nV/ʍ3cmb9$69{yJۍUy\Y ujv|_ %gOyk֥=munQn5Z.uveU a +^2VFSx}Bq{%S򓲼˿nx~9PjO ^J(##DZ#1qjD~U 'ȯv66A.TTU{4<pT}*h(9 )u?/^5)fs(m|ۗ]NBr>=#*UJ%> _/]-z bO<SƼt J޺ttKvT:Ok4^Z #l%Yn=xZ}m m1]J55f, G~b8;At`qRթݸb=T3k'^ N!rh .:xIϯ|yqyR39{phw]YNh{:O~/Uk>rހt6}&Z 6Q/S&z +8z#<̓_|UڬǛuBl̇\m+Jԓc־ml\z:j);HCviCH*`JJF2Se:KąEc7<ϺAZf bzl$lf˭;zK59[s+; 5|)GM D 0Ngt`[3Xl7/ߜk~:[D>(M'״;*%mvkz@\̈́{gZ/mʈlĞʣ2^"22!ZٛPH+NeeD *N7q,,pO뒐=MV"5L3\oW'&Jl +6Iؖ6UuTotbQNN0%NG`jUO .ijoPOu= /IV)TO9Pt%T;Mf\,=h75A({ls0]fgܓx֫ثc<5_Ur+6Ϋ܁f^se,כ&f\3ac7t)i!z=A'JU_Ss | b')PDUXX-u+b~Sht~_Tu EH̫Qmv AlHyO.q|^#hZssu=<h$+lLtePshڻևrNMaPGMt LBܬm6$lF˻#{@ 7''.%hæwF`1j9yuFRa&v^+3rؑo1v>j[kVvv+b;,d>= e+P:՛lyTd`u*e%u)QTAyu k0(5\ޜg#&7]"xX{XȊ=ږzR.|yY06 +چ&? ݣU\a X@>a:dc0+UD*[b% +WPH!aHtTەJ55,5wW]yIU{7Vۢ`{ș䒈޲%H!A3" 3hlcDeԒugL֥ +tlL<.^lvVmsr WF2f&%xteFԩQH7]~ BS\ֱ.djvu^('S~{7X6޼xS\lWP>-a%)p)xP[oGQN|IÉS~x$Zu=ipCگ%.תv׼̼{ zs*{6ܡ3]cX|oުGc+ž +֍G{P5b-> KTkJޥjMwbG_),s?2UsxjB˘I '/;ny[a|H|?.cZv}&W!, Aԟ$ Ap@U :%_~E />nǢZ::Hxئ:(:1^u 5#%oj2OД<#~S~DcQة?BOCӿ֘yø}b{*Ҥ3~'zioxʦAa >S21+T鱔U+X5{}Xpj4(x.?Z2OДn?'KFðaUXuRQԯZ=m9Wc EmSVV n J%@|o=iX5>!ӌ/kzV#TԪ\g^g^r#Jޱfw,ُM@dìZä\zK:ˉ% +uWSWbV*FΌqIj v;:B{FW]E%Yֵ,݀$nkdY lۛΓMMΪ\A`;}2P5wzeѕRt/Qm,=n}:JJPӿYx{AJ~%;n!KnZ5:?Ga#~ +kTt@ۃYn VDNw{m~/ư[%FEe?fda(\{В\-9y..;%29 +9N?7`Yvfn5j`U3}u)tOqB85QmlN߾R:Ƞk3QԮPrb=_7.;|Y+S̼kLԮ&uG2_ +VPԄzͽw6-Gq; X8 c4$-1)E.(^zߧyqS? -| cc^aBלg<b@T=@#ɰ/>ԩ]J2>rDKzxJJJĬ U͚" 5\/=HД;"P%UXNΥ +Ԡr2w/a-cʨԩ%5MZbq/¾}s؅Άn`-. +IRvnQɪQ׾̨߾IRԡPwt`)%e539殺8ȯgf_`Lnn6 kV}`{mt#.oǽ- kj9ۨ;QOl_H.pjU9?'@kY40x0 %BZ'21iAM{A=KEmt]Np&֦H r!=vG›eZW]`=Ϝؙxy6T9/ʪf^:ʏHKP G ('zD(ǐ|3cx8T+) *Fb (NnVcԄ+U_d"gs;3u# +j =f$= =#ȮlP1m'j:w >z'%`1%yYQJį|qN56h5\?z5QĻKH&P v6e9Dk ֥A';ʁU+QF{DMkpeZL҄u +excb˱s =]V: ++5S|6=RqX E z)_zV,$$0*`X,*r`Fˏh <"ӀW^>>8v> ==f<Ē;wb~y(wECY4'GovװI*iP/1:d̾%V%0 R˷J`||:G3fj1?C|.lJS}%bSQKހˎK|u{AXYPvw*`Ҁn ʑ+KN$jTv\GYMtܦ(H'^rكN5Cֳ< P{ܐq[E}+"@ H:ܮ3lBJP%"\Dpһ.=e7;ʬA.^Ҡo1a+QTDJJ+P]K@O.JɰT[͞" 5,wJ~ɐ;Jr @ "P N=O6R-#P:ƶeS.԰y5*%: 2G뾱GFSy*ĸutHܡ_Lj]Nc6*XGBf=2ou?F Y]ޑc+߬f4Jg{Rc!2TY[Sفؗ2znK[Zꡊvte^Qh:;!}.R<6.ޖ;t9t +6kcdv;yxQr˽#r:[8~9zZCrunҔaUeTgk[Z?ʾkJ99B0;; GSў%gǰ\C=WQp9UOF丗VR5RԤ[J*%#g5<ݲ7zkƼyf9]8xO 1U}Q̫Tm=<Ϻkg{|QwQz21qkKk?؞!͡N<{O.e9bf]ʄk~+^6V>=2Gfyxy9zr5:|N*t3{M".W*[rҟOrOIl>v7?O;ghMt7qqd1\˴rVF]|;07\|]~ I?7'UGO y&6_dmCNp{(k"$fvUlGBղzms?tdM[kDp Fo{l7k:=u5 䞞D&\-Ltk +H7ֵ1r;9-^e6 "3bq O@ >/|U}d5mE tIBv&IrK`uES(0(?WN_/l9"ژJU u2BY1hN]a}Pz] )hgM?ʌ~(^)ſO)~'yg[_O2˧[U67*7{F,c. h?K*K1E_:wR>eQHvskgͬQДJ;Jjkւu)+n5 D2VP]<_L0tf5fr[oU²ˬ[W6IBhuןMxkb^]^|c̏`5]=2 +hf*b :]=s*VTm4GPcЏDpLl*fށb@Q$ߋ]v=9UG_)8\?'y@;wٖL?V<צ-NN+v7e?02ߍqM'wyb|Vyl*j7WTWx.% W@y̾^]* ̭ýu.Q8-nR:@ƌ$)SG33f^2;׉ח<P2?`Sj[QͲlI;:6^Zbj@Dk{8EY"EuxbsV!``*+J _FY%s8/GLG[ֆ _F$ &ڇǙz@?rF\1]R::3ðH8y bo0Fg 'R'+TPI '+!|} +֦Feׇc[Y(*A## r82%wd.`Æ4\&!T<:A~$22_WZНӱB ~U [Z;nT_b +hqsH=4GMI^ n_21'uj^@aG{Ou86ɲ`,;{ykV+VI` !GRNVxo<:.Hva4b2Z52O)x ͹:ҝryGC잞o`Bj2^C m|_ư%~2O^įcL.?Jәr]|4o[Z~&OSb`etsFLzEK6lXyV}57aՁlb@Tznbes粰*UNbYt'W00ü.{@`d |&yv6'e3|+5wE˚gZi 'c#n1c?Yg'vH4<'*cˣpkyN_W[I +q(rZA H;U s1҄˵B=n_-V Hk+R*dvW a ܧ^d)\+O7-P:h".sx_zjG#/r$vfdd 8S+̬Ǫx+ {cL95O^"p"mvskN>CjNi~f5TՃeHt|JYuL_uh+V`[:Wv9ןagWe6VaV/Wae6ָU0e0d? +)$h{䉽G: n Qy3+stwoǧ$V*b۔͖#?NU ˢ@ln5G)[ܡ՗cJFDݒXU)ORAG#fod=qG?CUEag ?DƼSs_5H#} }"d&cm=B:Ҝn[Wb.-CvELNןn?r#K7ɲb*|@Ĩm!'yPy/safzSb!u`Ȟ)]vq<* +M{|{ײYq^(皵uH뵥z12W H#cL:~LoJj#d>}5܍{܎r8*)Z9{v4~n"ev]'<"8 ՀFϔԺ?`oKEQbvG[ԆAZc9>D%2kͩ.#e=Fzmj k@:+xpֱ`DjH79mq/zl= +4a}J: ~<[@* t3SEeTh@'߮zյۙAמ*Pt˱iеEu/" C~UP!T頒*I%FOsĨEkvNlq*T5P𼣗۴`ZSvUF>`Ll|L5V5;Pb{_-?n%Wءo%jƮ4P p覶+URN^(5u;=h^d T$l+n=W[X0 7.9@ mصd+{ҵc%)Ȫ}a-P|:wJږX O|,mu}b:+@G/.TաQR^GĬֵR*ƭȼ/(ݥk;`uȽ@{wҪR ZQOA#q2FFRG*8=_z" +qpŪr3K8abz_8M|(kx*CZUdiB7:րvBz:ZoݹG6}n{w#C`!0dԺv* dهMF=T~%bWRZPeD80nl5^2E+b"ZbA{|+!h?~hr~S ?d2vSh+1|; $ 9d}/!xu +>fae~bF[xy#祿Fr61:}OPq{]~7se~f%ÉY%WIY#k}Լ콿YM)em9wR O'U>oOj wO* *sn f\,w<̗:Vd~Z'x9|;'5y_?ZʮF_99?~Wj (22WW9/9_Fex9_e߲Y_J|2:n9ֱϯەq$-+4<|6̗d2–۷"ϷO/!vaֿOL7tv;,)?/5<W _?R /2pe9m|/6;>þL,e7b&I=ٳ]Dr!u^V{0 db""RV""%L%fޗW0d5gq;2j6=#ds 'cDHDDDDDDDK^ŨbI۹3=mg"*yNK-=cz1>.fӂKJk<,76}qY-nZ*C~\[sݳ,DZu)5/{F.""""""%%b""""""ILqy5V|;<,NJi2yM }/|k̥|7=5p[&UA),k Rv=5$2~(0O#r3WTU=lʧZ6Ev܊clA;;#;:JpKǔ Iz~ j{m..+g]쁑jf^<f/ PG#n~ =Sqx`|!qֺǰryQyv'Gfz=,tmW|K[Fv'{Y(*3FG+4[bO'+^;k+眫h΢+5YKs3z^ݙ}DŽ:p*KVrwˣ]}3dbgd8k\(V,UztM}8g UrPQJrHB+l:lhJfEcpd$zO(|(\(8p P\' s'fq +3hk_y+iUՊo#s +=mZE +s#:e9v{*'筗*GPB k-Kx˯&6*Ti{Mfe$CzD\V3譹KY]{A>G߲Je -u*-ʨn{338Ued]'ZޢJIY\C)w8Fܦ! ߼[ɯ=.B;ŚgY3^Ǭr.I03q:Le)Z6Sf-JҊm[lNva`w#˷wj_^,?to7ٍslk9|r eMqwE 5l.+l7YJZrHV*۩\ 3hizTXfb'U&d'mQq(Zd2,&F!lJ+SDYgH -m P (z &U8|CdY@aK-fFoRިZNaX䌋kPrxam=6OJPiȩP8uWeo[zF^OZnjƴT +w +,:$ Y8Jm[hm ya  u%"""""" ^Y\W?;L(a^>"q,E\z) bKv | gyE)jsMʦc[<#=~)Acd)"fz/B6z p%^;7#re_d#+-Au'icp#o\:Q먮ej aW@wٞ7/1+ʴZ5PF|'nñ1ں֋k6zl SxoD18YRc|'(y^XZ@vNu؍c*Et;+ u +4 +zI#!AF']5HJ06[] oS`#;/6Е^KRrrk^rY}Q&*s3? 8mUI[vJ5e*`O yWbTוb\VfY 0Ѿ[0exD]mkf'תChy3~^E8)tB,5d5߃v->5a63 /-@roy +>|i:~ ֯aC[,646G^bb![>ԯ3d?79%E{a$8SׇeCb 5<8n'æ&JR* A%W@G~Y8;H<n%zɫ6Rӛ}z OF_uܹ͕S#Nsa +^S3xfW|U˭*RUHR{BSf3ڪ-*\L+7ͮxpŰx~UkۮavjCo +ˮ|CJSXu*,Y2ó62`U]N̵[ES~5|ln#*\9}rk};o6sYQ<1d*݃HЃ)¬9, sҴ Z'ClXNOoGrI(%X"ms~\1F +WN1F/,ب,%~)jrrX+jWccrK#4ut7'55kc[J%ԳS|F6Au$>k' *;B t^oiL.5[2\@lf@Jb0YK;hg¯ja7ۼ?`V+>L U_âhP\eeG)o=׾L6 cĭj g)|y}èg*.xc#fjDoŹ;0Fדu+(X6#{cZB?D;0@ kW.?.é߉=""""%7+`H|KY؁Jx)~XIXURPBD""y|! Ø(b`~<,,:`;RV""Z,RJtDDDJH73/yzo3a/lm=t==Kj/^j0>jA\K%%b"""""""""" 5ԉU.@^F#RH?7C `>' ْ#eNgKKP-g%0(˽)e|wP+juyLqƸbw޹0n7C?Qq $[w+z/EK9O:v,ؚ_Iy k5"ڧ0mOAfMwb^SЍ<}yơTszw<ee-e$:s']X.A1M+G1HF,Cë3 TۢWK譬Jjk5*yIR,SCk>kXޓnƪ߄l6HYKUŕ9oz+Zxx-Sz+Ycԣe£Vc^vsf:($~̭qr-JQ*:n]LoGs.<*r+oG9%RӾ:#7W]~Rym[3;%MSZO2 +O͢6:loIP# жn@;E^mkrZ6")R@%N=Dd |jY8tT.ݜ:k=&y# zt`G(fSKY]WPXb/RGϡ|?JWQ+kU$:DhgggWXк :U:IMdž(RxTX*e%hn-/b; #s#t~ޓ + +sj2$2tzt=x1|zԬ_ea,%6xJ Ktb{I\^JÄbΥVF#|s2 \(|d2s12jXH>ECYz{9ƫ5)N%YE*U*螼dog܀l{5EYП2bkގqىeLKr@j;=dI|'mMӛ^cJ6Mf;WΊVäu${)sqS纠9dmfp4tztOJr֛|dVK7!NVt7|kL + ծf$#jqȴk66jb9Huz̆(#jT) +%7A幞Tl ;wY`d^l.유 \r;@tH5鲺[My|L?ueX7^OګA>QװVK&5xBy:,qO`)*ĩe齀lIy}–򮹎dE~cN UrW;#lq,_ +Ts&ƺX#nd$0(HFOl\FIu̪ 3U@<_|]"g|# 5`F0w.7OnKb5cbڨRBrrOFS9NeY~+}޾IUV2DlKadWxk/%tӐhml'yyZr_GTx[:$XyOA!rq*a+@?<*(ZʮI'tR[?kq/;]r,Y=iRpbҼe|>? k[ܕ}2bk<8PɕS;VTPRͱg>pn˻5{b8n]-{&GLjsa($[jyt9{ +H +nůsu$l2z+dGX +eWC[|4j'o`q1)C­5k1e |[I#d_M)|URG( +NHL 6ĬDD׽6[ҸxKxf%Tqn^5twפzR0/h*'{ :=Z=D9gDD=4.Ʈ>Mk;^Ԏ9H@^CDr=;O.*F(:; +M6V'/"5ה>1NU5i7`u-%\FR m~mͯ͡fbȥ\!c]~[_BKiNul/G8G/]R_2TV$1<#C==!eᗅۜ{שmm>IV"""""""""""""""  )|U, UfO1GR9IN]C-fTO6sS})-(.X}=^%lUlNק0q$bcfבbb#swt6 {4~ sT{>nRCu h}m/6KU$c,:5tةOG^Z(yVP~~O23xUyHwYPB yf2W~y5Me7).}߇,~mOq,"@bFςmǵO'|ݽ GĬdi7GrDz{oմj(yK$s p1~{NF-HJ)jȠV o~/n%|]KV:`g dt ~n^nkc5>=8Z$h#왼 )l v՛lyoZ."T\_w_ y?m̜QgtG}#Mk; +*DTGagz9xgVj[{Rّy~ 7? + +Uz9rOٞ9#0k-ӿdecp2r?Gk+#$zbz[`H>]\$Eگꐅ-Q$mKxZYQ~](vtq܂FpIwUE5R$38Eh kԺƾd`'s&G*s.O*|N^fbFeZ:ut݅^3UYw(׷SҞyݒK;6ТuYe֓}{Ӥ0sJYUƮʹºr=`oC0x6Iu ,GyYcs#|J5*:H>=DDDMoJJ:Uu/@$yv?ZVXRvRy6Kw&eA? +*q1WҎ 1Ŧ-7]-`ԞOj,ýu\K~~azDq7o +G@}nVfw-:Kx89(IF/!=˴}m[oLNZiU@1jĵ7#yGߩٚKR~:2b"$OMi7 +';>R@@>GוڹXSmZ[AAV:oeb""D7g^qI@Nc]p=fWZٿW8b/?!RHGNY+'ve:=#x}'(^o= {:ls2b"$7^J kRly[,c@FHSYVKjdYbWٰ:fe$ө,6/59%kP,$ڙ9yȜcrXBQul« ++X)NXj_ ׯf2"""""cہusԆ+ǟF;̈xv3\2 Jm9 k}dDDDD 7<$5~Qϯg7}L(d&oϩ.ʥijwNnU=_O,n9ı47@m#AM)ܬDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD(Hd`_p^s;b=J|Qnk3iV`vVanH)ܬCڱ^{lUteb'-YI[$drb69Հ(poD^s":*&A31 +G Ffce:Q`ԍnMncg& +`Xrvm:ye;U|տ#WF:#`fdDDD\_z|_ ]]9Q36M3ʾ=n2%S$cpwwc^Se,.&owdF%Pf2/3e$""&>nQůPU +:u'['ԟ`ZcQwZ.՘nkAW~L%nZ^=j2r.G1 a+xOlحRmsen V: +w$w òeBH ӡ6Ox5TT2A""&7 \9ز( s30U=S$=~-v^˰y?UF7NFomOm).ܪ6$-8W3IJY^d:+9=NaăYbu^tWNA˧?C¨WD,{޹ZޏaE3ʻ|65u()$[}M :<;|58hCeS1m^].-tG]sxu##%A bzZ׸er- ms\9Ҡ +HEo^NDDDHJ08c-Jm +9;45'gǾ]kȶXY_ ?>.99WM"`YUDt*i<%,-^GZ* ޘ(lwў:s|Ûc[g[G2kֺV?E0}/VRpvqu;C]O +׍ee5k{$֦ey7୺+Pk.a`^UP@c݋^wMNǴb86Ru 0!pZCxw^[9ELSBVPAȬ4vv{VzE[VOxrNWM[󒃬JYL&ʒꛙC)#`Yo oyz^7bWQqkJ Kt#{D]z9Xy6pXmƂ"Nv?qbdAV[ĉ7$^䭕Y,t :އBX:8ck[W*wI!# YqZqSôu,u2ߎq3G}/|ïdmԓ; .Pi%#&L{rxŬ>kmVw2p>_[~B79Qu +Op/E*s`; HN0v"]@y:#+gpq3<0]R[XO>bnzRsȨXNS[H=%\C:,WZ=u5*N'u`:7u5bWFVzV_]{-M4v3x'N(x9V[{Dl9/r\s}pެ~Gȕp؍ߤ|s> + 6G^q-%1@T#aGR {Sb̯mlU܀0~_~.RfV-|zVC_%#Hn,|N5?$.eɕs%@']߮>S Sb77~><;1OLHrZl@r8ʁ0)>'Gnai2ъ)`]Dq,lQŷ1kEeBT2tlbq|p.͎YTI׸u>yȮşx2RMe,[72lz:/ދ1x7E;yӕ{Ed.}CeQWKr!NGT+m4ͧmgA`}_}Й ܕW[m/N%kW'@iz$u9YnƩQ`%b׮b}6Oa*H#`Cz Aaj}=j"CzY|: y]=k^{֤.BeԗVv}>8nBڞ c>tUJA*ƸZ;q]aԂ`t{ p|1iȶבV73T t\c+*f=e"3tzݺ_GZ.eXP0!BtE -Ӡ߶zph˳7 Ymh%mO+zCHm"պlGF6Q1Bo=G܏e꾨Jj z]̜NɗfeyޤHJŶIOY#)+#pGVFȾrbֶ}BIxǓ๼;8>ŽyTOA}2z"$CTl.G,*;bE!nNUܥIǨz{L գJʩ4ϲvXcz` U+1Jؓ6lWjǔJAga/ *ƨ\*-v;oSjP]WCQ; `^~:uNrt';$oWwV"D +ߒoK*o1o_6_+6qMH^9.Tc[&%uX UVnbg]N_-5!6; 8*k`Rewu ;Gns>BVTv'DDD*y0,M=b:yWPñ@P)vx=HG~(;6S0Z~ s8楪cUTל;H]~ٵA!N>cQ?{O4^ +^v` ^co]]RSlF|{}Ll̥q%ɵKyx9rz&*64t6;y[]kT >=""""@cuMu0tZRbN9_Ű׷ǽ$ oK kDDƯ.GR2jQWem̟3"*0-[YHBVcB/7A0Zܞ*6mzP,{. kgiMݲa']=é3"""""`񎘶1֊*X'~v. ȳ"ɠ'5 e* zo~Sr VxE<94PY]'"jv'DDDDDDDDDD@# h'ٱK[ن?c1%J#oX&YX_~ 0oxjݏa&K2t#c?ADH=mdj|eGbvfn,l@֥+G+n_nNDDDDD$ķ`cx65##ŵZR|1AnOW`g=v fDDHK1I)*qMikCvvS[X*kM䵖 3b""""$/~GƼg 1uz+So3ʥk6Uކsd)vbkd#omn]BV8 d.ř{Ot)d)o\>z˗ڤ2:&qSÈ̎#K9Y\r4G/I4%b""""""""""""""""""""""""""""""""""(X=ջ~]DDDDDDNsr]ٹ|!-gE`J0""""yW3*0%Gz:ޏFze7B;3"""""%,[7.V"""""""""""""""""""" 5O6UUF2#p_4#e ;.N76&ZG@ܪZISWZ$XGueszor(bͮ:oHɲ52-QzttSe@ll5Pw3'f` +lVfYouӌtk8F +PvoE-Yba,WokYgLl]4=d%0*~p}jbq.%_ Yf5ryT{_3YS*ۨ(mZ-[*%ƉNYWٔ(WS\Weu+?'EPfDMT$:HGX7QJ7ۘ zu~rpGg`I3?9n̫*QRfF uDL\[Z%.۱vg_ [WZ(zssozGpxS,Pu(u`/]ۄTe5ʵBmr' G(f mFd#ϪG29WVJVRŻc۴\!(pOE;N&}9?_n Kb%j\(IyGGcpd˨]juaV'd>GKr+l h:~*ö +Q_Ձ鱳3\[M|[VvÕ$hc.J3g ou}d 2.IKJd[y;w]' +0#Kh*&,cpп c]KkV]uAFaLxe }ʊs@2I_5tSr ړ 8oRmGr|5^US Cg5 qܹ9uӗ阯GS˭k$2%հ客U\)bhrqkKK++rCG[ &?|?cf(aR  Bze/#eVU@B9YA=A$b"""""""""""""""""  =9Ge]oc_"!v$NJpH4Qƀ DqBvv*y@߳Q,R+s5/PU-ϪB3!!ZRn=!ṳ7 +긷mv[qɬl]rG"/NL55qQ(Mu̡ 3[>'o2~hOP[ +#YCkӎ ŕ'4_5{}ߊVߊ/ߓG=zܯH:;:IOE|Ab1kEkvS}(UToQ TO`xq%{8 ksZU E6 ޏ0ҋkK5,kώlц{WѕŸuuUSkp\#X5y,CWZ U~ :NJ +sWgll s-†ֻϧy,B_=td%]`63;8ǭatdZֶW$4I{߲Ic;'-U-OJ }Hwz;)8 i˯0G +(r![Szz=kۆ3nR!]mTkAf1cik@z;ܗlKڔRkiE]dC̤){b,Z*>#P]Y)b:+Y^K[EmFASJܻ>0U"9zVۮ9X{=t"1ʲtG޼w 87ܭE-`Pn`zOv~*xɢVl~s<7+ gFMjP`6ǛˠxۂNMVv{W*3󂈣\穄86O4X8HZ*5ԯ7a3+;+6{Ġߒn590yPsD|#/0Sjkx_5Uff 5l6?mP K[^[#horS5ޞ?qY²b̊b @DDDDDDDDDDDDDDDDDD0hd,j@lNR@ms)  w[y9c䖭(e6Jr0eP:u%+038YZJ.`T@*Dzbpw=3ހ@{f\DDLJ0>M- +Y? :sa#L Y9y"׽>'.#lvuo""aepľᐌkPu%I) #}e18Z.˚B҂O( +gs4LlbP1(o`2Hc.3ކ@}=ɞWC40f>d +>OxxjqlwƱRT]t-IW30E6m ;u͖'QJ{oZj @$ZpV6C_;1@;!KTodS©)@BAQ}<2isP@{R~ixd y{^R-eaD#-Rޒ!nPz=18.]YG-4g:k6Y*P(:lXEͽs\vbR A SNsk|׳~r)/7.Ҭ9 ~c. w-7"P}KÍ.e%`Rt_2ey&Unu4O9Fb"""""""""""" _mU*Qzwz-/Sb+KK!߯=)33O?H' +_R\T y;aԏfŏzd֖v0FHq|pOpS+q>%.=ZОQГT|Bx^ص\Ұ}=ɗQ_#.tr?#́Cr/71îDDO jk:U'rO@$_6Ҽ2J1,TV{" 8BQ"ي_ ~瘰t+g⭵lro<*Gu@ nOxXUp/ŭY,nIR{&iͮ-w[XlEqbۭ<5Z+X.TAfY<Yu PB*vKˢ""&?p=cVP;8 +ZYJk&d.Tkl}`9Ȝ m̏31KؒxXnROoصaTQ*Uz +ʚT22;a-v5ǻw%"yP)ӡ:&:p|Rrc/(^fW; HdŢntUNr@k[Us:=xgfxU'5TT.dy5N9Hg*b;8 fT螌@R9f#fsfV$C+r}tiZ80jP-J"ߴaqW ׷S0v74I0+|y!s*Qө/emV; +dV5ӥvCΑzC]YcpW$bHh +T60RvF¦ZC`1xti9yͽk[]ziffQfVb[eH-Hba܅螚[5XΜMׇS]kDRYxv^5-^BȺp6tAFQBK9|;]9+r݀$o`osѸ +Tf +J)='jx<ɭr_+R(44 =^38P>z^xa܊Wj6M/nE=>;S6 0ߑF_4\]+\3kv`:<ܟ,rk+xNʣ}EFǰ30J.8 k +Y)Xv8qs R[+/O1'bl|*ƶϔTԠ'oJ=_˻Ŀf: Nn]{$%X-vA*zȵ׶1H soAg$hV:菣yvvRwQ{ɸVhLOJLǠH|ڪ>t$Rr؅dW@=B,G &]hc_o^pQ4t6;o;ēlp/aYVmވK3Ӽ5brl r}tξܜ;qj뻓hU +$kdp*%I#ZJp8U1 +v9lz2y +[ =q6m~/0޹רw i3pP[9XB[tnFzKoܙ6jʢzzH 1n V2ኵlH yMgiĢ\dT +~|A"d2뜶kj}l2oW+Yo@z[XGH~1n-v:d^KLrQڗZΘ>íApX8/cZknP]/)%pl6ڌXd[jC/?7$}0?o'#$\\~u +\Ip*ƿ)/s׬ۯrkjz`A?AR {oed/A CyXZ4T=:n V.(]Tɥ$Eޯ7S{d\\ߞ_3b35}pfUp)?Rj`=ZTt,ȽWZf>@?O\'2ssh[}F}A5o䣧yPOE' ĿR 0]a ]hAfCg6$+[Ϡ ֶ`ۛ恻jzy?rHםEwv"nanY$خH׆o{ڟ)'/U~=wvAW d˘<[ ^8{sAR} uec{lH?muH]:볭yN9D0E6̀7:]N쏫s[*]"QԀr}@$dG=ؖю:J 0>~[4.o9>No>]rۖpG BԖ N*QT/@b$gϫhR.6saSgۿdpn*EExov7`fb&mf7J`uw{ +X'e1pNJP*}R'oqL_d=dDD˵:QГ&=&\\ƪ  Տ-uDgY#PG]3W/D?kQ18Vzج7C>p++kcR^lvANMU[$m ap:¸45\.Rzy2B""""@zllZʶ{mNPw/sȨRbW2p$iG~)95lmُ.؉W[z{'gc\72[pT׺7J4[}]/wаïioO3=KnCw?2Oښ \Gd"VR778w7v$+Ҥ|BX;i; HF,{*9iffi7:yҿd2+ o'%..-ٙ*Aԟd/ǩJ."""""&&_ t2|Iڟj>eXñmU{݇v>13:6)F}=k]jQB@ (Dj5+>窓ۖy+ { nJDDٷc=Ewv`X*3oHg6r lˑ5Lo.s3ҖAb5R(t΢*[6Y%""P@`ݥb""PH,)V~>5KX=T@~.S-ϡW^dW`S KRR>qJD|+K1 [ + l /`5|| l(jAe; z 6fSXJ;V,̐uFp:qCR.{\Jʯmsب=wg\33-pcs/RB% >)jkjW*GS'_u3SPBGt{z}}n"ˌjUng Ϳ~׺yp >v[mKXA%7(WОTz?etw7?2}CX*)*~`apl(eŪǭ9y=4~W*jV-9Pt'85bqԨT/3xu$s>y"&=OOL:x |^V +Cs>%'uXHݘmWPG(e|]1.WX78:2e$J UCfYcP(dGw ^Z&ǨnLɭ]FyǕaiĸ\+ܫwZ:^@l!0&nn#xm|DDDDDDDDDDDD@ ;#.[w^շ#xVneYꬶSoj^OtFYZo0S:߫3_ y~m }nS܈M4?̣gbu}U{nURfœ[E5%CYm[\۹ZҔY^K5kxj{ _?dYzc]^/Nd5ۑ9ߐ_«%馰xG<ŷ-GqO(]~%|Ry{?**[H;蒠wNHRTlo[>cfq&h?Wh#Y!z~5͋Z;| +S3 mUֺ{Z,dglƿjjZ9H`zw-JɥM+? =֘ ⿲42e}bڇvM1Zql鍌+M=iz;f{eWʵi^m]DTH<fLkc +dߪZF#ޢ,O2[ |/:MfY}ֶW6 |WH +W>^͚Гθn+YZecH`lGQ ó187E ;X!9vfŋ[U'0b0=N3+~6hMLd߀̺٪Xm9(z|$8Bs>/Af=$/_Wg٩ ez5_ף+z @G}y:ﮒ/\~c2 x̖(rsdo~/ŵO>FJ+(xTGvyII {9O9~3Oד1qnd$hrA<XXvQby7q'7adDmhR c } `oOuT"(UPh;'^e8(l(c<&UƊVp7wAuu2 \vv`y:7:󔣃S.lU%aDޔ WNU.c+syZwo6:acf.q\ yށuR/s߹3&:3,?buScהjnrAy7˾PLؔ8"Wk!4֠yͳ%0xF/ ,q GMK:N쌌AC@urw"L;3:Yr+"2Uf }A>q_zbXBI>@LU[2-k +D. ##,U(aqgA[bz[{,V.t쇗ZjF?g -~'BN3}PfRzOYZeq)AP*QjI*oX~ZԧY>khEމkO5ozIJWؠ}a#ko|OsW?7?7!:7_f<Jx#s-ݴ4: kS/q$b`ߊqIXXˌoHxrc_ܧw׿H) k歉FV(˱Dt>*-\#%$/C#|Ǡ+2F]eo۱5MZxsҍԕ7[_O`LrAN66 .uБg6Xe-XA<0BT;(QniX mw}Uɷd%b"[bR +ҵkUkFح)5I~iOp1nfяLΐ~e. +ezkRdDDDDDDDDDDDD@#8_bhZP@νd"4B]"l|{&_Mo^5.ϰvG{Zr` 2E+v@&Gz'ZpFKv?I$̬1h!U۔UVuKumYNԏh3cfqp9ynTP ;NSLsnp'&ű6/7+T\eR6LNOά̡ o\v؞e'j+` #r̬ |҆XF}u9׭ٳƫU(*=B?F1NA~ a9@IF6 rG'hg0^_w2q ud[bc̠@QwX'1rͩn OiƱ͞'?-@V̉}X<9]W) }ih:On}&7-G>=P=I#e uZV5v +9'6g6UjRII;-*)@( 9@Bˡ"[ĸ<*}^+?=L?E| +a]ڰ9eJGQg LN;Rcv"""""""""""""""" <Y!>V.Q+UYRQjRuҰuLMw dd1 '[ש^"f +lK!NEPӽ%v7Ӿʟ8-+5[?91rm)>zH\N~5kzl(:_L6ǔklK1ejsQ_ƮpۗPnbt[#ff'dG [G sۅT#Y}@6ƽrTȪϱH,1ZիR*-kR'F>)xWdSj(j%[ u!B u,6fVV#].פu'F6.*/QCpP6ܤ:Mę8_( d@5J'=t"1>E`x}]?(`w;'LbvG(F'zٌUߦ1˻-bߒGȱUbA4ڜO9);Mfb2_;Pyb$>9 yZ2:wdB-mz$ ų2nFfTp49;kFY_/Ѭl7[m?9 uѠdq6*]TJ1dnC@r2ƺK<.ODnFS=:NW7,VWҹ9ub˾FyT{RugHH`@ pD!RT+ e]ِ NnQ>ov_̫Oyf2W~cqe<##c` =U1$.ϺID+Zʠygבc +!;=Zչ곲G(o6L<2+jPUA#.[0"7ö@Oe 'GJ)E NN%9'*]Z=Of*#%+ue=T㱒5M_*P[A[NVB +]i0oY+Xt5F{DDDDDJM[ܬ/2q[<5 ?/)rF\oϧI5J\U1v,zw>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 52/Tabs/S/Type/Page>> endobj 156 0 obj <>stream +HWۊ$z'UCCX`ü #kx%wdD^"#[keȈ'ιO/^__Oӟ>|ۤrN!izդq]'2{?0}9zd5|'}\ዹ‡?ćW _[k\@|@TOKK~"PcƫxjsXV:wčdzduU5Zm%&5]0}01VU.i.11v-ŭ-~[1;Nuۓ;:X;̠9j+Hٗx 7 F΂s"O &dײpy xۂƓ+9P ,OA[蘗_|?ƍM,t0P`?uً{;i3zʝil0yKw7Rֽi eSk{u dy]Dyu`'#v+TR aa_un9dPnSLU t|U'IdS!l[;9$%,+Wdz= +rT脿ڛ<5%i#弶3 +^1~9uj m~U9^{MLτwX+5˰ ASf̽&UlC0&/m=K#. ʠlʻ1k+Q_Nӡkf~iTe~HEUЏ8%A&F Hr6WU;u2/MOj&fqñf bQCIא,]ԠyP7qIk 5Zkf?x9c +KVX +&*K}ti7!=BAq|1qygMjaN2cQ+qwZ9A׹]ungjT{Xq$:' [ϷG\[x1ܰ]#u#qWuhՋG819 &hJhoj2s2bRjդ8e(rFRK"CLJ3|#Qo48%[i$\L$7ҺQ,Z6hECԩLCB59·p@edXeu5űnTYh "[D8нI&kW;!hvU{#^bWX0 ċM%q.5[!Mqy%GZ=X0޳G!V{/?tްg;jדB 9+ BH%:zVoqx ?)m.«KG[Z4U7(z|R3Z;cEZt:VDc,L"渘q_-L_^S᳦D),J %Z8$ +gyaԤ!7K. hPQgJ%|8G\[>5{e"L@nT6qo/6nw ĵm5@LϜ@YCP78W>EDڛ֡}h$w\+][@4 v$' +ADZk=#zM:èQ9 {S$ĝ%O̫(p|LQͱN 9"D)Q$Chaub6˴"j Rz;j닲_X*|DNkDƕcB1Ո59k.*9U^0eꍦfsΏBYղ-a1Ԧf՛ ՘!I +kyFoI˥80BB+^Y^N3 zsf n$e;^J:vӯ_>nQ\-nN5TvuE; |7tem|yߤ \q(P|p9 ux׭-/,b11B1@}+Ϫqž/ έ+I60mb¬E}vFu^`!Rqݍ%U+ZQ +zTyOvVN6I􃅏0 њ2 AQ) sO@4ԥs~'OixZ { nHƌ 2X CƆ(((NdWbZΗ-#%#.[\TOsWBr59k4ap|)RIGEBRp] *DǔZCY;%K Νhy0Ymor(s ]zI J9/YfkFm0\^{H!TYЙ PyuY۵U )5u7BN4 ҽJ<ȯ CA~G;pOެG7|vȸܖM;U4nSRnH 8盃эT#1f46݌rmn).SV7@Ğ̫k{u +1TQ!qDۃ +8(F +gAfmMŠ Kye74YMmB NH UݐkhG֭äJ4SIJϬI6=]ӞUŬ_+ESOtb>ZX^HQ-|](Y/zlI);,])#S=o$,"Ɂ^Y~38'vh_:UΈQ{1[Gݟ?øwJ0E\A #aW=ȉ`# A6|%Z1vL'H),[L[r-6)fj_0C%yg3R6ێ7s,) +{y%yBDI'XV#>_vazr/mǐ-(Ԋ)X M*FnC3oQDؗieK[,恄C-hqh}Fy +y<+<%ɽČÊ"*s Z&eX%:9Jo ilS܆* 0<֑!21/gt%<UȬhƶfQZD%v#Egn-Rj`MتxѢr^ckύ(ƲIDZ &jx2;Pg7hUjoViFU6"+x#>/0\sFO7=A|OthEQ[,&D{䮲`ƌ|OrW$U{nZ 16r>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  g!1"AQaq#23BRT$SUbr%t45CDEs +&'()*6789:FGHIJVWXYZcdefghijuvwxyz?;'c:p6i؍;K3kk+W^6=d:`tF(HPIL|ޡ^;fEP.xϙbYʯ +6O~ӕoU곉`)FeEGGcΥ4Yؖ:*IuK=>2z-h ۨ%Gguɣ² +Y,De~^5[[X,(X/j;10Sۗhb& +mo[e+s37.5sШ\Q~0d[{Q/MʒWz䬤=$"aY+ȰWa9r +⼽Z ?ՅpW)ȵbYC o_ YDeF` o'Dl|t%!qܚpx:ցdDDDw_-xPU  )GK]u<+ʯ-AT5,ܮN{}W2]IQEv}첯~Rj"" ) 2fEwdM%w#.ӶRyą3ӧS7QmoMW.+QV9R7u۶w3KYNk#`y~3nFr,ՊX3/ #K>0}K)DK]بt"zU̩2ƭ- iqMR4C݅~n{+ Մ1W[ ]~N!q$Gøׂ$5ugr_ZImw;_sZxOvKu~:B=&L[[tI[9,}|>nWQLrzSUv̨U}ObO; z6~:mհGWTԑx$wN9*έvMz)qsUĪ+D=u0|V7~`|YhwRߋ$l5n[E+ +y/w:7j[_G&d=dZAsf3/ϸm:0gn'zG?>21k\k925 5sW[Ƨ K,MXrOzއd5b,/ZwFW)sS紝S'=+nϼ_μcέwu,M?==k|+e*x2q`|?C"k߮ _ +* +]PczU: ]\\NLC'adeaو[+WA}kK-gm2R$_TNmULT|9u1F5.̑c$~,`/#̊o, +R(6>`nT? +}틽Q`oٳ]Jl!aRB8 yq:M\.-w4(Pǰ_=b;*r>OH[:ڕ_SbA̱&N1%Zkrܙ>Wાعh5[|l^\lu*JFčے{AeZaX$0S +R3Yncmv$>Jt|Z),R⼎[s2Fg47W{jD0PF첒6EHߞL~n{ e \t l| t:mVPާ-nj9_߼XDB VXuNr'QЪN,Z|6@$&6WXTَ-l.Z-{sɵ${}$5z(ȷgεbʱoFjTeq?! 7DS=k<@PGCZ|EU;NDl}ND z]+6 Jڬǣ˗"u}_IEC1y? ++ ]ã\|Jn-p Ht_NlvwcNLu*&XUuK0'tt72qP#q-ˍ9kY{hlBJDD)V"""""""% ԬJJFr|JDDDDDDDD;ܬDDDDDDbP0o,ՙSUrC:GB۝jEscIޛ֬##b 1z`J6u*ɯ4U [~3nde"32Vxl׸-X8ah NCElSmd΅U wljLiqqf"Ʈmg (0 ;;H)cf_H.;OD#6^jb>OiwӗeuFte*X:#L.հgڍQ 6W*T7]&Ur[+J%3 $o~DWqLUl^CO͍FJrqiE}Z +uw;>2վݕh+w!I#R{Nv$ov7h7;%/wZ!}'IeuxϏ3/d K̊f +׊$ueujU,@(fE;;#Ύ~y_hݱ 7kgbr#zmw2sk&E\rR`Kr[-(f,^MƄ]@.+^\޹]CuAJ v'@;[LLhs8Wj_M ƦUp ǐOyFM+ҫL|__jf #zy\GȮ}N*,C]j`{L&3: ?I'AAq[=/3"۷].ovp75^cEL_C}~DU%hk#}߶w״-못,\V`dwޏ$uU䨕XQ `X|A6e 4% +`2o:q/N! +v"MojY6\H=ǼxZʿэkUhdAخDXQe5\1xܐu2zScNA" +[CzޗgC0|RꬶE[7<%>Vbqz?\ FךAJ[~2j^Z(Ck$}oVd +A󡳿Ij-)VnC9TfJIb~::I̞F1Q ISH,Theq.d5>FgU*kRVՏ|9^*nZ>.uyހ8o(0;ŭ}WaR#3}Uc($6L[ʩ獊2?V˰MIUu,5}Ldk,`Y:[M%lF\ + +6GFHsJ{IjR\4j6r+`l7񗲺u0sm5 ^6<ԭ]o.[q(Tl>$E2ߥu~ ǒ.Cl6Οs.u:&N]Mv(,oy}BM p>8Tzz [vA@+ll:?{}{ @n; r +mx{\hF}D)A#`&e)]FazRM%*?~ӺM\O*ۍËk|X||VN mweC}~[h-p,lx6~'""",fd Z®c 3T71GJ'(Xi+kb;]̾m}V#QAv dc.^^VA_bHQ*۝#ڬ+zJˢK3_ErzFZvWRmHSTw/X\U-wOKV9 lGbtzzbd.S2/dJF``x߉cT* +*(k@uj8_ e!l'b\F;"i5d⽃ml[m2KS3jU6*Zap@aDcܫzEzǰU}^ bz`7ŶjJdJzLJ'FZ\t[?t@uJޫn6S`qS#+ܸ.ĽF&;}j-]R^)_Q\CkoPd’Ŀ}v0pU56?2@q]0ȉ[T|{ɪFENY= l}t^=C[>lC1 trʚqREaZvv8lh)X&;֪[%R.rdlm*g&H]m[k7-|K/+4V9tTJhoCFEXƹWozk}8KKl_.؏j;#c;ޚPsEtWjjoOm1H1NE ^cl{8HulE#&4d.Qp'%]v?+iqstn +Y}fj)׀H:'lT( qw皧m?/[nG{lG}{-KJ?Sb.{ύefƵk{CZwjTlI:;@.{3Ҳ? CmTwW&z=;~]y6;@ܬv<nLZ(MC`6V +o].l_߬xHN}cH[(hG.MRG.oZrǵk DYC~ԀB>Q+< S +_|5ا$xo, ^tuD'UO⏻/filhe"]~iviZ2h{F٪G :ߝ)(V&dR^nruh08\[c^9/_52 oxmuhWbeu,D7Ur*lN/]xfTQ@vټddd#V +EEPu +;] sʽ̂%죧5][m$Y[ ;=DDDV"PW`MUg2]Bs>_nN޹tb^rPī10oQWZ;͸(P%dGȶcV3F|.u|6eONgc;R5)`$wv"%s"z9_['촂}?~|&.G_ʦڪqK$h= ǰ yKQUW{[]ʪI,j\9}Fv@Ϋ;[3?OGnCm_%pazaJ`XwzqĞ+y>{GU]Ӟ몬ZW Swđ7'"%|me?)*.2)ĦoYl!g`37X/JowvJ0$` tNUBsRt`}vg)wf +17C'2=:N?P +n7X`P];S@N@'O_#Yk,n+ 8EB 0z='`r?j*YP/nM10m@c}w'2+ʭm#U \\ |euܛ2\B,Τ +>ו4}fl?Oe [vr?R;';.솮e$y +.]gk^XUXV cdpn'Lm L,qzeFJ;ս[3p.j):'Sv'䞧] +qnD֣u|WoE1qͶ[cXVBrN7Unڮu~j߄w$s?<^~דo}qw'}ŮVnNMXP}f5Ǣ9ek,q]{ 7[Gz$o^+L?ĉfL0iYvv}z μx}&+^؝nm|97s3bRk}'٣j~ilɺ+[^\kV{v/1pjzJKmB ۜz>}2Rb-o]FMku%둗uJYRδdx͠"eÀ xÖLo'&$_5>Aw.+7S8[F+k[}}kجOmS^[Q)6̵tqZvv ٬ f8*E +ņ;b;>I9ȬO+m.G mR  "`Qб!ڽO}|7|$3:}=a"(M-G/%{;&қ+5G6mV8@@޾'gG}}GbZqc];%NxNf?QֱMXՐolˊhMLl +a-YH:ee;VA{=Eh +ͩfgcɔz$r:Hܟg.||Bskʩ@z?]v$zNnV:: +g{ly))5^~R"6Yg+WmXmNcū +Thv""'Iy9k[}ozyɭĭ3#mo#@0:'AWZ*Z-NzԔ*)^(F'ds=SVWZ$l~yzV"""$GMo +ȱ+=R|HKDDDDb"""""""""""""""" )5e߲VSsc⬃h#6dܴȃ[22ak_$"""""""""""""""""""""LظsrS 5lNL1ZوTm?@ig;ڼ\kχ*.D ܕǻ9 qB;˱(Ҳ;0ddTi XsG-| s#ӇF-^\VBTy,fV}b PIU`rLT|j$`%II*"""""""""""""""""L&.oR;tS,1^/Sı:?kVmwak|AlA䟔^mq[b-vJJXU<HӪ *1h5l;(,=Bؙ3/5rʖln":ߓo%}9IuS@VVg$* $ s:'nα +]hT+%V-4wxwE)cB˾?_ձs* Fw=+1wVGn==C6J.L;VPFGtG?u3^D~)@S'2U[tއl8fgڳ?;/-:EГ+;r)隷rs{ 摘:5*6RkRa*Y#&n!S' '*ӫ|q~qE}n2Oϛ$LeٕV*iDXu6>BV"""""""""""""""" L' t:6Dܥb$]sg㺭@)e!O%= ;*@-m춂s^ lKyx/"6B@yw.]Q[^mN#ZjELJ]ޞ _L,EfMY j"!5Cb4{zK33X@RȥU{!9 ]\+[KռUX@7 + #i90pq#2֮t{SZ >?q6f_Vz=yv_L ~%0qǬ_c.A'J<ȉNk`tS$L +&!@1M,$3W-}\Z /eē'26A1zRNCXʀ I=KX]arj[T6ձ-tAA$d'BA~oQCSf|-$܉?✿Qi#:AR(t9A[c􃍉y~M@}4 +dRwreL+z_Pè ]W ?a*`%utd?BeIkٲkv>I(|q)ԬD섾e +rޏ%$~mL+(T7R6 ,`a/OR^~+P~Cῄ1i WeҰ֦OOdV_uwBo~Osufd W`7ZZU(%:]͚VsT[BW骅~;:$5ԬDDDDDDDDDDDDDDDD@)XIX(N(RbL)#AܬDw?=rZB` ~nV"%6JDDDb"%7e9.;o螢Spesj*~;}u=rw%0Hv?){; |'ǬrkX@[#K;vRʶVrR{ ;^7#)/"6u6;nQ:m0v4 +opqn\OTޠr[wN]JNvWZm-XVC"ď+iVDe(8662=I>*^@bF[ѺuԮ[j +J`9{ݴ?uiw\սD=$:K|>FJcu cVYjuNmoKQUM}0Cqc\HؚM\>J8 w?]%Oɰ^BԪ=cp CVڱڷlQ: 9L~_H3K_׫(X*p} ^VFItzŁ `T:=~/'&:X""f'@6I&mVT0 +IPtĩo#紈+k/#S r#(6uߴ-RTy]?܎hl@ދw~զ}'Cqkiͳrܽى0?JfW .W:,[~It{2lWdK7ɂ'_|e딽A x>c$E+(q_ꉗmd<ѴNmXH =u.WK^X"(;{xMnZxrO$X$yq/N~8֚hWuĐ>>_O MaXe !3YM+[Yu̵W\؅6wQ=+"Z Á!@H;.:EkZ!Uy0キ̹.1^\$B=$b"""""""""""""""""0zՙUbXj^P{=^GT JoKJeL=ĝ4z.i8< y H?L}7*B{q~ϮӣpƷ955g~7ۼ dnա^+ :oVh"WH Ty'R쎥쮋j{ZAeE{#J%]Yչ~YX:YBWjDYSVv37 _4H'.^ԯj, eT*1^j ]޷!%teVEY +BX ŗ@δH&=\+k5X +(RJ{]v2tky8j/Ž;g_9Wޫcȥ[8Vg@dl NoWn:n DZ;C:f!j;R}͹" Vں~KQ`((08":wJ̯C 0-j \wC%#2hRWbfUMRo8$|{LNVKA(f3;vFe\Xm2.ޟUec[zvV{wNjS~}Ek6#:׺xSٯ%-C>F;#d^|VGG/eLv$> ]2:%".\Z,G9V|fgENǦK[V_}xQm 7Fj4t^V6.A aD";|I{IbbTYXJWv7TJ^\[!& 쌛#[|t'Cu z嵔*ܑ#=r[Kۖ,F`e~O2ƻ+@Ÿ~"lҲ{ څ5e-⬌ŃǸmo_{^et^-n>Ux~W|LU`~ú[-U+9`U/x{c4aH n/UW>=Al7O 2XZ,e#f[yT*cG<18ykq]_v*ʣNKq^^Nr~sΊ ^v +2~M[(!JkmԣڠqP6O^:NŬ [v:ёKck)oP]%b[:nDq].=k*ǹRil+&c7mh&3ٍuשSR?ȾmШ5^|{ˣ"ktuWiEm[Ky ruR}J2lj@lK6 + 4;>~5lR6 R=Ա1 E4A4n'~8}s_OuSiĵ?XA0'踸QbE_RaII`簞=[H.qr}FR- k:UT}5}(;gZ1WG8Ym6WwQ+]orѴr ‹ɽ]9n1̮IoTc=RY._:$w1q0s:v~)cgMͺǑ>Y7LkYòv_l&eMy&gÒ; >9=Ѝ _G ECp_ +Z3.oFfRtFq1oJʠTiSzF.oN8YZ䎧)#G#gzZ%!P# t7MЍJj5Fj5ԬQYMЍFB5OZ+W]RqlА,~l|o2u1hZ!'pI?3D`w>^OzSQFQhFjV""""""""""""""""" "[99PTGa\2:^oJBY׭ȮC0f.TOOoR+m^a~nfOڔg`y$23PC W*2 b$~oұ^xm~dw}DzxRBD !0b(k. u5㳾lN_S5PI2szwLW@˅(wXTnL,n6=,Y+X#C3&vy{֕[Ze1?? WrHֶd0 7/r= c±.dt>s +GE@Ď3""""""""""""""""""""  =}'7Pl"#Q>BԎn u#go<Pt.M ]ySa`lyב$2^~ U}A͌ 1PiBk`gt1Ӗzf!k-z'1qY [tՐ@÷&ir1:x7F0 F( +#eIru 1}tůG=VFoRVJqwVt̾R+5U6K-mˈ?)oh%^=me  +k:FoQLjz\GUQQ[[ğL|.fAF{yr. q +nJ9}A/f:uUTŰR6.Z̾[]10E6ǙD A=vuco[eXs+X\KWFNwmV{޼1S/gz>Z݋12.v;u%iq)H6v?P=.Qb=R{-j r5|dJekRP=rΕFE~=+7'*ܪ^Md*T0} ݵqNUXu=0Tl]VUGΞu 7(@>e=5Cz_-Pw=DDJjx=ZQt #{hU`%b"PmlxJҰB$ w=3DDDDDDDDDDDDDDDDDDDD]lr1>E~Zvȯ胩;}y5%0du <FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@ pCA |o8 ?(d3FFeUcԪTNjo8jmj:\aotA$b"'PH lzHާ(wbQf+@4>$L ΢aZaVA??ש.U+::$21F=3."&GTf&`\G<53"""""""""""""""""""" ={'嬛[Yş#T/Gff} VWZx7߮оߙ3M.d{@\NLHd_2=*9Cl++ r 6=4!UBX0@{swٞg] +XjW5!ԝ7}猛=l7,~?5ީYpز:5,'qsKZ(;:{˹U懮 Y赢Ndqv{$O[גGEWdU9MADjw8n}l*O9'ēV 6=O''h5-k w_^ILKU)ȎOH5rjLLDT$ h'^uG}7*+Hcr$e 6 "XX'_ yְfJDDDDDDDDDDDDDDDDDDDDDDDDDDDD[ .ƾOb X)V%mJO>1!w}/1i 5I'Oyk{9ZtĨ5[s{݀%|%ޟ?G~Uj@fv>Kl߿/{W'Ӧ^^ o{S2]Fj~1dv} aj뵯pluU*b6H΀&թWXMSofj`u^O_]E*0~'a[=|5-uw,.Jem>SkXv̀OVGXbc ׇj6QtUUQOINX &ok +G=`w}ݑetaoTA}*l~@$~_SH}yP ҫ1U ڒy]?;Mvq޹\Գ ~M21WZP4@UpfoBYQs%y%}er:Pߺ@jctU3 ({q!b5sdzXw-vkf:w(֏xZkXQy۶Hs"""""""""""""""""" 9״+f{CH@*-#>-@5>D S)Z0XdPB;TkoJ|X?D3b?h*t.̐w+ޏC&j-QřNx >gDJj5+#q+)XMF+"z3e{eg:eae[*mHe#}2}pituV(l}&nFMX:(3̓0*^]y33U$|vlȨР$~{ҮJfOcSȷR'#P7TDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD":3,-f׺Ɏλ ge[ʿԆ%;`I7g*UNR"Ajƀ̟3+ٍFe5ԆlmFck}1p>WOL,~B" ;~PӼz]VW!m4T8( +6Nz"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""4Oi=;nO xքަ^b\z֯P/N(M{Cֶ#cCR1 T7~tgI'}{,G‹?J(I'p>DDK9VYUlW0o`tNeZCWX.ԒqA4qbS@ ZM_v齟YMxlŨ ኏ ͱ.JnX45k^Nv@?}oRsV#A>ԮBe%}[ =č~;%rnV?<#CG5Bm7zV㨱*6{`>eOְeت:Y@MY,+}Lv][-s#iVRA˿0ޗӉfM 7Q +'DrBŐ/rT`F2k՛8])y^_ 쟮8xdĽv/ +1]t4Yt~_O=5z~7Fa.kt`J9`ĨܯM:hTlCĺzgm;_t?N]ɽQ2߈+~RC|KffE{Z@Fv gddsE!`oJrO^bbtN= _ntYZtBiuK^u9 όՊ5WƵf̀~+e_fXVZsJ{v1q:XvFEy-Fhq߼-|Czc%.mM4N~& ~拱TZ@s'4㽰Wށ':lU"ְb + +{x]y/u(%WJAvؕ>6[9X͂ry2n5ekU fջ; "XʧBװٛUNŇ<^ǐ$C?,E6+IrlwSٷ6歅kd؊a1!X8KFhtcY׺Z |8'1+-~&qAˍl)$%挋cB!d:,ĮF&GdRV_o]GJ{f6p.BQ6 c%I@z%&ֶi :!p;0;e='YUL΢^RXyC*%WKŅ'Dv;2c996c +`B,`)vW|YR=o `G[`Ǭ -4}VHַ{]fgu<:iNF4S\[Dyhyj_USz*CQA=b?|]Qsr-5R&jO %=b@"^[리p 7-5lmA;,|B'L,gD́ [=BrS}'%)P.RŽ{|KbڡA?Hir**/R>>W̏Gzf๴%uef, + +|$u}C3MAԣ"PB&AP"Ke:䱪e[UAI$wޥ}'}MKR~rW7$am~Mo,;0z0׎9V8𵘎JHGV>%+ɫT*貪ydCz҂HeN^;'&'Fͻ*kmzpG<}pG,8W; 'X%+k+GLjh~VV/_i-AܬDDOzvka&玕^6? +t?9~tuN6lĽcɴ\d魈m~9_"lnV""j}GtZACH ֽށ=&:N/Lk[e,RUx;HgY5Z5zoG6}*X71iIX$F7۱Mo|vĀ|OQV=|::xE'^\`׷z3]P,auر\;WE`~6%؈ikdK|:>@$_MnMmo$a,j{~3+t`]3;-5˂oy^җbىe` 1cEjkȲj꬝#^ٙXuRߓI$O̓,j,Z۵@F =r'gj٪4iR; 0>xg5.]HMHcEwFGD22ǭ!2%FLZ[0EOвp TeAR>E֔pKq5}r@twmGN'f3_sjb +cZ:ɻّex2m_i W@(7/]weO7Iĥ$kXٗ勜! P .H1zCak (IiNrg-\G7ˎweΧҨեwB]]A*C!;)WIsUOj"9bzI}M.e@6 FuehtXlV 6ǙڑIkS;;kw&Ki,Q[H;H yglʕ?$)%tF璙MoS+ёX^+r5IPƴk蛺r.{֕Ss<@C"ɩte:::#G覣X{#JKybdU7W-٬$n>oKGvKnFDHX*ˠ;7/Djhjo[Rmĝx=3[Gɵ h(==c$+lMTm5^-7nPhڐܪ,y%B$^ge6G6Qbַ VY,$h3]̿1.p" !M.8k{+E8km_V䨱,ϐ!@Op{Q6[;ﱭE7ڭ}nۈPn #ǿ.EԭJ֬pt|6")5ҫzqjF^|^9zi)ajU =0o}KNR}v~6Ԭû5)+bBFN|ÿNEwŅ[5Kh|`QR +6^ ~-?͏7s1졵+d;4MGv M"""""SqܬDR+X@w+XMDDDVSRjV"%5nV"Sr)n5 2<H=DDJn%b" 0_T>1c٭vjهT@V}} &Xvjwx4be8.ZWx +Ubcŵc|bda +ymK2}A=o޵կ¥>:|v1Q|E[2洳{B%hq/'D@$IM2=؉59WhںPc&w|Og*~<t:>]%[ṢPo_xU]7zҪ] gǬ7P{h˲ũK@$;#ɶq쌵7n[bl*תꅫczfηhp}u5Z#2B MnS遽kf`jPܔ<AEH: ؃=eRQlj$}܃>d]+{kRv-ΣgIL˜1T|~8`PۭvG}=FA pMn(ˎMq.޷{^bb;"YQ+}Kvww=)[ﳍlTe'd?3Z*Y1nPW/bչswaDgZƶ9~7ۊWi_ ve#u>^^X1=7גqȰU[\~1Μȶz1\Bÿ-4XR5 2rͩnãH=a=Z^#GŴ~]߇雸C.$v7_ɱ#v߸{}Ji}Y)spi>+hq|rI3~kWׄBA=և]=[MYUy? m}eo7ǀB-\FnU=*ķHHurw"ʫKTY`6tw:-ulB-Zg +] Tw#;3sLI;;?~rz""tHo'd=G j`x9kUdze5&C{qz61aZrZ/~&5^GԯAHKgL7?!=ų.eUqkRv~x!r͹`ERYKI1(u6"]vN7|JאU}?}\95"J>TC0o*;Ӳw}n=C׈ueZ6S=yVORAk0Qka_y3/& gN"4~72EhJlcX.W]fu׉Ҭle\;=:wJe*tKffdN]jabC>;n1k+G[xzvoNFs,5Z{A +t6ܽGb݋bx) ~<:Է{mUģYoDx F^&v}2rKj[X慛v?O3;7y}jkW#ʧ-'/Ok Nw*[_Ѝoi،o4V[hOo6*Ce[f!To=.]-(!]9|M̜(lŽTll$ t3z%88=!ԐjT=-e_?f:e[]pyr?ѨLzϝPik,ET"! ;rRO/w+V1#kN z${ACUW":KPςH1ߩ :'\_L|//> IS QH: O:N9M z+u>-`lkȡsL6˝Ա7)EE![?~ٿ&U덍^OL/[Ztx?8.v߉q~d:ҔT7QM`o]xwW6QT ld{+OCĻ:Kftuu_o累[ƳL(rΈ=}9YP;[17`p XoT\cUz_f;ϩZU]78;~W`rC^m ԖN+ j-K`1k;r n 6vT58t&b{iZYlXc\.>~"Gں~F`y|Tb_h›IhOX2vE %Ts7M(fԗ*]Mz^]Y=GMX\p[O=?b>Y1m6(SK7㹉o>@cg#$PB6?9)5mVwKORƻ ~%}w6ۚe|He IS}ײږWPjP{*+(PH<3ϳt\+qsJ1 +YˇPN0#Z`Kz&dy~`1kʤc8e9{-b},L?w%&:2a)1sq؁M"`N2-CqfZ٫SAܬDH|kzgN]ǒ@>?)EːboLG@#ˑ5@ *~V]㏟×PfE+ZVJ rk_؃C)XӒ?3aǹrkKtVqDDDDDP;ɩCcZiFoF='kEAt(t'#{^%)Z)sҁ·"s:6NgS-&Y Y%mCZ?(=1R`Ʊvp'8NGi5M01vv>$VzvU8el{T'$Oڏ'p_͸;a3VHSxԼW (WaISH~'Zߞe=$?ZN ![>DlJzHZކa^_= zM(X1Q|u(v?SЯ{j+gQK@b!*iF*}?`dXV)z6^>읺=BTQ@4 SX;O7cUڊo.R` {eJ+yqw qgRh6 >@-~\G/{(@:;CrR/P xֵjyZ+@P|ʳ" DNEV_vWDH#w}Ynməfboʞ TrL5HloGT:ވ_xj !Fϓbc鞵< +>Hj, O/Mv!#EHHh\T 4>Q n|G-kzﯖP" +5)zOWֹhr~u= ~{?D5HPHމ:M|h~ބǪfTP[@O|N Z 0ўk*QB$ 5(1PHHʥk^;:Q5Cd/mX鯉wl8.5iZ EQ,_+3&_]긄inC݇ͪy~ZCMC%P#Q2T@jiG[&~}n6-]|F,ݹ{UCƄ>蟾gr1A$'3V)r,T+_Y>?- + >U_eBh؂<0z/# *}:> NHWf|)e7?ͤJ~cزCH]_C57jlqfAxּ; v_Cht{""%7^bO]6Ĺ5Oh]8^EfܧЎ5;.Lɪ?~+!αf˂A~ecSI6YT-*̿6ܣy˘F)~yyl.cQMrulș_Ӿo(Zmc%kvgzmYS3X|WXQB^k0>=ozX^ +[5:X:cԤ+@A$n-mr2)î~n\@z#׺`8f5ofw٭)֮_@Si}bl;B*mThzBtN_QZmUaw` kqJtzḙu5UZS=1"ʙh3W,7o$:us>뭬*^(6h |x)׺n.7OnV5lT |5"\LF#^%j<Q؆L3+|Lr80>Vo'W;(`Xs0'wdTY87ECVa#~<s+Mwmح[/ P`w_ { XƸ-L!!{v'[v{A~)g6vMTV:%O @Nr;wXC2̺jNUm$v:-u1ؾF=bk;qޕƇs&=}C*Xk@Mr_ZΙOlLVGeI0~ +)ϙ~^u&խج#ɫ?Rl%,ֱf@/K16u܄94&Wb,}E^`<2\jma!9)؟\q5t{UF1תeUIݩgT4TESb +BX :?2S 3*_v5oYzڒ<}}feYy=7cِoL{ZUH>>DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD,}_>z|wܿ0?.ɭb %m!~̓!rKS]b]V[V}*#G^D2INN-lYi+'L =ĬIvhU=6ZUW+6pm; t)uZ'CNɔɹq{[#1vQ5>ILmoM"Y\:+_U!}{A]/DDLNC楛^`ݿF/zc8R^$Đ5ߞ!}ld'd~R*HOxqa3.d4`cm `({ݾ#znGUb=me,p 4T3t<|Jz^W{Ɣ˾R#.Fq bJٯPj8!+hŭEcU#Lԍhk;gWoN]~,TX=XcmJ95y~EvewLD\j1r {v-G.޼sw2:,wa}|LlGCȌCsRF>~3.԰Y, RD~yoftt0BAC]Y +w{vIӏNK9qmkP3ko30>kT~$WX'.{S@c`:lE.lҩZO)MFX|xjރv=]SmdoUؐ ރ.#7ZrjıQz5`.AJζ3c_gme`~KA>#\yK +{.@kbhn*[d:Vf&&8qFjH(5]wC#ԍ=IھđǾˣ_.;G*"""""""""""""""""""""""""""""""""""""0?.ɏ1Fn5T)_!}9=[V6(Oپl[22IaV IM(B zxũKOrf/Gصsb~mg6}x\uv֤Mw!?.д B|I8ЃB l ŦU:j]wJRzپ,QI=ܑߴJDDDNZq0]0?nMnje[`ܙUn_{_s DHΡZ05MtBV"&Ga:OO>6i_wLDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@\מҰh[3"jW}?N.N=17&?7U+,%Q~g[$|< ıvbY܍cxDDD:vќ8M""""""R6#!CJs_1~cǨ1c_)'Wu"SׯDzH^ۯnnnibGjX'کXkb~Xlj~]h0a Rzܬr8>q|ħ5?Ls_1/Q?l?HSSO^ۯu"=znG+G*GjJ}ibGکES?|?>O9O?|?>G8eS>ۏ?~.Wr\6}?Ԟ#c9C%9~1c_1/SSS)u"=znG_E__E__M__ O|#T,_U?T,O㏵?|?St,O㏶Q?|?>G۱˫W8!?{&حb?Q=-cҗҗҗQ])?Q})?Q)?{OdEcK@J/d[; {~"[BtO܋?ȥP(BOk"/DƟ(BOi"7DƟȣ ?qW[P?Pݿ?Pݿ?P _qjpQ ?GCOcpQDt?~Jz +?x#Kb?Q=)?Q=)?Q])WҗҗғQ)?Y>y}=W +D{Ы$s8J:'5R^}g~z'5G~O?~z'4/En?KJ'*K~'*~'*~'*?p?CW?+i8Dt??Q?GCG~z +?x%Q=GϣXOCgKXD?~?(Et?v?)_WCgcJ__CgcJ__CgcJOFtO~7(FO~7(Gt_~7)ja:A}=WΥo}Wo㞇>W=wH΃ы:R\(n[L<,@IYMwfew\ShM&G[A3"a|xwⷋi?|ᑾg6Gg>Uzc*ET_cCg FI k v_?MlӁѳN5VC*kO32""""%䦹Y}XؙN? G`߃fa{DiTǽm(T[!#w:?k6麻hRl*uIݥ¬[­V8 da#}K/)0hOѺwrxX !$w^c0nJ˰6{ry&2kKk`HAAX穞U7[h%Ba>;r!1CRꦊ2j˪gP)G? Juoj5c_Mn4cvG۹BKc\֮dV*Xwt2iBEK + IQ ChVW_SڮSԬ*JF>Mxzg6[׏$L>('@1ҪI&}31nյ+CX2VܪjcAn%wqOT[ߥnZ}^x1rɯ$1vC)ey5bVZUF|%bSs E踖;Kɂk''k긴V[kWPݘܴUWjR*H]r?b`~OGR97zJQy~m1ܬDDDDDDDDDDDDDDDDDDDDDDDDD@(h-UZJ*"*@%ؘy?V?öcQ\o^GDkEkJQ?,Qk`8QE36"""j';s=gP9eb""""Rrނ:Yڹ߲`z{+lj>tui~?W3]43dzd/;]mcau^E@-| h#XwYuB}>?=^6WߏY8ƿA+R [[[㌆o[15N%~G'^H_J( +wäO&=vMtvUrf*r=Wټir;Ҫk=NXݵ^ k# tanyymZ  ?@&i]?.Mt~ywgT OV:ͤJāãWװ)܍C fpVfr=ZúaeN/H+]B0B +A$v;RCڞчNĥٟ&r,peQFv{=C5:MIoW"Sb-V;v2Op~ܹjdNx4u1Ouh?oP +:=R7񽲱ַ+g \bT(=S6zy%|Sv9)Zwf%Tlener,%ikSD"dc{GnLgLQzkxWμv%gzɦ܅+XwiK?mM߃2]ݑ mr$?QiJ)g45BP7I^$lyefM'ù;G[e־P"5{3x@@|L*:n=MM9"rWEx(PJ|F6Yn6>m'!Em#޵pwW'i[Zqig;7aYb"""""""""""""""""""""""" 03"&MwŶ/v6x6v>|2b"""j^W P|7#3ktuvbi^!b8 ܑDDr5ʬT@` Q5q/}׫dXln:簙xϾ=k+OQ{EBH +Bb^Żk]av{rPUvF?c\g;k+_8$0z5/cX2 ^*X^ Gw}O!3C&q;`Fw>L +|e!G$;~?gRNWI 'a3 #A +N?>o{ S:ucVwă_2fƀΆεMײ_-V!['d%7UV62骢%~O}w3ۍ2cEJAY;;ﶾx[lʵ5zl +ֵvFgU_a+Y[c嵖E68oOOnpSYKWrد^hwK8]l܋}kBnˑ{1GӹڪꭀƮ7Qjc\3s( 5ݿv\+d59 8~G#3%-kT^ Ѳk5-ٶ[]EJ?͗JXe?Go=Y쪜k,^UeN{]٭n㴽g0lw/-|7Q[Jr1(K!^/ىpt;v-B_Ie' Uu(vC9~_n}gf ;St]Shf@m^:#D}N^K}#V+m_q[1l{2*2C|Gіkr^B;{ q 5b/*oχ.E7ZzOc6 +(^lcԬDJnV"aXoșV84(o./l <)XBu5a?;9y֕?gOJn ׽YQZqR-޵߷lQFExDE%&EkzRR| 6ۼW=>ꮵ2 pHmPvQFMX.uD1 +gCX_V3G6tu(dmޭs]F#2ʨh澠@69q'\[e؈__Y}^\By޵ˏ}oz-Wzη5+=U,Z՝T97`?<Ȗ23zµkzY~&6'QkVkz Y"(1ulPvQ۩n5 蟗/L^R-6 +՝P tT PMA@1sz.2Xj*=Tsn v=S uE8oE9qFlIܶrj +}E + sr_Yvc1趺lU$"ň|΄ȈMC.iXP69'A2DDDD@"ߩg0: ZԺ} ^}"߭On|5E5E9pzQ9r.s(jeª( 2sQgG.?#Կ\Ʒ匼U .xr]k3)܊԰ıV`?ydݽZfVl6E =Z$v>~Oh2r^+ ++J2 Oq5% f3r? f3or? +3nr`l߶cܻ[럱3 +3nr? +f3nr? +g3nrF{KfMʵlT m8[;^>oIظm>qζEv{!W?oW?oS?ou2WV("ZwfͷL™?QG5oi?qI6.-4{߱ecu#lA 5? +KQf]X77[Wڌ#|#4g>_M֋^Hb o3WϖqEy:8Id !m4t#GTWWƳf`P̃@mLDƛ %"rZITTH r$@ v2-ֵ9ةܚJW5#Cuֺϗ]HanN͵.'wԺ)_y{ _acڻ%uBʬ*˲$|w=~eЊTR]yS- +.0_Y\V=6\4B5mcW2RUBD$C}|kU˻VlrȠkj۸Wbf^MwzfVQ>-bI;?=̾/4'Im}ȂWz$ed^ JqdD^g64O3:gUWU$K =siEh"Kޯ>e' w<#Y8V@UīJmJt{+Z[iE"P$$ NŐ3 #u~iߑU&4 w򽻏ɧz7V]['*{ϙ]]^cn,Zr]87g?LVێՉKڜ]Hށ'G{2GzMT-╾h=C讁b̪twC1Vs@=bҷsG>A$rF6[zڼҋR"fFކs?uK̻%SԮ ^29eLI;i%ipʣMX12=>Y(슄Z~k֣P|:Qiu>UuzRJm /9Mi+,r‹\+7cF{ȼLtiVc%~H"ai.f@ ڷċ kȄ䂤[}k$rzӳc(7dTmQK7O5ﲾM9U3 %r4T;?|777J%vdb<ϨnB''Rc;YjQD{x{$Ȭި:7qս7]DX~RBhܜq^!ō(}5{G5` -Vc'`ܱ\zWUF@=/jO~Xk3Q~]uzPeVl#0 ndu2JE~YlVRC vFI]vEz +ݔ@܂ᄊ@萝K/pH>SYzu(vbBx^%0/@KÏ.0;3'6Uh:"`7o$f]XY}+Fv? fju `cr)`uw3;[Їק#b|YZv>2=G +҂7H%uҺt.M@{ǦUtS|fQ{?|ίګ3P{B.}Q V ˟\\6J4T񳓗VAo;CI\h|,,(qز G7oƧڬ~e%Tbڞg!,ݑDFӴԲzL +P 怓O_faNV;QQ/cG#()~I-?cGӽKVW鷻{/ C/~C={CۨteIۭZrI&kUeӖE^XZ%cu2Y]E4Qcyl=qnRT8_UlHdA$kU[ >r8'F#Ǵ[MFQmfC<9)(<.?*Ь}ߏ5/"J~3~XFwc'^ųЈ-*~Y mwB;>Ӄ^"UeyX̺*@c}gFg]7*]`QlR7vm)k*qk.`-k?ąOo:5$:_|>3`_P=/d)CߎL8ٞ:OL#m$H?.DM[`dNNb/ʻqm1(N5=*ǽīqƸObd.]Ij +RV5_nkӿug +ϨX_m.1W: Ǘ>;_'U1p"'];7=O>6q-{0:fn6MuZ +w:3?[:uNJ=YYTN !s+VU`j)_@ncrd\mWc(vTI +UrHA?[Rf*σN>/TD%lp`4w_LeZ.FFE Wvj6|v Կ:\X'B傍fp?vNG?V#C1Z2,폨Kmq~sԺ~tqYdG$eq: 8cRNᅣ~uzQljY~A]][3Ыm[WKml +iPlw3'tBKt߃2zn6n]iYu~+k.{;Ӳh\ɶQk;AQ^~3ߴ]6BWOيdt 1pzNm=A8RUJ臑_H 7.]ΆNqqRݩRuDlH|߶ +*+=$ 4:>{$'xSWZZ'gpk﯏KɣbR8͎z[/${4ؗr:vU_5BzUQmGlyP v(rLnaJʷEqc|܍~~.7Jg6Զhu|( ~7/V{G#1IgeJTn@ +ly*w~S/R*m qteW2׫deVP< +G]7+3?"ȶ^ Ik ;&oW=O#7V+뒑}$U+3NB*SQ6*u@'g>sPţ ;qnW'Rs78ź1+d0p@=5-ҳtMc3cA`OF]=S VG[#e`%*bIFjآ)TY :W}gu +5 7S^[;VvӭN=V!F;Htܬ^:^ngUZ]v=?IΫ#\“_n5~}Ybf`aj2 5n=6 Aԑ+#;;.J=Z,+ vÉP|<>dt!z~WeWCG|Gq3z+oUp]Cٜy=5R/ r-ٿԝ^33fF6e=DŲB̩)OceRڲSf>K.d~WYI>}Ce8@wԐ777'W{ZvtOx&MoUj UXHҮAt"EZ=SЫL`[mY5h.gW])u)5u:񽟸n}UVm@:~H m}dxc8`9 sY^ۏ%-䝝x3s:&{^Zca>5G&-^ Sݾĺ'.ާFSzf`Ir5+ot,Tz~"ZXJ$)Ez}n\nn>WL8U: +πG2zOLεɹmI"Ă>K鯌0zsfuZjUڙ`tݑ}ȈXl_wPkqrmmnHS,K}˼ݢj&NVu@A_LDHtu%b"jDtj1ޗ7 ?"75Iͪ%C 5 r[qmmuzƦoe,lErIPx#cz:r&a=Kڪ@ 6ߝdMJR:~!Zg l|{70܊ŵ0JlZH=߼{g%`Ses]Uv1ːYA!~C&""""""""""""""%zjPLl"yãJQZ֥iT(t%g+}jt^FMs2""""Y +]JY)OD,QF)cUhۊe-.R{>R+P@P?0"""""""Jc+2THߝ+;_wXaK<~pfJĦDսM"wD6?Mvϯx [ >%R~oGr#䠷"xY%b"FI +ܬo8~Q)pCD;.+e+~éN=/a(P??1)JDHE{$DD=ovwk8ؘ /:u[^@ұVUxu(rI,`|ljb,U kuj +N(}fl~akZmIn5=ce2WO[XrrFP`VZɯ +6I0z9We,FNqpUɔok5 *%doNޕ҂K"T;U̐Q[޼oR@+1zT5zVI/&6| =?bd6b,@uwğkGbe2veF!X~0:Y訶d +:U&|Բ&Dfg='UtݏrVʌ3o'K4-َ y`齃3*"""""""""""""""""""5nrE[RC o͚""Eu_7j-%b"&`J0^eb"jٗy\,;-o;O&+0NN*ξ87Jx~2k:XnP]E}-rܘE#[바,|~upƕq `׭ +(?',UW,;•]?iLjҺUE +x -[*2W[U;H>aSӱf ?XB6f2Q8nLWp +SU`?H8856Py'>v^:FNoRˣbЅ8kIcRVYm1P=pW8beeNر˰K{&ò›A^)zIXMau|)W7Smc^5ێ?LϳeWIŽGr Pr9:^`]F䭸r?{\ zjuܽƳЭ}w1wT͍o2VA`cYX5(b'!Է˹INvNwUA|JQKXl1ߧZnnߤHÏqq1 Ԥ{~GyHu{7R@ݶSI[mA{5|\:|&%׷VZ&m+7So+5_n:=H+VK?un{Vx} &m1#O=_/?%#Ϗbtrە%h+Joc&v4 2rz)z܆ rmߝoBVPUQn mwb|yñC_ЮLkZ˫lK*Д<Y_~H(lZZzjAfhmه|e J{VU<3#'~V&y8dS+T c Z+3o_[:}U߯UnocoN긏]j99l}D͑S1N,-Yu.mAޏc-(HT7]$%&|j_"=3]u䏄깾P$d(Zz; 4?4=;F>.kCyc𺃇Ǯ@:󭟾XMttK_@hv3?~|zA}j̀x;IjB~'ˢ+mDOjݾS] ʾo}s~3*/{ַ=ҽCPu|9 $o9N.AP>ҰsrR"""""""""""""""""" 5duA S6VQPIL ^hG&!d`krB"%%f8Π_Q}Q_S\wǗݾ"PJ:9_BG`] uJptt|DYR&W$=?t<&.cS(ɺ+Y*,P{!&L!GھW8w dKٴ^*"!z}Ml(MnX0"fO%|6u,ߝN5UckX`b /7,>VHzx{6ᎅŅ zj7DfCc,QAv+>/=o;n[LV`ٔR>z˫f>˪#)@DiVPBZ:$v̈3l,_Ukx2bE{EӮ EScz\B yJu|ˀ*mXt&f&uE`Wdb)N"_rOR7$ܓR!.6+A,efk|QuA?#̫קzKEk|{{dc)]SaKX]$s2""" UzW0ovd)ӺwMMwk5%Iʿuw}W'ھvdUG5 K]T3hl!=2颴Aj^=7݀5<]5e}zh~,l+@HO}dBVu\U1gR4@2_ tG"s;$ 6~CqtQa-@Ph/lǩL[?JOD $޾rw'Rŷe[kd%N5~r?QP5mQHc++`l܋ 쫱52o9:0}Bmx2UV8|uwVV3=nuA WK)d LΩ_XܴTmcG}bbaIPBÏ{dxGMݓյC"HMhNe7JLxdi'GCͦ7Fڭ^1ʡFk"UJk܉^޾yP X6+cmݩ=vjr8*뒆׶=W=uddU'_6 ~%q|sSSMJX@r^||>h-e=HN%(P°'d;i>Pk#mi:'S7 +!oxr>ߪ|@%\쾺t}-yuΖjH'(.ZgpO X:v-a +^kGA|$wOLqge4Zl d!ё':_RM ET!ZQ> ~))GM­1Se:{߹lMK{_?AQޠ,=v;(AtI1s߫ST؂X0Ē5_Z=p,ʹ^톪E{9F)gRwګ=)n(y,W wݎoiMc`ɲQشrֻxع>Q^8.UbU\5dcc#->3^8P<$=7+:ZZJzkH zܵ"яQ2ZmS] w0:}Z{SmDX4{w̾{Ҧ1ۙtB7̐枿n+9YUߝԮ+/!-)PAiٹ}r2 +(7N5@ȎL԰oOUy*ozw \N윫鮏YҒO $.͢I@$ORo="]5_g@oax5YH>8a6o"ǭo +fkVOK\o1ο6H]_ +ڷ]%b""xUa8W`aO׈nH~݄&[ckҳ 6R?A2op|WZ ~Htfh ep.1pj˲ ar|9=6n@q-5jTkcϙ_Jf L6:Z.OpS-ѲPK45L gY>n_K5,kl ’Q.e#Įګ:6~|/ʡl6 F'޻3\{ԫ]ͪp)c։׎$_E9ZY~O2K~ğwLΟظkz]H"Z$7ky5>>>&Ctn5vVkj +i')}6ˆ+bdg>;dzaM4*m[]??y\e׈F^-_.=v.xZ-0=Zo7Sj+/اD$ęLYA+`zK[ȣUV02z_P{(AcïHuwҳqzNcYSWxH]1mo~OYG32B P +]H;iTJM/Z{2iWA]tYR];b7Scm[#5_yӯ[v[ֵT +k,=zJK!^Lm̿i:]gԺ&쩋0fצpF3?$(`x9mlr*Bek rWIkWgs졕 #C&HNE9=؇t{oӱquwtUQeVh흶|~yS6UIP kgޣv5LmXbSS%8jz0F#C= ;0ta@⠻!G} iUjӹO-gWB²4ub&m vUu +s,]h5++V)\3*lOEac]Ių{YYOGއԳ0+:3.bˡ)/}o_sYnph{7ZR$y'幍fOYG[j}}c`H |dtl쌬gY+P8nIPDZ|}3zf?N7US·.=㿬)ǹYR{9<6GR\|$g+/PY] ra,$hleοR辎Uw@FmL+ ahŹq,-5k_Y|g9U:- 1H$vy}7dd)_XС?$u̜?n6+wl6SoP>SfNQƶfc-lz:-ً( /eg]H 7'ckIހҨִ>?^ /7{)jGo ' 7{?abӂ)c)`JP0u;rt{h =l+(pn+b3s#el̿#[FC\pŇ7sk#&nr+ uh +5aoi7˾xG3tu!PҮ¦V`Hc#Uձ_mJݎՒC:>7'*¦E]iOQ#l赿R`CTk)<;ĒGd=iO-k}| ;p1_Ԉ?&LDDHtc}Visix^"Mf09_ayQu.>.#6c3:YX:0@Y {>sגeL2~ 2O/Z~`*v|Bu,bf&jzPk@VmxΫ ,t ?OmV""""%B*O=l:0ׅk @ z""""""x4qg#s(pT#FyU"""""""Ptlg6UMh{eEV;v@ȈN\Z7縈-ߍVH j+A0|%Ȉ?V"""j u.;7Íˡm>&ҿhOq~cLDDDDDDD9gma( :LJl(=;u]K NFU&7ˑ>緟?wj2\E? `5x9EUzF:fu!Ydh[`jS+r2d3qauZȪ v $M^NJ(~,4cz#"F+zk is -5w]+S\l `) '}y>uQPV^bUjyAVdoTaS^@mMiǂ /8̈0:^CFb{%nnWG=&W{$wϗQӺoMkf_ +NSijب|fm=Vl(^ڞ]UnK1o~{F9ϲuتY]R@|FӾ#ԫj[EO/|-Z|`:^&2E]l|ڞ~C}}U Xn#Yʷ:t?fu,U=, +t +HĽnC+/~nB E|GnұhnUK/s#s"V"""""""""""""""""""""""""""""""""""""" wV֢lemG&7+"ӿJDDOַ## N}GQnn!s۰Y<:F<|eU(fDDDDDDDDDDDDDDDDbթuޘ,7G.pWR>-XJf;'_ 7Dip JDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@lE)&lFb9{Ϥ6=Ś+Rǹ$(Ȉ?oV&'^l<0*F ^ߊA=s$nXG'  /Ą[;%PM1[>=V \(=Əqswzrrrh=$ .N%b""""""%uα2R'E ]rLs. bEݫUac +݇ncrs׺{̠$۴gLƷ*ƬGD~ +ߔ>]TDDDDDDDK9et/'Wz]̲]lw{͞oxo_gU r2%hl7=,[.{Az8ufy:~cu@{Ǣկ8 R~$x_\;sk,,>R +^WNE~M)IaIecuuWŸzK+otR6 ~/Ld۞Z3m3>mˎl}kj@uMg:q&6Z 7) 5RAx+mk{:9vXF*N|?/^ͧ^Gr~@vI=f^bpQo N`CtLW\kZgK"qay\J첟Ƶװyh/6x.g.XUTwbO`ܳs3Z[7d#w޵c-ƺf 鷇Ns c +'>Vձ] lHg'QsbIUff Εf"t >i-+GUU.oAGsr븢nw5[# 8NƵ'>Nu6Vyp\!|E{=m67,rbuZ^}O1#Cc0GVuvNLlʟdP2Tƒ*:Ȟ{G_> oSǞ۞=+Zh㩓)UzfR*tA>c7SmpfmoAWd֫8^V[#zu:>~cFqZǙpHGmvkϬnf+[Xx֞PN#\;Z=ղZ ]wXmL~}N +yw wY2ԩy + uvDnj2ezVVϪ}i Vo1ưuz޵ײzO+ GUJ{9c v̦ +zERY,w<(a=Os;5Hb޻ya^8BYW>3nBFuYC vc]>-)#jK}C?:0}+=X̵3eU [n&˫MX,8ƍj;g8u;+9p{R?,9ctG`rŀo]$v$GQױr3c2kv_!X?|ubkVYEUd )RuT8?YHwcݻcߓv*?iUk vF?C,{Ab֌٩HK@%vcuuF`Z+rENk;ۿdUSu;iC27FG;Bͦb mY}{!qmr-uظޏ> xdagӞ(UT噋UXx۲n^GǺ{+x&^9M;P S21.uVS;[*ٻ- =2&m9K c#tS#7uSᾟs00aF8U/"+$c/UJ_Kjz#_3r-V'_Y&#EFrPc/25 a&I:y VeahA>Կayu\nI~n,oy^C^ ϙ:6v yZ(ztkAԕTR]e5 ,h^poG̥`ce/iWkJ ):_z z}dkܮۿHH Axc+! -x^ Vrzu˱mIVK"ӿށs$d\~isgQuݼL&OVr(ec oOKȪvν;*x3]ÿ`ߏⷱ8s;  9}f\~2E.R6'I興ԭ[ޑZld)*55n'8=8_ʽn|Һ2RLWA_~VK=}-L[lzޥ@$]No`K1Ev ab^NwyZٹ*hTtb>1޵Yko>l7F5qU4V?6~ӡSQe{5ӫJ-bfTRUV.95>źJ2-j}-VWnVCS`𒵳nG-hvec]KUm~__:'#^G3m`W\W`l+7f c8+kddu5lwYm{FUO?QlZ?!1٪OWVXט%N0Ϫ=t-"Mn +@xl_>ZQֺ'zv>p!tH;)vwN閪Zf\,UB*75[Bا|C=:2.~=d/Gwg"Cp +A;$dqŬ1z[uR{|uGʽC'ҺAX⨫Ih I{?g>՘+PT: PF 醻Li[D_[Cʌ̀{vn ʾeӍrm!( }ĒS\c{f({ lw+zoV +g0پ 6jXϮ~+ގV+[c[!۷s{j;dc + +̌lw𕶷d bX'?Q\A0G+삏G\yr\wrަjQչ,yB6$)>fO7gPY9+"{ÐS+aLL؀[g*U: $[ŽK+:%<0vv*o]ωn5|Y^YX(!u*ԮY+I + +,uK/a{=UP=.mw MKS2+m1Jgn5uk+\Vҍ [:~V= 1T;׼T5)IضFjvjXuxnM:A#>6cQZ՘jA5 +VWGiU=#b7UFKTzE +峠{o]}c5=>ڍK*{r-~WU +L}. 9ַ2zp˦񑓑e((2ܔ"iY֖o2]6̆}oz]S8+J+qnD#[um{:YYV7ҳ"/=kuH.8}B/aZ*EuavyrJut vb̭WE8VC־2oYEMVRz.=V>E u>8͠z`=8Ct ːHm Š{yz+rH&` }FL[f_Mn:Q*ʖlʬFd/ƾ}Wj+kTn !n>{=~Fe?ۖ>-HA;]ɨdXV׫,6 Z2?п[S6PƲGSt+X.klR^:kShb'CAW2CvM*K;UPU6=;\㴐 jۉ%;wM~2%8j5Jfu-w[-w6OwbvW}]ޤ2,n5&!8;-9$65xu%U(TE]"?[x[%b@ucz"QMvXIKvpv@#ZT"(Ux{.qZ3 +$v0z~jvߕUI[ HyX':\8D=3:sߒ~@Ox WSᔂȞr)Ce-h]tu<\N{Fy\YhWmhg@&\uኆ`mo<Σf>lV5DlhkS#/3b37zBOmlXD-֢%H[_/5 |yZoz-OPяxچRղFD|3*tl@=L(Qͣ;&ZQQgfќ]y #lkR@l,au,nW$OP ]j y: `=CZt 0])_QƸ>釻H'_ 1,zr+eqJW²ťr*. +u$kGq:vrWd` .[AQeթe,FHxbSGZo#F-L3( =WPZvtLSe+:VߍKoN'uE=IM +̛QlUK $(LA!WNCW{GohzZ[Y+u n>umLlݲ+ziPIJ'W E-}J 9O5W؏e 6X}{U9x?>ÿm.쪬PY:_H_((īhJ-N1})&A,#[xZBɺ򪶿U,R' O1Z`{0?qOy*^ +IV lv6!=b}%!V`YCI55%6kU6 z|z,kP+OwW`7g_̣:e-d0KTul<=*D :$>z#+wSǹh[mP 4zrMA8޵=jKz9X$)3ݓ\1ίV@ki ]JulNʹe$3Ow]|+Z &D=4ɩ5 b GYbdJﭛ[w2 ܙձ3vQ:GJ5Ŋ6Tvﯗyt-Z=Ty*r#e5ZV uԱ^Īf=˷&.f~NRȠr`ǎdtu#5vA;$25Ur3>~z>: CXj9>GUz+! ""(@2͌$3EStn'2=+V?+OSLM.k3[:\P*-tJtWVvgv{°+6v o',z%CsmJW;bv>o@w1:~ 5KWR>dwVQ\pl5|Ms!bW$sspHkM&Oh\v7ȁ=|ct:c*\KUn{|}F =Kkȍ bC{Ik{J* +{vS˖'`]ӠbԅT?0eQuET($>SoM証.ޕnY$l˝(a|cRV/f#F'jplY@F8$HLi#RA94`l$7b7؃Qlɫ'Ҽ&ІPFQ˺fڲWY^f%$Q鰳dxRxNW̪o]^;֣c؏5)ސ^v H8l~@w߉=25rO+qR~$Wg±W`k`oη Y8X FB9c\X{%:k_ =Lǹ\1OE{u#9%.YDu?:ycl?B.٫Er૳&U#_p5U)dN*_eJOܓyX z7^VVx_e{YzEA ˿Ev#_o=Sd;ă{yRK^\= #cӱ/wȿWiwOlON2wU;rw4o܈:m$vLNc{QP(X:`ͯ1Kjkpϱ߳Bcxd鼜 +Gm[b1l~фDoMv6y|2N39dUQ(4+Igkkw$r?ݾ_MHOhz}#Փca=aoRvJ v 5k^ \~בnꡬXXvQ ē[4~j[aµ?XLwa k}هMPH oOP~G}Kw0EƯVP=jp]tx3 . +]]S2/i@Jzv"xI>`cW] *ĵ&ƜC;fb{;(ǫc35 **M [̓ٻi>dgU,I&bޘn@lW^|LNnEiMGVhR|Qߑ=]`kzյ6);MÕ> uJmƻk3y +~f.E8[clXo@>ײu1~1hmkM`fBYNrVzbi:zFWf +1$z˛҆:rn4p"u-tzz7(fy8Y;6y#V+ο+BpHݲTt86F׷i\~;c#j„`~"Y0_/Y{.m_B^'{ƎT]:Դ +EX( +A,outde5(JV͠<4[:hοҖyceڐH#zf-=7';1jW%e,$G%VMxY}Sl!wGtO6gtlgH:6SϹLq?jHfaoT#le9#~29iSߗ=P%=[Us6kN+t$jfBY=a&$3+SR>X}en8=Gd[+ +FM +.LX;oKBɶZ ܫHߐGKa74zaHXPA}secl|Xee'` ]̼Z_h,fN`~sO~:Op32l1 :ߵnfCt݇GK' +=kMh -ۗgmSKSԓn7q[U]++CgC<('r= Eh܂{߹Jh1)-i@/>?ABH4F]IOLּwHyJ`6~fy؏201%%`:+;KhjCtʳ+ҳԭ.+z*7wk.6d^̵׊~,u݀2 |`UH,C z%$鮇È%201%%!]}rE:9 [x^B Wq=%kXҀ o#(aOVzEe>U+iOW/kmkiB +'kƪT *QZyaG">DdOKR'pxr]hت' w"n#]}u%[lt7U;0Of>@ZT*RR<7o~W";'C{ּݥVS(@lxS:o#cgƪE #?e/ã%B[Z:h2_B'VP@SMv5lkU1먒ODŪk @f׍6dZ̼#bؖ7:;#j0 hv}1 nXP '=LĥVQBWxv¢ש\s+v%9<}ZJG6ի$v#ZkZhUZU *(tWcZ v,#HHܳV;=u*'܁0:B^E|+{ͥ0_ LoV #@a$|xZ07<&vJvܻ*{݇jRq=;UEťصf@c&zjշƏiU@DD4_A{+ vq;>fOt||̗MTG/L( +~{baUsSmi֌qfcv WXTy +B)sW +a~Sٙnm-ӯv w'F6ὍYUoS0)5Xȩh:]`tNe{_@`5Jw|{If2sJfW`D +U#AO==[u ^X,$ą,ZdJ̚A|or{Y_ci)[g#IVvUG`XiKlRL+;-2ߗפMUA`޷XKT\6=} sRTqd_~͐vy E]ճt6v*2r]=ڒt_xms][-_A&>zrݓV;7 >Ρszl(-`WY%J+7n>G;MX&LjN.4Yh|Yn23_"pE`3,Or.ƥWq}D`7ߴ²eBY_@P~rggs]lQje7'`.G}ώt4z}l`R70`OYQR[6=e*=;ȟԏ]ZGuVI@ ^՝}jEMeftDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD5u|SIU>&Q-wrK}t; +: ]U.k|vUh^UŻQzU7-dqCvސlm/ma+C.KW㡡[2:_M==\k]cNv,ӭIfE\P1,9U>>Bma- $ԙ'cY!RtF/٫L!` +遮~1dg߃h>%Bs~7)_t!8E m̾^n[^Y?0UHVdv"~2)-,+_ũc鲵['~ʻXYUS"E +U\oifNeY9@,r\Sr:y<ŭ}+Z,?+>Lˮ>6FEn%C)v;𗱺-l̃)nUEM7pޝvGKjC6wT J\EPv\[{RwS#XYvU[=`n#JcـēǠc֨ <@$?ROrdn7Gǿ69:=5߾:WMw =OMKnbEeC6(μM{|[o׸wEgd(Qƀ^Ogrּ `*uTv%۽'#"ږLPEm;voSu!<*aCkF#&LLk65UVB3C{3&""abj2n^BB LH  6cםEY)yC~I#ῄ$"zJ| o*ڒ\::V=FCd^HDf +[JB(lm/#DDDDDDDDDDDDDDDDDDDDDDD'?OǗZ޷:*/Pe;R:Oqȯ`6(:ğܬDDDDDDDDDDDDDDDDDDDDDDDDD@!zSDZYrCzܲ B6{L~%p-j=ވ'ei.T5M*ScĶs&ޝW̔pCzoNy |m=;?$q4UVWȒt{K_LVrlgol3LlWvuVr^@ `[<׽=Ng0^m 7ٍeW:* ȁl|]yv[U{ʇ +0[ {~VBUb==]Oiz`.2jʽQ]Do +ɖRڽ8ZUq;*o6I c\BX<ˮᄌ" +!!_V6V7UcbMz.v{v=!Q 71=%k!  ݷ$ zRhs-[?[FggoQ5I6ؠ3(/7N&wg^ T]H6!Oc-Ur]_Q>Nmhd=C!:ݼdDDDDDDDDDDDDDDDDDDHγScՎۂ=kĞD7mlh~ ղzm,TLBFclo2Z}Mr\|5;wl97Xu,ƙ@|dH:qk.$-2nF^ua6tFȍO`(oq{QYUͣ'YATN r|ځ7+ KUJхUR!Z;ޏbrO*Vq{- +!rWlw$(_KËr!rߞCZ׏Ѻ_V7ڄ\WlkP{ 3/Nn2-GVEѱae?E&{#SP) Ut SOĮv tmP4/!zJRkJ. Λ$0NrZS_T~#BI:]n(\xwAu>S6mxmeU5Hqb[|>EJʷ{84{'W`v!éVZF( 2zKʫ]{׻qꬢ<}2dzo|I)bň;w1q}KWeYQ@a:(Wecߖi-VTad܁΁=juߪ,j +H+|>"ey8ץ ڜ}2T +kWSXԩʪt91`nt.zuxfı"7@@ {6酉Sحv%ʬ +Uw :*=fF?I'-332ֵ͉mN`96ޕmBGX؈hho@s.o,N3qňsנONS]+#ߒ2,lX@Ve#{ ~2Z(ňP :ykZ[hmrPñ|锲, Ҡ̪?dfYlqPޒԑv$;׉%V4P{#z[cmwc|A $ć{#Fv\m(էX [wȢi醋:R+b +-Rqƪ_N}@hvĩ"Oʴ\ejQH3tÃoIQqo_;yy5efm@ĺVz_R ]3GYU'岠wW6YպROXSR{95C C[羨^!0zSI%Akq t}ڮLj73[s?IccOhk+Ƥ#*BTDvu>m`m(x?qNaa]mʲ큠X8" ZKV)AW{c+^n82T~Y(> | ޤTɫtg]AkZmefFղ,a_j'\Sg%򱵿{=3ccZdrsؙޞaŘe[>gRI(Ð߲ !AǶt^PR&vJ495MXޏ!Vv<5|jmR.ϩּ7)+ˠ 7g>>?/H A`zPܴ7""""""""""""""""""""""""SRM& #(e$k2/+ƭ.lbI-aoɘe#`暒ZU;`<=Kb`  4e*(@UATy 5u;b$+#YW}EхKVں`CG#c_MӲmɿ=ËUW1$bϢ6Oo@}daK_EoVW.;kd +.ɳߏ~}̈8E,H #.mZS`f2  4AQ)ܬDDDDDDDDDDDDDDDDDDDDDDDD@1|{jG5yRF:DnUoywgĉC-g_u {ϴӒְԂW(p| 2[+ыcTy"sqZ(mxyL/L2R"a|KM$͕T6?=K 2LzElk+=s{r}N O!o0Q*6C)q:w%~º,b;{ק\nzX)eL}7C[{K=^cR DQ*,X:eF]u{*tA>>3zz3qȠ`lu%gE#d _Tsc+ͮ#w'S]b⼹S|^瓱&5^`^*tv5T%ޛ IKk9.~^UeM{RR +b@A'ԕ?X>Je.*]{o>wOjr+qr?>KoL;uQI`1ǬTLJqU53qc3 q3'Ζj@ceT)'|}G]:{Փf(>^=po\w5O{؝hkG5#z]tƻQrhI 0sZ‚.}γ2k\2h*`kU_W ËoGL޶6K\jT6,I] +֥g`RXɕe'%pX;wMR/cP6Kɘ?u5?_̣0M`D"=̰t(ɲc. +NLJp2 [9Vp뾰ij&ɶH:̿iWyRֺYT*A#~ehzpљuUvV cza{̌h1q,zى􂛊Bj_]#/_ꥫAk*d۷ø0kϯԬ92ARNH=L~eSq`ևF`FʂxLO85SmL[FqZN^@& ;wXo(ǚw鳣"mw1L:=KEVPة%x h̳Yby[85 6[{2B"""""""""""""""" Y([]u62m6d^Rd`[j!p%P8ki=j:[E61_O +@|? ̼l3 jEmoYn$pT(x^=kׅU5VkE@`<$~A/[,p5 |^GR괲]׊^+b + ]$m8ijegWW֏n.uGq(n+q!4*Ze{=ΥMiQi% jj޻[ů ?#_{]j[NX]ضw$@~o[l* +>eB5",ӌɂdUH +S$ 5p0=RKBkVA^Ywg&.:(5 ʬ^ԺBQ>`ޜT¯Ix_a ;bj6-djKײQPtöbd߉Ԩץ3,A:b_.qT4ӟ*ɱ(֜_!yt>׵Qkv,,vu`@N̐>>Uc*& ѓ!z'kXCb{K>{x:32OgPfGZ֬NqΥ)>mFQh*ܫfD^eHށBļ ˁTYWz]:v&e}>>H)5ܯa*c@wno-@0lt{DMS|˧(C\ٕHdSv5%YWQRVVR3o^A|fKzXˠ;;m}]|Sql1Jq,n~D+p &{"%?4GwV㔸ޝucD%lwMc}++2)kM ]l˿~;w]N66K"ׁZōaycj9mHU_g}hw3R鹴6'Tplɫ!}DeV=ǭG.76|~['&NC\a5ީ=<%,;ړX=7,f`}ݦ>oR~JNCo~~sXu,m5YY`VFW]ۊ +.MWW-IfփԿ/?\8VV@|O%nc+hȫS \YvW9x6Eω}^.~{K+8#snV"""""""""""""""")+({ƥe5JDj5+)ǣo Y +|t d{{IFR)+<՘1w=DjV"yd A >ԡ֥b% vMFRFƥb""""""""""""""""U,س:Oc,}: 1SYOJ?-f>տrQo2/ܖk>ˏo2i5OWˏ2%A"Q4{cZVgDDDDDDDDDDDDDDDD0@K6I$5Kf/S졲G+up7}n}eGWoyY_ԯ?OzcN'GbNzgN'KWu.MReBaOs7&qͦ׼b"""""" -ed&-MkuFΆ'2ӓen-[aZT +.e9-X#o)ڝv#$v#niJQI4>]G~8TBr{Ne;wpxm hNֲ:ǡ\_ HzzٸUc鎴ؖ[3T (95B||{jy:~:&Ut}Ð$mhu)!o{Ҟp( +^BP跱&G@0\[cBwɎqzi3\Tn5*.F_YjpzE>#RK>w{#N_A! ^+&Ʊo$ )q`>O1EJs{_-͒+:ݧ鱥Uԋ'!ǦL؅_Kv?k󸴔8*8~OV5nRG>_QiT䒊,؟ﴋ*{?:̭mwڝ /n}7+ش߭zVCC\rkG;5<Qԯrn²_ e~`/繁Gۮ!-eDZm^VV\xqISܝc{Ke_`,{|Y6Ǎ|J/7+-M)jT7{OMGEd PT#""""""" 1P6 + ξ~!X0x20nX;YRߒ O|ɹ*c]:KZSyr=]s9%b#Do6ʬXvr>~IʠG'S؞n,+b +x!} UVmk{#BzfWLq4 T/!<کEPMC@jJ:_˩ kTW+)#`~^dU>EiB[Y>=JSo1z=]nK[}`v c~E=tn_ CRA~^,ܝۑ$(nNF}Co&QK8ujh@_0Z +3d7ąE|vy;#ՓBvWvhp韇{~Cڼ zbb_wbMlRē^CSP+e,msc>_ӍE .o P+Jz>3_@ R zH`{DDDDM{ʟh 8e}-aLOQ6u ZA"_?Bzȷ7;;|SF%|뾈]/gt^rЄrcٽ +؀e|{w&f~>RPӌPYoNu_+Zޡ{pw^P' Ǻz۞E*Ƒye +dEγW}n^$llc0V"̊jPlf>~5<_2,Uq7#6gFIg6TJ)#FIYNl|v:*ۆo]\FLV{KҎղ }5H`=~zW~#UҿvS)_*WJWWvUUu~?U}+]_%?U]+]~_7-讄`#peȈ":]uEH uhx;빕OrU *[t?4IBVu?ԯJʟs; 1-P*`pa~Ff1AVEXn`;,W=&aBVj7c088lMz Vޱ#~{jatΕ*ɷqb)WV' +6@&*hޡ.,ߋv%w6-T+ +CҏCg^7Uf[p څug-;LDF%f-]FmFݕ-l9iA]?@tH _WO20Nsf=*F޾]͉jɺL[H]^x{L.oll~-m)el9iCGi^-l W(u1M89Vd}E,$wiM뙑E;jPXY+i;.s'kҲ0&BȾf˻W1RMkDvᜌ 6pPΆ̿DYqVDz;B+g;h/OΤ/Btsk!}O6v,@!w`sb\&(úlgTn\JWI[ {WݕfG{,@ k|73gcgSUuHab|Yɵ㼐:U?s4NZYYwts}MM掗ҟ&3_}bbqX0-cԢtںyu\UnLy6~N.үͻ7#Բv[n{K + ߛ hw;!LӮɻ+!l%QC:x &ȦN9M}w8۶ol:Ԍٞs:bI;n?ޟbU +|䌠]Fe#Q1q:MM,*[LNFM2Z*Ӳؙ0:S^G2ʥ":P'<VY܏ro'mXֳ~̋Z+{IUv +C#Y*%P6Ga%b""""""""" 1O@uIQ}SAuXd%*lַ3FPqZ=O52+)5ece6ҎTH2B"X̯ U=hov +f/Vϻ]Y["ߑ c4'/u[:uH"$˴fk'+'uKmH"$˵fN䬵^ 6_iV~@ o7"1z}gN[#G2Aؕ:QBT-3 zUK +jYC|@:R6;(Hۘ}~]Ȫ-Kq$iU  Hw+EpTTR;I8nåEfcl,d1Mzk p6{ YA#GCcξDƦQS cgGy< V5lVΒvOW~ZOz~<HT^i.,7#&?FR=ͨlw(].J +UaQ^v-eVmI2eSՎQm1 bZ>>މd_J?aQ*¶Y!h'bvo4jkV=Cܰq@H=/Ӗf:ao{4N厭F2쮽V5걇L@ڒ:SG"mY` +G"tH:Ft8%w;%d㟾5H]y$1%YlQ-űmqb;L{YWTg͌/U{5{cD 37e rO-kz>}Ne6<0 yy9ȩ=򆥭q ?(-Lz_{?4k y/F C7XSX oW]]lvq^^XBBNwE=3:{,W:jBrBg_?ct;a=ǹʼI:Pw? ɓ:bՇ]C*ն~H o}8;mry-y)SyCW:UNe+rA@&Fߙ_[ nŹYiIk8xOfʻu\ʓ'd"~ygOrp]ye +F:6R;.ge1J Ѭ +L;1n:| (# ^݇ifP1^YcP6>ץ#8[v8g+{6%俲wp z`@U#]k7=U[=Fj+}R8_l-UZSk zaK6HfN;?RhV9SǛPpZ:$#xɱ=J,6 St/ +vRUhVo[;][\Vv/m5@B6r;gX ^ԵJ(SO7du>]9aUX@ܘoljoQ8=i(f6RNsZؕ;bOndHuz}=94T1ly0 W=cٍ@%KVYw"mC+uodzSmp[Vw݈ eޜ-!Z2UHUaP_9Բ22aҘMhCg9p}spZθ.YA=J>q krG~Q"O#)=|}d@wL緭b6n,`-C@krK~1 y8ƣ|T Zod싛+ٞVKzrɸa SWIɢuu@ =c5Ǩpvz/{_dXȕ AEiz1:OL~Ŋh6 C,t-c9bet5翙MzɕՀ-\tq幍+nVN!M6 ,mq3{9-]we)A0>Mܶ?Iw=>zZT@(V 0:6>spչ]e 'eWWHEM8+asCp? +lvubI#;Q䤩ANՁ 6?MtYY(zspyd[d\ *Mʜsk<'BŪj]r'e{$Кb{=Hvlu-cUQbU!^o}s]^;%ӯv??:. +RBU7?<eѱPCrBzמ]Z՗3bv\׾<ԹOH|ԭc ttR {7]U/+0W #d:c<͋'eAnn$rVxmW Zʳ/ukctL\WCfp$ݾ'^b؊ĨPkZEbB=ѱ.7쪮U;÷ff1k(*gj e()`~^&n.XJVLY$1I=ɖeGhģ+2:4tA8^и~.[r+ۍ%(IZY㡡۱jgd1ꭕ^=p__=8i`Zஶ8~xvzX8]=aڑOa3 |LpU%Kr[-_;h}^|vUejX[.4뷙t1+jSD,H4Coÿi']b +7I=y== 毓^-q([z>>@Ĩ!9;8@t8bB v3VC{|k&XwRYVmkd~z3joxyo^{KՒ To=2AA2+(HflJDDDDDDDDDDDDDDD6%fY'ѴTΗAPEŭ5 +;>Clt>R_:ΝRfe@hN5EuS(L;Q܀wDcbqV@=IYְ-X;UO\m8SkUKZxnAG_1&1,9׋K+7aԧX1"ׯQmOJ]ֵ,'@ï A37אuaߺ÷EYX#q::`t~G^ H?&3^SR >;3=O!c;5:}-uw0Q&_X > LwlUޯ=xּ̗umzIՓ;//S?u,W_AZqr2qA!eMI1[uve]m6UtK+ +qUZ׾N'"Ȣƨ`㾽K+WJg@ϡo?Yf5=BehW&]*lqf5^1Šw^ַ4(6ѯo [ |]5ok \*lŽXyi)cf): j'bWi l ֛ ++*srR*AAjY mj|mvݢ |uH2](zn3Vk(NZFMN]?gZWp +3ꖮe:Pcn?k t16@}]x>bV޵G6?czn^Ud>Ha#ś-Ȼtk4:Z}5?ر}cPF!6"l^Q/o?Y몥}7И[p鮂Zm-XȖ`ɦW Bߊ'ed?+Ǩ3s&PK^ۛ>OHwL;mcbA]E@ Y(Rhºk;7xn/诠N#Kvk'U6bVh?.#̙^,I|r=KF4l[e\h\?z?)CS`Q+]H ^.~~/tLƹCB,e <$vVCe[jm&+zoņ-5~GYP $n:wJ=d]Xp[U-B3b{ c/aś :f'Y Y1)=B~lutک@Y61bvT6b>f.!.܋K⣷`4˿癕k7NMWTubŀ`JoG^ 1>=-(ޛ0䡵ؑ!:oD6S~8WIgk,nQ=ЧI՞XW {d*x1[>=G>n >C[+!#\Ug*$ p#L6;}>az׆a귀+RݿR)0ToJT9bށ;@ٙ-ec]6Rs rgE i_Gu#30F'M$PB|Nct<Ǩua +:@6N҂{yxTj GxAZa8ߟ/B·֦GXt'r]7 2L%p 5^ty~z'}\ %Pt~$v3k46ŸGG`D:sl Y})z:s&;BxGmNӲ}l6U"f$2r:F.U*ƽ$};֩ QuG,аj6Ǭz4|, ~WZր@UKVtl;k.LHݵ|#z/baS+l$RI~/N־D5ocu vE),q/ l*W\XS:"""""""""""""""gCԬDDDDDDDDDDDDDDD@(O,!D:蟖S!;G5uHe۰1>bVe$>@n>{rK/`qE_#v~*v.8 > UzF 6;}񑬱bLv`A {2kF6Y͠/#|ާX[՛8Kk~UTkձS~90]EneNzXʽ?$`$xʫ)yT6l|6%V,$Z:zFD +\[ш |/֖:jK w3XVՈ@Z5oU^PKڪnk>C|L|nY uV]0#@v> w5shKT+ +Jq,`m zf qOϞuz[%pr`f2mǢm֘ +<]rF  q#:͑}>A`+>,H_wQu۫Fa: |3OPUkJ\q+nQ;{/̹UrF lA|5fC;2 +/Ɠ.͂ܺipb+HR|J mh +.ܗBxNc*-mh @P%jN=G ؟x{ݷۿӓJ~>xm}"}?ej2VꡭQ-Nuxݼ7RŰ1uX w.+q$0: 胣_ꬊߦ:xڮ{UÝ_&fs1hVaI!anŀ$iu2sbB5[7~c%dSWJoMV|hNTx3 o/;-Mey6FeayƦOM˼\G~u֔Xǩk5$jXZԥյHKyڃ+[zwÐ篟{|%Y ɲONzڥ{`~g$+˦,F+@0$}=r^`~*C'{RC+#Vceъկ `r?٬r0?&Kv #IQNP&`|xirڎl` ϡ4leyLlbb;_#@6uPp/}}*-Su`.&Uk `gٞu!SN Sty ᄒdԌC0$wSX6 m צ:󱂨a&MV{^ݏ6Ek_>;ޣ'ck׶o\Szlo]=`;' }EjUf.@^v؝Uz13A-k;LF>2Yjl"spB[$|{,gfRMFΥ.w\1[W~ʩ\T]C~א<ʥc2+˭A#~6>DD(FƦӬWHǩAu'ğQr_͛=ioT +R-vN;3Vj16R[`}cgM_9K֡VlV&@ro12iƷ֋k*u鼨BdfهqRNĠ=|MZgq*^oC8VD>DjU4OdkM6wؔ_--uΝ` t+cCZjluHTRAu(ݖP_jcK3ZW1ntqkѡN'ηogz-FGN`y3dLbgȻ )*uY 2fQ +PST)s{d??ysr~sL|pu.-ˉ}C`~+'Aנ}oln|LEתI |H>S *Ö +4R812=]Zi6r(QC)0Ds:zkWdl|bމۥCx%76E/jXjvO3m:t\u?qӗ6Ni0W'N3v;7U7Nm7׺Z#D2K{3r݂h!cs*ʖ+n|7L[Оq8[n^uvB&EGװ[bΥy&yboJn~87atW&q}'zuQh줓?Jzn k66Or7ؙsL4Evd2Q'^64z9ftާ}Fc8ZZvR>.=W=tNI+g6}+R@e'`į +eÒ&zkAuߘ:L`꘍jV*lNjm˦=鹋:v6>jK}!$%oq_((=݀ G }7"1,n8כ迮6 ?6jHuZ[oբuw޾:޷hi2'MT7ڕ +lsݔyOt+0lé=0/zVv"ٓbk +=r3;t.}F})mw[>1͋:T߼<>B@rꪤ:&Fow?,']]&ʇl 85_\Zi@'2_=h5SB?h̸Vn=u[PA'!?3'kD{U7Dg&m7Sk?\ۭ:z^'M5YIONճ$$ϵY4<1/d*G>fP])ˏ|;9TΗEA+ElEP?t=NzOކBlOс; 苍U}4[۰f^uIm.,'ϯc:^70lY޵ +\XB2fjYUhR8$l[z=W|s;_/ FZY%=?- I{CS*;j-t!!r '[ԑ^t*mj<@kdr87VQz~˷o&Ku[Sz-i@b\;$Oy5pi# Y93Xv7[G`w!1.Jj ,hV`Ôk V}Z[`ptL$5l_G\u2; +{w; /Cjazq?3!v>YoUmye__{zA?O~~;y +u }Jo޽1wq~W܈=w'qv8(n`$8^Bܜ@Nrŭ`kUZ{Px>=[:=E}z@PFIs+a?I5:r5Lj8."z}Z5LR:!$9lZmb{1R&@=Ȇo\y~Nw^8fİ32Eq5JyH\1H!-6I(rJ""l-R A-mhx5HW{E#=TVC( E4]ĽHFhZlv1jˬr+򬡇3uJP<KYX4gԖv`Ͽcu_؜ UiCZz?e.]n2p^֖/0,5u +}GCaRք RԦGO +. nzrƺ9[޻ dӚ/,]qԺGq~Mv?[D%H^ 5!bFتT^;L!JX`ֽ*I_7ŪƴU-ET.o^g~5V֚Ň{pϼ%phbԈ{*U0K I%y[sa mp1qZ@h"k_ \l:p׍(6I +FǴ&5k@Bjx阸Vk@X@4H#tu*:n(Z;ۿ7Nj3 'ZoxJkp2)LZT"au,ȧ^,H`V!? ^{iʷ Y{w<1-% ++FN(+c\+P@<ۍUX$}ۋq^+k% ":D;/Z},r yHaPZ){?>HпRU mD A%ד\JsӺw.;N9UOJ*Tp]]¤Yzi{r޸z,阶XTLƵ,A ;OGQ@l'jUIm(':Jjy*gZמ`cR3mO"[k=mOWbSIm_yCv>Gq=%)XT#C@  gE>-,I$RII"x]?UB5݂ʃ A>"z-/R(e>Cc1^/OzR^x]q0hjԁ1ߞo7cyp1]''6~?xh@xmOVbkzՙ|;L*0rl˱,N*We +Hu22~}5S3kؒ8{?>u6QbSgHWn'F_oJ]Q+}sKc=JYtK/ sOL؈c;$acyw yȚ[ƽ-Mgu$&Aw;uvʬy3U=.%#w˷zVtZj +پVkmip-[eq6( "@ē[GM%-O5E [a+t\:cݿ a|mٓ#}u)YM0q޶xxLѱQ,A疶oZK^1SC+%mmG0H bbUs٬b+ 1o -ZJԗG.K]Y +.EZVú:=δ$oF݇P[,p:'i`u3gMȭzvEFklxu='}奴mCʥ<ʔY+ngtlzB2+l +^%!;F}#tne~CQ|d'tYamj;oR$MRUg,a/~٦UU/K[Rˢjn0>ACfV_GĸEt%jU[}[GϟȦ=[+#>Z;*Z0އo!q^3NCeam$y+S~3Zį3XiꭇՃrOH,\j'Y]J_7ZT*MFTp%&Tw|K=vs:*MmhۿYʵ*uIjY&mE㥵f>،*I|fc(,:!JX`^ ظؕӒ)`qr9m=#:PjYxoLcd%V|#jeu{fgOJځatIu tFӭEZ)Ԯ'2@3?_T7qbW^v^ϯٺUBEin;oSe[}|#z'/P Hhpn픪zI~!k+9sr;Re'gk{~ugRܹ2]PYtv72䱙U*@`$66>i]*-4Z2R٪ @ v%s^NUwc}"?C/Ӳaq/Zm)rܺ<fNj:ܸގ:PTmw9oP('؟~hxi}czkP{F<{ƼL.91M^h<1TߢŶ r_Tŏc++U<@nǾ|fujU[}+X̦3WQ+o7Lh6^;8kA$PzGI2}aUjؓy@_g:Ȉ}<5Jm  o/LNV:B $NO}횓yuTWJk}7_W~v8 J[J5%0&{"+6!P޶73+.F A;|D)1jX R{ag[?-w?i:\.ZCr3zan+]ngps,{mY&]Yа= W| ϋ)o߼o&=+7 ly~ؒv[NM>E6 d^:WH>Ayx7.Af,l䓯yFƤQ_'<@ofjG V +9*hkDݤ@hLLj]uJ΃AGG,v#r>h*%vʤUI*:^A}h,ɸ}M4*-ueA +$|Kxǯ.]Jve8B +,Dv?ˏctfkA[^JA.-XU-4DQh \jzmPU0۠aYPj܂śvuRt+^jjO2z&UCɀU49nPBGe?k\CP,z0e̮+ڕPTĎx#q ([(: i}ukЫ| +#Ԇ=c|LFgVa y3~?B*32_:M;2ކE(*L\7.JYS7/? 'ɶ@X3#mlBކʷJ|5Jk[}:%-HY%:僃ˑeq: 4˹c$snWbt+\#$t1&-eub^^xWtuO8}E*ӻV: #7A|v5I l R8ƚ5( bT@]#lSKg.~rmX^;ynq4Jy|RQ;|f.oI`)%fF+%H TYRUJI#̪€r{Oyg;QԔ-ˋrR VSawtl;ޛZz^G |:bёfRV ;ρ: 5*Y * GQ+Y^ˎ1Q83sN7P`ef$!@ܥqՏL@v0; {e?  {OqՖşbK~r~)\CmWzWU,g??=#.J{AϿ~MK}/H*RܰAvju?fd*P+V.vP}@@$'eSMeOM$#lu9tS25~ nv*MYҩb7̼^gd媅7%J?SG>g SGbA}~`UYh@f7w3'.Fvt4f$|Ub"|de]ldz V_f~Olwx}+Ea $;i~jTPqhx/8lz& +/\H寮-^-XWŀp>[vx:^6;QXB#v{mKrp +A :F*:8n<%A:LJso̺>0ܕU+ +N=nKni8 Q,ݸ gNt$/op*@v!>Os$:.7A6 kᯬ]4t`CY7l[o-Z0K=34u,ZrBV܍ch? #mtdO3+/X$6 >y1/uwxtz<&֯=`']dLf+zG4uĶ(2b$wUꧥ>_]; JtGq$DDHQk'֪]55$&.Vkc[Eb,RTғɶF־1:P/ܒ&ƒ]6NUc]E + #j1۰>7{;jkxً@ 1ڸ_>*>1ک5\:b"""G3 b]bY +Rv>RB""""""""""""""""""""""""OPľkdbf}0 f:rtxsdrjUAvHs +ܜlZ6u>OO_kv`Y;NH:cW'Ꭰ/jاv5Vfz{Ī'̷ObzlW䏀>ٙqn;ЅZsv][iUQnLF23so;/쯤تà8UHR7fe2c +OD;jK:~.NnƉԉ>jUȵ*uV[V%m{[:nX- Z+Tvm̬߆u%+mgu- +GZ'"3~-G dr}OIOT/耪y|M\ǥU=zoaY~?_j+ =iF)s#_}7jl{o԰ٳY߿h}%r:+t[M?guZРf b,N v]ph߁kڕd[+)I9lYw`f]:-[g:nG}ȧ^CDǿ+2:K0[*]c{M*uělZL*.TjPRF0CeX*=Srq5;?ֱˮvV.jQ|2l~nMj\S[ =?EcZ5͹Gd||3u~]6s;5{V \ v췥=WH Wb z v2vU\sVN5/&ݵeUxnD?l>{f/ugap`=)2uNǏӲːg36:ۍȏ(kr'gD|VmY Aɱe֖1 zչrx1FMM=dF%Va0 fW2q{=5W +{v? ̞g},m, puĝ>56KKԥNv?AW2}u¸ݷ"t69ȶF;uc1תfuK2UR*(Ƀ:,g`3/'/]^\ScWTjvUu7L<޳?UWh+(`AfܾZבuMc|)/|FΎt7۰ԭC:7حrZ +Nt;y'+=:WN9on5q?#[K㽽?.K->s`bԟkDDDDDDDDDDDDDDDDDDDDDDDDlSvQO]H~7_1zMXiZD +H,Pu:{㒕muj_Ok ? ffqҬm{.L 0:bAڕU#~ _]9d5\/P ZE]r;cgۊws-k}.BVrLX}% +zzG#AAlve5sLqO-tZO(^R_yr})5!,NkEPyӴbE~qVwJ]#ԝUs;5 7w3^c~C%D6R } Od:ˣ,[b5 +UxutTm ݵ0jT/q) };c=KSz]VUB $lky5=Cg?@k${Hހ' +qŻ1-m`7=@7xf9yJ_WMj>fD!Gm;١-[3V +5 I}5spkf u>fLDleh<;l|'"snPJ\ې־BVބk^rȾ #O~ynfh ŖՇcoe=^&FOF7b`Hv# j`~:5gmb+R*rA2{+C=;@Ouw2FV\mֳX_wA#\w܀wi!">[fMk ML/łq f.Se~MZ^dץ$=̨7)`a^\+~;" 1x,)`(ǏG|&Rw\-6.т2l֎&tDT`Ksq6+NAsvL3l,_TV6[3X0Q |u%O`<z],ITWF$+F|DD]g,QN %At|L> ++k]@>&vFjc5hvZ;w&]kHN7-S]HzȈråE,Dc"ʒ2:++H?K({@1OaX>%r\F"'`{KxUfԷRjv|DD!F̱F}+}-$::U'#!VmΆQ^m +,t 1ҏ~&&WT +jk~-x |̹pplQlolJDD@bw:";$;o_e\My`njdzt1?!mVlA'C>s*hmɶNW)!y:kV9J?2Df Cu>3kC>3W+%Oo<]8< ,i25Z\wy%C-Mju/_Lؿv!A'5>Ժ:gֆƵ|z`\On\oҁ98%mF쉑:kq]e[at,`붻/tۮ<Қ[J)Wf]%A_qW[0fz_E6ĭ//S :os73ښlamU"S[V6l 7I']UK=6,˽$#c#:9h)JX\ liU]k'#T1^ϗgT G!۱Ld60),邇UV5+Rwٙ{;v;Jrq +nو>"h3k`NvP_Q+[Q[1]C)#Q2EؘYE~X(=I7pۺ e`WR6GAݡ0Bq:$lč53p5Rjl5NO'@{cC%T[]_i@Tkk$e=ȯ+^ΘveUtn!Gcs??37]*;t^Z#nvn\egفȯM)e\dP߷ooj/NW],]*#΃|w-uޏL5#,;e՚MZ8](<{ P5cZ5ĭZ[DܨlSm: I᝗oo̪^GN][|qb# O5z 6A^^? k_՜|+m0S{yR w +v fy9GgwTD|!RŘ;0=m*-j[ԣi{K~%h=/Қ웍)R:UIĒB?r\fd[PczcKƴ6}H,R욫k +(<MGIj)=5rqCxhߪdar'[z$0oM`u~HJ QnMf,݆+ٷ]&g>G^ h,uyeY7 +1W`vPG;A2zPov]&P 2wU^̤3/Wdg>)U5TXHD + +:$6bQ ~%*vW6#d7 wis#ԫ:YxJf<rXJXTFLuv슳)̵o! +=l8;fmT?u96V@~z:KYv¸ƶ! dWP=O Rʪ)8o{g:W5+YN JY˖x^woM!8_-R?]M:"5XW@;;)[%zJ+7 *QfjtGq1:VF.~fXzZ^-5)U$;H[zm [mG[Tro$L<2=3" b,vlu(kefYz{Kqn)@!?9_@b)".e {G!:]sd6%/](b lv[ _ 0,,fg Z3NIV)EAT0VT؟'TظVՒZe׆'?zCtYzcBa , ־Sa+YO WXꞏm9 WcسEQ^:2TLdS-~ܝMuߢK szb}8bQfԷ#X]qaHLkoYXYphI#_#+wU"llFB''ͫd/W<~c-<=+HQ-z[\˰k7YQZPDqvHۑU,5鮫*ee APHֈ?I+]nLI$nF܌|jRWmvTn` r#|-B쾾ҝKKw;'st:SZ:frWĆvPwC^$vWAʱ_(U,dG3~'QJq첯NrPh8oD-KUR|HQ{R>%%*5iK,@J=6BINbEWVY\l؁}o[ Nǐt~2|kxc~v!IASeuJ#*$QST;+:Kc/UKazYd\@u1=3ev?~`1vGoe#)mWdޗ4kx>{Qº֡>͐l!y=Cf=}jڛ񒒜[I~G}SKY2KSЫB;H;rߏH^zx["m~uRUql~.[l^w#.£?pn_ϖ?O={ɵwvaɭR oWފLZsڠD>1}>fE}&[-t Yǀ@XZ:~69}l[xr,L *{Dɯef_Ί[9@4]>f7:fgO6ӼQs38cLAؚ-w(BC'exėVu smdmK ~=^zw%c*o``c-a_{Ո7Տ}1מ.eLMRtRP_LfbĨ.,`=74gFNn&exԨـٲ/+lv>u$Itu024ߒ`6徯3z3R֥$Q[+쯼Oϴz^_Y\~u#ݴ젣Gbv@ݝ&^IZ-W#wN;cʱkVGhy~ct[ e-J>/ާG6 ٶd~(]l(ecʿ_m[wqne@>myv;> ܶ*uZO}xy9egWkPVB( !?qz;dQjzyzdDDlU!I;s/?CdZ: ߝlf)NOvCҳ]n,>D>%8Dw^6Tm@ZB?wzVZɯ\"c?9闅ԖWk!V*] O. +&,IO22+ĭ"0^YeRg}yH,e!q\I@{""ylkc}v&6gQ6EX> >0̢ؖRU| R/KsPǑ~"%C q1V&-¢Tqګ1}N̈y[ ]}uP3:;~[ʩ;B"% +6e=DOv;q0m4i{W FM̺[:TA`']ְY*lJǮJ" z<|~EX5 قH A`ܥ&:XV2A{-hVw!UA$ܙ}鋢s)6?|̣>m-I l|(N|vN z1Bk{lOWu7BVώ[fא5ܘ>**jEeU%/`-7׻VZy3*i\+/Q:)@Cņ:N&mUV萌YD>VNM[(Sjapĕ=Blt0\qg?SC5?/+g`.5g̣~SeGT\|vZhoz5'w_f} 9W]v+=ŽXG#Z?=̾ԇVů#BRvC+a0P?`b]oGt|\ }Yxj]OLtکy>Z`somw׏Μ[61~-B>C瓕o +NCJپd   KJZSJE,孍{\in:e3WAK]$6; :#[ƾhʱlkBx~:K^2V/ɶ}TeM ߒw!6~5+AT<92e:6U?ٛ)c9[a +_X~@=pHcoy30;2C*˜ XXd3*h^u_c3KP7/8aǷut0Jd |2&NOWu\Tw GpA{w#2z4r?08}}s}ʷ+'m*nPl/ԋ(vn,SYD7 ϊTVU*h{TOQx2_̵\yE) +Ò[F=6Lu4*GvV,CDFaVDlJ(lՄlTڎ%}y8aZkjdr@4]Ǿzo,qS z-{li|8q"Yk!%Wډ^Xu[zHg21zf@vMvԗ>КZw]:wF7++j) xߙpL_P X-CH+qb}Ǽ=FΎ 괞*ca;y#M(z~} PVrl5?9LiM4z|ik)>o_G\TqGyv޽f5x}2/f OG&-`GǿaomPDKQmh DZFif?*ͭo~] lUkgl쫦?@FN:q2P +ѬZiv]NW-_ciQ`ej?= (#2M-"R oTOUfA)'f·::4Г''e+6կ)wmnrlkұz{;?a+:BW[=2f_O\>lnHŸֵ"H _U2)WJy N㶷)պV6R"ccW57$-و+_)Ko-3 b̫zcL|zY_*,-jc߰$uf{/5UZ +AG81QmU. V덐Y(|˟[{k@RvT|=.68YOGE{,:U@<]qWJ]zEOev#dx6\[^ lȤ $l#ĹuA),ukTly:3,Aeז*ӪҡbUIv;MMe: 9XtA[ ̮.:vzz+NyJ""~ڨvJԐH?-ֱrrr^%P!F@|ugzʧ@ԺuMlͲ<ܴ;;˞`t@]rV-wxu Z3]SײUy)))2jW]`;vMc)+n` _>"LӍ]ԾSڊ׵+aM*U`$o@c{GӺ**؅rSOOn:eޟGTzF?XTp#~^AԵк6Gznm~1;ƇmznF2cR*5&F'6r[Vܸ4Yřhf{xgL$G:R+u0Q $%mjk8֔@{؃:FGMȭk.]lmgokV/Tj!qjletePEf˾΁mc}W IyeuT['G_@{zEeԀ6Eֆ[9} y=?[WZYXeG Y8~|_sFVV +l.X7ؖlĬYV3nleҲr{[W2pҀ-qw}9:E̎JPֽU.lfWYfaCT U7ct+:^FArouK԰k |_j-*K+vʩT#_YxbaeulPmVVFoRG9П樬8nC3UNuAAT`Ģ˓qoeWG^D;~NZdZt^z~ ٗ񠮯v`Iۏ->uŅjo2n/EjW6ܳ$(#=u2:f +N=t* Vkj(:,NֱE~]7a; wŞ̾F?1e%bX]C0h ޛNTzҮHLXe`6L.ޡRVzm $yv޾;+?"-kl=2L@|ȼ.pƪ䪶KfFB^wd +JSk^)OM"&-z상b?@Tb#,$h5ίF赾;]uT¤,@ k6feOM˩ }@0+Sh9*@wS\\_ZK]M JnX_t&5^˞*U>)t~# +|zp&j|bT4B2{n3z&GXmT.z~Acđ㰘'?/'sJ`(+F;dUfrBXeo[ܭ=:VlEKx\`J~#)IzGMYC6 x7%qnKz\~u Ψ=җU~jwUP:2eKMeʼ1_JĻgAvS)}Wx֩ ERJp 7=t㳮 sn-8詓uJWߏ337#/QOWxƛ+ Khl |Wt\̚z/̣J(ĝ=/+芄+y׉n`]WǓ`ʬH,@;wִEО""""""""""""""""""""""""""%Jr뾷or""""""""""""DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD-Hȭ$A 'ZQF """"""""""""""""""""""""""""""""""""""""""""""<:SʵT?M{ 豋Vl; +xo﹑Ӳُe7_ea[밸 +>>q:>Xa) ;`Pr`uC3"""""""""""""""""""""""""!cZZcNOc,0I ~ϟ[YtA;lk/u.S]hU:޴kk$DDDDDDDDDDDDDDDDDDDDDDDDD@!tL6˨VAG,B)$cdub55Y6X?t'caG^E&qg Z'[OV `AMK۟g'VĦf(Po_?_h 2jߓb|QǑ}$0158yo@UFq'32__H=E +mo־aADD,drG"o8ucþ؞}W_o?sTW㽝VxɹzUdoOq=ٱ)H}u־{3e58.=JGȄf_H{OY&k?zl,[G@~ Hscr,+܋?ǯ?sr,Xϋ>1u)u+u8-ߓ.+E,ܶ)hpbrٞabGq~JtʲhٳG6({W zLe7VKY(YAI%:fQ4*yݠ4ň3]ش=v-MҔrԖIu.ek:6Pq[OWBҰF}^[M-ex K Ǹ?!1Lu-j^zՕ#9c@hw2/~+1jI{5w}S>&/H;6eZ$V{PZ=70| v;>]Ǫs\`>Չ>g盏uܾځ+,=c- +0?Xk#LzoOoziȏɣc?{KQӱ+Jwǽ#I>AlvzlH}n~ctvI!GuGљJz#(>Ԁ#/ӱozu RGFη1lunEXRE [Vj6Goh\Na1 #z$,8W +v`'DwYꇧ)dZJ^ɀ$Gv?/zXVwoRHkm *Q>`VӇ_W;#I}&qXW~nKU)E? +??De>OKszQ5>9r~}:0J-mejyY.@.CeURKFVSeهOP+&jeu?.\B(LR݊弒OmGs!VB#L,.Lv/uS4*-4y$h͝|L,މ,]^ێ H)G!;gGJU +:k^N;Oq~>ch[dl/nP~`2YZqߟ}2[V6%ئS^s?}}d z[]dc7 3Q[޷?67.^J@ߎ#cX5D7 ;I4%MT]=_x U4uc]/cИUTE +h>B\ ;Ohʩ@xPgJ_*S8#O {1vU9X5L/P-2OoW^mUmӵ |HB5k]uJ;3nzV[Ew!{8ͯ.Gc +m&knVGw7$Q: zy1j UEwܨ85(jQkP+Gih ޷߲o|@yk +H#߀4'ӱTVx/L|gỲ v.̃#CwV"""""""""""""""""""""""""""" <~=(hG4\~HRSoe:.C:/k.kj,*e2z~}=RhnUؼ荏1F]WֶlDR:]C}{LȔ'R*i)ܻ>k9Pu};K=kZԧ4T1ާNiLPŶlU,+R{QDD"=_Re[ƃ|{ve^ٽX7|ǯ:ol|I2"yk?(s++؝JF,x3łWHb4G.>Ա =@y2&jvib0VT{0XX ++8c(tkJ ]k߿n0Ɗ'd|>72AܬDDDDDDDDDDDDDDDDDDDDDDDDDDDD@-P5M.4dt>& h40T}^Gb6DSbe5ȫZMq.V܃or6i2WU1UJOo~Cꮬl~lk0"SBŗ*֪܃Ƕ^šՏ+mmYT4ýan+8VBù<=c}z>[VQx9մX8?@,)`~soSAfdߍ4iGG  V˺W"x)> vԯ鹘y-+5mcW]̷u4q[ +{DG\9?MZ֝e[&ޑTGb>9Kzv%6uÓq3F' |i"ƾi-X`^LDQ}PãO=\5L{0lm6CqYsI@K7>Q⫍cצ^Mu6 wމyQԳ:Cbꆦ^ex v's\_VZb ͏ QS9Z%XX0cČh)ZP8uuU{a<'SY99ص`.0 =Gdu~u+y5;+}[Z^ܔdƧ"XZ\I6Kb!Fu- bթE['$ky45 +:Fp=ZJ="`}:WJ+Rڛ\xlH#~ ƯߙFfw\Te `4w1.w4UEխYv_avV6i(H>=\Oejq³p5?jNWT9XW#5,J+؍ ='9};&0O"c֙@uR΍|j7KCʖm`A^ZZt{~E[9moG]=G½q,V{kml+[6ֵa[nK-IeUI o+lYzF*|3ׁ#os2Ν.6V0ߤqdhfr-XU2i**4p._IKqmRֳX1z'Pb$krjڛ񫤧IJ9*𫶿F*٣zj}#\In_/gS//AOLqpWǷ~ 84%l 8T(CFt~"US +˽̓#%|x}=(/7-G ]WY.>:8;A _I{.̰( {#~;nL5b^V@˵ =kڎ1_j,P62O -[rG!;xbO݌, u7l}' @K=[ xy!K>7H 5c/f7JoQ~Ľ*:t>BdVr WMhHP#z>Ru&[Z[Rw0,tᒼ({][nԶU%V={u5ZPIfk?&gDDDDDDDDDDDDDDDDDDDDDDDDDDOPV +9lSRjtBJ$hԻ)+ 8zfĒ@gƆߴ}JmPZy~a}f.dzt-eE̋W {x68,6m b(vcV""""""""&94*YeD"3A^:x v2|-Om^~_Ժs9}{ʲdI޾68ec^؅w2Zt`Gb q=K9yt^Z(3(w&]VIYF`fẒ1KbXJ0a=鉋ձ3z|X4Jlk9{)5X6MYiuto 2b%؈[Ϣf-6'M} u{M_1ʭc#2Q @ Aw0z{A]|ya!P?i&ZKf{=g{n3: x|6>xXvϏS1 ?fHz]Ek J;b0}#AmUoye@ބ̧5=J\:썃GK<%`c`#-S1-zkmX^wq/v~_i/G˳bdT4O+ą2۱˫Z߯ o?/rq8%߯,OL_'qSE_*/r^`| 'պR/e +b =I?,IJBV_lŇ>m yq #͉c3+앗X ypKO9sPʴՊmh:Ib`zs6-`:箇:v>jCwlq^lŭK>VE4Dܟq}Qɿ +,kqUNԔ-bH :3{#qs_!Y_ոk]<:BqܔJā4}`z^U(Pv72cs[}Hu75gt͌mE +ɘIbP4Yy3WVz %QmJ8S!?Xw+zi] Q%v 4?Lɻ=KqFn*6Cz~"`̧!~Ҏqb]Bb#T;o7&`ƺ.7W{2z[~ɪRk\h+ծ|パR^ +9u'`wߏūw6<}/LK77ߟn#;f3هկ9qɬo~P+"ٻ0hG6}!6]WR;f_RW59939%p+Skɀ{ב3{;tZ5$,WJ/ܘk1ӨՌkm-b} +Tw$kJeUz +B$))랇b$}~lF}ĜFųkZ0F(q;!|r[3x֬@ށ#}1!O5OGu>e}B_Er +̌C)R.ՇĎLYg0E''jZqYvf^-Vڡ] +IP~:'G_)#mؙu!Ycz\ysB9.l܌9=3; Je\UAG +RT٘9S +W`V3hP7mݩ)_#c0FB^kK ܃9a3gRI9^m$A"cсQgiUbWYurZrrT42W1ljlQ#^tu5\.V^lո "q۱LnF~}}G&YǦĦa؛5ə4ߒOd{9jJՅ05py?ToS'fN-^~??knc62ܟ̷YN{Uw?I#Ӱs1zPtB-!xt{]Wt^.GhCRqO}K[``*DzlퟁJO9LWJЁW;mbAx?j՟jL\ei)+\[Gc`yr"%5(kV`FuoFa9Fg+UMݎI; ARet(aj*fGpS~d URwլ/FH$x;oJޭɻ\e[Ueγg`zݢH}8m\t @ڦ6 v7 zw?_\/zÍP9V ?~㪦~]F r*tO>I҂*F=3+) +#JU$6uSDQ+JzjO- [=JJDDDJjV%5+C=??/ U[WVnQnbNb*tdK5V~%‚R1fG+P?QTF|R/vu=h KWKOc>dk"=Vu8Zzx +㹾n%+_->/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 53/Tabs/S/Type/Page>> endobj 159 0 obj <>stream +HWi%I+Qʊ=#x*P ḧزFȻsNzjb'8щFscMշc}'@q@O\Hs#M2q"@Q76dhag5.3"6,GSۖ%R+SD)ذ8wyF0s͋3V5/DZHyOFk:b)9 PbK*M=d+f֭pAxcqˉNJ?6s?3dwR=A uɮpDM}kz !WkIh3>U) Iʴ+0="O СUI4fpˮft8F?g鉁GkZ +_T4TMѲvu" +ᦡL?.8@iRܺz~qY%ۖ'fciaXهMlA?ku“y)&;QݥJoEqU\~z)ȶ R +ֶSʏF赊Z͵Υs.ήpļ^ jJ<併v_kt jj"/U +f=&xB;p 6 +FKԭ.AH!(9_oEʭ /7!p4tԛ.vךUPHoF}{vCG]QmGð\KWJGvq9-ȳqLWI2ASWi벡+2&.<,?66 񔟚0}HgyG c*c}Jp^G)Q@@X]k낚\YKqe03KVsޗ;l +1dD* pSBU"R70!iv!pӷ/lRZeѦ "EkvvD9mI?f GJuPlx،A\(:7^EQ#)f5A9"A8UG"ITe/z"`CB6)2e6%5ŇQ{MaT^SvT'!̪E0$e\u-B8`CW)_]lja'jtnRO^;fj8SP`{!-ɒF^faײ@+Dz`vn7lwWK6r:jK-=:M[jK G"U3FxpE7F~S<3P6UY# &[tY~ޡe ek<| #C1]),9B%^Jc1.Ḅ[!*-*]JVЍPpuyM*N@jTM.Y +ʔ+Jij=vPeʒVe׾UV3c B"v-Ť$UӒ4-:D1ZA}D^1 +{b-s6-HvZ{ HTxbnu3aa5 ^̪طۣKcX.yzhjdY]2h|<]g[Q90i3u +OV! Z{g{4{S`Ѩrc*DE&/}߂"zcwLe$; #-`aUZạR8c_{:hв^:=o@OftH"_|WMbr= +"e(od^}Le%<é 7nJkamYurޡ%-b +Lr~Ԩ(6p"$nP +>Yw",Kӌ-ze#ƣ#6n9,=ꫨ>NJ%bДIdafMG3X +W xn=8-Ԑbi% +XuXLQV` *c54t{lTu߅Zk m3Q3Ѕ_qwℱ!(BƪIyqʋ+^!;Fj)WEHx-e#C2.vD )Iޮ$%*8jP3]pAZhDc/aG#QYtȧaA%1G(SwtRݱ0ҫe#/@ ڕ`,(ذ{{f4W\Σ +!gdуy'L`ȧQrbZ%-7{Ҋ_MORZ5UdbLadz$q0]TA3ЛAJ?ElM1 i=mlebʷ +󎢡p)~$H `چۙ[>7 ~tkpg t%H"=I#H `WJBw.Ki-2*!w()aawO??r2%v8ܬoS3$+͓6Bг/l>oNOn 0 tK۲]0|iꆉ_/&L$qv®!m(V]PjãAMѮG(cgP`$GQ$!*X5i]m[M;EXQyAb +&B\p3m +nz<XHV0R[gsqQsW15漫eQΉO_ {,ed~ +fcvRTp%杙L75c,nJ1ss)ɖ(=7 7u¦U]9MR2qͿXg>нh` `M]a %Li- D:7%cnTkm7D+TQIwxH!Oe} pB(sg`8wn~8o& h ȪvY^.`?i*JECi%u4($5K)mE,S% +oŶ% dzPec܈vj'4*Op,A({ gːB1, %-Ae[IӔt)]s_m[h#e.n/®lztvU7pi䙤# t}MH "@"Fj[pHI5I#&MXJ?`2r rJ]ҼD)ѺX tMƨyN-9Mb؃ }.un1 -1UP,yFRZuÞj]@gҘCgxg(Y!*ɤR"&vH7=u(WB{w .f\cK+\~eT;l7mdDL43>:8M +Xuc\:@ :J7ŦٹpfkL(/5=jcw|{n澴Br( qmE\5SD w \*+6&#/8"d9.4J׏Al6oA,[#hIL +MDqr5uwL"Q2E]7BQ#F(k-(k mgU PŞjU:׷ c/?>{[~eJhv8ܬE Wbl'$;~L!YSFY&c)-4S9 ]c:}ήq4{[RbQ/&9iȹ:}Af.A:Ё@%$`,u^  +Т9Ʃx㤸s[d@f:&Xيghi4fU(3NiߑNjj/iP۷G8p#VTNZ3%@"T ycnb +=Vg׽59 5MX{)"- ;Կ: 0,m#@} .+ &f^ Vu`0" WlK%EO"[C(D9OV +ӈcPX46;#F!Oqv' H +R>PnΎ MV`:Sߚ }C 'x{d篧?a<ϣ񎧧ӏNWBfIișzKOJIhS2c^'=/l>]` I +endstream endobj 160 0 obj <>stream +JFIFaKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Ka +  S!1AQ"a2q#4B$35RUrst%STbCD +&'()*6789:cdEFGHIJVWXYZefghijuvwxyz?괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥D'G(_q ,H's¼߉ 䰵Y\3VlcVR.nm$kfE~;Y76YxwZY" CiJj0ugl @31ª=:' 1I 1ϏMUk,a"Bt{RVEr%Hg_2H)v $s OƲ`d,xUε4r:>ơ,p"xk[,j(%Yj┭^Gۜ]$a1`wzJf <4'M[C Vvߴڮj8ܛ\6m>~6ԊR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JP괥*F=KPmGmSxTVH@\KA+Я8sOm sVFc;0*ڕj둡lgDL&[ <~q5{5H%ER"sjV5H彊9 D[IvlKcʬ!kR.8g@e$W3WMp`F-F9mo=b^"Pghۗ[N}$) +Gw1'Q;c>}Tsn3V1$nԺiifF("ȫ *FV+KY,XůI +gvTrrAmu+vg䙗w%*T ;cbJR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥*-f1gӼ}z*Jwd0PJ,|(Fipitm IK1$J{et r#AȨqhhy +r+E>GFHݜw_m@n "$"&! yTh)g0zȅv烓r*>ⷼ#%̶ 32,C2@>iK̮^bHEȑ;T-{ef7oJ] ._7vLcAKHM2 +\L3wY_D[Epd6F$A;Hȩ0Z,3̌dcRܚ-2:b`3BpP ^Us[U SQ?G|'-QmT4T,'_#*\\70HnF;A㚏'Fp"5r;gη[iKv%H_{ TA"= uR<3n";Al|7c]q\gI$B0B;+dNF7\.ha]Bd8|VӣoE_!|a9#onָt [r%2rs<qů {ZBhg܊9a~8X!Y)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JRn))X3LiJR)JRHy+4+k4g>T}R)JR)X'Wc5R+JR)Jj)JR)_=E܌8?N+ꕌiJR괥)JR)JR)JR)JR)JRt&dɖE`vP@#8 --ekW"4S>}18}\vC,DVBۂ>h4[viֈ%%7p@@=p ? j+<3*Ψ}29㜏^k m{9 :y-qIsTw6'euPѡۜrqZZf%) ˻l8$ަKkkki'I#2gM)9Rqj6]Y,#8G$?$q;yౖ :m3Àp 嵫,[ƲHNN; +Z1JRBGA`1 y\ȩaFp);W5u#ye +F!syԋ+ȵRxNQ AD/QkmwpK;UC5RsjMrקD!#eԕ8 =C9HJWP?4wʖgju=$Q*AsPeyԊaY +6RrwOVY}$Ȍ<3Ãb;|3"* ^I ,&elOBvpS4Eu(9##!Yc#ЃMStGټN$}|CBu6D =õ<N+T*2 Eܼrۆs385Qnmb;PVGߕ*;,uS>!G@O=F TIDf[kgyP02/ `72k=ATH!Iwl,By@%λ Z]ʢ@DۉP, Av5V4W+ H?? b|g5&8c5Srqk^p6ᔡ7R@ϕYM2@#T2MCWG r!r8HP<7&Q1,jG*qcjL"$c;ss8|Cm65pbWݷcx$r9ڤvly$`J !l=KW,#, +? ժkZv9x7@>'rH(KpHF* //-vplGՉfϙ9v"KKXIO(Ə69|kV6{e#Ŷ&L *e֯nȻ% 1! XEF$8AYYNH<$KnL1ƒǞ<E>!0*s+:X*68ְͭEXXmud kVGcime5!K 싌'!{ƱH ۸7c_y6eP.'UfP !@ yi6//^WDP6&p@<7 +IaG$NYDprrFy?ЬR-lF~Ƿ'ბZE*̊AV9~'5R)?N9NzOqV䁞5"]j r[ي$daiw,qʅ2& 'pywr!@ +63< $rNƓr{v8Es\YaQQPeOcb-g{Q +21Us%Nh} 1N$$wW)JR괥)JR)JR)JR)JR)JRY[+Vqk;;" V%G1sYT֤")Gr(x@I=UFh%dI'qI((Fx;ǝXD.N`iHu mΠ]V3M1.23qZhҥ[ybFe6 $wq: +ۄ&4񈝌rA#i#W~6cv1XƬezk o#,O +{޵^H~Z"bdde'Ƃl͝JPy/Bbeaa9{V2g ," c=Np $ڠjw7F ±e$Ÿ,ѥRS,_5HHAU 9KcڬHҩԖkuWo\r˴iߠbX(b1*8 6犭`,o#)z9 +)IC±e9'*TyNL2t7;Q@$L!(y#g[ߦx5qH9mdlE_i0Elb$˰<} VxgN\͹0,hL1<>oow]ZD"2d +e Ii%u)-a%鹕o%x/ͣX7BPеIB%&]sqڶ> 'v,6U݃8<::pkVܼwrMAݸv9YMwFAVk ɁA*Z0KYdVdt ,wdbZu>O0{ b`βl9<*MM0c`rpFj^V@Щ[Ȅf +v4{kDYԥV?̸ +OCoo!Hb'iJ=<I8%8c6U,ǎ$חhz\m|b'.7S!'JB'6o1,/mA&kGՌ08 8U5].hbUߢPUps^)JP괥)JR)JR)JR)JR)JRbwZȳ$Dx=Z4e1&Yd@ϻ8`z`U%S%̨ƀSg H>3[u!ॹKE&#nH6xKs57J"fcsے>+GX $_Q6ayG3 mŻA}JF?8$^x;ViQu }9:,kncJ+V76@d|Q,K8d ܣ0Vnu[Y$ؓHUY0݋^|SՃA# ;b7f,>|}+}Jb .[;bT7n^WRnO=U|>5g*[$'4ٍG U;}Y#0@#; d;;53&F +ņ;`pױzBqY7zŽ2XMϵ¯*)>emlN "Lwzt^UFA")`_Ǟ;Wžks*ąLlQo\~Ef[vY sFpArSUA=}R)JR괥)JR)JR)JR)JR)JR+YԢ\HPm]'c`'c΢xem>hՉ_] +: 6knv>QF}neY}izs;o%(""Yw9ڃp$T5YKkY(껀>d{|x,bK3@ɻDc֪l'nuH֫!XT98_29󨭬_:Ρmcn–p ep|վKmaǰݹߩ6! ].I9*E)P5,.n|} {8[k}CA"1[9$;n@]ܒ2qkKK>xĀ.9kwE{sܪˋN"[6j༲÷aa$­7L11tx ^GAfz$6Km*e1(ӗ=Ewr5* bxnr#]`Jww_=CX=NEV: *Cn1zt+_kbK(cFƘD>m *vyii xgfܙe1m;9݌1lOcb˵xp0[G v s8RޡP8\sxzRuA;VY5!R3gϐ_!eYsweᇺF|o-M̲U_`*w9J#;g + 8d_=ƞgݱ? Gb^r-WEУG u21gbۂ' vo]ND&Y]]Hn^ѭJbŜrp0|<( "۱W1>P=SggrUNL@ʭn6ICRv>H㜷ޜ|&̎Y;ϔ ݾ\D]rI;3뚓xbQ"4s,iʜI_3WId2k#Z!.H;1TVJ6uQa*@=gm&8;^M8F +[i b +}GSvUYsKD(aF#`~ Od +ѧ65%o&m6cό}uK[L֚EJH*F'c.jn!1K 'g8"5B +̬ Px쫂>$zVln٠m+w.ٸ08sQ|Gs5YRA$:ySd_]Ū{ ,LłwU'%զlؙv'A_z٥Ex+u`1q+wY}YJu ª*ȨIC-bIyb^R)JR괥)JR)JR)JR)JR)JR+evFV*v7|LӟN2,ǶBUho c 5LӤ2UdOzt-8z,\I(8e{ij5*O*DT$fTD Ķ8+\Gqmo0 l&E2~hppOUoon$1TE +;}Bҫ.M^ w JB!8ϯjӧhVҙno 1a2A''޵Ftȴ7 nielm"IfI9'2xCի$k0Ggk `6ASm]N9񭴪wF[@gJP`2N6r1ϭkn8 ۠7 G?BXzw8Ph+qV!vX%F9jḧtd&i[T3F{(=*XRu"xwl5?TaKt ( +ֲLDeL^In<;( ;{va̡[v=pHsǕIGh{#rGECxy.c"7-Լ,fX )FQ)zFضw 2F_ZR?HG"ȇ9n9횴+Ο kq:T nXbp75 KsI0w +$^08MC/R+oMJ 6O`~k@ ).xeV{b9Wt#pVF~EӴdfGg`,<UzCh^ȷK$ zCb25UIlE5I*W%V0B9f{-<n\:f6d>JqF"ݐH-sϕbFy {_fXeflǗ$cGK[ApFwPm +';y 1@ءJnG5M7=TP0pc65>u&ؿOʕRHGJr9#S[l4k,26)aQGFO&Z/ɷ Ę#@P{RDn]i2+2b@'c=5c[%b}ʝߌ5&/J@q7gđN9iJ5ķ<28E5:5-QVשlTkq.<؂XrkbRG$ $QiW8A\zInaܪ,X>I$3X +fFQvb=rqWԚE=}Xd\@8 V[JGPG'9ucJR)JP괥)JR)JR)JR)JR)JR)JV1Y)JR)JR)JR)JR)JR` jHb#ȯRTnp3gӊD*9$ 8O}Ҕ)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR\'[ISiUi 0< ¦iIyo5wR4ʪ +egfZj֗o|cnuFⓨ`nv#<yggX|ApfU;U(ă*!>DU)JR)JR)JR)JR)JR)JR)JR)JP괥)JR)JR)JR)JR)JRVy&} nR!~ F}+^X:{%mnW,]3n[8GzץM,i(f m=SB0WR@>Bѓ@%VSͣ`+6ǧZ3Mkɭ!с1N-'5mܼWZ{;ȱEw>$ +点rڣAцޯKwF~#_it-:=[2uq檬wYkڂT-Ǟ tգp=vO*/. m-JA6<7,j8$qWVQxH 9nw6sxR} AuRvʲ7  j0:e,En# w# G{q4q2 8tNS$2w +T(BWSKEEgNrU2u+Ā1Pϧ}*{ˋV4( +%a$@8,pϡ:N5Wr;4I XA8ʩ̨4ƶn3$`m+no9 6vgm?hnzsU$K^WBF۶vZik 3uo;AU<5wE%tܬg58 ץȷ:v$%aC,rɌɂg+ +;{?V-u Ŗ=򼔅#v0}qXFQ;il +wP y1qZuK;_ ǹE +H#0>{v~9lA9ƾJR)JR)JR)JR)JR)JR)JR)JP괥)JR)JR)JR)JR)JROk ,h 0yv4TQG?_YAlD\劢cHu%r PlfZ^\F"ȌS~? +ti$I+TaT.N=VG-I  :KAsW x+l1, + YtYV0AV"@Њ=bj4Mjq:qgȨhH`K`v]sZO"0z{hc#36H8ǡU.'w9?~YFNW8Qd@cXGڍo-cI$TGG6_z5 x03WO:@[)8%pQOu$u +I +P mU@xɤF8b\d|r+O.-× +@v}JT{>$r*YC`3X]B# k  Ԛp$cznq_F&۔S8=( >XC {ͱw0D'@`ViJR)JR)JR)JR)JR)JR)JR)JP괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JRQXGwOvEpe܏E^~:\ƍPJR@@sY)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JRubOו ԭQ"qi*'Q]"(qF[ARK#M06LLg-NFߤwDpoGFhvq`Oա`Z2,c$|G֥Aqk,m]C)# }2249FLx^D+w x:Ʈs ^IYTEGͦ]Gm8c X aco=ս2eW1GMc>XZ]܋+YF2 \k`˞pxmgm*iRKQy'$MFoᷚ'0)1z$s_vIeNF=w|~hmj`);q f,X$Ui[, ̀X 绵2`.psvVJR)JR)JR)JR)JR)JR)JR)JP괥)JR)JR)JR)JR)JR)JRUqreشTvx88-zմD9ٙvmYO9Vm%NUdy ,:͞e 9 F; +{,f|H"i1䴄0}*D"kkuN6;.{cV2k[m.r9<ګ3hF2*{Zߦ[7qudu۸#8 .gp*2ujT7Յ)JR\@8! .|O jv$2NôF.Y>;Tq3MP$,FB&O_ҔVXd NA$pjzʭ0'hW%!}&E$InZRHs?V+xq(NS|2^WH&I$(dd P3av֯J)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JRq +H\2{UV-kqrvc izlR0鼅RzMi-S$*ts9(v9e$r;Vg)m7f;m<ToeS07pd|Ti-[, rW}><˩RHvI >~k^{ FC vĻ{`g9+mXmGXXd`}nx'9jʔ)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)J)AY3tC q޾M8ҕМWsNpGqǘJR$ +v +rNi/ӢɜnEc%8Xjv$m gʓRAA6)ReWF b }Ҕ)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)J)JL&]I#aԑ N7͌ Ȱ +0GD~Qѕ #]S\ſo|Cm-I^p0T0yQFmX߈LkhWS%*q*Gzk|4wy@v89{o&G%>bF?HocХctw$HsU'mؒ$H+OzSaauG v`g +s;ML2ݬ- =XPm2wm$/(@#RVg\);`w|~u%و:r*U'Ɠy*Rb61\gVv&\n 9Vikc2Cwϱ%&U@J0yjMMzU1G521,2 AV>}_NҤёDGA%X|pgbn2*-k=5OӐK`gAszg[t{r.#;}r۶kK&I%]]"%wt|Nӌyb{2ӻmof|kXKosIdsc8ɢ(gf\Yw{U#U#M-ۇ# 1;se>/,1KwAϟ>źTr\+Ly_߽OVyz(Xnsբ^lc-RvGJ8/Hi?qUY?ϑV)(ҿ!V%W?-?$QCbdxK??l_߬I4?mOߨW*ѝ"B˂Qǟ m +Vn*[Ȉ6:aŻBK333{rXw늑+"*ҿ"SS>CXJ4>iϐ~ؿYϐ~ڿO~ڟZ%{AуE|~M??<]H2#%ZW_V%ZIEU?%:W_ՊJ?_ϐص6[E N8Uuc'ju)JR)JR괥)JR)JR)JR)JR)JR)JR)JR|J~Uö*0"߿[t{&-m$c?RXjQʳI8rFW৏-dFwyU)_,Ii3,vcZ5H @%IR9mA2O^* 3\[s"*p|+~x`5Ôg{T}Nڑ&_8ZmKv hWKv9Xv2\gxuMfWRVTUcG{0 GTY`^r\H82qb; ޘ=;Y#sb8*G:ZJx'* +*͝T *9ڌtbIUfcUT_6zl68`Q$2 +Z[ 73ddY2J3c5==4c8_+@ԊU +08;=A&60Ip ndd*2N՟ip6a }M@ 3fE' {:%U cA'|V֭5R;A^짔`@ `ݦEs:5?x5[n#v V;)o<YR)JR)J괥)JR)JR)JR)JR)JR)JR)JR)JR2ȇ B*IFM$1w($ԞsQoXzv2% +,@,s5 FStjJB9ʮHT&:LrDm wNNk֡$  +^&׭duw`mtS[(̛88̀V?dևL .\pM x䀣NyC4rӸEU,qFH}x1tly}e}ʑA4$`fm9X#vq^wMX :.7 ri + z{ "mʱLa26<}WYVp̛ud|e}v,hH1x'&G +zW[tXH@'vr2ݰֽ,(‚N'd2O^oZ +/!n`r,@|mn@#_~'⚁a:?LaHA`9ֳ^4ˆQsgjUYGpdqF%g.%bH`##pqX*H]02uX2qI_ZzAhk&bDɁ ,f/mf?7Ҡ(ܨfD2}=*F$i>dMJY6ѝ`OzJ .mg& ̤vOnJF1r##\ńMjܒVh + g|9^ + & (.Fc57LTmd|/vȈ;|;*<3Im&GbBKl1RWf?n16n~'|ܱ+%ԙXn!@UO2 8`1aI$5Tn8nxb%;*3K3! +2} {^ndnd ヌw;E#8a㑞~οfpm()qۏ55~ me91~Kw~{ʝ62D#yqc|ю;=0E$g^g\ m1{lNm^{WVZ͵n>20>.~ݔ>җHaEc,X|0*L[]zcg$ g*W>sgo2ӹjѮ²*@ wj[H3՛P|du}pFuybh$}!F~8Q5'n?^<.$m͋Qo$U<,jR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR\.a"pITh&-+#3  0T};zB)18mG#s9ϝXl{8DyF>QɏfhXW1(#[Z3 rǹ>g֭R+i-m80]jId.#?~ mN%@0\w9bt˫ +0>rX]sVK6zbُbVHJ>'VzݣmXwIBXFV8Mj59o ȑ +**=QGo^XxʶK$vg3*'f'*TzX[g8ª31+N6Ro٘g=*ЌT=,mTd wOe]YBt."Fn"d2Ȼsw>Z1UŤ˸$l{5`9JR5mpt+2;=ݛı;kd98_#O{uo=GԖ# vmݰ3NM| +xcR?4 99# B[OiL6 5# 5Lӎ'WI2HGUFyTj7#vu4p؏?JR)JR(괥)JR)JR)JR)JR)JR)JR)JR)JRwng}R)X#5EPvZn#eN (2>pkCzn V^A"VY6֐) +p*ڔ)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR}N&yLpE0Ji +8g3i̭pFO,T #)'!KW4c5Rz>_T*=f+á n? +iQm iNq2ۈ"l. s5c- .Ӌ3|s室Y6f %<µ~iq" e(.{MF3iheKHڹ (AR&mA.EEhۊ;#;A\^i64a;q;H|+W+g ˧pI&Hm1ۑ$`gZ։"<`v#l#v,~KOS`7-"p9iB'>[4N]T bĞ-=Glw1GݨMssk,{B܌wf)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JRTݜ,i'b@F..F3Pt)kBF)%HAt`Һc P0Tg,N96揦%RJ)P2].CgHrAx{wWP-bYnK*|nGE3L'PxƱJ ̑)E'!wFK|JDe* v?^m4GE#j~(-QD #}uqJ{jie.APy{UAQCUiu[S4$>'+Exrr¶vAjw7?=ރ|ucqLS䋿*$]ڌOL|}e7V)i.5ҌUmw2GueY9 +@1b +p*5^j/" JhM%A$j󏀊 ~&~'OWX1k?$]~QoUOQi1B>ԥ)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR"VPpH |kEYA*2"EPHcmqM DAH#S1䁞XbI$k٬ㅜD nERK] )W0x;`jʔ)JUnu8[kH 0F2xʩHӡ:}LadrYBqߤ藺][ifѱnb#ޭ6#Ն%%XUYi dw#HHl~Xm0k6rҬi*N,dgεi%0HzKmb}dWOr  ]H"E熫ZR)JR)JR)JR)JR)JR)JR)JP괥)JR)JR)JR)JR)JR)JR)JR)JRMsehrUv]427Q"[jrrk}2kn"}A>\}fhan-a0yF3v}X>gұgCԯDI*2 Oy]]p*$N_-}5gX)bkztڥB)9u,v (8o>{qQB{)-..C&[]Ȫ0z[:\`[,*@@7IlUcoC(Yv] + :FbC$Q73HVrɃ0_GM7B4b>۾v91<Δ)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)Q5=N "!w*Ic$פ0kHeSɚ6>*})JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR+5EA!jqCh\ +cd>̳B:d7#GWT)JR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JR)JR)JR+k4)JR)JR)JR)J RAF2>}e/,)46Kpy>4o;NY5Bv(E9 +IՍ)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR|M?7,?En[15yJx -9u.2P:ZZ[ug7_Z~/񵎞OZkiTfkvK:x+qdq+ŗ3R#J68(J/wj2`q8n +ߴIm::{_$6=gNt涟m6k_-?jʓ_v9O%A_21&}JXV}նq-Vef5q?-:-cNOYmiL:z[Oe65斟Ke6k_-?ktۭ~Lk__Sui.OhyKf w2E'rޯ.TplgʰnI}ym5P]>[q;xHStfT&V|bߞ@cP<;IX-L)8H{ZΕt421f##h; >dT<֕=VHYƇQ~K6e,Ѩy *Gڷ[fI8(siM.2.I;˰xWƓK%֟unQ29VL,uaeF =JqD:dF}3_`2+YgcI?2k1Ȳ;y.ZT*6?IUIhfyU!%~sfUG$AZ6lѾvX>Πwi3Ho) 7 + 4ש1}{EķnD&H,Wh(c''wwmOiے"f EM/בcr;(Uί6t“'D6c7Ioo^ՐGv=0#)$ҵZ~I&@#9dvMf_+rFsrPȊ:d 0cҔ)JR)JP괥)JR)JR)JR)JR)JR)JR)JR)JRj)$< _/x^ F +ĜOUk0]sp-WVpvYAo9ݍܛAKXcN}gv9'%r1>$mF 4\M ysz,\,c>>}v׌בJJ60x8;k]E qa#uN>X3 zQx%M1#Yt2,Io][|w f~hA]OX#0 wx4BI=~0ާk:Llvu7 A$sVzy]Avځc 775Q(>Г YeL!cܤ@\܌ު}#lmBe +JglS ՝ȂVJko$X\X 2MzKa r8b?߯9k Fbib9^sW1]DeI <ǁ5W쒹ظ xWhA;UF wv gg|AZ6Gb$m^Eq2b DM"OT6ʀ/f>u<%eEۘ(N98KFodm,<u_71F5fUKhE6h"Cp8K$m\m!RNК-nmj1Y 4M;1.xe.O=jT>HU"oo[j~haP`HP$CgZGf% +A' y,Ҥd8[/-oB_8jH'mc^\5;X [O)d1䤿+͌CsjEGN#@c˰^$#kUht!r:ơo+q_\sCSnx<}UMbHwфLH!ޫbv^{ReXu+9jVCkq~QXH'}<^@]};3!We^z=K-?46BϜ+.zPTcXNZ(;:;$dO3U-El^8uqI!R4#8}\C`K;: 9p$Uh{-ٜ7UdzY=Ck^)0 XXFV5 0jW *bݟBPxU[&xi#'\R)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JRYd <ǻ-|81VptXv"5} +"E݅qq^+r'MJ v_`VHx%GR"qmdC(e89+:C$PƎWieEV# vi/q6:8'UDϞ'MGKD]'"I1\?UYOmXCQx*TՃ#=Y{dʰYČi(c@ +r#!Fх #LQ]K.v##ʶV#Xaǿim }h ,He py"fl+㌓E,yl:eh0 +|P=<5A}O +O|Gzҭ5aw Mmf92dc诋;48Q}~5 +0s{֫=>6A@NN;'Xm:K9~m;"\FTB2+2ēG"VFA ֛-6NmH?N+DVRZ,|8AVEC(hZssS9*_E7o7mۻ9{ЏiMy0Gn#@ +'n#x溕>\Y1*/e>=wQRta2Zӭg952)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRViJR)JR)J괥)JR)JR)JR)JR)JR5_hFnc2Fs mԵx4Y&ߵW* (;A#$|jjiJR[6SMRxJg*XnP~RiP+GP?w*FXdv zR SaV76ו#Wp *'R^̢F=cp$ a؁ߌgIgBյhh=er#=jhҔ)J5wEd1 {mw{ԋ}f)KfWGUuR<dpqVok:W!I *E+ 9R)JRZ2C c 9ϺM)_ * +HO$x뺓#|@' wQ_RJJBUGP I3}\۹ }u-,zLE*2=Jf?x)Oٓnoou kid[.ΛF'*r{U,K$4;nxbl1Ǘ5_M iDBFDN Kzʻ(s6:M;qRuY0x䈖q Eu_gx/KgXK` ߞ]q)9C(\}GN=k6-q#R%#e 0eFp?rWim\ZSu=K%]ԃksj7uwthFYn*@8*AόskV;$[U9'yWދ\kB7M# (E>g9gNQtѠ<T0鶺,,HB$0H<J Em.$Ė"R+<ϧ%:w^B",>ݵCR5n,Da 4]@ |l|9[Nb$CHJ/I'v> 6ȡfE `}{gs󥤉ݬi#/qwizuw8 )3Q{Y +]I@A +㍽ H$6[]Q  ]LеG"ʡdy!/)%sAګ_-ϕ.#aYK?Qʅ#iOeobgYuJFu]ryϮjnKcR@t 4>*"մK71Mq}1euێ3ɭڥpnq +CFzv㻕|*Eu{D#H$ |3-x5brliqm);e% > 8>TԴn.e ne_;JȻ[، T[Mѵ&QF(08ˤl铸DAQpq?EKmV +5Pvw>UwĖv*۩[:_ZvugwvpP˱v/XԏE^O<‘@PÓ<*ӴfEr Ó;zxFUz$(2uFppx'zTV6bAV;ߚc-ίj$:L!?fRvH~* Ϡsu,&. iٵ c؟:,V6$,Q 1v 8G¬ .inddrW"'U`u:̥Sci${F8jE֛jA-FJ2ĤOi;󭉥qyK0,3;xwc<[,j"322;=GD7q^]l#Vp9,I'MƔGYy,9c?ZikIjP8_xrAV <iq ̪FYBmKB3ϙEؙăoL@1Z[45Ȗ&Hd73YnnI -R"=s{}UEńMb: ($U RT qVH\cqW "[KW6uQ*YF vGcڰ4Y-[e&^NC  +q0qթ01HZ[UJcd&9>yR`y3`Hc. ~@ҽv;cngwoY\i3] PtԦwo۸㏦ZkJs"C,!6~[g 8>yoU*m:2vųO;VMN,U^LsGˌ-"\c]Kn +gجt-,RNK2GqSw2N7=7qqO\ZLm%+\Ȏ5*sta[ɱs_U'&=Ehz:}21pIUvd/pPaJs*-&inG,jR59Ė#@*HWq]ű.7ʁ8)#XydTc +Y".xq:Nuq4 "KI'"崼D:A&a=Lua#<5aXI(22m@a=9xnm6#{6n2Gnةiͨ}A҉ sw|}5^qe%Mi74ebd=;Թ4ֲ᥇ȥm mKc$sJ"ۤ.$ES' ^\\kE{z$<*[y} hYJʼnIQ1HM7.B3~8j-tndH ]y <Ċo[y*܌܍v C=T08=MlA3_&ݸqE)€c>:LU8' 򭺍b.#'l UdR. ݓs'jއut,OZ0֒cl;1i p-%UIi0Xp@ |1biѳ M$"'9Mm@C,}<{|%~CuO:[Bl9mnj٣q,'RP%yf=XҔ(괥)JR)JR)JR)JR)JRdGT,6v xT;^Ne[㈰$`܀j?I?8UV Z)U,698xbp$U FE6S88<"Ұ+4)JR)JR)JR)JRbF9*  g+,봀Aǖ=+ +FIU p;JR)JRP۰3~}R)JR)JR՚R)JR)JP괥)JR)JR)JR)JR)JR `ԬsIM;ag^NFTw&4WvB"bYc*A|; Gr`A)|~G0c y*6]1:+p;kkA)1?B̤Na\|xY"2u' +(?*Vܛ97K! ~r<9Gh#n@3ƛK-Y"8r4{|EZ0 = +SzR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JRu;GM(G Fgkut[l20ݑg]Y,7pL ;2]ZYMs7Wlg}*U)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JV;ViJR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JRe,tiqG#$FXwRbfդs䢺 9S)b?-ߺ.LRqw3ijĢIV-2Gw8=+ ׳(a8#"LSDaucKҔ8u+ѫ%-g,lJwS1Yg.JW뺃R! w;!ڜ7&[1@Az)bRVdS[JRo$8! ٚ`  R]Z0icܠpTHlUcfI~˲1եfUW5Y4)w"vE~ov?POSTK\oRJR)JR괥)JV +2N+x{?ngdel1SȄ=mfHt&n !,?s_FuLU(aUÂG.c4|?~ bcip:nS>JH˚Ҟ%h3NGOSM~DwSJ 3{peƲ%lќSO5)JR*Γ 72P$#89#9HT*kG2GV+Ӭ Y!t !rB&u%sH׊JR]omcjJR)JR(괥)JVTFSYc[ҕUwasL\*B܌8C g>|V][}4ѳ*,]nPpÊH.zj&rcBI=dmѴmCn g; $Fs\̎$(8UT}CCҴf\UPas)JR xҡ셐H UOl=~Qm,qFy~I#'ՉxQUP<%NQ[#>jNyT,)IA;m Y[c;˷q(;wQv59F'E`#b& {)JR)JRvm\JSS)JRs8|XH mJV3E7qՃc 0C_Z&)Ned#jef)JR*&|g $Qd2>5h0_2Jg`yg\xZveqr7 H@S~O[>B#.!Iaw\_S9L. _ *$ߦ_~,_5ރ|scs*#E[Oo?Lg|{e7VK&`ߨ\XRBr]UU&0Og0HO1HOLn~Tp73S['z$4Xo]^=Tg~?O?꽴SHE Ned@z}V!awT?V~DU>EU>E!U>F1CSU%l$Pw?*O \3 VrIhp>1 Q9Y |'qPUHëY&AY#QDjoSoSo7C4x =&?Yx)//ߏ)?%I'̿/r<.kct^-=C{V<B-Ce[DU>E!U>F1HOLn~S{`*Hn?*@731̪<9t5k$~Ut@dgY +_ *jZ bhE.yTϑ%0Of0O#u*#~??7UI[ @73 UxnFf0dc8}z +Ow\)?|/P_+=żu.?a[diX54VXvho廉bR1 s޽*=݌W 0%]sܫ ,n# + ~5USUx_2*Q5:|dWr,`FA u)JV:3Ídy[Ea\Fc/Xڔ)JR?>b?Xڔ)JR]?3[xQ[JR)Q5/GeZJR)JTK-_?ޥҔ)JR)J괥*V/#FqmrKFǥGњKi壘P/.XFw*{8$oylc3p=D` QH#Xn-=S !2`0^}mjE.=yN=I+ǧ?Ao-$761T,tjR|cZiGv웠ʅ>:OcqVKo JT-MyTwW͂h`#=08:+Yèw$dl9T"`ҰkɬOk`8qF9*Aoj$`.r|XL'5)JR)JR/&jƒҔnٸnq_Y +4)JqտfũUR|آw8vn t\ȑ;eOZWm:{md)PdA4k,Vӆ Eq##'q +9-\h،de%=2[h[j9,:}m$ivU`eځ,yugqp6 +3VϨ޾_VZΦ=N I +>Y$sPΥu\xѲܳ*VMÖmpxʴys 媡 %P1Q[6d- h#3_^_V[̐1\rtFk{fHu:P@C5YۦC"TTa>u{fI mpRrcǭocjRYƓo#s#^F!_)myBgC nCrVuRkߝןgCRl0Q[J}RP;-\#uC@>\Wocez{B\X3y>xoerx'+wdGEzaTNH# Vk!Z"{&cT6d%=Vp<jdڬW"ɓpfgp]BaPT'9LEmloT}Jԧlo fI"y#hԢRr2s+ڽmc4([B䎦qu7Z?M&˙J2Hl9}jT[m_?ؤt)JR)JR괥+1Z/,-D( p+i*'ŵmmX '^IY;|M~K<=<byġUݜƍ~@5!.BÓglϒ~gll_ nps{U)Uڤ@]vv$XQZW\Zԍ ʶG吜m~0hp1FCV zD`0@?~X%[ܹ˨gpV Y`-jْ|+zR)JR*$?nO%K*ĚVusr23 ;m#Ѵh# +QW]7s, +xKVa*{ws\\Q$*!WzJ^_tJ(1__)G= |-P +3'#{O2U+xݗQ6OI爥S"z>Į.'ҢNK_lq1T] +UѯzF}C~|Ve[;-&A2KlRLaJ?reZ݈P~O$dls,vOtu۞wkqYؓ[rGǟsJoϤ'TjRk5, / +&\!޾uȺƐdRވ"~eEf~v~ś J?jo4KwUYme5斟:nsHI8U72A98T>Yk +S1'j=8經A$vX>=Fi,].H9eaGsxIH,?rYc +ĘiO Dk:Qgx~|,6r4o&(B3g#*W j;K=cLϚԿ2_נȵ.^\{+@ٳ*bĺ=܍RP_@]z ߴ|gμ*Ne l>n=rq[?F:EzE*d-,_;s"OѿͮiFzQ]YU?k!bzǍNle*~kmbҔ)JR)J괥)JR=bZ~G{gDeked\ p&f]z:R@9,.4KiڏXф sboU$)NmԭrCb{ +յć?袥R\!ݻ*1?@5?= +s,NV,tU~z9q)JR)JTH~۟u])_, 2EBAYme*A |Wѧhˣ(ڬnj&Beeʱ*DANI&Ikx :T+#nIǜz`+_cO=oH.:Iq$k:UJT9۷D*e+Z[by`8p<5g`)?BE->̒@ǖh$籁Xkq@\v;c 0GDP9}s皏gYXIԆVp2N>Ƈcw7^Xߌ;esڳU ^ٖZ$ ,rG>uGrI;FI`WԺM^,vo$v8fMf1C<F l1`~5487+bRI2wߏ{nwmϦyԪ_jڔ|M +NXTpAV|1h\䓁rI |*E)JeYԻ^! KhdwEfBJ*H dzV"f -7/?4|+l0\#U `cX ś̱='~oZڸx*W兾J52#Sh֓ĐxDK&߀(AeaN''̞kQ?_"ԺRhm۷~yGmۏ$)nb,1܌˽: U\`JpH 1k?'=-vc1_:]=p=+GsM-n7g9~keckx `P Τ[Eg +E +7Zؤt)JR)JR괥)JRcZ?1zUl'Pµ|@aT b\]TpU)TRbS.vyJu6AbG")^+nCA܉ϻǮ{lס.\~kmgJʰX];j'Ŷ`X? v/8e_&R)JR)Q nCҔ)JR*m*^i)JRTϡ +3Y)JR?`7QVԥ)JRv^~ś M$Bl)JRD3Oȵ()JR*%ֿ7)*])JR)JR괥)JRW`'VjW3jZDD3IpW2Jc`Eox-`̄hp>W*|\I>.9?W5SIW$L9zRxqm_VqXi1,6Vȃ` +*]!r\>䎙a̚JR)JRnn/f0]@ @'-Y7Q1?SK7~`?T?S_e=T_eI@srOZ>I#W d{$' iZ96~%g)?i3P1! >LL[z&?'*|~>OL?tyk%m~}p2Ƭ0usU7S~o]>J2%~KMt*_mwR~)fdA|>ML[vbڗnO?l¨$^2!x0|~7)j.%~KUuL|e'0&jR~ifbC7Q1o"|~xva?S0*{:tD_ܻͳ.}qM|2jM n86{>5`\e[k>٭MLOSK7~aO['[/:Z+{zmtY{v\Ҕ)JR)J괥)JRW`'WjWɯiO XD5T89r*敪q;' +[{cH4 +-5S"}dWҔ)JR*m~jJR)JRGO.jڔ)JRmZJR)JTCZl-|߿|_'+"*s{. Xܟ_5'+o~ t)JRzȿ-KR)JT;o!e)JR)JR괥)JR`G֕@ީ0-Eqki>hVQxiPf("F+Rܞ6Hךy_ ֺÑ׶\EKO^?@3^MCΞXn۷ a9N*tR9x™^s3ji?= ^ǎJDljև<צR)JRCjR7S#i2 ".A'= RmRnI1B˞pqՍ)JRCOM[R;dS5Z5b6q+DFA8<|k鵉eeHɰ1EH$3xĞ$h ^'bU|g.hUYOakAucAw:dҿk$98Pz WNbg +2v<yN@>dZ-9e!{vMqu0Ve? *YB<߈kJNTR[},K+@˹nVcp9Խ7PT#=OAT*%η.)JR)JP괥)JR<@cLV>?t+Z#'|y ^z&w5PM]ҪQΙrn~VAޔû-ձ+-Ok/uY|A5+qt+f0Uͣo6'9N{ s[iTd1v1p ~WO!V}C%c(WG'ҡgO÷~+$>Gge>`Td}DשҔ)JR*WD_je)JI^k$۹A85[ZҡFbHFR[`ܤ-2*_Km:{pڧ"A"*^CQޮ`w2dw]?V*&uF)#d$cZRK]~*UVOG#,v%zխ*fcSR6;p<*y+{ +.frZOpx>] {TsV瓁?T^Ec٭BYq#<^7ϬۥZg\yŧ09S#7fk!G +HH /StH,-b4㿯aL5A3ֈdguy6f. d|? +<Â:D@KWߋ}(UIf~Y_ m g}8| /xۻC`?eF5DuG{M_nqZ lc3gdv#q8a$5U0r6*$F;5d5Y7̕'5N|MIJFn>?o Y{S9""m>pƗs´x3[[#nO*=?a@w0ͽI$ 2xpEXd_n%_k\i_C_z_ږGR?Ivߎ_v>4k 9ϖD W)Q5O?CjPҕ^o"ZSG?ra]R4>yvSw}fzZR.)JR)JP괥)JRRe_v!߫UO}EwW=d?Uy $k;4H4WGj㊸$k.|2 K5/ؐcZQ^rcncX{8?{poJu=!n$ϖ}{WЯ +∎3[?V*̱#fR)JR*W?ҿR߉ 6 9'Ö!c1o"&Ǫ"yۜ|+Z 0$}iLEOs銕wV$(aeR\9&߹+*)U7umJTK}.ٮW f, Ā0;*5x$X2I2Gрrp;R\eJ"}@8rρ[{{G&hRS;`+6T*d2x1`y +mCI$,F m8qǼN<5t$.;JHp9ڈTrpZOۣ9qS)JkoO$".|x8ھ ѡHfy JV-6x88''}DYfjJp `#>uHch Do + 0AV-[h S w c q;3uI6l 8\|}i>c_Uwo5McQRiJT;5.p̒G+3H`Aecs',,RiJTMSeZJR[y%:K,.".v<񩖖X¡QR>RJR)JR괥)JR9Wy73ߴWk1 _LϯjS5Y2"<սyF#24!FI)"oMr̓Gv@1</[C8#OpWm>_Pd@³w뫚kp~`,d\R5~u !zOQWO}RS4yōkxJje)JR)JR}s2)JR)UWߞ?]ukJR)JT?7S)JR)Ja~-MpfJ8&V@ T953DJ?;biZ*E)JR*&K)JR*%϶zJR)JR(괥)JR$zJ|/YOMנ=mW$*r^0GyAY-p:Tjۉ8ʬ,3<~Pxnj6X>c?A"+E~j0 gV?6'G WzU71|1ywGvG5sJ\Zu~,}WZF5(l"7"iڑvH)JR)JUTVIQ2#گ_=TpO]=Tp_>PK?Ou?p:qS-G>SK~)|?§ʚlA:|[/V~U-)l߶R}؟Uz[\b҈ueDك GS/ |~>RԿKTKQ.o|~? +*j~l[l[OoKf|{[7Skl6%LEK<;g'?EX'0_kw.4qj=(OivJ-=ؔcbV}ٿOߧ\;7qVx;Mm*):0>|{[:h% Z2 犊NN~MMb]kҵ5X_M_u c~V3msָi4UIhѲV=sbH$@X;=}jfu~$P^d$p0j_^mU{Eu?mOivJSnҋoڮOjv?'}ٿOߧ\;7q +u4ERՉdr}+-G\EO/ߧzk['*u񕟕oKe|}[7S[ٿl2+^~e^iuPX[V ,-la.ǹjR)JR)@괥)JR#*Iޮ/W?nt}nq!Rn6`TZu<;{#WA FY5~0yjd.?n?ھ<1o%eU`{dU}x{>ef*T~cj-999ڦ K1>ٕ9<᠐ZN|K& _U~V[66]gR/uaJ&2c ^'biK\g٤<(kID"hՆ{ElRxܑq]skTsQb#G`>5wX5Qu"Voחe2*齃B ==tl[PiAŲjdܯ7ͯpEhͷ1A!Vې[)JR+I%,5KC/l71\g";`߹[ &[^z$`L\֓ڃy1~)JV"]Һf +9YfJR)JR괥)JT{rccs f\ys^6mf/["Ff +HShuf `נ/o -w9MrmjF6eK2H4Z:m/K}j bWHeu \¼F7'#S~zZW/jeեH#'j_o;sʫ|AucsW [b21_Z֟k*{W(IocQ}m/lTReNQ|l7+'28 u^;wZ +N_O^z_ߪmc "x7ٓn>W9ֽ->B6Tme#HyyYB1=5p ,z4#UѶ=(d,FXyfu2o.r$b8U8zoEtt%Ddn2xAonbᵵm&f&Ey(['@>5kyxB!`GGr:Oq+VEhTeLO Kf3(M[Yk/5Ѳ7O7Q3ǍבOeY3o'#>#p#ʬ>[h-uB:Cx_v貵%pی>iYPij-o!WtV@Pn~O88oCZuM "YpIe"p FG:%0MIܱ<⢿D!9ihRprF}jљxkp9S.#>Ό-62N|F"TO,K1sMHZK<3Ts@G=Ed˜{wry==z6/$_{䁜R"9|+ ɴ;DFA9 ]댓KomUEyI} d+ u+k>>hot*9 +L$XmݖWʌ0ws}I)mocdA9+ܚxEѯXVXw( wSd$6#I22 J R/$Ib"s0$ml T\0lHʀ̪*=dk-c3o(NA^'lV5#Āz}}\Ҍۥ{Cdt׍ʧZx5=ֈ2{Riޫ>mhm˞@85mY[kx#.nAU4' <3TC2ӊtO'-B>$`qnEl\(<㊝645 +cD]ٰgζe.^q b's&-cwU/\W݆=~1 +XJ`w{&6 uLzMxfWk8J9 V{ٮ`HZF&R6* r8 :ĠHe1ȄpAZQ$=@%1Kw[4Tj}t(Q"0 ;5 *V85YGobjZkgvuPAK`W KK9H%\)rRp+=t5% Uܪ8>\s_V=г.Q0)Iy,~&+7&BeF6;\|Hx)nHsYI\zYfbi$A*Gvܖ䃟,jP"Kp29Apu>FI^s*( iZj'Q╣ W\dpA|Gsb]d9 +@? ծ) +- lA2T)JR)J괥)JRn)H.TF SxQ|O? +MQ)n +T/@$mL?U]RڃvBsZ/b,ysR3U Ϣ61V5mx;NyCdH7{[ +azWӧK&ǐ%z*7r|ѬQOFsOǤ\LUҜ}h{UZC:.~ >jN."3o6Cfvc~®.2HƈTt|;W)JR)^#]]SYBZʙsx#>%G ][du +z'6"Xls(vLԼ=>(%P!wo~g·ZFBKsxffUpL}.y>u֚TX#%@`IWz6-ɧh23A(H 5 \7B.!BkG;fF?#a㬒6TTI1>`c5櫦t=W(]ݒ+pxYڎ$kAsGct݂72s|eaJ7sm{P#(\8xe #Owaqm. +uUz !\mrXy$O>Jë<ѵ s$HJC +y,Z[d*fG3hێ߂O_c\<;y=el$,bwrWv`gmt1@ +E#*=-*MCgn&T'hpV\oe6[P];IQV<1mud.R[SYq#d/;>5#tڮ,yhp,umGXna;hȑ1ARG'WַW:pQ zpeUc988O0{[EcW8SqoZy]GC{LhaN6ʴ79N*}*\WW(ȯ! l)9<7V3iݫZ-O;̏ ލg#=p׃[!XH,8j --nU] J +ې9SW[gfdUN?Wƥ`.[wԥżAd2##iy bIUFEu){̪K x.@ &o}*ၝ9pqi#Uߖ{~x6Mblƒ>}J|=@5DܳU39.K`S$a3 Rc$pIvp~aF%Gf { pC2NyPIsnbHRugQ$o4y3,Va4:ɿyi6WVfHZN1,ʪXOƾ;yoK= elc98$qjOe,RﶞKVX]X98@Ս# PQՈb2FHcֳ˩+DOHFYXs˾* :OқEݜ'ʈv9>{ہ\ߚD֗Zm$VeޠeTV;žݫwnmn5V6, +T줐}Y}$.*,Z4C,6'[k=Y e`1Q[ZNgw9 jUޏ$mђ"T:WS#=E[開j1hw`2֏ 涂,cEE, ie5X[vEEY]p;зXvQ9󭔥)JR)@괥)JR@Oh1\/~^|rsG'J5SȪ? |+5Sb.$"O |j7(`5Tz՝ D>yqc׊!?#[)*%t^k4EZd+!3qHH`VUtXjlU*xviа@i`I,l$} +oZFNvB2; :|WoPg8pʱOr/fEa3[*WO>W׈oH8Ո]8 `wxSl"5b1'{ bzҭ(殩JR)JR)JR)JR)JR)JR)JR`K "LϳǷ e'R)JR)JR)JV;A mz6n79۷8yS)JR)JR)J괥)JR'ޛ.p#=k٪SS _ҠpŅhf@=P޾:v0D~UZ*Pb>uAVT asƤb;}1נ+3j$'s2ϧzUc>2ĬP.cMϵ-XEJ,Tw0JֆJ'q٭#?2<S󥹺2f|Z]iW$)j"1*2̤}o +Sܫ)_ހT]5~O)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR/CM_6~e;nI^ ~Quu "1d) [_kEObM #df2ء"Q4:=r$of+n5Q F§ws^->w9>H1IY= ũH? b1Kd3%ZҾ]CcS>kC$t,aO춗;!;TT/ @m{$-bVY)ZEN7w ݳ9_7Z޼ぽҢr( z&%I80aLmL&z9[{{d {ViJRiC"'f +3̎@ +lV[kLG &K3'S?3zퟛWY(iH8('Ӛk .w=_װ^`$ +pvlC_-"#*p rp<ꔥ)ZwK"2g&Td0 حV{`ưuQ7@SwjE|o.x1z #'+e)J5̫,3'[k4+OA~3p E 4'DR($;>myu $\r0uϦA5y 4fEԸW9Ց%4g8PΪXtZ{+gnoz^zE{!IUO^T~ NlPNs;5m{;[A,FJ@ƠxP0lmb=7 wVԯ?1^ck'5*?xfӒ+mm2A]R2*ڠEn +jֳX5YQ41]\#FiJw-'ϟ[HZ7dO!56)J 7Zm1<Ixi51kD!oihAU(w1Fp>=鵇SK* qB7&ݽs߷5KPWw"dT!Ub 5 _q=֟d~l 1V2m?KmƋa~~"EadQ|1V 薺r=,FklU۵1.=yg/va-$E#*/*noyol!$M3ENV3!`1ʎ>X=* yV2dz1@xK:xzA!R{p~i#YdU"'smE9HxN4`ђs!n]1qR3+5C$ܱ9E$@jWW"jY1Fp#,O`}5l +{m&poc?Z,#vퟚ%*P n?mnSВR[99vVYV +R9ge I4Q5{p Dv 12loo#>EgoMFҫ\A/N@K"G$^S['Krĩ^5{? +σK]eI),@8\J b ].~Ψ\`&y? +qg2+Gbq.vj? gqin`{Kb$YrFs T6kg.ۋdB$g8ݰF +1ޯ&-dFTjvUpI'WF Hla~;@ҩ&HHk`p:R='Uq@b@#.qGI zSn[ȯsq{qS5 GO w yg~I-bK]\Ca[O䟢$F_umͣ`p啢BZReIzsǡ5uκnoY2=XdzsvefH$k\{^jW­4z(`ADgk[moĈƇ8 sP}T620P>|*G Zuk/ Vĩ Ō6׍r㜆<~5 jWܑ;l$2̈s`M}ksj>$+M-?tzM;T[M.#MsԈ>lzen+ @ bqS5KDnfwTye)4hNy@p3t;\gqGnjg$f@:Ӄ.q+ rjKxP~5R$F' W$שoǽf 2i`nKxj\FsXyIgGCȂ,F HVQ?U}ϯ7m +MHJ9p}+ :kP>&ϾwBxZ!zEg$pl;;>b^qi,d`.緅RKڎ.'I fs}\DXHJtF[h^15c@ $+UN~ͧ[IVԬUN.u/rڵxw r q +BR)T~)" XЁq @H $e'8`wC$BmR +s-(}U]# ef]NFcbO߫h$5ڨTzy:7䫓!lFqw6 %`,p<,Ua(p1TN^BvTGyՎu-3No 3|*U(E --%} !6FBΰ^M$;vu0vm`}Bp$Ni ʠ0 9B9dX섓 <1W.R+u*F@c{けz4r}AltSꛘ2WVV6aBQݎ$I>k̓ȯvwWy$6OmT ޶!M{F ûϝxǞj^eK<>ȖH0bNB>|.F1TbxX^)KA@Op꯯Y]XZb8r;y}5>[{$H"E|&iX"#PA ؋򘏩?4ݳngqmBE$`kFdP$6һ[/R` $y#`N;Կ`ຸ +4)l;P7Bb>Wvdn{gP}Mc ܎XH91%kWQ\{&S:R"' +nrO9ujW6iR\5Ԏ|ʼuS|;RGEy!mKDA\oQ+#ȇV MX @ҳw 5Q#QQ#, X&fb0ayޟy{%Jx2u1>5LS%o0u g 4 -Vkd 1m. ,ZF4{tۃNI*ўm?#<:;|s6Ks{U0 BiSȨ#7E"j x'c38TRDmJK˔1ckh G%I|Q>Fӡg@bI& 1$Q@ +<*Fox I;LJb6ϙ;nEa!NBI K.(f&Yc` n +m +2ݱH4[ q= .dA瓴 9◚u阅xu{EyǥO[{vgHH76[3Z:eK$PNU +s;v&U8 Pc%n>[Ҭ;ѣ[ʕߛQ1qk7`2:߻>wm]*zKXce < 1JmsVRm.0ubL$M<;?LmJ]R>5@3 ]'ƧI5:pƥFAmlTҮgEw%[~cN~ ;Q E4fGO:,xc@JnGKsnot 0@8kKśOB;IL2 ^FQyOi׶wi8,T ߋ[CrLtg< ng9plb@ +[`'v>yiWVݫg֦v0+h +Xy; g*┥)@괥)JR>ttW>yECGRЭW0H푆~w> +>^]j_'bb;ct 5H{A%(03&~:h}yKpIP?5+xtFkZENszU#p+*'"l?|U^Դ-۰m`*ڳJӛnFv p{9(#UB 1LVU`ir %YHv܎Y[淊vJрa} +08+C!qԐ n8ǖq5)Xf+DeR$('@_U2Fr+)X3LkV)Y)JR괥)JRwj#&_i; +.ːqk@c?5;KH8L^5ɮI7-`>HﰫRִyV85;W`Sڣ(_ySJt>ѣߦqVSf)F9-D@MDu5VԥQňA2SNzEaZZ7>3_T =BqTҔ)U:[(aan$>85/U)$(6c (;3֧OOuo;}vIm%FP[nCwO¬#RI H  p< kr%6]LX& vN#[$鸷izkpvn+.Fq_/t{s xābݴH@GXN|V˟6d8&6-*9`⶝qFaEgd+d A9R D^-c7m.2A~[ad}'c r3_1 8♞ؑ*orH#U"mz8mBd*,]g` izE"vGܠle +v1j?itx$f2\Wi@ ycԙu9%DibDzހ#'_V\=*}% e*X<uxuW+$*fs |M|+up*$rc$`Uw $[ݍ۶ǟnkEMs,G zʑwl_{9zuTF,$\s  +03zg+(@UJGs['ʠxDN&Bl'[= \j=tx_nY3i#GOC ~p-[Z\NѼ*+3@I]in +:{Def۶@9 '㏮x48fh|ۘ;V]\TivTfm`N} nunahfw@r˒y5 ]Uu ԆEkv89VS KkZqIJ+ZcH*BpG{T[^QL1%rѹ9's.Y:HtvF6{, ,V 7A[\ w>TڂjDjbywW+Zi oRL񢼂0bqd(Y_C\BuܭۏΠgvVkRuKgw(۳xԷ,>h$9ήu[te"\g +|uZnTO6 OP/F v}hzQ"Hw1FppH=mֺ<2La +e;2 Ǽghaoqi,L]C+AtvpEw5M˂-u6Ǖ 6ǹʜg"p;A#eXf*:n̥w fO&x4=L̾>&hvr;@g'h@gyy(7^!c]($i3V_H9emsVB&$Id >/_~JաAn=ȼcT7c֧RRtcEݨFʮBf$γU iB쫎w7 +I,pGup!wL$A`'8ǕI[Dk7*JVnmep:cdHǿp'֦\Xv>}h I ]Pn.uմXXf~k3S<JR괥)J3Uv?MTo 8HxZ;A؍p~5J\@N\zcw?MHdKxF>M\RR "od'o^WG5u&v[Cq +TAN{rUg%$ b5m?[#O,bߕAVԥR]}]bY]&RMh ur ܒmn ^qY)JR') pUd©oi&+o bxweL}v s"Bd!^0Y] b-oPSh8I>UquմzQF 2g<uKK# -̏!S*_|19zVX\YK,-/23,զSԦhdT1.87G=9U*is3 .f&*/Q0 +A%=FfKy(mK vqn=򩷰^Z^|пLaIR3yW[, X*szSZ%Uz~#$}F~j,4hZ x>*N-ySA㚺ЦimSG<ӷX.d쥁0;q[UUcki}JHOhaf;98Vgw|6)ɩ>HlJaHl3؃[Wg5PRUv{@Eb-ݏ"*1ȭ Fq;Bkj+@jw9ؾ{|#F'Td!A}܂x9U*YԦxA% +.8,9N zB 6P*{VsJ_t #ݱxE @b2G%r5L.`ei-3f]Y64oqpFy!!n(ե2?3*0bO>w 旜rFdWLJ-VY)UTLW6EXez2~}DsFy z|iWxͭL1Grռp2#R3#܈E,rK,O+u&r0ЃP"$ʑ+- Mp}\WxKI][ͽmnxc]{,5v6,HFS܎`qM:/Yu[u)Gs[i3ߟ.-n#j̻¨*nU..WTibOhTt=EI[I3K3FToF;D 9*+ѣ b-5޿6E@pFGFݙƱ40]C4IBL.@0\jW؛! K`wC=IX~8cM#qZF>rR *LH쐾ZM=;KɊ kR)JVҔ++4Z;G$ypFqGbAZv׸& +PH +NHOs)J)J+Rcf]wGwswx8Pw~bfViJRViJR)XҕSVeiﲅ'$2@N&hY\x$sX೉UP3 31=8Yi6{3¤3*,!$3VdVK;X!Fyf؋%rͽ䑝܌Oat)Xҕ)XfGmN(`}JR괥FӭoD1˷8ފ|n[n !PJ*2@Z6$D"HfI}a`7סm +ڸPޫR5{1n0O"fmb琁̨3qWWI#y$)+* +nAe[+w]C"ЬI&X5<!)@ s9iVc&H9G j>R٭ a}k!9'حVX=܃[A󑌇 +)JRu+3t!#\6il]d+UXSQ-k[Ui!Qw.{g_  9E*0d<``E~voа<V%&8>^7]}Xdp`02{gl TUHl'9ڕȤDH|H9qZ[z1ɗ۸JX Þ5oI1ʮnG=e޵idR1Tf{  +9P1_iu=W6vBN{Fn7\գ滐8=86sj'gV =6ш|n +ѱ\p+- $ToHd(HS$ r*#[˒\O4es`u# `'ڥJsg93V[cYbp*ñȬS|bI~VKyRY"P`끞PݻqϕAKe]˹Np$ BwS~#K73ň +_|95sw:*+;m^zĚݔM >xq OsR,!KC2A֋fNuKB T0>ђ Ǘl`bpzm*T8 G<֨5KX%a}#kp3Aal$7W=>gJ (gpd 9ʾl{BmbasR/u84 ς{~;P8:hSNF-e$rX97Iw$A$$$ޱkc iB;)eRX Úzk7X{岀nȭ6@.ERAqbRpe(VqRx^L0\5!Y3ăw`|m.\ q&[JJ%wcq^'R& a[⼮M6Rz7K`{ `>.?Gνېy<3cjq{ISr88?xVzͅ$x[S \AAAfx>U5{FGʱk"302Y($n*dqYm^$g@6}-@=|$si&Ġ~\{d +۠-j[Câ ?:vݑlT`8yg«5X\WVP !ia2+Iy$wKy O'*ʭfU-3B>fjƺv*@6+!% <ak mq[?=Q@xm3#_ŒC#F^ym crᕀ9*`TFI?U=>Cۅa)P2c%onIsRnu-dX + + ƵOCē(FUW$ Ğ!GETDswY*fPpH'h*x5PE*Ƕҿ8b B؍mݴ$n##Wh nYG4*Wt)J괥)JVo_Ʒmte8#>gal};x?Yu*M. :K *}YR ++\4õz:Rxo QJ<,B6NOƠU-$UzJ_*8;g;{KpQ&Yq$e)x^w6RA_5̱D' +GI?uyEm}6#AHH| ΢kpe{9U]Hʫ`w]~VV-Vbs-H*Yd #s[o #m`UcXvIx_i iLByspdL)'aj5KgRu;;@o/!7 7>eā$3T)=]2&k2H&ݕ"W+1>Y]>h$|\PH\d[{^\][و)e${J4NwsRZ-JG%!/7s3R%|RjJ#(*Pe_{ ginȢR6rN0p>5Qޝz3oug$Aa") "IN  +yt6(qo$Lʄd۰V'>U+SP6Q%fyĽgdb=#Tުy.݌NxI*F>> Z{R)@Mdn6yHla22>\8F[ta#@,k]-ո=;I7P=v \T.ohAS192@R1ªD^Fua xoh6T N|+crCqoC(!!gVi(Ӣ%첆vCR6zP{߁&2WHNn%fIE'XPNݥ"i-!pT11'}u_X2ڔd<%YAm_߫K["I yuqEI׮9Ŕ 0̠s jpKs̼c$WrZ-,l@&tNvȮ)k$ߺc+"5w@n"alT{Iʝ0HIxQ|Cp"MEÀD{S3@ϖx5o5Xi.̫ Q 1s[rKKBT $ je#iLj t+ ݪ5Vw +{ю#,]0ԫf5Q6ޥ'f`n=TJ{ #E٥,3L:nVj0ŦI( +U8ˎb!6XD2;@e8Wwm$TI+"k : +*.pA 8W0Ew7R+c ySZ>YRPY L6D,qk?V61ILP<ڥ 8~zжx[k)-TUq ӛLQ=TsCk&{7$Qp8IJR+Am@1BÊ}g-df<Re8G=oK8R$yI'̚im1TEt-b{bXg5cǧ[ovFFNORa?q+€c+BgUچ-͵SlJV0? X@8P{ +}k8)cm1X(`k b1LSmfbVqLR>|Y1XY(;V6΅C BǧgjV1T)b1q@x${c5b8$q=ǐSmch@y"Hqȡ@+!qژ66bkYf)@괥)JRW`GֳX)Y)X5-sh֥<έ8;fr>: 7#G}+4)JR)Z$~:[i`cP)Ƿvnqg8+oY +u s#n;=_Q]W#*GC#cA$2[;q5j"]67#!@Osɩ 'WSٔS^wٴ{%k*\[Aӑ +pYf#8s܊&ӌ浥U J<ѮVh] Aڕoum{"#]A&B(}bϨ[ںG,Ȍ5Y–d $sWcC|7+X8H Eh K*!=0S^MDbDR!, +[>s{iQYj>ţ[ +* p&Z3( +No)kw dRH qߑ[JR괥)JR`G֔)JR˦%]LǾTv4)JR)JRyzB˷@w n@2)hWH{6ͷHϧ&y4dYu+nU=¯u#ZӅ6Cmݏǻ<Π#jvA>. o +=M@9I@̊dMrx?%\ݰH].!G Xg9y;.uiۻ>q/PEBQlowۏ5X- tA@ܢ T :ߢInRpH/Zټ:BK _{ȏ_*x!FE͝*2 G`w$}uE\ "Xݻ r\U<HP8WJBE >l(%]:#ś}V5]x!W>7[1;g-"Iyc̡q{n'>^u\vOE]1\ kK/-qKn|'v}Цe=4@FC_ps<>g}GlJðU\$W"),LpFA9T]XLSv6H3-qVг&!hYpAD9c>US|"} %"! 4r֗c9?3:LZPn{tPLqܜyjP$_c*##ߌsS5-ΞWn-Ln۸u;}Ov_zt6 Ua+b~τk{- +V5TN@;"/+R߉N,H +Ɂ>Uqs=`p) \U=֛ۂ1t0I&p@8{&|fT1cqеv&>H!wn'-?I-cyhnPV$̏ʂk\Xn7{S2~>EBco>u'H:0-i@G[k\ gB(.]iA.dr)`c-bh鸵9 qϡ=y/`8XO2D^`.\c +B9;}gKeDa8ϕV_I& a`!jFA,JvX6py)Hբ@f!  e),>#c=2sX aB <3WUv n͑fB9+EԒbd$n1nbtĉ].!sd{tu.832d=Jv+ŝrF էulO \۳ۺ3mfl)!Zǵx/.x=}П<8{t<6ckH6}9!~5q^w\!irLn˴sj^_h$$r 1UFA!b*](<䟍[Z$EqЬiކ3a " KUC"q8ܨ@Gj=Zn.c_ *8.yp>D"Fk։ `FK~n,׫ R+zt+4ђJ+nw1UBoơHՕ)JR)JR)JR)JRKXpYF* |۵|{$\{s_imJUT(v-t{EIcBq_2iJ'xci#yE-c"{=#MzdShۃc6h#vU +Q_Kv";vcCs}corK8_dqY{8d +A GzV+1AY"ßts`@Sa6;v7.686P2qڹ α5b#FA)PTcn+{XdkG5.o<}'1Fߨc )n8*U=QO k a PRxaFp6.NO<ӭ +B4+dT1Zl4q= 98z]ٴlǦد,-$|@^{ۚPƑUUB W[R6F1&Q1z`>ѿQ,፷(lcpP2{_1X[$q"weEV<{ѳy `8hvP3mϮ+m+ޢA[K֊$~}E ~@VP_'NxE8e 2w:}#M9C,>=k8n2ƮGm<+k$ +bx$ZLH# "5c QK"y";"lR9 {1YikXcr;Eb>+h ;ޱ5,,H*YC>}-HX{Zޭ 8S<`8'H5DeԽL !s +ϟ5fHJֵ>Hᴴ72:,XU*T}%"R7wU}Bq + QR[=.kKs( ݃UxcEcV5iisUڜ 2Tr8WyU+Fq1UwSTGUZ;;sܮ}qVAҔ(괥yW~7FU1d65y`P]fk~`t3(=LgRu9Z`̊ y<ehfEX G2=F gF}3EnVz_rXE">Ӄ`+mVxX:b"I$;5YnK]:#j0Tv1'W}kQ ,~\ 6Ћgk(Z^Iׁ⑺0+_u 0S4VM]`B" 09IǦA+sHbWpHX71,#"+;g_rH)g`I ofZ8  ,ĂA9^i\g#M}V) FBv޴4B, 9y%;}#'i5itd!.BF f[4 iBr9ț矈aegxȯ[\:l7s#%3um8l+=$ge%;!@N:QRsTWs$ҋ1!cyzU"/?8K63%Ho!,GѸ^UmUGTs*U, ^`ߚD*Xe( 4 c|:&{Qht~nG0Ea{iVݣF66߸t[ KلH%A0`^$l}y&^k*濕}=5-ϢB)mKw!$Q [qf +{Ojm%{U.K<8b2)otJ1 S+vpFA q@M`@"f5cdRk;p{nPTxwnƘ%[u YV08TI[jzM{|`H[m!JKg(I1fK f?]~7rN]"ux ~_\5itK0ʻ6zjǯYc1+Gq 3})%鏢lzΩ4%ٷNA`O=6Wpp6.ۚi,[I%r#/*rH7x2Ԃ;eS8$2[JA *ND})PvK ]\cTSiׁ2ĀnUv!|T+^zNi}dW*pby|}Kj]q "ɼ_VbFQ[J9* 6 5 +$t"v|$Up9iJR괥x@&v'@5Epdm +s@Q> . dT+=cV|pZX#=VnX{zՂxZOr$R,e}#g̩j=]6-63{9_[wfT$cْ=k񮐾ѥM9Z8GimpNqRΘtk@Lcns^|M3j2#c y/xNi2~$j S5瀞_gNLݴ 2}UK{i3"{ۏu}ǭE/F.QXv+2词#NLӧ dMNKư"{h:v{nĚFۥŅ,cb(''0jK=jX<"Wql,ydЭ MOZQB}}Ꮞy:V<=$a u=XK{*~& cp~ճ=8nu tq8NHkdąY#xz̖謱Yf#dCPĎ{vRьe>fnPܴ%fL.x#mDklfhrv 3(#>UsiaszL,@@a'® xV76^ٞܗhMǞFcpA#ʧ0Cp#_“va$k upNK2'Lgմq"R-"b2~9gKra(!_ǥzKWtT~r*[Q.tkDdUYvB2s=-lS*y7''995[Hax?rLgyxێM[{D8O緥j@HfHٞ@Ĝ| \=Ҧ$r 9;Kcnۻg-4k;(Q3rC'9kDKJg21!Aǖ+VPäxkN}'wʷXbtss}UeJ& _n \iF9O iңD뱜'! >lR)Ml۵ɓ#З$ŖmaB fvǦ$ڶ^AӝAADsZѬq"»yKG/t[am&[kϟe=`F-baŤZpIw>N<kAA"D.X7=ѭ$1 YCkV0A䃂A+FA d*V*vb~[K(3XmL%U(_np@z;Ac{7 pA^`mXʳ#THŞLHM|i^>s9U眨^;FQ#j >>ZVNCFl-v''ze@mr2v !-]Kd0nvqBJ:ߚrŲy?U,m*#B +(#R*G nOM99%RI'5]+6l WK# !v27c?UNҭ!;IK Ī+,YГۜsq Kc +pTzi_mJU*H!2;{hP$cgNIkUΙmy,sKg +զ= +9^eoY\N{=G65 VVP TXgkD@򯑤Z,syzV<5N>; g9}y:Ei0eu:Ï`mlֆ bo>y%ryn+nAe;mI#IJ($@H̉]ݶnO*S(ahβ$x(L`*B@zWhvq+>򡛦[v398K^!70Vb m:e[UJ +Ԛk2 e><daT0C ! 6mq;V!m-8 `0NXtێy:%Ȑ$s#11; UqMѫmQFAi1=1Q;6 mەESLڥֹC0U`~Q{-=UITk6xLp;WŎm&K3`Y8fӭHdbK0P ?IɭcE[iF%w?OƱ%Y&ʹrq؜ydѬm160Z%ѢY&:EQ{`6H|kLI-ʪ(ANw`g$~5+f9rTrEnNdS" 83ʾIc;D>M2;Ċ|h-ͯB>6woiVn-Z1(h1ʾ ӧoƹ' +>uPWBY0ss_W:-iGqxNƶ\ׅ #9R3ھo4]@O_Oz1ھ4{ $3n`@bX~aU 8ȦifkK#URX +רO--$KW̨ƶΗQe>Jif-/Qm@L>E;DF+pʦorH$Np{v$[3Y>A|8ЂjZ% q2}۔0s5ebmY#&.dS='>Xl4k4fic5Yjg,v f$p q݃$ +2HJRY5ͼqiJI$d*;~J}m\xm"0UC3rQ#զIet=2όw ۟A˜e6&g*Uғq<ҒhJڣco6mj8ّAUC&{+:D2v1x<=MH涸#18.P<+u 3bx%WAx9ۻQ-5?HF2I(pAhT6Ȯ>NQ̍yf9 )Wyd(E.IN!)OUWxLfk!A,c9#֦oxퟢu*\|2q^וՀk`dB@15ORK"Y7cfc۷˾NjM0y+p ɚTxR%](]&$ EP.GxyY Η BWk$cgҫo55׍_f蘕H1h'8'XZ[_5GdEɞU`Cl6 UkNngi-n\o>wݞ*J-9ܤbϮK H!GsyV^IY% +ݸ 56oREaEU 7fي>qT %ПU(Z.#gF jүݮ.m0"H )fY~jQUv$9"Ru9E#3vDm Uɫ[޺,uNdrCu*'|Fiz^1Y"e2`6A}Uem,} 2dN;'֫S^%hRAD +n2ɽwQQ1%rK:lrw/;$s]ap+B4.`|*œ\\ufp8B]:4<4#!a2>uYuu{5qaKYQ#2w1 3+eVp]%㼭%ȪP;1RUץ1$ CJ8v*Fou5Ũ +JsYvHʌsRtƯ%,I0gBs`syTKcnbeܤeN5䴛м:oI$l$5;RmON4@핐Hʬz1^^[@&w3Hi)xۋ).<@,f6q!; ,&P_决Y8.e㑌p 㽆hYE:DHf8#;q:5|?hToh+vzkory:zLgQv 1?vfI8& ]Im]]pP-jKrp)A rU8YO<%ɟsrlyMW]jeYjk;C|u\t FP(w1qTj7xz-Qdi~w$|\ql>-tES +,pO8%)u}-$"8Uʂ;n'9q_:vv `[,cXYO>\T̚~ #L @kFo1.C{Gٻd9Elѯ ^c[ 3"K|Wez:uF$ٟnVv99$m՝ )wl93jG#ZP#0sm8'Uoyb҉]$ 0`NFx#)JP괥yXy>%]{+ы50 txghG {jipb$e䓻 +H&ya``\'(F=[d5巷G&$VuT9> |YK41>"ۜ >AM9I!FV\ve_E_; "ǒ{ xHT}&LM:]Ͱ`]ƽI_G&Ŕq{$* z>K6]rcrI#_x1Bn6{8aiЌ&g<ܟS^HOb0~~Iv79G3$ zULk-rܺI]ME8W]KYXRhⴅ9ƟdfIVk[viRJC* ;uu=E/-!BNЅ7u1K?<I(Yr$剦W񮉩ieQq$̉”Tݼl3P,4Ȥ[f.zw7 26#Si4W$?R1 U!3v NWq[C6a[\_,ad}i߾S!qAF i>$n,2"]䲢ƎT7 g>\ +{-.+34Xʐ{I[KuJ5VNHcd}`We)VAoo-Վ퐹,{p .sWTn-)u0$r+$Qlnfx湹Y^9@o.ݱRT2H BbPRIMِ%FAp9hMqfW&ǻCNV'"i,@%*M"g;qkNlIu}"72.# "v|<<_~LhyZ5v,ʅ$0v[N +2U|\K,7`06xU N;4m.YCܨjV<+kogbIH,{ڶA;.&de +NpQTVcqnL m 'n#ǐ=\tuo%di$$33UC8P9&E6yl|2xY&o+31H {PBkHJI44{}Bdw9=ª, ky%sNG+WJ۠-DQEe6 ``ā[ݽ7I$Ep8 NHxz8E9l22 [i- ̱р ?x$!y7z$w{Dr 3P3ܬ<_ pm$m Ł['9@h%-'\Gb:F+1E:59mr%BG28 T,ij[oaԡx']r#j42&i.=Aۀ0 + #NMPH{{hdٖ%E#3xP*].+HܘF( 2ǑAN8&|dY% :gyޭnI^PKerUp zߧi<̒Hi7v7c8v*aM2B6;TcP= ϧjDbY8qӉʴjW柛8J&3:}񓒍xϦZ])# 5*0r8>Ujw7w7 sE3EҍӘBU +H?XiϤHK 6,^owG fD ar< vfU 6ҕ2,d6AwVm> K;p *ވSH[HQmcH#G⮣( rp2{d}eBк5o0O~&#°w֓ l$0L6ᲽGh0 ӆ 8!rF- `\{>ދ̨T`>\#Zn|3 \M4VC# +Pԩ4hHbh•l1H>_VJѝL6 +JӄRp +}ꓒP8=NH##sU keI7JYu=x`2<2Jͬg-X1su[4q9HھlfŚyfbFS*N3񩴥)J괥FPG2;2zZ%lo.Xm>s񯻽IGh_ж7/ֻj1G " + ,v )*:-]-3"lW,=3޾u%tDrH G(\I\ =KŅDP-4̱,Ē[,8 ٮzi©3Up$d1+ײ5V<1+rRȸ9T/.*H-n@J8!B$_m3P#(@pw`,ⰾVE +2\s?t!$ƹ`ymh FU99g8{JR괥b >U]<2Bx`6AeJa8gz֭#c\m'v +CyaJk5qQǾex^wf90` "М9;i[۫X}I]˃cj]4!Ee|<bsJfWjͣvC # X Vi Qc8CԌǐāʭ)JRZƔPAA)LVRNM'$˕L1g0A_*j٭da.yBXACW_Li5\D9gc wϐqsmi<+%NrkrKrHFgPZx-̊,dz1{*_ @'Y[nq j ;ͥS_uXgLv߈İA`K $]Bo*,JڽfJOC:Ed!U_%@x+-rhT+Ѵ +#}9-5s^?B-?T;B.$bHʜ9_g]4u{#uM u\B9=& V 1g(Bj5ƯC6P̰VQw 1`9~1WW)h!ww"n|GwDxR/3*Sfԫ;ֺ f^6YY+ʺNA^|@ޣy|+=FMBJ]==mwyq{-B[,HY*dN>Ut$T=a7\8Sgo4W}4Ey@ +w#vpo!YP`$djQb_tc]rOFǥ[j,BGՑM(5g fSp჏*=-bXaf&Bv*Ioq z "\1Vl#8Wޛ>Gx i,1Ą\=U]R0 nf +e*20Tdj+HE$N$>KF4!Dh`e34B9@ U̚UkQNI#d=G[FT{fA %CAPC{8\cjWyGW&kՎ@șϷqˣ\Y4T23HɌ<jdod/yUtH vzv7 F1,'{p9+M 6QM9g̻-_m[hf wvT=qY)JR)JR)JR)JR/~qd4?Su*R괥yqGVNx>U7Vg[h& mO3ogÊq&5R̛K3DžUs#[{ɭCfVeVeY:Wa1# ԏ Sn?:Ǎd gհ rGfnƴ][md3V,Z6Rsvp-~Mh/dvYI/ &Դm (ۘ,0p85Ֆs Msf NrA휊g3>#;)ę|yqZQoInB'm;dc%ʲHYdY +{+ @.d/Z[:gvV4.-.괎I1U4r 1^v ozoנ)JTSK]Kۊ3,#$T+8 rWpgbcW.y'UtI~Q}D\aΘ*{sܟ^aXH5VS)̸0I85"]9\AKqdp`=+M*) o:Lٳ9sRt?غ[s)FF8(ϭk4"ӒXerdH<{\:傂]#˒x⾎[R%dEiPI|Ş=%ܞvb@#g恁85lAPr{;kcwnWɅAS)&LaxojNnb.*`5.mQ?[ӝHfM ^Ġ+ |S-ͺmggbI,>T;%-dLcdގPTZ#ЦE_jfIk30jeOc-\{%1Bs@v{ Vr7T$B< @ hLz-FI>K@Q eԒ%ed8χK% ʥTmUd{i QWVIt˾khZG%}қbWp5P^.6]@r7gp!@fSgqIi$CS 3!6q޵]]d+Y i tX}O53Qpx7+.FUsO&c*ʒ6nF0NAsbmyۀJ v|k:݉H Fj Ki9vw`0 q_~B[^R(,`Wg?P5ݭWo2rX9$xǟ? +wW68؅Eei$>N9|%F@% *FSkm,W%g{qQXV, c ׊֝q_SV3%NL@EJR괥@txu9-䑤 :ʍN;H |á J.Jm41h<'gomeu-!.vo\<5lLK27xVZ4ZA7^fύ[HYC9p(w)ʜCַ;֖S$hQ})n0wO<k] &/*\ҤY ݸ'p0}$r ޡi(,MwEʎA;==jfK]bI POʻ$_9|A5mJRTS]Hn\2>oiJR]a 3DRǰ#b2+do$p"1hgZO_[kM:H՘IP Lsq^D*aA:)JUN1DeegUj/wf'溾!+q*ppp2= ZRY뉧F0b_DžQ~7$x"xy(ʲșcö=ʭ.1I/ň$ku)JU.a_]Xw daHz*Iq-hJXȱFq[<}Xx^_5$RW݂,Æ{[co|FI*R=Q̐3$Bcq+})Uwقl32,=uQ#-6C,ʝE,HqcUwF8sT5dTp̬ 9WuJSI$HeCx,5YxtF+Q1ߠ+4)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR|@ z1.u]^}2%ZiZ>,($sWݦqk"gv!dc9T #X5RLib lS03}O}֩__iȆA` .Qhr{ԟ x}V}B੒rvRHV+g#WDž|CwvWE "&FXdEEѵM_Pu 1PSj/O]j67D;ٽ `2UmC[ ic2PFNH V+ .ҽEryU u^A:emo߷$mj5{ Av[x8潦oq +לKMGP=6ጒ%1$ܓ^_qS~ZiMGk Y +i$mHqhzڝ<"4Weuq8Ěl&,70Jv'x[{>( lr2rcv=}215]kRu (Kh1 >|ΡkV6SHGvQgz޿2j6M4p5䐹c֫ro ^[׊5r0N`Gƪ5_$w%Xûbo-WYTḿ|9TmJ/g[M6'(7UxXƸ9D6V\[@[^K.זf6~Όs>U._ӌCrNP6ku'ڏ1u0]1<k=1_v#}>'UZ{XPP#`Kn\8MZQ{U)<dr+8?UB:]B_ҌX;Gw*+82r9l׉H[&ǹcRk<3g~qonUnm#v3ʒ0r3\+HtH0Y ± p }uIk`m٠c#j z}kWu;E^ O'5kAIy:"XeQz.Ns۸r~ kX\m7XYHsV ƫkq$egFox{3U[)h 6qWZFĬ L2\pC$yWε=MijJWs +N~.E^H%žBlWq|EhuI$' r,2Up yr>.n-CM*ŶE]}3`W)JR)JR)JR)JR괥)JR)JR)JR)JR)JR] = #O `ȪA Wi=Mm9VVn">q<iˍGV]_Rح췁ysp+ ZΣnq (5eY׀1ϝfGNr%%;Fs5úng7W챱]F]|xgM5mJ t#%Bgjr}u-#Q5MNآ]đ,v7s𮗩Xjնĺ!FHN==nQ5+ˋCw}20BX5k-GU[c.ѿR7Wr9^t ]:{+@3K$F NL1޶~G{P&XZ%nt1'x=3#5m#R_ 6m0DA<ֽWӺkk3^Ikɤi'E$LUr{9mU(8-Zm$Im$`g{^s:v% 7Pl/pȊ{>Aȯ5k(FX}cǽitk_XM,-o B*AQO>i"ԣ-6 ,Aq> ^4kJUQ=LLnp6OƣM_jUV8&^59)1^Ψobԡͼk$о,)2>\JCk%CIGT;' !fW*H9R v&O.{{1$Xt!vZCs11Gre"l`e;z֑y>]PVPV\irV4F-}uCh'Iz{l2vӚ“^&h%+pH]i曩:ݰT1d(@@HoA魩M.:H Ghץ5[^y矦xWJEWd`;t.DxW"UX@#Jҧu'!1ƤJ@ #>yCG4cQ B'NE? +4Kd ᰯ;IImfU,qA$M@@n>ݨi MV 񵑄2n$9>UxbS ^ٲ@NAt'U3$";G +#bK<n+τ,5;˄Mo/Cj Sk0 BWu׈/li1s4EX$.ժDy}oYD 9ȯ {f]j>XzPCg1^2rp|'ڎ-Ż"]&F܌l6Cs,4UԧKV;Dh8 H## 7Qu J[Eeuer0FwsT6L#VXö@NOƮ)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JRl(-JGw 2AUU>uO\jڋ} suϗ4wE<*"VQբp 2QPI8"9r:2l|+J0#A \^qu+ۈmT%cm լw1YQՊ0 jroXo"QޥUy}:MsQ#8P38ϧ7 `:s񨶞׸4f- +6ۏoVs]w˸nfiYU`H +2N7LJvEx`yq1^+fDuf\n#>vq̳|]OWL&fI$HxFןe R@X>TT봑1AYBKH̪ҳ̠C0IA +,Nrr0a#W0A@*.C%#A%<ީ( ʐG9wX Nb)VeH WRTO&uvѺݒ@#jI%, k0` V:nFqgzՉG~{T[j733 +P0cl}u)Xe Sa]\eH# C Q5N=4ExQ9c9AZv3gc]B}B!^5E# Ǘ_5}thE1*,f=644VC-FE>݈\x==6irݳN&ذ#d? XxLR0d2@( bGjMVH0N&D<2Iq'n|Z]vV$EbX Ol6$ + qsVKp_钱uǿXIkVZH@[<M*-ĝN'$*L?(4HN B/?q_>-h2nOxOt (1D'UcY=).|޾ +mW[Hm-rH%esV H$ۿv*TF 67ZN: ~*F﫽yq=͒jQW ų6] +(` 5ÖjK\]y'if9 Ǖ*}[Eo.W3m ;9F;{եpkQ*m[I*Е)~hn3ZZ}5|C;^$f Ǚ4~i-Ao*n,A5DfYcʍ}7 p;{4X@etLqœ:ߟLĠN)>N=biek JpcS1`nd^̠כЭWVSerbAݑܚB}BBCH2Gqdkt6.po"/&g\bh/zJp4J (`FpxHNJ эo Qi1)H:@LZuDKAVݻWLveY78rm3*S&uIR8~ ;q4K4;. q:2Ò7`O55J8Hd{ xOnVwedD ua ɬtbF2T3f@$t{En/%^j@P. ä6qs#6}3XW nȨ@*"1e{NGzk(m{bhGx!QHMEnL9-w,#bc/p/o +F3_WzlZ!7gKxxGX2|øzk KHQ1;͸gGõy`1ՈެrdA# +$m5miͤ+_.ãÓ5Gkz]Xf2/?mnV]I$Nv@\q^Z4'Uޯ3wag/{c`ZHK nVf5R4]1ȷl>`/jBiJ (QvCtˋ2x\$3 wc_潰^'JQu3Ab%L܆V>cGӛdbpsv*FN4lᦎUPh2j@qZ4 vZp`;w9y"Yn4b.} ! "YzHW m#9+#%HA#Ur\LIڗevȑ)Ec9?EX,76IPK;=:mXi)KA`ʤ ьEJR괥)JR)JR)JR)JR)JRdJpAr* JgEHw0lS/uGb"glI=Ggc vŏrYv$I4Qw؏B|h4$#wܾD~ig +FYz#v_O*;kl 4Ѧ$vʦ\Gy*GFV8%awToq~'ď!C$tCG~9q+# +IZKu+cFI16>|sK= +[hGmޙ qZ .VܱnlH8s#qe FҢ#;[nH졊i'TI`9`ѓZ[Hk!=<ָ (\gqY̨q:erɁζ^hV=AJ+#4m) 8#TvDKh62߯ SU +TA֖҇3(ei|28;@ҝ -Yq!،޾kkI0Iq</LVR4aD[93*E.v0e*J22Aʢ ṷ0,+a7FR;ƅ~nbq*e1m9ajFe&Vw[q%]'AB]Y7c+vr}uE(hLbuS+8xdkV;'$Ż9s[-6&O9%cIu[KI`Qn# C7I$#83q,²*F9hՙcnrrη],2'J% +T +Ş*igv.,NVmZY%ÎL$qIdi$ v,X1,! XdʧtoAZH80" Td ``r?ַЭeIQ÷WB]0 v}ܟZai#I*ڣ ؋fbZ>Ns>py:² ?6ٲ;5<.* kh`C0A֛" 2)wr0^Wi_o}4+i'k}YUvThހ⵷[+n$ɳj>ͷIWiGG-<}(vDT1t+Y\sD`XdPFc־* `Vv} 71TR괥)JR)JR)JR)JR)JR`_)2HHVCƾX*@ɽR +V2;_T)XZr*ec'#| +J`$ViJR)JWs$(pGqǘwi$#\(2|zRyIUU%&mn⽉fã)ʑ n|"ĥ$w5R7$W+pW 29*)JV+)l`$pGpq+e)JT+fMp*3x + >@d*ea $RԐ"*JGp} J)JWȩ dW)JR n)oJF!v +2IdjCM",`'5sY)JR)JR괥)JR)JR)JR)JR)JR^jU +L 8Q 丷tqp!H evfӁg0sڶ.r,$I߹dۍhۚx]Q#uUn!e$rW#kVglڛ ql-l8R8[QԿdL k-Oqom֎)$B cr*u[Rק7J)\%SNFHV|MqwHW! xVuZWPRT 8#z/X4wqjONRV.Nky6k#Z&ܩ+ϧ_7:X#x~ )8]Μm_MLZHㅌQm˱pd b/B+ f'Rѐ't[ogy=)_iϵ|K%ص a8 6澠X[}HDH4c,v# w8Ū[sH#ȃGH.`K, y=?78fu٠$Ncr;|֫?{AY d6x7+Jo٬Њ+rg6bg  EJ^6㑧*L۴z]/PBݦ tlr2s_ "As-GΊYrLٗ1 w85pN*3Iq vmԷl(QV\0%|\Y E smKHYU$!9'i8< XAC'y}jsn黪̈Idq_c&$vU]BWsP" g98WM` \fl}_vZ\=ӝ#Y +ޥ6y< +5Es]ٮ-bHLtґpH] 9zc5ױWe #<S5 y/`#O+(\,<m֖":Rۅ2epR* +IE`LݚE]Ă˸JQ^@$jΛ%r+3jVWwm 4r&|cG\cԊ۫kV:j/jgceP?<e Ya:Lh +%3Sxu"HHz(! un5y1pl;yY:+mmշB$a!&=@ yge߈`$r@d$g>X[jc=km+I\[#j;~PKMi"(̣s*`H95_zL{2@ͳ8!R^x3׊$ ˵̟4?C5.i&xfF :IvS)JR괥)JR)JR)JR)JR)JRD!S-F[sLv28||' XX\7(ImO IݜF x'v:$6:]] Hr22nqS2^SP[`sνA T6cOpJQ+n8ϕiIumf[em Yd +ʒ095?6YVOG$qelg#$Pu څ4оIT.HvjT̋Li.R OCHndӦs)Ѡ`Y׸g4V:oBBemg`:e6nUr}5G6q{b%_I;U}Dҭogҧ{I}Ǹi6.B,Q7`I.< DOkJ}ѳs`ipM]^ #3s,aW* r"ir {[Wf+SiԙttdH7I$UryhHG;In#l0Z6U0F9&nƐ #\9gu_+ytx#iDU@w@+HHG>\4;Fcf2 VRU#~*,[هt/~3 عuI'nUPx̱nz +A#Ȋ"]Ȗ%`d} GeynvfLY +>3CZ%դQ4a¼S2d23Qu&,ʋ#Hbdo`8 +N~頔6-2"ir2 ^HF^E&,Vny"xEUY"u!kM #}: zu` )S* N´[W:hH@6v|ב[5SH;)4VMTaHrB㍤V'AK,N$D6mH`3_Z,tlX1T݊}U9X0Uk q֟Ivc|ҢeQ4ۛ/ig1'TP=/FGAbمlݸýL4=FkV'Xdfc* #8]iJEXndl ne<jƅ#] 9_T2nbm,fY^wdNU Yzj۔9L}?#dy^ ל:wO%\pr;qW _Ap!ۏ<;Մ֍=dAdT;yS4q%5u+#pO*{KxY:S\W(c,`6 $$q޳{ps#2`f @`sy %qZl)n̥ၑ[sǕcH[ Tm0<2Py9*BHr"DJ\1^޽n"h›FIO N9Y&$' W& ޼U>- O Lmd/F3{Uf{+r$i(CA5m.]iHF:!>^?őp2HRf37bfY StBmrqGYXS +;aV=yY5YGLK;s$YPs޶xWNF?9hc'k푟WƔ[m0I$%H8⪽--M&X-)d?; +@{VrvFѠ.upx# ?N+_#~g]p5YK-drh9$֏-օd4絖I"ޑ2.bu$x>{}o۝ .dd&7/=ʜ`y*XX[B06J"8p:dgg'2Uƞ">GW8!xx$T-syՑ8LҩVZf8$0? }O}PiVd agEt ( AdٸImh'P0U'n21QQ/}qXC{p˙G +&GlIM[ңzGmYߌpTy2TR{ )hJۺlC+EZ=M"?Q NN9zJR괥)JR)JR)JR)JR)JRmtvP"dmE@mQ4Z[IurXGQ`ܩr|/$Lͼ3;iP,Ij0.}rWs2I=@bw%y;Oo*hf.53=GtGPbNԬFcq$& +F9~j85Gb>q Wv =1d<wUmީqz9m;iUp CzUu ݳZZ{*$-2 +}-݂ y5HcQ }A:X9YA$N+]Ϯɨ֢m2mNK'Q]Ae weRݜ''ƫz + k],.1 /}pi0EeٓGg7zlSL+=v8"&h7~Q%o-c/]&2p%fW^'n4˺Hّ% N]2\1Dٴ|th;sεoY>qI9x/lD>2XIy`_8a +dzV,cM-}sj? OBnN9%"2~95/Cnj2N:'3_=N4#FJ7QFAMcSt- '};HeWƉzFz"7"5 XS<+u%71HOgrr̨A\23X5,..7e+9@Čnێ +[ R Y a$+!}.` A犭Ώ$`yĉ)M䁼ڙ2`gVsi +ԙ F!ʍA_uiNwNO8L$ ;im{*M8=Gi𝀾Ӭo'Y${ F(H9;NKYݢb,Z%ߦ#g=*\ffi$#s&rag j!6dxpU%oBF@*࿵'{ [i ~ׂI'ID6 +vJ>iVk..Gy=`e{;xTNӣru$/>9>qY\ixEnȌ(OlTw՘?AL5k{EBr5đBvv/,^mቹ( <@9'5Wk&'~Kp[$UҬ!(Iwؗa--ՎzzΖ@ ꊼc^n[#rSSH#o{ԧx 1O^W,nT!bNys[<ڣ +Kϖ ϑ 6~B7 +Z_C^V lSLޥXD, 7&}deF\1bw {c v.wrG(I8#GzGMN[0I@+mX5D;bk($]՘,3ajvm1R$BWbF!ݜnWxE{GcܒC t)J괥)JR)JR)JR)JR)JR&gFUU.OISߜڮ!`X+m݃ pv7>kybmc€s2H$hQ3mF!@ XЁKHƪԒ$s__!BueTd_xyٴFy矍YUpЭN7}D?cg@0<K/RD16rHv>K*\3+R4D :Ew 6q*84 +-6i&YI;Wlg8p@V.4ii12r8 C+s20q +mmkc +'MKFTxY$'W@Cp'>>>I^燬~[oqVD0Tz0*%ދm$ݳkaF9 Wއ22nЖIkE[yD09PI *Bvy۰h[l`W;qH+'D{RNKnzeE4{K\8vWE{{}UZ+.k*9I9,3H#˚N9U7访dNݰ!ISjEΎnbᕣTgMr +aN23[l#RY{dC4B41I4r/u$m<#55,I̒˷#`d(FN5JG A;#ኴqka y7 æ77nk +[ΐZeJE+*r@ǕJD{IUN )\`y|4)ef}"2f?8JgM-Z4jT9 T8Ϯk:Bvq m݂_7zW,n 8=+hUrQY*։|1o5Y4ID'S3\gݤ $@&W>ӐHpx:f̥Zѫ +̠|Ȧc9X]j#8z7j:Dwm?J~*Mhd.`F8ϑ@ yv3g.eh̊1u w<+-+N!i:Z$Dc#!qX_ٛinXLVU(HE9lsHGi,7)) + + #8xӥ;"Zc,Oǐw dڴEJ"8JmȤ;6d]@a9;w w:3ZyףzzY(˹p#< ;֫]j%v&#.ݖc/Z04b7 +$Q<13qR~Ub$zf@ +A#<Şk| mVB.x}~\:u13|s<cQ5{58mzRie;w2s_Z>٧$t#k`c8jqo(+&#]Tn|L!r6gB82mEK9DNLʱQl2v1a;եyi8=J͌0˞NӊadMdMpJp2q+uίon0&C/1c{8Iy=\zpQbb:7Q;b!ewR$]$yҴ;YfVS,DNndv p{ywEgBdeFa~2 +GJՠ9X=搑srN+LZ+x"Hq"9pH'Zo)c}u**uG{Rt-GGu_TO"lu 9w >Zm䶖䒉U`>j[Mc#|+{n$/8M4ϒl<\v;rՅ@75m^LdU5>Av:u ;Nj=ld;[ C +vs#j-Zi +N>= km7Ag!<0y7F +~Q #FI#2ٽqh,{yk_dt"!tB>p$rvy90 +Km8`ݏ⭗W7f.F +0 VZ;BmܣM.2rqP)jP;:Ig@lf{yak(Qpw@\pqI"$[lfEڲH'gX^K\H"+6,s'8ou85X@vFeu8e Ժh5+sf|PN>5uLllm$㌌皇^j1-҂emBNG"hV1>xÔas!Cnc(G +9{c#η]@IPR!HH yUE \'li9^2FM^麼: exd"6222{Aԥ)J괥)JR)JR)JR)JR)JRjmaevuP*Ɂ>@暶nַY[{8P+F A$5Qww mȻ7+ d1GUcBĚ;3ZK\4s:'# +|ȊhHod{UӠ]R9fu`Gn޵kisc^_Gז2䓙z 2z +.cIP]C)dT?%֙{KuP;ѐߨ+Ҋ#$cFdy//bf-|wi@I`AۨLmȐBDr{w;G2tX4mO-仴k2*e ^OK[_ 0YxZ }8Bt891j5qi_dؑ#ex󩺭dfAb23-5KcjZܯYb*=JǮ*BL}>yRʍsT @rO>yL\B,:ss٣؅n 67Jm @VNiڭJ Y$TLOa;}fm3H ,6.I'BHHyΧj7&RXwd, X'澵[\҃# H8j+#f2$ +%{VF$p P|-V,c;:ӻJt A# יE_EIͦ7vJqFT)`VWwmY_܎oΤW-cZ/颼#'h(?FH5Uu]Id/;USaMǍGoNj{z=n9ʗom|JկDnqϥ{XYT2ƨamnYb!V@xkN2kzj!N*e9a!WF!fEEIRCe%I'e: #d88C{ w6q-B 1Dxf8$8Y."ⰕdxpmİsYӵ{-) 8*֣-d`ZG~dqYoζڴ2{V.> UlCRqx>|U"Ӭ{{?1:mJK;X&km^wKuuJ;TLC)QϚB*R[ۉB3ɱ;@=ۀ>^C$Bz\u݂wb*l!REwZu,%fu(QK;x&G ?J7۰1y<}R<95õr\ ӧ8UR_yIOt>cOX-hB;{zIi=߽Sdx@C +7}xoPEqY^36U~x9zM3J/fS mRT֬`{%}F bK@8z.McWj"{I> :V[}筒CD/UYG4Y,{|,TdbE|)ǭZ=v k V6rфp;+X&sǝ(an|= mI#daa^*K(oG2wHLs8ބc>5}|e]u$/" +( +/P$lt/syy\(FYg$Fk_Gnn$;HI6XL6Mh) +AϑB]sXU`I6{ԥ)J괥)JR)JR)JR)JR)JRXTTP QQS2s5b ؑ>2+#"]@@D2Wh`>hp=qھmXײQN)L cU +0+5]۰3)X0)hP(AGn՚H8fb5&MY"Dc bA1\ܸf +ī<|Vԥk'SoWv=g5g83JeIgiq&M2SqǮ3뚸5B((JRoDV(nG5PӐ=ĊN>g U='iX_"tw w +VCJqJP;0+ ;Ш'8"GP r{kcT$=gK3"b]WAx8JtR+Xnv731%=I$+Y`$R)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR*3w9 (//-G߭6; 2C$PFsn*u)JR)JRu37vA c +WzZOmnQ..I>z +)JR)JR괥)JR)JR)JR)JR)JR% RT NyLr^)-72fӌd7[vrR{g>YD{n _mnA[spُ]ݫ\:&C_p +1$]}.m1) gvU貙/z,R^#\#kn[ZFg{xYxݹ{ʬ.ꠜ dS_P $ۆIxo{ q3#ƾⲉ"1^IM̊H~i"^$iCIJ.x*{c2;}fl }A:,eH8>ֽ[PM2YݑvwPXTrGsTt!P :Xbdk]Rd}qngH~x~{-RGUgO';[ePAW|RǀOUV{_i|9>(?w)էbEKmf̄>@7zEagIpY0سj@𝕢n%Tƭ]q]TK{qsqoN{bֹKu#* +9ɤS$6  b<TR;ZC Xp`߿ ݜcMR-m}Qv9IEC) {}+jJol}d3%ܖvnDgp0*s#yAcgMۀ 1^4P,YNIgR$qZsbw$ ׏VB_P#r;(an8si-\J K22u m<6 cx:]V\$Jd|W71fRnc9l|k]mkyR@;[8GjJR괥)JR)JR)JR)JR)JR߉RҒl{3O&2 y|K%w+ݷctxVz)fK"1|quzxq+uAej%nCJ +W#9 Z=n&x0 r\)UΩkgR3dzFF km"Ӵ$-@>|:aUD5%@xy+8?"10zAM~}6lgtG16Bd XMͲ;[z" Nn9YhN/a.2Ð&X(*ĕe9ysrHX +7gҨ<%3tF +ܶ{kOo4 Y4d],s7~o*f}pG}kOuqV?OƦ;M.[d_VU1+$'jMՎg3Ɔ6a +Fq#gQɨx}hc#uRP䳱= ~ڽFou}5礆&2Ol{ NO2p~hzI7اOU#i߃c -W۪ifLmϟnj6g[j:!eʴ 9Ȁ |]5I`M*OPm! 9qІc'U{Qڼl<r,V=[42QU!pTT@/gy*9#'v'V678`L[ Wm*@RҺ?x+g>Q#~fȪ8bNPL !>{Q^U=N*->qA  yOcnՏC,ѓ%҅HÐJdMYD[HF)ʜ~ک2qufA qayi}j3KC +Rrp֧xje"pdCʬ26滁#U2[bǽy<6 +q%T + +rvG#< 'n3؟(h +23FU}ERCr ?^<EMҬⷕ[+Fpyksism@:Ps[G f}n`>q<>k{Κ2L(PB].@ɧy#sn'ecS5h$LOIM8?0UY9e#͚V'$5=Ff5:"Bq +wn v5sụ 蕖dd+\*|ԜYPi.Dsb(Aϝ}xZ!>&5UsiwSztڣ #旭>K<;G 1AB_>J #Ʌ-Ǚa{ Īg8?aiB f} ux^)LO*>Lcm߻TPfI-p=+lRM%ˤ*[=w=wRYc8=q'##*xH.̷ ,2IAzщ3q;T˦]sIF Yݞx}~LC, J5S{>\HRuytchi&\`|>N6NTN6l8Mk QۗsD։,"ĪI6ۈ@TgV+ A.ol7ٺU7m^݀P-RȮ2S2<[$To7c\gګ^' ϕy8X֥ݾ7w8GߪzE:)n8x8݌zlY5fzՑD( r}HR괥)JR)JR)JR)JR)JRydWCXdh+emmbe!ٴl6P6#5JI:O6"EF*1qYOF(Enꨪ<5]0q +d6`~"l w~cT%c ~fG7>\mشQ*$=N-T`>ѸLt]2&H$}UjB%M&APHOkmΙkzCO rzѐi&k,w6q +)qlgPFf' +3q3_WMU`R.|dqRB`핥vPH?z6orIbGa1PX``WZUc1.%9`i6S0[o%nǽL?"u ۉNs<^ͨꖲ %p=R5ok -;h!9m4]?p8c;.q8=! KxHp t}٢n޻q Gr +ıG`rK2p>|zW֗ k.cm(.}dHB{ぎyʧi6^Rw0o\s[ g$8?ZѬ +!BP` Þ3R EDPvU^ įHЍH@s1vqY4>:$ʌHP;&O5+hthPd{ Emt" +HyfǦXqPceogHSqjHXG"YVy& p0A,qUQ`W7}tZo X>.4No s\aC}^n&1l$U>t˟N}Uo/&&  m#psR-"M(QnYG ι. P4[4Ji\rW#Un%Kk 7agVvt76,HQ(kI pbݰ '$8'IK:4HeQr4KU<@|5cZ遅)b2BxNmOK?I!%klc1XSףUβ#՚V8lZYυO߭_TidlcqǺM.#.rF3[b( + <Ǚ +FX=ͼRˢ|r+em$@ʴ&m$ֶǥZCĐF99^ݫO$`9!{ *JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR5m>j>ja+=ll4 +PT5Y}FuI$idgd]⬣bP0JR)JV#n4uvI'>|3zVàۥRKT gC 5U' +p=ke)JR)JR괥)JR)JR)JR)JR)JRW&zrI$ WQsR4غ5ϸ3& c A;U8]DC᷎Wh$e`K$YP lgnF}$ppAZ/DJL:#nsǝfk-4"ΪxG"ʡІdrȭQ_<r:yCG WwQM[}2L F AwyYR,@$Zmu {- y; DE*V$#w8O,n0UPIbp&ZZ\FW 9PHj8==B$iYMr3Wΐw`K+H#*Ab;(YT(<>|/|pA\j*X 1Y\`+0Ͽz1eGV(p0$BcZ+kdhe\1N+/[2ҠB՜ԊpǸ469`1\+XJ$x9·Qv8&T.F1wkUz2{ PmEi5]X^d]vPܮq$HBauUv{[mG$ȬqgP:%Q27RX)Tub;[-Bw1*3 U#}IQwGj&m5]C“imt"7a8<խ, +[w +OkdQ] j爠׭e7 7W esfr9N TH݃ _?(eZ?;}Rkq8PCq<`߹_j62n$ Ϋ;n2HBEud6pAgIد"nlc7'Ay aNkՇ- rPsᔆpyd-ɶR -4ѭLr +*[̳39como/o7 { W$6VOqgjؕ٪\)*pR. +ݹ5_KVOMm؈U;f9FW9^[Ann:r.>38>.-P rx5Q2_PqKc*α=EkՈ%LpbU85 Y)K. @~eRr?Q/f,B;ϼ?E|6QI)26>G֫3Oe؃2oQa*g +|tF[eV27~%9@;{}ucFCpFGc^8D<5[;Fwl#V NѮgG+D9@vH =zin}İJ#:2G >'*AԴ{syf$&8lЏ2uM2{z 8e-;di9'X݌-9@.T)[㿝S[\JrO!+S !Au2-n!VXΉ@i0ìk؞LgkxP5^X F 튅 ZLs`5`L1rxմC}dXW+ ++ʡ%s[n^Wkv㷭lEs]B{Pd#ȯ˂ȧ7 A#Ú~=u [#*TU95*[|Y~l,ш#8SOs޴zɹRt+HF{n7 H+aqX\BYW+ ۝ʶ$h,5 `n9Ǟ3^EX%kuݰ9~H*J&Uk Y*vu +=8_}h׆Dq@S9Ϋ仛lavb3 ʽ>A mj>vGaT:ZVx9k# =d;@`!#+YbӰ#ۤ8- NJK'eUrm0>fI3_pݞqcj^.[s^W6_Hb@+O0E 2q;6)U1<**iBe|aT$s8M:]; "dZ;]9H@]/Yv1[yFpep*yUr3Ouif)2p~#֋="F f.I%|3_Z3[1,OrrNO ֖RܒH99l dp| eX +%P{g|szvhE=>J `}9ZٗheY$[.meX`Do5;GϽ +ie BP* Gn{ֺ21F( *Pt;Ii;8H G8 qP-fnZ eR~C ydgl4Qm2+!rN<³gm G +1FHֲ=C33^=\lgΓ趗7H7e@9Pq__${OrXЂOڵ]h6w4ǒ݇uWǼ@n8}jHDrc q=+mx$"#۔ sZlQX}DI +>e 0{TtKwWDRcB3ʡ;T)?nřP{0UVj>՛} +m-F }\x{Og7Bv\l,RKRv r+E]8-Mo +0sn9l.p2{s[&.%i!#0ʳ(T>PWp=+L,tbvsN{*o +6. #;PSÚ|r*@Ҧ(Y7. +@+~i[Ŭ)r T~5"|`A*p~*AQ6Ӭ{d:ma# N,wph?Hg_WE;_u0}iY$H1%3$kxP<V{tDV 3d6r}*D{&=B`Xʺ +O>^uqM.Bln,m\r17-q` +m )HO7;*qupWZmAE23Z84Jq9cL+hthC+# gZX%TA{}.hFD`[q|*n* +趩rn0wv3X%$R,1{v}9!XɌO՞ BOGT8[m㻉CVVRpGhY]Tw} +}Uo /ּTa)]ѾV8`sޯkKR aV +LaF`q[.t/ yStd`-=<7: EXR[ syE. eA|@zמO 9,ۥS 뷌@jM t{[ "H 7Qěֆe˿sgk q1޵A YH۰jGlG`ǗߞgJR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRU|!U7)*v7ȧO/R,ufV A6;sSiJR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRw xF~2j0iỘjHR=9JR)JR)JR)JR)JR)JR(괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR|L"zVl) +?z+M+O_pM4,Izdm^iJR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR`,`2,Hk*Xt#@'tFUi'gkDІP7񍧜vf)JR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRU6]4*[dcy g5Hc"=Ь@ϩ ֻmn{HQ:c9NN3luR A 5SN +f,NVP%e$q:Ⱞ #Uͫ>dְN)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRAHLZk:;VVXEF=GSht+D-xR֖"Ҥlcf@_E,:_u8Y^ Tg\T>B!'5e\yp?]kX+29r0X܏/V宴[6lXzmc%T'2͞ G1֦^XC~&] Ӕb'33.Gn 8tw1EEvp<ɭT1z+maFpGu)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRT[<\H+0[>-6.]31<3sRiJ3-P-8*6%UV^b0fi&<~oգ0@I*9jPkGo/FL  e?Mz9%$ySc2W9}3[JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRYg$敳 !F?nW{1P=)uNv Cp`c S;AgiJR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR[hdvPY *HINV)JR)JR)JR)JR)JR)JR(괥)JR)JR)JR)JR)JRViJRfi)JR)JR)JRnҕ)JRk4)X-)JRS5V+4)JR+Ҕ)J+4)JR괥)JR)JR)JR)JR)JR班{6Wd*x#{V/ iզ(l<3͜ߏ3Gg{}Hc${>2d^^yݝ +HVnƤͨo gۻj#9;AꭶQ^ijDە;ZեVɶY3]wzG|X,.Mģk9ұ홂+r1{U?W=sګmSI(I1A.G\#=~.LN ́#G|׫TZ1!)Xe$uqrŭY ?9 +Hq/0Xcو|m}`ʎ݁!#F8- |Mhĺ|$bQXe*A+qmDۗ"IjQI\p;ڋ8+!"݊˄sHYU> +MovU(ne7p=*%P<@x6F=q$4xyI:j8bK60 zWݾku/EK+.Q dvz7T'pq=*-Vk-Lt)y *%ΩiXO*M Gx  |qPr=HIyw$KLTc0{jzƝ4$ǵXISՀ+ckVZlPuemtݕ~@2,ޝϥJP b.v.N;sڢa/#crBۜ;⫤H|K"dY$~[ȐI :ee'80<}{VB J> Yw5},ڈ#;TqjķVq2=rUu# smư".ŋ6 GX4'X\(%`W%{gD\0(d M|E: q#*IjhtJI 0K#بL=qH؀Gp~:hq'6 >ɌwK;Zkzյc +)NYwvy%,I'ܓP֭nd5b Z= TsǗ=vj ݬE3mFϱa Ҵ{L-A o""7\_cĖ,F׍c3v8I[dB".<{CY~(HPH' YUCϥWk ~Im8]lm+8ݎB1GX܀N +ՃJ?A/k6TW1N,WHKd8Eq +p,H +$+S$J"giLd|9(n];z׆\39 cO=odX2)ې0sՓm?j&܍Uvw9ԻBBrąURªOe~3FFIv**J,6a˪9yNx_Zul̷/nL+RmA9Ǟ*EΩ 2:Gvڠ>&Z]} VGj),Ǿ~T]͆NqQv]A^2p}F}+֫"fږu ¤G"fng#85.6o&1i22n\**[.6 0n#ex\sS%K=j dVxU:z/zyVt/Wg@E=|Vy2ɩFRš5EA*"V?<:,a _:FhL8m=qO9e-1KF2anFUODq_HVhXEFHYzm?@Iilq$IQG+'x]:2جP8rΛx{ѵ%A&HH@,T|jlnᡷ6RF&͢B,,fukZ_G YY$jF >uM>o2T IEڋ}ӀI'&]HvOqgP=G q^V=CWW2!%śĹ6tC Vۻm7 !H0yTXuHc \8VN#tMK8`cVݽ09 "\s 6-7Ġ Oy.{tޥ&KjEFrI#Ն1+nw +*d\U,dtv['ly<y,tHP$# +ı,':ImngȄK18Dc YFb6EE?aaO_> I#gmJLRr_5C]oXEKn0'݋ix>ΒeLrK`DOK%P::3x䌀@h$E8,@׊MBe4ͫ3|vk}Bǻzp7t]Þyb:ue,3ۤǹzU +3Wc):גi:~'P{5-ˆ #ٳf!?~s{h]JXKH${ԭQ cw/h`mWe gx~,KY$\P{w `¬m]̉ +a\aj8$=R괥)JR)JR)JR)JR)JRY~5B`xO :21[`Vk~ +:*_AB+5,1dQOOs_@b'q#"^TA+"UI;$n;z +)ʙ#V*rQ@VJ|}}dFGoX1!`F1 4uV~dzŒ$NђGb~*|GoHUGe +¾…`HQKzɉO8s߰5]g%Y * +p]ZWđ$ka@#Ӣ=ߛi"eGެG pUUb+x]9P}p+릹џ\s_UFWdRIR@%IOj5nrȤھjpP1s_+ogI(èaךm`F~UZqa@Ӂm2Y+3b M۶g@bGzt#;98{HSXbƈLŁ1p x9(v{H#QF 2]`zg}H" E G9PȥOu ?QqUE.JB+>}eaD9lӢvm}01/<`cV:䝋<}*F0wm\3}Gp$Eu`}_j+Xe(H b;xP ~ +,HpP ߯PN1ݬt935T\)!pqǺ椎G>WΖ̻@mV@dprqW01XWd29/n}4(%A?+,A XPD#=)JP괥)JR)JR)JR)JR)JR\Mbbox[H@.AeX*.G(r}N7H5Yk>*A-<BdHySfM6u#ζҔ)JR)JT( ohѲǽX*˝9"L3",3)JRj^ȁ r<sTRFo#i6)bT6$ƴ]kpY:Y%@] .p=MXR]jiiqonΪK`d*mcp+4|G2JX#j-ոTmpw.#A)Jv*?j&Ŭ-*ʬ0#>u6)XVڬw7aX< 1 m"L }p*u)J8$&JpH8_T)_ʐw`;pkF.o-ˣ2ƅ @$vm:Dv+ p)JR)JP괥)JR)JR)JR)JR)JRmԩN8#טKɕGpbu>~^ok;i!QB92B0 `ko4@vXH 6x%;x1]vVniW=x*aӯfK76pȻN0G9ǖ<^^\jv* "m*%qpO׊, R{n:u +rFyRZYn+He&^^7m +6'w9y\aQ=I!~矍J2\6aӖ>fh#s3ɭ=]%NC ΪK dhhx%yi 2#p}=k( rsTκ#"ӖcLH{[jrI# +%x[`BRC66w}tF hBɻc+elr0=+-.:WFIPVXwd;vztWW"[Shv^6Rk;Orm` m8lan!xc!0pಝG}E .\!*D|*Or;Q5-IAaheM %dV;ƿԭmeuusm#' x>֞wA PܼKg199s皭6$-Ce͜2y#O"9@PFPe9? +P/l:.2nnU]])Ilcv_zp,,o- +/lK& gۭBD[Xg`)8<9j]E2n.YOqm.59mc#ڋ)&1h@Xq_:2ʚ֠-72;q^(!I䁯Lo4`FC,qԮlk{y=dvDPzec`q1_:đbTw `dgD՗Sשs$*L(yQ.K,u]Gķ7̣֒VߦX`}ώ1ێ5:Tk+xJ"]Je&H[=oXn/nltQPvH9>|v,RUʍ;IFLx':[鎬ۃL`sڥkqM~%oet:gnO/4m.Wuhkh{$L+{ +6on-buhаH^FRpp1ےsoҪA*Iۤ\@?8w㊰U[d0m +uRyzɯ:ڥ~WhJ32.`Qه_y{ulu"07<x?Ei>("=IA">%U,GJ}jqqK]\qL4}0BABc?;n7E嵵Ľhd`BRqXwͲ lg "Ǯ5.)@괥)JR)JR)JR)JR)JR][RB*yֽrdP.=R nEJM"mWNّ7\A;OJPKI7"oxGˈeŒFoЅXw8=S쉖XVe1+Gᚿ1\$} 5|*.-ͬtۻ6% +c$ /9#'8oTx~oaIԲJs^ USǗNiZiԑ6`}6IsǷ֮ne%Rc$,j9'[5uSlcb!$%A_}u6=8osyĎjJ*(;T9u{}9e4]\"V\ ;Fy*mΕ:].oaJHEpTotkRt&nZ8񊏨隦5-D2 +6x?Mz*g;v]o,,HX0VIk54VC!?d AAZK/JZ1,U# 81!3xKL|ǜ:UՕȹdel"92qPl+KS4k=( +]+mۣR6#EF5 s!XYYp1R2 JK:|ێ|[m49iBe(;qbxVӞX-"df2{9=jFp-sUP]N1S[mF"/KpC`p1c_YYfے@αy95[e]ir)kLǬd1!AmǥVj/I_-H2Xg99zZ/o<ʹ0Y*~VmoRиl6A F]v0`I +0Lٻ}k6"3Qlv4}f6Zx/x{־Ʃj&J`yӚ&qɳ8qؒp3;եF!gYbsvʽypxFx>^u"IrHRXe@`65=W\8j+6$Rj,̌\Oq^4Z^^\T"ef;nDZ#Oo0Cgjr73 +8QW]։'>`1= Vͥ۬qɖe,.p}Vq 36co#$ʮ!$[uk[ؚX Hc@Eb-fwx٤ sq޴iQE: bc +>3_qOU[f@\#7WYl8]APk62b;m' Tm&iTOj.`uH>Φw}flGD)dL$PĊ5¼2*Emq#xJYI ,D?QIiߜ^Ė1&O+Uk4iq(Sv@' m^msd~ȱάcmK|LWMIWppnlU}%8& v3 td5qu[amYhYDOc,ڑk6s$:2FpaOZ/&ELp悥A$keֱide)]bwm?*b`9p|YRi$`IrI5Ub>HP *{0 GVj(s~wmw0%UUrs8D/kMMH y >֋X=Cr]CMʓ|4ma݌l1U>=vIJ7*2Uǎx"{XduN +P;[/!Kr$јJϦ7aTB-Vvڣ + ZvIA,$ #yWZ݌̪* 9s[.5+{RVGU@podd+e#d}(yh'Y ?Pm^H6/<=PxEmQ-%c]? +85/dXNP;[;wHw#k% +7߂VwSt#39}6CޗCYt [bw<:÷~7m +Q!_!̞'"uU3T#[AwޜWRdןnm`v&?4I|>QgϮ]VVF,z9=ⳠCeuXEA"6r%G s?_~-KW莫Ύ86Ǐ5UJK5 zghd,x=xs|KftO$xO[_koV" Gkםl2fIor!" ,A -Ź#=MA0=* 4,I d$jhE3NFױىǪ~sDްNlȈG^cI[\d$SL}`_I ;f`F=H RHm5Y,c8PxK,pܽ]nQ0x"ۑ['nxӬG{wet +;Mi:+{"+Q]u5 hn&>9k H~Ėn|ަ .Ow!}"£0y82'<[;sjHp1}ƨmf/7}Uo$WuMf##x#8~(9'}O&+Mb\J7Q0"72{շ/%nf1t *0Gƾ|94fX/N@<'(vRx$c;<שӜIm R1' |U7C/,>N?E|ꗉ:G(,¾twڹ d;FsjHCp|+JgA홸s؟|ŷ0gJ;q%yA 5Zԕ鳈0P1hmI=dcϝAmmll":d¯208oqceմ˰7OLWhKtceV,]N}5&[ݕ.n r9%s%q,VzLs&x"2WnjĂ+GSPktw#!Mg2ntŶ%ot"bJwXZYZ-b]Nje-ߜԝV8- f|q6/~[^(ׯ8!lm dV˨{E:")'jN$j-6$8NX{.tA0tԆ!2Xk (3֤@з *\i*7s,PV +^iJA9^@QӦMOQ<0K)yRB kWiSvp,0 $eX +v{yUUc70iwp ʪ1ہSG( #$Ju*+s#X'kgfh]0xH>\~ +JR괥)JR)JR)JR)JR)JR\AyIw8MY7[p ƧT>ҾOyF;:b-bqdNjwC\rk7&6>l#ѫǺ +ۏ--!E j3Qz_!@ d;~c:{F>XVR;xIƪĀ1_Iƻ-Osw>8% +;0ZmbCȮV4>j>T(µk}_/tmD($r7l}EK{6#sWu]7c8Q#X@$c$OkHRlP]FX-q&dmGO6y,-Ye׳2|9 b1Q4[f-ܢ*VJUȿ5.}]$)ܡ~lmEHce_T}+:̸#R; h3$1Es,k\z=NDk<ױx-R.m: lJdR{.UVXT2jǰ$a6#;lPąإA=1ĺEL1P%ǥKP; +ui f)WSG_1[(#6 ?k{,!=T;gVɠ r"2+_pžb#3_-ڸB(9`yf $vޡtOq,HyCq_~QJm aحv}$IA?W:EJ"Hdcʾ.dݔE$yzWԶӺ$1.6"` :e3#.FPu 'x#gW>2K:}Qclz)FV69<^V>핥7+K"A"01&00O_'O`0E8WѴ&mc3[JR괥)JR)JR)JR)JR)JR]^\^qLe B9}麤m$Fr};N3:*R=W*`cp JUHS9,;J0 p2qj&5rFO(]vr@9 S_J d IY*.Ť۽۶ RMj"dG"eX PrA5ڢ%Y8gBg96)JW˸bO֫o LT-HkPQBцX+ 9]UC#I"4/sOaqkͥͩIWc]8yy7$E^6I78Ϡ=¾& +*OqΥҔ)JR)JR)J괥)JR)JR)JR)JR)JRQh־nY#nO |wZD4hՔg,Rx+Vο~Ų)i}샧Ks1n9xC[J24X6VݒqUn/t{DYm2D>UJd"}=;`d<ϥB]/F6#M! ,yX1k|Zo"keH(`$}nz->j\( K 0pzj[ sGlȬIV\ 3[<^fD6*)[d,_ŻFЩ=_=fs;{Z-HQ– +Xmr~uW{$2\NG}Z/mQ QV< CDi~Mp8"`kVٯ6~vbմ%o#*1> TykARm@ͅs+8 Jn$4V o.YRYGvִxFWEC)&H8eʑ{jXlT)qr>wRXrs7]mxb#(%^SrbnU}xZxx~+K7p9S-JMA&Y@ 2g|#fxκ5糲tX>$*4Qrt[5ef)bVngqjS_|[IJ<`xY7I]MеS$cMSNE|ki +Kgƥ@ xTy5 Iln'hI2 xW;[9VFqyoiv͸M9sj;{u(FHL.Q2*>}1#xtwdBq0p8w*&]R073ܓO$[yY]aXFo_Ǧ2Et B!c]XIY^q+r$PP0+".$gs^[N:Υ!"7Oz7Ȍp$ީRRٺbWt27 +{?oѵFiBo Ii܎`sPynq0cƊcadV +rI7`36I{yeoE)QVXtۜv°"ioOY!7;g+w'>Wն=ݠ8]5tHT:BԲ9cq$1pAR&Bͯ"k.(2wd(bB;j ֵfReRÏP1[A{m^Zzfڲ#%4ţe۳<*aGu%M9#I#G!l W'ueϬIY0lj?D9ݞǎx[s-"*$ߐǐ p{fI;ӽ4)}<&;ƶ\k7գ]I" h% n=8ϝH9#RbڱHdAϺ[aϵ^ lsAi-֦Ӱhg @B.31y)l&Je1#,RO,HmN~r궠} X}`ԯNA$_,GY? ?HY)JR)JR)JR괥)JR)JR)JR)JR)JR7"`qc8rKt1C:Jp#!(\I}YݴiӚ(ppb݂F1+CҮQD drJTruiIo Kk~_`m^5j(u%۬&3N8_gEx&MY#*r8<[VV#[id2nnpT|V]x}VG*4amrqz d8e`n`6|5}>xU }n8یfOdcv`p rX8MS{")$4g7kI+> '1oKdA6F`y[ŰQ:{\3+u%J^?цj:LTxk9¾5[]B;11f9@ҐT9ϩbVHʤHsUG^~qulI *0M:R-#P.7 yv'WzeR~1.6AϭB&.%E›}S#v@1޷kz{5RGYNǖ|? +nE$AQHU\>uЮ4b,@nNAîPPAo3G:k}͢0V&PO 5#r¨2#«n4+4tuQ`CR2vgSen!B@4EALdvdd3ʭ,3OK{v8{Q(nXZf n۴ti;Hua0L{Q/{LtKs2[`"3oGdgK2;n-tC"Am =MR0gDefd` y4;MڰxUuvdI[s&8*qL}qm?cecxA{A$:j]TX#l+nfrvMu "3;ˡB w97^< ^I6׉]y>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 54/Tabs/S/Type/Page>> endobj 162 0 obj <>stream +HWk$+6L_yL5 $RI\LT*:㏿.\_||{ּ\ak6} +:'Qk=c8:݃g ¿}8J:<:4jPbcCɰ?3|?Os.rɋhb^Qo:vM2s,rneWkw8jl&KhwIcHނR6Όt#EDAczΩߤWySN4/5wo +`e.-SP頡Oߢa`"Lwo rZ`2r\ +)`HNvT +T*{g~/ۮ Lb۸009 \v1RD*vTLW4uC@cʇ7'H=49R%]~zY4gnN1#d[lZ +QTj)bU̒cd!71VFug +i 9-+b=B1fT0ސ͂hոA [z\\xwKͼpyۜ, [P 4NCtQ*r#5ٷikz8JϫÁfKCx-2ƜVy'~麅pgBNj.\cP(2S{2ø Swo|({\ Pˡ#U_q KbQ+ xC"UG(phOāZmpҗ}g1JT T;NX8`A̰& it踷.iHg|^ȣ`27='nVY|PV.Bb q6D(M힑-wAҵqf[_yiOAmЦ \* +]ҕ_k8zHݣYSNbܻ_d[a +sZuD)j9p&ƽѿbqߜ=mS"q~MMkfJTt/r[}%Ej )a`kTO,5 )&*a4o~!qdPYjZOMH^ @X:uT|R$ "sa"Si%@ef6RUx/ֵL$l=iWm~񌁫NإV%Q3"f=5..Zǥ{X{(x^]6ݽ<`֚'icIyl6;dC3_*&;]ȦS2>Ls :hzh[I&Q^ELl*^2$Dl 1 ֍*E,]N:fJ:ɇt}WTxjɰF %߲ $*HTS?t[4B!vA?j`,u%Т4=֑u*qVKOS0[KdeyNNs}$0-$|s<堳 J]f*4[>stream +JFIFaKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Ka +  k!1A"Qa2#qBRTS$345CUbrst%Dc +&'()*6789:EFGHIJVWXYZdefghijuvwxyz?(7u{*f!T'AelXl2Gq-FR@=?LpV,SV뭫#u﹓|.RWz;$.t~BS7|.6v#܅@NF \W'T'ӹ3%5MBzlo(^>F5Uפ$#ŰeȶF)BLl+[iutae;Aʯ#Vת+WlvOp~߇y[y%ɮeYC8*:!ףּo=]AYQXuP|1f# +RNzj9YUx=+HIbʳV>8G[ UBdacU^]@{{xUכW,WU5]lНh볱T׭ЛbzBֵmqǸ/̝%~$toAcYZtVfDq\-y+Ra:#e7%xO*UU[;p~GɩK@J`k#LljLZ;{3#%~1>B28&S"Rpvt]n]#:aաkgrK쯨*uP"qtU B %3OWrۻTt(Fu?=K6R;z20"y%kF6th7P,M=7c(C*CtbRmX!>7 :l|HR.:aUpQ:K/ +Mˏ]MݯH;=/T_cei]zueEzom-9e!Xbiļ]A-`nRbԠwcs,q|.&[yU [amuYtOOSD,jSz?C_Qy8%e Ҹ>?*RYVdZQK+Nɳo0rr[Tن[#`OR őqF)mU3u_nd8FO+Ʒzyk'1 /U=΄qYSs0m,u~}#x3CÜz)qzGùDDDBhH֥e5+nԬDD@('@I&a7a)եuo}crE$]X~}|;n4%h>R&ehlBHRlv#c/DDDDDnmؔB3k@/Oڶ論G縈8 (N3)RXJ`%p`qOQ,6v:1ͨ-aYaG~wv5z6:o7 J-jҝ \nibdPj{+{+=jʄцq&Hr6t6ta!q|N-8u&-umUu*I{7l<SeJtNo<_f*!E6|'gC}IdL U `{:>.f.'_T\|v Ǩ>-DŽLCo9[tꣾiN?ŏ¸l{H*· {}A2o_T=7`JKik(P6ɢ@) =%[NU;Bt+]{u=Do8K UBZk@ 3FdN.gtqja\q?[u':I=AH;>̎~(nRR먹cTn[>! Ā~]nW5XyvR +`]cܷדUGU0o5hN&j.o!n~[^v=Y9I +mh#E"821yr::V;6LpxL*dũ(KvTzϿ&e`]ؙV+ݺWMo/r\R\{lZu}Iʽ1n]1,Խ + ݷortYԍu}Tc(^BޡXm:w؆>+L쬬O*|o/GH'`#y^_;9yxV6?RFҬ:_A5Ӽ9Z_hJhD}~o0LM7y^jepӾ}DrUI͡mtl)ط֤RNwv;wUWbOКf~}׷햇l΢L+[=%_^NO md2oR;\f~"sVWb Hz;1D(t&jVz;9D=r9k+ >m@]Dz ?73jn tvB͢k>*0s8*mBT^'22߄kma~1(J ^$GHW:eUeS+tq܏g,&3^Rzm~i'W!EyRX6KFՠZMgM^H?OIyxx]=hXt}_y/6=UQ{FpAUU@fm ;{LfEXVf+*Zgmm:12򭲷tn`u șC=N%!lnz;kBxo|.//)1br[CБy3{&M%"+Z*72mx.)ևn2s!;?ObМv2V+]`v'C&k\@+W{PC0,!ȷbco5j (x=qwK^EV`=f.Eg\ WjSZ/B]:0rKej2?H;׆+ tXU]tt7oiw"e"N0PН޳"y̯:{a+`lcmvJcޤ8J~A7`SVUaN̥N*{wUضM4exVi?Ct6cjSUX`lz__|q]h{STά!V;}vԐlj+|L[kW>ca`zT >.-ngrO]؍Em |C~li`qY<%.gyUkkBcRO..55؊4k5} YCb{h~}邟ޮjʹ.KHFBID{8;NQŽK[j/K2N ?ܴZ0v( HkN'*9 :iIvel5#6̓6"~`=z#E-qyuQy+iuPlPـmoBfNϰh a&pϧn猺X-Vȩ۠Vr%|Ae%$[AMm-_S/xvjb5|Cs]oM*KLzSt6DWoOIs[kCr쩨̳ [iJ}Z\t!7zM:JGD}>ATy4+|Z0^wfˢ>#k<1>mwh-]tòզ F};x7+ɷ`s$qr1f||2V[C'Ǯ:߼w=b%}P8L^ĉ(ī+%dzz@XX]oYr Rt|L>nn_?+#AifSI;:nhPU~'v}VD f^jfkkǫ5(,;.c뷬bj1tI7Ft X*'7UNRš-BY5ԖmIl]obbqӓf=r!]{'6ro,ksU~V=k=BwbOOa3s[ƶܓYֵ6.daݗdnUeJ*VY%OqFww8c\ֶ;V%o3;;OwqvX.Wed PB~gz w3>ձɷ6Pl=lo~/M' xܬKo5]̻ Kֽ}&n7"yɿ)%QQSe7-%yl$ +{FKrgCeW5o[؂}9`rǻ311?2e{P9B}HbbpJt(nQ,` $j5ԬDDbRC y GN>}R*vUe'WBc4vI'dI;3"5FRy8ȭ^A:doGs̡cut)Z]]M'Z߰f\bRF/ ok5ꍵV*HP&/ ħ ;&X7Q"YL@vz;bX$vD"V&)/'ZX#! >`2a'B{f'3~R5FV"" (XXDܕYPՕRV$k״jwUR_ϳm˧Wm2.BށJXh~Lb7({L^*ճiZm}V{r#1#T*X~'do[ۂu+1Y'~'ttӹQ؂:ގzhId1ea8t]9>pb/[8>I3/gz":X?}LQnb`[c\2jZEE_k}QYM1ucl@N L[n=OXҀ+u*d7+#2,6:Kޤ&=s Jڬ><_R*XoZOQ ;f8G7 N##G]}N=ϸG!Kl+j~mI]47UeC C޿ww!Xd%[=S뿱9;v##j)jCܝw`Jn712-\թagɠ:4={O%y\arpY'z?wc[#>qrbOq:7sԻ"k,{kއ&F+1B2N܅o^XȤ]TK)R {202V=6zܔ|_XC;n7^7˷ý*[Vuvm:}Drrr ]Na!)='g;W^lEucaS.jƲ!JtNvAdb"" |MFMcLRVp@Wc=@S̯vUuWWTp6H7-9 +؝Syd[F{>_9.#$q,NϙHx5Y +`O~KܗqI~m쀐,`^6N~:7H?g 5J;;9-Nm}KjN}iq5ԻO̕QpmVea젫HD6J_}c>Ʉ}/6Nmw`c5N/3kl~?%3 +C63yrb lo[XM֫ju5Bawx K[b+-`2p1p1l9!l`i&RAПIc9˷j:zA 7V9L֫pBí- +u$pxyN[9 KW)ޔb6O+aW};c\H +7w$0r-7!pcCҭlU|5 [|E8f؝;hzzO^ rkz rN?xtNn#'MղT1K ﭕayX4`tߵZvVPJvswSx-᫮֨C*EC&e|] +2*+tv LLߒG?jLO?3=}:}5+t9Y buzKo)yjIbN#.AqgQz~V%Vqz?*[]If]Ig4؊XԆ:ߠS6o~>)j]|>b^ ֵ. _#xu_F-k(W~״9#}A@u;[Ĭ^2qp o7z@;3W^SCbk|É\f2gbO|a8jv˵j~6+ඵ]o]qxV\qa+2 t<H#m}cdƯ+zW[Adzn2 ~Ywqu˾*lIշ]Uݚ lL\dĩ)iQ"Z95V,>OZɐw+5oTشrJXX;{h&h' +^*tw'_G~cqG9vV,[u ͺk)llOU*/mjnbk<5q|.cm +Ô&5WYcF^uT= ls`ԄX|/ܧ 5nEyP߸̻_ mn#o7_w%wec% I կ;ܳGl\,z޳cl^H*叻I:IٹZmwb JUMӭz0/xLZ52QnݏPYӉ`GUiVWzI$'gzL9WZ=*\8~=#1<=cTcʮ6^G!z*FGyx~3&YNNfN&HRQ}$W?22;tB]{si{_uPZbH ^})Wvړ|E@P1m1]|;]Y, \lct @ū'vvRr6؏c/ca>>F-嗨$oD/U3ykKW*H>˹/)ff0ɯhZ6 +yY!}u&9*n,k'hEGmlj*؋EƕWܷ2l㹌TZ5YN!aXU~a ߼ՕgfڡF-S͛mo12?[?3+K^:H3=>ew]~(mήVŰ%'n{R6cx$v*j݉M܂"M]zwqpҝwR/zG˾^-kg2o:!1~G#sY6AV믈}w>$׷yt٣8g+qѰJ܍HȿUדvUUk*CP h2lo WUiU-5Tؗ#[ׯK}V+kQ62RFTi5?Cwv:#G&g!מ[KL b&>7.[.EjTeJU?ON^'Rs)=68e;Iió&iכ^mzjxc_i5C5裡~ q,[/oO Ra]=ﶎ{r. [FE %IRGR@Flt)SjA2A]dLZ1VTo=JU>Wʮ7JVE[ȶ"-RM+t%T %d-%RVǾ'`689#Z<^7vn+/**^NgO[mX=6z/~upX]dy,gaQf=ib200ўQ1P==:R\e~-xu/䫬 SkwaQi[8GMh.zʃ }=$9z|Nmo]уO/cY^s'嫩Vdkyo+nze@4N (R${o]n&"aV+MI;f'b}ɖ>6[k(oGL;Avۍm?X6k<3NV>>3wE }7R-a/ɑ`-a W ONݽV"aWФ13V'OɻzFOK+)VzDteؖ]uשFƞ@o}~'&̵e+헤zztukY82 :u﾿FgxaQJb&V6wZ'L +Ɋxjl%hJDvҴpUݖ\/t7ѳ|S[u/Pcziz"Y̧;:-é$l"Y2tfCU`YOȁe興g'.5ELFϠٗŀ2A;,S*,ї""""[K뵙Բ$~p=%Ȉ: 7JYBz3'Cb֥؀$\?"[z?"=2Fumۥ0R7eF`d@;+FMXlklFB{GAl'b +Hކz""""""""""""  [bןutS;uw?WOX챽ُ=&!5qP{t~DYOI#kk1P 0Me[e=D76VW@XU4> sd¥)kP5}nz;9\|:CۧZu nGp=>dvOXT :*S `tA>'+7+Uf;_רH aR*\[gkKSV Z>'9wm)T`@adcի)y]b#Sų.fJۣ[F1W ]BCYI]3.Pz`o%̞aŤ6:%ﯗ(>.ZYE:pA vKs 9<[FߤS zt 7.cxKܚ. YYmy祪9XMW:nY[EG,{o"_F5uBқS3`=LMisW2@[\0 E$v>gSUWkexw^,t=Jؑ7ɩ +s2̨oel@uGh 㸙%[]ږjI\MMc1za+ތwwe`*6W}W/dcPYgګg)Gv*5Z.kK Bz`[-\o+.WSքq`O$zSlLlH P Ww +bUC;]GUIUSck;3'[8گKTY[g\T7oG-U[Yl]ta{w.3.wR6tX0DzgO`j=^w`Ʊ5n! 0MtѵN;N? *Z]uV P=I1^K${Vc>=|Z.ļ ~)ˣj>sֵz7^_m{t6/iK|F]cֈ~FF׽߾G7t\sjڤmժG=]M/zS=ЀwWfQc\* UI,g_M|8̌zێ-G IވǨ~ͻ75|NQ,éWE7JV>Gr)'l杰}gčeoF+ی[:`݀=s-XdqUՒm},pJ a(|Ex|kEP+I*nuճ5̜as򕷙E[zz†A~#q`2p=ptw>^+ǣd~H#(~1DN`ek+R`FAŧ#܁zxcX(k?@۷}~_7U jVQt |={%Ҡw$N[9+e..PRv*A!G^1ŵYE9Ee<Һ.(OWNΉ=/_k8 +@6NKeqٗs#,PgQYHWV:Ǩ?W[EJ=j[AzNvFX1J=SkT~=ms멸wi8| +/[=Yze+;-=TY{XPZ Y>ؘؘYw#U6yʂ?j Y}IDjH́ۏaȥ_I*YbtkV2 +X+lzcI~>ׯVX;"Ю|66.x3u;t*3$Pf2XsjM*:@]v=+W9J^E)e;DCYR;o#;"co5^_g^͛=}$2땕*һ܊=dRݻix䲩kWh+ݍmLl>ۂXXZ` P;ۿ8caE*A +C Wqmc +)SUzڵ$#?(VjWl([:ZrJbEVvֽ]ۍUզJJ~5Viǻ# 먪߶ߕaY6n5r +Mi72iTL9EQBmv;g n&x6y5e,4+!Cwfe0ű+UOj֊6.s[붻Eeh?&C} +0ۉSPngD.7~7֢v,@F>F?^n=R-E-T]e 6?Dwҗзk[6 :,lFx܊Wֵ/eh^Ĭ);P EquUd20Dg7S>gu +OŭЛ7+s(R )Pj܎C˸h\(Ե9+=״J3\Ux EVbCtkSGo_IGUhĹz aA!@Zfj5ejj3 :} ʹ2)n:6|$[ ]Q'nU|UMv{1s-jW۠Fz|+cqܯfE+{`b@wy_; mhト>!.Xr[c__l+׭☜z[_;ZjV B,˲ڪ)ġ\"4פv)*c{zU޺n]~qyT䈦e"δjAgz2◌EtJl +zH%}7YmTYi*_QжI;䑮xL~ +jcb[E}-Ԡlt nOEhĹz f +v{zSܜW,`ƭEVY}EuJc7XRbzs:ů+*byf[pXR2/NqUEfS/rOar"Z&ַf [((PS?<>(-vKloi!1)jߕh;LPYs mA +Xkgy)XԬDDDDDDDJDHCtj s{nr{bHՑ}7=TwGX +Nz kX=N7s ܎)MJDDJj%K) +tH::ޏϼX.kU . &HĬDDb""!OxM j֌mv;.fO!T +ʪ ( ߼2+CeWԟARDDJnQlRr;cϳy k2&>^} _`E>?AYm[tJ:=fDDrlTR:bzb:dDDD9k9&ʮ>=SiBn{JKY95']ҽJ7f +$ o`ݘ<,TN31U`=6X)f:Oyɭ,CuVSF""""""""""""""""""""""""""""""" sr[?3w c3Q'$#o%v25M8詬wkGRm(]h{&?3^ͪuHwsĠ㠬'*[F-maWm{"cw2?ܹȧlڬ4b:ڠI6@2n嫲^Eluo&uZL{i o}\tn5˯ Rջ8Qʤȿ62x9<<cAo>OJU"$w1MXyז=DmkD]o +=̇븕"zrjjVZ@`flU#K׽u{u|=...rzĝ゙N ߕSUMu7ar}{jrSv{nECm`bú|&[Lړ%:Nά+ķUI|MV.U_k0 ĹVV~ u+^v;Y*b̿(UanRkVD9m+-B,U 334aUkOH}neKWY+WWgPk0d5 g:zv>|@t=Z6T=F^A ӣjN~Ur +5cz7?Yyx5'!Wced(-@Hvw/rw6{cZ( }dGhr9e5@E #v;mwMt=8T3e襾>h;^ߟrV"""""""""""""""""""""""""""""" "C]bوdA.Vx_k4~FԿoktJUb>!JAG%ض kՃ)UPG9ya[Ys ATP* ͉B$M^ѕu3m W$mv w*FHc Ek/"k [UʗVB6@ G} exϘ~VJ*c|Ed`Ir7'H+(g-e'CBl\:3T ::/ggtu{O FY߉8w=$Bv>gOtV-zn}tiQWJNϫ˪ܤj++{ dvҍ7% 3zCvn>gIbA +u>gr8exAW!G*徜, 0c v̜>7>]Uz֫)s[r.l u+}]Oķ1kKmXDvOk?XWb6#lw;gd6S5 ң'r!fgW*8%6Ɔp%13/ƽwj|,WJ#_nXuxWY{MJ4v$};fEqc +*zTGDIX02]mm6t43??'3_YBQobG2Gb +f|DDDDDDDDDDDDDDDDC'ͻKBwHvnZ|; ݉ߨz|+BܩRޞe~DDDDDDDDDDDJ ^Nbdc:We%U޳`=kOr &Zic_sΎk˥G1rmB- =lL8VWf"%x5ۧ>w8\??2jeewu+Jt*=@רiht^I*%|UNB^?$aq3~HlNWqiѥݍJ0'ÍŲcV!ɲNeVƻ +NG;CR3eN,=DZl#S. }=f]lHU#s|gk nGI;(a;-q9Y-wVVP}b |qaȳͦ/] b?s0nt+Əixhog=F8g>NWo6GsxaE|ːGGpG .#9GF jY'#@~1Sm=%?xCɭ,NltFcK3mj Xk^J/} ]8| + +:H*6#[W1w<אb>SI,*˺~5VUҢڝu~$1ɧ t*Vf!QGf HK1rt[U J*QT;V {KrJpH}Đܷm)}|!UԀOHk''20[.FRЫu廳o&U8K@ :A#?pol6Gqɉ#8dй?iż8Vrd&2ۊ뷹8ׁ%^,1agr'ʳg^=Ǝ;~o5om?xGGxs8YV-uc 6ldDDDDDDDDDDDD@0n2cKj::#ALLL>M'>e>KYc!9zb$?9\T|], 6>S/dZ=w0@B (@NsgCy8./ߚ.X#ԥ~פ//!MeuRzk#8jwK;,(߫OdnGp2km31;ae^329(=О[LZd|5[EtyaQ.Ȥ 6zbwU H,W鳐U^g\[,*ze=9G[`A9}̟'oşAYƫ37!ljW3Wv1LiefEzo&w:s*5W; +IYDyX\6NJ[El#U:;nKduJ]sJfe p]:#~`ڸ;xuEnO3zw:ܗ JJ=ģcQ@2G1zI(p:vF.g.meRhڢ]CKѶ, xj<%E˪3"5HtAهW׬ żdցJ'VR+T=G'Om=VemUhG+q_pL. r%lFUfHK6lm-k܁`H§G[SwS ٗ>bMU؊I 6`L߳rh/-fZ>~r߻(o奜wrc>޲NV~:W:M֬^} ?.ޥ&CVmv"c[^̇v5&SnKv^`E$6#~>ە#q+܈GSo$=wm 33*Aܐ ރ'@{o(YSTȶ%+}tlF}'rn>ųiFٕXURwƴ5%P%Jtxv2K֕:][j=U+OU|η'""""""""""""" ,f u*Yv>!-9²W1=AvMy|εt-ZjTGLvFĪw xW~׸uv Bմ:vem@6Kkmcb1бPH66lR `d&Uy}Gib+af>g^k)ֵ]V d7pݹn@p#Mfŏ@ƭkQYfd6''UYٯR]l2ԿPݏ6'/3ʭw8VWV:)mZf$;˜M]Sd+6 +}z^Pt:DDDDDDDXQ +cܾu]ZHvng9š<J,@șcZpJ`4_k~?QaJB= XGǶ#K}>Zx%FBX5ڬ$-CB#r|[UQ%H^7؝ c_):GPlj8 Zx ~0b"KQض'ԧcwr)p.kknu?I"D/.1SlkzvbtG啯sh9QQ[PTt[M=u%[l#¯WBUMpAdDDDDDDDDDDDDDV5ɋ)`U*f0W7j5 oy&/JGENݏrO|J#uTvU=yRt-ҽ vI˩zԫC  +qէ!ړɻo6%ؗQKu۾&%# u IPzA`bZdJ:-Al~=L|5UW'Keou?/l\â׫ +EZx2ZB[hb}t-#yKt/l.UWce$Y^o2`.9'>r1v} +BJ="7RlWFb"""""""""""""""""""""""""""""""""""""""""""""")->)t^{C\v|10gu]KeIp1ea=TvigE؉)SZ=XzuTLN~݌s~EDic7:[e`E[ $w'DY\%y첛JgQ2::yͮ]=AG;.]~bgZ5aU%zGb ;"V"""""""""""""""""""""""""""""""""""""""""""""")DDDDDJn7nV"""""""""""""""""""""""""b/~3\Ux|Dv +ZK7eV#('+ZW~Ń7#b(P6Z12~&*+R wk~ē/DDDDDDŹL +jծ=']Q]oGԏfrib* +ugg_9ݙI'׾Č8|w˝U_[/Edfq5qu[Z˞ݶHI()dfEU"P;uc +~>{?)nHꄑ.gUu:'Kxvcgu,}tB}I}JDDDbSq Gz:?C򎱽nzmXv\/{9'}B>@7ĩZM zW@{vOj58ӍrڇpI$};LX { P9|b wj6H`HnR`>QI:O}Os9/fΥW*o2_^h@7baa(XX4w[G9Ft?TWE9VdǮiBGG:j8fV>AϢZV !QTvNOa] + +pk)m"l{#˂Ttttug9Lũ+`wصܾ 6=omq'{ +ϰNQpXרa=3FQKQmi@twuy#˪k(kzM[nq1WE5`!ۨ/ 63]~7;ʦȯ;"~+dH_g߅]xĭ5c0} +3ūac.*zjCu_~iyJԪ[\=D(wރ~8\?"?WI`Hڰlwy^>돲Yy_gup/\籭1qr2,!\!V{w=̏Tl j͝M4: v-YOw9XhD(F%}/RBr|ftHɬ=俶T~俶_Kce[<'kH/qi춺Ѷ%ڎ lyϔem9ګMf\saF>;8OzZ uöL!҈DrUOLNaþ&1#*H>m>Dqil;_n~. C1U~5.'Lzu +PffqǷ/u>NzWUy /U&ΖU|c}oSr<3cK(묖''|{<۟bMB~Do7."Ƶf?2P1DFOlo鹏o'V^-v2u`r u.?s#-ZSHQ!/'24[M50?ef^&iYF¢|ֶ\ќW؝<&9Su;0 +y-qrUvٕ+ںb:xbuԌe ++ߧؔ8{2nEUUwk3mRj}nq8xٹ\~*PA'~8J5؇$hG=4YM,!ֵ-pUQj\[sW/~zF}v+d Z=S3->[bͰvtILa+-EhPl}_zG[e 6RjVRhbj]֔agLo7{u{'3nK3vTac+k`P>Gz { ƹi h4Q Bdp9-ȧyy:!H^¯:i=V;ey9(V@}:w/bA%]>]v8jԨҟ@ID\jk|g'}=a%5Xa\*ٜ XX=bv@"H`a'JQYnPl2'1zv7_=JWj\ F AG_k[պo2)X7FO9zKmG_nfWkI`H""%5YMnV""&< +r, +DWEdw +č} ^w)1%bT(nf.;"""""""""""""""""""""""""̈)ԬDDDDDDDDDJ3=28R~ۙ)ǺjS̺ϋ[T::z]o""$f_0W$aW; ,=@)W^S]ij #J@%"""""&/!q+"@"p"ڢC,hŊg՘4({ϗTdmL%paQ2\luSb*R6/sX_IX*!춴ufQ^ߴb""""$/##UC8%H 1- f]y5 +쮄h(ĮTWGg?ۣR{ֶ]m%O~VVfZ3e +Hv5q\2.ű|j;?v=B"""""" Ŷ*JI'6LW=3)K5֪iuOy'ȼ@8xؕ`pj '̧q<-y5PB=ٰA*^2??댿E~:m tOH^#nc^8)+ +SXX*P6<~2 6Xs!"=olV]cJ(f5$l7uQXP_w }<>EnU!=A@*T`H==F9B\덪~ϓתls:5;GqkG'˛Gת&΅n;\ n?]eV\oФ3Gf&eugTj#U{= )ש2O!5;ƴ@v{!F+GhDJzHJ^G*K=jҬtzdlY&켎VY5#蔬7[uajsXE g61(RtuMNĬDDKQmWbtzcc_ ~W3s&ƴlwZTY_+kW6ǘ{ǭ4~͜#ﴵ!G,ʺ{+ZרQn-($:OH>ݽ;|.$ |V +9T-?*l`)ݘ}DS6%b""""" -a³hҺ?AL}(b>^8#%@ԫGm3Ȫyt:.oȊ7W& 'Z߮G[ԃ6Bwڵ=BZ!*\ {3P#,)Ӥ*u5,l+RJ8/]x7gf *t[;~@|?`> ZՇ@4=n:6#bSkԿ1N6?@Tk +=eή {ӋZWJ +P_}9O?lGTxer۹: xo3J2jYƯD-Vؖ; =f!TPz?:-m;Uk܏^ړ~j8!m,*ձ u`P]A'z|_xcH9|U[Һ@ ݟ+u*,HkY\+p\W¯q-Y2)K6葿2){|K:VEDtWQO]U {>Z'lmA~k<G#,K_بwXZy2ʭ|ϲ3 +loCwyZ]K.O~=mI b\_L(2ɞIo믡z[GI]H\y" +vhR x :,a!^coN.)EIZ">+ӟKVKkd2ŘUStn…zN΄w2j* bܩhIPSҚ^`t7&=gxDv>A겤smX%U5[mokqAOUkG]k]?Jߏ𝢒 >ǾI1@$qTޝKL:mZ_[mP݌`N̿)?*|?WةkQ?ر|_cc&=)cS_ΟyE>X5t]{Bqez\wE)Pv/ I:'GcOc+ͷ;7([V:P6vm䖅r+a^Yw^[zQmbGAvi*3T%%oc~/񟸱y_qc_28xL'etdzTb >O5~OJ + >xse;mf>3(Ĩ6 ~RuT( ; qnƩݵdRNr>R'( +XZ6OlN +STlt:1Mq8^hލ̑/'Nj_G?WQ1$؝_eƮF5 ¶R ![vyoĝ]oA%h)v6\3oC:Íoi_z-SwNl"9MVdbU $Y«lU*;<E]?L.^-a5ٓz&zT?PWFϯa6uSXٕGbTl멵fWs_nM):%(;zͥN?H#r)X̻fO̸Tvm/ܑͧ:pӿ? r~1)Ae.vFqȏ9.1tq35i4mR~m" sTt[݌=;r/ی;_,mA +{)c}HJiqpo> [:f%\7nfUUkǦ kIaujV"P.W˦V[m,k6 +m^yKmF)ՂQخbH qߴԀlzŗr!"=v +5ȓȡBz7;ՙ-]%-Nd83/0^jaPY_eAb@7ia v b{s/Op;a0,7!ӏoS G@ HQVQZ:GnG~ie7fK0- jP5R8kET.ƀ1{7}Hs,_HN ?lɠ[c6LukQs}w**Ou}vG-blGkߧJFb5M]1vk6nĢOXHE97/u앃r~BLD]rl*ֶ4;WP; + 'Տ$DDDDDD@M{hF5ru; +4>Wv>=xU(TE +zsxnGϬ1S=yZVvt`K8n~bcco_k,nb|:vFO)t;m|%>&x~g-kgkҙ* +f"l{?07:QJJVX|@k̮/1_@fRImhGܬDD丼nZ+%:Ө7OS(G+P'{C42hrxվ˚$~]Z*߱rfzL\'=Б}G?Z'R/J>C5d%VPvP=G`& z !Ge[eLJХc@I;cUVeUYي:݋bIbfPkBP^|!eY5I1Yk#uUrwA۹3d(f7 {֝68۩mzul׷gJDDDDDDD@ԬDDJhFe7FebSb5+"|[/C2=ACh~nH+?W7m#woG\߱+?S?mgW3n d!k4.]"E"7CiRTv[PiHUȳæF;5%If?{[=b8Rjc;lo0yqKc٬m4+ZY F^3ĸ)ɰy] UPGn~3e pV՗uh&PtUwͪDs]@! [Bd~$0+("K]OЍ~"""""""""""")X|v eEE$G߶v%K2vHS njRտ3;zg;;ǯ)ȡkn5@$oSÿn[Yl/;u|S}=*$k]6lCguڮϯ摞|>6iˋ_c\jyA޶7u_R+c?+x[7;;ֆuR޻~ۗe7=iX$UPI5 'Qm-*ԑ750Ee47Ά A`dc@Ʊ5HB=u:ծnz`z9YVV6:k"/?d@rܕߦӘg7ΣWw_W_Nvs/O`wIqry7l[Q~c`lK|O$gPjŊzl:DE>=c[A*PtԡwC=q]\ikmukw.#yk ;ULRH܁xce!]EțDDDDDDDDDDDD,7MnI`J߰h}31g94W'Rz+ 6]^j]ۼntRQz}$Oߝvf.R]vMn:a[^W ;8ZFeL,v(y`R"{Gxwǚ,FY=,l;4b5A-V{}#Jqxusfg*dPHzhF}t8-Z~ )yu8i_=kr{ܛP`yWSef5+jb?!R{ɧzRتnq7UgvAOlLeʛuT7o@_@sImU8dTtJX>4>A;?ȞK\Uc+=VbhlL,WJ$I$ܓ!mv怆Zݺ+rl 4;̎oxԪ}+fiww;dWRIvU-g/mhwTtaGpA%~&b0Nmsa ~XaV?uz}:Knj]J`öp7eUJSJ.'{}I>lPK o]]e`?Ҟm\-9 65=G0XӨy%1)cUY?d T~YNY) ;pSm.laqc[۠ֆ/V-X+U*m_6O~pXWƲd YVef2v;O Wn[\,zOOP]wԿoeYd/Uta +X{"{Ե\ ?%Yez3Xؑ^'#ƾ/ޟ0uaNW)TD#©o?zͣcc).dkSnv^׳^H6Z 2t?[]&'O3uz`qe"X(BG UUvH/ 0s@з,ֽ +㨫v?(FV%jV""SPg-Zsmg)qԿ]?)+RVW'IfgDUEG nfd*? z(tکzM""""""""$'(aj)v_-6;n;u>2ws=܄yŨQ"+'ïE@vO3#k1)ūej@>?RvfdDDDDDDDDDDDD/Ev6q.DDDDDDD歷#䪼QU;-c:lxTV*$l'd{O2DDDDDDDDMŸyc%Ak|-fI /;r>MW2`H:t˸y:0ڲ׎AW.~ +ܮ8?q'3rN_KgqY.F1=y{w^[?+4KyUyA)SδLƳJ{I #*L-(Vw!UTO`&cRcnϗjJB@Qk|NI9>]Wou6ku v̜ xN#a֕}kRb< +-Y},k+k(Xf&G U@W_S>(JDDDDDDDDDDDDDDDDDDDDDD@(bO`99rW)udTw[̨SRQIչ*Mz(&dG]UV;Ff>';b O68g w׮קJyfU}􀧹oaesܻIRu0S6B`mcQ3-뭙u_NӌEX.̚VBc:ހqq'eO9ܗfة\;w=}WHE;#G{U'ġ}f~. m$dfs5bˬ)RSǸm҇8!X/U&3z=CoOSۼםcS],NĀv CwIȧoיUMvЪd zJyj5i1j ҤcQQZoMC#<_`vw.ĠSy9|BcwfUPIʺev]uj,]q76 L3doVYB>dqÒ5oMeDDDDDDDDDDDDDDDDDDDDDD@<\ #A:=oi +0p>̌|qk]n;h-[Z ]l}F\nS/KXػ :a3r9f0E9a30>oluͭ?kҠӿonek}*V?!oay*1l} ௫б-A,g^4ґv }= M[YuԇDzw<7~/îxY벧]̽*G؂&O}|O'*KSmNY;ؑfݳo/ȱ FBoR7Jz;I2~څS^YͱQ߉ϗX~B/M5Aȭlzy ?7P#$; J?[e=OQ +/)[pL챚/Xnv*N #_M +*TDt|'MOY{f#"굿U=߀[v_DǨЊ@LvHֳrrYNX l /R5b ̳5Нo{%.'Z22/qu3XOhO}N8;?@"2q,[xh(,״\k)VS~""""""""""""""""""""""  |Qdfū"OK E_ 0iJ+TPOT7֪:B>@h~ŶV~%@XT"kAn?'̳x_佝`W@P}}$̶1zGYPA$Ͳeɋ^lc@K[ 5OmˤϓXuuk[ 6I{z6R:ވozT " 4?P\yLWK[{-C@owlFF`tÿߡ#}ˎc*bOl'ֶz5+^RjI-zIߴ̫>弄%X{e7 +FԬD0~޵#nAp;N$3x^ƦO"9[rX1,hcy'GP[T-I%i=G{f&jFWR)O6X\wli|'&agEnyQuSuW*>Sh`bD'@\ψMJDDDDDDDDDDDDDDDDDDDDDDDų7jgFPzh6;[xӈ\8^שXܬDDDDDDDDDDDDDb"%7+)XܬJnVSr enB'CS"!2 We\ @'|Iz,ZWpJ#ucsY +e^̡椀wܦGx[܄K+NV:!{wL|l?_kR@oG[fv_)-+fE}[J ؈?[wӷ;ܽVZH:#G6vn[X\cj6'`Xm +P1\cןgI#z +ub`s'o5?ҨOĥ /[v)4̻v=5fUK]b+2roqV75 w]hs)[T\0*ϸ.rx܂S`ne:u`߸R竤w}zX6I?8n*If =sf՗ZKGPUH>eu[iĽ{"17*Rª4=; 70K h ѽu맫.fr؜{^E[ZX c1\{U`lc9._3¹Bt,x628l+,vvjA,ij'MDߴNf[``c}{=+5a-IJj vþ(܅˺l8XM,@I5[_facu9HSN"{tk';⺭zYUdy~#P6q̽MJڠlJxty|/_S\fmuRut6Oa${EBݒ![-t5Nk~X^sQ/OW:{)YKd.BϿOAY[PҎ1 + 3'.\:0ڰ#D~)swef +C&cx1j~/&j٨2!C) k8.kuX *+^QJݑX }A鹅_']5T> q{|z\\*[k;VOFv""""""""""""""09L^v.); o3ohid  +ЦGI'Ӷʃ?:|qƷ#[No.x>ܕ0믬N~i8ZNM#ȣ_2eqqK麟zUr<@8RBWݾβ-h<]_kUJ}cIc[h|ErW:!QLS^5=uU^EM,Ul2'{s8Z3BTrA{~ŵzI e]zdWR&EWՃ;RIc,5o^zoMO>5 lVOᝍtկGV#y7qUԣv zcQiYt:Lxx̴we.6?h!Ʒa͖F`Yԝ~~"ի%ergU`H.OIOquc_f@|EJSuGrJd>M86dqnZ؃vsP6G} OͩsM?6 0Y;=#sroNc֤ۧbI=;}^(zy6[ay~؎.1կ_wk|I_|쯴o:۫M~Lx<02g%,Z c#_ۋ~W3/'&[DM|܋LŔY&.hkX̨X z=Hd?ߌoǃkǭ&̺Ɔ_˰7hYFXNߗw=wrg[pcz/ѯIqμGFۿߒ`s?>u}u1O\WקWFAcr/w'*:$Z_Vr6Urb,@%!v;i]zFl$%~}e-Y+MKrXuMQֶ6;~!ᬦǭk~UN:'g`H=wUy n.So+7ڙא+ ,u+ul;s;LKWq}{0>6je= u۫[aȈ,aњֶ.u 6=pqmWVoD61 v^^(Wnkצu)tc־h"«XGs_M-޵~}IקrIjJ_Ǡ'ԁ fklV*Vu G}oyĺzPڬr>0@S´MAhLaaHS@A>&T&vG oe@'lP@p?=qx܈;R #Ha}^'q(<w>/ W_^,Gz8|eƬTmXP̏C)gkƬ{B>!}7ԻEՆ>`2@>r.-XU-4TQ,&-j+!@QѦƽ;WzUtK?=[`_hRMabr_J ғ}ޣgA +A#H::7Gۄl4H!O5y6P,zz,tu@m{ls1X-hXJ>S*%܊_ +qKg1+z{Vn-&`K]/ kE>Fvv}Txّ]a^ϼA:'ӽlϼz*`<6lz +S7hXo!wҤ uGMJ@а1-{2 ߜ_p}][n}uu/EvLR:?"7)jw@T>WI L\2 wV zA L(*h,qܒȭl7~`#'͡Bzh{k(6BG444޺״pU-* uuIa%>N=^9ZTAwj@(U;'v""""""""""""""ȱI*nWqFu_Rp;{ _YXJDDHC2~JֽqR;~Ό~켞Om8U#lOY9\ʲ0Xl2k)[=|\OmVWb~o?ͱ?xhؿ[7._!ʷV[56-}LLU8:d}Nۙq1yL/~⪝龑wL~ VZkkg_@>BFp9,lzԘ~z+rv=emu@B2fSo{{n[+( PX0bexw:O^mulWhh)"|IΎY̺kt==(^ݲ.=ٺ" +e8L>粱ekGYGy5u'@~@o1{2,?2}RtభwZO6(ҏr/.Yvn+t;+V=vUk? u{. dV%p4u~ɟIX}P#Leæ˟֌Fy~bdږg*z$;:ܙZn1h̉[DiPuS88aиb?3"""""""""""""""""""" !\zx-WQl1%Vd+k[Ը f/uga4zDw1F*Mm|Xhs{ |gʪ~bT=`o'f['""""""""""""""&ojiȵlcQu oOfr4'[0;쪺.T{#98Mc" +6'?=zk~'}eF)dJNJz2̩נ>$7oMnj0) >C3(cd+a և;i.VW FFC[NmLH u}ʨi]Oa߸:oTE|`9kƖWEnkuZ[cZ}f20xLvq +Z(3'+UYݯ`j# h xd/9g{4 k b #HeTV]>X# I/~Tw 8w1kr2Twcx}ٓB9 w^+n,mY+w:+9v]iEou ka;8SM^dbg V"""""""""""""""""""" <_R[VjT#DL:>pZtu ;7IVC-5@ +3BW;@kuGzK|WV2c'dfbYrI͕Q #`6 uяUmmQT) lf Qq@nU8wʹ\zt{.Z"$?x9LR_.x{ +f@hͷjA$  s+]*ǩƘ-hȀ;#yf \ziQW_E5S]3v.U|mSqRCFO;者zmnOK6u˶S^¿esR}v7N&\㱰:RWv +gVV5V=*,8V*YzVP-[>rR"""""""""""""""""""""< }Nխ+]o[Bu5]][+ ~=Jq+(H{xk@@>ܬ֢0V` Oܦ}eaר ukYr"% Ԣ c"""""[lPZR.DDDD%`H$tGb' 3('dq#y!yZ[Xl8Um."~ݤ.O %C<%lDh>>U骴zT]hvocQ*58խ]^oJer^ʏm}HM먖*a߼T򴋩m 22`}Db3epD=/W mEWK* Y[,^ A3<_rXW{ڨWG } {Lܮk..(*6P@{8 **P~I'A  +5XTd+ UU jFObK;oC ~VEraT˖zPouloK->2T R:0u {G +5䳊Ceã>]+KbvtXbHV$i)!|KErvڴ_=jκbXwQ܀kWQ] +Rƫ.ߡ͒V>t`e.^nvrHYƺv5y׫`jo#$igYŹDZ<-.Ԇ'Gdvm|SNy7tWM+Y`YEq!ðfRۻuҽt7 7S$ Rcc}cx%+V8Z`Vk % 3/7'Rİ}̎;bڽ>j ͫ9t]i(UDaT%Fhe*S_byO,pcԇ-C6 ϶G1Ȱ,V`߰ΏiO. $kG=wژvO#Uٴd,/RVPۖ N5M}`,V~dI=ըdU.АA&^VMxu58D@K1: _+_M-(Wc轘'0_eu+S1deרR"wUaAq"yOqa\yV\7+|kWԷRȗ'Ap7{MO⼍!-o_JVg0t;oC$v3bAG-vF:lw>ddV=tYjR=OI`r(h(M%k/ rIpȶ-tV*u_3f\qoO@*ԚŹԂ=#`7*VmR˛@ @O"-ƢfCVf'̀s.q?#}ؠ2]Iu8>4H*~`'KDqٖۑT~^A;UEtlN2H = (fP&Wk\,ffz$d2VSoXBkdkWq\>sf ]db3uёM]AG+w>=c+糪K9mm.:1|I{Uņ! gȮ7!0ܗnr) +T/8r5ҝzwϦ~Su[{Vkd6j`bSp|kjRB32X*(Q=d3-[.[Ӥz@U@H~g(ve[:H) QٌECI4;j^aUgFA{2mGH +7cݓsWHdEZjC16·ms&ZPd&…?;k>Rw uo +K2Y6HlHJ>^Mu`Zz+b d;`=x8 +r09 +jmߞuuI1)>XcP`^z PA'Z=5xs[96· +*f-g;-9ozП}:W^͠] 1Rl롋mhzSS7&!nK g6u )*7;.k/#cX*oC#~FmǸMq|m 6P(:ͦ=r'rqeE1C=B`47[L[s6ǩ*e K#w#]c.`b}ZH8ma^+ *{oy/./XHS`{z޾Yr4[ZUX}x -/.>i:r?U2TJ!J +GPUB_@=wJr9(n981k XvOUNJNgܧ9e-*Vw/}J$蓢}t5S;Įr+6u ԨR;ϴfssr k1I%uR ԍ75R֥*D~/%a .XóAP=}܅+Mu7Cz뿬 k c@ކe9rXыqۊ2*Qu%Z.~=~[w_xI`mJW-~OUn;Lǩ#'1LuRof${~|j'ɧ!|!m{s亮̚y?2ܬ[0kᲷ6E~K_aN3?izj>:,~U#z7npZA*@+-Tk#k?NWꦪ9tJVzTn]'yf ՞̑_G_W:#xZQyTz2vTluhk"p< u5[/Au[n6#s9Wy6^3qYMy']l I +=>d˒b7܎33380nH:wRqs?ojmՂI8V %Yph[ФV:vٗ(ϭ,+Ԫ,4cz#؏yrE[JY=ethAc vK\?&jE+=ؙM2ƶkF~ + =|;3-jG mrjUb=mNϲy6\oOOOV2wܘt'HO$+WR ۦ "=ٶ2𳗮E* 72GS1n5,;o]h ?4Mn7+)ĬJn7DD7ǯJ* zmNo+Vz\.5Mgrrmk8yk*Fnŷq&nDrXaz|ڕ뭎s&eW(H 0#6bi<6&]]ʈ*:t@'k~s9|>i|A!o?)geayiE6V!KYte=J#^#?\&Sև˯X?ֈ ^W//|auwaplz״vv0~ߕrmMpFJ|SYV='!.X 2y <4>MnJS`&Կeu(ø%܆X[5hbmo_i\̜'N_֝*u##=a޽ؖfX+ŽQVsuiw3r>RX|@F+V5먻GoG60f_r0O{Χż"5ȬDucrwk\z!Me(Zzߴ&l˳gB +^=[T5h$'7qcYXZ]7X7Ҷaq[ӣkN7Im}tG?,ȮcX%eVDjdۓw4pSOPЋ[[N+9.eW9[J1Q@կR:y5 lnWDkOME[c1F_#W)bh p+uǾ? %4UdoVS%$tMLj9|Zre„bn>"OmQSܝաt F_ΥEutr\æ]ϹqXɄ%WJփ*z;1׀ɧ^UnTb&{{Ɍ,J(JQG.ʞ㲰~қn$>stܮGrn%Qơ=cC^NG}>p@+I.zioµm{ +X̌oAD]w1j1Fm1,z52ȢO?h2c 7}v='xkKUVNīmq۷)ϓnU[^ea,VˠU4Ŏ ԻbXj^WKtv$($}{ɩus8c] +2&)VȪELE_pYzO`O~*eR*J?NeGc=б|BT):;3 +#LKT|Q;0t=~gs337T7^c]z_Gקhn<ڤYJW*z}oL +TV&-T#;i_^fUYT^w؃K3~n@ HQH_"'}'d>}=\G3I|݊f#@ZWcy3F +u/Q߸=kcZlc'WJ$fȌ^##7/0\-c@_,^}{tP[n9G":,67ӱ-erQf}gR2pVbw{{#/ke(lZԭzn߿ű=?ܢХmC﫫u-Fox9$9,](~ Zj`VBS::uOa_˳$+%vTUߤ[a{;L.*LjZ/A|Bhbw%d7'efbeWuhVunǷoXʫVEUz4:7xd*h +FAU? +AS&D_7+pd+נG}}dNOJ(O(tlL"L9_,=cC^ù,&3'3v#QjtP}A\n3.m][]bօ7woHKq5qc!$WM}o|^?#9 EH͡jl]wPSBA8R{I=2Lǿ鵬QR%@;}gbd+ ZZՅ{ + 0bx_XJvQ&]7F{(Yu]A,UY*I]'3335P63Y7A(V}zOy~99)Uu܅vHMU:IRAwprt-)b-~_l ׶ڍv2|6Wn\ kDװ[g:H' +uqطyAmKO5ٕŽG^9>NfVON7Q#$9uskwLH?'E_|zC'p&G=w/n=ՇfS| +xQ ~~e]:wz\'^⻆MAX"oe@!i1YOJ$[t'R^P}|}~٫PbX}If(tCn+ֿiFD ]mS1sܓܧ9s]9j}GK)XzߞceVћQɯB(; +ŶI?An/-C7k@t(S؂4}Lp=8GAOo}[m+]}QWF!TKvw&$w)qGHSԥHig'8Ek ӮBI+gVM@ʹ](]Jʤd^ nxkküWMP݊7PD%RI'_2}L)X>tE(56~Y)J2 kS޽b""%13jPeQؒYw$ůDzV)5Nw𑳽krLJ<@wAnz U嚖6է]nއF\XXvKk_^=[+{׽A[>2M_YB #go,0 8 bֶg-YwJH{KfP V +3(̮[Qch)vM 9\Fz߮ Fƈ#Ѓ#|-p86 egwmLƼ_YFGG+$~`~^hMZ6YAގ;kܟOy⾒uձeb6c>rc0 u; W;w<A%r|v +k~c;Z U6u֣z< .r9U+#E5:U]:b}fnw=9KYC0D{:ɺ\pKlj};vr{-ۿiBC̶`᫱2:`twɚ[.JBUQtRG7M,k Pt;/fSX}v PAFxÔ~ɾUi)m}ֽv{Hq2M6Mz~ԇwuN-͎5T75M(oѹ{ B`UUGȉxוdvFP[;+oDkfn5'k5lZ} r٘/ȯ+˥kS5n:>$IJ9KnLp3oeK46GKkFW3´C2[QO7@= f>Eyu0d` +;y|MUoCZk.z:*o=_cd%6!7-d(FA`={w|" Y=,Pzlےܾ6aj~Ct*oZ#oy,/iYGJkS?̛j+.F~OsJ0ACڶWp ?k; +ҮJzߦ{/;C:JW}|g]jc+=S+q.撾yj)SUI@I#| +Q<×UUsVm}~cRu=64: ́Кc#֥YFJK9{^9W +Sg vQ!T2w=iV{\d{D7`;w;̱o-FaDPT<ZNer*ICNǻ j\3}]~{tuܦ-#mBF.X$0ۚWӨޱȧcnX+ꮰTQ|楙oɷ`~6@VY?9o#+ r>ʷԴ"mf%x藥}#-_s]`/b%{.FxRw}%Zo{oM#Eue+՝X+BߧJ%|;.P:vGo^;\g;Z W_qa7sQ/!68;#-u_ǭq`%.EbW`OV= +׈y w;!ʅ` wu#füE7]x8inD6l ڭN/W_ 샡+O9zKM5~f 룱y8qUrnuVܵG7\*}5zvEdd%vg>o=u}\.g_CVbf*TUu&]vnM[^;'~Wk^r-`8@ ,J{2%dYSYHGKq2*>[ @@.xy3ѻU:H|!(,T~հ!OGboӧd ˏCBZlunV]% rx>b!{$ȩBZU-:>oʮ[|GIߧ^]ƾskk\ {v'z'eb\'0ة,_OAw'/##2̾dEjYo-W+۹7`&x[PL{QMգVW]^ﹹ@q<)c)%M߮ww/}ڇJZO@$ocysߓ֤QnX54ZȰybfu0[=C%1榎unP_-W缋f 86)Е7Y:=GSJ}oynOv.=A+uu + +z}V0* 15W+wwPHO-_!j6WĿ=ߤNC ["ŒiA<IrBr,YUH{G~#}L;F uc5K'kRߊ80,JNB~VVzFZ~r[qųh#LȠ kc~fu-S"Qi<]m:!M b q:\eR7وxWC:AHR~*DÇ3{/ +X/(AORzI~<3xYGM}"Mٿ)Wv}}%p ؗ9K8QU<ꗠ6J=mjʧ:Kj69p~˩Hֿ4|gƦW[ΙkApB7=VTՆ)#D׼SXa7kzՎ 'GdⅩm1]>#=j x^gJ}ַAb ˺l^]Wzsb>?ab]!B)$}f=q e.t"Bt P +:W%]vGkgæG?&׷Ce]P+/D@<=K`! 4F~yU{U +7.=hʊ 먀mv>zZ>?V^R4O}_BE?Zz+}JƎ=]K +۱]].@OEA;CRaQ[RE ߜ鞎5M{G-U F8t㪥u*P~`izcفkH̺bXh#yx`AYL z"ԁU=5nc"_Aan=w.N:?1H^Xoz`o J"*րkIm01+M`uuh"ֽeEjI +$?`XkD$kӼU #`3aPUJBCv2kt"ֵoZ̙b*2YeV*~`u%r0^KP=gײzF{zUjTP-QԕUSKYׯZZukzL:kMh4#JC{=_VJZٔ0&5 辞Hu*I@/KfW uhuk]J[VFWקR랞JP@ <5JB( +vQ~`{G٪^k]#Z֥F=`t{O# +4tOkJ ҨH>CX&=kcAReԣohh&nħ+ͭ_/R=J'Ԁ28Tc5ֈ\튪c:LҖFukzgʂ˽#~>җՒ~%PJyj}.J ?< JU3oglg]Z* =k`*}AA|>^^_tzzUK@5j:i PͲ@w3٥ Q=GmŪVtV(v1SOKZ<׋U]]vP6~gCxtbV0Pr̻-ٍUIPHĎ@ޣ{Z loG]{gK,;H?1hO"^(_{rRF=jV""o++z(=]:̭"A[ʳYtKOW(| Z O`H.-dl%^@0^yʞꑕ׬u1+^mѹ#"W2*mZΊ.~˘ɽ/ɽ7X0d=Շc&/!llJTV!B{^.`>GAA"7)ܬbSrDYf/`)Z?WU7Wor=ĻuTU~c,8t`DȻ&f(>gP&`<>M%용,cRAI9HnV"SqFe7-ѐ+քA.KwdWz"ݏZjUuX׭QQ!Lܬqt,`l'r3߇*ܚcWnn"@W^/aGo0.^fob}ʈj{lȕ "^Mr5NQxA峬weV^l}rKr"QmfUXnhȜ̾G0_eUelQT}Myދ<)YO<>erquCOH${t#n^ú2uPU *I}d2r+vRmkZ-N+ mFVFw~Ӓ[YUתm0_rw2NnM|6K5:@*b;27?+aהNe@JUT v; ˳ݧsϿ ]MxUYUEl (oӹ?!%=C}X\AtlA<5/L&/1|ڀ7~rC8uYB֕W a2M7cܦ{r+8숁{k'c'LpW-T;lAXܚ}k|*ֈT+ +7v;"f[j|ڙC4bDLry}=xŐtak$uz%E\o+ rdӐTt]@zy4|qWmw}+m5_JJO{"Mry|' հS`]:?}}܏7&^kXrUKTgH]]UC޾uKz?NcMNe'5aʥTtc) >fW!^AkETB(YrGQ$_'Gr2?Ĵ_w;%y''_׫G{K2Kk~ h_]KvWC_^M72]'cGbZ;U\99U=؍r֔Ye?rC#==NO~C8>5L*+݁+*ut5ryU0Vu^Oђ>ο"ܚWY}H~]Y<>&&1*3@*w`bt;}f&v^g)ɺ?uj͌qtAv5<`7$OkԨ<b +tz}{nS +|(ǵe7R`>Rnv^vwL+jufCy'ZSӳwW7/.ruD!FՁ7H'_W+/?W|Um%Q*(@ڑI޴}f]|RZTh@muw g6켬W̖>U%j:'"Z/k仆MhaC̎,ɲObfސtwfx̾%S"Pv^}Lߓq2[̮p\T`GNf{~C<]V5K^8NDRAס$?{aR5$U*?hc1WV`:{crSbh\a[ += ;#Ȗ[6 ѕyiw\踪WIG='c-򹜗Fc_Zz+b[;9Ž}u[%< ]rt6c^/f7G'q\UȥN\2)|ȪFz+S+fkthJŀհk|YoW+U|QG#[kЂtH{OXٹuێ]~KrQd+v/Y( +Gb[幜1qUTJ| k^%WvכǾ]V)̼9V]NO]}+•no^ߛe)+UåPXJ'sٸ/!v%U ·v z |\Z3qװ +ّF]t>v&&\+S7fʵr. +HFކ'ȳ&վk!VBٝOe&ggnѷ",*4uP׷dY^MdQo=Ĩ'onJG9+K/_kƳdp* q}%Mm-J!fVV?NöW˧ ˪ҭeIbW[؍#ӼL_`<9YKfEl\W],*6zr|]z qm՚VzϪ1+ ʈ0y0GmR 4N]o!b㌊S5:zƇϼo uܵ5UWGI!uv;/IWi+^gɲg' y쒧[Ϸn1e*k&\2]V ׹2%\xpO2/evўx'/ +܃mlE] P #Cw0w¿U4Ko][>̾GF5#X^u 2MW SijM~YK}=8Jzi6dת4B*fP^e6铊_he=|'a~v8XRn>;h*P='=UgbEhRs[k}bf瞜%kzf`_λO2}#. VQ҉Wcv}ȏ -TGs*jVv0P _m~#'kʿϰݝ6 vϱmrP~#{7R={\.y wk("НK{#{R +0]1=~ >&S9Lo3] ]$2 +﹭e\;}HO}~ }WUrYYQ4:I#[׉NUm}-RkmjkRn@ȳ1atھ|G2)'{5Օgvc}y\|,Uv@*mJO} ^MGSkeat~Gؘ"UtVXH? +QタO SFV\F]hoQۥA:9 +f/bl,kb(EU4N۹N3x̜<նzVS[gOYk%ϭ:Ǩl㓋7T[l:I.GnO|[-"n賯YA;ҞoӴQp[6PpzÿVsԖ#0kJV(7^&ʾ_i5V-%N'Gòzԗh=;̏qv5gW+/ەbh5ؠ0:=|g2mŪEbR޾8G5 + G;VGO? śk^Λ.v %rֳdZ~aS *[ߌm*v-%BROmݾ[k[}څqʭLEڟ[ba؍v[W T5~]dh̳K|h}}f&W P02nCe /W_ojA;З2xLy\\䲥+ZU 5=`pXYfʘd*[n^Igw|ylk`w fn7qعUcMmV=*6>-o~!Tf2-Ue]C#:О8'+/"ϵfPJM)ujkS +{g쏧½`l[7T(*kXܐnʦT}]F:;3omNQ5ܡamQ;uv}%'!*ϥL5X=1x#6n++yH);=$lxZ gANeUphJڷGVb,-tuq*e, mU^;:^~wm`]/WC.ѕ1؉bS[o'Z:+t"P?'vm]UkҾs/bY? /9uUzn{7xu OI)#9G.ܐOtV"ݏv+'mMM6%Tћ}ߤixƲbn7ѳR_}d~s-f_>GOm﹗19tu-taA`ᜊqpRd5t~TA}vdk*:ҽI}uٗ!B(^338C0\1-58>UzC_v}]ۼ.xl9%֦)ŭ\W׎gmYaۛlKu=}j޺OH'x:ʂ_gj;t{3/Kؐ}<Ḥ(򕋖wf?-A;L\#!?+j3O_^VR~s[cGZ=[Kۢ G7sx-Z2;2|+1nڞ5IPň} 9g}5:Sa`a^B\ϣ6S}{ַⲫQ{SgIUͬݦ#q,C; k2O'bUuգپf +[_ }cfZmWeP>*G?ueT<}-S߱1ƕ$ :J=>sݼ=(/K}C][lE6MOuvD,~;#yyV7m~Yhx%dYLH 34bEC$CN򘼎>c:U`fMu/p},YEc, w\9]Jtuuߦ>_=4ZzChlmO a+ӾZN7mgln'ĸܦFM)mg˼V= NZLlc[aWʮ3Aנ`>BXyk-*#E[G:H^ra6EJ+zfP}o_ԞY/.HVvקQ<|-)fǰE9Lk(BچۃCwQcAtV]V;?yuz4N݊|{I g _`RA:1z +|oW/Y[ԻG ]C%NG?"=/?_ ŀ﯐27W%f]s.ezّVq{ڱhlk my`N}zSzKh=[J >%`ٚΦaOoZ|O 5WR^f;uB3TIE{#u= Hr`[|'-[Փ)±cF>= _A6[h(z:t}9LnL7`n 2ߦՀ#~ݦ\Z>!ǵ{e 1bN3ҧ"eeՇ[[s ؝>_\zǵ,el]@ezIA::%y,;M6/OWf*` +V""5 >Iu.n3d|m7#nZ0c}E:tIG'O螸CDlo_-&îX2vUBumާ=Sxobb߾r{~p7!_?Wk/?@w7?}h]CKg~/Ml`z 7#?+^=~R39=g3,1Rh>z7i;W!uc%m)tunSYS u~ 18&*]sA .WhKc UqmPIz0/MXd z`8pHb1%URsoʋ1F: +}ڕqk^ګ]qHks//Zgc5? +~ ^[[Sa fǠh 2:o3n`Ng4n϶lYt] x6x7zouf5n+ 'ňa`@7u=e69P-V]~ijizGZCoz,bq?gD})ڠԵMp+ |S**j_W`(l#Wɯ$TOF|s:b.o^H:r+-W'-,*g){eo2܋8rsoGqo.6 u1nr +I˞jNk +$9gFuHr׷?MͫǢ΋#G!1Xt^w#=iGZ!vZɵ-V olnn(M 7~yFdׇʗ@mRo]*IauPw6$jdr婬7@! +Pgsm8˲:V՘]~0bx;"|+|:%Uٛ_36nd7]w*ҹY ԫPA\\?U +E ؇B"qmQi+]NT5#"?Ġ䥟U+ĝ&~jq/cG/XA&cqr|BUaBS斧UK]>8qiFGAzAʍe ݁$߆mr*D2l[Mv6H"bxgn3p6y#L?Aǹ ؓG_o#~uŕֆZGDǻ|MXV%B۟nY\ED$.XR3ɭ;HvwװSb9>#>:P7=nk> J8?hRMnźLJ Yub~CxiLD#i,݇p18\wNԠe ?qfW%ܱ|qukU(+ãn½GdC"?˽5jN*V*;mf`-Vx2_:}7u~"܋?*|G|e}ڸJZ+ŦްA]>.5ň}iV5x3~KjG{u_m{A*~/>Llb_줏 o +l.DV&/>J˦* /XYƵBlG֏@!-S%Ywv#~m{;˱ot*%酶ȈCwf>r;9F~!E +v{(%|ǂl[8LXpcD<`,k'C,s鎷J:/vuR'CaqYS2Cvn OiU߶SgP~צ_2lj0שzv{*Uߖ2V,~ɭ{kڸJ*wtZk +}@L興({1qx\&-E(>q`i8fnogdsC\/5:+Z+6";kgrn6aE5S :bӦ`yjFǡ^f(W4_3_{[NA'elwX}ىe^}߼~ (+eRAB>ZԵ_QVZ+:HEqtX-$0Ek}W+p]d udzn{6U{v?OB54a](˫fd=F`G#Б2WU +G$J/ͣ__3OʘbiiXI%(rO-;~JYӾc'@[P8SWZ-z#({[q8z}Jofl ?9pq8bc )ZjphTTǭB?ZoNSCOn7 0@ +Ai\~7SR!*jvk 7?Zn<>ret襓` }o&|n;&@}~y+Eka";k}']kǩVϾ8jpiNǯEwq2xlFs[mKH?C2f_ W[eF=}O`%۰1i8VYt4=;{O?1~_)'ɡ,+YCLd8yuQ zGv?4V +EEQT [%2V>DexUha:@?=kRp.ƨ Rc=绸L2ۥB(.ՇM ]jlU@,~Ta)PBKǼ^ ֥H`1HzX +ޏn9q01뭪Z#BS]hS.=jgkfd ef%o#]8kiJǢt/@hkCJcqؕ*Qw{<Z5kPFR+k` Jb*6=EW}*kB~Оmk.5([5özvuxšYk 4QT0iKԣe: 21X4VBhRWo,1nhzkj](QJzh=/Ta@O]kR;8Ag +w<^!yt.Ik|c_oYR0PB"ayn3Eg(oɯ۸IvzB@i+ + }I``: bUj+!WAH{} qo(Yk׿Mk{ľȲ֜,5^j@EXb  $v bW'u{]hF;b" 1.B+̛ Zw2V-(#۱=gZP=I:gfK֥ ;Gq.O7Ļ,^ma/OQ@kjʨ.a Oq)ܬy,6\⇹ +ԁܓ4/Eq26=eȔb""bS~M۶Fuat ܬ QV\݊7@ێ`Q}|JJĶ.B澡7N`˓Z[%Idxj0Sztz5nbוP`@` `>s2""yw dMJ؍O,H9JUV_*tPH#LZ*b}dǺ%ΣĤ5=ēFr)YMJnE*]+R=;=>tdRl{)rX+T;A8\˿ zQQR\VI{(MZL*^7҈R@l126N=Ľ09ܛ2o׬_uhG܏^Z^F8wâU"awv}nU%캻ǘ]CD7#||/Mu|=]@أ[s2z﯈\V.Gĵc^YoȺs'wFKMG@V߶OĀ6qfv@`('߿mIorVxw'KX]Xh+^^66 ]hSkВH}X >3"1*+|FUߦn?)݇ypNԓ _ߦrWWwIZlͨYVC9Ǿ~3Ni3/.(-Rzu)I!ٓN%ψڵ pJ}:Z/ $L3vW%qmw +E;(0)oy䢢3BYmI4ufJri"o@]7NO1=Գ/r OJ}@ϫlK*'!<,G ; ﹓y<20UatE +1$#8Yɽ"t؊{:bwm?)tdf2ԢMY%^g-µcJ7.cgedզ{ڕ= cXY;: + s0kTkuC.]6*@tc}|F^FsdUH5-_H,zH~G-\*\*@S, ?'dwn{#jsjްZFm~g`06gJSzM]ZB¾4}OW}mSů>f( z|^π|}c{$m䳯sJQЪZYQC$ԹrTݍ2W['؎~\0yE[{HniI=;~׆*?p6=%@#v2NNrMXlPB)u.빗xS0@ Wjzr{3c<\RV7cߓoc^FC&jN4ۋsAeߡ ٵ]^R形::ŬI Zֻz܎g>0JjvV[$ߞecsbe덍]^*]`֥<[3 +UcsABOQdWd +CUe$!V,n6L#'.^<*|)mo`pС쮪ԝeA?/s/3/4]w]%VZA@VO&gM1I^^>z u5o՜nkryÏ'EU N>ѧ"f- +nOW>yoۋ6]ߵ23MJw v ~Pkd))D|]fÛkяm[nʟ`=當7ciU|-ձ/qY\~Fn=p:?Ujj\~޿I|9kjzKV0A;zIuNak{nPjjm+m_yoXʦ0__rG.cZBȝJT=Dy[Q겺GJ"0;)HKp_v2}^h[Q]tz0#kƣ5d **ͥ;o01kV)%9= +_YZYzUts7+1 *Oq`zפֿFnn&evyaW )ѾA.Crv> +Ī:8JHG`t{b+#+=y,EjW.v6Nj8L09 rig˿! T\4wׯykVrpk5˱ +Fcg fX̞:#y{Qrw3Lժ_@֖:$P\&1,qwQX vH$O\V}yM{'i!gTYc7R~U;cYrYV5/]U`r/߫|Փ~=UfδWJ6O~Wxt5UMW>b+'Ivz:d⎑1r9ڣ8u]8;32yy&w.ZtwJW7a%vUǭf+z2|ԱNM>` jz;j ;.Bր(Amkȫ=q3-{|v S5aH +z#KTxc&.9KV2xyL zz[cc~CKP+M&f'3 DW_&K+6.KN7~̫ϧ]^;QeE˱:4;RpzO7&ru\+6,?œJro(-AtYbSbMg?+fnئGQqg;:׷Y~'2hs,mKz濅p"|*벗޲i61fzo/> 5:-ٕءX5I,8I]q#cvYoVtǾ۲CV`uӽxY- Q'ka (,N5HLծz6yTtS7fWIjZ9j,':AR{{JpC;+'Œi,U:lvyM{6b%̯_I}Xg=;^3 Vuua@|BX-Gq{7f7u:Q ܟs3 Qu:o[R޾6vתVb;vDzjpMĆ-m…vfNֿdcg4Y'tƟjA?#x,>Q@[](e@? Xw-v%%܅ >?N?b]:؇tz}GKggS+Mk8z)wzrw1<+vOn@*@I``(&魙Ks9QP8[:N#gr|'JmV X,{ v'Kf%7gj\kkQjTʵ3"@״ƜyD]e㠱 0/J +r@a~v~>O:ؗXSU2]̾[Z+]jml@=arIrVAsa#ZzWܞǼZq[Y]t%QD1鹏qOwԸ'P% WDb6>@G%J +궶s*K?sx%TԽ]Zä)$e+2t+,/bc]xՑTrt>v'^zEz5Tկ}{Lo&7<. Whk@UB&;ç7if*enX[G׿+ 5IUw%*gfGģzOr}ksk+akf`wD'=?pKQf`$M}=wRne\Fqf:)+乃e@Wl+l}4?vZU@'MDDDJJDDDDDDKY8fV\ц#D&8TVJJ?0DJLjj.kҥ['gg}TDDDDD᰸z+2s3b%&_v {YI$o̺(uUQDD@16=,|!]@&ბ8|@k@ ٳ@Q=·ެˋ{찠gB/ۙ2P +ay\L;RO˱vggV[DC=cӖ,`~ؗOMUY_ +^;-G8%!FRRW_܀5ܓM*N$ [4zC+hOyUq*̭r9:*:nlWEfUb@P>{3&eQbX5`%,ZUd5OPE e}jj5)P?=^g*[,FnzCt}yb[/ڤaQ~e mDw_S+~U8lETSS" ,c_-fxpSrVu]m n~=_uk'S?v{E,Ux+]=#uK곪 UAbg:Kխo_=OsKE}kcz!u w؝MV5IhߙEL6:߶3|WĥlvFm:fXJA:{}fᛮ䰛/'6_ڬȧWөQcI,{=l{*T,o2xXm(T: խu_Hn9z~-{)Uζ)U`@׮jZy]> _R[. IuoVOXٮ[|T繺x<6@POZeq7b}ʬeV"k\/+V^./]nz*,cNF.Q: zg\ŵC#;B22PX m($w3yjKQwv߼b`:WYo@Wf +YGElTG̓yL U^)U$﷯T,o~}h[bU T ̏U(J?e:}u)Nu}tXc0bDV]sk׳Ϻ.zBoC&uK1I[ù߄9;s~Re^`H'Kӭ@f^e7BZރu>y|;8}m`'h=frxyQrWtl{6UAխdfv=N"qKf[1x"䯨C0˶fSWG]am?%'nC-)`~}O<M֎Җvܸ5j:KoA￴talBꡁa7q/L+y:/^a t>@`}dwy:*W=aW\Fӿm&M' +Ύ'JjP=?3 ~jlkp@fYp*eF> j+ocD|nO1ں.^+ o[}7򘸯r+|=GQ2eb" ,w7o<;X9]렷HIiM96jCkz:ew`xz눹5*@=9 !؎-D.o%>6Lev=G@֣A5ROFF_[kcH> kz8x@Uz65TsIУK ]Gcw״n^a? ?NVqHҏZzP+js.2պmUEcFF74mZP`5r@mP{1š o>}?M-A &zi5'X RU~Bec :ɯ>So1HL,^> PհWaX}c~{2GÔNw+n@eeh + jOZ+oCC@hP:t>ZIKO ^܎ONä~į +5 ~r;(?W])m|ϯzDƲſmWS!CVvTw%:渕B3AX!{{Rdži(7kdq  +>`Zr-8X\0 iYyv|GKo%8Zj˲K #tI;~b$7OIixb8fbYb\;'ЮhjFpf{[; p ,?5cJ4>@hH'rS +wHʴؙ9 ؇wz͏#Uǰ8vD1'X +7Fްt}!cUT_E@ޥ (yunݖ*QzI#_=>WBk XHUlo^]]u /]> ε=8VK~ǨxK)x Gr'_/iWDhz3 X>%z*NN5.ڮz#s/1 "#3;P=X|Gc{\yKjUa_*w@=_]I q^- }^5I:>m2 )l|Zqjᖕ Ӛ4:jz@9| +!ۡdX`ܖ>Dey 5v{khcznZ1SC隞Qx3.0]u^!ī'ᅊrO~z?1;Jrbqq8kde(P*;{2k'v0='~'ŸoLIP6bq4 {wZw7麟[Z1x?VV@dFWt}{l, k\kG6+) []LvN_* kVtJy@q 22e[y>&}"5}-\~gGK\zr B !EcGOӧQbs|B/-PztivXu?)7ZPpװ5;{a1|' זe&Gr ֵ=ӃcW s=[I>ߝdٰ t{:璖o}tu5 =S57[-A#lfr,\|Dle7FKB]g@dw۹[mr<9*BrUoT*縑P+,@ ^ߡ#=cgu>^B޶R%Omkm\-~N jAfD@1x~E<=,66=`/\*@; Zd>īBvcSb8Yml@dӨ)NRF&Ee(_bc%*9IJNg~bw|>y]!|f~s}Dbqe5BP ?@[7u~jZ% -Ͽs>{"Rdw`};k]TsYlēn-j>`|1ce5"`;7X^7jֵ'd/,*m%@0b7wuu_UfG w% +CCx+\\lg[.EpUa@VaoebPT6Xzz}:Im!2LL/BưBwWcX1]g=ԔَZ; {_o{c G% v ~+ cZnXe0R~0+roS:%ifN}{LSZҊ4=@Or6ad;;V~6u [@z[O|iY͒:~DwTE +װ pybU+nQ:ߦ2pUJ$}{Re3:(oKߨx@~O iN@VefGB:˙\f>eKM:PMmJ +R_E +47ѓX ގ=&5+(VJXW f5]>͕!+0_ڂ>[Üu/mVA;(k|UƬT'Dī +4=}V-Y57 taR6 q+T;er_ر%I2oljuQ w3X!]#Du!G^8⠮ +_5Y_f=5i k^oo~;`o\V: 6tpxjWJ~bjޝ.7B @NΉ$ORI)oѫ(vSlv. ?-OWx V,[UT'e/ /fށNջ ?Pgl:,ZWoV=rwc˶5Ba蟈VԷ#0)Mfo鹑XՊ{_Of +MX{}pmVK#!IB #Wom@$^= 7'( cڈh C [Ry3Z-JF=@Or:`dZnz;>,~l]19WȩleR#4Դ" *H+Ȭ: #Ђ;쪺Zdi:6U%T($@%8FN6^_Be:e A0+2}\PR6[!u<d>;勌k:,4@q:`;f6%E][_U?Q2""% ,~R7ïS.GħL4@;eDDDDDnB\Ru( G^L09PqT {zJsYt>YYaPttNKS`OE0 +#r)֎ {K'>SטBHfBG kެJVui+ݽO~4۸\T61UC(;}w'}R1eYy5YMioR1dj`ARxMB}&䪦g**Id ⽶Trr>% 7_3y`S[U^ʛY;0N@>o<~?#EڬըY4D3FNk"q2Zжl;20:;H-?~Hʳ [^3\X@@O'UIZ}ߧ`_v]xU#(kXKb[Cga1rA]''aaSev+YJU`E]~n c֬M ={ +4rQd?eكW_/ X@`T{|Mf,C m_,n}"|+.QWExe@ZBdY^=9zbE +ݓZ$NKrbK*dbF +J3/Uk5W=V!;t dsW*V>hgO}:{ce.MC4u>p A`kcLw0_"ܪV˩4аb4H^-CET>K(kzo%mtio;~aUhNO:Nnf^<5Qӓn?"ې ?`O-q{х\k񖱵׾.]v=9X"D)g!}w.c[d`5!|k\?WR+hhbcxW/+2'K3ezuņ1ǯ2O-e,. +۰@=nږ|A&c[hkMX) 5.?)}ִ;=$7=e>Mv`fzJ(4AEyH]si zy.JZznm^CRdk`0yEoM-U` +۰:=0PXl$NF9ϣ[`MotSNh`Hęg~"-վZ7I}zjmK(F#l{ ~ߞ*;V^m@U!v}?D{뭕[S3 PzInKu;V#RzA v=MuVԷyᘑ` +ޛ#5 WN_ٱyz(Rt+؎MWf&=l||'J޺4z};n^lÃZ%5 n]oA﹟mMbU$!n=i W,ii.*MgW[׷n)zk#'*<:g+keK`[]LRyC,ʁv2s9 [m:-X]߿m|-jښXE+[}'`Jn@?/JFJvaZ>';9y#0#b d[ +t[4Q-ՑN)_&*QiTzյAzE"ɷ>STk$:Bt{z˘Qj նC$'[yVԞF[qզNuU.b^.H gc xa8uL-*ַɬ[^C[2)d$u.D@#9(;Vv$v HqvWc5 lU6u}WK؟Cޒ???]Ej]VQ@zmEs5׎]-yԦO,v, שhɫ˲|ǥ+ovOn <&f_j5ZsȬXW/ %IGt`Թ``G=3|[x^HUeTAtjm =+v5יRWaK[)~m.qN-vWV#3*>ChlvLSἌjҬThLNވau^+ nm=%J?HQNKLUnWEMeR(]A%G|1.-^N5.j[:@,%g Uhtu5hkzhlL{ {@:,eni oYq>,l@ akC<]w5K3F(t:?GǶCzlZՕظVoD*NVeSźa;.8_@U ˽^6ܟuxؔ5^20'G*9lzCUmCS qFM*u +*Ÿ@e%xkA6זcLH]7^gl'T[Xٵ|%L,4YmvP5/[Gf fs|=[MA*UzMU]m=o՝X=a1Aw+u^6ФZ 7ua𹃍umKUH$oGjOc6,~NfZ#(3{*c}Zy-Rk1GEk::+~%0+>4[ IE?x |\8/;0 : tzzFM.E@z u73Z/qLwGhF=@wq-4xu^42n6=JM7/*pk]U݇P$i~ w؏]O9锼{ PhݾrYEՙ]KoTtV][[ +;v*ql5۷y9`W]GCd oٛ@5wծG\x(K˱zG6%k23̚Qqt5* +b4_ ǎ7.dwbt~I|}|zHn@bO~{&5|%y5YcɶYVV~{i|eXAn2,zu {Ħ;*:!GIc{}krdMw.ϻ ɣGjz}#Zс]̲ TS;zq2[(Ln5oܖPXo)Y^׼!݋y1lr7tOsz_0q5 ?pK,5\u?Kٔ+y UWBgGp@߼QwEg|mXz!"bQߋ]9_~B(V(|#z?o|&yTҍU'"bK`=~_ƠލWH֐>_}a oFrxsYOkl~X3tIbu>gZ+&ex C֋0V`z@?)DDDyղeu)lcq\M\5"$nov9&B5v(ee!"~$e +uu.}:C{zPHU +]샷H&""""""""""""$]| +FM#1!.@'zje`S)tI${OrLɈpurKmi~ߤ^FV"""""""%$o~6 1fcn 7sA3_.KtVUop]@~} k²j@aI>I߼ˈU>zaԥXwwU&5k]cJ>\5rbumHǡ2qQ I2DDDDDDD@ 28jtYM.ImX!+9ql6YУc}=LJzƶ=HUcv9 .C҅(YU*ڵXׯi3)1Kr,+fi~2b%7"yG#Z w\2@^B܎KfUlz,aԪB׿SnJyRy>gB匿]ߤ#r st1Cv S}cv>j +Id5m_YR F01WxPV/c&$i-1|j!`˨K32)qA#{q"""$>7'F Yqj +vBd}gnUZrGL4FPwi<^\Vư t{u-f=mjԡ>"&%xTb,+v$;2""%7ԬD z!FԬJ25r<[_MEbcbs'*>ZUp|swNLsSYE A E (3zxӉƹ x%zOYMcļu|m]̀~&Џy[8:,*Kuy+uս}G)W֛%~Ƿu>cMKœn&((Syt|J:I$Ottr|&2t~Od!%_}L~C*]6yW +OIl6^B-#[j2Uf=AttL٦r4;jbصt_ӷa9;r|;cde=L6Ҷ̵UP% 1(jС5U-D)h]nK6d^T+K8 6(V o۰8|T'b_kҗs{kbXbz4\'%kN+(Kv K<3-bK^xuBZ^:Y3"«`J؟]YqaccJm)vHMd﾿Lpt39ggjMZVHzU)'j6O ^GC|~XχcX/H?/dQI̻9,+»J0:jk2J*Ԣ_ue; }zH0m+ DA޽&ܪ=E98-?vv#g _i8uɖ,vo}v?V?b) e*X1$2gBdpŹ B=ǧ\LjJ@[,ǩu3zb{lSŠ2ʜ/r@:סdbf8WQ+VvUh '=f:eRYRSԂ?DВc(VK٬R,Ҩ$b=&丗5ط1$R[M^ҹSɩUVRº؇l&6="-?#2:U}$l?OI'3̪FVXWM cq.A:'xę\f RJ >fNzڎGkL\nhtw|b¤&I=$gJprMrj +d6X +$@s.&S,[u؄S[h~J@+Z8p~d0z-7]i^2 @Py"=Y-gwkt{^ܥ^"eNzԂh tlR ӏzgtLz='cj^WŲ|s+t *r;l$dN/SȼBrΧZI]<#F'˙-gƎH_q+wie*mC/^ Ytw󗲼;זuSXI@b6;!&m޶=V֬bttt=GcK lۃdC`kh{vKGW OMa@Uð#V8mmD-Cvv4u|'HB\ +ش+[v8 ֝ w'd|&@ԋ[w.[6 M='D< +Qfbwc/_ +S@ hgBYe66TT3/KVv +{~K]U5~ 4۱uZ#]A eҽAwzP6I[>U#MҊ6=m{oy/#jmKǪVUutH`C.:#18z͗i Z)^ԽCWHedחS`  4DkF u+R̥ҵJߩs,/~7%ى[=Du'̌ҟضQڻ]_Ynj.l{]cX>`PƏI*}w؎㸘pEˑuՆ:MgfBx[{FyvȤ[V`H?9/JpH88dޖ\'ZY¸bZM0Vcf`kkXX)Β#QҪaUyW:aV7#ӧ;Wr +sMm!Մi`1#::IrOU]utYY +0.=QcdSU%F!A ~ ^byכu@]iO]8wۘu`t:am {E< Te٘X4pTӭ|=>2g/6y/a1vrv߸']/&u)Ht}|3qoo[ڳ,Ƶ→|X},~䃣=?8PJF?֮b^J>}o;^X˝ cu=>RJFepU{dmXS֣DZx{OQzlRMlP`=1;rP1rC1,Hg +W#ӫD|+r]I{Eu0lGnAinᄋ)]ll7P`ޞ\ob>;cb5 Aα`z~oN^.ECTSTUl&eF #{|#ԌsvAT +>~SI'R[  +V }sOԒI" ,eSYTEf:Qϴ[H A3DD1slmGz N=&\DDϣP-jN[=w+<>crXܢ1[T1RTfTDDDDDƷǢ[,^E\ԽAzukz޽u.DL%V8y-+ku1:K2 +t> <=Z[+*{O ¯:x{q`-Y +r U!u1ęilO-TYΑtp4[. tP JXėbV9xwd~`g@JX~\Lj~a^Dރ3g7y gf6A=Ff'_ɫ2bal. cGj$~ȑ[o.?Z&%]=6v^Y-2N%BVc?v,v:{l˜_,O.-6>ø3Zq>3^!)O3&]l̽[(YIAϩw+dىGeU%Z: +H;c+8)g*,@oG`˵RV^ +33؍vuWlsmצ~Zt#d$.My%7RXGaT3 o;l [2'3(Ay3ٕµ,ʝ=A@:b7eUet;(VMd/Nr - 5ck|K7KUUmSeɘӢ Wև{8jmµU۩SY6yjͶgrmNe8K?[8e + NCϚ3sY F*؅7=Is;ą\|n +V#۸x\LGY:]TH'{~|z}-oM3'Vɲ*EgH7K_j!+rftt{5 ,Axȵ[e~Wmގ29y{ľPt+azz d6L|X465ebs':UG͢ƭf ]ccDw?ŗe .1 3I B~ pOylK`ø*q؃fR__4}CvzՀ+ObpKJuf*5K&2F\K^zʞ꡶: !'9,,u~/KWu]5ǹԟYcuWMݏKG,9ThkZP.>Af|DDDDDDDDDDDDDDDDDDDDD@0gZڧUU$=H|ɚcֲk('[:~s=q9,k˪؏X#EI>Ǵy)O=rhHPIbO~Hxq,WFB@N'$ŧ.ea;hһ>sX~ jK٨Ŷ4ެ;mz̬._.]`uOf@2Z(]1g)Kћ?pVԊU +Бyt8SeԶ^*e`Iz ⤵CfO٬ĴJParV#܏n#153Ӳe{S/+n>[kЉcXUX]?O^~NSM#kb=D#V f>w0Beҕ/b:Hޛ}ꨢ[xJۣJk;;u޳nV岳(aUUL2-ǰ5y^?-י]!/SV)w(z/ؗnf}kRoP?kбczxҫrx){k(d듋zp*]`UFB-h|䭳6U}P3We_G~<%da7[Ձ!-vRu#_Ng:=-Tş0[#\_E|L']:Uc+.zf݂]"VB((qN;imn۱| HvBb:K|:~wc H#oqdU'`)~}`xcs^@xmx7Uv0~*4.|r_ YbTn,z[^C^+6iXnl{uTD.qrb۾ke?1Ǭw߈ydDMtj~Go5'YFjxC]1Bh6Ԑ C6N66EF]v^p-ߧ̣[n 7_g}#Gmג|I^G4St?~ևej|-]κV_-؝ё~8b6-zS6ٔoQw/xLz: [!=-;g-ERb]IgF]hZlJ8ꥺs*-^^Yb`>Й9~g|%`a~ >"//q˳y( M6m̯rY09Jh([UGۧ}\nFCE_,W~0nⰮVJ 6ƕI$HiX#9Yg +1CGcd gURЊ4=@Oq#xe͓E Jݎt}epǹlT.t;>""YʠՋd+wEOYR@'zڨ(fxG.z0k}fs-u-ieo_RRJb#q%""cge4Z-lè; \{rNMWaPtH^Fu̝'P{$߾L|aKVrY?GnܞG鲠ệuNH[%b"&6~u\m-}HϹ +?̘-=m-#X4}4κB3EROϰ܇.C,~8 +,BO„$kmIȈrvcbRiS6{2x|zZ;@wL~bcUmT$ґ xE-lMN7l0:B;DDDIJʮ5,^ް +0H;zL_ho#׽ttk~(d r/6-Wyb=wҤk~$km~r.2ւDac;%eKl}rq.1ťYQʆ=EڃNx|XNiA BGnQ- ,-o41W.̡6t߾I޻QU;g|Am&EM]XҠ>+՟Yhϱ+$B`]3E399N, +ΤmkSe֌| N(C0`+>"4w@⌁xK:\s _#z:4L+ĩYTkl#@Z_{/,tw+}כTSmIڽPOuv{k.dUlK Ѱ4v+q[ɽb|'@lh]2h{4y+,m)aɷ3˽&"QsP:r]iY4ǧZVت@;=$ȏ'1Z0*,忳'wA$MKƘ 5Ӳ|"fh|cUuC+Р"Igs|q-Ei~cNU􊊧!6)$[f0 `Yv׷^9xǵ2hPv{X`~DOOIyl +iҷ_ư3"g5gZ}5+`V;DtG1lv| Tu3($]d3BcY};Z|D=|3m2V;1Wa,d|58uu[s؉c(%H#}yu<~-[z5?_y +e+$]] m֮֎'z,uy&Gi%fչ`<;GdniO|`ĢsJ;l맿uIx?#6{2>ΊŭKoBzNôFN&F%WB^eЩinDho- A,a]JUHV9|m~Ve`@ Gm53|xK- 7PllL,-_U-K*B@?(m vYYUȹjVjv;J#oA2qn_#sIӭrlzie\t˼  0B$Y'ŵW;yIpHBC5fS:ۖZhݙU6zLrU5Ŕ oڎI}jkX,*S}']-p׳Z~6CtIF{mh5s|Yf0;*)#^+K8ۄ^??yC 6u\mȫe 6?I1g([*l}=u{G#gnZ4?w!H‹?L#5r/y?j}-i4febe[ε#ZU +43-?5{*%IBFHuB~ 'n?#mŧ?ķT`UȵT}&&G7pVO#f5LOS"3zza>Vl-eETߨlTy?)a 7xNdfr\_,aܝގ1@uפYѕ[ 0}nYk8浱Cuvk0vh_vKfYR֮VVT CZWj6?Qnש۸exkL[֑S9D`t;#_xZKnWlnB=v~ WT)M޷<8ٯcf\ +EKSNy$ާ^=P0N-*C&Ռ^t]tv cxu|]8jVv=fm6y sB+Z}~Iש>CfxsIs2šP8g׾y[m&|Ծ YlI.&-'**%ڻ)YUhB Yxck^½![*uw>gݏ{eZTRe^]ۉsuXk]`:R=}~&*aTVJ$]I$3  {lt@GN)>y^N>QȰ= +Bh'IkYo r+Z2^Ǻ$~PB%?[l{X _/Bv +=s3E9[ `P&#<%jǷ.ҔY[ӥEe5ޣׯNfmVw,VXP ;R{=42r6M7MWXPQV[x]gGVZڀ4FL^ cWk؋;PI$;l̜f˩[ }] @=U,qO}HT_]|3n#a3^X?T +;{%n&ڝ|ܧ#* K0_~/N")衼jN;lw}}=f97Uf@{Vk~~!؆>E7e8vfzk +U 뾽}~ %ۉf?V"-n ,G}Oy'){cȶA/C*ՋnGm(,G˧SC(BtOsY3Lܼ|j: 6RNׯ敯Jn[l붤oC}'Dx9iE2n h`8Zz{qž+ʿͬlqrᶀ$MzHx/;LgUjQP6];; }|.QAkcZ$WOWIoӴPh{L.G2YC[, -\ +OVvP_)Vp+B4(SvL aىUXNFe#LzIr Oڏ%B**{|ʫzH7v>:7pE8ҔeNSz)gҳ +(Y@0R1jyTiZ+׭QUdi*@i5},irZKPI*_L6H=$Mױ ZyJ"G[jae$1;;ݦ5bl7Ʊq uP~-M:T""Uh ,8 *N=&UQ @7{ȯf-vMV:.VvVR1(6Hu؁2|6r[$}Necd7H߰FĹlC[H { #0y|J0Wdc!:= <Ô#Vյl `ADh\@K30TES1ޔoCԝ:If;rAO)]ٗap%nI]!>fċ3#d*H#g)؀2SdJdF=4eP>4,WFcյfq\rjzV "f6VW <qf- g ڢOOVک^ L[NfQ:FE ]W}l$C)sv ow 5~sYyv*z5Zꗰy3*f vA#]$Ax|qeԙ6tQcӒ /S%Zׯim: +]u >Џi-Mz-AVPGl 9~.K1t<@C^€= ߦ[}]|mOq C}I<^h]Ki fC  +3hF1EuleRJHg TŹUЂzF1lj|[lEjjR%N{exش +wP4۰gds6%Qe5"XB} )'G(%LoO| yuy"[kz췫[^ #09fU"Rn~OP,$1`|b݂s^=}]\@PNذ]捗kzljV*j$_,_UnMxו-T50b}{}f~g9F-4Xk/Pzx7k[ZʐOKU=g*KaTzW߹?9(喼U[[o@v +@TRt 3ϠLz*sm=HmVmoԐ=q0]988?eq+,n̄:*@-GFlDj .g&KꨣM1m>_OamIH"uߠP}Ԋo/Ayu~}|gLOrДa]YtI`zTY ._%+Wej.Gq= \*>핫9ىU'*y*ea)ov˹ʼn}5栾oK@l303ǮVPabnK\ƭ<Rl'v=Dhk~cQe~K2ܮ@52w`ӷ1"Xht!)fO6BL.7il[z>:%t;TUN(== ANwO0겾[K,ײ$*v%/.Ik)5ח"ΥpįXV I,("`X']5z#g Fc7n?YJکQ2_7iOW={J-7VUAm:'yLSY_(E$,OLq|S2pGywZOTȧ#mԄRzЕO^㶻˸f]X,*X Bdc40rd8`yXS@yw7}"QUYYA!Hè^oI a drjbno1?ab~۸!|Gc㧙C'peM헱$6Eyu%0du ;2DD cqΔ mيW)@~(1 Le0z<+i>s+dyIzC,}}7Q *Q˯[*VTu X>OWO߼pm z5lj{QݝXzw̮'6^ZpW_Ktt{v^lNHe>[#+XC^nx7!p v@r}r6y j +0[++~]9S6Pl[<[@vh4/)+Fؿ[U=db[Wp+%ʲ\L;d3_@y϶C#J>"zv2[©m })}h,WZu~.8o9':,z k5_VE518؍{7J:BRXw82_Y6+oKE׀ rX唢f }3vhLljJj$ Dxx̻OM5RzMmϴU3}bµ$* ys32&b^BUk`d_b\ .lf u=A3téiT ZDv~ei V=]5VUz)`4 kyL_9n |lzUX+Xk:։J7uWM>]k]j܀{O]C;,zqlk,F[G&vw!Ng7--H#C~K/~nLSY!T{@׬1.临uKU{rt6ƿDqK$/e`*;kF(8>QImSYllo9$|zڛVꬽJʐ +Fl\编6yVIn~墮cەTՐB¢5do_Oy!x|n^K6E 1 ԇ"-pe#YznSSӏSST+Zݍl)SӢh}$8xn/󷮠$~CzZ""'<-U^@%'u:rUAꕈc;Qe+c] +C];megI;O晱1y,&Ϥԗ=D GZ3/[=Memu;aXcȸ[a4:@eՄqܛ.v[}[2f "nC[om>o/ +7zzӿbu-q c +Kkelzؒf\DD0kǰ[tt}5%wE<Re%Nu=DDM X<vfv.ZcO/tۨ{zk䬬J-ˠ\20aŃt-6 Ҩ9j6@V]=qU\f"b'uU f?V$05]/GUcI+BJAnN̮O9b+!mcoZe: DMlhK+i#}KQuP~#9#n;eeKcV]CgRFKs;umzz@U>dLΉIpfb匞\ya^uzk%ԬDDDDD@<`̲r#bS+o/|%U1-cdיRSu+ =b%$w6fV^-6;WXX )CR29Kjlym Mz9Z?NDDDDDDL[hBm$PI?Isʻ.4wRvV*izܚzcXX(;!K{[~*`jK+8Y#JDDL*#feE%HiTDww3b"$/?(}oQر={#/ U[;8]Ră 2p/*Xl(nlw׬ɈfyjM6Sڽ/o]Q2FrqO<&Kuhs:N"Pg/fn^^%0I)3_@d;-a:T3fOv^5vdRiY=Z >]|Ҷ:g$(l9k8jvEt!Ґ$$DDD:uHo66]xYOBiEw 2Eftr' b'@`NT9SaWk5WV;!109TqgIvgJ@uc] ۗj8̩+unuilDD"O`X {}w^8~17Yg^6;HQ;/JoϹiL&ʕ:E`%2zFy/s6f.[,7nPPNÿLݖ!.[MJ=RR6=b;{To-鮥 lGMMyxl.UQOKLsYOV]U=T_M` %@e:kK^zȧЮ ڱFXbe-M_S\섍u.u?XwouYw+-Ymw`q2Mq֣Q:C0wr1eYsOSbccwg_*验(S[-_f`}5w)쳐k3:^P?"쪽, ~qU̢zM)G[Fl0~O?69KV5R}  _Mw;ؔyaZI!lFr0$ZUݓrmWv5722zUz50cd^jo2-CYK߾2yL/'ۇc9"]##)nǿg~NN]qjE]HU@zϴf>59sy9y/Y]Zw(JCZ$^??-GW]I)> +UXWg~%'zGnjEVb lNMcÿ#U˶qr ѡkwOkR ],@=GQ@b5uWbagWdf #q}vdlz(b ֦cMobt;"Cߤ#k$Yr֘RYX-5ܱ^n>lή`TdXt@s+?+#ùA,!IFR4Ab`gX.Hݻ֎$"}Ծ+!t &aqg<3 YUYԯb^Cg].WPK-(л /mw29 6)(u}1/S0M6@3g67?O4?xLOlsU=W&̎?ŻŒ-SHewD`zoi{_z˫æܼg;l4Z:E +w6y68lk2ҢW~I`w˙$dl<^.ZP'[20/ʵ(|k)mvQ5|..&vFc7z ?uLJGYw9ʲEU}A@%q/k@{~H[ǽV.c9SG`oS<m͎kFWᱽ͑qIw 뿴eeW/Z:ʶn$0__ 8[lCj?Xk>"ulzafdyi5VN;׷~Gox_' _s҅ *+MGW^]xe5j(zK՟jO~2=Sj¥ [%\[VlDk`#MrË`XSK١zTUn!y%sq#('9]]wcq9Ie +j5Wءr)] y~}n.b2'e[mC20؏oO9SSe-֚)†!t{o7,;lݫRNʱ+i ˮrPj6}0X$]}-qɨ\QSW*APt>!zH Nr콏XkЏI1a*hlX]~`e5GYdamGkF ˡb(`^3r7e|fz?ynu.Yk'"?QkVʼxu+FS{}`_"W`vS˸LKhӛS7K:={jdu<%kkwcdGUe:Xv# }'[m5ER] +ۤl =\G0fFmC2d[} hy9Sc-Un 'FƮˣ!$8T'i~!ѡ‹AfkeF-ZIZzubF='+wzNBF[;mA&oX}_S>d穏>DD-e.e6Rvdmv:a9vઓxwQSth*ز|Lt7݀0pG/jׯrK.vNeYZ~z޿jFE:7n;l|v%"?H!AZ.Imz;K55:#,#[܁OgG-MY)$VtQ28LkmltκЅ%Jd~o㮵![:H=w,$|#n ?+,J*j%TOQh7.>^Y!(k| .uhiK|5v&3e(8S櫵} }D8fF-]U66Y>˫:잛U<UI;N53p8q3r3oQ_HX!4zS%hvF@m6:X^-֤2::*,,_cG^ Հ0rnAW.o;fLK`Ճ_6nwHgg]w%6^N>]6v-PJ-lz13|7mx\kkoYw]Iܹw-W#WO=]~]O8OF,NP:ɚ$;=>G_}(6-Xu$kk#ħ [VKݬfw +ߠI.r(Ͷ/JTFYdx'3#$.Eo_vVn<t1ڑX%;+ nB`D*0AX# v>/~GAΝ5$uToC~o.Ư&]tNF̓==*~ǿÉv= jP+k6wr;? /&zoJl)gDGۼx6}w ;S◘8X `u6Ǽs30-ץϷ~Ys<&:< vw܎_?mK8^9HNCt6|=g~M\* Mʚ IeQƳ!֬5 >Xc'ہnᰓ[< ++QLLO +(˴\eTY߬7wegu22UЍ[@z׾?F7lxa+w/:'קge dэPӐ4 鮎c@;́v,g)U#) >f'!񱨭g꭬zөv:~͞˯2T:ԅX8 +K ڙ ~vNc''=s3p+2'w)7V]{oUC~ލt2o*z#+.j޺Z|B}^I=VzĩˬbIH_BdXԫF̆y/@cX|;޾̌Kj´zP߿L722Uu" SRJ/w1s<4QM޻؍Ԥ~_z9*rJ]ABC7~$zhpWqpS,v³AIzjVUl=w'?YZܨҕX,C` +WL== Ƨvb՘6אֱ +T1$|>;#OG25dYHè+;9@}1Ḁ\c`Y׽#!<,,r𲞥z߸xFPntcAWf Or*) SA~o2"ӍrvfF)%ވ>c-efA[E <έz}{|]~RҶ'JUYWWff!}>]Vlz޳gK7(ztAq߃켺eV j7Y1; c]Ჹ +/(kWʯu+vͲ:. +zʥAw n^BW`jr0?vnOp:?Nҙ~KU5cvdq`%a&1ĭE0^O[:rDDlP{ESeT z"%ŅGP}eȈn+]hsF͕U FYئ~S |@;Eh;Sg0yHqXdwF:D.݁>Oi_k6j+/YErbCxGR;W_Am39JpMjfQu;{>zi7[:C+h~#'GK_k]u0Vm}OH:Y_=eNyU# +:'J:OY8vlΐ*Cc*7nng&vTf=@WGc~!øZQu HkGY_qUyɳZ ;S"w܄!լ] + A>~I3׫VN-X w~ ŦC˽2K-,,N=D) >tL<q ̎JmתL(`LaXX)R Rͮu.c7vVd8]u,V7!5K.mC&ƴXm;h /a+KCu0 +w7d~&ö cWiB)vW=::F%P X%d8?&Z2_PoP~bD3sU[OI,Oڕb5ll'׷c"bi8.G#^q` +(FN?y9epӽkL eDDDDDDDDDDDDDDDDDDDDDDDD19z,@K6=IB1E5NFނJ>h=H{|xEt@OvfCܟ9ZׂfMM|^ͳ̮">Qs-T7]]3 +-=Lɹkܧ9V[pNPN?$|fчg-иt.'5'O^V+O$qO | ._E$ܵ?=latyj/ING=f?-@J|qk̮=zƻlMیmġ 5O$s1Ә#>Ԑ{ F6v9&W $ԯcvu!#ՎE̜h"zPud3)^r(j:3XuBw=2a@>HbG!`V%elRWqHT\;2+k,pK٧G^kcNwd&E;y+m;@~R fb1!7m3`T;m zI1)]YzB ǡo1u5 *WWMhiP2dh6= ] Uhů#OEmfClP=}$%qԯ",?VC"96ML)$YO7V.eߎ̝66wPzq|98si8U?@%]xsXvC%xTQ2ngN^l1X/ъԉ_ eёrdTU +UI'% v +>ortG'-eeJ) ~i+gcᏚ6dpԐw'͚@?/6-EwÿY3|v)g*-zj-Z0gX@ #SW̶x,w_bR+ 8ncl;$+~gv}(u-_~[=Z3+1l ?hu  rF܅U<QcrAr_aԠɺS:;NmL-WV U ('`ٽ&n#eU[;E?t{O/=Euap(rVf;arR""""""""""""""""""""""""  (J)HR:t5iUP@h} >S_ڏ<_VHWP?>H#D ^hGH ]hoZކT$G>=I>sNwקԍto-ha@:R!%T}H*LPTvlO RXmTP4X( GȟS KXӭFGP u/KVyRA^D{좟P;J ?41W6PhH#YvY%^g^HzܹwYARQ1먖TU-@Dϖ'w;9E]*gPLǨ:@]#PhJ)ֵ{KԖ0"wU'ũ?`3~s.5jTAN=xZ*T(BzTU~a/m'SGr_?|_n/e/7?ݔWP)|O  6?Ӕs? oSBxUe,6c0q~a?v_Q~ۏGb?v_8c?v~1h?SGs7*Ŵ锆SK0[o]^̓)_?d:?W3OGGifΏ⏳UzhΉD}lccutG$_HyPkJ~~R~~+G~e1%>)c/#ǁMz''撟o58`c_QU80s2qc (_AX!Q.@}~v)YtGV@=QGiJ?'~O4t}k菳U/ÔVq//,}:#ȯ_S d[eunʯIb۴_R`c,I%שO+Fx1T5V'/tIOkq>ƿ~Î?)_?_⏱?03rjǰQN'gHb+PI9ltex.a)Ʈt +;љe:#3_D:#/žyC=^fy)QyIQYȣ⨕fc22mǮ:ɭí l72|t%åf >A?Ҕ̓)Ty8]o kk^Q2ST2OWt2OGG)fΏ-?REfDI 31+C3ԀIug}/<hG_ _%?jLn05hfdDDDDDDDD12 \DDDC\ +-)[ tROfr?)eSON]kU;=#_052""D_ٗDMc-gyrՄuY2:y^eGu?l"9V"&_ mnl"KX%b"$n^6u}#v߰^ol̅|̏7Ers1yO&G< _?3"%- +Q0H= 2bZ)-a͛:hveY_dgUJ½Lo%FS ܃}~-LȈ12 \DDJ<|z e_if=@l$ؔw.ff>ı;dDD俳;O!9fj,T`Y[A!;){c"e; U~%+ß{%b%@+mmBR% +w>ړ"KߜOt G&sR A}w#x̼'ܑ}~R*:P>JDxQ2 SP6"`|M\w4C//÷_f4Դcږ l2'x&KDDԚ֡gnA߼tbj}DwߋS2""""""""12 \DDDDDDD;G"9qw3DDDD/b%b""""&7%OO@L؈fwG bqޗ~-̈12 \DDDDDDD?7G Ih^V""""Ex1뒱-p~'ڟ+8L0KNfDDDDDDDD@#l:A*nċoAo~V㿙7Ww#oQ1,??n7},Oc58A%-J_8NF=~-aR?YG'#HZ[~,Raex_[{y@i'#HWG,HWh\~+~?~wq2om?G,Wc+h߰ɽG* UMv|>"O={?aøk\̥d\KkY'|żO_~-aR?wEd)8_謏#k ]~,R?0~VD))[r?!8elߝ;^ýca/Ō̯ $ՙ$z$oͿ~V㿙7WwgQ0,??n38yn38y^329siJ&M~6rJ""""""""12[ \DJnZ.YY=%b"""ab52%7+)YIY묏g3IYHqܬDH`O/=rP/=8 +?%Czn #Sz9YMFB93_ɰ\Vo'g˱?Έn%e7+"?Xr"=w2V""""""""12[ \DMUv\LG hRA6k,=}?Ix},±pjZZȥS5^ɌZ;EP7@hK:V"&O+]!3&?!k}|TjLg̰ea]O5 Y,w7I8va-լBo-<⣛j+;m'e1fF6;5]'gc@h|!W#nTCC2R_m )0zKu<]vn]Cܞ'fsXtHcYX]jE׹6묏g3Iirox-koA+IvI#߶5ܛg#> QWTIFA$G˼Cap×[ \td+thc$sedP8w( AV'`u0mQ~X&N۹]蘭ov~FO32XF=,*l'ߛ~vMvZE$hgcRnġ~[ܻkSݾ^`/=rP/oO3} +6eNH(,zԚ [ >+®b7ed/S@de#UCl$\UI5~Z}}|;nˬܺ,:X(֥qW1`g%.FiIj"&O+[Q2EWSYmS\1.$} o'SחIo^9 b[*U:KYs.?hD3X teêĻ*ablu ~o$jѫYVbwu-y\ .(Ϸ1#e+sEH*kӸ:d + nAxY㖧 +LFUO=WO`AR+v";u~/\/or6nSlr+J/:?3c]z0:U,u <Eku NImWՒogE_-=GUZV_P:kݍבHGBI1n:8şM6f?}h!-rԽ(_`uz޲/"ҙX1Ul:D~Rn籹WlPb먏Q=v ̫ãx})]c 9:kY^ElYK[^L.'6*Yx[UCA6բ{kD}!)J=M=Ohnkc]a7Obxٴ^=0LWncy]׼WW+X13?q +ɗd\oze ?zJֵ +@~ mE\9np]Gaz'˙0?˲1zM>Zkۿ%h83#Տ'?NX0[=>;ǯѦ6g) |I }dy?جo&dZy_H˫[ڵoU _@b]jցՂl-\2j(4KtSIM]/H]d?KOԗGPF`#AWZ**P@DlJxTZ>P kdzzz߾8s֥eqiYZ1R +PH#Ѝ?wIXW/^:߮m/^00~+]kRE +h'ǭ\CV +}gjVEx{erV""""""""13?q."""""""ab̈뼟g+Ihq뒳LHwMn{ lO][ܦO^ǍYjMm#1}TfP+rz\bk'n9A݅՞ǰu'sˠjGsjrŖ܇bMl=Th36a}( !PPN:?\yaħHVgE=SO%<lG+<#nE__焧j<#U4_کh]?rri,bՖڡ ~cf3xNQ\.*hMM ٖmslu~_0y1,"ҁtX~fA5\EؔepuXL66$vi⒦,z0hk UaҤ$03Fk`SYXJ~*_pJ+q_pMiɣckZk$1QY?pQCbV;2kALZ +/} `M[uF qf=~O?oWa/V aacfZxmƾ꼤ipMWeآZC9)s~_gdmsp8+Ʃ: 2P~xW*ثRFס=ϡ8ܕq~Tq췑Df:M(ّ "w]vQ]!dzFp;i+~+_pGcGkR}*F΀~""""""""ݴPtFA +-_nק}>)%7dvl{j=5/snDfd"Trq,fˍ2unGM<\r>"RcҶ5`w=S+Mc=s-Ni| ZyU`xg~ӐjwV|[mM? j(vW[ܕ7ôe܆wר\껆^ZҪVw /q1*%E*}[f'fzUH&ˈ=$gfkP1|qR?k$9;l0muV@V + +T/O#G[p1:S+H2ES#7'\{mhWbυ=k8.O7VJX zԳ\>uYsse:`EHAK,p:vRKOIGHsyeb\/%E f,C$Wav{y%N(Ď+*xnF׳ϻ =6~X@=:>#}VvvFG'Vk֜zj$ ٔ~燫 MW!%پӓ䞟-fBJ}d׆2#›KVTvtL^Byz.GYnXN w0칕~/pO֞b6'gcԖ2xY^5,zݟ[{|19i[9j,w;dp)̭uĢ)W,%w$67~r~{Φ/ U:vGS-m3hq.@G.'z_z U }W(^gBF hz[Wrnkm6#vAx;1iV{ KIOv~Ҩ{{bq NCj}#1J_Ґ ʰxk"\cg;XK|[+y}=🋹]0󛗩&+$y(Nڝ1$/.}܇l[l!rqZۘaJպu{ zOw7(R/fJ׶}:7OJVN3O:ۭ{Ǧo1̭(ހ׷ka=nӇ]Hfw *Cz҅u*䓏Me_I ܑ-ᜪq!ywڍ]וwNږ{^WUwk+#*6daʢ̋McWu, +B#޷d?.2.rr䄵lG:'$|~RI1V^VC^~ 4G}ddqUKml-V:A7=Kq&]u@Ml|{IoȻu5T1+k|ކrT7[?1"܆W{])vScø;%ܟjwI\Y駬Gmޓ6s<7=R׊Y9f7ck^nO{v̂R:I|RC|mD'3G_{ZǿLxvl_/10@sc*ohQ؟y/ udfwBPO"dX!<)[]VMM}2Ws8ufͪ0}[cdn[Mtb_{+]8o}*,X^m(PקϼGf-*kK6\cfs[B;>Rkh=F'b V״=OY:ԑGM<۱س1I=6^P6N=嬞*r]$Ռ ?:;< G!XVBUǣ|$wͼ%7]FC=e o1n@huv%VߚEd>D<mSMUVeUnMaSh&Ƿ.꾥F75UM?yaٵ=5ǭ + w}Va8mP8=^gW㥼я{^Q.U{M,dxO&(fQa$жz~_IӒv-Wr#Du0=@~x{ԺZr~2 H zvLlz>G5K+'=6/PtF:cۏq&akؒGӷn;L7hB(gg bNxjr˰zwUIc=v;R/3d([zX:I:-cs=V:կ*u4S״OM6e2c!w:w vG B[ kō}@۴R8MrؒX..j.[j-[XZPf7z"u(V].kfWҔU^K7p_ +}GN}Ư8-w~TYO]K]7EGu묎å4;%"?:6;k~̠⸰SJ#Z=)M][u$}He|?C5: j?>2 `Dzx}\u~]@3K33{OћFU}t5UCGjnp]moC^x"#'Q`vtXl/b' []`6} g/6@|NԶ)c] +1kIҠ(_LZêV>c(OOc+Opdt[,l=YvzN{J `.%ܻ';;m{pxYkfߔMuO~ĝDU_fZҖWBbZ[ NR ݊f)F oA'}^oNqFr[,vAdbbׅXo%ܒĒInSQ^GYD2 `o q +TTzOzއy]b=~azqDDDDDDDDDDDDDDDDDDDDDDDDDU=ێ]evk$6 GybG!Wulz2 yf-E:e:>\[UP O=6lCcg^4fS*~~&,ʪ*`L5!{]QG3_f&3no7X$èo=FRҖ |H@ `J՛FCWj3'Uef_ؖ/=Ӫٿ2?y]Vdlg z.tCCIQFmXe;0.:?2Nw3#+jn]*:U0 GO5]`-~:1ͨ-#a (r>};ܿ5s9փeaXn?.W᫤e:&0 @٘~-ϻ7 #^ջA=4&cXu.u(`X~q%,ZNܓ-AE6&~nDeRrILVMW[/XEH?Y̺i^Uwo}aGZ˨fU,7+V"-uEGrt#rShNH>/9NCVT, nMt꥛A ~C~U/KX߸ YeyLF^}DutX{ͣYb+@̪O}v ,>]C]OmZB3B:t=O_%j;ղ׾W^ k.WU,GVB60+i"P3K_!Ex"\5Y:VV= &~~ݯ2#^te~n%񎮶+ :]=b0mt~GRٰ2mߎ`Udb}Yݙubb f!W˔ޙ Ђ?Kh*|KVuI_bV6`dGm׋yBS,b`4{jLݑ^0ݎ ,GeFEm_z5|!붶f6@rJcc[rj×}v*QzS*{f_k+Ժ޷5<ߝj'WS*߶yyX0%b" (f99Z=9}H͝} +F=ە_O~˾%p\R dPʠ<קd'] +ցWK@ w/\qڊYS3|&@|}v{s߄Ӑ+!m,t9EUC+7J>@$@;']$>VEj_ jg$9tz +@?&\b'e~Xw mVYe)Qdltt(UޟIw1ߔRtm]*\=b{y ZDŽm݊nvX<צ=HQ9K3p*E{oZh[]:cV5׼+3,`@ fex*OgY`x + :)W1,V+|=e;n{=|Ҕ:V D_v']; +v$tRr:X;rg4'~-vחMZH'r)rC1BS[굲um{?MH't5ytPIt]lS+v)~`={Y0%u${H5t`ٓotW\a:: -z08n*MdUez^-Zw)niQ/JAvU_<-޽fVQ?k9]믫_2ϊ12FXْlmOJ#"LόY_+:46v27W<&݈Qt=5;5«+Į֠~6>sL +Խު+̽GY]gI,݇NG{j&l-ica +tTYU\>~5x35E(tVV=dzlU߅e^[SYNTtY(o9KM&ܛj +P]s2%UW_1[ԃSbL%wsh=[EO϶3|v9Jֳ_ [ʍ=Ð#$ Rj1[@`G]>ó*V3쭴AMZװzZUZczt f _݌~.jmI#2?GݹHNC; Qf˘^‘ZI#.'K+ ߳V~N 3;E8|fXĬVI`r]:b{2:-jۿكN(zS$maG3cMD,}OJөk6GOU}AY]p O9|&iڄ:wPv H2|k}[O_Y=5,:سS1fOnH H=kc wղS܏C&VgF}^M +Tu A"c_a9}LXބNAsڷq+YGSYFP7R}g7?0t%oZU@߹ХưHzt؃qU .4˱Y8# ikM۰?:rMY\[iZ @?HcTh*>C[3 8 :1/Nδ[ZkGj)_5Yur}v=| UmMҬ[atH o u9EzōZ/Ċ%(Uvi|.W[y Ս['}ffĨڞ+ŬVň=ؕ[)8v ۸T)'~䏔>-+Y@0`=uqe5]:q[1f}$}/=KKR ++ +Y'r;Ե6_KP;jؓy_I.zBl$UXN`CcZğ1,6ef\}j7n:yUKB-hU@ ff5M%yDo믯޺jAZ* }=K8wd[VMGK#CZoC-]C\.~$!;l7&l`m>EgPQ Ӽ19%oTwX @z{J 5ݵJ[/kG߷xrV N +z0ާ*@Xe+5v}@u 븞0L< ,Uկs}f3xSꨀx:1uyU"o5(N*/_m@;N?$QSԛefGRt},CV =%O웾y[<(;~^``}·ϦW +Xog]v{>z1–$vZٌk #D{ϩSB/ϯB7`OQ)LLV ~K-t=dDJZ{O`[ %BRыtGu$؉Pg)G/[YGVǭ##SXfDDJ13=9 +Ճ5ԣ`>G~笜SZ_P'@]_/Yr!ee z{.L>S9,V@,[= }fZp#q+2)|Y&.zzȉMFV"Q($Z\Z UFJ:wugS]RX ^W'}S]^b/v]GJqܥme5md!2%:cO}_8Wy{7͹fe\}/}+R1fPڵ2[>c<ψ1;m)Z};}!|1~?NFQiin׫0־gy^IQWOՒ|Vտկ_MMޙ5e?0F/Y1ܣuP~DOc1gXexlĨZ2ub|:ϼ泸ܜze3J{hv@𹋆]Y =*Gϼfg7!]mK UWz:~WuXm<I u3 (`RrhB;#M_PR<b#_=ߓU٘g>uˣ= {n{ĭy8oB/ŵz@R;B!*kYVP%d>G3mρURkV>[1ė=8f\nߖ:&Z21Q^f,QS6?Q0#2x#bZa{X@Jl?\|YU`]NfU%kNG쏠2|Dx[22Hu$Fgi љV6SPE:^0n׸#i{/3 +(ST.5{v&m۞6eiܭ:_˕ T/]⛲1o1E/fmJ2wܽ9UbҶכCUΞ]DzﴹfnfW(JX3-.oˢX-m+dv P>{iUbUXo[\y|UUYRSXʡ-ѽ{WTukzq}n[YFTmX~ . 31d:X O`WV9ɰSmڴ@ﶄZ$}(]boؓ398'V5!E'H'}L.H_4,\[om=xU>>uEp- :%*"Jѝ x7ಲ,NڡAbGI; IVUk讵 w$6=yKM}B@"RJkd7b7^79,5J|1K/G`>Y7V.j@6731|bV [GoBX_0:W + (;ׯũzۓ>mX#XR|dXk:$losjYVSEљ:;I"bC*ыΤ!km)z殳6,SRQ.NߺuܝL#mtjiw"/IJW}`{^sɿV )bܑMGGr{i\2V"TYOeI-8 67J 7}Nt{{LgoƲz[-^z(e%?<‰hu e7 +zVVRSlj9#KEjYՋ+tq}=HJ_p?͠]zbyIJJlWM:`:=GLGRyd :sH^>JCeWM3gfer&UόY[%*fc`: |yYK؏QIFP7q;y"έ^rB>.K?#e\a5If+ض lw1yL]. ǭ tj{)=k'O!EJblAC~_)F&bլj-b_VO1+~Nn^bW37ikջUؽåAq'埙-bzR~!uFm؞y} },E?/D@,r(t^]pD8 ̞>3"'@A'@N߷,9ooGս]uo0ģNU"nDY򘼕UV{tP + kcFxqsk UNUVPŒ7ݽ'lmnlw?ج.:wuoC^Bb7nbp 2eg%i"7˽wA#䲲VlK+^f] hC,UqYW%k5mlud7gҕNh: 5@$10|?1]sR.w`A_{`g[yxc/XD:EIn^m6YSȖPԁBXYՁfV#A>RWk+m/S%h_{U52m4̨Bu~dV7O--heYw/վtE6Ƕڃ8ƈz q/ba[?,=jEuu߰L4d,.0"Y,{{Jpud[ɽ()֩}gs}[U^nh.F]muيm)_~%-pff]O*Nv5CXa2*j]{*AZ*O5{XR@:,[eܹoZٰ@zhv=6%8u>wb=[ Xe*[)G>S鰱a:2^*GT6:, &6;z̅lk/-d +l-ԣCo&8D8mjXeg,I729~:M_7",Yc!MЙi o+^՛؍:Mq9lSV]T׭GUw+c݇%'˷NǘڡI8=;os͘s|aʫ0^GrO'.G.lű|ʁ5ԵΎ}/db8xڒBᔂB 'ӼV׍KURfӑE;ؾ޾ojb*+;;>ߛpv3;ZbYK*u5-&F_Y 6;`TYWN:c2̬o/w-?dYlK< =kv!uu2'G$eYMq.3KN^EQ uw.UmEUZ95=PYuOS"k|l&YvdxZZCf]zt`|,t]x*sxuq#\ec[O+5Xo1}4f{ igyeqjW"jñcwr YV",.6̃ +oR;ܿFz!^P!Q]cYqW@/"]YK+w|}'?|(w:${^;«dTU} S!×-Gc y&5Y;EB޶S*\\9$}Qu#ؠaD@?10SȪб.b7߰O؍Xs']]짫C]]Ss8.XFN%)zƅ#M߫Dm~I<|1V5&%ճ cŶ@ BX(y<1T(,R#6'0NDmr:˲x\, RЙbGY)-&fN>v#MFϴZ:Bf{c@jZ|C#&OSzTt ek̠/3#6g )Rh>,貂޻:<+7+UQCZgg7p6t?TOo-dcѯ1 t GWmr#2r,zLyC=Zo@\k1d YKF:.|S}yUTVB*z +'Dttv*ޑծ?!2nnFGVR|"A[*+A5nHbJ;Uk/"WJVA5$XWnߞy\!{Y_V,GI2Z7܂e\QPCw>!;brjyZ%COȻ8{_0gՅT*{¦ɿoC.6vV +;ߴɳZ kk: VNoycOryֽ.uX-lH'[12^*JϷɑgIZ~_` Hte])]"0WP4[gG_r',摼(rlRTznx8z,R +G=+B4#QO+CQp=$IVN|N= +!,Y31۳V'Coî,Ga^I'zLՕ#Dl}$~zݝ4JCtu*zvu.fx܃?`:#T.ݦyYzkD{kZn꼐I~7R] SVk'C}@}o܎ĭ*B(U%Hj5j5ЕMjV%#QЍFQj5M X<Գ $L./%w P գ0Vܗނ% .lhW6Ӽ`$O+j8V|ACto[s9~^3^^>|X:KVԤc% ~ڰaJDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@1yJK2l~!<N/Vu5`3U%݇8/9Li^;j۹df*I=nm<&; ,{XR+@me^c0r^ZWjšܲ>v|[EUmhh-?lj:G2p5ctWQea@tv'싐1 ,ZާVK%l!3(ߤ,Fgxxetrx bzz=sS߉跔☍5S銗v*tF`Kz\n5Xt@Ntv顛)>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 55/Tabs/S/Type/Page>> endobj 165 0 obj <>stream +HWm+1 LZ݂eg[L Q鵪$ͮtKRSO=uMO?~9~Nb:/cۧPImInjZen> +!vYοP }O瓄+, O&o' >F d!ZW^9oa^\R0+7Ws%3|!CDq*.k{)R*O;.ń3y^,K hoo!CeF3:Ðy@Xv eߏ1NZWIBU*`jDץ*}8/^JAP&&Ȓf6Vf +CN%|qE(!l + #b}cnf"u+(LTS_k?ޙF6 +vHj)KdYR_s8Hp4وC$L5!SnRU@SdpN! "ڂZ34pF AJ,Ts(7kWQB7̳ ]% $pL</NZTu`d^6#)]<3b, ilxn nlji@$UtM*c Sxİ[TO6b3#$MV:GwUOuΈ${i>y-8i 'qr91N 'TazMϟ?}F8]%W^&?% K,4ZN?uG4| 7}H2JvvL3rn#QtyRz#l6BT؟A1 9Z4Ǟ)s BHM)m̊hEPy0MP J֥$N>l+uP.3/=g.2x8ԯrzvM'SiNj-)D]J zJP5\6Y]W/I_"91lʍOdemm!;Is3F0 7jPJ(W_R#겻]4~B` ;EF M5]OVtǮ{Jg>hjœ Y N8aIr3ej3E,^}ӟ>wkm\)D:"]e^MQ:U3 qudrTqbgw!oU>])'ƥj"+R~y|%8bqo^mYHa-6Gh8*Ov ')b֚c"e-B;9Gg u!x7MxHmS),FAjoL+2onz`hqu?K:Y;(\#t!9~glnreQOZJ*'/p/٦Gi.X (1_X@Xop=Jlo ۏ*@ҴtDs8Ko6xU˺q8jI5?(;lmfg ̎˯s$ɽGC,KJ*rږ>4SJgS +,Vsz܆Xe6$BK޶mg@o Dl_Zy/W fcGc?H#+WTozab%udW-:;7a;;*%,M_t9d5mQX $ uueqƉ]<.d(U5YX %͒/s5%;8j[|2>9*q aP$*m7n#)X=*ׄ<3$A_}7dlnזy*R\0 msDi6 +tQxb ^M^J0#aCO"VR}h`@í]-Cbrt槬,v4CwsQfmcx,{Ϥ<:\3\)M |G@ a9([뒛TLh|`dDGιpvJm*k)s5PYMb . 1[bR DXKr=rkfU݇;|ZfOi*: ul 'WL^ɅqΪ):]u2PթǮy8ImJ^m+vAWv=Fh 1$?8ـ׉qT='>]U]ze*(Kө[rwbưgQ)Y'H'`^(C<}b)K$(~˜ Y;zj +'RjZ)tȷ+S7n6Gu]և‰댽97we +vFtDOrLmC>uցPh_`2 ]&c00NEJ!ߵ^0j㜝L @=2΢*$!SS[1f &+,ΔxL"+1%:d&t +j}Ǚw~JM"U_,{lV;Z% +e?J#YSHrZ%傯S&Iq-I}gN[3H%+6sҗI+69 (?_ SJ7V.WHn&V zN,Ks8ƥ(h`fv&&{i{{ mJs=E) g=3%̐a|n t[4F6pdQ&Qģ6R] s5)J: 5mEBa^:LJsշUUFA[Rg@Tȕ4%-QZ/[y➓bЦ'n ![Ձ,@W -&I?ND.:n", +MC3p4q4ɶ쪡.KPv<"A\FPPqW>~g#9ĭ qa,ԧjkiڧq8[ٲ44|4j!!cp+7%v|&,^6"Qx糏8$)/Q%sBҳl67BGtnz%'n6ZɄ ,3zp_Ti7ϟix͇cЛ_l[mɔnu]J?/j8ƥ߹yi1m.y Y5+ضuFgej;@wNEQ'saQOoQX +{,zdh侇fOx)S0xCiqE^"cդ.8P>lz34&=F^ @/8f cn@|1upY_ƃ 9c\ҋ|{Bץ8]A[eD#jc`0:pq `Q鶽RlϳW@J 0YMt>gI\Js@H N!d1۔s3wź?*֓kȼUccxrAU{ +F bB5C8ż?yGXEwVhW/5ߌw٠`W2u1^1&#A/ zjIN};kNwa'<ڵcDѬVfSV! zXD鋢WypbXeY`GeʬN{e{$8V{k;U(>&e.B2N7Uiْ'Mv2-1n˰(9\?KZB3 i٫[ӛs*!%ĞQQeGGup.CNE [:l_8Bŭ-[lB+VW)zP{c=),.~??9{2̴˲Ԑau5%dvυ) +endstream endobj 166 0 obj <>stream +JFIFaKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Ka +   e!1AQa"q#2B$3RUbC%STrt5cdsu +&'()*46789:DEFGHIJVWXYZefghijvwxyz?괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥* R񮗤%Č́ +kzM5\eYHa`cWUkb2"VQ䥶"}+23Cj@DMs<ף2/%Er=;T4 $O,YemPIpj',%d{ F8%԰@ 1Sjxc HЪ>"u;[~5ym,n,a,fGVRwDwR}>'}Kl%73)nJ(~F {ş+3 vrFXe&8'qS:uԗ%m +1HG*6HQdD5`GKh=Fݞ ~OIw.nׅ/79;qާkˠJAd{#V7OkVH( QݰNq[ .tI$ӴD OM"I=qQ*+;h.,C%cxl=sڲLVbczrsX>$:ݻ7ʱ=8oɑ9Ȥ6u1B&si8 +;UZ4DCrM rA{ ǼW2Bk?8c>UIP]KnwFe19pwPI8<ƙVzk%R&*C1JolI=YĠ`X-:i,%|*ʠάn2aG8Yۋxm#K,BEC U|x5i^y:yV=& F S:uۤD1QǷJR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥*zmΣ6aHoYA |3ԍm-a6x8+=[7ALYmj8 Mf>&v0"s`pGSU*v2`P8M\}:KK;)ar_$3l@)wub os%ĒgAn̠8 dw{$Ɵf"'`I$r=6$kR6bNPH \jh"9"|*]JR2r3Wnk`1Af1!6#n0[Aڠ5-Nx[aK,@r +_ |) 7:"<ڠH<5pӺ|z*P۾jeņ6iƒ#?H;\69cV[@( vJȯ AVEi*0x w*iZvR%PCq$#zTjb,J3f9:2Ak,nXgE;03[,,ΊλXdwۿiE)xI7cq*s,ȑI-$yܙB#3mY-cjЮ[,$Qx$=эD7@|g |7*AEdC!N +)#w: >i$_h2Xm*p~Qu ]YbipCǵS*GNH>޽ҩf\/sqPsBjǭbYIxdA'ؔ$sY-",w$WsBp2j"2GPQV6+m)TirBUv}~Ѹ/9yksM3^VUq b zXn$V̑3@v\/s2+1XD{` G'?H2p3OzSp<\&I_hp=x5jzb).ȣvR&1L|Tw|sUM(ԣkd9uJ{`@>y8=ŨUGsnn6޲ZEB gN3UP05BKfPVhCMT `sj`UHOn{AEkZv̛P F+.g[ldϽeg4@iJR괥)JR)JR)JR)JR)JR)Zω4olU.tn|DcpLriI#zr2K/cdxQ z:j{"HG'[VAA< caiak04F3bG;G@6:e$T7*&EA^]EL^Szj9:t>PZBxR@VEUUޣȂE* <tSFuk0XWw'oSTT,4CuhvnȒܒ<}k.C.&%ܖK㵶eDU[/U1q\z72w#qskN7z`3Q6<2W̄%i`b{'N+xEڇ #ϊh9cM>9surqr#x 'kȵĚ1FR;iwI/;JG4ַ`@Wd?-c 7WAkˈcTmFNj.y5R"ebnDAq?>jZi֖-TF z j?A7wU$N}*"Q8,*ܩtϟ>uZeTA*k>4H5ǜ)L1UPBxX]\*9gok|vvpv2ԂI梴I Y7,6DŽ#@߂ <,k + AuY&Y\h,{v>A8#z[TEx!Tq?t,T|2[xn1ZF^ d(r67#VMݩ4H ذU4E-1ts"ن2-4^at. /XG'KR(괥)JR)JR)JR)JR)JR*.3ygmc 0ʣ׵K|5P0dln1zv4Ls&ǕH!x|Xgrg'=+ͷ ϺV2,pxjlm#4!" bw)AMZI&}C/}(P{dfR2FA<1k,H1s"HDb}>gΫ-qR'JWy;|N*$3]%sdH$pJ}燭omR̆HPTc!כAwq6ّ+8v%=Sʢ$Ndc8VöfV61~\d3h=F79ܟ3V5-.-Qd +8tt;]v`y+6Vi!ƍBv˂N{^ a+9^f2K$,=SV' +c$`+}jJXB*;U43L҆= +ݷ`yOC5!Bv\ 3ڱm~ +K%2*JXȒB1gwv5cEemTJOv;b|;@V2:q;1pqR)JP괥)JR)JR)JR)JR)JRyg 8AVy혬"gU s'frGu 1T$h9ҩT yꔥ)T'V2G*)J-*+Ve @NOWJ(܌d#jJV=yR0Nv +9=p +2UAZ+*}ԥ*ZR\Cfc\(2Hp#jRJRcj%ejn`sYg$W'i8>JU|,BN& B٣iDQ~RA;Rgyʏ ǭ_*'U {cTNn`7^+(ȢF] ^X xTi# .{dw)V`wJE} ` ^)JR괥)JR)JR)JR)JR)JR-B*[hY~'iDlfKInEw`8O鬹uid;Ł/α`Fj?Y,5{xPXrE(p?0Sf5]~--Y⑒y%(m,>PA99k"Kg,OUCeeIIu[)LO2N p[j^[0X?cC/kҊ"K{T$zȞ];al):qٛfv\VZ@C`!PgRrp~Y>"%52w*F!]ʒ ®QM<{vd!X+w1er^tUUG+buL@=S=mV湌ȑFʀ|(Ϟjܞ']Jmw(ۻpb@e+V l,brj$BeGh%V>9Zncc[Aa" .UPNI $M"j|9Ha"}̹5rXIaYJ$Ȳ,Kf5W Zlxn㌌fŤMo~"C$)p{zlukIhf v +)H9,"+ ː6v8+NjQ鍀Hխpx|CE$l( l8?YđDnJA1۵'g׸uk[{FFxtedCRpz5[ ;K['ļb"q(F qR6Z\{W[nY##vnt$G}? I]U}I([ϟ˷fii=6\&O7YV)Ip0yvDvpUvYmsބԅZDHp}d5:턑]$^T-XZ.uw}}Kѕg64[)VD +n7U%=զk!;WszZ2ѹCpA^A]dj;JC ݷ,s劮={Rh&X pcmc68yT2i7$& H5'X"«2ȂNiX\BCqʑ\/yd+I(Ĭ#mHsǯj4:+c 'D(r0nUlzq/6ۺ3TY nF1ޱt[yγݵ2DCR0G{5 mrCebc,Kc>:d&e -bbq_ 8e$EYtLKPB<O֦5 "4!xH(0PjV&蘥E-b +(PST:4T3\,Sԍ3G'EiQY[ +bLO^FTpB8۴VӯX2DH&3I aبSyb]w%.U-cEqfۉyⰼԺhdxmM6$G*AsYսϋ/  c +ȍ 3o8P1ie]MCe)7W=s8Xs!*; /ⶕM"rFwǹ+ ṵm5n!=Añ?waFn!𽴖 ++I G>y5,N m(3 ?tq{Tֶ wuV1Bn:),XRT #8]&pa#Fn |zmu`7+;3Î|+isk0dNP0"yBdjsjS.eaux$yv2cig*v%b+9ilP3)W$5mRS d[c4l4*omi`{vl91pqVejZs. Ѓи%bEϦj!g-'ONh5"Uԍ].'&xTݽDaNX0@vO4eE2H$Ydx>T$8ʲ#`֋ Le4Q-S8.A= +{=xJMjf@3T9奤VhD>#diAy s3L "ybr==Ǘlǵhkf{KNˀsҤƳqɮ;gSWH3(^L1+?vKV(Udc䄕R괥)JR)JR)JR)JR)JR=6=RYN]a))ץ{ver1EbU 8` +`S#"mIa6nGd94turı,O$k&T1J`SVLS)Z1LSF.;#L%{/lRx)b0*LS)LS1b' "Q26xcbP; +)b)SZ)b1L +bT1LUiT)bT1LS1Ub1U)JR괥)JR)JR)JR)JR)JRLkYQeEGhX#\r IT2@8 sXev-l6er2WG5XQ]\=䰴bX+.Cc343CP6rZ(w8jLҙ3JS5Z5;B`5BU8y,iS4)Q^'Ԯ4>kp]Ii|sW.bb2$DTD6['+Qt]$I+Hಪ! +pK jy*ʷhdWD Pʹיwn7`9۟,TwIu%*r2d8Byy "V=7MǁWfe@pqY7Spj&T-l)?7QZ0ЃR٦iuy>~iY*iS5ZU)Jf3Nb- aLj|O}_gc$FuN@dcRVnuiu[k##;A\`=R)fT3Bx. ˜:ElLd|)Ē9BYe##iokN7vLHcr`YA##5b+ިҕoJ?Vn.$YKcbẋwvk343Lj-GV{lg~ 7Qʪ;pI9$k)JP괥)JR)JR)JR)JR)JR5ٍì6%aCǝk֗[:r$s!d+pYٕ4uQ_lGb+x֦m6im{E >B.ð#?GW۩=9wYgA⫦ݷ-tĎip /by9|f(!9a!bQXHYTno&>S2[:DWVO6K) 8ˬ^+,<>Ӧχe +'z-+Q(-$fTf'98u) ՍճڤKL] pߵMll7 }Zfk=զ"{4Hk%ެy`6ه=fJڽsHvߖM['yڦh^\gb3cvqZk&.4Ԑ4#ȫ; +A9<4,/y"G*Q\GjξYḛmԹsjC :|v昱31^<';S\?N+^Xb0ʑgȤYvNгyc>S@~Gc mʶ2ΣH'P,.#2s %`Olj].ZAs4P'Soߏ٨}U(}ǗN~'Rxya1["6%9$dz~QIپb$.et NA_nOiEC!,8$@ʱPK<wnJz }׈MbcXDG +vRǒH>gK8M⅟` ÂF29P?Q}+G2nfMة/Y/&o~&Q#GG&5O Y[) 0*Āp|RB3ipNe pe*rwmQZ~Sbi]&(fd32U.MY7LS1E+h1qv299 owSE #p} k&]}*ڬrDK-T$r3;;d)Npw}錓]dd!HTW\~ղ,9z[6vИĕ2Dn:%M)!hggx `b쥐oI__aeՐ!p<ʃXZmslaTWH9"YX+o#9i~R39)@괥)JR)JR)JR)JR)JR}*jKYAPEG]x[Cuw3e:me(;8Ϧ*j(TQp*6mYffS&dV mvlqnEbEn<ۺlé S2[Mu3:h\P&929M[YT++cp #qIk"M,FL!R2$j\p+VңբTrU%+ʷ<BqX%\O,\001qW!;yXFX*b rOʾMB[y3X 0p}y.̳$,8amRYT33ߚK !38"5~\B0+N |e>V>d}qRV%ic + rj2@7ZW*A lo?6;>|7-K4dycpLXgKC45hv +~$׿:XGgL n2@b -ڌo@ѾSN jbMmp tf]p%XGR6k¨ ]Z`RB]\.vXw85e-I$d[yv#ݱj#$F#TN9+zjݦ8Mümrx>93].gbUvPG9 <9:\ 9ˏ*\xe&[B:h[.T¥J#oט<-wbIC]-m7y̮L8TJUnqiGm-ܯ#x)1KmdWn !{)ʡp7&hB < 1^H^K]cU]{wph{%BWSaEݱ@ۑw|ԥ)JR괥)JR)JR)JR)JR)JR*ҕcR@I85+C"ȧ8d`A"TV)JR)JR)JR)JR)JR)JR)JRSZR)JR)JR)JP괥)JR)JR)JR)JR)JR^a6ԍ 3rp$X6S##<;@Qg8<㚕E eHCK;Nr@uMu[q ;!Fv嚕h,Do!FX@gOz&kKEͶeqCH9Yk]N-9!uI8,FFs&뽼QK;&5VT YgdT'5t&{[zqUzw 0GM +EwRs7ygHܹǟztXgYd@, =[^SO8'thf۵F23# ԥ2rDQ F!wM{DI[h`;v ouiH&yI~P@Lb&I,)JR)JR)JR)JR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JR{m4˙!J>ȧ$J9#Kn[Y:Ρ%-TP6czfX$+G0?lYe+Rذl/.Hŝ3c7Mgԅ8xcjzx#{#NW#R-mntc,$ϙЮp\)?0/?In"mn{dG mRy8yf<^:;LT;ޫ{n?vYYY %f\*dž,bk)CtdXI cfz} R g;2c-.sPc5^,ӝe0"Q/Fm:N;c"@*j7<܏Dw`(p6-x3-[Q#}o|Asw7Oi/Qi6=r=qQ>gci-,,ѤHQPCz,X 4M\ڵkucDUgW .qyy4qoIcPrzZhbXg̒Gڇ#' nL2%nQ,X'ϵR+lmle$ ?.*3Ec!(~mxjCU:u^Yf? J'.bP55/]r<[E3ol-,!M9[|4.र O8zstq"F)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR%N򵋱^~)JR)JVڊs 2 pb~yV%p2N'œSH.U+_rFa'`9翗jͥ)JR)J)`ShvPbu YU:3$WV~F5[ /bxyT0 6LS)b-b]FKxe1N,޽VMnr`q=k({1LUiJR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR o|gb||BfGs])JR*ڵ5փQ7LӮapTABs`ko\djּ6}_ZYn q,5ODڦ+Uw+`m<?P==Jwܲ(2 7lk)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)XjRIRxު8ú6er\̪݁ `HJg[QNf)JR)JRuF2.ޫ9QNw:VKPUP~{jmakeE,;vncWmG!0ވT22|ds\ SjKr#j1`H{o-̧ lQPnF[-!3 F?y22G|J9/Jֈhh ϴ NyԎ*6]b z6Jr7[)JR)XzuY`mgJ ->?_^"Z_v,Ѫw9]J8-I_ɫR?R_^KkB6\~E DJ?i жi>!z-kk}sf{3280jpAs^a|Aգ61ŪsU?~Ku#)3^ӇO?i?6Z|5SE_ѪZ> m[f{7200jP(6~Wtz@獶F?X~L׿u"?SnOJ~Nt`?t-vkse{/00j { l?5u~I?uS{wR?k58Oɺ?jAoE|G[o~kksek/80j ϯ.j mcU:?%k ?^5Oɺ?J~NAAoE|5^ZAՏyxG N@y~\!?->__Ce`o6ձjyF NAח5'=]V<獶~-W?%k ?^5Oɚ?J~Nt O ѷ>?5WE^Ѫ6ZV9mcbM  +16yJWU9mwV?k5H~C0?j oGU/W??j6Y+'f[[^JWT9m\G SfAu(?S?tmOFO~#FSi%qm2>4j~z wRT26԰I\"ZR괥)P~{o]HbN(U,d^!IU/5MM' w!duG08p;a`EFQ "7'dOG*3\wW +5g0u@OaVJRwֳxN?)}j%_үW}']` +`jmkGfn|gKe";Rʊ>ɫoƄ\gc0D=W<|~4Zz8[?2*)JRW7QYec,gG^~uxk6M\,ѫmgV㏗<^m5 96)f۰'va9K[I +sp'IX*f<$ +Cɥ)Ju\kZT'OU@<"=èɋ(?jrȮAB3^n.6F +2IM>Up{ƝhoyT)Z^Ӑ!{dJ}1m8o=Þ~IT3޶;>JR)J:FOW.>6Lhϝ@)FgҺ&tж:,V۴Mf_\x]X=iL%Ԝ6 'ucŜCH\kei"Bl.[ǯOhȚӵa.Ou5աzKiݮ繕9E봯vdOA[_mtXfXP9'' vϙJ(5r(ek8ARx5;VZpC)'P֦5:jjb#Ź6<8n9ۏƽ*m?+0cpF1kĞ$S4@%FxaqF i%IH8 ۑ֢?-swce /(?C98#۵\Ŷo%1e7pjֵK&[XF=I}D9m U#1RU@Qzg5-WJRX:H> +||ό|C5揧jG{=m!;eHcUٛB2̸9*Qnif;9v`sYĚ&-梨53H8 +2ʼqQŗ,+"@ɺXp' c5ލJLXѷPu`ǰ3M_Eeđu>$n`aӚljo5(tv#i>1+#D ڍs,nFW0S*v88l֗o_C |Į q\J]!""&3/F3srqڶq" A>] 0D$W/q)mG-ȯ(Z%#|n*}Jb[q_vp=+_|U.`1RH%*NWqq vc$cIv2d,Pq@rpx{;dž׭sk/LnGcER/:D;Z)Cp7t9Ҳm|A.wwocm$ [QkMRh#A#jQU²I{^4 +pa}7T@U[ɡ]u!G9gkawI}H 4DL3W֣[ (гجͰHcVg%ݥiGt)%q/Ԯj/ln`;pN*@+vot)Nrg''!@<-e*r7ϩYt+^LjAco$23p=V-Ey iGl8^=v/I>{hv}B)JRfα?W$?Z [ðMKi/2ȸݎ0c>>Va3DGX4 a;Ğ+ŏ繴MR8JnPT'3OsV|k>K;Xԝ$mю~\{r1^t GPխYaô5^U1%+ZIY-12muC'ݎ/4B}V8RTÑ&DŽ }ŷ>%=7ĂmL˷o6z& İ$,$Oիj-FdS'v[pk5fRA!Upy8CYU-nIJr;fJ( qQk ҷ n8tN[m6҈vB@ b&'P{د-`B{ yn7?+h,eӬw"8f$W3rP3{/Z|?}^Y7FU"m#7GyhiZEHK&E!PapW[}:wH )c+9@&'vF~\^n|wsMg4n-~8]Ztn= K"ev<McxF_g3*HX0DV$ιewm0Qpl\GG v1Tүۣh:{rX.d5 ?KNHxPA1;g*v^ IQɜ(ڧkRе rRAN&B9b>R8N/u۽Ahc [qϘɸ)88g˞kO<3fi*۳#j6ar1ک?u)>(0YFn䑂?j%XJ8Q&vg88g@-#8Jt%bNz򲓎9JhԦe{B9B9嶕-$6ǰb>Rx<Z7Vw2Ako$ [r˷b1<+dž/Un "XcqQ8U 2ꍩ HV9bpJu}ji&q Qlͻ8V.3}=ޟy 6& @1mY~w^Kj,Ws X<7wvFܧQᶀ>*ủ})l]+ћ{TdjޅwZFz.;'f0*+φmGL&0H l۔.GϗYu %:\O&T*''TWWw_$B 03:bTAϱKLhCΟold߽>3Wo^3id"28}gʧs=:"A{u +N~مV)JR)JR)JP괥)JR\g.RwOm,'-CAV@:Zc}`VJRh k:˕‰-c=œVk_!#J20c6wY8Ǖl4*m#P? cPWbMOLDe2# iC֊;8F(N3Sԥ)JRvkRsO1TpOd+d;yתRBB#rA"R)JUD VlKk(8UQrO`8&*OB1$q񫔫Ps8;X6Vk2:'bgӚJR gWRQΡ 1:XjVyW۝6=pNqW wE"V ?H* cU RqAw1.vy >mO:pCjWkbR)JTWuV4qHU϶My+ʊӻ|#Oqö*18 fS +)%Ȩ1sVEm.J$G ` +GnkxIv"N +xⳤփ] sBp$uy}m-ޙ,nIR6-U79 +}Edˮu%kUEU,3#q$uR='@r3;Ty@*IBpfIdWpY]0AWwVKy'eW +ypI |SRI1U*0]f +85bXy^."dٸ R23*1QHN8=Z>6؍@ʰ)ČY7).IC1{wг2$89&%0 0_>Gc|Aԙ᳋cCF ( ,@15 yu}. wvj#nLl7~>`$Omw4mh̳&7UC}A3+ݦΖbHXȤ``<&ωdKm$_l"hq Ǟ8ڍm^[m7sن'|VmƳ $q $j9  v/#wDudϼ!OckErG #YKA[cSQ#1pȔ*p͟Yuk;HzҤj4EbBop1ےEYT6_ta 9]HpVGc iVKyaS.Rs׍SUq5C$HHRI=@5 ;]Uxol$8RPlnpADE }U@.N'Pfn!9 8۴ݜcV6 ,u-mOaА#ޮrOQ0FT(-'|~ޡ.au3EdC@*2A L6YfGE0GřvlԴhnA,$Rs2G"M)e) Rθb0A'@e;Xz  9ǑP<2ePq椮|A Kf`:8L( mfX)dIꡂ<sJX"Ȳ?/|V (8;#>u@%ݻ'$lJ:#![aI$Xdx> dSq!wpy+Y%h ln#5 yŭGg #Hp̈pߞ+Ʃ?kIPT׈G +9}|S\]̏>H;xjk fb? +9dsNߺ{q{T^±:LcFbĤ@A+L{]5,;dCȜp~l.[dwiEodut eQw ` I|]0u;. cp%1Y6+\b̄ 6XҭKm m^hx*n[3p?Nk"Xk.ɴ8Y،8 z@PѕDm&3=1!Lmůji<R}<~l*tf|qVPz<]Z.>Y-[Ƨ)JWF?&ձv`߈ k @K0HxWR)JRu=>-VkYRX[Ǹ*'M4xnePXzl*wb;yMY+g.-&[8njZk:C$ TH" +mϥGMlRKLP$ cja{a#ۢ^9G)r* +4vyX +UA$ MfY[hwJ4\(\xd*^\ivQKYo 2Qn3Giel/nOԞ+][ΖMmr&VdV ڮwo[F_F4.n*jn9x ոI!rX76ANqf垱=Z9!24dvBc.}f-[=ˢ"JeF-4T]$w{khcF2p#$6y0j5fy"U~o2}s{L%A$ARAPFH޽MOw=[ RbY;Vu }FN?V',0Df*wg^U:dnc Ʉ2$y`*ypGznѨT(I '㱾Kv2b20f_#!}ɏNE޲Ah)X+s95Ko5'%Npx\g4H,HkI2ii<%\F30+b.G{ڳ.'J1[ёLxU0l>$QhlI@DDI㷌gsYS`%#[e%aX +NW}+ w[ [6[z;y#)JY3Z\G_I,rF%pLap #ĚI%RRQ}54uih^XR#$]M=I^ ū+$HN2(e;8 cBVPH^h+ጁòcDjiP$m!gYKxƮi0]XQpQ*#8 ĖrNyU1%ӭa + NҔ-jo+cp՟ 6es{~`5'ZjZIR7#R)JR)TV)JR)JRU+=B#CYNU yTRJR*D9!X`8$y ]H% +½V5LېU0G )njT; +JR)JR)Te=Im8@qY)JV)JR+QhW)CQv=%FA'NOT*)JR괥)JRۏuV8#;-l!5%hP- Tu!ZL>!_pKk=6?c)Q~(C6v|㒄~Fckݻm1bk]İ~N9f9U sVJR|i+C_gӡ{X"vC +dV,|c:sVJR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR$uT/&h4K\g^{|oKOAwHcS +dVEii Ml4*m|ӺT@+kc4dE?+`ZR@tn>RTd8޶`Z5x5&R0Z+3X/ׂkc)JR)JR)JR)JR)JR)Jj)JRU)JR)JR)JR)JR)JR)JR)JR괥)JRI+lxKF!#dSF@ZYbbHVp*R,bZYW5wOtbRGG}($fVl +ΡcUkWk/ү#Gd$avl;{LM.XQ"}ֲX= tmG< +&M ቐ;S@ǐKo nYRc$gAPIXWOñjG4N& $ + pMc바Kdd2\JyU!d֮sKn'$s9rT`*!#U@8qL՛>&"7.{p#4H"DlgQ$d8a0|F~HI"cfg)uf8>| +TO2ų)YA۸1XeQUʎ=%dBd8O*J R3YL7H) +m*Pp|Xsͤi% +K /*(8 'QM7Gn0g$. +''ӝ=(°5-ro;H#l7qU>tVwu^vv>k6,R2T؁X&uxE~IT` 98kFZ2˹+w*jt,FBJaCIҦV)JR)JR)JR)JR괥)J?3jP^ai nʏ!_DDr]R9W,g3$GLBE`> y! r¶ +T"鷈F1?!xiĚU)6s:Rߴ ^JY]3{xOA]TdI?YU. ++*}?c;4ZuRoD?!*>13Q:֮a, +mݷ>i]-bH1v +1|eJR)JRJdP0$;EL`7 dT)JU3U)JU3*ҩ)J8j)JR)JRLp>tj)T2*)JU3U)JR)JU3U)JR괥)JUa *e.5:ToUxW}KV-$ZoͬjLKx +$N}uluu-lkvZѾf{-WSʓ\"{c'9"@Jʥ>VAS5>W\jwؖzwmPTc㹩N?hI4KMx۫ u%;ٿel庠RW۟6;|)*qQ~}^]BeŹGq㊗=WS W! +ѩWpoK^I׷]osnc9J|>Yѩ?FomvZie*]bFP5c암28^Y+D.[V !Jy=f[4{jxsQa +VwBҪCn+1r ?]\]A(8S*:lq;mYNX붒o\Fdlq@9+883kN` +<&e2 ̺';^̈\eB1}Y|M#\I]7o{n;A jMG38ܒI kҬ7<FI5< J5h &2Dth@#5iwbX*KASJ-:0@fcTyOԕDk)GV8*܎ dHSdvɭ;SISTi&KiD9wa>Q~R#ߜ!әckS+wZniwf<"yA/`{,UK<X"1fS٣tG8Go_*{Ae)C:ƆBslvyJsK G^fMmG}A|sVFk}wc$wrRQ")FI^djs3n:<fP@㟥d]jp (B˗-Bb|P:mNUDÉ+?4mJm.'$H'4FAGV]ou"Dt.Y268J5.L蒩/KcUP3f- R@eCQ`=q^.HVH"L)+ن$|=ΦV-Hwm \qm|AdD7[_#FHqW`.&WHB.v9 ;LJ^uĻ7(pOC"MvNG)ʗĒj$;Cwm<}+h0sQ&ֿ"ۣ$FF@_cLZHv[eVܼ'*bWN##'`23VSVL# 2OH 0dXSdrbwT(A9*lsVoDm_rW<޴ Agcm5I-̯Qq1*s"a$*/sԝ:sB[;eIVHFCjM"'W?T!;JB{7oFXBa@Tv{;b[Kf1#:b!tvF9*8oՒ߸Fy8Y$՛M&C\Gp>f9F[أGq \W1Sb <'>±潓"ݒ,Ц?*/Nvz S8ܚ;iV&I+HP@,@^ZRhx7VRz0Ehj6/Ip.~i es gX4HK''z5H]B "!x;EbhwixA{If$m$'>+:, 4 UU1vXY~Oo(Z,M31 l5v6CM(;Qy9<޹ *I-!G";;%T<%2$`*Z&b *{qY17Eڨ$]@sa&?kņKUJ˽3Ix FH*@qV棼i{יO>WeC K"(UfbΥTI H4\ۘT-;ԫ 2= 4dዶr6uB9_"/E f +QO;#wRDkrʬ2 }@8'9V7kY{TJʹ?؞{8X@q3Errjփ ޏE6Ѽ7U0RXF,F ʣsD'iڹ#2G$qR0^%Lj:ȲΛdMKoQik>B7,uVc.,pxpYpjsC 1۝h`vIMJ;Գ ?j%Ϥ_ZH}HcºYi$s3  JFͲMF[l`PvO>6m5Ѳ3yn8![;r*TJ/uT`QAPc'&χ.yLI=P5A: t V(ge.݃9lkUK}&?`v; +H# [5hDHq3leF?hI 0[ޤ4}Boej1#VUdcxZuP^ӥ&np}Mozt=L{S!#$b3lv + 23N+5K_c7,G*39]|su57DvUB6ٹ:|`p @\,J-$G$QhPI$SWLm,QX($n xU5, dg/LFh'N9V$8$Nʶ0@DUc| կFz6Q2vO'ڼ^ORab_ i p|V]L-V(<`'N[X )5SB &RycΣNz{I[NKxU$H*BatS[<kXՑb'MwJlnr*͵[̟]~K5L/b7婪R)z?z+)WCaElЬ罎,M1ܒǁ2N? +)J$bIw$)񾈧Z'KX2R;y$b$=5mUmi#7݈`O/F=2;8YFI + 5,1c8 U78'`Vb d1ԓXYVI,jGb9RC訫x M) +:I!6-3ͨJ[M MF2{y&s 3婀w 7cJDN.SH@cRT p9Lqmqm$Wd:̲J\a*wb1ǭb{Cn!=Auqڝ6ʊqN ;gUrB;NA'U[bYpÆXծ&rj;TV;Y*TIbOՓ@JGv 8gmf- n o` w_Յ.H ;#k\!Ze7*ȭ W]mqju5W6Q<$ޯZzd[kQ^oul21g +9|*NUam k@+eR2#5z=v;@,Þj姈,o0f;kjBI.($pX⛔22Q @^c֭e #79Ub6&"T9.r̹bm﮽$bH8 zKondmf۲=jm5dvD + xjOqaڪ0!=]ZIX #RWe*C+c8 Y2Jw`Iw$Ŵ-odqM +n^>e,qP]ǭ1FU# "#{1p*gzhݷ.A#spǖ{w5%Юmg`Y^2ѐɃ烏QRvݥ$I0g(w%I0{saxkk* 9rk"Z> + 8R@VMvDPK3=I5fS,"|U{8׵Xz}Kp3 sf7')5x֢i10w#!G5H5{Ke1dH犭o1܄oVVG\ʰ#j?B<"sʪ6%qϾ=fYnfTTa><-rP ln,=Wx#(S9_\Te@lzE @ AsU'5itȫ/pʮpNk1ۭ]\c.LXh Tޡ € g +N9⭝f`7 2a1mli΋Z=ډ?8hNsc[ w\3Wlu]E8d(VFNeOc/Kc;8X7NQd$pp7UbQfH% 2F +v8Fɹp#*p>`<1Ks4XLd\(`Lyυ:|7wM2ʤ܁'>Gn;*%M(VI,aA#3L<%2zVHEd4"sr60xgm7BI@l' K}gj W/uK{+[#c;P{v+ؖh\:6pm5KI.ZfC2?8rG5m1&B!;fIl XqG$0*Ā)q^ĺrf@19I8v'k)+thȡsβJR괥)J5w"`#PEP qQbW*FE'v8UF'&%`Gu<5;JVwEhĖ) +>J֝cf o1$!,3R-JRO.ϷNn?N⭂)_p~ᬭ%BY[*@J"d0_KJR*q\[p?+>XN ?e*|1 =Ԛ\Igcu4@KyY@X)#VpYAkYa%2~c6ܶӞp{8Vc.;8)Ӟ@̰)xXٰ7`dA$lXd2AM[#$sʑ<8•Vs^-ﬓJ{kLjNnfU0F\YΫ::WL&V2'qbʐ[ҲQH2EcuW$,C*r~Q>գ<79.2^BnSrXvYV+hmX:end%ձ`q*C ;@2r}F$q47e0=EWn Lc{kq] lhU=w24gKV7; +#,Js?Z ?R7Rdʧc% ^N܌c8"ZX2I4K"3D#n$i@Tum>âU/N9Uw(0Ҥ|NXOi[vdsM[i7KH!0vl3 e5F`{5xgT"|! d}$iQ.;L^$IcqՓjYHmcV"a7rO|տ^w fdrwCʨ\nr8&t=ނt_`{=diQ[.w, l4.T + ~+b8n R0HwY6֗#8_x n0ݞ}qxtt?CIa0NPݸ#z\&{ 7dW`TU$WcK^M$d퉧߂<1YGи|is$@Ou2¬K H%4=ʎ}[]fMMηi;:s%V ~v +n5mT${r89\ +<+ưIs^G-#;w2Hjk}+IbQbqҽ0Cy8U +pPvp0kmd`FE*"N9*};Yz5)z$폩6cFj.#0WPK(U4l +A WǞ*;U]Z-.:|ѣ'L"0; کjWb[aIO*YC*nT2 +? Sd+q+Ǎ̱H5i.DiHJ lp_o Vs,Ӳd#z=旨tȀBev z֯tq#CswCaX1jK(pWyݑY`}+#f +vk>u\Xd%wJKIf6 rϏ5ۨF`2X6ߒFdaˉFHv\w7Q鷲}!'dS~԰{$׮uF U**PH9 nɐYO)Y,[ Fa\ګ|cIĖg_>Tg Mj6s a5^@<-d=ת1񃚖mĖȣ/~7I$e=lm$W=Mfe sV!vL{v@l0=IxX]1q@@`XrMDkQ^PB $ z[w)0O ƤEZRlpw8\#MVR4R_ɡCP)r~jׅ%PPcyt`$UFF}kF}>pA@J!g9>*)JR5iXH;r\2s):[~3pݏ\w{N;k{bAy7Bf 2I85l .p zՏkVb,Ї(R9I=Wec\ dU$ +ʊUw)ALH xn PIsV wqU+Z7WJ`8\D%e2d}jyg b$P:jGZr+M"ĭh"r% {&cW>]NH_hFVǡ(fE܎~ݳGb`g$dd~5h7ھcܓDftd;V\:iHʟ)1F15-E|=berd)~b3;\r}*+`$Ì*?8ϱϕJPS)j^W "}wM  n괥)J괥)JR\?ET둣̊A-*[ҕxN Z22fT2xسZ[£&]B8ڇiJV[ ;RXwUbc?v?~o9'U yIcɩRxrKʸu8A?ϭ)JRuÍ>7ZxӴHT쉊C6Pq^=/JSx5ªDe"ݻ|Dž{xX.gs fbla}JSOC[/\`dm$n,j彄ڥɋ&0P` ߵl:Zn ~|=ckP°TBɖe#|>TER]o<`ǩ$s{y#EBN3qۏ7En +t-0P#>k[,R+ഖLG0*@;~ $susފr?T3O_Zu,MGԑFqpIMjP4YQӡ~Ш#$s7W/WD<Jt2y!aԞQRbecSOP#^mFz +vdr{H뵂UI.'cSy_c;-شr3eAml @X<@5b7_)_GH0m>,s5$$~ڮ߰?1R>FULjGqVĶzޢ-UƓ U@>q)n+2 > ɼoFd,}q^͌puf2Kg!HYT66Z4 oTn.XqFYH4Ҵ;+SWD-ݹQ +zJ,NHUQfQ e-QSO +#Z&M/J֮P4e7U!ǘ涍 +Kxc +.dʠEA,;棭a+duaB\Ac1YQZm& D%2@}~M&R0Q=jkKvm0+(_^C0}5}kLZ6%ɳ=S9XKn7'*;0dȶڝ1R2V,FLfe^mBߨs# ۽6yyT^ @L" cla+?IXp%fƅ_(hcbǜ9ȬgeXИ/zmmXm'jB/sCu˺q涔hVE. `XؑW#Ytl`H=m⡼;HF-ǿ=ǖ[N[bvK/ Č=!N]6M=ek6`|Z,I]jK\d$!A9}* ^}W2ݒwKVѣ:%dfꊾՖ(򷰴 \}:?J4{He<=C+i6N``C6#xB[X[SKw^DGNկKEDi3gϧܵż[dC*fã1nKUVV[oضƞ=w[n=9[(aдkdk-!As6Tݕ$I7SL`bRA qkO [E1v""cؒ+6]xy 9lxVtѨ"+U|ɽx9n3ֳ[5'&Іڻe}8Q"/1Ȫa cfv^]hQ@<PH:w$|V-mDA]2pw"3N,'@˾?# %͈]V*!ULE'`{}bbjdt&=_*kT;/UQfFHk}XmSFiSBRW By$bO U1fkXKܒ$'H@yB™8`~Ěda4Bܺ!T2׭oV߹2ߡ&-5-GLh$0„$qY~%7|т q*v>}V[];W +n~id)GͫLfF/|Ͻ\-ms4j& q10Aָ[])JR괥)JR\n^|hhlb I)UR)tPG qEmĊv תPzP6;ӌTVYM)'Cƶ +V ˩hM&|0#wTҕͺVӟZ9''|٩)JR76^&ɐ: V+[' X P1+iq#f;v˞7z2| ֖{m1Pz^:uB.c*Yv$U ޶I{f\i=Pc^i +H|:qYƱKn0QH_~4X6 + Ѵ#έEXC@ك2$v{ɣJ2GƥW1UUz)zA~Ǒ[}ݭ%ʂ[+'5v].h +'RjM"YcC$@rr)*:-Yw2x߽{-o^hQʌ)es{vG|<{ݽ)f>gYid8،|{aYko‹P7}q5m;ʹ] ۺ}5ٻn15#I +8v^;c\]6DXP,@$ckXӧ +\09ʹWS taVCXQ@b& +ީcko,T#vm0`FϭdZEf8QQsکwg f):##ȊkYY8.Fzn{ +Q^;ʪfCͣ"870Fl*G$jVL5MEva# dJR5q i\@Fwj9->Y8-RWHlrx'"ܶgg|?@WH$hܡ 8*R+XIw 㬺RLVϧD;ݼq9jRc1eF рjV)JRUc\_Gm40ޙS\}iYZCȜZ4==VCQz6.DȊ]I(7>R*)T5yY7[,rBr8;q 8kRڶԭܪ#{b+;%VG'sU.J\Tاȥ*f5]B)FY~АFTlX5!;k9#>x5r(괥)JRZuMI^H>LJRFfDF܂*+Ru4[1uSOo-6B}el*WM`VssXHqinp +yOV\+I)=H_⭆Fx!6|2 }#$]Ц:M۷[Bwg9 Υ)JR)Nw&UIm=kZytRz)ꆕIr$tQ0Ǿ+*5/.2ҥhz"2UUpFb$y4)k $;,P K84taBt7o|5fə4aC\߈ܡ*g ۚkmeelH+cӎ)u/5щmL; +n!o/?*t#cn|i>bÊw6puqY*yVFilNIwbZ8 v$᳒3.Ggj6-<`~n#Z]CS؂h.|'~&g%ç3mG-Ƒ/'A=jNJnOGƀ3!fpvj3LX)mk1zV=zmv)9;is=I[%޳)R +pgQ?.@!EpG![9FUe+w3=+;3HY ']YKwy$hc"IR6H;ϕWZ;fC,{۟R<ݻ[!e J|s=gOof\J),絖wRu}ۺK᳃cm˨9[,dTQ*mqs^/''^{i̪ *NGwE_={,HzHm )';w?JDRBNU0ZlJPRXH7r귶sl=GxVp* *WQ{_zot*#>c~l[yYEE\NB௡9[lYTrP6Y[ar]ΤN!GjmMz&2`s?J휼Qw(H :,'Sbf G/x(XZjjڌM,!{Y#UUK>{1ܚij[RX]Hfh=3`(8'cIw|`;]E sVV:r7M+2Qlp{ŽD]K2@SBs1+N⹴#Xiܙz鏽mb+9 q䕡_Duʢ'ztV3[9dSk׭3J[Iiè񅕆G`9?+{}+xo~1ekHU. +*l1P ~VVǦ%Z2K!埥Nxvᔕ(s!cg W=^}GNNҐJǹc$yx`_w:}bLpeD|:ƺDVVV^6p?l L< ;K"8X>F1X")?Sڤ,v]]m<گ!=]ޱ.Z5yW/KgX !VI;o7NeP[G<7]A-dl&o "Wc:1,I Az޶E,+GɌX3u}u<o 2G5ɑK O:[ l n+Vo#pkm#07_`b;OOnߍg| Zesq+W{& +Gb?[5V(괥)JR|GmK˱אD&?6z:XFIs ++aҕB3PtliHl$;ނ[!SEIN1U ?GEjk!T;H9IHˊ'mh~u$O6x*|? sM{c%A*pl|6bPVeYH3;MAb"q +3nWadGd1|eC +[Dkee"U]DvGۜʑ#Vhammlx<ۛ0~%XGNRK,䟘yxVPWyc'd, +fNJltFdv[$@9=xjyȁDk<>y-WR!2C/0^|sZ]3Lu6&p7m#}ϩuYDǝ071sL$ի. D/TIGVdI8u hVmjf<.I,W"-a6k0*Qq|{yV 19D^iXq)ݐ1Y7=Ԧf (̅ן /l;$ +dt +(U`1>u%Xlb9 :J`AzV$86rY$8!rs>uvNNR6fbǶYN9=7g@H%Oc+H͙{.;Js8\V!#hX4heddwV--沷 J_<0lh.,laɖ7@7vg9=O$+FWâaVG263*ȶѭm'4"I .ۘϨ'x,fiX3cxYrۊ7f(d GD|2xڒrYMB dtI0);TX#:2# H>KVDCǠ ׎|-ķ(0ĄoW.86z+FMYْ<I ǧӵgFR|uU9O޼Q326UI]^zEIVWCy 5>pvy $,ą uWa xޥ43=WEl`Ev>TV1$ĞXI&i1\UfV QXA ߻Ǖ{එ̥s#Rs8&hVn۝&{Bv~}ę''6S$nJ93UBe`\b@ʒ c@Br;Wlm@GXXˍ9p0A71E nH  lrs\ѭ_/NT,=ցcyjrB:*ArAHz1ݺ,qV)1sTm,5`# FJ$Nuz߳{;yٜۿ=M tL0 8#e)JR괥)JR.#_6|] uYc>0R$9+?VZXͩkLpo孆RGQA}?]٭ֽW[^Pwϴq"JRj#c$>q^!lR)J8V ?h#"13U/T8 2eR($̬{)rGjz',+Hʟ"¤sL5j;]C*<] VQDDەT^j*ifT*LiJR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR?ůa`/5~ka)JRRw2 >e;X|/ۋ}#U _kŮ4#HK,e)?dc g=wj7@]bS P1wˮ`vIkު1 +Aq~+_/,e7"baWi*d`rXA[BP4 *`$Z=ƫyu6 +xF;<%Xag$*B@-'b/ZiKdgYœYm.4u(mcݗz]W-qs#[Mk+ +yO3k+OI&I2V3)\QVukۓ%s% 1\̄Fj[isȭX HvLmSä gHȭ3=UmnXp0MciëYdQnα30x rW<gAމ=dUw܋? +Ԡtqr#X60"= ^Mė?](Cyww]Sԭ-;$LSa0N.o.q+u2ٲT  aM%IoR0( FO`;͝=N)X@fQ(>#$Wiqv2x}ᘒgss{] nnB'>|qRzh0qoZɵ$PYYqOc5ťfk~vS9qfB1btm]FWpT9R~a;)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR+|c}y'fP +\ a9n%9?ܫaf3kLiA4'$%fb*RzѾwhX27d d~[$pG`0{ u>fB\9R{L= R `y@h<VJR+̑!z0EE[rX%LV'i)'o2r{zW/ioffeFC(a0NvjƇgH$d(0V#olH>U$Ğ\ f.$gmg׫ Hh`0$8pF5]5hBP++"pU/ex%x6; 0Ias+xN ՃͿ*HB|fPIb~׷y.&Exc >bAOVo#:C% 0a 8;9Eq$2fJR\}-M̙9Cl4)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥PQqVd"ʊO`]A?LRIF]uKP'Ծgk2unA!^;qBI['ö7Ha˝coNЉgt|.Neq[u(^Ȋp)JVC[_H{79:L/޸9ESۿFT`Á^JR)]6q#V9# 01"ֱMX@mS؅V+]7k&v'4e +EV)J}y$qŒ>#X &>7T^ܐzӯk D#rA8?g֒d;(j]ORIrBF8=zG LȅiB]j6GYtExXCk4\H'EgY<c~r@=>b~uR 6MG<^+IJ,( +I'd伷Uw{8W7v+}fԍX̃;5!sK jFë4;2n*|IRp\GtH2v%23$=*J7Wq٪Dp^+]d,g1'F6reTem7Dc[][eFT> UUD9VP^Žw/*&sn1¯Ҕ)JRwo+Vc&TW ׺T6g[nFV2|ŗi8cjwq\mu`%!㑝FdSj]M`t]̄=H8q1\Ok;X|x%yƱ}"HY~26*-q:o HWFU{w"X jFԥ)X5 C'P}>SVcK=I*.IfREN}WLDpc'u 59[hq:3z}kqZRoXINd@Q56m%]mG)JօX L.$<0{VsxjԄXC*gg Vu%Ԏmx| +;#VL2I$7qHZ7vd6H_ GQǰǽcxAZdQKSIW +\6c$gyIWa\F;gvI>:p$rv98=Kԯm/c[4)$-*|#B;p#:UBhq[lc]jhK!_I&r5bXcqYFScɥvf(pg#'8>[I$7vuy yVf9ce 4l#.rW dVFkW<1YHFPD l|' { -SyRHo5#T +;ޥ&ծ/uHl9ir&鳻67_s<3R^EݒvL"̯!ܑ+_f$OsMC/J`I$ܣc#y}J8kT?wT#V(9d2;խGQ[ +wDl;Q7 wj7hY0öQI4wX7x{N\)$P=>YGíi42[aI#8I݆$)Nb fKg +f]"y'p=+//-3LkNE'Fwu;!Oqթ5yOA,\܉%?f^ǚ4I'?gYI(pf Oz r0pr#zT~x^0iܻ&! 8ɫ׳v U7q8<޹V]jҬ m]PZO`>eU|-e&4w +n%+_kfiO~⬯d,#3h ~ {u#<`B85WDeAn ^sE%[c&$rF=>~Zס\43ʣ ،cx'&RDp1d%rcW!y'䅥KmL x<჎3KZ]N3:!d{jB(TAU0kWR;o"ȱt7p.UGU&Ц-tP̑) pY~I~i;-cri"]7e;eF[i FI|"dS q|]_ȶ d2Hvȱ8r _p#*vHDl\%NMc88<=HNk6i#B}wr=A~o Ż +T1DbɡG4\'ρ XxrweXV-,HbFF|z$ݽ4B?vuB< rWsXk Ġ G͹ ,LLwcv:ݾvJW"55FdgnOd޲|9a2%%eTD\m.8jr_IuNB#4r۟~S +Wn*.L}GK3n.Ķ YWK{lo; w泪m&IX 5r$ck.N6->iJf@2qHǶE{L^F +dp^V)T*YH)#Aka^ji4Pt@@,Đ %[+Ye w#5/>/:Ų4q|>A q}k-5{.YPIl%]@$`{'d%ī`*)޳^-r+^0Kc$6Ir!|Awb$ohoj[t́2le)#m*yVaO%Q\O,&m m`"' +>uQO=NGI03ǥ`ZxSK~?VA n *> ~~m gX{vG }v77UB1PO6b'\5DA9Uۙd|?O$wYu۝BkąPZѷo`sx˓PM[izR:"Uy9x^M<9ᮺj4hUm]&Y6eY`|ɪd[Vdظ$d="yϥ]jB$)]X;WvI%Jed(՗%p9c^a.-;tYr>aę#e6>qF&732YW +@%s +ZI  +$i!?8 }8'[G, {|1y.EӑN ڥU=ka$AL 1c9M?DeSdg3$v=޶PV*H8` Z HR0z jKt&[J%NrH zTmV[Đ@-+ɝpܟKh77vHR@]yKbn8-wULS [IA8.A;氦=#v3;Ykh.& ǫ ЅL)pH8# [XҔ)JR)JR)JR)JR괥YIdC0#Y!$FXsB;l?*ZKmhĨPXG#5m6 .go#XĎ*cU 8-wr[a-F`$˃S~nu@D|eK.4۝6љC8R-*F0 FsX:bA +,~{yTĐbAf,,y'ޫ5N0 Pϟ9 7-Ӵ!X ߨM/r"'N=8߽Vò ].s|dּ?[UtemcگWR̳4LPc#'zC_|%`c *Q'9[lO-3"רs75vOi;\Hl),eycr21PPxj@A=њ$GEhHYS2[K'_模Cy@{"Fv(%Kr9]ǟ>leJQm@18<{|:1gYT*0AFsYV-G* +8rsfұ5iy:o&ؘLoa@ϝkZ>nnl)K[zq<hM?[8YnuWes($s[BI#jnP6S^~I"LaW! 1ک⅚M6t 3(STyi4SD,v^hY\4eYnេB9YZ谅N09,P<5OKN3y#ڼ[Jmlydumb^.*X=^êmS1%hOTyI>gUKk,׬Mсa2w1i5b.6nmj`5;XnG6!.[l#ȃ,Wt-[ 1EbYjv +Z*B[c9b5*$ڪc/byZ>]y:me]N8 |qyD.ݠ*_@FTzc0I1΋&%$/!tÐm8#dZiisRFM#`<0qqs;M0,SFQDD( m2{={aFRϞk2Am{nnپ-vcA׵\_ 6$T(Q\Bt/yEv`rjFavq =J5J00 EA +ؽ5yU;3.rTcG_CH_bL"lٝ3:|84ݡ&b *T|V?>_G6GKdݿ~}:mQ:0I")$Pr7 #՝inm+HYNOCb{ Z"cT: µnt-`u$n re)vǐ9R[%prOsd!MEEH7ܤĜ9C%(\ɳq;oc>dh]5mh6 +{sXG .ѩuGO.Ս6fM6*;syAdKhiceeydB; ԰Ҕ)JR)JR)JR)JR괥)J!FIV,{95ꔥby,ǒ"mߛQGkԷ: C6GqʮA:]F2؂2 \)JR)JR)JR|Y1h !T`rrx5~y +>ꔥ)JV0 (;P$J)JR)JR)JR)JR)JR*fJR)JR)JR)JR)JR괥`kzr ׅ *ܚ/tao52F.ܻ9jm^Oytmr$V?8"*#ZnO ݯMi-L W 2sj_]m=n1 &a2$F19Ki7V^;5tV&ʄ36`Yԉ m&5 6%wdg8X֫uweMG\ڗ,Ea'ED]O$V%eyA<6A$WufԮl"dDz̾[()TЄ:kuU,qv`Iy[,7?.n +nK#r2ŎF1;VWՠ7_J%uY\)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥GJkSZHp$^}eoQM-XR(gW(!JO'WӮnmn1aQȝHR9Tm8+[ѦyʉՂ-}aWv#3L֮dHS(DdFګqܜUom$ۦ|3G|#{;q.B>ICn3# M gH]͐>@qQ +%ݡImԸ1Y"dc,d +B-{offvDW;l|:d@zt*TRB'=|ޙo-lCKy-XtS}y?CѠYX5`Ȋڹ'l=\OkwuU{v +"$(K]A +[ g])JR)JR)JR)JR)JR)JR)JR+8NI[kQ w l@[,?@O5z)JR)JR)JR)JR)JR)JR)JR괥)JV=݌ IaϱġTҕsaS4jNF@#n;hU(c8մw<2u!P0ǠҔ)JR)JR)JR)JR)JR)JR)JRMV-BU20 Iݎ?|1 'Ur;HUb"\> +RiccFs5ʊOrr6w_5?%?TG?)j?DT7?z+˫+5B6q7R)JR)JR)JR)JR)JR(괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)J"S(qs#sck/裙, 1Fp?*3R^ȯXdnǨ9)Q^"=Ktn',~ڧWI-)Hݾu,>T$`a{k[V0vdqzK yn$|PO\X-yܮaibڡLS<"1|ű?{z)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)Jqq5 w 5\he%&bL̄|+in-IEw`agҔDܸ-YeI?Zk$6;.` 2v{ӵP|>~fC =E`[]]/4M(>bzVݫ\Jb?YbhSrPxTlcgPPFB$3ޏ3Vr$lXd2=Ar)JRJ)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JR)JR)JR)JR)V.)|TrY`?A<ƒVLI.96ȃUq;df*'' 5*R# GEcjvhS; H1dTՁԅw6ngqWKccPKyfR?U'cCKh߹=g" +I |KZn}~VMo)hp#zy6F +j wKʺ+)d\]\RDnfZ[8"=P W*D4;  +jP{(WT{2 i0Aqۀ@95j/z>@CfOsgX^ +N_%w 3#P^!ԦVD1!E Xx +kn 6A'_Zע ;HtɐJȨA(Ì2.[:]pmij)z‡ %sYbp8G`?qjN/tpN~dnՋ;R)HUNm voō=֙u w/'wUY7=3=Sć6f!XaI"v5+QGY$HNOzBo`Y7q,LG#b>r3k@F@Gʰ l{Qw# ~{TZ2$i~#*KðV0V̌d#*cR$lc,2qV?RWR/F𾒃&0Bpʖaxm7gUea8jN2O'Mcjzl* Gdx7d4X;f("*sR|3C +!b$~v.weyr00؉sf|5k}"su4B{@ +4H&:RIʹh4i^&8ʮNO|qz>۽؈V[@mB1N~5ScV4e` (9>u}ĺ 2,ð8^۾xIv"8Ȍ6(iWEbmYL %F'<ݭ9`TySzuPa沩JR)JR)JR)JR)@괥)JRw em2Է) nT)JR)JRu]HiK" 'VXm *Z-v;1ܦHwzϵ(扃#؂2 ])JR)JR)JR)JR)JRcèGәw.AT;Az^mbM(Q|'ObeMT\ڣTmF9ʀʈԓ+֍6n+w3z}=*Ji;Z\kZzx#?POn*A^X궓ZYq@k6ͩ\iZKYiF`{mY8m4)JR)JR)JR)JR)JR)JR괥)JR[wo;JMĝ@Y m.88޷@0*)JR*f.u-K.3?XwrpO,y/onLc/sgq݌dKJW _/hj㩊iBzᣁ|'-ae VH9c' [B' XҔ)JR)JR)JR)JR)JR)XHCU 6~b|F5V^۴a:#,ˎsn#MJ@vC#;sO'MRzuj#U~q +iJp񸍂S<t ͨFuI6[|2H'gR)JR)JR)JR)JR)JR)JR괥)QV~!PWjaNFy8+WCHZi"fb@8jyH>ơFx=Pjn)JR+R;0Br@?3p09~O-UVaQ~cy3Ϡʳy-gefb)!$*ִM 5Hx*O|0$qjoE+kӃ܃i$@`R <\4th`H*瓁Ok*)JR)JR)JR)JR)JR)JT#Fuops1;ڧ A;JR)JR)JR)JR)JR)JR)JR)JR괥)Z%o}.xcԮU2) p1䟧5)g/e&,pe BZuƶ.zQ +#n0{w< +2"m(OfW$X{IGI׵T=zDe;s[)JR ind8HgoMkZuj[v5 +6y ޫTXO+Eod#~JuIF}Nќsڠ4 OQ }J@jg pAxF +y)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JP괥)Qq&'|Kb|$חRL| 1tr] H;{t"B*M?zT.^H<.;VU!e3m*{Ys2}5ꔥ+^2j ͼfknjZ^>3tv톭UkUxaiN'?\:ʵKX$*𫴭wƿ-`#d?Q=S߭~qd\܅lBJR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JRoť)Rԭwń\MZ溂1'+LޥuQ}csio*9B<·_KskrrrT)JV-N"/Y^.7=JpM9Qs\]DjvQYy+O}spU1q?YkNB{ */~sW|oDVqRs "~|h@=)JR*̭lH@E* j&qoer6"SiϕIi qnAPG5JR+ WGc@ 'tU `nUZͥ*d׈fKY#9V;yU 8k3iJREωOCK(2zq@!єېECxS.fty1OTFf \ y +ȥ)Z,',#tIK~ u3A6Ee"|pntk&= +r!"JR)J|5I4,RV`W2q^td@iqk,dp3JT|ʑSZ6K'ʬX݁FK}lӒZqo5=TtfO19Qخ;l{wMf/ pX +TvR8g}XwY DQ7!1Y7w쑐rϮ\Z X Mᙝ6*~_'<ڱ/$uHI?I۷ᓞ՗Osu<[0;f\ +Ԟ$tb e“Amv4-m+ +>E#$޲u72s2+:b0|V_\Xjv-e"|qNZ")s4L(Aׁj$V40w ޶I^xcy4jYOu$dkX]v]#U>d=̺Π]E.68'bd,sRsucZZI9'f܈4e#`akn.6.۱jܟ>FXF8Lx_&lT_am_L1ܼa +>õz +I6Rc-πlyUn4hu^4af2 !hPv9}Ez/Ŷ<[ +G$Hc<ƶqh::b9$Kv6٩:X[t9cҌArqb^jvpjf2Y@1YU]GdHtxv) "pW֭{i؉!KgBbV9|Oν5֭mZ[*.#r;0α4WQZK$@RI9%#k'JS.ńT)܀+0c<槯d#b>POkX2,Hmh."!B&c euZC9ŶcF c^.jjjP1B^0̍`cO[:W  V Md3R,7FT_۷}:]E,A `?EiF1Sz4kQ3|騋˛ nl 4d OeLO$ޖVS_Kt^mqT; +a.5-b#䘓{*9vm+O *[gl ~$f?GAnFMڥqfg$cR`2LLeA+Td84fOp R.1Ti"Gnb}beHf`CAlr@UR)JR(괥)JRoťjVlz"?Zt +=6+^cա8u947,R{J]{TvEgcY[ k 6>R\<ɿʶRCk 3jڼ mg)I[m]ǂ0@3R)JU6X18P~ j K΍j1b=M^?g& ͌vW|3ǥZaՑ({Om,Tͺ$/0 46x춯AJF}/Z0ֺVӴ{,#1V*劳60^G͑ޮk\z^[sI$eڠ,4fb{Q4`;VT$\Iqgpa32A"1$m| g|ȹhۤ.\u"!OAJ m͓ZmH[$X!Djȷdk'Ińnn[,GnV4~ŭ;-o: rTjV + ]HFd⾖ۥ 7`p=+ޟgoWKcyЖ^ViFPU\*^<9ⲅ.Ÿd#qۻqzhkp3 ,r pr>~G5CPQѳ?0#V$Lm. );:|#<5+b$T¨9'FŢ<W7q0{ +2# wA9|riL:BM3oj͸M]FEPT#~r3XOMomtayhjK~cNqV~i @|0@uhK#m2`T<o /ZHt[@*۔$g$,PieyXQe](2julQ%26]jEՙHS4?>iYdEdQ`G*8d_ppJaPǼ(pNJgh$W)3^3ahk |-;'^Z:4@Fg:ʹZgTVMLnTC̲B7v'y.XT8TYG$׭D}&K7 (V8Y.m-X S2a6n$,JTRK0009[eX[6mQ )r@00kޑIKt.%2(kAخf3GvۤRbyr31I4LDl w0<4xft7tIPWaf`NN3(j'U YOb<:҈2 $e'gO#s$:צJ"gIg\$6#< rg3 %y2ȪۜbH|T =KGѦ$tHri}A =txI.V5RlP ?4>I-.{%H0*c9*5+k #.ϵBsl dSWiJR)JR괥)JR?ŭbZVͪk"g +ǂ79Gl?:R ڤd\#AxvTKRT%`j)Tw~R9j?7ۅZ3 nIocWМR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRM;3g#=괥)JR)JR괥)JRŭbZVԊAdO?VZG=M:>%u~ [)J,iﻼm>|VPzbZΦ7 %#8ɐ=89JRx`N\KMc𭂵'1뺪ΎL`dJR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JRnխ?ܡj1I,a$}Fj~bmK+#?olT*̢B2o#&c`cىaF^rb*Kq:s{a)XbBQ CmcaT|Lutr;¶*R)JR)JR)JR)JR)JR)JRPeURČr0?E*Nу)AWR)JR)JR)JR)JR)JR)JR괥)JRŽ5+XΧbQ C(󴉹ek!uVѤ'qy<'ā[)Jk^ʸZ=q/e HV(]d+=|JR|[*ã߳~,G"h--ц +#(k]ԇK:kޣU7[z)JR)JR)JR)JR)JR)JR+Zb,漛;bB^jV\io$D2DjB{~6.Yv qۏJFA,v;m˩b2KG̍nܐkNakwhuHˌe+}}zwO, +xHE ;jvj?JVkX t86@K {'#+F89`ϝ_& "SKmʲJR)JR)JR)JR)JR괥)JR?ŽJWn~s֓wB*dF{Vuk.gNvjvf +R i 6/?O[`$h=U|N/4UF!pVJRc9Log> nQivm^HU28;9>.5/&[KrH>PYw*AMm/#fSvѻDڌ#cpљwm##/ϵ_ӵygHTN>ra(^n^Lf:~ r~0[GP2ЁH ́[8Ҕ)JR)JR)JR)JR괥)JR++ZrdFqȪ;j}FZsӃ)wh{`g[)J׼ti<亴@;&t8J׼bfa1gİi\zhi3FW|6!r02I$I8T)JR)JR)JR)JR)JR괥)JRf+5-Zio +c27lT/}h!-) TͼhS\+^{K̹?iP:i8fI#Tl~8rҕICqyHUsdG+һpAFA5j)JR)JR)JR)JR)JRx+t4ʫּW +Dp b,$Vv2G`)cbN n~p?[;ӮQFy%eCXZ\ey%a;fKÛNB1jY~":2ۧpF8^TT888=}qQbT eY[Bn.P@}rY,o*Iُ$bi#gqe>#:u6gٝ+")JR)JR)JR)JR(괥)JEΙZE8 \(w>X'#Hc|znPϬ+խX}h?RԗLMNnjT*;Q,e06d`>]cqZH%a$J +R5t{~Ln??Jo3i? zоۢCʃƲ)J׵Y<8A +Ax %Q?E`MBDV^AB3^JR)JR)JR)JR)JR+m*oZ5b~U0?W=޴7mt'pp|,̒c">*Ǐ٩bj+nPX>1HxjRnj JDGfn{Bj+M;wkhIj]֧([x8萲3rX `:VwXmЉ1CIo$ dqEGv#׽v:v}LnGʤJR)JR)JR)JR)JR*ZRwWBRnh T}B[,L] qکq]FH2Xd0FG5wSai?W'~NMc{SVak*8LӁUJUL<ʫ֯j3NI Z5y%ErȤ1 q7'BT"G 0UL@:]>}7 +@*6N' sڬ +Fydy@öXJ%hs"TŮmg >7O+}*ʺ[8̌ۓmjC3ډ,5$I"۴ 4đrL&λ[Q49!P +Udr'ҦL]6>^[Äx>['낸*4nu28"R%yn*sk4UC8Wډ xw 7q}6$jR,b.~IF7<kΙ'E +h /ɬ|.cl|5k0Bm^O*)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JiQZGă郏KVk$KhӠ>& +R)vkڠᡳb3sßkx&#ǖ#0տE{$ ܐ,1 *#1`{x:nW7ZY +6f@F$/#jB;xl)uA+>c#*_k{{Xy +R71.sca[*@xC[}R'k_ЪH^+{witVT' ֱtf䍞CdXù}O'ˊ~D> %pD'VJ)9io.ݽ2feVJVGrc)ҵR0ԼT7l-ie7p3kk)Jf 9$׈I3~ҩޫJR)V~.GLgf{RUi^^EK1I$Y$UsV.]Hq`U` JRj+gD`LdǑ#8+U+]2xcIZR2[HTIMS&`*mo9Lg~=> .%8HԳcQwz#\1$І&5qg8~#hY%fIJU;$dp{dڗmu-BϺRpzh2T̿,]D˹WpGz)JR)J\yPsU)TV)J괥*5t9t.C +Co"yVh&U/3 +"I<V`V%aT+)D+Υ-4z׼PL>XFQ[ )Zb % ~&U k4X؟S;VJVscn0?J3Fbq'=z$]-˾Z"9.ʼn9RLK,-swAnka+; x{;JRdR`2Z2Hƌ/.r TJp3=sR͔EiLPgf@rOxUf&YSz=0#i9=жǑ~BG?Z|CpفV1㰪x(MTFDi(rڹ#$/'YYQ ̪5jB@3U!;+.HʐGXڦV\*($ֿ$qda8yMf❩=04,BO35v,e ֍"ɐ NF ^|Ub4ͮVR>}1-sW"dK03dV*2ɐ} ח74 &*M(^r8)'3nu6c=<8b88kԮ[B0g˫V8Q#TW&Cln3* c5-[E֘+F b$:jP*}S^[a2>(;viPHv簬_KX bUwa^TbXdiFvܪ>Gh YQWxܣ,@,G8UbGߤ2ٯ{sPz .XA{ƒ%3NՉ>,9- `qd:$7;R0Jȥrv\#am&$sߜ+=FӤ-6 B߁V=]EIaM˜897Pr>ʎѡn##Q>s!խxkFT(1! + C dqU/w(D4b + PdBϾ*Z 񮓢|7uԫ3sR_ w6V0]m2yn$!C‚wɭ[rsR:^kY "0Gjơ|m(u,D̼{Y2KX7Ѓ]5r' ˕($ +کJR괥)JU1ŦfԵ@xCv>gpOVJVK"$~B \RU?P~%yEݝ1I&Ju lkKϡR@=zEVu->혀ē၍&o[Z+_/ڱI ?l)JRjV6uFn ~Z"4 GGviAI"Xx5lz;˨zN ,@T6۷j}=ƙpq۳ʮ'WCyI6[ĒNIz0I-U^95"qkFgPf?Lgt]p +\O"تzG;bd/A/lg;YS9]!aO:}s_̹VSTǷ;dzc5 A-a7":LRv<Ocm6VMCL jٲe9xFNƞm~`]Hd NxpGzRβڤrCicd?+/Џ:4x>( 8p[ .؇0X2svnOjmu4ibhز0`)$;Te' 6?h2$B NEgY]h7W% 3Ep:eap +v;9DH3Hw}1YcvlHt}PBU6} Lz:'䝄c`2Ł08#lE:#1t絿{VtdnRrFHʶ km`(jT9rb6x1ph-$[u*e $?'h槵+1lā,NrvQҿ$= Ф/> %F@޲Ο=k2BZpe$H8y>O;csIMޭ!Om=l䜙JIrK˞c/u}JuI~,m*uE,'#gG +:]i؟I>j77'Qӿ[q\*Q'tU"\o;N12k#XKW +;v|Xz[_H<EqϟzTPD(D8ܪ3; +,o3>"p\Ƥomgѹx1H>}[bKҗFH[FF$FU-TfPU6C1<.NrqYES% $,v{>H;XvkKUt_T"Y#ߨd,S*˷dKQmZuFNyۜrO;Gs*A +9g v3Y\l"c;Tg˵] 2cq\989ǭGxwJա+"6rfsA!Rm3??tKi_ 4B|*r6rrOl\f䪒p; dsZ߇,-/$BZ2m;c5\Zs hG|mT}燮i5yc1Gx!KXf4 +2wHӽerE$l4ՂDi#`} I=w犍}+QGmܼkԌA [}3…УmRA TuzeM,װĐɐQ0sY/r % #2(H\}VJ-Q$SIRIvݾL27-0V\Wfp66jOL&kg~Fr41,X]Bjmu7O$1Y\Kf0wi@#p<1XW|O.mjt~tcƬ~GѹB5U[7Rܝ>7 ].]ݏs۵H=ƭmq/18Y @u} nǖ 'ˁŖm,a5(_ǹobcZ2 +ޣ wl6mcoqv"q;@*TmZ;7h!Y7 U@ 9;B{KX!Yᑂ_#JR괥)JR5gabTcv')&?K{t?)Z3\.#g5Ұ5NLsZ]- v3RTkzD^|Vvq3|@c2* ^(TcLa:~6R"JŮ.$sI9泩J|p<tGMB)y,RKrsmژ 7/E)c22ʼs8=*.[k;[ef/'˷IY`{vbMaxsN-Գ.f#Ŋ;dwRSZ)S8oHe$v1 o +.(<$,@ >+ |>s݌}k֛k|A9H d*ҔbTV[{hD,@p*)JR괥)JRo,?w\$m8* [[hTBk:{gPe>@yJo 3RֱauEӁJVbKjpI[+_ͤ,g|ȹ3SJVuQ{x+~W<'N+aZR)V-yd;U@Ic(o%"Ff pʀ*O8 pqT_ڬs4m.<s=j- ^ 3B ff;BȦ`R786@˸~Z|TDv>ēFTΟMa2 *:.u,FĶ Eg)D9̓ gʪ%"D29!{AǞ+Ofv:S%wF29WdW4 U G5f"La>@I3V?UgevwuhI FF2q+2[gEewp rI Xw0yY@^Ѿw ԄQlVM]p nwډ P$i%x:!JA$HPMEUIƚ+ ʖ"g @q@9&+ hYPB ı=WJiNQ"B ́猎k F]BUg!i0'ˊدV[yU'QS7N[ўYUfbr?\Ca;NҤaU_6s*ayxD~KcܚQM` aR +R>jZpM-#DQݽRPImaJ0 5;{% ,I eb=ɫ?;S H nYV&l$lmoQN $Hn T^T*a2Pr dF@#9s^֖YL-MUtQWCpH5cºԚݢ$r)c!*U'N*ahmN7B]:)*T*/ Cg$=d?`RF7(`p| zԺ`9g#ZFu+;1 %Y\6n=ψnEN*A*Z[wrb6䉖L) sH7GXY qRdŶfhOvYsђHbf\V `7'K `/7}- 3g53 }$TvbҕxKhW.ⱫëSE|crFk@x/YϦgRxTi+.DWv eJ׼iK{XWk٦O$ߟk2Ai(秩Y=s&n[)JRbj1 {kYndig`ca(Tcra[+]ҞX}IdAF1bBFb1g+ 0]d R;C9o[kT sm4WñK,F.ﺌ3Zq[CorMBʊ&@-̀xZ zԃPA=$5_iqfӎV#[jjxy2t~M3a횱WQ]$'HBVL-HkVdY:Q4*;ATҮ27I$:ȱ0㌀{8o*w ֿ,ڕGh& R3kϫ鲼-v"VU=%y2}TD\z"9-"J 57[ZtG:+.b݌ o=wRڙqk7N!+t9Z执Ů#O(^i bMH{8-בFtn BI8ʡ~[m#Fn`pEEkqTb#vN1ݺM4oM@ P+Œ ǝMO{nI cג9#޲ kH|C pc[I!2[VvpGyc_dr3@DprF3[-)JR괥)JRo?ŭOMլlqel4*'Őm&:ŕLq%ʀi.h IƧJT#2hW8+qQ䩸hOrO諕2i18j|UiJ׼|nd @Fr6JAS0@?R)Jpj +\Jb)0)S+P̋"% {j`evR3v3e`S+RҗR11X&b?0Az;˷-XPU8)T\_1o="S;\`Ͻe_vNPH!dwcaJڹcܒI9,I$OrMy[;˄B-ys.kSpe=H%kc +@` +LP)`S)`S"T*LU8☦)LS)0 0*LSeFEb.7qF +XLXpNOYئ)qXz*xH#a/cGU;HX +LSZR괥)JRŭbUt˖KI+D Q{o@q*ټCalUxNGȯOXh/ZuLn<z;C ߾|ʑrG,ʈg{1VbX%WM:`8b{Ǟ86AuE6w:&ded +2ަ6)mgXZ"6QS@6JLPCt%ed!NH~B;v e&\x<}+ +Yjqسz#ye@}T訏kɡc1G~s;s#X^$$bM(s"ܝdT͎m3r0;NVR\rXF3W#k5#Xw:q#]B3AyrT& +O VA/U {ͬ1'Sxf123nʪHǝ\ԭ 1J wݒ{c@jZ\fit$}l 3EMZ\\Kk̉ʏ^E{;mV.D dw.(,Q`HTF; 8WmHn*#jx%q[Zs)"5 +@¨'ߎ*X|8v$~r#E[5صK4fD1ƊJn8. s${ jRmݰ8 ʟQY/,ᐣ3MA \^5K1*2Q b\T~3|f$2Y.ʐzn 7 R6O% ݎ= Gj'%"q"UHiU5h Ahʑ6<6TN%$Yl "N$UumMDAKl vcUuK$INvlMf3̰4;8-q+y3F\NjƳ *kd|GĒX5,Y7}8=o,İXБ2;I;Om*u;HnT`K= ^5cڄ20h8^UgyĬ#gw}8 03Y671 mK e9RT0F*ZAnUXdV71C. Qqe?<|ZK̯*W`GYNrZ7E| q5k?l~h|m'8j~JU:g~wg,wc"~*vY)X6;ߎjZ{y6vӱsu# bv{Xetq=a5Ip[Ş 1kRO;:/җP9EöF6p FnW?fc}Rrn2$o3G>qPq/|1r.X~'~H>^~'V;PUp*hW~!K\t%Ӷ@䍛 .Ȇķ(C$J4 GN#J6ӑ6 e =d^+moQ0CCӫ1 +1".INujL_R}/$o;{jQsƍaUg۰T. |k[`3v ?UqQ 7wF_Añp9 + x@@ktҍ9LsFQd #؇vU9fU0߱^*K\WW[țhb` +9Ų.,dsKE^V\_eWqDP/P0qm4)J괥)JRŵ5,kqX3$'>FYBPةJRB=Nm=9kam6y>lt1'Rk^(Ҧ+˴#1Vd "rcEfw?+a)TaP8l)JR|"1 (T=Jt#y.ߣʆʔ(NrNy,Eyh#a~\r^*Wa~1v=3޽չ-a5b*JA+’cz2>cּOi 5q0Ϯk’:QH3oa5 rGjҮDn:<.ФnpvBRjkhF%Eq0:*AR0TWg]fكRó`g#+2+H=эI>u[xA8#νlQ=[ETP8P(=Rkh"+`N=^{BmG?E/lv^Ps$C0Pɽv' +XA#ʲ'P1b@x( vH*Fɴ49"Ee +n#8jvr^Aѐ&C؈R8eĪ +pUtW`<:ldR* +qT(*&rB'P01PdER,@HT:5ߌn7c8z00r#=})JR괥)JR?Ž`ėHciJR BX^G !S>ձV]wWn@#g?܅lT* 9~Il5xyڞ >&< ?ka)T5x8]B"Lzq{5lT)JRϸkm88݃8B6Qi6߹n9ޮ6e1O ϘCgwlT`+5[HnUr#z&-r0 xZBkŕΟБvKxȅCYrRE:s^ +.b!Ÿ_Ju; y$nql|#=i3b32.([$zU\eX2k1 x7|cͪE V#pUH VDP(idT,F}2kȨdpj#MmExHʀ?dߑk+_O +@FG|c]oE1e.b2 ('.gXSjCway9`6*9} bysEýagw|+*F T)նCƩs)')r͵q33P^}=Dz6mh扙Kc0ZؖEAyUYo +[ϯTgVf*d̄SF@@$8R@ozJr+o]v=v{2(H=2 $ HZ1aOQpto^"R@I&4,`A*v7>G`_QVmg۾D%.C$zԙAgPu ~q`3*Q].WU dVodD ?! qɱq3*7b~U߷zGYe 29THN3T^~ړsl+# ̗FveoV[wc>EM ߲cdp=H?\ԕ)JR)JR)JR)JR)JR)JR괥)JR+\Z觉aɉ2@)JVe>!QCU@?Elֆ{Rx Ў}")JRZw Iq3C|Z:T< ca5Rk=WWJH?R)^%8F??Z#*lԃ QR~'kմXo$$/d H{1o$*Hn K,W34eL0"p0$%sbeWXըEV+(^&*)+GHRMX T>^ryħ|]zM̶U,yP.HkOFkuq}B0v$ŨZƮ$h" L*~-* +y V-QRBy\* HT]k۬H6#4`ʡK.0qE ˜RU81+`7qXzSDi6pvp|*Z(@@># +e +G8rwPU69{JCeߚ^tHΗpASTR~uFZ3c».Pnw8yӭ 7}{}e0IVb FڤHI0N0+?'M[]?K籍}ƣs*I^YJݟ{ @Jas N5i10Gk_(Fp:GB{H\+֨mcGSou Vc(J8jMųmaI#e@^T`܎jgOҞ=Cc(KtmFS+'No+ώk{>r ddV1Nh;0B/o1lV,kn=u2uqc;.=8W簆\|LU"{-O,WN*~b~msڬi}]Q;V0aV;AbO<{a iY ,e&30\'N4ȍIB| +A,mX*Դq*nfROGSLm@"NEjMY՘'TUNMԥcK$1BΦ.6z(Q$7]IG$)Td0{˵WxnoYrpٚyh>DͻL@>NxzѬ3,gUQ2'}`c>D>w\'!3;) @s+r_ZE`RrUq\=+7Z+H )[ #v_0,RAgkGc XEO6"cn՛FС-7c8{kcYautae!PE])JR)JR)JR)JR)JR)J괥)JR/ŦbV/׿PbypRnu9&9hZۭrgڶ*Rw?^Hoy/`|~jziHHT5H趮qU8Gg~+`)Jנ_$nIǗ 1[ )JRēFXAm[vƭP{JdxP9QG=zGZD$T0%?v?xC5FefPO1VniG!]fF0IV^dmV 6'Y >^UP`ZōT0v :m+\H{W"'EO #~GB>Mx`{Ub[6<Ѵkm# +)Qqʪt3?zF>nZWX("Aa9 ܞj֓g|#\cګ{ZJ%}##9Yk2DnEq$6۸(ߏMe,A V,:M8THA|ΰn&I/Yʼn m!8>UOPI,U(p)u[_3’l$ {i>ۭWb;cc=[.xvќ޽k$᠌1(=}2IBU!Qyp:z,-b .799ֽH$=!(PQy{/4}3J~ԟJkg 5s( +3vjJp@nNF ^`40ssWcӭaHcX;"9@RLC-Kcr}2{6as)Kx٘|Ĩ9v'܊&i,١C;`p#$I5[^M<}87L .;/5fò" ivr02R>C+Jp"S"5X +y'I?eMndl+;fH,<#˜k4¨9;PՍO{X +eFR9]g*Y[lHT`*>UR)JR)JR)JR)JR)JR괥)Xzk̢>g$1ii1'b2pq*($!^t}b\\ZdrX2TX:RpH!a0hA9|KMNRk$ͽs䷏#eZ֮|o+dX=&.~[Xs* Ե)JVO 0v>Vg~GbJMdak~+uY)ZG%ǙQ"a8)JR)JR)JR)JR)JR)JR)JU VU)JR)TVLiJR)JR)JR)JR)JP괥[an#BHU,z*¢]Dup3k?'V/MB20yC ONoT 11fRx i'Rw/ S6j jƯ&'t5qkp8`8ʕDU~1*)JV#K{p=r+7n.kύgi g-<u\n +#A/eRk78o{[i#mcThX vڦ:Rk4^mnrG_'.b.Pcp=N5v)JRk>"uBtT vA3J H's/ iL"T2=v5mws=:3aYșݸc#u $U>|f 2j6hdEGvf +Kb*Xrx"xĩ"\zqAu qwpG;Cq"!lv5ۺhڹuWL@'5gmu;I ='Yњ'CW*+%/m䑢YPPvAFL34|8mUI BqV.Kc;`5֣BҬF-"FčpjU/ i*3ra@9iu QdR9P +JT{ K1E ޡóU9<[&q޼ =9Wv3$VpƓs;X@R|ƭťKi *ZbpFſܖbb&>{$rp֤XuԵ kGôd+'mw3Pv`sOz׏Op݌ݏ\wb8eAr9zչ/DF! b=@'5n)nUnD"&]ߝvҮVs,}5iR:QMR;b"@=y[(^f쫜d d[dרIpfB#RqQάxXSkH+)%'|EvlX&?bE7rWn1sH^6w y !|cΥEn+]5+ӮVۤS"纞8zuwX:8Tٵ6 SqҧguhVwXANF}J]Ѻ!⢼S\ivb݀"xJGqI㐰W TA#:ۻf{S;w lu㑁As !uu=X2qWiJR)JR)JR괥SZ.C␖Bu `gگ_*)dVé4(YHIge260ѵT.NGn}fmb u1)t>{hG j3E +xv*A,dZvk5dIm;UiJR5[-'4NnggFV1نI\PlbV+ YӗWɟBG<ֽ}Y}n wV.0̲52?:R)JRx$t0(+s9l.3隕5d[['Iv8%B!@浽NMYdѹeȘ?ΌC 4KQi @-2vPɹd`IWڱ%UMoRp}QZ[Z_Fկ6bnw Y9Fu(U6qs;~Amg[?v$%Uq93lQG QN~UA|fm3nn I qdwX1eҴIκdmʁ55`? +lmwN3*;r*[Fi56"t # 8#hǩHn1HXO9$̯{V޵? K"A#jƻQCW!p ;[[M~y6o@鍸>\w5夹Dbtyxs\Zؼ9e?dr#BF̣*-{+: VBu|U5^쥒'OTb $.pI +7\Vhe͖1!9S#0Y% +  gՃJ\U.C ?rx3Yu7N|>+l'n+3±< vA@i5P3NhJÖ |@QT]m\R0D_ĎՈCux +z6fX4 ź&ClgrF$F'l>)kүao!Lg98Ǟ3zD=hN۔,T?nH*[v|MeEl'%c/Kn '8>;Hi 9##ױHa=CyU8v=OL]_]Qimi72B͵X(lT JLQ 遖˓R:=A( +Frv z.>rVY?};Fų[]Asstd2$ȁd}*Jݡ+ +Ϥ]@Qif_f#]ajOI-NU?9) Bg=5#6+]bfi%bc*U."޽gwŪRc |F%,&)CaNOp=MM gpM"0`1}NҔ)JR)JR)J괥)JR)JRJ)JRLUiJRNV)JRcM\y`؀ hՉǹMm61ES@鶫9_hjZB j\ *7z&m+وbXHo_5*<e",J@ ZM$0ϯ5Gh +H-ᇠ p( ;WҬ3oU$Ш'턂n{a_bldqPG\V.t!K20bC EZKuxTڽao 2D( RMy]6'7 bS@63Y5dY%3רF liYmb $c6.I:ػ;PB<~-<0FnEV3m:C 95h4Ki A;weE *ುdꈐ??6ѻ5n- :r20Wv8lJ<8u I"#͵w3}8k{LZ9`\ #1C03fe, ŹHp~ +kH^ER0,=K .N#[k9ڤ'ҤEciַ I97=Ȭkkd[G#+ڌxmm!mT@=r?#v6)#V]*yVg6U-JgXc9屟*M+(`Ðc=j>Ccw#1EB8>]ϸ~5oD?I62a՛krCnm?cD-PɹO>m "L邻N{`+>T3L5ZgRe 2T1jx4c%@|!=Z-bK I&C"QrjVt+6kv7fPE"k:v{wZl&k[e+HrA]R6ާ,.Mݴ30n@ ($_V{ݛ,㍾$w)`sޤtmR=jȁ ,a=ǑTZm?Y!2 GRԪfifDZd`!f!r{T)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥+xcMc"s 1l\Kc')ҵ+Ek3[SZcK,BuRLҧΡ@9'giŽڌs6F dh;\,BnUZFmE%r$QGuh|w"71eؠ @=/zDvn%7r"Uq9IQ(h%gTIu@W +]8$@nIz`H8$RKO,Ѽ`a\  sXVZΙ3ZhdQ nA?m8 ~k[ LֈB[ # Hүw;TYMMm]Z;F011X\_etBИv(*,IXG[L֐GFO[1٬d_%ݕيHIIv'\%c Pt7b"rGWq=B ,nl^#<\M~78zg(lMr`&#q<6z1?Y+L Eu dsTk:WC졳AHWi1m@'=+U=?[Ymp]2 M>=OGK=.UZ2g~89<JÚܬ4"=9t qcʳtMup8"%2N mq< Eqq GM@'ٔ ka)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥Z\іe 1b>0A}3zv3Ml%Vgo!Va{-yg/u̹ʐw¡-mmmbv,I!x +NHqڱ4kZͧGwj1*!g$όVs;,FFlG׋? uqdC1ei:5XR{ { +ƛ3K,d(Y"W*0ԝvQ(TE +*a:\*LՕ:˂ x-thԙd +WfF bN=gҢo|/e8]XC5?cj,R2w`!+pWqYW#g@2@Q%ϻZʰkۭn?e3Mݫ2>o {{X@~oA.࿳uVH8W=8W +@]>"JiZѓV)fvdi!l2Oy]WZk[|:r21'vT#`l0G~Sl3@,}$soiʱ ``->cVek/Hˆ0Ek):ُ?AXjҬv0oc續AW4ҕksЅaYIRvxR)JR)JR)JR)J괥Z}TlVkihB +$0U@9ATWfRJE5npWGT/˃ۜV%汦/"y#jtBFXmI ;گïK lcbn` p #aExndvkf#wqWlo55ES+'.Ì1'ڮD6i +[8&e ZmҰ}&V`2͕' ǷHx[mۤHNgb#̙nWL4a ـE1+'Եm>n%EISf02yzr+;ő"7 ū=$~57*)JR)JR)JR)JR)JR)JRM){Qx,(V$#t>G*>M7Sc*fJdHܮУX崿 5WQR{I$BB͕??<dQouFI<]L>嶋"pgcf ^җ[јQxaV2@,yK +Z%b?R@T.97K`cΤ-/.$p"t+8 gI#5#ZvXBsu,0o sV|M5]CbH0>!BH}1|+k9RNdga4\J«+Z1: Ȃ#ڤQUZ8-7>m9QOq,2R=6vN`gUO M[ܬXѻ6z4ʸwf!7Gq$y; g H rkY,k ۧeoFT +84յ%y! +U0Ib{TzRfdHW#6w qFYpQȨVeXM&~!jő˜&b:ozgNbcIxNρXkh)L/ZtFز$@8=zc]jͪ\! j 0ۗq߰^C'l/Fs>)JR)JR)JR)JR괥[322+HFF3CæDq2lG`ˎ沥 7<'S xIʱ[cVr𪌍.&r`'VdKyR[2dc*x+{EYëIJ$XWvFGs^&nexb۲&߻3 jJF7uBQQ݈{զXi_g HneH"L;{J&w,eLFnĒ*p~f뺌"8bǸLwcj0gL( c.Xb1YױBPj3f0?N*:Z7oqe&, k\,lQ=,_ +* b`Τo.n=8].}Fܷ1Gs1um$uTM-aB{q"|Hcҧ)PW&V67";l3n'>)5IfcxÑ1˃R:IU#-ԁ{+/Ovmݻ#ng9y׵`09dF.nN +ƒJv}Ol˨^dYdN$ء\Dvv+2-EDxRB;}юZƫ>m$ӨF3Q95a<@XǴEɻ.RyG'jy]vv̱`XɄp~UNkָVDH^p=n>l9zXֱ>k!(69SuVNc 1ʢb[WVU< ޠ`{繽GMc7c5ZRBqQI]F]Gaю"L,dQqY4w+ڮ +F-|9RM?OYDn #*\>|w + +#yVA I$2K5E\2+ɐ QVV)5fke-2 !\+`Ѡ{k+x䛬I `׍K]SdrN3N2k2;J + +\zV#AY]bEqo2f08{u<'$皷Zm^FhfrNmΤ&dNw$P6~$JyD$˝w8U}NI,ฐMuSu#yfXbX[niMA.rOnZ-vt'yoP8SUiJR)JR)JP괥)JRG^xO\Clf|Y:KyRE Wr+Qmq{«-p+RsN3WiJR)JR)JR)JR)JR-fK+R22I +HεJl0l'4k9N;TC|Q;LFs:SnG;zOo-^I[x3$l@Whհ #^utB$!d +ҖƄq sʢc6cr뇖8&l{gA-w'XoD#Oj]&ѴwP/TE# @P#R; +0p8uh[+,H.;@F@s[(tGXnl zڡO\d\ @I^8[H"]cWѴ[f6v#;{ ?AQ^*-JKMxmL9 39uV$mtyBn22NzqTN$615Oyq犂զ}-Av/Gy[-IOF==Xԭ44lYUvi93ک}0>j򽥴)-\.q1#8)oUP`8T-%OƝY',=9'gԚJts%ż>k42*J쪟#<|շÞNѐ;߅kzw/ތg?Jm.Xb`7,{w` AEDOPK {u[k+"F81ݎqHPH$]H3Hvw/X2tK.΅ebcg1ZBȬ 38v |o5B+FGE{7 _a2ԴpG4*"›5 ;WR)JR)JR괥)JRN(AUkQMF'tlɞ01Tm/I G-ǟRUFH- Ǚ-b^YKd[KFwUA0ǣvNiլxcceM)JR)JR)JR)JR)JRc X'wq|0}[$X`mmm8rHm#c4sL&ZCf8cX$E= +gm)+xCơkƛ4FڻG`35UX#`Eے2<7g=)z +qckS.%a.c"6, d>|Tdm6ђV(c!FMd1U[2qr 诌A1f Dghdc8fr$p;13D$k/"t6/On݀qc+Ŷmfˆb8Wl^3& j΃ax$;8 {k9#SwxF y]>+Kv(B>B[$'䚮b4HmN5\Ǡ`5ak/Z;tV PM+6/'޼_䨝KyfW m]rB +R-䷙w$ن @[O%eTOZd :хpC ,Xھ;vv(;6(HFr{zvx#zan`V + ćEC9KxS@:0-&3l2 'Gzbݱwc8l׺+@2k>]ȯwEQ4ape 5:l l +{z-s:JǏH] eV#4ѬmI 1"Ea R}̒B{D#5rM + ^X.28ao]E( qV)JR)JR괥)JRM.]\1F"< OEvYa9;}Om-]m`yۖl}ۻha FRDdad0TKNoT#a88z_,"Ì|Thvpz)JRRJR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)J괥)JRu^AuƮ;C2sǥGFIӡx7<0[*70lÚQwm8*ZR)JV{-ƯxKy҈[BJfs B("5+}*ȉ1\1,"@$\Uk\N!ybsc={*]&=U4P-!OqpSJƒ/fPFE\F.[[$BWipNQG+PL{8''I + ^lXRϖWvy5."Y QXۇcHj)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JRK7Uct*ACXfcfj\Z ck ]]  +lxQXN8/YX,s,hw~՘fsU)Jv?˥C"L#q,\ÓJ:ޛqh1ޤ2Y5ZI](۫t]aá8(]Jȯ^%I.^:(b^8 +p$rpI!ԏ4v\XU X,/ZK+эr=29, +3PI>rkS}/Hk[x̗2rߤ.N`!Mex;dS*E'8#5{ƐZP߽qzԅnl5&kaZR3'+$, #hDbx㨹kwpMdG͆\*p9dȪҔPw3ϰ<E[%& yx#RB)@n뷾=P09UiJRLHUFK1ԓTIEWVRA=|)V$)G;J54%M&Cs'e9Sppy^K!I9'ꔥ)J괥)JRMJ8?-<ym.@˚ͨiXrsp/#p*t 5\H{< +t5{Y-nrHHB;P> &[7x +Ǽz+i)JRQ%Y '˿WUajb%C" W 7WU -ŧ^9#QT.2n;W+JM6+Ȑ,"6A9mm$K,K6lɯ43Z[rDaµԞڄVl~ґ$ץ ȣ$8UXgĦ'02KFIdQ\#,7°Ed2d#ּk3,A‚9]vv4m+* #sn gBh :DXD8WI +%Zl xH#\͐p0rH?Zy>*3Eʫ( AdV㋧oPFRX{ζxYPLB{۽D,4*)ዋ;Eάl66y^I=Ҟ/q,F 9pc51.amoᡘ3}2 @8|Yך;hV7rT4x}0͵Gc=kgd^vPz#*? +O$-jW2l +c޲/V3rUy?Jj[ڠ|N=wGlDX+T$^[簆| +J2r5v7hYW&gʳ5Mzkmzd(@lZY4 +ގ[# "-FycowG՛jWk?wƤA^5"ur̯# +ʤGެ8|W&.hH$SmSGtJ8?r&#x El]fe"`2x/msI4M0FA ry5=JHBV6emX/yCqg%4L@FFv~+COiUJG`s9>Yj %sdf3.;jKq$ +Jp$ۍ|MR(괥)JT=-ާu`1 Q`Kfg\ԥoe?*i pqެ,Ks$֢;O6`熸qAu +j~6m9Y%G[EwQ$dtVR;FA)JľUW|`>J<ϗ؛mJ吂WW}I̥)JR)JR_ۇKYF&UBېJjbMQu,qP隂豥洒&uP`$F#O9ݑǶ˘3-vYWcFNayF}1Q~{caycž9fND@{Ao ri:6剧- LCmnN3޳5\}Z&UY'5؇Nks +i3 ݳ'gUJ"o#̶ȈQдd'F2*F8 \FA\VjWs7ÄG;o}ʼn>Uu3P`\9b<#d?5ymRf:J$x.'ǟ/*'SXͲ<ܪ"RHq\jvOn;w~"ۜoE|g2+9euVEi5֟=AF>`]ҖiVVx 4K5]W|/mF2p<;i%ӼxTIbɁ|7AӮ.9;Ov.A;5U۵X]N{It4WLrH`'>\XmIgdP3K;{F#$pgYWмХA#Hⷘ[vڰIt:()rVi'IT76wZa;C=XڮwBb;KFI!0`w4׮.&[Fy3#;TIG|XvZյ|-`2!; +~bK7eݠ +!G6K줂8 o{Jʬ8,adgK6B ϙqK.9H\2 BhY/Pc& +! #+b%B + `g{{.4ă>ؔ ; +o--R(˞zuNrC`k]*w3HA`T/үťͫGڈhG3.nB7OE{Q\?BBml1;ټj~kI!/ Řzl6A\ ԟm/5;yEErn(-z%x'NR7HJN 5gOX^t ۋG~Ⱶ}*]By&gm*:;#Үçjxഒ9.7;;q> >I;@āE9]>}3׸4It"o8ՁYS9>`=8Y/t ![9 ;+Dl|p+#Iުײd6w3;>* M_ֵۼo:"z,?.%n[$ſ+#>n\TD-e1¶A=Mj6VAlIv~ 緝Ix~c\|%թk .͡8U #jGԓJ}.;m. C"LX1`=WPT)3 >Vh}yKs{΂G< vC%YwAGӠ0Gq'}jƳm<#$d+Hc 8Xvwc0ƖъI sޖQfXnQY=(Q%3r+޵͔әavysr+[[! EѹEgvtI,rrsڤ,,lK+1ċ)B0~HMGiQHtpU㑊ώ nֶ),( q> fxq1lsXvն@o@;$]C31ߜVFxڛ8E-pX N{qS3*۰Y l jKGVXi$Vii $e Rwu$JŽ\ ά\ 8SOO0I,`,7bYMWFu:wa, 7H?j3K10n]Af흠݁w9it}A{ 5zZ3f@8 2+7Y[#k<w*2*c\.lo-m/> i$F%6FTdTt>dM#j?nwnLl{fEjW|ƶHTL9ڱ6\XGp%ib7UslFx8m0!DU >QUEe$_OR} +kdׁlGw&?fbCq:IR.@$&*I+LDCYVZrYHIy_oqz@q])J4 +ndנsU)JR)JRb+R8Aȃ>FYX. Y3OQi?R8_( g/,c F25PM,%۹2xk&)JRsj)TV 2GV)JR)JR)JRkVxpy #5Uk>AB̹re VZ=Hԗ#G}|fiJW]FH<ߚeeKy$'%$jQ$+5*ҔP{as,a6NW|{ZRLiJX{ yd8 ,Z NK{#>G'ޤV+Qќa^JR+%4UT j*Ķot[\)rB,.m)%}A\X*(`Rֺsђ9 dUYv$qGqEZ%ġ]VpL09p3N9$U.Qgg< z"*vAʎޱ,.z>հ %-'^Nd18pˍn2qJa+1KXHZK&pjIҮ&+ϠvUj;٣)09(N`FxbAKDHnl$V>Y_ +[$Tf]v$s3gהH%y!EPpKn`O'eڄZ"hI,# +*YJ)bʆjf_!7L:F띹S0Fk)s#BN⽷)RC px=G88>Վ|Qkdya#z,Cs3!ϵ\ihaH"Q'h1W53Gtu"`7+ RRh(̫w&{jJ>!I<|s9Y!y" 0HqۂH8n#ZUg,:[&2#S$3qqRVWF1!9#k$|5Z~f'D <M cwRXpXpk'G;1F66@8 ppÌWbI"IHΧPܖJˋrm3 T!u(>PbC23xKisv#m$S@ asz%Srܫx,;W{y#VyEHlÐU_[S3‰we80y;QmdpD0G ⫨^a>&uNP'g54ēP]Pg͘W5jV[%x)xil0ʰ*H`pFA*=}&KH7˕ \y(hVL8 t*W9ʬxk}a,WO2$  ~eX0˲5Jع9>UgvVE2>eUB};SG6ȳٻ(sc5{NSPi#Q$oeOH QWDY4q$ +v^8⢅UޙA8$p9 V}ƴG$H+ˀ{sɫ_[hK`dYQKlpj<C4jѾvve$pGAYJuGM!# nK֖$l`FH]=&RKvb7)I*#[q'Q߉M8%IP6T_ +x'ҳѮa b*k0rG]VI dh)hn8`TTF}EGxckC8@v;9x mӑ`^s7l) )JP괥)JRݪ'ÑM8ZAdG iפ3ZNNQ3Ʌ3ETz[-K #0{R^)msܻ}Zy5JAA"2EҖ{H-(n/&R"XdU; 3dg|/4o#rIRԥ)JR/^9?UR)Jwk7o".NJ2kNa"ʈ7D}xLPӵ$H© I +qR6kfhᘫLTmx ~5f:\؞ia=60j (g'Lȡ-V1]wٿo2Z[Fv`0NԶ?[\tnxҸ5ּQezVvZGI-dYyYI6j޻w:}G9bqq"U C6yMfj'NěI%k`>XRFN=i!ln*HAV'mneZ5gɖ' +?#p K7px<VNLlim+Ǖ"u<*V8Q©,&S " = Cog(I 7?gpr>{dTj>)Vҝai^VHduAҲR"I~le0+ׅUԶ ga,R~2MFdHsTJE1ީBnNnP#$Vn#Rdr;lQ'ʜU쑽~[H-x]ؕ~la,.%`Ѳp08<ꗫk1R#+ +}za5ڄO-1 ߟ@+KЮc%W}EMlH*[@[(Eۛq0HEhP"U%|#Ӕz^,/2+!b\m|fXM I#\#dݝc}1R[q$<"oHѐwr@lOzw727J7,| o{s4=Ď;m6|6T%5V\DH⌟@$cʢ4:ԏoE5H%q+(1y g=$ڔ= {3n γ>[S :bbpd 89}_S""ё\*0$d_H]E=1GS`+\N4]d%ᐑC'՛whn ~[HVm\=Z`mhwŎKđ<˵[Ģ;9zCgְRDUM:iTx "]A=pJnB*bA5=[Ye&Br* 2|(8<ϋbwI_f .s ,r1G'l/ˑ{P#2Nhlêo#nqsPiv'V@%:jq`Iݹۉu8oOMx=c"޶h2a@>c5%Ɲ^D+d!IF NqWljkktՃq28ct*We[[j$eIY²!{ƶm ++34Z!"i ;T!{dVWw2}@а^t|A ZF2hZ7,Ao̓܁W'n-/Kтu"2"x@\7 %i2M$ugpeۑ[}WO]+@,$1y~eؤ9M3rm)i,=4wu.Ҥ=OV1%CqQr<2 2{8Y杌ˣ;F+TⶴMv0)DB$Tl\wZVoʆݥ<u`<ȬOTKT~^DȩYl2Jqڼ0+C5H?Q2;;$|^t.;)297cWX>c S5]5h\tw!i7ь*)@괥)JRݏң^q*j6yn{rOήkB#,eI R +e4:tf*TY6xDa) Xk-$0hfҔ)JUd+͋oćh)JR)JUd S>Gұt-l c#HQK¯}$u)JԴHZ7ܬ TSvǝ02rO$y5~2H#TLZ[AI!*cbR@1jF+RT*FUG`z)JRf;$qrIbY>dWJR,tSe{syw77!T +6 &08IҔD~Dܺ]1ؒm.rKr$r2 +# H"%K1$$k&iJ *j3G$\i,ڱmY~ Cwg!p8R)JRnuUoZqo?h VM)JRxU܅UN&,[dLJgp238Vc#V#Ma]L +4IR`8G!f'#d ݻ.4KWu >ª2pWns{jt91xO#n2q[[i RJw0_S5K^͢ID2秹 x^5;k v |%($b-IP]Œna~Lr T2A9ƪk)j+ +~7MlWI%%nN*2I8򵩗]c`rI5?ZZ^G*~e#'8o"K "7!ʒ;n!NrIO`>[\D$Q bpp1^-5;&G98'簤z՜M2΅ fY[n`Ҳ2k N'9Pۀ +WIz0Ȫa67qG\{)>GƲ[PiR߬I#.o+`;z5nn2X6083ԭhŐUI#1mxzݝ)Tr'j*m\i۬8+P?WnW' {WѬиta)>Uigv + f'2I&lu]HU` #k^Kъ`s}@ =m~ i1WQu$d j.Z[\:&/ ;<HU/k]C Heg!eъϏ|1f*qÍyh7QO#-Q +̅7c=qyYRi6r;A Y#KZN*> vP;PSUgm-aY5ʅra-s^(Anvnٟo=*k\Ť}aM[y?m=!ڽCZJz.p̾[}R"q&wޝzoYΌz}A2Wq^m+餣vC&B]nQȥew09~vUvIR9I`IMC>"ׄ9e +د9ֿ[s @d9;VfDぞ;}[i (&j:彞.B]H9Viz:"HX7v$@1!V +'Uu{9QB0a82Od +DI5\t17+T>cv+Ǣ]^gcf#ےO'm4-:ʥe#o ?VZsK !cZjLo2@ sVr(/dlm,1"JR괥)JUVL,!iQl'BsZ5$4-FY̌py8n2ܲ2ލQ^;(kHaPzUCg-KWN؛ZIdN$vsGV-/o#P1VGpþ9%@ttI4HQ*LjapO<%T  '5b/YPV YbX$[ZId'dIےQkmky_02IׂN֥iJRD3)"8nvsdYX/ kiWG8WS5((yM$lFX8GYe Ez)JR|Gs}3j }|^G~c8U,$F{V^sZYs8ӧK F]ŀ9@$N{xP@౷P3).־Xiլ8o\}v1 ޣ3?(˓~jww{c4ULIgwz].w,&W?x6v#X-Evq,rn0 + +ڦR?3ܝ5ذ{d~\G ܬ0GIp[;53 :y +"N;wⶫz:,lDK+fl,2=Sr] ߒ(q&dyftie]ʊ&R æ4K2vW?u 2)[ZG#h˱_jP]kD)KU||'Ƶ!+R,8#֠AlTA%~^NjzƟ]]]ʫ G8 I݌"#JLd)9%P0 ##:_jK*U+^w8`%/@VI8ϊtʭ=̎7au +}p\sYj5Җ5V(D~`0L3VWZҟpWl69~6zj]RIP G >9Ǟ1X>"KZ6V[hX8Be_zk6Pi Z(4;]0 +&|Ce,$cK W?AʻD#p݌c?w5;u{/cp f~ *j+$hG 6FGkL]'q̆EG55[hzwf]HPq<ڳ5+k[Ձ},\0@+YpL;VhFΛƄI+vvT5F[1:[$r h4aC5-6zR޴봂"3#nیp[J˪Z\ɢMS79xa쯯\ݾ=d_Fdy6@#ζ$s"BuI?&2>uɣԴeXT)ٖ`;:V$%Р^DldYS%qLr܈maitmA`1VcP BNLlPF <^Ie; 'YzcʢltY a+[ذFqۙ>8p2p9xz9K+uam($^͒7c8Jhj2NO9*Ukđ, ?P0 5PP1B3@ +e B(Wr<ǚ1;2;shaFH0@cRU~"'3&eܧ >ʢ4h`?)\dm21,Ŝ39DžgS,&+plAl*F{O'f8b6~?RmP1B3^R5>䪬j^mt~N*58v{/03UyH1 +(Fj Ar>B{r =,l#NR8y8Qڋ$ zOsM@wULShm@5km$bPS`8q<Ɲ-IPv(AȍW' $MZ6id-BǕ+@,By( 95\SbzS`8qU9qT΁B +QF U#4(M9;JR괥)JRkMawH;F~7cksAݏzW9wJ H02)T#5m&u'|]IՔ{zW-öq8?zZWV 8|[鸟s9\ZRPuK{qءo58*5(/%i9&?؉\T`iKS-bʭEaxjZlJKH";=ڙom,qNy]rR8[f݃elgVt;MB9U M,&BҸ/#?LT)JU+ fcsH3Ǟ*j@[1jŞʷ3a8ퟧY3;*-}I9v+ I{ZvXccr\k߆r--gv䓎' +m2C eyH>ưO~Pr8WbYnit'Ȑ6]uEy wǮj&ÂQ _#vǞjm{Qv$zk{2^n!]: =ϵxMJXd%B۸]'>k^pygSGR7>gQZsskpD2(7Y^o:N16eI@OVEޭi`"3vc^vpU9qߏj5kBcx(?_ +l iuʮ3sVZpV## 7Co[*XJ.G~F+* bS S+8|x+k +pA#5r=ZiͺLA0ǹxY kM-"Fh0 3|I5E$)rn:K{irygGo.]IBʘ@76W8 +7c}{tFF + f'ܓV-[K W5Z 3=܏\y5AEA۞9ꖲmd2nx5K^N*.&Hv ޽IZȯ4jd.'h9B)@2SpV{ME \3=>c#޳+}ja *@<{{r1^5K[GڼEM$c;ERT") U/L%'1"c/u+}=CNrp% +2IkiTDgdc5}S\hzw 2EOw*[3,Ψc>jTU(\rsc񪶩jxH@F.X}k[ F+dE/di {icIQ^Bv)`z1@F## uCj:jMpqݷnm;[thݐXN<Şg1H&GeyǮ<ǸͯX[Is!\y.h8>&ốҲ^, " d!`P;TrAp}85sodPM*F] 5m5k72auwcg +|2I>@UY93* ;A׶-TBdb:Gp瑷#Ҽnn>̢Mv\>gR(괥)JR53m_M {ڽLlw. Y8`_D &qjprr86jvM7Rn`pY۵ZjKV_u[^i$UT&i@ Gwq񎲝ɽShXs1uaj3]wqÃ2qXj.ee-4`jG:m?J?iYyW'VvK0IP$Q^2IѶx($P^y&Ci/*uuOy.kjz&eEc!I/ 2竻||gpCUm]/qHGڅF($ol7x=ǵJև;OYGC&ZkM +L̺jxˀ嘛f`0̫"y[ލ2@ (sIRPiwkk`}~n@ǙǽBkv:uV4{C& Ա rLFk;g:S n>U']$Ou`qׇ=kH" +D[3k֍[.10w褓<}x SúBMnI),q$d{ ҙd +ʀ+13W|!Vl1'ZxJzd0D>p|&Laq=sTR %!a8%p״LǓsr bsSTqum~4U'C20b9 b OZw.NȐEsXZ4ƛ< ,̣c1'+.|ʕ$;j9S㺎I.x’bfFS';$=&y-4Fd.O B#P)=gH9#L%Y\ۙXZ'NFFPc*߆m1VV*kg:w9G ¡{z.嵂N 63 5${E|ʑpqqYT3_lT97b?z=0nx9%۪r|">F+=TKn|Eu=9YyF9 dpYS@#vrl1i:f.&!)QJ ̹ "+{Y(#u! +0P2*>x]eoqMw-pxxi:.O߽g71X^jn!0tf j&6gV- >q]S~dǸ-N^,lt Ssc?Ԅ)m}sΗbFEsƨ#A߃>`+b9i0Yh-wGwwf({Wn3;WY!~nI0Ͼ+H8Q`*bY8E2+IIܹ6= +AڔDź (PRA|Γ}zNeԆ"Փ{0p B-xFxi ˝rSWM0k]ʝ4Җ0(ߝ` yVo 7z|t,ke1<"L |=5ZKevcpM3mv3[Ŵ4HA "Eiqo>?qdd&oO2k^ksInwE&# ɻ1,ZvR , +Sr7dw\rj{UZBcLgh=# ѣ*YT=Fp}k"T+aO!xӓ߁}צoIo hmi +w/ +q#7NTUF62~?#M +2{ + }X*K>bxMΜ؂$1Pfr:Xӝ^UW%Hmm"M `8{9~/.v ]KKhH0x gwoujK Z嘐".ڐN]YM&դ^_;,DžP5:cPxү piCwek,W#YdD!Pyכ^[β#U`Bn1y=+ܳnRT/c,a2{^{5HJ3|D1bTBN;wR쮼EG0٬P+m$p{V%sAst'g"HJa9skop XK70AV#nܡΘ$sQjmU״deN1pd Vߓ;T)@괥)JRQ^v?皖* 4]ׁ_Nc>?MNRJհnX0y!Sֽq@PP֕˩[^6f&qmRQד2[gk9:7 +Gŝ/Xd^uDoɃT*l 23p82 M Pp1;UiJ:N^>Bx*G +ȏ+FOYoZ%ØRķRLn8>;kx"HbPTpWiP0Ҵ٥ LJGAlPh^VMG9{PcґƱ (z*FkD*n98dWQC7`1:xG8#*vW!E}+C` ]#4W#$O|3+ZkhČXvb뤤䁞5^qE6|1+qCjUq^6q!E,;1Q}zJR괥)JRQ~v!iJ-heD9FOfs+r+AuK1I$;5j XA?$S7ksBoVL +T/cֲ;]ՒR2ZIs'$Vu5b"m# !nd^W>DZ&i:ΣnVH"Ā$;#$Gߑ*rG_kV6^7YF#jQQ:U.jp;޽RjRIkmn%qڨݰ~~9 VήٝqXzpKr̡h"j i#FFyf?Eyzu07K9` ֥3@KyAj"|6"H ?A|x΂E,T0?Ew׎G=^ 8y<uAOCXGQe]ӡ=aU[<ߵLTIQ`Fq5cQt!7W֠[S\;t!!>)wA8#o$).pd(pH`7s,sM84=k\,jDc?4WTӃuB@5DueH#ʏ; g~Iq-=ҢJAޱt'ǿ~wF$eHa~E"9cea0*^#%F =AAS4F4,q~j~{-CTnX]y',˽\ jF x"'Y3oߜFOyn.l,tSR0OVzxɦ&#ԐFr=9 +#KZp9 ͪfPf;j.!0/LPiH~3Y1 P0c9lv~Y# ~Q5anzwpV 2#ۚ乊kTG+)?05zI H$O5cb0_ҷ22ڔ?d}2ȩgTA$ ʰ?B czz]2}б>M_IVE#s.ue "稻gFq늪H}$ps*FOaXz~r+ qΩ&c҂md +I<֥H8_Jյ(Ynd"'Q2xq sXRܤ,+FfbT/˴yxquFvnǮ;e@ ǰ(eE`'+P0=YKg# lU6[F;lY;`VHpI/:Ə w8a k-J9_ q3}?JftB: 'LI< + pee=" dW",03ט#>wqԊ)z:5`GT7fEe,x TxU'f*L2gUn ,r#$0V A⪷jYqA}GqWiJR괥)Jb<`a!W[H::YѴeu|DG?: :|בDLj"bwUNIכmî81[nt}CQ(;+Whܽo{V-o.LghU?kڴIOC{hY( ?olli 畘|P\QFUFTlrkgk * HpU$ϐ5=Z)0 Dh!WSO~jz?mhiDV) +T:Χ I2Ci" >@#|ߊ=}9ȍnQF PJ=ND[7om>18Wo? ~kٙuXfPc,Iasi[V(j9˽J{m( h9#uILueA%HNOzma=ٍF]T?^+hdLmY CcV/K[6g9dELFcH(,0jbLo6ZXdBQ*TV| :ǙܦO2ߐUo4hL1PJ3Lfi>By!XV~]!E%H;^Uv.)Ԇ K{ip+9P`zZ;XqT)H$}dvՍJ-'R ,fY&j}2^>R8,`MINA + F/ú4,+onvʘ̃]O,I5$ȖjUpIx#c2HE!MŶos֬xe+05;FߔYGGZJ"XKWI2*XKgNeˌȌ>oZ%7Fz,$.-2\#>,Eq†H,hU˙S\wXWEѬQ'ݓqbcӊA ڃ(C4m DvHِnS*>+!Q-pKU,>b?AR4 +d*YOЂ*2+xE֕ ;* f\3^n-[HsM,"2O +i+_oWq,#6@ 1@c'Τ5YMMۜ^ƮAǯJ{ IjiQq+3H7x>fcygoGRauxdJHQ7\Sԋ +GU3sc n7R91~`>u5`X-ҹvFP͝ R +ɭ;hq E¨=MjXAj7魋+d[i!ԚuYYFĶxqPrf^rjYQF͂v}{{u8ɷI::_n9^=K3 3\)3"2+Ztzdq"snYbfX" 䊷},kh:[+G$[p $QΩ,rsY-idV!"Wȫivzmբ\Z >iVL,>FO9m`5CydP"P9 Y-NkWW$bsEd +}jYS!GJFbb+oz\ ߊŎ[%#Yhf[irH"Yvdz.&o+c$2L~R괥ye8([{9Mڬ,cJRHT-=:[}`fM>c[l)8@5x#m\hoZ)JR)JR)Q^!8b87eXPTҔ)Jtda +_cl HRA#=+C\_^ IgXSmþYǻѵ ֎)e]>H*P>Lg"9LZKgl8/HQW{DErwQCw(edqVonсA wQ>LqX6%1&Q?*i-Vmnv8~' g [~;wgދ}žv{cޭ902a?7$wllX!QrN<!Vot]AI$eOu8#rgѭZ6}ݻ6v׾1iXG4QB&$Ȥ OrCήYiX1h_کrp=^P(%N22=ЃuV2Ƥ{x UIs#)PdfdzgUY-~ ^18^a<;g]c*C$nInGyU?F:lşfǻZkfe1FX $= Hv"0TnbMLU3FkMIPX^:s(eܭ +V-k{a s"vVe’[--V6 #N>E%#^tK[)ʫNWt -!Q)yϞ7bQ2+;v$Fpze[;Ib0Ylw @8ukma+Fs"f#G'hOЬyW : R# Yp?qVFCS{v8LVT,*A`,xDD`?faFGqYbtr9$.Yvv$IV,8ggILI$>O,EgiEaW.-bP:g 3+8Iyvaݶ.~FfL#!l7<!>_pNAlyY:]Fu;JdpcؗN:g{pIǻyA\wmLmg.8jP.:7u9b͠ZLPedH9۹Xgʳ-mcbB;V=kP@!IRA(v$r_>f? +m48g,eR$1#'M.Ƨ;F8JqooJA ËApb[Y<`cX!hAn}|򬁤[ {߹lVf+ +Ei$ۿvpryry;q5Ӥ60/&?{לv5y 9&3d!XX[E41ۢ6z_{cyöh6Jvr2ăr1="N&0Đgff$y +6),>ǖ{G5}> zē$#汏lZ# EKKe|ʰm &ymei.!tĒTIG IjgiDgh q!+"C"bX{gmnB(2BTƹe +TaH +G#ʏYrm2}6bX1g{bkZٺhrݕąy +A8x.BA +ϥ)JP괥)JRc5UgvJR)JRs%eEQB-X1m8l}qY)Jǿ u AF0Fsk+is{ub?k>)JR WP6B8P HԜ ,'y׻J-1b3G~ʭ~ױ(&Føu} +AK+3f wY`,* e}ů&rq0fQ/f]Yn7vƷ!]GǕIR*N8?AՎk>ʅwop3=+.k(f0y*R6QF%I88# }.R&cFv>FO +^[~4q ;H g˞*N*P.-oⰊdywF2PRG'dC%0\[*|rEܪrs*wu,qӇ呎rd d}z;f6HBoz^" $2Q 9`AƲnn'CDfcd=ZՎa-+a*N>՝[ʃFk)Xַmq,ј]n3ckA5JRaz׽]I]P.>u?)5jIj:a{egӌ`y$*3^՟F)V! koiFpsG)Qj-y$[u)"IxV̀1*pA<犖ZRJu5,-aa!] 'OwRүSFPLE8߳Z/k,HRGP@f>=J"9W\Gyx>JU jn/:W(pI;C O[@-ژ@QcOaY4ݽdRԝ)JRk&>6}d(VcG.[DgV+y.UT-_O綸7yT%(0YZZM2vgfPq +]ImO1Yyv2FʇkH FGzK*I\|FQdVI+ e짒001l5櫮j7vƟ vԌ cˎH+e- xsTOw7/|*~Nms,L͹pN}Gbx&0Kxsq3w(C2v+.Lzal܀yݙW'܀? +؄K @wyrlsXk2X,p% Ǩ`IUv98jχ/tiZ;Di\Ġ$G8V#:M*d6bD$N*_D,bYXvWWyn.%C(Q a]C ;z7jzn=j^P@YK9 ~Жia^Ƕ2Q+:mJF Ӳ*6+1Ns}9DO.Tk9_h,0G̿{Y~.W/ѿ }FOV5ŵi1X@,sp#El%;cNB6p4Tvu3bI5~ɊvE vp3Q Pt;GϕGa񺾰L0GT~u=7gcr(%c{<SZ"^st +Y >x L1 +5io1nl&sZ.#L {XPWMf`jrٙ˄In1B5%&t-Jv.wFҝѠpI#8M{DUHnU\EG$Y urCQN(ꭅTUaOcV;V.m21g?1lZ:tF]巈xۻw3>X:tTBPn4%41I#"*^xz(K1kLh# R? [Ei"uhe~#iy$KfR" 6-4$i26`N8ii2ZGEg298+ދIdnz0ck> v9:̂LXsi.3+vfp #*g1H[r]H,r%hsxPFPpx#1VgKۦ؂0U@p;>دwW t%D}20]ɝH`ÿ9Vm%4B2(`Cl!2vsߑYVHm4TCmS;r}֕}!D@MAXqb8$眞ՕX&o%ʒ)Vv3X7 G}&(r8n8&-B$Bٍ@q*po\g> V-mYD&3iB*`ywՓK3c;tۂ#n܁~M)yfg6FFXwኒ##nEI-_vw+:621zm2Z`Y&9U#cW IVv +Tݲ0sp2kƉl-􀆸uڤ`H6'#ޤ/-"CVS؂0EGIi$uhCu^皬gy&2dUz ynW}B\ W+ !h u'Jspyֳn4h$m$F$VÕld#==[#J7 +z$ {r__bJ#n$s\bN$Ρ4ld.q߿y qtIdc"+x`q+O +A:ƲOr'W3*08knC6޲mIvѸc=#>u|aeT9Lt{06¦@8ޣl?GލCTÖhm5?F~_~4V~m0ֳ5M@)b>U"K+IIf"q=um2 (?cp}B+,y?47 +?!TдmUFgR #~O'T)QZ <"=!9\*Jb6q8;+=2B"&pX:2Tzφo/aif@dPGLlvBNY8Y7~`_:Ekc I+2vpxf&.M9c'#8H&)^r=A]z HlC +rpxf Y-0r٘9;?2rWlX%4J%!TT`>dՉ/m(03o2B&.0G?VO ʶ^\ZbĬ0@ϯsWWB/dWI$b6Ch^0jSQ-2x> <1yzllPb?u:x0q¶*V5Y-,ʕ%peQ6~!VW0BDo; !ugiwKgq 3ğs; +Zpcs#2ԏu6[i`Fasu"iP֡jךֱ< 9F$$*#{jo_?5Z֒\Yĩ*pSX}[y S= KLl<zֻXCZ?71gI=^ܭGcP/nuԂ7YJ$XZR-T=u ym氄"1 yTZrZVHV:/`G8*~)^%D$('< +cxF,Ru<ȥ* w0mQøxu;yd$Typ,|*TiTpp+cɗj)B&Df ogi>UJV-FɚMUKqÎ沩JRD ]&{x }=$ w09DטO 3ZOY+7Lv;Ÿ*rV=6xL"U{ ۇAraI*鑊_Ϊ2) +:8R)~̥)P^)ե-HYi72aG=IiR֖,DĞ˯2?MK`xXmjFJ8YUp鈭&Iy"HQN%>mU Gj]XjpҥF֌6mkO{ZQVV2YpRq3k?XX#sGm8 +ژ؍+d`Tw\{A&MQɱp``x"HGxX"B7v\{VkXɩj&ϋ &BNv+ְY?S^η! ڀH>'HcԞqz5{;Xn:q b:{NT9aG՚lLm'"$'T6$w)oa$m{nRU6Prqx4bmQvP5vU;GȧrbX݌ưT6Vn)QFanq,]:2\,1A"#8TܞF_kFz:oQ|~Ҽ[HXy;f kS7:P[Y=MCq{WoK{xdA ,_|G}0Y5 ֺ\ p#+(1yE&Y8rc51s1#9;S?G~]>,_k6ޡfH Pfjcd F#sַ5M-Q +xy8Yn:;qiv4 +Åv6;T5:&1Fp Bhz\ na7QvWF @$r+k7/oML6ə+`0}2K7S/#x*Ѣ( 51 5~>z H$nqPS5F +]ISucc0.Uvݍ;Njm3{$y$!Bv N+`$dn}*a4"?:799%ocrMk2|'KVmLqV)dңպfMBdT8VAcjܛHYbqrXK 5bSRI'wf2EGP6FNGJ^\V'd>aH`;b٦syt +:(KEѰ8`zQSkoi:t`Xò$B<>rw یV,HHV5,MXX*X32p*cw%DWx`3#gw|WeҡM|G+ !SB21ZQ.ET %@5 "̠W>Gn2?kIK+J.e8¦bH|[9<0;Tޱ-ƬdTM!733\pd*G@Kr/rUiUʹ9"P0;Hʐ|nm-R"9V1Ww9Ɠ$nl1b0XgZׇ!41̌gڐ(v#dOs^*Em2ġ6ng ++|0~Ӽ/=ͼ%[ݱX.#i*DRLIՀU9&l*֘ӻuŹUO|ddm{}MU!%eF޹ *7Xk[w kVB:ARJ'osn~ƟGT.o Ӣb2#Tm{iwmM<ҷ47B@N٪I(b~arx U.u{G-fmF(CIUwT)"2ܹR2sj4l3MIac$ưȒD}{'9|כ_N N"F˸pH5ñ\VF)ךeڲJ08ϛ`gT+CMk3+"(1u7Ld,&V"e1`5>$r۠BB.L1<1k޳xA(^(߽^Ҧe<jT)팹_q z<ս?éL5i8F>cJYIpӆ!B)U!ϧn+" ;a#T0πN\3`*ͷ+.Crv*X}n9P9Ii#L\ā3xPqÌ՝SJmM=vE( +e$9bMvûID0X#Sİ"ƃ +`0+F/ (!9α°,Ҽx۝ +2PA lqh2I,^\D +mN9jm]@ݥg=~׭G[{7'q= +5 xy۩n)`D*yTB鑝2u>DT7c׽/ɥ]VŘ9c¼iq>AIgc|R5[tWRՂ0TPU镆6>˸f8sW5ۯhB\N6&錜ԬS{wfUp*@aA V4zDq<FEbv'x3(%ܖo>یn>Ցw|e՝\8k\c\yqyVF.$9hܠTOȃk ).iesdZ:fFiv} +xe 0}*CIN2&?R`rpk#BAiGraUAWu}uGA6md9\ֿGJy.o'R,f%9KdqF8Y2V3^WJTG+"dCq`wn$QTB^px^tGҥܼy r*bGֶiᢂY /L'qS5 +w3]iDS4B7%:#+.N|#ՃGlKW$Ry>@{ +`Hxk f9ϵKҡAK#DX*ہOp<6kx=J8vTR8T>asbrG.rap<ʲКWtx#eULypscghTHř۹cp +IIi#$(@lddՉt>ݵ@|؎/$y]Dv.x޼LKsp +F9_\W8M{}c v+ 3 XƗ..fw|@n'<ɻᮜ^UBǵRNW<*Iz-HP.x+[te8GlNM`@Mi-]5T;9ϑg;mC# |+P(][ܙ>"\n H$N1^w4w1Hb5uW0*ʲ XI9A: 2\(9Q֡I $@]fP z-I#x]$yyR +W 85ks3:#"V*[;{sU;wU,UX8kKӴ͔p3 T7S! &KzH0'HwZͰ[l, cG8_[0Ҕ)JR+ Ƒa\!rU%OdRw{q&v"bXw8\^$3tVS!AڮҔ)JR)JVͅCϚkdѴ11b\yɬ/YL,-!cEG +^UJ#;*$ IvW0xPñՋȬ|{ ?6Z~\rX~iR*J +A*ppAyuF`'mCRKNHc,_{H皭yg U%āPس(MdU*XybE=تl}5zJRL9UK1=$ջ{˻ {nQKY VSWchb2Zu9 C7U1VQoی!`*;#ݍ3u5hܒXASb`ARxr,Q4y rps+͍ZےD AyURc^ǧ%āFjlNկ[ C%w? +Ec*#YY Pϴ @8WuXxNl{ VR=AɬKN RANaIH@=.)@괥)JR)JR)JR)JR)JRL\#-O$բmXé=^TƲsI8 GΤnK+Xd3b29ڔMVKkU!Ef8H nOdEy V@ȢV`ǧjFT]JőF ,a0W5+s$qً3Wd;Iv䌑ޥ􋫋c7EaH[1 qsUפ >H6X$#vq“Q6Mpc:ƣoɱ>?Z}f3 h LY07zɺ<]Chm\&yU O#QW Bʁa3CO|+E%2ppG|ė:p TF&RN`>u5* h"RZVD,126:ʻl3vh"9S{/Sqz.u$Kĩ٘pȎjo5n"o!R<ʡ{7X^)m.`׺I @#`sڲbn4gKCprT=sV|zG2twn>A+ot&eJٹA#Gnpsݗ3[ijR:ADػ ȊIu>ssy%t(,* bR $ ;F.m )W;u>`AH֬Ċ"dl4!>1g<,vF@>GұcϮ ("r 8oBQmEhew$=%?67RZ47md.IcbGȦTBgq(|шjE?V.Kw(g^rcRp  j$0f6 +1[Oh"`,H0HqoΗg5R4-~8w8;Ono7@$@Frn`Xt5X( Tb w#rw0v=OoYWHciP#RऎF||Aj˩>%#`(`@9<`짾[xZ0,ۜHc808<}d5-Y4#=ĉ2GR ZVTN(@Kx1¹+ {1V3~IRH-pHc3tIR?7 qYjjif$new)_psX:7՞'!".pʡlhMr U-*ay!LfDi6iJGHW[&-|U#5.Nm)Kspl1bs,Ev+c1Fy਩.򅥽1Ն91(oUyuޤz+SբxmВdl9Z)YAh|kPҵKKeH[|뜕 ݎsSêdQ s["$81A1Xii4Vx܃|Jѯ.ZH&jnRppD;q}E5{HnYDk}Gk_էE +% p|#==Z_O1XRnW~9ǟ~+bm,MS\O҅$W%6嶶cAϕX[Pk'QCCo>xVJR괥[卖7}px5{Z5y!6Eg9x@-%Tޫj1M,,*5zqt%w 0y="[I220g>G8YJqPoڎy>}nb}]N߽_J KRs`~4[RCm7`8qz6mo IWlaYX灀Ny̍#QyK]OSP$tv%`2c}p>>+]onu>Hd2J|yT-)3G;T\9ջI XaZC6ݧݳUeuZd; aWo|=E_ ۩h"5|㷝\[w²w@\aj2[눵mz[Iٴd4o;jd Բ5M$%R#1pOk$^B̪$BX@5W2C:H,Wo6S2 |X#Y:nHUf®p !ޢ|S&Ow6w8cSā5L  wS2I$Y$.n5aCq3N&L;oG֠Q&RYPanǡeA[\$SFUՈ>Y<v g8PkPzh#qg鐓uk{cFOVU.Ы|}yz~Zɩ 72 N8PxҰSѭ4@ВaHIc{o7G61`GGaXZvX[Oþ/.$u,vM1T>K11Grڣ-ziޤNqJAi:m+F-*t~\r8zq2YiYm + |ENf[+$BS`#Nڣ䁴u-wIP$3|di9Ueދ-)"c[r3G#ұ%v:H ^BɹU߅_ҵu)hMۛNr6ϵZ.q[$K $ z+IҭQ "f lFpNj* VҮo- +m$pɀ]YA9>w^Kwho!2;th0VG4!kiJn(8޳᱉",x$f|>Tr'I؋£'64=D%e_W<95(bZ]ժDq&w*O*5C]ur*l7 b #1=Oz{B?̕%UFDn>GC#K:O,kU?迫¦RjF+QY̫&>VpYG<g kEV!x'(I?{8m.w;Pn(I;~!qqlk SH`H8?G^跆[gFCT|8&h+f˂=ہR2w: Qs3fM ˷zƝs=ťݻ`i7Bdh:O# vMNY)o OFA$9Xڐ쑔Xqxb;6O'qk3E ۽Vm|n@=kν~Yv"`7p!3Qڎ},.cYQ<1^nB[.tXZ/L<#8xjh(ˋ$ȨBLvN s6}-mr& L8vjkN[xUf}K31l|p=`KD0z92>08czuʳ[]C MzGn`htYxɕrϨPϦY1 6 $\>OˌdcF&74prsYwU¢ meY$ےDž;}^OV+GHw?.>b{cΣd.,Sndx=YgLo5+{z1PML3;&>pF{01V ֲ]EK-%**Wb7d[?aZ6w2%I:al$@8^[ s֍łj$!T̊ԓ8gP>itZg0ʪczyBxkOQ{+n&2v*LeQ(o#i4֚T$mK n,ೂVH)8Ԁֽ_{;~wg +lmU#zԽ~XÌ#3',kmJMŚߩ=Ē &${ro4׹UUIo*|ǵ+U,Y\&7me!CA `Oe/^OwӎQ+G% )$FynR=AZ=lVv0-#|S035J[M}۔Y7M @ r{Z]2=Zkc(։X>QN1[oዧ1cyYgsmA IbC#1dh >"֗ +b0Ply]^P׻*mLKx AL/!1|y+Z5C^̑y1,m7geߺB`RZt _ g8-D9\ZZ+0));߰QWR3qL@kLd 2j4o#nnw9{Iy ޿c$L +>YXc8Cfм~!bD ao'Vuk|qu*֖2}x| 22̲jJdDw'3߀4iw`qLᑇ^e5Ҕ*ZR% =)TZv̊9èe^l |>:`a6.{zUf # pH{dүҩ)Vn.8Tc$]~"¶V\a "ġQB"`@?S^.-cP.@eaT|j+Xwu_B `r|ԥ+QJ0e`qʐ>qAs=O4Q&Sq\$$td[mrLĖlz)JQ8*F# vҔ)Jz*ҩ)X閱N+ + [M_xc2*x$Gҽomb8j'8ނgG3 {p7 R*ҩU)JU*J)JR(괥[FE 0Ue#ЃXZ}@!$V+6He*A AkMAaAb2 I]61{Xx@}iuֶbBay N}{u^<Y1}z]2C $\69cƽYfa#P\*ƗgvI⑀gY;rA5^deR`2 ՋM6?qTaEX۰xVREny.`ȶm5r%mػW((8*Ιmx$Уg(̠>פ&3G7f.` Xr5=*開* :. d4z]&RF_0o{i+`kXLjłtԠ' QkF 8v̰pn*|n+Xpʠa~08p 5A dϦ[]W"i洒 =T.H6A{u{8hlΪ'Op@0AaYZ[kdILnrO'k(4#Q44BX*5xQqH%].Gp|5`N3[w^oӐ;יk"I bHR1l]Hɩzd{TUg[NUxd\6G++FXΈʽYPn;<V'eqjFZ3>=X/4KH.;2mrr}F1W,& I ^!~Iʂx򥍵n|eddPG`nbsu'0&7g(ݘ*p2rr̓@Lu:DIqIϘ([YktLgo \g3+0Z̥mmN:bŎ=v ךֽ g`' +lFaUb/Qqaʿe}e8a)JR)JR)JR)JR)JR)JR)JR)JR)JR괥[ao!U㓀3Pt6ROn UȅrBN lY.Xی=TwIu +#<`HT_YuX%yQ㹞K)1܂@<ԡ8iLgcMoo$EՑW+Ĩ,0p 8fS43LҔ݃fi=vCgtʠ ,I*杪Z%fIv*G,[LDX6@9׺R3lQw0S\LծZz܏ĝuq{W="h8cOR0 +7}VZsdӣOI>RB'q?;{nobmSiWEU`qyU_ KC5=z/PO̅s cz͂)(R ;۝@@ޡEðn`T( (v|b5&]M7:|w*z,$H]aARjin>*H9Ԉm)m<ztE"8 +^0 dyloFCwFp*;_BT~r9r GHp6<6UxݚѢ{P͌n `ygjZ\jZI;e +:LOKj;MXZXےZ`")@,w~U_K`]&‘;A႒HVg6l$W+3&tOA9w3Xiss'ʃϐβ4+XZړ!M\9[XDHɤ-"veЁ2҈чcEkV++IN=2͝UPM1qU- "K|^)v4{| mԜ,ֺv&N0 D̮}JU +hv q99WuH7VӑտZw>"MI@nQl,d<|lV])JR)JR)JR)JR)JR)JR)JR)JR)JR괥cj7v\vbb֭ 5]\$+Da: u4ԵF'uDє$]32;p}zUxKXvDi3b<4h@$% 9$ug>y ѵ,%[FaY*3}|s]+ymk7BGkv,A €~ov#SԃBmbs0)gγ..nDNV$H <1'$uh$ug旨If``nG5ئg%,Rb aG֞"LӮ`]=w"+k{[%a/LI#KǝNsTt  ~]rB )ߓW M7Q>&c5Yn41ŲDaN[ahf5Ln(&^C:s(9ڰCi:$\jd|ų;vӵdêjz< {)([mA"˲o ,EYCS,ۈl`r{wXB]8xLeȜ|2UjVi4m +d9}<~k3Z)UiTa.hD7ݞJX.v>lk*H#Glq{*GzijQNp3gvqIvBܹ0=G^*ݤWјPq}Ar<;W+t) +K1>O5XlHEg9fU@VqߜV zqUme iXbrN8QR)JR)JR)JR)JR)JR)JR)JR)JR)J괥[FE YH A5,9cLI+ȑcV$8{ALyTxʫs[Je;‘|旤h-Sw1Nⲝ:TGqQim=-פLN +7s$dMբV3 bL2vs+n~퍷y~QwK;s{w$mKL̊U_sqϊ9}9=pqF*'|IwP( ;x?FC82/+m;rgU&lHcvd<|Əmu43șxc!vz#8^-KYD=IAǖI;W_YhGuLX mE+n:mb~~lߝW.4L::H泭KX(*P;8rnk@WN܍wbF9FlnY +єdב9(lv(#hu*OrG_oY %bIjn̰ vQ JpV!H۽c $ +]4(6v1vD +cc&Ί&z#cϰz^c\$i-2WpYq6c$JntPGTryyW;FF0A*-a EB>@c5vhLRi&7c #k|;ɶv XJ+Ĭʤ@8O|Z4Rѫ$7?⬫=hGoH +Kb*>\yz׫Mu+{z/23E2H8z  i>֎~\\ 0\p*=[%\%&Y^&h0Snyb|)~UHdxԐ6klH0t!yZ@WbN8cOnHn^y#\FdDZϘ㚟1u7xqQOxFeLdϑ=kR,6oJ.AFszsb%yD. +U95A9(؛C=!*UL}2qAG5q|JM~ siVX򡁈$q=k-渶x`h$fR>]>'ry#8-ŏEđDvub@r*[S6&m]>͐O 1jVY{ d%U8@پ݀'շ$VM2/D͐Ed'nT2CqyZn/'Z{CRΎ߱/ \/d֮qj&ilHڸk.``cIEx'Q4(8e TFGNOl ;W7YGҝ#Y6)P qW5巰.NBsZ휖 Rbʧd9!HaNO=K]K9xYNݘh9m}̷(Cn%"@%PͶdg5`ןaGߐ!gc֩q{uV#]N\n {YZI۴jɽT0-xXDv׺FxvT!#Ȟqjũe`b5*^6l 7+n#׷|dx)[J5(CnRe&1 >~gi`Wy+$Bf{mN,6h*ů^$Y ppLv-s*jwkwVV@P\ێXzW]%; O #7OiFs87JR괥Y#nTMP^KM +eh, +x93:6An&X紸F.wɆ_LсXV3\kD9Yg5W"8e |1ZRAIcUB+r@ +ϣ$af̀yE]5IozS NcʔC ܊ϠC_jZ3L0o#!qqǕLi ԙ-f%HǖA'z2Yz dsǭ]<ڵ+&F7QH O,U>HêȄ)ܲp7.s `\^\ɢ깸=Kd"%2y>ok~Z[d%:U XYz[JnH@[;:ŶvzϨxfI%.nR`,qn%VkK~yFeqrC#eREk^K;-:#,b"i$02m-,@<+oH$c$5um!EA'H"j"/ΊOaP +5ç_.$K{hxHQjϏ^.mƷݙ`$ +q13ަU)JR)JR{Ul--'gkf=yЖ  y$naҬ:$@VQ)`.#ةtex&Zb" 0K qVkZQR+"9'@'/bfxnA.yTuimIkyIW˶&[#^ãKo[<,o/`@<ȱҧ/&Hs -HʮTl#sޝ7QT5P5=Uu*MnC|37FM6V UsorzۆDU"53b<}8]6M/K[cԷʥ bps?g0ZE}ۜTkV~5/R[Ez6\˟j}BX1Ӓu6[rJあTj>{iк(Vc>1]×:%˯RGc'Q +_uW"iڔ{nF02|Fyò^-n.t*grڱ;XH%xUhd`gpu}4%m˜>6:1t|d wV~#mlݡFwfB+V$@ bn`՞8d(@B,m) 9梗~%G/RFOVGevn@KLcah`rr|rqy4[K }lb_zȠ$r3.mRԚG,8VSgq[HZ݅V%@vy ǽ{=nZ$Js1n9ϧ5th-׫k{,&Y%GvbϘ5hvB؋U>eA+`Js1uU%؀;ָm萭"h>nsy{|]^存B։ +ɾ22ϻnqX:., O=R*2 +FG{a \7lRx*:n[alK|Tv#[zF! 2Y]p <5aqmwP\HpRV݃ +K469)?9(7ÿ!&K2Ym +y] +[P{f ,bݑqWZZ9,#.dIKcr=98u B+hVV8#H&79ѵΞ` 3GQv$@w{z. X-jEWBZQU/sUu\yn'e7(1'jiW:dX[灖0R7 +;I;p's#\]-24DY] +:p[jz7Dhz + 犝v*w>ֹ>O{^O8;‡9ǐ#޲n-u%`ۡ$`VR ZMP^ۈR<(Y#q,IgԮ~x\ͱ +cV}:A3E +.A7%;⭾=ޥu"osdޥ.ᐠ 9hCM[{vӣCB4@큃ݥ֡׀MvFѲ +`#]GDtpX!%g~w彭npK20tM p\QcDkr֢Q$o%+r"je̚u66 ɵ26wHT9nn5M>磄)ćzҪ +X۝Fb:IupdÆ RwwtKnDRYYc!r| zKj@Ho4ymfN TwY7Ev|  @Ury&~t:B Z"̸ge\_ǨOqlP[&a13,d7=kFgcd#;Pe a6*)@괥[6U'dǽA#:lZj̱(pçʿQA%qsڳ%:ڄ7y7EFC`?.rHX Jkx8f]s" s1+*FfxɉXpp(A*@{ i5H^0*UmVQyEYI4/Hl[~7s>U&[]q#=QU%NUt#J!ym!}1\\D5ͬFCxn2+މGBE#do \ay>uMcF`tB9t9\*!p[w|n{.GUesr&}0Ԕm888$dyV<>M:`ClIІ0r2=CN6*2wr/e}{D: jp"]#`qڳ-ʹKrF70v +T1XڝӭvF2gaFz@o/c Dj## ǿXM,̄4'n8 y4K%’A;5JR)JRwҩUjqjA VBJ6\p}ņ#J #(R6v ڤ*1Lb1LUjNѿfqjSV`UiTVbTmGOT\r ++ݝYDv\2}*VLRT1LSZ1US2!7eUA$b<5tZcy +n!\(̌\l~WIIeo;ږs2LKO( +w/3|d&mP2=8v̫闍dn9ʱ|]I,RuINC6<Ưrc5-7%XaslT퀰(P +;.cYPYC2#XWŤm.PU[X;sTW5dCfaPwlʀy<+&PV#8C7#<^a-ó< #$3MxUs{be +rI׸sWdI.&LǙU]~`{2bqʾ4NJ+ +鍌 mޫe[_Wq"8+G+`)$nP!.#J6Rն*tX|@ zk*?5)K#JcJo2#D03i~k]kO$kn0^g?Y>-cwgFpAb%q@ 6Y^"Y DdFlA_1H*$[{>fHu;# +TBIcj_I5Zf[a62BiOѮJIf l.M;7<|af/'UU2Ѕ3nNܣ"Ԩj[yLMrQU& eED\~m!HVݬu+nct1cSzemwkuD!V|F3u70+y_Eqer:գʕޫ ˑY3K""RͶ32p+7x_5t{3DȎPЧ u+41P$ # +;p2GcΡ4o'd nq8ٕwdg (|CtX0Ɲnc;:2RFyc4':b\_m^fyY8NF5X%1ϯ=k_:tb+gX l2>ix~kAC-FK Xc{9#v1W WveLQ[i!72XA{7uQbd,) ['QLU|$/ڴ7G˹p4Q12*~f2I=V-V+OO%i>XwVҍ7WdxTcIFFy#n"d=exff0HBNjs뺠9Aj`#޼7KսX9U!Y)98qXVlPh;8eVal w2v^yM;$.?_̡ @PT~O4'SYg骼]VpPq=5_] 15Ĭ"ڱDWm,xS|/h6 +I7MQw>bBJFGz_C$YBl`\g7F}q:n\.3-KT9VPGCZd7sx8ZH#2:eGlqL !RPc6(µAJw$ʎ]L+#ȑۿjյȻTf2ʯc3sP܈|=obRC=h6i$Ywex&elY=&NH'ew+9vXdVBT j}:7(n]xQƩG ~0IZp#nLDu] +)qU gg5捧Je[[餞5V`#$pp;㚔1٪^xLa*[<?6%3$V 0VHƋRp +n8{VFc擩53K`Ė +@ sۜUj-h(59y3 +p9bUSј#Ĉ؅ T,qְhfזd`ZFdhնFH.lV^O.B^kd=@gK =;UJXY$ +eFSғ BW`@`]\$:NUh Гr2c9iJR괥)JR)JR)JR)JR)JRLR5=95Hz23*NUqqnH[Wi,珔p}z2mR0\F}p3HR1S1LUj1L +RVGh/12đڡB%pG99椱LRTVEuoL,f=*Wg |fkC#F%Bmȵđ* 8ԪbJ)b1URTŹ%ZHa9bK$@ VgMHx]xZRJTnbS +CW*H8= jRRJR괥)JR)JR)JR)JR)JR2[9¨$NT>rHe9׽bxKpM%iH%N*NMMjiQ:cngfmݏ}ؤ&6傄ߍqznLwJUlmb0r&uk}~MŢmg.;@c۰>/#Je*#;`5Jżԭ5UC!8,r<+ &=x>ӱ^&׬`9`VQr* <ܢVAAq5tunΈI|3 g*yu+gnDce_<{cw1jֳ$Dq'pSґ͓">Mfsyz͝USH͌_sYr+k-?@L7oٜ6{etnm&fF9MpO|TƿgPbIb3G摌#5]'Z-dLlRn A>X\-5dṂ%HdlgHV=$=ؕ#e6`ySNO9??ij1'72} ڵTL3gjڀ3 +궱*nCncTNf$`p#p28Qu7uwfINzPI>U}R9Eݸ6y3V!r\1܄˼|sj5-0pOlm'׋zC ӪH;w}r סV/Es;=y{* ;0%@<6x=kψF%&P +@>rZmK6g!O@p犤텳L qϖ+m]']dɏ凗=okcʭlhIGj~~!>Np k[fEdw8`כ]V(bT 8|Mk.5Pf> Iv#8z{yŬ x V+{E0%*kfʫ׫vWIH F2`!,s+&+X\:0`rXm4 4b܁qk6`{xՔUw#fNEI wKHw0Rr85x^nz\eް3Eՙ=8O^0iL͍ +f>xUy^Ἅeãg 9km~ $^{w H22>U+&6L07{w۹|PI8U ^r{GpAR=*Z3bw'q V۸#$2#k5-۵cq~ڻ?iޕ^N_ /SII'$v]RPC +@,\W$Ucխe7+*!H8 <`Pqj+s.$)%1uPQ+t$9Pc2ȱ cjkG,sH` W?_/_*GKX/2Qa.92x]%V2:vbw`K_iα:n3b0{[VV;lBO$R2*Jʱ~V,20ݹkz$r|рXBeNws+tNe9E0&^#0U\!JR괥)JR)JR)JR)JR)JRݏҵo ohz(f3d*maah#t[HSՋ<w@fҤY`gchʦw$68}֐Y$p3n8; 08Zq 4߂N=OZҗLfIWfc8-_U䲑di#l[bj-auY }A>0w#* _J]Ikmuo6Xϐ>u-lO908nr}MaYjZ\Q4XZ9#ҩNAQ=k-f 7[: ʡ3vܣ @UQ/Ofo\6*#嶰d;׋ 8⵾7{\tr8gc\ƕ8 Kf(sm$~5yOeH+)QN8%f=*Dt,d$=c*͐A9`vyg(ׄ*qQr:j5..*8VChPXY0D[,q.9MNI5!KRX騟W8/;O(dh !BXo5cl$Vv;!ly䱩7s +u|z`t޲X/2p +ְ<]j,#2۲\EN5akHÐOY75$tm#MǺPBA +ռ֬i3 PBrF=8>ټG6,v|mg2 er*/Qs+* #\æ.mT2q'Z[&t-z&߁7_!{wo{ĐJZ1rpqSb.-nYV$7$$ k8߻ +b+*c~ןMj6]0OJg@y;-N xƢK^! AY7iWeb0/C=jB-@iZ]NbaN਍rXyb\n5m N#?Q #=}i$&2sci31a{ƆM9R)aMt&E`|j|=m 2,K./JOn=:)>(d1Pa.}$fb}UWk+I+{T-NWkGɽKe +YF2{wgu.=7±c4kbm FXK!@KV)ƪ!Mf|l'7Lwң/a]3\%uxWuWqccoᢷMuz[In ]Mfv +Qɋj +I wo-|Ei, $_S"N!7 '>+O;K\`kŖiisd@.VMw88 V6{-oYF7{\%kHVQÎ8n>nǘŪv6vipVb!d#~('xRV躎"[?/Gz[- t8VIcM@ +pHR_ !WF2~c,PJVHUYz֟d7.2短yv|&ĉ$nTN௙JR괥)JR)JR)JR)JR)JR Oz*J +ȌjlS?EWEE^ jN>把c^$as^kVtSSh݌nݏLz *wj*5ݻhϮ94FqUPF=9?W{Xe1ȎHA|jņy$!v6PO<;;I*AWl =ImV 朒)A *l~GdezUԡP{EE@@v` +*~Ms8M="( @vy$k€9'}jGSbU*`hT=*5 v"GU@LUkȍ +2{ Yg".ĆH]<_zYKjIFH°p8M6 v5MB`qϐwQV@89Whb)*ƫ 1ϭWhq@y +MA-jQW##8>\RG6JE#\MyUkˢ`=PpjERHdޫMҩ091TTT\SDcPxJ}i5N"[`l1ۑ5]*XmHcS~ݙ +08@=1JE {M3^JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)X,UX7UMjW5Q+㹯y?7Kz)JR)JR)JR)JR)JR)JR)JR)JR)JR)@ +endstream endobj 167 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 56/Tabs/S/Type/Page>> endobj 168 0 obj <>stream +HWۊz]蚼W%4 }2aތY2kD^z6bPuU^#9q4=8m~0}iRlv8Maz8l牯3cbZӻ[$gL݇n#f0?ewl^o>[?taoMw>pymNj3Ol3'?섟#X5=~ vA׼[MN{hsb03`LʱG8 @BDo+֭s#|mtdmL<ѰNN}N;VwBUԡ+<#Nn 9ļ(>1\&'O!a lIbAuRBT,CMF݈Wx`8?FZas8Tv(>t7U*e-:+f_]c?i(;F GP13,6EhSP2j&g@qȳ @+P:Q3Z`QRUj +YKi, N-5aV>aA_өun/MB\qjKq\I0mqAO+%hv +'V){"RYFABWpf1횟T*.`%M-u-XޛbFb۵xQ(6["AOHꘂw 3bfݿW-sY'B%1G*jA ݝ$lQV-y5c}3v*p=RבegKׇ,:fAA"~__>H5O+]Δ[u߮AV;6DYaqa~/Ɨ&6}%XT\:6=w5EEr$D"e8]kdoA^&&A/z t9پAZ"Zb3Ö>6/sz;(!e"CS~Kfݻ$pz7ZVCFEuczH:$q^ozo|;T_qWTq_ulk5$RYivyѴ ".Ny~1OXh=8R nQcߋ5p@oX]Bs:67BfaȰ=E\^XTbttsΕ%\TVV#IKfaOߨ,z;^ RD6Dcx4QF;)~IJGauΰ$wR.z#/l3ͿM(2_j0p~)h{d] qWxPq&uaamau\dJS:9dc,Lqso-~KGwp\67&#u/X-$6wHz|qjsvJ*)Tیv<{mFӧ-(a_5OQWvnRP-n!bXcUM;B~8 #{d" qW4|ԂgC>a|Q%prrGmDX +a0+Vu BOH3 + +Hck>=mcz:2oZYRzjN Ucw"D0][a`ٵq~:klNd'2_oøY([ص7𿁲"( kG|Ldvqz7iWi)j}7:`Oԏr*~W1m"[GbT0\]V%NGdڅvӂ%c$TR0e__>P+9p@'.P [j JDTݞh;IB]{ 9KKx:F7P} )hH$),BKhZZ"^9\R7 ' -N7!Q|64h6эJ7j>8N+>%Q¾G}k­Rw Ui*"aH p$}eE*&LŸX)D?, cq&Zo4Ee똄И^4? B63(ܓUp>D+ +LQe1/ZTHaH*ݭs#4Quh@ͯn@mi#ò F xgۻ=–~O/=jr3-f˚m+9'ښ 5޶2g<S؆{ML穁~n`Qf©KNd+Xee@.Kߌr 5e.x̹?1'if.vpζd_eqA3}Oϋ=l ;r$8TlHPݝ(abIa$= '+)t@*iOp,7;RRݶ`0,^Pböu`qRP۠(.^ Ey1xn*WIkynT,#B5F=@š<-QG3HpXz,˻;X\ JKdg3- $q~H}/;8,lp'cq` G1?)ig\$6†Z2uϼe[bmBF{[퓁N#:>Yr?*l}leJ;pk0_!e뽘TbF׍} ٚ۱ٴ!0@&aPk;$H +jkty'L(-jfǩzϢU3P8I v:O_n:ֱ̳ݕ<Ƥ()̭jnjSVhiy2Dم_=)OP}z9nBx r_kGNkX4rl*\BF3ayQNr"R&|{11NA-EP~L` +N kČ>3?:%!012Bfeֽ#GOlXrG2Ůڸr.3i ]\zõ)wM}%Ѥ6iжVHŕ ve^%$z%HFj>RJZő*"c)3G@jL-*l4PbJ*2\r-raA<|xzwjs^/' W&VqDNGLEn f}+hqmh, +fŚy kʼnSO-Cyk.z曺5$h ##G-y@K]iU{g ΍! [HrJI$v{tsŽ] 2ゕzvU[d}d ^Xd:o%">Vce[ajS=)D s Miݣ)J%Tޅ*O! T+\HKB& +S[p!$jfgiMAXE_Iu@_)eYR~~sF$B7:P 9=W-q")@F?L7EC-s_NdğUa|3rujʸXFO#sV*roV$^x`革$.ՂjOoK +3Bۘ#D6Ik&w ƵzAXF4K9덴Rk3QӂIv B8N  + 5؉TNo|xHQ8A`INB&>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb + L#!1"AQaq2#BRb$3r46CSTUst +%&'()*5789:DEFGHIJVWXYZcdefghijuvwxyz?괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR+X=w.## \f-Y@LDJaVWSG@,ɵg>cR]y!(Hу +]~#iaj;ΞCnF2@ +@o]'++n֋rICw-|Ae{"-69(V e& :؉0'~>gk6lIaLF;r$d2R;FA7xwIPL[o'! +#]rOoxf=;C-<ǹȤ*?=oЬAZ2C!\/U}ς;E)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)J^jPY:4@!Cnjtˍ*K Ɯf&]wqzKc !$?rH~#[Zs\[[FͲJ".2Nγxo)CB*1qn{?LWwC÷ɪx~8!KVhJtYǹ@E67P{&ÕpyϠanzdNLI=שj"[}6Zbb"TR8?by"DYy-̯4č'ebqʵjחZ@YIoL +݈>|Aa56ܕOOĮwP 6e횵X"K +m`X&` wef= zy;*tyqR +W7su5:@P܍h.c* x5̷Ͼ)W16$Hd +ܹ;$qSk n81Hѷ>k&jƓ7yΓ՝1a=DrBe IUE{vIjRHm +vyǵJUv#bAHYcǃڠπңCO#0)FFoX.y'x`F1f,<3۝9w[\HA}B+1rN\T7څā6ʎKdl]waJƩLڍjW4R#18Cڡ|xDT].q;ԏEԧlo*#;7@%@<>uRү4}VWs$ECu?oAմzeΫ=Hk+o2Hc6q뚁75&tr~a)V\qFA?uYvVn][)9')JR*WiS\+1 КXY]k$8UQx˷aW*ڟBy2389Q^~dϩ}kͦIrjĬQ6ҡͫ]OaXK5U,q`aGsS5a=ɶx9L m灵V5UWylp + \q|/P3[#"T(M@ݶl8g|Qd a}p\A ȍdf* 85\ݝ$%Ub8/Ye}i/妉?vU<}+Z^^-ۡ`锒EL n~2g?Zmiwn-)&@><~7VgӾ6%B=kK %2[澊2$ +wDf$rY{=}z1(XZ6jUOp}fd4#oBBXx1Wjɨf^G#Zhr]m\223Z!KmR[Dg%Wxݰg־dB\ ;Fxr +JSu 'icxX( HW]c͌sgfB6l󿄯Xuw.SIXX)esf*jC 5JWA_i'Z[CҒejv.HF$ 0[Դۨn^{ eE +TO<:lsbks+# lp{ǯ}%[F҈AݥݷX}'ھm5}FKKT,{fȜ.T]N9PFsPtBkG&ܰ=IuTVyV?ZĒJ +[ +wYT`sFACU1N,de,zfuݟ9W^ܛIcHŴPt\'WLLR5H$U2dmv2N}+_L,q~MW]G +~U\O^=(85"(괥)JR)JRVkO w.#0yYj/Y[Y.C$h2GpԫB *.\*"i> RfMB0LJF_a,?i$r1HeI]*#dnc!#*sm4UPR)JRF(iiޮܠc9:]yəxR(A';Cqp5T}]2@caE_Ҫ=otZMj\ʅ 0##> +|G|Z2: uR$ {%^Gpt@,JmyP@ˡ/c3 B ך%OK"T1ی63~kLVPB,W=}Rj +Ȓ#/ut;p}z|>v/̛B6Yr0<#R^a6XK;0pl{7&2'Oj1|۰smYu;rcr*C߈|t}-nsnm5\219(k&r T`xe0*ȻT2`.`c]c+D"7 `A~ .ӑ&"±H򡔑y>.$H&a4.첐mJjŦ%5;IT!rShjVbu+y-QN0ޢ_M iE¯aYxm}fiQQjڅyjP<C*(bQ(bs޵hSh-XjeUeUGK#-̬v +Hqy9ǵQ+ore#J2oFݸ(o)qVQXMXZhTNcrWПmBx/d/$"7aXs<֋" i;(kBVX[!"Bu3c88ja-S+n&q!0?ymɢ# c]F8-RO"izSi;1]亠\ qA)fr7V~z ]*3X+spSn^P۰[޾[Ì$/ 3UI/({`bOz&'hʅ+#矝|i ]T*%9PF2jVǫD#rUH~:3Ǹxl궳[ܼEP0X8!rs߷jk{i#V@UUm޸bh[uD!X @Ǣ0sfXѭR$gH,ྀm"^opc2)EuB\ @|m9-BN qIJT"f 1;]YxQ``өi a84m!6@UU_C&bݰnp3FqUy/MQe`,9#[!LZv%Xm@K.03Ij-KY&M 8YBU!|T+ s%p4叩Vu=-5!n)$O)8 gf7S~>ЁS9ڪ O'"Ki,Eԋn]QUw)2uGȒ*moZ &]DT {TzTᶑC<{fER5bF<>_i0[d3O( +ʿejH,;y.q9g֧j: +ηVH!Rc(X*0Wiz!&N.$iYT  ,CO[H"Rˉ 榾jQj L*`-1xZ.3-㗐 11e.`͏*qtmf1) 28vy^Md,́8b{"EKƬ4@h cؒ{1xgiwk.EԒ:l1ϦAZXøA B*JR괥)JR)JR+u:5@NYXp;z:6iP*a< +L?S:R#4ܭ!n.Թ=p5֯53Vs"&F8珥W+M?z,|g n5q*V0N 63WZܽ'VS`HRJyf+E pJ)5"Us ؉Ln23sEm-PL8ԛ+uR*ñ*5m{R%f +*qǡYjVڈ-m*ʠ˟*ʹ}}vW x̟)# *6iJҕǨA,[+,jgiRiQ5 RK U]mfA d3R4GfݝD(.7oYW]kֶs*ʦFb38sV4)JV+4G ZH\fe +Xr{yj5XV{v܌X*F*M)J87w#E{mEC) })XWӾ2v)sp$⾭.⾅'$Xv 5)J괥)JR)JRGkI#NOjc`- ,c¨Qg+E:rЉVH齻ݼۈ<CVnd"3'qC# L9YYJ0H'EEլ_R)%<)nMDUp}R)JR*]M=]ضqRp8V >ݡC$b_;phkɯKkGrQ⑑5I] G8ɫP""O3ߏ0` +:זMfY8$8nXYJ1a~'jSO^*3NSpwmیԳj3@йpdϔGCZ\OA"LHvN湸[n{y_I;w[L,H$3d mBr Zy]Y~NqJHRD!0yoԯFt=;.\# sEF[,@Yc1a9NK $EM3ƌ6pT9jʔ:7u˟%1nDfaT/\H9 U5;ᵶf ģWnןZڙZ$3o +IP5__r$sFXBZ2S+ 9$w5oKm]bKvX˲u7HT9P7 *9:&Vv]E g|m}qZA˥[lq͒@g<n#_{Iz>IZG,xsN tw+eV% GpqFxM#5Kmt +*6@9{H"w +rD600rA=Mh5 F6192UG[ҼގX|vY zN5k7Om{s~kd!Wpّ$ Q\ve}5UjVV=pYezh OZ.-03:k*R[kcKHܳ#$c7$;&mWR{+x&+xeH3l~y.*T 8޾f4[_) ~UڎY([o2fP˒vEy3ZԣD-ŝtl}Uk:osqA%r%QrH#쟮}+L>'krYg,۪1#mJϵL/ueϦ IՋ%\ )>բ\\Zwa-䨎TvN}*TjVCd;C`N8b-|Zn:H%hm3OH@ 1T\m; +_D-]QܶāJncվV:{[&1d.э8?=Zn( hRFJBI#BTDw\ AC,YQgJgq^{m:6YCɅBfbN' + +F7Jb1! ]2ݜήmJPq  hIAsZ&nt$pL,`,p8'T~-i9ei+tBK8$9ܟώmtMNKqfPERR3Fpy<+m4{a`6 Z+EwsaL }*ڍh'H?@#Pۀt;dO~9]Իx`WerF<*G? ZCuu=)@괥)JR;f,!~[JR)JRt~ɯ[xpjXzR)JR)JRWZNv]799H"HcwmͰ7p[xa.~t +67bI N\9^8z&;gR֐b2R2٣aÌԭ3JSOpUٹc' qV&4m=eDmrlFbEضͧq8ejG n:Юnbӭ6G!;إw z8$ic[!V,vq*|1t?E&YC2iJ$N}H#qhא + OYvxѴ`ޮRWmso0Nɸ6Bn, +{WlgI.GIa1.##gs+tshr0o'ZKGUx FIvw98fiҙ-kmܘX|OzFu-Qq+]pM_-j'6RFoTA9LyF +aT192HyGʯQcv3g8)6>[i4y34g #1 dA;˥d[MF=;+8!8_wfEmKJC8R3$eprɰ͕>nѐL"2ɓǝ<>Cqrݘ0sS\ Cnǎֵi3sy+=U%s' 8i:pwrvwG:rI>R=r+Rv+Ke<3&\8 =2~uE&Ȋ`!xJ&W)#Y7]؃`}|Qk=Sم'i I䓏Ak 4D-I鈑F_`+{v5ն-LҬ$y!n$7޽ż=C6KUG, +rGh=:嶎-[pXvqZ"L,>3~D꛲# +7dzf6uŴ#Y:MBP?-tH< ,@W<ޠ..Ck𥐝e',IxQ[(a!7GUd?fgx`+]}`ڥ|>T,Ng>kCix~C:%7Zg +r$=eM*KiT=K#)c+ 5*mB[˹"dA$!$䌏1G6U݄Z-E.%1NIX7ee7P909ʢxNk[+n,R!C#)$;UݾcC4" qprNƚ|2$+F@)rQܒF}ꨎvnXj2|#_Qh3snkƬ$rɴ}q8犺##EWzNȌb9Rwd*>uo^>g2u67ll>oLүnooHB7]9d<lgK}fm~!FqɩnnghĔiRRCޥsGzRI ,@sv*JR괥)JRڌzMR,QwH< +SY.w$H|Է@)JR)JUfuҳeq_4)JR)Jpcn mہ''_Vz$~v1dP >B($8!ɬ2\"V9ƾT1[.]Pd +2}2kBNp."$c㿭}~7^<;Spwk[+dRGPO:JRhHGU$3+(#$+p!Ef̳ȱYU8؎SFA, +UNI:Y=Gp~*Ǩ[;ۤeP{=3[@U dR8!(+ꔥkBe!>R# ܬF;+7QZFJFY_z8q߸<&QXeuy!0H"+m Xg |N놹k~?^__18隑>HYd4e^O#cQ#RMnsH.)`2*Mֵӹqiz=V4D$%rI'hg w*ȻqL n92Yv5*c1^IUNx+M$XcFRS +m99V5-Cls/X 1ǥKӮ9]wlb=3s[<>*&vN %5X+JSA,{)CcTS4SmweU|xWyV408̥xi0ύ1?O5yfRcKlAۻ`sgp%tear,0}v<ڤYkKgp*~ 9׊4A$f c=88jz@-Cr]TU +ʻsyz s CX +w2RGdiS6l Ċ C8P9 d5bא,yIT0*v{0 X mdYڶf{`7Ib!R@K( L7@mYx< 5/𑱼6ʆf8g-fKˋa׵d7t9Ǘ>*,i-ddy" ޭ!@9]>Ne{d5WD W![,$A[ZvZ $v9FjnqWg[+;"ɉEAWI/A9i:`;##'pkmuRJpI]IeI-YD"D%PR8\{} Yzy,nYG儸 I1^˯$7Hmv2(~GJy۾YI$#Q|!wsc"9dh۩mLD/_jH!R62UYIث{@d +V)DYwd`gO~ \46VPX>i0EQ3D +&b^tic!é:rAo/+znҽr*JЕxLV?D, b*<r~R/u,h`)ٍ2d`sPO)H- lfS P<ô, `|k_ ikyB [a֞;/ d86+MR5QQF/F0{ [U7L04JͨL{kj f() _}_n `ҡˬh׳An٭ +v2A8V#WkTIW?MTfINȥvI 9S9 5}^iddhBYƊXePKcU%ԟS0g).B%MN0skXE24 rHl%8ao׮`XCC=bY xߚq$xam +,4L?@Rx!g6뻬MݱskM5Y^UzNdFMO%T=xtKI.FAiې $gE_ "IVu r >a Ao~%z&Ϳ޻J g sk 帊2 ] 8$gޤ]kmsC+3U.7*+nb9=5t#F^km v.AS j\|a[|Mkq}nE +29Aj]i$CJ.d]є|uz*Xapk)}졄/V#Rv1ˋ f oo$&=ʮC0A#޵i:mM ܭ"pncx#nxԽ8P`F @#|ի67:ln%" FOX0Ź*$6v3ϥhҭo+m'4@H-6mnxoRFGIEkK1aoƮA*qǮ*m.l/缆#"]GQ7*I +Cgxjv7wmas2jyZ7Lb#plV Bi4(%0\< Fq=He֎ytê28$d5;+HcO" + =Qjp:';sWo`8\'T^ynK30\qRh+/ඵRhzo[ﯿZ\XTHfg<A޾4x̗$8ԓtcOD{x"JGQ ?"@5&~V̲5=7HP1٩~+Ԭ6a<r"d#$N0?IWvW:Ѐ7=D e>f:m|ݖ)b+ϹGp'pq^"^tdY.%Q +B{-/nv HU]$.\+^om61"#m8>\>TGҢE}`7RQ}>굸u ;b0h8 T˴ccG9=6c = q[!Up3* ¼Ow71#: ۊ}k}Zyw)FlF-*>GϢwGvcr:H9QLԣҵKw^LeROwcnyi"6B򎪮ޜe8W'=>uWZflVH;{|izKX6ub2r0;r3xr ";d"Y.X:?R~7ϭ ƶ+ ZI2!u"Bx>'M"xm笠BqߴqۃV(42 )qN~W8Ql-LVRz)7 co{LSNȓax# -'8&JSҵ̬8 AZt46$($||H+5SfLRRMh[H㝧PC:<v${FL8#>-㵍bB+e+)YPLT=GHՂ-{0epóyHzJbJ+Y+ҕp~*)RYcj%mc$F93th&Uܭ#؂2|iV0|,ǶK1$G+90P Je0{T +M`ǂ噂) @Nx1[gҭneY61ʂ#K)JP괥)J)Tw>ժڕ#cߡϡRr>9Fo(~_Ҕ*ÿǽB=85yxt/t޴D4L +RYZMsO}y&}H\yoHbGIG>AY)JR[#\ȟ/ *A. i'M$RI$4V}N䁂@5*5U0QnHy$1n@'Tw8uվ뫈eV_Ja2$<$!waNN;88>RKG,!:k'l\zvrecuRK Hz+uX^DTPcڼ"bWrmc}IJilDpE8 ;LJ.Z7N0i]IG+= UZɭ hO,P$CHHRŲNsWb@_yn㏵Tڪ\HRP- rjWXzBC OI$p1Xu#,:28{v/$s9a=% \[.5`HU^VH#H@-vyEƟ1%- 8q^NԢg2vGW]ԏ"%穌sSӢ$tΪ,wm?:e|ʫ)I2!b9 iu7 m8Mh> %X]%G|գ ɏ|swYo>- WaޥT1Nxͯ[Bwh6 +H̃(G.5mh6PҕJA 8S{;r].,flGE_iZlduaG_{y{}I3ʠYUP=8kQ@'ޒ "V]%9pyj<~*8fĂ9#B+(8*UWI4r[kiGpG֣[i0ҒCObg\r02'Fc-6\d+n2y:]k,8IڣNrx;}vJc6WMŒ98,Ii~ȱuN>auc{՛N <ImRA"3rʻ +B@9 E{.$('F)h{bs\U nи0o3('5U%H9ı  CS>J-_r[ds2ഏ9O=TKK"iNỲpH^<ڭ_6xQ\2Jw ҾR  ŵ k.Uw$)oqqsmW_xڻX yvce sjaN2Lv@*O,^Wcn#X9>C³ۑpAN+0gy[ ]rI8Mu%hA41Q* SpA$Uw,{;{Z$v ;9$R!|j̈́u{`ɸr {R7s]KpUy2XlWo}YI7+,>n#ۊke1i4%gs@zJ5bnmBY~NpjD6:FCv h0˱9 O(& + lĕvZ)vv|)gՊD7b<5>oXw _c7bgneNx6 ?7PNйے +h?Y_ȑ;<*ȀF$p@#M,)$ؓll0 [S4꒴*Q;c9We7IӨ8OĖnw{` J#c)`1'9?uGM\PM8I7mNxɪEYs# )*N[jNխ,nѮ$)'.\3ʥd;8S&vYOFBv“v2}3YLyl2pݎ{`A86]`f\8x8ϮA>(괥)JRSw?VjWɗW$KXyXr +h֕{$n[i*\c}M@qSiJV Qx5֓Ny^ݸ=/UIcߋqYw~,5}Y)Q[yevDeI@mk{9>InkOFIpWPٟ@C"WJR)T>5WMhI +p@ G--UD1*HRa(H>+/I:wn;^4(Ȗo4jy Yl>Gzm*CyC \j`wo$";9$csȦ>$yp'Qd(>e#n;zvh6"FD{# jNQm,j7Yffap_z 3KjbJLDmݎ | *(uuVFElۀkUm1(˰wf5(Αa鮬-فDg2(AyUm.dg, H>:O?h9Wީ6=.혹\oRPjk+t?4>ĬǦk( 71|b2o9?ԖkL3% q}ʺ WȱF +KnSt#FvFE,ܕv|"gRR dd~6Kg`s^B{ilJXDP%06HqU#$,Iy'$H peҦh#9$HxP}_:oil#v.<7ڝDP=jmu&nᦑFU`m< qQ::<(#mхB eqV64[D6#hNǾxe9[`B2YFpxISRVG\Sȥd ,ofVX T1`E6S {U,`EO=p q1 r>//DA gQQ qJvڇrFɻcC݌gC (NncYUq +}cc=-޵a+C"쵹y +RHj jAk,F0m5,3#,pDi|1 q[طR#!+$pG5+fm:$xzvӳ#S6dc@-\ r^mWoo!i6IQY$i agzc銭Iѵ;#o0wkًJĠ,IǭMn.I j^2N1+փ󚩛M庆&vNcCqr@⾝Em|~2s"R8֩Y#Xd&-T\ƍՍYCc-,fI-Y@v H/4Y߈Xn%@q_pΗԔ0ż  )]w?*(_ IS#,1L+eL nKf)~;VKɣ E46'`xT=ڡOi.s"$Մ CW ׫jk>~55Rфt.s};Թծ/g3n +v-T[m[`%[׸5$K֮n)-mF,<WŎu;=LL1}br>!PmJR|[;=X|ky6̤mh}>kg_JW3kukFī6 Čr*^xE]VTH}Gul% * 0 #;[Y)fDvVeV`䑟oZXn#+#쌇vJSkMetOSڴa;zŀ܁o`.Ȣ=ݑ}1޾-u;k̑HGs{ JG -@H@=#ZfG2;lzTH#i$`KrMyZu/)yJfc궒~ <>tmu- Ⴌ3`|XHEq2#{[Ri-U2tP{>tRp!L@|p1ZY$Lc62 `k 2U 9\˽Nā4  /s6Nnez出W^C, +ȥ0,f24v[c+*; sڶKŒAbc$5 A$lOf Xӊ-rN=|i`cr%dl eoԛnOp̨N;= sAiH.pھX3'M +1>V_Vvn+API#T _uH7XaXc#j+İt9)88<~A5"!`|hv2MN(fB>66~ya_VWj`p8 Az3P|CàD#(/4hP:E2&MZfU03#o_LV/Z;tPbG|7w 8F;OY'SsƯgjΒ2(f bA.;4ʡ *rr\Ѽ.O2( +ʝLjաhLDn82 +6aۚ^(㺉PL`:g8`c쥟`\i dlm$56io'JI[`1g'{d-b0yϲZIH$`@|bG{9e,\ܯ$zX[!#X pxǮkuuU80s>?lm)5E}BN`ks_@P>,2g<{V⠮b0 ~=jWkQ4ԺhI&\"8}j4VwYsz2֏,pZ61Q[t r [DZwO,<-ܑަ6zseBFps8T`# W)JP괥)JRS߱ut5mQ ґHRqUkm!9C~*GuAvߗϧbGWԥ*':DHǟm_ʰ0⨼ ԢCN{GJR'ؿW[4n*0 o*(F*?n>+Im!kJR)^{r,zL#ciZ6]$ԒB~_b)e qDu78 +Yq@e]mڇ?yLxE}k h،`}#uN_چsɴ̩?x^]\iW't-rYUiYNܨGu$8gA!W3q+60ƅYG~{΀w5po3Q%#.[  lǀ\2EWPOiB1Y"gR{[nn_K  i:c{T=4;{D=D ''/ܓ~k$[L N1)tit}뙠h;Yf+Xk^yqk|îJ̒;ʇہ®㬌KnmͿ o5'J5^FdR,HMS_8%Aw# cӌcW:ޘ,$;`BBD+GҒ-FEIZ9HTwa +AXtk}GjF !}j\uJ8uL )}#>էL6VVr$-"*βG0X sz"]ke,W]lY4H5!FDg$kkn*[vܨbq@ג[ FkI4N;>ƴjKyOIM9cI*Z٥ t+L8f*IgN{x&q.>6HدV?vA7WLLMp) Gu]1=V6+uَn "UNz m0WA^&iZnu}\RWPF:D&ԟ0B񌐻q֭DUVgv0vabvm_%yF6 9^r{dn MaHt]SIUśdݦt9g;9+X?7PVPN"\Tgf;hrGwXz}+#q\\GC~o_jHcnz28F221ϵBЬ{ +k7j̲w6K7'iSA[_YG$TwpSc=ޢ@{B,w.A >gS ^ke&m*5uisFqڡipOeck-hfIc<9g9=͘פ/ KepP@N}T6G#@مdpmYl#V6s"i_$*. \:۴yA*1۷mD$KWT.>RImHن@8;s^JHiH F?RqSc +# lGn[o$dWm5(h%{^wOԡ:`>@ +23bqkoe]V1!k|6z[䍣-lE +g9Gֽ&m01JÕqaJR괥)JRSuoVO Ͷ~ᶟ;jV|?m {v5la@R*LCj#6:{ cޔPx-$-WjA #1W98w'݊)^t*nr>i ?q5~(#Cc?gߧ+&~fJR+*V ЌlP1څwp(@=$2{P< !}TYO8q[co_RGd$(y$c$kk +"`` v+߿h݌nݏl+碛hcfQKĀH*qX(`lqUիڤٽG9*(cWFA* "u3N8\1s_ԎN wXts09G +BB%T 2}"@NHk^|)v(\2~4WDK[.#Fېp{!QW0{dgԌ*@w$I +}Ysz{4HWtrǑǏ@I%Xv-q5=Fъm]"2_2Aފ pGϭd<(ѫrz]"`ƾjWiQcج,1 +@Ƕ+)`0@zGE{2(cR61ccP +\p1ڝ$HcR\s86+AQYI= +k596/|_/r,J j=){Snߴn3{fۙЅگ.8QM+=6e(۷ {"`Sm3=:)h5e<L )&l 0Fsu"d=٘f?RI\Ͼ9VkF Oi_aH#d=ybJR괥)JRSwoVwΑ4ďy2.~f/7KSLG+R6I13[jA'T Jx-?JUxf;[acWrqԮ_Ԃz +R)J=v˾F +3ҺF%$n@p9m7pfE]s܁+\Zӎhى (pI#yC|IiK4QHC GS%Mvqc=U&g +{Iu>ǞW rU72b9N95ʇ& v޻5 {)H q}kdeX*@a}Fr8jqckN&Vf#ߊu[؀gc'mvf7Ϋ3VƺdXKv7;ȭpVR9Q >x-Nr9bTԒ=uV!?Z>޻8YzRErXd|e`.H< 4]dJc%6ߓX-T+pvK}BQ3`gkiacr\MRfGg{w!U3H72}gu۝{RZjZCr%{*e0MzPlgq5R 8&h+}aUTs4a\cp~ZV׻${`Ƶ~*g3c[`eY$U,f +HQ jp<}3sҲ5c&N}6jSM19Eu02fD! hnNڦIy I[il3v{z+HʐFGqh1e|N2p3Ͽ/5W-gKc  ]u;.T@nљ6V6 {gj[a*H -!up8>ڡxY`ӮSwf2H_3H}naS6cvqHG*3=j&'TXՌXq[TiU2>_zOZ[olgPTپGU:xf=ږ:g$gG}_]HϵQziu]bVn'>ث \AfXPNK0`d e ՝vreuy6RH#=[VۺcbLQn϶=]eCm^fskc8VRο;um5x]mV ,oOkFmKH$!NO8U)JP괥)JRSwmVC6h#9P߲_R5 ɮ̠ת*_Ҕ?~3YҐo$"*^ SK;W_sɫR$|LL~͟ϴ~j?%殇ǴAJR)T!Bt0L$qRoz֕{l5$aW"LTm-&#\D(ɴ䐠c#3Wbw$ '5ż~ӤW@qbŷ 38s'AW7Rƭr!xtdPdFU"ܪ@-ϷV#\Yx"ºJ$0pjwZ}wMԭؼv H)߂yPkM{m07H .v1,|rb 78}9S=Wq,7 dA70p8o.#zʥo. r>U{$r0鵇:{.mvjv{siwL$ #m[pH`jFdBm\󂠅,ɭ^#;nҵ%ڽ5K6[ enk{.MāC |yd +/:+PH퉷Svyݻ9&wa%c{ [7ˀC(=yUx6Vjo^S++ FIZ-#,O:n'3Fk/f'6) \-.`QA*0DcB]=V52.۔&lQ#957M+MG[aC<>8 U< m*c[-PljkZ`eK@cKoZէIE%_QHU1mb%$!X({m5;QM?U""PtVw`݁Pv2};hKA}$BʌÜ1E{`KDwy[ Vn S F.Wpa2-? +0־TҺ nJ*U%Q+B ${ξt'Pf{6$r.\>}+[^GjH/53Epp|{ͬͯFF_ܛER, Qܸԍ#.^J4 , Aq +͵$w_^3]4g#59tՀh%xrZ%]YCMAҮඋWTpg QS3746hRt<3 8$3_:"ړB"a)pJ1mU*owx .z>FV.26cavkd6˶#N\9`}}u4 o#Ԋ_$,ĮvRvwT{Qh>,[^&n-aԓV1ϯ"XN?i\ưS#wVnk}O`cPU>Rtg!~zUkF.ȅXDK+F5wr/axa2j:dÒ5)[6Y3ܱ!7Cz|46%>ژpp}x*kI,²n.X`qg ;dv1&cВd:d;nQcUQΛ5&8Ac Nav6#tf p=p~5X4r_g ^!n+Al?M_Ҕ괥)JRSן­D d擞؎ +z!EO)JW@sLwtɷ?\^1x<ܺc9̸g5iJWҿ gWPi8ZSO e1)JR|ILC) Aygt!bĨ #h߱VVicB!W 9"#7P o7kmNUw0FA]``ح/b$ Uq +J@< +Xeon$q"3U + s[YVZ + m&'W=1XvFABȬT$qVՍS;@$ r{*Ico:‚FgՀ[`+TVp[H.ʡÝǽ.=c&%"xcTcxt.cn{c+[EtEU򪀼qX I''b +Ei ^8X*y {ٝB0ĢG8澚'@•F;q[DjPl6Ao.с@ +u"A9s-NVѻ;cB7~|f$H p)mg$" *F# lV,൏hϕT*߀1_Q[v"{~}ߏy@kmFޱny +EmP`W)Z䶊b VE@R괥)J-$RJ @NM.`N,k73=MnV 5Uןm^W̚ޔy'!1Ú?TxhFנ)^~"n+ dGz +Wiנ)^ÙP%=iL$)9AJt|Gp %u_Ҕ)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR(괥)X'^3Hq$rQJbOڕ_J>O[>#*>+Y++4)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)Znf2̠b9׳4\o@؎M)c|ȥྕbԍRUVeUq2{T( ;Uijڼfãkɴ)8S#һT+yE!I&숇V<^Qo[a=y ?q@TPYx=1ȾYPqu{"iZ-0ނAfOq%ί(kRe }DqF}dWPx4MRرrU)X5Aa0HRrg *X;u%7L@85JR爦N*#0*X섫`3`BJT[P( nA#\Lj^]8UDQq" n| < +_7$fQ9'=P0=u;r3푚u^/{sY+%I3DZ+hZƷo[hXg#^XX=QÌ<,=I泸y㌅f Z yYmzHWǐ9}WϽF>&|9ť߰F].pʽ5㛽B(mms=҄*#;w k*abOT.2I=kxpj&Se3T(@G 9#խ)JR)JR)JR)JR)JR)JR)JR)JR)JR)J괥)JRUwG RuMVF{  { +^bU"c6MG51YFfQTkIdP_zNg m }*> ki|Gi}1^{ 1soyo4c.lbAiJA\"gΜU)Zd1D9ڌ0&<4[/@r\5yJ0S˨*2F?IJUShڧ,]0,r'GsVJV+ܺ޵&LH,W&"_grOvKfa5ZxO1K, +be\+ ʜ y}Fh(51V!b;Uc*sϜnY;Eih ϰߓgҳ>Ig.م~sw9ǡ~!M6Q@O8ܮn8ZtkCӥkete,25cד۬6xtX:+gZ +i $e"s ⨼CI1e:@2FqReuqjP]Ofז"VE]$';ʞ -5WFֵ m2ؠ8 +vzߚ"ueX_K OjKU#qH7z-X .$9NT>608ɪX:$<0!$)^bXNJ[;qɌ/nj]Km`]MB;Ga+hjc;[ē~U|+A#88w^ 34/|==kR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR֭8o|0U +ܓQ\BZz;Ojwi/6F]Ұݪ"*ܯ敃\MgN45a4rLJS^E֭ud}ÑٔB*}S%I 3 U)Ph.N +LA$W֓mDQ!@RT+c!/WT`ViJR^=j hCc![+xCڷdm)e9꺕cG|CeVk +@7VG}?W:N(Fᰡ;}*yRM GoqjYǓTcO cxN{M@GVG@*cֶY6k +[ 2:^ (Wv}?}k;!%TeYILed*pz rjW";cTVc!qjia4Umd|Lc:䑉-V d; +1ި5WumBhfL:"~.mGeˆbYNE|Ţ\_jwQE )U_Nv=Q|3wJN 2bܝXc$G[Ǩ\ +C+ m.NҠi1:\= ܫX+1!_^· BIi"遲^/Z{IX4jX[mB2=~~&SH!dh׀JA&|Om9wJ|#|=y/^:,'m$9s;W)JR)JR)JR)JR)JR)JR)JR)JR)JR)J괥)JRߍ@ C\P&}V5/91),l ʣ ~MzT:,$;~c~SxM CBs4[w86NjZ+KbkV_7GnV_R=E"+Y>vOyM-?{|O>o![L*)^{.y[}B8kҨptKь`(cT +ut鵞'dVQB7/3>uz F*|v1cj1i:lہy&G(חve#98&֕˖5Gc'QeW;E î} 9ԣ7^aq, dsqSjҗK,.ZtM5Ezs, }6)JR%s3q3ij]"gHzJrBNlhIF$TowѐFr|z0pE-nK`IR@`228=n)X'U>Lpʩ2(I +Tӌ3PTd2(y8Y2;uR(rGAU#I^6pnAv +8$gR$;Ap[МUךC5mir'[Y$WχcX5Q-aH*Ɣ $Un -6\pjnsyf= + V1Yx7BZbn2$f?wShLz.o/̐<O 7 9ʰa|^W%ΒT @3eHd }~*-fv ,Oʄ`jHYw県~z_c18o%$3|DѴ~$$qvx V>TtkQx$d@laXnr0ˌ'=Fjv/D*X⃢3%ۀ;.$<&9 ||=^inYv*{`RwZR85|8I]j(3sy4!F00yؘ\}VťM4s#1A!pIzڼLjz@St)5T$)d! wIn%Hn.2꧹b@')lA$& 8!p@kgoER\<$ڽU+:z*jԿ_nCt? 61QjRӰy>I~z/լ5iq:Ga>gOEϭz I!uu*0AEImlˋ;ɑY~ioѝ?,VͱY$LdIJ@98v{HrfX0 ݑj$GS*@G=7/aqp3F~^3IO4ặwJvFB&niV&RdH[>vm@kL^$IVXm [ ܁Ws.g nUG=%ہ|IzV;בio\\47+ސ-*!污"=&L${WhVF8 Y$Ruۋ[d |&V+&3*kZuD1dػcYwMs>14ڈ79 qU:xtC$W2lf=^ MXMqF0WKm m{='3]1D0"f\`StQo0Ugke֧ Մ=TV2( ,E擐 .=ھo#VI] qoL\kWwif`0 QKgzK Uh*N>жeliA#!\lmym=Y}N_Ti!2I2 ĠnuՋsik t}KBCcӱv. ]:.䎦TV<TmJkE `H!$lx=r-6ê2dp/c׏ZQO~k|oa|#W?Kz$hm$`K96kR]OjGNsGyWƹ@$vU:Ή?Y[<1ʪ3 \($`IHz N}.+w؊Q h5Sky/l-I))pq_qēPlX]Ŧ?0@I+t;kKTmv9_/ ثMKY^ObfUIKBqjFg5ی-q+Cuss1v&KƸ@g3Ֆyu=aH`,KSSnsj)~ T{]/2:k ?gl6u&YEڮbU@Ҳ gǹڧ4$q2FnDjafK g׊iɩcnS,V%R9P yN~U+L&B.Α]^6H9s5Q.ǧ\^J顶cqsdavsެEZ,̃tUFG);חWeJJ.^Ts"FqED.g8B e_+%K;'S/y6u.1 EӚl}kQ*\EFI!;l*}k_Q][HBU! +Kg.v㚔z:$qIgNeZL1ז'ڷ{TYrn>n9͌{+n1#IReZAEv<͞õ}{cvǵU{ޢ55ז;J#. gפ{H$H@ TޥҔ)JR)J괥+(eIv(6wsUz 쳼sKsª\( +TxlZ@nO*26\>a@8$~`q&GO3Jd1cbA,9wsf vmB+@,p#TmJ:< n&yQU7ʪ6SU֎ݴA(y`qPK)D$2!-v,-e&{"XXϘq8`OnwD$hmR'i,29=(gM qw*XCCcN 7-$an~.yYD&=<w'I&qP6og$Q avǿy\ n޿*}N\Ț2P=2+[h2G<ܴKpPX(Lb-[h4*Ic$חS0h~ģ #rc8}UIh#p6lpAt)y08 .PGZ!f]G2=8I%hfVBrU$+oWdhhI%y$XҌzMݸc=U[̾I"x˘DI$dj[8RA'$ԟsP.Cq$[Up*yzƈ Mj#!T<z/ͭCZe8giā۰<+} tP,2 #Y, ݼj<$GYmRe +`Ҷ?ckYecՍcܠ&"wsEVYYH w8*_.8bi@3Hdb:8Up~|j,--b]7eeq?#Vve +Cv9_S<;WrJF,I}RxZkN p(b rMLz7 w4YJ @P*;d7Of]3$H$&= F`n1H_p8XR)JR)J괥)JRUW?f:%#1 LAJR;r9)tFߺ+񚎑_+%H_wa^Ri$Z0- )}^rt%Ŧ8ʊ`W70K~GyO5 U^ŒmR>u9N kR)JV/#T$@8az P+e8a;kIpάWF}[dKeF%Kw;}q_V:Ŧ̐ɖP VVxk82 gڳJRHQI^6 bRvZ8~ +y]W ilDv* 3ߟ} +bQ +gP;)cY.}ϥok4fX@sX3 RAAu,E23qRk{>uJR)JR)JRPylPw`gg׏}R)JRs_T)JR)JR)JR괥)JRSW?f3̖jVkA+R?఼B}L63^<˯i^H=&>j+;t?N?N^b̾%L[B+U  f~迱[jDQKIm&=B~5}JR+Gbp$.)K9u;`7cPLk(Ԛd6ܢ#;ði8|V|3g y eym-e)'}Xun psBqVGE̎-: ) s<Ú< 4XZۗ9w;laQ,T;c|Vbe@3Ӎnuup Ҵدg}[h$_HLtgeLcTg#.}-KY8iKL+2[1ʗ^#d"le}hd@ZΥOMm6[w23 cj~$]rZۦYL2o@T=/K DK*ipJpȯ@83ڼ߇/nzaDl%wRi]=_Ɩur1Q=9{$7og(U6>*1F*Yֆ4ߵ%b+?:=Ĉn]$sv/c\y5ӦS +$et!E'';`3l ggk4Q;4bp,@յKT1hin89VEk S +dld3#XQI"#v;7_ ܧM<+7Rn&T. <؞c.(8RRUUmVQ3.5{(.”ƯF}*m)JR)JR)JR)JR)JR)JR)JR괥)JRSw?V&] +yQXee?q)JWI2p5%B/" *_x y鲲Lp*yqԴBqW?.Mz +WT60|i!Ezy8[~}یFGvOv"R)J+t#FP>kokd0SE4Q]*B1#nP[ܜH| ]J[JDO2wSdgf텎kwv@EǰyzhėN\H2$`F'~Qtm*Hl%H}ŝl13=dZU#K g-8NI 5k;H[oנy(oQ>yV=?HF=' c2uܬќ|kR)JaKt +{VfgFGV<՘X*8 +)JR)JR)JR+ x$iX( @3R)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JRSw_SQ$EW<ku *.>꿨T5c#[4j4)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JRS߱ut5N _?&I3q^Vb7Z3 lՅ`=-l8!/`۵?es^Qxѝ4t$ղ8'?!W#lR}? ?5 CyW4+c$VjĿgdHdS_ViJR7WqY'Rg +'X1W$a>aJRVƢ +wPF;>U:FQ *dzm XVhN'UZxѥ6F% DH$dcG#8ϥZvpGxDF~{  Ҕ*=ZRBl{h9$W&8< +}dG+^}?]rRqcp,OZRRh`#B@p=jΟqb0C+pAƶEt DvRTSPkm)JR)JR)JUmoe7ÀM8G}r]k&k +Ac9=7fK[29dgL}:hǠK^`np}I%HTPI'}澁E5Rᙝ(ݰN=''Z~@U0Ji`T2~aUZJRjz:TM4۶sFrvcƒ=h/Yan0wd^K#X u a v}hN)f^CY`3JJR)JR)@괥)JRSwoQ:LڼD@IRxѺ02 9S&C&g]3cvhɪQ{$f ~dbJU7˜bF#wcqo #AN;xfmF@ma3ڬ +9-ӌz{TYa4Ѽ?M_Ҕ)JyoIujePW##־MNgJqk0jJ! *e׎9 +=};m3KV^0Bmp$mn$Qz0EE:pc2=jCQ> 8̬q߸Eq +^@Hc#󚦘5t{R V$XeP7A}*Y]b}cxwvF,obr;c3Yd:7D7K;mS`$(W& L+Lͼcg\޶Ԏe$cz ZmnʻW y"y=oSm-YDrSod(Q'~r@c*cS'V3s:..1YWwmkoqFbUǝͷilh{qjHI8$b;a#]#7|T͢Y4nm"HedU݌dqѿVf;ɀc71 dQ 4tfHm#%PvgP0Bߌ]6Nܤ-UHxAssI1l 9mwgkԥb!6 k5yNz?U$J :]3O$vBTmg˿#-W4)JR)JR*SK&s4E^1 +ɒNwsw8hIKSus XF[b5 Y:ĭ S8AK6'ϧKiߥ NSŬm#qqj+xQ0d0}Ϙ}ySW.$udnehsĄd#YD|αǟn--gr1gJ]PmFc>:Oa߽EmzMԮVM;٘.Y?'!^-wy$*dV`s8{r!yN@_;(TV7 ow~CܘW7Ovq6d*.魯7 ȈR\nUT#QІbu&^`$ KrF3Vt5+;-[y5Ƕ['jdH<(3Ȫo?ˏVUēu ۷~ug_ןYڼqAYu?Ť)Of+k~wݜvy0,mR4.x8-ϠϮ*6cY,v8snm$I"n_]<0 Lg[h ٶ%f`.1&殺ʝ{ T)H'#h^ 1g,~g ն)JR)JP괥)JRSwoQ<"5;o+>iJRN<uK~}FS.2H=|BAmbn\)J}[mu"<7_Flc~۟_>6Ţ%B*! QE{1_dƽ[@ +~0?fRxq_(Ecg92+ [iJR7P5'd 0p#UVxi^HnnRVEwFWv,|b*EmgqbW `zv:)8'8A^=ZXٖ9.NLcQg\K 'fEBҬ^%W ﹞Agr:R>ua"Y:pqqzΩpws$ +r-1.@Np3Uv1㏕[Z`m2RÀ[ؾj@&H['8J{|MR"cp%)]לvjŭ̒_ZsǘGN̒-CѬqu ED╿jM+o +D !@:ΈBu,&f1#!ՆGkBx]L3qq%Jb;X؎܃j׽nG{I%D)/f%|A[%/-7 2{kMƆ/UII#uzlgj9+&w.X2T0̣-#+0\L%Kr,$,g|O`>tYgx:L[ + f!_O51%ͭW3\".D] *6POsR)JR)JRAOcRcpG^kf]$Ap0$J pjvàYgbvܒ'SSA^H2ICm9Ϝxe( 0DY;p0ϧKJJ[u`D+T-_K]b$`#yNG$3V}k:` ՍG֎73E*.!KaV1Qu]n0<{qVԺѤis/Wlh劍nCc_A]>F*fE>hʝ!mĸmp_]1fB0pJq]L]C?q#N\FyCmzQg Z5M;&,TR*w+qϥiDlN#4zX}ٷhP=={:q;Da F!9mܞ3[M*-LFXx|R.v#pA#GoR%ԲLP#e1P@$@{"3:\%ƒ,e(@ @T#JŷYcGU*f>[uMube)"Y]6Lop'⶝*=Y[jVv^}yԥ)JR)JR괥)JRM!-$ +超4~v|~)J7>$d(q5[Z@=>xխ/l}n)X#5ASOhOelYozG9 HGn5}_.iR{9Vj6l/-g!1;T/ +]&BrM`2E[R)JRҔ+4+Ҕ)JR)JR)JR)JR+Ҕ)Xf)JR)JR)JR)JR괥)JRn.~I$"kgHy5}|<.$翕@Ryc"C?a>;g_^2=Kkk~}B H$lBW)JEo(lKo9ߎ; +V P~j5AҰ{sEAJR|"¥܅UN&XVZ$`2UXn󩴥|<70`H'j0Vs9! d$WHEY N$rp*ec5wXԳxȲt A ME58uhDYs3u_"df(P \sGpq_ y1F dϭ}(0aG诺R,@`'U ƳJR)JR)JR)JW@NIRS=A[i_ʐ)w`IrI5R8Us6}c&kumicnUE3sې>fg3,aK.7m9qzX5&iCA[{}Wbѭ#z Ufg`8&VkYR-#byk#sRNg<al`ԥ)J3pJ}ku+\>ps)JR)JR괥)JQ, uJFr| +ѨjzPSu:DolgITC r="e7rYP$(iJRY{ >" yӨ'մ~q䏦ݤס)JWV?Ղ}#&gO4AQn!Ow,REfJl*Xn$aO!u| }ꔥ)Ug%TCڼk|Elnč;}8'v+5yQ>:ǑoDy9r=s/wZĶ[d1,C0\cbI0_\4$b+;/2?Jg.nyJ*ƋrIԙb2p70\a1n#\ЀdP|b!wDʐÎ}oynb;YLc%cHUG Vg1u +0*+^A9kq5FV\&I y-cUTQF+&k:އ&絊yQ $%ʫۄP3`}kEfmh6vnaնAd %c6*QIlqRo.Z7O)Snﯙq_n?Y]=xdٟcu^4d,#Ֆ8T)JR)JR)JRUIy!}@Hqva϶hm$''{~U񕼗:s*+8Y`ysIUU֐n7q! 6l$djin0%r2Jn 6<ʫJ#dF" n}K3hji[!vbw31&͞.&T%rnU.{K>^g5xm~u9䍸Q|O+X0] ,* +=s^RT%eڼZ=ZrK9C0f2Ē` +4)JR)JR괥+E y52g&G 6fTKYI$Ujk n&I'g8iX`}sJRh#Vf۪}T5]?.u}FQiqmH9fpbt˸u)"UH¡^}3ZWı!=5 5iecI&Mps*N2Gv[8 Lb]>Hr;T obreI'g8ipxLPpr2æ3B>1U#p>"!QB*>-{e8,'% TG5J[m6MbW"#iuUC8$0*NP.pvv}|/dWOk T]0ZAЪ {= :QR\*&,yݻ:.y$ c*֯B.㷶 FDgrx+O̚{HG yi+g{qynQX$ܜo,p +ۚtJ1)RHK&j^k7D@vX~B6(ݙ2mv*UqX A )n30*{cv G+`g1<-g w|l rsߍZFnMY)JR)JR)JR괥)JR)^QEy|=96RWR#!N2372Zi#p%UAG>dULnl f#<" ."eIs[ b(-HiP ޲"c[ngTiH(XB +H3ϽUi7ZEYZ!*2#)J6m8'׽Lu:.:l  XZI/{voOq'^}*Mmafc/q=Oj>qQܸwi& +YF㰫;ZO*ʨ[dIo 򢼙إf'_VB̧H5OX\Ē|L @N0װk mb#q3cvq޷lE77E%LR9$)~=U)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)^CVW\VYH#rȊ̇}VWj#I-ˆ)H@?|w +c4]~K R%%XAȪU PkBm[QwYAO#dyɫc\ʒ 4a>@T{)!]^T(2OO& \in00~}4 [ 졾.H$x̀[=VhYYCIvҮ/ Vm%A T1!X}+d[H8qz~+^wICگncڠn< z{=V'lʾ^/<1)Hw֥M&su7G$a&\V {Vb"{TCڠŒP +1M}VX2#B\ +[|4h`%MJ?(+8H>iJR)U6ԗwi=u:P3zfTrݘ˸) +6o^M<“ v slin3Zmn~&1&Luv翥niup|u|֢^_|3,hIYYU$.2r }?QFH,7)##v#S+ߙ +ذʠlr}=eCoZ6#s7P3fUwZ4[:JGi8p2CscDC][|#%#;w1\V`،VhMQd۫ ryDmQ< +VjQվ!+ 9}cQ[]ߌh@0~ʐӓQ5okw@[!;LՆiYZ,oaYmpFpHҷP6ύ83g(c8־5BHP @kꔥ)JR5>^m:Q2tӗ!FQ8>vmM4׹BT@UpTqe{!#{WӔަ7y"W"IJ3糣Wa^=x,.̂(2d PqɪΗrl$vjF珥N'բ[|ď!rDn +pB8q[-spZ=I i\r+dF}zݮm5 w#Rq*A\ 1ZGs;GQziYe2K:qX<b99Z[/ښ ~Iwqp )ċ#~H5 Haze__i0ikSp4G9*Xg#jm{]FFe _#xS456g2c6B2#BB?NHE ]DyBĸ%"0x V6pZE +R \n+uikit[Pz b9 v{qڬ-NP^$24$RUBJ=+ n.bV+n̊|{ 8,98 dIe/Gڀ"H'J'Ьyh⋤BҲnhS֤AHYbc>2mBU@g9{tij*Z64Sx#ozHw®%q FY$* D0{ +i:[=ԉ$-!aƍs۾yٵbH$@\ <qUăTSq?Ȇ1^9ג=Vr|"ebHQhUynd0C+YqDQ<9#$c +šR"}k˞9nqo[j 6(NK"H&Aޫ*F=ɼf ' {WDy&y Y;')!Si|a#=I&k{=Đ@/r >5RjR\(V‰Dh;Vlgھcfrmly:K3B\g=_2iVwy mDkՓ#\\Ae S$gjZVb{JY^#K$6#1C@Fc뚨St+9Id88m#ੌW皻xuIDHFd`ê'b}waeFD}~֤ѭy#i"lN0;jq$?3^^jU[k^B#@U#7՗Z՚i`O#\qk`՞^q3\Y +Jf'euJn 4y:F5 T]QF2TgquKmB.frh<.<@M:{KkXzY\B̯zc.IyediLJ-M8 +sLR7%K.=UX~? iXw<n. E;a$f7,Q|9'Zl2Le,r6v1n>n9R괥)JR)JUVKg醊K^ڬK5ͻGb*;%OTo˦iWSG13~sStE$j$Iɪ }spc7osSV:4[REHDpܦN+ 85iSicMUj|61`W'N8+ycesJ3#i\M_d ^z{{(mOٶ{{#t%\R|]OIlWqڑ cg"s\iOm#~0[$"C<9YΦu2ZH Æ ե)JR)Q- w@=88vLF,m [ >+ +~DՊ0UWixddPT8޳O$ [( q5xVX0oK wĿf6$s؂rrjDo))$4G1Pʙ*pFH`.ln9䝻i=${nbYd~\nr Z'СkyC̅r܂c*(H7X ۛ%չ-F+d-* +t\">`*%dWHÈ@`l$qYT3YTIRrT gzV-tj_#}vqYlN,Ib=ϘqX`{>$g@%0k"7]2A/$.&i,˵aPmAq53^5ŢtCs$vS3սBa8wGR9BCr;mk[H2thؐY6nI'4h 2uf@`qDR,K$.W BRjmUj:zl+PےG*5Z& 9m' x~-ԖNB9u=ǡE3H "#2yFx#hhX<2 lUdK97~k;Wi#FBc>#'޷j:tZ&sYHe`}K2$Pmi@qD- +$4巶g۳yUwfp´w{zR_ +Y"_!V&c2$="cNU|ǡՅZ#@p3ܖ$IU RĂ `<=1ھf $VI $.IrsqXm2iZN8LOqɬZxrcqGs|r2 v  e = cVY #'$TmⵊX#["8I D` 9zU*cPdv$ 5}2HR0ua + aoNHOXdg%/A/@#|o`w`{֘<'enYU!/2m'O8h[=yR:p6cmҖ̭,9]`H\T*dԛte]X{"Y|Eo`/UFp1j-H1Y [n'N3[' K߽UaY2;$ p*=߅i*G;$ +|##88Wܞs hS0^e^J\)p +q0q5h`RܤcA2O'Pxr841䄸郻p,@߁-d17|JKrFΘP}LФY9ۖc;T*} +JR괥)JR)JU!'nHs4Oy@?ֶj#ÖO2Ls62vsczݍƽ%2WknMېf Yݾa;dxXynlsn2]OVRȀyAǹI9$zEjډ_ŘⷈdicE?R?0t9<; ¨|)mMsݧiYG?p? oB D%&}sr w?]Kfs训ԌޤkMΩ5D+!sG֥ki}Q@g*.>lE|xoJ:&mfH&(T1woMYҔ)JR)J8`J0`r2}A-ce+vuum,d=+nsLW3%)A>SKۣ]8n[c3DV\0=u+Eȳ`"!FZmd>*5 M,(ʳB"m,p2 mQxX9mUOs)J0@I8dJ$d-Woȭ4%;m8QYK# "+ JJR8 | Ⱥ` #@9VR)JP괥)JR)JV8ZC`,qQu=6M@^WR6FW9S܌p}3RmOj=$eN2}edR2 Bz",j@a_Uk8.H՚2JPJ ձFVhE"Ksr adD۸aX3K1ȡFA(Gn/J)JR)Q+inȑv3T:(>I7pRvalq߷~a7 @XFo%gE=jRN  g q܁cjV77jGy8$*ykUq𚔒:bѤDat >G M7idF6)ul12YMQnd`jB#$_1jMs{f +3$ ( .w`R{>u + wRk[1sq b0Gff~18P96}kbFPDdsYI{+x'B)v#~ ~\[OŊ\8Idrɱdž =:HsyXj-qs߉zCK@UGf!vҵka+Z$jȻz# Fܜ6\ꑻ[IgG+N@U9${kG/*nN3_W~%OIcV)z7 +F8 +eyL*maUbH|+jhwڞ1tp1 d>c_2p\aGp*G{YĤ.06x{f8ͽ ~R0@Wr;W*g`;2qۚjRn/\w=F/ap=;,d*sH!R0ͻyo\M{0U{Y9&Ϩj7W.-zWyinXޫH pyŇTؠcEk[+mg=*Y-cP0e92hD9j"I&v1qrO6vD)ܲs6{ WL;%8aPq%9 bF3vWLZۮ B}H_C}x=^zmʸCN 2 `޼ޛᔰ.{+杁pybOJ/k 8- r0ۆdawoZx[eaZuw`Ҷ\>zzαu3OTam +$2{>}i`7ʪEZBsǜ>AU~@;;yq;JdҠ{ndPGǶC uMF:35Ei00NLV4CSIb. |ͷ֝/ėzG,*ʏ730Q>PH~BGWHTdf Ŗ`( IWԮ_$J#l`bW drpjW7UK. X Mpb~^٩W߃FRҕ߰P-yU,y(M݃W k +*/T( 0+x[m@BeJUWAbϭ]<1-K. c߶1QW_:fHѮ^ 9;G}Oʬa,,Ib# }j5sycTݝT1cA}u\F[X :8PZ0w6ߢihnQ #*f@5wӅ sq + pz (7w;c5Jk<$Vm0deEXb껳;`Տ5[.ddRrPq +0Z)JR괥)JR)JR)JR)JR)JRjtzd,T{5}.mB) 1/Xԡ!ibI<*II>ȨRI$ +@MK+wN+M͸܇63R[C9`fX捞D. +Cqv<$~n8ef`;I*U% gy"Rb[ٻypy$М=IYUo$v@kH2ΈTmPP=}y'*l~ ]b3VR91.46khR9V)pV$`=qӵnȥWF29-rj]X[oَ5EŒ +ӫUܜnV 2=FG#ڣ[im4M6)ڈb $y'5l&fZ2 c"G& ]n׵TG *,O`$׏>`K2/.eTU=B `E8 +B㊽}uū8T8C’apjyn 273*ZMLwZ/.ak.mJ2\(#AGKQauͿ.85&*KJĝ'vp=?EKZlEHQ2* {l` ($I'Z$[`b1 WC0;sajBhrIQ^RάUUz>u᥻kƒV?f#%|ĖɩeűĎy +PTpڕ3:qȘ +6[cB]\o;8Ȩ9[5[31X02s<>+2,ۮ!WpJpUh<.H4ki5*=Z= r'Ir9i # ֌zO\]%ޱD W!NpmYz/>a̎p(}{ +m06G2LV=f.ܝϜxt9 oI~UP`]z fOX=pQD}5}65ŵq-FYb,QxQڥ@9R(괥a $ƺ\cY_x(`:BWf@>Su-EXeDAPy'W-ͤH`rSiJR\=Q] y"YꖚamH +ҾDj'>ﯪR)JR)JRd;q_Xf)JR3Y)JR)JR괥`ׂ[?jonӷ*Os^Hj%`_Ǩ{/ImKm +D[HOjj;Im VBC{Utƛ bZ,?l8jJ=Ef,2D g׶j7uc_h XĀA'Ն1"c|LE+H񻴻%#hc8Mjl0{=ERJҭb[1Ɗr9'VF;رe b-0ǰ7&=+0+VwsK-N{@ HP1S8Uw:΋a4&8zY]u8nIWJ!U! lRk~}=8%]ŤnIO_3-ʮ" ۞ 285; +Znt<[asHa$/Spc9MյKK;hd\/*Qwy}kW4/ eId]@F̜ϽC澎9.?_2eW#ycRs+'5)t_YB3 A[)sA,[f;0t=#*aH<C_zLn3ޅ?! +v e [BY3GX8B-8nG9T TZ3{C7n nᏩz࿈kwI82۟.;s*3A"X3<Ϋ22TgpyS-ZAn'U 82Q6w_uuM9s߸CJR+k4)JR)JR)JRY)JR)JR)JRc4Ҕc5R)JR)JR)JR)JP괥|q孼7[ؼ$n6^ѕ28WѮ<9 6$&2l"$0K0x?,}ii-`tRycRҐ[r;p1WZ%jS=j d6#Vw@?nciAhv9֥WE)e,*ǐP9cMh.t#:Ji% oTp{8͜/o$/8BK0 ӺSսPDז8$9 ^6S޶WwV7LYB d_ n;MK郀CF~FџN~UIIWnb(IBbp˕pq?J.:kieʸuE J&s^Q̑$dI&<gq;zxFuZ* +;$2ĜqzHÄP݁g>ϥyid+f fg=T[l.xɶyꂤ/?:~k~oEv0B1ÚΕ2Ko"Wc'IanqƯq^u|7r4yl(#t/ HcQ #q;\y b&Kk9 -0(pYB'ъAYMt i c< ]5=]6KX9i'?Rp*X'TK}34`[3H\xUf$|gf 3043Z-/Y$D9#o*ET೽Un%ucAm嚵TѶ=hv;l@8aZo/#&vEg`[[!FJ{n$|ǁ 6 @ #݊@3Sr)fkMܒHVm}ѩ}p r#>judh" ++ 251VQnڗq '$I'BH[wDP<͵ b8=_ArjS͕,,bys|cC5o{nG;"``5k>i%spq[2)+N+Ԍ1Euq 4+{TMcS]"ٮ +"@+PezGqDI+Q'I w:[b H#QI856)JR괥)X(aZaܳE!bI*I's[TpH u8~Ug5R+ҕiJR)JRM˘-[Y#`I`Sy4=kJpeYiPTCFO5bխ&{%Lv`S+Eܤddw:vl3NMz2+[e"Hg%9֦*Bm@8U9;gHRmf饯r;^gefye@Pp cOk2wfxطKt$#8 +&0eKqq q#,qmɨ8ɞ' +'_יom o۫鷿?]A?Sv}>ZymmG1e)Q 0#|Z ZMۋ8d?ݙ +I$8#WDmPh"<, v)'&pp*)7sˆw&\ }[,%"R{櫍}pd±!bJ.?h^bj^Ys+% ,! rq{QKQ#2ػr|D?Z???m {~\fA>WJTҢva=RScpBzX,bgc`Fp;3WΖgӮl!WHf +ߋ$BrFjgPl)^ɞ!O_fZXRG#NG*]`$,{#s[lPg?*㎛?0Ƞ~8$6D\LXC0nTIۊںhoj-xYtAɏ x*{`zV"UҒ@v#r{6;y[mOT 5$dHUcϮ{`H#^9lm׬IwhԲr ϥl)JR(괥|H5-p p;U^"#MØF@RcP3}{*ܽhR+2kp]:FHی6Wr%I;È"I")d\j]%iNډ;w'-|WRGqp\DBo +~>܌_{aiwā:fLm>lz;dU5RTQdэ72cЎFx֝PP]l b,HW  r~UğO4F8CB7*9l֝n5[ {tO<ʅ^*d cNK!v('rIcqfhڢe!sU}FGڵ_Eu+QR5 $I$?5jW{D*YJX"G;EvKN19Z๻}j=bKk|ng$AcslW{٬Rc9.rF0X6A<։V#o'}9.V9QSZ{CxpAL1ǾjEԵEIČvD0•¢L!tٙ6Fr*)JR+UʹWS taVT[- +Ns-#y+|z}SĂWUV(vV8~R/aX)27gC!!W8$1 +X5,3INyv.vMHPm,EHW5-*Jl3&v2>F2I PAm%FW$9>֟}4q9]\:Pł*$a$O'Ү*=0F{| *@%1%I'oZ%}#>zYFnvH!zx>W~~$&ɣ$R(6#%1Ym-&xaDO3z}k'L3w|HHGly5Cs \gJR)JP괥|JlX85Ki!&Pdڸ$sk^G$֌m{ # :L{~`N{qXt'ҒEtV2JW*1> +÷_C,(Lr]HtqF zO5%h^"%A*܌Ս:QD9Unl~-c*ݰrNkпum%vGU8Ƕ[ަ4خ~1-MxwǭW +i%K[]p-@2}DR6`%GB ]Y,1q4M8 }裂S FIl#i%}+#@./9 Jӡh! +Ѥ|$c +qW_oQA$`)`T + +dܜJR)JTXXg{D0>*)JR)JR%w,V8X@= +좥,Wd'cmzJRmQb#3Iڊ 8+S]V7E'pxǡ 3g4mJroCVZ՗F32$hi*Nң^cRV{$+Uԃ_,F$By#.)JRq&7V8#Q[+4+"bOzm\ʰth%  T*+*p3|}Ҕ)JR)Q/58,#r߲"4‚@ϩ~o4QR;VϭK)Txbn:yKI hs@*?VvΊλX%sr3qYTK;dpk9'RL@ +YُeU$֫-bi-ԲRѺpٰ{*m@([Q$Mm>~[j.1l1VgnFqz޾Y{%Q6ض;gԛ+uRx:8ʰk})Jj=vn32rNH_#8kS’,ՙW>b#5Yw:vtcB/8zWޟ\[t|pA`R3LkU'm!*ϽciDbbBX?xlm6u\.>ݔ|})JR괥)JR)JR)JR)JR)JR_XA:Q"8TdzU!o/:kӵ¯ud8QIY$˚$J٨_d*6v2FR6-\?+֧ǧ,h>ߏS֛^  3YE"M~(sytBGdm^t ck`YCn!91M +={c6yT)/XYcGKܹ.;z,$Ne^yŠ>!N#%{Nh{MvANŎp R(d魗̦C"ᶂJ2,1KgԮh(o +K2e;K<:e #CpvY28u ^ l }jꠜXFNc⭶Z8Ӝu/MsKT^۝" s}yF$IY¬Cs߶*=ƫ}ئ9F\#6NӢY :l +U%ju޳'YI$9r)Ok[+9?sfrUޭǤYy/ي6r=NAҔ)JR+ B}a%e6GHXRO1Gjm^)WvŴ~5PiSG8Fp039hugy<``ұ63K 1wU_5 צŞ>k{J*iLK2]V +iRV %YUmʍ#ncYv_K,"!Bd,K`Vy5ˋ<OQC36>_0j 04(E M$) !H +njdp$_n a^ǁU:֕خ`,CKbݽgFs[OWKU!P@"B Sw6szc)JR괥)JR)JR)JR)JR)JRj>kxYZY$%-9#8á$:Rı~(m_jΰkü/ghwyי%߾@@ݴsp;VkiVOd繞Agr皘y +#jJVG-!dl|8V5YͶ-9Yctțy( `ʭ9>/2̇9̌K9ϯP5)/( 8YU?]it!CR% ;J 8v7iBBQ!X1;;םӬʯmE$r0fRC’}+U iLI6I'[+ >NqܫVWMV{yrcNXiw7h_ʒQlhbJfQEeqp +ELFm@@{s_s3ջβCpv7uS#R]!u-:KCF1cn1HXW3>lgh*U$}T [+c\7#+:"_YEm0ܒ## i^Dӫ\I"=9T?r-ȶeJ}gaؑHHK +%FuDb<(8blcFFm]H5OsRFՙVcws l>[Oou<_:ÞpB11N> fR +.0NH''ޥR)JR*CgkkGc +#*W݈Wծ|C#K-NBP2q듚٠#CJXњNXO768Bs'IUFasuEs$[{[cg۹nN+R6/Yn$eA=⦁Pu,6߬e%)b`F E&7^\]¬0pI5\s^zORx-`vS;&.~VC{kڶG\g婘MGAo FPE}XQ-0[X%,K>t7PJÀ_~Ԯ[v'Oșf`$+Ͻz "IAWPd~cQl{xq5>[ELhgjvPo4ۇ{DeY:Hʜj#[? +Vp"a}ۘA<z Gsj +N{BюQ$KU\4d[|[0=B/\p}܌),]mKy#6CS@Sw {<4eQ1:7'}>Lgw,I{>CZkrC$E$9}c&$3I5ȻHCa<^[/6nت\tռO>R3CD+ '4K$H ªq۞k#P>%sC-l~-2oj[D,Z8r+"ejAKVfzqE(vVtKib7X;@ +;gkOЭ Ae$qqpҰ2;Gʵ2fX^BЭ/.:(Uy(ݳ9|X\k5Ɏ57fnQ!Y$z<$"3sAK)q̭# @jOɪ^@loũP=B^i]6`E#)7sFf%޻ytm0!0.0nIutl&( ozg|0=c +n=|dV7v:nHK q(b>b@?,֏ K ^_%b@IFP8vOoqsc)*HҲ*G>r@?,]vK01+O8֗ui/"I("#;fWھ? X[.b{g,d|s*3HmSR8VQۤqK1Px>S#Ɠh"+YYJp0>uQ{mBOc<+9UJ;C֭j-?J=U!C4v@G0?[+gB-+Pӡ Cn\J͗pBĊstӊΕig&tR4cr0QzFZV2XmuKuU~n64$+ )e=̻gUQcVZƧ\14uos[$mPjDX(8 c⥷K>ks}qHN +Ŀe v=ϯj±,BUefZ`XHTp2O7n֖6ErȓF )P`0sZ5-|u$ѢyX`ڸT.NƱ,(PcV8*O'_7ayqnK˼ӕ'<17R4TW!+ۨ2r[M(6;,O|T/Im1H] ry@mfFE.gylI&Ԩ!6ljr,zM Y =C15M6;[MĒ;OK!갣Mn GPxUR$"Xׁ$ѣK#;!I֯\ky$*ҼsA&cnE T+OqGp+ood%~_}N]y#1ʦy@\]-4OQyH|$[ApK.wK$D\bňȬhv6yXdX `r젎2ۉv47T'tVSߗu,OJO]:IrS##=Ry keΩs8Ci^]Y3ʠF&IӖhb3G.L@<IUk6I-dtġ4e;F@fFF|)JP괥)JR)JR)JR)JR)JRèGҝw.qǾv-ZTBT`LVnkЋ4J*?};Z4 qF*A#5Vp9;]$<0RDX$lY m' {emdšPG @'b *đ܅}.~XZEmwvǫ~uMYX1傱sKtxG oJzMR09;A99 di h|P@`?\ }\r,ǒiP@abJ@P0*ѭ 1fe;6r3qc5:&gF#ZEI&sNI#={ѤbabI$Ƥ9q[oߎwE)n c*|I?uX0$֯u9IpjRH3Wz=<[2v9Zq r1 a:B@r[I$yuPxmkhĒʡ!Cl*M҅ƤۤP:"BsH +W1i ?l8d_0i4ǵ|ʹ܅'j@^弹c+c IhmxMjt!63=9$qޟު%HfVTT+kF.ٔ/d](ՅޏmzS[kn[i5`5q: U9BJ#FH##54A +]{ۃs眚m; }3AZO%q$,yq ki*.wÓZ#ޜ1V.YyqRmkId(¼T6֜Y}±;Q.IیԆ-ZXѨUTm* RUú{ t99rr{߸yP.U2mn#YoB6.ѱ?/|e~Gq[D"tW@\#Њ=AA,[R+ dzTHt[8-!QrJzc +1Aʎ;p+)G;\J$a`0Ol{+T%sG1=EϸV9"L-ר!>@%$9ǥHM0y?h属$Z+|R(wql#QWAUi$sR)fEFutc@2@=5'5TK}F+!m qjաjZKy|)!#"fPM3mPȹ',T`s"L4&5W1 H 2B@g*eYfp`Q`U4ȬҴ^GJp2x>ܓ׫/stW@NAPM<_$vLvV8OzU̷ Xn +>m:* <'>ku;c2"l +{ 7$*'ƈ{267{p)7 wE,yy7z2cNq_w"m^+umHY@mH{1bI`AGOa]2X택AylW~N{㊑6:yeg,#,M% {Uƾn%iax?C"[z]<yF\v<͜kn'y#[4yzB=*Jl +.otudy.6mBŎX/jb%g{}u1V!Hm |NswoehCKrw\=vBk8'9}oQ7X8,V$yk}Eo+Cau4NH0w'|W.4$E5#SpT +aE<|k6_ǤYKq!ILQY CDZ=~ }:M*Gn&t'lj]ʁ $r@֮{{kp YF[yU,JFjUQbcd99x)N\jYL1M(F4Ͷ3kivrhzv8[IpY00;/Ƞ/kd$s4rp`|1 + 8⩼],ON#,D02 =Ա5ƿwyr1[ +bd \zZm$譴mVHд2v횰&FlƷF(=|bp3^2RҧDFm=C>Jl +\NҡX%*E +|n ba}Q5 +qL$s/Z5q Tyv(;pI8V5=ܯd壶w1͞x$V:$3Pp= 'Z$rHXEHS{ξҠKSH<LTz}*K- !XBUK2'8VWzu8#%p6bH{ ] 2pFF2AM8! +BZ2C>A>kݝij#$lވQ_!N1z5_ "bIUbp y~q+xnٺ,#v.X1M.K4EXf9E 86;H(j"P=QӣԣTrF#H!ܧ j4feF1U. P =$N^:By +vvϷ{X4hwhrBչx]nI'{Ⲟ.sLdP(A&1p;4J]VI'h,2@=8 ܗc&G# +5|9oVH* e}s*L:L6 F]D(.py~2$!R* ~kvǩĪĩIHpY~ ?8jhl}4ҹw.Cp ++Q!Up>YzMe,|eF2=y$ɫ*Qj+ xR22pA#kY$Yn'v_"rB_7:"Moqw~Ԯ!tƐh;"c3bOj,ے3V8 [p01956Okf/$LqT}qTߴFF̒s1 o;wnUIHPB )"$ pcXD_*3yOOT\pH8#֣o%}c-nݰ8Ss.JFxԪp9N{TR=̶xRjj1Khc FK[/Xu$MtwI +OqO+j6U F+'b +>JE1U +0l)J괥)JR)JR)JR)JR)JRW`me8HOMJG ~4fJrM$*h–mTWNnھ&;di$uE^>VnXfI`hv5Ef+RS4BV+Y_|Mc;S5T=?TR3f'ܥ|q9S*j=a +rRS3L +Qz9߷1޴jZ5JȘݱw qRշ}5XeE{qsl۲+\w |d-6OFRW'H%ܚ}rl2ޣ}D TS6BHL )==b`d$kDLL$3/8iǽK+,3-rCp8 T=Ao +|ĻKdn\>q^BBmfns10 7W5FE"9HH8nx 9;u;$(Gg >N@$)Es)p`wp dT#;x$g$q_>[Y-"$ɵK9"f3V$kzਐYR(S8 ' +uu-\lʤ}mg=jIKS"jCn8c޷ v źcj>1dV~fی`>@&_h- 4vȂEPciꗗFY[kiѬYPQC'c'ӆqOi}Gk!HYp;@O˷ju 5%aS{"!UWX%؜|Tt-VdK:FFy^=Okyi,W +:KdvSu@$`$ ^2q\-iNDE"YԅiHGp{{ԈkƥVY~0ďN+K_jfk6&V&XrC䑞 ݷqLהMgS)4ċfnڙ$VS|=$`\*C#TC^EsuY($Y + +$bT&:5S\qɕM;A`@$a3ܱ*&)fl .$RL`($9ljөk:T@ RR$1*$vadLӴqU'h9pjEq˺fi 㚟4P12͍98?mj2[iRl4*}q'i7c=]F{,HA +)R\q}jNP*ed c)+UdbjgGOjOxUNMhBv~rvx9Zf,_EۇK'ia>@+qQ֯M>V-@ho-2vWo 6~:OQV3voqFʮy_A{V+8KE$fvK,A`8;ג_[ZT ҕJӌ1_Ư%ͭkcHsPuMB+3ѻ01P 2n+01V {P{}: "T?ap7cN^cKH)Pb`dYeC$nÞyiX=2Oocj@}\8o9 jxu[`Rx`929"[$2=0"B OcߎIV6D PY Py,#ʾtrf,VfXRDH!>W}-:wJŸ|$(97Q\ZOU,-;pK42UvUp93)J괥)JR)JR)JR)JR)JRE<Q7@*6cq˷1g seS-"B0B gW$zT4\[ö#*;oZ4Ӯ4K^X@@dQ34D@0}EiO%^۸IVΥУ2Z5Ӳ3M#*LH;#BLHk"2F,Y8c>z{h !1 ©Yrl~9hl-R@P +ZoὭv&wL@OUBvG ^Mۮ|0)ȱ+%mk2^p&;&h~b\* =H'Mf{&m5M҂.%N3V`UT[;< 6]'TZ+;H$Fλ 2@#$Ky|h &Pd [9}Uck Y$27$dðGm*뚼7(Gmk&7)CԙO*L7e4%1c\I?繒e\23+2r8#?*=Эm%w(A'ZKnS Yw!؅9Ђy\; 3@ +F99 + +=3O5'MӮ( )BDZKOa(~ DvI?RLrRe"5U2qIlZ5*΢;TuL9#jLJ5A+E<*1T~}4 QchtI;D[Ջ!Jfcwz8;!(+C; +QdV<=v3\=&"IqU8.fߣr1!|(1[5],4F&w/J+Ans3'hw~*G$kvbu+Iɸ `qP/>n$hf1 dtn| >P*^ ;2\-8NfbYј8ֿfi$I.b# m%v෱R뙦3,K&HTH>lxq[,k Ww>ϖHX"o˒~Bop>ꯃqK9wU@MGi'.Kwcd-W7,"%D(NA.GaW+{uHTENI^-ۓcfn-& +8eꡔ:ǝ)2}ps[$h䴈 Fb#(0qR94:(I8gbp8õG4'QŖ]Xm{uZծa2JdbHX<`T]5I bTF5o#2 !Am2ɬbi8ڽW'GkļE b2q۸Pm| "[7POP˼r$82m}F ,<{cN7Ӝ|m.dT\HY8XlBˆVJΓiV.NN[ +/nne +13$]*QgkD.!)Ղ 止' p;}Q鼚X1MA'1ڥRHr -Y+jmdM78=k]dž3oa ?BɼŘc#%y}+ctԹI((NY' 1yp;sXlXA,JF̆CJ3ˡ*{c(9Ϲ&L=&~v*UP>$$V4)@괥)JR)JR)JR)JR)JRbf }N"Y *gTw { +JRkEEuWd%}{JW̒$K(`{X|#,7,#qN;fJR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JRO-EMP=< 9?!T&Hbq +3;ǽp09U+ݛ0UI#Ią^K1#d5p00&QOrFRP`Wi`Wb`;Wڣ$D&1Xɋ!D/юF2'j]Z M$5\Jm&1!p,*%`F*ɭk/-qSsJ/*2Y^u|Ux,RXDX%c/H4yy[;-V䲸 h !C1M+x]T%k[vpĒP1 Gws;M*R _a^T[TM* 3Gp?~}5Q\^k\ŝ`ɐ8T><+|"dYԸy@7нq[%*Nnd`%9$z3m=ц%KY9ĥ_a1k'~x/˨_kw/ eqvUcw~ꇦjYިcVSXד:! ^{UޯHtƲ:&Wq$j޾k # 0 FFpkF%aN eu2Z};kgu HǚFf`{h"cWi8G =\BqVy^X $IBT@S\'NU9dp;ۚ^o,!-**7ذ;3IFìDe8B1Z5h o<#+LHO!Q`Ȫ\^çxe3ǔ;ZqqntL$pR{T ͢M} h:ɂe ˅%@k Ћ5Y6^ $qYhڌ]p16Fp J$ڷk]!bs|CLq\Otc' X ߊ]zh 4"Ft10^px>Y5 N8̅d!y$ !߷R-|LghKQڛe-pϜNc +znKClXY77M@yu +FtPI=rMq㟕mZ7x2;; +wى}96uKa+I*s$8$TR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR_E$vXH 1ڪ' ZgL$,$_cIՐBhfp|7;+{[r[k>g>;]S'Үdcnq2h'ʈQ9ڡ871H剛͑@|}$Ru"_ fUS(sڦZT724.!`AmՅK,,CcBp T/Cۇ;7Ga]6U?ƾu)L##gy ňU$A`cqjK8v-l 2ԕU N}1MBi `(c^<t[Kiv  <[X%©kȟa'j״,fW\  8M3Qkn<@vn1,Hl wMd֬Ȁ6w)`JW l.m5 1vk!. 9$χt{)e;qElKc¶kzSZMPpd3AvS [A9e9 'R@{kk`'BAjG9?. Hw[KlU7:鶶ў;] #2x'=[kI`ZR`҅ +x8R%8̐E@TNs:5Ek[IuDUyVb"m@*bs;,6Z} 21 ʌzǮ;nmo>*%v{has+tU`wn`vW"FV @3«uK WDch.^d0#Ђ*43LLz_\Y%cfmsx"qs5mF,>Nr}iwʁz;rom/9ՖC>ZMB5?1#䄬xh~O۾΃?uEuewD}Tp^>۲yߐ1L/nՊ@P$^ŏ9$mQ+Yb{wq^vW.tmڵt\n/1!?n$ %.&L#*uy_fwt/q.1Ӫ.1VwJTi xBF9ۓ +߭?m=j[Zn#S$F\%W 8ګb/4wl99;2%F@J`gYb<~5Kv_OMV=^#|63!Gf.eqtݢƗZXDdGPVLX,yŠU(`MZ0 i9^8b Y$VhP7Uა&bӣkb"t|g1jԯ6d}k <9Ց'yi>exȐi19$pzK,Nf%Hxq^+BRH]]8HEJ}8<ץȱU˥ab~*ZhqdZ>EԕA#+UYv[ɩEB&DsI,ht䷔"eq<Q5k/Ķ%9>u1$ R11[I{i /UYcnL*UtY|6D0 Hc1… + j i7AZF~gXJ̫er@1kAoy2bvy[9<WNJo'H$(M6!IB2}*5}j+D"iT6EBwsV[ѻ5f[('ԍϭFܝ= +?==HZek ^{pU#fv'T+}VITUQڬ)l}{cI:3hc rPHIǥk/Sd-˫Ff`7nߞڋPaU+,<Ǿk]izb3[,XvJ0ʩ{qR\Qu*CRUrMkn1j3Oִ靥FqYaf`&:ŤDdTJB"hrAϠTL!o kQ H55SxlwG˶xk ڼ[>oM +r%#o9U,mG$״uYv'lcfUtg!wGfl7qjYM5ĭ<̪U/RTfMU +Fwld;a1<@?Qhv }9$~I֗&d;n噽䑋7>>굨zԬV +d2G|TZeGynჟ ?EAѴH,d(BlmU<{֘1 +"[p۰m7cqU=n`oqyvPdr$u\A,!i2q5#VѢ-ͬ +Ur 8=1Qu6ZsD5ʱXu99ؼ]N[i%EeAЫp{WdW#+B+#XʁUv&idX@hЪ};g6Qi +BGx:-Z68x9.#dE5N6mI$پ\kN 11#>\GjJ2$O ǯt" (L ugy['>f|^%o$w뵂[_@nYS&0Uݬ;pG k6eYԢ3 .K4$fEuÌgcږifYi  +=ku\ѬqPG#ֵi\Z5v)!w[pjT,mٔT"N}.6c8,py XGzlo,1q +=;?f6rZۖbYWB%um4i-egTalkWuEs +F! Tn*]v1 *~y'ICDG9d#aeRv2FF;[_ Z*t]~lJҬlth^Fs$х+N#$b9Q*2w.wK(KWG')}9k$rO&!*Gu7mTy?\ժ~oqW|7oE{n!l(ݿgix {6F[|+;€T}gDMdFie1>ûJi΍sq3LZId@ +@OoZ[c"س=Mo)JR)JR)JR)@괥)JR)JR)JR)JR)JR)Xf)JV+4)JR)JRbJR)JRSҔ)JR)Jf)JR)JR)JR)JR괥)JR)JR-uJ(琤?vni+Ҕ)JR)JwXf Niy#Tvpᑜvȭwڵ@@BY'<`T{Ybuuae =+$JW sO9$ +e0JUԑ +q*UW j#}5aY]!CnҵmbEeYrǏqK+MVq%`1`rI{ȮCll 0VT9V- ,$1#c9pN;P5mZ="4wVr0Qw?!S3Y7p!yTP %(=Q<"upc)>|q5Zp1Jdus)8vb-Ǖӆlz>mjʒ̈ʪ[ԊRwIeK&v'j {Au'[mY#Ac>v(MC$Ƭ:獌C'?1W#Y)JR)JRw(cջ~kx +$Rג5 +|*n=爵ܨ`IAʏA?:ČWS,zEPNH5iT>)3F-f!tpܡW@}<݅DuK{r-.cXf$1C3FpnNth#ې6>t ޡw+p9p; ߚ$TAP +X%uVK=/,̆WnXju>F~ɚ?vM)-LE&“ GZ?j +ih\f Va%F6?V6P\#krEO{rw1/߾sWlb$sSjbJGpkpW1LF@8٨Z<tjqbkѮ!KH["H5W aݺ;DcNpK\|k^+-l "Hmq pr ?ݲ[M?1b;G> Q`;ً37oO(RQ&=OMI'j޶uWA1 Ħ2Hg=5{{k{MȔݰ sWWזpvf2ȥ^5_jX: omy*p}G>խxI#vB('}j^bۭiFbK5ҟ +C5232PViJR)JR)JR)@괥)JR)JR5}i+FXo$rTg }>)%o7@Y07dWZ=$‘(Pv=UՆ:6쇎Dn,+V#Miv X\"dw5#,?^/űGg`?9qgAQ,hJR)JRk[w˻!sMyzGybeuaRO=@X nQ˸&]J8#<Οt>.:w7$:q#!'85sa G4WTP횑Uڍ LW$+A`*+#ZKX;fLDZB G}Ico,ͦc nUAhkJ&kdùGk[hP XppBy:0s $d Uy\-DkgݻiHrq0<pkMIO#B")ܨ>l n:vm= r.: +L +_1 }j.ywWmgH#!$j>ׇ$K.|sbMO#5[ZpmzjNȝJdUw:76 K.d. j tOۗEq+_8E' N= }I^j6]*EEXJ$@'IYKzp\2 +eFM9"wu! ".%`) r~_-{Ij.Vawpk|dVYZ96hN8RsZ82Ôrb.O>$>I3ЃPiOON:q#$%3Z%đ3!r=O=jUskIuvq`Åjys^I# ;LX<vԽ3NMKHP g=/0hz)b˰J89$`*{i[^y +G!HDJdwmoz +թiZԶ3#@ZGުK#&( qR5-&GPTi## l!à +8rq*QL`F8E'{cXAofvq&mƤm:B';yg +03G4[@]E2wŐ0$`h$emE] dy-{%,]< Cv0@Nm&'2(hdb2 W ߎa߂l=0GI;Frp3MUqC${NHT큂'Z,tI5)@w><1x i:u CL%H^r}j?4ME,71z&2pjO诋]b#|4jC427 +Jg5KEgdl,9H}q;=Mh5;{Ox^H&$`8  ws[l{{đa/pѫ(@ciK`8 7~#{ 17 +{c9VWe1mțcW[Kr5TZ,NvYCg־/p IvJ.$p +9{˝* 濵;K +G,rJ+ + "죖(3rI;FPCk[4RC*"ɲ@( z)JR)JR+Gg6PF$)dRh:6p88?VR+M61&uEܣ,p2(y8ҔDԵcF2Yd>ֽ;V[&,%7xq`GyҔ)_;v܌88$"R@I)JEf)JgU$ +52F 2FAc_t)JRd{iJR)JR)JR)JR)JR괥)JR)JRem ZҔUVb8jG!;w1h:>@ĀA#_UE' d6I)7?*=]Oއ-4k*K)UCX%0ާվ,U)JR+UM4l!̡I@+x>S֢ga# ~ZL7RtڻTI݆ {YhcGvczDODžz~v巪 + p~QHoYD Gd"jZŧC *)*GpZiX3h$$ҤU.r.e9a#.#yiZX{'-FI 8k^fV-y%X+`H v`v6l csg2G9(wCmu!3,Cj/=’N}@ծ~?um+g?}OQmM,O )drztm76.fi1BZ=FՂ]y278v[ZIG< EД8޾[i-^+;+lf0ۻz=wWùI#*QIڂmebUa ,RVc?i_H"7r + SjwKߴb;{x+sv<q{n{Pnr"Z#I%ꐘ-  +֯ kĽ->;O 24b{Fi)?*>I'`>궨3[fW(vFĖp]Oq%)P@w1XkQ#fy$QrVD{HN6g%EY=9lx#I:M"7ۆ Fsȯ($O )lGV-|I )bIHpXHWpo^GrھE<VinQ d3U~ANC@OV,j3?"݄@J+;ϰ㹨vZ̶E`cPKnc c9KVk`p0{IT|[LvO کtb=>խ҉AHfbiNI5eaY*H#5CSN+,8@A80'';O r+: #'9z8H\λ2Ru,nA. K9F}eh jyˮSpp5YK1IdP V$Y2~U&;^)P:)o^GIMK049fGa iM9+t $>3P VIJIL1&1nH'$HRp2kOAKjcdR|>T5hbK $xD7lCvU&ܷSys޾(y69&40]Cp[V᯵[DFf `2 +Gh$ Gm}m)JR)JR)JR)J괥)JR)JRej֕+D2JcSPMŴMMI1+lB^{\ee* 4&Rj@k[gCѬBp=kgLXUN{3Ի;(tp E8<皫rKq5䍒FJ<v+4)JRsBY,~ӵ-VyTG6IwB֬ +Wu)w=@b@'W:ɲ{kfiU HYc@}?#N{hE+FXF~U&=8ݔg69=9]XT +S:ƪTof]n5n%pYNw`ݙX3{NW{K̠?R|i8l#83@ _1V;G2H QkӯNg "(GX%-PflpdsQwpmX4ff0*9_Z5 Wh]+n/ 8$ަxJq'GS,L5k4K:4o`A~G5uXcno`SO9}jHә*XrݘO'BX't@%RtUanw_NDH9Fȩ6R[nGZvǧ `oyT}ȣ皾,YJOpp2Ҿ +T<^&t3\R&w9P^ҪS$ lIg3[m-#tʬ3u*UV`1)v<d^-Ou4,*da@OZ'eIS@!S֊ +x=HL<·xU$ƱAたS9fQp78Q1ĈyaݵLјه V*A\ JE1Of-YbRpTi]Zj!~ռ;_ :.`c9?,T2̰&FfQYYFOsU"WW-Mjc*ʎn:ӡ-P1>Zs1 E9'q=/JRȉ 1v9nXlZhY&xbemYV#\sϧ5[kikvki3o03jy9Kk +EsUhu˃K Ā7*GQ4n^$#d[XpĪns[\k0'3ȁF}?u]H5-p 'x-=goyg+*O7ShaU|ܴq JwKJ!(X<G: 'DWlM)ixvgv>#0W g [{UTdT~Tp˦)Д3Y*Qϰ*'~"mz[UFd(yQK'T>)eʹK$arһ)VNMS}N)$l!T˚՚O7]e(hX.n<jn/GO-ĉЕ*((xq%3!0 + c1KV#"\nFDPGާUZnh4ys6ҩQϛ#9*-"{+BYdydf"# ,ap09{U]iXJLA%0څrsxiJR)JR)JR)JR괥)JR)JRSzgPL}XWv.g݉QZ-LǑ3{|s*•Y:3]q27{EzeJ9@BE\WIJ*]*|[v C"8V ?85)JR)JR;ȞT2:e=#Tk"+'2y${H@r@!ϭN)JRFjOZJ1 , 8Yqޤ 3YkAY)JVH rHX~߽}ܪȡU@_װ)XY-I@eذ$w$Hx|[%"g>n{yϽ}[[Ic +޶Ҕ)JRbsʱWU(qِ󴏑N}I#nw=8Q`~5*)JRVM~6Im%26{ +` ul1Z鱲D˻wnOqRJR)JR)JR)JR)J괥)JWįR'qPx~cߴVXA*=~TT^a9h:LwO诽W:բ4/G]Nsg*Ry]_\ǥoiQSػ`޵:}c BQ*Ym;FIϹ5WX]eL/?R~vV_ ݋.cz(yҕ]yYOo(D `U0+M:m3XBOcQՐ[ohI/ 9+nx`Qq>T'؃*z-uI}u>JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JTX5(..fW̰l|8T7P(yQK*,pI)Z/oӢ3\H cpMnU}}lo?*&֍e7]yFGۈX:D~}]ұYy=x~zHɆ \]pyLgy#ڽXZӚ KkR~UfY)JR)JR)JR)X,% APvGqH)J3L4f)JRViJR)JR)JR)JR)JR)JR)JR괥)JU4%PWRHTaWԪ#\n-)%3\X۽m%+w j kMoas- ՊWޑ;Y[M!=LǷ,:^{z]εuaOd;d 1WcuwխyLx'U'mRJ+c *\%O4*"1=$ם2Ok68ķ4Ŀr^_ikX\Z7lle[85ڛd/1̱lz8;+g2@2$dm_sczΟ̨X0b"FGʭ)JRvcc|yCU?uZ)H͵1p|@'Vյ KDeBhR8 @ߓ[|#3[Fx$c銕T'Di"@n{i rG'ZQ+%yB +l aqDfۑ{⾁ֳJU5-d(UYu -j \#T?k9[%1"na=HCuw|YG:Mh~ dj Gtٙer.Fe<0jf,m4ee2zY'l[\Y09|s>2Nl7nsc9}4]A[p;{RK]H,k$YT2A]jF]#ig& P2c9=Kin- ހe2 8a3V4)JR)JR)JR)JR괥)JkiC.w\ӌ( }@TRVte2%[۽AnIƥqH.zd>uQm/GY^oyBGsJ&fThA@qQtRX\[6%8#%OuU}},?b:9'&%K,>]iש[Esٖ5qaT:J859 +8Yc22lFV jgy`c$=pߧҟF>B豠ªQR:7olF.y%~3^W/mliwȹgc{(l9OehPtЯ+p}~aJReHTU$RkxBZG]z;s_^0񝮓*!E%d1/rwxgi7+ Kg>O*}4Kx`;)8?#RjY K,j#IA#J𴏨˫E4I{ 9N S ;PWEDGuF̡GlGך8{MAhSCo3@[[Wkd6a:N6WSzHAQ5b6]ɖ5;L?sSC7A/ZU%Bwcҳ.'xM[h4b`[@z1Z`713# +7n$'qX)?&ؿwƭe!R¯MG#'oIX1&D1zڼo-|*Ҿ4ԸӢF"A<9Ard89{Ceau,k}m ^UYۭiLQq$H[Uy0 kH7 л2<(hľtWVP@'k/"΋ ]jl3Źp6#<4ml3ܪ e3O ۊ漶7#7l+D߹ߏʯt=4U]AbysזtVnDUn)saV%S_^b $hJF(Ln@,8Nomk1QnuwlTH[w1AmHOd֚奼Kvg3B&y2?F\Z!nJsTe +zʆ''ҿ*ukMki"шm,8Q^(-qj`?1OH~?Dόuk;yF9Л{Wt_;qKC-d5_ҕ^Oruc$g?aF/-1j]?IX:*s+:gtmWhlUf#Y`{54h2#V,#QIWFQQBB9jDQ_U# Q$c'ʐIc\GIs*F [W;WGyC|Ǩٔ#oZđ ¢*ŒZEqN [.$l"Ɖ]rp2͏A]RQ$0 ryِ|kn+T֐cCc!?ů<8ھ$U2}T:s4,j3 - l]PfqWVkCڨ=ҕ tkJЇ pn~u0 T 97PHSx9tnGȟZ,`uvߴoǶf-_xX1½ }{[VB8 [$=QoRW !eEp@e ۃSp84IYE.1ۜgn@7dZeV+KLDHv[xB2+$vQưD*P{'DxՆA$y8 25b4*YpFVe<-}< +EYTFgػ0["-{;9Zh`DvL<FA4+ԢDȯrw`f P;wϯz4P#A(?]?}hш5 *Fj4@N{-wd9ktQe#ASD$? +C !*T +lװݴ0!92n\o"Aw9I[/$1A,I`W?/^T +EAQJue tEupƱ(T `R)JR)JR)JR)J괥+B*ӂrѪ.1Iîڥn[nᴐW8㊝_/0EV~//"^((=*>uk[GunG"S/kTvV]>8cm@' +02qQm- el# >VG{m@8 + N@$*5^Y۬34=T RFF>c5GOŷo3vhM}ؾW~ 27jMr(o(IoOqVA14$u.# ㏭H5q3S+5N8V}U'F<;ڬYu1hLF" &6'6c4øooHVҙk4APx/邓$~ALmb|+5- CkZ@Ğ!R|ե*-BC, ]T3+nPxq>ǚCyN;{pٙk,ـ#x9Sl5+.^GXEd:TU#{՝fola ˾eFۏ biUڎ,4O0rYٰp vU*nI&1)JR괥)Pox422FʩbIԥ)J&oY3i#ipyU8'8ݚ_,'NlvvAS~b[wE*GRH Tm?FY=쪥Gڹڙb|< +7A\:EV_X~!,y+@F+3^Mz0d#y8R+4)^]#=ר0PIo:E*$d-cAPOl)JWT]bu dÅdU{6XiF ؎L۹=Mz'56 ) ^k:KtԺYmv*%Gj֒Ⱦ tΜ(WpҩI5iz }!7?ϵNMJ}FM$FC{fG ňҶi0-~N2KcQjW[; =U7!Ҡ9zIi8JHWi(Z&so-bo”(W ,|m8gla̽KWѾ+L1!SdwUѹյKyvEGdɕ 3Ga;{}:!w,'s }@<|UO2\$FQ'̻y>kՒY" "Č7@1q[7Fd%aY <یw]kMbT*yǸlZf6J`g<@ An{nmt$Kfilq n y0C c Up\]CD rĩY%Xʔ>Sn<5MRKܒW08gHwȶuDy;A+# 5.5M1FA"=N=v}xG47b2(C`0vr89V]3QUfəgŕ\m+:\md"H2n%;wm]i6+,$AH=M=® C*b[?JGQ$+G#$|}- +<={aڼmM!]\Q+9Gi-ltERd;\L vpNxװyU5!@~o1{|;?Ty7(ç3onX:S=GItwO8p|c^d`bpȌ6-H#Ҿk* FnDRc +Aӓ?SM,`$%Rv]5n4[<];2j +P&;Sy=wm5Ӽ3MѶKy [$0szVZn" 6K#SI<`נ~,YސeR0l)$`nۍ:m}4[]ъSq*Tg'Yu{(ch 2ŒYx*%d/qE$Ɉ`-ߊL1 X4iz !rq*΃s5=F&20bJ /;<&}_S62HR9m#;H;WyxrԵh-[b`0}3ϽIe}[c (6$׏$c>gi'5YmR-$LAlcOzwQZ*]imn3z\>j$:֖G *]cI^֠pA;͹fH8W7sYtCTa,@8^ʼ6e=1!!dh{QG5k+Ki$sJJ4;v HuRI1ZeIpۛb@WZφ쮌γHACU}*C,Ri"7ϐo$y5NF[X7^(JWs֍f#iZ+Ln{ ̮ĺT}A53r|&0ۡa+3̨rO ԇHuG151%7,A UCzק(SWKM?sUY)J7&[dc~t)JR@1o0pORVZxWNC3u%[.C}z ܭ798H3k0hma + `6$ԛ4RFQTSGPGrvTnh)VKcMdϦX_?TQ~{w[xj;HRJW`w;mRIRd&El$y?1VTVKHۤlv=T)%cq'P͸C"5m(#{Ro+}DeWW*XaPwAtQ/lWl/Jiib(NKI95Hԇ=27}(WB,c9 Sڴ g tK2Tʭ꙼'b""0X۔ <y`2+AXľ| hZ S1yr1TxF}%,,`EUQQUr3,x`\I6mS+dSQ<mm4irŤI'>RGNٛ$ef27;R(Cpl}[ft,I_v3o!I6NrT*TkLe| "[.o$p4*DR&TÜG9|?ekywwWvg"Ge ,<`p01YҔ)JP괥)Pt^U߈b@ +Y@'i Rh.&;R4gcp2N5opQꬤv =-2^` ,s0;R;Hj֔-mOŽ8195k<Z^l `<^)T>:qq9jJv?o̠5.)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)T~ҭe[U[X)Wj&ua=9 zR?5kJWse=6ɞ v9\W[+yfnyR{'`-Yԡldr?<JRsݝO >ˢ#gt]HX nWt)JVIZ-y#TvX1RF@8[vQ^ WC2Jk4}kypʾ۶+]ƻkk^&Tnhe +7p2v>f/;[ |Il{dTTH5K{Q$! V ʜ;N+L IERĨ/@\R-B!m"Vo`TM7UՑHI^7YJ}!52pmz)nq5c#8Ҕ)J& WQ1a$̾VB61ԪRFR[Qʕa'#gzXxw Ty gԊIHāRgA}Q,=EpJry7G#"Ҕ:^bDcka# c {JR+ihMp1qڮꔥ)J%6$tfU.7q2=k6]pJ|c[Ճv +4:Sh*C20{ԪR)J괥*=dqp#Al Ȳu9Ȍ)JRy IHޠ˸er=2;U}}P +K7?2jڔko Zҕ|>wB}csR|wrG'ޭagm #$^>ʁڤҔ+|M֯gEǖeyOJR|M +\!E 0Ue#؃-#uEE6UT~+XjҶ״8߯ 8*q}_q>7j=Bpcר5P{F,6R2nղ;ǏX6[o=N$ٴe[̲:gj/e=bO!0G9rTiu~t53w,LHZ&Fϰ>/b?={.,uK- +mq2 +6 s޵Zkaw*B# oQ"q  ֽ%y1ssij& v[C"GL63Yo K-Ty)9 e^2[Q 㕖K>Ȕ}8o+V.* 6  r0 O]\I*SVOO~շŧE$"b0)w_E i|vfڲ=WzڙSb˜$ g<\j'‘yguݱ@e0IϭZh[H +-RTOu8>xLޠpzmSkWƒ5aEM0Y4WR1Y~U;WOMͲ\5+Z B`S 6OlWFyubkP.G {816o_&0If׊5Aoj=Huv"+vX* PAs޷G\-DKyLYKu$ + /U +3K[ V2݋i"f!Mp@*}9KT[0.e+U߰,sau6y2}kIgFp^bGp}KX5)fA t@Yp' FFSm9lYSlvJ3pATZyˍ*K,,\$68<վɡ[#Jb2K4qGy }9SrVXnᶾhr7cN*Si-%h c L6[wnZ-KtcrpQB0# zNdNL`b9?Zij &km3c >3xt},K"xHUDn$\/$`Ǧjuމ4rZ$C.d#{\JH-np,3s96Uh&#pHʅI\p~U*J=/,cDRN `I9'V"NRՌ&HإC#ZM5f^&T]FgWbGL_0)8ON F-STl!k>^]D,K Th VC 䁕ERI#f%r.Ő2H}q@L$${£kv[AucxٜڬwQ?}>vTį$m|0`8|iך"A +U\`-s7WtV(Yԑ gij>XeF]|AnjtMZ^3Ys탼p0 n69c³Omu G[ϋ[.CU; T7RԮgNdd \dmn2H?3^lt!ԡَCvC#Wzu=Y.$#Tam s^KKK{W0ݭ̏.< +8IqSƛpuq~L}1ha)\i6"&7S]Fl +ӧZΙem9[m UUv@tۘ5H'I @1`9G#AHӦYgYJTjq8Y$T4eIxx My2q}|Ac.a=ETFY 0Nr=GȣGִ9;NB' H854rI`͸)vpm_#A-쫜 +{ݝI/1>-A&.yMavxX]ىnwʤN䔨7` 2m"Y4wB!'Mp1oӮ-5+Z>z[#!=۞Aou-hRt`稊Ӿ NӸ{{><7~Ku J3q]4ViJR/LZk:5׼۞2q$y_;קR)JR)JR)JR)JR)JR)JR)JR)JR)JRaIԫ`{iI +E +`}Ҕ)JR$k*`  ke+I'$"o)JR)JR괥+ç\'Hlc&%?G)JRywQ/o87LMJRkJRW4g rR;;v2u{ZR)^ƚuf ݼʠ;oB}kR)JR+EsY)Jk4|˰QN鬃)J8Ҕ)JR)JR+4)JR)JR)JR)Xϥf)JR+f)JR괥)JR)Z']C##*rFke)JF:8`Z~x5iJR 3q>l)JR)JR'6DpW]ƣqp.DG +pZW:ÈomKxrfs>[U}kh3[g\5͹眞0s過ثRv^7wćP7x-Նii3&(xmʜc_vzݕfh r[$Sb!yexevz'd47# W$<Ŵ2NI*?y4"h٥!)#sspr'slFĈ  =z]B@eU8p# fZ\ax]\!Hn N Rcn`"KmSpV=uo2ۅy%d-I 2y&pǧ_HN\"lNV?x뇃04rv'J~UU #+2 +C(9VmT:~eiMrq,1I(v3ʸl) +Hu2:mO.NA8 gҭkirXr^]sx;Uc H0$ +V +H]^ 8xՠ("c(&>jsG +E$$zmrOnƴ7+in\ ,l1+E|( +SvO$`Aj"#"̟ӧ+Ueg H = ױj+)V#3!q@3 ҵ/-f !!cG BD1lI׊op+LU'p`2'?Z<_bb 6!UNI㻸kSH#BBv\AdTd]VXdd9p0|jT +rY.V'A `YF Vb֡k- bHACRp +&1' i%D=KlaRVPdm{{ȱLbsnH*⨬u.ukN" ;A@Y˖@`@Jmt4wQ(d8%Rx>>b1UTyݘ Sx9D5.,d0$H[`A=n L8E—$;ާiquU$L;)Y *])JP괥)JR)JR)JR)JR)JR!3 ڸ~C$ 5Oqe*L:XUPW,jjfw,YH"> +w ht1.%IXdd|i\Om"@woQZX7tҦ/>gm wvwB}2IbX{MyawJi< ì1BI4R26u(ݓ=ڵ͢A5I!".u x`N8c"iF +#+*ČqGMV(\yo1UlTCNd2*Dۘ`=E36:F.+ya[ib=2gCagPWbrTTQ,z'*Y]܎9ӓS=l-wrѡP Y$)p8W~Z6:Ad8u) 횀t˙,u;X ,26ϳ޹MkVH4H Uޥ\S縫V|`VPZn[*$: 25@oO-1ߊU[L-|#Hcrr8Sjif=Rkfh!]д,0V" yGkqkx(.U$N:1bapsޮ+hb 2F$e;g2ے$; #˧]G3"%9^]h%bO&6i}_ %iSM4!X s뚇I鴏Sh` #_{Ud'ro#FlPAG*3(ـb4vau<""`9;[A'HKCY+fTZQo"43m\͑`x͖k7r$om&q iO\߉!T3( /*G|tt!M)\'Q^#>\ͽK&lZu\bX0>lgvCZk (Z%f;3Hom v'>^Rr/@;CEew |r1G&-oz0Kh +H1 +z'k77-7 v.MTIy0B9*=rquX\c\^ޙ$63sw:Ot-"dj8aon.5K{e|7J6[ib@.xI,SęG,pUrvl\Lگ6o4M@`8(gך͢5ަ`#6 qg*Ŷ2*[k{f79|jC+)XOs:8ߊjMXIR2QUpab= +LtqomBTrB8vwuҤ-`Cy^d ]&Zɤ4MԔ," ;LѴ൴w`JmƩ$2 Wi o͑E (b($g@K4z֣3A(hØ3ީmKt/f,oRP@`F=t1YLO +) N;72Zȶғ ų2{ת5R괥+ILk+m(rdHKMKPKiw[^H`eVR`koi/텻\*ݔf)JRWq3]̑ ;UV8^A}DјfD 8JmfE65PaW>AQF>VCOXd2т@Uٷ({V  ;Vf%R-6`y|gV{<3 =]Ңj|{TRkѬ+b/l!Tgd֚o<<ˀrU#Φҕ- A*Ơ{O\M4o-D.HloiQ5[\Ӎh8'ޱX],c(['#,lsߊJR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRapqU>I+27Qya}jʔ)JR)JP괥+^Z=J9<˴ ^lm6 HÂrsm5o;#R㺎{~`URJ@2ZFba@Efsci b8E>bk-`VsbŞddsvn6G1q'$ç[HQdyrik*,V^Gv̯0Ldz|׎6tHR갮uEm4k3` A5fkFfMĨf2+g@*% Ac|epSn }.5-f[;(8@,}>=68di}~*C)1+ɣtE` "FW5O5Eoc-(W`'9ڠ%4utԄ)*W1Iݹx'׿z\d$DtI$nYv>Zݤ^تeJ(瑕|Yv+14RbpٷP@ +[KY${(rU*s^R\iWTQN'֛MN+xrcr:pp>(xd%bfa1$nTqjųJ9C1Qզ_YC<ş("8SgqPEwsk##gF' ycOҦN}hb_$^Ab;25/ڜ;$ZCȉ}ǖ`O>=RYWH3cr=+-fk_YTϟ8m9M@\kM =Du0vl;yVxEpF8´mS~lu7BC;AXҔ)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥*#I)PsnsV+ln-#1Ne$PK f>N{)HȜT+ +[ `[MMI˦BF2p}FkUX-6 +\yvg+%)0 ǽklf6.%rsRbB"Q*-gȲ]Tug#>oN\{II9$rsQ/k uP6@ +޳kY8.)u~bg={<;vX`e֓my$2Ji푂+uŤW[:Ӑ:g 31Өi6Ǽ#PKv<n+vSrG|`UڗkC2`%]x' 1m<2[YhRUgwڲ>ݹ;犼t}Z1oLX)FG_2)dB +؇F{5@!}]٘N= _?剄ۘɈnw)ߌoJcc +\0FCVŬYضurU@7f*~f4̶tU&s)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JP괥*[t+yJ[gg>SjUKk,]7HE!ë+#:JTYo;ɐMcJ)U)evڹ~Իe Ϯku8X @H 01S*e)JMݫGY!+ #MaoHn='Q4b-UH"oR%{0D'ìv{hIafrUH9j9eWB + _T)JR)JR_u±lڬXzg }j”+R)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JP괥+G Ff<ۊ:pY2 A#8uT1{އ ^m.dfXN_\yWX~|U/.Q3 ۛr{wIM"F*ːq>-^}V٦!0Le,ebϦo}vwM2ErjCm>բ;ioVhɹܣu-YKPo # +I^iXxVJ.% +p$y/}j73]ʇa[y2=6w+^6ܠr;߃~qy3}MSx5c]"צr%طoZY  _9aUa1jF NK7YT[1dpNr8/=iɺЄQA wg[By $||x~oM~^ßgcU)t:5G\5;aQ~@վP[C'ti**(*M)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR(괥*/ \,fUW};|v8S3/,hO0U6wVVZJ`YAI^X!A*1$q ,X0 1On9'ˍ&$C#EfܠrXeyy5OۼֳMcVp vy'cE1u0.a%J.d#vr~q[C,K$BcQ +sSRa?*N|OpJ*T 0Vjz,*#G ++rHm<0#p0?EjѴH80+' 'OLUG.FDe8eu9VTTݿ].weor9(*/FzŰ/)Kw/K85]) I"`$pGhq2,3̨$(0q ȥA*H##w?@M:g'F.R$m( Ykұfs* p*t>J60T&ϛM)JR)JplѦ?yT I!XL/p'9 {{Vo5&e2I*>f[3\ m<~zȑNpA~{V.\5o`v9Q~ҫaVn"^>_N0Yz_1G2GVPH`GG|d=Ern# gPǰ,Ԛ;e/+(X~"<)޸c;ނ6C u*36ߚS$(qAI$|P]|g9{kTgb~|DxV޸lm99|Qy512R0$}GqYx|l9Ha~E|w $οiCȨQ\L5I-?E]m집=jȜrkQ:] U70cԲp \[!"yQ]ʖ kbNRjrͫOl%Y!Hg8,̄nS\Zc d}+K3GFsQ,%=vڲB g9q n#j^gP5tEIP ́9ls܊[\G."-"HDA6U9R@`n+.F=1GwU,|0Q(n#d.@n=ڢݼ֭%$glNyC"[@3:}Y~Y5-P'QUTw7I nq,٭̐G k 2*,9=DEޮyGxz#!w {+1Oł:S㱯nEF'd$sڱdJV0m8-Ǧr?Moz"D~p?g9XXnE;qP,5d &mơ}F0=jYV.@$$+ךxw$d?Sʠe '}Hϥ}#*A)J괥)JR)JR)JR)JR)JRHQq^/'{9|Z`-fѩY-ax(V  wuCvs倉IS z u8#G"Vy`$S!:N߅\aدpLa#D1=o RRɔyOF2 pMEխm״ޠMy\ *Hϯnj夋Oےu ~/HLX=_cƣ2FTck15+SӴpvps"}sq[-bW"+eh<1<=*):Uyci58#ɻhn½6k,L QFcV8'n}UT{9Āɝ#zVvV(S="$|>r$ѣҀe `b9+U3Do@lG](6`ڍ\4D B޿zȜH5v g0t!Ĥg +)cJCpzǭDִkʳKՕQJ$E:.YIxɫ=[O8v^aNI`k,rPUDv>|8 0A\% +RmR +T`p1Wɺȗ + +f7#,Ǫ^>OvK/~2 ?K2=۱&6@"Egː%#֝JFGՠr Ի'QQ @@ީ$R8l%dw [̗Q*tlv e + jQ[THV oR%Skw],ZƜ(aFT;;-B]EWk1|\ +.}sPtrRXgݝ"m+F}*~ @mzZEeZCaVb,YH+U.p.ь!ʿpHkM. r9]_Ljm GUdk0d Ht*x7frRFaJAxZ- `Ć{ +[trr[hUݵԉtgI.267܊x/$Q,RM1Bp7}*66PE$65qI?d}~U;VmamG3`'qlZYegk^/cJ#q5+E1$nDgUUÍl vfhnv|A3/i&׭1f +<T 5+{8A%'X8x<5\hQ{&klݼ؎ۙwakr C 3E8= +, 8NY}bo! ) ''֫!iѬ|1U[lFu8C3w౸ g7!T7n%s ϰۀ>ꍣi:m,D#MX)ӏjmY'$aԸiGcM]՚EW*j398T04:nu雩TeX28jn=41FWL369 M zڏwbSףӭ6Ѭh 0,xJR괥)JR)JR)JR)JR)JRw(ʡ +#؃QbtS*}V˭>q +Jށȯ",j#W`P6l$B+&.U + {x5I~6F#rFp{ l4U> OyRdV-kB HU +[y~h]r*x2$Dki6FBv76OszeHѤ18(E +~WխYƩ1 mB(e=5 =TB1e5’rHn}:If rx8wwXK`DCQﯫ {¦h` o:}#9C,Gӭd7cw|VѬc[hB9DX|Vю5T@\hgi)nT򥶑gi+MvUdfe-`8@7r{4&L6goaVaҭmh#62Fqߊ-tMvgc.4K6@Oay[[MhtЮ6W̺M nIUe{Z6>-v`mǶ+Zu`@I~RCb*W;K~mDJK$( +AVU†E +.pw5.epA9l!1;z ljT`({ +6Lsϡ?Jm60sI~_6U-q(FwgrO_,z?tn]یfΗhdILnP;}ҩl<2%XO:Șb@[_i]]HEdxEdݵF?:4uKۍF}k_k?usF~}mFNdF>˕ֱY:1=~u-X#9F'v=|&cFF\1Maؐ{] +dH&TM +{O*R괥)JR)JR)JR)JR)JR)U!ԟG5W1.⤑;ƶH .>x\)x%op;4s)VK]JbIb9JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JP괥)JR)JR)JR)JR)JR|Apl^g/BP}[T2Ij&[%vUġKnkk\lc*s-:4Gi%er% q8ڥ޽-h6V]s㊬uҵ=$vX݉f"FX䝄qVhbt+͂gPŝkڍQ(.2B*wk7ђZԕ,2LHvi6 \ y-˶d(Ps*+MoIcsi$Ho.T^T(Иe@#Bd~VN{ޥ 5P|DXɞ 5Q‘2 e@lgζR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JRj|:& r؂ A;nysICk,KV 6:9rK{؟Qa/g$vR @HF~dzU}.'3f2 $ 8έg͙d'II$woZRɶ dp~UPMۓh![ RJ}kGU(Yad';I+U,H!$9PI#=y_0xj)bYeH]0xڗ^ϺDA.8b+>t$mFC<?*0NwݷԊR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR(괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR% B0U$Iݖ$[N[w;nG5T񆓢m.V)a @>տGL% +3ۖX'K9Ul}<RME."##9[p} X'Yeu"cgW&<. +Ƒ85e)!xaIZҔ)J)EՑYz)#s2yY:v%Ho/Mè^pr9Ҕ)JV Ye-.Du(X<jqȌwT$>5tWPԣA_Jd Iy8zaK*FT Cr>:X"ycM2/,1=8xehge#Ƀ)8c{b6&`66tͿgqLUwI@ã52s=~د|׫;^|T+ҴnCE˹XnqG]Ju^6>.@Am胄.Fs8D+i1L.m6XGmr==ʂh^㞘*)Y1ěD`+հG5[w<%j7JT@ r8$XQ]2qd]\Zu$$ 6**Ol/5+Bn1hceqfa$[͎9'WڶkvrYA#ݨަm5̇ N蠚'iea gvY$ 1ʕ@jĖ;NJ^[FCʁG}+_$MuFҕ7n갌r6sjK+aS:&"Blvn>u^}29cd1Z+=#e=FW'6pCgQ}^eE-7O. GKޥ.hd 41Q&9 +n8A??t֤ZO{X% cNִj7B]^G’mG 9WΩ^hVMsrQiE;#2. /~¾m r֫+ȍm#|Cۘr `vUe90M|iiݼmGDBJk+g㊝fuW[Y3G5eܻOv*pP֯%Ô-RG3bp'Tya r$j:ϰo] Lu异nlk䃎jXؕ =wgLvsn- +.~61stJP&+[HeL.wR #˞©b5i4!r\ċ(%W8 ۾Oj|DI&1RFm^cop ,&iגFc 0FH۹N{sS..5WYn.R+rȫK1qn <*<\[x~6ׄ~G'nR[rYXHNe +p탂NTn,E<~z|,tVFeG0Œguo<‡raFC٩X:QwîF2.eVWw۝dԺ{lKp$П?U&|G=$ +yWB +{#Ѓ_r3]M85)bfVarvsǵl dZ$ 5Qm_2e!N8$dtdgnfiX 0{ v5M +|pqϭK!|/ۇ0"VӴD=[bE XMXkh6~%2 JۊoXt_tc9<Y}K ws #„];py$ky%2oǻk09*ƚCR,Ns*e֑#\&rvT0 \t당nʲn&~ι*w`Gl*(W^Vò;D 8ǥio LO-۷atSv68ϭMҤ2C5Ft(r0 +5GJEc17 d{tĘ w6 g W̺]ķ6uBGW$О$wua\q?*>bKLG)x$sR=V҄3+&,hqp}CçXN~"YLq<[-Qܪ@DYV)PHQld3H wB}IzP* ^BE*0p{9_o"TK˱V ˅׊.$ښ_4˵mK9W!-N|Us*pX]ěW qZQiOi=REHV]7dh|1=cr#,NĀmߏ;T=FI_6o2,a2] .F2#͞*B O;%P6ݪ)UERNd'$|7{RI*N}R?%%*͠m]O#MsE˶G +sg֢qQ81.D{.M݃qR3pkpЃ4)#,%R@ +'$ ӟz=ɒ5dhhYc(ۓ͒)8MM>BLJFU EpYvGa޵qgMH2a\$ZeŬqB%,m;vF;\sP\ Mv.C[vH!@~džV3I~U[q#UTI 2I-'>kgx3qrF=n1<21TI\!6$PĐvpMd=v +wnxqxZdӮZ7ļ_bK<|ݭ`&mT6hqP&ѤlXUE]7-CH;q.pU)@7e@ǰΧj:7;xLK"JHi'B3k{ٮ#/vD!I6q>UqaԊG;1 F䌩}è$"=%dIɫzٻtΐɷ$rl l qi,ep^>@ C.3r3S42=;h!?iI&R괥)JR)JR)JR)JR)JR+AYR[Ge–l5g{ +OUc٭ +;kJj6rցUP9NAxۑ*M)ZnN*.TnbrN'sY+F$w9zvk︨R)(`8`2SHp^#\˜ ppp{JJf.k 2\4ӌwrSjMZzV2s,2=}*Uf\\ju@YW,B2}IJsY.g ԚR)JT{B 6#5Ä@FXhϩ#+rAk I'k,N8_0\GtH]NpC)qlF!I +=xԅOYHN#؊^Ce 9>Z5&\ӤX>LWlqߵ}ZZΪB2 8'OFZ7 +w2zS >BiJjms !ut=He?B+m*#\%ȫ+dCX o1;zԺR`T85;vt1)`ϸx9'm.8s w'UԋLnVV{8VbymY;+ 㺍e#e`r# JR괥)JR)JR)JR)JR)JRkzmw:Ggs>'2j 掓4Qۙ-KՉ5K;5"FIH@LHq8{Wj7_YQB͂* +S֮5m/OEctrHxʌ{guWzeVkcC2`\pHZծ+y"=ĉ27GʶjsG{7a7FX`C.G5מi_O|u1m{6$ߎfP_7o25A-Y@99+aZO=¨lT65&\{r!i;l 2N> [u\i 1TI%Ҿzq#MAVLHR9tn >۞VY $QqE(f9ʪ# j'+!:%eY_(Yϗ`cN3S]hjRAds+T 2y:&F3")`|[եh +Om2,1`gLm!3+AFHSUMΡ&}KAH#u `ܜjil/!;GL /$$ 2Gbrվ];qAm#Zo:oCJG<}*nu-'+<[i.|H5"SKch]!Hn(^K`{W gz7YǼ0 2 /## fHB]OQ +d烐n߽k sMFxz]gdry|gUEv.ƀsE 6F!e,_r٭ft舑c.y@>{#6/epAnOZ_ϥ"Xb6;U +<dHX-OPKtr2D. PxOV[x,C3p(bx]ccn [GQu }k(c1NjGb'kMZt4[$7$ot᷎8<馳uCD9 qBfV-5̽Y= (ϯz%eYH#+3t4ˍ&ak0)![zCghN4;+bIEwp:@7UASVwI1 dernAqV⩢(!.,NI8c ף v +U Nl8Dಜc8=Wv]B;t EK`p9"ÙzLa}Ѹǘ'E&+B>2$@3YX,6RtRڥY33ҧK!!h*ޔ(괥)JR)JR)JR)JR)JR(j0$X$mN==Zuֻo-ȣx +BX2]dZ4U`QK )P O'T{KnHF81۸#8Kgmt!glLSol/nSc3Pb2{c8Jߩx1[2:t'{TxnN4qDLk_h'v2];YYY9Lv~Ǟ3Z5m"{t ֏nw]0J>}k)]GGx4sz_3}+-LюD-@A mAc̍q?*(u2}XӪOsm{[~ 88<m&iw ꋼ;8.@8jR9Y-AMNR28~e1[0" +E$U)]gJk)g"I噣F)bS<|jҵ +uHDMn[iF8ԉۥ"L$ED.6l.0'>PbћMhCK\Lo=ݪc<Y&M#2F;C䝜MLkeWi`H刾J+{dZj'1Er n 5' ך]dߊ٥јO/r3w]j +\$.ǖTM Ǹ]{I:M_cG桽slqvBS$JWjI$ :k.`\Gf+Tr :mA- UU}Kqǜ}7cib # +Nps[ѥԦP-*bŏεzU6Jl,ƧǷ'v=~UqCOsg&_B6u &h67ؓ#N9o1Ƃ=3dj\Cc" fI6;Ѱ߷ i}p*MmaQ2و*7gq9uQe0.6sS#]Ɍ.ܟSQ!Z  736*=Ue&s]*FŝcI Iڣ + 9NHw]K,~1 y?'zig{mGl^;t,.N8 v[G(݌g_uBۭlku]oܫ$sYYQ:rBOiFTɌpvq 6[-BV3.@RF?~ mR%X",ʕvϥV~7monۣr;d,$yNY%1 8#ʜnmj6|6A&i1fYf{IK4fhnv }v/wi}l n0(^ClTzvG凉%=7\vt1%<֦׭GqbۂYЬkTwwsS,`7FGA>ܑLq{N;z:}_O ] +;{vQ,o.q/1iP`NA8n;s\zHĻ$, ` @ݞc֗Z-cp#XIJ%-mLp[9xLr"`]= GV/s-!W`rsm/"56$aO|}}BI?HxvyC h>bVw`t`0 .E< A 㹭6Ek>hO0﷧-=կ,Ӵ{i‡%bvqYR괥)JR)JR)JR)JR)JR)JV+U7`dW +N ;ZJR*;_$4bC7)JR)JR)JR)JRW#G*V* ՛{xcXP)JR)JR)JR)JR)JR)JP괥)JR)JR)JR)JR)JR|U$1i-q McmGlgY"> '+pDqÕܪA9aYIxG)ܮ;,|8O&Xݖ*ḍ6I \19/xq9{2b0A<s}x#bT,3)O%{$Y-)S6$6|)CrmbIݱdg'Y&LNCr}b+m/Nf$1Ϙϊ{0!iP"`y>*U,D;f +˕a& 8=:QZC=~*F/> +䌀O~2WKx*+e80Xz"2lޤdXǐr*L:Rx "2ev`vUZk$Ɇh 8N6#ҽcDmOs)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JRQm-umy5eI$`Z[])mY% ">'-=?5o9qrвDJ`nN`][?[3m 6pAc"Iw K̒Kƪ +Xc9byZe&d"a G@Mh6uy{fY rI¨'zӧj[{uh\pGcQ4R#2CMvnjyAe9%W$'Eơl2l@Bɼ-\m~WJsLHUA,;j m}'M7+lޢDhuTddkĖ(ޫ#FFXd'W#>/-"[`]UK3݈q8K=dY FH V)<!ǐ{zݮ˸ ︁h<ZZVK)բ6Bvw {wM[U_kwf215R-HU呶ve 2sfnh-bmjb=iwI4,AR=En)J괥)JR)JR)JR)JR)JR|IM^* m.xmWDu.ؾ$޵RW`F,ّb躻wpyϵLb.5+vɎ}]'4Mm5 Ni! 4ȶ +4t(1FQPZ>5eLC ,7bI@I!B2p}95ki)}Gb6ǖ(eN1LVU}qڧě"UFŴ"31EbpF9i(׍$I|U 0n=94"We=3P$Q%nL ckT/zꑖh:e%b`IQl@ѐLÆ<ڶ'^)uj($Irpx\lB#ff%B\O>lʇܦVL;K=6U;MsӐ[h;GjvsnX@&'8yN}NBj$m-cɴ}=T?n"LL#2MfVm}q;նrLe 3m "P7O=j5Kwue wWBi;YW3W\Moa4&B.9jHL&@$r.!ݾVF*[{}\AkE(sef̠2x8Y7V՛kɕ2uB 'z%[ƏԖkEehc>p8a |_ $*HzWVS|G6B6^OgfYwqsG {jDdIOHC V#o*I9%a]|2[0pnݞ:[({Ӟ3'MfB<ے“S] w JnP00Tcg֤xiaƊGvNIɔ)eqϥT3&s2h-LH`C# + }3PoQRVI BvVJZ0"Pew2@`V^HmYX,[IR@fk9VH1ōôɀxZg:J.Bl`}Oj&ǧ;`c(X +w*պ~"}Yv6ܣ9d O=G'1B!$S+2dH9=vcDڷ,m|4yfSֿB!KPVi7!;ֆxшȌ]nc.x<+[jwwH +6]l2 m8CIa{~.-m[H"[I^A$p$>o;'' z{ +)J괥)JR)JR)JR)JR)JRj5ѡ;7* rT|{vU\6 +}O$RJR)JR)JR)JR)JR)JR)JR*6foh%Hd8`TQRY!gsݘ aqRiJR)JR)JR)J4f3DVr>ZJR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR<\=mf>^wlY$ .I R;먦OЛkHмB]!@e7p6j#u& Hȿ'< VFz7܄F߫ʄ6*?\t 2YYy#knElK24T@WNGcjwuӬmd>?!*ofxug=֜I"w/Co6sUzciF2CUdqcg7ز|V+r}jIN&҉QruKeO;sIR~骐PIpi$ (9g-ߔOu*)% P.@ 7|jIć]Htv8NA毫4)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JRT7f^%u(T<FAد-B:+(A|},`* S`p3IR?0V5LzU?,dP2rp1}%;T 3@`Ac +`Q\a#،ɂ3"ہ_2;#3!ʖPO$p~W@:I?!_`#8;FF~t{huK/b.s|s_[Es,j965 W’9P\9qqXh][Fn9%I$TGc +IUNN;~j‰P8`Ð+b6 +R?0{D6lvHB00b끟Xx/=ӡқi00~ŽV5;QBOs~1hߏm+KxCTEۘzl}r1ZӪiN呶D( + rH޷\^B<#R+_q7( G+Ʃ,#^4ܑg s@zi:q9L]pPW<=}+u Y)du*78>wqXLQI?[exYymFyT:a]կTAu*DFN8 YS_xR}#NDghbFNqUnvex\:Ðq;LKh`ƽ6e`s~9fAmj gEܑrp|U8u 9Ơͭ%o3,$]Wr p C%5oJ-X 9kYlFD4/NpN=xj E-3KQ!8ˁl]jѭ* f9ppAc9Kyi,#/܌H7/@8#8^[\j. +2;H$`bB-R<;@,8`>uw $ A;ANHզĖ]I'e` RPp`eNxw=n , @dB8޹3`8d-䱢o\ddrdoSpq_S "C:aTq-vkW CA[]e :{Ƿc#WkRwſao7n7qW/Udmv!˒ +v<Qo5I!UTd rOsT +OsQXԘ _98'5J"ҥJov͐ H,s 8gb%k]J/Qc`|qΨ4pIqs4**i.N}*g7_/1L4x2JnTK+7V7WxLk1 ) +[?[^H"uTD(3'ノjźս| YR)GYK"zova8Mbw[O5 +0X+CDq sr@?-M-BJm X],NOj!Id$U 1w}| dHZ-i G#>-b[Sx% 7.6pAyWSPҞ5&kexHNB3]r[D/ՈeգuߓMբ3[)1V@v73RJR괥)JR)JR)JR)JRS~S# l*X R3ʫ/"5-Z*9R%Vj  J0 q/[I9bvQjc&L`^D@# sk]q.r򁃃5ZXҡ{PU<ϼV6׫v ŒYW8aIwfd5 0}-VW xB©v?E'9Ȕ[SZȒ $̐2p3.'qmRHL$N +j Hծ40[eFsGmdPX s*[^tHd¶UW#џnq^LmC|YS*24m~C`x{KqZGɞX| x,@ϽBЕBW I$dqŋe)b<&^u^M\u ǶќE(8` 5q#V(9`Tw Ov12t (RWA)U8}jk9Lfqlol`yGӽR]>i*Jt#Rƫ8``$n$5suq UTGڥnmcpi|fԴZ;JB1T/ wz\smqss,[#y#A#Tۍ>C'f.gHՒN Fv{UoڂBkH"W1B3cջ_Yw7Mb$rG#Dc*]uxzc۹3jԵM"#2Ѻ"đ F>>=UүaKH*ܱBUO6^DHI 1ʰq T1X"+LFb>p8?Ojէ鋦ɨCt'&[R!TdCڽ5(6.@ٯ1C[m`W mrJR./OԤ]5#M̆dr dunDx-vʑ?ZO[KTb&z)@x +:K \Ǩ$*ā31eo1_i[\Ka IHr{߈,׆CB.c zJ/qCq, m=ލ]b#s5m mxg,:"qq$)nP P9p6d߀9M5Wm폳~|n;;<۠^h߫r( `@7i4+gD|MۑT9i(s/OLg'9Wz][ItI +,7*H zY^]x-7dt! di׏n< f l+8\P=%Қ >)mFo<`ׯ}' ?0*Á^[YT7rC%ݭ@EEwҧ?e:tVZ7[DtVvМD{#c\_=Kp2<)LmhȌrF{[glZ! Ϲ""p6=xVcw>sg/|Ir]wpF Z뚬WZgI&"+iBPtQ>][ZY}Z?=&=zdYb+kɭ$n2dFcҬ,{h7*lnoVR괥)JR)JR)JR)JRyu1ݽFF;DjB3s>Eq[P?R#?>+Mսe=.XxD1o u;˂|^ENn$ x,;OGʧcb +cOeQoj"R$g<aa,,ēfcb}IH%e_ #$U6; {'7cڠ^%&cq"F ;Bja$`@ިaϷ5:R4y`.fsQA'x]Z{  FH`FA""lgh&Rd8Lg vl`5;f)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JRNkOBK%ಀ<27AhAx3$$c )^=F9.ܱ,va;TR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JRViJRg83j)JPx4R)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)6pB7?ST'V/,١keήI|y28bc|l-&!Y_# U@ +Iۏzݢ߅X&hP07 ;TxJdV!V?gB,*α@ ;5@`{V =\/~>Q#-cROԞIS] L1<\6ќeHjkDډcks#CPN~UѽF7q54LJe5Ħ^B遇>ĜRPҪ.o䲒R vz}1ܼV"t@s:#$jFOeGp}>\ՎilO= +0d;Ę ysRw3LwnRג`Ur~OKLMy9 ھ:R[ +' ;ep\z}j`3Yw_qlsT٘,eehs.5ajHtI2!@8˩֭sL4G!| ?u1컶[pJɿ,Xَ;%TjY7dF1uZV7 ⛩fn>{` F}yCZkt B"VYwY Լu5jT.e}n IL8D}*Go4)nz1̪ * +}?Jiw[ErubY"̻u7L7NTEJ3LpQ縕YI6z;7՚:Q:; GRO;q[nV[IJ@Y&vp %|l5AdHʙݵ<PAPj})JR)JR)J괥)JR)JR)JR)JR)JRkkK_散YЗHD&\? <O&i|Vb8zy%a^ Fa؊T~7'7~&,nYeYL$?fQz{Շ&K>04ќD%C{8:ͤn jV)#7.ao\6ǑR5h/M=T~6|Ao>s MMi$dx +W){4v17XPBo^n(ciiԷv.cˑqQ_y FӴC Y]ueܲ܈{cmh,N<)8_0o<+酾=圍ՙHYiBʧ$a5:IqmM$]QU^NN3Uӄ:20sW/9 $TB=O4{?NIyC.^A؃flm*j$תIb@vl{jmakpRfC6ױj}m䱞%Vβ3u8S98GjM!vz⋧m8kc0}j($T@pQx)qʘ S3CMIe82m'WƑ W0CyhYfrJ差7) dGxc#]mm͸`lNj4CIhrW%l1;GDYi.! Ī#s-l@9 d +)'=BB,3 nD݌8?=ĝ5U}B0Lf}v*8IAdCcwđVv73[ 낒+he6wbr"+Ul N1YQzM.vYZpBg־~Ӳۙ1fcy@k\y$)f88Jv$ydp..f"@ܒGʥGkey\HrI-C 6iE. q[né4n ;U{c+cΥMƙ3\ $+"°e.jqک=(ocRI nTg$zV|_s41BX#brcn~u5CcDyd_B&*}}}x>eԝPʃ8"6#5eZJq  FI$e*G ٯcj6xJ!g2*}8=C{u;fouхbBwo-eHNVB'iZ:Qrg޴sNk<ח fV2 9_NTm5dfI;{'H`KErU!I{Ud,w ? r NH yFH&imkau.bif뻴⽕yGkēgd;~{f|鑟<> b_'נ5R)JR)JR괥)JR)JR)JR)JR)JR\ȡ bqUxcKK* s[oKME,8fæ[AHDC;s>YD ª +Qo}MB\$PsTW8?~k{FkFLLNP嗾}s{{zV?[ 3>FI`GW n,b m|'Ig|a0' +\#rHQ]趷udB!7+m#pbDu Y%G䒄e~G:-r˞`sܞ+u6 NIbx%'_oҹA"g%I;O>F,\mhM6u$ٻo譩Z4s`mՄ7&w'$a*"j@Q_&W 2y {|=b"{+x^bnD Ƭ<~'+};qR.tk[Y$`d)@E=b1cn3z=7$2 6nanv'kP-^ D[9cnsnlXϺ-33# OOal-lȊJ$.y8mY$%W{Ԟc'j¬wdRv9nҡ*͹] "1I8 9"WEɣ1,[q='jdq*;8JR)JR)J괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JV+4)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR:[FHvXi,Zɼó2{zWUy(_`q$O>KխzϹw2 +TS*EB$,ꈋp3OM@ +YZ8bgv+4 y]|Mo)JR&עSM1J^HZ@s gǷջh̾6Bi˯Gi[o Fdم\j)Z%.v *^PNHC,c+ZRC4&]$,U?A_zmjv\]3*M)JVt^y$hf=@YH ŔKt߭zNkݾzrWp%sRjZm}!&v- JΥ|4inh\X$z|/t#GWij$ `eQX= HC.+9JT]N\^*C98@s޾U +!U #3Zovm-3Lc2U3dh|GUeʍ$`U` {)Z渎F ®N28kKia+0RYFwŒ{Ԋj=9OA+9$gfR+X񸁒Ϲ+EY(&*8'GasRiJR)JR)JR괥)JR)JR)JR)JR)JR6qRgթ44^AUtFT3UCPȻA˸02; f9/hk۸D3kK}K7qo@6b[DlM )gLSFݷ;I/PoFYV}dU.{o^Jf +w*?Ҵx^)[ZZ[@I1 bW; bͬjzΝhᶉP3Mk5^D$Kgc c ,`IL88izMpja}n-v\ҭf,g+S0`>[Y|C͡RNW |x$:rcv<$q<}jMԮm5k i)՜)np*&}}M:]TnOXl1B $䏠žYT+#edlvj2;YeMA +$d} Wjv25A +F !C)d{pj_T_%=bk׺3!0\ƥr8 +լk~!+; Rja̘R#Ϧ*fhȷrʁ`p}I|j̋\^1DЕ l$vT>wh. \Fk00ڽ^_{ipNMm\c5 ؍ն`((\qwl)fxx*mˆk# y횇gߋ &Kuql.T*sV_Y'{qЙa[ھg`G!1zӦ`iwBt.āI H#z]CD1,&8©@lqs}qR[E$esHbMlDE +y>|eiWZ ewKl] gv6lT@ qT5Y$:rr$ǑZT-E/RE-T;ǶIMB}3QyhŃ\eP l9 M}|DL-L܁!QUvH^ј"{Mx˛_BwEv +0VW~X 4TafFA}*!WB+7I2;R]UfԦƸw;{z U֝uz"5k"x|"hU*vۃCQ[P:Xf]aMW3*0`|ϧ<M7R${Yee҅U-HX|6ZZ\,XD `mLsZ%&uB)lr9>gͥt!Sٷd+PN{҂68#8,6TÌ5j:nr@S-! 쭌Ɵ^j2_u yzP`.[I0=rjlw𠵧J fL#iIPu,#} +>Js+}wQۙU+w_p9 jVzTEԎ8zĩۓ`qgRx4yRVK{e[;fh~N8ڽݔvf)ԓw rEë>Q^M[G;Ƅ{.Iu`jriBZ_JI1"pyqOӵK{Y&3%SUJ<{OhR0sR)JR)JR괥)JR)JR)JR)JR)JRFjb[Ȯf 3)W08RQx$='xɜVq[?ki`)XX;qr>i%D<~$ZЄH'Fu m sZâkn9EG޿eDRq_./t|8cbe` ISI[ϡϧ~,]%pWߎ45wyo%W1* gޣ;GY&9 g A<)n:&hn:e }+w^{I\n_]J { '!B +}}iYuKk[`TFn71];W=km-Nܜ}YjRj?,+v<W>:zdmE6?mpT9]s֑&v~aqj 4, ؠǥ-:-5q)AP}\>/ 34I/)ex)U 0'<޵Qu)mgc%e86R/cbhcc0= K8UG +4)ѐHk+ 0#ڣx\Z-|T+Il鲁… +6y?Z`TY$ YFx|˞@~]* k .g1[6WOӚywkw%̹00w=1Dpj/2tB.x漿dmjgLWD<ʽ,䰷we,e!r9%aqǥGj^iU&R!cRJǧ>QImgS%  79psTzV{$=ãȒP px@$7ڬWsK%NН) žālUi ;:āC952^CBN }^4QnyL<'n~kB n B8PJp;Inft +aC +  s$梟 +'Y-ām$l&3mfx=T( FO s[CX𕲶`L9j+`ixUReV=csdj#*Jv 2=5uK{lMw!gufp>@\ zG5Y{`.OjZj31WC8<* ׆V)-.w 0/{oĴ]=a;g Y1"  ϧ|qU* U$W=x >kd ˃hԄO;* {4FMFM@\6^rWn$*kXⶸw9y!,wr=Rˤm]6L1Hv{|:zeX&xL%@o,ہzcHDymቷGP+o9mZȨ1 Em5Ym>qezp Kn8R1翵YJRקM=(UHQ2}8}CW[ D$3ॶt}m v"Gۜr5&fiQB-.[ lp=>z2T~ޛxH+cv O֧Ҕ,hЩ,cm@AJW+'W\*C+mF/ӣH{"Vw`y5T1}H3p##}}i$͎EH `>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 57/Tabs/S/Type/Page>> endobj 171 0 obj <>stream +HWk$+1 YI-[ ̝%18pL,Y,TzU^<ݟ~xx_/}{zPz9Gû:oQ)sX?n~8R)U)O/ªV}e^W\3I?WaFW +On]Sf1xIg9n@JZNt}>)<~帏d)嶑^xo9ܾٔ<#2/&7br;eďʚJgUy?b;hbr@ONWodOS;c38cj,@,x9gs:xE>}e[#/m6>~TW [UbK$2|rdٻxxGl7mXq/۵\ѥnxBa +EeGZdCR I ߇X,)05(:7%ėiP2*YI -v^ч_>ߏi-Ť +%d.Pk5a VjhqKy GWB7A@ +M6x؈ Ŭy&]#[-.m36c&RB Uw]L1:F-uMFگe/#UiNAAnQHzꍎ8X.}%p`YKJC=0k?Wۈ' ǺV +'-0ao>H(KAX)(jAn_XhmY̐ +DɄt8HsmzCsg:sY9$Ygz PNWIPC S{?n%#=#Dg4c%!w99nOqՓI/:F 3^WoDIE#3|Dʍi ZjCb%T?bKS`ޢӚn Foh&@4 z\&FjyRis\ Љd9pd]#Q1IsV6:3wi +[U0~(~'lqW(sf4ߪx'"C[D&ec=PS=AK&ԈBDxJe )z9`_H㫣rA|I tT`3hWPi& }\K D/h~ MbaJY3~8w3SP hwjN +<2Z٨%I=3JTLLF_ݔ[܄:I钉c}E Y%)%B+~PJTrX#M9096toqSp$ȝ'4)3eFu}I.~}aP';oxu4ZW̪\oh38mѵե;p|# tjDl d,D +Ս'H)sfB'rJQ'zG<_;Vm ,*1ZT#mJtx;fx#ֲF āQts\U2 \ qT^ku3b!Ud)jm#?PGծ/\X H@AzߗzP$kDR֟O m c7` VZô1mDX&%.Äy;+H+|ZiG7c田 J;yoA&,1PUSç#ŤDzP6Q5[\YRJ) Fy`Y @?j=nds{b9w|Nc{_Yxgx\ZhK$[q3dFmՙXV$|'M.XQX_r:*sDX $>>>uxF밣r+L0@]WGgkK7ŷ0vNq񠶺U;U,J#339nalm|u3A͵"4aʫZpyk{ס}Bf&F,+{5jp Ŕ*NQL{E_u,vdBquyM E(ى#$(ɩl9;º(#ϘVs +)0Ët`nb%.%Y;b\hjR:,tZYm 2LMs4f%Xrи>_Mp&X&Ǎ5E$jꌣ!QSb[xj7Q0xMLt6DZQZ|:%ajE5m"L Qcdb#]xU4SciG|t.w'un~řBҿ'|pG/7`*Qu)2Զӣr\eG?K(rjXqjk a.(8tǡݬqҥUQ.L呑/bV@;k.oݪnIV .yp:=^vp?^?No~>>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  + 19!1A"Qa2q#4BRSTst3Cbc$%&5Uru +'()*6789:DEFGHIJVWXYZdefghijvwxyz?!7.=KRVvf;\G,Ll&ko("FݺHSӧ}{lE̳%r/bݐ9J6!+-~fM +t$֏Wʺ,tzzMfV=,`]G ԏ[͉g/**[Ic@}J',zǣϵy<ůH}W3rƮ#u'צ#BP}i 뿯i,ƱDz-X(Y}Y%N)+Z$}ON 8?gVyE/RWGD zwg'9l~v yذ@{ "]]mdlO ׉n[o7 ڇu W@z멓ri ##Yjρ+wf7淕jRGRu3-㘴Yb%K721N}ЁuKC%Ç۳V{lzf/6"~%Z/ܾXUl#}{uԌfgc1$zKxm41lo@p>'8V6-vUMJfvhu(8> (?Jc>RiReֹOO. + 'I'LȈ?cpܛV޹w߼]rB +؃""%0,PAa%ȉ@w+Wx%6:z,@O:cc:,BXsDu)YM\+J V1I 2"""'K:0e;ӧq=DLzK؀@c(N|ԵN `tO.Y6f=O&^ng +^YiUX[FbƷwys7KFzp7ܖ0p7۴Ɉf '@w>bR A ORy%lA@yNUY [nW +oqc"cdlK+QäV` pȕVd-}nk&;61N-Y[!{|rG;0]YGo2 ]iNNzt<#pW[6@ ]եXƔ6YlrG*?Tſ)]^]Ԋ@ᑅȌӛ$ zԐ{7Qpe}Ҟng ++[ ԖR:W;IJC`Nbg;XGUlks\G31lJ==%|gsYYVN(Eg@3㌙aS=iśN ƽgXo|lfvuÅb=H{נΉo5\KX*XHR=$;߸!+(b,zFw_Mwolž*0J>°`#D2szkYFs߿ W^*ưԺ$9|e+z*y^P^@6NO]KJ}\`{xeaaZ|a9I /6; +2^K9nk>08r^+ulAb35@N5ceهJeU#+\ç{-gv:cmF,.QtID+NugE?##ePYv#cjO[ck-hL_ |\UǼ+BKG@_M.1muZ]X>^wsV v +kp#]}% `SZU)M5hF :3x/ 亪Vchl]v(8Uv +ƪƷEfke731>UòZ>GېfZ][xcݛ^JvcK50=o87c[mHCcrzgmyJCDKó>]3Źug)8rŢ׾]izvCtcp̬[yl{^,}iHF';ۏMRW [k1p2 +9)dR|&a·G9 +ҡ^f45vzv2mw=\-%nkpՋ9mkGLl1w+}}j -@$Κ^ z!e{Rb{oc02ȵC!)cmsЏ2Y캛Ug,޽ B~qߟo.6p8 J7 z@ .(l*q 06b{DG_zMKf/r2vW`k##&g.q,<2H @>b'[|%[EO/2LJFŬ!˳_N%0/[b[K{ v@%}?.$>GO+uz|Ax%Y@=IOv ql;Wr+ ɰmo~uUŰAv}޺}r"""""""""""&>vEUK\v*S7v0?O1W$e S,cq |‹RC`>ry^:=2x>/jWͽs[>/ OL$$=vfՇ#:7sEU$/I C(b!Es6>3[l06Q^N; +Mm 'ÆUn.`DYӬ;zlM#"y(lf໫(+)?tsNed? 4bjb'|.xߩWӍ6M\zXiI! +߱0<.<.NZHUȰ($RZ"""""""" Vϔg7>#LleWQv!B)>qi̻(/2)?s z)#:2ׅBxJ5vSzv8j3-x zC[Mp2F&>exJ':]yyKp㈅wF6؞SF0zKfL֋$DDDDDDDD@<إH$ &nnf>x6+NfM53^F"6/?&9[ˋz;2W>=%`ڐGOQ0oY.l  ͭ ho_;{aؗYElF(]Fk p -g(4}kJ#l':app/&Z]]y$ lUά9BUf:^FSZֻ'T*:K@u;2n"geo*::=hj `Ug [damPN:o6CRj̳V{\YЕaaUT0 FZ߾Q8.n.=aD(4f.["vj0s*?dDDDD6vOQ`Pٸ: lp39*G7st׿s$\^򻕑\wq fM( 66O}nccqlN$71m mVV7@ud%zz̤̳;=5(5ӚT߹W.q˲1 9(+̬XP6A$ubkʮQlC@=tzwÖebW +ʁ]SОhY6]ZtF鲊_S 1q[--UYP{J&/UP]-nʻ;:<Ɍ܋prrKSk +~Q~>ߩ 趩V pAx\z* +Hv:t>e{RyynM򓾻zนl\ dr90x*E1%*B/`(=OS/\Wg:沂fji{3qFKr([uXAZڥR BPy[.18>u^Oe)RB$NTQet0lRcE]oS2W9XVb̻ R~ +!Vv^V'aQt:GA=`)t: X}|Mtfd:VFgyX7%"""""""")5~ R_2YP*ߒRY0>Fg 2,K +ZY, PN/`c.o%Vp5@Ҽ#bF޼[o)9(d^!['mj5ƽeK>O܏g򸟪v~hSc~h:_{ɮ,R*(Oqє쟄ܱ%KT}jXͳ2>OMv uw$O9jjSrxcZ tz{N(eFƳW;]]A}̜L| ˲Sy66GA5%DDJ3O@%z܅unA7bԼAdBvuӧibdo=5,N}U՜tVb٤V Q +K;m8k.\P\bDDDDJJL>!)\#]j}767,ƻ"y@^:cfcٶ%֯)`*bFGp`veE O%x^ <71 +G ff z ·e/B,jGm|f/ 9'G4uoyO w1V`F]D{fbpS%al}u~%YL㝙ɾ6Eu! +DDvzbVؼC;bظ[ÖZ鴹;/p-yXEq56MV[a;ƨlr@ M^u'[Qo}4oћ(?+`fXYB`6jjA Na]7^-k]JTh.jZī6 2`cpQU=b*_O|==ҷpLlX\l|'q1uN+!9י[[#ENv OZvVNwU=J GYb c>_zϔԎ^%5j +yt VG +U|/C>YkacWuIH vdOEzLL+Z?+G"""$iQ29̼=Gz;BOIkxonX\MuI[ v7+}}om.5?'8QWSy]64tNYPaRKP3h/W6d>fdžƥŖjNknS^t +|릜|6.TF/65KqOa6TaYwE=  |fq-L|fTeX@_R`}{W"S_+qMZ寚 ߴu6,A,G5OS~ )#kkDinuP5v""""""""""""̷gZ!Xi+e32" +1춶Ff}';Y#lqZv?UΦҲ $1X?1n!O5=`pAXp&\Ü/ˤjg`Se#o xMLkre/ZhWY|#^.(򵮏qrdDcZ`('ݽ}Z㙜IH +ddl~4϶_.~\3:jJheSAےzIcTI˳p1Rot%7gOQs-⿜jJ?g +DA+`^ k1y|V_Sflvo 5o)eR8\s*%:|r(9oWW&>]8W +O ?wq25pϿ(ج_tYO`w.џƬ>)wʌ-Ώs}{]uJֿ3rd؃}@u:ȿô݆>eP7+oi'RwI%AP!$@;'\?BcJiTzu߯2f9FȮ{Os2Yʡ+(=dN^aӘ& I*噑Xc}lT#V[Y9r<߿rf""%7ZH #bTؠ6}7y^{*؅iC[2~׈O4&w<+`=DDDDJJDDp|rCPw^f +[װ;<9j%[G5.]pۓ;~)`7uƀֵ&cc:YK:+rdOc"-5OŜ8TE'^Jy +b>Up=k(va9oůl:u/9ִKVX~QH.v2[A:ؼ:M֥A@{W]YHe#`Ђ$~vbW,pȞZ}3žŮ۪ceUl[9yX~=Ke ]J7/+^20T,\ǻ7b oi~Qos=7\Q~~K .ynf {:KR2((jGKY[\&dDDDDDDDDDDDDDD@c՘MeS?+UKo?;^aܮcip `6 fĂ׉2xE⤺@[K9ug2_&6[9޺KL{s+;l+Ӧ\"Xʶڔ `5C߳ưjt_j `9]$""""""""""""""""""""""(f]+q!jU7O?/rWBvwӼ(f1>V+Eu *7kP;vz2xp\mrVOZhFx'ȸJuVuGtIo}tG.dT?Z*eVZҗ } ײxXlp@aVV +w/}yzjN`[u}l߿̐WұY>W)f)̯̲V[3pyt[q@ΫH2 Th=ζz d fȬZN96kH` {v>&=VQ kA);:=&DDDKVSAURJ,}DUHmb='=y՗ߕ;mZ\iYߗmt-]N9Qe3$v%r,Uw^]7X%ΚP7X+`^0;V"""%7(+w<ّU,XA }DJOSZ˧u(,vOܺvܬJպ ?+);nV""""SrMȬ { {MVxԥyy J vDD<ʝw8x+xΗWp $9{ ;xSbXº S?U}yN-Ƙn`A!Df3kѓkׄzU +]{5D5MB3+^t*/g8!бUz{嫼QV Õr"cbWj]YbȨ~5˲kUf[|9I3QfzSyJty-%ȧ`ܤ]Xi{GGˉjЈ\VCrܨ$z\J+HJ픂9YYNH==ZnTّF|5E6FnBAq^97ֵg֨kM X1ވI8`}ȹ=?-Z:} 6c%\AXolHǶC }]I\fK+wFj\ܽOmm,tn,z•F|X#(:~*ȩѳ5(i3Ūt.nR@7.\Rxא_4}=F?Fd.;WߴIeёCsJrm}[@*_2+\ԜȜ{EOph%72dn/*EujС޶B" +{;&-DqWQ!~k]d6BeԗVvle%@Ⱦo\w1?7?53j.P $jʻzRܛNqoOgrUx +nr3a26&3xvTo + G@@ k&7*ۙ$GCY%Kr - HuUeB}5״T`Wqe ElW{QoO[- +; wtf{6\&oCO9#[;kx,HcbOcC;;&5ri3o}7Ԁ@֌R!S8^.S\@#Q;K~ 8,k9ֵwuקo)N]a[9ӔvT:~ ĸ}6ږ)V/*dQ1IK-V o] ~-¡Ee u]Ędҥ/5@R%~5FMw:b5N6NQk Ę|AJYϟ[=mF 1羽W،~`^P uهo-x%Ys[dx\[u_fBq[UpϯeVJWVBYfz +~"w8VSN@#@$zlOYMS +ZfCu[r8Ȗ!H'+|&#"گ'[{$)Ah6ߦbی'b췕Y**E$ o) cZi(XHoex]6g{Z=PF'^۠&]Ž_W TXnF,e l8Yk%s),,Tz:ﴱzVͥ<XYE%|T..G_M'lJ2G%7Zm@yz~9X]Ya.VpP`wM6Ez}ԉfQp`yqSz+A]2) [JsʶsE߾l geRm}A5Q3mMF-B֧ +~9F622GXyyTwuyVGe`@ 795zq3HtO՗tt@Xy*˳<ԫ"6JB/S&? g%b+e~`C>JUmh~GiuRF»{tb\ # B=u鮳t֛>D tr/n,Z7-.!O9&cCmZv5"m·pm)ԷZ٠HEjEf iAbڿtIm7'n k\٦uɯ"ÉZ-"%3DtzG` _Zl({me{כZ?X;LZI~;6=7KSYÍgK;c Jc#eF${Bc#r8? /*ƹPܨ¶jtI)25s1vʩO7p]Iq*Kİ@{p^oK +uYl>BVJ[޺vko.N;^_ރ~_R}sN8mԛGk,m;#`O8\K +!1Z`Rt,_SpncKZ$(:훨d(&gE_e<ݸsV{6-7ۘ-g1<]nK4G2YJ0 &ITgEP5 TsbӬ sF>uu2,"ƨ*,WNmzn P [U5{/~>ׅrw|99Gӹ0)|#}N}vR\ *]ߑ;Nn5@ր)<̠4NȐ+˩reEϪO*u:6@ًoS. Փ8BbWCmoXԅ, [xxR7PR^_)w=Sƪ믶䟒ѮRNؙ + J[`GͪJGCbkSQj +1j5+(F^)jjXbydIUQ啔5jVyFBSԆ9׾I,%u9c27j5)7u[X+"Xa=c6-mT(*P ˜365e᮸VI=6vOSIJyYzێjT +غ6 %g2W4UPB3EcәA7.Ln!n%m4FjB|=%زF|'}ԧmQP;Pn`؉]Zf]GB9} nCpn1Fc]Z1n-[(#\݉ޤE4WmI%3*7Πs*m֟tՋPR\ o:E[JO5%Lj+[XXʣm!|auHV떲Q(YID I]ĦqnVPslͱ*:y#|~'^cY+M6yye|k$?-zvK<\|K) +,aj IZZ؃R6"7MENQAX~xȳ&S+5d#eI`/~v8t/C*3]rfeX5/2/0UY"ax_.ˡJ\mEcjFqGnU$ S;*tZa[Yz:;"aR&MS1bO!pBDS$qfZFٮ %EV.%54-bo3l zӬqlFmU>@Vmp<׭5a%+,Mm['ṩܕ#/6f Wn+>\ظU7;L1o#6k6;`sa>hN̾)R݊XT6: ׾gyr!S4Z=Cù+؂N2=;t|9hReMs\5hum K%9~$Sc*/,g/<=zLL?OXqǩ`A$[ndQNV)ħ)TXFIɵYlBlmSYU K Hx4~RԁlUn`ql<;]c[G]ٖX MIZz/ +~EEQle z/PocƳ׾ZqW"Vƺ듈ֿ3j@9pN1,TW1۽~nx|-Bz}v}:GxKj.;Vm ǰzk+!#`Dўoh:ezL<ɯ+29A]iз.ؖM مvUtX! +9P5W~CMu&MzF@78:eb맠ׁ|o-u^`T{'W<5Jф; r) ӷnٷcdߙgȈC6Ήѩve9߃o*mSX8OPt6'#ÜʹV{|tAUε-8K.Yut`tz\+Ƚǘh:W51E/wKAb0=8%}86ڨ-ں9@@nRFG[i!Js3$쟷t|!8UhbRX:$hR;Yk'麬 og@ hN <LO5[B׳ӹ=c,~W6.{ZνHs"6rzuYy21O5LtZpG\2.^Qh(,{?.NMpg%ߺ "F-`; yB]F= T*%* EbX(5~¼マ}{FNçK/6אֽj=;o< &.ˠk(.kkR]zl\Ϋ5/(VբRApwԓ55+3q+ڱgoH׿r!FC*Z97ͭ|8Gne^ -b:4&PFfbdxJܜDlj5r֢bH`5>3;'ݑ2M(V9'އc[j)kNU-ܯ= /M+O +͡Qʪw>|DDDDDDDDDD)f @%w}= R+ ]}}3ܤDDDDDDDDJj5X+cYUWXnZoʃ L'F-cihABV""""""""""""""""""""""""""""""""pݎ@rZ̮>+-xo?εJ5^Eqm٭U?ADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@13sIȊ찐I=#)C`Eı{J,?GP%h|zIV"RXZcoKcIbs1clIr"""ywf:OH[wq؛^w"T +e <'ìR[V\[Aʬ5諸= ћ%cUHI<[|䳗\X7cY-dW[[k"YRL]rBHv="zُEUQ`Xvz s7-IZ,`lut^fɄ׵(r|-u*[sr[}o؈ɫuNf +.L q1jtUvUgRFlz]52, uߩo+[U7\V:,wy? ȱkN`9{uioPvzٗ"&CuˏN=ֱ͢s(T]v:o/UN˩G>HLʼn2VՇ"a<ԛ-jTK{DoZ:̚mؽAADDDDDDDDDDDDD!]i* v3 R5)'@ޏi ɕ[#o@ E cQ񕿍fn^=d<6NPܧyw{Q\,@FC,<˾ 21ڈH IL[ ɨ;_2ܲ!*֠#,̍}vpRJ8'u&LbqnGų!yqЏIx3dxg8wgz2/zv'A8eRXO pʐzulaɰ|)DZS{=Ts[ ++X+c {#\윛Z`>MZ֎|YøV/ZJ XUT lLrqhʡrZʮP:{ +Ü*Tg!ó3^P]iZv^B o~g/+lt 9Mc:+Avxu.dVȕk;pcs:o|)~c"}t-}=Hik:#w#Ƶ+p `ގOY?od-bBypn`jʲEhZd/7>}i+dzDNAc@kro`Z=ukjj %Iw:va Ӧ!q;" HXȼjDuʯd= *K9k.O@ytqq[;gН۸k,Q2g± +Y:]輬N:>Vc/fI` ׷bl]_^ܫ6 H#K,Iw<"/O?)7rnE s[9 +fGOXU{U`z{j+%wlGVne*>&`faٓU1^UrJZyGvB}d{yr' U|HO)x#WM"ЋW8,״}f"""""""""""""08 ZzU[m]Hn+[qN;lale+}{ұ(NƼOc`_T*R=tܖ_E  Qjaf +qLl:쮊Gm +3r"= w M JDD Xw{"=z~»p\kߞEcHDElTubƛD{/bURSBDP@Kpp󋥖bUݝS)mY X?"L=7LDDHϑWr V*+_,koG/j2ne5Ne[ F>ǡmo_3 +Ifw.~s1OteL1oƳ|1YY,#^amIS(}(A]Ծ:JDDDDDDDDDDDD0x}Tk<*g+` 5^%4k:,uIٛCZ!q– yTh;cvKr=WF;syVr?˦m{@o(f|٦aYlJ/Ov>&,QGncԁʈYIQv=a\-5dB#{ %^mʈgZ1uU +$잒F""""""""""""""" x,̝7]s -q](Q׸`ܵw?򏲊f&n['5Jr{LuNzyXOb?\x\9[;={zq!QOm\Siea#g*`v\ +QQ~)I lhoF:r2+MeeSM; ++Tz}z:mL^f]ٵwuZغZ$S,ltttuEx_͙KFE{UWc :G>Pwehw̩@ų)]Z-aebYӯA2$/xU_?X[keYhL0$^7Gp/gQʾŮ@Ii]g.zP+B/ +S2"CxdAɵ`[keYֈۓTuf=@~͖Y,q[=j̜l6n~m4ϺJG9n(G |^ipb@m9#oWbva}Lc{vv~vvN>ԃX#{k׿I-sYgͭ IQRt?6X=Z*諾\o#b|<]Xe7$_\ӵX5__zI+9]#|3<:حr6IٗV;6ie^Uv(P]oeYʬHn]O{/,NBu]REPhR!èY>%f8~ũ̶R1j}թ,Qv-VXYYp]k{DQc`~u~!f]~_kK CM!4L+5gG~MƧ>UG6 (45lPIOQMJisׇU2֊Y7̙o)Jl4k1Ecʥ@YLGkk%/DDb"" ({A#裉d6!t.{寑S;p:10 e){ķ1!M[,|D0&ekyÐXPe k%8'cKc[srR}@b=uZG'XJO2נ/)+z]þ} cs16za6wAbnp|%uPxWm<>߰߯n$_ZfB$%C +tG+ŭ9c[Cc]kez b>4n,U+NF%:5l4^ a[e]73Dm>ruOMu܌d\+i?j6G o͇.zjdW^_2ռ}f&ہƪR݇{!՗}( +MfpZn1X')b@-Q-> 8eV,mgv jfv-W+oc\v2sl _ꉠKOXPwYrXᄒI$+${˼W>Y?Qs{Vex*V r#:zdq%`uf6SXU |ql~Ǜ.7+p=Ox߾bx'2lVV*u`A)_b_ +κjI=y;1Ħݴ8yI:a18_;?Us=^EbjеJ^ؙ{ {)+[^<]u3xOLu5abD. Ds'Njl]~ 7_Q'A30qMlX+{=vpgǸZs.-R7T_`1p?,td|lkSw'\&pTcSf=S@DTo מQ^:]Ǚ5f¯_Bqt$p=4{ycM̽@[IzB+p5טf6r*G}JIxhfn|UQBkȪs2(\f7-vrvSӟZ'ݹ$;:0KڵY<D?G*鑀p>b#y `YN}3[mc rkSEC-˭!_p[Ek~Zmc|y{ q+` +]5R `f@sq 0vtAu&2+"RN-X{Ǧ1 -#k翺\7ޮV(Vd+`'OixKqHܿ-Z_Ct/vG|znj>PV5(!Iy9ᘆa]|cYTg _i]edd]OR"ĕZ>|Ȩo>MnlU`O4Hђ>'vWk훏S21R;uxūOk(fSbZ;bzzɞ7s!.۩ƭ} jEmz11l6}[=iYxI d}6i:^*(;yG3cukBnb8#p\[{}!@c^+}$q:FRU)6'ũ_qU'jԑd/|0)gcg3+!t1)JkTPd݉'3V}ɮ8RJNnR{r.'8uTBl]GD5gîk$qZaVd[_Zr69òƥu`~fp@{Եj+BxHf;v>5 11XK )nݺ[8Քe͠-0]ʞ$ ̎œs{m2s{`w'`lr[zR&8זh= \-xW[K,62}O(Sd kCaٝUeJcYeܷE iv=ؒx' gsZɶ*]- +=tH'Z8U,MmVNB!]2 NMw>En2;=(6vtzo͒6"RH=cQ=D@-sJijX1Dp’^U{^;Nvck{~9}@ҷQ@4԰<'05Cbae$2/TdBvrr Q-_|{hlt,rX7%@ҍ~=frKl sĎ +s0u"%8T7[l; ߻|ውc\=2B>2!W#u$hA}D/ +26k (@KLjvr'`2&.f*2r֜{ +.#ƻQav"hV˯h}MjZ>Ŷź@*lw !B.G +oFցh>>%Ke]f$]lz>j*m}( +Mv Bikԣ5v(!g0r!BۑȎ_FСڐyvuܜUP '@u=Ǧcv{n[c=]WfN z=dW)P⌠,VJ6ub aAg<2^/^V74qjN>B!e$lQZږ]uۚk+**λ\nSuXھ_luMtQv$ur=gP0r| Tk\6ҖZŞ`+v{<0w>s?QmY?:I--3E|NBrf9=ImEPv{<1 u>-]kRPvOQ+v;r +o+ T=s/D0.zO.f ܞR PAh DDD0PIjAe.ze`:K+<[jҌ@URI=I_QMke-j6^k]~ aX2FIq[MV%W;9eQuW]·Ue,IXi2kר0@ޏt~v"%qSŀu*JVnj]D*eb(:ij~e8mʼg7.X@C -lkT]r<1#u=~*4.ba<@@nPNOju"f=dOCU³oQ[* izj5 h]f? |XI-d 롱׮upnETJib?RC-L8fdsy$f022ʚV]RGF\1S{,Z軱롲@6I:øɳ^]&q^..*$$w +ɳ"s^YD/[kc$dvw׮-55/ȥW33AWV8u֙z8M\&;.SV +kq(|碊_)U_z?^w7.[7E5X@s}ge\#Ec^J ,5˱]|a8]_)-* C1|,[+lM?}A_I'|/g;?*ȵЁ 6:^75`v#KyQ1d#0k\婙F ypAzq?)_L'Rxe/–E?P۴ʳ**69]ҀĞ1m:%ox#Cʧ{? ɔqbR Gbc#rxCdYXSnQS":ﮒ/9O +߳UNLz3QIDz_)C($''סԱƲ)M[b.6=siz jg4wW]fFu2*H#>1s +זt_qfNV]}lu뭞18mʼn]1AF%vzR"""""""""" ttARdqQ5Ym5eCD&ɷ4sdo%kduBʨA;gx1#%A b@!G\xrV~Nqk^~^]Sؘg #$^6G+ `|xCijnz^QB)EuwNF_.+-(mog*UϹO.,~a-b̺բ ʿ!G)O׉Y.)+nrİހ=*݋}ۊ=7:PS.ZO-p{ku:T-9wLbGXVcby^O-It ,Gw@QPy+}r3n$[7qW OL9!G Dfx4MRQ5Nv8H| 8=$&@#籚nC[ o5RV{N/&ݗB/.g^0|gE\;M5 O<΃n )XOR*ڢ>e0Zҵn}d,hn~"fa?PBfnOLL1\.@:f-T ŮE?&ϥZҚ^ w˞ak|ZolT  w:97B"w7p.k)GJ޽FU|sv#_k9Tجsn<3>CCЕİMza<>j\j.[ڨ]P7 cA8myuZ2fpluv&z}}d&!z|l1^@7o)whؐ@ C"dlV""""""""""Gdsߐmn{kVfށ;ꩽ |w/)jV"""%5X|S#W nFWW WSm=̚yG>7'+**s71΀ܦi<Җ7Ӿx)èZS$XLɈ Xp.z\y=Eaaԏ_S$""%4=ݦ 6FjZG-*|0ӹ(fY,] kA tB%eI~R\w)-%szMu(N #n%Qz}!3)YOĻ0*v}=tHr@]IN+9wdWH+˥.t lFxYY8WUʷ:Vb@^nu21me l[td r +x)bY3-nl55la˔Hοd̏uLupo'ņ}7i1ꕄV$qYV `A"""""""""""""""""""""""""""""""""""""""""[[0W*yI#׬6`byi .w_\ˣT̴uC0h1|:'ZX$&Cs(ʓ~PSʛ(ܬ9 +N GI5TeEgA:a)`i>p5ַͮnַojwժ%!+@<֧xxim"T`DliWAUinځYt<ä #^P|~F,Pmlc:g)cG*ͰAaUiTyy6Q^ǔiG]m`4]]˯kz;}=ff\fkV`$=f\DDDDDDDDDD@#c|\knR<ׯneGpdz{KZmE$f0w?S,~׳zɯ \plkcgV"""""""""""""""""""""""""""""""""""""""""&ܪY{9@9޹{wyߝ6Ok^t}D>3d5- tQ\ +*i<̬vAk9w]a7܃I'}uZO+EW6z]K,/~^m޷Lx=钏FM{d@P#ҁ- +2!b,$YߔOP;8N.U6ױbP杍uYv ]- mccZon$ިH,;:;;ݩEk Kkރ d'ﶛg~{1#AV QfeH&a7T1rW^i<-@:], ooνf%Jvwz3m) ++ ? +',B+ +r!vWx/Wxax+ +[?Y%?zF yh?[J޽?]Gֿeo^֏ʏ޵Ohu~NsG.]8?* +wS {l=GQ1xCyO#= +'~a̧_=r?{{km+ ~*?zݗi| ochv:n^~?3Б=~P?31\)V[1ΏA*rX?JB+ +?ݕ^ l~ ++ +~+ +[Y܏UY͟2gBZE9 9,VMDDD@"|NbnF2wrlg-_3i<[:Y^5jKg y6$r$H я[9I[E߾ !'o8W|*A*O׭ڱF#;M!ra.DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDG&yO'9!9 ΄^۶͗=ƀI"5ȺDzJJG(Jr/}R~T}O%?*>)V `UEHRPJu\%ۼI&cu=b"""""8ӳg+;]ofnW//jg¾:>Ͽ˴h՝əx#]XclAԖ( b@1SIK]c#0V<7^`qk6.6.%y Edf3e,:m yxSMد[elo]̿l\/_65,U歽1 +O.ly5-jy=TR7^&xn1Ţvk' ؖ5sc Y9v7( nďLzP<Dte {lV"""""""""""""""""k$[췟m73n0`߱ԽOȯf.APtH +ĝ"3pZt/zKeڙ?|S{IjO%6du6;CJPz~ݽ:wS :,ʖntfpzCLDO +4jTh}}7d_'@ Os-YU%ddH#dDDDDDDDDDD0AGxs'2ߘgF'CikQOv^xafdf& ?" +n !(N)؋sc*d.Uuu>AIz"""""""""Zɯ +6I%5Y-B:1 +/ȺNPTh.w~opJxܔuƒ^ Xs#*MhI؈m뼃93qrm[9k9&'!~S`}@o쐟{?J~ޙi.>#AHܻ}K v)_[O]/^UB+0xTʩeX'LÕz{=_.#xURUNm{%GF]5HB5&/:׋y/(T<ØקY>0rܟՒϧӛZ \pG=?RHX3t:X\Njy#8]e72;7}rQJة,srtͳz3""""""""&mt}VeWl{lV9J˫<ΆhMwYDDsNjSJtg<Oo|*mKw' I,_SƸ9ımSSVνJ`:Mc $(,9؍@~hc| Ɉ'x¯$}|')bt'cr)P8${wOQ(fө@{CK&XzC =t}u2""""""0wgskcK~2#QMFuPc%@ԬDDDDDDDDDDLK>5S!Uש[M %,P{7Gcgæ{@S7/A{4YO}`רrqNKQ]OGa1ZFP;פ͉[1Cq<=_`>|˯leba_܏,mV*[NOn'"&]씍 +VW%|Gʞ&m(mhNryut S/yի0޻oYs]J9s~2'4J2YB*W;cz˚|.&M-{t>b-ƨ|\W/Ij\-PtAAD]`۲'r'Š-\y,u* +*1%r3{(:;ijS[+̞7ouʖrmGtw1ctEYO08#%~Ns(z-u+w^8m'AmhoK$bx5cʤKY֎FO7.L<azbv;5^M]kZ׺Ewl;0zOO{j^8Խw[mh&^6]YZ :=z `[ga ܏'Z.{߼Vx86הoߺyo%]+K {88G*VV!"kGR%0(Z9f?Iٴq8 ^9J+άX`Ov:I9F岵QC r!wiZVHtz #N-[>%~77ZZ_ 9;"NEjO[DO@YA +~Y1ǽP;2ڴ/R?PHܪ6GWu|J*XYsfQFs=BlܾH ىz+!pX z E:mvAF\=<9ҼLJhU77Dz0pMG@՜Oczl\>\r,AuG(ª5ωqNCNP +zzwYW95cu:e} +:̹C4|[)fT o_gejf67 /Й-kv̼2G0nzEvB:a`Ov&NC)(h@_Go**vG ɹٗ: z*%GNÚ~"9rxWFV*;>( ufD=X.kzSy a;h=}M&?mv1`xDk`R I4d [+6O) ;'-rV8<*<:k-A$8;› @$oe)=u=poq+|m`z̏ZԱȬ|1I]abVl!]ԕyjwshc\yV~NOG$18~HXs, "nJd dQ:N&^ TMn׿MN-s5l~ć9"wCMfܠ)}Ibz鹱pCUϏ_";%O9yF_Gu|] S*oY\bdead-ufE-:O-L-U|<'l-FXFGcYFG|6yH:--j=Y rUF*tl,ꓹ55ղ%Y#(s>#eV7ŷfCݳ\"D}TW%4Ǩnf +p#媿~aBgBJVnbtt[8Tps, |jCЏIîWX]N2&ˊvS37OM I_:slQ{/(ix5X#wZ(_Ex{dCAz}ԦyI{,Ṋ{|d&dnǥ5Hv;;/Fe%u*[Pb""""""c`cf[7 fnQC6 P\Y'0֛yITŦZBz|H޸P S`* .%̺(*){.x7dqn~Fː㘍sbfrfkC]4Ue#yjPWJ*(쪡Tz'~]eqDU' pgnjk.5)a}%"8̀2!:;]gkZQnF@nf6sp9Py{=RP+PP@DDDn=FaؔRG]#=ٍUnǧRcxXŞRs$7"lodwǪh^ʁe0יڃ,e:u"791Ykȋ->6q1+iiWz'$?/H~3Į X 6E?6= =Om\'hd vǫ;V'3/r37UNU8U27T|][ևA>#sYv"/KƦ=}kv K;G\|ZmPZ +#D~%O3ԄNʂvWJ%572ր€vI4``ە@o `-R]l[@u*7-TyuoѲÿVրN:e66F#c=PORmK#,+* <;d^^yloUͩ#_m.UAES. t5z*kR-w̐5+,:ņ,;7(ug܋ͭozs)EJȺ'e{vJdSElR(=F5= U Eg[]V&V~{-˭n %18d%C\*,-ߧyڬx9izf*OrZ8_u&~g\r)$OtzqSR @  :*NtNUnEU: e8+EyP\ Ex\p]q=p?BBy:{FFl"?:>@'(zOØq|'뺛)y(Wp,t]qmkk^s,]Iq\;#( &?b7,߉Z^ʾfC/+Xͭ葰=4i#$Gj^axҧ0n[|z t)~'oƱ/mkt_)1<[jҌA'נf_gr.Y#U=|vf%b$''9Yzﲽ/@R4 }Z> #_*ݘu6JeW\b:>,DDA3Px[;''˭JQٟکuOo|x.uPswʼ7_7ۛo|2'§\6C|VƵ6[B(*=:X{!xekrVy*Z%1|j-/~M̛kK5ȇ(u2-82=-Y`3gus wحͻR׺) 璍Z+w3h+°)WG+W tQˮ{ܵfYy~Wm76(@+#:)et5F9OMuo2쳎V?AF)Nk^M6/ŗBEp950V.5DDDO&=}T(ԬDDDDDDDDDDDD|M*t 2rpwe uO|˷k|Uv?fz,m<v18Y[*d*@IԖ֭Ԩ?Tz XBeb"""""" Zp^qHBD»pʮb`zn$g%.Ka|yE)ʹȟ+\ $"FzS$vQN +l9$~Jq1;'" a*U FrR""""""""""""""""""""""+,Whu?Cg㔲T宵~^o{zFeSxcRƌmhEeg^bzu\\oroke}`=F]e +ʹ|J+y}LH2s_$Z>}d|(ԬDDDDDDDDDDDDDDDDDDj5Yi^nڎM?g7,Zc;~S+Kb~3'4(dqن+?%R\Qh,`}A>g܃+eU#mu2qLjҴUPO-b7dz60PH${K x'.(Rtlk 5z{gKܺt3"""b\lZ\e[%cmKHMk"nCŸcҤo$IpnݑV%K޹AFs}5-fd؅zU]B^j|Xm[]6(Bu+;aQ6r6@OhN? ׍E9*l<[ ޳mr59k6+F&u,`c=pNP ?]hs~&OD:\XUF*nWrzf '@ 5o8Ndk!,F~6! uHꤏg8mD+P ڝ@{L|מW]!q.čUSX]8BtGE9xy99Wt0!F'q|N[@⵭2e#}z̞hI>ō[ԃ/_NP e :?4?I2"R Ԋ_@sU¦tTnv +h$u Lq~f"YoR8@jzX(ı,z<- SsVWsu$k˭.#AO/m֩ 1PXlh:Jb`c)LzNU + fY𮾭s"llwϖr¬iҍzvH;HL<~7^EKSuOYW@A#7spxi譮,,{yN:K +YvZ(¦g~Myt4]G%MX={W&6-ء*v*FN{j5>\mZ[J\ gJ3ҵTb=pكfcrڗ{MkS:Q8*F=A鎜3%+µ >%5ٸ-gV*V~N{"ʑ'rܞnw5d5mFXmrt;^!xv""""""""""""""""""""""agbiS͖}z}sncwkfPa$]]@\+~X!>i({M?Ujγ 0 9qcyzԥ@ ri( 2>Q|T9l=l:08_vw™U6O@=# 1Fs+yWWa@~;S?̿IT^E tO V5*ȯzR +:k*e[&m^뿤)s8*}zM.y/=qq̊9 t5S/D>eٗ}S,waxA7R jHxgRO5uyd ^R=<|%7G5<+%NZT.N ܆9/uՇ_e2ax:oJ롽얼M}ϴ_[YY5Tu×tHAj)WE%̮ 'CDDȼַnWQԉXyeHhydG~9|>g\zaK#1=&-Ey(kC)>ȞVM;:G(.%8u-TֵPG&3+]@v#`~+"s\s?-"|M[z^^$PAo}欸'mX%Ew1rYNߐr`5}޲{qJxM?{q-cb{@B_<̫Z6ē5ub232kҭWePDDD(iXwT{Xl{Nbxk`_cc?/[l'Glq1*d\HJг :;WĜ7#%2M~U*VJ%G]uv=n"V"""""""""""" )L^#im' +mݏdUX .&_ UJkOy([)'A{[ɹϙlEJR-"?\3?f+"QY7YSon,P؀Gzȏmco`k@5jhO.g^V5wUO^VC_X |78 d"jF!+)Y ;JҲ@Е5A]YsZKrBdS鹏cp$5YWݔ1SGЛ^vKvm{zK><7ʗs&HirvI׻iKa~d PѿL +߇h{̇PT4G 1Ǯ$KjOsYԞ_cK U򐠽h}7]5 kaQ|~`Mt~kX<Ż릁~?qέ-1°!\OWQv crR7ܓAK8Z)ɽP̵ԌQU -$|Jj.Ev;bϫ?DĬhd]9T~BɩC"|-[ ٲ܇>O%V_-[/Y#)GcR;{iU; +$}DjJHL7Qڼ=."(?a\Jw,=\=:8> DB+P=eS~_s)$zcVXyU6L ?Wɳ ZPw|힛ַ2ʶ%eԳ%~ʲ܆ Y28QQOjWZ; !EsZ'W +׻/DDDDDDDDDDDDDDDDDDDDDDD%l6A C{ar{dP[A~]{+`Ҷao^x? ݓjրYo=a*cض#oLjtu_d52pֻ,Vam"IpˡyEU!zp7~Zە Ў5pơysΤy):s#7*t-{B=êceINK?mQ2j`q.,*D6fA]'c=$Nv-7#6f܂aT60D(b =؍MOab P6УByt&V-9ҽV)= +L9|ιٓb;Aȋ?f-eZcvTf?@ʍ<3 l|yA2JFd+16ZrExkj3@=tԖ|[ŲJue!ȯX-aSnFMg!چ ˿P&f`MD:y%ptfV/ +቞Fـ4SgNݏqBsõDDZU7%rrkéQڷ~'W-9V0jmva=yXihJtSc~)p#d;yWU˲=zO(dQ]V-Kgۖrư* ]6^u6ow?@j\])F]qS@B$_hgU!twϢ`lAτYjs}>>>"p:ĶþtҺb&.U r58ph@[B GxzK,blt-p>F!8aX[hq*ڏnL>s c5h7OQ\b^Ŷ+KE +al]Y)yXe = 4uG) 4gDF=hϳy~PAw3 ˟G^&o嬾K9+m&DMGBAsRlWEqP@)hE^2fFO u:#~Z=5ֻҢ}vb]LC"8!Y 1߯ѹ10xYɸwZ\iG۩°džh)ɥEi+y a,,9|gedV-Y5W unçN=NG4: P49Q/|pV^#ăBWv5tRܙ/*A_g%m*yXߕuOA_OAL(fŸn>vE͛q㫫+c\ktܭq|-fȱjd6ysֽu<*+][Pw@RZ{v>7vr|e SO݃U0ؕ_e_ 4BtI$=DīQ_-H=JAo6I8~m۱lGS!;n l˾k{t7ٕ4SU agb5T|\?Cu#"aq\W7"*kMcx[! u.A^o.¢\{%O<~!gCP[JC:"""""""""""""""""""" 'dq^mIgMgHbbՅRSJD@Bxϣ_`E޺':sX̫ZfԿ/M[6B8^}= 6|5mrq;sO^l}?ef5S'rdȽ1kkl`Ydo/.R,[u'7! ; }-SIy`{.ƬorXJK߲.$>޸zl{t=g?0}bDF7;*#ު| eqNK(wGSqxE"亦)j{zzg?ٸW-cv(W%g? N)NJvm{:8yWZoߚ<7k r%kWm]o|{=uw6qnj8~D$I ÇܼJйG7&IԷFUYH,ԎHa)fxΪIO)ԭ} u-a}tzMЍF&?mgKq ɮh?̽ԬDHsZe9^BXo@wHTC%\{װ֙cM +nngC}ʀ{>w2 tuzI;$RI""""""""""""""""""""#38w'|RNkq<9n$P|^kESI2q=ì@:75z赊{mN2O {_u h ٥@Ko[w&Nw l ք[sRX 1^IWK0sA K@dp86%t&[I왆['-M#`yApX>5קy7U_8M9Y_s}D9Q.08[o$_9[Y hA%n IQsGMsvLgCUo 6|n WxQA'\Ic'h{vo")fۇjr96RpCs1u3^28: wMѽoAu3ۿ]y#s-+^f7?DMuRv^̜/B1VWRe6k=aكr9b(v'[~-nj1** b.=nMb TUD*_oz{~^G gn6[?A@=Πɺg8JqL11뾖[)j)sJV:>8[rf9G*lRN9ronXƬ:'}tu|MyP|Y+iи7Kqzj?eDO֊0Qk&WW;o٬u~ݷw>v:akl[4;neKDDDDDDDDDDDDDDDDDDDDDDD#\;^NXK'''V%6Q +cSWkrpjn)񮼞ZtUU_N`?d@FCOyj,cRMoGN%[6 #ח?NF_6pڰX;uȭ,CeVA^VX{ْׯ%4Ox[f6+Sv-ϓö|+f)"8 |y:5G[S?TK句9G#@뾕&ӧMJj`pl|HdZ+s]bL<,ے-3:#` uђxtTPZ Ҫ>wBVPwx{Ҽ?"Dw.B0`H^a$G/l{( g'1l6_^|w3[7t٪(PU}BzԬDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD)g7YO3':2S[﬋¸ Eb#hz][FMDDO.R6Cȟ \%cƲsm)הL۽+Jh@6$/5I{9mPXKXvOBHRĸ}h4Hb$OԎm6Եw rRZ}B +6,̻~kI}}[ԖY//?7)KWhfv uQ2>s~IZR**|6Nq^_q -أ&mHT5[Z;csڼ]eXޚþ_F$liRUA$I=l3W޹RD:$4(O@t Kwҹn6H4f2N'b:v[؇M:zPh Xnܬb""""%7+)MĤnVS)XVJՂ;rh(ZP]xuXo:4)K{5$Fk^UG˵m&,T-}yw)V"""""""% {vU\@cμNzn5S _g^~ O QmE9~[^t5do<:dVre qe +4ķù#|odpX{u![yXu 7f'! AmưJox8Xnm謀Z==-6@ h fauz~]VMn֡dPl)gp*׀“ "l;ؔd&-"kY:vz=-O5c/|e~7bUܽn^6?F*(Ձ =\ߧy xq{0(Bz =_lŭL.;kQ_+n/'/lstܜgj\0V*è BDKqE5 *+r9X0kc}l鎔u"^?Kl[2mZ8W0`%QX +ٴwxy v!6ǔtY8˓1Qs3mtP 祝euՓ[̀0%^2pAs +z1@@)}r:s;cpQ}P +SY |? +n6.bz8RIߧ\J^ Rvzּ!V-q'CBv%c˭I?űsX%VJARGm`6>np~afUJU}2 k2lTT7) ]a%f9H l(=zOwq ģ12[vC[} 6pSZ53˫T2,`=jt}>btlfʘy*ʈArM}}P9fG _5y!nfE>LȢN6yהeDDDDDDDDDDJ쎢QkT(gg^eᘈEalCn:_Y8FjUq +YXZJӭw^->Y^C(=uJk9r/0tӼp:IВ=/Ms3dʶ䦖GҸtboɩ[Pm ~355<@yP{P@jXUk\ֶ7wnPpUZ(8E 2eq)YIPJx'c`BZbXkR7* +u[<[MŇ{p￵͘ZfA#2bSO7Z/?P9? ZQT7ӡ)Ḹ5Z;T@8Rq(zu +M5%{.zyhC`Aoᮓ-\_lX8XmW*ކKԗ)WP>""%y>bs|ß^^MN+{Y)`t˻+ȪeGV*tH>ir&&G.욫m"cAsw]]yI`t'V]km.ٔS.DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDݦ749 4ժ8nټh'Ru6N ð_ +MlyбPhY5866A6yĩ>ĵ[7ҕW2+tҖO^dex - Χ2=ݶ;̊8nK+WRAZxZwĻBz)]|:Hd:8~-^mmZ[:bXe8(GQЂ #0^'uձzmH:/ocgͶag/AEjB#(>m"kIqOȫpGb/ǒALGT\\si\׮O6Aԟfcmf:wj~ydUOTdWZqyш쑱U>grN0\Eım|ghy5O;36I{>ӌbJ)P+k`aӧBY5%g3"J|SǍQ8F"ZKl{@,=ֵ&dծ50R)lFbSrԬDD:AMĬe%bSqb%7+)YMV"%7XLO8(V[QCXF Vׯz IQXMXZQ}$ {J𶣖U`J:ޏ<-Ȭ )cccb{B@k.PA}{lDDDDDMoî*YYAۍ0=u> ˼pq`PV?\R.Wpʦ6YB2XyY#tFyuN4Vy@o2D,ξhusͷ%*]*Xd \Ei]9>eaZQ:X7LJ.\w!pMH~=syZ{\CU*߳߿N7+c%_(sskrI;=A'n+4mӯYz񐽮1 +>)VZ *p{;~u<62/pX@ ¸!G e(+2,ï +mlԹUg sw'.46]b(L>MYH,e!5reEU5d+t=&{|U~YzZ.Z:=fM b\ FG(F_^5ӬḶ7 +5pW5&?>gO׵קQ"On%ggcؤ=J'cRdܴUkAf$*Na,S+qЎjX}k #pY)23at&x=7"{=eeI)aA֌\38FE[; $n%ܴ]DXOMlSӇԅX8^V Sdgyluj9y|%{K+; ,ǡoj+iY1mw =$BmJekIpԩ#zmq yq\\K<. [Uru}rr$ yTQk|Үs/0nfצKMp(W[,շ+]r^""%нllBxWW9Y(őcbA&~YG9NpTaﯤ.`X Oi@5aq.4B"َOEx x^zo iv-IRGP[v+fJE.]Ea!)o{ߧ'%N]Gaѹ_q޼:UC062[O7^ONpYruR`]sk:3 \PTq[<1@5dVef5+䭞[Mr77!ړt$~aE*S|@=s"8m\E8eԯ8t:ADbPG/~mVnuBWmA :2x= uƢ]kv%J0;͉2+չI :~qerk@;67+Z/ζՎIc}S{kzV,^@|9>amoB{6^&ROro/&KYx׫0@̿ +tY^V]kt.ߏqd5tVryyyAZdX[~mZ_5t96PA/p0MJU]ӕ\l;=} L +xSj[aUUXu\ͳ7߅M#pV$Nڰ+)yQ|% ,;l!>"yJr,9vgyd̻ e=_+uĸ*Rln61 wVr>S#8e]YG*mRk˶'x6 a彷[r]hZjEo_~_|?*,{Gmhz}do00(UՍètүSّ7"̣n$Ol5"˸ *6dkT<{\W드 2N{VzkV{CsoH' vξgLy*!?Y8p" اh9v Mu g Xp7:;#J<9@kl[\,<3\t+@O1ٳնvve2OI9G}5ۛ!q1\)bH$H5O=Yup|}\ugm\lz I [;l~GzM`ݔW=NEUv`H9W_bڔyG +.G(~'StLk7謻tbi߽=SaK}ӫ1hgݾ_4q__{j4sv]!wx@ +NM~GZܽ-UZT@Mt1^nAD{$%r +z`QA'Gdg>-I@ۘ2ŽJܯ{l xej-]sXlWtˡx 8ݺ+oG~sYǨx0i̸?I3τk36;a۔k^Hx1c7P=~b`cy< ^g ^ݫCz5Cr"[[>fw|#j8Q(Kլ~qm={]\ū]_.7Sκ/e_n56Yq"uIrjەC0od_bmdv#;?Y,8±*p9W +лI'ɕ`v2ՙtjR({R@f2*ĭF٘P=0`;)ɫ'UH:aN\Ƥ:U0$wў:Sxw .Q4qfn<{j[uEa1֧vג}vC"l +Z"+l]1=G$DDDDDDDDDDDDO,t X5FG3ܦR'f7=u[1x jy.G@&C$uIH !k_M6Z {Q*@E[cԑ[f^0âA$WZ'<^j\ȥ0V Po]gzjEtaVq( :-cSVuܟ|)~E_0m@L#}$}څd+:ַX!N5e%^~cۉ'WPAORH%kAZ=tz9)j%bSFj%SZ.*9 HnVZƫ2 YObq)^-5Դ/"`ݩvXL ^³ @_ZlN¯}翓W曵.$GA_ q8 4Yx(+c$8qWwڋMLP{a{Mp['#3uyvKl:פYrrrXv$B$7%0 RdH#*~K^m)[0ZϲytāvCdM[889K3>-D{.tDacpvn iu/ïD2/9 V!+:nH:h󯾫!y<*X F#35l,K-y8}JuZ{tȌ\J`%i Η2>⧷Q3>ONj7WLk`sW&LCy<%`ῢXOLe67}vVHjI +w6^ ^&5T"YovX)v:Iw 6qN!nB(>Ms6cf?dlv~6IV\lFgBUtB = {tψ_"/JYmG,mBTܐ.~FNmn[IY&(՛D'f8Di8Ԍ|;)x7 ſv_*lsY=en`>~;p .Yo)MJV{Q%«ɵ|[I׷f uM3 +-xx|ïq~>PKP?lb"SPTQQSp%{,r5(ܯiYMF>6 +bͰ<hd <6ǡy+@B$- \Y2z0]?֔>!9PYF ;iG[ +o৯gDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD??Y`AZמ]_GP{lWr7+'#eV]4jՇ?6{rNUVVˑdu'cq>j s.ӴrͥmInAĽltGOq/_` ei)\S|ԕkV4\)*ߦ %ف{OAS7'SYeSv0ZAq?nmp󩦥<5CͿo☇*P*W7#LUwln-_5S(n?~EU;JI:Y˽(_)g}d/{3s]}{MU]~igg-ZY4)vd:) }w++f}ϡ(BC>1/bN8` 2uue:*G_l+ЛY[N3"$w˲oŵT֖[R~]ltfȷ;OUw怶0Fj '[}~xn^&R C3y, +9Ʒ75228NmN嶠Ք(Ynnkӧ.𾹼Kz -mW8p80;,u#^9e_~EPW` ;IϺVMN$I+ס AG]}2NSZ<E .=ƚa 3_|= +er(TmG#HA}$Iɫ@Ri0_hxg&ܜk͵K9vT +ִnVy<LVmEb^wK]+KՎ@U5\ܾBLܞ/Ey؈Y¡Fl·UFB0ݘiVEYp +G]I轆T@yEn`t5kGñsִ@ȅCy{PI֎&gn"ז5y-MeUAò@֎fFwŇ1:n) X?ulܿ#|sۓ~=i*^,ڲuـԮ` 쬘Yگd{ƻȯ[v~w`R%jBfJԁkۛ}}wY|Cv3\-f*6H$A.C~aS֏($}B VUreZjV(YXg@}NG7˳\+ +q.@/PCzt' %ik:wWjnV c|wck,RGV=nY6''\ל;aA!F}fj@U/aװ3#hǡ %62/`0וZ'bekm{aәYX>,'Ke O*u[|.'G +lbV4:^lc x ñV]lr9׸R$O/FI~G6Je;n@q,:G ~me>}5ӹCèw,1Pvwʾ="qsN'E^6T_^ՍsrtU\J7o%l܊W7@&b?ms0S8D- +zo/^Ӳ)˯"Tuqu`ֺ wm5l"[TTxc+cR)T~K.MuΥ5@}îNs9meluה[ /[) ZΪZ1V⳿QP̲3#x bIbcOIxk*g)`HX T/~*g#U='ɋ_UdZ-p1: w:rۖѓQE Hzw2Xu#;ZPI:nw +ÕYߛf?\7,f?<3W ~IGJUM+haؑ~!EXnuwXVke2NJ8H*XTpϔLl)22-Q}J(mj!2v=縈΢b@6̩ۦ@=PW`?\;3e_Ys V4}=+Ks;eKEO^`*[yR4@PԖOmozߦ5x 5bWB~H%r,XWܨ$t,}:'>0pMU[s~M2+p,2nU+wDzmI.5Rf`!jkjopP~{+n\_b[o`:;M?|.1,uԀO5 P7ggxc ~T5 +_d޷#,  bI=vIOx<6WLu AnuRk[q<{|pֻGN=sކ~ߤcYñiy](XlgkIx_u땈 Ӛ o1zٓV2Ss+ +zs{G?g3/0K0'zV#}{}YA, ev ά8N7O>>!AP hvᖮ[]Uu;R*䭋3r:tN18Ki{jP +e>i#eMIZٲ}yuCd׺dHǰqK.*y%HӘYa#I Hn?z--Kwv[{V/Kl>ܕUEYhX';o 0ZH݊%zO9\#Yun!ne,~=;JrTEb֎l݄f*=18.oL* + W:ZgŪQ려^;p+CҗdcSK@s3M>k'L>M"[ <#gxU\Z۱\AOY±dz1e^|]FLb7Ѯv^&x+c&뚫]@;I2L{E\I'O#o+5#]bVNUwv7=pܼS F-.u*}z4x{+ q_=hWl9{yee]}uWejHRO3ӠpϢ5 =,\gzUJXJ+@K0ؙBqL[v!)%}d-|+qf$϶X+ +4֨X +f~*rH6.:L;7òuc%w$)1kAUpH2&&?\N/nɤnu_t̉Ƹ( SX򳵍Б6dY^QQ01u +)e9>ɍiʲ\;Oiyw^H2DDDOtS09`/ +22?I-dcWe:=}%XJyJ8 A=ƢT]@dzrXgmIևSDDDDDDDDDDDDDDDDDDDDDDDDDDDDDݎx]U]FYy]XZ\oJۓDtڐğ_ɷgYijUYM6]hkr3 +'13lC~RU]cލSޚn%Mm,H^/OW8zCYA:SMpur>p*䞤'^`ş4Aˎe#$p!)j^A>k2{$h~wqx^f?/QԪMkߖw oSpN#eXCZ}}W0hŵUP@!Fyq^,ɰ-x l.ǔ@?Y|7̰|SՀ yزÝ)! WɬQ ,VoȒ3m7BM=*tʈ,s@)<\t0hf0)+ܬDDDDDDDDD``ruRV(]E|5^`6:g VGW.nꃥI]Jĕy*$ַ\ +,*G2V{RO92lwz[|{' |D|6 +w)g޷+l"5FjBk} oaKr+5H^SgmIAlh ^?lͿp̂zV 肤}R< ,8gl̠f'fe\wuJ=f[;Ж1ŏ)+ӘMoD,&e `5 j8o·*9(d 1ƨ(;;8Q׻01!*>1: {'֥M3}=F._0W:aS_el#3oS{9y*p1 }7!Wm8yTa2r:~HU~Q`cS*d֋`O? $lk0^^o~ν!#&:1eFtmzd0pAuk:K).n*&j-*H28m/ؔ㖯3֥l[]UC>g̷V>rW簾*ѝ]ۓ-Vs.[qLzqI)V_kIXc-tzz']0AA֦']8x)o|Jce٭k9;ቓ}MjQ~=mX ]1 /grCYHHYv}5茦 apG_,޵9fl^G [);%3߼~<~ƏM!6_;humzbq||橝 +-]RJkEy(|,FV +h(AnlLcP/? WgIj*#bCx +jC})Q%h=zzu/dv Y]ފ +GM~_޴)ev SX,m|>nC(`6li/o^ز-sA[c~K93@^x|_dDYyAj?}^ ͕kad)`6~/ OKpp;78-yY"%[ +E_忑k|~%.6UX?-ȼhl]zZeP N87uѬtdlc{c0Q#qCjV aNTao;Sʌ݁"Ѭ}ʽ' tܪv}P(, MJSv~VMzGNZmXURVKk7  krRoL]ffqL ҋّMuPhqG\bȊ C; wcAbO2VUБ2xLN%6HU(`=JQ! i:C[dsZ>Zt?C[dY]~}:܎m&7\V9Cv:,o6:Nي-SZU)~ΉBDČƿ[6j-Ssyjt5{OimS{`ۓE|Y(g4{zK^)FUإK+!Ra0k2x&Khz"$}C[#q.Wm4ka\̬;m/Y-PO,;j=66`z<;n?t|;sI23?/loj+׸u*֍ٻ=KOe5}Ndve՚Kx̻,>L[#zySL;RFpiH"%Y%r;/O6NR׿,p^!7]YQͶR9\ޞ+<̧m#dB^l܍2P$(SbHe-%`-^4($V>w1 +%]e-Wd3cXN'}*{zEΦܫ`&+8-yb{Rwv8JMuŕ@GsF"S_/+07/Nc7~@#7שR3xzF+U`q +GxeWP~EA@Yo9.Pת ZrmHzdmMyZN7QM #SU +=fN$SS8NqQQ IPجX ^pRQ'Zt;t@Gz+mu`jV% HC,Ukh(\/]?is?Ƴ",P0B@$\\z-P~<_}JWˮJMoRtt밗8nUtPh~f tEd +p;^-57V6ztecEy8F,:ڶbַ&"VSswެʽr_z3.7+)XO/ {ڻ, Ԝv@裿~%[`DzJ)n^`6zWgţ)UfN7J!g[[WiKvn_iHsԔɯ +6{,q\طd%bUly6l/` zYR8޹6 URh4 ;E=Szٗe<KY*~MO~Sd̪f'@AHV>3qj,s[8SbGNd6s(:FLN~TmmNjr1:C2b%7e7+)!Du%(g;,nZܻ{z n7+q:F-6B쏜ĝ*$ Nl\sK!Q`Pv@v;̋r+]67*yKh}@j˭U@ TzĬqܵ~]xZh[]> պVaywi5̍~!n-mUTRZoO8teT'ds s2"ZIei~!f|Z|%}f0sm#yP<=_FBB{,^3R|YU5'0`וּį\Biů!} e&W>'@mı$>xϿ;pL,\DZZB6ٕīJ/墺U^@Řޛ|ƭsEfcl7k*e. QʾQ[/v'inqs1M [Vs[y6m뷬*.p3>Q}V-,qVn > '6tcs|J;o)f v;j1BmjK3 `Tt$;KO|<`!R ӻkr/ͣ&ܳeP(*8y;"\Crs3QsCRyCͳM:2^*|C]V)J|c[^V^3';|ƪJUvX[$Rē13~KvpՀ~A`çw[rQ{ l|noK[Km̈{#=50Oˣ1k܄ +a˰K1^g-Fe"BC&8L<- N%¸7~bՅUZ* Cr>׏R5kkJP6O:^7qf7K]9ŁO`RIkj kU*Xk+lWer2ͯ&Q ^7}TX*Ԓ=̞~6m3!ͥj[V䕇Pd?oLcɞ!}apk OmFǰJZt#wS'/3[l{E.JDn;UHj_6*V +_׎@AH ~~oϮܣQR\Az*JGYgc\n/uŋ3=J*7]odmcdd:}wqqv!]̧nϨd^X99Sig*ؤu os9|7>V%e  +PLl#qrr2,KT eU`Gs,;å/%mVԲrRp Q-p\ۈ>]#-57 kװ3#oQ-+p>QEvV +v9$Thn¸vn]R)(ZQU|5.7njS'8mAe x kt 9HE@nӯu%xW_(u^HH'ZVn7̲yraU/.~[yxQ'nQ4ena׿-fN]xE7UaeWWipl!U !jVYN#s"5y{p̎5ß V3*x>Mb棢S[#|&ms)c`W<1Gb-W/=4u=yo}52>vbPuQ/Ytlw} o5m|7t"Բ Eƶ&/1Ogepl +=X|++WnGig&}m`]rpՐXVSNO +ͷc؎7TWJgzcY̧ j^u Qs@@:Ɍj5"3*ms1RuӬ՟GԊG%Qe?vN}&TUyUo7lu׆8fW¯!aRY9zvt/k +P:0uluL<rV@.jE(JOR}=5̷`҇bڱXOkg̻xNF6k˪D>kP:xIrW yFo#CzNū }V&ruo9*#I_yW)UbYJGC=bp(rlkUyUB[;c:<78+pe^Ҳy_z S3+Zu.N:k@;s]vhĨRWv癀,͡4:|e|/Hf%2k5Rk{(==%`86=mf +w@&/ ٨d_uBEk{ b 9g*+YRuFmq'1nڌ\S ߸zI. 2.j>MuzATm <9{oxfG8 3 (#]L8Sqa[j![sNW%mϔXZ*lo l$40h|nz~bst` %vG}9wad0o1X h%pxN]XZ9 y~Ÿ[݉Sֳd(AQ`,/R^3:s2?龧R3&$rYEuM|I(@n}Ff.%B̖ 3JJ F%i+ {ωIn`10(dkW526A1x~>YVr4G{jWT.ġFXEYoȊy@ȈC1k̓^"Lg#>P3+\ $ ^b5,SezMel;)5l`p}nx"ʨJqכW*UW#8:?Nu-q,+ w\@Wz{șcgq?GB;^~5W ȪkziwC]_P:o18Mom_RiM.=3qxp|Z)ε; m 'G'Z멙gër֖֬,ex=&{QMU=WfK+FU T<&5ٴeeasuyJެ4:5feq\l u[]I@/xXƑnEk ׶?C\C|{ J0GIs3Qvz :.bfSe.̻S:#FMxZF1!r*㩯fSǸGHjriW] +L IjҌt 'S!9lo[rl<`*׶Ə0 +gک]*!vyFS$Z%4U+ߖ7'7pUgovPH^ʫ6m.ze;GG$G~)v0r:oW*Uڨp4:hzK\=roJ=a٪R a;Pc|(c2P=e:,{ eV,ZPU*Mz,G-wey='!VMbSbUa:9~莣ebۄ\%lS;16NDqu$\in^]~_6F(-ŲJm9PA{-:-'Ys>-GO`n*ߦMPzzJ FtLn;bsԂ& ~+G'$>1|gz`곺 1 9}3,8.MH̋pk2\B; f/0oȰ9 Jv-罙}=G-NǧqJHNcxruV;2&ː?C԰M>&7dq6JԪR{ul:0` ߿@ +FWVe`Hg|:qjZ`TߠZQZp=C7 b]e)*I)_ ë|V"A PePcTJ)##Z3LjC}fN65XuT/ePOVԷGPD#ARVp~颴eRTU 6˘pz,{ko/ @h`+Q=ǧ_xn+8Ԕ HSRkf/!EVܚ)ֆ:J֥ +@vv6K݈E'@ gS |ݵ߿im8V%wi߶C[+Onj[Ar?'ȼ;MhǹTU'7zrP/Ge~~j>w05a[(6me<]sʷJ=;P߹a~k~C/a~k3w5Q_*/m~į/G߹)wOrzoaO~࿀G( }}S +>=}}W'柀xc/v4UrWʿG?ܔ̯ݼ3Wf>aj?R߹v5c~= 1ܔ .}a }}#?w4#ʷJ}V__(a}s Q_(wp5Ur>i~x __~ /?Pa࿀ G/?_G'xg{C_ggssCf>ahPGf>i㘍[%>ɟԟ܏?oܕ<{ %>~i@G/2w4Sʟܕw.R߹*8! ~9:s7GO˟?J?e>hP??`13O?o܏؟?2!rWA#柀?~+wOc'ʷGO*߹af7fQzdֶVC+(e#lrc@qzԯ*ǘ2߯c-jl[ }r+x_]9**ct觛P#7\P:!W)È-a ֋7jI!Oƫ* Cz;?Qj\@UAt$6{KCq +B@?,9hsqoc bܼ̤0ue=Atex-\3h^vu=2_J޴ZEA Ce=_U]D{m@nVa1†򯮯dI2e\B)ndC+u/⿍2?@k<9P4<1jk,]r|zm:/fw^%MmJ΀{K<;S6RąrІƾVmJ{ W=߬')*`]IŰT!f>OB~A|%:|#Z-bӔ-nܮO̝O$o2+edd鲻3(Vjlʒ`0K YNYk'*%kA=@>{jWQ(eS 1|…o+tsSB:Je79wJ%5*>Tra?'_YS%:?/ҔILlå<@9\G߳\95bVlkl@lu>fw*ӥ'd5Z%g/aq*5*:9Qjf3V@ᜄY[e(ih"Bx7#9~m.1kcK{G?0W[Y>G5V]oLmcU2 +i_E?LkWͫO_0zoe4S hmOn +GM/ŵb!]5!ĨUB~DM'ET"̥}1`~v'iCZʪH^c܎F)&P]X!p,C/B67,1CQZ럘]&v Jk>-gf>;Z)>k0P{oxLf52jl +Jl/c{i)[/065f?fAjB#lfN+[+ ;P${GK*ҶcRw[/_,,_|ѨO365>#&dVoDo/(鐘b1FVy\?e[ +ւln{Sg舸 2#ߩMXk/Ig[HH2O'"\U=I'J}N n7xWz}zWbfd_JRX\4y̴ PBt$t7!x +TZ$3X+&ZҎK+!@THdO+10;1Ңcc]ǮZZv}rCʬrc=`ӗ>2&c*lTn.9vZX>G«*۹f=H55]F)USW5jG2ue)/Ԛˇ+գMH~=NFMN3m(ecVR=NM9b91UGv:m+[& Yh_w^˗+wj,kbO#0齁Gȷ݀)RXX:5阹Vm|5AGӹ!n8K'MY]+](9k٬tPrVqKq@!Ry 6}f: GR䁰GMjccx%VגԅRX3 +;ܟtϳ +# ].z3\R7` BجnPC,WP<(>zlȰպ'}wkgӬ =^޻|:x9"XU6XlK7݉nZדb#bY=5񕳈^ *+lOզ2S'.~Rvl&ɬ[~m̻;7QYIԲiu,ˑfjOaneWPo^D܏m45)_in3qo87ww 6iXRg[ ]}IQjk\z„]GSӽwmZײ̸݇1DR5+{MF/Ӿ[,gcՐ̭[]KޥA֣S%n jddžҔ~I)e i~76F+PcZX*{:3xM2j7(ZO|o|w7i&G9!Fֹ/x5lFB%m@]yw/ӍM&_-BkjyU]kxD`rlkcgN#/4-!1Z AN?P{ +ݭʼ+m%x{'5 >MW+r{Zm8 +z^-xùu6Aͱ1~ٞJ+d\bzt^W̾pM .z,^P~ov\^3>|q94U:hLu2"F-oc{ƫߟı^ݐm@W>KZ'ɝal-E +:þm}z |׸>[cYyi{Ͱ@*}3l6_~Pu:v ~#^Yl59Ԇڷ)ӧI^#lϬ555w@)鹗_r2+#cpws*uٷo1{@ [1-p7.mzy(W׻Z?l7KuY}T_K\1s.rb^\'yY6fļG3+>HA}7ypL3^nJ޷Q麆O<[/QU^RT%N)j,^oG]$')K'"WrKO7m+pʚb1#[UޏNJddUj*P Uѕ4(@>ǡ +kQgkO[ HuVW [k`ItQ0x=3}v;.e A3lKctnnn$ŊÛӮUdpIv,k>حNOPGmL W_okyw/.J\oܭ[w=0Oϥ'oZ=p*R?}:<>Gs::22TU*OVn.u/Q4IjNY\CWB7GphŵM%ה k{#䲜 +jPpzI%e%~ܬ|[2c^J?h$y18>- X=Q+Љnz+)ј7ԭ@J7g@c' 9FQS5bb²\6: @r*{AS c%?^왻ؔ'J0) @L}'rį͔"5PnHTTҏA(GW[HЃʑtw=B6:OC{J(5_^mR+^cӴz~5`IM\x,VYS<jRʖV?;~^_^A*{=kroH%Hg\{S&<7E~IlrO9K忊-G7'\Q`oͥ?;[>$?8t1,ȩEy\TK*/g~+eeh[+ )+zܹrKQS-OsUF 3\l%\T_(da5 xߗ]r][yzSC䷞y/[+r_*C|̏-[yNKo5xE܈ڲ[:3߇.s2M#G'(޺3[uq<#sEGvt=&±rzMb][ٯ1dFpKIl4҄AN:FL>/'3Z>7zh&ICԮjWBS@DhAXҺܦ`u;@ԡO${^banPM@+%5=JrAJ䎳ַ* JO2zviiQe콎I>y+p)bT郫6MΊK1fAχ8,#ֵrsU6xOc_6ٿ) `֜,~%#^EEͭkH zvQmܝ{Mx7(7úbI1>LѼxwWV*9a̻LGc78U(b;UP_nI#}//.^mv)G\,4:2Սn;0 +]O&baY?:/WnSnX;A2Vyܬ VcPJi@``P$Jܤ +RTFGIBuD@Ġ*D)(JD=gzJA2ۍ1b%g%5=SwT2TAe`OR7S}-WDLɀmH ~佋±0XUY="?X±8/hP@@~[NUmRcTK(@HzKLg*}kkUm{2Wͷο,2:\gš5HII3&zWR**UP>:L+92̳nb5&=뙇Ok_/rk{k1juJUkP]<c[n%.vYRDokK1euAX +p -v^d˿0krjшzKG4XWLZDP@M{GML/ ~ϦE +4F,R6 ؃LU%V z^^e?uh +dylwV>=LvkR}>o?}pYs>h5>YnbZro˭o 1G2V=ox96Ʃ`rbGm_R lKo߽ngjc(8TQʂc,Ï|J?Yab+8ԠpC0$Pwxn. 'Sz2baq9_ ppOO'pL:S#=IADJJ"9 Tt`L/G 4Q5I#S.Mu +YK*t9T c{|grls{PkFd!ۯi/Y+X0r @"2=ܩzu'R(`Jͪ߱%<25KUQ$6a̘>;o}]t'6&er<6^zexaK/]lwzlwWp0[:+I,beKܚ[kהsvOM V^)5 bFcOI%qK~5b7fSq `k<_sKSL'@wDJ= eGhԯ]tYPuwEWkF}~h2t#𛜪s~]YSȿ`Z +oZcW]XZSVBNA˺ܩ;1;SSXTx=eeDvoR%ԩ;܇>ߴY4 3Д'fAs8>>ZF$W/ +wm:6Fʝߤ>c=F9ߩ;mA2ye5+)*P RHueAPҫT:QJ)]BPcGyQ+)]RѺ~;X_fbje@1+ZtVB] > X)P6BVjSGb3CzsqQXeXoc?g5MyKjo{`~4V#~2|KpLI''g8?7 v%'U_.dCJv>;'LN,94pPצ=_/[j{Ԩ c),q^!ُEQ$0+<ͮO@$ amcNcoOC"zO:W{И[77u򺪡K8i*@5J?_!VDR=2߆>K1RfJz23q PmF„B~OYF.\yT"d*o̐[־+,Gl̛ yX60Pô˯Q]zH=$]C46drPsiAӍOwq,n:办 +9*Kl~jaf䱲jI?ELB=)+cg'Ƿ!бקf6u׎u; J:}B[YAFGIFU)֮W|$ؙ|+Ĺ'AB\]4F#:aP+! hz&g ίcUYb~ $L~!_Dzv$Q5U!~gu=ۯ,cfY0T :;:O ^# 0{OD;ȼL98Q+ C}@LkKc %V !aPք,rrJ>$7 *z|}T\e@5>(>5T5{5[f*)鳾1QJcbZ~tGn3X2K&.P>}TB}_:#RQUե|} + 7ON?Z''UD`ONAd=6d&~bU{qU:{e +g)Oc=HymGFӾcdݝ]tn?g)U9i*2OՒ2pn˷4%Z/%fFDycYN"|쌚g-Bʠ}%H+ Ck`љ[`' յN'5?"rkbZK~CꬂG[)O.[$H tİe#O0xs;fѹhC-@LS30j;r-?T='V+kRGf̋2Ȼcؼ[X}ǔra6x8bLUr%ZǒXD~&'c^&E?OFzIk체-U~czLEc_?^ÿ"o:+Zݵ"Q_$;J>qoA%WqD~HV$6{8VnPP$11276o&ӘKrv'9J<=7X hrrG]expʅAT0'zzoƯ?gdmAԌDq#_?$][r=UW];i@Youi+WmekG& WO_=HOuq2>J##$#jUe}r49ϴ P5c&[A&̵Vf@Dd=\I'D=NcI'ZѴ9w@ +wlZq]8k# I~IEuk9Pv;f楌]aj~:=D򹙬u׿N:k׼)S}C]kV9T27Xc׸tfoL ;])DQrNgRV%}NzzO_* U.kq>ʰ uKX19 g/xkK^a̮W h[o'!o;k>'n1$SZs= $Qe^I%kӧY%V%Z?}jIhIpebTJMbS]G| rl!k34Dʀ1x[B3V!2TnQ=`=D1I܎N Eu1܂{,lz֫ ++gycJB;vf8VW<}G*vneq'tB*r5U6?2utUֈ>o(He:u#ߩkCQVR ؀Ԩ yĸccʯC0,AhSeh+(*Cz=㴘 +[ ;ñj˛:}"lO,Yp]/>s+fVk/b>]k:ٗx=T7e6;sX$K8pXr:،:25ɽ863:Ǒ~s{'K|;xeRY,ijLN^ ^U6ګ~y쓿|«ZrO2[*j87ViW)js)7ߢAVOW#cek +;}TއekpD1ruyvk3+t},g!8؋5=6 ,LUM_6G5gmK<]^c߶ۂcWğf9WN56KfbvXRe7< Q,q,1na]lt++dڱ5EZ"Ձ$'Wdt0zH_enù@r#ǧ_2_({3(N qmg{R&=6mX(B{%sW:h~[)Ʀ%_t&O0zWhV*v t` 'GXM}C]$)pAjbapxb"U+RvUOR718r˻?UIgqf}@>G|rlY7]Ek,p4~Q8&M\iB`N=cfplV@G 5gG2 fsWm2_\rS(B:WCS8E:sՏ>*Xwc3amovU!K+X,Z`}=[cUf6[|Bof@*+fT X:NIq* Lw(]bW}3<#ӄa~Oؒ0l |&LmUƦyo8;'? Si9HN#8% )( `p)b)sF`plUfuu}ʁdsxpɷ9+Հ +}~!ogq m`u=}!ø'2^s1bfMM v3'ƙy뙍k5V}A^x=mE)e0 C~]+ep׽UyRoȒxUFԲg@PvQ[#^?'Ĕ2VkNP G=GiYžq|2q9%1ct׈bqƺn8 ]t*56p7,)U o + i/[v0cgr ˮ:$gxTX+̱)(9/GW80ZPDe I7mpƽ)C\4Y`ԇwffkk +kOؘ?3_8PUk#]zɜ+iV.Ew*9RADv/?2Y{ڤUr{;ևMIx՚ꆁK*NR}zɸKߡ?Lx(/ f(N{NzCUe;ʎ҂ YQv+)H֧,eF:ܼͳ*'ykߑk +r);;ow:yٍO3As{}sl.UKfflH _̻ҊjtO~xt* x;IBHTRzNYQ)JW]e9wcQF)AW]``A 5 T*m.65; u싿ȍG雓HfT@QQ3S׆86*/78b@G}@w <[WmM 4LQR:PJjRz5jy"WuBC(:e}%krU]#SR5OC:Sؙ~KIytd~> BՕml,|mr6r}pl(v7/׭LOw^gzԆ_Ue$GA<[h ;(DQj ! +2Y@= 6Ƕ*lX6L*S#4AǤ?yWlb_uelQÔUF:V}v*i6 y+^(m?ff)/xoæ³Ll} k]&N_qKU6 0Yyӣ )«eyMB2R]ujg#FGaCM1'6n[ӸυO329rqAPܧ`~ f;^޽zoLDsTƷ_xT+%-+HbC9ޜzCxޣ8%a7.hu?j.uYS\yVPvr}7zo]5~Og2Ǹg L]"FpL|SmzUS]Mo7XV^P@~zV>:İrd;:M{76Ex¦$l!'^D"cqk+?jf1 +k3󭈕jP9w)˩YMJkrԨI@uWJ+H/m~Ss/ܽu1"pZm'.~} CcY?Cc>1gs{e k$~vF l+PZXpuֵuV=:KUK]$}|e֋~YjrMJP6kTU-fs59Wkm`6̧x+t bh+]I$@O>֢'TU&J) A!*'/)P{;*`hsyo[Q][)ߧRkڬf>i_I>eO!.zhMUz}'F2({J ^Q+DwԮ5+@ҽcfPrJ1Qk}$f(s0o_H07!_o7.~ [/;l:]IYIRIx6Z*5nnj>~&^*;fcwpn+KQR؍Xl}?5c  y*[uֺ #45g`+ W`.z|Pf +͇Oߠ½{RwԵg8ediyAYqCg]$]\uc3XbXze`u۷_ؼ4Q^sfwmvܖ0xK׵ v}-s<3hABYg)[t}+œ36]͒}Ǜ.leɤYZ] {r55N,ZK cdŨ֬VBsh+k^29?KsؾyC2@v4G< +pI@7UGVy:2 S;}e J<ԩ7Aܮ{Ԩ*L=F7jPԮ5)P"#R'>cOI/ Q3(Q*1xżڙu+=Q35(w(%OYCoSxF)MJS] #PuNҠATPu7+zJkr%H"SQ+n#Q +'hJ)xhJkBWRTGY]nSQT*F9zF*e uHDy]ADJ%;JވOI? 3'1r̿HP0g+WۼYxa2IQ(wܯ,"SRhX=Ħ&SRҀtFvcb5j:RܧYSu=w7= t]oiNyReDe9w*F㰍FB+e%eq*%`@+3̨0Lx2?}Y~Ē^^918-MsUe`L =$o vڊ@ +C^a ;#Bx$z `\t_]d? G.JWٲf&sZlNKe[hmXPGm壛RMUN1AM׽#؆e:6=6eJ3U$l?)k)-Xe :봵s§%)vTԎTX=6z:xW +PI@3/+/&k*ř^R6t;`e6Z%I>ӫ0dLL!v.f5\kyC/۱H"nVu@p/85yu!Ƿnyfv'f8':鹑z%I}]2"rA:QFca}k#q=fKlH-'+QT;m7ܚXԥb@ w2q9fZ6(2t>:o+_FV]O QiùۊgP;WP \}ݦ̩|9ΰh+:~&]ͳ7ggq:+6|Ap0r[Ⱥ]I,Pu^11SŸ!u +*w;ϑnoreLr+vQi~_:%5ot`ou.[^EI+4^tfr7)@,@\dՒtf9_|'%hT܀P9*sm9YJn!F$MO k깲VnU:$^ؗs&UŖ9C2Bwٯ~vK\:X t?{SN1r峛UcXNe ݏ^Ok[EsϖmuTm:6=LVq~9?&fCVBGfp]uK2}־YmzLE3' .tzqFF˹NXTH2TAOY^X y"9e5(Tu++ϬuDT Kym bJxo-OD+hL1xkCoؚ +?b[frgX]#pXTN;cA,bpF\-~* +)uS;,kYΤ]!2^UtFv*¸AKb=`Lg\JcqlQٍ` 86z֡G`w# +2샲 S#&i@zDxɸ:ԗ!(ֽuKش+Jsr] kz>cpxU>M+vś|%#2}vem쮛L 2,DZnd>*yzz^W0رWʼuRˬ2k[mޟTa8ѱʠ~Y[FUK{ +(].ʟ~ϯYwb3ʣLgO<vEZlά@r5/IL~صd!GT}=Q''!.%UFzLj:S?%*si.ש;ߤ~ӏ>f64 //QGB=fMxDs[9zzo}ep +ӛ]{N~+?QP:,'G}:Yf.|=:$S}aF)̌@mtM8'~|Sp }ߞqvz^7Sea7 vpW>`AɫOv=S?Q">%~(xxw?= }]k!bW WĪq{eU8]Oݕ7&X 5ӛ&أL}U'ӥ`}g*[wTJ}Wg?*qvW犿\Oݕo_'_ԯݬFN!TVb+t7?V>c~W_>~jh~J}Pw0Czvo'&>p UU~Ky|sQ&>{zHx(z~Ec"=~%_ԉOQ~A?#' _j'P'!0|ヤ E z(q?_Ԉ~f%_ԏܔ8f(p? T}n; ybcY(굯/WA+_OG R aR5b#fWtV~ĠĬ~DJG*:O)*O5HQH_܃A_܅Ʃ>mj>YM?J$e'nz=G/Di?R Q~~ Oԏܞ~A_ܔ<; sq>Ũ_@Ĥ_Ԉ%'J|"S8'D q ?R?rynQ(<:y(~ٕރWn7K= +5!(n%>cՁt>E&z#?;0STbUQ8~Q~&@ЩG`>+=-O#OʏJy)UyQ~)j(Z3Oԏܔ'G@ĤvРJ*H~Ppu; :ĥ +Z~{k?_J|/%>MQGjR?rSf#OԏܞN  ؞ B@J}`pq }e~QAGٕu*Ĭ~DJtd#hCǬAR% Yc#~ν_\O0nj͊9dAӷyO)UZիFaq0>VA!lI: +$ 8ȻJT Q28ȈČO0.󒥱̣AXo3]%yXB碖%sebw&W^^e橷ѵw_|͈ԣt&ƱB+ ,B`Q7$wf umHS߱^g/Vc>+@7yCq5_o1NXНlb-*m- +ԼWkIRGQt_e] :xuAQywTsKw kj|ny`xXfW^I?!T\V{'PǮ{5os.Zyt5U=<̻Tr 82UaD,W'KxY\W/՞yYSyA1`XR>{q/NFMq5w'&BTTW5p2׽j+kl"~DU)oc~$3r^jEx(UURP;tĭf GVky\;#{l܊60Vb^윫/|o/22cєR-,TjSGIgc"{99O b|:P3h뮏m0<hʰ5܌K7eqJ1ܹ_)z6kDkfQY[ԖjBr D ?F/mC@,:y$9sytZaDZ2.#G~GJZ+uR|O- {=zQZojGBO_Ygn6c.S%ҼϻK>rO>!U +#X hL+n'5UEq6vN4%Fa8e#-Q.S:=u.+p?-8~J)~RP=:LL+)SX")Cr뢖f7W̲ʮvtNtN~zتhE8lB ~RS+S(MV»!+#1.sn,NUodT 7纻C`Ռ +a}zw|S4pKH-TO*!|-VEJn6YOM 2s3:82&)m_zOXx,[+0b}{|%_?#[!yUYI#>r? ^ficHU gcyIl63y!U)VںZ +?NqSY}Y>]%uU~À:>vMXE77=W䰁5n)>۸-pP5/fYȾʋy@ uv_w 8綼}@ +:0c߭zȺ -ŷ(T9k':u6KMaEmw:RZl^ί]"V W*y +hY<5Z3B7_(IV4z}AQsߑb +Sdߩe3^"Wu{35iUYyNe%y=ږTF:k_.԰'R}cǩk{(c(K uxalћqkw䧕Nrh}#%xu:,B~p=e9tUr6 -c{z\~bFۘp9bGšs<_)E`'!gCX%ؐRWҏȀ:byqc"y|쭊j&Bp7o1FH +18plg P}aAg'I9 w^eP +Tܭe:=3pľ̪6(UW?(Ҷq\%s-Y j>dFu]e;RX[RP&;xFijϰcTC),_灲ubd?d|lo0B߅|5Iw,ܬ9|B^AP@usP?Bb @ sWܼ⊼P ~t |!r1/!^VMq.sl[:kMI81@^)!|}媼:(.ȳ)bq*yzs;פ|: k޶7Ӧ/`|ߔڣXNT aCl쟄_ yyy c9sG^=%qC/Ъvv#Ƣ2ku-jF{3*Ϳ)첺ް+r @$~6f}Xm^SQQsgNNMi +@Tڲ m䆈Խwj&˶kҕ$H]O5kbR u, V`:$hEE +d; ?6vF={*] '`$jQx8N jV'*{>O9ļ"iNh~]VhrŜX·÷I6sI^!Rv +-w/#LG(RBDp0pޣԆذ?$=+*9)Q[@;=+z|X/~NיMUrru;e|4%Wئ0H60klFNa~I2, m'72)T,9tt 鹔c[a*mV*4GkN8㭭b8.0bl2D.[_Ae@飿j'=&V^EʱWZ/׼t(y1r>i&YN~-^ sk8 +`EG7$$VGo[{Um֍[+*=y>lo0c7'nm|5iuyjrrB/}ڞk2=Y9V_[TՄ!P̠:1𨲌|wɰ3ԐYyULu=}"uY5O] A$ CV`ooܷ᱅PG.M<~bTFlN gk˭SSUEd5Guk\txx7TfE A?잛'̑' +u*"V=ˋ)9HPOʍu߾XO N..:X?|ZyMZ |z6bn*Vk,XhKަ!WTT%9 18-cx^qd,/s)Pu>x;'"uXn(ߴu%/R`߂ocX@it%0%)Qr :vRY//>ؖ8*ˢ@>o&DLVT&R|ǩʧGևSsfGj{yYTTae}dW[+W]0ؗuc$b'_ij,:WYsɢJF^#ɭ,]Xoؗ"b"3T+hrq=%쌄ũaQK6c6z F6BeԖ]C Dlt:#b"""[#",7c1pxyu|wUph/2 >)XF$BZ/L=;Y'8QuT(,t?"9@md&+ڢ`:$=g.#X9)?t7=6g[IEifH@seDDDLlN!Nqj$jjWL$u{&P ¸<^u!:Õ#r\3",7o阜?mȥQձJNgJjZʼVlϭmWEtH"|L&E8-K0"u_'??+j(-쁲t:ZܽE뒋buVP`lt=G,8w1mRiYtCseL+xTՄCBko}I}nU'J6Cz',"[Zh.Zc:{}&UH`uosqJ5(XzH`dL؈8<">܁IU3vșU#>쮹_NbNF7S6}VTvEZhtHRo%0stV==DȈ3/]Ť[#!n] MLJ3ɞjnEt AA"{|C'4smP*6s2% V"R[H`+#&o_Bhzh}d{Obr++B I<Ė;h-ƭɺ-M6&7h7B6:z>~U|[V;(=e=n<ݦ>>^_WG\vf'ه`F ţ[0,Y{@_=18+"=Y,Z~XhF.Lc5')mZvZva]z|e \LG}USs{t>/љYjm: +KXN]u'{|8|-  +G NTedq0)P`ܷ4==6~upGltCaEmʠ N΀:Yyw--o#oQ@H'>V3>@"z[]wJzh ]e8\b[ǰ=>Q[k#T0>qxN#kL`*5_Iw(kW5gn-+QH{uS2._WPQH*MCpSŸqQOM镬>=ψ??=[ԖޮPzNsc[a>=LJLnF5.:]J̯=A[_j_f(1c6u[D7pJ٪,Qy'lH>#xU^+[XgS[(KluX~38-\a}VmXdZIg/YRF^[m`ۘa_drmXۑP>HFeFuCgm.$ے''&2k']Xl]zo]zI cY?!< A"5BYvLWCayv:o[3rjSV&T2^L5w28n Y)/mk\_=.vO8YW;XhF6IFf.}O]w\5seCwOq;~%i-X5BS6F2m ]!J@>IkMyJʾʼp +GQͧ͡Qv=|\-=4yzȯNac//vqrj$?o]e>//%C[Fڅ$"%|g(6KGR [[UבBr$n;S4-e^VS%+ս$}ݺCl239QE<n;xe97 ]+tNZ` <>dAѐxmAosPTѾL ~>*#VRưUv7ԜCN]TނO޿wɦZ<ē'O\b +]h(6򪍱3]]h}Ŏ?M~NB\4uw,Kd>]K#*mtXRTJh~ָC+ ;enUOaDj\̵Q^^^E^']uWpױ(W/=?$}rp܆9jeJH,oJLjaʥG>mfQlUᶬeʟ&,ˮQצZ"dr{o<.SvW_cAL\ e U6ܽ?% ¦ +WȶЬ4QDנ^/!WV_{UY]PCoVm !k`{rܱG66%5f!>EaH*0#zIlLk).lwaʀWg_O.dVȍH 6]ù7J8-u~Ym]_f}î0#rgw왇oLA԰o(1f|G*m݄꤂z.=YưWeXyŸe +7ı㙏LƄu< ;R.ۨ1#ۛryX *^.6-B15ʼKɢz0v +C|ˍbU*>dd+1K֛]vuʠ(Ҁ?I<78ߘ(s0p4H[<yO柾ҵ_(͡7]ogIL.ntK)*NM{k]@|+Y?ϴ]9 +ҎL碌ʾRnG+2nQצMRUz+~5F! +@#ؔ<)h${+wuAC(UbB?2;:!Z5%VhQZ޳̤{|%lwg(;(^kZ֤GܻRZ*F!9B:rtvpk{,shao `qN8SjuZ#SXt#.]N|ml@ξ;&cpcpe=@rO(?] ccc+Z +U-yO|˧31ncePvv=?V4VV=YA t]FRdV7\K'mQj\7X˒.l y.w\>8MFSQl;Jzkx+e\B#򗕻N5융[r^@@I;:=HԜ᭦e+V] 0[=(ms`hzr@#H-*I,Ř̨fߜL7pP~SCDDDDDJjV"""""""""""""SQX2էNT),\t)1:t?fd),X7bZ(eе~2 XC1~jd1r$tSc~Xygo>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 58/Tabs/S/Type/Page>> endobj 174 0 obj <>stream +HW]$+fG7\zf% 6ᾙ`6^dS*I}{v !fLZ*Us7|Ïvz8χA8-姃OBsxy{\d!GX7Ix2?I)>98Ǽ^\>,>j~Q3sXXs$"nt>B)9\|4!(yqŤN2|%u5ÅwԒPrJ蔳 L~h0J~W| ڧ)C(|Եq[]Ҷ)~8&K{QՍWy|U)a}LGR)y^q.BaCd9F4z'J:(ZPww-HIi/iN4YS'kqR!I Zܨz-;t%oiOX{+QQr !)S-O=} O RfԧI +@".% D!:$Y} 3֢u`ʅtNWuĘ+E2l[DPiA *n!bR;N|H2`l! lI/^82wQDvnFd)4z!M7I 5&K|NuR]Rr"lʂKb5JTК3T\(cPE+KJzDX@9E cB35IE)H~Y,Dy*7UzzƠt䣔IM2Ek;PA4-_X߁lSmmpbr]IU(1ӗCn/0M27SmXh"Is6܉3' *2I(wiIAGX(.Gfsc(Y'A;pH-=n^W8ifGG!Lk|g'<)' )R6 vTQ}baz$•m9}B(U壎8{GHhƍ%9AWp5e/S!)59 +2hV=[ |"Q)W:؏Lo$Ei.@g>MAL?$O8C\[8$Eh8Q'pbaMQcvC7C7MWmXznAʈu^>WFfD}6~6Fr!C0gvHT]{-T:+u'#"F:=i좒EER8[vUa)wޑy dj}⚚k<=~PRK!R-gî;GZ3ݝX?JToP>>ٜڽ\:ȡlXy7D*/+M7TJ2:}y%6(RozmsDNaP"Q56"1> @PG!Oux",1slk㑟vwQtˏ؛ W1ł7Bl&o:b44XRyͲTB514kqu|мVλ9c m7moڕބ*D!Qx9xmxǰ !X.pWg͌M#C%$|o&s௙1ȊŔ,'eQġV5wʭ+}@7- RϢ)КRW8m[gդnlLO_jP5knKU:c~C;Ky]'F"RXT͵K=ӁyJʫ[>6j_a-.%UŪ4("3ãEӏ)u?=b +N[Ή_6`aM +3B>3#\s۰^1C.ǥڷІAU `DI}Y,3ltә(1e.UҶpNT <4n{2p'cGg 7ó`@=nr_kE$9{ǗǕ&&KA!2"{J]C 7sqɕ`a;Dnz}Z꘰+R(ASB8."7+MS yV~ap3Ee-0[1al'λqH=uz، +bUf} ܊/I|C}kl[CH-*a(s~VUD٭Ä Nb3+M䐪%ZrdH=Fa-Ov99>4%E;_r%WՂH\)+vbS"QikAJW/Y +۔Op,/E(ES0̥2+3#SAD?/ ]Y\,W zʸBO^^ J$aAsThpk4YNgPܠhDcIfN|X .6b2c(R֑nr<;<;vXQ>Ge@X:Tl:m tK]\F[o^?5 e+ +rVԨ5Ok 3C~Gy,JoENZ _n*Nvr"9* &RtвuwMpmr?W"=6T!~yL 9WXAb*-uRZ8 vUYzRr'% ˺v&QE7ɞvhoZYa +lGRJ$m%k[=B}͎g83"dSJN9K2!^.M[ȞZ: $>r_4C7깦gua⣌D(Q`WFSN3s=,~юp,mm$"T=]:H+41fR`=hEr"}lUȮ'Q`{NZJnP7,#c'QUZK#%Б4'4ꂮɨ,[yM&"QY"[սbխ^96}yI즯m}[Λ%xfy_˶ޮW>Fݎp(7  D5({H1ċ-F\R +endstream endobj 175 0 obj <>stream +JFIFaKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Ka +  +  a!1A"Q2aq#B5CRSTr%3Dbt$4 +6F&'()*789:EGHIJUVWXYZcdefghijsuvwxyz?!+nEXn=^&GRk$?7I1\ޝb]1g ʻ?!T~@VpŲv7AD,BGo913 ֥K=uȐ >d 6I2*&P8[+qԑ # g=E1JBE.+Ly|ȕfrPU+0Gǡ#ȉ s݉V YHB]>YS7ujz dzӣkz#˸$ftD65To *KY5̓$$ylIH;aT^ 7A'z >ҦEf[Cf5V3(enwWcz ͉:{2]g~:A$葽k`hmJ{0nZx9֘`h9##ʂYA؏;y")h݃$&2WcjIc^U%:+ Ļ19+(*Y4`"fDJ-sZҍOgC!0=C4^MU[(^{mlw~[>BdczmX~/AA3""""PeC N:'Ct vܔ/'`j6N؅sSFW&Q (Oi0T^]URΔ>(Fz_u&[YGBW9/>o|UUMMb1P҆*GRF""""xN3MQAl|=ӿF4=d|׻Reٌn^U Cg]}'vNNGTܗWKx5*^UUٗschǶzylUouǼwTƥ*tʲU[Vrv+mO~gzn]ͳFMZu׼Osyʶ½[` SUOf=f_Q8>I}OP8K3ldɭ[>/NM֨<1X;.ŏl |f6~W\NqT%gJ&S}z%=ʶϪ,(ϲ$=΋fʺMG6@ą ^̦ ~@@U eI?8彁K]ΥV%"pSYCك0[e בFRk"ɹ,P= +qkRv&Be7]S|ԺrP:wRɪEsZWt@U +$ucr,fǩ(K!Fߑ=v}U5WW$}_yu/EU`X"w +G-}?Z`Vp1w'f{O~4%_E4dKOuVEwjrٚ$yk^C[b/N1~[c8v79otߔunaGUׯ厦պGslleV~{匎1v~q :׽xX %0̯"չY*jё-n\-ͻ,ﶘ/41ķ0(vn^NFU}:)_3~wq-89).\+:ݔ S<}emt61(XiI#z8SV3)KK|5mi`[RKk{=*2EtcujW2#]Gs"ˬGf5\ӏMح--gܹ?|}4$OQηt~e|O mwyvbdb%l2붥XV u lYkW%mȬNևEnzYK>;r^jH^~G͋[sYMB@ ]<,{1PY9q$w5gɇ?&eu<>2[P[|>v;܍cc墱vNʖxg~̀Oo-2sC*Ҷ-|(|tZ؂IP=I,xH[jZ;r`xnxGatsrsʶюj*X3'k)՞<3QӐj[kŴ6<{K3sGs2V!Bq 8P v;>^]>G&F=ʍ5E+?ctƵBa.ɿU1)"&]~"rQɗGZߺDN)*^l X/ez3`CX5N8^^HAadbaׄ+I%Ŏ'eJ2NZxhaAb:2siT$q]|6Koq#*,DZ<-{T`s)ə ;X 9'C}+"#r UY|oMKؽ# +r*R,^#vó1o/)+Veo0|#I.͝׋;g;@=Ӻm&J$,ϭbLf~Pܛ5*C20[EH= vtl[-zD3/#D<ǠKku>`gw|H;ﱮOOP3koc<&$z ^OiBe*UAWX\@v}$a?XVX\i |/5omysz&>uλ+%フ1ZU%jb}0zY3=keg,;F qrk0gPpwX  +G  o+^#-SV`p%}(5ַ*6zַ/fLlG`Uvmy!o)Kt 6|wqBtRwYzFMd8>%[C~~:;ijgAŲi 9?7EvZ{Xb)͍e9'[w'vFLAᇈܟOާX[)JφW;*B}͞GF_I>6O[u2mp@('d OBYE5XlTF[}&v'Hº=]:$ðא-}Ϊ¦~Ǒ@tO`O=gq1Hfj.$7FӎOXnW$Vz)"0| k}y$ k[>xTTmE=^^d^#ʝlJz`2:!@;=X#.iDREi{3Sr%;W8Rdz G#Y}P21z^ &oc^zfNȗ+nwʚH߻AG~C -sWP+G*|7M{FȚP6N܁}2?S+|NNyx nbu>_U~_Z.5!*@TUĕ։)Hd=4"z k37ut{idj:\a`T{DZ&+ڎXX-葽LeRS# SEŘ@|l!X#{2k5‡aBT0W3Y"aKA@k^q>MϠU*Ic hyr>RVjguRhU{ne\T*eF!A`ldWYwKd=oڶ\ $v3=[|+:ɛoaI:Gy;wXU|j{l֔ b&;_QӺNNwk/ X`rlH]<C5!_Zߞͷ-Y#*TT}p[͘u!1@c>QRc=NnDOiGHQbh<y+L~u!WSq[E'eF'*UW{-vslC oG Gruu*)f @h: uvu 6UF Dzm} IܱMg΁#g葵{Qkਮf*ǗcǾqkjْ€:,UҎz}oӧ6=n둑ZqfP1k{q]􌗭q x5v{>dהYQ붴G(o]mN~uzvMY0O sRvwu:wHuwV(8mˊ h~d Z{BqM l]̌ zBN ee:e#с"A]y2̛ Ԛ%:YiAH=K+TWoʬm +EV* ߹b{e!*skժǃ 5ngV݋SjK7 1`z$]v-Bl` s*!c$")b+7 шd{AUjE‡]E>{ט{Gq,bʕ8+2W{b݆w%%zޫD$lzlLiV{*蘔un +5+T# 򖇴)e8cUaX30R¬V JrՋAFWù=W/LQL`OGlV?N'CBQW[tk&Rt*cJZBU|{-KuuneiEP陁`FON5u:+c#h::` ҆"[.%r4X.fnUm1]~2og~m8գʺ#cGRϵX̌|qh,Y=|nUXXA P]=y![PXhloz>rٕwS\+cW8(z=G#*{,-it=h(a؀;=&V:-+H tBwn+{21mVۼī݉^nb>I|JoFxoZ=f&NP(^`_>'s|Wϋ],&`kf +'Sk^[z.Q .m +=Ê>*6NFV&_~Cal'1B+ nw$-\c%KMrTC '.t:*=Jhz(zي腩k>LH;S;zOS o0 ѿ9 m%Vn\ͯcSY +Az3)'xהù2z7y}>g-N&Eb+pb,; {B|ĭ1kO(Qݻ;tמٝS"wFZ} f#Z!G4;5+ck+)5ed="5 VGH#1zf^WFXm-XIϱ%f5资q G>/d1r*2XfdVw'+98ʍOՐTKH^uWm7L lp oԁfGQ~_KWhk.kֲ𿤯b>xS,\L`d!u|/ =fgߋҨȡ鲚tOsU}3 cK Yq]lP<cU~fQj"WŤ<_վ_]WCƭmǸq6]Gl@-qr,V.N6E[Xjdm(=-dg^:k55y;{bN60ގJ_~=®gÒ~zỳ>{.]7 +]~MMàU?}lyyf2p~Kg;mִ}}}&VgIQ>{iR+6 zҕ!wGN\ttx +{~|yN^=.ڨŦZ iUjFN9ouDZkzqӚ֘垉VV?Dq FVpXݑ{ @$?9otӁOS&?Uƨl}W̟xԝk\b +zJk]CWa~Ğ.ƺ|J91Hղ1*1bz¿p6[rtpzCwH+#2\X%k9kj0-yG<`|ǜئX?c}Q &[+O2/%|<:8] Ո!"C@,.Ko$j,izL}@'DǮGb@:։'@o1}źR>O]t$]r޼auvfBUy#M[s#CUwMZ<]c{a0GK120n{j5Ee@ƽiCﶄb"")u5}^st:HqG00gg='興e^F@-Y>e >^Ơbֵ* 1fܟ˱1zN5Ÿ:`P|}Y^`Ҕb491v=Υ]CUԍlճdr9)V> y"zZPTv &-xU-U *$&^""""""""""""" 1ss Thf>@( } |{d,TLKu>71jk}R[y0 ҃qEI}%U>0>}w"-Aẃ:F;1ח&'^?86ďPu`by,NBhebtexicVm[ 1EvBq v;>3:`ֱq8!9yreRi?[L\ FwT6[ (*E>lﯢN״>t(dWjXXAF7%JG?~\bPZXx̊ +K;"7e\I~?g0UUOX%y5s2*޶}ױrv&; ̏ߓPakxaUAvd]",Y⭶8z ȏ%,)Ԑ?(muڶ|AJXXCyGUɰ] !O:$vo9 0V4#îx>͍rր +cO,iR@I:RL<^5aDVVaDy_h)鸴8̼edRiX]oLҮ˥Vxmh= {$ɫyZ~3,Wr9/*\|TJ=33iĹI''r C^rŦe<-pYuҕ~;[o%wYPF +ߙeܚJqҦtAS{ؓߴij"6UbP9 bA;̯0q')΢Ϊf0/aɼ> (G!7tv>GQ_\ú󎖂dmq,4v؞7_N{ȯeF!4̦E A"""""""""""""""""""""""57R鹖vFJL•6gaplGsX*/s%oC 鶨##eT>r`GServe ̰fjMuL{ze!>J{<6E-N;NWNY [WZ{j|Ktܬ|d}5m*wheC~r?WGOur̮fkRxjd5nOH[򙓉gYc227ޠ0kGf>l7K C"#` { [dSԭo ҡAo^؝s]]_T@OɷZؕG-fWőEZPO 2wrQ(A%q %]KWfv]HhS'"QqRg{:}N-zgYZ61vk 5lhj>]WV:K>T_*OSTQݘAYnC_(Ϧ"/{kCt{nbt*)=?*ڟX*GYX +F{[R[a\^@z}ԛ%[A}vR؝Ot[Tю.kX +NZ/xnn3ʂ(-0}?1 :wzw=!nJvŧSMG<(W׺sC{Mjƫ7ݲ 6 ܷ3;EUSU^2T07}{7Mi( %na)'MfT,[J&#tW&.~nMεF64=|i7ԩBW/$d!ϳ>R>L(;g?4"헖Ƃd^uyrۂE4R@K[m`{]D :P}><aVu_Unjp/~Pw ̣~[7SwLĻ*yc"Է? pI'S;fbUoނOm̯`m[zej~ {&ttEzF0u: {F>N^BuXZ2lOŋ=? DDO +#؞o{<""""yU +4"y1JmbŚ ?(Ô3؈+`eS؈OhoZ޻TDDDDDDDDDDDDDDDDDDDDDDD@܌́%HG_Tk:j?W8$BoI1C3YݐS^_5qZRś^;/-f0n6 :q]1\[pp Ԩ̻5{Y-zbB)f'6LtYR}$ $zyL[e,8Yշ:# Is؉M뢓kX ǒȖ#;ي1p(ȤSU[,8%k6'E QJRm!?LtUHJGmu@D ޚ|l'ۃ龆[# mD]M@wǷuՍY*T0O<3)}[뱾zG x_$/_5ZO$`K$^]*:YM9PWȰ =tv=D@Ȋނ)_C "& Z9U}ְO#Y RCώ߱2mPA;7Yʢ̐kVg53Gxn{_4u gLgٹ7Ζ@gޤl]A#GCc_GiTMelowg*&?nh,}`ֈ%NDKyɚl5>Yx|LDL^j騯g#ª1 ='m/d>&]@^c^/Dg k5 >2M޷yȬOik;^/|;c3:J>a#9zGJ͐ݗ;LV-J Y"Ve*kߜK+m[VH+' --oKiIҍހ2.j*VlEJlwE@x=~~ycZ@m/fG$2ΦԺ%F̾V́fBywYulɭl3-쮧jrSI˲]L+쿗71?s.{1WXmj}3 튯nb6_[6eurqڞ~\ߔ˚r6ެ]nr¾k6Gwֿ0}·u3RUGq͆ǟI$G~|KcYq;IcZ0FUG6e ߻r0ޫ 6FRX@Xc(]G+ҕv-p?<)hL>L|_R^6l-^A  vd! +c]7#6};M.SUGե~&852xֈ[ u]EC\vo;dS#׎ W(׹ט]z_1.ت͏*cedMO؆9}_R҅`|f"}˷_M`y kc~rK¿to VjqO N& ޣsLt?Р6y'I^S'&|Z{yGrSI:ikf7y>;1ϟpk6P1-vX˯6e"V;Ua,`~H{EGP"GV߉[i94H*teeۂ5Mei! [%WZ*v +5wVާ(kL=m'%(:^(=qjR*N:=Ύ`=u+a~uAjT鱽m!WDf+C]4Ue?X=~75WV=ToE]P?.V7|*<] 0SaыUib*sQȣsU |DԞbv]Ͷ"km锭*!8Ǚ{Oy+@}Z]/ܫ[Jmv)W]#g#iۃ"Tuv~Nbd=9YʽRˊ+k$PHߙ:_%lZk9w۴*lpY촃ev6HK:m_ *5y,{.J$->zʽ?L58!K,-mHba˱Ğ#ctxmǨy([zVLz̮27ĺZʁ^@aNþ֤(¥) @ǓI/}(uV.So[r}mĮytl{.ȰvYv:UDMoUL;0pKoGOcv"F읏~ c^bd4 [7t|[Q۩5BvN68ƭk ͡,$GseVuee#ƫcZ<Ƽqؑ9V۲-JfccVT*ē3UqW&We뒺,_?ω2F=j· xg+C\c56XIYXr1yoO&μ2U6TN)>Ԉudr( S*ۍc{=E9d:Y~P/u +4vG}b%U:|Y /ewq-Pln^fw.X=yK^a]}MUR8g3;n_LNEU~U֎]R+"S;vvwUJ>RWQZҵ.=n;'23{?v= cH!;yq7%O=Kd:g|,%V,!E՛&/pAr@VtQxkž6E177#}3|q! 9ot1XUklv{$ȖK aӂ**ǵj,X#Du?^wR=C Rl{ e%qOm1livF +{ ߱q|= Oby=nDF6k;M}Q:v>m+1jvwqtz Gu:Uqj1y=Px5mQT lWDw@y13ZQFVoVŹ#z+6;seԷ- [}yqmKru ?"%,Cʢ"'؈w1NM˥<{y~JoRss^U=yec71FZa;_c1# ѡVByMo|pA2gpꮔ쨊} +4%jF٭¸1PLb"% R +9: o]""Pի ߟy\DDP)$=*^S؈<ijV}MMiԏَӭca]zeUƏq2طT2ozL5EU"Viu%m$qrP'zԻzH8U#.@f%,I~gr_CWMZl,!HA-*[O$6xz|ϻj""""""""""""Due:oV4s^\SoC`=e8X0BX${\V?NP5Zx`b5&!768X̌ogpU +%ވ_a~S'`Ԩj,t{XoFGVR|A"YXk< &""""""""""""""""""""""""""""""""""*SGNɪ\utʟ)%fN}xu]bXv$+]{x'Mv%Mb}R3kC{:%uڶ|AJWeMNQ$u[K|Y)OZ X4xkr^ʛ/WtkdL3)uu6Vh]{|Ha̬ܮp1:]aPXD|teҳ2-דb:/=RA f'.̼8֪3Ƕ¨$WY}?VnV"QIv"l|VdֈkJauurG̲ƿ1)oգUoR;7ȯ 6f +'Qu [>HXa[9;%U4{tI(j*:^o~Iԑld%jչw6+:_e;3 _~okZwYoKyqvߤ˚g7m=~?֛tDDMwW/vҕ'F.=.>GT|`h.;lLzN>-;FU +uv+̵d%CGav}9ͨhw$0Q5IZòӦ0|P6]?W8Gz}^dWz:̱B\1׏cرc9Z_2l4+e J[=gGdt2qVڱBGk@+h lq%A+Қ˭˵fCyJ⢰ߖ#cgfw?vֺf#Uïf![&-yµP뎙:bGcT} ?Kc[bVȿ *j.;y}^q]zYꙊv*4`/gSJl?ەNYNJ/.mȌu< +jkkVck/-Vc0;nf{czmM*8qv*vgGTR sUsT¯XTR;}|Q\DDkկd :,;GDbqLݬ<._ QVe XbՖ~({ z1=ξ=iLtTM r%.T4AL:& ZP+R);2v`K:6|7>3xK{/ߺ;Gѭ^ zfrPhIWDV^X3t2I:?zi#9qEխ^Nkȩ:{Jzkƫ6f>J'jêՍ7TU +Y ӓ۴7:gG=\Ѹ  C2,+㰧H@5}؁)E7]ak<ΐL?&sUe]뿜c[E-$Q4Xe8):}،HiP|Zpw3""""""""""""""""""""""""""""""""""`bU1}ƫ^jtWc{Z뾾s{W +y IxZCmK =I#§7 +r+PF%e?A?X/\jlEkkrCSyޔ{^ނfDqhgvVԈ^=0z|gY4x`R9oo_ Lf§*CE-9q^$5@l^W@?L\:k|Q;(^=?*iG|'߫lXy+ElsP> 0R^+ǵZk~q'BFCa XQV$)/kg^^s#j52V5Vr =l +H+h{l-;FeR)!AgC!0+6cVġG4:p7gpmIޥOTV(ËF_B?\V 1I'zȺezmUrՎt_>['5榰&BżMxz,hü> ғ`X2@ϦʰnSuf +HziBu +qƺƾ 8/.;ff + ~ӜwQkWiŔ gt}>+Wz ej00z1!wcnr韍y'ѳ7瓋:>mIl4 v\k +X}>(_gmZֿ/4/9yrǺ:Zo{29CaM=*W}wtD$ľu;⥽C|>;:I[ٚqY6RgWeX.'C՛'7R|/µP$}͓,[\;PsǾ}& jݔ`e6Jq:>cvKQؗ؞V +^oB;G% pt&nOTط4ԇӆ:c]m]StNA:ffI&crg[׿=gaHĭy]ogv+mS9u]e DJxoƙ8s:Q֡Fi[_FA6oזƎi/YꙞbN"myH8̸mbG{] +']Ke.꽫G-V5AT3RIrv4@Q>gU +c"J ob7{F+ľٽ_-$5- +JDDDDDDDDDDDDDDDDDDDDDDDGGIR鮭U]I\HSٔa8y ::=μu2e3OPu9` <~S__-mq:pCm_3黦MAl*'kj@P>h p?Wt0莌ULI]Of_m*Wkwe{׹ؐu>h vƻ){Ryo9#^ZpD7@cMּlby*I$WVljݐG!?ԋ"Q}[ pM\ BYWZ`uЯS^F}YdUCʴ DKUV%,J‚68T~bau.퓍n6!I ]|JXa݌Y +m_ ZZ74̮4ᇟøz@2l]kܙ*7ֳC +Tl4_OWO/Pv*z|WD||R"Q`By(rAv{C +eUFGGw wRvvwy>6)eE!@ ,aUjge{MlWV ވ>2J""""""""""""""""""""""" E[=U,Ż('~khY.8ë͋X;oQF{D{CӰS6>Yc6n?r/`<Sp;!-aONd]W?_˳Mjuئ:?}l,Z؀>$?ܖמ?ԕS؈hozDO5[DDDDDDDDDDDDDDDDDDDDDDDDD@V-Y57 tqVR>L?eWOoæztUƎ2ۧcx{wI}V`O5"b:r?6^gFGulJj$kIf?I$,L!x Aܨ;?}?zQe^>@Y+w=Ut꟎:R}DRT;$DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD,6m j *9̅ϔʩju 9|`v%.ϐOolK2-":POsW +ȯyXʫ݈Q߰g\t`F`"Q~ẻmH=Osx=Bچd ۹]_S.WRJ]cL[wăi\DDDDM7[+/tIr"X2»ʱ h0t{~"""""" #X,^s#1wCCbiAWUKJY/5_j`YDP|CnGJ->z'˶3[)[ܱl'E\ŕTH,{Ƿ]}Fǯ8F%-3K<=|c=zkW N=TJjtǁ45ڏh*4X9r혐w'eUEG ^VL ZE==&dQe&MBl^0];NjL7l¾BVӠY-GXc+ +5e R$v}VETrۂ[:C7nԲ3xiܶ{?]MDȫwHnkC7`ok#ښ<Yv8µJ$Nj+Xi~X* w0Ru#rO^\cMLW.E ՙ @ξhlM>,8`v9 >MY};"FֱֽH=c9V[` w؆ w=feurǭO ^5^"iL׭ . {{ԻX$Fq۴}߲job9 -DZH330cɍ`Tr ' zCad}Ǽ/#GU'߳6eюlǭ5r:& 9ihW(#Mwt67%k[CcҶ;trAqX?vl %++UwkE`[cDgMkUX> mҶin\K{Q~FZ_jTwcۑ%O9V@!K۹f?Xu +^T%#b2mz>R㲖Nu.\l:JԊUpT*$:͂ʣk}d: GWPfķxx +=R72R|f(#ONp~27rmZЦs)d$yzg\l+/!Wγk:ۼPg2lBwHnܔ# e]XĿĬؾ %ƶ>{tU+E*]E +~Xel;59 xyu`{):_KV&KenqhH@11l),M-^ϑ{oUT9k '_fYg+Ú lkߗ|KZuC2 +}ᯌ2>%!JYVÂ{č>İB֯Xd{31q-Z,.jkPy)XѴttuW..=~-Q U ɛM4w1)4|M@1 O w}=GleLԻ2[0$.~GRf"" #f0/t< _y0D/w;)/Q\Ѷw}ͦkG 6<\/\޶{yʮnAjʋAgW חHs/7Quk[uab6Eo-nNcdeLp!}=jܟ>ݤq:wUNMhq2k>"Ry Ox^u9}?(_W,k +< l<6f= ce*q۵Ss+؝yHsPJ"esCC]f:1{1UwnB|v@_tFwtVxϮe jxՒP1PT~"c`b՛ؾ! >*<oOM k oJy9+r\f.F[`{_T+6=&I.T`޻GnVP# +ʋNή=Cqp3~NW+]@d5^Ѓ6v}Kַ iu4]MWܣ}; HF];#ڸ\吝>}MX 1w2c铐.^+*vPa>]zv> BOT\:x݇$nNPF @Uo-811pONnU黒-\%m޻ysU[ժv2w~5%RM Ӻ(ՔWa`]Q菝eBEru@ᵚpvbmhY8]ғmM5ʂ6f26]ք\)Z +Bu1{?OSūa[XʆL83mTv7Ht(ųVXYM$(G-^:. 70jںe(d>z.:Yj n5_)c3g&Aҝ/ɧAG)@Δ iM?#'dΞHO :v##78kvn[ߏ>]JIrG0~:.?FAב]WMԕ[T PAȞ?sJշ\::.E%5'g|8-uղ%݈ Vtgi5pABA4:1Göϯy}9y}_-qiÖdh^9zqXxyulv'#&׫OY}vwؽ/:NgZ޽u'#A:+-Z[bVKfURc"ր*.DX + pAkX\|2ՠ<moZhhOb""aՑS!K*`w`;;|&R/DDDDDDDDDDDD13}? Z $I:c_XHݕ`^pO%:Ri'P,K75,$/Yo#LlU6p֍=x =|Ll{+iV=E wߐ2JoD64{ZE.@)[7~]뫝G.O[8f<}]gYu 2YI^hջ:: YOZe\+|' Z^? w b\aթkR} 뿜KS:]kjE8 dD$^vS7)oL?+) %H]YQnJPnmvϳ|ƿ-fGe[(ڀS+L%ҷrJ)It&vbkw*TY7N ||#JíXW og`*ƽJ1KX. ?)_` MkYAU,}`uܝu-V`@(bIdtt%?l8URZYZ݂kZ:?8_\ 2 cc]"SOW+&TZnؐy?_5=WUg-v&|'z2eOEj*Cˎyh=L^FV@en՗O +sP@bc`}u% 3캞svc +̟R~x|Mgts.\~Cqestzjm ԗ׏`{5 WPww:h85 +W>@/.{S^'Nɭš*Sel Ҭ]*lk*z^Ó06ޯFt{Hiy˹'@J~.׋_mMo}ocrd,;VMl*f>J/-oLM_7%V]eM{cؗPn^`w&:] (~oOFSfNĶ[aQxŷ<ޤ[lWZ^b_G$K+4uZr@ж_Jˈys +r8 \&;q޵#OWΧ'*Q}^q z%<VEj];z0h~՟d1<h^v;}<8YM17%ᘸ=5zv=?*-fGwr\'ky^*7[6 {VN:Gv#~|@#L@lEX}WcZRsJ<0@G,F,6XkI]wOkpsV_~֎_1/`}F֪K*TvBƮaOƏ}y'\VripTfE|["RW$k>ةW +W;)=#.ΛoKjb3eaűEXvmme}7N.-כj7Q{Հ(Pq}4O:eu%z.O:QEdZxo`|;:I*4PdEAj{l*jP)AQXޱ@!vC LnbX,L@RI&EV: =A 7=d-ڕ AR؃,ZPj rE7 +;?0Z2:HکgLZarֻԘ]+FU/ubj*!?MkUzEʯeLiqWJ۹xt~CSrdQ~ +Gۊبtc4|=-ܹw}P+,Thvb~2߲+(ƴ\J#9w~GfcylS_Ip;ǷZ *{P{5hIf.eW1a'YnCJ޷#+&aWKl[+G~}Uv^3g密±N"U`TOsɉ}c S]Ҭᘾe'l YJ8v!pg8kqonO4d/ؿ&V ˏv:ז7&TMue-]tNZA8lz^.t,ڳ~N6m1ɂ#2{)뙕gE#ן l/ '_z5P'o ಖM6Ow}NNLK2ʱKn&F(-Bv)Y>Mq&6ˇyɬ{Miє' +_Ď;z͊kK)Z1 +PH(|H wq&s:dcPչV;[L7݇sk9C7Ñf>-|Bp~w5LK:EYqUeo:Bl޼ߜ-q8j*, Y[H#Cy\9I&=(kkw` WU̳ltxV YH(@#G]c%vbXi;M~F9huvdu.**kd]N"tzOqzZJ;k]>tTv[ёe+KX{TC>@Iq/|k]lJnSQmND ANܛL\{o;Nʤ9N,vᎌd/L|''""""""""""""""ql=ٝg6pt{VZR4;0zggoQնjPI>N;c%] bk CL +t6^/׺Y@  >"""bWӖFѱXb;LnŮ5+ +^#*>`|AQ-cU[/& +(I3R}Otls{]]Ju`qد&NeJ&)r +p,=k[2N; wO*MXcɀضe pw5?I@/{^ +Aoև#GMJʯ⠳v蟄ֲ,÷ Ҿ&RTS*F Z_juF.Mg +Bob:ס&d7V[1.S+ľ<>(%C{ôk޴\X},R[G2Fe8Dɂ^~dE9t3-v+ 7|u"zm;aWB(J Gp7R_&-SHڰa6=e~ΕXtX>O.꘸V3>zeK|kid_ 'ڒ3{}CZ(`Xzwdx;FMDtO#塣)z|f mm33|SgTŪV*>OxG{GSr +\.<ןi]K뺶nجݼ۞fu\Ndܕr:^l[1n6[ZΠm|GioĥvlPlhߞKg5xNF?c2^ߴ˳>\#ڊZVu vt;.ϣ-3O2.YͣC_b '@uV6Y9 +Y͠g;eތÖ2kw#Za;7[=0lvW܎iR; e7@yh{DɊk&ROl3A4Zk[ߗ>qUT]pz0#S[ZH-Y-vdSIOu@~̼>8ىkFN3V39uI,|䪪E,EV +6%=Ǩ-fBYېt=ʡ|^^m ݘ(7H~,oBp<%ɫ:z-V䌮Hdw=Q:F6f['tvOfeu\\[ͨԮXR6|v=]JJUU,7ȉ6U8M}6l_}) UyND܁>CcP= ^~<\,:[Pe4I[NA2&fZ\{oQC=~ +ANę9UzF lAj2ؖkσ&]ũK1I-f5y# OrT5` mۗU Xf +!rzPSD +yvԌJѐQf%x0[]'Ii[F|}~o'&j[avygr]z.\C J=#S~. ykd6UhHgP@ |~1jAe.ze`ulOn62$X>C2YQʝ0WV#0V@kFF#g[CV:ҳ؟S._zc!{UG1 +ӹ2KVmWRaǷ}kk)-ͯzܽ>q!wltdWuu޶olKO|V]Cq އmTՐYpCZyȖPKY>'gzC1h8T9xyfrszq0֪+kJvHQN/ی:L4f"=G_ҎU s3m6xF<#8v߮N9z:A=s]!_?6 ':}n 66$5=X|rrݴ=/uC,z]0( kjߧ;=9MP9+s۱:gW.>׫8eek2I`@%Kp;ғG.>NS[Y UmWY݊y#뎤a`UUw%y{Sq]:0(:G/##'d㾷r?d׍rY񗥟_G}]kr~C,Kևl|Sc6ܒ-UE⌻M7t~~RKLOWS{c2èW`]:u'%MUlH<[Ȟdd:?j[! |8'q>'=;BeqI=&>9A]A@(fT3hOhrT@%hܹk~+cjN^7XI~V֝O·q@~huż.`י!:kOWk2EiGW9]Ot^u8jt6<ϻ~ݲJ~DF'EfcWygPg?wCxAvI^-ـ>xIGұ[㷹Q7նfwmLպjrxJtJC e]czOZ;m>λZ#a'ĊCmI~^&Xv[3"Zז6ǟ}fTZW! kֽ+/|3Qnr'# +Z"":U Cv׷IJ]ׁFLn,Y[;W||"riqo|KWc)8ͣ'*9 9}f&)/P0RY(`B czu GɭM跫#S](Zu{ڳ}l-o +iiDU݆\vr+a6WD2Vl<#o-!޸IOgW- + }c7ӽijdqeqkdzkzSlB7 o[W}efΥ~X=b\HUցj#.{| ; +woȎSQ_"T[~WAZ}u)? /ueu1{{+^1?S(CKE|tڋvۭx}w-M1kqAYq[+Mn}ȬWױ \,HމP|TJAA/> _ZܾT1^rR.\oo}g j0~b/=}R6v.KEtڍ]h*|O~ _,ٓ{Vb Gr؏3LKԣe >`<ū +oJ{utjt֪Jtvc5Mf>ekR0rϿ~8~.p_^Z˷ +x[G@6@== NJcE+Jmr죐$Oc%¦+F$K(cd՘խHں^]iպQ +yqDWR +o`v}' I[BgF63'+8}Uzߞ<~cjk$(=׾.dՖխ^]bUi AR PHv;%l[-tdVebFy?%MnȲ+|Șu ~S۰U^`jCuGnW^* +EEJGiM6֎PK(b6;ҟ2v['[޻}]QVxvv_Dc`)+[^^@|eYeWS(e:;o9z& ?qh/;2ǯ) v5e 4TG֤{?*ÝUBEn 6;>WuUتv]GmvO;+55BH +vv>@~b 9p^Z'do^Gzt-h,c]=ħ@NE +7oCyN@XP{zʯū'^-jwJ[:Ji@j iTv\"=.^ 4G Ȟq_O׸'d==[TVĖPHFS/ O!׏/kZ/Bc UP4@Uqކ 9qRr$$Nh(xUa%j`{UR*.ҨQܝ+ +]O(a9]4:BPK87 +f*ICmX 6GNykgsқ^.MKMȺO+VYp* +yv=>𩦡B _ |%~ǩ +oƎv?MƲ{SYy9A]k2:f6[RAVe|lJpZkD ܈E >d{~5Y:[[% 4|"[=;cM{tx._{t]gZ"mv:utVx{'ea`WG<Q֣ Z pCho~>CvdV#Gc\R*00F[-FR +{@k~iNv]1DeUM~V +-jdDDD@){` $r{|$Oa*Wj66#`荏JUg""""""""" YQ:6FxKr z:6i:oEV.VvG%PH^`b7 `\P˭ȪwHܣ^_F4+\{*j]W5yhCMU~B=vc BUn-l)bqn5<0ˈot]wP8]ʵa\:EW~Mȕטd:V]fWLΡC=Y #f@o\XTo1ժj+f#Z`{V'A:;:oY8(=l9'v?_Hl:9+ŒzXKϺ0*Hw&1VMO[4gDuL^u8O.€ֿm>_zw/IVCRZk!EK^@ؘN]OryTU DS!='r*[tp + Fϲ}^.+qcm:UDkN /_BY`PntPȝT^($Kybmu*aNBS6G^byoUmx9(k mH$qe-9y:1#"U.3:i H;wuZrLK鲶궪,60zEc]2,~3=q9oU[%n.={_^cjHRy2:~_Tu{b+.S.WLl̻=+N=yVX,)P6'J:nx[;'9* A8 +5dĄqRXh1-36XxK^a w$~10}ålE-I:A'M-unv%^rL{k.Ȏك)m}_VĤ#c0J–4 E@ l?)E={.. Yd0 ڰƜ-po*<r8G}2fEhNg6Bƿ^'Gk m~u02*urU so;{+v&-)N 6Ή*A = :Mݗ +0V"y k9"D Tu.\dz1pT< +v ݾcU]gy/zQϾ=ƥ2Zbe j۪.)Q<<{,xXMUa+(;$#`oS.U6b^%hV mh|fT_E+۲誧nGpx< dbV(^IJu  DInxXm; ;&erSlΆ'wMrtQu@ͳּ&^_S{Vb͂WFn::Q+%mչ!X7޼宊ˎ!wHpyG"ŭKh:)fUGQDZlMNǘ^]V?K˶ C60:?X_;-%ǘ!{g3YtUG-t;hr tWBXklqe߯uZX +T `%ُ|9fv⪣lϰrO`&>eu}P^"愁د;KI`W.-aR|̚Fӓ_345'>}f],?}Ƿii={scş\I*A-^z&i1odò֩. +tP,}wol̞Bc_kB9cLL Y ۳hy{>3ڌLUQ`ƒJ-jb7w?7(J7p>4g/+'ɒ@>) +Ts:MiK֪𮧑U;cj0V'D)ݙӚ*{`#vQ_p-Z,5NRB'3;!_FZO+KbYYk:c{$*݋:CQaڱTMb^O>zVj.ZY Nϙ-ZǴ%R]JVc]x3SUZSWNrA>w:X]'2.%VF+A`J˫PD䆻pP']%ިduex{KV &.gFʽIEUt ;zwtUm_[\eYgWNH]~=xK^Ԓk} lk2L,ly%H!co#kr}m[;Oa.{UYUUB.1:hzc̳uk|anأ]wĝ)pw +3~']=v܇9׋1Užv)(=F>yget.9Uh߉f#`qN[N-۫Dc +CO}?}̻{ۍ=$/EDǶ#P*mH^";wٛ:]}1W1,xnhxq:G}vNrdb љPt9-yIOkŹhDz¢>ֻrŘ=Mze[],kˮ-;G,WTS9'ķm@o^S'[6uvZ<!wvݍwߔi#9ժΞ(҇[GZ'S_z~?NǶ+)50bE@~͖hG3t^([G?UoV>]Vc{_(t¥YJAuSiQ^ԋYluuڎKRԳD u5߾T-xyvYok_{4^6ܪoۗu5-iłT <=fV>*XbSӑ{7-gYVb[RcBU yk}FT­s.%lev3` N);,t[[OH_|j O[v>gdh.;͍2lµYm%x;ځ&\պeLK5?,ܭ`+N*b,y_Iw(1<if|7uR} vG^ï|:u)92.ɧ$򷧭W1Qf׾F1dٰ*[ܐ #3. +1mݴ*@t$NE*EE*͡x0Q{p^7S䃰hď$3ȹǹjn]W5K0EտgU3j>58o/lZګîNEqJT:1FN_RUph}KP=,|@_ӫ]$acF'$ glXtaVU _0]`!=%WQ@ 6z4e> _6 %w$SUZr ̡ + bX'LM20)Ƕ[7s33>@kq23uJԍSklkNOѾed=B̴VSZ؆S {Ɏ@pWU=k(*$c۶ƉtF]W"ښjR+kbOa>]8xm }`yIcܝM.EwVvKz>@'KedFd!EUt_9Oc]WQϷ +sSK|#۷:>&N mݒVgZאNcduՄ`Wo蓯NɇM=!lZKֱ1mwf܁fDDDDDDDDDDLf\U*.&=uXCP B'[:S=9 /fVSؙ-aaׁPd{3I$13]K +Cɽm[f:LJT6H:ր3:ʭm+e`v#`2DOOݐZ/1ҏ,xUPn:g\η2oX鬋jK);ֹk[>{s?MȱkM(ߗy^>EyUe` +AYee_ tߌw:ܫURVV] 7p~ +P L6)2^0'_W^~BratVVb6;Q(zn7gmR a'^t?5c`#;6ޫ/sVp~ۦ TF=ԢkgZӒ\ƫ;֤TPOύgs36Ip[bݎF*~rRRr:JǠދE8P8P`,:b""cmU3RצtOiOohV9ͷ[={D= vT5;}-GrI"~GԿW> Jщ{Q)rrîɴZU52Y#nJx+LLz*jx̹ܲ)[U +DͦX@]3&kZ_ZcJ~ +߉,mv3=ga4X.bðJ Wmޓ5V%Zw)[WIj\2jEԫBo;Evcפ ]R^wزI/0-5Z @S#f~&{PFǮ.[=y79+k4;0o:N$0w32|O .<[v޻~s[}/᲋_ PZoZw{yk˼MZmYR} נ23Cb R<z[[zxk(l \zBͦQ) >2{Zϗ_Q!ݻoWFϧ9dZV@/qŹG7}CE%X`~Cm̮VSX^jB%dXX"S@yOڎWa5TUQkS7fe܎5k $fI ᄋ#̧h))I,tku_9#ҲK ZTGtу $w{ԽxUPe7WIV$z3/ +igP&;3=Bk'~#@UPλ J"P+PŴ7o]ܮ""""""""""""""""""""""""""""""""""!zn]}C*ճҪV iW=ާ'"&:vF6ŸVٔ:57"4I X#𖽦dm%q\k3p.u(b^w/:(T$6v>?-S^Apqmz6#W7_C7e?C)z.DDDDDDDDDDDDDf:O9{?ְO|{.?X"m<ϰl31+:4}~Lx[* ~ceS}y +VR6H`.DVMw;0-Y$l]W.U Gpt{v@k]P + 0PI>] mZ{Koȗ8§^PoD˫ +fc3Z9vӱl5NUVip2>=lO{C0|{rR~yΔ*6:? fvcS<UXJZ,#տF:#GMsc-}kZ r{WCI;b""""""""""""""""""vN=:{QwRt +^J+qڶWcjv +#dj%Wvd;Вw3cb4UMDDDDDDDDDDDDDKwRոYH`|#DMs͋\on&rmo{$~:W:s.{=[iƭwU?Ғ3SԂp/7O"܏fZ +Q}U~=%7?p%ߟy:FgUbI ıIN҇M7\TTD~۾W=?94wᐚס2z[kIӭ`d?HZn'jBZ:MΣ72Oz +*]hx0 q ]am~f8`5T2ju[YH `0KU|d} ާFXjhzQeMh(קL1l1JVk aÿa=p&f'׺yMYhWS(?Fuʮþv'KlBC)a79b#a9gϜ1l꘴O}J9ٱ@;|_6 !kϿiN>uUڎue#xWmS#D񗝮[f +76`dHu 4GbӫKԇ^MUm*lWrs/>)SFe8|k9Lg6Fܪ`.#!}mMXIorm3s[$΢ҙXq,x +O2-Ǧ)~?ܬeouX2jvu}Rs|[اս`7-orަcQ]SXe ~'gVo@K lo5%5٭tnBe-uS}MIT`o}b;޵ z՗MʎTB$}z=(佉DҶ-&a92>!w%2#.ٗjnF.9 .ʺuMuR,zJf#5]%>:==Jd6v +wW?H2o)3WS0ؗS]wznf=J<;%q7R{dѮnɂܩX8%7_]e]D/yصgCdɮUX0$}z2gluBzi64*4(G*%jR=L썂 +O1'egYķ,،6Â_ί"j*Cmb HG)"Ml-ȮRi:`vB+*5mg=NCo^MvTub`HQf]T]l SUOd7Fο#?cZ.WҮF{nJ&EvH,aul~lbg$:m>-/s(A #)*5:0_ˊǔne8Bf +$ҿ88v5oFވ:__{]ݾ = cZ5廳)@X(;L"]t[2leV@}$:c`l|G$}+/'zrCW[_5+* U #sRKXRU&d';Yo ++nGpUvFi'V%s. rFhy|<3ɍQ_,ͯto,5~~2~y\yj|5p<ϗ`~ڔOYƯ"'N@$2*ͣ!+邺S ߆_)v6{5NW[<8:.W [ҖOTaT=ZʳX~ j4K' RQVm$6|/<+ Eǵy&BFmh9~FoHq}TY`)/[ ,I~hއպ>>'nlJ[[e8I;'{2կ+b=m]D>7հJ*bݙk߮x_q@ Э8<#)Q=Hj5ʫ8,/wS߱j.Fzmr8eӀWYk`SEV[]ɼs+lyvNfo/ WJ +߫bXM;G_?$J.?TET2d"dl}?Lzm,@?%{oVP?M+]}XLom|I+l\a!JE!^5 c+vE>lC N y=CJ-YA< xe}ujւDZsW>jʵGX^#5!z1\fv~y#-w8F17~rxQ +l +ޑ)Kh]&HMkS`A@..%^]EUԕ͈˷cyx 2fgH{F[V:[5P5;*ǯuo|lu#jQSPx+1U/ކz]e*VM@r׮Wtfy?'tT`H^5.[ ӗB޸bj:V ++;Haּzh֋_6:|%Y[Tũk#me4Z? jk0 +>=kX;>'ήO j_SYZטUd@S<宧<p{YCXchߙ=W_JQ/RCg` ,Omw,WXu|2v{d/N7@UTԋUvO$/&<X;%^|G/ʾEJ fİ=z5$67)N_ 9VMבE"|AQŊp|ƷL{=mWg]f +vT7kC`㿴efS`lz +$VB{IR8}PX)h]lۙ]W>] Eze:r}5;:'rC"bg*s*cd }ꐤC#0b-hhUgl7ǷÐa=.Mk&\eZhul* 8*o>Dspombևkqg|Qc lfO:{U V|lx;0}vcioE YPYX88Gþ^f.e.9Ǜ(Oos`Gv}e7ҹոڲ#MW~0~Sܹ*zhTu.{ eQ,ރst|kpi~^̞]oiH7hw}d/H{8P\:u쬈ɩ°$w, v|dL.7 _]jS5V-۶:""""""(J8 A LUKXԏ 5R{{.t| %NtVׯm};MMka";F%76BQZn?O{WKŢutמOOM7OZ8zneMsnve]byJV+ wgwy];8( !_[ u=|*lj/,ӁWL5 +=' tdW~J쵒[BL~EIbze >P +ҷǩ7Ze]uYuzÈkZԶ+җJYt5u}/=wԖ*WQpVz(҂eRҡP,dtlWe.wbAyFoG,Ev,oK=;1Un`Aԥn3Xk6(\֥Ƽפޏ}V֮n]Oʲi#b6;?y'?CCz=}^?U ~~{%)EiZ"@,b|<(o6T +~+N[;-UA`|:(= j|0I 'One +P4#4Pt]NA=mwDL'Dc[v1x,hT`=N(2|5)X@T>nzLNe{~idV+ؐu*_MvsE}obދrlzT=4ѭhw=]U-*U;GL`ԎPNin·jljg Y3l빕Jŭ֚"p(Bd>^:V%H +~F=5|E!~Go=xG)K8%[ ŗ3 tX ֵ=|0)FJUX=b%?'W~ߑ2Qxz ^zJ*XJ{IPH:`tz^3d.QETX@c>rtH-e\( G_)0ۤa;56AIٖQ(A4o=U +@@dtk3:ʮPLMwCAI.?5(>?7Z%UW"*,atl>YeTG&KRʎ@Cou,tn4N%GKTDTL.ekŢj `GMrRt}ORWPuڞ.ǗifOPUh@r!}֧]&<:O07fh 좺Tg@ :+*@Ŏ'̝yYcQakWbK2|@TQT@_Ypdܞ` @ AD""""""""""""""""""""""""""""""" 5sBTW`~;?O\Ժvc;+lh&#?OY->x`Sj>zaG1FZ(ހއo!2"""""""""""""""""""""""""""""""";u^P!QK~Tw&Ci'BR6=mkhnL}uM1ֿֆ4wuh:#|-+BMd{+GWT j9!rWdm$6[3ֿ֟~SS i7 >:&]>K0,*%>A|~'SeV =/`W}ȌHK*̈3s*Y{qJљ#~FF5cRXR԰MeP;r>#ם#;lZ7Ͷեqྎ7߱QE00oKw?Tʧ ybֻQ6upsU X <TL#^lr<׺RsfUqzr6$4~eܮ%LjPR6= K3Wұ|y1r$q0%\eUN@, G̈ae6"1N=8^'w8|pW>#R]08Jc/x*$ˑ5k,5W}=v{/M"Buçl05,[jyz_f}U +ZĬV;.x`b ܜ.Z@e{@tsf|7.q›چ{yo~XW]A~{dHg^.tU"׋VZܧ=<2N""Y\O> +T}27i8mvVHFG]ai1YLR!{c~-͋Z־JװDoU"K%;;)>rV%ɭ,ZKl}HR~9vBu뺤\{VYt8Hc7%|B qzI:2տl\\םQgnlt;充HB)@v:H? #V]XU7]lL0:R&ys +96؃OK=/.}*:}upng#.^#qbf^)սYAЂ6 ""k%uQ?5r?xd7f۝3Ч,gg`B@H,O-INu(fOx8{Kع5TTYXyFXH_Lgc!1X1 +A z(02ۨJ4;e_X:X[GֿZH> @:Խ';u;N+؛lDnH{IR ^G?{sqU'_Uys27tW˔(vR[em #,:RXiK}4zz_? O[Rg~mVUʊ{$$M\F`kv0v|`^ZگP nv12"ޠ4^{LV9P *C>?a G髋MEUA;r#^ʷ&YzkQ+F݂g̟VxX7i~zFkd+ +"U<;ߗᙹ_Rnŏשſ0>[տ`/-߰jqsr21ح!ᮾ \-a]]]M"Afٝ1Jc]u la{1Hu ҦJ*Tm},5UQBRYlOpFsi{PXZV 6}^gc_/>U؎t]I/z]R(.mG^s[ _33|Z~{֦\+hg_.bn[yOdt*y`߄=]7ta kfKtAfx&7L/Cu+mq{%+wJ#L|RY]7xv켜ܶmI>*M+,&^Duc]imMkn@VmmM +UƵ؂ϡ|._R~p_sdd?]!Y3mdbi-!ߠfy6gMҼY RVˊ|@>/t_a';_3B;jbXD{KB~xdX$3nuj39UɮPןغE[[nHJec#wr3 +ёuxևL)x7nO[: *nJjZ)-ZDž*1SeǥP1 l5u zWScs]$k(܇oO%sr21ح!ᮾPXP0,8ߙQ^ǶljP=3yzlʱZT壮}ӮȾlE,,p8j^'+:Չ[}1Hοw;Y6(pyD_:VVN8݉_d/=; g'ΏO1[f6xÒf'D|:flVAvv!ٸBֻzVUM}]m,XÀ ؑwMVYA3Uwʣ͠%\c?:2Wȳ.Zڢ;$Zrpwg%] +T3pʺ'l~sb Jh\Ȩ~ 7`j$ݔH׸@[:GPnsvdWe&NM=[򗰺6?O#R8_Ԡ;;>gL^f&5TJr)!F>R7tWMdK-nѵ+vA1=v$WXn[h=aؐeNWoo~[ND)_UuW_`1o/OtM"`tz27%5F( Gqn N`fx={JŰ؁VN|2w]VׯB,(?2 sd*e:*֢~21rOǘڒ%tZ]Uьqmq/bN7&؎6LV->{%EFMEb,BWcvJܟyY].ZT *oG`/7K|SkSIOBh_fp`+|>tkX/V-xO]g\Off`nm~h}nI]Kw2ߺݾ*v%"xF1fشTȍ@޾KҙպVRlF#f&7GVEwgTֆYOfI5+ZKJ%ᳰEibU -ַ2r*F>Ƴ-#J *y1f=bbUXT@I +@l?b++VՐ,_"Ǘ ӱǯvf>d b~Y_I/`yxucNƳ;TBpQ\>jܻy=d궬l|'U9 ,܈AP?-􎐝#Z%fWv'̂t;I!}+U;"m{lhzd`t\~&@5Rۮuafh^hK}>/o6 + +k*b+$hͰ; OIJ^Zܖ\*~mun_}7MU#mYa? ɯ2 6;%؈/LjTdCNճik,ƠV#IP9wrf_RʾkӋdj c%c=J65'axFk'_u9?zRD6R,ɵ*Ru`Zx]MqKJV޽;舉K G|HGU.uо +F{jE|;f:OkV`٘ʻ#k6_Dئ.TjrT 0לuBp;קyDDDDDDDDDDDDDDDDDDDDDDDD#%`}fzFEʟ(ZXؕk&ՇUT ylx^ K_ [YTAtX3 &r'cDHtNlvfjǠ$̳1.Y]]y f=~('$n+q0*5MZhvNNkXʲ#gHok eR[85f+́;M˸gZ3+I GMFGCŲjjYK +uI:5Υa8]l`OQp5r7 3պRr'ȫd5䠀BcN7Zĭ ߷V/p[k~}YS,$**t=OтvV#$WQ?>݌LņՔ&$OPVl{-b+Uwdz'!Av#uLk{erN%~p`#_LFER17ĝߨ"w B+֤ |6ķ ody|6'Aп3>zWyv$ Ѫ}UAnAx+|ʍkrL-U@wRv>#-zc#YcUI&cbu||+VV%~k!reϋ0={wYģeKo 6/;o?>-V 1dͧ>k@jfC{hv, ǐ\r]}yFsgcWZ[SGPFD}U6 cX3:YO>Ψ4KlOkz/MUhRKr ϭ.ϫ/ulM4X0|I%.Ju͂@~_ÍwY]xUi1B\6f?| +{v;_Y]fE{+]zܡ`=9kzަ]Yq1{C]pPO km::Mie\ּܫZhv].멓11-mʫs[ohĎCL;w]KYugѻCŔD7SYȳ*e̅PN̎}E2.fV%Ƕ-T$yhewڸ2c{Cr =;?2q;Z*,UrH?,~_㑽,gr͛0Rl!7b~Is^gHdTq.v8Ia{[20Ǎe˕,r1Fuu^AQvDDDDDDDDDDDDD R) xH 7cofFt+'Uͳw]:aZ>:]hFyoŊ{ {w{FɫsrX9tV!1jinAG}OjϨ$d% uaăRy%F^!@t;LsiñBG;R {oGϾfro~KU +[ c_VcqIGag\VAͱXf fGARfTQڵkH +r%}=~-W^ `K[m0!Bu|w:vBUG\fqBU`)RG K2oøiޕAc.VrߔűzY9txԵH +7v| +0z/SpκD7hK+\brm}%vNkϴf(ĞE%@V-[joLfN9!Qj3',]}%9enZ/p7WUt.vkL4wÊ)Vz! EPѺ=v"Xԯ^h{^bY:SfU/TM|լ^E^vFX + V v^cۗѳj PU'DdoEzDZTֺcc +o#e}W.zFj,U%U^D'CwyEXTau,j {:c1UZ* {^Lʓ;I:A +lXn$n@e^s]6g +Qy(-s-w$g&W~ʺ20JpUPYß ˿1y +Tjǫ-xqUF[0ͽ6.si)ȷNP+z}2֨˴Y Zƾ: z!`C ;Ƌwj! h*e8tَⷭ^Jӟ{4I\%j5cdETYJԨUJOv302~E:lYtUҐw<}쎓Or[{OoԝDH?k_ {lF]~޽u]u˫܆uEUaYc#\110̋ĆUbv8#7Wv )Vos+Toz󛍴BuXA>`oږ[::x + K)㩬Z$U#ަOIUqV5֔/Z7⏱8`ʧ=uGvsyzKu ||$՟'B -@.~^SaђYM`a|@qP6BO÷ikYHއo5?{ +WDB] ti{O8r,+XW3/، :MQj5_qVeXYA= GSZtt9TC7r7~ fc܎ŕ_>#*ŷ`WIp^$uZ ߠަS#(d֛;5Ǩ/otfTvaHKGY͏QLvj@$S;2l[ߎk]9?ߔUÍIQo?Yv]O>ǡ zL& Qx~ԞчؙAe~O|$I+,tUz-P]յԷ^>{`|ؘ=K#,-AFbtՁ]i>WJtjT$f'I$槱)(tv;y""yK9TEOZՖFPJHaFǘx=e[i׭+@P…I'=iȻ$OhE5vAlˉJU]]NީvEM^:Pšo:_>, U,Khטaj ʤf$PJ|M˸-|gr9!X>k M,+=CG~·'`<,TvVa.[ˉ}7cۗ0"Ys +ͮ\G >Dwb) +tttuCR*õoܕü³UQ;URޏF ccgJR+GGDr0BG#669TkxBRlG!Cz7ORŷeH::A<7 ,;k}moRbֱ RN M|w<[e Fb ;{ vyN"b@=ǘq F[JJH7\ ;dْMh_VrW^j<6%PH@'~u4r( b@ {{IyKص|If{y jx-RJkcob>ŵ\R>~1"z.^wS3V}D~5ǟ]хl,G lo_ g.~X&F6erz6o~^gedfW⼔2#.VϨ=W6;)1l}O-~yߘa5Z|dScRe]lgC}~cl@t?*|jQX!4vW@].^0: l{ҽr`6t6@2w=WӭY"H /o!?Ȫqq}Dk_&]= O/)FFGT锸CP%Kf5Ècy Iϴ5qzNJbXWP9VSܞnݤ_hڨ7 ]@}fX:L5-5QΥY+UVhZlEUs=Ik}O0nShz^?ޤS +@U_P̀lv!yiuz,agOw5%W =Ҏ{&_=))_C2dYӪ]{G,v\"z% $TK\[BXh6w/ +a8[MbH{Q_BµU\s" +;ꗰ:Ex'ɱP, + PH~^ͦkkZuNZ8B8 ?`SvBuo{`9Qv$l/egE? +ܐ>^wçUwCgޠnOհ}AhD~ j2.j8Պgzo[V/VUaS YRʀiUVQSWmmkkjr>TuA`6^аgm%쩻.sn}z2[-wYUǸ if2 'bqj +Ֆ+cwJ֞'.}\I^[B^H!e +~31+nP m5t_IRgdxUeݭes^]B!]7 n@{A`KZ[zvG̬1zm8hvRU{t{j(;3k@m̈́MtK:}YS&+%9:P.]n#94J |7ȼ:4S5,΋U[CȟIQ|~SCH_H]kr1Q<ƈ!wWxRa>P=Z=e"z'M.Ocrca'*6\,t}; #:GP6:dϩmWf׾$m3Y)܋1UP]WqaȌ][.^T[.*Gc߽̾q4YhY lsR?!tA$V̀+KuUesg>Dzy|$rѕպS|kMRVjd䬡Qsv5ݩbNqkԹaNU8$7Cغv3|aDw;b >Z)=d6c, +H'^r8 tx)½p]v]yq~ C<+jZ_E* +gG|gy .Fhqo05=NJ}`c;ϬbZiD|n={L[-X }IĎyx}52zf].Yl}r7b8ȣ2FP@-SwR YAU2*[X0  <>e@TNCMf;Iu%5""Q%WЙQe#D">. QX^EU Fuđ5/U_J]̒O$]&B5n+)" j1ƫ/p]'P&YHvΝ٘YE1T^D7`<7Ixcc.Gʅ(-? o-A²5*_o3İ#Lt šPۊG%m̬2PȪ||F'CǢɕtN;1wDȸe*uYwň 22PHFf957ֶ#|a=L{zMvQ[-$ .? KyZ*ʲAx_W ZGMOX=Rl-6La1uE^nCVSAP:V87 ;o{={~[]`+>fnc۷s1ֺoos9~^[3 &֦ H+ՙ[Uj+ af"t,4d,$&cu>p95{[-du ;~de ȥ:z`VkU7ʰ+'a-v<Rk&H, YA +z>b|x)A^ַ'-z-߈Gz}x=+!Ig:CnIa%}͔T4ORHP}x13f?Q@JL #C W#[Rev~VkU(h(7 oUgx{@w.tΓOLZr6!H[aJm +@x̍2=-JH4L +z~vyGpGrŽ +Hz+" cd#Ȩ?LdtLLTlק u<`dVY["1eRc|~kyL|ΝFwjW%\w锂7XώqJj>kNo~{}5t\:m[֕H>c$B=ӫWl^>dz[ล[(ׄ8Mw~蘖YKȱcf:AùgugVjC)nȂ;=,tlJު_|Ykf%nϗ^Z'ePqV-R > L/gMƪB~_?% rrv%Y~:e!t{ƫD4}l~{ߜOf}aTc `t Y0 +'Kѱ$P\|׾{kt\Jr-)E4'}.W XmNq} 3NcۏBVLEvv}ftعNe@ l=ٕVV84J2׺Av2qu|wSeܮ Xe<#k Th0,B _=tVn~j8:*k,tjk9!LR{("wt|ARqem[,ZΈ='PNSQ{<܎fJ6RNguv}o藺`XBiCD'G{+ |S ˈgbeԟ8 {;bIsfMŻ)"B)b?1FFnB+PGCYmn6hθ;)]WHY_a<-~&ךpmw'λ& y\p篇&n ԃS7%yL.5ճxyCo$kG99(܊>SHBVUXq#Dry*N@;2sjŲXQ!LN,,`ɒ֩;!mf5( [d60ul=Ĩ'Ȑr1묦5%ٕٔ*IȊCukX'Į`n=}/tF@}<+QNӎ7^[Zً {}H |洼dsXَjr+]p *7 ߙ:3.cj*kW{}_[iL/xX(ˀ VH6Yo+e! ^CV6kMsvRA{2H䢆mYn*K9m ݹ:Ba[ד:+_feV=!Uyc7 /_&N[] XcՖq֪mT=e,I4=dS+蹵[kK9,J ~w̛;=.-XU@J<ղp R.f;:)mfbUj[v:{ˮZuZC|zMmwȩJOkߠ=kZejse] }Fk[z6xa;H?e +t8c]UbT;%JY Ēzזf +/K_"hՎ y;)22Hr EXIjV~kXU^ h|6Oݚ_㻅_e*H%{yomz o9Tu`(j -W|} Z3a?K5/P#Mcd޴w^k4N+rJ~^]WLucP՗mTm2VB>]A2EuxV2M`epj`l͚ղ7Rr<Ƽy8Ԍk\*tyc^}{O BW򅺥BoJO>߲5oKh?SZV(}Y^:KeD&{X]ҮGanKq嶴|ܖ`ח+^L*4M5o2;w"l?fv' bY);{-Ւ0CSxpO@!@''ew\ʛm+W]֪['I==ddz +ei|k/Y]:GU_3ɷ)|f<徹]=G3n|6F >~z:%XV'Kԋ XXZsez˷{/yp ೛lv]q݉fщOZ96+1 ޔއf4Pthrqtb9P[39lE6{YW޸ykZfBպj==ۘʑG>z7T5-"3{|y0v^-vetXf7#ȱ$>GcYxPKVjm(I +S^2{e/^n zkP]e,א]d{]Bdtհl k[̎ID^UERmlqfu>puwk#ɮvg$1]|Gm7/cָVޙH>k8v#8ԑd.-.:f-fm( |>8y(gNyt\'>glm~5goj:5ְ 39 u"k دg"c_a'C:>ӛz#Ǿtu#L)N.4GHh L^v]FǹyVL+|ԃ1Ӣb׎1`˷veaUؖzhb||4P16|gvhmyw,fN(ςl[Կ1U*j4u`"Ԕ +PVUu0GsΧѱzA8e4;OlfOϛ<뷖tb^ }klxə(ǘș>fw`p[oSgȡrkj|XtNҤ sR1gu&ѱzGd+7&ۻ$}rOs,fp-b;$ޤןSKv.WqoCW*;'5ҸR/Op?qW+XbQb:W9Э{nޓ#U)zo)P#^<ԣbb-ȕV-tl;E͝T,{J)y e|S$㿆*P"KmI2h괶>Jsv cd{;U5ZKv۵>[d$:e9vxe`̮<\@;*PX?n>YZb +,`ym=~ޒ͔I7k|qlFֶ3~bBHF\X jmcH +wQn+Uɗ{u"7?DNEyWs*"""""""""""""""""" 11o~cc>W{6>1X o~?_'ow2[Ϸo2[Wk6z=c+5n߬ec~l~l}a~́Y? ~͞b~͏3VOk{Ok6yOk6>q?Z oO>q9_~'9_mo?dc ~͏ ?ֲ[QOk6{O[6g3^O[6>[ wc~l}aϷ,/[K o~0[ wێy?ۖy?ێy?ۖ2[Ok6>ܰ[ oۖy?sFOk6>p[ o K oۖy?rFOk6>ܰy?o~+GGNFW<̏yo]?_?2>޺w2~d}tezߨ߷yeyߨӿQ# sϒezӿQ##~+GGNFW<̏yo];_?2>޺2~d}ezQ##+GGOFW<̏yo]?_?2>޺w2~d}tezߨӿQ##~+GGNFW<̏yo];_?2>zw2~d}ezߨӿQ##~+GO>޺w2~dfe㧊h%|Jl M؈Kǫu.ԺuEk̿e5(RT۱)Yi*&zT>ѷF8( +}xwO$ϫ;gʱmW^` {FD>u.֍WMXōhmKb1(kgSmY`Ѻ@ka]*wĻyP 7 ^t<٭U{νKڎnw: k8@te<@!y}_\ۮd'8eE«,,ÐZA^Dʠ&wFFVA>b ^J ?j=<:S2SqS`kBꛈ;]h'6Nӭғ4^x-D/am3o^jΦK]I:a^\usoizI+Ew#]Y`tV8&A +,7VT%vazYg;903y؈K1הiKB:ރH޻C^Mx[RSKvއN"gxt6duUFz`Y^Ϙ|ߘ=#{[w7%uaTfuerߩsƸTd թ\#$o[o_>Lfyeµ,@I'@1:T3;* o_Laיsgs?ᝇs?UOge<9P?_3M1ɾ&9sݟsM1ɾ&??xY'K79#3_n7Y>e@+@wvM;FfN8 0b>&p; }䌧nl>=\j\d[[lf'Dö*aRXP'蚾OB=ws\s(3Z'F#]? :U =V +`:S"&qTߒ#ڃѭܺ]gdgui)s>[Id \(S}z Z{w 8sT|{m7o.eU+]ʶgee]y{ïOVmHj;wR >e(uOb=IܪܾfYu EUjT{Ϊ ,.,.ޫ QU † !vFE}[gܮS5 ;,bfu\{rV|KEI0lTs,TDkcX=.*eYPJ  籯/#3fmϗkr +Y[@6St:#^/[f6-UÒ.WonuXdn]_Քcd]Jq$W0h7fSӒ+]UP_@ Ur܀vfհSU#@etWqk;@r`\-̒U,dvV^˿-tLfp|(KQ}=vt~.Hog?I) srJXSU v|4ß@q>^F&fl جZ$۱]w#>7ժQ`cɸ޴Fyual[-JHܸ_@η6E3W}[9zIrcq `LO۵=qivmmf:$n{0YN55L"e=9'I;翛.c,7N55䕢1c,7)ƦVr,{kjdbK)E*I< \qij]GC.cL@š*8T09;)Q-TȬ;vEkp,Kuo^Z~N)U<> DלpħDrJ[GlfS(pCA{ a_P4l\~KL>[E9}h~bTzE^aJ<EI ng;jYE w]U/&Pb,R;mGmy>l{y]}a*׹nz1qFPUj7Q;rӿzA*̊׈P0`D݉Ӧ^mj,Y[||YW_O[[9mɇLcv>@xV7?bK.2]\Y\kL@#mKY>U +g'dy47V%ɾm*/ JxS_|6C?pK{VVfP;?>)-c8@l-u>cX]k.D}ScyAC༴odnķ~GP!ٗ?8kCb]J3|#;D3P!O%bKod<]Lr/{~g ;#[=$iOg7<0R{Do~l勺D5kW;ߒJ|$OVzg6绍ʁH;5xyʢ" XbSR7L7<< v @"S{)TOe@FF'Q&fTG;vU3&Mj47LC1Zr݌@Fk^j*1!93OŻA(xGqٞZ&k{|kϰUUrV ˞P<eӝ>$@RI[[(?מ؂>a!z3'׺r (<[\쑭K+ˈ!O#:fmh]K iY[8ߡ%ڰj7ZHE!Ymw" +t}C~_VeKXl[Զ{{+Gz#/YBA$W>ceIlm6RH y@Cr66 'uǸԢE])Ұ?A Ě ?<-}o-Ž[͌6"dSPמogu*{@Yu 0vQܐS9o@[:#̳*Vn* vFb"->E:^?"ߗ!\wHI7wp~*\o^~`dfmXt>MHX! :y郏z| 3 t=:^B\##7]aé螞g7=3LkS1t~d}Mvy\,5K[;ߒ#xj{<{yJG|w)!L6E)m_7yo]ۼ>(y"ě=oZ:]ogri{i7[ea]%:y-4:enul>O3z>OPf Ev"]w$eU}> +Ч +@T&`ndI:lF5IR=O>^~ uiKBpĩ:EM!j5>Pysߧt6i6r/@}>?-9QR +ck;ΪrWqk#)jM,"qAZ@21s9lvBFϖ>?Uvyj=FWk]=FgY*1wL;O d?Y>^K$ A?G 7/uOMʶMQibXtw#+L|}wS79kl?KlznK+D:6j.QVcx {dw$GǤZ1rˌ!D'ߊĬ-o[;F=GlPvE1=q4Yvϸx%БDVIِ}?.ԓ.M5bA{=F +&>P{0)g ^v&^g/V#>~x;O;vVZ +B֪Nw۷~T_TUPgԒ2,b?_XU:J̣%l +9VGoy0ޓoR*2 Zo 9rI${>9Xl,/{Hև}}r;b]جc[iׇ/Dym5ҋ@3MKMhz+ȯ&w47e)V%v|4!c5bul;1AZ:0a۷ng'deWn—*ɔ~d ﴽGLzrrm7ڎ{h*/oNH3 烴""yڌ'2 !'kRF5Yu=7 S<­E&#g](j1PHW<ּҙ Cv;Z<ĥP u-ՎC-ZּPjZ}d,N٘O;yL5=?D&{I[wA E5 tw%}ƻJ-G}A0 Og`O< %$ʧ3?SqO/9}5[?Ei-2=gRcQ3L, oOLO5=)'= 7<NtQv;&'LkЎ)f:ߢ[]2 ب܊g;V:G +;}w3/ab׍A֨//R6<YUIT|RR;,;FϬ0 +Ӈzп2y+=ʀƷ<Sx`OwDDD J<=g3؁y=Ģ'<3gx_nl喝G 5K?Ei-2=g2GklǍk[$ErGyP!j{Pwa>;ˬ [:6N]چka+ @= Et; FĨ}SѸ"BN{Wj#-h".~>'#5N>}ў@*h},CH&R- u1Y3uOqzz!hf@DuO" eǩV;LT*HҔĢ*G y&^\{S5<#Su<y_'nI5L|lS;GHbDQ)nz e&vw=ܧ`JJIg9Jxgr9P3){P;1n'HnsvR$ӟ NW]çҊ.k&);ش̦e vGg`/MMjla_Ro$3č;L3sZAU8uhOuAHP|lxhJ@ w@V%l,ۘЙucc2nˡ H]JH+QWEalUl0FfgqOE(UnU7ӁGPI-oiǷ*5=8lmH$qm'J;}zs:_b>>S;='];/޵OMF`=|%F%OΐSfG'd u J +iFߟ2+q#B oGc1:ZqϗzeWPUtKh ^OK f +\Y}[?LlѲ+l#b,&ݕv$ 0ߨeRlk^R \ ~?I?[xGv0ދOA {#2~wn(mI}lȾԱƷR*0emcgZ3:>.EX1V| VZ*ϫ7ZlUR[;$U9Gl'S@kQI[lɜ,5¥(n['lNXROs5U1̶–fZ1I||*[:썓"(1^Z%PuwI>C}-9v6eqJu:{,Ar1^6eߑcӈ5RG +=ű\oגuw=|47`)җʗخe׊Ȅ|Tut=]?׎z~ݫ@xo-]Ko( J=wj*"y< T""& 韶D@5|{evezwOB Oe3=Sn8RyZPJXRH]г<:A2]omDW×msRr?92~217ld̰&.MpHcF X`;~Ȼ^{\ǨcֵŎĶ2jA'fkUȶ΋hw| _96=z\QGhJ&΃(yk&g+ xޞ_}=X#fF4?mk~OMfq?t;;7~&:ٌB@2{ܫ}2!#R"y79㽙.yVIf^^"W}_}bܟ ?7zy}ffGqǶ>Gɻ9ݙ:~N-ղG_c1XfGamlU!v: w!1>Ed'l l nӘV*6ۇ::z˝0>Y]Rƨ(O ~M]?ʗ⮅Iph{ۉਥON߆`fzP Sv&WCѯPٻlsɼ=xYP ?s>_!5Mr]ڌ~7ݬN71Vv'nۿ'QDZk/RHtSe =;=FR3}@oV]iVWӨf3TŬD +WX>{$yA3:^FwJ|W0լy#;jZPvt?=G&%`2ܬjSuǎDAc*\Hg1=y=ƞDDLO韶5|ьL_ʺ^"{S%3ׁ]UY5'7y > G^.(? Uo_:܎+3*)p;{f]cc㏼s)'~>_Ӟz{F7fٌ.-j1> +uy#Zx]_51Ʊ֪w~vuM}U!UgPʭ/ =n&2POmB3!]=NR3#,RޏoI!_P;K2%eWmefp[k%TQr<5<#s=K4PrSٷ~v<ʲ{YYqF5k^` Op΢r8׾z-7u#>D":e6jp~XI I$ 9"TTU(kCixOg0%;lRLy7==Fus2&/?t9_Ԏ['.َW-]GsߗQ.]~YGsÝGps(FuNm'~]~߮'Nẹ8^?sÙGpr]O㏕~~,9ͣ8̠~)~*m'hq?t?zs(mFe'6b~|j~O>]@5?t#Ne89~>SC~.8u|Ѓ~J~]~@Σ89~1%-3)d|&;D1rz^k mW:m~o,k_鿰yc͏ 6{ac_>o,k_鿰yc͏ 6>o,k_韰yc͏ 6>o,k_韰yc͏ 6>g,k_鿰yc~͏ 6>g,k_韰yc͏ 6>o,k_鿰yc~͏ 6>o,k_鿰yc͏ 6>o,k_鿰yc~͏ 6>o,k_鿰yc͏ 6>o,k_韰yc͏ 6>o,k_鿰yc͏ 6>o,k_鿰yc͏ 6>g,k_鿰yc~͏ 6>o,k_鿰yc͏ 6>g,k_韰yc͏ 6>g,k_鿰yc~͏ 6>o,k_鿰yc~͖J񨭙+*b]K 6>o,k_韰yc~͏ 6>g,k_韰yc͏ 6>o,k_鿰yc͏ 6>g,k_鿰yc͏ 6>g,k_韰yc~͏ 6>o,kwab?N55䕢f\D@0zP>J-jTv{v>fu<%<,㨸b:Ɏֱ*eb$mLR=5Χqŷ*\W8pFUPdjMjΊþzΛZDj޷+kRX kvdfF eߜ=BޠPԕvB!Ğ&NfHæ˙Y#1T^NxR}{ѩ/;>t8w 'S]_7伆); ̬3[+c -权$fL -};*73w>:ߑըk@6Oē}1|ql]:dyyA"fDDDD|h7Ҧp v:~jjrTԎ`^D~Exl:gC"3Yzb'flTm 6I= ,WJCUߑyzWxu[|e g9gYlS Ցb*8JW,<3a-߿+QPŮ +z|Y{9qVn7BtWn;Ldiu7]!ebCywה׽qgHߖt{XbۊsvAvA`[lk>pɧ=)ʭR*uQω~ާS3_jB +Jkö~nOWoeo|/MH.ղuɰ~ER5]P{YK!@|·ֆ́ǭS\tr~.PJF=$Z:ݾ <į2KQe6\G: kBz} zw/Z0^;;=55ޫrdQՔ!̂<> +guZ6Z!)f-]c6Νzrq+zp ߟg|d[J~ր tNƌ[]պm 2.Hq$,A7[q!/-juԗM]khPbQ_Cu1QUgz;pe+Ym =ԛt*SX;#=l~E/䭝ܮp5!jΣ!-\!t㱺6ٵ?Ok.wȩ-uDcZvP{Gu·fal%{41JcR^λA[|SBsXq([oCR*ιm,K[= QUǏຆ:ho'gڞ72qWucgݝHﱽ>~Z=Ar>Bu6fV{bJuvL6 ?ұYxXʐ_Y2e~2ߋIJ+ݼ-h |;I}h,q(R֫r޷nƷg@B;۾y=⡭ *[?2b""""""""""""""""""""""""0L^m* )J݈>厁*vQmXc+XJr{s#tb%Ud+>cdv1btdW{*3A{R0{EXa}cX_ +>2U=3#;ٌ,(1Zj=q}JnEzDw)=*Otf)yq|hfR{ ַFLȔ?%k%B#(v'^@']rM=BVdo|:܉`ܶI-?Yi7xnUe +֧"I'[hKV{,bbb|ИmNk˶e=YԫՊDm lߩR6l쑕]K֏Ňͨ }ߖjrX]/):չ!n,$>b*ʯ.2OlTA/ zut)|vT*Q5̪3}}=`|//e]|~t!UP! cyWAl{2&|%g( +4wj(xIj׏j_jm*J +{w7t&]d5OmhU9u~^z7EkGwKYScEs:~-u*kVtottޥVhrU~WIZ +[]˭"cZh#G +-h;a' dY%k r.?XΗ2ݍ[%vRJ(0z*5fb# \rۘ{;?Xv~gPl8@![" +T߮zm`U@$:_SvyuKz20ڲ#ѐ~̌ +U`eZ+rV>n{s- rX¢C{w`MYV{V׊? JGG]V&Z$z{c%:~ W.ɴ˾72""""""""""""""""""""""""{?DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@VeK޶7)8Ouv:$s""""""""""""""""""""""""""""""" 5̑~']AkW}Yճ/ + +*-68ײ̜ +دs= +͇OL+Z>0n(qW?USIbDWo.!@m7;פ,՗]R|yhC`oz﯁/K R\1ӲPAGȑ_Sű*Gr` evUK[z!WDb_rP*XZ::>~5nu;$׏Vb{ +qm1Xa.S¦FߩosgrrP:,,t6|i|yrjA =k]F;z2g*-YޙtAKY}[r/?9o`FEnߩ 73>%T5\T|K1z/KUmT߯%ֈ 6=|28خjX@E,1'Z̀w=g6WַŁ#d{zYUesۗ(azZ\ڰÒ%}@;yv"""""""""""""""" 1z}}/A)Ul1oQ)Zh5j#JX{ kdS/vĺh`GiMS*/D6%YtSap^^[ug%)ffsd՝.q@J|><v=紹?'7EGX慔ɰw`Ts1 >tOQvq>Mws"j}nO>t*QXݜ7gz>Qyj5c/?C]kqG:Jl.NJuÐ;GN3VqڠZڊRZ[ȳ#lNOjI{;0rak_Ơ/+l|;V{TL>(t+) rA27:>:g߫!RO(>+WͶ"j}f̌#MW_Adp:ʹ=~"geYqZc@j8Y>;u&c7GmԍGKH'GQ؍SCHYjR6|IQ~\GJAȃ:w[Z覺YAeV:5^~EAr\߻yzvoKZuܬJMkMA<[(BNΏoK\n~-,%޴7S}xڲD@ 9QΜ؊6~}[_@̏\zhۘ ʇGJX>D +wocS78A`WFuY;}fHNWIk31 +Ԓt$UGcHOrC^\|]s| (YyS6)PdT56g=eH۰Q?-9uX6}Aؐ]^M f5  +@yWcߓz麼ES5^؅'_I-EkѰ뮴k8*( gvIIlr)\Vl!tT l;`u߾u0~`~R1KƸ‘}2r"""""""""""""""" 0:yNՠڄ)+ `Iyz5]%2VKiR8'st1hEN-uArsNϏsy M#6,  1.;[ +F[ +;o]/pElk-Ih}-w4ڰ}c,w~_/Dƴkxuɛdy6Od`R21ַՂO2i?r?^=s,`ed/x r;K0rNt]lo5L7RueaԕV,Uc+ T-|dzkdɮRUR2ز@y:9XtfKKo_韰yfm4׎QTh*H>vJثˮ6r_ A$kmb3 ~51ߨَ/R\{Q˶|~WȮU/Ϊͱ@zhK}Wpl;Eô`Gio٦̱,=8}Dk'b^JH>GGcco^mZq^Ll+Zs^]Бft. je_cb'"l*޼H2oW fjkǽ-.vNMknޔn˖(>r~TQЕĵVemUȮe`H>N&X(R + 3=K?I&{^mmUjuA;Ae^#D﷙DDRxJ6K9vbv̓a2"R+UbFϙseRN%y\9pvA =AFAeK5aU\`PĒ{(~Cze槱1*ץJ60$~l Lc@gg#dM݈goY{RX5Us߭ry( ǼȈ FE}B8-bgdΆ-lkq68f`ڎ=a3+maϿEug`߼D˱) lt; 湻^C^7+WMu* fRc4)_,;](nFBc:5c;2(U*Jks5M"""""""""""""""""""""""""""""" ))TDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@uWN0^ј2B-`{=;HDDDDDDDDDDD@MmmneXcPOߨ_4:.Wȩ([nvp+,m `t6dҷ!k>TDDDDDDDDDD@ȏ迨Mߝ1~Xڞ_cjzW_e?~Xڞ_a lʬF Z}u&-(LPb2`Ę lظ=F)T`W٘ ="z{e_0K{4>0^V.=yl{^vYl: ιLfp%mlזԙ~[eee5E<5e=af>}$DtDlzkg6/*T:IGl{KٶSq# KmGʢ }O%aTlۑQf#ܐ槱5nSt<*sE\C3i{Jq:o=N٩bQmB򱂨 -JQv + ,Nɕ#"7*Ur^ F  w\kߖ՞&EvvFV?ԗ"["ecd:$˒-,:`pt b׮D 7+~w%%N\]r7l}2 $ $ju,V}d\p"O>5x|Mk؛r\T#Z_IK'.$hl}'([rP ގ250UQO`ՃwBXoGGD\DDDDDDD#z.ᵿvlNXi}olJa@#*k ùeqT)]Ź=V=n6{EnwS3X6=`2g ET{wRL{yWmc%F FHtt=tejV"]_/K +YF:=In7k[;7YWbE +^֮l6HUҼlLj?)8]Mt[OEF6z ͊q lD.@P ,ͦJ;$r?P󑗓իፏkeQ֡[_\][5&%4[ezAz:=2u ǴXYY?*2S;:K_{qE'ܒ{pGRޏr2*OxHvA:0prú5ԛ<< (Jğy)pPY@s=;`Be6-4l-B4}z'_\:uؙZ;l^inm2bx@=c8Go.D?_NF{}aOOb[tl*ifn|{S+\1u9bZ0ۺl藰p=|Lovר V-vR{BOѝFK:Wb#i0,G̦gGVU | zȏg:jfu{(eqM g ^M(7=LΌ. +$ .Lg R8卒g(V?%)[Ux f G3YҺgPcr2rl׀OVXv6å2 RV,Ŋ I3""""""#p9J+]N7۩2خvZԪNΆϖҨ]V`l(3h[r'Eݔojdse8A;w}~9E4 +uVa9u;w;c$ Zءcz0:O:s$qíjB*xy~%@n'jkJB׈˿K56ǶQOpYAojjj/ɟA@˰r}ȬэM ʛmu +{dJO^p1HJ[ycټwom}ذkHtw̯[߀O~MoeWT˼TaQ*MɎoW9};ʑ~y~W:5kQUλ*$,|VT+FvM%j] ͘Kdk> .:v?R@ 67os Së2G:֪*(ҨH?lʨQ[[O.l bRR/hfP}[z.Nn5VYG2rBQ?<(־=Lh\M>4lw&,Ab>D{Y){Y_mWgs7_6 %t{=b؂Jv7}73sTԆ{:ZV}쬬z~OGlԴ"P}hK1:]t]@5fNgD ok6v"wby$Jtnv_9=/3a9{;59|v1=(_gMZ5;k0*5J璫']/s1AmK,٥FE(veiY)鷒-@ +*ChtzV.Ro懏ӧs$m>]1ԲpKQR{ ~BKDDDDDDU YHe`} .Ȁ6N~Ҹjc`׈le5ٻ!`<ziƹQCm{'_/zs/ 3<2vH~" z251Zo gpud dOT5=tLZr[-+,I(fNo36 +`ZOR~p_'$̍K Nfɳ*(^.ԛX++3tlJ+[8-dB+; ?K+u lWs,jFu2fjР]#_j{k]٦OU #`-׉Mux+ZA:q/LjpS,Ae÷=z;u^22r+Hڝ01\jQu zulAr"""""" t] TZ}gu^ޤʇKwt˨"V +Bam~zhr֦}mNMk#1=@o\/^ Q_'35iZeo?&8݇e+y58HJBPo&U!NPH-v? VP kgUZ]&eJy GL +2bYq;cVEtŹw\wēԫU TZ{Xs"MgLZ֘6+\߯Yr鱒-Q8^Rv; ׊b\lF~^r+r+z*ql x]/]M""""""""""""eSapiMqFka{öc4'ԭ`AȂ4DZb h]_l}2DDDDDDDDDDDD(ũK1I$<&QNbsu޶o[^ʎ/)! wvȯyb~3#:>u9y՛ŵRA]9;GȞ^FhpUM]-8^g0]u,t^n/!Y2з +ٕH44 i)V*`m(2nL[R6He#b,$Nz/ZՋ^}B3@/']U!!A,]m΢ eYA=0:6&]XXl%T +UG"QrLt/cU,I$&Wlޯm\Q*^X66|o wжFaԸ_,/0rv[/[2 Q@ʼF{ߗ\܅  [?j|]Y1r^BQexa63;ZeꭏT2 ԳF`cM`V?ĝ g[6( u.Į?.BC 1 r8ڰ##1^Tخ7l WRʲ-Ͳ>b ]637'C:,z+<[I^]6O&ʪ]^.v,Ft%VR˿-v$^fVGRooUx[E{l}{1.]=22J/V*8.u{C- jXtYYA JUVs##ccӗNN+txm~#.2VnKtƉnxUWNCgl{M zYHe!DKugRZtK/֠~UP8\W6zN67QfZn_zwBgkR!~rR]EC^%կwcX7W>`{;'#bT[]*0`A2F˹[/mvmtQPYo^8JJTZޯr\=c܃#HN[dp[X&~7RPxulPC(Y<oK!Ð?1K˺xgseyr 1NWx6Abk5^o'7(Tk4Z8On dO$sr}XOlj.DZ:ؖSvhcn -#PG#{M6cSɶ]gTYNjVv}U|2jKh:+ /h}ҫCYH?6ߨZ` +E|BvL.wJvEe.h&xv)b,[pOmJcЖVi92e#x|#z'HzYU hr$ykZӹO}#LS{?D鸩n?NoP5MO[ ~]6{A3v@V՘r 7]Z_H`X® ^*NʿSxCbV/X+, I uG:k8l./afkTD>2/B)l%ym_wֽK=-lbQR Y!`,=֦0-UPk@<9ukgF wpؑ9VQгqPJ6Rl6{_c#*~WH.5̓c}.qGV VV‚(y( GytOƚLjLQ9W`S 67hމ޻Y{MAuR~ {Zv=t >p7Uk͸nH;H{E}uc +0Z\?2JVik2u%y>crk +OtwKIe:&%=C+uگĩҟI|nzWfڪvᒺ]-ϷpgB`u\Nm!VcqgƮ C =k[]F#a|iGTNu?'oj2ܥTs, +;#)Yb MKgH=+Q5n+NΠ4 EgMnGV|A~9R+K3!xx&SX2Mkc_X?) Uq|T6VIkEv-znL9?FEixm5(PDEkv=5—l|6e_յỏZrȪ7O/ ¤$2 +C]Lhphdڃ$duQ*wɻ: Xc[I |RwdQ}kX}PXe4ŽlZzD6}v`wqm~cD>>ھW +Y;Zς.^"HO#KZ(zטқ\DD@(Pj+ `OijPP֡ we7~O,55~^^rp۝u"7TU"R)bV*2 /ӱm^Fiإx8`x.ט)阹;7}k]v9(m-9vQu5)KYO`FXb2tVUYQCN >x)k{G>^~~]=^ V:`p>NYrg"ヌ~˴ӏíSqP>[:21鱭J] +=8Emgr(&M4׎QTh*Jcat^_#w"z MU=VH$`Jdtz ˦+9o]1)WDWp+PkZ 2nQZbtď#1Ϟ<4wqOH+>c0~ZӇeuS<4GW`)Om +iZkQ rcQqqlkjvkUc̣aEhseب`(f1ONF+E{kFS1bǩ+/Ix J5!IВdj^%T Eb;)xלΕj>5LkBvұ3,ݓ\Y4v;s.Yã0}I`SC~#`;\/5! ִ[ӱqK ⨪[?MU"VymǮ_|l ȃGD4J؝LtQ+ 0m&]oZ;>DZmk";AxM5u|-}sxv-j_!}}Ѯ^z>xY~[-l Wx<9k{Ir&.OK`c^s=Tcci{EEU;;P5Q#Wp-kkzdtlERX*8~֥ +(@?ݏ^@WL-zr.uUV +S1zysJW]NZb뒐č%>j@b˓Kؼ"?aȮxg߼'VzW)V:ږPK +2V,FS`>7뤌 ++VXȞ}wו.3W+`gٶ{详7MY2MsgZk} ȍ6~NV+v,-:] މS^t<˫ +]g `1y*2zMUxJm"6(d~i_#/]zLޫ򰪽jj,5`8[C2~^Fe;)ZX;W]GyM5zW/]nutږ0P7yo-yoUJu+t.YD}H"Ee+.:Ivlr1 +/‹fy'~jnJ+R4cds,0!}$yva+*Sb%Hc:] R{,Ǿ[[7afGbH(wq&0Q@TrP܀>#|&V{C) YJ;;v zwR+2,>+oU6}}d]VCAKO˗\˱;xb2ڬb@Q5>nlma(a1/͠}ܒt} ybQ :o']0~M PWaUWd+rCtpt_ט^_&nuKU5VfzpiX>+5f;V>" hi6+hu-oSCY=;Ӓ]W佈rt{A }sd]_'?S]$ƘK- Wz58<]`>'@u>[*Wc=ͧU@˱@mu<|MBn~ 1$ + 7oIՖcSP`__`;̴YtӍS!mj9Sl1 #^Gſdu\lU>N^ߗ; +)V(AҀH;נ~,ﵔu5lF[aj"/Cf%쾟ZeW춺^Ueaj;G{R +p^̼!K{>\}~'fWܫ|scJχR1jW0fRkK>Ym|'#J=V? i.qjA =~c֬  2ue@/Uwtjv:[*l|+An,l>]Bʊ}t# +E@aN?I-45{»Tnݻfcl꺅پ-h-!A'T +MjQA3u l0UesO.=#{?8~"R. mvo$s^qF5, 3w]~RzVOued!U_"G,/Ae1eRkl)DPT(n<$%n+cLq(-ws-:nNnFU.H،̥lE X)ڕ.r.NIJveX*$uߖ VXgnfBG`гqk9jr}Z,nZ$zL70,TfHuUn׿yM9-1S+{a޽#0-M)^В +:]xG\  +;|DdqX\;;閯o#]%Zs)5!I }]kK ĵ;\ +=s.xt7Rjٌn|,{}O-cdOٝ30Q*]Kɴ(}{KǶu.u =4dJ<|=)Ѷ o?bgp>YĪڈr[Fi*Tk{{͌ OdfGMNsWrlb .˥`yvߑEu]8_Sx7QCZ )< 8 [' 7#3?}ą oLL~Өjl9 ]lPScv +w]d%O e&vQ$'+hr<?G4QL3n9TFԀu>CNfed5  + ¨t6w([mER.<@J@h]ou+Cz@DDDDDDDDDDDDDDDDDDDDDDDio_wfӑJ;?>CzHѮ}lof&u4D@,]wmHyoz>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 59/Tabs/S/Type/Page>> endobj 177 0 obj <>stream +HWˊ%7Y-R*<LC0GW<$ee`};3%"Ns>o_{E]_%x7?Vװ]>xU)sY.rRƇ*56󃽦_'oqke෎|\ GLٲ7 u*ki-*L5߾]-(235X򲴪~ne]sW?#9豫ϱZ\e +ۡѽ[Sd/9/H2R3`va=5nwIzJM +ӡS4"cTY_X2B}*W5W-j^]q ty0ic8LKv8U'0̀'NXU$wZc%]@A+K+:BLOUS""V2 +j|y] ʱ݀iqC`Y9`?*1r{V<򨰅H[lsfaXv)bLYݡ?S̗nq_SqITQ/af /YUWC\Xsn s:SZqU>(㎤xq'б7Qvsߕf ڲ8fN//"-jd\JzwQCHqXsHKV]QH+s|r,Y0!]$ĎKƵ'2yB<-#O={W +`i2&('V&_L~5U@8A64Sf|J(R|(Ncjn~ma|1ʕ[Lj|-so lYeIr.Z0T<^|a׼% t!A +}k kJZvX&n{װW҈ץvc7P= '2+RdѭFGɄ9sQoi觥L*)@^llʠ;2b!z5U/diN*C,bi{=!Qa1ݑhYDZ;~V^5+L:/9( A y0}xO}6U*4*T(?|fg=gv0guoo=1N&o 7.;OڨKRZ6߁Y}&!#@# |(b&+_B2*6̟$S^5SI Hm~Z~ t (_*ɭ더ΌږzLj]`+9 8ߘ]v/(q'@eFs\! pS6)X*ub*NN9P2Xb8YTt#g> lB*MRSӸרsGd|HJPC!9܌ۍp\冝5BdN Ȼ#IC)+f"TRĖwB"X2$HzsDz>gd<&.Qʮ3Rn#" jd//zYo˅0؈Dp'3˃1Z5'ƣ$yts`jԣ!tKnĈ0B;24/()y\fᩈ8wH$3oQ[0lJ`1j'ѕR:)<=6&egxuXV! CJWJehg ;޲ϳL0H-tnؕ0hIM~!y*]wmuKzQbF/\[Jt+Ty<^{qu0vQN7qŹpwpVÊ+SËMQJ${x9Bnީ>hFCZ=^?~cZWuў9D%-$d&7v&1d3EdӍpao3% \D8SQQQPt?[ )pT *v +IMɁՀJA~.AB`r s֩ ;s =)Ü h2ai֢>N.]J4JnR[>SX6lEghSK:6MY]f'Iy@E0Ph{<vNYBpFE +W%>I_}LC'-:+Z/۞"*wJŊD'S^V&z6) )WYi&(a>?*u/*MlS\Z&2nx?p! +M,G[TXҗnssBĢ39SUw~8E;]y +ڇK#3 +InuGZs܁Hkz@^ĵڌyYZ{Uv3Cg?TF  ʸHWT᪝V)Yk= +7kS>Jx m[y>}2֏PVf` FYgO&f7L2 +*lj;rrto <ڪKE]{G:r2%1T3kASsZUZDW1S.H-U.E©;IS' ʄJnG\͏o)qzܚ9Pl`b"k_^~}\|5媛Wݫ?C:u:dۦSk/<<5|v-j +endstream endobj 178 0 obj <>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  + i!1A"Qa2q#Bt3R$Tdr45CDSbc%u +&'()*6789:EFGHIJUVWXYZefghijsvwxyz?_;50*68' +3ʠ|I򚘼õ돓;[`;yK/{>;޴1[GI + yugҗ =Abȯ 6bl~s )kP z;٧*ubN?fXf +6|\3A4؎`?`"JQuGW̦'z3 Y彸R\Hu6Ն$ e?#eMVncEMl4omS'W͆a+ +zNU}8&L\j+ o[G6y>c+:,zQ͸ܠPAҞǨk^}g +c]խ[Z=V,ѯ}#jqWYMjjp<lՏJzԑ/EJ䚝F +tA=g¿?A@<9 m.ENHX +O@Ƿq멟3ڳ[FZk"Y4\.~W0YUud`OCMA:N;;TiĪb2㥾$te_Hfzʡp Zo{y)e6]S,Ҳ'CFODDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDC[J7嶶P #H?onYxi9+E%iP` T3? |7\kJ,kYqd@GIq|m\F-X;?ImĎVEOInPvdeScJ.VMvDeuJѓl<33l5௮|u +Γ|0G!m9_&qs(ʾEA"(qmk٘\o+x }ea +kUH4ZvC^@oS' -m`~O[acǻ+ʨvRΞcgfaQWRJґH;$1OND{WZj\\zp;~C ezd:a2N@#dtnɺsK~Ū Yu6ٶyk@lŶUVOVUZ]v-Ȯsv!6*+ٺʒn5-n9h*qM-OWWRwUo^E@z̼_v.덁E}I|(?'9,kq˔RaQY^^_M97Ҭzk)c0`HJ n5 2e 썱:=RN@ iJ3^Δ7~^VEr1 _N"#xRqUg%ʽRuH nsB0Bv;hoR#y2^+ZtF^Nv/1nj +]NCJUJӢCϿiQ̡me0z+VCPB葠{w\rPݺ{z˧zQv݂!DV 0#`?xjYI'@<Ydey|)?_!e`XhFeW9,o +?%A]޺w=FV~>OjWt:.f]n]4'coy*NWEQ-FePX}^u }Z >͕R,lV߾S[;ſ)B+!|ϖpyJ2KEXsa+u3vܣص@I:|I3.v>r԰Q~?gybDK-*yﶵ9'ʳ4 Vq,V~ZTaePɕfE]lQ%X2*t~2R|)Uջ U՘h{L[ +:`$vq-u5~(u)=·}]%C ߸Yro}Hduhlf=|t{K;ΞPN^zgrCeΨ͙0UYX]JX`W_j[FrԱA([EUUgUf;2#fqp\=wXw#?ROU`N{\I+ͷSWzuk9G%*d]X0i-mVʵCIN}fQ{faYI̢@Ie^g»{kC0@Kͣ*7I~+Njubؿ`h)<+/LYsO$Q5:Ն1PɿGUF-,XE >K86lJ~{;o!%#cxG9v`Z@VP +ߒ6G$=|,zX4keo2X|̎?;5Nx̢wX^y~^ʶl^;.*G}|M1[h6ZY~}aw52,|\^6W]U1^K2exoǚ"ꐢv}( )cU¥h4,ҏiKjc7>8Oǩ{CMVx?nT-C˿sv8\tƭś5jP)&z@K3Œ;?/^& +sqb;V^VPGJI'J=?!'_''c^jlyI}TEGGwޡKv~C`aSGV*N[o]?NN$zj+ ?x}o|`N3jlW!1ZƥnkBfU;#d-ks+e,)/ ntR>[=):j7 MgKIz+-㹵^CCڔߎJe7p +=zy笽3y|XQJ^moĨnUTjG7Sc\V|[lEdʮ7"U5zÿ ۴Wv@ 4fصe 57%w:P hq7HRV +Jǧ~S?ZCM'^څ,t{w={ TT-][g|&nVmg=j,tϤ>=\;BEL=><&\M ԜS!u*W^@I^.<>KʑEw+Jho>#0䳗uU{^4'zm{$^1ܩFv+ۿRYKCzi5+(d[{Ez-h t{kH{I7T1^ +T 2}~/V.@WٰSL~@Hi8KJru8(6Iuɟj|L.z)Ukhg}ŕt4>lF; ~. mx-7 +tVO~3`g^STN;nSAVթ>dJrƜ1A2R;nPռRcӝ)!~xW g{S ]uV߶u)_)^wg8,DZ؛,K%}'g=D{RڲqoNJ y]z͔feP q@>>3Cټj[:V/zͯb8e8 x]df[[^8 Qen u=qK}͋R^t?.Moe,+αN(ZdzzF8(lZk lp)§fV|flJY}~'~-KUj# λi 5;95S(҂4E@#sc#8+.GR.'6xRŠJ}kdK;{?{Z+tR=/kC]Bz82qrjRֿT=}\-Nmq6:y+nc_^iIF; }CJCgɉ=65=Af=ל5&WC/em'dkLh؄T+,@}-1^^: +{:_yUAIlv%(dMq6QfloGSy)̧SV~jg0*a;ֲTk˷Wp=1Z~mW^f\<*åzWd$2Y$fTăGq4xlN5`Ewg1U6-H-ԫ>k-ФzhvqL+ j}G$~Cm}e1|\K"ƙfr7Ij~O{'}9VeMMi kas"0Fu > 7m0j' `_ó,f@`|<53}Ll|@^Q`_` 봋qS|lׇojGы+k˾=jvt6|9!j}]Nb +k4~cw ȺrmJWzۤFRFJԖRwNT>??9o X6a$ց'03XU+eg %~{x hQKm_RU]ZԖ* o9vOhՃ +Y,z#Mg: +:lbFWWuxՠ0~$÷EbN0 +o .s+fB7n:~xA]eU: kGJY%/@jBUvwoCZ~V*P'C{?O !w{kD|׻-8jv) ?=/ r>kK 1`>|o36a]A&ϩ'Ls٤3-6uVwc:1/> <yF#%N> +ԟ}vfgvbXyw-\N$jODF5O|t@nԠ}6;zLy<&]Cw@y +@m|7c'E:Gn緗)\fC-wȏ{zI/αlUmwK;jylqn(2h̾.C$2+u + 꽽\Q۸f1,s R[Hjы,uy-볳xҍYԯIƵ9gz ٘VRğuwһb56Gzl ԑ30ϨrS`;F@hYf||sEe].zݺ$3Oo=I w|nE&ʘ ; C;IF,C[e+C{4Aߜq1YTݝkqX͙Qk +[RzO{3Зt-> Wu a=ylX4= Yt0c^wYaRҢR1!}OnշUzz:.qxwǯ%z;,A'g7wȔkWNVdv4tArbVNbX{ܮFwk[Hg$ߠ1p865 lU 7n;K/ɫ)ݵ VzGym\9-d[jw,=>p_@,Z$9o?Y\nt 6;_P|#*Ŝ35I-1# .쩿ܩ$/mð17/׊|[Ib=v[`ǧi}~׊kHX%{l#c^FV ֫+ aIfw﫫8եS\ kD'Zqj©)"(UQ<"}Ŀ֗[ ҧa/2_xR<;>%SmsIb`DHW N#bĪxzWy$=ebPMN3k1!lz۩YeL7""%5]'@lkqܥI kVVBu4ۛG`? Sގ%[FF !=7bSY_!mc%Z:5 IfpW'E6b+3)V_tۈH |~MJuQgEޢnDDDDDiQZ͒FQN;u#GDĂ=ƈ$V""""%:舉{XJf +9\|Fu*AA#D)p+q[du):#cfy:H:eSQ3DDDD@<rdg]FT:YGY*F>Fh5}b˺9NA +ZsUFONJ{[ubN߶֥osW~:k$㋫U!y19K?5UM"kffݺC{ñߑZ1se:]l@rHn~^r2 -z^ʞ|?tUf d>:0d\_-3*<2\u whKggdWB1@^o#5~a2oû6R]Dz:;*AS>˺VOVww~_^xԬ!ck ,KDυc17pVO-Gaǝ+glN +Şn:%W_.yߥg[tmWFl>r?-?(]"(w=Iܦ^+SXdάYU[cJvkXh*9u{hU u~#^j/¹S]nZC$@mY͕b%iV7Z v}<{h*hW4%_c{ñk+ˮǪ-^ +{o}lYYia 'z-飾J޾H-%ߡ tߗ6WV=o::׺g-yƻ5,e'+`OM|.gЍbigjۭ:wob>dܪPUJ%lĻrttH:*/F5J'dǟi?FLQmN?MIa bIqy[oeFu$,O,ޚ;y#}[cTROlkaLԟG͢{NFO![*t{-zٔhc܅:'{UR@_-y^8#VK(b>ٻsXRYGC-zkb{Km|&+1@>`_FT{P.3Jzmb{șZ +]?q`= N?܋7Un=($~{EQM+6zHU}^. |]+]l["eMm$Pm֭Wdy͇4dxl斵z +e*I*AyHFgVZ:VUm;'Yu{ǿ}R'^Qڱ\=*:Z˼Ǎg挤K +XYrI mh͚9QCV5:s7[nHڔkd-Ӣz۳>C5雲SZ{ka9yc*l V݄P8; ܟ{_j/):_!tS+Im?/(ڲh|w9 /U-Ht^]q9O>V=*ط[]o!wQ9G&5Hf>0ӠH;)M㢯UnP!QzH`02.nu0wSL>eV3\*8P1bOx}0=:]Vjg^ݛ71(*"sQU btw06&mU2de-ŧ-k^> щ;#kDwib~6w,A?lڣ YZ_AZ%u)=˸|\+lk$'}eߊªA~G\5v%I%0;R+H|I>'cxgx־WH]\բ56.s>[LʃfQ?TDȧ _k" f ![cjNLxnmɢVd3B Ta}A|lR6:ɣO9!NM`޻w7;+,h-C֕t:vu"LԯNoZRҸ#b Vf"tc26*W%ܶ1!Iv/YGkQw{W`F~HLl,2ڠ)uۭ=_0WR Ww rM{)jG{ЉBTBlXҝh uMgmۛBP1eXرcy.'~2@W^LadGcj!92ّe YM"Rt0Ux +]Xf,uy96nN5Fu65^yI=)pٕq+j=~~:+%FS8| >m:XYtw`v˱xlx+xekYtԻ+³Lj  Gqw#U:Cs8yN΢[ѫ +{y/+*2mlO!<^ZQSR-K_T w'n'_c6+ԎDl|fN7"BG!|>+ R\+lC~KK%z*:}vHgS'/o2A4t!QCruI||J:\WeW^Eq%^ +Bu#~čA#%pZ)g:*]P>˶#Lpp_A +FR΍2!o)fv&vsФ0~~6~]礐-y奈rh8KO֝9};}yy>9+;VIzZ?6 HZ[WYbb $oZ7O$2qLp6[EEvNOi ,J9t.tV*NL|jHE-rEw[_g9 {=OSUpΏKa&9NTIOYC58l^CK&i@[V4z>d (7(OP"LվaIrxvn;dc m +Uݸvef +ç=%T5uE_h!BZmڗ{=`эeEaԅnnN 73=Ll7xɾHLNm,}ߪXgԁ!8YpyZ_}1toBzHןsZ7aŻv kedذS;>5&s / Yq/6NxVǬJt[LT1!Wb{`U+0:>mR[2:kJqҍԽ!S7b""MJDDQ+)+)YMJĤFb%5MFbRVR5Jj5MFbSQXIXk̭C 2"$qru><OrT Dj5j5MJJĤj"5H","XX+M#Ϥn;Z)mv:ק6W)6Y|Ъ ="V_9'z{F+Rpn@C[לB{I},PE6)N;D^(޶(&]%ĀA GlRD5λISb 6GkL@@.cb4r#{&9vUB *447%2Kת >*AHg2ί!Zlrwq؍v5We;Rbɋon +7llؚ`aUNm~:#"zG*zܔ"pzڐM;[rR6l 2w4N%|U ӱW]c p^sʧ|E#}C_or/lB .X{or+2Hu|dOr2+$/@"λ )]6%wWw`6@UX~D)|~Mxk.0Q6u"=kƴ.qсUpeY|`1mɎ`z~/ lLtՐ :=,ñɪeWRT2v]TX5y@Y9AzTR@xto^We52NW#n6?'@//#(WK y +we5C>>ܵTD:\PؖfH:_jqܥ\G}`wؑẂ-Kttos`dV\z^^rzʫsyUZ̨N h4%Y`{(S7>nW 05VI`TlC|Z[W##E0$}_( |AؗMy:˻H-RV Z]y +3(1,J:/f riX8;b@ iFGo>E3U[zlM|sdzXAiA+$DUxꭃ jAJ б@+8{@?g_ʳ/ǠP7Xk7"'llkb ;!*/z>uJMe?l?ǭ+dVĀܒ洛:m$l||4'X+Gtd:F!q&yCZrX:@ 3=^u0c6G:G?l?j_B㑟fV\(T?J1{}ävisSU{'Rfilp9l@M]K.%-M*wm˃Js(J5uKtGc?Yy'U3D J#粒ƌT5}쎬S㷽w\moz^ƯvڵX V>Hs1{#sU{ +F}Z%Txh쩽I#y ,rל{9Y +:@ÿsFu7Yn,~Q* R_/0WB$^"iԶbzH~W2*uM}{Ic*kP[O{y3Ū*l+1WRC(pv=n5Mj*ztOons,Eu’:.<ʌG~>RGxnG8UxUj _XU>^cer|.'+2kc۩=OW<"w.+ZVv%XGq)vOEW;vZVEک=ʩmiXJ鹨@*=zl:Pj3 &]Lrկ?uy[ԁZٹM~Ƣ +7O؁Hs7qxyoKj[;u9o˴Sr\}#BtQ=m{yV$Eޕ.eUzxK(OgE">nRnxKUmlYme׎,6ִ6q)sGbk}ٴL;/vɡpPVd[N;l Je#A2QUho1ouG`+GcC@G"6 +7eهn +T]X/t߹sq5/16sNBURء=HL+p-nGz +JVBJ=y6ptXczeRAD\>R!0 hk+V Gc RʊI־|/'V+>YrWR.eQُJ9=$`MRxLjr(ŪUe^QhRWDdj㪲Z#'Elu (CScq%˧F(~U.xߌd&G9c"J/ +OѲuXN魳Mepm1֋v0!/Q}ܞ篞[?6-b%,@# Uq|DZw`|:ǽq "Z۔ Z?))Vw 2s:po:ΞA$8%| +ZYv9n<}^՞bs>VMA]%U|6*={=++O)iA%,N;#q +0%&q߇kxGx k§ ;ZP(\k{lo䰲_B+˥BP^)*r^rm,'}nt ^ƺ˚aQ$-|DD@"J_"ԷBv6Ʀ*|7@̤[`=bøxn]]0.A'&NGMG!YMԄ;Zҧ9No}t}:޵cƱٴXOd:ܑU +@O)@ @v@ѽ;C.)z`EՊu0ufOyt{P+㩉SAc>X> 6֧}A;|Ľ8tla[]oZ0&:ܵ  u6V|c5f2aC_`O0Go@+j=jBؖX+ԧdz_b`n$쑲4[D먎żϬa5#UF8Zvє1W *Jzv +mˇS{B,vA]qxcR /g'̞v}75|j429]_{Aחk8JlWTT[9U; +~|3k*U(Uʼn$I;&Y_#SSoWCyvBG YOF)MGZVwnk)'j].^pmk|.IS|۟sI?3̸d)zz%.0mkiQ{#zﮢ nGx8z֌um'd>wf0 ŷ]hhyL|5Pnoñ]:}w)bad6UhE]˱.mԶ `.zoV k\5cxŴZ|>? [W+9bvOOfڶ$U# xbUYuo}@Hb{zLrfv.;hVG>pX-n#釢']#~oI d[#fMe+ZM}m5Jmﳱݵg +6Jn-b/%ҐF:>#u!iwTp1==vq.76:m`G-,U*ƻze{?B܌ȯ`%CNWb[K:aM擄c>qm&~n=zw 32Ѕja.1l' ;zkӿi}ki涖&YeSf%?ccA:O[-Vҕ{6#3جX|̻ é'c|v)WFCd"Yͅzѳz#66ԄYy]۫]f$v.oat :7P>^_)/ʫ.cm_ק㠤[7"Ffȯ÷v9W]knҸ8+~֏at|$w%gRFB #ZGwS+\275Q[GvZrfːV+/}HnW̮(SGjTo_>cKټ74:}6Ͳ0{̵ebXia@t==I @vUpԡ0.ܴ=~* ;֎ּx>qsԧw~]m bpnkOOuI:zI9y<;3XՐ׉e~=~4ZړX-u[ZunM>+keaU X_@#36Ē4{ekb UB>2jKGY4+o}Ap7{2[Qer55ܠ@,F~6_v4(;;|5/۪SeJꡀ ۡ0gpr6u}TzldH`Ӵho`m c h[r3:jڥFڧ tm5|)X=,K;1fcܟ1(H_9+6/k^:6}L˭JrUIb{?ty'zr]Sh va7%iN2Ynkz?"%u^ub4tGh͈HԬDDDDDDDDDDDDDDDDDDJJDDDDDDD@!̷  +ױʠgt6|CFE[YjhQk$Ych5Ha9K+W*SI Mv`{mJ6;;vF6U8zZNiW!J~ea꭛J@vf oAw=ܭ.bֶ[=LJ8_m˰~c㹛 +2Rf>Et﫧{Q\ J[1I_ +ynP +0.7R]6~xRZs['2M:2US VNGMy hW=a^kDziWr99xJvέmB|9ښr[ڃRnx} +üL&ab _N,No=_@k֮ew WAJ]M.Ah9Ob;{v׬]ɐ]X] SIEԪ7Vr\5iMRxkA: {f&&eX\or2gvCh~+wg!aR)nI>ܗJemC@o.366q,o'Ű +B;somzƌ˓70>'Rk,OWVk4i3 k_ncTWMa <fe4YkIPiQUXMſqjWXX:I+Jx|cr +KƼ?}߷I)`bf`kˢo~w>54; 0=!2QM|nN6=F.P + )%W9!hJbf%v|'G H +u[|Εe"Qlu+/|W𮮀Y;Xw~~uvG},>]%IA:<˱zw +vTcu|wY6y Wa/ t{y [NO!ՓQR"Z:C[wO#)>+Q5_]>]o..l)1g X@H5TOr<ϗf`9J^K"rv"%,Ʋʃt:۷2SVrqrq~rٻJ*2hΟ>o췾JRƻ5xs97%jƦkrc~Y3)5Fe5+)+Fj"5JC ns`Л;fff;ff;,OlDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@!NRmIe.$n)0O?Ilj_)xa渚m|v)nHV]_|Mr Ui[d~˸[d~xsc]ŏ]컊H,P,Z}`ˉI_.')CRPcw#$oK\<]ۮeG<)keG3 [+37_om8tQL~xo/Wg%?f1?`c)Oٯ }-?5ῒ?ND1?CRP{k/JmQ瘞[e۞ux_nF_,²߆qbe۞1Aeɩ_J6I?& Nw7"Dr.C5n@`6>bHDK:S畷-jT;\"qL\\Fy BrB+-&!X.쥻//)%zIζ $w/On~#]? br-VPAcͥ/\bX̩Ty(L}\X,ud ՝xܣhbg>h=+%SNu]3wl|{)m ߙqm@6ē$jciQ]^|#5;oZPk2Ϩ[IWFޘy+T#d) 76 +: $D݁}*Zu&qZ}UP[3o*Հ 2O({ˊ@%~CJ%:?@J~*}%@)7=mkIG8[J-L~%V]sx*oVU?~ĘĦBS<*f7]?/j᭣ ވmw=g?b]Nn.ARkp~򙧺.~ ri(ˇ~?8@XX'7Bng$ʞca^]eG?ʘ'?Z/fzWZPYft{[ Ky}SZı•`Ֆ#jG Oy"yJu,.ognkH {.5AXaCp*Ŀ!''ijz. ֻM~R`Xme_}Hݷ27cHmt;~O*EpҔ"]0Ak˿mK7ۅb*ܵ%N4{d9.?驏X׉x:::nl~!10 J́H +l_-z~^\zƧYt(}lʍV-OPcL5.E_E,WvOE<%0r?M>:#}?eU~Um {${ؗ{T`^/g'v>N5vfAV\v 'EHZ!luב=;ەP[Ud+RoBHקcp\Հ2ӌA=~QI赡#[1i[;z$fy,5We4}$yw0I޶[]u•kTU=w^S9ͺq׳IF]oU΁rV%uJ}U};r6dSFOIVێ +#۩L^NJW/EVxe}}`SdG kQeX)`ڰW$)o2i krU|4'Ttu1>*>o+%'߼={˹Dzʺ:Y#3^ +rJkc"6:l:6a<2,do >;$}ժXm3`5G'+_[5%7U<}M Ր=f 쒃7%RFZ49ζ[*ޛu]G٣v]Vc5z +@:'{=ϢC}_=uzzPPͺTڻ0c`ER=={tAzV!n>w5 *@RmiXcfgƮd"Ϋ'GqM;ڡOQcCȃP}6={$yz|fFf;X\pJ 1ֻ2[Qd`ăHhcsX ++Xyd__J}#zu53nJv63826[fͺ⺩?Wv:|}:n흵gHfnq&z V@'>lw͚~8qGn~G;ngOjҤ5P'96cq wp5݃yh^?~,]A[V]Z>}:2ԪAOe#+5w8)i]PAom&fe(MkltzJee_jQڛ͏]&}Uܹ9ZmxMP/Nμ|Fm3Ҍ!e%{$_k;\Z]v>$|͌=a"==]ȷ(5%ۼˣ/5ZSb3u? )zzfo o#~*ǣ!YT{rD5='B*}ufUT-X +t맥Əs9ټ\tU բ} ?1 v=tҝE--={)b(B>cD&v5T֬*{|F n3,bԵ>C269&4YZUFAצسl<ڲqb@VWnñ9?"(B/pI'!7CAׇ֝ε=|67 |z vt 5+6m&erXQw6{UF{j[pRT^PSEmM .??|cc_ӫk^9M\u?: +:nؖd_c;k@K}@_ɀq/֛?ę-WI/ +6Jkn}30T'}cUֽ5[Ş*쵬F;(AcfӝZCSecKP+rvO1P-ZL սܤ[eFI}>O9+}kj'̾0n6w :׬j\J%}N{|?~]mxDtѥ$28Q1Q*\z<": ^s(+}?DĿkjȻ%C#Q0ŗ▪_tt3)^2=w.L;~FP+ë$nhSdamo!Q6O͋Yx#Ջ gGȟ^UZ%-cԪ}=]NB KBΣ֠/ace''eMRwYa~/:":C?~Yy)VrzMu/Vڸ ṛ  3A^V`f==ON36=jۖ,J nYfYTT(hgWl0[ní.Ф_kC~bдV_"`lJr8w߃cVJi@Dbį6O#-k M0ߙ'XYvv;/dbn_ޙU݌S`vBQ$r*QQf4SZYY?A_pY7CKj':r'3{ķz+ZWrZH$'>>M尿 3Ƶy͘)ȪJVDwח9,73اP{/Ϋ&;]e˱Խ?CxPrQG9kOCy.#ܠ"П[Xnnѿ,^VQӰuDnt+jtqSSS'Ew>~3=bSGQeD)$Jlb«9UnPX0ߣ#Iv-X5-UQ<̞Rn7(p;F\eL9X[UfXh銝|6;0jkZUm'SgBPF;ܺPlB{YXəYA>,J*Zj*Kk峳3ʷ8>@JC*=P|>R*GДF u. -'z+Rcr0\5-U:Tyn;]H.e޷ kwH׬I_$>i?{g'2YB]Vʣ{Lf0[>][#zzAw&0~ǽ^smh秧ll5O9O.CUYv?*֪Fcf:y6$ah=@~$+\ɣ/FB5u D]tё~dbfYeuTSb YP@s՝^Ul:,\OW1rXg!ǿ "Vl + T'{x^+KF.Q*{lNEl B#??{1x̹,[_bUF=eafXvV5{FK_En L\|:.m,>%l:;MM/dɾ8TtfS7(qw<]G̾ħWzГ'eb'ǻq\sMMJGO;))ߔ&[Y_(r/a*DR @*;ʙlDR DJkq]A+iW[9DLcZ)IC*J}n|uiv2?9M.?)C;J F҄J WWZ7Q*R`0%ݥTlw~$éގv<1b)e|.&>uGN˪m3iZYvA w=7ea2c'w B֎Fc'ꏛ_n0u _VW1 q;֚͂ݻ }uq8kjP{O+kVP1xѲU>gb= `{)Ļ5vc󬭛d'_?/z}#Vο0^COed4kQ`:;'O?|!mxy(jѶt[?OI#Ge^6"U}נ"z XK>ߝ~21)TJ#RjSRKcqԨܡPCw қSzVT=p)S]( (a}ATQ)e{Ƶ)P~2Q. &ױ=_""7;;Ů2N?M(iPS^~FjEMJb֨;P4O\FN5UZO`wf/?/㱬[kĥ]NՖ >ĸ&j^k{i"awMcv,Tw]dx[S +2@Q&l;A^MIj0p<~SR-P(a zKx\.1q먰(w~bjBQX+N ܇ ʲV=v6}f>=xU(UQQU(fTP\ 4 ><?oy_y(2YB7RĮ.r +.kR~@HnKS|:Wry.t gԡbST4n"7MPB K(/c"|eջkӎĨm(ڭ%=Ek.*lf5XC$[2e#k}tH] '_ȫ63[hVǹ?frrPIQb=lFÁN-MR]ej WٴR_-]}n@%N鹧g8~+@!mhS,=~[ܾiȫ:SU,IyhyL|׵x\,ZT8 #)W Po zZ[F&xmUEd,%T܃=J"Ʃl i({>cm`{E"xr rUeGoc )q_[WokDJҞD Cԡyj"A{_a|!ɮ=mL^B5۷o)jѪ {ɰu;LThJפkRO)h:eڔ5hr)OSPC6#TIJlR3jZ[r*LJo+ReAA{Vᇈ?+V?xI[}e=tFקű-tO=5멶{+cSwkbRPRyq:1^rpPk[-ywPJJ@:16};fz.$v@w'|_=ep/Qi!A5}wɪvեb."Cb2" Ė3߈)ffedt͠Ğ2{F&/Exy!r\yQ'y⽐沸^#)ku E$t;t#NMٓ*@m P%z㹟h=pxE![^$J$汏ٹWU[G%|?+c_%O1j:=hlcf$_tɝr9x_NlƱ^:({oZ{AH?c8o~h3v<_=~`lK֜lC~.X=XG﷠8ӛHg.:~>SlJen4 6߼غzUF'%5؏~ڛ[HR D\7,oJ(ӯ0=&V (} =/ :iF=.VM|zIx6ffZAכT䠏 uy5Eej~V;8P2}.;| KHX?tm@.ДԊ3;6:S.Zތƶ%~|fv}F5HzsT]u1>`=LcgҬĹ@ePARסxnWy#}ԳnGMwSѯ`I" A#9$NOh؂doyVdR]3_vHl +us޺W`n;ǟu)<]3F']O9gR[bH!N:@ҺvsI?ɐ^19QKu,s^]44FǔB +ңS\'ŪTcY E*GOI=&-~j +JdPud|Wo :w𼷳Tdv%v׵D2k (U;1`I죴xj2+PlK kqH|Rɇb[u $ a wןy񜗲:\pj>  0M;y^^Ījz+{QI-{2=8 Ų°dT +@Ѱ/Hՠ |nNE"I{P=K7} ݎ{9?Q`rFA^65ɪ9BJ㸞cosOkOӞ(dw,q7~la܎{yhdze|^uc~zݏedw1sm?Fͩ&0רKO{ X!ϼ@)|jB7o>`PH uט]v;yNi_.~@xzRZӮ]v5HUoW`t`m S; )Ǥcהʦ<,.Id$?mKheX@,H#~@ikb[}FRW.dl#(o,tºбM\@Hzoeb!CtubG߿e~v1^U˷~N751&תb@ u`\K33&|$J" 2&xxVq`[.:b@v~Rd/f%$voR/n1UVS{H ߗ6Z,AzWe?`4Ntc +J.dpF7#}5 T-s^+ ZI`I\7v͕[ӿw,Z~a]H=F/٩} "qež?E};~2m/4Nu'dx9(#J!z$3eT#X̠TnԒJא=t +쉂jiz=6S_nsefm+'c.؍=f Xb-ǻf@v%x_R} \?)= ^3ƧcPu$#cdo5Hd Cz;ԝLGvZsś?S~ns@PQT\uGNɋGV׿Ghir2-L;O>)YHjV%%e5+p圯1L]-Lr~:qk2݃t}@-çǰNeݏc%5-v_p\֕#EFU ; wKSupfZelPw^;#]2~cY}}wt;N qU%uH$2w7:Y`K1yafķ)rm}F<1܀[gҧOS5l;?B,h;?&P~Kp%ISH V+սYcW$(*UԀD *9u^^(;1}GS D}ФyJe{<3h\k2n*'k]󒊅Tlg۴VjrjruF#Hm\g̋wCR +<#7Y"çcۮz*WZVbqҖ;=;$O'Yuš:sIN8G{t?zR{7BB?dIJ e47a7}lM1'VkoΪ]G~Sy:n|ى=,~p?uU{m+V 0fS`EZUJv$ŜRٖ2ͯԪʣUnGo( +;636KZ!]nz-@ͫ Ϻ;JU&;kEC_@HzqCPGb[odF(:hJ`aEf)Y%_I~rJ%_!hDm7^F=SH71 WHON>~MV,Ԭ!Wn;zMIi^Ҁ|eQo͏a7~{.z8UMVM7*O'8o  XUo!G#$y[>*ԼT* k@۾l[2-{2oXaK3/?Q5A}?7'E̡K ۿۓ䡵zިt=t nYgsxזc\\hlDl|5԰ՍЊ4GrA'>szҧ"AX7ߵ{7q_G NtOct^5RR<#`̑gt?r_d#^reOyBDOma+:nW'z񭲌\aKw:COȫGOgWM\yeU(m*F$|5j$2@MtM6fmcyjN=bWF>bjI>;*tE,@&gQAJPtLuw,-e +(cʁZ{ʁ+.eb#T+nq.@2߲Q45RWE{OkS\H`.iW؝j-8|= kb~03cC:I&7(A1YlÐyosbՔrܻ(zzl(h%<ϾK$/'sQj(@ƅÿrO=k݋Szlz7;Oie85_Nb 3_ۚ]}ɾ2/"=3Eg}5;Ohh-l'3MVx.$+G_aYfnOvYSvu"x ?9}DD0<51Z: FQhB'H oCzn_zkcUaDLelEb`_dR +|\SNUIZ NQZv$&r+p~du}5.`#!uʽ?Q V⋺`b .Dr{%x\<|\T*u;;*7{oo)YG*;u( KNTF5Dhef4A |%0r׭l]0=#,,yjbX#21PHחr=%/ŧ(ehwXbd]LocJAB>?dKS`Ckf ʯ[d&ܢ^,c@+'1qUNm6Ov&m TqPcd]nP@ Ley@##p ]/ϲG"yeZ~M&R +ew0quWB]gIDǙ\2/ŕI;}wd{!EbȽc˱r&|gpە'+uXtu'1Ϗ TNu񚜗vJ;0em"{y~_%7x;Ѿ$6؂;3_bc5֌v`bI31<a4@*~r'[~:Π5붷`f kZ I h`֋7giv;߼Žɱ+(N]c+ >3~RRR%5*|*Q<xhJJJqԡ)P%TJr H&5B`Ɓ:AteBSpTҒʝ) ]h*;JnT`H:~ Rj5W{j#[Iq=7.SV2""֞KaڕܮPUnSrn%6#q+J򧴲WPN ܦP7UJJ#R(+(N`J~FS{+#.-SJŽ )2e;J{o:xHה( GTgX.֥a (>FTaep {+O'GOtJz3pS .e~e S(e ԧ2ʃ)G7e )i+;-۔'R? QpaFA(0K{K@R |f^Sll'O穈<]~w-f㹴wRSa_]]&r 'CWȰ;,] +V*4ɂTǼ/:`3*ܷD{H.*t7ߴJXE}|IC(6ޏc m2dz%]TJ`'M;)i52_7ot!L{<-b1-AߠɊԄPͶl[?(m'rezCLY^"SgZmwѫ9%|^^3IKA`gR $_-.Ҋ']l|^g\@%Z͢];=>g^slk*u0oiCu",ɾjqwU6]gN@iLlzz wʖ +ԝKIk{F"m񟭫ʺ +>dJ7Q|`;ﰀr|nk^R/Vv(胯PG荃;u}|?_{˕sO~4=JP5 y _ JA|v1ٍtxT@n2҃\FķZ7ܧOkb\R-'x5r'y. {֘9^;O}Uw{--ƭOwD~$Oo쵷SѮw$yj8ɤRb-ؑyoKyXm|l+Z 0e󘞗 0ΙKncOq1NوNr)Q:r==| n=r3>**:AI=J 2;ǻ{)Sm^:e* 2XiXOC@~L-| DcɃU׫;=#zMl~>*)й73Zô#o&6=H!u|76o +qTHAضQSXbSa^FZ -PPHߢiGNͨwl4מ#7Vz12]]o%GyHNj`NK#jkc%C*?!X2{`v\kWffV{VT%JUF%[gԷ7/-PQ3r Am)Q^mz:?Qr{kGkajx̫U-_ ޺'n=Xԁв;/eNM| pz}{@.+kz`HFSƪG>_DFV*;NM1bWw u㰮SN/b:=#l}M><Ơ@^4_n5ػVv?lSVStFH< ?99|5v&^o?*8N]+bgQ.;nR U0ZerH`E? 쑺Fw.h1Zo*{n`JQ+Ѱ"ҾYޣh#m2'# 2Zҿ9'/?mn%Խxh|˹SXC1u~Ego8z)PXm5<ߔ]v.WS +TAIH˕NSVǩ]7z\oo}A/1vNَcbSWK5Fm fu޻i0ܣ>)gvRMвu\+t׷.WU;*h]ǜ\UdPzX$18+J]u#=Ϧػ|}V*JǼO]Uf[X*l]K-szJ5㿟mvL57]ݴkۊjۺ1V=?G]_^7EC S{$2|WU k>;1tEŋreUם~B+/ZbX[9!? ^Q QOTap_eψI$ϑ0"b@V rY*cGiqIﱲ =aAށ[>dy_!8dG޷}$` +4 ͡'d Mn]-n*JiiF=pn*I0>rfˁ*1* 2ǤTܪ~c؊EXZurDޞ" ՞C\2\bm`I]uнnGĐoX@l +7ּwb_Xe` |NPcOIM(GGyB˺{K@;ܧmĹ{wnQ*TZ +WPfP"SQ,їLyOhQQ-"ܨXPM^;Է]{+(FJݕ:H.ߤ ;#Dtzte@Z{G)h Q+P)~Ǥ˻Jj1&q+v#R"[SUwѬK'"O%Ý@\kM`W'e:#HߣN522vB돊^w?X @7M+%Ub WȀ(7}Z6ZmQgH 2[% B2V w(w* ƌj% OXԬRBZS[Ԭ&[Q~=w)Jˏ%8ޣ}5Rʏ9nʃwT;?)A*{JnDu()`vB5V;rJe "WʞUL8ϲXdD@aQzA#П=zJ'ϸwSzUntyv S({O)M)ܻ{^Q Pu*Lh+B{KxތFpvpün:JKלiA+ @v%wSP`JuhFJߴn>rqF{(VPw*rJ](DAܠ{ʈ=ԡ;@w^}<2]%< :eoRvg*>JJ MC]z˗Mnk#b=jMZ:>SBjX"K!ٿ=~dkfTJl5Д=ġ:ǜyv!IP5)YO8֎]yeԨ&SM+DPqc[,舀3cX~&<LJJny걫y:O,;{+eiWJT?PIҚԨJ"Pƣr2JDiAf`K{aWZþzVS7^JN)(̸(L1ԡ7H*^qeA)nS].K|d?)PeAٛan'Y;pFoo%f5ϧ&hFT8 uw`ly*l6cjtFFdf ~װRA'r pǜu{ $m1+.$k *ęf'#Fm?H$?,ΨZ7t'R6zsܵ6pJ=RlzP|zyxJ3~1+5u/VH;^__ԋeX(>);JLM| +%wiBQ4[eLftvWo5yOAeʥs応۔=Ĵv;kCeAg{>$q)p0AA8IO?)Qn5nNOE{3arn ]nP0g4qu$ R}r΢W`_^"Sʙ_Ii3{B+1= =c)*i-FWݛpa @Jua񙌲=oftgC.ĵ`# NnT 4B}y7#HkSvA$# ~&eyzC Ho K)O)"PͽǦLʻ#\|zrF;VFՙ_`-[3Ukبf:'ol5({GT2s)\/Qdc_^R*`v]o{̟fND~0oĬ܀f5iFpy-Udd'B۫{O'_&[x{PI}9 =<ϗ]F=5w;Lz"Hkr`:&w</8ZsB~t<>r29>-{|^hZU|k騁w_qN2v߰F?5dPxB#A˽vN?DtAѮ!a$ICj'@)$@; W;머Qk!n 빲UWgۑDճPn2=MFHּd*25-6պmS5[\pTuŠX|ˎ h*@OeTI$?Oi8ECg8Nݵh]b&.Iܮ?,< + +1u_IcْmS]`e!v69tՓ}!Q@nXk}ǧoWSb7ZyipScmw%2{P+PSٺp|Z%>;nm<<]fd@![oηUUjeOǾanB dpī1$Oυu}!U +m-W_#g^[nZ|I#[>?x_JRƫ*֬P۠Ǵn6}EAt;| ЪaoYe?w,?0fdL{-T.Qvbe34+#?Wk}`},+axuV +z?)}k/=L L3srb퍊{~Swі+.1{k +J#7H^gzC{#oiMm1nC3Cfe>KW߾qGl*R؈Fȱ7Ny}s]} 0;W#`-^'3ib% 35KZOP;5 eK": təca +j3+#]>}C_eܓ>^=4Iڐ#}s'bwc|7@XtVI #yG߀ƥU@w}6_rXXEg`Ccnhu#aOSۛMMqzXNFbh\*WyztϮ׻!.5AvBX m} Ge*z[ L19FǾu3<5߰f'@2#[P(kMM +Ÿ/R&w-fvbŎ=|,䶮zXޞQȜ7 {ue#G52,}8*%KHzyjpW̻sO-УJ< 3~6lk='""+~ol1#BQu|^KV|;+WDoRQ,.B=Fk8ܷl_7tyoi~^ i6@'I^9VFynz_|^ozt+,Y'@}/J1+HְdqMmwV䅩0.#0()߳_, Pk2M0[~CR]O2FU~5#xqd߆ݩVQI]yf6OeR:t;YxV#-ȯ`PM0+ۿE|X9SH#0.p:˹jڃfŻ^{ѹ!vouxg$4'iæꪛ.H}nH.8^*߮#8B4h$$v9-F:] 1,2+=uNS  kB@oEfa񸢚Ի8{U1w7~&] + Hy@5b|Ig=fmtN&JoRvk[!  +m2861]k o)O'#(,7mJA4+}=$;[agtJ6Rf,/Eץ#UPw5[g]ܿ}f1,$nAoSfέK*ȍ=z1qm>ahjV#L K/8iUjc7M)ވGБ~+#x=*J@wvw̓91EZ,&\,{5.SG PqwK|GˏQ$cwԟFgEfRH>c^yG=ļn.֣ d;M.B̊pV&ljX WWDI69Lkֆ5MX2zz0^>~fCc7E=d z{e2xCFE%[k}e aIC7O[gܧ^h=?a8ܤR kX]ݬ}SMuº$W fc7fL-V>"T +rM ~N9{`vGnď48?}G'E`e_Mߥb|#ظ|5nL\*U rR={!U uVCrX$uڤ}=5驋3zJʌԧ'IogiؿH}*]Gy>zKdNl/2C'8\4]4r2N>R&fFߠ&1ېa/OѓFҼ 2lơU :=,Gc6cQR{1 IXbmנ ;Ҏ?\>>E}LxB$ov-͢^*nlgc뾪|F5VMv6Q52DdEru,ͫ<m +ʩ?8s>zo|pH(T{;k7 k>8k @7'9!tYzNԀH>Qd%́mAmV]~fJ`즶U[:Apjș'|k='""yL?=<KV%&vB$s&?3Iħ*-E 6oQ5+~|!,2,wW'k?;~ *X?k$mg}$i# j1X53iyoXZ{7= =[ӹ'ʞR:alvq`Zv~$l^e(,HyxxKXzv@Iw幻( iwGol6Ϭ2S1_RdVujb8t^ƴU֔+5NGMg^=Wdv5)| +A|LGxi=4eXSKҽZ޶wY;J҇OJ8ٗ}@yʎt)cK~;E nҡ@$~ݏ]E`^́tGW`;̓XG﷟VO['Hf +OC+Ũߥ4Gmw99çc뵤j€{R{|7$qoU+gIRGu'dt3'0r.>IKS4ighS}a+dהmy:y#{>K/B[:AZ( +GLk}>PU:FM>z5(˼Tf_k='""`ߝ%a-B +͌Q_@b{zL6&ࣧ@GP`A z*[S^&̸cbnEN|O'ʫmb; ~#jVǝu u;"o_ȵN1}m +겭ʭijv0?q`}sm@k4*<:ttyQ@e#rA|=w(eC|%5V<yhJKLk~Rӿ@SP|ħk#sW^Gvb=l>#0_­5BP޶=uIke #Hs=_eB÷ +[ zMCblW`}Oq)JklvԒ}I=̂*y$~G@ o&aV:kwBo#`&X\_S49K;nRRu!@>S3#J޻WR)YhW Tve2 &`({@. +<S*< aA QP^¯}5`ߝ&秔vS{0c[7cC/ҵB zKmnB;AFOE%XRJGos`6yA ܠ)C5Hޣ[1=RP@[Pez5Q1%XA֥c-2q*%2^qJ)0͊osd=|Ʀm9,b Kc&ZZ+Jꢪ2ҚܧBTyGaJ>qSR KwJ4jSFTv=l˗,~紸s{>{.MDyL۳>SsrM0ޒeKvv%w(e#p 1{J(Z2n[(ݥp-R ˏa-Ԩ=)YRw-0[RЗBZ^v;$#Pa.w.ġJB`w W[+hJ봡>q&iBѾہWzy]<底iO9P7(5{='""yLϭەԧLtX#ܴ*e [kr";zeWMJJ(A Ku.Pcqio2v;j"W{a(}%H.*èBnT ]JQ @4e|.Rw`Jn7+#@[ңfS[jSSF\e5p-J-֥D]Ϳd{.NDDct̸ۙ11DlDlGPr&Pv%D@ ʃ w)+}a)HR^%7RwXhJrpADFS[ >ҿ oPe +P7mk~|ҁO&lPF2o\~-?r--:DCܦt&P JԴ2,;ߑuGi_P m#ϲ؈7{3uZ,BXv|H:ؽ_X'+G^䜯N3cv\~%fE<aIW"sͶlrxo]) /'_~>}o/?b~[t~??7XM܋<}Gk{ջֿoaz~Ű~5qwf G4+F?؋ȥ?bx_O؆蛿a~#&#蛿؎&OMJ~1?2?aܹ?6VZ}?ڙ?V?ax_ܙ?YCVW،4;eka)־g`gcl_觕_aT9o9/:DZ?_؆?nC?n?b8_cq,#g!&Y J?ԖaN;,7c1:>xgc{_6b_61 +6V?aX}f+ydeDX>b_K3n2?.??ax9/ؼQy_f1D+'3%89/+ Jx>gKb1 {Y*}>yVVS '3ns?^?`Y/|_2\_~;$Ry R^/,9 -Khe3'VT{ϓ,obq\ߓGXob1ߕ_?YA6~VEՕၯ+؛?|/|?*=6V?aVVSHyw+#/%?a89/._cqTk$%a['HlR?aؿ?JcGO%όH#W).G[9.ؖ;$fD@"?i^]6r > 1_u%^7K9ҋʺA?/9)Ec{Qe&5wt{3b4?3<'Td@OuQ>J4-8׭/vVxv1b|t#Kyn>j5ҀVک(c$w2͠ubJr4ӓ^+X:Ni276&%P7+@ ('SaX]W9J_gERuB w#G׷Ju1 +H2x5OVM\NG1º2! ͹B |rTRc!eHߖJ᳢n[:B='ԔB |֯̇Ev]0XegQbؽL:S6=A0QX;){q"g~SFuU]btXSz'fʯ2 PfikX?)g'VMx, y鵭;DDD9l~,QezY$)_8v5 utA]$$w4*q/9[4Ԭַwma՟MwIbVĦs Smt`bO=C3nV`l6(MAm|Dž/jPMKX:YJxIM\nS.}OOZAw&b%b"<X=)'N7acI7eP.GbO&5fԥw PKW 5Gr>eX[BHz#vS&.쌋A_Eud=%F<#y/eCV}J d*忳'լ3kqɴ*:Q);T%MUh D걥,g]ϛeYYK#(d:,?+\mr†ʭuk nzGnd3˯5p.%V&be"o1vuTtWn%ף[*OI/;y;V|OVb)}Jv?WDyzLy\iMkӔzԷQ4 +ۿ-ܖ5jHKJ# |_W钸/}V(iP]UO r~_PW&Xé ɻwХ>%~7?C.6 IH#93pqo+7V@֩rc>{9 K3ȧ EuG{U¡ʀ}Oa4򽧼bSEi.59 Q+w&?1Ⱦa#t,[;ߴѧAZM{ֶpBz, ӭ<_GvMrRE+cZ,f yM!ߎLaRvC3u+hMM^t-ZxlZ6ЁKQUy &n-u,*|nZU :*BF?)e 5[F}ѿP~ɗ# lWȻ­cRi2vנ6춛0I\h 5ϷqU-IPggװՑ5NC5lAdc[>ѻ,skpPZiW`Ci +nt +97K[]mZ{OUem z9\j*麫X@>]$SSs,r8A:Fn簘}Lsxk4#2ײztv {v`v{;]yuW} Qʚ} M/3|e^xt>[@7g|.ΆB{[yM/'';/uoxءXo9W#n=˴yv#R#1ӏɲwF!H#v@;?`^'%yc_QHN1pwykG'ÈM.!>mb5gMy\}u>1@mbEL}Kս_y1~d왫RF mjb6#L=U oϼmnJjE^Ύ߫aO;v8VܩQ42z]~ݻ|eݐxB{fyݏoU"^u,*m.V.FM5mg/AZok˷#Q:RdZ`ZH3 |ndQ^Qm}b$lC^_V@\ǾO={zw~/TNU&Vv+;g8~?W4AP@3_r22hdUU;;PH*T.]Gb\ ++/`dI>[y}%*^VkDeUT;'G] ))FhEX߈P@?K,ůNwټ1xmAjpDTClޛqyGLjE Cվh k^NFWҫoHSv66m^OVcZXQ7:+XjRlt5~&F_'nrٌ=@̧`v[G<4s1x{TǞl7,qOJıC@3qY8܎fo]eoJ&`R[SVen/3PEԊ*ln4NK|ēq6YYiPZDWrWa=nBҲhhvc? +>"RLfpIXVOU{̫.F.A'ȞҞT¼|'* MO2rx/v6n8WYbNme_%|{) +D@'̒}OiWnrq<:V f~^Vdl Ji VbPz_aYlPq k]Z>WUczv<{LIPS:tBQI'wS]yU^xkV+3~Z|^=}PSw[Zƶr`,ꑵ9ȕJ2^Z(Vd6Z֙Xiw~Z/;*Y!l=^(NtT{ߗ+|&{,tk u:@!bH16~ LG@L?R?W_ٻs2jڜtCP$ĞDśrYxa.=ζ tCd1o]:q>+"ߧ-&묳"``hz #ذ1*ޖ [Ckf0T|@~WrQEx0Gbtu2v}[̛+5]DB^װ0dAU[k_|d6^ְ +y}uҴ^Gzv{1Ȟ xgxC^{%2xG ("cb鵱,/ݭ̩Q:!E: 菔Ղ4Pbkjٽبm}fdeu:F%gZqU[]ej,c;hyXs99UbP=p~"~2gzٔԡ:Y]0-{gQ1dSwXv +6|U:up V 6;&HܬDDÕN +/k@@f +>]nV""&#HPlQa^D|@iVevPYwHI"%%fB1ͨ-+u 穞""a˧C]b,!Fϐٙ|bbɫ UdX<7$W 0YIS}mDDDMlOȹ+-w^:lLXexV+V`zXufhֵTUFBVږdq`A|ĹT 4Y-2܆):G6""""""%6u+,KP6I:|I>Q]rF  "Ww=e)YBFքǏVZ )uu>L2O1de4FIJ*@"TQv""" 1d[ly|y%}z(R +{ݴts߼, -at|ͩo3ݫYbN=$<ryսîuHOVΏOH$E[>́ץH;2Fiud6%+cT]5RéPiX#yrI]AO:2|>>:;˾Zo,obiG4[OͅشIER]Gݯ]|f{@q~ #$3i>SW^S.5WK|fs]M6oM.onFWP0RN{)Yi ֥Y7;y|f)W_K\Thu(oR;n\jYM .yJEluDAT};L~sEj~D ߔme5;n; AFȒ89r4WKu#l}K sൾ5:wSfȷ%wgSY%vOHwkibE)u~0V|)w)yԘ&ί, +[ th'suߧ;k6 ].vC=$k;9}-LV6?%t;[{]PUܥ+zY}{ ydVU0p{0t>ɫ~}wm* tn`G~ 8PV:PBGU{M^^f-7cB?ACt+| =ؾF;:z?l(=A{;I.\=JH <ﴗWKU^(St -z=ApW|3ul+2)dR+\%/_K*b>߄ˉ5QmEsV 5}ƭ1Ȩ)wy04; 5הb,Ku#hlGS'[ʄseUBZ$;ɻWE7JV~  93!zt:>sDrŮ8EV=§{awi8^K?+)5הIܶ{Wy,+K7SjGѓ:;cQM=vَvf Ҏz(M+unUN6G&NgFVF*aYkSZX:]t䁭2f싮olf^:/vwhu梁z4zˍXֶ.EK]bZ:[U{؍v2+jN w@[rJXHf=w?Xߘ=?w<%H52t^ +v{Iss2q,S/ ԥYo-||MT7xnz*7rHzoqrj*^paw}NX)*6tt7d_X_}zHnk~z2Q]Cwe s|=-v.BcGY5UR},:|vB<jvknB_}~nC +v['zy<5$Im `0ވolу_zVrFHK*:ؕ{=>z\dd=T(>*߯.5;'+YQPOM.JG7&C]WրhևK302x1= ۡwtG!]-#Zof*JO;{f.,ɦ 0 +yuw'&V} :ր$ov߬;3aV`ffjS(UVs -_'[]/U~)H'ݩ^Dbw߷ocnWt,˲7$w-sne>޾#ھ+Ŕ03fs(VwfIqv]ZӐ,NUQ==JQ6CCzH~[ *OɦO/`G}k~sWo'Zʕj95(7KV*]M#F%YbAFۨ @$1X7[SGt#563xϫ?:Ƞ.иue'*Gq&GC( tiP;rH)n6=7'CRV@`@C縔020k+| gq8Rh]XTCa@ևmQW3vYVU M7Y]7P?'2<Kѓ}7Үo - ;ʹNFڊ +h*ň%GO&>;_YYnk;6oGbL`dz ջlĀuJrXxc[m[=x=X7+*EWu+)K6T Ԍ݃A#`hJS^+ٛr>MOh1nZbוOSx9Pk+`HdHo!zܖc㽝K_C+w̤6N(J!Z?@3S oNb¯u~Oq`/8lpVWoVgXy[ǎs+&MUcRYMh;]~J';<%txOJQ_Ď +|u+c+pDDƹ]kBiA%My\u8nuAq +#˼5j +ȕ>޼u"ͧ1 +ek{8r=ue1F`xie-[vWJYXw تI>U'"+]H˿{,\=}jV/W>S.yx$ b` RttInl|ݖC.Nu48/\KU-÷hz"XZz0q_7mGgDׯw6~R~&=p9deԍ쪩b +uؐ_ty^fUcԕ^XR +{nn9׉6-mY!>YN&BLz|.A +;wގN.3qڥ I#Ƭ ajEr'$7[k-|KIF쬺odQp>ր%@`ǥv!_ +_NI`Һ=>[A̰[fZx}LW*@;e=M{IĀA#.IXcY{c-mA@؈c`5k} қ;_&DJ u+)+@;MV<%: YG#SQzFR|ظaTҡG3KK:$lˢcFԬ |ĹzWB]5q8\#ZNF~&[bm[dWk;M'CDhܬDej;:DML^' +.i۶fl^n""%7X0qk:u2o?9\k}kbBapu(Qv7a G Qbt]]==:^׬ETպ2$8!IzMVO`2.h]knl ,H$e[ +F`׀*tO @ьhhʫ{gC+W2͘zC ;A?+fEY~L|c\[k!~ :%7ϿgۖC6W + 7271RݏQW8]>KzFgzZ·Y Vv'ZѷA}#.I f_xD6.=Y^eh]u {H>s./2MVxBM$HȮ'%250UQO`_l(vdðGG&qEkgK/PKhH+¡`R + J9M+7:lBYXUYgD}O/;~ Jz ++}O:${,Jt`z{vsuQ(+Eb=dw=oKes+MCX+$(#m՟J_KGPG2#jUfF:u"5bHn_׍UN`k5N4'@w2h!o,VPysZRJ;j⽞vmc躻[F:% j'VΎY5Ӕb8EM!==A |D<.G"ֹi opU4eg`w 66I\cJ Nz͌.NPOK[[zH!pA"j{]-X|}Ilkkm`K1:Y=Lx>jq;zԒ6'rR-j=ڃ6wlF^K.!m BvQ;kRZV-Z;YT5;9q6嗷nV:a؂ +j[p(fhs suRX)b2(mog[$AؐY\r)aUyYu!=cik]2<@̑%,O]Q(g[C 22#y˰yʳn8, Xo]@0#~}4N~K/.E+jB"gv|##\\fJ-ZuluCcdsQMa7R +[{ޟ9G[AZNJ:r +']ƷrU쌭tU'G]強'_6 t/QյP{MkiIzO?A\Y-V6-%Kl/@ 6ih2%hDvR[ȃdw!gqc6ƽh,)gOpz=ȫƲvQ uR6%&صtu0r{ }VxVEZ2zF!{ruTR,꣧{\WvλlzҮZYt]؝|#W! + UXt菘;v#mDD"=l^'-J/m~-{}$0q ʺتy3yO+B>V&MoaK9 +#vƻwvǶա|^)., +mu?_)#)m ,4pnq+%zkzY?scz:rxf{֫(^>ڭ';m&1lT=V~o^sjuV[ _=fe_XǴt”!ͅ +|fN>Oizk/uh9=?~HV>xO_uCHLL}/pT ח ;9[9'[Jk=*ղ@(o@tw'2nYZ~IQIks+e[k]ה-cS)Bizc#`LqnZ(ll,SdG9ycgQudx#]ݑU{o{wq+Pm̲XDVR݁!u}ϖ~zU²}osȮ)E>G-Gx,UPYuuߟ^ՎO}l-8eXY6RW̢5VV[? ɜA.mZMߡ=;g(LF2TTج@ı$}/XM2L3#ФkJGMC[3Ac8[AcYws1fӒ֫,B[%@mrI) k98b{+BNO6խoh^XB!u<2&2_C-΄5X΄|J]Uyؼگwטm vr2j9CuⰄ4Yv.,Lk F~nkenKJwn/E7V+ˏ}m뱩n`:RQ?#Hs>GA12eP޿uN2߂3l&moIJjk#DHֻo[FZHj̞*;yX?fYZN&bh^(>h :-kL\cGˤ<2Qkx7-*'M{ib9ɷ2a;Ͳ Zކwܿ5)k:T|@Դ 6;5IErjhE -{YPS ʯ>NO3EƶẙսfL7+*I"I>]AGSOf8ܝMEu^F.F'zfFN@<[6-ڪQ +Z,D1-6@eO'V}mu!d3@INJ_[-/$\%:֏~hnr)ZֶEDRı̐&\eܮ3P''vmyw9\-.]xtܶ+V,7l{c$܎l;x-#Bٻ{Wjܶ·XdC`.ĆDh{>wlEaAo~$'e\k*vZ +քyK9N,rϛwhPbF^K);yc:Se f˵pS݉%{Sc +.筿j|ljPm' +j\Y^Ԋ4[q)\8ewk! ]q`XhlhwIm\5VxmM+gA(]]nz5<%0r0 KMl C%4魐9@l2v3n6[T=`Vv{Kwjs_Tel.o|669_;F5=6{ikMN=m^g̴/fAfkY`Uez{v je]V1GFKea_ ヒٕW-S~a~420^>EKV">ȪҦWyۼ>ea囝jU[R딵; +7ospXW[Mv쵬6[Һ Ez#J32u DQ&_o;7$j7Fj5Ёj5+)H|uyxsK!+aR}-[j54<ȪWt>Q=5MJĦFQ#QЍFhFyFQGcFRFe:DhFFpe ïC[;$;FQЕ#BVF>u9Zb؂y/ڞM8WԶ֮@;(fz~~73\Cj / l z{YE+rfWnR=bRo &JV/V:!_]$o@sXs1^Vv {MLH.8;!@oRN|}72QcVP7bB:PX ~fnM,gjU~KA>@@|B~&>lQY_HR#S0,Ůkkt%jMr {;pu'~9s_N޴*{˱a[],Gi㓲H;;v2=~J is;'3Uu1>xT{oRd򘫍j=!S^{+QΕ5Ԥa`o1ѬK1zf%/M'[.զ;Lxa Y(ʅ#}$:yosg'dg,@::@ok3 }#[=lO)/V%mml>ه :.IjնKu֧w-y̛~%Y [4@Tg{ɒkAAf`:#62߭w*ؒmm HE`u/1[`wjta v~H==]OVwW#rܪW̅D .7v_)ʖ?a@g}z|u#_jq8pںf t'`>g@L\c/ PEE{ +hۧϷyw-cTʡw= E;ޱbax^5)eݷyJq7'(@VLGMȈg?:t\ .$99J\>@`)4 +>[+"Qj}u6*u kJsOM:|E {]zԻ*7!bjuwRj.8kƴ[Q%z_g-u/e-ҧذ]W#; +b}2qLRq2'xn˸RG4Rؠ#DE  ñ2+rH@՛lk yZ gVʼ> ON_>jp9* RIB= +t3er5%ě}z%tnĐGx }/!ƍԌ7kGin-l\΢zST2?!ng+Sx570_: ~_3՛Rfmb;)ȧ6&7 :%nU +[uH`{@ןyu7҂bUHKNI'}gǻ{6_K/ԪHmFGqV&~~KNOZ*Uq,RI#ב<:Q{Ev5+00ZrQ͋mH=#]ƽ|Ytg`d9``v{;-vv7![;:51+58-jGBCأVCu۪i'kZ)v +< I_"+AZ ^݂ғ<·n;ĵUkĴTd eJ)ǔh¢FvR4Dt R([GpP0G^^R FBHuh@CQ%zFԈⲸ4ދ_S0T]0nu|n:cW]Kð>CZcQQTh }u$>gUOjՈ$F}Fv+ +DB<@dV#cvs+otk ** >ҌFH RR 6p>( ؍ʕP>b jחWJt+)++)XOdRGM-&?tv%ڔw`dē0'/V)g]rl*nPv߼7hqVv=lHfoexZkD7}jzQ"-חt}@ t!X::-]G)kS]ΣeA1ݥؘ֊lUϡ:gos#gڂҽBGǧ]1qWֽ=_G(aӵ,:뷟}L5fVц)2W]QFBaqn:.?S߷-k'~@YE01ΈAZ=E7Pb{Ѳ*=bZGA~LwR3\NO*jPl(ξ6>by|PqtcT ܛ´ML]RK/c^RsU[zW: =̻#b܊K yiɯo|7/YaK/dk,`OYF}b,WRHڝ1?)?7Zn"Bݪ4v aO6eڴ,`J`]K_ŬZu`Ug=ϓw̧!K]=3P{EƐezﳯlQ 'C~dܟ<06]@.oڕɨ]QKm=ZAs|1rIKlkTXllwS+uUYއї*֪>`oG{[e<>NN5*w5DdG!Rڵc=>zFwlYҫt GOEmZ PK-hnT ~sgsW#ە[@O;?ufoؘ<86Z^6*{?o8:TϠispxg)m$4G}m%r:;}o/>Ҕr55܅~~Gg)\ @>[cs;t1c{gF9X~5T:k#yv?9gx)]1'SWfZ.G+-ʸU7/0= n"(@p]v75yh|j:ռ[+Ju0`6we]-FeT^]\V6@zh͜Ku 3o[;^.OyU!ֳb8%Wu0y0rxxvވRC0 t ߖϖG΢VCک`?RC&a{qyL\eb`y>cښbYy[w|xgK/YK)`|fl|[jpae,ԡ݂I'@IbD.bޯuFGBAvfϱ\ru+]U}(#g> P4AfSm +\Mڈ_z$:; N墳oH[siɽB *>B,L猣:r Rd'!}o(u'R "-&.~~yuٗZ +1T!\;Dv&>{pRajuWӡw) ,.VBބWɫSp(دݟ +{eֵ(8'>DƮڞ~3esKkuڰO /QlWo[%f&HT+2 +A$#2h8\mPO|%y\=OҶbxRUDR T D!2짱~P + +!W%wPOǴ$fwdS^ڃc! RWV!uzg6+ȃeHrh=n@iuV{'.Fu 8ʠbZ3w$jk'}IUU|H0Wd +K+nś_zzhpUNSLSz`\ +W}mKkwfCdӹ)8PZl b &SzEYV=v0zrdϴ7+@l[:u3P5L>ɧ(­ gVcu%UKSPloS_Lns#y_HꨪG@R6;50z#˿S1'd<<̷QSkv`+[vϐ,GDdabs2Y=~5leߐ?)-UՐ*xoj'Bā{sM[) 4lBz<h`uC;tPkPz/uSWW Z ]~J{kd)Ȟ9>" DkD0Jw +=$|Z`.$? Y}{bWE|=FUkl |'fn=ㅱ {Hav7f]qtș\!は@>9Hfx,+߉ +o4Z" :3ةG}w'=ȹ齂NE#\/#Zr8U]5J﷯[g[$&9BOBv쪁^O+^VF z@n~{8vbٮˁ zY [Z7WMc00'^Cϵ9qn/#a]Yw3r/qMdL礐I~_W!EAm'N;P^ȸgSSӜ +Zcz,9==^,i1**J {>? )TҶx!N~75_+unG3`5Gq=$DD@(hAZӡ-j`u/ItjR*RHQv{z[yGHJt/GBwWdRXX}K#BSOPP7C]۴TU+J=7%Flzl4ǤlxW𗫯CZ޻ῄRy-4V\XQzm>ԝ?Dϰ*;J[J\]C) A %)XUU( y oigש#O(% +|ǤZP4445W]C}뼣ҖVPDŽ=#Z־Eu%J(@ %F"J2K-ǪuP q^"+tG7eƵ>PԌ:J>vkZ%UAB"Q^R>q)^VJO\iF`A#Ȑ | K ) ٹW,Rވ?lWi7IG7.@ WEu/B(U>[^5TB"z +B)ƫtԊ{ҨQ-dlw2kuԣUh +"zmTW@" + $ 2Eq>SN\(yld_GGrQ &c-ZhjR+^Po@QcKU +XNqiGkE#x)zFϟaPQZ:Gay| ҇G>C]i@և +]YҨ~yEv̠HKV4A qB +>g+ƪT!@'ל1 jB/Y-:o_>DDD(X/VSsK¾[lZQxŦ#魛l&l0#@h0Yku): w;M)>eAs0PI:wCz޷YmIyg2m\ɰXeX`6T}]ۈ-u,D~ M-"Fʩ# yu_2u.؎ۿ"09+3p*Q+ʊ'D$y={>R'y+%>zՃAabv~ێ)ֿ?_P޷"1ڵI]LT.!I2@hlwzc4M9jMWıWzu ˄*rRRλ>e 6LlܧX޶7]-]o7+ 9'W"1k_/Sa @G~\/8`TXY[= sֽt2juL:~uU\Aу{^޽er8n9s)b4cXu>Dqȿp=翺%JQ~`N~ӛEMO,cvZ΄? yokr9y]YD#lw륂2 հt~ٛE Z Ҕg2=5P:mVg{8xtzjz2v%@Tt<w^X]v\j PJSGT䰯U z=v" րU4%c恻ѩekʍ=uۧRmr]zp +%' n]%wYڎIߨW~ѝqy_ R8?7 B_ u=!Udc'7p)N_7LŞZ#YXSw믔m,®fdR^5&o _:/{8Ӣ#˷p w5k s['A==ܖgNIW-zm'_|׹_?u<4ֿ_M_ KjغebWD?cĦ73$zs|WnΌkG`˰5bE[Rx5OCz麶7: e{Fbu)U %dmbCr.OW`\~NĨ +.> |$:b%8j*}e]X ]s ]>5Ym3V;[w=]cqqw{)KJ?[Gp9%/]xoj'G?2`E&|U^`@cvֵ='uw;V^x;Z"z<]4Lst9Kk=b CDpj0 +Hm<~8gb(h1.3JmT7t(1Yxr`0K4O!{Fg_]YLW&uuBt5#Zb7߱rof,"1bHrzƎǠ_ٻ+G/Zt;u2r o-9e׈߯ K*Zc[կ]lr+h; naԪ +@ 3sl,\l +2^v.;Q}I5Z(t`FG ƦEv3Cwߐ{+b"ɗZ=U:4Gm%VcQK1@M2\c>љVh*wVJ0BP"-ZMxkj2]l_#^h)nJ{ΪBlo=M^')02ѱKGm]h7Iևi~E5ӕx@I!5J$}8+,bش'̒fi{[ {c*ߥb7fB{EjIammX>X8y2H3Tīl +vz 98U dcJX|=l{x繸c/1B쟯siodQ˴ǟ_ כ(.z`w҅w鹷]KfCx5cAiv߼d{n.t+rH^wܶ#qOՋj, uIw%C5XJZk!T[X}c7) W#Vmie}L1'E-q\Q"^`Nt GdcJ-q< }Ggle6v-a$|5Qĵ9\vC)8ڧ 虩 *nȳ)TVu=F/ y +[uīVoH ]1;3K&yO%:oFBj'w$Jg8r-.rJTjm^RYN.B/{S@Ej}X==e.qxN VxAṠ^Wrz +SR2l{Zh[*k_`azw6Fy1[U B<яW1VDz|56¯;o_u|f,Ey씧ȮNPt_u'""4x|^AMVdmy#dqSqj̭ #`UVTk, 1'CK uEaFK|T#Zԭ\>%Td׻ 4[e2UMO|^K6:/oM!D >ޗ %? (Vovzĕg\ZJj(=6I2̬ +3:MCHՆ:>a«}(tytO=}FGF/2ֵچde)G]eRxL,zRMObH&^V*P5=Jpm1/)z ]HfnIoSc S2Ū@z ]])}ca4Y֛o n/~ dһl2k'{?\ Uz_uNzp!A;a0q_ V9ZTT[}?'Gֵ)oz5vY0r_OQ;צ%߁ҥ^G75#{ǵR_}@čkIb=u;Dz* +:T(5H^ʶwoc׋ZRUy ͋R+WX;l*%fSP!m{  mXTczQXB5k0:{{.F=+#z)n7]΀]] |רt[V58+kU^ݬpeN_]F[2¹zA\졇}ܓ58WR&P?.ç5B\eaC) x7L+x?zC ~~s%\N-9kgX!1Q[WPV07@-7 SȔ(~Kz;?|§i"(!1qx 'WaGKslNI3/`vATF=֦|?̟ |[kv_.0_LUT}M顕f=+6#b_WGRq_o9ZZ/%*Qea{NϮ75'1i1nD[_dX\:uQ؟A&|W'RAy\n>JM w~dI$̴Ҙ֡UT*k +> +t-#Aukuv=&C6'ng[io u9OSR_vQ̂7Cggjp^ \u@ +/WSvlSq1l6W^S0LUKoeT'gz\F%vP κnJ|ott0 RMI#6I2A%'`uo{2K-j +Q`]_UrV0M'[0lu=L[nĒOOw{; }fl ek Uz|A_ܰR/ɶ&tj!t۷ה01\Y] +)GlNKH:mdqkjM;l,X #h . x{}rWMCּMkZJ6Z~!v|sv"" G.ۆE5VCfM71[-Ovn?>.n^RFCIοj}ۤv>3cn0'Vd+ԝd  +t>ߔܥBpԏl>9(tdSg˧`dr3.t%z+Rΰ' +y؍e799uuuب7,ʲR=,T5Fٳ6A? ehzZ:TRhOoG.LږKo[$ofÙ{cSe[Zʄ]u1ٗaJ:$;ݦIMnaCcjn%Gqn6#qqn&,{:DR|&Pv7jҌtlb6M*@@==gtp4˸؍n7vUt=HcA߹ +[_Iz)iw[V tW[;؍=k6,!>b{6&7!ڲSlm֭U,IlۙH=Hb;鹷YMYy)SE,u|j񘍒=nX|p7n7f;́[Yb9ewV"" 42;f1w uY(S_.%*vA=ψHnhlۇF6FC?5ZFLMJmYou_I mɵ T½(V3Wa@6=cٚ]\Ⱦs7eߟi-l]w[_}B-LJ?>C 洫ٙMI~{f'}e-^笚)A$F|N/ŷ8!B7աճ!3&ozdl8|Y)a5 4 q|g!MYI[H W쌸2P C~c+l8Ԗ +,UH/PƷw%=$Y`+h=|6=ohȎ^2Z,ǦSo (pf,::|sp,ͮA=nw9 wr .TvW@GHbT?"lUL\[ \ =N4@:+v=vw132+AF5Ϫm/M79ӔVcWMjFq-YW$3 :O#;IL58<#] Juđ<.%<&̧\#a8[lv[ -k +ta#1Z:x;Y^BC7HO kC95vEmmƊ4cզbXIy\윾;Kޛ. _:\X*A)'brP-v++93{v{Kr݁SNIWptz ћZ~,Ld8MO6?U@{3erV&IJǰg)bH#R;̬~T6VGNBQ:jW^O-_6;{8{C}lb䎒4w>'ClksV1(3 |,|k39FȿJ]k[Y@k {@GC*'Xt*lAQLhkv;VX Q'MR$+{?Umֿo a/Y%W̎?7c,W cWjs35߸tFDr_,qUx(o;c-276}/ecXOқ + +lh6TxV؀F;l ny{qq8%)jnaT!,w ğYxaW ݲG1Sr|ѽTSi&=E*ǥ|: UcMY& EVVפ9.g̪k57X«[/X}${ ܦŶJ]G}Rt'䲱j͗x]k޾#uvw@/Ϝ>Y\<,mv.v6l!m^Q޼/R]mG˜-Y] ol鹧Ow^J>(V؀fW`$)]}iq\S;"7 S{:\]$"WP^Jo31eb=f!vFZܴYK#5\2tԺ|ƏBV0p*992-^-L׽{mIj􅲧P/ i*:}o{b{uwܛs)2kؽUw픞>`>r^"" #s"6Bvp׶S:Եٳ+n!W@h{s/KcSU֤V=~>2S)./~9;X)U%jBܖS??ᩦXٞ0hjY^UmUXA xJ5uYڥA',WӨy+3"$PH =h(ɿ)Z +HHtB`x,H[މ;鶺߇wY7/Wc؂SSUv!.Z,RlWí2bUHRv@kY-bá 3Ӯlq ߧuz>O|.G%Q]2A _ I[ `ZQwgӿnF`Ni56C+,qgH$; zB{9gEV#K5e>K=;5M"i>& l>ip}G&/c߸}ģ#dfk:fbIQ}Ƨ"Kt;6h2@R7xjpnFxX|; jkWƎ be:Qk6+ӱ=laoxohbMҪ F lycX-UIS؍-=OmiGmP!L*f,lN'4{˭3տon ۱scђxK1cQkSS; l0X |L&2 uBYCP ?{KSÚZ,n}*FZ28*nK-׉?@} ]4~r̟fiZ*ȈWH*]o|/CsR_Ix-ME2=i@w$k]= J׫$Re^i^23l<.me=g}NH;,vvOJ /_RwwSձc~I ó ~r,v'e'E8Df%պǍ׏wlˬ +U E>aBN~2,g0>=9Tk)&ն,At{ĿP. :N)s;Z'JA$tvfDi"{(W=^ht)cO,/SՏ}{U=3oqTяWNu=ƀ18 \J/P]bٳ}gg^1O:Qܷ]Cj<l\h1tk-5X MG gA:B7>G4 x+Īlb(*X"$fA3mwc:0*)]v:,L|b>)S5*.!q3]m 7H=h9T4>=Ԏ0GcYm2oV>P;hoM8-mxҞmw.kZܐ]k]zjFS6?JX*WZ:=CKo@KkhȢewaw%N5ӭ}oUM +:vo{Z;=ce)-B3Xt] 4&gF}+MJQ+/pakg鲛jۭ63aN(jjޛ.J͟ NF1Ժ5NΖ~83ﭺճ %-Ḷj"%V'INL`;wvֶHy@M#y^U8Zmm5ҽLv89c6 +u(~O$8nk)sҤ:7<\XUA%yn74Z1[UȺ2UYnoFnn7n[mB3UN̓0r<\f;d[UzwХ۹iWd͐v#qu4VY,zúʘ8C$kқn7,.U3rr2;"VzשH=񛻂fw^ڙz.=ɇ=&ܡ"hB=iħn:V^udخX+T.ܲLtwD}-P0NA o:w{@>sS#\l1}.T v7%7,<.}Iؗl,>Btq_/k FbZ][ vPOy(ʮ-YwxbtXYGfr1nIt>野^FjYOVRUMcّoխKw? Ğkasuec[b+S: h"<CҖXav@>[zL|xV b֋](,| M }R +^;]ۿg xuoݩS7 D^=#lu2BFYH+̬=Jr|\V;\t$U2H[gr9zlp<jA!b&ĬD#: ]nXU {) ˋkt4dYKuk'$7_w1xy-V'ZJW\>;LYYmVCPd5ȣ۬[v?CKrt+Ӳ;{twy2hEb(COb}d_1G%ES ޮ ++k:ޚrTf]cuK6ܪ(Q۹>/ʿ Z*P^_yl|](4jvZNXoCEua<XU^tw=W/db}1ǦЪ,ʟw~=Gjй"mSJY[oYYk* Üuv'__3#d=rdT*FƵ۷iq6r\6M4՗]ZTWt}u0'-U-RlQ[*m룡gxk, VVh{kWBFeQҫ.E lunFM䆺 Q5!QZ?#,FrR(ǪuTt$~Ԍ cfM7BƔ4j*'ɞ4rVr\#*Gnxzo-[VѮ! Zà/Klh@<>vNuYXZ޴W*kWG*F::򑣕1?2˃=#EMI:oj5W* T)w{򔀪5ܟ`e03uy:_&h{xM dZWPʨ܄l@3vvIk:Bmղ}W#ZEMJezJ7>js\V!zffCme4Ǡ1~P$9ܼܵ Ǿ{tGbų6C+9MUT,ݝ^zt:v=Mw!V2TwΦ|̬y-FT@.]:@#L{OiIx|h3K +WGͱJ;/F)!t={|hbJvue;(䲔Jb:@;iԢBVzA<}3!)]; d*₪v.c ~3{sK̠nGnZ.UO`\_ +΅'ryNMtזՁulzl2y۲[/fӏvNX4;o)o?Gw#j5hbF*5g*jCi4v~-z̖7:v]w}̴,)zk+e$ ':2[a#<Ȝ[Eubp+!Kխ?Xj%$t׏h̶?9켬Jr2MTc=AU+iҍߦG:mz>=mN7v]TOW(T6-VVCv +([X{n_1>AޅGg;lQ_:#L65U=h̪Nw]zOCu +3 ҂u27BȹRnf.֬oM u{CfG[t%U#haaU`FrO=f@݊Ccxk_Ͳ1A]G̥ʴm~4XذW7bUc&6@`I4oa={68>Ps8ue +޾KR$;jKL ot Hݍ ~oџrӫv4]|Exj1EZ U`@$|5429̵[GRؖ/_:S|t$ 6M`z~3'5' v[EhOHc>d$N6_%V~=֣qOHSk>[W,!O]A>{^{굍{u1{E5[)Jjҕt'@)I, +kFEb|=/K?/݈!."̺r!/g'd 55<-[uy +g]-I$o`btظ\&5$1`|u>qAHS~C+%26.:[}@vq"ˡW+֬.pDǝ]JF+mPAn1)Uu۴+:O~c幫W׃v֮*#h:̓ZQ'l_yu8mkRjVG[(=<}̹? +2jYWT/嵳oZ>W?A1Ub }/߿ݡC=[CR7R5E%]]cMpV/}*l>ZvgG(]mUvp>cȍSķ+ʷŲeM'ծox[ߗ`<aٔQmunC2%[{]]I}j\S>("@V+1>c=û#)GJT%mq# &qe},cig{6܎F5 b֠(N4>'CՐtWY +Y[=<忁[W!rG_Q 5lA=ͼ =l@_!>]hEND5qlv* +v˻)qGF5Őkw6;vNJ)TeoԏӾ {w,xW7ݲ/ݻ ⓔZ,eV(m AL?޻:_Krx%{*7Ow?P /k؁Gg}ȩoR{4nɳtV.#{S=3џ/boBM|?l^f^Ҟ-cuē$8dxTRʐW{Q_A>S%>Ϫߝe0(P{~hl4 a:O߮), ]k55{]X]3c#~Q%53ҫǤ|VgipZ@@ =Ѯdbiq+dd2M?$hkrl]~}\̙-oXP!T!L}xfQEeJVz-Nּ62&`-mRu%lX|; q͘ {+[uY fO]ET4JV f 1'r Y븮^+',}nc[2\Zz;|=۷-71_=7uQ +#KzGrIѭ^̼MPkG­BVOm-%Vyʬ~sZJ,,^!B BiU]X#{j8x}&<7+[zRobYpPjhO}В+ˮ 2@tJ-z>S'&ÉqW()b:Wd3GpxQ =LԲ%YJ>D%R7["Z:eFF* +0N+N7mMbE/хƠ]`;wX=d%-S9Or'@G4~?fٕmu +Xt/adv% Ul{-H ANt@#v[w3BU#+wc$߂2[ViJfo/"cJq<|2lX6A'ࣲ|$v_ir]Qh%5=IG \w#@vt]hkX̨NbfM\ÏeU,lbLډXTDl75xCEf[RA!;V0E,@ |fa-+w^Wѵ#؉O8ԬÙOK{DfcǗӅRcvvUP31@&]W%JI%XNՊ߱lDLy5mcoJ =*X|?tǁO%Ey7Uv/Rؘ2+ŭ)fc;ei2l+(e`v=/޴0 tA_/YNEx0UQOE *-6}nhJ]ְYI'@f-44˰PKr"""""""S@P݈ 0b%5+-T 5ܟ""P0@>r;6n[^T֡6ryku[:xԨSy$xS ]=&;UMvg/Jv(ƹ+!Ț%r)J#g!>/`O)feҗzlaC})9Bct(^oY.xuձO$'G2gW2ҖlE 1cUaw)>PmȰoUw HP<-\ z\)u*Xhsy1򬮕`>d=d[Xb[+;o]H:9;E}!C &&lK4򇏫 +f尫B&iַ up`A59c}'!g fV@eb:#?~oʻ8XƩut*`;W+ڜ~>́R5f&=ɳ]P73k3\<Ԩd%Ag^`;y>G664dk`x};-Wmt͎/01,`ՇV$l^+}ʡQ7d-OG}zg\Z5-!KoFKK:IZ]aԧJNؐ~ebveM튭Wp?Ұ=O=?'_% 7V1]]tFR$vd^ +H]glHyOWS]6[^"\u*u`*;o]l6oI?pW#MX4v +}I yg#T@- J2D1,.>AaVR6ؽi^2@tOn9)eۙOcTxoQ:~Ky75h^9k2tUP/RD^Ece7]GUrC;YV:KG2 q ?cg*:W(6DWyRA-B|Vx$J{LƛCJd~DDDDDDDDDDDDDDDDDDDDDDDDDD@Dg|Z=a1Ot,a6<.3?;/($d=Pֽ vMg8x\-uLbDlV1o:GHɶjئMt%؝'ɉn&x&:~J!IN-ֽ~Gg[nc0>I]]lPzJqx៨Ym]!%~}`{ZfOh1cP%벫T2kp206(2镀 ܕ5TׯEܒ@fxL4Ķų SapI2NRGngsiKk f;Vb +7KnПMTruOGKnzSH{5py,Vm~[*aNۼivүbIG*!M`igʷ/Ր\ ԃXA;b=t;`=7/nbc` +h{>9y؊^to~_!]B,I5AmtvYeb_qzҘ6eQZ>lw +xېtQ~`->qg$bĖ"ʀt+j ˶އP=gkWGHǟ~ޓqۖL\fVּ%VM:b*߿~#*ɾm{A= yF'Sc9UՃYEhnD6pY+moY\Ufp%JҠv`|JYdjWQteQI:>~]~ Kw 5:kR@(?f;=1rm^v7A( *쭽'`þ&~#IVnDzֺ؀I7u x]]ܳIނ>s+WYg!5-|XUox :׷}Zrk JEIﹷ)ja)@ +'ŭ=qu~>MYh,2e?x2KlnVF #{ :U'C~d+F(Su*0]QSBP:QB46NԱlR0YcՐblVdB}́1-JW(ܐ~ùnV"Ye)hӨat@#c=RV}P·e+.@ ]N%%e%bbLTk,:U'Ȭl+)+K;8ӏP mu^v@0ѕ^CX5Ckz u]&h'Rnm<}Mu̟OM>?,Q/ ) m Mgנt>w3-ͷ!(dTeJYֿAU;|՞5&zű/o A@ ԍǴ[[`KӰ=ӵ}g,/n֢zUb?zm9-W}Ib:X +WQ@6k 9CWJUgBP=dX EjΗmITeX}7^c^w3. +|2 RbΧ($=M!k-T_fn*Nmv~,giu@1X7)=5\u+|t # +&Tf*V(N}F͞?3V JOƭAeY[vҽ$i}}fD7rr`c[uh맱]89rdG'y[i vMucPZҽhN'յAVPA <{W{SVUt!"U.nbν'Hv'lY{bS]FW$ `vߐi]C⦓#"៥U]t 0;?'bC\d%(i,WmV,O%߆˵q*'-%< QXIcST[~gWm%vt_T:%n@qmaJJz}=J| O7eb͵k. $1PoevJX}l5x˱; GYW =7],VVok'A?OnE~ȪFٳʦsZM l3mkb,U?܉V^6b@im,ɣƮQ`8Fd)CV3dVܘ4-:,g  k5Y_EGa⿆F +v/x7ٓH{kl +z9AM/Ld.* 3%QҌmT|~vYP(eu{zL` 㭇i^~v=Kna5RIl;{$8@K'\'Ze`ޡ^D +, I}vյ nfSu4+{\ F{uda_z^;^R\P!vfOi1wNU@oic +hctה+cQnϠqV"N(yo^Ң&=@bQ6=5ia5fΛ܀={2QekރVũm^PkIC|aWVm"Sᄒw7uȭBaS J\ͼȱ"WtNb6$GDD@1XV̈]저Ol@2.'/|Ve_pepN@f'w'UjЗPCG__O[BUm]Ahģm/mA#4߃˲O'_gV+Q ky;>JxMߐisWúkoxxEu|{jdTE# o +rKyKHU,-u:;c ЙrxVP[G(Ā[bgJWstŖ$u:CzzBH^WÀheTAn$օ::ͼ|;-1}bS P/P!~ݟʼn[Ľu޶_eXJ)O~ՠ 6)9Jh0.OWP}#<=rx'.˫+*nrؼ/i[8mtIuLx]7WXg;zd+ wBk{AE`1gr'9Qi[k\XAf~H}eogECt2]N wG)fuHxnX{oo[Ք;Ԇw{>@Jg`Р_mZ'LjfOxIZ5kY WW |67=O3f2?CFt`6fst]tۭ,$'w>˷S/pGm>+ZYxtd*u]mߙ|\ $q'ndz~A~H |.Y|FTހX>[W'_#5ێ[R +yn=WruVM ISlSӋY} Rly_[TU:l#8ܜn_КFee]vQB\Z` jcgeR#&kt!: +; 3æ,뾾_#c+H&hJq#=eP4o k2?-JSzW~z ?W{򞗬cR^Dhh )xr0S6=Uﯧ' 6 +]zC=57,S3+ʦ(¿T+t}f_Ȯ-{S^to_J <)5/5$>:"(2ުM\U5@F FZ~Ww I+!X={T =jxkǮӗmȡ}(b}$Ԑ{5XҊ7Pw{ gt +lTf,mvG`wKO7F`pmdo6]y),=yHcdxOR7o"#L`6|y1ɱUE`p*}$wm;vNR * |/%b$JqrS$]DeSzg)WPpl#t:lmS*ا шKYQY!ʤvŎ~ij'"p~RdkP1@U4vW^gz6O9ݓf.^63*Ү$yFO+}On9[(;B*{Z20kɬ=j?k,{nӋnjԳ`<ǨGrxG,ɷ'T-7.Jk[WxE:E"#mz~J?r,<JlZcܝS3DD!9~r??v\t{tS(1<i M[ߗSokqu+B`]|>L~sIJov+ڶ~ofWCiҢS3.,Սn뢬.]c5ڌqaAWzߠ ~n`׎m2Tϙ͏%K]-G괅D7I H޼3dwSUWCXHo>{wdYpb赕ԒXotg$Aԡ@击laqP%luEf9yyհfWJRñ OrsrTtԆWCϫm{v&SïZ2˒rįvAW8ʆN3З0Zݙ,F°$yic{GבF5[W}^V [Gcy7ƫ*JXCcG͆ǹVyk+t2=E~ +-kj:kc2@0$'6~&PڡEYMQ_pvXvdefgيUe8W@,Aa6C.wz:l8ّVc6!P4.P+|6MexUSS!GF=:Gmb| Wg6W v\aX§n^Ӕb'G}|=6BSoLL8 i\|ְ?A5׭ocZ]NW#R25ًm%JU岄MJ=Llz +cikr6 I$e[O#%_Ct2w^'jW$?ӛܧ$xO`'Y>q6ǭדMUIvp^y=&W*[|7cإ|3'WF.Gߨ m:[CtVJq8td}!֮ރv;|dgyyE2q1,{,aU2[OOr7w}TNUH BH]:]3c;.EaI:סٞ9rT(֙c}w:h _Y`X_X,Gs z0?ep;gy2G ٖ_[RmZӍl:ÿj;YFz_$u)[?PMgFw)?:1Oq˶wR; +_!Cca +SkG)[8U6Hwy!y)ݜ +ڶ5lmu{ÿKtlrjfW.*ʽ]a^ƻ^kȿ*=[%}`uxl6>;16N GEVfu¯s;ߤ1j1$b1 Α!oDDDDDDDDDDDDDDDDDDDDDDDDDDDD@(OVCr|8y k,rOfaZ-rf2oۤu7J+ВuL죻Xt4?zd5obG*gQG}Ľ+_ 8=ـ5d#HdO`$u~bwC*Zwk1q>~pRo|˴yf|T8< .>`H|%Yk6<|]HDDDDDDDDDDDDDA\T:|qƎQG5ޕ(ܝ.t ^`v.*>RHסH7b""""$U녌@5! +ϣ +5ȭEgc/śGdy9\#rmV)v_mz~2?ʿ&]dlSՔS^~ܗ،YA """"""""""""GfNI:豁:^иl$>fv{dJ%93-:қ-Y_thwM|ƦJ h4L0j7Zk[bz׬ۭŊAy|R%b"$no*ؘ ZKuhzִGpNI70eWSkt#3d|nET%'C?TPk6b&Jg Tzf)nn5g!P]$ 򚘼/W" :#hv$c̳ +J50`HAH?dXוǝe:.rué߹'DԷ̳?k*G) d[{X'>NE7 SZVJG5/kG<ϰr&='##!UৈU OJ{SsًwcX*Y J-/kv4(L#GϾу5u*K{{{0pvx\k4Xm2uX:g g1[d]ھMHBBl}ёu-#!+x"(7d=LnGq?UTUw +,W  &z.%2Q{``ot6}7~u = /2n"Rx?;^`荟?#,sȁ6 ^F@$5HY|?x'{=HAr[CtUZz#O`=CuvPgvckﺪeg<|5ȰafA:m=Z59hũ ~5RBݚE9샨r}{4ar۲}Ej@5D*k8֔@=u# 'P_U +g |w3x3GnS'@zS"ylqW91fVGJn=4u&?BUGQ(r1bW^śd ЬOPLG #G}O?;ѓ+E̿@Ҭk=D[#]&,9+Z1Onյ o=krsX$VB:u^SO[חEKXҎ=;6؃|K\{;aӎ+\=bv1ּSv&F-YM1hǽ3}G}GH+?oe_QxHl<|[j#*&[ +zff+C{E{m0קz UQB* Zzv4~~spY+Dhdjx;˴VMlVla䡂nrǑcW}R{"c}`]_c&3o +hk'`:&~O-Ne$m{ߠeۉ.'vS>Y7-Oky"3yF(ȲĻ>]\{ I>sb [%nSN};Cd;/|G,wsP}ɳ^4;vV"""""""""" KXl^[omߊAӰ?z+/ϭExtxiju(t|WM+x:1Wʪ7oO{llfͽB t +:|,[ 'օJs}FN}>>/*^!M5N@E({yLdâ+ZQ~N::˚=]]?o}D5k{. ڨd)Hb [5N +Vޓvx*iFdvI'̓ܟS5q5ư{SĩH}ŕYGK1`vIK8<\+K,MulB˽Kej: 5mԎGGիٜ^Uo+؂\t;aضb+!"UTYVThԺS%b""P[lm+?"H*zE\!NVE> +.B Y +t zMk+eX(KS&޻kM5/n,V+ vlc9Q[UX;L_ }&O"pJ`GǴ^]Twa+OP֊t^bQx cuScu8ϩ1шՐկ +r^@'^']JG^匮3kSC IsexLQNM6/kZ '4ga0 vըAw=nOH +ğ2%s8-].JR(YHA~2a{?Ǻz¦+.MhNT?%520E4duj5ۖ]rc]]؀;X3(6*xlPǧ{fK @Cvg'?36qDTQQ!}'##3TY?yOF߱,5W;de8zjBEcU柒}yUYؓgb}و)<}7,6%4/&OG0eUYTQ@3[QU|]X7""""""""""""FG?˿h^b4$J=ǎ+t"[oܑ8#&gM\kwR:{""""RB*7 |~ ÿIX~Lµ>F6={o#r0ilz½O'̳=h;]Vc.k_{ww'WbՋ^֠lf?2vL܈4y,K3E]dp$uߴůSOemu;],ȱcn"pW}V3zqMlvL=G~{BE!44J=v1C_ۗi[@'jE`aկSO/vuh}d=!~bTnڐFo#c\>w7xB>k,@ʀ@}R興#r*KC `Knū!EbԤH?2jV"""""""""""""A9 -.U&![ ooDDDDDDDDDDDDDDDDDDDDDD@0gfcۑqU[;3=26[/.1`m(43BWKZJ`6l:es|-bS&^ee kc،:Y(\˸bfAU d/mF =0;b"""Sr<ﶏS^mUG'ګ22e#`4A mxtcZUKBgRu=.V]w*c2R#`cy:K Muoxlzeר"""%-ƆPdZCE@*|x8 + =ܞߥ&DDDDDDDDDDDDDDDDD@<"7| +6%_?nz[bҌUTI LƉ'd7׬1dZ`6lw<8&_Pt;QbXTHa=5:+] p<5kՂg +BtO2-MG[o9""!Pllw?am\8H AGs{K̯<<*^z!ww6gڴ=–.>UYkMV ?Hb"""""""""""yw6'K~g㾏;W>kw~SDőS][*9G&V .c5̔t+mqS*)H?zg38o_G6"""""""""""""""""""""""""""""""QPI{IM畕~G;63DDDE|:r<4jק{hzƩ*ADUQQ46#ýAN,P8}ͣAAoyy`5+lȄJ[kVJ6/ID8Yr4&E ԎQ0q{c=Zb`:Qfݕ%å0 (Tֵ|5 Rֽ*q߆P/}ZַnPRd(aӿX0^+AѾt{ntFBFڎҟ~b +Xzq̪]0ՉMYeu`,@$= """""""""""""""""""""""""""""""$'eb5tSzbVZw=LIDDDQG/]Ǻ+Xh+_$Gȕ".(۔R[}%b"""""""""""""""""9x 49BX__}=ZnHtƤ#ف>'C ^S| + NA>5ﱽjZ 1rbۋ]uֲV_Z%/!Sn e`?ђҀ}Gu@lk=#Pp7T|XUhqz\ +ޠVRY(5}&Q{ݭ쥭OAZ"""%@l񚿅jx՛JC X<׶-xVZAP'uq ؄lID>.׎]E.RA<fN*RooelmOXΔ@ +Cg2DDDDDDDDDDDDDDDDDDD@"~.*u v"ḏj&vP'$"""y}D +@>gr9Įnu⚕X!#Gl w!A>_x(L55ı >; O+M͖IJY +%[cT*=:jtAF7I? yJMu=g5ZDjB[!IM讴w~DͬF<'^٬p:lrdZes9lRUSv=lM $n,dTw;;yk}%+Z=|DDDDDDDDDDDDD",J΁ob bU F?A=u6D%ՆMo~iQ{~maqqRFz6 ǟ~JP`.{ 99^(qf-y/ž=Mv7rxz3^>m۷#=LZvmY^X{΂:bGN'r}D NG96x®xz/[6vw(L؉?'oUU]+ctV'ƻX;z4}Ӎ,,Ix^pA=8f:2܊+gz6աw#!SUw}g]V[ifx^Q|y, +mP5}G@Q_? ZN/ȵ [m'_Ksp*zR +Gjs4ISUO ¤ Yԩ6y K/9g%U>ke&%Z¶;r +3jpg`mcm@,R#Ul=N:ܗlkUZkm#}${hlɛ?fQ6G"o6~ˬ;y*~7+_5ꀒ3JxHIm(>gC[?3/ށաkz﯆0ىM{;*Q+0](vKyhl]@~YG#@7/f5A +(SLCI*FVL4rx}~ F]NїיE*XXl> Bfe AP1GS]v Vk]u `X G'lrVН=jC}wJEiYBb.;ԥ5/UN6FԆr޷Tn*BGFhp9dx9. :5WznM\skb&V~,b[N>C~s_y-E}QbF+ס)y\Ax7*_]buգ?VpUKӷQH_xw#e.k @lPye&X':WEdS7MN٫dM\ mRխPTI>;{E.R[Z +X:P~Hx%Gh69;.K#ڪmV%b-$uuwCZ֤yiKk. C`GǬ\ۺ[AVlw:_uJ*BBO(ܦ\kOgPT#[n;\rx^"}=C_ozcMWVepOo>LBIfyg9kyj=&VMGeڞdVŀu%~} f6~>aaMgAt8mהO ֠H-b-|S ˨i _2_(/$xBXJ"zXGi8_ԁBٮ]0&^'B̅+NEkS?EgOPcAܜKQI&؎{!Q>i,mV{J-:Z=)C?.:ϜYcR)?߱6u bTm@6:|@g9\v[,,KvocSk Ԍ@(&lHoh9Go5t R+հN&W? 6v1Y|PH,޻I"͛#zϻK̦ZVmiK};3Fh1j v4KT;ؙjefMb*6ܞڙ# + :ׯorgQQ`.|j/PA'8krYh[F o-[ְ`޶q_b{bOA!9LK'EQE$\~b&<>I"r7{yI"f[Ib:=5Xx[6+΢(u,hc.]k{Y, kű{S޼ϦisE t 7A>59R\9<d5%shN,Kz0aRC%޺Gt>Gؚ89mbIQkt`Wۧ3m `X מ<=ٗ^VdQמl]cmգVuV?`'fW':>u_Q!zWfܶCݔ:u:c=UsdkU Ԫ ކrkzueXϸ)z5}^?Ά۴vExTlF2k(8 +#Tw+~r[2V#ϥkL<XWzz}GnXɐOG5Y=%T_u'Z~%&5a^/v<wޤE~WwaYZH0l[^\R@2wV=M4~%7Yߐ2Y@>5.ہƗ˩V%v=A؞c9nU + YP]tl=!d6k~]K+q\P5y.#߭@{<.:&zL53: +DOuCox@f:'!JV`Fs,Kyjs/مOY cen mߞ78ӓcUhbA܀YX޻yK}Z xgg-@}zzh~[#|&-j+oUTJ޶7Vy)'S)ѲN> lX:A,z4(oœqcvОW[ +<0:Cu|;ɻ3@7 +q*EH{u~Fw+ GbnCYc[sY ?zW{6/ͽ/p>|=rOny޵R+7aRF[.eN~@5ɌĻrի1G[xyU>JX]Rv R ~ޡ/]O0buk{,_\%+RpK 5ì{nnrS>Xm~?hV=]:H7 ݪNRdm~#YC:`{; \e_{|~3_;R'#+k胯p|$g^56Rd/ǡ2̋oE']uz w1.+rٛJk+t_ 6$+؅K~<\W:+^Z߯^RT_'{$#^^g#x3x򪤭> 9Izs=Ӱt6 ql,\l?0uc췉ԊFxllt4w;|tD``E{[rUge^<6@۰ߙ8zk- ^]IuLC+A}/hsYrV½gKʐ?=[#Cǹ!ƽ2Y͂]xVJW[jsdq86bWmdWKp~{7NC. 7OF5dُYe`ģbխ>>S+0j +-n!Hv49a^ir[>ۯcUvhneW }G&ﲎ#:Wm(=u:m\XUT1d)eV6ġY]w7#Ϣ,Vmv>b@?6& u;!R0u6+o +A:rZbֳ" +l,;#zaqyʩ֋SU˺, VRLFG {)ɪ2[9<} z)#&6QA 8[N`Hl%H(H>aB=w1a%r"8f@ ɠ[}^eH0 ן $oUVAT`KFh~'_|䟅B܋W];$ |v>3qg40[[T|@-]Z~SƻeҍI+G}@݈y>q^yu_x{8ձr3SO :=`Ngd[yO:]Gr+lC7э5܍g~ٹFŪ CX']asO_V[#v%jæE{!Yca54YoQI@z7o] +)] n}s?e43fTU' LV4A\qJ+ +H$xk-zLcBtVU +;,^7.J/C tkq +@ /BNZ{̀51_NISmhNԲ*~#`[Y+.vTO#{חǼPQ5Ke^h> kD;ڪ>k鮾>Tۡ/u;P ,n;͠kuJC3xic6GYaqJkz~[ּtAX + #եGjaՏ[Mu`{I#[ k9ov5xvu2݋VG툭(nw:1aqrԕ;=*ߌTBKfNX]hw;E j]N{Xjj` =u{lI/Pj|4'H:iE@ + h:AֽoUk*55BPkДN7iPB(%GK01: +@?lDDD-{`ĝ߂꣨}: u}:ަ/ȧvSEHX.IʲVRvRS Ib0ȃw,WWZע0B ^c߿FSO׳ֺuw|67%]z"xBzJXNPjoqql Yӷ5[3S}y [!$.\+UUwPP'H3.!㩰㜏ڀMx}~9euy ]Rtz=#ϰ#VEw/Z:C?HrC cz[nEtꥎg7+m@۲޶y|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@ 9[shMVӏ boFq+w]٨6SQX,8,|\Uf.u)%p<Twdq?lE豲T GCN'ȟVx/!^7;ˢV?!2^k[TzI.?=J֠w/w48#+FҹmVXYtח +̎C?]lT>ԋ>d͞T/g&?^+bE/R]1R#=UXظ9vZ,fz ZvEVȮX yhqy_<}[Yn~?W_-jXZp5 xvΠ|2|"kW_]f#6>?(5*sT.[VN|&jBx=-׶;a5˦zm +tJRk Q$_kSMŕj H%!İv;b:zg i{ѱ/ $>IDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD53tm@w ߮ 񟈯(v#Kn6V=KZ4Z>3}o|iږ(XA0GT{?b-pvjE`~ l*IRm>=@ ~#]TEBy _a\uBZʉ.Tu_|]AǼvX= K\|<.6;bEkKo)1WUtNRb2ֆ+[X*B}W~_teq8ٶ%:b6>FW7UVtt}Gfz(LdZP@&H(Nx{֏r3{Ah~ݲ~7R h {JDDDDDDDDDM,_n = v-%|C=:XE^u ݙw5H`V[ߥz}ÿ6""""""""""""""""""""""""""" 5 ƻ!JE{#ѭf*:># fˮEuW5R""""""""""P9tS@e{wv&IX]aku*!Iހ_"&Vº=}JXcOy.O쳢EUͭbqZ)||o ;5^shH+{lI^BtA$釟=$DDDDDDDDDDDDDDDDSSYؕc=5p,:J{@?h,We +t6Վ~SQP|B %$G][֔fw]|XmqTC{;}]Oޚ9aWPVO+V|f蕈2;lCXGAH hJ""`t[{yW[I'p>.mg3D%XOsgIUOoա:UR&Fpżxcj԰ +w39oGbj;),w>4,l\Ԣt^@#Ll#e~$DHZy)UweZ`:Tl)ɹV{dM`tRz>vO @e=~uY e:0%E +!RHߩO%X9 ̇BHOXcz<\0['"E`YfH^X$A(kW^;ء-ԧ.E ]X>5~%g{Crn[|Yh,B/R@RNΦ> s)ʲbCX* ᦉDO`b=wSE7UU_-ҽvo$[魎t=|jAbY ?Jשf&Nk6?;t蓓,e>)_2kv%U5nU@Q)!}DN#lxdXq$L~F@ 0X{[~rx,{=$iC4Z^R;3sLV@kI.G`lnI{Oڜfes[D;$ 9 M aP7Sft +tH:#q;>&gU^ٻ5$읆|zKgoңˢ˜X&֥dvT5MbƎ߹m-Gn÷0gfSaZ k]1in?!e`jOw7T|̐RTlOގ_y_36oʴ7hZ|]!uOh~i~SJ{qɊ/x ;NwYcBjr46v0r/nGǸ놞#vY'ݼoNUIS5rrݬ|PlmhzrkƆdq}X?SJ^ĶBi-]U'.ΗfUQstDr\ksr3.jk+\}oat蓡zV""""""""""O)4d(J 95R,/Wouc6ĕSwy6Ukc.~áW U[u[R?P}#&R Fǻɬn +Գu(Sס *Mnܑa_b%9|v5ؖZ}:rJRjVR"b$~'N -pHX]}:ŨY+Z @ p 2Se,|oU_Hl jm݅VF;c:-(TvHo.[3̮=Ik(zY}҄߱RAY V +Q]l+uϹބS!~ŕѕyљUlr]kϑaٌJ} ZC~{c{9`t/[a6\IgH2x"gz҅G힞V% /<ȤYOެ r5rub3%4UqX vnLc]6Sgu[a"qx`.gXzRWf vz@3>7 =}e Vr[ͩ,*rFp5Z e$DZ:Jl^J;iP$jmIӌVP75p#&{UfXGxxxMj_[JԴ"@ |DԷġ]Fb\v:ޏ]6+mPA;A]b讠V=E}:ַ1{LS 7T@nOKޤIl"񽝣Ѻҍ z(kөV6PS;$lo#[[Q(~RzThћ+]t}J +SZ~?9+cQPk5)N"k{)_^P;dn}fWzBXly(>rzr3#t@]$7{ +Uર]Tud ߰W٬\;v|5/ϴ[VMBx.-KZl{ֶ;K-qT "ZPEr}˸\;00IlO7""""""""&)܍>\0tue'N >Dllzx0qa.l X@ܞ.c"+-1tuOtM^n* *@u`LDDDDDDDDH@KjiPTy({L)r׬kCMipfTDDDί kyMk0_9YX0ߙN6"o˩x.qaEaS~(l8ٴfi,[(""%O`<,lsW pgCJ+W SR:u L~j6(IKI_G[ ɮ+zr>SmjR@IfYNUY+S/~;y>Eyu0en">#2LXUkm)!0e5ܴ5,pJ`BL'y-KFT6YcSh &BwUBQ RGHnyl (ylck( [k}runU] Fa: A׮T]!F`;6eIW]|>dVXwc=ozd[V;*ږڛ[z=Ǒ ,N$.]9QbX#:y""PfYFEYKSX0"S#&U뱂]>@b""&<ŭ)f?.GȀG.*ӝtc1{Krrc ++z+){R+;nۀT/C#{RGU j!YT0vC';m;jrt0mHpYX6EE^urPK{_|UëITJ2rUQ;a4ckFJ=$_ޠHer wwͷ0+c[]vcc ='MMC4q=ubI +4[6f>Z mGp@k- l~ewWtvRne/ +?1,ֵ _Lmogi^̡@7FimY"No|&w%S,ua +.Җ2:K"Ut>n_jjCL,|VGSkY͈UlVlBV].)̲d-bۚi" v#9h2MVcPϮ {AQXc|UC{bm2Ac~l1[mUK7寜œ:c K*nr &z9j_OTVCT 0^ד_Llgxv[mt*Y`@eڱFmu.} S +(@ } F%5NM5]ŌUNϤҸ UBɭPnmzzCw7*뮊D]s|>BhqDF59P4B_WY>^绠KsT]9TXyzJjMOD, =-uSyO$w쪖[W6@*@~7=hN˭gxo_Ct8ӮΈB77n~UXhʵm@ȥ}a~swX/.Zf!Fk]*o=7ulE@>x1^gI}e%Xlh菈1qj©i" *Hv܌[ c+Au}=y8gll>[_m.Sԣ֬~_첏Ŵ(e=4 XPWA#x?ETY[Z+@\Kiymq>з*ieqUle;8nC54@5%f.r;RY= u۹5)'&>.3YS8QԠ3iA'`Mlok<||\zzY ge%]Sv`MxRoЫ6yw2;]},-Y~m}ݾSO nr<\V57%hX{z:vf?MT'GbXX&]+C+=}>ꝏSY}eZRZޠJtR77y.@%e}.Ge,Ic +=[WҬ+f#שv`v#% m`@#~a۷MnC7w׏hUTX@ٓXO]*pPKZMuFa|HqV} bVO~SpɇgYnagnIm3KG%h!nGH>koYo)WQX;uփӻEg3QϠUmVY[u1UEm_`lhyDǺ1+{t[a kc}&"""""""""""<|v_1u}6,p{.Nfhbu]mҡڭl~ݷI2rŽ(=t ]I>Fm\Nm%ؔиj7Wb O_hSm^Bm͖נ:ּSv\<Վ-JYjr益mHG7 peYˑj_#d*˹$r1rlqr֓&-ԛ c#w{:G'7y+sYx7y{V;Dr8o_WOOP}y͂u 3r\]d2R A ׀`YALWoU1myGgL2sijW_A]#gg4qűBmivb_]_9& oXOh>W2 ϝm\uP۱B=\NKuݛ_vZj kiCO 9pK +^۬؍lĭvuԗ=eF;K8ꬦ«/֩bI:P_/WHO|eZK+x:K /}mH*ŮI܅QIQWrL3ZqOnVfQ`_#.E-kºl`S:Ljk趐a}xcӷeׯs7ߤ0kZg{%I'f#HKVk+2@Y+'J6_kquܞY6rSZ537#dJ=EXb&+=EX6T_3I\NnF_MU++oCDzM?hʷ5B9^PwߞM.;7q}j!T`QזggbmYn+:ZS~|/ZZ,: +GE!$h%}«)roiԭ;6=¯XIg9n ){dr̀t1ܝvSDDDDDDDDDDD41r.R={ȐAןI7lvV1̨Xhz]ws DF5d5 +;$?zF#0ѼkӣwF/jo|6@ t>&m2H#DTn1̥=e:uf0sekJH|I;$#JV{ŭvr~OVcj/"NbmVjJ%X4kzAbǹ$vvjW3ꚫA`A&T^;>gJT6>%x5-5 *O$2Ore0pJ*Js?lDB(bC['?i""&ng+r@V&DDDYC]h̨ +9NlcT]r7)O ʱiFL"@nK**]HfH({|,%WU$]mfi5S1f$xW HR?/zlDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@7,10.*ãDyIJn쬖J1KRGA==~Vy ʧ%)%(#X =U=U`Ng>興ˑJم1auFr!W]G6@f˯.5dYK+#7eN)b}O$d'1cdl,ZxΝ]>pS4v5e1-Z@}>׼ʩQe*6""""""""""SܬDDDDD96~u{C/~WIDDDDDDDDDD'گﶯ֬R]{yWS^9gWZM"@w;_4?X 7""""@{%\~E{-a Rye\g}y +$FPGT J'EՈlв:6?%DDDDDDJ)y1]v}/$X{8D`UWwm^57cZ4ę)VA d]e`'հY=w&""""$I·KDDDDDDDDDD'ڟjIi.IU]+;|=-#jemf 6I:|vg+9܇ɧ)<*2=ȺJil}]}lOJRHvŜ6+=B]k:&1yϩZ} +W˱!}&CA`ǾUv0$'c}ROOr+)`ϐOߛF1IԼ\_tult{ylEPNz]}55U|X%kK^H>G@KȯKZꋰ6(̆3Z뢬ZvGUHkNMZ'u{󕹃ecfDnV&,qSYHFqP} 㽜l˻Sa(n]dXe['$M쑅mʺϯR}>O1ڎZ=$J3́#h?[&? 'rUq8ZV0^~R'?'+Ʃ `voΞƾϺң~AWCٛR$C~S&Rŏ-IB>@~zuK1I'y1?;ܘ-xTm@Vd;G> F5T>6ەK^LlUj\#|DK˩c-'AG٠@W yǺ9NH+55P]'k!e az}RK<'GI`콷\>ObQuos(ȭ +ַk^_Ukg=C;22,Z`m(ü=*H`O/)n^m/k_.!F/< %;#3[ & *ɫLTG9uգr^""""""""" +ځ/(澱 ?|IE;K'y{hEK_z+_?%pa}VcJ||vf/g݇RrElKDdr`xE{ڛ=V4{ -e+KR +[ny۸4S|NOI?$x<?}?V5/SĿ.2Z94O_8%MubE{-d~Dln,'ֱRlpLF8xt֝yM66Ml)pƭOڣL^0n1ȶ{} ]#G薀ג vff<}OR~׮u'}C`.!uKbۗE5*?sճ"ǴEzq1z{o2bE?$<Sg*#$\B||kG~Z)[QP"7Z3$dgLD+ҭ{mw,[BzNZWu1gQbKhdbfa)+OwJ)Vm=?̃l+ԤXcz^dݱK) +zIG[ȿ?6p2qkDiݚ\ +[w ]1{<羹?-4Z)~z~ygΏY*X~ ܞO>[ů̯9mB+7Q=ϻӯ.21292+]vas".O3V[jޫc<=P y,bJbؓ\7EJܘ,#|7X8XJPFӐ7l޼+CsD%Xj ){:G\V v sY~3'UUg^DRo.+ݔjۙF=i $@JDDDDDDDDD/ڏ/k>+_{UcE$D+y'c}WdI * +G~rMT +ha>&Utj{~C0?=l*u'ŗ_u9,HߩB$w?޽@1jЋFt|7*qgRɺGWV. 3&-zk<6E*FHuה55Rʧv8cxhĞ }N̥d 2~_vmwTX"JzFe}??.WL2S1PWu ]d-ԷUo95f@ðNW`}g>eyGp߻B?/2V% Cxtdq\Tl­3e{s]I('}IfďtXlA##8O}*on JRk@::#wMf|źޞA,Lhl'7$g7%`I!GpW{70zTQBk& g=_v;Mb/WzK~k9ijȱ颛l"بUm,0 &M*} 1q|y7_n׸kFzYr\nʳM_di<_ zu:(T[b#:LQK yh+n5WZt hk]K_#"ҕv򆢷evE,DHӱŧ:)+]Ҋl"Zre TA#%>OKv,i$k?8\:QŋZT  u7y_JDDDDDDDDD+ڟ/i ע2VXm@'CgCRE9 ,PDH` =(~Q+P*'r\r|c鍆^~'gSWJ{PtǸ`:?t`7h X+93o6\#e>v=kQCCdt&,I&

    [NZV[kԲ}&˂T::::ޏSC_]7Bڣ˿qq~1$b"""hY3:2ok~HAoDDDDDDDDDDD@׌`eQ0`Ur!ZrUkբGZnmIJmą'd@? qd5\gF*]0|>7(g>ϧraEH{ZT/٭=LK- W_DP}4-ݯʱTcZ/v'2vgc~w&Fr ib;*#Dz>~fg3F V|/({1-M2{@ jed נ?!ߝv|ZqũK\0.IPߙ\ÍXEanWdQ'D7"$!@P5%Tv$"'m%'6C N;Utm߽]đ-}Fil&C+l^?B<=|zNu=e WVe!eg>}imz)oezFC*$Y&G-pqu;&ASc3o޻jzH];q?4@d?H+OI=V0E+/ɩ]`cU۶xQeXV+*hyznAceFu׏eJH@۰ҡcZM^v!X*a3" fm1ɱ~Kn-6 lvlv3{3'A`?FI+vKgٲ~ +} ɾ]9XX&EUiNGyL[E=60gQ]KȲ503~KhWa='o1yrO;60bu:݁?!i ++ uۥ?xa~dEOfҌ+10(;j&5*o@7Od>5#@(e@Tvm0g׍6bTe/PfRzlKk||OǕSt6~/\놡>>sK\lw w]ާ5}>r=VNU~OH:'w?\Ҟrq}tm.*=B 2xX}1ɳn6F{eˣ+&nVKmִ*6|'8k1*5s\C u~}#sfDDDDDDDDD-RTlt6fFW;xP}MԐ?C> SFZKT=w(6#8 +(a`doCg^c'ֵ=AQU<$W BT:;~Ro8<b&;k[&+ Z cxxl#W"YxUx>UEa[Xu'22)،0ёXx?0Wz*J#ƻ`חqve{4 hu`ulFeE}JǙ'7nTq츿Z,>7{K7F>&k} y$;?!4|<-S, +尡1/T*5^Hu:}d)?˿i-^KUCJ@y'̲-k$'BWr'9:)$đ@ Y zR~Vc1ov$eZzB뫤7p77Q6 +fk)FQSjYCz.cv=WZQ^)_=ĒI3RgqRծ1UjƔc 'lLՋ#w'dY "]{\PtJ[utaX|U7J2^^6dڨJI %Vj\JY+ ++tJA~m;w%qSQ'34DDDDDDDDD]cT\@DR[sr<^G[:“>稞szy7}'S􊷽kO? K2?Ӳ8]yWj)>b%%b""""PG J1kL,a\u$ÎlDʐ5' + =$/W\0=V8 Tn|dDDDHgi3%b"""""""""" WQ]Xh~{8Zkq2T}p73eeujfF +*H=od%3:IJj^B{SnM(fǾjJ/ۡR$[aq]|7"}Us̖p]"PovgPFb"""""""aLZxYxObS + +*"fb7%b"""Z@5&])5,| On)tDDDDDDDDDDK^O@Hb9H?a_£Phr/@Ծ""""""""ceG(H`#~ e9v^֊s|4'h +@>z$1{ճ(d늒"{6;Gۨ'حZAf z P]UT( _vrrXV[篞DDDDDDD{kg@.$Z)g== %4ߙSW+5qmǬM֔z[Y,ڈ\ 6:=dNkV,U!ܟԬDDDDDDJnV&<ңgJXO3J&g :,_fMeJ)8&;| T:ʗqq=DDS*rD*.S:Zw } [+58E'I a˯ @μ>(=]ĬDœVmmTl}2)Ev+W=`]ܿZؠ`02DڼSZJЄ. X+6Oio[SU7Ae~DhI(5bTͦpGǧ[H`q}-;2V& L3,W谣t醶^sA2c+ՙ}&JF2(t݇}gVX5 -^M +uWG$oEAك)Zyo3?FG11iYOIBT|]zw I+RmQg7%?6hȯ)zuuv&,G_HutlY$3&NU8uZ`6u5כrʠt ?4bِ^- w[f,,<:MEv 1p|kD6J*s`m>ʞfzԼyNW־#YV-yh5ef<wV"ns=8xGV?MhGSPF?e-?Gl~BDS܇tP=>IpTO7a QN9 ~Ss~ =LDDDDDDDD(c>Zy2_K`Ag- +W)Y׷2?.R& i{ҽWhw>Bhcrx.=E[kU.̩R̍yKH_l~g[ư ͇@ٞ@8Vj#2_ykF3b &X#|#Z5EA%@]v]6O*;5 D YCk8NSk ؙ@hRZ1;u~RPr6&0z:K`z ~]?gqDZAa_~۰ZT/Ka  ; IRB˰ R9@?%5ozk^E +6ק֞7Jr +y.m +7砎$p_'GHeX^T(T{/SR +ԧWl%fq\J,[f$F=d嶥*]*Ib@2I69ŭJj#v>Sƨ)2rӽhvnT>ɱS=PXuy|V7%fExb5X ťS#}s02k)g-ktǴrYh-,mv@yWtOsWZ2Ǘü;4:Uel @wU`Vv~2.brkF +VٷM^SWQNmV~o$""""""  ?r?@TT}R\O3t?NOK{hH̚lLF~' wMc!Vl>CsO111/7vG| =*o)tJ `Suށ­;#=DE + nF*d5lue#D~˩3 3jlKk}fe#CJ0 >k`qbǬ :7&{j[ё*AȂ4DcTHE + ;:[3&b$\_alRŎSY.-=7;@D7rX&-[$t}燿_KJj5F3O#%uCHG?krm|- b=,;!k<~{]iZc{It˭mYHaVTnruO_.+(=&Ĭ5 6]k%b:w֤X +kԀ_)5&+ HWT]l^?ټSB]ți1]]E|I~&z()X=`%}؟2>y""""""""""""""""""""""""""" +endstream endobj 179 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 60/Tabs/S/Type/Page>> endobj 180 0 obj <>stream +HWۊ$z ]#e MAuexfX{_5 +eV5;`arR(9'>N_qz}t~}]_:].oo?ܦVu9}Rɻl=}xkxqI)5%, 2Mx0ˋ9/qK t:Rs\aãZ^//qYŵz]</! +5qJ9dx^[eaU.^Æ^iTۅ3}=X]n)PȪOQ&86:Gh>n}bUP-Tb_t|)ˍ,r8>߷OAC"Zk&Tڰ[j +\'. 9n"[q޺p3w݂zK]윐t߮a}-܋6g;ǖɬf^hDKЁAY6M\Z-\&oRж]їpW2"K{'߈&s$)}!홏&/y*?'+Jsi}c1S&VZŐ2Odssj 9t>9s \=x0qNe;WTFߙ45t䍔$~dM z{Ir peP#Gʼn1&iЁp*[`%ݕ 46醺$.5]M@|ʽ&ox"ƟkP麪Glz1[ 3%*R\G:؊W j$R^H$u.n+:߰1+<3#}mV| )F.M!7gR([;є6LqvE9gxfYγ 8ƫ/cVR`Xy %XΥuX|TЗ˙GhoM>م},y綔Z վ3xI:+(w eD !DtS8iSEA#}&z6 ـ3;f"0snrHPnb|?-gЋr-;,]cG2إY@m74ҔvO}vz0-`ʃr}&=uM9[aQZEΘwRK۱-b_i9W/@T۷_~EZ*Fd]ScҦ"tښ^2 ЦNfkF >2+ė*nA'p@؂=۠G[U Rٻ詍p0|VCWSXpyw簇&9Fݐ!.z9Z `(!r4A83j-d(~&:N߄m8YS&'H6'[Cf*逷ˑCdZ+ՁR!0IثdHht]˥efAl>E@ 1Аv|l">jr.Jr@ '& FSu3ZMN'O>[wC+8x";"gZ#LZD!ansJb8"pѕ;86@"fgSwy#0 f;t6JJ\P +Kh"H#CJ꣎2< R]|d1Ӓހ5?/er͌2JxַHETXTZnN޵<EԀ)\ش-4r)l9s"$˸Rw7])[f"95=pEecCw-8eHdS{N<\o0X >q v-rЙ^/(wYp3a;wY03 +% 8@_d ?sđ;) +3ҋۺ B.tU;#`jCc :K͔ SI٨{6jt;&K'FǦ:knl]r9QxӊC$r@2E2E,QDž`Xi +An2.V"fʮfV$plhB+w]D6Bz2{ X6[hrlSv#)2Rdר۴R$e%eo*_K j3 q6Rܟ pUƖ33HrhE)='ٙ,3Y]#$o1;^ii3yha,[`5:k>o8K((\`?u| >_Bi <\5CCC+2TBk'B\`9S# +}>d2uuȕ˚?馝C)u!5 Ie +MؐwD^pie҅-HG}i8|GuϷėhJi%ǛZn'N}Tp%~@&A +endstream endobj 181 0 obj <>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  %I!1A"Qa2qB#$34CRSTUt%5bcr +&'()*6789:DEFGHIJVWXYZdsefghijuvwxyz?b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb""""""""""""""""""""""""""""$S|gقs$ ༘w=Y'$րEз qϨ[rÍVg^[}|ܚUĶљX1;B=tךk*U)$|ص;r2YqjuVA@1ϱuBu%AEEl蘭C)bLFԍjޡU+SZb$:/þGؚ}[?n3W|vlw#s܋[`85eM͉պvэBbU?SNgdoϰ~&#e5Š]Crbח4JmfS+>z/Q_ ,/~;޹ z g۟v Sʺn̪8߾NʲiʥQūpJ$'0beeFHA#o)I* +nȰaUT1 !>prݲj@|aщFD b@$ p"{59аrNCbE{Aկ CSRXmȮ3ѰN·onvF=psb +[mT$DDDLu5}BQ>uy6Rou u ]wSqjy?o-q6"'9^.>Njc5[[qb-FgSVc}=v9 +v 13tz"y؅yrbFi!D]%MV^˗@ +: hdxC21`aν5#4xrrN:x׵b""""""""""""""""""""""""""""$7]FIeŏCud1WGM!l}3h̭`ջVܸ-3KQ2}∬r?SY<6˹3ʭ֦̏mpYI{Š)})!WJ8dbк  U +5K '΋moBafunuۈC>UGxUx t`EJw@{Y=Ԫǯ ;IWN^bfqXũSsyvh'%A`t@WF|2EIw#3mYgıUntܟlk1cxyK#;ຬבmU;Pm0#['|YW«)!Wk`QZ>Ӱ$.-j^^Z]S\b]B QvVDP4 c_QnOFE[Ovߩtr{o_9il{WOcX1,E~Mk! +1B[UavU:s6FH=GVFo<vF}Qn^mܚ+!ebX|vFEDQa +:%Y +YqM[9SZAn<-Gn~{$=<|v&723Bo},ڛYګ7G`A AKN.>E_}lUbh($?#l+ZXg/x5AIį+cS(-]Y}η]VORL{*[_}–`>]Ǥأ,zZ/chgn"k{`>=Gied)LoRde5+8!؎{0UB&ĮZyU}7tb|oſB4xbyg( p#CZt +]]]e~ 8R](FPs1dX5Ԃ/V?U~+ՕjaWWdO%/:wSBo6OȆ ;BU^/G.Y0arB +ğƾr ۆUAMckR?u_Jzg\E33P7K/3uMI^+(UN彞xߨ0Ȯ fv1,/>_p?Y]e. +XUz{{c؍Nnq]r\lT,yEݾju\WQ']WW±Xmv[46\l6x̼_/dkz^9{ ^d,Pw 19Wbk*ߧ.@К;~ÝRl>}wYeԞ1t.ug~~uqеb""""""""""""""""""""""""""""&Z#"|at~(P~3:q5VO \ؕ$ +Z; _NǦ)km(C=+V-HxǬnեGMjUO hm^ŋ@`܃ +P0;m` N}uѰn7Eka(_݉+ +}i`zu7̕TDP@޵  ] +pǩtƫQvfJ:n63* v{y^4"V=1Lŭ-E J*( =ħ-xZ8ٔ0ϜL +02~3➗Z1T|}VDXTGȁ=:|3ON#+ %5 iip^c~s!ĥAzr3⎟Z$T6?0n7OR;n*|~Hw.\<4n:mGa4uIfxXP+QOU +<;L?px~W\i=k[rV&qF,Ay%<( }phU,S\UH]vv+Wֶ!ӱ%b<!~#=ʞmgiFzT)ZkZ;!T(ߖ;L1dcW-Eu:ac9JҁvvNcO 0ݝ\ĢI$&@{ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb"""""""""""""""""""'{<'S`<>C˶I +6gAczNX0w{<7"20 + t6t>deWw`ysĹ,ȃXe A"+mAވxqNv>AuYv`o{>])f:I*Ŵ7) ӱ,/s +b""xX0}DDDDDDDDDDDDDֵb""""""""""""""""""'A:އ|;(#@_5!clzM}F5FfJ0(xJOb~]:oNxtT,e< {oW\*֭Y`썒\:+/IJÀ6@#:>ex+R=ԵJ ;$36:P-)+))a[o@z8P{wHes=ߥsqɥK?w23[c7W(4mn?U V"h|!2SԱn)`'ʙ32 +/efQɈ·Ojpުr5`₻ d!,66{}7U"bVU  ul Է ^'"wkkz4fWbb&>^s.Q=JC T6Fo_t_Gfr;^)]T;c+W Wa<;xuL '*Y%kJ.=ӿIb7D*6#!]?yMmQ]r~u:>. ғg+o3#:ڭrsP6~D}W|qmlz1)+{AZȵj`KlS=vt;o:JI%ObT=؉ =}Rp`Kp^'f#zs79:v5B4I#]ؽ[H;|*XI ~}C4}lfgꈪXZw=:ګ;*S} Q6ErH07s7LIHq8TXǏ"r y ?IAOWrQPG^١F_+9jN}mf \GnoWqzN'e9[7_Xrw(k@)Po6uCg^,Bm\ ރͼں+}'j÷tAM^?#ېۊ1:!Iۚ^F2g.qe E')lM)+,Tl'&KUxkŧbE  $vt V6>R)}|[†l^)yS._OBY`W:@GoeUn[*UipJ zb{4cC/;Y +9qb}nIE4[8Gn×Pds7Rɐx^SJ?XW5_D.Ff~M=KHȨfDyYm^N>63lV$p.A>t=&n5Uc%LSRaĖDq>]|j찏03g3cY[o@|7[X#~H#y7v; 3w/!p=Fs(TC:> q5Bsl;>}t+ i_3I^XH#7?&Kj{O<}Wv9kϜkVȣW/ɦUbur?&c~m9&NZy[ga޵jgޟ}e޽ʾ*4=N^11OXٺTsv`m]jHcTy|3OڏdleNV8tx~?5]'i/=A +E|#@܌,`Cı:nx`.5NjNsh~<=QlS Y_-}#sʴU[*хoݕ^;!|m7q.Wg5ϐA|k,gQ]Ecz?Q4z66=, J="U{඲ι~L}&{ctJ͌E&"QS&)sb+*JTG;# *RAy`WAdv= Փ;[XxJ%tN멥F6ONWhSLx}w6:WYWFI"pEZN#鵞~}Yje=+ @ZttYy)kȦ>Z|6E*k"4v:>JQ]Fv؞Mܝ~7=ۂ瓓O1N~wUxyZ)'_I԰Me_Rd+ST]@pvA]}gQl5'|.Zﯦ'e]7{,E$2 S\|qϛɮV= Sm-R)u XV@ƾ}f9>db=3-+ sh{v]HUicێ8 2ri({kl5ǭxeb|{ (uMe8K!Fp~݆Ϙ k|Zn]YϞӼkFp>cbR= q9j 3%FV#1^ =u=k_ѝiw~(Oid]oUƛ +R+fRŏב.5*aWj IXyܮ]#C($k[dm/^CQs܌\UM)nJh{~"xÐ#gU*F}ϗtuNݦG~*ñf mݜt;DDDHt.cf˒A|D~MX]P,A'wb""&,|םN#a؍L_7 s#3Xb;ǘߘ=L4;%=٘,~f=wQ,~zLѵb""""""""""""""""""'!env5+c"Dqއp Oct91z377 P3y]U,O7 UB:_3ϼL[nJ`C=D׷cَY%`YGu~u][b5PݝcD\D'q-â°IP :޷4ݗ(v~-h +h$:>Sx6%J-_$dD,=zw֫ 6=6Y џuuK*Ѱ +˂Gh}n;5,EGf] tS%_t6[˶_' u|n68O`o=/OteXjRCՑ`;o8I]` t΁cs9en=`$2TQUIPz*|Ac&[n R81א0ձc/ Tz=~%a@#3xg/=y)J8=zuRI\OQVj[|\*TF]1v>1+,mA, aU +B=:wŪ =/"þ㵴'qF'T?] 6'{p=?r}Л(1ևm~-s]n,QJuuJN#9;7No12'WijW۞xA܅KzK55\eR,2V ]Ivx@.tm9ǘ^>}M! 6fF{9}s / @ʹtQu`3bժTYduG ofPo.'u3~FR&T.Dl+ oMn@kKC@^Zm+6̅|[hM ihwј_7[qXˀA /qvSbe U,r/.o#IE**y w*?'ӑqUR2u<$m.eT} osQAcU}IGX5o?3eNx]>s2?"_aklVW@{"#ktV/Jۦp;vd&z#$bz +H l>[==UhökB%YVePP@}V?K1\_35bHfxW +EW펆C}}f|GQWj[|XtC|:.+2PʅwY%]1v^]Bn,@e(BgPk,61^LWb +NIdd*/@$3I={B1UjýV{vmu[]8V/AOw=؟y]gUg q'd x=V\THd4ujwmXf\E=ȀG ~rZ$vw=6Us +~# +uOo1ܶ޼@=S~ju6C4Y ::5q}-UXC´oЙ< 4?iWC+3& &}o2iWߑr ׯXygz[`;)TS0fيy\Tk+܁lL1S`x#Xk &b|YrT1hlg[O7-.E@&O'oӰԘPu |Ԭ@w$')ԳOV`jo$wy It12n'1uz_C@AsGV|\2!eS nDD@ҵb""""""""""""""""""'s_nKݖo`L}"+W.Uf@v/qu!xuHWOC/Ŵ[]yz[GU{nIg,v_ {/Em^f- ;5°{7]~H+vpWmrrcr.F EAmh܂L{:7^ĥ\Y}\|:ӳR<ZH̳y_e+hn%N*ϟmDzN}d=mf~cde<]_FS/mE/-$F|V+hL"n5tލsTa;__0p@Iun|/ŵWZ*p r`@i!)b5ؕ6h{/s" ~~Ì_zOhs?'ܻS<~'^_YN>iRo4:OT-S9+jrv51BlM?}[zYK B;{,-Sԕ +zNIeg^#GE_u6l9XYY6k~ 5I_CI*j+Z3qm&:'OdWƣ'/7"{o ;13+=JldzP@Js+|D44y eTx|3hkV8bt(.Z廩'lwΩ2Q>l0G(uӪMkOw %=Ƴ7RwƹT|S 3YGC.nEzO;mw5:T5cx6tHdmUgrߙ-\|M2bWUA֔#9Qj^l{7=uz`UMH\ @%v2d5%V6M”w#[1͒ ^\o9sz|J3ay*>csRڛƷ#"."uGMjTQT3@5:-³-wcP2!=|D/Ns{1G +bF +_21:=fZӿL}!s, Ws"Y,C:#}Q]ZE/kKֻ;%D컰8XU'vzuLtȭ]Cq +-uel~6']POߩH^Exk+Ep UƗ˾j"'A yOb"& +qV-Z¤h(&gԵb"""""""""""""""""""""""""""""""""""""""$_\vΨ68cI)>|EozO1fUA~]8pwlOҭwVbBPI w$""""""""""""""""" յb"""""""""""""""""""|-P0$yA#z+,9!2OvFo>_|%`H A>"xX,ZytglOf +EY @`ޏWc#HUNIjC)EtmH%XlLYc''ӰP{-*T]~)( N4:S'ɹ""\"w=afӍ ?ȥda{R  O- S7\Fo]܆AurT7H^qXv5׏Eu˫);fkb[7^aZȁPIb#<tsX@Zб; Oi^NN']Eqv,,>^@>'!ȍcku*uZI?nD﵃?Ou:7ukv mK*5m.heePʠU|:YQ#}mpn vHF^WHȻ9[7Ti{ &c57RhA{}mϐ@!E$F;hW,Nq =}GПf +6{6OCSAB\o胣:r3 cccEu u/Y`bx nD{/N^JPr7%Ã#:OQ¹+_Pɧ ֫UYYWA8ӬbגW JJ >ZB  g +@a\?pAr#ڞwN8*EMoG$,]Dadccڽ;B^|, +@ց ~T\ >R }ϋ-J]́صL@̓g<7]o^Ź]y)|v=6*oԉ< ta]9}D7*B }&U 憷AC^AZ>/˸#Zsdث`$to^DD@ֵb""""""""""""""""""&<*}Nٜb\rj+2!벷-6};Lp~v=tRf5W4WAPHWmH˽R7荍g8u[-=6ρ_ZSz[vET*9-Me^;]zVSѮ>\{J4nlO _#nN)z>SKUwٸaXkdMP6xבX?J`ר}Ώ ij%#`HZ"0e` |#h{@5#^HVHzlҤ6EXkE +;|Fd>SxV*6{Jnt,KYyEg`u&;ԼSmx'?.daZ~>ό{><6_g}L)JV$7.Z+uK)?TWy`U:#yfvؐJwNLr0W"@M#bnaaO"x Dl +ˎ|~_L諓 +ʝ5 |;>`=;F˻jF#0<[(\,?0$CǶrרW}/'3 kB 匬A$;#FkQe#j~"_`N6^L{9Җ kЛ iC #ay2*Ϸ0 Si/vuJhUN +jμt'ç#Rwٝ}ݛL;EAH6Z7}쪱ڞ)`> uߢ5jyz&tSeC"q#_B x_)Qo[MIT\moݫ=\׵f-̭?=GUv +_/RG:2pr ,* GӼ̮;"` ] +峹)=G//.r`2:m-+h"jяȰ|m,dKoKOiW`\Cl3gҝ/;4ب+R+ff`?t!H> +p["r(keo,lGpwŴOom#%sa($k%=[ +M[saa"X.V&;#p `{ ?x{=6Jy5;osޕԺRv=P@W4~L_'IŢlV\lw> Grω~sK>q2όrϲ}U=?Gf +_᷁ßms?^=~؟nGDlcƊxk_Z"])ž'DZ=--d,Bsk:93򽕯/e޻J)muىu{ixJMsak0f'˪PzRRk*#]6N6=ݗr]f8'O6{0i'T=£#tp˚ +A\NE >Ou> +(T"E-I,B5lf~6{C` ̝Z֪rɻ5d2 9/uw:X +7'9cu\T)Z+u-l6(ml5xW?EX [XR;̺鹂:]UHdQwA߰wN[}c:w,2OҘc7UcǏ9zvٖ\Fw|]oc?IE7;nPխVAC=>sS 3.1o|Cm 1@g hhlLx];$#^!6b"hl<R]L>s._NA];#iƧ ĎN߯:nP5/a{z>SgGϱmiK ?Qg+N({b'ŵ%XA0A1n>]'$}' +ݑ`U_( r=} ~=y(R H?xt|;kJ)_R6}52/N[$T+ G=rF~\:ҶNd?>3ghz+KQ8$@]F܌j,GnDw+vq̽Xԥ|vRX@vO ޙuMAG55)@l9\vy|#;Rf:3\lQv#Dk]/6.s&=xxЏgrjd``Al{Am05j::֧ͽ=m*?/)B۝4ZD>ٌ1 **R + v+DڢƭkB(@x_)ljp[(Shv:; [0]hU{/-Lueu&uR#l2K=N!r,[A]*슕jD%bI;&;bPqݏǛlH\ xJZq&D>Ku#'U#X{ŔF|GJĵ猪doַ0&ujU[UH@ܬZ+j@a۸?MŤЕ m=$|a|\g{| 7DpҨAaGml.Blݍ^ACb+pp˱0a#s +./j؃Jw{_q`{5﷑~7B@!4[c!g1#{c_9:>?R^)۸z}ϼ>˚*Tv5:OQ¹+O/b7+kTm~5sHA<8v]/ޚvt|K.71fח!:ȕj%W⤝צ V)}|~ZO)FI`A*I$[&-kUjU@P<B|eaS]Z7l~_t+R PTmx?-}'=3ƶ] @fΞQєn-@GpUI!u$ I-A ֦oI,u|7Łe`ڐt}GtlqMq +J{vgsiCSyw>C"+u?c}/Lǽ'LB+6(ͥ Pn]I^ߨ?I/JʺÕױ*ʔ'  ^}ft\}J>#އyφ/志b^j=`[PqԾ} :_UN$j˷aiBbeې.%OROx kODDеb"""""""""""""""""""""""""""""""""""""""$gZ8ڙ7OnIO +'7T闞̤Ȭ##$""""""""""""""""" ѵb""""""""""""""""""'t7wh*bjA{&D^cu|yyn z=ntYN{eDm!̘y-)~: {f[ME#?08g*yWDde;lmq|'89M6 SX ydՀX i)T~']>~vu:+gU ʊT-[#ڞ*ݎ4`Wֆߗy)(wA8r?dbe~awS@r׈rwϟؗZEnx\ݻGq$ŊN;GN6WmOfeU>[;^G7 fI(YB!%ӫc=6_J |< +A"{)ɰT9+!+G 7.,$;Tu\ZuQ`TY؟ ~^XmlG9#_>>Si;f +gf>Gr1a}xn_c/ߑiNCckg^6q޹q=+gOMȮ*:!ێ_Y{F:wQqe6*{]q=v͗ɨ*jrU8%W/mA;-k;odqבssreZXlP loS-}JrlVVWe +4Aס[[$w6PM-8#irZ:=Ɲ{rB]Ń$[l^N]RV2`|O~z>FmDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@ҵb""""""""""""""""""'soNb[i* +A k^uٌ6xٔ<'H +8uDspWPem<ƤEǧ4#96Yw uM⎭mJXU˷aEy.:a-%=Puy6#f[Y,8_FOY kSxŁR v@י37|y FEvTYS:e+~}>^؝3.JԨ_+_\0lt~D~2!p}.#bZ7=sV +Mv+;7;TjA XA"huk dUiȶo]gLҪZX ZFft]n>u6k6%kW BO`Un=mkVԇa֛~ԺvV5GOm"lC%1ƪW{ﱮ| V[]6YJVϥ Cm]9YvN++b|$C'Dv$MZ0F8 K2"5@[!9lJpPY$<g# ЮOR}f kVn-w!O-c`{r:yQwR]moݪ  v +ftk\,ΑVW[@MK#-GdVu])mhw n=]CK:WD#$ +xxf5d*@:$_X5UaG]Zt? _ЗmghJU roڏ1Ql#l Ț+i+E_r ejUxޤqǗ7_͡hWK<5I>e +,vN15%2P0*cz """""""""""""""""""""""""""""ӵb"""""""""""""""""""""GNOb;*ǁ-ىڒvy~{<'Pb"$wTV_*ȭu$1~cHDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD{Եb"""""""""""""""""""""Dtz].JV +5mfݻ oS{'`y"򲪩Vt[HΌu1jSVob[0<~$!4:& +줪`< c⮱u6\|5^锎Cq>qSbjFO"=La+͖BU_`vؙbvx V?|~\4z.?Vr2t=N&.eYխtm؏玙nA/¿1:UX#sr_ +/mLOӢ䣹hO[Ps$,=hze{6} +mXdf!뷬e%oP R + xGc^ +ţfX:n%POO9O#-Ǐ#B@!w˕N +x8UR|' zj;<+pO'vrm=e ^`qTīލeػKyiW`@)w-4;yļY'*GCwߙk+; ``}5>s܎i፵B($f̧>m.I#cЎ{=A&_nA]AOב&QveWJifՀwr%m -GTG +(-`߸qd ++};W|u>S^i^(%6@A>Sf)mJKKQ=NeVܷ)JGr[}W$Z0r1n/@t}v ͼ޵ۍϣ+?n VЛضt  ?k X sGf~XK/[P[zX-QP:.O`w~^ bdǵl*)ރo<=RvUUͭ÷쮰CdY\KlqqW>&~1+ũm!V ,k>dfGYvG@x+y3Q3qX0ؘ23`N,@܅Cѷcݑ,(ld("#cih0jMQP`PI?,ow>*D _{) m20>V3bԥ$tdձrW]'%#6{E]SΚVkm6FGi:1^*x%Cxt~#:S}Y^OQB(XS'M42:&-DXb.lߦș2z>+/Lj:S=ngl~].4SUl9?Q*FԶxx7ڨNhw?A>:6mMuVHbvt6y.SfVYK(!C77|_Ww6!e/5023/%JWx̥@`z>a`tZrI wv&]1I{ ݓ?S^5QKQq6Z <~w!yMLLk:~AFKv luܺ6.?O`nx4 +3hB}L\^F8nF +j~$yn~`L]S y ैVW UkGC[]e|[6v*נ;3ڝkhKyKQ59X.f꣑(0 ʝw+^%{'t/uZհe*C/C3ޥp<0pVfVMY-^)bh]C6\pjlUK}*]C* rhjPŪ2=wt\*z~-t GI~N&^($WԱ] ݏnhE6&+,6 yn]oś[Zp9(^z'9TbnLj nw,OAycRcu5zU`t'JXT@lNk̲'2ʪYВU EUH@7!¡g\´cԢρYJUƹ+7eYe*&b+ď?؇?rֻlnAQM7.+h !Ňpyyw'F&2Jx|Cl' ogIa !yC3u4[oRVyPP* IҀğU׳ g.Ąǩ阶&~e߅9VGv&]uC2$W|O9>f>9]EA̬d`XގvF?K:)VRJ +x ~f>2u^?32kTVt<3dWN[HΠWjVTrA#mr7Z#Ϗؐ96|#7"mΫxf޽B;2O1U6Z Ҭ NƵ9W/ujUR-X&{z':E}aux:fk2A.Xnãj|l<{ oԏ|d=Y oS[iB2 `FAo91:06{!HJ˳tX4 ? fK`H yoN*YRVmeÓow)'Q_įվmy2:b4^ͦ"κTnKWX&H +[rB~c&DD@ֵb""""""""""""""""""""""y{dfwGl|qSG>+!Ɵ{ I( yg4gjX"O|:na6O>?2b}|8YkvևaP?uQq}Ź5$Ҩy<{Dj{Jy-4-m}b?@(#G"&Y {5f#aS3rT@hMNq!r +4>?\7b"" ׵b""""""""""""""""""'ŪΌIv;}g+Ѳg s˲VG%@6߿}h}$rX HKHB!Mx>Km~ڮAlllo˴.dfb\h +7^';lԨ.Z#l׽+:fN?gPǪkځb-S#WZgPZ%~]|MW1DI  y7Nm6qU +Bj:'ޯ*: :,vExTY,9מ̧'?y_{0︾A( ڠQ3!._|[wOf &·V[Dug_^:GnB] Чx|8)Y7[ jC֞UNFv+Ń(ȾG,ܛ]W,T"): N9ιjRl9tlMG!&Y750Q] Z w~=x'٘q(^TؖtJ2'|915d1G, +YH?& +A=krY + X'=`ח*C $|HAGġZ'̒6by0O[y{ޡES܊QCܤϻ+^V2 +?I]_{ ಛ.*''h늵ec v:'B}&Mv*:]rFlIS }f>3[ߪ .U?0_CfLz+6"ߞnzs[2>|wF~>UԬ҆uROl,*6 -7fRLLK2WN~|*&\*즕?7,|ry6«ʝ0V AWd׎TXۊ`6~C~f -e%Op|qDُ]]VMVhe┃HDL+K,Bo>s[ -қ.>lm P~ŏf6W.n b[[]*d5~+(3kgc&ZkGV*t@`uhђٖ1ZSeA"fьUm =ih>"hy 4o| aIa\NG?R$g6NOxĽ!EĀ66>NZpoL[s1 `NAl'5篟SZneaםH1\.}!еb""""""""""""""""""'F]+klSB+7btLc%);C'YT&}\\MEeBNϑ3On +_(yG^|6ejƕ x:f)ʮħxMf}㵋7=b|W#HIkK=ʀAz7ѝKb3Imw>>nc/X wⒽ q6~R7P6t@'Ca&USUmMk^_ِiV?tjooq]uiuz12뤃MP6`f,ڽ,o-d:%dۧl V <~zZ_^O}eY(Rx{/pC*>20:o|m#cI;Ԙ}vXcaV+Q~vE Ǻ1ECv\u-jH>GSxQ)Brm fnU=[:7~Mv&´>/#痛N{{똩C-_zDF4Q`ø\єu 7Skߔ}u1-$e8U_Nj˺ 9!v.?Q8cC-yvIt,E_"z=-?ޫYk=1ї];WetדMx05siqZN8V}k~NuI+:v(WM5;lQrOqVy~>[$uyvq[+O>^%mfZӮߜw}$.j~dC;.NSSM9Xj.=Ճ]`z}fֵ篗 Zλ\x +Fc>M`)#ʲmwd8d<`c沈^Țws:hUmrmuJI +Y\+#&6ּhɔ|x9]O-|*1Wcfͱ=(I'=u/+Q{ ަϴ!{x[KRGmIA7)a9[jGdn{w#Dl>Z7UN'2oh0(%H](!^C峩ـ}bW4z՟3.lq3"7@˶'|1zmW6ю6kwсrJBٍ$;KkIOk$ cGG~%[6c(\&"趾[wRkC+H | 12T9t\ldZc}3ON:33xnJ[P wޘRgs :xTȮvz:Ol+zVB; kb;o&#5:vZU]_Xxm@_%;Z'ϓ}50ǺKK bhyq1:Sɩ[X ^K.ѵb""""""""""""""""""'͕U #`4f#ӏR0ZXoͬr+ 1MJF8<1S&>-Xš{(Qڒ(HlWHæJQXIGyqr@~1҆kP[^t7M`i?wn߄7Mg6k##zDlfUXq*⣾IbSH*w=ΎU`QC֊ϾLmϊ:f.#*=z>zN\+2-uQ23mXHpGSTt@ŠO:zn28uB#<=/5` ~?$aw\kdq'Zhd%J)YkPj q]''K=7$* o6 +߆w:~Boߍ^R; F| W+Px'~{0(FJUVp<4z=Wu[IUllW%J4&Nӎ-/hR YwӔ-]AGo)T(y +3-tqGt`030hkvot@_2#G|ڬ +ؖ^_@HSbΟk35HK)V%F>`^_(ǡti]av9)Mšiԏ +f'QzN"{Ȧo( Ͽu9t/'e r>@akn +0"'6gtj)x(~gskq5^kg}Q~m5mm,v1?@&0>`A3}7j֤ +F>'tli8ԚԒ֥>d.>b-hhWk`LmV(t4f/9 +x|5s;o9TntP@!G)C.jnS L[bfML^^eZLUP}H3א3m7ze +fWe@?H ~ccgo\ZRCg@lrV'ue Ѝ(*$tdչC AȂSOuuym %!m~Nj- g n5 J?+՞$ ߤYO`< ^Ovs*Hn6/8m›뱀 b@ZZ!e.ص֋N>=uzskE~"c`uu_y׭VeICvoAH^ߥ%UPSa A]}HLwfdfW v ʲHװ>#7_ ״dt̬jd;;W=gBJhJcb;xUh 6JN6:_UehA\*~O{$""""""""""""""""""""""""""""" ׵b""""""""""""""""""""""""& mNTY3qoN1?|RbIyb:]|!Vk luqr /U3 JıE˥ߖm??NEU[*+ ĕr=;hx=[&j>83;QWc*ʏJ䌬{mI;y;3"^|'d7:ej޹?x_TRb'[QJO}iwS(55 ~ +OzOЎ*U7'׷~'|KqShb˿F-~F[y[XxZݔw܈еb""""""""""""""""""""""""$W})Z=`OtUJWZ XX#1baS(EE:Q>1* X"j6tv{|󞑹446O$I='̙"y4:UxVmogY(J]FD[3DDD¸x(ROw ,*ԩ=RեIQUG`4&Hѵb""""""""""""""""""""""""x݄J{EfCR\kR˹HwTݪKk}4,F=H=aߠѭ!s/lީ!YHOܙԥTb~ZDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDҵb""""""""""""""""""""""""""|y/_ӵb""""""""""""""""""""""""""""'-(JXdȎ:%m6JeĐcfYuB/tKE Y}z{ jetUV., /&a #cIr3S*f(Tn@I!4O3=U X &HԵb""""""""""""""""""""""""""""'?.+:|*]w?V;UKR*((@a< *F>`|2DDDDDDDDDDDDDDDOZcXl/aзKLYVې=OMg{UaGɇ؞QƮ֠9kORdKDg!~g}Kڕ:O~sWتfހ>BghU6O7=bl‹QX6D/cq7ڕ`ɂAYjrRŴ}p~;]BaAbR7ӵ/M I$[ '!~S/a:}C0muMr`7|Y_ o>zUsP bu筟MmʯyXz0Q6gC*!r +Kkz>1н@@2PGݲY]j˻Mv:VKq-qV6<۬15~vrO ,|p5ZkPiWe6nBX(>Ou>w[ؕ%X(, M-{1p9){z ؁nofчNG& OX6Ә,laS~SWuُqA~o빵wPnZtt|[ݳc"Rv_u}YPIȨ 6/fEO~zϞ&bYxTS3EXáV 6?Az 'SWgkϣNDlݷ<ќ6!{6^cj}ؕ ׳L$N-=sνOX6HG`j22jŔm#q,Pl*@Xoz˼͓V"`mQt:9ǗCNݙuR]Iց`stTخՃ*|gJ6 ȏg:[~L@ZѸ`rYz3ڇ> <1ֵb"""""""""""""""""""""""""&UL=0|?Hi/1 O/ ȉc~&v{k?NDǐ9VN~/?#=Qm9YzN?xK2j9m|x=BޟN; :{O͇vMkgN+eXNɉP>h{zbwkYvwDbYӳ1SޮX?)m}WYV2/^~hr;{ы#8[Qt lh}&X&ƽ^FfYkTGymSx~eu\A%Nf5S1ݵX5ՒI@g߬aхUty-K]mzw2Waa4(gkҍǙώ.;~):VIa2{1 7D\K:Mu:?8)Ve< ϴ%zOOoK|6Fu?0MB AnqE@E 篬~p݋=85^zUVn=$x檱NJ5U<̚x4[g"Jw +eGÁnT?҅ MU\iV<48U![$z^N!~9e}^~bz;Ua٫ ?O_']6@ۊ~OhOϑG# ~ٮfcW/̳޳|KW#3m~$$T=΃Sd]p8>Gn޻IqfKCB +*Gf: _znSY*,;46tOyz1{m9J$ŘaRS:\nF]USjX-ob9{|و׵b"""""""""""""""""""""""""'Ɯ5,o3 +O| u11ކuG>f5UC)WNƴ7_MINXj@3mVpʤ,E޻)%|6ʆІm{1u*o/-Of`>`y}f|Lj𩮚 +О>Z.j9PX}{v=Y_^\6HVPU`}~>2q+ɡ|)QuGc2+58/]ޓ#PvUIַ{j|5EhG~SxYNm5CMUn[۷y:a[]=Zl$EP3ީn^-/w2B}9ͧǮȤ#eA:>c#<5eiE vf§0gfg'cu@&[q)=hy>[PXy k#$Qҏ v{y=>,#ج8}w93е#G~z3pU+@r(ZϣJ1T7N|{DR싿vҧޛ\3> >5ktVPypKM´@b<91==ڽtwzYkR5xlj /ڃ;IU)BB>%MgkRJ*9ho_H|JlUF +A kRʠ"}gP7=еb""""""""""""""""""""""""""""Gu~N6S^tX ,Q>sB_gN=w |#a&}~=7şTvtU@]*Oط{v]32ViTsWڐ;Y=j{Ob"""""""""&+r+K(,cu~ͣee;[+xlv-n7M!ARAbYi/!~#%jak#;5A1oʓѵb""""""""""""""""""""""""""""iұ\ܑ6S| ώom٩)u{%kru>\LeæT+E@XQ"""""""""""""&gN?oe +lLֵTQ* `L7ŀGDA}~W{m!{|(1ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb"""""""""""""""""""|[jR9;d6N>S{V.(dLV F{ù;Ϫ[T:CA`Ϩ.BÐ+>&̥-5,ab>`yb""""ck\!`H^[*+f9!G:=34䨨fq]lzODLX5':l7GGG[s,LY)[YaҨ:'C}0;l؟Q>?U6F+ jP^X <tc΍YQS"4 =ϧ=A}9o-\@'{ 봄_t1 nGQpG>)X@f0z]$SQ߇0wSW,b]bҶe dK!fu =>C<5SI>[l}Mj0W-p52vIdm +lڕ޽@pŸ86%fl1f-;^ވ}1iMc%(t I12z#deTQat k:@I'[m +lj|ۘ Ա#b}ur IYX0]rKH)~ W,6PctKMU5a ޷2e0Ƥؚ(`ֹܰ }۞U7dd]KEXk@kϗ!^{~ kqze<:- Y5} -d7ꍥNwUZhlyYW_/Ϗ\l|lWjטuph7>SI}k(!0E%d PO-H?VSzҞ#EU !O=R uaR#D@7r= +gR@tvy3J}37$w{yTԹ +c`a[n5TÏ}N:?>Z,5^kА>z&k |zQoz:_ElzR׭BG*ytOo-D=h{r|C* }zP1h7gmkVOOO|םF4!q0m? +V<k;ZE:b RFǟq=>&[`)4\Er&l.YPd!pJ鼉טιްuV^$ .5okoHCg@l؝y/쭪XȎL}{rpı#aJ>"/9}|:s-\+M~W;ޤSYX>.3R/(֙IgW ͻdQ=fUJg *n5(+QUgt"tL:PU@I'dfJ QƴW%VWhOYga k{>23ou%¡Ǜhav-{ι({BTYYv#yMޡ+cP͐XW (lz|[߭m%9!` t~݃: "*sR/&|2Y]f=LˁP>ʤNGszޭJ#2nٜP _i/ WM~gO"G};~㷍adzϾ՞ue oc&"rJz6vF;P{GoBy7`{_][S=%|Xb:$wW̜|>n#%Uu# m@'m_99 \6V WUQ5IԴ45z&aԫ]n:xu5IQg՞.=Y u.c,*`2C[߇AˤYkjb.A~kef hچ yGa/9BT)ooB˩5#z-WY&kjj,T KI _5n)-j_#݀Uܦ]>2q:=5fypAlBNV^$H$ci =YndW@bl}?XW[5ZP +.btGֻf +Ѹ#޻S_~KZ}+֡w#~~Uoh0XTW[h ܛVVGmm[mlfDD@յb""""""""""""""""""'˷'DnWS#'amor+UNI31)[1)lmYUG<2mH$jG=vM if{R#=cϧv;t(Uk|,]!RD߬¾ޡ,6*M[C,z2tѕѫhPQKGRz^0S/(s^d~r +׭c#3c8&‹ʳIR[]_/M͜|(M^;}oj_ [Vt h)n+ߜ[m7\j jmb:N^} mJTm, VRm4=_ q2KZ3iw>Xylǽ JP])BGΣ,V]UU%m\kyOa7nf}қ~ibG%zoHvtls Ye;[=5=c=,RZ* auΡH[.sjvp`=VbZS+öH'Sԫ S&aR&@n-~OՀi ǧǿɳ! ɦԻlʲrP*ŁOq!:=]=q]Ƕn2HG_Y+m|ºrTq/"=Znͮ 2-z:ٯ`΋>BW(hc'Mu%2oW) +I塯7JuWaV~]@kN +2q):oǑłf:3U,O ֑Pƚw0k^}MNOQy~ajʵq+KkAwv~)LMOue*Q~NbNbYvG6tӖR>2Ng|it/ًG| @kZA68"[xe/O>snM>l[X;c$zbdcYqcR`-m.h=ڗKpṃ>A#a_66FwXL[E)FB38T*S[F!tk`Ϭ~%_ӲV F8}giZe}Y] H΂ؖ^c{lܐj8wk]ϔ;'֍Y~1 ̮x;rUdww2/垑U2{v6 _f^@L_L{ +ֵQ@5˹L!:PzYkuG%tưH.Vda+z˯g 'q N1}gc8V j)vcmwGA3ږS.Ͷ\)s*$og~_N]k@vJP?c5:O:[DJlwt -Ӻ^]3bI̋sjJo-}U+°"'k$r)cF~vMcC>\JaS!`Q3rMVS^(T]׈~:M<~/Phpek.N5ӧEX~u{ni7\(fff'@|_yki f<Nm\;&>!4l hlXe;29[']YI$)>@}{YwQSBrj`+7iuszNY}~ +B#Đ?)בT aXcr-kחD>UYfUsCVl k[,{Ė]ywet1$5hR kc {ݤM7zNR^\ Mi0omJs4gUs.%P6ކ.r(T_2{vS2:93cr,Dz̹};#e`]Emrуn7 lA#<;O^әc)f[]_v|Og"ަcZݔ,QZWN])DDDֵb"""""""""""""""""""'ŵWdltFDy:]Bu⁘ݎ'̝ϋzN=IMܛJi뿯npM<ԙ%0RvvmGU@}OJ5bA'}uωVKM*v?2OrOF 0=bԕf4 ϮC#QY^kUCJܒ}I=ə"""""""""h> Öنv#F,G2$~r?1fLnʇV+pS8؉ekj``Al{DŅ0ZUwǑ}~3}F,r]ry^ IMK@Q>h&̺Ֆ,vHk#S~j`.dT>Ip==;M^ +W{߲]]Q7و0rc6g 2p^?02N"$n_W8C J-l ;5kȩ]oܒ+ĭ~\F=ξO%1+$-Hhmc56b'Ŷ-*U$&{]jS@ FQ?a@2^=3vVgsU$&*nUt;VA}ϗqZc$  +Zmj*jbc$_>9+4:W]b-J Gl7OokܔSe~0rzV6&eK{wc_ x<@S9ޡH˱>e%4-R;VvԒu>syYCV +趱RU*Zd{Գm;9v܌afxw0+G{mu\܌,j<5ُ +S̺)#C vwտ5HC|EngfX*ݫ%afe 0G~MdN] YH_MIWޝpbdSX9MWv"7[ڑtcC9`tVkvB;vTh^缎".WP +%xv$rFGUJ xڒŭerc纠g"Izz9*[캻HpF<bzg^ʴ`%A;#~sΗԳp1s*֚ubIG#Qml|TAQwDnsc> +9ykOw1_Q_ΙsD-`w'[{-JٷY}ZY7R0l#ڗڅ2IEB1`~wNGXn@!ȷбdh}׬O!,e6a0R~"|u|N~ObkMl|SG. Ǒ%x`Q\MEPZ%S}MN=^8umEU-nJ)W +2--haUn*4;1i'_g|vȺN9lnRSmhyTt|Ē?Hd~3@YYۨ H+|ֳ/6z~k>@X2-P)@@$w=f<Ժz +؋EYl߈N;2tp]'W[`c6|n!uf@oN]KbљMY}d_CrGّd5RdE)[xqߑc{Yze?dķ;-*V쮺 v\W׽cStPMAղ\f= xaYmrE?ku2->uq5rRrWU]l2O?65٦jazԨ-bPrSWGUٕe>j q FmH2WOb5Ը Olz6xˬ[NRu#>Rsu+5~64omSUQrXc zv!sj8R̛t^Y@'ߔzU񩥴;[˹ml/d+5?TRŵ\u ^/Fem;SRu֏Fct>B{=4 x@{2y8|,Q\oȎ=As~~DuݣgSVaW2|{ /F:*, 6FǨ]_3*}5},RWyIuXBH#ȍFuӨM<{B]dǐ#fPoWZ3WM +crac!{ +_7&T ]q((y[/|R^f*+mfFRԶ|.H ޚ?=It NvN~/іFAOk${++n{v Ƙ'zU[U]Xyq@ϔNk8=v76œ@~#Y/oe ,~g[V"" ѵb""""""""""""""""""'bnF}x+$xav[g<׋UmHnBG惯ON^M)m;8 >s-W%r;eN^*Wh?./p۫VN$2L #s9^+6xMS܍֛RSXҢ*j_̆ɪǦUWd! nkd-0yؕۃf Kw?Y8MuՕt\7ԒmH=7b}jJɂ|Zcoe|Ewun}.>ODXuܵfY{Rpun T$ēIdML_Pȣ!Z-XVA $h`gtZ({,HPD{v܇VFKٗCiС\4 +r?M 2:-6ۑ9w<|tos<_>O592֌T~!N~dvgt*XXq,R &jX-lUo@?C^|ֈFO@Z{_ki1Rw<{h^(Zե_0hrwO.O]O567'vrƍ_.A z;LU*u/U+$^%O7۶HVacx[޷|g*OzuM0'z +H%I]yw=>SQRn.w7106ر{7  ze}CbJYS4$h}#RgRK{P=ƿϊ=3}FWgŝP4vv5b]=-v*1ڰV_DX M詙׽]B'Aq Oq{4M,u~G^Z'߹3T{%17]D0_^C_Pl|6uϢUMw~Ot\OλGGG <潞SKגk9Bl:W aJCs:wfQ\P ,4Ŷuu$ES!)ģop)yph:dŲܚԡń o!%tN47cޖ*؍[[޴zgr̶l*zwĢ;Z5uZCPΧR<0Al_IgQͫU]muٻ3r*YKz#>}@ ָRVB* +&L~^6m٫eTWR .kgmeםMZdaDHoۏs=brO`E}̔tvBZܛmn%Q(oOxx(9CQ>@VMV7 +5Ė_@OF[69v |o^_mebכSjK06f=3Q 9LkU[^XV_bPb;lMAb` ESuk63QC+UIBKFS~?;~kNX.LnJ%J{c6p5@I;bXf'I$ϗԾR|EgAYzШې6ZiY̏^޼jR9FD['܉>~Nho|{/.;Z=z.9RB +4+SC=*v`]W`a<\?݈:U=o;pN@+:?^77I#]NDDҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb"""""""""""""""""""""@{SriZV5_6,<|v~?Y{ f*b!AhbG& HaY8+u>HZػA$o}\/=r޷~"""""""&,>'-ߦSOzLMy(_MF& ++(S֨[`|g#6g'@Xh{EU}a|zQշȋSjA#{ ٯ^Mu +i3b""FgfӅI>55v>%Fs}ǵ?ԼP߮MGoS&Ϋo{ YOu|kzF{]*ʲ w +`)#V.ض>t}:}(qmE{@*w{a89ռç_.Gz>nuyؙ `(KCܯ.{מ濳msnvE:c\]Kr[5]yI;Nmkvb + ^_9ܦʍ:V3ˬF&;A]ICljKW(@Og;_1^f+P^l`d]),2q&ZVVՈ~d+=~}_DFf_]c5vT,[mg[U!]1nR6c|^ c Y>Zo]Ժ:ՉC1w̄CCd|_FEmr-!=/2޳ؗe",65yq]kJE|iR\h|Iнi =' UrYŖ>eD{^(x6yem"Sݷsk `{͵e8NsԬ--~)X=c>ʽI t<ΟЖ3oK|m]nY=fSM'!q]U2?6M)@=u +5cnյGm9g*kg[Ŵiw幃.c +kN/2˜-8*3VCىSc@zw'"M,ɰ` CS uL[7cV*n,uNk+SȽ|~=oݵϼ9<:テK~pףy {{3?e.<2)`EH';ה::}7w]KZzgKZ+P.|hS1ҭcP\ôgԀ'}l^)ݕf5v#0so.7eT]ciuLv'J¢݋bYQjFF:O9l\.Yր^Cοʩ,T@0;RZĪ*Wfr X&$ynb{ e :)0GZbηm#_ꁝq h{AƱ|M 24X'9181k9eh,Vb;?Nj,ߦ<6c7aO`u4e?zVź뚪n]xɴCqߐއFu{3fEu.U-ywn>#Se:_[Y[^BAjme;/syTU*d㸥I,݃638 ,DD@ֵb"""""""""""""""""""""x{.(FH#k.L:GO& b(^ߣ|%ߍkRn׈)V`4L]{lBVgNϩ}ݘ[ +XnZ*|'קz꯵ZᅤJ{;M?! UENa6dQ1Oq14v ߂*o}:X.Yg{̈́XCY RJ$}f _e+^l{8Q1QW]G]srZpE_{+9l~Yn5[-;OqMyuX~ _=y"P|hk? l̙]tZi˅w[G9&BT] /ĩ%H+G\u<>ͥ]}hEW#utt t3KǽgzT[qb6sS_qSXWp;Oi: 2-Ī-")f])k Vw=^=dtF9{QeEEt~#J[ɀ6:_JVY,^Ʋni݀"<6Mzb\Vby: + ̈́苞j#%*G[*B}b.W~y3{6r*WIaqַd޹T+rM+ -g*4vt%y*FEB:QptHˉZ֤7݉f$I$^56-U9jP ^,`Akf{5^^"b H)&`9,['2ӓ`**p*x=h>ޓ=JV^36}.4I>MOSpxZrT:AEZ<]|ݜe܅Rt8ҀO:JTuıN!ڝ} UӖMl(@Q峭3#֨: Hu(QBVðr)LqT#G|T706S6QUl-I>`2l}gwIM܋\ձNCqW` +^Dna6;5mGpG=Z9Wf۟q R_ߑb'ŵ-Qe`Al| M.ի^4F` +/ 4zj{'fOApն=Xr.A?1? V'/7_7vUr +?+}uJ汮%mВ'}練ǝ 8V +hy *cԺԱU7`|¯c?I1 eqVKӡ ,hI:xan>MjkBaA@Z3e+^D> 450 q#[\Z=ڤn*"']4:^?HӎTcv,߮fD,Xk;''|&]mUjUgAl e+)2t{ř8-1Gs㹿+ +$$NN٘f>ҫբ2KQWC=iYdחvCY`8Dd}m|Zj7 +V lJtFĖי"CeKU+e`$l)"ٝ^o᪭B +$>}&VFK^{ըU҂4^}guZ*ӎ'y-v3ydE(@yV^k GcS} D:CZS=-5_eTʌr+9X/=̿Gixp?˾p ,jrUGp}f odjM,dc].`UMoSbg {^*8/m^c]͜~k[i> + '~]DD@׵b"""""""""""""""""""'x}A؟Q>X#cll~Rz~zL[+`<̳ޕ0 + $ ?{>Y猟'""y>E@1"y"""|Nw=3`b""""""""" еb""""""""""""""""""'F9 qn"ZVSuS6Wm̚ҀO#.<GɫNMu9Rԛx e?k&p8 f$(]l=|jկP,dY{&jzRl>+)5: dbG@{m2W5Tl# |R<4|)f!_ר6_{rpS77ar_e?haշ6z.9GŹ݆ܓC.';jB9:,̞ݻO毮ֿ D|il܍}A>nq(QmHryz=22*N݂2f*zv ]ejЧɂ<f#.Lgdw}& "cצ ~!Q.C6/uR,J* +]zM. XMl&C[$Ub9Q{+5@V:ËCņ"}ç/xǹceXVt~ c`S[uԚUG~~&']h+%Mc FŻ }CZHdYRXHaJ ƤwR__y<],N ǐ=gZ邁o=\Q+`h*>2z>a`[پ,P"}->a!_F@&`8YOA=bGcWGxv"*y-ŪCK\XAն"n==ʫvb)jx8@)D ϬnVP +[)LA+ h?e:uAk$eTmhS[نHBx:G$GV-rI$njq:5yxjVFsuF nવ̤1;ק-k&߭ךο6H}qdd]Ǚ(>!u3fdpXA=ϩ7> '3=5U'n@ۻ%Qڞ_xievRަOBH!T tuĞ~`EYJ_R@btG~ևe:}tuA𝗊Yȅ>{~lyn|d{EemkT|ԝ)שއ|\B +z`oӿM1xV"w$_{+̱dzTk aİ#}޳~r]=&euiO䴒vkeҍh׳9;kҌ w#~^zIj{l-Y|㯴Z#}zGPTT[AߐE-c'4B{#zz̸b~T,\kkGTՆ|vW|GVJlZv@SIbXﯞӭQ :;+O gAbqS;Nёei׳aP$45:muCvdK +kc]8nswRzH!q;Vl#幡]U-ŸyV+eV6*qI#ofq:OQR{ձűl^'_=L9cg[Yb E:t~}fLa`5e yD+P aE܎ݷ'_M߮5y27]O6 Eeeu/rglnaWRW[o-mfu|<戮IH r1rkg[>n?2-+o=U4ESdIuwka&ɀyWܮv16&ڕܱרԍ|p.ёyU54( ߼WzsWVh֚#z::45}'dSb9],vedS[ۍwKz-?UV>7R'"p,U {0G^Fld9>ʜLϢg빟_:^J;rTJ%$IjhgKݻ#KMkm`l 'M5d"0*-ae:#}1f5]:YjcV`拫+S{;3TfRYWիT @NF#رU{.i%͜W߯K{EޓBUq  9:gٴ/y- dz"sl~[V~{7_sYYqr6a潈''p7¶{^kWPzuv:'>6cRC %#gՏ[b( +'7kD罩#>Yʬ5:(j3G܌,ɩgQgkBݹ~d[^BڎQx23 0=&z57'$|r7یX+NJX:8Ͷ T$gRHyr껫n OTBUHd;-[A9 j ~{׮^RC ]ða![p==n3zkgTb(VR.;|UӺ&Fp_?BHӮ%bՒmLSIPvz#FKN&C-7ܽMQ SRʤ.?cw'IYyV/Sa?ܐ%=>}L+uLާW[&i]x<;̎mph`TaNly^s2mpCs؎eHO>Ucl*d "}ىA)xnW`|bO~jYSA.xgĵ4njΤj䲫5n5`B;wsꙂuƻrEɼ63{3p jv +#; Sҵb"""""""""""""""""""""""C;rŖ䖠[UV ._FIriCS~CMNZӲPko"wnoIT(<*  +#b5DHʮAl exŻJF@&RƳ/_5 8O;.`XPB@;:30>A;,k#'g3- [}|"y96 / [p#L5 q$r$j{7ܱh5f'ϫ/9=ޫU7 ^߂;&nFF |=f;f8e,זaG@wM C~o/j*Zy'_v5z^;ߑ~uPѻRA#й$V"iu[r6Kk^JĞܾ[ L>阼me]n;<Xv\)ȥy[hG tIS%7̣,0Gomϼ^e5f/=}{s3 +B֧5I${Mxf +ŏ1`,`<* ='c{'Eӝ MeG=yk`e0LEG\WlK;(QNGRVT*@N;_-e>.k_Ub]9Ϳڀ>j#ՃYmk.ϤڃǮɹԳRx2*Z7"Fg:hxπ{Yy'{]9zGFE& +aNP2yzW]Nmȹ̫(39 ΃>nᝪB#PHק7|-P ޶>3萠9lr J]E`HTbYurFZ Gː޿ S3q)mhA:̞O5TC1\l UNaH*w\Xۈyx{#I] ? WYn(؞>E\.^UJt%O-xtu>XFvcZߟd8Ma&gˏ^UkeLXl2>dеb"""""""""""""""""""'?Ֆޥ'yǻ {iC-;y5=`t˲_mKf`=wCkY6/RY?THz2O3 t\&cinLōd|&0]s+1;]!A.D^X==Tx5_דF.2(*!`x}&*GH F?u73q -_0joif꿿"ReE yεu }cn +blCTvv6Y-G|_jF 75`}չ翍/ǾmX*RWk1rxWʥﭑ,ju +X}܁4?$er?Qm`][lsT|6gGLcz5'#*7 t|gޥ?Gޣ?Gޣ?Gޣ?*?&(-bgQɝC")?&u(?/bc_P ?}C$(fb\'|| +7|w>s/価Ghb?%3G/?%g?Y+1Vw$UMTع ݴmCCg8jVn %m_ +x!b;X.G fοD I<&.pَݾ%_R霿:܅3sg/Mþ`kb |DiG~'@H+J)eO%)6/en:VCK%VSb;1^@7g7pz)|#q p;ҟ{5M[WG{fU/}lcV :$w0#'3%sW{m)W҆-k +Ҁ>5tZN>H;ZcK~ЯV88fTf5ɜ҉kiQ]*Xuthuir]1ۘ3qr`hF l5'/GOV=i]g&@OX w譬Z59em{9ïvL +;kI+=#T-A~Z'9~AMN2vӈ-ɵ[eDMN/.db_̣Qn{WbkH3&Ǔ/o-흋k<{6=/ nVRHlhQ/s":08f^Hu!w +v%X2 *ͷZM6xN9n;rfV6}FMu6^"*x|YHOJ473?Ou `Znn9ůwIګZQF|}1Y۔S( K°~>ԋX Z^;Q 'G&ŝ +뗗-|P?sǨ5sb.l >z|mYinJI/?0&y_kP>Ogq:ȈOMÿ%kk u3PYhw=Ke*13Muw]BY]d t(+O;:ԥ$꘹7Aֻl&-yTvܮN)Qk?9CPW@඾zr1[λsԻүi|}ksul*og>Z&EaSXr.C|-oƽ q hw4`pƣߎ*N[؅Q2,CqQ,GKRNaS36Q+'Kt*Ru=10OLI`ζu>"&C#| +]ψ~ɛӱ]H : +Èᯗ-}&DAX +ҵb"""""""""""""""""""""""""""""&,zjP>GGs9/3Xj=jFWUQ.,f_B۝K@|U N7=c;k@2dwDOĀ'˲뛖11Wv Y`V~GoG@joxXWk i2RZ4 ]3i]C+*GdI _%WUNx[iO񫣢fEax,UY{a'chfFB>[ +{ֱ( 6^||±M3C""""""""xIR9xd}tj]}17VGʭ썍beӵb"""""""""""""""""""""""""""""'RBGמԎ˺'4| +'~/̰ަMtj".II3t6LSeX 8R~vđ>:V99=Ul#^В1cו[jGR ~OiVF '`s%计ip ajay9$:Uаi|4/Uxo>lz Ux oo5JPu]pťcadVyMxJ읝1'箔Ob"""""""#c+@"""""""""""""""""""Եb"""""""""""""""""""""""""""""""""""""""'7`ܗՏG,cds&""""""""""""""""""""""""""""յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb""""""""""""""""""'t$GHNV1DzeWPXlk;|{FsGO8#ЪՕ bN޳jebEV6 rc$Dh}IN9O2>Zh:Zu5R^j 'g_y.;b"""xNwE59K+I{hﴒyOKגFsSW}*jYCBy ,{7Sjhd +$X R'|MN>j! +I%K|TTBAyc^.X|n'OiZ}v|o*;`}N؞h􎬽^V՚ﲦV Ht{#_)4_TMm>V^2u$h7Mm&|Z|_">,@L 1ɭYVX}M׵b"""""""""""""""""""r?WԿħB~ؚ|˫`ub mMc;%ח۝YV|vSLªֻl;])[ٓSK ka|p:#]:B;oG]PeYeXmS*ٔi$;F]YXJ⣷ö,![NmԩUu߼r|Qa)?܊4ՒB9 +sSg₶WVGzK)Jf}68O.;V۷ߛvmV7;< +WR!;r<Ԁ6?U ֌T` S/fݏMMp5d6ҨFV$w<׳Y>97Rħ.q>[L0P3]JN +?.?A>q.E<~~1eDBJPN۶=>T38C޶xVߠ2ղh fiⵇsR'mul\ە(KaXAOsh5A&eY*W{su,Ȣ5FU$v#.}p/Z}'r5Vn-Ac۴ұa/ +Ct)ȯ[=mկ[M9__Pt8z`̽ǴŇwS8 +VˎEBaX!ҷWҺR%`%J|0u]EOMVMUڶ9;%S@l}sjj_کh/FfWYʮMcX*Ew{ +$^CC[?9ؠFhé hl9%NjP7fg>t ܊dz݁ ] +珋|N_鹘9Tqǫֲ*`5d~[cu#]u +[IZyl[ĤXEwb*RC*l{=^-35m %>.fQrThRvסؿ7;> \ro"Cb +:#ԝIg^9Yx3д:ԥ)69@(vߩ~ ]YK9:*++$"""""""""""""""""""""еb"""""""""""""""""""DG ++kj*\}An{B^2J28ёhN~X28t!sT6:ѥU{\:~`qr2#;:6ŔSgCz'H=6xVtL3f`rUYI'}-9vtɂڶ5MaVR>MroQAkhuvUعX<\wٰ,N PH>9d_ucp֢+榦Rx܇ŲNunVe$F=˛0R 1-~BaY Yx cxa;#dyɺ֊νNȜE5lQO9:b>dC^}#dYeۭAxQZUK1lbVP@3=ipmðKG~O8fdz-]Y{8nk4eeS+`_!)m|Ggyb[EK|>_s]&^|%ڐËX~9Z5hƲX%6?@~˺6%xv::ԡQ$k̂NFI>R< xդ.kmGmw>Mdwam ]yϜ>32&{;j\t4 ]>2*TR@=#3>̯ ˦@{wictӊ5wFe>gRbʊ6@']ΦU#'(ԩ6*4=Y};ާJ:#_fvZ-QX8e AF|:-יk:6NX+E +QUG~m ^1@C7Qz壮[㿮k?W#[Wiw~_ltgj^&X@^Z'̑W[fN?* +S,vxouMx5Ym c%yۖCt5:k:pK)Uml<#ޗҎR:ەe[C `kDNUθv-vpvhv;O9GG5edMu+\l ᄒ/iNfbKÑJخ9HR&'d쬌S WYUYC}~G+<.b=y䎬~i8;x@R*ۧ#e)3~C0K/-C6AV +9VT=?i'yߤx!i<v7/: T;VZh _j##[]K(' @dvX?7$Cg!9""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""""""""'V#cҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb"""""""""""""""""""""""""""""""""""'͖-*]UPI$<&bͧԷPѷtu1nFζNTWc+)ֶv<=;)[ ~?"G}zM3s*YsqJљ5:ók翲&_9'CU邠ep +]OnʤV|K (z}G8]\-˲F{w=Եb"""""""""""""""""""""""""""""""""""'-!np:MTX_h<"8{Y*E{QhfXvuf|45~=IX6l {3o?#(K]Z`+,T;.7#=tafZլNJ=(9/g[KwM~r3ڬwǣ0!7fQ[rZ o6^=ϙ=y+֕*T4T[nIg.qeFUv;z) , N~Ư7 8w{v̵o/ݼͻb{~9s\W9ȷ3Xխu"ae志QMnYifo]rԚ'-~{y&͸wo RXkz#c]qO6&)=$&$S^h An׉>kzI60؞wWuE1 +;6]d]X콻N[?ĉzO@7 +T veYUk] |>m3~a˫ :6byHl&S_R;Mյb"""""""""""""""""""""""""""""""""""'-Կç e-gS QvMʾE *n-D;Ӵz[M9kf`) U윬_Eߋ^[שe!%zeggO6~gI[3wyn=2_֓[**gp1'd/=IW7wW7w+Y@lg<[.';}OY~^KUoRԋq!^'pi3P˰.ñqInfx᫫xRA>'#dzMbVef>hJ?A@}zEj5̜Ĵ]O'72b"rK:zo_u1SeYUQ"'l :~]erZ+V +Tl~prBpB@hց;Tgp0}E*5#T-;#3\LTr@`v!ǔ.թfUW>SG|*wO`+P.}@}X-<2ދoS?P=/Ǟt2s!r +A_m&YC#Fs[cMk>@l-߁Z{פ`*;YZڥC) A" vMT>ڣSܧ\vXѮowL=:g[ZP| T/_?,|KQn*Iĭ}QY˲$G7xL"yq}v5tedK~G7z=xUUnRFk4e/p경keѐ/u>א6-.yZ V~$MDDDDDDDDDDDDDDDD׵b""""""""""""""""""""""""""""""'*9d*kWT Ȣ͂!.ԏTgRcL*`lnrUss.gFj ?mP&=@OgpՉYR8mles/qJrg4]u폄A'r&m +xVl< +&G#&uy] o3a($<1CTNcWe4kh_u]SKU@B>gCtd7r1MobnYn\+@(s4Zf[n%y e^Yh +v#RH Si'ŢA͕|w`6f=;":% mv-ZV;o'w^cWB+ +)nLx׍n@ڜV6dWVe}A)DDDDDD˜pP>.ff +P՘fX=еb""""""""""""""""""""""""""""""'pt~2m'r +>gyygVz}]9:39eZ ڬ[s1klR76!Gs@$p"m%An>'^|_Ǻv.ʵH -aA |Š/H=cGw9ǿ$ k󙲱̩C#VSA"A|zVq|/΃5kնvq:j5^Cb⺥tYA5Ѱ/G5$|Lʼn,(ѵb""""""""""""""""""""""""""""""&,qMeak`#1EzF qǹwȟ#^u/EJ¦zRlF'?;jy?h#&J)LjҪ*P<@~duOy ,N&Dti(\b  t  eNέV]@8l;?5ћ70 +pQSшSnig{+cp'?eH7?=Y'O0amSW ǎ{;ۍbo I̓̕ƹU=Hu.K. z$}tfXeRbO`L>m: ++0?067)!ҵb"""""""""""""""""""""""""""""""""""'-?ç gSVoO>OhNW5WU8˭g!YU:@ªF[k:!y|zHD +<Aߛԟ2kQd  Q\[k`v7=>&־ /i!=zTYAlDDDDBٟigFkYAh#&>bΤ_! +tXۈ_='Mz; +#ty}ۜױd[mvKj#2^ԭ(쥸VDέWYs3dg[f1qsCےWhu:غ?u5r>nMwNNӵb"""""""""""""""""""""""""""""""""""'/חܺLϴ%3 :O*qh\Pm +v@g}47}t +4tKVzd]j+v Ǘc4F}T-%Է**hy縙gNmwVdMa|Z.e `.ā;nfյb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb""""""""""""""""""'|]@;4u>Í}DDDDO ,W$}DDDDDDs؈@;DDDDO ٞ%hڐG=f6N,4}v5g;=,Vވ:::;O"yDDO7=:b""""" ׵b""""""""""""""""""'G]ArRc[8 OHUnst+. ړ~v2a:-UNV@$/oSzc:^~{@g [1!I!A r{ﯬ͉j˶4m|yV  +$zyturȲ=[BJb5g=&{`iI:b3uu[T! AD⎵UWEKڬՋ/0`HwԐ^f=3!?7FDdRx*IY|:Zktgna{/9:b86HΗq(دm +r\翟2w&6zXdtUboDH#35xYt|5{YuI6W5vuzmoCϮv' 7-)Ā673d齱AO"̣dwl{o^ĮmW/n5*|ǸO]z|-{ZM-,* uQP VNZ=Xu_lVZ|A~ljz_xA<{)h6KXZgq^UX8 `;>sK;WbRՙk@ _6; $w>?.x .i?7Cͷ?2Sժ#ݙ^ +rUp%R ^{Viqꫪ*+~FEE^HBW{:ָ^S6'QL-+ǒl:>FmȯhƣS]a >!=z͝7'G>>IV*H}@NsۼP"̜Tn ܁ɆzF%h̛ AǰgJmmcUNKmV. #QEmUQH\| @+eHu_*ؔ3J{_=Ւ[WeVs5Xa]5>虺{M`/\h6ݻ9oXpSX F¯%kgOVðWs£oİ H@{{D}K3-vUZJǓ1aoc[˶ŭֻgaha=I|x8(Me7;ؘ}&)e~0&p-rYY;tu4}|^^'s';91uP~/}snu=>mͥ$tܒ|}vԫwxV/!6s~Xz}dF8.1+gdYߛ{Z$pVT\ى{z͛#9:Q:CS~&F2W]ZP Z; 5>VE [71S76cqˬTXRQI Yw|8c Z&ru/ Aam&C"RF YZ5v.P`D<,x|&H]Άf5H}dcށ߼N +E…It΋NmfZLyq;|~m5E.@S5]b21?B2#aTtG0{Gn[){x220#9_\IuVPn: +oԞ-NiQv-UYubB"?LU{Cu^J*(!x:$=&zzY:YPBK2;osr"" еb""""""""""""""""""'qx}Vh\X*|ltW. mպXJMxEP4(~-J?3_ثpg, +naޤ5u;mc݇]lIaY` ::[5t=t`y?[U#CȉwǪ g }ፇ ".4&J^wTLYVXVl;y=H~q_trb7(qU'dl3s:Nȫ!kir7e\Pqmy=Ė ˯-FRJ9IZǔ>9NǟVm7g@&<{*;'q:ve]#;I䭕.+E4 5"ze| | + ]{~Z?)7вxf5u%j(#mLޡ_Uǯ&\R4H o xaBbHO|3kU_eUfUt ~Cl6}=dJnI`C@# ȏn-_r͗@,xP6Lőrn#xIAǑdLwRCji7?k;:#(!QwB ,i%WQ`MmV'3b. +'].:Z~TQ,p6 +8;:K#]YYqncy55Z9̜[33++g+GU;lyjDLV=;*`! +w/>ӶYҺRN;"w|5F twyѡ 0l>'ÖCzXYcޣmuڱYC@z +_ɶd{MoqUUS((݀DYp6vEoZ?M;Zᒻ|'GeQ[ڜK.Đ HOhP1kζ€TXw:?=Og^xޕM:ss?miRt '7K|<^JCp,ʘe`ߠ;2cxeRef0kgK9kw;쟸'/h1ql*-vִKC0U yll;\>ڶ0U bHhm6S92^j%d*df W]xUvu4בl/w#GgE;Л~3jM~.J}7[˭ui.ߩ8د߷b:=FCIsg߲Y8ש;Q\Vq_s-ZàƱg5NT|S;zW7?o*.Y0(c+?&\屋+ rGbmcUUU+UT>jsc۳1mq'ӶL 8.x[a[m*;_OhWX2|Z3$vo@?Mp2)'0rv)}cЬfFc(\HӠލ`^=EGsW[{:ީkRCxuk_ c.w$}7H)ɷgj߲(ef? w~S +kvr]lr#,U53[WZ7$iڵZ= _9+}^ՏӭseQa+ԵvvvֵIu{AvNIZ[v]Hmx8$ȢG̡,K,^/m:}L6sKkU7oj|DDѵb""""""""""""""""""""'""''5yc'"kA6W71d[ +>Ee>Ktu5^°Rl$'Dj{</)a7|؈jFM㱰ŃT\X1,L؞Ob""'DDDGa[FH +rDahI>GJ,KwsoD(Q c¢%*7dg \6mZ7 Ř/<*P@j8^syozP|yIO4"{.(F +6Iu]~ʬ/`6į ;li&<>SFlη *R[!ՉSh~"""""""""""""""""""""""""""""""""ӵb""""""""""""""""""'658Ǥ/OX֦WfT[ W)^Z{.3Ҏ-檳 INE-p[n GaKe69Eu5X$nD0awۙvn=1UGt5U8 zކy 9ꮧitO7_ [W'%Zs>'c޻N[,60܅R~P~,>4;e6#unف1HĢl.Q8^s PW~$tgg>Upcfnu^㶷ɩiC}=Z_߅(EQT{ ~DNBF]m_Zm`}$wt_7ɱիS<~ACYZѕX D9cq.6U_VJ#GBt[x\yH]uR7,?33aQ64wᵅhjGm +Ưgb٨= A]^:YyN:޵i*o/+RhT=`'e{^ٖc=7Ox| +KׇП<*let.5UˇrG;d<5;1HhUA}- i:fFvlkk>n/@y#SO59Uzd1ͩ5ˆ*ڐ@dȷ6h~}&WZa/Vè҃ɸga70:N0YIeL]HyPCNDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDԵb""""""""""""""""""' &A겼 V wy 3N\Z8ÅoUp.<ח}ny2^;1l߅[V4՚$8'a"I|y]"mջ;LX'.t";5G^{~^f9=4_YV׌my#D}dLǷefD +J@;Oy:]9Xt2.Aϑ[m#w$-RWɛf;b}I?S ؗz+|ȪXu苶lQIEĨP6WdԓLE +(@H܎uY;k*ZK U``TlkDaQRй,=vxߟ8M5x^D忔$Zհ}|%*̀FLX7t:wWtB *']3t,Tjd(\쪒}t^oLT)9M5&^jT6 _Ҫȟ7}aҷЙ5v(eal"G/ΟkχpǮUlLGv-බFH6_Q155Zk;U*Fn~C6lxoU`zxv;r/+n:/!ZmYa,Y1нNM;h+W@H_gW uFecz!$>JOU|"Js͕ 4˘n[5M4_&\KN9v=X2>#be=7{jOOѱH7e$z2 +bYKZ#cjAq{+f؈յb""""""""""""""""""""""""|9w3"""""""'FhoZ߮S؈ֵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ׵b""""""""""""""""""""""""""""""""""""""""iun*vRR(Q'>qzw6Sԋ$$מ>7OlN%{~HGو>2㲳@0R@ny3ר*C2:7FSS>FmD08M2%5Z}=CScsYwQ);UXjב.=82 _= }S*J˛BHl;Y2R.֨WuEN=a#:5?^% ?ODDDDDDDDDDDDDDDDDDDDѵb""""""""""""""""""""""""""""'Fٙy_XMU⊭ujpz} ۈs;E@5 6uɛ(鵭k{UdY@_Hp<+XWl;ѼxwDD Ӻϫ),}2u=~Ewo_5 ~zFEx=ְTE,{28}nZ~imsO{*jAI58}w!3>1t)lzM ^n@[lxk 'c'&Tn~:mR7GíV@+*J,P* r;?w`&+7;0+( vOqب\?Bdoct.{/pw.1N_}Cx}ޭҳ]J"Aέߑ>Z:לp! +Zk-Ā܀۰]vZ቎ˊ?$DDDDDDDDDDDDDDDDDDD@ҵb"""""""""""""""""""""""""""""@tϬr:~HlvJ-6r!DֳTr;5E%G6B 9*` wْkWp˰*My}!23:ONYyPkEѲ h*5N5h2U/ӝ[i{IoRbϐ@Zʧ)RI,̑H{XEf%<@݃rNnLQgZA7>EYoU #FZm>E[հMufrK'L$ 5:s{3_SK)x KT;G߃g*d_ 6&;^='~g ##~0gYlFTv=;I\k6:UCi iGZ^5(1.bd?ZRY^~g_n'EG [؊_ȷ3?2nf?b*}.f?b}.fkeWuYco5Nߦb]ud@?i̟<`]v#q{,[J/Ŷ8'llM^F ы׳d7ݛtX[bK*/H:߯dk]% ޓHre@PQ#ޛk3%%II$'|fX;tlK7cs?R #8v4{-ktE!{"?d7!=Sqz!Ƹ[Lf +W_lhh :.ELփd)~[->Z5sNvlAff>J&kau3/8̯U9V+r$=޲Fku ed\HJlB:əZ@#cGߑsU$ -;_g:WS2۔c)IRHC1ȓԵb""""""""""""""""""""""""""""'yN{Ȼ#?.FCyxl̙%g[Ǥeo3~SnM٫&P;Q<4k m/?q=Ƈo1ˬj+ 0?Tc׌QGP% v(e>`|؟x/Ϗ^nd=82T-ɔ FLjZeeGցb@րtG'$_Spu%8b;T +`tGxj`30 yPv}{Φ""&Puu#CX\o[W0wHg]"r~vr~}ߴ}g7je|$}H#\yyUZ*GT-'&GC{lkd[/ћAMU {[>/3,\;.EyO+(k@|;?Y/Vmm ל׳9x}5WVEkUyrśnŻC:յb"""""""""""""""""""""""""""""i2&.R}w7'K^z܌gw;#h8́<[]rTOb""""& DϢ{7D=ǔr9PM*,F@Vɶ87Dlg{<e?0 :1#=z,_>R;UeV tX%UO.{J=[CU->¸`5$HɳiMoxEiXϲgWu>*AdaR*deǾk;du<,%.:]vgKfp 켵M1~NSK܇¯``íh3ֵb""""""""""""""""""""""""""""""""""""""""""""y=o> ǖ]IzwYż6[f-k,6 +QkZQQ׵b""""""""""""""""""""""""""""""""""""""""bɯX*'F>MYIΧ#jA<#&/Yeߡ*tub"'Ŗxj͢t '_ <"ژ2#ȉ"&gUtUϲ gfdͯ +m$r2i3]]xXCGf#Au;ɺQ_Dl4FG}n7>.vD%Wl/!~jeY[ʹЗ *.Scr9|,^B˚ɽn q+=cg'R/[{8֮GWc ,Op=D]yi-RU k)=^G}Bɣ36ge~%"R +Y7D+N|mt۝1$OXt[ڱYN?luObd{ۉ7fQ(2WN=hKFgrҟA}OQֳrUbk\yzr_Y1VumUtw#aN_mncT ["m =_.\w_dzE]ym'^'N(K>gM]ykcbX4P(^Ė#~@NjƪJEsb7@mGZ=8{ZUFExZ Iɫ*kJ!`+oZ#~S=V 6H As""'721quԅbr彖:Hҵb"""""""""""""""""""""""""""""""""""EENM#kI*u=gY*9]k?oұҷ5$y&,LP+ZUcZپRJ9t*+ R$zw"1KЫ?>vdgInUUy;[_"x|>rޭoFGɠ)SD<HߩuNɻSaRywou?~\tOOg:ǫjeU[jܔ(»k $$lo8 Wŗ3)tO8z'e=މY[|MfGBI=+aԔ"U 4 :x\enڒ[$0m] w?Q?sO ({m|{-pY(ȀlT~'I?^[*öԝ1/W]FP*?' +λ vrVжc,RZ|K<:8]V|-F. !H #Q$LC9oW_/zqG_8޿~RWyONEY\2DDDDDDDDDDDDDӵb""""""""""""""""""""""""""""""""""'FҲ]} $(Zt>u>#r?J E+6r캱Ev;_]HY߰wox<.ϖr~ou3GMG&X*2` zO'yCJ=%O+o-yOYZ^]C~0LW?&~eqxUmؿ+O'be0~Af% u(to3=z` 韾Xkf|~Dbl~CO'Oeƴ}N@VҰNU + eԵb"""""""""""""""""""""""""""""""""""""|'Cf:WrwvUcĝH֫Ͷ5Ի'HYOoCuY7tm{bhsrzP kG:XA99[eᭋCdwf; xtC/K|.uHP6{ f\춹*\KgP-2r8)[VW.u4;]hb""""""""""""յb"""""""""""""""""""""""""""""""""""""`lkG(Sa楔 8&.Zb-u gdogƗ) XAIP8aO~n<>60O YI')OՊ-P[s``w-;{ODDDDLwmoH"kAܞcc߸?ff%oZPj5(q['gM:[>K ՗|dRuΉ =} nKqRx ^?X-?H;p4ԧ˰.|: @b g@8$yl zu]?6:}Y5R)ƭ_pUK kIE{Yzro2٠ fiMEĶwv5Y`L4GЃ81qi=~?]0fOn wB (<ֵb""""""""""""""""""""""""""""""""""""""""""""""""""""'؞NSu U?*| L6.j#HA񲎛R+Z( +6t澥]2'@hKU("Ȁw5:7O|&g鹯zO~EԈC?%To& +[_ NYt{/{ҋyϾ6 k#DzٗSsS{ 8HR_I1ѵb""""""""""""""""""""""""""""""""""'s8_c7LȰboPN2|{'ԯ';PfuIPE4@ +R=o>o=rKcfV%Wj>Jo9e1,Ż"r@b]\P`N̐m萵X[ :g1wMrz5cŨo{}bl4yx:>g |ΜNO=1+l7Mҡ2Kcn/CFWm?BTv{j?>f;7oQ?={oAgf4VqBa!2YhkX̨H |"""""""""""""""""""""""ҵb"""""""""""""""""""""""""""""""""""""c6 +~ 7enDtl f~h kM!Tlht>@Iְ)j ktI~uj$s_wG97L{,Fs w>j{!jLeez9ٯJOoG[P]vZ"! `J'~LX6hoGWԱm~>D}A'L7])?TPR͍ذ0zj +TlTj;y GϮR+SckHR~S.fd[G9loDDDDDDDDDDDDDDDDDDDDDDDӵb""""""""""""""""""""""""""""""""""""""""y=槱Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb"""""""""""""""""""'jb|\ƪNE`ynDDDDM|:}f܋t'CgɯqZԦsSp<վFlG)qfǰ8G(alM$8v_6r+EA,z؞sٯGN"; }N2j܊vlVfۛzI'@;O`JZ캺#7­W^$$3)־ͯ(VYHȎ͈龼ʷV!ǘ${DO yq1[1RTcyYu`\F٘&xsx`:'0;DDDHizjTS=XX]y3;d]Id;}DDDeH۰Q6Ha2DH$_K +:{8/ߪչUXl5?Qhp,dmla ֵ͘b""""""""""""""""""'@7 /)❽eKmfM8G?{`kÙbu^Gh/yKR-vt-rN6t\򭬫S{PՃmT-1#Doȝjrh%j? ]A>^SO}ADhk_~%G:b:A=ϯӼubhxxD3.OR7_V=Fca5F;HӚ:Ru\lsuEKn}u޽~GQj+l7Z%>uBٍYg:HvE A:ɬl˩.GEe?0`Վ?Rnp|v8P﹬}5[ԫ +j444~gY6+nU| ;]0:`jvdb1c_eY!MsޯL|%P3+Z#@$yl~s_z4f2)`"NZX#:tu'9nnnn?u5*~K3B]+59IzSXePk8('{ΆMEvtlĩd%Um-$٧0\+UW)l.HZX)(mvގ'Mt2oWYboo +]nqɭ@f,'>.o>ۋƎ3Xl + -}d7o3#ٸ+5eXY1_}uXs wی̬.ʹJXws7[kߣgDt]uᶻ_MLvOoR?Feִ[_QrN5H*Nξ}#c'Jr?eo`:&f)ҵ_,g'j6O%]~%彤|̎qkJʋlnRƚrgޤl*c,hH@3W޺-,HZ#^y>s3&ȫ,9+w#g_xcX7 3Rp: 1"5H2h_f@éqۃ3NV "OoW: cPYa'ɸA짱 g7:"}}6އ;D~ӲnLD=-XaKU]ה̱Ud-ZCCڃ~^;k_%o/+dX[ Lz+/Ur#Z,7d-N7*j-[8}H5GDS-N@` >9X+\QW.UyHEIzٙ6QR:mܢ&KA'o^{֧Lћs/F!jd^o2#.grk  ݤXVj\cjXk *KUoOYm/Vi)ˉ%Nq޺P4pz2<IR@: 0&8qv?L6X)f $1z4T(`LK8ޯ.]vu ^kUvJ2)>J[dzJz:ɤuSOx_Ա\[$,RI3fFv\~UOw1#/J#s荀t|s~a?jؗraD긯}7Ȳ 1N87㠨Qm<]q8c۴{E,4rH +𺰷&+Ҵ}ݹ6 +x[G@}=9b~'+ ۓ %@<-M^VWW-z1/aS]+lВzmɥIlUlxGd=Dvp|¼ F,}S; h׵b"""""""""""""""""""@u.uVz<%kamZj~}tnw->U!'W2&éVqnFg}MWc#HrNp'[AxVmF.1Sv:P;$j}{5nm!, +PăGd%8esɲڭZfՇW.AI -N:ԂUn#a> /O:ѯKi+`˳@Gd]d{;mm? m}te]N%|MVq(r#ȏ=O)۰\tR?{?_F8v.A4uf,]cCc~SVJ0PBB(:|?WŹ:rV%I].H`=tSD4h^_P GGpf\}%G1|6W>B<\ֈb{0Uc6RK'&'*cߔLkFu/ƥ,ZWe@qO26w|oNM]Km{*A XB{oDI{?+ ӈLk>Gu`} .M9V1mUj XZ tIt]`mSXy7m븓#,卄1r WQ0Lj'[\zn?V_E F@7n +pV:n'Ɓ-l߅bZlյ|,Kh/-ͼ] v7_ʮ6_D4OJrua5C3AbIt][TbW[q;qR76Ny}+w\l +'J?dF[ncJN| ک>fmVq񋇤 +@ <c-Mf TխݵܮmO{թK"MxxmX?0h^.~K`rjo]^H4EK;]LJZBrct47=vǯoShQXYM9 . 3?F-XϋKP-lx> W^#Ct,\3Y@2-k~뱝WmfGD9!2+8@؅٘8*b ﯬ K_XϑcXP hgsMQ>/MVSP2ܒx>$Z6ڱm+M>*l-OYU #1MOmY-}mX C:Uuo-9t_NES{EeJq@$}(~5; |sae{<>g7xTRA5.Z>Iח'/'=X2ѐ/@gohha5>/Yr o^D阝b]lS <܂[Ϸa:.e&PxkCQ?9uŇ^oj :Pe ZՓJ%x^"<#a[R9{pk;oJe*j9vFbwuZPV lǨp?}(4L5eT0)7ٵ]yL?}i4L?nJ[$eI}&gr6=8 +JO5 &m3&:UZJY?Ϗ_:h@w>g@cVNv'c=Txw+y0;!{hI'8uxb"97͜g{+F81U,đly=Yol;7_>'sYC#/W5TPh[Ȏ>tln.Jo WQy- `ltnoU~emP}s#6v=z *v]Yأ+XSӕN1V䵵P1Ț}nXrw*N+Q=)Z^15i]v4M#ԓ&b""еb"""""""""""""""""""yS'Obyj{2A>'fYmIz2:VFfI)vBHPX(`&l趗\;p߾SGu*EG6.=HKovM-hn? i9Pyk"$|OFz,lVt C(;[Wlf +)*Aܸq r-CG-x-c0bw Rn""yO5=Fѵb"""""""""""""""""""""""""""""""""""""""""""""""""""""""|Zڥ]C aظZ+BFuzn- E-˹-bR+J'}'};!iqbˤQğ2;v?tfkU,ġ Qܝ ,WH)m~NDDDDDDDDDDҵb""""""""""""""""""'se,ll݆1]دm~44{yrq-hzkM5;wخHySܚ*,uRKɂcg +6!r_y6Q4{F9^.<;^iZ؀>d'#מxoPN8` OԚ̽=U:/0:k>gd*v*,6x?_)dNU61E[*fZ>X(|Ol¶{<2xO/>6ճ=؃G[ay!Y$@'ߜ>E~Fjb4O: a_M m{,m܇Z|O+ 3n{ !>M!aȍcz}O'S[ +^-6}б6}I&V 0OY>кX$'k, +9ګ V##:S~) vEUa 3wҨ$:ؙe2S5NSm^D#gЂ;o~]燴[U @#C}Li ?Qƴ)xJ[,Aߗ#;"~f%Tj!$ʰav>sZ屿=k =ϕX$yA#yD3SyW9ykˎ^yʿ慨 nنX2x%K#_0{Z+z; `HǤ>Mr:˼o1Zi`9o-6ZX%yt?^z`;HV^Q>-o-|>F棾_Vq6I>/=:3PǸR7OjTHw5ڷ(d! ?H)]Ȯ@H|7d%@URē6NbՒ#H$rt|?/ \k<=)𷣳 `Yu$oc}0=|6:?#| M1߿X7q=ӵb""""""""""""""""""'r/ZhqL@>ߝ:68j + g5X v&^G}:]:y=JXw,tce{QW0ߟ +Jܭ=Fʂ"z}ItkDG xYw auZ?8G3{CeSӞi:5jTq +:-#e/P5J0S{=~s52KVIdv>R!(JQ|=\{7z#[ֻN@K;ctׂ1ȱz`~ @Rrmi[Vv@j*s٥Ώ62o['ȯb̥l]o E }~RG,\wt65D~#bqf>MQ=I9)*y+.NR [6oUe.Va 6Ҳ1Y] Tz?k5qJp j7.lhvr=M_f(f[kd#rPMa,dZ}@o6Eu_f|[s9kG-Jđ_9;qWudWg.|eg;tnzAE[J'dkZ]2mzgܾ@5N΄.W[}Ǥ-|v!*@kWí~&lvAQ=:ͥZÛuZuVxc2w"3]KêIn) ]7'n߯vEo3'ceUbEiFVyNʑJ)Dr)NVk]nl+]T⭢:]vU{_(m\2:-b:=k_ŽWM?k즞m-+%a)>z֚kn>my-cЦ(;6[$OKΠzz}nt +[<y$|5-Y/uf$V|H΋ )7GC \VAa݉]9~V_:H*q36kBg[_( +*J(8Z +6/I5%[MEi-婫 KaM{8ՍZJd]MohpۡfS8( +#ڠy-j{>-]r%@Rrp*21=ې>ϼet.IΝcX\6B_CTY +{="NױTJ+[-@gR?>*'gg$8h>o6.My d`\l ʮ<.I%~qkb;"?)DDDԵb""""""""""""""""""'Gt:0/|ex3e'_>Sg1/{X i&Z$q%@ϕg aՂڪ kq;^x-OeX+scl|Ά,;6qk <+^]穓3cfULL[|%uĉ1rVS@ԇag׼ɓjjb^"bk{*H#d-/JQcrvWem;֏.c  +vmF%Hǭk kn{!:\k1rK0{C̻\Sz2H~Ӫdz=#b6{o[Rz>ڢvCVNRJ8=#.)T"!5zm^oP)fqo/߬#bDU u_IWuŲu -w!6qBc㵖ZCc;?Y,RA1>)Pa5ʤ iu@hOr=IJ|SEO\[#GG]]a={30 +Ҝ4V> +y=8WccX_։:=vI<1Bꭤ.}?_sz&:g5$x:/>QSZ cxI>['G]zO(o z4 ˱$h31EUs{[K-6`5}F{׉9@~Y\F8>xq; yc~{5nSmYλ   xOr3PNX} +hvF;eVm ڨRv:cټL{1k +2-l~J6t=&~ҫ遂=X]@lA2u +zzGcdAg=>! 1f;'c'@h}&D>Q뒰 镔YO`kd=u8xq{71ΘYyVsXgp :&Su|wNH=y{4k/k.dm;;0q3/C2b)ma8qb-:[G-u0_.U"R' +㣵bvuLW_vN'dyd~g@ʫ-͂ڷ^ 2i~sQnZ9kzڞ݁Lt=@?0"_]yo>Q^kuߪ7#z|6Hόf0+b^-5}oxVC[`^udzj|g1ùFfr)r|]lo)J +\k WF㣡ё1rrCx1 gv:i*_ dKyZYt@I:Tt(j+*VZ8N$9.N2Zh*ſ@ {'`+F(˰;;=~e5fjTAb-Sl7y`>ScVh7xƴght;@ט`˼N wJ{|M޽/ }ZdUJ!( C:UoUJgk*[H˒_c[DMΉN[M|& xu$|رI=CS%˾,Xi[߬9z˓P]YR;zzF@%EےkAi{9VqK,#yI 7d{9Ul5T*AF$2gtZK]GH%I|'' W$mlbF>hobA-gRCS^Y+ ܣmr]0tNd:z{*Z!!cݣMk=2) +l~|wGo3=vVV 5"g Mk5*A o@{2qrb-gac@5}bJ0&ggBlf˰NkZB"" յb"""""""""""""""""""y-(O&n>c;M:|Ur^`w0$O'y\̨ S yd©" >f{EV2#`ku.4U챭aKşFn=*Ǭ8?ՈeyW}[b]5:7Nr,ZoEa?jnkÏ.[uj|a/jZ0a؈ ~Y"ŭUfu!#"""""""""'DDDDDDDDDDDDDDDD@ֵb""""""""""""""""""'s;/=r0*-;ȓeXG_|T~d->~H%(|99wtZ-lY6vx;|MGH{Bxz8uN&oM}ͼ/hM~n;AS:>W +Z22(𨽑Uu/ ](nMCtl=)]]X́#v{au8nlKXb{׺@&-~"s?_aj.{w# +E)Wf +uO͞%PEW*+[]Z?CH](KwVBvmg>ߔfbdYkUfN|at>p:شՊ)2XHUĎ̋ԫ*ܚQpvee "yM]%7ѹ:Se,8H ŘoX:t菿r@o?Y$($ {Yv;_N;YPͧ`@J7fpͫn@1|1 򤤏[r8H` +ΠHn٬-?\^6>CޏwMGGuJ-UYeUz&7cYZ c䏠8魍깯2qܚҌ+W@3Y~Ci#_@}[Gh+iP!#)#=LD6mt?Ҹ/|V_{_Wo>;Y]]wJ,)C/ן~6OY]G%mbx{ P ݽHYֽcЯ]ADYdU.0loDDDDDDDDDDDDDDDDDDDDDDDDDDD׵b"""""""""""""""""""s NgNYƚb5OĽ`o">ΔlߴwBx Sq9=ysr=kڞ/ơ@VÈ$uGIj2+paz.#MvڳxO2R1tޑ_KL,}%NGr%PAwBoÛ++eKGQb|L[N>5R>KC/sb pbukt(yf5df2!QͅJv G}6?Jnin@Ply91xb#A;Vzu>.7QEY[6WXFֶw;_XOp-U8o~3P 62꿇IZ,#Ⱥ'k,oߤ]3#<^_I·*lf5$N{/U/QǮV!Bcgc7&Vɡ,*d&[|AM͂qqP֮#cAWOS1|7ݯ5ewc3ڌq -ܭ5M9ZįDb1Ǖt8=dRj]~Cܻz=P׺VSm: Hirl,دD0mCʧYK21sXZ7z^얳xbmemXAS9ɉv;Ur0JYPٵ~=y3׋ԯͥ"t ^$GdG( +]0j{Sm[R|/e^Q @;׮\'l5bPr@R{ni7N]gJYIo>g},7{wjViaK1NܹtBށގ1o@X{>EtWMIvijZ*X,;>q-hеb""""""""""""""""""""yyFj5=5'~aԺҲ{c$DDDDDDDDNo!.)[VkfQ^ +aΒ"""""""""""""""" Եb"""""""""""""""""""""""""""""""al堟 F'6ufrkíEc@3A}&@C DL:/>Oo"y^3[lP6~uL|rX҂N'Cϰ[]*GpAO϶ zA{ooR[ٝ.]9(lRH 0LN_K=Du PU DY܅URI'@ܒbVW]AyvUx6 + |7鿺e[S^Ux4}IZ31:lU 2ߊOqkˬYYڝc~#>jǽuڌlzs#b0K 6"r=[0@UF">.j7 +j v~lPv{ E(A:J~f^97ǐ]a9b9x~7{r/KY@($F3򳲴y&Cc jM$|U`-٩[b@m7/gLYuOKx{u4Gb@_ؔߙꋕ>rG$s3inn*3dy??3k uj賓(Y{| &B?gJE1s58>^nK}v"AdS]+ucܥt +*NߏO:ݍmبiϭu'Rn T|5Q":$h~ӽ޽Y}0msu)XVF(߮&X|k1ZwGeCO7?,cϋovu 3#gkTmDFWޛμßLˑJVB2+՗o13Az8X :n$n KPh<:Oh5jWgAmuuV]h. PÕ ]!ərl82o[$']qa,1*4KSTv$j{52PϾ,ZJ +x \w~[;ye_^*)VE]}=OPQD%QRrcdz1LdQnMX"nF{RQCP=4DDDDDDDDDDDDDֵb"""""""""""""""""""""""""""""@Hd3>!RX-EJX3˴c\{UWƏZ+'"K:K+\΃#.(ԫZZAذ Mf\ #V*~#6C!3`]n-Տ n̬H⫶D>@2-T-%iQIH$wM*HVӺwֿ0 to~&%X5('@1v{&GUpzNm=}>&W=t,|p?iSZ|ʀd5>;uh{|\+)=w&ުKQ+ϩ,:nLd·%IaO'GtzI}NAWv0 ԔKڳ]Kװe?4|g鳅^jjqۏ[W;nlXTHoGU͌.V$|wY`ߓvr?Mr-1eeQHݶ|QRZ־JGH)jn.k`b3OFbc8xwnADsqK~?RmoMO=̋x*M)-- 8^RO)ƽ<XUG]c6'J[k,gdf-=23Z˅~EoǺ7 k'g&Bhrֻ3ޛsW:57z¹d8 G^Օ겲mΰ +je#$UltZsf'I.p1ŮD*֍cej곺JX%:o{ t=g=ʍ.LcUm[ 3)*A\{ +@m#EmΏw8eB#.~ۺze :?Q? tA?T}=rG + +:q??"UvoUamM] ;wmL>x5l!Y5m]l|GlvGo[;xGc}c5(NZ}<='\qe;ZJ_k>}=BS +ǭj˔]:Y!ٔWsTPMvw@'؈׵b"""""""""""""""""""""""""""""&,u˩b2J;^uxBjO6UBil `*Ti\Jcwݘr+ Hߨ? EtRR +ϰ33#zyiO㖹UKAFʞߜvc[Hb)ӨZTc1I1t6g;8LLTV ȟmfC~z%:uef8N]b֢ }H`X'Uuf=TMU +5{ɩհۨaߎe. XhoS؆MuF,Mv366QJ%2s։ב#}y_\: F}O :I\QZR/B|N| 0; +BY$ ݙf'I$! Mi0)yNmu%'[Iеb"""""""""""""""""""""""""""""""""""""""xFƧ1W+%zx(R KP|$(מG%Hx#Dl߄X 3~_ǦU>~#j$K)e0(#&|Sdwo+"vROy_/e +dr)n'a{9o/(H$lx˦ۨN /=fDDDDDDDDDDDDDDDDѵb""""""""""""""""""""""""""""""""""""""""$U+<ս6sGGENF^Ӫ锊k13 gݝ;.V|E$$Oiçf j~R?%[>9l-L;i/ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb"""""""""""""""""""hsWFWM;?ISt9?wx+5ŗVPT|i=^2ئ0z&~=*ZHI˰2/e_ԺbkRł<2VlbbA;ؚC0{ uRVDmǯn2JT.98P‡m A>˧!kV Gpo)年P,I>ɫ$r`-:WL +/b&ng9Ͷ\YkGlttŏQ2(&F,2U%xkosvl^H~ "5g^}d3Lc*Eϐ^|Cc|?| 83&O\~˱mq{ &[5A`6c)Mxk-(xGB3"n*-QE!.}λaRy0K0PNwV)\(accpRW;ruڇM]!#YԸ@5< 0 kaHo{C +=F=lg=~&Uyǐz޼Z}ODu\x))r/pמ> {Tvy:vWVI#6YirX9s`ՁGo/)?96xX"ukP#x ʾiS/-{: NWSL d6AV<΋W[l5sM+QVq#{={A`}7%:R|bg| 7nE–s׶kG ܍{L=[KjcmPYwk+{2x/kTߖ/ 9UP@?t""""""""""""""""""""""""""""""""" ֵb""""""""""""""""""'865ҨLvw/`gnξ"!-~37[*bW.wqjK5 hv'|cؒG&D1a`N] +,×:[;#{9]75,6G}>js:T) CVE9xt^цO4k_Exύ[UY!}pmg(P@/1ŶPk\[RO e)t&cdNEh[NGCoC?WqlbW0VRX}2)j0ړb>p&'OqeUA8_T7۸oR[R#[o>2ӅePk/O/ !0Z;?p篋-S^8" +َvOOnƐ"0B"'}AfzŘtW$U 6y3n]^o}#~3ұWJj>jv;$tƔ K;',ugؘ,MJoZ'd('ֻ{?MOJP\.ז;;ߟ磠-)@G Ik J9n:'z2NXxͶ{k|wz؈׵b"""""""""""""""""""""""""'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""F{EE²^vmR`>MRcdKQ^K\T޻yznht2&vI qco?DDDDDDDDDftjNE5T1ge};(]=ɑ=ҵb""""""""""""""""""""""""""""""""""""sѿcu~ +%YWF +tISϬ5mDz#>9}S@?"Gq2aԸ%`*Ne$Zmja}@\wKZgNtozkaT2n` + QIo#!$[CZ:YP 'g#rGU]HgV^>^ yk(޻UN;&XG +2>k3{u ׇc9'|u#B$/^&Q;)}lƦg6CӨׄ 7]evߣ/)Ҽx^oM\dx^^ 㿔MwED'ùׯWaxT*r*ĉSbҵ] oCSS?Dloq6_ \mC׭#=uG6:^?L 3r#tI>9cVB쪬BOfeDCcUXUZ'̅2 +̌/[.Z' /9XՒ|\lqݔiX-L흞J4;mf}>Fl$)"E[>5VR*?}}'NǭL4lwԄ8aȢ ~S:kP4'4:ɦڵ7ؙVeb]]C)&MOb"""""""Eu18U6+/A ygCS&=Lɵn(,?2_FI mH|"'0B,*rtLyt[2jE ref+=H VufٌqUJх^{&Ȯխλ:+U8-{־sofY]3Mvk#Lۈ"ũ)f? ɚ*([^'ĩ2]蛲?gN}x6:]O~GS{4SNnK6bBy95t/[=IǾ'.ޡ[d0 [C/0=B_ تXOMw=G ;kƭ ڬX` +=Oizgk*RYV۹Rw#ȉ/'/Qj iKד}F~UxƱaѲb b9kaMU"mDfBVY?>|F]KOĤrm5 !KQ_8 i6ٜmȈӵb"""""""""""""""""""rS*8-=hQ -}#|giuXiƷRYJA=]z "u\`r(u*;quSw^˱ﲤ-*~۹b|<JtVbff[?~9zN{cy'gȱ\_vT!f~}%li/*NwZ$l|_gG+&,KOHW?.zO+9=g/ .56]+vp@p9wi3:Mȳ&|KrҲ&gGH|,k+(]?d'ا t[eО22{CZ¸מNTL7N.EWWnHA]_ǼWמMQ[q- @ވ"q:k̻3%93bK|Hn/f<=ГK7PG}ӧf[쭹9L,yny(OGOL7PELE} n-ίeyd; V˸4^nYᇯdݦX*?8)a623\j(Zl[ٜ{/cl@rs!Zg!@$L9h@O,[TjqBco]9ۧיa XǏ%~|P&[!߰*r\bp xً'`lش~2O̭̍v\duVhxMsT ߇}˿P?bG-?b6iዿ\_?iAf^RR@ͣt;znblfZzYA:hyʯ;?P+#6@v|dtFCVf=8֮ }I~ӛ*UTjǍ5*lp +obyy]=[2` +;(H @>m=CT\K((wN +73fd.gT/f8B?4hVuʰۗX&hUcnUX1-ΦA/n=ϐb!@6λo}䟴Oެy.^23r5{kSL~(!\Q܇ H`|>?Mȯe=eijr.]Xrl|;!Wc{gx/FQ<\3;Jk#@֜W|h0u|~A-_%>{ ڵo2LFV 7EjGc2ёvV|6= ,t@ﯟirΤ"Qa1 +Ź1=Z5mHISTv@z纮S- pX#~MO)ȯ37Y{1\A}6Vڐ~$]5}?NY=kBh٢Oy*x;߮:=[-J߆raǘQǹאΙVa#Yn{6VU#'dyw54d9N,W(<}}'UԵb"""""""""""""""""""B'PKNIJ{,^g7 zI5zo7 *xj[w:$gdb_f,O&e*'{kxLnøVj@[@_xߘ] D|oױIP vGLkn/᭪U^Gl?^t7uZlЮۚ9[$.&Q+ձ| XXWSuA`=h6h-~vdv>q&EfX_ J;d6aeb}ok8n-_Y%Ұ[WxTVP[|u:J5wWmn=~6V%7yk e[ߔ3ۘ0ű\:X<)A]O~~CQ +~ZYpū +ܟ.-a[PX>`w ߌin* ,_"}l˽}&ޔ? b5l%h0OgbQ[ʬɫ?@|}&|}C;x5pYg>5۷|T+깙biJ4ʬma S_n.VPFTP 2I3ͻj_OWܔT#! Ѓ}}|w1/szVCZ-eӕe +c{u:|3K -`ΏJ[+YJ5ۡޏ\-g%grPo|:ǫVYJh`Ww o:3!:+ ,~?Q\$Ƅ:y@Uٍ{kpGa OUmm2JR +H{ϯjK]52RCU{*oLUZԁh(@`'y9s+a_yQF-nvZ)ɸM|1~M {,wۿh]Ҭ=++`2AV;A_:wL}+̤lfƤ9Eլ"z1tyiz"cs _OgP snXNuσj"_g7GB\3wmls;6Bb"kT{6+1[^2aqgr^#˷}^Jf``Ŷy yO]tdZfC;3S6dљb9te[ lf VU`eta=Ǫ㮆9Է=翧h||LLvw`[5sʌ l6f(@ Oo=ɜsH}i`F~oK佡rTF9o?k>FȈSh6MEs&cU*P ֳZ-yv W`|yn!ۍYW`t;={طuΏhBR.]{,OП=dt=Z:X`@'oH`cًEui@k,~dlDDDDDDDDDD@յb""""""""""""""""""""""""""""""y=y=1Վ(y1f?|1{~/yC[ne]5Ӿ峩1&:Vb G cj[ +)>c~z2DDD Ob"'ŕ%0*)^(G""&;-f֥_.|Cdֵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ׵b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +endstream endobj 182 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 61/Tabs/S/Type/Page>> endobj 183 0 obj <>stream +HW]8+~y%Ymh.neo¦,;S%M0qZRԩSw/>u//?N݇1ry8>:9 5<ri"y^Kygx>ft&$ϳhwOz]Qn +nZɜsr?I?;,2W!bUM>p(&Cv;}xbt{D@tA8pR< a.h]㑣?G p9t-yu6\>tt9?-;u['nGJ~/i +(L lΔ(j?5ֲ&.p +W>X"8SlK&ӑEN2?+ܚ`:"/M+@vB)R䇃s4篒~Káyl f& du"; ØBLWF3< +Ø.6:*.)IS~YɆUȤ,j@i)@ˍ,ٛ(##9G3X9)/P qk^'9J23µW\\X5m:2@ŗedXNeC)ҞRUܠ%u6W,>WnN6g-%rULB[$фbke0?]f^+@?_פƟVKN!tI0I,iP=yEbbHE;j2K׎  7cAәIG>twzrIe[/8 +U`Յ52Sz$=rTu~=G|֖8l!^Q\csfCK%oN)zUIFoXArReKƁ T`(wQȢS7xV51:Ͳ۩bDL:O-|"]U+6o<(YTP1m4ٶWjnkp!m(F .PUPpQxq, +Y&h$EѢm!6wbSE|JؔFdp5CJ;pCQepRRb Z] YϚ$ه#_DLbp 5\pWܵjSl`HU>%BI5%a牍U3c $S:)3MVj\ f؅M#27{t)Qw=~B3ՀoC 7kXpV.RW0g}6[7QAp +щ3fY4ن˛uZtvkAe=b]}uoԜq!=awou7577aQ\Fn-l(B,t1|L(*HsZ76T4rVmE?H(BD7+=*j:=g +k˱/*㆔Z]."oSCtJC lk~Ɂ\O .7^*)\&9MM wo[>T]sFꌈ-UunA;t<Œ*͉= J!i{O{{׫mwĿ)P 6RQN]vz_zhaʞK򖦒@I#/۵i3QEc*,ܟ9 L_{=U/nUęuЩ}<̲ZͿ$#& wĮY +Jz_ Qv4C(RPn$\5h[Hsj ^[%07= + C0ٹ BgbR  @?gm]J/O8tɠEhfwT&tܲIĖ#{# +5Y(͗W$U& }*` pu׸/Fm /-*]^rSac)Q^d)[#7ކS}g.5h(AS+Ou,1G|6\>MdobpS*%[VE#DǴ@-*AQ$&+CFSbcTP wOoTgws{7 ]qթ+y]/iQpRyT*1G"jdL Wk,5Wo9:ã| +`'U%;^m+r@W1yYun0.1ĐKX8H[UI&ɃLTS眪S(\~!g Cʋm~=l5vwk`h6['r/۹8EG0%'".Iҧ QEmUg:&* %ѩ%\r9ohQQb1q{@K]/~mxŧql!> skxjγ*ڄGȵsm)[[sp&ҴnxOJǿ~ư-Ɲ 3Z sQ2άZ͡ Yߩ%+7#3mMOeG ͯ +o4oCxB #.fyu/Q4]45Z;JPty~nXalo]Xssg9=Jx^lvÓ;$sh4k*RՉ%h{jtѲ +U?; GQj0 +p.bA^F7BsB|C0WVb% +ڞJp#1r%bC%!eBlOz'YRQ;oQ[Zx3>sp$H۳捲6=gkE>ZJCMypV]Q% <`-Ri<-/ [@yt7qm*9oL$_.vJ3qۭ5VH +3ԙdv  &{f!w A3^P"Nۓzzs&[*]`N@f: ̇*'@ xVێkGɄGg9#F]jq`$wխ8&ot-L?)(ib蒐 D;{zQl/:Ӧ9L4+@LgvAP`:DaRKMT,k}#4qEUA׌I !"`]Zie`z<:v )h,vJ ]$=%xlZGOI+=]Pj[M5 e6PƩKnr;t\T3=.y@Uل$@0,ܢoR6u)l9hjMJf;Uj?֭m 9\Rⰽm>3{kZGj^Oxd <3zt}՝-dFTlƛӘS%E BȈvxFԠvc#18y:Yq1NE)mzls۾BjṘZ?h*K/p9)Ə4"rM{uPA2^bmT']LrRIŒa3t *PR#f\U?c#7C}~0v;,T4SAK@Ҵu-P븡'jFs#v jvL`Y4zdi96םC`!Rr]!2ivY F?whp.pR=V s'aq>G3lGI/C.}XTY#`%M)_hc-j[xQhf0 ZD*?DS)7CB;gn 9ε_iDkkrتU? +^c I G'.`@f?8Qo}ߞ?=}} ӟ3I[:q)D~ +uskm̹ezzqQM/mw +endstream endobj 184 0 obj <>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  e!1AQ"2a#qRBTbr$35SUst%4CDEucde +&'()*6789:FGHIJVWXYZfghijvwxyz?괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥*:Se0Z&B4Pۖܜpg~!eJ1H&s{Č[T*gH >u{l@@ 'moapW\ܬ.~b`xR)tR2 +A)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥+kVG$[4/L !U M܉#|d$8bF8#~@qYoψxSe7VVt8vyL*F857v {'3\\N1(ʳ[ZjӡOf78+WHo-#a#u@pt+QrI![x}6ViHr# "y!J۽No%_dY;che~:x)^ i0A~#rh dK;2Ī,-7w5?hs5 +2#$*!<5H.Cp |շ0g;Ma F6A=u3G} bh0% 0T֔6.3 + +cr}+g +$@%Wh8 8NN+yU8B*pH9Y<85C4tUM'۰sǮŽunc`B20 c\.9tmM&ٙ@MK{q'V>#zENc;YJdO#*ٓNQ2rtJ vx#9$[>6'St3Psߓ[)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JP괥)JR)JV)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JRm,eKHHP傝GμΫ+"Ż),fxϭ]nuk=J+ӈ2W3ϗ5ݭ$b40FҸ^+yݣTgSPX5}ViԚEF2Wܜ +[vH]]OfV x$VZZ姉.3T_p̠c{ϖ1ZėZxs8Cw#z&$ITgR@hevݷ.R $ ITz"Tc;7.5x 6Ӫ =` DH̫"ᔠy uo5)JR)JR)JR)JR)JR)JR)JR)JP괥)JR)JR)JR)JR)JR忊dM&uv1H?(p"H `p3V-;S ,GLy@;A^|a/<(?ݝHW* t N64M] GKwKX +(A=<9ڧ<>jtIde$-9IN#EQ Ex˂~uC..uQ=30N5%U}Tu#c\zX6]><;2{C:Շ$YI@*v$TDNp1d"z|k{MluW,SZBbrl|gQm5K6 b*hvv1* -?UwtT2;}U$|^AyGv9"E{thldA۟=Vs5cbܟ{<v?Y RN`ǹB@GToiXn0erGg#T𕮥y$edwp$B#i@|ΫxNVx$YɀGH0jebpfu1\K0*6p/KM&>rH( +ɬ׶P0Ʋ#2"vƶK4(\A$q;3ͬr]TK"B IUfkmz䙑8GflHu_ kQE ̳iP$ۖ^H5|Ro Z[% +bz;8;3I?`⮇@'yvB$U9ǕJR)JR)JR)JR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JRN))T'V)JV)JRf`j)J`{UiTVBw9կ"3qWRfJR)JRBqLiJR)TVde(2H>JR)JR)JR괥)JR)JR)JR)JR)JRomXA^Gv[(=JSje@(,0rVsԐDc  y⦑ÀGb2+yMFXg](^h #32F9AT7t6@b+ΣF5?~Fp1-I;Ϊnb1%~9O̜[w:C+3Lх."U;wr,9+n;c"JH EYߦHʃ-w0_6Ǡ)raf6ww,NF{d3[ZL,:4+`;K{扭doc 8erV /!LGJ"|288Z !9 +T݌d=s^%֭KPcҰ[9-.~Ll +8a2q犬`qJD,@POlӵHzgX0vAY:HA8 jZ\[㝠BӃpcζCg:N@Ev#* ;yפ%Ow0K,Bd$O/\jpi-iVTcaT`1$`2~\KX]/EVtJg`ZUvb`$0s[lv{yrj?ή,;9dyc5]Nac#""s{ m]ʰi%*[$3g_[Ev3liݷbȒH.ʇ8s9v!8I=6nNsrH*ƛ.ٓmaғrdmbMɹGݓ粂Q+4ёY n0@G4FRDfD,Gc>U_[FcN(dT9Ҕ괥)JR)JR)JR)JR)JR\iK+mU$5{sh}Bu,AAapxb[!(R1R8QHX[9jHl_Fʊ2>eH]H-_6CH BGsfl'YD{kr##'wfֵ`NNBp89ndSʋeF˰2RWqSc \$)avn8SğʻIs5ouu=t|̶pİ"@n`~1Y-vR:Ge + d `nNkC,sgq#-c}v#JPX@'FlgE9ciA&qeǮ~Uy4+m[De|Rr "P{wi~lʗG<Ie?=8]}dz̰qoIC!cNr3ߟ:3A+$̒9s!ڣxϗJ׌ֱmZM +&G&GU9ֵ͹{[KRrʃ RN0$(>5[7P|!NՖ=.u}7.(հBI$.cvݮC^Ĭ]#+ +0ێ#y<~4wNlGYIN69籨g{ ۼR^ʜy_j$#,Y@ќr0} jxOTҮmd[X1_1P*n[sKj6t 2ܠev>uYmBim,DN8 *OŪubnvKJT 8s.cH#0X;6C\r`9*&(nt۔BW(Wlk,hRqNϦƥJ+ /voko7^ Qj6 u~iyV]DK" +%[~݅dיv-˂H "Ͱcr8|!{ͽG4e-elhjZё-6$1np==OW`/5Tuuef8V +=cޢhzK˹Z(}T|<\)lcljގZUdMȱH;}b6L$[mb v8犿 u_A}i9MF@,s $lktltU)LHuxc̚ѭ-N+Hd@#9{x{K$cCm޲˜w~w'#dܢǞ6H>CB-c֮.n$;x:R6$!yY5F[x ܖf2Gv5!l/ ,om*JaSx8-M7W7$A:f7_8TByyUl'VxR!!VPHVϻ3Z¶ӫtW^6a '=A6浍+;FfSm# +~F$U88,muv:ܣ1Y %8l]{q޴4k {==5ZdHT;a n'$WAhTy -)JP괥)JR)JR)JR)JR)JRUbT1Ubi/Ml+ +#*2K+hĆ4TfB2߷[X1US*1V\,+,7(?0Q-ڴ"OMml1,sϖ8U6K4 jTTl(R)ޘ*c4)bU$=WUCE[Iڊ pBpHvWZm;qg|. C$&餐0db9fʥ0(T8** (0*sBH$ ԥ)J괥)JR)JR)JR)JR)JRLiJ< 0ė@`qXMI8s޶UfZU3UWU KtVe!A 㜒@}ni5OsF@]o +||fBqVOqm$TdV-B[kie#+ HJU%OpHe_fҩS5jلEd!bX]cRIwsGEvQ.jiPVKZ2wB3zԟzfJRUjZurq<3w.gmXPUrPg }f~K$|7 ko4jfJU3RҕL5ZU3P~sȲ +fXăYw w]X '9& eH##$gꟆ`)ʛv9#HRfZmuBXrppGbAM{躒A${ cvn j*Vsɧ::,A}*@ԵS5ZU3J*_S6q7N0ry}>= +0d$Á@9ڥ)J괥)JR)JR)JR)JR)JRX]bG IEiWoлv'D.!@8SIjiT cMcmH''<`T=ws\dY.~}ne|󊖙fҵ]>4܉DNȷ.Z^zi+YĆ^TXC[(eU WLR!f+j$d*Z0Lw5>t|;"ܢ .zGpWLjo9\,$Mc+#[fTX巍F(@op${yTn\hwgt e7٩]o.Չ\e1br'{iкfxMɍ`$zohw浝7؞^ ɀDc +0q[L5˛c3^ d+4d +exy[sp9oUHnpOsk5垇kw,?FDCr@yIM#,#G*CmP~U2x4y#B69%*n٬.m7}Rҩ 9D f ѝ_CY|$!v,OLI4=N6)Y$2xxef%FAv}"}Q漟mŵYp_ X/6$ᔛJi@\ܕTO(:3 KJe_{.o c2Nnql]ːFSlGl{ sORzmAK+H'ITմ,Qc$Ĭ[_;yRPiDsb$؞jfx2b>^WBմ~I +6C °q[3Lʊ˶M8W?UfZJL[.̬A#Ec >=gߢYaibdiʰFdVbHAiZ^ϧ~iϖ)0c>A?m]y=fn'T3JѲ6,Y0N{'mFIU: ̭. +Jd+ 9x f\t+ȣ\Ԋ[%Ѭ?$iXeO@⼥|7gV͈V!uR5['zԤէ);Cmo2CIUjJK U&RSG< ՞%Z@7Xzeiv F.|a sy$1H9s(6' 0+Ϧ x&7!C2lB9_]yytg(azb)U#hkNnWyW4,dAz/ wSz`)dqU57[8Kgu]2,ǩ\jFX&K7;7~2*xR{.9 udrDv!| 漽ÆW21;P +p/kIGmggşb9$ҷ|8nG2Y~HPT@'1YO,UѼvH(5=֓2p*;vPڇ+k>?^y$ x8-ˬѱ'21 ˷Zy^)BBΠdsڤl&w3 2 F@N0?nl!\#!8F|*ϥWG:nZ4|P-p+ Wxd2Vs+^1!, Au|J-*?ޥ/h6{1^t|;kKw Mvg"l&ӵ2wHuVȱ}@\"kZxjngZ1|#7:W2[H+`ceF `,U]v<<åbKt9 vR +)y+/B7ڬkXqikK 3) ziS@@uXHT.m݉_Cit.I$)@괥)JR)JR)JR)JR)JR%{F]BRx# /*Af}HK;>" qb>^x7~OtroNsڬКtTp_w(5d~M5wx6  mcVdkkKwba翦+3h i9Үuf? On;Um=M7g*IRFi}c!0Upn2 85 eKgr0ÐJhzX'iQF<0X +)q@=|nELαt̪\B +yp{Uh ug5n^B@}X )V8\"]h|Ƚ{nє`HFr;[M82DfU@y!Uxp+{YRnd21a,(9V+? >nd mD!q~Mo$Ie |`€ޚ"'fM"ry| -q=Ĭ8ڊc$7Op2+<n$2L\o +c%$ ,:1m.|;5D^ XʤiP@6M*;RE\+E,hpG*yd#Vׅ6e5*aET2n;g]oXLO<1s.Ձ<8 #vbaHeW#rNJ毰؞G7Kl.08[%o#*$ +mGGw"$Yc;T}Ȋ]-pGlQH2±ޤF3>.k#x]%\Wcqڰnv5aeDT >]-Ɖms{)ŽA!G<3U4xG1M`(x*p8,^sK+K# +8]ij[Ly<ӏDcͰ<qT*`؜RO'M>=7e&yE 8tMGtXm(UEpɌyu %odusn8 Tq նZAe;T(U y5nʲK$YPŘ$5wk2A(ܒ##P}g.],)#*NG޵G_L72'ju6oe1vtV0d\b VOȭ+I-4p0Qh@9,T`zډMSs  +8 ·$7s][\ QdRicXaPZMfӕ]NJdw%y->˴mp+GJࢡgfHD +29l`X{;9&wKZRp#6.j9%-ۻc*Q^rXg<:GP3gڻv),qsbDT8aֵSIK-A*W,b}qܶ(,XBUr|-LL{ q@PE&tVi=PvAcs|דp宠6Umc'5s$&̐hצ*|5*FAjh6q\2Z +Ē.rcE]xsڞѠۭhPv22;iJR괥)JR)JR)JR)JR)JRp\Eruq2g"Rd֜Յm8TS[Qʒ UPUiJRfJRPV(/!.HQV jR)JU(0j+1RdR3JRj)JYR.@$$Q@H Acjp| Uԫ% RT HRMk^ֶs4Fxd g'&&-i$`I'䚹Hbjw;r0AycsYFMQ8H E]JR)JRLiJR)JR괥)JR)JR)JR)JR)JRN3m-Ne +ŰwIpIq%e ,yTnE\ua;A3\[HP< UWcu#*(cN 3x< 0 m[HҴSW+BI*zòL8|PD$ p13[z^+Z'HӀH Z`ڂ, 3]ʒA]}+Ke˖EFJWv;gʴu][Nldk1Gp q8qRڤV;y$2HIV;ɣ(LrUsr21]k8w%VhU_˸bi8UǖNIyHzD3$G$nλ`yK T$D$3[vs>Ķ[:MԊ>Q;yHwr\jVR2זCal#s8Fk=߈!H9f0e qFy8 .E]&:!"B~%F09 mX_GD$8C Xb5-N=9P]}3 ,@ O:$,ԑ$Gb5}S.&_3'6 go^*| +R$u"U(@] SZlȔ>J>di577_ JmwWZo25!.PaCg<cmIv2(dBFpđ;<#wLPyy30ܒ@T!)`v* m*͜w#'֡YbEy *^ ## }c52F(ݘ#V͝^$L, IVZƳo&,ȨX)`83TY[n$n}E$ 88.uwHcI)pI dڴG.6K%G'>.팞q c!ail@bO@O +ԋ]HT@"N7(RAGZ$psn8۷;V;l,dN)!FS.;]x+c#tx,$2!_>c<)ռ@lK(&hcf@ +Fy0~꺔)JR괥)JR)JR)JR)JR)JR^S7V;s!2;)eݑ5v[[M$z2(Xz`@#ΡmbdT2Ǽ29r z]& ns"i:H%202H*j;8Y[j'ıllNW)ܬ hmJ6m I5ndWRDzP[𦶷vti3\DvD _6犁 n%0# d<Ƶ==t2$Iˁ^2cԬw1~17M7wmuƹ&P]o*d#ֆl=wגM&dTTH$d؀|xh >b^)$Ln_+X矬T߅..m7\0r%RP -c$FL(ńB;CnVD'kQ,ð[QY|9zl XQ. A(?:^U;a+ӰCtq {ydiBͥlFWꑐ{`f/+dWh6ᑀa!4#lfC"?L۰ ʽEyMUV#w>=>K;eL8-yS_q'BfD!4U`A>czhjڹ{ #s'Q1"|Qpw0wHznc6Z<8nn+gԦū.:711B8Cmyʷ<5$nbIG;=,xRzjvI!c?ex7c29NDc "# 5褍t&_inhgc^MA^_q)![q oR{cwlj7zb>nV5z5?Es]8vc}O[:*FGd!!@8|;-mH-3#?b=c|ڳ뱙%HG,SyEŭ,reă'VGܮm$btBӚ$g6$I\y$}bt.lHݥú4V$v/g' kB8t۝B+mEO;IWy[{G,J8}*V\<8ZFbVT8C=[d2$!|(U 5Ey˶milmdRm9d)43B!v|_Cԯ`nA[J"Q As[fԮ^U=oXۿg<r[1nmF. ~N8Zfgۼ J:$z5ѤHXF};.r~*[\In9LG0 +O +x0|ͭhbnZ(ܑxRw9f HP,6ܒqߎ5]JKDu$$gG GARH#RmBmiRf;R>6x8H8t־t[V=+|ngJxwR}cO'lT$fȑ/Z>}yеvPI$Mʅ$b]# ^Ɩ5 R)oV8cWV MiG{&w*[+2>$Q Vcw\k}B #ĆY3# a_9#ʵ%=͌LFч3q .zg9 sIh%y,3=HFʡB ˛("y$Xͻ);Ac;OŻˊTX%+Ŭ(D*YKcU9ii桦DCy`<zԴv=B`rU8x` ϕDMK-]udXjp ?5j7VY!Knf4,#~[ +ϊetH) +}~kO vVcI 2`or |Vp;- VfVR@+8uI<=du ncL̄"THFIVx-b"Y$Mw&Ÿ ߚ=;U]]AYܴqI3g|/閛gͤ8Ow>y Kg+42ʐG;y%tJI4eԌ"LUy|8yrs XBm^J;AMGuE<dDYUCƬҶu)?jun^C4gbŴ Fr2N{un% ^H0dXM@ ]dX \ #q{VM VP-6:F +QO8OL"V*H 0 1G1^WAN +]HJ5v<+$m?9=+W""Q\`Y5+X.GrVD;zjT%{VWLSF,`C1S@8+ǟʩdu[k]B9yzNВ =[ak'p.0`AԄrCt涙'!9ҵt$K;icUPۃI0>-ޏn)#HMшD29sR^uaZZUrcق@ sؓSotuH oF$>G⽗]w-8Ɍ&v]͒(}+kDԥ~d!~eؐy]ّ6TF@2*3G}fxʏ"pUaR@^y95襽f,%@lPIRB]Ư}5T4Irvh'"j7`//DG>ՙ /mTh&ǦLX֢HV +Oü=+cP_Fu$a +d\x9J{=CNEictڼu}+\}&5Z$D˲V0{kN[.:Kk9H ,|R:ݛiV[bJWRIcʭZ'x"8L&rؒj]4I qb†GڪOm#bb 5U*CK=q=G^Knn^@ط,̬k3ad*ȥ'h/_JR괥)JR)JR)JR)JR)JR)Xn3%;hzSNO{w8Ti:tXбÐAϚH&k:1 +U\/<=ɢh$FO9'[2j-m,LKyH`9kwR-쳅sG"!v@}Sc^?EK\YK+&I_oO;w|/4ZdVӨyD.Y*Ǡa[ZDo{Fĩȭ@90ʞq^hjy''OባYKrNy$=+$vwӰrFcPr/S wk-NYA: uQc:)<(i*8P1S%~Cԕ?]"po)DC]ΥkvF@$=Yˎ>tk線I BWVFѧ{EiQUK+]R`8>D|Fa9$j($Z4F c~FJeXp~Xg'AlE !ܖ yk ƍ{D,%=쁄 T1?,VYuH/Hlm_icv3ǧW0M|vřQ},x=;4=IHV["0dpϞp-խ͐3y>D'n;yۯiih@ +Oʶ4wE , U{V,j$1n7cF8?:}绸B[ȑ%(GvpA;ڳ>qgwqydc&cG!eR6 #9[F4+%J'U@ +`sVkCDZ)v iϡ^]w$#hF˫Xws*T%y<ش] di1&3_h^IF9}-^G)Vf`l$d|49crn.}b]y8Z>}&2)1 +6H'$[Z=w(@W%`Ƭdţvx(1w=3A`k,ZUPg opՋgsaZ[O*AC0;Nq8:uK<+ »uJ)\%vxOzm.{V9 ޣnTJ#r*ŨG,fFL`q{|/r$( k u[%=ۖQ. }S{ʪ\Zk6Es$"ncnyǟj2q(GtgPUB3k5o|$Ou*deXZĖFMoS ή6,]N[&v8#!%و!Og]gs"Fd*_oŵc~uZڎoB/5k03`Io޹M 39]nɞ: ʄ<cmeXgM^2˞#n]]cM;EZz7cK enyyՑkʱ`b8G<1+ivH̊U;8?!ʯk}HHx`zk| ݘYkAxΑԂ#Ze*OlYdeV؇xSkl繓ِ1${|>^f(53eF&:8-"%N#=+ + 'w5i<. ٣uL 㑵9"|b|^9KeFT)!}>ufqls,a1Y+!? +1PFϞ3[wڴ6 V8Ի;z6hc9۷gwK-b h⒣Ds`8ϝbԉ;bBDnQ)H@V{|WG VS` c2 + Wrˡ WtXk{ž3ϕa1q!Ch"58A;-C Έtۤ͵@lsW]֒NeGISضq}u ƲF`r< @5lI!Ft +$Mli:'7y36.@SnEe++9PL2HFOe`Dwc_Uzpv3=%KoYap8#f֬w2h],Ǽ@?,=@:mosϕD_CneZNX {Opg,85721+gZ@6ϑ>uTӌbUT@-횶Xrb2TnϘ7,;JP9 ]q9<)ms,8$$1Ud,K""47¨$w>TVݮc]68`Aןֵno$HF>u3|R(괥)JR)JR)JR)JR)JRErIw$ntY6 [ޖB|ou q+hz\CdRH\S􎤱L2Â=|Yn5Zyf{?x er3Y4_E+o \Lq<#{^"pR  +;Oʶ[i*Ρ]I6N=q[᫄Z &7˗`c`N2c ~u) byջPMx+QSYuV@Y{ְ6yjXxa^m1M< J#m0 =o|bOĈc+lrD` c`_r!4#(KE*nsqU4VSY $n#IY򭻫sq-̩m1<9qS^RTU*ExU:P3ql I5/yj4 + ^dmߏwֳpM+vWp>uw*vM(8Ja'={]Z4VBՃ}caC{ڼXl`'6\g;w-";{U)-8Q"la}ۆA{Ԩxȿď %Ǜ;⫬O +kzJA]H,1ʚ|uN,9HXg}<[iS6u|GBld9.⾆9m"Vdk˥j)@I{б¸k[Ifu]o93m_f\#!r3M$M91E9 ;lPd{\3#ҽhn.c^9$XՃlCۘ(8A.0 CvuQE y5-[ޤƛ/`7)bċDże~[3z 0.cU\8rp7.kjzA^u׮Tm*SKc=jCo +H3 I]zR괥)JR)JR)JR)JR)JRdaF<NBH8ՌYDaі9jo\paUwmC +ߴnUhձFFpjlI(O~*ώjCc+w H{k5=HڑU'1SXGfTP[~W+xMrrv\SŒ̱/ϟWTyyzv"A(8=UYVU31jw2)eAaظ#dVcBVLV߲$]/Q~N8gʡ;KBt3{L._W/yAgw[ղ:lu24"FxRhlH2NB< +-+#L#Pg +7;Ȭs'< U]v=3ޓZqjNF 3LU!|aFa$(xRKx]ǺTn UG]A\cdcGU/`}@vĊrWbXcBX( ,; QOp hP@1VGi LΑ|L~;bFK/f* sĒ 234hQ# JLtV`D89lPPqv*ķ7gTP͍O*i H&1u*7{yќ?]nJ}UcU$NN2{fUocNGU +` +%:#:,T_UXC`5sA(8@9o$ŽI'甆,j@YYF*}T>{UC#V[Cha#BbPX"ۊ.F9{$=NMwު- ꧳b;{Hdehк,TQ#"VP2{sWKmEd `UcF +m +HcUݻ :إ)JP괥)JR)JR)JR)JR)JR)JRjHgkA>dբ;&HLnFEoRkGI$P4H\n9 dw"Ѽ +\Ukgi>9MUQm2LMaѷl.x䏾kV J Q$! 6^HRE\xwlcxQrJ@E>y'ɩAQ2#,aAUg`,$RJR)JR[k;-|I9aFOa>ubjXlq"%aRx9G=ho7MÀ9r ]BiI;+2ƥ ; 5u_A靲FaJU -VZ$U+F*OVGh_dWR9zw h_ba{=k&Cց{cb>[uw0<)b [qvK:`aQԠY'm" +8ﭪR8jiZLR]viJRjjZZdjϒ]4AOϷsM7P]N2VE *7TaVW5 58,FGy.տdW^pyE_JR+KPc^$W=y%*y[k2$rp*R)JP괥)JR)JR)JR)JR)JRu+td g}#Z}Ax/m^6 t0SKUlߑ`yԭ`[<^7 Plk\Gy=«ȰdVDݤp<5|I=;ǺhcBdG*vEnj:ke +q͹nnj8ԭHOJa$~+՞YQOMrܞ UIn-T ^$#qm߱b66sn (c${͸`=8[s\̠%x 2p~ܵ.U ^ZPAuݵ >]]_@fهw1lVGc<椫_7Ӄcۻz?j_%kl{ +dx}p+u> GO*TM=s~U[}F=FP9\3V$H*޴4oOm9t[I99}ŗ#Uww: mE6x*^\tu$2(»|ؕ$f{ Ob7,*I#V[x?iNa^bm$'bwɨ건.՜t'| ߀8s[6E,k=)OLX*={՞$ XdӘ-"zz mJeAdbI<0 m6퐻eUR8u(YW VuM[WH[y7M: gY8~oXm<`6uodd@XvY\|X!YeU\Xbнqm:,q<; X 6Tw$׭$i4"&e6o>|``Kw"yC*%,HO#H\\FG|.,;[f!lwlxd"lGusmDf8ܜkjQbquh!X2NNsVESßc}?ͧW&(L!)Rb)(rapHϖ@Y$K#KtN#e]sg%|I=3뷻Ϸʷ, id$e#GBNŜ0ۖ <{=i) .2/b߃$b<@e9*s|V,5KK fe(Ѩm$ڕ޸ӽ@u: Nm\1i|W!5E_j[{ن;޸[QksĢ(:l${n#Hh3ZE5ªmTsC8]N؟E`;aoo$Ĵ/X5*`tB5+x%7@d9I}\f̑;NYTxK7և5+G! 8C5n\_¢3ďg=E`cبwͼsG#"Jp mÑGjJR괥)JR)JR)JR)JR)JR5H%mX,2#c7<%g 3<˙w!B(Nc:Ko+_bRUWav#@e,S>GZִފlnᘁ @9ǖ+c5WY,SXl lvZPWggmDmfWwY`[9ns[麟; Tf2lv2$@۷ןg4..5 .p\n~k-X^4evlϖ1M+F,kc"6LqOaNot1Iy NϰƮŶ;{F;VIt5;; cf'k9&X  xdKi=9^ua 8+D.Ds$= GPז5]>'.uAl=V9xb.7ȯ~;Ly'{ 'O/n%Hw- HKMF9x}+M(xv8Sĺdо\E|p u^i󢢋iL +IiIOzU:OmC;ͻqb;L3 pȲ+.8*_$c]2Pf(]]mG p3}+J7iac|`C88'BJUv󭹾)Zkg$k-^|V#wc8J^ii‘e̦>^`ΩLv dF%sCFxqSjW $faXlGJ@#;bmCP{+mm,Y ʗ(v+rۉVŭ8)0QA2ɂ r*͗M RX9\ +U:-zDbktR˗B BOƋl r^3U Uzu+8RhIt3?, |$>AXl!Xzq&dlKapȒ~"=j$Q)$9F@ +y Oj&uc}5k/G'aWa][k mڶymbe)Gc'8lwEpYn=֖@0UP85Zc[!)Rx<9=OS0\3m\@stLZz7^o2*z"Ar>ֳm5u$)`n,eqHqn{pMf]#yYK͎Q/䙭T2 `\Rb1cbHcH[is*wvF1-cH0liw[!i":"TDϺ55#*.".PIlsYnMHg>g짶S6c==JP `_i`Vbg70I?Hw]n.+))#GlaY<]yR5' .l@ mpc6;Ca\8YcrPGs  "{ִ5{_u_ |V\%Jzd w+FG28eqoj\L5//qVQ `_i`>gֱ.`nb C#呟J0Q!"-2, zOʷ`3,r]X2ߐqǝYiߩh&I*vȫxEV뺻DZp7ײ\MB$FPJl `;rz3VW7"r"\:ow!Svcvӌ835m n=w~߻<cY[!jw8Ooa n>x^>"ZcmY6 Pp6#˵DV ƠweC>Kp$*,$ W۪Sißl +Oٚmmzׇ`?2`~g4a] IYTLµ4+ yYK 4K70F+gHǮSPW?q#|WxFԖo$# s#* p-6+q͘s]}Z½^>^  n|JAu+hDP\zb4k;/ A lgPNAiϢ]Hef8JXY졾c*#yVxwOIRqnDb>9ڲvN^Q`=9=[4Apn) &==VE@[yh6 Gٴl|ѬaH$Y#`?}Tmn-L(b# ?^|ՑhV0Rrɬi6Ҵ‹#?mmbfҭ.$2 +*r@籪i"WPx 3.=*VۛTV#֮ӭ5nja)kؒ`#ݜP$y+A,arFqpsYo4}ABl|'e. \0,=*p#;GZE @"^6YNX<=U]*-:!p#ǹ궚ec a `>"yXܥNY +{Nt{; @]^ȬsW F,@BycҲ2G]EV {ڥ)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JRL5ZUV)JV*ZRUiJR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JRMR &=@@Vcp + $6O֟w㞛6#|YT4Ӳ@2 yU3ӿ*Ofƚ?3Vȱ9&aeTxLޛ~:Y/<߼d4BoPO"/(3s%' ֮o.=ُ`ih$R?ظKKMڻg4߽㆟O;ttIO?* 5H74I43%TxNZ|a!1TOPNfV W9Xg~2ȐWO Ɂ%\~ejliJ괥)JR)JR)T'3#ٚIdGЛyvgT{q߷4T 3u;g;vg+<>''e"II.UN2]j #tsu=nixlZRӁG$?SWj*")0&9 +H˽I:\Ʋ2؂2 G&ӴicQEǜvP{޵mpQ22SG+6o ̮Ȟd/uJ U\GtH]OfRO8+%*'<kL`nR xR>Druqn*iU*WҨp<PF@}Պ0Nlmϐbֵun)Uʌ$ ?Vk'/T,-ϕg HW(y[ +YW>C'AkS#3": dՐΙCNkq$W=0YT~uMR橸3C~n>3km'8ɫ/b\]ٲ dT.M zk1$n 23W>^\kʊʥf` |:q݊sNiUV,BB88895qb|f-*m&U}j<ꤜ*d##WCk*;U><0;~x*ΊT皼x}= {NY[UU\j><6OT}I8)_V!H%Ho1@b/~Ff~7Q2Ʈ>쭺>#Q g+SXFHO\;.'_韰׵zJTgAބF`88 N66oBHc(#o~tw5CEu;X\vk=z}B9$̞82(% +ʭζ@"DR222>^b\VвeJ;p|nk%YZ)$*K>gu zkaF$qv`+bTu +VR q#֕B6jcP)Ln 0{[[io.o m*RNF+Gw3ibIrtcy`SWn("em۱b8bOjg%fMlL h^gww\>(#}yKܛY޹m8$A+U|B=KŌ(n 3|דWkۤ,2|Mvi\Zˈ6K +o1mIڠ_2N9튲=zM1#׮Ouݡf_cB{ĺh2&2eu$ 7cvрr@[B9azf&uMTg'QqxMC"do +;VuUSa*\,C]NضFvN9>Ubu>giU[%N BƯ:,0KV?O%FJeekVFIȻdAVx k1$q]4LEF\n-#nGu'UV!ܼc~kl^~4( M8 "7˃m/{5X]͸8X׺S^tXtZPJ3?f0yϾ=W9+,ڙ7&ip >uRgo=Iu}&1$cꭝzt]=亵ꢐ0d+nRX%YTrIUlZYmx8MS!HEճk иpXn]8S@ j9mlU9B1 |W*N]=*"$ i'Cz{G6(%|'*RܭF'O \O+Vĉmk%ɅȆn˸FUC2eW~2* ?a^UiJ괥)JR)JR)T5 f_&ecMpYsjb ]_Ro mR\ +$cZ j_F ~OF/Vcv`r%2*0}zj9 g5GS>\6?A?mjC\dMg\|z~ZZG6MqxT!&[[D)-0nG(֦5]JCK`8IUfSY)!^ur5K)5[ 0ʋAqvJ`nd Nx[ ijP6%Xc'8jɭ4V .T2}sU-`Jc}7mؖ&928-@ =lzS|sCnE$1Uvd֬b!XdNXcc?lBK$,)=弸yt_R +}xOp22.{ĽsВ} ?Ui7۱30vTT>YäG -e'S mk9d\dt E +Wh\*/01 gkkW{Mf~%#k7cڌ2kֳ(hs wp18֡5F~65thdXˀ6vyL׷4.4ql,0*G~9?ud#+фH<G:ְMp%с$,TOX!Jm2),FGIԶyaǭH\*j]6*2UZ:mƠѴ$3|" ȭO5k!h:Gi&u*bPGbF7KfD#({Sjb+`U!L`(=59sڛMyYgR 6 ܻG?eMNŭ<zכ[kbuURpF٭٬7j4+Hx PrC|Vc$ev$T͵nxq=oP\ib9eCFPg=xtW^UiJ괥)JR)JR)JRL43L5ZiJfJRao߻%id0 P>YH FA+IK;w.oy#SJ]]$DPB* 5hpOϊ}*@ OʨWҀ`UT +1TۓL`HmM\ ʆp=p1RxlJ@G׊MaLHV>;\gY*TP +qSVΔ;I hP+'p~][A]Lf4 @Zdѣ˹Hʜ6izhLaCzgT8㊦2j㕫~t5pi皡<<n)"ET{鑜3T'&#5\T]E.>arɶJl'!s+v=]sSMH]ňR@ 6@CxB\ҒR24~BT NI8R]He̽)Jn€2A⇮i6atzȣ#{ };ꩭ['`<+K'ɈB|9BAMm|5o}+E=ɄOH;Qpj{AԛXxfXgT?bt V KoIrrk[B h!N*K?W5wz#8#Ϋ֙4NbHpq:zP* 4Wp"PQhrBy˒{v:G8zMk>қ3 Vňp@2܏̊h2\O x. ]V!cPm#Vg5wU5 au}gVa[d#?[@*hsڙI\g\_/_͘Lz(`yN"Αw涘Mzg3Q~$2۶F + ]&=G/y}$jc +r83~UX(?XCu"9RF7)1ZU/!@p`A]o;l֝y@Ki%Ǽ[Uc<$r%8$Vw+*ɨjjZyGz^!ҧ)6J^Y?20ڬJ*E^?^Rm'_uF]xL;yk6SB?HzYKxhͬ{1eN9ĺ=r}[9\n UK) 5_]b(mmoQEvGqX1׹(Ys,+"? r>C V*1iT>]r;)#}Gmϧ:a` dD]A1F>M.=Ed،!]+Ga6Wi۪'4daNAm+1P((fec2dEG݉ݙm$Mkخץt&)HoQQܡfg2XT$Tg9mVPl$j2F",W=u-I + nBXZ ͦjK% =V$7u])]Ch':^#I[qslǠ#o5.U}5KJXq"gqTm-llCʩ'va<&4J H 1@ÏQYHT*w]:T˝ʉt6!aXm4[p]-',Nw8aGjؕUL"@;+ŏp{ZWᅝؙV66໸νfTf&H $ۖ1819cs{*ԞPe"<.9~%43I,nUAvd-|)c;KS844jzTs',0pw+ cUc]w>99<[ZjZlc>Og׽SH O}-܅En3΢oit]N'%Ŭ998VR*OP;I4d\+в*^jWv6LN ;m;N"?65vb32k'E0=V ѻu.r_5.txYe >u!ZմF_S ²ؤpw}YX7YFi&!d$6WVS&{M+ wGsTM:amh \fM;?mm$u !#@ZVʷYYRbb`sgˊp[iCjQ-6=@Hd fESڱjeU#xU y @@jycӖRxnd;K6Jp3yTn_鮥J-*7V1Z9 +NJ<VX4!9ul>g+A +["c +fW$G!U>󟲱n̹2U<@gv5<'Gl֋j'; f9Y<;8(20y*Zx{NOqĪvzۺ7d0 ^VBDU6-a$d/+58$5S@=8MmYirH(ϯu|- n~ӵ'\+` UJ0nmbe'M8֍ `J,N'vX )".gήmъ2y&1=+#iqgmOMCbl c>UFGc*yK&DrbⱮ + UEY9-w B! +ޕV}t{~X";/<Ð=yDRHHVfupK|\gyeʺ&Jq٦,XIbǹ$/BX`;Ic>εwdlwco׌qWϤGup3$jtYlG*A$(p%/llF*` wa?'b$@MJ&Tm9ԏ$UbOy +h@ն˥dV ; ԕi:dZ]m>m>| ΋ ԰L&scۜt[iP+ĩ8k ݬշy`jmxٚ\Œ [95eΜO%K,}ᜄ9Uƽ=BIlTwv1^l2c}AVVa{#M9F-!˟iK 4Yy)1 @Mdl)v8Y_J)d~̩+ygX%[l$,_kaKwsh0\m 'U}΍ Ԃfg7.s}"9b.H!ђ.Cԑv9Xm h;9KVb'' wM bi$0drc#[7ڕVTrX$kC+)eHC>v Q^5Km-2Ԓ2A#TrxH!C jVX$Y2e?h"S#1&Irc,sFxot̳w! ':Nc۱e㒎 ۥ@xC,_׭kt{U@Ar?b+Z-5 w8EURX@}UpyjjR\Ȟ~eR;RhvU3*UV@Y8QLqVΨ ,F}2k)P-TUwʰtё_im v5M΍awJuH3ɪ]qU P[ǭb{bbg] 1w=kw)>+٧j괥)JR)J&>uve|f? /ۛ-=Բ%tKR{g#T|O}xEZOگ;?,UF'j5>#t,p1Px9rEm-4ݻ֑vgn>iFB +ȎH$29iI)0H͌e;8}bRAnP'aZ>nwLs*_Z7òE878驥'(}Y?i5Mh4C^¦UqdԇNU~5^''5EA %PYֽ>1[?l8k\ZԊ,άS qۜTd:A4I'h{s[gWTG^"6 ȭ~u_GkԨuFSjQi bsE.hfT+ BݛMڡCΤme3.H#|z|#Pե`q#ʰi4Ƣ ق`$٩5-A;۷o|VH%3,#G#dVǼ|$dy+j 5{he=c [j5##F +FFˆ cc;.ѿ)bxG+F_}x&u5-e-qHgj3Uv2OnYemNsڶubeۨ 6foCWG}keeo"(ģmP;Yԑ쬮QAU88#Zk4ȑJZa ) ح;I9GP}A^'m4$3g85K]ۈ?eo]"mffFIskN[\Y50SGάob` 0eѳjuAcwg=޵t_g{pHk(qP.htPť  ~[{wiqslVrĢ vYtxM4 !< ͗c+l) P? '>Tu1z=He>n >$n;du 2`q6F36lY^Į@qdR1_w#UQ $sԁVޱ:H.||g \R|'>;tg\]gdVO<$~>*T `L/krdty? AϮkcAckT)淉FOm5Lʭ +&ryY yx棴[]Q XWW` I#䍲&XV-1ciw.T8,իG[yfRSx zUk1҈դ$389 d%m{u@&&( SZZ厧 !QxR%aT  T Hdu2n109?X?UdVx,62y[9|Sgۥ@ם9֕ԁ |7a +R3 {05Mve$ceHjq[r`*&McOjfuOGc %1H_ŻcqS.];uc#O%sn huI! H:g#=[3j)vGw>dTM3j5!!h!Xr +a%L8<pGhi~/MeϼAH%ƒ.@u 35Im)b2Ʈ6m sZU8h %mPr3p2AZ߬=D{I'. >ur <`@8jE{19,UnUMV6d+ψUP' !>#"YȠ 6b q~UFJ +BD`+0ϑVkIQ&#q)B8s ]/q" +#TF@@ÖQ98P{Wk"n$C/ՙzצkPUAq868;]c]FG2v ΥYMzv;ˮAd[#QwG%1r9=:22)YJDHӬ? R8Mn&QHjZvjmA[r6>V[S&,]Օ7.ALQVXgoo/)`Wk%OrXfjٚNE9"aE BvQe5e8]<RbC7:u3ݻDl`i堐i5FQȉ_gF +1ڣ呶nߖˀ={ TY ZHay=gӢHdnZb(m1s&hDy&sڣ>jř,pǺI?Yk6 WDs)/ֲF?z.Q{TEI!$ ǑuO[Kfh\O zTnTvE<}0Okϴ5(!7m;K-cVX|`3 p/$^sP ZR$IIFBCDkxau0 2N{ݲOiEtbmQݭ D$c#S:ץLwRA Cע{;KUyby +ɩWOFfB@F˽ki߃ gDe,9CrZKL p((Il׊% ouvB1ڭ}{ +,fUԘ,> +H)@ 洮tqK(&(61$ xнZ4Gb#mUwa[Z-Ι$a d%14ET8>u[&].nݖQ2>'qLY+pZs=+DPس7$SEVZ03=;ZVDEd,+03޷*=jUIT#ΜP۪~ӞS$U;V lR{NPd(괥)JR)JR)JR)JR)JRg߻k)ʃCS8h0|wQF+|Pߴk3=̱<%bUBy?bH1ުyEShW*5W [US'A%U򏟖*Bbd1PH r3Y3T,o'&a1e݂K G*PSJ0T;3bʥm)U5m(*PӚbibiڨ5]NԪNCJbC)bTU +*B3MfqU=: +4`>3B]M689{8+OY׬FUe(괥)JR)JR)JR)JR)JRjq?{_ҠFM+M!T]($|<;V +1f2d0>7fnf#˷k2|*8r{֍׺MJR_k6tb~$v 5'*-R#f ,3]ăiSy5Z{~v|d[w[a–$AOejk'ܬw.?wOj,\mN+3lu#r=j ^.i#=4gZ[ݲʃkQ=&nut +rq;WV-*;Pi G>iYS2>.!T?H ׬è #&B{[nQ>B߭%d,J̡<ɨJGd˳$ Ma 9IJ:ذN0@'O&B 'Q-Vj "evoFQ yV? ?Ϋ/M]~+:<8:jFV;H6Jۿyf. 8ݘ.07|[I{{[Elx-Ys皲m fn商ѝ0@hi/ds¤AQ}Ch6x/ +T(ey+4.I.d\wW^,hdwIjN88}OMScdF^Y{Ay44TIUc#3W i4,ҖnǺ0|_ii#$r;vo|Ac}`&22ܲls9} ,c._caA-3+]-ܱ oζTռU LrO]P(*sڙQW5i_en+R)JR)JR+OTcխR\c*v Abf?E]iV7l}4~}U>iV??޲zIʧuY^~Px6`ug~_U߉?MqϥģUPmsS/犯m3˟<hmq-Ā}ĚUr }Mę?l1ؗt ^\? 2nmqUQUC>^~?{TO˾Gj{*~(֧_?]jOw58=g*ċas%A?}U ~n__;Tx>~.%uQ'oqtuQ__Z +chUˏiMSHmms!?E\<%n?fWN_Rn]Te'. qIX +cxEU_Y~jk>\pe?2i5Lۡ}{TOwRP߫ꆫ bk ݎ1:Ux>{繹?E_i_U]T~)7uOKsuPTsU?ߛ׿)盯Gh2O\6F0e~(^~uw<}$~}TW_ŘYV +@̲1l{/~V,d5PxF{\Qn)[7uQ8?<]T╹]T=PJ7_U0ǵ]wmlc^Qgr~??\vo'k?-~C;o>_OX?>lh;U]qvⅰ]T?꿊6Ǵ]wa~(ۏCUrJqqJEZ. 2@CajC5ZU)fjՙW<2@I>3UW3x33,~C$٨3Q s⑪s'ouH A=]JxtI2D's.w2Mm Ǻf줌#{|-j_1i.o"][na5U)JP괥)JRAx'@-3! ̻؅\ǞqQNjAV8x%n!< HJ 4(ðeaW{'wo߿kzk,K2ʍ;;OŎZ&ڀ,8 Ofg$+o,B&plB}^ RW7XH63Ib@U +1ssi &8/W2Hq{Ӿ%:}ɱgXVBRA^rv7¡R O~x*6IJ^\GH:Ik,f2#NGɪjQnYLX%z*TG5Pԯn!Vב&J0/"; p|Ԛ%uQdbY=7yZv#Ywm&4 +mp0{\mN+RY_uJTOyԁ8nqn_hM7(E&T?MR{k( +ZDWvP22I>|X5{}Բ !Mǔ 0r}ʰG^otJ +f^7rA5EjZld9$g+"!;r2YZjStdVmD.V%y@{GES Xּ~#c A +Q65Ӆ<$ g,魁+ve*~ާk}&av7ݏ~>ÁW,b1=ռ)4d,lC ;V單$B%.cl=t8=MT6}<7=.pGy 9>@=l:֬`ٳ+}YU% tݍ,8x>5Fi=IbtإD,dmvCFXJ l\| sǘ?Ul_Ō{`!%^A+e5) =8#ʴf{1C ,EC,{uqk>ITP@'57dfOY +H`KT"B2Ojq1PHIWqqKWuڔok=::{9Ƣ(`X{>uUg{آ![dPBCH}9Yu_Yip_Vif%Z=I KةG55%:Oi$2:)!+GK.FԱ7Ѱi;wV.o-̧lXD>^_:]2k[m.}IIh˜;z +2r i;v zucR c'ϊ粎)!+ͺ8`NVI`{#EKo$kf2JH0x#961r#|ڲҔ괥)JRyg:ZV-ԃxqV=5% (W˸R] KMՒiaBd\8 =Do-OVkeVݸ*k5ן? +yi׸F'c}<>j7[insgui$fo2NX ifB$0j`撬$ FNHS^)JR)J`̌2$df֓;3Uԍ;\`H q5+xwÓW:H.2l,x\xuQ#XJp1RcVxJ1|-Ւ"vb*$ֳxV[Ҟ}* 9[v ʳ}t,^4uFN/ٯ@>uHѰ|emB ޑ4{Dn 4a!p8*k["ۉ0 -_-c1Z᷺仕; ,hc( XIn߆AqrQ܁,5'PM94S#b@pgLlk^l=̽I)͐x\8}fo.lX2.|"9Myh*`@vAXk>M]+-̢B2X"n9Qެ:EŽ̶ K(u%b=˃@ַ𼖶v1,dE&)\mdeᗃ>>k<72fяq8#+5>qgs:nȇhPr=~fSoqb$8*a?][I#ID; *&n'9'3xrym,-Ed$G1wzQng !ɬ7EwuQD\e +B;նZ%ƙl*Lȥ  VuŽ"T1(P]@n9"Lڍ2If +qwZpx~٬c bϷ+*{gȭВ[yD!}2V\tyXfQA]=sʪmy h ̓#2YcEY#C&!ʓ3Z5ֹx.kJ{ǿ*㵎y,т1=Ĩ줖`?EST^zG !$l*G<|h@-E\vwsܞ;+kTmBku`X  G8eeGfVfx=;zM?L;Q>Sv/…$|AEj#omvsB~[$pFPU=͍r+e(dR26X`8>K9Ʈ㇍J |!hFg-` +SUBT>=d=}śm3[ޕ&m#G6J%q52jgcTKvL[g 'Ӥf +r%E=9:2+IFϑ+j-6ahH%D%f 3tˋp&$If@2KIcV=?HcNs&UL秸2C=sވDjBIs> ]}' +`kusf³H9 ԓHdUj#_.5~2FK1%l1RJIdRv7IOIZA$Y-@p;Q$q#4Rdn n]X^%IG1ef`88#Bl $qy8P)@괥)JR72G&d!\I0tbgW Pm + Žx$:j\OfI#ܿC#:r=ϴ,ʥc@@@8n&<qiQjvi:!uiKP{YO=HP[O?]G26H[,OH$p V+LM2649gv<<`V)JR)JR)JR]A`cRAcgzR`O< eFx`wGYHVzR`: p2xj+FU !W)JR{'&Q}8,ߒ=Ml֖b9$i_b`3@9Ҕ[#lRpN8V&ukU:ڥ[$bIw$֌z픽,n n#kufGf@ Y#YTA?aұƀ\ŏ]djVT}*#RtFy3~(䟐ڍ5 r>L܍.tΊ 2Ѐ*,e1"÷֥+NIL+#gl\5Uj6hePѴpQprI>ƦU *ֻbx\ǸI-[ JR)XnR7CDfc5uuDZq[b\{͌I8y +uq@A1Mrn0*`˱^6Wѵm[h%fH1 +#ϓ^:`յ5Ws<h ;*zjE]Ck|>X0avڴy:Z K9gIwJ}ل8 y s( I3O,!TH ;$`yV/²*ʻ=+B_CnLO'O;/aGqH*)R#KdU* dTT&` !Ai]SiڗJ%цc'r}Ӝ9VDır3nݵPW=adHxrP˃xio v,Rr|.h s"eVz&'L|=U5\XC +n v1 r9㊳ij%:\ʾd~G,+ֆԑVHo!yN3pkVBn Z mUեX<2IF;@V]QԣK h2d.O$[XOFUIl>X5n]R4I$Fa> \öۥϮefKR)u #vr  BM[jSZ9 2* 9ҥ-oշISYUARHOq-Du71Y +{{q޷ugq"8I^=g0k<6< k@- +NLNp\G#EiK#oC+o{I\Iqc&ͦYOt>vdJ}~{X-n`T^HY`++l# { FN95̞;,b#DQ&g^&1{r2>uqr]ZZf&쉳8ǵ_7ْ7[Vt^T?W3uqoQͫO aN3[kGxG0t6XBY=[^ޖPR9w$H9H&kUDx$D dXC$[:'C A`Ӄ hW&T2F0FpsC>un$،˵Y-8vm@,6҂7HpPFݧ֔~(ͯŪDzrtٓ '}]h$IUr6VR5#xm.f+t*#Q ^{  )IU|dFۼ 8'Uw㠢[IY6v܌pj˟mzQIsn%S;T\BT`TÆ p2}uP%KHep 1VgTkjލb+qQk3I2w uV(괥)JR B .p$yzI`kl[7H݄nc_7cް^ʻߓS8?(C&$yT8'jVw8H2+o5\ҡ=qPa4bmkݹaܱPhңH=FݐG(p$;sޯ-'u 1D8cMd!/:r׺Ν-E,r,N!06\#p1ڶo.u)VEٔ.v;v9ʇtۉm/ L)Aw^wVA\Bw8h- t0A\rEL,IQ Ǒv-}N>_:>q]vG$/2!dG]#Q('py '<AVN(8I!9b2#ЂAZSbKc+"3HP@(RxIV~,u+yk6Q0'wT֓ ֐(P;6|g[>e=dt!Kgn{Tf:wB*X/$p]}^\i*īk&ر&6c'F^d VI9o ,FqzU3n N1q嚍Fc,eQJܝzusX"Nߪ!Uv={~UmTY:j/w D#F{g#fЯ5[otꎱۄL$ !21ڷmf,)wQǼmQ<-\hl-p C1l1ޭA0rnS GVp6"yI+dX7BEIۓev{sX&v0x$ T(@vwrwlWRH5'G[r)?0բ%V֟5r(P2I`(:isco#!8vn%Ff3]G$wClA#+vdf'!QMԗ<=$YKd.N\gs|k}DapJq9{-È׫WqPB<=-hkv7v-$HYb@uZ^kh,H&]l +09as-1Df`~r[ZQhWɤKS/];3ʳ{ouWڬϵ[iܬO W^Wov'f9Cm;b4@Hm<$N+5kI`pAk4 +k5E%ŬDgFAm' 5eCn1C2:+us鍤tOƬr# y!~==\MH#J˪Up1I=S_]=k5sC޵"}4CofX]΋q9Iǟ=.^hKk#Y\eq20;)4xgIPh*{r9[GS*6R6JG`HsVMkstHc>쌡֪1wxjcK Vamzo-pp`uT nA:i,dq[t &.vE@'jҥR%lQf@;`~_W6\iײOo(ʭgS*v +iKs}* [e8Q2I%I9vY4+bo%;u uaw$=8*_qn M!{]>Z:ra\6ʣkev!' +FqַlQ+:[$!V +>y{ow MKыeʬⶤ&kI:A ڣ$~ @xF}&1Sp&|Oiq[1ބYԌA涠,a%{IOѡ73BuƩo6 !.G8|p>]]Oyo{]ov";;TygQ$C@=G#FZVuݩ܉[96¸_'X5!4֝G+,ٕ} +Oi(+g3k #I],4~oRw##˃ֶ]ClETdQMmk1A@5&)^Mвq8ԟ *6|}_||@?ydydr. {,~'+< # %# ͯXȗVz@gYYbWK E$w&C(XC''*k,si<5]Q]/#E|F?,;8/n\ncߨ[٦HJ9bhʄ.׌bӣpғ0p}~JTnye3It~8`C('$rY,ėg q `Ub5fn [vk.lTYAsE i_+%m9$]סr[KlRB**0FOqi8 =a 2 bA v5my:V +nAټ88 +;V#eK؄rEL6+Ƽ9#شf##Y9wF0'=Gzv}٤Qf!ě=Vv9=lj`nJ0:6P7bps*;MX)9R2'+g +˥]$Z-Sr` v j>V1Y u$UP~`r{d-h3+Lc#VR֦O&L(:Ai9VgJl8աwMDgӐq器Y]NC( ȨKY{ kUn8QvӞ+W[C?rp|`^HhrܢK-Ȑ$DU kWKnsz}Cm?1ŭ;qcv>?UH/cb^o{zp@#lf$w$,dH0,j Eق_}HL u5ė72kBev}1P;gP X`3}j$G`J\*L95-(\‘<^EB<[ 9auCk$vРyCBT*spGITNd:Lj, 'ŌˑU5{]. !XC< ?̀THk$yaH=p8@wpAX_{!1"]I-Wq j{&QNY78$V4׳إBDQ8#x>x}v{2:Vt~w`arG٫WQ7`l^k `HZD}W +@mdc#k^o{=@KY4a@b V,,1.0#"3'# ՏNxEN\(B7`ZFnIm"kZ~@ѧ]Hr3겕Iݓ4ܠFXRUā՜!;\mb7q9;ۉ),*2Ȓu#l6j o1 q^rX4y!1\o0RBO$=kquYh +%" d!pp6*bM8u82'۠.AOn϶ʄGHثӜnn890El|r=k=D_km2˹oHeR8wXe4^ݢSi#&]p1p}'[A?ElTl[HVBA! +0s{ ]bR!HVHd,`2XոXM:v*Ux6x8=IHHov9'zf + 'y.?މw|-ވe$U0K13RND[Ei[N#s55} 4M ^;V +~uU' dW0*>Dư^5Ď3#aW;GT~e@:`w8n$I)dRT;uZڔx^ +v>~Z>c[Gs 3)ڟi'Rb.dw%q5ԺD[H!ǐ`nS#L1+#=ݫ=k^X2 (1 + +2()jԱ?*)JP괥)J:xf" AgBE*'Ě:M\LUn">eO9sxS1w )F*<16Lsc[J/?:u5ȇlH6+|cR2OCHWqc 1O̚)JR)V7?,gDw4OPl 3N3{qliS--v ?+68e6haHVugeVFP +Wrgt (i#E 1oX+ۜm%FRWZ̖Vny +p~o]bQ.IVh Č' +ݟKKa+oFbU>ZU ycp h㷞'`dd {|`lomTPnfA $Z]M}3F*#mp>gXrGjr +3UӴaw0 0(V]n8';˵_2M+iNԃ+/RB}AQ|t}> aInG>#) O' &}UxSN}qqQz̓ur\)Lfgiuo_\4P!c 9Ys?*Jdݜ|񊓺WX>+yQQr o0ySMhp#ɑ+Pw_kXh-"9Gf1EmvsQ!@''0>ln->xSKpsdvR!T56D}>PGMjRin&g&U]# S]c6Xg}}wFI_ɤtIqq4A d2rqwn*F[SІu"92VN6$ +7\:F{?fT 2XaǰsYt+SMel %Gǘ 7-(%Ē,R6x'9TB[h7Bh$ܨ&Ь2l]a>i`n-}$IX(`wzմIe=tH;o#aFN{]k֗,jB0p;P};`|-:6K HH ~`npuvwUFn}$r+rp>ŕkP^$jbKY"c Z5OG#Fwd1jڅƝ0-n 4 @O8'ҷn.@XU9X~h7sX[[=UHYp᜴x81s.}Hx23n;8<+}E܍F"n]ܡJ9ϕ[&hʴ[ՃFJA9n*}ب$ ;g^cE=@%ķ8^P,Xg#UPLa_i:,/[:U_u>HŚI$ dy$VK}&om7$je@*;; \c.A8pG8WxVk[##RB qt,Q>yM"MB9@w +I\$ mKN rf?Gi(ՂDG8= &ك+DF'~mÏsU7ZWieaqa#ÜײAY!"gy0x>b:&O`< |#@sQ߆ k24l /[dkx~m@A d3J㼃RryxLkwg<٩ӿҠ +<#3 =|c+[7d c|7@sU)J괥)^oղGga4 ~NOYۥZDJz{T!w9>U<5Vk9öȳ +0~YJ[Zf8cX~e*²Ҕ)ZwE1srGϡx*(n3ǧ})JR)JR)JR`K7  }}i>x/+R2d{=R +Nu 95}iд]GwvBc$UUV#}c 8k^ijDcnS 8>UB cQ,P*RF`]VR-)+L @r`[M8>ZR+!b)$Br{zR)J괥)TU)JR*+DMObZ,Qg R9uy<%wcqབྷ,DK'QsmY$1SP]=L3G'9oZ/sdsւ@r2cVݖav[BIqo]Lj-kc 23wn;z޷,Vhv#dC))إjj0A GpFkԋW1;eW3D-ӭ #7{ uRepwN'w: &-7Ź3ɭBաMRC1fHY$ qnBA(0$.E7O8:q.ZMxǝHYZV I$:7,F[ q[FfVdތH=ՏZ8,v@N6H<Ԁ5GLe7+3y98멋=Vu DPHx}ݴnu\*}Ω'$.bѰ=>OʩH-Z1FG梕b֥k]j0H6Kbs`y9Xd"@@3n{UkI +Mʑn±qʤ:^"G1i hdݷ9֠EwH,k"x:ݧwPv>x;szu//-إ}T#4qpx8lYNЦQd :ͭLތ=W%[hCc3$$ȌhhNSՐYIt!sSFMDN$7BIc>@.>ܚGirdfL2L`drTr,ʮ! 5u*6ϵs!0FeiL9o㸭;oм,C2,[qϝQGj$YH[c!$rY[+IvםZuUylRqcvF1޲jq^;$8[cVWohdHyS^KFKٯng[WH yѯ4Vӫ1cpTA\ַiD=P˒8殏[ծcRYNҥHxǭbODU1L&^ :r7*Oq֦~z,Mva p~kfUNfXcHXxgx#3G"miA8=hUc:$e7`QtՋm +ā>^u1JR괥)JR)JR%oܣZR+={hyhԞ{FkTxb#h;*%~Tm/QAq41L:6 GÆZ-PnBYWehp#8]I$(0O$oH1Wν})JR)JӬHI$ie <8y fU.3?ZI`$ (݃dc[UtynJJ1fY10URrWC #E263.|5^N/h%'ICFF!AnR5r\ sUlCίӵ)nnmU+% +9ԑ;=3_+5znS=4_>\RdW"h5ݶpĀ]A#*w7F.P;;g& y];VRԧJ6LCa<[ֵXV+hdHw.Lnkr#$L6cN/*eÖG lNFsڧnjwѸ |?M(lsõ@REpC󟳽MDϫr"9DKUN8D}zwd}l:a#'/+r>`"~K;\NN>\V6 %[dh,7M],9y 0@\;}qڝvk !xFO8!Q[ بjVa[^ٓ"UgYy{-͵UTxG5ic7!EicVp+IRqOKyO(aWO +H57^,ҳ# EE`Smx;yi|{UBgY}wh>21^%U5PϞ*G)6I1iYERr{U k]:+ix rdr@##x9'g$gfhpTcũHn5}&DB%^`& #Vsu}^VP[cq`ϧ*4넴ҤxOdN2H]p#8Vk͌RJekuyd8)e$능xu5tk1Q.rU@ +|[$o5Ī6Mѳ 0sy o#S"42&U!*)g{}OXey ͒ 21c>da{~ٿ$ۻ|ywDԈ8 8$ "R.`26D@{Dnk]:+GXx dsjw~pIf"\_i%;2A880̌YzHPۓsǝEىaD`o?S/Ï?ٯedW\# *R괥)JR)JRr~KR)JR@=j)Z׺$X԰Pp==~uX8r*R)JR+ͤw{:;$Y0XKR$  >uQ}ΣsC:L0IʃJr[>"/b6ûv7gw:>$2^$3#ѡ'|sR_dw [7vi ;cL? :P O?럾if=>`}Oò;S;' OwVIbtm.C4PUf;s[Y?70?ZWTN1+e!'w֙}Gґet`] B߈/U Ds\wyh$lfW8PmRMjAZ\N9 8$ d#T3ehM97vk%ޥocicMcT>qorDS]|0t|0WENZ_|"ӆ+9;y5^tdBVIU'vm=Z4Nƛ=Ր@z 57yA`p ۬:oac%:"ʷ`< +J#ԭ[(H&rY3.훉E$&l+0HQM. dy?Vx'.mm(IQ\BY-Ck5j^_{$ɷ=iy1nc##v`A y.$KYt6 y6Ll~eF|@'ʵmu[[+ .3gUجDn#p,9E2/Onz1PILS%Q01JFzڼv:tR$Fdf7$Rvm_JRdAp~.$eV,CU~y5%JR욞p\z䳳t#,ԃJou$%i#HH@q\zVԺ3dYRrk5Wk'Vv92>k-)JTW%#'eH>`TrQ7RRqC+& +qsg:^\ِP1mͷw׷_y2o]Ud@$!cz+=BKA"rA* VCs#8fR+xoF,Fwq8#޻crvjHLo nTUYbR0v*XFN0jSO%{I,,wbfeӒ2NzTcqZ֚ܲ, Dr1s[[g0J"!Ig*$SOuhs+Qm0pq{^]-9"OuT3l? 횏!a: +߾}ŹK T0,q:JRs(%:2oms;Wg?jgڌO j6ߟf?YRWw%ՆHؙԇ+A!K1l:&BZiqm컷eGWѯ⼆5 o #ʰx"ODk-QZGIPb@fg5+ju˂v;g +8NeuŜGuoī.rrX|*nrjzKT7EA2l\Y4Q[X۬ѐY\#*(;8y}~aynm1Lw^Fe['f{R[&pc\|Z"k-zd#%׷:K.Mbȶ>1]*cEe|ڭY:c$j>vG[E=8<j7fDp#s-ϕO%/;T#pJM 2e&V1;\ڣ5 87gCz=8a"K= +@ =O+[|FݚeX,2BPw`~=mEX۝,KpqRuųxP@ )s }ޜf-_HbA-eqBאa ?W=_P^Қ9#cӼ]w2|z^> uBK4H 廲Oêv(m-7muB+B{t +/$88*-nh)d7*@}ZmG}\{}|xɣ.b.IHR~l:K5xZ\b#4 dm;I#Y&SomZlKpdT\~WkGKĚhX7o@?cʷuH}ٶ+r;={W Q.-Y=mWaTAxcMB9:9a!?DBL{*PgR nX;pz? +,A#Vm.m +'ɍ-pXayxTMvĜTgN8ڥw$ ʘ<`V>hCH$ؼ] +ܚ;s8?WI)ی=埕kiw;&o Fܤ t6nsgUXcs18@zVѫӅE9ϯU1!}:~;թo`E}qY*`Bw|qK8Ux,;6;6b{k/L&2y>Y?3QVv`[,Iv 'sQݷq8k<ЙB|E`tѤۥ* )}P;VY1pPN8㌜,"wvyy <J-nQ=n#r*/OM.;t$rI,~I.,\s 4y<:GeW9<Oֵ ."MЇ%P+cކ>48-N0=&kaH=gF1횲K7wfueU *$r oҴyW ?wnR@aT鯠QX~t;㚴[Ʈ]>\鯠oNuϐGI+<3ƈ/JH mdIY4*=&`F-;;7wwb*} cA>XUF0E.@Ojf7!!Ơ]c>dV)T=3N%&B+v,āX8[Z0<,J02FzwgnJy"p'iشRq)IHڨ؃>$ɭRcTNN2}kRɴ1uhrRy +8;6M ݚA\zR괥)JR)JRv5QZR)JR*Ҁx檪'?mV*kKM0n111o3k|2+0aBvpGp7FX0"rDnG|08{22Fwq߽kz:_CFf#PX <|3Lnm2L*~/ +2`0=N{Q.#U!CAdg$ +O`X|N 2~UY`H@ QXFT|V+;OjnK<}'rbM +s9 W1V ?b $/9#ڢtwgnb2B6(=J{qss<ac;Bӎ݌85;e $w/:ޫQr]ʩ*>)[ F}q|F}D܊zP{3>ʌAG"C^SZC-˸  e0wgKG*ʡUqHG짙GؕŻ78#'Kzvu UER +}O5XpLlAC`#:uX\4q,;+~9Ԭ7ՖG +H @j^9Q`j[Axwի{0T(&XԄ'i9)TNjUhh2ljfHD+p q-QFy\Ήw[{ҪL[+Gvz5 +J#)ݜ`wǭZ.2+n$%,"q dTR@dp[w 6V_R}CqznX6>XV$R(sPچC99: g9=;XStrJyd쭱"1wls)!X `IDD=B$UpKO`Hvޭǵrs>X[]N-N߭jţܙV)JR)JR)T#9R꺱y+iF^G sM[ UxH.-գll w'#k(^{cdxn`6\nǗ`s嚝[:Z*28W@m i}$2jӺv;Ji\v^"{^y; +jE"Kd-͕{O7Z^,\V_ kcbg*]8TXqO8zWbPT E J9_ +H[3`Hř6%q,NYDI$I) 4m{ (_xcQC˰c$ᬊ2(jkX_ӷƌZ9U$GsqQnZkb&KE(G.9xԎc'F&WY.rx3X|3[]J#I|pHaaihUO8^I lnD\$73eq[-:}Mqo!HF|O*+L4+s%c;x H+[yLil);;'v9"mOԉ Bc6QO~f,=Q< Nμ"D\m+gW˽V2U\-eoP I8^S@Dl(wpJ%ITyyp88&u%ȷr3PbnɷF9}LSP[d"@8 wHFBm6`Xx}=48&R +b>dօ^2=&dRU2*BD_ iYUU$x񓏬V ^ځ#·X9 StͼWL?C@µ'lT1처I/VX2NFJ;g.Ղe)f^寵e*cF1F#'y +-OT*®d0 @OQx0,\ + cЎ=!p#HQNz6zybuTI`,!W0C0OΡ-ӭ1.V䷸ +L 5IIWdz,vu%%M]DkVn[.Q@b +epGnVP{TQ2cS@ۤg$?ԆIWWNŹ>U#[`Dq3e*ʥ+h3k[vZ:Z\52fWd6Abq* +ˢ{v}g$uVuf`6LbP\z3^"ug1bzkhHbQUGs򬴥)@괥)JR)JRjRHdc'֮)JR)JR)JUF$Xd+[ULЋamDjc8|yZ};x5p'y#YTAFA +j(? +߿jtX10l >\uD`0=`{UIh&&HǸ@-Q93"( u1j*9kz=AB +7**ēA;3"i+Ra]" +cb2.xVnUm[G2E +#~cPdcϵ`ml 0 Aj[g&F#ӏ*mfš +JR@83ZH]؂?{vt`9n;ry5yӭA)21E,1sЅ#}Y.-]8`yRH1\}U/Vi1ğF ^5(@aZ_BoFnckq<2-OtFVFo hmŽxVh'KD9WUe>Y)J:[~.fT\w#*F+Rx[r:SȬԥGk`I|0H9#=F^IoIXyUEv EoUiJ@JϗtGpđG"^>DV)T5jn]af &'LsYisg͊>k~hꗒi j%+7ҞHoEVj;ŚIB^U[rP0$ o1Zp #!cSG,p>Uڃ*`# #3ZmK ȾA׾>G[yj}mmRg颦p mFij1UFD"G5 ^gNq¶}E~g5P2 Nuk-ر`\ץs|<ו{-ڤ6i{t 2c #cM[OgsUYdl8;}+v-3$TOde1j5א q+\Aq׌_{[I90?|Ϋ_j3"ĐFԗnqmZ^uo$h!IY ]Ãǜs;VoK8&{P3:sThΛY L1M['TM翷/#% p]`2Rүoy QJ080~y JK-iAԕYZVVX{,jO0yǦ%4k+M h}DC[J8<5vs,Ztmg3< W ņOj1A Fq*B3a^`M(wxg¼ն[6@YJ &p2CA#vAlg&QoJ0rZn٨m*]V;XCG5'm& +lwJg8?HQwi4 +](XݏMJA}̱H=XLpGZz8Z>fVN}X4;HY/C nޗ|ygӦ8"#ζ/ap-UiDך@61aD +}=>]G=/_,WiB6C?MΛ@2UYP +}vck%+U8u;0z葑UY,p חmom8#S'"[ +Ǫ0z?obuFhoC>v*L!wR::M"$UJE|kIϥfamo +pbG$>"]" 4ͿtNFv$1^Ř($k}uyDJ=ʶI0 + qS3%t=j IeI[^( +H:8S; ctyܻ]T [۳Z]Dd$6{wՊ[o9 }b3Ylewxݒ3뜢ⴴ̍SRp9v1f֮=zCrCnݶ~>xo˜.>&F\d3mUYEH]eotn֧4Ҵɶ]nٓ1dUѭ0*p \ j9kB]K6(d~=Y +!fU)D0)³`[o$g}0!Y[<'Hu}D˴vq9>5-$$Uڵajڌ:ŲUA8RrH:/8"DBf%ΊGB\;RVnWNV(6!qϽ:Rv]w^qI5ob2Ya{s7Z'?Xܫj[{LII EiixMKQU<r8<7koR^>{}Cmoڨlb=:N!''d{}Uhvx0- oUެGP>^1O)JP괥)JR)JRP65KFm: @O<)JR)JR)JReYJ|3e*MxMJ*V9[heYJ`Övwi;%h=cy֧I{ |QW,#w…$Vޯ%Pb(wan'cu)Z߃u^_[3o՚oe5Xaw IaZz& !Y-2 Z–MH ʜTIq 2BQv|ΰ Yx7I&" IbGcs[/jl0rrwn'I3Y⽈2S9zyv6:TV Υ`4C1$< +ՑIyj"c9 vd{qWhzimi] X~Y~Tqi| 9 #ρ~XU?bq}FTկm`n\n6TRH] Ha۠znݚ.D 雰PVL]QX) ' Vcpo'P;Rx2q6dܤ⭛G\,!.uwGI؜HWi]EڌF8a +cJB5+q'ї>l템BDq{bٯЄ ? 諐'ҥ)ZX,ܲ$jϺ3p9aGN;v^X-mxJҩҩivєl;g#~5kXW0*㩘FI*^"OT}J0+ت5㹡XVf>WPi.-d# q>4%ӭCj?]lҕsrĺ1Tm ac#o"Uvv~*%^!#Icnq<מW 1x0OeD>u|-*: +#. A>`+xbf:v່ Ƕ}j"Ֆ'('3S&Qw,I8X+fԶ/,Q k zUfč+4!9#Y;JU],hf,99^Ż"{嘃͈/ڥɤ9$xZ:=%Q.$0bjF=~ P=ňfHL:Gpvtjh CiA6sr VpRF=<}X5/İ^,$+# NT )LV$"c 8"Uj3\K j~fǺ~6'T(E +;Uկ{cJeܻ{e2Jer6$ew}W 8V[Gw,1 9;wn $ϕY/&fUC&UJ{ȸ<9N+5ݖʹ18gg`3%<&i-wgF.GٜTY+ћ2N`Ԇ)j]i]H" +vq؊{Ym YI'q-{O$v*(괥)JR)JR]N<*+3@&G/Lؐő>n\v;IޫJR)JR)JRd',>ʊuJ[ۿMP/\mGyU4bS'Xż9W~_j6rp~U3JRJ+Vx +p`ujkgTwgmF#ehʆ3'8RtSZUMkIz 60aܠn x$2ƎPT*HdVJ**&H s\+5SZU1UPm7vOd2˻``=N*l=' +$8ʼnʎsxR%aFv*~2k;Sso/TE# qʝc#V)TQnX13( of .{ԥ)JK7hɌB pFGiW#4}2KoRL ZR*ZR)J>,(xR-yKD*@TŢ5RR(bkPG.14lg8f)J괥)JR)JRF{mPr#`;\ރ11#YλM\[]^񜬈<#5)JR)JR)^OG՚ G[åICǯ$. +Xxʯaͦ"YNzm<ȝ.B%HS +;`m!`w[HbRs +>r1<|}^mcUvEi`v;Uly +%#H7#&H1R'Cyo<UijEKg&%AAgmu59vTmq tcUݵ9 M:Iu%GHdQqm,v|lOzۧ'eKEbpsqYf[٢obʦ_nw{'YtJ'Ԙ}+eXsֵ4yIGaJ~Akn4x5wbOdvea&̫dp|%ϴJ%Fb$7P(ncf5yK6Ʌw{H[A!B39 RYYCXJ!2`9FR35%{y7 ~0#ڵ$9SuϹwu`e0+zp2kǝRh)$}q #c Y_iLLΊ12ǭzpNA<C<,6B9\n' ;X}fgMO +27p~.{g+= ɻ*۲0;V.џa;u _QUjma$3`3ߵi8Nծf6t ̄n9ǭo5څ卛9EPf*QB28ڭѡk {=ň^2yMJkd[$;ByT?K5ntyX緒;dEr=U:6P GoqIW$;Iyqզ KURIò;צ+xg/ K`n<;^X˘VwrشhF]O`+[L9b[%-Iַ6UHr?Gl +/JDA##FZ\toR1,X2v*gjrF 9J.:QKq )\ 5eXM4+{k,F(QrG%֙ZI,:Fɓhe~G>\ZEЊyJ E! \19+۵kWϢ̳ȭ,&q$DGn۷Huiz4odK#oh<mB- ฐL3 6n6|*jX5RI"іirA /Pnb5YXK`27``HTsJh5}:4JAӍbS9t:Ŝ%DpYe8QO>ʜ>G$/+4ˬaYKǟ*[PMOXGWјu'$F>š]Iteu9B)AAN9vsWhH\)9=slIf&,G(hكE^W|]9$Y)uf:Ucʌ#77=ԻLBr-̱00ZiJR)JR)\s^47cW=$b_ +ۥ)J괥)JR)JR Ozs!T)JR)JR)JRcçM4I.陙HYK+m뉮#yY$BrTp;Uz V{dEq$˰Ieb89Cךf[\711xY^Bήdf]rcq>UMdH!Rsj?*Ůmon#WT9ہң4]2I5q(H22;`3z221Q#b)"LI2Ǫۺ3>Ui+I$ =ipb>H7Sр# ; +apK@gvmN] 0ZVy@[:ĶObH<TIVrӴʪI)%T(I޳AG3;P۶'n?oAkTi:q]"-jsO V97|/XXۜ1͢A5'pku"%V6tq튤ZKs.]Ċ̄co +xqǕYwHQd# 8_[wk-Jnф> IYuv݇ncjVKFyD231_jfvd܁gʶntT1T#%FR ڮEKi-JoICwrfb11Zw#3Z"d@FҾ 'HslXPm8>U&Wp ?ⵯmQL 2T9Y+5LJg jcma=9>T E +իLeLCALqNs\ [;sqðvbITLx ŀ?00+cQb˟vDu XPk_\ .m +Y;;+rpyKex:*IH!{þbɠ,P!yAr0F`8 Z 67rJd(ߴ01ijqf9V $>]rL7P?:(6I%bI2H,N4՚4xQ9pzڍmf.v}ݽd+:@~>+Icr,Y "sgX/oaӡ{$qfcZ:g-uY*F +9Em!G};QKQ?uӛD, 2{-T)JRc;XYX**f'ܓZ6!C lC>ԕ+WSa-HY8* p"(`}A}+NT[c HJ 19nUc$bIƲ Ʋ)d!Y`ݹ+z)JR;8i[jF{Td=j\kLsI*gsYGpeiT#ܥ+WR#乔1HԳm]8Vky$>EaVJRj|M5X^pUKʝ mnǞ*KPK%W(-K<8xK[C$;  q8ӋSkmx+*9ʡ!A'+^;[v9dTJ{31fA2f)J괥)JR)JRwu/鈿uvMKJӯG'vPHl*R4bic; b=Z1sO /8`, ly[t%d@T:6;' 23^{Iׇ&TQEҐ [0—O @ 0d2I_G{75lZ:K)Vp,FG'lj:ŷl-<Qvv~$+&]n0ܼ1ϻȓD@! Ȍ +dH sߊɩ{; H$\\ۇc^{^'P\a" ${8< +u;VJJ.-xá9V ATom.Fw8^=Z^f a;cYKvvcζj-j}&muj x&xuŷey60O',$W/ShnOqQ9B?_hEh$XGB۸܎qWOew ZKd.K&U`F;VjM^4&Y @E#gִγ:YF-w{gʲK}* ?qwMUrlsl ^K`. ]bw+*F0AZ܍GWyC_ne1ι۰ +NJ6{☧[Ɠ@"[gpIǭBk&T dPpO ^J tȲb>1'n׋%l?M=qbQ-zF w+zOd.V9#rd&N@#÷Vjqèqˍnܚk}KP*A)ٰFI @ާlķNgۈ+ۇznƲjX@e_lTe1XʨlS yXINlT`w` g5xH%I"i~romu"6>՚k-zrq׎ \E[;FG.Z@T(ǮOs׼V5K$pH$gY J=@]iY!N}T_ru[n*;28zW7ekpڦ@$P0y#8EcŎцUv6NZ8AfVFT|>ut2dGRs Y@#Vڥ6Z\,"nUwr3[^Z^.hhٞ8eTS $eIϮ8ۨ$}m&NnHcĺܱC"/;֐ qskszPijvӑ݃;sĢ_w:l-!R{|*Җ);_) +zu[Jp#J'>Uuֺn'V8{&2K( xϥzYI!R[i23(괥)JR)JRw5/q֕9UՒ3VǪYR&$"~ gT݂N$׎) Kh#+9XHϏW)d鹈PV=|sk7R2J,Fŕ% ú5Jbխb aO m @GoD-m[yEA31qnuS=662b>~x#L] Q:={iK[TV!P|cq Mg5ZR2wsr]rXdB3 VRsq뻹H,Dvv`:Դފ?cV,l7am*ːO85hiPO;M+.%,UAd +NO{Fxpcڜnj g _'wvO)ٶ!;XPWGsCxmd-HT.sNrkBSiӴ$hcerwg7/mg\Q0OJ6G1f`p>]J ܭ͵ȍ.͹&E1q0#9s{dU = HKg>*_h\:HWLr=7<3)S=~oyty3Һn,\PaU5 ]jV6$Wr oc&D{݁vϞ3QLJ][_C ؾ+XaA"ASRXhHФkc,s@*s\]K2?KuX`6Ǩw~ i R) e 8eռ?sjW BUg-mlqZwQkj4e^LF*wo<3)vAY Ӧ@%-(rݭaHF]Y?]hJ[%XT*s""m;I&YV% +!ClxR5'b{KF*sxqgӒI u)'W]emN}[zq[xHkaHlKr8?dBxfK6m_նֶ>˿& {s~B̖6k,cdm ۻ5TϪMnw;ҤeFF  E@/FTm>ÝYc!$Vn#!Jwg*nժ}J,퐭4#agOm.w )`mbqԞflmb NF]rjOOU\6S3>b5>Bibڱ ~C)8''ҬM[in D۶VE&c1AHuql3JFv,H?WiD,4r$ہ3݈95&)Y-Lp,+0+xq_h]HTU۱UTpO'[eϱ50LF`!LxccdB}!!cr{DҮk'<+,eFpqϝKƥTrp2}~uu)JP괥)JR)JRv/ԡ8|4ږ/"+3,V*NCgNٖ4c:Swk55(mh-n@rc{ =ò2^u7:`UFm*p )![] :ֵn0$LȞƶj<1%͜wx2>}h's j3M.'NS` VoX$F<ھcW9#e̺!nLϽr<S,CN"l:uYsU`{# iHB@frtY]dg5jȬH;,K(@Ԫ+WdVn2x8cz$Rqg;3! V f]%,I=ZzՎ;{`2B8c\ + ĭ r: +98REeH#UY]7 23\zUL괥*uv̌88]JV l<*)`2}k6sU)JUV)ZzcRAv + =OlR)TV)JR*lj$ T )JR)JR)@괥)JR)JRȭw$K%=gHoGO61,~W.sRh ʬӮ(D6Wr\<\jlSVbǙ_#0aⶼE,pXJ'@ds#Y&'8DFJR#9=nw7V(WhU)&# {*v,.gem{ty,NbOrGrO#j^ȶKj#4l$Tys<e@!nm\&\k +w-٭?6ŭM:XeȈB!` ٰԮ/Ȏ]શW*>^OWPG` J6`fF,7VD<1fR {]\En FBr,)AaS֍3FuU~r/~0HʢXubku--& w;A rKأ]֒9A<jkZ܉Iiug7"hlY l5[$M{H 6<}ĖkmYnњ7 +, + >3T7KyUrH'bp4Ks~}VM>H0 + |]||cA#1(VH AM̅N9sAlзJ O=c ,hu%RVBv ?#Rt)JR)JR)JR)JR)JP괥)JR)JR B"ԵB?5-3JRԾZ\ +f괥)JR)VL̈sH\'d)P:Λ>>YLw9\sRַ\HVICϖjsO{15W]m ck\h7pæ"Fܫ9VG@9 Tޝ [\>0K0Ip3ǕGZ}j;q0l@St yW^4 +RDGFc A ۸:}]M<gTi8ڥ/.; D۬ePo;q^soʨY6r6gzú] 6eSwܧr6sz ]{Q8]ϧLBn91ʯ7g'-Ŷw9:S8ectjWR<a[0G6Ӵsytm:W1 !aSXRB0Dܮ ^w^U ֬:0 vB{߳7e^l,IL q[Uƅuy5=hWUd2S{} . т"׊ҰڢԪHcu9aU@gʵOmY2scY^i+d^s"l嚍yo"c{D⍅- eہ@Xgҵmb&pG޴n{kӆ>zBَuNo-gdLHb% vrI$Z(ӧլZ$#1X/m/nu+ +e:veP1cן*խʹM,OifBQIkEf%Eq4.G'8F|5_ 'XC {N$ #`*N{NsV)JR)JR)JR)JR)JR괥)JR)JR,5KR)ZZ?԰5;UiJR)JRLRT)bZRbXmc/{ygR+v$IԪbV.e4#BbK` H,@oDX*UR\Cx%EqFFpGb=V&N%#g|g8|[JUjZRFk6H (`qYRM&iR0Aq=mҔSJRLSZU*)JR)JR)JR)JR)JP괥)JRJ5 +>AUٜւxDslAetieTŽWhB!SYiJTVAT)JR{ Pw1VC$19&4$g)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JU GjU$,8csQ8:`~nBJ>Ӽ5i|6é)|IdXpFEB\xVݧy_ț >Κ^;ԐAp~0M6=GΧiJҿxpiJR2@0UPK1 rI9%}^1 :qCa\TB[yDppA/aהּ)JR)JR)JR)JR)JR)JR)JR)JUV)JR)JR)JR)JR)JR)JR괥)Jqum,Ψ2*I?V~:ԈC7FLzRz>k?,|~ny*)Zzm۽FA#Ȋn|7"OܝݓG7o ݏ5QZOsRR+[P`{2I>@T :uNJgԢ1[Ryb9KNϚBڠo|2zT3]q_1xuŞ<(coҜSZR)JRS8 oQaqt tGszɦ_x"mYBaFD3`xנ)JU zֵf6kYy5& 2k-S5ZR)JR)JR)JR)JR(괥*ţ4id8#soQqZxn]FU$Y[1o7zUiJR+]*Ayu[K Xoܓ;{+GjJFiݭKm?<5+J8McJ--77-(G9ؿeYengKVEd$-*DbUjm AsȍXd}cЏ"+]d\e^zעQ.-2#<ǝlRj_d1 <j6:B[I2W#zk5ZR*r[Y$=۩:ǘ\kE1<2𘈡.zg[:{r3,q +)JR)JR)JR)JR)V"ČpO$mܘ]R7MK;dw^Ml77HMsHl`MH!Ok1dg;$rnvկU緍tK\Wr=~U[E`Z7huI$ڮڸ} jCQɱs7amoaqFFBy]a%Y2;8iaH\LҔ)JR)JR)JR)JP괥Q+Hts"4H\qj'F ,#3K!g1kҤ+Oץ +Yuk +v9Y/j?iGֽm>GizZ}Sv6iZgiM+Oץ +buba,fxGIr,PG3^nvkd%>j_WUc ۃ-(9p{ATn`Mt]CWࣜs׽Vb=hN9YW=n)^gZ^UD..\q9Jkzm"ǒ#m2X|@=ϊإ*ZVb1^pH.qy.̀eZ7*0>G&[4)JR2ۣH‚NcA'l"![dYJR`&Bp IP<$YPPHGc|R+Eee )l[LрGp5t=[4 o)cnTP ۴Y Zf<۝|#=-ݼ[i wvo<Og#MڍwueCϖk_R[VHK$6=>CS$zk~bVcd9dB7Pݖ rz[O,T{np]?ƣR+Zx[[i|(zZWf Bn-q8`kg&f[Y 0<|' u9VF*6V<)rA]^-"xY87I5,o 59cEӕ_E1 T\MCov"*RP#ʞr--xYXu$fGfb|O{i#s(OJR)JR)JR)JR(괥*k\ʰۻJ1$|>rH8ם^zaLz|i&]&9kwe3QwH.A lW:ۧ,L?KzLPi>|qZWoP_lMx(8uA-!ܻ 8 .,nnbUy%#h³߿=מxtn!gY"H3)fS)9퇱OC3K$lLTpڍkx]#˚Vz=ޏ}ywtؘqR#W\lRkaK*BֱZe& MqTƂ2 1cW"Iw,zX2d78+-B"ܤĈՔȻw/;s=q^d! +NF@>Gfu]SWdib.Ҳ @I-xݛIm&TP@IIrGy+$pB1k?'q]:K q'dUywQ,HALnȉ$WҢs,dH`r{Uڎ͝01\1kGi"s>J2uiH۹tBMʬc|m )JRJzNuW8<G^5[Lp|Io4^ҒIpG$eՖ^l6LX!p0<Rϧi`y9<|T՛$1B]n +ןa^LHlʥ5 P\FA!Tޫꩣۙ%wsTgԟ7wzɍi- :h$eHJ f\b{IUbd*}8E][[3O9pJ" 9@#޵֯lUbL]8M˼ɷ,UT<|,ڼe[̒&5KF2ǒ>ZO$^qo*]4Y\lsB(C'BF@'#ʳ[jskB6-Vm)O|dgկcښ@AA<~dc9<ԭ["&Vܣ95kw=͸Dl`W8erHv$Th`TXm2Yظ#/$ fүoo +<*F !fAwlxIҴe[u'9o:TGRq3:)eHAWҢ5F܌oLTO~Uxⰶ +:4;#n8x#?e[ Υ2J$t +>8 5EoA(-$eH J^_Aԝ.@2{v{…z~%zc*zPPo CJӗT{ײ٘W$.PI/` ]F%  F{l-nXde@V&~۪1igV<-\ZӤ__!X-ZPf[iB$# vn*j+pbحqqm,Td +kҿ=V}[yEdw{+FebHmqK}gʶ4&Wvx[D⼯o j5 qXtrO=Fkư4i?!X3G낮%ҿ>CnzYAnť|_RX $gd5Yn'$ԒE4KAԘJ@$w TXlq8#CX~A ;Z鐋@ ;6ßLz)JR)JR)JR)JR괥+,ѶpTpF#QZ{E Me۱ʼn89'5ivj)oH؟gIٲA3Aah,DjVRZ gIaqVMk$n'3Np ηH6q%&6Yq)8|ie ĩ%lڮ!Odƌ :gQ="j{ŨB8p2@#)M"+XW<8}1G3\ SsB( ;zfR׺-`tc$I_@O+&IsqownǍ9";{*I*,NõID* `ݾ_: q3"41JlykHK(~{Yn2+#H# +s2yo}ug9|-q3&9ִZ-zИ)Bׂ#R[.e"ኖ|D~/iԶ6(N`sϕA/4!lbVa'8ږ[jjc$RLxpTeA9ÁRΥb;B|* I*ڥji^dݑGN?aէI=տ\ն;_۪ҡk;HnY@AGۚm2xأ H]$%FPyA4qtv69'ܟAhZ\d˲؛ G \Txj}*n溅T +t[n/$ncdGʁp#֮úxK,HO|xvJ^GW\c + +݃TIG*!~WX/kYj|j,nn37|rɨ h!.{u?JVzU:j|T!S?_Ԋ{4@bVE"Rcp0u YLDb*Ve/)F^ FL!=YV@AE8>k)$ 5u)JR)JR)JR)JR)J괥)JR)JR#-hH B^jR)JR)JR)JzWt7Y4djB0Gkk^p;6H &Wzbk\Vy0Rdd$y8MҔ)JR)JR)JR)JR)Jӿ#'&JU!k YY 3apNqRTY4}Td21}j:Mgd4da1$0~ߚ.*d eX)JR)JR)JR)JR(괥)JR)JRJ)TU)JRP*J)JRSZR)JR)JR)JR)JR)JRuee0!899ⵡ,!@ȻU2yRb*)JR)JR)JR)JR)JR괥+ÝWU>/[Ctb.;1Li{OKo)"T"JVO y,3=?LmT 3kqA*7p.98S3:C޻# q:˼qMgz2@9mb7aC y"m4Цtq;wRqlE*L)A5+EӭCnқQ2H_Y_ϫygw,֒v7p@$ۑ[lw%Fݘ6u ˪ ~?:Ag''b#ԧkG%"m C93ڦ!K {2G+k~ΰL8muhW:&%2)nw +ÒI*"8H-r^,`bFlLJCySS u%uX3ʑm=[6L")jp(R|"]s +%X2Spr3YK]?h8vI+CViXsmW+`Hli*O$/V0< $+>P8Rrcgs9RX5\K8u ky&EwjƖ-V=tkֿWqVtcz1F#"2E cL#k~xzoݷn|vR)JR)JR)JR)JT~y$ 0c3BFv|y?unؠN'gMFm:+-GnR@A=J)!|#WV VhS"*7_[KF7|6ۼ)**hA9ReZsL;y6feW<}Ur9Q9E~q5]õQdYTpsQz.RKR-R5RԥGi ˹;cLnlzB>Ud7 gN*Ǔ*J$xϖOcWR)JR괥+Ma}9 ӧK&z0.4{- &~@^M}_Hd{e<v/Hk-ilѐ܁6`{[-MM>+y5ԮS-ʜT kV7bAeOV!~UdZUR-ÂYqlRʐ)w`w,@y+KY5)fn ${ yljJF*Jz$d# +qi KrK~;{l=Ouy9PͥvB$ wq8M%Omz5<봠@}ܞ޵M}sW&?l|/FjhշlJ["~@G. cf )3ZwV . ߼`3\H+͜{yzVmzCP; )#Ǘʳ"uOj$2Tq̆ zXr yt ǻSM'Nc Tcό+cW x±P52 {IepQq9F;OmʘW3r@ܲJ9fҔ)JR)JR)JR*ZT.Xk~FTwٰ8+ 6]8;>~iWE%ݝdжBƠpouF&&e3qI.d6{pH3gϕp?b4CH7*sU:uPzRq^R&Kuqӹ>*)C q%2 C:U|G[,behov"7j ,:ղA+ؖ&+Bp}|q^AY C&s|kj4#i9EKuYC`y-j;VXIDqG *A +#έn%j"8`+<尴Gq dﴃG{w݃횎=\-@)?x~nZ c +&0ʿsf }d߫jL3 BH z֤6b;Ko2ܻ;R`BIn³xBH%fƠzqTvOjjzlr >څWRg5o|Yv z(- +LP^PQ'|i j $$עݴ[bE\>*qYei,w@*H'Y>&[ޅ1-- w+AC0E["ktdzY@ ƤoPe,ز[.ΤtV+顸7- YpUHe'U`}>+q`̑[eyՀZKv[HLl, +$O =2AoHCeioejvQ"V#lZ[ UfZ٭~]r߱z݁۟j]\bxq[ K}$zzץ)T(j)J괥+ ?R?YqQz΃g-byT~eÍqBb co Wk,LСx#b2=m$]mb2WwŃsV-gkˠNn##=9ލ%T@P +5_6n&e +Kʸ#ܑ}ngNרbHf?'~]{[ ;NAH#>|TL$]A@6N†2rT qsj[, ^$v98z[*} ʱŧ[@D\ˎ{ztM$I$2I$晥jIY8hW;N;TGARv6kq<#"(.PvhڮR,Kp`6r[AfS^/SB5U\,= K^Y -f7+(e+:pNXVAOXԄ1Y;XWFΣ4n֒Rrzj]*q (\[%dA xq @ z +MΉguAs/M#/YRIO'`X"kW;2"I7FpGcƷCk=l!PAK۫Xe7Vc:[$81*]6+oRr%m#:f ʢAh[]+ R(1%EGs*951$0h,rNۦYB@$Sy5%O2n-8.JR)JR)JR)JR)JR)JR)TC/^yʹ6cgBX*S,@%rGEnijдJK$l8hث` oRJSZ)SV)X-djd$WERHgή)JU;T=׈Mڬ ْ2 Ί=Ar15Wvk}=T'OqA_=HLR Hn@,䁜c3JR)JV#5o#hl{<ϑk8Ҕ괥Qq7{ֻ]f!$59sZ]z eh,{@ˊEL0bd fsZ\Cv1q.W-^i1e`H.;YlC%Yc%$X4{58D9FpKn$5U.F s#| GAdFpU`-ƍmpɵP;DPlGhKT`>f=XEK,A#ҍڽw,9v$ `X 2cDnc[vsN;Uًu01chИYřݤܿ u +xa2Yvg=YtH-v,{$I1$NӃa0囟Z٨ +ReB +GfPD9趷[1ĎFޤ1wαM9$2(xRUc ;T1$ +vpkj!:!%ԑC)dp}kie,ƌ$G, r}~HʬRG9X1lG[,2Be$2}<<%|+>(GyNr0;Ֆ$Uv1#,*qu]^8ʲţZ4I2#o|5<ʱG En ;I q+R QQ %yɩ%]uZR)JR)JR)JR)JR)JR)JR-4⿾}bI.NJ7u*2Nr#ҹF >_uLҔ)JR)JR)JReVK"sw˜~@}Os*O47{9=9 +9 +V)JR)JR괥S8iV'MKN8$|V MnWJ+(듌 _^Ă)%vƻ8ݎ8l晥VLfX}: 7v~f2m)HV,|{4VfE3US"ZķQI#Ĭ BgipkNVCV1dE,13L"ZR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR(괥ZpxN7sa%dEwqrqϕI]^\ q(6 2g eܗfeFYrHyg5M6KYC#=f0{Y;j. \HR]pzB%$W8Ӵ.b67 <X1&$'+~sRW3K.q ['NJrъkJcu(k9oC)~=||uq> i&&k@\._')&[`Ldd2#%[a#=y7Mgc,2F;)`2I#ޢ/=duWژ; Mg+jW؉mf;NYITyQxǝz^KMoUKP$gHV.)ed7֮ ""Cn;zAuyiDDʒJ  đq$V5C+9~%kdps۽jZjbeK[h.I)Z4JIn; dVM))1r9: W^[b݀p3rkR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥P<~ 2Jv҆aXmrPFyb!]Ę*Wr?fo嶖yyF)ܧ,( >TO [&n\ĸK 뵷 ̑uhmYQT ڶ#H2Gw20 s|;n%YQ8,s'<8ⷬ,Orr1OV-OHS3WBX\<V~'7FYL JU}mʆ q{V]#BFI]#,w$歃AKrIC+r Ѭd2 ϖW-z܏lYi'VY &ܪEQ98l^%A&vȌ85Y'#mA]UK22sֹ&(3ӀC*) ,@r.ci +bG;s#8b0qn%p҂g8>VF"hA$J +cn>ݍ Kw nU5=2Vr:%YYN`G5EYe.b;@xpYB,98Rn>(YJP8Y<3W隌Zxm%NT<Y$ +UNIA#5ZֲHb$l_y{d|VjE,P0$gǧ\j(OjizZFX$a?1[N'fX_E@䣌P!"iZ@vfuDAݙ z5EhQu%}aAͨj.Rɴ>(< 3޶fEt9 ;ycKl|rn *ȭU3U;I,Z$ cE =2MSO}G$LEܥ)J괥*WX]4 r2B `v8m7FmeܪaFpGuR"乘NOzkMj;in]Z%vD|m,!r@YR&] *ܣ"Q7:m4 "I& p8ӽa\7) 3ka.p,>eGηX..-2 p ]OIO"׊dv|<5.ŏXSK,(26'9ccB u#u.u +?3`[SUl//cqnX{89P!sTƫyxxn:apT3y+Fi0jAkIHKu +ہ#;ֺ0Ȍ&i`6ܫڤFݼxN/CfY-ȊmZK( 0ASO[ײ/=¢5H7F/>j{qަC[h@'>ƽ zbGp UUUS[Yt@N.@owly vK><}2)njʧ`89g_tiP袜2kW;!%`pWμLy]H1nFnX}ўdu5įPT {qڥ{WbV7͘ػ+d5G5|B&C $}9estI6 py SQӴE]InF BGv ||LhY&iq H{j;];Υc9 +\;D$tCnoT{yݻ\j\Ӯ#2VۦŞ̌$`X'.#])IRaԫ?azุݤ02@l}bŗ9(Y}4j[mayPs6d$mׇ#w)~Xa"V|#'=(OҘ^EU79D=έqvAUx%!=(PkbU?V9(„%v5?^CP׮"};1"o,c2mȓ$ծT`q qK/L :ZzWia,3CT;I*SW9gE,29Y6+GKmrguqaG`4qΎzѕ@R0+f@<2L7V9{ʤ5=BQaF;dR>EVT+&0H8r8>eY$yKsNwdĞ&scll6Wz%r/P4k:dTsUټr*dW wn{T|eL aBsKc* +M]VIm9%jt7s{kBU 4KD2dڏvkr/)3!OnR]CS؂=;UcGg7J#FՑrmGOimYv$$Yy\NA;+Ha4TQQX5m-5x)Y{cn +sH^-ّx&qJҩ-bn 8eK#vQr#nGv0rpGV]PjgdžPP|9ceY%w_{ԊY\ZB5^#$5JG} BD!EW8 #aŤc)BmRJ2y5#^{Ww֮#XdU1$`JJ鶏 zCPãmsq*JHv89m9f2v +F9$oz<77Ӵ+%eXø2Uw.y3HhE.-2X,9$VƎvҘed~T($ ճhd3E3^!ucWRycXϢ{B4֎S"KU@S¼5ik$IZFb<{UAfwar~<ǧhYFDQ0M&ne퓪#ަ5}ە6V1ŵ08Y*$WL)#89 0I8K[gMbŘN~jxXU1uٕ Pp;Y޼x6T „*Q>Lز4@x|Ru4r/L.]`%vC-Kj8R#dYHǏ< I3 $^0 OH' HL:gb9VpϵpR + KmFm&ҩwqX3fq'89!N3늁 !K[AI\n{vⶤѤr^8][xOqNJV"!H@2R~Yt-dXhbP #H<>TVnF˳'tYhv-agrcycoH8888*51ƷRf+7oYX),|rN6K;e۽r3'&n`['FS/gG3A|>ct6ݞ3ԝFi%MݼLazr+ZYhdp.%/;I R j?Q嶅8(괥Pa3P'b, ɌKHfM{.h10P!*Yyh`יOjnq*T$nS=Q[IqbZ-$2E2*3m_yjA5ĻIeuu>`v>UHQ$p)XP]}p<ɪ"eRzv4c R UFՠyԓp r6G?Yլ&b09Y]_YXcz.,+n8#VE F9a}°Rwq%(bcP@>@9< mimn>Vӌm!@ {d{[+ae"^eA`,|3GiӢmeHB`ǐǽ^w@ Sb Qv.}A$^\ P0nn99{ +{yo)qLɜd8 [vVyGf,dv۬:EzT {UAKk0 d{y +"K[d + ;8rq<ۊݟEk.wkT+]XcKUz;Z^xgf3.=<Ϻ ֱM6Ue42[s>YY(m2;P>:-8H>=w<љnH [6ҥg${ԅ u"WFV`ZWYKh6%W(etmS bvrI~U#)JR)JRLjZR +)Jdz*+EIs:'Tj)JU3U)JR)JRLiJEVLV)JvҔ)JR)JR)JR괥+ 64ȱyG8HYU]*G 5R3EP2sB*آHFG<X2N=M_JRk{̗2*!!r 8ֶ*} O;EX䁓qάAZR p-(\&}=+$W1NXFm aN;d)J4!WTU,*^AvҔ+NiEۘٷ>-:ηP% Pw(5ifǾ.#xY%vCi1` 'بDB r}{%glp8`}{TBjsnF;H.A$2+ ~Q>%KTn#2!SՇs 1Inr+H%XȨm"W%}5C +|ƌcF J'AHz=}UR730P2~]ŕZLЃT+nKA{orΑJp]X 'Hʁ=7=y>/5BxAoq +l.G|1ϝLVd2-5tpȋÓRK!Wg&7#$*}nugyʳղ0E,IkV_ZZrH%bO +{yUt7YU-W ̲ w9XZLwg|_($bn/mH.U#&-02$" f~ʾ9R\`$yqjX,R]ic9"*'v;'T-}~aj'{ oX`m=ʦX=)QkǗYϺcȊpXn *D ;'5`Nn#!w &ܢ"!v†`U|s.v: ue6Y8($dR^%4QID\**9#?.jQ.n09;Yjub$Y7CtR+*}8m7tfI66V8'Y/ o*+0cN{Z_<7qO0,V@F3&(e 29zH)g`w$j"wPAx\;o}v3\+A;BV2sbȑsHuqߑP- N$En'IL K ԭ;es 2*-JDݝ.q5tTc!G=5XIF`HK[8w"vdEb#=jJE+ ^۬* BPV 5 <'"#H A 皺/i (f +X k+J@f8 L2Ic8'GkYŵid8qRwzr,n̅hsYaZWOfO;6QV# j7_Uu^wS":?<5jSY7R@P0rU@bi61u? +5/u0͓QB<vj7w)kI$ Qlk_k`4Wim-钀}!N\ףlvP,sQp|d>jodpm5!2}r~T.b9cUxpONIgg4oxv9kZ۶[C<n!AG'~+c&A{R<^VSHkl C;sU +ch[+R +W 8b -JV.g$g{n >uu/ {yu.I +W#L(tnd\2* \ #ϒ>ڇG,B&B2B%9$>粺ik{c2cXy53isN֑p"B3q}qCVlbX5ݝ3emt+YdPĩ*2 St {;k1 dJ{ )cy,W,=yw GvOٌ O۟t7Ku8wdQFڮX!qUv2]cͭ+vG>8;G9][è[j|Hsw8(9^5"3kfj2wϞ1[~TAρʱ՘g7Mü!U= y,41'2?il{q8?Ri-ixGóa;劓-mn^DKDNHzpy $`Bv29"T*˛MGK啊Og?`p [V~H*9 +FXJv<3›6o>uÂ'b0ar#]JR괥PW [i3n)gmcw #YCF(x:px}XddUڮ[L2cus*噊>g,TorׁUq7aۘ{{6nT,ǻqFy M\h&Ty<ץU@TFNאj2DFcv*F$n!p}+_Qu R(/vek}諁o'wȎ3Vi7ޅD$† +[$c֯4)$Y #84˫K-]!Cm9WW#G#o4[ȉ!yFÑAW'#MOOXʡsE$.Y?YGE2(V# gMwM:ŅŠmXc8u ONswF. gnN0<9ɨiwWl! l$d.{}]2I!$Xt ZQ9 c?ִF"Ǝ=3nÈF:x[#EF {WU%mwlq yk~.\EC1EYIbı l{qeq "T YI9<4ӯ"@ w9ڥ\&y9?V+-u= 77Pl,r[֢_úӓLCIRVvퟪ\'$W:='.Tجۆ?4Fx5Jk&hKab?21HQZ"4!|쬭g&hԺ* 8ϝcKf%g^G?oQi2haY +pBVx$cޯҴ$'[m0pj,8eĭTcJURP0a[[FЋh1;z[; }=:vkF9e%J8 `5;!VDT0}jm:͋ +# +JR@8“$XTpA6}0Fc^QJ\u41&61E,FF>UkVN.Z2aʍv[XhX$jQCy# y"lFd6Os<ڙv6{gv3EmRFB9}翽V&F{<[SI\`؊EH*UT@xm[?SD8-d|ԖCz.bYG*9I2AYMN…x~KF2λY)$zf$jG`>Y+ vji91e#5+E`6.  /,6182c/8+VKfh!Hc%T.qQ4Hg>tmxP?_YfvH#GЊ{8ncWp fg$B{ B;X!5Vn XЭϑF'$'}UXu(HdA6m4qDIe +09yG(ea +$zcV]6`ፂ.Q}㏲;V!g#^]7隰鶭00P~ohfE{UǟO] +[r1Vi+( m`p0p{8&gu1 Cp@ⶱX9uDg z:ezI#}lfҭ.&YZE G8>jڭ{6EXQ*̠m:فXs۹[j"P;0* +;+2W8$FFSѿ݁Y)TVs'Těvqs)ucozg$Ep}hgx"ڻ%r坿/!YB@98ޱɧK*L#H qֲ(F2I3܁*b&&c59, J),>yq*U;_JR괥*VRsȎp0$}`vn"whéu *dg1W;G7sG;5wR&iXPvg||bɕpod9}]_B# J8VK'2m>W +[`#p sdpj)J괥+ZQ[XjY&y$ #o9Uw o#XI3\=+,zŽxA~%W$柌 L"PK.1!vx>K%hA a uabBdb8 ,ŏ +w?`ɬ1&qqw.H enI#TgItKoTKnO-k\{$M.FHGg,@kx>Z=FxYgxb$8u<@nTU%?A)-f vSSp$놹9 F•u(NGT9w/oԖM?'S!&c+bO 2n85^>3H[Ϫ*ofFpT91]O&vƌXFN֍ոh&&,B>Ajznb:BLrSimcϖx +Q~˂Kh3a@aYEEϟy_?L[zU[ȭ d, i0`HhΞY`,~. HTHXkBXG%u. Gk{7{/XYIq$JUwRC3ۜg &+RCLLn㌆^nSoY{A=}ң2ƨBq.ܝsmz[\iVV~*ɩhlcie3oYw,1 xz:/FvXyr’8$)c84=<Y&dҊ ץ[ @+v޴V63lNN˵bLy, } B@.=ӫ]HtXSj<9ʶycTSʳʻBHtqjNOf`G?#9sp~-XT`6EpKbL mVp mݜ }·n`H8P6v35º2OQi}Sy%i #E`\1~k[[KDCOUdz5޷stGJȫɌ lVΒsjmehd^2T< 2c>Dk4#FPG5t<6VfdF!` cvp1 +-cЭ`Ug]ۉ3 ]Q1#Ў+ +uP.vogo-i,C?`-LUk$Cf;d/gj7OԴUWIeYV(fHD 㚔"5"uh[22U*=Gora4c[ޣ2Xvzj_CZA!$P,-z:<u#u-MxkV5 e]f`\ c9[4}Atn\HIc$l2TyS;DڳH0|K pqU?>mmzSW?~7q2oa7!v8ۃ<\Xe,7܆am;sǜf-Uu##3;Xi#{!FO[AuӁRnoU*_6$->\ye[/ҭgf1b?%z)#b>*6fJc{$JE)fa88WvC"]+1-QFp϶6v $/;A4Em#w +1jPFZeu]6ekcG9O2+ePy_O:d%%!袷d\vpJ#8V=VN;]B J4"+l[D&eT.{gwoxHE%iIuorуY|Yh/m UI; 4VܛcVG_gs8@=jM%5 V^Y{=Y]Bippp+Fg%Aշk؞5ViB3)gzާsptŋ+33-mPڎrD{qp1a^~Q,^Ybi+-(%:t1 p ?ٔ,[NTsc͡ڭE ȱ' +f'8&b.|-a-0ĒfU$5,6ʐ3G?]DCf @*!-3=ZcSP^5ff@T]K.ňB71Td +k87Zn=}{X%Y ЮB#`A 0=kO@t,7ݡ1Yzrpy$֌ v"&tn$2b XX=IQ(EhL#$)ݹFz&{ v8N$9mpǜ)J괥+zeѶa#x ON;r*_6-@C/(l=N+R_ҫIq@r|9bmz(=r1p yՖM[`Xj7Q򣌌g8=\5!ē8\3qXq]U/$~l 1<^Kh/t}rdpq[0kJE Ge+2CC#`|(!cv8^=;yUv(eX~_ 9VAo<޾yF +m?Con0@|žzdT.x^۲y?> A]Y07+M0<+6fPXp*m9s 1Q:ԍ#*TzcR +FBt{zJ]9 +HxgNa_ Uv&lt%ݰ02I8a7NEs˝fͥZL.0dFA!Ie' ǚڪk^eGhRfjЫDܬ7'$}O5K L$r=vbVk[,z:4{بS} +ύ)@!0k4ZlP` !S7[k[gNOb=<=]2%*~1>y8 HJmFܨdsmŷ$T3Z6%ۑwEoP;#lID OI9H5{v +`+&=p _c)Yؗv#Y$p2j4k9aJK!yf$1c7K%ʳ~*LU˱ g9I* T*RSiMA,(2#:r4{B7ck+t¸Iff=سI>)JCeʃ]IF>xZ,䞘; |8[T+1r&?fdS"TmF4)%ۏr5!l=KPk$FA);J88)'Y4o Y&s1$w^{ؒEK1}nɫݣƏu|c 1R#i6mRv 2|[i$ɹAkYsS5e|o $}9Z</<5fȦEkZޛg"t(g\+CeNy8?:3CQֺ<5@V\).  ?:۲7pG3FEb6gidS"i`h&čLyߵQGNlW!1Hs{AYVmL{soI _8 9*:=CH#$)Kv +0[1ޥ `$zls.39Y)f[!f5@[=xfȦkZ{0tn}W1џy[9EVL"^[ٿos?}Y6"6Fw6#3L4ȦE3UdUjZifWVm1L:s9݂=EHLZy$erH 9`'VN@69٦idS"juEkwmfrdmǐEIުdS4ȭ-gQ}.R>neݴ FGnV(괥)JR)JR)JR)JR)JR|hyI#zZL=C<e`2;J C*6?3b<76ZfP7  +E@'UԳ(6h 1R79V*z&BSr#9`jOqk]Mju+}ӓcWp\2fP `~k>W6(\IP5bUWemWkmHzaI-RZ]-\ldO|ѷg GUyԿ:~rKkp"1 drB{InnIwfRE=&${`Zi 'IaR0wȨAF%E)+BDr̮pA=9*YYk{;X>[5,&DӔFBBWPNn+&o{j庲1cMc@棭5-CX4[eQQr=W#~ex[bey +#"σl2.o-*ʍF> O^j+ֻabp4F6l|4[%p[ErLB +&<>\eN^CL7/̉p븎aY*[˭2}qg+<@T]V3*CƱ'NBrGyV崗:RЋn$qˉ!#;2Xe8/=>K9)ek}N]Q(]( 9pIZMyզ,2.VNxǻxnnmdY,L:=Lϙc*#'9 ECGZj\L[g [>=7nKcX$$JQ@AI$]a6WOHWpzg7rB(e.+zKVJs#sttFF9kB^[{KCW ԍN==[ﭝMpz.%Ф$F +v!8Fc v2.a%g 0G8lJBEqr`ҡRQKF~n͞8)I5{M&iB0~c2a;sIա2T)#jJ=@p39ZFwrc r皉(韾"~4Ich%|Q; $לW>e#B <1= SX3{THN(T>GwϚΞaxL) p*׶I5;+ǹrNgA7v+[E$q>0`CcU-yݷHBp +os"6Uf>8淢"hVE="HP'qV[xzt^E$ʮARH208ajɺyXJAc5m#QWmCrvsuIڀ8R +AQۓg]7`n$y"6oFr8l頚W"8ةT0!C 8s vO ɫƔ^upǷ1ysV] vVKvp^~ǕV]d:?E/\eJOqګoh^٤ڔ 2>nq8R $ 7U +)"~jte7owHC߉Ny~O(e{9K+$+j:16SyMlҨPmS+}+WS\.ޏ`ßQ4#{\J,lrpUI#k>i%i!2mn#H *z0+BM #F ]:v@Ǒt*[{E̒A +L$*FB,}~u$ $DpUrP[!Gg54ho1fݸ}s+R_ [i:JQwn3g,TPvc8>fR괥)JR)JR)JR)JR)JRQ($°Yjj-+q Vz+VPNI)Q@噘TSXX[?mRLer=Izl]AeHUk~ɐU:XwR?dr+f+v<*)f?!T"I3eYsqk)8{+VG*~%lgpAGq[4kǦdkgw?* :,rCۂ2++]{2bsA85ZwǽN}¤;O[*YaĉHR0nǞ+zPbJV جbW ՐF,A!~U)T7 #8<]uCFB NH5JU3U)JRᾊyRwųx S0sڶ+RS A +0 p{Vj0Y RV0r +:tq;5,s9U! yR;(dS#Fv<*=Y]NCA WҰ^ݥO&vƥj8$'խ}JmTҔ;R+Xʻ#h]\d;ZKw߶+YvǦ*0ޢ(4B}zc?}IT$׷[2Ɩi]w{컕 ֵmu9{m*IW',3$Fy纫T\$%Pmb0ݴ#$?ZvNteW-ry;Pp[Z9B*Z-#i_;TdYT~^nvmY0ysgqNS:f +prNDx՚{!s>~[Tͅkd rnTٳs 29W.n61( Zz7vǛ1*W5vA ,A Ʋ^UeZ{/hnW;mݞcVuB'MMWv&lm,s߶<-OySf g9$ Hb,e{38DB !vs2鋪ݬ}/bi4>Hþ{dUz{ewkA"w+ʂ0w 65%VV^Fdv^X[^TeUiS~P5z\vFۯ-`$p3:,zFFsEFOKq6),WvdrpI>@|Yu{-w݈b

    FVmdoTAyEGG_aiO"ymĪ@Į6ss|u]ꨶv)q +> |[y?Wm/ᗲeC,H¤y*>Y&#AlK_m6*:Y(GXǁ1$s ]? +_Cp]*&m<ڎdc*dX/~2A^v^kY{6t#pKa*sT~m@!( wNWEz1f//Ujf(YЇ1mlیbbG[gpOJEd.9g=*!d2fv*X$jp,p=95 +^%Rd&g H<}CV[IUDB9}Ysϐm5k.JD+ې浓œ"%[( s`s0UI{tc%=yDdnFol'.mď(BVxAcή}~QP19t\y3s޷MFkqV]5YCXoE_o{m*ݝ_2obMNɭ5=Є o{jAy[,m2Ƅ ̊2n\Z+}(7 ,B9d9<֝6I1ѬD#y9WҔ괥)JR)JR)JR)JR)JR 'P[2 `~Uf4<}e$E}DK#h$b,wV&ͥMK0;̅dT+FTُ"66 @ 7UǼb y|juI< +%=y1% K3|*|AF[;d[L"ݿrfE  1܃r1ۚ,jFƑyq@+//.TX g=*V& I 5ֲ,[F*@ x}GkAztv+'LnNTap bGڧAAg,keʎ>bcݏelu! 4lA´ttۍ>8U+ B(7{aְCķ}mq1q#}ҦJum8G~0|[w{e>Xvu +%=L+u6*l^Hj-m=Y%%joD5ҴnHbhas[Zc`ZVNy>Hj|2keV[Ǵ&!^rT2*?\ѣ ,n*s2Ր~׊%^=6̦aV &uV=>VݻO$.wC>TŴ&U.@y&->[-$TXgSyb~!yʵntk%vrK# LƂ$UgyW2NdFEx'l.7Bn/OM@M + rO'үCtEŴF0p@e#9oiu(ѥG2K(#e8,<>]ʣpB58GF޲{ܓݴW@P 'גj>O +@>xFFYN{crnN6i'a(deK 3rI'z׵Ү-TnUo7@>q1On42D/F~U+e‚ j#\ `d}I5]Fm!6Mw`dgQiEeYG$m܂sdI5I5 $==8V.vc=+J 4v Qȩۻ9ߐq[EޯkqXL`Bw{ܒ{c*˽ +\,fhX6|{^scyyq,rUJPd;K3J)P:`(A#2q5Gkv]ՙ2U|Zh\,q5~1X.oR⍲ZWڪI$泊wtQҔ)@괥)JR)JR)JR)JR)JRq0Ü >3)8SBȡAVGi-S J2p+5+ɴwZJ㶵 7;H<\AbҨ커|H]_:tsN.Dw>d yΝwys$xi6Fwd#xsjC=lϺ&A.>ճk7WSXgقuYr7)㜞9*OPkq<)ɉI + +ybs1'\$ʋ5. 1JFُL}1M2K)#剷+g;8#?:л.#Kp^B[i5RҶ3 |Yek"[Kǃ`֤Σ֋ RȐ RW$8H1*[ Va"';d|y^S6"]30~ju- +Y+6C#Ha-ԝAsW•lAݎFjB[G +L +t}<{5d:guF~Hk}I` 㷧P5ã2EѤU?jhaȬQZC R6. /aUH"RpOPқhRaxI+3 `|[%a1AsǾ qMoXM*׎-deEe# O9jݱQ"Dڥ[pu29jem>HB}ˁVỻs5j[H2=N@PYVP"}V3λ`) |GY|St[G,=ow600rj^YeuJNUX9#_H,x8/uIXZ*D]WwɎ5-rY8~ < ^U  R[nv ޶c֯ng#m) +\ؤ9 +U TIj8xK?\m&eMAn}HΥKX2V# XjOx A}or~eIq[AXd^ +sP&b^jc$K)ƼHld`_sۚJdG(p*OV@^{Q s(fڤbx.dHg- Fxs=F}e?M5p¨9oes$dKyYI퐤"F;BcRavyʴRLӴ#K2\vd;y涮\ +s8FcL.n$[ l;=ŽVLÀ۔T9:ĺr\ݫ׸&H=#kC2r8i"DuBx*JC Em| kF\zVi,3F2IھϥVM"c7+,2Z!#h}91[j[MK `#0kBm.NF8e"rB TR1sީiz䑱xaƧzn!sw9>@T՜r3eqH{G~TʻANY"a`muU?N4*$9_33w`= 緐5]T =O8ϭiŤޝEdx8 +[r"9m#Oz`+PHۉ22qp<㊙EYsX(kYAxdz +2ƬB(8f+hǫj +mbV2^x[bMǐH +!Ǯέu5` ) HA*FYFH mbRg!eT +ޘ +1YR]\L\4!K7r8<-e7 42JXn9/1>jkx`aAlo[c$(ْTK8۟? kb}:)ͳh G-: F8*Ab" +njG|yVz嵋102H1b$HܜOi YЊmz0n!8㗃N|h@e[ngm {sXTWBD!I axum'R`ׯHc\*;(;ͅ(HU̒IT|]յŮ㤌;9;1PTwqXt'QҬHE]qVOlzU͇QZE=K'w\b;0*cM}կ}EJAc[ |RZ"7rd9kgCғE1%ԹnSQ7ш+S,Bwqki "H!i= +ۈ lη}3yv,}wW1) {x5-Sl;<.?Ubm*suE'P] c1Φ1Jsgьɒ#}g$ G;5fmDKmP1'6b149Z]5Ֆ@:HWp9:^[sgeq"̂v !vBbR mq>u#l,H6H$r+Fo,&Gg8+VHiH׮'+LlT?*4çX bX p0qҦL\B1"$EuɶC8g,7{+ NjIɂ^«)1,W*ہ;ߗUt`f2Ddg cgCQveeiy0XnYTXۂsVzԑKwvmYl-qkfQane,cz`⽊BZ6tW`jO<8wNek`i`Gp{ucqa4-+"FN#v q>v[87!vC@CʰQ%[.[rǽw su&X-m +W2** 3[![zv.e v:IIԞP;F +2<V?P]-@ ^||X*!Rb>U JoVVdAĊH¨701ׇąIbKWw 3g5E4pYvW pθG#$:ZR)JR)JRRҔ)JR)JR)JR)JR)JRrň!Mr7=|pƋa)iJR괥)JR)JR)JR)JR)JR=BK_¢;ydoW%6T<|XFӢ&Neh_}d g +o^і{}AH8= OkKV$\+J io"uC< +HI#8’I=FI8~%f4.-VWU2 ;־a}ing H8 bџuhc"-Y%ou D/*]J) Cm +CFAVdž44%|3NB!38cg(ʋJ`30G5[{eX8 +|wuGGiZif4+_I' 95zzhdE,w@XX5JR)JR)JRJRZR)JR)JR)JR)JR)JRS<)x{W89e9$c#ҼY&> 꿯G^La㷍XdRT)@괥)JR)JR)JR)JR)JRFEii<:WS_{rs>uJR)JR)JR)JR)JR)J)J)JR)JR)JR)JR)JR)JR)JP괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR**)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JRtJoj7jyP}bnY6ѱ_<εOafҫH+*;d적:|]}gf 3;,n#$`q_⋡%f$,Ww5)}lYI,ڈ$"Hg[k6QB%^7`FH>U|YtE>r8%+2  im+$]!32F8-ې + ֮GZ-:h,QϺ9~/cG#FxpVzR)JR(괥)JR)JR)JR)JR)JR4;|zԽXDi +?$G~1ΧY"Ѧzz&$@r,G T.GT\\#Ȭ#nT6 ++SM5$o%khv1|HWOFg𝝔1,O4X2v֤\W,I=x+hmOlo +Dn{$׶ԭI'cZ 9B/t?{]׿d]+fTfaGT."e`v{Vuz{!oȅ78-ᶏR>ir־5[IAa|3mmխiז:nhVI&I:hU>?8AA2^pkɤx)5B! R&V H }O5M&)_]5]mjJ2UHqϕd'eӚ Dqq;xFe>zWy+{iĒ[\1aF @ӸNJ88 b>kB٢fNfwKo;9󫵍&C-%]\F+xfdyfڊσʹvڠ|5%8qS܋֖hEr܀s|/Ǖ X ϫqzq>=ݭH*yeFpysR5Yį$l7sH l+k2Z+@fHo!D +rH.']kPm4P(,|{TՉ8ܬ3鑊qL~MY80p9 +$9(#vJH5x.4s,]sm If_rHIݢ}Z<yZ ׺v̆[pF֏  e:=4{ 7vDmWky-.$'"~: c*waW {^D#)A}y +߭9٭YX(v9$F;|%۩(Msd>Xa[jZEѢtIǐ'&}q5M9$bČ[q J>,$p<>U5ZTu{-9NG۝qR4)JR)JR)JR)JR(괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR*+]ֱ]S1O+c"ǽs #gί{9}6Svj?Ŗnzo庂H,H 8aK!p@<^F(xsQm}d^#&ld #lC ǮJV_ObVNѢ0d?pF-*MG}F+s}&w "9F7pr3^w]p]۽Wqєns'ʓxrfg1aVe! >]z-Wdc$2I|5{ ;ieS +3* (IZMYA.!l|p>Bk^,̥ =YCR8qYicuuzjbIa,?Unj'PhԀૣу!?,~UkYE,RBVEV.\qH}ݫHU*(p+vN*2 +C!˾< ԥ)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JR)JR)JR)JR)JV [FRHr$mmdϑsRiۏkK8$vo8$kNxd &3GyΧ<12IZ*(T*A)2]\Z΁g "\BS +ۏ 95%.άFX#1ZeԺZs5{G8DuU)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JG3vMylv)JVC4vI(r[hc|wQL:&7 ZR{2 @%AǝoҨkZR՚Ä/u r+j)J8+-nP &r2RGdVʻ(@g +iZмAl8*`>*R)Jqp 8>UW08xr3>JR{V<}぀@$ >VǪ-."BǺ1U8=+(6% + 'lVݑ\{SN3*JU c7I/dq*a,VM,*#) r?*i+AT1 r;1Wj[gӐ9cyRqF>H<5$KupdUġ|voB'pK G*pA mRLֻj0-ȵ. 9Q#u|7q\3nQV U5)T+]#KVp%t.J c٥)VUԥ)JR괥)JR)JR)JR)JR)JRgLZ^ऑD y淯ub*t"K(bHU1pHɭ[_H^Ѯ";97I2Eo\@|V)u[:3̅#x ʍVMcQ%l77TCoAYcS.u R8;Aߌ_[mÙ;.bNڰW3ŨY Qs$VAgdm:1mMoLcv|*6Sc /5K5bHx݋{2(q>x[=2NC3DNQyՃŷi7[- u#FtRl,A՚&MZ3I#me{gt5MyXbG|\!1+n3@=Rܶi<L&dG`svٸR FTf' 7*0=TiʩPx9 a38>uz5(1m6 @Oa/slD{e$I */TM +<˟)@괥)JR)JR)JR)JR)JR?M_ Ti4iǦl6<}Թych˯8E]c>#5Aq +EFɀJ; wq>JY܃2A1ۊ>g|<ݙA>{g皇:sS+uF% [Y1R:֙*C&]r3Fs5ag}lu6{oԯ$x  xݐO:%,,Dhd[bI H;rKc:k[2zro@ꎏ!J#m${$ea(*4 O +iH`ѭ9̾# +W+P_sW2") .;V}.;RﺚAL68+Ωq45S0 sy9dT;H}Q+IΣ|o+E200Y1W^X\62˸;<c$ۊgwmu},[ī`T@8:ײ4[Ve\ҙUQ]u>+̃m=.RbSogάBC0-:y|,Ф1`"n 7ğ 1޷4(n-m"PF +`#8k[6:CnO mqTV酎+y2l<W-nUVk$`6B5XVX) #jNԯinE`&Ň9Y/aM$W#ho=*=2DAKdw2G+qS- PZ~5beH4y[$kc{s-Ƴ,M+5`s#l{㓑ڱYZhD@uE.@{R88Oh Z6ސH#N9ϕJr]J~cn3XZ7 \[hS_I 6&mhb=`E]hhi8̢Tbz@q([w\W_CnQ c+ǐ H*pyg$p)F^PQ [q<*OL!Q!"x +payViG6AedOKU}Bkծ.y?O$ MSDRz*1W|PQ#Ed,x ++~'AQ qV#R؜u#eБ4~}YU&}RMmk7Fs+'to1n:8 vbg`H8sǝeŅƛo$W +7 +D3g*gNyo y8&7lǯYie5@Gev3*H 4EtFb +Hnld=G:뙮E-awn +Ayʶ3bV.GϝVLSgUbΩ܁UҕZ1LUj)U*)LUk դWd;؏B< EDP`aWeNX(Si>9ʲm̎ BJHGLS1UbJU1U)JU*JRZRbҕJ׵wt#TF#lҔ)@괥)JR)JR)JR)JR)JR|Kjx'虆ɜm891:{Caq!y{PbϮ9ʫgv VU +P A#NsȪu+3Ucs`dW9lc¯Jɏ䬛ӟ3[xS 9lR78ʀs{9>^Ug= 1'h^`M$ 79'3[kPxL$Y(ݸ| ;8p"b>7laPX*a/&{vHeTc 0*XǝkTHӤ%bţT7sMȟDH$CMFQsԔSM ѻǽ@ A Rx G6K*cFr x@`r2*:Wm 8X9ǕDx[SDWݷ4Q79=wDEڤ@CwRu2}0H*H# VpY"(AO`bZEѢgB(z?43X4魯'!Ur),q@R=1ZKMNB 4q{[ +ѾV 0A`..}%f_Cm;NXP+r}Y-croHRq8 ZSI!$x܎`vf|Qɤi7H ++7{a{oe]C÷rI X UP>9IZkD;ʮ9\xR#〰UeFXN}èe9{ѸcI#DyLKNSrGG }` + N68l@8'4]~ۣ=X$pABD`%#9,ecKNH]d%H0$N9ìG \+CӋ$28#oZ~)I!H PUÆ8!yVY=cMf+lԕ)JR)JR)JR)JR)JR)JR)JR(괥)JR)JR)JR)JR)JRu +B9 )nel?>I5+vn .fDor\2t)'#qZ:Tڈ9ܘ7qb{ʫ_KCd#|7L&9` lymzq ;#^Yub6H8(U4U6vef>9b~-F -kTYC!S1*2s}^@drQ"r} [h2gh#%&pI]C==|ugiw&5#$޲xmCM8{@tY +|OfUүbBmHn#$`g=bK&NJQc?*oU +Xxn3Q~Mcuk<3&Ǘ*`aױ:q. W7'E2grOJx9]m.ļ2Ҽ9̯$*_*ARiGwҷZKW<97`kjo4sGkzbM6qMjEa ,-m,sp]IwUJ;eWaR:HV᠔$ FJH#c8-l[l0Y gG4QȬҴ=O3篷hw۞qʭ%,j[ 2@d$BT1HDp2;f[]"8Ţ1]}{5-2!䅀?,3QZj=q[K,pɲ\n, YuD{X+a@(&n<l'F{[20TF ~f\Y>UdU_c>1V|m$&3IoX–#w|H *;<՝Z+4-p{| <{Un]Աy+[1Ju gqG#Y|MU%ܛbI{1[wz6eF;$",G' +3T7/ZP4bV}*YmbXJ! prg|vެ1ߪ8ݝ݌yY;{Ey>X=L ^)ǽYnolC +gcXBw2L*gȚݯ?u=ힳe /h؊Tn'AP8bԞDۄr0̌ s[w:س2X"4 m:چdEx20 "8mFF7g6,si33`pXS 3g|c$8uu1dnVFk:ݬ\#lG|`˞|U}n?h(ώ ;csW ^ՌI8C.0Gsf +2j@:ex$pcxʏx jh~ RiO,nž`r}*fSE.Eh }x=[_KPO(7[^O5ޭA0|ovJR)JR)JR)JR괥)JR)JR)JR)JR)JR)P0fմh?4`풬 ׸M=}K˴S&pē@ ̖-㥌1WQe7F4v.Z6  sICo $c+.t(Q'qq3Gi(:I zdgGR[>' +pڄ6}L`f3֡X7 d( DlaLLq,lۮBp{׹9ePTF[ 0ꔄU,~ut{nvGn;MS~FNI*b4n8 +aϑVx+;"D`)v 8ϨVS1$f6d?:Ԧ:nnQ#RdYC̎޵G[,eMN37cϭE$[Xk_BڌHQ\{ʠqT\jwP-{={Mc!jps*^]wxAĀ>` v!^JYmfb  wɰ[kfko(Ri{SErG'վ rm m!Y U]2 Pxnvb$C9w22T0@I9c}6UY63%t(q쓴+\ࢫs P5VR6rvE2vk-72s$+㧳,DcrFIze V(؎$9_5aodP<#;烜+hrt%X`̻@#857-5ᕗ[w#!*ҖS99(wX 9t:2zpy$`Q}X/lF\tpP@Fsʴ/n|?Oi}Λs,ЁF*QbpLXq7;H0|̲j-2DpdT2g>D8$@tAhkyP َwt./ex,FtddM/"dHŘV1{vOl׶Sqڼ݉FU.d)?* #i̧-  +X}պ\/5|u1S(#<1mBȭC<Ȫ{;U?0#˵`-zg*LNC)*F}y$i_C7 [MP R*Păϙuu bi*Kn#ymF=[JJ}z[Hhv:,1 +yS^ 8 ?2 p=2Ç>k"(:O| 2In)7󳧻8 b/%k0Fm7 dѶ9 N ӣ7QZC{(I^}7 ;ݬAvR)JR)JR)JR괥)JR)JR)JR)JR)JR)J 84e 0@#U)Js)JVJ*ZRH&e-v\02+-@kڼsmai2G,bv+*;g-%EHX]G'zgRREj"$*`2Oa<9V* SGȏ*542?Xec]}A(`W.y@<+k9vM=3T%JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR[]23<uS#8Ҕʉކ` =jfExm ;|-a[8$g?ROT?e}dNQ$ 2ld g>CLT)H#S2ϝihm@Mo|r9}f5;zF2OnI0<V1q*@ZSCc7v`<"QV{H,m!#d.tIDŽc4¹K"P@$Tc=>P@n< Zbc39\Lc*so;$C=D?uGx|jVcLA`qߩ^Z h*IEo˂IF>U1٭CXD*7VQY1ey)fnw=>U-iv2%X,}Ig|t/|wf7X>$Ϲ_`́~zQ %arHyaǕ,XJ晪ҨN**rb9ǝ]TҔ)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JV9KhIU,rMk8VhX@݃m89z\Fኸ;sc8ͨMOe IEMP3 2 ~)>J>x>UҋHX "  DޤwSS@Л_ӭh争YN +>HALw 3)$ zuam} r73]mk t#\"8 +^sݵplq2^Q5;gn- 쑢@iw:tfh \Fۑq +>@c`lvtwy,A2I#.vSO~9z[Jf\{E2+wVϵajd  ZgjP c *ԣ +H!H""(U'x$̩)SnP|uiZ4}*0UA >u['fX2OG Yӭg9BOgү1h2Bs޲ gCeƊ~+^SEPr4$ϩ$Vxhm۩gPȐ;=@犌<)k>GsuwwFx9 so]9e9 ++$S}EvF=sQ h %# 8֧5':vQ7PG܊Ŗ5| +ɫeѣC)G|jG|2>RȲ"yOC$Kx)wJFqˊs=ga˵c2E7ҽҔ)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JT~slQa! + 8B9i-lYm;3ОM֘e+a)"0OT΃` PUQ#Pn;ä4,MiZ(:f$fh9w&ky}XSᙥ%2@5#y6W ݤDyFjQQ.c)<,@PgaUԼC nyNRLI xueA"p'E,H~3`DV +?^Uj>č!Kn%EXXχbwW7犯y^OW2dh4u׸|N"r+Rn.rDo5d>A|]K²~.Sñ~xO<UKm t/%(,N}d:47+Sٖ䲟fA|Tqb 7/\{UM~.EoPr#uX={ܷp5$_gyV6.nSlUDh[.4T7ndȝbB~`smj7l-I$68wy*4)m cb#XI$QQ,2nXA=Eaz0Ŕc8`ekxK8;C!U.C$g6'?xL˥\vyйu;[f#쬈s{f;4ʺdp[H.60DI?(0kn5k"]/em suEV)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JU*٢YZvZ>hBlqkh(V4NX1O an3Vł lDO̗g^knAj3:yR@!p3ڶ]BS'^4tĽRC 8FɏP?#ץ)%Ayu)JR)J4/eu ŝ7cj3G:֠-$mө;ʁ>1^U)TVLSlahUc:rFp!YYAuV +4KUԩ?1کmCr?3:]1l۷EQV" # pIDǝLҔ)JR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JR)JR)JR)JR)JR*aIԬ&``qZ1h̳,xefe⩝?nJR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)V1"iy5rjVfҔ)JR)JR)JR)JR)JR)JP +endstream endobj 185 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 62/Tabs/S/Type/Page>> endobj 186 0 obj <>stream +HW]#+zL@w$ᾅl]&~ȿOWWTtK6,֝鮮:uꜗӻӏ~yO_~Z~ީr^wjޫVe޽~M׏>+Gsp +ǽ=UG}>N/q^{sqJ/qFrw:}G\q;g(('7/ilt޼:Aek=?~R+8 ||z`n9KY .O@ʧ!}<$a:O1/%P$ʪP +/x{RݐDdĬD#Xj8LEkSem|Wn.?^z~o_?[.w ]Νr4z-]6iM:nє4&D7"6%gSB[@|ZgcB,eݖ:\50e/,85GiNnucAx1X3۹zgYxhZ!wM|UJixB_EJJh!C^\Ҵ4_M eCCbP/^ud[XqXR)ӒWkCA->d)MBH{v{3tfJЫ;8tHzW:m)<8t|kQ G56?UJvr2ˀTM +`j;TJ8? `|!^s_yOMqeWm,^"S (`TȁP$h7Zo)LKu * Ίr5낹"vc?;bjd6U;a2`gARL|ĆPLTL4=$Fr=Asts(aNCDWQ_ Խ|\TtKTߖr9I"\!EytOx xꕑL]SeQWLgڐzNzT +<HoݝҨ50r ]z+  L=sb;[v Qz$^ Bs`¥H$M[spԦRg8ŏYddesϝ{vL?N&4Z7{͇K]=/KhdH5äB<.u`Uz_zҁ++mAS/Nhjy׫nS}'k8 +9óXK+G N&EC nl(D9?6+tTɲ3Ӟl;kpDy5Y0`ӗz,miqs;uk6K:iវˑq5EFN$yy© ҍȰL]= b|ͭ Rcl;c;*\a݁J~@^ #|43~so>h5?%`)$K}  wM$`0IfEO/!K6%A *ĥu/)N _{V\]Yze-R Px߂XE_ϨsJ2!siߌ4|}=%gdoߢ&gpH(+4F<|]wc#~7%Mtf k +\rxxi|nшk܄x%`bR =5?3w*jU#14X-F=87tWs[/EF2D`u⶧@ k^ 3:2%ڟ`UB 0W +I<ܺƾַтIGPXy+Hf*2ŗM֊HH_>X= +xd4xd eי]+EPeaB}\o [-$cXņIIwd M*(Y]Ni(*x7z˿j@;YMS)t[BʮMQo@`*#a-kK?w"mCm-q oPNL+jD)|=vbe)lGa0喺­\fV7}~Hi}jUU=潎˼{[H2N$efvFJ +8$AcPV>,>Xfpoyl=ը+\#y!=_2?%!uK n_)]7"PQxgDĆ0a) A'*yXɑe9sJ kDM)Мc~o_?Rᚦ0֝H[L%kl,u:\ ZF&)i@I׉hތ׼iNvW" 0Jn;ҔИ޼8΃b a$L03^ҔR^\֨\<!EsVUgfUe\H%D +2[%6Ἀ aPL%(b+8$[1LR*D'%AhۉyCU>stream +0 +@&cM +״iŃ9 ELaBw09I7]:IEqɇ>x2r5ZL\8$4FFz>¢MUUfLy9є8tTZp9"VTːeП~शEԗ6+R09Lr>ޗȧF] Q}C>G*;l9m[9ؕ`-y`]2Z.ʼn=Gaq7!uꗵO32I(0=bmN4<OD9k_g{zN^G o`"tjD%k(̼zƣ,e9bNハ|szVNq,@QIz;Xy:?YW|@`6Cٓb."O/\eZ용hb曦]19dctz+gryo91zؿQoǃP-dE5& ,C ,?(uzd.R)%|ϠOdsԑUgc2dF*f-12̕1NJ7ww9)V!i2$HVT /K.|dg6}m9s8#fZ˒, +ldH2h,̦1pK^`qvq^7lR^eF ?cU\-xt*`Z~u%ULE86.+AuFJ+ߝt0CZ ^T$1%kżTRKVk%"ӳ̺GJּ!B>$+d +]ܩu>Iѯ(3u(U887%@:l<@- 6zKdd5 $D4O@, *SbLiFӗ U=S2ǷUmSP5 ] Zhmų@RLn3Rr +YnHu2_ N>))qX=ءw%,/x[Qk0[(tiGMI=:7qBq-XFJxLr^N:n%CP>Ŕf YG,ruQnl0$sa]Qn6/;;k@D"4zZ?ʼn'NWI^x8FM"tg5FtVޙOħcvX0}Y#-sky`klADfc;|\1iMT&?lY uΰ,9sl5Hh:Cɱk;6=%mD1Ri[k̎srj+kÀ Vډey#֍=xT8r>gcn>8YŴF` !up$VAH"pgU.{BBR-L)u͔Qga*D;(ψ1tnwDk?$塞xǁh3@]]%iyۉ\YV,|!bpFWMZe8XR,Yb~6.V0#a譠,D +6C)߻~Zm\B&D҄u%Ȥx‘}()UVՌu6G"x.f`iR?( +h+<eJMy\G ["9ip`Q===z.d>+gLY| +X5mnZy +rqkf'/#J=aɷYD*7L{|ptbjw7mzܳ#Ba2۞eՈ >'tG dkܕ4j@.b($JEUEӅDph[4 _dB މ6AgU3xlxh̞䭢2 9arf>϶$ifׯgO1Syb3'm4xRS0pn9%)E@Xa9ͮ=nz;[\ȶgQQ 27t/yXpI¡ba΋pU;-PwQp[i=GzsoqL,X7iIu˓F}wO , Njcy]]~3K,=Qg YfwxS$i3vd$O?џlQ%{\RVH{۫],a7IS0838B {4J2~SpP) v% z!@%f`Yo2-c2?KfLe?9VN@ + ^2KAqXxt]>v"+?3"l(p[X ?-rkMyHgu}sSm1,h$Q$,H"59m'NFWPBsٚifo޲ L%2)y){`DʆZ-zJ^JQw@s^4w,䂵 Mϕ4jϷ7|iMCAC0;BL)o$Ĝ"i+)m/*tOn9}F(24Nͫl(Ն )($nVwjEs"XJ.xpŦgpak& + +j%$fMԷݱ;q8g9b96tn(jM +b<bIvu2rD\g\wo7ϓ{ RH7ZUlHz9Ybemɜ]`2Y6{!.NBz9ӐV/h{@*\yhP-#\vzL9.Tܞhߩvi'jG' +8q >Cq~ +Rr@m[ +=SI6QmpV +{1{oȚKJAY+P%b!wK̈́|72$+>Aop2 +ȱ{ZzBi}V9cvy#tdРQ'_mN#[FE]p `Kdy^™XmWPgݎD%L+k.RlFwi|7# OqFkMdP%)9?>,6ofj\" VCCF*?8d5FJns@АWlRTABbkb' +f i.jYY,XXяv9ΗqL#M+ vv?ULU~4mMss/.9`{zUYX:\M^E,E˿uO'~禚s1^ڬf캓c7D&JVU"_ύ C6˂0m ЀZcƮiƚ({g\(Z 7z:`Y};^j9'\quCÃ>V -c; +yL%B(8QλW8[=fY|l4b ݃!!s^[K$:H N_`ʠr/ 0tA3ZnR`d:MX9,Ϝ [R\؂1yY~t^r^Q5X uzS|B4C{[VAQǂ KR:@ #pnY' +[ - rZZ퓯ۨp3i,mnԫ &~cj$*NǽD':ɗ]DȨρ&NC05X6Xh]&sP Rðb3_ǰ+ + pIE)b"cg]c b?ߦoLWIaG0 I{Y,$qu<} & cx ʇŨJd(rP?]<+.,S'~b<*=g!;E*2 N,S;!Ys}I-}L}ym5iPT֫e+sDLytDžh3lU*fexow̨l7䙳OHghE&NJO-庴7(x/ )T [{\ % +^uI~7ۭg)X3SvOވP,7MehO{hӾpI#k~8S@\)2WGUp#6ӏc)i2Gc +/DҴԀ +^L;L@7U7"rjRI@}^bPX\4R$!X|U„2v:JZ_zIskT˟)0"#DOcvW`ePb21 +L[ƨLP3}a߹?=W osÑN<#ݹ#VkS5ьGf4R1m1:;4!$-}4HSO =3 ma<]vh1f=>3X0޷T*MhՑkMZAn ҫzғ*j5 I7xbtW2}(iXh FSnk +Vw< ]wcs;UhxҌH >ha3$\QOPSH ԥZi)F{$o񦳋r#as/ZVK =گhFDǂcqCѠx&uxKB؛HAq/Siڬ&uU )GZhoCgC\;ۡ *e):4uQgb>2JWqȌJ&^:ܓ,?4;cP1xmq- Q8dP,j0% ls[ Bl£6&lR#i7(ap*Z33]Fmtd}û\r,7ɸGH Y-X !Rgcv.NQOIbYlj 5 k7BIWw:Uƨo sBP9,dD!ފAFdv@,Ss?&"\fTUɑ&╚U~4 Y 4U B=wh$tӊcuw" f < +{jCM"G⡏E=/<C<ڢCeŴw9if6ۋ6-R# i LꬓReX[> / `S W«ş:lk T?RDE䩫2p5f,`f><XV9)@<\?tȲ.2eG +i@+h̰PueVn9<6Gt.-,F +_ϐ=Q>Uӭh$rrG1 UL!\{OF0xowŇD!+ؙC@E[VDwv MUvàz)9HY +FȵQQB[p#&1D9Ի|87ofj $V.9n~[[-Vb?i:3݉Я _վnJMo.LӆW/Z+nTWv>c)i,t\.jeuI4?ČNꟊ%@{>.U@X3p㪻nw= p]wg3W3GML>#f!\+Otq0l9 X@ %*CLg RQա_,41!NJyw<p94RbmN A0zK+ IH9Gz[^ x>9~ݏێ q +0uE_ +|TE?郠wjR.]wd"[@Kj6͈YR)^D!mrPM?"Ui}U01զۃY7'g e42 +=%lFI. ^=Gbh^;qN67J=ĕhWxoSN/5 jcYPoX7 }I!Aܰ=PnHjN?&>8Y븒a# %UI*֕@u|XoɚZt-Ax,KJG4awD9?'Ļo,|0 [ߤ8BmSvJ-z&js'.ZƘg-4 p>%}r%CR~J&(C[P&f/Q]gEMuݪv;' n+Yvrcs\<-k%Q0_ ]D#8"$/WoӷyJ&. 6cD~,pNiqt*^Pq٤h)Bϣ"Ql4ƕÀ_a7J9YYg@<c&D7@(`w©顓]'zN!I6ZWۻHH GzclG(m/N?°dd^/v=$myΈڟ ~-ȱPfq4hJ?Sf81E_TkU~k0 hl)hʀ5" 8kz6j>Pto+7AD\L+p:!CS_S+Nx+,s D2߽aKU!60|~x1԰а(4JR]K/kB +c` wi*OHlu4 1CQߥ|R_[[Bƀ9(y^~+Ri«mS:ćq껋A 'WRn ÝIN}IlmS*\ϵC}@) u0yr=J݅/RHUZPj܃26"_y9$)>%>fA,)u[t-]7 OvfdM>AMn9g8U YCлYR*鵝ԁ̦u?B6wdMB"M\-̬< 㝖wY6#BzUA|t-lSQ.G>S٦}M-5Ir=L_rw$=V20 Fa,8VIZ<2i SUZ9x 87_.%`Ufo0,)ל㞄Åah SXEw1mbPF:,Vqd[s7Ms'WDywg](b%Th7%k_gy|ct|E[e_Ѷ$2KRƈYiڑE_( q>6u>eʸ7DDIgXʺSAyoy("$xމr֜Lg6I3N-ڤʒ!Iu-7w9h/n&]w*0;w?6qԯݯ!aLYįtq Snxt-jgx`^݊ŊYn4@&œ zwS͔h~7+ Z8XE`ٝx1,7M 28i"ɝBt$ +=/V]/k+:V6_͔Β +Q2E~dHqF}9`mp<1O"4N3㮲k(\W:epl_X8^bKëØJ3V+ہY.ߤ|+8%X G6>kً˳W$>{`$V$a ɻvc XZ)&ݴ) :۸/s24T T;1QǥH"O=8H +TT.n:dbݎ[KMx_%"9U+5z \X݇dH!)=^T%>kL87Ow7RA_?ҡ-_2Ӽ:i9w m5 + r6PS +=9Jzl@tRx'׼?u|mqq[7t1G;⯲~˜Q)\u$SDss%dzvGMQonȁPk #/,.UWf[td7;2H>|):r1;eEjgvc\RP|J׋rDRѪDΥ'YB#Vs}R|Oy6iZ`!]_SH@&_@hhG8To81C]>JY; kV,5=)(& +M# +p-)$ &MMS9ch pt *6M)ƧIjƃ§Z"+#Z7R[w[҂|R%pk<5s73?u2(`##1JDhBG2Tub#SQḾs>ɺ:<{ +D0jr 4A2Pay_ Uz}۳([#0;sk,$UiVui;ǐ{/3'H,%~M+[l$2-JKB(, t+Ll t*;'6NJ'5|}"W۞,x @d TI|te4XN, 75uKSk^NTrV0_BJ6/txV<%n݊>Iq^LZ xïXZ],MV(4.)ꧫn,bKè0xZͿ{ qVK236P(V(0p%,G`+68M`Xk h.`Mcq‘3CY?bf ISj +uUaݤt#/C@/lE P$(0UV#桶>YR +âU_7^,fCI'=JL=ǡMc;HmO],GK;SwR +ǐ]jTR9}(\z +}gicqlx3ps:jW7:wdC_Ń) wZI޼k5gnH Zћ%Wm4J౪ 3"K?M4_j&=W z N;K⯳AKV7=G!j! %m1οWJH&T*;Np۔5`)_ @I@e>I:nP (̣lV(EgsL ۡ*fT-eڑ:j,$?)t9T +I^>aZ_%:Qmi &4eJZK.z-iOi)/㭪"\判u3@HH)n6dn +7Cr1 +?x' +I_Ь0-(Xɋ-DbVXXToCh[CWJMU{K.+dyԋBԒ.ә4PޛwFk9U=sz}V6ݏ Udj`p,tGX;E\jI1.}K!KT~P۷~w-eƒ=.!sV \p+"P`NZH@8jKBբppIŸ;| ::pU;A&W J ̝?qЋ=+^gzko}8`o< +t*eiY3[WNf%БnoP/W(E{hZg_[)HY[*u53ְL*y=$:R\sGQ_4{?<,EFh&Lhrs-;$t=nSJ!5a`?,-l~JEJ J&FI*H.Ґ&5jHzܑ͓5** +f_NPuuzw-JI#-H%]G)d]DAࢦD2 +c AN&vDSrh$픃{,N߀hx+O="̂Z;yԦJ:.q`S)/%zN!9KBACV&i[/5!Š~Rqw&|TWK1'o@y8!U|NŞԕEViZa !tԏ6QwqG[> 9l?K͠rތ,l&0AUC U@%_&Y/[\+^E@>rvb^δZ jOT5ɔ€@z"G[jQ5>6|6Lz:׮^RR*, R3WQUakƇd: # e~JU;z>&y`^-wEӅpBz\ .#LsNsͲDseԻI#Gtq3wFa| \>d(G pȫĹ+*==۲{ܶ~ NU$yajהϝ>% ^LGU5ad^"lj:mo,e0$tBg[ :WOE#]2yzeN.d7ЕCЍ;bD$C%ijf*36vt|*(Kja5ץlr&gጫzV' +uB]T$dU"\tw&T1hhh-ǵԔ#k(R~h`, ﶐8(Ɗ60<>5&Nտ@嗇B:?`+, + T5`t6k>0lhUWֵ419rc*q4ŪW/ =M'>I97gM,f5Gtejo+(7EUM^d>}on>k)Sm:DGzt|+"u6­ ?:."bWJO(礶f<9 gQ&CO^ 9gP [;w?Y#Gk +:W +) 2-;r58E/K(|!947^ˍ? 6A`q7<ms:LwlAA7 aO&=(Hs#lD!eH2/?w!:*j2qqejDԽIqa)_4 lOt׉&ՋO3omOg0KUA)2@t?|E,Mx}(>ɺ0B~Zs~ȴݪ]lsMQxLvaJC&whoi}T+lt2NV(i2m$mMH2EojH\$fA)ƯR[?tXfP˃jY j Ԇ#7"zOME|kӦt{6jĶ?gfgt/uU9=I$x)dwQ*M8!8#Y(q6 VJ +2M eJ$7Z~ozܻ-7 DXT&yOc=2KYEIq;L3X`DGhΘ)!C,ۛI?N#ػFrW|gϦ(hY%Ƌ4FnWВ~/rO&Tf{Q*9jUz0]BPS!_Tu )ŖR=l5H4ri?* E%G?'[FV3t 2#I#|ClKXNG|D3:u@9Mx I`&c6ŤfFGfYq Gj>rJ*T OsE YQ4<茿 rYa0FS1qgg52U6lxvBAJ&~8b>&yÉpMf'mOkĿ?`ߡ ͆C-ksShtG uR Qa.ᙐE Vza_(a?Y{#^w?e:v`[Yr$LsfZR-_.FuF$" +]-=8+2 f ősZ +?eQ"tRqaU{|h_ͯ*> qIO/Z"kE '9ԍ2ߚY[Ǔ<@~ƒL@CL_z-bސgmĿZ6N|"VvpV>kIcڗlL/:A;~=WtAtwPC~Z!(!"1 2UVl8,vrW䵔({o";P}cs5d8%@8s9!Ƒͪg"( TiV(|pwp;0[҇!f<Ȏ/t OJmYC֯O:J"YhUKI=$`F(rUc2Br̪(@3d%$I:tG[vޔT'DŽ'}DRDcיu8lw|)jVQp<ר\V?J!!}hhJFS +ɿp$ۋ;{sc]``Ie1f%WLirNh|vM~O{MARYF ORs c%#y-I51]ΞqZ6e's[F ^Ԕ D+$+.$WX p!_&SWo+fU0:G~/?L{OatMs#3Þ}LWyF^wDMl2I4?O0e8̶XY)h2:UW7Ԝ MyrC(8vܻZՊ!kќ]bMJous>3`悛8 T!'66& F(^ >~_5?ͬ`r+S:do >mum۩9㚈תLhJF!_m爑NmCǓr~=?ZHdpv̛wR[%15R29:b O]m<?P-#ʣ><$5S7Uʟt5@$vwAe(G-tȕpYzs:ZGwѕS܅ Jz`;‚[+HU"7X0XKҩH+ ޔy[.审z: \qJUZm2u<s)cƹ{OeS:Eze[N <+E;XcͰ] a|T 0 $ݸdڃ{kK0af2_;󵵴j|@q,4ډуp +U/obFF]v&/. uG w/^*oZ3`EE6ґt ^jM>._|,_ᇵ4ύw-fb⓭VzNp}![%e"Ġ| ڎE!pM ;)n28jo'K^}UۆÝ<i .\B;R }܊]QI_}q š(7|y֣ 4Z9‚-L\A_kqCH4p%7O;(('FG;ZM%^DT0ӗ-51ްJ/ORC]қju."ykIJLMVENѯz$$=-AM+u7h"6w~,Ǹ$uGPUruf[J`+Q/Kz_rTErk5/+ÔOzL)UNk&&<ۈTA]Wg |.ݔ݃Pխ\=2k;./;s BgPMdq.7?f7<E"}1S“1ʯBC|{(@ +U4(k)#kPRggXbN1"S^1i ^!@;*I6~6X)cb\hXu 8]jA䘳\C$2~B S +8+|;M"NPqpF3_pbSc9 ~56okvi`l"geNEf+f!Ȱsm? {]'!/2Wu:yժyijjŬlS!XBI[i2 V7%cT, qѮXD-tWP1S.5wvgC 0 +RGd C }$|em87QQ)]݂0҆mՁIp1}H߹_z"əmV;Mp۳Q)/]#v"tp"gSV/B3͔K.>BW-8ي_X&`Jw#6K -;۫E}sP13#Qj_Mӄ[Ő 031cqdQNJlMc9:YoA+Nn:ufSiC! >_b3=e" +' mO GPAg*)?QWUHq1X[ GFҷ/rQpz + (Bi[3U»)'F2mA\qnW- ӈj8@jqE Rv*bv55{v`77>Jf%`K +8?O޻3:ԶElgz@ImqLT_cx i,J#3h8N N=M=9mˣ1f$X+*cᎏB,1=~ cn΃C +KO|/l>X^?hRM8$}d5wq;|)49ϗUPX!r Œx }܂5F=e* +rI齁njةG2fwCwTA-H[}wxAvϾ;Xؿ[cKHF&h"j'q +-ge&{{A.נu:qrOS_ r{*!Ќ 0&(UbEwpeW2O0qnqa:\[% 6)f>D/؇+Y\\;oc>XW]QVb5bul<`?HQ=˽Z[4KU_ɬwM98hswgIz>\ŭv3kG*Mb=lU7gN^''$AkWo1٧'-ä)om&ș g%WaBB)&H{.Sr$("ȆR0` zu3|3URPÛ$ym;lOAm/6iZk#1ͅ'2Q޵:դ2w_M8ȻWlE;ə=,:-xO19ۢ{=jgGOCg(3~sLm\1hpõ1 e ^HZ卮Hte:m|0e '1áxvݟV{7dGORCYb !8xg_$]i'H<`MU?,g41%gkn^T"|ۆ/v^%o[\lKǃbϐSk(b+R%]lP%|z"/ū {Wѱ7g^Iku7s +Ż@.SJOA/ȴ>7;O]8אPu„=G`/\Fpm]$jKh3#*flY{mS M-݅'ǹL1J#\W3NçS+i/H8 /BX`_Q\WٻB@%-ET \bIgimlϙp~wζ;Bt"ѷEȤnnģO".l7<yμF{s3R2kDA32)x!@cĸ(pbƌ7GA}1gu΅,xIn)aŇ&9 8JFC1u/? %...L@$8?yf8sU@ y4HW֋Pos2dfM$Atb{EpqԘ=LNNWUkC!J(nBldRb=5H +rY@u/wO<ŗ{VqW/?1RO.AtP$-4 +0˯X2iChLiJ] +߲:dc/KiG.NS5k|w1f` /S;z͛\@#TSuq6?bMpxe3hPtqHpҽ,+ -Sd#0lWng&F^<ϣ8wvh^%[Gk{$6Mu^}\awa.Qlh0xMk8AP"DTG r)n7O,Jhi3s%;4wv?7q/V gAʻ[!h,_@40ͦlldo;*!-02!,dtvx*I`g5?΃K2  Ho;pJܑ +ntU3'$J⣺P}p nhϔX*)u\V't }r  +pǘ?SK;|H)Mȩq6POH:`}K/䈗-,q]ٜvff W]B,g ^ֲhqBM> |:hd*?~NђBMxQKs%nnm5ceQs 'j-n˯ ʋq;2){~@\5[#.=/r eM>A0J!\/ w裗84 [*@cg T|r< ko?v\8KzzY +FH\P/+JN})ĐW ڰ?ռ*`ǽP> [7I+.bKwl4@ +J!޺і7(9U\;܌+P{'[S=[v57h E8С K`* >T vfΛSS#JqNbűyXE4RAU|ͬ +X{ٸoޘjyj∑Ōxwi^6#"Sslh/48M`c.k:q)qAQ[S8- *FSl !X*+r'bSws=]uvGL@n+HK)؂WdMiJnTWUlQ96TkŸCwJiG} [R3_C=ցQƱ]Z:Eo\WlJT jo=y󞲧( @_m UJSflOYjS_jm@S +gt/y]O5&uAZ6Â6]sx[qZ 7R@׆'dR'wЂEW~mr3z6LWE rUTT7p +S [Q% +L3ћ܏c@her+& Z{Y +)3̼0* %=`sw=Ҕx!'5?6tViLd M795:P4]76udi!{ , 88Qm.X@Gml0^<70)Q sK+Rښ 'Z+qG61,DӅP?"ՠD^"g:i"ֵ0o:j{t /d5/`8=v4d*D;ڛLJ3Ts:/6|,+lJ 5LVuɀ0>}Gg_=haoeBE O7;+Z [E^7V*WLM$V4g7mϝ)WVۜ+oa犊Qɮb^2߻=Ȏp`FH[-gdsS~KLB b&ee^4ŕZqy4LKH*a]INo 2 ׬^ bzao~nWZy93f L սO@ S8'L1<]N9b`/a%ػ0I:>9S[{یvCC])KP qZMȑkSy TaxݣƤZ"Խ&dӹЪ/]=Ede/wKGb ~1 x8٘ݥԟ +gȄ +XI,͐c*{"?A~o+ !D,4s3;}@1 5qѝ]EKL:Dҥ 7|g `8Koq-A7|k6%^X!`AJHU_t5`8)M(#2r2 g&-\94r]DLlʴ a(>{t< e)l1]-,8\uX`r-^ah'KD\}|JIΜjNpb*0ܱ<#U 8đR:Uk+ xnd`KL|(R0;UB4y]\1Mѭ_ +endstream endobj 188 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 63/Tabs/S/Type/Page>> endobj 189 0 obj <>stream +HWM$7+u5TTfBQUb}320^30ぱjbgg)P{/^\_p>}~x?9\.v_nu9`1a4᧳13sZ^4ؓ r7zZ/~Ã}Wh6 +Fc -_iN 1xK|7|==r`Ii%z._;HҎB00^m"͖([un-+q;si\SgPXcjoVt]?_,F22~li|rh0I9qZ7aQDBa=mJrO+Z +E *ݼے+/ ̦RqfT7H$eʇW^ 6pz1OJTk<+o,4@}.{AH.ٌɻ!F9ì!s93>H7wfǙ/;[ׯi7s[mO&'fӤ˾Bc!x57{ +Dm_ ǵjꑌ5?mQ؁E%{5uVٵp>rH.}4.4թ'1=yrp"xlzmȺ&jwKyU)Fu!j+՞+gJ$c_IZ'6lj;>J+REWIs_kį~lF$yz.*TĂ +1'tՉlfPҒt(?&{`y?. T`\:ƅ!D<'gh l}T}꥙]WN9=ζ];3id'QC;%eMق9pE -4\ +m*;1f[oIb,y 9LtaU ͼ$[,kUblB$ L.w0>7by9@&} I`!6ݾzZěRFAٳtv8b JȶtY%t9z5vb2>j >Xq̶9ۿ/ +endstream endobj 190 0 obj <>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb + m!1A"Qaq#2B3Tr$CR5SUcesu +%&'()*46789:DEFGHIJVWXYZbdfghijtvwxyz?b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb"$~gR| j[x]C|{m=k"Sڰa۱>lN|pT5L@ 'cg3%6ed|bԥ$t&b[+`aR> }DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDӵb"'y}Ilix͚]ly^:ZyJC^Z^B_zVG zN?`Qzs]61,ܩ-7O9;K3ߍqxXȵ~vfh9Kbqq߂NղW}h*UQĬ<{5ޛu8@ވ)*/%buٝԳR C⽡3H +|2'ufe~WeQUޙ^*c>rOu::q]vG@5۹r]NN?OZ֢7Q-6>rʸZҚW@L6?Nhū !+d(@(.e9=ÿMkvUQkj_zoRv'x=k- {x8(uPTGտkYFߓ@e-ZA]ϐM]C<]!< TRsOw1 +J4ڮ%9%7O{-ײ6ʾ+kgD1HDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDԵb"$^GLɯ%pDkUbCDzAFnF6s -B4}(';~˾GR%膤dT)^,Am]nznԬ\޷_3NYH-cm^Ewu{8*FΆdq4pAϵ}{vߗd|C|+\0 lo]9򨺾C[[Xb]z}oej&lf&Ų@R4U_׹gKAEy r[XqdOe{{=f5G̨*'C`od&0PlOԋ],m"#>@`z~9zu=[ȻSN萘^݇oO#Z Rc[N=Cʢ +7jQ%Yv74AsIM1HСIxdw⾅x|Z^"(UOw޽5::WIWrͶnjg{)seRQGœ%*(Xy|̾q-')XE |Pi'꒸*DfU@'ZކIşȯ*7@ +F##}wqzl'U@y;l0>5vYqCmr}1|5/%܀ dDܟuĮۆi$)Jyw:JU/t +ѯ}Ə}M7M[n{\rmo@ygdDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ׵b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""|#}ǧܔw!UFIq._#M::DL?8Eu}NDD0@I:lM8ʋRF7&ou4/Pk8 oa_Wӊ[b'@l63r*Fb+~"wu\LNEN LmBē>ՃGpf֥,$$Uj^у+  BmJ + ,ēO|YMb鑃/o$O0Jn#fns14ۗM.R1מ|b"'Ŗ*YP< LUj^у) ?sSdֶ%6R}tͳPɭ4†+Ē&_UĶ֥/YC#^{Ef ˏ!^[מslDD֎ Fl-l{&)~Oyi= K,yLOrGU9тjW˗vSَ1JVrjߏ`TL)nnW}u-Oa >rȩQy1!H ߂GBtZʻ"8 Ϋc_m.6"Wi`n Rk +~; 7Ӿm^e)ש];*Ú)aev/Go^dGWch-~5VZhh*'xzeV:K{I;uB<EwO~Ft~X5ҭ : wGJ^EtDYBC=o/oKzBXe33pGچ3UTwbA,ddF@m_C$u^ҸNPRqh!:=8}PtϢ=>%EYJɘ 4qCb^!Hovk[ױtFB[J6lv3^O^T?m!R=f '3U8uC2v6?Vz?{ӓacd{eXxf*Il_OxTX_`N\>@O>YmuACaGf0M]9M]uXYwɗkʱANh<?t@#>{;ʧ{>2j!1C$QˋV,'. +lϣ;L>X٥qĥkWhG-ks\ΗA|ߤ% }~J[7g%5X_+Bww;,8ڳUXv= +S5#HߦRV[VnN^$b}jlL<̗µ[ȱ ($ Y[ɀiz|kE`{*>?$].ѭX"ӳ!'q+KJ[M.,`Gf_5/8H~2%MjOȷ#fV5Xiam┷r5X78KFjVCdc +~?If#EYӵnh@?x2_Ht>T±`涎gWG\鬕ofR{W$S3Wy:qsY}T۔$Qb_%r@[a~KKeTݩ['H +F5#}=:ޞT- +]SzV`uUOI'5t-p{Ip|E_ncZ?5޵μקVYv#u|G`fptj+Xǹye\6) ˭r$uXN9, I&*,[aVua +s)Z`.^3p|~㸝GԼ3bX[rV{~St>rͻroLtzv<{= Y"fjȯ + OHںg+5YZe- |A]qµ2jc* wޕ@繫2(ĺ׷­~vt^t +KJWr+gRv?2܂vqԵb"""""""""""""""""""&{Ra6ƴӸ$} H%c#cyPVy7-s8)+*T,[m졔ô~lټPIUրf$/-:$I_M}= Q$y7>zNS ]E+_ qƿ =7Fz.Fjh$eunOSOjJ҅vpy3q$(ֶg^瞵KRJ0So_ _;`{Q oxxY߈@w۴i`Rk]plw*>SUX닟PKC棲Gܶ&mngVL|J)v%o_2utX]f=U5wQymu I:NN[^uF]llbĖ' =y'鋙X6]+ ޴^漮wucNG0^}:M[fێ|<-XX )[{+3ӑN]zgI=CQuuT+)~(6$yoC7Ӳ?OUteunn؎;M>|잙Ϣex_%Ve:&|{IԺB-ksPU@39=K҅G"ʇ{D1gQaS8&DzK*Y[(XH h&=A-x]"NBm @a"CY2(`/F1|[n$-E:'^S+ٶ~Ұ+7;R첦c?A9LY}7Uk--c%?NzdtҪK[eJ.{2uֶe9'azjb~Q%]{;iS$}S`N_NlaX +ůDZŹozw73W( %aWe$~\{k/g=^sQbFC^Dl|D=YqIIѹ6I 5{#pɫ¯T}oNvx|n=9=o1*vFdyNNг=ϲJw5ʛַ}'3+[(xضR)qą;_y?H8՟Zص_m{?/]);7ǧz*-e`ĺIևO]W.ho^[ιD=vQc I;˫.BK9qח&z'vmBܔ꩐ؗSO7U|f6-#d/O9Ou< B3r_7 ;БO_PU5f K2n +pbFwߖٴdCn">=FJ_ir%śt|f3fgQ篡ߌGdY8rvA5ڍ&hȪcexR;325SÀubaںQJ%67_RKK zoIϑEek@ gd <NM`V6"R +WeLCuym+?X-zV_86/y5zΛ3Ӎf9e*m5*;a; *JxčQY:ZE}nCtUȵ.ՃdWF%EX 8OY"я%``_q{/FF5XIO vY1OI=#ц=k y5V}HqB/lAU^?9^OuK1#:N_gRZ%JIPD"Uk] +&rfJqjX 3xz͖ul:YEe: ? e-6广8Uũ X^%v6;l#1GRT"jn V6[ȃ;=u^F t1]eG~f=5^Ϗh6: Ԃ.Ej[ߡ֏ Gi@DU ΃׷qS" յb""""""""""""""""""""cS1LČw d&]5wV]|8~>KQLƦb&53Fb"cS331LƣQFS3.@%X!Fד/ =x4$kClUߒgDƦbbf"cQLj&*s8xիpŇiY6ߟ&J5vU >q1%IPf`@hylvu4ba&2-cv=ُ|DςK*YUnD};㷜y^|<*;]^td ,Y+`_/F!7ޝs*Ƽk-dd_H໱ajxECkMF7?ö뱊av"x]kmOAJz핀k}T)LDDDֵb""""""""""""""""""""j9(Xr +~]ڸp;w_Y9}o_ ϲu5ULxR~?l󙈈*r|u>""""cs1U95dU ?, |4;D5]`{ +3tQ~GV1ǹUkoYI + kSoHoL[RNtNlȮʌ F=|Yjҥ;@`2Aw}DDeUY,HPH;|IЙ7q3T ujXZb&DDMMR#ay_{5gQ{Wj3/G}woDLjb,$$ŵC!A'ܕf ?o2jAOdczM[ޕ0 u篫sdDD@׵b"""""""""""""""""""&B{5; 9Oc]EQt~(__G{7>tjmR-T|FIAwV}[cU0*G] +`I2'K ng9x仨oG[y躟T"-u듻y(އ̓#34x5¾`N\9`hykm ̌JQ:=%uf:^W]߽cE}޼Y9om-UHbړ7>_KXgDD]rwcQ;ymA Ʀ2J:mXԫdA 7%\>=cuSiVUo]ӿy׋Ա12M_GuFc{H*Qm\ue~[׽o+]f0!Rw>=dd`uRF]I|n,b_KRe[e`&7NOHvPmPROa8*eCR.mJFl}S5vV24̫S #aX pc߶221i±~NXkSk*r km. =O:f&cY[lgKmunjU13RڟMHYH>L؉:W۱TEΫtGrvF)EWp8W|;7bmQ]_ U_ 虎ȥ ?|WF5W^*-,(5 (fPOvA>^r]:멭vːk8wy;2G>qkw_@Ǿn_Avىi{-f5cFHNi>r +,ٱ[@5;s}jk+m^T@w` q!=7O-aF@/ᜍp2r͇YyUZR\$K2q_i a+:ҚUX_xTֽիf#1RGRG3ޮMӏK\iȠDm^R^5ݙN0b=G>>}Kūcc&ӷv$~#1(kKۜ2"cc\n"/fjRZ[+pyUh} g.R]CG".)u 9|_0 m7B}*( #։sMнotv kc˿h9MG:uz^6Rmv| UX.Eue}Dn}D@еb"""""""""""""""""""'ˎ@U*5>%,4M[ùOE^ج-jg44*r 5wuaұulYОfI3;R'@ghNEk8E9@'LGcق#$x|ct'ut/ZlC\eGOM\nm]tlg>lKb{y$st [rھ5ۛs[*ؽFߞƻz^tpK(;Tb56$]2 WHvoD7&|LRh8.O,;5;1Kݯ P loΟei ccdTk Q ţ&0DnI5ec|oE/L??udOjg ˖7!xYRIL+eG~IWFr{?g>nN/ec!K.Շ#kxubauIu,J^SB[D0+BŽMY$XVv6s]I?-v/*[_Lo $v w{ӿocL\Btunv3*o>NO="r+FkSA$9k;tܮuXkUM2_ x6|}9t>%|tnrh ީoRJ,r1jGD(lGvfPTG9l3:Eb{ÈSGG{Ǘu9]FN;5 +kW 98%svNGQUqhl^]ۊrAJ3mV"t^11=Mrv +[{2OLnE9w{VOA~&}B1Et\@c܍q{LGwVǫ +YI*V^sOPͳӓZ%tpg3]ͽL}'t@7^ 5/ղ$;ebJoM7R?PN1Zqn\~?٧ebc=:kTh n0<̫nlɸZB0䣏mo#=&>:VkJp# }+>*!|> rzU4PGƲXU%tvG6?t>q=K: +̺DhR,r,Y ]t\pkJ}- }i:eF^1johN :3Q&CQ)@i {s92lZ5-YU]kXS_j<'<޽ΛFV>oTn=fzX%bۗmvc枇۲^o3rfYױP7m}]m⮗mG=$>F2UNk}Ξ]væv ݹtAرX)3#GٖyVv.NhϤɻtֆMw{@.#>zn6G@|E/rߗe:h=qľSp 3+ ]F/ٺ} vj1Uȕrylhy;ߗKtNrmq["|5`'cr/U0+j5nj,cA#zn:uW;׃3 W!k摌 z5\ mFF{}S Zk +2lF:_> ;z:YN6MCYFNH <1;qq۟^ul8`NIY;콀=mCcҲ9i5;{&.E|U>s N;#Z""ѵb""""""""""""""""""""sUeɰl o%{]Ǵ킏-Ȍ>373b5FQLj#Qǝҩ [v|% iNfǛ57bOoLj5Ljk>*+;:?YlǔXj` pAV*T%Tiy=C4S]Yh{}ʏ:91jfcQLjfcQ'̴`*)UnlSw3vj5j5DLj5Ff5LT֨ۈټ]kRE +@~9krf@&INNkS&ڬrOK*-h1 ῌDDҵb"""""""""""""""""""'WKvW\7<}"j vogE'Go= 0Z͂1Oo*p}'IpC3*Dpgr>G_W]ǺܚUl1.r!Ĩ׼>h*{, R<خ{ׇ^h~+: #'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDӵb""""""""""""""""""""yj#?cfx2x#`s'2XٷC[x 8k`8ܽ7(Ƽ6=bxl΂db{|OD1g*kZkkd/OxR3?Nç' "j%6݅kTioZeU}R7` &""""""""""""""""""""""""""""""""""""""""""""" Եb""""""""""""""""""""cQDDDDDDDDDDDDDDDD7G@F~ Pl6|!A'R_ }An EڊuƢ}b^#nbSVrַ>5k9kV/2`z@y>_3>"""""""""""""""""""""""" յb"""""""""""""""""""""""""""""""""& aZ-%mUߟǴV[>뛸( +Go?r'=vE=w9nGtȪ𲲍}gzY*=~b``&J-eaA"l.詚 +8@_9 % )Uh?'BeL1K*yfvlA?]Z||;&g˸At>'N/3h;UzF AtgFEy*Z uAX3dL9̙* !;]s)gZW(tX1S:=u?vuM:DDDDDDDDDDDDDDDDDֵb""""""""""""""""""""""""""""""""""yor0+ʢ'[a!A'G]5k[BXH`6_M:f.V]gv! 'dX͂& ȟ 7doU嗝>%W~\|Qjc+7Y5B466DښŒG,)#NǤӘ,NkAÙ)`1yyuaVmUΉ:&GJzo3 C +@>/?t 7#s3{~I|Noo?=`2ɾVD*:![Rԫ9j՛o~{ۋ>Ȫn;cϠg?SSNk_[hraliY|cvA7U*б:[~%P= vb<&.-UVK(>"PtH孁ߑ^~tlN*$o3y,VCs|Xx/l9ؿAWBIm/.ܴ4[Kyr;#~2&{;~I`56ǹ,L8'_gDE}Ȭ895N]ϴы]lQc }w'ORλʅxpn`:v w~חV%ek!۲wg'doApxxV?n[´ߙ!gK)Qe}'"x㸲bf<;$}MjfBSf}8יe<ڴmG^tzeWTlz묾 ^; N}sKdedfd`Rck]X+(@k~` IʪݝC<;""""""""""""""" еb"""""""""""""""""""""""""""""""""""h|:lodSb|)",^] ѝo++̬jA;̑h6,{1f>SƷٕlBpNA=3y(5|uFYZURf.̈́)[[JەEjT"{g5'ulu]0M98tpQ_!20ԬA+Mŕ-YH b~J͜(,vvݩˉk|Άv +;|ɝZLDDDDDDDDDDDDDDDD@ѵb"""""""""""""""""""""""""""""""""""""""&pfwPF$R+-b[dvԖҵb"""""""""""""""""""""""""""""""""""""""""'Ԗ뚆ǼMWאPî9L:Så/&m-,Lӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb""""""""""""""""""""|YrR6|I~s19\.>gBdw,dSLf"&'Wv0m1S>>yp;l0Ns1:@*W$U'LM_R̺i +_f>6r읓[/Ç~ l+wj[9!a&wbm v;yϺKK`xވ?9kK뱙e!667͑1n|gܰ:S }ibX`Wԅ-|YjҥIϩA`<L 7f& w3յb"""""""""""""""""""&Ħ˟QԠ<؃bRrTZbJV|XU?~^Ap5-|:~7]Kl-E5\ؒ 3 6[JSq|vՋ^J]~ ŧ)XTmܰڨ]/Y&}]Ou*Kh,S0e$oAՂ0i\+'-}&z6_oDS=%Y/@eSuŵ1п@@.KoM?SԪIH +)) >cӱ[jwT!W+Y47}{mX$TPMd|İ ~_U]V{G";rū0zlk[/ mO5Fюhme (wRJӺ]Nz=n4tTH>]?`Z~Zƺ?owCUjlJ;m$|^uRJG `Art&~^#Z}TZY]~H~Oon#[:r$WF~PYgA#bWr-u X*ϗsx&s:x׾:Ue]j-aITm7˳8݋mu֕]C~-k'iڻ(mo+ O/D˗]e3 FZ|=K]|Zl XfM0'*ض)A`TkϾru~^vU9Xz#f|قv's^?x^Y^kfa˿}j|u~a .=5? +̙?K]@Abl?2Ūݟ|@;'^zmlFPIR9. 1F =GuZMXn79R跗s'n0E(*QxX7pĝm`g^>3m`*/x`7?ul/_/v]W,t P$c[b>S*Cɾ\JL)AyHܮؘnT3 !BL[h+#@6֪C$ NN(O.]lbż3U|L}~!w8̻) +4<]jR@:a^D@ 9~%JUym=0jU,JU :=yi=OS~6;U{ VO8y=xs:~x\kk kcX4GKBv{+wP {roZj^gTe5ˈcPH'ϴ>Ѧ7O˩_dqee]~Z ocY/kx#ʇPNA>GALD`/E; +;dlvy=~)eG΁JdIDBkڌ\{RcO؃[d*Nsu9(jy!qPN:;Kv59Kp >ŋ+ l ܉ύ11w]+t:G9GY֭j6#:P +;*X/c3Ed5:[حVϠ{`o]DDDDDDDDDDDDD@ֵb"""""""""""""""""""'-ոYH Fwo tkWT0@JcG:~g9a9Vikp!,>76~=T[7hDZ#1=ݏ]ϼTj- eTxg<#+78IVN !7!/tŷ5i +X`Qj:=S?G/՟t ކr=WMדӖedyv殦wt3zSMd +A`o~MCqOu7M+-M`znޏEjh4-g6c-}8:zN)҆ʻ +,}ٙgt,ZaZp,kʽnF Yƴ4|m6e~ IrM`xjo[ +;*zwK^'8/W>=` oZie붛3ZlͲUA~S{O$kTo4OU|GdV.j-v޻wCĻd=X֭ G@X|%qowbUǒbcR~m \N=:|%"@ sq*ǷqMjފor902311 SbF=Jd_nEvM(1`*ytA6yWPogOgMR4@l6{}#_N-[m2(A9v$F ϻ\LWZ"BXkd'C3fo%m:HWųboX<9-y>`ЮeUv*!|xϮ-=*ᆼeJ[g^JIW޹5i8@A]@@$ᅲi9#o vY6n/1#x·I{ϼl^]e7 RA?)+u>uYZ^ #y:'=;PdY:GնYi!l:#~ ]O 3cL{aPJzҖ:˿VM!-(iA*V wImiޝQ]J]ONJ:NKoxzw9cøޕQ[(_pxl``Bw߸)76t,粫,*[Xy +l# v1*55930cWQKg0F p[2uYZΉ YP>=ߙfgT&=jxZl(DyO-#WV5DzqkQKUܓA#nͫ.|-k6[R-zN)|~gѝ*^1ZrA 5:}Vً7uN{|+;=L>:3.~'nY]:D~{>r=O>krTƯ'Ȇg@寠;/˦.^!Jޘ6FSԯ K=\ԯ_chbJjա=.Ma!ƾq$Θ׵b""""""""""""""""""""cQЍFhFQj5ЍàJ#D& ?Դ,w܅]o`H!{v:N~>1bݝ͏|SjfcQϝUr: SyyM[ GGí>JbO:u9)_mC|؁vDDƄƢs].ʧ'Uڼu6өpSَ䅱tH98m۱w:2NcKڱjG_&TO91ƣQƦf&f5FB53еb"""""""""""""""""""""""""""""cqD䷫bQr{l.~s11ѵb"""""""""""""""""""&7彮Ύˢat=Qu;5]Ar8ٱIu͸XYTؿHW90fGy{t{k[޼/~h^JW*m h|dFm8|W Ȑ:oWá/U +V#{Ϸ[cԶtu9(lʫ-ض)ޙ2y7EqMH⊄zsupm4o;V{'PNtX̩޽{? 긹VNC\_o˨d=.Gmv߬u}3#$0W ƽݗާ'Ve4 _h.{d"'H=*7e|$P)װ-jr+ge$O=:RI5e#݀}2Џ7F{*$ ʝk +Є^qPON6;2YӟmUzݒK`ŃqU$n@̉$~-ٹH(ꢢ) +յ;,wnnb_b֗)g#㯔ԡ`K3:Z&B1;/`-g>,ut:N> rV*Ŏui݅GPDZl]Nǘ0ڵCc@\(WԱ6֡>D̾tP* #a):>,q)*RlQ +^wRNAuzWkcxTk鬱t =ٌ5kӟ0w>ؘ*O-|'-WzA%`.%@mo1]Nk2mţ#CUecA%%AiTђ%v+5m°%Oc3: +͗E>?!>Wc5#_ '@}{U*E7#;"MmJe=C6{Cl^(SeNY$)?EjHO!<,;LYN|kL:޵Oa7jZ6XraO=YBZez怂˿-Mϊ-+j2<>DQϪ=BZ.#sZu+1Uˏ0lyߍN`& 0u1V.uEl߰ ԱX|}CgX6ZMEmT:Vy"037+]AN3`׹ύիyeM~#(94&/Σ}*נyHΣ>m-Nc}_V(Sk` 7f%j_YJԪ糾8K:m6:$07P h_>9:5{eyh HF OhʺvU#%.tAQ|~r/rqdVŜ` ٥wۉ|M,b̊W +Ð, ]"ؾ\Sg)j,W;""""""""" ҵb"""""""""""""""""""&sS`*- -v޻~r̾gљuV{ ]pTV>gvf{UGM+x.َ mg]M3:}:Tm>"*Y_ 0VpXŖ/>to-.\jᗽ$>Z#z {֎m v+aa%@w[|#֣oVaΧ^"V~mQ2nޠxS4PuO!d7 >kdDz@K?;[n=8W 0d#k~Z^WU~VA5ۿ:={}D\Z=jj:G%K/Kw{jM.}tu{ +a} #OJ<$gOscA_z&j]iLFnҌ: Բ1drJH46Fo }_+.52-Z3/@>Hu:J _D(e'^ 9gum =x\Hd .OF8pq:qp!k:^& d*N˳י<D*ܗEԋ-z ijvS@ nf-;sn#Uy*_JΟ˯ur'Ħ{UU$@ܒ}'.odhedVFc$1:=gŽq:kQuXfU#k ff)Mz7G_Aocð}vaƫ;nA|MY_MY0,V8ȏ=lwFlȣ'Q~W)T5eO?7(K,o+#/B_aЪ»9X[ 2 U6:5\qL:eo_%]*u!#[|r@?5}z˩9,Nϕ{o.AvNً1[jbc]~G[e 6yOLD =F}aeblb~^kn[A?y&Νj5XWZ(VÐ#H`>NU˅\ʠJʺ寺OJEno7[Iͩ e#݀e^~]kǦ~E5Jsrd'Dr;;_ME9E9Uxj_Lś^&%ٕB== +|MӰ^5ĩМW/r:Nv w'>chqqF .H f{zWMt-5;VX xEz>ñ9Ywfbjdžo?Uz+ڲgDDDDDDDDDӵb""""""""""""""""""""|x5-vF R( +4CCCOǯ!YlE`D0 |j*DOUBSǂ{ֆ+*GN(e#Sb֨gLϋiKԭFaF;*  ` ϔŦ+U.v(}5HK(%N }HnyYW |?P*- ttH(?\į:(y%њp1l)+aOw/ܱ}ֵZQUC6'^[>~v[S|luwDOE}ؘp1'Cgϸ>z>_9*O e`>`Aw_? J:e v ք%HTQ~B}:-A 'XЪ֊P dcO(+/o.ôτo㡿>\kC`TcMjNʍucNAvt̜\؏ wRÑ~Y+>lmR >>V<0Z㯆1N5X´T]JGT(;L65NJ) +APT#2iBy;m}. 对[޿RYA?X)UdA@CdQXrm_|bQp#ȍ}xÂhw3 ֵJПnj`  +5*/kk>[uK.PXlhIþN cCG~}jPWR*(UP?2%`zz]kCZֽ55ՉMkT;ڪS>kxT +܀ֶ}UME kjoz<ֶh2qc@h{q(m; >}zzgT`(ݦ*Ŧ+]jPS1Եb""""""""""""""""""""""""""""""""&iOյb"""""""""""""""""""& =7՜%="% Д1^[+;y 뇔HjeR[ܶ6Uv6Ǘǰ5wQVbZW!~:d޽G}{7߫au{ɰ 'fJYrRHgA}J;vTKhNN.8mq ^IE`c%a` SGu4 Sc-jHQ罝I#U +9CwL{*D^nON»'=``WH?|[`k;:zWB a]I|˿:mmR{=}AJ"`|JBcm'&g+>P +<܏oq׮r3 c`'Z@$|:'ꇱk'C{هBŶ57RSUVX cs]ly&2'T76*}dz պJSU{㒎Bo՘oY']ƴod0t k]czjuc]oc_Hi37'/*i{ YOhǻĭRC`8aww[s-bu6_P*c]g)b{ dے/iZ)f!u{t5 :}7>M/!6n`8av>#'S-K*ôu~A܍]bRufC D'͝Rs T[-w-HEyO~z/U^K?/]Ub|]o0~I Ժս;'Y/J"Vo{qLKkזUu282;#Ϸc-ֵb"""""""""""""""""""&=oaVmt7>2/FctMl؀kE9*A=g|Ll&ϱ)%*e: ]029U ?`wהnMoSoel, ľm =@n 5+ǫuUYj{7rj͵{ +%Ty{!B$ Cv5nYLYpq;aW@]OĐgǷU[*j`}F]澬+{vL͑TV5rbcYz5jʢ +G%VzO6'پuzyN۽s;+,?~Xy$PvU{6u3駩՝nh `G/R܀`G܊RzZug>O`gw :mu'RvōŽ@7b`.X*uə՟oSXOI mkFޑ,uE ;bJvb,p<ޠ=? #d=IWG g!א_QXZafqŤ-]g]qJz-.35I}zT_/&?tzNoLHrؕG0@ƻCdP{;bOmr̔[b]orϞt4(ͯձOe%+r9VX`,P܊6|+!W0( Lu5ES / N llނB_ R,t^mM=>u୶t^In5{NaX/yKmYofItBY8iy4߯/j|tïu \~a|E$}GMTcVR;t3yjO)WՓ~=|>C\v9kz޼Y""""""""""""" ׵b""""""""""""""""""""Fg:{[:ːe~!`nudlǭnUPOoΈy'Үh7qϜN%U,}rZ$MϑNZN8ŨV[N?S/f%+MGaAF6-XuTE_ ?Y0q%~qF iXysQþFw&zN-5tח/nkI0!^OΞtjXvފoGjo8Rw޾c}g\fe +3 |1HB}g]2OԱƳ|lB7sUC+ϥY$A h0}_:1n6Tͽ5篆u9j|VA-,oAG%&"bbt$cLצY*b+! +(;zgz9aْmJhY|-XX֥ҪP{0[=Ӫ]@GwGĺjp _Ε 3v>8xU ߶{w5tn vu=6VFF8`F/$rij2$yytl%70nXB>Gs>5IIƨ֌Jl~m!C`#l|xYP{^A߇s+=ԣB|~TRSK ??9˓n^`Q=>`M@ǯf $쯑8:~fTܺ$9{'>LSRЊ4h NuMMȮ4Ub%K>˗mhƻjcb1zUnwܐA>C& 0q;>~N#ԴSV #ȍy~ wE4(Bh;y}μSאkJ k o>hx8YV=kU@'bڴzس79-oxY6l1B5P,Fr ٟ1QzrvVSHa)NlQ^_j"j[~dSnxij7ն$=7BdWbVFl>]LE31LI=b[~-vQBcV֡U@ +y8z%f>U9Ƭ]|ƽgNN 9MAd`wRsp_ *@X{kԯkQSdP6N<΅E*BbZ#b>#Fq[,`T`6bwy-:|oxkp C7DDDDDDDDDDDDDDеb"""""""""""""""""""""""""""""&&f530@`As11ʚBVRևmΘDDDDDDDDDDDDDDѵb"""""""""""""""""""&7f%D lDguٝA=$0u `AD+l|>^D}ʑ&p$&LʳMt'ULMwб*[UUlBuNF3e,KVܗ~#ov{*sbjbZ; !%^VFe"̊<$"^`LLFf73 s=kV=U9KnJꭁ -I\*KpYNͲ+[e85%RLG!Xש :괛<6[#}d: n7v]%*մN3r53.M_0`#b|x!Ϗ.;z޾&ʰ(V~FV񚂬lV Czޏt 'J;xX.<@{yθgƺ,(뾆 6J_Cjȏ7s3鵋,W`]HvP{ot7#X6Z+wKG}ݎVYhSs19[=Rn Zos""sH˃h}޸Θ5ڗP jLVm뒔nĎ#o򙈈ҵb"""""""""""""""""""'7RŽ6~) ߢ&Mȶc޵zå܏}@zVZfދlU2vOlZI6LUw.b6)c]q +~-ԫte6Ԯ=u~n̩һ lGTt; `E+/jp,oCnF{MESV67ÏH>ﱯ U7.bCkNv`[2lWMG%άF!Ecu鮷=* +Ec*=v#)f˶L wk +RYO=rZcӥ֘Y`6:dkObcjֶ#~\~!GHi20XWv=NR8V`~jpu>~VPlS.JLeRA \h/_O[s@`u6踕Z8AtwdAH(FIP+c^Dz5ɵ<?O=!j\O -BDT0$ONu+dΰkgQU* :a7Z8W j-A) רuZr9-H +V/5 o˴ol-+EM6q9<#y}snwS]3&kד@ˑy;t$']YsnEY2Zl/%CD7~ؙϳk:bX%Xkh;b:[:Oe{K1L|Kq݇xMe|^·͐o8R9xotH7R;xU8t?mfC;<\ dxvZRn('}kQX*G%!oO#ӳ ܴYoDVOB!|>RW[b> r ?' ְoJ9N y<s֛[)$8 Ԟ;`4=6|5U2ZYN65-o[`'pHEr{L]z-89;~'+׈'#}5Q2! fhOܔ;"n¹.6yH>yɪZ5vV-tܾ3FZˡrmmA$hft}2WEXkp~"he]s+/KWiţ:;h~v-}ba88kcbf" ӵb"""""""""""""""""""&ljy*4ȹ1,vf^;CO3;ٜlmc ժZۊ; /8:J=gT_R4FNGKl?m8 _"+ǸN?fOfkhȹ„A +ޤ܋:@ozdﶇ$ho&b/ɻjSP#̍*HtNs/T&52/\wf<!*I(9/@(ҳP;}R`j{.}7ƽ-_$znc7j3¶ۊZnc*@ev4Se@iX_)+̣9[BB +p1įS^?,KiUdǷ ߷37jZdYŭfdb\ӏs#'*Icn6vw7ߓNewIf'8 nUMZb轗y$ ;:]]-Ud|B&MpPѭ˭z9*a[#G +;K8r@vf;4ևm <_~Uf;?@UVP4Igjp_P-m#vi!-auc~"&iu];W]yv{,,3&pO+S/"־VQX@zPGbONMqUQk;YR\ʹ-=ýU\BƽXyWJqjE),?%#DGH`D!fnL<`44WSkMN-[A*T0 q9v>ѭ6}!fڝqodߑe=kJcs{'ʚ*|ˏъx +Jz.:әo68m@3h2` ^CMVw&27"ÿ;wX㫊X*-P{<YyI8${75-U@HFJQskzrs[`Ug;ffcfcN?$fwveZu I@k5 +;F=}!e:c =?yziONJ2VnW-atpb}_^j-Pgd)2XF;N]u 5K֊~Xyy|| x<eH!@ yyoG݋\`u܁5M^7%{kټ_Qp6svָqSNOfx[*MmRcؒF՝ɳ' +Gm8:`=Gt%Ż׮@k9(l?3>eك{=bvceq0=\\5&HqGfnd +mSfiN;d3[,wg +|穱z t\QcJ|w,Q"~56׵U孬(;b4̍Phϫ:#Wub\hkxx[}vhV*êש崕 +-gI%>;xF'߶˿Ձt[ %:~+ro\AJ*o"җ=Ϫ8I>NGCEw.i(V>`kg 9+um)7rg$_hl x*)C-u]ڶ2l_emd+YmF.+P4" Եb""""""""""""""""""""Fbuڳn]QoQ-lwԓ'SUuSCdkYrmo}ʭ-Mu 6 +6DDDNXa:;C> cR@'Ckg7:}fPu^npF*O>bH 'DǔsZQ}İg k6t}'\9iJ,Ϙbl]o:欛Sķ'} 7f+긴TKkW^]Dll Qے ]Oj6w:N&ru_NjںAN٘}_ +:%B[]TXN㽨SwTҫ[5V^˰^Zͫ u:B {""|=UJ 'D|{fƾw$=,A9'=SWҍr-PVsnwDDDOmZQUU$&pήPU⎎˥tq {w\[\w|?M΅ub@=>jȻ7*91UՋ,jU̧Lu$L5J|Z.ԫVS +NBo%e[e;߱193Ux1e˲jJ"h˫6Oש>@NeiE"T3y)[6^7P&+ǐ`o tVuDիE ζOU[EV}yhS'ψo[׮>" յb"""""""""""""""""""'Ṳ̄)H::ޏO[7{;V@-_t vmnKu\IBMv@wβ}DLճ0@ZC-{QgO2pMY:.RV ޫ_V,U@@|^^7Gy?իcZug=s';ԭ`QT=Tlo~̌lZ\+[M/1ĄpSGBSzZzŹ;`nVTwط"큚鱪F*]goyhoVfd3n+` +#]R2^MtjDcv;Gܽ+콬QU*@'Iu˰0mTd=֧A5ՠ@K-+W8k_m~~RQ$l(_>GJ5\ *x:)*XtȳVɯtSCoh@q×qNi]puT0II(멕}yUDn^љ{:/QK+{؁)דsd$ZV kDl spqoea"KX +0NS;'ʳ ҔdBڰ93]g@;>/#?TtC7Q(Kֶr +}$X +L%w嵞ԯŰ-zTUaXw#@nu ܜ/W*Xoe;^ڥ̘>ƽ,`tI$o^WV +:%Wi_QF\KUe(X{wטȬ/is1Ψ^c![D 8wp;֧@._^ǰ{SZKqS8=OF5kH-Z"޻dAr# ]eonl_@5_}b'Ѳ^޶ܞ/Ű#*Chb=x_r`(Q^#zߺAߞ#Y}0em:i4xuԒy`QpE7Y8$ykGGj:fzUsnH-M`/!Kl]ϴ̻++Ych(GiӇ̌[3\=xTAQ{wi/9X=:4_tטSӞtڵXaL}7QNYp >}c?5gH]~ZZ S~zu\wK\kW02$j90;꜌̮?G67 =z;Vuhl`TӟvFz~n^\T0#lwGȞvWYcs][L@6ԂGzk9γ4~1EbI:Qe:u&I-5LxotP;k}gAdoqNjֵ'z>{S#}=zol +;zG}Gj--S]ZE,Vk,]PH]ͮ<#,Rl +( Ǵ׏=X=?&FmP:گߏe7l fE.V%e@N +}5tlzǍ6=I0|I#! HT>R3ӒvG|}'״I[CyY$sONsxcr?,H`#J߈gyUU1Fan%tA'{o)*˻,L +XVMm{ub" ֵb"""""""""""""""""""'0u9s2eV%CR{kNu9>J!B0!ǯrׄs^ABt}#lFStͼZ-*j@4El~;q:&N>;fHv8B7*(#eywc`|u~ۆ +o{xquޘ^]N^mw] 2 >Nr>g{HȍbJY />*S_t;yvn![΂X.@adz;SZ{;: +u<[l,GFD{3~Zb8ݫ5γS:n'ր>tt[oԕ5 _#_~[$^Cd(&VڷJ~\gR܇OF0kE׹x}R+v_M\sSv?Sh7 :OUbIeP ž#s߼hzaVwݪ_2?LzHT7x{eǼPl 75*(|7xF2 +7du%JQ fȳ |,ۑ!$NsnOWۉri ɬX3|{%3̼BAM?`l`W\[(,#fo-vԳ/¿U3]ڤFiKħudShcX# +' z;='o1I1u#zظu6P' -WŒ`ЯioAz}>IШdmyp-UhOu8r~g?)UbxX 1PI>:HkS7U[W^hO.,S͵eweK'9{u{;?ꡟaFa9 oR?ׇK(C[{֧:{_UnԥKXtX0ֈ#lWb,*!r%ڍhyxqKұ_mhP?|.Eڍhk,wW-c3cg˷4>.WxPVao0a˱.Y:de_ +"gט}h32ش=HjI%=!$phk*0sWUPik< iǑr2Kʥll:NU[WaJ(BJyw;c/88c5-$V^]A;|^a\K.J+-Y#~]3{'N},v%1%pq  nď6?2{:QbGe` 9ÑFExM{/hrɶ=k])*Ą^EHn_t |5w^1\_4[!Jm.>Z:3}97s'V,[c{ q׵b""""""""""""""""""""""""&531l7}OZ,λylDDDDDDDDDƦb""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""&73>ZA '_]JOm6LoPX 6&b"&b"cs:~ݽ{Ϩ@zDDDDDDDDDDDDDDDDDDҵb""""""""""""""""""""""""""""""""""""| ) +tH:=Fyg32W"h86uʢ[A@fzXg]]8ꢶ^goT&u7Qc k+ 뛺E5qGEP_dwc{I|\</ +Xl5aڭ~ Nt쯿;UJ@?-lGO*"⣱b(X`;<,{y1Nc`7ǚ+@ŋP@WjI❻-Rcow`'u7dTnA h׹18s~l}]}ZӓV5)'J7|OT%}lnW+D`Λa@$z#8_N!^PWj"gG8cUwS[T?~T9*_jtLGjXl͘ [og|uR[_B?,B.r+e}DlOӵb""""""""""""""""""""""""""""""""&6Xt6$ԓ7>2.=oaVn*Nrc@=LQzdֶV 6DL:U|k;VꬩHSF0?礉: i01~AU'y30d09}!ccy||<Hl*w{I`C8VWVn>.5C:>@dE_WMhG\F~߷\w^ؐ8=d&N\Jjo;|{L-ey%m[-H*;<nAp!ˆ)-p6ڶ:Ŀcү] Y&vuL/bۖ-ʍԜXQqj^8DNm(gؙolww4U҃ タ=h+?^_ } cZw>7vi rUKȇSǿv?Wi߮)Rؖ;u*DHt>M'κkC*NcSn]JtT ?8AKږtJm}z14.eOsPnv|tt'ݷ +QBAcb%2A3d8ٖ[]6LeI#tos1Եb"""""""""""""""""""""""""""""""y[+6URRU-`y?2$wW kOw  6]iBI76ۗr5fpeڙ=c<{rܖ?Zl]K'WeVj6X1P@]o{y~ u쬇}aH^c'jFjs`>$ #kRZxQh^coy V,5{ߺ:?jV ]9͘WjvSuyVaR> }佚#uޜe.=tN|뾋*jX7'Jhd 5;w!BC OL +"8uں 6lN +9]^oN!_8ο`.g[<}fOR߫EX~Ym͕[= &QPh/I_ep4U"~|ǧzD޼Wf?M3o a +) ?_y'_M4x9?T̫g.mOpy}=:`~jTٜT7S1o]f>t~75OpU9iΛF 6=67 z9Gu,1@܏_'k^a +F<wE+}bMWl| nDP0O\ }7$eF8.}#JmcĖc(~ۗ2m dX˧rG*P8 ~BvKE9yH4[S\.[:ۙխ9BDP˱JIbY:؝C#Z;/LJi)PCז=/ؗ`QE]j X2XHDDDDDDDDDDDD@յb"""""""""""""""""""""""""""""""y~WWVɮwitn!N|*w? Ԟ̭%Bxj? &E'0Uҧ;ӭu(ȘS-f6]> |ΣN)jhp l59 L% &…H`_^Giݛ3!s[yylzN/~jy߇0w'v9v=ݴWvo>>_kTB)bt$yoRǦ6[oVVEgg~# jŧ18]ZXeMut\u]?yYKkmZ11>>tt~}?%'#OGI( ?qap?2~g6ZBOGl̴? ?q"n~f4}WiX qb3gf'zC_GO݊C_G_݊C_L+qcvkq1r-G+&jv{|E")4c}ֵ3* CItvU,xk_E'6pdʬNhv6~`O)ӟgR4[n_-+=cz!=?>ȟ}7`bbV@K*b'] Il+[i``#6DDDDL)LE mʼnqULط>>];}DDDDLh 5v֦Էt;l>kSF㙮B"Uj}DDDDDDDDDDDDDDD׵b""""""""""""""""""""""""""""""""""""hn=sd+d佘r?88Y|SۉM8I#Jsu;V ;ylԹC#G"&7>,UT҂@$>sdLnfsٟI`V, ;=7#2A;[QŁޏ}DD:T +r6G^s3]5c,Tt90]ߜ15*Ð9"""'خH `}DDOubd>NEJP{WlԵb"""""""""""""""""""'˂TmnVپž(ūd$*XVGsպs.~7>\<|vWvVG_5i.Z[xجVʉ_#OCkr;ۓzuF+`.AN/.>O^ߏf"9wcg0!l=NXk6ϺY>:Sed +]'W{Rpi'3 ϚNQN2qj}T/OYz^?EůJXZ]PB;o!oNkpHH{f#5q"MsPq|t<ޛֳ%-f5ϐbyf؎mCx4espUt>*AﯨoSn7 \u\I7mlY~ծ\98@T5{e;cӿ_f}+=O.Ƿo@Lu55a%}$hw#}y}8 jx#a>'p~Z'sYa]TC; I<.n B)Bv}wڗZ-fI ʲާ6oUN"U`^G`δz<87YE< z?OT̘XI`$5~mjkYs-^ބQ&?$]fUTbXgAdE@wHoW j]ร&ҫ ^E=` 7>6h6!Y;%u{ns6[M&c= ")A ;|N޶)sd+Y9ퟋq7MlJYUk$>cAgUnn:ZuwyZQBѐx>1$*'[=d(woa<FQLv[?11)^+?D6~? {5(|ru{CmyXTX'l[+ ߹at;T{[]U:=_ *'~~@7>=Z4E]rn$HαհDm[:Do}m:]>Au ]mW454ijz  ;iuXFnnd欭VF#MvFv_cS[:rOG^d %yXXUc TD|M+։= 2㛬j\M==ʎCdnh땧َ`Q^:tWV؂ٶO;a"=ꇩtbk'y}{ MղkZ\_Z +Ay 삜2-Ns5lA-Ïf-<=O>%FjR̩\G#w@.4:#܎JqbyCz?)Qʺ㿋uUML=aŕ)|d?W]K.OK|s]ix׭ $Ͼs[Yݪagdoz'n$_35:]  +[mUkjmN1+ʞ<_{?rgm֯P>+{4WwLC^BxLט{Il~Բ\NLjVSégHCӅrצJӈT񆘝wJ>)#q23C]qä2)`=Fԓg= WR[$i>;i/13fBPikͲ%f5˹Ssd;U ZU-N7t~zvb%vQา,.RTq7hzOG<J7X ^{!lY;} fMgo (rv{ {NV6~VOMl}x\Ρj!Gs@ |7>>_Ֆꚺl|Uю$}✹9d驊mFX6 @=ml]Ae*HG[.\l*sOWg|+5\Xl1;N[Rܬ6H#'G +>1rq#B6F;ϳ*Ũ^6:,97$&8;& OuQHQidXkg>k#ť|T/e@e]ZzIbc04 >Xll:>[פՍ]4StDDMY9T;J`rv +>CgBlq31DDDDDLnfc{DDD4&bcS1EؕYj++2o&'ګ*+|ԃ4hje5W(Wn;חf + '@ xT-ű뷘6n73׵b"""""""""""""""""""&ALrr* c+5[HN:R~2[8[>}$N> g cUUpIJ5XbKo~ZΜh1[ЄҌHg73o Q ԂC>3i11jJ,_-m3}5xoV):-wb#">`$/Y1vk+A[f{Gw>b`հ86;|#QtV]",ǸUjtط[^O[!8o>oϏ!ŧ03uZȭbKTW8hӺӯy{t_XV6)7ikvćPARCʩ-Cu tDQ7]d y\l01O4ǵЀ@,.cFPuRHeoSvpat/¢۔2HcLW1.I-=@IoI|ʓiͫ:uvז_)@@uI+=Ʃ/v6S1_2ߑV+622|kf', 7$<Ĉ=ۻ;MH y( "rQµE(fjJ"}Hc?wG`_Nեh^dB Όn^MAVK*{r$!M}>ޮ]^xHJ͏`=LIu|y?Mn̫6O3}WmNU\/qvF·P[R8lԌc[}!bZ}o5.3NEkv ;{? Ӻ=R}$%ud;RT0VwW +HWҜ:g%HT J0P.ZUCz$6>X}F ƢUl +6IwnbIH=ĩKŢ@jV\x3w۸qnxcZ_ư75 r}H>(|QI;Mz޶;ITzutP8ܠ DD'n[<K s.Ԓe kՔl}fF1xܔzڷ.P_u::]@X2=D +q cȂAxR[\{yvq)h|gj+n\Gr^rM}C3>e []_  gإ/`F|xhX1 N=o*ȴPeV2U +Q{zz'~@fdDZVܔmuvu>r=1wn9!|'ڮCng$J:t{=4 z V7O 3guzU착owDvn[ucVBqqhx<#G:Rn.ӄx8*T~l ,F$V7[-}R@,ggҍluu28:YĺPk1>{Hz^UW&]ʡk:ntS5* q,#mZ'?5~U[]nٽߋ֨k95$v#ל}uҶZ֣:! +)lO; :ށa׃ > ؃iiu$/7Nl3j εr*wÿԽ;VPA}':U mkYMH1q@]F%:@ҫӛ@gȴ{7FJVctvBj#Ift_<*j/%a;R|&r+P gXi*IFcH#,Z/xujjJy0>{_ڄb]}5$V`G#_RN=)uWt@7'n*еb"""""""""""""""""""'˰@X%wg?o}6|fv]~^k% m)^XM{]>{3}a'gfc2RP)E\H=v=",{3jwkrx7-\TRvr־'S]xuPU8mVJ@6^z'G *{X=~('l?N\<_6&+ v->nG˾EXYqZ8UgEbʼ}חL<*A_N{}ù[$d^g,~ b9z4|v >^Rڸąw |^Ou^z^9l)Z,GeRAqn̵VZ»{:rUGž30VV* +*|D?8nj8zLiAɗS{zۼ~խ!YhС.Q`zM^qz-k¶~hy,uk^B;cnO®-C6&PVO\nky_̒7IL6,qgOV|R[]hsZg۔%2k#Z3N\\{kz-P* ի XG0Gq:lq0+ؔگ[Vicȃ$՟$tjI~ W`9b6BdbuLlZ._ڙ7͚ *לJt+mKֲ *O$wt,w='Y, 4;wBt{[nXNMb Sm7RLk;T>ਬrŴu7gH˫X8F$͕HO~3e_jjɪQjF'&eiJs.uU{X#L Q7!I^;<'*P1#];yN~oTDV/cxA9wB q[zVn"SRt ؝=fBQHIe(O:`^{+c3q +j{eEV5ղ;IE5;H +NK7c2gL鄮_S oY53TMB\=Ef:QT3֑=,∥kf7{XҊcQc=YEZ[blqt&w˫ ̑S +ս{`@#8ךe]éQ7+b#/MȺ2_pl_SAB9^63þ<磧e-{c+dB~e}~RV""ѵb"""""""""""""""""""&vjFZcd=AܻX NSm^;vvf;ff;f'LЁjfcQjfswG4k +T$v53&4&Dͬgt:?b>n^QϝMʼe,8@7V<4U?Gz^wB27 `ϼ$V>1$환f'I8WfCd2b{I* sfOgvc~uA*<ϟdDj5QhLvkqӕK b2Uƻ~sWO驃gw\QS;&5F6 ΄GhЍFFvAGǽ*@I%ISթTjٶx7 6@'Б1DƄbYmάRX3S^M^=O^wN~v-T^T PP,w;5FS1ҵb"""""""""""""""""""&O5kjlm(k,W[y) XN3Xsٍe)Gn@v։9׋ְm5SrNA?2:/?+y26USeSR|7{NL]r1(}j@mh:yCUp;,H (=ٜӓ^ԗkܸ9{/)'psY +tH$i02 k^MLl$ 6HP>#:iFΕT~w&Di1gT]309b4Ȭߏ_eqT[=Wr]ldnGLNup, tH@`<ʒ`=J3ְ4Wh/]+kϋŵęλ߅#b"g;aҢBfoty|N2&voVc/p6{N/& A ͒ u9;ߔ֊Yב>Aw~sG]F-`r+5g6tXGu/XKfRv n}Է5k-k[54ְ m8v Dv"nϣ4#:=ǔxECk`YGr'ٜ܌6j*(_u4>+FMY!N$0^3[ ]i*_]e* 1?3 E;~SA{g=2KZ-Zq!ƒoeVGp꽛D?J +]˨@]y)-nG>XwXb؅fd+:;}s +a桵đ w,k|.J>A*~&ܾBrVJ!uǔz.[Ab2oEHG=j^GhqJ+n5UYQYX %ߨؚpk7f~;m}sYLȳK}ߖϠyS`4Y<zhzj/kór:ߦGIEw)='|/~I~a +HȰ4>؁4q#%+UVaGߍ1`u:=܏ʟiAZ:e~dՑN".QG34XBe$$g͖-J]*I$=w#$(M~iTejrGAg]3U+6:#~g薶rgٙ:W>^(7?3'o= +h𭹔,-d0=Ϧy8SZ92@?OԲqRH|AѼe7waߗ/5OgG@YwFϗ/.P)Dpx'#ǯSg5(o޽gWX5įZPO~S*6\-eZ#L[w:)8s59etlC"+Cw99a" B'75(&o\z>Ec&Mw8`v=u׮Y yȮq,zN Tn!|/r+]oӵb"""""""""""""""""""'˯%#_Ӡ«1%Բrb|G}+`gF8Ue]H:#okYu<|*sc!zXx}ʄ%H?j}taU%ӗ=Fm ǿt2Nozc.BIfҳUn*1;rK 1rqmە5֕kep…: eԲ^ +#ԏ_ܴ| ^ɗhe_F/WNߖN7XJuLk&%Q' h!'[!=5IӓK> kmll3.h'7eӋ@ ]q m<5MJA }\\nhUV}tmO"ϔ@e.;o %±;!uҞ;鹷nye?.;jȵj`#h=jͳ׉XVQڹO/|':?XA]*!""8l{RjyiqmX%w*Z4]Tw%H_^\~X%XD`݇"2Vd§mؚӞ(#g@p?Jnm{1ƫ>۵`CHmy=soPmxJ"@P Tu[SGZʳ*ߣ<5N\OILtk,`eIkޡs-RrU߼PӁ)3r1rRӊr-G l:ϯ7,_f=ik,N]o* {աp;@v'OtGSI>[He?}d_l.*.K:VM@lY*uU]?ZĀ~=7]e-2;6@o7"zeG=pŹRe?b[=R۱/JNjlw1R<CtbH=%7Ǒ$ytΑ~.xlmLGk;) wTqk4x.{>s,\h)wŤ*DRugfz h9)WKU'Ej]%=6"N ʱƤ+K2*I$I]a0$=1˶ +z tr +>Cӿ~SjĠSoښ +[$ό\Z:N0#X7.Vhkv=.f={*XXdA`|tHN׵TV,@^Z;',N& e#{>$NU/ElRNt`Acj]xz +7WH̞S(B~vӆ6}oiu^F<P@1:F1A, yy=SqmAKo" #Ex[6{swr\ޞʸ~ݓ]k?gnPx'µm]2oK0PI:w35Hy7U(pVVV>{+aeן􂏋RLOqc%T zÛM=;7)FM=Րۗc5psz wTSn BGYp=40~? E'L7&zm~Hz,& /w1nB`8nӬ'5RrPgwoIG[ +-!{lz<6g]8֌_z:mu>2#=l*+X)?\{GWٚNC\(@`vg.0KP. ߩ0;{12vle2mi\1MuRv +I:|I306kGMENV>.t0M(ߩ /S:WmX NfzoiZ90 &Ԏɴ$P~t6<'b(]"=-ÿ-Ԁg;@y.5eeP}A> +Tx 7{rʐ?q}DԵb"""""""""""""""""""&&mEq&P`*v|5>SٝQC6'^[#}xj=/Ev)VPA*yLJZC) U^hQAo2+Z$6vugfui()FԊI +>d c@I=>ÿ DHW7xzPFϭLԘT芬t@'#mZז +)ןj@>O}CS$=j@|\єzNja&>UI(M+5y$PaN6 k_{k,Ā=mJFp;pơWv/ ^_ #OEj€h">zar~pi9PXy Ͼ"4&MOnϬZNʠwa}2#c$0iFJ> ~)ZS R.P44;>Cv#\džz8׺;~y(R?Jp|<*hUW=.(6ʮDL OlkD^҂X΢#FWQ1j܁,y>寮 Y aG]>塽k~Ô 3z|||5; RhQG&2{tl\J;6cρe׸ +M~Ku)f(:;d #`{τŪ֠ J>5뾾,ƈ)ZHkGrނ7}IאG4wTBUTy*>;BZ/E /,Ǫ5+)R_{LPF v~?[" \(@l #aV>#=6D@յb"""""""""""""""""""& tm6e岲Gv%z %<Ϗ_kb?}Of[]C y/Bt~seeZ(@e~&}oCRh2!7|W}vë}DL&MVTubLA<'M4uOe>_fVW[#^:hSz0WAQ"eFu JHC-ȮUlB;ϲycs,r^r+u <8R'U3}VLdӕx\ +{'V\Sx.rs&klLߓN( m>˪7klo^^qj3n`M6';%C gQȬ1Nkkv0ȱ6WON[﫴Ӫkc"t 6Ŗ-gȂoӒW@UB;ϰw"w8T`T1@Ckw=ZϹ!|Vuj^-XX}P}b9Fĭ,F]wԘs.lz-%n|Hg2[-ɩ襗BNwgQ8^ŵODr!17{5՛t[d9Q{ԒwUg}s]csږH5]ttAv"FF w>g`7T-9Ejj۟ nF$ [À}*jHsR7&+- ҄ +: H?)7)phw yg bd>>]Օ6 <=z-Νkۛ䄶POec$j(rOcqZ9u\^cq3[h Z+X^Lv-ΫNrk45,HMwo- Vu@ מȈֵb"""""""""""""""""""&$7C~oǟҳ8!lZ~+s>,I ?Y!wמy>:NFNVL%OZ|Zr(K8uÐM\wפȯƭ^C[SIc<cߐܓv)9q*~M0U}I:^&>OX>-h(7h -kݭuUg7=C𺥯T-- F߿ Jɢ#O3ߨaU,OO4يOU+`2;>:0c( ~-jVNs˗w7Y0 (,~R2֡q@-^&B eԌ%[zO|lf'4}1'^NAz@ rAql!nc􌾫S"ngtQKxG!A!UӱQıU.@/D{X[۷!(~ۜ#lE:J[-]k P~=`ORI?ҲU7OxeH=T]y#3ko5S(栩o`R5qO)t*g䚋=uU!:&AzAoGVV"U.ַ+ՐZ(J '3ղ茮9t1 ?st}6z(ߓA}r|;:I¢Lj6?A(vP)WT˲'u$XNrq*I v١xDkAqtLl.Ԭ4ViY'G[$hkĶէ/UWe 6;לzu> +b]Bh={Ͽh0(-R&jy[7; rKz=pywa=O[Pte|'P0?~l%][eY,ǡ[^Oqolwvh۷vyvOv>K(ޛs,6NNeSl()Gs'Uö2ϸrZy_n,L<ȏQ6=p$(ߝ?>ad֠[]}rPt`hz3zum]F8oG(#vcLb)ս*ȩkx~dtIS:kPWAC2cvnIu1z~M XX\&EXzۚ֞{@$gvNĿO`im0 6GΆDf<Ľ4D\g$6@(? ;*LӾYe!,u}NE}ǽAo}9z| 6 )u{Sy~./5{UΨ㲭k1%4G6VeTϫSC%YSUlwāz$w)}˺xg[u-AV#_MV]MJ鴹ET6mAtJ7[Pk&IN'tc^Q^&GB;5Yۙox}枳ey‘Jܺ@ ĞCs\Ss⺅bi˧?%i7V@-:ٵ 0W;Զ*q!YY$|c%oKznĽ[17Sce4g_yܨky7QeqZՃ5\7{I(L쭇W!F]l9[Epp=ΦZ׭H,o6 + u(vf=BiNZ5kXVB|:}Z>5ek$RNӿC9YNws2Ya@v]v>~R[:^(`bEjH +6E)aC,ߗo]Ԭ՝#믏yѩɑ0[JS=ט=l-uA>䝂=uGyHgzVN4ElɺD< a 2.^eLt?%$r*[dyzO6\olt.A$yGmO0=iׇs_'^-' J%I?rH$z:9sN'RD~cc6/OkS_<8~|9*{պc jm{O3IֹWC}x& +`~e43ɕ@-}M`AŨhw=ǤݛQBYȰ=NJQ*4Hޥ]?ԩWW+vGnu?JĴJ`!qvb׉]UieD; G 7nIs} R& )?Y[N,z[sRZAێbu`¤T ś >luOg_AB#fGіG=5OA摎qr p}LTR 뷖m8wE譼T\k^E€}ϬmIz:VF888] +X|؆@IiUVZ*{ͽd|fizUCp+EZ_@;޴;jZr:{j,gB>D>8@]g{U߯߬=[{/h ;?uSұ1ljE Gc9E/BcK5uٵ|΅j-mYU4<> x+AF'KXGeg@$y/Y}ԹƬ +( +O6?Fòdi ^<Sv& +hkA*V7Q)%wߘtE(zu}6xd ²I&x'FoL*q;SYOɔ?O9QXCj n'K *\Y8]z*OnĐHQʖ(`Aȃ؉G+Ŷ*Ԃ(`G ܘ%jpɸlzM#L岦)sV +O{DN6vs_//pAm:c]ęeIru A0D#*m=7uYN + Q`q7DDȩl +v9 G櫺& Bamh4s LDеb"""""""""""""""""""&"78[EŪuwѝ}Ye5]TO*kv+@<'Nqϋyo\x]lO?:Vbc&H6@$_DUuT[*tc#HnG{AԬԊ/ʼnP@[1>"7Ծ]| ybtnfFuNp_w. +NU~#d(=}!Y +l꼈%Icqӗu!jkOPOr~G[ë-PH$qrcuTY+t0a;wf"""""""""""""""""""""""""&5311ѵb"""""""""""""""""""'Ů+Fbt$sݐcr*k +ْ[!߃@*{=$gO^W"Us*Kz56`:m)jho90k[5mg$6|iq+Σ=9XHwRCŻ}?7uԨ1-@Cme@Xߺgdzb~UXZh63}xvX&}tQ 6-E\+R  x>kwWOźP<>{ Gm{3nUku9vXwաv#^Sף/܃zFxL`QcDRߧ;-ٙX֋]X;bH-6cgc}QQP})񕐝q*A;vX=\݊sp?x_ֽ$U|m{g&NU7uq;'Oլ+Vw +Il9z&rd0c>^9;vu@ޒ/'Q>U-w/eV/Go{r'Nڲdc}Qz:V2{ANFNS95["*B w~RW|L7l@:$P228~Uuqi'ȲN,1ݯ^htuȱb(̒|guOgg4׏` +Gv'7&۲sP&ϣ/δ3t L'\ +n ]'j>o{_ŕc~z]UbZA왈ҵb"""""""""""""""""""'ˠJ D!EeldR6DY B)/2کlGdW{ {o0:|? vr9g-Eğ]~=x̧eMgsBrUw5[Pܫ-Om=?xػ:e csx(b@votó7>z>ө SJ @f-Q1~] +h4$oeo-t`QRkon!wmbd$@Tqtض8uX6ېAc?9鯎͇"ks! 寇/AuzմpjĪjٌ b7 CsYbyy 0]?/>΍n=XE dRrCǗxY Zvgv.ȞDz]1ű^`SVx2}63dm'g̃S% xJD&3+(Q*>GDZ*jiTj Gwz95TZ-g >o5⪱TCCG>`"Y#(b - M1^׉rş_=͸=>! 31;wc6ǹ>f^%y壯vC{A9'FqQHe=$sQGJ x"r?2I2XLDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@ӵb""""""""""""""""""""""""""""""""""""cPb""""""""""""""""""""""""""""""" Եb""""""""""""""""""""D&5|-Ul*J6w: 4v{IDqbR A Ŏ+Rt$LilN#V\8`m*< |&èo6#b7n|-c2P>שYXFCܵ h߸E 6;lk1kgΫVh՟>W[۹~ss3dVgtaJ6@jG}B IJ[T2Aȃ3brujUŹkA 7#3ڗ# ? ^*FoCFbYmaXTRv~wG߱nsb.UV5XBIt73&FEBXoVs3n778zFE|¦2}߼ߋtr"ߞ?o6:<'Fjk`ăꤝ1JLn|rPcUU%d7>!2c'M܆?gqH|?i>z/ʶ @w؝}7R6eOSdjt ۸=Ep,~ֺEs$u|Y^UpAPݛ@7cSq=3S&ѱ8؂ns^5 $!>q#\qj vm +{ILMy-h%W2#O +\Z6uIյb"""""""""""""""""""'͌K1O=otp2µ S$rןnK3fQv6&8֏kS+4r$sy+)^6* y._[G6&ءUVB<ϜLڢTzGGϣS[)KkK2W`;vMzՔOL"r H2=u*lնx=-|mIl ̳'Eej@>xN*8vFsέ]MbsVzTW@.[;5NUIVKQîGQN QK.đz=R|~sWJd' k>N5eu!)xYu]֛/_Jr-<~t쎣ԱwVǭ, -Zy[}l3Ǭn>p4#jFcyal+5?o, AU #VE]/+#]T+uN5Yb_v2<|>;A8DgdQϊyԅ + {M4gsےkᱹSӑEfmʂZ'zc&OK\UtTl{Znz}*̽}mtrpkREcGF^}F[ʨ7 ݚ)#}?BUԗWl6]xE+YQ@m|t]fSE^-u:rIyZ/.*{2t]OZn^9,eNV£|[_WMvzCW//験Z ckhw` }SoZt&EW!wu %սФ MF!9dIN}aۉ@|.Sn_9pQWS{̌ ⷋ^%]Z +@j݊lyf?R)-z6J `( @'c{}/##0s+be24Sskl\ .}S/odV%l*GֆԯEey9ԩW1*yFbDh!&- +W]{|;xWdbf"cmme^^|X=W&KyZm7!WR#mW[.GXziL5֮kEJvHV]lvóaĬPFP9M{wckTO~Y[`n9ٙOB⿄C`@w_)1VL*۰)RI)[ՙ60Ox Ez] $zR5/U5=T)v*6 7B=G)hȵx[p[Dqo0|:]Čt `e;:Niؘtv>C>K s7?}c\'Ѳ+2ja@vrYÕM=]j&C^"?Q.?m3՟*Yȯ{(ć'7WXc)k u]t +@r~䓽mIޛFF=z7Q+p/u>z$P,kEZaNJ}w5P]zl:Tv1lEmAֵb"""""""""""""""""""'ˠJ > O A̺~VlUN쥀۾ǡzB\plkjnNI㌺,FRt5"59@ZkkE|]1eI׬{YS0 Yx>N6)P6"]J8TyE~1nV,ܗDbp]DSZ_ޫ TOv)_Gɪrvu}P=<&9V@eWbvӰ響}~槭q[׬zUu{R?;P( ̤FaG׭J"(w$v=]^WFS޶?9|^9;0E~nHOt :}M?eO +U#,8eSy?9 6+ŜB5L􎄝'[+VpMc[s߰>uqizj{i#"ΕA>-/ g_H/ {ToO31wdK":-[?X!$>뿜L +V$Y&DdB`%{*vZՄr}<Щk5Hv@̭ E4[7Z!w'C,FCZqu,lvBCq$yۓyXbW@!2zO39}ԍp5/8mj2PzE)] eK & T GGcX6x wjHΘ|~FN~f-寺 vֻk]_f3@VC +;#c婲g2r-Hen(@=O` +V5@6y@{L|Y +ĒqOZY`: ñf_ t5彶5^ @q˷at18eUF0אg5Qod,^ܛ*RwϣК|[ڔڊ, wM)+Mg=6Ĺ[^mݷ 6YeQB_w{}SНlO/ Y|С,T{lj?8}V)i/\Avޤ~Ρ.yh:=Nov=3ZKVG:$.SdQm}0dZ*RsX:u aܺTkQYAyMِf=9Uc9zT.K(m֦S56ce5dU Vuʰ `GL\^7; (^@PP =I3UdXX]& >z + owc{&nGzQ1mQ,v_e22Bmoq>Zd]8֨B GSn7D|\̕~Y!v8 +Ux^ރld9|g/E_ ; wވ3q(˵7XZҮ}~s'ٿݍfCUlQ2O~S~GEgjnW-2#G|gѕ[ܥuqS'xRr,u!SlkW/}XM^M5Q|2Axﺍv'}Q$OKee % /%T*7>3WR[ñ@me*{2QF:V2l{ٯEF*T'׹ٝ}'^-xˊ*74vVK9_ +T[{|f^ؗdٓÑ*W!45~sYm5E 1[Go|)չ1 /hOU +u{f΂^F5UIi@0o2pw} tnzEViȴX‚^@4=&:͂ZVA'nēӺsakZUA ( + +;}g}wh75J,G%%eLOz3]Nk^F@WW=܀|yOק_zr;t@Y*#ĽWgīߙIYyub*U dfl>{ytVGml9َkAgv༾w9r[^[-UnG2 7נщ_C4IJ,a,b/bXqx5gMKB8[yw׵b""""""""""""""""""""rWKw.%UDtl>hϧ\T<$t096>U9 JH?=|j53LDDDƦb""""""""""""""""""""""kz+ _"@$}["""|-Al~(TTQеb"""""""""""""""""""&ũsDfc +6g[ٛ ..p}tGإqT =;$gQ9^ UY^Z{VRx:#=dV|;X78lNJS; xޜx]ro~Ҍl|Ed{Vp4kd}$F6uQd栊]W]s ѵb"""""""""""""""""""&S&ԫ#DO< 궥k2[]oμ)1c#Z06A~ݏcuaKj(+䋢f߱W ,N?Expn_uϗ.ZyN\~N~9vlxL5˾;΍U51*UI#`뿜êpzQ^794ՙF@c]I U0t{j}j\AV<>F}FWx%6סD}bl2һU`J}Qzd:0]鉲`c&i1_]~cbmҵb""""""""""""""""""""""""""""""""""""F޹WB[`,]Uc}Nj[H$ Y#}lr\{ +q!|dHzGG|:-p +X1?]qlAəDcAfEUW: =6`kDޭ,iNܩ~_nkTEzyUN:Q^Nv4u|EbE kgOB6r?g=Ve=;X=toNp\( ÿ?]s:Fq>ִyDžiώ3,TU/եu.6Tm}[ה㯨fu@Ҽ|J;i;]S )k#ح{oz 710g-=E/ȻUT(Bccͯ]yNL.C#êw h*'R ϫ{2ݙ}?W]8=v&W`o:?/1;f75dӈu@Ϊ :1ҁ'n櫩csQ]F./ȰȝΨӵb""""""""""""""""""""""""""""""""""""yNw=9\r p2@|~s qn ѭU\8֛7gϡjo^CMay쪼S8n `m0SjҟK(;q@aU=eH+vWP/?ru>1:ۯlL{Y| +dg,Їֳ:>X5m:ji`ׯyoT[eq5*+NG۟✉p̪3"椕Wjk<-ssW7){ЩϵlkfTsޥ~FZZ9~JJ/^˰ gޯakb6#> ȷgb51޿uASg0A%^̿I +C;? 6{H[($ |JSO*J7$z~7ܭy9ZHc7"G…&%85 +@7>gd$$9o87fG0O xHI%OORP r I$϶yokG\m>]~)~CK2gcx)^ǴȠs!G#vk3f]J&j$0Rxʁɉ?=RlÿԵb""""""""""""""""""""""""""""""""""""y^G䯧'XOUSi)Ls[vgTe"R;'@Eβ2qוWbNibm73}8vָ8Dx2h%Ѝ[s⎭-qJ~|""& ;N%S$7g#2gwv.('tuNIk*XVJ$ ӺKcfVEU9¢k$?PR;'QoD# qxmuy^c(ZN9V[=z|UPC2ίz(m6<1AњpFkvezX2-$ +#\tny|'b o6˗rFֵq56!YuV3*j`8]lf'0}*ǻ}|;RVXT N<~^B1<ܔ-rLjf"""""""""bf""""""""""""""""ֵb""""""""""""""""""""""""""""""""""""xt,Vi&hQZ)fm w6P#`*/E }Mu_]ll菬j\j(c@?m Aט9hyl򙈈׵b""""""""""""""""""""""""""""""""$xͲEZ@mnaV;GQ -+a彏)mc_^h:7tp=<#$Ll)'?sĂ>[3X*@{|nٜcWJu'(;n{1w{BX/rV᪵^?Qc RV]7PҎ'@!N>-=MhB'ʮ) h$ntu:~@dMF~ J vTʌ| +.rj""""Db_z]HT3bk*v@;$OzU.\-n;aBV!@ƻv[zVMnʌtD'd#Zvg*ꊭqJ}>Sms.;zqפxգܕO"""""""""""""""""""еb"""""""""""""""""""""""""""""""$wL| y'bGղ$)ƻ;בk]iܦ.X:wڝhv}lQGHe)//;İzJ#)c9wn^=+-q^|~|}du`9o}`g`*|.;ܒ{+ƥF( vQE~irW[Q׷A$WtEg#hSi'EVg '\fCxxt˥@IoMyMv.>!JhUr։?qION/0N/@°[M +oG[Tݼ΁A?1Y:10d%Y ֳ2mJ+f}YUeME3l!z.n +6k%1Z+ jcz~:XZRiM +ń^RVR#c67om@|#*pnNq&:ֵyﶤ|,l3Q5Snƹ}/I%ѵb"""""""""""""""""""""""""""""""$w\WcZtB7f}y?#7Hz dZG.l羗}}gn=O. $9lU +u AMi Nʬŕ _>\ٚ({/αJU=E$kӓ $ƣQ<V7ƵIʝ`=Q#z&MUc3` kP{ZԐq˭C+)"#BTLv^6i͇e,|:"""""""cS[cZ* A=zlDDDDDDDDDDDDDDDDDD@ҵb""""""""""""""""""""""""""""""""&53CoOeӵb""""""""""""""""""""""""""""""""""""xsOe1!׶-+eXk*Ŕꃉ۹I<ʺRܒVSl19Ƚ.+Z)o C=q9zWSU'хI$X G-yנI513kR@lta3 bwpk1GH9:oSX`+ʶFk3۪P~?re=UeJ[CG]ԗG=O`n=/ȡLu{*/ٸFҎGLt:vWC^` HtQbew1,v=DՕu=LHGG9i>5jZ!A"wzX^ټu]M4&FNUw_ |ewPGAn}BqKkdamXh:oI) +c7^ J (3;~WE"9Uv-cR;:=}fOB_edYCZa0}:`Mbq1+Dr|dDDDDDDDDDDDDDD@ֵb""""""""""""""""""""""""""""""""""""yjz^Up1CߖW;i/sx}[)VR;*@ Ψ׵b""""""""""""""""""""""""""""""""""""b&b""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""qUVUX*;s;78:ʪq* q#(z>L9Ue%hD($FG[ ݈f^D *C}Nsv^=rT*W]rGqd!s +P Au:F_mvS; FMy69F0slMwޘս0UE,ɑxC7% +`}!kN{-o广xVY[A_#c'|XAl U>~">.hFUU,Fא,QU Xmy-GFJrkĩQK1]ԿvYu^~݉{V*+$0d=b<^v0U d?:gL,M-[ގww""GuN:sRleDBI>DN~n2Þ;] +ۑr3s ZO!$/f 1o[s ƥZ1L2#`ͱ1]SkxrX{H+2Ncq`:Nc5`}+*+'܎';+ hZ\7.AZ8f2f|x' ]MW}VX*YJGܒɮײmeC#.lNl JjzrƉϞ'LLNg)uxwZ q'НLDn6'-^Mt +l`lxiZ wضNؙҵb"""""""""""""""""""& YosV/)0|f]~^H[lٝU/g##6^L{]o ɗA$IəkFQ!WߗH;XWve.^ rV`Nޡs=Qc=7 ۗyk'aTjeU33~[HmUZIbXnR{R=;kE Z:yM9)e'j|M *zz[dmǤ*lp.NZ_E n8~3pl[[bָXTrk5]_9Ϗodqe\ʖwT ]hoyQu*8ڋ} =\*y>^ZjXZ?.Χ_MBRoո")[ ?)Ys;TzSYb9xK}u]<'PtWUΖfTNv?TV t@"4{~m,VK)ljg+(^<ۧ=7/.Gy D}MC=wFԌ\>O%U76t".xPI%^rg,bq#MӸL}SrXUV0F]I:7@qj֌KW!Po32 51pr gcnfl ;:l<̻vT'iI=7םU{?NpMȾs64j4WTq=F`v~= ;`wϩ2x>ѢUaXk*kªG`@d&>_yN?J5۰\zŒ#+# _*qľrV"T:zםOıC[t #=z%.AQCC&آ%H$qu4븀uepr[pzORu~ۋU#hkO&yQP.CVݻ8/9ݴX뎑}]B r~-EFOyAfe?puw::`R1jk 羇Bu r=6d_̏Aem˯)ֱ2-BVB{ɗ^`GcϿ++Y˝/׊oxs-rab|Jgj;2]R#`gJ]sok9:rb}?WT;7+YZec^Vի8jV)7-]ZP8(\JmI<ycZ#ƨ;;q#iA{M?K~0/oK>%\s%HQ@)Y:~%Yy6X[5͚;.>`|:Ck[cp7 GsNxKf"ԏMI<t-L3X1~r&XY@.Rf#iYUow*=Y󏙝թȨ_⌛V)_ (dg FܑxcV +W`w͑ӵb"""""""""""""""""""& 鴜 WuG^Fğ?#5d2xxU*Tܔ*|oS'-KlpU?3@&GNf= +HtZ2zF +9^l[~UlTՅ |[DkUn\-յn7BZۮ~TOɈɶX(YzǠӐUXFo2}&ǫ U+#V]|>D|A0zJXc]sSc w*6wΜNB޽oX7MȾKߓ~s WP>b?Vƻ8՛u[eU]kb oD[#3>meAQR7cjNHtc^ZԎ&@4~+Q>xmյSs j6o@mIlluŬVCgg̒vIA#;|\u{]G)wE.(粏|Ϥx]g qlmfX8 &qۓP@?}C1Ƽm,^, ^YņTm lɵ.Ha`h8<3V-Xl K{ŵS[Ϫ7\֊d^,P~YjȽk-eUwK`öo3gAVVUeJUlFʓȫr ߸Sv1/؛ɇ~㶆vg؎mR<-0JT:?/~GsUmPhr;@*F= +&bP@op'q#Z'D)O.Z>SԪ6xoY[_\)$>b#f"&KTkd·z%[:kcdnH3lFMykwU.UI +79u:%9u*ځmr:$Nɍ5I>+0=7Dq3npdͿ *rN|HޝN!CS}fcsuDqTd5dYK&A;w܄fq]mN@<021zxjϢ}i|Đnkl5r†I |6 յb"""""""""""""""""""&=Ocy"y O.#޹ړZYK ^(|νEٵd?mhBplPIb̤a9ۮ:5 +>l[Gq;T=둒0E)Ů<|U6#l(Ev;Mܽ*_;ZPG w'8,y7Q[ߺK +UZ* b$#L\6k"!rW +kqUsRߤծ RIPW4{NGTljɺsJv;$`,V-PqC77×:F[⵵;bl- _ 6]kk+3Vxk]{ƆTb@,|GSQzNжU@oV)RNǬT ޺}m f:|`c|+9>>&]~ eQp֭hIYNA]TeM9&x c˾>[C3%_]{ݎ(uK=iSJ٦ {v7~ScP6p%4 Xeu""`8`;zlL c#PA#O5W6&m5>katGdt=%M5X{6|rt\v=\ltV:YVh@孟?-9yuơ5{7 HAđwHޥ3iQ:q&!]y/Io=rbP^ e4A~3OJɲL'+=g%[6fx7Rq=CH` s< !k528pA#eIAhjj&2\t؏p!>! u~S ϿivN'#Y5'J|NA5F\þhoUkW*̨ rSQlL {, -*;g7Ij:PF[\{5@1ǻ>釘{2k\b@P$s.Te]]]qi yky-bu'[7YzWXq|r|DfT +G9+ɯUyZR]1-yoZr^뺆m*R?X@c ]Iԏ*x7R]S[8#\&_ طas=x 8w=Aĭl/cgjt_D{We+Et! +ާ<=ƴ7]W~fׁ`'\'NXYmw+j{JÂ]+|$fWɦeXj/ʦzN3~HULLW#; +^ބ>DDD@ֵb"""""""""""""""""""&r2Uǫ!XH]0qzy7&6CSUc؁COESc9G,K5KIR +p 's43'-wEj'+hۑ3;k^L{yt7hzm},dX*Mws3|kW,{,J[a{:T[H^)b%jU4TN%1=i_&n*'}Gg8:ԵV%rX󝹽 xǴw"ue>z>DFΗҫjIge7;SC3kkEo1jk +$ >sVEG(OrG`Om]|&z?D^]^ղװٜ⣱&r/*f8Ɣ{M|;nv^k]b=>;}Gd%?:MF֎؂;{==Kh@S3պe}_$Qd`{?+ّ[ax +ԩ_BGa5:l3^MniB籭}1;^>,>*w~>_b>R'xS׽+-~zUFEmڵ رۄmmC^GdkqwA#"܌\kxU9QOM}'Uɑcbֵv{ 7}MYc߇v'bEpTa>{b@vЛc&[ĔI {^c^bkog&cd= cɆ< z?ut^:6%XcXf +C ȟl8|A:Fr.[ w͓qSVAPާdCɟo\+e4qFl}{=N7Ea"`QN,W;P)vtCV[^GffKQeMg1lRjG?vdJЏg'Nǔ阔_ԑH+N.q?X]me/[ڃq*0 [^,s&m`v"0䟺%/Cju{=4O~^?Ҫzy 7`ґd8"Иn_d,JvNGüCdȳ#k"خTh6ɵckb-!-Ź)x K ;yvA~3S/eͻ?,On'!(ofkdm(T)IR8[=(pA B{)[csB#*'e9 |'~4/V*4@.W~併2~5"qP1Ѳ]FTʥbgXXHYNa|'{?/ob⫶x2!߱=;Ͷr6[s&vNUOqk:{ô)z=TA9r>xnyrfڝ15̥Yy_c<U7@aGfSQEVGʪף؆-iR@;q0Hp=v-0>DDږH Gϸҵb"""""""""""""""""""""""""""""""""""""|Nr~By?ft˷-N#2B{.'}6vt4 BBPIFމ|*GS^%kvdV? fO*k83$~B1,.+kZ@tPbF}($ rjc{Y㢤"JDO5}>"Ss5aH* wASAgQ,|בI{v#`~Oӵb""""""""""""""""""""""""""""""""""brcu\|˯<*,R岧`nm=Boe;S^s|D\,{o*w=*OC:>5"7odztPmNnP;_#<0JǵEay0 .m˲F|UUb;;]N ށݰb@ȹWp3&b"h̫CAeQI'@'䊋Lm\2ͅYNDRY-}fwdf;Yk'OΈϙ0e%A=XާؙԵb""""""""""""""""""""""""""""""""""'~oc4]P6v*<,d!J6ns}__M/!N~߿{ֻN#'#K*/%_Pӡ8ߢgL>tl*O$uj㺲a ~{~/\VB kOz:!韛qFuyVV?$0MWjs`Nɏ&LG_3vZYT蝏1OPwU|E,o;2NyhV_UxD) ?HM# i"!@uN OY-V5K _Yֳ:w*5Pċy['ȭ-l宠BHdwpYU'} G_nK}]uŀ<\!K4[u {Zܪյb""""""""""""""""""""""""""""""""""` 1znf)}u^d0j Zm|o8;zQj3W۾O?q0q)?Q?i(}ݴLݴGi_D}ݵM`X[c|[1O:ؕe`Am=ȶ֥;URO`$νKeVCWVൄ?+|F碐ʸ]c$QUwm~ +sdtn5[]1 !T_kS{$WWWߓf:g;Xz^!ob?3 +`L鸙y5r +l֤`9 ֵb""""""""""""""""""""""""""""""""""A}n,1NnO +u WGDvwۗN1Qh}3W +>?oY'g>rȀ__k<;qIh혘-Td+ -cݮw;yI\ U_]~Z'vDDDDN^Ƽk\Zj⅋T/sCC~/OflʃMa.NI޽'趩V b55SQQG +?k(]vQ)z?VN-ykGlzS`׵b"""""""""""""""""""""""""""""""""&'*tllo3-o@uϞ#|uAE'/&φ篟ٟFB`1Fv"u {qܐH 9tӄ7eˈE +@3"""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb"""""""""""""""""""& БuGsZ3R, V 5Vx\5lj;"`dsuWK#eT: + Nw9VMN`*:b"""""""q>_I]j^h#s:g͖-JYzsuzz=Ku6ˉs38TM4b\Ԭ=FDRG}o˿7KzYR +1V"""""'.zXE}~'LGuDDDOnJP< f֋ԏ7J6Wu>:3&st_RFz:Q)3"anrΥOV\7q;V({3aHaa :l[T2TA`A"h̫mFtOrtdNڐYYw`ߧi38Qn+/!ˉ )ӵb""""""""""""""""""""xlן\r0cIhn^ǫ+@[,vRl{ĸ>NN1x +.ռ{guN>eƟ +eb_I >|ϷMm}%pHזԸR<Ʒ9&6Pyexe*Mo~su <:.(˔U*kj?llz|~SJ\ĿT2T^,,xy]uzS]㇃r7m{}Lً}q].U'OtzƧKRR+;+G~YeN2=Or+`X{80_ U[5Ÿ0Xߕ:MvcPYDgr^*K+(kt1yMfu|ű) W, +Fvn)->6ަ6S}M]= ?j^P_I97\9* yoI.m{vV/T5׉e#MH^.²%+8Ͷ7<9*HDƒ{$"v"-C!'L`|&O3 +kk|fyqul O):WNjrTW*Mz;׼F22k +)6vAݵkmQ27l,t{v)\)= YMm$ FoIz~dMo[I W{H4qYJGo I'5{C< UPXp xʍy]:9xdb=o )]!08}ϫN!ց:b{}6t޿}cV,6@bwmv8;';uΦYُe#7d!EGf%vdp0M쌙P֫ 3`! yNձc"q@"`n'Z=w>.YWtϡ,o!P?.7n'3 +XKjr^#Z:~Sgi:uƴ7u7 +qU]z/2mX=V[iRξwRWS>~YVY]ljNot՛''ǦlQK[d /-~C=ï.[>Cg<;[ [2~zx]_ZKʫ+p뺰ѪuH6lm@sڪtl])rrlyɅ7>@eYNnRU˗kSs31UF/-260=c}GڕL|QjQ_c⤀dk?fsR%̪'w|cʣ K9êpE +gcc&oAp+snKUKdY!{:ӭ&e. e +Qߑ]bpmPG v= lL{h&&'JtGƮeo BqQv}>sn-$v5R&- ٔl 5~WU"qouH=Ԃwט?-N?hPlXJ\_u~. 6~h wZk`]esSd~uKDDDDԵb"""""""""""""""""""'G^ zOEٹM}N2xN|Ʒ:SddcRmX2YJu;Ai[deji>uHKlN oG«RVU+[vzL^v#Qbw >pfl\[%U +<(]"$ly]'+'' $X8xly {_s|μdlAװ^cvSe5eI {ͽzī ; { zfO[xY4c(¨&Dh߷W:V@+`n1ew_}m|d#"v?K/p%b ]obi9=1*.@%Vb ۏ胭|E[2S)΁>eYGs{:kL<,j%ZqV9lZN@Rxys9~&ϯ?5<- ՀA G;v=S7E]Q#YFS+{enL1}o R֔rI? ohzbPsX6*A=`]V@[/m_=`K;΄Ǵ6՟Nf'#è*y7 Mc%)Ry*{n׬b;1]lvlwdu,;(|mkB +!QK pzgNWI#?3P(KxJ{v3gqu.;mUW{&jٜ鸘!ўW5Oy߿|G/?]yoΥ=O3-ٕ-; [CԾQj8 [Q˗$ 6~zNJၓrKf;X@_k~Z_H-pk]`u!Oǁ]?Ξn^e6-/XB8{i<ΎcjRE4U(-9{z=$ywA] +K m۝rNӀ +i-ΎvU \irWNb4۸#pF=6@ooc*u(x!hv>=긖e)M}),m{X|:MyTSbUXGoycxصؓ{"'[&1KVS`>w% }#kh4tCH:* ;oṧ=]CyokrZq`6CʦM8 mXUbv: 6}uMkWZ۬}jxw'='!S|> 3'/=ݼo]'X׀h/NC]M ;oeF]jհnʼnoz殇鈋mXЁC((L]MwSJ lK0&(0'f/PGrܳRI'z &|d &f=${ֺO5Ѹ[EmMAgLvK)""otK1? 'OQbL-Dn@.ץT! ^݇i?յb""""""""""""""""""""h9.w ́K~;G>p:N伙wRNi;}_Z>LjT-l} ü̏T[U=A|h`j;zw3>YCB_WinmR:=}?P@k3P~)>J)`u߿>""""""""""""""""|j>"""kSˎ72+[0`llyֵb"""""""""""""""""""& bϥ̢Ik3^73gN2EY@+j tg^nm}U,sjHRg}5FVGɯ\Le˧#fAjj:(N܆mYc>mGWbt]Žjf>f%9)Wg!D$6 fu3u~UU:m2 +7;sWKd?NzQFc=e,PkR7Iirrq}9b@0Un\woMwז-V΢ъsPH%\rOMlqSەfBѻ+ȲPÈ)g϶׺wݦ:/\lܫpz)MvVZ%ANc-̽r!evPl#װPib""""""""""""""""""""""""""""""""""""""""׵b"""""""""""""""""""&y `ݛW\._%ǟ!=1e?1zV~IM}(@!P˼Kz1gjVɞŏocd5?GU56Q԰22,U}vkgj=SF{.,ڔfsJ;lu2Wg O <}3Ҽz&KlfV<-6>S+en>J5e-?t,Wv'~_W)GQ.≎:lVX ߎNH,΋̌kUFJPOytZ_MNnv* sua|wGp_56^T믣PUu؉⵹p 4~@`ah'{v'""""""""""""""""""""""""""""""""""""""""еb""""""""""""""""""""jljո. ~)jljŴ,SlDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""'͛xz-H~FIC=x)Q'Q"=6`]t[U=>k%A#8KNmm}׸QaH,+"v7ٞ0.-,jYkNA؃=v>SO;q:}9 SXֵZ䠍v^ޠ~cZC+;ŷAXj RąRK';Xn+ȅyFm,R +>s|M׃b._/=N GeSU2  @=7b^pfڽf{V'DZ פCQ)kQ@=؅w:^fqP0XFސZܱs?-d6I_̙V +Ǘ`O;lnstា0^3;@*V['Mm}҇iJ vu[O;Оͱv_JWJ Z;d?ZP+t;ՁϹN?A|4g`g%vPvm;1jm#lBa۰^t?tkz+ӣ;wcT2rt<[2[GXXJwdH=B۸؆|Zjٸܔcc+ .Gv#y]fψv{gWU7Tv=>}dO`jAf&9|.!޷wZԳ|ɄqbR A ϩI 7Ou0lGDDDDDDDDDDDDDDյb""""""""""""""""""""""""""""&&ƭJ8;of ~?hzVT(]z|q=lN~ME!;7st=-neP|ǹpbBUlv*uJsRVU͈XҀvwK?-ܕle:@R1ߨԗ!阩 ePij!Z}S%i6JtQ6x?\|P²1g6f2fC;Sv6 +Ow_ ެ6+u"V0ڂx~Z*]zlP+K{+Q7[G +;vY>U=RMrP`w&un,U:#yy'X oZlFɚ}Ͽe.ŧeJU4I7t+| [Z5ܼ|:ĵ1՘VA +@gCg7 aRMx'H,ylr_[qor"-2K(X:Q"=|Z1Nm^$795+˯ :XWW[ q_Nug 7;Tuն/k:,A@'}EM(z,B3< +J V:>5e^=}ʣ3}@lmPqT_y@F70hkm! R|J?3&s5GÚoGGԎ17;jYI>@3"jjzj-w_ 蒼 ްyяeyyb=B^(VAVz"""""""""" ֵb""""""""""""""""""""""""""""'.wLAW") |8"+%HcWZRE +<O$޶=r-vuˈﯔ4eSY[J8"+?tt#/ҿ1 t#1ҿ1 JOb?#/?gc5~FzX q9} +ҌVm*5?:?C_Gkb%kc5~Fg:?BOM9sç i ?1U,銯c?0(?COvU)\z +]cA&A{-[ |Lu: {>%W{.ԓ2㕑r[nTD^IT.DoF[,"ɲ9"~މb@klXwbEUKVoZzٗ;|{", +#:o#;o"|[:JO!Nlj\mnslKh⥹W,##h|k[Y=HR6B[B8.1] >t|<[+;zOc>];/'0}TDD>gM^3hDz.ٔ_~7:'Bsu|L6jĪNC(/h +l -=,HOi1@.V )#Z@:o0nvVN<5FS˿"w#P;zK+9W +;R-w*Á`>`z^F#е :)'^gsG2AEGz?T%9ڣىww9.g:^ecZG`{ v?9':6ν6|Ij7*YC1WtJێ`P9@'S e>^z19hxCZǃmVI t%b +`'=8-F٢n`~2Dz)!',ǻ3b}I3"""""""""""""""""""""""еb""""""""""""""""""""""""""""&Թhe[ +0F`J# z#0:#dbn<:{y+3<[Oh  *V,݄e +>;::OYŴdFB$yu)~2,քGZʣ~R^""""'ͅ N;1zn߈;8Rx3Wbh锂6gf興ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb""""""""""""""""""""""""'pG331b&7S10X'Q30b""""""""""""""""""յb"""""""""""""""""""'vglk2<>62WW=w=wQL˰ҥofyiknF+a]mݒWȕmjrٰ.!Fk'#Ԓ}sO7tk `m@ vV<YwÉ {/be&=poo>mVtqi*(~[ψ#d|:]8Y[eC +ny;q'0z6UY b}ŔW[;!t{lwLʬא8Ǧy\a5(68P}^G)zuq[3[N-OBBy<=-lJ6=v=u_xƲ)6*@T̫l G]km kUT1ʂmw)Td r/aCvcR;L+ŭ\t<\b4H 21jgaV&R=G>w.8l cu~ 5+N 1$v5IZǪyXo{Zw$SZ{Ej[UbETO"tNeKp Ƕ{-v]ň#gԅOj{ڪŵt݉ ߗ.c)'-ZF:!ǤR^r#^qriҵZʂ򱘲"]h9cX9'# K(Er Fs߶e2rN+Yq'ױFw]Jd#Vj> ^XOw֋-IJh; 3%U+VElj VcV8De=fjlm.QYaAs?!w4%7.'dذ~cu Un+skrtXoiC\W#:èeu,FFؖ=$1=$5:~ʶV5Mj,P -rǗmQQ;UKq +kB>::W#`"'_ۍME8ίb#(՜>}.2w`Aȓr;zvn=xP!ZٸL~BH إkǘQLv@;&zTZen86;A #3S BkD]rb h }t՚/ żJTo0uuʭ\fڢ&>[?]E]D,@{<~@O^*fWuCz4U>-؋iFVy\~nK z/6uTWkRPqP<2I#DEzeYvלͤ)?tG'CNwVx!{ ޾o}n񯾵v4xAw֎e_f,XGֵb"""""""""""""""""""& 𙸗fWU8.-B Kmd~{丣;nFҞzE' qǴf7G|.#>2)FEM`2[-ĝ۟8Y@/Yt[S/?i5N]-v;Us-vV=9 5=.[GJGN Zrw@k_!1)^*J? \Y: ﶷ:7Hjz* =Dt{3y wKXcCgvmj2߳!i:6֑/ݫp?)FNskVJhV6mZj,*SXaрhhz++֕Z}9PEʼh'=1ǻhl8 >{?L`u]lVkp N Ғ]FǦŮ aPՃzwYo›l{yY-2r0z =12rqr/-k!Fõ-$x0E#d6{,tԊ/Q;oS\YWS{Vv=PpSĩcdxt +-seBĢUHQo:nJVΔ_q`Px8,0EV-j2lQAG@q?7=K ZÕ7ӑnן}{M^`5UIW^ۿ.gIʦqDcUlG mO6dun[ixpڨ7''JtwLlGQYk3+s/{׬ΓhfV=+[sZ *Hަzyzr`gfԵߞ*MfZCačyLtW-whAu4SˏN]=?cUVqe_DT(cY{ṿbn}"TȱWp*'s[t{%fUxRծ>*Wau*MxO.>"z(׵b""""""""""""""""""""""""'ˠJ"?qtGLׇk^GTQ=d}||DDDDDDD=+ĩ-{vbY5w;"""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""""""""""&z:=/_r" G[~"^$o_bqM7cؕV$,`iZוa[X +=oz,OsYdZcڵ|5iO]Cflu<ϳc>~vC*4P +98.[?NΠOjUel)VZfOݮVW/,îj>58ok~3@ʛݿMӗjT_x˘H¤1@ߧn0cuq( +f6rf6 ;a䕭1/ZZ5xXkBhTޟjt$rR{E_ӓ)#~zgDL} $6I Cbf"""""""""""""""""""""""Եb""""""""""""""""""""""""""""&竦ՇTPGtD)wFqh 7&=\M9uش8K +0F#VbGrto}0ku.TE7Y3`6XڵQg:RG)#'GѫƭyT64F>ǯ8T :Pw;=5 jE@b>fqY;j;XI#!IY΋<>>*EYZ17`?LbCcY'z>Z߳4r4`G薌{z~:{=+G%R>@NVwct3'Nl[AlzctOaۼSհRxծPlI.qo:FDY,x7.ɢmo–.9-z?^ZY^ zyDϧN̳1Ҩϊz=krY;o>wLSiĨFY:,[# Ǽ,XApdDí2!7eWAt6ᷯ&i9u 9[st`E6뛔Feez OÿIljZѬ(n#n@C+A` յb""""""""""""""""""""""""""""'6nyrǬk:N?/yWˉZԅ]3sē LY%ӺmY2xB*:&=ضrs=f=d%w{m7&:i|["-mzC_t4:_Ne nR? \s^tl{Rܻ&[;#Ӫ6uxV->_|Uf웫v%UB;vD޾_TnC7p։<ާWԏ +ԺZ, Ā@|wK}z]jZ{dY΂֬Cׯ4pr2\TP5 $C~:fgz2/0`S4^j:>eP6Gw$A=,HoilWkOuPYhAcR1A AU+~UYTT$ڵXjw{0)&5@q" ObN$_9mZZoa[19=l/񚻱Ƽe %:V/񫫾oymL\bj۷Ru8#~nsge-%ȵcێw]%il-=n 8㵶(R=ݙ]mCL|`{!RCMmb+C5b l}$DDDDDDDDDD@ֵb""""""""""""""""""""""""""""'>nCąUϩ>zՐ4{C2n})|ׅr:M}yNhsGNyǵގ~oepHt9[zMfL36#(bcc}SA,bcexTT=^/y#cSF>1 ʲr_a, bIU+B-h4T EX/Fаi`"GcН.@::$loӷi\,Kv?tُi׵b""""""""""""""""""""""""""""&h@ [^rtkuxSuV:bkn@z쩓S{GO^ƯKUibwg"0곺 |tT5>z u5 ط!rA-*@vz""""&bxHr臲o{Qеb"""""""""""""""""""""""""""""cS3JbS]խ`1޷y:tb:alv3 +T*.;3I=''oѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb"""""""""""""""""""&y:X];3e~Ml-d?^Y;<_]vޖXe-!v9?S߷|7W~}ڲv*؟tP Tx7*AL]wm*4@gL#&[u *dqd.wbuL|t$ed`=)_:ũ7|A:{u7U2,ZYqq'Zm|]Q0PǾn-UUhH]:zRcr˪`Qbz{s#^1lV.,~?!mX**W0m#>0/Pn4^Ke俱/ 9/1>u}3wƪ΁'ߤ^{uNFY9~>a nmR 6 aCdw;z/Ob>Bf\??/X,meCiUD} k=:S|WfMZ_n e K%He>=#tfrTř*6Gz;zT-f/X֚@cŊ)3UOR'8kq ,k߿ rBYj[z׾Ӽ^>6nvNpEj4 ƻӓudj_ 6eV,mh?PKpmq#山.;7<|}tvF+np{5>c%G2>$LDDDDDDDDDDDDDDDյb"""""""""""""""""""&iXj1)n@9 l&m1wHmV'U)5q6ZQEb[X;PE{yIUˤQmG'+m1GFť-lOt Sz2bVN1[ke*:ߚBC|WeW:nW{_jP# l9k]z’Y׼K jvdfcïKSA@O7tzTꯔ{(( +*R +DZ>@܅Ȫnx0uAm |F4 |w^($;r!sQuػ[n;(Sb""đ%~'Wda\6\X(d¨ zhIhq陔ԼnUP$]}fzUl%}96`rdehly&ΡU#.am(c}7;5ͽ|>U᪀쮈+.{ՃMBX +-@?n/wNGPfbDU6NiOQQ[*T 5{;޻hY3.N5)!Q|/~L'VFK0Y*aƴEܫkyu +$8bRHBlHU:KrC@fIFy)Iūاq(+߱לk.-z pUȭBv@$>Wj;u/~]8a)ߦ4?WbaZXЖed^^Dz3oI~ro$e*e`= ^Y>:6ɚzu' ,Cp_|W*d~9;!.%̷WT5o04P6uv>-fE <,aH>>]YM,]߆X`9s૯M5{4;2rJezqdr~뽃M/q^P*]8s܍K^ +6mOxԫbhw˽M]Bޣ3|L)hEKSNyw:tԩ&MV8 ,Th>zz5n x_JQ} +JܕAu A[~ea.IT _lZc> ^\_-MnǂڂAEj%Îs;:RNXmmBE@}flu?Ru):V'PÑf%F|.Qq﯄3[Һeuf{l*NX}Nk7˜]ePjAcζfq:1ƾvar|Isճ2;j1>R劑ٴWkw mcא!4|N^@nRK~Z-y<!;v5Ӹ5wS:E9}#y"΅52ݹ4GOz>/Id6dc>앸Gs’~FF6ky=ud}/=M@af:lFn)7iEkS'cc?\tm(*PFe?F蕿<;"6bCܥjz߈ӠPlqv;oBm'9W*>(=l#) ﯪzֵb""""""""""""""""""""&5B R9<} +v@j530T7ގb`mlfƘ772@ hkZפ*>@>phv=b';qބq#@wS3yk\9k9131 Cso] R9$y#s lC0Ȯ4@#Fʨ@aC0P5!#ff&8w( +ք  P==#z󙈈׵b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""bk*YXGb+ɮtF$l5}& +M4ߙN3"[bXt73nMtu/bv L5dd׊`6|NϧyDDDDDDDDDDDDDDDDDDDDDDD@ѵb""""""""""""""""""""""""""""""""""""G{AgL"k\hI;nݤWC}.`Մy7 ݇LIԐ_;Ue46c雰$YUؖ5T:VE(F& +_#؃ 2;H~UYH*NDȭu'`%:aR +ɻ('e//]ILnY}_%lcWUuı#C#;5+jTl u ;_Og)-7RV%ϸHu;s>U[/{G{3ea-,^myS 2Z""""""""""""""""""""""""ҵb""""""""""""""""""""""""""""""""'&NhQ$i\'Ps.|j^BF@^C}ޙUeu yF"'ёJo~N5$3lz{[K^lA wJdW¬sr]-90qYV]02ԈB2ùl='5K건'\y "zx+t7ʕ'^+oZ֦jk\To"k =p{ES&jyh:ՇO/9kM.+0q\YN5(zd:-u͂`d OB{n6F[ ܋F}A݉s+cuTZ us?u+q+ilנÝTٔ˭2۬~o~S_Κq¯HҨEhHdmJ.ɲamh"9Drv"bGlWend#jT,߾ðv~@bf"""FuGCjT`|uD镭]u@+^gltOIjݴ~62PH[:L²G4=!xw8r~z)c˒ؚz~gMV˳MUSE o1HזHW_.ϵ1][k^ٜL OPʩu |jvZ#H,r@{̷Orܜ |ǼnEC }_^&0TN-'wd.G^>ۧ~ÓIw>ǧHz\w䣧gg:aA{K⻢C?!7I?c~g=q'}o6G=+(KŎdv "M{GED6P x~VGZM[mXc>#~SK#?$?i?M#i}?:S67Oفq[çަڀ^n?BTy($dnl3#:T+Uǁp:cjxHNr~=>XLD;ݻObXW| ғq=qjY_ʤ(^@>͝2FA{1^@?3m%0 -cY1 +( +m|ϐ]E?9;):nMjƵ}ڬQAܨoc3X-~=k($kZ DDDDDDDDDDDDDԵb""""""""""""""""""""""""""""""'͉)]Fc!=8+ԼOJ}wfbygO1f%1|yHGl +&f2ϥd+BUlV[ͮGOe9UUˊ|뿘ӓFU#f|zUq:#H * wgw>+cst[eVq'C$""""$fgUt&5kmcTI*$?}^tVFתo5t:a"=AbwDDDDm qB:#_y!6Spf`Sl-v>;+u%5*"Q6li|wh.-0o];yxlL +9ǐ<_LjCg|T;߇e[x`A.ϼfd&-An?k>]CSAz񏎘U*KUjx +}@#o8rFeˋ+-<6cmGϹ߮7btfW CP%;m=n.555ߒ + k_^DDDDDDDDDDDDD@յb"""""""""""""""""""""""""""""""&5T7pKDDDDDHa1J  +,~r?z>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 64/Tabs/S/Type/Page>> endobj 192 0 obj <>stream +HWۊ9|ylR 2Yec=aCT]U)Bq9ˇw?}8Nϟ>|y??9&1Oe/Nj]Lr^g!Դ.vޜ^O8 a!ϋBļS O + {d7 +d8`0<%r~P7dO’KDOΓȸ>5vMe?_6]B'BDIمA-r苽DO2:G> oqVX8 >:N%`X䤮ٓd̟ա!lva-Ѯ8?,X,3Vso'f>h$+:=*ؒٲ 1Q"1+ke4:4n9u@! +7x qQ>p)[QLQI֕ +GTkqXZb)efB19r_ Q--R'IXAQ +TX.cpȄH4"w[tWRQTc-AvLE QR7֚*ug%tٵ$ zeX:(W/)tbKu/QÞ"V*m/Xf+n|M.JB@o`' +SKpQ`񅣇: ޫ%PD6Y2PFjv񤭂A[TbHjЯd3$la?L;Uff*;Tc;a4k%N ŌTϢ(v$ܠj]SIvO$BVG+FByXh@~Az`_bc5CEXos)_f*$eHvs3KHu>]+×]O]8m +߳]mZճ +on@GBp5LE?~?2.)3 8ři2H'dn$CQήd+[aJdg/m&9= [=! Xg!q,;a!'P]+Y Fp9;Jj؏qla--XM&?ZcK'nȚq'rWj:U͈=mʬP^^ `Ffq5( 8r͵lFkWš,n8z [:m)+b4x_V qd/>ـRꌭxibg0{TI8qsn3ӿ>Oo>s{X)5-)4,()d.QYƏ R7ZW Td7pV:U7ˬrcE,BƓ;ǔ# `]^Bc CN94#+~vvUv$4/А`,Š9&kbnbb15y}MWk A@tFBJ[ D  JfFmE?  jݤFHҤp!uQMfTulG;LS%{t c2~,Wc%14yd2CIsǣr i[38 7^H`hFJHchA8t9D- +RdTFAtvw;67_GLlLU4,@ +n92)le/wӇ/Ƿ7dt>?~E.& u?|MuVF@()|w.XĥTsZe+uc;"k<ϻ5!/!;$xK"k =bd8kȏ!@Q2MfSU ;kvenW, :}r@3)X';lcɒM]7koNNT(ŝ:yfr>G=;\KCsԆ29lvCy-AME)llL0:$C&qJ (֡!֍,-dj0dm҆wtjS=-Xtvk@7t +PD7^k`A!+rR|>E +o ʵi[z?֫dm !)2@A9diK\=p"-<`ëFIKE08i\/"JYXby- _4>}n8pgo4E,5]Stc%fߣ5ѓ;S մBd*I-;V,FӒpPsbK+vNɂPbnJto~!+0!b hyC'߾<)m 0LsR00{;@⚠_"R5C1baU7on:z[iQf5pZF/hDˆp)[̍ɭns-d"@ԭO~G.%v!@4sۺ.VMO?Eai((*(0Jj6r_@N\ek-^$lo+0[K0 +b`3ұӭQ"u~`[xz ›00 7dG.#*BfXTGK'#Vp:,5Q$8.OQR= +׸SbIY胹n1>Ihʮ|!4UI' gtU(֬GawkDdVBG[!r:uMe ʙa5姖l)'C:tCϊqMƭ5P2,I WC 1kV*\B+ؑŋdoK +5bKa%M\(m@) s5Q^S: FnW m<ֶjQAPS3uP PA'VGB[ھT4QB/qqxDf-g}SuS +/rjEw!8s`w~;vA槏 +QhYc o?"ysE_2jBjr_:i]x3=>stream +JFIFaKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Ka +  o!1"AQaq#2BR$3Tb4UtCSr +%&'()*56789:DEFGHIJVWXYZcdefghijsuvwxyz?-;{+R)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JPޭ#Wъ)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR(6 +28Y״)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRvqX״)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRLiJR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JW)JR)JR)JR)JR)JR)JR)JR)JR+ YRL $pIQ`)$r3t R9\r=}j}+ ;/ӕ|g3R)J_CT$ Llz1VY2+m,JF@>V ش^yY `[QvVNMn9ۚmpqc..#DVfc2O*vFG|aN5_t`LD*$eH}Օ)JR)JRRMY%!I߅2jUT[DKu$D 8%FW8_Qޥڤ;B[YYXJj])X,a"YdFNTSb#c$ I{ז:d# +d>N1S+vq<ҰTEff=$ wK܎Gb?*4CmC,m6n$~ cKlEYcDbe 2 PCPpj\W>>k`)JR6 j]{JR)JR)JR)JR)JR)JR)JR)JR)JR/єL &X nlh.nEhW2!WcWVy `"cH]˱S#9p} Zr" d1N- u}Pڗ6 Lzrk%vTgS[XW:{Ksg9t[i3JDh9|]cSkeWDžtI,F8u<)U2=N"w$z[҉c [j*=3ZNRE e"Pgw5RWtj/\{yeo,.g(_ 6G oZCQIVF@ѹ戾WLqߞjP3:~sHHp#ݎj+N+;; p@D_[ [N .BΌo&@$ǡޣgqډ-rfGoEG[IH.T5 +II1 @qghVa1V,U?hhOvGȾZjF !Ƴ%?P*}5u4f(6*Iqp9<*HbXcD>UqQ 䶚V.!%ZL<.kwVɽ2| EV.C`)6^]Hdl)-'>jfۨe +Udr ;H3PFwhM?[ǕdJgn262Tc53Lun!WWt'(>\yc +=wQM;ʗ-DʟQ8Փ_^jWwELd~u0w q~EDn<64 u$6'thmGæ-7rFP"98>[k II3(9]eRUT%L[./b +^9Q #n{I)]&Ym96]>zBi +%aaܧ#` +I.ZoMq3N!uE¢$2s-tTXYDq)wveiV#+IBnf n +[}8Oy1vշJ.w)@pH#5-tY&5+n@UQ qǽFKb-4s)mU©Qsq,қ36]RpxmUzjE:άl"!c +Aw}$pd7 +噷2p=jޕ,K2p + 2#ULXc[o`@ +<EIth9-IP $HGz:fK:\evU*6\&FgVՐU7m]Rʲ\Ix'{w(Va>7TH][i Ʊ +ەfϾI_w*_][<nţU*, +rJÛ$uᑄ|y~6YC!"-(*-s-nΨPJs`.yzWզan<`g +T *8&Gh1ndܕ鍭.q8!IǷ"-"YepP6FO|4ݪivc~{Vk;nQb(cetd>z.Vqs3#Qџ*$~ï%0L֏./! 8;&kٵ0F2p& nc֬#k5,k}sy[?`t\MuqqR.tNqA+$ېFᓂ5Ƃ"Mo4ʱ 9y5K6=XbO$}IWz "He1,LSa bpI+o YD ;ԾQ2T>ԖKgf@vdm۞)%GmS>̡ %^]㲻f9[b^ `B+5n#S eIT)`8w<9m=Ŭrf|#@ zwi{%̲J<@F`J~UNїKXCԖI7>!$P;Q6qهSɼBܞ1v߆ơm%̯e|F3.sέ-631v3T;#KR7@ɰC+) =+2:]\4Gp\P(P2Hǯ=4i#ɒiX#$lTos4褐F#1%LOq -I&FIa.'bܟSQ%\ӼH\0R ++)#8]R)Jv$?Z^Ҕ)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRVї#< +>=^jYei#Y|Đ|U+[5ykn"bHrFH|nl)Zώu4H-A\ܤFR2#C@=j_b9G"n1>]QJod_d/nQ6EհRG?RԬzzdwn)]= +Ӣ(~+0PRiJR)JR)JR)JR)JR)JR)JR)@vDd`9gZa-.Ѷ[#sqT)OF`yoAlz4fA*wu}559$8Ybd'dpkQiٴ#6N+1`K\N*mY׌t2ƺE)J(=GZA=%g GMM=GFc@s }$4KK4L*q/(HsW+GPZ(K~ E<1m$$CmU2/TȗJiPlQ7 Ȭh\9zE7Psq>t>]ow +qrYCSziQYA艠ga(_&C&Hp43oV nիxKRmf/5ts0I`cnqd@WĚU8Jy8yp,AQZԆK/#[k4 qі( #ڧKmZMZt :ִ_BLIsj` < G5Zxi 5 3h$uScoGN.n] <3#p1g{|JEpCGl1 pO*ڜ> :o-̏9TQn* +vȾ3RGXHl@UOs𿉠ӡf[T,L@;9o{XZ60Q,~Vewwh#*@? +jVV:I$)1X^No,?y >V=} j%/RY9%HUKHFFN0Qi:ƅX &s1![ ywc>u5䳹3iJV }!snn;Xz\Z KĂ|ƦiQӄJI+h'B¨'=_Ql.Mϻnp5I=4$OZn[9܏,(U秓k/lJK9-i!@bĒI@>'ڠ'w$̲Wfƒ9'5úFճJ^,rGl>jITX eحk_еMKZ!.lpyԯxbmBUuKn69=9;z*l꺊tHe7O`X;xQm[-YwH۫K% sϢV? =)c#mF 0HҬ펥32+qJW$X;8j>{[*S}^YkKon`Gn̒n8Le_;F@y!n<[ +d Dc;9;I#p0r}k)JR)JR)JR)JR)JR)JR)JPV?tԪ)JR)JR)JR)JR)QﬢԠeܒ#+pF5Yi_i%FPKŽtM/as5체 U숼\󌚷)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRvkRkR)JR)JR)JR)JRhDeV(JH$ppr8ַا,w :qPݹζWPHOҾI YI'ܒjGZD G$#Bk&C_\¬Ba^J.8GPHOҾJo&G |;p?:[w" #%H@.q@f2{+}WYw3_*Cy*3[85W]F}WO{C$ qս)JRvG+RkR)JR)JR)JR)JRShPAr LSiT}I"f³l +NJyֶ*C5DI=j&iM77Jח:6K1tT2Ыd'!_>"XUGi=9&;_8yy`5tZ# atF_:y4Sd%v)r#ur~h1kv١4Dvqܜ[LᐋU&x؎z}°#`=^\YSd#D_T995G\,q!&92C$m|繬L1`Z=7JوXjUm<+""l~/s_>*h2Gmn`m)tlpk=Zfd9voQ qezӭ>:K(sy<[mDBٶ0 Q[Vg +\ʲʱyY~s.O_N0{UOK7d`J&HАA!{6F# GT'Ls O'RV-[S@"+G "7m +f[9%e!B1 +Tm[{/+,oM=j4ѵ]:;PɸHB3"я23p}*+k.b"ՋF*ɕ$ڼLӗZf=g)ft#; +$wEmhb$feb'T]_nn9G€ِ7wQKO ^ǑpxцJ튝}Y]#ff3&~+f) ȥTb W%HqL:ůK&ܶэi3'݈bѨv +oIzkk &Ki +Q%ySpq>ZTZ~'J(C$jsgVᩞKF,i3_MiWw0q$p;)pqQ-=mVR1ѻLOrے͒>UÖ6 Y^FDs` 񃓓S\IxcpX7r0Kp8'֯ dӵm,ۍf@;:w ޢFxOQctۨqe`=ɬz{zj f2rFI;}BTf-GPjHI7ꭙ>tH71S˞Bʪo!ssA&*7,ef]ch *]Luڤ[$c;HC++G'ְdzC9cv|+0qڧ|zLTed{I3^'g[%A緦+:STHC)@0'9Pnึt[# _gYpX9W^: 2ltI <wuDjWvӲIq"],2Fc Y2Xx:B_i2 +ؐݍI=+\KebE^tlV=qX5o $k 7ڈh9($NIă$lt)JPv\)5)JR)JR)JR)JR)J!29?1? +핌\C,.YNF A+h%2#zžb|޸<+(RAK`I+=Whv{ +ႍUX '  b!흼R"dIl>m3Ҁ:NTdY'-畧D+Gö̥7Vܱu§"2v@`+۟\H‰)^-x]݁VKe*2f2cd `e+pGnFrdu!*A, ߚ{|Q)U dvF(ܢC`%cI;8sۊkQdQ8&q#gB + Ic$Oξhoo-zR1?SRn" dX-_F`W| U}MM-aDŌ0G,0Į{#V[E21lctʕ 2@ ՗BIVR`G|娻Ke3 +*q 8~k3hD.F"G8H$`sQok 4 Tœ;Y;Wd$μp\=BάC",$k#uKtշmWd ۷eXs%3鱚L le H־WYitܧPzL["UR {yKpClbepp}j熭o"cn&1`Fk#ÙZHUDle*liܷҙ%>dvR;FG':ލyP /dIzvoK,RÊ<)d'Oaf%Dd-$F{-4#/*cqھX%34v%!.s`(=9+ + 6i3i]c-N+[Ay-iWk#Wm'Lv-|7kgo=m.ٙ3}VŤۥ% C9p,I&DA-;okU1 >萃| qdYaeX"qG+ f {vK v潹<+qHJm車IP3A'R2}i\F4u4 (>V k̬9Qƃ DIdiP#ωJ;C ]cH:-iˈXB*RFpŦiʑE.@ab< +ٓJ}B Ynu "`Y ~{Yw!U߀<0OaNWWv 8`cq 2kCoI$RY`rV#hC@11h%F9ݜk5;{HCH@2@MLak@=tk}`Kۍܓn})7, =P" +XF9m{o›P\(ݎsޒ*I,]CV'ؒc$`T}OGѭ(>2Rrr@N}*u)JRg)^Ҕ)JR)JR)JR)JR+U`H8R)JR)JR54v +3퓊JRGԸc\,@ ئGp~;q rkQG澩JR+lIQTd>dyrȎكG0^JR6MGm-o*H~xRiJVSnvo9γҔ+)OaMcCM"f + 0PI9ȲA9AȯR)JR)JR*4̏S#2a5&%aRTI'$¼tA$l2He#GR)JP_rW)JR)JR)JR)JR+PA p3Gq'N,Hw}^\oڞe+tǺE8<.2+=ԥӚhb mpIߎ=kɼG1<?=ZY7€ cOjk3\K2fD .FF=Gz~M{Cg!y&IW~| 'ֱb\-.xՀvxl5Zݢ%D>`IBr!@sߜV)cFppعHb3t6b =Eܘ#׷z1Gd߬QȌ\6sx8$q+`3m=7l~UW2ZKhI +J6@`F劇q}qHa >ݮ0܌6~@ԋ}s%A":Gv,UXI9#8:~7UIdQ1qG8geo~dUOiah* },0 wrE}^xRJ$l2*J,6ݒN83OVT0eV 6pTϡEXz ԱۿFH Y \r@;8#MH2j`1$BoT x%e}]kjCn +]ARsM:*q3劇ṧmYO"hC/٧ =UsvU`N*IYNDα R$@qXpFyV>-Kmn񖷐Vʧmxa8W]vFHF2,=8ȯ5V]wE2NIK~+r#[*W +)*W> # "3`?̹ܪ=FqcQM9pFΏ(ʣN0E{i-ĐRq+6ac<d7m97udڣf*]ۛn ;A5Xt'ܵyAU~k'H>$}$ [i;X@>׊ž&7O sHT=8w+ng +C9Y Ţh(˳1ڨQI b߱uD&c;A?|z}UI^INFb@yyOUYY6C-2KF.HWܸHzړXV5fQ;Pvc=f]>mOCd ~VGu-(\O= []*i緂Wufp5 3)|x~-JM"J%J]̎ܜ#]oo2{MCnd($81%R6\ճxd@=lxh]r Ib$x6vF G'EUj;NqT[avHgMM"BCm{Xkk{kykF>BHӽ|6 גHK`̠ss[5jm/YT%籉-!l#>jw#6 ҹ@dP&kwݴe,71ȊY@qPy++2h!fQ{vsln xεl]J‘]GYlG$Bwi2s +y=\m UdلRQ$, I?+iZaSPkV;#)H%<#13`j]?H㸉9E}%)G>`9T[N\¯pP$dzwZ%.ed^Aeۦ@+Y,ᘭeqg Ѳ)^p9Yl-.u>iߦ śGWp :=:M#եo* JwKw4YEBv E$I$Ê)JR)JR)J|%giJR)JR)JR)JR)JR+74ExbIAV4).w1'r152ud)-&R3EYR)JW4MVWHnq&09a"(lGsnj;HYX*"f<5xe豀}nJgG}B ,,3LVrB䑕 ʪN^ a. ؗ]S7.v?]StgM7''krqF}j])Qnnx#H @+<ǎ;TR*-=n2&Y[zbAjU)JjiYw"Xf w8?_d3P##d`KӒ6 )JTK˩"iVI + +#l +JRpO%н$hRRU(mR)JT{+ص̐"gQx5@f-fQ)ڪ@ﻵ[Ugu5|hNZG9i^?UnE+&m`SiJT{̱gn'ԣ$|8>]vfWܣ{RJR)JR)JR`lHiJR)JR)JR)JR)JWı v oJK[I1^])ق[v6ڴKq9gkQ2]"BNvyP:ĩlӬ2a9/KupL 2:h3OV. [Vmc,'q UȾ Ο v=^⳾YVN4".6= }|/ |5uZe?o!^]8u !N8l)Ijy=r3-Y911Ecti5mR䑢ڰC#A&9\*9֡-4Izbs#R>3>^Ij{Y \)gb6gj6F1_ZWSqiqq mIlۚ nSe 3jeI&3:(k6r`2`l:nt:JFu6=Ľf&ucM GuEh?5Â.!L|@s9`Aq* Qф`HnG`{u5Rm/dY5G93jW->H Pay$^ 1&ye^|VQ)F0=+{ƴg]DW{;m.J#RZ+ZPxZMQ@U,Ib޽1Uķ ֓IpJ Զ;Hn ?dvy8ͳURWiO:d0䜀~*7o7nq wf!Q*Sp- +eXĪT2<?:7˪iy/. [V==/ wojzX +QICesLjwzwo,7iUKwKț܉ ~3KB#c 1zBs 5#[JBbӉVRzݘqv^ ,$B6VyB˧jvrNDMjD]r"I +_z=ĺ 2Jn@& A>U:'uVV*tdTf-!} +3UVWo {խɞ Ӗi-gsL~-/fZy"$\@vSsn۵mC]5&B^R +8Rksmvْ=ٛtl-g>u n=ΒɵXFAeFl"G=*!ؖR{6dW: zGd#39Y +$<_w6iĿv:2vl=v~!շG ӣuVhfHdg6Z@i&Kh6@ s銅-"nV1+d'EVg@R`Gh·J??Ƕ31ۓVQl'm<*Yޫ]iFg;bU%r@@<Cھ_MI6 JY$rq;Tc=WM4>'keMe&qǵ`l$ԤwHoXGYՓѳH'jyi4f]_6eF +}IebcfL,v8sv8k{#!2mܑҦj9V/#͂Vmp'Ȧ_"{%1#b"0|+=MJ%ޥh];yn%UW+ 5{JR)JR)JRygiJR)JR)JR)JR)JW˸AVf-c{#cD$egPFGƮg|1Ya1 +e*A sqbܼ<f0) pk6+eyHTř\d|ɠ#]%hXnh_RB+ <֡GtkՋTc{#xr~TRAi&9Rrw0>UkU$1ʱJ򳧑g +J}k5ދVX@ +[ `TkO+q +,, p|ONIIݒIAwԼݧ-FFţ JsvֽCK$^KFHELv/O$ڈ0N[n[hfU*$@'%XaFG^Zhfa+4c|Sp0vaw5 @-4FnTL5QTqXv8#Jou c߱3\z$w$LKFBP!n9};T\JlU +IVm###jacAһ]8p(_uxMՖ@rrqKӤӓ*U@ت0QW>5EΊ$wUSݷ*rĜ,7Yu*mbT&F\ via+sq#E]q$ $qwnbͻnR]:o;NH;k1Urė6]Q]8`V9/m5!c`ABܱ.N9ǦXkIfi~*Ǡ?uE hdue==AQ޵Ww\1Y2`8c}dwi^͑Y?hq1cbѺOo(DudRF1$q=ĒGRC0`>}3y\]Hvr\xzѠ.#u˫?l={Υms!2кa6@m-ZAeH ᤆUe]`g#E44"f-*WR_8gKH4$'OR2-ķ6 ʨY# < u,FKʈpĶϵeA|n$B +l*omg WKy&i_lQQ=}k2nMզ+r"5g+"B !Ŧ U + sAֺ| s+e\/M'' 8$qxb-)d t͹.{k %w3%۳Jl ciTid+ }#{ g>MI5pF.TP2T$ΛwutndH.TŒwS4?e)JR)JR`#R)JR)JR)Jv?r״)JR)JR)JR)JR)JR F B 43ڶ{hG +*(T*Ty8bPI%W'W/B]9mdrۢ +ېFn#֯m7d$gk0?}F}bRŃ $Ftʝݸc_k[FmFf,HfTS$qI7lhFU*¥܀ $~RV*kySRx8)h+L6TUb7%@2Fy5&=F3$aCFIR<}EbQ3Ftd8z@8ugIX, +da3.9FA+\\Gy$2|Lwdt+!!@\cCJToNܻ@n#+70Cm!r9`=jm%N[ 4™U`$sViIe_&*7 +c޳jZk&IRUK8(xd>Ị~+]K[$Vv|fjsK{i%@!\cIq_W^#7f?>ŕ2ed¤障Fh *R2ְϭ$RI ҔPơ2'88 Cr28ۻ!N0Iz%ZtE!BeN\r+zN8$T7Snm!Vm!:R8n!%(X%]nr΀5Ugco\-@ehf"d 8ܿtԛN:4n[.|U.;8צ[ +Q]'n0=+43Oep4][C%*$S[jz]~mLHA%iA5H@k/D}I4U|M 20VX [D$ϧ$Rd_E;5p]h6 ee< [ԓ鹸_6u}̖Kn#`؎TJ2|=#X1Jp2*< W[WgRP  R88+-IeXH\yƨ+%"\n@΍tskAWQ$:7EbI+[.ZYL}8v*3aFIն-նcqie#ULʌ"DRHwUU֓}'5 .,}h,=3VƱi&ȒD]ιd^*`'k$xb`<23F0X+SN\dWJ BE$ N5Nhu$sʬjHyFGb܊^M2m06+ uv[8C) }Zڅ h2+"6RW88珥Fh.b}!,9V{ŵn5;Mhb}JB$P:tlbWaTRjmm$O~;% DYaO;X8.oA|\:bFU3Gn3QR4BYѤU{Y~HfPzې~Blaar<9V=*7K]dx3;XR i<{G'k)A#[+ k;xCf)Ï\V}2w }P:Fr DiA6V?Q[ei27:1I2@ "pVa|nM8Mhm0!4j;7ӢHR&U +U`sui416xdUof*@?iCe}5PFeT 0lcثT4#vJHตݐ7bviYkV̒42F!{(lc|0wO6'rM3tֲlM8e r;(ӽDLҼ=G:^M(4l< HXT"@z)JR)JR)JR)JRw+.#p F:iiVp RU.FO8Ҕ)JR)JR)JR)JR)JR)JR֧+5{JR)JR)JR)JR)JR;ΧO?g+F.35"TId%˕e0P E[T$n5XLXmf'SiXn㱉W8s_Ku+by6(&cq rc7qK ﳡdlݻgx#VmXU=XxCcj h06LhgPpRy!H>#DKYtP\'%pH 1]4B-#1ߴR[$ + H&=je)J8-KE L_jXF Uŵwq0duVV# "]ji)|#U Fpē1zޏEehxFu8e8$TR)JR)JR)JR)JP鶃+={JR)JR)JR)JR)JRdMFGiE,[V0$?!I$rjV%+,+BѕGƻLy|SV7]Mi$+JUd s}wqq2i#ePJ‚ry=M|KjZtWE",VS1f, 99Y|V}r,MF%w|Z\#HN71'P%&M[g9)(9䚰3V1= +YQ28'%ե7uk;Lqq@)+Yi|Kq|4or$r4YdP]خ 88Q[kq %Eö8~qSWǪEpνF.#ǜҩ fnIeK$[\d9xCsjğƞ-$Kv"T) n|;ˢj6Y%JHDB7%X=1Q%h-ԾBTF3=<~T]] M4PtQDv' 8|]r>#[p% yb,x l-{̪U<ԚuZnA Z3Cy:M3[,g,QFAh*N@=F=:Z\JN)ē6IgpŶai ')j9X/HyuOtT%w4cTw$T EG]0"˶51sHa%s`vR)JR)JR)JR)JPpVz)JR)JR)JR)JR*&nqb_^I +G׀3YitaI>rF$m0y/c*-1ĝ0+NI!x95#Rх\'JxChqǙN2r?o,74]e (9$GB&;%B*:u$ǰ**AUItL]=n܆vs޽=k 5S\.LChe@qv$}hZO;HEa /ۀ~_KY{ibC#SG D@{[drfFWgO +v$r~Usn89jD#y~]3hڄW2@b+mebr5xq [p1k7 z皺R42JʙȄQ@e!ycKk*0kbHYvc pq_ko{! +`P6C-}CO馛Џb5e\<{$dFZt-V_ 3;γm }j-^J%8"6"n,w61z^0K"LDr-Gn.7IPqƟfgb˾Ex1i cr3;O52.⛓K2vvc +!g-nQȅ\tyA.1c Eī+g08X5%u~DȬl4lrUdy:,{S(ć 6xCn/EʕL}0?6n9T{o ~\Lec2H,+ZP/XIQz3*4d\s|]gAԮbۈ^J77wԍI&Ʊ(U'ھJBT7ʸyTCO4ʒ y ƑQK #nv$5:tf+Xm>c®H"mOLeP8+ SLd-VbBK1q81_rhE*j :E# aX 1,p9'qsyHev%}ghx8A 4-2& l6A d]UP4LchbݜN} Z ńmmep@!ǾHn$>¦[k;KIZ1u 4D2_^OenL14}1A:XxSUYYLI-c@$8iD䍘Pe +aNMGt +tQ.{>e.-4k&baA#7ʊ1=OzJR)JR)JR)JR)@|+={JR)JR)JR)JR)JR)JR)JR)_ >K(9s)JR)Jld4U +0+R)JR)JR)JR)JR)JR)JR)JR)JPpVz)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRg)z)JR)JR)JR)JR)JR)JR)JRZBX"NnxKrAQ>-KDXC>`I{r%G>Nt17}[%[aͽ)JR)JR)JR)JR)JRobXe-b7]2*u[8'\ }B dl{ vY$hzSJ)Jdnr'?ھJRcIGh JR)JR)JRG)Ԋ)JR)JR)JR)JR)JR)JR)JR4+:p + 2<U1n-<\ 0U"2rq͗d1?pOldn8-k v1<Ҝ")$|s*2kgKwX@ (FO*N6zcgh1'$bYRI$z᳕m<2F>B9 Hϥc_Y=܇%ZnP 9vQ#sY,h$U]%PS8޸$d"I9{|AK]E|ˠNBjWj}`?PuM"k&Qѐ#K#y -X\aiCF`Hg0lc^=;UXoM\vǵs$eQs=rYUKeXtHO>]e6ju۔X B8߅`$O_CqɗeRGOVɥ&t-$2/`j=|VuXt;t]b/#!g+d.|XZh^wHӣ*QUOnkq+qۏN1ZljӦasǔ>1#Uv,{*sTqc$Zɮ_΄KFrp:8V~0q<ǀZYALul&5Zl{cR9'pGeekY-I"UY`O3~ ?=)JR)JRgˊ^Ҕ)JR)JR)JR)JR)JR)JVF5ʷѬe_Q6IX'ެ;Wt?v`0qԛvOUHԋ`Y Qw؜⠞au(k֎B ds29USQ.|IeXT($gIl*k>E8UlƨWRj&| +Zd JW{^cֽxT0)J3<0J*P2+Twn gZ$,=1&cm#("rb +T]2 ˬF8Y& lYpp;SಥBPRS>]fR[THI5;X‘؎==֭}14k8-#%(=ƦҪLqq:W^e=ۣI'QUT12I=N¾tT/spN?4D]e"B+CLmù@&?xg;zΤ?f_雏J?f_雏J?f_雏J?f_雏Jo iD3qϡijqs0 zǨinY&fw -$(('_:vjD:KHpH!FS?/%}E(]]Vfv#!j{/cw iioBsM)JR)JR(C R+R)JR)JR)JR)JR)JR)Uu]n񎜑;Yd6BLXQ + QlM4lH$ +@>2N6}Wv$oU*je)J֯c̖ [xH.#wu =d?}M^< +ńP!QT gsU+_>OnpyɓHԑ'}RP6QX̎eO' 'کGP[i UNОհ)JRVim;MotS|a +#Lg +#$V,Yݎ]5OeQ\weW#p3 Fq'>cv$jdI$OH)ZŧgSfw"BC$U燾+}ƜЏ~~:]W8$F{fZF>p'rI9wOWDFn pu}N$< IHPǯQn=rp)wnv>h$Β\N}E!p?Z]mĿSeKKt?N-1GAQՅ)U yM3q# ؚtfKQIdIʩcӌoo*Oi$ƭ"lb2W9ϸ5)JR)JR)JR i.X%n%h2S'F:ְɍ * R8QN1?i\IHZbC$!%FrcJR)JR)JR)JR)JR+k'PI[`Jeq=-cHP;e)JR)JR)JR)JR)@_s")JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR(vgIiJR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JvC˚^Ҕ)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRvGRkR)JR)JR)JR)JR)JR)JR)X%,mXۆ3c󬔥)JR)JR)JR)JR)JRE"ӕSEJ)JR)JR)JR)JR)@C R+R)JR)JR)JR)JR)JR)JR+` mV-MՄ{Z|VItx.`@O9+빲JR)JR)JR)JR)JR)JW>J񭥥1۵;G7onNi _vXՆ{VmSYe4V)JR)JR)JR)JR(v_pjM{JR)JR)JR)JR)JR)JR)JRk^D"!$fyvV,rrU'9y:r"O rk\.繆%*Ƭ`1ϠVt0#1cW||,Ega&D9kxN`i[8;E@f%"//# +=I|Ewe,kڭLRDHv} 3WH @'5h=HaiMͳH1Yᘓؕ=n6 #3DRq*J}>h,X/FI+'YLx>ͼ# 3toӚdAbq$8}JR)JR)JR)JR)J&;hx 5Af3|b,>\O#GF"K6y<VMm(x;Hn#2+L[8;m^ KEeL<M)JR)JR)JR)JRvDm5)JR)JR)JR)JR)JR)JR)Jm"*c]IaaHϮk-b|<A*4%×f9,#1>䑓R PTv{L+G\dWF2 |2wW]![M?m3]Gqё?cb*6C}]B;Ua4bQ|l:6GwѸq$L{Vj7Zd3K)i"$$۵̪2xUՅO[^4{Rɗ 핋PxsZ=_4]" Tnuq^Zhyh^#, +P̪NFr0qI[N?fm +38;W]ZV4FΠgSɩԥ)JR)JR)JR)JRpp$9 ?Z& Nf#_OU fEOLp7mZ4WpJ;FA둽t`$M qx3Ҕ)JR)JR)JR)JRV8 +GJiJR)JR)JR)JR)JR)JR)JW`y' +&7r^sjo.SOI6sŒyZᕽ໕+w;d 1߰PXD/-KXUKy mHTs'U˦]ZrNA1Jd5qilcAq]Oz\ +.!*% p:\ GK'Hѝ3Qp>U[ Ă&ՌA '+U׭4e#F`QV #}/rI/.׷G-;X-j"}Xܞ'1^X¿0OzkPgIִ.tx;p=z +uwnxa_FyR)JR)JR)JR)J6 9u)JR)JR)JR)JR)JR)JR { +"$w"ɜppyy$72@ dßS_uF8o^[uc"K|+4V*2ǻX5L;=GfxMx w<#5OծEY +X_B턍~#>5MOL6yO.=I.,4 % mcoo56W`թ> [2jZHA\zzwx$Dn#nB`7֔r[Nb2x2ջ 5GsIp%IUŁUh p2y[;_-/1yziAV;|߃(n4iuMm3.W6$x6ͭ_Yɐ@V>oّFqgw <2})*R A E}R)JR)JR)JUu;kEyr NY50Id;畉-$d{j~}m5̟v(F:ͬt{XMI{DJӵ{Y<xsN?[6k#Ib`ꬬ;FA)JR)JR)JR)JPv_v״)JR)JR)JR)JR)JR)JT wQ:Ew;Agkۮt ⥎3tY2de\!j:&F&`]ĶI>IDI/oz6sֽ׶egmA<3ى?き<`ڬkN2,%8$96;*\FGϡUjR(Ew42%@ CԠxl A0Jҫ<w`t+`Iϭ4jU2/AQvĪM3(e)"}OePb`=I 6U|܀=QVֆ޿+GM]2InwJ )"@ p#Ym&D~f8m'Sf9'[&^MP0zI-MČ}j)JR)JR)J_%Ä5,{~ލrvƠ(Nrs3;{~URN$*뒧|n!~k?k,Ƙ֔چ\ xHe>k[q] Qfn?~iJR)JR)JR)JRVgRR)JR)JR)JR)JR)JR*?0@b1 +Z_C|±R%r;ݎ>Y@~#5)JUFvzPZ]]Qզy&8Vb0Fa_UV V,c$EUù5Yc\j \`CEj9Ϥ{WwV^L )0j| 3;',uFiN +D%T]""D);q__}..jlJtR?^5U(ϸ5?o Ke;ͩ'K=t?*ەr*Vj0\Lc)0k9Xjnq 槑AT@Oy)JR)JR)JR$,$䜚`wgS6MOݹuEn`c{Pk-eo=~WƇbm09˅̇F%?X|GOeZҔ@ Bl9u> k\4v{l`,~#ةJR)JR)JR)JRV+MJiJR)JR)JR)JR)JR)JRfɨ [H AB${(?wU^#§iiJR|MՖ+i:WvZ}>h؊u#1\D'q)JR)JR)JR)JPv?tjM{JR)JR)JR)JR)JR)JR]jkcC, 7e34/J8 ,=;qX* +)JR/IJ2ŭFzaẹsqWYn.ecӄS֥:4yy +s}?HGP!L!礟OʯiJR$eRR AЃU h"%-!en\ZkrZ_DrL7uI|Gy*fk7E;D*;_g8W198[y +w\d~"7z^\B۔dW$u  ?QC`0F@q~DU)JR)JR)JRVtm5<"3eϭ]LvAb}XIT]NiduI-Xbf?!VO͜oe LcҮ)JRxFk`bD?vx&3ǔ΋[֑džR8*GR)JR)JR)JRVYI?JiJR)JR)JR)JR)JR  <'{,EbG 21I$R!gڛe$>l좱M.rO%%$sYJR)J>7G\ɵ ؕPq/'i[ 0H3z>>_˭NO1Xv8?G[)JRUF9q &)F{CFdmN),m[ui"l{ vؑ~Ab;v\\\Ҕ)JR)JGJ-WwpJAY~w5ZhP0f+ocsp\Rlۈ# "'Vv(L8p9sS"kD3찉@6v#=U qƎc=Md֮.nmD#dWV\ EQxt}^+0Nl + 4w1ou>Ҕ)Z~i/[WVkiHW?*Qcj$ 5)JR)JR)JRV\U)JR)JR)JR)JR)JUO_: KWD\-F$aD r@籯 uc"R M#=gV]ԥ6p@8ݟ=XLSX*ھJR)JW:-N8mf8R;as +BfBc.&Rd>VJR)JRMm4nRkw>}1H)޲>}cӓO}S@ޝ&VBbOq'Vo[%ճnGR=<S)XEJ¶j>5HM_èG${±r7Mpx[)JR)JRY nծ%wnLJy5+yĝ)qs[%+R88ltYRju` A18 hBg2AqiuN%RIۗ;H}yAsE>xn2ky~F +h3YjR]0*?͑EX/a 4wQ3 +*:=KDqNI',I& +ȿIl* +ȿIl* +ȿIl* +ȿIl* +ȿIl* +ȿIl* +ȿ"TN4[X#q&`$(@>g8灟ZGZFEu +(UPҲ +ȿIl* +ȿIl* +ȿIl* +ȿIl* +ȿIl* +ȿIl* +ȿ_]1_U|52H 4`uIS>#A*֭rdu$'w7ot=)JR)_2H@I8Iɭ:o_ 'ud8sOos[)JRUx +/:*.^[rEs!i'3ai_E1E*}iTtMaqHUL>le$gsHVWuhW `d7<9ooT4 9$zH{սWk ki(}5Yrr^[h 2vJR)JR)JR)@VDU)JR)JR)JR)JR)JRMks-ԂU[ +ӬB59$]Nllma`/en=}zeDn۬yJu L 9(=2}rb5MV."@a٘V2<dv5)JR 2pz~$5OXͩ5[H`cqZIa/nߝ"C͏]ijz¨Y dVJR)JR)JR)JR)Z5˅Ѵ/ >Q]hEk ~݉$5:)JRU?*k,Ƙ֔)JRcĚ,Ӯ(a=3Iu`Uu _0 sQ ^_X؎$ CKQӟ—]X=Ҥ*W`Fl' [MȊo}hs8+40UU%$}+\k[]Ps 9D&'¶R)JR)JRV?tԪ)JR)JR)JR)JR)JRT^_G4}"f1Q}:sei!C>u.=OKchh'R0Y(biE }̩|~׼Aokc淴bʓpRDF@$TڿJ;1 ms cҴT~n2`2eīROǨǵnSۯK +o$G̊׷~#PNWk?ڋo+`)JR)JR)JR)JA,$䜚?ީ'uE2 ;W)JR)U^#§iiJR)JRSm/Y[;qA\cګ|!io̚v6_[dJuE#?\5R)JR)JRv'RkR)JR)JR)JR)JR)JR@Ь5#OjnHB> +̝O\np] HPnqGzEuW|&.3ij6ڽKGSBG*xm pkzL2!1KS8'a{gyX/n'ƌ5NҾ\]H1(id,|S<7a/M0c͌皅 +R)JR)JR)JR/?@ر/iO~ krL;x$qUQH)JR)JUWcZR)JR+S&zq{mR;ȣ{ Zu@*Eq?.)_2:ƥ$p58|Z՞W6*zmF`N_r8 `۩JR)JRvK'RkR)JR)JR)JR)JR)JR)Jld$ lqYE5HdNJ TkX:ŽnnWY)̈xea9 [[-JiO~:_Z N=Iڻgb q>[jY[[)JR)JR)JR)J5CF 4HS0N£7rGq[xzmP(nc˹foRƔ)JR)J?_LukJR)JR+S6soK_Q1`5e'`o,jAm8* +90*OQTYpI$$v >G"ťZ̗k?$ p13*m)JR)JR69 Ժ)JR)JR)JR)JR)JR)JRKL}lB>&%]G ?Xc -. +*f9܎5{!%Hdhfyф9?!i.b>hpTVʃy-B/qmVHudusiVE?m?mj-d7(2s#ŕy*0=[/(H_Ҕ)JR)JR*k=Mwv@qUZO4!3G~^Yd#uGzTH:6,#>*-J4=B"!dsY> VnW> VnW> VnW> VnW> VnW> VnW> VnW> VnW> VnW> VnW> VnW> VnW> VnW> VnWWZæէ=tZxҳ2_p" + BY*rXO5/R9# :=v}!Z\nxcMU_*9 +kig>oMXI⸈[!^d{Qk##p9ZAp-%Y-cs9#r_z4//.*`Cvy #Qu˨%E|0 ''s{JR)JR)JRWs21@FǢ9dc`F!cuzZMђքvz*ܢU{ o0d +WraG)JR)JV̝CD;>="m,8ȸ8m)JR)Js]F20aRi= o6t%#ʱ6 @ c[1AڻF6cOe)JR)JRV# +jU{JR)JR)JR)JR)JR)JR)JRE}2GR2>M" xa*cVVJpoqW$k*` A_ P2_]4Ts"<z¯k ݲ^DɝTT ^-"ԩ@Px< qRaan! g9$sUxEddPQBS,G_R)JR)JR)JR)JR)JT-[JW!*U]I#Ŧa$ #Ku9'IUF{JZyV< dd+ju#i [k"g>v*7-:O˝ +죜jI$'pw}gGյdO W3CثAzU~2%);xث`j5ɦhP"yXb*QlTLc'I=R]N8lf4 +T2P~L@+=)J6+ ~UJR)JRj~(&[B dMNzb^j:$ !#qRDXvdZjSC%-ĭs_mJRdr?:}ydQ98QZ6Q_e㑚Hȣ߶ko5CyC[ 5*B0Ww0^AdMw0Z]BK%ϰ,6p{qQkw˰Q #$Ik?*7wԪRq ʐG9mW|88?h\x5'*VۛnnpS~|Ixh45MZ9ŢVԼ@ac޽Tx>/jߥlC7X.;±>(daL4T.w/)뚯Gz,:ks;Hd`''aJλ{(nz[ecC#kmS[=<{ѤV,e+`?ۉF?睲KRm5xZ+[`SV"AX5&-6KbP5ew9'$#jʉ j $ &  +; kNHTRyˆݟA9uA,!b/ UճWzkk$m< 1`=lZRK>rKG \h(m,MqbXaBʠ7pA8#G50uu8㺈ɘh"r v; 'N4(ņ8Uqpp=FLa)1c߷lO)Zc{$uB(۸sRu(c.tfVј݉ w*T}9v5cZ*Q#cCѻRp`It}3Wl-VMH†v>3gV}V5H$F #yWg,۱SѺ*C E$FrT'vI5dmEp]DPF|ʠ yZUiH r3sob;1xpjPn$rbh +r9bOSS޽$,zdapBSXF!@m9\7@[Sgyi2kuPm->A1U4t*`&nہaA<)ҽj$~"xwP8%T W dI/" ;uvyD-tm"2[&:Πx {UΏgweZ8?>" +`+e|chxJsZJ]dQ- Ƿ5.01ZƤYw`+ۀvsQܟZJ5M3nr 8 G1_:4K\F0@;"TRBn犪MGMFfh\'1n9;ާxG"2/zڕ"GܽI@`=+#&"}=x=6x@W 1ߌ/ Ǩ"EUGzW'}:ћl7LF౳d`Q5CS\UbGd(m.8$9 _i,}[H@M +P42\, $Nr){m'Jܳ?eFaؕ'x+^X-.(7XbIz#ʹ$ܶU:1xcIOYJl\8'B~݂hh܍iU>e\ sP-(Hw=ܮdub|É7 &)5=OSXQ+TG0*.y` _;hKu(CK"1*Yq*3k.&Ѣ DD-np;&@|іZet񹟬̡Q;`RRey(!\G@d!}_x{OcLMzwN,iDB.qB~YKF`J,>G"[jjT*=KV%)$zESۉm7x3-cǘ$ϰ$_ ?<26E_iB*ńK)FnH ~XZvd#Pv#cFxf,ѩ@79'5{eC:FA V(xE) ;~HŶlܪ]p8Qzzg91'8CQD*@q*,:`SIU?o ۊƺ,z}@#9fEl6HO'&Fо8Mǻlܜ~{xm"U  1YJR*z~7^xD^ܯx M1y399$&Gtb۷lcߺ[_ۈ\i_uL ]|+c6r&AĪ `n}e  9AXm')p_6=1`C;W9ڥw8c`  } Gmmnmc`P 0W N`p=+*YĐp &]LqmjKF!*XۊmYbnWV1X>6wVt\$wG֪nm{KPb+-!JIs}ҾUgq^UC?\U~u<(Vc.FvG&}Og8v:<̀ۓ ackE_* Mil)줘 `"&7gw{UqW HFy,x}Wȩ dWy5pkmI@ `N8X4ƺkt7̓FK 98n{T`#X6p{W+»#m|qF]_L3m\5d{ފ#ꔥAfP7Hbgۏ\`'T/%…f@܁\cz[M`!)}h6Fq.q_vwבXMq0L (f ++=+#b81Oh$R=9ch-bG +_ϽFKYgssƃ>-եV@`r:zE\RzسgFe0"&7gy~׍q3ecR*JJd)covbِ`ɸ2"@#vs[c,@W)JW˸d'G }U&u $;MlsWu AU?5"[ܒ +0yF^w +2du+DUOmyu.[r\H1v8p8r>f+]>k]GP%Ɖά +yW TrI0I’?"+W{(-3Gq8[Xs x*x "Wq),}mr;oF!sŤi7ҐBMF[$G($&@ӊMݬX3%k#͸qP caee4I^4`0KE_UMҍ.YʹN3RN*t:mͼ,&vU9[cu# g885u}2OiNM93F* +pqTdi q\i,ʪв< (YA/5sv*\ VF ӮzGIKE,@*q-iVĻDYaeRH@W<sUsiv͔SFʁX`0~;sR/tt_ ڼ[Nň;TX t+co n(e d{v~km?%f9 #2gR~~$%E-:Ui-|{sN+ oqjqțIbZ2$F|x5O30$,rB$(Ϯ^xۃQ_i+rR]+2}QSlH 8U7 VBTQ7EROATF#ۗ +*N>B[O \ O '&DXyp{Me(:%E\g QRn ìSJW{)VPq5e)뛤+&e66Km3"@1Շfn#6Mg?F" /ѣCp=+b(qK%3UTbp${tiWv6V-Ԅ,yUpgUҤ\]DXl8<°Z6j,!Fx 28XӒOu'\Mc,R|䉎\p U pَ9&#ycE{gnOqO{Ms\4+2>;rv.{j65f7՝ < Hʊ.X-Q@Nuq g#F iZ*~>URB'9 +đǿiR,o#!+V 7Y&eMBHI$"l(ϗUt^xru̽ J8Sɑ#+g׎ ] ̂p" P&Hx/-mXHHXh#NăQ. R49!;/aU6d)'P PUy[$k薚vpfrG܃݌VQ b%#`npIU,C1I*K$`P݇Ͻ[Ҕ)@6XKiJR)JR)JR)JR)JR5/WRD A ;yVVKb0,Nd# @T8<9klIZUČ'.pbK};egYTpT'+20x5J #o`4ʨ^6E,6<0iJ QžbH<dwRy;W)JfA'0Ga0uC# |֥z\ZD o rݤ(,N_5HwpEgN<+Z[.wuVI^El$8ӊ|+h4$EL[bc+J{I85?hA(lTc*8`n|T(Z (+8VRA Vq@@ OΰOiL9KaVR%39}AɬrxV[(AUH+,n+݁=k夓\F71S#dvcM}šCq4y " +sxN=*ʩNJb!X o}T0SɬڟgiGI I^02sFj4逹'NO3U^6H$q봞1c}IA%ߖbW 0HzAe.ps(wi<m-JyLqctHA =$0| L"I*|I;Ap8Z,W3|B$2UgPrskib8 +3$I$I=+ %Ih^B7QeaA{.k$ C'CD c!; _/y ^W(Y\$u . 9>[1d]+cI#;V O ؝=c-$vgN 90xB݉"bYAʭ dw TU>WWR t{Tx4T{4##v@f셇>q;.&D"W`q>5NaӌI2Jt GKcuޱ͵6gç%q@<;_BYI`^/U\@bNGMXڭI +*n%IYt8gC$a}Pls {L\v{ 84K}dKs&$rFI,bpI33#JÀ1$ՃPԥiZL,g G>CXyq..c"paF3%49$j9-)wi9qWakH 00 2̡2Qч"[i3yٕг*ČzFE 2A T 9!<lFҐlJz$Jy$QI18;s4{{/ԿZDĻ*; J|)hckpҭͺV9%`O6ߕYX٦AbWslqj&I2D*9_~+N,]F+@O<7*;}B +bUT'$R5 .-DY^&fD;] R<> [wRf#(di އ>VQ<ȯ[!]遑Vh4dO$N!d` +8CӞQg7[ 4+$eG^AR^\xn,6@vnя)ܼ~%,s$=!*?v瑚qAI Eb.U$6[E挣\4j >ȗj= $w38`A$PBn6 +Y[OdQEN7wJm(reL76r1"Ö0%MY;$#ܹ8 >Hgh^SG𩔥)JROq e(8'ZUK€I>rMcQfdFNT)J/&!.I++ ROЎ dUxL-I 8(~Um:U8PqG3:#d 0 RF@ v޲Ҕ+ `H'.p2{jEC) }AJR)JRY Սn}a]5qFU($>VJW˸AV+;5kyDlN IBgW56L0*[>-H@ AJR2[H* _6Q^ijBUHR)JP6+sRR)JR)JR)JR)JRHI'zfn5K `V0m-!Y* nab tw{eB1@9*[nXӌ1$RjdO66m.n'5 . +in',bĒo5KXL%cwEی8n3:]EsnMX0JXyy&;5vn1H,J $kO<deټ29^A r5TK[`w2Y6 pFQW]GTFPg)J.1[EkkXls_O$^%b{62P;sVzku<0{W%~wnxn໅T]olʮTeIq˧MH:mRh'89zUŊ}OiyTS&Մ)iA=T(fbp|2I +՟Mk.m}ȣHS=Ƣ^%OK-=D!3 y|M ${˙a;v vwRC`"䜴Ę0XsK[$b-le-N2#8H$g#Zì9C̬HR:"xf мqC \na.dCe v UZ5q ѷP({wx7g=Yu-ԖsFcSw+ǜoV?" Cᳺh6u*FR!QpOj7b,7EUo8^Ӵ(g]]f}vgwxA=L#*C]@2HڦjZ[I)Yě7n eV9~3^++`eX_qP| uIdKQG +e;lL9 ycky3Wq^&}1oApY,;kxϟiNNڗwY bhhHPgdd=;ؒhrHñV ʚJ@$NF9*Uo%ja.̣ g}Pi]\6R{ԓ[uZ%{d=O(PH󯈵{+e=B˰5F2ݏ@Akoiw Fx.d#pF9<,wesG$F@d$ F?g kW)"r~AF ybW- @D*]"gX we  qm9!un,ZHFR Yl {NpeidG˾*MĐ̖- i2I]21;Թug[;xYCDQn)uRY0; ԭ#U]V7m7VXqAkVh捂x<ƫJk}*˹GbOjy9m,B0C#bյk*ڋ$ݶ +S{V%Xf++tO"Q HT_0!a*\sYX 6`2=1jE,wIgy,f!qU.A탚ĖCWf|z`%Dc88ϸ+vܴb8>pJeY'2@#Ǿd8rO0E$D;@5VcbYg#yTg wA}!bhݝ YW FH8>.wsyse@Pi@( +Xmq}蚪Vrɸl 85ŷWZU %N\prTrdЦ3qCҏiK |k]&k=cEw.:U{A<{WڱKU{U5 nb<sWޑ~FӚ zrw`2p2p*Ɣ)J6RR)JR)JR)JR)JRs{:2Iqh! ()Tup$f%&n- ,(^7n ϥMԷ̱Jw#%i'zlLkW<24~l&1&A<[-kybe9d8&Rѐ^b15>w]cOl0$8]S*Ǵ +4T)<=x C*.ɇ$G, k7ү +Z:G +I#:V;$m;NT;6ue$cǿJU(݄h6U݉U݀a0OE_, H/w-HjWialDr4QAr)lu a8'$=4d"GiZΥ]s8S 9iVv[a"7S@#Sazg !^3aBNˤ;Utrj0Mc;ݴ)][kxO^N3@Ȼ3yUc{,7@9ړ gFo*^kn9"QK% +ϯslqj}7) 2nE`9X/GfFFwB(^N;3^9#I!22R&BAawS>mr6IPWf#(qo^)M[ezySiX']=K 5xb񢹾Y-S/XuB4G=Y|cdHHbJ8^X'JPXKF0"8ӽTi.[| TntZA22H!Hb0GDy"" wP66qS|Cr$l\#!AtAO3eGs(?nd{U],zK [UU j5ˤgi-etd܂"eɫi6TVE3b{l`giz- zrJFd VH +Bd9Bc+Cmuhyp&H_pEp}-=WQ߯n-P]^0p;_-5u[+eUF/lV:t=>Y*Ȧ4R"(<ڵ;7mcSVԈmwBYB` +w7{{`eF0TcҶ 8#A.03yU+Yn e^\&YJF +IOڪ s'lͼp!r:pӚFՓT( b*FC[kg[;v;{fkLU1:T:`YYm(S S?7$e?^I RF[P +$ D֛-ͻ Ag< v?qکT(u5sB0\n1Pg%dox$J0ToUOak&>cRh6_$߷q5Rh,xnnΧ|՗o w<"Y2~u JXH"%lPe s`c88xO-tB'߻vO9SOMJ-BnB"zL +0b8qEmm-D3)Vci0X{*ڔ)J#*e{JR)JR)JR)JR)JR)b)){J1LW+)JW)Yyk޻)HBR$ۼA<{^`W1^ו)^b+W{^bC$öC ?z{v碽}Uv0C *(8U'YW)^ҕ+EԴu[i-gD*b=j] &[l%+؎#B=-mcAU +VJRiJT=SOmB +D":CdnSad,c+3w=ٛqzTR+)JRv?v״)JR)JR)JR)JR)Q4nKp_x9ǥK$W[`dam<4)U>%>&VI*`jvٓnpaVEp~uJR{4ٟd0hޟysKׅ,I*ɏ]r*xiJR)U:֧>=Bp38{Vԥ*Rԧ,-!Vmm 5+Mb +-s#(`gd*$*┥)JR bn3ϦqT~{|lv-iTDQ+G6q53W՟KIzyI!I+~'? +qsAvk$.eYVS@2Ρg#jOk3r]ꄲ RiJRTi2 KvF@HnFJG[fA.njd|}H)JR^cgfXpj+"\epܬ,|#n9zRkѬg+> p3s_K,\^XF#%.K7 !Db)b@s`5),-V&r!KKr 4;1ηhzK_A45K'P08'[cc3 gNxE[k BUbv@#>hHƧovREVbA!p\I.3gizuƳދaP껛q@ g~jM{qoDG4$疛z 2~=j{x'c"1FBI~NN˾[TfYTtrF6m5x6W(N;җ8Ϯ=};3kki Ғey_:J$C`S_K ,A< pF!b[< \-S$}LURΤv9 <c KgBۚ(1䌓ơŧj?Dʴ ÿ>vbҥ"Jy=ܺ4ڍK#a%i$gfYq@m<[h6<wbԒyPH.Z3()%#Vdd3k~ {;-Bkn3 mp0гJ Hʟz{CmUifW[sb\6:{kL{㝮g2R$2V(—h|<54 f`x 6jm`8 e'be#Np犋ỹ@bW:ul$VZa=K弖8dx5XN} ++;I^%]XIe qϥI$"JFrdePIO=Jͨؤz"wgbmcP05QL&損KcZ{ n+eFK28cR+VOPu5ocY0OO\T PjmuoRK1'w5euksk-Sڕ\ U*|ϸ6܎Ջj3ƪ7LrR< $~Cڱ\>}[K<\Z%e|4jIe#+&mZNih\&3|iw3x],w94DWy>fa^׶fhhF^Vs$L' +ԒKYtXj\̠FUU_<|tdӿD\$9HX:.>Q` zVZNjk!ذ#RE9 <2C\-ӚU cG7q/SD2IfIm; 8;X(ݪi|Cu~EpܐEӜD +$BY$VǠcLI$ex`hw#w~#XdH-=W$VV$z|A"HfomPG=5]1Y o .دhvenƠmz(w9\szm3ctA4X䔻6co?wUx. >  N4 +80N ]N}=kƮĨ,$*3'RRZ ̽G*y)EW{+6WiWh0{t+7* +T2 ;koͬO+l#.2b Ȉ6?y5y)b2qS +#EjrNU܊jZlZk%0erE|ǥ䷊Hyb7cFsڣ]ڕm  z%16X5/UӓV{i$6ӂFA+fkæDn|Y{{-FE:#<+sTڬBQǕHe|pj4~\ԓ<}| #G(Jn m>V ,[L\#5*FԧeH=]>P)gFd9(FΣɠYmnd8yU6V|\V ;z׷/2#p͵X8!|g[[JvP?yw^c{2eD`Lc98cWuVSVHve AA K éY)ecyJ#vyxvJmV<#k39RF89qkp..ōʌ+" 2;f%B$'$$bOrI$}gIMn٭dvH߇ـ̾ k ބ5 #is;VY0U!TֱKך2C|nMx;~| +m5ks!t +e|m8|+k{D͇aYy*T.0܏cRmtbdIg`uB0[ȫ2~~Ñ[\VG1q QepC88I$r; +[ZWܐelp֣PB,VnvmBۼ v^xyo.:΍mb\`N1ߏJ>k皴iy~VPhw:ۼ)$KhiO@#'Ɍ(P1NjD]xYP 0C6of$%rF63% GU6)JR)JR)JR)JR)JWJgij*;_ۤB\,K;OR)Ve 0# ?#'=wHcVP~_j +=+R8j;mfXFw+Ra)]Y0%IƲcbNH>¾$.sn϶3YA{JW⽥)JR5+De0†봒3*H#8Suc0'VZR)JR)_ "ɒpA}Ҕ)J׵ePI#?}Ҕ)J_T)JR6Ժ)JR)JR)JR)JR|K'IK`p;uٵ.n@ģG +FO|WͥjC;r^񷙙H|Ղx'hݳշyp=~\զ֘[ ##:+;f2co8F7?}hnoi/lI%O2`oYyp`zqV1h_MC, +W`s vcQ:Esp2B/Ke=Y|UptBPdO.<{mf9M$R\/ H*<L{v}v1إm"=y}l`1YluT1PVRC px<J,y&p $^bRAVF2qQkZ Y#V;ξQ972Z^e^Bc gvu}k4!).bH*v*p, Wx٭Ρd_FaD*k*^e%hm|\ZCJLOtRsvu潚ǧ*K'@VV%ASAx %] }$r$} +m Q܁!5,ڽn WUH&[tFVBnBř@9kuwdwAq(`3r3U> Ildc3s,,OƬ ]T+ 'd1C %Ef@G֬VTA$۶BFϛhzYޭPthk+v Ar O3Ƭ\2a)=Ufs m,B"D,G{gH >iq̖}F3;(Wd5&o[Cho0om]wQی3s_svj,& +J+)# c0[E]DeB]A<#ۑ77sGxh"mɹ׾ 0ui 9&x40<9a#'Q3xm rvʌ c>wZfhZ-Ơb2%' +v JF=;|Ko(B$2ȩ̠Fą;l . I49Z(KT28| ێ8^2|jp#133TU9iZJgUܷv˼!n;Z@^/ÛuX9.NKetdgQ s=[`*3#t)*u2g85Zګu /Ί̨#A)n'g#0NHBv'ZΰJӎ/Lpņ0 D4g7u >ձUG)^DlsڤEE-\H,+*N<q[x+ne)xpr#j0B+y3(K=@LO9 3\II$ *z`\g⯥aRI,x VwV)DK阤߹ym۞T=umMB)ELFUIHEE,T.F YSod]HAڦEB;H׎k2s, D ڭn_RgAHNIң [-kZ嶟jܸ Jd3@^r,&%L}G2<W"-lQ9bW,+Hz('q7AC:BPUa*C ϥ|j7'Lee8LX8%^TG_WӰִ"or$*ȯ h$dj5qsGs$%mܝU(@1zm:\Ē!%YAO@#Ee-=Ɵqhգv}_T1IzW׌.-*2ƊK4dS}6׶sD`= rx?#P,n/ܬJe1ݏ{؂*m~27 dmr ;e+RHs,pi>*] 6Đn|xOXm͵$q <$c#R/4vpB MJ='Qa& Ƚϩfj&)#VYA$իr ;KLLB3\cen{5?j`q2M +(_J܎;AM.YЌu0d g\ :n$bU"qfeB='Q^-$!8$I*{8x\SSaAl7xsc. ! +6!|7| MQCv}-OknP9g3"C)fܹ}Oy.mWKD2*k)2(N|t{>g&5=IJ.- +Uzip9O{V1{E$*DL30?J<=T!I`UN=C>-UFȤ ƊÏ0,5Emhh7uH$Ra#pˤ[^i&e<̭=9Fo.XnTB1Qǯ޴XAwt[uR]Q>wv5!M-+>:3Fe8qxc^n4Pw$IC"1F#d~9HHd0$BI$DЯYBfgn1 d6zɧ^YR[tFdzׯ-CK=RY-W?v:U] bbv2"ak:SG?sx1\{z1>Ϲy6}aX.2wT9τmʷPuh +2;'!yu9h^#nXH8=jҪIˢMy+qV%r30riJV ˴ 8Gn>f +83YJR)JR*&s5 ;cVT-zPH dpq⾫#YjFM ŔrnkJRy71 sn&-tJFFq*?6ִ{@Xmp3C!HA&Ac\bW̒,JYs_ uJ28aYiJRVk۫iQTIXm3'KyLM-Q +@lڬJ dϊ)JUEܷ6 eʦD 67wս*=Xlq#2=yUcª)]x/%8pBW(sQ8V. U',llz|Lz ]AIIu]Ht^$cڧS\z4;&t]̭Gi5.)T{#o,,,`$3f)JOu[;&tM̭F1 `ǚJ{y}Y3ȼ ](H)JR6}*]{JR)JR)JR)JR)JRϬkMipwC$:sp{s[d%X[8KsPj8G#E.r3c[nq>ԶZK+G>zҔ2Y-5/K2_TihVHC vz7OTtdpwr0#ֲWsTڢ$l?1!&8_PIn]'{F#VvյֳYZmO[-^ƿ ~V!΋a/ q{ַM4..y^fFw26%XO;8+ۦuxgX\I;j =+}/V:r;4Z;le Ē 89MVB<m@ +n= Nl`YZ9C *q8o1Z=P<IdD#F?.*CX9` fM'~Gj,m I#9/!<$T^9ݖFdyd +YH!Wi8~UDzMwo)R>JV=sцDyNYvb)?JIj3lC4a suUnn"z6UqySmƽ.$J+, >;g?}N_,Wy^Sʰŵ"2*|&]SJG3ZBQPcC1q_zɣ:{ \.HusYMX1 ݛ;rsV fIaմ\#b#`!g_RIo5׈&kDZ!#6AQEBio4mv in!K*0-{jcܯtYnlR@x\qkxof;Ғ6Y1+F1٥jm$x}@H=Hi՜<cYʂ̠rkI^5$sF#05@Is޲WCOfd"b18bv\ʤh*Jk'lfx{([i'1 |Zv_kZgӬKkBKh\99 Qz em#pGB^[qDq +=@8jV>%|6.NBBIzVz=CM\r2NI`dzxݏ֙2xIwB"!8"I!Ҿ7Yv\ %cF܃cq#g,H0S8q& 644a2($9 +{q˦jw7ӹHgy#, +ȤT }qU׷7y ["-@6I+k}$ MpUHiRul5;Bnd(+sOj^gsG<8rH!B> tƪ,5/w`k6@+SoV2K,F s.G|tukgVȊKtFǑN=k2̖NcGpGpj]DA5ͻB~rH .p+@Ւ+/Oho.&wGFygmh$kpO8%?ARJRV<):^Ҕ)JR)JR)JR)JRRpH8=<;%ܥhlEdءGڵ卖9 lG<0#i'IӣJPg›P;8$+=vZeI!=)!`Fc*9{c-ј]=ݴ'bIrEev0 y*:}ƜRyNNuYI.Sq! +;W(Fݤ c0pEC(w/aՌ#*9BTA89:Ҽ6tnG39y,Xv| +zV%m]YX?vo{'Ø*^Qv0=S.4V0(ʳm_0`7+ *H#+H=ԮeDTi +HEQW$d5hZHIFF%Bw#cB0+*C˟6ǥ-Iw&za >RO'3;,P6Gշ~sRl˪ۋov8m`*532tnCA(qddr=z@[J\!%6S(rs +I."=!"0_h'/2Ne类[ \Jǰ]t( ww.@TnP _z>,$$& ;Ae%iL9 xdl|`+ۯbx6HUv.9~"̷%DJuۂĀbfp^|Ó۱,yvo)L"" TH+jkmmxX@ȏ;nk-*m j{7 U+ҠXA_qhSٖĈ&9ک9] +4;x8'' +02jW7w"\Q0Hv9F¦2]0]RC._l{IuP9,y"@EkMkmOC`ho3u@Uv'wdLWCsveXPD c`8툢<,$Ӊ]5bP +It8nuJ 8bW*2Yǡ#j#춈Fwi f]Fq8.0Ekm m'HCemɖl{_z.j)|C)HA.ҌC0$F1SoQ\7F ~h؉7H ;r$߰J4|L-wmM3w3Rt7I\ČPF xFK1c,Af2BĒy&_h}ymtӕg,%n'$1W5:KBlڻ9 ~I-/fk2ƮSٌdn9z4:[LYAd`v`}a|?&<%@*.Wc2fsܻV5p#F%2W 2y9tֲi g"F*?ї[۪׵WғX@ʽXݶ5ZJC}-neϓXc͊ +)"]KRSi嚙X R[VvE6Fe7r8?"[.љL6P| +`kN_k5^B%Na93ӽM71I29 g *Gު4 6ӘʸRȅ9%@88'MM"'PZ1c J>k"d22;b% +ҽ_T)Q?F[OoS|{gڥҔ {JV5r!@<%)JR+3޼TPJR)JPV9 ^Ҕ)JR)JR)JR)JRPAFAҵQ0/ uD3+YYNJAwvQd8PY'$Ė7l7$3{Oqd-D)o+7s{Wiҝ,APy>zK=byr[ж c$ $+6!X y ybXPL"D\岼ac$wj\lJ|029R +;S2NK}_:mo=rHrQ$ܡ6lm`Og_KMo]ѺQYK GZZ31)TgH27y=6gʢjz }2Y_>"+RK*E(ಁrW ^ NӢ@d(N6'=S0~uċ/DY%~fT(01'qSĖO&g+zo߻nΦ6wޭ*ɭyFd[b@ 2yH{*ʳYE#}*}3V̗F29A"m"Hc-t;$0?zK2Z H܇h}NHVK"L1q1 ksf-{Fzj|셼L!+ +>­ٔw/V[jϠehuX!d98~᭥,P-Ԍq^:ɽgD"i23P3ǭIPVh[vda +R M$]Dʱo\8檤-kV+:LjdR䲓p}[UT +ބcӆNӗޠ"Mr#lCt|wp8W$wGvlG( y<k/NnVIm +Qp^i2G"2VՂ?I2CCݑ2dH`Y\kb–ٱǔ~q~;571. USܱ{sߵygZ޺Vp̂H".7GjPj7 lKo`i +[m< |K M +vzgrWvՊ?XM,q.#GUc >[׺fGL$r\ːHSC%@wyG>B{)*;?<7N3 +&cQӯNEܭRy;(8<f@.7̋(h<|4 +6oڅc +pc|Ek1&m7dt,G +}G,+hH@{RM^;ue(\' +]& @ȬqJsd`cV5\JJ#00Vc"&zX(,@;Ab'VDԭ幒\cEfNrqQ.fw3*3.K*ɍľ&:rv, ,2;ײxR'I Tނ$iX8/!Fy&jh3 n88uSߜֻonVFh -eT'<;w{ +ͥjKFLT{ +$5MM'Jt낪l`3KoQjQH;21N7s+.l)=䮭춌c%I!tA? N. i.nZAR(Ɇ0@sqQ\,5%m ])G@1Bomj#329Q>"[U7,0=#althon~*_m嶼? kBaCn3P<3uu)s-u%"swⷊq-܊" pfUzx`J'N\T"I*{jkڤw[Gd9Ĭ\UPdw$VAThEKh2B! +W'>=\L+e +ګ*A=6gVk}f& ps1bLj0ڴcqCV ^y8b0!C4;[{ܕ[E&=TF|eE3ԁ!:įpw~HIorzVBiV.0Bh30zMV4m* awmo4Q9ORKkU;)B]ñ=82,K +Pd]"R#1=M[麽%6[3D) J5Kid~1´npK@}c#i\ζRI{HwqQvxNXSO\I"i%jT:oyrwǿc&ֵ#Dgjn_njU~g $vwr,² o[<[+[ė*!uBǏ#?QP}FߣʓGnR1EV zgLɢYX-Ah?.-;2*R3qV:VHhɀGJOm{#Դx~*g!/+nqP54MfM.WӾϨL6'fXOl9s}IZjt+9CV?'׊yujw^!OcڌX#e#,du#$}N,md; azl.ܨ-/ EsΊ:q4vQ/u +|U6s)T$1)B ss1=yq,ej Α@wnb38x+۠qA#!ùm23瓚|?ei.M\;@9+S﮿HZCL( sΫ&eU0{UXXNַvr%dQ8cr=+om=Ī%YbV 8특)JRV=JiJR)JR)JR)JR)JR +\{2(;0+]@U dW@`qkZ7xbXF`99ۚTT$ d5-h1slё\a<瑚xA-hA$^PFH8#ר@z^tnݣEmP`Wݿh}p3|I +Ju pk#IT`F ^Wp1ccڛp1ccDXU|Q3:"1~dw_a@$S^څ\DW"9=He +.9Ҭ"-@#TU +?*+u*8U +8 +ظہvJJ1{R(cvƊ@ 6ۺQn9m'㹬6v_$@ǕT*j]x@50FE|Kwwt6ch a\gmJc]cvѻYkCm>χظ1c?:H!Py$).7lv$a(xRx#Zwa=  4Ar )\pTolzԭJkN{U1Pr$$gۊ6+ + (}}xRrvuGp$Eu#X " @UQ +Y=ȯ8Up5P+pK"#:}* /БY⋜<|F" y|3Dd(9 s]+ 6VHʊ@FE.Ae|>QDUA*rH8##Q;YgMg)'ְhS50ing29_q8$=^M:v7v3T # +#4* #<_=$7mۻv3g3_u EB0TE.lg$25# {zW̰:AFA8>ǵy4ܣG*+ `O }",j@bAh$B}(;@oZ֤u=^(jJ$t_z㓜q޶9CSbDP@P0=I"IFC  _3Et%]rC Ac8Ƕ+HB?u}Ҕ)@V'*jU{JR)JR)JR)JR)JR)X⸎}6*9@ҵv./m.S;Æ ոqVt*6.αblAڥVdXKyY?A~u*ZտCF4L{)q5cUS]\LB}A6iJR>4l8FEd;di6wgJs8`HDf wŒ ϋf[tm@OL\n Xʮ^']ʅv9#!N8VQ!`Ul >)JV).cD SdUQ[I+dBȻFr>>.)Js9*v P]B[+$ (lVVb9+3U]Ecoo?MC A<,3ªO$^>~THzpQ(>yǮr*ޔ+ڡV +$ j>&kH"Jڼ{ԋiI(E`~Fk%)JUtPehICYY`cQ,x9&]6g*X|]+1l67EÊJU)aIVGL<'UE jt +Z"u MX]\OOApкPARA0T{e/ NjN]J,$dPzRiX">Kp߳v8=YkG߷nqγR)JR^Ҕ)JR)JR)JR)JRcmy8Df82k]{-u&t7 +i)2$sb;V)}NOHC7c@9R7OUycLM3 #ʯK k> H`XN||OV.Zy?vw3w~*EݥĞ!CƧO$ePp|ǿjR֚R:trGnd I<Q[QүVL$c=I;dw9t>Kwe< z,5{KLUԓ`V_@zSԮeWhzUQX Bf#" ,W%&ElQ欳ј.XVWS`?|#E&P9%pC_R V8f2Iryd"[5TU¡PrƯ*ēj[N*b%m[D#4#iWWbgmݠ(V"2K2 E'UFTGkw;g$tвu\#>[SiRƲ* p[k&qyY6-Ha@ŵ6R|pP|sQn^xțR6"O>vwwaq;%XeBw۳u6}yoĐEhمėV€@NIjXo"EE*GBQ8aڍ}y#-"lW䓟aձ+۩`h]v ś'*H[h,t{͎X|UV{wgYe op`PX##*Oo&^⸎8YP!j>y9Uwugip*P,G`k/MpT*[@Tmk59LgpUc# 浽6JtR}^ X.%bq#mZRm 鱅X;!~Yoe֞n]b6 2\=Cc1^ioakHVED.j +Cc3ߎeJMcM35["хpPvQA8x2Aj 43|ϝa}*\_Vmϸ%/U腗 8߹ssu'kx,14뼍9qI>qb2 RES+`ĺi }GWʄSmNv8G]_Y,6gP@Gn>a]Y\)]2GH`dҢO$cJyP ]^H5/Hf֙pF8Ip?`07;ǯO e3%!O"aqvhfh->1 Kzksyw,S41I *~+yKpPXta5ъGiCJ۹,7'<.u&kp`3t}08)'9LLGX~b[.k4/"$eNࡏsQtXrEpue6oVx z[=+i1K| X|W {.AJ3v+K=D2$M+FĢ!Ǹ>k`?ۉú|2'k1# }>:5$s#ʆ9A.ryr=qWXkK3UDī L!كX9'I[n,uF|Vay󭾵3ir$m>387)=T۫-Zi&s2PnIPwnܰ' ,5FmۏXanʘaCFKVI5έ{qfvά:TUIh:7-%A Eބ8ϭ]R)@괥)JR)JR)JR)JR)J1*` bUhp[nU-J/#gȮ\Y/<:e1ȱGg":!B(0~ɣȺaXz{V.ӷVGzK+&Dh~.kHI(!b60hV7 ospj+4D3Lo_a_7O_/m.(;nO$B"-n*\IU5?j@^Ʉd"%mĮv b+LOC&JG*zj3<{V;ԓԻ YziwL]{Gp皕J}m㸊(F&8 3[CM6 jʸdz3>Ys^e7YG5’[Y[}A0$T˛ FU) [+ny-ht븦cٸBv00O6Z51n sO`1A#] 9$Vy޳6qcuquba9wޣoP2rGu8E`2#LҺuمPWFO4t;+ukyXA@@81NCP+c vfhbhpZFIXT8jů\XD&Ycd\RARFsXO#]BbģJdD5]")cUwmԣruQ&k KiND`4#5 +7+~1YƓu]Cq|cݙ"̥+f`;s_:F}c{us4вܲ3FAHk]"tjH5BScoڬϐ۱jt{<7VnfySGeUk?tK(tDU29 < eY}lEWipuIk>K#d0APK㜃7ޭΑCr+0E'#A^Ecy$SFf1a#n'W@ ULܩzo1?#0o@Qz ܗ6*>)%Ws0u#0x9&o&CJhY~ eHkxr$@3zRNQ{v5Ls^2oPKlSp VlV]FgGOq ydHU@¨ ެJR괥)JR)JR)JR)JR)JR)JRxN+RCJ#VsF}+iQ-t{9e5!#{v'<ǁK)JR)JR)JR)JR)JR|KN$PF`#؃_6ƱDT`VZR)JR)JR)JR괥)JR)JR)JR)JR)JT8I6bL`Jf6pqk_4Xcwy"rNw(1|[i_ oxPˀÒ3`Vik[QB2 #b8nx YᶳY.I>و2ހ{_V:\@*= +p}1Xt B+m;Teq\ԉ {dY<۲3 s,{PYIFG1FFK`խoL3G8\V5[Z񕢚>ڨ$x\ }vۛiemYTxk0HBT g1PAg ٜi)QvVQz-FTXJ?^oϵIխG+ 2B1+[mJ XB`Wi—`vV|ϘI*N*Wi/2(XrQh@}x[6.88Qp=a}z8cqX5Ri 2`J#*Mabx2nR7+a؊<))[4wzG9^8}xI,cV RS,.7!53C=/OW73u+rLq#$ ` Wwԅ.q# =A(y5,sU2x.hbd""[8`;pyKDC +|Kq$z4W\2fD:D,vC'>i[%uYdG@`lW(4!}v'wnsZ­ͤ &Rzd)31ߎk,텼C%jVp9 G^ٿߝ2ˎ*\S$6  *AAƚ}9eI#$hUfROYlnl]#MdjYrsT5k[^tL'#nNpAЊ4놉c ߐ*1kvsIA@rq봜Tw[X*A |S_6q `@^|=-nQs`^<ː7/#XĚjI1Wdbv +v@s=K"3"aw$lǾ{b6QI*J6ǞAFN3V;s_6܉W1;țC,gmf'P$'B[o-Ζc`7b +<ffAIQ5>^4tMH^NE}M +\4c|le (\8ԭ 7 *$p;=z=GpAV VqUA7Ԯ,tQ£<#3PO|aV2kv0jfR0>eE|˯EΥK c~ڠzԟEl߿pٷݻ8=kgX% TFNـ`2цGξcQdKb8> 5>!F*4%BF=ȫKKoѳ>$C{HES=©,ߥ-դ>ثA 2!j^^s> @8${{6Ӟ`c9jϦ3X|KE n،`Sl5}N>"TgY 0U%{ ZS+˂`g#J!Ӕ71eYYFX9,xn bGcl$)ݴm$ Sx/粒UVD2Č=X^qAe)JR괥)JR)JR)JR)JR)J~Ȗr +r?ZOlRGwIl#D_7G`yDᯭfHdY#V%d'kYxdr=1fQɋTpڼ J02Oo#_~%=W5`JW%LicN;zխױob@C">կ춞D{ o@d8mTu4CLT6=PHX,RNG&ۿ$d8pSOߎ+`e.&3 iR e;ARX.O>ťL&'r?}GMSJKrzYž>m4fFյ[v @kbnZςo-+M x$탷mޣ@0+ww*+ߊ/ "HzԋȥS:mpE֊Xđ:p7=W uakfEeC,e$|@M6v?w̠6%&fo169q[ŝw,U;kF11VI>2þr8jdA"HiYWlj:I]6lg-"/c봟£_YoYnº|oC$7ˆ`~u[[iCv76$JEK)*{g־NMyэ/`qxMIUKTPހ֘mնJG67U56谋9*ʩH㏕m?f!gsuv$t,k7Qso(>pk kGc J<4\Ysn2~d[mJ^ϩCGʩVBͤ3P?3Q|e{\qb;mEly}pڸ(_a uIhR&k|)_.Kgs0& kCis:ُe~Y*GĐ*l:|L|DA@<ڨ8ǯ||N2Qn +Ȯzj>R6+ķ]^YO͑w{i+&LedR9ݒ9 {VTVPpFGkK~f\H gdF70Q/l9<}xQ뚏Xw!0~gv=}+ R 6>rAv3\JR괥)JR)JR)JR)JR)Jx5+ hd21pb@{=+M nTK"8]Ʈk(an #)`( mb:c#6݋p3g#nܻFӻdc>J'Qm!E vRU튔0Ǵ6. #umkEE +$C+ + I$B䓟JE@5`-R+ +YvX(ֻYzo+q_2Sm XcBnX޼m/@A>)z|R"ơT0+դWEu=Հ#1H1BJE!IH9[MpUQT@ zWv2CHLqU(Ҧg0F 1œnom(ee88{ {.Xm (%O4PN񤋜Lg_IhOʿ@Ae$HT&q `ȈLW|԰rp@8$gQF`A+F{fZE{dWF84pEGff&FBUvϭ& rOx Y4k BШ' k49J3LjJU-] ]F[`$EЕA4!~~&k,g6q(;aǥ|g;-@!A`NH'_vV@$` (g$Eplrv1>o` #<׶eFaDFUTs>{kZؒ`8 DT;gh ,JC1 09޵=T p+]o'[(R] ǵ 9;Xw9`VH*Tc˹^8Vz=;AoeWzE!-P4sbAٴl{VJ FÏ\rG4#mjPƊyUT@-K涎餃gQvE21~Ih^4G+*X +f`U)Xo.㰆IHѝ(rxm$nّFqgՒ:nyqv+)JUfFI$~C01s8$ +kpq$ɝ# 22cXKmAIӐ`R.C%TPs3ªܓQl5Ժ{9bhgXĝ6drP0;jҢZ }PX@,G`}MHy1I+ꔥ)Qdќ FuL^8*)JRMf(od$r㌂9'r.?]+>}k^}hvl0=MR=M@یqVZ6_>+B<`a#U,$c#M⛔#;' ҕT7V^4@1-w */ :kV61dcXA^id-'+ YY> B+f%U1;J=sg6\i + d +t2 n8Um07c#m\sqmU53)> +QT2*e%\Ue.wkg/KUևy57\ű +Kb[r`m>[G锶61 +L5]}hq"I{@LT;>%cns}hyVTNqwu: Ȩu-⪭ERj`^"Q )œpy{.HUad)WKU0{7揮Ʋy6k#Aʧ뚉ҭ$;6X(,9UǠMm%AsjK#Юҫ;dH߼XM7 9p1]٭sMӵ-Fƶ܂cit_4d YcݝCF8<8_MծmgUmXC& +V' +03lnUn&[oM1ar}1Uk@H2FهRrIO|Uċ+&ަPn~p9ߗΪ.N]., +G`N27_> +$]@KǘӴ@`uXep(]qsWRTc6v<`Sm]ٕϛ `WΙahi,sTvwU":%[ɵgG2!m>\"j7W7*܆rDhR@B&㭀6GeL# FHYoe3<0(ڡ@T[KЪHR g9 t}8EV1jgf|{c52}61D%@4䣣68}i@þV_i6h8,'97,9?asUol.u]6{KeR.3P;89\6 L)3oF]9}exui[G.6ך=<"%]6F#W3$̖7P@Ā̿x$wh-@1610a=;H4C+fK1,w3Tg3}߅4KzS̥$-rNU{{鷖;-i{|{um]\<+r. }9 " +nq6S$|=&Lz xrťf+:͞~4Ar:2ɰ6Üp+LKQ3nˆ{600*QӯcdUnf_791 5i.D >ՍղDy?3ֻCj~XU +dn/T~e|+Bcefrp=H596HaDy؎be 8RyI0^vh +GR+ܟZ#[yBXp#ڪ;;,n̑አ_7izu襳IH(SیPVwđ [\11g<5FbЮt1,rD_glPcncyjiAa6$mxS82Xݝn;ΚVSϗu}vqޱiz֥s$1x%d#c9hZLQ b zġ]ۋ` cZ67WYLKkhved3|V+;{ e舓p1AF`08OӍԯ[x·ىlHqr vC@s*K8=#RfmPfY}k&c}[d-Cfݫ~ߴv\WvY{Z ɔ$vm +FFAv7SjWQ\0kNqg56}k yenާ sY.bC3Y79$ @pTr>/Ú_^GXܱ0}@ۊ].[9QDA+{x4ޞۿKI.6nwM)JR)JR)@괥)JR)JR)JR)JR)JWi^b))Jyb)J)^ҕ+ sF*p~jAfmѶBsM|L+1^ו*=TóC^by^Ҽ1^טkb)^b)W1LW+S)JR)JR)JP괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JU|R:_ +_)@37ScGNВ@9` *Il3@ {j?dN +AY֦TgVC`̑.HARX/Hm*$|R'BUK IPw(9":R*T i3ӆ%JB{ao}[)/r$30j^ڥݾ۸m>V*xJR)JR)JR)JRn= +q,2jѪ@1)>6>.MNnm䍁#ڧi Q]H*}X;zՍWk-v*{T W fI"[h1&߸^ ԵQRZ4RO='-3'Ku*krLg$gگ#:5ىgNna+_^E{;kEI=GnpXaWw|sYQ]U$ De;6=Aֽn{"+6 NFN8[=>墕/ZE#!AEi嶝rn +9|~}t_\b[KXQrdU€Ǩ3-^[xaw8˿Qv ޗ2<ݬh1ɖ~órvKfj#o)@ ;MOŊ#R2HAR5z@MVxfF H#5ĺ:?锎Ar\6V [p +yʀP.ƍD\nbC6|Ē1ڷix F9fʒ?Z#70[<џ)7˷ξ|%a}OMqj.nd9 _ot9٣fFޒ(9϶+rJ]z*\..-bsQomNJ![I%',N@.ўM]x\Pr0[f21ڨCo^XXd*"]Cs>++#ڇI47PªbYJ`5m F;TFc`6(˚xݞ.v8# rARG f:my:,H@fMT9ˋK{y&ye]6e~YMᱺ'9%;fb{aV^&t2(c 2ˑROiO:t:[GypvϥBm&iShUrecZ[kDٍ$8#5Yz|vsu0DP E $Ӵ_:Ƌ}ht1۸[Vxv.C9#4ndxfArm_1Vx"[mB)#MqlRWӾEJGo?cy~z`(^O[ &hmAȤ|3Lk=uiUҺ'+[y;Ï6~UW>aq,rMs>FXdgogΪhiLۈWF$gT+~({Gmѿ}35J/cԬiBSqFy|O+ޤ αw Աc;.ʤ + +9$N8 +i^76Mo$д,SG +!<:uƥ]BDO +p3)cǯ_x{M`g@T(;:l4^[>[aR*Ǒ뚇BOծ#4]ƣaN<j_|7%ƥg +Uws8$fۤ4Ef/$Ž<]2':a3nVѾ` +YҥEg +jD +%p0Rݞ=j=tK}Q#s$㤻Os󩚗ztK&$am)QsޭQg2æ%,M1ē0#'ˌ2q +ZjSFN=3 5ٸc(X1W$0g5;‰{/RҒA:3u _"vϙ` t'%n Մ4&GH@XB9Ab[#[)JR)JR)JP괥)JR)JR)JR)JR)JR1LS1^ט)LW+R+*gNNܶfH^198K4x֖P$2K#nvQ;1LS)^b1LW1LS+W1LS{JW1J+1LSybmYfT8t$`GpAm$M4D%lh5r^1LW)JR)JR)J괥)JR)JR)JR)JR)Ju,>kY/o5K9nɎۜVJr=6̀X`#=k%|'Ҿ"wF$eX02=EFҵ8X:rIUNAcnzdTWPTӒp#ǵe"g8fTMP<#c%L7rp3k"psp}\FxW"2EEnb'4G =WLgk_yTKSyaG)*[F>߶*GY7l7c8=Ff +5y|8{_+"vppps^W̱g _@fm,m7gqRCQ$Wp}RXbcA`>s HiUHO`H=ux\($|E\ #ב̒?Ԩvm"(DV0mPǦA&U #'+$X ܓuBfV[yB;^%H8zvxz8X?-{I2@=q󯺅I5Ì*1Yk.!!^$rRg܁q$ _@潯$$+Gp$}qNۑFqݚYUT3wʾZUc;p?:0=s_=Up}ȱ's{Wx"$d$br$ {_ 29!H$wG+ad3e#Cp,@`*Amv;g>C%خK +v @>8ҡ]j<7 Wg4A0CgH2 #ׂE$<{q_uҪcq''>i,prxV29ĀA {5HW Ap899R\`pppAA*+dd~_/"71{ a5E᫭CVI<21`مax9<~UR)@괥)JR)JR)JR)JR)JVk  0*&Ka +PU\V^}*I5I&0I$מ#N++v FwWWid^,fq%] :AoBDjPBHqv17TJl`(x9Č +?L +АJ ʮ7 Ƴi-,bk[Ő +T8$gz E'[*V@G.G sig 5@X +FOsU^$ztwq&AZ~v7+fyΪ:aH3Vɤo}o46iOF‚5g >% T6r<$z'}B5Z xKGq-IRf[hE lXNަ9kqg NP}q#2Ē8Ed#q֚HT,PHZ4OM+l)l`i>BR3s gI׮r鰳c$xsXeKjko+kKarW~ϵ1}?ͥŌC9^'sjSm g8ぁXm澠NhlʣhfY+6;yZMK/%Jo6m*}o&fkx6ت6rI9Wzs /K)4`f222sY/L< n0) +eR $.1K.# ;~q$\]ƍ3bYX>05CZqT@A8>ƍm&f4 +1ٕ\܎sUu憷hgkBr*%X|=u:yJ4.dc +:^"}:hmBYH5UoGnK4!%p0$F< uuӣII6b!ܯ03$5iXzT h"I 4H x%xkiMvK۽$;rOW[_Z,6o+v%F@ŗj:3E|Bn5}WRYtG k456nV-SK4% ,:I$r4y_\q-bҵPD] nL qn<@ӗvwx3ss|$ +cEL+9:ګژ+k+sM PM>FW>\g5w+}zF_jHzVe Eׂ$ME!;t]ȲHm_ NFG5M&$XA($sׁVZU$(f0>\.HN;F@aҮ(]Ls9}#޵R;뛅Qg pOzܝBNZH~f "3 i}mpE85&em7u+ĚlzItV?O*^5a9<52$ķE7;cn{Tͣzٝ*cq>¬!;h,RT*TfXG|Z=ƥ$+OH Wvrc;= ]ndC9Uݜ@s޹`,Fc*UX؂HT3 ,mrm-%`2#CIa '{ ++ZښsotH8Rҗ!S (QbEmOR6f!W'dltnv/>F8ZHTJR괥)JR)JR)JR)JR)Jtpp1UxzYvI6EH#8ÅKԒ[9`08v1i)Xv'WΣF"w(uqe!X c! oF h-M +f-v +ds务;W?!I4+gIe*d +&ѹA85vvK`lgve X˃>i`W݉gg#$ZrjA )f  Xs*Pӡ"0Ai{Tk^,I/Q&܀ leRI$Q3Je&m0k}(a2K#Hb7]7v}qkr\2za,}k5ciTefFRFAR==z, H e+Ii6`y Hy[bMһmc#'8|zOg _t8v8˰brQ-48,{̆I8vi]$arvV1Un7"䒝󏻞qoȝf-* *2@#WX`wm {vVQӠ`k{maLK8$~b&G*Hc=OG5;IfbbI>JP k{܍؂#FA_'.J5gBvN068a0̚wF:VNTg6re"ts*XW +{ ؃#gglw$I,{'Maմuvo2=\|6mQ`Yceh3 ܞ[Ž/7UT("g J#־U V;:v6ݏ_ǽ|MC,2<?`y;_~xE+ĩTH8T6I%Ձ*ó+AQ@A$M$<H5i%wI +UZV UI +$ 嶇ki/V5+w jʦp gr,i#8ܤR1$23v\KYP2$}5xF v` p8|4d1Mһ#1<ެ?byb|dzX#V /Wg^[u.ZI&v=ɐ`oɣhp-گ#HA +JR괥)JR)JR)JR)JR)JRxko]wl7m3Zwشk4 38s'<ҤטiJ)JV l#2wcZǧꖺePqTAko]wm݌8ZRcM;EfcܚxcYc`X JRxN+RQʱ&@j泣*r )JR)JR)JRvK#,NƥRrkK5$m2+I%,IMCMnKSxs `P``Ԩ'56 >*#!z +>u)JUK¨$`9&_Aij[ȲFC)1YJR)JP괥)JR)JR)JR)JR)J|Cc_"Eky)8fU *G,5'0) :oBϦMʤVP5mQ4ŋv7K2ěb Xrx—Lj$e+)HX*Wooz4ZZF@@ l{qR}H٥uR XN*\{lNfo* 8_:h. qT{ۖb +З$D$ +AjƔ|ʟ;E%wⳔU7n=;z³,=naʮjک 5I\al_0k\.Zy\LX`w#9~#4qTHA;w3q5±(yT-I-,XE m_I=*5r5#DnfI7ʬ|zTHR|P͐Hwe!g b88*3+T@;X\dcV5Qko\oi "@Xg|!riz^qm4])PE+ %6ӑJA o,=Qr5g- jZdyNL7O=i#J[v&"ie4*$dgڽW}B)$xܤg>VLf[dnqeqsHn$IJH|>vr@su}J g÷V1apW#0 BtqAY/$(@RA p sSx2k&kd/9bO~@:"y-Mv>%1A^F@ݒ9x'KH2V# 5WaH'js +3|/nz ېD[уA njΡb$%zϵ{/L1rѼQ;tʌđzTg^ %xUYXdHqvpq<{Uw5˸[㵒'Fhv +Bʥ ["D}+5SGx&{;s4q;& p#:L1Z^3 +їprxbCcGcRV/hx =V_7>px9ꅫjq0uO*'Xm5v{gqnU@n2nHlT@j>"{Hm Mm" *{]K#Gx~(A*P I+pdzsYX^r<&HQ.J nj5T{8֤/m.L/yQfM\ϦO=W֝a4$.>B|.R RFrFGc>~1l@t:jI$N*Ntqox&U Zg5],tH y ؘ`{Vx2GI 䈑 + 0b<w/#q۸> +Zޯ^ë[hn\f]BpsYjZY"#$*&⫕R +qɯtWO cEIPC`dA>G]:7LnT Ukm;KܰB51r05& 3Y[A/cU&0NCa3/'ۚ暶N։46rʲeT[_;9Z`鷔$l㊹պRo+,/#Ʌhd @$_Q$^"6)|.#g<0qAKSwwA 2dhpҳhZdwM:109VD Qd9s8}wy06 8y8ta`@ ~+YѴiE71S ^8#FYuKY}~9tX 0Dq+>`13UOGq )oEbyf`L{Yy ޷z}d4R*ӑd3vV)nm/MGt1*p@{njOZX2d`qϥY#ë[hНte@){t'Y;uINFI63{z5E FӠdtH1d$<+kw[2KiJo4GT%@&~g3q VM) xD@$`ӔKgq-0:oA X>uwKͦ_D7$U7D;FI7c5{: Z2E{ @IU6WbҦHOW ݐI};^]ZikI- +z BW}Фyy*CC[o/хq r~*$imD +.Qe>f#%{sU6)c-%mffdIX*b g8Z[ѧ򋸣pkvq2I,+⽲3B",dv +n8U\"NȶiV/)Pǀ8sTj5Io%FX㓬6Dgz{3l H.3=歫V$lkIL,슫\I+/61XS-iᏀ8Z]*+qQW^]NMrY PTZjbq%>.dU*vHGB%([++]A2ocFv#;ТIxlvU],i +$g <ˤm溻dNDLg6OI~xma%pZ,.wGjs#x92HL3{:H}-gItӬsKFLGsco/#Tkm-.-Y!\ܮB8 Վt=7Q\bCXAN{VZ_[G"}) [t2pT_[Yjm(9#Xv_Xr_Z-S8Urԕ~eT ۈ"Yv&:E4Slbȧ`rW$b,ZNX`:cy$ +FjHvKuEYI HɍUܹG'?KNXKk%ÏX☦)b+R1LS{JR+W+W)byLS)b+W+W)b{^R{^S)yj Dd%IV -w.;];8<$S{JUynf@$DIc r*BGq=MZ״1LS)i6,>LVSAhM;Fo.dȲ"Ɗ~qd<յyb)b)JR괥)JR)JR)JR)JR)JW曨N(kPu3@s@s@s^יgR[Kh@\P +#rsRtt`_ ; #P[Ƹ; Om2j&9'sŕĆ`*l3ڳWM`O $nEFXEzHN[-"Jڌ0yqfPX`2;9kq^Ҕ)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JrH<8ٻ5<'3`&x'i>ܖ$xq(rJ8:v-:)T$$ܜc(/lJFSTl8-6!bB:ǿWn^o ܳ!dKW8pcM|wdk۝>ѣi:y 젅N souk6V{xĠ,l[2pe⼼iݣIKβm!a߽HU]{Y]Gl#aiTHG*6zTnKkHFgղBֳKm6 h08Q\ !`<`޾k %2322AepMlɲuR8p%T0+][u]IgK+d`<+ռzhWӫH=Vs9#km8Ud8~{* Iv,<4`vaN*Xՠ,6Ѷdoϗ8\U|l_úe= 5dmvd@ۈY.F[i9$f%Ip;@R#u^ 2,(IN>z as 1Hz]J>խ\ Bĝ@f01q_2~9'yd1H 0Gԓ}򙲽U;vR1`H4HɳCBQOK8. K  .-v)V;eukh8ؔo#l2Gk9Kyy-?Ur ?MXEIBHIc{)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR1^(G]KǷz .W#8Ҕ)JR+cI'I6zYﴃ<8='ֳG") {kꔥ|'+s^ҔmsbHUB3>u}޴ XYՃ =v98`O{Vjg O~JRY E` V&%XD0By )JR)JR)XeEK(fOҳR|K*@݂Hܒi:F  bR+6iԚEGvv +.IĀ9kꕊ+42Lc$Nk'{2~qY)JR)JP괥)JR)JR)JR)JR)JR|K*¬pI'kIitfmj0HYT}JjSu[F$bY +0'$N1z'b,Dpmi%cq^ï]/@)}#9ā22Úju!Bc͌7Pk=v < d=ao(#jdR7 QO0 2βme Ws*dz\Ē@tV23U'(XgVd(Xpc|y̳ 7Ms?|w'u 4s5C >Wа{󭭛h3o|%^jBs=dF}<qb{kky'H] + zfdju:)<C+x 2xmBg `o wbX0y&Xx#3 qT_ [/&_=O.8osk0ЭX'uQ"7 NH8#'{W*KKhn-nd +,-Ht<Ŋ?UFKgv}RW]ߨKb |E% gFw +;[|uD)b<FqqTkw Hc$ CǘN0&fnlnn m-dV ڒdH=qYo+]j ] Y̯co>܎{x5\(m:HYVc"x``m'=U azGeF&U8;H;O[ah;8J0V + 'Ӗ+-HAS|r4e_sf2\ iҴz$QOǨǿS 2U HeIF%k"4BEC0H8lV/rR]0}\[+;Y {Mє[!AO!s}w8c"P(V)+X]#y)ߏ 8e9SgP/,/-|={Cqw7UERN̾!^?# aT` y=k'^d<2:ȧew+jKm*M4c[f0 ozjKuYV'}+$jt=^` ʺFﱢ +2,2A; eגRTpaGh1!x_:JEn1mV>H +%Oe$) 2m; +IEm[UEe`tiR +aBqgC$ ;SGY]&3*1}}knT7 *23 $1Lx:ۺ + Lcp03L6~YqWxl4ꗁretO@?_V 06cbȜyY9#Ҷ{sDf'&)VAhCr_n5],n)i +̪$I`1sVjVs,ukuaۉWjg~զsI:hZ7 q:%ͥ^HLFF"'+7~qޥ^M3ޢj]XXVB$ ^6@=qXOX$]ް᝾هD n 9ie1Kza .^ (NxGlZ4LG<KѠ!Kqkic@y͢pģlHYՄwsWLJG$mb^E#'v$`՟6(gPfWe!L4sت]sNҵ}ibh~F }%}ԭn)<[ayimƯ +Eh`v #<tт͘ f\:waiV As BXdqzՏD<[Nsɶ%S{3ZLWVJU ˏr=>X,Zm\'Ib9&QH +>AEl?Gj0^uGQv]Hc;܂Gk\+KEh4&r kp;>b{i  1sKtK{9-X*U:91W%mfI\AYcGխ/myo7]DaM33ڶ7~8֢S37^r!y +TGXc5ɂķ&EvyXxyut{i&D +{e\؎ 皍kakVӵn4+pH85vlc-ŰȈ1} sO'w麺_,LCiBQ^4!y8:>V1c RVE*m@NzA5sBA*@2K"BTeT +p*.{#vHZ+p"H|nH5UwM`zػ"r"e2dsjWi+AvIl( q[m/ѷ#XQǩ'< +y[R,#$NꡡdRJܚRcaA}"9fHd $`nZ+^iaGHɉX7.'#\-? 6۳sk]VW!Z 2Fw`n=*|Q$E|T2qva6ZY't~}3t)JP괥)JR)JR)JR)JR)JRy^Ҽ{Ur@GP NEY{+yb+Sy0+1LS`'Qu*÷;cPnth{I"\Hm$.#3zfn}ܒK3z$EZQUe2&ErM<$Ҿ&R̀ϳvbyGEF{JR))JW1^הFԴu[imgT*z5@j$&ݻg1*fin599$RIɩ'7Dse 8Ϩ _<6kXy`.A?{9+1JbkRi^Wy+W{JR)@괥)JR)JR)JR)JR)JT{kdL6$qj~yy9-4$`L)_J#;RIU:&u ̎I!vx8sJRk(Xҗ1+ꁫi"\\X!ԕf F)JV.R$(~YTFJ~dGT>kc,琖K ǭY75sƈȨvIRJ+eTpjƢWOeo$2!"4#g֣jvѶ@*2'˦Oy+LPl*:VAy+F rʰ;5g h&9\kZ} C,aOXҔ)JR)J5_,7H W'rM}iN V'IYnWQH%C{EO)JU^{u}m$j 2(*ŷA ' `V)X/bӠc_sO$*o1U> 5]kZ-=iz;&P{bxfu 㑑X`RBFOz +kFe<ϩQ>U׷@$JfVC=׏ukU.:*MAXN2={g)JR)X-o"tzrm0VzW̒,JYj?5հZ0rGQ;oOC*n*H#<{U)JR괥)JR)JR)JR)JR)JV\LJWN$*2YQM֤gy# 2zr3"[dOkon)S^y7WA<-7QzP`Bx0juBGx HX3pB{׼yƍrC8%BdHDj2 nǏzҴҠXQpG.F88_5,{8$ccmj\EL=YɋsGHynuC\cӊ_X2o7A{[`G^7?R)9' +'qJ@NyqYy5HIc$$m:HO`CrUE}_G_(KuQ+xøcqanVF뵊epH~U9-2$sIf-z݁B ;TOlW9tF[s&8eG&YGq nHC;x9ϥamR4J0򒭉 +?.G:U8+a}H+G-REX1UlV8g ;;O>+5BU͜96;+7A+W]CV24|I'n^ ?*Zd}J; \ׯ!1g؉*I#je%YK(<2 @'1|& 6{>33ߊbٮאG3otpIR3=oj=bV[M}D ԄNr8 UOf.-h=ˎcޡ^5Λ>8"Kn^˂wIt.mL(U;|:q&7Zr\H"dUTWNvwmt9K2Ȅ ㊲hBIRΒ 7#+ H psQ.cD nb"M⻫ ;ع{{Q䰐*0 N@$٩­> +RE2c<^0{p+;կŮQAH£7g!{;XO:Kuk?UR6*\PP5 +ͭgɨ#u3)Z`:?LdeZVCc&d dsSx6FP b@~;jgxې̠U'A`;gvFHƱ;|A\INSE4j)*R[I|bH$Ce ǽ`6drk'5:tۋ] *3Xo- #i2Y0*M32I/EcrLg'n[vsp*5ֹ}}X'Fg =c NFF5bm7V[d q#oGS#E&n5;[˩e1DB[`cTߎ+ii\;K p $Wڎmjq —r#A19U; tV7dDTr9;wiRMb+T+"8wtnѱ"W"x#.}eŤ8'Nd<$8rnv5hkEs*Ѩ?fAVN=gbiSMuLuvPy'=j×7s5LtUI2쑔,H lHcz)JR괥)JR)JR)JR)JR)JU=g=k'x?w#v}s^Mͼ\F] 91 ?.Յ|7 6&M:[>Ӧq]]G3Yn.nnqڜCs8;^q]"0FAI9ϰzu緱ܸ By[5*-kҴ}}c$g`ͧǧ[эYYΣ+Hqn+-q{ukt@cD6d)!9lvF>usUڎo.-,P+"W}>u-,vqCq[Y:aH$ y@9&+ ~.0gL1Va9,qR\NCcAbŴĉs k\?wq-g>Ğbt"tl(ۀ$򓌌zw3V6j(j e8>Tc9 @|~OzDrs(CrI#ީi-(J)<.G8 q[(B rXDUr<$5w '|jIm&vKSΠYڮ: I X +P7$O {cD:9vltٜng]Ƌ4 L(2gx.b+ 0ܮ$!r<S4KY幔HaH.pIcNI9<{TڢBӑ.(hYc$|y`V#)ThpY{[W+2@''Li-f%Wk6+]\ QhC%du sR.Zʊ"3Ur6I3X[B.D2"~F󯋏 O>`#++ ۿ2sʥ^hWMrZm/̅~Gz|n-.n.P/fRJd IXDŽf.Ֆ_\qp6 sd߻/\#*r4h0 w03z6qMs#ܬ<+(f^ƣy,M5@KDLʎĔ \b l`bOc%tFeH{N$ +>m~5Af,$슇}`'jmgpTO7G;cU?^2>QnѽΠV2QnePlE cx.@=c==ɬ5Op8p9ŤAq)f3+3HpXoV!+Ǘ8|RQ4dPĬV?, EH3,aq? 2 KӬMV(1eP槧C[Ik8r!V؏Jm)'T1!q!@ϯTXt9d#$EX!2I}G߅sgkei(;ibK'UF>eTkB~$],m㏝{zJ X1_zu ݱR0ˑ?\ȯ/n eQ,S*E U $nYϠ@ٻ0ED;"P3sqϰ;xn4{?W)UBzc^=̩KdIcw0  ~.xvѼBa}f9jNL"QJ&#(>Z;?56bS\m% gF@=#Я,XܤP8 w;$gqVZ^m 9'Ԓ}I<_zj6I88`T?Eey F]YwrsP lhX(ۀ +\o9<oJu$]G21eg"7+ lp~6xC=Ļ񝠬j`I̒I` t)JP괥)JR)JR)JR)JR)JR+ +''>viJWQszK2C{d|]` ';\8>+_8 }ꔥ)^6=h+R+qL״kq(>kP״)^+hkR'S88V(b2( Đܑڽ1XඎB9'k-cX\n I>& +7( P3R)JW:֫/\A.豚JR85)JR)J괥)JR)JR)JR)JR)JL^'94 U0d)p q[Gm)bRHUI2@vx& Zxlq/H2 8,kgXbidFw; ϦqIͶ&I#a!YXaWQӴ˩c[ͱKmas@dT\zmy"[+ddU'ʩ|'[P2;#2 7cs  +Ā9}j=ޡE`HUE.`=IxOh9re}  +Xǒ>yj K[ %9WyyiVXUa4q̬)5Yzn"'=Vxhm뙧P.[*7/köZ3ZqѺM&F,w +ٴ-01K|Fd!yx*ʕKSEydIWބe3hz +$2;7Τxu}!&!a wݳ9p*ZyD.Bʛ7Tq3;8VVAYwY‘#"@Id+ks>ԛKI`*Gx5Qm啺#udyH6с+g!xbu23lr;k].ѣޣ]gdws^]k֌WUܑyCyrp9'abDȽEFđ[ީ"rF$n=p|uК|v*)T߆rX`O~޵},Zƛs' +#,m%Wp;X5 zZnn@]$9mVifY!uv̼zWLjepeR &@-ᕭsqT8s*v:mܥA IcY;*^NXأ: iW(2ry^zZiIMyo<\IlmdskT`I'ױ>CeL@ +,mVr=5*vyYZ@=$|Kwr8t^s.ȋE&TeCFCrFy1ծ.h.4 *hHf-"[=iZPa'(` +kAb> R7gmޣ+=*hfNnvPFsǽe ]"*3$Ѿ <ԛ#ie`Y PbxhV1#**l{̓s݉}%*fFe׭lccrO$z}KZr֮:elmX8#pk rvbE".qXU4>.只2LC!hpF0x:ŭ1ϕo_ ǧ=XGk*9k7He'Y~3%ƄT".C60 ly +ewoڔA[2Gf8ѝ=Mv#'ڬu=RP&Jtk`#8]kZ-):hUyGݽԫޮљ:4{]gdws_^#+fD'VeG<^*vRG~ zyE*I!;"Lh9$ߊ!p` G*0+čqZ{+l-<=3þ+cm"IY$*# +7-f+xx< Z\\] J:N$V@ np*NZ\Wv46T'B+w'[ 6ԊR(괥)JR)JR)JR)JR)Jw2xGJkrdVBUD+f w2|=> yt6TA'P#>_^*tڤEkKLN"0ݷ $}+R9\+" pH%sV3\6cvJ;UαuzEeI ȪYTY2Oj_Tf9 ,nUX 8Fa4ua2&K}ϳ 9o^M]g;9eHD.29] YʤTٛ"&fv,y!{AbVA5WwVP+tLJ3'Vl{Nݽjla/PQ6@ w ;) mhnϏɅKH#2eh:$/̑i L=YUw$*Q(om;$FJgxolҥ\Ǭ{ٰ-,A@FQSp< JRMenTvWSHlF ڨy CEY=cTIdk P*Mpwu%3jkNΊ,ky!R4" rlcԊWR))1Pu%+ڵ}2 <+|*ZG2K1[nq͍#@T֭63fhL0+zlӚ"OGQEa;!1߀+bg2xҴPQp.9a7CVh$\kzdE2YC)# ֧uKvM8OqnIHw801S.A[b'IcVTX21| w)XM(Bs0 +;N>Տz3ڠxUE.N=1XT.Hλ"`9h#=+xڒYQm +]#]v_HI=<><|m1cVP+W屏 wT׶v@8=q9#.09psV{dS^Â=`ު-h_pZm+`ʨ6%<3"IPJ88gZ΅sw}"4A$ni'J~5HQP՜jѪ)7iH{iVkƎM:(rPېCw1i鉚U5 vxcCpH ҩex2$aɶRd +λ{=]mQvfpsׁIVKk5«WN?hJ#X4ۙfղ8~C*6{|)ޯe{;tCΫ(l,KkM-%P@ڝvoOhy5I4tSFbd`Nլzb9B<z(*T9|UxW7 1*C4}Xoa{yD; h_JdMn`f[C nBGv\b*ugngm›I@u(8;<VOڹY&CrB78aXQm ӆ1ґDm >Յˬk|N$+;LJQ7)$q錚ZY'n*9Z@ǽQ^Y|RB7R#ȝEP jۇlT+{ӥkxǰem^n_D Mźx$wQzAD[w,ydw3F`͜()vr+:nA-10Ĭge6F09:nqztYs3$EB}39]c]mE! 97qX d]ܺDH2 {lc5lnieG;sڶ:_1QYb1GSiJR괥)JR)JR)JR)JR)JR)JRIh3>-G,} H9<]`U}͋wp;zr$LNy!$pH +T  3>Jks#W2J` (GVK[1o$ҖҰ$ +6&ҾU|+s8q=ݠq۵{_*''޾^v^** ;z)JW)^b5LP2rpvA^X$LhέDr U|5O{5Um9$& +Uw`C`{zf\B-uZ V`vyH#OT^FUTۢ %P-(xmOݤ#/;*W,; ߎ0x\^Ayka>2YW;v +G٪CU]-JA[E,rV$ ެ$$kzRAmyT㧂0pUK'U;egF@N،3uǘ6|rC*+*JV%u[MbTw@ib"<\u'R.-n9Xb6ŃF҆W%Tsk R\gJb3qi&"Frȯ/}q;ʉa 6`@'9-xۼA2K,3ն[ws1`qb:eekksu$,,2ﻂq9GnjO'o;ۮB;p sU fռ? N[i$P}F2oq5A-Ae2z uNnI&#L( g}R8N8r;:\p`:jqeެ>ng1}38?Vٛ#ޕ DTMմ` + c=+ +]7Α +BA2l'nwǭVk:ޡA@C%.ʿrlwI>IP>cxR@vxzD֣gŭFl\ڞR3/|sWW +m>5ͯ_?WVGE@%a(8+r˫6:\,/23<yݜb [^]AX33j݄8݈126'Y 0O\F͜jE)JR)JR)JR괥)JR)JR)JR)JR)JUfo7t)nJ +%gҽ/hIv 9hجxM즜.L}6̆Pq'. YA}#]'!-&NOrTLT^KwfPvrIsd|6sIӅb%THc4-~PX "8ϸU8XDFXoĬI +*s$1.I橭}RuY6> +CnNxEYw (<#9z_/c`; =;ך[-NHe۸h:~kVk +]ŌS/RԜ=jJ#^fvZCq u@ s\jr}V&+u=/uo+3,b.FNS;ڠ@{gǥ\5xkUS K|s4)gI6K?p!b̜ѥu}IXƸhȹ-{V84&Ifp'`vtk駱)csi023SGx忖.i:2"++,ĸ#c <\h[:4;p71h6UR+P!1IæB[T*8tGz2nm;Y̛:mMF ƍw9A>:T8t&B0[}|zMmbИ -82WWPF"1r2N9'~B/[&סFd ݽX0 ǣh7mIJNK) + +BN=@ЮtU1,c:TqG95->-V[YRXw5=TԴ4 cF LyK6:. +-IrYd*х2OW[a-\ +9ϥ|%ʹkqђ+E.T20 ^XZnŘ>Qn<ǡ:Uj~ pb+/1,Fc5IfɽK)%rC.Hr bt{cMYY'1#aTyKvOʰ%55B}aeF9>uC7o$an9w܂2ܦ89 x8>}ZkmLl';1ϡJv/d*F#fv$jTB@YdnSG$jmd +۴`sR+].Q,Ɗ +tlL[ ˧_X]I@\7cGH:^qdx@T9|zqq N,M3p0}V"Ctv$.~x/?@; BP;YǮ}*^2 ,=CY6ssjǛ9"WFo@H#q߷q^` {W)JR)JR8'KH2V j%kwu-lXs r  O| +@>JR)JR괥)JR)JR)JR)JR)JRPT-[dד4QG;gZξnYeof>ؒ~`1+.崭>/"Ffr;jo[4ԫ## `E>)Aݜ+Np Ǯc֦ Awݠn3F=jTmm(RZ&8>`G03SdePj؏6Gr}Ҩ. +$riһnƪzo5sqZ;$(*r+XmL 'Td(qY!"YY#ae!w ɪx-r9[?o2vmxEWiz:NG4m0RdUn!rFm(ʝ;WͮoxnwRUn͵8>]k2x:{xnLm ؑ3-1ky"I'n30@¨Jm4@1OQG|{&R>ĩ\YrqwhS./ഈ+@O159aurV!8fq>Þ#YN4vUm瑃>: VsyJ$N $k-e~a%*>R.xy>cnΡ ~{y@$EZnnPb܌8 Aug}Hm63p2{Ԛssm,e[÷`clqUA@A͹Oʶէ˻}8}>F@ V7wi^ +TV+}fE:;;xǹAFj "E $du 7Wu8i$Ao9mڋCGy HtP0ك+#VRB2v,*0#9 aʂpHݰ{>.5PYo)# Ⴌd9kt.  y 8@ ՛on4uI,KnJ^vzUK +$5YY(+F2)VeHA^\NѼQ9 D[;`*h>JI>AL(2F$qxw/KiYU'*wrJf\uT0|\Vu,I]r0f-/lUmq$vޒ% |T]nDu;.!PvǭGXCvmM:u`Ԍ1>SZyq⫴-:[+%hH[p^G;w4mQ,Ymix~%V;C[dP +5 +P¾UVv+}}Rrmy$Y"-6WuNGan|:Yp4^9>&Yo R:.QHr7}NO=VJm.'o?JUe/ ?E_fRpUe/ ?E_fRp[]>侒U4p<{Ʃ|ay +OY\}2J.WsMTjWRiz+5al bNqO8m.{y{Lth ksQ#O_V:uPL=is +[!+x_ߚ$JkvIiX1z2}+%}+֥ f\ˠ^!VoI:}<Ѥ$$wڤ}0}+${X6D$b4i]AcBFIw_. *{2+Ɔ6uP@b|5l-XcvPw{uV+;Ha4TQp` mPA`tvݳ߽I"<:,$7o]1k@ 4=~>UVl+{Ѯ;/T~![Uއlв‚6xl0~cJR괥)JR)JR)JR)JR)JR*z3%sΦKLC) A_C +$h +99s_ ڠ 6@œGxe!bl\{c֥>{U*]h p~u-!tDiɴlq4XybIAΛmv1:\iַyAwn횓Js4  {][7+b58{Ւc7@4wF$M gɩۜoE|g7I`1 ą0AQ0;WZeJA*PBg<="xW:+c@8֩ `Fs(Cy\bԤ$jX +>kH jeXB=}[iAn؊Ǿc,ia4vಠ2ӪgE9#͌#aVTCcp # p{WZ]Hj]Rk7X5qK瓂 +dR]1&}HLa +mT;;%aaS j֔)JV{%ڼvkpo,;qڑ=Ջ;=8/,!|#GBR%'B(ea{j,- @l;7#5iao%klgZӭl =ݱ3{h=D Hp5 c֬*6?'l=>vn9Q&qM=vWM\pNIZ$/zƒdxV/ho, P0sg$d8~K)<*H6INfm46 ظRy$}kj9 6 6P#Sÿ=3{ҥZZe p0eQ?*JRяxb +Wv3F01P.F{g`C]"$zzOR8*.иvlbYivv#I;T R)JUEeLL?rCq#ڬ8$zZvC*>)JR괥)JR)JR)JR)JR)JT!ٵȴ);'ˍݸcSki`OܓP-Aks*C16ҷ WGUVzboi(;Td@㚧cMSGKcMyc1Yx<'8.QiG .7\I9튮5+j{uf"UITe8?^j=Ul :7EMs6G5i7֡P$]E + fte*FA.{P |IHO7ZzX/(gSEG5 m$nXw79#n3}kfa4\c@3+ۑ)%C\\ δWF>&~ XDVFie8sy^}9$H^X}f"j}˸s3bյ!\i mYv.dܰ; O} f@\@>Yy-b +Ly)'ƒUf04,>P6F3}+3O=%LjVsjKh#R +]6ycO&ne7Qrnam+zp82 pqTƙ4 YXa'[pݏSa]{PK=Dv if*dwiֶz׼zm*ܥC 9%ѳteYW='VҴ+ > cwTvH8یu_wNwHVWlK&IIܞ&x{W1 w3D2Z&* R?.ޕg bgNկXjZeʰ,\F 7cޱam9⏧/Y} ޹@ HB>f@$TW+iwE J~TYw1n=DsKöKC* +o+q9VvZB¯]dc 'D$]y'K +pI8K_P3a(=0coʌyQU~>+I$2Hn+514[ue5]V˧/8F$*1` Yw 6rsj?[_kJI$F&91V#u$|jӵ;,]nXg +38V eލZ=}N@T]By +v8X?@$&unD(U&xyvꄒgvWS:Y-pG{)J|HЯ3>pdW{{_x#0I T(g'P.(!ufg\,mw~VUգ&FP %cU灒I3=n⿄-՚n7E)dqz.oI]7\[rǓmJu +cLn),N@&WkX,SdC dPF-@aw<r !67In~ƠïϠKM1\9]ԁBwڕh*,GTg^xw^)-ի%ӧ,00V6df*"g@qUeއ{= (`lW #ҥY^ݼihTR[wm$lo=k'l.KAԹpQ-bU~l`@mn{ggiSyk{#,ȀNv}$6X9[m4EKv3@Qn>ry~u@ V d3*ִD`,LO 8O xB$}O(;Hf-ϷUhhVp!$inLo20 ϟn;qZ><7QHS4Ж\LdwT~Um9*弑dP1d;|D'8kzfXBԚ{ XmBMNH2ƶF;9ݳ3So !oF60pxjD1rhLL|"06x8X_]ʹp6 K3(!>~&xWQRLaJZ3oӧ#{`o5-+,ߧpXf(ac*yI8߹Dеy4e>u +X +ŶL~8s[u"bT6~'3o1SZl}Ӡ,H#'#@VMM5E1uH72I,q=*ڠi)|i GwJլ!.#TPbY +DA.wFAk\OgLlsl5Q+ mv$)pc>lUޙI+܉B*T!݀#U4n) #1Ýr3ۊkˠ\E,* yiwuȋ.||=oޭ"Q`nqYePA9U~!F_!x@DFGڳy0w\|AM_*e)ٱڢ;0lhN7ëe9y)M&yT@ +~azn |1X@em;J'N8¡Ia}v"?DؼFI$?eⶍIvi;{_ZG +OARmUg^K)b吅}e<?*bJ2'!cRGX徸ARj]m4hՖ陃:mO'֯lVax1 g9$E!X~cUCȚƧFE]˅2u m`p8E;Y%Ί1v dqSa.dG({uV_vJ[pA[=VP$cZ]^ V']Kr{_a㉤t -1f8 ERI=+B{2e82+-ji^#b &,"#$[g"hQEVm(9?D5Vr ( бU༒1<~1"-.3PFt'j:)F;e>uJWUKm823}ֿW v8Ɍ.y$AJN]FRĐJ@³&p=)Z;f8I=sQl{=@Β#8yqYZJ!4r3)=X^ci;UK kR, $+` {CRiJV2E}T_vo:}Ev{| >>ċg2{}k+X:0e JV,:}w3wf窫! }Sq{x.&O,ig˃W\[h/^m0$$KNu61!urq9MN62@'``[gּխ4 s8]B~!E,9W%Eu?P {*E $uwI)<ї\ H[-j%4-¯V@d`/~ J//2H8(Ϸ>7щ`ut=NAfHTX$ZŞH9 +;kVRU =ǵ}^֚v߉#p.}*-!ITgPN+/(T^enry_7ZQ4$WQ2f q;ymV8fGt8eVq_7Z͕efgfP$'}GwF AZJR괥)JR)JR)JR)JR)JV[8#V}B0^$Ld𦢟[c%*AۓЊkyvf?-]Fwn`/R)B3gQ[ʢ.|JE_fRpUe/ xtA%&Fpz6󯓢]Hm-=HH4ۄS+ y*oE~ˤ`tjmpq*{r"T"@ +<Σۀ#llj;, U[wL|X$g#9 +ݲ~yC, +DIbA*8P8eH#<l(7?n^4䔊''Rp\S?JCF=FEhH GZr2:=C?YMKB~NzGfwzv{0?aIjt=X[#ST1p:vMCLW$g7< 3[5Scc)318oΤֹ]jڭV7xztԓp7J|@(`($a[8>voj˜ Fķ88MB$wNK(fw, +$vj;-RY +$a|q=Q4K*v;s>>^JW 3Izڭ6-nn20(.2z+XMmkH3]E 1}ADgV]RvTm9#*q- .FFʨQ[k1v#$sT5=䐣vM76v%*2p2y+yn^h&J@~GzVg(P@hр<oVp6ewu7gyW–aǯ?:Q~SK{hmFKK;&Sgb;A@Zt_ҿj/ckE04Ľ#g?hK͒8 +dyL.}5Cno33Ϡ>E5t0WLx#~2[5{iU +#qGӛPV(HmY&3$%- I&|2 #3`c#IjFքaJ]pWlcc'^#hK_i<8?L׶pIMe65xŷzo#߿V+ bIDb6]ѨI#_j(PU ZF{T_ -վ/.RWxv)cFOӱ-D-2doٗSqJ,>KRV>#.csR(괥)JR)JR)JR)JR)JV{(- bD.rUT8u8$b;+fmu^3¢(;gbIXUGїAnzTmCDοyTr{gNj7qK=7Ry720d7w{P_G +OAY/V,ѫs".=xVSOZp S,VTSD͞:j1JFKu+Gmh@L08BlaBNF{05;1ȡ +k(EFUT9>Q>喟o)X"X +1`~C++1́Бapr?xve h$TF|Wx=HP"@'.qVWQL grM9m#KF 0eQv }ǣ*Jmʮo(#?:ھ$6q +Ȓdzlm[[R{PﴋmEL A +[U*vJ;)Q]ae#؃PG4Ixl>d9\&c+$=(±5?a6q|y \d_ ۬DC{8Ϸ**6u7nݰgw}}seuEU% +r7lquPeEJ +{vֲ +[UP@ [7w'iYb~WOmD&Ye:ME&tFWi&kUeH%G̠3{[j(B*1_vX"vUzR(괥)JR)JR)JR)JR)JTIoKdRTc1<5)QU_-ui8wBc =q*ΡA,:^QY$_#89jm+PAyJ5O|H2 +eAGl{c",k2` + ؃5B(T +)XeTx5*R X" 7jPNPӾܜǾ,OW՝7apr3<=AVzRXla"YY#oC)|=xN8iQm-Uȥ r*M)JR`&i*rPF(8ΦWjtWjwq5k \vz-zmB$Jь3LKq)^%N{ɭ-v! ;aTa#x4?R=|E`/lGkCgy,Hl!x2Dg\+Lovj0`X%)7c* +ی%/'Zn"6px#v;b=,1J@|]~TWosfݚ -2 CpWx^5Bh]؁U y wIеq!*HxP۔:[H j:Eq O*v @Qm\|KN'uce"srWk`Uu.tɵmX:n}ol3zm1$ַKUW3*; SP2O'84ˢ;LA">`;n/m=&A*ȻʶPNF0F>uCq|nBcW\L<8P1' +({XncVUԖme\%lŔr6pA&R:z9 uG { ʱ.wsg~c[Vx%$pO?wO|f[= ޚE.K5xn+ 1+qnp%w2{㟷7x"YU۶%xs~xWVڍ1W˃ĚmtE⸎evf ¦6 ~N&氺3 !2bH$zLVE̕|t i>e agQA5a9VQ̓ cQ'U/55mD8˻I'I1 + YȨ:upIilg+p!;oԓխ)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JU'ճiWr#>°xD{ D!e 3;zYRynBP+a +@H%B)*K1EM״Hm $9PHv|{+X໱ia"v+6 .XH1+@21jIxxf. x@-pr_MJ0 1ӑfQu ۴mNث[д0EfF: _'n }iVŹa,Jx,|?a 61$zdQ/&ԗQ7Zۡ$ixF}AO&Mp"UCjv $xzTWqKֱkiUB2ǘӝq^*t94{{Pd;xC7RA,WեUa-˿h&F-Űg_b`4X'_zsea Vdbʌ$#ߞ*MZA~`1YY~3v9 Ѯ/x$o20saӛl>`V4g։z)R:g5U}JXP䚯ӯ̓Z3ڪ" 6wI-+,f7XYIVQH=,{mgvh2t{{ï%Þټ=N}L ʣhڪOnHɒ6Q5!$2{| PF]%ӒٲUHENT1s_Vta[ +$]"Lی8yyp֭ѝ-_ bc6mB/A4sAw ڦuU_cʄCcddddTO׋Cyeh'´[bfTrpF'=StXnԵ edH|m%V$gY4ot}&h4k2){]7Ŕg52KymJCj6$W9'#Nx>Dn#H*kZkX6@w8_¾tk;[ABH#%LH vW:v$'NNFGnckfGsB!krpNAv  ڦIHAdG##_YC"Fcs͍X!E$bǖf=;*My1^Ҽ1UbB%XdBKw `<Ի+tP*.pO$ܞMg1^ט+R-mk 1RGzv3>ь!GU)bkbiJ{^bkS{^bi^bzFtd25 +TPPǽLb!yGF|f@kgi^TpUQUPsܓSJR)JR)JR)JR)JR괥)JR)JR)JR)JR)JRk~2m&@-qI 2=j֗KVMPIO.[#;RrSnB1;FH#IT潂˧{"3 q}J58Ap=*4wn-h\#n +j:zMpۜp.BL UwQMX6?*l"$Ms^<8ǥf{x–˨}O'Y:f7~U^-!"i̓I.s*%ҮneFYH +Nqע@I;Q_UEɖH*稾Sy'?޸''VZK;RAJABj+l-2z}YpqMe}ĂNr &R $$}2>)`ID&D0B9sYGw,Ơ>c{('T?YisZJ] ~X?:Ks0'A#otI$Dg8EfUfy*>&g5ܘh[qU{s,~Lz՚ޥ^0V]$`s韝k6o%2}h"!eg{TU'I5*y^XqoL˲0؅ܓ`dԭ)uW +C VltMb5TYUYH죷Xx4}گ q .HwwbY>O,L{ PߴI+(Rj"W${d/aY9PIUe*#0 +~޸Ko.wOolm2ȑ=E@9ܫ|5O"I,qlolRa#%¨:1~ujKrE0(i + mϧoZm:-(f }/Kؠ ϭK]DV6 *;F}d{ZY]J#CjF0R$ ӊ4Ht.n#Â_oRF;I>¯]kh, D'>Wi6c9?Z(6 *ꌌc¶? iV2Hř fbI$$Y_fF3xyp }6mVMn'_љA!:h"4d8>zֽ6 ޔreT I!wJbIW`f-WnU'jfvzZs^O"/'N#8 /l$9wuON LQ*~-P?@LC +C (UW6[XOU{1E( }OG5Ofg@e 1o2j8EZC4x@s`} a==1X퍴rG;VLoP -Ry=E}6d%D HX1@}<=1SBFp$$u(3.ʞrFAAIPEe.bNIb-rrkY]t#&I /|qWܚ%ndv*_d }%8QR\\eH9rxޟ!HT%]IŽ%x#{A4i a`CT䒤=>!.$<*ׇnVXɕ@Ē) +czՕa&d0UA T[]?ސ&Wige:xV!Fd]<GL`qڳhV Mf#B}km区s$f 6Frs_w>9F2FQa|s뚲 Id(leJDds +FNGq~{եFm>[ʱ+sA zr@cI [' 1!xҕ{Qo +k4n8e e[X#h<.[.Or-֣kOub79E'9*Jo_u]-ٻvlgJU|%KvUՔ8hm8֥ZtdE` X|èipjA:IUԂ28>4 rݘ@,I8jkZJe6\s*wN|7gk.-"+nhܑϭYT{u : +뜂NUb*5i=䒻A'[k$|\n`DL?澤-$A#$ ?Q}áAݹ1 `{++$f'(<)JP괥)JR)JR)JR)JR)JR_$IzxT1 S Ȭ-Y$r&&6>f-7Ā#ɥ)J}Yy6dYb6Scer=4wXI';(tQe 1Uu$rڬJWIJ$3Y1C +`gS{JR*vAc#dJR)^3N2kuwM42 +5H) G _U ާFE~ u؏jQTKg"WFeR2܆ӏ^ik^M5O!+RwgippFEJ*5oi`y!c@8*)JR_GDeQPRǁKB8[A; iwPmȔ )qZ!,y$F22AJRS*JX11 =Mf8uaC)"+%)JR)JR*&QnX,[c0 %AZ',! LgwB}9.cY#`HFAZJR)@괥)JR)JR)JR)JR)JU5fdi yW{m#Ac}8P:e }h#ߊM)Z*\.َ}ɪm<KiI=f]]9j~N46qOy%V[)/1۔GbS6>fQ?ej/xhp̡?!ڦֽ,FiSSe*Z[ P=$~;o-Ґ۴AMfӴDe;uB܃b\򪌓5b͕3.M7tʹ$ c[Zķpl!RmI +ob(-fMR  q^hաz MrPe>?.ޕG4lZ*>cPXȍDh\#qU[x--G ؖ=V + 9r=ҫuK"$%&VRab;äk MBĨd`ÜFGqȪ^i|k©gɵcp +fA1۽O=FHBrxIsdI@`d^;/n!?oi?#㚒7YDΌ[iz0>=kw\PlfCodjR#ZY Ag1Ĥv]7 2QQJtYdg+A`$GcTM|'pȹ1\gof3\[P9άLhYIV8\nwnÞI>V }Z[ PZ7, I[nݾV bCP͏anD:lwG}g6#. Ϗdh+ʤYբ+ry{3Dzd" Z&$XZ|dz7SlJ#9 1d#=3} +ִm#"K8 F_Ͳ +rwۂ +Ggdz[ tI'8޵ؼIqKvc"mjYxvYn}˻^mn}8M>y.mT"N|28>V{^fnffPp8o\ / +zJʹ sjk 6Iy5.OXsOݳLCfk?#HgbFp;g=`"j7X*"fn>dIh58(`x2D{,Jѻ}+4Z pFaH~aO8|cigt,1 VS5oǦk#XZYcY-/(P$`vg9ndY.XLe8PJ('+rE +^VK*P°S*H5kO$CY7ݒC >6 cSc-,chzg~9mB8- X,H*}Ys@d>FGppQKߌ?iX~&mSRGsMko3!3pXbCo)s]Sl?xIz Y绿'D%ܓ2I*U?ds*~y-97BI2ǥ7S:wUА1` 9ۏSOVhg[AԈ봌Cpp ԟp=7RSo4qCl%YsPxbkR| ÖtgW cǗd_R 8N[ycTa2$y3ߊHn!YbiB1a{z>sN3,Q|X-# bx`dk~yu$:Iɒ-W&:faf`UnΙei )\IGzۡFDP3s*_籼:wfhnHr#5[o3ܤKFn*/a-ΡEuf1xRW%mN WRŝewr ]#͍խ +Tqؘɨ6Z#=ۻ2:Ĩ+GW>4YY-vg+ !ɹX$UY>O*o[γHBSRCc*}+-̑Xm¹trݐ~\K(Ь`!ogmmC k/gdEQ%r@|jq^I]El1N7R5#p dCm6nmMij21($N0wP()$jf\ͥ>UcX +"Xqrÿ5&;'ME*v4䁸<ƠiZKiphtؤ;!2پlwP Rkz|7u@I1xPH2Tױ5W<׳CE vt=e9Sƕ,{J"Dda8ex g3$ַA2ʹʫcMVk]FS#.$TMB˸;Xr3M&{BR6<1AoxT,73p2x:YF.+6X`c럙UBDf9,#1>䑓_3?c?kO-q"Hh_UP YtR"y"=0JTpHԎ}5z[ٛdw-)LQpHN=N9jRI䶙m,'O~U͢\Zto,Lud1g ($c*1Tˋ)%>Ev\ƻX(߻`Ui-Lŝ#U$p8Ϯ+m.u 6$ +e$lioV+{w@ʬvFD<OUbA3}qQ}=kx@ 2"ECiVj=/ +Sq2 + Rd }٫uP*8J$ѫD|Ȳ('(NF};f Lj6r[q9wPs3wrFaش40l$ȏ$s3R-#$x9N{U)T^2t`242ވx;'?,ԽF&FP~ꮱ÷;gLe7ՃF{CB}qn/G + U@9<ⶫ9d%i"17V#wBGϽg)JR괥)JR)JR)JR)JR)J4K:28ʲG#T+] +Ѣ(WlAƸۅg8O&Fcvq>Վ+P$TrvdVK Lci#p}=F*<)q,rɓ$ xߏ횓JR{Ji^W+RIH!d {??eyLS{^b)JybybWVJDdu<0GiXnI%aTgIT1LW1^u· $r2IEb9?:m XU7{<翭d oϻ`1ʃ/c#ɑVV *}23mT88=XlcF8bO,,y&Ry1^Ҕ)JW+R)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@ +endstream endobj 194 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 65/Tabs/S/Type/Page>> endobj 195 0 obj <>stream +HW]+ݒJ{lL k8C}s͚lOwt?=pexx8}/mj: pA rB 4 <ogu|<B,v>>]ƣ^g\ΝV{Q}ւn|PIL1e#O񁜨0W4ս$VPQZ*vURٯB /ȣP1>O;ow.qVr8(Ju'{|bd0y~){ ݋2"f"e +\궉xue˄zB"\UG>.ϛf`oZ68jx`YFnM"#3@̙!Ğ +jV!u`|248Ib9k~%W<V5Xn]D PJSlySy$n\vZ(Orm qcC2慎9ʔzaȞ&D;fV"Y^ΡGJTH7r`n%8C Dު3/_݂`rh/,?jeLrb!rnRb)BhVbo9f<ٺ,Fk&zz= ̀`F!47BF3@dc\c`g_GW(U6ߢA3)Z/ҹюDQ.a ŧYSA.F?H=_V> tvFdA+<=݃y gB#WZ`Etɪ-7,D +sz"3C9˒nDF`&C(dǑB\3RM ZW02`O YhswCC s`S] %(SAcmqQ#S + R%)4ɴs^'Av12 s~PMٲBrh IkdhXTv`*dX)x4rQ*ta ʈ#&K:VTڤ2UM.sW#C@עȗ\} VFֿD{lո)ӆL3-/LxlN̪9gHZoҞ3)/L]٘4 q{LԜL~; 5<'S.C8U9ifvWivm.SiB)$ebEN&jDf>>_?}ѭaTKZ15LrjkP fGic- <|p幻Zଫ?9~8r̻3<=`j3nS{} g0ke0 +GĶ3OL4Y Q@Uk_G?\EUU`}N;G K6ymNusvkyQbM-G4p'LlLz][&YԌ^.8==k*titM0~No4|zw}sq8/7r +(W'J_P]Tk Z)E :kطLJ 1e?LLasn%WBNO@@.n-'MRŬ]; nՓ L}&z;EWr[~t }_klS2k)IG,&EЛwa ' cC[ưvPkϪ^yV¶njޫc-kA:a2C<60Q|o-˒$B)[.-Phm⃯]̥K: +蟰Vz-3kӓ[Ξlߓk6s>*b팈K*03FHi m\ +2%GfitYpQG2S\o07h+ ҆l.dl"8}:eaB4Jl/TԷluPʆTTOWͅZ&#\QZopI6 +C/͍ۂwDK"FL(9m'^917z:QRԳ?Ln;^Aʗ*|~W-Cli 14y҂ISDW@vr#GulMXbZ jn5-+R>1RR@]@S˻(Cٻȅ]wI;2vA +ϑ2qRᳬE'Դ5\gĿ<:VL3QX8A%6k\"EM^Q\Q?&A W'Æ &\5,5@ ,(}^,05|lN[ {B'l%$JYPG20I'8̹]狫eb",vq +`>uӎ6_YKn);n` +>\@m}/+3>stream +0 +@& +"ps?iiF $<- O%vP} *TۺlUQyIG1;+r񤳵 ʟ/PiW +8ӦY?$kSxkHn{UZd(fkMF +-mEQ>~TzC\5Ywe +dv΁w)P[KmsɺH3x@^#K0ށXܙ7}_OK*鶀EÜe$4a}҅jdx۳ g`hUn-3K"CyۂQG]:+KjϔcZ\YLqBo{>Ďj_c`c➸7~ >Myu \ʮ- `s*z+hXnb  ӝXO~gz2nVʞ +Ҧ~CePEqHus z#:"j9Bv*0V?ټ-C ֣HxRn f4Uo<=8z3U5[Hp̙G(JqizVe\yh6n3<ٖ`:ah-ԓA 8GJgk4&Pr/Ƒa`Tֶ+kK LV\AuwGE`wqEμj nfP/2My7&u !],wiq`=%Yl"ok-SQXl7w͞ tdŪC;m3J|%}ߣp0:>[r9064I$ٷ}E\R*[܉w=u=Ƶ]hYȍL9fqd}a|Kg8f7bnRQspo&}(e&Ʉ-g#ϗB#fĊ؜@N~/«G|v\v;}w1 dnR' +7UCPyZVuL +ɿx?lN~0:e:.Riٯ/`,.;TSgBaIqAXb8rA)yzJ @g +< 6n7]g+gjfI'x,d |aWhZӤ%,p~ZG)&ڙ`sFԎe oEtja*f#K"r/CMnZfzg;hCrϻCBӹ,H&VbݸSjpPlբծ&tFo4143ٹ?}ˬ^ewi6ij^ާX0EvͺF*p&OmddNT@ʱoof#XeO"}Czg2}>ug1ϽD?>>HW mꑶa˨/I(s{g) %8_E㎊屩?B ؃R<*]m >"!=X2# +s'ɫ}91u2@l-ݚhF8+s+zS@׋!jƉ(ehXL98"Rf1@l:h>{E6ʾIN1)0!΀>}lIld .HWNl:j.L9J=PtZ[ێqhAD1_Lx۬TjreI<*B\s庅[`:sd8Fi7h^,#04sdTD-Q:o>PH ͮl f:JΫY>iL( 2F׵t7ّzǩZ??.DΦiu0=T Snkxsej΃#DXDZp=k+W<%r0Ssw}`?`]teO]`\iQ < әqۅGIkdFR +R+kyD"i=V#-g?I+˨9VԷ%?Rj83h*:YY)=xwZ:n嘽`/D{h3M[EV=DJ- M<;E*@Pz"~{ِ@&gR٤ +1<䠴ħ%L#@R,D)NI.6q)J!^,]1(&/r+k0mQA\~R ٙM)ҙҐ N$7K!"{G0W[3\T7YiS6{Bd>CsPje8MMx>\Eκ8_'w2[i ߺ|pڒ,;OΜ.H8fXhhϯwj;ѻaAYCި[ž0$ȣ(XwmZ^gCn )Q2OaŌ]$c$썮rߓ+~"ߖE& ZK)zK;LVWY(]NIG?B 6>u&١Xi}LM9kR֚NX$ΰ_@[+1*\Y]eC$LO1e"GR3X 8)X2(8߬aҦs{#~Վ?`ef@۟~¨x~L. kKeJ8wlB|OUd*79rv NR|3pfpBo#:Km-| 7dO$2$_-ٹ). cfg^5(>Ǟ4wgI2g!)]qVs1Cy:4:k¶'(QB0&_@;\4cF bGLd/[ỏdD9 N!!&6ס(43\ tmYin=&^1͇j\9a6+p9O\|ow{) FJjIwdߙʾ(iszsݞjڇ Mkz("6<9p;IÝfzK??]QB|jsQR +6ȝC=A\]Orv_Jye%@ӣ9 ;k7gĻvMj 1jaE!vwx`],!co<lafR7ž:U*rQ8]ƞ3m}s|-Q+?&]50+01tZQ]DJ\p9^XہT1c+ n$IdsuqZD*Ix-D3k3 xK˖8 : #X'~=WJf_w9GK{rQ"̕d3?ț2,%~)n~xEa.c)ݖ*V~PFJakPaCooPցYC_R=}oԱL *g@<dϮGb_ x|O3N{8MZB&&mhQ&EuH9[3G;'9Zab(xr; },*injo/qŜyn^B8JdK#2@K%3x|[s7@w3hdȜݝg+ vRb`z j*rcx.'1.ƶ#}I~Q2OpOUvScNw׵OXDXhl$'l/b ecv-0va%R:J0Ei1uzlkѕ5#LJٚlaC;^_,0@v.&ģ1I'sB;% K$V +aȣYNL#J'[bU!P*CXGFn7 [rcdy11_ū]kT.tR(\<w I jSK +rMnr_১^¤ ) eyVPX^_; kI GQS(á○¶|&[~5KmgM6!zA4ձD=2'艆scl>4U=ui}Voh=:BuOk2ϹdE{N\w[O VZ4!5 +yzqM<^s͍2ѐ~^zİ%z7g'a~{BL gH$83ֲ}L~Dl)P6Sd IPG{G\lm%_Ӷj"@t>xjLVUG DuSwr%Zwu+09V5 ~%K9.r}lBvJ"e+Xwa{C>!#X5Tm7U}U-+?V&󛋅 2]6jV !T.:}\gDVo}Ȁl嚿YxL2gն燉QUZܓTL{)T8 썿6e?Jg H0e០v,ƄXMH/!ˈ$p#6#RRǘ hg;&YלˉHr{cZ +oElxDAI nS>V7l.FWtqyM>7I +̖)A/:j U')"ѳuELm93j$j^ mp@򔼍>¤.0v V ٤`bq Ț2A܉3a8fS{DAgdD|կ͜qtkf=uYu>Ctw3vXfJ '^A퐹]\O/o6$Iu~gxPq4 FbR9tq$pL0}!-Wa+:KoݮuZHQy±dyXL%, +H%z"1命NJĪltz|Tk6^Sl{& @C GqAvSs1W=,E;T=ET(\װ5q}{LP@Oȯ #o5zn![bN>=Hz3eF:yzM.'"cJdt6=*9twVR®`EsL/opp(<ĜG +ѡj)/~ghS +{-A4,H?L15H%j_]Yzs'Pз+Tݸ:H +v\O]Dƿ R9CƠ4О v E˸Ut0[>]cK-J{ͲX>f%)oF3 O}߃eQ?ck|krJb 6)8siZU3T͙g-3^d"4-u"$xPU1HKf@ENMewxw0Nk +뻗.YJ@;732Mg.&Q+Z|r{5fGC-ҒK1KHv$02Ȣ68R ,q@x|6Xx[1 JعEN֌&}1'L&҃BJ@ cFkZO>ovFM9͐YadMSPVu)mZcOeJѬZ4Ic1:!%8.,1#xy?zk N#d߯ͭ3k)Zwo `IH^rH!8nĉHC5ryK!>1&_TDj[T:vjEyc+7%?C 'x#ORf:o_9]nu@3^Kmh\t&i}6rIcF(0`y';jBŐIl8H#VpV,]u's`] [3(z7gq. o׹R: plpg2&dtxV٧Gy\ +%l "%"^aMpwu*5֝tMB qh(0Rjz%^B;uߜp71oXDDN'ə+s Ĭ@{sj5Uz[ ڄlvhX2L^kO":gW*ܮu/}֫ފh9,~*ku7]%,8[@cלWpٸ q} +JxqVx@֚-sLb\Χ~=g͘Z1LK-QeRml7(B[O/ndGd&,/@V5xx3T9r֨{@w܉ƌ !E 9QF\B^ UL;[ Ґ̷g`U{^q4kavү[Αlk"n1&٫P8J&8 bL`Ag #Nj`_s*Gz]ނTV?iWՔ=>X킉@$y^0 x̗hEhZC/֊Ɯr#s/df`GcpkKZ rӭ3U]5'c>8>0v5 kVH8{h<ݲ,5.Η0ٍ*oEӳ%D``^ {idK6>0AȦa6%p/گ(WفH-PeZ^{jVQslgmMIn/62s]QƓⷙBXcw8:$Tz;<꽲?>biʼv/K,|\ZB%3!6O.goՖ QlZ4~ܱM6>_{M0xpGfFqڠW-m͈I9YnMN#c %e"hrA1ʲU-n"yz(d +eB3"pGr./-~>uM$x~wV*!k釓0豟>7p4: +| u}|NE =4+BRsn7LU{DQ6K.YD>9Oitv-b= "ׂ&[IFC E˥/@I%FQ~C..TZ`^)a,/n9v0V ظCS*OJ1lm+%G0I ZgI +#2R.I5WPmDfNlvĈ!rt|=[Maw@{s.}ےRV o7R +iZ:M<0|U∳Os@r4B?Y#T#=yKE0G-^Gʒx @zZebC(g3s94pV=>1u ~=hS`+t)m\g(_cxf;LHEi?z^!1!O[r{Bp?ju5NynbEUTXn% P0 E%|nը[4~3 DC%UyV^߭|율Ɖ8y!/Ϲ?J%(y.X..|!_jqW>!%c\6Z0nY;C^[p,PLܲuo+ +)yم-11|$<㬂` a@ԏae;;8ޞ@0S˔CKv |'*H%/iK@GX)UD総Sr#T)61S=L6;8g.\\PNykj>}ey F XYߞu*|qw"G2o?"W,B#Zצ;Lis S{9(d将yrťx. 8џ"C0r,˿ٵg +cɉ,J ,vP5ڦ20ښICJlGqNT-N`["}(Z7xt̑ f:͈MoEDU [ 7%:Ϟg vE]Ko(E轤N9T :$ U|% +%q훛 G<rzRYR\`)ldoۍj,xu2x{Yk}} xy#"~XXJY_W뫤 +|s u2\H@^ ^`pO.$G&uoNQlR Hlv^f+)4cW')+{_Q7e|X(wqHJ]zS/j?H4EKl=*t_;pb"QxS0;fpwAQSGơոZh ZqK0',ڠ\3Kohd0m>Y`}I"J,JYҢ!ej|UV9qG򥲟0 <9YԘ-CEB;T 91wF!RmƗ$r;Or!t2F?,ć,{JY`CC?NU +seXhb Ɵx076f9[4|ؤzCX <XZ'.!<}]x3p|:^ ^us5h!>GlP biY|ӽ_8{d" 2o~lƝ6п[1"wO= PP(6 @j9:%әs DcdVjf<TQܭյ(rҍpl/N3w7}_A;\jioLq_OC6y"nîcGE)+BJy$|UifmTy50˽svwC=ea0 OW<EXwךQ Ě[D3d&(u@ P.IA'}և +SՕȚ#2JH9߆0V*qwdJINUg1u%+kyWRfnqFnrZJglDK1L(6YXoG,/V6)lf8t#^7"Nǜ?S`p(9?Xl{𾅨φďbSRFe +1yŤjXfDϮ\M*ϫ%.6"Q ٓζ jsى9P-bc +x,<*5+y|[a|QWFkЈA{ZFchw^zNzPNk8%{:eQ[fmk<ǛZ}f!P!GqӐ@A`"dǟL,L ]v8:wf]IADJj֬qԑM*G1 D>Dd鐈xQ/ݻK%y,deU_HhJ ҫA/Y)Ѹt + #hmY2J3xmԓ$ +P" _([؝PR<،S #c BG9͔l1.Zivh 0BJ[ʠǎ<2OZ *vf=ӮuaΦ[&&讆hl*8nBE+!Zm7](,!ӳfDG屽CG91L]UqOw s5=v)F l/l> {Jyo1ryIhQVJ z>HA"X6HMPZ>Ϙp5~ibișR d`?آnl}kZz|;wDt'=,̖>tI"$ \e^w2Eh:DI7Z6TD4GEwaGILf#8saP4B7^wPWOHT54o恏[44N^t3iT~G"p&ny6?0k]S(_ AMo(V )ϐ;VɷQҜQGF{uF^kM+|; !LIy@Au^ShHX!:5 韒GqZAzlI8蔼XO wxDG_-{SJZS I@O@D|Ҏǫ "-eVORgʰbom\luxzL#3xbi![&GZY,+[Zha dX Z_5<4r$}k]Y 8>:ֺ)z~N`S+X4$`?:#)^Σ`)h/~{\%gwhm;ܩFԦ+Qz\B:PU4'J XbzAŪ6{cQӏ]팰ׄn\4F4۝;ʖIwSDr.4e~G0ju"})`ݺ8eOHW76 E(itVžNkی@Sn%Bߖ%vFqGFYN;!,]_WCc~ 3Esuβ ?qjMZRSs(C <| itT+AjE(QdkRQGi!OD3m=&(T[f$sm: m,72aV/17zz k%1qt p>[[jyV.yG)i^AeoKXzv^F +[P=-+\Pk_nB94q{IQzČ[&bV !NQVr"0 )=MAwN.{(-$!WijdY-Ɲi +ψ <֯mz,u; v7$:$tEaUe}iUr7+r1f 5g+dki1mAox-#:^Dg&X҃t|ɔU #8v6A\/q2T8k[t`; Bl7;W?MdԖI4 (ExYFe`8% +w'ikts_\~ : F^KD\fANu(2ew"-%)Cr\47Gh~\x-b_T}acUҨ1.#u!yάAaK6 /LmM(5竤m..QK-D.+8*{ҁ 07sţ.Q(əijb,\MɡF[]ސ`HiM6߄gx*sqmӎCؘà\atzm?F˾Z[(/ YR4]+?';3k`b-Rmc_K/W}0dh135%e.JMofWKiħdۃ nշ̿cռRBrgG+wFŹ ~3vu`}/џgNY-􃕅J=VQ6&h6{Ԗ{+L>voh[T/Wt~򳛣gӑMrU,v2 +‡ڰ{] !'|hk.vh|ߧ} Ph=Ϲ簩,'=oc)doO[`:j<}8p|("q!-Ԩx6Z^NȨ)d#E7,XH;(Gsa_YqJĊvyMlD+^xaז}}Ս[N}9> X:ߗ>\qPOo'5fIMIx4E[$}0uvĹbor8[5T`L6:Pjk-@"a\bnO{' cUGekBK}cGifG0]J"xU9R=.]\r2 +C,?AabAhe\B& caqMۡv +F&`d˯jl;ޘ)I~VNDy nҷ0gE7Uw,G\Fzx(BS(TbJWuP_Zh9q`~Px(?6m֑y᪫u5oBinpqdU{(u,=Nt΂fehU혭O39_7UVnKV٧@+/vrA:il={위%uR2|EkWFo W0֩ZU"A]!#]qȦ |lE3׹m(I4#4=x}9-c}?}SC/رp9g5Z=};JWoa—ugaCj͇5qFH=%׃rAOZD|R{72:S~ +䃽ĦH}Φ +`7d⯩*b #W"+ݢmo{U8Wlda#%;4ZMEZ$||Y7(a 9B&\3usf$P:xIDF@xl_ƥt꼦N|1Jn\2Vjjó+^e{'t('-,ף(tlAc{yV2,yQI*F8OơvBaKstRk=YǷk75*Di<D,CFzF\#f +"{nd,e=QZג +Kk l$SyyJymy{BvgCm>{I L>vGk;e;B+8)c@ʸ>BE]g"Da૙Ra8GRH ۞9,sH<%{{gZ½]R.r՞:ڈR*ӄ'4q|F3@繜1iuH}j+j |<^%qẽ.{Ti%kv$.ё+L,]TnFz͠HVFIYY"`+rdt;Ħ}]Ia=/UiA.|6GgjÄp XE:W5#vvIf6Rzi!R\F#ɯ] nF#5ϙ. N-B_5=Zk]1 _]AVWQF;9cr,eI^I}\tC neu5&X9$MEo +xGOg&B;wܝ=]ႉ[Kmk$V+&IR"4ٸ ʽ9ge&}E$&ƘxFrp:yDcXQ7Ph{tUyi֜.UC\498iՃB-V}Î RGT`B 1׏b/\{}8dNT.Jn6v9$/,}:yĀ5;d\~(ss?JG7\5L@TXpoRCwF0e&8Nr-qY =ޢ(6eJAXr;f{2jwG'p' a@MuxcŶaFG"[z1l}ɍT3 Puoz3?ߣu HH)5caZZYط5 JAFJ]T>/ȇ©{ }E8+ۺ&~֓1{ΚZm?2dǨ׻ ^2b<%I<@tln J\Z% Ni9o,r7[dyw="BM`Opw6`6x⭷ͣb0O~j(TdT 45噫MY ` +\溫eg[mo%jY ]PdA8^|,2H!_'91;iZY$jɘ;zhi1#}+1]l`0\g5^nO -=j *EEMYM\̸[=NN B5)jĒNdp$WX%5W)8U9`U^=,JR$~#xxxҍq-8 + 32V}pX;OwOlzED_|^o$ǣ Ȁ'ЋM+9G'z.crsx=iBĐď6.Ҳ[$뭧5>Ja.ڎ96%b.Ԃ̏!73|{I%)XQse +#l7Z ]]vrhQ){i|RdB y#%a:J5h=I J5ĨkyvcsCeQ2MxlNƲIk@BX|g2p!8Eə^)߽taJ>d8p!߸vCf~eSMއog`g ePf>WTV"ƹqM +7vt bO<{mTԕ + 3yPvs3+gzu-uM2|N-'cƓB9N;(@~[1.=Pb(}MDpOFKoSNW`TcUmֺr\P,<&OM g^ lGlyd? dUl@FZ0\):G2PŤv6wj$#%"]Di MkM"YR5YtO59WOv MlWm4 BdjO e}_W 9huTt\"Ckj&Lv}5Xԅ4^[׬x\?VxGmR}w." _C^\aCŬջ< ؼGcHv aYO2 Sܓul-^0_`&R6W> -z7hգ`\ɼZAU*#Gi#YG:ZS(sCmn}`rٍdaBmSF 9{1|8C̡$<*吔D&SW@ڷǐ% 7P= 7-J@dS +^23uPŔzk!&Et,CmKB0U TnL' rHdu= Mȿaa@vsbh{Z0rf/t,NKj@n'ә{ +l &g kRbSLbS뽴g"t_vȕ3~~H/.0@=E̘즯͝XR Q֦Bm&)X<`t#X8裲v#ILqg7̍שgHK8#LcՔǦo$:X"!4}GG岋|>fGK>P/}Ȉ~reP ~D 3U-hpFȒv>ɢE t[$NϺbBF(ХBǟFmp0`?ORnuެ7U,V!B8., ]=F)feBk( +'\8aڇJ,PNM>QUxPOOb߀Q1Ҟuy2N* +88{=>WࡠU=Q(dd.2~̃xS^8bS]U߮:ٳ*+"в:'e;N,RzRKqMgg>&zskF/1j?I?h`ytUdo7 oovZD. +zPV#w'@۠EE,{R +IcuNo^䂽#?WQ =L|> NbGޗvЉ>w 5EauRz޸C*g"%R}^1ZQ,F8~<SCeg)ScK_+T,t=~UFG,H_Aa"HQ)QZs%@AI|LXG͌awrsZ6>f#ezTe\B;aaz[e ?yK`oazY ;U/(\e/) Xm+͔+Z 5pX㿨 +ѥL1 <*{ؽK,l9!\m"i:gO +VJvdw!KܹlĆ+;qxy B>/bx̋9x/]=,Ǧ:r-o6_jE YޝOYLia vE;}΀X o M> ^yH(AVqAЉJg*[?|nM&У9,~}?1CJ?΃_urH@ !Ug.'8XfWn³*4id!։fי v!c8Ţl3LOa8X`]9hW{۵J)yc^T{D"_#XYB̥]gWgdOk:B(xG&_A u7fi5XpsV62.r%Z&o9a-}Usy'YUB%} +$OZSC0V{ޡY?%4eعZY[+֗~\gIm +LkT#s u|}~ឹvm9Ź[4I3n? /6DUDZ5X?Ӆ=T0Oܕ +/\fpj㸥?NL6a%HIgM!P޴-9(CuzkRwoi5i=6f>g$xk z#wh9M7p!$!>ZnUC<~`eCm cnuQme+MAUX#ݬ ~jJ> 97(WN5gri{{4yJ tG^R1_S[x˪wysl<ԙ,nwh'Gr0bbb&T"JÍI@\0FĶ/H-~βM6"bǥ5Sȟed]To{@$LA쀗tG{=b@n(T( @t kytWɎgN\UQf[QxDQkЩ*9@(,qC'ơ9rPQy:狇8—_v'9$PNж5gZ198wԐߴ?d[͓s>q?:?7I 4)E \ceK|@Z/u<0D[}`Y[OuFB&|ky nI@_JK~x;f8eB"bQ󖘴6MutܴsVɔU;1W<fbjʞy~Lb7uao8 j%*UՅ|h`ay!ʨ,\}ZR:5\`p T-q2Lfبu +Z_ߟsy~QY]OSP[]SAP|쭊5 špt)n}7VGu d +\Ѩud4cʄ5_PEhG6U%ex\hQ3*i +6Z(iM$DV֧*nSukS2 ^!4f?\J%(гj=[Ye(ˤvFPR 0DX +!}x*I[QN{JUA4 kIz4Ѓ$\LuEےB3$і>2elA9>5y iBnyrá/S9 <0 "lLw@hS4eQW明]fJz,P:7 LvBvyEؔ'3/<$)Mŵ'75=m<еc]/8,#`׼Ko8|GS97Ұ\0;ebc)+ a~b %>_ɗmfGr*`O(>^bZ +ZʘU1/A[wmB 6g_Bui<>t<~>̩+!_hHыжWQ."ˠWʞNz( '`| ։s^jFLlE%ny&'e9.D7׎4X$ a5y,QGqBCYA"xVۦK(*8qw;<ぎ~V MHQ|<#p 1DT81{V}mkq5:OII >2תS'^y-j I9[%GĆw|HOj'vWA`Vx6͏6d2\{M +;0]¬W'.n%/SթFtVh$ngH"і.ӵ"`' IcAZ锶seAp*/wS]LȞk2^JcU^P/OS& +pʠMYjo)arkWmjkrO2>k_.affkԈr 7Tb-pBź`'_uiGjOCm8q zYqfozclM|90xzFwҵVRҩ.Wj_0Ng_/,  up<ƅkV0-+|.okML āPpzڬ'7aZAK{4y8N(\8Z-uq[@4@ AI;IHUMsX6/?DVUy٤Z<dfCJaQ(y}nX +^ lD]Lȿ YQ4'7?}.zv6m_QBi5G [%[\-SwpץL~#UH5]4f~2iK6gA1Qy%V%v +%ÑqXs@g !o FmjnPa# 53[GD!XCcH=.k!a"Vx*2wS+y]{|`e!؂좍`52\B''FJX,7lj̸<#RoPrۄxˎP?y@G~a-ɭ|>pYj,Zr^.h/WMxHUNNP[z(XT>D m5!HrLsh|~x(td@_F>|{\U;vvb˥:Oi(<D"zM)GC[Eh/B|@1 GFh*K +9YM@)&"k;0k{:MkI"f>%cW5Qc@ʟ2 T5*0jٯN_Lz֎C ˕q=)X2>R΂7.L:FQ}b]c"@t*yw\wi2k;mg~n eC9VT9;"ϸ꾸RL#aN +l`sQ]""a H[ʒ2V*} 7 @H!8d?'m'(x%{")<|xezL~0 +?a3{pu%e3:+o/n6Ҽ:oWWlVŌ9yxi-ffKjo^ /Ad =Tem +?[9 jg kMܮ+z +ͻ|U (iP2ax~zBXeBi1dәK6@'qԥ9e<=}_Z]U0r9 Pk2źG +ߋ*z !2` JΤ`QYx5qbg&jpcpzۍ>\Y-Ut8ylRO!;i>N~>ַOi'yD9E ( +@0L3N)3צ3̕TwS}D;QZ2V8!Ft%ç8s8: ޚk`Sur]Im/XٶFi&ۚEaӶ=hh7Y#9Y|+ivŘ:5(N\{|,:~8}B@ f^G7x.>Б`8Tcca̷Nvq(ϜJɇ" D'>T+n,Vw'ˎui-XmfϞ\cG[nbH)Xua[* ++1ؑ]_S6LAO- ˝odpy-K]DV`*T TC͢u횑jQn-Lt&p g +30 PHEF1TK"! \/̹@O駪 ,]>" +&sl?׉k^IK>;J<\-HvO~#c@Hn.K!1eۖ7oG̵2T$fߦ|R^ZB U?G6NF[yjr$Qe+rT\j #e ZR @77S%ft\LMrӍe?bJ@KQ,X=| Ĕr`݇*"O%[QMWs@ < Hvȯn`4!+/$ Kّ! 7Mx^fW: jboHc>]IPt7z!6N514;0*4['.3fKOJouo|W1_E_,TAwls +ѕ7ԮXJu"L6y|] sporV=@\gHg5w j'yUf8PXV#HSm%ff8e+8K#&1%KRnh~g|XF\ +RzDG.[?9Ꮂtŷ9יo.n!.9bWZ&v ׄ~V8v-[K!tKhvś hq.S4~@ܕ_8]uX5ȶ雔&ՁzN"妿+DAs)&<2d~,׽^{G&zF^ Sс&?$~ؘDSGdXCȎ?P!M-9 b#%&GjЮ o!D㆗&?Djovu]MTC&KTzCHzCT %W-%J ulǺ*%wSb[nx(ik!YG}x]U̓FE1߁1$:E؆8]jW}S>Υ#oޞ;X:2 a3ԥrU.y񮹍᪛7\C/t?eM~ y%U{0 +n)7E|7JaW{рwT;Ԑ IR`+QN8},2zGt7=?Q4cI }Û:fFopəЋbNv~sۧTԷ1OPř!I1PuSqyd,rtX3"iXR_Ic⪖W/@-':_&Jz2!هJF06OPJ ʥlxRRSă4Sa?uS|ebX75N7*ⓐe" +hYCOਿvvjZW^5L~Ss&oņi)-1fxB wS5k Ǚ$Z+ b +'q|iNo oK 5?E!Im4\ˉKCJQ9`4۩t7@Kuw=3Z *ҪLM-/Wx?ڑTН^p |*+Gk$~`ӯTѮ7 7jHkVZddde+{ \]oG˔L?@ꭃFW x t kDw~C6«.:@rkU[='~m쎋}9>&2qS~%CVAɘwitU΀NLOpݏ(+xͅTg FXj;0MZ42Az\e2`R2;MGN>3Ϭ~)%If9n 9v_T"sݵښ!u>d W]͍TstML)꨷(-nnu$uNX{wJ-l/9A4VއdiGGoZ:_Ly[ LX5%@-\^S8j!&"(K.xzxhO:<$|[ES$"}NIau=tR\~u?<`Fp-7EUƜ FsչμBL1l.V#^4',K_iUT7.]&F^ُ(E7L$$ }\OIINoboY +J[ybߥ13Evq JK \:ncY \}Wnl_u_t?W<%5U"`h͕ +)$ 1g`Ρ_145y .H 7Dgw]ۖ2\ڸSZu0dkP, P} 3SRCb#fQNY+o&LWs"cYO!?]dEa67iN]YwLf[T0_ȫ!:?Dz%<^it;RrGDo?❛![O,`lD̋fJ{#/I1VYk* PXnfA,*,X;&`ͩ268YGP?VR y~$cEZ + 8 bIIӁ@ e}"N sGu%鑢G,"JA|'S;hn^ƷXcN*0~\xVʅ( 7[`Jݑ W@MmS8pz^2a3l} fF%kw`b}#} O!'b>blm]&ZYA)c&!xIzH\US(mmI*ZEq,|d V(~sI6 {Y_.Krcީ<֝Z&?W(k1.Vdc*̓W6)/- e0na1&Hw}g%ӳ/;GIy)9ԩT^YhUޠk"tBa&B! ֲKX6hnz'9߱Jߝzk1`-k ~)ۡL-sNL;< 8dsgU۷Ì?P/+ +ƚϋ5XyK^It*b.Å}^YzBݲ|a5-8kl` F[-͌/hێͳ7?IzIg~6 +NX {f*A +endstream endobj 197 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 66/Tabs/S/Type/Page>> endobj 198 0 obj <>stream +HWۊ$7z}MAuee 0of136_`RH +EB`d*PĉsN|<}>_~]ۿ ryo|ps?5m=}d׳1~Z%efnaX2s,X7ڶM[9{,*juHO6x*/86Jd4 t)DV\';eKc-=+ +1p.-ik%Zl2V\J8A$=ϔcjhĤ_&ӥ)9/&cŚCnxŽi.:lH, +j"ϥ[>8wZ)q^6yF`{$ J$]8:QImY㳮ssN^On, qQzg@B{h&H3K^B:O^fyiɥNsklx*((4Q5ZT{„bI9Yhv`\ +a*D%=(QzvZj5dan!56QyUSv/WcyVh6geWr'\+XY +J!-qmjDIiNJ\=T,{'q$>;rӛ.PD=13Xr|S1F25+X LS|땿2%5|.)?9wJg5ӊ fp6#{\ +3|) +V}Kl=Ϋ ~7iPyXgÏUuvKB>A3i;RM5o++en ?PAfr)Cyp&Id9-S+ 7[;σBʕ}j#gya}c")?߅K=WBaBhdDǓ:rDR[`0&*|ֵѴI"$pMb yd֋;oz2O!Wjyi9i0-{<-B}o0_MWa%9o:tf(Uqu of:ZC2EJʩp6 +*bHϿs#wX`0;k +i t4bn1xt^Do'-SUu|_? .ɚsWL7 !3E +6 &q;y v~v +CjZZjZ= µ27}n?tBs|Ö4̮쩽͉2PT@t`V]K@j/KrMrX(8]C wwH1񏰛< Ja~Yi۴WPD(¬KCKS%ٱ.=η"+vp)X3t;,Sw͗#9zN#XU6hH[pa`A4P6q9okvDÌ67$WDAVt*}'jCR9E%6]9/hȡ :d+_ v#u%myY}#15z*M.5f"T3_[RQ\ؘR2vʬ;?IJ +d6h|jb ȥ&u.uBX(Fc6&~O~lqތ)  zyT7ڙkݔ~VԜ +E;A&knڝq7HXGlP;9g: Ҽ%ĆiH$|`Ba3Ȁe ą+Kt3KG (\ z&bFL%b$~2*^B?ds=h۟~ҥ_EQS9b&홤@Cꯒ)DTtrSdݏ"APCBf ŭ Ϡ±zjxTL@9iQ^s ߍS֡Ѳvz|FL^s߇ 5dī"Md,~DZ;525b#R߶vxoÊ]~ Hl]5t:48 o:{3_A2$ ,(5Cgچމ0[|sDg 6i.oLҳ1@QxH6,^a|J2G].L3w4hc#s8*pǺ&""16䬋 ն4%0bZVX0ߥNq9q6-u'. VBzҍZ_E%Cð8b>Ǯ>:9U BtMnۇhʰtfͰΒOEx[fAɴ7Uǥ#qhi:{8z63`p!fj:SZhԪ>p.;TJ5g"RcjX7̄#7F9xޘE׼ aŔWޛ6L] Ya z@ + +1;M!jX/lSJV>Fv%3{n$־°c'ɥhc +W}=$c2j蘈M0;o 5D]~IR'mp>a4,%;9i[n +endstream endobj 199 0 obj <>stream +JFIFaKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Ka +  e!1A"Qa2q#Bt3RuDbd$ETU%5CSers +&'()*46789:FGHIJVWXYZcfghijvwxyz?1+PX!]FoeXzˢ']lFϗs/V 6;JYrRv ɞ8gTڎzC{>G2)Wb3 ޠ|>~>[2Uj;)!b4tvϴȈF`f`NR|'׾YXbNQ}y(,Ն) #wQJj! +[LOH|&s"X@3."[:v7ytJ3!1i1on :׼;o2Z, Hz.啓^OuJYa0tg,~,)ړ^s3ڬ|<16z=#c2ni,z aCVk=@l7HDDDU?w/G +UY^Je=N=\[ǥ0ŗ"ק>Cb__VrWFc%n +/ră ܟ1xWJ`)e ߗ̻Ү[-CedtN;o% ų>.A,EH{րJv=J%^n}7*0Pb'zjܣwccyB_bUbu;Mo"ח^cF5SfME,v^ z<2M)]C|J֏^^GkGd{|]lĐ]ZaD}'<*r5za.܍ ՞J`{A~]x9 BYBNX /yL|G.RYPBlVٰ%bYvMX_H]N1.4YUmfg^ ߤ<3ڮo'3ղ1Kp@f]%{D2Sʐ2KZsU=>.ɚPY 6>̮7/Jro~KG@0Wڌ鶚j p !!*9FVr-zkP;nL*h>d tWkڟ~K}^[:-MsEٵ(a}UT5Xl$^D;ozp/'n9jݒpՐčwrG|,{.JB}=Jܖbw?!#hz=o[$ 1h%h̿kG:1_t_3 +]u8(` кVށ'^148ẅ́rKR7a@&{frQKy8Cbd2֤ ]F$ɦԭ~̵0U/@y:#c>Y] Ӑ2x,֧o-FwW{QͅFтot}CFy6u- +8 G 㽯k)U_P%Y FY/ѐ%Yv-*6<_}F=.쬅'{#2":y<+1m[$t^I ~gPEB^[t 0&EqŧQRYXkf3EP1 ay(/ IRj,6QC磰t75<{o[3bZܕץ찄 @~Bg`& +M~J>_9w Ce`lYT݌]ȵ?E-C䓧^篎G-ך;܌]j.Eٵ!eX֠ ub*InDdq\m|N:cI Y3I$Ȑ`e_!ޮ=jW#s&2ʱX ukӾtsgmq# $;~(<=j-'R2(dǫ٫) \.)΃BBwJH:=oɲ}C֝cI;=ǐq7Ŷ'QU[k3ZIDx_f>w?>+ʺPR[,wG1Q*>v/q|=Gc1[Ce"VbkDi&v޴|7֬M"UͲ4=H:'orzWd ^ vrxBj,P:\?&%nO R֨]g37Rl1 @'D%6VYV-YsA\8V;#ju^#쌓j\|0B麻﨓w{02 LԭH +U:Q~^b{?_WW#Ago/= w?FZZ+-&֥: MR&')9z vqټ3OR3 +uY=}$lgsӚߕ ΅Kkt~%"" ށo興"lֽ`~ l]kGwܓfz9?$'EOa`D$ƭZPuH5WsZڲ~Ŕ00yfj|*j?_WPrCD'-X) G]!qGe g^M`?NPI3oΑPC']u)򧐿2\+'68o!H9U#0_^ 'DDDDDDDDL7dLoshR~'{/(7T:琢鏠V"P+^J""%iVEy]}.U}ۘO-f~FeTTڹp8=c%""%iVUw[ɺCk<"4XP f<ˈ|qWn:kL:]D|b'5mdo/DJL +9az6nbHDDDk9<\lK}Orͣӿo~ ;3/MW_Ju? WzYea_`fӺz﯌ᮿ鼎G5ItGb{ȶ̻? rqscOKXy[qۏ }=@+ET l˼.9V Om :yC뭙:fjF97ν-Jk^B_f-~"\/nffCzh0x?mƬ6z @dcefW*\G,I'kCjlj\*yw.i̢Tv8/OIA*OP`vֵ-笿+Ʊ }cw^zTX>#Eb_.1nzXe k ׽-m/ͪMYnnfMkYZ:Vgum׺<ɑ_ /g7O"T\/2*z-|k}2XI/PP`;'>^)33{3m ^WnK{_i37+YW#/# /Ip+Y yl$!nW~'EXv9W$lNւr.C[+\/Y^rH=빸Hl^6='}7gVg^-OyАYVr8'SkK+*]p:@V|׮Q l>ߔZ;Ai M^"j(6J*H#kc~`jv>s Jk=۾F?-eq]Z2-hf5멘 CD$E}Ƨ͞ Үlo>a=s͌"FNeG094R.ɪ ӕ[)}&Fe :$!֦5L@~u{K{MhmOcfcr6r\R|zfv(g]=x۪28X+k/唫h Wyɩ۝&-ԷrV +džKu0usƨc'ob +4O>rQMVWpu=zV~zp6e;\Vt^ +̃28'kZkuleWGSr|v|ZǨ` dߧ_XGWvꚴPW~"UL +;hz6K3';r6WA5K+"XCcD|{#G8}ń0OOe9K7rB +z T^ބ + #{L//$g-U&ScV3J2pGOK0|kl^'!yVSj ;zn7˿ 뽙2R:[HcZ:'b>f~7ʾS5>V[YN~)/}:|+qK&)wQUj{CM#ҾVX:>a=8ϤAlWz5R4CmmL+S { ~U5XU0'۹|5͕[M>]ۛY+b9 JUljT #}\Mmon! `Cvn/Mvr.dK_/HrN>k] F]|>-Êzk<ۥ|eQWmQƊ w 65&[-+ǸUXǮ:e|)r|x[sRUd!QSlTtdbV oY]l B0 Sؼ_Zr}rYQ +w |urXshX=;O?P(osٿY(ȫLz뭈{]k`y<5UϣvB1E uo}m=cV{bPj&K) v*;S[BKåc0לq]ǛUrgVgd 0>^sjrzX{'a`s%W;Y +t=~L:kйX5dT>hv?/96.Ce +-Lf֎v צNNFE9VQ+J1t>_U+||UY^Sگ\ƇJl~t#ii[K/zZNױ]96mRNDho'_ fF}9IY)G*\Hf ~&NVWC>@PwP +z)OU},g' a,׭OʿȯdbpCe)Y{B_"@E)Z@;?fT>Ο[pxW]U!ST]6Ɨ>^}<-gߟk) +X~{'\lͣ&湘 ãԤT3psCWT Y[s7$dKY]{f[*xS=K+b-ǧ GXAeuqA?{fp myV30e<6 + '׷i 'vMEFzQcu1:~9wkB;Q8d=HtH*I EW7*}yVh[!Gnڙ22U־eQ <08,snj͔h#}P;ŝM-7 +º?Qp;^FXqZThʷ, 1']}b%X(+ +"TZBD~ݗv>-[ Sx +WVmR'{ja`Uw+W{.V w n`?/Zkm5=@{,; d}PF}vr:Phz^N5?cLpHN +̂dX.ͰtFargV)WOJeY`4Oj)+xخl[dozٻ zjj@T<̄ro̺1`zo:]w?$dWwCgpWo>R6pڔOZ;` +?IžJAE^Q'9 [Ƶ +]w\m(Շf>AW )u )s1mV:lE;^xM^dZ-##^ +4F7vw0Q߈J@z0\ FF|<+Îg}Ute PIlwdpxX'E:a3ʮ;5#$=uҬ9_.#[B^ݧdY9e-!ú=!B.9w͏w'`LVLmtl;os;||Խ`tڪ̫w*{뱒aV hwMbOy "kUZ:`FHa٫p΢^ΝN@=a_͗q'KWco^kFGu٦ 5tx~k󔫄Me+Sk$g`Ba9eF'[Sw+n6..-Ʋtu{#Ods<=a@uT: !vGy&G"!N5gPX]!zI}~>]6_dJ'f}`< \1-Z}QK`.C<g_9qG8 dolavܒgKUѰQco}]C{v׬ٿHJl_NZ~mk{i߉!BV>H_Qf;8Z.[eBcǷjSgLK(װW\0FDtAפB* @dOs09!o| ^$(s0p;LJW9!F=`z'mh=Sy6<JkRX{LypE +{C}㡮9Jx; Hܡsn$˴v>[^HǭҴ+C,I*4{}K+3*da 4G6{+ECqFj›6%+6=H:_̘}o> Yip~V"RV%7( v%|eAܬDDD@"ZdwWXg?(kYCe5vEWZ?/ef8lUJJ%uɎeTI:HFd%X)-m#/泓쾵uVj,F\I25rd} F w{:&x>ٝfc5O}͒1>Z ϫĴUPffn@3_Ĺ9hSqpJu~_jlRG%.a(˂m$ӀWKkVשm'3˒ f*I.GOWP#R+W#*W؎u%C@$w\xZ뛥w>g$w3*IJ +Z +;Y<%@@t=u󞹼7V5aRko\- +lo`|%ar3~{]DżUkzJ :.i;j1W-0B|6!]7c_?$7{zԧH #D65ΞEzb*Yk Ru`mlwןfdחZSGP|幌~$`o 9[j1hr*zGQ@h k=ů)k^ZN{Գ+k jk /B($2Ws{%Ɍ`Wf5֭fS䟌ſCe4ڍfրWD-Mv|\9*tS@A y\kxD*k̊MNwԄ^FRk12R^K؂Bg}w=ڌAr5>P,to멅= &ޑAMv7ܔ^k. ע_.=0*s䨱4k}( dbԥ$;" mZt+Su}P^x<6&O_MeElz Z$oo3=8VO^ en:] #;&l=nC/2iBֻہ6w&&6u|;ٞVZR~`>d7O9v+fxjNRLpAf7;EK-=X: uGz=$7~+r)v#{G +1^Ϥc5k +1 $:Jblapz*YHPd>@K(櫹bZ2P }cxW]fءuN> lqёmU +TvS.P,CnR> +[Zs{KSӊ DwӾZ̜_&K/Kn:˱Jrr.^R;>H>D)"jm{):GktcDG[=KQC2pUU}G*㒕`vV9gCc$eqjs3s\|i$bAzc*2o 7Tkn@$5mbkݢgܖǮXtI=?Vu->=nr.{VWXA#yp},`l5g[{Lɫ.CW]V2UJvlܚdU=wbUxԵ#m;?]g&r%}omjzRProў~UaL<ؘٵ]jvP_^Ck9\~n)maޫb!:@3|ȟI_> 顱8ㅝ=`Է6౯56h(hm }%:Gin. 9oAzf׹Nޭw6ug ng"ǪzBZuFbo(c}z-P߷>Rsڟ 7=H԰?>:׮#8Sϧ#+%|J|5I +4-|&g"/A-GDu<х]XX.TXI}3q0l&T/@$KUA#cOjVA}*Oi㿴X+C[w9$>/b +v9E7o +KǠnǥg[Hh38f"@ӣ7 Z,ͼYԵ^@ eGT0ݖ`*9SzXh͚jFo39 +Oo&[WX6j=h˸o kʿ2}c~]67 8 wNZ(=MX`==u'2q\6"*6*{h?IO'׹uwҼ.yNrz1P/y#='hlb7^%be isSWIQrw{~7UMzmݭgUu͠ >V!C) Gq_Oy)E8y +FdN>3ǃ7!2*\d'rŘ:7o/sཛĺηJ@YmGthŵC`>ȯk/J8޳kQ{K2ܒd/9ZcXȓt.t;ͺWC`?{#}ەέ^*moZ4~F`a=exvⲢ*ݾ3\kx#Y(~Z/͢.ܦ ^:XXN] +~[o/9,|{5qLA gGYnF[Si+mf!@#2 ˳!ο! +l-oy+hFnSe%Ǽ2s[DC~.Ղ5껽A6O޼18h32͊A{mimQ"NM2+Ej?K/հ'#A#>囆3kK)`?(g7ƻ5Zt XPWVGO|/[nh( F{VPcQX*@ PZַeC  O'HE~[muK=fO*Ӛ +|J݅hm`HGy6@>-TTP. XOZZ]z?wP3`χZ +5'Cg'^cLvt6|ˢGߞyun;ob (}=6a !1-jXю0yN_+t`_`J'Ԗ/I* G^[K% ksrklf֬,^{뷤 ]Y>tHٞ,ԡ *f'6O"*[A:-g]+2v \DDDL>K9EˏZ/Ecm0afX;YMWAKy#Somǵc08muh̒]leX݄ GU[[A27Ƿ&И-UL+ͯ{zOirr8+m~uQ@}ll ߤ̲3Ve96]ROqAVo!*;{`,2T}(UEB} ݛԂt'+/ˬnu#D%zk.~&%z,6+ft鯬Q[OfNW#^Ed\B]EL +=j%k]CDuyd03 سįN]#Ԏl22&/%jf@ؕ +!{Wg/H.B)WVb}'c]nȳĤӗc׫Khw|6f~3or"Y(6E'N^Sߏ29z "fW|vHJݴ ~ݵs3˽giV3~{~1 e:#?Hֵ}q*?{(bI~]m]kY,>:_F‚$o}^GF¤'?G +t캀@og= RV.5$::=kֽ-` U;<1,+&nC1J1KS}Srg~M.Wn.QP:#˾3۔dz' TKZx@:u=*6l[쮫-xJ\n/=7R[f +"ffXc" ]YP += ! }CdWz3քV_rb.&9VVPEQeCDNfO4zy@UIԟ7Ӿ޽u~7ƛ{dc: o$"Olj,(6;XX"@RNIL|KQ/WbP_:WGS;67k[NUXY\0ֈX#;??ó6V;QQQmea_g|xtR҈VMmY$݅L<{T=hرߐFCSevr fBwZKUXVv,5MI<}bReclFEV[[}9+ҶE*D^PNzi%9v]e@"VAzscebʰTOԠt`o=J\d՗afZ- ՇH!J})F %y۱M>ڨB=$.7~]Yc6>E]AbcYOx +zR'[=_ y3/Ρ~].n_ڐf:Gd.Qg@RzhGvm{cϟnjcfNM4جbYW@lww2b3k[]Y^U: SόCg-(bL51D3/sS/WA50]kEfEm]j:΀X0e\ @B]=c@2}߰eWk" S}] +geYρʞ*lQ}L]A=%ڱ^<-_d|?frC]45&Nk>Ro#1׮rBfuD쓠<#ru#6 9i"df\k ߥ[t +5AW_?y+)NK"!(NZ==q;ny]UƼ{=%TfVm\^wdZ=CwT; o1}mƴG`)6*!A~_F_^=浿!t?Pa [x޷1ѼC[ulv&oV3Xrn`2:ϺO+,\Z+ÏbX륺;Ffm4%P/õ +۠G${|Ƨ6.6>C彋U.I Zygmٖۗn6BQUC&⥋3kTo-/#ey Y)$mH^S3dփ'""D?{r iij~C{-x,9AM@B;7+#)W9 +tN? ~.M7%fj=f,]cL4$p-ArY$g4Uq[/׸ܯxbը(*ꭢH4A{kS;1)YZ.: vC|읿' Q=΁3 J_M@Zܥnlm-[&ʯ36ıW-jR,4%%oRdl߃T.v4o>qјuaYC}C,Ǻ쬇GXbQ= }I$Iu 7Jsh{ȯd{mڀݭ5kf]Ox`%t/Yg$AQN J?kxM]u7,adv2LL㐊qŊPVJ2٠mݼnEpgb1!&>rWq9w">5XL/~?#oVWZtxdtzo1gh˧HH7֝o;l0IJhx~#{ys\k:[m|f!cƦ^K"TBS NyvFYqb:t ZhCݺprǬ F*v^Z޾}܃qu +>:%*lhrU: ܫ{m{k^=) 2gu3'C+=$;Kͧ-ȭޓ]gRe'{t>s+|L{Ӎf96gR?N؝ +%q-U !Tg׺<\{+oIF:[ʜ|/ue z;6+YgdnuY]+@OQ獈8oպYgK3;?T)7}fMH\;? нv&TOpA̞ꑮ!/[_v]*Bx[2hϵ5%hR:KbX9n o$!#eUjס5W^{Omp #i^ +޺Uo5RIZ+xbYRYr%/cBWY F|~R|]ؙU\jU`+8q܁۴zVGm~E5baُ}S(wS]Ǣ6^3+íqqiNdU:a۫[ϼ57=-b-HI|zUGe3;l៉r-.z%H`~z3܎?2C-̈́{*[@0v2^⾒4Rre=z defbe8pVt"~C_]$r_!8h"_pbF]{r{]?l,bY[: ]z]tXwnxWvw9 }N0@?Lr~C 诉bX5[gPW]|'!q+_ *ֱUBD|6;| 3j@^Q?w33>Ea!ةC}߼ڋp֖jrݘ*Ԗ)3=@ԌlDjWuu ˓r 0('%9Bq=_T>8>=]{yv>>x&MgVm,Hu&W+)~v²=vs45A T.XD΢,[+do_ejx2i f;vfcnMjuWQ;bAmiN{QG 1 +1&z-uzI)YIXY8'Eի01jNT_QgEbTzDO;2+]K($OQ^@HvExT,BNX]J^<.1r:B{DDDDO,ZӢ2qpN+J{(Qe 4{,kUF ʼjgtE  []0y^=;\D{D뫥7멋UcwhׁauN|>cckEo]#혡t/~/p5]Zvˢìu޾sڜ8L{ܩBǑ8|-檅wMKt~rk,cB#XUt33)2l+U D=ĵRe;3nlZi%އn݄ʷħ.h('YG=R¿]@`7-Cڎ1J+y2wuWgDOtG_WH CzLΑ g2@`-h='Lk]օbZb_ЙtܙV!}Ab_!-ׅ6H#d胣'9pWc\Le#cnl2 +g(kLN3y)p:A;=2 +p|BvUVvm *{K3*R6b0R#d7 eί[Uݨꑾ2_;ORGbē$NW6:7ث)ze`w{O2J2}"eq,A`%PdxbsY+ަ;Vl$h0S|&y:0q<Uٲ~*ʯb$l|7rŻl"=oȞt>^eIuLC+"˫ CA ';\3K +lW)%weTө-Utmr,a[5#TP +4W&>"Ռ-7Ĺ, vr6<μ19HX[QPR~\ESz;և_u *@m $ok/@;$Iq $yՙ_8?[lp{?2l YcUu_th6>;7 GR~g_oi'})[VjDl9ue +)yu=P k-37ة@7sFܾE,yaPXVf-;UyQ%2A"Υ؅_o`yOg2/ksiZ͕^:EHb:`4ܳۯM95~bx Q'KV(?G ?~8[փ];׮R+eP+g(I"$ sW_Y҆*8Er݃Mf񚱓oYֳҨN҂On?˯R]. 4ыX]u>nt֥IXI-tdG寻7x~%Nz=Wm&=9ZiV*tGGisk{(Ճ;u;"3'2;yQ}oln_ .eG29S;O^d_J5,i?gi+daPıEI)킌1,_S><_ߖߜ9ZJb^GgG]~' +TVzUeaQolPwP~^G~'Fu҅AQ-o)1lzEԁ@S=]ScTP^$yk}_#wYN5wMNzUQP'[!)pNz׉^xV+0&fRwGGϼ؈ 4fpzQ_K +w)"gJ6aF=:ȋX +|V.uu*_$wv?YUJaʍuc&eMU`CI VjPWR*(UG[ekru  b3Xb;%,N4>S%1i׹kP30_ :iR2+6,'Zo%ʘ:YH*AOIo9M"T;  Gp&wDDDḐ5Kbء;'D;B@-ŚKx +Еb !̈5?CU@3.(lBHRl3% ԬDs=7ri`I`c$""xe/scت0 +|_=[[?74GC3%7+){],KSgE)V&\DͧQ,$;ta=kmPvʓ_?a]9k%Hr4!l,L3Qb؇ze!1/6r(YO!Rߏb[ )O;;ZsJX'[t'Q]MI<jQ4bk1}Dþ*]!:Qa=I\_!ȭ=Ж+G~]Τ\F>M~GXf!]Wn釞{223짱;e +NA#f0ȥF>o?Nyw1sX>hȢG6MwDhԥ^DzwdR'bŗ][$12npr7db.enepJ:>##wf]h=X(@>GkQVM֊M ^$h|n7)qlC}\He;>Dy24|*jUW=+畾F]5FM[;FS:|RG׶sc%jkZU͞f$*k[ *2/CZ6gPPQ積WY-= +̵Bܡ!qD 2>RS7uͯUjZ.HE@zAܒZ_͛_Dn,H##L[&g&pskqɤ-]OɆďf| +tloP${k`k;:-0j{(ߕ]gh];|ܵE[`* +r'+0V wrfҀVL\Z*cee:2'*2))m"kEffُM~jU5 _Y9ǐnT;dXa<@h |}嗕~Z)5c.jcҭ߰6yZQ*[-gb +4Doy/v]yt-J2q[9zjF}f?5#Kh`kș%rU[H.]$;L{y㨺^[:%H*6TZ!?Sg~uL6H?[^!q Y}zSןSzZ޻r+߇ Ma'%(m2lhg^L5}oW @pJw32q@Ql>-jl}eקs);ڱש1Աf]tVi\<(56*4C}]C[לܾg+:֧>1z˞- r>Coi=IS*`P٭![mŃ/8*XֱIҍ f lv'1T\m]ORA)V0㉠&*t]33~nWVڶg]tweSo82܊Uh1)96 +GONIJlZ-)ԺÖr?8~6; +>#3pKWG&yg'®q}Vr-^:NDw>reݗVwMN,RPlyFjrֿwcSU5#J>~rKL]]:+3#vn10xrVl#^!c{ה˳EaoqZ=e, =-@-fdgcНT-Nlw>[ҍl^'*9|soAFKl[Glv1r^-*7c?1)EX [_A`:?)9Ul>9cX) 6Ȉ1y- UXIo6 MwUx./>z+m'n[-^FNP ^u#m@y)+b\mx~*P{QoMGpY)KR2.AzvpWdy|e\)ƷHˉSZf]7Y$yG_[Ue'zfNӚ|\9BIRz_n>!B W,j6|'|<Ż?ơ:AFkdA#l\̪x$ёutoj;}=>~l+cI41PAgӽ]O&g1XzxS`:$KZFfWb` Y[Z&oll֋ +| QψʶYY: +OPlo7+W:7_Qmh͙܅G1]e&3R`>p5PdS7CpYg 3A׉SJFkWn`d0õ+cTZ=9 Z1>z9ʬ\: tvvH5WUkkE Sg'ͪjWT+#հ* +cO,N6r3K*cfMuV)Rʈ4:==D~b_q=5*HONz\tȨۧe:Oqؐ:ouytcش[UaF @הŕ㪢T=$AZ?w gkɵlGC־oeY 㰠a5'Rw& խ yy+#dœfH23їkG\_ i@ +આqkbl/=D@ ˵?9M~\W#&'8}CZGp} *x7tR%g!>]#FnjSi)* +}dֹ,Ѓ-qV+eCjh 7ɚYMm,H p̡mlf/?٫eN5k_Pe6u0aH-4j6 +3Q]hyfe5-~aɦΥtڔ*vg/\j4+؍sm'I$# hyW*_|qPQ;wyOcbYUWUg_ձUlQ&Z1ר֡vź=ݟ>S~:S]b\tjӿMs!sI +SIjÀS䓭p_ 1h+ +5߫]S?7+qU +j lIlK8n;GJ-sm@H=./sh5.>*ew :ߤ|N9V:>be8m V51d.f$+crYVke=hJ![並DDD)Ԭe5JFQXjaq4pU]+y0S͵ y >S:SQ+)j5|O(l#taQ/xʅ4J2ij{OrLhDJhFj5 㑉^WGXCQHט߯y#QMFe5j5+)ЍjVSQԬJhFB5Jj5jV"" -ņƥBX;  vV)n:O",8lAL/[$ț{UD9ur-POcj ::K~P^7Q}e޶7%k-C_}#?B{T@N5Y N%jF cTTVA=*oFH1z7_)_˸O7͢ڡ`NQ̤Wm"713}`u7 v45<Ȭ]7WVQ:?5G1WS) HG)|MJ.X*֘ +wN6($h6($kn]8E*:^ =&T6Z<٘*Uo²!Ԃ>@cGZ)G3E^R󰶗_Lq5%`v6|r&u 7|e _0$}}u!mIP~E+]ƥVu?z@"ẶKI>@L>'Lt*o JX*6(r6?bsy_N6"o˩ٗu]xc~z ^]F}Y +FZ]Y=H`JԩK;̒yӓVJu`ÿq*HV G?DhȾtUf _-SfЖ--bo$,os~幪k:+t0#0r +Ѻ)UPU Y>_9),Wbe[%*HB5/mmJTUdyՑ][//ϸ3]r_%2jtU~ׯQn_tز2 +=3N[+v s/˹|W!3v /} 3mBbI&T|X2lOYFe%0V TiCB(6A!:YW{"cz޶72T^~gz xkӯ:~{ԡˤ8ءC܉321>1+䲽) Y썂2Z1E"uyu0]?9y67*7DD5U_iPo˭n T)vvhRݼ=XUcc`_ ,iƼO(1>뾼uLQ:t-5-*xv}ϟa=}ƫľ]nNBֻ+c"*o%=h 5%X`o^FO:-U #`4fB/ʭHAzmvp^6eZټo@occe]Dz֡kE`c!$+th{yO+mvDbS5=zy{9V&/}Rrl +oyvFF \~n ^Bӭ7Wyh;Ȟ/0_RŰ=)`apIf{2e Qʍ_ę_E= 6Άy~vטf܅-կ篔oh4U8F7d|do/h?a59[ZzkZSg1 ΍l-v;f?ˉhYfZ9`<[6OQMionf?Rb̫U(cx% +i~NZ)CW[7J.k +<a{7Nv&쪫PI@W! /+_R{ Vd|>=:z.r:*::t'fl^Qf&tpR;1v{' // j MNoR\Ϊ:؇zQ=O{ =MYU^F!\=ajx4+'F-J(IM6}OnZil鬊h÷Ve!l%bwӼ~RUciyufPa8-j3jʒ|=^=>^O21i@V +:v!]Dog',s3kWS+ Xߐ;.#cMM[6k}+>!r[ȳe +2:tYZNGX + 55OdzO[hBrb<W(kDz-`ѲO_*GmzIe3x;m|tgIz7>ѝ~cn-]B `q+^BX"+W<]vt$5,u2S:yfu@}֨|~#0+l|k?)xŮUVH Yg3a.N|SUUxCl(!<ǔ_k \uAGzA NܕSX)# +שKJ6;<254=1)GQ z{SmƵo},}ؚ넟[3&q3mA.3űjǦ݋- +@҂>-{eQ] n܍לs\v%Վ9S?)eUP+øTtiyl쯗q-+sQXr (~˰BBz>ffg VѱZޛ +QH*l=1%^?'7&˞-mTXvuo6F(dkRp~[£%(Kj䢵!M*>{|$_ȸ1Z.'O3V¾gmOZOX +N "Hc~ʅ(+[a@Xz{=[dSRثY~̏gp<=B<=L +3kUa)ڞ˲*Ω2#<)h1f@McbHb +ѱvNbϞO ?)c.uժ`MOq;qSnkbj;U 0`}vkl6?mhWQy8bvtc7{eG[,PFVyV_ǩ'e.,X־9$]LaԅX:n-TyL~Z+6M[f؟6'{b9.:ժb:y; ڗ=V+op{'WҊc!YiYv,ȟI v 7UW_C5m}1i{^Uk\=ytiٯ%Z١:H ۷$UBYOsv]K=HޤdzzɌ>kW ]SIB 3dzH-zߤX/20l6[9^,{_{ߠpxB u1E/ʡ=*[Cƹq[MN+'ZtqXCя^OG + >l|$p~[S5d'd&F7 }5>{ut6|Ά8cmYwGͺ`&>e1ΐvG]l|731ŭkB@L|*D8etM]0H:>cM E@gvX 7S0`X13o&ɶB8wFX +t̪PWPtrAWPB[V{BaeRZM:c{=]w}:F?Y[Ll2QK@m|>q VZmUoq wOsLN67k(R6L0\/Jt\Uz۩T.s wd>='~Z>AT( $nG}\J SWi٫(HR L~#+/ Xlck8ִbາu+e۷iq1NQ!R;fQbȑ<_ٜ'g=.ص1@;J|$no|5İt5"X}}x`6_mv Vb~J([},H%YX~Pae]c39uH pXC9V^KnNi؍S33PSiW.=ǷnŷMͽw^~81zJ2{քy2=@MiU56I zI둏^]mUe`H>c`zm(rzF>afnn_$׾>S/Ͷ;0: b𘫐]'e*\?;=')᩽~`3;3[w>['E-6soQe%ן&L\ۗ"& u#t@:_gzK#lPF< N0,p@މYQb.cg"acWHPT7I##&JX*c1VeKu.6jG=b"""brxطՏm[ Obs*Y]v7KtA`_1!/J +Y_2"%5SkVUO`S?=i[+e!􈈉b\U`J0_O{UmN֦Ti6]@X{y|>c =4^ëﯜ͉}錍eTIYNv>E>=vW +v:=`)3q,_/QM9-ũK~w&a55oC@C˪Խу+( |DDK-hBt6I[Veku.62NOX򕈉哓^%mmlx\ÀN5 zdnxdkuN yYIX8jQC2o>9!^7[5*9*+o#D w/uwWJ龥* 2+Mxg0("PITo@l:ؼ95 +T*uut +A[}dfe׈zAf +eCOtueN;qT6=}`{k\˭kʹtp]Rv Ēť܀ $U^@c_ou]uo]SӐwbUU p߄az~U,nE{zl|'w}.G'V|)`oL.|ϡeR+mNY j+xn  +KVBK} _OכmZ+25eFnđ/96 Y.Hu7;ҍ$oU(k:5eNWdG s*`ʖc]g{QKr *9]$*mw f=xH-kkU:u +Wa+ͷ%uu]MU 闯DkwL㓔1 M],ʠO#c"$vG&/t5z5,ThbG\b&]'NRe';vlþq+u,[nåG:M Iz66hh&lKT(Y͝wO[ͨScՍ]0חyUcȲ@Φߩ֚;:=WȺ21_rzGN$ؕy~[Pɺrb--] wW[W^5eR 잡dae]֭v\ nDyoxemb  WA<[ k_CZz4Ո$z5<3UVYe =K֬m^CchvΙUaV+*uAKB۸ϒQ ׫9/p~V䷲jOqp|fG%<ҽ%k CEdjU +0%]N''3~MXK:C:'R_A?~6:R; oߋ yoEܹNI8j!YTO>2s1E;`RזĀKcuSUV X+%D|'*ʪ(uK?@(Kt~?_9mcZAeUR['m@trR19KX+[N4{w'ťU,.zؑGmz{gWxe%YP5tNdfVx-(6_ Ƶ֏qFk9aߊ`?BA=lUxuԕΨAGhl7yeX +[}P>=v:qYj{7 P.’]Χ3*ƨeot $ymx\qe4;9פG2W2F);K]Of;HVC^i YdkR6K.R2"b,j&ε`J:RvA#JSܙ8Rr47pe2V;kO0?zWDDD5K Cⷰ~3[2J3/ttU%Nb{|v.''WmVWb- +Y6xeX ߞ\| q:pZ5u8 +zKց;ߤyR1Dz؅ +@#V_MV=<+::lSc@eb6U~RkoU0$vU̎3%y,1ߌOH+']jW5ů-8E1~סk|Mkֺ5=.ÿ,:g ڊlKUe>dl݇ygy?G¯/5PTjlZ +j4BwoGf>%٘YA1k%ZA]3u}$ <}cUP:HGnR8prwQmUfRWkhPߟqߌ*J_V>ƶ'u#ys6ƴUm8iz 9b}hvqm9\˪ʪ|5.CVy9oe܇%}*\iR{oOyGX`Ø'w(v@{dӕ+#1k*tr>]{̎Cǻ15Rp@^ipg"ɶʭJśKPV']$Gdgr"7 xJ<$SV{}ülyq؋0UCY_S{ +{O kqmøX!GRAm"#zݟUeVԙh2>QmO WF xEu_[Љfn Y<54mxh Q}f~dcRs9֮5m-Xsމ#]>_ +lŶ[`GE+HW=338%º,I[ր$ lT3 UԤ!bY,$p;;ÕnucbU_H6cv=ػk}繍rL[gүK*dU ?A&Gap:u-`mޏhmbˋjV"t9?|^BaSV+c[rSKdz2ZQn!rQxԩbkQ*ToGD~adԕ֬+ɪ}۷BYt:iv S,;iO;ɞQoj+ګ*{SYTPwKkYvٙe;N*WUmbA? r#>8UPYhv7'-bd/Mvc؅^:=G+rzA+)NdL mBn}%#@ >=g%v>n>+RMvQ>#4̞;+:k-whnQMd6Tݶ6O򰱩xe PRj2"(n%Ifp_oU9u8i&R oA+^m6QhX>L4frU`Ӓ诛ubՠjuhZ$9fN%u oކ="mH߬1(j~ò#m]v׬rjgʞ[ch#ɆF'EPRFv iS" +?HZIHmr/37+# K˗ f߬_v9-my(+ڤmﶇnLj[x|~C%-hCYIR:@,KgcO-ᵈfd`z|OI}2ȡ['Z* {&/r~%8İ +U ޣXmU}@$z,L^?; яŴ.Cף؂<=ȶ+W12+M;e'N Uf. +i5}+{#zԏSpWh! jzz lG [fqT@BA)ӭhr@j5Jj5+)9ugR\ԫc!MWed=M٫,YrYP1dVU hFe5Ѝ YMЍj5Fj5j4#Qpb&" FS@3:jXml΀О-rl{ZǶ=5YMFB4#QЍJj5ЍFe5j5j4#B5+!mɫ6agAU!&6XO=m,تB>C*X=p;Ȏ]5~e~bԜ3HQckӶ~$X]Ku׻l[^p ĕ +S33/+zRߏ7{<4(;X7H;^\uU5GZ;U@V:[ܛV FV"""""""""""""""""""""""""""""""""""""""""""""""`gxN@7Gs֫\{ mBZ&3aسW٣oLNo=[j)$D#~]ǴLkhT/^K.ZaRh4T|zDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@)XBqюC26lSsņqFmS˷;v #D2܌9[q(EknKu Zd?f`uV+.¶ecҭVP[y:u&#qַ-eHkȦ?UZPA;=_)n7VKZ2EoU'i)??هO;3eSeF+X) juvW$[ vI8eXru]wS|`ܵ ]e}: kpgC's1._?9V$v ܆ETz_;I ~AJY]}vmw+ߐ>~u|=y#~cy9 +Xw]*;Yn7-ʩ*6@$S<8rKnf5 Z%{L^W +&F@IV`@{)'VUW [^O]YHn7n7r܈9l!Qž{A~Z͖]}tԛm>26w!fMy¯ +$ߴn7ky˨)^躋,[ѠA^w'ɝb""""" mmHs|&iᲸȩi#T+%]Dg@yq3]񋐄ulDks[Z7ɭ^BTL@3U2(+1|`B30gچA>adFe*ˡҨwק]${ZNe,:{^x[t7~rT/!NM_DKoEߤ0pu>˱nc1xGĿ󗉐u5W tWCujNE7 墆j%A:l<Ȼ_[{Ewrٲ:0o9..ӡQ_:Ԯ#`{O7-e&SXuk^ =7-ˏU" $}\ɶ(PX50#c+F]w-lw:5[ߟxR7mK{gS/Lhתۗf=}[4F}3yKvKt `S>SZ,Z;In=#,jqj3N-[#v=2z_med]hb+ӭywܧ'YA2}#R ,$#]ф%7XuM=_ų!z#A G/.-ŸhP4ɇx~FMKzVt@!| /*r(£tW#: \Dc5NW.ksT‚Җ_j|<+⽕SmnMj;zg#q]f v;*'&M w#!}%lK?*kYݙܯұjLa`*3?J`[ߟLq7`Vݐ5 y·˧VMa knGM{)WFO#goZ5PRtNϙL$ζ][b*EI]VnN}!9'w#jz&zCmzds7TQ-%,v$huF2o3?ؾ3906Wvݴ{SCWyɮ9jܐ )Nyܬ^7̻!`CD-9&-uʲԸXa o@{?aYeQjʳm};/3%+qӒ:zkWZ*&᎗}4>@Y]qM-٭[Y[֒vJ"=O=}9,sؖ=WUՃe[NOi'n%cry ?/ʩ?O)vfe qu7"r ϋ3_l;ڂ2䳥U[= {֭]EUYƺq2(Xl @Rt5]0n2"r/6ԾH#<QV0sU;@/=Sݸ躻K=( 4KNK8܎?b@9{APyo11?}5xXu;l9$vwVV&MJt / >5m\T +龖f_ 6dfYE,BȂ4dS{=m&FIJ{l`jaOWer&S!h˧_s߿H$E#mg![-tş|& 5-})/NB{` =ؙpwrVb=b֛g +Iƈo zpμoRSzz=;v%g(ՌK V bK*[ +G׷!6MEƛ`54Aij 1"~ck핷bŨX  +Jg*p-®_ޕk,/a;vB3=.5OKbخ*SUJr}={DžɩZ2u];aK 50i'4EcIZ*(BGr܃Yjc8:u;iz/,||{ U45 }I=3?,l\pu"UZlނ'!s"PTWBZZ{uvUP-a3ö2je, ~Cn{1svr/r{u $hjo*v&oLxAZ x3/Wmcɼac7ۓe6IM :hlcKkNƵ-` 'P*:wwe}QwģP#[T]XSn=eЖ"5t87ݶMjJWvfn,|cQvKlgޥyi*EܖK!o@|28ʷ'(/G@R锂DR bNY݆'<&UM +;KgOPvaIodc]FF%ƧqRqly\f} a@ ]nSzOWE8ˈ0jڧS ӲgWcfVՓA{˦#Lm[T*]czn'_N&{ MncM8Vb^*9+o=@q#\<t*1}ye|]7xHlt!5 ֆG˰YYU_`C{74ܗSbTj9g|l'TL +)\џkd^V̪|U}O|_ο52]C+\ ُ2[RU`T;u~SϚU{rSҕ?,?9e[qbY@_Hi$eܪrJXЪu~ u>cŭ.}9jӏyb}ޝ'SrLJ*P;Оpl@[B\6rMV""ZbdKi[R;2zD=9[<\Z}}bGbG;85y~Ceqa Ul7T)Pmk2Mtm5F-XխU +@O^=$s8c9SX <rJ%4'Wk:Pw~z}GnQ+WZr[ٱ*%PtAGyF_][胣:`%ŰmH#w.CFC" f>?3]?DJuOJӾ}Fk5Ub+řؽ]#*-F$z3q0x*lpNC89wqm +˭oLȃWYuT:."}`CIz]Lg*{aa +=v;f+{D<,X.Ƭ;SPmK=x,S,%vJ{?55ݛ0`vI'`L6]GTl +7 ~RWaokUnX۫~Zg%W)WV3#+WSFl ܍M}Akb.VĪPH~S;S(n.d%5<(^'kcX&b(6*OXqv6H-ƌgE/vjtu;$I ǦqٔeeV +0mh z&r4b{.`泋`aŎƏ^bc +*vǡ5KejΆ~OJ:B`TUh-YbCm`w۸ٞF2oV~k7^ҵvקpg^'Ǧ +SXltޝtβZ +^Sϱ3Y,jkڡYvDNyE{V_BŊ[of[ 8%l`c9: ;; {rSʯpT:TojJ_Ӗ ZN='G6F,_h³]bOHPe76X=VUrl8^@u*m{_rJGOt@ !ӂy5"h[ ܒtǧRܟhj8mU @+@=$B@=Z,ZK%t[PE믷P}tN=fJsxӑSAGĂzt;޼'"VIG%\ᷦIv>2""""""[rFޯ+(fŁ]°ߐ oS?~R zMF1p=c2cSJWg`)p,#}ARP Ojoz)4W59?7򖑒 ̭cתPXvݦbf.klJS2 QnAȼ</"˞\kt\ie)]@#Cdu'8Lcn PHv'[=k1ɳ)`C{=G;MG<>6E~G33=kQuum+ +hlPm&ԥ#Cgֽ:#5/f21m Qkd،B3^:+^+S** + !7obbAzEm志&N>Ǫa%TV`Ÿwԁʽ19,ZJU:VcCKk={N}ZįLOӱnf鮻g:zs!sJXZ +O@<8̪[ +1qnQ_ִ'WXUuf :wK0(V6;wU3ԫTJO6G'^O?UWZf`s <8xu`jP+ď2ܾEU3<^*싖{^..ikK*ZۭOo..3#D܀eX: ^e;mXuG (pC 4An:f ̵ԪK2WHNW bޢ&ϣfI)=]=^CL 5ꖺ]F KVT6xiI~UEk웓h[0pHZnB́K<3~y}U %0F=-WZ96zZא͒T +3 V lŷK>Am̜ ?a$Tk66vuG(a@#2 U{h^%@ 2kv`4a 3]k5ܘְCS/V7*JᛂSId^&0 +Lf~^vB<[c +]Ru߿GqƆx\QS1M}]ߗy5ٰ_rה8f,pn4 DDDDD@Dj"5jVRVSZjVS[֣PTF(#QԬJK^aAP{jbqXOSvnꣳ]k忆oHK)`/C*k$Ik HJj5Dj5/'Ex`{gϷnߦKRy+)ԬoG^z) v}=$3=_QFFe5FQԬDDDDDD/hק +=D>돕f3[f:n=ϱ|%з݌(WEd']vIL >A.Zo }_#;LnFkiP=͔w FO\\̩.YO=b$/r8GjgVR>Pe'䨯"Z2=uw˨Zu&'-⛬mXoƳd;;鷮/#~+]%TRUcsu1.tHi7)+lo +mP!~JgCfrnƽBQo?0f|b""%7ܬDL,>Kyx6:zk~tᄑf \Y%1MKPueef#-IX{+ڥIU- ɇ-s =kLW[IUsZڲ 0=7+0ssƨeJG]@2=73D608kq׍C08$%%e7+"c ۻk"V,*~}̥5k#_uCޠeH0CkgDDDDDDDDDDD@V~kbwtPJ*S/V#7r/'ٔᾒׅխz神fC{/ j37*>8?lڦ>Zct:jo3H@#g'?^ٕ(ۃϴ˞Y9TᡲIe 6 3(1)[?nōVw=hӿyr7gggױ5'n:;zOjʲ!5Lno:z~/ ˈvduhbmjJɭH휗!}V^ʺ}>=%/U؝6/;2zj{IM^qQX*~, fa!w2+'|1S7;&^Q~CkߪkAgK!Xt +w#G'YMf5AAW:zA!/q5ljY:Ki]kM<0>{'ZqТL:~9Z32qqܬw)RȵرIE=8̧6rRҖ2#_ryNIN }[A8=۬r|V.6_2ZS_]Wl{6;o\}G%0+mulu^v;#-V~]KFe]Rw@*}'Shu.Fck|Uo%9yU5^v:zOϴ 876oJ?ʌkRI9,,gLT5j +52g!Xo`)H5P,BHֻ!8s{P+7Rǥ]RS;"2+EnS)Z+~VudԡP +C{߮9K<Pk.% +g.Dk}|` ?256 ) +V vfߑfv=_frbq6:Y WRpm5ܕ\ɥV C +C<~Je8ӉTYX ;rּ}ĹM]Lڟ  ކ4Goöz񬦺2ZV,u;Oe{9˿&5[\ +>6q~`bYm/]kI R{LK.7 z24(7a?9aqj]}b6=ӝlɼifu5 ,Ih;I\)mOb{.o*V!CdE,{ ?t r*ʍJ'OU:)'[m] LK8;3v]]&e Fr8bC{]طX|NC6@!6 {Z-9/s7X%5JŌij*2* + Gr7ܖfIkP4|DDDDDDDDDDD@32|% QFq<)rnK]Gt|5m}rݘw`Gs#5u("x.6c+;tӑ[dgzμ;.;1GuU=C K^+Q\{=a}d>[mv{q|nF?Cdجjík+ :$펇zO[r<^ n*oZNH:8l1LJm+eloC{Gc]M+ж+U*Sf*z}RpwRwQrBrUQҨսOw'fbM=\O*xjlb:zj6w$9%ƱXB2ؠ! #p4fp|2AN.{ Hw)[gr8̌nE S! Ҩ4Km,/'")˴ +oBLä7OP Eb+?}k1)=Ձ tfuv~}V YdO6dmAEmQ3 IRb;?H˧!R.BnFiu$voؾk|qȩF;RKًx,_b[#LCK 5V6([=/w׮\V'%cZN|={5)\|\[ʲ(CX}=45vGY7R +! +j+}6MYmjTjZdT0s<=طUrq%J}O}~(y5x" e-|9܇]m72JYG?8*Oeq1J!@{5=#N-0"ȱ vĪ)$I[[ȺR_Oem륺NN ۂc̡ualY+Tcc%7ڬRGPÀFcg9. ԊlZРHDLNڞ쭃x^N2׽5:Kyg򹟤مq B=~SV0VjQ)f%nCxxG,w63uݯ]*Ǥ=67 n6ꔳ1hY$SJ1p0nZCcBHdedWxz*KVk5X9WWo5۴﩮ȞGt<Ab}]^,q97y(b58RĻl.Gfdb_vMC%ufƗl{ߴ̈jYzOuzz7='(`~q9֬EW S(G#GaxaEwo e䭜^=L$=<뼲5a?.kGc%)inG EKWZ ҽ!ƘtG¯zf,Nٙ٘fL_Ey(ء=ļ yJ:1@U;y1rx<uز+DDZU4""""""yEwP R<ǯ!JXc;IB64ec׌*hzDDDDDDDDDDDDDDDDDgIWzcMbti BAթ+SXc~[%b$w^zX7`m[OL؈62ִ,ʀ 7~RgQ]龛+W]:`5oj3'9 +jpzwZ zھOf}#r2*͍:OPjZ39~NwUl3 7Oir&y[|M=Uf5̔c_Kh1)˼|p8wSf-}w*Z^B{vԞ22aP⬬2hh:u3""""""""""""""""""""""""""""""""""""""""krYy4.% IA5&dfWV=rXwZFx~33 ;:^Mb,]Jף]?j.Ļ}u6YȺ:]KXz{;dqmxbႅe֎(L~ߊ5lٛ+Z[ ]zO\LSJsU=6;y=u~3'κN=mU{ -f^%7Zw#2""""""""""""""""""""""""""""""""""""""" ,J:R4Aj\b""""""""""""""""""""""""""""""""""""""" #= XuҬt.owf?Rb>_Wq"M6B9:dY uW㻧XjX@*=\h9J~!ߤ+-mdu~C|S2""cf׈kW"(b|o}ȔcNxכRYڶtAȃ="""""""YmB̶욱klpԷ: I`=DL[yfeoQ"h]^/Z5ov*!Y|t2xVL +̠# 'uBw <jDsn*A#`lotdr͘ m֔!{n(^/cסּ7)Ų|u,$!AN]Sbe5dbMozAyu`e0T 3 2&{%uiuZK=ï3M*ݷ.^g+=<}5]623_bQWUKYQu[0[kdt0nv&I欣/"(Aäh'ȉN7l̜G]N>ʲ3U HZ?egz`F#e76s rX[:YONt{O[5T.?/­D2t[c~jźO ~xl^=1ڵA5ar~ HgOe[>Zܓ̾-|2:`UmSg5Z]lȪCl`>cf[˶7#_]`R~FbUN^^^ 85콠TUen@2̮fK1bxpѿ6-]a%HFCO#&6/YYdXkmnP7_r}G >sR>_ (aPHck K}Kdʧ6rO=,)U)WN;~`L/~DZƓZVn*XkcGiĺ+]{އS1=;3d&]Bzʿ[P UHe$kbE>KUP= Tޤ595}lo1F{Ƣ-R}N= w(. (7vA%ܿ(8:"u0$m;NCcY}kUtж5eQSbxh21q֚Z"ΧGe,`*-{n+o9 +^5f:}(X0^已;|>sfU#`atQQK0}$yo ҵEQX)n&8ĢTWZ'JԚrv{G~(@k[볻>G(J: -")%Wdtt5=8Lf]K(6]CXR<2 p:PjփG nSˍ*/Wu+[0VBVR 3)쮦ja䥺7DMC|˰l5sM/[6hOoy7 ae C”'FW7\bZp/@` #Ľ|& u/I^pkbcSC/V4YgvERv Vstx +kJq ҳ>I÷3lʭ9leL*k`mݜnl:EYf~YS#@ ocs'ڪJkv[>lخzS.\<3xUşHnGG}>rQ ,|ّ\w=5";PXwl_/9\\lzȳ4~s=kب7ߜ.g1kb}+;Ch=Z2mSֱ-g@R_d=;w2r(Yewblv!VF=:a-SbWT+,Slu2d.2))FR٘t$7oZ\>DYx6Z{f[1/ʳnS;F}Ÿ}=?~˂es%.KlC[D賭$ d'imsUSsczyfmܕ_JsjS^rϠ>CrxM_37̡ xpڬH )1yLGzqWjRʶ;>`v3'ý9 TܴZ71aXy=L(@'(Wi@ʖV88X\cbQIl,7$7]6\=M`FrP  ָ<~ (ztMdh{wqxxa׏f\:t*e,gN{~Nƾzs oFE'na7w+e6^mUv2]ԑ`lI/ǧ -"W[@žD6̫7˷c?OUj'Aӿi~ƼQa1 + +vG_]Jvugny-ij7SԽJk'cmzR';྇]mfEIp(ܶb5;Ԙk>;!(B@؝#MMV¿5ߐW`=‹HU/Ko`L,~QYO VgJ= vɻ9 X GT բ{ցH-FcbM׎:{iK3{|I~_,nEc::%x\cV=H}{ ȷlJ,j\OB*~cn d/;qƴUf=-/GUMaczO+#&(5YzIuqb6\|c$"""""" +R%[;"جTC+y{1۸WәZS]nņξS/qy;q +)Ǫޅqaka n'LU2*Wc4Y[s]=&{ABeٺh:1?de]mk1һ:A-Y%]k!S/?b&9n b:ڞ5o^%I]K_0'قưP[g^zmz+ǮMޤڶЏPeQ뷬* fg.|͏hLMFQ%ejYu ]]J>D>%W3/=Π]}=Z׮֕TQ*zj"5n5$v7 ]5qYjRԒMF#Rj4#QԬMJj5j5L^?qVŐozyLL\xzÔLwN*#]K`0$`3^1ޅ9Z۶dQnZelJ5gC}~+)fE[Xҍ)clYNmblWSw9k2l$$ ܖi?5[ +SAOZtN'B_fp=wwf+ N +m}-jA^Cr̷kR"q$W2yu+ ȃ+(Hq(+DGZӱo^as~TFA>/z|Yv7%^NNF2jEm~0ۡ9v#TZ7\yJe6 Ls+4pmQo[*;{r)йVk;vM:ؙ=`oY]`}|qY{UV q-j-FR +V8n5L 2p f2%! +o$qEvu=  Fn Oȣ4ۍm!Pkz oK3SƷ"ϫUlvQw;c+=,kmvrOqؙ6. o@gX0N1xFWr*Kocbzfd"zPIn2v:ЪC#1U#{ᅯKR`@:w.GP޷Dܕ9Jdd5N[XÓsPo&kJ lLܜb]*ht + >>?l+mk}~l +Xj6y=BpϧcznkA}ؙAT7s? '*<-9fN:ߤ^- }rʤ{[[_7p @$|Sپ&K|V%@Z3uE*2]5a`ڤ5,%A#Fk 1,JyHۋNBUUnw4O%5W9M#,\v$djK`cUcc(‹KkۙrVqnFM T7"yp|u9oBum ݻtjL eK*nX:@=aS=8+EzN<{5ɾ❛DZ1\7寺UOKzN$kQOv$+zIawOWNnGGk3%-uކS+|?6P1m0ؤ/rDOWOq$ edjjQ+hyzy{UH?`ٺ"[K1UuD^[XR ޶u1ȮYFߡ@'^K0xg({IPl.)+lla GfVK[m궁&P?OsՌhce_-b7ȱF_Xo^S;e2y;ngQ$tw(GILgcLT}6;niXpY[62-9JImGDZ֦ė\ZkJ[ze?Yt:r~y>U)dZ +ܿ4t:~`ɼJ[k +]MS0++S[JOd?8{0j.-/[{k|}Kr[eRIqJ͂İG÷Ya5y:ó'荎FXt@kLOM===>#TFP #c` %KX|si{h|hdcו[UjVRȃ$u< uKu֊K @,I>姌\FcK޶;uiuSutV[uv#u:cثց~5ϼX>WXixhAnЏUק<2mweY. _O_A }Tf N߹;;&cf񔐭jXB;;aѯ"{RXٜEHoP"Zֆƻ G M-[Yar=CG_{<HL6G;܎c4d5ֲqõZóziP ƾ^_#s}']nj!>Ip[> +r64wս}W"-ͬ+JUGmzc-Wxn,)nOp1hQ_= ѽoZ/9oI [X]_f]w+#pO')Bt] 322x\˨ȶPշ}a췑:=6!:oGSwv챺7z߱o`-ER6ˤS/vNX3{ݽ&N^%YEԖ!VSK)vr҃J>ogv`;-q{nz_Skeܵ +dql,7R7px5VCK3wmu7OGnSl뫯C m+;~:/73z,u*,T#cy_^ !ޠT{맥֏h*Ǹ^m(`k ߩr>Ȭ]a.1@; 0 Aqɵ!l>lz-Rjb9U;Rc7h;utt7ͺ}o[oLGGDk3/U.o ~{20¬V$zvXL ؖQ0 :[(: F=gӹ__k6F u(nëCa\%YsZ LZa*@'LZjzn@UFkRQ>vFX̹Tb7w-$(;C^RV""""""JϣȰWZlCgSX86%b"&?60Xl=t*;v rr21ɲw-j4N}v_'=ca嬿M}J[_'$ k̈́P+#>ه$.BԖں+/ a1Ll6Md:C@? 1+Hw^cA>=ϴȔRœʐנ^$o~[։c׆k T}7}HuQe,:)+6$sG%P'#2B6cib&-|5~W}|DDDDDDDDDDDDDDDDD+m21W}P +d'=yg)ʡ _~ 9ULYz#jTBq8rAl (]+H/MRka:GsCCy)ᛕ:KUltH2{,n$iîa_ϭryſ UM>^3mƵh8,b>;&xMvSWt)cRG@m<]b㈺)edqbh#cfۓِ:X%H_h+.elFn`1>Wv>e譬g5.؍-0m>=w#<<bU^=c^ߛ|5:{d[Uԣ0_=l}731gmϬO )c(f?QO oy.ԠƬ:Ec~,NsD>rYBB@u{(aOebt1jކ+q+]"˻"bEGp~@gfEeU6uUH_ +m:-hвۊ\]IpJ +u|'2z^[ge. ^֌(bo@3"qM!+ׂň%:H-o'[e=CMʹt2Z=T'%DDDDDDDDDDDDDDDD@/^9< 4Ow{7_YWFH^@̮K nA]t6U']T{= M,c::_k1?lxfqYxVl{hzAv jGsUSƥXֳUuJ:V6X~neyr7[2(X X`:F=}@ZKU /c^wؕ[A]c!a{~L߀Ǫ9`ﶻۇWJ'BE _ +Zו=+Bt{~*QPfmY혁ldۓ]%ңԝd/'^5P՝&H + BwC"Ep ]X{*L.V UuJ^*0[SM%ljT@r-R' wu ]CF~?D?" *SAZVmJ8']vatz\/lѠ o'cD>̞jl("u]޽ᩀ͕]sųaiUGg mv$WHkBb{/qxd+|>5K׿yE[" #s)i*IRP4y;5+=讆Aԣߺ:;>c8IF8}ːvA]\F}pdWYъB*l##|9:¿pު(,,gΠH@{ { vx,u9]:} n;3ev 2Y&lGܙ*UV>IaD9ywi^j'~*蚾wU\Xz]Z5` AlkF(ɵԿ#F} r|}jPogdG+(uߟ1iνr5[b@FFQ;z|&W pLmu):t} q.cUSʊ_][,5yјpo  {o^[[ś-» =ve67SY6RG; t 6v@R +^]fD-Jz']m^K"Z 8e:;Aˣ8Rآu~wǨsgM뾻 ՑqWCcQEΏiJȯ4Y6u+m[;ވmGs+W1NN=$nKbV\Ueᚷ6d ?%ɾZ}vl$rr"ڞUSއvr6{|^FE^QY[u@}^f\DDDDDDDDDDDDDDDD@)JJO0yеt巿EYrudߕW]@V=̹omY79.2VUhX܀9GmH}W+[B~7y.KՎ+]eAl:oqnAt(g tՏ}lJQ:siИֺIN˰i] ,IN;O-lZ޺;JJjV%5X#qЍFRFe5+)nV"Sr)+)JDDDnVSrnV""""""%6#r)nV""%7+r99 }֮RaHivIC{3NO=} rߓZ2٠9Tk22o.*սU[l>z͇?=KjX `tG^c 0h$tu1EVUA%Q5d/M9Yv5ԇSZ+=tc.~KvjdRwlգs'<-]dHwԲ_ EZFu ˱>'>]q01>-?EkgQC0_)!ŭq,V#{{AJwl]J{e܇{%lxnn6%ֆc1w Ҫsgߟy%fe=zwc_O5HgkZ-]zt=}PV[\W*=3G%m45s>ߔ!0<:ݶ݇e'Nߥ_"`|U7YZhvNK?bΐ `{|}%)4NE]ߤ{ݿsZw`$̙ٸPAY֜;[3(Ve$r@'^C81԰)t0mN=ۓVBB")> #}nVs9v .kp [')̔_]w *ܖ* }@mأp~[_Xe^R/čqO?_K1PzEWWGpgg!ǵSz?!e͗Muxb.;3( jX/: -&:VD7vmETgS]SXmT ~|FE~.:S jˆS]{u;~|O%PLX;c?]JI:ycry4Vj |=e +*[Ϥ~S_YO:tult[X|>xcE'GRcYinBߘAfّmY( +Do Uw E񘹼 2^t㣩Yh3|^cŹ㭲v2=`6YWj2݃;Њ %ձa$yhWsX +,ȭl:җ |絹t]"*v~5j`|zwO'뵨k*2G0u  +nVPttWLrx喋¾aX1=C|TDD)5orm̏hKyN\>t{Pa1>'~~:O1x>CWǮZK/Ƿs7GZI[uڦrH> OzWkRn;~OFq?ɍ)!,{S;$r]?[&}"дY^oeAu]I8Rsq;(PzSO+} őtzOq2NU-2YR1`E c oF?L(am+7Ml1kfUߐ&7tTCU^5 ^_+y@S#Gϧ%ȩr zV՗nR`Cl}#_r؊z K?'~nrwz[9M<&:d\1 nֻI~_AŠ.7K߯yqg]r6ԏHQe&i:Huwվrkټ?a>8-*:PIC>Ȇr s xKz53^fW;7r)H퇐БBaۍ7^[T3iUzafFf=w{I]AeߡPos+12U/rSao]",ǮcX,jt{|$hgt@#֦?r͍rؽ@:`4E}5K{#ߵMvqw#s:ڑ}[dc{":>_|&o d^~sPw^h;B$)g!MA Q$-Bkګ/~Jw# f֗_n!E*[[:36fߞg$)䨠}%Ym<=ɫ%AһnRaVv2d6 rU&m|SZ,?}-f +Gן><.G4v][ZGM_ zHcq|V_--f&Q6:` ~0{4uمP\74oz<"HfҊV5\~,fܽa{ ~_EjʅF:kt`OdRx>'V5=~+?;wRd\Ub/E ҿb.=wp؀AN؁OßEP>^`8- m'Jq TT+/1r8z8'/dxu $b#zӟ8OEH5OW|&=Zb_^ +}ٖ/.5KĭC=h,++S>U؆V#E5xa΋}g+'$MYn#׸0B_3z|m_['JddʺfAoh_Nu"lvYo0鿬BCO@}IOln[cy9/@7$|7+^g_|nLJ -JD@1nIy5-zaks-SR:2R;k=.0m좶ʂ« %.m9ߞZ_CGͺAs." e=aSEhPncR|^/cҕ}n? w]~ztʲCteDy#B. D Om87<zt_[Z8l%.„ѕP'#_gV&5~u +W˧t{hWۑq5^YqZ%Πuu~z>WeTP=..ǑgG]#aRQ¯)]^%kUJTvxfp0uUJHx[J5@+*:4g^@RYG~-ڨTe;P~!7S/+W(t:ڟ#4qx= J +[C'`Cnmvv:,ǿЋf.ߞ?i{?lFuuCO lBn5l)P+@ZOA 5kcp8kjSZ l +u.pkzh2bpx6xk@@>CBUxl%P;BjXJ.z}֪+VTos|91^oxn݉w[k{| +3sMxk@EjzKVsaU=}p\Gвl>tně +N;Y%aaPV+>JW`Xh" `{3.kzhGR*cGcSK5$Nv-J:6Wwӿ2WPD O}E+$h{aaYJ=>5-ᰯd*m 9*44}!xl4guX9E;;#bqX ͏JV[]] +yvpVmjn۳ Y|̌JjSq~{1S¤J+ :^zdfBUUUWVtӫ_Ye,~]$t5i). O~=;/\ [ +LȈ 6|VZΩ6t6u0n^u s אnL\~Nk}G.K; ձ]z5A rX `,@=$"eDD (b=wX3u6O *SW]U8D6RUK%މhG%FEcVHCbzLl>~kziu)T̯NWC66q= 4WŖ#2FM&tDJ'Rضd`hDZX`Eu uHl@׏ί2*KRo=ALD\/W#nE(C*ujGgDDDDDX9ywqe BOGgDDDDur[d2ڵeS0͈5qt'*btI=ں1޺%Ehi=N@]s&n1V}HK+Y(,HV-wc'w!G+8V^dȣΠױZC,m'WSfc酫P)Rzv3b"""!2soucF2ţ(5::l7.#c=h TڅpC:tc^ўWz/|jꕷMcK!-d\KA+X۩GR6Ve1CëuteXO,_k-jJ+Q~E!ڵX<.fMVeL+USHÒ +K}YqMQ0Q,w=pM6}!ZV4s+sj~5Kc#?lǃ/Wu J{h=&gYUwbcYPÿ$##+L\LJk +&1vXv\bȾ_,YկC)e'׬_o{vt,To{3S7Ұ+e3 :~dtLg'-Vg{߄3z|[56 A +YߥGHє/jxy%Uv,ݾtj1['׭^ܺ=>)wV )JpѺ o{ 寧6,S/" +DZ=!JY]n9C`9F+jȴB~y'u6Vm(w=r|?9fNm6VV-u6HMX6@'Cy}Z>ea{J.a=}ñ#ΚʧhnNNܿh&=\5Uv,=Kuz{=䪪ښlr}cRc$tt| TxQSO@ b u\n=7%h@ !t[M +ZծՅ] va/6cYV3v5!$MAʿ]/kӦmFZ,i*+^{N86@ר-\Zv=Y5|Uw8xʮ/A,ҰVV^ט Sd#_nMIUlJ7"29l 6KX +CI ztO/˯;EOV]V5nz@:`A|R"[|!,ߡ?)rQF8Ō(rr'Lk˯5)KPn1$++ʬ+~ EΔu/Vޏ~O-g:8,(TW] +J%(qfcj{NGLjQ=ڻ:W2LW3j,V[rTƵe5!.`w'̭:7ݛvsy鈴XV,\5t3,d`c)JLOi~g@ueG~RIR=w0+1M֭T -A zu@֦Rٸt3W>"ll6tݻ^є̻)Ʊ + ZYA Gc?YMmjrYA 3xbו,\)?q ɮC͕itUrzd6t{AaЕx~;a`iwO\O v=eveʆCw5OLNS!.o :ږ"BzI)؎a{NQiSmxU^cVovI [9:25.Ńl{C+#^;xՋ,Ý6޻#E_+d(TbeQ -'z$k@Ivdݍ[*Sz]'dy2""!ݙQ:UAא#xb8/!nSvzt?GuE@ 8KU*ضbY`tT޽~Ϝ02cj}:Xke}UV9vTP{ w3 :zt[*“0+Dﱘc⎆ۼB^.lN529.?7;3Rn-[VBհN򔯋^G;+h~5UV%իӮLW 1~MvSmV>Un:اw +:&l53ų2lrk AJ6CAhfE|E^uXեl  zz kc)ef.x)vIY}pZg MVȵ;)#y03(P1%谕i׸$y{5gy*sP|_:QNL;3%VN,<35o2:iZ(>'g6ut:rf;c!Px^_}'jƤꤢ>~p% ,.#-bt6y$ RIbbe[9Bz)D%AIQvl|f%(E=u/%mM.oh2z'`UefZP,q!8 |jВ~:;~beqn>.R*5%~PoC[JsKً@[KbBlyQ_CR'g+Ӯ綷q~~9mUOO@ֵFYoxAe5PSbv@=#`g{@cRB]]0;YឥU֊dqCʲnǮ,#Zukbx|w!cWWjֻ7V{Q۱20/-4֟EGOQ/kvAGr>z>S1a,W,A҇{^dv2C8XX*PPΏi](-FZ/_J_W}kٸvgar5ꪫXF <>O;?.j#!)dU*__>&%\!/u=y ,b\~>=/>^65X!uH*% =C/˫51KU$1=[<8T;5:'ȹbIn}4V;QWRVzYT}Kp0sL̖ Ӣ-=k!]hҙYWbUU7 *B=C[>yQ[VZQr{tIh%r&PǨ.%ow =$|ԯVF c]I$' ~C>m2[] #؊א~mrr{A"fԷGWy#:F愦iUugv-;nGQkwT#Ʀ%l]*G& |6 .{)@'+֯]Z3:Yyz3?̻r7n>ww޼? }5R1M;O^N|8NS #ucpNK*F X'_6$^^V>~5H+4Z,`ʥS$""XMĬDDDDDDDJnV""%"V"%7+)+)XMDDb"a\F'0E}$R&:k(I:]s="%6%շ""""""'fsS+Sgrld%̫~@M'*:۝Ql3 P=`D? }VQ1dKڙKFKZfJ؏y!~GP/#9˯xUΫnCe`pH#{z0YalB6P0,M]oS2kX|o#וEhƿ 0]olu]],+ G19\Lde¸ceKylJo\g̹֔ᗙNfQAlt6|w/^FF%4ZegD2)#|GpDs8lǥ؀ 2$̜<|-Ekz=1:ylL<*Fo>~c@W#ŰUeȮ@:'"~̣OlGMO!_<9~V ũ-zFfa{1S]Uy-6^l*~맰 =GBc(gEcgY$w\Uuzl7[#}mhE^_};==r<\ D$0ud#2AAa̯oZPU{a[GEgxwpʠW-2LϣɤWr5`\0׮GDٝz+,'U=%R65}7=O# +Շn/Zw^̙ VG3l@2oC_rWtlg2pSY๊RA}#uvW]^*ݴoQיɨ5i~=0ٙTPɘ3ywց^y"Ů{ +Iކõ僚,Neӱo=d?8/owv-_u>ؐT(ji?YuP_l;3Lg+оѵxZ#DYlEי?5dWyBގZ׌8G6?gB|kM \zϞfՁm\ߑYZJlncF7#%תk3^G6^/^ځT>N^΋)kr_x!N)m^_56KdqgiI 队INBq}o ;>^֮:̬ f:QS=M],(ca=NWZ hvdobbtkf\V,{x-~;5Jܤ1{RuSӭkר~:,#Td+l#=76yϹL9KzmY{wd_=トݸܺҬ|H߯.=- ^r |bcVķ\{˰$Mef} uO6¾jm- + H$?=O3ۈ/)Ex®.W`mGFdqiJ{Gx@q1 {?6RGE +ǒ=:#߰&zQ8ݗ?i'z-BW t[Wm܀' QGZo +ˣjcb=i{zkٓ(%'gm'd+ZTk|䧉C6 ]+W|s<2eqtC[lkKXb:|m&G-#u8}z>kynX5jJG +tnu#AR2=C7p=qxDzd vjrkT\t"brbaP +?.ygg77xMJ/][&n/-:mRb >ꓡa{pH7w}+ؖ:0Rqj~ c۰eYpH k؃|#2aV5Pt)@nV>rC t{O'p*B1UPDtqX +P[z€{_)0nrОFt| ç2WF*?qQSXNk̝kd"bcqXv=ԨϾl:=?ǩr1RtoC,5Ƭ +}8Zl +|ǻǮW !|?7/N'ť;=ep^8RV^9`=xaqu~=kZzQxp8vc}0/g<#4,(m__Yt|yj1*ŬUR*  +pXV.#R7-:L7x 'Ϡؒ:£SZ֋*7Ff ~vDpc*j'el{=['^xS_< ;W~[`Rv$j[G o] +{<#/ΰ[u͠6Gs u\?0(kEO}·ǦK:::i_e_BdWb+>D10:f\j.M_OOn}Җ{9[Mt>5m]ghv~ zOl#0mX4`zP{voV}'eYv4tAіYa]B5K:3dcWZRU +;>VzwP}u򘇃kB%}1#DȖgxj8ՔF%T'zLZQ{};䊜p|64un+\sJZM_>~< +85XE,[Cg/ū6WF*2wB5E#jNgeJ*P|\F&oA +Ք0H::72kjPh1|>WT%$P?ľR^ uf65&m}$I8eƥ* vB(P~,[z[¨y49ƫV,+>>S2ZP`Yhql{TfP/`]s^$l$z)^>:1*T[}OxfcZ+B"$작aB#w;;?fa㖿v\D 7c$XPYER י)XMD#1%X1<%c7֏ØGoҟqG_u7oh9[Z?|,GoҟoJ ~[*9VfoLwM =>ؿ~W/ſiOؿ@w7տo@t7/ſҿ1t7/+sMe?bsOiOؿJ@֏øGou/ſ{7!qt7)}Gq5 ~Bc'&??Й_ø?ЙCb?ЙO؟oL~@ҿqtOؿb[=*9SMZ?o9fo8oyo7h3֔7~o(ya_1~/փcu1[Z?c7֏øu7mh9s7?|[~- ؿ&W7ſ2- ;o 1@e?[+s77ſ1s7c|[ǫ@ҟq-J iC|[ooGooA1҃?oJw7G_uhq.Z[+0Yv[=Ǧ+#]oj񩺊n"}͔c:o)/@,UWdwa*ٛEճ*TϗQvw$8'@:ov׬VZ{v`daq-tøe?SG>Jw>>ÿpwӮ{SE6NE95*WTzYB}OkL/gĹ:Ζ΀k>[; >7 ,L,#=VHvGi8ly1<2jCe-j<*O?|Oܖߡʝ޷{IL'xªz[zg3TʙM5mthNtH͏ ujcMT6[#aCe29@{-Uu /$rQf>7#Fe[Ր{ ޼pK9w.KPb?dZXt S:3И'T?]:ԧJe +6{o= `6&F.v>w_bA=̂O+zps&8,]T0(Xo)M]w+I#7Bڕxa5OklD@ +싓}Y+?E@CGDU;`ݷ 5 |wyվzoY6{O?c%x2)lCSklFMcg}jXզ}>rni o7cVoMYg;Otx+Aj=hϨ2lnwvfT5X'7hq2m[ݏ {v_ {*?<#pʖ\v-D,`A=&g3.-Z-GIr7ڗlR~VDٰ~b/)Wb`q,`g.?q1-/HoПyj܎b MãؙOkV?[9gSwUڊ0 2GGM'WPP:@IĤxu,2.iO̮8ڵ+XJ~ =.yE {# _2>g1uHLZʫ9O}/ d_~dօߢ֠ beͳWYt}'CyC>̅T Sq{1FOl\sR]c23cxwǖ)u?He5A"Lg-!\YRS d=x,6@$[? ToVԏYC=b ž泥o}'|UV5)^N]܎pi6{RTbXzYG(KbbUvo1A2W]PzJۥv@hS,kEUl6+uvܰ-Ut]m]5{t/6=v~R6̺ 7K:CW}L;#:6[bt{{OqzӫEYmw|koȷ:ت썄 w:e¦}=:֏̯s³lBS`hڮ UE;|@ܽyEJ =!UȌ^v}c-fE(-Z)rNuy/mr^,%IwR;Uw5Jf)A7)dSiƃed>: Ozej"us*_/xvw۷cڏŲ+mO0g:\ܷvr?kL̵Ȯ)%K݃@4|llx{DVetuaPգ^I.4t$L^F̬S m.sFcg; tϠ܉)iUWDogj-J={w\zr5om:>` =.h"zٺJwXxMPՕe]v~3s_EAw;\ֻzlK8VUV(3ԶނVtˉ$_OyOkdY޴;~2))xU[`ҩ`y|CrU&Wݖu,nbaOKPWghk~.oh\(kbβ#{urcWL_'[m"ɸu+D:zt; h̎3>gi4X ns}zGF*@s~1k?ӭresoF^6:Թ7UN|(Gˮ[*O`@;J5Z2ZbSjHn󙜏!_Ij6f:UivJm~].|? G󫙺E 5hjU2CL:,zwK O,ۮwMcluLl'*eC]5=A~ӀW;Ux)r9Ճ2f,0JV;w[S$o^d)Sv` .^pUvI&P erNR?.0Nmi],zzGr?ofeV-k[paPtőW 2S[;(^v^;oIx5@Җ[_ ( +rv}6UTVjkٸgFOAOI)o%ɆRG#􃿶yrUuyo\ryI؊Ttnj8= }D^~#+)]ָomgc}F}эZ0O[>z޼;̾cнkO',e:rVU.CJ5CeWMuyʎKjw?𣏕W67GrLH.5l㲹u6tݕ֌`[E؍s}(U'}#ɪ+˫zzN.o!2|K=Lǭ1Ðoάk7#3`OOH ʞ>cWjAHZ)Pw{; or+z)VT6B@nGi˴u߫^[o fF;έ{Y[*z:;\v-־eG޿zq(w^28ʲ%kPY4~f`c?k)5t0`7EHbZfNN+vtRGēz %u ++ttzD`z@:E +V\was? 2{Uecpa5\gf5 ISvWVd#Nl:ܐs8wNkZ/F`mk1|lkZTЍ=h÷侓jԑ[!4;iG)cbՎ}ԫMUbtQPvIj3)jrS"+6n1,gRr u? D{)9 ދBY% z[C0j/њoTaX h?l8ϓee)u_7.`?p<>O6-tİ a&r=vV=!zk O\r8{`,OP7%Ҁ(_~Olts {||˔BOyٕ6FB](vAԦǔ?"o"T|ASąu*::=9nҔ+14G ^FeYcPwܑLw9ߚ+Ͷ" ENg:qr ]HNʝn]yC١Ez[-jU +ebr$5Gb䱵B講:l K^%Ue,;I=~#73.'PUT}Gd ˫s+o{cےqY='4{/\iͿ'kUJӡ:>0nWyl=U yqv}ړ9|&Lm!ҠY4Gu$D,eeF}=ק_v!rx62SЩz7PaM/j~&TqQ˼\EIou|q 5-F#6 +4=vܖ#MY M R:av<-KQû ](z0}z9"&FYjlxnkr 3rURTc -\}"2-l N>۲K/UawJW[ 5xR$Ȯ'ɷ.n@ +/W%v{Je;oZC?İ'H[T ^L?P2B[<%~FRtY=ٯ1FG0 ='Z.v y߁dz?NLĵGڲ +I +w-z̀rÔEUQZ9ցmvߔDՑ\/N'a]Y$o/ٚ8',ɬ#EggkxK,x V ~=JX 5WX ~>k[OPȌ=z͏5yfzfvVZan-ulj,; 6u|I?.t>>~]v{͇yɭ1!}yY5]Mg :RgrTepF*Ug[[sӘ#娣pg5/^Klux/[ڗ֚YU_~ձ6j)y[1A7*0H=3Q彖2uMU{8r^ݎt6?)/ǮC}#ǯiqsxX/-t/qXW;e~!àن̀1h}l4zdr_^$4;x܃No'GYZ:lvU}B~JzN'S7+.ӑu.#^~~~:;hh˷<NW/ߧ$; ?IOj/ZOp=Gd8|t[ó ܩb`Ors0p,䰬W{:m*kjPًo5%[Ǡ\g;t6XIq4vO +̍Zev6'@ ɱYYX&>uUًuu6B ~~ :Cmgk[ؚ=Truxw:P +f&}/  Funeߗno-~7U! +6a ;Wzۄ.+=;I p8[0mtpXXlyq|紑^V!T(C̒w1Zܤ^+Z~||VM-L+0f^)dڪ?&p tUvϧ;xy>԰B~3CxY9U(:T/P> ZӡeuR +bDoOKޠXբ)VיA51Vԙ5яuXAO=Go/ ELzKf5~/~~^Ŧ$A'c~6bVz/Z@Ǝ};1,|Z6ػwnW!nj ZA׸9郓f/.1RWfQ=,tw:=x{;~).ƴ#lvTƈ{\Luh4?QsTק% +NSjIg霍 P5:&Ή;^1N_-6/Q>=I eV"cbGOK{}eGy5b覜JkQrN|ypUٟ4Vemjc'wũvȼ%KB-7-NEYYiz:,g[޿38 so(A]h4@zbq-kSZeXpʯQw)}ҿ h!5mu^=Sٞ:_S[g{=>jcP+VFR 7mo;7͋̓8c)U^ٛGm?'~u~d|/᜚AZV5n:.vm{c{;j\A{,cGfo=<;:z;Ԍbb"2`k-Y;b.޷Pw +Fq.'jjV$/c{-@Co 9.0ۚ+*cuzw =[,kG~ZTP*VmNܳٞ?J}ߤlb/{θ[B(;ik~ Y>BgM+|3?Xe3xzsmkK:V$WI?w%um XUVPkiS],'MzHրP{.?UYm52{[⎖d4+e i?d˦ǭkAS-鷭zKd#ci;zO +*_&$IĭimFDqU+fEv,5IMo}yZ*R:ǮYlS>v.{,.ͭyONRDZUƛ@y)QŶW vpF=7A,^v̝hyhv=3.STنAGE9'+Amנ'@vLC +JΠT} 4};pKlfs_W@o Ximlf[&05k,O@=e/95bLzIl[V0VJT); y̛#CmP;SwצERYb_jWl֏v-͡"s:=; +/C4u|qX3ӮדG28jYﭳ@),řٵo[a~5{Y[.X>f*Mv(}kj{󫃩1 +p-;#`Xx*+NVOH>Sǚl侇gA +ávXv(tYBo]<#KoBUױկ$|#2j̅ȇc;HXT]Hףo?##[\BX:Q >610lרZv=$Eb&=Ԥa , 'crFvr?) +"kT(:`Rڸe"̃m֠GSPޗ]>CgX8t}o&mx'ht>T|}#A=#k2\v,_om{*q頻 +hw/ux:}_Ҩ?9}DʲU識VVRxqJY}v=mr.JH#{B䫺+hh+GHno,5@O:DaJnڂuJ2[l(uJ5Ӿl[\bYW /meb%IUcJ}c }kBh{@?dz1tzQëoW^[}̩ge 5i૬[mkiftV7 >U.Je2W;{חoLlrl #:kCd >Dh L:݊edmMjxUQn8΋Y{\8ʳRn4AK2a,lbTG@ ⽽l4X od#8zeU}{e++u16{vQw( m:0=@w̫Tݍ@@;q5Y\ĬD#^sPnkCe}72p)ϥ/Ԭ<>(3/ZdA3+.ŵ޶דxr' ZۗhC6؂@҂} >j ε[%iߖe wzbM-nj@x2^)Wew3]G^%{@8%kQMث-8]-,:,zي?U:މE zKnL5Ruc{iԡ-7!?a#ʾzfR:}D핝M]>s`~UX̉cP=SxkhSDKkbrqkl0*@hyF(Dyʉeצ:3Ty}EpU ;˼3XCwAYwWPifMXΪ䥀c4s=<˧ꥎ {v̻>SƬrzV)|c<bԁt*&=Y-jRL=p|q8ƶ@I +WźA3jq1.(e +.]v>JқJP0%uj w*=eЎPƈWr%BƠJ&% (% ar?&5h/ԥr.p~o"(<[[rźKh b?#qXk&;UB$Y[@nŸ`QT]|wolxJYdFxbƒa~]ٞJ7Ʋ^U#}L<[o XN^(WT}Qo`l&{VԜ)=Z䇽B-0_yG0ݺOnsk|KfdzNtk(Wgg X_!]+Ȫcb$NݶOz>I9qPS2mJ;~Ba{CVv&EZu|b{:{g 3VW^z̯+ؘ£eeQ7gUU5\lpXt=l5tӢ]+FvcU&}-ݏc幙̧e( uo>nMmlWFR٢AIb =iZUH{NNzl:,7(b"2LkJc(;#@ywexmKX W۾e\[VE~SӽgZ3JY+T>#'_tW ~ mz)eGFCz+VMmJI:39E%##=lmRBƮǐ: De:3H'?&.|VFKp*N؉ʦn5U/mA]K@ҧ}uH`ڂIF wcIo3fW0e1잼vˡ~NGa:RtGms'+ZU1>[=Zڷ[x ]P#b-vך(RAc:zzL۹Ƕ=U+Ga$/s{OLPeK 0 w$GN wӛW?v?&,+չػ Pt{Gh[]K]lYz{nO}Lhl2 `yIkEk-*X_-=$gbٝ0BHyo{9+''AץdaVuLՁ=/yofxyqҀ,Xhv"{N/GHfgϻ4gyNwEST7H,v;znky6WZA{G+K. ˙huQ}{QGޒQ19 GJ1UнIԧV>^)PUjkdaa^v&z-žnMȵ^Iևj (ߩ>g]{Hn8^SO|t`fGP"mX7^P) f` 4/G/GVmC9' ?)g_l[kvYҌIJ kG~;'fǰe%+RT9v^[ֽOʹ'jJm oXwe / c4Ym5bzjx6mSnW+]o~RGi„RDZ:eصX+ctlņ:>+/GW_V|6-ս&)|qeXuPbGqk̩.~R+2i8װ G9FS}Iבؠ3]uxn>bVZ;i-Ly;2]*lSzƲK'4R۫쾿]fn2C:u{ȸrh R +?>/1 lmZZ6b q_*6r=<$,+l? zJe;NP'l۹Zk҅mմ`^ZrS=wjkKܸ@2 ]lw<]Z٘Q {h;=&Ks_f+](T>{3@mBЀu9%@޶t"-&obzm|=f~uXUrtYV`)*7$2 Vv!+X?S,>:zѕUV`lȸ[WYKj/@g կ|r?QT$Yܕ Z;w23عUlDrT/W#&cVMi– + l`8R8-Y(2}{n?5^ـs$o)Rw.ܠܩ2tJyy)VR]l2+-ܮAOYkXu ʮ 0Hܩ_)F0<>?9dQ&4+(0aYnRO:6>R=c}aR>D~]JNC@mTy.Dï1sOLܩ e$/)hܼ@&SPoRkfToYeo3>PLn"W%5+)]@>.ܡ;Jߡ@R moVk1fj{ufH&-ԥuRߍZ02S2^B6d>r˼9-1^Ptew|܏{l Ie]:$lB8l~AF?`xyyh5ٜ>ӿ Mfqv85MlT#-_)?uR@=vtf>Eȵ+UAWI@> +exn ^bٓю1*]?t;y{vOΦ;}M]l7֏arN.M.{qNo>< Ij2tbekG[޻oe _I)}߮=ĀedoyvqdTZCw:&ycb5U.Rl fgmV$WV v53 D(%e Jʃ( 3JYpˢ_{%#Pv(ROi@e|Q+B%eDJiG*Ԙ>vKI-~+;ɥGo?\]]^~okuY}\Օ۪izPG! 7^;~^QtLǫ"VN@z. /Y]k zgsEyQgLR+׉kz{1rKZլe}g'Y`l`>i'*xq=5z?Tco:SMo<iZ¾dܷ7 ߾wL9 +Zk`{'=iml">N pMu ++v6(k yI>~qT-YJߩ?YZWo uӉy!`mUoL.+Pëc[m|XI;ɩ/ #bjo\ee>JƿzƘ媳ŃV#dnl kDq׏ kϢY2N +qvٗeXTn;V*\tc^_l&QL0"5+-)i.ԪH*%AYi](NWxۗ_zKoO$* ^ +w!IWzOc;<ʧ];(>HܪG(6(?p\6YeVkZ%*oL%6%I=7Pc"VѹMyv0c[GL1 R9VoϰշR2Z:#<<.>=:[ =v܈pJڪNFyI>gӓRYgXQA[}'ܩ$' y}jF}eU+7o0LfOy"BǸ 55~}#d܊Cwc?MwW'p?SuV)h>tPA$l#0<\:z-W}}L_R`qRldM)|帗ŧ 6k7s>Iw v +V"kqmϷԵcᱱh|eRjp1e=]ϙNXmԊԪ|zo\xzY^'OOWY]|{;L'j{ FuP-|>>t[X ߮l$v_6E5aLGyg^5vN'g'}´̄ :AIF2Id}<з#R;Gq/cy zK౲V!~ o`쟜C_)V6}qӿ=hܼpXJlrOky{.x(D+C:X~Wc73BRT Q)kR"PJKe%eu (Ɵo05SmLoOcFSZc-˻nZͩE;[@a|aT7%7U|{Jy@ԮS}RRԡ2JJ\;J-@RJ9Rw)J2ܡX˄jVSP%%b%e"yATRe5zeK(|ʉ ?Ʈmi|QnwGD'RPK[.R;K,iU+(Wr]l@ ^QPF̩JK0kBSPF7.'(|\RҠ e%iA.'rZOyiCPv-JhiIYtJQ7ܩ)+B#P{Xʎ;ʯx>FQe ?ծmi@Dyfs }"KEv2ZNCnP*LF(;vb?)MJJyDʰa)MJ Q%Jkd["Wq#BR7eC J jUu(`AHԮ rQzK@)0R*f>7~_aZ8+3IF= WjI=Q <ƛS-L=S[^Ҳ (eFP ^FI]JDw0{Awa%:.P;BYB#]KXhJ;{N-n|eR%@unWRj<+IQ*DY]J%u-s+@= Pʏ)wlOOktD@M?>kO N|J`ϵ[6[˷9\/5a,*ĩȁ AukӐ#D))65|qHX|>u2]loz:'5#RԴP:w*;J8[WZKt%5.PF. B J-#rJQRSTnZA&Wr@)C+(y_(2BSQJJrp))5++)֠ JjTDԴQPzwj%(GyP%c 9_\b"4/'ִ89G#6ֈ' $L/ OSxh֘bw{hyo-wex/>I]Oƿ"z,AR6F$|6x8-2(l7R`w^dJ0ezRw)^)%e7eor#pDĨ12D&P6J%2n#ZNP1Ըw"%bPʈ"RPˇo\5))i]z*LrDnS-+#ZMK&ULc Y_\b"ih?Z4O:*{K59_(&UR*oR]@N;ܨJPNĠ=`L2W{%GhMʎԷrZQ {OyrJ2RP%wA0{B4eVԻR"5JҍѕPw-xД #AQ-(#BWJ=e+KR(cRF5+yMjjyB{0 Y_IDDfye~`C:IEʎڔa.mhoǜnWPO(% *L2+Ӹ45)Gt=%a+X"SZ)Q75̶ Kd+W`>׫KYz;*_.֧.Ʈ7߹RȥƘ$|ˈnW[zʉ]PRto}5SPe%IAJM@u+B" .ZWr+GKL2w**%yOre.4l/WRmi+fܡ(%`v* R+)P tʕew.(|*{3/QWJ).W[) LkyɤnV|9)[]aҪN#i[ +j'NЭ~keqeYݶHzA: +;ti2o5N +=jOP212q\UA;/(>3rZAeb]#q>Re Д W4X%e҆=%u+(exe~27(ݥJ7+)k]N̼y C12;rID?dӸﭗG50ac puŵ=bidh?dӸe}i^btZw w|wPնGG]G.)yS-2y9U;2TA/0LyJPw!wi?9P57Mʓ({SX6Cƴ'{UU@ +_lZTzhklK1 i`zWh;F. B*o%ǰ{J9X$8VW[Mʬ%6L_3(ܣQPzGTJJQ+QVTJoqԻRܷr@bOϱOͮ" ?a?>fNל=QP!}(C,N vOyMj $P}%=ڔ#rږ}%W+)Nʈ#kk +wb W]V#mtXne yKPw3ɚH*% #э#pR+S-2Jyq2ʓЕ21YS))g]EHb{6}$\SJZԶI*<u$Y}p>7i؛jQ=JԠ2Z[A])rO?X#g 9B"%:KTR~ r(<@.xbsXeVD?aw}Ϯ%QSzѹU2-*ҺܤԴKw.c]iܩ(VZ G:* oQ-84ԇpa{;^CRBc +aֽDyJ)^ q)@w.Ԥ*~^Q#QїhnZI@Dr{ҽ@NDF H%G8sk?awfgQfn-5yuzc5(L}=I]F+ Jww@{S[u@ +DK)~lUbWp0{Jop%7BLA.ʬJ(e%c]ܠYv- JhRVRiQ)+nRTIR%{@{ɞX 2D~4;ϭ(Q%zKeʨ-yS+ҚP2ҒIRnPwԩ)%<P<S_ _M2ܦz@N@*5uAOyq=2x=rN7).㴧>ҠyGlDj%XLyJ.5+&T Rg}a//:Q&fm޻ +?79b{/[x K<;+[NmSy:NQ=BΎzH>be҅PE:󘼮y{ֶlկS010|De dWS:n9no:=q9Y +۱ ,}5o=v T{hTūv]H:o PYv +FG̡PZ=egNBbaOK%$ty|>RuvZe=;}wATJ1)R z,;'R68q*+3#ųv +$)o HޢZiwPym+Ӽϧ]Iڒz#YHWRTWXUYBxwne#aoWxUԗTHj~#=#A)]P%e%%w*a[R@7)+$J: QS}.Pw"TJQ(e51/6+?avkr8yFתk} 27zW#ǩS9NckZo /s?)_>)9To [M>R-5entVTm3_3znG3'+/Jh)u|>LeIuaQi=5W+yV{қIV&oUΟp, wކW Nz3XNݔ^h|n\4}=6~s(R{SV.}>_[>c[JyNj_e(!*cCq.v%'߷(4?۝N$ |df-C~]'EϔĴ; M 6?Aj#%~VEtvl"GIU1Z:2/FvGޫU:,|=ϴeʡfʙw;| l>o+' +R/ւDϼl\kR5ՂtuwKmɼ2'E#ٳ7p k}<:EY6(@'+TKԈzV}V>KV$ HՄ"h.[Yg/n-WpFQᝐE4O}t~2|f%VRXb)č+4$;EXQoC >lZRz}IUI#I3/ĥ*'v CW]jSQ)F ܯNTܮ]PҦV Ԥ(DTRWxc_Rmұ> r8i^Cu@>bdtdVB'ؿ%J@֔YY=`SkS +#,UV8bWCc3q+ UvUZ{GK)ʎ<)ʫ;3!7tO#}nz{;~;Uz>-ٺ<)s=jtv"cE>_Rdo}?3q-F o5Vv4h$ t<:ޟ0[1EEJ6@zqe31  zl]#/q,[Uz +w#@L| <.UEVKoh!=;?dr-{ߨ2,`#<2W>NnA'^Gq1ŠTk5$XÆ» k$v>&>^%Ck|%>·t^, +W֏c)v2:mhU0?WP]a,vğ!<~e\nN;Z:!_//KUGQGF7cYz7WGNj]EҔ=5@h!{uhqqSȽXX߻|S_d}oZVh*)P !-]:=uBS9kɺ(pI=-):𘇆k}2k-B} B&N6.Gjl\ KfWقi)i\~rXauNWWQ}z >?"3"]yOC::N;ǤQ_xcמ?]J_dc]njz׌;u" +ǹ<-TWuv7}yQo%1,70jʧ?.ZR:#~W;J +ɾ @{8N4e]*{^_94!qr87Ȯ sQeX1Gķɧ=lx*.ALrn~؃[R&J ̿ƿŪ[b]F>?de>voMK#v:3sNRx# :]'? (<+"PnDO9Re%ۖ*u(O3niIG8e&+3O?`AZ@ˀԨ:ܞzEWXdV@FEu7J@vڥ[xjH@eӏ/AOAˎw2{v5+1[8^ƵK#Lyo˰.ՃbK3?jSKԏYB7)T|bP ܮ7'Vyޘ0?]Lz;r/6+lMver<[^҂Q~c1z- [_ +?bٿۋt|tWhn'KNHSCZNHfҿ= +~.򿱬BHf +g,=6ٜo^?c9^?c9_^T3!c+]A_~r#_,/GHuOد!/*>rW~yQbegק@/@|xߥG|t/Owt/c9пז7>"|T%?bܧ$_EONSt_D>Su҉S'JW^r`hH~gw Q%W*?ʑdcSUcWU_WYʏf9eٞGq_eDf+*ߥ<$?S ɮ4M[?EO^Ot_D+j?+)__WyunGb??z4-*7WW3uJ~W,?ʑ3XW?_e)/~_K=^xy䞜'{/ɓۓP?5C=BS-n(?b?+>Suҕ~؟)JKnHW3n)*?ʑGҫ<ҩP{1.Ef9^DK/?ېOң~Cq?c?k~9/_^O}A+'ң~EG~H8FWc2"#詿W3n ,?ʒG^oק).?kׯ+ׯ~KcY|K5t~s\~srk٫*ʻ-kD'b )DQYHjVSQFQԬDj5DjV%5FQ+MF5+)Dj#R"9_j0x[VKUV2% ~B+muXlnjfgP7üD0PI:l$>w#v#=}U*`4dHs.TnٷAS:ܔ:ڍczU |$b%ڴ;TO`L<5}2^6ݴZ"+u2>B@v%e u+ͮUCg[ܳ 6FȡuڶFxsE;^ףfS"""" 4ocT#YF;OŠp+cU{[1$2}32\CW}}@k<} >kn7*<7sY[s,/Z JL`:ߨv;=+2yC/ +ĩ1 +-YmKy-b jv +Z GPξsGu̎~TH[$Sڻ8EaRB.Kv&[meYrJb=v D^ǿm}Yw+b#P|#m*jAzu wEܗ*N?^=W#:eΛק/w>dc.Ʃ*S*zLGvz;7OZrk[ abQ훨wߘǜkJ~] YQ䎝{yWWǛ-;JP'gv7аTo=;d#1z.T]=A=t?^&mϳ L:JG$+X^L=3eV<[8wo_j8Xm,(];'϶FXkkl-YT#T$xFd T +}߮YQ)Z/8ßV} +Yh)w;M9Fic*ud.)A-x7tdZff~(I K!^+]PUٗEI: ǸL,>_ŷ&+jr}ЛȡҚopT(Tg-_imkD( &4hz>w$pȲ}} m@Yuzzy&>gƚ0,{+LJzU^j;:$M -~IށU}^I*53ڎK&\o}iH*#^;|ⱹ[%JJVY-2yv$VTTKHߟ]xxƷۅJUY* *N}hHc WRX.U +\#'sWcfSraY}*%|Y6};/_xfSZt=K_jB Gh0e >Yڼ>?)R]GkX&Pwהʯ*5lFE+k+ԇlv41G%i^;SRlt +T9ndmI/1+( +OoHf%+elƃn<\ocYu7QkZ/]uy}Q忰% B$5*VP7I"dpK; +zR:IF=?{r;='`I*nC TˑM:CXCOVYgrٗxJVvxlT^Q%WAKvZث@x{IZRo\V=56q }{ږ +|>ڒh|燵 {=L]u.I22qP{[FD5HaF;Lgڛx<$lСӻ{g@s=}/]XZ.fIK2wfHp[C!wI:fMmH,k w#s_%cB+ogeb@Hg<#qQk(xgսodkKfNߊWXD.+0gqAcI|*J.ccהź65u;*6 o]6/յVd r*m5D/Xxuy'/!Z]!ZJz,z+=n3%1ZEBߴFn'1QX3'{%&Rh2+m)3F:0t^YbXn;̞(Ȣ%GA${rv"" 5i;Jָ+_ 66>lJZϯyzA? IebSzVخZeՙ^Z{AXLy~d7?#um^5*Ul}RŝgoDJ]Yut~2oeZS`F + f\,*M,HN{/eLl]ff]4|F1$, 0Ȼ,JrVPEUOF߰ɯ?T2i#;)z,KwMHhqFF:Y| @m[u6ަ?7=N+R_V@gVpGcwUsӠbz4[,{טחw36kZBUʍ҈4<>#aⲗ&QZԵXS)V~ĉfG f5r  +#^qyNBE4h@~F(l^:Kt?A?I9"| !R1ަ6T`>/`2pT-(utt{竹nw=y!Xtnֆ7NfvIzDPm +;>_)gV# +DN3o]Z:M뾦pܷ.fɵ]]T"y=dd%fXc*R;:;cݏ|%x[n9"[r\V cӯRj[ԉ' "Ǵ Qi;1et xu^swiҸJqhf2>v=VU6 nE[yKWcj %]D1?K{z$$%NFuٸ^9԰UPOɧ%3^j,NPzJt{n$ןhza$EB]΁'~ gGK) f$9Іqyrg5uC'˿Q~ LʱlWf~h6@֝$>%݉nC lfkhh!dԨ_v'@l y,9ƜR_V[ߗ/ d'H=oI/Qf.55XU+U%A +t5 'fCFn#Je`Ӳ6 Dw2>u6Yk&3-:GYa۰&g2MPEIVB}k2lLG*hz,UT.lFDe1vV6]j C@(*N'_λ7 !^+b)>|8ű<Wr|J|BIUP4H$s}2>k{u({A#&'#ߦRGBLLs קq%8gJ$O߷{R> >q;[ +jP ߯yf"-mUaWTqb{$h$2q2j}iV:zUԀObx]J?[m'zz!<<[s1쪛M.˥ ;ztr=Ԡu'U`$ k[}̌NCSCYPl_N ߦۘ=l-p%UH$("{-er4dں z~;@Lʳ̥>Ef*B H',.ˣ+-hW8OW]KzN۾"h)mX+MF=W^ĕ5ߡI 9YUmW g^OU`c ٖbڡ JSBcJ(Qt; 2]=P5GJ 7ג`| hQT)mw @gT>% )//:W|&TDJ(R#`ˢ""""bXmuȇL{|{ +}W^U,tu?Ƽ.R/_OZ /Pzo{DDD"=[Z(qe~ǡe=k'mnQ;)b>`&muev,PԽ'#Rx!< 﫺doIm|)63(GTu@c |$6UjlD_Ug@|H5rvmJZwn#ކ.}9Su5b4Gq6W77,oJeyn-ZяUlCHwaG~edߕWG $vCz;sًb vq.{$Ph: Ȟ9zp8JйCf4 t:Gx96x:,RRS֧FQe K æ>Evs-^]r$+;fEheoee‘`UJϴȫb)$4Cں2FRTtGy)yjK1Ⱥ쇪Âdկ7od + o,P]7H${G 7e%"Ū܎O$v .`&v.#U{\b&5/Ey a=+6$v uէUawGnu봽Tߑo{%5ٌk|[ZQD&'z{Dmо*:VȮU$kء~#"\gA Z=0h2J=hFɨtuvߞ38ux,k(Pz = v3=LȲژ-W(z>tI?h>1JZ:a4Gw`JrqmV7њ|Ԡ=yzKKŸԜ`*mBXn=7+1'%j[Sm&YgT]ߴʧg/Sc}[]lz>W[rf^.uf[}~>A$l{=s&nSF~su7WY { Ll YmB:7kclz_8X)[UΚʖ+܅$ =# ]26?,nG*ylʅێjc5C3R@/=Gp<}8|VٷvAڎ[K8~9WEطRI3:Zy55v5X̠665v7#0|B~0vQӦ[&Ȭ=dW;/ +*66l*:fb# nkҠ2I: ΐݔ-YEmj6t:H#`6gǤ^nl) vgL7lK m:neCAI9Uho =NϪBvm~S|}$?OtS)ManϞޟlWV=hv;mܢUWingvBcu5M~(S_]w۷B$_驊u)u /ң[=Gz Έ0y^G誽軞ߠ>SK0{lb>]vQ6-agWJlu OrszF! ;umfIH#̟ik1leFM(v T[o:I޶uokaaݍMR:_Qu`pu{:d[qw0A uաngrc?ZlOR=$WNO+a#L[ Wz{'2V/ћ Nͯ;Ȫrl 2tVuצaEtE9nEm7mJur>?)f7\S/z +4n3MMnWaZ[ןyqLQk*u椨P'S +'=xK ҡmjψ:$:)~FG#U@Y4 +Uv?%߷rͶwUPUzF7[I^+iW5`F>5g=v2{Y7eN;VŪSIM0v_Z*T,_b(=;IfRp_@Lmn|>.vdbrdԘMC2]32#^s .cZ]eG0mOɴ* +}*;dco^BVWH޼ߤ$g+Vov(VZu)];H>[Kb0to܋_f.[-6xj262?o'{Зd91W%2+X ﱭɮ>鿙s06ܧɣ^.5V:WVR$nQ9NOQHY}:А^_oiWx錋C%6+l w}vM|zl~Skxl| +R{Գ-+ +)rTTl1frkb/FV u㹏x&Yǧ! P;uӽ*U ++t]]zrC D5̓d w|&f^Gzݞl]յd.c1KޕUzِcx{O핺dk}sezW@i@FCf_B;ibN[Ǣժf= hh =t'k߯{Yi}`u6~Z=#c{FCBע+ʦBuֵWN;Fab >cڔWdkvm;빱a]EA[sSipzy宂U >D1<0~9</,~\l;TY荟"73y {2o:Jг|ʼ=vSol `]*X מSä[P+_ F^Ǭo=O j'w&ZQ[Kt GO?nJUADb+,>g]I=eU`׋<1[d=ydsuX¹ Y +\헩l?{br_f3#j"G1!X$gO}5R_k*k:.KPt%$9x(Zt =8p8AN`{oOig7Xi,ʇȷQ{̬ y*V[z  "kse¶fzHvүH>Kbsd;o[ ^A='9VMյ*Պ54Op$LnzBXج6߷B% eV, uvGq{?Q>0#LLzfTDDDDDDDDDDDDDDDDDDDDD jNO%{*v[_U˧ocpՙ]6CXoaGI==ӂj)ڔֆBB8 zL|w!1\5Ҕ3ED}Iיg{R]|Ѳ먭A$ ~gFYȳ1\ࠓu:epZb|MHE$a{QbJ}:.A;z>;H~8}آb[v Xlw_3kT& l騫ômltu`dfߋ`Sfʆ:~K~rC^W[[މ{MK# -6Ƶ9eM(dzl/#bUZVP V]+2-ESY[΃P 'L~Y&ˉFF-'%_> #[Cw2;X;cۓZUUSl?+}_=^QÅ<:t@v;H9 UaCESϰ﹓.͚؁q +y{7~ucȤZo {#I.0ư Sh,>>ߦG/!R.3Tp<-veKb.54@Lk3nzY:V=#m=A@S%8r9'j.P֫Uz J!N=^7+zں]z[j>r3]2XzR +G}^߁b(jꦔxR4}5|Hu֌YHz2!xp֓MZQRV=!JxO6V,+,,gȼcf +7R~5^ó7'+)KE(JRu;ܙ^T@ٰ'[M~nRwtbTwxMǿ%bUjtWҳփ̍}8<ɡ.t7|/Q28F[VM5 ϴz:JLKpWU,;bk%K6* }>mYbhgQṮDyoxx6^V6>UKޮP;XFThzL[ȳ[(./ԭ~ϗ|>S%Qf*–Y[#SY UAyKb?mK=w$"""""""""""""""""""" nc-؄k+!ݷndk0V܄&!A>m&dK.FTn*@`*Ht{H\.7(`=hI${dMmY,N4}GRܟeh$|w cgJ6wwbk2Y:Ql?VZp2jȷ# Ӯ+i`GGWK@}Ciū}5V :'Os2=4^޵f5dnjD?vO)']g.̫GeG{ zo^S*c $](=ifdDDDLTK= + {.h8ZƁfcIf%|&{DDDDDDDDDDDDDDDDDDDDDDDDDD@ncWR؝+'G^@fH;k[e`A "jE8(9/^FAג7MM7~興V%7RXeۃmnjа7I`<:=d>oIï/QVK-F^I}_NO>S_3+d +Mz+X _(eܬ;r(Ne ԬDDDD: ԬDDDJob""""""""""""""""""+?iY/"l.μ>zʅx?+gR7NFcZTfd]Q`;[NGC1ncry5`ñ\ҍun`]GJ&]5܇kb+c% %r_;.UK䤞Ϋ}=Ya՟Mw <#sSΪ¨*PO +yl[V>]#Ȧȭl+e#Ȃ6<qɳSo_|Sx-O`Xʏti oGA!Pt0#j|Y7/W׾mAbE{>ILc<ɪuS VyCOu`wtHGfV+l:@א;ȬX*eK[מgDH|AeN6=IOS9VzSۭ6 +fg595[jGن=oqk*fVEɔ022+CeFO +#Q__GQ:]]?oWm|f\DO3w- Wg/p%W&fd8pU}@*gJz!-sEvB i6ucp%-bIu$Mv/RlQ~-0sFNMt)5w֝^_)"d+)"+֙^7[bq!I!kN$e1k}:UMBhfϡso4U;vFQg!=TUiMG:WzbOfd.'mX@;=z{vKJ?eǨ!"\yrOp' Iľ-×`]p$d=q^Q~=VxozǰVǫV+z6 e-Qe`A edk?j%koW%XND|}C +rd@dB9*,Vv`23|j.zı+ҽz-W?{nEv罴uۓRL&BZz{%}è (Q(+Pɉ+Z$w!e +SGfI~;;~6kY+PA +6ꃮOH\/*]WYGɡ.}yR>H?xdk#%Q|ik,pHZ3}ֶ033O~޻-{62(Uw='aHwUZ3*[u؝FS(rRٜ2 bY8 |?^H'OAdeqZƧư+*ҥjfmo9RcJg(BHa{I |N`8Cu x.ߥ i>VgfKjKXO;>AwCXȥu˭ M)-0x};rrtHpoKh}f)d LoA +/OQ`:ndcs9nA>~SQ'5e>sǜ^|/TV =Dַa:hS1=әU%פms;\PJn{;tٳܷ]gJk'cGq333"uڊ ֭ 8{;=~:ZC~cǤZv} u1yg6j"Uj>nzNNOt^YteC]l=%q4Tg*6u}gvV7S'z>SqW)(f pf dhփ`>)1Ӕ(.^uF2a~FmV3Iڮ~>S, JɯySxb)EP@N~HL?o#?9+uK]Gfc6; w'p Eg#B @܏{yl7. > 鋈ЃkSˎY[hTߨeja?\R*^/Pӱݏ>3fpWmZY޾kQ+>*YFdU=ѦQ]rWbśw;;8#pzCɿ=;{E]t5WmVs8g,ZaOa>ɕu~Lم`"@nٿC2~NjQXX {*y%0⨶ne%RGC&%XH+zT +? n&{1>5!*hC#sr_&/ UdXU|HxϭWVenP@:mD͉QȡzC=:a#2b""bgrtBH@ z2h| ԭ]G;֏q=]1nZ2* n>:3*""""+J%]JXEױ~[>SˉomlWͭ; xr5"}]Y/%R-/fTV%q2(QҘgaQGpI[mJ3ҪOe%vlyL~7z55Cy )$sKP?x<6N%{NM'W*:/."YNwAg[U6TSz9cgXw9%oHI?n'~izdE[XQKܪ ?t׳,°&F-?IJC"Z:߉Sr[+L U$ ;-dܑ(ɉR9*fǫ`Lq9eaxǦp~rM/2p oս=G߃ MZI=#cbV""" ?On'^5IȐ`fKbVk~Vԍ ~["x<^gFYYtQe +i#R=y̓tf6VԞkmO~-ff;v`e;y O%{1-$U+YP+ ֽ&nS*8Rzm|'!ۈF1 E$ @u3+b~kjdIJK}UeFy"d2}!31eZַMLT-բ^[msEAgP6ZՄmZ'zp8cٞB :P:}::7/~_WИ}Q^'s/Z e،V?WB>Cgq8oK%W`aj;{+cE8u=_0>>sˈl⒪MuSPt$9LFϠe]>V}Ju&"ubmO=fV%d8ğRz%λ*B[H)eB +sUĩnn;|2y"\hQ;fVCaCa~,Uϡn׵݂=ML5Qz1*^>EwTҽ;228oB1 k@MPX; 9 [m?GAu˫x^+*B;x}1yGPbc^In@kH$nLu ,F r/tF;w2^ߑF #%WKvYR_`Aľ0oJ!؏Y~K:iAo.^m4Vx[vT0$5"C3.˰]UD,~2>µMz!۞Oׯo-U9+ Vk[u'AU~5ju{ Z+]}Vzz.qg'h{\zk VWZÎ%kIo/T2{`́3qQrMc5zԏgCkH'֮=I!}ob`v<1+,J$ l2~r׀H5[gJN;>l[1zT:I?)$t藅 +@J;)K +(%I*u5ǩ]O/mJ3* @:?= ,z¥ccz:#cte)+)j5-} +$]?y} N~e]Cl + tDDDD(pA4A%+EB%c֮l#Hh@@DDJ*S^ : 興#0Ŭ" :z\ u) 9qt%^ŵM;}k]4W&qխk@:V"@{gg+UYVٓW.=ǘל{7/Uӕop8Ine!rǦ!j ^.DT +{̎eeWOHvU: l̸ Xuv:|DDDDDDDDDDDDDRgv + $YAYeN˰zDO6ֲ3oosyAm9B}HD7*Q` o[[7k|%(T]N}o&Y;+wtT1U?&&hK"sZGhRpr-n(!xNMɐed2R<#`$'8SV o_!rA#sE}+@.~PLN *Z ~u6[]*GpADDDDDDDDDDDDg`u{]biue'옞c|K5x@Lr{V,jT1Cc;)]FT2() +$}$B}?7?$w?ZKz 1}z5sYɲREc@+1QHTN6f&YnRN) 'S`ÏǾmducj'lz2l}Z(a@#="QC+ =*!H +'m^_+wHG3kP5~umiG{ 3_Ex􎔭ozhyiXw_!jlWM@63]*$hq|~o U5+eWZt;bHl |U?k-n$wK(QjJ %[}.?'"^Jr +OQϸC2""""""""""""$(_ &$Uu@q|?.˦9:tX + +vg؞ U}[1zsٞ>[*r 8Y^6pj +&d/[NַٰG0y89UdXːDX/H.7ϰ֟Ȥ)_^H@=|[B16R(P<ɰfH<>_:2H6֮@,Vy0AG2"DK̿ UKcTTF  """""""""""""&>nyz$A)j{쫠cr5ރԌN鉊uz$Y'd{O ִ=yv_UIO Fd`s"O TDDDDDDDDDDD1q +2/Un|>GKPy̩H"` 3(̭.:s5Oאٖ՝J_IG]a4=rldufYGT\hoo풼6sde2QZyw]v%1˧(ޙ]%C^Ҿ1pjUN35z37JzWt=w2=鬋sqƮ|M>JmYnutA]/.'ڭV=jՕɘ)J^=~tDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@ +endstream endobj 200 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 67/Tabs/S/Type/Page>> endobj 201 0 obj <>stream +HWM+}L;"d7wfq 7#HX"@?E 9;!^{fM^uz_i.|:|~^&izwa&kN6kɘy +~9:~~y4._Ï!{:?̧5~ȗCa^g _O pYY3[5-/gq_p-g-X|=Gg"I9''^Ɠ*s\ߠ` 3<ELpr^O?U}gq1J&-* bٍ4!t%oKAPc#)ߪ>O&! #M'q5fN[fE~4%\ gJv0);b76$. G +ߕ3W`}T3o.֝ND".@qWOc1)s8HwA0 +aX\TobN" 3 ,|kه%Y12{ MNF !qœu!'@ˈ{[G$,v$>1ʺv5fJ2{4<֨еd@}6ʬڑ) Ў$-{w!]׈玣Pmv|@0@JvBZ>,] )6"aju VnrKM] ܷREGp -+ZknAeHW_z)9yjH]Qփ힛D>3"% FiV*S̓M:)! fV$Iu u1:6ņ$ >run_0v&x/>BUUhEQKejr!wMX5T;h _6+T02XvyO۔R]=!(KW0ev%:\+f;%^|XKcnj$~a;(G,|]Z`",w !aˀ_Ų1~ʥ=~HͮbA!iޓK +4՚$P,0**4Cr‹ZdWyS9-s^n`ws/ IPocQ3(FKΫw~7Q`J3= Mc̦5ă9)wIQVhMld)͎FObqD|)9ֺ&! Ks͐,^_IרnMpOK%C$Z>CʂlBjb +,$O 9.S^erz8I"b" *%dX\KƄHCuSRhMR!B\v-*o<&0+Dxyl"(U 4{,ߍ7T842! +{дImsuR>B]8O "9ݰmg-&iz ּ\Po*Eͥu^Ê1\2C^5}5ڤ7ƎeybbGCNEZKaщċrajr!;R*Hh߳)18'Tlɜ5LzFnrXq%/xGsvZΜ `;L>92Msr5bj0n]|-7麶 9`MRx9e2 +'jZ::W'c:D'%`MG65?h(UoxB6=l3Vtx6[z\8~t7TTo7sgV?x,, ÑLXX+=Սf>9ʶZ:N/q{<-ZCޛW8.#4! ˩o$tʽ\Ζm7yh +z+^p04t)ҝޔ/!ȋr90J1ZCئEx e$R\=|v7ۛ6ɍw@?>zt$e4ifvt6rN?=Je귕}CQhZ}r+I7 +8K)Z:;J/M*璖K]R'CsR +C=:s0Ҥso p" v _H?qKJi"y떝eXN(wsM={/C|*L @ufӾrdUʑTUrݸ1_m Wo-zs(,wG.N.@-m ; h椟K +n.z`xq9_Nv<+o) %*8|G=%B"?.iߪu5:g'x`lfi!B>fHڅQ!n?dqon[mH(ۛUU +OP6p7xޔڪHu uykYU H#D1uޭ3,H+B $;) +{CtVeI|e;`";^޴`ca MjQ?!<Ke +* bs.\TJF0Wg~cD۳] +mgZC.LO6XzxN<鳙_Oc]=m?m=m3xew^?O25x_>q0yGH3&o=F>$i_P")jw!@;ȏϛ,ٻ|f긹<%qr+BJ\M!>1ܷ͠Z`U.6K Ͱg%tpxn^[,W+:ӏ GDJjME%G /%%s0+=\s ͳf4G 46=}ܺbS}=d ̯Uhp""iw.1֘10i&l<%=.``~H(j*=xן=x ɻdy:zfؽ_-\t:_Տn +endstream endobj 202 0 obj <>/Filter/FlateDecode/Length 5765/Length1 8992>>stream +xZk|Tյ_{3< y$s& IGM&O!  T|XAp|^/ڊZQrftxEjҫ'Q>3 ={^k^k>%T`ڎ1/`e({ U}ז=!?F'mUV}牔o{;lE|=F<FtK?LYl7.Czպi ym}%<mo]vd{$៉ƶ%="3*'ƖjY` R=mվnшdg'yv"Sc27C0R(VG2)h(hz~a{L.F%[7_okrMoU+.[mZoMw*+JgΘ^2mjBOK&'y.řggefO?.-Ֆ2vLrRbb6gTب6d:gNh`t\h +XMu4%`)5\41M&)UTUT4vAUl"T1}ArҘӠh,4jM .Xw'R81 d(-C jf<":NijC64)KkYkl\Bw+5RB\Y 3J ݩ heܥvu4/lz`A˸t&OmXjBhBE.Q}y~S w!͋X[>mIED*6nQpk-AS{Bk5!Z7"Ae7*6j쪿OMY^%k0lK6<6%N$.֑2: ) +LkVP RR{ +̢k\Ul +G-mw 3꥕hhEX[y=~Ȱd! KFTd~cyOЬ_-}\cOqwL޼Xm^̧46je#8Iv]2He%kr>~f#+0IjOvD/]wSnWjr/9$a͛ۖBdHq6Kh Vf>~QH]"dBcśqڏKdgQa6PIUBPGTT/B}ĉkMwVQT +I(&)f03;B_VzT\j ԃTVEa/۾xoOle{/! 15\pS4ѠfDзzT6F3Yy:<Ƴ C^:rL֖x%qm+$6!9Hx!]a4|Ro[k8""XpB@5a0l5Q WzHq 4/8ƒB`/6%fdo0QCN\b!ccy~ǗC͋BXfOHS.1;m)ح(JR_"VH~-rX@N\h&WXq5&а9[{].jgEj>12K~97F'0ԉ3*aT/ 3.U!ݙY./ThDC%vxl-oŖoH[=3l3J6K֥kW=#*b! ++γؙ;;"7s;U0.CEPaXRpJHQIRfa +)R ~fj- =Yppΐx{FN hvĚˍe(*bjfSbxRa NSr6]J$xjN)&9Ji%{KxĨEƤ&r4r31 ?306dO=8 {(w~Ju `0,ODyC)m*V,m6Gq3jA8#j)-Poo"%)8ai%QZ(7429)iɟˌT:|v*4'Z@ PoPp/a@~ 2 +ZVjfD]M_R"~/  |uRm>6`p1&iN6F율53?"]4 4#BZɻu#Q+ +e{;w)*={]DVPr_u-(Qր{ +Pr/l*I҅W26_(](](]G2NR}?RPz&88bV|Yp3 ʂU,x zX,eXżG5˽,xf~t`> NdAz;@;}R u!]>ЍJJ^L9+W༁X{JE:,x(ȸAGFG1Q pp΃;:u1p ,lsi]}c 2?.oaH;,%-sy)=+-՚ec|1o_~!n~o|=q?笝G22QўI3.8[J]<Ɗ^_:N;?rD99Deq8_wuq +!wT AGc87 tycJ! G˛lu/sx No?zėfۢYl6.jƙӥy:֬敊b5gRVyU+4k}axuiE.X[ 1nlkk2kҪS˛ +kυ+sSl^|ɜ:VbкY)fkld J쯍/U7Q#}='OiG57;Л((OH0d&': +::򡓟o阡s,=(tjCJPa0T,PYzA8rLj%]qtƜs +:x@]| +݀v=D;[q& Zڠ+ۿE.ĕjC|vowC[٨v4f(e[3Ze1 akv鷈KxU*l +[ [dz/l:}{ Dmt[_Õ8$_KV1!*-",-!+UE+]lo\d;U#φ)!ֆ".5oGCf`qV߰n@LI%%5F#10+SFJ7qXA 6-Q VYwXĜa8ņ8Dᐌ\"Xm05iՎfITT""؛vJԙ`-u&%68-~R 8en$?|(P ]34륧0Ρ>$NU mxR.jE1S1=g#tf:H,Snok+`&HCA˩vA6.S>_?Nq=FE:-l:X?GYTHs1 +;" u3!JuKzg|)Tbn_4?|3-ҋr^GcD.fl!['u!4.E d~B9g>wMߧTa >+{k +ZKwSKcel6vŎWه+YGZ/=/ס,L48 }"í_!lNЛ('=fbIl,\l e3='~Xy>ƒ35cg)qR58>O?_JR^vgJU_ZI<++g'dq.1415=eztΜl. /C;"Cwi!Ax(kpw"oX2b +X5Ȭ`kzv="f?!Jcg0|g: +lw?_I)IJ&Hli-m6I;%MzYz[zO\Ee'e<[^!o??0^2ɜh^k5#RŲȲܲr5.i>Gl;Mכ+y%[@d7b"?|>-6y$P|ȇ0W0d5'Sr4UH/[If?ȉ,K-Ȃj\i=D_[B/`Ob_hc%oȢR}俧3X{K^Mtv}@?l\`~{D&\m>ߤtBNw'3|`LzVdɯ$/vT"oҎ=VA|p29KCFy  +ƣ4a!_jeOh"0^lЍԇ7癚 S^CM}|IFyjsGFK-찻h%N1˿MZzԇE㺓%R~-CD^|onުozF?w/.oƺy+G}qb.>cS4[n?g͖(G&D4,tKl zPyO柯жoPMJuaQ#xM5)aa7bʕθinbV~vi.73ӽ1{{Kkh2>%IyRV +JdN-)HCT@6+EJڔw,}> ՜93OϤfԴrJM+Ǐд%ܼtSbۓ^V[1遮9P?7p_ +endstream endobj 203 0 obj <> endobj 204 0 obj <>/Filter/FlateDecode/Length 223>>stream +x]Ok0 :v&9[ lo_ L`>stream +0 +@&G +?XhI/(gF&9[ERi- Iy\r#dLi`Vb(k9cV<`!5bO~N([|!}fKf!9Gŝ:v +y3)M3$^9YV] . 5oS^<ҸjCB`py/J &Il%ay1Jj;gqZQVe'+"sl0+gy톆M/&phf=r@ـEaM+LV.ϡ"xwܯaw® ҖbeZhC3-4Mz N7CZUSvdSEhsH]H$)anR!_3CNj207ORY3cX~AdiϺTNԊ8%Q;P!!Y +/O^yh<1-MHxB/.SʫXtt&=/JQ}3Z&XlKE~MM)f<iXoewa5u,2:P^jiyy&~0mQ:q5~5E,DZHXyd^ϡtȯ]b ,{KAF^t[9iX Oq++Jj6@eqL62);3:<Enץdm7dwAH /8x2㝏v\B|=mMe>VQd;M#kFiV~,V8V৛I6Ѣr~cJU-2"kJT#9 H~~шfפXFVϻmZnw4*:w\!_ åA5Oet5v։x]U=] Kjp{H6_z,- +|s=%Z˩eFQZ; +v 鈈V ]=e!+Ɲł|I5xCLS=b{dE.`rIn(ٿ%E@@션`67&mTSSYqU[ں5T{m~@ȃ|*4N(t'z)i+ +#-; FqEl7(f h1NQ@ ÓG},SS+gʚ4}TcvO62sXz|{T/ X 1zqKoB12GpOOpXrjt nel>ǂ@8U?(JgO''ȝ)F,cbEWfӐ lC$Q.$R pkjjFj@Tj3l"Pgo,ż<̟0:Q|Bi)F0+rJ[,.!>1Ds [mUO>9yeWɩ)63Et,ّ_Dj+ͲZR;nKW|X=cav'uNgʝ\#j֡iҫ<E7|'X0QZ~0m>HJJ)BZbiw +7٬0f-&* 9DPjN`Ղ||lV`?B5y1[) V;O"NdC.ᰭz7>g,qb{Y$]2h$.Tfn/I50׻דڇD]!EQȗĚq[|(q<2T |ѓ_O=l~ѡ}Gdu0#SmSKm.CX?Sx@W{[j1,e6p`mD.`ѰP2ތ?v~Z4[O +i'/(6~}r{TuPR|r@i[3D˛K5w*}O=.Z,7{~8@2OGz**3]{`Ml͈͕on="}9"7Q'Pdr(1iKm5$ЏE䇁h,]1 ?*;((9U&]Ӓ/YqmcGD_Zt﯑+(~B2X(%"^Q]vc;?+D6-hZ~A.K p9/ s&]SMlCz7$Kf ltE~D5jLȹxȸKA|~@q#'M@UȰ&=o3YXxjHXTUu1Ak-(.2?i-N6ҷifw Aͯ 88TH`\`Zz(2 Y"]^*X&״rM'ĊGtyDIvMP$ Kύ0.ږ6w.5b [Yŗj=JmZ}λ|?Pkj;tT&^h{ 5mt}p Gi43\W7YavM~iagfE +p +)tijtɿ]÷C2UBGf pN"UiYHYgyAB(st#WO#@fT&B)/Oe8x>9~VP>,,0xXHH@yk +Jiؐ"b%&k.f@DeiZ92d\bn(t߮ ة_1l\O=-t.!1lt'˄xw9'% :thaz_oZbV.O=R^Lj0#hS^!uC0]ʡb :5'zbjuV3J,iL8(}}or ?AN+iPyDdQΌ‹=-Ӑvh/YKcqh׺xo>\QZ*uҋnzУ4;=/?.P1PRz1kv5(27H@Е;CC>>R6QHmS㱓O[qOajY<ɿ[ig ]9`8s! ;^Ǹbs}u?Q>a1#W !$`@@^wgeTtg]xIVpOA5S긜˻P4DBcD誮y釭: KIgis|%3|R_ff,lی ~KyR|N e8z%pI"U::I, k:2*wYBS? >gh5H`i+wS' O˧%ɛ#/F2[*=+QXz9A=k]㤞֔<DlX>OTSM4y{x3Es~crv~(dbõ8hT!W2m)Ǚg`9 } "b~++7oe}=G=h%_X!0 nG&ުv"@[.|` ҠbN3~xysϏT㏼0ULϠ I/sւv~O1.kSzgΤHD%Y}N)_Y\YNd5?٦Zt@WxK&Q;iqCCAD?kؗ]G)2KǏ|B@58ytCW-N'np7Y.!\MtFqՌkM1:3r +7%Y"⼜BxRa[-~1 FfKIV(n.X@F:$vHC~­ "S=AW#Q^\ gnrT}O;U|GbWyj`vJ%cɒ)d Zy71Ůh >MKѭb˲qn_ /9i.r?D(K)˂Ss'5u꾃^$HcV` U6-NܛȊ"!U5j +u(t]YtgiÉDT#9yKK{"Mz" )PBrh2AR7tMލ3i_܍cn78( wDǏUİt(-Lkӳ,dh"$gl܎/Xev+n(yC+lp +ruZrըyP?~#(Y7IBkֈz)=)4D\.~kYDIpϱߺ. +aq%x#YzԳ\Y)*e(Z|"s2bg! !i )CVr%D?ƥ cxDxaBWZգ®ehg'j9|P9hۻ꽥 pϘMs)/鲓u$KtURT;=Xihx% @S<ôؠ<Р*V=lx .%Ȩ_z("Dfr+ +Kaqz~c +}M> 7 'ܛ>MQ2 {$x+:if Dg+EDze^lwo pL@Pf̆736 Gjj 8P"YA(3e]ڸo +I +N5L+G=km ႹUۆN{o%L)w}9{\"\'kyxJGBT*[:6%\j68N϶RH&SFv8:Q8<^L@םFBZr\,[D#HͤJ|@ m 0m(88]ͻ9+,1Y.`nYmӷ9_p[^GhNjcnz]?%}ϘUG3z\a]Ta*dǻ?j73:"Yq6ϰrWHz99/Px+YICkA +ҍ<5!croV +a5J9KiD$ưYMDu(Ş/'BdD687 +Y R}V巸rh\!q#t,^mL ϊr &Ϝ^܍%Ëh̽7tQ`5!19[gтaLu9 rO(*(X8>aˉHoۿý{ -plCѵL|['%j88I2, ,W֍ú,^ ++ >hifjRD@v5߿?[H 4ʄBW6~޺pBrV4!!¨=]LC:AZtd@_ѩv[mF&f92=b-4_"=1O׭T癢J!XT6Hܮ:ޣ +}S' ψ3B `t>Vk <Ǐ`W f͊>Hp;S !LaAYk{1Mk`P Y-x6w/`b5\hm+w U`XpDΰt~ +ϸ`.Lnx*.Lv#3xIH \ ȩ8^3 pM+=ŋxKs^]Ztahõ#Ϲ~T -M?$#Y\~-J#60*aK꒘eݩ3m׺r:fl:0l=23 8-tpSr-3j%\Qo;"mPz{fAK":2%PKRG~勧i{%ğg؜v #F9nԯv0hzJ<' Jɚou?e=b9~{=bȯݗ&Gԓ >M1)7p{ +ތM`C \"!F]Yl}V((c#TNo/>䑧}b_FY&rs p[+N_Fs]-MHz'or$KDwx(ʆ(/jZkafrycRemi90ް|Y ?ql q݂w,I$nH@;%yz"a?cowɱJJq˪7l^T~=j\;tv6f;3H(+ ])范}v4Շ6A8`GdIcL/R2 t +mm~n;k\uD2qZYĦ-^ + +^|2|owbud$2[@3l7"+VrW +j;qǼxP Nm5/=xn\$#'J|/`݉=f`m_4+lВ)J֞P}8"quʰt\q&`9ߝr:o<0&,7͟FyXn/!iFmޠׅGg,׀'.eY;,}{E=TԾS[Z埱7RUކ꧉۩,L eW޵]nF Z ֝2.Xe=y/mӌ NRCsmsZ ]K%}l%lz*Dn]'WˬF ! ⼈PMN +gC +nuyo\3/0KByj|ٳD*< te7@;rt%xw(רnx=2?5ɽ򅿗cQZhL~u!~M;w0$ыkEJҕ6$IB I. =HR[[*\rimSfܶJstdPGTr4}' ԯ^udj&gC1`¾S N42)֋qj= ?oj؈)Pwm,¯$Js% +YcSPR?A|$3oOaCH#Zdax"/57zEJ=z}M7NM Ph '//ssQ _?OF86l)ȡf~}l%I# v +Eݍ`5E?WΆsNL.]h!Ey<?g XcFk6vKV<%׈Vh$,˞ЅhQk >.`cWOUW&)v֍{]9H OTծ\S V,L$0{8C5U^v`V:r ݧ'Z0ΜKV2IZ.KT}:mcRYȠz9p;@1菇Rϱ-oߨ@Cʎ_6u2U{!N#.z8^B}+IԚlC gKv˟8?|ҍXrD 6$=%N׺ ݭ4B}*%+&&E91PQѱy*#r$~oM`?0)8G,nԜ:4`zs슨X9)ґ`ns&IC h?oeE 4˩y.f2FXAގ\/]3Tj'&0@p?fr[VPLFq1Nўr !!OpBSyHmYo"N[m8wrؼ,D_.᠒ͺQcHCoLw‡ u^-f7 6*0C97'jrNArY.΋y⨉_nKQpp +dmou Pwe{2ԛv#Ú HLfPP? ^1M%V<%%C&&k@هR$-o3`H9#x23 '4g_-zntGG 'ˮXeBKXMd'YfsAК >aJB5wh y$YeZ>1Z +Ҭ+Jk"0 V6ײX?]^-xuܾͥ곎/M֫{l:OSYDYT0{qRTN ]w9F\`1&ȠFLm[I]T(do?V[Ԑ#\¹50x5TYdGM3j03,G4 wOeqi aKė*6WR'AD`ͦ5)|KhQeصV> +q|+Ek+͛rSr}m D(2l" M +\h:L0uaXֆl_UE,PHGUq͞ +9b:]~Y\cCϮ( 315]D>UcV9;w[@٘%ʵ'xl~n,6yO}:Fy2>4;uu(˂E1zhQX&=";Q(J%D T+ d@\;oR $ ޫ}k;Dg{;gH҉.Hrv+X1KcۢЮ& O9@Tʒ3WΏԢAjңd;lV|Dm }$ 4˥ 'uxApS"c!+~?ٛVp.rt=)(#CcK/5Z_+ɖ;$ +Z=sH)Xrvl.fjcY9^53Xn*LRbSʱQl k Y8W _.|OZ3,>4H;m0iצ1m*)ۑJAEXX%WI6VJ(D782m>,^NY䷷ &[{0CwKhĹF;!с-{'?ֺMGдNAerJv95WoZJ}&TIbF&4b-_(mʀ ymR$][Wռ(AiӳO}n#f!;HX݆low.($ + +B jӥ#(?[zRO)y<(~aљ I!dS2cxۭY9J):Yω|Sm<z'^g:" iocX9}O3E\^km>jeyYx409&~Q/:/2p=A=%^N -9SfZ؁ ac# :0AI Uqͳ{kC&]R땷m~1 X\" +t0ܚ3Ps۫rzؙ^g5:ec 8tAO/ +8Z՛XGsn:h/Β/L޹47]DA({j-ޙ岢jX4f(Z^I hwpO7EwLh%뫶:Y84#!I:d['elwW~CPrԑ8 _d mWH< E/%2Mu܇) d41AUFe߮CY_RƊic5q<-ỳC#ȓCA:x.v,az!$ݤ›h-|"F9Pw)dDu8q$zk(vĨ5e0r:}\y21ṵ́H@Dp*jikNL`E Fh2AZ93SSо2[+GCRX@@}`%?suۼ8-Dd]M"-^At01`R' \rq. +`;z4=m4D4U3d[+1GnUkae]ȿaKF{ez&._‘ܝʢSH^w_t j 2N18!izJ1Nxc<";>ÉiXM({7A퓞c,ZY[ٽfaRrœx59NhN7ˌ>w uy^2@_L=Hv*\+?kg:X$\\%u4T~SfG?k% U=u".r#XVYRlݏ7k +/N竏?c`(| 1ft)ل@W]BP`P'MEm@@P{\OjTy+ZǗW{;d+pw}h^PQN/kNT~-`_ꘂ?-p}O.#7#i˷D12]EXi|ܯ(U4,0jKg XY<0;1T Mz|B6`wc OA *]AB[:gSM1HtP=Mlch`>t ּ_(yvɇxvWKp|jNQIG'58:P#f)Fr~I8 7Τ@ ŝ^'V[Pv8Ad{r["8ʰ@UgBg{Km([3Iq2lpfw|"s;i^T~4֏\Ћ%뤊Vq|jfhm }/j7Ƹ9Le(5JRp_Dv)}S-0t\2lԉ~QڨU>F_Uγ* (VI}WüglϩD&0TK0>+x Te ԙKPW1|69=V44ojfC è*g8%>lbԕ9YBC<OO@FTNETPZsX]TXQBECiqT GoQ8Omj& I t0*s 8Y10"B̏ÛY=ҍN"Ɲ#/A*L+PKQkNH5eLC3 ATS5`5Q33giht(-L+|S3p  ?jRζGCӗ.:0ܼ*}t$x%ޔbu5Nb?[M + 8>[xoBFXYCf0df?e W39㦎5T&ǚzt/}h9Xf_,RVT=[tY}2N~p1 }_YOyҶ%'+RuQϳ)iW < +׫f R.Nb U'VptIPv1&=ge7R,p5>rLC/ \Y^Z#4zVC]耥ctD`0igZ(>"ө8 KuIw?PWY烣0wV6A2sc Ꜣ:ʊsfA2k8?BXW@(&Es9G>ZT%2ScH[?bъIJ?7g5Vz!6%P9. -PY՞.tX~Jʑ)N9nӥzЊ!<ƪ_T1zv!r,2$|MX*> LreO}oFu7"K9Dgx֘^`(a8*.1uHJsd;tf4]u,v!2(#:/laؤt<à9x%ٟDrHlILth@CmJ]Fx@PZcufE[͎cmGt|,Q9XR0rcB}᪘KϼMT_^ΓKʹ\&f<% + +bq$[.Oc9TJpeoO ;ۖ(a3{>; 9Še/ut0OǧZג|'ٴ]ۖSI?h|QFR& n(1]B2, eX) +6jsSٜҳ'~c ꭣ@MPO9ZamW7he#qTd~J_0P(-3ߴ]yVXdՓ1(3+-Cf_DkNw.P+k*9 ?AG^t8 _%S+ȜdtFu/vM&el +Rr\s-Z!1KP¶~@e7 Rԡcb6JL iOǷMy"i'k@R +4wPN {`]2ux5C+YV|RAmhEO~VU_+4|yV[Z,<4pO뱆}H;-R8}M r[T DiyKZUtWSzV;n [û w,BzÅU*JXJpfl3bW\v ( nb'7\͎o*!)g$du'?q)iUcfj\4H fV[P@VOnZ(E?߹ɚb|K 8nSK28ou͐ @~$S? +TNfT3mB$}BZNL'hd1\'ӣ􉤜'o&5tOt:njJm֦Pݓ ӇZiim\Y2v,JDQ;"UamWDI;S6Nr<-z&\nFϢ' %_WONVx zLO=_Iz95%m"4A\%𻡧T䣷B(VKջ~lA,Oc֭4OM=՜hx)d#0L5w"£k:y!ʨ]'{:z22P(>N~8uSgP,K/?f Z +U?c/?=MT]k̴`:ae Rk,茫i-8~d0W56!޿7DpmZY6&Z*u~2A6w0EaAS>P竏!,TTlحѬFVRge6k&85w*_I7vD4d~ǜcj<3;fjlOp29NRt/p,V]-6!l$Z(ۢ_Z,]Z7L]$^3NZ2A XK_(NjTt~@TU+y{#N.@&LNa3J^mabN/=.Gm'57`Fe4O0#?v*& b[-\j#Sil^pOLA$.i&n0eFS](F5o7meŊϳ"~Gd@K]2b2Hm7ONqP(@8uasu)/hV*uaUʚ)i +D ht9 fEfa6~4hր2 +;|G}谬±ai}yt6|{7* +)h?4ZfHfb닫f~UF`rtpgr_S(p\n+gJR雭ѴqAq#%xԽ`m*:MWyՑ x"LO 6/mLg Z&."iSCVi)_7(MڱEz䠛8{+u| >KJ9N9 Y+ݐ`zNA *w?irgm4﷯HD<܉&*pKVY?gȀtA.1SX VZONt#)\+y9ڡ +B*F +iQh{)d&]8[HB:Jӣ1>x~P +_ϭq0! ƞ\ʙwf4KF:SmdD\D%w3QG UbOVC;LAA FŽ;'Sx*kTt cn^}ä +eeP{F0tW*FY#ÈDپ4w,'z lDZWW sBkބ $] +{M˗EU<K՞ 9T ` *tO# A>*^}"_ V(#̪"6n,Q)zmspvQB%p +Pi4Ƴ]]0pz*d-y5Y"^ }| 0刟O2=4$8 oY?Wڮeh kDȥ^oL ̿PF@ +`wojKTM"ގuIS(A1B&hQURN8So}s WqOmnveF)ig.Ff2e)pېPDߔg͚dd+;zQv$KéX >DxP"}6Xx,F~/Ddqw]A;t'Tק"x:6K$SD3DzrKHla[MB龇EhזtTfKc~nă`50zN! bƬ..Qط-uw)[/u-!{ _ 3`*@Wa׍~#->aIX/[:I+qƒRCLI 3UDPL{44nE~h&JOdp(W#_Zb\\ |Uz<(E-оSfmy-aʮӱH*41V#+sDTߔ2\L!V*sdSRvK xvjgL +^pG~ŏB%xu/c8J"54Bu^Ṱzd!/e a΅4%eu8Bi#PZ©. !k@ QRvq-6 +5V1#˧[n,%m93UUd`~z?̃(I!Q\5~iO>sCAGNcج FoV_+?sIc䮌te^>5_(oYaR:c3sf 0>_CfnA@ 'μ p8op +wF0X*D}o h`Y@ TK-u2Lkn]ȯ4T i>+mKd"(Ѽ6ڟ| +?nDdZ`q;<( =6f1]Qe\hyAX@PPNTs Z(2gM_@Ź6 +7)',[A.'z5d=X~`&3V{Ʒ!p#'1J8LSB`e:6qE2o-B0-HRw6IqR`Z5ÒEeycgNa7I/tQL5mŽEl/c~)v%!kus'9a9lXu ':]Q˥WkC8M yy])739.)F^臂[H+}%Q )Wg{1˄ICӛO_f=AiJ٤֩+-y0>ؽYt2`j5R|{#JAu8qsC؝+7|HFآ'D O}b%rѴ|zij2lTBH#:RYѦ( ԉk bR6Ű7 zyS,2[Zu_d"&/|I?,ߕ7Y|P5$=*k4jG1KtEINcZQJ͙>y?*,a/d%{.ȿQXm"s9*4*qWFɀ;X oE<:~ +V$or]3q4hf) .zlit6͸|G!:Ok ڽ`T'0E\[+)R@f x={םB 2x+dnZ5dk!SYɗqV 3Q0 8ݐB2B`Hs}YX;i +BG{Ȳi +Mk!3>]ڃrIsC %SB%X$VkchȨ?M?LBq<&Yl}T.8KrxW$leK:#ͱ%xjBA7r͡E +p&@7n9E3aͻbԋWkΎs em 'yQѧLGb mi> +<5gvl-𑩭#{<:u5(MqD˘V{hN<黖# ~+T33[䌀K>Lm0 ?K\1p)VC]7uxaK#<8Q+yZZn5zdXHvp / ++e->BX:\5qV?yLm~|UɁL;Pމ,$J vOu<%TTepF5O\&P?BخbsFt$<ݶ{DLԇiŕi0#c:448`2OdU"V'1y/v_q:k 3 g.ΌZYa[n$~8 eYއK!iHs+Q?=:v@2zA7kq FJԢvqm|TֽdJr'6'ݧqx0#\Y2QB/g0͠itIUQYI)=r<]}NF>C};3<6.fP n\ B͙yyz_!dvr?$eº8jw,E0}L;5~ޚqA%o?˭}v՟`ԓ%_=pqHZoeúQh /36\w/ &\i^%/P?ql65TsE-($PI<>=}!'([5m9Y[:0S}\g}ُ@'ܘA]gvQt<ӛ_MeVX|@$L޻?"rJCT +`]AjuFB ]ЌWh tnE:6`=3Z-ty8/3Mf?\WpSSwvr"F`Zw>&IwThU}b~h]z> sKm!H!c<$$7Ŧ>P6߯76uCDEOme~Is*\Z,zpi`+XIQYޯ]& +/ <6/?枲Rra1GYc?X5oh-FD4:(92_j۪Pfnh]NN6j.6z8@/|{dB0CK]6ԁ-V5jP64x,֬ Y^8L<#c/R1Rpz@/1(chh[4;Hq^OX:PU[>FJH08_֩>vպ +$|j 5|TFN)Kdɏ@27k_u7Jݶ,u-":b#?ؽÔ-X .4/paiV Ib9#G뛳!'n9&f|gkd]t +9CvLRM$ \ZDn!m5)sLd:DwVɩi\ +ަ Iʫ;7^[TשUVɢ dȌcL3gFᖕNǤ{gHs +h;uJ}6> zT#楹dC9d3 dZ$O\KS/@?-Qf;}l'oZI/V5):pE"Pxd3? +XP)h}v&d*R9a,\bJ  ªLbCvE;%un, .c.'EӐk +77jѨ:I,6w.5d%"a =eC(e˂VYO3֬asl2?4WiZ5Kϼ*X3?#/<]osھ%S `ФSd츖%+kmKnuIne71kB ,:<{4 ѡ̎}5FTzc9¤So#S6["WN;j!\;qݴ,wU!9Po,m|]}t8m2Eҙ kWth/H;^<ZazgnC}F._)x?f!(S}Q'͗巧?J]$ĔCZf`J8KD:7f ۸hB@0{N'EtFZv}#ce|,T)ˢvf}8!~I >M|bSIqdWlwmpp\D] htOysQ1\`|d]s17񼞦Y g 1^@!سNA2ȹ63ц^@-9R@XeBV9$8μd3%f?Ц#5çMHrWOʆa n'۹;[Z1z?U8"sh(v3^!S PȒb~ + Nz n$ oV0( [lTɛiƒՊqܰ%N&Q*e-O\#xjisBe|k- +O|kE8^E\[EqL1xZZ!=/lџ8a~k9َ@#zK$ ɟyi`KQ #O~)D oM5xCrvv'߸ݰ#hwڿj6fR\!M/cGЋ^Xu{@< +r"xbvSٺ0y/{>8D4&ڪKGY<̓5Rmvi5 ® 1 w.Z./?83+V>jpRHu?n +&9&;qWbS #9sWat7(|Dk&>Hf9ŃRv-|n2$ !jKڧ}Q6)Sc&"sMC9yvQ_QEAj5CE!AaDns"7sL35hWعqeYr OI-rP/M<"+n mi ΀I-+]\TjeGN s# RD^\S:oE)0\b|UrU{鞅7lUxύpyܬ+ I:BB˞ {< +?QR_s}Tdʯ{yU}'3Žifdm^g$rL(@WfЭ^83oGN+XWo^8H]qj%Ѽ cmf~$AӬRqm\Q?f*Yɻ[zSh",&VsQO=o e^IxQeL!op&H$$9MR; Vb +S[˱TU|fQدMN.?_-p%+ReJ.7R7"Aa2Kɜd"s3*l읛 +i1}m^D50F{?"f1l cM> +i:)(l'<!-sU/[ʷ(>GLFh΢"&;%K4(KJ9$CmlPĠZtM:!.,]cڵ;q):ӛhӧ蘎3,AdI*7T缇6Ĵ0{Xb ("wp~y9 7 ˋgF_atv +I}xI"bfjA㈅iDrd'mەhTΤX@%F;;P-?W*0$ :YY>ŵѭ6D ww?H!TTF1+[lMd{EԩUyRab*Fj S+mVfA6E{:]!=WnTQ*.@eOr甸ߥZ NjH ]=agJQ'߱ k6y3K6]ʣd%VihRFɳ" e7ӡRM,[)d\7YI3r Pل7cCc)&E*j.G vVا*QO|bߚ^:SGbq}B'#q?, 6oi{RGoޯаAג-C%SvܙRi>V +D#&B`ybyr*}VKN65ʷ0H,|o w )Cw1W:+)Ѡ//Y+ AE^> UCR0.1rw1$&jE'>J3{/!b.PPygm/,`eZ8$iMpw3 +m*G K \s+A;W*i mB؈0Qq~V䄃58p Hz!Z69A{QX,ad +Y^׳ 3wSΑbzP? ߎsm(K|q;[N∊Ija,A F?)ɉ܊6y9x&WZTD/w+&篮+Fu7Tq< *An1t2 +0# c_/8`'Ͻޯ%FW5.CrCJ^!ENO̩ "@Nk#аd +2 +P30>\#o'~yb0͎Ǧw0<\aiϭ~몾erug˃([gpFId'X{ v37zrlrMT;, A`O3cUE'(֦P8צp32ģ£d_S& ʽ]A<>; +zvsU6TJG!JSʿәwR}9ÙUW5>ˆV*@Cdn7Dzj H(Ck]{2|w.`)EF/Iʧ!Yo 6}IOeMуHB"G,f#p"Qo+r\Ϭ\0LW09CLsgbN8P'd]a[l:Ը1[eԒVh֜5ƼeS7,Ixj遯@7fk^ +&eqןxDJdYʷx1R/•zJJY@ͿAFG̉4j%ZƽZ7큽UeQ^1](M[=J6"xK'qO|7.A:}gm5LS|ȒuR]s(fj7!c{-Ong=pݢo=rEV!NHwQ&@ye& +8x[Iyf & mEL{8Kn33 J_r?ZM94 -'Hll+ ;5k@%ҷ 6 QFړ.Wd=A=5 2" @tpׂameS)i:R5I*#blUe.AkfgV(ivUQeXL@6-Cw:y9bWfb]CnzՙZ}is񚃝 -L&z3iqm4<\Wbgn[BM.*$'A@hHjkdu]geŒ?KU7"-^ m!CH][[P +6p`eUzz;7K&4%.R@n]Π`6eXr(Pߴ_GX) +=]}&D{`mRƷ蜒F5[LI&.l٩R We %AVY4j<+EEg;8y8{&|ZWj7*ry׈? +SV^E(02W;G_vb|Xi 4!pIM)4Zs{O&s)T3 ?H&*ClJg ߶|`9KdRK4[~}B7&orXh|\idᰬZ:^}Dihķt9o=8A9exkj+-€rԓeJTPVc3}=1ISy |@9tSt +5/bgQ+[2t =4T +&f3!`k,إVW4<aab.VƖ:7R"cyu f_ v )|y9QM0 _Y8-eu-k{(]H<4Hq] t$B4 a=v9hypY@9D$,BblwA$r™BC48'+G# j¡{Bڙpvɠx¦| SH#^YIP> +R mY~a]K7c!xTiCuÓ"b~_ucfHV J +r4Y=%-ZI;’|KBnZ8xe7vIJh` +}Dw}L]ѸSl@Xofbuf0mU%Vc[}|I㖮JY,WTD!Dt%A)hrOIi#f. ѕFPe }SMK\Jgx&onbȩ++ٴF̊__s +zx2RrPo9–/<[2V:0cϒN/8Ug.~B|' R=7;9FJ!tϟLZƮ +BƟe(ʿJ + y_SEJ<ۍuMQ]-ڕol/N| M@ݮ7%뽏мUƾ3?dRBUGv9 d01!kd_)~oҁh$ ^-oyu:9fINevQ8=Q# o8T{C$]?!覃^p +lqlSia餪f~-KE2:b7ҡAĂ0 S)Ë:T˥ج{( D|ǵԤq`׷OQb? ,ΠRBtg8.8~*1(VzB׼5T(Cs"4Z޻q a'{$c"7K*Rּ( MRAcpu ;\٪41a>69UdJ3 *&kZJ{<$i: /2z֔ڒ],;ZEݳK]բ 3 +L]0=ϿE.rF#oSlbn6bk1&b@0,8:*7 +R͕VWذI4Q:+]%ɨZZT+$Yd|xH/,@#_mWC,SxIW@Y$UD1|gDDOmTc~gkwQjmU1 )9^_iUB՚}k +0*N Y_vq-jJƒ?;v[U->o扷~$u I}pK ЀF؁Ƥf5J +}RfB1;ƍ3 %EaӝߞXZz(iPqR'z SetKZ.'se~؉\a]!w%,My\=S:oC"KaX3NRNi#s5 / BfR|5Ph>.RUM٧)̸/xG!1e;pխȨ9qiRqcK1 *S/cy6~0xuA 利; fw^#)sYiP\Ԕutiӎ~&uLF;©ɸ6Wuez<Vrveh" +6uyŠC%$˸X/7魁 0lqvqH5u[,99~} "W7ʴp g/$|CKǣ*Diw^%1Y1.y܏:9`KX0js3c 1$E$¦wXDnyJS[}jf^+g_Rh- s(򅿡Xmoشl%1)n&X71uE6##h/z8g=Qa̫{~)muXq*~ׁBS^Q1M|!L+J)J W7`(S.~a i|5]]_._"ٓ0F◆i$fa#ut8q`8;x5^;Ls=PeNXYJ\{H]z6XChY[ pp\}8cJtFݻVWsbG r~P֖(R.z^I2 0],rL:Ci4hw|h*6c}J@C + Љ>,ǭ&whe +mzojO+cZ[.s|\L,âwn# "A况s_0_/BeN$ad2,}1v#ey7Q>F k}HH"'^5le`Lά2xsF YA8X8z}V$fio&l\#,guLs2JZ&mB. ]PQ Y9K9t U$37[HvW <-U9Fg^P uLoH.ɍ2R{W`j7{iԶz3&uEދ;P<QegNtt{5vI}v,ҭ==ЈK t7gh֐hx?4㼾Ni +@>pr훻z\u4͜ی !l:[JHWm\Н\mB@hC#=/1s5󘟤'oỤOimYE?ٵs?bȼ-as׬3p'ThCVxЦ"=/u9#`Rlx\tt_5ZA {xS./";͆ge@e +kיbϓpbŸsEv }{x{FO%ʍD)F8f+;b¸Z'doiiX#,w ȸx>~@I.j:L^jD$Mސ&-8Ytz anָvRm 39W 7>}]vSOnz3nu~uQWElaio^ Rvp_hXr!<;`I jn9u0=VfQsL_4V`_CQEBBD Mi\\=G3a#$Š16ӃК6/|CI^|8$VUtCǹ%ÎB*I =āpnokT!TR!" +ksV-A,ct<@H^r ![QbKaIbsFռpP l ɻ g\6!Y@jpzr#ltF|}Y3cD.xaLg>!FF?\`TEHNaqN0ZNWOdPp Jmwl)@F8szaWA$`ȝlX;LF4Vk.1EΪ.2x/YE`Nh6tEy^d{TȄh_y(לY hV2{EN\.iTUʝkkrN.P Ը-i!sѬ_r1k=p@G{ |#H5y'ǁֲ<,0)Km*N+ + + k5)i9;ӓg(.UYI?5DnA[hȏGO5국 'Z\L{gK<ʍz 7{شG^\"6;H͇2&bpQR@d{d(DQ:م)jcs 9V +,M.)KؤĵG$}]. Hu^ѻ Ҩ1G#&줖.78FA"8l sv,Ha=d +LD$z1],݄txDk0doTo(ue~SܕD?,<h S_En KjLiӆv( Y㤬ՕT҇7_\QQu:n79z~j*<5W_sD ҝRe4|94 4K4`豆8(Z(ʭ,|Z6Q 0t\FþK,-ϙIh{됭?Ҏ?J qeP#M̔P,TqeQnVQS'DWfѧK;Q%|cEKuR.QCo a5ߔ-MxMs gZ IFV,Ȭhɬ1@7i)bG݆ |wl ͙7Vٶ)X2*]U2t[2 s"`Qq;#}H5$bJ@c듖b# &7Ui1.9z@ CU~ll䔊(tdA+"Jަ5 ǡjo8&x$_ڟ#4][mHoBuz8(B?6}MtXd+pQfyŻ=259pbq7Lxh#2h)! (2ǰ>csSǜճ9|1<{&9~PAJ9Xe?Z9@jdc\a"nT4;acMաʉbUҺahq e4%a$|!VYdQ&BGAM/iP78)v{˕VInm9݆UjB_~Ϋ̵ńwb=c(cтv;V%8͋ӝ|Z"f sN ]d|!^<,U$$鹆qz?[%sĝh3ߜ0TE:t -+ʒbCMOdaỞ( .!kYvWKqe3 "3Apr\'@Sw2]kի lz{/o>%egSK|?&l.EܑdhH 1:ԽBGF ćv u {>WlXJ*mfE0_q+|n v=!k8El3[CK$Ƴ?,""2Nۤ;PC0619nc ;R㢕R%? +endstream endobj 206 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 68/Tabs/S/Type/Page>> endobj 207 0 obj <>stream +HWۊ$~6oUCCM @fYصXcK {g%2"2g$Ģȸs黯|ӧ?O?\try>M^'ijZ|zr˓R\`l^YO޻9}4/Wʮo_|z!xǾ ^VKu:;ygNoGr]Lj]FGG^½S|?狎6NRmK,,V>:yzOφ#6 6r't_nZՖkʚ6?7*w xQh~Ʋ1p]ޠNԯtG2kuzY+4VbyV +޻#ݥX%5v&iJP~vb2MIaFOz-XnK.gy +fQ㱑v }Voj'Q֩^/v2$ɿQk@YaS ׎Mgԇ7&0vDzi X.X4̦Ab> ˸-+t̋_Pi7K +bbju9ij=kA1MՀ\Pak)7E/"uJKU%<ϲkH!4-Q.z%iHw95bD]8Wf cRNW~(&feQ!=ǿÉCa|e"OwX2DMG 755O?5 ̬-PͽOذҍ\43Hg%yP! !Fty Q&qx_@nSvn!dK &Z) #.% P. ׼IVfKo:Bᬍе5-g;un4 B5F{W--ȒkҍKWpbE PT,F_t.!H&ܭj({;Ysj_r$٭2q#(E N( +몖p]{m=Ol#)u>Nfä~Z0aB_} $<\vjNC-GHlWXQl)^&cM3Hzo7#K~VGn@UTx5|vV4k'%l|M%AB>M,&7rf2@[Skye'c-ev&OkttQa"Y4KMPP̕y7-/wӥ +uB#d&qVXW.H{d BL PjHxU?;:FĢl5M%C1!۳nmSc԰ʝ>KK#mF{ZlyW}v9m停h4qJ )N9ހ>f=T#ͦV!7˴*Q6&ɩu TQ*o.|nf%p 6ZHlh[&DBELJ< Kg 쥑VjL0Seq0$oQ΂;^"ޠDZ8UMS)!Q_~.FӬF-%tY Ip,umOSv,N- % ٷ+ + +Rx k1m6AUˬtcdjhdqѓUx.s :QB؍Xz4 +d]I>oh]Qb v +/0z}uaٹ $sC4HFXSz@$͍ yVڌ >0$'$ $T ;=(E x:;]9-K"

    l-HU$/SWR(Ț($X:޼yS|lXYAC|* k+z0ߢh0fN0*l"H4(RO1-j^S"B +zy-elڲ֕}*?},WqSA~*'qpϱ3uȖW p{ޝd`y:9 +JG . +EIK.HFyPr‚UPJd*@9Yi6@ڶ^tmdk[*&m|=HNC˦(MQ0A\RY3P2 +,6qbL (1Lԝbew3hu@ETH~@XL6~tI {RS> +.9(M-}#^JĿGf=:Nzn\VTnlG-ͅ\;u"ꀛ\?j➡KչW\L_MjfAxwuqXR.`@Q^ +t[>"'])0w\v#F2d DRUäb&Di( fnIw1>"ps)EmGEf]=d4[&rLTuvq|`t#lB;ktP1˿[Ȓg;o&hqv|NN-v,'w!)E0`Ug4)_%X "1!h|siڊJ' !ޫ>銉t>6K/\0IIgcHZS{ lKOя~|jY04S.Pr ZGVj8b#j)&&2yi:[8\apC̨Il\*#>ME"£M~AE"+7+7hwCa4:oq]H-*1bCeI6س׈_ $TYeߦ=3<#aO,eYpC˃8h؟|?40TĄ!#"F= EfB*킱s hz"ۿ= s r1W#nkk*WW r^k9JɣC\BQOq+te%Dbd%^55c)r'_hJ1xt⏉dgpQI-{VIVb*I@?Ш~JJ'. ȻF/?>:vQ} XZEܟS,Ե&slJlȴvmnEMouڜR]/O6>Z;_IU*|t{֘[U thFɊڇl*^Lx@a{+pR½KZU%_r@`^Z&e/UY쿡 +mKCJE0e,F-L)s.~#.A-[ů` b 3T0x֩G0ȰU KYC:⤒Ξ2]Mz5fey{2s%*iu~0XT\1^lvf0"ˢp{-nh|Nոn+!<&۬TTyG:N>( +.RاVHk줘C۫}켥\ey +_h8h=$$tѷ&HH2Uo+$\F޻RM'lԶ#pwfmђ+iZdhT3UqtV"-Bޥq%)l{+auVdv>/Filter/FlateDecode/Length 6393/Length1 11732>>stream +xZ{xTյ_@9!9$`0yjb$Rg D$V8DUjzoqJK|VU`UX+sCna~kk~#x*hYZMo]ru*iwiwܷdLE}k+Yq( ݺ֐ў:) mfAYaCV`[rZBQZZ:n܂Lիֶov򕭫( +bQ'\,9)1ğ={|rxyfE1$mY?Ĝ+Xǁ_JR}{{jb"@trU+W\qemK-/ޢK .pj?7tw,Oɹ3gN/ȟ65OrI9 n5{J֘̌ѣRS\I q1QN,1cffj9"h&hK50ߤTŭEMUk$`Fg7gn4PQLG~ڼaNn5H}m̬ +ۭR~5o^H5LWn%17~ T6v1A!?kYՓ0Ҥ=IiX 5' F&F,B .xoA\2!FTLE"VjRQ _*Z xh.VR&)jVD1_*nrU"nuoUf4*"EaFUёAL_Ȥ.'?EzKA9Umں&lSy+S06U򤟡7Z|V:VWT*3E7ax!EWe.Sy1ޤinN21pjy9OIHj1Dr|]!X2dT?0 +(5G_2`,&ތ+w$05s69ij{1G.럚W௪TM?Hrrm݈e&DĨvV[Ym6 6F64yZ@2/WkpZSpocpOBBxuUP۟AxbVo `%2ݩ|U7ԚyնPKwʈMݷU[{{ﹰ0ƖIQQӇB1]%|b@ -b +k@NղV2zK 'n7O]}>ZQUZ/_G߮I[k:욑A yˬ]NRUO8z sKSb~T_V$KKq:2<&81.M}Y3]+ހJQ`swNԗ?Gid^s=\ǻQʑVJ;}Ze`}`0=%bǛujT}#f?ͤÂ`J_I[/Jm6`8`%?1dnXK43Լww`߸%6 ^|S0uoEDv陼O(6H>6,z> 5+HB^xFD]7uy|^<zZs8l> Y0/Xܚ_91n V !N#-{#yHZVۈfy6M=.nnJLz&οo>+yAa+uu(1[ǨO\rEG>9"5>]LDlYǠk'<=sb|)QB$ahwKdJ|6u){˲\1ȹi_d O`aw(6, -c:p0*G/LI+ň8܌ʹ~.ύ裸>Z+ၣEe8'7 6r.p=g<؝<%7oš3&5f,@8U+qTX_#B E'`-Zjd,Vv_Ѵȑ*X9ir48/: ^6YecDj蠪M*7}mN0>h)fbNMu}<4Zbx63O}k׸O{pd݆o"o> +V͸vb& +u8 "I͑['~۩z#3[*I-o˰y=|]p&xx/cCU#4~C[iFuQ8f%f" K,9+4ё+.\1ZMxqfKih|Gi(X|uXp[:NԖH's~KG|:fG A|bKBO ;.2|cY|^3ԒP&ޜ>HZ;p~u-ԊPuc#ޔ* Rq.E/ +DJ85z8>q\ĝů&U:hUK8pȦY,9Uz8FxUGom"vcP'+8d^]'jJh_Û*v"͠zroKچfJ{He'd>- _l [--ö->Cp޷la^Wm[x^[8` ݶp-l-lMmළF[ lL[(|[j yk Ѷ 鸠 =*A zHЃ';%&耠}A/>AA}J'-h}Ht["haAoSЛ W:O zA Z/h Z.he-2Ee*`p+p? x +x H_i; @?20b^^^^^(c(u1a] bXúѫFGAeͧ9'/JP;Z쁰 eYH.(]ONkK-~t_Z*R^guzD=[ /=[V&1P'lYYuqh:_#],IKKWsU_k%];8 }.)CFNEzAZ>_HC(@=Ih6䫁PGh <i12J-@XJ+V! Q:"RH)ZuYA4Ѩٝkٻaͣ\;*S.[,>wguOAC~^Y9ʌ!͖0PjR]sOsgYϴ /Mx?%.[2,=R!!eJcx _1R'#m #9HN Ġ^C$cDS,a=5uqG?D)XA+I8@F癏fWQNݏYegwSAb|sxw9v9]q\yIncmY"\wMP +{V5o ;0xvԩ!ǺQw;x:/K]|7n7FKӁܸ7`T lCgNNonF/7tz:k:%dL97-sfZڌ䢴´iQir~MK2Y*r'%M& kt?K/zˠe卞"=O_X_У O:Qfmjh!}f =HYSQ)"/ЇKZ?D/WRz_)݆A?6c? :(h9D[ڄBΧK1jDi DMV?A t_^y$utMvwtgvg;ݍYLې&y\'Gr]cӈ:d}NDY`gD2Z;qV۵LCߌY~yc`o_}ؔMLcXoO0>$gcs`8=E& Zt9[VǂվF{c =4N߂R7v]X?ZXODEK91Hʠ~~Ϳ~Y?𑢿:|Wq&;ǎE;N6QvAßV>!5ēkN^w&DAz +\ ?'':ΟУi}+mzǃ&4$jKpWq_^sۣ;nw^4/w86l!N2\-lt6dʣ*Z_NZ~s(o\iyӦ;f̤sQ23Mi@a>~s~}0%ex\)EBťҹ\mB(eE㥴($XF6S8sҧLUJՂcb[*[J&O橹iѩW'W%9SfL_jFO,U[:z;oQ+x!ο.q|/0Abvs,slKfgGK7ŲlxJSGR> endobj 210 0 obj <>/Filter/FlateDecode/Length 223>>stream +x]j0 ~ +IN=@Rȡ?48(!o_v ό/sO>`L0yrk"8{RutLDa_.=MA-O;\AwvȞf8}_-_\T$f]sDi? sw|)s} c5lhFVR/RBr'ckq7MX}n,yJCT>o! +endstream endobj 211 0 obj <>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  [!1"AQa2q#BR$3DSTUb%&45Crst +'(Ecd)*6789:FGHIJVWXYZefghijuvwxyz?괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JWv^V +x5i[^H ^U> >YTfTw## 88=_Jⱆj0>o%eWwDfA>^Jƾm\ʱqדVq|[N>[ gEt9V;{M2[y*f!TrOj{#z?UV+ؖh\:8ʲ=^+SӀ> }QA'KmRG A;N1`dzV])JR)JRw[شI< 33>fj.Oi1V]@ H#YWj1`p2GU ɫ 5&VR +}AJǺ`€OsPOU,{ 02N?#Y5d +]*$8UQĀ2A9Za__GIYTc$ pzߖz/ ++X2l {xL$ 2~\8Gd +ďRFy?JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JTFewqٕ26FVR@88>Sj=u{Y-Dx0 f,C;4*+G4LI33jӵ-Bn(9@J#Uى!l3jIy%ǏJmh +bیcZKgfD=ʑcu> #f&=Yl-,RakdZKI;OQ#@è$Zΰ$1H#'bi]"+7vHN];a\[ЪMC'Ved,@ {:5 [XaN!,*`w` a}ؖ{=LMR=ue 1'cZ總BߧR]3Zҹ}u-kM|nFo!̧"\ 0ڠgӏosb%A56ť )r 2sI`= bK+/.FEl~UTWQyjL<\ eǰbK|ʐau xyndgq:͵ 3T)ޝf6O 0=HѾ!h;ISqޮmveLm LI.s؆gX^&ѣWD8@0Kr{p;=ݽĮ`xI#Tro2$~Zο/t2E/a&]H@uKe1bH8i%k9?TvNѴe]N[iD1hZ&d/,zjCc;V &>*Xc(F z)r=_>[ȮT[ʝpA^=3]2i[dlآܙlI ߓµ/nlnǷ32 Pw'O ҴWYXI]Lnj^[o׍;mwo Jɇ_n8bRuacv5L9?jO$p$lnlSG"&f@ 0,B'`@g7).Pـ}|]VoΘt j ,Ǎ1،zWAn۰h]FvyvHX7LL7(P@Tb{ry'1@$6( +bL+6S In33c[Ǩ:]Z=-F7,00 Ks5jg8};c? e>خUmNӐF7{ q=Ŭ/e]ԲoPHp{W3A;\[QM$yp8>0F])k.☣K +~ +|a%Ƥv'YSxz;j x =9_xnR).إȣʆo^87Pv=&츝ȝ%PHP9VMޔe[d1ʱ۽ ݆\#7hiY^\ Ճ+{avl Uh$ B os󦍢hp_##:.T<.3&aAkfo+IT0f$A AW[I lZFB̨@S `2G$OĬHȠ;nl c'.n *[q^2xu/]Hdy6llmb['9=y,2-PEPT3c8UhN]=%l,Bv>U*bIvf\AtE߸o|.=^fdF$9̒9;l< +˥G^o,uo/J` +s2gAf[)[:LMU9;Td9'Vc 4C1S21f/%NҔ)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)J(`A`ڨ)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JWo,lM  ɨO +/0]îMݲV.Lv3Vsy Ds"Q: ԡ +}sڬ-Epu쫞F* +X#@'5|J]PI$>^v^&$I8=D/2Ƒ#e)zJ|Iqj]Q`b <l8]wYͬ dWR“F}^K d;&!iM3y#F,B2٬Ÿݑ]K/p$}cxͽ0MC~ccڡ{ˑD-!Ցd*;p8jyo 2d%7.=5{NJ3|{PF +-dd^j].)Hl0;H8<}|r20`}A~QWחǿw~.Ỷ{g4(1u\g*72p2@DFeV>;UDNbU < +nR+8ܬ(8ĪH㷽PFH2*uFegPgq`TKA"=0*~qAw $^7 ۜUwꋐ7;\$ʪc9=VEvH]]OfF dWBKM:KisC ȿAg[<V&1!@Oc9T:0e= FNߌ7c],{'Bn#>[aԸU..b]Һ2g$on&`^BZn ȌGpk-VYQ (gU$<ףJ 3VuȎTႰ%Ozs0@Q>OJ/ԴON$UHD\0ld|TQ].]rFU "pz=Em~=8j(?s(vu +qH=nTPmڍ0:˽GpH׎n?divGJ+LnX7Ubȥp>kڼZD(s)`z4@'H(o`gXG(pYX KmeXrO 5KFǩrOpȎVAv)4n0UPIbpu{d'0PݽDv&`̷7mX$G8%, +v +d@5H.c]: ?(ق { + ﵃cE&N7;7 9Ǫ$DF`YF y=>?)21GxzKr//K#,*6o)w#eTƐqKsč"$vUV*P$vNu,0+]ҍjw]9Pz~ney3-Uw5V ).{IiJR괥)JR)JR)JR)JR)JU+7L[iFWPq91XlZ\I"H_mf={WzCj%v6Ny5-ir[6BDVAi3!cF{T/t@ݓn#i|O`1=yr%${ GHJy_jm$khIIwx]>bWfʭw_/cMhvLz%=crʇ>~vJTHZ]!{G5TKsSzS8#i9N k'J."RA"{HuI2a]'$s{ p#ӣf`0 YN}oTEOeoC/:/=k*.f'IFvo8oQ12y@*xU8Η\[j\JՄ3+q/.iɬvkM>kqFA8f)$U摤8.b_Iq>#g$$$FҪ|>~t l'B=U2yøzŸ]*)RUJ;=Wr^6uL͉H FkWZѲo2D"g%^A\De7j\ 1d;9^HۈpTt ,3? Cs*1n*FèZѵd"D{w; )aS8ֳXƫ 䗱#L׷1 +j'9 ֡9'S. +H.bJ?GҦ;hu]#=\gqdϭlMkk'. Q2';Xq+DW)i`0G8yHdu!jE*>V[8{x9MY2۲ϸV#?*.[5YI IU_A QP-H.#B$VYYڞaĭiz* ,l#9q3r3Rzi3JGnK0ۻOsy<ֱIPF0$ޙ#ʧ5=0,s4l>'g,rӘH=u UHg,QKF߂pN m^K~-7,d1x RO*!h]"|АjB;MoJhTr! S£jݢX T@J6Z"iT` 1IKi`b~>SjM#Tk$bU-W$7aZl}D1qdC(=7BCcXyi'魒nE9*ssn&bXn9ߝރ֐gO7qŲ_{'|趚,wq UNBϾ vIl}*L i6ڠNdnFe 5fZiCNF,7]?mkYI% @flʫ]A q@SblFG0;a 2SNbDv;OkMct$÷Ln\g8'pxg],x}X~oa@VDXblqrr}3^i$pۄ[9"'h 8zL7RE`9-XQ6@#4E;20s^9ieq%QOۜ$qYi'QP"NbuiMȮ+E#]YQ[& *7z`̠U?""b5˅8%vݞsgcvsp=*6 &9rH;A'dϤ:eS0Hpw=X ccqrH1e*gn>|; +Y|L.E@:7l S9>/};NU(q)qkŴ+9-ͳG2I`YFN[&:’ǹan``g fe"ERՊ>rW*FFyd֟mqq>=JYTβ*ʥTA䁼gX7:=ۻ}0j\hP)11AQǧY&i)26.[9><EH +żҭd0̪H;[S2 Vs 9Gq⬃A{g}0IJK^Wa巕2vϮ>}:''*TI=Fm215s]Ƒ<`,dJ21e{UD{vt~ff19?iH4{[6ǂ6ݏsVh8Bwtw9W: +# +yrpqUЭ,4?{<ą=8 +f5tkCn!B +($m  c^Z|V%ݱ1$ҮPqȄUFA?a-" .#~(.I+hk/T!~D[9=Ge0nrFW9pF89X70,qx.|;azgH9ᙘs߂k.k(n!kyZ6M1lU–ơUT*0*]Ugm 80[{n6ķґ~! +d0.GrsϮk*>%58UQ^)J괥)JR)JR)JR)JR)JW60Q*c(5kuera0=7(#+ RYt)JԵ(4ƘY=|!H?#WRXZT +< 簯b AfX!%=$ڠIbon~V) 1YP&/a{lh2͵ + z2F!ʺS _JR (Ub#RpX>BJRbJR)JR-;gD+BF ܁][6z7pFڥ 8.Rȳ"#")XZ*DN,H`;GʲJRJņXd$x $m=uk12;qRC𲽊>g`xee8e#Ѓ޲)XOg%XÕ*FPn#LMY mD#RW`=I+\[۩ݣi#U4ms^Cz;PP[q׽exIwO4dw ,F&|?F%Ux6scg (3"|<`;rq^);{4)c2" {;f Hk$wa׶z4YYKg!{5gMrae0K]|NsHǥG~AP^ʧP 4;Kd_QY: khAqnF!Qې@S0VRG&nm<<.cf88c Z{kSu^.xdW"CG Jg ҷ^ " rxd biX프!+Cl|&Gf $w5G˛Qnݏ5Wk]CyF~v猗nn%]oq"x$IJ ˘Q5q4NPn8`\8y+Y,w2ȆU߂5r53a4H v;0\*0#w=x]xy@k }w@ +w~Uoȷie1)&BSמݫDׯPBI M` +9=V\hoc{r$!# `ޠVU޳5 .&9n21 k_%I:eXr>b)#[NwpEgYOpՉ_! ҤEA-dpǕf*pF= xYV4*ZM$ezlPݷ# V"`SS{{{zԕhQ2By wzCx#*l!.9np>u!k^j+ du]ɱ + }lo3$ӤLHS5{:Kh ydI<Awi< +ct4V&ewBYy~ui\T4і۵X++ b;ƩԵۻ!s댑s\iK + H:E]{Av"팦5m0RJHuPiQ+mJD;(ϠI..$ }<5xRӚǷյ lzPbpܩI ;R&uKa+(V"0+7(>g%ӹҡP-I +Fz+cA˪jSY[E,8;U)4d;O.rIXlI( sR6WWCҨ}lA##'kD.-cmZٸ#źN9;Wh徬mui{XQ,dV ;>yҤdh#yG!QAEh>e6Ck4s 3 9A]p4Y+B( o(Eݰ s^v:ŨX,!hpx炤=ms= m$ +mcP23 t]A!V>.TP0#ޣO@Z8G8ĞGf$9Ϡϭ[cE{n1|eїs*sn +u8.¢S/3X3}޳|5XtIR(괥)JR)JR)JR)JR)JW̏lѡ@UK|<7mhA-s4Iozπ[ǶG1T%d {ׇܫ:hPI,1L 8$ 6gPn#xb#"">nNX6Fg^X%;0lmU OjV:] m"՝L2q/PUH> +OT.jòXv2FP}WZjR2o:aXצcE,{H^u΅,s Եx)PǂFFx>M.6|2۩PmA!9+aRUkWRAomn LDɅ7zqW&4*o;!+,r+(5Ii0ڰ5m/pFxBTƙoUYcQ +gՓXlrAXbP2OU'5\na6$VUnzj66dcET1csc5xWzbfBD̊P4{ '8I<;{Tv^ͧ閫kkyQE\Aq׊qyksF]6Ҥ6 0r*sNt5$Uwpe靁9td)6L̦5YLFNpA cW>1QEpD{vS&+qYvgWXwG PIR~s֞E`w*͟LN[auɍ:bDu]}T^Y졖" F12|ÚY`b$ dv@J\Bn2|-tPE6X3fG,Яn+B#۽$۱*x9ϥcˡan5P$`"@[j*fO+R ͼc2fY^"5mqfU. -d>Tn8mn-5fHKp!mϧav7C$a.%x"D9'#n9^7zf.m-P[+D .mA!. [ݙ/܈-&+u9Öc =dWsUv-FO#9>+Vu+hGܱ+/Y s$T&[h-e6 V`H crkQMZ᧎WS*p#FMsN;kho[]mI-^Ht}wgn=Uv ն4=8hd|׊luY[040H1ܨ׳T_45(hX `hK!9S3ް ֩-C ; ;63qN8w[E]5(sq^x#wx"I#g7XNJ-zb3h!l7Ƿ>}{skwkƆYرYpԁXAmUG&D'h`N/cs߽aG5四餧ѣ'e3- n#tt=o*YO}mK^zV۷X| +Zo.#QLo^jJ.aFbH ʬ ##]KON 1FXTR]`|%ƍ](76UVS!|/%qs3qw:x[\,eݴѰ ؑ>ƥ,: gd > + K97d+ՓEkKH-HH,8,N[/ YEw ܄b5JhOYX$.03ɸw Fv\>犀f{ZKTd 0X `R%Pnm3 pI> chS +vo!׶y&2Y/ @-Vݎy#ӯ-Fl[eK\0'vT@sXZvuY `%6)r_oTk l C(t?A`F}fKY(mĘݘx'zw\/ lI.Ơ>r p >Օkcxm:P q¦)JR괥)JR)JR)JR)JR)JRJUj)µѭeRlu 68RqqڳqU*,SOa;!z(Oadb͊5ȹbY +?EADv$q^@(;[pϡץ*)U)T)LUiT1LSV](|4Q=8$`>|:+(P"(QڽJRS)Ub!uUH?1T +3q eRbZÊH^Q1&=՗V< #e0SblVppq|k,b=c,ޯ!.ʠm}I+֩SVbJR/toCtb(neڬ!@C# gq;n)U*ZR(괥)JR)JR)JR)JR)JUjȯq5vgսU܌8=ǽEQ#1JUvF8y^E} +O ܎^E$yȱ9[h' +[}ްdtux" "yw~**@*Ο%d"' cަ }@\TqMnFqg{⫚`95\XPCvm0wD*eլ9'_PA+# W4[PvgyǾ*u3Lҙ3TjǍġ!S0c]Gmx:zW? wOy晪?*gzOq*/:ڭ} +F@pI+T =@WfFyꅃ/^I$m(6Q`2bS8'汗_}8pe`L#g1}j~ 5U2pFAJ`) 296i[Yc֎Cm?)}jF)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JT~nvR8P%蟮qBv1@6GPRPWGlih|uS>ǵ{_9-~猴&XgQn[;FK 1/Z4[Ȍmî_픅<=N* )`%~5^YHbbFSWpQi&cfڌ&!zg4M% 5rl,D`zX^nmSlH W ^99aVf"ЭUa]<@0F$^vk5ZcM*8ݑsEc0Ŵ"Sd<9[[b rAޜu[U@3*nǟ|Tg涳!b{x(>G zUZdjk#-ߍBy4]cUEҫAQܪ:&Xx='SntMj٘ۈ% o9jM6m^uAq9r :csv`I>[%/wGB28xlnH+v+Z}v2ky +L}Vim$ozqa"f^091nJ`q{qR b9\'ڼ sP)偑c9tmAԐ Ri5xadch8%T;qCi:[.dT^1!`FNfq*BFԵcrv"2c!T~(g_[iEp[hd!UWp$ A>s"1fnneHorQH891T'_yx7~}ylr5 ʡrp`s'fi|;nIp۳qR𮟩i=-A9pai<UƟ o,\G%pOvmtu=G%LӴK*#F +F{jqivBd_ۢIHLYN[a9=*J mA]#3 ;xr2(BF3=IP}~Qo?*nq?h{V7[&ŘJEݿo3^7R:k>X]n$UNnZR)JR)JR)JR)JR괥)JR)JR)JR)JR)JV6a Fۜ1C e v]!m40^ +=yyzT[j;0<TU4峷?#3NG)axK+u鱾uO2Nv(&,n.*jL{kI/I1ƹW GdpA{OpedA +r1ڽ-4l+ +] !| JmhFf%UE*h# ӉMq鸚sHgPF5{k4Ec%kcggbGDv9{ =l}f `;}|0P=`GAj2ވ7b$Q8#A;!$JgPIVf-{khP2Id/ܯm;fOL:q1p1q?1Sm831GwOxJ$uǨvѴyrqݤox$;Rw3PIWE"K," K#T8,}dJ ೣo$;7H5 ;EoGm ˜`{dqTAen>ufiYJlAp +ϰ5i,VuY]92mǂā+'Lm4(f.@J[mlK2ObǓ5 9Ty&b`a9a hn0O0Í3ݸ۞}u.ư$U'2+\灴1sb73\F,f ɓ)n)YvٓѷA@XOKM/Sw  R"08*[$[KXCVT$ǭ_ل[qy+i?}~ɬ +:fUU``lH%  e|XrZ\v{`v{\ +P` |}k*L{)=.tWuTk: J!5"F9=EdR+Ms"ƀYgM{PUJ H oc^R^%3 Ex];K >>JR괥)JR)JR)JR)JR)JU+xU/uq B͌s=Bڷ;fF|,>^;sOlLE3#f *>"{nA+slq%RÐk +oX|}I+w8B2X.Gg=*^5dKjNax5!=#O#i y+R|r&#${_ ư}q xPNI|1y7Zz߆b1۲pn>ձj:בY[[ ɶEAX{|qS#GjDc?N}9HVݼt.73r@^OX֜A R˻̤"y"EyW~ªGb8XSDPPv1r=4d>Mk0vc;|׆ +ZURm mL!hbi..7ڼċw2I <|5kMq yLe^: FGγ t$k=@cԓgAymp[h )U*uby`I~ՕH^h瓧SAػFIݎVYyo..cxp靤S| +\Emd 1 l`Yv+mvg|9{UֺT!lj7+0לv5k:֫|̘(KuL{ =+lK[3G4PÒ +{Ӟ~9 d`N =V\vm-ͳɼřE}e69ޱc%Mm4:uB%X9$v׎ū~X62:ã+؃k3P΍V @gOe˩wY,.6YUbqg>5x'Ql5n2^V%ե--zorhCw_UbA#gn =sUu&] +zgi!A=2+/RIȅ;O/N76q;,{Ė-&9䄑Us{df.|C8ۮ-vu W.*?>Úɟ] ~(-6P$0Ҩppm)rA\׶!CU3}pc{gq%Yd;YGi=+ X6'21R0qXCIhVEtUˆМ`M}hmHX[+j h hLo`nTXN?M{hz]vaNv"x.5P$Rq(N~ y^xKk㧥yZ$^p 6N<>R$@&%C gKi<Ǧ~W/pA_BSyT6ܓ^-0zK->u+;q;Bҩ~+ '}EJFxbL~yV=ωxKV3-ǽfKvlaH`YP][ +g]{CX~k:s|L'1KR(괥)JR)JR)JR)JR)JW Ih(@w'p]ixۗ9c8"k xQX%kk^62[!aAp*)5uIuo 0k,Gs/: V`$^#) +Ձޙ浘N8庥9{vOM&C 9w˹5QkƆ8®ەT[jN+-Vт59$~eԁ pֲ죞?_5 -~u+xDbR,5]>;KX$xȼ*I%\Z]Ư0d1>޷m @YMq} +S0UUABFsMC~wtW\ZidW<{Vdk?eSp`? UFI8'xO|WHDzcGqWxϦ%6w+"rΌ${V#R<x<|ie;[|\Xʲ <= +K+IӥL]I?n8^,`LxdZcLl.ő`BKKI4r=ǹLT,;+!+ÿȝGJ{8{SO%7,`*N6TI#Osp'"g;q< oz٠LXgAA$ֱ4h_ym+bHQ?mGFX⑌Jndsu^4#v {/QQ8T_0l +RA1q X7>N0;g&;GɥIzlQ:2?S Br8k*=F[yVXaLf#HDGn;0*CY%6f25șNƓv%yV]\+W=YZRc*SݱjjV ΒC*'T/ |ލL`%8_jյ;oIY❯]f98S 0 # I%5KsM[!bv+];{L33lK9i:O(݌c +yMsƭ$̪]T. ˑʞ;fas3K {y!t)!V)*pz& ꖷ 4(#$co/,%BQ%@Z5ީ]GtEȎ @3HRtV!uI8UwHA-x4kZ[[8(d@,0V՞2ZFeN"rmLֱuk,73+ٽ2c|g U,ksM,3*rG%Dk} +m7MfQ%̭,w^6 u$tF⛂#pcqY//m&g:ʙp&!a-[[d8LHc=Ğ` y ۡgP m ?!P>Z؋Ym慒IU̠pGi5sPOe "Ϗk/)$t@e6ܞPN|UHXgF/4;Q<28>.#K.p%QR괥)JR)JR)JR)JR)JRb)L +b)bJ)*zbZ)bVb1LUj)S1L +b1UbuzJdJ'z}H@皍tVyG EQapd`q5'QG\,yIqǶv(E*)b)LSsVAu)L +RKsm;6Hu+bǿ7twV8|w+g>*R괥)JR)JR)JR)JR)JU+;Xr0>3Uyc;fUBaiR[0Dh渆 !H ;+fPwKi1.'edK¶F/5OO ,[++P8Ͽ54 3L5os<$ +lp"@W'r69fT3U+ X9T9$̊J6 )#%N8^jL~*Hh@rtp3ӥ[QiʲόgVMMf{bKA=*PUjjxZGxќ21V⽳JfaIcC_0JE`K\ȊQE"3#6RbLnLGgmx_ȷF21! < +fxv&@܅~.k䁣XB9 PKeTd8GFXbmFrD~nS ]=JpAr@+MVŮbu=6 =`(,5s!k_a#݃;H۞jsC~[])օoF'A { xs*c㚿ŸC&sYpw}Ok6N3#C-wgäbNH8 v8:_BGt!a(T SkriZB`j],F[aRzdg׼ ydoda:Є +Yvnr9>{VZFiĖm#\<;}XKǡ(Dn'dda {G+> nckdb#)*3Տ[\_Mv [j,7G*ہs^j_I# ݂#0^38KNN.ZNٰ{N;g׽fuKh./I0d 2G՚ܹU,@N02kZgArc -uv*y'=ѪɨjQ+I,X1hS39±;ہ^V}JIԝX B+p-#J>=̭y36%OaP:ܭB:%KI nl`~nk& ,#(Z2|K09zm7Qku/-&eqӛsE1 8fB<`SejXO'kz$-+eUS#ǶGUn! !Nj.i{tߴǝ=1>kREhxV9UC&>G=+]*Kt`nC0qr@9ۊe9,Ҽ+}3UCúB_GzYzNU 5|G}wgCi..'Vj3 l +շxјG4!ꃅ+ +AdqR6T,錁v%ĨP2q8}ZY9&8؁6\,Xm< 4/6*QXA xe-%4rȢYeG@bf^Tem;\'-/%FqG #ɬ}Ji"uDN̈Hp;3R%KC,={,TZƣgXy@=Y: kj#438%#*rt;M9$--ŜRI##n11mJ9`;W4'6]2N@^S +ޥӗY$ +Ămn*7jaFpL`^; wi7][NIc*;Su)"y.I#%#X+˖5~w-eu8xܠf@Ġ{R7tI+AL>9N~uEKeCVU)JR괥)JR)JR)JR)JR)JUn>~=/b.+*}ˑ߰N+\Mw%_NJ 1)nXQ +t$tB6*5q;vU +OR3\RO=cYI/x<6@hkm-?*MጂH#4@f BA)d0jRXaU@9qNC;\G|`ܧvG)ۜBw ^q1~oy2MsܞsRxCcoy$K4QXv^Ϟj|? !6c0#շ\Hz8 +Qݬl[Sol_ +[c;V~,!2 +da ܎ZutEݱ`1 r{zz׺inB҈XqRP2BȨs9 xaٙ)ۼϮ2qKu G{ook o"FFc`ɝ{j^hUܻb$`s-KHI r_caWO q%c]i'$tx„bY}6e#hh +WzZᡅ٢TS,Q)sq銕jp}B&Y3. +,P8?Uy#嶐$,saU־KkLPlcx|~&^$R<׾ãZkvFXkÑ˸H%HRG#{f>hDIR3F/br+oڵD/ c#99995|ZGJ!DBc3֕m@U#㨒0㣁J;{dmt52(u`\H/c?nd6o5użgDn]Fj~&}vؤ<MkVn7IsO(3(2Hdy.֞ Pdǽ`x5 Ӟ73.KGoNo9PZMC(0vlsYc9W]k9k{gڤ,*0}8}pe JĒ BE<.Ȏ0;I[S{Vo8s¡@YĶxQ^Ecn **+v+T*= GeKT4~k`ou,I$3 GzG5^O39s $Ԧlr6(RkBkM iʂ z~ךf8G+$ )Rd|1nXge8=0WrJۻ;c eGz/ph%XvfuWpv8nm{yZ5Fd~*#+AgĒrǹ>`zWG@`VVSVRXA>.-恦qbfu]~m;ׅKv2dl ?q56MA)fDI*Wr_ ) yXF Ir7(nr3+o-DVHpe/tJ1s hX㌟'+Ҕ)J괥)JR)JR)JR)JR)JR)T8ҔPLJTml'HLwGQI%YyT:l\,,nQ_DK1|n8ԕ+ku\QgWV)JRfP rRF\gV 3^:2jV)JR.i BE;g5Tf ' xd].]}Ճ*3yo#?[_ mФ$jNHDT +EhȈ1,HpTؐyֲVxWF+i"8ȓ$HIIRtK[s۬=fؒBi1,(Q%މm# G`{Hg[yYߴX⟯ޱ-amrH\= > qz/WO ]!2ڃؐN +-Xtf:F ϱԇY7 +_i@pf$s^Uu 65j銝CAk  ֭cy!*7ݘH*ymD/K죷ǸM_,>~Ut"ZMwK K%R, +^ß횾^ "F` JFSw~sڼ\ u$RGV\w*r>VE۪ $d*ں]uc~,v$d95Ko2컑2:hTl{=k]\[{O[H !Y̖If@Qc0?1@{=b+.!*ѼKFCAS} b'c!&h[y';6 +#Tk 1֒y5Rvn0 zV8x3cm> ;wQԏKU,#ip1p$e#$}ף[VK~Q`9 9{}Ut't,0Le%&~ o T8ʒ3TB[Fl5ʂ9VJjzth8O)* VWdb6x…H 8[-jr OlJPWxm݊-c~QgX.&mFUbʧ=X5ilNc%ʁ8\"ąRF kĐW!l%B)ngG nߢ VW)[vJNȡK IE)8l{l3:)eH }8⵽jI.kc1G*6 m$@ `ZuJ ]E?FCa©l +G͸Lڲݥ|$i)F%udd*FA5> +6\*0ḧ%3ԕӦXdyȈ<'yt縆W=N]UrT +tsqo,jcEZvٮuN;1r0Nj#$vFI*|L ;(S'!X!TӮm,"09ֹqlB+b#h3J){ce+$ZAUv7$"@UȖѴN"sIPgN~X Xs4|]KʟCYxM͜j4}me'#=(eb '>ɕyYq Hɴg<.pK\)xGr?(w7 kVVԉt ?3G>tET UǀW'pjw 'ELw6EB" #Y{dITV&xU+ US 3YB\A۳p +N+ ij*"iV` # xݎ*2ŖBMŴ 4B[jX뺧XVAې#jYSXddK +mb&@.{ v״vmcb +BAJȱ(r8^Z&nnY2P};W T~a}>+~VmF@}=O:ܖfAB].2B㓜U&2FFFw_ps[#Z߃ѕ~H.:ŦjaԽ싘F! 9ϥyŶDE^BR|V8WW{^糑v"O AP*}V3\u&m4R{t%ä# +pG<մEYIGʈ784]rp(T iVTISy,4R2 M89(ZTdfk!Y_\mO9%'^BkWҥ7J- +GgaOLgg5V[ʱ/%#H gibqq,FK7.Ѐ͙&I8ֵLj-$xؠwdeSQYɬIC|Lq,#,"{iOG tJdb0K` ;9Α3Cg4 . &8s[462tݐO'Ӛu6KR;iXNVbXWk:d#(.LaU>]zW0McUfG +Unq|8>eDO,^#J^C nɅ+A=k?s|FkӎV&{7"rcKeqzq\9b-Mzl7]saH +B g <>cҡՒHWFB7;0@wn:$M.ɵPOTeLH"f|]HI:"+.F(=2G|U cTI?_k},- j}I<}dMdR(괥)JR)JR)JR)JR)JRbT*b)LUjZĐ~r;A* +~}z{_ Ttw #) cbrLbW @\,m(S,;F cv6n8߽{RShj%4 kw}d*]]2O|uiMG1nvH8yRҩiT*Rai}uz70P&Т<$Jb1LRTVLSZ1LUiJ)S*LRT1JSҔRJ)b;,2KHߝKP ڤq^1-JR괥)JR)JR)JR)JR)JR)JR+nciZuEb=v)JKGNY6dsVz6{Ō[2ٍ9V+;RxQT՚u_B$xdq@p<ⲩT5j_{kYgkoݘ@{ 7joo)"3AAqYTOS)mU!D +X*8{םc*$Q&m kx+iV5bF + #d ߒ"Cv`[a;຤6zddk: Ufhc9C!ٔ ``~u%JR)JR/o$'sF˥)JR|MKu[#y/&Q x24sW8,ƹמ5 :+ʲ# r$Jr0x29ڽJR)JRy\]Gj ꃂrpsX^ [D{Hݳ`#UF4Ba]p׾= +Pd%@r=5M^kYghU!A'8IkߤJfܥ*&*8!Np[S)JR괥)JR)JR)JR)JR)JT~6ݪ1D'{N/rLlN=ch?4bI*9EEʌ#'p=4[ȤF!88EIi 4QܗYpV+_pGoaXڜUޡk{q#Y-1 (ˇW֡yI,3$ʨbE +f8󬈧K?">ʭL0@ k@]BKH/yK EUT2|>gA\˶%+R`c)8z˟V`Mk %%q>u:Ҹ0(RRUL cƳI[9UWՔ60;Z:|G~RUF2ʓqWݳ]x(r8b:5#BV&Fo1P1>o=ݵźۛɳ [l#N<[4t'sZM}-Kw/1|!\Fq'99v[.X\IsHF6OqNO?,RYUy M>1#u-8fRwYϢӷV/Udn.26<(!~qs n +B985t[&fFMv#ۜ涱ZE?fo%v.$rLnr13z{.rnF)˜PҧsCM6[ܤv(V1A#;:YSH6KIT` T{}L#!}pTCx$DDPYπy#,E R?8{\ NW?}n׷5!Ӵ'%񷍘rC2, :ɴVu"V~]5T0C`mG[Je ~f($ %y$R#]?1-W]6pm\\YjficɦLnWWp@RoJ|]I=љC 4h :Ȗ{ J)-:1:{[ 䌮3+Ml{]x$l Rڶʆ%6/094RMUDq蔑r#V%w-ܿQZdB&*aǧsOqi 1hȟyt_ԯ-E 1ݤuI`303K`K딑IxpDh=9 t ݓLqE7g_.FyZT]Qex BK Nj]KL@PO 2/-TC,2}1TԧZӑfqr/.ӏrl'ޢ$GKYΩ62+),烚ȟS}FЊ5[`1*xХ g^p (bYpHY%z&o>'`ݏ uw#x~Vr{힪#ү]n$)UT:0^˂ }jMY{VH"&Bt XlZ4RDolpc29ǦjĚojY3ʙk8f{`ݳ ӥUrcξccR{mbV.֑o]ޅ ^n?ERM&`;{xm;HNѸr@~Y/mCJwG5Ću9)DAD[co/FF}f-@5LqƱ63*9|kPk+*۞2C8QF{zT)JR괥)JR)JR)JR)JR)JWWI˹$B#tkV8dg-WfϢ@܎9=Y]tc BMH$mOJoicAуdҽtYn- X!99  Fn͌v`y0 >bԴusЖOS^wU<5^r3IA$ەAcTi$T,+6f.!cd^T0BwT;q!9jyg5H02FG +'KY=$Y ?EU$h&ss1pjC1Rx;|EcXWqn*I!tI啬gXViLQC2y׍ׅVkZFy]7ukṭl.,zLK$ rIǵfi? b3}>T.SnФ}=kFTDǴ ى<8 R⢬i^d.]\YP 0*^DҎ?{a*rn, 88=k[Dny"OHv23;WњFTnTC#e%f}r7oPr=0+ݭ &(|lrkޣu2m^YQȎ*kN3iidk #4HKc,8 +-HdB"PsIkP"n]Le`1Ee׻!=mC@ AdJe~\-qlځfEgM\]6P>xQ柵#邻$9Wʼ[K VX#1Q 98 `g׊4gV$tr(ۓ9?G#9>X˘.&;&*̏V!NVao\*.x;K{Ŝ[)`>yyw73L%rFc +v0sb9ʼ[Nm>l zc;s\R-,M*~8f7t LA8N=OsY)JP괥)JR)JR)JR)JR)JU3fJRy-gw)dx "bA |=j@ o\*#8*MkvT@v^g[o\%:\Ieb H=joeؙwč. POm xKa ]A mQX^0h6r&ݗYΊ[3LXYݕwB讻K(8$}Y?m:etMʇA'h9lZTу+A ֻ$e-!*n{2Wڳm4Kx. K;͆aX+mBReWs C&a(| P"[wc `bi_X¾NNk60[LYZv`{ɫC%Զ`?V8 $ArA/f$$F?/jJcvHY^Ũ $P{dU/ay""f=kEq:@K ȬщUWx\@ p=y4 p #i!T#}C]llΥ\}=ꖚw2H1'Md$˂Aw=V{ .1`Pei%{%Tdrx +@bdrHzOg5ۉLs$d` zr+&LUHl21sX6zsfdgtdU%ry8i#i#ARM&(b@'g&/wN}}!|Aj#I,%Cuw ,9-uĚu) Դk&:*2=T*NNj7J}\,2;K2lc'u#XI {p]yw692j&c +\UH,@kPcBhE/#(M"%&[ )JR괥)JR)JR)JR)JR)JUHw($Oo2G0OC.YPn{Ty M,b0f6@o"Xe {#{$Q3!i liR?Q$%|x~>puʰh[I6m +(IIʴ.b1ܜ=62F>)-:Y&;w1js2m/h9 +OY&Hݣ:e={d`V5uqw-wl-$!I 9sx+c%uGScȨkdԴ+i>"]$ A `f<=Lm܈$Wv"1$ x?m/kZ-ʤænē^zP\ie` lG {VmgдL +dBѼͿ eqx-~,=ѺXp9rcqP lqyR=Z f]APA/:iwRG< Un,U#v +RRCqk#RkqRv v3Qut7Dvڒ:Fbp2ăko`K[Xb +*D,'EBx8g w#r)sp2kPI5^|4_ +%PIJ,$;A$үQUtK Hp%odd}Gm-r26UDl!p j +jV3 EYIM5ۮVr4 +#%$wꭣG(E\*1(@<~*.faC?Ed/>Ҽmn5Q$%F\$(8Ͽ-3tdrC)jr3-ʣ$RJim/*%BŔF67kzYN@ު'[cuZ] Fkװsf%ee?|pFNF= ]#E5r,y +wcI\Ts.Bi$QETa18Q kSRH2<.avĤtXS\lcvfά8PfU$1kN<G沼 +qFA +q8 5,漰}F{ycR+$z6i2$o1\ct4D6o0̌mGq{`ܙh%\ʠC";F0B~G1nqy\iY{HBNPmI&XK$VY:NoVV>=W3JŤ3>.=81x$u#B1{fl5k ԍvwav dY_{s,t^)C>[K{=- 5%$J 3{㚒ծc}_HuW$HLq^:-vcgT$s~ ^94S[$A##>`x=Hgvg2nĒn+Z|څAcX3(qXZ"K{[%ۻ`XHSrq^Ҩ Vcm,#22nci5UYKF@q A5 ʹр xPqʑk xlJCcr7R!Xzepho;\_m], dZet[2tayv3#DP8crokdm.kz3Fҳ\)$F$Wztwk:BA8>**5/Iw4-혝1eIM&I Ӷ(v;Tמ9A5 `ͽpbV+ X+A@#ҡ5xZvlX)^n\g9-f 'pRFTl\CcYss $2!f;Hb60F~\+]s_AU +)rHe +@ Qpi7WORY"E)e#qqY%ƱKMafR͕M9jX_ހ2O,N>i 9;+;kC)SN +R괥)JR)JR)JR)JR)JRJwe,e4jJeu6|9]N;#KMI|IF r y䟝g1L +mqШ=VLbT1NԪ1LUI}j** 1U1 +0*zb*c)RQ[px]T*3@UiTqޔ ☥1JbZ)b(@<j-݉Py*o5XhNXyc?eK,aT.8yWb1UUjVSVg8)L +b*b*)JP괥)JR)JR)JR)JR)JV=Aud*6ıͤ$nW%dpw#9T6ڮ)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR(괥)JR)JR)JR)JR)JR2N[:q ܻԅ\dw+wqXIl PD"AU]iVs&Iq@27c5[QC!ۦX2!UR۟k19J.Xa#8#z׭)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JUu67c۟9m<5y&$Y#a!%o>`Xg޲5M",ZE)'ϧν.th/sJ(%iݼ698=?I#6v31 +]!Iے>u"mN'( a cgR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JR)JR)JR)JR)JififififiJ)JRf3U**J)JR)JR)JR)JR괥)JR)JRfifsL43LjiLJR[G۸FcW~Vbv~-Eq~I <:~j=\irHp:As@ k2/_u_!Ck?ɐCU ƴ; U'/oJucbߕNs(X? +ߕS&VO_eS'2~_VXtUeT|U@\`^PjST4gF3jGhǯFvj'#S./~S}gE OO\_d_g?ȿ*XőCPͫlɑC:\_S>8|FA>@>7:bg=8⩿Ya漌P?\z'omtjČ]'s}:ڹQMU_/?Pk'W⸽?O\k'zd_ڧWY?ő~(fGd_f?"?ߔjɑCڨWLqCU \_%?U3G?VY8PO~2?益meX +?q~yaU2j\E{O" =MuC.O~߿V-d-WR?SsT_mS2/cTj?oZ7-^&G/- ƪ2>QUj?aU2ɉ ?*]W5ɫ STN_d7C'UO^jmXOۦ?vk Fp;u٣KEc+8Ysw?,o:ͬ&M?mc/aUɱCՂ]g:/QWu5ߕN*~S''*M_=?Wj u5oOS'dWvWaA4ߪ,?7O; + ՜}gu2jW˹ uUۿq# X s ;Xq>Ո58YnXmʹ.=k=W=Y"Wv8 +f{VH Fv RNH\^kbc~5A#ކX*]rHr#1@XznV{uaL`?fܽۓ$FFL{` $gU4q2g$ arB:wE]p䫁 T(~*UQs@$ѻ 2HFTO.O7*\9bBM#D81T3WG^CSn vg @q*TvjݪUQH0)*jIJjfn*:)@괥)JR)JRZ*S7VjSddo©g9yT?xzէݍ'*ÝkYtM{M,}&B \[犓}ܲ( [f3fxm_XMm<|c{NCIS;8۵>@u-}iv>QOr6>Ij;lukl0әReW!yOcO sq:̭\1P qQzlpYK GAc%8Up@5 h}N] lLJ0a+35=B Օ1a0O=M}uPOz5uBȀqz%\f7?]G4V=ȫsĝ6dª۟dK=GNiW].¶쪨aG'^n5eR>yOL$ʀ!ֱ#mV53YP0O+Bn@<3֛u OdI^,[r(+Yzeh[VٗyR?Tnnʸ) g묝sRؽڡU܌G񰶈k];V 798dqn0k{I%Ly۴v }]%[}Aޣ ![[.Hf&aݔN}{WiDi6$sx$1ijȟU7+}FB>줶EY~64UQ)?,feo x#E +HQ:LD\o*WlG +%]@EwlDuR7@ ݏK“A"HFAam-‡1&~v}}#Ǝ^GeKkkJ=8늏]>\kn9 JXܟ`m%d%:&9V-K|e+ew~W14Q6% +0P;JEi:UIKL|J;j r r2+`FCNƅG'a@2B IԾlOehذcϭO`+^X7ri8{ nAs"Ͼj3U zkmT8sܫgrĎ2v8#U#C*D`E G@+ްFv,ְI$OsVD[(HQFxU +9 +Cz//Xqj1fP˕%OcgtЭCFT̀RHҲ.l(]NS%X9XtM:Ynac8}j/@Ё0[=gfRG˗RB_K 3W+#pYxT0).rI +mgw+̋YC1qȫMncRW*TR8l""S {rX{qTMpX.avϥa*JeT38f18FIFDYH=+<=`rf9Yɳ|{m,x*K}Ι%B2 Pw855wLB+ugrFc[u=8KQ[q UXʺ$:ƀwڊ ԙ"iѫea>czEX,T~s9ҫ&j3GaXdl޽K;ln̻02j~o6)brdN>7U YH V02 6ǧo5-[, XrUNe`6Hjvl M(ex G y}Ŵꉙ78ijpI۹IRG}u +Jy]2.Ja}ENx+} ly ҠYHVf.@=,N*-KL<`1%RB܄S{ˤôpyHg9yfjc9 װt5щR/KWϵ{5O/X v:H1MԒsI g>Ӡe` *007)-2CXs3=+hGx1Xn` 6޲#cs2IuB?8 ׅom".q'xˡ\"+* +)‘W{cp.H=Pw9Ƕ3UEH_I'w "{{]~^<].P}V˷[Dq'v=UhӴ7A@ץmyYc $Gb#Ҩtsr%IWjR-S v̝;{w泉qu&q]2ĩKlюǓ$/&i0:}]_9~u?gs/]ЙpI >‹&6 1/beW@aٱ+!hxVjqBتhVv)UE*iڨyҨNiп_wLU-JR괥)Ju]r Tߊ9&d,Ve5E^~J̶խ,~Z!&HN{qX1x;IH?Y֚o6&Ll;0~GiM:i*9vRq ejZ1NSTRWX*Ioj-đ$V)Eo(e8clZwu]?x_|c5kkkx2NU#8^z?,ah0Rae@d'^pNl$i"6^X[I0Yr@9 +p==(5TnTf { ss WY@tA{dFe [{i qܜ88h'X`#Ajߚg~M  ԒExA.{dWFg&Ӂ^3LF? +$0DnY\w=3YVw_<G#{w8{F-g scߚ'=;ikiG *I<s^vw+4mi8 jh|,B{rkv[TR껲9@Iɯ(.#p˒2#{ |v0Ozp*mTfXXg֪&]+Xʬ" 'WOLoU=oZ(MW4Uiگ *S5\5`sL gh/DU+JR괥)J4:/vۅI n9{%7VR{0Es%Fid 2FĜI]($T@?bլ'd19+ݾ/S~&+t"p(3nVچ%'GF2}<8tr]eb}q㫟yJ;)oyD8{w ֝V cPk&xhdd>0~*.OM>}j`-FE(;dL: "?]7՟epZ~쵫dOy;1 GՊSo~? ]28W+$3!,} ެ0!& YI +$8oqZM'T]#&zIT_3I"$bŞI9?!Z^,0G(xo`Ufݼ?\WLi5\-.ᴄ RwKi#4mD+mG6#j;RzG}k{5Yd0 B#(vc1 +ykzCwƨJm& wX4bO##3 포Z,Mw, pVS؞{U&+Cu5*^j*T}U϶oZR/tAr2rzm= 1J({ +ԮOt@#f;AzayUFHlb$2 '⛀3:{KDfq +HPpI8jW_²r}A^ϭkjZ +pڤD3e~Bl°>긿fnW!Hc{ׁ`!.shG,Ep_VkV+-8Xp3 {V-I& +9nKx5qԎ V1e{v+:EUȻ:[H>'g+>Pn v' 6^12.m;1؞;57+Yb)+ r;%27TvR`f5V(m,8֤,{Xga =33{SeDdnp + O`+=QL \-A pycCB|zKLP[a8?K9 l:,-z2qv*UA 'kaHgL#nQ>df/9m8z)1H$.0Tcן5OE$J@mUp=F+;5Y+T\"OFp`|;cX˳;X$X#[[)$gE*Y1s9 WKjo1u<n{&D(w8N{1{jIbaii&b(NX{*Ivη#gF%)$ -oRmb[$nM +X`jǨ ȌAsUĒum)Vmw+9幟NʂM'g]3UXTX1A9ט[ܴ$$|éؑ!5Fkh )qy-zӧHZ wI--xJY7d[qHyjQشaydy{ׂ<%>B}Gfy"I˫d)ې;r(/U# *e`rQy,xڭ<'g鋦*#a!Q=~mv0- (уfc|9\KMup呼X + ѬIg7 ٥i~3U 2(Ǘ~?n-b3DŎp譒pe)}hbB$qZ85kro醐)MF#. +Td`Z<1}(䷐*H˫2;@ =}U'זw7SLs(vb"^Tn3+ ~ L +92qjPSa|Bh^T`(ݝ}(G6[Y'@Sv܄UAEFC* +Vj[80H + H{|pG~F3ng1t nq88O/m6Rf +`$G^7ʖk 93,C)* `gGxZ8lae?X8ۄNs7jkhVXby*1`Ly_{;HQh +9pT }9|5[\"r~r>񟇵/KkHU-V 68jNM1ۖZR!:j ɬx~ -%v5)J'дCQZ{2(< VYM +ppsF*&JK[SK{%3#lpO-tI6bb[{A2)Z wE+mW9G<ڠDlR;s{T&TT7:hc>iLp^dpO`h1q,x3zZMBKW:3@?BN< X&c6 @@>WE[bbeZjH<5* E]Bш&Ab{qXbOm~B%4go'|++RYv@\H 5Hn.rH0yo!bo*g5fo.1t^Di2bC cXS6D=`"2Hc>7p3" RVgn3ZnGIr~ͩX̶fQ@9֫gVu%E[u!\C@c w@?UOPXa!xLrџ)ǪyǭY uwIhHi$J|WAtMHE%uR:D>ޤg=J+i# %G43ID.^7N216sfBW[`Cg26rF93^WAw`w\3@sY6sbfuHb@Lnp89 ';ֽ`.{I~Hǐ7yn.~Haye^)< 8=#Sx n*)R)T4R()gSV JҔ괥)JR)JR*iS4ȦEVLjjLjҡK-V/ʱlp?H`xߟZ +ǖ$$sǻ`[*Lҫ֣D`.w"S'-b]]\gї蟲}Ӫa\Td¨m9Mj=h_:戂$ +;UF1Ƞ#95E)$WyٙAdQJg]O c4lXG=SY̷i3X#8qcOӮ%¦'X; ?Q?[Oqk c m\6=+±\jZD3y9$vlǔ9皂uAO"Z:zJ(OMls_ۇICoL$ᙯ|_nf ğLUZޱԭ5z28H2@0qAy:%I\G>Z-ܒdF}؀Hq*vP>!ZXLӐ{zֿr.5)̲tb,8'jKƺսHRQ3(88b@϶jZ]+olr{ VJ/_k `,Nϰ:i8WI`8Sܷs59[瘂8W#^X V;bEC'`~0YN {TW5 *[A/ Zjw:up$𢒻T.p=k2\qq"*N{TgmZ$QHrDXq@vM>R.!vG\Kz՗ "iY$sduzc1 *A*H#隈mHd8 K`#Oۚ4c~H GǗ8>5@P78 4,b`F=kFmB\0N882O礘xA}Jɱhc3^H܊}19j+z~uy`5BӚ8^ɥqƅWp'^>eZBPH J'{X/vC?*c}Ј09~P]GK;X1#oPA =RJCSp а5QjgfvƱL_'>\jHUaTH]W#ި$WS}E7 ԲT.yiQ%w5"4 j#`jsTܣ+r;PڂE$:c`v,݈4wdg5gq@]jv8@Hgs9PDq,O=0 8ϵIPVvۥ><5/JR괥)JR)JR+SS UK9O8ԯ.,7V H9A#֭'oގ!a SXd]V)lS+ӌckmekkaO)#??)ީVɭ$q, VUAm6[#֙ʧ6G +0>uoꐋ6#v7l r*&q .YY$f,bpR.g#=ն֧HZK-^!cкlsYƋj*{V!|gh65ҡKv5 i[K󆽴 eop? +ּ7AquspHe*OJ{%d`>b<=/"kƍu'?ZG%qQN9@(54sj0$tO8cfp"&q{e{حF[wn; +Ip@ AsPCZ9rE敲q8O\um%P c_*`=E絷{Y\`qk:6儲՚Ir;vW &;`ВF3+ѦԬv4RIA{`MzreSjؒ7w8{TiֺC$/a}ajl*3Ƭ6}5ll`"At+c@XpT\ +i0{WRNڡ^Iݑ{ +X5v1[ApCm JqWi1Gmx|.@VRGVYV/mzōXrF-l%7{+YҭC麒>J19 1zזXhlq-< ֤lTp\IVY[(5(b%r۸>I/m Av&q%A|E(tʶyo8ʱ!sZ+d#K.C.Yj93;WM (.3kM;+؍dpT#i.@a:c$2W +G`*O*-HHY$YLPB' +1A>M2ڂvrĶ={xAd7 +Hp*hsj:6&astou=éW1=[ƭ(r;v_ eoVxjb괥)JR)JR*G:Y:k;@8?mg.ݣ1;cgm'V+xFU5,.\d0 2A5y2$6R{9~X1mY6PUq^vY`7SʁH>%XW-v7{YrtH$($Xn2i h՘|^ϥZKn-^!FT9+hM6єg U0^Vv܁!MUIE_C8{RMӷ hcv3BgY4 [z)Ydae*GȌф[--ٻ2ukh +ۨew@+sSߞj3%1FԽx$m{"|XJpuWdی׌I )D`ﯜ<#}%U8ZcU2*I#mBD{/X~q㼈K;fnN;_Mf9Qb[gd׏.VW7cʰ'3gԦk4La' +˜S/?={) M)_>x?^t36?5fIG4(,EUp3qXwz'Oofgb8gϲ8Oc3F4q,r9y'Ҧ4qhV, +8Ϯ1ƓLR,}0rL*0 e.aOʱ弶dZNBoN@6+g.[-8Ͽν%D +*yvcikt/1x4)4$($esPmG -BO1Uc;B`2k;Tl Ƭꓻ4 +Żd*|5o<$8LʒqJ}"9cy%DC qV;y&$}o[i[$@Hj8y%6 2G'^I,s)+[h&=+ c'sO v$mn1mt8Q6_>cn"U#x2NmllF,01Yth(.H.=~jM",De `7cǨ{KHlX] +-BPJ;AȊŗAN)ps61"K +RIALHW ;qR$˝ i&ުʤJWhnWYi6:7ocb6d6L`xc2ɩ " Vc[aBQBsIx..#Rkp8z41\/†;`UA@Po ʯ$~&wm>UK "6I"|},7z}k*htxe]J}AQqYCbJcXQW +XC5wlo;|(V (/B,r=gz +ěLI$)COjqV {䜜]oEo+289;Gew{x6lV'-9SUKu##&]Ǒj}٭Qܳy$lv__i#I +Cr=*KvM2\h[i:T휓"pIIdc>lvlw2f%Ԏn+2+yMWn(խ$E稣#nHǵcxv AF_@ع, +k6m2Af8q;Uo,⽅w) A#ׄzTK*Jsh=ۓ{ bygV}ҏ9O~CFbpRs<߹lV NΪAc$2+X<0~O5aæFcX$bI=RMLVHhy$k'9 'v)JP괥)JR)ӝcp(A5g;Ð3pri+Dh${@N>xR\$hb1r}v/mej:2lTfa=k:n%5u  cX|_uLͳћn=i|GkM+ Ge;T|+XmOT:ޞ9?mOV5ݽ?*S\kp+u?MPil_T>.kw\?-Uu8QPV+ɹȿmf?̋jX&5i"?1~؟u"?M>∿mOTci^sPڟb*S~%Aj~??M>ib?M>lOO?ݽ<Cj~4l_Vڰ&/ٯ骍nĞ.b8#z}ݰ ~:n~4. _T> kZpl_Upn?ڋѼAI"iQgziQqM*,ު5?&çq=+y WCte9ȌT)J괥)JR3Vg4|@L҈ف*@񏪶=+ ha]G$fFKmJmJ6c16UֿRmFJbZib}TQ>P+<7j JR&uaŽ$B#iV PV )ٟNrbz.{w/...>@Z3/[j/Flpp7~[umZ(Vj&{)[TW?{hzԇKDY,*#\Uޚ4 !! i*lqTw/Ě}jsLw)Vܻє0R ^ 4KdpJ4WH\198 z:-28DF"5_^Km{J\E"݅ݳnKKghrzZ)ּg FDCK#ג?%t eB FAЃZhɠx~6ܫozW`8w +W.4 O+Y{ňt@|CdHwLag: 8'>#JHe{2'Qtu~EWuoi?b?ESm}̶_(tc>Z~{XjOO?ԟr,?E>Y#EZ~<_認"ZͻUf;AS5O؏Uie?b?E>ZO؏UUO؊鶧E?b*K=O؊=Nb<芠t[E 񏅄cSړS-,?'[XjOOȰ֟E?ֿt;MS&U~X#cW=<eEf#Yx`40s~Efzy$,9=Mr5S~ zN?5>ip~ҟ?ETh:pgI)NĐ~ԟptH?jOOw$'$?'=?ړU~X"Z;Xk_Uak)EZ{Mk*ok*s-?EZ}͵1U~Z ):_O֣B?/}ε1P閇~ֿtC.?k*߸?ȰԟqG,?'ȲFei)&SU4_ʳGik*s-?EUl-1U8?'GCm?b?EWa6 D?" 4_xb)Џ +g<_ܻOxk_Uh?E>Z *sG_3SmS'U~I)pO؏UHG5aTb)@괥)JRhK9e[\}?*]6-lglu+aH8gi3\Kyt 8 l27<*IѮ}vBfneF#*~Y4մk[ZHUT(<鸲kkVCqr5LrFTe;Vv붍muREЂ=AhSzogqe$b}z 5 xǝy?>GWx?HH[L$N.@';fXk}Ϸk^A Q"q*-opPV fwxӳtج푖,06qՕwCB:TR-Ÿhp*Q< +=Y&=6_rG`wg91+ 73E״`p|]۟>OY%iHPQ2NH&5Heơ6" \q'Im'gg< +A2||:vzţEb%hT鄏,X =jkB3=Q@2D8@ >-ոŬaCp3&@_c}^? o~&+,g38D.0{X9rq^7z}Ŗ%H2 ͹A/"g%qaQ~4.tg$˗nq#ӽJr/o/4"ěA*O$'=JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR(괥)JR)TLbJR)JR)J*LUiJR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR(괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JRS8Ҕ)JR)JR)JR)JR)JR)JR)JR)JR)JRdUiTV)JR괥)JR)JR)JR)JR)JW#*9BAEi>M~RkQkqR78|!ͩW֪L2}![,Ɍ //o<[NO{;$Wr2A?hxuk;L1D ԷK? ZIIM| OsTƈjH-aϗzϬ ^Kx!RiV4 ͏TYXlb^U@oa"9:7#؂+E{WXxއ|HU k{ I-LE;H5g5rȟ♑T+y=Nd1#Qw8BnOlnnٸnq{^ $0K\gq:IRAXE_VRI±,oK,x-b"s?YC+Ig 0$`׭BQJf}P*5=-QpH*bI&v c T1׽)Pwzin#D< ˼Cdn` $)h$ҪYd `He g'#VI{($yQTbxܺWߊL ۱n}yQ: Xw{J+=YI")G WQ{ya)aUwcp{[eJ/e&GhtbT񓂬0~DTakSKoes,LUGSyU,8 ywC,(eݒ{[,Xg 0$`5zH {Gbf{squFB|U}o,Ҡ +pI`0}=YhmI>dRb;Vmt%f'n ( ~\Vb]G6 M{s82g +T! +C ;5O*_w d9U 8(o`%cX1EgPHKdwsGh(H'_bMpm'RHas{՟n$S~qz3nj."%_aE᳍}*/ 7[2uShm qUVEJ\[pO9"wdEf_G[%R/*, \=UTB݃0R-{g5dۀdu@Nbgۚ ˘2W#v=&m]vXmz.8γ="%^5aYPɌBlҶ"xjOa}ulѼ, EacNp>UՆ&&R˝/Kg>ݾR-n`vmL[ a\gylj> p\|bu41DImv8$5.4K46-FXVHK]c&h7FK-YIN-L1 6p[٬U j#i} d\6x-u: K l[FTZl,w#S"_Mq/cI;S0^.On>^z=o9VGnTC! I֮f]He õ6G9`>]${e&!r2n' b-lV9'T9 ;|OX.Z*$Ӣ<`Ɯ'8^׾;N#t:)7+NTmcs_e,cv]7GddԍѶWU +6ABnoo+ky/x͵;]vӵYa7$cyL b,MF`_.wdcz!K{ xVV0 +8?.gXOⅣ$E!܊ազymMϦ fXɦkk*:n͕-ewc'ަt;e{N%-0f +cF*2[VxNu𻺝?{r78Ff-')d!@[ʼc +;kpȩoʲ$Pl]("|9ϘmM*i@ +\  +9" ޶ +$=s\gJ1}g#ڄy$גсQœȌ 7g?Zc۹:ȶ@naR=I7%b ߹I=}l)J괥)JR)JR)JR)JR)JUC ^"eqPB + (NQHP +T4hCc^WY[DsW#7bO#ҽXzNGY#lgk8?"k#D0qU[#IpaA vUeX 7;Yt?=R}/Y2ē)GPF ~kiUUeO$GUkwL!vr\=׶+lk>VjqxfI ˆ]dpGzb)ݹ呱81dRA{mM bqW8 V1&Phʁ8\V,U̖1|n,Kcr9閖$ 2{ESdtv 5u)^W6^!dWSX׍i)[xR0@%z| WNeשY㑞?:񼰷qȹ揧J lAE!~GruhݱWx >K'S>ѻ3ȯIVfE. +d+qU9JHdՖPF"5E`UkcE9̒9Űd`56eX9T1qJ·ieGXFMą;y*R` c.hyzU;H!s.pN2sTkt#ٜػsc5Y4i6*0NU.tkVr,M_578Ə۔6>Ki F #ſ]ߍnATߊ-ݤ$Waʠ12{i)BBr_hN19\֐1lqP[8s߷aTʡxҽB+-̽nu?h q'I7)bb23Qq mϺQ99 +FlqYV6+g.n$yЧ8Q(j"X:1ײR#jY[Pb@%mffxQ^TmRL^mY bV +cշ]dWSX+DŠ@U`B3^u3 q}"O$jѦZ)"Lo=5`gyCe~7g;WEp F8D)WPFA Z-b Fqc>z|,;vAݴn=qTNەP>Zcq3Y55%L<P}Y",U@,r 8N;)@괥)JR)JR)JR)JR)JU Chۙ ] DT$L6g$6@%`ȩni^7WY%čdלR1#"3tddH8QQ8g֫S5Z5&9-*kTEȌ܃@X2[ sȩ +U2)L64$wn˸snͧ]UPTkws^[ʛkxer?Vg.˧bM 2nw?8+ +[`Ua0LwhqRsV pmG'N 7";{k:E]k1M.-F##JHeSR&PbNjFMĐ7K}aR9 9Q:u[-{=̬b{[Vk )7yc\w{k(C~eYO2rG+Ki4k!G#peUpI2qk22rZ@%|Ѩs^2ʈ#^ǐO$J쵲R)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JUBѸʲFH<G5eYiе +dc O(;cD21,āNg Laj!Qpr zA[$}3 cF1]mۥpI vq*kIl,006 8#ѭ!Ku &wd`|'r{U;srA1ޘ `qPcw^C%ʢm<&N1>5}i5̡ +G)w X6v`pNyx4S7F38ci{P*[6i;aUCeH ׵Ιԉ+P̍JHqVA[E41¢9DGgV&fI +:;w;31!~@@0o 5)1Xw:=< Pֽy.$U;+c,bg;A9Bɋ2v,}FI<=+ "f8瓷sr@)JR)JR)JR)JR)JR)JR)JR)JR)JR)JP괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JU3U)JR)JR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JR)JR)JR)JRLiJU3UUiJR*ҕ{{u-̌q]ߊӕA%"P׀1Gk.)JR)JR)JR)JR)JR)JR(괥)JR)JR)JR)JR)JR)JR)JR)JR R8wy Wp?]cU.a4H}2`Pegtӫ~ѻnv88jmnms c)'Vy0X\V4#xàq$|eY]U}*W.MvOJYn@G3s]ԽK{T`$v "cygY0 'd~FT} #ci} uG# !Ȍן.dXk"jGc_jvxg¨;eQO+!p}%+$.Z79AWRBC!N⪼ +⽩JRuK 8$HH`hPn~@bY8a^pHRsVK*gQsk{i>̯EUޡQ*r {[ !' KJ=QXslجoaV'0e## +\ǚj]襲s9gv +YZ#<q`xhcZwxmdT.[ ߌTYXI0lDIU8n'&0|sȷwSM1jq5T2B#g}DΞV5)pW&đ0Hۊ]E?, +IgוG櫬PW?$,Gggn>Υ)J]:/X|6^ǵyQE&ڌhd+ =/ j&5Od!YBށr=ku"[Dg,qܞ wPdDkWKBmwvd`QVWB-,I82.Xqҧ6RF{R0E,IKbx㳖$1ubfr# 0+bmb= fKrEQKSNr>gGXZU6̠q)zdOLNfGwbmb$NkƷI|=JBCVYh) K [XXmi]!rhm!8ɬR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR%SpAi22F@U4.-,K9 c繯 #O:|%\y$aػ|ani-2ͳ vu=Yy xÀr3pG P>ݨRf"fۨs7rxه`X Fg\ȶM +a$`)JVƏew([x0́c$U-IG`19#ymH3,>e{-ƙmv$+2 G<qlqڒiv)G6VbJ)Rǹ#'U}6SxQXJWy+!0 0AXgE#3q۵f}>IVv ʍpM1 [xa3Ͻd[ZCf!EE;T=}YjlsoF#x2 +Aҳr6 b3޽)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JԵ)lfD[C3@~Roo%ul.ѽHU$ +iJR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)J*)JR)JR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JWk!¢1$ >yilo8*T/l(ץnۥ!"Pzl-{'4E3UO\kżP42Bl`ZW#6 'd z]6\gЏC^iLf8Hـgݴz'f[!f%@Nxc+'"2)L5Z5w;6v;#|wTV3:Ǯ3ZW2jR4Xnef+ R4ȦE3CXv5A#$Mvn'}k+4 F&q=HaG&1] ={sRL4GjSuXKa`J'8=J}h:J +;C{r{gޭүCsgV5mF}2;ⲳ^wUTO`+iJR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JV>Х.om;5jzɂX0sY^ۇ89/egH)grrp<-]^OFRrm +d﷜?R-ٜ^ۼȞVq!Oby>{w"[r -\Y};Gw.m0G]դY``s5yZ.zCFT;xZ2y$ wp%*]c+Qs;.#b嘀 `qH$?Rlg>Zj:m‰g Te[\p3`ݖ_%w1$B_#PO-^Y/4s̳I#oOK aXךYۮHHr3,i,-J8Ϯ+[ӵkmݤ ř5 #ojWmtKyoG09kR1B^前uayTȚbK U@y88cԵa ])E:a!p5Γ^ʼV.Сd6qb.5fFwhΜӈڦ7` #5wCFen|OL{״7KBGM438pym5.Ln*e0uC߂quH連5yS0\&S9%n\̰ b25f)5K;!烀F}k>&FRFxYÞHbiwm; 3kq-7r&rI!@%jN]NXHbč!ݳ$0rqgY%1ȊZżE;"QBP XRd]5xȿs#-o>oAqOݵLUBps\(ކH RH\!'9krfc`b1v7d>qFegU`W"D cS7+S$14:ɀWa@ + {~/p%Hope|ؑd᭣` `i$?{@'`9 馻vvHdS`Ǽ>=Ujkrv{!Tg,@h ubdvCEcc'5ztv:mw݃?,Iisso. )9>TÓSWh%(h'+*109㚑PJ' 7sXZXE,;eCh%jJymuv3K0w8a!C٤I YFe Ӑ~jijJ-d5*#T)$V=`&}¨l*F6XCbB- `b@7BG|84De(۳q*[^{{A# "d9l1qn45%t(nV`{pyK/A1\.>r`Q=-^۱sYR2 1q( N"v Ux$Cb'E (\m(xVk-taė)+ʑ8L8Ǖq+? Eg-|̊1$wlEQys V])JR)JR)JR)JR)JR(괥)JR)JR)JR)JR)JR)JV)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRoZBM1N $Ks2:LλHb~Y)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR;msm\@Nqs̬ST]5bKA$k I'#EdV+hs,*c$SV^iv88lg_|td$_u>P}AJV&ŤZu.vą>)K{4<,TsukӦOpq6|p3RаPI8dJ+Gr*3\Q6GV²'7޳LOR5C+n=?*)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JROr!Vm_OmC]n&@L]pR99<#gC6"w͇HU2!IvV_Jcfݒ(cX5=A2mBKjvY$Or7Rq; +ʒuc$9#RV$cgv MR2 ؏V=j06uB@RzYڵƕjd*Ɛ"6SZ*a #n9+dִn܀4:is{׾L64p#Ĩ`q<՚4w̰Mu8%PA@CX@fU5{șl^'?y4uItUɸ%#o-}:=]WOdO-;~UPXW>m s,guDq;ʜj˥)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JRL}v|!q)'uRQUL@FW2цcG@.],3Y? +WsفbRJdw}&}.9w#؁UZScW1$LD,S?& G$/06噥@_*0 {`=yZD KhaO6`%ǚ7?J>Y/רzcmrrW;<+G4J9R2Nx#>e=I#!P  (}Cg2Z y=HO/灬*$d㓏Jn.X!3:cڹ\{V>MzpLkQA +Pݹ {Խ)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JRbTҨFh*vҕ@1U*bTZRqwqYtH'A[8lzS'޽JR)JR)JR)JR)JR(괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JRcԭ70pǮ;zU)J[I")x.(=PMo"ȇ8e!>uJU3U,|k~SmMOyPp}{AZU"I 8#ʐ!w`$R E&VR +}A^1]G4ħ-P~c^ԥ)JRU \*[NLP*9[k"I`Xr=zҰ$״sdPCkoS"T`UiJU̐w`I'}dE'WV 2*ҔK <^*R+.R$VF;}1^ 1j)JR-`2dW1G +rUu>ƽJR(#Y :=^X*%q WҔ)JP괥)JR)JR)JR)JR)JU8i-izZ]\ǹd!gvrTc''MM56ܣ=3qcYwAi*! pu e@##jRi Q-I'8E[i B6V(eՂ@ +OMԲ)v?ԥ;R +g,15xT12*xR'-SPM*[;F@Oŷ .5&!x5dnV-ryn -bA'blAf &2@*}k)Zм0m 2 ê ߽Kĝ(G;T1PHd֑,Fw)ν!$[3 &6DPN8ba#,LѬm3ǥSWamn# +;jpGdml`3Tu; Eu+.cEpx~_ֵ ص->bWą:<(\Aw'꬛tY*K rTu5͔6팫WgorR2}s+)nFizk^iU0+( W;P{KyC2D;A gDVKbUnT\8,I dTWuY t/{ m}늝@GxV5Rpr̓x-AK}_8sAۘ0 -;gX<@\~UtLWVː zwo`USԾ1^A0 'Y7gu"fI2.IPH=x?AWpSzH\Wckm4rJBw*$ctQ5%clc3=A}cwQY`@$/v#G6ta sj}>u2 u]eK9–#׋(læ]na@*qh}CO) ȧ9U!\I|Cue3ZIl  O<|1uw:#0,Sc*AMw`o Lﭹeڽl5qw%ʫ"DFRNHT6³*_F +`x=ʽNM-EY-TrV]ʀ'_c6z63ګ#jZ+nȆݚE92CZ·tS{`$_ !| wn9E[1.vP@'$*պTGQpw)JP괥)JR)JR)JR)JR)JUH8o.t嵸 ebі48<|eO]kWvB*Hv dyn? +vJɿH9GC=ŴIҕ`X>Ul(ev,]17;ܞTwqxe(o01cn<5\iVM *I#> `u&zErޮqr$_ Xʊe 7UDw8٨30 ~oڬL}+g\sV/4" f%r''<9d` iń1ع8퓊;pDh ' +SPŎ㏢PʻXx!g=g=W\2GVb6Tݸ> +ɵ&'h`,W*r@$qn*eorVeoqF܌ WF0TF5Or#}O[$b .+\miqrIi9A89TDsB$}0C P=k*P0 `{ᠹ ~6ۜS\hwI!6)IQd,dI6R\_G^G2画!W۝2&巊TA{ޝ5ޙ.ql]c& /B9sT1!XaX& uՖia4Izf6py[Z3 V^rB\czqS7P|L2EoF\dc5 Z6,`|=ETH6ˀמ{V:`HdCa1'}u6-j+rat] cܬBDVEhU`XTM{hzA\unRJ*'ji:]R v,r N}MA;ɻqN1FCmYG 7Q[;_߾}+*E}n{I-cHNݎ0فy>z[汵B8d|J(#} =u-ugs/⏪i*To # 㚍@cǑKdhm2;^ֺMCmm& ˔No(wr8\~*4xwPYum4\ gβ/V1FxYLvHԖ7zt;ΨաHٖ2T28@")JR괥)JR)JR)JR)JR)JRH$X09Ҕ)JU*; ^H_JR)^ o HVq*GzRQ`Ak XWlH' +FOsݬwRT> ;|]͝?^Vds@C )VjY N]U {r*V=\IXm}8~Ey^(`3;79',)JRZ8 3WU*;F2}% /ȯjR/]P(%P qd N9JR)^7VpFcy?R8mwr[ YT)JR)JRntkW0̧>mkOr}׵)JR괥)JR)JR)JR)JR)JUT%F g8P~է[Cqdd9-8ՅiiFO*3nY8L>aH"3M UsYbNp1=5p,XqYNS V^YjVV["͵wm^F0H9C^q hhl rcgl G$Lbfm|0H rA$vNcp +y* _GdqQB3 ,+Y<5o,RZ:E Bp}#ҳJR)JR)JR)JR괥)JR)JR)JR)JR)JU k^ `8sg qՉ&6Hؑ/;p~uy55y⹂$5# p\Mi0-,YF$d'n='Z->2Uzp##k y\Asu2d4\q^ڝ:D~e@T +pG$D6S/݌n8Ͽ93CK8"Ť1HkvU!Uϛی緽mޕYGgF{n.1sV\_IW/oqhҍD#k=>Q$id㬅J1UVF]8ˇOJK䳎HG3!U*wq8G%{v48j?#\Zߋ 2ܵm7* XЇ TnbwG@[ )H`m/HZ* ;wR$-G| 2rq+NMBvM|n:^C);\vǮk}1ֱ Rk- =0SPo ! Dx 2AM_A$ S a5TrW n>,IztE xnAH#[Gwɕ$gO*F6I%^>uI!:B1| ͕:ݞXqA&xS,0sWuhMDm aKaWzq}+.;${wXd$|;,sgu϶Fjíw6:|=󺀣a y8*>BkIXftYXX01uȼQvY-q|:vȑ3nj6PhBGnX}7Q}'l|^Xjej ݲGXPI/F'm +<2N۞+;YtN$]Cv Ώ#;&xzYޱ\"P2I 'zf$3"V\`5ӿ!rΑ;F#Lq35{6ٸUhLDoe7ȭϮ3X3rFHf9'|0uec g{~3^۪jxZY%?}l)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JRuw$Z +|%a@yjF5Jxn-Bf6[瑑9KKxTO.r_d˞䊑fC`XLm>I_u5 a&8XA՟JV.g5.d(N~@^,`{c'`jCm Y؀{EAr+8p*)'R5wc;0ȥY:( 2 `\Rl$^UHׄq,pIh92q^Ijmzg⍸*9BuEdxL\dd(5`n # 2s>JɨBFpdw<Tk76Xclq^Ze龄;" >V])Q K:,QGp9+7zuIveT<9f }g-%lj + xz{܉s-IccGlpqY74PJcr=y +H4WOlރ,YT)JR괥)JR)JR)JR)JR)JRqu/Zu#čв9I>* cYu>ş6l>Z=>ج5HHT#,ǐ퍀!ߎ*-.QI`:$$gbw7|VeťVwR,hDeM2 c׃^wAiw,g{M;w˿;s5mZͲ{Op\=j/WG$dNH;؅R1rxW!ҴBk&qHǧj̀ DJmԪ*`9*-/P@S2G?mItzwqaqi'w]19ب72~ou-J45( Q7ck$kŲԁKC%@ Y{LC2\"VAQzG/RG]B3ZǃtFdyDa+/Ug?ǔAխ,B\^<=(2&G=yk΅䪬S +.ݪ; +KyJ)+U:z[< 3ۍ|J^څTy; = +sX}Mgͧ}TE/P3@wƶ_-fz dZԖM6C*B +=!{V-.Do$쓡RLjUON8ȰʙaHDR4ݎ6C|̐b{#"[DYFgc{{nYUeB(ꬸdy~*xřH݆ۺg嚐McheRk^=PH``b}FФP~TJ r:<zgI gE{]~a9#YUC k-KUi. +Q/9EeY벾` ^i mI?IOYw%Ƈw9sm;P*;GrIHńJtT 'uޢ14G(ABG>gjlՐݸm#ͺP$$G-o0V5~Xօ{`~ud3҆ m[S[pcH[ܠwZƑ˭jW%&| 8]G\Q@ +Q$0͕# G tLƻ@#>X hi:G5q r_iqHepn*Vv\^*gLcFfH$8*H=a?Ɏ;|WtRm:~Qbߜ 5kjt,wEmq,}ʧZRĭl1,X^ "}Rիku$|PG>5ˍ>K\3*ܬ ̜*gTkifr UAےsRv| G&zwj?-$-q$A D|'~l-XîUH\= g'ԓ^O8E]_wS~s鍵m{~IMJGa襚i$bFIHcbcs+tЙN6;m +8F;ibACL +G$v *Okas4 \,K򏝨G"8J\ͥ> f42y5eX +Υ)JR괥)JR)JR)JR)JR)JRym,H16\˼3\ۄ2;>8-O[Ը6TE >'C*w0ˀKFޣaMY]J/ PĖh!r3N8; FܷbI1TN[6nd}^Q=Է2oN$8r}Ac`=F][NX YIvʑۗ feFG # 1Mn[B9 d`XZIoqy#Yל!}SU&TDH`ϷiG5M Lcw NXZ=ƹKA&;!_+Tx~A _30*YJW99|זGU i.P'k n;@8&l4 I!dF瓗rȨ +.C\ܰT F@qFEm+#g|Wɱ!pHX][<9ʀWHA50`CWnqc2NZ[T C.~c5gH sl.;9\DXWZ,ܦݽBCa }q^G#Ʊ3z$JnҥB(UV.-0dە7`3X Yw\"Mյ7#6̐UU B}k+I:m@A!gbr~d𶴒}Z+q$BG>z_NE +`mgR + +qʎ>UC+dSa-=+2-bHTEUFa|ofD^͂W?I7Hv5gZ34$c + !FyKG[Td m6&MxѼV6UA>ͥ)JR괥)JR)JR)JR)JR)JR)JR)JR)JR3'JR⾂y(FuJ ;sY+_[hs)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JRo1q0 :qIxV*p5`x*ޟS ʪ vRg5M[d6T,8<$zxeP0pNw)Jצ`N{W[ȧ *jكǞr=d)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)VK2@UFI$&N%E&Nq|OΤmċX3TR~@^5`=iI +E +=~AW{H5$m$r1"(&*+|S''j퓎QԖh#8]7J9ː*B^0AnĊrUT s^Ճ&k2nǬZUOo+~fI'`QpbC(NCHR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)XzJpHYyVzbtrQ ~#m8d0J0 zҢ[ 7]ppr hf .r2%w\1ss޳,:BA*{qZ^k9IGs6MR9!}N1-n= <^ 3Q?maV\'BGH킬~QRBѸܬ kcec7 &92=3,3c8Ulc ) ^>Ӵk?{FRF}bXRZݳ[FNINs^q_(۳rMKOHORqX^,qZI tP9l caotdtdN>?iJR)JR)JR)JR)JR)JR)JR(괥)JR)JR)JR)JR)JR)JR)JR)JR+$ic$) EW;`='o dw!@Jtص8ecB6Z3F}PN''0F10ۄ\vs޶z9&E[Ik1m.kmld? g^k2Be$aki)J򷷎vFFI'$d׭)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JRBnܗ `2tm1^z&5unWeS@N;~3JTna=Ae {ijn.51݅H@mW$:+ZQxrT9VpqJH/lvĶFXыwrXjv)JR)JR)JR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)TҔ)JR)JR)JR)JR)JV)JRfJRUiJR)JR)JR)J괥)JR)JR)JR)JR)JU MökQgKi& +7*H݂sޱ?6)I-vPO]i zw1˝5 +/ hByLh`znH&7){^Wq b#99Œier/m #Gr^(ʐG9ʆMEs(~jG Ƕgֽ5鮭H&ئMF W* ?mڝ.wn;cn=sҽQPvSл/ƒ~cv*`94,x` R&ē3ް5+_Kr s* i{fY%N`r 8f +@$ j(#"q5ZśPmOӕdaۀd*?;g#vp8sBE`C%ߪDc3mIߊ˂n#I{3^wqoZn[#iB\,iO#=g[x+Jo)–ʮ[(%qA'*/Ï̆kRRFɼnd8sSUhpڱgPx\nzʥ)JRj7}ՌV*0|wjMNAKxgt7 FwVŸg@kB;Yyݕ@|]1ʬ=R]3""UTV=ޒbmImǑ=Ud*ē۞Rh% ?V}jJmouEmuN:a݃H>`5:@##m>K)dRv*$.6qnFmJ˩9i$ djR9\`pppAVIL`pppAH[t *cTbG lTQ]_9H8᝹qUb@'secL4>x$Ω sXڤsnݶ>!OǪ[Esё9|cwu]Zx1+vަgXړGRGk%($$A'E1>`ノư5I閷Sc|685?*"`r;\p5eEXrp9aW3$`N3V)@괥)JR)JR)JR)JR)JUD$XAZ6kEmNq"{ybQAmsDž ێO-!tP$m<LeF #pf[JV`& /Z0>ɺ,҆R +,d3ZKN5g*k8BBsD%A-J ]!9`%=jے[j^Z$2,Y60R*ӴV\LuЀ}DH71R}#YY]b%0 +p.F@t[CYiW?Ec\qY\.#$kw3>-<1}Ο$Yc@qQ6K%ih>LDŤG{61矫O༺z7ym=sX׷1Dj]RIUcԊ Z$H?{mΠ.K~Vinʭ: p`2ߌgSg+a(PwD5!K ?C ! wbI<}ow#,@ShTmrO[6 $vXLEk]j}0:9CDU(o>.[ϨIJ $hc;"@ڌ8=kx{;{eU[n:( +d*=w%2&$kbґ{I9P1:WdapQ'YMƵВe~W:Z*&l9)F%jŽy&4obKclԭH#>n[z.O +!^-dsjaTbbe-u )-Ee6X0'n˽_N`k'k^dҢۤ*d0EH"u\[M,X1Ǔ[j)&dq5ݼxH]*Bc9s-g$V$jsy5g}"Kc3e9%Y@?!JxhX*J =AJԼqKwBu \<EMCZ9&2l FqO5s|E!RJ\JrΨʀ/0QAg5+.}*>"i"@W,̣ǭC]4Kb$%wmr Ŏ#Zi-EϘ_g 8 +Kѭ/ȉ I'O9q@yڲ/~O &o@.;{t>{#›T㪎v>͓c9YaU昉Iị=߁mVC $h*paՌ>5+`236}ڨ\@+u;;+[ͩڹU p6"dƥ8\Fx`iQ_ Qq҂IV@*9jr}m2 }Y@.jq%BpFx*OR~Ɩ)<\Ͳ0+Ǐ>m TH)e.۟)JR괥)JR)JR)JR)JR)JRE.Pp2@>dղYC,=zxQ\ӎt;@m1,* JY D_,cn3NO6C/IwN8,؞;la7zcƱF}smm[#"ѭ"CJ˒WI$ze0Ir~EG884;+h^:oGg;J/XBPA(ŕ$c1'.*E$wdl! U#uy*qWm$pѯUj<=jAux +Q(mSd)8 (@f27'h@m"-fLcrhiD!]ۗǜ9d[YhF='I9&Cd I ۬*#p(O=jÚtC #$'1 s_w8yc ̄PȬAPzbot5΁ ;0#k4T@I[/KI5mk`Dob]{f_i[ t3dc<=jK;" \=1c|U3DFG#dZ%][,sOb0`  qUSGqp#茦XrFIgޫoD>w2{ֱ䵓ID#.)b]8ڲ4ۄ9Q]ػxV]`ˡ1 #dF;KSt;Kg+5 +ԯ!YV1o XmRy1VM +\#G"V2A5ݰڪa îwg-d[T2N zVe`ɢYJ\*Kf=óٸCy_hPh$DHގNH<֚{ܗGU*fDr[ڤk%)k.BǩjЬߩ<* IG<R1^qX,C,-=_ iӘ۩1.Ϙ ?>w~&O!ak8v +NnQk#ǰt`d` +jP/BFJ8on0 }"K;; 'vgygJUTX;XLҥ+ +GwF ܟs^vM!XW**SϠML0%pC?;ݜvGHc9 .|ğZihcc%;'²>>Wh߷ny8϶y>ߠmI*TѳiXĘQv@cYv  GXVBJuk`瑟Y6e j";q>Uekc!$K3~*'h W~ @7_מyc–3lYOvQ /qPO==kHf \ n#cT'"i Cnl؏E$^^UV#@Icckx#B(e8ʰ 9ķѭ, A%3'h>qX0^\P`]B351^vq_bA "Ь8R3 !'<ϭUtK$ r= {Tc|:tUǕ[W~UH7:v9ݷۜ}ȴ+Kt !V# >h&\ *A9l^'q^l&XȈ60$UISNҔ(괥)JR)JR)JR)JR)JRumOjGH88O^uV<&aBC9#qqm,IbN:ya̡ =UO ׿䬪6.$Le''̤gҕCPԦ Qo=6a,~e!Ԕ_=9#KX6ױtH%2,(`! ƹWybwmiPvAr~LO +)JV2ޛh=4 +~.pIgVu%-: q׳HHVLR,ȮG 5})T/WmBaS! v*R'KXIFIE^wMibyH#N=Hw5jxrI$Jhہ#+O:PHNp{ py#T5d reG*JW)JյwNtXKoUݧ#*JkZ7U}Y܅EIvsquzN:9 8zg̯kȱTvǠC*++i23})JW1 #QB? $Lmr zqYT)JR5YhFZx6G9<*N,4]7"$c=kޔ)Pk%C[^$y6 )o)4r *#88zVf)+&3 @VL3,)0ȯJR)Jf'a [w߆Vm#O>/JR괥)JR)JR)JR)JR)JRvEu3b¬jr=rMɨ[L15K5ᕤ؃:{T/pq )Π4~OR$q߼pwn3\}'$YZtS7r!Ur=+\Ս!`  ̿"z?:ȖxKX63V*:ZZAgu#+;I #Ĭɜ$r+- KoW P̹N+"nc+Qܚİu9=/G3"*Iw~+A%[˙|T%8|e'{Z+hcM$BC+ri985<厡(oB**؀~~ԥ#1@nsSV6m-4i<͌$2;d}k™U;c*2rpT~aO`*>jf}mۯpZGӮ'L",, + R0̀Kv=;GgVQZ#UFI=;rIuLXyY$Rp>fKaiqpq/-ZIಹ;1 G ˅Mn|F}uI evQ|LAex+ˉ5MXiW(zcfGv.P. sޱu[":a]TTep[vHndAMs;>Y^"rHqW^(d.^D>õGhЯrDV)O A_sn}ka{KM wNF}ivd/gDCĊXcnsQV7ի|Ab*1rUt,o)nxj!鵂;G_`FsT 5ӵyv{)F݊so6F*SS$ $-sc4Re.0q [̧m5L`9ܨqoZRu;Yf,KF#āYwqm'Zm,sܣGs9Dۈϭ_wsp^pK`HL>r ##Yւ[ hى),ZlH!WYB ܎qQ$~ՖYcj퉘(-z/[Cdc,ro19!G}+[K%4N%L%m|ypv/ :N7UpO.{ho#ǞA430\0c`0V=蚓̛฼T#x93zcgkO\Q$k4HD_Gqy[Z׶o<bQ+ ˃c'?wj:UxdFxڄ֯cmT]]Nカּz궖qʳ68m<+KoH. >Ҕ(괥)JR)JR)JR)JR)JU1U%FHT&mqw{&s2rT ?}Yoty}FXC0K?8bs>apB.NͿ+QmF&IIQ2VU8A>bX';g''=1^}'RMEjoӁr3xRJkݎv\LyIWF9EoA[ƥ8GcX'^^lKGvE,/`3ް/4YrFҖyY9dԮ7p!W;4<ή <7޲4{2.ݠ0~u{Ey:o96|m19uŵZXsİ7=4"M6^B)0R7w8*rNr0=+^av`3UM;UR#ڼ𥭹C+GFM̊.nsVM C~r6D8ܓ&k F(A8SPԄ}\HNGӱ#Eb`IRS+&˂Xr۹;p03ڼ¶k%K;E$Lya1y˓GG]%2@F AߑVhi\$gP3nVeCcq*͚.2n+Ll,*VNF]F@&fIdPD+v Ho\qx|Y&7%;ًn.[$6~~@0^Pk;)ko~| i$cAmKDdkb5[J;hœ@R)FV?S6 sؓc޶Qܛ.Ѵr4x+؎9VCKVIzu9j1@`zV<^xcyT[J^ GAPH9R 6{׬HyI. BW vAhMٳ{sCcQֺ#F~Vħ 3#3;Wx^-'FGw1C3o$n3^hot>$o=Cdۏ'##K[ݪy2TzI۸lzWix\H?e_N죸5n hDF' *G=+H弍#ٺCWm[GdjM7OTȀw> PKy  +ӵx#>P)eF6Ñ nø+(Pd3Yb}y:\:!Fv0S:$b&G#9BB)m%wI +U^Bj8ݴv۫y,yq\Eu%V=9Un |OV]lb6n1~X"{d@r# @*8^k<1gNP:0pg#?.+48/L%`91UC. ,X9#y+gut˒F$ VRZWD qY1(GfddNJ.}}WhigR \cqm' IZ45H3ܭr2f`U4q@p0כ2z潭4eV z(=dk&;dQr2`LJH&,öspqMc\xb9%S;7'55HnM N1AϥR=ngWI:s8 }v{l:L"DkX}<⯾P(p2#ЊѢgye*PI!33l\՚Vd04HFu,'IR(괥)JR)JR)JR)JR)JRZ{^2Etrˌy9^ UU`` ʽ)JRF?ݘȭLK2(;h')#_{{y~um|4*Udd)F(ݑ̆U^F@QZxyc̱$xpW lTjtrK rgcA`@ 9`^kKg’=%ظ`SSyOgY'$yH֮-h #/6$U8,;j[j'|2P>Ukku;[oP1F[ϲ)2 =nψl/܁,׿ l Ōjp8/R7&,m7_08Tgm>#˰fJwuϻ$k7rivl{ַT@\D8%uI^[u1wʁ# q횉kCIXr""8#86vYچ=D`s=]f)]B;5/] XaӅ`ǡqsY)JR)JR)JR)JR)JR)JR)JR)JR+OU+WUEy5)JR괥)JR)JR)JR)JR)JUFF Qz!XK:1(9Tܨ?!q^Ac);iLP27U$WLJk9㙢[@Dq*2`r*Xfw[BNrOz]+W7 I[u"XTA<>ʤZ|LZL=3W>4_Djw, Ng`5l劢RdcyW>|Y1y Sm&ᗁ۟JG[{$,7]eOaX2ZK%ӳZWiYYy+r+,=ô-.[6;sLc5,FEFiz!v봂w2HP @`\?h,D5BFqTtWje''#`AV4^utI +qRF; `*fiv 'V?=ciq̩cÎk°eM+hY#}@AP;1=Ǯ;VJS$*&m9lqk tnԌ-3302dq^ɡoe`BH%ܷ8""Ж8#iPE;Jf` m,bV)JR)JR)JR)JR)JR)JR)JR)JR{BZ\̬v9kPޚ?q};kcm%#]X@R괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR**Ue) +ofU_ē4_s]Camnj"Yʰ8 +U 8|ְŻio& =P`~3SPӭ.%-v('u۱ wozԵ7՜lѷR0셷4 G{sj} kO =n`Ǯ\ȭh:#9V><Oo4J=N-:e!GUO~3V:RAqxnRA\@xڏ"WTP\; H0Z@)rG''sż|]e`{9Kj .ͼUe}^ձj C{u8%CyӍLQ22* BO%ܝx.buW[bW +D@SsdkiJJl aodAX!U2@ H=?PIYi̒BBm #۞Ns+H!Kr'thm][wa>V'${Im5_=լFJgؐ_"Xmhayf3Og}}|t|@G^Wt5-D{Y81)##p<|.jȣ+">umwqy1`FF7 +A,\a|jBb=sZ5Z& C +nv+Lی pGykwSxmu8ߥ1'W,ʧk_Q..$DЬ +vJ< 76"@-!j{k ٣fs'J97pTw}ż9#N|CLS]j0iH)E 9U`NqrOplivW;v-pG8m+ OZN'HaXa +!Gb=kզ=.f%:rX). rSZܖ te68|^D┚4H20#;w0ǘxYW{; Bd>ޕ34na][:nT21>jyFqwOsC>v٨̸fRN[ <qYz5'bP +#;wG$=1YԦYBxVhخ=3}U43 䝋ǯVݿQ(!=IJGHXIu +#k 2MvLheYn) +U< +ż[۽Z+NJ3d.Y }2T.m5]>Ye 5L0'uƹqz]XneOwŹc޽.u#=<`!drXd6s5-21*'*w8ϭCxk[wr֥{Z.p[gn3Q:Y8tf"LP^k?OMy$l/6D˸ccH !>x<(id{]C:. ~XE<ӛ[Hd|zuzre\u)!.*1zśR6x%IH+`(<ַZR)JR)JR)@괥)JR)JR)JR)JR)JR+9e:nq*)#5 nJqy&J]e+ +B)㛄 (9=jӣJjDF0Ud^>\Wz&HP#CBM N8?.*yn˩dT;0>殇AuwOusBW39m'JdR81vpN;+C[0! 1;gŢΚp hLA:@(@ŗ$|?5WQ s* # v*+]$TV ڣ8UcxFZaᘈMvRgt ;P{ꁢH—#q81:;b#px9yt>v,y<˸i:BelS5xV7LN ҧPUrxv<]2y{ 7=[c .ňǰԦ+\_ +H +JHٙav%s>u|8%$s3t󗌩Pl*FG{VL,Pߙtah15/Pv>-ܢ1~,}8d8<ޱW²&J\F%x`7d7欻YUEũmP2e)8#AI|:;fR[;H@9/aꯓǡ:}JdEb}HF|>ѴFlyDb1Mp|͜^:%ݔig{>l`28cWq-W*`-BIJ Ad$6)#]] +8\2FA a79b$`OaYi.(^5gp%LT|t5tu h +m%Dy 6^3X4[vTvڇa e]y7`yȀF@8=GjBk`#2) +pG\״Qx~#9oyI2dy>SGJXHE +:HkJW.wyQ7.>xnW=I Tsǿj[V`nnYLnPE@F9𳶎I*#^T`' +˾ўK{UYC;Xyї9H =KϬڼW31#Sܣcn9 +̺̰\]NHz:*ULrbHlc =C"Y(X'R AM֍%ƣmz& + T &m}+t[ f6sdd6c2ay$ϭx_:;,ѫIeHͿXnY.lSlX㥐c~-Ý+K%6B<3g>Q<p$4Scd(YNnE2NYY'6l֋2VC{6Ǩ5AqmEeBY}k4yln'UE<{hRC.3sX퉃${;Ϧs+A^IQZdM*wx@]Iph.Oݻ=یUoy[՝QmAm86q42-Ç9ԫ. d3y>;Ϳ ( 2Nx9!@c>yO[LGBѶcd翦#V)m9*f\ `̶g2΅2ƌ2ǎ9]xkA%EϽbHcVmQ/㸐J3ٍw@1iWPKt(rﳰgF8g5٬$GrDz n~08Qb\ F xvwVe)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JU+4h1;(n~`f*cƲcp# GġP +[F틝۳g8~zҔ)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JUTWpjJR)Jf)Su3LzE3E2)Lzd{3L43LR)JR)JS8idU7 +nΛWpd{#ޛ7qLznr=ꀃL4UZR)JUEN~0TaEW?(Q~Zu~Zu~Zu~Zu~Zu~Z Ҕ괥)JR)Tf +2j3ͥ/!q1qgAw : # |]GqqlFvzȳPo"H}\V,!ӭ$hY°'쥗4FCNDR5?g1s`pFsH5s 6VB2TpG|I>65'FJ+v|slVJM?MI+ jeXQ*$p$HfKY#` +9Aڱo-1\G##{^1LR[ɻԭT;aKPOMVQfX&I +cv{el @1,.8 mk>HQ<*Œ4:d`L )5/F۟w#MT,.FFxv?իC&5o!9>?Ќz7顷C)5oF1)5G\}lM#MT=?95oD|,?=>/-_ݠ_~sTd?j5_7[ɃwcU}[G dߦ7~ͿMPڠIfߦpP[9g~ DfߦyoVkF\Vj$'~ͿMUQ߳V:oٿ[& o_Weoٷ doٿ頵_]߳T6Dkoj߇\u?5x|gɿMS"?oCglnoUH&I''Qe9ɿMUӌ{15^gԞn9'~)'GS?î=)PqTB?T/MjɿMPB[GzCݿdhcdh#Sٛ{UcV=[GՆ>oOC߳oU=[ohaR{D+߳oN564߳oVnr|? X95Cg ?GU8󚨲9?"Si>Xe6pLcOi䪛AUH +|$'=SѪ,C95G9H?EgsR^KܐtViJP괥)JR)Z'-~sTT o'V6,jBqcXծ g3D}P.ݱW~J^95$yP @פ^CdrkC;}cBB'j"MeFPe +.qH~ցz.;Iv88útzvm``B1ZxJ4]uN3HQWDN6|l }[ьVƿ]LmDE[{116׻fƃsO%tYѕ=H*ms?#,9Rp<ݹ< +V-bԲ~@~UXukyz%LC2JdjppF-~C<&m{97dv>qX*Q *n0P(4UT 8Qs+]z8fm1t?58jm~8_q1 2<fM8B@ + $rMcCAs" Y2+ܫߏN{VoaPgIS'a`m+ Cn~Cڼ7YXG<+:2I|{Tzդ + +VX]~UV"-gDmp#}qF3^[mbUm'q8#ڬ`NJM2<>'R_'Oal ǭSIhȎBCd6o>Sv:sۿ^wYnp$=muaGd2ۯ$! 2 dJ ֭dUB3XrZb\Y4=ġWrG58դpf4bB*GpT zUX];NW`gMF dHVId EylJĴx߅%S<kRVvpb%ʌP#mPsVy,̓J2m `c"Np;{א 8bQ b3Uٺ$LB Lマ9+[R3I& [Ũ1~V"F*¨ǵl"1_"6m>{^Z/8`maiW=<ᤍ} +xTyw4/&1aT8~Y [].Rjb`cA[bY` T?ItJ*߄GcUOf g=@17dvǿdZ_%1G +o40 *|}u.iol.O~8⮸m'bf'@?]xͯZZ$R9+Î@bKskuȷh #2'8 |>Uwq-*mdղ붐*d,J7qK + N^%$Abqz +Mf,ʬMMT8 1UV`}‘W6"I k`Ku塛a5i$fs:g( ^[JW ^CR7czmby2gU,{8f؁TWjgګ*h*)ީC4PMUMS$qAT5P1L3T 櫒(5 `ѻ!VJP괥)JR)Z7>6LդH8 2 LgJX'fA8 r{xztڽ_t + M@~횈^:n !fOo,LI`, E[.qmnP7GHH6wlUG'Q\\Z:Z\MnC?ONav}vyNqȩi߯6[dG7I.$ml085kΑ<| +R1X^ЮծM""c ]GO6W&mE݌}w5 N"m3oQhU + >QktU{;m4,[ > jSAmq6d!y8yY6\]L.Ff.CsP]#[gB,Yw3ˌ#,ڶ-mI'bs9~Gl%$QYcht{Ixν!܋++Ky YDd aI$`D --T)XYihۃ7\Ʋe 3R>r8>.`}$eo*.?? {<59t5l CQ@FU=l׭vHFpTol]5D*HlA0zGo:+=bWHF +S[lM@GՃʵKJfR]D[`TÁ=MmgdW*qCZKH6/r"m|w>5lZ&I22z`߻>lqm鶄0W+#>am-:n9AӏAqx2 MCU nx*[9dT[T[@6aF{sSmea)v{)Rplz`z?QEיsu{HBG5H톆!c ~]6^Q6y=ʭD[V\ c?*uPo_5(gՆ?qyOޔ~rIY\Z[N,D+S9 {jz{MDs aKMV92\^ s xjWhZdpT޾ڤKNwY.>V^[_`?\tX@O +,d3 6jF>qșK}ַ4%Pr9{pl.fXjm'ZիǨ\؀zWRl1dxpKr\֪r % 49:n-o|-rlS\eK#׶yloG2FFvޘ{fLrem21psUE >g#_Y-nb +8@cxhζ7:]6k3yCFT!0}-GYTk!$r50x*oamqW6YI\g&FbqTWҕHZ8 t1ז913U1oeIY1hV3qoK pnq63 c&E|W|1,@6+ A.ẞYe2Zʩ$ey7`mdJ+$}^E*rjh5LJ4& 3NZ*AURPVV0s/}>*n괥)JR)JR)JR)JR)JT83gq^$kXba[Pv *$ૻf+J~N~(;MU:I2}p3TH.У01T`.gT  Tgظݰdj+\Ӯ/4UY lm|TS'0\]M9yPR/v ȫv$g*ggҮ +(p*5fTg?q(*c،b.0TT(pQ| Zy^JX}UV;}3UXP l_?E:1 +I6 c5W7mSPGCa(b\c{zUzH}\GJRIۢzaG6;PqV@7U@ +3V&r +R۶sj~;{ +*(,UTb'P~ݫV"Q*4;FG9 $%c5S2_cvdEy5pQB +[xjW,h?*I~JBp3Qr;>ڿjAڔT T*W;UUh҄3LsT5J c7J:)@괥)JRO&`87ۓfSWz(fDNQ)r~W+H?_LP[]s7*'z}ufxo"1Zh3HC\=jq{6|Cvu'ߐ{T^[-Էkh/3dDG{~R}?t片HʦEfVP*AjÓXm- MPљ $>PSk4v%m 0<1R(TI]в)Vx4?ꚦy9U+o?o)WddXb >U;b.P\T`A>\;Y%T. UG'w)KV(I=Ok'T5+}Jݠp0.YD[K۸Pgc{z+mfDc*!KR92e# &M|ust2a}G=AbW+ Dg`a;JX6@ sG5Z+feA~Z2~ +k2-LEfbՑafNsqN*&}E5B ez0joן׸ 6o`{y::e# ׊z|[ŝƨ98QFKY%_"\GV\eiwݥOҔ괥)JRd +GyC̒cDZ*ۋ|Ψ՘(tS$2HaEZnb Sz{gTu76~kT12 p=JD@yQIs5k^Bw"y>|_g|!XYKўQ>ax~lkV`3 {>ߥM~1ޡ+Z25LJ2oĭsLCڢ_qTl#pTV ci jPXM{&__J@ˆ"*v*.;C,3qm +Meq5#>^AWf"bo10sP>@ PC60\nߚ?SO6S5;@f&r.pyk>!@ 1ȑY6uP8 +{d"9-m7PQfG- 66@ +zck])Xx+ UTEr3Sfcii$&;>Ctd>چ54ެpM2I95 b<8ы-1@]khn[HUT㺓ȬORn_|ʂ_{O ͤYڀ7cI +ڥ='F lbX]9*񝣎Ć5h>)kmz=1䋩'0{Vl-dyKq,bV$NReIm>:nShShc4VW(F(6Њ1m+ijA;U(@SĖZ4 S{WjzzXwm?ToBx6_^i=HH>OzPn*0Gk򽵬ҫTVf.SozF!U !-|?׷c + / ERY݀{Gy六bt +=s=U=@=*3V uhBz]>oQĈdr>dU1UȠZ`Sbb1*WLbB)T=*q^O1)J괥)JR.6LQ,"O+xM!:p#""ᕙA)rq["6ɏ瓷nܭO +}7R"&)7(8a=rOKn^I*S3ݱ8QKZ[D2=cIJX)vDoH _F7!T'v +]m9lV-bi#yک9rC5m,+?-棣?w`#f'%A`jP5n)5XܖĊOx늳F^บpRV1lp@^~z-w_\\uZ`FQRA8ޱ| w^4gӟ|rF;mּSfM3O]>9";) '$@>W}jqwoAd0*9Zkq{.O !U"&vp8`YjPԶm&*XLJQ?L0eTBI icwlg>lj;E"O FDa9;WfqLF`@`qJx^n{RHbnG ۴qxQDɍɗ8#>.{VK۾6#onkcօZqs#`B2dkVp>j;DXs^ZNtAepy$yBERḎp6e8a}bj19QK1hZM;rOԟ8UW5{w-±k2 }#i-[M@UY +8kS2yq;Ю~EsR]#| l TKmؤ#?i9%۸ B*Ÿx?/fP3+:EP +I[URޘ3UnjM)Tc5Zwo ?)&:)@괥)JR)JR)JR)JR)JT'-xHy'Tj5J)긜Tn9M٪U;ҙ +SuTjp+WmF[>Uwu]tPUcqfҤb;+wO,Gq<.Qv8fiƙ׆R=;>Dחkd/.s6}*Tu;'~9pm_^h b c<ۖgΊOqJ1*׋oy9vW5k_dcQ9s$`xYٮd+ƅ%nʳA'cQ=Lc3s[}+VB6V ^1fa!`6rf4y4݋p`'co59-.Sd +"YcR!$S|+'Pq7G8ObFxz}e;O0{MU:+~]՗e~ow 2(P~QՄi+iLr:j=KMfLT'=S{Y6%Ҏ<n`xYE Nvq+aHXU~G~2PfeX#}3ڑv,1jIfWB GqAW7subDsR\s; }.x.5(͹_~0se^u_Y%RH$i1Wn)9.Fՙ!3YtWqH_5A,=00Ո]iV ڗ?X?/2C;cňb#jAKkK8.Ay` =l9ʀVUݩyjiS4<\jjJbAhMRVڇf?)S(괥)JR)JR)JR)JR)JT-%c&*iKU 8A5{[@p)d7Lu[jhy5L "OQQ*IU#y!OakɬlgT#3ZH>@ ؊O<{T V AysrH*B3ϐ6v⼃ Oj +$]Pf^9ir¬ {}zрKiԟ8G[A;di Pwt`Xש3:+#XbaT(>mdګEDL`% -Ǔγ=9uO1Gy=m0]#%nڸ8'˓ zV4\–$HT*i9UҞ'B6 +JsYVicpFIXTd{#ojp'Ҫ'bљy\S3>uSE8f4-H='?mŢtМe'I9$rk+NkQ/QY rj4!/]#S$ a %c_i[$l"]Oo\U +ʲݳFStA( +㜁k94Ns.܃V'r$PI,K}O&_G{  + p$zln3. \I~U_TU#F_My^.".rcw]c|"¬ <01'5<Ơ.̹ͩ߸c(SV`#Ǽ~`׬qW$P2y''ޮVU^&4'5@qU jhj5BjբP^؏JVJR괥)JR)JR)JR)JR)JT*oNJ* 8mBʡv29qT3U +*J6fj*h5BUB3JZbz=z HwK.?=ߵy-ψ"-1߈k.?]zh2<dcd@6zSmP +G4T UTۊ6Fxm$$f TUϧLt[$>wvV=i6cxo Y6I?HKgeHb +J LbꘫLsU"PSniRLUj +?IJiJP괥)JR)JR)JR)JR)JT'tC5+Ĝ*S5Bj*晪T4L 5\ TUs8j45Z3JkcbpH䫣hĊT<~Z|L~, KqYm+[4):2:V0=<Q:<ӧ?DÏs؎O Uh8 S4ݴ+\ӠT'2M &8LjHnڧm"bmU>I'ԓ>UjfګJU9T@r&%rjn۵gťG;3HP{9 ?NGnD[n,,j18AObc۽]G)[5&~R0 *9HTbEW$WD,m#k#^jg5ZvUsJsT'\Su7@MW'5p)UT y@QBrrx)J*U)AJU (({HbJIZةJP괥)JR)JR)JR)JR)JT/^8橃Vj8bL7HȾ̾Q*j[cFE X1*vxe]IR[`ع>_ wx#7!D9@s}׉xdsӕ?ۗn&()U+黐IRDv"bjkm,lhχGwaܡz+( !V^s-rL$%+8ϧxW{2sXRE$+ =Ew"VYDqT{UyH2ӥ^1l9oZI]G4998PjWijPUąOTb3zPڷmFkam[h8'?!^Zو07: # 'WnzC‡)6sGzi9 N mӚ)[0(` 1L*m΄c b7 vjrirU +sf8PIKӿnqeOymλYX|2G5m멳\gtBi.g$@A)=qTqFUN B隥ޥ9d~2n- + 󹳞87չp?.k,3 \UChFF 93*˟?*p(xFA^j?IZةJP괥)JR)JR)JR)JR)JT'u?xHUq⢼0tq=Yo5o$W)B^Ϋ[7$Wi8? }7 w SW}^x>d'ò.;uROkrG}3c▖uaT0۞?u[ҭ{s!>`VHb5-ii=O:H&F'}nuj D6z\}*PS͜7:{0H\g c${IfYږ17Qb.rB⫩}Ķ|`N򁳃Gej6mfHUv*w׆lk1,VP9˴UKj7pTW +Wqb CXZWV $[Teci\>ճXX &$v͸/ gJKnNñ@HCFG39`G|KZ۴F4nm6Á0f| 0nVX9qY XHơqg0Gr~$*Jsg8ԋ^EupXʀe(R1ǯˋ5 wwxV+ `ޥsgYDvOPdPTx1/c,eݼxy Ͽ5p.-fK(K$!j(bF'9%EV=dA$U~m#Zi~)VoXqX ]<Ӽn9lm2n imP٪Emmb0ϽY"jvwFҢH.L + 3ڳ *K`cHcҩ{RZ#aJ1j`Ŭmd˸$QqXLMJ)$vXP*6Ǻ HAm1V'xz-.w7J3 msUoԮ`r;X + 38$ p=+YV.c$gso]NdWY +>mEh4Z6w+VeVcsm@a' 6 g^mcO'%xqj3JkY `0V! ѭa.{ 1Qpbm[URzv“ ,X$+iVvb!:o +)~Imk#m$A?խDZ {ֽڍņI̮x8X{;bt\M=(N*_{ +NJm 2I_\ د ǔ\WfmA d9ϵbF=&F,r}p1RXLtՄ%98NA*'Jv1Kv#%);psMlZE\!<18IQUդHm'F"%-Un+89%CfmSSIY[t1U.cdڼ-l4yq#v2ǧyiiDaO GRW`A= ["l&3ʔ$yɓL2Eve}ȌFиlnUԴ- 4)L},cګsfbUʅ!`FFx5{#K"_˴e r=aRq9>6ӶqiB wRN!`9uc~9rN91^KrҦyWc]aa6mʪRKX 1Zf#;67eAP9"><X  h4P(r88?eHO +ܣ 0==`A+fi q0e\x b24 +IeP+ɑ-yKkn+ $;;ϛkJ{@.l+LKyehܑ}RO[ )$NYqHF^$F:.A +{#Zm'Oxa&f&`\T< [RQco0Ca]3֦/Xn: +FJsǽQ1ı0qK cd[Y,3IpY +{̓MJu,T"0Sf/:$Xgp˻p쥮p;˹!Odq^mᄒi^>7N^׺C^7,ݫM1L3eF=;bRA+=IN {`8U6 G+aT*`zs4>H-fI[ޔ@i2 )Wֽek.MÆHP0wc~r? gb,~!6Ȧ+!ޅq8F=jpq+},IsQHK#WQr=qVǣJ#o$#`8qXifKӋn8MirvcNOT ^|TEVUV9 z}ŒY{duC&ؐ qzVkey<zѣy +3miO!\ ڬѾyY&aa#=yE#kGWBbݹJk6+)ĒTˑ[kY]3'a9Gߛҳt/$F +`E2_lP˹*_hs PsSƨ/`ebjzpgeYmp}9|8V[!edavWg+Y[Ϲ#(n kոxtxB$d1^;x\[ϗ#u'lZT{B]@O@Z4Ӗ5VfEBL?%{jz|Z '}U:4&yA oPpob+Wr1;#>WbAǸKEN; '9 aUóM 00e*TeOW}o:c)scs^CBcggA A3ޭoY [b/@;VLZZpnvMTU=T` ^-g #(#"rXǵQA"* 5P2*ƕ"LEWR}jyW8,>Jq_+Өۑv5UTT.)P5R3T4:88mTxrj5p9Bv6Վܜ +!^*đ%$2;A@5iR`vqJ0EP*qTwzSo99>$"ԓR"r#r*U qW4cU< +fܦ,;A#ZP}<ǑL)PNM]jdT^TUIUjZ^(E[jfsV5N^n Wdv:g֣)JP괥)JR)JR)JR)JR)JT?Gq')%X#. +O`5H3!/3>dR[ )&Fd0\g=ν(TP0WV## qZLjMƱ(Qdp~YieI8${*e8hcEi$2b2q +2{j֏m1ąK+#iYse:݈du"s !xFF2pA[I L3 gnH$v5%:QvجBV|wK+žL 0ART>Y~VڬQmZIeP0,IgWkֲіn",9YdQc /mhE +rq B$Ojum+hpʹX +Zwܤ-a`k"VNxUq!U7H\ǵ_oG5[dP>̤ ޼!i91 ȥ<'˟L6k{gms'WDѝ$w`~Ii{iE!XHQO<ʻ0,ʨgݔvԕn/ߐM#}u$I&HudBda;}W>XMZ<ѹ%@U\?,b!a@QpXt +lm$0XӢ97YZX{N}k?Tei+m?rF9^WCkl"f`cB7sMdYIx[pqAjz\-<ʮKm]Sa^#\9 +FǕ=Wڴk3@ҺfTI#zopٿ/|_oZ.n:)4 +@[ձ4D%088PkqlIBUd m9> )#,AN98 +S%XQ }$qe{:.SmCi+_[^2,A|FDmAowm- :QnLl`N=k.^F*~CȨ_OMU b8 `2N=`?]@$#Ӟ*r cITf#!Az[qK$u4Q\ ̶3mmң|7=X\#V298>bXq{TZ)"xˏ.d9zƸ5N mnV׭d4]DyXcT"zr'gGcK]JPq 85%et.'[#HY Ĝ bt8rGz]'ݸؓgcm xY1T`D5˪r#b<4 T -ԯM\g3YMt %lѝqϽ_۾1$|dm~9#Car:m?6j"N/0Q'3Q4,q Kg?WJ!l=;iUk$2pk`ϯʡ^thYTX`{5KK³lls"bx&-XݼnZ9a@N8#ڱ͒w'EeW e2%G e밶irqb@Ic?^DRw*"2lsQ64Pc$dFGF6>O n-%DaEdq,-m[#EHI!Ts^:E鴶fKV-I9jSl +UBF2Al;gn=0[~>Uα^y^.N5KW{$qx®҄zgbKW!.dIr#)n27Lhne"E RPǭgM#Ze2a +k&\rG=jOVtd'c&F! +$v*_y};WrA>&Q*Â9GvA#vkiy"*>U%i JG+ +N- +ON~Y\m;$`5[@֭N!-AbFc$Vi7Kž|AO_ɧeenVCrÆ5waetvH76 + o5T?I +! yV>r5m,Y2**A]X`*R!NаV 3U yO+!IVRqӬn-e:IOl9ȏ* ?TvRDX&UJ8Gq㷶1}R૳6$RVzRn$)hgz'Xwj)q9t ĸ'q aM>K{"3JC>W Gb;וc>hNX)V +Y}O 5:!HGzE;m=la̱)F;>V!9mm {$Tlԥ(괥)JR)JR)JR)JR)JT??k<@{w#jP;9fpsTfLDaGzUN g^j21[ +j*s3>URsv+p謁 +9${1j0 +Njf#"݉:+vVpUMJ)5PbqV3DpjT έ,M2;lq>@Z5wʪ3i*UyHP LzЌ6bqN0;9"58_~b"{PA"4 r$I0T* $Tjݪߕ=W1Wj@=;3U5LQBr1N* +b?ZR괥)JR)JR)JR)JR)JT?k}B,/Qb(ƿ0m}[{`Mޛ]h9!#o+xU0?W^nZPyۻ>Vju*" i*f8 HC;XSȤG$ZTI++yn%t Xwہ V*q9Lf2lcvxݜ~j5[b*¿|y ΤtɮzpG)\#R0XgAsT9V^0]HM׀}4Jk˫iF˜^=*H<$ٽǴ{5Ҕ괥)JR)JR)JR)JR)JT?4k jd}5 @jGwq>bYx[_HB]\"\(U Nx 鶎Y$$^>[ʩV/"3]rU"<#Eڐ[ +,={x+'^gC_%O=^>"Y$36A{YJ(p8?<ۭBB<2H +9nLQIuI;A]- a&a1ʦnf3d Tg+r[bp?=U C; Weۥa 6GS_Mgn%.`^;s^Gd-UHŽrknYq-I8&ӧ;\HKc%D#VI~!RlgA@OjҐR>VYg% ĆACv0݀9k&DT,쁷*!rwbLAq+2Fl!3ZmRr˲):(O c>^`bq E"p6$TQx5)J@̒;,Isg$-yK"X֚8Cw۸>KssbYʶa$-֧f=8:ȑm2߄yG jSCKr#J1 "DYV|`i\E+*Q`q`5MI;5WIJ:;t^n̐d齢Iy~9yI<q2#āvn{gVdrHI݉ޤn$uY\&F &~\UZVWfXI(Ɍ8 Zj0̿xGʧ[=5_һF[qXg}"K@\`I}nK-6^vmǻM{kK ;,*n=2'YZY +4$dT/ Or2F{g?9Q%tf2C;`iuKEI]R[IYqی{7z&@̑%2FOGjVۅ<;4VQ$JW #'c6}`;c[qT=؇d@g[͵W>ާ[Mmj{.59%g#'򫮮iar B"d~UKӯ㵅m31"7r';kZwͼdS!%ᔁ Ǒ[a{> ' d"1*8^7N{VEޡ}X8!;q#-X|$ݏ;qS֡4i($FUB rj6ܝkȂfF-zlG `9JwH;] Żצt"g+'Qnf>GsߜU. ^2_ (9 '՞g2@b-بו{dӬRBYlM_bݛ#4L*3uKny%l]+2Jn\8skn?xI&kd4R8U''+[=2r2H|}= +Zqq{t.Xp}~u<~^F]?DNC},AqwoL,W1!IzE]f,NXz\rg|4qr#b]Bv<}FK 2FrYrq@'ڵ))F%~%׏-㉯XuS=y?]{Z f3o(mzdxV[61bF 9b>qS?燶q[=)J괥)JR)JR)JR)JR)JT7Ь5?!Fl6ݣj'ba%O|E6p<~ِBgX@Ol[O'9rY"MXzVf̷XFu@w*~ɞqݝJw5g|fs% m( 5X^\IyĖG^GSn eTT`jʳfFvv|Ng8׬) +ϑX>41]k${Eޞ:[{ZK[i^ܼfo[ê֓YHN.4;dk͹VV +PT0}+V|4@r{r)>xf4@̧AYu5м `6xm%$p88ff-1PN`>ncy:0ryed:7F`gXKc*%U!sU}#},c*H$dG|ךQ~@$I8&;SHQB+c`lqA#t0ݒ|}uc`L1fS#KL +=F#V*{WYPIP0IQoAŹY`97m'%/lץލH4bߘUHnӜ8V=$z׍334a0UB s֯ 'Oy=lJ\ (Be< A=8g`<(n9ch3؎2ʤ^{TkiKr" x'ϒ+$qLK<4fR) cvf#V OBo;>dMYHݏvb U5mȥIDZŸD{uHU9ȯEҝoMr>ݩnrl9-tpؐ1$ {{כx{}i@qPAQ?JFR@x wt^g*8Qz4?EYGg!3-vyMcqؘF^CÀYId.%Ͽ!7-=Ir ee¦r z +Qm51Ǹ^Q-kK'Qu*X -Gv.X/ 3$g]s4]$e +Jl#,~ *:.K{r=j'NU[.T&}ȑb1NrG&Ry3pʍG^ KDEGG^Vb9m 6$emP y-(bG;~ݯ8Ip ys~O[rJG r*zpN@8\,Gi#g-`Ko* +%4,$goFHsXֺZG0j1 hƄbVqު)\J銻z҇̚IQTޮhe9 +yjl@?v` i9<㊻8SեgN US9P*A fބx5\([PdI)ǽ0(?eSrQcڨ٪JCm,JR괥)JR)JR)JR)JR)JT7?1T]ؙ$|uz'۶񟶵bM/Otw}XMFۭnNuV#,0I+QWX.ݛǷdCĖWnVFrWp!P}U—Ihۄ;H^ne ̓ī&.28x'mfy2#f{c[\۳YQu11+fumNEgC TXsgK[{K8Edn$#1nYTS<lDo=%V`! QO;HBX/s^@f$<̀ bK}^h6@$N=H[6q,{X>Q,0FN+;VdݵWr$zyw]F,dhs*P,{v;k]5R$$2W˯Yl.pYQiWky4Nv'8[8.Pq2D3<FXp{G0 'G'ڥ'ت%Y2p+ +/Xc +/ y[!;coZ jcH]BC8^7P5_ AT'TA*jAB~ + #vWD˄ls}3շ>!XHv67+Aq^ZqF,gMѨSc\\031QpA 8ۏsz.HU˴|ǨVXV0>b8p`>HYbUR0ceg#` p1G -u[c&l2QH'5!FŒ֫lxQYR`VE?0cYǨO5 [w"p:w. +Ԏ5[fI3#le # nϥ{i1ǟ,#i `;w,K* n!qGlն6RP#R k’Y(;!yV8#ꭺE{ V= 7ݱ}׏֭DēPyHs0$cY/~}0괥)JR)JR)JR)JR)JT?w|+Kx c$ Zqs*LoEE' cp=GQhNfwn`"B?*FkM{8i,K0\gzԭwG<@un?h5NEP軣*}k W][w`12NՓ~LM-a3.`1mR'wW3H݅t29YZI\ɐľb*k/0J1Sws0HpOVo]xo``Cdl7@*>{rFHʣMw8,]+Ȫ7 Iu6yd|Hw+RGXrKF@&tRRVb2HUyrA{i1yh rq $N XEt2,FSI{V6 {$8?:H(J#jӵ{;keDo +9>qiI6K{J;\(9ڮrswl m=Gj$ Qs8S{\Ɇ"Y8]@&= 5%j6v +Lu @;7+qòtK k0wx9Ŗ+qnO*Čz+\l, +N 6@s}m/p!9!܎r=P$WO$Q*Y8kMH.+Yc{PWkav=RAm8( K;Zۧc䏬 +xu-|䀭Yq@sU\,q-gҽ4Kin X`xtRI7*J)1<63wH!X`Qyڋ%V +ee#$bݭ8,Ϻ;v݌ as_jo?k2̊w5(&Fi N8TwHm*ZWidQ٘9I& + !ᑵz"kW? P{35 &Kpϐp&ᯆ$Ƞqq!m0 z5m3kyLJ̧pC]91Ӡ"V;XfvZbRFQI_bG#O[Vԕ_HapqV = 橤Ci ?4x˳q[9QM hPAblnq[LZէƥk b50R=JSV&}6s&lr aZCdR0r 1#Q^[$lJ|Gmomፄ9y BLKG^}Q YTuRTcqkh)@괥)JR)JR)JR)JR)JT?t/Œe??r2GYiR{=ܮ%DPNT'{j B +pqp}VZ[ h{jGjlWbJ1U1M9V~rsxjhP* 䊹~UՋkhIT#+ޱ+URIۀ9<ԨPGV$UjwjӁPvnjUZ0pMSn@Xv +khFmbc;I|Oy7Sqݽ޵UT86cdV7 Da@bҪ/jmɪު~ZE~t;O@/T1jHU"W01V +0pPExZ[mXc{bjW:&";+V])|^}ݨ1'*qM5oMAsh԰$Ud*\PpH( UTҪ'QP/ +1AMXj[$j1=T88@E:`2=q1xAڨ +V 䫎sU`{U~x|*1zKj)JP괥)JR)JR)JR)JR)JV&`DWr#3DGyX?0J Nݯ_H~Ra)H>!cp)?  +_-dUZi?i-פ~`,h"'W~.Pxn~~o!O?W~}Aim\,$Pna'0~ۺXIU*MBOڠ?[ jm'\uO|O|Um'?뜮"0*i?S|˴AڧNYh_֝o`Q%{?{W/s\0UO.?1~|+wڢ?Z_/tˌ~.2*k\dSuyOֽ\?^a'q~ּ?kCk匟ʵ)|ݵI ESUi_-W[:9۷ ]ߴGVI+~J% ?85o>ij`r7͡TxZb)ֻ_E?Z_Z_)?ik\,ef}ǒS3JT_ ֥JP괥)JR)JR)JR)JR)JU2ƥI>sQ_ r;?lu ]EKLpJ0lcՓbT#5uwfYQ1VX6ڤ}[iVDdw]]uw:31~!b2FF=V[\z9 AAƽ-;s/ ۜN; +-g Mq\=_JS1LWۼl$S"Jdnw5b*JSqqN)oqk,NpAӸB+ .^HY :R{dzgW3J)TbNE! w\SGeK1ImWRbՆTWXn 22@q5v)bJR+yFV +2Y&ҏk*m70ᔆSUxQXւ3nʃb1ZY.*pAcJR)Tc}ӵ7Y:n7cU)JR&F #$ ǵzR)JP괥)JR)JR)JR)JR)JR; ^m"#;i$U$0l/M`q犽|aK%0i,S*IIެxs:_{çĦd%R0ݐ K[x7`C% JN_MVkTw?OpWnqQ0D{EHYcﰲ9'>:tz|DIIDd20'VeFva 뫡ks[: ru*q[\xͧX@8˟'][ +BԲ9Qi`4nHb, <`Im_p_C)m+mXPYx9yz[?[,)ɽ0ףxeKzbh]Y8U֫q` f(“ӕ]p? zXFKρgPV]Xs zֵhtKI.f QRxuK7:fCհTn!Lq. 5|\Ce8 gfQ[,'p*6{n5:h`$BhπHnzѵVzʁ% RYI2q^ܖ6Whn'jy4//T7F%Xe rǤ\=q՞܋uiI+&s)E LT,z䷩<,BHccQ}#{{p?QшE@Py8]3jF66B.%se$aNjax׿nc6`2s*9 s޲d\Mi*#d|`ppAWfX'jA9f{+_kv!QBU4c GsbOe̐G6ct r>ck͑Mfd9p ^AxYx4=!UXa +;z׫^X($r$d# !Mr̲U6 H+~_bYQ`rѻlVP `[6FbFqyNjFy.",f69dc=OVki᳷A$0V%QQp؀N2@w5 Xݾ!Z;VBȬN>\J%ȳex!02EEk 5(d+'w1 'NB\w#;_/BuXFlj +m0Alf ] [@ A\qqɬ8R KO}/2w߼/ *Jyu5 +)">`K v0ϧ5M[U]0D1Ię I>mYc[;UDw- 2!Fx*;8T%f70m_EExfqe&f. NIfON‡v ɨqOcē<=a]즩qۣd\nf̫^גwmSpYF1ci#vZLZ "\&P#  3mo&]Q1Yc}˜!9pk"YC$#6]p3>iב\")$x9c( +>Fx2x=7^Ԅ3Eo ))i#Y"m  孂+Fd8nH}3ldocHr0G* Z]鶒sWȒF `E{b`Y:T -#Vu͝d-H$˯yc G=UֳX^xz[ {c*'h @%b8bm's^kṴش{[e%v`N%ڠ 맅jDa銭վݴ>I޻Jnxk ] 4i-&Eգ&,]Cz`95iv՜GlFH ywN@qgܭdL{O`#t3lE&㹆i[ 68<ʹ2E >#Wy,@QNOdisoG,vrUBΡ;u!W0C)VYOi!MEGtY"r#Tc_ hLwMbd33c~*C][{e#$ˍ>K䷂emrS"Jr25!4A *Н̑B?]x63ŨMI *2ÐHȯ;絾Xm3272KfKiK rxeu/&-V6*ev>V* <:]'PEeY' T$}mVIm;FFA##@xS-mO6Pȏrs\djcv%x#cx![x5s09j#ʒaOT../trFHOn>|W}Ÿϸ''`|-(>:ąI"8*SjFqr>uM CI-FsqRWsL.b#ApppyhhwYi"̌:,HJnU'99V6m;s8+O[]%܇W]L."D +qoCY,%ԗRE.0wU麟cKs{gm)CH9>UkkuwtОƭ2Z2 ~zΟh\DZÀ8$#85~Mvmn-d'Ҍ= p}mu+/%Khڬ;=I}#\E-s4aܰzyӧn3#2 !Y.ǀH}J;{E/gRP䐅=Vћh'LpkmU@@%9zd |c=3@y<)>TE#gp`eDvB(;wF (e7 3VE}oquH-)fޠy +y `wl.^р!DM? O`ZfZ{u2FI2xvnr R[!laD6@ϠIҔ(괥)JR)JR)JR)JR)JRXҢ'8w꘦*skuu AExYGdcfbNY>;}F{d~u0iqLR&!'KzۻfFvצjՕ8`q}uTuR=9bJ5dR2F b#1UUh/}~Gv|~Z)SZjdRI)(*UFUp)E`p23*)ǵ1J&I3)S5wkM *v?v#5f4U,[ d殪[*A?5\N)U`U 98U0*b1L1L +bV)@괥)JR)JR)JR)JR)JU CXbuYI!(.k\_|BFvv2sH9E+smqq(hFT<`F}q5ݴW^BJ9&%NAuvyI1F;kn 1QMN'$ ĘP~*[Q3W'eHה~&3H0;WvW$>VT!-M35*. '䫢ZE*Q)PddpAR?tU#)-"9}*uH) C8@،u+ci-k)9a@Hj6n߂nrb!_*brGdqmBC[#kHpeW 1޲~+$!`0r pێ9U^EoԶ]D +onA#${8T={amuʮw ݁5e̶,q!VAW$ +;WiAui8=`[z=#RKVEމ<s4+{{m@KL0 Cc3^z-@ I!Y\ ^8ubyanQ61/8Iq#\IJ6EQ},w85l'`r(QԌʓxG#4RK$SVT4|e0pIUր2G$2,WfeR2+ |] o1EIH^Y'sYkY"x$ +N'RG=+9*q:dW-"XbeNpYJxjqkֺƭsl-)@3o.K,8'[ _$pi-_Tȥ8;o[ḫ0@yٰ7{js4̍хbJB A o5T׷t u:-UByNIΧes3,B'=J<# zAA}Ѥ7|Eݏ=ɰٵ+$Y 2nl) #*7;>uyPQWq-nxYֆ#x%*7%N9n7$rawF0Bq;Nx:s[zf,Ӝ$NK,t۹ ]m+irGn\Z[]% mr 7'M]WP[4-*a +B 4BȷLӟwYxA1#ʜ9nVnktQG9$wčo]nՆTׁ9<r+'UK53F$lȬ:kڲQk*[K+a( %d{W5̎XS"`nA#g Q +3. +2jf^Omp#@duOR$;#XAe40]Vnh\` k5%eB[ <8=ʽgrL2ۑďAsgE ;?>j2^KG,o WJiX~#+Щ ZlHs)˭pDӈy=br&XvI5pd4wPUB+vX1jqu#2ã)#B*GSM?Ys2{Oj"D^9E<#⽠Օ!VRȬw[JKp6,&rBpq]-'I-$YʜL0kdy&O9$@3!fiug{v{x)%~T]&[}*kc!{y/Q83P,0+UB/q.ul(*T*9859.kRF줉772˜fFEmH9_0oZԡb6Vm ݸ'ڽtMJy-XHd9y}qڣ>^^ix洿kb2UϨ)m/l+"M$i!ˉct0Agv"m!`XCHw>gPty^F]P4cXva:rͬ + sH1Ңln-B$Ynwn0y+?TeHR|`hZ>rޙM>t֯ghYb\}<9k{hOu$@*$>I7O$.A$j;2IsQ\KC-1#0$vSj[b[HIf`)޼]U_%aTK woV& V.:zs_~AukoM81m; ⩫,R +aU A>tS-`d6;s9 <%ƛs0.,(TeW|K./&bKgm50"R[{zVӚ׈2N +v0O!;xVg;JNXH) +"r@F񊞱Br 4ضѸZ;Kɯ)Hm6_csaߜ+kMEtͳbWpHP+KmbvmSJ7G88ʳnCdy1W[W73%سD4# +{V4w4 utv*x5;!C(fH7:XzkT~86-JIVG8Shկ.2C#͡A<}{ +k;VJ$ĬSJS7'fO S׋[@YW pFS\nmeҦ" +d`nG_aڦptyJF7d3Q=z=M -r&g;H$Y[Oj^ du +UvEhDsn$wߥ1Yz|~iz#ycɭ K)V܃;zXuOPk>M +\<.R].k;ög4[b.s.X)R괥)JR)JR)JR)JR)JR`SVUb1^Qa%S>֯'*@r/0)LS0)b)b*LS0*L +b1Ub)L +S*Jb1LR)LS1LS Mwbض7v='hT*Z0)LUj)b)LSVUiJR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@ +endstream endobj 212 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 69/Tabs/S/Type/Page>> endobj 213 0 obj <>stream +HWM8+>2Ke E+]2 s۲ ̥xY,M+-Kx<<>T@߮h*QUo:^XF[ת)J0z !-jxLy[KarVbȷ+^տH  G^[ZXs^|) * .cERFH1!I,!;"յ7rPԇԇPٸ˹gk^K;erek}^?yK*p2U4t +=gK>?{ wP}TC7%[3Y5~q_t.E#_؋-79=ε--^# -PЛ)e<*!jQӺg( /]5Ur-2tF妵Kt1+2PPGvҞ +NP4 _t\;S S\HUwRF.kty*1_^R38gSޒc .VrY_<^\+ } fX-P%!?;?Zo\LS $3O/!.½1F<ﲔOO|WB `0`CSV @'L ]ԟ~޺|M`g3^ ;Uw ip^ǧ8DS>l27zQde5vf5R';n}KѯEe, 7T +H + +>Yfq ݎȊTV[Oe9L- d3^Sωs4Q=EB aw(0JIf,zŪ0U+ 7ǐ@8˃˳cfS26Ͼa@g!E$4(B@G,A=I}J~*ZN&sאSYQ +B#Hs"%{9 Ȗ5ĝ6L^ LEd) DF%=w/fQ@ܘ-;=k:9+703q/dŸ{VUhR|ǵuǝcz +ر+ޒwR{XÎTka\Ibefw,Ėbq'‘Li[ +~Р&j^CDKdn%usAFB>ͮXnжx|yωmҲlE"$ڇT)d-D-3,.&Na dĽ .;&0^c>)BV-rǜCaFפQ3V(-ӇCZsbGaB֘4%{;Ot|.*D Ov8ޑ+m_sz;Wl{;g))OlSUJ&40iW.־cXv T}U'pG2e3 +|mXotPxKa*"4GA\SkU8bg.)uTʅp@~ϞL=ޖ }-2óv7(dݼo_OgX`wP &IU4huL]3ѯ6O<.WӻdI^ى/?UiA^Wʫ©z65Xp1W[}9CA"ߒ@d2gts}~4j!us3 ~`Ky92$NjErr\ܫfbI-'(oH9BOM<_^v|!#L YLhJi1B2 z\BOl+UwL^o+5˛2hv&#f姄=,8ip磐b*fa +Zq:nI36jp4ĸuAw{:[s̘D#:Q%;s@FƳ/ҁ3 f_/r>'FGMM`TG&0'Q 14t .s6ޙj5C!$5` V/5"R;r=TYV?+F*-ƅ;f,Mhh /` +D6y;in f{DN^ KU:i.PlJp|Be͜7jS.MĬ8%{.{Z\]ٸdIʹLNkxmr,O!쬮ិ0bj[#_Ƕɖez=Br&iC}:rƖ%3 6 CP-'uEsF~жdj:Xi9r9Љ h")9lLNyUcHC~%F3A 2EY*-@ !YoQVEzd̺T(IEYXW>͸wb&&]^2K-g/ZGz㲈1D>n}~G'EA +endstream endobj 214 0 obj <>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  *C!1"AQaq2#3BRCDT$%ESbr45Udt +&'()*6789:FGHIJVWXYZcefghijsuvwxyz?괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR*괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR*괥)JV)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR*괥+co -}5(m} nnmٝvqǯftM-(,`1x?MKe;9I11M$ك&O8gqBuHkI.8Q՘*{1ư̄Dg|tϕyπ̫+yϑjI`$dFGQUT9Ǻ> +] Ry7*s&eV +H?EWxVw;-Nld  m&qޞuUzBꬊ_Ļ +2W}k kqiGq-a9M>I2F+' J9uwcNz{ɦUCnʁ6\ t$X dd3۪Ek̗R[2D"уǦ0=k)K%2 +r95/x?n!Thؿxż@y=jIA Q#V]CzW)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JV괥*5+Xi;8- +}`-dltߑS#>zx53L޵}sg՝0sqQ#8kvRۋJ 3vx\X=j%/U \3FN@=BT6n?.UHfSq >b$9]:lhLsYRw ֱPY)^+gbU k/tڨ6i +vq.nsQnQ$1\ȰFwZ6Wڴv/ޗҔ03.AqJ۔P<֡n[OpoF3TP:]z +C%'%5w̎b@Hh‘!=+Tm:6.ۀ|qu=6,Xu[/0K*BgJJh*,xlԼ/sӠVXmm+jVüʁyqSPUK QwubM;Ueg= 5KͥMy![x$TPd֬>%ؙ'I]%x0>cbd+p8$kedL<6̻hW'q_yPj(7ʤ#0q^BFrp3 QN*UC jT Uk ȳ4h]Fʂz@$a0p@#CԞH``|*8DVnP>H*ᕤ7*rX> W +l]p1ccPpJFVdRTI}ʨ`9E,:6G^)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)T괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR*괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRPҀ괥)JR)JR)JR)JR)JR)^wX(yX԰\&7j4m,WUiJRdKH@I}f5ZR)JR)JT =pO£]֖ q2F[f$ ԺRsy S4*`c J)JR+|Ψ,FOA^JWڔYdT28T @Ǣ>{-#v3\Uԥ)JWpܗXV(\+Tt5Tjv2L@U,$3^L#I#URO2IU ;X2X <ҔxI{S$ "H u W)JR괥)JR)JR)JR)JR)JRԵOd h|ڤTe< Ӓ@(5${3[*=܈Nc d14F7>e̍[hۻy8򭊵SIGn e`DuSuqm.3ix#U.IrNRۼ)wҢ8rT#|><{W*pڦsEl1,ۑ - +]#yF]qq*5k} hCfc$d|ulyc`֭Ṵxktlt3H6[)VIB( Tn^EiVW1 {G#tGdW-J;!J:H$!1hdNsR4oG%@&P@ꭷ~@UMA iM;Ƥ_̓Q׃l>b}ZW0RX# 28ڞRmwͱ3Avl*vIEܷz%OljB@=xmXG8YVoj+8.H IbYڔ&ImVlj ++r=k\kI}nY^N<|5[/B Kf=*U\*,`X%c q5g]gp, *lb +@d`pC kó|ZJꚌzUduf' +IT/糖#2\+#dcV/BjoAu/k, +P|seFܭS@NtIDt)@괥)JR)JR)JR)JR)JRմn%)#H݁YA23Q`PWx+h Ue#qv-Isӭ@:n5ۓ47t wrH#5p_8l4yvوʂ$TƼݡv8Ehr᚛,$h`1aÂ63<犝X~D 9[UǏ@MYڛKF(Ery$ ӊ{ku{ 2ۓg8p}8[V m xpNv1gO/oل71[n=cScԜ Tڵ๷1 o& xa;XF>VxBGkog~k۴lKer +Q~oLyic-{YLb%'\4/'B.%IT F=Mlv +d/Pdױ !C qyVWP:27 R9+q\Z^61ięCD9a NXWy2[c=5Qe6 ֱDԟBx5Gݜ|9ϫi3B编27e91QLj&&4- B̩Gacu",kwmݹt:#aPg#9;I`ro%w! NtKLXQHʅ!b,3ֵo;ev_9,q垵eQԅ,C. <5Y,l6w/tR{7 ݘi٢LhBx$HhKlm#ې {>ms(&2mfGf^Wpkis3!|ǵ R@׭EM%ȱwXx9J3׆K7gL0,$0*H'ѥpn.#"gSWtG]L!=I6DU=RXdvn9Ȯ77!]űbr^+>7άf2,)s3qSn4SPQ5 0RS9}͜K>+nvF۠rl -٤ ڬʡrQ7dj:ׇi&B;yJV90tGZXEƤ\1 >znj`=f<:m$y׬}ɣṳ̃3 E<ץ&\A A&GwJwDPKm!b''%;蒪 pCm=+-&}7R0[b#, ϊ-l&H &ʠ )l1ai{nfvx|y!c`$oaf ̶ڗ@TLl wo {Hg!H1${Ykd"aQB\ +ŝvitg= +7y۱ℲF2qZ̈́ϩ\X[fC"M z{gemnl4-!$`ݱ@-Ǒ=<ִ֬l-@%I#q *.¶ZVF2ef.w01,ԉN-"j2+#B72ܟ88OX^[{ndoL*x#v7HՓ~ZA$)^>,wVVxZEpcvr:FX+;0z3ȣ,/S]T2Jv8}yvw6EЕp .TN6rIdt[K[BIb*Β#nR0x89#? +-1{) |?7|ns1]٬o7 B wHd1wT2qZt)Wr p*srGJAuw]ieZϤ,fCnҼ8W<|*VmrĐG4p"1d91n qYRj괥)JR)JR)JR)JR)JRC bQ.3ҫUdeR  Ey[-KU''C>qQimI*J*b +qUKqj1Jb81LSVLSҩ2#Ebvh$1qmٻ}+'|H%< W)/&7"qV*AUئ)EwcBI$/ 8⥙K r1!Wu)X* MZbIL q#;{⥶q隿dbRBԒ\0E8)L +UjL +bT1LV86uPřRYI''¤ǯGs$R$ wi6)!z:W0[\*IF6b`g&QvgiceIcR;Ϯ@fcp3 +!qq9bu'ƣOڨ-mXSnǵYb`9RxkWn.Z I182 qg>DVNVKwFYcMeb |jvE;1| w8 Azɤț( +;8!$c+),MVoeBIlч Ps5hE V6aB7qmPcWr/}Gֽ6 `J%!T ti(%HdQBr@9k-VYJv0嶠nFTDMb8% 6ž#@>oζݬMh3va$(=GzM/xb$TGeB_d*2zei-Ynr2獧ݑ^kK%е)"v0|j#kH⬶ͭIUmDY0e\׏Z2,1E#b4cj)'37k-a[F+ hj$\ɲF L;CXeydD,hpxZh9exxh +ɍ@$g0|Q;G01In76iC+Zi75FV%Ik!GW{HA6k\33Vڈ-m繚 A& 0p<$zUUYR7LBhʜsjVǬ x'1$eCJAX+SD-_\(3` z |+3&x!l +-w[i7FpH <'ŒGNLm{D6N$#VJ[IHB I RX׃I:v0Ia2#{PBQIu(v%AA2Iv$ +I-䍢Y}l Azf@֑TY= .O^kӵl}0L@>s|20sUgO}aaܳ#> +a4',:1篕gttxRA%zM@3[ūKJ ŋ}s.~p=N:U08NUA ?N+#q y[Q yԗR:arHV[OԚ{#C ,:ʸLQPYm51HEռXWnIpjYItF$]E=tx\sXGIN۸c5²BIEM8UdR4pJd OȚ^j:\m(H搝o{v q +[;JV$Β+xN⑬d :sU,;+/"e K7 xƓ_˩$Xlf` 3?*&m!h09*H5T-wWA9Nk5ne$ lvv,1~CasYmݝS0:<Ş%dd+)V v]hn#]Jeg#8AYkyf!X!dl JX^u2HMQK.Cm$rVqw[[$26%p>\]kçhwi1_XO@6f#w{UD|o9iv;fv_ٞ>"d<|)5=1i] "HN@<קkiSAk{`O¥]ְ߽YV(d+w`Y d/X"gtϼ|(+`׵|;vhŌ8d,WqA8xfZA=LEɶ*Fd + 2>;=%6_a2sA<9TtmVڽ#0]TqǗ_J{-ܺ"A7p3d:@b1[%0b=!07/Xå^^iZIo5}1!qRMtۻwܠ]VGb**NMi`@s7b^q^D E@XPbY'EEeU'$k֩b*#)SЂ*EBU@*T{>F1`C!ܧB+-b:y$2|^˸dyuzn$mϖ}UFZ)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR+}68Գ5ʪI%}p hM[(oۧkҕJ괥)JR)JR)JR)JR)JRbT))JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRR@괥)JR)JR)JR)JR)JR)Jj)JR)JR)JRNҔ)JR)JR)JR)JU3U)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)TkE{{o$8lcI{\22G*}nf0 S;7.zE{I$Wp Ȓ (&Pdw@7*$|@5yXu $9a`G>س.I @?>2k+(Y*g@ȷq]+wWCR6eURA#>y5,I'\ה7\FeTd+yUU4%KF2223ӏ].qx ȱ<5K zέ9[iӊk13\Fsf*\N>re2A3@-8zTJ* qWA ]+At{YNchP!dNKUe-U]_Wp1%8ǿֶյ KAA3nEl$`8/.$ogX4+1dk8,VO5"2bfea`8r7cO7IJbCw=42kP#9{,꬘C)9Tx޷ &UalyT]KILP\w2h${=fFojʫ VI a@2f d/ՓU$:0`L.)+\TNhJ ã̠yq:T]Ot"B(y 3Vm C!^\ӄHr<;BkᱺI p(FN ="(4g}eY|xP%';A:+@?xμYt@iH`xG}UXZH36 3d XRK5Yqo?EzRA\m1}A$3-ē3&Ulu+b_MQ"OѸ3\)$aۦCP3>~VpLT-x[ ݒdiZNUu񸌯w_w\v[Mز#"HbH㡯m`q蓢mmm9uS@Q_j]"t"Pm0@'X%еtP\L3 +O1 zt$,F7V9mBĒiPJlFFp{*M<&vX#I 3++7sG8;2BbhBcl$mg공w:E <zEXl^3ݬF7By+ Xsjd4dTy''de +O#*[g hwl3[ l-ok(#C\UT-|MEYY^$ uFYT@ZQª(R֙@<\XMO:QLJl,UFz`1STHݜr?;V$g'ʑvwF\+BOr%M+wb*|\{f<32wA&9߀qYXS2O(}qqPVO Xabe#wBHH:*Ri괥)JR)JR)JR)JR)JR)J'fVHVRcH$[-dw(ʾ‘c#R@hZxqݞ@T1Ff/=F{cy'Oc݌Q;Y%2#sntVa:c^Z]܋+T:#=W*A#k;((j~y$ֽZB&7xP!o= ɪZYAb.l(~jz$ުwnvuEE +nP3*hvqt q/c->T3 (Q^GuM*S,vc݊: +Bc!`(8:[hVv2]0]w#.8 {/a:OH0a'$9vQ,1F,qbIڼ"sqݯzcٿ-ݷ>PFbjY ,K1sQ-=ejFGӽ9wg>M;Ad"s9$`0xtl 2v`y$i_w9$uYgZXHCw`d]/z.cxvj&d1,c% _:M +-D;rBr6ry}i¬ǽ3ubge4m)3;:o~8yTSGNVCGFvw#WȶI.ą8ʁ+NZI#I{uY#v8) +g#:QmB2 6 R<$EV}H%x"!Bq8ӊo{'|wvF鞞UY;9V͢*#2=sάWIKa;dr|6k"*6w7)2HtĦ|:HQPFW*"GgUzz:`  Jh6L5mGhDž~,U.{=is#BL˪}|Dԑ#Ҕb괥)JR)JR)JR)JR)JRk8@I8d* LDq.1Sc2[t˹yRT*E)P=VHpYPg,I;AYhW#eX*K|Ѹ }TR+FK1 +ɯE`r>Tbd׍+=$m*ppy*&C"j*v8voAŻI*pA88< K)JRBqPbU2w,b} +23Ҧ(5ZU 3*kF'x5u:+< 88# @<*5Χoi,0Zf+183jU)JR'YZVڀlgyW[i{rUVvŒaA;Tu5&;ȒhrHáVJR)JR)JU*PҀ괥)JR)JR)JR)JR)JRvx,#4_&#5**@=+>Ѝqy(1fPdHTS3n1bH;FAJhu R2{r ^NH9*OyH +_(qXgW][@ԟiGBrUa|ǘ>b;@1o#ew&(2Yb$Ё\ G/}K[7&n]oPj3[ԵH,kQ,n :}{ ^3-X.@'1+3leh_%{@XnZA.{+Ƭi>* \ Yk-Y'hYC;qgq}խ-HBnKr3yWOcuM;Kn N956usE,~ vƦaOgn6uߟǻ5 Z4-'F3Euݘ2Ipxuz\}%Od@@sY C[xOf0cD tz,n{i,tB 0dlXԃ]A5 + -"԰*=VUNhtpx+KqQ[I Y$n;]\3 cN*PHw sBB\!> {S+>mTwdAH^rk25q!a@Qsi%Qhq +Uj./̩&G!ܿT(n5U,]34e-FLo @9yMѵXa:s|t%]OcoqqkݽL# +F+]VM"[DX#r $+u۫iEB/tuV ,{Auͼp:w c+a$PnKbcPҝO#Vߗ4"8u؁8=u;X1aP|85rC$*evYi19V +sA\dt "xRDq bK~\O~ӳp ϖH&{ˋ-gur g~ÀFDy(_ZG*FNx5[.AYY[xG8URO@?Uat?)E +6{H2w 2 D'Rg#D;+3 x yzVЫ8µb{ߖb#n]w vڹCH5`34N1Nr|!iLct[ђSfNЏNVK%q}7hx8 U Q٣q*+CGXjKMR +\d r5A\c]gMuw{hbUk~o$8K r=kkA&^Cm@AqSu]l]GK3F΄/PVY,T 0jZ%"gqȻ n9^ 2-^[tHw7 7\r= d5]N͢N$).()oSsҼnL1M4J#a D?Y\|G˓mor"r#(ąTPGF|buBVsxm0wP$qjE\[$(ȡTz\[HՄFk6ݻ̌Xy[K2 {YP0щ'P##P]|:`fY7/ex=:VRV^-Lb2I;FvK74Ъ.٣Snv}&XЏ0bQ67 G4R@괥)JR)JR)JR)JR)JR&ݺ0I%EFqzuR=Z Y,eOn~ uA;?pEXe-a(+*)nßA[x"w;rY1$qVh0_Z_4֌qs#S+1ץ։qx&iС@`̼2| ci+i 'vHˮK ucmC4Y w`9mn%{F0ɶ7~vq ||t#Qn;bb/&v,'h +^5n\F6mE ]&P x 9鶗Iy%# xwm}63ǾmJJif+`=8G\@i"eRzg@4~~(Dh\,w%s[8殳ex4ؠ}B"$8ǟcО7&"*CFF +Nl 2[*;2xYU5WmN98`:T.$h~ #8JP\wWR$2Oԋ(ޒmC2Hun\?R!5bч#L`OA[)4f7H%[2 +0qMwWh..diw.YŐXg tj]JI-4рK O<U;l2g$2:9 +1`hُ^zUE:<ñ!?rM G*v7}CzcrH|[c]}g~\35;ŽJ [=}+! &MZ+iV52A(}*A M*Y[[T%#GfDu$+!}jā$ne*v+m.4e;+۳Cgo;q׌n,+&''8N@$c1jVfX'E*wJ@#+DմBւ(7 T[Z6D&I1ǯi3hӣXqwe2kmg8Ub5{)BϼbH7^j6̶x)bRu{mn{ɚ 30% fj}֣ݷ[A+;s {mn/06^e1NHP?糯q +q2MFS*e;6ˀ$0Xۮ_h ,ߋpeYJB׭g5tM uFnrςkqa}&-} v o80ϬZ܋vTf,̻H!wg g"(.>1-G-̓Dc( +s#e܂3UN>S5xMNCmPI$NI$I"ʐGU1,l?vpCc߃kךnRh +W1܂ĞzgJsqK +!P$A稬`yLMRKĀܸT|\9J*U J VIRNU]gCv~,%ep 4i>q3V)JR)JR)JR)JR)JR)JR)JR)JR)JRU괥)JR)JR)JR)JR)JR\ZuKHOݠڇeG:Ty4mj=]p$#0dy ES}Ω"DP]go-)O -R4yK@XʳNXc$.b#1d:W$ml_elU R.+FJ^!m;?jZeѶtP +6Hy_ou,$¶opTq UϮxRYk,S|* R@ 02+igݓY 'RIvzyWhVCEG3^ѭtB:$O tWw5ޱid5"ͧhEW}mA 8nl'Wa2KFGvHPX=sft .c2Ig +,wO-?N+۴Psc$pbC6&=æ +5PZI,/G0@!,gwZml3:Hi c,U#n1 [z &,#S.cm/nrIe`bzNd}ksw<*vvVR>v@>uַR)k r H &9'[g%3m 2 s8e0s0j?2$0 +!p@yb!wu^y }M/cb0ɻXG#Tk]E0i +WI;8&[O{vs;ӊ4{pr]W;Wnރ'Ϋq%74"Q 0BEYH Dev7aml~Q;? HXđ +Lʸas֯@-ۼڳ r$ev}ۋ3.3r|#U)JR)JR)JR)JR)JR)JR)JR)JR)JRJ@괥)JR)JV"^Y$oy1<=P9{'Ի$ұ 'vO.V@ #KQA'IwBKc+My<$6d6(mZm++GpЌ[c yHⲚ~m,F^>Q]>Uf/3QR=vp*vK|30ʤP;OlyZL 'P@>ҵu@* |ѓrqH)g!@$=rkmm2T;.ع 9?Ed*3L4)L5Mت晦iffiRif3L43L43L7UsMM\4ifif)fiUfifiJUiT3US4ҩU)JRf S괥)JR)Jvm;E `n!K}Ht;B"3IoyuktKnPw)Rs +;1;_IpIkxBGr=~k?-ovX{NAѯ{H8MI @~ +r, ryɢ4RxŬ?킽bwi9# }˵EB;H͖Bnz 9Uzȳ u A# ցj/gڝi &ܱ#۸m +xy?j௳>wϸ7>Wh?Yv_Eg |.ӑ\\qqXj=RۑDJ_+yr;"ȸ,?ONEj=C%m+FWgLJL:Ӯ_?Kʏ:}:q~m:q~&Ǫ]8LĿ%\la/0}Ӆjeq~QڧR_UӅ;Fʧ]yj7Cl;3=x:>}U}~Ϲ?ϯjֲj7kuSV:^~T^ S.GӲKt:~n?otPoyuGu史.U{yPCtf~^?V̘ [YCmWn.-{U[k87'qj9;q{qIN嵹~ljat?7_]])wwQ \ħRqCwWgu"n?(S[?%|._詫Ms=7!/?+w?Ut1E(!^'usvQϝ/j;2~̟w#\>ʧws{?]~ݟUݟM_gS?Ӻ?gww_n?,}w{?/T)wz_ӻqkک/jۏ_e){N/i\ܟ쪈nOKU6]~ݟwsreRH.̺EMK so-̳*H, +Fi괥)JR)J𽳋PKyrHXzZj]Ayn#E2)i aVwz77h!H q+bw  c/qkgN(]d()u 8cػB;gYe*;Qcԟ:LIӴxW|n'iɨݐot'ۨ6:ɼ3Pk6 NӸMpwzo=\^ȲGs, +IތAg*q-s@판Cxmit$F2jƽmkp죌)1 +5׭tdKeJn Q +X/v9{MٻGEI0(vv62Cmcy ڬDP>|Q^ݗ4X\$o>h`S8? +hl5NH+tJ (ܜ~.8;=YveYxDo܂Q[}FN~rdݵ:sZa4 Kk41DRY])$diAs[D-6J6߹;S=2OhVlBM\Sc;@|wh *Vz5⳷+k [#=6eXY`Kdؤŏ{JնI VH98Ƣzsۡu̲YHK +`5R$B̤¢$qYSkoM#JT`c;\tfWtxvNK(9FxZ쨒o?;qu]=6G$/Vqֽ"'Q$lXdr,p_J v @ d{HXKjD?xK ~5E%I/d޶ 62f,ٕVY8v*D]%Ed9smNw@['Fu*H3ipj.([D"dfFAS!Oԙ3$r[Xt3MvpqRk]A#RR2ĀpHP} cR1>ii Yv#z[ʎ "?yAsQtir +1qRbWڮ qϼgQxܣHH +k``$dIǮyɨ[*T> \/r%RvJjVXGz&\xF"3rTy*ym猏/V$+d}5ڌώpPNqJػ k}ms{Qoz}t$y3+8sϜgMFֵe̎H;dyHnYe[wQIuωFzgY.+Do,em޼ھ3Y 6KxHż\g U)%ed +GP}(:pArzdW6 + Ϸ'`O~Vβ);HAԖ#毺-,d.D`.sX&Xi'v8:>u7[ޠ=88()cRueFHu1\R# AJԫd;˴(*yux.d"υ> 'k5[{Qw.7-q!?qǧR=BS"cQ难+'I? #uoAtQH 2~z@)1Uz +gys5ۣxɰwknn3 sUk*7#!1es<!Zk RgI(ǐ5ohaBT)@Jqz*<ַS\d !U{I0=Mm +w V;XcTGFpp\=*=9m)&L{dK/_bA i_9*>U b6DncRg"#w@FqlB0EŽL.<ʌy&mJ$A# ! VqCs G̖ &GЊ:*Fc$μiܲ' snϯF7z6MnLf(ִ\ݫ!fmOS[3cמ qGww s^udX*Εogvu󫝷'ٰ9l'V1ˣw |}uNa&0;7:SCqωrM=$MN6ugeۺ[ 0ϼy71X*xE4y#3e>zVw^j(8 =Cc5VOһU@&&/o \\UTmTgy^%RXyD{+6D^ތe[x4C$nL_ux }.9vY$aຬDdqtx7J7Lc^_gY4$HsZj Xq|Ԋ_N9%<|f5dO +~&ݘŧX .O\VTsXBʺ̄ƞ~TX氶ug.#eTPg%s[AsX[Zc2:+B덃qzɤrA,!#v1O:wc>I DheAf+'ރK +3<;KorЃ;[lg#ү,[r \|Dc@.JI󑟞X=*Cp[X.W~\= H1㊛Cq16RMNpffLjj`;ݜfZidnЂix*X Q۶}0.S19g(pێVoIkڑ*xA\G9g[%| [@괥)JRkGV&XkErt@%QЌi5yjrːٍL(* /@@|YYC$LH@`2bQא]eTR Qrcz +iNI.4qHD& T/B>5h>My3yXnݼNxk];F/&]{/nǕe->kgqBnBԹ0U0Hj7ju sJ:s,Tv}=+)kOY13Yn )qӚ]٤Wfgi\83Ͼ+:2mb p}px5]vMl9HA=_*;E%G%2SUM$^=mF$xDN:,0H>FvGl/E}a"c?9G>^_MKH`z`~ku=Xq~D~aߜg7 ];04 +Q6<[VVKm@<Fņ ϑ=w`0[Fu{F czT;U eIb#U <\WgCӚHXLcp3#Eb;#}- Jc,6a<*^[tKҒG: ç 6SwƛM>eW4e{)ۻ'k?j0^ET/r+TֻOgijAbq!p0x :" JVß?ٲWŕ4H7(b>^cJV -9\ҽ&5f ?]]5W)ȁ t5tq$ +5 +`0^7[-6|\>e$qs>;Eڋjx=~5l.PG yGm2oX7PWMo;ն8f#U@@yT5Y]C QQ/r рWRQ4k,12Ȭq*REFO +y.+eGXR701Cp9$$hch(raq݌qU$@Ud1xUc@Z; h|pX( syU[8^DmZKgo+xQPO:yWȓIYOP~ ׇ֡)9S«oDr@ch/zbBvќH+ i64P 7nN񌁃Y8-!2K:}i 6Q"*V+XTAF{FqUUp6U 16cII 0 joc^Ư0G"*#Xm"Ez\NGOr"PsOdwn#4h +q(פvĆ5EU+l)>VOi$HĀ *@+IT`*шJTrh>9tIUCm((3 ++{(&a#Į̆$}5I!Ưpά]o"ࡰn>Pօ6w;v.ܞ]F"1!ET`ypbi k x[(w}l$F܎A1&К t"Fja5$"떗ת@PE,E,=z2k'In *Q^&N7n t1qWs^&~Ļm.@<հH$O[9D T9\zWZXcJH QqPUA#U ugAcc Cr@}tA 9g=sTB}Uhb3 {rN݃nO1|nB +a~h>Wk1I:zR+8!ܩ; +o󥽔q)5y#V*0 ҭLPnm +9>^@gbo%mJ괥)JR'(i=:Ke2DׄqƓ}|U=Y|J!ܷъ`u L͜XBђGΙ 4)}{'nǎzpÎ:[ Wv钱(p}k{+Rg߬θ㖐FЭyH[ P4RAZ>P&ﺈ9RGXIc:y_J9'5\bHEMN)n9Rq|aqi^sQoӣi`]0qxҪ WtT[B=:&PTJrQס:G;!!cz:勇IyMʸʜq<&a{w)_kL 䁒+88S9q>UNiȪ>u SK$(x|zW\\EPeC},Ǽ<,]qP@50<(` \2P0arz:Uz:U&F)CTdUm+;;f"8d *8od"S-Mq,c, OZ)'|NmWhty&iezbV/rn/q^:pƲFFA"-" "(UQ^Pl6G Ιs0ƩiYIޢ1|`3`CLӧ[xLn9Y$<݆<)]ܵш].2c :~i<'1bI(h +qLNxZ52Ƭx67}52 +poъŠ(d8u9'Zu']k_zP4]L{`󼹨n. A- Lqs5?H:WB A*p~"{Cq-ı7 ,pBuAeAz&ȝ쌯.v^T6[^9䏣q= +]<Ս1hͽNJ2ܤ`75 ^bVWSޑ^Vڔ6e&FV!) ˒xGÙXqyW>^jkHB{?$r jhnR7{XD9+{uMؑCpy1W\PB=NMEnwJ|kJ2c +˹\SLIx"w8{jsMmk,mޑ+ k6V*lV@ a6|1/幽{;rܪ[sNzTg.%n-Ԗ8; +_~ [v6ϥK/cm%cB_MC{+jb7)@"b`InTs,1Q/;G(E!X6K ` Ri&#(8VCʞy=x-^\AʖWUhnCdsɎ(LrX:.pPwF3^B7%cvu.|fGu!p +q^WKdx0Ɲ#ar8Iz>uK~+,r7! F}:Km rN^uF]DZ6͍ uapA^6FDk ݅ݏuy]6F1Bpm|*z. +pqO;zu* .$Coa㚏6 tUﭏNJ ȯx./)WSdyTT':-Dyx97vx2YT6=Z񀓭\<>}rv,k$ 5iZ5iB d.p3DHG/jj4ʹKYH88Q\驨2&ܧ= mk8FG늃{y4SdrfaRFIϭxjsj6$Y#$%<8#@7mǩ2Frgq =@YF{K{vS9k&#B˻q\dNo-lCVs@괥)JR*-m {%$]SQ";bX.8⧴]$\V6>.n@r#$  +OB{mc3J%yxXZeR,Ո .{-=\\EI3ɫ'l-\$Q!dW*zȩ6אD%!thu V;܄g!\1 +IL{J +!?Vs^zKE$Iخ `yyi!5"YbHdǮKȬdaruT%r_ܾGmV ln<8M2=ۮ6zciiR*z]l0w nYO8?qsm,d׍g. ᱞ*jLeK)>3Q*u ' hpr|M :I"xrz?Ey/jeOl8\Y\J/H]z~5 6ɨA1 +nAÖ}|Mf,Sɿp#v<=*XH0#irr0.Jj++Z-$g85O7Sζ)IF \9ֽ4{23B0;_' O =C#>CxoMM`}FBY"wdPm,$Eqn 0'W]Xڥp +' +|QYVh/0p?MRNKGc{*!I=q{jVzŢٴ[7QBNrs+KiSuwiln3*=./ghٶ2awv=EBGG,2+f^=9}&$7 =I]BKU +1LJ d7OUgWB.>ed//'cC6 \1M& E\ ـFsף[]|",-D9޹'~tFQhiQ+B{B&uZcpFʲH0s>^uL&xW@ x&;/i=AU]5w1IBds_:A,o70OF nXJ gg\` (Mn=V66BN6<1<dx]$t'*AӠmΑ*z0jZOeyxCɝxQi3]\Kx<* `[U!80dWr cQk---cB)XGёnn4ҫXβwkE*f֗Ɲ7[ѺUem7̊HQ8X}= bR!O yMR;#884 {xN% ßߢ 6h_tA `6j~OD. 1ۊrX\̈Y. +1Q_J6 n`sY8̋gwvmNݽN`/SED>>}U;QT+ P@d+}5X`/ؚ1uNg43QM GFfKk缍w! + ӊ;}$B%@Fv'jiwmuEqm[9(Spzub5 eh$UrY |GJӭ/즽gmIedS0G8j*iɡmx6ϏsVG]F'hK.DU%IӃY;+_d";WI=~ܵޱHѼ *xOާݭ512l)n1V fV.-.4bI;ycMɭmtĮ9YS}g^+)q[vI::6%O=k/^ϧh4 + wp >=>vGhs㴏~eN:szci`>3c2IaZn~k5Z9dEJ߀y +:uF{H4m#$m>Ͽ.RӶnC +j9F[ܙdD0:fx~uk+[[X\ c+ ?O-q}I>u;;]^AV8Fd-r:VܭmdhMDdnDYe gr܋.;Rr*?jtKnֶ*ņQ-\h7cˁ-9SW1}]q:J1{s5RcX66dB7-bA=V{Z:,1ʯ>V]OF%KbRpXHζ9&N׍CO( (*BOץ+QצjO5C:tj1L㊦5\TtU֭UƠŤ ݮbM҄:nxб"X$;I\Ws!p*A4ajO\s3m\FES*zUrsMۅ95jUqFoJuyu:UZuxT9* +5vh1:PuZMVzs^S@"R0Aj+i0Ȼ%gd6*o^WATe­"@)eVF W:zpϐC( +N(9Ǻ ")/ʖYx GL:Uu+;J4괥)JRP֡W{8}Օe Y;r#o[$P"eS(%<5 Sŕnm(]A|ٵ :m;BԸT^vx:B'ēw`X GԞzWd_gty¥^FuVucJ|NN2jG,#p\@Tii*CT\UJҨ(iWVU9Aȫ&Fj6c4"&LyUs@)Wm85QT5BxV(Fj3UۚE9\jWm\W) *jg5_}5i¦| ݿYڥSm괥)JR)JR)JR)JR)JRO7Hۚho6q;8xeo/h:RLxV=r"hR~5dzi;mݎp$y|zE}#+ZHf`OZ`JԂ(Xۺ8O|>} x_E0w]S!Ysm֮seo + PO^(έImVj7DʑUoao(۩nobE m_Z+JFjnJ>#Pe6 Ei0^xT|Jhm ֦?(\(ܠ { VZǩi{Q=L'9Â^Mj"L0̏}OS^10`4* +@(K~5h@eQ^ɕ1t"7B5"HO"U[4RfXN\kIu,O +EWԭ6 X^S.uE6켊T VnvKDHpϝ[<7]}O#wJ2Aq5fIax1!Pz`q_i. ar WqН٩V}ђI;UBIc8Hy\G8-+ !GQ^⫸SpVACATUqTT]U@5J*jh8iSTCT<-\FES@ZUG5C+*p*UjuSR1r=}g*괥)JR)JR)JR)Zuhu[MvHW"x@'ʁ׊ujtXdXd*l}4idՁ+09++qp]eXBzZnODx{YR;Y]B]FM\Dd)%$BT,oy'Q_1_ܼ[d;\w9'T\$12#RYڴ֍lf&1]AzxlBJRbb6pH5E]AB[AբOIx{rG^KK}2sc;oN z[% z 0YBő|Y y?ER %3cNKw'sR'HѲRAj˘m.G) GBx#^b:I.nzNHVEvf Rgoxqs\f[[X[,F%<]< xl@K\*a@u9? +i͘pn@$Oumt$8䁀H & S t޿mEx4[qp~e*YܹQ G$Q=rAϝxw" BPg >W=>=88yi'w`=7)HtKXԸV ?K}d7fIF,^ w`+FگCn 4k.UFȋTf{]h8mWڠ?hnaJmP]E?)~ڸEz~Pk]F#]FцDHMSn"}OlEit//W-ZQyu?-~ڸ]C?-~گ?)~گ}k +ħDQYciyJmWHmCW>ڳ#a X d:pj&_Qw q?-~گ?(};=RPչ4괥)JR)JR)JR)\plVx)ansӑ[Gg4'krl+pVԯ丁 6xs?u9#ұKnAY-.v1#ǭyS)b?-[hN4{fǎZ_fSVL템V9Qqq:@㓾x=9ʧ_Im4e\V tVO{76~t1OԾF)Ue6OHo*}&2 +ۂ<)U1$}:IU=ӉϲA}cvoMn= =ocL~گcL~,Uf4??j";3ر~@*ZgH6e\a-GP)  !_S+/)#(4 /ͯV~m>~tڰi?{TM$?Mi @[X@ G)~1'E g쫾BӿjA*@O8?2eS;VO]N@BB9ӏH6eS=ԇkPvN^m~ʨ4ͯO4ڐm~ʧM?Oa*ZY~4HLiivTLig-j`i =,*3_>ʧ_K/Aٍ0~ćhU=8?4e\Kxg8U~Vfty{Hj"b%J 5U_x!~~t~m>~tڰi?{TM鿵!餃~f?imaDI;=lz‡Ni-g*ǭO{?p~e>ʧ{Lo*Yeo*+S~4)U?RO'W'f- {Q +cJY@諣ޙ!,PNH'W~p~i>ʧwL?}Ni2eS7҃IS9p~i>igOK_i자`[i>ʴCF?/Vho*vY +ip E + dU [괥)JR)JR)JR)X){e5׶;Ӆ*rIY+<\c, +\y4+}]-̛Xky$$}MBӅގL̂yCc!qҽ5kI R +}"c!AV$gn`Ydyc,mŬ2\@neU$M{iJZ7*H#9|ٛi2 ,S%|zfZR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JU*J)JR)JRJP괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRR괥)JR)JR)JR)JR)JR +YYR(@y 25;QߞOҿo[~~?U0ͷF=ڨVz_~y>ڼvKnEO'톍l$5oC-8ZԍWlCp}Q-5mgx y3pGmt3qp햊ߝO;_ㅷk4s>Gj>]-^۟k~hKpqVhgoժ43qQ--:m\;_ㅷh}״[t?׌ѭ,5gC? έWk㍷Whmj18[~y>ڸvG?iker ++1VFP괥)JR)JR)JR)JR)JR5$bG `EcEyIU`b+-:1}@W-ͺKXXHOEzEZ»RsƠ}@U} eP閇6eZt3/ͧT:=|aR'^i EEѬgmZDdUi.G<,j\tc!~ʡm~m~ʴVg<_Oc"ET+].v%L}Z5'"ڐƣQ@i#MI UlY6Nfc*G?}O,X?4eS-?ON1b-!]J5>/T:eb?ͯV*iWvPB6H"Y.g9%L}Z5'->1EEH䏲l=bO_tceP閇6eZt3/ͧ^YA +HGVKYwIoc-E]m1p}@U4U~BCc*L?E*Ӥٟ~m>Fԉg8~VKNwIoVI"Omg8TUPC?$}i?'/T:} eP閇6eZt3/ͧ^X6(p@K&8Z5'->8cQQ@HOi#s~BCc*&Z"o6G4_O"a"E(UVs[FWE[@6 j3***d~H*nzğeP!~ʴ閇6eS#/ͧ^0"*ɴ;-seF?UaӭFsEQ_#OeP۞'/T:ub?_:eb/ͯT&ƋiWv6$H9E +m.KxhяX[qFsEQ_쐟GT66*N=aNhc*I=m}sE +].s-ceVUMGh + +B[OeP۟֓쪥60 +)Vb괥)JR)JR)JR)JR)JRݞZyAlQ%բA;hąH5|ݥij0Y,oo޲(uOSקGwOʑ@̽HLh'NEf5@x³#c?N+^va i=࣭fA 2k[i[^ݥ/<5}'gW7hxlUDJ2&<8YvT/m I34`9|T+j73G^m[5E'Ii71\G%)1 6J3'5Pֽy׳#Ӎ,$+*g-p:jLz [9a3xUTٰHc5:|wˎ.۟ZHΩw{hX 8%HǑ53LҫJjvOHQ$5I./ F6zYZS5Q:}7ƅ =j-.a!10$.9'k^Mo5cHvwpk)fVL43US4i*3Ua wXZN $8%Z!mV U;7@Io Ū[y ;7n]2zf{]N M?4VO43Ljj=6m +H3Iݧ嶖8fwu2O+a#Bzp*go,Fͷ!sd^:.Քh8$늝XMcgOKkv[쁶b5,ǀzu h olq\RsL4xXEewgތQPms凹AwɐmݏTҕJ}괥)JR)JR)JR)JR)JRs0ًXE+ۥev,!oߎlMͬG +0]0TH5΀zz%pv m鴜>1u8YT:U kD Qvj+%򅏹hirx/>Yow6$t9O~}5 __\Mb(ԉbhā>Iej*Op3AHϿp/Eux>PIy֠隅e^&+.F1֮o`g ۪\A/z0 +*'u>u E)ɔ36YX)ybv'SRC"޴qp yO5wk[.>1eW~xE!I[=|tĖۢb]׫w*sҠ^OykٴՒOipKcm-wv3Ӝ՚y-ނn/|2F0T47 >[n>IČ6h!9>ovoR,戮u6{]7c'0,]34҆Q) F +zk'G~/eZIlpgZT8;;9G5Ex,M:ys-(ڭɞqvYCSջ7Gu<72[e! emwv.@L*Aċ'p=BGB廿ֵ[I/& 2q +=F}էfodXcw\7Wp=w;SV{8nc`AR뽳ny +ۻ?50=$7A8+]Ieb8xzf{;yc:=_3:̪|gʧɦ^X}#BceRX85,zE~in3[# A{QͦqMŶFESB9}]DA';J&ޘ{Q=[4g= u*I1xIWF98f3cd;tSoy*vv7IY]#Xr|Wė B&3 hTcǁ}Փti ]X<<ǹҎy^W~ۉf fmҬN,C#\d2@2A$I<Ѭae?z՗pImpJ1Q,tt#BD$, ES1CpXK,2w8$8by ًI,Ⳑ S24#X&Yf!EiX1U$UP2@}v&Rᡓ +OQ׳V &hif96g^j;6{uY2 sC*,OTKA2,RFIϟ\-&S 6xNzzSA՞dܒ@ţ\EYwٛ+hm2L4϶;46,fEU + 37쵰i h;*Q' |Y;5a&orF0w99U]o4IO|Bul(P71 +}9t{:B=wc8$APX:dX(HK0B;6矍V볐\]ԒXehn>@ `N썶)k5kpK07mc՗p$NjmX0fɏ$c7X)<Z?fm.ma R=Hq|txGyayH'gB}'61^*H#w6я3Nmem,K |>bx'uyW:GId-A "o3y:{<7iÃWAٸ mAe|̙F^v\cjs5*f괥)JR)JR)JR)JR)JRPV 6\nvc $ +i+i,) +YJPHtb3aEFdt;STҙՂU,Sp$dd=5U{@ +F͐6}H =qSsUR2)Rdns`d';],nmmK# m 9SEԵbgTD +>sU]D̥$0*pz#晦j֕QKX<p=x670ڶ’AvzԪ3TE؀I9&W7!{w`qHzF'[)&! pb$]vO+%krp2 `G3UfZw0I>pXp9$n p=[+)#W\0ȯz1f@43SV?.4I9գ2p|^*fG[s kc8yt9k^@@^uD&B+ 22 ֫J\-&8C1C܆-3mPFEAZ+6 +cʮ y5} 9a|?3#яǭLw^D{nV_#QIR{@$ d}*j8dpڌ:u]JNPNg8$PIR}jVf3V!`Ӄ?]%aFw *I<$j^:nm͹#9TaЀG3Wҩf*v̀2p$Aj󷸎w\V* )J4괥)JR)JR)JR)JR)JR.aH YARdqQFoRTdtZ6 wj׏7oMx'HI +5y:dͿ9cڢ1&}Ad^^^YE +9A%ٕ989nnwx)"I$V.8? +hV)L<WpFc85S_p V=nx95H`7%{'F\0xx~fO\]oPl ψz:藗R\I,JKNд"c,6ڝbm8eؠaX`#Ǫ$IǐI ʀ}*ZLnIbڬr@Qqov1Sֳ{{31ڔl ). DMGFOhĂ!=H謝ڮI9:2=G^k^xgBK *m,tM_VUͩ 9P5ӯgՌ,p*3;T8WOkc;XEoMS^PMj'giCT}\0=ݹ>}<]ɥ[{c 6&fXVdf*|K3wB5+Ԓc&Xk ;rKR䋻P\U\_]_vR8.=㼌ܰ#h#=3qk7%YjJ7H +;yGx\/#jG,$s%[0╪;W^it-i^]ȜNqڔ+-cr&@*e8}~#I-fco@= v@i%r2 Qp5N4zUŬd=>wQ֢kWH,{ۤ +0Q^ `yyPK $i2RСF8kmQ菪I8wl#M;=+sS[MH,d/ugq.$my6Hc[!QTP]]sQާv^iq !Ѕ,BZ|qm ⍏Ĩ&rjuXImNtW ǯ\:$B E )i7c&rP)o5ޟR)vc۴Q\@$,1Gxw $+l]2BHdVguM|o3$ tvF#eaB g{îKm!vIEԌ6,QK9$&n]Jk[Q|mifsK1$yV2us,BeeMI8?Gx.sO&6)EٝϺ--Z9h!C-t86KO޾ݼ'tg?3-ϩVi4E)9xC#/FRvesVhT/"|GN|˳wvLjy8<ղvNH=V8㑻S..Z1sPw;Lmp2.ce> yϙHI&gZ #*K@`({ +}sxvzK?mLDʹ@Gcvip궍#mB3}>*]Iug?r",%V¶7...Ido$|OL|8dn,vAhUnXy +tClgY oO'/gJVӘ#*Ȃ5l 71<9rs^9P$ɴڅc#q>j~m$cenF,snӚ"$]r6r8 ^qhWRaPd09mcjq!= +C1'5vQM՛9vfXª[y@9q/'r D +:ap1!WCKw rw*kvP%89QR4jDe;yx 3QD}vE##Gir {f\7yuh%c-;4*ؼ( +rNNhSmmK]̡Wp^ᇟI` evH]2qT]{Dmv3n,:*-x9KKfeJIvr +pXHrWq3Mc-kmvmF%!+ ղvn 4rA#I ;g<|ۼwš$Qd9B +A>|q^lOnFM;\',}sӠOi.nBd@<\Z]-DZճ Pc8#W44rcGsBOS*2U~MLk1;*{ LfEWm8ݔWSf.B#,xi]EH"dԁAaE u nV04jK!F>%$֮MiHs-@㐧$ tgq(T=M)7lZ㑈 + +@Zt]ڃ44eWa@K|syN1QWكZፘCnDf\gg+PЅ\G)C)+ G,F'PPS*F?E@y,(=H| <89٦=s~ \ѫ! t5.%(-8XHMB^4p62 j{kef5IB* +r<=Qh:PhXz W:7sM|&cĈ]L9Ocde)HpJ> +" o*6W(0р#˨ ;1nt HH2 70N8~=w\uhT +$sz[,onEM:|NoܳđȬ0Hd`px##jvu从EPDHU\: $`<*]} '_T@c1VI/ rV7(ǔSמEe] ;aTrIwLPݮ(뼋!Wa+;unXb1! +;&F@G >_HbYH۴*U 'Yq٦]:GBX0ӭJ]*EZػ@p9뜒j-eknNﻕ# sX`4 =ĢFcln'p=4R괥)JR)JR)JR)JR)JR)JU,@IQlK+<=㊬EheGd]rytx]GeK)¨=~2z^Zu *̹.}yKG(aЀy\sR`Y \dy7H8-neãNAyѫˍFFFG/Ӽ.@I>@ }­m$2[C8 RZw|MxpI^& >>y5ܫX*->&bB(%V|2I + {3;D;m:\ƒʺ) ^xYAG"Ȼw)ʜqJRai-E2F΀6v=zV:#$bܥT!c,@:uKptG?D_om4O@Cݼa Q< g/$ke`BU`_IQmC6jڍu|䃈5DTW^1Wɯ424E<.PnAȪٝI)U0pz + W `P8$!d(ʪRH'#*jEV +05ICΥ[%bD$2<t85Q5-N "b7ԥ;5ZR*J1`UiJR*L괥)JR)JR)JR)JR)JRx%a#Pr}u˽KdI$l@B(XaqqYڃ{=[Yc@μd"/qHdPJA3qEF[Rd1\ +zV[uM.8eLxV"Jy~hf5o{{5T\ 3nf>'IԄ7fB2@q\j EcPsrr]N;Rq[b5yn-# +QO wQEaE&'7nФ~5q[ż>݀}HSseu'{djvWYqeid +dpXKxv'8]Qt!-6(F.*$VWŘ.%dTpASELUri- ͥqQ}zV +U=ha.wyDŽd1>i W[j& `1lG70<@Gcn Ag*.ke)crXIնnUH>zs5MAw$H}!if| x?mSdHe 8F^jl\lc;pyWZG"^6IL m ,0^0A4ʊNb9^ u{Xv9#( >@ O:sQ+u[imgI<1Ea7Ko#7(܌ xr;ؚ)FUr:{A$xށȍܾ}Y7f{L 9 +,f+-yBĐ0S&KQtZLv)$#@nc,03T4{ikIbp'\uA xR ]:(&,Re*AbGR9-E{3(ŝO'i*qq*Fs-Mfzn63b= ~%3DYX(r_, +3¨$5Tt  a%C3 ]c}1ϕgnY4EC/q޻ɓ.૕R ,sGBs^ ڔܦ&dYC1-8=*7국 [ I[Iސc&!*v\j ychH[ijyN$!>ZՓ>BN'$̓՗}rclݝq3X 2[he +e4P98 +3J2^$lcx˚e{etDg9!25gm\ϕd@)~G<\VNw rFU1sW?7JU&dgs  ;a{ư\>R%tL6* ڸP?VjIb%fc$8de * w93c݊3]QH&H.c2pC)88 k.B.Awbrh771; ĩ@T#`Q ^ϻcmqyV:{ˍ7Min4vFbAuvFhEHYS|5Nqؽ#Sjz}Vw/J@$6 Ȩ2hR}(/#āHv)Ym-m`=p r@3*ꥥ%ؠPAnO^존DQ9`WUv9i4F#;aHc1)#<znKoam .,rKeVGqњԛU:D}).9pwm٭>JXn.fE݈AQgccōG7pE :0}Ʋ-f-@Pڣ;+i6)ip,dr۷1bpTmq̚ytq4SS6,<$GS^:֌mm i)۰T,T0Jbucnxtk2Koqrۉ##y:Mޕ 6+,xE>Sߎ3y37w}A &W`$ +0b|$goʶʏ}{ )¨>ԓ JJzQu,|ϸ +Pqw6eU +ROc.{J\n-)b苰1RNy 3NSh.cFƮ3ϾIo"A$ H +LI+U eaα \} +A!*<'c92ѿXkU>I?})Bnbx溲5蚌D:`!;>*2$6v#H TԬO*I#Њ?f$ԡkMta#gbpb\nrNrk[rqj6! R||:3-]hEsgx +V B512岃g5 +ϳ6vqٟO2廹ԫq'=kҔPMVdQ # bD!P)J樑c +<*B21TDX*  +k2NW"ơT`銺#tw18:<<[dg֯*)JR)JR渎#p 0QNkӭ+i6ęd;YXt'if7d[]AUv3O;I$m (V،ԫlϛ79誤I?E;t\˷>& +H,@Ӗko蹐 `'vTr'NJvhOkb! +m~nYƊň8>q^[$@ xj*;2P$|G_JR)Jz#>ꫩJRZ֬:O %I f3qݎy{}Bѯ4#4'pGG2F5MvեDs T˃<9˯hxD̄6W)!.wu Un;@q?{IG`uV1 {4bgU9\FOT9Hgf a^*j.tKѼ'eZ7 ,nf7=1^W(E!MͷkԮ f +>@A]l$Is&m ;I 3NѴ7VZJ[*Y6+!1jII0 "1p ˢ($Uʼ4d^O%U2C X0zPk=dzJ"ivmCwq^*\CyohbaX ݝsqV[w,f9l)o UNgpI:ۨU7d@8$ԫ]dvl'reLd WFGMBu8`&w;9qrprE{[)㵙8]7p%rt]{5hIoX 6p s+av82YGkY-"/t ds3٤6T1BWޝU=|.bswİƎ[FJR[#ZX4pOC$\Tr2+!Xs%I-77) I.zғ/t#$sTY! E,M x; :Sr)ʊJ6RBH~[3Ɯm܅ۻgkƚ2YYa? v%̆'[x}P݁MW1aH%9e$xw> +Kޠq>Dy g}mNR;4|L#$:m yWc ,ڥJyfb@T%YĦ23Kp9Ǟq^ڨ^HLGzRT괥)JR)JR)JR)JR)JRMyRJ fHp3QEǷiR'CYJx54Rln$M;1ykK+ w"ܓ. +e>cny>YcfA Ŵ1AM}nݏ9gd@TœsW2zz2Jm +cӂ6p8Hm.'մ2c.C2* ):{,bٍb'xyKލ OeK2:B[9j"Kh' \h3`[O0$@h䞤?I&M}_O6 +=7#\P5;B-ͻ#iݰpA;p^xGsiw-m!I +l#sJ)2 k"7+]r:Ws[-̩ Jbό!$tcltԽ CIl#Y >qQLI-ė7/%^C`cԾУϥȻ.mZ bGe,$ !HÂW9iP$dlz1^bBK`g poSgMvrm}ݻ#\VSQP.q ̜eP wd~ӭ/lnD$"!:ti]2%ÿ29 Bn +fN"(eܘ&=sgwyU=ݭկ 77;Os ^Zidt{ 9׊eZv <-VUcO,{AH,- +x5H.-b6ecfTvf K|vsWX[Eok {%-Ȓ5A!R +z";TDA$8'**5mʹ 7b]}] +״ߖ,n-7m2>_FzU5$wJ1Wy*]ǬH?rЪJZ2ĀnV@L8YeĈ9 gk15E߼;'h'ֲ02psdߦ4ec'wWfݝ׎Ԉln-[gX]B/'kcnS0ڢ8*ٷluK(na/gkwon&PbO84Na-<Ӳ$y +60鬕+4pH%+-Q89z{.`YcC;64r9f`yaYŦby7r>jfz8j}M eY!\m$q>~5S|nx&-2Ϧ}FKyJﺒ6<"?4O^1Q&G k9w5vDYXgk;˗%}Ey)FG- ǕVPHmMaL}؍U VL2g-ٙi#uW]ٓ*swyi4I2EY޻A݁yUf+ LzlRՈ;]>;56lYE2]؀ssCup\m!yD.P0G99ҶAZ2?88f\un$w sb0TJDBH2<8,%1D dz؍rTxNNO\TGqk%OnNvm )-b+]xJ4n26@k4[B>뺑/iHTtu8Jl U3' gpn՟NEM5mdyaIDlux] Jy9`[HbK>S]pq%|$EgpZH\93UP٘¹V@%e0͒@_>VQ!fVwmmN|!Zkwm%ͤ[k! +$X}:w/-xv2+zX͋DvΡdF܂@%Xz5`ӽʗp#dfH)T1@괥)JR)JR)JR)JR)JR)JRA=ktbvQ6pfR)J5;1 4u#F qZigb( + =I$I9$Ԛ* -:f@g' 8!ICN)JR)JRmhGx;@ܡc<)J88n,#umU$t5J ҨyKۭ׶xmݽ1m8^ju)JR+D@OgzҔ)Jj괥)JR)JR)JR)JR)JRu.Q$ +#Hi뚫in>Y.T 0Gk*Y'qEb*0 C̊1Ghĉ$Ӵ1k-vu*\3bQݾ8q ;̌&YOA?i-#cSA)*Mo1XX_;YAV qKV;g1T3ж9?}vG C4}hZBv09zuf%E39,ҐIU1F֭/cB2 82+gZwfvUc3嚢vw}i{ݍq1ҥZ]{ʶppAy*%֩l-/jͰ0%z9춦21.A;ݙUKY]J;1duPm}0uYbQ1,"6qyBFl?d1=*;^ysX,@8\<x +0 ڮF3xihaݑC8 yuV7]"YZO f[U#2WpO~<[N.cYJ0`y[YH|Ƹ'.GNq8]6oE@$UL|yg6X;2<)k[]!ՙYތ@PG[vve(Qg u_&n.y"+Tsq'hKi 6ۆ+`xC;C +J#Fp_m\ܫ唨B.W?Fj-~D,dRȠd's*jPihNUDi`83Q8l+D*ઐ pH5 UfFQ+Uarn p1jVܛ7svb;`[9+]Gk Η3$tg +$ GFk.u[dYB09,d[Ǟ+_xRFbgr**$@[6 +アsE%\mj[V.e2΄D`:+A?v-G@BW*Yk6v4¥K"3K¤ӁSc-(|J1nFUp'iӟxTM'PdGr)ob_FI8&^4I[ m/듏Aj۞K,2;Uwr+p!pAP9d{ Hof9Ҫ>o.$TW$MUֱk8 [g nk/XzK+9.$b㆑)М3+ HEKF$w`>%Э̝’FFRQ@5>m"y\2vg*YNʱɱL +{jI*I+ ,K= t>C9>@ sce վdO ++" 1 {1Sd֠"4ls|^ztqD$d99(֧jQis$7؝1<rp=VqCoo;A#>$x7h-bI,"/Frʹǘkv$.A($836'0Tm 8(nZ˾1PwG ^(wf=Ǣ _`iKn3L?hH 6C6d)JyP괥)JR)JR)JR)JR)JRv3yIkr#dXg0ӟJiw66=Ds5% ܈*d,X fIԕDM) :$rȠcP +3WǦjECs\43H䌘.L$xR;pu$fhёtm )s''hBqGFaGc4+p/%7Tw, 4cʱZ]:n/u&lfqqF X.2w9+'"6sm"VGK*`vq8O:hkc ]&%|w;6&KQ9#>Uii.k2I;[8EMѺ)8=*h˛+lR0F)#&V5NG]1>#V瓞:,eM^{wݰlO08zVs5͂۩22DP9yi40nW3х+ T..ϳnR21uc_qܤf2 +3NsB#˧Zks0[{f>{M͎ +6iP…ݑpé8cKy&^PH$ln]VcF>JHR>ڽ{8$ctmmfqs `qp#~K8rrprkWFAf]PGIwxBX3GDp-b\?ۀtV?Mʹt%јV 9m9+yRh@!J^X,)*>,Jc_9[HHpb +=s@JK 0-%و qĘB@Mj 9lUb.@6F3>[{(omḟ(.ی,Bɴ83[η1$:+ pFEk`xXfAN1.EG9 +A>y,o`L[|Lvx8$|zVNz&-K~A^Yqh$s8-Yu$M$`Hrbg8 +SL2va3DYe6r|_8pMN,lDho,H<^$ vjdMokK~Anigt.T; [kJ <6wqӭe5Dr3@#cn=8=35{Lr#Dۙp JJU*P괥)JR)JR)JR)JR)JR)JR)JR)JR)JR7_ȳG+*PIW dqUK,JggR7U;BP9dR)JR,W7T!vUH,"IRӀ=p3*mpe 9`Wo@G_1^pL`z<4`362xYT~Og"U12rrF$1VbpfEv ӻ95VlS!" 4Գg@$V#EZTf2EZ\pk%gq0%qm8ci[˞+ŻGK!,,!0nOʮ]zب2\O @n&mWSgHͱElљTu9RP[qQ$uUr6M]>kkT&7|+V^Z{s 'h=qհ*ROUi @3y > +^gԀ/ 8+1ҧ31ǶmO791@:ՕӢI~psW[+ 5qOp9ץkwi=mTC*T׬9$\UI 1 pyVhߋ Ïzr+{N.;B>ᵋOJ1?~EݍAn&V%`tc8PEfeaFw8URIkkԴra9!C+*!u=ٯU NQ# GcA +3VSY$oʨB:XśSr2edXPmX~Lӕ\N<\`VzK537 +F|d W63C\mnT)?uVBkkpJyVUEIn#Ɨ.rsҫqp:LSxQ `onР`nZF|D+eV]ܘ}4ѫ HS>0$23d=L#)D)WH_?.jN :.L쐝6#k1t$ FA?G+qڿvx7@ܠ, WTK @ݡef?@uyO O,WmtwٴgՆpݥZ@vZLci<8`[՝F[\vFkOgaA9j1GT,L1fc y.-<1غJlƁetv*󸱳(w2}cdp60 Ǯ+g*J괥)JR)JR)JR)JR)JRB5Mqc +)sϦj$'ɪ+pxAB2* "B@*( (jgtgJ[NxWcS>R3֊ + +Ha0>Dd}F +Z*@' `z:"2L2+H2:UԪ`ձı.G +,N98WRJ괥)JR)JR)JR)JR)JRk@I8IUΒt`FC +Hn#up2gӊAdd*-֭ۻo Y|2L R@o-k~ XR@ F:UdFAduU⬆xea08FuQd>5S2gL*+۫8m㡣]P(p`2}UIPH U$aR@II'Bg Kn +=c;5}sIFzd㊛CIon]7xRŹ5W0;n r) +A۰ U9tl2FTFE)$hE.T0,>#9x5`22~Βΐ)y*}&n^[VLeDÖ_#*%a}@Fvsֱ}~Izo3 ;J$t KyY|]ҩ+^} $>j # !~VAD1w]' s^27}]k֡i:J.&)>luQ̓gcǡ*H)w!TI'ԒjLx2T8av3pݏ\u!=۫``>FeHFBۜ:! 9 qgC"",FOAEz򸻆D]$V HﮬnM; +f[F$o<=FlgfH 2Ebm;ol8D=W8+l:l m]w}\>A>XX!YTJ W2Þ~MFqf ^ij/ d(Al3ҥ隴e ;xKw2SUU| ⭊)ݺ:`ԽMeCN>8С@«޹5"$մPAp%DT!yⰶvE֥ +Qx%6)u\{4}Km'IQ7Io 6-7!Cl tHPLSCQTP2"c$N6Tj]J\0+GOo AUOT ]A7 9pm +0\ɬ &c!.Db6]鸂x!G{mޥ,H%IECUkX O2z@8=k?$Z*EXēGe!g }=X-SM[(Gօ~`T;|Rd( +稭5$D*`u<۹G3үD w%~˻*)f $O5IYk0]MsCy$beeǫI'p29l!$Bl l (co=siCњ=O㓐H<85h&r^eN=q~. S=JN7/|trOu#I['Maⲅ``ΝXI!A''~F(l`;'>%֯C߸WP@ebmRl;LB#84767~u?~ VN}{P kfBBL1ǖkk!M +UڣzMÍ\JStÖŐwss~ɝv۸\ـf*CvAGvkH#D{aWr06㏅lQepe0ɐ֧}`Yw$1b%L+ԀNO^.M 5m'][AOuך -o*E4–W0$gL/cI69QFqu@#lǰݮ<|'? +h:BqA@$OZgL6ݶ5>wxNrT8cTkx~<R3v!9ۃ=حNi^8Ćˌ`7qJmkY djH*#?:]ėZ&[3=Pa?YZ >%ײK}6xӦ@Ic}dۢ)[6d8: Xԋ wut-'kau&iH򫙣_N@& +㏧5XD I;npwzZ&کR X翺OYUuIbi].`>Ehl{DcϿ(aDߴ8q>&6Z$ +@Dul9YRVf괥)JR)JR)JR)JR)JRuif)]OUa?EyA[B`$qs9,]<0%];$zdq54[X9"b:::MBPƇ*Fyu5[.(%;F:ҨtC}?m-.}qU}*Ah#"? +) O*4h7 bC(slffR@ ťZ$(66 zUG=#́qQ'gtVK PȌ@2 qsǮ+'klq$1*"@5J#j5k-HjOT]&U[\P~V0v: Pyt<mkU6Jp##~"ƝnB$,F >Mz[h!EE;UB + B3k"]E;q}r1%#@9{XEsJ‚N|@cS>jL'8skDVLiT.>!d^TA鑊ZEveEp##8#^_%Z>ܧw6GO<ՒhR+BR\`}uz'cbge4"@҂ s}s}ioZ8[ +6U0UA +M& +0@J*"Ye`Adz CAӭde9 `}Ak$ědb]v1=IgOa;mx9}yݏn}3T@@ `n tJqZݜrE~>p5|vPC8P*Nz=kt[-كa#̮1V~=#;(qUj%8$rNILFxk"@2aݮǾ,m<0$1Ư3Ȯȯ;}.ԩЪRCf."V* B EmXZIT1'"A!_hp1ׯJm"̙yEݑU}*Y{ R. +uڒ$nPqxHQ*`<]TDTKGփKB9ˮԌ`I$h#".c>[(Q̂4 s7cӭGDdn1*YdCqJݜ\6A?RSMc:ĂC€rOrY:ơ @W[uG*+ `OHcDN|*W*hwe(銥mbĨ[GC0+]s!{h~P럍zj D((!U:eF$2$7㑌5&nJ[->NN%s(>谢8P8犏u^Ȳ +;0s#=Ƥw)7mۻv3g+ҡOYܝ +xrryv(N8OiʒaxX9Rr|GC^2kSHoV!,U`inqyݭo;D]B̏n 5G,mu+I$3 Sn1UT0<^iw:\Ď BQ68s9K3)`̓|XSHS+YeN8Cy6+p`S.H(˒p`㚩mGPҧ eiY! +Ww-5?9S^"i +bz  5x@_8k :(G瑇\<+p} `?9֨?:WeEg~l\A~ +`L@'#p_LiK F0pp'5ZR)JR)JR)JR)JR)JR)JR)JR)JR)JRj 4C'iKVFuIޕ٩Jh괥)JR)JR)JR)JR)JRJZ72H*Ae 4]܍|g;Arp3X J$U /݆ny9nu]>kq#H0̢@JG$2ȥA ˕$i\tst/6}&l\g:^vvW.ќчa 6ss"mn#t̑0Q@ϊFYB)̇{C1]GNUS|o˒kCJ'6Jpzv;fĎs:mt/ +1wfce1qi>mpw(|t㏇+['hRamђ>i܏N*,y}0";p NJG]R~V)JR)JR)JR)JR)JR)JR)JR)JR)JR]UA=khEi4iL֖*Ys +-JU+4괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRPם괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRP՘괥)JR)JR)JR)JR)JR sGd2zX>F T!Bq aR'ԄD}QdqZkV3,$,׽)JR)JR^jMgs&)3\+mfRwtS>-|r$d}$W+'I`v>Ǒ8>P\[4M[4`啃{dJTmF4y.$We@  +:xH5S[ p$d2#})J g GՓXDd426(4TRRNw{2D t'ԚVԱ'Ǻ隂jF HsTT)JR)JR+>-h#$2FsGdiJ j;.b]I~ݴ= _hj[2tʱ6e,(8ESNI<؅[ tQ|WZ+n#y%`Y`6v)JRkRKy ȒnN u+UkQ$SbUI#9R~p0Gp)Ǔ/}Nբu$S oB#}GR)T>u괥)JR)JR)JR)JR)JRXӓVK8?A_FQ6| `@6}S@{*2CXNNvBwǪ>7i;BLo7EL#.#pV_jV,U:Q 7P E֗ͣt*Tw>wQV]]1<4FHq$k37-V T,f.NtP5A"9l90tR :fL LFIِ >k? =®܉]*ݓ5O6iyi +* j8'$PԢ10Wā 0O+vU('Pݸq"Y }Rܓ[I+;"wQu\O-kg@Pd:@#XV{Ʊ/tY չǑֵ򝦋z*GBʮ>Uv\WVk> F]䓱U`d#n6Q',q@η͡[A{8Yd`GWHoR<'\ݠA8,)#ߊֻ#=:FvL\ÁbMwR+xl,5 + yKtoj}f{Uma3F$(\:Kx#yT;=ݺnmnFCkcZݛjhД)bO!}# 5WjtUفePUPNquYKX\Xi6.ݤv$j8u歼MFQY&%ݚ =. t~UCevqxo7h7wP&+ !9^veŴ}kx4j#5K +8mqt)x@8Zѵ)^I 1eh,R0#ʶԻ1ew=ɅSLpO+TW=a$܎\O>޻A%%|Y 7Pj7KZ1gk,ܸ8ךͨhP\GvE!K$Ҫ$TjMa(N"RU ÷<^muysx*Jromxn0}Yr_.#Iwv6F۟0Y\[UDq*|9[ Vْ d&><9;Nۗ;[f +-8a+' 'vUl\0 ֦Ev`b"$crxݸAtGO"d!.HD`IW"HY 6Eh2!rTd:S;<3Gjr^UHPckŒYZI";*r;x3K` A5ٶ$хux}!9ݜyWۉmBm00tf F";q:FwG +jU9>=)jW4|3Mb6݂03/qjvsܠG(u.O$##ǝ-uQ7d"e~sY#8ϥgc(#[Ho`Ao2t WsZ[E"Ddv +R3̹遃}udd."GhR !AAu ;No^9E"̛cY|y׊nqmAR}ATAd$lypj wnU  +3ﭚMW]6Ssu%Ż8*6rY$b]ꗖ:HQʲ>n'ʤXKټpۼ^L6״9߳Zn[Y($f['hW<P$ wqe V)A(. +q|>{Z[J"IDU]^7b#A8u=|6-|G1m$T +G9ǭx^kڄZ=m EGxYRx˨kFC`Ѓ5}eu$*eԦќxH Q4{{jLUe$2)hbҰq2ʹ2ąByn, +*4si%L"E97<`r}+_KjiL{D2S"2cr(R0rX9ַzŞ45H"wCrqƦOO:I3c"4X@=O8\5mI1{ =8mi$L= `6*a[WwwU0&agdi@/znȐ1GwsUү`n/]=)c,c99wxEE윞wbE")VIL\bA#YKX55ԑNoACR{+B6`?8EH쬏*ׅy]X\`Pxg}I6w*ը 61t#9G9T'K<2c؜*cꋢ-\Ja&TN|^ӎvjm wf% y4+{D!) rd(aHtođH!\ yR gj(]˶`b=YIN5IZI7L@8 WV%ɦ&iew.sc]NS#7-}>֙ccj%eewF7IF=8Ih=g4AR2A<5tlﴰRu!}fOX-K`4͜0RXz٫Wx1$%u^@H!#0usPnln5B飚LF$)4 3&E&qs%յFkwE#Fv0I/F>U[$쌪##Ƶikq14_t11ÿG<<ݮ4 CAe*I\]}IDؚ9hFxQ>%'U_MH;1[k,Ź@&ӵ;fC +°qy+՚6Zc,.UGb@JMINV)!xl?8`pN8Eyt-f\{:Ŷ`LJkPH#$t9 +t;J=sY(+/c<["+ߔ- +4oE RJ* VRO89cμU{n=Ȭ啊(V 棒Ny? +z%ޡwcwDjvV._`|޾Ode;ix ==0ϾPB#5mA$SշFѾp TT>ZK9aou|̩$βFaW,WƊ-{tz] +y9^CV-j!hTv*G@ǟRnX[ē}ېᑖ>T=O\$rBXđC +2`JRO6B +YݱQH^Qo-fU(dpp1pAӚe{0C;B%P!8ܤ*]v^C1ԒkSSd_cV*n,הZvw(#fFx=5qڽ6IbE(6=70> Ոp=Ln:׭h,hfceGt# (!x>qn`p .1 +''~;7gU}3MCfVi_ԂEm5vv)mϓW +U[y^p3:ۓvAvC`7#_+$!X1m `5Am Z%ȫ/ub +bQUO^3Cr=^KQ 3`Cڂ[rΈG% g&qYŨdK%0`9$5tdwnK.r) @=*5m7df$ }Ą8\`Rr8"Gf\0H-'R8e:`0S'<{m 7?rVkXKmF9У5q:3!rHd׶}`~lu﫮g⻙$nuf*InIIyr/enYw);cxSk;Y-4e-NsO cK-pskh;eFV[z$sP{KmVc*} >G&h@:k5 Ѯ22#o@;JQ}٨VijܵݷyR/K*/>Zާ׭nxҀV#'PJ+xlmeudCO80qЊOyo:U#rɑ +3$Nk˳YA54o*\',[;zqʼk޼&Kg&5M?Bz;wHY +@m'8 e˗,RI +5N-MYgppN,j i +˧ "cvXc*̚ݬ(}H]7@?Fy^EmioW)$ݬ`p®ypG{ICnѸKhS(CmTqv,4*$O2z8'XkX\Gx-w(DYF 2*9ydS;oػp3JcR`1PX3UXg8e 3\Ҍ `5dZȣT\ +G*TUYU #"Kx;PdXPFA*đ "Uo8,>T9(CU1 4uT# LUCb$E + UƑ "qjȠ hT UOfIkޝz$^B +wH[vў9kH.^HT*}Ď)qg4I 8uV +j cNZR)JR)JR)JR)J)JRdP޴괥)JR)JR)JR)JR)JRnsUiJRif))JR)JU1U)JRiS4)R)JS4)JR)JR)JR)JR3LҔ3JS4? +~ q괥)JR)JRf^d ?v.#l86Nzr*~0TH}bWZhP[5c,@>V{\?@*<`pU]myN3zaVIIi`|i~[}Pq-f݀yO4sOo%?'T0~t,U6Ǔ3~u4g?8mX"'Ww$[}]㼓4doy?8m[m~wgUٟ5Cwj7~?m\!ZO?Us~q}VNO?q'y~[qr~qڨ?'$~'qO7U?w?˹}sog8ڭX?^h)c}6v`gkfl*~ր괥)JR)JRvf~Ʊ;D@3j+an YWc 2eJZ{5yop/qᅘeBY 5V5w-$N%bül*moqZH%UeG܀3p9)Z#"bBT +>g r)X'm"y xHu5%ukgX-H+ǟIyjX灞'1d3#Eݹ?oc5\۱gx3vO +F5:{dXX(,W>V6dvqs1:;Ǹ*o*a{-fv)lHq!\8|^ħ{}\}r#bf +#8>FnJO!uXp}Ezjݑ$ v;FX3M["1bcP_j3yE*JE A5XW)!QTWM[0dܣi{檚A%Wi3 qcsVn vwc3W=q>Ò +2@k^;k)nڍN G5Z9ŕ+N3wQLc*[8V|FEE8((P|.5(-ُGV !\r#3OJm^71bT6ILjٵ{h&1;ʅԻ[eW y6+IT$3J:*f*j=]fV8qPmV4#Q4mrtv}qIRU$7*Jv 敡*T9R_QS_*N?#괥)JR)JRX&7cpy>֍ Ιu/CDLf: +U ;<*Fzx㯞*`#eȭ 5}Wed};]縆x㼘wHrNQWv~iA4[+[-A֗&"T ~G/gluEi$sF>,pNJm,kD"p߸ v+K"鉑|8P($u ~-RvC.:kϳs;VD%ku6tl¡P@$1y&u 5Oftbv7#uz[ \[Z]=Đ[Lgo, nV^piʓI,1,=:MoJV4+. mee#ɔtϘμ;u:}2v 5p}k[eLlrO9o}9C\3y<777]laG!v ,Lm* o I3c@?IWP$k3Xo__[etRHwmI<uck=Z/U^ {?ɖ]MὩ/ci89;- )8#YN̺ZAjk2%U|T_.se `>KŬKf ILA1xS(q喙:"`/r"ۃ)ێsҭ6h/b0=y-dm.n3bWޛmRGBvULJh\/3y$9d^\i$9:}gV3P]/NèQ5oh[ZeVXBAPv6α<]&U^ f#+7^L0ђsЀyaViu+$*yG>Y׺Fʢ<#>j5Qg$q[wAC`ݏ_*T{ooFqXѬt}6+#a}bTʂ3Y2 :K9n `W ˹<[h䶸fw:Z$z1ـhüL`v[ +EY + H`:*fA%0vBbr:+G|cUt()wUb8`p}U.v>4лsԫG imnZHZX@CQm&3hпV8ޏkƮ) +`kf.&h!kgHYw"d:$) `Wo9xOmV,)m_ܬBȲ_]1;UPxビr4`T#bjSm,͚ r5"{$-UpW?*=౻҃|Y}CPJ>N.\V2JyFP u[{k}NWpoFՀ9 `sKKg3,LBB7#_vv^ی'h_Hh!;#0V 0#*&.n772gfGrךM%,:{TO 8<~ gM49bcNYsy6RjYXg"q^f&<@6:M)ϾjZ™)"ch򧨩{iaKGRF~Bȱ),@OV]Ƣ[>Myj,QIsoǨǻί[Y8. [k6$-ǻYp!aRBƲS,nc}nShTGўk%X]*KA IxEӯ{D\K!pGư$@|AOyߞ8+.ɐXр Xs5'dfbB{XLc3 4$.9!\TeF:uctYO+ "I1`zH#5ht{N+#8Fyje'^'C6\Jh&QPyer\}f+:fbŤD ~k O:-W,M +#d n?4ֳZ7?[8&X괥)JR)JRb)bT1LUjҕLRJV_Sj|>`C|@5H 9¨^~ÕCHkisj6߻@#leqΦØX(fm3klPM${H$Io$S8ҭwfاPhAJF0\>:# tI> +Gs4c٤[$d0%}Kӆlݱs +<]+i3i0}(UX2qԊ:t/UU=_J2W c꫆:> g}Y8EcR]-5GFGO Q'Y&G0XYjT5沫9@Fq $sE`j=X[;Bx}6[H-pNv8*T5eZy }[Pm2KNF}jEI(5##zc*3V3'<ܙ [W׷A=띎0*F*xJg5CɪMu5xX6ry B yY}Â'#^މeN0w>N*⩊TXķ2n j!Jp[4 6:.pk(3ABsT6ђ>zVu8 6#M۾iP*xURj ]MnɴMW˴fŒǐVKk/lFÂHq듊wgWi*$:j#N\.y4^f86?OZ:Q/%tcpq{j?+h$8S괥)JR)JR)T5λ8vS#/f<;LZ('}>)_ի?`;e˘.S\Wjw3P =Tkp{z4vWܧ>{yi_*w_?xe=Eu>xD(ಐ${[Kg= %T9Us\^KbPs]H os~Um{]6$x|FLî?M{IV:#}X`B" y=kh@{8^ ZnjCzL+ 3ڃC>${Ed7.oyv~k+W9_yeܳ_EcK+ = 9Ul7rE~tneL 88 uL=m!q)pMHhʡN|!y'makE@x4;5;uv;uI\in^O^E%Rib|[b:n,N^68㎵!o.a6lK)yfV$xFЧҢGC-"`8 z涼bO Lo'@9` jr$i +X8}Z{vn[ PK8[^X^L.#3*&f``Ym Y8 LA149~T`d{.~Oy ,46)P~Q4 5 J8$VR7"Pr:1?G2]9X&UB`qǟ5;QȊNF_i1D{n{ӈo?דZjVm덣d.qч+KYiRenH^pG\Na״\ꚉ3?Ka`3{R}R ̑:Džfr7tU]K=`It5#"$I+/{x8@>^jk\Ay`"1iPųcQ+9,Zb<*XqHf=F@ + d~N*%*bVfcb-d}8#ˌTc{>?:X>\eWRks!etp<%ШZl#ܸȑ xyǻuT]dM"U~X\N.$xLAR +pP r=+(GJUaӤٔDWr85I8PyM6Y.vRѣ,jP8y$Wwj*d, +l+"F< 9ii[Tb1c?;-2Z8ӄmu U]6t7rSkgn=jC*Eۮ{ؖPޘI5q^D +HWUv@a}5jG,ʠxr`c kD7@S/2[w1Q5m5u{Imۼ 63 *ޓyy=}y J1' ҮLP󽈇Fc$ݟSgXy &cH0nzUgnn4جL[k+3R%hogDd<+s:Alt:!v$*> ]C9R,ŏҮeBm9r=j"ztw6 n黮xe"HTȲ|;A7p0}笼-m4w( RLHP955U`(`UK.'9- +r_d3[:޼}GZJ~O6&['溏Zv-4 Q9q ֯L$mpNoWA<׌f NԱf$}Usm10`b"˵Yp3P5[wJIc#r0aQtK '{mbBz?tk{X g)3F1GN .-ATJW9Ttx?xĒXu=Y[xHX]:@U}<8?N*u/D. YgJ-#eTVRr6w#n D^sPgJ:`097럣>Q6%yP7 #qs[{{""yPTsxjeE*/p db-44,a2^7T,{ȶ(@v9,rrs㌏:ѮCnT;OÃǞk=2;Pm!\YM3QnnH@XebIq8JZej2^#m`vJe^Z F +67r1VA"ʢ[R 280Uy Wmڨ +<9RqXKHx=HRH9^jVq` $iRJHZiB[$n$x+}=*;{,UT`ds^:\ުm'vWi⯷%wu4FF|a*&.I"i] +TcHb=+>$$d*F:μgC(_ $s3nNO{2{w#ӂH%3뱣]W[CjQ^DIUX{~ +I8ee dcaĺRi Ӓ5I(`v$f-QK1k5=Jk;xSVUn<@HEK:*w#?l\܋@B$M5[Hd8S9괥)JqL443L43L4Vf3fiS5ZifҵKu{UAL`U㊡㯥XFPHA=L Us5\U{yk a;u*E~zn*yqr8UH4LfV; "3BT9t"saHB=Wcv*qMMUPiV\*T +Jէ}\UɪUU8JTPyh PjJ UG:Њ♠5WU5CSϞz81p*S挵F@t=) Iڊub9hSGŖX~쵵W)\괥)J{cY4"ۅ܈Զ `=qvVP^kf~GzmǺiW>,fwHڣǞkòjzc1E#RqbkMN㲺ݵJ^#CY83׊~}6 +i2;\ˁ+vB)V%@ f;BcOf q;%d/idVsyu/c..idPLI_N *AϸwS}[XKWX +FC6}2["xcvo3&ךdA}v٥\\W|vXn 32U5#Έ9Mދ3I pO*Obu۽SF[Av==Uۉ-D(``v\NGKwiM,`\®X:oI\8#9vI X%t)9Ppzikˮ+\cvuyշgJZ 0$c+kWVI47~cNOy!V2=:sJ.K ^2X3c0@:;;J.&mV>~N Xм]SqZy7">ɭ?Iho&gH V5U,H.IlA^}&Egs/w,NMј9#8?Omuk<3NdPWi#v=k+̒ZGr-+q+t8r9Tx\=A~F88ʨos*xx>5yu V Y.YBA!uɤwkujdTV1$F#}j5ڡӌ:mgzR3*Ȥ#J7}b)j:83u_h2\d U)XG*#J^Jb**[LS441ҩJZ(T5O:15\O*ܪ51 +GZ3T"UսM1W*sWT4 +ӥ:JN_J*SUǝS4Z`PP-W +SF_¿٦O~ Z괥)Jѻ{O +4hޢ@۷猜íO|1wx^[v;`@\z B[i ,YXy=G-VKR /ү(m#ӜfQS<`dPC3Ņ#=Oݰ2zX"nAșy}cߊv̚F5 ViYKiUd(OdzNȰ5kj8P'εZhY隇yE,ţB(C`3TAp!CǴu$$k"%E%_k3Z;k 6/O1SY}[1[Mw;XH ^mrvM#)dVc*I>@ +s8d aX 7Mޅ2 ܗw"ʻ$ 9=[.}v-oā#ng!0=+-yA,YsҿbF")7xD߄g=<ǶYi$H!UG-v3sT P{xd.䎠V͢/{bUX#\ny+7Uj9[sk~{j)ż dP:Tn('8C`ԎѢۋ&f00S# d[[ぷjеean. H1LVf 6|As1?bGCpi[<8E0uKH=rm! ]NTX0#21?EeL6lJ.X 0ֽ-Xf < ԊA12ڶ#pV-;H`N2M{b(zI#YT`z2>WTi[/$ȬOEyHak 3^!a4jH$LUE.}^q[#J" P"@V)4k"'P4lqP8= ,H Ȭ@=sdeHxظ>D*=Uعqp x%M![9E?+kh8e ?Mx&iT""Use$ACaA1j:*(U@w![e>fiX0\JXaB"w9ݜ{ƋF{6B3˨RzqVIq݇xf@ eϭ{Muh +3sҭG;mI0g[y4{fVGʂv2qWs0y$Q8@mKC0qk*,'c&@N'ʯt4sYTd^ͭX __5*/Cط:m_dvd̟*V8s(5.3q')Ձ\ŏ]ՍPq~.`?eCj:mWΧOG85k˝ϥTkpW;?_u<ˇP~u>گ6T?O_jէ[ϵБTTpßO,?mCj-~هPu>ڻPu>|cf/ΧTő!=0̓Gh42ί^-Pq~ڧ˶br__5*'ViGuVίW~4+'CǥkOp~u>ڷAa*>n?Rg\_W韶{Eq~Xpqij/Uej-~ۃNd?dEkׇK? 5Q~Xn_mZ|d?diՑn?O:Tkzn_qbǮT݇-~گ˖bC~ًRJ>کխVjv7zgݚ3P`G<4*.X1~ZFaj/C0q~ڧ˖]wOqu *}cL^xmSA}?髾_ӲA/O7x5OeEԝV\ H*+n$P괥)JRsP~|aV2dA{ڔ-naXc):oQ>fpƻoSQĀ*-j imbcxlsHL5cERݔaJѯi!G;^M1O*םoEXfK~qTkGGa%][\/R qpjYoc4Q^5zvʫݖ]j-**9V@UTd*_SӰF8*G>gjsmme;L(a&Ӵm&Q JeF#@p0.b'j㼎9-f1.ݯ>k7Q5=N &rBY1ڪNboU&\Xjܦ9p|bW=2xuvt{yU-*l``9l]nӮ$:h gy.-Κ6vd0;@s^gkXv݃A;IdϕO;AgZ[W'kue+"7)kyx/MIbf yݼ0 (^A67 GPLUn;M,%6۹!'[Zv$!@Nx\M5#k)2KkTsk=Uxi ͹V8PtUO? S_BC"Ok*NnF_~ƇIU[(s/Aڏ#*cn?Y짰!|m?_'!6~J?*>vSEWo)"M=aOC[X~ 6~?MWbOs}U_`k +{_b~H)P"O_lmQB> e\m!nt}ja|G*~J+I U=/OOBi-x6e[Mh6e>I^/ͧW .gskUo? } 1BOB6e>N?G UjXkSS__t3/ͯU:]raOwȓESo)"'[!Ow[!O_> e>M?G Ufz*ӣ؟ذi>ʷKڰi>[HGOc*⏨U/*m$U=i#8I+U *m?_& kUM eS_1ByE=#H{,ȓGUHI#{i?!~ʧ!#Z CCǏhySj)eWc~H|o~|o~ۏO=bl?>A~U(?䊧["Oe]P"O_o?!~ʡ? UL=m]6V?W8I UE_+ּx괥)JRq8叵D(bf''} l\w:ȼQM;4V*ƱȘl yNr/謏0ݿk1*Nu? +SqMPʆ;A;Sk~"4ۻ~{F U|]H: 9Eaxg1٦]c"fۀs$#[ ]Hҵ{;i)Dg}=IHPu# +ǠcVj[;-Lw,l\L |d)m#]tltDDRbqEQxOjzi8_k(ee(F +Q켳@GvR +p><՝ԣDFEv1vP +yf/:f dwC#Ykԭ;;Ȩ.؇bFduI6v[\ji&nc(- ϝ@ֹՇe^D_T_Ր}Xp-͌d/b9O zŝ+rqP}H3<v]{ RZ" ,xpUF#3WHV V)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRZ*x=h괥)JROY쮡Pj+<( ?<? +m$ѻfBgaeZ Iq׎j}. vx ;w8Gn : kUcm1X-WG̅&F.ꡑGVSNҤ[JڈG'$NI.MGVmr7e snvN~%:qlʌyꚅq +!6dD);$'ށ{d EnNbĶAB'hwq][]>VLxę>u=4MBQ&HMG(nY/d/Yk rm ~s=ڞi[N#ԔexH#k;s2+v'hڊEyjhY5bG0p6|=i<,Re^HRbT8O­ff4ZKwh1l!@;9⫧ZiWEC)8QN%yAm6k1sq%M+= UaqE_>v~&9bPJ#ؓXrzT>v:[{[0I:I2ӐuvBTU{VXTrps*Gk{/uګuk2?m<=1ԷLF$_02" D7e^LKG##z{jz[_Mq#ȱD ݀xϕl +6UԪS45ZRLМS SpsUfJRfJU)j)JR*TV)JRU*VP94i@sJ)JR)JRX=z~V)TP8b@=:R)JRXdC +괥)JR)JR)JR)JR)JR9{H!6S#zV-*>%Lp,[28ŽՕA>[M##i쯧6t(p1Яuu"9$Àvn|ϥM5m=a,bI$g21Izם l$S}u"re#2xfVS+)+" a;x#9`yhC`́y#ٝ$CREH*Xpq8[RrwGv$  {b/m +_Ql8ϕy/hHH.L2a@q6z]K$07`A WV8DEzQ5xf:R.r )Rr2=k!0D?x؅INZ^H43V"ǡg5mGp+#&iQ&x9H;n]7rLФu$m9 3RnX^Yvo(8,@]N'dQʡPrx ZJt" c @6I=+#+iIbK{x\,#Fs#)'MD3Yw(f8wO^c ʎҴK] +2A=M_wI v_i]\UkH/#4sȩ;;zsV(P"@q4d$rvb1; }b`,|'dDKЅJڤGd`8.Y3h͵z 藍a[@\8(z p GZ}hSy@9;>H"n=mffcP<<PvL'C@@o09#g> }P6F#$SMsC;="A70Ϻk=6IjHSEl`[oRuK7F^v .C+[]u3KUT׀Hb@=,#PsveS$ա VݾtwO BXgȀzT;#PDIN‪Ǟ0d`nv]GL0! ЭrZtG[ KJyy<'Xu#yqI2J+$H,@bI;{yvF΃ҳmVP$P*X8;>}BXv `:iml$P;`I P⯸QJEj't%y# yttytN*|L 'U^YJhd1$bGòNӚMv0aHYbՐGX qFsT6Qe]pp_-zb.{Wmks݄D20G11xREN5d,\0y>.9㚕m+[x[d+spF@dw8-^e $o;]񻜐I[Wk!XU*Ibn9)Oeoe#Fݰ(7oG5ڼrDHE U0O# ppGV_{괥)JR)JR)JR)JR)JRMqA к(@I$`U; h1K 1+#@KFsϝYitkkx^Y% +3уNFH[ShZw9uْ2xzVGz{?;Ymw'qR~^i2h@cG2̄2r 4Y\嶠#-!s"rHuPc=*Y[\A+<ֵm{^xwRc?H>jCCMr+XX<ӧAU4H'0r:}qr^gX=s$G$`C- hh!ev{ӃK>zWh8IJU#٥QUH'R۷!9 c a]DaXG+#iُ^Fz= ֽ4$S YK1F灴t>U vmy^.dTqadiRܻ&N q>hQ/wG +'yM<6RI Ĥz=kWo=RIF_$@:6wmcm@#jH!.B|VcZK I[.VTې)⭶MSVKp@skj%;/0AWhISܭ&ow3ʠxFס^!e!bp)#1Ojb]yc sUQmҝǻ`f$ Zqfoyi9vzp; AVsnq޿teh~#~E4$.휄Ȯǒ<dɭԽܚsBd6+7NsX+G+k'*i&6$Lax dtd4UE9`g/uq,,Y$YXB'v83TPtThB2xsTi4X^EW׻{m^M3Fsc$Փ4Beb%'26^= 3B,yOzʿuP<`gà6^݈rV+$[\%4lñvG5썌ǺhZÜdVҰ%PR{xYAQ&# X}Eٍ7Nj|C̆$ɷ 83`u3Zk4n1HCUUA8 usXf:^ZJ$1 *A8ҧ=:9cU2ؽFCsyW%V&xem?vo'ZZi7riAܲkz`84Uo,唑$QJPF;wN1aefH׳L +PQ|<Ǭi1QH9#VPOʁAќ.kkʰ`Fk*u5ڈ"o=2vckmR0 *~+ eOWqObMl=1WXj6}D˸gS95 ^דD6&{aY0K<8uiQįF +2!Ŗm3/# ^Pkw2I'.XFJ~pG ua6."38vS٭Xrʢ@gVrMV+e2tvpc$z]c)hXX3STnt=2"ҬS-ijdPl c4"H(&8#{lh856]VyT ,Ddb2#|Ir 2Ɓ9=:Tkni׌±fuP3(%tVi7`g{:+JZfҽ]db{Ղy>2W]gX߲]K(VgT#ie`$TkmbF.϶H#VZkwqde-eG"{M_Hp̣ܠ0iwEg$yFLZWTӥzYβ8h uh/a${{[P\X)+#FrRJiTP괥)JR)JR)JR)JR)JRڵ+&êȇz + Lqlcmu +*} 6B+د=7$-pܐNP2OKv^*.%!Rw gZ{/Z& wYpc+QY[^ jk.9`J6C-"`> ijᷩc +o _JrZHk>"W33 0?MzhZ{_wc&LȲomޜ.;kFq+6.d!u1Vm$H;0Бj]y][O 򮌭aZdnlCc{Fl~^-76HY>@V?Ka(,nw3 g Mn+[Ѧz;KAeH yF[Yhw2fH1V #)tvzVfٗVտxݚ@UA- ְyilBfRs{,WI!sVi_#sE@loy[C'Ym2ҭ3 (8pN*HXIor+$`n8 "+[3N1ddeH\xyciɹ"P9> +t˛69vcy 輹@(9(xۊmsxMt "+Jq#]vq#M`S~miɽ`&ݝd tֱ/u*$܁[zRFe$:Y}F* >'$vn>[=z6ú{юkk/QGW ްq9Ebw ]"t, UHxP|5Ei}ctww*\T:nqxYk9^x#TِL#p:V̌1v9I2@$V*}۵m{̈́_-@'#[ǯ>4ѭcդu @%׻8U. Ӯ$KH/cQonۛaݾ9+ud$-Oe؀;Xfb{{;nL@9SXtwAT(˻V֗p.o-> b_i^{412&ø*.skokK/dO) sy #P7U}%vPCΡ!Qv뜟/dP$Rp+:q5]sNd%mw2*`07`ⳗ yrvռ'[JW[\=%PNla26s^/Ⱥ}@" 1 >rEii +r9`x|+O]z]U"(FdmLEk4RwѓfR6Hl>'vJ1u^FUH:Qi_alc}7GV~Spqxle?7p=:VͣڛYf p1J6FQ$I5쎏h,,&$DB97l*ĨcVIH_ɴuDH'z +6zz.Je2B>B}&XhΘH1&,@~֝OK˹Q9V<,2<ݤs6#*΂s'Xs 9eؚgf+YAvm𐪼˚إtH€B22A'3M! +cv~pEP\$Re2^ !E7'皥ij9bTĆDoVTTշhc#!bR|[T`>kn Xn'=}t,$ѫ*`ΪBϝ[&iw\D6b B>Fmj9 |]p\\Y9`uL)VYzt]v=q֫͸#m88 t5PKW^%;UK0]y&NmNRPr=ap0]o3N[ [tdA<=8U#i#Ia|9Z=´2.ͨ|C=8}ixa7 MFX}fNZ q9uu gF_$m޻:ga5MI5a [:8F,*8m9sxwNPEv"PY6c8,p}+=-PewU@2X\moUrF`#Ȫ[j׹fI1`CǕR JF9FJ^"S12g3AlbG޻ U#mfΓ#FQWYAG[Ȳ.q!}8WuK1O\ח[|s񯋜q?E]1xTv8½skw# 9CߏO}E5 dtK !F(ac#1:;y%pwԌjȵ[I6[j׌ + T}J9D-2$ 9= +ߺT_,Q}4 hmg=k5^Y,LчcdPK9 Ǩ]V aHm7m\ 3?4u]±vvLUwʮ^:*+=yV?mCc)JP괥)JR)JR)JR)JR)JRvs<~fqݜgQ{G*^vmcF97v{%隺ZE8Lg'[*r L4I8am Кomޭ/Ylq1;?$MFȉ5m'HdR*6-Z,r6UU88|3^wq{IVV1Y|=r=Amՙ,uHmX# ,G3$5]0#v pU|jVʏjs7N| }zdGM8}+^fSZ}C*rۻ<~Y[ۘ_Q\Ȅn;9d[eK}#;5ݖhra|s78;~v>ʞ`}No2鲇_X:Vmʅ u~vbѝ7*Ie$^B.2ssKu .W= A0P 4r=xpA54hcKl4b8Ե6d@;1OtǢ9uL,$̟*_oj1)7*W%݃} >Pk?Xw%ߌsŽL],6Mٝ*m$czFF+B+yk{m;Fݤl\.B"Xm"5\H>wѯc-6èʒ>귰{Is 5zǷǯlCG aա=lb?zǞݿ7:%}SPD&oNlZ]~j{303wWklݢS a9E Mt'#IX{\nC 4 = 汮FBGyv9 2O>U3բN3xX "K)`Xȟ! wY;rA׶Cjb7 pO>|0I,WdH&{,.z>tH#϶$]6a@0OaZ$Bz 6cR88VI nd1.GT[i;IfmU==safOMѺDs pXc []j<֖:ٜƪ/2ᶏqrZØzNcj, 7gn}:6iV+\ܱ 8]c%w`?}G$R}0K9Cq) >^U;&0U/2.Ёv}sھ4dx0@ݞYt`Q=1?@b< 9^}E`!Ke) h BK{1e$a<>7](o=:  eb\ ofZWhe +}茐8U!ӛF6 E.R36)b͜Af-vw5N9`>7^ f6ٴ5aX%7-W0y7# jn%0*GFngd-[hq3[fK9"F@f؀[ G^G³2 u*FA W>{;XZ%?{pG΍xlyfI,B\jMq$p& (Rמּljf_, qۻ*XnAY=ZtDgUBȣ,)ʏy!Dm,vYl@ Jl`[l-OvJbJAPF}3a3i ΃#وZ #1Jꮍb&7 dG'/#ݿ8D.RLxLpJ12܎ى fS{$B +Fc?ŸqT찴>Wwr#j2FһZ42\4V7񥻦 yD5cW,E㰷2G:,F>Wy3WvNIncI-E¨L"r~ZB4xY@)*<L{ɃC$pF]n~+%UiQ 0Y"S&Zp c{kc1OU,rz !2R~$ + PGZ`01TXs\ў:sLWpL#ƌX,ytN7Z|eALqS|OnH4v%pO:Z4Hh#ufUzZwݴnV( s}x1#0bd}5lLC:+Е> LUC8`qկk F%A>HP @?Mye.G+eP$ vz[k23ИzVm\Px=G>UY"ITe###P:@ZpG#Jv@c dns+KXexհr2>u{F +#Ac8P*o5L;T/N*cn(2A>䃐OAUXʜ ##Tk vFW$RORF0Ii Qƪ#bU範q-lRDrB(A\(T3P# h'׀+鶰 @@,Cp:ׯǒ'iW=pʱ,VbA#  +c5qs vzi%S(WX qlcdcRP Pq/*LkDc#G2HG 0<W0Kl\?]PiH1bi#9 EąxFNkhP*Fȥ;I>Tx'bׁƭkHY3oF V+h +#EPB0=:uU 6gTP͍ ǩJR괥)JR)JR)JR)JR)JRP#ӣY$%(\uA>{"pd A#>ˆΛLkj7qI +ț ѳ2jg>Y++t)YՙbhwN$*%F$WnhX:"uGc"<p+IR%,2p>WdfΨ2xg#|4) 1+YbFUy͵KyU|rTʃy8z"V#몆 ҭ%C <׷7[Ys8ڏ}4*uF&T  tu Hfn{qݤl13ץ]mr1$Xg׮EF~ʈ̂MW,<{Ȥ4hwU@֯ӚDe1E"$CAu# zj֫ ͽH>^_yZv੊9 +ơ 8>+AzEEl9uk:ޫ}`^سw`cSrc($r"p`b2= dTnF 9XTE3\b %>ǝJ?U7ZH@,'*2GO gᚻpQi"1,Dp`׳\Ď#. @@juHq|p$Cn6 ⲝm,t6A8eE$x׉=,.:%m +LK90H‚|Y%+֕T0fs8 +ttp)U.Ű]d bEkޖh +ܙFMrũ8TEnv{r%h2z{mMdx½?p+*%@zg\@}PKE nsO;Qx -k$ɉ&lyqP|{OMl[y}mwGtm_ @沽<Ț@w6©SG #>uڛM*[AV+ԏx5l+=eW#x`W$>Ucgoqn - - c5VXom5vs {j譆R55 +0 ŶUL, +!ϗj.d=ƙ' mT`&9eQu;h46M%yw c,rNsRcrƮlnMr39DLS7y=b!fڙ!vҤ{t֯flm2K,) v:kHh4w$K{0qFyߒOU'0Ҙ$ڪ@P: }{K<`k)-f¸=+!=F=-<=T :L7Kiu-R!>k7ٙ{B;&C;=8D+6xCb0#8!?GE^H@A00ɺ*Q: wJW tlv;簶h̷ 23+?ڢU +zѯ3IfYɒF3$ʇRy. +NsSt-#$X# syVGe3R-Q1-ª0>c|fX'[~pMA`Hw1֝*[4%RmÒIYDl0@l2WwƱpk-mHM3uO٠F9ljP'v>`KU@A+2JLGs9>Lھʋv4cl*;_˃'zb{9Gw@r6rI;~nIvڅl @#' FCc=sj}h-c+i$à\yN=:khlAeCi JIOZ_jZu[(33pA\m^z)YZspVlFJ8/F +9[wAisc\0wb +NOZ յ x F.Kހ#cT(DIdGeDO^6 cE +;v,@ Z7zJn#1b!UP +[I\ LwIT2<8ܼMnQ8C3ך{Ek α,M|@>>UMxuhlam✻FXɉ>-̣/Bm.n5wrI$Ȩ9QKK6o c9~w%PyWjSȐڛe %c7#ŵ`q^669=q$is+FpzAl-{@D$ݦm +e>D"8;=4nZPβ[-l?DGѤʜ5NUn;s$"FWpFN= gtEm2sLc鬅)JP괥)JR)JR)JR)JR)JRuim`|k'8#T\Z4†QB7QVgܯyMt'ߌڅqݳ?,񎧞)"TP0,1Q{;9;`Dlc!@ uK"EhQz1=jXBmBl]Iیf/#Xf$Ee MUYbV }WG#5I;$TPpP3ҥ*@WŔELGs3#-b,("9mNy9yšmc' ?Mz 2@mG{ιZ2ՠ0FуZED!@r''>okI8'#5 +D h>%P=qWVJ$H9€z5.62C7z/Wy[$k*`   m6̓ J\|Ygk'{ +L:{ܦ;m u"`#P>HHWb(U8'5- ++F1׮AMzZX`rNJ٢݋۱vqsV]=$a%w`  x\:}ۉ%cPn8uy +Xt[wY#J +7`JR괥)JR)JR)JR)JR)JRsu GםZ$T;;6RsL"^1]4DnG*&va; 1Y fE3LfJyc㢖:qX7_մoKb&ۀJcj+(d +C0 dtۙnhNmsx-9V1@|s𫢼iI #>+4^&18ό_?4R*ZI`Ql+$_f +`3YӞҵ)/՚!JQH$eml*~idTd^ XՄAQ瑊dUjiQEX.Pel<'I3US5Z𼝭y612@ɫ)B V8U9fh4 $1X1a*M^v76$]ۢ`8ϐ@#ߚc5ZM+ٙcWYnbY{ ϑU:, cզW pJ㎼K43L欚N -(pFZH=IW0d;O?}d)X]SZ-eyTۆÁqIoH2@y=jES"wu2O!Fz(K;oewF[Q! +2Rüb<+autI AJ"Dt9\sZfZ7q>3|`nB=:VXd"YR1 Fm ;89#*wƙE3Ux;[XāϩxvϨؼ[{\6&OdLוwa3xljN]{R괥)JR)JR)JR)JR)JR;]:VǘmYr^۩&Frۥ +F© ڥ@V1ib8XOULfa%ʬs)e;[w~e;,+,s WV|+;Zo z4Ho-}py8mdQOxj9C岤c\єng d#B ['?{sXF;Xce##퐆1<SY+.ݖ㹑]N{q ,N6*>כ& m(cbA%#\ZՓ²CBۨY +{0I\<[j{Fa }!\9vBSKɩ̭,-'w*m2"zUJVth<#&8<}y4Ւ%_)RHƩi-Χ)q,qm9Qa@O[uej|+<[\ CvnNHj.m HJ[gZX`py 8:7vw.Ev6岧9ʷKvg QKr >kWE4O,jlr1YY+ >ʏʌQ,@su{4dbUkDrs"fՀ85ἆ +nunĊFңsuϥg+C,>[w+uKǒNr8qYAsFէ}Ѽ8.ڣ鑙Ymee$0! 3\O$bᏉeP_r9>ulO`f*xġ2 FAtoz;$XD}GE r6s4#EdldNVHݜn"Rf$Ty5ƥea},HcR euu$r=F=kau떦$Ҙ#BHTDcplϥ{_4rM%N4V8ߚkt^EjĽGTUӣ|Lyyt63ĩ#ǀ#W.v0%c}JMJњCq<;7*}{Hn~GdeZݛ7\$$d@qZFkyl!6$r@y?g2$H̑3VMJ#<n[g )YT(bך7W^H& +YAV WQDw푼+$AYi}#ɍ ghzZO 3(u(r3vj{k{R*Slέ2Aێ3^Eۅ .͹6ƲiMR<2 +^2<@t +<knd2|fC6y^(Z8]B~i;|$.Gx]Bҫ$[uGq+Mʥ]S0}ef.-qcA ϟ5U ䷁/*`M|MYmM4ȱl@܁V7g-"H\,JFj٫|Y&X䑝͐A ew`FC;0M.H&iYawUW18]sFx#R-"!" *9pxe8*Xm>*-g-/"h^A#`Rc;p0:qW%y{@w @'"߳7H"f,$qy#85.Ld#9t!ʞ=)2"bI5v&vӌX +X6!,r?NE]Wox]w +*63QGe,V%Cѝrd͒7s95[xC4fbrW!I20"y00w(pAA:f'FeB)!Ap$}#TY ʲ8TiJR괥)JR)JR)JR)JR)JRFPdb)4 A䍧Ϲ^u驸w w?5e()hр>+iL{>*>J2:Kw3JrqD`剩-yTf#3X;ӫZB/be*ء +*ВA>BڈVl$n탂ϻv9h>}>"̠V*HϑEJ7k4A$gjVW X!^<*X#^Ds^*x辂8t~[u$##f)*33gݎmmT9摈#lbO :P?ԯ=GR]F6-M4z ս[q"Ey,1>Ь-wdpJ#8<i[@Z9E~VwpLx'>r2iW{;gem{bN3d.`*Y7P5+=2Vo`\;@ 8bT3ұz_QAӽu맳Dc@]0b8o`b,ד3G*xVzSt\qX^HR괥)JR)JR)JR)JR)JRXբѠ#TPH\d ih[Ҹ$  +>ڏl4]X$ݜ9|~jf6;6D%$_=*6iWlxO=yiJ;]262Ty5% :-TMa\wzYobEImЌ#(߅9UiAYץyk=a)H n~nqk{8kpvF!<S^}=iȷBP9=fgK9/hȌwr v$U6COc"+JAE\;r|Hմ[=vMe(=kĈphEȨ73NWYϾFѢU䀻Σ/dBZGܸx&؝fb:c X.*khC;ZL"yBwMF=G[F 8rI<~&ͦ5w=BDZJN8>C#גhbծP3שE: i,ar‚rT9ם.{h#F.n.ǖ +#>mlN"`=AUF2_ezCg qT>тtYq7Jb2ܧ0G?ecg>KӮcXcsOP=&m"O(;6Y%بbyH9gl/.zm5>h> sRZҴϔ=ն Ycb7(oW# #tCmޔV$K>6@ +`yc=kIK CFXfc /g7o+XҗWCʌ8t9\ϻܭܷ eت"6/$3ϝxetjr.$&ﺒdI8 VL]@CFkN_ +3)@ePqצ +]ʌ8xrh[ok,QUPzFI9a{;au{ ktG-d0HGl`08ov+\K[ь" k@~ O>ѻ仸 +#U@IګI9>*5QvRFd7u)my*Og4,%Mr#q\Q)J괥)JR)JR)JR)JR)JRdcΠwֺYYR0V03zoQU( b2ǜ$dOL{A$2I8S=ieD84LO]a*Nnx㑥}ȝֲ6ZWPu!F܌p3}Z|/<͵rzs^tSh'>tf2Hy]JV~AU1GV\cp px0kLw{<{7rpXz<3RJA>]*PhRjCN[l@d@xO#==9s]ƠA8JblukKWK kk)#j[2OT=/XĦ+FU ?n[lYhY#=>=jfTVfT0m U݂=2ELvæGWvFXл*q'pk EVL;R-9PwD.F ,-V9o$DIIې|RJQ01LS9ҕj @@tWR)JRLS)U)J괥)JR)JR)JR)JR)JRvٮV A Emɻ92}zq^}m_ +cB{G]KSMˣZIq'wc+s5z@8y3|rxA[]j3 _2=$f??B5q=:Ut\1VxlqYmfQҴgIhb*o8'?;'W\Z|M)2BFqf, ^q*.Kqu=hn&f>" `Ҽv&S9e;H 8 犿Gl7{o$F^ ; v0y9+OkoYO(S eq(H`îd #BHIS|GPF*;Bvr01ng23qϺ-uy+r+lL=&sg$PeX$XSFc'Ō du}^ӚǶaRHua1.&wg soU +]Ym3>q-īdc@n2|HַJLW-iJ ># )xAzoSH.r34o$TR5ۉNy M|#cl kju-Em +wf"H_lQ(8x}}{iwܱ;0ەoT4uhYBɆ,wut&LAg-s*6O}gkqb>)S_MoBXG$kcA_ꫵ(ߴUglmu8ak;PtHYhSHϋqW-: h{N@ zA5n_}̒Ư$ѼQBʩ>uKԦKiVhxPpS@5^͛kjKt4{Lg+>u['Qx^XVI+P|wzyT_JVeXL,s'j [D1H" +œinz?Ez )np1#N޿ +[iۋك"n*0N:ugvӷzg˥`[-շ2)KGݐyfn'O45#l +G[wlqoؽ7mnq3*6&g=X F|;?- /$yŸ,ml*~C'{*6W3F"'zKHpU|dgFUæ!6!h +L8 +u3^? \Ri2G R|.VxGQ{jV3X,v2:J7 }̭㧺ufo^,kٰ2 2p:08I9y YN- '֤GLsѴ70OB ? v{P='bN=ۆ@X#[;/yF|*Ŧp5G2.քBSiY7>XkhdK7,7*=pvQZED 8$E5ֻ/gkٯw ʩݸgR^^;wJŔD`"*G>jkiGU[ՑDBc 9m۳RKi-d eȸ%Ns°ӧwC+c#srElCV)JR)JR)JR)JP괥)JR)JR)JR)JR)JR)JR)JR)JRP@1U)JRks:VktwleI=++~Տ?m{|n*0[#?]O*Ҕ*fJR)JR)JR)JR)JR)JR(괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)J\;i&8|jWn!B0Y鑚)JRU)JR)JR*a~-p6fՀϻ[Ҕ)JRIK4 fBpFjSZL?w xR(9^Xqܮʼn%ry@M/DM^M؊C&IiZBռl*Jk7} gtprvymAY"(jzŕ>Qx]Ak@=;${\Uo![Enŕh $O콿]q*/x|Qn~2U +w}\tӪQ#b>U[N+_MWhme<}zyV~ѮZ3+O:˖U9+Zqos}](%@ | +kOMB\\5e\Rq9bww 8 ucs{TMx0r=HΤ&"hݙ$H U +z+kGqk<#w7WBd|E0<ꭟBtId9w^-@B2p}r=~eS O_5||RO&S[b>UX}+goa(WD' +Aϻk-?mc̆n# 3Z,4{Yc<`yd3Y+/Դ. :2FS>*h?a[T3p5}B)CH齘A®VvkS[=*)n i b!,Lk7i[޳$N ^q2?d qQ+|;x*6l3 ֿIy+c;.(asDx7m 㑟:u+ur9%}Rnh`Bl-X $jOCc:ìq fe0#:Z%M$UPIn"#enW޲ZJlˢ3Wkr4vSl$3&# "崍fch p Dju)ei/!3LĒyN2YW q'#jv22s]JR)JR)JR)J괥)JR)JR)JR)JR)JR)JR)JR)J2}oItu;x7:1WRW =AǾik#K`3dI ,A8@1zD.RO1;vyk`*VR>Hy*S{PJ }rSV2JyqǕ%#  }|$(t'--q}j`^YT[Xv;QB9*65dXZ-ny3 Y$$tޣA*y٨}@dxKr~`p*ۈI.N頎5Bd `N|Nk#5R5I=)8-.*MaGs6h3"%s)JR)J($eu .95ZV5ʹs)o-HP5)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JE2*)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JRe%!&]2:ѓ?ZڍbJ㾵6yhG.31Y NVm%|XY#\Em"ocMzל ;Ԗ 8L}TH8#J9^Iuy{T@IPsPk}5IU2ɱw0^X|*{se5c"Jnʲn  YhgqXz ?EZQ<K0,J0 `7`1z]jSũN6\E T=&P9CG²673+(ee Yo˧w7WYU:$ .M*[TH/ da  ?,T> 1fN+M!"\GlXjKh1vzH>{b[^w] cזqyf^8ˎ#>k'kp Gz*o4 &9Z&gr[Ʊҋ0M26ynyYgKt/#*(BWG"ʡ V?Wi7 'vY[h~GA}*宭bwdi;6T>ѸqjQe.!hq<{A* 8ǕN=̨$:kڼbfdGVd8e _"$&a cI{כGgPǠ,>\ +̈BNp "&+Aʾ(괥)JR)JR)JR)JR)JRwl +"200?6Y67@eŜHUa#9R{, jsդVc+[NdsqaBޡ9E9τsgm;K $b4Py38'Q Wh"OR~jUiE|Jv; H@k('&N|=H'5D--5-bL2\}91ΠGdB?e8IF=V}f%x {G-zX]j.8/⽒[{jLGpFǑ~j<|+ DEjDב{38㜊x,-$B͓;e'p9l`:#V]IQ;@EV.[썋XZ27tq7*<U*|e)Z7*C >֡vvOը*\귯yv+|ȥRm՝!cV$ PHLZP=ʩ>ZKܮ!"w!8<\W^%6퍳q,Z1VY5vzN1A{'Y2AA}bkhwp$ax\Tvq>Gt 2qqzYK]M.(FL,(O!|{[ҽ 0"C eh>JZ3XV7r<1prxΰ>m7e.팂VIXL6+)t[jݩ\Fv` W;Ԧ̷7~z&8$R u{n3$:֠\rTYF`2XL^I 4qq7]Gs%asH,v^ Sje##]aFۂNĺ%?&3QȾ\}zn>cvn%c4D7Y +R1[ž{x,VyZ0$]Y\#W]C(VdaڬA+|$JtwH#\9IExL<[MAh{M~nJ:dť]BJԏbu`m?j.mTKgjO6 +Y1aqk -*+0 C]+JD'Rx-ID(Hg4ioù- H*S1zV{@ӭ wi3I`y9'D'Y*Q Vm;EF=AQNy+',kggK +0e]2~Xm*IY.'呢cKϋ,1bEw64v!U8E#-JEٽGe!$fɬ{=R&crN+cC$mB9t$1y<=A9\8<9c`e)HyDP:kB6TW<{j:F˧UUN]JspjGGq +Dx: lP1bqu=Xb p`bCF=ҳ}=uSh-+aVc%~6*z@@;YNz0wkڡSsl yX4d,a.0!מEl΋K;hW}f%`(e9B>l!8Wa-Ys2z RVї1>L6b8#-%r}Ml6"32>n J` AO'&;a[jxKxǃv?ۏ[e^O {-> +Y~8׭Fl"rWQ1uW\GateƆ<״}#9 (%Oz{AQ$V^nr;|r98oꨥ].O{Du;Œ%4bmA$kln-EbϨ),+!#yM2im #5ie4K!(p8ݔxE8u3[)VU8#Rm.x +&6.хLz}|Z}G+l Tt\!^XX$ytI[6q* tR5Ɲov$#g(̠>ViޙÜvFqH4KTx4WuTUV0x,-AF3@|{Q-;G2Ch>%@=zzJH'rm{ͱw0=A8閱FФ1lNq/JE[xlrɰ'ԃ֑YTQ*UhR92R2"f"X=>s6.ўldI{ޘF၁קFҭqraC(=w^Zm{GYx }ƣh3iqiYg=[hve PF3z 2g3(9xkѴWf01]-H#ߎ]='Qx(W+I88m6Fۈ/$$znϐ*eXaB Um!"9ʀzӭch9EEU99cv؋`mv L՟#Yǔ۷2NWU(4 ԂA#_.g3e˃|rI9皙m8ϻʭ*Ѕ^<)%F rHɯAg1hX{Ҕ괥)JR)JR)JR)JR)JRZRgT@W\ TLD?xF6<瑊3yr*% F VBկuKe1`_+w.vk{yنFbsd QX}#5XgSkkK}ɂrƅu;WFQb"2݄ K !9xDܴKFJr2N2Lp =ƫgȱdN:O1‚$gjM>cBp3Q-k[1׆*gyh7jqK6h&@$㧭d Uj&-STC)W +A99VOp23Ά&UD6wLlNyuB3^wYl[oy"Fc*!W̪sڞl89#ҤҭWWR"X[$;,$ύcWTy#ʳBԛLVePuHs3uH шXA&۟ ̎YRE` 9,(HiZ7ֲ=BQKrO#YI#8?Ԥ-L$Z927pqY2/mr1^:uV ȡx=A#T3α wqw1 wYUryTgQYU*A#GQFuNXuRKvxlUH`w Gӵ9vc¨@!:o`rNpSMo9w n׌/J>$Z6ţ1Mxxb{6܌88Q h0 m;QT ʉ$LF(H'wB]re]̧ܯ^u?Me灍E%a;<-d`5*5ܳL'EUb2`rFsH Z)JR괥)JR)JR)JR)JR)JRvau"Id{ܪXgy⬶UV%EaɆ2`p5٦F`n3ZƊ *~ ^7 cc4ۋK\b1eB󞦦 .S[|}6غ;;9p{ǬφvC 1~cׯjlP׽2KL$< E6Ne#7[&We .P08CW1\~I/E0Cõ01@cN|pi w̭'tF=5F[pUZ{[HИR0Kad[3nQ}6T՚Xb,&$1@8ɢCX (p~UihxQHύ*V%V,>xYQuSQk yb$qUv.'9xXI'M8?h%L6ñ nGemI{HH`m-HP{V+pG[ kj]*ȶAU 6'h.tkfj,bCMe;Bcac7$q33/vX)==k!YZ]Z(x#xp+54k,l yȭ[6vmTkwn3 +#+X[~ϽYm'xݴOEǐ[Pg֧n+X"wTQ{@ϗYOgkT@\ɵ7XriK$g`T>yǞ1^3eFpv/DDŽp Fo]!ISy$HIʈA]ʦojBE; vg +rY;@${MH~]ԣDž- %:dDu;.8U3]\C(1Lvgbahܪ$pé\Yb[R;HejmBSD{>$Z-TԎ)똤<㍥se[Y0$Sr&bxǻγ5ww rB[@+ߵUb8a\?Ec5!ln,Ͱ8yD=[p9>eL-Inn}H5֯}>RԴybG-$Owd/5¡aT=c@^PmX$ 8񎵎Й[g-6 V ggRFX(Xc^7'&HZ1PgmWVKBhkcc<#'5wfbT,(>r٫iB8Hwcc\>TOh$[lnw"M $V]ƪKj68,5KD0ڤ)K](4wWq,+&ݦYT P:q[  H; k6DnL 02.x8e/p-VK;r;|!'M7FL+́QQIYWbOQEPH$,ޠ>vVqv#}-IDPp3lƹj+7w74 q?̯8: + +T.I$r5Zjr.#+6G8b1*=ՔZF[ܪyX}2Z}`.$I=I61a;T(]GZZ_ڈY⌳x$m>_M`@L+W-ɰJ_FZ 1HI[aj8;VE +F#ČL{m>Ѝ3̤ztYki唉c@"+m'=k Y%ip{ntWu0KF'#:F宔7zibA^H]ѓ*NGR4LBR2=3ʨtC$!"øTA#ZFx]}wE,PJBˡrL a3]6fIj"ԁTXĪT28<e,#2%ģ{;;c,x2v sѠ$CNJJGeK7=*7IKRn9 +2] +v8i + F(vlp ~e*Mu{:qHj9?MeP.4[{ގT+4r<{g +H8b,[uws33,KrO$yH8"I +y])׉쮞mE D 9犓qq'{I6*G()#U}}Ľ8;9y\VjmoߖfgݜN9zYiXYG tRc[v2 P3n`8\'uݘѬDϼy!nݜgih. lw+ƛVEvYB.s֥['fu 2 %YXte`Azgm-c^̈$idv*Nvf;=TM,.\$qbwbӓzAZ[\5+wec dN8K}KR%] qzE;mp_KIF H2 vH@, _<ó+'pe 8I;V Y;`[~Alԋ: J# %[TB3UP2RA A`#^v:\VK6y|8)H +Ad|o[yAgHǁIWGvJn=Nݷ< qYiWww{(,p} +9>MGLTG:Ԇ*X2Ai p#;L,Z;5bYs#3:wx;zWˡH7HJp}jZ< & +$b >2ub;I<'y'מgdخH_km,HʪY*ھxTYѣpX^XTeg v*vRNB8#αvJV9 NƬʎ#PBԷ>Uaq Xc-@dQ/tgY Jѭlg%"I~y2H۾b>U-[[I'?K3~1bGN:t⭷Э2KH;/WWJtPjؒ $H:B(괥)JR)JR)JR)JR)JR)XPibIbGlDRH\85ϵ2^=vr^̬9T SH8lUMb5WqԪR`7ۗ,2=U^UN5DzO/I9P|*@>YDm d{i#ugvڣT[2IqrRB2Kϐr.%s9BĶ9遑H\--o!PF`Aֲh۔QWR yn%8Hglrp&}gf5~I3"&#]7nǠMI5ZRyKs/li gh~+[;~CvlNxR)J-uqԇW;5͞ cI%`]`6v^&)#+$]899SjMEOc;g*)!FO' dWc5})JⱺnWv >w 1ӁNk:sݔ.!P@$/'ҥC(4 nPX_JWԯ NTYGѵ5lT(%8RrF|*GWuŤ-emA:VB)JR)JR괥)JR)JR)JR)JR)JR,wZ}Lћ "vݥasy0t;3^w_YF%y#eeFuu8'##+gjլ6 Zw`ƶ#F ێ@; dFfn[&ݎQha,O7s%Q +fa9'ϚK{iGɮ$d;]ʊ+I^JMpF^Os$ȁ$-RAn{Is٘+xa;`SBz5eڌ0iE#j"A\N+2@>Smj=Od&DbUN_qX5Crg~e 2:_7o#G.nI%aĎ o< d7^k=7wP&:gjӊnJG;9XA=sq]I{-(ri>`Zi~Q~U JW*c譁l#-:݂Np TVi]w^yt[NQl"&ݛY@7`1Qwscg1lk)9 EƥEwj`D[gTr&#e8gVjVUuZ֫3\ʊY7FN2p#mfx.gi%o`vLj!ILеws,L.!uI0?tW pGLƙzea%Elyk$HR`a15*ɮ_$IvӤQNc9F+cuγ{.wGl*2H Va5x#6m==77ڭ^LiqrdP#!g89ͩjX Z$?h;]uN:X$e+A)BG']JmJ)-Hga#Bw%H m85 +ջ1uM3i6+=[ż_4m.EnF 1V!o O'ֱXח&VY6RI8``ԃ%Ɨ>I}] T 8eQ`AΖ-'h5x7K9,rpr1؟OڥsHΠFG ׌'y-b XQǜYG}ᥑ;C 5K`ծM.> p1SMZ$k#q#FUP@$Q{=5 GEoXd=[9etk?s0<+[  +U^s +mc)hՂK"K*1# ^KW%߻Rm`I9 TUM4xffdbR"=9^q=дծtSM8#r/t("|xIM5L!S"Eq)xJ cWjV;1$d3u ucrK- I)P 8m{ngh6Y eY@bAul4)@괥)JR)JR)JR)JR)JRQ!w u8ta@8#A$[yL2+Bp3HXIt  0pTdtFHW$h@BOA+𶑞j#Kǽ4=7 AH<_ԥKwRx˝NjLR;$m (+`20G[q1I44F!2TH :2O*β6ݸ(PTmC2,c # + U#4aԩ Nª45eJ[0TA8ʧ#*Hb]9Lfс9 <X=-%oP%td36}U'8F[[h`s8&虞[{!]u;FpP3Vgm嵖Fv36B`cR~Gs瘛c,`1ŒzchHcsG B;Wn8'5kGhQViLQ1Xo@E1"ú,ܱ +@rk(8+gQEį"Cdeqw1>uZ6ݥٖ] `qs^vrbI !.Cn$nqqY^m3MTwuxʑނ!<ͬ^8mħ*ĐI9^Z:8W]YoA ydf6 M2At({V1}ͮ; ˟/N*FŬCLz1vT^}^3hAx&X2RV/fw⏻YJpyuY-{rǫQҢp#t$z :דpu}:@ +T0>#^GQg*vhUP ydңf-I7wp ߃tXM*DrQ R6>F#tH;i}HCa9]#ϏSTC+Q$r c'1kv126 W_<Gv|[;ӊwGsۢNIX2\)]Jǐ]LnGCMͷp9=k/!RDda!±z(AD(Fyn'tq@Hcىea89mfJcWW]x}9mܒzձv}#<0$(NB +>emեq-BnI'y1*dr0u@6L]71ʮC#mA=8TRѐ hw0(y8N>^2ZX$ʶo + 8y88>Ǹьd8]qt/#᛻Mrgv05#fҪO~:AbI>|Y=^y w(9dy;I_潾F$HdT #m-H&42=;X#]y :t/ G|AC`2x$zUѬd69J^^hʴ51 |djW C4h{6p9=*ڭ 0n.P[K&e+" U2˃:Qluk,MV$#C\_${Fw^CrE1nei7xO#r}T+ygU1 h8RҮܨ$`xVp05ޞ7,qVJKky$iѺ&6  Y:{:m^4}y.8&C#sݸ]e[z[9t? +{:Eˆ]%匡{ |yYmW[I(f1Ges6H9WΩy6nY UpOÅPq +WqIO(TQR'-u +T,.s!dAa[1'8g֦W=di" #Hᶀ2DpP4{?nwZ0/(2FthvZzK TW#qn  꺌9h q&fW ,ȋ9ɤie{VRbxi*;lN^Gox,MIq@$R/.DD@mdexU7A ԎZރai d|X֤.-,1s"DeU2y̾ͣYwn=+ owJo?rJ%,{w18ԟO[~O`w7Qd + nK?R E{i[}GGݱW]0G@ֲK-݆mhәc9sC&Уo=3ǥFnk.q\'ֽզ[]>gOH|ц$ +91ҫjjL9Hm(YLaԕ=Lޓ<(ʕ s0FZq6f:MFJeK"#)". uV3>gh) IksrvuYM'pVP뚋,ڞwUVw`ϭl`9㯯ZІCiLOB8 GM:Sl%X!LE`9 OUu-SEA-܀2Dqku%;Cv˸DHL sRРk2BE! <(ar:kWQTE-W ; NԮ56Ky7']YTn@X|CdJ<[3pKwOIn)zse>1s! 1aO#>urE\4eFTuG>y:M摣i7!ŵDb9B 8'bZ72FD'z4Tpks>ra3\3]>s[]rEw3\ jR)JR)JR)J괥)JR)JR)JR)JR)JRV>U"2 ,r*J0e F2x5/;tXzc+.ͨ)yuڨbFzԞDrA,W oP#e@/R|ϐUV$.! w01pɬuˆlus.1EwEe!rrO泖1fbfWngkŻ;1ȷl hgݍAǕye!ڴXF% 0 Τ[{B]]OInf c9XyZT<*vm^Fg8LӮ]4W#oNB#ab AsHz\$V);m yȨz.tX+3(y"emܬE(L8@9VVA $h98I5)Dj-\A}د ~ΘokbϔL*ch7g׻֨R));J*`@]/g".ggIU;OQ2q99c.Lֺ֜'Dw* + $c;/g7iP(-+r| #1UcqpKX%rC#0Wr0~fVky7NYq3eIǿƪ];Ѥ@ ea4gj>5W dI=N._Ѝ`Pp^rTt5A-UhFw" \U/6s+ x Xdҽ΋P3swvl'w\g9/_/hahxv ɋ{,c8v+] }TAƱM_q|b4&M>kZUP/ys^Μ;C`[`gjٴٯ +D`U>IE[ym)0p5d:3qY!"ڝ.w6X:y +>P/ +1P3H|wx#nßvGtǿ5v n[C!H,AʬHܱW +;ezsj]iG5ԟy<8bbYXmP9$QL5W-JpIeY ʩE{6 QmhUBp'$ьcd]i2;T(`grO<տ&Csre&FH>f Jm= "ߎնbN37>As"6yԶehP*;SBѸe*|#}{8Z!s2%D |D2}ǭv_}p +mBǺqx潤X]O5;'ًNC11awֲz}ݝこRJR)JR)JR(괥)JR)JR)JR)JR)JR)JҔRҔ)JR)JR)JRP tҔ)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR*V)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR*V)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR+jh"r{|#>J9v=ACXC%o۶0 25[\%k$g* ׭)JR)JRdUWR)JR)JR)JR)JR)T'~۷͸`>z3A,YY3E$i#m$Yd*)JR)JR)JR괥)JR)JR)JR)JR)JR)JR+y\I),pcdrvx{`TJ1.I{/ch0)*'|'ԞOR)JU ` r v4R[\>pQ/N+=Qf@ lq$?IbIt敮wXT'>3p]v +R)JR)JR)JR)JR*dV&NB{<4JGJ!Ԛgďs$œr|}=+1JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JRj}bdba'+M q]\ ,~Gݑƫt?#^Ϭ1M%Ỵ-Uhe@xWG)#v15' z +# N*E^ER x8⽚101?4aNyl\F.[J!f%`:Uf[RcE!P\85ҵ?jEn$o.!Cp"WVpG{ +x]Ehp2NIQf֠{X2 +a*.dTnǖ8QO^򹺎wv rz׎q4*gS8ʠ9˰>5VӪ`:Iy/Zo<[*z .zdyfҔ)JRyAuTMq Z#bI8U]0Yu$~]#yYb zWא۲,]b3ڔ+Gn~&i>h1$LG"JNǤI"]F4zUlہj(sԬоSP LFx Yyh }>j[HX!aԁԊ"Іi&P<@ԉ'CK1d=H3 +B SkQ:b]X9BT# VF)JR)JR(괥)JR)JR)JR)JR)JR)JRPW6} NxJNIa'Et!0 y*6ŝ_X4t^Ic8_ $!UMQ4 +t;w$A66QiGo +H**Z%4vG"8ʨ*-[`ZUKkMث4y9F'Y-,]呆 6\¨ϐ3=y OCU`*AUNAic@>tR]~kf VXe*m29Ϩ и@Ke$ ,k&Svnă$vr5M|%,kf +UdvjMjqMճEhXW`#+g.6Ri4h7p#jngwk  ԍf'/5N;HSй s62x' a2j:wMt")"ܟ.@ n}6rxO+ۮ?ybiKaRye#j'\Lޏ*y_ϾFGA AOi3jdGl8QT`*>qWԻ]VsREY݂I'$*Xn.!#&BfbCEgfU3GWWڥ[I,QyLh@2( m,qr 9Y$!.vfTu3>f$mib1HEe+vZ(%0€ +"1'>s "U&h 20,N7O:Ҭo%ܪir¨nA,qs׊1X45K9ً(R2|׵w0Ȓ7܍卭SGZ=F|R' .tG 73A^)'9ëllfXؔ[d[yg>U1|ĒHdXX,7ǠbSԾB0';ȬfsFϼd'VY$gݴ[1c"mQfRkȼ{b(N^zTˈu COkQpI>ʌ8>YܽͼDX'RI*6z6AǺuh">]wQX+MKhMڤֽOe^rq.4dL4qc㏍O6׃X{;bo^1䎾Ǣ.dbM2\rO'3ϕHӯ']0,KYRI>1፣ڹU.5eEKv.Jm|szqQeѵ6-q[jKmdqY.]jQ,1cp#`G$Ux1=P]El;J0}W>kD(+Q)ۏ9eJ0QV ]PtŹslX !<+cS5yӿ-AIò3c+e&hMiۻf"xW$22qTWTЯ'UmԌe f2?rWL+tH^p|l+u@φ)z#S94cR_g;%i ㎸@43!e;D)!6Fkwo Ь^3TU$ k&_:)JR)@괥)JR)JR)JR)JR)JR)JRa{Qiv$(ArAkgxR4Aٍof'#y$kpɜi:{E{iZA(ebs8m·1n2Xt1,ª`UYr1X٫q **۫!D2l0FxO}r~nwcXaJCPUXVoWSd!n9BwP`}Ք53evbV#<{+U}tTv/O:ni 1o;rdХ4r(ee*FA`=;;(lc@p=OS{ׄ2;mH$zG^W^w&J6vP|ǝ{*VLUjҔbZY 3*\dT1LUj)QWKK( 3qIh_]JVmNk2rghc$"I_GMNjiwpw};_z7:s5["}[;nI;dӜ`)k]C+0bqp*-gm, c9nB(=qQWhUiJR)JR)JR괥)JR)JR)JR)JR)JR)JRyIs'i8,yw}r1=?_T6S[FbfYmRTF)JR B0U$jXC1DY\JN,dg魮R%0QBV>đ4+#+4njxTu³=q *3 .>*EEmT n+<@1 :47q @H +T2GA[ 7 LI>=٩)JR)JR)JR)JR)T'eCJm\ރSpn\E$ p̭rH]diJR)JR)JR)J괥)JR)JR)JR)JR)JR)JR` _jv@Frz.:񹏧Y{#;Pr 8>u4$5o$+T#!A',8Yr*)JR@<)TG4L\F# +VB)JR)JR)JR)JR)T5\oE(m\8#qk k+zRNp;4^ζp%ь0-Fzo"$G`NzdVf)JR)JR)JR괥)JR)JR)JR)JR)JR)JRS1LUiJR)JR)JR)JR)JR)JR)JRbJ*)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR6>e%HgV, R:5+KxKM +@ u/5-P |r*1`v3L4ifsL5ԵImPrN*XⲹYw}?t#\~35#4xGey!܋%*O’¨#wHǘdiֵ95i 0viU5HD3>-1zSpiq5\@7/9p< 8RLj3L5jY.49S/tɞySY[WԢIF[E0<& l<梭0XKrĐSo^9[3QoRNdDc$dZ*g5u[_eHŴ^XJ;OǾuW{dbͰC$` qf ZUCo@Cc"Uy[dǢ<| AU*֯2a6k)f7 +iġy0OEYُOf׺xݢ$- dpA>_k5ԟ6(<3a}R'=G< VK?4'=OA+b1WV\/tɠXKݼ2mz }f"wvgyYutp*#3p5|r 6۩f^wY̙g'Cx 6. ݃0*NqJngqb9KY*ɑge3L4)S5oc mIq0S׾j)J괥)JR)JR)JR)JR)JRan;BA$#Nk Ic+bs>թii~VG>h’>F=IX9"9F<==k zZ-~+0]]aPAcZ[;ZE( 52$mqwdtJX.N[VXJ#BʧviVRUU$FQXm4$d4gVdqǕIS]EU! ۳=+i̶z$f&1w#Ϩ>Kei?{-{ +Qz10nv-k +FIc1+vmSEfK㶲1"Vb p qGU;kg=VG&pcIph#VGO%CEmI8ܬ.NrA5fxS}+dK8v`cGgP͵aI#'n ֡FI%q@U +'}*u "[~ī0hlg uUA|;ȕcJILl+u<7Fan靌{ scZ9: RO\, sZn9o8{fǿnJѸS{7pɈ䉖y⑃n P 8NwٱW$ݲ2?^>5#E)^H8FWU 0|;q=kCѮ̡9VZd&}4hwF;`nVٵͫOc9,PGYgSѥԮ2%n~p4LypG9k`/Դ[kneao,_i.'!bx>UV *4`*f\gG* Omkd,K$RHẀm+!"h7+g1q;" #g2`<^sX${9-A6_C.}|௜s1*6%He1 {8U q[+V#7wsH̟J?pYwWT's 9߀k}^[ĸf37 }5H)*H IHvPH^Zϕ$<&Ĭ؂DvfOVZ͉ڬ$r xAzJv;WTHfY#Β%hB3ݳw$@>}Z-FXc%gP# NrA2}?IҖ[&H+`2G d"u-E\AR~1}JGbRE] l>y#^KQk7.\"nI6 0O&;JUU$h=/fC# A"#D4HXvD.&Ǒ`ޑVܯvʃ5d o! n1t RN:UAydLRhi8UDXGW&,N\Ufѭf!1cmTunr 9[Z@}}Ijq_a! r9r9sz[Kh 90,sNyFm^;6#wpcsϝl412a7"Oqⱃv+8<%ywr(mq6y^C@YL22alq;I9^zפz5SpD&m|<.Xlm",n 0;t: );ͮP_yR,B$Y,y$㩪^èGL JG 0ADJڧ21v` ˚jnG$ 85IT6,~ +AGϖ~nem̠ov%$TmR宕0C7gc6Hr鹻lu" ҡ^hַGJ9*IE\\ qE>f=q?5dZ1M +»&b)%ԜϾk[Z1u ʹieST8Vv~ЧvЭ;J$CI ->g,CނX, 9$qJim $pn`\8ʢ!-'KBD"4<>8V&.,Laa%=|;䍫#odWb {Ō7y'# c< qVM)yZ.d 0I]{Dm YYFNC/`ݑsflHxcA`A}ki6=]6v/\mLXGhBq$n :dž'>x<漬tpv+<XlecڼX`c2+Sy-g&W%JFSXc#{-X>qPHpH;\`cT="͌,Wigv;w9cToԶݘpeC#Fp(7a=6⽗)pK ڬ@cw[^ȲKfTe,kJp8>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 70/Tabs/S/Type/Page>> endobj 216 0 obj <>stream +HW]+-n0}g ] kdRUc%`QKSzywz۷o}ˏ?||o'ry]O'|/úpˠ9ni:p[~9)E/?k< ,18,Sxs=lʧ;ޛ_=L٘a!PvKQA,nmM[Xm#Ufi8ug\V3ji&L+rhޭ͖C]Q¤eKoJb,*BDk55-~g.f*'l_#&/2L1D QcByNkiyruӑz];~栙v΀fѴ?ey^@?Y/:zXqj <^ijԎ~e$1ĭy M܆Pk:r-y$~͐pKO;{:罰Rf[=t>2 n#N9Qd0sCV献)M!{9-񫈠Y)cCNX֠|*%rFlL6eACո J>큲Ӑ }M7T~9 K`f.nfÅt!q+|M\[(Z| (My(G(UL[~3XÀ|a|qu j +r2{V>nw ӆU8`cݫZa(Mì\䷜h #ے6QORkZD2ʰ&F +{J9Pi<#֍T;ځ3#*ů]dKFyv YOj/G/wp_2o**[y(D 9f.ڷpg2v,:OQ&~-ߪVH_wr;* p`_7]x+Ӟnz2ME8Op i0 \s( wk-2l$m".׬u5d5IQ=* ΑJBӲna[fB{R~'썫<+mH6HX˷ZS_c ]Vx7FeHȩ"ёe)-y8,.frôتyoPW$}Ra:IF#I$jwܒDp͋\MitClCHhl6mvcwYMT{J=e/ߧQ(!3W=$+Ѣf@sbQg>xB|\>Iln P37ep[ `H.psJqq.c _i8R`l]h$a3O Fkᘦ.sZi!Eu=DSF"8\ΗP92!ٙT7-JL6ɖMLO'As:ߜu ی+x4@17We +yrA& ,cymえ# dV M=k':B7nGeܱB?XZ>8-X9VҲ[.O@z2½?GX۴%&V2rwz +%9Wè>ñn;6'k;:@x `ف%2Y7Yw]6#BҒ_F{;Öa +$ւb_| FU[Ks^Bꙹi깡0PLS&W01:hg8\;|Yjw9! +wFSUO<::@XǠ:)$t2\:L)yV c`bhdc&3dxqMOLX5$27ͣ #)WgjiB%AP8B+^VRDv}ohmj%XڛbibwxS5ms%5 +[-֝z 4xS~Y,Me֪8A]{~F-,acqmj=2 0EcP>_3i["0 +|tNBD@8#Kf=1ٍ!ڹܛB2ؖvpT/!V7 +!Dځv흮p[΍9 h l+=ih#   Q Q4\:P^ě,>y~j'ҳJ!OW}&Ĥ&Pa.}%=1x;1P5Cx jFl顽:^.:i/LK)w +c"D81nDˢGO۸2VpR^ZkU", p(pa@^h}ӥB0 /ü QxAwv'u;ar0IXp~|_z U!džVv*{kSD谲, t2p C?g}i`Ot􎴰{+ -.2;ŨϿO, ̪7oh\&VY +UE@UHh8dYgZ2;*U[e?)q<={,"-$D}›jy^Wj y,NFK4=E?/yɷb3>1p1i (ʩ~ +Hӏ W;TrR;P-("0AH6XK0aB&.F +BU4+m +ak'HInաd :|+YZ9 V͸.BNG:|uEe)A[ cg6Z 'N9βS3xΗ m#È$Cf8||V +@aYeMj9cJf}uI46f*w9ȾLGrW}=;Wbq_2Wy/'GcYnfqB;;)ıD%3[3mBmY DoҫdaJI&@?PUz`U/=g4'3oQ@8 Nx%Á@ _Z_zz봳C3qSH6Yfiwɂr|N\wAw@:āl +P$9b#cE&bTK& & HvdKjx Q_~ss_ "Y1=LFlN}Al[7ft֔;~?F WbS l9%׺dC5] ,{SG{xY(QwU#'(#S&4W/ΰ*:u*VVGUEpkcWy%M1Yn.kA+i A26Bw8ҵ1]NlrUD|^^1P}LPOHGNU|s&m; *hXe$Ѣ,MAI)O 8:Aa_ؙ|WTݻFdJ~1!˪VD}ft2=WqS գnKNJF񍟢p(>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  +W!1AQ"a2qB#CRST$%3DUb4Es +&'()*56789:FGHrIJVWXYZcdefghijtuvwxyz?+*:NGSIţmeVXY^pdt,S07ӤΧ-J1Gh028%m +F Ȼʤ&v70[-l~ri}ros8JìከR^POIq1}&r7U#_)녙^})}Du ]:3٘ $fa\QI UֺO@'u|BbwBJ0e:#GGIq:xjXAkҨLƫ,f[) +jf:'p{uJDDDDDDDL>+h6NG0uUKg[ uS7"[ִͫZ˽s4 E+_/::5nJG] Έj\0Kד!/ ^ +UPY`u'<975lU(UwoB ؞y +:8ڰGi7+JP]NY޼lz'H>.#ƭф-[|E;1Fϟ/.OnUV ;H3&Uq\z1 #ddaXt7,&k%#ǯS ̼gPRP"9-tӷyL:r;dER딫Po[ߡٞ9]O6*YGy 7( vwG_IvVg.ȼRߥ2;P]mv;܏~7Wf+*,J$1btH:ׯm0s_ceac[vyf.l^VsV\Zj ԉʠosi{9}v5etз~U׮ye)MOe:91݈WVNpA䙸?r-&=6U`l.t~Grg_}ǾQcce](+]I7FV^Vezk-3NPS}$mq V7[ N:~/q>N'53ٜ}F/(r1ZBY⊀r\>@w>C"[ce8duti8}^9H@&s|v[KVwA3w Wf{-^FJuBC{rTSj`.JAt :z)=̳c-y!a MlP7287`%VǤ*& 3PR5k +S #ZQqUu;5aۦ^x\%xv®ԭ` @=)#y5kXm9z=4Fe+e[ylQRRud^ʭ=3&0 IZm cq3񃆶/y@v*ʼ{^]wKHyr /]MNxn_YJ/jut$wãYk)'=;!3ꮡcT؎*t IkpeK],zEL^bt L_Ц8«[h0h{-Q_jɠuߜڹH1)95\z{õd3;Ӵ-f?֊Ƶʓk_ij G9GcFcZメܺx[59@@ȪRuПM͐ {УLArBmk{M0UVC;:{uu Ml|ok|L$0>h쪹js(S̛^R6#w/ê߈bjzԖ]^a}DXni>\h([V;f*@O4+3p}Ӑ"R)AU~X\"* kakHqW M6( +R=InXwVE6Xs"NӦu1_qG +nNtݗZ! *eFFz #Q$s#˫KLg?*9CtS߷56񚣷Yv1 n  w&2xMݒl o]m,Fd[ Ꮔ]kScAŶs+R%=;ug{#u狎k*)ĩ,,XZ+&:ODDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@%b"""""""""""""""""""Gp-N̤5>Gv<}/Y%7qCn65ke Dٜ5.7l2UvN'J9mcǰT}6kމԖR@'C˩`p^/]o&ӒfV;P ;]?Y#Tgm7-K?X=zDt<K+O%~HNlQ"GКl] +FUכRV"G%29ĪΗI"Y7EZȇjU?UbCs߃wdR,{J-kWCZ$fODDDDDDDDDDDDD@@{1$M&;<\L*TI, N^beKrR +3'DwDCR5i]^섭J1Rk.#G`:Kx`юJ2,"lsK|+UmEr-Rm:Wr 5Sn9*1?g_VIIX{.6,56O_YDuftCc}nbV""$OvG6?5,7p^⚯aЪՌ|-8,f Uo(֘`c2jD&]+gRz(=b""% GG]O#>Uf>(fnFk6F]=[J[7!ä~Vr]F^ |ia]qw/57N^}| hM""""""'2E kr~B1GGz=}hBu)=D`{Jģ/8#kC#8. -Al>-9 /3fdo柳BSꕀ\JMLqa-\",-hm5>d%?!LTF`]^?)oǷV @N喽u)plU:] zeq\l#k ǔwm($iK.=){Z9\~m~針NzÀNԃemê뫽8F^pkО5j%knf;:-z(zޥL;egrCsl`};~.@zMZ[V) >`_W^Bc_֜-g +z;eKıMu_p @zog]؝ >«ʐGdoOC|DDK.^mIV#?9{:ff2 Y13/4pZw;teYB`k+Ns{iHrGX8:ӣz4OECf^}꥛&^>.>>3վnRGՈLK +rLt[M⼅blՅD~ébql,lk2PX[uȖ1Qw8O1ں ʪHmB:O{[ѫ~Tt#Fbq좼~]%\RT 胾\x^;6􃺇])+y_NZ/)cBQ,⸼7-T/>+U հF6kIho8Wd{-'_Ǵ ä5N`dR/˔~>6ALlJ9J ]v 9¯n"2rO8JjrYz_\W|$ u9;S./M ڪn뮷uԳ cvoP28-YtaO1p9 +Xr#h+AejWss|*s2V` z """^~^<{r^:O}or}G0⢌L[;u + +s9 +Nʉ=D| iVjsuEsw̃!1^>=᭼G#Uo::d׿>LgF6??6N]L>%Lh!樨n+ F9+tA5Z\|k0p:cwe$ua6Ff621ܯ# zzɑ[\G|w0i +T [bc>A;P%y@~[eEЁUf$(^ssa2[-Kf^Sn"xECy-j;|V#Q݁MMO~W-&֢ʼRu +B6cxT-V|G;:+d*9lV:&@2Jk^E_趺lty|2ܛ e<.Q*YWG w+ԭ ȷ'"ByEH}$ g`]Y +jAo+^*70l' +xxHHC_122pr/ UI c}5=yxjzyT,r pq2qh!@峑t4޷{xq}jj z6#?./jǭ<%@VU31[.EʺYP<%a`G+?ԪKQ~Qu%Y*G:>𜠇Mb +]maXff)^m6F+K*&gb'-@  +iwzie.#vB-cVU;sFtwJLEޅP 'pd;֦@zΝڼ m&o|L2Yr:_k=;L!_ӓᡶZRL]J{K@6 'ZsnB dz&ZjPӆ~#/1G.͟{A*R"ƯU^JR5U%]'+G)ZM5xE@P0:uWf}o5DdX]3n|*?¯vν;*žS<%"duHZQWԐƤ֨5?3VI?!5Oj~cu9YNnQm+?qv*!7#REz' H~%084T{\5s0ֹlo&;T*c<䞶|S "[#H{rv9~!X,EC#׬K s>|՞0;̾ p@ .oפn@`4zשmfur-ЯF=}R3 jW nS nSq .e!i$ǔ*aͰ c>&!uGfIb_gI/gen-T"Z +چf|;cTS3 6šT|D/M rr+Xו4<SZԊ@P􈈈E}l㛃^uڥ[ =~bx?+ʧ/վäDDOvRǠ +;H +>['s"+*\Š5Tnz9ONohYM Gv8~=+RTATkО0xVR -hlt뾓ӆpV5Xo'$$+ʨvɲFj{|)72)6mv߮mwYQ9yаƯiQsQ["^ĀH]]"2*-@#2 +B]"pҗt@^w"u yOa\,[V<6 +#g1Ec_|ťiU@~\Vv4zyzJ%b'^R嘅Q"EtsZiK-}(U {pMWpmm5SfQ8w%c ž`(ev;RT(DP;3oWג!jJ鵬(]t+ rOALOomz09tbDyyȚ{X"IvMgTRz͕O0޵"³2<uG*.g_ ֊cF$xffM/]VI?l\3UP=@gj*<;Ae>I0~S1G217dRjK5O9퍎%5""@@} so] >'e@ +4dd&-meJX@̇_j%5hU":s:הEK*~EmQԁ5܎ v7 *]hrn:5l$9yYPdv"*;}}ׁQ~=V!<Vd89G*]A`{8~ )4C1vMXQtO7;'6+'oWג/aZ(; +OMrNiVmbX2菑 Oh V_(9R#ք.gc&W ᦵ, eͷs͡.3'#DtZ]yk]_ ʼnn{@̚4pV t4{@g7Yv-UcQ}ʁf.WgߺmQL`z&+ZDDDDZԳvKx\gJV[e/ Ǝҁ׿icc-iR *"@@OX~+Q%9Е%I#;YȠl l*AA5<0v?+T 9G^S&Yi`ɮmo"8 6[R1ő].˰RN5ģcۖVbPvtք̈8UbF@beNU =fMU($vzz&'ؗO{I \ +)]zȜ~_b`p +F4pT1r 31䳷d:""%Ixs3QRoM W}t47fװlfE t@W0#{ zljV""""'^"fپV` ]1-¯ҴUDPX6ĝdDDDDDDD<Ȯ7ԁ׬ F`]<+kkeW(H 2}B5}ĩSv[O{_xx"Nfe"IyUIËҷlDrPJDDDDDDDDDDDDDDDDDDDDDDDD@,աzPI,zz~ɭ{1?YzlE*PU=k~?!3 +z} +{}Fl"W6^b4[CMHP֨P$}zx.X^ա VE:tf-}&ĺ*^s߮OyuA:vB˾66>sZbdX @ AA-8w/9U%t'FuR[bf>z?h?<kq0_;K? +ثplU~yrq~%s<'C~]zc +df^̇F.IY`&jW(ԞPX'dg©g}A:7M.:[jQW#$I$t=5r[M=yv\tV 5ij$0N],t +bWvuWL{rCfw - k^bh?ϧBYjȶ:tK12s֣FY7]`A}˫y+]llc~߷(w߫ X"ePI'bq3 +G5T-ӿ3BPz|^NMڗȪ F|=a̷ +ծvbֱvu>@koܼf_&[8 }?W1Qflnl{ֿߧ#i듗Nbֻ*:A?n_S)s)j5~e 6#xǸ_ +̵@Uq<:yil z{!N<~gDsJ[UìPIC_oIx`|f_E0Wp7h|Ofp\wIJ**nΌa2#>O dPҐuD øyB\7ZVG( >3{U yKd[RwCA$8ySVE~d?ڕ 9lnDpGȻ*zqcBoضōʠN3g3i6TbUXkJO]ki*Z,mmXr@rNʒPЀG^ _ _*0CR;HN/8ڟdjVV a۠פ*\A{ C'vpLO5/Yjֽxa~-k~#plzX +k%@טsp]XwX\ǡl'&(5eC mQ#C~]T᫁eͯ嶽ק9:.`Gu4f=vYRb(?4.RSJ @#L;nMc[UC=<רV=Ũ]^~G{,%b}\EJ0W2Ecx6VFB\29 Wb|Dw$""""""""""""""""""""""" x JcIס*6@KM\G3[ZW"j'9z]&DZj]ԉ_e˭P:YnXtU <s[}pO%ܖ*Iv9 ej~eǦ`OYYcڪ?/1z=gƬ.* *9#xUXޭȵ,Q`A$;H♸ *YPPA,ڐ;ߔb""""'OkaNI5eeg>@W^rֻ-zi@&8tc)tPP.'ΓS.٘$m΁=6zy̅@@ߩDDDDDDDDDDDDDDDDDDDDDDD@3fQm%lw܎zæ5GF8VQv@{1=#R1B?Y30"~.wd݉CYE& `1lYF*rTc$ 0Ł ʲƹaXT-Y%QKBܼ0bG"jP@|$ͦ"""""k0 1 [W؝zu؜!Hʴ]b)JO Q[iym :R"""""Yr[ 0A#"٪KVe mc{=u^Mv@o1ˀ ƸA줨Rs2"""""""""""""""""""""""""1xqLkqV%t^c=L@@ K"""""""""""""""""""""""""""""""""""""" b kg|R/OP`ce!ϴ+9#ӊyW{nNn~^~}bqjj9NT+tafŷQNMxır.kCx\Z1]_\0יH ҝ \^s(bT-.L9yuZt:&z1+-V6#]qZbO@w<33-$"I +tNEB{1.tJ˷ U]nv>HR֦fDDD!A'ڭ[]e` F_0i]vWUZ9$\;3&=U^3b;( nCȈJ*kP t${d y\_Cyif\LN%S-u3vQ'eR-ÖpA*v>·u2uK1O`Rb @ ˢ""OzݍU3= +{ӘG#[[S0/DljkmP*u{mzv'ʲ[~S]ea҈,k<3?聳Z3?c巍[*4shTt>o ]Ď(WjH&~G. OnabFGcgq,xҲȁ8;7ndݖVSk᥮ r + Vn'%ޛHix^(@g{쎾2>."NRH]u~q\{ZTuƥl*ٺ'Op|+NG kPNa1NVfMkܢ>u$3P+-&oYA'6.Uz#3/_ $1Chk-+O*M~Ǔd@RIߗI5]:!28xv-y(FFݹ<$xFg-جkP>8Ƴ+9Wߙ9~qu^^gaZ Uo FӧM8\[?ՀͪY8!m +T:kuef{&2}-<2<[vO+i_)=$9v).:@yΩ=#~ ^oUARv +k#_9갭U(29) +u<Q]#aAV]nmu]ś,]:܄ ;̀s8g W[9ҳ\ ;m:|y^ pH)vA$ס]O̬FUBo]A:;03_YJ +?u2x%YW#zo=&5 ++הK{Ӵ}Ŭ1y|>J7(y! kGɣ[+JV[ ? +lǾnmwA-66sCimc5fdpeê/kU+ ?ݎ•u`\ڙf9uȯH7ipی,5Q(b6dv>S+ȧWZCՎT-]Ϝȫ^BWk0 +I{ɘ^SW%+]քkIipOY2+"嵂 \#8yoQvō%HXs' =vrm{=,jENMP70 s/)&-W^.Vcz5R+rIf=Ofƻ$ȩjg "'@Nϩ?],27!do=']īcs>*.0@}do _- +X@k:w=P6F}dٛhK:ʅASjlwuliQ~&G|0pǘc?QI6`No)Pé2VE^e=I{}4dוhcd+^e z'yfAb-nk:v;I$)r0.I9wL4ehk Q:n2xm9k^<5 `5ĝr7Glr6E8=<{=m vQE^xh+FNqfè<ݺJoZ+lcXrP7۔tzsã kJeuaK:̞wzV +BYy~"W;;I{ [ë5vUZE=nf7[@6%jԇjʼ$KksݟyDVPCmk>^SҮ n>f^Zd|Y(Ao@֤Nw < +MvY ~u A$tf_ Ⱥǯ eQf +Հc[69+Pnf; g`k`t2f8M' ᣡVןHO]t`6utf_nRsg/U<6tyu6=a^cu%@NAA&~~z }rONUU_ݧ7Ta˰ON}f%6M@\|#}"=$)+ꚽ"j} +Mö^: V4I15ܼJ0db=z2Iϔ+J;zX*;r&lzO{sCU{oC3$uYeJ`}zy̨pZt:u$T2IL|~7+Z (HaL["aV0mS%1U%FCzٞ8Y-z$FVSG#F{VZELʏ]yLEP@kꕈBN h`oRTHH[R"k{l`Y'8sO8(0d*A*wz\#Â6Eؕ>nJ=f@;H״gVj~+ SdDD\Yu< y)n=72e9C~ˢ"&┶iA@<ܝQUC~eU Y֥Ng#:DK|E.ou1t]n"ֈH[aH$hˈke8ֽ^F.X1]=zH8Fnj:ї]mi?8>8*f< ++,$;jEgq\'uveV̫Ѽ&dbs*Ű>J99Whw;L5ghʻ,VAၿ +)bNgeq.&m5 +P}NL;q+0P9sXʈ6tylKFy "^@QZm:ȕIK TݫB~3/'>HM 3^ko$elZ$<μ!(&u9y? rԕ IV3+*`cXhV7 kONdf}x +[쀙$fG&/?/R{#]hK/d5;׋UKiVakRzr[GLN!f.aNRǔV)P@K):>e# [.Yt*WqYĒ@1\xgRu Q_.{|~VE,rՆNW^e^R{D{p."W E;󒫝f"%>[`U.RbZ]k{l: +#70=hL#'sRAY[6v=A}jxa#nتܬ,˽Aьi}ּ'wu/Z +Ed `O-dnzVyumlhfGG6 +󙟇,aUԌvS͡?.Z|e֖kN}.]6|Ŧˬ:Zљ~6 Wcŝ5KscQY ׶<|hSݬZN˲<}) o\_d 1lU- dt,4{^|7]&:^ +@$zNa>n o\,WT(Q$|,4DzK'*'Q(5S K`,7Ԏm"G[[_ZCm'0rwz׼湈V◡T jʤ; 5z=SȻū|;lWk@}{8s"SĮ`9-ψ|Z'.b̬ŻKtWBB&?͟]dd-32 TӠ6hDp5Ȯk_b)O,͢=f")p\82.)Qkqr|"hmԍ<įqCbxtf=.&LPQ0xm۱w:2Ny<1H#AI75=[$)!Խ2PeY$de*=BӿfILNk|=Z5R^'&?2ss+ֺW7~ňq&s)CpX 7o} l2h˸o8[W{bf] +׭Z$}z܆|>0"^O s_#ӯy\ +2}~fr68r)EK#GpgLWz벺*Yyap<XU|܊[6H#`L>+%+ !O71IMs3&=p7[wG+T j6uݘFl?pxKUvz$s[2#Y}OU]  i !?d$U{@56N&U6փ Z#:$k`ЕdSxŹ|cBi %I*!M0$]4ue[#2xMܼQy|gO˷׽< +Νu߬}mSnJd:g:^P<`= ſ*.r@FU;}Н(뒿ڶ DR^p;۶m/$eםS{bo n~e =G0q}sfTta:#Z>s5x=y_eojk<`t{WLﴥ* ؅!ֺ0:]k.U[L*}kR5][MZk-kB(m Xpjq,j:ÇJT {vFe +r5U)y-~Q(fĹUPA:\'/@4P+h)Y;mé^rZRjX$9sao׿{޵徳+'3;ЮF]W g^#q~{3WJ'"sW᧯5Vv>kkFʡAG +ECg(N~s>""""$V?g VF*Z40p%ÐZ|A]d lrt.|=o﹬]{ʕkU*Ȅ =RGٞ^%Vm53-ӲcRb""""&OVl(zMwѕwۜoAfgW.\S¨P?A+p`ˢ""'MM}N )RGqGP Q1pOWˣܚ]k>d;GSp^ODz7ī1<d\b2rH$t?d\>-u1T,:&tߟnlM{Pruk6k9,ˉjXoAQK""""""""!}~²-[4AkgeY)]Cz:eJ}KngϷƴX\ lR\+]]/"d04H8Z@4rV$'mx6 ;w ͯ>]솺u9/by\U;IߙN0HQVbz}BYW½-gcߦ]=;3·8KQPOѱ9C`Ck3^k(=|~08W%/FeuT$` ?xdO,+k-`j-y~_2q3êf:葾~b]ON6G0#`iRr$*0ϜF7UeZ$0Ksd}g8mȺ{_ݺJgрP=z|qܟ<,R׎9_9R@?l^70ȯM6l>_>4O Dz]NwW`ml;/g=QE2jbE%wsdw\^ +6I =I37%[VAoș ~wk3i.q:T JlҹOe'wxL\CrG]uJj iMI)ƛ2zrs0- +̣蟈k7=lhcߡgυ37 8w3 |}YǨG>/r*7+ 6|g'df`P/=WNTԬO&L>[vlDY9/msFv=1Y7tQiZqYij޷(%ORGAoϷY tYJi^QKnRR@gI+X'Ó9n݀.x{Fk]e[n5UZ_6^u.'lXaɶ-Z|lt3)):l3Ԯ%}ɮ,$ / >1TђiZ>v/!)?O3 +]/)Mu߮5<̎kAFI$';#6TX9AoQ[:. ^gD:c)=Uq.4l^v;(Jvp^~.]?MqVj&5 9:m6g^$9x}l,^]5B@꣗[ަ 7_&=eg4s\Gk }.=M&-<6#rGkK5;y_瘾qj8zl|5 +K傅 111Ǯ_*A}-|quJSG1ccR ӯ_YؕjwmB+[nFb`{y#eȶxQEuzPBĞnnց) I3xNǽ[rPoZܜu,GGGr/gxh?-??qO3 KeYs56YM֭c^Åq +8maUI)VƴGh˴d[:pwtןC\JuG*32""""""" (hc=pyNlO'URs`AҞRJϦMBfXf + '@w{__QNC.?+nU }#zL<|Nb7O=zOs5d9d'S&*TU4NWC4%dx'^?6RB`@^q99\̛0=qllLkVЀzK<5mh4m߰= hGqݏ]0e*?)Us(U7mv,W n-p{5\ܔA +m]f:ĨKwMF^aA#箒;<&\&x +|1o_dNk_E-m&;^b @)$OYqJ[l{zث flDDDDMo | eF1@K1O~ooĭFM[ +o ;"=#+N*s[b +׷AaͳJIb_]9(6S1-zy)~Fu ]U=ۭ}@=<į]O +į"]PWSH'=I[zTT;<Ϡs<Fw9ߊ"1g&3c;WfJ+)!'`.wI9PQvN7rrs~^ܽ<Ȯ:) v3""""'5b{]QGvf +:uC) {A` נ=D`I<2^{T]lGHQ׷^m-Cl@~XKjA}興O* #V*] *F!IQ҈u21n}=9py^ŕ 6:LFP|Π(\=x7-Wf%m4]5nyvXA:;2?N/AT[,zث }'7k4T@K[=O1x.+k)K~FF%A >r9Spn\V^M5፷'C_N6<( +KB\)d#6mY6YY\gZ;鱽?i2wмΔX֔˼n7o ێS:~^QRqGSz̥"yU?nkU3UNYv:L["ȬUz rԣhllh}Un)!vz LkV8˳ʱ3V) +I]O\n=a@2-G *DԳMk+E!"c ]jzԧaQJA}xa|gP*+': 7^fzY`ZWehVBYv}g,x LeXp[^F[fEq̾b >ͯ4U}1pjܬJ'aYn?⋍||vbXVN:3,{ORRAtmNRX FqFb=Ơ]6W v >r\tɳ벺ZrQ zv4̶Z))V#@u5؉cJYI'@B +x97-U>1-XGGg&܍mucKc|\ OElyz~!=x8TUs>iO)v@?s0(k+<*+uhȾ/ƛק2?:ARYTvPԁ + v"A{hNBa-~)6S`|~ǯ`46td +⣈dPJm BGecVJ_qÛ7Yuz=ûڕrUxwKb#^.mUSG)`qZ.`^èjt=t~_xf^F:yu?R;n_m}ElL[mIgR`%Rd*W[3)noAy:~`O\h6AǠ^+`A*^nKdWR]SGUe#R6$Vp1k (^d[}@]Vpֿ ے[9<ΥA7_w+W*t r0PQ܎2*hӎ&QY v!yL^9uY}TdumӐ4v=:|珱S/`SvM< 9ՃuɌ[fkJ6f&?U8ʙt$$w#az*jP%sa@wY1J +^RS[ol*A3¿h{*WaneC?So:3Xܖ--_|{jbqg+WXWg32b|Oo{. Kutd]Cն(B̤0e,tw s?ڦb {oH^#bq,;>$L\R6ᖴczNq $ШWz( +lW|s}fMd1k{X1*m6I  (q>jVܓ<ҳ<%kRX;X!2b""lMwd{0c mw*l9(저Iq<'qEteU sl(R)?9&N%=EmzeaU^Sцzg}UѮchacCty z-%"^Wvp, v +w32VdI +o`mz{+^Jk/jh[$̏i1xW8Vv86*M1]v>1sVLTeyxԐzr`z+d>Axy6wZYkx*+꜌d+r5;=ΐؖg;݉f;?2u698@kh=e o\/"sNZrWᒬI +Vt^t$=^gӋmO/qאI, q󱐿eF-[>9%>̞&R_EuܤIokbttk<۸W|dWT[*'MyHSc(T|CfQ_G>Zm^VZʄ]`^>Wynk^r A":T ;Czq1Zڰ23pCzOqN(®VU(A'#}dx.Ww53b"HR7:;붷!20fkFR%)uckgSt2qĮJmFVeu^Nc qNvP|Jn]*)dC7$px eXu?y|ONdִzdeW6̯Fytad^>Ua,W:ky|^}f_~%=H.#-X<^dko]eG 2}&Bxu /CU8^Bm(T P&b6n_̷eV3S!0 XW=-`lM ȬP[[#GdOWv] lvVezڳ D|GyzȡUyAմ÷NiAZahd,4l,ywS5@\7 TƦ6WkvA$ζ!FUy>;*=uxg c_0#@7Cӻ%~a3rxCY[6oG+z ` CpϪSR܏Br!c` 7˞5Yy?4Ϥ 2*SekeR[{ v kIq,<#1T%,԰`Nzup&#tSZs@d~.^U*ŠEkSW: κkIvN6m9c?)TfƎƷ78.r@3ˠ|;АK_5'u6(~G*zV^Ns3R +АJP:'G@3yIv`gVVESwX0>L Y[]69A ]LȈ<VXsH] hNzDDk@~Yek(,t6@ogfja"K:٘gɞQ[ÙH*H*|>Fg+x>-Տll#z%I:i:D`ݥpGYX~:dKc~YbYmbd$*z0o VŹ9ٺ$ԐWqdʫvGIm/P7'QBcdkDv-F\v#൚ݱK? #^Geut7^.u^Ԡn:rʺb:s-hp> ?.C +IVP3οiY xIoNB 7̻ H. hNǡsj87"ʏ4Xi?d몜{^ơnjΫtu?K+5<8q$WPĠw1G__SV5=fv)EJFxQXkU(C.@'Zd7Riqujr9;^;=w#2VGdtaFԁ: `{KŭKVn̦:'lLLLdjO)P. +@':#Ɨ#%ljB/ĜyF`:_tЏ5'-։dq =y){B&J{j +@P +X30:#~S}z-RÎJ]X&HB"ת62"@ 6{dɰ#Gވ2q۰8.2Qm +±b +4H;w|dQhǦX֥TY7=8\Fr# 2#%8 Z s;N$1q})AO8 +@m7OU;l) +^seuߡE0# _gNǵEyvPG)*؎"miBP՗,v<:ַ#88 Tkrn<66h 9PI!WLN#} ._q17^1@B*س@>c[b]vU;J|DOvv~%uXVbF"d{Af.~u)޴mqXm= p,EZ2|,$!z9?'7˽o/'Vf.%k~:,(!}[F_m[r-@kAz=*dz8omZSb)PGk@G*yMUA|w̧Snk`uI@S8lFǮd?Nԑ?M=W(bsX`>` "oᙹx>]y4[s3j-j5w;^+EϊYNFR#SneYc;KmLঁwFE rj \u8lH/_̪S&ˢC?!MCz('g]rW&p,ejT]Gcd ɹyNOJֻ z[3[VZ5r*`dt=:;0v-efUe(M˥A_!̎6-TmޤeI9(]ʫB#e@v,%M{*@?|[qn=8W-XV+r-Ud"0,:}}uS/?/ cߏ ԥFc1'vJ{?S_%ZlOl@e~Q ><1spE |QTy4Q䉚eWj<}l٫]38:WézCǿI(+6˒Ng^,[2-Uk*lD7+t>YzVy]zL,.} bq\{rV>ůh#6zm mx`E}[CfdO,kkm`Kn}oy5]:}yv﹕}ˎ*t O18_%um۝JzDw;e2MJsxK:ԏ#]FG[2A:ctDDDDDDDDDD@"}ٚ#%-d/˺ӛD[Oz-2 C z/7w/ů=h 8bODDDfvc+$ts vt&F>C`h>zL?쟾mˡ^O grlIH#sYWlwʰMrꪨ=z3q>]{B.c*9E&"$] P6uY[MSmqKa`ޔKwIg.;#!ue#0:'eӇzZln9\o~_1=_#UrYwSuJ ʓ?&d[+dDDDD׽/[Ye4 ,f;UPN+}؜\a asU@Fst~ vrkądU+=f@W'vQ ~7RO-;3F cQE;;>rzkq +q N57Ҷ?lVkbMs`ű<`F iFϞWGz }dfp-S*mG"""""""""""1xYإXO~Dy{)wI3d$Tԝ[ ݐ [Z~Y#/jqѲ,^j +rBNS3 zTWQ<>'=C`SheRTX%CDtm> {, k軐473dwxى>+>c$gGj=}CQ¯,:Џz~S"ApU#q$W98͑,Mwcʵk mG~砓0V +5tn^Q]^./p54^N[W׿ODn5-kaX ]Ew3hƩ,FuJKьUm҆uRO="""""""V(<+z88FOE|~ &J1-e|5OQ3XFxLuMYATZq̼ax@֖@u`|z +66QKTx, inQYl3.?TȰ[0Fruߞb{S^FG \gEɰZ^k-8ڜuZj*9TW[΢Kb+0,Wo»lQrѴSbf0VcӰm58jXufb w9χ"Jp*u^~-`?V}~I-5T>pJGr~os7d>k/e]}LI3KÃ5W`}'}{ 7), ]lq?y\CM[77CZ.f;fH/:]T )xnEzLzak/0q3)ƥlBd {b|OT:pGlkS?-/zuGt.k? 9ξ^*t׋~{UVd؎Q c^,0mWLf<lŷz{ j4~麾v=D Q[S]f'u?jbV@qo$Iqr ֚[÷̷QοІQ+7 +Bh08&Kk\k YRT8W5nnrceQpH}mЍ~}'91phlr)!;]k}dDDDDDDD<3s)DA'I=23b_ *ǨYGKt{Scp`bu7nH'Hm^AWg˭UeTuSKZ+rP(CEb|ZV5]lG.H>FebXط.VB]dDjR@ĨFͰlzꍽz~x&P; L|/rI2l{iGy)#zG?2W0YCG[6=Ma]!(ן.=P"[jTRPGy.{׏ׯNK7ӿN_/9&^eZe ={5SR)*,:d/+ֶ@Е!: 'on9?$D:2u)].M릻I<\+[j$o[VS$Qxe[ +l-Uca~C̞u|{>Mܦv}w2NFY(9Rˊpb^@I3l& rX\(71P 6|7Ekmd2R;F'rrV`tL1ibӔۿ25 N3V[jf+lyTS^f=B܅t˪]›oLS~p⿷ڏCj- ' =z|;:|uօYꕹJ +|l t ]1F~=V6=mY1=OIı(s/~TH?|Oc1d+G~%jt5l뢨Ǣ6c ¸uȱ@ +R~>g#x+k ݝ@HH x/^gzA'tȧy $6L\ v*6T#7.GP{)glm~z׭j4it#IOef]_S̵< GOLYdkb50d9^10`юeu"}& +>}fՇ_}iM]+鍳ىv=}=$N-#&N;K[z/914gìlkcZU('x[M%] *|Cˡ=-|3MEka"O e{^X>)İF}Bˮt'Ch+}NeDDDDDD@#-9A vR7 d\8 IhA,pn tj~k];JDDLN')66@&2%H:K/ @[@ r~# r^14pmtwlcYBd 6fC 9 IJl7L|tRmOA̹2h`2vYToimY<9]VezXQʷNYDHhJn +y! yk) }O$b%T#e`A{5e o*RVSmDoe8^HC]U˾#3}M챲Ie~_]m}2|3٫,l:ʽsvv &lEJAG'<奼l^^W5EDJ7Op]{)]jU@$b""&K±[:-hĞJ |ϣ3)FCzmYR"(k_GóccוzTdbZc]w!I#_I=㦣LY9lzO|u/? \oacAA#=8O'dxWmc;kI;5}gXSkޕwLSHLȬXnzbׇZPүa|ܒgDDDDDDDLv֧ͤY`(ס"`%L&U@Mrɱgk9W!:Ty~.%8JRT)08>.U+ۍi뿜yF&SޙX2z"""$|.Ȱw-Oi'mnW^|VR+br9w-qhkf[-NV +T 0_2_IEմf?O@eRGV+6(ޤ6 >x\,||ZCs7͈F!A'o!yuuR}bgNbSsJ"; :?#pǪHb+tz܅y]Acc`lk9b7Bןnx޾2gHտ)nOu$egNMxU]lgCKrluRJ,}=幙p["*rIWqz,Q9]hl)xkjURCs)V!3""%'By'ʨnuao};Wj\6o[!J+0@'r*.F 7ߧI|DKVXm6uC_*e tS`yQȧ5525{Nf*G`l8๱{]0C>rx sq-$׆tƄLgkd؄ 2Gu`v?\?*?un,,^=g0<<[þָзu>bfprޫG=O̍{B:Q0^ů!,vYCyo=mtUHUo0թ.%eO@];Td'UfұչTmO'A 6'^e85.p<Sƞ;]ؗۚb_Nude AވT kzһX%=7) \j XC`TUPY@޽$+C_C3 áӧgGO;aeyGƨnu;=:Ou>33Ӛ{FvpK,-_bPĖ_$OB([C19F!C.@FwLYW̿F,6F_ J|S-yJ@61#gf+ȘV'l.۪\5vK(dXos{{7ⷎ[S;S!PUPrP0UQIԓ"?~fҟI㭉Z30^POlyXcSE}Pl(f5>Pll{)B-6ec Tꠒ:yQq385V#]WZ+eh!$q؈:BVNH= O^xpUa kH f=HTw?"biiދuuxdZ+=}AIxNq,ǣjŗ)<5wa++ӑW['>s rvB6Y =R#+X^m܅mK~-OˠVx[_8#Pv4GfN5|jjn*F>O|^6rԡWՕ%Yzo_O𱋥YYg!D +ܐ ['Rb7PeMը!~P=>>'70&e]O*WS[mlVj)'`㬉W/?E&iY7N9x/ԓa +4[oC:?(V3UV^páY5=)uK1SG2>;q +x] }]vI'JyNɷ+pv >YTIӼV񘋜2/3OIpr S\U]U"SԒ[g# 15?n=VK!];a{Frmw=Y MeR0mtA']=%QZnMtSc%9N{EkŽi7eD^}ǻ<]Q0=}7JG)Q7Mykfq\j3pJ:DĖ~s]rlVNyXX R?.ůz-Oe`aLNecWua8m`B;t3]xe)^΢N*3[UN]b45害KEf22YjGsHP=>RcRzYC`L9yϭFGk޻T/PyLP3wO3u-Yy]J8{u;"rZPR9H`̽5ȇFTւPoOAߋ8_/Kږ+Gl]t(g容\>юM"8 +Ym^S*j^xMX7=x!l? +u޺Li뿊p6dU)RmL^1|iboe ~G #h_%N(~?uGJn墻٘nmsʝThﰙų081KRzlI6:hoՕYOt.ZbXB1 8fx6VA RW'\W鯜~ ð}#*_ Qwp9wzI9-!hq_RܼO so^]__+r1XQL,-ˍ@{p +]4Gzu#3,v0= ʺu +:e; ̜^]\CcumU W S7pE Ws/ԒtO`N.fmuu}Y_( tޏy_Z點(j:s yzO;xNG5=O]ytTy ++(zsӤ/5Hx{%=zA]ň$~]f2'r*mCFOrxuaکFY{K#kt9[f%^mK)mɲYI&V _8RZmTDBPiIV +ּLO[el+kP/⳽o}隆4ӝĬKK+bA RVz+TvCjlS+e:9wvMRO[32σemvX :b4@:bdcޙUxnٹ6̬ +apA=ƿ+'5U39/A'l;yKj!8FQ#UjCGf (m Ӥh>7 V6\7+|k#CWѬP-gzdq!=[ʵO_y2Y7dj +Sj1cؼRV8ʙ3ު,jvz2xw .'U ˰_$9oz ı[}篨SC[28E6ťbTW-mYvwߴ2)a_o^>2_% +Av% knǙt>S2"" 7p6jdFTe%ua;zny +y[?&ey9\洳00TU P̭Z&EUvIdcMukQk-~:ɕLƴ٩8fHG4ZQNC ask|Ӵ`55z9[xu%E|b]tUms]v@op|[ĭށSʩ[s57 1q}3kϻ' [J԰6 '_Fj v7ʼj:WKpZ@Y̫Q`3.R[_b1NkX^PN|}&gN%Ca!_[CЃ)&6g9k &jt  o Iu+l.T\OAע7zpB`η1o/eDDDDDDDDDDDDDDDDDDDDJJT=oisvm)=|lDDbߑ,'2GYF{Cb"ՅNWUWVO~ΎJ.>Kb79VV̤ko9WƻCZs:`)8dq.ճuv:DڻH=éY-v-o`RjWn_=@>e|s ڶ9@ uq@uӮeq,*@KVem +6Gaҧ!LJk@jqs*:[ e?xuk,[m`F4!胲u=Vb#0R@m荏CfY N#V8ސ%6zo[|7gcRZ@5/3hooԗU^G8)g'Wl\ +RO ӟ*'ՁWSU#c"~SVAm1ށXo"@,FA`d`9?C%Sͫ1C^Оzdq\k:5uޙyddq<|eƬ W$lr=:~ecƼν66_.d's)6\mjX:IDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD&E *]V*v(GYDOGU:w!7e^vr'13DDDXd@:4'ًEڳhz`%EJ'['&6{T?;F!lM|ka~D&Fvh,`efVua >Z<_S3Q;ܻ +ߕ7Sj'bj~ṕm7n $=xvbp+%Zn跊OV/y0wxuIP + 0,Qwܛߗ~!r9t9]k/+) dd:wfSA)&&1݈YZBt4w2rn%ƥ^:F*9|7*J2&h4oSyUO"H<빕y)_ڤЀF'Sm77r@, a`@A{L|Z%nMur[﮳Y~8FljԂ­@#KhטyTח/; +AeZzulhz, ym1j©[k.0zw6Nu㽷JծvnR(+,k<8mjkەV@m~Tq>(H#ȩ 0JQXF+lL. /;99Nܶ1e+A^xS]I\z2+[6ɰ7˿L.\+j鎘Y_#ARqx굞lkch$:;b""""""""""""""""""""""""""""""&Q#e%hҨ,=YԿ?C߇.& :2z0DDp8ZJPOB0#áJͅTb'^d(Ohs7cV*bC{z3iWDUv`:wה"""""""""""""""""""""""""""""""""""""" 5nLdϮirk jKio{gw>?LkVBel޽('{S} +[XZTLydg0s3@YywngırAm(fc*Iנ-ǰe6Ebܾ!`'[`.BHP{ l{<+pyVU o@뾀C'9MS!5+ I?zcVܪYIC:y/0eB. 1Vͣ+( >rs6!:S7'6 +KyB[ık6b]-P5jϢCƶfx;lkR-Ew:Ef-b^l[i~mvfv}yIf>}u+.hhF$'ucpl[lD6( +Sl + &ʡʤ +{ߑGc1ZmG* ztB`{UWJsivGOo2j"u^W澰V.9I޴_IL//P:;)X {|'bUuȏgV`/ZrO+wN/(j5?oY_ĶKAu: o[^mr|\-⻭Tb7{S>gBe+2$6\`l3R}/ڎ + lz־sbf7%W#1^`WyjgFȬ5n90ڍw1ޏx[Tբy]QkY.-v)믜-}`m$yS3aDȾf'\9PI.>]+{QZϠ-z2x>#V`HurJ <zsU1xyՐrXQZ,퉏]OkZȊL@GemRXd .lw1_Y Ԫ%}ePl|޳&shс=@^LMD|L- +>o"b/N'_Mx&eVI[mn_eUb%J2О@::ynJลsbtt{Bxq<|pH  @z۴Bp?'*F:3+'Cz-?kxTleP;}`[k$_ h|cZ_Aө0X8)- +O`2f-g+ _7$?9prK+PΙʏQLiE-\jѹiPM);?˪%+MO[<ÕwS`&wUP+Z +Lj|/R~gÏM׼׋Q= ߐm^}7~_$۞f'iw3"e;R#z;Q'IN\7~G0?5ۘ[z$F +8d[*E=&zE{g}3k|+ t*,j"22 -+< H X'zر'RCڌzx~(y*;On,[ZG^Be՟`Gz|2.!}~թlj9up%,erW@ YN(DŽqRUG/_^w$c~,~{+3ePaOU77pGHox'rv|.-o?WUuozLo lMC22]*vnHޭC_~G~7wG Gݺk^~9qvg,TՇ髮u-#&m57Җ|ez TI6/S׬ؽ\.J[*VY^`: O!|G{GnK"GOrvo^sj}ٽYc 6Sg{VLJoM\oSy˴\R냊#13kk q|'YQEdONR]wc^ٖ?!VSVމ:+pӗ8x9խ3'%Y +>!l7d*⭒7QOr^[܊ g|G5⾵ԑ98(,1 +v$nW&Cq(|ٽzcsٛi.T'B]ȟ=a9NӮ)g޼5i2AsYgIoV8vGrrO>RIoMk YgVXy_V.ɱ{UGncZ@hz Hi(a4B 1  ydZ'X52Iގj^Ӊl7w$?k婗Hcc^/c􀟊L,F! <|O}oc{/Mz]]Xh*I߮Lq|ԭ# xP~Pn:-ʆO0S* 6>~FN]n-֪VOt>Cz1Ƶ3X3~pHV-Ё۪e#޲OuȬȪvD]vm9<V ^d|-R޺ ,#%dJ4(g7PIdt}t׫Af9M13IC$l/fuU&2f1 sWaK -Zpq*22rE6*ux{F%3AܕJn=beڝX1)-J$ l0*Tvt5lLleWc/,ϗe㕅Nrl]e >rE#^ՔRF0TVǤPkBϠOW/Җ<I}^ER~Yf-+zP oܢ|4Fq +ܻP򝍀4u.^5"m ?kW p+RV +5g-ӡ88c]eE +O ±is}xQJ[۝CkEVPAM×^/xjv9]n5 v @(5Cp\jD̪)-iXE,Ưu"TQ|(`AO:tOI\;Pç-B]Z ǬHTs"lv~e3QY<mߧʘr6(}m}//IK(%[k:&UiEvp3k6ugS3bqWv^Ď2BhL|9Wo.Ί}lK[ascl^^W5qtהcUHIB}du3x&_+Xdg}{fpL}(5WN~ci@ : 嗅N}fWSccJ +UMN8|3>=4J^!xpa";?K`2 jB]6uԿbyFۊN%6BRcK{sN&qݏ],}:ض֋J~ַ_<1%K̠=bdQ[^U B@QN% Zˎ]9PXr7qnWΰY~=v8֙ӷYñȩ,Pv(mQ,i ~>s + V;<[>yGƷƫ~@~Rp|;6=lŊĮwߦ͘/9a]mo-^&!R"~#]u4VTB)]yunUT%*@>ZJ,59V)Fb$$]|rx~>aSuHAChlyPf)4D*FhnQUR +)̸CgiO7 ڍ˘dž5RsmG1m=yK0׋Z.#}-n-&jAT(3ڊ_ E+w9ص5bP9Ht; |=H 4|&/ jD6}}_.8~>3F*@lA݀Er0Mbu70O yy[pkhJx@tNP}@v%bUZz#ǞryޔOeҨQvN=DD@VHg_|qriڋr #JJb\ꤪ\sׇj8\sdd!lJ.>8p=xċPTmفbP~+]j`?#K Ԣ:)0v%(X(HQ2"QX0;(,ȰVy(L?ÕZZGVfn^cqx }$Xb= ̨_y`)P@$6tHY(V"""""""""&(X؂7-a{Q 8 +qX' }Mk[^Mܿ?qJ([-Oa9 .r/EhK#ꠍrؘ#E%Sة+--+e}[=݉Xa{2OqQR_u.ȨrCrG4:u7&[% e`!Ԑ:oy8\#*p0bX*קi%#"Ҁ,69~j<'aDa|So'0Obv~Sby5^6-{wWccx*] (:'}%??jUFPH a{ ~]3D +QpNה]N-~mqo$^?L#Df$W:!#0$]V+cq;pqp ]t=Lٙk=ڵl[,Gݤ*) 9fogUB]((v gMCx}9ݔ?Cm uܑ~'uZ5h_|:=qbaJY:/8!;V^u:c;rKqڝu8ԝhtW6$R_lMng.Z]t޷mǮl\&.hRpe3'¶ Zp^֏Ϥ9q,uQϵFއqR/ŗ!۬X:b ;>@I> xoBZю.6^ʊ삼̫veacܜp +Eb #ţ=3aU,k|7H{]9t1=^e!oq<1|Bngw +(no7.-OKxى5feKBĝ kSlB&eX2F=,P64v:̮;oǾR,+Up)~P:Gc<r8x⵷kj6a(dg,ǭ(: +GN$loCkk~R4fNȲ;ORe^G{u{hw^a'\NAyL5UYW[R^,n1}8V,{3ּTkdz%=ֲe<: +:PA2q84`dTwkչ*SmyՊuߓEգcgնgN4@}W^5G,݌Wl^q=5קhk5"BvUwz3qu}A:UD{zy9o#Óتu廙y ވ8՘tarsZBzrH<{ה?%g\t$R-C9vcߨ-Ud[K jDfGgDgL0,O:rZF'/)|Z޾r_/)ȧ|nvnZֽ1>e`>OnŇlYBۏ`Kne<YO^5n0xX.ObMI<2'\^Fad763}e_{mR]Ԟ5"q}<'g-F]v6j~֏IUm-N +b) ,fЬ=}$PN5³lcvc"34]*&{V4)m|JqudVl>= +rEut `Ef +4@={̏ficQT*9B$(#O x-tO0#r +5pc FBrB U[%h+P$7\.ܫp(^{1/.+']J:NkN\Sjppګ1yCZ`YcN+UeVXJUNb[;SƦk(kMn„u=xUYq\һ B?JB`1#dx,n'i${r*]^W ՇNoe ʫ(VBU#O>:8M)M<%bJG<=צW_Zڦ-}*P[ o12SdqQdeW( +[ϗs)HWn r-xn[I=\|w  mj +5|::uLjr_)4v$muOݚ﹖産%XSG彑Ky4ܸVQy-9ݙ#]{e^nU^]j:mASۯ]KX\Ru*v72e7׮)=Wj^+duUp33N]n=j;owr+٫)z#W;+I>Z)^?;V-kPHө$4n:-_^k sZ|&nþ8t9'u;Sj78a%OpQۯIoI* UԥrWg ƠZÆ1Q֪ݏ…I^_\ f|3m-zV.#tI#x^Lhk%n"\nW}=fk]Z!BFʶ>0xv[R"P k`5z;G[Dz^.RӉ]0mt_gp5CR Ja-}9J6xU[M.s.J[?/<+ Ebݚ E:"2Møq-g%n#mצ47fScKH}W[ ͽ'IξaIbLfVn^[@W3h6_w@r}%2=c.*TIbGx}kut}j2b21Rá՘'Oz}rN"" )Fb%#Q+)jV%5FQЕHjVSR)MFQjGpc70X0]zI?=$j5+CVAV чfV=&?5{Bc/ eܨ 뾽dJjVSQԏn Sg xI{.zHj%b%5HDR)JĦb"""t70u G6c_OyZeɰ66F޽u0UuYa% +UA cZ9=I} |Q,5չG:A׿T^l0#zƷ[UEY3{,ّͫsJгt:~yL Ev;dRB` smGb#>-#0!N_yGUvK^f KY: Ÿ|' If +37ewn0mw%ǹ*v +=I~YV@Yp;s7#'gvZTAGn`{9}uܖ#`6;hsJsPҥw/'Kk2ĻJ5Ƞ@ l)^qyYtDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDPDlsX؋szйYR(U:tiF5xVx{x|M=zmt%8&.OԌpx]V ~pF'97q.5]e{+k2VK8me89־.F+%ǔ=V tt4gapx.'1T+lVT#c stMoS,/h+ᐫ*fu ىQfVPL+խ&5U-`V4P])uy%^r+{Xsu<'$xp~ "W=mh':18.O5(qjXCĠ6gz{3WLRˎm9knTE@zw's+E *Q[{/ojᛱcr6FE:cV9¥7@H3:f>f=WZ荿 +mWFպ~?Nbj-^'#U#usۇ[xF@aXwW ܇êٜ=^o#Պ !uZš5}IPIҷ GU?S}SNjR/ыRɶD|̣Ԏ#`#pr62 բqë^= +B@{eFU,ZI~W:t[aaw̶No +ԫI<`zk|*ѕa)fGG.A\ zLOa.53-5i6Wtc[WWVfRVSR7Ak畔=-xL;ZK:"""""""""""""""""""""""""""""""""" ^pGGH=ŢzecbbH7[٬į| +*%PzCE_t ++=9G.j#AWzn[=?X%<>SEt981)ַOsEt+>zX-jh =='|AKpG{cStK}ڟ/-4TO_K5[ J zXp__~/ ?~)~._Sݪ` jc_܉QXE?~iƫA~_wvE +)S֯% wƧQESKJ]; QIA~/D{#"J_Dݩr%N=?ڣeDcU~ioRS_܉SP+_܏("TbT?r T?r%}گ/D_܏GWk*qE_܉Ov Ov rǨ=_JZ# c _E%|pkbӏYAJu>F#UDo}҃A%@ƧW*1_t{__ _\1> CEtzrW~(Q_G)WX>O~OOBu͒" 13fJ7+YMB@=>>G +]QYQf28|WpRʗ}hK M{^?^-c_%3=x*KyWSd߱!V\zgG.c ءT]T3{ f_B%Z m*@$/_´dl"^vURwlk=ø"sy|>"V}_)Opp]}:FNĸhƧȽ!F\i0^^gsg8?\(vuO{?S&KlziAp^o/Uf}j2qo9v/ɣ((5of)NUubvr[E@n̉qQ9@)z; kCԊJѽћgc>t!K,bY\6ؐ K#@=A߱yO9:V;$(ր'}$vu<:@UG3n@I3qjyBÔ<}W_KN}\o:m;5!G7b@& }Z,8uXUZܔR@zL/דN-hJ·AY0hܛO =G|* P`tA[-^1jSMȼ1#33WK,p6A>V&Z8U?#Kr Ł@"@)F>5mkB%n@O ]6NuXcٴ6t>^r~#NMv{&`^>^¿hq-) ãjed +pc@31#`I ]BgJ(Sǧ:'8P%z徛=+TٔTARRu{xPXE/n`F{y=z$olm|1}x gT؜RzWkb n&>rX_\k$=߯z?˧2į뾯1.B`)')~?"֣ت+=9KHyE{=Gs;FЄ t7o^R;í5.cQ¯(?gN12Z@1o2Jz20{y婁xɬ-@Qdȏi+YKjPv{zp.F%fʼA-`*:R;'C1~R58)(z2krט>?qLL,y,V5PuC3!'տ 雟NP (6"Eg,6fG0޶7[Y9b~'b`tq:rNcؤu+:bcO^|5%gsJK"7?-o9 ;l_dUc\i¥4^f +#}}`*Ⱥo5v<ǔ!VCZeWוqyjK HEm̚$xxc-˸;=6QaͣcSg>yL1V>6.-5YIcObz+ۮO% -K,,v{$8W8ؙ׏Xӛz)U_b٭~A[R4A&FV_7KeXiveސ1t7׬)X9XTېؠWm1;y#0ͼEZiCEj$n -cVf/Ne)  +Fzn_*94M"XȬp+ٛHOlNO_1f 1v +,݀W+ŹSy0:$6OQs;*.(l( r5m%WŲ,C~rȊ|'=B㭯[2i؍;☙\qUܬ(lr6:d,Ϋb@՞2Q@ 6@rocӴgrз71ÉO\l=tp~%WadB;QIQmyzfȩ8&6[ОPn6tN=#g"hs뮔;:?j U'H#]L^%F7V1˲I}#e"u2=O|3/;/Q:;R?^F^-DKe W@X}&7 Ϋ f>#kZw?*:[3^b\/NF=qpиS UvA}7n{u6qqwΤ|M`uoM6˗ +5bmEsI\n4BRNl,˾Yd?n`BSU ubp%Am)$5{uܧ[!-IޏqL˘q.-KE8-.A 7\:.K]Jڎݘ Gy0\zZ\_̦R\YazsZ(@c_u2KZMU6HLY)bՊS A:)$>}5<>v5vqf؞?198/ y6 + +f<s52s|JW:;cgP +:{́\P*ȣzi ' \ʶ:}3{qn-glT^f t:[oix5jlܤ;Em@>}zL F!Gv iXR*kƢ +u'5ͤR|pݷd*u/בųk~}eS|ls;Y)ñl-5 L.e_kff^] qkUMg<.kEyQyl;o@^}(kv]SDq\*%a㺆JO@Ϳ93h 3UoפZnB!aZɲGOC'LRH`zh͛@ʫZ r#c0 JnB9'z*ʡ91jV!Pκ5'"[ަv.Zr1~M?]ks?+ i@eZ (LɑS}9T ZHyd*Xמc#JyG`t^3cTr[]l/u23s1ff`4 '&F`u=D(@a zyJr(AӷATr`[_Q_cs&zUXluZ? Ʈ֡U򒣶l|3'3/" r+ykPt}CPP =uƈ.QUQWR{SS!Jc4J=N' \*h[iJԣĽE)]t,`}swm5<ğSIjV(ߠ*Tv@tJr.@'Fe(4;t$]sYg|F˯ 7(P߶I $'`>DlJ/^vCH]7q;(u؍jQQi@ O *Zj^ԯhyhjPVֽG *t7*oj$Gb@&SNܣ~\jQ1 +P +~(UfnZ>.P2IMĬ,nQb#z{+_Vlq< o)f#d{ wS˹~!n&2X*{Xi4:;v]4a væ=>9g@3j,_U6yYW[:^̮?3wZX4J1 .x ~ D4Krz=I%{LؼA8oUmt؇u V~GCV r+erXG)nJp5_\̽@71GIo9|Nky@[ôvFFt!=9?UŘJv@e[jVZ 2]yY>8-#7 tS~[$13Ų|KmMQbzyq^=c) ׶ye;JJc+PYI?!P@{F{_F%euʉ]Ĭuw˷Z ()++==q/z+68Cxxx7\P>F6&.'+p/5XC^}%;A+C.cၱ3Txxo-B;Ae kx[{SƒV PXgR65NC-K bǯnk5vņmxAlKssB+dnpv.{]|*F7(!<#I5?`Wz{Dz0cӜ8Om#JU+x!38뿒[da"5C0@NW35 U =oWKp?c'FU*XCCPO7wn#^l|:fRĪi-Z6l8y!u|ϩIOA\z?a3!iIs;2t6 ?x_ƷqNM2+>~0<6d2/-՝dkar~ы0Sc$WjclVv>I?|8xemYJi(_\˾V߿~sҹX9z~%/!nEl~ ǸfEQb&E*.4T}O2[6~%BWpG4[Ƈ8z922}v^ydGQ0ua]ų՞h[*ywG7+9g[XڥB+.=ܲ˸Fji9or`&eW,!#=zIwl]tkz^'7]4W,#`kMX‘Bco}9HW*T2:9Y]+$>[[N)i}ձx%Yۡ_!R')}vwٹV%ʕ:3ls@x˸Y(l !OE. +l{yJvX7s'fV=Vac[rr1$]!@w u:`O,ŭTlY}?LoޭYN*R |@5V@=W|67˼B)Ms@pofn$Wտ  +ws`ёC* m]G/U;`d6uoh6rr7iW_v *G7/f_D}W{RKCq>>׆D[7zedqIJn5"RV/Nf;>C]&5&Nm8[6g`z 3+Շ` ֌|#wIBxa;s520Dq>.f>@}{'|\kȫ !m:WJXR('gYT?'Rc"BOy՟sd=tlymGQs~{܁>P~`k@|רnbq9iS)!3v7Tb9XkF +sv's`VKklǛj{OR6Q/F,$hp7VɎ!Rx9u 3px6R8S``}.[Pߔ31=o`:L<;W !XsQ! jO^R<}veY\j}uje3NaʹJrP1`}6z9Ƹ6?ij%v<w<&(â+܅ {O'.͘Z`{yɺ1[?0@{*HJ b5YH*&vIJDZ~-$o`v.`{ԫRYB(GH={qgtf;fP ߤï2ԡK)cG ?.CYsm̶j2kU,PFbc"2m_kГT$S11E^Mn5&nAdO6uc>,Wۙ[$gc]nŕ}sǀp/#Aѕyd왍Oko3ee\cɵrW}ED^='/*j2܊* `I;ԓƯ*XA51xWI%+/Lŵs>$'_''F,ˣ)l&bC=GG&z -X )r+_|kk5**Hmu))oe5be,W{KtIap^!>FÒ\D}S-= bJz ]/g5^b7|9{ad/#R>#Z5pSe7t +?EFHPk4T}}>r#3m'^"y^.By?xIዀY zݦQ^VՊP?S.d^ͭl tf[2;Z=&?LKn:>ɕò.ķ1'eGdžSK?77m|.pbӛ`~ho`ؘUbPZ3671:f[srzʓ71rfVUX +EN/Mr89jJZcGO/In-짩k<ƥcW{clPzg )6Lך315B$Ct_]9PmkZ/᢯Os`e|sT>.G.'VŭE)#}|^Qk/[9bytzj\tb4;o^F'ZWqo]dP,ZXA~E+ԏK/ϧ9}xU؁ Y 簽 ʮ'Օ=u H{8&u2sWm)eBvue u|RjI_]GQ,\;3YZk\QT$p_},딀y{}rk]%eA.Qlc˄nZb%u%gخ%O%fP0mWsktH }"G u~:}~VMy[]X6.s;oӬ:WzZX+WG׮`tOA<]$&yG]z#jAG,ߔnʓo}{Sm@tX}neY ;ʳ=%j`~ $'#F, Zž07/) u#{SВIԣخF +}7_3= H=`imv98怷V  袼zֺ*P4yWqkܴn;d5v(IA5+-? <*j@<Ǧ<D}Bz. n5ҺcB7)QVjT A2D2ؕF̮nWpLkQv5" WĿD" ۗMKR6HsC(p:-J/ Inu-ZmWSaes&u`\L/jxgOKbKa2J9<+: +-eK(4H)FO 3 +}#`T75xOJ@%+Tytg FqTvFh67sӑG1-9'ϯ䒞C+ik*twM,~@zaqjahc@ܟNR^AټNW4@G1 @:8) g4fjql7ì.MdvS}s ʽ4b"{Z@-)^= n Zqk +-ͯ6>gvFEX  : u/E8|*2JxjwẃƲ ZRd ^t:If~.'/Jҫ݅Ėz&?{FmnMin]XF:_Kh Xz_nؘhxhJ|j.bNi:67VFSby:=7{[َ!I~#]wp@\u,sp0Ո m AMĮIv#qn㤮JXnPu.YAפTwļ+kQJ "S[Ԫ$˻o4)2ee p&[[.WR&Pp(Ұgخ%G%f4Oi;W"*@6`8G:+"5]L7;-+,K\Qq +v>^tbU.3!6E*7*5Q`&]u\/ҴZ)[_|6-MūB6Ng8_fUq[b0yho:)rpz2GK6'ۮ+3cLyV!M+w<_W@H]fWg ӭQZج[ZyM.@Isfs+9Vƪ[_\Ǹ j[܃[U_> ^~CYzc9ҪOs18L-S 1%X"tHUί7كHwoZ;=x'EurI{OUp˗T$~ 66VmZ*@~R\8mCnKH]Q1v/ᵳFBzԇ `<ľbdP||J~F 3^8Qs\8#{;f zJlOâd3FKIzkx>>+[kW.n#&>+ | FnW.[@1Q 5*@Ԡ'PUiev`j;@%@*H#rYR7RV; i YO)QBIN_ *!A̦ 0 H 7({JkP6 ;YwynZ7tj%e a@u(bTAlЎ"S{2nWhz)=?WcԬDDed}KSYu+N C ڍ%5nWkRzsF1(Lyʁ*'mʃ*ҋ.ܴPT~iK\A@Iʅ䖵"P6HaVTC MjʓM08~qܔMͲOj0q̤GB:/IE.'[$TMn5I@7;J{R:A2Rөnڕ"Pe#z_+K6A+?/MfYVԷ^KJBrfn5GyN9!L4 hJ(L ,Mv,忌J)^ϖَK3qnҢnɶV+'k11Էrn[pܧY^S)״).222Dxѕє#}% ]j9`U2+wSmͭW[?A2+ZCs|r޲Xbru +=D)>SoKV\cbzJܠlyߧu-[y6R@ oTh&q~#:~|Iʃ>Ĺm  5ۅ W): vR|= Vf lowNYYBuҲ҄R ܸ4nWbP kqn7* -ޣ}e5ɓDDz5(e9cP"WQRWrYoy]Jkj u GhHn2ۄܣZR= 8SZ5h3y|;5̵H&MaՁJRUށ$geEus(֟c7XxQJ)]:=:5m2 j]fG %jie.Ugpo}[~C̽mVNrUv@PyTkf]hEl7==dcZ%%Ua$ЏPGbzJ[gctUVc}׽l;7[gu){p\S聰PI,>HZ]y:f ʰy ֱ菨(tX̵7/G`{?:r GU$CNoЍ<ħl*9lP[B{RV{(ĒdG!yU+^SZm$.㳭ᒳaR1;w\50}.;)ˮ2%%ReI]JJ6%Pܠ;"TN޲{O_eFxO)zMV"x?k1XJķ7S'Rԡ#zNpuSRe%crnPʨkSX}7almwkfʽ%Aє=:u'oʌ!򬹸KeYB֊k3Bbyd_o/+[D{ᩒz*3aCEU % +r4 +͎ MLOfjxn"B*RGEc^2(k`,kU-u\3*YG鲡I\pωm|Kr4|nOݹG? :=,?r ‡Gr_ӲcX d@:Hk2' q{):!9t>nwY-_U?H)F1G0mhw']&BX5tՏmrʤM0='czR+Jx=^k$F[([9Wj4;=;&PtJrƣQ+ܦ} tl+(DyX@+(LASz{(=w?%61+/#K1e ̬<쳗Rb%C9nP1-=LaiPeʓ˷1S _|qfc6ЭÆkwZ*YUc؅ g&:a+:u@hvC2L8X=U/ܚ5(sͯ=7MIMkZUUUP;4r+%;GyYM.ʉH(LjVR5NiRueJP`w$H~&@D?z%w-hHJr-qBMkgR,޺/% wVқeGS'ZY]Dyh2=e(l ٥K)?WK*9K)[hi -ח$#Xh:|v@rܪnSPJ uޤ.HbԌ\vb}˯L̾*R +ZF^Ll*Pt{<'9~[򆕕#r wԠq*czH= u묮bSQ( tJĦ`i)P=}qO_!&z?K12c]eJPԴQ.e֌e9~pDb%7ii%HSRuu+۬+G@Kןjkd ['C_žVAY8NnE '-[ kGS&ӕ 04%"TA ->'Of[}]X> o p; iG/Jc֪@vASTD+cD̮ i:zʁZ;J҆Vx." nDjW[ Ġ d/EG+MJ@/x?BcNobST}7+!c2Js cPNzJn: G%+%v QgJYNX]FZ%OIPCt\@tUueI]or(cqvnkRGIB#[+IM:MJcP^ʞ3'ӶE@~sd/x?BcCnPPzPN- e%[ɯW[0yʯHil; A?TlR+J0:@ SHQL J@OYBu*B],-(XT:ﴮ0LTvԩPejS*5-/fWWZҫ9GRʑ-H%Lܨ="ܮ-+TԨܤ =e jSQ=};, l/y11XnxbƨP3zwS.uSt}x3zƉ'fYmB;ۯ^x5l^br:3$N\ 'Re݃Ju6MYKSjǗIt;J9r2Q[UuS`h]}RG phq8ňl@vOLSkSuK[mjzKjFzԐl:_Xؙz@Fh@Qƥ#D2MAJhJy]P9N5yQN`ՇNsԟuОoMV-ob7R@c9AcYıqۖVgïFo{R%~9)'䆵![{)WzVeahh؅\)VQר$xedb +=*>5!˯Mϴ]UΡ=y7h., ^eJ?zeqLE{,9H?[mKUC +K*69mJ |a +il+{M;+ڞ?[,e_[*ƌȱe^r "=ʸ}-}ʈ6O=5f=Wy;;|'Q_\"-J`IyO_)fWc2UYH@q6(APg7\rm]F;2nPIQ E*2j|Mt:/オo50GQ/f9r6 뮺 l*t'gLKKjΤ/7e-)W '&ܸbLL|2(;뾀yq.#2kV]y5@[6]8[^] 䖧6dۆ(7ROb?yeqxƩX/A?ޭ*80P; Lql +.%RH_:ֻOt d\&Ĥw]f#7)pW,B:$ӿiƛ5﮺u%}uX=}jfknS~FyBomoEIgLjGs}k[|C.RMܿgé6ٿh3d| i"QY !#o#=&Nm|BqЃ~)*h(RG~)vzUV.{Qk duvʱ12U,ܣdcA 7QK XK,8v]*oΤy%jz^kfah$6Pwa<!Q]a <1xed]-aytCs<7W[ދ:` beʃ|rSOo5Vl 3y10OY@GOԋK5Exp--nϋ*+!KV=5Xmx{6O\{ KkPp9}6-ۘ%!y\iuYxExSaz*rǡu=fFNx +̵ܤcC-Ƴ/f2^Vbe=@[)UQh4 (`D'<+r(ơk9oRWz dK^wgc%p5S›NzI7C{>ՌACo9#>>WXGre*Ifv#n䣰8[=IБ<י}jf?P7r F x.HVbt"W.&u<;E(VBwݼ|\˿]^U°|r||}&o*؉buX.PDA7%Q/&s^oz#28nF Ogy߄)Y̅ `ty…/7ʹ ҒyHaD }8|7S[ʤ6ng5^Evr gNbbn ܈M9HӾT:,J ՚<#O2n`t<;},CnAM=fS0<)Wߕz]}{ N]4-ueЀ!z ˳50e[j3WXSy-Vb8̼4G`[]ޠ6u} ==Ybԥ5GCd>ժJ+cd@o7LV4֡W{DՅ[hkm(9PԮ]vǡiF]}2gӞvƾ% u-/w9SYٟAue&3Wev!oYz5PcёcU`WYICdjc|aM!V^@f{Ùi<Ҟ%U9vڌۙ\5xf:ى,t>f`CnEtYP4^@:='GvaՎd%쌜yz;`;3VJB[hԆRe*ԯ=~RW# a;+]J[*6;CFJp_-ַ%jX-zA=A'ێP$|>^ǁRwY +8] + >x^ +WoGfw+ߗr, QZ[]<  +x 򚪪F.;y-rYP~oc;cځbE-ԩi슾?,2\q)q]#\)fMy p⣋cv)`3*DE;':n=8UЍa5{K9«/v$:k/yֽVqW++xJ/_(I,mnܲI8A%etRq1dH9P ;7)ԉE$Sreveɕ0ʓ%te4cu&TA+ԷL:%JF[҆V"PA&\or\JLyO_dFxyd?LNXNP nzˏYH-"\˹h]JrK+e9` xt*{k^uH@1T rД'p!zFʎԷR0~r5VQ.%w-c)&\i*DkbT(5)VViP%U%|]u+J%5I\'jD%b  Of1vPL,hKI])%7[.z Nm@;ێJ+H ]L 9ì'{1a|BBoig8YC,^zꩊm)G0`et%u%WF@Ap:ST])pgkIl#khg_H)+l{Ca6ӐW˗{Y'WBTH7hE$vR _#r)1pXvo6 +\bP#b]+]IA(e%{K)(`JQcޣ^q(WrjV5PH2eP{Jw1ZzdOWI@ OJԡ;Szā6zJR*Rlcz% Է{$˷JD;ԬPF]eCldgU` 廯0J>]=1ۑ:'N?KlhAܡzS)JPJo[22ȯ Uَ򘟇pmrka8 t>?krj_YFMYi{;_u= =QMc !M}@t3#+_mK,^_Z:%|6w];>ri=b%y_"%T&WWpLyGMu"WRSh+*2O_d8yd ?rR% 2`.BPMJu0;"-=ef\WZ @uRhn5@e7T?){8n-z#T;dX+/)pi{}=̓JYeZXzo=O{}a#>=R +@lJae zu t=EX9Ԇ)odxdq,jfNױ&աAO;p]YJ0*?4|%xCZR!`MI#oT}mp~-ZZScF3?\r rlʁ11}QSr3s̱߰{bٕcuhl;քHhx\6kַ=7[]] Qse9Drkۦ6ccu:ʊ@}%kVT3 + 5\rp!,JZ{_Tv*ﲰ|ʧ}ߙ$/Ҭj Wc?gCkzr\ 7;*cR>ߙ^\ɒk#3rÿ-뾺L?fY#礵z{ىIj@l}on?13q +^r㕘ُ[I^v{2['~Q~stX#* c^W FTAIrrƥv%I#W%&+/񙑿_b!7.ܡ1*JF;(R֠ (P/^XO9RwT|CPܡipmO}>MvZ]7eKŭ0#Xԅ ab=w~M 5өߟYL|Lnsz +Goc ]5/h +9zk. +U -AOVcܶ7Nʝ)8c[B+OIrr).ۘ RB?V ~_ʺh lͿ=̌<{h)TT^čmedV+LD؃1瞸bzGZ̙[mH+ě"T˭%kM믛E^˸_Y͖s[aY!3Z9v7뗓5(NgM6Zù<6U>DF1 =d qL%zvg?+zo8dq1k*sې֫yFǦg5=G]]`=xGKq;y`ѕeeR6H kW^k3_a?f&~(kCcٰ%W[E/C(1$eBy,7Mem˭m98ܘa"ҪXN,0SDJ4w(T0$jT+#qG/YNXUԫ.$rYB#]nXWT9NX#}%@ԣ k9cQ*'?؎'jD%b ~r6*eLV5eHBu+(@iCUz[ۤԦ+TA1_BGM/)zJ1)T= (eH*&}>? +R$ĺK1]Tkujw'}w3 G>o +]SUYcdLbEA#vΩ4B`F`> /:nTI7MHJ#j:]:LJ1))] LAQu nSrVP"S~R nWr㴮JoRe;_d8ydî_U#c1L sG9%6`YRe7)QzˏYkw+@LFLo{PbPH'FTeKGI^iBĶ/ƥISMʓr9]Al~X*9:>Pϵ GPzK*Tz(~IlA)҄;Ԣʃ.&ZX*eI-қ؀u+Be.bс2U[Q+X `Din̪3Go5Vl ζb%%Jj\GyB4R;kr+5(D*#thR5*7FeSZ)*zhH2K+Ԡ jS[+X-ה1jWP7-Kn5*Fe5PvGXjԬ[L/IP5 T`e=YM˕]`7([Ʒ*Iwii]5+G~X1Gq=}cUYJ@w5I>C%nSS{ИԱWZ07.=e YM*{l.#Rv#.5DJ@%`qICTA-#r;nNDy˷%:Jh;tԴԸjPeJCJ p22TJk@$Kܧ/IP5*LJhʂDwn_dxxc~$$}1A~:yqz|_7S}/zUx1*XL7?5SO>Ǐ<k?px1ῴyOO=SJߴ?4~ῴ?4~ޓGRޓG(?4ÿjQ~hÇ%'<;'xJzOxJ?zOxxdңڔ)?4?)?4i?4>RޓG\ڴT\Oip\Oi6Z{O*8Fj{O0kS~hZOz1UZ=HU +?$HIXIX<5^wἘRo+sؙ\/{lpnJňՖ5<#sbnVPH~?ƬᯉBn]"hf u:gȩŵr72~EHs3/e ly?!+fc*WŴV bFÎnG2ffevP"ʇ>d))ܬDJn7+1ͮip?ZdȑK-q::=¢hϸDަ/ikq3 ?uȑ\L̦;WEe?"6'D7ixQ/6Su'@Oh E~G2#a'B<%"7+)093_rRm'3's˃qKx\jI!h^1g ކu53ꃮG(e;2XYMĬe e%Te$u=:̍;eOmoz^R.2ʒ1P Nlk{5㉐lDɲUrI 'gq,s}m G/R@bJHr+KfNr+בxubnZPnͯoEA`>=J>)}BtF`HSԍR٘le[A1+*>3Y_І1[IWݼU`ǟa#ZסH'>uYOr!$`GӘ04.FFGdQi!1|5v f sv& +0JUWsY'"W[u=믔w^ebekƥ5~1M`S38]ca[^%jK;SRQĩcא/>!똓 $rMJAJq[*lҫ?o4Դ" *z |=qUhv"d??w$G%:CYƒ[8_ KZl'8\lG»ъ%mt l$l}ڹwN|;!(<_&&"NMyT N| ^Z5˥gD:`59xZ8UZK:%}9N˭k2rrqs6 +:.P,PmƵt՗7dّe:`G/׳y6ޏ[xo^:m5d.<=67-VN~*WcV=[#\P(*b@ ~#=ecqL\WbbbTr۴,+4[c^Xĕ²Ir|ɪ̫ ^(T؅Έ>C}YOb՜2Qcq'kpxӉ]_Ԇwf( +C]ɗN&&U9W9ʂ<C3'x<lj2l< hNݥ.3^ c+%&w-Hs +Ԍ~ByEr>!y[޻|7LEhvET 50xg +9[$g]Ӕz fW˳Vl\Q ōo +gRQ{L?hn%..c*T$}d^]bJh϶U'jK1]]oͲƻƠ? i`F`H5f{Q1qW׭QB(gu 2?f'e%f`Vvu}|@T)Tcezt-lYPÛz INVF3l섭,ԯE?*w&mÂq&F^35 ̾2|L # y5rx `%]ma:\xX!5U65jGU,@$m^SV#ݴGG~[86e>7,ƥUǛ;=w۞xo8Uۈn(I"W zns3!sbVşZתضb^ 34u7cۧcOe؆W'Z Z-%v}g?g3l{~`Ʒ*DuU( !@YILrDV~§ KK@幺a۴^'61׆*Ze r pl* *e-x%j(z]1< +m{ myN"}y@$ O/fp8~wPևۭV;;#b"""" +F~ȼex^%l #'}~*GML -kTw3mSgl^$e]YB=0u:I'̱=KvI>d=|<3CoUMnӉ;6U" %rk9OuJ%f>V 9;Vߓf#@ƫ9{[Ew5gڻJك GpAfms;wm u">Aj[TCdmsr5B:jWpl^T(d<٬%8Vx0|^Lܜ*sB%&SoL +s%˽0e;!fVA[êbl]Ͳ@/ 5TAYTXΈ900GA3E8aƵOR *ճV叄lsRnbU7;Sѽ{jYbz +|_=MK2Q՚]6H Џ9UKJ* Tt=Y4fԅaTmeYAצ/d6N]UX)y_?.8p kSѧ(I'@:$8npj5P|λOj,QՙyEHGq<){Z+B(!c|ُr;g02br7[DJA =zyO[5X._!tvGe AqǴ X191@$~zq>dd 3($v)7,e +4 m8 [bH +TQ՘8.4Ky{X:ƶgGδ[D`SeVZ a~1lX(Eru^ܑCChVNcd-N(~}w۷E5~=uzqLv9$iYBu"xg?//a֊VbTIdØ%'CݴSP5|)x.RX9dYo|fr$k@ ͦ"""""""""$G|G̗+b|OL'SZ6 h=t;׹e9yu`\QF?pIq:2i锃yN.ey潐WI|=7'LkڎCuO}>13x?5ܯ`Euק2'ىET!!O]>="a|NrװH zݙ^9XPI/)pk\6yFg_.S#117YB:ضu;A b,~$,4??aC  z̩ÿƟfKDn+sr sl>BeDDDDDDDDDDDDD@+b|OLv + =~ɪr03^vEyW6Țǵ}nCN wR/:y͋+PCk^o2?hr_dY!,/ *ū"Cs;?FWxQMZq5(c@vzL6M`&2ֳZ +0~ɕ\-說fbT|2)8&Sx\Ȫy_n;;fbjA&ѹ{Ry@Oݓud+`J;luהbX[Z:-%w5)ȭى TϘ_4p,@H# Cmo/9D8qBe+K> ǨQW]fq*;hTJMJX_`\O+#XwC@t=f7♼Ic݌s|J[_:;[lqeޚ|~(g [k{)beWWX<vz(龽zH mgjŶ6B蕧N|e|zQ;k}D[%!,9I>%WA{YnU*TVV:G^{~)f<ŒBz_d{1ac1@r!z+)o&0ZU7Yin@srv'Na6ru\ve^ʼn5KH@]3gqV\U5(v[;x|{<;idFUXuZg`t&/r߫cdQE ȥ,!*=7u%pTd%}6&]`M #횊PLʉ]N1KmJFZb:khRt@o9,9z֤u1Sin`4GbS״ıbYwRGQ|s2*HZhhoc3q+s[&s+fMmbH 633+;ȵ+u@O؉ ៷q~OWf."]Se-G#.@Id^յ*::}gj9Xs[]JiJ@nS,(:0Iϭ/y cf`K,ϐQ?h08Kz:z}.a:u={LNRkVD:(*yy٠|:N~~_ò]Eu0v(S>.np+|\w VͻYk?6}kzp~Ac^rZyU +.s2Μb6#uBj 0#jJߡA?f_\(ĺ{zs?k}SSb~Kth +\-2E5YY-X)b`r*aR@;#*}fG7n=Y_9@׆Kw btfӑX\ slV$ tz8dQ-£/kN`y51)RX7>dN%@'zր:̿i]Фf{>zzuc d=KZVUG_A@E@ţ T: $lGLI eeSh~,N'!^I!ߕ <3fsg G2E?d@93m|]DA鳭w'LgvdZy|{NUf%}?}ܖ996:hopԫ?L.K/;_135U*Bk$E-A\,H5-//V+ +%׫\KA$$=wO}XTWPЀG~ _1Si`[X׮ge8&]7|6vuJ$#@JNaơqjJ*3&8ϊCm|b^[|@y ]a3x^fb:#|"wͦerGn=7gCCYFw[װG-(H$DXX 6=|jST'J'd2Й5v(e`Al+UBT :ONIeljy׋ZZU =e%dUf6+"yI~m~~I폏F:m_D٢xߋ^IB벌ObN%ŭC;zi@v+ӔNPc}f{O1kԵ@I@zWWL`Z"Բjyy|z;gR6[wS'V "YEhX5$ITY\\^r qtb6ĐK&L{-sج0Rz;:ȾEC]J(YY[0:TN-W(myxRBk`kY Xo٧JHi^gwq,) LVHâG,t dar"5˽siA/85X̜b7),mHZ?9!h)k aCl:g\:zI%uB3XdUS'g 229S~Ittz{'sm2 +\G"v)FT5oʳaghܥ@nߗyfO1\#7#C%X~ç'=G3bPǴ\Uo8|3vXK7ʩPv9{ h73r +]\-8x%X^Bz,N7l4`f5GN]2ImqO ñyOڏvZJx#+*9Vyh˯_)Gȳݕ]yX<ᚒfkM+f֏hp,-YXoGgQ=bTĵlls)A=ocB1 +6C}dGk&[RX:d+EACcd62kNe||+,|c޹@H_5fVцf7jýEmPm~ Tp|70MK>Q=Jѫt)ޛtuo +KmeP:Mu=q}zֶmZYk]¹'wGIj{Mì[Qaސ= Mw2ͭ!QA ZX=bg?S\~dL/jlL vEPM~%=AdG^"Pz2x? +Zk.6Bt!=pE8W(aH#L'Ū]ϼedx\XUvT;l'v>QFsiTQU^C{Oʭ-9tvB~7r7[|L 3J^;u lt6l-^n ֺWZ|D((x\f_/ MsslkZܢO1YP`u-ASsPbZ`znStz +ejW\}zO{xQQۓ`sh獞b-5\oTFk_KI]^s/6稒2AV EH=A9`SdĻ䨻4؟||A2xa&Ks/-X -Lˮnshyvg ;q-lf-aNb Ŀ +[*"0*KrƈD7($Mk"Qf8@#`Hƻ+2驕dN+$&.%x+(#JP 1#y]-^ V:-$Lָ^J(V vuTUŋn@*? _tya[aoZs%s'RG'Qv8Ƚ;Yaf`y*U#dHuo.BsSeVkR[Cᗎnzݙo[*3B.uG/ul<.*2lAjk]l(3߈ #jXh|0t]MRSccUnMdv6t9GMG};I5e2,©#2ˏ+rfR aH-O +s_N^f6jvTpktbYu <5&x 5U]JXef'uC]e+{jX@('3\Ƚ>G><+(Z6M6_gSYQ**X}G~&l6WEҔK/"'}Kq&juix]`W>|pm3qOgH,vEyr@]/W#rUMV2qk]Ljp8 DU[gg5yh8U򑾋נe.gP(Rj,Zޗs "bqͣfVS'OW*~-@Զ<,OgC+ +Lfh| 175,g[S&cS YZa؏rc]_ C}{1 +¿(n]]^]Kmm̬:ёϪFadd鱾$HjَX nP>f잃sפvݔV9[AVw&?iVg:hO$^Nu8,ozuR+RbŇYb^5~w: :h/dX9h阰d5 +^z*)H:kAS"9{I-H Oh2âkodRWݲW2>~?ѝF56IUR֛ϐlOJMTSX/7h.[QG򱎄F}}`0{)3iFfadI{1E;֙v;u]rq/SQBZ&_fa!{-ٮÛVgg̐]KNe\=NyN>[m[-e^QB ֏nVv:۱S'p}#rCnWTu, #^]|W+Fy_2}Y5 N+~USkHUV0 ٓ LPqϾcŋu'c~R6fgBIŸbIBl2\*.N0314&[Z[ZގȮ\AK--'jտ94:>DTޘU_vCCR}ٹG^b]{G٬-<0ٶ`GIİ2)oUH|!R5_L #%qS]qPcԵڊ<ÕmhﴋùjK)]itQyͰ4wu7-'U`:##U#-^ƲrrS^*g,СwY7qzV_ŵǬ'BYwg`ϊ_M66cw6:*NZor +򚗥}C{<*AVH\b,NI,Mwt]y\loE|{kXd͗WZ(,C@5]5IfZDrhҩn̥,N555<+֡YHz6.GߊF|5A:52#`{SRxLs9O(Flp[,ac6I69:oCz*,PZfCT?qT`ec1;b@nf-fDDDDDDJvDDDDDL>+x3]ond qg%+(p?Qv'cfeU_j/26@ڰacNJegꠎcru*<.XʬNK]:TБ3&/l!G+o&EuJ@2)/::k`׆+Dz(KBtuz߹W^G6vߞ S˭}1g>wv{Z,_  ܥ_Iv3%47Jj5Xb""""&>ZKso>[z޺-V]#`>R赠ҪIAN{6*` ;$DDDDDDDD@5jpoJ"$ +[v?ˠ Y-i[wijsf%F (@=:#3ñsV,gD +: TkgvN!mԖ=Z0,S>_ʶs!mAzc<\5j;'JM\,{9kUG/Usȯdj|AK|jv hyφA' +w뽙Q15X:=|`d5'7&O7/^~i}9ҟtONb{Ų!J>3.-q4PBA2Q8-ue8u(>B{H A`؂&6_uʬ]vuE<Ϋg,xGܖrF d ëgveͶ$$p/߻ܖhyX7_eMs_sT#xT+́ f _q"zL8mY6(Br;I~mVQ oATw]J.~; jө+59oæk\8*NЍ5Z(t`FG"Dq28wg*ۙX)MN_#$sRXtJt~mLU.YB>D(>[㍓E/ZdZj`1*gYvw_/>eø*TؒqWuu!~OZK}A_דޥWbIp9ΡI=;򕫈cޮj2HrHR;w_9x9x]}zUp,'uݎ@{xxnMՏv +{%q' Z`Pk]_Nub,WSٔ?$ypVgndPs0^bԅΦq 1q2,/1'Bv=Ǚ;vjEg[B|$tI-gZ3vB.F?K/7ɑ; u\C*ܗ\ZUQ/ĂNn'q~+(>cơE%X-J;qA)kʡK9.U%^3:y^^mK0?Oűw_Og '@ !83cd%X"pGέulbص[r#C-ؘ }Ya}W!0"QOw[I- tz/vIv@/u1)gĪkZYCuW0:,O`{%]嵔tP`$DD@ 8 9Qc^z6ܵ'}[S#MҴXU^+ʉ;c _)'zU]]e4d ᭛i7@I xP]R,;Ȱ}eւј<9ۇ{B.;{Bھ Ȝ˳k1߰#ep\yG N!̐oB(5 mx\Te@= kpЭ_-XIkncxG{Vous]kkc(P;n]:ONw<+W뾡+˴]u*,QKe$|9 穃>kyYw +e^/O@%Yh]=: nqh҄8WZ>P9s +~og1U9VrVPl =w0}%-++$j#޿PdGm TbRwy!Cp[jzSMcHnoK$P[u͠Pt%bOmrepj"T8,Sr>R|̗w9gUp=vv4[Fmb! 6"A[U+aBsx5V>'ru+#d +> Ivz/S3ϵorPTm']zIv:L x ȏhj곆LGv0mt5ԯ8>єv(#)-[y GRwG Y'?{W0N7Nn +ukedF`{R]*]:?^$>5. +tvOa"8xݓ~:@5"\#_Y8]TSW,Ji\L[z\^f`+վ&[Gd4EZf~1 tjR~(:Yu`[ 6>OH a[XʝyQ]Ht#Dvy}a5RSf1xvr$:f[3-([e @b9aO9'O ̛*V <;UߓfҪ_f=>6tb?6b;X +ի? 6!y@;뾾Mq܆eb.Dַc/w{` ɞU1v aԁ}fN.YH1%΅} JV˸ױ7pn`uVZ+~^뷔n-̡mB-iF:-u u>B[?/F5{?/xg[bdV6rBښt|#rr +ՑɻW;xEG;^k8YUܩMiN]l ::us12/(o&p2wN Ę +qܬWuv}do lj=Z, )^RS\$rSEƷ@EFf}t~O! 2;@9DD@Gr/p{p'*u]u ۰,I'];zO[',9E~Ҫ:Y8X}oLMQoOZ t#[C=0vuvLv5Y<*+e 7*&QF'JmrJU (飱PaмTVjVʠoQSR bKPS]^-4RRF% +r:ԝ;|#[2[ +P1S׾&?ɬrgXǩ\ᓁTMvr:+Q]Emvc^o^QN#X03/ *C\o{'¢"RBUOA\/ۭb ZTiGbPRi\.mlw4_qVg2 +7E8r]*>djfyAӷImW":`ly˒B +h[Mя)]tz;| ~P~_98V"#:?׬*J^C)e⠮TQ(}S#%u `ET @='X8hMku{4u^+n_3h`UJ*9TkR^HX[?3kإX 6£JZVp'os3!Q@$v=F8mpeHI:=-ƫu"TggXL|nY*Jفus[XE)q1"`qL7u:i~eҰ#jzzo 6Ebt:lRpLSV=Hwjc'XtҥU=P?51%y =]j:ֵ +k]"ևy}XSX+U@4:K)՚BvUQUO[rxoMl+"߮.%)WZ +kӗZS^:֊{Ҁ~Ei#ЍjcYڢ1w/|zvN~LjnP,qݝ~#=dPH$ ҳ'uX8XJ+2#А6{J~~7\tH<@GŮzueq)R֨ ޕB04 j~n#)P}[ñX=0n`YA;T_57Ost޺e^kF=ʢ=w ut[`BيGF eZڑ#}+F-XōusU uh<5l0le3u +H ~\\Ír[tߴA$octǿ%WDO _-'Ǭ?9]mz뼩Gr:u=|eU:]+w6n]losG6YBtj򭩔ʃ\־rYlWګG}u"8VNorx& +GKUuF+ '#o7(*[:OKV PA]ܶ BߧI|.uL$rxK[9.~mrks!/~_| EupH XTb\FK]n + l` ?i8#dR}CAXhͱ%GGhܻ}uJScaےpE[uQ ]4>"@@C!k^ZKxy7Z` Xd)&>jƹ^k(iſ`eaKKmaf=H,tW))plSilkG rC֪6:Ϧ m63_YMI{:=z=2V){F$ r_>SLjUve䅧#任)Y +tCt*[k1o;Et:x\T-[xyܒ/mL1)S^]ebmU^a[<鿅8RUP<^۪V}y*=ʭ4FԲSq+EYBTtz0(+ß~ck_\΃k`!~vNɤe6=ՍodVEd-wirmhsRw[D3vetFDCGN[}@ڨt Y!Ʊio+QQΝX9v==Ev<PK +]o\HRG +~I|*8Xi}Y+Z(TdTڳ(17S^z<{xz&ᙍ7PX>eՈF&>f6nuvWһIBS|zYϱ2ƱˇK0, + o{ w&B +`az:MOb]mWE9f)"~̽GRzO#} e T5E6;lsa/5(-r) F%A$ĥVxx Z lũ +mySSYPMhk!jTlk$7 6zT)*J z:zO/o៦ mebkczc{VÄ_ kVf%d(+M7~GȾs 1 3 9CYBޤ={/7v$z? z*ɽk3}DTGd=<ǔoe/iBK0F8@O>md=UUx-v z1*A<סl~Fo& n,}:b/ ^-]cMX_܍}StڬU +UWl5N+FSn5TeЊWԐPzbju!b_idp*͙栲̺ ?k(]}e*+ȿbʬr˿USֺǭeb<@PB'ټ7 2.]ܵJcyRQEZ-±tEepya1s"NFPK{>)%YVpbIV}c?Fe<6-UԎAb0<#`(>0F8ߜ4fIs΍$)$)̫qwǬ)׉B:_kp5Z]xnԑmjT(b6_S&]=yKT ,9ڄiGC߿)p})U`W + !AWa-)P[3N< ůڰ>.9`1,@3t<=%\g":c2@jG&O[ UlqӒ;}'*P!pϜGAj1}ejUIO(=O]nz{oM$@$oD6&dٞhtzƽ{ U;buW@PlvJ:}GWZ†pŋsro]e̎'FSqWy9Ny-ɥ1 ITkGNQ3J+ +#rJ ]jcv#!'Yp?%= 4 ,3ʮE2Ts3r=WP~`n]gĵv~m?'DT(@ ҍ򍝐>]#kl[{d oR6&E)CԼMm +kjC/p܎s,x!C3-W +:Ғsrߚg]hª_L9r T[ KhQ1Ն*Ŝ3zbK>^_R Mtu`G~|plAq|% [g9k+jAumZw5t$>5MIBgFߛdbppkBK3 +43t=7+NaFd$u h _'9~V%cט?3/-lDI,Z$oy[Q)P^?A'̞yf{-BBKrDĝN8N5mk`5 輪JS^'o/>p<1U[I$|k);>I&"" ,{N=OXo@wc;:86FERU=@Q2"y\1{$*!FCAޙ#ư+eugjCdu1e]zcYcURY:I QSġz  lu:LIG(|P?zצymB50UPIf 'G)#`(5 XDzV"&.7̶iY X`o3*%%bc[qjWmiK}|DDDDDDDDDDDJjV"""""""&>v}6&Ůَl~Y8ܐg 6hB;L؈tױ7gdc S)ꡃ0=@:|#87|'+- +!آ/ Gc|#oRWRK|5>ݝ_=kvՉ5m0}rri_ZrAb|#`=bۗooZjr iKѫu  B]CԞctn1~=[#w ;' +vOmho1Շ@O5uI^vUՓPúG@.n=D3;#Zr̯RiOs~rJ ,G VR@س!׉ecdq~+ZUbys2c4t4ź6nzt#{;LSxx@Gl^!_[Ru18zn+_hfDQX@$66O~ ŭg&jK);-]іBh,d?☹cW]'=߱-{*{rM&EKEkZU +>4'H!o(Ae[ 0!Kr|@t~Si-z꭭+~/FmcK I_Ӑ|={1ꭩ鰢::=m̋"SZU"+Z*fc`;FErdx0WgͲu޾rW^8"r,GYNpRK(ڵ9)~CH]SYWdcp$eֆkգ2ŷ^b%[,`H~]g7W6:û!x󊺒OQߧeq{1܊U%Q+۱>`;5=XX[ Z[ԙYVQB5#d۴6y k~@\RLܮXJ*5f뮇j̣` +>3_.%؝v#7d͋`w1d]RtM{ +'v9:޶3-nIfLuh֧1{L`0FĎ˿:~ E79f^^mkC{驍G_G%_xtG%6C.Nφ -`Φ.XOa0rp2mYXu `AVQKlCg$z+U+VE7(m1:3F}G|JӚ m+[ :H/dcde\=(, gcUHP4|IJ?;`46zA|;.^t[]GO:'в}/yk5SBzS!J ,mrJw=fk"cܨ7o16ڭi=;^0Qk)q)nO)utWNW} 2)Gc*Xό("(V;; g'3\Q61'Nc;Xv6.{GW#7: rDU[zm$;<{'j%.ki&כDt}R+J5]!! 'fW{͜HVڔ.+hMzER0'LI|i'!(Y9 G>rKdۙE(`;o]~LhCCMVxvUt`C ƧٕVhJo+/?9U<5z,y3+t#Zb֭ͫX|˭t!~%b^utx~J +|JڶBde +7.ARGx^xxOKby˾ŅH*ԟ.;' jOwB,](QO-Jb`q Funv_{ߗ#<ڕqN=͠ЂGBQD8Ol%LK#Wͮ`WG|H'3,bՊȮkOQ7fFk#ܧ_quۗ}GB}|3?cׁP5Fەlm*k-7幰n8m98X]\ϯZI`P[FNpḴVvT@Y+'f2zJ΍$A'Z=50pxشc.I[A5JxoⵥmtaBz^S6Ά,1QP`Tfk<`f6O ~+bz]d!{thҍkOZڥ\l* uxpllDj*$Q̠$}jPhHFo ƥ-Km{k<>F~%6Nu0Wpĵ?Ukwd$q2 ۗzZUIeT]l$3d ++% sy}u=""""""""""""C{_2:YUmpǶ'<G^n>{'בb;[bކ\DD@: +ܶg5aۛO1rzzG/g2rNZmA2lWgra!u6d:=uV?P="SQXbX &O MK.2q`A%Ȃ +@K%b`#DG@hJĦb"%"#R +endstream endobj 218 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 71/Tabs/S/Type/Page>> endobj 219 0 obj <>stream +HW]$7+xgIRU5a {Gf*%UsZ%2##"^?>v^Az߷WQ:-A'ariG_Np/Gw>3s95p0[`Gs˘]a + oo1# Ggk⡣eÝ2 }TN~,Od#71@H"vWW²iyYN-x}Vg)K^g(f&EP˟ b$BfEȹ" !dʅE+oι\%>19a9AQK'(@^zo󣶧9~O Eg0S!9VPgH<ç׷/5dfN<3kg\W b]kRW zvߨ):~1 u )AXf3.1bZr%UyPLi}GjH@.g'DŽYEA1 Ҡ/>C",_brS s&:5r404 I@ 2#LG7LjZ6D+_MGXc5@{+g1 RaJ}L at93Rdok+sƊf`T&^P3P~69grH7`$R.N^7}U:]\8Q- A_lOa +S"%ѩ)6X\ io=;E XVd4^ReJjE8"fxgB<=,A,D`d3c}&VџP{fvh!hm)`8F^>\ d 0 "J@.^n(Zl1B.9f Mw[=ᜓZ%8r7jS4i6οu+9T Kc^+woa\5]S-q;},C3y Dщ[N<6ZWxΌ'/W\Z_rሷWl0MKY/јsfW익=ʍF!YFPq,D.;Ug0D1uM7Rxv"yiFJHx:g6h۲jgŀ[X%a*T9AwPGҒ>-RvH9YCbY̶hL(*<1o X 9219<+!MB۟3^zlG+dwS>-48F2p@cWMM]jhQH>:ºct& *) >o{Wam,"4c\ 4,/%w%c4 1C'_;ݾ,Ș#t&njHc".̥a-a_iIpApT{W~bƔFK3ҨPkMm "T^?dy'/>DЧsΞ/>%[@vn8sS=}^*蚙-.k-{S+Mz  rǕ΃W:~]-T=>Y{>|z}{Cz}}}-5 k)-@|E mueb F9<>ڹ|;ĵO;\`! nYa* 9޽) IVʔSX /]w2ݣ"y%M\!;XgH7quʬ!]mc @k`=nL25ATfs"Hڅx! O9b&Eu5 _ۓjoenW%[rV6ߖAxż[5t?8pś@2MJ;O.sO ΃G!Y[KENꝒ֪'tHWv;JUd~8X|Ղ1I}עnO1dr7:޽gx&dGM$3C,(<PwsY+]:GFWJmmÊSKa:X\npM^BCCb*F2{/L-6S4c4pߠ=Tw"A lD3+)uMggnL=6ޤ!8TRj!Nn]2 1euGSf5dNe;[,RCT'*uM Pk1U"IT5g,B\s9N\y yNXxUqOpY$%<9˔mcX)Ya3ƓTOtms>̇9~-2Ci壾E#w|g:hbNR,I՝U=Cr# e%'z/ +,y +jm7I=lB(_ TXԎsDmdHK!6D Kf: q`3f_P7ԲalMA耶(4q;eo7{D-{`uɞru^h@ YYr$plq@76n,u3r +`@-C({xv|& 1TC()+NRM Kt}][MLj!$@9(1SeGЅ ܝܖ ÓY쎔z$oCչVzodw?rqT$&UI^z&.<|SJ4,B!v鎍D#Z0UQ/OyPQdǝ y)Ibb.jzmΕ,s:r~׶]c=u*y6ԏYwWɢC9188e Ү6T IG{F ῒ?q'THPz3~gv6+|%C\vry;> %ol~-*ZaM {Ơ9A.@ cQ ݥjzT쁄 :1o¡@CR&RZh$L5> 743ά%-4oBt{&⼻6x7%p0-|)xsuk&4V~@v˜wv3U$5F-I3.nFI"M؊#X[|2׉?VO:v(FRNߌm1Q#cxSZ~>XtY }% Tf'ԓ(q5S"8sqۻĦ+-^D<KJ6A#kauөR33wAu{H%Vև_9қYȯN +y~ȲS+3mĔZ-m~ + #i& . ֮X>stream +JFIFaKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Ka +  + e!1"AQa2q#5B3DRTrs$CESUbtcd +%&'()*46789:FGHIJVWXYZefghijuvwxyz? w :~#fRˬdA;OkcPxǴi-߇iޭq)d25?J +^{2j,jۍ +*ۨ޻)W0J AESt6t΀ei_Zؠ p~ Ml>~n1Gl+[kgGGޏoi"lzn:As=/Tɧ;+ܢGٗGh'F{--[o忏}̽w}Pج +?XXebs +GR@v×=E1b1YP ɾ~m쮴j"!^lICȎXܱ5>Bk`0o"Kqn¢,lM:tOS[77a~:VU +HȀwhIEۍ%UHS}SS5h%\,AR'lXgzgv=uW,<}g%bx|Lh`]D)<$CI$&8"ƬwnbR@|a`^@Gٶ .QC7aـG~NJ_y{E)Dn5:Rt'V;g8gӳŝFpq-=KyG +ll7zg$Sn"5#`}A9o||վ%7 ^(ufV=]׃Qe'ûvd +[{l gD9])3v{pyaU 4;Yt}F +Gr'@l'DT%J;^Jֹ"tO~'[w㼗YC3_&`*JȎ#%Y7w@; Ȃ@m΋fJp*u@ǿ?a]ȶ/;A@w#ôl{,(w-R@o]*z.;b+dSlCYel۰]B3gt33[p?(z63c6+'*ۻr$o%7n?EkEfIRwĎ|vU٘cXI wc:1+T>m6Y[ O"g/5坋9^Ɂ@ƠcVfyv.f3[3ѝj^ܖVT :AcV`6 Z3>>~E+_ʧ[U$ߌGHUZBp +{瘬8N:Q@)Y_mvrI۾heoDĝ3g$b{IcI='ə"""""""""""""""""""""""""""""""""""""""""""""""""" +))x lR興rԬDDJ݂d垪ᱽo[RMDDDDJr(d)w;/##2Vb"mŶ$O`i FnbKl*ʠwSEX]MHBmwsԖܑ2aNXIk  (?)n#XN1eu܋ֻMcuro.3:bk +@:'̯#ٖZ|M~k; ߧttl것+( +Zܫj^,WAğyw=YLwfQ\J)_,5^WT3r4  c\Zس)$6vVN4|;:gj$UtZޙ0U7ꊫe=v[3oՑ{cj~4JCĊxfUtR*%C0bOOm&Jduq8= +օʯp a'3fiKnH`Bb>j- vJ3*@c;Mz)Cj??1)frBX@f]w>Q`WcDa2ZJYSZ9W~uSClu^lXYj4Q ;|u|euZc%jp.6;rn^Z\&,-j˨*xx2=kvI"UyUYb7@\ho rFu}w!J}υiβꓐєCA4X+`+@n&YiKYC%eH{l{? l.,. koM^Dv 紒ȾZX*"f>dM:5JoH9v>7:?I!#28jӟ;9":agG~.tZ*Yu9u(f r; ;? vKN=9,Z +܅bx=izvX*JK+6 TijzEJ+,)?w886, hHcn.o>.&q rnf潕/%<׋ju&LX+7#!Bxj_ [v{kgڽ+cջи%~jXJfk: ukWSB7>7 |%rz&*fYhP,@mL~zѧVp9/*H;ר3FekU9V=b@ |dnyU5d(ÓlִN'İR~Nw,j0jƷ)͋]6pvJ.itWקc!HFH5ṱα1(I 0$M,PAlGO-\^TRiOKŎ Mqp$ā-]F,BM8q3[Ca_śөR`H=xu[m _Vcbt +F Gcw^غ'=IG J%%is2^8ߺNo|Sukkkj'k^(,Oqؑgdf;M! +9SAّ3ޝVVU喴ԍ48 +@Ck]7qk]Vgֻ>C++C.܌@<R>`@?I7҄){IW=gh缀45P#QT.c:!`r b ㋕Y> odVT(fM/uF*=Kj4!:6WR{vf@32q}UR:p ÓB'ǣCmӶbX,Na"sUEwZjTV߽ƀJ qJ8jdcs}h͏iq+ZdV L7A`tw>԰iKԕdbZ.E_RVeg̚2YqqrqWeئƫN5BS}h| ۇwQ}vV{b'``={,lu626O^]qP8 rjv=DģvvMX/-Qp嵉 23k:liH:[71J9ab nԽ@UK;vFpoΥ_]._ v]lwWe6EINEC>ֻ'#^>WW?LǨzn;Q=5"'$VL1+"iL צ}óeVV|w3}uls25Zx'G%=~z mΦVZ`ϵ9,GlĴ!a)Fr.Y!qZ:. @2hz]m rO;f2;^aͮB~933=>U~6ehr]7~Bdu +hKehZޡ"{ l&n1317g?9kjn)ߋٱ]fNOJþhJ|f +l4L}W3,tι} uX^W;-V\|kH$՘·mmp~:nZH<,WH+S|T(qm&etsum=%R]n8=vgt綤E,Oy3JJ '^PTk}fV])z^ FNV#{cfXX]? Q~M;o;-q=π5Z-T7"bc*=u5}]vU6'-uS[=:=\[N?M% +y<5];+t,߾GOJ 5m{#z>S +k|FǺ+1{MKtRؗ%˾h:E8 >e~m~@1=\TL^Yy\bЍrDEaw'ֺ[Pvkŷ/:ˀçX֣*$):=SwgQ}5h  |fװE_WŇG &E :HpmQmQFwNgzCzYb0_LأT '4I'9,*FrYaab`}n]KԐll|P}z}"kn;$ =SPy?r$v? #!S^.w^w^VWn`=4՘ y:RƯ %9Vfis֛7!Z)Sx~pYe#wqՆjkvО"" ǩ,*YA*v ~c/ 0ཻHJȔhj]-5`F_-4%M@gE@ؕ* ģV47.j$K 4FDZU+xm(UMr#z 4Omw1\+~Xײ9TRAމnj5;AEm׎%u+-ח.#z_-Ԗkyt1x}JB(ހ紺ZQI @ua[A"AP72ZԡTRR(>hEϞҥAĵkU%OٗJjSR[}| ޏWJV:WC̡E?|AX lx:%҅A#ljm%a 1xh'z뼋陙v؍›N:u ܨa9PggEHQlyvq(>BAx %>@hHꂅWUYKj2w%bՊl~칔8jZ%dP6vtAEá-_-"""0ו]ehl*~iu__>#_UUY˖-Qxu&̺h +3%{$~ba=S#k1u)j?0'HGtOþ%b""""""""""""""""&$ɭzCmU|o̱?#l|7eHw߉!#RdsK碄0؝[r쮼F 骰dڝ1}&FXvZΔ6RL6Ċ̞c]az޼̵5h@JӓoN85a|Z`։Hw ԑzf-)]!H ^:PϨg2>mk^F%xlxy2o37}ġ1Kl A.0ӛ1Mn>˕]LU6v!&~ӱr5V:,nMuYu0PNȞ;wS77{8.1YwOSJ3?SgF=u#dUc$ZRGaFLt6eo3?C+;8|}ݝc=GfW]OO?Kwk2cu+:=3؆HR+lV/m|u#cq.UXX1.>;}fVoP- >Q EH$0+۾n~WKweʄ3(NΝweb5 , 7GSW6{-ZT[)޼q[$]~ƹ.χb{L #q6N0dFPྷ3$1nufrJ}fT6ּ}IX}rMHigr㊩СsҕrHo5an#/cVb|ٞK]M26Rꮀ]Br9ue^&QOj0-j@ɡܕsټ ud5({h|>1/U.546eeWB d$|bνk^+bhǏu}=0SO#9 eVzKS\l}Lu01ES~9Tb|yQwwW-.?gGWس6ȑw{y=k'ng|k,Tʤx$;dVctՋj]x+6pÏ_In;e?ShE1귙 ݷ,9kxNSr)K@^d X8߿nG#Y*%Ս ]Mp }mDDDDDDDDDDDD,9B:$lo;WG=%Zn @ϟ6szVcaW`Q*ŐsO|lpJղbQ8)]`oS'nYvXhh_m|,ҶF*6Λ1bt:U|tU +Z|nDk W]Bt&RWvMwe<@b{UIROR8dhke 7?;n]Q=q/ 2k%\ +8sس}|ރԛrB>=SBC[kS3Vu(X2AJ55(w˿o>7dtkBK{X뼼:ae4ܩĩQIRf2.ʯ+6vZ԰\$#]~Exd?ӅTڐǶ)OEn +yoc J7]'9_?fEǤaՈ_+k*Ccgc}ѕKw+k#.>{0ЛPo'oLX(ے[nljGBʏPY3w%||47˱6E=Jթ+5S,wۿWtkzIz.Ȳ +qg>ͱR#z=6I7_D =/%,_TKk v! <<f3Vyξe#3C`ã9%UM\_k O˺sadӄrS.Z+56wxևs6'A}(.0,p&Rwl̽4(}>o%,fɴ]^kth ٹ@l^WUA.Kȍ| +Y5|lC6v`@'SSv6OOX}v=A|d܁q~U7*,}Sgg +GA"Š/E<N@yv (RG߲[~Ck/)̅Aw=ĝWUzVb-u;V?>D}7gܖ +iZ5kZvzUFEZ늅b +R$=>j;;$LUm+YjFu^**w1ŢZ^,r.i5yxsOh[-ZMz^-> Z첣rǐ:l9J=-7]~Hˮ?Fc{3n´>ȅhqߌ͕~rP}_MgLX6&\[$mb(į .2\JDDDDDDDDDDDjKԥO1T|2DDJhyԬDDDDDDDDDDK,.]C ;} ew'sˢ"""""""""""""""""5z?Mɵ*M*2?_OrV\=諤~ܟՕ?uՕt=u=}=}۫w|pHd]n߷'eFn߷'eGn߷'eG~ܟՕt?rVT{QO7V]&_߷Q'J?߷QL>3qnlvf~8:d?gϢv8߶eF]n߷'eF?*=p?.oۓuՕ=u=}hzaL]ѱ[3#Pe^W> oS oۓc~ܟՕts?rVWU?nO:O7VWMҿoҿNoҿ.}}ncgF!?F*=p?+0݆7Y_wF1nO˿E}觤~_eG$c~_eD(c~_D},c~_JiK/qWYhn;q.u?–j:Q~yO+&ǔ~ؿՏ/K<蓥QjVWG?qnO苦ܟՕt۫~:g??D4c_/t9Gbڞxv8:d{]яrV\=觤oۓ~n^}}=}L=JzaJ_r۫ޞLW{OҨ!_;IrVY-oۓnnnң^oҿ>oҿ{}M?ØW_;۫}< jVTu5OYi:^9 fm +HލYg觤~ܟՕt?uՕtoo若_D=3}*{1ˠ~W齽D@,qu >D?vb+a(zf!Ы3/WiIOGZړ?'%?"t)GIICкqWLkǩFT~]r+1ismF?%t:x(K1ѯS_ IC_%?$jkOJ?) +RRSO4OMkޖQYwG<ƥu=/qޖQ__J~O?50Ԕ*)+ޯ0?) +RRS&ONkJKnYvcRZTtK阘tT{֪7%b?_J}hR[;bzk_J~I?~֟Ԕ?)֟ړ'%? :?i_e?C7{2ҰkǩF@FqO%?%ZRSN?%?#ZjOJ~E?”~ԟԔ&6JVNE7fh>BS_OI?#ѯ)z_D٪_D}4dRStq'#b?IRSF?O/%K?~ֿԔ?(z> Vړy=4 _e?C3{)XWٖ@^5* ޖK/]?$ kmR]OEkťA;Щ^zV#-OIIO'Vړ:y]8 JRPieMo+oo+WEqKRY7$:+OB5P{ЩR'Zړp?'%?!J?jOJ~AO{)XAXFC7b" 1dEm/t9* /GRՍfj_6W5Q f^=Q\ }߄ߙ/xe5ٴ1_tv>?<=SuPYM+A,,IJVF$U5[nI(M/eOiz}yjXWM{f~gjL 52xRF,݇Hj&Md~[ٚ#fĥmo @{Mn7voNkqht/dl=BHŕK.c{׍˷Sd]m*3䪞#d>$M~et:6'u+ +U#gScuxh&܋k.<3 ^27/n_LZqkqԳP`Rıކ<ޏ]t-`yW? Gwқ^kcRI u,GZnǩ̺n5US(@A|5$WQz[|,G/[b6KȅSBJVSq+;ҲՍyYx߰:%y1aX)Sێg 7a!.zrc$w;hi-Dzڀצ</iMS+dܵRoQo<_Tי}v!$w=gXQf_OR6 >}D*g|1[ ܰUdcflWcԟvom oTtCSsIeUw/]kX]kp>/ +Oa+@},O/"X՟KIAwsO,7E +׀'C]>R %4 Rʤ^D{l7~mtUAN +v$OkϤgK ~t|ܮr+>7XQUPl~GW:-] Q +q.ܹw66==G3{1MXPI[>2{D~?0u׷3;l:Cی``~ [7 H>WDwPtYf3فkuGP>^{Y:V/JR39H [{ߟMki]*}v9kz2adcUpR룠k7lks9QbK IO=u#*Y0zҽ)mʶiegpUX's^;T.탛U@,aUt=RPMj0o>˻z[Cy}qGg]ow~3g>M~LZ< 3}S_?,w.J#Ň2{;Yk]ʥ[ >Lr( Q9`썟#n_K_h"B#M{+Q7 ZѾڭ^#R1ZԒB@hlL>th*c)I@`W>6kj{mƎd:nFO޷u;?a/^EYE]쨒ecGA؉-"c ߴeT\ +@$0(AUL5:LTiR|f@~s&^%Y57"8!%# g ڭUv4*m%{̖=vb5dޠ?[kG$^_9iUUfP꧒#3u޻.Sξ\phHAL/boNݟ?7?ޟ|ltOJc ցbH!4qbE=ug}o2S׊p(fpG/rF/?IS,É+u𬢌v t5mRҚ^W ;)8بU֕8w{뼹6#ҭS,cĝ[1z&.%jE^dcμo:QMD%ֶX1o$]*SՆ0lh M;n׍ep2Qi}ýa2]FJe؅la>?~oBδ^МY{Yw3q~ebeW] oqy\g0z5x90C@#g0RlVJ(֏.xu]hGQ1XO"?o׫>N%)F5b8??P/iWe>[bL؈1ed%Mk!FE.ߙWd,oh131.P?|Tm|H/XGYPPFy3gWԨLpq >,0lJYbԥ$fQtl9* +΁OKfbQK͡j";(a؃6;^63SQޞ_8e*e=Gh{0NdMi`>B\S`e~:'fDnB[Y܅RH <03xIK2$y(ee؁MDz,[Uxbl ޏā"K2-ťBZ. {~3KpTX#V׳ᗊp,{|OPw?fs2*-YEأDߍ}5l7/v;y%ӘQ`Bn1)kUH#c/䋝lkf9X}C5GTVkd@;)ʩ(;+Ѱb+q:aۓJ3m]I* 7>råDfc +6dY+ŭGxTt~^5ֱ,ƹoV_kVN0 ogwJ-uN3+|k*兜Aȍ4hnht˲(=`Ssl[!FOZJtDPԛAoiw.NF7]7?ZG.] ::y7=zujTZvH>5ߴɲ6 +EV3a8.@$]M 1P[jf$q<Beu=PÍ]xwgWV! +ى{yFA<}&/RZsq^ZUn+ɜb4rIfbq:8{OTiw{?]X);F4!D-yoUqw3 񣰻cz>_KCj ~nT}ZՉb[D'˪>t ޣ-t0C}pkǶl {P~_~D;t)A me`m`#~iy:phe.l*,$ξǣ6WZ)foq5^fIYj{e׊\v i)m~2#R{?},SI yw=' Ik}0(ϱ$wMTgݙ]}U# =`^8Yȡt4f]$?$OU!ߑA(1'0uQ(Z])t~fgALUFK]eôZklV-Ȓxޕ ^޹@vw;|7&-BʧD5_D͸bWe.1B익0g}ƻz>gKSj.?7eb Ƞ{>>GRe*hM긳c~:wS$k!N5 jKyaμ`l|nԨϺtQ -I`>fnzeUj׽}ӯ_ LN΢rQ]0 +kSVl,Zb^Ug,YYw1GfOG2ک`dj-ѹ-#ƻ|fYg< W-~"""""""""""""""""" ؖJR4 )X(Nm=inT1$xH^Lr*gUY2l.ܙRqѕE9+U›@v9o[:޵ْykHf,UTlIE{QN]Td%V 38ȎGo=9UŎ''@+u FVv^GI^UxU5*ē zfI!]сHe:e ASW 5s}CX%Qk:m|=mMa#ƾk k"lK_`v? ؖn>57bq +F2JO94_w#K8kiWMˣtfƵ#װ+lx=\tj\V;Ɇݷ:=1ԫј-Uz{?wr~D3.FbNnamMU=Ϟw +׷5h a ڈI2jFQՈp y53OR7A'%q3hNtX w<#fxdY' F]jOwr#z֊[I;f]|>u}1ew +tcvTҡQ@ށ I'Oȕ}]šhsgrx^۴=k}d67÷4;HuOzlLl~*Ժ>Y4MkROy([gcQa{p?觥~W~#Sgc%xdDŔ%ljPϯtOs/yǦu4˕}"]T=X;?+;6YjkkN.wbc^#gפԃ;8/=59qͭh`Әֲz)h -f^wP*k%T2~""""""""""""""""""" ו__ꘗucѐFv*ΏG.ŵy2R'@t!=-˺UVu\Zf ^oDN|g|Z*f>z޼<rx\.l|w2_u{_2g:vKc3w&BԢF?oDDDeĶejk!x#IDǐBV +Op AY˧JԜwr\ۙ}&*z*Tc݈I0-kmml,_^U e`G鶞_FI?R(*m9>v7m!:UXZjTY{:οӳԘUZmWR/m?00B2kkr<6~]EV <9z[W}8z^#e7/=m}e2jƨ`@.K +GHͪtU{T8SwlJĦb"""%4t;:*%%*$X#`~NvE6(V r@:ku Zб +6_>fb9y**W\݁|>;MIjېO:a)XMǓi#9Tf +y7>ψz$ԍɂ=~%twtF䐕պo egZ;RL3/+*X$C HDDDDD@#Qnry5Td|5uQ2SYzrUMkiUE=co\@ +|w↑ftK;,z +N6P661Σ1jɱkmƫVP_HuUξ̅pǷ2? 7L1B܇Aεk*_bwVwTuJXJ709{9OP]]ks߁fFF>NN&.n+a,Mj]9?eթԌ)WijJQ6+rOEʦdu U{Cd lr-m65ncU u `V8KiN~􏮻WejuaRy] ܮWTʳUo +wsqEmk\벏v4K섫 +d_w SY?6}X( 3GF$眆WW/;?#%c +~}=H@tq0u7ҞGERnhcfa=*{ڣ|>G_'?O]jũ3] +ܞE^NX[VګCf?1=Hn2m]dT0/nM @Ŀ]/segяoŭ7ΠXV :x|Xljx9cٌYe,]mH7?MWhf6k H+_s!  $4{$Z/PG'}m2+L+TTrebHiwu?j&9 T-@[A"33ۥ} ) =/Wp2l)6"cywܫnPYhj,vMh$c虤3)ZK4P,opT'$I!M1r}3iq/DZ='KV:ahc,hﲉ=IF/&~Z*=IsR|ɞrzOOߦ;Fր+) $ Hv'Q 7QjYb +prnm~m~Sz*ƌkF_xu|KF% > uqS+{{G[vԫբܫ/僐ׅ}Wֽ|f]J]6Z >6G│mNiT!Mh{ vܯyLzr`xl3iQoMuz CZkqXcKfT^;kKGE &+˞,'&ήw2Yiv^gYn&Un=NPLY]Yj"ZصÑbx_ =eeяeE;ɺM[;s;o/QγQ[m" K +rAܿ7U +X.1N}Dr\0o:iۛM._әdPR[[-^䲦B4m뗼>u7:]z;~;EcOt^{iu\ox=](xze&Kl߶o]¿JlGVܷȪl>SnޣwJ9{+N!XnjtΘ?WLqQlgѲgOoʊc>yfu.ˮ]jTU2X~'#zau^Uk7i Qk{Z + sb  ,O+' &^N!lr6e])/gkYEW6RfwHֻ 3:V4qPc/ǗaOb%b" ,{b&CL +-ҽzu'CLP,#.$+_MMz-6SYҌX :;W,Ȳ68f伏b@`0zV?Nk +nV ~aW;nH#,l|r;$OD.ղvW|6uɐy9/3kv})eZ{*.]>Z].ΡGyջoI]";| eW3ņ>•t {ql`.ǰ:Q4 QUގ ~`DOgEVmRm_)UPvJW56c-/^۷i)q1[x_郖Ђ%{i̯;յlD8 +Pb{eS`U/;+`c`H+;+=fע+` OG;W2){, IaX*hrAƾ=Udݖgr*1u[:?Y8/Zir[LvÑN=^rhl+[R@7֤=kZ *КSUթl$iՔV#anC")-6a&ߎ k]~IǽU}r*s2uԻRtf$jmp?~^b\Xl:9 |>:5WIO',Kk@|1t<'Ʈnط"ֵ;ASe@*jjeXWcT +uS`|e:vřvcII*%yH*ݿ#cǑ#VԵ+.FQi]J ύK.skq[w0mYay6 vRCֵf +4 ?ҫζ]ÁŴ +?.N NhR'kZ֯kgMLQoNwk7釗y0ozƱV1d8*I{$KHf?Rô-it FT ާ%vSe=+_2ƋvQme=sr^A-5,ŶL6N5سWnUym~AcKq&9Px֬K1mrbǹltML{tRxVݛ4G(]YUzmks+gBܪ2ۋЅW)r]w-_Ӻ5]6싫{ n/-45 ;c\X#0VX|Tx?MWzj,lhUyD|*¥pޢrR\_6o۶'I\FC! Nm3BVhk$ܜOW?N; [ξԿtj#WuAv&`A_5lO +g efp?1x']s{XڡnEGQgЗ6_NSACq{0t> +m̻XnCqˑ}"yrğSk+&MdjYUӎ2#`DtJzC^3}n^$vug=:Op:eefm{p*A~_gL[m'$򵋂Ŋ,;h;}3ұŧ +*<Ý2[QYePb,-ݖCY}H |0xv=ZUVRяv^kot)VT'eGs_#z/ã[rUC# G^^,|H-uv+\ɱŒ?0˭:ԝOtزYQc]tXqmlv<w{3NAukm0 X +`az-kk ~{7<@(c0THbvyhwn_cWmkjRnh7->cnZ2j4mbV \Zi5[Ƿ% wM(ϲ-NMEgdqmo=bt0ڐ+?6 +azz 8ӭi63 Km܍7$"",J3HU$l3OϧדCr 6?MԶVkUKlz(MaSCAsј#G(Tb;DDDDJjV""%%e5,KRʬ S@fKuU W5N +` (@>&7P̲pKhMcO]Ƴ \upԆ^ Qb>R@hbu|̋qsٺB9 5wSh+vVScn#̓xRWzH} z&F)KߎaњzoMl6(ovyhLʳI)bRT0L5TX"#37'cdיR]SrGP~`d +V%њ;ޒHK^ڕ!醈%gяuTX=Ž56߰&DDDDDqw+(`3sz7G `w&~MHj%^f h?dM ͷWh{܅ #376;z26>] ]v{|sG lG,m)SImGp=-[n,A:2m5ha8KZh C3;@"nHXD}kdgPıӝ8?JY7;{BL8.U^pq_w; IVlZ=knf*Kw:>IZBu,br0+ +WBh؃)plg KUB`Ŗ;zyojP'U**k9-x:RK WXo} +;q=h:rُ࣊$nk_ҔddǶˈ82/ w,qƦk3'Xԧ*}l+o| $xbΣT\JmE!z]8S{;}f=NPߍ~Bwbťʓǐ7=ƛWZ}=R@N߉FFexƱо:c٥ζ,*6$DoCYyWe*1Qʶ%l`t݈ GC{A+ɦCFX\cXgmm|7$ݿ݋WL{g{UAώ;9}c8fV޽%"H? _P ++a +T#|zQ=[ 3jR +%{jh2sNUYѺTg:݇k6E5Y7fRFʟwgdu pqETX]XO5I:#yE+Ӱ0VNܶ V&C/7\ez(+;緉9<ϲ_S @V;;MNrv=_{S&Z'nYMwUQc +B;,ͭ$DϿ0\)>V†b VF~k{Eqq|q˃[Qy1>v|M+pWUc,WK:bcۯ7:W/a_LMjo'5j%n9^P*j4)P0]1g]gS}U rU +}P7~[q\)Ը*Ԯ7l+`6#^'3@OT\N_dK=9/VHuL,.b[| rps*_h>]5+i,ոSe-vBZfyֲu5:X"Pm,?Oݙ%ߥZUl(k[@ޏ~&.լ7Pm-/ d5zV=u|Vvll?x/]=S;'{)s+jn)ʗ2/tn'Q9N]|鍂=^%-h~MJhRǼOot~&G#:j*-y`*mxmF,+*kmZU"Z^kR@Ҁ7;!}æEK+`Gc.{șR̀>2X{:$j=l7Q{ zۥNU)6!V˲UN :WU=h' -T0t槁{"}7t:U+\w7pcٍӽVZ^G 2oo$r9Oeu a阫R4ٽ/_UFfevI#onɫuWu*KU5ָ>^Vǹn+U6BZcߏ<}taZMr#]#0FVn7 +Fй)vYǐqۑ^x3:_cƼ\ꡟg:f{OgK+ EnYg}:Bڬ*i~Hn, ވ#a!}˯Ͷ)jVu,||&>uNej1aY%T,U #T{AOLJTWnu^b9-jroZ QxRWN=}'Т^݋@6nY8Y6ܻ xgLΜa%e.@Mh}.|{쥭)kI"HEn}Z7zMzfR2VQfS麓EClh}cphxmUB +u;Mnp.i5|9y..8_졬}X>uܞS=]盁H^do,wMΧөc^tܻ+!l#. | ;6rqr6^Ⱥ!k]$.6FB5"OCo/lkz`-W.v6t +:F3zC0\JS 2ǯ^|k@ho[otk22MC=>>PŹo`A2Zeٗ^5me5ɀr5Wu/u= +2E]JC*Ham{|eKduL_Bܞ䱈khʪ.׿rOg="+֏wv*1%|LX}'d*pW?$^eb+WFoPoΘRV$ tğb%PűKNՏRv@;u5}9X6e+)ȓ` +;YѮ˿!̥X +Ǿω/"q5[d +A8忻7ަ<~mgV/ٻ:m]ƀ>w1ݘ5W(JYjh.`$Uɮ1ҩ'_?3U_ 69z\$q`W;;}'3acdk5*<H Y,w}"ލBYI+|> +}}Wu]bqs(@iOA2bt[~Q#*a@lvgd韒\_Wkx56pvV2SJ7V8JG7$N@Se6B{Y[fZ/lnJ`:8<6 + ݆\7n;UC[߼wWe%x$= y !;hA"n]5,UTVבٛ*BoGu3tK>/ú+]Pve.[2ղ-Ы!nMߛv +b G*}ǣI3ijշJ{)ҎERPudmrF>FmcUm{6&c =R'.2pQ+\i{M|NuHW'aGvX)g:Pl{ l /-oO2ý2U?-Krŷ<^~ مb"_gj:e`S%ZlX3JuyobVbX~?qe"cY7N3*\nP v+nfM+&MKY@YB vt}?JEXϧGv!0t>=JS؃z-e>UWՁI᣽&=dŴ7SZ}+X1 vvFkm`ttUPiC}[@o%u!zVi|2Ձ{[z)O1l^ hx2Ѳ02~O[5'1e -IJ X"뷀O6K !뢜ūMš;P[zR;bt[j*ֻ(MdF $]_H]n5{,VN\_@3 t`,5v9tu|2ۑ)$ڱo$>ӫVÇp@v+IR>)OC'3cVqOL~aٛ)Va W`M+'%9x 6r5Fթmv ƕ;;ᅣë,1|Bu[#ȓ&HL_f8yV B|׍͜<=$$:V58ؒ;:gWtj[ڶ+[eBp`lvv 9~fjlwW;`ٛ=3"q.[pC^6׶Ieb" -ũK1f[^UkmLmX>s$JnV""""""RVb&ZX*(%y2nL[+`XwG%-(興MJDDDDDDDD(g}c'ӗ+SUgM]㭍l.^N5&j[>F>>[)eB::V;:3gf5kأ$2y`t6Go?I[zV;- Q*Yĸ xA;ͮ,ŵَ%l^JF~쓑]c]*g,W1INևqTK{[U_@T7霓}̖.lZ5M5kIYkt -Ht^c2ke)*~#:уB|A;Kb{Wux6]]AEEs`fOBll!CS_yYagV{%iA,;j_ps:KֺȠrO,9YVt>o7g^} ^Գ2lD}-qr]}%6 +xmL.Z׾ r:Kv0OC!C%WMOk*ZjvF󔯤dtqK!]n;$Gcd~ԕҹ b؀WdhGJOPc*<ˈltP{rԮ*vӊ^ǎ71E7#)J"WNxXŶ[ș8:[v8BW{3nbJQsmWVFUWaϬJ3SJ l31وȏ$I興0WM6=Zhl`&xj"4B][3c}j~ȗbS)EAQO0WE/+Un޼,Z =y4++# sh(G~[;T)pq}Rb=~: ښ9ڒ@7O|>u6""""""""bɫyꋰ6lge9u*w,7AlHZn,ք\+y3|FĬDDDDDDDDDDDDDDDDDDDD fzN@ߪE|~6q.ǧ&Wte!}1 &ytdjvԨ Rg]=FmuLsqqjXT +Y{ot;?OTV ğktzLiQkp[XS.U{d l5kvwd}LAQ@ww~:zjP4&GFseشmf:kLRa *@w~)VAAD=9Sdq^b{]~*8wfRBېd6F+wJV!pa;Λӥ z\@wv,t`6{ *zrXJzߓC?#a2Я _l#bZ8Xܝ:_ ltΖBcVJ(Av}㡳PJ3Z+ O0?f PԵʆnG\wRM8*`#B+Οg]=͘tJ^u)kF+͵FtDc`52vnV̼{nњ7trnȧ +CZܪoCq0 +.r*t[=>!~}=e6TRMLJ` 7nlVe $) r?7aۏz5f^AG>qX_e-]ZBI7ߴDK lp-UI<@'uzkZַriI塽woK""""""""%<ƥe5+1;[5ì:]l~akub}dfW[+RSߑ+etT{ב<Njt4Tv&;)X#D9VXƱ@!jxn:{1M؈}OѸcY7Dn) +^D)+))0ezjZ>3IeQ}M^"Q $7<衛 +@KSa $" HQ$ʳ/`( i@0]f[.PAzlnib9ȳB<2FSٿ1>y9V4EGoScҜoRw+)43ƻ)bBɶ@'z>?9oIꧨ>M6' 1P8*tavSKӫFJ͎h~ga W ޫ֨NJ'ru2ҋإrt`y|FbPFĦsnIåFVր$2rPH#c%қn7 HCg]CuQkB+u0$z*tG۴n7nV"""""""""(d>:e3+:ZGIGᙔ|uo/7't,kʖ@nw[@FyrzvK[TĄۣ`*#o>G[eE=4tڕwu,ezvGT cx$:*cet[iӕzz|FYVڟ$;r]3rSM ܁ת[`֏buĎ;.mFM6de + *A=ufM +*99";J}G2kWe1X*$ht{~ޛ@UX(HEN$|4\:Ĺ+vtO4}ҳn?8ߍ?C7ZVv gh5@`S~mTXcU]Nڵ^K}@T7:Q$IӏRNMg5suñ/Qb?eD;+޵UV535f@ ,x#CuLZڮ|qX)f1PΰA$ |<~xŦŴZ>{_ fl\jQ+ ٙlϳVܵuY]EJlʳCWEu>(r?٣ףrCK~ؕm2Oe[o`H~GQ5rX/m6Zۄ!AB<toiLmk`>u8Q_C<݇>'{>ܮ%  Y;LWcNt@߱wnOð*KxPxeޏyrYwMsUns Pn1 G녨Re]L7yVɢk[F ӺQMw5`2B 3k`=cQWQٛԃ@X\y Nq4S2㕚9t8c^%6R]W{?3-*Kk=]ˑT'w"bdXfؙ`-`5jKwk}Vx]uNgՍJ Wu$ Ckdd&r_ejn{=D|;$yhk]ο)6t*9hvgqzVeսtX@ 䌬 7=XW2(Oo fCLTz!U71Sw VhYrv7P?U0z|KSHfW[l/J,[ۃ;؃{?m;1AA5]OWup+Ez/X+#>P47ܑ'RUY*ћbWc}׺J';˗1s튩55O#o 3_uO(^ahBA:nC&,<:wX%ѓXBUDVQG_Q2u;5yճ]lTm5X|Ë]!k@N;DDDDDDDD@( A{2>kdH®UmgS_ ]w)Vӵ;ms㿇/ISy _ET+boRS۲9яFЄ/hQ{ytVKkqZ@re|5O)Iu%궖P BV5) U䫹Ch#FߍIz}Ks9/uZ KE,nR?WR?7׮U +'.EJiL;*۳1311?L}`cޖeڸfSz1Rς ˡjykkSv9xc! jMCx#ju=/0쮾8o4`?dLoW_*Q$q`c;zB뭟ӫ[$l'S1jufQ)Bu4u;LZfT.Rb@/u +up8,ǑbGsmz)Ʋk.S)N$ɽ^IMcJGL5tʫ˳3eUv}ШIR# +3`4|䔦Ej`Pu܅ށ?M[k[C>#DH臒r-+§kZU nDw{7S_ev9K[Ȃˢf:8ʴ5pe׺9M~*OlvC['~rC _\Ù2+OZ[ޭ1^ )}FΉ#}ţ5R +CkƻC&}*,[eT35)!,v:䠟 4.X(k)xi >O>Toj9^$ xfi˿&c\PFvǼۣ-ֵ Q'mۖ7Bws^Z*߱Jñ]ѱ\RkTE^,F?$oHDuܑL#Gqwj*Oٗu^[[X_*F[q=;kWJ$,9.O^ |Nij1ē5vuyeGDQ'#¾g=FV+@ + +52:)nMy8@Ǘ?)},jg@ùrY9&lMƗu=LTִTvK2:9uضtb۶Kryؙަ ML84a2+%2DZT.J*`۴frkؕe3կ3:bK%SB*ձ(JM"FՔKVpqg00`UkύM0OVzȷ!BHb }7X?GމF+\[VfM:$v;ĢOyt^D"\ҧd!:o,ڰFrPr*f'e7o2:5kvB|ͥƭ*Tq^t י )(k +H*S~bbf}@ШV{y-RN>O)$bJ혱 + s2#2b@>f%c-;EޚxrY] *Xo"tzqnZǿ|&npi_$ZfDDDDDDDDDDDDDDDDDDDDD(G!Sm V9(' =VNQV*=S.4zBDzV톁5P4~kX="Wcpz2ʩi@[f7C66-fF#iMg||_{wٍ]!Nҳ; HԬDDDDDDDDDDDDDDDDDDDDDDDDDDDDMXMDb%7VSq+)+ܬDDDDDDDDDDDDDDDDDDDDDDDDDDDD(Nv7_ɹjV`_~"46x?8Euc,t/ikAb'+8LnCk~7"0:`^SP - [rކulULPߏ]"ݔ;~R1m$5.q1g+aG||%LaXHGn~μ紷<+Dvպܣ +6?*kv`qhmdTryYS9Z!m%6Ulը=5k8 otu^ue/`6 7fTYe*X=aK#)FohGuȯ@֤ kI:#t#*Ir)4'm뷝O)۰Amh5ݑBwwz؈}ʨ̺WM*ʣS#:G=^Tl삭H \V""0Qk~ +؄X{Ocˡ@өQZa{~&lfU݋sZHtNK]Mx{ď,kR) loz0FOll.|=̷"YY9_U9)YQ`q(RAp~;zMZedZAWn*97<QS9ւh8vRXEM>μ©`c +Vĸ[췊ubdtTy7WvFּyw[!V#|{wnjSoN-#U-Vw;_=/CƧ%`,$ŋDGL=_6E+r1Y,l},5uw4=>ԯQ +X&t_Iq؝c9NXSň%G>2s.FEޝp˥p)?YNn u]mfYQK7:fy`u|klKvL2u?:*=*4.>ї*-Aa^Z9Rt )>ٕ^MYhmWXz)/|o]پ>/fE5R2^59`H:#GvNJe )N=X ĝ%6Uz u?fFo[y5=*@bh3UOq䉖oeʶp.Ҙc.-͊q`}Ѐ÷qۿk9֓aB<WJ\o$ֵ,$w5qz>[qF;;e ,aȖYvCh[Ϯ &_s֙-f\9Wc糥OMR[Gi:?kuklgz] >"Bt;Ӛ,~oKox%:utl:$T;%jqTƀ~/xϣ \fbΕA'Ci:%6J iGMאˮ@苧Ey m `L7b[[޷՛RKFވtuQҲ1arA!QkfǂNW%Q[qyr$rp&)Ne߸YO];%U]4*<{NuWLK ^?{KZW>{,xmq'_ 泺XZߧ9e..PA$CKꀕ +)S"ιN0lг~;؏=pBKN'SLpc%T$37MUkߏ#3;lT:t&3pVoAYn< Gtﶎ`8BDn"}}|J^Vn\te6j9dx(긹V + ;@y*Of~F_꿍EYK([I^m&KW;j6? 7So +]oѲ9p +I$G]H4]WeaU8UĿx?Y_`oA( +~/x8V5W^9'M'JXZ\t($n}Q_>%VCl{R<Vf[~V֘TWJv%=ݖ굡*fb18zǎexxR@!R@ 3w3_N_@ F6 ),lKcetn7C~[r|tG ( {$vdA]2ڰ 6Ջ! ey@<@В 6$6wau$vZ_v#L5\>Ү6j\{TP.{ȓ=W(@a7a=C{opG=qDD@#><əu`z[m9S~#Ѩnzz溵fj+/$'d}uz-WY{HUC$݆4Iet':ӏl}k3uޠ( :]!{ }K= +gj4 +Vᇒܻ6CH?Kx=R6<gq'_Er X*A~iucnYj!좴@Nv 8]`7br+9gw_M|lm[ +tLZþI1_pG'"}_ռ7{oQX'2ϫͽR߉c* _p?Uk^gڇ#7(_tK|Q0U^wHWu7)Pc3l_i.Ű+P@DumGJ;1?rU !W_d'ZN5130M-z@J|}f٭=k[.W US*cu-NZ0~Yd ?BW@ҶU*DT٪Վ=|JR̪b @ z9=l ҲǦS)U߹Y! {yINNM5U* E-`K= #v>R~ŗOR,v4v&kDʛm)ڒݿ'N1ƷTHZ_jǴze7痬[h\La}֧7KTi謧SZ>+o>O#|8L:fƿq&sgܻ*էَW^-Rriٗ*Z޿M_DVĞ|@z` +0E:5?n,W +zUU&5Oݾꃠ[]#k5=~$\([ZvMg =? v<~e)s7rƇk%I׏+?ngTwaZ2> jVD|u:f*ٞ[~} _`vN%;ye.F8|cX +s+Z-ɕ:X}/KkgןHuK/I +nk߈#V5T7*k UUNJOnu;OjAl|_C#n:pFyASmtgy/n]Ud7č |GuK3&o [Rn+ + +/8>;|' +7f5zv* xml?oܼxgSp;v~k}ml,ٟUh2@G~gr܇ǥ/P)J>6l_Wt{ZֿU :a1g|Y4 +V;87?=0ɝn:?Ÿhf:{ډVȯ;/lȱ¾Qe*>tּlR?tt.NaJ=%梵Km\O=xtDDW3u `yA:6{L/NiPλ '_ ΍uh|zx'?~eKKcTkRJJ|50t.BE,񣭍KxYfCm[tW4~Aqdd9$ώۺN&M(Fq* ~㯄ޝ{,ƴAaE];Ev'Pggḽ=?׺^Ͼ@fH8 E)Yo%Tұ,^ԡ~GF~F>_jkPݷw8-7zI̶o~|vL{ J$F SNP,:ֶek;ԭ^@+v|%t;U譅k"Q۰hxftnX"A |kǪH*ָ5L}/G|pӆ|u?E=|W\@@5J֠@ kL[ ×[-r޷KV&Kv YA$-Tekխ^9(m~̾@hLy4u +,V!x +hx1S0lt[Y80|y}7* :&V1i +QR$x֎{شRJJ|u-*UPv '+uj;Ml;0t:=9v?27{e̤*⩿&o|PR9F伔7ΟEIbze ,#\kSBD~0zZקxy֦#0QŤb=$ Oks#[-MgJ6)|MgG¹͏[1$QI$$He?"iW٪WPN]e1muBT'ԭ=7UMh5E nYwHȹr,u* vv>=LȬ&L +3l]I oBP* +ywYoCQT 5 + k晭3ԬSiFojCfT;C1ME9 n#d~1Rn#ߝZ'F:X8o{޼yفu?gzנ84 ?3ŝ/Q@łԨ'ֵjRh((-xljqvhc^Mjp2:ؘꥭ^g. +[^2jK;~)m#&+eE⠢ƇnߚdëѦD{cxJM +;(jjF5B +!#+2~MEzjA p;/^dH{xQ)P['u3 55LʔRwSq"Q #gZ3@f|~FCTI_;6hǯu" +*gNFEIgE7%dȬW^4Hte-_Sw忯JD@({HpIRPت]IM/}$oTeމ >NuW˞;Jڑ M؉SȧUlqm~j"%Ԓ;|{4n|.~T.<!,Z:ߍ7а35xyqrHa P{ +PXrV~3N] 2뱫`VEWda']뾼nyB٭eև-kRCZ =2ߴ@c /8,zĩRwU,ÂĩR?tZfs +-e[Lj/6`kԩ޻je؂K+Y9_ާ̭Ŷ8} nJdj̺`0tT%lqDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD-RTlt7G;6_}`{=Eho~~&V{`_Z,/0eҰc{{]n^9m,Ps!7>:8[WD:ަ2 ^uuʅw;ĶNoN &DS_ q-E~7=/ 7zM.~GkgJ!q5sM)ݾX&N즥5c;8[W>9o0.6a=zÛ9}dSoLٕZˁ~J5;s+}D˻J^CH؃>j܆O;'>ŧBnCd: y0rX|M}?z+6rִG~r:?S$-G+!n +2aI{jW^Gqz@88-ʯgaQBQ`-OIoy8];Ífko[IΕoVQz\ zRFZ$9dJUU@S(ڍ*w;.1>VJ6N2k3;yk}Jft}6Kb[E G siCƱGylhc@k1dU[UrFeaG5?!bQ*X`f R_76K{Dcuw.<ߴOѧIy+5co`{ib:?0~_#qgfG޾~7>?Y2l:`?_y+0E>i>j>?Ov]0ş/SrG} ο]i҇w#iҿy>ߴ]OѧKZsw#iy)4܏U>?{*=QkE}~Ԗ/-.vkw&ON.{yg~T{]Jk`/Ǧr?~Se?[y+2ܭ} X˦~~geLVenH?YAL?_{{<7ѷLߴgץՖ6$.w%E;軧otwwN{F;q1ſ7[чO-j2܇y(}_=?y(kλUk}~ ~Գy.tK?h.]CKگE?F}7i~o#w#i?y)5ſV~PmGۿ{,tZSc|7{L^6'e~6;tw0YE߼M./eӇJgv~w%?F3?i}܏MaK?F?D aL2?~ϧ|w4;Ϧ=џK.ץs?7~T{iҏ~o iҁ׬mP_m;ۥG6]1;_tw.g{e?,wܻ_?yi鶺VT]l;bTQ0U:i:M>3qn%=[ 'bJXXBT(؂֏؍}@Ajk?Q؟Rc$lXAPJ)MK|%5-$eC_y(\ "Pߙp?9NLo%CyB@eV,~$/KI? K 7tUULua6xuyo1^"rP7zz '?:Dj6>Dnx<}.Q]Migd $x5Gח_O](Η}3v8C1 }ҺV!X°sĝ?Y!b7Qz@T>IoҎpٲms٘Ic$'R3f(=ڝ,W`Yɍ?EKZ5{MvNŋc#բb=t7{NSzĎ}3Gxa^AhٳaW*{jyvTS"~h Ŏwx|*B};x:P5 >3޾]Z˾^~&QԽ__=?sSNro3T)*Wﶁnt!*T\}ܚNGbkiKWPl<ϰt {mM7\ZCUvUP&b|ɘVBTb n'\ooձk k$kOF߰rב:Vݙ7LudUU,'ĚFM +?4&K| ;y%?D}4 U DHgof]]ǫ}1Jw:H#>:ަ=}j27=ĦEUl;*?3+N&?:ڿaS*r\(kԓ}3 )$- jjna!h leF`Ep9WBpuTω?ô[V*Tu޷Uժ%xX>$A~aW}ܵ[K:qPQw(=4&Q[.tN2eidbSw#{LV|r-E QD>gRj9 ɪR]t[T|3'*]m͍b&;:=T֩g @~dUscR@[]Ԓ6:=ƌuފ3 y2/ΪOv@g]R`~R/a3lbvU~i5txq⢿>nbu:򭲒,)dmoMXGdHV_EW$s&$G(g!6:?M 3SV-x/mH#;yU{y/o? ~ݣΡ#ΙeLoaiի$bgl؁S~#fVyrU_|:a+EY:qMF:߶muƵh{K];;  E|=mhM?eµ,݀<>F[ڞ5Jᆈ 73b +sq&"j[|f++YrN hw$`oSSg:_ ݕr[U샪o}rbOIR;vyakaP|Y n/S/U af/lw{"MD? ޽Mb +1[Wjkg[G![-Njԑ/:{*SIosfQ ld@l̻5'R~XeuPEO4H#}K}6^hZ Oy8*eG' ݎ!EaM蕉حT]WG% }OdQyLLk $;QwOem4؄r(~Eb;;ұV` +r*DS 2K{b]gqf`!G[IktkĽ!o46tZ 07& Κlatܟi^o}Z(FuC{3fwxImӵKh_U7F&e?OCgW\:f5* 9ׅܯoNʮjX<20N3%UhOotߏ$oTNGe*vXuhD5y{Go~m^{a R[v~D I5_SYáfQûeJ7#r)XgL`洢]B AcD3>uo)e -k3 b鑂{cj-w,^꺑]j[\N*8dsmiTJUn~zgJTܟ.%v^W#2'8u^-jb[Is/x'f>p:Pö=jjb]uGMWeXh3,d)u>]u,!tI~:-jTa-v7+CUQۓ"f:'NLڽ2xe_x7瞄"ޟ\cJl> u;n7oY~ 'Kfp?I6 ~ יNEQӅ:'_>G7vulNJ֚`o"g=z֪욐;v:A ;&&2䄲by6A񐹗BJ:b +H N=/!͡p[쫓c~Ǘ-y'!WZ2ǃ kcZ2I[^٦DU}7l:EwY*(!$}D{"0:E7^ }гkeWWIZ!jPd!GtLt֬I'ktVT#צe*f?h}Sr*Mw:~$N}[Ӫ4qn&įht;O1kWZl |ςX$9 p˲6Ȟ}n*(+[;s) Ǒjt/V!NA 3l~gًڲq*xv==Z,7o0KU_0t~#=CxEP-;kHP;eV+kzDk#sJ2% (o_yC[8kcɛwW% +Ƶ 39@:#VUJ'-p>k8=-ƋK*v5g/-Y-vbٟӊe[,v!XTݶOWk(~-E* o^G!#+[1}ѽ@.BٽQى +~݃xӼĭkj\Ul͹,/D:}dfՕnG8R{<)uEnuLN7",+̜a#C7R kU1!6uD&*k]dg*@ff G܉3 ǃr&b#"ŷ >R?G+l*Yfrqh@fTqUٶǰ mѓug&bZZvnb,,4>eޥy ^BhuƄ;uD6'"U5& eBﱖcį4% +*CaߏԮBJw!֬; h; +6nL|#ƤJȥ 7Zb$'I${l2Ja( wƻ5(T|f cUwc^&&U +($hxs1wʣ+ФT(O.~lj]҂S}ʑl|eNs #0d .{]EKͶ|mYUdm*٦ʰ`Yp=\oASvau<|JBr7.hk~ Y6kt*>ew7U'}wq(5|KrbIfֶ~z>S`1#Ro?f[~mLC`"+64|۱+(UQ $̄vn4;J#BTC۶Z@t4OּJSz*4̦y@SbTF Қej7iuV>8T= Œ* 6$6?<]3sbXG/^={Eҟo}'=—<+''cZ=[RLKaZ_U-Y6[Z2 ~|omoe?h4śc$7=5Mimgj꬧2s4}) c;P\u쟵=ck+\Z; +qd!p^~S'Xt4j-fOM`dBҗڜ[n@2cKvSNB9Qr)`$~AM?j}]%)Vpʂy{$G7O\TfC~ >򲂿e=9_ rM^`Z2닲fj$'?,\c#prlȵч {!N4:st[a/o&v{}8^*k ܬ|qE*ޢ ;%X}AGyM6){krl;Vc0#YNd q&[ג-<*|i㿉PI>3&Jd*'5X~3>3_'.~N\x?Y7-ph1YYY!"¶V #_O}aiƴEz]Sh|;=o' NI W&_ִ<{wWj/y_;KD0H܍dedX=H|hf6m?VƱN4Xw_=&N3܂7 π?9}W3"kTqJxwi`O%E8E u~3O|V4,{21k/>;+]u;UEuVl>ܦk}orQ{ҦTm']߅of>0 S[)2bS*Fka}Tp8#|xXS+ΪNDzNa%u~qkuL0q.EV5ϣ#z2d}rEm|72־4{G.dNgWϣ +Tv2 +;5=PzUQ˖C1z: p[0{G5}޹n-Ԫ0V/m| b LN +S [g(Gc"rEߊN 0iBu"SdYU֧<a3kO/J@{{>WÓԯ+`Լ1=5{d?Jb5;#&~=¶}=?y 븺.rX0AY ws\k{ΉidO_A= $be:TiEoǃwb9 u 빜N04dYS3qxbC1*H;NVx k>; +UJ ==8݇a|=fP5CgɟIW_gZ8wg v'@1o[EuunH;^j:;)38?=g>5~BQׁ~z`Yxakk"Acgo5/b?c3DJoPO̶؟L_N%esSL{g*- N=wGۇvMo):W5nx|WsSV&{%jXjW):]Msu,vT&.V6G3^C_`W|Ð;cˡ^u/cYQ){+ W.o16ȳ oj(t zkijWOvoaKRVʼn]n}k_E[VޘmA{O:eb#mk.bF͞+H:!2j%m*憞gl=,-ڇa+ב:=)Y4)Mvߏ<'WcօԆ#[;wpcjİ~/gSCܕy, ?{v3nDYع# [HfFlo%I#}?hZ6y[}U 1Q@#@2WjUܛgCŴ,Ț@~-3n3bΒ(oL0&oRH_j+ԥR d h{8q*r+aw'R;#jMbTu<}{&&Kt7:H RJ߰cvazmn,2޴A7ZBj:,v @[+P^D&ٴJOHd:V)v%_j,bPſM˩H Bvl +\T*:{`o{'[{yչ^Og^C[[LX@DoLU:)/h,I@rW,`csPy|w{MRO.gZUV( :f%H'>S^ɣ'ۉ_!jJ 䟏rLZ=N`ɓURj)b? hrw7Zn5#:rVL[>Pne }Mўc۲vxk99*`'uu<];%nqa1 tː/ը][E唱+Ā|yJtSc +eK $jir[t+2+r %*ܗE*cm\1oQY6eXc'/Q%]aljL-ttɴ )Y}L@$"_UuvR- ;=Mzr.Yrj.B3QpdejeG+Ƈmk}vT;?Pn~B#]L}Gy-G+smu-:cٙH]K˺ [Rk~|L"Ý1%/ON+߉1Byt|۪ +RWr9bGROƢ2\c{7$@VeVEO=vb>q2 MZM;3>ݺݘm,b@nz~C_)Z\9v)꨷@n lt[2uSw>66~:;vdWK???IoX4=;MU +4[ =uYNg$\+hl)uEF' vA_dq9$7e[Ks7jjcNYzreL>uAmOִ|_UӲUH`Evh"hod:U{V5F*|_٬N3+ +<6|j #.^>m&?KZ(.T|bHt<˨Zrw |%ӫ(?j։B6>7{'X<>cu5䵥 +QmtC2OFѡ(W +hNoe.k6z5Jx%T]L7t{*Blv6Zߋξ&n\l|dֶ)F||t:V:cc +uOɛ1 5]Ĉ5z߽K2Sk#]}ـC?PGiOeZ U-OdĔQZVQ2|oL9BZպVLA;Sķޗ]+}μ+~aVu+I}$7YN.*+6ם (:ru$Z:أ@+}dq[ IJK'q߱ؽnl}V-(_R񭵚+0^Hw~Jo_YGO]:OTҴ*U[~A=hvGZ^%٘Sj551zIƨ * xA7OoUA<DnkKH)dmh#?ׁeT xzs z;=ߍ="zJOֵK2/gcUZ:=g5%I$~_v^'^O?7K:/e,cPP>{{eyyZi#jfyF15-iFI yο ᐦI@S~;^}l2cϵ~Xdz4N.cǭ/ןLҌʳ*Y@AR7J\`C}@v,>$e[f5xaDta9i*_ q]|kQM/0|#@hRDkr' 0{ܡ*bAl]Z<d {,|t\XP1/8WigA GM?#'5>U[S{}bu+en9"=2'qz%3:xeG sz0{z[rvM[;j_8IM;:ZT_t~+?bhabX]m_{h#ľɱ˿H* L8 jO J3vb4>_3cJ@wÿe7'LLe%©n?0cVOBRM ur.3ZAdTeJ?$ +ܯn(JS@X;nLv'Z.¥^E@T8$˵|tI,lj +-OCOM:"\˗QbaٖħS)_/s˼سYnMYMūVPT.\}ыюFNBvߏڱõͩk@)##VR5Q }r>o=y_NhT#JWZ񱳽r(ZAF ف~KQ~JܮP*GB4mOyg,+c-1T h|s.9t^&!w>'N/Wr{Mjڷ ||= eԫpeWo$ ~wJ*2u +t?} aedd ti| vԅn'ᑘz%ǩcXNJly>&L-ZkPKz(z3.;تxot|;7Q¯[a*tH;cW{VA;^,ֻ+\ +^<[;%r TwnZn_)7>f2cU#+⼽+__2]C*gso멡NfE#!IPY}#;Ko-)]xRku/)d=."{3c `ԵNI:$I̙׺ըDv_;>;Η:v%8Ws1uU~k~0ф+]듰A؉c_DVWeS%kXT|}jlL65jf\>K|(6X裤ѿma-noeQY1 +~;LL3DZl]0}ZꈣeQh:_?Y8]$*جݼs胦۫F]6!c:0GJű2ub +|O3F5}D-f7~( 9a]YT(l^ޙ++Yt`܉3> + ?J{yOӉlߴ5.` o^:tzk9ZOҬm7gbf%u<4 xu b:TܚQɴ<|{ 嘢G!`tC_YEZ$VYYU >^>s{"=|o԰ +Ш$v +;D3t >%~ue}zj{~꒠ۼٳ5+93*!Toe˯:mAH=K2X<>:#\+.$h "q:5b[kqW~M`=}`~퓹(*g:C;_g]ī̗-·)f!y(55!Pax ȍjYG\ǽQz)U}wH~DWq^ӯ5ּ}~? ׺QӾэɽ^"PH` ']͎M7}ZVe (Ve8ӧdPǟ$Z3 bDloD|^ׁYwf>?Mi\kІ#kTlbZ˿.*YN>fW6_QSD0:*AGctL |)oWƫf&o~2Z: XT#kb`2_*Kr,<ikKq_jOcUklllv# AsWT bÉ ށqTom,@7ih=N->̻㶹lF~5Ͼh[,IK}.DzOĿ'Q}xH{(8- }Įmf!n~([֏nr˘MXPav|fj2(imC,Vh~Dtz_G똪)gEJժJ]jYր$v:B]eb -v{ ؞FO=I0;}}O֑h8hf鷩p-5%YSPVI'zםtBB{CE}?* 0P;㴂?bRrjWwːޟS(ƛpWj*|`@<֥f1Rlf{FN]3(0F1tA=>,uʰt"iU]8j{jG *`53dzH1D'@p`j\s[)i׭lqyΉke~uLYԜ'VccY%fGcwlnD93#S5*{œ=R~~={\krˢԩ,|Jf^Qc3-uyX߂7%۹Btv*O&]g_tczC5ah>Z2*K4G4V67!1q, +d@$KZ$W]:K?;5Սo{u&R\rk5z/Q~SuN?}&O5uJ"\z[׃6w)溞v8 .NƁ:ޤe1}zmLeP=U +Gǐp5n iZoAUGtd75zcc;7Kw~߰3cfϤuVGF H_how)ru޿>=wV +94|H[?%WVU֭ubnG$dVKJ8i.uv*Zw7'ξ3L5ע f.e+y1_b[3(1# +473SɲҴٍ`.EI x?jafNլvv:\/UqfWѭ&U +Gp] YW)9A~Z}b;q,g\^stP7QUY]GGB6<{HN~wQ>=T*N~ͿX*Y{kz L rn}'`hLnwy'M?!Ud!>6_q> O촚'cP6$&%sŇ1Wo~![NX+aMGtec7b57 2+W^ZuS[ +X,wt*o͝:'=>LJ?>C9nMqʪO@~]3gګ0 ?Ăv9Tc'دte?u:׺O>eˊ3J㶘]~\e}[kxfy.KZ؉X!}I5dw?XüǏbYJ;x{ R8>Dl~쮾@-j 2 +H$)B֏!*WzeUFUEUkB_~:eeVuєjF67R~%]PsHذfJ8Iasױ~kYйR\lbmHR7ȣ&?J-c)Qaĝ>[? 7K||t.O v>ր( +>2fPLV< Uc ZkM}#Z+5TE]5hTI*o);rw%@A@]J tvQSA׎x? VEe(#FĪ@kKZsA@0+P{?bQh?JU;5z7" {}2-Fo7:Fމ!=^YرCL8v_#?OqO~g`{eeԶT~"'OƵ2m4AB&{!+!}J5GTvPk~#]i:]V_kzrzab!X䟃)@0XJ`JJ}%b7c}(iXJ n2̬QD57ܧip*te 22'h̺Pxޥv븗|;@ec|J8%GyC)ك)nTwܮ(Dtܮ; vEʪF~ +u,K#)#߃yE[ґ̻#{+N$-?붻q3gdAK^ yP2RIP6<t?gG'+%kHPJpۣ2(>VKMٜ62]}Hm%te%5JʍjhP%@)krvjSRTJjܤLOOPʑ֥`{F*`@w.F)+JwƉ R#N$Ơ J CTXԡKܡ C*A0uF'Ի_ nQFPԨ2|e%@b#oBV7.aQ}(ܪq#QYPJWSGcV"!L h46|Hُwj<{k]؂)u*ew\xՙrlU;:Iu a(>iSڐ{|bSfUt;f ք-}EfE7T:!:fL7cQxΟwf aeu  ?}K܇KɗG`|ijZ +Hst6v5bu U]r㿀޴3euS}*AVzǀ$~e.uOu@5u +ܯ\k4YX}KWUzP`G^:NkFTx}f=~3K_}Ikc\t~;XX8ݕ8n#zoĖe%oMr]`c33?5GWcZ67t[ul\vt{@} #Vީ-r +|?52+ՙ[ۈѯg3{#2fPatYN1%+cqB=G?/N]Y%ֶqaS菁ԭcgFbc{bt ?^W|Jd򵪗Cf)y?@fp(KI=yi=7>A,h߉[}(~̠ :aĸczN_DYM\(_+;־2m:_OALzYF4TU*DZ]O +8GW'vSw~#;gi:(lk9zVr;~}}d%oU(݂Ó2Guc<1uV֭U ;{wR[^X=,qR3V' #ek|tA'f,S[[ٜ:1ՙy5N;u)sQŧ zkOɑzPdğͧ,2!FjZv~7)6.X<:D+Ukl:?IiM-* @ _IzvMket2Zi|Mgo"J֫x{0 +5wީ) |>5=M^ҹcK_Ȏ7.!-~5'EF;!@>شw:l{i9 `({0;mCJI6[POS7!1){fEK-eZB2ɐZQ;#;M^'۱Rew`y!rԖڲFķ#&4-`6~dәVB#/*GmZ,EEV, _#`y#`oJ-z 'OJ7WJK^:]ZwYձ*Z aO;w[1@-{_IB@i_#!y66σsj\]-G}sr># zx^/@{ymV)4 {hz?YoKɫccqTèX&Gz)|K-]=;!NɮW*X&dH|旲kZP1,JdV6eV*lGv{M}kvT:PoW@h`L!9\ TޅC/O!WHfe4QoOܓj*t漹dvލzdwLyVUMN0KZ#=³ uwIė& Bl-r|:֥N̍]H}4rGHV#F&H_MWK+tC?i=_R\aȂ}u];wiou33콺L(-6Wȍ@oؑf>oXa +#ɵn-v+".3<hhjDcCz}haQ0O]xy>C/#ʴmǑ3Ij>*۱xk~vk{J՞y kiΫx|딁d^Nmºolz]GoBL.m7\ϴnV@IWҾ QEPZT +RGi֞%wJ$;#SU9S2: A#u5Y}*+Չb0>.'띱u&1= IW5OGaفuȿ_1_"{&tݮH}>YKUGb/[穗0JkTPLvVh0Gc}~s=7R(4#>+;b+[,Y8< a4ӱ)!+gh: DnWtK+)M[ y)MѾgg@ :ىMɫR{w* Vj;k Eֵؔ7颮LJ}OWN~9qg[8-xAH +ڕ\JT+Outv:RS"QG ?OXUo R(F`PԁO 7=Ew,Em@Yn^nUqV+]ϙ{q;|$ĥ%Aæ襀%A |b\{O7=⠟ԭ Vےش(WE`PunQ8R֊5JRPL=7Я v>R!^[+?&_FiLGhJ>uXRYKIDωm~jd9jFZ}&]Pw=G#*i)L}B6?.'iNwRY+b5 ɝTIٚ6oecK޴2AInۂԵ(SFq]X܇#]GctXz5=?M댴Bs-q{"A=X}<]G/Sb8=Յ*ݚofOl*VbQWg fk`\'3{Mӱ'}~zbۑIާu_~ƥ1jJTUU@4"Ube5 IQ~`U !6ϷxLZ+FDPє88DY#D{tG :^Kf(8W[ED8k>!+m 2H?sԘ+}C.8J1ggt,JN|F*9EmteUBMz>&"Tc >B5c~~r8v#b9-`޻$t,S G_}9;o^ :'J$^ٕ9 \[neO2@@$7&:e5=VqVՍȇ$~N86B`?η6F +Q.t5=BZ؏PJ P?xn -=;2QU (sU=< Zlo_}8cӭSz x޼̊ɶuۼf5VR?*\vT0-& +ꕺǽ{k]ljJ:N,V3v ]y#ZCxx5:UNE~{"V" HW֔ϣ48~QGy˹)9_}3IʉB#^QW༈N; LZ5XoΈؗ*cZOU}3jXC@QCGv޺p^°@"L~ץjd)^|&~_Iɪڱmﶻ͟(^JD)я}xڲbG_=3#_ BJ֨ɦt\wu:Tm);1x3KQ?" :gtry?=MnmYuRZAVV$I +Z1if(Z4w˰NƼg8R~`*Ficu3\:r,6˱?J^LH}Ot׮? 3.@WZuƱc`Gꧨ\5u?B< CV8dB1 o>~Q^rA"l_%vPG6}1,|O=7S[e2lr55A;|ɖS0Y j~'Do?#H:u%5nidtޛ{CE"xtVG2ƻ i +H84 +@l cgcozk,AaGL]K&j`W^蝟Ԯj!Ć剛2%>+;Ӯ}YWl=2mA怠enk[P}'uRܻec=JMֵ(`|]*Ι^lՋjŻ _օTZR\Y6uo:?I~6]}ZZzVRHn5z]录"CǗϴ? 1hlyaU(VZyl7-aF{-Ǘn'޵JZtDFxkdz #G]{A(/!^CO#zVNnE +\TC +|yet"g7pv=X;{_KԕOQkr6LzU^*[-c/aW,eq׶>+zNktZW*F ᄐ|&~ff^Y؛d*Ty-γ2.D[P)?Au~԰ޭ''wҪ!;==SY[S2[*T Zn\Cffyk}"aN? +bCv;VNs21Ty@!N~7d_{Tʲ\\| R>#/tdd?m;#ϗԷ/b"qP] ugCEܶ3p|:rEqxOU C(u:ْXhRm%|3ΠmSP-`~~eۖBUGҭޗ|,?/hSs߁ƾv yb7':}OF=UJNǺ +GMP-C9S*S;-ejƤ0@ĀuOssЈ[ccݏ3[wSRmlT-Y?fGK˳*Tqb.GZ+?.EdSmoܚut=Y^Yȭ)ca~-w͎lñjQ|xh2p~M9PW玕IRX;}o)hŻX2T`Tlnlf]]6a!%d:r#gﰺ/;?gq{ԋ綘;1%@xԍ c?x,-`>@;K W cP<G=!iy[fؗlij'sݘ?&k2֎k:k)Pzk@{69$NDcif@H^DSɗˏVv 4v5'R.}Gȡ%.n,5kVn IJ8^ nys[@[:;"?~'Yqtgf4=?b7o/JXgb>cg[f)U֠ +#4DNrf[ʻ{hNrnucRcSq2~1|)B>QorA2IwRҿ1 _jS #qR=5P\L_)R;Ac51*t7l}&B6|L =\FeofP %I(? 2\Td*Q=?C/y)x_kp`}Fj{/?ͽ#y=+WEƩ*j>kmxt;5/qjXOv.&F)=Km85/m%s_$5/Rg1d?"?[@o6tOiD6Om?)PeH?o~CQ5:ONn3(tJm#'`rbJmr?bGV#)~/fJ~m/b@V]? ]? v6O%:-Sce9Ҵ6<Dz+\~{KBcPw¿W/y+-fJ~2 -fJrv Ӆ_$1vy+%?Bv꿼 ]yo)nT/y?Z_-/qا~.fq.fp=.frKAD?$Ʋ?ce/R?N+ГvCodn9Cy)nY_qy+fJ~nC+쭇uOЭ3_c)wa5~W-wa5~?Bk_/fC)_j9_e-G5~T)wc?Эqy)y+y- +] #-z#/z'e?B?PS$n~>W n7~ +dv73W%?Bv_ +dv3W%Bi~ofGRBP%ߡ Ove%쏗ܗfn>.?B_dK>?bq)(}ʏf/brټ*}=BorЛ?$|G)aԲ5W7&:Pk\dY_W>YN')K? _9bKًhg?5e6 7~ ~KDz >دo>Uo ]~c,_W ?OGܯYbqاܯb_?1gn?Cv~GoZk k_n}:(.#H6Q DD)j"5+))PFQ)DjV"RVR""#QFQj5FQA]F5j;ĤDJjWQJxGXRd2/&N$I#@~'5J-JzwWu {萤iN;"\ޔÍQd=`rncz3-eHy.)qfDK}Ecz޷_=KRhWG +}PH9$~g^&LNFs]/ɨӰh6k&O8ݑڊ@(:n=O7ԬjBW7#}䌬e7(,V^`5Gqiz[2qەn :>Dږ^\v7}zDDDD[-w=Mخw6VZ+|b&V"tPKpPTKH56mEu; #b]YkصdJFbPnԨu(nJН>3eX0;[u,~P!t@t[cF'ٕIXz]u6EPOd Yjm胣K""&PTtŹK*4f2(X/ru4Uc>U쉢b:Gaj܀?9t0PI ;iu>WJ42 ΔO+-{,gu J3o-\n/%; _1(.F9]^Pp8V|:aRzVaòtW{17T괖EXCIOc6Fbl8-q*8YO4H/~Ӻ^_EmXHx)c cvߙN=Fz<zX >ZHK +XT[Hl}ô}FϷrR?fg>{$}ձ$br_;G&XhmYlrXYHց:ͯgX岅.Պ#bju:~]8ܸպ:Yk HU:`*KnNSWMI=T7;˰zEmS{61n%U}vtXLOꭊ9 u$ftn'or2nԠR:,[GGVv09dz-vUP,; J﷉nEYT.@u b}80%ZOTo:};)RVJQWXsu-VXi)ؖ%PDz}flho}TFر[Ԩs-hlfNպH{+2]TR,rT"VԱs-K]_ Wǖב!iadwQWڤwgDh {Zuѳ@dy4fd5VR@VD`r=uLnOC[KnO)$>;]''1,_ RT1$ƾ/ϵ-6+fV_ _#-V 6Wz/pF#b]T=_)֐m[Trx>ę.Ծڠqrl7aaU G緉{I>ƱUhՖ*vw:R;yfK̸zuUu+@x&l&2OO{GVŠU,y~t 22j*̶)! `wyie鈭Hu ܻ,B~W[u+ÑgC+a]2{D:*"-%ekUfQF@rʧҧzrW `gT [`o7Q%2J)C[ݏ%#}?vcpf U]WYRsldĐyv~SO6LL+P˔]8k'`wu,<~(dՑ Av_N?)K( 8sV ~.~+ װn&HkuQYJ:`l +ヌqG[ؿڬ< ƿ<9vzRŪBޠF+ɜwZCGQ:YUP[+)*^zN Jc%3sL̼2:KuT5VֳÛ] ׉]}T]jrm˳y49=)Ǹ}nmQo]ꪚ+ ,O/-3a*8VyVK.GwLnRV Aemwk{yfn>8%BT._a9}o/6>IkYUb;TqߓBf]i2.{MĂ@u#`ٯ\|QKy/ L|t~~%=gwS h1b?ffnn&*PDR(Y}ǟ>Բ(UPj,#\wY=:ҽ\nDcŔ??ܞ}Tȱlok]72bf-K bB޻gZ=y6 +)i mJ3[R }xiyv܉fΫؙUr+-ꎻv?)-!z.xzپˑuvfc5(ꙝ3[rԵ`i(U<  ""(|HOg_rhzw]q21Ʃժf{ +AV1{9Fn-XHS]b~\;xYnޢxi ڹpq}[ؖt]F5]tAU񩧑V 8vci՞n+̹\Z2w)XjT tF㼑'ьZ= s:V_(ՕbUݻ*/'ٝh15KAw2f>VN~G['WeQ+DNMBxٮKGDv|f}?[6-H5+> XZ?fe9W Rūb"IkZ*~ |=>oK>r5c3}r6r.NuV8r1- PG%v?9C?7jR<{ x&j{7p:سPm`WZ富^oH\*ҶZd*od(:::縉˚/Ab,>>z #ZI:Z3vG,}!W +{ j_zU 7(DK[qՇk@l*=ͯM/XoT%k8:Fr2e~&ETяaja X9P13ٷdc2_j7/cΓOϿ;dWX`vW Aw%pu޾//f"&G%|ۏv:/kftjuՠ`AX ߽lmoZjO< : ȄHMo@J2܊+41ŪXw$ve~qMjJN[,4{w񘽘= q/J! ^r4i{9vN'Q(3"G9$Q㱛]WWR r;N+ǗԝHۺ>oPq1g ڕ*W 70u`t|+KQumtj)zatnl rYKzfu 03gkB>iz~_RLq+95_fPMme303/꘹Qs9=7c,̻V H] -o8bnӖ!N_LSzuUu~,,,]UP[@w']=:c} -ə+ +zlo^:TA~hH޽mѯS%nUc}++.ai, Y&ˑ\Oԓ:Ǿ-(x]T v'0/>ZrHnn{uy3M=53OKE\Zʪ\*$ƄѻپgAVj68p8dkr_;3;-JjՒ]nÃ{Nǁ%ܐaldcb21n3;?; Q^IP[@ւ==_ۉÕA.TA'=K26TR%b#DizaXޗa,pkŽ5.&[B-V䀪vtAA}ogL@ +ENG"ZA +K[~G ?3;%j&9fpm< +0活ηЅbVUema(vSpGaWKpk{;Eޔ \.0rLwzdf?NߗE8NG#xiBq+rX5@h1*Cm, X\v'K[}o&t| as2r żQ_6v3tg؂ZbSv-Ŕ$HtN +Ubmfb{M$Nfo +7(רyVg5]k`gݟgU+o|s>Vq.V=|qzyqqyjjnU{n\|ײO-Mz~^nm:emȷYZd׼;oHsISOW;0o]ݛ_;+/&?fkY˲C{]WfSn9oB~ ~g;3]ZҚk3ɋ/n]1Z +&6±q$lV9Kc{]Rc6d`f8Jǽnu67r]X377/%RsXFw( ]kw4nwL⚸RUCc+ZMt֢ٞsb/݉x[JUJTVM7Mm/o;vW\)JjƼ\YؠҮ{@k=3[wI۸޵5W&E iPYx]=M:&u}kTg&־S_?ga`YeM$B~^OUe޿b]^:쾼:A#y#=C.jvؠ>f""&;/UvU,t ?!&dS"k, e~{k}m͸Ա!1Z-u%Pd ֌ڈ'CsZIȮj-aq:;>js: ȱ#~5#D=H op2:v|̧>[+qe;R?""c62$X'@w""j`uL^,8֭}oa;͸MfW5^CzOMǢƺ]??ڈބvW` .lhV"""&5ڰY@%v9|2+#`Ki12r*UO{R(@5Sη,B>"W^y1`]W^SHc="6N$4F1͡~# 3,.Lmz3TUE%._xoc@>3w;1:}dY53hl ^OB +$+WiXrl75[/qbT2ˑ2D7㽵:@${*vyx ̅DW8 lo>&.LZƥfE. DK6{vVj3ЮzjHWR@mGS.܃bWR>yCrC}~nWL鵄"Ign+oCgК؝e0d֩w-^]wň%TÍײr2eۛ@By!Rv~ZWF==s_yא#gɠ!9P`U{3_zZADg_x쵊:ׯ/B҂'7oujMiciJ?-7.+"j/-e@\6a V_IzEY|gxgu  -t<_Y_Ɔ`=cBe}p=#`~( +΅Sf>c;`pG5\{jLUԊd>2mupJּTLv{WZaј%nl{ݏd0vj֚vF vHL\ľ[l/"L6>;?j30oz5bFɩ~@ogCwe-/H^Mk,=&u_w'r<:m®2*Y/lPGnumbQW;-K3ZMlUmQ>UMǭf A^$g=C++fEJ}gMHFS2~_=0S9q}>:}|&jr_UkYNCh +ij{읍ngXgBsjttF=c>FK^.wԭy7Cm1YuuOm ʲ6A C^5Std:"{稺btLlZzPKG3-Y5~[oؕ9F4YŠYC8w8p: Fe^ךVN5/5|>I`>UefeOiq*âVQ)nhl;J1鹲)eҟMv)@v/:?,݋u5fҵ ۅnWD g/eKXVUæ?QLgqSطVr_M0};wMEJ9@ރbI@<5?Dz]H;ZGooZŦ}D˩RG{n.VFI-N fgP݀46v;J`u2Xr|X'vp51/֭[@B +5|to'#z|֒O\xR`>&֪tgn˧!(k:tב^F7,SzR2'U+増k} +6; -NvekϾƵXP/@I_ͻ&)T%z+b@gCfP1,vA;Y+[r밂Bwd^x yڜlWEvA#s6UNJ=|,S|n!ՁvM/BhX)oo2nި]F_{*Pw>9@a!*g1 ;%;:~`?4(gUf`dd-L=Nei}1n|KzE9Υ֭WU@Q +˗r{v#yy$]uD[ڳkjw֌X~7N5mF^Ay~%{kK/XuWqW;o ӛMO UUT @#gпQԲ0MY^ZWxe[kZ6)73"(7VM.;#sٌpFBbcfˢI +[zSL՗v:.7=mN0w׎u=V ]?fzv*pb;+\@]ܑh;eٍjޑ{Nq tI$fFRYo'(#0SE[_FMޭ~Fn_N<djz]ΉGyVNV5 Vg5, ߟ:vtjkN=u +mKH>쮫Qbӓ]s[_S-5hV=8tų&,5v[ZφR7YqP>@x$/Fk%恵^]*ow4zN}]#a݌cۘ+B^XZ'Q8vX[[:$M̧c>-cg/YݓD1 Z̖^w=ZSBQ A;.~oIeh*Pİ>7efP[fXkU;*ƶ~YGKͯ좪6hlZ9NNttT%-cscġ53_O m kaD8]{,5iEY 72E%z@3lI +?="n䭵V_Iw|&^̚kh[{nFzyȎL31lkzvrи? I͜:5V:Z@,vz 9:m@y}c+jY]eX. g/G8r=Ok]2/?_JzwZl5XlWrȖ#zmsk;՟{y-i_e^Օ|vMt*r1$b&,@W`TuV֣c5*IGz_\(TMnxua.{:3}oh.DڒǵB($>eyT֊nJ蚔=ö+ھy,C!c=-[eQ1HnA3#zwAet}=Euv.N.VM92c^2MAe$;i,6fWMoen +^!y|Ho;Kj-r]]n]W;3cg =d`q L3>=XY +vb^t_G籅;<{m\@ +TU~r(`g7 gޯ W_K2:e¬RqGl6v -y rol{OMkgǕlFr˷iӲ3cJeߐ +Q+a#3ޫUc?gP@Vq`ݻW&5N3B9;Wdz8>Lӓk[CYfTAPl8_ur} =/Ktv޼zZPV1Qh,@+փ7=QVJV#q`{hAj{v5o0aCYAIs7/ʤ>E%Na nm˼-7(LG/Wrd5v[{ wDv=ƥ1zPȺ׺F@ͥPtloDDDDD5zM#Vq;^=>f|ldĭjiTh|O㿉?LMMXr.:%&-iUjQB"""""""""""""-ul#5s2O~QMLjm'g3>\g)jtY@N=)CHg۰ 7'6sz7OUk Gvf:ߺߘK:^$ ֳ>Ud nAwP1Нȟm0KORv 8ngkt dvR~?ՒڳMlE[] |>5dX+!;A{v66~.2nC}qt*X^l[$u,lw^8lr>? ͽ,omȶ|ҵ|Kq(\o.ފcu,e"*KWo[0߅+6qR@ >s%=W!lz}B<_Q%i]+`%4yrl @61+ʭm+ wQ&ŭKɎg?<f9 7}|.5Uf`{ +[\A?N3aX}u*K@C K0_S >-@ܶ;yw$&B-eeH=k9~+ڃow`FG50l"5_ -Qc>}'VwC2y׍c& >3VodOUOޥ]K D0T,'xXUH l7NUXY^GuT;VU.: o^$zU~=vELJOm,5eo]q+U#4Oi'1hS}yhyҨ$\z? -?ZW9"|u؃,긵T5Մqb|?%:,5=2-A>?f|$zޣAzU2&e ̮ӀX@|Jgc/R>bmm\~UêfR*HQ5qz6mUVt[c;JR] {qߍ75r6k;o7xBu +A>;'SfZmW* ;jid\;Vڪݻw:߂m rLW k9.^e+Y!0*y-}v~07ÞԞ?v>>~]W+2H< 2roӔC!T'6֥ ;|ؽB.AI 6͘^gsU7e-wZT~1pɥg(ᐿ +v%{l;p:imfWr%n?p30hKTO\bUul+18( Qa>&V-Ȯ2v>"FEX#޺}'v4/)BGrx2cڮ@vt||^>sW[p+ys[/:>+uK('3t|~x +rRp +v f_g88*-b0E=Ȁ7܎zzSɧ׎iT;6bx޷z:zt t 'Z±.EE# q%6(nJ|)>?ku4gSzrF˿x|ct4欖=J`7gKsyXݍ]*5aݼv7> :u0uWH1*{b>dL[l05aLn`n ԩ:wtT.Gp +ODDD-vO`s\+p:Uz!2+8V`tl>]Tg& $aEmc˷7V?Vx%.]/iuGG1gvT<:[[Zްu~>2ލ-*Ľ`eb4~}$dzؔbcDZZ_6bq&w}f26[.Lߒޝj=!zZtÅ ]u]YwsIth/=Sx_mtR,ڛ]yjj6Vp6{ɏΝs9B;yeha+v$.$t͇-W#sKd~R0`es! QMqb;{ZM&IP x x5jtuIz]o3(D nlW$Pf]7| +0#GaDI;)hا}:`G&Q*6˼ɧ̼<(Q-k` f)R=]߄onJMV~NB{}[9ojJm [Yn񿮦t6\]]nW(Bo3'A=Kr,Fį9ŏD٬\k[pXHkn4pz&f&~]UƲ_v(JbOqڞJMm"nr[Y#ʭzSbbƨ+=OwJwZ=ckFV8酎 +h6*l4mZ ڴܖzM05@+}O4C)oE!7ZԥBVod1m̕;b lKŕO|5FM}@y\ܺPϭqRmᕊKȀ$:5c] mmv1;@=ɫI_Gel z?3ԴUku@F&kcWzb>[MJ…esWe:>JVe zqȲqm1'7Ѝ~K朇\;Q}5Tu[ܷǾ|A= Jzk+ߐ[lΝytΕR;ps>OHMS~Uuz>-efuZs2+ln`nE5^,J{}cGOWJ挣l':GۼLk`DL+ |cN>UagH48:B`tgFdZ-Rb*Ƶ&:RF}twccFEj[ӣ=4W$}^~ XUU;Ql8Y1Zu{u ׋K;';J.Ƕ8~~#>EA!3ݴ ҭYw3K3+.^l>j;>S.uοXmOH#St33-ت*e%M[ O1t|jzgOǺ[)lmҪնr~#gz> lޮt[9v Z+ r'[#7:ʭ7dzlň AR$E&쮣V[ڞIb-b%:*ePĮ]Dǹ<(hP5#M62Z*MǛ;zs_CU gwqoeEjC^ֶ,Fʁ33i>S=%5 ̪_n[e)ju >D?`Ԗ/PThGP|K$ǃOmD ~U!2˱Mƭl%Di"U .|-^ 1*JTEU@4&C,JRPdǴP~#_-%$ A>~fPV?%%R:;ܻQjR* '@6~=@,\zг*(-ޚ |5 XAԢV_lh+*QUGK>BQK4YAv6d ؍=@hFC~ħoe*[uAl|{~pކ o>*֬C6<wCR |~W;UJ=)f(:;ʪއ+Z׊ ԴPzUv{~5+ގC)#?4rlo_=JyWZŢL21/>0{ƾilW$ Hef**ƫ0x/ւGs^?rv[[q+T ?.G[Ԃ>`Mk[r^fYKu ۑ]Wdɂwz)  }μ  5g4oXm\VڣuG0V+${M\b\{>okEԊ"j0 b֤䲼$#q:: G*<׹ywoCE$3u.0zRg MbSV-mH5]V.԰B:W|O$of{.Xy qN߶rv +>l@bR|~Ɂj >Əz>yj܏,胯PV +5}l9rخH;ԩ'lpklfd_[QYNqU X02%b+r;;?xtӄ-\[%,$y$7nzV-uy hN}NЍ$:N_W|3+hbþ]7b{B؋htw/A̙vu}UNmUcmN9'](7Z>=}hH{ pn>tu'?t-rzˬ Yl@L3- "),lDkj1:~a^MھĆPKQU}w7UEoX)%RxiҰ + y|;~I?V'DOR+f9EX aI}.:=\#`~FORU^W ?N9^"}7ؔFD´G 9! +N4>r;OIZ ^MA]'ՎSU|*B*.-_MH͞/&zط\%X?)%=y=;-,@{NRGbye >slUwA[ %HlpI_Cei fe-{.V&ǢŨ̠y*@;]+'? VtU*X- nW7_֘xꐄ7k?$/ JM5N֢"Gn*kUUqBJ[1+U/d'5QGQ |1dt{Zl\kڂwZ5% ZUTjJސ6ُo{S]8̊+EFKP[ӴJW \ա~$GJT-P⁕W7o?klt V|! #R&nMXoJ=<"Bʾ +kK20=vRGcw3{1+ɶsUUJC*,O4G״aYjz +ەEVf_~S,\{JU[lnh|WScE9Зp'u/o{|f^>65F~=o;)6~=n{]1([D,?_L~ZNw53-Gb@'[Xȶu uVrUVi:#&:-Wu9tT5AoIӓ8u`wvE8:[*ZSpr(|XYx^!| R]ʕ݇"9hl|#ΓoP5OW)kr{x/ '?E/\koWrw[ +h|gGcu^fq+iʿ׳|mC]T +fHܮWd4zh +O#9+劫LRn*E*]5֠%m#o5 +ZXz Ҝ?u~>Rg;.'&V+زKi뻀{{4Qש! +z;) +rGRp%YK>%vSa?"v|rCTy}4F| ذ Ftޟ׷]gN@CJ=n=ε>Ujw!N'ۿǹ@S=݈&XqOro];@6#?Rf!4M4}&KrzMl+`0VJbޯx$Y-OLr/Eka*S_ X{-u +_{ הBok_'2+ t|{s +=NzC=Do\ܺUhJ+[6ǘ@ܺc]UH@f>MCNdh;; w1(mJQY~hA63ѰGM |[)pB; w#dfLS[ǶBTPZA݁G35fr@b'Cd o鹯1sX=+0~| l}_0\Ymf@Xq%{좜(\†V1|L4K+k…Ehmv6x8=5T7~J鼾R\o^&יIwppڙGJ_v4v|K?!z-G٪ٹ2p^LΓp譸_v#Ԏ@ʂu)K- !C(!F< L]ԣ}e mv\zv1uNjV9 XjJB<×@J)(I`ր߻:LJR8fVj6 OJţ +PƎyW*VDƨef+}fGR(jau~5-xzPx +'b! +Xlf7q pv}{m0(Glя^*B[WP>WMͨSuj5ֵl+Jǩ7Y'++ZƑY++O_zG=ky[_G¥ iR@Ww!8Nw?  +*k]J47'('{ޏmi}ץ ]}r:p:FKO 6/FGA50NZI=6ӈw2Q^*B`4;:^/PO9mK26xEpJwtlTuOve=J],5!zAe &W|=4῟krqC|y([$nGg:Za )@w{ԑR({Lf&Wv49(G}~;Ok:z59wPxe<5lrRZf $&[zeTںSlؑѿP +M9ːxZ##וGSpGbz}=;av6bUm vBatF]uɾUCGz" $;{ƺ:d#"rZϤH{gkTׂ,`~z͘:c_Fp6??P^E$*I'JIKoI}r帍(އ34ۉv(V@*׎?f͂ ; Dž}4WeI*Hu3Va}* 'O#䡵b""& jMpP-ve22-ʑ).($gi!lW+=סY"|ܚiMe)+ [YW]r]~2KǶ{2)d$ud)̪mڢfyBg.|話2:iL\)qkS@@:?nkdij,BwD&DDDHh:^Yb :f$?$ܬDDDD97 O}3Qo[.@pzf`2{*\oVsvS3DL f8*ҷnݴ2fxW}Rz^?rjtfvVn;ٮD1< pH h97c* Um2>\!mDDD@(byodNAFuo9tTe +AfԤ/9opG=qP/gr:%Sa h-FVZtΗ[n^Z;VMT{'KpB̲dZɧG2jn}{ !<*0ACٚ~N6]إ2V%d{}I:NdYǎ#u'-}GqOa#%I-rA;`7:.؈Ykd8f׿o_Ru~܎L ޶HbK'8VjΝ)swQYN0T5K`9 kO$cfd7FKMs*z$nk6)븨 %lj(޷ C,gL"\Y~(55߾ۛrl [c+ ?؞gTk"n cb.Ӗ^G!3cuO'KꋨU,xuq۱J0-ա:URO3ue +g}ONHz[&z%X2nTtv '#07f-VwQ]N؆'^;0ORu^ֺՖXRBw$,~jgdr5R~<8#ΏnfSoؕҧ9OvP6 uB.l.kk}@mD ߲D)?9M"Sḽb_1mL7Z-ycF>w&Su-nox1d>>>feuIoZPz< +{*iZQQ;ӳ3KUono:c0`Q_ҫK>s2݈SBԿ eWwm'*gccv6'H7;_vFZJw]hy',vyzhMO.1Z.Eh2G"dC3]~N%YX<#( >6PkZ&oSve"j< Yh;8xtMa^W7[^-5AM.6mq-ůe[^KQ_ר+m(bI$5vS.^J_{XkVt~C1`QYmi_DzPJ6{|wٕ-;Ru $}fmWpW`dNG(kx{+k[mMC}~ζlh{L95g͒Yڬg*Y$'+)7"ޡ^5*zd S.VoW۬]LwJدv~6GN*Rl\pդt{{߼ЬDdج:srvb;r +Xk˴Ķ,ޝfٰ%>eQ߱\*V*sJ|o],|ޱEŸU2n5* =}N=^Sg}G">d:/KʶMlYX-אA&^~K +[*Z;KZ]իV F6y" )4j蘴\"Y xs`CYzA3~VE*&Achl<}:@*zhR[NDTv?.&B6ר=I`vbCݵ_1g#UJ*:Q)ztWkkh*cHPO?`!,5ܬd{͠?3}6^XZt{~9WgwL,@mu_9^ WaPZ-WUlml>_ wqzZXlT{H29g9Tϳ-VAߍOhpAD +ҷ8a XܕHkx؃y]VRccS22 C|qKdtʝ4T37zisFnx>OYJnʤhK6( Vןt<^VވP]P !:>C0vN}v)TJT1rq_I e˭rxN[O88UUH) +q%[8bQө#0tf`]s]TZ9,tG4;E[v*k+ LtVQ2Cj/ 0 ɱ%H:J?NqfB" Xp@e'\hi|R&ZPImo]EtΈu 2jɴ:Z7v c&83Vkǂį*F"b=zV8Pgs}v8GZ=VGngA׍2W)9;,k{۷nbfz}aSX xmnYz>VȎ]wwn ,czY WTK*ց9b V'dV# [gDűb [v(fTslww7 +C%UX)JJ ҀuP@(bxbbP*il6[@ֻv_g1U +YzvY@o/^5.Kfwbuc]|%ؽ&F.9;WYĝ `}t<^c+(rIqvN'PX\`;LZ}n(G}mlmLmSU;4|~_ $;MNұ~JMW*x6zc %)bI;`$ +=g=GV* )GOZp twa  `kZND630ϩ"jAz \`l񨷠b^ս՝3yI=`˓cW!?: || m+E Ah|IKl[l[m[ad FCn,%εߎݾ΁eeZ5wWM=!ώ>=^zcUlQkDS#:F_ЅV5 qWJΑZjqS{[*n o~;I~_.Me*1vë?Pt +w~;XndP`jx=a49`Ci]kZP 5>I*y~eWH(lЭa,}mk_ 51UNY` +ci.3eXH6wUw7QB`DD@"۪}&QɗJ]O6bRYVEwV?^74#̧hl Eͯʝ m +^>\;jVc"J0`w2DDDDXL;2#b98 $rue-wI? %*nPAV;"a9{2-y?ԞY.IFm+Hw׉-b@7"qoZ6=VMΛzl!3h +G ~3:F+^Ēt[4dubpxڟlĎ\t,fz֝!_ j륮=5ʄ/}EoKb.]5ܾ,\~ ?""""""""""""""""""""""""" ,\N '-&KrewV=+Z=4|L=Su ||ʫ7Z +dwNC:2%cg1X{w>#̺ε~WWޢcb}jt9) okr(n\_tӛ&6[<]N1eXJ{zp=vv=8\ūiڡcDMf˷ۍ[2@$f_ti#`H`l#at7$wG?S Y[X6$= ]e:o&z~'֟Gu|,o^YBCPGܳOOZzjt~_ /Sbs!(]A: }V̖{yUEe=qY@XymfS >VmKz^r@#cKsf]}BjUWXJc,bJ퓊hĬDDDDDDDDDDDDDDDDDDDDDDDDD@1Hȭo Nн4/{k–ڍ)fo@ra!c$UvŊ |`e? }vs~UG#@翙m]S/'%/ b2 +Ud]ћ RcU^huvQs_MxYC":/-ǐ5GUۏ Wۈԫ0:売ulc?Eiȱ(!h1P>}_>͝voWB4v~=_WFZr2]Z#vB&hq6|>}#ip%O_{ +́ݴQ_m궠tOA:P_V o+Z%WZ>@y_ML5ȹPʲ(`o_L~So ի^@; >~b>0Һ+Emc=rߎb]:o_c^`yC;5f/,v+{i{|~~f3MoDzO `=鿌RHK]igk!׋䠁,Dzp4d-Ç.J Z6!) 9-Ok!=>''M;[ߧSBrPN dHk@Jo_Q˨eY}'㢮51#]3tz!\ưY()H{wGy :8\2lkZg`(F/L^+Rv/z|̝[AkoÏ"<]_E9RKVU*yYu;UQ+k ˴Lj +5} |fM^? +(g-C-.HV]m^b>3D4.\,{*dTeV惎c]ӽy5l\bCYQot#J=F +vQmke:~՚S=Ÿ$ + -9 { + ~vf{%Iә>w8 o??ؑ]K2E(XQYUٛL܎ҵ7ˮeGrց!I%b""""""""""""""""""""""""" `~pg]λ&QWʰAٗŦCYb{RF'Q^>CIpuMr,])D|b@?ԲY]kMXP,-`Xq;$v>fKDDMl-UGue?SF̤ f1:nK@:7-0(>h27SUj.U+U~9@>{wuڋ|=6$-oJ"c!:޻|fAíPׅ* 6 nJ""""""$NV~w;>ˏ]Q@ Bx=5:V.rx +Gy7MW_ |DDDDDDDDDDDDDDDDDDDDD@ ̇SY!kcRyX]kxz`IsI5=ĭCrZiSbݾ.JV,fXeSeAfJDDDXprųƋhIv~y"""Yekj`  H|5X֢5V@v.@] kE>B$(1#}'윕=H'H/[? 7{~di@=dw$"""""%&OFf-s GdW hr +Fvw1]_ msJݫ49"Ci&Q+fãy>V~=_԰ɽ92,}2w+fVrbUKQG~GrÛ3VG٫k83!{:QzdֶC+(e#l 3A'܍qv{}S7Ձe)hoӬ)e|)#gi9[T{.E?)0_rw}c'Oe6J:H -ΏrzdE9VGP2{=ҭuىͬ[,eK3t㞡W!OM4P+9zuXGԝ O{ǩUVZUPw}Eʗ8ֽ?fL +[|fg}?N:d`FBdc JDwmDD؅J6o}؛T}?C 2èTmySK~:W_\?eyYQׅԳ!C"H`|7$2ZΩ <>fJ^uBĞ܀:>2ܾ-rc)ܻyׁmXe(JOrek-lm Bjc㵵!,HV{+ҳ) +)RCQ&DJ13jP$$~1[kŭn>e.P{r?M#ǟdD\wkJ·vcy?ɛW?=zr ]IN@;ۑ-/>&+(gd};%c) =lO-'/kcȢޫ2:e=h #؎:C-X{)!:U+E+mTvY\2s] X{|#d.E9 +}VRGGP c!F-(k;9~ii|U8eJ+oqw 64tIM`5 +d1G;j*4މXs}-*'8C?$7:8Ƿ!PRy'O;+V>mDD^^`}øwS[DKv܅d~@b+2hFayt﯏n~]}2f6BK#3{г,4ُhU|f%Zq0mlr eթ*y}R:.w~R7(eG/@N}~jnLW+C A7n_PjE obfRyؖcq_/ZI`', +OmH&FE6&j&X!$5g4H&X:a zWxȼhr,5iWPe%u% #@⿆2C QTZqc@^\vIKzR]kUC? vbsѻ+xd?+ofڛȭk}u_\W xgTul`͇`L»wc'B> Bc5uV9*OO }Q\ђFZbLu8b\: 1RA׺f_L ʵ|Qֲ{}`WI +'WKv#4vG~):uxW` +TqeOeޛG=gggu{z.k~VGU{Is+؀7E6~oe5Y5(,J6@,~w@U5ө{V ƿS_ -3QLl|bZWDEkȓYFGEZNvko3u8SRd\*Oc@$YgaY5R8V +ec. qj~r"26sˤٱ+}-|Xۚn=RFV1rH x-+>_ ~3S'ԺFBOU oSg{=*eOJ q,H#;#}|~W{#WQLjKl=9]/Ϋ᳽#n[Ԩ;Gfz.ER9?rv(dE%*wgaEr67; u76cgvٛ4nέX +>[xؘvUxΨkRyƂ~r_u[XO퓾߹|5{tW%ܓ,R3wghJ$ _y ~SEѿA5}=6ҍ$ +w,O`=>-=C0j@_<ޏ[}:[bRc4K!/D{l\>̜7Y{nO&Qȱpth%洪{ke? جc5Duu'TVVūJރQd5ވ5:=Ӷ{ᅣߡNVYo"K;E'@3_,.|/m:A^.";/OE..XN@ &]oh+X`Ϲ{?Cbt,ź[-3WUYʮZ9EF  YLw`ѐCX1Kd{2Rh^2wnV>~d}''u" ֻ~>2Jc[ݫ (RW};#2O)})ÿ$}',9lV89h<|_S_^yAvg=L=ȵ])CICϩMt5jlU1ɋeѵ Ǚ>sz?}.5Źry4q2VPyg޹lq mq69쨣&:t(߾ǓHPZ%#F 䊰kL +V aoI:ߟSʯ9nǣnԳ԰z{UmynIu<5=gj['& N 7]yY ']#1ލud[l66T#eefJJ+?+$Bͭ;J3W~O&wHeNM)g޷j:W_:iLtZiTEft˶{kA} SB/z(Ai:tz]C¯?_b<ҞuXU8s[#L4fŷe9v>Wη2?풰7މpb_T[SarnEYUc^ +EMP +ZpI;=b,cePTYoұM|fj1WVe=6\)޻{><}fogDc{uPނWZ>%pze?=bO6CX4~ }$!8#2ƖEqu8KҰhTLr{r^Аqr::rzT] 5-X-3z{Qb2{1ZI$'ZܬA tVZsU*r +~eKplv2eËatF2_Q?q k~YB X埦Ϸ1[ 8Ҷz\t6I&)ۿ2& u]u&kɶ۲y +쫠*AA$ِR!U7+_ΧV6#]&Bu 6;n[^%U*(w3̾Rҥv76>*[uAtG>7NTWN+P* ջՀxC7ǍH<4J8 +zx:_]L=+uzllZJC*+bw6>yoPViVII#]9SeXe՟M*aU֏x޷,E/EKzֱ Gvm Ҩ'fRNv5vڝ[>N +ph>yWe_o^Ll깑)v>UYh,;#SbkgQUmP`>>3b"YeV 6O.(*@g/($ڭK:0e> +A_5?-5,:~lDkR@I:$-AelXl2G̑1&Ev3"R9ߍe, o<6ǭWI? :`ڝK>VJc +;y1z1@Uѫ{гGO^RcW Zh35y$Hu魑 ڲHmӮ]gPqK}݃Fg袣KS|ze9x bfߛf+ֵQi]ulSl\T * >:wz}{>۔Wǧ< އ4JXSmB{6gu[2k Hd 2nɢGcXC8 %VuN' RN9\́כֿy0WCB72}DzS\jP[.oNo0Olʿuӭ_UrzaVw0[G9 7zeaHXˉ֎4GG!mȶť ES{C~ >rJΫU侪z??.jO`C fZۯ M0@BۏsC϶i saC;::b>>;3"M쥬B! YB<-{nf%&]"jP;8rb67U:>B-QVENܐ7G?i,oOQb!!Gb`t~ZUU?E`21>>fSܛ12) bVF +Awwӌ89R=;;$wT + PJn6+]Zl~ϔؘՋ,,o'D=;к}#]Y]uKK]µ5ؒǷ%r}7c.в^ۧ$x+#0=D@'C7%ҽkŻӿU+ +5GSBMuV~A +W;7}n#8n~fA1~Σ')t)R3X &K{qo@%\䬍IccGo؞W`vpufu[#옵 mMQIcjd{R1j.Z@u#Mhu}& XEL4<{)ezEO]"hAx xo|YY;u~  =5ߌa+ziN=x!=ϡ˨!7_YZ_ҰsmU]C4_'s:У%1*@hPtN:_9G kxX؛ 荎|A!1=LkzxclЅmcn̮15Wl.Umk&e(gg.%X{'=~~&?^ey +*lEWK c_ F}C%»20 8Ыm$nOf;я2,bWĒŁn;~3OQWnh:n$֖׮"g"˫wz\ lw??iZ1CSb1[0Gačl0a/F>EByotq<{G=_`%mz,~!yrϑL޳_Xp Q{ ߏw3VAǦ촋X5BT#"F}2 +]RѰ|OIH?egXRӫxy$`_h#7)]=vc&:XLXUUBt n-ܟ_9Ւ2zs Ū @U]4;͚:XPq0C)ފ`h;\j_Yexe7 R{8|u~bfBMXUn;>HFZd9JE%ߦR kϑ)HȢjBV1Vkm=R5twȸ*aܒN@@Uz]YtVݗL@:י#?}wB}A)1l,BTw=)+&ּ  տnO-o{MoOc{Ŷ/=eTo\^-x4lKoUh"ճE'Okkmh\mo#P +2>ܑbUk|ڷ5n,HR]C_.f7P_QKkjYJې*;|Dӯu ˯WNN +Sκ/5H-=}tTkdN,~_̅Ǿ~e&b@ZҰ +㹳LˮQnj4N 71`+0︰45H;׍^4u&E?OP۲VC2JKP^>;=72vnE87pR gA+n2wPɳ*%`ʆoSkQ|k\WmV,~5X8?w_߳ɕnEu%f澓}65b(LJ`,eNL{eF~} Xk)A~aS̍? eadLUuuAYRGqߴs(t8ua-^% +?d\&XUEyn`|~ ͯim__IP*X&^&WYnR^9Y^?''G]OmU5zuTyk޹luSVٍrorŁyvv~xYuy Q=ӳ&sk9sxG[³:ګ2q8tbrrDHzM8SE!}A2HV $ZzUHe+U9h _f3ȭߨO>hH*Tt{|{IO23уE +E@}bb1sR|OŪBXĮ x~GݝK+n Y S@?Ml+긙KXUW1pHE{f8YMR^VM6*؅I/F֦vHDz6Wdtfh 1<0223-6PЪ}͋Hm#"=R_QxUJINKEim|ejņMX^z_,@vpEZH1[ӈڇ!KW{ +:e^ݛ]_Ǫ1*CV9+82{og$=KMSO`Rdu`X c%W` G-x#㹻~K[)8CW&]?`~ՅzWd|yl~ޫsexb+|b:ȿ=OP J{}kZKT#Q'kX +޻ 붾RVL_SMؼhC%t{74d޾5n_TJƻosWrXuu2bvZN=ⵡ"}Bދ #&vlo`v=$~6Zf@s[ipC!vGVkw0eٜ"OR"P`$c#hƟg:= +, +qQ汛4@ UQK  G rh8(/u*ݝlft="}ANvFM)Ϲ:~ޕcf gA>_aEXAkqÀX] -I vnj]t2XPHҍxoo3^g2NƵD Z- I,2&UWuK+H,Jw;~R6.1N22*k9ZZwg~H`d|ܖz7U-{]|y|"FR +u{y~#[9fw =-|}LmƦhy06b" - tDΧTd8D]rcFζO}dVO]=B6su: fޅҸXʎ*WÝOɜΦa4k>ʥjw hlw&kI妩W S?3noe&bsM 4G#D0]N;]ֱT,([Gz:ޏ׼ڵd_0eUSsDRǰy2z*z^;Nry EPH#|DDDD +>hK""""""""""""""""""""""""""%ihp;(|HgJܱeVLˑXͿ jޣ_He:,5h}7W'~_;w,m.žvzyQ'g_]Z&e_ +of +XJ^UOUJAAtLzPLY-kKjcR|>c+ʭC 2 |>fEj Cyͣ$K-r @&I rwr6b'CSFBb>g@L>NEc9KA]`o~eǧWQL5ª +k~y_hߦti6 ^DYKgJU-NRKb<'_wSV_1iC; \(>$ 7qljS΃zd9\ yE"k~zpom䓮j_>qh1IfOn,>? ڬj璀|e)Pb?Nd5=4dbv +|,ȣSZlZ(Z w߈8Yh\{2,w:"Fw'\|GQaue>o wO +էUYhŻ?cڝyN5"zV8Qn3+hRs&bܡf'w;?D/ܣ+አ`KXM~Dh{$-Ew(7L$jtqK[/l|ns;Qo"Ե5;HNʍ w;d][0`i;$.Ժw +$vr6HX5}8mm-uk]]<17 yi(:f;8\= o&Ct^߮B>γK[f$VUΆNy˖^/Aه/ +ym ideTK1%35+![&|9{ emM~.bUJlv ׻Pvu~f״-u+@-Wo?ٌ2VEʚt=0A&GϏj"""""""""""""""""""""""""""""""'2>:~3bcYh\}&áx7]I|Gpgt蔾>-v,ԫ7b" _b6uR\ԯ4ulB]}BU)w1g;*jl +4x%5PTmzïZq<…}yɌ+˽Z+Q F[=x9F3~@G'e3=N9jxk`0[P4;w)+JEh7JL{:zQ$z lڭ>_|n`wG}1/W,}|>+34Y~+>ӴΈ@ ſ֦Jr:^~k~mzR}Ug.Z`MznΞ^yߛ/˧5H'=ǫ'~=oh0n}?|/)hſ֦Jr:Q>6hUG-˿+nֿ^sמw>tr~{nǫJzp`w# }5xM}άQ>ͷAzo+nֿZsמw7)GçG%y{H?[O0?{IŁe}J~oG_n_M}άQ>qneЪEXE.ֿ^sמw7)~]?r?+i>]?G?i?nǩ'=ohpm?]n>[w_r}J0kȺLFeЪB"˵D֦j5 >%w/˧G#s{X?O[O ۮ䯯[OcW Qh0l2Sݴ5zR˽Ugk5ګOOOA>AޟԎ~WAe߼[?n䧯qhſ^a[F?p-jQhm1h1̙{lTyU? (cHޢ7A DѽF{BbnQT Ժ""% Ħb"%%b"%tDDDDDDDDDDDDDDDDDDDDDDDD(g488^_ʘTވrotk Uv-e| TcGxo SK(x'C˱ɟg:f?Zf2( *z6ݾOA:t[l]e?I'3?;Ԙ2lu]=ue`1q^9؊[:>D'2W.n%QgѶ|Ć:Tл=aBٹ6Ν겪rq L~/Ik:MXGnCkdj_W? rҼ~L:k=btg3=؛EG :>4&UtoAv\=7=T;$Vvׄ_ù_ŹV,9XF&,Z+jPEOpgUҶz}JN[$+GTd&QZ1z!FhX6~RJj{}|xS_BX'*y@"=3'dt[_-ri#]=~ҨÐ.ar:3{ANyȭQ@#cZe*zgM͛o~WNWب "YF{?)kpnV]v`xe$J{Syǭ-qV|?_:3[|<^jojj ||dl@:IBfPrZ<{ChĀ@`vxhH޵Ƽv 6C~IOK>+%-~C 1S߷K:wNkmHeƻ>[}+/VƯ%+C(Bpt Gq"=tLJ +g".aa>)&flWWD0~ɘq)KkGp4|ղθϿf⭢2b #aNRWr>eVאT2 G!đ]F3gu:+ Qg kp+kc IDDDDDDDDDDDDDDDDDDDD@/[rK°l׺{Kt.7acacn{ *K l﷏wmuea^*/=X|fҨ ?=X_wOf-YK#XɏhVlF@WqAvԁfbf`ɾxȑ]o6̾1r Yeg U!݁Gjݑ9'{^~i| ҆&%WW~*; +]ɻw=Wqwz!'m[oC~;3tV8 P8o֒;2pK ^„quc<a;UyL*!,nMo13£&Kx0U?'~{Iod>MEժr*~"{ GBUc~d2q.z=:y w>3 pszn-f%ձ%4{|OoB{8r~Sy9fxdoE9ONm'Q!h^K2M9Sk9cq$({Ld8 +N +,tXhWڛV-NVPK3o^UxwTZG/wxƉ^Ȟq-OW )9s|In^r>cY~;ZU@ vvG5Y[R1qe'=ms_!:![(j9!4-đ߇s-g:uգ&&c̎ 9f, 𬤎YDl 'Cn9cJR .Jz۷y3 ћ +\P+(_@al@h~[{=:F 5Yؗuklҏ:cWnBcZi.WKnPB:=D};tn +P̪t~cĀOonOBgX-FMu] ő"cXSh*/=kowzˉĬ/YJ”`^#ü^`t΋hm2/%Ń|wjtcѐVP(c#g_!aŁD .@=?:wzE5V$r#L+Vu3SF.-Gv~[ +3Ct[.1\ ~G} +]L.{@hkt잣Xůz+2l[CsWNwKSKz+:nc1fYevVd[gK/C0㩋eSRʷԫ%jZ݂-tw$3SVEOXڔd=2*F=ok0c &pȷzQ.N/W]j&E;."""""""""""""""""""" Fb%5H5X%'@ҵknlt(ԬfBUeuv%}ѳC3. ںu}mLyj5Jj5YMLy8TڡՕA"hnӅ%H|P?_ve)In>o|/~J5Rdmc!mk%-`8o=$4)wf?=*N=mx/{C@<*꘷Ro[Tֿy~ye}k +DKbFv$j=5 j a}Jyc\Do Ǘ Wc㿇gA9/q N?#U0-Ӄ|^.-7&G\E7'>axF:ybH{Qubo߉06u r㵊,`J`ZK!Z7ȏƝk +ȭO̶\ +rN;kRu?˙ R";ĞdJV$4wv:>˘jbv( '̭g&тɔ +x.McO5mG ߿>ECmy.:ހ{|Z2+AeLXv %y`{ZԲ,BMlLu+zv܈yl{QFR` #?-}f$'H5Y2AȍV쁡du tPmAa9wv2fђWU[p%OȁgӨ"+Ff'/SSox0.k.<(ũViv( $ q1_ӶV 'shD@6n@IdPfZu,[/ר|`ڳcf/qpgPJ-}ٶnq_NZKX;c"W8\ƚ[9sI ;pnğ7z&#_e&n 7 ONN~,vtי'П$edU}dqJO[1%K~$*;|5mKr28ڲGW +wQ BdfeE6WPq@'䊃|n_8-kk^5Wl5m ~"Hu@ƹ^%kCzc4ƫ t[].GCZ7${wC_Nw?Ė3etSe0xn ɭ!g+7W6vUlN@ېrG{aI +XF~OUO-BAqȎ,Aywc'f璷fSSV@gs4wryq^OΥC.PjNJWvvSjdK`)]x(; (ڛ=;SkV?;G 5L w\pz;2zoQʨ(H̄` 0$W*gJ_XYlSa?G~_.=w鹸G }˽uV$3U~wK-Eؽmb h>:wWͦtV`g+ o7tvb)xHޣduvJePn|e+)-U,A=v8:baeXtTERAcثs-2ZưppyhyƮү}*)R@ Btʨ J 4g0Hoپ*߃۰`b;| +|dؾ&,~5Xٝ7Qbϙ`TpYbKϴu\sbyz6_cYlܸPr ^{,;60qWu9%*;oy羚cUajrHIޯ1۬r-M -tQ']CeTOI^5RTEU 'Qj~eh%"Ro%+lp{{|%7GL!T #؅*aNgodOXY7-1K[S36G6'j[zա?+!Rohj<7̂@nؓ]4cfc^3C*Y-hYG.a44g#sgm(U/7uR>^sQJֵcU|r jGVбZoQCo^wD};;NG/Wѷ1#bM{l'q͵K_{;ʏg'fm䭿p9"_uZQg ΄,hoZܞ4QEVzθmsosO۫)dzjZ濵þ-_m۬D +]5<{5zcQFnQc]vj+J\|u/-qz^}|M/"[g{ f2juuGR~ا@t)E'#.*$tI&xumy-Ϗ\Z=&uŐrH;U ~'>Jg`*@| +WfKLlܜ[Wڤc]jEehu/U]Y3 F +hvƦ=#Jniv7GYV;QN;X559HYI(@QFV8j +|<}DԺqWABk#"wm r:Y +KyT(dU]܁|=JQMjj@ (a6" MIoZ޻-j +);(%a Q+ZP` mtWP* $'";-j@>@hBV4K HI%F;M~ӓPi'0jC+ Lԫ_T)p[/TT@ { w>Ll{. e H;3z"RBu +zbm5(5\k>?w?)}chu}/ߖ]DԊOdh~TTzYɔVΈ`v&WIʲ,2CkBƶ| +o3Ļ %bְt93e32rr+eym]kI|ͧɮc GSTCuڌX? fSc[: 0~3S~NҹGFE&sgu(LUSfr]{#7W2VA l:gᅫeT@u<+iQ~ˉ~NU:V1z(E>c^SZn5lSQ)[bb!j0PILHhl+5-jCܗ]bҌUA,Iw$S}JmND?duvQɕX߸&e7!m!t|9|=Zz;oyỵ:qX y.ym#6sXy^C`n ,:ʾmo ]]H8ߪg'zFf5bT0-ܠ6zB/8^[r.hqi?a{kVzH%Hٛbhj&r`OlPJ_=oZ6u,=Zz E_:VI?ٷΛnN=+R`~IQNAa]|`~:2ʪY]HH`@"]Mɐ`| #^x؊ pUG3M+Rt 0Pf;%,66#qΪud0%O5λXW7- u+ose\8Nx2興Wޥ#Q80{z&vF8,n\rϞfxatlt*1$-Zwǿ|u1Jz;Y' +lwf}[xH>֟`oM=JͺB@.wz=yk-[` '%=c}ʱ-ǬUkz|YX6JD!ֶכ^'>$ /ifTߺ̲6o#Oh*S] `qM(||fwX\"ΜW& +9_KieqU2QM-l1?Oɡfp(Pz[pb*Îs9W:l`: 2ٻ~ғ[JN@<ګ/!TI{K'Fͩ;X_-$1a`Jh +a[{:'l*5^$t>k UkEUɉ$oo?#?kTPMyFǹ of@ȫ#54Z@ + jĝ{K!5ٝQ.|z[(W +H/Xk _\TȬ q*lbJA^|LVqg{Pv(<+/*ǷD2H޶J]Y|H$ݞr'evv&5e9i՘!X]u ;Q+;c2{/tV쬖J6v޽ %}bf׀ e9 lZ&gu;%y.oƁhK};odצ(r'ߕ]h]jv:K`J5[bYpm+Rv4XHPQwz 9P}B#7@o3r~S5eY8G8qԦEnO"Iց{A<{unRXDzk_1ҷz[mHWz {ۗ.__3kkUJsfqP8CQV5aWw.3^!Ulm4}H#j]05c`kIE 71FC K־]6v_ID¹+J+y'DS֢ +* <^J,tW K6{|&vW[Z}MH@bmPC w綾f ]1/,_ʌAA"QvN6GmICtʊZrc7oL{=w`s jfgadEyrT To~;?4 LDD֭_\: }rloG-F 4A| +kPz˟*HPkHUJv;ctpTӊKq2Eڤ(R׍ v=i_B:t|Lk-"/G5{Ue~"ָu׍LutZU)BQ}v*7*;TQx]HU@'_Y0%ũI`6}bՐZ Pej$>Oo0UN;Z+9P ejm{wgā+ZoJQl#E€oRzx9miFمe*b-w.}Wd$JA׈ +ӱ]Uʯ@t5_ٔ*  =_~?FWZ8z־fk݃FC+Z3/ &Od5+*[^ ǗZp1#5@7ځ}%WX ` C ::xZ-H +rĥ,hDr +hoRDz{SYxr\kp01"*A˗/pwW4zmWi{k֏h⥧N 8/ j[ +G(v7߉QZr$$h1ӃF=FE=r4`Z+J$~=yp^dTҁ_FE#dhvZ +0o@hwWOƢmt֮F*(olepSX|U1ojؾ,?X( :0߇FQFrK(b7̮צ8[_Ĺ𨵹HǷr;YM̮2%A#؟BaRBg]RJ(NA5Cu?{1a{D]FV%M^ F^Z1ATdgR`Uh@;33ʆMu=6f*t\|~N&n}]=HTYTܒfuwKUMj5Tqv=}eîb|՜ˏYimF2 jP;k"=g/_cYmې˅,!H|fm57 OR~#NթꞠ:CBPonJӺTZi-USR:cLnDDDDDDJ2އrfLtz"brRjX{ ͸ +@'fGS"g$=~*J"9oۉe֊QB:g|L7 ,ttHR |{| ͉~Ag`l)?2Wj[e)t~r3zZ”moCfxB|b"%iz7Tڪ.,ח$0_:?GD{~bցfc*~mSh 0L +%܆+Fρ](',L=L;) + xe6XBiX BĐIxӻݎ\^Mt;hbb9ԳݔrrBHAzZ9VWl+27}Ɔkoe=cƱХjM`s]lحZtUEM+=P!}uJd?Cчi}ooE(y2=m׳!6ƮWe`6ϩ_}W{-uAD HcX+2=+R+W~JF]JĂJ܌z[3( C2+'n>S!n=ըhQӃ)b7;cS_RYu ES8qJ]0-AOyetΊZ|qAKbc;V؀U;@'@IfSCpKtb͐?#d@&T=_j`*ܡ nbJΚekG[s*}Mel|w4uŮڊ빊50e;Ge{w9=%/tmk`G}y{u;.`)v(Jğ;>30+~X?]ot|n#8;i8x0FR 7}%]S/(u +U)K5>8bb/# 9&E+ ,YE`ā=hGqRoMT{u73])e ݼwthCf:CRFԒFdYwuen53WPIP]˶GR7[NJԁȍHl~zM EQǠ\4XVt~%NԍwޟQ\U5qə WƵ6wذUb6 o&Ibu<$!c.V0 OF|dҝ^TWz#9Z nb}-f̠-WRTu۹y5Se%hdNR7}!_F=*Y]؝>LW[nJq4޳֧@$.]r=ĭ,LwP4va;)_ZͶ#u,ܽCqUk=l -3aPudW[;l`V5/e}Kj 佈wx]9> +\$p2D;,,;ѬO7.H[EF+g!l@ߞ+Qr҄YhlHV4:)#yg219%ܯ. + hklwO~m=(pDz̕z`` h̗An.ExVcbǨYbSat6|X z(ző8 +Ie{M30*oTXq+/|WVET ֺ]эΊHe'`ڍb)hЭؔ<'ْ,Tz74PL:fIͳ43)^RVv ?y.iAFOLb3e/R fƅEbRԵOLTV>m9m-O9ǁϦ@?[;' 1+|}:EP*7_?o\U׵M߻h<{2z6Iʯ.Tˎ; ,G|~bKRU'd(ksKfXqqX\la>'鹱_Oi vX'IyYࠀ |OocevZة 2<: ܤlQc'r[#YO2B[A i0nCDE];X{,uv{R[|?>IOG$/UȫbP=5fp8,O#=jΜsRO"Vjd' q$I׉B*@le@oOG խɠvPMKb,Y!u!$$EϭDf ,e'桘~yދ,`HVֽj_~썯ںnVWszm(7*Nq'6VnNVO*ϐ%bpr;v]#Hwn7 u64{xYJj_)me\:vgw](M֎=G.WuT(E9u^ܷ靅U=E2)(-,+kR;<#DI*kTUS v-Q]$+$zLzST(@4$oYywec1v a!=emA v,ӬF{ Qv`GVdusiuOLhM|w7q! XzC]՗I'DDdթ<GNbmvuYXN@clh-$UȖ5%vcVOiKswP\^-I5-%Px>OLg]]VS:XxppK +wvGIγ;/LqaW>ᅫ͜ Ꞡv8'|X`Fƾfrt馫)^wiu-z}2sff;:o}w]NbuVOp~K u uLlb?w/y=ҴP֚yԠL n@o`Oح ]&X5vﺽ^=_#/qJR:}faq=v)~s }_JNn~Q(JqQv$\l }d+&m;iڴf#C#.̚, b}d Gü䬾}~C+ZYxpU[|=m9v] WE[W:7nG17MJl + lxY h2DD@(F=WNơMjhE)#r=ʹ\XCiv1Y U ʓ'Mk %^&gny=+hz+x4^﷑`X=DI,L*$ue׃$J'1`M,6^&H^|i[xR6n\zoJbeu@|hԬDDDDDLXTf Kɔ73%TBUG@Q_,B(e#`?ʢ-`*Ժ"""&;/e%I¨@hV""at-Z +/s#:"""""""""""""""  +endstream endobj 221 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 72/Tabs/S/Type/Page>> endobj 222 0 obj <>stream +HW]#+zL W3B+`>7u!I]]#u6,F=U:u||>|7ǧ9jiQo>_F4n^V)z7/owJl]`.>wm/j:~Rz ^)kt# َ?ֈ} 4'y,<<6~@CIOkL_wf%$ycU:Vx`2sɦi["Ҧu!??baxqǡͬ9j>CMCjR} SnvڳjKvx[ ID3B tk~ {3\%92anRF-sN"Z'Z$ )1 +% +MN.\.\؂Kve$EϷe/t̪P9`/Jy9'ҧ|k?3`Oz;~1رT)݄Ho;;xpo~/IULL3%'ФRq!H9ceRhI|9%/6gHk85Q&51CGB|䎼fs͞jnT@(YJI ԗ}C@$YrK:œLI0j&Gf\*}AlLˣ &/D2:7r{Ȍ*U s3Ľd'jI +Sՠw&RE{s%87.,Θ wٳFYB5AE!mӴw9C +%R 7 yΙg^Ia,⟷Iqm:(g$iex'"6ѴNgxNh=dc( rC?jWMT MR&u'z/#,o^TVs$qsQقE^O֘r[=pt4\0⸳לހV@xDmh%:辶"$}b)/lĕNU/S@m/=(/U>@ \O1xt0-"A31\Gj ΩrN +jPWZ3fղN)8$+p)лU+SEajDKNJ,}^X~l_&qs[e{3gހz<߬տIʊmiǞ,6*ZSޥ +@,O?_pty;Tj;SS#g5gp &n^"Fz~Bw ^>|U财AwF8w \;4kO.:cu.( f*ZJ;`ysX~o {fv pfp@ZKR/hf9 1Qj~maʾ҅{tB [ jxVa5%t+e0zfjW  x!a1n|t?-ۚY^$-R9j=)HEJ j `ʨfI~QY3V^AQxS3یfLVL YE[PȰQk%dFs2&TȌ5fҊZTl),7Ĵ92.8ʎ$ 9$ q{f G1R\HY -qHj 6^d k +K)&@g%u5e0 loËwLlfll(VYdxY}ȱC첷ht.&(<>( Fa)>NpMfR] b=@eL -~W[מH 6ؖB<9L$3ʩۏj7P^XJQXM)3 tMg̘%+J7J084ܬKgh%pOsdsWP"yh~OU[%ݼFF=^q$_~ Xv*rQp7jfJ\lq(܍0w&}"-伇zj&6= DӼxX%s h%"9S({m[t4ܔ>B3*;z6,lC)%Wk!jj,Mq19:!;_ՠ'lk˹k=l3|,RB? +1U@W. M0^*L`|mB,`9d -dL h͜!t;!fzIbμ; +=8uCHN`>э}l[9~~yBW#ެil+sV]kI4i.J"r-i-7$ ^0y#× MDO4Ubm\(\b޲̨lguB.FC(j*ueI%oDC.*Pi?8f1t J{p]E!sQ,ؚn\zZ(OuP>Ӯ+  9҇?l~K ^Vg&fIlr%v y?*1_64;ĐڼϢ͗>4|06-l}=({w Q*+l gjF$[]?nA; +% I5${Rz ը/,t2krU`=m'6 X (Y>?>Ul9qJNK/wCoUƲ5]>L}~Zݏ gP.;I}Qs\% =B "v +fTV?*C*= gh%N5 iZ +6m˛G ,Ɗƴ2{q &*yitAui P2/BE're\h·0m"c~kJ9'LLzi5 XJ`0| tI0]*9Se $|qbN"ZHx-1 ΁Bq/cJ13fljP9Ԫ@nwkxaZraU|&-k, fR@EȦ/%CRǞmY=E=OMW WhdE%cSzPv)-0lׅ Ul6z;틳vb.3bDuLSWd)K/7ߓWŸ *rs5r®ᑙ'r|x |#{i|NeeY kf@`aj`Y.dWO +ʚPLp71 F}AXPیhpk.@vYC7t$T-g*L9Άm(_.-*)ױ)7RH(GT}l{xBemƦ\D# Z4ef5yٰ]N8/ ~% + kD۟£^4Öؤ6EbCK[Ϛ]g$Y{<T@| 򻬄Qg(&[&vlLvb,NeLh2b6*79H#rԲfjY?n@VȐk3h]dѳu}L'4KB0*]Ps\wF!dE 245C~~qfGAOO8>,)5KGncO8xx +H9 E1/(uudam?B7u*c^b㛙L8zz⼪lż6y%wkeye"?jDJ&Sudv*23) K|Hu~wÛ__A?>߿=<'эt:` /@'x溇/V>" +endstream endobj 223 0 obj <>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  +k!1A"Q2aq#BR3$5TUbrst46Cc +%&'()*789:DEFGHIJSVWXYZdefghijuvwxyz?u9=6ʰY}u56A@oheVvB +N T\\Fw Hncr O9~_a똹7#:ClC6z3&Y-wU mU_f$~dc5ڎl`t>}W/.O#="kk7*ߕ?w^>?~._K>8rur2+pRz,n(;{*>):k5(?'߀~*ܬ^n@5Ks ~f|\䢪",U v Ϧ5dbv5偬0 ̮]]n.#5V]MmnǦJuKjq#gěfub/ Jul|7T@ _X νy#p? zm9pcoQtOaܥz8+Zuܟ֠CdujdAE&u,۲!vJ6}f0,5}'ձ+fVȨ:`lPA >ۨc#muama{?, ZUSl>M߶:X:/z'Z=fWquzk~_g#l;{Ex+G~"+v Ss:]X}vOs:/O*ڨ\z+ap7Z|vþ2Ev- A`0р_b'gultK,#cD;gmK8|X6R|BbYf΢^ϵg +b7lR9]KbpJ,ЬXKpmVV^Z=x۩BduwS ˤi)`e9;2]I y >030wP/eGT1rOfz5Vķ =uO2X鸰m*:Sjr0ͧ/eZK6ݻX-M֭ (Zj!CɁC3u{߳dS +YԗVUh9ˏ]7Ty*Vݾ^`k 1Q=&:j{_$eUʝ]ORbk=v3huȵޥN<¹z]Y rV1Q:ޯ1q}WI*>.~nlGk[;o1^։mꭰWh*b]Gj5ktl|= 5|[`vr=ma踨ipTYS$ܑо^Agd*Śch Iֿ)#]?ge٨5ZZցS{Hy; ԒER Ӻ˕qoeU;`߆v- +~T=m=PՏCƦV\Xe`+b5¦ŊN3z/kMT+EױtTr +G}Ϟþ^rjxOܨǯ]n7؉ +Վ䣿׫RW8nKikTg46"K:f!wYjgבeRPWD7`ߴ+[eM@>G^^] 'd( wiꗩՆ-k5V!AT,N[]&~^6UL/FBT |( ]BWnBW?ulkXK>x>JP)r V+ yl{ EXxΒ4Iڟ^{K߇5QW9q4E;߰a+ꕧNxsvM'Q`׾^E7VY_28-`:1.f)*EUAhw oZ f:+ӕ^MW麋 o@htN:ڪb+b)Y[8ڑ.3)bZIL;* ͯkz=OQ֍М4Y~b;vUq,'s.ǖu2/>9,+ӦnULYGbxxطҰ=D}mreb5㿴(K:gTn)?=6eUD{m};oKRPM F; o\LrYzՕ]vސ_QlGT x=NV|h4be.W-Thn +dkaOq>zct(WnU2ٳWEywck|neQU8l°ޕeu:vGos=cvՕS56R8v {ؾ1I&[4辚7oීIE62V ~Чʿ+ooC'ÛԱQeZhk {1fޔ޻HY:ljRjWExo3sKŭ(b;w?̱DDO4}yO47DDDDDDD:ruY,X]rV AxG }EuNCHOa&U>`Nm'g`k?Y(Ob"""""""""""""""""""""""yDDD(ٟ~O`bFS`ErTq,x=nz;|7om1"i&U'ԭhO?7cJuR|ʦΫk,/gJ;^#>{K^K.Md^j!A Օ]YiSЇ; ݿ?UF){%H=_D/Q U>݌9FF+#[.p6s:S`b;t@$cKŽC'{eZTe#{KO# +y*OMƻ.ײiWrܾ`u.y/ e/řUa|oO@w:p,Pvʾasԑ0.,x>aj0w{rmvvҌ0H &~^v Q +ܙAA ImnOͳ?f75|B'r{lLk=L +)boOd6"'bU0ٞ/_\R k2" ,lXUP/}kSoL>c(\&b趾׫⻭bѷrLT6HK>%^ugv6bܵB .w:d ZKս]#ea[kjl{7YRwye_=ءtb,|}]0q@ά*oOMWpF5\Zޜ2ڀ5Amn?J"eVKkQ.;qfwjkT0p΃ +[Zrm2U'D䏯_>Zl_'`{ a]jR A C*VŽ=+3lq$6{y3ܼ7$.5եdX7\~c2nWI9yK/+b6 .U:o |cLZ1`u0STLSiU`N1s&_V%nP͜I,w ~wR* + oig[jwȭVMl\`Ώ|W ܸ\ V,4H u%e՝RKF?{f.M:Qc) RA2@*͑NFPG}$B]MѾ(/mUZ2m=#޻r;Ls%Kڱ+,m lh'U&*3;ں%W#)sZ5ҖygmBUNfGW>|u{d h?a*Š+oo>{ ۑGp¡@?lXf[nU*uo[NYulF|KG5%u;`~?J^NJxmy#|"} J:kZ+F$f-[Z|tK#rsϷ&*aO[0ems\kMd/o-VƊ~dp|؏yYukʺײlYXFU`˲;u05W]2Vp.yk>'@/~A8ӟ I\֚6zo o_$?YAֱ鋀˗{;cSc4_|@8u ic~ eմl%{ }d>!)@YG/<{%}K묡,ʀ.P|>Su+q],T2aT.R!/26V%DDD#2ޓx/ V}5zveߌʝ7 Z~Bu?I{˶VZC+.HH] w*ot+CsJr1 6B[!ctI$|O+ǼOXfD|o~5I\OeCc]--^]fX(ٚPtqv +T2'N]h9:N>8#vҥ. +w^a_uMzLr`F|u\czO :>I?)G Y?-6!íSùW쒳)"J51֝BwnՖk7ԩuٳ[. NLt/VL1oZ}:KCD?\Mhox(Rわ"f96.5 +,}7&g?.uoû"2C?9+͔_86]Q?V`/6&+-YmQ|RZ,bUbP5{MFlx w?_2KYw2lكxY`~03יzlNiՌ?`2:3̇ҍa\{.x}g)lP懒raY ll'[ERkר%aY9 q|j6lPiF:&}|'Jal2ޏgo;ɛ&GQNEf;W!IQa7?9{22𤛖%]yֻ--dTǛ/LZ1;SŴ"lqkd!خl/ZzRZ +_Do[FEʣG3^O,6rcNE_^X Ė"ˆ'G:vn.>_]_}k'|9|5ɖV wR#ƥͶTI:$tO~_Ig^ %}}|Gm@X%+Y?May_guq,۰Z?x܍2^tg/LBb&mJ">|,#Һ:ðy^;{ktUu^i=כ-J6@ϬGeK]Hpf/_4d q0q1k['n{Idc= /LA}Wfa }]f0:yr#zqzjKX}*X-N쑣*2j=_ oz2-LTbDM[e2RΩI-o~|l{H+:ڧBd5$[+Tg,2EkaPB;o]bg­7g%jPͽky3f*<Fqn%e+}LƷGp?Mxb r]@;PM^^JloG=b32!M0soޑmRl +EjŇfb'g_:q1W &I,@O~FNBV};̝k "(ŧ#M77U |KIǮRUu³_߰I F׼xknnWQ"֖BG;>Db̫-9ױ%ݕT +N,~^#`wQc!ڇE^`kvp+EI +?ȝQ3zN;?P•R~DmG}i3w%@8dyжu !P6ޏ +'=+ɵՙ@+I4\ `?&TŭkT=}G^TCĺ_fBZ۰њmW4[ۉd3@/~V^kKp1ֶv +V ve/NAkYǫ攴-KԲGSA$Md֪X/JvZ?PeDD@C8W\QWcs?{_y^bxF; DH99{;Ƕls:\!X3>tl{; &"a̱׭KTy$@3Y6cd5uh䪻VCi1ۗx1r$>vׁ}gPr=u~LvP{'BNDO$ ]򈵍(}ЏMys9k[}}7>n{䢱HuOuQ7GBqxHާ, eKh* 3Оi(?>޻gƘ''wH#z9*m^7?I y߉b6u&r>;nIDU?fgW]XSV}u9*؟?oxKz2Au\V2ũ{/uBY@ÑW:e螃h nl|OcmѪ(ZfGOcC.Vէtp~]z8^e؍Uw\l~D #J_z򃒮q V vDҰ߇r]h[`CLP]Yޚ5 + ,dw (Pװ""'ϖE U4; DD@V 1O`WtޯO^6U{=ǼX98*9#EfI +q@6؈ ,v~dLlLWӌT[b!o)?x2UmHOgѹ[`6;wȹ7ADz-g̒JN'\ͧBy0^G7{ve8lDw3"8R#`>22Ce3QLCXT[t}YOP2<8~>'SԒ6`IQLe%Vz^-(DZ9B W.u Fc_]xj\UBe]S5y=1FKrTqVYT'*D*z|IA/m}55l߉ 3:z,UMd0Ǟ#]MZ켴zV +l|iHɪWWRH`AWDhogcC^w>*˦JFO+_S̥E_.wH{.V^u-eeeZCl.^|j}mZԭl@ e.$gX"kGTF|O'~e]>bXyG'):V{[12Mӝe(OPGm?46(:޷LG>nM+Bēρ=ͯ2H ^JG^-Bb2,:5oG'5ay +ɪeGV*t0$5Oý3Xyէ̼{9J]P=iId[Õw*4T;"" #) Mgt cQq:P4+}H5x W}|7=aHא@їײPZVΦW^˹u*a%+p#X~Tlw=_nvSk%HtH(z c[ ]:-G2րg,҆>uiNU%zʨ%xZX 鿢>~6|`ίG/6 +4Xy>5n2ʲ:R?G`×UwNjj5'O.!~]rGnw٨-r;04Vn={ {zz,g:"p PdORyVHV Y>n'Qz_XUqb 0a`>S]6|K- RO߷\EquJ`޻M{]R؂tX?w۶>2kWB»*6(w원:..gE4%iPJ<F~#@)#`'_Q%8ᮩaJKI@^ٽ."ư4R6x!}#zŬ4R;a܁↓FaUq:y LNaHyޞqH=ӻ:mBH$H=+Y_j<9jCKL^o%^_0#`rYF_6h/QeJ:*1>]ẹw6eވ*~a{~U}>δ2޳,IXSDwm{S/nލzX"r)d'cNXo=ߴq:--U4>Gm +RNWϼxUWXPQ~J5.YN?Cz~٩˗I8rַϫf6UkMȺAQ߲HDZ* >V.y }(Ae{1WJXe_O:5Bcn E# $ <ΕJkjg='3V@moIH +œNb`:#>. +l)PTz</=k~Qw'y阡 ~|K+xZ޵T"֊TǑNWջ>ڟi]U ^!@@xNj4ԉ{FƤ#pYBj zkG;v*tsbԁG#w阠(DG h51E"FLA5g;*ZN=t><8q񩂮MMJcx?G±ƥ7MHUwdcevJ^G%p1ֽjAc 0CˍP6}կ}ƾL[J?AM/O(+ś>OiaMfTYҩ]~u)zRW%Nԑ8(4W|;wIZ阹 kc߹PO}^6^6mu=kCR捿AZOYC"ad5Z* ֡ƘpOx֎R@Vy1 +-&b=5 x[=DЯ/%[~B҈@,G"q1dcU-Euo2?\Lֈ F""*^Nb%\QJlνUk}Sr:ށ:HWu:'+}/x/&G,"""' 0>;'DOiXJA#tdlņ*nio_Y.""""@vrX;:I>$^Ub܇?3($DDDDDD3Y{qJב:I=Squ4SJ믾cG&k7dP؏%#DXOj*'Opt'?SAjd +PPZG.>w>ևo.:5UK{Hߦ1N6&☺gZ^WS"XXL F%DDDDDDDDDDDDD(>,W2un0iZrE k˗h~su cUU6-CEvtA_c\)6AN\f!Yisݦ_ҽ$cN`Am5}6&Lnؗgcf:â6ΘkH#iǾ EFKRe8ۄtV# RUr)֗[#^'K"9 >Tvw SFH^#mk%@x,\WQoG7[BW3ho]kJƻd]kt+Gbߋ8$|h')N#b2=eBVv܈? d|Gc]4Q}vEPPr{q=gȯ,ǓxU֧=*T{0b ~/r7oZuz!pS#*\:}v_z:|m.ZwیϏ99*LX#N=ض}Ot5fE +TU[@rǑ]&^s?RW&\;p@;~s7GW_U5jU,ۉ >~;=5c1V,67H־O빝S +Jجq^<wB7%|rltǹU\tP[{u:2Tep)֭R|uVֵ{oiIҗ`N؎TN)*EgVYnvw>dN^62jYbb llfGLǦ9YrVe`@*8֤zJ|Ve˭@Oj֧[_M܉u<~1Q_uUV[z'D}Ns`U6 A '+)!qYXʕb\.R56U3oĩ[#3dT!V#e|9OWEYj {vٖk=Ke 2RJ?}~-8P[nZk*[Ӽ˝Б2rKkkKU+kC)䠑{|S^:KJI ): ?3:NĺJ_qBvw>~NUIB㹨zmecCH7r{o21zv^5i֖@7/0] xnjV5hp:$iϟ9'*]ba`2d k]C"LQW!ԣ"ASE:#U`encڐD_ԳL_+lOX9R]~߷OzwSʯ>5mj%pS {Rgd)k08*<e] Gkgt걱 +ՆW-8|&fs'#lgVv8T=2:NMyrUE-=KTv/!n7ʱ( NλğwXb-Hr31G Y:FoLZqٗӢ܇whE+G8jhdr̅€^Tfcz~J گIU#{m{߼e7UȮeCvdYmlj|ofyѰ31~U֕z\JɿVvÈzQYt`?f7>Q. LũAFFtTܑN:u^j[}O*H~ԼJ.`ϯ?WA5e  u|Jdz)#~Ǽ}C3(bkmˇ6_ dt)rjɴ[ȏ]BwTq|r"FXI: ؟3?X9]Wȥʘ~(g}N밒O5ǰq6F/NX=%=_wq܏;kcuj aP+) S[/GiAnS:3ȮL +XͿTrړQ=3;3!ܢu{q;;jz k]K/ֶa^|LF<b挫Gz[Fҳ^% +̽Cuɭ([[o>bW@bڮV̶ԥY6>yu,TXk_S8='!ɻQ뱻9kh|G=g kQާ/ GOH/E4cRYZx;rz>-QU}H+pNˋԲ:>{ЉRISh6&Vx@;>&eG?"k4"l=48>|ٮ]sS;.H 6OGFz0rz.^Mشqc u! XO}w%kevDOM +)\_@]IԀ [oKRmuuhWmǰ$\t˱$p+ W0xɁb &NV/Rέ2gWֆu ̙]KamhխvYqaۿa}?3.UVjʏ+ +[]հ2qitJNzcdch&asy=dfOK잉=ˏ~+]g6|[j5;ؑgm4\Cwz=־j*}2.x::q]m>ge՟Xh4I1_O|VoʶR\y*;ǃs)ߘT +z_PxmUe! ى~ÿx`rzJΛ<^@\)0ð&Շ@396-Uޕl ?eMls߁2P텅MVCeyq$׼ÓN./6Ew6K=Fms,'eqӦ+ ٧>MHxyվl=3^B؊pGg{̽WG+[JYVb 0 A98kMW +g İ!><hϊ+-[@4I5Tu.B䞛MU|2\@Etँ>1)*JI*6 oGL R=V=X7QA,~^~7T U|hggݺm؅޷>q:vWB8 ɻ Vջ >yR@=t3(*RۗRSEOa#ɖ]S^@&VJavBZ(kPXP}Bs'-ty6w:o!yVdmHalOu1&e6-]~؋׫b&·& Aؐ:Y=v}l_)bH?f߉NN-8xuuB K*Բ?00R}ney}>2 ʱxV KԐݽ? :|_$VVGvŵocrCuz>ONzinw?UGb@D/#R]S\xmȯ ʊPoԳ9 }bzCwηEyYyUg_\:'6%-y T.L˧ b|G-ʪͶ:Ti#яfCX!r~Dg z1^tؖ.0al3Lf{u،X3/q*s2)x[{z@moGcrɺ2[Ջ5>I.U uf +6{"8p;lO/Je'7|՗NA"FMD{7>?WNl~bוV`LKV/VjG ߹)N5LeSkczζ[8~ѱ2~noMseX@xZ; Kcz.`7d _YFԭI݂ mW+2U |*NCe@ٗXV-G.#Y?e̥jV.a"q,D.Pgw% +胣:qϺ[-UF}*pߩ[q{߹=Ľ7z7k-67߹'rg btSK +az:6.Wõې/[aX,f~~C+MkDat~4Z!uܜ H=lf01lVJP; +uG3,~&حwFV3 +4xNv=_7LҨFa⤭Tv_˵h37O&Bߋz~F=bLc]YhRO w{ˬs}+uYUQ* X+v}yi]4ըV^vUcUvgI+VySCvl:>GFz`? B3gaӁPǭkrո(^@U=ՏR6Wc܊_͙x4{sf4[U + + }ɔ.1cW0ȴS[:?2{ |k5b]#_S)[_Pt2l*:HG@y]U>A+%R gNDI>#SJpV쿇>'}/*f睌u*\F 7ՁպOZɲQQImy7yC][cl1q +od% ~r޳}cV(䳹lW#Z;x%߅zgl>e,Dގ(o,O}jdm:NS/hy>,=nթ)+á[ˢf:{NN^"SU7c5mō!jCH+˒#@ǖ~Z# iU"[U0%G~=KxSU5֖>%V7 6H}ϼG[% ;F9UcYuYv{x=m} _HΕv)EkbXTrFt|ysrR>[=-2;iW@}diCT D +]a:;Z z~WCdžm~_pz]A2vtODh>N\ΝNʬoV(v |ɽW.&Ǫm#3Y̰a[?N ZzUΦ]JɆBVO,أ@E{ LCgg!1u}T3{>$xW3)-zaH lӲ}F-wv"iK;n\ƻT)T l#ja\oZ֧uszK0P@$}'?XqJM*B~OPLnoQ~Ә{K%AN)$*@`gNuU5]V=轐`##? Q>YW<=/"k؉Xd&r!CdQ؎@={*Ո3q21;XGN7y9?'9&r/ ! + +4ajZ|R*o"y65'`t:ʴHjZA\ `{2׫_V.EJ֛ ^'dk{MAhh+,)`*UWP o}׺uelG*Ngz~-me`lY)\&z%H+zfX}ښֽ 1We(@΃my5W6 mehr6;v'wNJ+p}Em~zV[ N),ݵ*Y#|kE?L솫EYSG=q1yVU!҃{]u {C]u`h$lv޷*?J=#T +@׷˭s1v>ـ$?Ro=k:~60OI޻JRY!Ob飩ΨSMXY!]w?ݫDmb J\I>pkJ oə&JU.QUMfgհlNI7uթ> +TQ! u6Gg rܙֺXl*:rfP|׫8|{ AjRρ bB%Zī?Hϩy!p'dl,UZc^;8UJQlp>Q>Nl8wo#D~X |3@49>ד/%{QHftu= s>RMrZ'bJڡcվ'ܝNu-rLv#>_e^թz +]06/Rz nOqabX*}`Crֿ ~2c,RAjU8 +e +X#]f,b3WmPXqj©iB":eR]밮<2>;Z$.$n1}~@ɲlWMmxl|H_xvY]kOUT`$,[rM#z`01v%aCmS +F#~& +O y{r~(mVfBzs]66{'}uU% x :#dk`'і`p-]$?_y+ʅ62,Rb {gøw[MήN67[oy#'ϼbce>ejXAT5c?zpڠ)f'd[s.7Qe{TUeJ6!*F2j BxoE֩Way);(H䤍wF X +fqc;V*[070$rL͉ҩGEާkvǻ1'Z<^+@Qȝ(g;иՊ]F6I>I2Lœu=6 VPFWJguQewJ8CHj(]R'O +WlݏԳlq)6)ckcCƾ缆WuPAH޵o+<[:j^5wNč;=Lٝ.LڤMʶ uCq؏y>KE٢ rΉ$#g>=3t~PC&y+ګ:8+ $z=7!̐kʩı:?10~f6.Ė{Vt[ӃH"7{g|;MVA~M1;Λ3 b݋]lؾ1>{}˾UOV}u=oXԺr f@sx~2c 8-g߱'}8}:(Wab);7όoNRX*4B'n]vQ1~69 +l~^j+>O69-ܟK|v|_OɮV,Դ[ o=Ǵ~9T{T=exm{c475.rǵ '#ګ2:e#`؂%h_.qpm<Bb\8VC⽾P֎ƻC0ĀKŶzLŘq;'g͙_~Jxާ*B 3>8 +@6t>OrII0F58y{f +U@T]Y.6;\Rcق!kV۷7%7{{Oލ+λ,7F|pOũV̎[L=~}tdxr[K9'{O^I@+ABbW_m [-v]c_d c^WWQBkkv2?GŷXj'd|r'|{I ד;(v=~E^QI>`@mx.^Jb+iGfbՅ! O"H|-}}Uas%G;[ v3~n5VT޺}ml{|QOl$z vk,ɉ^kyWAƩlRl~kijc8_gDZl +Uʝ{,<쏳T`V֏8s=2m `@n ;3b܊vgDDDDDDO9w"& 1Ck@N6? "xN|OM!GgFlO؈#!q}Q,A' WP/#6?#?l![˯ ؋mV([Lk]񹒮}cT /.c#IJՖz_Mu۾}|AԭPŋU)Bo5$h!,"'`Σ89NƭuD"u*0X\kt[[4 #C%O=:S ?3f +?|x@yDDD@WIŷ* w'^>4|VJ^9zARs掱Ւ̜4ب{x,UA ~,\Z}j K  ؂D[/:! cS})oQSUZde+Xl%v}YՊ|J+MATޏ7ef*ٌ=` ln:I_V+eZŐN`/}^ }Ը@T)e>r쪧@$ϴu>촡}*kgU[]|v*2T-hs`jqE Z·,Hାkvٟ`6;}»WDv e_Z}wnJ?2:iPdYԄɘUocjX`_PĞc__q#\dD P.ձC`[<5gg.>k&vkmy;'M9˗IJ|k}>Ŗ%,M_z`fE-a]?a*Rm%J1$H>sn ꋒ}+Mهr>rG?r}"o%ݴWZjlN[/3%R%~ }W z;%OT1>]F͌.r~̑e~Ƴm+[[T V^袯;oWRo\I>ʠOr:̿!rRs!bGCw&afW;Ԍ)յO{ϰ;u]8?u.06o~oaz_TcWJX>y7Skc^z[j"xmׁ0t^ԺĬfYi[ѱC=ǝ'M=Ubemb~%~]?ԋ9IB__hם6Uʳ'#_])j2\vDw)^+$bw>~;z?Q.y\eF*a_sc*r>f%_bfZ&SaWSUumƎ# bd:fMbHV֞pi Q*D]Z'm#ݏeU ʸ{|hNh?jZtzdzeҳze9>n)ZJEܷ=&L'3U_,.xs_mI:.M]>\^MR6&'n*-.4w=}^oNz +264>n)V>Ru="S˒[.CѨImݓeyUPރ=ۿ:6&%²+%VY޹/p;7dDqcʫIa2|̖Y jjW+k[g}VK}6iY{o]5ThCUҀDZ r= ̿tJgK +H^^v{@cfNByJՙG(,w3V;6^#r&+Ul}ocفFR/$Y\1'|H'Ws:vMu*:ڳZxEnVeIUwbQ_TbR{xyvEac|b:u gRꘙ#~梵usHQ~z÷|k,dmn km BI8Ys,׈j؁K1V[Af5f`u;x,mƵN:WcRkjΛC_X_Vrּd1A/?By!@VSˉ c}]; +J5+|ܩ {y?Y=hu(Y{5K6Xgzֽ6I:GW^2v~LI]7|"0OM$bPh)/YP(ea}.F8 "bZHYd{f>nʳ/'ue({&ޥzvPjꡯ/: v* ~.>.ZuT%u#RX3}o#`ӋUl,@gz?ͽ#?ak^F!9VHG\l~? +Uӧ?Z7nʅvN M| jA[7 `t^bHnw*رGAI:#{Nn]1֥)H~ziWfǧM楉GfT﷿`t^!VvfEk^LDžԫiّmQae` H`W~㼇/W1ﰵ8$r[[M`ׯmTe]3ڃ2zcg\#q:>g]V+5EV}k o^ zaXE~Ϙ@F_GD|lk7`[m +8F܏T2տk*~`܎kC{+ש*CsKO0,nLlXdxIm,\Rc#Zj(+l^=xsMK*pF6;kDʣ3/ae ~5Q]Xr:POdG2.YQG+ohH޶?Roĝ>έrq* =2muҫA:mƥfִ|^"[]?kl1l rz!v)[P6,zE +$DD@6n=BNea G-]t{m[AkUmh#؝Y DDDDH;"[G9T(xDDDǑBeVXԫFẘzo~CUz-i5'\ kĵDZ*Q bLL |As`<Iu!_V!ة=IFV +H7<'SZmy@lOb"""""""""""""""""""""""""""""""""""""""""""""" (a{{4v"IJNܥt?_zN&o^鍐q9Sڜ;* +(҃_7tϴq6f(j*tvčxQoEk5* ͋+bvA}ϳ񓮌U-/ͯR3U; +7FGʪdR6I׏3`R<DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@+z6 Bۭ]{ۭlm7;f~5X䑭#~ƻ.֭k*ڄCc]NSe`44c 9iOsGiqVJ-~N ֶ7y{lA&V'nm/zN=x](,XbL|.'-޻o]_VѬ7Í%-V&:=+}4v2OoNY.2o|YX%DDDìfL!v1ȰګNj0KedSm֌Nʒ+$kQEJཷX+ 3IL?~XvQ]Be~D}f]j0{>o1k,`YdP`[oX̜ .r[? fYt>2T0ʑD9WV=?cuz@UI[vfzfo^|t Y*gVr~|\l1izuSrn['~dֺ/56~?ZjlhqrIzEOԍTYPe@C̦c)圾~rG_՟7ZeFdwe7Ew8h)7b=X+! a2vo]W: Osk{L,ͦźk-)\_dwV}'/PSֈmW`G':v΅}K*ƴ6Y^7߰ۗz7U* ~%,^9|e+O5oc}k?OC'"kwj]4~& N9)m6R\h*FrNf{fX +.ICKIky~Kc`=mmMSnUW"V o.2sutl8܍Tքd/o=2}/RMh ,U5=EODʟ&7ml+\focntVgc~ :YWaluX4w +ZjW|H ANGV&a|ʎӛ{z6cqG-,YYu`5f\tO(ۧYo*2nt.kN/=;n[Ǯ깊x؄emhf/M%k}B6Xɕ{|Ġ[3? B($6|wSQT= 0P@kOR.r t6u(:ne]GУ ]u(˩'$m4ҐŔ^4{܅2"5ˈmq0 Zgd`ՓnqKMEw7y6eYj)Ewp]NuɭUԧ +ƧSubԱO}v#kj H:=i^Mwr(XiAׂ&<{,~n m +~]$o{S-Wh!oGba  <ϫ %FΎߴW'7+7"Cԁ Y_=@T~cabTqxcߑfNm~=YuiX2:a7>xṊyOٲSmiQ2aXȮun'GLB|\O𵬭n;])XįB,{V~I$#}Og{YU=oc" 5fqrr}u\]3r?Uc/ *$=0Uu.Bb+ Pނu. =\$`"@=gOF̧@߹?S>(ӎ7Y.r7~=ɪΠ)%{*s^L61dZY7MO{HG1\Q8:<ױ'erk^zC)UoŹ+泓D>S*?#.qåJ-`r`8:@L;3+0;gRkۈD[+rNV@L7Asm@cV!Gϰw>liR@I 6]Wd|>^ʬ`-+̨k}2+}>"ee od0 ky}AWy9>F +X|@'E#nGԐ\&`n;P l6G}  | >[*QĀvhfU`c5\/$`0^m=,WcA|Ioߏu0gW +==gfVikhX9Y<}/q2ϩ/ã)"@znBt^d#Km+zXF&>e}K**ثWm!$o?lǪܑc'ldϲuNsZuawVw2%RU]薣sc28򘺯NųcCYxR[ +;k2zv6 +RD0鶚m|qƝ"{t&1~u[m|е%]VQwRÿ^4u,:y'3uZT 5|_?~=d\,SpF:0։!UHߙutO8jiF%JeIIg? f5K=ԪRV,Tvu`&ˇZUEiY% +I$$5ף}S^5I$~һ%ju6Ye5 B4bLV:gOjZ7u9O~KV"ڨl`xT8u[NX/  ?nDQ{16BF_0UFWS˵8V`F|oa:_Nؠ;XGtZ'd@BO=n@`+XߓY^tY<͌C;$5H7Ƅvlr~eFB/&.HUNVy_ywpy-Y~)%bӛkC|%A=ǐ4|k&^'Ky]AkAu䦐R]ϡB= +Y(J6ϖek$ԺYJ:U~sի;,,NGuf+ZRZ +4N)`.QQn +ѱ +(#crlȴ;u~'`{m9VgPYbvS_ʠ6lwٕYui^.uGfbEOJ{?' +ۯz V T B\JE"8oaRU:r@vn܆iUE68Y^+ ]iOd`ӑ:Qk*DĪZEY+Bc6h '2],}_!B}U.{-c"Tx\c+u|CrLzPܝoa)+3"Wڗi]_vч3&JznVqkնA=ǁ>h6WzgK0/ut8$q=c IUhl}¤k +*)!>? /aQowkV)&'|xe>EyU0du l2DDDDDDDDDDDDD@8*F ?pXVkiZjtm_%8/yS*4ژ2z^&ksZ֮u||,GSMl%Hp[p A܃}tn`2o1jTJj8^#ƇiF5YuEuo*an6FjDCPߝw>GHZRJ +ѹ*)x?1jz!kqV.mU4ֈ䪠}QFMv|b:YV5Hɾ,~{O3z}A8^7hLk8V%hOy'Ϯ_LƯ>${ bxfY]Ze:ޤɬ +-]N-mmjEzUV{;gN'm5k }ᐏEgw8%L_RC]#eRGaΛ&EK`SoGLSRB0eFb>ʖ(Hg.9H$ot&:(-J=wm}glj5Ҋ(qǙ4_mwYZIF* .O`QqTJ;twd ?¥jEjw~=.x-Rb#7%J:MfUr@sCKUxfEjT +ggN +"Clϻ)ʬj+!*@#11(*>S0|v  [ZJID^(RG/lf_r➊_ZGAe@ +I}en:QmjT"_ kB;7V_^A@n#yOKǰ](AtNf5d2]6#Mc:n21H+;`{w 1ZVĖN#$=zHc[~w;fdAX +@}DDDDDDDDDDDDD@+e8ʾRM{7}о TUZgTx;]lB4|Z?ŕJFkmm:?M)Ԑ^,LJ>dw6;:f)V]J?Ʊl;U6yM,n=IbҒU*ш%y^N^*8^eT|[- gLmT;w:*9+ }I[ ) `;J?܎#骶 P;]C *c^5"WYՙv;RwG'#` ߴ[Ƣ_o]wRwy(V|KMYaTpeXqoLB$uBё?؎彀2u~lEXu(㿉}Zm#9"{qZgzr,ª|Mx4eNlu{ix%m +`TP~ K5ⶰ-Ppo??`Hv!YE#~A+bzm>^ÛPO#lkrW~\IDhkOp:}Cud`x ̹yU`\c$:!µ teujk i:}̬FՇqONa* ۰TP9;7*>#rU*@jv ~S%׋[[kDR 2W͋p/c;27نg@SU@VÅ;pt{κٟ dȹ~Vm]t5bnRz+2"H~]DuF!YY +hf~%®֤;3_*1y1q}jsEeyPOgUhW[|'Z&}l, +=2+'jXW񘿒\MכJx  ޘwfaVJѬ~>J>O{{Z*jvamh I"[S[= QΪJ(mXY*v+T#; ;-(2k[k`HAR|Qۤ5Ҷz]R5q:f.ZTU@ +mCsGVX~5qbYN+Ϣǹ,5۷ ߾O¢Z, {U76gkGe%d=]SNfe IUQab5'Oa-~#M`iy ^:c`n/QB([jVzMv5>IߎYU]` x4*̿fVضZmX/&@kG}asc`/#Y*PuI#adnVV]{ +ؖUߴ-eW@m9qڒI1m&#1 +YjIa%v|7E8ȺMna'$S왽FUM!= x4;oqcԇnwByMAc7}ΣӖz~5̕UfW_+cG&{>#N9:W}ZvdS@$뷝JbZzڲ֕ug56R%e}"|G 67 u:z6M*ƻ1&9I]6׭eLAZ)F]Ub։. +UAYURƧSP ?q +[YczVNL-vKVRu݈ 6ĴD挧74[nJa(]˩GO(r,{?XrQ> {>V\a`W; 4 _UcROs~Ǥɹ]<0W[ȷsʊ륊cv>9 +=;H EX_ݐmٞ[bwۏ}LqnCvUwpi`H'=69xPZq/}8fRNN={9#M ?J4G^~fKۉJZT +VuNմJ{k~Gl]|ge"[=V"VK뿁+p^B]6@c\JAuIoccFTƴolǷ2z1^v/f"ϧv>ęΗp5pY|]!{Ϭz=?rb53(~fJĚ=֨lkwv +?# M^Occ }-fd5\kZǯký,}/Bi潊*~Zl䑠91s*޻OBVKx$tIo` IN_ĻŒd +6fdyi+1<X,SrdVtx*DZĩ˻tј9lj#ɍn>I("j\Nޕs@ t$&t֯riMVXZط+=vr[eLsZZq֞)J<;gtAg`>UI뿼Kٛ^X\k*jm֎g~Jmj@^rcsô]5Qn$d3@$zIMj7& eT-AFW_w޻(#uV7[ z^Do[`ܜ$PJM]xܜes YYe=T`lþ2')3q,R/nkĎ! +z\ג9zmb[H* z eV~ӪT\.WR;ls$ô(ʼ9KxpFp-gPąNRK2.=W'VGk{ }'Cy2cd]Ee=*ŴH$]~ØVa]vЉUlFR$/t;MB()JKhtޫ{'Yֶ:ܿkz$&>"| mlNGTK1~,xYͪ$o׼^Q2U?xՎ A<7Iʳ}irCzcRr6j~#?I/IF^SP95"濼9}ԑ:~]\ ;E5O"ʩ<G[o`6B1;E oÅ)%UC|ޣB1GuT嫩j8ȱTt97Ό-VoWC;kc{/{eR5a_55܌:P|P>ˈm;zj۸Q WzIWȾqWT+qUݽJD(+QGo`oR1Nc+2Tŭ!RoLo WzQ41jqk +OQR.~Ciy\Y{q#~&њ]ޟVߔ} I 7FeDD@*$t6{0v*7f~1=d4|ls݋eKkk@W~}c2>霻RƬmKu6Ky֔?>[:_J-1b?Sme`[nʰ=s|!&Ic{`1p~uΧ嵃ׇ;߂"c`.`U{iQ7 ~:dDDDDDDDn&[+ @ jLǯ +UG,s(9Rˮ@[_ XT o]*"""""""""""""'"|Zʭĕ 6cWtNz@q*~ }ii;]ցbUp +KljǺr= K ltĭ*B(UQ4Rd{,u{9zC]eDD3}2Ug4#doE{=:oL*ݝݎݼ?a&DDDDDDD< 3 ?{}Fbؕ[j#0@wj~A^$Nz(l#?ZQ[X>G|Waoܽ R'Mhə ,N$HXȤe *C1b 忧S-}K}6P8-?\gI]fv/gkݏԱc:muY'gXYj)P `4 Ϲ>dQj,et؎?oJ߆rΪnrs2@F<14 ́UN^oP9tOWA ,Xd]jE`/)Z$JzׅElK3_=;"uX'lZ7~%*}7c?ttE\ķ)氱꣑ћ^7RdR{kԝާuz}_9L_/gubZ|?0_Ná_=xزn$3`s؈YHSG)6[j9M'RC'J<qRrַB+9hr~gTe6֎PK"SS7ShDv*``bOFxԡ(;(z= .+yc[ɂ^6|BTB(v@c&d #j+(a㱞EykUVxA`t<}'R|<'R>h6ON^<_2LDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDvO귥眚.7fu!|$ɳE(zMԖqZ n.^m3sebBmp@}紼bY`Ե=T +O`Nܢ'?ݑc_U)kM{&>yk۴܌LŽҨU<aϱ 5'\,f# ]'86{kDDDDDDDDDDDDDDDDDDDDDHLP3($$PvߍI`Wv]}U^}uѫX~)"""""""""""""""""u5.Runn2-9Η|to]Jmee}Fjdk1߰̕FHFKp(?s}tIܘ*)f?@ɐ5P2m?ˏH ]LkLΆ=fm%ud7A#.Џ Y؟6 JpGʼoք*GNӺm +{ٽqz}K?'c`(407|.1G!)%H ۼ}5:%xSF]C,i׋`Gq#e-Fgx7*AEeA;8X {cvmh?7R/~qdGJ;p1TP'gƾ7FꇩWhue76y&A}7:V.*Iep-ht FG,ljlPxo[V 6;6ڔw`d&Wٌ +hݬMt#l?g5eG!]laSi2GHH_eWEwv"0_Z-)nq L,7Q,Ssj;9cy޹UWjN~t2ĤUU}UfQYg,zܴյ1 xJޗ]fRaSe-hfG^ r[q766}fa1\n4vF<"@f)$R72.N*˰H%YXlx#}SR˪f@h?1?ROeDOb*$kc}vq_f!ZTߗU,O3`罞iL9Yt!TQ嘅ezrlr,_bܛyMo|jwKŲ}佌C|IA,WІT%Q뒍vچ#߷t,RO<;Jv DcՃHZҀ^(j=J܀=/^ZmO4 +[A4y lwo+jp so >&6O>߯&tz߿G9>C"Rn_V*x+=G?u7xs1u0/ke 1܂>|JzYt씲6Ne=, jrit]=[> V_ؘ!.?a"cFo-6p~ìtOOU5[*=Jvcd{"YBgPj +,CPI:̻-&imC1Jaڗ'653Do~5^&яQG_VsY#:␙v@)i'󖛚_8O|hd;Xy5('{#;g[P5PE?30^v>Jr2)3&@[{fUUX;R3hlCΦhf $z=''= Jc-_ŀ#'wx>,L@p@ (:]o]XguKV2.bTB(o)$-V`*D=s.o>9qۿ;%;Mu x%u u};ۛ}-J?u +@ X % rYgS}`tjf_tI#пد#^Ժ3+:bloe_غzuo__>mUc=W_m_Qaڏɏ&[[oQUF8Cl:C_^EZ#IPNs}53a.ڲʱ ra+󭰵9bҚU[6R]rQHo#(5_K0.JͲ7QH ]s%,)u@msM;h Ns(Hwe}ξe#e:50zWKLgF/g˂';xH7R{=bžnyUͺ![AD삍h3<6@R·%c\w'ϝK윚{`Y +{zeV26  ?@͇A$I $'zXjd hg)zfKf׭ԅ$߱>E$ݑvGUM(^%ԒG IRt*$|tWY(,J- X7%WjXe vvffκn=^ 耟>I%DOi[n6UzsB 0?*Èײi]ZUVю=.M9ύ}{yP@SCj˷$ĭN˻sC;u EjObvoΘFz(LdZP@Nma'uԎWcUll flԀt8@o|djPR.mkҡ6>kp#yR;~~ԃgA3;ĒM5II#q*-[]׾CӷiU O. +:>ILıK&PYw~b""""'ˠ`#DG#1LJ;+2W#>$pJUҺMV۽ +RYRz5y')lqI#ʨ >_̸9qWuhv]< \aЇܐ}A}ǪrԂ¡K< L }XViC"ko]\f.cvW@og$2îV5gc+ڪd::13#As|<Uje4S^;g|C܋V +ʭhPjVb $`|?:ȼ [א}[@WZgíNFFnJZeYtaTع5Jr{rtE5v{sv$kv6C݈3WZԡPh4sFW@+왁:wQVglo嬌7Ց` +. hFI2n&U Fp+G@OPbCcx Ĥ?M9~YC Q=V\ƳLoĺ]ǓVS=.}RK{H:S-FǦ6ʔ O* X')1fʟ(߷iVK($h6N5'PO:W5ݎyg>g@oH3u=5g#v5-+TIewRtu:/,{nH5iS> A>OKTV;k|vt"< Yjjݤ}o-jR(ltkRiץnYQkʐSb؈uB5UTIw$|af^st̢] M[>6D&2mzV!#6zUA߾r'/Oʱh<{>Z J@]UX7ddQMXq\e, +@(wS76Kp2}k +w.Еsۿ\ɛ?'"6R0H{Sujz&-wkI'@ē_:Fm[]Zg0aX|O^"~| _ֿ';?=CBu"R#o+7Hb +*,e7TNUK[qn@$+~}{Hs]=:1!!*׻"|"cTfȾ*?ֿ(-3񪣯tDU/^qb)ܑlYHSA~F^[/*ɵ V.<ַ-6N5f#` PuVwW.kFKw\O׬?=9kԾȖ]cˬ~2IkC*{ Nuu؎@) JmwؐA$ 3-~![Oڐ/J^Lh~=䎄0޶H=}S] +* RׯXIe u=IE EIS[[4;|Fʞi}u(lOlx}hC˒\]O #`J-uY(?~Ik^Z޻߿r2rZ1QNC5U9-o^Qirx葿1nEeq,b?|;H+ʞ2:e>=w?TjJK>f~b5ΞhZ+?]0PIj:XɡFa#Ooc3ֿv /qаa )}wt#Qcs#\md<<{YQ!]{o~ҳ-VܖysbL+l{=fnZckeo -@'bljU#X_oG͉ql*9hl?<}(ujU6%Z^U {ϼu{yբ@D']2̛e\:qS\? c)_eťEK>*氮pB]?/tػ,ŝ&lF#Xf$>7)=,XmdzP[ J1#7́{_[~&EUc- Wk)Q^#Zɀ>>wW鬫`Bَ)oavZu !RF=G,F]Mr, +c^Ô!H `v3_]Kse^ +O""""""""""!t8ԁȶ>ܘ̙%rUIeLj^R}s8TֵPF8)cr=$ȩ%]7(E:,l{IQ5{&~Z:^OXc{װ P{{{˜^F[*WmʫZJ5ȍQYPMW]v# HǪQ]rC@'w0ul*5wRrH#{$o[_zT@'x~.N':1KM۰HFWe58[d|1~Ck[O*(U'DDDDDDLTc׌A$ ejcYɵgZ2O€ͮG]Άdj{(>~N}9J;v(CHϨMo}z2gɳϖ: {>~u]22.$".ΆOa1tΦQvVRƭy/ױL'R&PCd_իG#@rb,m8]r.{R""'g_Գ#Ҭ # 3Qt' +6ĝá=+jd&r+6jv|tk1Af.A:-E5b:V.⪥؁{s}`kܗl=NtA2DNfQ@XeG(aGgDN +/QG?U`$;z)(ΖooIn{>-iRB $V߸;sY)s:k?MGe*V\߃Vu\}kRGKɂz0YhR@Fk'wJn"̋G +MSC[grҞʵd5)1 kZ[,f ;'`ۼڢ""Tu,s{SZPæ%Uωhl9x#_Q!:5}mS_}kmyv$a˱"clѕ3xO<"""""""""u4k~թ\+Wa)_+]Hzֈ6Ι_Tŧ*mjo_%D~4ܴK uR~_YҬ̅~Ys-c\~! .=?SN:5tԊ vo~tHS=3XZ1)T ]n2 */ȮUx 1'߅)¡s#Z̃h ܇ҺRz-ۂMJU]l7lk>6?FܪL>+Q֏1mlcԭeFykco_Yעy˵ت%ۭd">#+cFC;oWm{qܕ5{*C:]\m^'÷m+YN%aڱ迾Z΃c:= gpiݪ~O +%ωCsYQ9oW`y_= ﵞel.9L*x7z׶n~ud@v"R|L]oo{]M_wkad""""""Dߣ02J_^*N8ľngU @֬*>_2.ho>vo|i}p+ߙF01^tBy/zn%xtW"]ݻq99koyR|*Qm1ّ[W;/Pk!kv=':bȡg +D+4Gbݯ36W5-W;k_@ϛON`Zf>Hxa-qޣmlɔW|#'G:ӏziufL]hާ"vʻٟ]7*n BT* ܓ,rUfV:Ru;W}Wjpw"VQhn`rSX`Y~VoZ a#ƵZ1 XH:3 +Ar{j"S]C25W7`0A|wsrr.*uAm=+3:U=bgGGZmOrpȩ6,͡k_ h esUҲ6jO@l3O]9yVv[+8Ժv.K1fʍ=il,DV@,mcZ{?#_R&l^hɹ*] +WuZ|Tahf&lQ2Y),ջxre k;԰b0tűEMǐO +%Mq/{Z2Y/X!jsTZaa|z҅޵^}YJoA%7>𫷨 ig l5DmH?p7b?M_jvJ;h{Ϯ.uwGk.~īEWN͉а0,я]n@=̝[aS09h3 k®8 FR%: ?7QG_t*!w:pfEMvПTafY=:Ž(Y1'= ))kzGu6x/-75Vu=K/*Rzml!RXvq'Թ]D֏fJk]ox;I1Vlg]μw'Ŵ6@뾇f}DDDDDDDDDDDDDDDDDDDDOԉqz`+X@B Q=dq>ahgc׊QFc¯8`=w ﯩ3<( I.P ߅Pw2LDDDDDDDDDD|@b^'q;cޚ؟$iڰnUԊu*g[bR|O%A"""" ~ WE.16|=ߒU; p%V +N$#XeuX68yr޵̙Өꢲn2;F*{}6;y*""""""""""""""""""""""bʯ UIB_p[@U*ƁDDDDDDDDDDDDDDDD!/\T#jyDy2U7אeu;) y$LyVQ1:&aTu46PbaH=$`ͯ)Z}6ͯ#{yܑ0 q 葿L zԋ]v\vX.GR9-i%s-qߞdkޤl3322.+{Yt2B4FI>#\)U\쐧`w: k0eӈ::PYSS;G^D<'Csp0 6;""""""""a]>'?<#YcU$O\sSԥdmH#c4Ï^W?MprGC߾f2P|0ߑ3DDL9Yu;t'$^^QR\9vn m$vsX릮İEugIC֏HSz߀HcR0UQB?g5eWSᕃ)e;Db"""""""""6'>jy-qg ~km7:oN׍+t?L[bՋIA*r9*wصzh6v="bMz5cT 3RZZatK;ho,I']KƮir w˭{k_\5YtoXT~OB\+Z0S3cu+2-%xNIA'+_դ?J_i?ſ#*Օȏ䫥VW"?X_["?Xοߌ=OZr9꿄Gs ȟU|iѯu3+,Gܓ~m|ǩ% 0+k=:>I>d-W~=xfj}N q`;:;obg떮Y[+Kk'KyUy{eWbyXc}uWFl:*U&C=j,n@[5]|J߰=ne-d]-b׈@:clH-)[ ~[<8{I9]b<(6yƵ?] Z}t;@v?ϯLױfB)zE:7 Oqzߋzl֢ +CӼ=tKn2ƪ@A<۱Re1aR%P?og-µ^{FՋNBS~Yxk}(\<*z}BT* ܒ|#uNf vؕrRֱ-t%Ah}53YO+z+,$hGc>EwA9zaZ;c'\<*z}BT*NrvI'd}̃c^;]T+Q@fXO:gWϱ=4KdG}6{DDDDDDDD@(B6Mk"+#D~'gg +>ǕrϚ)YUu1:c\t("BFEZQ U#`"Iglj_n/,F-C$Dw*~ϼ;s3:]T=4޶ jNbydd9jeY]X+⊾#Cly?/Y' ܪ]'b{P?3.8(]q!A Ȟ޵%DDDDDHK-z:rG%#c֯,tH]Rq*k:׶,G}X )xF>]'S]o QuܗLaRh<ʯ?%_ z1ME'@g|Q22ĝۋ[f!G}_LlvuIIFNB*fW$=Eټ̉z~~- `E|s=V@;!|^?l_V%bﲱauϲNc;~BG tKʭζZ2>^6W_ƿ"7ή厴T# + ?c&EKJ`uuuCkC0tKoGTz{~J;hlsifc#֋Ƿeqs7]|s__ u0#7:Gذp6}2پTQN:#zg HNKQ:mQ[\hg>S 7ܼ7JQR 1*H~2#"T6Zꈣ1 +۹=M6m4Uuh}7NqV7v`:$G̫ JpnU\ae׎>2Xr +T;>FV]8Hlkl*QetL7.e5[j+!mm7c}r<$u`yb"q-ˉ=ȯEm)EĻB:|ˬN'#$euYzʼn ^:NJɎZfjT<̱1:V :2L+ZׅKwI&fYUl)ZM@_0.ʭUF_P]jtRLj?1M{k&tLImTVG')Uyi\Oq# K޺ޠc4CՄK3^JKz-oUl#l(49{{y]KJE +cį4ˑ܏saV=˺NGlN-yj0؉]PMzZ36"Nݘ߶Ev~&f Wԩ"sG@.į%wے=%K(<[kqPDl~3~T ô'C G (DDDDDDDDD+j4Ve\ZHuT&nҪV?EGa>L˟F1ݙUDq0%v?Ilo^kzŊ +Kh[T(Od~k^NrR7sF'|QWU 4HF%_Jxlrqec|Yhʀ u:IK9TT ˏH#uK.Ò@-""""""""""""""" 5rÿ|CTɗUR>زδ?I$}k `\kߐ +H ݏx#`m@EޠQI@kd ]auR2lU㥎U|q'{Ik[YJ@Ƨˤ sbqbnC'Dy5̨>t@9eUpn>1^ʗ>BOɡDFUYKΧW_a"&YY\`H[DV 77G հ+TՈFǹ'-Dv#1]h}A)R'>/o'ٚS+ST%QT0ԨO]f΍u֊<OrI2M_YX@,x6=B򱂏 㐺VkyzHԛ^Ewl+h 2`X'?l:]^̕:`hx$~ɟ:N5V :x/sX(9^72}y ʶVU!a.X`OЀ{@˨ul9 dy9UTUCY9ɭK`XJ+6Bέ~X {ݿ ׳2(k85ي8aY2k8aX8lvkKj)p6T0,ԍRuGϮՑ2}:PWT֋[[#^ʦMzzq'k1Uܞ$~lUn@5Jܽ>v kc.ְYy$B8p +AZɀg}eTx}ߘw)z/gڂ9~>eG\}aZ[ewg 늀W0] krm}ʤ@COE(71Z*tO5?BwX@ ;,@w'x-H+FUrՔolvC"aL c6RčI;y;Pjaufu{z"YK) |rj麷*X6xs)}DCwOǩK=o?FUY+ΧW]`cٔfi,`=hu5Ծ#+:)N&&oUαä ʛcbX =•~Eg}SykjD#ػ3̓U⧨TW[Qvȕx,K}_O')n /Y4ſc/#*(94mLއ+6m݈{KllJ:,~Ϗg +꽂3ÿ~DyF\"NJ3}eo$q=8tFUR +6wiIqrLS&qQÂr>Ye߱|˵`sЍy_WKk` ֮]r=,eJEWK3ȫabc۰mQ WS^%]W:1; xf2Vj*H{L}M6⣛:b+۾fBal},ϷG@v-z0rj}}Dv޼szrU\\Z}!j]˕6G6|wˮ]UbֵXlQNu$k~5^;Jn]uVW65;|H`gΣzLe;lh^{)XtۑM Go +t|vJ\{,xV*OMFl|=}CRYkfn G#!o +kZ%tԟ}Y=Wd*bZ( \Fs?ulYȿ1qCVm, /˿;䏈0_ +1A|W3`P@wIc6U̻RjZ❽DD=?7 ,J@ Pi=H;h#C>:]t\^z"ȯsr{b_k𖥶eSjK {Zw>56 OiZOWK~Q(Ҡk]Lv˳Z|IJ@6$͗98on"*%'[4lHdڛFhIq0xe㽅 +H>Y1k z#2UPZ1+P +%o'UI{Ϫ8Z؇4?ϓ}'F>.Uҷ[@#fp ߏ{8ţc^˛Tό>AQk_c*:vږ;#ϭԺЬhi 0cUI{Ldc;ǦPŶ*3f1VN.Ԅ.~1$ lufD`g&UuR[rX\;;ё6U]fCױ28 +ޘh38.y6}}GyY`^#YNmb&$T{ U[\*r_oZ [~f>Ӳs򙈪,̸䛭bFӴgDfu㮝1]x,yv=!Ս];U;1rT1v܎(zɭlM0 荎ǸIksf5UͶDLdTGET-V1:UhtՆƱ +rcՍ«E԰ +X-;_.W٩$Ⱦ7쩿VF!5#.9Uq:"6\{v.=p鳣U,9݇6A_ޅw]Z]N_St$ QiElrg'^>6-Y]w2IO6]XNt|Pz 6/YPypփ*ЂO~^O[G%)|I'D)u݆m~LOWѿ-aNm;hLcޫT8rJͮxEpsgӎʔ-O ;'ֽ{LQ7+M ʈ܈>Ue_vGHf#=Q@3k#3XG:X/ʏe%o]^*]l-\,֚Rr_M.,ǩe3؅Uuerbye2<[MWYfuIkmYSZܓ[U􎝎ӌnD-r~^L`ۃRO*bW^qʾ{ +\m|I~ k}HtPqHW˓Td4Y}{LZ^yo@:cE<ڽbG_M}g_ť[b^n59(M.֛DKnJUbQˈ$|]7"LFMw{ؕ2]YcCMi>5xu(UQ0t<~=V6X 8jka2֊~{gCljw ̙}/=GUö}'Ј-d^#~z5ڊC 3?LĤU(Gc~f:+5/8 p1ҏ +Uįp5x' )W0 +>ahF'NߡZC@o=kj[Уe#DG0`~ +Мyf?MNR6_O*o,I^jD>g]+[)ASoip;|t^XR1lN;O1%V +` + l}O#rtLWĂ4_N>I_Snd-X$wg  Њt]Ϲg JU +:l$?QEx+B3:V.{J;/˳Ok7TknHYA~>3:F'Pu"PH?/g8K +/$ 6``t7>30(^u>lQg Z8v;~0EEj_pq^{};'Xf' P:aḁ4EP4DF+PݷwOnT w7I#5ڡռOhWZ*( +6t\+ff X$̚Ǒ^REuo*`3tvޚz4^'}#:Ҿ}#{I;$&}05RTwܝg6%XƔTޔ?yNrzw u]75VU #ƵLQ^2 +PATRdu  #t\JPK{.ӕ@g^1qU֊, ?S ^5kcJ;7if1Oψ^.vODzjڊU\'MCiZ|=1z^.5uR{kG~Fd-#e* +}5$Hqn;T؃}]ӱkZl\T*444='oH%E)g ~uUuJ@ M 'j]66;S3t"۸vQz%oZThh{hvzM%~# +ӐVo1t^_h *T~"k]]HĒwo^}aZm +P[_1z>5obQKVk`tt F${>íjB< 7cc?PGqϋzF%.;RS֏se>_L^G #^4g`Ӑ] ׂ"" ZK0#QIޗfe+DqcZnU6,*X#vE)V=v yv !ׅ'̲LtXr4jfOi"""y1cYN.6Ac""$\ΣV Row\*MvKw #:XA[1찷-2`5Ye<{*Vp@$w=1dZseRU ȁl̊vF{/D6@ +7?HYmC|OIr:`ó"r?ʺN1t7ҽz'I7 QvM,pQuC*m73eR t0l~n6:m@5ԙn%8&ǭeU[oY~_:tljZ6[R}λֻ=w^? 8`};zraܪ֨F;q^7$txt⧊U>;3;V~WIVVόNNOZlw$Ig@|z1qJ ++!PT ru5k]jU@P;`$lx-r<%9/ĒG̋iVʭkmV4 ?"<^]A +]o^u+L~F5o{o\(d02?χnm|,sRf=>X?r*n[rK2^!wpaBQcuBgU*֭d/.[Cێ{feuc{ֺnzMD0{HO5cWun}[X9y~Lu{s%^GG:GQ/3نe UJE$r#]OoZU%DPl6"(8IƾzRMЉM!O(wcgzeDxd*j, *9 GqyM=76sO_ #/b""""""""""u), z]ۑ R<鱽t(e pw>s0G*n!2|ݹ;}fN}5CK2Ag88} z"t+.rP9؏uGS]z>΄뒝oG]~Ҳz=\VMHߩ$C}=fGD1G/PJ *NϞݦeU貧l}l=-mG +IT"tޓz{hW+m:f~NF.^WmcQw A;kZf[R-̀}h[>՗*e|qYWN,2t>o2EFe(l<>""""""""""""''fUOӺJb,kP~ruY~Kֈv +>GOu'TTY[G^Cjt}DχkۊyLGqS㙈x8`6;m`APA_ +^V5uӓK%wC!bk3w׺Ecc'v7&0 #׺OM'}|}5wdsZًk#]}с&Tĺ YEŶ9wt:=xW7)ޏ`~]~ҺebWufp֮OJG=C ߷ciwD08C7jPcI>܅kɲ1JtCH.ljO_#*jFF1&5@)+u;6cYBkOl5zh)\GP2ց̙zyjŶr=OɕWk1WP{o߾zwRL!o]On_䊯_1UV?*[E_[/koHkmmȏ䊿_+, +\ֶT2Vvn-LUMEcxyWsTȮ+rgjt[ְz֯u U9-|V)t{kZ5&{id| E'/xYu쪖;Ay$?X[kHؑ7t4&j6k2IJ~gj|g':Ym?Q, cHiV2y䆟_1W]?*Kϼ~^EX%ymEIZiF`Rx{ 7fŏr\V齣CVyˬ.@&vjv֫oKRC_W/koD$5UrGB\'W/l'S/n/S/n$e,~`obK:Z trTӺ[\w|k[B' xZ[2 q~7yN{ =r{o_]dW]HΪtͭ_75'*[`žk8XXs.'^?M b(Ƿ%6+n(4j'Wh62`ֿ~?uD c.R9L"®."{g0@o rI AxeOÝO#Qm]e[p ܟ$Ay fJݫ=uL|pU4q "=5]{$^UaR;y9رo꺶5oUtt~U|-El, +V^ 'RN/C8.E܊'|5˳e!z&?DZCXrLus؊jjXݽCAp 'TSkXW +o{9xG*\]e~_XhwD"""""""""""k9ߤ~x5Nozק'._Qj.A&\ƘFt$ݖmȼ {TiUTv +?oc|?G] cz5]{KMs{Z=/B|rc;dOw(: :PS6UzCo5Zy ~ٟדz^; fp@uM އqr'Ùw w6^C%7b6~P^@wԹj{!ga6Uؖ)S{;oCgؕ ;=\C& 2Vw' Ƚw'3 뻋6E+Rq&ʯ'D6{_n5(?S,\JޝEefk lew,Rߌ.c^;5vղKZKc;:ߙb/$hhi6sܪ(@O}nnz, +$`~$L_kİms\k:mc#}ܝ0HPW_5mƈ=z$؈5,Α +3h܍72?;˧͸ؤ.OOB}v?)7.1m/eh <玕t~sVx5z M]M +[w;}wYWPj(OB(o$/"""""""""""""""""""TKqԩ;"B^>LZꪖꊡt+{|g|HI {~~9:},ڟjVEf*>@:d濐گ=6Eڶ~ɰ3?lB}U[bku Gp<û-yfcۨFZ~rgFa~GņTQIy1]?=v9,E:ns=7cӎa Ŝ|g0aa۹= +ޢ=ǹb-gJ#rүoޒ;˅^#SؚG+s +.+CDDDDDDDDDD@5zuuTԢN%icplv t*H^KWĸRG*Eye]s/KrɶRZI>Yen =FtA&+zV5 ް\%jv6;{Ib{J*|0Qm@\tFoi*"E9OQj69=R}Fޣs6[g7{,b""""""""""(iF=m{kEFN߷yknz/ୡUԱau'd`=ޥc[FRqk۷m8]z5}]RvW{bTێ<,Y`Q{cY]ȑH>+b)ƸZԷ"hiDDDDDDDDDDDDDDDDDDDD@*󯱲E (>kƗOrz''TQMQj6{|u/6Ue'0ʫ=߶NuҰ22WEA߹ݦLAT+qSνqʽqb lC` (6wMd}mL<6Q!upP e`>Q^N`*O!QM=$؈F]8`M$L.|{!6?Qc+'eWuzvkLu2S0-eY`j7(ZbХ_-(DbEZ$ioOfJ>ּjPIRܼw$^S#fZwv^LTa)]A;-b"""""""""""""""""""Fx4)ɺ l쾱3%(;Ӻ0׹_z܌VU vmMu*Ka""xNJR)Z>.%5)cѹ7q^zNVdB[^^e<rNhMŘte,DN6O&nXgu +z9#X '`]wor:|GjtNc\~f&B\v>úAbu-zYP(?D ++ 4GqOվ}(c`QV{?ܕkH͢t '^{ +Koϱ+]Me4-R|=/oRڻWB +{>""""""""""xNF7XYyɁ_MgS~aOm :e]qoN̅|̠sO7We]Ubu߃ؐAeJl'Ÿu} ? E/Z:7QPx(YXo·4AQMEiFEn-E +v= rR;zsb +Mn~޶?&3]ֺ=Եc x}̓uKYRs`D?U׺oɠqXl`_]YRϩ4]On{9-΋*hv5n.AuyS}UNlXX*8T$HW=yc8MO}d39(P5q1;eRrI2.U2.YĊ؝V?{ZGoyzVYªTܝwA32+beRƶ UI u߰xEijewⶖ][7!\?:NGRek``]3t }'j؂H b""""""""" 4όށ?ڬSm,N ȗ5O~+3hq^V 6Uf~bOe]Fqrj5Ye@9k7I:m9_ߝxgi(]b@N2~'V3Wp{jjE6 Rֱ-6NCuO5Cz!q αeo9' Q_E]uC`92~'V$=%mXq,H!y~2LհܨwdVq2l[F)T܍{Y3vr#lyTI=;i[uZ,rl7۾6[13(@:ڐGon2UG&֗gg۷s[ñF +ǽ] gG$y]+)]k[# ^Z|8/V?|~ɓ9~y5=v6 )3nAzݚ#XdtR^:¶ wa7xklT;YISf^б:M7cȴa;ow=MyUoNgob:?j~oVUXU=0TE,OZ{+>'ϻ1QX+f$,*fX( GawQoP. TX{/oI+NRr_hHpT ogT~Vzlj5UzJGw#{]jUXZ.n. n|H ^X +-"£ ϞnvYv(rKX]C~6|ɝa%q+-1m +5ÿT(اǿ70fUSsqU'ܓs ZX<x`SZWO[ѽA c `}\Dbۊc.?tL'cr>vɓn0]Nz ޽L&{rl ro"=oPLVs֓dc U2kK}],fR1꘍ctt jt tf;ǹz).Z¶#];y4*+dðe_?ۣ>z_YeؕR]Wn=Zxߝambdo ȍ`W1ū|*QvvtCfA) XwRQ( ):H^V.@kJ|w$,*}+M*TvrI$'|`Uֵ|mn:N;I1% /& +|hVUQ*^'获kޤ'77"sji5-uV +mk-ٗ* +l\qG@b>ǿχSSؗWwX% 65,pJKW=d;GzQ*#Y=gczKٗ[$*G[UЪ=NW^`GJ0cl7>|%(~bHVt[G'(>4v|sʾ}v\ˁXdc^ó)K}!Osc)jK ;? xjZDDDDDDDDDDDDDDDDDmXE^%/-$ՕߪO#QlOnSEW_/iw웺uؕ]f8P/ջcOO>Q6V fu%ZyE) А&dKVyŬ-[R yX n ieU+*5?#TOOxGJ뺀֬bU_wv% Z->w<,|}j+[޹(m~ɑ1EvgUbjHlokֵy}yzzhɋ7l|'"""""""""""""""""Qu?D[kYʱ +@#dk];T]&qH;mi3s>/.pYJ"orrO% ]7jF +^>L WSZYہB :pz)-USmôW2?W{z ˛Xȭ1 ++n'[;%%x4WECIZ*(Bf)j(×0Q 6ǕþOlȸӟRhBҙ+'oώbO8=ˀh!_^܆:""""""""x{L z6h~˽ܑdZ_'if f޻3>_:}iMmʹfeQ@5^R2@=3.r6dٗ[ܒ6P+ې>""""""""""""""""""""" 6wQZ!`m~tkOvVYFq|} )g?'*ŦٸX@w=.ⱶ :{]˥*[0O*yDDDDDDDDDDDDqp rT`̃w\JܜgL׼]:6B'Ό?tܻ2w;,t6{XO f_&BJiv At[I?KZKXB{6AƏoi:|'C=7q=QogSRRTk)c6:)e-e]h>~"\:u59 X`{rW_:\ăzN?\ų!v55?)'YY_?de_VoڴKTP,Gj 36~scsVmUo?Qu"N@tC ` 2lwL.gO*Z+~\eTw׸_ XShȺ;2rȧG>vz*+zn\g{Z> Q§":lyd:eumYoۣ'x:>lCNA(3:WRU[ㅩ-U+aRI׸/""""""""'SW>Wz*?%į}ۓ^3s=#)c>& kexaM{nj=(XHHYX_n^~]W^}hdTT uJ|} kkWZދ3~*zyA:/P,,DL]ZwFVkߓr }U} y>NFkiP4}A{[*~*Kz5RBWZ^eb@}-j*8QF%RT-bA9]dXdrI7'ϥ-I2>^}  G['?ѝ_+"Ḟm7Qm8|{}3P)RUaK+$wC?I:"""""""""""""5o΅2]wtcFk kHt<0 Hfr|Sn.^' wUpIt.tf`J: x34Mc㯇XMN*ݴ\~bcQ7'*]^~οm)p岏k'ƟP -7LQ<ӯ~#͟dnbIVv2d"1 g .P }.pJc s:ދc߼olrjiR< {K^V2P8w'_@7=˃EW]]PR~ng? +QX_ݙƻ')od5V *ʥ~pIױzV v7'7{ϟ,u<ܱ_٭}JZ6S;Dҳ0qI}XCe }2&:Bܬ/_vG~ϺzM$ũN'Ob"""""""&g&q6nt6צt}PIU YCg3 P@SQVPcSbŃi:GeJBlW:Օ nHe 7yEʕHN[VnɅʽ'r~v]},{.56_?[/Ϳ-f?챢Ƶ +*tHeə+#=]b#xa*@,{^b϶:f-"nkKU'd4$Kѕ$VI}!ҷgVUKЈܽB,ö;ֈ=%u~;6dUQbcZ* +~v7(ڮޯQ)C~TlTZ 6H *:Nd긽B͖iz*F!DĎ ᦾBmW!VtX~6ng"""""""""""" S6uˑc!c[ X}#͙UWxg52vj|`|;c6 +<('Nб:]7М_&v|細DPuX6GHu;յ#oo@œ^omQIb~V1|R(vjH]*@eھAGgF+b1{+`AtdպD(aUmrg]Șaj^jToU*3j->5+aqkۿ|b}F؟]?N5_vQ̶] v 49;P T*;*.,%WK}?9eXvٴU+m{"JL>L 39ۻk${4$O4==w$eRZB+5;h$~GfN|:g}L˼_SU:TzHY9]{ [Ԫ5jY[?dкPdQzt:n֥ 9}T$쇷-B>QOr# ;լG"Z[ӱ{:?,K_C/OM +9q9okֵ{ˎqRw}3ޑ:f%Xp@ ~voI2d}?f7,g6'ϕKe ZI]{>u*"""""""""""" t쎩dry_p6Fn+JꈨTah>ۣ~ci]g[mJGJۉVn1]g.:uq);k%GngT.w DDDDDDDDDDDJ^OYll|G2dkc@:']USTF\i}1c6$J QRB$}ӥmv:>&ݨ$ |#ޕz.9=@fkZPA(ֻʸkϴ(R!T"""y'zwL۵pxg`rUHqC, qOm۞YRA lo G:ޥ.GzJmR;?+ 0&|=ԏW%ͮÒ`XDDDDDDD:]wh[]7Etw +LJ{Ǫ#D*?`b"""""""""""S|WEދ[Ej\{}dZM7/|G-=?Wm0YШa*=^``3o\y}}=T=7t~MZc#3\P+}Fɱ>5^5tu^L?r4uRauKol^jT.MQ ˝W'A|Dm +h! r2"&;Lu/cP6YU=v?PB(al{>oP6I9;]fBtv;$2>m8U 7಑}OrlZj̡EKrwϖTHGyDDDDDDDDDDDDDDDDDDDHC(|'@́zE-S``{c>j]CRF}7>N>UNYDJ aֺPA>aߊj̣I684|72 @ﭏ_S&Ǧ@ՖW;:Է ~f.BKGyR/2ޠd{~7buQbUsGawƠ99oSj=S TɁT@6l8M{T!Qlbؐ4H$Ho2 Gr P5saӐu$y#Nȯ"f >ՃG>n(F*b|ɔJ)ڍx M5s5m&lZMƅSq/!Ay9~u]K[h}{"""""""""""';-,Gu-S"|~'I][ѫW.փ9𪽶fyw`[U}HJ%$o+>"4|Gf% { ?/Ms~v5к 5[kB x72@?U?:[=w*uallp|U޻׉0 mo~teO@9.̃}]mǂ`ǰ#CR"""@=A:uٰh%wCQTH*6 ҺӾ$^lkiڥr$rmO^Ev":S ?lY0jWi|tWR}=:GW95rװo?\LY cV¢ʞ$@>ĀFfaUuu׉SY帿ݴe~۴~f߸fISv50Akgoe쟮U|SG[O>#^eEf$jwkϝ]%= r|56q.70񿰷#st_IebyAz}Doyq8eYwʻկ_>/S^~3 jzrR9sGE|~v &QځMz%moD wxxWtnm.7[qxq1I:Bx$MwvGᩲDDDDDDDDDDM7Np7ɑo)[t=oc|uLϻ [%],r7m)j[,=Ǒ}6U 1W=E}jʟh>ާuffCH*KY?KeY??L-fc~Gl6?JYƘߑW7ͻ5c=:ֹ5ml?阖S{ݹ阐$imqrTwwe\((ܻuH`S}Z#ynkˬK,{2al90}Ÿb|oD{חrUNy[n3lv@i(ImlƲ- '.(`d̮Nmk95g=\;rx?cda/m 7& +?r;}Ӻ'K'"6응ǒeSsc|$:^{~_B@FEx0UE%r1ZHFfqCqclM_kiQ.5;it5؃-ԁpۨaJ xb0*?ڨ*IjO/V+u[ +BwbIa5m6>h}Ҁs{ 3A{e5Ԗ?Le>'Q'ѵ1MY O[j먱ݒfw`gon /n( G`v o]GEnUM2rscc?ô0 H>WTA}@ڲPI_3_M='@~~DO3'O,g6 xZhhxyt͝MVsFFCq+p{:vƴrǒ6HI$gRn^fXpqb#=xZXcv~pƉҧJQOS*¬s7莹k/οr߁sj?jZѸx勺DDDDDDDDDDDDDDDDDDDDDdF?3nOuƷ~z/]UW ωmTR%|!)\UBW`uqR++SUcekXjW,;!u]}+Սu[drnGkZIcpU,,w +59<).Ďҫ +ld8#G}?_ r]itW9z$^]2hUK짿~]?@xc6* ``@V$e!)65F۱X2DDDDDDDDDDDDDDDDD@ޠzoKȵ_bNjX|hIJչu P`vI[ۼem/0>MK=빩Tî,IxzmG;'ͯGD)~,Ɩ"ͅY$&RV7U}\uϏwO0uLz*d:`4D027.5'" +*LXYsoŸ(HԈ'S֚G׍i,B{Qu3HpV!H1t>0Ƭ +ओJwh{OkM9 #E)hkCg kվ5Q~H:Hێivʫ#3)PN {{/ + +d=&?k?L}Cٚhw)l'=$ ;b"""""""""""""""""""" )zrOuOm}J`dUZ&+z0+>ol*׻ؾqb4Yy Fr52$L5RcDD; +;ޤOdL]"32*aȗӧ@3vۑ߰:g]mQ+: ^d.Fid2 KO.gL{.lz%,ữ& \澥R9z=pf #{rô:5_[pF$#G㓢"x($$| PA +'Kߑ? &|bԥI>A=f}_ꝍMod w(r+[(aDlLX9˞*쎍J>;&""""""""""""""""S[.Zr ȂFρ ~*Y([N"YOЂ~(xq4w&=YhlrO v'֬f;V} 7#5%f^⻋FZkEa1UΨf؀7x?dTz8X]ۗEO[UՔ4DpzcCre0eܧmza {Dor*$)-{?2"""""""""""""""""C}_"ٗrԬC1'D?䣤Ձ>G#?Kap??/#6ǧ.Ε;'~ku^h; TbUIv~˒8D>$QղUX֊YǓ$iF{+mv:"Crml.7x:SmX-*K) vڨ}_䭵֩;U_s> ?u Z^>o^ 4N@ĎI3Ҙk&ůip |wzcKl-I 7{OaX_unblO: +j%)b@޵+OOm3>ne? 췋Z a슠{B=/*Pd'DTIo؟iRbWw pOb<\NkȮg5Oo;yDDDDDDDDDDJ:=7нԱX>޼&^:{J'vCԜK1,A} 1>E&`ňOv_:.?_ij%v;ua&WX9OSo?|Y_6?oRt::UV=V y`Z޻5' +Zl܆R^m붉l ǮQ[UU/;1P9qXZR8Gmxux,Y@zQɂ˺=]A2rbijb]ޙ[B״v+ḱ>&8gQhABcm=8ᙳ:_2r skfg^A?0-ߍ/s_5]w><.{3LSJ*; k~.byg[1"WY: .^KXȌ5Q-؈4ϋƒgdqYzTȱAm_|[XvwXUbP?.z6c]6O15ώ~ga]+[UQwi'vrq,?r{ȗS*n#^,2 >wUڧn_T[Wi6OSE}'V|l~u>V95k1~@Uf}ZQ.邴,?ګ~#(&O\oٿ!=._1fgO[:8f +˲_oʵ7#od}V9xI}"""""""""&տǥhߍ i6^/Z +f${okهȽ-^N* p?Ao^v|cfљѵ,[~^ TC⬌@mw.?]{lw׷c<>;J=K :?):?)>O3s:oNA?_}}Y_2[ӫ]'Y*6OtgA?CިnU֝+V7nHSXy[u>ɭujdǬyzUKqc o<ȕg>[.Ybu$~:,:)ѿ9N{ŘާS_g +@wf{h`oob*ƩEhcɜkduhJPJ67Fā}3f%PcÒP^{uI:#efv-kNBH{25^MXVWc@!PG$M׳ǻw*e?*5=HS!Tz̃hMIąⰿ([웬P QԹ':H$vꋘ8Y;p]t<{r sV`Ge[@yv0:rqZbJ|T&ދ}?3e+~߶yxmdtʩrWFV#+W|$T8"Lܚ>=jИ:N(N 6Ovbǹ$2LDDDDDDDDDQsXn"Tg.mPܶ$쮇jڽXn~ рjrge +^{_; ot\N,-bZ{BN34彶1*]qӿ)5/|zm-}ͥQO`{{3#sPtF|}DO!T@O3Y;.6rS<.`X23ےmUi +.csyO%jtнI2|}}Wイ>t#XQ+q#z&%k (8ʄT[|Bv =2_б^,6MWڟ$wLƯ2 4GoW')#w +~7~<%PZ1WZJ7I&""""""""""" [1-="΀r|QUc/ZUWVQ*O{[?܂/9Y"V]}2A{ͰJ:7kpD*+rN~U:2z8}4v6ۿfcO{G\U)nUS@߉mUEo2z^%1:xX׫} 9TMi$h^ɷ5|{ =9O"u%cygwXƾGj>"#ҐM=]ra +ҎCYHb>*d5;*%}׿}BN+P>7A1oq@?d:>vͣ/3ezR!9v{Ͳ"%/Mx'וV?+:u8tR5b)I%x$ue c}Fu8Ca{<""""""""""""""" ,߰t%+l 6~oχԋR]ijFF\am/P܋MӅUPNf"dYb# __\h +<`g/xkSkvH؟`IJ;TmjkU{ N`KvdL].\CC^ݻ8/ +QG(2XMF8bym꺡zsz +@*\+3@?yɟa+[&jX6kDhx9["""""""""""""""""" &wN}]UhŔ;8TYYiUf.Tk^{=ȯK'L= gSU kT22YۃH<2ƔjUۛ:DDDDDDDDDDDDDDDDDDDDD*϶-^Id)G5a'v8ĂU~R<}}W?eަ\sKZK7̣K[$XGDDDDDDDDDDDDDDDDDDDDD0ۙM *n* Yg!TU,*f,>A8%|`$āֱ٠JVk| 󙰺AKR)ں)S0Yװn.ve6X)f $l>9 +-W*~`q{d`t bgJ.W+܀{>ȉ:URdcdיR]SGPl)/ß |wZ67Q2˪[D$lyI1`?9<~@~u6RT0I*""""&,5 *(ܟoQ76${I VuIu,C+fԽmD>328C) >"" ɣYF7^vWZYivNJ'J lWڠ=9>B-4 ~2GVϋ:y cp90ĩބ7a5fa]˽>૔T@Ў <\q+uVu>06a~I: Ϟƈ$^=6s5σrsh{C>U`_$]OUuΑճ*Zzk>m w]3*G Po'{ckr5^ᐟ {{O~&6/K5bvwHwGIQGP+Z_aBB+*/}I?YWTCodg3!]a2ۂY̓lNgd_u"=1CKYC $vTGJ|C`id aB~5u^RR+kre",@Ao;$Y(vXh޼7ӳ?̩C$b~]V-Q'\L~]oS\vyԜϡت#%.&OQ#5Dll}k@7)6ۉ[rA_ԱoNsGmϾs7M+]yi0*fVlws fgӛV8zB"֊ؐ-bH_ʁn8uk~̄㺸k  V_ETe-XkIijyďo͆,j\^g,I$6z\>Juu?)?0fҞ/%7tgJV* /λ=}KEX> 3{)*F/ ]ο)Aլlw鞢JWfb;}3nfKu 1]Fa[]["#;ϊ*UPݚkjW{9_OLM\ccO iFnjNk+uV7T/wYnKOc/n8:m6:-f2UQ5;4 7WNȢ[.Cz-,3ln㸐K-z_bl5{`eK^FR`䡵sY韥}V%'AAySCgAv8 cSpȰ} +wA s\KD+~F/TuNN?f+. +uv?Mxw3T]T,'^ݘDK2ɫzU*yG#fPW/]\~oSkȐ;>]檴NXpu ͹u wĠ=BR|@@{ȸ zX\qXyX g]Lur|wH#]c'Gij*H@4XQIO/9*&c$2}isq(8ƽ;uă'd~r-aZ+4Qkj ]ocR&5Y@דc,m:5(d&]XG.꠲,l \ol\ISχn_L9 q +ke4@K(:WD閊ũzɵ@,bƵ,H;>ݤae3aX˺伊vDlMng!\sEKznDALTne$ /Q I ձ?zڞt<Ҫĵ[h|vBYyl9qۄK'c E5QuMW6vӕ`I*;~3澑aqQb!:P:~B5^-&^MYYˎߴV_[ǹ8m-;vGu"Cge~͑r)!jjf*ĖR $x V^'PV/N Thm~?I7g_t5{}}Kd86cc.NFC ̌[ L[n\{ko|`̬\k# Uv*9{}O][7{zz5QIPVއ%+~$>hQA5R)*5k>1nuUQCL[Gv,̡H )'۴OVمr,SyznHljֿĝ_R ٔp=L= ]FF6Oe +\̤5{O3N5X5^D*[HS_r֗|z:oQ:쪫/jz x6aZsE5Te.*'ݾU!_'+%iEJ'j^*BI{Gd_~%)Hk$=R4ll2⎛1ԫj *׹XPJ}ٝuݕOL"ڥXlAT_.U6&.(JWne՟JPV%ߗR'ňrVU`݇t@=ĵjڧBTr`H'Zfܼfft\2MKbuJX;&ek+z }-Qu; ~gĕ:5O;3!,mt;#fF+/Mv]Fg +ZyDlm9S&USPCcgN8eu5Zܹ{8RIUuܙ Wԕr}/4C{7t |[i$ +~ wy6ظiR}UtձaM{%iKd'$*6@n*Hԫ}#5knF7qulGu; K+;*]5|Frhgg#, +בkɠ_vP`?R 3t~-KGFF@=5\54jHb!՜;$hhkyCdd5cZU7%9|Q]7tfuй}; ۔ soc9+0W5xSXZ`MJ{̝dj=E!H n$qPy]xcZ`ƵFӫf.zET*jҭX=z״&wG˯?'! VBVHjUA( +yN̕Kثub֨Ҫg~?I+tհ-թ~ukrޓԳm{= 3)x't|̯q* +.[0ƥX_0&fy:}?&SǝISeeRԁl^ xM=_!/߁߷i fctCeE%T\I= vz~b N||w;~Uܭ*>Z2"" Od\ʙ%e+͂>dZ&w:eYsd̳؟.RbIy;Ujܡу+AAA""y>VveVGHvuJZ橲Gy ׺~MŠjk :Ep[üu>䬨fiv@2>V|NMXbt[aw=`>"yyDDDDDDOހυv@j$oǶӸK7 >1fSX;) fhF8ؖUU=Վ&'˸>٘3(ϯաl9)ڝ}W$.":""'{<2>Qu6-i/&6|$Ly`Vmȱk@@,{dsװ\{~ocO,'dʭK:0e#`#"|݋UejԲTA> u5"˫ަ9[q6!|au|oUx5l]l>FN5>yw +F `u\~+jitbW1"Ućd Su|R:. VmC֔)Dl +A2WQƛ/dVk6.#}ʐFi|uZ-SbV .ŻYׅ>W68pl(]N۹u/o,mNm6Uej1NN˝=]FHlnV:*mo]RCZǏi9:/@dcGH(Fs+&ZĻTqln;}>1z_V66[;6!ާ{6v65|GM]?TlQM<"%ʃ·.јΕn%kcv F<.ӭE~\ʐ<6ћ['CyOӺDSuk[Sj%,8_QCOUL+o#0U޻Wܫ22R@䖍@ eZIU + @u뺨!XMՍ3)Z֘{0.UzuZuǻrgw=zbSؚjŶ?K'u_|l~&W`uA~` ?o;{5@##P~VzI}c-8NeHtof]6~t|v2.iψҩnṓ ďc{Iu>jT<ԡeaiH2(kBv:=BqhjYP_.%N.T=N%Gwyֲr밨[jܣSa|v=sNNt 9q*xc>ffb- 6:TyP1wܮ)5u- b[q NĻ2Av ^H5c ]lrj*GvWIrJMŁu,Dݻnrd_Rc S,5<_Ϯm+M%N[[ȧma# 4ܾzuNg6w~!1ǡ5b;5ד;?7rU Yv +o۱#}n'N#cNJU2wWCb45i#uZ[vju#;w*,W>iQʇ]qA#~{wZ/-vKS@*Tmmx@!OUϥq,Z{sd̥2!c30WtкfeB,=v,T?t'1UZפK@IO>цaǘe~=뷑2e(NjR2oOQy)G~$:s:{.Juэfr[AH;l҃9tʸy \î59 ҟbI6yj'DZ.-Ǚ^Zaֈ=M[3p5Ha"S9Ԭc[f~oa::Pt,ݍM{}~u=N_WsڑݷjU +v (9y5>V5if=eִWٙ@F:ν2E==)@楌rSk~=vGPT>2Vë2|w#ֱ VpZ7w@>#XRRrURyN;mvUdߋs4)ZӰO^1 +w-:GP˱*ޚCr?0V]~YDD7(zVwFp+DzћӸnZd ۱|btނr*êk-Bw%qߌ dblr1EU%i-a_PٵbW@w#@3>'R'YJ׸_ Ѯ-N59 }\lrjK.Ǝ1ȭW"ʱ`Hq։.pӡ*rCiAF.nBRUU72)Ԡ@B:dmwNq)-al[F@m?ӧUZ]K6*@.`wv&t7RWEȫ'u/Du_wr4ku`B^wY⛲oҵ +q_ԦbtHQVs7ݩkeNy##[6⧪1zJPϱÁ&eal#kįmq%tsqbJ kkPȠ#x L[V2delFc2FJx`q,gf@AO?KΞ=BUpvBd[L0B{IUYfTX?[ ZGM(RvN÷yJtį!7}]rǷroNꙹ6" +ZBu}izٙ=P䪭9WXp6Fn031V-(VP8]wau[U95onMLCA<ƶh{xBƯKy|޷.{pܝQ~+ VR _ KޭoSM[\u@rR@߀?iQǡ2l[PF GmyFWٰŢĮʳ-̺ is'UٿhrUP_DXA?*ֽL'fbbk+L 粭Ŭ7gCvX q?Zַy7p1VK(㢶W[+W{:FGi'*Ekʠ +6J6}%'+y-R>5 FO[ZڍeSE~,UƶB:+w{V.8nU#$oS33^EAۆM|ܻ~2G8xFeUM襦b +.\t sږߴ^F' }ȋ:_VQ8UY%^;$&_ӳJ_P@)F R53CaNO*ƲMTܐWG-lkgfYco&539~=⿅#[nL/qx eӱe%8t]Ӄ ;)]a0>:gNY K.wu +q,׋bm\ +0+ȃ6YK'Bn1OUpR{ߎtz~u_EH68XPWa׍{*YWmֿ1/hH#gMUݕnh2R>^% 'Q8{C;>˽ϴoOˣ*kWTl 7%e~'{ߴv_ YR!TZQFr;bOHW}]:P\^/PWp_`9m;v7e`tΛm56BZ̪-tJabWC-z;rYp.kw'cjl3No-Dz* ."J4&~WKBUrUv;*9ﯧ70#jH*v)7f  ԵJ!gU= u겜zСSĖ]ĀIDqs=+0mvq0UB*(Qs"y#QDDQ=ObxFl>ܛ[Jr*έѵa-k]jTvgO5DD{<{<"'f q0>6h1n^klY'$}7&O"{FR ; utuMChfd~}#Ӱv:ÖұCG'ƶ,k|l{lZB=3 5ۿyޝ~wP{,`8Q`cwkcya;! \OUS^ubJkځv?Mo:7#dWRtIMqﹴdYsگS K8$<λ$bZBҝ~3:--Օtv!N~:98aR0@X{Ƶ6`:lLG0st}_OH=ytp,ea>E~9k";[cS]ouPC(p#y137ckzKξZw`dIj8Yב[3oA]NA2e,l z{޹6s qkF0d_tbhہۉt ԱHک̏ZVlgPl .ՆW[1Y`ym2#'"`|bL^cWMx)_=%^ +6XRO?PWϻ=Uk!lzA=Bװscl`o߷ac2+r:;f\\X<5ߍHa}ܑrV.翷Gu._Jɛd69x=%S]8i}ף/4yϓ OTȩKTooAu~;wON?u:h GA?z].W[/{YO%^@oa/zg_eVuWf]!'t￉i5q[&9~>M5+ ny >-N͵$'Wu qѾ.^ZgUY::Hnެ3-wMQ5i&~_K.:sfq#Oa^cĿ+ ~-M + +~$*/@*Y+X{o֊SWR9m$y60y[%(6ebjtIe֘CF ~j){1"TggC$}:ŞkW~2u"׋zuqlXE*n7{W#;?;y:=)ѝNI/oGec|ƛiJB^ Qfax/^cez'|CtA1(= +jZcn&^/Z?kn etz,*BI$~ ȹOЫ*:<}&U?1ޘG~}RŠUb=uj@c װcWJpMr"= szW+AO-`ƲH?.zv&v=h5^ZuvFUw=78ȥx0 +dP='ؔfAC\lCga܍yE5gu[,[`hC#؞:{WTUu$+oW׍r캣j +c`#Ev;~0M̊ i +dm|Φ+d䨢6宱p ;g+&:mʱek ߀9q^RgCjy&) Lt6OږN͛sV{(O +F*ШG1z x*A,~OdɫesZ(Ŋ諫It0>_=PaV@ +|xh``UYBKWf֏oHߙmTg2KMr}e6=wS!"[Mۍ冇[ߗ ;2XG+Y q%B`Θ_b5j}BtM1(4;|ñeykZ_Dz2Q;E͢;)Pl>9ax~GIY90# oxM cd*R/vtO:Xyif0_oO ! +uXc=Kޘ/ikkBN2L/.=hE²M6σ-vSR0pj-z@&UrV) er)Ճ{5֦qh[,qV,UQ IԨ9v|5F-1Eí 2#Rn_beJ>ضdX>ofU:;c,:e4[,LY+L(Jĩbw޽_/ZmZkN$]U:$a*SbEgN)^ +_>v NUyz +t VSkMxݦM7up=ȵx*ވX6}=\cPa`; t{̽'2S' Sk% Fv}>OK (Beu&Ĭv<>6=9/3#ZS$}*ɶq܋@Zm~Wo*8*A_ՅR +@y✜Nn6E6Fܤ|L+V=Zjq^eE 䑲O3uǣ#lL/ղT~[`TnRulYm$=/׽wm3NٵyOL˻|T!Í}eGȯb sc"*ucz.f(=LA˾d#SM۾_(TbWUNZ "vn$Hiאpn;73'TƱqeצ_ 5п_XdKlWo;Դ0i\ŽLlL kSk]VҀ=Jg!">iWy(.4}P{kL|kЯ P%=Dիkjǃ +ּgEv2" iblZ[`֧m3,Uߝ7a ȤHqUwZ}5oooZ߼ k9:2h+:o:oC:HN=5ŊIUA;$Cy:j@[kW(`t}jQZ J9$xSjr +5nJYC?QC;ģ@7 քZ *o΀jwtU(G2џ)RWT>+â*E.v*g٩ $թiT'c/PNB}Z+N\QG#gѭJA;'XP+EUOޏ x]Ȥ@${' zwwog?KZPִOƴUޔ7' pU {H_a}P 3溒Py%{o֧ +PUnJy{y_ &C\ҔX;鼨n# Ob&&ťj\T>rq$[7`p>-gPv~ Ɇ'aۏklz ̊e +w'SHNewb n 'g@ >""""*.WxXس8FoWS>WR‰u!)~=)+u+gC@ +;,(ZF#b]9o3,UxZW ~]?M&ܕgn/"S`]ԙZ1_)gT+'Nrp;l_PzE@V +v7{vԟ1d]#G>ȷ+s۝mo.,@I=ɕ/ĥ="ԱX6f rЉe<'RST?D1Ps +t0k&eWP(BccM?I*""$+PnuUk!@壮wXU]Qu(`[D_b*q,w#RI#$uήEdp,8納ήUFRm +[Z$4f| zE,)֛@JG;%DDDDDDDDDDDD(W J2KYK%%?3~<-Yd0 5+h?02jw](b;x$=3?N)Bܝı+'2bf!cO胷KWuq2z:U)i+A`h=kf#ƷM[PËV\Ïoukz6V}7WFd`jxv[ +=fu'vS\W +άv[ [/?-JҔ(S޵7Y@m h |`t'ՃA?N6uVzՏi<OOH~5YRJ_OQKUK\}7_͕)EQHW-l\Urг{|\9y]3i/vUUkHh{vwjro`bdcQ/W7>`_':*ɻ!JQ#!:V1.]kbi+P yb;)pzOWM}E+Ӌ|IC@&NJuog&QgYAu_ViH݉r;*/mLw[ mU[,,*aT ~]nRuqKAg$d~i+6y3ZSظ]oIORoɳ~?pG?6q3Y]-OBqCܩU>{zmQ^5y @Pk|{ ȿuv:ԱFO |5О+~\X ч& +"5hq,zNe]SWׂj0c~ r>lx1bVaXF@Yl7 +8Q +<{Jς(ce/as\~^5ոŭ7ՙSC+&쎁~/;2.,]*+`ÿ?2Φ-:Eul^[awmozu^+[J9$w!YwSWcU^55xwe@$(gru#&oP#d֢n" +Xvfs>n@7U[cL +$27!cu|szN +G&\l{Ypq"/`ᲿtkGac/ kE8T:߸wS/RM2,ij(([#@/$ƾ쇽nɪ :pPFoǼ23^J(57䞪M;lx*prmX[ r +Bwv>b;%CL-oBǕ~)|;X `W :ˉ|\#3efdcLqf꺌d⽍|8QoV|||UV[,;|AqV7g[zFF )Jo# +4 h~;[~]75TP@ 6v3}a,R + ǿ7P-d7"XRuٹ+oZ[[cC\):4R[EFo϶L]9/=6U*7q󇛙Ք7<|ҫ8'% Z֏s$߇lǣ2-t\LC {*,;-eپr]JΏ.W[-v]4H8IR|NًW_);zmvJZؙ"1ثŇM^4;߉K/m6^^ʊZ?iez?}Tn ?:s wTɻ3+GdCQZ˱=ΡN fwž]}4Z-qOLPNI(K kgWMXTgRɰ&]]'bEފX=Vj5*;ۈa_ R+_:ѕmj n9! c΋S lpt5$~V̷-fi7ŏ}2>9~bUU6(VR|hzLUfBX6Gn߆_P/Ժ>hŴ6GSoD:=d5E#?'~fh+5%|: +H + !G cFYSuIgo-zC oaJVT PUoGJ޺ E#Cu@,yl@􎩑RPkˡ楸y1^5p?V8@n]nv1̢Cy ocīOp7N3VZB 4lfZz%}@0XnH NI;L/E:=K +@fN+8bX+L!GW|4zۓU*%s|.C$mֺ =/EůgZh7=iw2muGNngXjc^u;;hS=e>C` +zUՂFhIvl|zsΣfuFaUbT#/tT ^UBj;ɘx.E^nv>S÷:%A`Gx ۅV5Ki)Q*X9/X;[se x +<Sé![+u#>Ç>9.r`K:uL#wRNr奪U-F591C* [Ao-߶`Gm\U;+' d; YT ˊ (d+~1LbĪ*'5.w  d쎈9xOSMxnLU|5X9 I6y'2tr춵*"{ @}Lx_ +%xRB@ x]^ߔÛZ쑙qOc::N߇nKr*5q>=aOC(Z+Ug_܊~ r\.+Pƈ73:Om`-*4uF,' e^kγ9n/ưNZGmDv$َ5ttG(20/ow?•ۖ!V +4BR;CCS9ohuzԨ]+x#@ z/ k֥h0>‘DEe1.ޠT5c?e&Gˀ@Twրg8Fdz'oĝ @Iq֊ cPR K){ $?tu95Y]JتC#~D~eʵ[&m$ڽ|{xbK.l' $lb~N+{3.8*<1C5nOL6*TP Ys;]v x]dDzʑ4ͿkxԼ\Z? 50uWL^K'kO:Z{?Wo›;}{f/gU5e<@Q%ŞBwֵvܑMcY׃J vS eT}ewک*̼Xm ;u't+`ִTR@gXfS]j2jtv ~CQ\+VTԭx+w{i S{7w6yʽvFLz<YP# +.Ymsn;g#?qnxJyyS#[3̮ϐX׵*B{nWßh8ι6#㳺6 +7 wNO^l}&'Jt+9"""" +.s**qxrŋlgU@ Os:}Yƣh'ӵlQ%މ߃>1M8'.V,J U5&DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@"hQeP$|r] D;{Ϲ#"J\"(3&Vza=pO +ɔ|Ah'_N9ɿ>ǎ$qbS@ gHVu*^Wa_:wLuC'jĩC 3hl{eOb$;:%7gE +N|W鳮ɒyčS7s &{1YU.H@Xw bGl b(\&b趾̕dWq`Ŋ:ax?<ӬO{H`@=&DY݂I$I&z(e >""""$xU VE,z"OϢ,l.GS2Ŵ8t$v;#S4DDDDDOrXr;מ"""""" 4z7K ϖV" aƫEH h%@֞eX;QAԪܥ@u?`A7I`Qg,W ău*:/ѿrvSt ݘ{|?Bc8Kɩy!+BK#z\7m\O1d|[j^-߇p3bLkcI]5og3f#3&GX2+dj.,۷̒S'_Ey®ѫ,8J壢5ۼōrmI3V3#_6x;ygVOZS/2 +ˣǾ޻L}S?&7 +OP9,k=DI]u.,CWEhmrZ@>ݻ ~,$luqn氩Kk:R +ۑu*5 +ïc|ȹ}Uj`kM~D|A$y,{ȃŠ9LBXJ$+gzfTe|#Տ]oX$3NR;ȕPbjV*ɵP(*,;=^*t"cUZhiN^u8=cV*U:٪%_L̻vUظZu䕀 lw#UJ{ِmU6h[KzekGb'O[$ +J;# -E۪mxOkrrqŤ:a;1^ k1t5~ߌ:MUKJL>ju<ޫoJ®ۅ`_"/-nt;]//#'k!x[{}]w]c'HkKHgv +LW# +iZd9JڲFG /#<,C +_}lWjl#9Df +lCcщ+}n+c +b!S~}5>ҎE=<9">ǂoYunӕW\AYRrB,X>zW=Iٲ1jkWl<q{Zee(R@\qV">r +@' +#bbz[*~苯r]HʺX55XbG`C.vnG3}XԱG!L^A%~vNE8I[ re¡|6OmL'⪛Bݑuz"J^$ׁ"5'!?DbAUi#Z﹗тZ鮁֬j k%LlobdA@/!mˆގ t /F1r`ċ\y[澝jѴ5yeۿ{LM3]ꢮIUv .ݿR>lr^;oz]O>sjՈ֥; {GElz%FꪳxI9zc]wfWdZJVMu7n`UҩlK !<_V0N݈$c?MgTYfB@.@{ݼuÕRگKбRF v#?T=STl" wրn~jkԒW`YX65߸>LߎXj@T`R<;/+/̪V>u쥙B4~ ZWݛ]kUV!b49=o#Z>w3|Y |=J7ffEU:F>ü~}X׭aGYK6"(2{k;ap K9NizU<xNmL]F̗vVՖ[ibɰ@|%tɡ,K٬blv3&NMxu=ְTEff>d"חpJ9X;kؖL{ӱQ,O$oL2\;_2z\OonVS~Hϣ-[Xei } D1Z>~Yy=h'2(PZ7vG!nH85[XTok"l~D? 2fy.]2\DD@4MEi +R5'/fo_^zuU fB]D):+ +}CZJYm, KĠyܴF̷ʽe:*gԳ2;u LN^k=gzGRԄ]KW1 +v;Y#3%zX[ϝS]mN=9ݐXBF÷%qiR]jCNQLS[ txi={%|bkccGr:n_]S]Ud [Mʼ@'g}nNGR5:"L$i&}#B[qJ[^㴛028Z"dQ{7B1+Da]",ñZ]uuS5grX%Փ;?A6%)z~EEz8rlFnhOmH >2vmYww{hyE]~FjBGJՃ2vfٟ'dtW[%U4S n~:>uWZžAq1E0zF:Ql+){7iHՀ;x $U9T;?/#£{F*'z 䑽~3tK:vFALJ+Ϣy)%wk}jJ33.S+òmbł@.w3+Qgm֩Gwm|J֨f t]jPصA*yrx$|AMcawWud:ےc%YbVʩiT`HMh ($v:OĻ:E +8oi;ߗ}XzVL,Gcks ]EX-`rEǹR7fֻ50zo>yTfk~]~+_v/ce@>_ Rc0~GF)x=&=tp^;:A:ø\Vǩ^|C aۿafXf|ZUZnc5Z#Gk=T&JE 0gyy>zх9ZSFC;?6~3⎟rrŤ^Wz}E¡[e:q߱hNFM`}d\o21e98(W[/P۸:K+#7EjV;M!ZhWPoPP֛w;]{*9  Ҳ|My(*T?IʹU۸R~cO}&yP:'k˞яVLkBpdn] ׂc:3?LLcU4T!؝j|IplJ%y(`Y9llxؽ&s*ǦPޔpUtO˭s} &1-kܪ I;˰I _ԱQs/{(H@AQ8uIC^.ZWUkeMk͞ +Tq ogf\l,n[Pzmˎ]kRhfD-j`ū,žP@ӕ'~ԳoU1Q8w:('/Ld2kߧSk?_yct5mݷ鳀wqӺr\0+eqʧ`f8 Ї( +MGX8ZڙA>ܪgdեBD^a]/D}q2V7!X؏7Hy=(_7WTыa0:Oie5Բ:6UURS^+3UF+ k_S',\5PeS}4KoınWDtBwbiTGINrw]H@Y'r8>{̡g'3 +p߷-)Ely6}yۆp`-D-F%DD*X~OYr/zYeDS؉Og'tOÕ^eMUi# 1iZQRN>Iu{*f!T'HjR> '"yQy=L_kDC3Oum{ [=>'' llɒ"&&Ʃ[Mj]FL<;׉4'$y>""" >K:$ z"R[rzyT9(GN'>~Y?|?OC u4˜K3- xg/W\"h,S\0^@@z;(l\{k6v]9x'uuLU[[h`@U$,@:H_28Ϳ>>;`*p"ʩUK[fXt^C>'B׺ة!hHSVgo + :l+?IEi.JUY_d+>#F=&׶+)b;z/t}FJ +V>yj6}Kѓ"*cX[|}: +PÊ9o q+x|A׎&\߈˯ҶDz +ee_ߐcxʩ- +cz#؏q+bmuT^E`YH [y>rwM2_1-ʵ]d%fށQ6Ib%8|UV:Ljbkߏiz<A7c5o8):։& +ɢ3k[oG/@~fZ% Wzq}XM<A6HM£ (Exx.~V/fhv=qֆ@֛ w>q`A=#d@7ġS1}[u[ ΎXZq*z}dzЯ703^=vK _lY`bܘR_Bl@}}i +^`3++ 22]6Sڏ "%Va߷i7d`_2vMt4h=;O#\UŲı8u[@1ߙ_Qa%,U:@ #o9=U6\qZP-m{~#u *q]w>ӯu<`.|{x6Ϥ.kq߶yw{/e+T\.}dGG +r=`2ĸ5zv;V]O[URA_K̫ܴSl+.G̉rF|/ir\g+GIAcަ\*l$ǷUwٹ_"fe⥜ÚJOMƷ'^ͫSݛYtVQhƛh^Ni@LR9*vG^>?O bl碼ˉo؉wĔՏXS-U .CLhl|jZ)Lo,Gp>H&LG+n!y!fyFb<$;mS֭)F +T0;,< Mo**0`Kl@wPu'GR42]ˍAz</5ڊ|0{Mcᆯa;맑Lߕ+[iTl; igĸaזԪ6.}]A1$0^L H{wmnp5}0:#i!1WdbcY;RҡU~qā]U%4WUU6úߴrrW0Vf+/=#'[:>UEuza%;"qrrxXN7/Zڼ{ܵ|2: ElBlݤ{&1{`kaҰǷis)nݫBcˁN$Cbey:nM8Mׇ!Y{@g1SfJ--BC؆}Z vZZ09w޿W]"+a"`|S^{O$s)A>T@ntM Zw>W_NPE[k(m;~|KX5T;QhqH:ɟKD7KKO9.cudzxrk@:F`F72ѯrX[5L(jֺ"U> Q Yv>?-Mtwٹ`etS7P06p δ|ߢsXgo]^ξ.-X=#el|8HH; Օʩe֫V LjIAAumjcd;.U2) +HwktkB8RZ\ُ~[$Eqrl8Q%*.-rkRA񕟢+??I88y8짼2V~E3U^T uPc5ʵ&+ :nzB -_hZ[@sĎ$Ǽ:Ct\3f=ԣj4η`A׉yٖ= +ql>S_Ɉ!DZ1q;tu[5 +X[}Sw>&FU)mQq͋ W;nlnF^nPʦ\N E +8N5='kѰ 2o$!u-"ι1Maۖq YNMZpU{ ~_S0Jv``R_BlfMC=Ç+&AT76/O&L4oŹߛ1$ 5g`솎\ {K~A5# y޸p5.1ӳ}$[ }$w#aplMÔt ` moʢznpxfqu ʿeѶ,Tv$tֿ8uǹj)A=.F0ǭдG3'2T]ޚFIʔ/Ɇm}'t[ի;p:,A;oFA˧r'%涠U>~38~n|P'_?~nTuY9je +հ ^H +r7;-ŒJboHڂ'ω3;ԥ]rquQU=G&ګ 8QpA:$>FHz^?EJ -u+G0=xGZɸ2qbnZ<{Ix#cFBF{]1ԦgY5O.Ǵ]0tsaZW\[}`OZ*K6mN? <{y؝/2Η,|n;&5R=zf]xۂm52*2r3])k<(lO}O~MC3TRjR Uu=i]Fst Eômouȧ$JnY {.RYqd`H?- dHʬoF[ +}e܅]o?gڭ`PŸVgV S{rI{q.ÿWe /2'Yzv~}~}~|dC'3*DQŁU{5| t~Rޢ2oʷf4(481.q̎qHgzokBx`ĮFoԲ}Ze=)o?=Zʣpv*G_7.1.QֶҧXJ;d=|x')zCO]lt-EbvuL/Fen=RMc[H'g? Lq] +|X~Dv5_M?u \w6sG-`;Do}ufdu>qۍC' Z@v$kظ|VbLu73N %wS+uzbl(#_g™VR#.qb9md-Pה.m kaS q1Z9M=@f֕99$i]A[hSe RFL+-; +)t )#}fx*z.^[Qu[v˲4Ϸg8L#eWU>R#t1:}uKV +ƘI̯.CHF"l t#1܊* +9`dDj5=OjKԣ`u@#|JMZk_M'͈,Rw3\OEjˌ2.=Z,݆RGnĀ;˯јhC` 74ș1B(e$12=j5=j5"B9nƪ ZxDtw[+ĥYNՅj?P@Q='OgyDj5=j5=FQ5FQLT +7tmmO<*k޹%f$X&HH`tml t=̛Y z4:uʚ5[Zɺ'ٽsuk_]zm :,;>i)ȳ"wtIPHn~t׿&%'Ž^R[V:1u^f_@S":Qȹ `zVKYچ}-.8ع4b9ae#mOͭl>_bT"*1G 6{ӝi8KS2@{> u*j+۲Y"vw;!Tlթή@HZ +dxןi2+͆uOWaZ7h﷎Υ:uKk=#@'$Ϛ)qK:Zܯ[ ;f붦WM6w*[\趂6 g{2-e6+/RǸUwaM +#`r#Ϸ̓֨ʵűjpz$ƾ?d5-Ƿe|{}dr#VM(GVtA-2:65I,̉_mxގ]V2;D,JY.Q j5(G9Udet;=C]ױ`-LʥhKDJ֤|D-*vR*Tl}OgtޛORk-3Ԥ5Fmn`SW>^6>f> mmFE +tXw1C[-UVF@$ڙ}=2ȼ]clB:PNO8YZ|-ץc%v6׍~۞0,5U` ׍z&ڍqFp;%A^u`S3+ȴ )Z8Km{ؒr:XlHnJ>^]װ̙}WTVrg-B{JL<ZD ӹ[r_7x]%JX`ې6=imUW\Ŵի,eP*\AHLǓ&%t\~)jX | $bj24%Vpu(Gc{ɓPY V8 2)Ȍ-{>[9{iP'u./c[X?x}|޷m,͂](?^բxlԫ/!~ʲwf=Rͽ~V?R :xv%\]Bּ@X$w21 E,nԌQ{|`ԒN2 1RR>V:hȫ.(.Q$R_|B>I=oRNOIk-yǂ=5>M"YC)#`k$J`㫒;]t&˗%3XEϙiO[ķ+Fer!FSŕAW6Oмv/zH OYyt5vO(Ԅ@TRK66vF/ӫuJzc E[u0m#%mg#/&nˊʥhO,y7׏&nHʡ;k=|[5U( +hHW8L8p;>(z)&N}tUQj BI.4@X?ˑDZȁ߂>:d/LՔ2l~*q.q$^G2MuYϐ^_c|X¿*A/YR,6ȟ u`f\[ )?9?uzebˉUTvcUGrL{Wm}"#XmTog?X"ﳕt׋2D"J;aZ*s!v[Eh\BUM$dH }plW` rGq>ؾ궽0R OL*ǼeT#NJ v$dt6[ag$mhC??-~?˱>7%S2 -zN-k# +!ù.uvM—R,:Hy˅jͱ bXXX+ +}O&DDɢvt`UWH,qߓ~sγ0z@l'|8c vUҧZFU|̛TT9~ٳtv#UUL;*\T4hFEW֬t՝'2?TFEwJ߾e%e[C]5l-wzݥXft1ՍVEKɯ;e,'+U9V :csXߺ~"g5aem-{֎9jmtv[C~(/"E~TQA'C]n89ٶwnm>WOnCZwW-J }b=1K%o1suˬXMVtFMGtzq20_O;$NpwKif}E +mZ_ 5@[SWofY]S@ +A`y;~mb=c3!Q%0ּ t]3So]e%@^?mX/W+HMz~<|̉к==n1%«>ž {h]7#tΓj=Y}QB Г/?>̃rEb=\# +P{o=Fį +kUSf 'J>_˰lVo[feu>>n]{`] QB֮Tz,IPt6@ߞۛfAu vT:7EoQ0lQER2UH^[E@āۑ3xǹ, +3V{$lqK>>3VMoUF~ \,CM7*9J{ |~ۖX:GT=pRIv6=-'11ں)-#_ooEmʜ8*3v<{=gv"ƺZéG̥H׶ʻ0r0vYS,FB檽sa?t7ĸ~G>e\7fİ/-k|A?_A Ω} N2c/PbO˿wW?WA2q@3hC΍ =AsЛ ˔j'f[Z. w P {ޣs.ƻ(Z`(*[ף˗I#f +k:V>$ T_Mv2;gKNYV]3Ӯ[s k>ޘ8?#M\6:-l)OZsUYk&3Pv{%a##&=hQ*FyNelާNU,屘!׍w=zfJ6#wJwʯuߨڲWeGp>.'%eP2rj5]Ok+$|ʼTO<ߴlٔXDX65k`4N6reHjO#O㯾㿎}؋׫}m]>'|2ŷůamz +!߾ ˞r_ӫJ+}q.t(}vTu\;WȦJ|ah\XKHZ{J ? U_eb9J;[m$+I@~I{ĥT-.hqK~U/XnR?će[UqvytHIg^5K'.Q[jl~E]gv|&4b=EE8JRZb4 }f~EU E Xy|뾏iTF;_&iH}vyOk`ی1l*4PT9Ov޳C[~[֦ jG}Ȕ[IwnRߔF4]o\[>/F]X.I"=¨,Xck`&7L+-NenղǿidoIkԶN+"OAo$P';_yfЬ9 !m}MnB?#ȭayv5X|8WbWnN0xzj" +*Cgc~dHW&EYm w>}!#=0:+OG$qmk Ƿooic {suĢNfP>c-|ʆu}=̺b#܊V ODz[ڊ2|G֚Ū,AqAZ\yX>U߫`T!a~鸏WI-b-LX)FT6'@w>?)d' +)'AٵZȒ,(1W׻?y{I?`u\K܄}x̉Ú31)e{;*Q{?/Ƕ܌UlPD}lr8mkco72Ybҥ܅UHdl.Թ}峆q>7_gXkv}G~"|uM.P@l#`tkTK1n]Ƃy9o^Qlqh +!;731VU`G翴lEd]Z}2>uܸbH @@u1du|L[E6\]~7u2[EWU*ीfםP5ji>1.]V6@ߑwxd9%lG#N 'wN0Ϸ8:=F%BWa۱2接ج|v1u,E".WRX@}jKwZf $ycglQjI{2ݓu_,"NH.d8zAf OC1rzkmQ!(-I %ˮbm~Ӟ[~2crhċ5ȒKJ4yoYw~ Uw~ؒze=EU?eMcrתbc-_k:Vmj;3}Ĭw/,m>7 ]]#5µa5k's@ԱVo + y$;x uAvKaD㸛\?ψvf?عEۯ__+"*ƣydTAfyX㌦bD%`{oyI˥-{s2`OUt>2өY+ )M4KV=L$hܐ?rHVv>U|ZVYXjt F^WPzsY-ca?EG9Xu6V +.`o6]кKVZ\Ek#϶ĽCkU_qEQK ⚋1썆6_TAm~I>m)K>~"YNoW̗#c`GNoO`MC\E +7u~D1UhMxlPi! +,;뾇~L,jiQíMh?rNBWӓ.ڒ;""""""""""""""""""""""""""">VO ++R;X|;7y18/-k-}7Soz王`! lO(QȍMϹ+TlN`*|6 LjƵw(ߝ}7>H\( Fʭĭ3#}o#A|z?J|Rw8AC}Ir>~}C{7*H:#~G<êũ -ͯ b|f"@'d +;P;Eֵ kΧڨO˴@~+^'ڨAiDDDDDDDDDDDDDDDDDDDDDDDDDD56Nr/Pȿc1^a4g;IrKvN +"#$R~n,k~a|_+ 2\Υ]u2nXZ }{}Kn f q}*Hd,?=¶GI' OӐ36sIK:oUQmHY[=l d*?Uνvx|k,EHF=CM}d[s[9ҵde|q3춪-zxTb9oa0t>W))r 01W|hFoiweOOr0 ԵٵEg~r?f:hc@'Gw$Bzs.Ą֏IܵSGTOBey+ B+A{L]ckhYD wn,]%`3+`: DžuRu~~'rn߉*+ޤIT^D˳n{#Z]H72raX0؈ ĥyG.ю4dlXH@GnĀsw5o+5.1'"d^ +bG+o_O'}s50l4Yyǩ,6~ H?$ ߠ+f/{-<'..ej,@vO HYe }}}tұ^zBah'T?nS?-́ h{ʜgVZJ57&vv`8KLn0һ%}br yؑn^EYu57;挼BSov`'I֮@m]jO;u>5ď%OM.9WgNg`ED(~WL¼vJS2jOR +'Lr$0% +3())]ЬiKݪ@^DG܋7]V6U^ۛY#W1JA'Gՙlgcv\MVSZ6YA$߼fϨ+Ӱ2v#*6'LzV]c&5O͞_J?WߕvG sg\q(>`wvqס>F!m&} ȞD||deہ ^.3/mSUiU[j̆kqp]׿cl]g*, ^VWE)"k=It:.[%kǷ wk1]ߕnD=&Y^Oĕ\GMNiÎ =kH@)$;4j2R+d;va֫=v;vxGWPA#2lw +ܼJ/3s߀O^]SJ,]tM;3އб*ʱZz2@l)FRX]??/;Օ'= =?Oǿߔ 팏z;,.lu|^Ec![-گpyqm|u|<.z`Vb+UJmjW +u7G`,>(ƂYةkBo̒:YX\={oe^OUQMWWPޒ]h}6>_X]( +O[UXI#ggm)kculĢȷ]ކnE2, /aU\%}$ C`Խ7F_Pp@V$wkǓkG藛\Xn㐱n|yly; i5} ^FMG*ߨǦT檓w=Ƈs.jO +4}Cŧb-v l۲J؅>oNɷ#tLkdsnL]b=Gik/Jx|eCzS_.] ('Ù9ݯ̣U_ *'zD)>HДXte媏ȮH?x'?JtGbv=\INxXmĤx7߶lޥGcяB3-O᝭RZ|\GGar[S筙|&FH2@⡍wpȣj'13#+jf+oK(JޘԁgOMk(=[IoIYKoƉcޗ^& +(ŵ=-9Ò1`%`'&aw9cljּ~پK|C}jp~nk6t3a՟[W[ i')UW:ک*fL ]7OX0|~=_ +`ۙi@7Vʥ$M{?CmS3VEc76<؀[k˿=>>JͲZ*s7~}S%}6tGvLUlʅ9?QK݇}DZl2ɍM쮁b=}-qRwť\ oi516aw#MQnPioD}k^jQ/h"ShT|%u&XҟR*|+[}DΎzGNt{Y--kk~~wi_u Ww9EvJC3huR>=^EM^v5br!xz Z|42i8ezL+LVB'cC_ٍRܼzu:+[ ~cRtﱁ_.zwӃ?=x>>u+>u7 mxf(dY[3f'$| TOl/}7ODi*%߈𼘓d阸[U(\A6lRk\Tw! ecUR[$h^RcD]Q 3\:pӡlxIȴ *-z!ޘcܰ|A@C |/ӂ +~~)ߖrW!rjN +iyuַ85j}!~c|y3 +W u$; 6#dtT=ojO^Lq^EúkGOmJtt|T+x%݌{veqt8_^ưU*W&?Dȷ&Ȳѫ!$v|t,LGV[Hv]ڤ=UOaK65+t:ҐRjB-dS>踖 ƯhkԘW *H:srArwu-(TGgߊcYm &+Rej ? ̴EXe.G!B 531$ ]Sbfȹ=R8{*@;7Q;RQ_+)v#.;Y-I:6OI͡qRf'g߿*lJa`h`f}MJT l7/'ܙ vFfQkm%5۱?_ynZ)mPݶH)ظpMapOvwIQJ=OTY`cvIly'VGdGV +VW]~W\QsBXZ-ky|c=Uԥ_%1>Iǹ"eTNluV;Z| ? б1Ҥ*tU{d.] +QRA>:=|y6=e{͎~ř=K8{{}4=kZ *lhw;2ulYZ/`YlGom@UA*0`~e~h!>ܫ_øUZ-Zmo̻0> u\7WcTԺ&_?eXUٯS +@=)qe*lj +;Lx ^8IK3#4O$lgGlS\Ttv4wn#*t,r `` ,'=I]>Vϖfk6I {w2cו[UbV2A0.. 3c}2~zI,J!u:N%Kp^<WGQúZj/a}ǰ;iVvTx] >?_2;_VփVNS>}$ .{+5(% >Ďݦh1Q^KXw_fzMؔ󦆽vnlj5`^D.L먭Wa@] +"u\0/Vjg +Ī#dl=ybQWMvk{% yO'xr:TRǶ·f`v7+zT|+1P_-.vɒ}ߏ[UXWl?NC̓*U}ҵu*_lU`GڝYp kZ1pJ_k7Pl{mU+f +ĪH_1l07R{ &wޘսt6gX"el؍|_V3Ttm~>Ķu[psWcnD:F'X1BSt.2z1k[{F+&,:Nsu u7F*Ð2{.6Ur=,1qװ޻3؞Of, F!Gb aeِAe$wRFi"%/G]YJ^%?#^5{u5^UPKy%gZ$wdVCrDO70g>.="d):޶׉ҳIbQǏJ?\o["" 5-1ۖΩNMtw 'ДbUSy1bGY9aUym$}݂kTeW/#P~f Y$Kۗ_ /SZX 2H=ƻbٛz~s͔ג9=ړo2Eަtk%TVwok2u:o k~u<[[IۥLÿ# %q3qȵtkp:`WC_]95'+l ın^|@n_F5 +FT wl^l~VXL8lfsA&Z1Ew2_ٱl):ao}J3v@RZCLZ#[>AUH僫K-6}%K;dL>6cWT×eH:$[Ԑ:GRã~Uy.TbHOyU]YɽŻ0T%Vmx UFlQ]\YxXr֥~%GZ7MM)ۊL~_?_Isma.*a]6XޖuKCiCzE~%|۰F8kʂ{}5mԎ3eӥuoNvZ/6WM17~l|{yr?“r?Ƶ|_!8%bGm{Mwau,2sֺ|y-ݹ g]P[lfE bVlvF՚ă~=f +Eyd_ ӣ^eGzD^^Fr _t]zLغM5bֵc(Chh:J+Mbr,t z,{q#G3L쎌N]+maΈ'/oC%1jfk4Y:|g?gꗪsw'#Өc^(RJlwG^jkYVjM/(ڬm5*Gq~bdnBj SykhA$'Ό,NL2vJoWcu,Cړv>60\y4X;c%ebJ}u~ޗJ_#V7V`và -TtQqC{[\ $O->")6ٽWKٙrЃ}d?z޶.p̠RvzG5tg EHGsduczQW*uJdY_u1ЊYʍNjka_=Ƶ!|OPFYQߗʬBeC#trNKrn$v[v(KQUk'eHt::Qa U +H &r8[1ŇicC}{'}s+ױl,GHl_g0xVlW~rn~#LVdVCڂ{#G~}t\ qoZjAc7tFىOW,ΝZz*Y6@)sNMCםtOcޞ׆8+mlI{ϾsVh& g""WWf;ضcXU +j}S.v"V;zd듷tO s(=JK +7&Xu԰[ +ѕ)70+Eףe|]v;|~^'Ox1RD-1_|ΠNkF`l} +>'ƥT$lؐaĮ_1**XKo{IxX Ȗ 3v c9k珍vc:i/bϗ; t;L{V^ +T~7|s q! ^G><9]%JVոYJ>#DDJҭe:$AU㭍vGbdTUa]_mQkgZ~\Y79I3~>n˹Ҥ#-΄liFϬMս=}V8Svf<0W] ڠ;H3?k)eekă]GsFw+=Q_ Ǐxoyj&6v{Z,x/^hXmbg=13:9aeE/>]y]F;)Ufbr7LHw`Nho}p .U$}H$kp: ,`:T ||v~ĪcU،fϳ1=Ύ'`tUسrfv.t?@5=Fzr  }US؁]nG&;û^+"2i=>jkT[;cr}̭k귝Ztl<s a[EX" txƤ)l-gnN8@':Kbu[`LÇ1YM|+ZZ=I,,mVF #=Ft| +\AOx:ׂu:Ey&G7Bn'YN|\:*@2 q?1:2t_M#;o۷"FGxKUs,[tmH:>A x,{ӌO1bM\le G;;ecӕnXl?'fR{hl{Xc2k hԄN95|6̇GRH8 X}FA'd[;'y˷ YÁw'c:'׺ K1cż'b? /me MlxB;̝?n1k99`ִvx[orf^v. ~f,_8+ߧ[XZ誟Kx0:5=6,zYԹe.H%tufg-[) +Ob۠[U JwCָZў[Y6aAPFos=b}V;rU귐=qF-xkF1Y_UpGD=MujXCM `53atfYc z^>m=D wF F+> Éѫ6?;vx}HtJXg +ܓ[ٕWԛzP}.W>R6@8eM>u5eqpF*p`~ALt|)Rl[" "Oa'3NȻw?_Lp+xUj{}ѭ(0f׿Q=޴Of_(\AjG=νHJ00 4D +9E.@6ꊎ#6vCR2mŶT+,Q{ H-*櫝,ɏ-{̙] +)TՑcEItwT\oWeUv…ot|1wSMJK+"Xܐ{>gQuZҫ˔R졈 b;tZ>ԹSbFo=,\z+Pra;'ccint&1CVޑn>wjO}>V5`PJ<""""""""""y=j{<""""""""'DD@ +endstream endobj 224 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 73/Tabs/S/Type/Page>> endobj 225 0 obj <>stream +HWۊ$| U{fBSPUٍmv30eޅ࿷!"$eu fh&+/!ĉ'nӧL//O~t?m^tܶ4)Oӧ:I/g4{O_^ҷ9xaɞu +r^kp9y|~kz? g/^ k*8Çp˪xiUڑ3ox|?Oǣ~㏟bb +" =iP5fz^/}}9\sp]=!.~=^(ğ$@sBr\m\P9 +yx+a/ + )xd| ϼ7bR٦X^i? 4Tmk;MS+K^̷vgtw5-bJ$yTD o"+܇sM3h$w_/wEbVۼkiOQyG6ֻCoô$ 9AM4 K*mƲ/'mks! )2"X -nx>vĭT7qׂRO!<!*wLt)wTɒdUu|Sڈe5o`,ߍ"V^ a%^[f'Ls R"uX;%uY"Q 7#0gDk5yMN%ܣ,%DjwVLe{߮t2U҂:Uڲ)##Kv.[YQ6aJГZuL cQ +6uܨo +=Ⱦ%,gboNHm`6σZ+`&SK`1y3;{l@7R! nL1YwɦgT?|gwf gw2P85*X +b `?|wHl.%萣?{'tpGc$2 +3!B_!uK/5" %]mm93wthd޲wU_J_ ^UB!nrXsjyHNz3 "ī1QUF*#Wˈ7e1bAP&4Y^5\}MYA>&5,4PzjcaM|oHB~_Wb)$Z &N f.CCK|mQ#s㸁XkJZ!CWkl .K7>ukK˕p& UeҺ>ՔnДG6qTK$8\~]h1x4^7x7MS䭜PLn-qM԰}M(0Ľ_uS0>H׵6ۙv굱H5xNlƫK +|EM2=g*;~ĺoϵW ՟e&_ CcR\/Jt-,pN`퍒}$ =FNŤIaNCm.RdlH"V's|q4x27Rl5v;jk_DW'ɉW[]X#[܅u @0s]gp[F@I@2WIExuc ?{y% xX䖾@/zd]zYu[55 y3ޖ}M޿d)ȕJ`@!U$^-a=ڙBC`^TӇ7(ULH B[ݣw>AW +̱gʈ_oo >g2xj/$8d vL.V)!˥ݘNBT13;(nщ x+3F~ wB+Bfdɟ-j"4Ÿ7(,g{ 2rBt@=nĴڒLx3{7KM0s| =xߌ#;'}Vh`]Vm9B^&g`.?}w|ih9\]p)^iejWy-ʬjZ'oVڋ݁ըLa;n#* ϭO>\epv23_Y[{1"q9QՌT`FRŤNp#Lvۆ0*zF@`@PA7䐤-rۗp69q e+/hɴpgWOg2F T :l? @&Qy:k,{=ι$뱒{/,͞m:U73Hk{!ށ/O/cW&ۓIި /~9bH/T| w=<ѝa!: '}pĝ&ܡ}|N^$*(Êwf&AXK +dw pfF9TzVQx2D[33! L&7<"yLP1>%9EH'@'A:؟g0+ڥs=8MGk >" IFNrd/$۳*a*@UF3cـJI粬h.ђCV5y͝KЅ"]jۚSChE (t';Z6 V0(WnUqrYkII}n{}evOɅh*\!V~GY2cg@W5m lG%Rj-8;.죸ДxBǓPHOЂE@NDU/{MB1$|u 8#e +\R3@mjqJ‹ SWhD5-~ٵSʮϴ@6:EE|=yc OGr.c8 +3nV%g,O2 XeDTPJgz y0SD$-ؒin|š܂AM_)yUalK({tF_1$/4Z%+@~nB1 eASad@RH= mr꺕*Dw3I/?Pf+U"M5#*Pܢt5ӝ5_xWDjRFf *ɓL0~v +/pPMR)4f~役>~zGܯf;sƕ]ۻFmX|yi^Ls|k>- +0>stream +JFIFaKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Ka +  m!1A"Q2aq#B$3R4Cbt +5DTr%&'()*6789:EFGHIJSUVWXYZcdefghijsuvwxyz?b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѕb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҕb"ywf $&k.UZ_Pnd* lc˸ڴ#;*bO2}=NhnU؁荃-UUŕX +\r<P\t'XBu-Pu.יv""""""""""""""""""""""""""""""""""""""""""""""""""""" ӕb"i>5ƻ/U vr7i~(5ڋpY8N +wzy89%x5O_}] ak#9X=1l(2aU&@Gqw7FvюSl+u=.FM=jFߧBq݆ɞRUeTq RŬ; ֗DI%+>%ךX>9"y@ 75{,/\ ur6L55vq`m5~uUS2(`X^~lqj]C9E#vkMQBm? +2>@}/ +_ƻln:f&)PV9Wh b33W<@#/Nugzn͗X_n;%q0N鸭OJWkYXQP;}erR|YM{T~ ,:e5btҳ̸&uއo:;#+?:*ԑ +{MͅN:7Sqrc)w_RյZ=﹝(OprץwӱlZ8ulKȬT5VqnD 0_r$v잙hUo*,To~\P"eҊ^ +jۗG5,ӅҀRب=ETwGxKTy,@[Q:*FG[ԯ!(֪L@R@h7㿿o5^UWQՃoD0 G aԸ*ԏ:7"`;CUӍ"ҥf+]3_[l>DX؟C}{˸ىB 6mUu؟:QA}ώgߴ8q;QO7WeE +?>WKجG4G.yZ02M5W%cV!bAb7߯_>. jLj _C[coPcD4Tx3[/3^|O`|^Bߏ_*g\܆ٛ?]k]3Ԥz<\$>f+!VԄ tIǴzuH+:Ljlv+:_:7 iy +.2Ҍ%lkh(y +zƕZ{ ^o^i,u,:+Nw +};qVJ1%z +j0 8e[j4QI=MCtoYr}BLΚrW ̕+R]޻x7==:f;Y[,% > vvMDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDԕb"""""""""""""""""""&.gM*nXO7\)FDւv׏+_KŦwtl;RlzkP_xdُ]}DV`0Fg:PrSG~~"c7A1dnEc]+e5Y) +4ݏ~鋅TՕ4Eqfh*Vl#.քr(zŠJB\>}ұ Яp( <~~SP`szf/Q+PߝosV(4>~%rzV.eKMV(*5CiZ֪*Ҩ~R_M*TW|IƎAY=\\ ai}F,WV>=l*P]1P"Oue8Xw@ּS2kjЪ!Jk_Օb"""""""""""""""""""""""%5+֕b"""""""""""""""""""%jRֺGOj 8g 뾧_*JI1{.Owg^*Jg>}%O 3b`8K\HTw> pN0ֱi8}0܁^{ceXs5MO3&%ܬN mu3(ɗŀ2؃=DDKo]nf9<^u* D'^:u:ﶁU2[Umq+To9Nz;67F'v5,Ȧ?3| + ת:5rRN;{S5r9:V=ʈ*"7]^,݁C}j׎r޷ڗ)˧ ]k|Xv߷.DDDDDKY/; '[?_?*/E V`G=L|0=-jYT:=Gd SjJ+dJVPK5ckRXy)e~"""""""""וb"""""""""""""""""""&?GQ~U&+!V\n÷nJm~eU + %OB5c|Er]u?SAU 8(֮agcdDtK~ٕ/$^­HI~5?Tu^G0.y3')OV>B kfǃTRyyn0̣"U^%Beb6R< ծ¿7aevK7u,ɩ֮RP [fUf^%HV amC;/Q>$lEj2{j9Ύ[SuXlyͺ7 Zt"h>̻;Lkf{fte1R+.!oWƤ]`0mo]nfvd$1z 2*Aķ^NfgKƻ'J2ffn[$!D̏2YcF8{x0z_ZީM=/$1:N }*ƵӖt>uo'l1;2g -eeG$w= -3+W 0ވ=Xrr(/C*VXR +:qBf8mZ~^Ox_%=!b])fVOnl{řC:ےYe,Yn:!R_ +iz8;-@ O۷p|PsW[V˽JE=p7߾ƻM,ΊXq%A#Ύ.M}*,]YSfϤ:z5yTh;2|{VF?T={W @*T P|hw|2FL7aQ_@|ÿ́NOxJg#Kb[<qqb72lֵru>g=tW=,7k-@c\Na緱Bѣu\jjCwj +1/6AH<;Rֵ0) [so3)n:-[)Y`C;K3r,IM:Mĺ""wA_/|ɿҨ8$Fe +{1_߾]}[jJxwRV='^u{nxBzy%YH=uu#_|ɾZ?5Ӗ|r +{v3+y-rtkjy1iHl ,H5tؙūb{;Uwߑ_,}'0H ,{MtRac]DGpoZNW*q\])hYYPMfEY6mZHp@ ¹h+5 %O#vӭ$jߞ\k}[)-u_}ŏ/ 0:ne=x:P拪н/dcEE[G8- w`Еb"""""""""""""""""""'3_Jb*luF`sa+ *;o{7(dYk=uRXI& f8kz|gMtZ^~9/KjOe ] ߇ޓYu%,WD MX\eaP;|7fAZ*]1&J=ؚӱ{ƼhźU[Ew.Uu麲*@#'qF>6UEU#nl yoix0vQH6HP[ +oPžRlv׼}xug6v%~v|7)&C_awj1V& ju #}w\̛_.i-58p. ^Z;~fx̱if8#rk4GgBy3G7YʫG1Wb?Aleئ>-o)[/}}C:5m`TFhCbZe}QOuuȪ޵[Wlk8/ ry k驓ѕb"""""""""""""""""""%+F +6I пCcFåQ{ic02pq,l!f +7cfn=*E]@'|ʶ5ojWn A:%Ԭ`{' 0UIgw56|3fE.-i^D_rhvW? s<6N6*J3ܷ*X.Ҥ(JE*g]k@K Zfׯn}]ums=ȟ肼j2 +(PHRv@(WUXAnW$8PH_#Z?S_jmU$VNHO_fSޥeR+.]D}u\f +6N$ŵC)D<]rc{*%P?iKH zԬ]THP\a 6Wco^u=LИ;qu3 0oz޼oPr+RAu@5ա`nĀ{*`Jt~=JnP>@ +;⻒`:: B{IXMijNĭvHÀv}稈ҕb"""""""""""""""""""&<"Yؕ*[`u'4GW68#ge?;R\涇N@ 7umXx?Ur1^ϝs9;zw?3=WdWS\k}W1/ۈe/rڅW@V*dkk$eՋu-Qzen\5Hylew_C]M.άNO +vq.'_ܜz+ ˑC[UtH{2/ᜪ鱵hSL ]>;' lǏ9gT"ߒ9zqCZ5o3%Տ͔zOGszQmTSQQ%+{h50:rPz1 +Q8'ߏ}o@ʷ7 +-8jOǿ1> 89}6k,drA!jv 'f7r5ƒW lyW&ͰuW*%jr9 ew^~e^_J͖j7YΆf>G]\*|=?L |aҪ;U},455ag HRb\+I( Î#$ügˉά;s 꿦Y5˱$ ~ѽ.eZ[QB7:6f5>]KZA Fmo)w[j[PaYAuw#/U!Fת$L6;"cu['M"BNgR5cl`r5}<7Wթf ؇Mq~6|*^<;:+#S3C97:`m +ܡ=א#;N;Xp}0ƽw7iեKҀI'lUlۓ5v3-z26ywn:u|E6Wm )]`4tf_P~E*t9},|-~'N阙G %~IYgs$sxzMY[EKjՒAef +; 柊+zU[Ue[Ŭ|\طWNF;R#v܊#[_^cW_:ІqgNur=ouu\Zi/[a!/Pe9ʫC~57cQzVV=<''k|SCcJV;ܖcܝxٷ.6MJ Tˍ@?FWZQ79'/_Qî̪ уrf:N@lx:M8`;1V[,V@Xllh=]5m);=~BO@kd`Ri7GpX2U"[ReZe$R{<3QO!޼_UZr6\՛8*Ǒ'BʣYmOE-]˽Of: +jEG"k~{z__8ŽC5K*Y!Պq|cz:WH\m會ځlpvz`w'ꢻ(f6ϵ*ʪIq k{|IUϊMnví1)_u,:؂zkv݄1CZsƿUk]ǥl^#;"ܱM5d~^|w=_\RZxrvއ-~-ՎC+*K8b=e# inv?͋kuw6ӕb"""""""""""""""""""&;x_O )J؛?x8y+(ϪbWmL¾նv:DKrmmuԕB!'k&'އ9-߇⵪*f5yy/xːƦߋw5k}5} *Γ~54ّp䪕Q_#{$/}'31rzPt%:ݪ@ mNs%6UKZBjǖזv'a8pwzVoagB>?\'XToKxC1RdeZϵ"ŵ@Kwއo's|pّUoyc CA{id]vctF'Q)Uiڍ|N(({ym9uVzjVjǒ/]=mQaŽ5 +n܍f&FQɻ* y*o9ԽtFVt B7Ǟn\]> gO- {[!5 uk2-Ijmo-^!ƿ i1Wѯ=R3 ,|i%p>ʄ1O۴Y=6rmJTCh58 +wJ"6a%6M$Ol uQl@^Ǩ9!a~>u+:7|zQ轞o=u22Eb™4Cƶ u$xżua)>98~Gxk ' rXOW6۔r x٣k\Sت8?.#}s##&55,R%x1 T2FSᾙ["JҧȺJK 2 dfXuPkx~\L.4PmZhW'`ǹ&t:cb7M#w<%}V0v51Օ=lGc/Go?u7ډJ+ jjd!*X/;y=;)iRzu ?+?5?-X漏#~GfXT]Z=UR᫳bTۥV=75X^]1Acx13%9=[kA)5 }^~c:jvULVC{]Վ?f Y}J3-vވͮ},3emĀWGz8YpodXM}|MvWBͪEZaV$ܒ&&{a5*Zv8 Т%=+WNRʊzxm͘6tfrOKꑭĽ5 + oO~tlD\Q(OP޾B(X+#'z}A8ɡ)V>GG̹(kɲ5p죉4A΅m5˱UUl*NYU$GbANs7ߛ2Ʊ!8C -NcxLbʛ{ ıv rΦl*\kksl~-ɥQyn'~\w鳩[]kry}Qhho]=KzP;T!GʿLҩNLlۓ@bAӭ5 ٍ'\Ev{loZު3C]t=U6kY؀No;>&˧[u!ZmUAHSC2*tea0CYY$W_d)Ҳ:V +&S ~DKxxgu<)%.Сmn=;&O~57@/\}tjRNA̢H#[G}˟ cfkBKVW&W]{޵h_d!IϢӢk'xژ}W&ӊɐ61*ctuJ/\spzΠ?Q2 =A갡n!>w:-hoχs((bv?6NǞ$N6|_nTlؖV*fe` y5Or}g]9*@D{wbf˧׫GgrP +1'~6x){}%lF{ ׁeG*߫p6 c[Y QǺII;&tWÊ͓FBb`Nmqϻ;ۓZr7Petf$b6ǟq25DTVdf$h ߄z=8V5D} y'u~wJQkmt>Fǰ؝Rqӑz`9Ğe9>vWTÓɲ렮{v: NRk,`K3MZb[)`gC_N:3(LiH^,U]lFf^_S֧=x}Кnqn~[$?@H|_V=VsR""͎@{lmzP5mR8./}t#YcU,IO@ڤ{葷fk븕Y6[B<{:^ y:#LUSY&8bTZȼdx?/yw;֩ob=V#2A#gYmJ^<УiŴ|h>-ع6Щe-P=Y0OYEU^/wnyaV=ad~0Gmq|'6;YlvBu%vv$p6=z d?/f|𲱭ˮjvxq+o똴EZF%3.(=cEw\7FS֨:#؃:I_ޤ_z3=wԖlƸ`V,JbGs_ 3 ]s`զNU?tώ]Af%VduYW]#!6x5Tܑ6?#szv_Qwq!etZ>rŶFy366&RO:7K]WRN@KC{O0%! Id(7m$k?9']+h˝ի#wDv߾/MC ʤvvM;_S#9:VuM+,_OXM}7a_[V]}=kGI$VͤJmmh˹Y3+ZޓtqXֻ̳ǡǷ׮jzRn<֊7;`oDh |EX*M=kK]ńaK]d`6++ |Vvrw׶Gf]:,$zޣ36I#G{5: y!s6%S"> +&w4ΚmU]VS) Kg&8YَMa]b}l[Cbce xdJ/q2qj\(s`PGCoyÝFR˲CCk:w9bZS[(~m!Jz{ӳ>ϱ +h3=sE6v̮<7%Vr&""""""""""וb"""""""""""""""""""&33hʥuuf%]h FQjV%5FRj5Jj5JĤ4%bSQS.[*H[G:/Jj5JĠFB5+)j4#Q5ԬJj5+5ce] W:^$:SG˿L`b阶a+ܜb{oˈЕb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѕb"""""""""""""""""""&?у^ +_:,y2?nϴt:\i,+mnlFG> U/K.czc8 +X[$|$u@ij3R°#8>ltAuZ'S? +ɥ,8˖;KĬQ֯+^14PTֻ/{_;߶ֻR GpAAnnVPnVPSG\q]d4EH'){3iuR~U,͢B &?^ͷ"Sw['% +6[vF6Z)g`kd V[uX#D;d\9Ҫb|ɞűC) J7o&ڛ~:7n7+5uoW_ՐkClerTv*fqޥ2k!F{.n7G&i-3*aa0WՐN1_`Pאvfq[:aʾw^6$o@ș;:p~Rkz[x#/nEW_Ϳ"TBPe4;;5fEcPi_\ebF=62勲WUP-*C1mܬfETY3*T죹CԹӺ=RV$e`FYNX{e^Nf^N%{/* wYϢTt7>&Gک,[.{˻S%/W4^%Wz'gP29Fq37b" ҕb"""""""""""""""""""&WӺuԯŠ`7kޫQNt_Fffڵdշ|_`>~bSXJUзw\w@ 7.?%Y I:I|Yl +Xz3:u't٫\׳qر=ϝxt-'Y,&d\.}zyx(5zv6;jt}Vd=ma;7~gnԱFZ[Elk ؜KMi[OUˢ4%e8 ,bT3^(ֻyٝ$[SzM0.3sb3 Xr<#۱_r3r\,[1y5?TˠkD7o]G3 Um*qUVA0&>Z._PGNuhUmF|߂{Bn~(ޓe2SZ]/Ζv8fv}]n}:M$yM"'ǟ}jY^Ny2AL*!Co7r?/aMmzPv}3=1l9މ{b7c=u5Xбmde3Z O`A:ߙfuhcSh|J>kp#[NEk|9^oRխ׃skUcu|<5Wc{x{_Z +ϑk-]d =_Nvuw:6n_uYAe|MSeu7 kc3XGeT.r{E9l㭁6ӕb"""""""""""""""""""&p&2ծ%w:ד +/Pzm@#n?wSF5mᒦqA`2'R˹ !e_z5]r{?E`#؉o7&~(ò}.%Xu%~Z1gBKijuǎcv<˸])0ݭgkmp~<~P@ye>ʍ.cGD}o6uVP:;ee 镔XbcWl{ȮGcK};zo]n.lK]Y7gﯠo܍P--ccOX h*MYXvR+Flܲ c>)$ͭkOZ4 kzހ)3].VjEe[S\·!: cVYbS$0*yֆ꾁UW=ݹLJo+G{V+. \wa?vzQ@u?tӨrm[Sߜ?Lk]==CĠ⽽LC!ܥ]ZQ}$rFiUP@h)~;TΠX^ ?0={ c .1ש(b &_ߍZ0ߐ)OC( Y +8~3'AL0%)%J.޹IOӲ22YnN ]CgV;b~b_F8N]yVe,:+(I$~}-/n6sams.˿~;E ѓk-0cvʀ5gDFd%ΤmNodc +#,VR.K8;Ē|Q,Ʒ{V*u3#}RˬNe~P|(]y(.=JC*Vv~v^A @f=Nӥ]ַ6߲ KU7MTP![^Dӝyԫ|9KW_o' ]>`vL{ Fw-ÊeB}bs` ^@|n_sEOڨ5IĂ Ϧh(xޭ[գ(mƘv4{WJNSVYaw.kwm%^f4%=2Awۿ繟S_["NJG%!q~tzqMEH1d/H2ߤ#Uŕk:#;!M$[aNv:VJFho'@?0MlܛM]zNfeu)V;v>&n.8N<,dܟa/DD@ԕb"""""""""""""""""""&3u +W%q U6ŵּ3صd~r`:.,JVݕ'o~gJnVxեY܅UN$,>KjK]L\Zve(El +uoUz+YAx =wXj]f[FctWW\(lF*f,Rv6${:*ϦRKCc#GWUApPj-_Ə`H;DDDDDDDDDDDDb""""""""""""""""""""""" Օb"""""""""""""""""""&tӵ5Ysko SYWPdJMʫAB+zO,u~]ufq䏺G2V#[Śۅ\ۊ]-`7߈auޣp*2*T"W|I壮̾gae^UcUǢy2R쥉~RvG<`uϴQvƳSs?X/cWsJк-|YcS_It]x}t;3gYVMUweFq ϖDۢ-j@Ԧ!.컱%,RT8ch֦ :U Qm^KRlm1-ɳpZYQrunۯmOXfiC֧&ϐwgbg]spه +z_M5 ՘z=}0$y {3:oYQӚ^/x5}N=suucbQmRwlJ.כgN[ʜz+{TPUT0*w؟1z^a]W#π(T:$$K'/*)^􍁃{h23V(Ʈ,kf;5Ƴ-)PUϐnUF#=VTKq,0@!Nl*uϰdYl|wXkK`ulIsVYY~C{Գ+ddtZ YTmAdL5kx,Krl̋7(gȳ{wߴRYxH_^질}T܏tGb0z!U5qSa֕b"""""""""""""""""""&/wPKJ,/ #]6?Bɪޡk^qOL{.7WN[ۇeMS*'$n]oA}V/i6-@VnJSh+`UI㹛z^Uߎc۾MOMb[VvdGEC³|lJ%oY`ĝyвqt‚> +y+svNMTĻ7K:58f}>P+qRe:d OmH$ +$rŜiGol1jA]H¨ +?OUu{qKF}5.Nx-؁/|o\"8zxqn^GS:]0s,w +zs,,KM:BaQLr7RN>alj{]]^QmaU/ς^7̶R#d;q.]K/; +E"*zz| m#c[3&nR[]򕨧c{]kQKSrY#]g^wjXg9+}O?GZ ֌p96ߴbi@sRbb:#h|2an q/y_nBrtiI<\/ef>Ht*ZH)W|{wkQﺑ۱59ʾL*pB zڇT$`v{|=GP\kY7Ir|Q,b3 /rDqbܙXvleyWeS^BlG5>ǓW7L?5Q߸ǟs6[«qKkj%J>RFcհ1Uk%TU +HIf (.U)&^:=us` k\'_וb""""""""""""""""""""""""""""""""PnnBZw·"""""""""""""""""""""""""""""""""" Еb"""""""""""""""""""%7X؍JnV""RV"Spb""S{lJJJDĬDJFe%e7+)XJDD@ѕb"""""""""""""""""""&UrT(u41{*q`?($|װ}hՀXG2P-n0N*˺5\-k!Ji!/X=sFqUL;fLW־[$!a(7ކ&[Xnln$6?dG%Q[~f-52m"5Qx93PrfLu>j n`T?}mh ˿P]3*+9U;z:5u:u7 +r=eM`n[ sVQag &A״Ӿ!ꮉanuzx0V@I37+ bf 5]R[haK|_#%agECc+ Fu0y˲֍c*2rkͩ.ãea{0:99Y7:[LA$D{LٝK-F)$慚]6wMKF*^lk}oM [zel:#c``ul|>W"̿Puhf@СQ DXv(ޙUegA{Xf%Všˀۅ%@,yG.AʲꗗlO2tkdxZM%^8 b%wC}7=56.]$X*;J!` ;;oS=*r-FbP[vA{1;;GฯOcRwD>ۙ8ugT2A]Mi v^Љa$-l6`=~g?zjV"LL;?t _,XMU#Gڕ:ml:z5H, MlQ,hwO_{UmeFdv{LVK]f{/f5UTwϏHȨoKָ?7ECXl?]b̖b[, +MHG_oa\utX-^>X ׷{}AY!`8A9o'31#=w!U;5tx}y9C['ܟyo7Ӄ9%]؁{i90S,. +3\#|C3j-S22w<oCitf rn rQiRJ:R5}󪿭.0x(Ǒ Db<iwSּ4ue[_Bc-|AiaS22|b4{ &}ZpsZ->a%_o6-I*6ess@T(,€;,c2ҡT6lA #d;k{\RRUb>MAmhlK~ SmtUm}f>vq`\/& jkJ;rO3mWXźJم +A}Z @:7AlCYe?2fOq܎@j&M&̗z),vt qQ ~3#c^q%~:2sP@,lLn ]Ed.k['r]x +;̣|G]_R I |~3'[ͲfG@ku5wk֖TYdUC͔ :%{95uĚ +Gq#D$ΏOQ0WJ" {+9tsK8_ag[z juD;wfbupfmV_AHXhn|=KqeAK]=`ԪPܐȈҕb"""""""""""""""""""'1ę &>.>Eg޲x${>'u~VaPqx) +3~; {F`S585Ï;K:oJ~k2}E uⲪvsMؕ=sZsmL5/&-XGtZ`Uǚ*)gח*3f H5=maO+xw +IwWCae}G%-g,OPc640S>ܠxdZBW_v@nw'%ʄ!}CC˕Fn!eC}\\ +f + }<{M=榾kzmU?ߛziu?CO~byo5}bf&ܫO[Gctc:0z9g}r"*o4u|o\7]fW[NcZ=n$oi7H̊l(f}Gb]7.=*Ż5 -`ʥ(}Ժqp-2UQ$ 醧E48=!ªq{(u$njs[p o=#η\irfӑ3'SAm6[AG=WeRSro̵fR:ڨ[Iq_5tOI]dUjt,QlXdl`bV)K~ 3#6ǢUG&`ܟ >+sR`x; +<|U?uvQ]a~~-5`9R鱽{w-Tϣhzy+,6j:mv~-)W X r@ߍwY`1Dd~syvG69j܀A'2MM^Bn +saRkV*_W"~i_ +r*<\+|ُɘk1r՘u5?$sh rYz"C#ȮŵC!  OR՛Q1]9.l9߇22Ic?FCXN5] SܐF珅ztfMb0!U]B9!dG镳gTV`xhp=W<^}P훈UU':Vt. M$ٲJ)eӘup ވ;{t<\]ճ}u=.~;@ 6};}fUa[[+Z1ٛm3OR$bZ긝}&{ꘙEc' +^ߌgX¦Ʃ+ƻ_dS^Ekmnl0;R>VOvYyUZ[@h4 ;=xmz +VU['2^Nߍ7/^23 +`I iUYQ{8_P+;wvjgPƱ% GǑfQeRڅ\0,o?Ibo^Ozxoz-{K֌|*pU}F(OnCcΎ3.p_j|ą 1nBtx𞱲RضH%X0ys~ZD@> x8|}kUy}ݞp=qVޡAP"VeQFprf%I-ˣC5Ledu,lFDFc&z;QH;`4ˍN]W'1Bb{h6LU5+#ccz"/8#}O?16^˔|kјRv| &i:Jf_}W7Ѕݏ6t .ǞԱJ֢ (fv|Yy`}bJfg_9`3]G^Ftz? 3Uunu`?2iΣR%ry}{}%N~:Բm;w_0z7zc𔣨dGpz>3-7_XJ,{߰˧~R32qE++ڨAb&shk ".m]yꜺrK +G(X+*~^e؈Օb"""""""""""""""""""&\3.s;߉=#Q+.*'o0~?%q- Afكo{(J'-x$l~&Dy5ժwA7UC#guFN+amB;[]0nژeHo`{wt]= ^섟n*47ܰU<+Չ@_Em]5; y[ +W8íj.GyauE5꾣l4fL^6@vU٤/"QN#=uu^{>׷$H#GS;.Ժڡ 6znG%-PuE^iUjkZWZˣ; oF)TuAݼ͎5G[ W`H +IנּG4FU<J.D\D; # 5PI. OVC-&c8kJǷg|.w^9׊\_dq=v=VlmR>bjpgi^fgUlE|}aH0.?^3Wg[Ȯ*e[{42%Zl)̮J.Mi{qL2hXޗ6s4G3A}_M7<31GǤt0Eʼn=fL[4ς4hyA&/& r ՔM5؍]xfc+mhG%VVط.;mv鞖OM뢾.+<0 8du.-F P+{51m>#dٹ4dXMԂN:D1~:]R%y!O%b{_̳ ,}%b$Nm=~+v^w ;Kf=}:ɱt˶7:4vf݅e<ՙu)oy#(fk3d{5]HEBCJ" %<ؙ}B:oTsN=0ItصTԡQ*a9^8!7_UlqG屷 ~~Ez|J&߬#Ufڣ~#pWg+3mը?+%?Z ]mUc(SjXG"߱׼M?}T'e zGp}rys<{f(S7Ӗke^i KX2 (uzfaoIǯ#$!GRʵB6y$ml:u;'EqK͋wޮͤ@vʛ' Srzu +RfZb^9v aR'¶,maSsT`$R_vxd BcSNhøceՕQ]էe`( 3hW6}0uu$1zV3nYZ o:-o6w]՟ c߳7;ߵte.ف3f;~[uԚfMF7Gܱ:>bu-H}r$GjW LUvK> UnZ=B:8uuNBjfFJH9xe=GзCln>~&S'-;kc7"܌Nx&jמ-[npbk,srX޷>""֕b"""""""""""""""""""&􋺣{Zrfaaa>ܛ Ktʖ$#}Tm~]۷30̶:Q<2u@LjZ8?O(OrGn]%bP'H* ޻RΡ0aF^%A㴣clOn{w*)@Ct7܍)ULΕy!@'#[U6"rPun{}=URPB'i[ZCG6<ݏVJV=eBRZS |h|>DcH^V6q#[5Ķ -5л* $(K_vU?حvvx7RSkRuȨ-zJ +(@?`Z;y`1[1NZ񺵰C tAȧ=EexRM cTkdRhPWJz…@hh􈵀vx/Z`rxVhyKqixYZvʵ" g*mږPc]FAVrYCG v/mVЬ^I^ xḰFķN嚺 X'^7Qp @'{}Oih|˖OO3`@@YM1O8]}45)n-Wjd>U2 Uu  + mGiQh]N=ep^C /5UqiG6 +1r翙lRh6F=`2P{;︪PUF`u VZrӺu^;5\|֗5Cj;~Sux21iC]ի򬡔y|{QB4;L\ lMjxqb 83Ltlx+_ +Al&`t4&mX835u"QA?V5TZ>HP ._NŨi)G ݑG<7a Z|85zF8kN@#}wn=-TY"z/Z1 :`wYrK"uܨ'/ip](N(paR/'&MOsa` WXrߟmjmuXוb""""""""""""""""""""SqcW-;^Hu /zN@NUeNVu1$o]˻"(Zi+YX^ y~} L_NPl|L |Jn75R W Cl7 Z>""PMsuO[!oL~~?/o$cZm.CbNX{laMDD2 dc+hجVSᮩ{BrݫbKr6Ͷs3|%ƴ?oekȱ*1!]s]s mMȟSU9v;~an7+)n7HXnV""""""""""""""""""""" Еb"""""""""""""""""""&k&ыCVa~nG@i:t  [C~݌))ig%fnc/Arx=Ȗ~ZŒBy>y ;K_Գ:~,yZS!y;n t)%AM;rQƦ'K]J`dbt{v?IjU:[`Hi3d-=UO\P  S0p@ZϮy0<Fݎ2U>Ъa{:: E?Qui|E~tzvϤuY$6[0c&Qou,E$j;^ժX1SβM6M+!{SycY5bh:{ܰJPqMn!D:&8ooO#F{m~V|iSˈ$vNv$z]@W`/Fq >Qk5ёI${U{}ʹUee鳛_wjvbmOUttJp)EbzAPOR41Gj.MK~U2uQI=vO{ngֱ,1MڠkhFo@k&N4TJWg:9(aj8wyzpkl=MԆ TKFJ: Xt9+KZ|.Pdcz,Sg T?̜Xwc߳V]se^xV OZɨf6+Qјuk>XW}C*2pWG~TW:Ttyrñ$aȦֽvE:m//7mehA!<{.ׇ]Sez0+jb,,;byq{12]ױjX9 Y8@þxJtWV`^V6~՗+ء]u|3= W #? y)$+dUQ 6fϬ^gXf +隖vP>B=c +E(b!Vo/POۈzw\m.HGj1zún}; טMª9w͟`)#hVT_STIcˀ}?9JBE{=v/Q~cjLj:󭙗LL\\lױ^e$IX8V"""""""""""""""""""" ѕb"""""""""""""""""""&&WḺ-u<#jA#=:djA{);-w=?Gűձf%{k^ +Ӷ r#E\[׼ E:Kص'mаښḂptFv?YVt =$$OL1z#_2a4FAFI}RK}ZZ׍ɞ踕P*Ö6Y'ZyaUp, ?7wfΖf'_/tG{(ˑ{x`;&!{Pjm:7I|A>I{j޾'ވ<Ͽ J=P)egnX?#;잎yzÌ#VmF5` ̜wGvvyE + 3~~V^܀bm6 N#JV-h=Ò s/M v׉Yө7y)G=cc1VB8fgfZZX}2Km=7]3 +݉&+b-Fאn$؏8i9~+ĸ$1]k]=3Rٺm ͝K+;#;y#ɗzVPnȱۑ`w"ǒgMN 9yW~m)[R*n`.F;&noMfDDJnVRV"SznV"""""""""%%b""""""""""""""""ԕb"""""""""""""""""""&TCK5'o?%0:[η'tOUJIZۈ x'56oITuZ;l||($N +i=G +9??)~%&Doˢ?dS]u:ed pK +˾;^}8\=Vv΂kzĔnelO3f*؍y;,*Gp =':}\tﺐKԎ*w(F Nw5߹޹}SVd*,w`}:L*E`@DVw ePI-u.Ȕ\]X떶;Ǚg9T+ViqGo^9-{3ضY}f`lޥkih8եlM}}K3;iMXUӾϦ%8_2*b@[Mo[1>$~}EiXA7}{+Ȗa*雋'CfmyũK;I:f/Z˰TCPFC' ,嬨JvH~k=<|mר yיfj]`#k2ԇ{E9G 1A ׾F_Q U~@P1*Onq 8 N˿\ʲzmŁX:*ۼH { GYɵiK>fRɵeWF#LX٠Ř#,@;#goasP֏QF}PGͫT-#R:*A \ꅀfކyձhc`{_^( ֥.2zj}qpy߀5>Fw?IQ##&"" Օb"""""""""""""""""""'-gVTZr5Ͳ8t~ Sn)ܿ'3:LfO֫Ħ_Iu^gNL[mT؃i^ݻ~?/LZF?w½ p֖S}/7u,{%+6?A@޻{NAzkEsϟ* +S9]£ È,{bHlu9Zղ_ӎ U_6Q5n.hb,q6nfu m6ozX6nD)*zZ޹ﯠ%Ǩs4h|7wND.-~^kA:7n۲ÿy9L~ӎQ?2kًX~jT7׼]]eLNMgz6'=_sp~¼_r{ ̯VX>|Q~kfFL8N[ٵ֬p;z3&P\ǹ:yPݷI%m`t)}UHqm~^UʥAGXhͯJQOZp_7tuSM]e0q~$kgS4k+?bJk$l}9:54Sk&%ʥ6mP %€wĐ& K3Ӗc_6l=00jϺf@냹`KL5Өl1Wfej0mEw\~fM`Y |Iɰupˌ5/uWrǾ-720Hd[Q:|˯Ǵ8UW({Z|u:8e`xϗ/̉_7$޷uvmH;-rP~übR, tSlvel4[,E-]r܇UV[ ~elawt},af-ZMf[Tn7Gl:P=y.U4|/Rzo>Q})伯%bW h#U6{+u<UP;M@[ +mWB55ޮ'6S%zoY̷O}JD)vΊk+FeJ#H?dN54j|Z2r`F;OM!FGS[#3f~#`#z6讇a;~٠Y\L]!ɭDZl{_Yo7'[e \DgRu'j_7c{92d./!QHUͣ!-DrA:O޻MyzOXq?/9|$E8yO}vShrSMd!q ! wkՌظY^nqt\w]˘7HعA6]{|ok] +l{[ +G^/\xMjl>X?ҟ ",vMdRVʙ +4l~#0kȪIGE kgdec'N?^[VmAT.uLj\\jVms"IAI:>vcjllu,9q kI,SZR*r+C`O#P/qF Jj5c@@FeSBW[xjc6eRÚ'\oV)*@BU]qFe5X#qXוb"""""""""""""""""""'9foNj+~RUh#1u[wT^V8X:_Gaa;jf %Y,-A]lҎL67ޏzβ3Pf +Q ~?3sNf۬TA嘀%u Gk[`WC1z[c:fPI $6eN-K^!3*o:-#1޸rZ]W'ZNvA+!՘MO]nٔ2Uʔ`9IپmoiVmmwbtYOD8hyY55Gf}>|ؠfar5_YOTlNDZYFv;ɩB +q(NtخRn-vڶ@*)m}9ojm'?'\\K1*Ȯ.+u :':o[7'; +KJZlE_h#l!q,GDCh?EN+{QX,߾߱ϡ=m ;؏G=O,2:u|9fk/-Rb +8|l|oW;"hmhy2?ݫVYA,א#}*Z:%X0λK4}{>6N&vFY9/vPu[FVORְe T +`~3e2%am' [gIkUBا`v5~3 &k,NOiGSťÖ̷-BФ5ḶQ_r}Еb"""""""""""""""""""&ΚWQՁ~Yu4t'D eEu80boRB{?jzv6=T{+o߳oɖ12*2YRKg tɗz6XΩsewUSİG}N{߃/:v*krB.퇾ωeG̊Gɰ( v;㾦1~ d`فV`,r +&Khxocd`[~;! ([c# w&\|:;9k\ wP6x61 "C; X9d5 JZȰ$n;5 +XI9VQoB:ɚꩫ᎒ɥXkWޞE{z}(D~bd:Ԕu_l{Όԥ,zBbV3kֶ8m ND^CC3UANfʩpY2T[ ӴC=^kv|j3PR tl4 +${~Fy9lע~֩b|mu9]#>z9O_l^e5(.(.GG@/[cdfwn:~u97QW<gٹC l Cv +@e,;+?dΪXڅ^X>n*?dDDDDDDDDDDDDDDDѕb"""""""""""""""""""%'+OMT\@k騮UX^X}"gѰWP)b0ziD`U^;X;n*dKe!KQ]Nc,q1B +Eˏ69}}wNIǢSxnԾo]x?M>fVzNNFuYV#-{TNW~U߹&nf>^>zAb !i@ +*iFMZq(* @ք?Hı+FHi]BmBNFoXc`瞉WȨ%fbY3>[Z+Gg +0׍'RL*6,]1 X. d~gW1[6O0'3>?OgjjJ˝UU,|;UZ'gڒ(XTA d8R(N +I +T؞ɉMU +V :>az>zհdG@#=_q2m[|1@X};*cӱljGzљAe?lXԆGiĦVxkQX)` o@1۩Rv,jRA"eJ1pzg=ipǿ ܬaΫWVGznJ} ?6SqūvU0zҷ;])W~A.A:'C1gRcWI<ObWDʉYM}Z|.,ZVݕ +`͖s2/qV`XCyu;daȡA{VImv4A'؃:n#sKPPn/W>?3"h֛%ҕd[M`*&3o\n^?M+[_֣/5:.(H3c_Po=arZQUP]☟א'-T%矇,k}1W5zpkյrD` GŹߏbb}Գr(PoijWP{:1WUNEl*'7{*7=r{V x C"(Kc 8t=L̼|R+hWR ^wS̫02zXZe-@;߰ Ws:[F{)>|tw̽w^Ԯg* +8l:E;'Dٙ]qj}UX8*6*S^b{wJoٸZJku$)Bλ]_d_3RiB6|xL)6r#<aK]{7N5UJPf׾>N}3;M)n5X B 57*ُj3ߑX{lvκ桾U\z=tkXr׶ws-Ӗ +Q(۰?]~cY=; 9+ec#6p h}k`v}O%S(gcc.6QAVɛK 陝Kcg'2X*Kw )fpKY=Y:"uWV@޶~HUHwT4ce,GPB[A) hM׭Oeޅ$*%Kպg_mLsUllnDmZeƯ45͆'SvҟZ* 6Z@(~ -O/d Cusq(Tk*! v{ xgՎ,,pJ2jQ(Hnǹ&GR{:.3M`nh m.DG+u +zZVVl/XJ@'}o=B>V[H'xז)UmEwb#uk:HsH\Zo{8?wm 'G>pV'@Re懈#G]7LԲqs:j)S^KX~mo33z"^;U`_>$6Ƈ [EJݚ,$ֵ0޸xutܸ1ݥN6j\\v+7ǹE u|mZGȭnb,|:ׁ̯F'O0&""Օb"""""""""""""""""""&5'㊛of;Rv=uX?i9767m!WἏlq}?O}oOZz{ Ufu`X#C_7u(}[.:T'ׇSީ>v.BK1fBG$<A|WmNEK*8pZnYB-:c"2qZ0u?0,LQh[^ݡ51P:;D(hk% +UF;;7,`w +ʋp;5_㽖g*2r~@{N}~m? F-θ\tWB8{ vu l~L[2|lYy؂5f _ o{,,8ORZ4JN2FXnT!Lj\ʤ$V4'nGy暎hٸbr|r=%Lu?g +VfQxO*V+%2=EP{t5yPg&UympBhNM':_L!g_A@Ox999''+Wao={%%Ŋ%X76&}KAn*ҏr~StubU,rĂ=t!r[m]j+Y>%ltaK7Yc?Q0zy[R#6U^~zd#ju5vkq~՝^B^U1jjֳXb+m=kT5yd\l\=F(e k{7M6.J5)T˱*` OЮ^5YL1`U8~(<~/o=*z&Cj$ +A⨺`|Qo}( +ܑUy׋u_OfO\<{oz5{`ݞP;jRWe9 }^ D)q]Ժ/Id\̀UcI]31rS.jrY~.L|ճ䪳{>уOR21=n6<,[ֱ\2Ů!IDFr1PBLlL {O2OuJ##oGE|DɔR^]x4҂L.JfTVvtF KkX̩~V"""`e\+}+\7fq@JGthK+@H2f/bWkܨ) s%P;D7gXWǽ1@#d`h }̕fBʞ^CS&""&S#7+U^ ;v%g`X{ )kpARN羟FUUmlrnj\*c2T7֭'}hkilV Z#d -_zX҂Nc($<`SԨLw[@#:3"""" וb"""""""""""""""""""&3/XzUV絋+;w}ǍZ:PEN?CmXxlhwŷن{̼i0v)2_U.Qvc0:_1'k,HMk֤<6C;3 ۩q7tnfU*e8U$.3hJd% Pv|ϻ*sG븵RP \knb 5O`W=hBFv%I[Oo\?7Zɀl:&rE[:cs b_@N̿ne!Vʽ1Z+f}y|۱4W]i}Io`_o2Nk]{{nGg1ާˑ9 "v?7S0UL{M[pI{cOhz/\ а kRRXāǟlO9 JKUTxn7ف{{*02J<(B˴<4;x=rFBb1:3(fP.l ;<꺿]÷ zxolHv;q[}Ǩ]q}TR 2AꜭoUd锂lLe,֋J6 +N5x&+JAޝ읙ҺgK/jjq(ࡽEVlhy2deCԇ_CR<@z5Wڣejiԑu\vR4|RQXkDs23r@ Kz[)!xs~Z״)s**8w#bSu~Mt%H+}ez/Jj]:m?JU}jw1RYYc!6y((_I_Ĺ/Z5g k +sN׏}̓KU=<*q8mr?r_lﱘJzV^7}竺QdIQs[̠)ހŘ;yc[+-H#G}̿ztl[2]KqfbT~d0r:_Jo]%GnǒNzb~Ftonz]|- 1[mԝNo/?eW(PA޴ mtn,@It)ձz/Zq.'BeYˉ}$Y7eq. tH :}ΜJOM]GWWUKHX=S+Wff-Vaℒǒ'Cu4ɲYvpbb@e ƻ!UNT9)!o1'g;#ͿWr,XM6Us~uFC7 lTU,;"W׏3oXelLMYuzߜlLnAΌ:WrT&oλ7uucZVmX)T>*ʣ뭮%Aqgr7Xߝ}!WѪpO"ܯӲ3n.+~;ms]wHǷ!уXe=?AeCHٳOiNa$:}պFѬz\m-z` 5s]:%9*[[օ+#ntXﲀğЕb"""""""""""""""""""&tܬWڱ`/q:oP`~*n8uνK Xظef\`*w#{gD/K\Hn^-oWoۉWt޳~;Z5@,ܶ;)bt7~;k ko_651[.lZ 5uh>9L!Y+OUY&e#2mn(; pξ]M:)魋Kq+)m:FzF]3 g=FH_@daݐsM/O ;/m,2+ƱRP;0u߾ Kt[`N%y%ݬZN?0`O&iKKRr+Id'K|.~;dYBU-A9 +B۰LilL[6VͳejY IuZoƦ'a#R[!ћjkrr3qNzSˑ.Ko*7{o~/"l]b6~wFavQmԇ[,%{Xv;pF^V?؛s͕ؔPΞiy7#! +d[2pr3.C־ kjع u6(`cSC {x \kvZʚ"09$H} ,fO[*%>}99'/Kd[j+K8fR6 뿿~l\ׁ^=6+Ͷ±$v˹]솧(XM7Yb V-Q;i\3dIY%F0 7fQm$,Бro67D˯ +gj}qxG;7̵@γ-Ķ$ވҁ7]}'#daڊl ĸ*6Al~6̀\v}·kzL݇elln1Zعi?hZ).8Au{{n`¹CUM9kr/,6u$>|ӜZRVՠfP+bGO=3%}c1/]Szx|J{9Wbdr-+`q,GtggT^, +jUy& }JyRzpjuqδf+}=2drʿ3 'Dx#_s>0ډ˶i|/ܿѲNb󲩬bw߾21Vc2Z} B`5̞8bHyVAyMPJ-KG̛><@'~7ʽ޳UPx/X簛9Wc2?MUk bwTĦ`|!f'MRZlnVGћ7L.ձb +̖n j~*X fvT]aQ:wp2nMXxru }gK5]3<LkwbXH[k*H>~G4-]Y >QtOK sshV.,]qa~* 1r4z6#l+(b$2}A~ZS/^@ hn|G-o]sW>t\2s-z1zvo?Yf.ET,ZRZ0̾niW͈nVq*UPNe.bNĥޛȂ̧2Kn=叀&^ҩ\sb]{oSφ2CQVGH>1^Z`EUſSǗ2/p>Sۼ_7O(*OY)a׏i_J;d0/c!K^q^Z:dDDѕb""""""""""""""""""""x+1PD7%0|t 3{˳]O6]Wdȁ|yj-ʠt/4I_(+u*$`@xos&V[ו6؅>̷NCsW;'lȉerk B.%CCe舞UԃQپqYe Fr#r"[eVu:|˓ȱ q7J|[Gu.DDDqk©ix~ʖѦn{nsPtARxSe*\UxDDL.h奱\bx;^-VGsU0р5)bzWdl7\zRly1,ŘfTDDDDDDDDD@ҕb"""""""""""""""""""%5#0R Ic9GQŵ!*-vV;ҪHN"cfׇyk?&NwNQ_L2 :b ;nl̮)sCXW Oj<˽cEnZ1](c>PHޥ-Vr`ػ q!+/ژ|Vo03p<](c1 tvvH鷺5u% C`QAԺj݉Mvf]͒uDsERJ5TRvu_ٕ{1Q@/_B Ȱ lo-(U/i䩰R(->"kc9 @e9 ^}MYulʧ?HA;u67GC ;˸knrmqc1+NwL^ UYZhm}I1мSR}Hږ*wīl+yZ~,h-Z.tAcvn + +-]~{58'3,OY-F=5#Z0g/]]~s9ώߋP͡123wbfFG*,CF07SڄRh4͡Wl@4{ N̬d]R$\ +Ƿi]I:rkl֣' 6{L3A[, ^K$0wS^Ue k32\!/ú@nā⬑Umm6 +T],F{W}ꈵzi + Uc7]Km*۳1⪣ܒf==c`bTi5@ep _~2/Ʊڔmk7ܜO,UTaQpMV#bMǃ)핀op;lS̬\Cj lox"w]nSWYU^uX> [gCl{ygX:vU4fY?Vo'#LtzB"a=̨arѮj;U >`|WoLy7tX~7's[թOGN#6U%ݏ.8ӕb"""""""""""""""""""&lӃ2_(p01rΕB+-UTo@1?ٷb\WV6N~imKz28XhoÝ:j[+fag|s1E >bG'μMh*P4pٳ9lar6뿞?SQnC_M ϦBxX@߾Ƶo=_K1gdpJ?)יocٱ}ʇR?{ ٕOܾ5j;QZc{6FׯAG i!B ޴|ar: 11_:TfVgoӷ-Q#Z/V^u +aתc9.2҆퇻w״MO^jΗ@|oSUWMͳe^G}ۅi_'[Vy! JٷcVO&,f<ޯmYF͢]gA+} ǥ23r: ?BkW`fD3؀oM9-۷~sB[իش*1O&j8]3KxbYQXh+/]]2kmLMÈFp?6 K=_vW%# ,B? ^_N&&6ZtYŰ>VFS֟&rvyhk]{OWaekJCe|G~;aVF׈aM4:-h44n^;Xd;|P {[LU͏gf=' ]𷯘]i -Oc 휵?3tVAϮ\wF=<ﶧu=UVZ_h+X݀6ٹkV5OZSm̥Ux@cG@r`I</.$2~~cZv$Ut,zF_`lqܟ; _:[uŬ>4_ɮ>4UZbXmw߉ȺۮK((T# $t{w2"""""""""""""""""""" ԕb"""""""""""""""""""&WE̽r-n;F.*zu 67;7%!kQc?({NsZ1$Ѱ@ަ|DDDDD[ [r]'c3"& }/ͳ-np,DVK)޹3Fn#U*A=wЗfXթZa13"""""`bl|;۱,YC7`-jͅb lN"jWJ}Зb""""""""""""""""""""""" Օb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֕b"""""""""""""""""""&B>KGd ޚqO;m7ԵҾ+6l=k ~>3w=Pc)s#?prާM]jR G=JXSիxY ~A$w2nMQ ̑K3<Ǒ6B&5Y}e!+^WGk:7T* V.V߃ȃC]L|LZѷc˂ ?lV΢ىb3A?0lJ;jYI>ZgS]YIFܴ?-h 71zuؘR2Uq4"% q-X)T1/ e2^`̣0fԬ' /&R 6Ni9W cdU[Ύ'{'RnuxfWXגsȧ="W"';޾$&~wHt-RӂA"&%1u}:u ؖ`c>+ HDKғm|1וb"""""""""""""""""""&uL>zV,trNf``dgL !-JA>{lTw F6EVʖޥlvNק\L L,j%Pmܬ|kfGOkk^Wbz٩]t{ a_Yx=S+K)%ՕN: ةP{~s>=[c~j!+߶#VuZ% xf+W@mkXT6H.#.;O]V 2TmuG^'%.NmUm2+hv'̳hNuY7  +҄2ow ٸ 9{oXi-v~y5AҩmgZMYA%uW2U\!Kv =10q)b¢v*āOV,yT?s,hFt e՞?+;_Um?-1;'LzhQe_R=>jQi:gǨ6Xa"h5).λ1CNe"7 8b;1lYw퇟=a:f>g]<|_3/75g_èh L:ى^{S/YHqӺPXCmvlɽjm"wR{VoQ兩.v_)*2t + ,Sΰ5upui-zF鍓XuZ'jN |YKuxUߐKh}NSkA\TxSW'$8`FֽȚܼFնv& ,(7v.[TϩK]5Jȸ[e ksqzgP[ZbYf,:S7n^c]r;L+~kǨ" V L]7ȶѺ%[nz }; 2C[Ћg'UFԶ,, ukY}k+3l`&X9^l3~)mxS\LN__N/QwJ1jz;`WQٚnk1՘׋bTrͦV0CKe%Ǣ_mӦЕb"""""""""""""""""""&5Ӻ#fж/"@? tc\ȍ@6"zv;: lkSZ*LeVR;ūfPJeCp(" *`N]B91bVXy[u 0lկW7~OCCcOkqmZăOmLF韡k,tbB̠"!O2zV#㣽e'AFo7者0ӣՐrV,$ #n;]kzkxu%@-{H$eB5URiW!X@#.Qqqu(b4N|k<x83Ck +F΀2n2C+)   q@y),y$톻h5y?౨iTK)m۷&ǵlfP| +@`?{v3UB wGƾֹe +3(p<ܶ~8e4O0ޞۀ#Ɔvyދ~Ey/^iڏþ}1&%dUP[,6te1&H65;D'J{ t{(B-I:f#dثcXE[mM-מaz6*[mʚ{0>ă_5c6"RnEn ŝ +멪IQ <}}qraBYGbr-Sif]ܝkwd>? jx&gHqc4v|y!S#bU]E8(J2kjA5d`u˚5^>6@&.M +z&T.^_!)oFĺֹT9 /H ݧ8)9NkƏuֵdR(H9=pN66pOUNiY];lsRG]~f7 C%6xl;{q.^ +f= 興ѕb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҕb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӕb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ԕb""""""""""""""""""""""""""""""""""""""&ޡbߑWLgv==Fn3f@IǏ y| +@eeW<>޶~%ʭjC|+?D֪d k{:v7-Ӑ *00X l<}6 ǐ;&""""""""""""""""""""""""Օb""""""""""""""""""""""""""""""""""""""Q"V%BGS|IA<ҺvE޻*ڱӐv#ؐfSsSիپ["~AGf_9mK U`H ¯'A[r s~><@㔔]Fsz3.^ +U!bKloԽznG|vsR*xs`]+5X'!ncnT?dgJ\[jkbN@;JDDDDDDDDDDDDDDDDDDDDDDD֕b""""""""""""""""""""""""""""""""&u;qrh@}{jEۿo}Wf|SVGSw_IV Vcf +:rCXt3&""pr}W}K1l ^@ `4cNfVT=3iI^Aj10>^`V)Kj{k$b=&7• |uV3/?9_G¨.=@M{v*1U"4J?h}@upϤqF>jؿ=oƏ3+J~H]1:e mRHm*o*~n݇6fxUPkj9!^ҝ&NW"r7Ʀ7im]ﱕmqv;UuIj{0G4bɮ@I ]:,j쪵[_ݸxy}2aϐYK~uR ,TjoV{aؙH#kq0~#E"2xS=E_?ik֩C{yW6V""""""""""""""Еb""""""""""""""""""""""""""""""""q}An~^ EaɗBJ~E+߸;g]tJ -h z&K|#̃eY`р?i4kl$TlQY|f.ۏK5dT#T%x `݅NH]mvA +H]3zf/QR;Ck~ucQқ +ZT* R*N&i)\ Ƥ$Tÿ~޻">?S{-rTT3XA:$z^\AJ,8ʭo13]_QP,/TŴ+<{C؛B&BۑT- 6v ȝhvz%ؗd}oPՀQx.~_aQ+MYHMyqW<&; 6k)d6/o|Xu`쬥9/5(;_m_nn%#>ܙv'􁅊ecvXJt~z]U֗JQ1?ũ=*j,Y\Nj~3Pmljqn"e@'[)6tR1Jb@t5O0r023lam)dh?Y.9FAk>I缬d̦lK0f5ёpVFM/sX!9r7Hu**PJcrw*Q5Xѕb""""""""""""""""""""""""""""""""S@wԬDDJjV"'5FXиCЇs80ty2߭osӿ. [ؘ+G#aYcw%|L{c?aR_pj|gaR6:ryֿA+ӕb""""""""""""""""""""""""""""""""""""""xũK9$adtW=.ʳ)f9Ռ#rK +N:\{>|[11ZjTiUY@q4\3-̲|f̚$ O l]4x4bAުʳY,t& Na꤃.ӾӟFVUZFln![Dz78]v8bً1-b52%ʻ}g}&-^N|]0Tce}rԆ>CYx3aܬ.edQ{^ Wwu ޛZی>zTF,QPeH;Z2XMwm*pӀxF'0wU U\q"|v+^l}?#~mZB oThrN&^?>J~PP432"""""""""""""""" ֕b""""""""""""""""""""""""""""""""""buLm>ooMlf.vqbX;vbr=6i+T!Tx@#=ctž( yO`CQ)=OR}ɫ;Z/m|oa./R̷>،A87m11*i" *o{˻Ե^ubڎԖ@bc6'oK\ϐ[G/ r;ɲ1mnAQ#@u:tR# \~uL)..E+XbV!dG>_b`C 2m]?=+X>Mۈ֏oduFg `W$~2ŝ>{fXsZ)?~r>,gz60HҲP)ۿduNJ]Chv ^ôp]mgo,ǹ:@<&"""""""""""""""" וb""""""""""""""""""""""""""""""""""SQ#rb%ĺ]qR4Txo_Ib|=OC]=GśnŎ1ܟyWN8k8Rcz+EeӭX⽃rbׅRSRDEU@z aRxJ| +weU]S9iUGPYw`>2gvVϾn+U,ݹT +z]7Еb""""""""""""""""""""""""""""""""""""""`uXʻ-y=Oa)&硪ziKxx`tei/:>N^9ymA*܆9ټR2 ֋Ck@%z}XWGms>3Y[13^U*? +4%BRнa?M)B-h4=ijVjt`JC)n[cؖZ'ζy,66^ ؊ʭh6%XjV fR؅zn) r}.ܮlZ;S;>kaodvFw@L&[]+pͮdz}Bq hv&DD+ҕb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӕb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ԕb"""""""""""""""""""&K8T5䛕0ȅ6QnjSg!fQKz{]352N]Y@e,ʨTR~Wއ^tpC 4{s՜?<ݐr]*lf>Wk빓nj&7v] Tp͒6+~Pcn>5siZ{kڕK3"b`^}fe^QFf66j}j#lv$oXydY]7NG(ښ љwsrGT†-M,r zfT+fh Yz ;ӬU  [3y(>[ߧl#qr&b:vEȫr8or﷐[t.~}xmRv 7(1r/* kIJ? dT&v By2wc4dٙ;ج˯~||'o+rs{oV+ܓܝ}5套YHZo}5zPDGQ[:֏mw}#?7kC,(~` >5n7xGzgRp;GFͻ0^/ʬ* +LI̿&~>ٻ%('Q&ƨZޢ%ͽ9@;fdddMI=9{=fu{+ɲZe@ Kw:FztgŲ*9#:*KkˈǺ]m{)o"Ʃog˸b註%lxHR{jN뼨;Օb"""""""""""""""""""'7.8}"fߐO({RN}5]NޙU +7 Xp6I 6X蹖q1,8*tcQNOia[͞Y(W2JnOQ@nX[o:ۋoj6v5jΧG7epHso{;s7Fū‰2غJ͂ߜ4|ј.˨s(T\z7HǞN=YK1` ?9bf_Ht{=+r6\yod ;.C  %{mL ;W5d(o=db/w̪6Y lqŇm(Ma?D#k  Z|{96M|マ}xS&_ze5zi>&g8[ds,{f-&N7)~?谘R[ +wpMb'_ ?`uǯ=YoBw ]6y9z8,T\[Awod}HtӔ'dS*]k>N6?EV=w%ha{$f煒92bRAwsyoHǷ]ʖo~q6Xiq~UI;!{M7vz-m+kvRj ׷}w3#1_tUu\͐kXXRT8SSoØB )eHMKV^bCs{б[z.#_^Cle%YiTw{%,:[ 9>R9=a,ATf!WeW_Sʎ?C] ecEr'l3(z-1 z؝W"oHr>EWV ZndkҔtlplA,1:6v65s#BRk=UW=>ms6oJ ,eggPbH:cyLJ1eh§W~%w8yGG biz]@2ak4Uf֋eUX%F_տ*~0L`y]MLC![dDzy]O2rںϡ[/g!҅':̾KԳ/]gIQ}0ػ%mxMۛ\ŵڌϘ2}ǙoN,e\)ϺRΉo̳;qٍS1ֶJ{Mr7}_S>\[`Ue? fdz1erpnz8[ -]C k艮l"_5-5#6n5`SZF ~sY20ŸV]**L0.a1_\e| =%r+-Wak0W Xo}OB<0 bzj3[JΑ"@ }qx7VYUeonF,;Q $ۿ7g]r m*W}{U +uQ j^tkr~O3qUIֲ4cOI#}nNOyl] --eaa˲x߲fM3e57#526"oTƮ}<}`ls֪TN߉O8u ^UWe=t2Oգ10 ;,g +2[Y RW`Q':=k}Vlpܿ'[vd՗c}qK?1-IJhveVkam=FIu$*Q^QRgxm ]ۿy}jb.%Mp#GH;{1ZmĶ( ƽOó*:`Y!vX2*]{;׮o}63gJ֫}`OaE_L.`3|mu`]͐;ٖR쎥rYKfa%}hOw&[gt2nVѓUXkU k]}kbe]'%ioEIi{xNFFͮJύ\Y*C$w_y-}].kۏɱ~IwPܝhl*ͦtb=8#듕ǞZfeB)zI?r<<1֕b"""""""""""""""""""&.gM9]|0%YK u1Ntz"ײf>rkJ !@H#-ٓ`fNmM:T\jbv:"S`ЎʖG5{vL1Vꭃ"fAIߴUблX^jھvvy+(5-\}5w.Br kYZ-cXG#Ǜ 3 DvpLtciU*T.ϔ @{LJsjo@LŧSUs~{xOml_6+s=AeԒQX }ܿxo1X959Iޡ; ^ٙZh +J[v:p>XiBG;ĺzq^?Z+r}fY@ );+zq:.,ZvT|k*9 +R\T|Md'X.?-qP-kv@\z0jvY8;;dW]gm1Ƕ{S?P%YX ;Xtc.J c1eo5;_ٚ9['c2>ɮwVJh@; GDU`EBeY? e5 }E4+k}H;Os2z]Y%'x7ow1,ԗEe}.Jj@?/m6{w=1z.}Afv͍jSz7W~v/oCr{KKCeyh0pzwJz[g,Ycr.u +z Ew<=1=T Y +C_h4]{=b TVn;6Yv$3{jʹrx,ř7˃[zA}f䄝r{x~_zh.X%'+G@ƺ˫\ۂ;V~b3f;fOWы`:P//>e(8鐋`i66ؑĝ#mJAZqέP.)PB3c5}W闬fMI?31"֢=m߿}35Eֻc*nIEv5#;߹u U͜t,_eH'\AS+s> 9'5vJ^]7@wSF +mFmY<y%q]Tխou\9>3=XXlAȚ+銹 +:#{v+б& UfӰP[^;zm_w?7G:vzNV+v+)ڰ# б^Aj8b,Ėn^v<2~̭w݌ A w;Ԩj 'GӒP1vfD"z4t snͶ1:۴gCò1#Ӳkw,籹t: 1B+ǼK-Ev[ [;0Ե)·eNN{cyrvOrO2gM5뱶J:.7؍=6?}ת Z%FD aYS܂޻KvtwSbzG+[kl[ףaR xwo/ӓs^e6:T ރv ~|0 ߏBTz;?10Jv;=I;Jøf)W)j*>rqU1ZFJ0)+<1:u}Hy,ŶH}&"" וb"""""""""""""""""""%rkG`*B#2fXp8{2vlG!V""""%5+Еb"""""""""""""""""""'/!=( ~:V6}o3s2YmlVWK0f: +gčeP2+ZݪЬɀēo;"W҄VĂ;:l}\.v%VӍ9uK;K]#ڹeN58"`bl GӧܬDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDѕb"""""""""""""""""""&R)MVsj쥋WbkR>`AbφAAUP@+4wؑeo[eY**kF2>ƾzjZۈV_w[9d\5,9>oze+G`ʺR%u&d`W!w0R#`Q-_V(:(Ӽ=ĬD02ԕb"""""""""""""""""""&nsc5X^3˥{?rl_X)xc9O:vw\Uq+.[}x%ߔ"|KcNU~)/UM9=:G +~gQQV \o@mY3#>;Z + Y$t;?g/jq:E=`cSo漛foQp1*ۑz%a6]OF_7Y}&Zdt'[WޏcXS˾W[1zާuRY-|eC,YSꕡ`4y`͖P&iPquzjU>k,ʺ(˻ģ&\V)[њ;nCTqmhg2_U?go⪵RYXl29`GGS y@Y7CbG-oqP)fֳk,>ӓ_6ΙgYL\3bosŒ…*vN-NWS]VGLj@{X4coH+2%@k5ߵt[BZ֘ξ016+X6kS;}^a:5vSkUmmJv >\t*˹3YbZ(ۻQr;zMJu߱k0LoSϴ5ǦQAyy{OM=jDCe-`?$/?K1.7kd^.6՝p!FQΏB|\f>GLKuiu.v]=7#kUӋI*WBn]T2:;'2뼲>' Vv vƧbedׇoZh6@;o>&vuf`!t5(~A +`?=f\'-1\/`z\>_:7a]}Ji6;}Ӳ4)Y[:%\ ns ecqqEA|RCZf#c)FBY[PH;{&7Ft^ҕ{nuب6]w894.DRz%Xk>G홝N1n.[P@$= ΏGW /m33zodQѪ+c4v{L:tƲ,tįqkcF2RzUc0"H q])X9.VQN YXƵs ᮸?Vo%&+ǰWae}Y<_gqjxJ +{:-7֏į%uEW,Rz'swݚ==7Y UѲ{!6=knxzS؟Wlnƶ]V8e}e~ùw֏a%VE tem*+NP<_u ǶړuSav@5*Ϋ̄'.UNoWg]QR tew]>p=R +.q;73*WKrK2365kY QUtZ'ߴ`nMV3+a +'%ӫ&w=Kv|Nabf,))*ͤ*::XY8YeYJ~e$ll~3/7ٚRZ&f6z` ~;RMY[7߅mJVQT!{crPǿrԺY{6;TlhK5fȠM=ۅV;9"'ĆJ~Һ]_Hb4J"eDDՕb"""""""""""""""""""';XC+8\dWZb[{tn:QVu"aAry:%{o}&K_w6/pnKnqo57ΛsUoW|k^wX ^GlG|ifɦ`oP +ckd>7;Nv]}QXkSIB&&V*za䥫_ Yv{j^˾%Ce4Yj8v +tN47F@7%/Ӗ;Ot ,~f@þQu}6]M2ĘY cUV qw w;tԞc5whA՜yF]d3iښ͍n y kD}!3(=S2; ,M+\>0ޫCRrmz2@h{ks_SfV?SzTl:mSbYQNך+yI?^9t[5WF?J9?-r혝??WbF]R[@#9p:g+rgJXX|M}n^Kn6+WXZlr߬uq98,MT>>Snv5=/hڀ=T[״_֫URWnm`~B?B=΍Ҳ2zOXȭ RMgccbO53u*/_G660tzQMu7_tܼ3n|86^oϒfU0 +uK6.?] +_c>9' +ȎRH$iuq?*jP&, Oʝr}9unF+ԹW +$NվP8͓FE**=n +@ø.2 +;T v>noU\Lp^'\KMc Wwo|FOƿ T|Lk͵yѺ}g5o}R%Tr:Olo.ƶ +$h!s1/.M *EaoDniz_Se:-x.oT1b^\'鿬U1SUe94bAÇ^LOFuWM4ڌwC;}玉r]CT5..KwY]/u\ N6`HNZ 1:%Gy:,܃jWR ~U,wg~zXm]A+ρ^$޶o"e`eu>VZյm`71?zb;8$+=pCqh Q~ +J0gA?_3kPи_9n_\вS2Xv5~MQ^ƮVNXC,T7^V6i8my3 Uhryo]7{M47D5Z辑ZWUP|1e[|okމ^#fZvYXcS.ym}m溅}Rv8֎[}5=Q2}'Ʀ`<|^ҽ-ԭkH{-gbL7@/tL>baQ[;Y$O!~|_ 8QU\θaz}DmY59}1hzzB_ɭ]{13~iڊ=w2FOͺVr +[[*qv +8k!F5I@4A/NX&53(ޚ׬t* F d1wgj>%Y$m ͶUy9j1Tʰ[菗q魎ʘ֖p&Raq>W{ܠ깅+`OVZVttu~wXկu[SҙUԕx oj블t1޶&" +ǃX o[2h&>%(nFč]RTdajjRG{r DD@֕b"""""""""""""""""""%5ԬR)YHj4#QЕMFe5j%b"SQF#rDj5AHkQƵj4#R({ƣQYIYMn5j5jVSQƣQƵ+וb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѕb""""""""""""""""""""""""""""""""""""""""""cgJbʪَ'}L[NɋQTGARw6f'')Sa7i&tJlJxɪ7*#7{WWR>9W6\*X1љ֥9Ҩ$J #ĬDDDDDDDDDDDDDDDDDDDDҕb"""""""""""""""""""""""""""""""""""""""""%%tʭ}n}#3Zz&ky'c]ONK`k,66O5][\J5ncn=vnuW]`ʛ}5V}fS߸23c3ش*U۹cZߙk#[fR + kG"z|{y}%΍aB=u-ofϤ vpi$@y#rYm&4#S+a_1-lc?]nbuޝC!#2{>9H|/йѷ٭kjDٕ\32GY4SbR˲ջ6 ؟۩s鲮7V=d7D~Zk֭Z_]=5w%va zmz_eFO}:~=\SB#"Wt?|#D~s+=+|̫No; fXՑj """"""""""""""""""""ԕb"""""""""""""""""""""""""""""""""""""&\mB,ȢSݜz rV'S|` N۾˸f+^?1~bh ;#;v@]A3)EORT~ceQ_Eh~ Ų)`Q!ްGvDDDDDDDDDDDDDDDDDDDDDD@Еb"""""""""""""""""""""""""""""""""""""""""'20Bq:$lhGtAUt:kȽٰq>fU]fXڲ]uwey]Y2{I_}:3%)b,}DDDDDDDDDDDDDDDDDDDDDDDD@ѕb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҕb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӕb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ԕb"""""""""""""""""""&5]ԢR]7=#۷X )L.7Ulm؍8֋i5]CfTJn6%b&V`-B]Kcv/`6KU,d߸$y"VSrI9MJS'hXи{:@b%b&#=6:OVMU~6㨌]55>1`N::Z3k۪S,"&Dq~FF]q y6auAKW[8 HSo[>ҝ/4L|}Zk@J[72Bm=;;mͯK]:Ρ-U[Թ)%w]^txgn[LJ=U`džPFƎ߃<޸=t3 uGPSmDloG^?w*k+k鱹srOzUyI͏m$/*{{oΌRթBPX{؍ij^Z]m)UǗo2˖ jqF,]{h̨ܬsܛ[)(|b6?{f1SC@A܏^m5QX~wsYmEv=gjD4Jn7+_j7|w|wr5uS pj˗v(CoSeFV"""Օb"""""""""""""""""""&zzI(!Y} Ew5bmrTX=jT7u5+ v<3cbrr䦋 V81;d;Y^69V'|!4aks2?ㇰ&|g+)}Z:lUrHP]hF!N;{M5?DGձZŊj)X7ԟC qԞk)f+\S`{&6zMU \ :.֯:̬tN \m!qfةϾ:讷Yw^VpBl~J( ^lWY1}Z lH|7Uv +Eإ.$،BN? MƘu~vCepzSM׋V:TŁWRZ7ܝkgzsU3+Q(1 "{޻ο Հmd3[`Ir֘YYkMn&[@)'~ɇEgu [tXr2 vwv5tumӼ ӫ+"xia[:zőؙ.F}bvm $?W6MSG0la_Do,o@#2maiDnMOM` uӗO_i?=9-MK +w-W&nb>[W"Z/~l75 ~75뢂1 dն5mo/ԥ)m,=wO'5ԺT,r!vj#zR;MSuL) Va *Rr9ر {3{0JzAZScsVb 菨e|B,l2صYPRUX,?K ~5VN):#0=/[+w6>F +3mt.kcgV=UKȨU5\q#r=nP浖X0:qc[93ݗMfuVNFʽAӹqUd#kjr̞WRXJȾB@oA7S>)ӱUՖ&; sMs;r[N~IYDh;;ϼ2PװbtD!@WO~vT`~j``5]O(ĤUI<*Ywr9/ct{ gZl klxDJqΦy]wUܝJY:UYjs'S*׏i^_gX~r)ϴ5fL@<~Ӱ6zfVI9}G"?|M.oK/Sm Ր{lM;[(. jC{su|=ӲܱAYj>kYnN5%3Z„hP1'dXǨ:d5we7oSmNW{~rGģuK,3T&5M VZ oVn{Uwb6UY3^ܗ'AJ쟫12zCXG};2f'[\E!u9+qZ5hvfbW*^s}&7jQ*ݒwop;[":9EͮIVśaP7n +z^TLF_}|g;.SUo[H:5Ă4{̪gfu|:J>9Z 6B{+^N1ۉC̨ٯz92Ibdt! N;0/. tڻ/c1}#&?jצ¾L `A$6}12;}ZlXXϱRIu]8T.G@:n=tC!޴6<~Sgbng;2!X [i[/J+*2xK˲{Nȷ6-Un +XYh`-czZdϳXCtSV:Rͥ 檪S{Wk,Pt}r+ĩrl[-U:o}BP R䄥A`} ;[_ +d[fi`{URyr%R֬=֕b"""""""""""""""""""&gHϺ Z^+k[ ]8Wfk+}'f͎̾`eOڊSjNQb${6&t,\MYkmЬݫ䉾(HFiSe+2uS>R;I\am:1znf}EƾֻLHׁ=I|aj_H5=ctq9`3;hxb{~4u+ӚVjv4vؖFo,\~Fo SKV( ԾHGͽm>efר77n_?q+O㎵3ZZR&&nEY66Uͅ~ +wWcbdەZmbܵ$v3&] BŃf}B ֻC᎞)lMn -OܓO2Lk,Ӌc?fl?9柇1҅ w?Q{C}C߼P=]ى'C%* YH D?633Vr eȨ'Z+øY:1>/ +5Clvб7jk`@8R9kLEBh< L,z亷cXv$wll^ C~]K cU+oJ-Z<{LPyo{^{K\+h3_7yo/O|w<ߢbٓH O7IJ7+ѱ0! K;s׍$v-c|;ȬB֌{DbB:y6媷jpw,_hkCӺ^?IR"u']ī>4F#UXXg%Ifffeu+v?Cm,]k(ܝK\ +'ןy{*+%;nDaw`Lū " ?=缼*s5ܼdGpA awUC cc>In=: +aSo$/gtz%L8sw_w-ky[Op+V%kwh￙Zw%֮c; '`=qp7}=>|_GͰZჁH[l~eURPZ *+c/``Nљĕ#cr]'8*r$~'d}ۙוb"""""""""""""""""""% l#2\X8%YH'iί8Xk ^J[>dn'+tF` ܐ6u%sR!XA>_;p4_nV%7 XlFr1zzt0^#,U@ܒY8|,e‹Ưw>_ՉFMQp(FNal8@w؉Ŋx ,cg&MR1d* +y+)YlUǶ98j ogl{zXHn7X}Peed*C$OL艫=u0mj.tDwZ&Tf[Iﯠ&lb%#pLU&ܐ!mͰkEˑZXӪܬbSsuz[㭈_zԬ˸ LĬYçcېQVʮ;l㿙ez 1h_H'?)Jd}RXª$ H:IufEv-, qd+ۿ;q":` os:A-q8?&ˁ5:/72w0rzb>[ +8l뿉u3ˊw,t_Vŧ.BZ7fs."" Еb"""""""""""""""""""&;V[\O=ޱ}q +\;]+7mQxj+Eu-H'c>s>X+GPЗ߂=.tsQΜJl +kDm}-ձp]{>ѤRW$Z6?C1z-ڬkB ]i_"޷5yz +Je;$6;jڮS+_%pliz/՛w*)W\ S`%Y> h{z_P*=5]hw` Ny2juTzO`UfF]誓Oms*{qZU+q="{jkOQL^XpđGc6 T&H qaGorĽN#E; s!u^n?!t;{Lk:JdC\TEHͯr7%zgVWӍWgG pNZtXu۾`uvWDr r>;wRxz)^>==~^n]M˻x⽕8]]q<hlTlcm` v4 Ye\:1wS;=fQ̺vd(*{TA}mIpӨ#`荍{u:G ugju fpI:PHcnOMW6 5؅TVik@aNǞ匾[z^=V(دcO=#w=7/NM\̌ŸyYn=tX@)a؂4u4ٽ3C\7Tʊm⧏-~ܼB&1JRYʆf<^2fqobKA ;r>W};׵HUYTЊ7ܮ̺^f#ZZ*_H&j- Vmi:љN`;]D +)75sJn^{k箓23(C[b%\LX\v9kƎ{31s2rX( tU ;R^ޙ^5t>NMt π;,:czMR}u5d%bıX:֙XwķӳBh^$"g5!lu>{l3kQ_ZҞ'#4#}뼻ֺgeNF=lUӍX{]v,=QqoLV-!x~b7Z?efxݎ@8E<YGp;_>>u-z%ղ"!y EڐH:$~=/G>yg6I_Tr{ MrT%:MZ#`ߖWS? vUr:.}A6q5!xc*PARݶN.5|GP Nԝ:z赫*VK `~9ޝ֯9xjdpry֊}'R{0=WP^}zK]Ul +ʎŕ*@#]UVS˜OJ(VTXPAԯtvfG@⿓UGm5s7j:l@(}V.yћw#|FqP8u) D7{MJu\園-pM2s/̺u>mIsZS]ijYIM_S9]V]m#'}6>cr1rz_2,jN#ko_VH&˨Pzm{v!m_x/fF?]HW{n=`0B׸,@$Oy#=?g"+j rV}b& }o?ZfTB0a]mLMj:A^ OSe2>-ATWZ6$0\tBU|6f#J~dd +ok:Z\.(Kc,دk4<[oiOwU ][31פ7[ͻ3#C}n@FF^<'NaO r)+]o]AЭ/uw ˔%`F[㭆pu71ѕb"""""""""""""""""""&uyU?}jʯ8*yN@cQ ﹮Tv⠁ hۗ15U#%U`B}{v}w1 5c hLߑb\_gv}#]o=L~Vd:=c| >nwkpNjW|? ̛k*,}N^ͪTm v-kp "H=f5{y7؂u=2ʲwS˅LFq,r 1Gag7 k޿$ Ҷd3cՓTa6yhk~=ޏOL$iK*|Gg_.Ɋ=v +ullo=nE +w=玛бU7S˖El|v31^|fzFcϓKt1Fs-rQ]B yv$Yj+M~.~Zw9 s~tafkeb9v k/>wXJ;vҁt6Od}}[,knDr;=ɚ>u r2zPUs^,;ogT_X +#Z>S ;e+qnJ}Gm}|MY}9M+QPBT{s~}jִW C$H=Xe!@g3t0q&,JM鲊d}HVneMXhAnlW4M)AR]EU,reY[ 4|v+З3m[KN܅@GD|{}EETd\i| j=<\an64wiL3UmBȮ +!`O5|06CyY4g?9:Yصj֡P!@(sTZvR%tv71F:<(dEP}cRݿ񞋞1ѕ\%y{ۿyχ6P[kfkӊū,{Y&-_i.=ؽjׂl@̡р'z ːft}3Բbd9{y1VǷn'H'^3^XdۚtXDw2(ok?Xѕ8p]^˾>O}zᄤdǨ]Z M}2|MF=yUVdu*|Fx=uQ}mT!oûGܹ_F5gٜ+Q9pQcE]>n-meGGDhu( P-+[;akZ߷회^`QVK2+PQ@nA ַԥzd=5\"^Oc߸ԮGuFZEBtrHj̙y-{ZU'Zn}k862WO{ φq+d:^Dֻ7s"m狘5u|8BAa w12L=t9Θ}kަE q!iZjc{lJ'X*KXrzvWbǶe6]ےųAUUH)|Z>C=Ysm@kە ~3J U>/Ws198ğntVV+}tt4;Z헺H-s\vLDO +l\`5v|D}52zHTOFxd۹-ٯk1z &d~{I-t.KjQ4IgBnxɱ{  +#A@9J:/U7Pj"T{6ښK~SvYUE͢%}MUb +I޽C6\`|Jir!xm{#C__3**̻5m~vԵlb|{][sGĐuxW3~SZ†[?<|;F/Nc5~ h./cz7T-{k)/Y }t=&cQW~Z3VB;^ս7 q4F˟rqAY/;G}0*ޛ~owsV3w"߇R߳?oꔳjXx#D +ֽeV!A +7UOs-hLL\db4[R^ADk8vcsI^s3"" ҕb"""""""""""""""""""&6n}X +fgUUPYNJ"%z%JGF1 llΠd _Q}S_7 oȈ2*Vfv`A z^Ij*C=2bS`vױzKd^d"ef>:%s?Nz6Z[0f?ڃGf{t|~ Ʒp[Jnfl3,3Rl{V#`/Ĭ`vGX%YA]uo >`dDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDӕb"""""""""""""""""""&ΙkX=_NzV~[Ɯ! A֦u9Ub۔5Ÿ8`Rul[0_$S2XDFj͋<ˣ~|ީpxcRĀ\ϻcY]cjk6vIG6d_T'2:q!kȘuΧgQjִ7pQkb9-C#&ΘNr6'Nvּ͏LV_weA[I{˝-:~VEjPPޥF!Ʈ9@{ Nvٓ,[MY2<+oR/كB +*{ lw$5裭Xg7.$֚oo^NҳW0*ǿmrrԧt/YǙ^Ҏgç$՛1F}u3lUejϧFq2ۅbVq뭭vOP͕@]'KM{; 7A77DSN7~ru]0)ZsPjv!!mkc?fW׋2|xz]ɲp sXzג?(o#uo+Nm14Q{0mo2Fu;FE\>+VR m ;S=HmNberB'Z 2OO>ƛ6,RP*a/&6wę;Vy*zm`lXx2+ *zJb 'H C6U}Xqge/cCo-zڴ,@wC0:utZ۪a*3@f""""""""""""""""""""""""""""""" ԕb"""""""""""""""""""&~%5j1ŗo:=缮yPjYg#ƻD_2g`z>%;^srq,KvT5i{tnGޱU5l Mv7+ʱA֎Lriˢl\Vs`Պ8roZ%W7Q Tq*K`$Co K1lRg[]ͭ;#񞿨dzfUX*%zgֻs# ߋrЮBԼ@`+/{;b]1-Ƥ6!6)e +xl=;:Q߆28aK0#:֌0ts^Pjg:^OT /ȁێߐ >-y ~NeEڍ'Ocw cT [qmuL5]J5k#ˣ|E^Vh"?P7[PykdGl_I7(Dn.On'}_]vҢ'mJ[ձhMPC* f^ZC:QmP32έK2cR?M'/f?o|glzGsj,Pø N}80$(⠝|KOW`+a~ο kR[^K[w^# ;>GNɳ&2oTRV%;,O|;WQ9solVl;R8vF:FE}C38n!T~u7mԱF9:>;8[6 Օ5dO8}k=t4}W6'װg&^caq#s՝kM-h ݎ7Rh zr)d_MOӘEQH;t@l>h:VeW(*dZYXXhR|^\JfDMGYnjo`:6?9̲ھ!V6bِhs[.Oy^zDʳгʭO4u޶Glj vkZXX]5:_6O"6;~R,++Y0T!c?3;\l^*!P }vO3PRl_P`2<| :FZ6e9۔-j*UIˠ %Nffut,UD ;kM+&7esס,Se`s@~eߍsuק(ԕ }ÀT}F7Ǩ֠d,vwY5]m'A³%@vAcGiX2r4ՕӦPA֌L\“#7b[a1G },'c@Li.Iul7lT^ + /qq-[+llhG\ v.bSp[L;Ѓ'g-^E:,<> 74}cY:p4rvR§t6t{}ΕU<u\T6?WB4aF:~Cd΋vU« nzTRN˳m~=NNSu |z-EF*/7|M0[kHmT޷6Y +J\:썍|cz-*7:?~LhUXw<||U@l~hfzv};$|I,6%\RkmΗE+խ +)q ״y5Zֺaɘ(Χ7_I93Ū,Z*/90j!u90_U}xE @,]aR ˹y2ԙk,AJnCHC_P b4^mv _H[ c7JW̒嶮O/T5;ڗ(wiyUYNULҵs]xnUAme>m֨cO9N7S3-G䫋rsF l{ͧKʰKNh1ssAJ'/Q;#Au_^LԒ~V!+RT~6)y}y+ΧWS ?KYE/:%` 0Q#=]k~J?XG=aS|G/%X~͍ɢoޞתWWTu bջ-̄w>;YcfXS\+P}n 塽M]Z{>ڎ +HF #@;K_\ݎuMU M|[_Emj:wO#berR5Jܕ`NR8`S?% +I-@YRn,Hcoֺt:*1`HTO61Ыh0Xn~+ N7TA\14h;eU5{{[}ѿ}(`p6^?" ǩQSN\>:*+q}tΗ}/}Mmi,/tP׉R5Z?JvSn`}3%7[]RVZ}Bsmp޻jø+ѕb"""""""""""""""""""'iK00TozP~aPH6܎{?h ߄ʖѦ)]Ӿ +~tJ]VGDV׎J3Ҷ)V@#%kRP}RaP Z.<1U,?n/Ld\ޯӵNe(G jˈ]=TvC"h^`)KC Miu_Hx=w~-Y Q\Ch{b[1,#01 F9_B +#Dhhbyħ JSZVHP'| |BƚlQ . +7 z7Ū[* ȞTI%g[&p'7טljewl #g~S5<[.ߔZU +)UhkƆK=JgLŹǢu5a$lj_ +X0?2P#EHHhN8Eu^*C4; fwYg3]:12:m:5qV=. ?`wx8e#`~Y\:QB-h jz5\^]o,שE,/4 /*Ms膽(od˿[XfPGH+kCZjyuZJ.%*Z? +}<æա`* K``cM> 6=zٹRwC=XZ:߶=+Ѳ˅kYlIIk1j* |Aũ~QܑOeV=5U 8kĭT*(Q^CWaX ,zT^]0ԟRZ5JA?ct7]v[ ={yNnf(-elgiҕb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӕb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ԕb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Օb&[8Nt4>(S4G⾥ѨfWN_|Y1%x|1oWT8ɕq|{s>8T[d0׷?EIf[|:On agU{~~f:oV[zvmG4Vb{b&"'/U}WX@QfrYp5{LԻ SM1_"{/꯬Xri-×ѫm3:~6bUZ7ُ[gu< +ϠQsW:LIy/7 n> dt5F^^\ɷAoνh/#ۙՃH,.vefO]Fޯ1r=7 ;# + AH$lo3gyk'r jT7wIvuQ0/џF Z4||=g1МCsV ^%4WZʬT6(םo_r18X+7/Һ!חcD0zVҶإ]UaW~[͕+ 6>č>3u lx +V'LO󳪘,pּ'5zU} *U^km^H@U@v{̮d5 eE4Zp=g1m/.<3q]6 4W8,*fc`u ++ɸsu}BsNr_I>e(tkU28q$>>7uFH}ZQm:~^jS#TXbDDϲqz=[S3HgYO; +nJ[:~Bg32$LkS[[k>*~ҙ[t,kkZuVBJt]:t(g;ѺYٔb +Sb4Am G֕b&~%8asVOx 4:9!{/T6F:Ug|.Sy.p n;'/#|z-hųZKkp޿ϪF+\'z>*ưHQ9HݝqDoڮ?,^b%Jqo[KϘ_1˿z/K};SfPaDgWM4m:^[%-vjMNO\ɾ̦w%7؎;7_ul·f *߰FGZ7/j;SEuC|9=jXyG#,u +=; #~бr>UEvY⥍~My@6~GzSzp +pǗ#o@j^}K['ұ+*:%rj^GnG@{@bߺWTxd rJj=4SysRH{#[mcUaRMܘXXHӄL=}"S(Yt +ԴtAZN46n*` zW/Y`UJNΉ'ZwTd~qj9TbyoY_+>3ٯWp4Aƴk> WJ+亵Ȉ@AUDA= RVC5VQ`ހ;Ln:MzgPk)zRJV`Jns_;36&[U]x-],'W~&⎡R \\g8[mO/c WW]z)]EÉ~>H:5c_WF2"0ړA; fO,f(<~cbbHߴZ+mj7TA$~e@IȪT>Y7 +S6RXlk𗿑M]3wJ T`9gY8? +)ŧ{E m55ЩOROiU#fem +~&_]?t7ɧYe!r%^Uw˴ן⮄٘{oȨW*6˧h~=K3d{XC/}Nq2 )'@t&'N`rzV H +,y7Ssѩd-^0Tw T?a&OP99F~ւBeWY]fk-Vr'f|5r:gn__"長w&׾!#KrT$o]/Qa#GMkm]ϩ;C'+R.Rv(BNMٴ`!S9FN/fKrlnS9qM҃ۑ _1Uj+R{pD׭O ſLx Ƿ`o*=T-geuP}7:$wUwZ#l#e@޹=7ĖuαNm D.PtOiroITt˲"a꣯b >*Σ7#FKW]K½ZnEmN y˹nSƇ^I{"""""""""""""""""וb&_ob3AQ,|?$q+c\y=2rϑ +J+{|'r:Kg\Zen~λl7:TC of(Q鍉YjJ6˽Y|1ԩ zZMq@(g?pfQ+FfH&ydfgY8c⿈3(RUU,Z>H;B~d[HZb0UH>஽:NS=w*Yڛ4c!>Ol3k"ڵ|~Oiu'G|tEjf$!F4?-0/roCXAF0}xKbTa;]S2nMUg%N~s==~#KZ%Y2qQM i^z=dmu@{_g:Z=Zkc(e U< t}Ꭳ^' hJ_Fa;>}U&jtHzl'/[>O.c%6E[DܨRET/Գjx/~t^j7(ġ G:Ӱkz&;iUv'ϰE^s֋0jJu_fbKĽx7{_c[y]CtX +dV9zVʪkcq =WmBGbyWfel-:67JauOS +"etoM_Bh(S~m't}]oL.k`q֦gLsj{o,ʥGitwS̽ʫ]jPk6Kz$ uz^ +WoHsppţ -[|QyP<[/(dҫŮ+KEn Lߊ3/+-gQo>K`kl].μq^L.]dRаWUJFA76/]G"M釩ߨA` +ߌnWĘXxFu׺gd/_MY_xUz+[K @t6Ope@6qR;cN:t v@VuN;ލWYK_ѐz7T^{l~3V_~ÄR!*ZDAaowEȧ`uѭr"(-].aO^ρk˲ +/+U]ŚP⎇Ϟ08VɆ}73KzV>7)E=O^߂'M#yk!]j.R߬mZ=V*jJW[{ƈ=kuۿa$7<6tUeq!uX@r cc5U7c zvԮ'i_}XbWpl{llS}YVPjKb=]yԐ% buJ2+Uȿӽeh]{4Gop)Kl]j`6۰}aN?QaPkttG\ZG'gd{7Ǚ#tUW8¿Լ60U%{N:V u# 2}_ֻ Jд+7[+ۺ紧Use⋰0/G t8`dd:v.R֕<+q4˷u6VUEXM=`۱L:[-^6FR|lu:ȈЕb"""%ߘ^%b"%%b"""""""""%ԬDDDDDDDDDDDM?] Ye>Wjvuߑ)FOXGfQC"vSQ ~>zޟ2Y=|BP" +;Nr ΂"""""""""""""""""""""""""""""""""""""ѕb"""""""""""""""""""&oX鬫}uP2C~EuR,2,w/Uj^ AA:}MvCh1ҍ.Sjދb +FDDLlޥӸ}OQ¯.e־uC0/QkUmJ&"""""%ig6Z:>#2L"xA_Aѣ/ݷ_}XX޲c7?Oh8 od nlzv}=Sibh#c=gq='=3{z}“^5A.Nx(u޻޻ors6ŒV>%³&fwy(uj{# u .=O2Ab߃ݾy]uз} +\5[loHuuZ.|;:`˹tl╩f?@'%wSn]6 nÒhȦ]ѿ,(6)]vk+jCcR,Lvtu站lN:F缞x[X;'CcFf.gecZzsR$hlLΡ֟y&MeB+p;w ([kQR՝6]vG2-ۑu#!9cyQC]~XSAl6znj]$w +'NkUXcgJ]- );ޏ:~͐ONa~=[$9j(kF?"0]tykѶltr3wvm6IWV}_v; w~u䬭G N2OM=qq5·’wNlCQHk(Uրw;S7͘wNeK_je~k[jbiư pCt;Tmer52hvTezVb ׃Ϻmjb1i5E(+5eQ֭LH)k*g4pL 67Ӡo[u >B\зȧP/Oi "TJiJamEN3SaF芆fL{o/u[S%13+Z(`*0:qlޱm_N%+cP,gI*J8'Cru쵦;zX+Q42m0auucv3YHe ޿dӭ[s+Bǿi_R쌜tWNYB2 +5?+`%U(V7$͵Wa/.犡0s:/k@ G׫ULP.|-VI(fl{ck^*CK|IV x= 5<VP.-x#z1vfM=K|SY,O1-鯩JlJr-F̔ZQy0Ύ%Q=f"Nl5wf?2W[)G^^:^O Q͠VS-Yt};%q&Y9Y +j-Wr:kܹlq^eqgEy8?*gv;v'iQP8 PaVT)>OirSM赶RZQx_lc1@/SƱh+{RwKv%U ޓ# }]w\]r.ľU-oQ`0biӕb"""""""""""""""""""%Gq9  x]Wwo&?> ?oG?}oKue?Y9GK^޵X$a|gCh*J@i+zNaL{x9(F$h}?W/8?d >BTYZ:﹝#9[.uIDy_;_0eX+_h;WG珇ON˲6= uwg3t +zvfkB_y+*A{h#S4}WJ;('`v:~#o:}հVuIX:4f65w*qT]Y/}fgQzMȯ]KwH @ؐI|xҫͲ.2ͮ)ȣjHSgV k|ljNWE6gXzbP'[jAܫ|x2^+&CZ3iﲖ|vܱl92q-˰YB8MX!XTs?_sY^w+w㒁b*mxÍdu>N}~{B-XAMWMd:>eagfTr0Ѱ\ }Ļ+u|RL{[YiOd̹,G Չv΢y(RCo͢{tj$L1po֯Um5o[/4IuBΝȂjݟ+wpˈ +{}{ )_J"Ы5?tAWb]Yk}@K]O"=iԺ2>cuWc-V/LY@A 3UYxBu +uOa$^)9jƱ.G@ݿ0잧^V|wao]͹j=#7izj}JAؑ<Hx]UtEDb4{9^u? - +w[|읮="r}#]W12(BYE R5!1K)`aVƵ@/}IJ3p>kS͌|e_du q*#j4FGDݯ^/T|㱲flI:pȣf-⬚񫭸 X!.&w=rɪ*v}N-g! kʫ.{OxI'3KoJw=6=yKRZde`;b 5IG#b.( +6kZߔ0\adP=26?uUbeM6͋/%'ʷc3y16cduv}y=.Ƕ貦99[lg^=Ǵ'3׺~>nS .UDJ`.у >;+:PL,P/ʛұV!]-k.jqڵuC(ڝiFr~ˡ[e=:kzhX)bQF ,KN+!3(M]:U#'L6EU5HO h{`Gö;:fE@\FƵW`5هV5KUN5*X=O15Bܻ] +nY$1}z2z"ĵ;.iY]y==2lˣۑ+l8skstxzx]@ #Df6Ni^%F2z-Y-Gjn_~1q- k]3T/au\gɡĝ UXesx/g>[ֻ[bt0qDdby9-K-MUJ王#=|ݎwHV_A긡R v{̈́DDԕb"""""""""""""""""""""% Xa[?t ޵ec72E,ܝ\սޙC """""""""j`Yel~NBn.=GjMXv:ˈqJ{Xe興Օb"""""""""""""""""""'?}~-8v;sM}BcWbiF4Ac;~Mnؙ4[ܯK׿`U2}oُTM,B |4_VΔMlW>cNĞSK~W '_?p6AġA+J^\v7}v-jAPAz']k&~6@[rr^u=fgߙn}w0oC0ք(SG~o3q10yW_;1zv՟mS]Jv586JpD%ft{1Vf}c=ƀ3f'QlZܜB@zSu4;|>VxKVBtttA7 n/z-VOsŖ*Y(I 3 ;MH>HkU5ȁ=P۰Qlܬr㱽o[ﯮY oü'՜ZSn$0'[ԫ21 ;w2_ _#zvMs7h\]ozܪ܎ &&oQ 譾 +lK?#M0ˢy[!&,V$=ʌH·<[rP`< L%bR#{bRyV01=sQreedc's@=Ƿ&˒s`gxK`uDL:W݈wUu<9m. è]_ZlFq\ޯ}`cDD֕b"""""""""""""""""""% ~n#жS"k^݃eq:i3:@ȻnW߹#?`E. vc;~&d6ˑX+evC?. aLwWb5MօoU_>k{Hzp QZӠ˭_LͩlUɷG>wzW5>[`$7fVU,6$uCRM7,~B}OPyKN||띇(2>!laSS]G.{ϮmNBY8ߌ0z5`y0Nޱv.5gznŘt^* +|bҷM<{VszK+]*Xʎ$3zc;UY~(Ǻ˅U{+`>Ā}eN]_ },Fǻ|od/ױ_znf_Nĵ,MlOfv;l[] g:3/zu RQ/b; :[. +* @ +*]ktL\ꛯNd>BħY-EubZh"|>mL{HM|<+]i~AKy`tPf&NBZ1w_sm](bOnzB^jm%arXZ΂,Lj]7I6g[bW%zU*;;7EUx(JMOƙa৤̂̚*:50>Mn{t2VSpZsچ#m7;s׶F`;xyg_3zًUVWe=:B#$hn?g M.Ex2.Kۼ|1eO]-A[S&PGb53:IvB84ٱ*g'WOO]~ZP8vkzž޳԰^#Zdz$|pH==EN=)k{Xt=~J.W%[dWn, 6]G:O藧:{?}kǷjs}IƼL[K0ގ,Y ѕErWd!|n8i0&5px[Lp-lO}.jzW0. ZbI0)ejVH}U|'&'ebdP}5-C]'dCRtv-v}Bλ7 Z1zX*HĴ?fRP@3U/Z/caduZWa+yU[bu΂""וb"""""""""""""""""""&+bwvׅ_?0g^:J+1fgvsݜ5װ,?1ivgȷV 1>b▾#0q ˑb+P]_Mf3dSkZBж؁-pPOͽ2W\bI/::e X//jzUX% J*Y@6tL3,=^GOLxw=7Q1r:n>Ud؀G?My-1:}2F:@X>ŏ&0zu5(@{vs?1ԻruK+slBlUBau.ոX衔6RVS*#z ]c~.pvfzy{'^et)(*};;'ON(VJa5. +T\R!rϾ~g9_6blJ+Ҁ V d}iq7/7R|C9$ Ўzce +;rl&#k]‡5Zs49q#z3qjíj"*NVjǬ"fɉf?5WrXv{sϾNszU,o*H?#t-֐_n ĎGCgə\SJ%2;ڬ?a8n,7-A Ͼ]^f|:&Fت&Te̪Wt`oGĮgI9jW LV":{ֵTUFjjPC+ D-lfD*{AoλKM^-齜ڡcI~@u{"\WmṶHNҵ\j472,lszp5_l +!rjȯ$wJ=ߒrb1K@T@:[lvB9^lWP6N*c'eҘj7Gc{>1T5[,{h{~}26]izxݻw3iPh4?Q0GF(AG뼶 M6'0̮ě W.:5ѱce +`{iЕb"""""""""""""""""""%+k-`mҜZ,c${y2FexZ9~('DI{;vMHɮJ q#V5eTPa6Q-}v[L:eȈ⻒\'GD׃=DDDDDDDKvޔ]v 6O7eȈg/."(112Ωnã)ڑ^'SZ>%k,bFvO=:E5TN_'?)쮫Ө """""Q ,N$A>+({L z6Y XvE?FuR3fQ}yH,)ޙNב.D)e7.DD8?Ⱥo\S̾,PAlvO7WeEYP?i<їVP&W`?CS2ObT4ñR=""ѕb"""""""""""""""""""'3EԶ\oU>ߎwG߉Ip2N'rW,*p|=^r0:Q.8% ;xuYvF=4๯[yXۨ Z>r!R eЀ̹'Lg\ʮ8ƠYطRVc]ƣ᜜u&pŭ]~]ԳzI|2UuW&aBDZ,&_雰Ҵ*#-u]ccs͟Zz:R%)j8ZʱZٙ}#$2# &q^`S6x(@O``>7[&Bc|Cѝ^wVs޵o۱66L,cVZ+qp1_;mu1 [7*q݇-2.GQdȪǮ u++3SK8ݼw3+Wjdƶ?Z]K7|qhC9u~!jҌUϚ &rrS +,u!'_1:֏P"Z ֺMoV$aig-ERђ(n^8mܹWWJ-RTտ)b6=,ꢶ\'U7MC c[z-;)׷ Ϧ\ނ1*/tTn|K!t +v'D [iKVhX|nަj~#ꪹkUﮣŔ0.t;72q^MuV]#} =Z?IyzՐ*YelG̜l{wlj#4[ux̬Sz횶*t:m>,22,DRJ8]ۋK>N#hZj:#]_ +ֶܦ6#-|lcqSOͥzx/3&wq͘3;qt|NK_q顮945`I=i㞱'*#~abVx2}CnB =AN׈4}/j/L9FP8Iy➡Nfb>D#0N:?w,0_G$VUG&foUdxՋ.CɊV ǹXIE + Wi+67huzruAAzsH]|Fljюi0ϻtP̵6u-n#Zhm\8s6g+^npuk9! >vt}XˍföZ&~c;QEkMʘ]^P4V6;o/SխǾ|ږ͕e *6>c-ߓ6Ǻ~.}e'[vGm zεvEՃH[K9y˂ɀX¾˸T\q*~H=KׯLϰ15&*t]'n5E-ByJ7m{~"lerW3|u<g\{aIaLlhί:UOTY,!iO0v؁Lsa (gU b^n"͵:;b6A&a|Jo~8ʚ>ʋ`>7)jh75Ce:`#_O;,h{WS,MltNј]'?>jj֗RȾ B;-̼\WdqR>UTP`F>LdPc^dPTΩZH#s~$\qeU`iK&սϴլ.,Z-BGr56X:Ͽ*j*UFQ(X}M_eų6kg*>m:ebXZn.8T=l7|Mn8I]wZ|~,xN.#_íeQ&"" ҕb"""""""""""""""""""'9Nv9\-oNVO&bU~Ӑ5z!8`lƭ^E][1qzN&6}-X~H m[o`Z'pz.f-Tu/8CA=gM]gAkýn#YNaB#{O}2c`[kTfԬr#]s­j*hż:SGGY?ኡaˢvNj\-H_@T$kc[잡WtXYS%l@`H'z;C:՝BsFF-ug޶$ >epg#[Gk7;8vpC3PC입*5_ 5vMKb D_wQtPjOCk:o'BW٭[Ab22*xޡH'}f 6[zzn[&VfBl;:$mnT}o+uZӅ>rk {owCil"޺Q,<A1t~+ƺ-tFdP|y^b@mUlSA>Dw=Nolm_dA4^ Ѫzŭg; +4y6c(NMVOSbWaըcb?V""%D|Kz>0ʤVQ,VuSDw60@I31;zN`>?lo] +BWv2lrShLK85IkĐ~XLgm%?I:ETHFSMvV:*A#{ D1+0' &*s,NqwJ|G.Ro&6 +59oxD^6_iV~F\:#sܦr({DDJLGPt`qp@ ;uaeǮv @WKh y'CӞ'#}滠]Sޏyh[͜D;yOΠI&ýO#JF] +tA$ǿyXՕb"""""""""""""""""""&t:~N!~d|Nk:~.5~-MB#=+gQx9^ JzFsYVERh+T4_F%;kBt + ;{p]:p~uw,4"^ ;\cKcװJee*%] ͯYm*jb߮Ej9vTꛛٳœ^Wպv3}zU%i`E,T;X]O./m7cRmTRX?#7G-v=3X&#{y?|_љɢo<܏Xx䧈;MV;]'G7Y|Wɬ[u63ШmU +͕>"YbQ]9ZW@˷9671mb$pb|75B=T6ErkWX7ۚ̎:*X.z﫪.0vxPtASx4*fcҭc줏'GVl;ʨKlr< Um[b #^"b7im-kp@MA݆}~26izpZw%4O~Ž"8syZQ5Nk$@34U/=S 4f/T`bٹYKֻ!Y`q(jz~b\ewwx2imWfE-eܫWAI'W8vڎr::ߴ#loW԰72UrVml> \҃=scF2V鮻 ~\ m=?:=Oa&gcY++Dδ dC~Q(ܴZkVZ rg'a!9JZz}|#s cqTjV6Y4G`Deu1U)}6ӈƼ).@O&R62(9~}zm:.zԺTQ+lVEKx&#:ּ~5 +%9z9=,+r#f +r&Ƶi*>Qk3ƴ1.>p(w 6u:evP^oCXk?_1~,t^vE_|pT:; GosOOE +[ngff{6J*;Ln|jm@߉կ'Q[s\lDȧ,WpPܨ+vq1ſŪkvש[])u,3sɩvS56m6U]yAؚwUcR+#!lwGL~޻l哐VN}ߺѢNGFA~'Wzda%ִfYfgC8y,pͨr!VuȀ@n>踴aRNVǰoĀul o.ζ ӓn= +kR6ğ'۰PݕGH˵U.ו~Hߝn^Si|AzZeV'z>GJedU[ch6$Dz +WȯV #둽y,~~/SZԬ +F!dǏ)ET߉\|*2}.Sr_lTͫ%wZX$mK=W(ٕԫȾԲA$ױǏg~gDky{9z^.eR]6!b#`;}&s kij[jXw?0't3C{6nSĻ2g'[x}9=?.9yoQU25DP]iw ,De): <7-+>)Js< @SaL +)Y70mwO]L^uܶXۧ≾. `m=;n˦,|?KY9l]v8o^sR|LEv3N~Xm#;b|$'ZIn,'gG?1/P-pǨeX;]xLNwU{-K!$9+ps<̥V%ĕgqM my^7(/чSG#$#6w;l{oL܎nEeVַ`Fo/}mf=N?̛\jze :?sbQ;\k\d O\/`d+UR ~z9qw8# +Wf uq6j*ŀN>|Sq֕b"""""""""""""""""""%  H# s{r`rVeX=Ƿe+-~%֐lUՈ ż6ly jֵ$<,ܒOFU $~ G AEw +`NUɳNR^}T}BܐH)oc4d[cb Xtr>Q&M=z뭭Q>CgWE^X*UWl{:30p Kfcb|~Fv]F1^U؅Xlc֮ʵY\(415OgN-}1Pu%4%$;>ldȰcD+9v{~=ѐdcVPe]ڰ cĹ:]]-!,X^EݏnDa3ų&Πj˺S?!]21lCboD{kq)­tp\+V,y uucҶ`T {&5} mvPeUU:"L|KGQƺyc&Z?Q}*+,J=Oλk[AD/k5% +Ba'dPL_df\kWFM 8W {~3yZP ؟Ƿn&MoU>#Dt:x]\G[7c6O >pn+([V\kd.Ykķ>W%)^'7tcw{v,{5hv'?³YrVu,}`ufmft-Mhvjr^,= bJq*J[^ bGn2 l +'B]}>iɳmr" +ʖ?y5%K{߿LJ֪ƕT;3Ԗ=m]d#a v ;ydtD|͔D2݀QOxOPZɲS +(#C8|W}2k5}D"_ +(=Duu>+Z?.ܲfbmV1F=зq=f=Y՛M\(@!@I3;JQWAvI?RI&W7Kzԫ)A|υ\k([VBpk`Yy^}Ny=kS&V֪tAS߸{OX +Rq jp6PP;%>&{D|qZN2gnBStXbZX +@#E~`u;\[81˵!Uq) +4;Kxd[s* +F 0ZMBo{ؕ/aܵۧ[60څk hi"|۰!P2: +h<^%w.ʙקq K4A޴ۼ)]׸)*o@'^LMfgF7dMޘ(pOm|2fЙ.*K?ZQW*宖B|Ϧ@2o''71l匬tO%sM + ?kW٩Ng +K$mOyW1,jk(WZUt|xzE31N!>Gr]FODY8/}qbG~=+γ8_g;*Z8%{qbO1Ow^.8U`((~O}V2:%c)Z gM=*YɒXv.)#DwGb-oJ2^U(w}o+Ŀoc1%9a&}{jgt%c#3-H- 3Q~:+}:b m|r'S_ t.Mʱ>mr~S|9Rcbm)I_Qt84GL|?EbǷa;3&""וb""""""""""""""""""""""""[K`tttA߉GRɺ+bWg[@9k= JrԬL\~FURy~e*FleKVdWK"3HQt6Je܁ }vvVSeȈ,[7ă%7+͖-@I5]hdv \ޥb"R߉YMh|yq}o[rJ33Ǯ;]ֱ 2DD1 g(13DDDDDDDDDDDЕb"""""""""""""""""""&Y8B?W:G׶:2O]Z袶<Ÿ:Y4]zJh&\s=a8]ß`Pw@e Gz+uAZ*NX=tFrIGL50WL<{{=әOUܖ-h{9'o|NCoG_Iu\+:wC3$[sg- _tZ_-zުu9A-c|cjҘa(rI#fM'R]6M_nfKVjqP,t{{ ꃦN>ִmӋ ߼At.gUBPRobLqo|l-[U;6ۉ2.2X-hُXr>7{k\վqm 6OzM[+ºg=MHAcK\lc6׾OS![Ś#-lX_}λJr/+TA ocMg%\QNUUY'ͅ\(biw]+ HאIϞo2ΤO;Z6ґxW^~y=Kbߕc!`r>ř܌fGX@,a X74@^oMyt몳KVMǷͱ3r>%,jkb\Z#r<}eεV-J#c'1]@3p޹Jj +)/*ߘF c߹4_.|Jgj_n^~m 'Ǔ.cjjU H$0caN>EW]W1v[SN'#}w;#u9uȼ*v *8jZ~^>op _uٺu}JApV50c\}@4߰3nՏ)k*[wTՆ7#e|1z/hJmau"rڊٸ{EjYy(:aņ3u:B #>:;lh9hJyxNFHI 7<3tbY +cIߴ5sc5"teBtF6e׫qwjvt7ǹї/Q=Gu N{]f_zcVtf<|)N yP ]:3[:o!֧sN` I; x O.Fj٭TubX:vqhA3|G-divTzG}Vb^s*nBQ>F{ϭl}7))|llN7quC|)TrgU`QDZ9Ι}S3"6:.iv`~E}?Ve6Eoh6H~~5%55}aiUeuvmߥ_SC։ 뾛G-eSdi,uuhr ar~rjjZ-D>K{J'\oUcU@;hcU^-Qw.*+9 +lzF]vu7UtMaŀh$ntӑ:OVǭy;ePo[d*~'{ ۱Q.?:kg޿Ud]_u㗾4l MU^–cM'98?QύV{,Vzkn.o!HYH 4 >|Ox' 7t(!A?2uvV)iQW%Ui6qnvrֹ~u*әeȩ'zm_& + +>Ip{BD9W)@F{'sgX}Vo)ZKwT5)F{{=|FHtPE0뚭`Q܎Ĺ:]GGڪ![Ց鞋8leUTJy/[98lj}[@ *`'cg^?l96rSJ"| ksou> +肘#R2Vb&W\q_%߉*)f$t'![mH*XvU~󥧨M,W?NC7t$#:cWqtO N ="6>,HeI=+3H~;[eft}錆*rO8?M!W:;.9}K%ƾ4]Y`CCimL_ J,FAkAvJnŪtSUYO?!O33&Λz=azJA"c;/-~#gZCpn}/:]=.d0ڗX2<<Թ]Fn^'#0+jScҸOSLвjNM_KO;jkl**DnXz/osk'&#Xևz-PAK=d_J{+˯&Y~ ;3RcCD|޿Ր͝hVFBkv[iJ m1˹UƶA`X%ɵHa+++4vlE6R9!ގiL\.~)ƻ;g6+^D[:B~骈%V,CfTWѺfVI N]x] ֥MlNv}ı1VNx=G%׵p>;>n{͖Wwg Ǹ{3uҕb"""""""""""""""""""""%%b%h YC5#'ܥYb8}+kZ +$φlK"6f{;vQ[97UzD +ʼnvvD76sy3U9W_{owtDJjV&{Η-cյA.^tOͰ1mMPr%#@FPbSR)DERHoo37}B u8 ξLXHnV"""SRMJDDDDDD67H鵌|LKKwǒbF+WqH'[,YևrO)ӕb"""""""""""""""""""""""""P^'Wp+(s32~M{ +!rv@\K"dd,.{yzXLEFa>2DDug5>Ϻйx;IY9 K MNdw"jzX"mӮ|3Ayys ɡµ(APx[S]umZ*\l@lgZLzګ +^ -,I lu?Tz eh'` {'S}A029[[S׾:B+ 4/1*H΍:9+jsnu'CI'DVebژ2DĻԕb"""""""""""""""""""&.x*jJm](U$ cxK0Lktj6Vʮ0 g]-?mL/> ԭ' ՏEEX60PMi䪶tTQDVt*}GZ ?M{MMz)@ȪS6l{}L˼ ޻o>~!q}=U~ |q:.5MGoB+g/濩Kסݝl)qd"e+Au̜,ޛZB]XTI`b v'Vq@_1~۪d(9oS[U(!ekz?NQ+t1$*r v|jfnGM84b䜁`~:'5*uC{=+LeC%8Hlj<Z_S6ZWjԣmّ[렧W??WaLw)KF}Oe}--eM9qH${ɞ /eF׳AvPN-׃4uܬ*k75֌ծZa{\9 +boJC2^=C+e&*gYֲ[1#2n*v<=L3zN+%kKxNߖNk#u>k%zIiful\ceIcwr=%b$θvB2B7u:3;/7- Z} `7YAC~ӳKMz_Ho{uue$ts9-`aym;_&YG'vOb wKخg(-Vqt$uJF?/gY`|JV~@{qPcts#nFCV*9Dۿ]9K]=){-R 5<2fIk\@i+k*{;v3p,5k# T6h6=j\t9.䕓C@$k[w/#їMʶ-YIk%MSMl6Ie;Rq\r* +N*}stXs>PGD=|ZktckӐ͝x'^?v˺WRl;.{irF)`V {MN7^x?mezʐR?-{~KjvbIPH>FǃMeSN\|[8 + +3Dq9t^estW 6v =ķGT6o,w\)T *1AHӒTŷd齙j0MV_W75& ءPq!H'+uӚq-ڛub*O::ޏkĵ:+sV#.w=ϝu_MFA'ԫ! +).uĕ:#:i|(G$  +=|Oi.@u\kz#f>gG" D@NIn]mqo)[% +bA;2N9Ug-_vQvA;gI]h?6 +6 w:7xmyw*[ +XݸsfaݛX):ӌ%]Ǒɼ l|z6\>M<}[AFАg`یm<*0F 6ݛztR@TB GLD ay)q\bŬz(Q]^*ۑhlrXc[[kevo@|÷n _CYX#0(4Ǻv9O"ާ5޿ʿQ_S.]C>M߮B@WZ .|;N[Z(ȱBJ}g40D@Օb"""""""""""""""""""&tdљS VG$a`؉89Lw(PEu0]ǹ'O诩R y=J?vI+ZjcֵخpjVR{z Ocٓ뵟у]O4?pc]ʶJ0 4H3OoùyTQE5ƶ:R#^tb@l1s0rOqoU>brH dz02q,~6=2;vay 3]}(PmF/e:=Z +f`_㭧[i^x +TwYfޕWKPUT_Y^#\<|_du*oKbŷve#.ۅWqWl} zΑ~>U8VzbBTkYHmh:S#:dL-NB] :Mj@r hlO}t1=YVXvjGpz|%z'N9+EZn疘; D˳d1\=!`o B5Ysφ#2xS=M +\u"ޛ.ZE4tP܁߹=mz[]f%-ԅh~&&WH[SOPq.$}LN*=2ޛ]؝ ${S=oZûuh:>{-l}\kҀV4}oɖ2'ci~Ol’;rw^_\d?VlFuA]:KdJy}ddt%qlDT2t aR̯歮 <(Ҩ&ZΚko4z~Mw;o ͼ+hKP.K8F%ל+nW]U}̧[qFGRWbp,,v8cgeeBWX 1'Ʀ.7ghn n=d 8[D?|nvKQqbT$;=v7da`6-WpW>~_&)BXgw?y'soiwz5׍bq5t<]y׭U +5(l;#Ҁ ;J^ArPfž?=&Mg\uukj?#a_Y|K9}2ʺ ބgJ/pegnA Mϴض+湹9ā2хNyv7sIӺPibUY]m6+kV=\%hv2^H\#u9m`,U]I6X' +ޜUv J~{{a3M>^pŕ-g4;ܫ|K /!)cñm.,Ʃ5IeOmLWYƻ&@[֩9`xAֈ>3u#6{#l|tu]ŠݲiuRȝCrgbڡF7SӮȪk**Q =y3鴵׷ $u,u-j8v^,Wz;Fv2b@Bk[\rֿNenx`6[?+M#LO._ʾvj5|2k˭m(*{ uOJ¡kkr3!m;}CNMW䗭, 5?O&J,wuJ aj K=g(z+nij gM&^]G/-h&fKr׍k[c)¼ |r?A~},z~-ʰ=pgh om31Ҩ$W=ޠkz^.o3{kAi!?5|u51z?5^Ymw{Y_1;ĶEUVmwؒF &=خI"+sqn%Xv7"fтyǿ,Eeu5%|G]TmVU>G/`v4|~$//5[ºNG'-H@|ha,Bc] o_o)tfۨؼHH^ZdFL>0v5]m[Yɮs;x; ՚T)eu(mbE&250UU%$j|MB#vGc ϰ"Y)VP@$6ub|l[RJą wcg@Qv&td[47=pįn>p>pz'zؽܖ6gϙ[һ@Q` aۙJjvrwEPwuy Ͳۅfg]={Sq*ߦ̅R $~ۛЕb"""""""""""""""""""'7MT7Mx*P ~@1N3+Z^1 !TR!js:~OS߈8iW (>a6}WlB,P:tn@#ʄ xy>֨į+Ѹא3 +wឬK!Um$ec•%vT:e>PhX{57g&ZŰ:ɯ;X.)ОH?GTn M`duðĹ}1OMS +)m*E(`sb%, P6t f*m}B[tlNj=^ni:ffbbetՐ6Yl.fo!)˿T5. >f5]JϜ:ZYG=E=C)crm3.>Xtͷג}EUlnJ mbNu+\Jj*EEmU@w$ (v5<\`:LsL`WŹG5R?;B֧U`欺=wPbuk dz!JgSZu ':}h[fϝBA 't'3y?ceb&%})?=V=M,< q20oG}l{K~X?Xӳffۊm7VJG.~e7:N]xPP9%X$c>]C>WJXȻ$⮣^WL@U~}֗ǂiҺ1{=WVFp_Мɕ{ +2cЮu^L&ٶt[j=B +G |K9Eur(4=,*Jʲ=λ /e5Vv>--)JٓRlNuQZ#Φ)qz2`jTzΣ\ndqfk59rz/L^}mŨu66ؐ@ ;ћ-Ą̇̅%|o‒ܹT>V緍降v"zzUR Y+=wR7į|_x$TqknqVQX"+[@zT`-u2Ewz<3:~uf meQ7`}eafj }gqGV>@&{~s]N.W5]cmgOMust5cZ=M@{] _r8pyj-X + x8Ŀ7^8%rʮ^?uLL,QEg,>n]JVYkɈU^'SGj6Q iǍW~&ʣhì]kOY]N`2~iZar\O}^geum:e}3}cηr(>v ^:7"q%}zP3GE˧duiw{eQenRoZ ieu[\q\,txG{EmP ؍hsSfc^Tāxo2""""""""""""""""" ѕb"""""""""""""""""""%47R0P4EH\( @lއJh PV< J]ojV%e˦I :2;~]VP\s^" g'Z _ L, +k2%K_` wH?()@yם VJ~,`A%b"""""""""""""""""ҕb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӕb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ԕb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Օb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֕b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" וb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +endstream endobj 227 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 74/Tabs/S/Type/Page>> endobj 228 0 obj <>stream +HW]o+>H"wI0X,4EߊHm>w=M Xr8s3_çñutr|ZJ=S.~>t/;uvwYSn]~t;멻_nF5%a1~G,2>w85dKeީȆn =hvG垛+.܅^ >̅+f=Δ'Zh)]\n5 kbGo=E]Tjv~~Md&f7#.<.?.gKANQމ sOYE^vg#o-qYvqq hqm6lL;9 ~4Z .)Zl,a \j"zh"RK.nD{ GeF=|"&r51P,[e9o㨥@삞[c%t)a6h¾8U96֚ u C\C;8{ HpĘ/9:ʟhq!xuEZD]ζzc" *IFR + '6%uA +6CL7^_ҘM~2SSwg)޴ȑ:ed.bT^4!98]w9||x}~x|ݭˏOcno 7d$Gg_~p3P4j&"ĥPen_p X ф'XS8K"0KeP45T2Fl)3#N/썍Y7*bhufta2rtLqH2χL +;8=ՇR* +P)Ra[-EvYpGf({o" 1edn\V0ϣIR|,9%nak6x[U,%KSR. ۈPmWU w|U%Dl[Q.{9e$IܻXf5q6+ 1pB,b;v0vOJAok{#$ +P-XjeYڬ[wyr4^S Ft;:o9TGhrie}J\+\?<;~.'y"f6q +[281\v턞8ΆW!{V N LjbS ewlS5FߪQ'h0ڃ1ۍڕez.  9VSNrlV4MyT +h(K q@Ĩ"HZجd|. +RHҜrM.u$cAW袰Mv7 Wˀܴ7s:UXKx0c=&qqBqj@h@WB+咋9/eQ|nz?B[><=>|~{ }G'iυT F78j1u_Çߺ_.0N* +endstream endobj 229 0 obj <>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  + + +c!1A"Q2aq#St35BRs4CTUuDbcr$%d +&'()*6789:EFGHIJVWXYZefghijvwxyz?0yl^=oP'Lɪz ;v=ľ%X/Srt>fTģ0PI&`(<ʪ·V*t,Gu=bxfSu:LlJsQ[WV:޷|P޽u](lʫuZ`m(:g\XFԆDv_/Eսu箢7<5\V2i`_6A0DD˧5Kbء<Ǩ$Oa0氲 Ypמu멚b"""""&>?!ΕZtXp%<. }Hb#-ç&D͡t 32"Y/WNo:ģ0Q0\]X0޻ 7 ŵ\ ]ll7lzK"ydW[kDRɑU{H=T:61_xu._іs>p m75Ahb=>]ĕlS+^Nx5~K/?܌.~[V: >c1`a 2ֶ7B%^]'c_>t%%]X+o3\:w: ݻhy\!r^%Jьl^.w#ȷ*V-ʥ[ʿ죉֕Wm*!WKܱ'50=zq€]3Wڋ)]a;`dVⅹY.S] ?=9LsJZjI +aX1R"(~σ+#@Vv`kCJ?Oe՝YCw"i6ao 7ױ{ILj|%qk_B'ͣ?yA6Xt{_\}ٕn_(vFbñSҌg* fh?l׈v]+䛾*!:jΕЃ|q2-5 Mo蘾]dQj9W݈Pj{3qȥj29~`UtcbAܺ[?HfʪHU..'G? {K}qū*|T\[YPl^R  {ٔru?v$qyt\Noa{Y*>k][y4tueq휑Wke72=}GǨGSBOs772|y(T@k^~dyWjl!r{hoC>'̴EVIP;G ub+NvGɓ +϶[b$W3m,)q0Y2Z!YPiA$b{4!)~zS~Iw\n WN/Lu$N#|[TtvI#ᩈFF]u|k^`l"]>[j~5ZVT]/~.Ϭ[߆UQѐ*Hnk38tD)v+a>*l{}O,Oh}VSnR\<r/-[)ɺZG@;Ϸ+5qJ&c828;yyjaь5ruGR|?9u"E*YwY;s ڧ5umw D6<^3mk)jloAQw̾sLZߡ7z|fG5pl1[5X4qV ky LkAY歁o?AA'Gd7=tc+ҡFtD:nR2R)T=#{j7UثC i~oDzeVoʞ1`4m{}GG[i ?D='~!@C%پh||wm^G:VUUYVvl{7?%]TۍeV({0@Gr^"" "CUeYڦOqT +[#zБF U{#"VO:Mv6Gs=;1*)r+Ac`NΆw㲹ljj+c`]*myYg_MVZ]TuI|q;VYMuڎ̊z *XuFyL,e,Or:G}wMgNr[:Xi]#8,H܋8OE=Y~gίu:vrlrY:<&U u혶ʰ$k!xܼKr"eb)*=Ȑq\USABU\[UG'}yqҊ3lZݬ!fU]dv(r;waeJ5ken=D+l{Ⱥ=PjV}T8]݊:Hw2 r*[t `{vU59%(Tb=Lo)}{ YeVQ=kȒ7{VemkcCGdrbM6xN˥}o030s9Fj.]z +Ttgi[bД5osخ +:OP#[2q9\՚LJգw<}nQ +|AӾ(﷙agU[ \jXV@zeۧJtHqfu[xibwG^gKSehdeWʒ >!fr_'L%!b=zf$(QxeeL Xά<0UucaKnw>g@ %""")+cTW{uw=b"""""""%5*梦uFre_2}y>fwI5ug/nW([A{ôy2oVn+Ӳ˦Yc؍Q.Lkzڣi.߻;$o};KyU/Ucw*0NndJDDDDDDDDDDDDDӥ$z$_W66kfu>L{zKX\CڄJ,`Foby|<6vu? $b""""""""""""""" ˕!b}˰[ՒXM}EK߷n/*V˅ACr?1T}b%;rdy/dy?wGwЄ}保e?d9?xOO?SO޿+H)+H)+H)CS?o-VWP+W+tx.}^-~_R@z>c.O˳*Wb:kv=q,7&q,J뾰(#}OXwS O՗GWEkl=BJn=ԝlzPAɐD:,|ckҵ>-uH1ֻ_\LUdy>_1_#%b>؏<L'#')X!0,|w>_0/>_0/>_0'$|`O>]0'.+ܯ CT|ak;ak2ᜎJj5`8=eDDFg_ȥfmIKXww0W@PȿmQ$-|K= +]JjsfZ?-Ư.;Y!:VER$x^vkƯ*V׳!&GGG_=_#ǯk|ٯjGʪf>UOB>UOB>UOC2+etO/c}?tُQTf>[GSKAA:ٞ(f.Ιtĵv(-ڿQ;LD8syd֤'{TŻІV ADvOL[ ˏG#뭟6~MjS`XL5؏C5~_/&f;{NkkS؅:b㽑%Kb + +>¦̲eC>V"zȨz7{ ̧>'%""crY{UG?$U0+TY؅E$)g@n]b7 +`6t;756(&2Zff.MezUϯ]ܰ<ҧ|6JUc] f-,uԟ, t~؏GIqT~؏GI_ŏb?Cg?)X%Cg?5b?Cg?5?Cg?5?Cg??Co?5?Co?5?Cg?5?Cg?5Y[2P) P@ =8k8FbI8ԒI$$(|4wL#sV^&c!Z:.Mv^k۹eZr:'几e}{?hX.+Ӳ~ /82d$!~%s\?&\_b LBF]ۗ$q,7'_=;jƠu:>4=feYY + #ZMW9,P⩥ݺN=63V5uSԥ~ dr:~GkvwjIh=g4}CM{-k9VNJR4N5YuEto5`?S|3 2h{KRtXi.{-oUf~1AںhvRupf +)XY?Y${7Z0I(fnΙ19.OɰV}Iy}8>rWF-fB6Sl\T;Py};6p_eׁޔv%q3hϬ[CSG3{+eR;K>~$rs^θ=ty^Kj|MX0yX n-45J邰|Ҫ~p}&LnA+_3]u'[~2i5w,WF:;uZyfe'32Uc/R?mtyOJLOӲm_eDDmy?yXpV ZzzQ 2gxNv6\kwv}I9~r?^7SߑJKS[YA&qV,זN=SeE+i-WOb""Z[FԂ> ?n'ON?6GN #z̈<I-G Pt)ryB/,~C bD0?z~ۑ;/h=oL>nЃ08l,RewR|ҬyJDDHG8OcQeu=(@'c2R[Dl6<ɷ.N7U{׿P㯄痍˧ڛ.3MyA0J7K%՗<;!^ăcSo0L֟F"""" )0w7~t͘D.>SV\lO,= S!J=Z#`k˾:&Id߸YY42n3U"55F6/; J[SRY6`30$l0IdsuYeqت!rm#Uޜ7'iYvOLw|$_!,gyCގ<#6E6IIr?^7fKJ0 =&r^>*y,SuuW8<*ͤmdtNJDHi)nVkeo/Uރ}bp܃[8D]KY^:nK=dw5[bYkȬt<IRnMSM9~N#tShOl%4<^6.^%U>=^-ZK |=yM$O+Y#7ܧTueii?ɒV: -uFDHf?܏Jwal%:2h˫LOO4r[}D)jw|K1, WSfJ? r|~o-mO MIjW}矶"JRlK:ՕMtuvU!z@wdlNldmY[3 H?+°RJ;^+.*#붇r&%gGO$w3Z0I)0w7~ty +x"D'' dS=ucT{+#߮>S`U%b'F=yUVV>"[7;Ehfjkv1?Q\7+[xL]iԟֺ7q W6?&a1?OMw=6hpnψT{c Fڒ;l~ ʌJ̓}11."PP>ROUce[jGd^5NןSeġI uP|&m9:7)7Ox\~>wIr$wzpZ1EؑZ@@|2`VcZ.%v@:ה㖆XmpPNgrxN;c;7QU#П21*(B"(UP4$O:D׽]elmz荒;my#VʎXbF~@$&7 ug _1i[24xuΘ6Xۓ;X~ݏٜeʘucZ}XV?_ùeLOMd> Yn~G=q8|e"h 7t{T,=J۾e>eb8M$lYu9]Bْo3!|[C0e?A:"SR+9N·:v4kU@]Rġo螑7 n7S9 +'^{(|ɏVE0U[,&DPd)\j]-D\|zeU?%b"$~w NmMW(^ve023_RS{j;5HVMd'g^=c@ver)~?Z%&ɗZbltSn`XyufǤ.*mt}o]̙w'Mc_w;V@QZVұ"x>C hIs895샕?X{ՋwOze}Gȣ48=m??[G9(bRV%%b%$W:J+nANbXtZGYҸЋ6ONə3ſC:?s +_æإ"E0'w96x]nwCru[gC{5v|νb0$ Ͷi|l׋^+4mvFKĤJJJ,o$s3Z0Iv6;ُIayl:X m;[vH#]+`Uԍj[+.Xt6(迎>_G迎>]G|/ub8mb89}3(ܖN$Σt_]jvُcֿݯev?ݫfk&.&Ke؆~Naی+k8V3!g_X{SÎFx[j,s~>bf;wW`=4TL:ˠ72Fv>c7ݫfSvk~7ݫfW7ݫfPvc2dGvٞVs}'̺TڀY%Ϟ[=ʞccq/Kd~_2fzїNF'VַAHk +V{) v7 }vmWgv{8uO#TbZܶ5~S"}lG"i;Ƭ;>;l@B}}EYKSv'DD@- 10ڗt$[?e)`b^؋cJ~ ~~7_؏#~HE1gaWSJGWQYoHcǭC{U^bǹm{j,^̎ng)SP;"WDg6>J-t:e)A/WB< +`G_=__܈=__܉rkBfBKO.7<]ucr&k&k5GjD.NFku<.FF8Ǿ@e*hIb tȭY>`|'(1WA09>BJg+b _6Gi%ZzYTYXVF [PA!mp就ZBD'`o[ +}5=ϲc+/h۱K*e| q6Z 'MV֙O&|$?GGGGJx//:u_ ?b? ?b?9g9jiJOZ޹χB<̔9Ϳ##cOCVG0F/ֿ9t~OaOd:>M9kSjCHږVHe &?i0@QPT#5'GhB<$B<BSZ75/n}9lȧB΀P;m} A[V+ +^McTZ>aC9hG_%|$B<B<!+'G'G~~!7di}uP)X O+fouQc=#Ig d.k,lK|e!V6Xw2 J5]aB +u9htnz"""@s|nF%exUVꇕ)޽=(<r=etlW+وqnʬzM龉(b% 9*g!eյ1Ǣ0vSam1;hI!5wSuJ,E:&l]m[bBCHXFq=(*~3LKq3r;ᭊHTH={穋 Wѐ0%Itw|$q̉H汇~R>]ճdRq? 1ߙ3wOeQlqE`#DdG{ƸT|{ 4נƿDL/iB+c׶}l;u =8.b?<ɨl0V?8z;"x/9*Ƚ1k{l:TFf?d)=XrӼquu#a]JUVozow-4r;@T{X,_|ehO~O%(H^<|f'aCWړ6((f';[ſBmIekNc%lYҠid|~=X -u/ԣB{ȤY +y)r{?"SJ֠{|1No%ڠٔGQ0| ~Օ@?o!{8LhS~ )v9r]ix㼗M:m}|Sc.=#{Չffe4g%RzcK9Rv!^mDl%ȪXzj~<7?W*^F"(}v,7$_x_{UIȟjߍ2n})rfOǯF*UR/@ 3b"" )1<2$R +V""""%V [ff mf;eTz'c%v#G3ǐY -0Srq(!4X{_K` F`ĺ&w%g)ƯU\GU4M9$y 6.#ëlY=z3zjgDDO;K-%]j2"""""Rk>q9xZB]X;dady鹓{Q^eU6OM^(n7:oF'$Wg!Tf + 'C^s]Z,ã=d#۟M"&7%o2DkDDDDDJHvqEIe{Or/?dڴ|>,nUh:?S]c^QڻXLW>IK-?G3_$}?/8x͓g${܏6((f/v-2$R +V"""""$sfqv +.'?^Lf;c{QUN(P۽jo;LWЂ>AGn9®q*@&{DYHt܀uR}`ts佤ac;hdغ=Of?Qފ==ɓ<$EDȈ&]Uɗ)5Ljcbը=GIp~DNhvޟn&g~}N:-ON{a{Yb',u?Mltĩ)B*zDfH^!_%b""""""xbSYWC6>隖wOQe㲪/eXn?b^a:#w&HĿ_qLO$xr<-G}nODDD@)1x+o̸- +V""""""yߏVJEu>j2d+|oE=J(}kH7rY #v_ȩOaX_K1p),5R_j$==n뻒^{G©~e__}'E2DDk ;Xk` pAOn1ʝUB³$;{t.B~xk'2}Gn'ېuX@Jլs҃}u7v,I/: î;'-Y6Tխe yS/㟍eH|76^/ɅgRܻ\u_ҿh-W>C7+eJc<}ңl|oTlr,?G9OǏr_Sx<Yc?OGO?;xt}KA}@;Ia}I^|]XQP-WQy7$(6>rx61ҶE\GhrV""Ywo'O.rُܗnj!eS_`4|芿\kekq=/qe=:=8~/#Ʒ%wQlkO@މV|G+SZ`SkM""""(dY =qVkškz{K3Ջ[%%-V3yFJX]ǹѓoo}4ˈyVڊEX_ -}_pwbczyc71|&=JtLȉe1%bYhV'O<:T7P ML+xz)2vfC5LC3&>umu"0JDDDDDDDDDDbaSQ5NG>X||lDDDܬDDDJnV""""""SqXܬDDD:X'Pe%b""""""""""""" O%)Φ[7@^ gfk\g39~W\o "j2nۗurIR@$?xTYЋӫ A^i2[K::H " +Tk.\i]GlB6;;L'L[g龰؝wu>NބY*T1f;;*MZP*vG{C%FljtZ_*`e?OlNzV+Co{ #z:^aZ~3#zTޔf=k^g[6W3V=錕u}5=)b̠{ Xfг*E.|.߯}|˱o*U +U Wo`>'ڱǦmWQ@R\U_{識S=[H7K+#z$w`g!׀vZl̩:3xSFAXfX#=#l b>do պYg'/8:YU,zGXC0,3 lUZٴOOQooe ʥot:m2?Dx;Y-jnjnS3\\;.S)Z]߰:s;\-@`RW`9Y[u=t'J{T +EWsbe'S&KV+ 6Hʒc\ARUH Ȟps^ۮN$³܀VN` N|#^?DAf*;*) d'5m:dbwLlj11x^:n=d{otk~O&)nf]loCz3J}8LLKqfb(EI%O6|>~qJYU,"BuX⵴V E62] \;ߤ3dz!ՙk^:CCL2 CBbq_/tNCxGU -֡꺻E-j/]1 Qbd(uJ'1҃?_gc5Yt^?UjۼNodQh=cԠG{ٿ(?mK@FPW7$wskqmUr{ƭkͯ̋z+Bҥf{CaC-z!vttO<9S j-jÆA[e0S; ^6q ގF~Lh/Ż(hvKUԫ{{읍k{iܭ< }ҭFQjW!Vҳ z|[:,4T_!TAS=DؐeUݖi]h[o@zX~fmka=e?$njϻ?=\jkq7jQ4*$k~s1U n5p]lk?'1S|{(jVVpm]ee`6X 5= Wqqܬ ]zzk-ε,8XtB;OPIE`~{#enF[cvPV{א:kˡWUN}Mh +C=u" x;]-Y7c0Oc-&}L}uKb-z-e nDi]Xң{VP`wyO3>2CP+Vvۍx.NOSE.UyWR^wlt>=n/l']W]M|70kƽ8MTebGA +$yL.nfdSt;9/13E}JͶPﴯ+<3cd1"ﳂ:7`zdKaM%W-SuPZ=g_+5]RR5x=]_6%f>r=`}R2bq(,I(@&>0L_"|[)WUX.VފzO6˱-V[hQAOg^s6Mh{^fޏuLgxliue[޲'^5_#셺жtuc˫c5k7Vzz#ަ.'ɯv"MkYך7/n9[E=ԋB@Zަ'WIY2"=XTYk :-`=h1ZbՉ=~!33JX5uKb[U:N:n$^-%[c+d:N"W3%sp)UtM׻[uv>_7T'&{+U,?׶'MAF|;ȿ.&_)b[o.@Hg=rӢn"3Dty *`>DM !U ZN͡[Ȭ))q֯8ʍeUTk,n<ϐ۫9ܟ }5YSNGYZh,769AM,lNZїBO oA_L&S*ƼTe#VST!{tzs #-(#[ ~F೰1dVn#zp[g[qɨ|gR{o7rʋkM[-v4Ob FQhFj4#QjVRVSQj5ᝊٔYRZ]B#{\We>[X=vo oA3e5FQj5+)j5 qrc[.Io3ѓnBRj"]+)j4#QjYM @!.رש'ds""""""""""""+.*ۜ"/s^5J; wUt[).m눞eٛsu;TtPIЗ7?{ק{ Zmy>SX}}~~A31  +Xyr:K}]f6UԷK=tUIǤg|nG .Fɷ. =Tw #9i˕Yz:/Amt};cYjQC5{"GyQ"_`XEIa '%zlGtA_(/7޺ ?(UXi~/+eQr;׮do}237^3\5XҞot-slyu?8/J;'Oɪ˖:mۿqvdg'}uyVv?$S鍕VmKu6`aU/N`nk'Kwm>qy^]M7Ji o];~cYƯW]Htz}}Oa5L+Bz%w-.:@b˽fH yob_G7Mr.,nBls/UXt{hN+\{L2,;$eMn0= +2-kjUK $(P;oLpZQKhﲏ;(NˮŵC)# crcׇMIr~.>>NJY+ZJ,>oFY[ea[^CݛU/QkemT/eK`" H !~C>17I2, WJcxW9Fl=g)>@T}lo2]5=*¶'g_:&{cHHGU66+#Hh{='5CUx J 7\T79!tI;A7d>'957KlKgGּYʲU-j`c^ zM{7O[_os+b]I̎߆`qQ~K +n6XZ} vE{3#it 0 +'EHJ?ߠ2ܮv~k?Ƥ/oKݟcl_Sna[+e8ź^EI$ LŭĒ:u5myZY +t^پg]F1W5QnXIOSj~73:1+]*C){9ϕc_r_b5 jHHHk-`gbod+˲+trT݇vUan@@c6Ʀ:VRMc-Qa~j`b/!ʳ'#zL+尲|zj?'J\EZ&|D~2˖>F"F:P +XOjɛsυjs^RH~nL{]$|J(A^Xkt 8kRwHu#,z* z ? yXyfe8TvZue,k`7穳{7W i6;)bǯ8$- ++^Q)ů?׍/[A47-W$ϓI :M÷G#/yx^3fc[κ(ѓ|5Tt)Q6 q[Bqòk;;W}dr7!ckaǮ kWҦ) ~[S]H:) F"MdwkXHyV Wv dX%IųMNʿ<5qlj:N|4{n1Y'&]T-NDZ>Kl"4!\X3=gS^JQv2S:Hm{2"""""""""AZ֎りH$ ܺSQO Cut ږHZ=}RIQ4{. +@PdW:Ն wxIt}BTVzBkZo-AZ"%Cu |5 ju;oԗ)WPʔR:HֵjXV֡{@^}i{V:J>lJ[m)pӨa"ՕtW0FĄx|N3kT5d!eMB#~w38+&ҥì( ~d~%CT((_ e +) 67pի2YkRC"@$}RAEHkᡯ*4 J @:%U9?\֤h]@ԧH] 5{˰Cb:;(R7 +]PT{L>n"5ֈU @P:&HO pm0^Wbui**h ·!U*-J muܓV""""""""" Ϋfe?Z-b')MW_"_)+v@CuzuQ*⿚g+⿚#U5'/?q+)W7#S4/oLLsPz>>k}GO,+UR~A52+v)6:~FThUjS}?v;}я<6eA#ߋSOB'r+?y/?g4>g<\}y?_Y+ybV><\}y]?sf_-byzY|7؏h}-G%G lof^?59 +KXDɈŻUxQj,*T.jqYoFF vyjVVN#bior5׼ +;M›V[VPT"2 k[<>k<>kW~Ϳc~Ϳc~Ϳc~ſۣ~ſg#³w;gOƞP|O1nFT|q?uoc|q?uo#|Vb7|1?؏vbg4Wk V@:'DDDD(f'DL_5ũ_k3aԌ9Tn,ɾ^U?i:r?-Ѻ6eh4@2}' &\DDK,k}GH.{3>`Ju2[%rLCM9u-Xxĸ1B_;vM%X9;~ڊ=lzeDk8zfΣDHi!Nukm-LO""`r|B#8,Z֣CzL@^dl,e*H }dYQlZ ed +5@ +r-)V=@b1=/#e[j,`l #6 y%0Qm| ;6"$Og1kj26Q)D"Cs]YNvO1zVO nKp2ν R#_2?dQ24g67gX_7 f[yϬSzOUW zUOqIqԽJ"~ ur> @հICa /S}[#po^ ˵"Ya|%.M^{X:eu [N՗ZSUR"zHiS&;"6Mzn$HexYZtX"lI "})8{Vx6Ԏ[߀"NLnOkdtb YOg9ؔf~=LȬvd=sI#d"]V +7M"&&'?I2""Yg?QX緕a>V/P~s9Si JsΦl#c?AVݮbքpX[О #.W;hհIFUF݉ v{cq#6 +Ĥm: 7`'uWnCk1G'RR"$Og1kjd&Wcޤ~zW͒"SBDNJA[Ds^]NUSw:wNH+HrShCUUW}aG~| V"""$Wi'柌^w/1Jɶw!,ecDyOhzy#K㍗mNu5ҝW%s)P-<+ȩj)R.ڒ747.bѾǛHп'&ceO;"QRI)5_iXn*SAJ@B]*՛[dj5 o oZ1Zr|z^2ʘ7VO~k.]kf_3ٽ@3qΧ/ãՇ"&!W=vn;:b`gqF>.7Uɱ ۾ᑞ2qC^󲊐a{0a_ =Z!ENe| ^+1,łI}.ΔL/ƯNُI&eD;' &\DDK_Fk'o*^uyͦ"D?#Z'F5YUvd矵keŲ(5~cz7 1} LMnaAI=BkEAwvT~vmĻnI2*(E@|q:Q~Z޾3""D+_ ZPJ+WytDθ?n"=G'wL:Ajo규"E{=^O´ǵ^۪̌qj H Qؚ>wGj߀3 :o_֩~!,H7>sbn+%Q6'~CDIDDD8sN-6@!::n86ʲs2NKT<=H'];53pR7 HQOW/ 3Só}$u?Z~ Y(W%/r(fx7ܭanmbV$U7}GX+ASy2S5QMm ~d٥Ѽ{f~?#Rݏj؍Cz̈bT "'@hw;>_tDDLLOmOe>B̵Р} ܓ5d"[esNEXKQe:ڳyv&~73..MVG @>Dؖ?+s/>&8;X_[M"D?--t`#Dr[8%+e5G^.QP?Uז^jc}ڎޖVo}^Sa`P| ?PgDDDDHeS#g; 35XOI#I#౏B*ɚN]5H[}2xNo?zQ5X̷3A(ӿy? O.Ho`~.VPx ;SУ@_6h^_Jks#!.~0dW'~nUt#LDן;#;#8*]BolNufVmIu.AVSA"SZI5jx|6˧"RSҥ7;-LK7kl[mo T—e'Cy31K +YOpOI oṗ(fFw"N56_Ϳx-V""yEy5v(eu*FM"?'mz*Q=GnZucٿ.'-ܗܬDDDD?' &\20&wpE =\F<$>J4SnzQrck->S3~IIjʬqgB:I薱{QW\Gٗ>͞%$W߿)){\m+bc}uma}zwF2d]|Xc~=uC}Q7l{& pAOH}Za/c= s\k5;Hogni|RR4zU `#\}V>!dulGLm, Ąa1/V;v~"$Oy? +dDK]U M33؋FF+`aknK6` T'ϱ?%`A}F є$w+DrylѓFF:'Mke/aMyGQ÷ߦgv}²K4ݎð|dB&McȞkև2" "eQhߚVfb3ytOܘ蟹1?re<<'e|<'LxytOܘ?rgkɩAsE˦_e_dy~3Ǭ_?>WOGs\oZ{jGC(g|@KQrٲ:zk{o*$/كڊ&`Ya߽zpfQB)ԁu[t(μ :pƎ4L~῏]ɭ@Sh-`ry8X֦UHۧŵG#i?ۦ^w';׋l$w^-[gTƽOS~Y__/u:ƶbu)v{A=䟓&YxnT1HǞn.Lȉ} dIXj`.? k̵=ױvk>o <(^MW 뾱.6eyhpmX|?H1D ՝ȸ=IV$%kZس0X +lzMJĵfG ?9dmkC>!MvsFVMeªOӭɹI,YXf܁ԫ) 2'+ƥ{W@/r(<>3>>۾KuU٭".F~3'1s,әCU  >~?%kO5P7|!AZU6#[C1y$(gjݔw%xUy +΋P 0A!'WKDDJDjAsbsuݕ;JbE('U޻uL6pAwo'LfR돔{Fcÿ뭷`}IlQ'⮷*bګ>2>$@#Ch/v;a=8+nL؉6}WIX su5XցUأb]}t;/{Gʄ^#~HR0$;$?~*5}cLA} DK[Rq/0UEzիuJT 0>#Nd$,|٘f?K1&fĉ;!wY-)v>G#?9_R18( S]uV&,8:oHcU]L{+eb"D-d 9>܊0qaO`&<3HB{F<e7jF^1a%ϏgYޫl+a?fvtf"}_~y7q8 ma~>Fjy~UPvvƧ?sow~Z/!O[#5I5r%UG?\ˈe10=KگJk&9Z0HW{v6)0+nL؉6}W%b""""%ؚY \ՠ&g=̅|x]l=d6B oD52Rc"głZ;ֈ=29LL"oج3' y +ʿ{sJA>sb?h?$ʈ>ߚZ"""""$w5ar5:!q q9}ȯ[QV8 u;ߩ> w6|lՆ) "}@O۲KD׽o2-;M<3F5j^i@; X+DDDDJhL>GVFGSb7Xwꚿ)gqV@{zӺ4.Cԟg}Lb<[~c?G5_$׽-9Ϗ0'+xceb"" \Le\Ŧi+u1)_9bġ"U/蓦 gfBf{ǺދI7r1E$t ?Gy Rq'o Vo\25` "gױz<.w+¦Ȯ܊j5~v; kij_p +_m >}r6g[]5W>slnV[rkH >FC3SW&EWT5{ݻ]qn7qXIy[sZfDHY+DDDDDJjDf{%Xm'd5Eev~0.(rCǘ 71<qR%DB76fNfG^uڭb1^~ _o_/9Ⱦ'JnG,`ݐU©?֑b'cvZLK[SÍE&%$O;;!w椗_3Gģ+ؿ5FGy&Y hC]i&p3YVo"X;Q2έX"t>9Veku.620}Eaļ{5I,΂#1a6{oaj|gp{~{ϣRz"xf[[~IOt_#K"D=r-SB:f}=d-w-C( +@zlߗMŀ>ropN#Kگ/?$askUvt='Fq|096 ~i5L`_}?N@ɺuoJ(eUҍA3'|aVV z@PloF[/,n6Wj?B::?]ۿ2=ۃv–:\{z=ywߜZuk38R} +;봳S,R:ֵVzR1I&Ww#}65mm s.jk:OnZ%<,?u)V>5uEPUzTkli&Egڋ˓X1;ü8-~M46tISQ o{t`l*7Gkv?Qm|'d]`{m<;3/1U"zL`#Z<ƫWNHf eMtoewәCVԉuWx lԷշ)DkwHNfW\;W:R ԑɥy>g^W@|޽#^D̬7.a +tL|Ch3˩R+Se%fe7{1l|5DZފ?ri+/fӕ޼zUKX@#g~>Cr9'nUZ;xzut$yLz2W$ j̝ / V +-E#Zҝ%,6 |F&B[oǷ,cAUFߘ%[$npk +c[|7]ɁP9\=5`MbΎvz >D$|sm[1>&.cZDDJLN?۟2"E/_%b""""""'ԦB2XHf;q||so}U{:![nOody9lO)JeP|;`~ ;>+J~_*^͜eN:m + B "ZSE*%$O󳿢~jIxwՔQ]OS &.-*eZA`7ɠ)v>\GDgcXv G kD]6^'ߜfd!⯮?\¿$ɜ\uĦP{?$ߤY$"$O7/ΒG8mi^]ě1oB叛/Otߙ rԡJu;Pko$CӰxjї@,5ؾLxNg 2Vd?Jy3_&/8|MbK?&1%k䈪={?+ZY(I?IsʸY+Qoq z>{7S٨,հ(mG }{[9Z~zh6kFdܥbè`{0`DYMzff{,uoS0d:!ŭ8oQD쏣LyL|>AZR VVL4A1Ӄ ] +T0 H {xk+tݵ+n ^'ɱӣm]Q}F;wV.M)CԦ*U|k,1.gg#57Ov~_9LN EmV5ZvCݦ]Q,@=~Mg\j)=k~Hߦ3 +PmHP7,0J[A;~d'd|MWqa{P~UfhM +_ӫSblFںّC0RB ގ91SNz܍oCs7b6#sVk:G箞]kaWٓe4PlJ8IN$wU{[q+)b6#b7qb"""""RbV֙q 1_fN=kXZ[ndy/q>_1\}保"GOB+}a?d9?xOO?SCw>_0/>_0/>_0/>_0'/hkMqW|`k-忘j1O YwS%^h)ś+prUzҴnW?y kx/V_y_1O欿?j1O朿r~ki/jGv朿髿+/jGv挿黿"=eb]r1QkH.ǔjk4+{X;i.sw>1E/kUFz[@qF71hw-=[[l4aӡTuH/y{\YيVI=e#Z'z999.oq~zx̺ۭWu5%nP(f=kC^sn?F]d[]u%uv>1,ȾSkZ1Ǹ\?WIe1ZvttPOo!˴ģ3.8ÔuV{;tվ֕Cܩo kS][2uX^1;}7Vv[eިå˳{yllǻ##*@;8`;/ lLK9C]gmJuW[@tt<%1q$xCmή4Іb <˧*,}K ʕ$Oy0g/bUUZEf u1U2/)e=DVzwe:u&8%˪S+&raWI=rN"""""%&/oi)+'5ߏgI&zCv#L=QG g+DQN8`lJ]kvUM>Rg3ϨUuAH+T"hL|IU BoCč>r`Jĵ$Ɉqc[SRՁ*@"Ar8t;-5T2=i`Np=&fW+gخԒ}i UȤ {-GXzu.zXE /%(FMǽ{1r-AwV=XV.z^hߢNoMw:͵Z +euͲ= ??6Լ=Z,,A*z6ٌE"t^85:?Rz)6ݼoҏX:m7{˯શ],^*ʪZڒ L#ůƺƗ@r~s|f=V:6dr=;zJVe[],܂Th N;L~1-ZС԰5KmFeewKt5[:/Gr% +aٺאn:@އw*e7[GAk+]=^;?KQyS0:]Wy8CK7WVَ=]=ۆj-aZ{[muܒjpտ֖ zY|*\r*-( Xzny{;NCc?hlbƶcQ ?c] qUgJb48W*G ጀVp tT޻jIUĚfɽ۠e#J?I٘\Q;@pz7WOP#2m[WlR}:RG:pt?QbD1AܫRcX7-}e\Jkk_DIjTkggDDDDDDDDDDDJJJm5-J>/ԬDD*` PBV""""""""""""""""X!y?iɫofPVU^kC/SXRT[G[ܷӌ9j)G=|v_ZrVL\6uL +ʳϺBi7=qZc$`+mcZ,5/t:+Z>^B"""D'cTs3%` ӽIdo*DhC/+w@P)+A dyL+-v'`Cvw-GfM+mṇq &(>% ) +بA?0l*ɲ- 2Go3!/#g mvjB|mCfz4{M`\we0a~,HU_H33 sjYZ~-at+0RUI'd)q5O)R/I ZϏ>VZ6C"8BGO /W}o]{;b[V ?`v~wS'/'܆=hZr;vz)o(.Ok"!xLlTT/Qﰠ)'=py!1*LHkeBKwpv5ad{Se䱤_~h5^nFFutmmWR=,HMO#;;8YX#KZ8% .WSrjklzءڌNn`=o]ArERW(=Y/eed5k%}!(/I#:$>n_6h&c;9Pv>{e2qXll%J#yx%9UK[;]s$ޘߔ_j2m(IiڿA6zއ39n^!)G]< +Suk_\hl:cZR}g8x8jX5 doMspx3(\vq['P-3u6I[3]ڴ 7=t!@ff`728e r(b-Z" +4~])7!p9 <; +tU^;BXaNW<+a\mƫ%m5$>Z~fW+W E' }zfz;|w$9vZlYzQUGUtu!7oݓ} 4$V48])={=s8l%"1nĪ:F>US,݂ +SĞYUyㆨ1B PĀsKd|VE51PBjYA`}O /5^R˻}ef>;$''>!/!P@H.0'eh=M&M7]r.`^8we[Z|qU泤W#LȎo6[1صRmH_ ?|_ӕW:ַ`QlW>GM>&]YP1#ŶZ/Jٗ2R3] ,t=<®}+}(i4DD@ 93FkŵbTYBM|^D03n5&e oo]ɉ|>g)}~%"3I=zEnZwm>qWבgQܡ[0![jùJam5u#,l_ qY O5%jܫUK*Ƿq۱[1N-[o[w;:>O~L#k"TH'^by$ YT"b-nthi:'zQhJN2#SzEX)A5*SEt&E7_Zwz`B|ֻL;#ǿ=Qʙ:+sg2qs^O8'uZY./[]znlTءXt773ŧ3v#Qbya sW -Q*CuFЄ0 +{Dw鹓_!^~:#ë)=f'Xgg\Y&)(O`c;/L kDWBǨ`:Oѳ%doQ0֭F~)Xµ8RI$}'̍&@1MXWkv=-6VY9u!NGLbޕԫ:=zTw?) 9K3͟Ls~ jSئ TNEUw-aX(;H#J8g)Y9:33*J bu-6x##'K{gGGHp9Eg{klrU*vz=dnn o]`\gRIr(E+W㲲 }>缶;19{k);uV0j^l\X\MlX}%A߯_q/1xn;x<7V szh%lʩ +IV$yw O~7삾-Zt,($ I#ٴ]( ʹq:Vǩ%˩_I$̩O>@Zж;W28;qӛ׸3[=}y;7|1%5ִ +Ϗ3ak5'+;:)C2C[f 1 `YˠFrbx#ſ^G wYgc +NCG_L5Gg7[h_<6U#NcԺu +^j:~2NT0]y 3$G'`EUw,<.waf}ؤ=,~wN7`K,Mu +{pY9)M2i{{jX |^6=]zF Pf>L4z׉RZbN'ak>ry:3Q¨l`o[fS'ˣ|./BT5z$) +Mc@?gJ5{$fM5O |[M%HQ}&HCOKˍFyqv]l)ԗ"vn(6tv]k陷decԮC`e>(eױۧ}fKMbel:%1-QauB /}uև f? +^BfM +j<;mӯ/"g`ߓ{5gƴ^UI2H>!3_ U8-Ңg>w߿3l\"ڦ&+mmw +:=),38YuapvWMNDD)+)#/Nec粠DZU@hKSbV"X+@:^z_)ܬDDDJn%b"""RV"Sr)#cf܆j@ 0%  উbYw%s.SrXMb% JDDb"R7X ";fڮ$(ٙr wաk~Ԯfm^}6@̈0ˑYx|ǔ1EI`0A<*nc\hkG8\>` [cO.z6Ncx+;2cvJmVe#˨HE܂dV-rnTGow˼NoT\biaB{egX[} CgCy1\\ TڮNP>Doǯiϩ쌴XRøD9lLTlkZCmboսu$ +nSWg:ހ'BD{M<.N^% tYevUa_yS 㹼{ 1+[#"ܖlK*Ѭpe`T9!!PVڰhú/KѫR;OWUwEbHC;)v6H6J.U"ݕ=̊KYh|R@nݽǴMV\L$)~vyKp^ȭ.\<ט- $6Is6%Uޥz@ ۿmG=wmʬ +يo JDk֦܊:Y`wY6U&A+XUzXd/@'w6O`R,ut:[o-UUmR|¾_mvOni/OHCtZbA @1V*G*@ O[\ڶ$*߁?ֽxJws,(ffyeNߞu)G%eWjub~}f;{GƨS`H!Dkl._Dz ܮO5cUugn_bj]l^cEU-r ]#mV~2"" 5JڛN:C-=J 7\&uaտ:ׯW;uW4+egPw(ѩO15u.oYm)gՕx. Sg_;xi>t :ecxnb+Zi}zО>׏Z)ٲ|5{פ#pt5a^?lw6wM!9(ۯ5A( N☾UnKg##g%bhxR0}mO@QޟE{?eՑUc\j:lKb =MiġԀ3 #CDR*8 2=<,7R˳Ozu~Mp}~sfO迥jΒ} s'un |=&NRGr;ubQ}|P7}ZD L*Z)iAz1$rG92PAj:T2>)]+fȻ2[)!k`6Q|}YpVRRX +I$6G wٕP6Y7@|;}s˩l~] H#]#R"ޕGV7g/՗SJ5 )ֽkrGl0%lz5c(IS>35AhodU@_E`y+_wgVOZ]bkGRi?ONS#]n@.η˹t@=ZP zzu>_{9|yִבmViWR ? ;L/f=^6ͱl{H%H 7A^S;ټ=\{ADz2GKk,.2ٷVCpE~(:po{y}6Ogx7 yyo雞>5XHوQY'~fqMnz`> oO>kk17Jkסmk~RgGZv  ?ͅV/.01)+m^M[F˽ y69$*Mod.U_X +}E~ywF.G%ې(н=a7vLq69אe;ƈܔ|L s+v $w;өʐlTkHT?Ky7WZBϱ~jC>OsVGXH*NmxeZpB-MWW6L*R:ـtx;:_'##)^2bږ7pv=?a *Xv,ܖ7&90N@cWo:OVn@RexȺ{nT>еlR݂UNcs#'ȧ#&ie=ořykS?-({E>WK@ +z~=̟i֜f@)Fi@/>0L=FJN?`j;/կQ8j)5dF5KWǬW:ArC +y +TUڠlSXebttlIo O] ӯ.{5=fvEU?u{I%bV"W'ܣgǟUomep6:UX@uW'sx]!EEP]';IB3؋@uSq:nn![޻bc4Kx̪k }J{e JE~Z(>ŔD}: =㍅A8y ߮#yMkLCaO%I?@feՑu9Z) KUv$mQ<RRr hu)DǮj@#( ϸ[WE[7>nzdaQ} -$J9 YC6G28}&wԡ[ܹiR+5(ŧ$($޳p\xj>!m|ʡUvI㗅F}f[jèv, +.ǪΑ[|Е~3EEM`֥֜Ƽo*վ+k-˿&dzm! g(\R]JcXCX֐ґaU8i>hK};"A ozя^2 +EE_%P#L:F}CCGcGKjȬb+!ԍcy+ 'zzt/N:ַxK6t>a!~bW-Yj+=`]itxVʉ +ٮT/H޻lu3pq5Th:7cԱK3QY#D$tw]==%#[( {;Ewo9e^-֋ޔ6 {FyoMKm0dzcjԿo/xXtg!$0ly-^?* +e0~=Jc֨ ?uxT׾([އyWMoRcTQZm|@?y!AģKա'H޶ulw|)8eVj+`{t^G |&ZPk׮Pt ~90@#Fb# r>T(Hg^>zxwԶ.qx_QF`XlN=D'{o-0,[u֙;ڜ:1˵uʀ:ueRW IdަxccQY%ggd 3MN=fﯡz޼wmHZ(cy+Th@Bd!K2V>gǂa.JSc-PeLjxlwEk>y +o96 +!APR VPky8Zԁ_(Pq(£ 0NyfP 4A"bScY^5J4`>d_^REu>j2cq=K_Qt~"/"uV5* ^ kp-XRP1`|ε2b~NhּQ-?'*kupTq :R|닁Ǧ 7=]CA |51q<;ZhT_e\[Xӕyw=%.,݆̊۸A=~6[+]Mv.}DL7P_VXwֵYElU(Qhv% R-z#(˼U +4%f5f&CuYENOVbREj:>cC^;ִVN5.lvjCY3t~ZL*0SâvOJgBz[J^,P|xO^к޵k[ԫ(j<*?# +1R+A%cqB+%I wקB+ ]n=̈4cIVcEvRn:hJScr8lf-U(6;>C2"""(X3#n˫T(`*w"%b""% ɻz.J6H'GfD9*Sfwn|GP),4QRAO~LPCg[:އӡ0y>j% 5m f!T1[&gX'^rˮJ+k\QK1 ugR <>G3 '|;R6zv&dDDDDDDDDL|CAfE'ȳ(&dDD0_3~9XӋN5A,+IRT#vC}l`bdrbdQgPkح~*HRlyv|aWX4kpPhwjEօ;=Lc\ꅀfZއѱ/>.Aʽic"Dk>`mwtĨ Q)ՓvW[*DsԺRH ftDDD@!%~v}xQqCe[;/rw^s.|ڗx_<MN:zՀuNy&u=Jh)ߘ'g,}9b3" *H-I /ؼ-Zgb'[?nf%>Sڣ5N;gIgϖ FV-+MZ-:deסzt}L%U+?+fcSRfMff=:nvRl`bGw߷is|&Xa&GS5.yg`ck$%_4X]EWO+KvS؂deESeSjkwm!=Lzzȏ?)Q>fF0;v +$t5+g7ߒf6=jn޿3|܌QTgPWa{\åDfc +6O4VJEe F=Lc}5{}3˿rlWuŪ뭉rKiƻhk u[Cd w5y/U0e W].u%w[2z7̪9,9ŢQY:zT [{{}Si-ΦgRu, =!WP A l;99^syN>>M(_MlJT{yw~rE詺\=U~OX5p)W4d:#q-wC\ɴSتX3gCzIer'kð@RʗG~oJcԣꙘ\fVg! h+:5Dl:֟qt!5Se;soLLkMW6MwW>rK|$VI iHbwPHh9 ^oKbtU/ćy?9< ܎"V*ZJ&2$v2bbG2B1N 6Z=Zɺw[Zk*=AV^SkmW@`{cZ}2.Wο+ E +Ίs[uu _VoJ}'zu…vu2<"z)D*RՏo:qEؙ":Un w@|mUyIfT`HarKfΊ>"_}tkcaZr20. :q3y.[멯+Tb;oet$wL.Ms+8qոM2+VAIfw&5NE@ sXbJ=W;5(g]l{ye4g[ձ\U%YJDv Lom,|_Uݏ$|޺)C~pF@2Q}wCx>-FwҪװTÿڬeMSjt^HFΈ36c? 6d_NMS"﮳b:mzz-f݉k&gN:U'5#;2Q^sIӵ 菧Jr], >!nCh:O2A>> ̬sxg]{v6Đsɯ5쎂ŪRvtTNp}&&5~gM"[$Gv:e 1q kU{)ux.!zöeYM*8[>hSwzLK6p|Gh%*eq%2-[%Ul;1}ј.xǦ vM`Qس1ҁ~SG#˧!#jpubWCـ$ё~WG6Y^V"mݍ륋v;\}l9WIJәZ#)Bh}ɯKq`l (#dS{V\nfVR|\(=UԨB7]C~z. Ʀ̌|Q٪`ߩNֻ|f 3E2V6WA1W1?#j9Tz<5kgw=ϖ&{qxj|vbl![aI>Go]͚fE.$ȯhx~Km +BYJ{ony 4^/-T'@NK ?;7!i&3}^[(kI[]rQ{ZZ7 w#Rw-J\^K|>ڑfQĦDZ ccLz׺.H/2'"\:9VXQ꽯-bSuUn;ֻvag6JZW..G(_ Wvp5%e2+ҕ'}}u`fۍk+]}$VDx}Y)qپ844el:S@iIKh붧.mON[10x[AѰ5v7Ys^y<["2{s&.)mlFVC r8!k5&OX'c^v'R̎+b 7SM_H6u$!2qXp5 ԶI!m8G/T[`fpxvBb=r켎_[_-3ܳ} +TpizGo]r<7)cb*sVF3tź[c&>oئ˨e +H']ǡ:8!5W] jhfտ HpQk}uVyM8GfMT+c6ulg!AV$  7;>U"boQ5`};&2צI['6 vvF=Smv>MllӨPvfG38K+&E˒i<3Xe=AݟGa{=dk>Pzc[̾[s1+:jh!ОqsI+QR5=m7Q^vapy|t~-kKt +Dt~kR;)9G4.B=U@[=,?\uv{j`p|Ҍ/@k3xZڀ/Hߖđ_3fj2X0=(X1T5hkQ *kY9 o2nLJV=Ļ+uhlN7?/jEѱЋ^`m&?Vq]ЗfX1zx` {'$^g;f/+UFBXݓe^}ε+?g'}6 +WFzX>6V~ ؈n=hv!_Y]jr_bv+4;/|\~^AVz:;[܌s;ޝY.]D!XAٸA9\ZJzml"v#bAݞ1luOH`&>g )F[܊XX5o]__ed 1KXtt?)K}6r., MJZT-vV#K᪱,~G{I5/6w"y/U^='^Y`C ײ45=6Fw5VV``n +(eZ;w}w$9"UqoK~5r+p4HDͮbb|g1Һl=HSc2log$8ϗ՛źA +Yl  + O.K,z-+ 5·K|z/~;2eZ c{8nZO.;h\Gԥ9DCQCטmAs<ʹQR͎i!I#)n[Ϸ{9n??2Ѳ+dJZlQ>g].cί_U4`kHktvNrx쬼jɖkgNӰ[R<ǘ?K8;7e +cZc!wG}ͧ#oMib/P>-z$mp[b_cٻ q=2#?5]fWOMTwdX+U}UccN2 LdW-2(KWG`̬,zi+];*p#Og{?76U$bµ' +縇llubl1!jU} 8|^.NUb6:fX-s- htP* wd㳰3^VEV!**2;.N7&^(H_l7Zmc+3?#ì圚XQB$%Y~"ucSNt!?5GH =^Z"" 7BeYO2Gӣ<8|7GSIP;ZIPI~f%f)aJWvf}Hߗm̺ZQQw NvLrߔJn%b"ar>'*Pv!=|ǤDQgtJlFĬDb"""%7+)XMޑI;EիՂjIZҡB@DJn%b""%7'ګFՆX .;ib+BHlDb"SqX0œrx2r+,! vYmнV:~3!}8qzޥWVB;G`dV{`#cccU@Uu0?eyYQՊ0a1Kg#([Xvb}g[UFGU`6~rwHN_&^SZ`uv'b%N{Pd͗NWgCd ܫص@̓%ԱC+ .r˯ <وP? 6\$]'n@NgpVx{Asʷ]::(y^mƧpkg$nEXTv~eJnasݎˁjUvLԠuHN%`tH:;=;O/m +U7$ogq8dX^VcI}=$Wp%X/+Rl9xlKRNЎ%w&/gqVX Y 'u{QGbe*AȎas\|.vН%$ qW8g9Zz~JއmNߔgՙg_z + =IeM퓒 ȗ,JOS o,WXԻ%t>n77XVd3#utq}bڐGNe ]N+ 5MBi`}6!D|a(^`XԉV@o0u t7IOk2ke|qh| kX[Q}ɯ/I)uwTs8ݔ啴Ҭ-[ NWrF:J\*dB8:渁G^a'{aݵ%1)㹎0c \~T&.w+{ZYo mzvoO +zq&vOL9SJj{2^=鷎xlhWi 86K/L vYRv(ellq(g:y>88StjF;+o8F-X}>]@Oj]9%9Gڂ,="{QW +kZѸb:QnP 6O9=]K~AvKԱH 47\}"u܏syKmKg}uT(uT }N)y^[cbu|L=lk*y%?cN;H+ 'ȱr2A)uLNᒽo32p'E3axҊ޼g`q֚Uw^Z\Y&`#rUIH ?^lSίS|eA+Ԝ_%fj+YmJ#+URS׽$K`fc%׌u ;VX5Z31@ۥc"70>K_5!J(@ /{e:cTz[zɯg?ֿ B kST#hLO EJQ[NI$Kaa[kd޹6xl1+c8ov`6F̻9S %*ZqG5ᵵ]ut}>8p ,I,h!%)QmwdvД닋G]UgjUu6YY{2Y,0[G[$@Z^bSu? A#z r>#|c^Q(f; J8K@N"V?+Rd<&-[ݴ+d'jiѯI7-8'հc +K +{Z[ kۋ~fV7̝}Rrr̥MRotA`oEme=\)-q;{`~:8QB[ѺjAk\j{efT%,NTv=痲X Uvv@OtX`ѡm}"n3A\3NGuɱhjIUE`zv~>fce`/!_R]w6˷ljy4j!Fygԯ5FFVuA|!&G(؀;'s% <`={ Rn1s|D эk.:`DoOLàP[UWTcM^*})GۖmN%96%v%X"뵙+.Q߲QQrS>7 cV]ִŖ6DCaro#) ZޕX#l{wjbĨ5dlo둜3/~mVZk+KkGȢn6~˦E([^w%X+ _Gʥy>Se@fׯU==LN9;@1N)x5᥹-`]κ'C̾Gl|뭵y#xb*񓏏b*Kk`#$Kn'r;*>6|1=QUV$*ÿs08jy UruWkdH#^#{&i1kAU +yF'?0Z z͎cqcҭgO[3zw6 dTDFoRlĽv*s[Ic},gp)L{QhACT[}OyuMجljl~=kbܣC% |eDf.%>%nտNvlo=>q|-G kbNt@c2=pSwƱv4B;Ad'^HUajHoϣ];֧تU+-Oi6z7ݞt)`cyliQ5vXzubC#3,䢷F FAӠaGp;e[l>';_[I=ןxge b##eR>!B)c2ZXjدOI~^ + +TJw$ܒOrO=帜~>QXAeckݵ߇S^W~R]'S/L۫@D©#7EKV*w>g'WxYvF~cb1&cPqk>5Dy7f}6{shk*v3`7yޢz/$/Fԏ]~{63a [cX+׺gg ^2{kjk V2҅ ^%iUJBL\V/IdX@V~WhhͰ]+jܮJoYb^ Y[,^[.@Dc`]gf,F0yLϱ|}>tuut92ibݫܯRtugXuI%1Iz 1OvU6ǡ>RgpJk] CŰtH;|3tbO][,loy^kUCJCddvI'̙hja hR.Zk#=ܗd;PtBi<=gGn<-ssrGw]o]>ןym%cةc9UH:}}e`|kSNG|7N=^:J˕Rwһw>σC&IA":+zb @L +0M l}zu2$WgVVk& fz훣˹}nyMt=oЖu-bCl'p8U忉ֽ*bFkGC}(5O^/i1T`0Q:Dǯ.YOpAAp +!%ۯ *Pyw~?Co6~%޷սo }u!v Zuf=^ +t'lzcܙFYo]Y,|H:xf6qRvgZ#X\]SY ib]1m9>{m2ЅJ? +SomL/8=R+bo[q7IW]WT/^ZgƵ@v}Ƶm+eXu]o$b""#"ZX*(1qrΩnцՔHDJDJ8hub@ 7Koȯ <وUY=ضt!A`A薻jY {>2|YKޙX2v#kص@̻̓%7+<6q-e,ud/ãLq,D~쪷HmyglU ʽFnq,~I*ʯXt@$ߔ̈X5eKmHaH#cFDDDDDDD!F9"ˏrXWD; #>GdddW[[kUfceufj8V:>M?6;|,QPy!}|LLK,{*gFV@)%P7=xg]mfUfBC]X|$>`M{mU+X6n_/gسyǶzžfDHQ=#=њl;5Ԇ^=}AA^i-C%/ZWckŸ-{9HZͿZH-c.xy)C5Ņ( +N, Fe.=栯_vwu'@2q]x4Zw&Kwl笱8x춸pFQH=E}{ye%vb +{jBi7Ap'Db{|fN3򜋱mm)[,zz`cio&3PCX+^K?iWx/myD-oYVە,H: o~Cdas(|+j5\-$2+Gqے$nBi&WK]v _]=&Ng;Me#lRc{>JrOg^V*\46-ke>"`H!w=J}ofeRKbzzʿ7{R;1dǤ0m1ړaR(ItG3G᭍n5itt1:duo2q9,2>F1ˆ,W@wחȯ +l $*SV+tPJXPv=Ny2`UV m6X={߼='?8Wfc5ntc RC`zb{-frnF; &l묠鱀])G7ޕd Bqz,[NU1#y7#r CM溬Tly0xYvc㵸 m)RȄ{w'ql1f5|I'I ]2"EY R{@ e[}'[%Nv$yLe32sxfRq!˫@K{c!=;T]mpPRv#~-͋7]Jm Rw`/QbOP?L2he)m%+֕Ŭ['28XCW6*A#zr㏷܃`Kt!(Go]WQm/mgD 0 5  Mfˆ[H H:Gï8.+ +aRcPN3:kȢzPl3;(:@>#ȣsc"=è! +s>}ӂR)Uƺ籿IN~Z=EV P:f/FWE5'GZn1^="|v\GuU=+a[I;ގԦWve4$l h2n TRݘloG6jrmä\ԅ7)a!d_\y1ҫI}}ǔqTduTD_seGa#= * b@@@S)3ǵ4& 9& J/kz#ӼŻ&(k[V6@y_Ռud,`Y V>=gr܅VPʕ|UMt9 ݾ ͎Q($$Ǡ+6(P*;L9LlaS25wO ^<ۼW~5m]Xʥ%J@n-Zοh,/й Kutpb<Ǧ{NuKyj/J K 74vu9;5$ulo~>r2_,UFl k쳝w>i8ywR1zF`th麶:~;˫1zjoYt`tܘ5S$bCY2AR}@=]MX~ `-%مzv "1(_eq 7Qk]k;?fg(G=Ĺnr+"sGgMԲ! +u˲ +?R"{1^)]6; ȵmj<¬ke@Xz^ccKboSBZiԣȱ9o(TKp (оSy1ҋ+n/Tؼ.'әm-*,b$Vt_hvXzڵ]#Dñ~Cj벞. +C +G׋:NH&gúSc/qgEz^S!_\,q|'%!U0 ⎠u_ixܬ4nU> W!o%Ş51@cٮ4I='~3~[+54c_S;:IENˬ9 _`+V gYM<ݔm,YWQ#ZmS +0#<Ʋ m wRᑭTz"I%ves +eB[M0S3n*-9Jc[A]V+gHbP{r{1(`-f >Z\-uKV(ߖʐ$'yUC(u_v NFwf1kh=[>"7Z]?J3bVYŁ#}gi%˩QK1fB>Er˸:޼7ePk鹑ip.J5V@wۡM:wzY|ΨRůV%O2 fOo=yW~eYt^EV[.dmk +3>Ě+ƲtZl=z̓¯÷Q^:c!*y!fNECKAcټ @b{kox6N=7dדvHafӥpwzw/bhuB.޽f5ܤb^b;ȼOWwM(l +-c62zfO XpWEjf%N>n6f u򜜼""޿. ;I_WȻ?$5)ZռRĝtzs_@9#X]fRe-tOi ɰ­׏ 1n{=|\G,ݙFEEiȩoK~5 Hޘzɟg-pjWvY^ծ]:fMqKsT`E>^g@bd`r)ɶFr{V%;3e\׍i +Yƴ^} c4'Vt-4<}$6ltʙ c(Ay~9.3(gq%BS̝tz}xCj0vWUkץ.v8ܛ +_ :ѫrހ"|\18K)ڛ\]X@U +ݺI)b|l=%QU (B:xe|UMǭl=%5s3=ׯ+ ][֍nP[*A|ÕCC=L펎Mo{y-z*tߞVk[Î=ll* O@qos9v'N6V]G.:[">Π?W`| kwZ6`\u=#,^Cw\gJcvDd2eyZYQ%::,%^SMPGw#Z'r+kMxj<2ϖrW+kj7GGl : "xQ~uyRN TGzI1+JĦQj Xj5Fe5+)JjVRVSPbSQj5FGacfdY W2[ Sz׻)#~y-[>φ`oV i)#oϣ!U=eT#xtV~RN"%5j5j#VRVR5MFFx${ClUQ>'Cg2"""""SR1졘+/lh'G]2ve|}_aQvgbV% QG{뷨~rwuz +|; +Iz{IunU1VZ?31h5k_[>s3Vx%62BfJ4766&ٷs<]WǣkH=:>~q=63yY1t>^?/**låeY~1z#a㘞vf6]C^/d?///O)'M(:v}|5y57S*꺲ZJ:Aҝw#Q22G![W\jFm$^JJnVR7n7j܋1֕ܬDn7bVSr)Y]M`TZ +OwIV->NGٺ}N@L9skgSo$`;[fTJnD]dQz 6[`H5eGAI}DDDDDDDDDDDDD5S,P| zIWGz祉%*գb f~R=!ZF]t.1q賮Ļ9Akۖm]ec>(E,/fl6^/գ~:sm(W>`ik'[c7c/ST~$'MxU]eu\حva sJ@8K-Y3lz̯_xo].qpOF-;628z񰒺+']YۤlOmjj4ҵ1EK O͐K hkKY6 ǵ-m)㚕xlAT?$}k<:KQ[X=`} RGOP>z6+=aYYHL?i_g1W}~1Y2>'}r _!'ME+xcU3'ZX:^~ rߗO6gogXc]uɌnZ^++Z,u[@mjbt l)$7>OrM!2nbX붆6#ƚqKirEõaJK{Csl_Eo8pXn@VkLyS=,7WJw7WSE~;CaqbVGgn[^z$ͥlPYRa~iMWߕxxm%E+H֛G3LeLHuWu;1}T]XOpWLx?[dߊE ~)h9.Fʫ !}w؟!2ɱr3Ku-Պ$G8BOO'}ηz fSC>U\ hBgWۛ[S+31'c^Et(gf6+>GL|owAέhhF&9~6+?#<{(,,we Y~`Ud%1 >UV|A+> ==|VYf6->kkXTS2-=kFlחN UUԤb;utO> ˱4X*utи؈[4]KIebZJ3r+M/Bǫ{ޒ'e%8W*]J;$aFmE6h.Dy,L\t.{7w4xcgGX;vu21-kk[AA+@i ]ǺbWo䨪 |d#xrkrk_33gU0kYYmgvTPNo8XM=D#j6 + A <~lRE:#@;Qm`OpI;=ׅ5[U-EK :҂F/9n? )u-}* Vå;k},@,L~"o^Υ,kCiq8ֹܲ +-^!D?:z8K6 ؃1gN6:)Qa]@?O +i;%o2Oy[+j򪹑YVYvU!Gñq7Wղ%`ߩx><6Q^dv,v@at  `U\ RT: 'OϐX˦ t](f/6d0e9D :ϑS+ʞT2:2"h0x:+e[mv5b`lT]!G VdxI%zծY`J\x5'EHǍ>=0˿S;;Xz T7qYȎ\('惮ާS䒋=Kh +*]{g,T}+A S4JxWX⩴U`*,aR;N¤S`\u6ic> pJ`EjB '/11꽋:oc =)mU{Y]a t=ى"zX,K :z|;3s1dz}V::a0B[[uD~ tP@,OS#K/oO+*#CdTFc8i7pH:N;ڹ]~pP ݻv2pMG_kZ',jtuE}4VM]@vٚ uiR O O)¥mBWX=<.1rڧ7Qo'e'CXCt}Bc5Uq+!H( kzR;=2 +21l~u LH։ajI"|RǽzqcA"ySe2J +FU{Rf_Uqe~P|ޮ^]oVvE9 mi ֪ʨZ, w-J'ZgaRRNq&d# xW_}kS+&C5v +B*|Ђ+#'WscXzw#];eCZא vc[WJ6 *YWz̉j־ywd+V,{ka+:w؏N`V̆ɦ(V$:uas3*u{II=3ːU[]H"Ah0},g{#[32{P Fq*1k-{#odq_^4tEr稖U[YY -iKro +@ ڻ/mMȿisr8;#'zgjYHQ4gn>lOF3 =3^u]Y=JZX5.{VXd}"dn7+Ȟ/+?lUeR,[zܖoQYMsL/DSoǶεcݖ*ҽ>ǽ̭)XߙrrJ~:V=^W=L&u2wĦqm!tHlofK|?EquՐ]RJ({:7b C ab ֽ[{8w&ɑ_AY<7EzVVSr/L\\nkfgakPuXnfq$ޟ|WkS#{r3_Y+Gct,}~2:K*f65nǹǺEk(5zgr!9NC1FD[e$8EM I|%͆zzW}=Z_GH2ڽF}F'B5dx֏%e&7%nM86%ke}fR~Ozي;}{˷ܬȻ%/jZ/}t{y;q"71) Җp`+zlLLlB]Q>K2""(FWhUgau#&ڟ9P-wܓ9<|SQLB_'6f+d-i==%~gw晇Z&.wT"eQ(,|E.1n/Vl +mV +yzLb10hinK-nȱO欰Dv0I#ԑK^S#5c^]O-Xu[Cm v̭N5W]uZ61JҩS;{6݋a^'RX+Cky+ar65Nzէm{pnaХWEu)Ʀ NU}\X AF#afV5vM6S؃>2WxjJK-Gz 3c!ox6؏yaՑf//E +g6;dVvT|72v-V6jz-d$u@:3cTDtH=5_d110&2n}lV[Ŝ[^Wf7kXI'[=2V)ЬƷMYMtx\8QRQfZ}E{\\ ]Ăwޚiâ%CX *P߷Ybo鬩*Uz{}>x9v%XQ^zG5q kz;RW#1,KTtutv Ưٌ2{,t;6[6= -j<3` <-cpb]X^Pf(qSRv}=@/=,fkc4d"myOQT3xsHCr`/֥H`T>h>'}2tui:t*#}9OF>C\-qŤh޷[. 0r[-q݁bJ; k'&wԭBш%He`tFc{3rk2mB̡Y_=qES}%DGe*5vBnv?$_e-/zzG .$҃\_9{JfbՅ@0(znE/{= &l?Թ4K-(_NK#[ԯ SRq{:ـv XttrwܙʞN 0A HfqF=Tl:E:YB뤍.&2^ @}u* !^KۤyWs ٌ\Jr1ݬfn`|A5Z^k5uT$'^~s+;1zm}D~(ʿ1V޵;޻~ȺZTN?ZGHccWRSRDP4xrZۑ @ݴ|c sNwxrEזɗq jd%Uʅ;*CqF? N:\yݖ u]; +bgw:@'Һkz YM[q8_Ww$ 9cf6AgSek]ʬZI +lh-WלgR +: YQ CR0;WX5C05|Ѿ,DgC]?9zBu5뤑ʿX{m;k*u+tD~>̯fqjJ۠I#wܿ3Lh=eYFf;SñѕȪhw L?OaXl:8`%Ҷ م'dr|]|uQ: +^әE4=Cz{oVk+ +zzu߯ӋM×]Oeu+=l6cK,5 PW+m6mi`po֎Ή4|Džy{U}t];A@!} [%jC\=GJ1-*Wh*b +1v/yîE(Ǣҽ,(+N0· w__mrD=H-qVv=]^J/"kumô􈈈 DDDŴmXcԬO!SXj/X@|u=e jV%%^B-eaA}KFMMaX^^s'TՇR*"" 5S1Ƶ9 +Տ 0ןi+ʮ#UHBZ@tbIU[3¿heued/ZMMl6޵njYUKgN Ko^k)/},C%:I$N Io5jǡN(Pmu6^X{ Xnl1 \{|{[ +]uQ66 V+M4SJtX&ʃ.;:0.ǪİXb6w;ahKX˞kzi;޵rsXPޟpSCt:>`1 k11]T(D:C{{1fUksyfEucW;gC3\|UOurTt,]Y_4-~ +]ի06·GDؘY{zPB}P`Omlphk+[JXN>CKL 9TzASd3豈SfŹUϵJ(#$S'V\*hQXW(=hwofv*QU?R!Sy-voUQqaS7i)Wu<=oqծǹKYz!k ÷v=j]EDNK-eiMT36agr~]UN-\kT +>և@]}lt^PzK7@4ݏ|f<|7js J*:a{y #x7BeB"Y7CX=8˒k J'6kwywY(qk#LT~w'ƫF\=òd7%3u/C=WHY mwzOi\YrjUڷ̻w;zq*2Zs®HoaA>[ù$ 3Ug^VZ,@:O,g^:-dúnek=r,^G]zLdW}bJI ֏}c(t, @$ilk WADPG멕^)%Y KYj @v*O璬~ƸxuZw:'29s%+\̵;*P*uzz/nf6X+uNl[N‚S؃zL~GJl7e2qk ~@&x:qų +>uշ@>rTdv>v#ylzVKgWl64 p/k֮:+78g䛩U#]5uE|~FM)ɭcET=_{ɞWj܇ZFP,Lo)Ϲnb\ư9Dk-GJS Id-T̔5GU/ <91ɵ+$TzE7QB7~VWW%6(v+uРO#fH!Z~K](̬a \Kt76>Ms|~7+ kDܱnmTL1/ê U5#GB {oDNCl"]'Z܉u|G-(Q޿;6Jzydy6;[a[luTXF kVvxZjc^)%xc]P yYWƴ;6#)lP;׽|dkddg}CZ +[TtǤ}}RqQ"mu9 t[Kղ}zbb5V%fM]^7^tߗᓼevV\MꚞH{4u6q":+ ]Mw@.U~/g{~Or'KuaS~hO[TdAQ,-b x&5X e?Rj}uf\McۼJ+^Jlp}~rMqR<5u +Hz޳,Cp +^Kʘ°J³#mל2l,񬨫Wc/zC'8n;#2dEx=WV669fgddcqWN5w2>mrr֬( efX*½>^bxb`:WՋrmoSh@kP׿ۼXyw+]SPɏeV35lvUK(mhGc:۩ID +rQЭtc [(YjvqVJخZיm^;aߋgfM}V݉o_NiǸSz]n\εڬm4յAbǩZCk{yd? ؅}ٰARq`vH={/erb|:δd+b=l>_Gb/nF 5`dJT.=ԺOOflU6=Z=1r, +pT.32+G[  26jЫ0 +1ߕ +{D7m6Gǰ<'_!qVcVb +ZEO[wgZ+,c +=(`#[; 6y+C%Yj(d^[xzԟ=mXǷ;lu=Oc-rm܏=|BcTCha Q}~_Lڤ8Z売nbF#^^sᑋVU Szgep#dGOa20rԤQV`WwtsB/)Mw9SƱ.㥖ukOko^$v^0sƫ"ĺ* ] Su#9N;(K)`z Qvahɨqc YJ י=2"F[AS@󒕖_hK + =jּ"")FR@8j5ML^WƳ'DyՇF+- z]>2jjFKFeyy|Ζ#^5ڍFRFR)j5FQGj0ŶnvDŽߜԬJyDj5F5+)Ԭ֣Qj5Dj5+)Jj5jV"" 'R/úSĆ[CGb5$o6o )mąߦ&s)v]5)ſrYzClj.C#!rzwԎ׈>bdݑ~EvckSX +fnbݑem PK:Q+ [>2W-nvVn=kV'2 ӝϻ¿&G5VUب*2MZFFè|&yeWMwv"k +zuo~RsrƲWΫk+9:z;kr32 +ZN@μ 㰲2iTfNH ,Gn vY+Ǫkĭ^zPuYX[jҌtI?P2^5v|=̺뺺I]} Q=7.Uyj;RXoDwV*|gčy+q[T5Q'D@||L:1& +@^:.u{{B"Ger.#WY [;֏y-Ǝ|V4Oj*bCpcrKqnx~׭{ĤDOB:Q~c'Dno3'*álަyC;}i=)o6;]FrJ:lu{e|}yCk"%7+5f7{,t-kz^R ggMkOMi,^]Q^&^ ɜ,?k)kx~^MrXYabS23IJc/5!x:.A`:ξ'ٌP???h|WrT~{fk|#]cV l9noI6^Z,ιOPe +zk.6cژ=aۨhFϩ=36|L6]cIVJucMrtAv15ow,ק㖦m܇v?[|- ]:Zq|}b0Ͷx$- YzFj̷!oؾ2RH$lnJ{"N$J[EG<3_F^d|n#6PYs\֒JeV֏nğ{.7H/f5N lN7v9ҷH;[fW518lWX$NEq5f n QKzk{~JS+$ӌ1 b3+)ҍɟg1V -!}x^myi.ɠmmt#D/E[O+rʊnY.=n$u}FJX%k}gR~J$-ž5aCL65'FGXz`7iMt^א.7kS}᪆SXZW=xKkꮴk1Y.@ +Vb@a%cՓgv5n jm_#]s>Yev]c [nt;_$F+nZQv{Ҵeg^Hu7fqh־9ʢP`%NKl{#3}ǡыrxaOߗ*B+~Ld.p\ @d;Ó'p }d0 +:>ҭD&ޫ>sU}cz\5vOh+kn!R΍Ͱx#zߑbB/7UUv`OԽ^z=[޾#~U ͱj^XY:>swSO[}?*|kCEa]6ECe֯y$o[ўy|f6-6-(J]'@Q؟)#[sMy=(#lR:JHa4 &/ e dTMz|C'ˠcՖ*!# 5{Zi@A<7z9+mw`{Mj٫9>fZ*(Uy )6E+lq*VƷv~Zd9' k>O8bz1-_7ǶE…+egfx/ѿv&Vin` ՘ *?捞^mV]RZX]]l)  hk<*ZcuUo}Ps {SE\g c=D31t!@^3I8M7Th-66FQ6Cca.Bѻ+Vb(}Ȯ>ysѐ(ڃ!XK1 6 >msKxy+Ǹvll EJagYϕxtZ)qYbl݁<9XG^ʮ!]mv5`@SnéhV,k:I~}D{EVWSUsu+N-o}xeVj +t^IA^Z>o&5ќ˦}nS w=͓O+j:=,>} }Y<~/#u*=އjyo~d ,C7W%-E[`bǨRTH^wz^Inj+F1ezN۪ee:C|;Yo)콹| U]ww<v޴$g+7[c[iF(\+TR;:?3acBC?u<ަo #_صJ0AAt=}e_3f-u +u=;'9ɦ؜(PT>\f9l +50j:U„_{]G(8Kqϑ5c;YoP:v{7R{>[+b-iҭ噶NթõgKQU + Gdsˉ|L.-U^'Y@ +go[^Cw%2qʩC#VSFٗ`ݔϊW c"Hv |̼rW h *QZ+oggkCB\k-f=8j܂Gr4G~L7l\PB(@׮Υ;_B:-<+ag#j`R4:@#ZN +(e7Ht*I.sv\ָ)V )ח$vi}[hFCD4d +q8O O_X=IGiosej>c/mv^L,Y(D𓾶J7QA3mVe`H ѐVF=ua$-nYJL>?*Sm=+u!QC^Z8OmwU;Pl ZԘ{5s mZ +Ws!x;̲e*D,>i= + =ߞy3>O1nn5 +ܔ#;]׺yya;{r|ZPh57cV+vƯASVڡ6^@55;Y^+I)̑}Udbk\`Ee iG\8rKxk^~k9SW\r~Q]S= Puuh. kM7 +|"!ѐuبzkُm.zg-/(m57%`l0A;>eNUYw؋*Y-2O O^0lz_uM ]o]2jŻkx:(Ҿ`;|gTUWnKIoz=; -yje#zݝ@u3y<^)91Q,RʬWbj{A '? NRfe[Z2WD g:$R+~2ۭCYX +**5iT ~!]VV<6>M]'8\a5 r o&ypKYƦZ mWW zxʻ'ś(!:Nw&5~Ǧ>-ډefXD.}I7 c/֨o)q m9 cUm%]@>k=O +*k5V+[ +w +;ϟiNn +/r ] %b""(Hpb"""""""""""""%v;2V"Sc#lJDDDDDJJDDDDDDD:ӱˢQ =Jz>FV""" 03yz{m(\UX~@-܀ϩD9GI)/*k5_.>]2j*/WbrP`G{z:[MKsY)pӭV}NoiEkpLկM A/2'/m5du5=7螸ܮ>]Ú =6~@w2CL|+B)4[@^rwHQ%{mpz + mYԷUU#!??Ԙ/mt9Fa6C6T)S⪭@SVnHSj["8'RH",$ +Anڗ+CgJ^@ʷA,6lynxl%Կ? =ji`2$'<|> m +{|6L|􍉰r`*%Us<;<_[jZyδw-Kju`u{=h檺䡫~ʆ:=>:2FPS?ټ|n#*y&~$9 cӷf18[q xL[Um'gwܙqy mʆFї~@< +F&zS؟ {OTq͵gFDszT] uM*o<ՋnMY5P cPGI$㽃NI֪!~`^|X+ +~[O|N/5dYV2y2c25cqLlVV?8 ϸ^W7V%V:>gL'6QB`, 4 m*1m‚hh,_$e+0jut6OsI^D؉ԯ^566 VgI-P,փhdY}x}aE,i'[sw4:gZ(ȷO`~ՁVȩC5[;QG`<ɬ\ˬZZmY]Հ#OR:hΞ&|̥ѳineE"TB{u7M\ .BT'BԬĐC幜n%U !QoB{N[OןisX\뮶jKv ﷩BxK!$G+Ux%[DK0y}XX }&}\sruXVBQ&O]ъ3j!Ha@PI'@Jaetv( Rb8snAVa]lTu1ހ>e*cMldRXl0Dhq/f sŒ+f=~~AG/؊:9JtGicdʥ,fFZԮ[ T{C} NVғGq6;5 캔=KִXlO~I yV20#A=>FFK͞c*:ɩJ@y3[oZX:NbNScʖVeetH:2ʖ*AAQKxG[ +akw/}`5 frT%KaA_@.[ ~0yJ[ӭA =si|*"f>Ll.r|=vt jٔ|<#^*v}&@L;ơL L&'p\mUBQpLg!bqr҇bsteN[G)#s zjj]@Tmh>e{G.uJWYd3}/w=vj!YAo)-~o +{62\,Ƶv>sր3 lR ץ-oh IJ'Ϊ?@m=@lyMDR[C _Ni<rXUW)^PChtdV5t"p ^R'fedwCtŀAq_!8Vgo[އr|ԙ汲Jo_kd 7WIKk6jPX==z`%"""5q\UD%y[Y`Ֆ= 7)Z|Ϊ1ʼYZ݈T_w2ڸ(kmF *@I:: I~)~]m{(ml?A+Y#ⰺ%@ӭyVMsy  85uaO_br lF5bJ$zkr/#_!9uJI I*Sϕߐjڔ LT)Pzjʹ+-UaMB|ߣ)'8FR)`Hވ= ʇ'Ç#ɵK{݁SI/W۬ZS~]@wלΧñ~ȃVna c_r4]q+['ң: +F>RC+&3] ~`3=eW~@pYtccib:6mX {Vk4EX*ձLDs8۸2 CtFՀ =ޭz~U8a}f+V^p,7 ̅g-JC *_wa9YS\l@?Hn}ÅWm[u!]~c2/>/URtJ={|6f=tڮ /3vr8}螞7Y[U0d$wohh8n-YVW67S'Uiz[w[﯄nx8G[o[P{X#Z~}9w&k\:k +:cR(~px|Vjcp%tkV$}ÆQ{rS_u( +ի,Ǥ5Ι5'vS&ĻL,ylʶeAk].Bz&2kKP]C)6 y,td^lX3tȬr3ۥ'/P lL7ԻԤ7nmL.>l.,v+QJ\ .Q:Lm_p[yZ=|V;rf>1 ^½} +>uA/)N/ EsBrk -16} +Iߠͧz;ҋlE;`:0=*/ <<5fֆN¦nRf꯯u6>5:+&F;+|}uw"]qk߈^%do5?f9U[E\c@{Y:nd?Zkx$m@b܆?&zNn m!Ծ 8f8SkeIOègΧn)ϺAdAԠGm7ʰt/nI@]6H 'vߗi`cb]M[bUhw$ &:K٩%HA{9!qCkW+X+a>zmw&/Ũ(ʪ]z=YI{29W'NC֥z,|¾˹^7e'ȣBЌw?Dg m0^QhB}/͔t -+lږq`)QoDjyܚr_&@(kTT og?IfW8XҷQHuC0~^%dKdu+0W:B7Gpc crb396NYͪ6ZYK"/3@ɘeR'v=$vlw2DA /[*@$9g. X VVafc_N5|uyXRzRcv0:wݧSy-dUFGkX5Q|d\_ٞ>k:}X3:ܮ;#'JW*)s $^}%\U*yRҁH>@GrEJnY(S*Hyj,Ȫz-T;׼@ppn|(^ZO | +=-|4u 7E!հO#.6 6#]eZ}K6ػߍk=^wʋZ/v5-)euJ6 ʊF?Aͦ"" -d4FWRԩkPƤ//gfbdSmHճ.4{vR}%u)$l T(@;xkdžކ:|t_D]ZչwH=ԡ+,ʠ;bg_YBvOhjgjNoE%W[ߙ, +A S? |P'HȽ!?̀5-zR DH5Jl>`y#*0]~=v$5*nwNqbNEUU Xu}}zI5̊ͼ[lfn{X>J +++1؉q&9{S&5a)H;=Ⱥ9rߑO}cT=Emk_n^-6QƭK{mw*"""""""""""""""""""""""""""""""""""""""""""" "ry +3EʢU<2%~ݴ?FEY+d ]FPF f>-SJH5R {gy;ȷ$+ֶתЅ]>mmה.n-Z2 X!4^}>I;7@mA MFx>da`]u=FZX5գݽge>ΧܬR*#1~[_r?C܏7:܏m̧ٕr?*9oُ^f=YUoG_r+h?Wܭ?D}ܯ}ܯ?D}ܯ~rƏ_q+h?WܭKi_ĿƏĿƔ=_mKiQ!So_Go_J}O[ҿg)/c}Ŀٔ<qgٕ=_ܬC1vYe>׿ҭC1z[=XUoG`s}*0yg`sgoe>+sg+qgʭ~*0=V[V~W_r2g=_ܬ}V~>Χܬ}Oz܏oGcq?>W+s^Wq#2?Q!SoGcq#0ym~܏ʎz[Q!SoGe:MƏĿƕ9PWoG>V?[4oW~4wWҟ +wWҟ +wWҿg+~~~[y(9+u>o_Jy>ou~oOJ}>ϧ-Kh>q/@psiA +7?ƕ>q/i5ئeR@!Kt{vJDw%o6+Y{ ZR?'['E=C_~E\br jt?F!L011C7ldz}N{.j|k>@_{^uqgwZWOHOOo{Lh81V Z*#9zA3ߚq5*5bOeQL3ZNNf"@Ec־Uv2 n.B.>ႀH%[o-Hhf&,mo gJWu-m.4wM6q#y?m/yZ˻,?kyg|nJJ[BUS@nbMZ#eoC!z;kfFEy5euVR<#`s;7Zΰ5":>{M ;,k,Q='[Zje+P =RN"j~?ۿ5&&G=peCE`< ֶ`v7{z%^Cy*͂:<s[`fV&JfRv荂6;ȵ^SpPQPQ)1N)*fPI]fRǑܴru)h;6]]$ZS.9X'oϫq=[!Ig^Cp#byUܮ岽@L^?x$pT '- TIܷ eV*l=6'hܷT]n;U 7Q~!w@y\XV]u@|>Bf@G)_?(Ss+)1f +y 'TlJ12­II',]C l}<+̮ˬ$az}rߖ*ԩdꭼבyL[*1@Ugm3ҠS-%bZ[6׷i}y(G?DV PT#}Lˀ8;2J4J+K|Z2@O%O6ʬjgtPrv: A{IXod?ImJ(5;h|YIcOaEJr mQ$^GXeJfЋ<+\O+7/M5xsDLС esG܄Vq7 [ty n|V~Q]&~Z3RΣo/[w&?E=-1ZQl6NݦgWFW" 9W(+o@i&__U↯h۽Z|>6]8׽O5'Qv?GyeYmTmuRU͎W+eyT᰺ + UG|`Ż#í^[#vQeVڽ)#cc],\TBkڱz;O)2t hS3T5rJu[7e')=9rW+J^ZXa(@M=ܦħFk^Jo$߷is9cB+)H@mht|n?3zק}LEȧVEc@7tʘ|4,|#eWK%il$zo!ۼ^!3 !.;#8*mNuzK,ycQfv=#} ~zy% AIR~cY8SST@R}~9ߔ؈kZõ 񧟷#=tXg*mxJF{r~]vfJ+N"x{8r~y%uxޗR݌?NW+/*]rZ]rw%nJ1BRj7TFaaKkf!@;> bY[S[UW>:-y;ml˰UJ뾒upAaܷ!xk57Ybֿb;n_N[{TtuV[T0FeCMk;v}6;O沲!hʲ` +!B~S䒇Ūwu;/覂ORyLmm2C$]&+USk&b 5{y^[WUJcVYv@9ߏщІRg#Z֎ƻ,~G/#;'ox\lhwSz MՉ5oz#n[dJq땎瑷.|b]QVc?c}W&uBTS-pVV.u=ԪwZ/5u2hŴ +m[Azw#osrՄ)Se~H{[\w|BctK^]l@M}k;l󄩾ca7ɳx>{[?ဏjш=2ip}@ +ߍI95 XR`C5աƵ"xΦض`#~# /%^VX[#A@,;۹Wq5 +@u:c\_I%]HYw={<ۋko5xwVDmY{cMU[R@IIJW! +|k/6 =g @އi[WU/JQ i澣B^ՙ( +C׈6|x?|DX7ͭ7bG2),|7E-C} nk+'%jŦ˔St R}j.UaH3YS^~W@5V-BH=<YZ +j@Ip,!C{v>YZ'R,}*t1n+EYܭ>q4Pŭz uH)~6{&\AFEnXkG빬{1vw9^MV.E[$;Ii8s++e.:Op7Oq2*5+~{]2C70FС:d.:Hw^̄|+(LGQ0xb}lq2Qz9$0{$k_%U#"/H=^~s<,NF}bR}],BʩV":[:zWW/JnKPNlyL>SnC?L4i\hz&GW幋ʦe.Yu5g}}}.U/Uu!>|v6+U35$&ze?15tr1Ki됹  ֽ5vN6Mօ!Pe׸ zd%+P:da>IaGv޷ʿ<+űx?JI'S6%qٹ=L}Ѧ:T߶ϔg2.ffr'j:{-dyv'JPub}\*QYӓژ==zZJH{Kp:zUH.U<~EoGUNz}2?ȧϷ!7Wu4tl@bAC|DĿ7ŮR.ĬRUOr;u6xouuUzF's²G:X]]-0Gydr?.jRv}vm.Ǣ'&]$>i===ƶj*U>YynUBg"ڑHv弪d[<׍kxW=@ +W[-`m"Ŵ0UfF)RqJϟ@׺7{=HU9|ڇMu F$Jـp OVBW(vGAOa<NMxeu[Jtj,AW~Z66Jrkv>;%VSU{GHK 7R:ABdp7cZݐn@O~h12{j]mIT нo`tw&9|KEN;XK3.BL5"^,BtN1'JXŷxlzly>qꡨauaP \7k~ÊdPi{U <>UExFr D.W$ }rC9e`X֑S?C!P5R|s[`Ұ/I`־QnH-Ogм;r4g>N7˯?IlvXy Ț +!MCm_dљ6ecUsфgTV:='X.R=5Ymy@mD ΃yY[KWS{Yŋ,Z{@沾Kuݏo_InMXe,Sj `H=k#nPLFS7%Wmt'c=\v6V? -|Q ^-2/〬cK!];>S/W; +Տal4YҠ=2}f?7 ׋f1 X\tKo$OLrv)hvP:W`mv?rncae65]4](nz ԙ#]JloF(л?);Ue Vm)9,ޒXV:ЭP;zyn[eVm"kjJ뷺;)`^H"I>@ N~fUQ\NvGI&bpX8 +l +}v{@_qs J{LD9o;vkaBaHK0?_aa% +u {o 2ZF1l+)If]@X2`[q7]^]ef>Go./R 6?oOecuTq:mRB^Ń=GۏjXj`uhk`]Jo컨+ğ +LClv:S_"[I{UGN[w:Z=JjWSS& X"ifJ\cG'^g{ ܩ=Fy26Fc\__G.n;{ʎPwL@2!۩zPy_2OCK TviM)_YOXJo؂(`ᄭkL~Cg":8VzCG[Rv;.*-=) + >z՟QA0?F(t:>[eˡ1Zo 6ZF7l !QU"ւ7>[Hc:c0v;;|4>391n6ƽwO}/,O.g#(c7UYܖG,GqFj](uu*<|=u圿'l +dּ({ʁ )@Q?ɶDD Udq_d._Ug'}:ֽP<-Ō=V1P y>3 {Q>fSQM b)̏xlK&L̒/Y#h4G.0ĬV v.l{Kff;NvJ՚lQ`%{#%G30[[rC(=/ wR}r{H[<: ř[:n{OO4#/]2PHXA%ܡo/W{7|b%:ȉ$O9sJ+X~?$go]y 3*#dPH S"+E'v6-E +)!^5%@C`hd6@ɦdG{ Bu#8ˢqA@@!?=]/yR%w)]{O3SztK-+?gͲ" (N{jiݰRz|/ 8|N!.l= *]ysZxlzlJmڧ3a-CG;<ǟ5dL|eKYY_`}ihoC}4OHƇ.On<5.<݀v_ +Uo?o26'tky#^+WtY4B9 uyԿ^{<[v[ #ڱϮb/Hȇ\͟=kߑUhC0zUi8ZIun*~wH 3v>7r9`⮉c1&!znMٮկ-뾾{g_{v:sc>dyY=Rry42z*lo%ߪ(#u t̎eJxWufFt|fj鬷n#+1aԮ0i1)ug%i +*6}s0[ 18*+verjwu.9iWgnBF|̮5۾vJ;K'S90Ec3~Ke~.``d%]@-k=L/5z[ޯ +$:m6Zð[;62Za]7(6tF>G#]o6ڊ{{/QrB.zR +^lY]Hux_cqu6Y6ir_mp~bo<-irM +r3GVZLO^g]g)+]R*]ty~rR2cZ&z +v73{%>Im;_N%5ّÜƹ͌ GKtɲ߱*l\#.GI=lK z}>)Y U7Ge:1-~1[@v=5(I lI3RZ:ayl&U=9S+V^=g}fev7MUX[ }ɗf^nV[kn=>#uՇn.j[14`A8n#83b: iAvGؼ]bxiZª=Σ3,ޫ(j:_GPzG@ ؙ+K7pވ3cYa>8 3;uy z88ћԪR+?W(,oLg16Ȉ,C+#`ٮ,yacؙ8n/c]]_;7 <1͗UcS֬{yw }b_ :vFֵ`WQaQ '01OXEg׷,qXKA #ٮ2.%A ח&nV}ibzu7<0IjBT+Z) O%8 %Jǰ9;Y~-V3K2$veq}\YN-(ZaZ yhcO;=n|*K,kES=JvSȭl]g8Y1)RjEj;>%(FeVwávkRv{feSchZ۫h;{}3{-ăQQRXֵ n.p/ǯ$Ouי'cdӂ+ZoJw8k.ťَjՉ?I"{aqxwQƢ yyL7~f񬾫@~thsg +:Vė*G[݋1ec|gבb kvb‹,jUPFO\:+3%tF?'OV]}-#>iڞy|9vN Z~Į.E>57GI^Go«´lGfR;A)/\kBmK0eȷ!-JCF>@O9_ ](Um[1@FQ$mA>`|O~-!j&dUr5Ȑ}Gxn(f ick [z}^R˸$hk饐 +vM 2kW;Of^E=+B Y#ijm,lpAv؃j^=fP;á`l5Ƿq/kk#DZ]b ~)o]'b>X:zFN#( ,@g^S)4]SN[לibJuu4}p]6;@+t qmkN߲&35[>ťҎ۫~!O#+*[ ~6t1mڑkS;9X*j8 Ga>ulz0x qYjkx]Պf P}='T]i v.vtzɹ {&5jzzIשN(k,-fgE*Sk~?Ldq5_ev+2=Jʬ+hѓבvAC+"gqإ\Vǡ7 PTō5ņdo]AΚ<=5cQeN:'}fu^Gz:tTv8U1|Wgd 536Z*Oc$~8ڼrn +Kd\{Y`w.X@4fe,j;^w5=-9JX+) G?YyvXhvK<='0ȷ!nuTaoyc9Ec3-vbŋ W+pȻt+:'rbEcVxտKe/K@|{Uܵo{[@| aYEV?k[cJ5=x|7ǵSک~ffq;댿dy_譪CA >l=ӥǩN^Gdo̼J08tn+fU'zVc=ޟߢLzH⻯]RJ5BR.=쥖frĖf$v=<%} [Yux{ @#g@lnCF1T9Jﰚt] 4v; 1i(Ҋ5k^ 8EzFvu7/N%i鱫6WEXD7ď8֥њ]|=[Y®jՍZun4ߤ>}bٙt;G[˓(j@wѸ[uvR!{TkC{xYVb&! +kE:t7=KŶ+PΧцFyJ[}M]LMhyIG-{ +Tր'g硳=&l, –'{נ޻|l̛q*ki1k}Vf{G}zl5YCѰ:R6} /|l֯}zT;"Xw Oirr~F鿧Ur;ԂU ׬6]w +΀P5e$'cz}2̟khlƭ/ejkkgčInL[+` +;R3-OJoCgx>Y'r GP$ f] 3+E̬Tf:T'˶ɮ@'HIF$1wg-c&^+Gc۱=xa{CN}U]7TB |f%^a]pT3W?PS;w/jՔvB)fW=)~b3=¶E5:fI8-Bܫ*;fUQܓj*QfeVe:3$o Tb)zεȞ?<^VkKI#cy+6Z, +-Xz2~#̯ %m묅;b~D9? O-gRmՓ+ kg47YC5\r5o߹ô؆`hwLl~K,rI +v@>G>yJ9/q*{ +=|yvw(ϩU;)uJܷ׼WC)U"QBCU$Ҧ5jSkRPe7]JkRY_#lo|JhBaX6N~sl3-kTP%@}e x5@S4kZo8J)Kee1U0ɟpyX~smr +ֻ۴t (rGAq2m*2Y#.龬ٴTur A?͕~cud.z!,J"c;M5x?,u*нOo7?dȸ,dFH`A5nn@PvCc@|<mMyyѯ) &7%?5ڼKHP@$WnK_<YY]05ԅʱ=ǿe1 {'yjɮj, -tƹf{;b۲*7V}T.NC3 cN^}kj+\Dl`Z:pԮCmpX~xz,9}['6r|"\|0({}aFn`؉\'p8>d,~{oQ)5L~߿s?iyiǯ4KPzAַ7#yPgpvR]$xSBk1$].[h# A#XܿM}VR} +=zUQ~ zuӧڶcg} 1y|g0+~$/lʹ :Dli eV VݘtO|\aecP1ت#[d{KWf̳cK):cjzKTJw ٻw0121YN?!(Cia[lbwu A Pz]w@<գci#0ֺOI֞Sc#o[;w䛙ԡRw?dkC{/°né=kE0H^WwQP:#zuB\itR_%:޷&y5骥6r":rOsºr\}*]:kGF=Q^k +<(y<`_:7o{>}Wлc_feqɳu=ʲvƾZyv/B_CTo$!$0OPV$}s6E!e^ù+ț[KYBc=쪺Ztf޶WR9WEB [;޵f'#E~F-*#cc׶䥙' v:=f*UwbN7jebZ +#`o`̏*yV廔}Ҳ+篢\e;2vor({Jﴷp`D*J(zʖ9_8^Rj]-&Tw0 F vw t%>w0F5[L6Ȉ,F-~ _+7ʊ'hRm@WyWtYNEvcƾdze{5?Ȳ-XǮzp_w`7kA j\ZZ[Rηg$tֻ{{Ge{M>]VB =~l2x ^Ki5YccX@9%W<~}os# _EU}kWamKf-uUM`If**Gs܎[1R]cF'R4~?ԒO@1954F7C+R*pXv<č{l\vEft7Sگg'֔5; =t3gk]:EG;VGUw/>˞K'u+h}hycю-^,{7J/r; W +xN0aqҕc$+wL/b}_\jzGqb%۠0}W]z[}׭1 `?e\+8/,/ׯ 3ύL`sYϵZC^i^^[#3pٿ8|ų˫~ѯ6؉}1}Oef]xJB֏`?_ȳR&m2Sa޻M +V]*:n} S]Ҥ{;8d"x6)JF/K-ŤV>JSȞWz0õK| nnOMRʣ0zO~NЖAHl8 V-+V^w`pLZӓ\ZRYgc4|ǵ/}ƫEgk G,@?brbKeE,`OHu#e~^5-9 {:AÍ׋*Y{[?HDz|t, A U ,w>'3d1,h},hd]Zԫt=-jX:IPJ1%;6dfŒw"@^o~ruo Y:IBk5w E]ٗϱGIn(LY$y" ;y|fW OPM[B6#FTNrFW[ԴIUjPlKSZF5AvQJz#[֥CSP Ks-#UubW]5-ߡj;J}ZޡZQǨJn;yܡ2.O~w/b7PEʡf޼4/~esO!d]f=!-"N[moxGNG /+DlT30$ v?a2t~uy׬[\l|ѓaYG^u0f9_ٌfZXu^z-d zTly+j%_ڙ +29;#[w1x2zup+wCٌ|s][gr:~d=ӽvӓes[+j-F܁>Ry)ҬUR麟1C91[G1,ȁR"OiSmIxA7Sۚr|d5nS4ʠȏO9%헵 4Eb̌t]6;z̜~(|Bi% +%@Ҿg&\V]kR ,<܀d>o%o'> +a`nzB?ZR3S3|ktM(a{]-MeVĬScUA &xzj8ù!OWOOZ:!yJaᗑ{e@v= +Om9CڌeȳIjU–ğ>\acv+Lq't,sGvVVGq g{,.5oCwauJQUUq\v?)W5]ZvB6ojD.>ضP4|$ *{k}d'^gV4vr.T Ι8lC9$w# W$-ʝʎ}ߖe7#`_VL:2=Wݘ/j:1֍z`·on>K|G Ml=ã +j HbXXIU$3`yWc g=?*cB.U F C~%"stƨ2*S:z՘)fFN7%ͫbjH݀ϤJŪN >g VM +[kI\ʡIGdĬ~3Y A$̿(ԡ+-ԯN`ZeuPKX -֌vRweew]FJ֥=H#D).RܧI'pcdˀ%u-=5rBu+NvJXԬ DD(#RTD"Zecr[=ex?3l;ՓRZlyjѵc>5X +?ERaP޶tG$#!v-YPWEHGS lZ+Сv7Iv5y>"+t8eL<|Y*E#_A~ӽy~ږ(`A #GH0w'7Z.(`ާc'Qz>$dPtt|ǗظTT)`>>d~ ZQ)Hԙc5ԉ׮CCz;HЇbV.6_ OJ=1LX5^I:WUA`r`i;?Q3nFG=hUT*`?Yݏ[>Ӧ##[3#ӣwkgO3Fèx[Թq+[u#tA>RV%xӳ3v/Q(L]OGs(#S{X)EW}Kǔ=]J w ;u*:įX#PX )#`\_׎m:Ic#^ے>:PLȮzB>_+Fu(Z\iiԺV5nR+=Z{ĬDDJJ=RJQ+(e zKLJh%'9?3n_ΙoWZS%+-o9t<<ԯGj[Tn +ic]/"Tƥ4%ƥt#B:@=ܯ07QkWA0V ;t}|=Wf=BZ +ԝ҅;vg+=T/QNufVe5=<_Ply^A_H*5+Sp` te Yl(NVSq%u)*;F(Dvp R("VVPAG,Lۢ"iq_4̬in@#r[*%}%orQ`2Ĩxe@nWqJjV!=Z r7xU#e7`O,3xK}a'YH ADRu)+JRnRVMJuJJ'PXM+XL2;b ԫwޘ2˄e7VS]SG-6؈iyvwt+CSd؎'hKJT;kRZw`wh*7=声$S*zXeה3u]`e{ʍ.FPH<3kǸmt~#G&ufm粝Mv&Ip#Dyc-kMcJ@|2 u}:Ԏw.A}e+R@#( >P6ꃲ501-|̇~*(Lެ~!$O,ʬȨܣy-cz<^q1ҽ-]{wf`Q*LDn<7Pau)+XI2%)J=%%QSA+-2=e7+]ySZmip_0ui5+-* t]J|B%h\ KXnT JGih;ܩߔrқ T.˶;* QPJPjP/yMtkћnce]aI#v%q0|1կoן3i^XOS  IVU{;#quӊXM 72D^ho] RuGFkfُ!+_jн[My2C7Ǹ( @}@~2$swJ0ז^m|Za +.V*|5vvԕV3 vz&'VאϷ_Y0=>Q22F]2ܯLtƠtMwe镆7jT F(pB vTOb"483v5n[]KOhiM{JpejTԤor>rnU5ywq1,S]kqM Mlj(ODixPO+M7J%:YC+rԇWM>$|>5cصf:U}3Jޟ5c[C!)*ˢb[QO.W9)WX7K!;;3߈LR(*aӶ#hzJwx^7WVƾ8f-J=Zğ2JdT@Xbz,1 +̌W{jo1~1?X2=X{e{;n +IE,vQݘdY67Mc?? zĶ ԤPrݥ77LJҢ SA2.UF2&xes鿍02W!֝@Fjn +E`(]mF++Ҭ7%jԡ;0q.)(e@ʞAR+QnTyGTP."[(yqܤrʟ</5Q#rbUOfH2w #NFV[XrAһ0yR{2*הaw`$2WR`Ndw9nR(`̚l4NࠝL1)=C1ߍ_3 n˳r>Z'L+8rtT |F*#^T|GUDB7-")tn522TGiMAǬ0WS5P%uHrJ CPVRSPDPKKm:R;$Wr_8&ZLW`PeyQR"P}0NAk4(Ը.̮(Ln7@;n<]UU@GMk_]{]:骻!~tIPG,pD*TۮM" j88̠{ʐe;i0ѸR#\ *Nv&V7MFw.Ԧ] -yipkp@Pʂ Sreږ6VPeѨ Fk][hˆ)ucP{AyJkGq|b [w]A^܉Ru)`|LoQo)|De*`ySn6舀5 OӲo=r3h:RF':CR I֎%+ϣ! ##_e:[ɷ]o!EN+k1 +H?\9 +^Hz~~=ΨVX ;]ZyL>>=~ox{~sqb~|%6:lSn>ԭY5]_Y +m]þ~~s~rX#ط!D_RW׾HV,:X@}e靏e +ئW36}ҲTHG;dU9U)"+qDP:Ab}$M:!-3 @wXRϲ8(5z~z w7ڛ67uyzWuY[ܩ*{Ȯ07lwӑzuW*I3HAaB@bFǤqQ[[al͢F@,O遙E +-zC m_km]δZ@#}{;>@}s^r_,L Z8e5'mǹo';[P/1H묲cf=Xe0C(f,bu)33joZ <\m!@zP/9EΡ԰Q!ԁ1ſה)&wc-S@+XVWW#j1<.@$]J0u kČƿ2QbVf; ON񙣑Ow{Cc^{Cr8ֺ$ mΦPXl "z2A#kQX㔣./S޽r8Evb#g_8ɵ>c鞩r^ue#G^E0$q\+ci)s)k_tu?O~D1 <:b[Gw=KsW)BD6?bp w#,ދ z޽egQB{QCktb. ,Fp7o^[Զ+b?;g6%M~Bm4OO1N=%|4'EJo]. bLvw;jhVl9t]W~]GzEfzu}{y.4wP &'Sk;#^b 9C>xuY6֚ ~OLPdP&xW]4r8ׯ5G߹:?\ȯx_7cW?e:}U bsGEZfrt񘹕j}*w.sxuH~{ X1V; W]mC5͏c+Ng/ujSj@wz Wm+bu]OK +ՔsgHr7p ZE 2w &c+ q^N7X+rt ͓]2 P/zO~FXFRkӣHs+،v5̕^ut `~3L~2qE߂R_<|Mww,'9 |+K]C>TyHvR`ApGϱޤ1ZcZT۷Olo@CR9~Ǿwdً5=U^l]I|ǷcIυu|]x~RG=4>;rt5g-ZFgZ'j-u?魹AlWdo ǩ Æ_7W}"6pq{ +j˾h&OD1M|cX2v޾-)jJG?d[ܮ\zMVyZܯAAh׽]~:<.:=d zG3~Y⌅Tz= {2I`OW1- e9oqx{)>=xVQ[PjU;GN?:7J'Ee lxv|TY˖|x)̰Y>cz|$3}n('0RoU/j^G}][j۽z>-m}֥A?GW9kv& ,+rvm &fZsڄ5dE؈\;7_ROa?ŵRV iJ4vR}M~{3O tu7g=pmu +Q (?HebbqxOe`[$y[\]"Ue(ȀR kZwpwfI@ ^ZS4/0r,6B>m߫+O MrP}-ܑ=iY|V6kTXkJ7oAMGy8aqV! }[<ᰪZT3om~{2n/ EWti~68i޺Hߐ̡Ʀ.Ũk$hnX8ZdF`~<.[}{%T2~*hl*:HS03#e{kWe;RF?,,n ҅]֔S + R_yj +O}ze).6zw{ZmjY6p QZUXϴqxSP/Cy:W,.(F,Hבeljdz@VرI<ۃ5g +ZPOǹB|0W .L u*_ c2~ )*v,>mLŦZ,ex =F[%J=Vr;DiOY하zقlJdWeUIhy{~=@.F5IZYڰ3{jxߓ^MumaY j#7U1w5 >e۴ͧ_CBH;dz|NQ-ޥA@dH[]KaRIߦIO#MxkaBX%AP2|j)wQc̏z.;nW{SJ]J#wyO(9_/)B`G9d +7Kt|zvTԺlv#J_)MSrcQvCn]Go-29:}*75VHj|}FzY^ʉY_9^]VԖ+=zPA+-IyVؔcJFu)YO(0P%ܡ0e7+(KKH4%RS6cq.;16lj~#,#\Vl?]K=ũcK Q8Z= ~hC +[C kܘLڼ':hݿmRD{NŲ<~i&]Ȯ^a^G#m+%7d,%Y\m[p|՞"m>#ĺ(fc%n-oAỵxN9kz<2y6ӍrxfUye1m9*kt%\odv <\f뫤_1owu%ʻ4E=OElBŀV]p;ek,KcTY~r@yln)A8VnY/Y_.rȪMPYʁYqREl =JđLϰf GQHN;fdQ.Iy]c*;#i-i>>Xf>QEgTąM(:I0}nue{Kau)uGj`A#3#{ H\zz[UZUчE!z߾۔T:_p}Z`|{3v:"R.z^t~]̊ygOW,RDo YER[ iDŽj[C`]{lu"d[ʫE8ڱZ :EG]@z<0>U^BQh:q؏INvEAEĴ^'ߟcSÎͲtU]^@c(nzw~e BA ʼn,I#2Fs[c%mVEkFY;=ië&5׭lטʶMR;F=?hRFY^7Y:uؑO:*)e'kԽ0`UImy>N(RH37/[j'Uz yZ 7gX +dBrrT]v=jj"-r |/'`67$ͷL[ +Zv)-^K!FAһ.߮24% +@Bb>[c=,HP*,t02y}=uqXg7*p:@e#{O*9JlRŲV +)Ix +,A[~'P==]roȼc;ܮ kzH_'ښq,z(רu' {2+I:%@'G@wyu-e~SCk@tݻfcr)eVȅa^ͭcבV\y0Ay_]M5S;3U]yGb_u`VQRHk`hE9*o ź\ |&>9mURx.\`;L+pֶZ[1yaIW$*3#U闷f`=e%PI]P>2PHԢ˷i;bTn_Ɔ/6li]+/y dbŪbuea[EkkeePG&OmjYPA*6GI=0ue٭JjL|? 13r1 XĮ>PbLWs^!=Kozv38pml7c}bm0N9ژmuة;~\JJ;0kR:;#'77#J +Ξ7J/˭[34t#[m}=%xUj7t]_,n qmIJ[XVF~~]U8-] +Léha; +hddUyL|i][j5G}lvR;#+k0?V<,|]^tMhueqxrR-EݺB2&Mc*RL'߼ۓ$RƵОH,wgvMEWkEw'm}VNmwI#^u=;:s!i3"κ`"5OŬ_#RlH'{f~ +dTInQ7đ'H>z:_kvYY}YPkܒ3Lר&^}9Y?#o fō5W_I=N>1oX_fhI '?KV|@qmccz,,6=C^D^3'"l 1vteށרS+ .ͮq*fmܱ=aE<2љE'1Du):At5=x|;Ũ/RYb!If_cd`E h{# )ea'yw[p`<e]\8Kk/* K?Rd%lUMzWZGr]Smn8#̤/04sZz4;Le3|]Mwmo~S1o+>+Y^׫`H>c~^QR-򏓲آW-A'ƁCq(F!׼ ^[gWA*UHqÒ<=Lu>/Et`:R[f.>E\MVZ_փ܍cl\Bļ)a۩]{z+iA }ӯsae՛uT[B*mY @>Ec28XulM,uw|6Nx?o`1A"~3M^'+a;; +N&e5v|+`v$hW~ǃ'쇴1tm;?k+{Ywe`H֏}ij +:M ^  sۼ0TJyR%%5*F庂;@#q[+J)wx(ϰɲU~z#)m|mIj۫~z#R MAuP%4xԮhK5]JhԯH( A@S*i]v2˵KɳDD52 _?\퓓NlW5kbu2܌|ӄEξvh5 g6^.FJ,.V̞1nl[Fag0wȯ1QTf}DrgZ1FHW_ahv񙢬rE/Ue6{+V@ב}jrnb£ԙ.K1 +ƧYPk|k˅6F܌!g?ba6CYyzWLn'I7-nPթy`z[u,Hd@7˯ v4 @,Gx[k~:=0:[J^ ^1=l{.p=`~ *bOOeOPe b`Nܻ@OAߵ- ct< zc#/5EUU'[R~..]=+s5I/K?Qs9xl%$$>ԘxPuY|`{|m٥)*u!t;޵I,Xz yncqZtIfeSA2}r0 7aRj:tO((ܤQ+( @$ʝ0#R40i@"TF=V iw.2~/wM" 4#?o1:GGved=YU('Ig3ƯKYfzրK859/W3%]G{晰h [{?qA*=DmteYmVh6}ywț"P,ZFK ޽=e\O}t=gظ[֝ Sp]Mo껚 |J·/F4͡iۨ}_Cb74̞;BXŪxō 'zVH?H.{m丷6ZD'.://Je׸O[w>g2è6aV v#ex~]Ho uy0 }&NM)W7C\]G`,:v=uNj^ȯQU4mn3Wu6{7ў8Y+bV=dfRn2Gb-˯_O+>C~v%h6{z#b7}hR)Żv_jqk}/' +dR,+UԹF 0-#'VzH{ ~'fD`;Z5Gzzتg#G6SFWWtbPMXaWO"`Epۂ-|ݓ>w1#Oizm!@Oo 19[ +Π;)xo!u*Y|K]nX=Xhl 7Ur@$uYiPҡBX@;=#:;ҞZ2ޕR w)Iab%zJhʨP+%}#qCP107/SOYBݥ:|23;N缸JnVPzS}A'_6hiV]9Wh(NJ+.̪@݇|^' ]ve{#ómxlmzl F,[6i]UC}=ىܝVb']j;dmF/x{D`6ĩ/뉃WA +Դ֥@a g0͞" C噝  B1VWRKDIyB#J+))]JIܦGre P4w^;WQ*D @%ڍ*DqԧLyGC;Jk[*!VWPLKq)+)*"7+.(7,l O821l5,dw2PZ)J]nR7_9YC)+]yl V; iq(GyOYP4aϔw--+ӡ+)Q5\%OxܷRܧL#[MJkPFBƠhR5[ʃ*|SrTJzJjTJQ^q(D]k (ԩ%Pn*[2hM G_D]cP-E`ZfPu3ҼrA[ Cm/Z\Uֶ[`2{^gv,EDIPI6ZlzdKqjNc͗՟UXUȬ[ +Hnd5}dGUk*t Hײ[ fU A]}$I\*vwq-$M%W"Y^e>G=?H)׳ʆNɭlCaH#ce`ef75}tv }= ^hk &+1}t7d1.Iy8lזH:8&?-䅺>RxWy5wu؞M޵6|c =pV&?)Pbk:c }K{ƦPyvvE-MpTaeИxTH̪<ЗqhDje>Oei羴/L O'?xo6k/H?P9v6[YCsRtkO +xLw+}@2ϔ1ߎƽK)Eo{aQ{v[ D[EȵHQ|*>Fc׌"N խQe#DG1 + +FA^]cONt/W[릴cESϸKצ 66 xC_OZ1^QvN\Ʀ81zY| +L:Fk.Ŵz+%@* :Ԫ`[uHsYCK9cZwtwߞv>-X+zThw%nī$b+w{e J6=#`=O*qz=llJp֩ҡA?z=)iR V]t|>[v%76VWȲG~'Hֺ:%%bWRJ(Pc[p).%5(g:Oᩦ Y͟[ +(OyICe7.2VV7#l\ +&&_+˳(f:Qzy?,J#A݃_ؼ^P[mH#o{;MUNOx"PLnLdTN#g4LP%Prh>p{KK(NfTJO9pRMDopNI];yJyʆ&PJX&7PħNbVPAO:69,-6Ȉ |1@7+).P%OiH$kwGW + +KxXeع%w*>zIR5]`LoZ*רmK(Y?!xf7On>>ǖFc{ OY̏G/k0˸)W Nee J뼡efTƷ(j5V%bR% DJDO8"PʓUL22V#q*eK M"  __Vc]-DeI&RVPġޥw*;KeI^;Hm>M}}^_TZ\x,7u +_s>1rBnmOI\Hk]?AGN0Ĩ2*;>s.E.wH©ǪJI`{R1u-=ʓ,ޣp;+A1YXYYC{JXSTA*uJr)+(crVRVy-6 O_Vx#R7+)DMDteze|#q +5SRc P%e5C*;*NĴKBrjP[2jԮ0O9pJ8ܮ 5))+F=e Gj%DF*2)-oRT/!2?}P1$ġ D]Wq)VP򲛕%@t.+({jV"TJK"VPԧe%`y˥pP  JƷ(JGDn%KLe"hjz˽%nyƗe<""!2|$iB5) /x֥w(F4eZ@)]G͕{ޣ{"P! Jop;F7]iPe(;Jq)7X&[]7(eDiQۼ+(ecz2R7WpLy`+ee[ISGvY;ʱOK~Aks]a<4O>>vOcJ?m7_oc}?oq?8(xpڱ[={㹿ZOrs[k}.N7Wq~r?Tqq~\`sqRߐsqq`)pp9~g_srqcX߾[>'V7k3s^&4? Nx|~lpxcU]nJ;^'gWw^7xQsV/͏?mr׏˾Z+-n7'bdnPgcߔ)TcĖ ڢ")ԬJj5ԬDQ+JĦQFQԬb""""%YMFb""RԬb%%bRV%5F#RDJJDJJDDD0ypq^B " }u;]y܇wOU r<&>/H'/e&Nzf[Ycb#AVr_%w-?r7@!OcW $o~rV%e7r/lZ(׉+¨RZ 3}==GZ2e yC}c-%DbzoZY5omJ3/lU6Tר|~3ٞN_*7WH!v$$[^/ZAs]s=\meSfPy~]>U䠯"I(6}2rW9U-l. V}?Gfbqe_WV]"qЯt1^&ΦRlo~rW)2:z̶* _{D-{IqTՑAB>QMnYbװA#{;ͯ̋7Z::Dܘսt&(dT@eV׬q1>LNmK頪ʽݦTȻ)2JV-@_]2e7+)nUwc5+; XIE z|߾ջJ 4cX m !n~[(ƛCc{qYtltttHE9i VMԒo zI# iIYy;D8*= ~BKnVRYpr 63پNc˵UZ$H!OϲXB-=*f* 6qۗFww=@޻I19GLkPe:?/9rqv(Vvzߤ.ʢؕ-u +4X;˔ܬƧ>.]T{Z_$}|R/솣&XvA 0r(FnCm:sB +9yk6sA!SþvG}u39 y,k|\MP,$td`P㭅M/oEI;GzӶq`T c+|yjoՇ]n22FnNr)%vj  +eQo²kzl +Yu<μOf< wC`[k#~c`7)ŧ*˷޶B+Ԩ@;Ch̹X6S0|߶_9SRҊ̃f{0$SUC3I|{lTWj=w!!;>^&k `nmHYNmvoַbAکa_g*eV% '!5,W?d Q]RCT赊w%9Ctw_"ĬkD$zI?frj޶M=jH'Wu|<>!W`'(l%} ۴HSׁ ~''K&v]hzZzJ{%~U͋`=zxnIf|]Y^Il?f~50gvk'OW~|B٫4^tlN}ېϷo*uoͮ}{?z7[{ uǰHP;|)?e%]VVlI~~i$ Fmn^LtnBx`sN>MɍrH@!OZğ]LC";fG;%gH],-{cq~]LFn?I3k'crU'ߧ&GB"Gf*ؒ1wΪWEz]XԂmKi.% vZ_`$7q<8Wڼowm+*9Eĝl)&am2=vBXU"^/k& ZKV_[Rm3/+ym'w[$A2N2fVYI2(1܋] vN[|,+ZYk]_m܍g%W)N+VԦZ΃!*KV +V=YgI୕JT6B5bߙN.f5퍍}dSJtW@Iac?Ⱥ֧& ]}G] <՗s^cYkhg޴7 ]ʢ{޺ߩ/!"ϔ-ή +J:v5g|gK]Sv-.U2B l{J{_yqk7VWCS{oQg[q{VlͪtwW2T_7Im=ǔ8)iYaa +Yԓտ1!&O!9hRvTOIqt^s +o#֢\bdU]ԯ['!}&db`_f *hMs'M np}ǔۢ""h}vM%!E@V dxץ?m*{}R7+W,k||ν9,Xly`jt`kEHצ+ƶcy3w }=K3! +'8on6=/e U*bՁ[h4m$s}9 kjUA_@ o2y)sls]tX: 4A{v;j[|Ⱥu(F(;U3=5Tq+u=C + +e8/s]/=Ld1KP*)iּjQ@$N~;MM + VFpƳf( KNx['Byek^0koz'KYwӡ|w @a]/_I*],my̼' ֻkn/a=kkb;8P n;ٛ86Ĩ37I;f,Ǩ?H`q4g7SǪo X=z!}S%+˳ylbRckב߈{:"WhP:=/4Nf=וc`Q8UG vEԊ̧*#v^?_~3ϒѕHɴ{~u ]k*HZON}fv_ ^MV(PCk`FA#ycdY㮬qFTw +}ex8Pj O=1Ǵm, ":eXr:ZZo!uwHnlzj+ЅBCXo~Kۥ 2XёY,W-zr~Φ}(UCP(`1]#>L@P;n^6Q*/I,-{_`W"a]P1^hG1*JkP@ 08u%3) +N Y;(|"Dpk0f#@Ca2lP>z:YGXQϠbOѽKr̕[2xY +փnf}N5s&VU@ J]U;,ǫîF(26&F{-klr:K@QS+qeq62-UʁT2Yf6KՕd#q#||`)UM}h}^אy,lTf)߱ߡ^K\sU)bH 4AU2bٔ3^xjT +{үs﷤p/dgkXaAs>5Y958- lB{o,n|{MMh +TiXv=eZvKivt}mXn}ք}\N%-QP$1#I0F w-)<=/X z|Mo@~"He{.rkAjo;;R6bQeXjzX+H>^7>aӉHXChv%y-y[1Dr TH:0f ^*bAcO[8FnAypQN(S}E| n%dNWdml$>rdx)W\ +'FGܝˑUi{6 a=כfY[`&Uy뾵=Iy46V*~BFvٵqY{tjYy^}jV3séjRJ"s.lh aect&ޗTh]5%u@ >o+?;61mULՕ@*SMxxא~f*T]=(}'@۹|7#eXb']bÿcyOL~G +jԃE{*X7fn5mS`zA>r܊UZ˙h*O_Wq:Hކ{KiǢzZc_YSl0<2}Ǫܞlj{פ }LHf6g;rxu +QIP̮VES]fd; 'O2Rơ,Tu|MgCRh;NOX@_ +8*H_6%lħ!jB32($w2b"""""""""""""""""""""""""""""""""""5J˭exzt̞y 3 c;֭nmBQa~ώ9~ыUVZU +[Z }2gE[2o*uhlb0 obpXj\fu^ݶ|}qUKxok^@w"ʏhpzQbYIddFxi_\fϏ]6uҵ;:t،h:Lv7QT*.݀)$UTjߔxl\{w{^k7]*m鶵uj${HXTc9w1F?{TW;?vf; 5o)/[/[ 0ր'giCY]@kSc q܇#PQe{SՔa=qy],*?3`G07]mz]mP+* +\1*Ǹ"7jmWZ>]%[[n: +Et㩀fPuF}GˏyljټjRIu/V܃ (ƶ7U:f}}NCыg$NuhCgOg2G'MMV-۳#+WMSߑ ӝeLAJ?MaOOaJsqum]mBIPF.!򞮌Q]g]tjH:ea<N-q6l#z#\@([X +,W%Bt<yy5ҴQ6 BwA'cL؈)ᝌtKaHtIīX-JK ;;O2F8@Y}o}#RKRFe5++jVSQj5j5 +endstream endobj 230 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 75/Tabs/S/Type/Page>> endobj 231 0 obj <>stream +HWۊz}螼W4 5]3 2bdf%az;3#7K ӕ'NKOc{/&ɯJ*0FkDߵU L!Ons^Ԗ"N2$ّ +;` +/D)RfL+# +}>j,Ž 4bۊeR_bNsy]ÃvFf e`g1v7w<;56:|fx-~# oIڝEzzpn20@L㢕SX8F m"J$\j8%B84ㆎۓG޵ , P`)+5ru1)ijJo֕*_HpԬYCkVAjg?]B07I6}UPQ‰lvl-)wjG-CIp S#Gra&:*O]z&ɢ:/7F$\+c^IN,IQho->VhLOãtnb'[aڰޱz>qd]_Ep .^@68@y*"DT_ +{@,+*U(% ?;e'O&u<|ksICza4c2MH>a67)y(~H.\JB.,ʭS.6C1|00fX*"#j$F/fm oMMTiTRvUm) (Ἣ|X*AG~WNgܡ:jF2cqu:1_ڱHBg: :Ye=u)L6 QfaUpMCȭh|Mi9s0*18q&N)bJQCx'CP"3XSDء#~L󗯟n:~yӇχï7d|~9_X< 5&5/8!'c,qSR}7Pcǻ$1tD8M+D뺼ν΄~0.݄H6xMkb6z6k'ǖ%ǢMhx4GKk vHQ(t֑SݐbEFK +>2ݐ~k>ƶ46TWgwr, +HmoJOdaim:<1`Gz#7.g%)% ]Є"UkDd1S[ 8<ז*gҷ-Wϼb5l0܃9vknoF&"&W:ns{)+O|Pob+t;|6 l,YKJ}A.ҬC6fy 4|N @ޒ#jP_U+/򼦭Ue2P[+ 祠&;9ۗ 4)fvlۦ0r,j(T,T ͞Lw12ˆ:7mUfʏ6.FrmŊO\!s_#/#) % A$=aĆ0 }{IpC(.r-":PajH˒)>4fY8oew*j#u 3ʉ_J/+~iW\\ۆ;ܘ۹WCk`W:Ȕb ]{e{lʎGpZzK~a iPNzܝ/p20YS752:a#FHm\U%+_:Sy2g,_~ǻZ!{A]4RA>a f>g'~p+dAߋȢaMX,v,Ek,sF֙AFjmR /%ֳx)(ّO/)~ ܒѳQLNGIŷ?f7擘/ӟGolc[0"Hn2Izz4{Gǵ8rf{W%(n"|ՑL[ޱe~y# Xw*1k?ӱY纄ћ2{ҖXGi[1.XANg鉶(_~׿sF=e2/+3qKz*V-4+)t[&$74"ev@ʨcS?MVmAF_b(Y7C;F#rS= ;d4eFnQz?0rY 2Jm?7n!ޮvu#ya8 40\YvIPṩ*iC>stream +JFIFaKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Ka +  +g!1A"Qaq#23B$Rb4CDESTUces5t +%&'()*6789:FGHIJVWXYZdfghijruvwxyz?#~ S|R%UTvg`76{[yL/'֩%aY:n;V{3W7A[k/_èV '2ŪܚM62'eNX3bbrS2"xKVX GΏ߼FEx0UQO1)ǮZK%wygč9ʸ,] +(*] +$w)_5+.jـ[qGnKIWOx-&%Ou'q1Sۍj%ZXPk=i)+1Ϯq7UA 1'&"""""""""""""""""""""""""""""""""""""""""""""""""""""~(ӑzGKWbWG |ffpꖶ``K>ƴ~o?ps?cfX0#Lv;1w%w)qdʫv?$Mk|Eǵg%j6ԟo_&?#z'^ÿkkErUsRJ.*mYO幛x6|CYU#W[DG̴kpYzKr1T,¦u/u&~NVOY^USt]q W%sY*KWm.םk\,k5C+7յ:K6w!mY(Ȥ'tNèVϑ5y7`S>B=# !rgWEުIѺ_/~Ov+5.0lP}w9<#JjzV=#J$dm#86/"l[ +nV^p66G>n[ǸY찠PvU~:圾Z]/e ffKd]vz/0&R Ҳևu_c߷SQM%;awvpXm؟}LTͥ}n*#GDw/Kj7X=+]Ci2;J[A}#@}c2*=݋zQa~ ı, ccUZkn;:27/vTsu?m=A6vߪ(}h`鷡%_4z[VB;r>?PN}bߙ}o[˘5mQ~߮Ϋމ:v9MYJHl뭕߮+$lu{bo28 l֥vDCCGvv+CzM=y^'2m +}Kk*<ugb%JkݍWC"1R}~.Tؖ5^]'[v&IDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@)nyXBu)yw+;&qYu |)`ɗb""""""""Sq+)X71Պ]Y1v̡~u5_ƫ15Um@|It +ܔ?BT8-.lL/Z8٩W)[)]=Dh=S+3!+E/ckҏaOig#\f˲Tt3c \_0sԮMH䂪O^A&eRQll,w뼒b|#hR=C:gnamr,(YP#p<|ǿxr`=95o:"{}_=w'䕍{ åѿaH9 E.UZK_m|L 7Y~v)߰+ݻuxd@XZT7AGlk{̢M]֋GMO#`lCߴ3FeMY-C[,{`gdn?8y6"+0Wc#-VoH@:bcX}Gάj{R̀@G>6nWs*Xl}=bsxٖ+֮SC]=_+ΕD{qPuw:5&ȾQsb H>Ibō]5!at<<.s|-qǭ%bNk F5%*"){zUn;,?OPtlZ[O=19Vjb*tYtGp|y=e4=u)eTR۷`;.aUz]R22@#sT®nKzn5Ytl 1OnEVmN yއ\#O'YNYYIJqǔ؅%UX]kc5UXTW'gIe`/i):{ :Bm$e +U )V-E-$k` rّn0}YRu*˥>dGjwڰE-~٫pN׸W3v`:H;O8N[5I$u0(wӦ﫶7)FU@تG>Gm~##ӯף#Y7dtj۷.""P3e +֙u!@bc͟'"uOA:|vid]iԠjP;o FLIME7`UrW.KA7aKZr6?GHFH_R9!xW^k`YFrx^A9ji uV +l_onIJU\;5Xn,lY䱯x-"_-C#9E@{~į~/eE}Jك`E{8^* +HИcoUfbVѲ~fVPOq^pC+F:D֓3-MmAv{oh8k >j]G\{vfkڬu&VX}inF7쏎@:'vc`6igsX#|K(prt)>6~n%I5\OpUJyK+6;]M{ ~j)ħѼzfմ.ܵN#bYݑcwR^p +Sۼo)6 b\Q$m!r+ȩy J+0F&&79yyc3囐);#SݻMJbR`I_ owf'=^ +] +%Yt|.:uֈ:a}-7smz91$(~@8g:ӌη`C+h)v;oyx3ׯ!l6V!`o-|}rU`:=$vS1y5̦sTPml(C~{/2nswCȵEV?q۴Wj&D6}{L䱭3tE%GH?tU#c6W{B5.XoަoGrblKkА[ +W*Yݝَװ2ՋPLEb 㷉OF *K{:jzﯬ帆|{e[(Uoܔ(zz=Y|F-ق5;1*S*{BQ kZMQhҕG~""#ýqq7h]"v35IcXTP)*ߤ:%؈27vVf+Tklg0K+ x<'-W]Ր{@`؈|$8 -ӢԽO0]7[Q-@!{.*wlP$vU]wRi`$V 0#ٵ2$Vo-}ycoHXmZPXν3{qެON '_K +nCu:E{mO'""""$o Yo-_K:DDDDyԬ:M~rpu%f.y7Mzv~qBv̦#x]+2z7ƸV0e$pAGI8-[7A ؏"{rORPTo!@$K-Ţì` O1/F6}oYXR͎ם뼐f̪鲺ٴ}HRQo&XۍsV!C۴yE氩E*-M A#3*Z2AwniÙgtb VF*cq$"""%+Ft,gS}V/:t7׼ˑ|bgb5[\`K̊]]xA2J""""""(fv-MtB;;g/|CdکD 1),yV]0͡n=qC#hH$^7-m NQecx#"\5EːƜQx诳8dgN8_5:޿BsWz 0t̻ 7fswr<A/CY~:C}Osj[yn(CQaJ{^ۙFg`N5z6SgC?}kS;{ȹ"]ItI8 +8P܅޿{fkU_yлc**czAb&]ܮ? ŶV|{88c5ָe(HPX)/vmjnvE5Qbʒ*C|M~.+uckUtvޤ~Gg ,rs5?eJ@,]4{zZ>jM-kdjڵgDp}W'Frd~zILu$)w\Ų."(EeC3 lŕl/;Ll9S0E+aVIR; 7Hd`fqr][`zM`*v=.VG9אShz}"ǰ.ܒ(1YWDr@kSbvgf.CRl{=PQQV,Fۿ}d~Gęf%E9uSmACV8$i%]1N/~50LC H@x"qyʮյqJB0bw4C._͜oWXwQ:v>_aيEWzdHbǨ}7!(eM,djeeR[: 7+bc]]MkUi>vv{URUJoCȳu~LՂ:}D,` yg;]y%M/wжVPOkR_8O3pd5,CM jX9}0>C_/rX\_ziP,~uev5fJsۺ[AVl>?,e[]ERJN޴5^_J JzlP~y3fY}5VҬ =Bm]c݉SjZ6'60Dˈ(dE^c T="Ő~4v;vFW֎=kXVv">A=}W+"tgqgNQ7i=\ϯ*$ߐ#W 3Z׵ޟ{F;̞O += `yo/䭧"һ*EJz1S} erf"ծB]e_zj\LÝ薽k]`fvPI٘YW]] [!Vz@1:r'!ȾtzzԌ UK@S)Tkcwst<}>Eap+F eH- ~N*mK (:YH$v>w1GC yf4Bsώ=[OUk.knߢ)a9n/|+FBTzUV~h!H'sKqr8Ԩ +e]u<$a. + 8 $%eaC*RY|Tߑ_ d]o:^-YH=!HB2=rW\} ;#ʷ=n +jfvUuet^C,uB l&jP'@ t5~;%S+VZ^MԚ۩H :{jaYʦk̄ZZ #C̫/$ˬʌh$<rh\:P!)z۫[׶ˋ`ߑnKX@u{;}]wI653f` >Wp]+VeCK#v/Jyp8y7dZ~PUK ֽ,x:}Lr{]FW{ IyOƥYְBQv~fĹjjVvG =K2r8l:3B%_j5۷R'k +ZmߥГQnSD x;JU~>N +ӒTDy{w0&;';f+N2%nzM}oFo.إ2=!ke~e6`מTr!B~ӫ{m{X RXjnep*|jbWvU9yO[= bBf17ֿ,`8VZ nJ&p-? +\1pW!6K}?ta{Wz6=vFUnGUu7%Ez7$)߹>Xn$dQtRI@hϙ+;rU Ⱦ穉${ =~d_MvVˏaz',Ŏí4ب65R~BwԺ##nW }Y)rxVk,ֽ zdlS^eA +e]zPŎΉo2|5f&>!CYBt{xY \r5~:ZV)uuE +T '] +Iv|ىzB. y8f۔=hhUH +KKo ٛw͒抄`n;vLW[C[&gdйU=/][۳ H'TpvХH{\omx*^++l{asn2nw[Qrq\!B`Ac:8VYͯv@޺AiNOa4τq8e=MԠ#* K1.uFšT5mle!<dbd]2AkZGIT6f7zd|;]b5-K! +Ř,cp7ceh,9%t}OPI](O_^fvEUtdT;:?O=)\o8榭[NNtW|=\JN+\Yb݇ '"FESmm]̧ӱX!u:qvlk +lGUP{ GopÔ^E+;jZeSs,z1ɸۿIF~ۯ=cIP +MdXj$Mկ#ypyJ)ajUtm龄L'^+u H%d{LȈ)BםoΧ+)+IXܬb"""""""""y.RDDDb'+Ke#D#Ajǫ֊Gmҡvuy:""""""'b "" 3q[gDkz@H?N'vmV=3Ap@6;,|/F=]7Yc=LKϦߑ]·%Jt kOh66EH{ߴclT0W*Xjv^PǷbw'sZ8abM6 {{ϧԥʞ2:*TěBt{I=a'徨n=Yr^exIZt6,I>d''FcHX:,otfM*Vs(${w;qt{9U#!t.8/r-T͢zE'W5v[`T.PHc)O;U%-$eP}hqn,Flتh37S͵ U&$|$3S31^G}"vZlbu ɱ'f?Kj]$ޔ{pe^g.R3j:5ez,@o3rXG)Pf̨@<5M@1/(-Ƶ~%~{"ըR[;u|^ƻ&E}Z+h?,9T]UIK2z*6AR{K. zR=!g,6XVfUr:'Bl`ܶ7^uYcz9#M9zpݕ`$/YUlвKvNUV/[im|oZ޾ݦ;UsMzߪs)"NbrԵȥ + T}.KZ1ݪ_R2I`gH á]ۢg쁶]@؝0ٵ´k +Xt~\mޢ믯 Զ;V- +caEt׶.ٖQ?@pY+c}0ُ#*3}~8pN; 1UܐPI۴W7n; TWY!|U >n0l=$,W$$`{Y?`Xikwpu~:׿q[:^PX>P '[~R%QZkq` _Sêfgۢ?L9CbWG@ʰlI=rёrH;`|u;*?Yb;VK"p!'L.QSm;>bmbgQL_`]Χ/n]h,dxxCgJȵ!l_9+bT1GF ̱GfK"ג^L;OnnzpڿX3t* + k]G돏(-B'Cn$JտTiOT, +%G/rNzo^z=8VMN 8I'f? 0$ƹTT$F|Ef {X +l*OGIb~~O; ےUK6t :{vhr){Zd*6C)@Ư,޾I$wK\&M*;+2v$_]}pL~CR(GRdqV}y)2So̞ zu}f'VvMuQ@;3 3v/#FZV:p~VC<&]x!ş6֮j+=_mJ5r++X;шaMJD@(fıAkR@*#DAϼx!HZ.6'`+~L;kɛ?^F9! Z8"}:ΆP8"Ά魍@z fE5c{d7&Jeiߕ5݂E+u%\ 'a~WZh|.6\ FpI@{fsŶzk{+]lU=:_ӯ|j8'Tn۫k7a'c]L4}Ink%e,m^5ܖ{v9n+~v bt7}=+v5入rU\mzM@g;ME^{1e}h+CN+f +dUOaHӉ>F.H@OV68طeAk6WVac-Yll$O/QJJì Oԋ*s6bif,hV],]~/8N.e]& +[) {O6bz?zq22^lbVΥ*@~i8ɇM]} J*u}BÏ0ZR@agNbsaU%LbW$u&_3_%q+6;zU鲿Q]32}X*'G"x17K/ӺMv25h~:?۫)*Wtv=ƽÜaߠA@#v ?TV5jW Isى~KX|ʆ6~28̪UIh0'jmߑIg@Wߣ#W=sON_,Fxoj+*OvdrUe0ӝev [$ vH,sۤ#=a}&Ckw7sU,V]Gb|A["طrIB5oNCjol;d,O w̿& Yp2:Ae Κq_+mz'N1=c!"=G-|JٕV+5hPZ؟yv!ۈŠ2EC(G"[,6r.H(kryLI{nbH8ʵw̄"֎yWM5h61 W.C'lf:Fy>Ō]jhsU]aL1z;5x7;#cD}"_;i[oiCkV?[*_!h[8wRٶ ?]U:pm]?qKPlw?*QS0+\zW? [7ҦUzI[ #CNEE :*} -+^=.=d*j}@,THx/V[;]"$x|K;ZEUG:,$o]ݸ߯QSElJ.ZJFB>OiIEiH{ +{޵3ǩSHGm2}~'񬠯u%**= E`Ԁ3u@-5rۻi^UbC[G$SO}ŋ( /}(q5(T@`Axz[E:_(<߉NRt]Z:|oH nxã 01P?S6eMCukzﯦn+jVFzԷV5TjU,~b?˲/ML2PxãT)oā21(PVv`DY(þnUh +4v4]ʤ}~#Z0(qi6 Mk<7Hy)~%=>h>:6 T(Եv%9Zʝe A?:G"jdee$j}Nf.2bTV4@. R3* cѯ}] IކFLQ]zE 4ԢcU[Zo`1O.'bjN:2bSTZ9S,?QMR8 ;;; ++~쯢{xiG3"<#e+zlEa`*"@P h}5~Q*Z +)삠{.-*Z;څ'~{x +%jw +;J׏UZ(^C?'EzDGHȏ ;k{xDʵ"j}u@PKV :y=R¡n7XF>Zܹm547׼V(UP%C&% zd}n M'e x<VŖI +$;-zMeGYE-5oRBUH+@M#Zŧtֵޕ*hKuش;}"gCL'riGP(߻ؿ_;uy)~;ZNXuO Fs=Y5qj^Sv'?|XR*$bؙEmʷW`51rVz.""""PGR;U5OMKo@'E|DDD^g|㚦Yle +G`+ Jbzw=gNT#[MjAH):'+(OOs!p>"lv\gKo,:zk u2n{ 1Uj`?PF"""&$z +OFY6'Hmz3""P_ܬ6g`%H׏Dǭn TҶRGvc/܂5vW5bt6w}ˉj5YWv`?t%؈>$f/0r`YIF[Y]۸;R&)/O`Eh]fz}X;  %FtM*4{L1߇P-T6 :=Dnv#R%MfkތWb*@y ~i |}UW ^:}ͬ+rJUM8]`bQTC?%i^pGpKf=!S;*b&u7:zYp:wAfmmNc\5NoT;møo%f8ϕU +Vߙ`g%+;y_UfW5ŗbq7{2u|t elwJAcS]mj +ԕ3)`wىoyO?by6q%}~ԍlyN*(^n˱G9N=Ƅĵj$"ms|͟]l9;G`UYE:@;S%r[I[P +NŊMkI'zλ|5ʨR UK` WCz6~ yB 9X+*#z*j`#$uuɞ3,4SKhaQQ +moS#\,Mm Սm0c#1ynRW:L[y >ݎo{4cCJbĝl󩅅^E?zwm űG*k:# fg}-z%PHЂ Rt~i G7ɞ 9w_RM$u{k_C'9^B0Io[ݜXP#VoBXnB̋._}U0!O5&^鱩 +bJ`OߙYNNM&N55eЊ +5ܝLk +=_~Ġ=;{d|;ٙu+GU*#ܾZ>+d[e2)jU(Mj@ܱ̼{9 K7C OF+[>&g|xՉu6krZ~.0F#uӯRw {/gp8Ymi*(lҳ0]h? nVUm&ަ +'Xp*:[Dtu9;]. + V[^9U5J> ۽c=pl Ez) .l?ܚ_UAV[;0#G8̬SܒƛjV:-&7n-99JkOE*kfPᶻ:b_NEzjFWPWLK86&^U;TlrkSK*0rAm8McQQ 7lJCǰ)-:UPd~%C!AN.+eZνj1s˭׫ԠPEl#tv(:2V>`SOrz퉗eUt) w2Kij@ Q+AOUjvD\_jwH+Є2O_}NCԶmc:x܋/TЀ@^vW|BYnN;RX\tu:(HD0 %k2*ĹBBқ)0qFAL%QPVUUe=ǏBݟo3Q~OMN۲  YL[73j>MdҬ"[Wo`uL\xkUi%lE"+)ևU#}̭yZ2zEkQtfnx`%9<%qkɵ+5UK.ƔкޏOs/N{\o;ب:ڨVlx3s3N57UU)#V `;xS0Ţ{ø>yeNiܯ5) eDkry[V«}=kI`~Vfo';9"j޲_[@2mI 3r9Tru2eSCvיg#ٝ uA*!i$w)p9!Eޥ6tV֊Jse`|{-^* 7IA㼻)vkUaҫSҵj.AUSHNDD(d.GYv(:zEF؍wЖZ ATW|9ۃWm!,ri][{cukCzyM+Ÿ]Zb]u7Wn4'NgOj)=}fΏ*;oes޾&%CTP8*z?xܒK@$yq#*MUu@I~[َxl욨5YU^>5d7e; +I #?J,Q㥕i{]&?pĵU ]_ w̷&R=c'}$ǀAc3q7K7Mt/颓[?AqY\BUmPTXhoqAvRvtHu[@ 'C_Ԍ3*.mvlp:MGyǣ;6rOM3q.e)RCZW>Hljc +3{hfpH-`tK.p}zߢXzv$orUVA}%Om{v|~dR(O +tu=<5WXnSiF%bzzH#ε2.*T#EO}vt#Yam$ZW`A~=o0zҪ5$8W ~Lc{H?4bV+,$u ˣ˯1nW (`zI ]CƵ-9kptT] Ŏp~ߔT+VŒl` :7M \)O_]߾7? .T*a,PS2xk99nUҭ[:$l%/˨⛊˵,4V[ l}[]\m * +.a3lxWeku|)Ҟè 6!Pe +;;n=9q[]#eaqO`Oo|NO5JcbV;3)vl@Gyw⛘Zr%b('J1sY_M`fR[ w"ox;' +c&5ޓ-jI"oG]?Is~SEL +u-Z>>6?Go!O#sԤc/PR)pwZ=FnN~ArX:YPV; dY]k*Y0\.zAe-mhvzގjH<;<5ȗWeV 4o `/N*32Z,vNwuydBwv19YWd]PmaB+o;;r85ՄPU[zOQOdwZw^N|qOX̍տ']1,GL˞BH#2q5d"5x aןmHg11r8ŵ_K)RtO}u}=22/At߿E[%rMm[)ƤY䲠U*%I'1>|v>e9+oN4u`Z#"8ChJ؝ 'awQyGO#vwZBIW-%׉d?;МT .QcԇGi{#oʾʨ|oYUk m} vH mܕQQRPTfp巯s +yN_2ڮ1w*~GGVe&v~>}wSSh}_X=cNGw5^mT;d;:r~QS%J'RKug^,ECs2|Y +O`wN++cT֌Qpոu҂y)@=[=5d%O!z&AQ`:` 2>0qlP^3 :Yw +WOl4k#y~!`ں0=>J +[i{:*l4N`b{} ebK.oYofBEỷV?K_aZU@#krOn >%\XT )wk529>]M1wלJ޶ +L &^[8S~0aae udb5;Uo|l*N5:6M |u8mM̄ ]Z~cd2|30iޚنŴP2pv 0^Kר1_muHaWC ++ GSY^6K{l̸30++[` 6>WTVJJ=/DJXޥڴY0,?Ġˤ ޡ~7vVSķ= *OJ:3?Z#ef7&9Y8KOyX]CRhNztE:#Ȉspx}3*f +6@#ΉbZSRӲS=lO6V)WP#`AR({H*jNnPBKg}5нv:(㹕"[T;O~%y lFt%  W͢,| =.U.űJ^vw :mw"%[)>}5:W'`}?Vz3ڎJ *bdHfٲ\(S^tur/Ey]KN`J҈zMH +2}UR䀠odk뿤FjbؿU`R#.#`荏 fQdfff@\\:]ce/)U`e7+apj; ?)6V'z]0c3' Uv1xn5ܞ:wZEXܖ{(gc=jzGZ~;^7|nC''uTŠBv.~'''ҍ] b:lyfxL|eUQZ3;rcd5"xNOC!f\7OPޏ̻LtgKI2?)1S">r(`[9U$yݙ_8޷~Z7;߉K<\[nDv噉|AdcP**;> ibءv>"[2OIm3(:'Ĩ˥Iarfn*Ͳ:oƹm!˕;i/Nu ]N+#/Ț~!ǻ] f=c}Ltkf.nm< + >EPVX w&ɫ%zuuRly\-5 r5H^ۙS_F܊u Lc`R'@&zޢiz~4w&6~Aża]HCz}nfE֥Ns+F~>MfڭGAy)=5ڌtNo }f|af,)ٱmbǥmOm~ݦ? rlaUgZ7I;7S7\\z0zsM_Ip{uocǯYbu7CԬ ]@`@s6+0} ,}TWGoMZ-L0zs6C2>#33|EM]֋c( +NpGg/w^5z/"=]D*쓠ukx9C"k+;#%z0 6o~|]VUVcuoEW]uuڄ~>v{MUZlh~7{vLj욱:u0] }kխ&V`B!;<ќ,Pu`Me`t|H ~mt:PʌT>f?%]ˎ֠$gyw :]>R7AXeT_R^D?~y\wҶptT0޷or-dfS؉tLg6{EOsYXα*Ҡ )ܬ׾>Su:``>穌5 rRW{&nu _]}%1OR90W$9bU㽪کa~[zɩ ?RT/D@Sp0ku;AnW&C KrYObMu_YM#v@7__XZ؏Lp&?¼v=mHߚʷtOip6gnKoeF=?(z/6~^m7$L4o̧ct2M8 Aq5/r(F%]=>݄0h?Ջf=@7'n]D8ndg=@ xa_O$22-=*zއoOMWS~GyWx'x܋鹓RCȔP:hZѳ:c|1ajS\CW]+xu㼮2>>o@d +w:.q&;jc`!/NG;b+7V΁£c>H +*}yɳNMQP޽_ߗ2*!k/,iG gͿ3>xI]alIڀI#fNR\]C?fYVo:WaXm0/'kcZ^,,0pw3rq#U(+Uu;h*퍗X귣#8/J"lgRRX ~=WXvcUIvMWFA޷lC|[[^P::Fw'Z_iWV (mwzϿ.YQp%P>RԶ'@l{\W1W/ +4b0=!oUTSb;1^?v7.d#U $ԁ`ܺxD~wŢ2VImm`R[{k[[*utae!"F|Us*-Y#zum zjks볳ǹN;;JGRnuW +Wcuv\u]mlwV:`U.ߡo<@#GAP YJ>B6NO'q3=b*G@& 3_mxNS 7QyEtG(oW1&HkpƪVƸ0!r{C}vfr#@o]TЧ^bQoV١cكmc*KcmMþ3 DvF"";YZ2(`JV%Rތ_ZWm`)Y +kd ݻ!Z3,Ē/[Rތ  ʽ>ӷsѢk| +<%'#aY0 +'qxx4VI;fXw;'lW+չɽ GcXK[mq'3<>LV2* *;A +GqY qWn{ܓQYaJbH'[o!w[܀7+G m5RnߨFm~px4EAI^_{:rN&daA;E''^0xn40}H΀$2/P 6t;~bg-`vn7Oo:[ ZuʳY 7anE#]B l2Gc_E +(C f7f7U>tTծJ9/ʬX_cRYXdBA'O {gPRZ~m#)f5om! +m@{}ϓ$fg juA@썍}v'x[LZ#lqx|<;"Ul}3~' U* w {rBG_adXljY`Ȯ}˪/qP%YNecd|9ҘPZBǹIܓg߼V3V5C5yª(TZέw.I7zxk*Bu3oz}'SNfsdfӔeǫKFĪYa_2Pg2{Z +]L$׾sV87W]Md]h+ᆽg.W傕5h kWMԯD1` I%{󩟩cYeAII>kKkǧ VR˔%vzw{>XZ;Gem;] }ܖjVj_r6ݓa+½nl\sZav^BU='Do_~8! Xֻ;%P)'j{>ץڅ&zGl:;cGy Zs 1$#[־ڞ_ Ԃ.MLz7ӳye`URR(J:>bNDDD1s,ꈪ6$w9ɘ,]z(|#DԬKy׋[kDRl5TT2A]lMKhtoLy*9jF;BXlSb`LljRBI$I'E)箛ޝ̵VIT<~Uk2^Ծt|*"bdrbSa`T@o;>(Q~):f@`wǙbCK/6y'=({J:Qct)bqy7%{փ0Os=*Z{_Cڭ[]*# =c)X,BH GUto7?'%X׎:k.[*t$wG-%"bzzf's;)Ľ{nWFt$Ϸ¦-C^u;cg#$17֮HKk}I#r;` IոWYFA}{C=ȖW?.ljQhZГETR>}kZ~?5Twtq3O-FJUӔ-ԝ4]`y&o7+'(MQc) 8 n/8RDYz٘]O%۹y*Mx $5ƁϿ2xuTFWWo(W>J&A+ᝊoDZJ@@ ; nj~S|xU'_6rXe,P,U*K~ގD\ܬDLulkPzFW@:P޾1-x٢Z)JP벎I׏c* qԲLQgm]` ZW]\KoA2;y9ier:|'HQ@kgcr~)mUF=w T|̛ey]K5sn/:UgJ0oJ`}~p[̱k^5gRW؍ q N@bnG2H`Y4w}$Ԅ+knF5E}(\߾lT +& RɓKhl/67 M27ukCp>rMbNߴq~$zujI٦Zk6zF|~"JY1zn)u''z*GSwG`pt3[^<% eFR쯯P`H y2fO>.6nZvDtzI'4bSf0u M1̮;dԕԵjKT{ܫ{yL^lhn;9k#ƈ#gG=vV? mZ9ĀھFǹs99S[:IpKځNr\~^=U#K؀*ʅygW|i pe *GWPaZiָnVnJC*:Kx H''j1*kFKtj: IE{=4܉*/Ҏڔk$O<ߗ]KTv +:ƾE^Sftc[15j%'܏U /2O>&uµO_JCx-.ӟf;_J2^@+P;ۻ0ywlgSf0ޚ}_r3)IOmX׮UUڛtVtb`6SJ22 +Вwb7Q/_pv]nt!P o}MrrO5cq&dﮚB֌ϑ`:H^.rG#"ԥTQC,4{kf_3l[r'n=crZ +ǮΣJu]|mȺ*>\X +7OJםFKg a'JՀ̌ ocݼxjVYUkwGctd6rkv1[ԖWzӲYY(|T뿼)+.PI#N_7ķ3')w@r:*A 2 %_Dj\f[TDT~&Bs홾/giNL}ͷ+4*Y`Somgp\sXIteP U>c@D@O5JNʬHq@;& [nR"#vE0*(:Tw|H﹩nlkbڙu=.ߣ7XSf~UHUv?EvlG`هӯ3 V]KEVT(}J_ +:N+9;/\[mUQ!?rv`fq'.S]+Z2erGT.5l~&3FMMkjam.T 8u}d> n>/}*,Nگb;^7-ONm_Lz} >':|6~^_}XXZjAF3/N.g1PȤIWv;'@Kq\#ʩE 3G|w19^U.Ʋ*R*vvN7Vz٤WY &+IƜC+kSn*F|A'=euR\$nkGn-lκIf&oVV=8G'+[l2{2Y\V-5zl66+t_%B$>yqyKҽ7MXOXGm~w;6T#5kt+.s/ܘ6gP9%~^xr̳RiNf劈fWmGJBwF89|Pz7b +?dĞv cX\~2+ztWIe-#`_Gº VR%=c5^`}ŲM>:9 |^[:'W7۷e?ҤŘyܞ3bRn&XGOI}%Xk7}Xp>@ }udC+.WtuTݒ3"zlx\hЁ.dkʬvf]ttc2 p.*=+B|N[XJ0`APF>CN:VŬ2yudZooG`F^ly%WuGÅuAgN\zzCp|kx2_˗mC1F2֩Ԉߡ_}xіp8O2QUVWkJڄ=?cqJJ ``+C[2dq8J>cm{wZs8t}B)MHk3'?i ^5MIY +?߁ řƥ~pu3ր;םyWYY~~R%M~]50qhVg(aH`_ejuWF7[hh +zvC}x,V2s+ EU@T%4並 ۙeɗ^]LSR6_6A&bd܍Tq8]t #cy>eۉy~SKz_Ά/G%G+Xs,Qn +;R>JɿU_Nт=*>a>r>c-X̀(cOyT$ C~7+_#G!EBOMan~t{Nv^U-{pC}D5-V2Zݠ =Bמr5eFM+AAWP^ o})h}G}I˷l}`2] ~}yXx MjP8'cz%AO'ʫҲdu+0+&ߙ*mwT[+nr\5x} MζZ*=,Ͼ_NX\ VlKtz4{L/&+;鰊 +@m{IiLtZP{Oq<]Jd#WbV2ARJtyLcL?IYNՆdxIeǻa2b"%5JJjVSĬJj5FV&6N y-S#G&FU̩rBf#o|UvORJj5 nCҽ:Xw*C)ڰ*AKVT*>N$$$ҚFe5j5+IJpqsRuV4mG/JĤ1sr+ɵ YYm%@:g YMJĦRFR)ԬDDDݷ@걂8?+',V 7Ӵ-T0$yGJrUl@lpd}|W6wa`rr/zGoj;!T~L2+wU,t6@ y5q^6AEQE݂ $oCfnon9̶+ըVk)cfRvGc`VaVa_m (p[>",Znn804Vzkoi/Rryt->V ++ԧi];I:[m.] +7oj֥NX1Ͻ~~-U]Z+kζ7nK7胯ސߗdS͜gt]UGK-;%r =.k~H`kc`_),:XG#lD ,v}c76k:Zv G~%RbT0,llloǴ<[rR: 2#`+-F >?b6ārϺCTsܖ/FAw6Y˴;Uzi^u{k)UnB!SwH`vUkOX(f!wǯ}ԾrjWPeΩ滒J0`=ei[iEt'h:$׼n}`c5zuv +5Ե6seb~n{BlO}G2G˷.ϯM]۩}ن}$/s(lQ?~:yOz.O=cdoKRѵ`~A*=TZޞ/̧u:lg6Gyq*'@ rJ斊Qn `lDY}>ـI;ڇ +ʣc"ݿ eRv + 2 6;YHG} ~Nn58ȫ(Mߤۓ[R䳺oɨX*.dl/P[ާQ~μ#}~*>'nJTP<@alW+ttAv{ :aU > jT$2W#N>-]Jȕ5AIټw$bTl{0-8Lkm~ͽ)TkQ>Ӯ|d50y$= `*Dtv?O>~R`H͘KMn+W~AA1-jIdg]rc{*BI=-A}w).Ʀ&w)^شY(޿E~Zٚ>%b" (|Mc UE3:׎2tإΓdoEkџήԽA@WҶ_i\Ng%JU +Eh+$}f^/~my>>BKC GIe="DLmfTNf?JdZhGr6ɳU (+{0 +>~ H~[E "VB5͢iys>ƪu.UlRS G!]!ǽ%%n+ݪ'Ko51^aekc-z#ЯmIzS8| ҃LO^ǾDZQr.K7 +?G~In?/j۹tux5~ vK>Z.Sݷ!n[NߢV:HY6[n2ӐkP7Hmj:`kxT kU/1b3tۤ2Kį^ +jveA6yF>RVOb{hoݖ959=PH!vģk~LNN4eVրkY`W'}xN#^2.B*mP?J{Hr{REzjNwt$y'xkZO[ + `ԹnKVeYt>c:hLo;szkVN]뭺԰UAm\]C_xlt7-p\~/'Wu/uCP#jbe,R̊Ñ,,$>5XՎR?ʀ* $Ǚkb"ȄvGp>1-YZl6^i>mk<07eS'rr( pA';G!SRz$TWVruj۸NW2ǗWG["Ru$H3x{+.Mڬ;z~^~Zr(:4TjV*u9|ĭUGUPl`t6t+++}.-chbYKC7#ezmUJ.vVk +GrI'ǴE9|VemZv*vhIz`￝ HEx+P*BBwlS+~"dS[/]е@c MXJ1tā?Tvcw@-v9`@~g>»YGPkCՀ=?UeUz=+=:q<.J,jGzHnZ0^eeh}6[eEGFL~NUSR /Bڶ>O+}PZ?1C}GiՃJSJD]$?x_iqmnt$Ԅlk9ޞ+иe q҉`QԌ.d=Bpϝ],+b8!U$OOw9#ԬV5}N˳Rū+C&eG4Wc|Xu ڒ9|ՋklWۡZUu=9!9j*|VT8gUFO7.&&=t҈6-vT ;Աpj8d'Plt}ֵ7Z__7:ܰf5_X ;/ͬL &bT|X՗zSߠ `~^@B^ =<.tz}A3)n>{͸ rTRSޟɫVqczπX~^2Yz1m%lGJh]6K Q>&?+Z +Z(چQ{K߂cBOpRK|Efr\?R?UPvm~6.>.^#JztS""";6pk*/OS9] 3)J,жz2f]edqTeKYP1pz}}8jb=Q7XUo $lC;ZקY]NG$R|7C50P÷PKibI]nhC}Q$N:G{gwػhw +7Fa2N P:ϦlֽNZrx +.GfOJXsl37P""<+^eOMJL~ +,mS~hly~+3U5mvkz2$W!7*YJ=W/P@{LR͋qk v #߷Yhǹ/g@z=[ 7ؕ#I EzPY[t?I %azѫurSf:N~inCag;?m[J,ؖ F1 * o3Ĺ-k+s+.ؓGbfE%UUb*ڂ=j1EPk,&#; x%luIaD7ʽ魋kz]]^|9f#aVZv1;%OO=Bq>ֺղufI"KIz@B[tXDx7#۴o۰Wf=Z}k̑U7r +;G} ?>|%r'+*{ +߫bVa3N!٘:$[KY~9< [`P2N_@}/Oߣ`q"w I`]bFڠWWWF޾LHKm덝TUe-t +iN[#Ĩ(\A[+wTk̴~Uw,-;=ng FevtƩʃ,KR0b,WϾį&V55Yn+jK 6%2RQIq+S@޳ЍOxm @2DD\bz*v> ܀v%к7I> m?aOYc7ͷ`f#}OE.r-Yt`FX/g*{%LNLߕf-:U]t`ִASiĥC%T@u.1-Z"ms2""`g\[ɹk,[:~~ҙUw޵v\vZ /dחZSu+ l}{˱(e5YB\WʫΆװtN˔<:C` eA"do*RwR{v=Ļ1o񱮫Ul~ܷNUYnL<ׂ=Ļb]lB6~{r)V""%7+X9yjjXP-XV~&W⫚!lkhkg2G {2&U@P]w&"R[A8>ܧWKY벏>w`Jy)X-36p݁ w#{Ug"Z8gY?@@12>+Ʈ?*R[ӣ{>f2 ʫG:E:,FϏfW'-AT%VWF*F[yooY:Egf҂@I'Xۋm!rRQk!: @`hW/nE n\G!͵6\:y +,!VSfeFIs\QՋkN?jNOlڑU))]Y+pAC ~c}|l䭬S-l'}D<ٔ%VSgM! }mx˧Kji#3W&ЪĂI%H#ZAPuXl}_Y\v3`JW`k;vPy}KETHXtѡ1ˮ[m/m@ZHB==lh/Vr;feH?8丬Jֺ~O%ck2HAu~?\<>Q:<ՙSJq\Z=8ɕA8>|O[nUXUԈֵRWj oZ;ό.~N̫^`=O4zb657יN.U az,:F=yr,+׊7XQ芪Ŋ?j}n6 _"˱&EHje}čwȘ٫P+ch[.92"#aOX| -hXt>{{܏G??9-j +Y=L !O xImec Z]$o^Ī=T˥TP0;S1^,"p*~oֆ v랼$Y`ee=DDYnVV. JB-F xOyhry%LZ]wېGk笲_5S07 VzݏԽ}UM?H:>^;+Q@9mmU„QR[ /)j2)UAňūbXSӊJkZ~f>ioC5|u/]*+Nۼ:V잠 ͢Gn'矍g>VD-S[v2kEto`tIr(eNNG.1R(U]z=ϰ<۔Yzw-+oޥlI =b2qkBYpZR$GOoyx|Qxs[RXIQX7Č'W!jϔ ka 8\޼\Jl/!ZP 9pr¼OE94Zzb޷nG*5#3pljP2@>=̑ͫdz"fc2䶫!ػRlP.8[[uz Hٕo#e cT w c ֵK\!X-?%,`tloDx<6x45"ZaS؀v\ՖهHšnFBI]>Fo~ +?asauݷ^` l,an%8cu0fd5B;7^{nLl:KZjZѿGb c(8li)`:+Y{:Ӂ%EjS!AD\9Fƭ(RSEߍcsvM7%:֥?9N5+OYs`n;w{J/M2kzBk޻ωo]:m]X>Fշ ߗr%/G/C={u]:Yh# aRi+t u+7؍ S"Qh f$ t*55؝~No:\8;]M[;OS;kyqL쿞UTr[lVbt1k?M2DD"W6\L^;d߃ӭ(vdq.; /dꩫ:;!zyr4Z)|^\;֏k}/m{[b@$ػ](# yi(P4i?F»kRNYʲcߟ{ +!^mGΤro%v exjA,UO +܅y^ET|Ȍ]A`BA @KTMfo䏓;JkcYb(fCɽO]tU(f ^t:o_)rQ[`\5c׍ߞMRX?&rO82}W+V$gWĵ=[P=V֩ >müȫ84Ζ޵뼹Й^W:P?N>A%%}|b-x}Fgu H7]ӎglvA] >bnRf%6bWM +d}ޏi3}ة[BK8 2FP|g +"ŷ$U[,upYw%]k]?っ̳'&M:-u,4G66Y |dABP;Zh' +RB5Eh#9wϝ'~%p{7e36gUE m* +#D`O2+<2}Yzb !/ȴ٠k4g勉&'7cƦ۩C1m̬ڲ8\&dƮcRj ++8:iw oZV0eu*|$Wy ;S 1j,:ޫaW}=>%+Ħpo,8X `v-=򙴣u:#`M//ʦuVD-ϮHoh%N:E/NT7۴ו9/Mk YRL,<8EEBuMk[&gÜjeZؔF3T7Um%V$=3 +NMIScZ/cǨw hG=ƌ{-wQ"wuYutW~#o"K^ꫪ: YW'M6;RWl./!1.)Xt'??ל̽-UJ5]VCm̶'q.LcָZ7 +;x>I20q +qkDZW`r%߇'oVʁg01 hlwc\zYo&+[#e[=2n $Fak UN'd&N7 mUf_me[ nc^Gi(ظTQmO{|>-S/Kq.A2*}E6κJ{2,26I'&?ph.J.*:YYF>Ǽ8| Zn܊OQa#{S.^ɼ*lZK#'eHaL_rSl3/[{moer5T-v@}7{bl ݈1eYFMXNz[nm _C%,8~EؖkXRֲg]=3$ź0/`Wu_(GH}hUuO3.""Fv1Fe5H߈8̎_rY=@;#c{0SPlյvrX#[+w݈J&84q5Vp=sdqX͏uJkj5H'kt Ēw.~ؕ9,nfof Em{j"6?H@I>=j׬Vh`k7dj5j4"V"%5j#QFQЍJj4#Qj4#B4#QhFQJj5FhFhFB5ЍH̾3E&I=^䞣QTܾ;&ȵpvj-ӿTPF~[7;x]LKO)~6} ܩatʪCy\/ִT1֨fPLրbtA;2> blFؿJ vU}7#qnCMquP:ʦ:;ɍbeS~MJۻY58܏cN?U;<]a~\V&Ez 71ƙF#JDYzQ޿Iukۼ%VYxDW]uڝ̮k3)0h6CgJ6{~'L Z+_'fkl $f0ؑ r`$SiBE ;;%屓!A,3wY887db"fRKA:#c£)m_Z)Ӯ[~O˻7r%0u T}H3wunVSqy9YVQFl|2)PЮ 7y0Nqn7o)gAJ ߜ.;$te73+N,~ԟ}g9le(c1]xE6w*{|L|nrʹfVe*d,M{C/&wVSqyY;'X$;ImqXEm]YJ؉|$gvc26 )76y~uSMk?1U,F}eꩮUFҀrt''-UcugܻwMk}ͯ5No8\:UD]x>NN"'!^X/^-]gavS'xO~oP9 /e,Irw 䁩^-ڕv-/oVuby߂WgXUH*v}1ם>+?eb݌틣6xԌ cbWml[~sL_Pooc] sPlr 7r}"~0^±YPU{=0 #q-ʲEKU!H_; ~IgձMu& +;x&ޚ鱯 VG]Բ>z/y =:ظ÷u]l +c=ǮST1}܎Wƾ7~V׭-!mG~7ɮw5ֵ:=]۬ +f${_2mUa֟;kBo] žQYɽB-BR5qsȇcpdnƿ~Yν< +ֹuYXȤz^B￝vܒ>Wëb6J8~O`t;`J:VF wNlVqel_ hluky.4'+85ƒ<ג1`t0؝ɿ3-M=L=Cd#zH23nVw;2,-[WZV΁UGINHW%הubMU[>'[ .o rjZbOQ=ߎLpWUMuYf-afF$/I{v|o-0絲q2.>9(Dz2߭u6?pu3lLz{IWޙskVo'ൎ=c^6x.^wne[ 2wUHk<SLgknZV];۩b5-Yo/qlʫtE/ft,c}}ǯ#Jz>@ILrvvH:?a^~۱9l?HAĦ.mh}Ge|/)ɿU^Yw\%Oe$w4>H;J YWb޺tk_˓w(Oi XlXS=?Z>R@( $>_Cc^ω|]뭌rˢ(Үti36[c-QF;bvO{.(q~a +þiw!a4\Hbߢvb56N~V;~7"\T=`)񯬃~W8XJެU ~~v??3jlBE6GRߟ}Z_.a=FJ:{q{Mחu]Vb=߰OӴ̦rϥ?*F.X &%,PTDtH?;{XvvY{d7޳Y_YI`{L%ߑwju;gu6~!pˣ +ƫNA4R]Ayrb6d9#@i68"ErOYǪS B?|O8֞#v/bVk: w%+d"{vgiI#~L|82Y^15 i) ON#] ? kKv +Gn{0)Zkʨfb{'}=ɖ9_pMuSj]}*UR8bKl(L#G/Ae>633j{Ge{)~C3OS2GSR zWHEGfZ!WCCNώKXv'$F:k'';;cR_~z J5TdV;3BGWvUbJ ?6F-͏cTeppFǀG}vẒŰ WkX$R~jf,.kT=T${)=3Bbֵ ҪLoYZ +KG@CCԤ 6fv6iɱ[X*NA$h{Cfpȳސ*/tϼ0Ƿ mlGc:4J))AUkztH'.epUX(41ХN )Bt;q/rݮ690+%zu{{ul|?uaWczmsvе ^tvOO.q22kʈ6#ZPu[zW F fO:Kg'zXT8Cvoc5ʪB]$nFYU$5ھ 6:HbKx;;ܚr=KWPTG<5Xy&˺ ߤɽt{v7r,lD7SXinn2FasalYWVWK+ k'Scvm46; p[Rn{UtPʠj'rm\3[: >dn_'zmʵK:]:,^{je­Y8[gYUzz:,$s +1ӽ2AYUfzT%|ůz;(U$Z-5p-N}˕oUӦ 6{r/]G+ |jχkuz\֭~[`:ֻ2|/Uc1!CP)}28%q}6?XM:CF5ffjT"^xMzI:2.5@_NEdWsW}U5b+mX`Fʃ-a<999 i9*=@B(Uu{hı_W +?̻։;29"mSbج(, +oƼ˙<7^KfQik-JN{;vҼz'~>~::3P+CkVQ}D3lܧ?&,vF:IPHPFk[L;>[Yob&7C|[jvݛݵmxmɋMX69lF8榃vB[!Ͷ?P$509#j@eCX}=G?ًݝm5EۼG^5U#96\X5c_(7-6`QʴMg|P?6;y+F+;!kP?F>@%x:f궚e[뿛_IEDz--&1V ,{hKH,o#h_{޾J<.?qg'DN;}cגˌ( WNƻH> ef.C ԥS*@{5:#dZr(_cK6Ob w:Ļ+!FUkbSuicgceڤَ\~0{@Uƫ]H`AS [kZYP +y/nj`5\cxAsӉB:ebwRr,_o^%k]kҫ,..ֵс~P+-=Zi DDDDDDDDDDDDDDDDDkR)XMDDDDDDDDDDD N[UrU5@}ϹV"""'Zv +eʩmd$ _1Aȱ +zJ@U#DžY:#y2DDDDDDDDDD@"R'PdQ ~^r=Lo+%=tԌŎįw޻3.Gs2OWUbD`ի =}$G}MV@GIh +Q#cƦS3"b`wq5nO1rW2\SngR4Ǚ?ncUOi= +r;"9$:E߶g̚)_s޵ +z:m}6a+fex55ׁI $S#::L ~1Nm9Uz8ttPϙ\wM9cI(@m6钼^qc3 U">[ f88yO7WJ:\];rH#]}dm5n-hmKhL{޼L8dYurB蟠+/.sЬŕ[`Hefɥjn?Yel/}֦ o%Gx+bVckHbo/ʎ+'UƫDǦU3Top lfX@ITEֽB!:M|Ao5ۏ Ouk}eoɽ[F2:;N4"*u0P k[>CďdZu1¨;#y"*Gi\}T|8#U +WP_dc9fu7[6@ܞF`r<_U [ZzI$R6>Omnx8Cԭ)mT#΀]6+VqIvK} Mu>d:\"zf[Mׯ{y /9hiu袃ץV:je'-]Y*BI*ɸr&J=[Sct m\&7fa+,فWEƈ=|Kܿ80alKXgGq}~?/iY5 +6W`]?C̳SWcKt.ͣ{#0>' el) l]rF  Q#l%wrۑܝ `܀/>ʱ벓g@Uq΂z45RUCbqg?HR4߼v}TQZQ7BRI }d՘؝Z>W[ Hr3rlħ󂚮RО%[@?ϮF%~r]JF #Go2V }x]Jl9#@kMTP)*ߤ:&_0|ΝK_\IJEm\&"T$xޘk{csW8K?Qʟ`U?ܩ s.G²hӧ쌡y{NW4X߿oW"++v9k ZDWCBW򊿏_ fK G}Af>GRVEa} ڧ@{'OR*_cGO5Wc=_Qj 9;r5V#n6j h鍔՛X#%FL}^ο%}j_;+973aEdR{ 6=´_E»]~g] hwN]^g(kjDm~Q?@}yA^Xѽ,Yaɸ0̶pV0 +Zl,#oǪҶ.5N]F3v[ H7+&4ՍcUD`Gvc.d{s CӠ:0[z{ܖff5cQ}`}G]' 988,[;dXjz~y=VemUiMHK:Z(QRI +v^LcqXxOF=Uԕ}6Lnvk.E,\^! R 8ՎU෩T3?/ަ=nu Հ1DǬUzۣ3uukD5VNV_uX2ՐYP=z-[|VV&9lJ (e]CEм}#Xu[UbKvc%ȶ L܈=!wml1l/}r%UBKWǪzM2xFtJhn'[_TԊ<*U;Ki{J-uUg!|~љ[W bء,>^t + ?k 6VJqv5e'̉:$6bU_8ʛB]r]HE(;uy-]y ζIDZiz4XYoAuyj䬷.עz5ٻu^C?&]mX|ة x| N#Uz@Sĭ1ItdB;["͂vOx^vfGe-KCRG K6d( vt6|w&W}Ͷu*R?uОxJ,rN($~wlǪӷEc6xL Oc3_ OC1W)w@lToܒyّa[jIQB:1]v/#ߔSxvЂaf1'DyO[Xjhjj5$L'2˲kRV[5ZWVݾK750$"tt,K|>?^EPmkb|&b""""""""""""" -\1{bK~i5Kq碐iX y>< CR݀Aֶ"utz{H~3ydcd[1V@ì:}LN7>Ψhv|jpnwjl|fxYYԾcc]'298 Ւø%u>&qbdOSl=ψc׎cⱩ=-au{s;K_ ڕbcaҬE4(Y:lJI:~""""""""""""""j4%iӗUQy)aZkj,\ˢ]ɛ8X)%b"""""""""""""" Ͳک]`(;*N2b"""""""""""""""""""""""""""""""""""""""""""""" 372#ƫԴUꞲXߴ_<}VHV Q"߂AfXN>>ia{RI_tNL]\ufQjE +A|K7U : +a،hvOA^Dr*V!d G8;-n_.\c[=eUhAv|""""""""""""""""""""""""""""""""""""""""""""""" Fb"""""""""""""""""""""""""""""""""""""""""""""" ?1i,(@`~7DDDDDDDDDDDD@-dd&-mcA'@ࠓbq<ϭufM~nu@\kEKZTCuuc[<%֠5]JNXG~̬djE(mkgKs2¬a҆Qݘ(>K ᱆?1UaFm=ܶUq'JʖQ`>v[4OHn7+(FҮ_O⩰DDDDDDDDDDDDDDDDDDDDDk8nV w3Vq2Ļ}Aa:ܯPVwd\ޅيJ16OǮa&ȹRc+tFyrm͍hx,1 O*㭶YS6*TROo}|]6E֓sCU]dٴP 6wbYGQ +Hk?ryφUM?R_!n#r/˨tȼ`ZVSJKBuxȯ* ˒e7ؕzOKutN}7.Jn6#qc;2 +ZhvI$*$$xȢwJőиJ#cYhdVֵ!uEbXe؈꾻` Uw$yrSq؍n7s12)}،GGL4tf\&}rW ,,@=`p|"-|ԺQ_|'y~NKmzbܧV}f;(*۹£uW1N9 +G!owu"NA ;I19l&q*I+ͫ֌#`#~k5fqg&ઽHS^tgm67!*v?}]$:V:iv܁2rjR5V4-qQŭUkA I'z#dI2Z""""""""""" 4-67h씬@'S*\a5J\)޺G}oi=ܢu{vUWsFt;Rj""""""bf>R[vεXBG?J"9~EO|㴏jxDyMzjTIC4qdUN}KjA`XuƛT3 Ml@dd[Utdٌ[:'Gdxfbe>lH b*%KR_ʳNCSeZ]I V|A2ۑ뚖 ضހ￵+GKr:5i;%Hv33d*|ou[L5wwloNfhb[VjtH9>YԵJq>WbPhbfrBQe+GNeqNeevS#ӧaӟ(R<}Ăho3MxڃIZ~y\iVGcʣv$x~S/{r}DdM!@ +r{mK6ۿj:eː4sMeoLqM:iG}daBƫ*M,=<}; z@t:K{%vYVnv@ 3%[8ltՋǤO9uó4d?`w]-b78>QʹǰNC5YzQ⧸%|KvyYJ=-nk{{<ʣޖL1vEB* aj?+/suQ\Ϟ*OGrSRߓUre#԰Δ~+Dޖ6Q])^-=!~}'á2,֪U~3`cY]l7^=k޳blヌֿBV +o~{4uu*S_N̽vG~Se7*[gz*˯NUV,{@\^_#y9K~_zSepsFX,?.)]wܧ뱿C)Zq}Ǻcr?/4E<5`,O-NƩ.I=D'?V;/_M7W}9K~_zJܬDDDDDDDDDDDSJʭ; h8]%o؍f^r+sr/T?.`v~]G/^=Gٖ6 ~n""""""a|E;ʪ +Y} +S@XThl=+b+ɋb>=kkVPymKr28ڲAA"DaWׇ^S +k )A⾽Cvʎ#*z#lB]2`︖`[*YCzh!ˁۿ3x6{nu{mZԔOM@?I$*`? -7Y] +QUz$F~K f&0H +V;;>L70?"G~{z^>73rΡw*ؕW߁r~9ԁ{-AizP:u؂Nw*8k):fj+5r:z,Đ ׁ~f0s, JS{V +x};KXcU7YBw{oR#)o$U[5 ++0C .FiankRT +]vG%x[h{=Ab;U$ǹ32`Sbrdt>=;5;Zj`q8vbPeb`?ʙԇE+{gNhH|_{ȪBb*۫׏n ٘V]~/+"Tz$$2~E[b8bՔBXBXG=oޗs]c1 q[ TOV>GolT`Ŋor~oôƿܼޞQȨ5`JwA_]X@fr W +̻NZt]ZػKab?<x\OEuuk}xHLLFU})Zk=1)c[t؄tmoL$5zi$nx=X?_e>=,Rvf/GeYf'dLj5;Ln7*w^װf%lH^ݷ2""""""""""͕U!j+jP4xPARZUP"""""&>n?!_Z؛V`ڝdo?)LlKŴm@Av@8d6jgU/YZXk[HmBZHѱkޗ~MvR᧦=}ka$D=.fr٘87MUY R-nt=]}|!O#KT"YIP n÷y{r2o*͍mk*u8%vtFzF=&W~ ڱٖ~k®ƳЩETG&&g+a=%d% +}Ev:5>cӼEƐCiOr;3"""""""""""""19Lcَ-zE]`{v#q~jk9 +H!+;N'b"""""""""""""""""""""$ & cMxrWIo -g%e +@pvI^/ 5kMU̽ 7\ݻjG]xtϡŕIK /}|ifdr[PEvWǿz8ܬL웽>)bЂ`oʼS^;V YX+tږox= 3'!͞wMνZn%IxNF>mC~ƺt{{OTn叶}%興?;"^ ֎64$12r *%j{?>ر'JDDDDDDDDDDDDDDDDxؕܬDV""""PFe7IXMDDqǭ#X@cu?,\1^˂UzIGem{ YXޣrRŸO;)eNbh[lUzI`#Fd{FEM#";9]0wy(Dze/=sxW%IPC]` #c c+N:'J Жj(K) +x${v&i:}uþj͖LQv\-~~B.жSuqi/aǶ7omꏢt݇aխ޻{}O ;%\?:B:dURL=" S^1:Vkz::>~|[˿cTVbU>/ykEj;tMImɼSV4?WKt!VbYXlk\y@tgYjԌA'=߁hr\o03ϵESw~jP #}=\e]Uصv8HIb{\Nk%'X1U#Ƈy~!j/XwV’@= [J~ KPb$iz_95UF>,2r[.G7ا0^hhpۂ􎘫ll|hvm>#߫W S t +pOear8sCt9F**,%XW:_OcQ:0ư:/ATk,qWJ N20Vj_+n[#r'wkAe.A$G}xž3yvz{b{!ގN[jP0UPI$;L1r#YY (:,`ux0jl;~2!_MdGA{75y,:G!ŶMXf*4=3o7|UG&N"UnIwmeWs75RX")OܚCXQ`2v6%y+-,UXV7W#c H̏ȴTiIGTc\VDzp@(}`,_#.fz+`Η@1UPI߰(%._MwD~n1l\}?C+#=p `Yf*ԁֽ_#v8[PS?]&rsʼch.C,moHn;lZ==y3ɿur,(\+#*4 6#ʾcQt`?|}jo^ +z%@cX|$'' [*Ȧ,p̱<_zcVXUA,O!~䱳1MuZu\Ob;=!%ʮ#Tgv+P?P,H#m"RKE`{+ wjgXNE=ԫHv#NS1~!{b/"H]ﶷ/dsXXzܫgG_IQ_/fSJEen6jG"j[0P~`A6; ߘR`sYc",㩺OKVDZX7&utK e:ފvns +DK.tY$fR*8 HWl A_=GZ_1FۑE +?+64;9,ЭLVýt7as8R=`or? +>2L+}+,hH=#u"1族}Jomjl_HΡS˘9wey/b\hԿ*=!C0]}̗ͣբ6>KOз+O :OC8|&76`(O]e#T"xJ>T)mmPwI?y/tf1CYMt骨,X$!g 9v&>Q؏؜~?Bex_H=-~ԹcFMgbR=2@ v~WWD0 2K δ}&o1k,`YɚjKW~]o8~(;Gs?;sU-ٶ{ۿ^_/guJMXK? l0ɲܫZ_hz@$~^R]^&e:QO͛xj}|*>6CevfGW=a%Qwv1e]>?~^lk\$ֽ?S'#u7B^wvpVU+bYY](:[ʩv);84|y7c]b68gNNp2)con˫ȨkBCᆁ^(f݋eyuaz ,G R^lħ% C2OS:\Z3Ҧ 5dؽ6l39QuY=X2Z@CwQVT-bڊ>י125ՒTZD`{i9+1Ϋ&uMn]}|AS6`Z,oچ( f|QNezՊjha߹^E~WvFJ-|ZQF;vIcM3볶h8dh^D[s" ]U}`k6?7 ݕ+M@{r`;MZmSSbx^Yԣ~O;KMGჲ+B@`e3d\XW/mBXZlJ`Wc%R%(-WHv}77 MFwPӀ鐹v]* GA[ޟ#;1dUt7ҮYl;G,)Mus^; )j{`a)яCSf(4$c``|}+LH SE:᭧s~GB}{w ֟ULz97i+mڏۿ9g#N>g +ޢyv:Tڦa<r(/m"ʖ {K3\ql~ [0&/E)({P`=-5cJA;V'~!|u:Y?@>݇4{pȴ~Zрt-ea6a$p_/ǫ*ڳ:鼥Ze@tuUwɞbq-ȼ):5K1|B:mj6Cz'SmDZrArRG_IV`ٸ>~x98u[eˢ:Y*Q\\hd5@*1cҨ{x<.NEoFNE1;cJ[f բ}o29Ɇ=D+$wOG2 Qkwî.#gt5IAR7];6wOӯ[8)Z 7(_=A݌s"s.8@LOۿ9^|VȉZu+SJ4: 'spVG' Q:ԇ':TեŸYk߿eI)Z ",{r@/GO{C\b ,ka:J|%a<B~Muăr-l`V68޿4 +S@GNF>WE*=I*{υ/euMWv2ܙ?%MnzIdV%~.SEx+ PGiiW^Vl=YE=HTn^(Ж,[Z.Aae1)SZf,BPINʒ*H2XlMk=(gy{}k~@ vjQA$>eB.445CS< HëKv}y'qG7Qw.!bT* mD[\,tQj@cCmH[?]@Sӡzky|`AhY\,t+R@P4< k`] 5E} zGOǏyz(+_(Q+V;ؕ][_R<ˏZ:X>l~|f/cҕ;= +[{}fQE-^u^3BP +(@7۶ЍԵ=;L*+`R +[=R\:]C2v.E~?jQJ߂%h*U>PjV*gL*0SӢw"Y>%Ӱzz[{OGI !FF޼봥uRzzvuKNYm~̚JT*(U{')*l\u)e ~~ 6V|An;҉Eo-H +w GP([^{s Fŧǰ]*(>5 r| #5Ec:'^Q]vVz@@u66 +kgg7*TYRCmA>AscUZTP},WaS Qk|ys\/P^w2^>zChF?S1>oU n9^I5ծ^usqJ+֔k]iDk^*,.2~(>^ȣljLN7ǢyE]:_t[A NWV2;Q-dWX7b8Ġj{}dtUԽZ Z_y >_-/[nlu^ۮk ؝÷o]zٸ.2ͤmMNUlA}Հ#2ħ ε(nN\Jֵ +@~%%hZ|@[\벊ݻwdV=w"dxŪVbjYA*~ǩ QK2?֭=A6ϿQ8Z79ߝ`z\W*ϙu@:E1]MJru֏J{t]:ֵ}%N7JW= +)bgk¾ c=߃.WdV۰ yźSY@4huJ(@?pOQ<Ա $y2/u#Ū͕ZtU6I~$E,@I>L_6UHLJoW>{i ~T]]YJ١uMf@ yB7ZwÿgJnV% yٓQЎ|e`TAH,.@o['O%vs=fg+ӱu{7u)XTgVMV%ZV}.@={6~}fGc#^: xPj7I>zK0Qӳ}7XyL cfנHH3_쬬J=Jc{4v&^/5eC[hfRƶF +XFnc)Փ~*u+,J8$ifDLMg7)ƶrxˎw^lu"IM[tއMV~10&)I\uW_Z'vֈe">@'V4K!Ϲk׏[BdZ33hX8zD ;$2~ߍ꾝.=sXv͍Qc@ߙg VV-,QЬ3֏ig.|frEC0t B޷GUrwqffR [P;:n?>emaA" f$}f6=EJyo!~z?nhn2qkD k}P# [( l: ;< ,Km6E8JfPuԞH=s\ݜ]|u$Yrd +` :CZ9,Lګkm%ؖFQIc=pNW.4sԩ 4[>mdcfiI[?6P~ϴG%ft\Zh/RA8 vW YW2Mݍ}"?M+c̵_ōȦe^q>mm#C6~/.Z޵-[ 2?1ʷ%GBa~6{3snR-D +C$Gr=L9W1}JӮǶSuTs2~_U_PN4o}z(ʯKh660]U764y߆ѫ R3w*-v,ʲAsOPv^NOiEwma&q kPhn=&E;*GrK9u\Kr쿔VUVROA:d{2?nkoߥot!M]A6F]Sgӟ؏hj\Ҡ(܎cqT+4.i:Ab[[:#S /✬?eC~MTlibv#ݒxyx[h,{A(H>Tx=Ypm mu+^ُ@S(/R|ʚ,=7M}/XF>C-ed +f:e//[)dw9Maē*|/#+ȧ5:k,`Wd0Y^ +2UF-ԕ*UPkm ;?I׉wE*XaԠy*|&W\9;"Ft cį+ȷ6'Z>F+|4F5iDfiWnIW*v=KۿO3! +=J̭ڷffr͡v\ B{*jȺu{n^n'+.3WUX ,AՔv#]%8^3˾뫵2Yl:FGV +(AP7V## R>4FTǦ1b?ia3llQR}VԒJJ_ l_7dIk>V ozg`#X5CoCT +_O$5fkוGUخ܏z:8^Lwl?@^˹%܍5=ցU.F]liNs,t^@1` #= 8tقu}Mn7؃ALs}f Ϋ6kJmƽxLŧ2]qUCwG qNg. U]sZVezFu^%jQUͮ~@ސrًMiXEA}f_l:#+{κl~=:jOrN.\JsX͎zІV#5 +l鯨Y;=@t3\^jO +z@~fu;eP# 0ynE4^/Y] :?Z~=ȧ%v{,ߪG\4< }&[wUȔ,Tسzv߷LN˫u-ZR]LA>}^reZ):}kqoˮ{YWH1=]Z֥N#k sSXXWVPi'>ijaYZ׏uVhffd~|ǹq9VrgJZXV!o x&;b싿.Smv^?% ˭q +HP#gI=,م~F(KVze]T'RVT w::?x6,JF {*P {?RZcz#?~EXlyf`?tÙkRQwUy`Vlŭw +7GKv~syU\̈N eوܮ"1oo z̪j`b6 N3.~>p&RCح[GЀ>ʻ;ĺ6XmdR)zy>%̜z2Q[2pH}~3f3N|B7Em[Gm̪/^,6-6B+$!$eG`ux@u"@ֶj`NWC|?:08_&@+0Y(YnVjl 0mx R^F%-Y.='[|<+AGc[v'ܞ~),JaV i3:'knTiB9`Xo{GR؎TGBo:]+E͗bX ,>ZS; ̚N&0?v5nP2?~6[ŴJhùd ..AB6=o%30rH[-oV(OmMhǭ.7Ԫ->\]?b~5Wד*ffZP])0&ÙC)6FQM6d< 1pՖ殀)Ww#C|3yquovLM6K'v[>~,|issGX=o +1= hE}o3*ɦWk2w\[)0m6<} 0oTZ{`5~ky{l9/CaJ\}qY_>}];ܑ"ʩG{:g~-k[Yˉٲ35ݶ͞Eի=+$?T@;Zl1y\h8ϵ,6"Uyww'贈S76yNȯ7|QF.79<2A ~ޝd[q2޿(nsVOpzo75 NE r,ICO~ t׹K_^bf`;{Lo.ܝ7Yw@[uvҒ =F6-E9fF]}l2c>̛O5<,bVp~PzGLɿ&S~QԆ#5ɬvHUfwTb\c]7Ti4ea*{nlro1Y- UJb/A4+;*nd|QǮ'6.RLfsoee]SC~(>ߥ}nP5  YkJ 2FDw8d|KuP(dm57ƻ\vhM=[^yk+oMtU i#NkrVqͪ"m~ѕ #[%~ʫ7ǶHkЬ%J;qGs,Ǜ +䑽toaz~_XOAm*}կ>ҿ(,ۦl3^DM!+bH-զqS`E+KkܹcP w V:S>[ɿz3Gf7 bUjʬ\itC$G.Ksmw̚r +-x@?8kb٘mvZGT^3ZvUN>&j[ӗej]XK$MC99)}ѾǩJc x\l*9ZCJ*'/ zA + TV'[z&Hq^-iqoz O,|N}]_ecWbw w#RWƣ|5lH:e{2jZ.ð::wIj0/e~R\  OA3px x =N-YW(ta>YF=u^:vql7{)튨L31ԫovSE*F7y߁LGeEhʡYvvGwZޡXG t;'*j誻vvtˢ73*:jTQ^ԃ`IbWIiOLJjul>.=KXfއin +MϏ[9PwHIW _E= v_(;^%L +0+"X.شҨ, b;.ckǩkRI@o=׍]%)vb L|5ŗT xؙj38n@(ȩ_Cdlhg87>.b7(Ծ]gRJ H :|2|IekX[@Au}vW=*.EwԽNztUI?RN?s)F=~.ᯆǯ+uGPӫ2 ayx4g}kb0ވGZz]Jo>䟬GIzֶ +:<ب[-}] +T2QҞ{K|FүP޾p}fdҽ GpGC`cѯ_bōf%St>̘X6%M>Fvv}~`׾k^7Խ'Zػޘo}KuqPҫ[Gm$w28[S5~vNX orfRҡIc;;S0ߝ0іL[EPⰁFoϹ{ŦJX퇾x>O˘\/z{<7 ?ݭzkMO8f6:T4F~#F:#:L¥9Y64oZ!@k"i|9_mYu) ~z{: %(8Ƶ5AFKvFLz@ZgW,E wEf10R- +l!m}ɯ|?/^Sv=2՟qИύY +@Uڒ%HP=ͮUUik3BU D{~Kx|V.QP@ߥ'0N8Jױ:Am̦= vĵ,%ZbxBύkRF.k0r9ߍe5DQK-`XV$a59څY%'!c}˻$X4g#9#~@6RC?nHr/[50fИ܇JS=H=&N:`f6=MJV:}@}[X|m  uO8Nl)m﨨=$܉VZt\שNlmH`t~'lR*Vt u2MmU#x޻oλK|} J,[,Ēu3"` (O#_),4ǧu; U.@:eV < +',|lczD,~mw{JDH!)q,chHe$hU]M6%9D-Stmu 2BV"'R'@uBc|a%T9,ƞfN'8_moYPT:#'˫>弄Xlp{#s>!f[l )0Gj$WfEumgPzoXxc;!*$~ԳcbqLLTSa*{߶\DJyԬH0y.Z)Ŭ8]͖-CnFrt;?y""'` 6IC*Q#qreRIKP24t~&""" lW]oH>E-dgwͣj=y>U =MΔcZZ8t+Ir5hu3h~2B%iߎn6؎=;kP6e#$lV 55wV뾢:`ary̭'FĹ,4Ɠz{缕<SX%~z#ăP[!tEjOaM9w>5&W+Q%;w5E]66-W̫gWK2蟔|WnK?)ޅ'L65 wrYbbR~Lz6n] +krI>@AJV205zGc}̞3ZmK)%ћG 5c]}䭝EOI葱nݤ7afb21Lu t}}5ӺqQhF0 [I Xp@濉29.xZWcfC0{̼O6U:f2=]]]ƿ Mlj5F]Mh6+g+;P ?3[;3ȡ3,KkȰTE, uմF=V^g#`~N +CwW:>G##-2ce`Vjk c@@d~eZ(#e=H@f$=mF0$drjz}/8E]6^qԽӪ,U *yr|/-sӽ#~cܟ%8T4``Zu$ c^ryUs0f5 +QtOQ ǻ3'EMwF;+-m%ZMXM,^.tg{Eg!Ul(:W19UETkr/WePN8l|K$%*tY0]TRlCXVC規WVQItC{5.[zk[yE*K veK.FH ON]fD"#cYߟ l|lߙuH~zlOCPjtnU$lJ[]Sy+l0K+˺\`\w;Ty.NmjZWo!;*2EpBH#fJ#_eκ&5+(6!QlsS+H0>hRT#Qz*lȪ6+W@}yDr_e,RgQeer8%a[XXF`k::„):/233RXZ"`şF>oO8_^N-v].U-nK؍ﯬE|;Rg{"s'8܏ّhK1f]I|s__zW+z+>0b0 ~n.KrWWo^e +e9LpM^UI!+SܖaH7EPT]_'|Ÿ\Lnn0zmJZ܎i<{dpy܍4ӓEjf+|պt k[Q3-y(@}N\6[ ϵE( EN=;d|-d}8!:F,[}י +6-I+ `!?$tRfkko=5kԏ⸬mGzO}Lgw6 q{Y=U}#Ho qT.H[?E4[v#^FpYmȱFx*éU Nۤw'Cg$ UؕSz*H* kz3 ~Xf+S"kkjةvf?#~ZTԭ !G4AX:'q9BU.Wg)UҮW3ɢr9BZwNԍ~`W1a + +]3-[zwWcX̺Nk{38~|Zŵ"`Xk7 ~t_0Y cUKrE5wѥBSb~*[65'U{3Z~RA2SrqHT[)'Q(ƽz'G^edrZVRk6nebU*G?gRUU;QcK v-äI]| k*j`=}*TPRt v=oǿN3Q5 +7J; o,\-@o)׍=n?+ƿ21?a^A:wO|mr/W,*?(Ě|w _ _}+ +P=@8/;} + +%r^d}&OM=]u/WOkۗ&y\.]Uӈh55 +Mk8z־uVVuk7ܑ? q\fD*:9`lGIPF3xl?z-v +tGRtJマù8Xn+ZXt{m:6˹s=4UEw}z։ζP7 T+T#`ɛK1@ hOގzk)fE4yYk3& D{y5k U-;~U'oU`W+'#O0򫒡mya~P:{}&X ̚iP=a: hP܏g#ü7u Y_S#c~51q-ع((c@V20(w;OXZUHR ,֕zA]>o2[F79u V% جoszqof6MY6tmF«7>G<~5Nפ*yиRTV`~F Ҁhw-{n_4a*;{-,-b~M S2=N|-q8(FN%"T!OJ[x?i쫑^O ԬA~I` Pl"[ܝ}fRɕV -d#Iq"8_?Xv; #{+?cS!_RUn4Fϻxyqy|Gt%\=I$|MdEV=D >CO~FUYd ,yq}82gr?BT !Nvq\bV=VSf)D~n=j []3 v +O(._gxԒ~5ضV_̅R`]&{K*ٞKH(,e'X Mν,#PHq6ebrM#+~`S9,#MM]a 3겚W_b蒀oy'_Syj_8p2qM{Xh"Mu^5n[HJ(U_B[ vz]$.2q%E +}},H)A[d*+$*w +˾?S2b" /)uW~Qu-Z_Im2}vb9'S8oe`~,[JeYKge޵X+$F ؙ\Uuݱ}wdfF8*-MNAAR}3v|OɜSE wΌeVP>V^7y,^u^'MJDDDDDDDJJJnV""""""%"V"""cr ށ <F?pf6/hvXV״>zzR@JJnVP,aaW)} +OH'aA; +><%u1ǤdYp=VU; _  ~&"""RV"""xFXhb""%7X +ʿ,o)-ۤ_Y~*/j/Ft{oYyJ8;sס*/ ]Lʒ#U$nV/wQU+WH~{: 75yeRl@İugbʬ=N;2`6$Oyw6uWXl3^f +"0HRe"'@OMj_/S/\~zRo9Qo0:+VD-rPeUY~<\SST:ʲIP2x6`C]h0al=na_5dt?l;/#Llܶ9.O(N߉3~dq=,]brWL0#۱䭙Tv"vӹ.HGR2%P?t\qCn^Ʊ֪«W~}kX`Jr5X +~vJ;Mr?*ȯV.Ʈu._M[EOJc`=1 MO?I+bD~虑 )/\K)wB`]V($>{߇c⋙z]{]mh,*G{k@ĺU}wzYO0!.ʳ Wu5:*w&%I+mɰ7sH҂lk(U0ߑqnɱMVIQIKjB,3v2AOR{_~7߷˂#a|ĥJ;@Unu}wQ+VU.H/' + oS.ђ DZ$i}2<1mrXv{k nmsOʱBoZZ?&x,ڶ@(!;uv3zΓXQ'UMzYmkR]l!cyHf1VQ ~fU'3(ݏ;T+>^˕` o~w2Z@K2Av ݐebՌ1.2ʬ9 xjI߸FEG_aKlioւkņ dZ@0E'^F]G[e ī0PI:lẒ,My*LE^ֽzOP^u=u،H @;E]~Z:<9btD:^ #f{{`H͕6;(4ږt :'FGE1EYE E,4+lkb~$Ȉ^U渋)a䯢[X2T|~; AN#;2Qvxc>a[g3躼lbU\t +'.貦e=|X̷pXY4Ҭ'E*CZ;$w34|=cr*rf#zH>A$%^)Į:Y:zRN{ɼ]+dR[t^y|I]7b%+o;̀0tf'G߷jQ~3y)Pd2aBl(:>*lNW KzVߌuk~@Ƕ"zMFTvVlu,~?𽎵'W䕸}Ko$y"? =[g(f;>-=5?X( G3W +դZ ) {=Jgv*VZ¶8V?y){d^bWQJztux3P %z6i3S㸧Kz"C]tu7}|̼3#,D( +tE{.|v5lUvu KX1=$-2VW'qS)u 5}I[ZZk kƦ;Wd6v hZS ԪBDMk< +/#ʾZ+ؙbW#m~܅u5^.FExQEP +ǿŔ}0q)©RֵҪl:"k_b~S؍Әǣ·?֦'|*{s)NPFAma±|xؙSc(+a؝}y䱪ɯ}֮:akؙme_cө,Q`P+ybpS[ LQ]GVBueqGR>aV–[:[I)RT*PjogqhV6= C]6 ݵGdȩ3h-C[6X:uo> x+ԦW^vb6.'6YϟyUumPXloD|kp 1z/%AFeՀn: :652nUUu7Iڝv~"'X+gjXeU{UߕِnԾ9^I]} >]g}5f.4{ANG#Y:kߧw:67-ޣ|T_W 9zӿH7*mSr]VzzFAv2S365]ԫyqSVXt$acq8tOFu,Ţgk6:vf>f?5 J7][LE+m %[ƿ[QRbnV; }hfr \q{ ړ +n0\ ħ?@IX 'ȯ*[^OgaIsøb֏xDbxx^VY[~IV$}ϓ+bJ83Xz@ .ܟlx-?#jIP=bpXX7M5tn=D$A94r@JjCn[%Qru#UѿVR?i +K}.~ĵN؏m^ڗ08|N0ǯ=Gzy#-{ IpRϽbwdeKru  JMHU=~,1ڀJ)CX I~65x+zTo$vPCz!SvY N` y([z7վؘQp.Pq-WxFn-ԵB1Ҷ}b-43uD-*ofx܃V1d;*H lج ݙ4b#^Z:$}M (:==Ya\;YPw,{-~3:da`APFէ.+TV$L'` 0~<E4[vv3*$~goՊc]WZ[6|feWZZUP ^Um]JAAjZkG1+I2@ZX + Jse(Cv]xAc¼kTsPᅰ7ҽI*(LjֺƕT6N[jKё2 6#D0L\ZVu;tC{{K }BRΝ Ŀ}5RCWl,qbkbx=NI$f';$o##%!>ծ1;ӁߍOVgý6'ql"kU627ml O/gܓ#ڬ;V#:>[S=@@uw>B|36'Fv=޽յ~ (UcNpx|_Ww^) )p&#Y7]ZS>bdq6zAdwP~= +`_MYh{ X5q +ng#\9mⷴ؏`>k'+ʵݕ!ڻ^`AN# uH+#XwquԦP͗&`ğ!}]L[RTvJ?b=c +Aeb\O(`;il|1l?>w(e;J)|| e]zH3χ,:5uhc8;oyV b$I$'$$f957tmlB6%n2VPł 0_::d TcYjkc +1,Q z&_ʥVMշc,\EYk)mѺk~'e\VL챬wLlE, VS}$c-5M0-a&{p䮮kfCG-х8zՉUB= j? lb΁VF(RN)(Lzh46lI^3j~e̟#tzۙ)iXMa5>Ie@ gΆA߼0RUljK~n+!$i7~-gnu{r^112K,[R+U ӱ |.sg-OzA绠9:/ڴVJZr>P=Χlu;VZX v#^:ԦnVeTntN6y_u̚Qye y}~!jXz.ӭ]='NƻIDDDDDDDDDDDDT7AJ+ +: <|燩l`\WRU/`'Z^[Y5HQw:330` +ŏK[[NzXv#Ŗمg(oW'z@]wFt-zÇKZ3^F6a-H+>Aߏ&lEu1.؇`F5׽/c̽;26=w-۝5Q!QGR'_Q,7=5cEut|_i^rǢZbté߸W\GܲJP[,!@v~jY񥹕f@Vx#xz&΄ +8|̇3qS*yV5j[tPnAֻv|Cf^UbEc67YJ( 4-߿$*E*> ܧ)uYx8=K}I,58W?R4m%Ir=T#Pсߍs\2ִ,PVBW`kEIX/r*Dnjt +UֆǼ9l6J誷97C:OC?V=_|Nm8Y^VT +djʱ$wz>;H#9-&è'Ƚ>;H{|EMJSE[k&uthiFϹ>u._AM(@z{ˣ\+wAT*7my}| +U2zlK^|v 1c Jx'g;I'Cy6WrRk! z<09>R.*WǼYM/ANpS>fn}ONEVMKmܞ`;apd񭏫ml@mFU[YX.FjƯ֨B,3 N>څ fQF—L.k帛!fµ-j2{:~c7?#(mF['Hտihq/1UyG~n@ `Ƥ TPw>o<_иeN9Ac,WI?/q\jgrmZb :vz bfqr=}z`bf~χx˰NSٔl"8@kK6peC<_P_F)as1g?/&A1=FD.cӲP +'N&~|^8>MTbjk}%3? ŷ^Fz^S7%uztd!Nt=߈+׫]:R{>@ic#+աǽnnFwu@BPN'Oum9WT)]mNCL$o=bcccdddKYV#8WDv6=7#s]j+T$éF nloKwFh Rt;XjMN  }f~E@ړ1^;UU[5Ue =ָ%gm޽LղZ]]l1_y%VFM=6*A})!w4ϙ= 31Żz ,?N۱ 6^K#._!%.R{|8ͯŬ!Bֺ 3""""G|G3[DDL;N-w#ZOQSOnݏi p8ŭ1QX 3!~*\lfGXG듊=,e=/ZPk7$qrͬ[Mb 2o"]gG'<`r{ý͆"""""""""""""""""""""""""" pOpT}:yj0aT5bolǾ6b3: |T,`tu mNR|<3b"""""""""$gprGKUnR2l *Fa&CǴ'yޘ\NheH&͸f=u$؟'N_sj֦9\goyYrXikU;B~b7L6*$:>Fz܍^go$*tOrN]Xhl{.1rS2J$:]nIs5ZBzlnz lCĬDDDJc3 pyMPN > MVSr18bKUQW9/]“݉&HDDDDDDDDDDDDDDDDr\ed,_1ڟOdQ7[G x̞uNwWgL{X +# +=Bɨlt+j0OC?O KxabA$Gƌܢk68촫&Š.=HUt4GeO)˯&e2Y]R4~SG׼3s1&KZ\FλF.5r7ҡN̅X( خv09̮pMz+>x>P {nHb[]uvPq޷bIpN57-ۼ1@nt)Z!r(tI/k6pegtѽhukΆ-c[p. Ico\ZrnS=v!zd_Iq["{| I#^~_W|bT|Se?+亿&,WCneDD֣ͱqn AXI*ηgV t!hO<`Py1Z1y[k_:1cYeJˇF&Ǧ]h*nE}dDDDDDDDDDDDDDD@VڽOI?n-6UUQOZy8\U +=C֨]LKRY'.69/iW`?!Z'_׍?ߌǏU[M[QYy"WGwֻea$glo[׾/*FU=uc2tۆ +ø k^37|Ʈ+R`W /i񹙙5cbmhk;^719{5zo*~lwZRaN=v0o51xn3eI&.Ԁ6O~SNcESSTR){OJ1a h}\OG 9vΦ=H${I?13l~4o_+? \e:`U_ok`+4 ɑ( L~78rT%+ zhɔc2 0Fsׅt@ OOS;;ͨ$Fc;Ȯ^EWYFG}' h\WVR>hu,-'kkQS=> OV6ZjUUL|7_Xn>OXhV6v KEuE-;6o$ωepYN6Y +== +{9]0gc +̖Pȫ8C8{tO޽~*VfْFMju+Fs ,F(LjִU{}6{dljYë u II$II=2DDDDDDDDDDrVz^Ak}Nّ٘ۙi#iN y'߯[nG2>7ˏ#܎y?!mwfёs'mWR~[;'آ""$_3a$Ljj5#>#' 2!kE}C(]L>̰+Ub$]6&\m YpThЗ2r3p|fǮʴ:^{IزRF읜$ww㊮[?$ŪZb/Zl;3nDV+GcU z"OGɯ-2 +( TojH#ܷ}.A ;g1*?WOP=|w."""FF30뵧;uHdSrDpmJ7Vz#!}UzHb[mƄ¯ᛪl5,%tVsLq+7֧ijb!ڿ.Iz!VW1JXϛnJzpZϝ 6ͪ""""""""""""""""""""""""" 5|pd{# +=b=8e݈+_N>-ܱ#"M~Y Ns;1^nL cu%M }W::68n77Dv+ j藢"""@<_m<~r'uTu>dDDDDDDDDDDDDDDDDDDDDDDDDD@-WU)'gwWz+ախ[KzCOUNW~zT/%؈S!2`{DV""""""""""""""""""""""""""""""T +HUν?s#itP-(#L_{i(;DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@+Ϳ*x7ܵk`a:y:r]L-dU# +VJaXt|fs9,31޴p++SugDzBA wcƽk@{v""""""""""""""PGX0]U +zvjGpk{/en0`*x?6O4iQ7Z_()=Ċr?۸ㅒSb0-]H}m"&L4.2B UG=Ȉ/؇ WHfò}8IPI=f>Y3's_~S|Tjo/4X-+zHWpdoĕb""""""""""""""% !fJУ սd"?[S6"""""" 5/yVƾl|lpveRT1=(øIɰq+è-:v-c\wgvv~@|I}O/-`U+RMV[Tmkd.DDDD@xu.ȫO,oʸ h6s[U<{zj*a:* ˈ =90;(%"yU,4awOHJ5? Aj^,[},cם-Eic֌>͎?eY]Wَc>wS ,\% sSŧ!ʑufLDDDDD2mƶkVH$ z2~.]ܐ?[\'w]5χ#'-' +Lzlq*OqZkȦ[T۹?mIЕ$x.ߠ _~"""""""""""""""XۼV' ~N{ c>6E}y/.4~AgcˑE9*?gLe*4fۚ;?>U3jV5*rI:>3 QMDDDDDDJ3f?YJr{x2??1n3ġHRdhrkG3s֚:vbu ;'ljK;&;}Cj7<~T)@aA.ė_s{}l=_~K:*_fDDDDDD19WPW%JNv &MkelYAVS K9&s #x᭷ S}IjO%OC}=zDW""%q۬}H2;\'mzc*M?'Z ztz'2DWZ&I'@GpOqa/Q t]FQ/+' T [9,Cu[]MY CdL[-]>_O|Qq u\{|ǼʦnB.""""""@|oʷ[\E佟(6d/ * |Ňwӆg+3zùXs +=LF㯛)SAdWÿ?sou\"""""%7}rq|S6nV"""""j';QФlT%`w#MJDDDDDD0y$5Վ/*Rަ~/7qUԈ=j0Dvgjfq ?,Wc}WS]/cWX}'jqb{!>38v[>}ѱ3>)<૎Τ{h(k#&T6ZꈣeQ)^u+uMԎ6Dl}{k\/~ud8kZttI7rE9+W\cqM_I<U(GAG7NO]|*=fvs? g3\lJN +Fj=c]c}dW]QE%T(k,'ʽ vZ 9ZVjͥFՃ`ͭ(abәWgʡr6MblO?'ԯ|n0[%?7 wxt*O6BDq`H OQ"[='g'MZO  M#7A+,[ez ,SGjٯS19v6 +jW~?'/YR@=moJL nE/Ibea݂9hU?2u5]#GKW)q#zU؝d_*GTN~""""%&ߪbR ۟ߑGc]#sWȭ+jޞ Goc]Tg0aDSbry|]^\IC \'8i`Պ}~=?(pNl(Em=I6L7(7UxZ7w+1+:Jг#~ ssbͬ:NL1+qe+Cm5= $$W>U)F0=$.@&e|7'Uaϗ>>RjO-fٶWAff Q@K0!3៕T'&ǰ#v$uJ@=DDDDDsdՏՓ=E'Z_w)xdG}-q(ۻVfͻģ*Ѷqd~ˈBBl[: A}fsJw6+p=Ll~-y{ֺV,@ `7QqB\}qQ9[E`հ37;·۝e 5dV93꨽k]af I{.Dr }=;]#7+'#鎁#c**uKA^::DZ}tFu) DDDDDJ1N1<.w4}*GB癶DDDDDD@"x8㹕3; ?IN@/%B[FuPk=G]ڦ/#Qٍt7G8nZrSh{bdul}Jă!niS}#&ԬDDDDDDDDDo1{$^X¨2F|3d{j`h8<:_x6rrl̗_>H}gn5T:w' Th j@U~Ei RmVuςepVlQaڟRtf) S#G:"wםɵ@Fԁo~NVX +^R,A^ og?@0sRNH?nbʬX4AGYK/KpWlQՑJgP=͓19ؗ%S}3 zT_BU_EvMDDDDDDDDDyoX\]eNM )c ojmj|}ϓ68ܵg`#ֲ: ʪS/l?+q}#L|ShwQKYT:QGG$GKb FvgvN?3Wuu M?I7ǯ'Wbg<m6TJbSowSftDDDDDDDDD$$}|S70M@zq'V]""""""" ~ VnQoͳ/:$Oy/ȒW +.<ػLijp2l}$Ydc>AmߒT|.i1#փѿRܘ6ҞBN~c#[4?P"f%LڳV.lg/]m\~&_BuDr?{n65xu%4DE +DDDDDDD@5Jrz>3cX<G'{lr=*,~rt~BV׶:$}FFO'UtZx[Ană$W-S:3VP\{u6i}~蓠V"%:sW:dWOx\뮃Cy C$c:%C?G( :ap+spI_yA|SGw-ߏO%_s=9Kpw;˿0P/slAG(]Xyl%&?pNXlU‡9 +*$-K+7DlvRӧ64c=} +?,~3k {uulXS \ PKq q@Ԅ~ۤl.JDDHS=']Hnl\>XCiePUtlO!g\"vm͠#i'(rk[ze 6 +{bYgK=3mig&qj +(^I'^NpIH|_:oM~aa">x+;~GnO>$FsV''?@R~f,4zJGz2wZ9l+YA=޻a6Z[T2A;DͅN>sSCgdz6!Uw_@/_KvoSngfϊi$sqD~տkmxX=hǯ*xb""""""" EqÒݣpZC|Icr|~MFztڷOb .73h7RM6'vk*tƥ BؽkNC]Q YYVH6vnѱ~=UQ%x_OS}X>y(H̆: 4dXc\ʍ3sjԏcmۯ@ŤVÖ]zbS!ìt;/;rZ:02?9k6od*}k*E DDDDDM?Z 9l{벢6+!Oy֐Zfs?uҏ: ?wPIMXOda~5VUi`ŵ +_-7a7~?J7%qKE -}(w㰈['!@:.U$21>2t?,T$zfq%kEzI?(HOe D5ܟLBCS@ҷ{3 ?ǻG?ONO>K~F* qv֏N?Hrwܧj1>SGdӉ}J?y?f|DDDMCke+zӐuUUVmiqяJ0QXH^羏2b""" /G:IYCk[7">_}m4'WO֤|5'?n?Q{j&?"9lO4K!s+kRfcbv'_c# +&wyVZ a̧]} uXx?~"'pl@ }A؞"""'Ytuz{6J$lMwP 3~-)`W.\Y I!w^2 + ۔AA>8?IX3N +kQQBn?[UԿ[A.qx*S,ǻ1I_ +ʭs[5OI}<]g'I'_AfasUbD~5Zo|[6s~=uJ4;oƦ#uFx܊n;",emFշW̋O#?gК#߽D(\*qR~N}[͊YCY[R<޾W# + nbCe]g& MoN*6Uǩ`Oqܧ[>^Ead ɽnK8.[$JGVl;/"8|VazDhwSG-YTTu4edcj"@VUW0b^_CܕVD¯s;kov #Cz(GAַ]Řbئ~̧fv?4?qӫ_ԎlV_8oc|CAO)#Ӿ^wuVK+~KK] QVKy kdq-[+ȹmLbHԥ"8߅sxmegNZ2E'`+WC@G{373+2WrmNIHb#FSgb?ʉ:GHmڿncZdv~@e`[%̌Z (-s쿌pu|e#7Uk,KgL.?EdW~-=Dh؟ڒt|v3dOJ WYhqكcr_0`wܛ쏨s&Pʻ$uǧ"J޻u-ծzof=Gg +zG͛'n?mP: -m?>Y"9_qonAp&,F]7_N[>ӻ'`z^X==ə qy,gHn2\zk5uny?I%6GI_GHmagvr?Gkg#$~?oô*1F˼uj7Iqȱ,NcRyiJ]n77:>RBYA3R>%ZľИ(U1.K5}:Gc>'3)ڪ0)i'bux#+$`@ژ\ qRr, &# ߒ\7'9SeROޓZzӱN~pW#\^O 멭[T1lCԇ?ߏp'Z?(4{'S[kYɲ]zcm o|uQʰ ~#D~"xO18 +,&Eѻ@H^=<sj֊ +aM5Iv[SniWX֓n-9n6126Տrwl{? 1,-YA=!^ee)!hȮP6yք8&|z.;v&812i'׵*쎡oߴ?~79!2=mЪ ='D lH{j\0mnz~MjzD5} jK~1䱙}vzd 1"vKi5jv63'KbWi~'`Ѳ?Ggw1!́*J l7ߵQ3iz#dSq:O#룏8Գ\TZT$%TOqmB=]ɧ+: c__NKהy ZīY8MٯO!7Mqd~o *GfMg=ĴT5N>QOiߵe8;oLlL$l{*u |{L,n&NZw>>O'rˮj sߎRyŵ ]ޛwen?Hu}̚_.rvl{#L帬<|_UJNj(_OCaT̾GyG˳7zʞ'W7 /ͻ򅫡R=jGppHOy>eи{?AU˩:{L?jJ.kBzv*{>ggU9-n/u`[_ؒ4?^ԬCǞʟq1qFkw,^wT$&EOU]J=h"~; V>^ߤ~äO=8k2v¨wkn>8eQ .A_}\5u~]w5 k0pܟVk檳3%2>WWpF?["WkQ$h%?\78-:{1[!OVCgӒm-)E@;~2f%:z.KJ#`xxXJ=B3ʈ!yN*˩T5:+bh y|6]0Dμ\OkW%bC|_ǿ#-"kuEjHqӒmHX.ecWSrGR 4rO~eLl+u빽18ʍGOw$FWo=b]YHj[c=OuJ_@F]Ǻ؏q!. OTi WjܹJ%5b({ 0ҫX~>{ɶ +&6&m1Dm'zgKݻH'Y[VN +1rʷ1/ g~*Gw\OÿpVd6#Y>6ϼ š1p=Ժ υ')ĹP PTh3g3{#V߸̍Kx¾wvgp;~TP}2uIbV`<&f8>xL>cS8v%Ǣz_ }-W NskR:( d! Jn`zHTM?I55rh%,CU[}AqbE:GnoMbFb&KTSaKoߐQekls9V(*I osMky?bR?Cof]74ڸ`u 5J[}!@?>uy󝗛d +p +4Y:`Wg=cӓsT;v%:񾡭dѾ3m_+ݾ'sT(v0߄~:MS@zZ"""Q :SH|8~4To?+/ Ƴ[N@+6U?6HnK{T5|n2yْXWR|Wcw~D]T̬v ֠7d j=ekTe +C56rY(ih~|'qՖ9}{l,z,o0; 1J ~ִ+XN@w|1HMy4ֽlGEU W2S(lOϕuD W_h4z?>n!ew'\Q_Pos' .1i%㱱ZoJ(` +2j, t@5tc-e|7f;Iw8Ջ}HKK|A>T\ezKy!E-W7×3㑐{Y.MWr4FgMo#8k ó%ZmoQG jsE,w?'G~z캱kPb~Po{Hoj{껒H6hiҿ$-/FGP 08<>0c,z}԰/3Y?#Z"%7|eqƠYN,uHu0WLNc4{⌍{w)<9Y>)&~xlJkk]Q uت v~fw2aX#""""""b񘹿][ϟ"B!Ԣpvu`hYkJYmE|Q:R}W WŹ>),T~l+'^fø6`a"+o.7ܞ qu'w~GG^57ZT̠&9dR~oH߉>!:dεJQOvs1apz O DUT:=cdScQ/eXAZW KC6"x8%$w1U*U7UWV@Gb |OqVY{X`aQ@PT}{I +/u&=_]9wWm I668H+GE +?xK"rQ\<~3ho6zI}+AȆ~? O?_/܎c19av;:O2(|^CkֺAM/OXY_EL%NK?R}) n/֥%r.Wa +~q|> P~4Oܟ$36"$Td SeHq"׫}=ǏƭjB +`%Ȉn!JXg|(^`MF S`~$畅a:m|*JA~2'[?6ƿ?\Ȟ;orqլ?%""""" "xRZ"Rj/7/NOJ+d|?vsovbْq,fgQǧbV(6ew++soUt DD1Y+lUV>]@&sX21*Iʰ>+';钱<]rcYcU=l`a9)et]""$?lk T%Xr\ұ)5x\u\ {HGw%.j<7fSH~= Wo?$vIOEp,Uj~KDDDDDD@"x"KDMo["Ob~Ip<?ث6Yَ2J""""[Fvޔt ܑ|dCC߇F|rF{&؞'_nE]l7/mCxն]omi=d/IXs|%*ǴR {izdֶV2#`r""""""$VGw%biu< -eH#Hi)EDPh ""&7#5mПP#1~|4[fnٕc7fb$DH#+;~gU< T"""""%y'G[c`בVɞ(r<}E}5!{I/"ɰ;$.DDDDDD"xncVKD̫n> ,Ƨn ߍ3k-T'_@I1DW'Ue'_X"#IOݟ2#Sʕ >Y=, wO:=63ܪ^z< =U?ikh'=/cr 'Ɖ vFnypt$X}ڷVRSB8<'ݸO=߸܈}s8^ps%-\tٚ*V\OMj>k gyjS"-{{ 2`+-SEm_S/PRߨ3/c#>=n=~M v.t>lZ֬Qoo"779;#Jpw*ܞEVGg`?QsVߦ"~rv]v?v"xnKDԾ4cl1Z(EFvDDDH_LqRRPi57Ʋ5{maWr_D./B)`Tveu9/1,#_谥ْ/%MԵWXU'Kwf)[UVUe=^ +>fzok#*@ͲQ)'98j2$eъ,muNo }y5fWcUWZ 7=чV3;VM%興75oq_9z?e91 byd&]Imgj謧lK&5O-5dY0:3"u`L*EhKrA=!5w1sspE=vcY,t s?/mT#;* $ܒwYZ؍_K( :?c= +&C:RZ{\_Pl$v'7sjFk']v=|ĐqfB""""PwK=DU}Vڊ ~+#s^:=\nalFM5-6Y*dԎ2]*`BP'^m+ߴq9s"jW6n,E(+3*].BOʦ:Gs- +`%Pq*GGmoεe*ȭFFB]tfzA7'ē*~fDDDDU=O.a5d8| O0o*v'ShV?2Vj\S~%䷏oͧ X6VVeKkP,o= :OIn#9v~/+0Z,΢gBT;;d_ǮSHKE7L"[~(1cۭkΈ]~H UdecX+zSP=oľk-)Jj@5{l?bSIvԓ`{"WRV6TA{~c;+ /]u;kN@-|c۫ɡI]?p I興ŵ.'1 KkŊzAr{}71c[TOWY;/DDDDDD@EG~IYrCrv0 l9J'b"""""Q0 A @zFpGP#}Oq5,o" lͶ""""""EYio%frN _?6yyzKIv>;L p1EVF΢DGrw+Լ!z:f +#F/>^r -@?bfjX2r 5 J6,ΏgÔiZ[k]uQGT?uLW3" +QNF=-ɺ]A: +q8ɏY-|1,L͈j,בۙ<@ӠEƵeRtJDDDDD@"xx??*KMW(m O|zOפS~B(QOQY3MVr A^"o>/ +?z*Jlp>VFnMmq T-_qHYp﨎d12og6YDDDDDD"p?Þisk|^7X}VXE&3+}IQu窢,_uCʩ-_a.DDDDDleS?*H Ai_IaNJDDDDDDDDDDDDDDDJXPl\GCDDDDDDD@4Z20O$=6U9YTVQ[!H. 2>[9Ջ] o |]|(t;xFoxlPm#D> 9ǎ5U˭6GGωZ[#^2޾fesx7jTqյU%ɡz0V*øeaYN#dw6^-85]ROGƵ#x_/ ~"ˎMm+UT}}$Y\fET`eFd}V2a U.`u)X}6 +<{/\z(gM>-޽N;uۿnYGa$iߙzc",5`&uDQc\)`Y+VGR%p+.py$tI,䥌 Xۣ#-;ݻHsd\mdL kXt~`(rB"+Yck($y91O޽>uu~=^Ejë#(#``O)ђ} Ύ3dd~Xď&>7-qݖnGKg1 +;wO=vmʱPU0]*mo:Ebͭ+8*{'S+g`kw42ަx`@#`w) UEk>esxW~OeY+a?a.tgVVݑ`QX]Wͳ{.gPr@ +}MJDLzwhg2&E'Q=^=興,,V%Aq"""""""xr27RFc3-ulB ȈM2S^sTDDDDDDJKInd;iDȈ9Vo\mSMkq,zsnn/RWteh}rWՕUYZ`}; v'[ٮ`e|vfzql=ieޑm@y״پ:~.M9Yc̪Zo}b}Y_dsS`=Ka31$}~^w?̋U\\VАE64@ n[0"L׵l!JZ?uk(94mW]ku*N˟|B/]U=X5">ϒH_e$)űrr +:`{ Q syqUYH*]ZV I3eݏo+*P`c􃾡緙nE|?e +>Gn̶*GiG.WWQ5t;Io*N(j +/p46H`[mŪ=T kZSe[$fKsj5> Fb4A񹤟B@묪X@S؟mxo8T986fpʠ= h.b"V=Zzzt UnE?%tgU-Kd3(ַ^o>xW뵺%WdFa`af}Vϕ]@V=% BOP v;<ޞon5&EB+zs7:gN(ɠ\.mU;eZ TNىL[WqwtNV)Mh# +.W lBv̡uء삾f;da>)/ѝcRP RcFmĬDDDDDDDDDHz +RnA}̌ߋJ&m`u3zB o-͎""""""""""""""""""""""%pvSF]ş1ۺT +ڽΙbObwm3j/K~Թ,fQf=ib20޶h$IrCK١M:.%8 +zJQFt)V"P"zԬDDDDDDDDDH>"au6Y_PV5=;N-b|Evu5N(e=TwlN߫?vG0&l< t#ZRnIâ˖Mu67_>6?\ʏzk)沆Llx6cy#F'TS8ZGka=Z[Y]C)lr"""""""""""""" 1~8mNzc"2էШ8)-loKbFV)~vNZz0Qݔ:zŶZl1`o`j/P +.$/k@@,{g+:ף[:ĶY譨_:ק{Ԧfm=kBu^n3l2kTa@t 5q+O k۶yrbWv5nn=lGK#%;<d>]9@W[`qQs{ KjCnm_Ǒ~OWY_w[5 1gP>OuV]>ٹ,6| ܖ; Ij3Ca27?.[߯Ϻ=!OB IӝFCfd+^-!*n$PCkzkB@P6I >-UE]N$95^X#:`$졚'_'^gGgAe.+S]yFXS +,{iThiN?a+!3,ʹ+o骅qiEuvYI'P̏W2޿MM$loc$'ۛu8T-Ag[:5v!Gfa6_DD3kնԪs +6<})~FSk(aUA=$pIr<1߶3.گ9ʵ>Qҝ+7Dwdʮ`HqrQ+GKgOVn=LYlp{2VupV jS"ƪwSX;r8ԥյHKAؐxA݁  +ص9=o"r_ +I0;7LiK`X.X¯SH)n:@7{;zb,I!ԶǞicɰdKmzΐ odk3!3EmB; k3Ulvnğ{ g]Y`k9J~Qb=fЎkk0N0_kmPA`=΢Ptkn~7߶.bڡ=D^!GM^EΛAS9>ɩC!o1llFZ+ ?6A;ۑ~c7e@-ҊI?e~A.K@QٮH ;H:oJ"""""4knzjȾhw^ߘ 2#C~$ |Ig;_ +My'KޓYyuh}=JкeDtX>=Xy2CN;+XU6kuR*eɹ\)-[0oО,ݾCZFC#>6{ w2'̭09-zܭ٧_ Чtǰ~b<PPKGk6%KnO +ǢP}ս{ n>DGٝ=:kǶO_*!b@Z$L?r \!ҢՊ+t`2=%܇jd[}( mW#\ט؅X?Υ,[7nnモ]fgWS 9+pPn?/cyI,;w=n # $wƧ=WYG'Oew3 x_C2y[.lӆ +K~6(t8:2x*Nq==6#|{ˬn/T/AK^_GV?ؼggm\}.hS~SV*u^v{}i\Azc}>JSuInSͶeg*:Ma[30:noHpd&s՘*ɁT}u$}FvOAtH߶ijr#;_BN'~[#)rZ)z,V݃UpRq`;O;vnFŠ]EVK,@Rs[i; zH ﭚ^{YhrO_Ȉ>$'Uvr}~O%iY_Mc[fZ~ZTZŋx<7Ytep 7.%IOcI5k>!lJCVI`N>-8M}Kij˶l86=9meP>A }|J858,APKP 3lw;ȩYڥ!@T4}#~$0 0|O@խ#^̜*oڧdmIQ$$O qhBF_X *{F]76ld[ceבUkjd~ c~O7c=bU㫧~}K*տ1h4rѬo۫{ַ.ӿAz{^aǼf''ƲdvpPTnTE_W%x +r1pJ,ag?S$$Ƣr]^.uܳU|q_!q}&jK_(>;[L_\z( .o{W[Pƾ!մ=E[GR>J|Uq[W!cʑV6>=̓mzVG_M` ?/p>_33nu0W빷&-H + 7Fw_jf{³HoV 6;&pq=0F69w6ç{`=|!-NWe]zK^I;m }|.s'k[};]Kr+JC/k=f竩27Q8\XjO̲W#llUlڏom̔q` `A5930rtLp֮6Xt%Gnc|1^B@l5-t+mۨl[r+ɾ] _[XK+=fܗ/~ǬWf޼Ls[pjø#Ľa^G ދS`˘*=PU٭﷝O/oz?C]Knk_i{3|CG;6@RzAk]8 Ue_0~B_䗘bܵl#;Ԉ[9:KY5l^~-WUVt-!v>f$̭rsdYZWub$_t=ΦOFϬ-vdMK[Uu\~tu+\(/5ֲ[c{1ekޛΠaHb5le=ރt}'-0[F[cרOZ:8Z*XObA`f1DzF]=:>Z ܆޼Ss@O@e-w$*ĕ $MOqe\ {+_Nꭺ]b:I dL.Vk9PtG܏ӣ*~.`1`>NƗ:vSYKW`1sjVʩ }3elOv|r9\}x[%WdX'TX m 3qX+MV\$wml'qD0Undaփc~c`iEf;X{(뱱P۲(ݮnu{#6袱ɥ+[m̂28 +y`X o'nϣK,U6M`:އ״5S"u4M~~4M59}_ +AoL lxv]UN`L1֋?cs*ph/ziզ]MCzޏ¥֚ҺߍQ~>UbjGA+(e-ojQJ=#UKJ@h< O8'uj`~lJHAQH!|5h>:6 +N/WZ'QP?S&{J:R AB Q&zTt (v;Ǭ?_B:̶8qw*Af}D| {-[.aʎ^u +`C7B|uVJqWҰNE +7Ը(}ЖWKZ妰NC[2Sw]h/ʁOH𽇁h㱱kBߤQIHr2yYIMqM}E=0TTAR5@־KxF;*B#Z3&  %`/7a58/wq u{ǎV>^JpfN\d.}Qzmr ߑ~+P[rUzŭ>GN}č"okubbVB0lٰԩE ܠ*{h1c.՘1cz:7"`~KmYu؝6)>FpK?_Sл;;:bg58Tc;|@}dlnR AB GKUMhJ%QTxص;5a-3N>hZf=7#YFv_b:w$ՄU+w޴Fu2 g zd wܫa'dt۾簞(^UP7@Q߿גQ]HV +¢;@V5tkE^o@޻ V/uK1?AG"K+%Z)Z8i/Ǵ'Bl U*Afv OKʎo]~Xt*I}ǮrXnCaQkj 좓w"^*G-M_-^=zZ_i {Uꬋ5 +) wyN Qzǩ+ޑBrX}pQ +y!#˳շ}諸_ݙ6}fYOe i |djꪴFQUN4w<JJkP0ð`=L켜q}ػ!Tll%æ  u7 A@s`:@ h>;Jc񸸶jv,Hl 1k1iō€gh}oI=OƿK[H o4)OOw郿SG7'И?KߓbZC g<*d2td\ưU#AeU{=$c:D5 C +ڂ@KR: tG+Zmʅ- Zvoͩ ~kGg>W'ޗ_Ce*> oCϙzWT]Pd3/e3%V'Hr)ZGNݦV-V%,MhKq܊ +*K@e=_"P4T RHgo3DDDD@+㲹EFenD0#e]{vGs%ԬDDDDDDDDDDVVzN)m{;Y>/C0#o+7 dדF0[PXDDDDDDDDDDDDDDDDDDDDDDJ1 :=$hv#?yPH}{OǸGOxZwm}y^魴6UuSDDDDDDDDDDDDDD@5= +*€z(:@޶u2T +ʺX[㶷0_߰[7(P6ۿu\{OHDDDDDDDDDDDDDDDDDDDDD\ {rk + ! >ɨIXAQ=],{}5Y=J;<,VIkT\[*CI^;-5}&"""""""""""""" b-Tg9LC_Wo?_bSO:n9/~;[ Wˑl}tmOa2勳J:Ef/-ӱo[Sܵf-vȥX)#dPL*0S{ҍ{ka6'*PԶzdR|;P+,ۙE6%/b+پ,6y:U޷_I"yg 6uzFz԰A*Gü'SVԌpA%/d6ZF1@)^Z *utaC).ijf]5X=R3k΁u%sȶkYZ~6=Bt7,bgNF {̈nCh0=fN嚲+Cn@oVmv,FeaJMmi +mܭW[WbV2 }%-j,+XKޚKu~ԛ@#cc.^%kUJTiTx-dWr3\A,u!7զ__xͧ>m-I.cK:%.e:Vo>jkn[/Y o,xQz+uDl}i9vPIJi~PAL~73yVp=c^j +us!k\&KԐ'@nEC^m96%ckzʨ(bv;,lqm3&!Η紩覜kV'<{\ +3iGFCpU%; 5kU])+%9[MI=3*O=w0$ԋe$w#nlfCQf)ul t5]Z7(.1rMWR@ﯧLg/a&pr+mݘP/{kni-UtM*X2ݶ71]X–ChI#`uٵ29qošXVB6DЕ0:]lJ2Iڶ1\>KMatdks !d-K˺ +d(%jxD׏yfqK鮓w=$ڳrZ[)Rt;GZwԽuT;(g^I L/mé1NmOb~YOGJVhl̜XyǦ) z=Fjr% +aD L^S[ +*@؝~ͭ{i ?NGu7O@di6v;w3[C}SU +tmmBX5v@ʅB0cerSR{Cһ)7 /E^d!E:,n'/J.VZStfbg]ov w +˼هKW5/ClשuG~,+;3V~n;T+KUXf=#@6C~' qԿU6:X1mϼ4S]*ٵt[h6w |CO㵕Zjjwd􃩹ؚ+ݍccX!ϧY7{{_\ʝ>6{ILN]2rzD;d'ARA{3ϊh@-v6:9G^P ,L5!Wr` +bc[,p}['}Ow[]vSm>>*4:4ă`H8B9c.ȠeWFCQZKH1!b܅2jRWF pA?L::6NI[Kdl[iPI ]7K 5Ψ9ű^:C'z{{y'8KZ~ʤ0:x\P其Hc5*Ѹ;6kln'grw[c箿1__լ+qrM ׋qk* ԪI_${nTsVZ1egf 6h]EY[Ka e$lkkw!Oj[܏|gl<>#2vGŠ^P:I'w'"1M~BFa}0p?V~/ј fyJ78{$畭:Yc9z}Pͱ߷9ve ?2#C{1w7UKmY@5z}%(L oRHzWHE[[aҨ:'3Rs:NOkʩ-U:%~YEGsn+BH=.ka[M3\pκё +0S)Ե^6f"Wk%uHє{McN#/.6Қ=V):{h>'Z-{@=Z'Ǐ>rCɮ˪[w#հ#QNtMl\zXE=HvHmh߼RYȝ8Vԋ]hX28\Ó_1$;+uk]$s#7 [icvURV$C vw6t7XYZ?,ph1s-ef%AX׿~ܐt[qlpZwN1]T6}L6)W^"Zˬi6'OH?[5NEoHפ-uߴ+e5ӑK :lOGn9RduGac9ܑ9g)3\/ +({;>;~wZy +:؊ZC G_[: +Lџ0zI1s2_#2)ѕĴdgbf,ivh߾"lxJSXҢ* H/KUCi{2FJ5RX{F:*J&~|0j96|^e B3/2"5V7WW#F;[- ee_:`l4#+l@+KllO^b|?vuOS2۫~elT{}g+S_mU 3'rkNj_oRq8Ew(c6}m%[]%YikFDjK^W~%_0XtzH#]6B74ombi0{0'b}Z'tl|;=}WR;P; pp~Į怮Y%ݝ?HjK?tU8bC=[1}SEzbgmoZ;߉`ڷ[.Q|S0~.g.E#&Kղ{y9l8r:%vXHHwVψ~pP9zw"~+x6t8=;GQURAFq}MꑤQ޻x@z~!k +GwkarZN1~g[씺WpX%IaEm_'!N`)aU#[3#ᭌP`,H}c`ll"1!;bK^ w>-ḬLK޺T7}|ބ8C?s7Xp [Z'۶,&"g%@`>'VĶVY.C~e$>(|+6&ư~$eqK6*J,PFkoB8dc LƛŽ W]Z{rk@',reҴ+zѕ'e{缋Z2o+}}İ8J`{oI]F]X!,HGoZ1nvޅmK^pM?m%1+I]}}%zs8✵:HTTR:I |N|exNWudb +*lw VF mU#mje(lO_^$5l\0c䣧8v$=@ws|nWvc)͠0+=a⥓D~6CcZi²A#eL?jJHʱWbݑ[R5^˰UȺYm/[Qvd^P@s3""""""""" )XIYq'÷sz}4~ c>=tˆ/N{y\=vCj.I;ThIH\ g+f;z浢@@ĺw$5A+)lRBoGG?7hB,T)b$v&IDD\_xWYj}n?|}{LW`N]wXGE {6'3GiXIXm`~Bw[Q)w+15_)tz'E7&/3SV !U{;2yVZlE) i"?/+/+Y|A]sԵ]mT"M^Ի݀3rIîܗ鋿`H:ܦn }duX} @R;}=We9[kR@L'c:;$g +Z+)2RX Lx+;ˮҬԔRY,.}|)/?ۿ)V {PHz=No KSǏeտɟu0}YλD237Y+z5z Wrr9+"K/%(,;36u۾G/ͳGlMuc[0I;wIg7.:go@"VOi[.Jt~&cّȷ,JMX +WU}l}i]_C֦>B֖6Vu%BNIONΦŅ]=oY,r4=}58ޘo;p区%NEJ#@O+̟K]Gwl_qik+c1U7ܶ}w߶Qcdd-2!T>_`x_p?oY?▰dDDDDDDDD<%Y%zMӽ{Ky+M8bPYܙL,΢0[0 X7OpeYy:{OQ/[J6Պ&\}鎍eJdN~^{Z؍l鿑:?i'<ν稈UՉloJ|q[尮[l2"&)5ʠ,!?(dW}?yf+],V=e*{y vuyxփrXmԱ]T>Kir2,#&R%k[*"y'2)5ꊽ>P%icߑR +ɶuwȾ؜e4PLl vEv$/I#};)ۘ%y"~ZG]+D GR_ Ku P|3*%$=>FU8 ZM`n4,;Gb=+ʮrhЁww;9*Y[aƇ9j+g['P;NΧ6,5xBv +31G?'96(ӮMo}I/1-qu^ fJ= ^%Y>-i֮ǿG\WKOp{>F3)j!r-\[{KC+Z|@D_/Q?b>#w!#)A^EJN"הn?nXT[}Nv] AT$;&/u0얈S\ GRz*z=_7HoG[/lh|lP`EWM5v~u[T~@Q>ߟie`6nBApToG{ߙ%:>\xYdۛUq +fP: +fɾIğaۂzǽFOrxcɵjCgS r&@^w*,+RΉ#d.:֤]LM֬nW=(zH|X|no*M@2׵"`BO,'9_el/|PiUd|{kl\W-f5]=,UF;bOUT߻ϴ2rхkBu*{v?Ƃ~Q/r=/Hҭ۫NL゛zbu]x+kd +|A9g߽|toRRԖ:=Ug~|:3ܝT9oRr)#H6`4?vz3ɸت:޼($,P1W}'ҵ}&| "yq8 }$AX5Mmu]T sbϣOR^7;>@-^VEfhK}+AQwpk\^?#ԞB^,^m߶;f7mkRWhz̽ C~;} w:||h.OXM>ۘ9\&xu`\ +zu 3~^̞l[_8ƮTf.EPcy~%!li+"u߱=i8Xߖ_^ZbQYA:ä*#LP P#(פ7$ĬHL3많?V97c[?? brbecYV.}tAYw۾w\)drX슝)]UPl6&?]\WG뫉U)v샪krgSgļv= O|FAy!K R˿7q~xş만+o\=+%Iֶ;} >*.ߏW|R?qzS)'('@cǧ># גzT,sUFYtѵAC>br9Ejc=zt'y'kTf?#f;c}̹?+gX*w;%%""""""" [q2nxqU5VXu}(RWs&'$ٕ┺V!vCէbB~mx<[>~ 8ma+N*g_YY\J{}G9 J knfT温,U)gS ^:7G`H76֩KrZI[Yր}Ozr0JP= /brwfR=+#HX6lhfEjRWEb#CGɖ8#7ÿgVk`FI:5N'CRK7߿i=6cұX:@`*WCd-~]V-s\:9~ VlȬr+S] $l,d@"dt=Αɏ`V$,v#_F"%%dweY2l*`oRwZr+ۈkXm^}Յ[! zY@y-9y7Z@ +ֺ{Kٓ5LYԬ=/Sĺgk] Y;soivdU6[}I, )u5X=%3]4tQ# hndT\*K1O/؟-aMDg=&$p'Ok`ʎ {\?~W<2Z"""%U,0q%_~Ǔ'ZJDDD_>~Ne{Y{ʣ[c )N73V3:@Oo笲#&|[K +hC+^>Lj-A)vp~6fYU+PA`Ak}d7-ce8 +Ўx'*~^ʻ+8v؊:U;}봛"찆=MeoQ$:WQۿmv)^JDDDDDDD@"#O4C5x>f۲~ȿL=Ɏ/ +uۍϷfGS3'hHg[MXym(r/"h >*#"NjmI_GA**zig0+S[l~hgfvfpe> 8XzH0RQll9Lr쌜1Q]SĩO2V_>`"X-4Nčo$"""$R? +ǶIX";7~V"""""""Cs|Vw!uVcdZ 貓h/ߦ!cۋiSI$dDDDHF +Ŷl,I8-ӎP1kc$ˑu x{2SǷ!T#[Pބ&7vd {~3:yK߿i?쇸Uf8R#A @ +l0y|k W5%QI*Zc"̾+ +X-,{JIqf:l \%wMSWSׯS}=Sgu.F<~%o_0Ճ-G}V+)?cX?dK1Iy;U1麶#LA=ʧm:.I7a|U> +#à0@ x&"""""""""""" 7#Xc+dZL _)ͽܛ4S>S~HIXB3ƨtv>䳗^mMUԭ<}Ľ(F tWHTӴpqj2W^UtmFb~V%׫ZIP?QTٝQC6#̹7'K.jn֋.ad=)u.m wԇOǸ82<~P(,;dV w +C/UBC?УC/b9_Х-7#4w٩_U,\xW9ڢz kK߭x_#CcY^VM[-z޷HRs.c~Xm^ ++]u1p=![]Oc*״f)v'KjY9Jx++Ұx3W9߇b z@zZBslT:W6yLn^_өzeDi=ˈ6 ,f9I쾍llݞj՟8X䜬HGQl eƫZ ++ `{.|'qdܠ>F+ֿfC|Eǥx?A%[OVεr'xi@q~]wSbz?zUl:<.׹=ŹUІVMK⼼[]lXcZg`'z MQOt5XW~~_KDD{ҺŨUNM/Q K998vr8lz42]H`.].%Ybc^O1r+;(hn )) 5zIJխGc.9PUYwC[Y鮷tF=ϙ3(/`5+"7jJ k/*ݘ䮈 <="57j67{1ifcZ$$Lu +*qKw1no1xa^k}FAHR%Eh]懶x}Kظt`E%k]t|]}*†i{y=ea[sz'dke_%"yj%A 6G+Ѝ pԋzJ|'=Hu1z-*k,gmW]FU!Th߿'b""""""""""" >/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 76/Tabs/S/Type/Page>> endobj 234 0 obj <>stream +HWۊ$~ӓʪ{HyfY]`K {gD""3{l dȈ88<e?]p:Cxtxq]o_z9*eio?(MxtGIWx76boօJVead^{|vKӓ?e<̇a[wʶSxB_h:=M, ]OhWcas|^;u:Lks5oiWcYV8I2c$OlkF^ # +6/ 'L$t:g^\OYHsL(_/o>~|׿2&wT~9<ÒAdb۹+4[(DYʷvtFvLh9m^c(ukOCJOc8h-,_SD +i< !"'ɡ"&"dK~柕n]ٝb,]iV^fߘLN/>["սc#Y#Iwy p"'ΑqQN[;WHN-%ͭK"S-lZju>70jxZ +|MF*|/zzG.xdԪXP߫O o&|VM90\X K^Xr/擺Pa%ua9@RL(ƻXxQ䔯|Mn]UUۻ@^giVVkN+^]=kG : %e7=9.;ql{d7D D_qrאnrdbclYyT)_5i*6/:t j|59!f$>v]Z,Zx&XW1 h-+Az珟2q=_}53|4̄:Up|̰nThȊ+BIi|tk69ˆ>& čzs(xh3`_2{(SP\vx2nV4ȒӹӔ pbkLHtZ`Ls+$e^sN8\%<:كof)n +@\_GubOwdvw@^ܙ6qf.mTC~`%\&hTY + 8H8!5w_/gy.1I[ߌd_?a'ޮ;F^UT;F澂E X-G.(bf*R<6q}!N@c"tR]2TiA9+$F:Nâ fg3c,1r[:$çodogO%zTNjJ*JVqU5o, nߖL|:V ؟]U*@]LGS}lx]=UQ/V@mTn@^~VoȪ?'"c#;A0r* +lKjI:2.߅NEs +OYd&{BK\*bO#t!btKM];ޑkxaE[u 盎!e6i%o;.''Iev}J%9mn0x)JL #RK!+R$i`#$G| {$p8M'U? @w%O/{}^G/d( 8 {hurNx ABf)e֏1~4!- O)wTDDCݢfX-Gm9`` C)3mSZG>Y,;_59%4hEVVк0 N)\ N;mRH Tjz%a1>p; `Ʉl8u6k!㏍Uّ뾭*L"-yi#,Hlw2kXz8taכb@(;,C}Z+bG浂TpJF2cS:%]sS`K&7-mdUJV)Ҽ_ە5gym@J$4%cvʩf82NE"+acFm7=S7zY6|&oY%/ +;t@olb]+y'2";cCTnM?P*54#Yr)4 0507y3mW(uUKTڣO';v<];@3)TEʥ?KlL /p :Y(s1lpL<1ZR 6L8 6fk;[Cq4tԄm _9rob}awX!MqL."Rx)M8*KenL[ S w81 I;N="+s=}2/ACNe4 8)"nr0tSm[%'*{ƚ%~k3v:ϛA= ֘Ln!XO>[hΔCaV$pog:LK`D5^CȒ)jï/AT;àѲ6MB~@j%YK,n6(ut Zl>|hTb&sf˶Mt'u;ČJzQ+G.-L`ek iJ'Nk e~R +d#JNɛY8~.v(*l/PII@`@c`.~c)66^KR93$^,e9󝌾zEkaWjH)5$Ogq +!c9TU')xsхqŒ.tK^0gmF:f}*Jߴ)i<\8ջWw}aιHztycµ(;9_*DTz l+BIѣ>H!DD:EJ81eu.`Ϊ܊yBmTFjy2咼BaPǃVMTF=$-)8v xg`">*q9z8>N[z I݋C443uXKWGd x-mMUҮ͘TC'R #Kll kDPKf\#`LC%, OR,l$5N&2q nkrf;I%XV@J-k;1 e/}#yp3 ܅vە9j 45_V5 +~탵{k>s`5y4d5T~6GWԁ +q +Mr$[ް]d8IeI͉-1CʱK E rNCj J +}r _葰Y񵴅1(wGq_mAqwwIzsX~|t8h̴G#nz[]ՋSԸRZ.ʗv iJ3)RYJ+>Õ錹xrLFC߯ejtD]L +$8'7c?3ђCg܋P.62!AX䑕+)&SíM4%ݻȲ*?rK>%Hp[تW`ĖЪ2n4@$WjYgktO]M5T=L;iCGK51v&i Z}sRֽ]Is!(,K%`_k$ΌRh؆-v muJ4m15DzBi7IK55qSkLٹ7MmXJHfd-S;DXQu$ w^7D}adyn#ي8ŘW{ɨ9 4 +쿐5ȭVcjZu2n7/DTÑ?H77v} oj; +| \!GaO,L\ˇ)=ryz~|<ҹi3&^Y+''l+?SX +endstream endobj 235 0 obj <>stream +JFIFaKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Ka +   K!1AQ"a2qt4#$35BRbsCSTUrDcd +%&'()*6789:EFGHIJVWXYZefghijuvwxyz?괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JU̒k U)JR)T'M}P0n$ +)VGU)JUq>,˲bdw )JR)JU''uRJRyMYD1 8{S}qSpʳ(`}Aiёyu81 )a$@ n07rrԺu^&0'Pݎy=kWq4H.ABߙF€=<^j>kV[@̪ZR圀G (ӟZv9wt*~;qLլ j~Ь.f:ѶJE]Fp=I5}߲\\# zCFTi#¿^V+B-+ݢ<ܼH68L#{ײ!Yѡ6Ѭn1 +# QjJ̊o7b7akikPmendwtXnX0$ǹfosz_lTD;+~vˀuY &]"]\1Qof8_`X╉Opc w$yVdz=شl!wm;H9xAq*@#gF#y?3R`Xr1ܟ e߫vm]9GGz340Xj|'8lsEy}–HX1@)s9P@^$v]_tg>7 X85cͦf-#GQU/Bs)'0*H{T9d.Lo!˂;9`AϗƬoNPHgǺ)rH F3;>qu^A JU#wn|WMjbDxei˴.W vp8eү.աq{`~[hn3Y29!9T+$j=ьPaij˕쾜>$mF۬`0 1p =ư8uo 2rӔf{?k;>[x(EިT[kCsF6mӐY +)yc3T+Zu]6K8yAE]ѦHnc]FTT)Xp3qKEHZLUON#9s!i7wuJ-啟sl8{𴲾xyfIY˜C ~ѴPbIX{o'54;iA=rҝ3Q<:7-`gIY12s+);׽{jKHپId˅A#׬o5 mLKHT@NTtS=N9au@eIӯn$k23InB=n۹13^/ᩅ".Y#+C m:3.7N;rr>x횉'Ĩϱbnw\TU(,XV _;ɻ#IӲ&gI¬erd%JST/EI#q ?P [ AYi %b[yfiB3e'8 K +Mf9&Xpw}' K|٤7]F%P'S&ªsmQ}O|=ztLչU1 $ϻ5rHvqHe@q0T xYo!v\+H` +9To.b1f şUB +rp{]7HpmC1Ϩ1|V Ʊ ixPlێ, gK]][wNFX.]Tpvwt_JsQf[71-m~9]3O!X.ʲH\/A$Տg {iz* HK>.3a[*)P98t:)7GZ!),ӿ>Чӯl +{/d {dg5Έ3;A;A8gAxMuE%r_ &A]OH"".̂q|b rŷ<n8=WEר\ȑi4Uҡ J rpX ZpCl y +ś,xaK{fv=7_w y8#hoIDXs>jQTQXO +Sdamx8<*/{s~nmD $rU%Ρawn[۴§ rIvuE' 4۝_K6%n;_\j@>%L9]em`ǡKKҫs&wlǘ92aĊ\X}k*v]# 4-M!c``W}Iif+.@@;ͥ=JY+9iJR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRue5qqCW[h"EE8U +2|<֔)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JRbӠc#Ff?3Q:Մ u=l<׮ԂqYjKV7-$n0Ao"sfRoӄEFJ_qqɯ `YZBC#pPy5\.,&iU6F3rޕ#J° Ҵc$rLh-VkYJ 7p1<⵻gD+RIdG3`ԽΣ4Z0Ap`cTx/5[bVTN7{ArFkQ,k5i5"C#s.1k*VN aUh}3"q7pjl4ͮvf5ܬ!# 3s,{Y^7 ɫ0 +)PL{)4WiM2mnLjk)91P{i;'ᰅJܢ! d 6bǒyNmX MV]2[bT 6{Uqs"Eq5gdO +jy19[-卌 lę g΢u֐$ui.l$nđLaHdagϱmQ( 㓁ϥA^A Y&TkY^7,H;A85N$Hwb;ypT1Rw76P4WNYJCDrz*>OjnBdv~gʜ#{uT6n2} 1UrI85!O-6DMY/ V^t6Sʎg:#U[KX٘I>It˙7ӧ&!Kt熌9hzukj7QjwVhlPqVBİӃ85k7c{`.A5'{uuIlgk˪!e(ۻ^mw7PHMi{ߚW8*Q. r-D0#RvrywXnZK @퐌z5m3:gmxg5/5Ǣ+gU tJqRݼN*_W`FўOl=KTUAH́uIZEd8h{I='$jۤBl~ cʠSV;  H̻rhl.,*/I͐~1Ț˵і$Ҍ᝽ڋ_gIJ >ZƱEmRZh-B}$(8TJuFMW=ܫ6` -n,Cn${JR)JR)JR)JR괥)JR)JR)JR)JR)JR5Zߦ!WV= +P"{9+VIP2# +HW\LѺ*ae(ns!ҮxȞ4MX ϙcc{MkeqGLL@ϻVҠӒx!MKYZ>3 ej:]ݝg-x?E #۫`X68`0}kxBtdXCbAmݎn%k'>#.@n}4Gi!aH+"AAO8/K |̪xܗRZu YPJQ"՚YŴqC }  5'Ο}jΨ(~H''ΩsK;% %5 Ccpqo4mCRkiZX`{v}peA@׬:5:cdh!̅Tݻ8IVFqskyn%$P$Fa_v{+KXgfgVm̏~< +ȿnu+KVJ1fm`XVwT)%(b ;N8X:n{bI`ʖ h˨\mEm7>slde3<h+ +_au|pVH#RAZ +éI|H:x(՗eƥkxKuvŘJ1p1 xW/{q<2ռqKf2mHc܌wϕzI>xiB.UX _iWRd\lU] @ԍ, HFFx?@M VhC2n`Gld|5xA/緒X :L_m^޿5fx3>,@8B`!@M{Gʩc* +ct=*ZuǬi+6Fg!Ig|v>F? +\bGҮ.%h\xܡd<69ϱk8d0d|F9'8Qu{wiqDmbca`wruI/wG7n=yF%@`rue@wմmneI`!P|q^piaqLJ=c|Dp,{dL$ 6Us*roU02Z2lךb{ycnFQ;yn_KKS A,Aho^gMe\iW:{H:#m$㟞Z]ID*(vO +(BIŻHx)\.ܾaxα!6м)[`F.K9߇ +t+ ;XZra 9#ݴop3|(iSiZasʎJv#Ϛ23oI^Y_C;yg ȨŻ,6䜔t-k6ͦ1Pa%OJԬ% HՓ$#@kEѮ4E[&ٸ00O9üm<E%$3ڼmQYxǥz 21WR)JRj\NOu)JR)JR)JRLZR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)Jÿ6[ \8nVe)JR)JoNT(oaL"~٬Rwzmm` +瑵 Vm)JR)TZR)JoMHvh=7+JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JֿGӾtKR(LlU]>>0o5omCfI<Ny,JR)Q^%ՈVD:oj]Jk[wL6!nq$H⮨d-!j elg +N<+ڣw ^< sG ʰN/ 'FZ3~qR4)J]- êP !g~q5JҔ*:_-uD@;es}MHҔ)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JֿGӾtK^!Ӵz7QG&{Zjҿ"xU!Z=K>xHaw *X@KR)J7_GR*'S0ӿW{yRĹ ll5w5 KM΁Bʣ10|DZgs <q+r<^4bDG[Ia#tn1|+AkSp7 n}mש̪IQ!"ldS?# B]̄HSt3p\KܽoH^c6?? kOY.3R 8?c]OXvo$8#FoVj-of%w-xşhP1%9b{}Wx`hX_`|5~XfWHvCA;\gC8mDbj cwe[<<)JV!~BJ*+ߡ\}:R)J_}7m=JR)JR)JR)JR괥)JR)JR)JR)JR)JRczoR9El̤# axר8V1˺IVvgT@>=fҔ)JR)JRG|&uunp[v~zo֛m,,oP}8A#"o j?Ic[|sF$W!;sRCuhݷݎq*)Qޱ814I*.v>#J7_GRJ*'S0ӿlVEޚOR#tnF \d`¼ὶ >fpBmPry5vKm]kwI5ɑ8V g wIY&x1 +1R$>5ln4IїݻռVOVTZZG{%]<ʪKqcii3 ,(#]g8gjk&7u[4xu`~n+:5+I/b'O.7n@w8j/JW'rA +/|N Tzo,Ʋuoecq<B_S}$Gq+ <(_dsYzqq@qBp'k6k͆}wk,1vwJ1`5;nddS(7%<?z=Ӯ*+V"ĥ$xX(^, +q p+& {Ou) , `^G H@&2S(P>)JR)JR)JR)JP괥)JR)JR)JR)JR)JR)iAdlaI5l[KGޏO.;K~x<.=ޑk rCrInS$;Ò}wr1>5?65İ~wFȠb|*R)JR)JֿF?#-J=v?BvF;ǖ8>f x"cW\0ȬK%OnNPv0ޫh٭d#quS'{Y]s]h"wpnb[wc}#'شow$Kٳu3۟?}\ +`d :#ERCLLY%o%deGK[6;Kx +P!*BI+0=:W,Xg=5 q^}OlZof};gQn5- VtB9i߶\~E"Wp2W#l21ۺ+ +e:}O q>l'_cͬv?w%g}Z~[in?%n?n?%.?g-f y!ag\[I/-4&["!$Ps#DбN IYN1ϹW[wгQ^R,Hky{geV{6Ouy!f\~ >2׽Wc=t? +ݛh'QlvƮg,oK"Ƞ~i}{8CuZuinfecjl^\gTE6l`g5S݃䟟bsp-ciYȥʠQlP}Cb)Y?гSO(fmu7 +Ny{yc^?dHR)JR)JR)JR괥)JR)JR)JR)JR)JR [&~f5˧/ +%Pm˂>÷c Ȟ͍\K9܁nq$Yxk ^SßPS(Qu)JR)JREk_iNk]9EÎz`O>`kaU + UkhpYXw0z4Jx)Yh nqt.{,Z&Kz#2 |\/TK4ԄRŸt:4bD̑XW[YC/nn-@([}<Kѯl=\C. HU#+=SKǽԚ"%F$q9(+3_[lփ,r>1Qz%IVb$v/7~~H +[ƃ +z +L4'T)^wQ1&Ģ7V S:r +IMYMұt0zRE2v?H2x8VU*Co-(ʪBn{@]JRDϯEȥ{ڤf"!I`Xv 6B)y뫖en+&+̲c$nM浣 syf IvdxIi%M&ˏ1㟞)X7S ( gzƲPqeJ€C@=^,"$YHy˵aIv596U ~w'Ե)JR)JR)JR)@괥)JR)JR)JR)JR)JR-d22'ּFCc JR)JR)JֿF?#-GxPDKkk[#imdT$͌9X"DHP@e})uܗwWYiZ;y۾5'!U<;V+n *P>`W)JRoOiJTVa~?ZiJ𽲋QKytr!V^2+_tEm"EX9˶9=LRg+کiTb27`7m3Q&.¤H.#)0,F]Ү/."ͱ9)ۍXQdH}ً +?UJcsQ' +x^[ҵ;xżP1crfI!s';6yѫeʃeV[;A[=KQjR]1$@='?(m>^[eua ICD.ޜcy*nX10PO%nZƨINI~1]JR)JR)JR)JP괥)JR)JR)JR)JR)JR)JR)JR)JF?#-{jZ1qkq=<͍C*KO{89%2sĒIN;yOY(}n$Se9Ԇ^c]Ic)A` ޽ZR;$G+rA|[;lx3׈*빻*jR#0m݉+ϗjuc c^Yf9UN rHx=cA֖hUUbbg&so{ڽ/5m.9Mi!2D8e|vOSu f,ך71-p 8t/͕J3.sR\He*0wc׌IV֭ig w0Խm{ 7]T"=}k|H֚+_FxiĦ!FvjzWط$ʯWq?9Y6ڝv,1傆_Q~k^˧_NZ[."ny [knoHM_*Lvۇ cx/'k}"2 s##x +1;VPOkGI,̪T-3>VI`Ak&}@I#d^*{U䷅q*(rqqXv̋~ܼ "IWR<1Ma :13$BR)JR)JR)JR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JR5[ᵓ+B7lLdq.>w#Xp Iw2.[tLʃI'笋.9=;~jFEv7̓;T`x,Y|"e؎ 8pOĚ=6TxEp `cB+?.jk15Ŗ5(QܯՔnFA>]_fZ̗Ou$a +1") |EHkuaI{ u(WD(cf9!`iڍn=F"0 #oRvK]O]ڈ[knw*ǰ$KH PB !0 ~ +n[4vƧdػyb31\jPJtfR `,k$*3̥)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR`ړ),ːIFd8<`dybA]JW7@H8>D{XhPB唫^(V$*RZFA{WXD!;8Ɔ8enYYHEYR)JR)JR)JR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JR)Zַ_j6vL/$Fb샸pr|=EqT,|UqߵF}3N*2a`<,N-ѕLT+WU1u I\r8 'KY"4e2{@If ތFOjEh2j}KVE%KOcXZvxdDL0pL ۈ8?VMteN0uRr|5ZX8T.}uIdкl(dVBCmcaꗦ* S̟!Xz %dvITqp= 8n!VYFm['۵]irגZJۃ!?(p}v1#Ҥꔪ3UbiM븖)70گm9M֛S:\,*'ZR/:10V +H$nFF~bx{Q}WN*Ыے9rjDrhkOMJ39Bx$VMaIvѢ6tXl{r ##]J9UHdw慀 ߵU(ɨ3Q}BB`r)S1w|.~{>s3kPkͪW%Pۛ+ w%P:{@=#L*Ȓ~jzlq7w1Y3mƌO׵VJ/&ԯ%ed[d.āeYs=ƎBzlJl9n셬W*Ď=( git!TYy#b98`j W5ZTft6H`~\~:o`{lC63Rqjp1,` ~G##ΥbfUt A5})JP괥)JR)JR)JR)JR)JR)Z?N4/Jq U|n;&˜ds^\ [0624 +݌`{(Ƴ$;Y8]ymTloO|b-׍H/&A0mU|ԑ99᫩%H!$6Er1N0 cvH$ez.#8<5Zv\R+s[y'on+{/#+Ť:s']3m>uKGoHq^zk{NA\Y5ﮄkX{PA#(asw"$tA!?{^hڮ=hqezr;>U8nʁdX<@5[D׬ы{;(0 U1O=6V ԫz׏dc+$uT9'p<;i4վ\/Tѕv +kkn nBuir~ +جaMF{JlXc!k(vrNxu53R[޷ĮXl~H5h,wm.OqbUX/볱R|sTcuXPӲ8Y3>E6@4B@ +r{*Ņ:}B(XDθ"'ז5gq--'1o 9H8zMqCim3!&y^owY]ƙ$V +<NIq7  >nv# J/v'V\kjteǟ=z8c?s'JR괥)JR)JR)JR)JR)JR)Q<7/ c˴@#>nTT\v T-t.Z|C6s%O8-;mnɵ1!i B>C8zqܡ ȱ1P[=DOT(3/ G9k* L +DS;=VifF L\rc#c;ځ ($`y=?r}^^XVGH1hkvatEu}xx~ٌdeU+lWޏ̦uwRL6*; #*} + J:3$jʲ#ab g9 MX%6v9vlxvP،![Np0BG$v*+BH0*1q|BRibC䏟RȁP0mKLUG08WWRU`G ֗,\4ȼuf\cmABG+Р^̬TVZj[]Jβ;H2,AcI>ko +[݈\Jb^"Gb +?UXݤVXd=/<{xM!) H*AeaȊТNI< +,fUNydUCDXȱUc-"@} L)X3H_0WAueܷqIVLem3Uр\DD79qnqIhf)F r9{[ogYˍǹ:w H;p*&)-B,r<2<:.+rXI,NKy$Eb.nMx#fF_p_Nmޓ܋6Z9UJ#;_i9*x  x\xvp#{C FOq^ZDWme+Ѳmc<~>u?nᶔPe~AbI^w4h)"J ϹX19Z},b%#+8*N"AEUQz)JR괥)JR)JR)JR)JR)JREKI$9$JC2N`{G_Jlld1M2 ^XPq,׉NQ`6+mbv#ҽ)JV=:|}Yj 3p>5զE•xW15)*R A *R UmCRҡ3Jd^@NA;|R)JU ɪұ>[d[foYt)JP괥)JR)JR)JR)JR)JRS{$H#Q#0XjQۑJ&ȌB{ +:ܰ[GqMnY3s \2Nųo;4CouTo[ p +jA {k"KCDDS3(As@|8)e$:2[<26GڰddmH\9»G9zmf{@$wƻ[$2xUq_QXY +M@2;1G"d{g8GV,pgg=赙o`X+Y:]\x ׹ ?~Ro*. +rH=5^5$>͕e`V3+cX*\ۃPy0G@Inzq+~ldQw0RBnOϖk[ƅt]VU#Sqzspڣ%q85Ut+bR +ڧ-Ǟ5,&ZDwA +HA'd>)p&H**znPA"Œ`5/da26*pNIHb1MSQI$IF98 Y.'!">GW {#.̆W@dP qw^sF ,aȥJ8BprG^kX$#$mv +(PHǵ+/ҵK[K[{`0.%dGs{ r{y qW2"0N"֞6uc nu8eAv gnѭNpx#gAw= +Ns}#TdӖQod%6YA^2@Wdg ڵ{P`29$u6neg9*u恘K"Dv0fY n?5 PͧI},21GVU 8 ~ñgȱ4Op\F "f-kw$t2ZL!x<QC 9lݻ^)vq~*CKaqi[L,x=}?Zi&C,Q$Ԍ T+I-+~ n + !28t`e~S.1|EY=. }DQ&gF0x#i1-[0$ T;ǯjM~h][tb՜eh۞jwZ W8Pc'vdy%3-ɇP{85d5ִ"I^B<8564[@}Vy:hbXO ӯFo£ #}WIg#J1$50IÊ^3[Kqo~6q`5+2)(q3Zw5Sx%0e0BsϾdeT#|>C{ 1.A#H}r3pjWSZ4[b,RC1 +;G±P߮IƌT{@[?\Ce2ՔHksw>4V0 Ƀ kak۩-2A$Ĝa6>>(/ZiV"nϜ.U{<ڶ,pH28(H'eƧ,RGݢB Y>~cV˦LQM+o'qVU[+[4sܴ(r dcp{j:FyHO6ۄK +R$%S |ƼቦN1ɸ*;['$|}! SfyD5nGvbv+۱z+i5}%8I;Pe2+^=Εgw0L?S8ۏ{Ŝ:4i 2I"#އdp+ѭe *=ۉp6S!c8pqkK},imk#N@lWvn }&m2(lF abt8I'a%BNhw +2 Y*z0ҨF<v9gơu}YF#LI',I9,O&JRSEUhˤh䍶ȄpyAxyn+.ٶHjZ)JR)JR괥)JR)JR)JR)JR)JR)P5uu{娆(;מ~>G˾*f)JR)JR)JV2[ UĬ\'Mqͥ)JREWˀφmڤ/,:d7)~qu;ɯ`(`чyUO` MSՖiF'#$$1R)JR)JR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JReKIs4d#xO`|j:^q]Y<2#bIszM{U(@$,jMu_5ٕ$F,61G$|=La5zXIW>B[٭ur2FςT dgeĖ^\Aw4%TEE<9 ߳/m=ݫ\Auo͐OtqFqR> `kgD-m9,bp6OR*ӧI^9Q FNJ"]J5HpN3YǝyV_oXN +U%Tow h cYLɐQq܏5=<+pg 8%OF"'ZӤs9ތc89 s:i,gҦId-sq]YX<,}т]Yj7*[IQ2,`n;;T-#VGRilOwv0XMdxvV-:Gd3GFܡ<drqX:ui<]]$lU8]}O3y-f#IQV7532 +)gl>`N@o ]J.804qEbWr{ Q|RZ~THAϥdݶc;iTb$d)Sٿ{sQ*; e]gޗ`}$68' k:}Cqk76o +Y cn^cߖXk^woi$9#@V5 Q\e'ˊ͸7jlRJukCpx7q^3PiS; B6vzDv 7rj3GiTH]F;Мv^p9=hXK ̻I%\+m' Է!s7ᄐa|8=.cĉN&v| f[vquВ6w\,ARg4ѴŇX\M1@B4s=[pAz+T-PE7RU--ʤo;2%{g5u KXY$/Ghz nB Ui0-S*6; k/wRH%r+C7,V9 +'ΦJR)JR)JR)JR)JR)JR)JP괥)JR)JR)JR)JR)JRm2-bKY@%N˵bI\:I6m ~=xr?ji-TJcU%]XdzIi$ҕL۔J8 c,>@ E@oەPUʁQg//IJIp>ͧ'? -/{Ķ+ha@eC۟= cʳtV=VmLIe22*nYuƚ #M*l7rN^ھus1" ̊rK)VF/?ќ`tG`ɑq^rh.ete%]k+ +H +F+.O3#$hG`nj\*|`]Kɺb4Mrq;VhRvo$~]' +\yzZ|K$F@o&wố,-$dn$~|c5i8mV@"Yc}+($\V@v1O}N+--dM*#9¶cϑ^K'tQ=;#q0IϚbKOfu.፸ϺF|GzvwpN1wmerF̽2dڠ\=ϝ>+,;K:Lpg)wHeW +IOu;g=U4hnYMp2Te9βPaVEI,29`2jZke c777'bdhԓ:خ/N7 bxXQ8D&qcv< 3嚶6-Y sR"z)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)ZWO僚$!KQ*ŷG{TB^o܍svU.f/]3|*zu]?\H"Z܉P#q55yj/#1tcvk]cMF}Xt^-v, *yGOK4䍃+Ww~1~ZgkQFDϿlzLxe،s^-2Z^,YK9%3qW,&y% 0xǐɯ GPPM \j!2ur2O$^ipV{)3*LJS߭Jt\H",.<$ ⵍ">wk{FdwR7#"(ʟS)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JtKy-\yAz3Djm\(R%r:H &F჏kP {  y'y6oS`2EԋxG?7woߵCq?XڎcBΈ|$TTKB\)`K8q)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR`-!* pQs]χ#zO꪿u$A +JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR@uIupnpOYp_I +lHU@,n31x}_w?y;3@p ~l["0Ҕ)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR`ZZ텷˷W'nkMA%O$%6+9|e$pF^D Tմ'60OFBY TsRqK afdaݕ:`mӯzR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)J9V)JR)JR)JU*)JU3@sU)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JRnV&ڪI  V-Em0v)raa1$8^3Gq:G($-H'.g8DZ򬟳6/)I0{|s@Qi-ʒhZ.| + ¶,5_Wrʑ1 + ,>=l=j/(3HHnɫmux/"X`鵺2T3aM1V*G\$pgs^'pKI(RbF8Y>C̊wj->#}J0{ñg2+#R-\Œ@%w`03嚁^khh4n# ELAZ9w0F̌I~Y8gPafaߢ*±t.{wI2D) lp *u)$I3 {>l+< +̶KX*Irc H73KR";ɆG΍ 4k!)`B @ܻO#\s,E*vVf⭹Dz!tÈ;;)8ʀ>C?["=vqX^Rˌ5Y_kFVEH >-Aks*7|; ?Uךݽ"$ m+*(8l"8&yro('EV-~tfmWcmݰ+s~nkSP:cr:4n3pUXݬ֯d 9nqs|Dq.Ֆ$3 #8V9^aax9eJ@,e>AהڼcF#p[q[R{fĈ~7p'y׃+WvqnROܼl;P \z)g cJ#z{ gL4nEü5 ,ќ'c5lŕɉ##$|j-z$3eb#/*w.=pk'PeKyK |1]9Ev^oq֖K}̯#c8̏^X HRBw`*޵ K&̑.nn@Qb.`BT}>u5Zl#Jb2QCclk{'2w I)R  qZK rn^ [ 6) +Iy7;8w'kQQV1b0ȏ/#Dѯ$"'Dk{(^YP1>D{GR:}E`+@#18+5s+;k#~YT Gu|-l &ʮ0 q^7&bH@)\2\fYG<|˓R#-嶱"9oF3 ǦqrEl63OR8`Fs?sQ.{hWddIu:Ŝt.KcHgdPI W;sRlڎ"LV]uPH< Z$e[yZIXHeE+[=E䃦AteX8n-lGlGʌ@'^&}3MR=,$jA [׬w?fMlQ#9+8ͅzE(eܥ[YP'dt&1G=gxB1ʎ%={g3ǕHOunt%GMPT.GnjzZ'Si!sx#RZ-՝=ϵD@FГxēqz|]3\g |w,FAzd0#~JE&L!3^;:2{ yS÷qhPްHndwgWHzbNP\{keF\q5T }U7]@u"BWeDQaU.#5h!VY,`0;|W#>akD6ws̅!Xe]ˮۻ`p{o~]H_BT)b#YCrȅ!i2r#.'' ޽qsV֡oؤ2IF~k3\GOqxy=ّ0T*i61ۚIyov{zayl{q^elR#y"^"]m7FUTcZ"]<xɷ0<˗bdhJvEVVn;xfiIbw`TeH>8=v'`XcN@QPe9'ךK=nf YǁQ{OkI1,B#cUJR`iuK舣'{7k`f& +tUTw'#;T-њ)(6T6P$=HV$7kR/H!ˈp?%}+.8fK2Gc^)JR)JR)JR)JR(괥)JR)JR)JR)JR)JRu.t6(r}9>M3\;.'G{{dQr -iFg{ʶ#(_"1곜ۙ5 b[(Q{̒dx{ۋ *#>bagXo -̥*ttB@ĜTWZuLdM*HTV3 ec>55է--)o;&pLx #8 4iH&}nϚ{M]lZV9,P\.hPd0aǖ*r/ X.'7sCeϞ8#*,x$Ʀј x9Qqa\<_IjW"^˳Kx73v&T+"U<sI"ĥI?2kP]HZCFmd+bo%KRKB$%ErP`')PɣA$0,bIH'po@'ޭ3FQԬp[#ek l Ou;c^FI>X-GMFyafEU +w)* GE[jז^ q !S o ;x{.LI,WZHc6ߟ'*%-`i.:\WPWi6JѥBɴRvpX0*q})gi=Q+AIA6&# gӸr*\it{4uXuZ%Nu g8aiUE*$RpHMncY6*e;byεbX ine.eBJ.ѹ=ɞΥ.qi %F1F/nWx5.fL eI$G + ITn!]nwEeAɳd## 9@;ٵ6 ӓ=wmCnEF5qt]BdGsc4)W1 㱩MnM5jwR&!՛9# yW̺P؉1#29fqd EdOuwii6 (ؠ3ƪCdqX)ɪOtiX^zPng;8lږˤs2t慣R#H 3.-ezU;IT끟JկN}XI *!Qspp+@b̳+Mo9́!@#SWv2Lqs,Hčr sF85è7v,lcgwqfeFŒsX^閍pQC +[RR lv½n4ۑ[!;ø$~:xϦk2T]Ynficu%Q_pK(5K{{q7hPd^<ȷ$Sg+h% +UFL A +;zj0=+m)JR)JR)JR)JR(괥)JR)JR)JR)JR)JRkԭ+'L%vGǎ3Ǩ5Khߢ ^dXfn6Ю"RBI;M܁F2FL+v< +j:=șm,$Qۇp8=EѦk)Uot wS'Uݬx.F*UNAeiZhcu-$J Nd^} H2F‘5YlLckG.kʱHرB!ÀeQ^Zu{scq׍M3$;2o0N;E.4뉥x.$H+g]r kR.M˥e{;Òpc5ɨbЈg;Xcw|}XfY2.pC 0?$:uoޛ"x6twO~Yn.YypR3YcIZ_g:hUlV|,ѷfR˂0k]>{8>D^yvֱu k;[y|+qv+> +Rhe",,錨Wr~5XMu,A7M2nG܅p gcR>L:Uw1Up +PϼqyNk"x2ՁRcѦx!VDff${57i {nX0x8Tu#KHTCL$.NS v9y׌bd160!x®ѥKRWcHp(HVRrpA泬mX/Qݷ11T1}k ĚFHdH,ӊt+Dٳ\FkpFh#[#<|kt{Yh%:g6F>u=ʪ-À ,$>[pmVǤͧ\M-I$nu*UAyȯ=CDNҩ~^2Np <SQ +7Np03Fj9 %3r5eΈ{'/*#Xem[mI[Q*:Q,phqW"Kkn]P̪%FRUF!#^:w} 1VIfcbά@ yyY4&# 5{W[#dH* H^ w>{y$s""Ш5 +G|k2)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)J*)JR)JV)JR)JU3U)TҕLӽV괥)JR)JR)JR)JR)JRotL bX{:2?l?'nI?47}8j[I٨=Ovmg٫:ijΚ֭erΚٻGvr_Κٻo:jg-eo:jf[OvޭٻoVpkvޭٻoVpݷ8߽OvͿoާoVqzg-}[}o߳־~Wo\o]o~S8߽U9m5>[~_Wqzg-_}og-[}o~>Z;k?S~U9k߹Uj<7}rտsުo5SqzrտoުonlͿzjy7m?nsާٻoWzf_7}nsާ٫oWzf}_7}ojsުf_7٫cP6sު joOvޯ>f~U9m?g-g>[~7}zg-gWsު}o:ݿgo9m>[f~OvٟPOg%zgm$z]R~T?m/O_'}lP2߽O6}6}6}l>[Oڲ4BN4*Y b0}5JP괥)JR)JRjiVMf xth(H%AUrF@Y+FK{[97nLLU-Q +ЍGg=wÍĞ,_ VthA;pX.e\2Y=ܖ |E(,_;x~]vn46,/'ghZkJ!hh%0e1XxJ4 ZR(KA,G\|kN-̖N c- WA*o6wJq!HJXr'Uj6mG%&9# 6b3K泇M0%FSK⻋CH6˱Ԣ7$rq>Uy2C,C%d.⥔rWScҭ1TRpsy{ToKUʱ!g`A$g4teVXC$Te(񺺆F#AMW3TMsLs -ޥoe$qL9>vUǭPʪƨx Xjv l(f]9Y4*n*SS W]~^JiJ괥)JR)JRyiM (Vl}2?z氆`2LNF֋R0k2`pF 3ޢ|'s5֝o${ѓq$Fxln~Y F.Jw.Y6@9VVң7w{r-8U'0FxaYZ`ecd;o{,Amgp 2HϕHOCmn͔ cf +'XKةd$nY鏫j1PTt9۰cuwfl#FтNwlvsSS[$5f)8qQK0K]X@e8=jKK%#Gu[f6 +s˸6p8Ȩ{PFHHmq{9ޭbaQjH8ݑg:Ci) 'qk Mʥ؎2 OXeuܮdǚA욼/ qn%`~WWd!m@9 ;g#9g 흱0YϾpo^|v1UUYPT, x"7&"!Izm{7#rG#{zib..$1  p}s^rko eIi%8q^ki2sQH;8lpAǕ]jk`qd( 6)nO3Xkc㸖xHm*Aox-EqQ6B`0R[z[kh! +Ö}c|FR"ܓl/cme=.mJh%1j#_G hW~=HʇaSJF!e >b2*&ZgU 6ʜWωtr3 [k(߰VU-gUm 9c^pS{5ۅ18a&Txc@xk]vuCpkvQ$|*FMU< X6A`30Ox.-Ǵ!〔}yuQ/Sכxùnp n <ƽ]'X$4lxw-J̱$M$*;ם`,ύUQ{8>|f?3HqF9(NsW3ZD +&cgYK5̖]و@XeWIbnO%"ձ$"zr[h Rr3α8x40+*$ GDڿmWhhF%nw11 Dd9 fճ^-_R괥)JR)JRc^TFI%Hcf |wOK&2WIkKՆ0>"#vybPl&(Dn=1Y|Hȏ6vws독FoúgUv`Z{?qY6qm-$rPEER`n95xvBH#hˬ3n6'.W뫬|,P:y• + +O<|Ğn(u#S<|xQQim8hdY2'8 <2'<#JHbQ1983^Ysn/ J+7Oѵ Io.上I͖$Dh|斞#7GPcFF٘8'nṴm)l-F}<6 ¸< |᫏ ZG%32#rcꭊ [šơ~o"8bQm{'R'a\ܛeٟt(Axamoƨq6Nx31X:X{/fu2R̠sq:eԬKPnO奭j7K*b(&?·W ,pۻiwa%$=*gFHQpX`K.5;y36-pskG-U&R2' sXmw N$$qճh7-$y;nA\1QSY@agHKV7@>@~+;k{y"esi+OMI&CX5wLc r +ASYVvGn«xٸ1ߊMh }$*>]MJdx\s*##2DПUd\{ mlc³r0U_/#hbf8rddy㊘^I,<.\y§Fɏ5Qķ\HJx}GNHJ>eUQ翗W[j6 g+AgһxC)^tvݎ+\N[ZH4~ϗ"V01Hй &6y,I]@o`I~uX$?WE_uj1l2(h® .Ob{^ptr4@{{Ԇ;LӐF)ǁ9ǟjMƵ~MR}ZVo?]xǪniH6c 0MF{ϓ[yH2?_kxb5iwpջ1PBGǰjMpq:}.L9vswau9GVKyJHv,=yk3[kKB^]2@%\maY6hJ$?u̡_'zsVk0ъ)-x ~ 0T4{{m݉;U[c]4{61-^!JV6 Ƈc-ûW>`$V2^xv8FQo&9 bp3Y6e2b`P=kM~WIl^(ӭR»6Q¶|;ׄ:ciWFH \$ =F +ChcW +,nY~)QŒw2'I@yr ;ԿGvCԂ;W}zB["<<㚻k5}K$]O'4*2EնljKIo(IgI+=UFi˂rwXp3[3@%3)\&3܃[==ֻh@_!+tv:mƀ}2$QeG8^j12BU0%9<]XҢ2nǻcr[isDʫyV6:m${7%{c>հ` 08Q|*II Q$H`.1Gau>}2,m~20Ee-eYw (a0U`3ǩ\<#hHK,I>ݵRBIeND 8ii$8HW=< 29i{F1㷛w`3>* gG%YZf9=~J~Nz7{Gn.q GjխXkQ5˃A\ t,R11!9*9 VYi%QHݹ\d+5ޯ<ۺ-6WԓVc[j`LL96H m'/c2Gs$3>?$c<-z+Q f[!J <#")5Xm=IDrar;2dxkX7;KUv&I RyVlm~I@UP zH#<׭`|] RTHjjV5 +$;w|[..Ҕ괥)JR)JR)JR)JR)JR[ӭn Y4=td,W tȴx:(=GFSxd,nݎH6 +|BX⨧`g29x4,Y8~v0[tS怚wPsAU99rqMj҄ڨWUc#OJ?oJP괥)JR^\{}W1$j7g*VR,Ddp6*UcuhVػ咘Yڕ:+jΒJ J`A J;}7tn.yPY @e=8ȭwR_j7ȶcB0ϰYfIO`Dx5mw&INT<0sؐkT~tQ{p-[i@xZLڕWzҪɵ%x0UT`89ɬ]^'\B 3&3#f)o,]$D'km>^uuưEF6G.q2~OYEuO+M2,IpUUsѵ b]gRca>x__j-3yg.&. +ߤaE/}{+.1NKmƒy|q-旨X-%D + T>YmմW j7o=NCn &r`k9=F|opC# +Xtl`T'5-Vki6705"ߦyWu^飕X]Qwa8o="ۋۥ̙t@1Wx^[1adϮ*6i>#Җm lbjG>#GV`sgJ%/nm)pO3cb|!.-dw:Ѵ6h} NҠ[=ӭoac)ڤ|YpA`9㑟A^iBOc_%tQTj:/({');ӃLUsgVf&jiJ +yqTZ[9^{WJqT󪚴UjmP)TGz&SWRfW橚iUZ3BiT5\U))JU*{ΫEO]~^JةJ괥)JRu7U$ 'sԚԿE#>7ʽ?a #=XN3ˬO}Gywm"RJA}[Pnh{ǠO5)v6 aU%'!ÜbU_k`J3$Sa aʁ9LGVV匌HSk[?k{Xz]Nϴt'Ƨa:框ͽ?49j~3|$n9smu EuKܟ5*mc @dR@K;VW+#k6_{Ai(l#h>x=*ca5VlH==_*W +t'.3#NW9"ό3gO*VDU + Fj7HA` qSv<#00A#=i^=G[gK/~?i^嶥ufiS4 1JYM/M RN ۇް?[7|Ia&)2C(-= + ,;6=XMjPmVwуVm* ӭ]rF T6κ-$ g8f]GGrn8mXdv{R4`g + +~W=>b];g$n{; +SEh]I&p7<zk2DD7A4ձ\IoԸX]2Hu`ppOu$+Tu#P°.=޹khُs6 xG**P@X6 bg "~@eKNC+ + j5 +1Q>$2m9pOόfmAHQ +ÏtR,ktr-b Ap-XI62-br0>׆t E#̠Ս-!`:+ǺFG |-&60ۆ]m(KU 0jOѬEءAnt&3omāhw'kKH_ؠ|c?J<(Q#Gl`Trx_Jpvp>gu% :;p }LJcY%hЩ 8knfᥐ<9ۂ1`6F95oKIRv DR#+ T$TA^1.㪮FFx V]Mv&) aNpqYPk\ZZG1LEĄ`}+/Zgq%юYj՞HXn"{Xm!!bC {{1^1%pTV-d.j~-٦2atᾪ Mr$6M'ڝvƽZb3,q6Ep{2#Y/mך\+ad)`jTU@E\ PȪpH^H\ 3JE1I$Hհ̓0R}WS8U+p8qLfݫT-mJnx ޸ϦsUG鬨͌88K{sulν1PPwo~\^JiJ괥)JR)JVXQd@a3E4$)c} AJJSr;xaxV-5m*5 la=,n#Ƽǭjj6RƲu.rn~q[j?֛6m\L|XE?.C7Ik !þ )0\ !·?\;[ڥCnU~eL +_n[rJ%BGpB׿[% UӓTҬsGi 8 lV/hnd`r }^Kݤ/L^HV' +5!QS/[oǬkcYN7|w %9˧ZCܖqUxqnen@XSA8""Cx{wWN^?\ J)Ȫ7¢3]YFy`>ax}&FU,pFF\g +AZ]DU-'ϭxivE..P¨#1d4twKo X2O|Il?&ZZC Yu߉a[)";+ )Vqsx{v;ۗthDIST~57cY'n̥ +N39qQZ?I34>c{qG Wy)gTE!vF{]}uM^9`2aI$q0px8m8 G?K./%l4괥)JR)JT^myq͑Z;B0*qϽ|;TneѬd|a!UV vQ8{x;+8Ѕ97~Han|ԉ. +ZLuSx|銑+4v1RHUi\M\BmcFzO!%ʲy@$X^XZBpBܜ5<9kQGӴ|6nF5=ΛlX4q*0`T^ +>kw3<ʷ!x1H͆-'Lc$6z}Uav#:;ӭ%Ӭ5ڤ~l,`r8~edž=FP26'q}ޞu/af΃?0Xe*Uױy:YoAVCn>x|a&Vx 2;H'V +-@ Fy>$ +M6eZU`WpVɧͩ@IpP + [}A]- +rTUNr*q^JGRH6iʱVFHdfXY |{[|K &e흸Uk/wovԎA:eT= 5)/a#EH$b/0B, sY6gwyo$Bv& =@2|9E/ʎ+H? K|ΩɭWAbA"oe9Ra*Hϯ,$-uFH*9cRЭ"`8TNp2{cO,{}?͐pUp|l9jwz~UٺRW=ƳbM!FT-p9l =jcȬKٱ!VZ9Hu :#SÃU hOhQ3 S/t):.U9P?5ek$}A I4U6qҀ$(@N25'am?mB^5pUA=R]&B:|b\SN!iiA\|AZ,|07+ہn1$+/_{C%DYC XvnyX٧ dj0WEЦd ^qتDڂ̲V32aT sSsڵ"qrI*G;F=k/{$k6e>Eض>HNF9F}bA_RQLF 2GAݏgLnab!K c|94-+Mq+`A]R5yS7^6J|Ȩ,D Ъ'ɇ^Ƴ(˪nVB)WRFFA+̓ƠDXԸ$-V* F w=^qQVuւ-BGcz}ͷ fC+F\|}p1 +3k6zКK rT#RFT7`1>fn\j6*&st>$]Sbeeq, 5exo:${$*7nꗞƲ+]{9-Gy @X ykSp<є`*#Hͩ1IPɘn PECiKiӗ6s,:9V'%{ds~k`[A2";2 r}ݢfh007Yيv{Vϧ8"< cOyE䭂괥)JR)JR)JR)JR)JR]4?Mq^d`ؗ>#.̫ܰ >z8K%'s0_5hmJjUG՗#W`gUBUB*W`U6 M]oƬ +08S]niUvb85 ii #$۸C)}sYV>I}vԁPUGrkHyʗstğ3Y`P)rjsTwjf|~$Ǩ4x\s `}jKʼ.lnČ@9|`Qk +:ڛ{=+<=jShUS(NjcPRSΩjsT=ɧjd5QT"ޔSTT5A޲<^~sy+`(괥)JR)JVRAӚ`Epۘ 1KmV)PYC`]Yɭ]Cwl̒m,McQ/tzv{؝Ǚxn5 []isi?Q t]dPHs+w:FL){~S ώivmt.dH݄rĀ cr<=5nMС( )Xɷ'eHuXoK-DgWnk'KBC 7{sT%ꚽ/#Za(Vw8 To{k[C)YR.oL7$1\b5}AtYngb͛ǛP,#csq 6Sˎ>^tHJ\*&yg#^:մxgdmAok7ֲXY&6]$Q1OKҠ]ʹ?Mq^LrO` ~\ԇ J8SFH +е6mamr8b8?UHUOzjnZXպl$mY]ꘪsP^'V)`! |d%/A fX&u^LmG#_ +l9ձ8^iŻa=#8H#.Yb2myX[Fdxe gc@P9dj +#D$q(  yQ6=¯vΪ2j;5M3ë́1p÷5ڮGɨGgx^M۾HR+2xqc5BB-v]@ؘ?&kTMXZ8'H70~n*Hd5R3nT5]MT&S8iޘPk[׎+q 3G]GkQvQG +V%TUfڨw%R"` +1 T;d'u +J>㓓Q:v}ۥ6Ѫ `SgiެXzM N9k2RjҨh+#_p]~]`(괥)JR)JVj??8D K`$D~H w=#O-XƧ1Hc';$w>r%pH,'j~5VlkՄŰ3߀Ŧ[s1#Bē_9+TɌyJ6TFX*/ #MYc5xNI(00@=Z-G;|p3AW\,ۑ-!XX\̪蝉\q*lfÞ*&X D`+:0wP=V{M?T ąc !K<Zv[F5?P9#VeR!I>Cn} IZoC=]WR~Hw+l! ++GVq稿:mbdx'Ǩ`> dzV4ƲIpv c}̓+歟Ě΁nrC$ ǺWקi5h%&4V,BrjAxv鶿*+u P<)8;:ݷ[^3F;kI-[dhLqs;R:wVPw(=2(Y[]Lc)!c;OW^(D.C9pV*)㼺YIgY]X 9^D%FeH< ǥX^_Gy"&6l3)a ;Vl2b3;FbM%F8<:PmfC/P7EQIEp@WϬOo)k3E *Ϊeն{gT) rDGK:oI2Yv_q?'<mOr\_ZQАK'),$ Pv=z H,q^47ms<")Ses{QY᷂~Ni#"gpl djCXRvYxAg?]V-BK ۸$8cۀ <GG{%Im# +Tcz><_+-8*F<k^Qm5AkyU?&#ڱ5heUѓUB-hR295ootP;8F\'WZ16j"C¢+'vKm~mF%ĈIېAa TH9} +WW. "Rq܌5KЗq" T6!n8&nTx1ۇO_sy٥Z$188Զ/`}y%ƥQLM3D@|{/ґ.'(1O5ɡ5+:=E(xv v aq&{f8]yrڬԴ랔Mo5jW/>Aq{u&Nɺ>j[Xw%L"@#j8wϕz\}$a.д"̘Rn$=.ղr[M) ʿxlgݻO#Ek&n q%rhotnDFClcֶzǧ¡ 5Wd6"U% `q^VO%q!1O0G$n0?V4TA…!+ cT[6JuڛAEnrd`,GonWkted2<-IUWk c{[ϖF gYX^L.rfHv rx3]-PSEBmAnhש =WU@E\n# ^7WsZ\[<)pb/I\1 Q,@qO"MKP$v5ڸKwXs_NM" +Y ?7cޗVZ}٘-qמ~sP-6\->w!^Vv7 `3*TƒwA<`ZU1U"zg7_ +R괥)JR)JTvY ?SO9+~=?gL6n'ێcR6PD 4UT@ TT~ ♧HH y״ӭRbc,y, {NjEJTS0TƱݬL,(&U# +ČO5hZℼȣ;Wy +ѭlkdBc`AGwcvǗjIJ𖝧FUP!79U-<>l~ ҢHY]oum KHU]Bw{7zZ}\ Ypd@b<.~8 V'K)eWM _Ԏ~U:s#MI歇JʖFfWqFop{4汖grUn +@ N<'Mt +sI$dպ4PG;bLsz|ù>BlŒ3 i2?>={WjI,0;g,OfCdY$F_A8F8 FN+;0Io;Ty'8WgInzZ:69Ag$sPxyTl3/7cLrJʐ`o4wq>QJdy*FG I! Yr62v dCIu42JBv|`1$W6mb6 )[;AݎnaBK@Mq~ⱮtA$ΎU RC{fsDǚy{W.j]q^OVSzoK%Y4le60`ɐnqh%RlX̳'/#qJoiԬm~YM$ZŶYT; bFH'YP&Hԡc:6yӧ)8ϻkSy3^[(j0` +X| ^L͞Yy|)isXq3LhvhV.Us=%KB"HE* +I3U,p+1$)=JGB8 .g7,`8nG)w|-VV_t/eX&F#o [k5ݭZI:"5FL vVD,J`}d\~hPHȩdpFͥ{dN"6 . 9 +[uE%n۔s;q^siNN7'Fzcy +C(|z˹'sqF0K {cTi3{s^ Ǽzc)$s'^qؤOGw` +(\嶜9Rë$ K)$I5jlӕ] }2p+C-U0,OlyWDP~ј}199Cki*2‚<:4!KIǙ +@1|S%ɱP$RAw^-mq.I2 9NpƼgVpZLD0Aɏ35jHY:aq's_Fѵ@ R0 s5C+BB7(g1Yj6 ?fV҃dx3[)@괥)JR)XeX8<rO+/+3O + =UhN@ U&*X(IQzqNGa98߯8n#3p.쌷nI5|];Kv^B3NMcX'Gd]̀=J}b۴v-s Ǫ>Yz(gS RRL==XxH!Xl!ݏ+"Z~ *29Bnlk8q)۸&"3M7rwc]Ft+CSn|s=dcU2&(MVYN\B%2?s^ =Lb,"HoHdxNAO#B+a63\KhG&6'8r{f^çFe<3;A=bG]6Kw1´@N1|Ƽ:`5#=g欛-vRmqHq^sxO6eB0ΪUHeo{yRU T0e28TFmmxy)a3ڮr**+ ]D$۞qfF9$c竕ST*L +}ZjMK&ݞ3߱"̿~M-2G TL3]ahHƫicoh5Q`dW{~b_ڏLK2p9ҳ1cMњP7-[eΐ&WH%rC+{)u~*4GOVI>CbێF >ϨNŦXY#P~,PV-"3A&h=du\Z;M-K+Ȭʥ<]^1wffȽh{y˳E2xՇ3^0 ~j/A\udᳵ~`cK=C*#UH>`xAms3ƍ02A%{9c^n$Y5.{ĀýyͪM*!AN^iBK,),PU|Ydm$d89oumoʄ '̎¤&ᳶ73E2c;>O‘5 u2i#F|Xɢi%$$h7;|q>'DH\8>6pzt31eLzW!+RoYϠQj5$m4r%Uw5h&zF}p +PRgTS0~54)sE*GR#4k4kܾ YH;d_ +50;\*VTC qkT.5ǎR AFH18YV^\FvN#h\bxi -``@RWFUV +dgG B8p +Ar^ߤ,,'jvvlu5#ՕՕԅ$qLJ%InG_mEq3ۂDX`nzLmӲ'/{Kx*G؜2|>!>ofOQ B O9[-R %&DT8I-(13YڌI''6J gd;r23ۜyk_[Yo*8Ӟ^ !$Ct+c?ګgy4[|DJ##55f #PQ3@#-id +Km=j_0؞s!~VN8Ƭڧ2AAu٘qS D*C w8YI r& ߌsUڂ\LaCˀA8~e1)F[ݴ.蘇^#zgg&ίmtŪҬ.:M'5kWPHUm A\_fR# ;)aGxYf#e*mNߜzThT`ק{x0q?HҔ괥)JR)Zzh^./ []ch~++Nm^)m-FuJ$@1Py_x^M^+i6+Ÿ. BYL#; hF<.AX ViYz~'A$dj֗Z%Υ5ΝqrUQ|KNՖh-a(geX2Zt%PHA߭@(E!@%9 ۬%?"$qpd<VɊ6W@sh/T9>m5 uk t\PpsR0N:%~SتN$Yfi q@pg{ֿgVWWPLK%VہƷ7q}i.hGHK5bGc9% ږiHU r0ᙽqYpe6w+İ1G%"{&lv]@f=ϗ5?Y[G o qZgƧWZ\f=Sp@9 +FHѼi#Y|FǺ4jPtT8XJg5OhArD\]< ƇTrnղR\?:_ +ilFI@ĩhNЂh +6>@ߗl`w WhQ -]a>`VW0閊oLֳƽ)|ḢL8<69jqNbtd@;goi0~QWUjD(bi'& +IlOSmƯ~[H +g,3<3u ~3!.~*Ɗx>Ԍ{7H3sU-χ3 cvmíTn@oL1 iZMk>vNBs>l~pTG?4?39?zė̮ QrR9tM6G G {I9uwO!ImUUU'j_Gu)&ۅ,l +JgTpJ|5ŕ*Hɽ} SUhHU1(eM #5w/u" -`wm=qXϤjW6vv( dvV$c'Wt׊ŕdݰ`zb${9& @gak_^hI +.7ܸW+#H}T􇻝(=]Qek^WcHc¯',ITf7>#Kn +)' =d]%,S<{~ )$wUx0}Cn10ssצ"uTΧ-hQO}08P>6ޏV\FVƽ;}ضn~N3cl0E@Yz5Bzu\1/\"MkES q绊ҭYn\.b0 `1Ϗ:Za/c!C`j8%GK<",N alםϣ\c $=Ď=k6] FڽuRFkcU]jKtcL*h{3;LWӭxa#LF0Hvp:ܐΓ:u +$}瘝 %myPJ?|<VHU'lMQmJZE-n zw:lpq^7!tGpr2AǗQWZiKY 8#0;$5D(ϓjKBCqA#`*ێqV6oG[\,Py_DKd(%\pVo/-M"E#ճt۟5s\yP2G$>jŃڣV#ScSDHYf* Xh A!o<Mc꺅 P]AC0=,ԮXgh`pGJ丳ȫ9*@4GӭV@Ɲ2uR60y^>O+ 'I'qy|;TTbCfJGy?5Hw#kic cf};PϴDmϐwr3^ZZI"bBids3~5rȶ (G<$RV;U0K6jɭ(؇,\Fr1;T=bBKjѣ>sv}F dfs$6H>wk/DVA< ab gϘ槷f]B kLK"av/?7 +GiB"Ǵc+ bmxg]u >(3ؔƪwG`sK5 /}!ku2$^^~zIpiHدڿ>\T/=f[r|'A5 g2 +[GY "VJP괥)JR)JRLUiT1UbJ)UUjZ*LUiJoܱ}6{fphvh$>5dtW~JՋ5b8;Ahk͚~T +{?1,ΟrGϒ>|Vo䣏jX#bDVvcN)8A3!A=Q@AQ!Ku>|Y) #Py(kvm#jeYUЀG4E*z3ƬGbT>^A\r}+xF(ҫ wt#8;FyT!Ơ( +9U>UlvDNQP3ZnTv1cp#,1ᇮ aMϨ\[K4pB!>wX˝ާ)rߪ5NԁmV*+p6mz`cU#8FTUk>-Tgf[lb&93 GqNƬkx؏ޫj=01fp#\dm翕UUѡ_BƱ(UIÌ]$HՍo*rR9KdjՁޫdWܤ#Ϩ4ˋK_fSb6}yֳ14HI#@l* 0U#86Mm5̗6Ld'i { +# QdI'{ +򲻏P9] kz<6*4, ظXIU%wϢ椈jNhgBIN$f +Xj1CRx$$A>DzԜl%Uqj5JUA [UZW43T*sUS3g44S#QȧjyjCP)0ɪmjqU\qT'!C S)LPqUjL₫U|PS5ZUE*5JRZG>?H=U괥)JR)JR)JR)JR)JR]$_L H%oz`;x#SNi+&ˆUl0$y ry;mh&V2Il+_ivrG"WU,,328j?gY$,E1̌H*A<մҭrEu9`i' *ι7U; p|*˝R\psy#k9=/P{fv>Ym1GY HHJP|V{T}N9Ę- e_a=Qp]~;kǺX𨱖ga@y X:M-eFf_c=wT1B ZfZ(jjQT$P7TR@TSD6Z6,->;Ks)>`_wj +D锹G7n8ז~#"EY|.8b;Ui }C  8S\T=3x$TM6sN{׍yKIiBT*)|Dyuu ى?'5b, +r8@FD*,F '?8}6h$}MIӁ^Q#M ǵv<5(*fJw*Z(9☡Z0*A;qfFjqW(*51LP)1T9@ 9RZ +(*JT +bէViAU*jҕJg-S«J괥)JR)JR)JR)JR)JR]Lב5n5\{ի7cp*}UCTU7zUSdWjL ҨSgxN]ݳfykJOU3qOOTԭU7SߐpG^ 9p+hl݌~խleHQeCgˌTZCA z܃F՜eo+;}-sl$S()݀959 r?]zOZY"dG8cc=mJyUm s-? {Bs +|n^flצ%9jARe 888גxN:p3w$3ۿye7q]y8±# \&wm>oֆ$3^*M&lP 1 +Zdՠ&7܌ʟ~chwOs2A+ԯf5 yMR9xb$G \ &Xįʥc+q;D26FX3XQ,Qg(-#sČ,~[gp'=]CtppG4-ci$`;pY#Y]{ dՑjIlx'*,!nt+屴~yQTr}'ϩ"}VؕU@-`{פqAg|q% 9& D|Cb%IIcQ}GZe*@t}ێGƯ1Kne)SrK IӮ,MVم%r7F 3qoƦt400~3 gJwZ񹾆I2-k[TIA-F^_g4'[8ƽnuK[' , n8>&hM)(f9 lsU!md&6>4]V53'g9&I#ծ\4W"O U{sޛ +)fU}s|9"+ؖX:0Xv>UInY'?0VG$D#nF% pG Zefrȗe[{i^y&($T~o~^JҀ괥)JR)JR)JR)JR)JR|a,_LO tfi%=vy5CiveEbE9|FK=/k + 70&e%5xkdH T̟b]블#?,yw^>ap3; 7c/K("p8& r;H'|Y.pmi8|kAM:XiOF6C1`sY*'CL&)@Q藺jqؓ +HLB!BĨ;g)a\ p8EgגKm$18fa$xYF.! @d1'9#5im 9p"L1IF ֮3lVl  =VЋ]I,7,rK$<s^ZŬڎ6*FKzLW'ք0b7'R>/(o4F۬aN0x _莛-1p׽cyxݣ ʻqg5ss,*yu9$.8y`M7 %SYXְmiܻ=xVksm۴l]fh…\ fx) մ !aIb@#GH[ڄ[yD.ڥ89cT:fUϴpr3sڰtƒjQ[6_e8SlʖfM֏hfƑ6y.Wΰ~!"BD -"_.xoJ܉Y䍤#VG, #^+oԜv7H*KxΖ x>~alZnbd8zG:F==⽍Mi}ˉD:=X}8$ǺX1m9rMLn1$sE]geja!e(H0p;3^ֹzIe8a#ȝZP@mt1,&+ DVKgVS<]vC|=ݣ*t$n{=c v55ŠfEFJC:Ԑ9$YulJ)pGv?!=7'v>\ +$nKucEvFI ZV q_OujcIH c0QVeu7Zd' `?'&4Gemg#w #^൷I3=R BUFrǞIּ5iM b~H"' x67oPŌJˌ#]'bly3^RI5] mTH*Li3+S;d`V ["\NJ +o Uʯ>x9kq5Vd6??5fYIgF*śymBq[z״ͩs!112g&kntK~RDpɶl듴X-,wT ܕ, FGs3cT,-o{QMe^=T +"Iy1vHtq+oŽk鬖%(P 4`uB2[{0#|ү Bř^ su5eL(Q[بlVnm nH.@-G02>8hΞ;Kw42k;Nkg>z>F= ^ۀ7|V5 ;D]%=f$vF@$ NO59Q%A0WY_'bpA=7"Q^mH ǎ#5g2}] ;?W2 m e9$ +*Kq7n/%O +(괥)JR)JR)JR)JR)JR\?9*@ &kps10I>PFۉ +'~|y3ص\?ɅD3w?WJls r˜6v䱷!9tV# ]oi "(2yڡ^A=bZZ9(#F>jW>ld0XKRĎ8[MvXKRIq*M A`rs\^}, +3T_zxAPGThQ1PJqVmDWܡ}y/B#݁p78'_V(9!Tm.#/틟VN+{Xnd(aj{XWdH^+$U>s"ϮqUmf7 cPzsVi)[Nй(vd4eq]1cIYG&bA,ѩ$ܑWͧd6$`@zr xaMTpqPuE2pw}7mSzf1YD)2><*ɷU(|.p9IpKx2lF#r*}:ԓ HڊZmsVÓ]}Յ#8ܡ,a"%j( + zזF3g.s=3YxW&k;j^o'L( mmݫiVJc$t1U`1t i6m{1^‘u@| f;"+/V[Ƞ9ZC(g93^EӭC*āX( 0Nq Z4.Cc3It&;5bF9Pxqϖj糅qE'QzgzD(TP~VdgpPM@ϥcY +vGO~II<5]2rsdڣ'̨$Uah$;Լ)]^4f۵WM[VZyR.odr~?{^8P{c+jɥ6'h+aeV<'Ap8<{$q+Fb2F>5}=F8Tg + M;I{(D<=)lpxYD)I8=6ۂB(x:āH!@ ^t}> yKg?ν0AR2 ,vZ֑K"]FUr *;E[13:"c@uExc$ @=3Wm 0.*Բ8%Br =>5tS1qc^U찬k@ `>j" 8WĮ\"=5lv0[)Lw$)pgu mϵ{hW5dDYdFƠ.0O+9l@BƠ0Ž~P5 ^ExCg Ʃʁ!OaHe8;%6䪓#< ^sZs+`nˌՂOjr~H9ߛTDH@PlyWQ$ *(U+3p~^JZP괥)JR)JR)JR)JR)JR^?9?,犦qTQAT95QۚqTS5NM3嚯4Bk 6"-{5yb&QW+|Y{HdE`8WH$d}DVX5p5\ +# Aάy@Ǽ1$Տjqji,9 *A8ڛVQNjyMrѼ*)f>rMV.IcmHkFI++<]jij5 Vל]*$pxë*ü`JV]wX~ȦEPUP +ҭU@ +V7U0<޳jWD$npn1hk[ Pʮʹ!H88f3T5%QHݴz5$z떥o HQFo sRS\Si&"V6& N mK{G(׳(aW84]A"ܤ8pkO#Ć5u1ceuY TT PګV+jVtUi* ݌VNUTQڲ Mʭ(괥)JR)JR)JR)JR)JR\:F?Zź1;qQMkhUdwK[42W*7I E_Svvc  <ךj6=C$)&*r1~`i0m˴8$*-n':Pu{0>U5`5ņ'g|X$PdHQDi8=2;rًEhꤥ91[Psz.nn0cbBsI K|z.T}Bm>n6NΊn +A'uod` +d6G~5޿6Ћn3޲5,00W9ү r!ۀA$wweOwezUӼQ6vT/Oamnfr4Cx? +WxԠh:zpQ:GPfO <{Wկv`J&a;cwc{=NY3[Hzn2pϟ1Qךƭ(KQ=RA`qSzp1ǿqKvn5D:ݥ!YgX9AB x9WdVV% WoiRT%T sFwEt28ZtSl,Hl}a/n-8*.m$psXRa y#`pX̫gVM{Dz&y.U!a|TeKf%Y#v Y*FO5)8fd+m;IG@,aʬlln2NWf]L@ѠX4;Y;"yq^~z*ȃV## #ʲ{߱:msp X0bֲ^e+tGvMb ~hw ~Z[,WՔ]#Ӂee+c>|WE[=@䀾$*sXk<3X%I<< s𪧊&EZE$@Nۏ.[x䘩frF㵆 )7_iJ괥)JR)JR)JR)JR)JR\?:G_-Gktbci~qQ&lSaApG>gʦ@ (%czOeq$8!^q@?9;&/.'TH_y|sH4ڼ+Hݗvw13PXNEU1ǒǏ?H{{\mNC`#+;H$ Ӆc;8w˟LT~oyeI n[vdq/,v!i 0| I5w]C套̀UFoLX%Q3nduYs[MB1zkQ,Gq1mvf~ +w#'Vn3|ъ7|"&O߯[M-,ذg$c+> p.p9!s#ʠ End $#II銑NuIބqFw9>\WOg4F4@AW]xMkpKx t*:Rq>3 aٿǐqm 3F 8V5Ο%ơmq҆)p3u zxOM$\NqD%  nx\DoEk uyᦑ9k*/!x$)` uƝ6H鳫 >VH⤮eHU:(P{y`eI:/3l9C} ?̺u;S,Tx0dߓͨhV :ͻڳ..` v|1e^<șG FVQp ufa{y+rͷhF œֲ5m1kx~g,RyC P|ݮ Ʊ(p1bGl0Y`TioraDg6wւ$c4EQ!fU\c95xA\+$;LvC)F~S6iGK>~$v؁ t#<)e<ȨВ~B o,2*em{e +ZO"͜V28=aMZ[T+,) |*+5+{D®.C1wϚMHi<[Sr3#H/Eôв HX0q4[N>\| ĄS^uy*v괥)JR)JR)JR)JR)JR]}.^EMz$wE2VvFsVg=LRp $?Qo +ۢ*$^H{)@lc1YmjUO*3ދcTʭ;hPO ۨ~{]T\o4asAXt:tgrepFEz[Kp0I潩3U*rjfޫJUBiUw yUmJF^a3 dgg*UERV(0Sc?5AWR1dv3T*Cy[H(|NO5銭Pҩ9j꠪)Jc4JR57_iJ괥)JR)JR)JR)JR)JRJw+*(35dwKlCgn=j/ FE ŀ?{5lwKeR0sg=s*bS$B}~5qd#2>J pr=|icUϫ:ҧ~ԩ0`b$ ;9 G̀9 gUuH9ZpE qXgg4{#b"$NA:wA{2rǼ9vS +%2gԞ~=<6JBC1 xizcd{Ͻߟ:գIԠԊS,3gY[(1_Dn8ǺI W9šm<-H1E@98q6Hd&5z'Hbk/cOvHX?`}b]CL ̬w. |5!igɽKFT}U;xLq8 ϐ=yx5ѭ,w +&2GqI4kn^5!#O#y+*F0;-!}PqYcDϔ{r +X +bK -uoAo!JOnq^E~ y4&.Aeo>(dIŁެ3VC[Fڎ|j'vdSDӱ-[oim"y`Q<8#oA^vzqmzoa`d0`I>gy]DehwP(b==+*bAU5LRTRڙU9< TRfbfRڭ1J]LU•CJ45CJU1LSLӽWLR Uf*.(kf(괥)JR)JR)JR)JR)JR`?8ҭ?,-\#G 0T#ұ_DhDF1LeA4kF*%-62W'zns#ٛJ[_opxO*˰$` 0 qAUm3$A^U'8n1 +Ir*$"-좵%pXX$WM̌yzb`mtu BIIQ%c[-zwjV,|J%+۸=21cŁ)&@ +ĜeZXç"MB}+`4Ucܟ[J.ХcGcړhhaٲA`+Z7W4EDžܯ3Ye obF÷'y$`UݻnHMpp+>=aA^Bj&3T5QU*銨[F(G4LэPUNJUjMWmPUViJRiUCJUiJcJ1JRU_Jxk0zEV괥)JR)JR)JR)JR)JREa.k҄,.7"2]?XQv\EOceEQt`~I?_ߺ?O`|?˭6sml8򝿃}Y g]z 35Y@oz5CT-g9{ +Z=CT6:=CTz?sD7UqO! =`w=Wux?wm5wɬgx?wm#TU6?sT]gݟ*?k?u_eO ݤ,IW5I=X1oZko}X-v:-v:{.bY?ou~'t]cſOd?[/uOe emopohqtDrsmj88>p14>忂{mo!]s ኩm?:%c᳟ܻS[[g~̨l=\hpk{kOT9*W5?;n3MZ}^]k{bwlqol~NZ:ͽuOc֏:{[,uoۛ:8>_>?'Ceվïl;g2΂_1?5: y%U=^3mU[0[6oTYc9_:Yd=Z1Wص0~ص?tkſ=Z1oOcG _:{bݟ:_muí<kƭuíOod?Z5m>ƭt:}[~'u_o$?[7m~nI?ӵvߺI[;[9I?O 3%B\)IQEV괥)JR)JR)JR)JR)JR)T)U)JU))JR)JRSZ))J)RTҔ`UjVLUiT1U)JR)JRLRV)JU))JR괥)JR)JR)JR)JR)JRTKP $$6tkᑙYLx2`Aޯ)Tf2Ny\w3nAz:+{g 3) +AWPiJR)JROzy{T]Nߌ7cns)JVjwno֕=0\zSdUiJRF`&MȲ.H0ad^)JP괥)JR)JR)JR)JR)JR`Z,mՒfJR6B՞O^I*BdEi#sTyah^/hVh2H{l +ty+pޣ`~!/ᷝh嘅*@L(;n,v5!%ApH'Ĭҥ.n7&wMk3RԡңF~HF;|awA|V%rǚK_%Ŭvm)TeN}!+|Gf +l~hN^qZLou A$a\>і8`9#Ӷy/_o"kI$2߽v}lvk i4% Ɇa=xWݤf"` s.< ˕֞-eu6gϿ%[]KIi'r0|A< dԦ|DKC">ܨpJ%H ?*ODnD('Ϲ8/v۞\VP[:6n7`Bd4Y[٬BH$%@VV$< +jj<țon*vmS{z^@I +$c֤XM~#d&Q"E1*O<_}+m9-dpȪw298Bw`Hg{VnBYfDڬd2wbu@@%c|cKm@*e)ADZ#^pxRKy)hG/}PǀXr=EV}hfA$*BMK_WX&uYe}VfūFG+"7GS)Aw<4UMESt|W2`r GaܣU5RBͲFee+`gsm<#{F;.tJsWO JaQ"/ܑb*? m٦Fir@+A#dj:zeE!3e.vw$yzuq%K#}g +} Gj:WNMNe. +6Rec8Y>Ѵ)MI^(Pi +yH2ǡ7ap˄iZd.mO~HP&6y*zn^DEf8Hla3xRFȿ6?85PZ&d&f{t]s  c+9IjۣEBD,̾(*[}FR)]㧀]o{'#?~nUZM.f9gx)Cw-Mljl͛eK.@?x q~VSD́$PϽʯt7s y5ʆ5F7:YHgxU#fbT(=޼ϱkjǢdٌ2 +8 f5d6@ʶXc(d.rvOwoOHѦD}W刣++aH 9Ov{^Y@U`2X vG:tc e w$>" 4Pcۃ.c9" $G0<ퟞ6$ӧIVBdY+t;<3?8r ig[#e*~0`/|L.ͯ7JAHC!ev#8j +ϺSHK :h`MNgX׻F>rT.eönq(#? +b`ՉƵb%]%==? e rge BhSqOƶK .%Rt;J4e ${sGi R^6 H17ةyٕ8q}BO%/,Ad8BaB-f;./tZ T-؍j4o3_tA 3jk +#Un$0O~cc84:@eWDǨUJV7|9_ M"-FWRWi`q^>3@,8fϺo2j-R0YEͳĒ+?zKsjoi6e*dAjOsXe&rR+!AT{<:s^iaGVb7cڶZ5M&ǘo!\Ԏ &:=Dvm$vk$8ap{]'o}Şg&WbmA+kcĂ!tԂA#[XT^A8y6u|ش#\DY\. "nA ZwHvX7l)mnQjWlp&g=q,ME5)HK\x||߽Kh6DIkHz$`0Ie4)@괥)JR)JR)JR)JR)JRn~Rj+ XT`pr>D[v F]~K~{;<,@$vTRv ϐO$eV̶* XePG<{ȥR +)JRbJi^:Ң4@,xϸ|UiT· u*ҩLJRUiTV)XVvYv0cv9rwǮ}k6Ҡ<=sVc;f;ZB[Pq^}iЬ(I$3I&iTNZW4r(ee*#WhPYQ>HoR[7.s|ٌaBa*I<^5sH@?VΥ)^}d߳#v83JUjTȪjҔ(괥)JR)JR)JR)JR)JRx8n.ٛn<{CD7# +]MԡlQN)Vl2@+!yO`&!mz?9U {r*+(N  k,U7 6N==3ViciXmR S1nbN29]R.E ^)@AOyFzy>XǝcSZy4佔2$m\OcVKHN=I0 ?O:Q94S5 |jfX>P+CqIQ(VIpdQ BT2:>wVEobw$*HG$('d[EvH]]rF #Zkmj2HQdBm]O|Tf +|IX̬$. |q:u) BE{ͫ[As%U66fj\hHІ) > ׂў4ˁ+N#v9 +rG<S,a/FBKۛ!xSpH8w 72HWw*Ws`ڧ-[k^D28^&e4vEfmx9[R&ۙKDiPx|Q א3#Scll9ԋ떑Z,IȤcv +5kxL]׎{^z%ݬ:ls-O +h$/n܊/V]UѣfA eʰ<7x}0buess-O, C0TdI$RWv)7fNv{~umrqUA G@5e:zu&l@f=TrImܤ1Acp,#םkr耲?C.'K?I{fPc=23V^kbo@IB$r8ZValx%rH#׭.$HՏ1VX`5,ĆE@a8%a_X,R&Pфvxdc""mfkLKs +6b15emw"ĥ<}De235)!f-9GhՂ"G|W٤$BI'$M{k v3ua;\qV˫Pۙ!$TTT0Y[֚(كYCǹGv]n=HT.{icOkKV2 O^:C=yKI8p>zڥY(q,U\drHdgUTvSjS 5W ̠@w(R0Xm$jE4uQʫw-k.?icelX?J63u$Q_\2|>U% p"U`~dWbWK;v6lz8Yⵟs_鷏Mt"qgxV;*U1a8IO[ۻ7L{쑳q h'[QY*q+QPV1mN3VsVU)JR괥)JR)JR)JR)JR)JRTKUH$´[/U/.h xV+3RM38㎣Hd*\g穝7T$M̹T Y);f* Oߩ_-<8+OŃMnml}=83(H󜟍bXH]iR{{{vHAY>-զ1՗Jk=ߚzp~F19V B+uzs'v6gK|ckAMcX +OV׀A<@ǃXpYKk}s'n#- kok^V4t'䤮#{gA?l0] ++}h1x(Y{z|⋸5KaeYnm!r6Y܅Ɩ91#`Xv$k*IͲc f7T>G <`ֿv?LuL{U!!w b2|jRY±U +qc#֯ӧEɸZZq!qqXhwe,bYwʌ\T[L4d0R0B(`>g+Óc h&V ?PbqF;d.`Q psPo:{IIBk&);b:Id~?J]oI%e/1 {ț~lc +.U~x߁ye4dІ<"I `N>jӢkڅĖAr .h#?>;ޙ-ųn0ȨNtnfdVෙP3߽x u vgػ'5s P!02z8j_6ӪE8.${fXm >ѿt!*@OQ֫gjP +|TXG"EwLoX jV51%ynn$g+^BF>==zkF3=RFbdRciPWhջ<緟 +) }Fpq`v8Ұ8f +r#s?(qYZĄhav4hJpG v=Tqch=1Vi S$hH+C`dq^ *{2(`*z/am;gbǎp9eR괥)JR)JR)JR)JR)JRf2Na^-[#"4ц|| UڡWTQݙ[q!9/kp֕k%Q#8̓^`iPgnH<^[<*xéq9Ϩ[:G,%YY`NM{a!]@#mö\n _j3X͊ E-ّ 3BΦ' 3xǨK+@#H)q9]GZٝLϝIn~8YuR# APV)i0H$d|jb;D{2bP~qp=շWY(iH8('dףGP3Vw Eh=sڍw +Gi'`IaN*/뙀_j乊UގAcR11nƽkoS +ʅ@p=o:%p6.sfTo5q1pUmF]+).9 sZZ)U ^%V9"ERs4"3UE*<ׯ@duw.^zM2[y*(95MO\`6Q̫*de8e5+{TY6&|wh`4(e,8" FfӬ=n0sպ>o/ `Tr<:X0߫ÌzEU(^FQ70%WrlwMV+D2L;0UY UV6A aۏ\$d G`i1`qجRuk;Z"=02FYC9>>$*FKxeX^TYu~e'&;i.a"')"Ѱ$ #4A5[H$@>G}G]qZ Z^@ *)X`H>dK2#? ꥾`O54渂W #4AKTK}fۣ.wc{ir +s ;HPCqu,3یII'*.k =WA+ Qp_H%Vtp#$[ \Fie']E&vg8`{p|y +f2& /m]wH$ՆC) 81u\ NirN yl(+#$m]4j亁{nҮn-1QV[8!5 Z@&EEڹf!W'f."ֳ. @H$+Rȃ<mVrMCcα5L6 d۩}_C +ddCuVjK=j}=BG@qsR >I86qߊc_z1~{qWe9|^6$2ʈU>\k#3gh,8{ՐAp̑J]XK.x`x].J0lpAJR괥)JR)JR)JR)JR)JRFA hZvo]Dh$@〸y2{Vrw!D V,G߬ͿD69,K+퉈#pV07IYn" K+m,@ +~W4@## +0wl|xԆMnڱ{<"WoÖXԞj+DՒ^\Gq/U6!~|涍6ibU7$5-xYqJIE<߽zk1EkZ9uܽ+2s%0+ f!FOT+L(Bo.^謒fuc]R;MOYҤ_JRT&#ska{|t aI^ ι 22>p~zǻk jdPLdȟb' ʟP>iZ 4E4iPwp7#>){rOqF={$G涵]6ͤs +}d1*3y2[ݼA]M %F@o7 + i0@4V9:Kw@1+OG3ǧ!ʁ2Ro/ IDr{sSis&ԏ XŸF`Y~%L~l' ww m-c) bϮjίKnГJ+V֗h:#o"P@^g$n.e͸lۍt[b}I–;7{ⶵ5nYI05^p=qj;=3i-N6;*]՞ +)KԊ#r +,~/vvWZu1w. +lg}lG~CEI;gƀP +`rXs֦-~oS$[v@A?=x4(m+w]Pcljpv;MsLM^+mrTw){-ڬ=rQUm? |' +$TI1%ڪpۜx!<~l (=ϝxZحK#r_u9c 9]vB +'8$`rj/ON}n$;:nd*I䑒=jCI'Ѭݘ ̛@CfI~zouPrn䉄B-/Jw9=a!kb)N붒1ʰ ~9ln|ym^ v^5hx^&7DF"ҶĨ5Aq$eHapFG`ꗲ̫3!c^3lt>3EH1r>W||*LѴחN2ZB=o'c^sA@^E@ +x`+aƑb$d9E`0G?y^K6qh[pH\eqѡ*(ocOuSr1$ɭ`V֤U鎪>^(оD_ ! U8rO,#ԃk>+=gJXcXHE +tGuY1Bp`(йkctȴ{hPc$fR괥)JR)JR)JR)JR)JR1*9?tF1|cEhEleOzUK&ēF $$VO\η2DD*UlyǢC;\,@H6X1\VEΏmuDɁeIFC2pNyβ-cBb4/dL*gkcViJrfbp2I8@i%q70v۸["Į8]7ۜ,3Vh1h2Ѻd`e H4;;yD +%Áy,cHc .r#ݰۿ5{2LmC)gy<7QD6!f_ yWi:r0cHby9>uegbWi%Fd\ڄ_A08}k›][nr[''ОqjttKHWT &܁^Vv 8/!9~b|hu!z*1,\%r}~zhHR9 ~|3tO3ZmۃV*X59 U#4r(=e S2B +R#ݻkNt> eC1^=9ukhq=?pc +X sp2+>-N"UP8uPst 3+PD '?hԑϝyf%Ean*bsP>/OM*d9\$<՚iuQUgv',ei#%]R@>p=/ ]/KMJ Ѧ6Yc +Go*J8I`qp8^0zGc=G]:'8<F"osc BJ@YΛcA!Ɵoö9NdPa|+M6ɱ38NVD,e ^c-%LC **o$ ;v`F#NOVK;4}2I8橩iVڼ]ĉ$_mc =I,0{x-l\gsl +T#.hVG#FWe]mYK֊W۷p{QXwa<}k'VD;,^[adQ, +UP`<;ZVf[iKm>rG +ʹRDvyWV jKlחmĖf=YNұ4-1t $FPx'j z{Xr,'+ լݺ00w|05-zgFӏL+^[= G\wH~r8*B(TAU@ 6P0N8nU9ԆƞM2ن +3Sfcflj2պ]ʛmieDU$yIYH{6RLӘF ,̀cr3^gZi3b%rNrAo*_O*$ +΁BX +A8^]+FHi !ʡ^I989R괥)JR)JR)JR)JR)JRN+K7bOngg;qƲLnFgǮ+QcuHeݴqVL$#sQHp@#fS5a,723\wX$JVY\!#穪YR,4 ng9xdK2_GQsX +I'5cx5kH"%Ыb˸dz+ڔڝpVt$ d>B0Y N,H A7:I C09r{bE| 5Pp)\g#y6T@I}ItKha$.Q@#AXWZk3E-ˈI>K,wmjكzf\`UV5; D0Т:'M/26"C&q۽Li:Zqlѫ{3ĀwbyUhӴ;5s,[Rk{k8RKu.MA#h#$̏:y].iB%DHNܒүff,lec|'Ԃ +Ԡ9'R2k d#X%#o/MѾ<)sRugU QdR՞_g/JEFu8Vќ=qϡM +=> ,,Vq8fI\`pppA'q=rxrP >'n#WX=ýDxQI +=J:cVÈ d.FzzTNMF-r+2TŴd,zfPzF5rJ(H*|nf +VKGr#V$La{5JG,dNsǖ3ʖ(1u]s5j+7eͻxg`qA&*䌕y*YR`8 {wBq[0%0##ƥܖM zUՆqhgn;yAaJu84胑@#?5d*AU]E:Հ$;W,?1AVIs*`I^3}q{QS-.tq.p죁T)JP괥)JR)JR)JR)JR)JRFAYB;a8,qc+ ?JG[ڴf#2np$ڽ'̗*q@yY_-8QY֙^84d%ScL`H^}-e+{0 $ + Xxo $U+Xc=i!ܸ*wo-bUA + ;ÚqMAm+QS = Mf'! +p@g[}[!e! V(7S2{a+Rc?64M"aqU{OTTr&K'lgfx*G}171;gE8TW+'AΓ}YWlm9l@mv8PZ)i,`n`gkGukD,R#d!1cVft2mf"@[nDϽe\}yW)n.g$V Q'1QJtUzsjk ~%`;#|VmmAgN|""jlsəɫ5tWI4CXq[U*/VNK# kRܪwR!:fRyIW5Bw`WcMb(`jcۂ>kUTy; j@ϫ?Vے:9=>kSKx:e^~viuA + f(*+KKr*qFFNyl8}>P^NYWo*IP0;Tyl{}a|+_җXQl u#ӓQWmpܒ0d_7L2}yVNO701 1 !L =WSQi{m< (tccWn2 SA? XD(5Kc` ƒ+PH/ծmm<$F=ض`#⽼Cu:-_4둸W.l)fHXt{eu@pcӊ.#(fEeO%owi8dZqHF7"m8/趓_jVXet(Xɨ"[ i8ylq;1xSr% xf + J\ E8 ]"tiML&\eAVDڱ<ڽLтtP6QVbr On!pl|qeejYY784kۆB<rнt4bȹddR@8'Ҳ KkKWR괥)JR)JR)JR)JR)JR.2@e#*JA|9ghId9w'8l<&՝QA v#&?+9_WoX{CG*F>`ץo~^0Bn8S q^SxvY #sr<{mmŬb5f`VǤA@qvF'v|t{}.J; |ՙ$bU*AA*>AG# /捔AP>ѬB֗38l׻VoD{u\8^rX;mqWղ9``b)V ^X`(q;}x]kCm*,2dh=A[{NUS!- q^vwUPRA+8#'@iFs-@p+J-hVKw~O$'񬋛te]Xz5BخAtXuu#)}AȬh El-#1^G_TEɻG'-vjA؀uܼ*+Nm)` +ڀBNCH`D[C'e9y=ĚZ2[[=\u'JsQ:T?bԃӒWޑ>6HkOi;1gvf=iIk9vPqx{ :1o= kCKԆwgf([*o2*B-n=Cc3˨gzݣ0Mp1kG𽇇ZImuyPs}U~l\j 8 0DI#sqH퇴rI6=^ Pv` *Sx-@n/&^PF481*` bTZ^`l9 "\a)^rO9,B|AdO9 n['q=zG[voT0/8R3 1x9RHFfxG+7OM-,Q{Csp<&d[W3Ȝfc?Y⺉#.ҧGxQ[.A M~oͨ-c7 +1}nmG+r2 W."cO9&-F>:|RN은 @@GS9{oZvdbD9,=|5&Q0GEgyomrţWBRWgxI 3Ǟmއo>{NHpv%.H<`|qRPh"③8Pzĵ-m$YIٞH|x\p8hֈȏ7Ux7Q`m}܅!e zl0X΅oq#  +0cgƳ-bB" +`)ukO He<-{*R6r!^D7"LJwdZGf#$I$'מAEѝ7.a29Vś2I(ydBq$39'z[\Mua!l ycc%m,mHV2#;.A;rrKc8|,&,,,{ns3灁άހb ݤy^vi%ui=YIb|nsV-^"= . %Hw F b{VZ1p9UL\MЭ4Y7g #3y'ux<42o##5{[ȳ8e7h +NJRVŠYBŵHfV`##w>f4FCR~Np>`qʳiJR괥)JR)JR)JR)JR)JR.yQLNl}+ڰлX a,e} 5Xڼ(N3F)sIo$!{"pG A#>yjRLji{Wh?P3^]BF`TWmB}J˪fH iyP=ɋ(Nagwjԧ䶇"=7r3B@UԨ鯚KԴ%’UbƬ}RY'DvW~ +̻@_kQdRB718FcV#$Zʹ76;;. ce78')e入ޥ3 UYq y^3jzơlnHٕRV$}c'³o[]gNf]+l +^۹'*[LۨhyICɹv-ؖ + +I8ôFpFxK.mlqJfFgvb uA_JMQh#H$"p<:ěPW/37*Yr9#_O7~2HUGU ٬o\jWh-<׆dgIe3Gddsuacr -O*uttW!Y2`A#kzQn1[:FY VB,I3QK}{eג,RAvSJoԽ:1NG(" KqY]V6ru'1ҏ'5wN"4pI"nQ*9d| EIe!Hdk59YCnbdݥVPDc#8{Y_ N$[Co< 8 Ǘ,kHA +5 + +W;Wwy'#>lu{(!B\ve1;W#:T[̭,v4XcRO$JsIm\M!.,v~52u5I'ܱHf_--ȥQ{TF\4H"@18Uy=XC,/n2{:]JY]ŃbX/0ʜ9$^5[vi5pC )eNkiwmol˶ Y0c'N8>y5Zzi^I tw +1ɪ7Ι,3Ar7n9$cν-5oh,ʔ?(I+25T>bk ) +zO# "ͬ=WM]ZI#Wf>3Σ*Myw7M*K0x;g#U즥S.Gc+)EL纩$"+xEAto\ gҩiQiPI&v|2{V QOVVH{,?P$yTX,wOsԐPrcI9 MeR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JRPn@'Ȭo/0U6 9Y)JWwh$)$;pJAZRHoC" )Hl`qU5]OeUEV=K{gq"0ǙK[;Fy88 +}amx3 2,*BcC~O,\!26ՓJRY}&0:sUG^+RWM\uEH.Ž qڣŁ.\# LCq^x"%ȩp d,T 1N?)Vf8OV=ޠv#'J#$K;);dgJRXҪ2>Uy֒9V`1:6pÂGfSLJՀbdqg#jV7ڜ V)$Ȃ&XeH9`;߰ B+yQ\3 ̤lTys+ ,ZZU*<3=q+mjuRDAsI\jPMFw.\E{'eMY2L,% 3sp{Zͼ]5[ G>u:GrX`:28OZOt=9]PT CvT׵D-6:lrH|pENV J]F:ceHcW +R~5Hٯly"nd`c.DK23^Up0 Ή&JAK ϝy-^i_\^%bQcU#(cr |Eڳ\,7GhW (pyj@M̰t8o5SF"9q3|՞uք@#;r$PQN21'¶Jէe+%NɛFpXpww+>F1%ڠr'hM@ܒ\UD}9 c wdz qLoVRU $qϐ\ڗGf`6ʃ`3+yfvmkVO+${EJMn5;JMn +U=6K ]anfe ^Mj1=G䃻,{y^{Mant 2рhO8Hƶ+HI8@@p3Q~)d8+#9RlD-!yhnDIK +*6]hY^S67`]}A#ϫA7{Uwg205kj֧P3̯҈-,789' \vx To0# >uqK.gogI#( +"O5#d# 7*_Ak>(괥)JR)JR)JR)JR)JRՂRTA8t׶=΁dd; "9l/gm._jfiL| V;E';I6bقU(vv'<7J\[*,eAaNr8Nj+\Tn61`OMԣC}U['sі=5moIvw!w.Alaǟ,䴷f=Ii99_T*?Z-裊8Ic9QjoDcqˎ9W]qJbEn ⯳4V8HEz(s^Ȱ;vI9S:3ܼ$cXH) ΦExh1*R )a3f0vA8@vi#J[>I.T -+@M)8LQx*V_GKվ#E*Ny/Kc-ͼ,vr #q$\JĵPXOa$$sKX g<#ҭлitMm cyA{d啭_p!;Jri#OKk!)"p|>g:J-*!+d<劣xu'{޼,w`(*@@[]*x>Hcvh.dTC7mh2)c1؟{GYtФ{v qOsXK-lwRgGBYIǕf lγ08E;ecYKcl3bK32}ʃ{#$ˌ8#V[ē$$JDxШa{i(wOtd 0\"F73>fZ$껶3~HsxZx^kGqHp#hO|hE۳B" / $rOWzCYgh*!9 9+.CFGbs<&Pᶒ=@HC ҅F3Yz5Vi^5b>`Uk/=& Al(%-Z( X`yPO8Mu +n +2#ö -+]א3vcpv&%.u6qBN cΪtljTK]+8CxkKYJ՘ n,GTwO""1 +p9Kdfc8 *705oniTe#TWXUQy|#Y 'rcY#P M.99\>o*VƦ*Jʉ"P >jt۴Flفy@Ե`:R 9at`.[*xT}ψlyx$E.0hP65YBCwD1F8%ssZeq!1VXRF^I״լM$/BL(F^e8?'²t+ݣ ^=)? +ռ-R*?G!A *}*oWhKo NsO`KԣTC brAǥLX5ܾ0l+'3mEkwXeT"[Bʜ/5[v@2U*L#:տNo&743F)$Hh䛦vyOXc5}^ btEk$U2!eqszSw-^e(ك +`+[uˋ 'đbqfP8;`^ %9hwJug M*Gx%g(듵'x5Y¯O;;ǦkB֤y +D(ǹdC÷u5 )G)}@Zi{846;T*[װZK54n:2r0p{r21Y~&Z&OdTᶓ$.[OIEI㷛(L!uC=Nŀ!aVdsyk@rCRU 3(>g +jw6!v,gh%FAJ]Ba5D=fwPUbi%7$2rơX7RxsX;9WpEC}8ߏ{Ʒ +R[]Z/%^Cŏ"m|kI5qٱdKoqg?1kof2+"13R%̲z)Jo +ʒ Hc?,nm5yr̍>S>UucCevVQp4rt!]sK4{,R\3RVĚBBe9 a%9cSUGsjTCkzgry9_]\!8 kCam+*,IJ̀;Փk-}u$шeFPNp[c@S?Z; BWO],][y.F62휌޽uJNsemlv,=6~%ݕ&39"8^2I8akW7AQKGu9Q'MI[7 6bm9laOk=W58]^dE'Etn[I$OXYR(g h%0I(-TrI#xIK' fIQD eU< >59]U`1)w zԅ)JP괥)Qm6&ۘcp+1@Вt(( 'tѦDɑmjc|ykSb´ UXnӜyH4 mknw0ȊBf=I_y$gmᛨ4 3K$QI5B"-<N>GjT]G{j$m ш8;pAd֭Nc]*3ȦBpc1 sVhmcs+@ȶ^ aC:n dc= "N-"xv@r9xv3dX\# [ +@nsX4k5Xeyufx_f'Loؘc=I|gv~w7H-XHUJI nsν4MOduqaz 9ۅ3tYmѰ@fww;ެR 5 ;Z٤r]q3U5 ;8kq #,0A>yIi.⾁Jd0%69*q 9HE&g A0kD)VAA+^OD[un:BrHaVnեLd>K.8cV"{+d-,q$&7O21'JbYM)W#nNG%' Aی=PV6W03w@ģcTJ]*71۹8wl/!$ #t$w>Cxzx$yԱ[d`hE+9*o Kial.P{$;\ 8޲N=XȈ.4\noQp2I[aQ8;+?[N麖۷AW oњ Un"y6nn +#>~^kMrҕV2ȪYFI'}kGYͦTgT # 8]i{BH?@DseAs*5.L$ʑ ei:`AZYWڻswp<p?xWO_Ģ6FR})Jj)Vjc jܐv>UuZ 0z^P^Gp"d+q۟2D$, 0 n+;PXpp|:8#Պ1VkW)JWb7ݷ#v8-ֵig'NI03.@!ňCr*%VBeA?UdRu=Pn + o]q^v9B5J8 +5708#)JU x^hѬS'G +PUk;$!e*7p #8V(괥)JԾ?\xZD\dc TƇ Opwf>Zy%עУ#++8'ʵ;kZʹ,['Ql.Xݔ!sZx8LHRJ9?T̞֕TFӓ d +{iӦQhF|bA ox( +Q~[? +YaE. 6G,2UTO~5G [/  <5I:7OѺ\0%x=r^A?3t +3i8VfgC_1lRRW +,GY' {OerړʑAn22&׏22rsȹ`Z7{ m03p'q9UlZԷ0M4=xԴxqR)JVhzCm8qleZJRWSFu[;y[H!48E۽˝G>~s[z+ "%X||>Us$0<VV{uGZ[y+]l>{t>m~h#m;=պӭe*XG6z%bQ,',n xqc4x),!$ykKx`KS*(Jc>^kw\_!9f ,ex<x5-c4r="xk]Fp!YQ opیzsȑ<7KLIF'$F{-ctA{(90#,_i #M^x-!U+)ke10 Ax5֐ "ѹ=IY>PG>!KmD[X̆i62#\~2*SJcխb;dP@=ǑQ-IQJӰO[?8zk T`t'NJϲףg5d&g3[m YM={N.+"l +Sg'=8)|Q +/1;}b<`3y뺔XŤrWR2]y {vYz5ݽp KhP^=*^ gm4d ]O +mi(xA'vZA|I +[iyEEQ?0ʳ/Kn&teC}u1Z:6+HB"BʤHh 7p ?Qb)#huzn0}A9.imy"A#py>Um/-ctmj,͝%Klch`Ђ^@Ǘ?n=mbb3\*prF< ά!keIZd2$ +b89ӤeycFDv|URW JdcYnUYlqrHB;?Jĺ^ +ŚIrpO`x#=\Z rIۂT.`A'x]F߭,b=@bP+d򱟚|csuowۙyQG?#T+ζVMДzd+.U1#!b6Tqϟ`nmvOs +lHPd鬄dRqz=Vqۤlp{E$V#yP!) 9?-ߦ> +פ˦wqp:/ `(>s?'ְ-HtouŕJE#1D žU;,ܘO׷5/JR괥)J~?1,FݛOU>\q^^4+?;;@>"S$Y^%`]`6v=*hE qU00=(T7q)JR)ZǎNu B[=)JR unfdu$`@֦ +0ިg]w9K${.|1}A}cymHG9:gb j Y Ox453Zտf :pdXkAԂp[8\_<$mGQ$-Wif=9lM=-hؑqP``1RM[+#;9j(VpXuyMYDĩ&sv*7RCm\X_kGŗX./漵5q FQ<Ayu9{ UꕚK7 E;T8&iC0PSr>}Z[۱\a+yg</$.q* wKmkAqV$9Be.q޳?&ݢWt1eXF {8+>+`\m4+EUHaCF6LG'緕dXH綷]yԂ#]9$M&PmB2G9nDyAw]:Rt^i% Gx.;1v y +Z}ަbHyc2̬8An٬K +W$BXn\ ,T`@8Kiks ۉ"h1y`Ufg["mSM[i +*tHb& W.tb[SrpJ&eWA0bnn^{Pєݝwu1o)tvݣ;V6[{;h y$e*Up=/,2oFCd`*ceŅֱ- -Yp=p6$OjI$E7B q%ռZҝJ* 9;8D%ӵKWovb`#Eͬ"4h-v @v7F)su{rrUUr{Ңd٤K?\O7"7a mF + +& ]"7s cgi>YRDezP*3ڽM}`^1h~S2X>mcKxfK3hV 9^سNRA&۹s;Wk\! +(!g2dɜ!8JQFOMF=]>_Y5-$%<1ZJR괥)J>?׎3}gG7#tS\FGXciJElb/JR)T5ZR)JVjY8<8VO5Ҕ*1`l|9e_e1)w)CI j Zݮfe7sɪ]>R!&pK1-ֲ4mz #muvt]bXWj:8d»`+=rqߵyu EDBC0RgMxuu*bR@I;jgC{!e`4$`Y00adF}8JRJ@d@|Ȳd 29eź]Fȡ5zяJ$]]v=q{th06;}y0,hU@+ҩU)T+l|,k2(ɯU!G#֫^P\t DdwiVk*` #;;i: 7;Sg*SV.bMH@r{ UbqPץxi/$0d '}O{Wv]1$'O!^J׵f-ȅUW}T)JR6v2Ӄc^9w0RB.OX:ucTb lT8*J%haLצ*bIY^% "jDSF q5dr>WZRy2l +ϖ=jnbNNC>#5=T9$L#qk*)@괥)J>?׎_ihT/HMV-Nb9  mEjCa/ax?p9(*V)JR4@WWsЀX~)JRޑ?>N9lӊکJRB3Z}ӄߋnxlcsO[^# ,B1 `rsqzͨFX;n-L:nMBi1#4U' ܒ![(Yė9T:@)|kdv +1$1# U\;i#;"vIZ|$ͩP3`mPeY'# %SI6:1w*Ǐ*۪6}XimVDEi=H'HT'8t=JDdQ\1UTqNKGN=ŷNWD݀ ބ׍+gavE$,AYjڍ ԑPU ۍOFI. ;Rs5liXY!YF;;-qX&K[xa*EYN>;PTqoċ. {YW:EB@ζL͝U#zW v҅iLA~:^(fY87 0; +q$дIlNJ:mAʰW/z-@Ф&,2*9V د{]U Re%X6v8X~Ԯ5hA2P=߿SB,,֠f3@g bi ηeY]n]S[$,q@/k7zi-Kc2T;<< KԟKmT%ei$(ʊ7>2G8y6 d3IrM=9^^/Ĩc'"A>=ˀ+5}ew7L U d]Syufap,Mm+/{J$p8x'eR F#d;VKSY#$22AWp9kbJ$XOHOcj  ]C0p|mh@yPG)kO׬+ǽ SP{{~ˇ[]!9!]x*C1嚱H˧]_{;fW Cc Zͬ]CU ;U^--̩#w cRY!H1Ȅ>jAJk"%VwP( XFwl }1Petc) +tJ,)h`BqYlkكXzu7#LfJR괥)J>?׎_iXT&}Z+YǟF9jiJc5 jV*+[:˭R4R,RMV1 Rk 8?k`=1"= +?Iɸq:7If KWUF1 c5i*n|KEmk# AJR]) d d9,h~ˉ云uc֟皗x.,f9#RTdf*FHR=x`hwsXꮱ=276vܒ3QX0M(w8a=¼mc.Rx0 cB\I|j6췢kKG 6epSbH<0{zLh׳@^! # q XwQX*#6v0IUF#\ R:hbVCp3Adfmg[{iavShm2)|6O8'ΥiqByk_i82> za67@>5>3jޜZ ьni#ve^Ols w Dc%Mh_t09$|G5?P]/Qܤ9dh$d0=cޡO++褃'F3)GA*{0r8M[n qX2G)= T8ҵѧ- ˑ(nۼ?~).EP ѼchA<XxzOԷ^L%6BÂHA^w C RU ${Ķ2};V~bR uT*Y+N)>NpOj3,lX}״[{:;w00 mǞ|} +!i!-w.Hb9|Vrh˩]]=;۾7ETatz"t,|'q_E a2HT10$TvKz< e`` +`n 0bKd|56ӢkBoulUHP)fsX+;O%Ķ)NgWXvfC.`Xkd-$]Mq`mkdbv\G$8ێK>0;UvӺ[6RM I(Y@ eCwjG^K-!hn $'pl9+^LRӌq3od4` p5jݛmV3j$!?x]WMWnN*,⬖mvi*oQFsQI酭}ExxB*hF fU662 c橣iJe12A*mĞ+#^V!y%FBIb+I) "eyN@+TNۼu*#S `ÕػX{3ux!Y;A>C/c0n>QIg*Oroeۉ*l9kkf{ns@ + ĒG$ Y^]ԗuQaefP{. F{ڲjv3 p#hߦTFB +B9⩬ɨ\d@ b`%XHyN$};qq:m,Mh3j)Gof$Ph9;UNQa[ofe '+q e74? .iG%hA'$8*P0Ex Ű3D.Dm4x#^3Fyz;P^[i!bW6aܐGk=z0ҙCnzK{4fHޢfe8;uE ˺GoԖ%̱nE7\`1r@MeR괥*$Xf ܓ@ +AG"n"#`qڭпK> +XXMcW/Rn,YY-d$C5+JRfw0+3 &67)>Gb'4dhd(nPr-ՑR(z+ɺD89c[cCb .22HGBY1UbJ*RJRLS1JbVoSk+tRջdgmx=UWsH nNb?^2x~[yRN=N<5ʦ"dܤd`:ywXNp]7ήPnz5ҩSVM&b^V3:I{?VLW\G,sfu3@&{{Mxp2Ep8 yp8anwu犌 \qf64&d )#1!6іPUOI~+i%BA>az0+#ҩcX~&@0aaف=Ex[h%,: +H zp3*P׍v,Q=)J>42 |4FVSOZ[i&JR)JR)JR)JR)JR*2)`>r(&)> (Wԝ(Vm9_P{yeҔ)JR)JR)TVekɹc۰8R)TNEҸHLFR>Op#<ԤjTNx]JR)JR kdL)66F9د¼-Ḏ٘$#k`|.)J괥*6{Y E|v +9zi3Yy.$m"kcv$ӱeٳmr&1aEZ3[BIbBI(>hu qװȤ Iuͭ]8S lTMUCYO5;UiJW@d޸܇> Z$yfgHz=M Mx, ɋ9\wb=; $RF + >d,f(gӗh_8G9ZI6X6PBq3ڽ5k- 5T9SF-I'5X/BCthi$H*MYbyd!.6@`F¶r99 \IuYK+v1G$Yz<7{qܓ@ i"l$0 RH*@`~X|Q. N-"kV{=JĉJqRr* ^rr|KK/\6*ÐU@I;µ-/Gv% <5 5gX"ۢ#,vS]Yh9-$2ȁR%8V+c i1pOT+m>l:Bc.+<Z]B`茒 +70\rX(9jr1ږ^H`{>zXscAssWE->sunͤ+-| ԉsڼV5 =DbM2K(Bq8YƒXץo~\C b\<^⼵giFߚ.cP`)eBPK@pAk";ı69A`Kȭ Y ?z>ZteDH` #gg|"90d~O7cT:吂Kr8Cc3{y׭ƥoj`Č*OV}0(1H;nnݞ69} $(Q>UyU`-.d0r*Aۻ T֭/R)7RvWV MDx\]>!X:@2(|/o1${CgYWͷPmiUXOzn0]J93VKY#D*Hgj܊Ÿ}; ؎F9fpT3xz:튴f].G9AxUXeE'g4d*"݂PH{!|m ~;n5KWt) +7bA +˞Ը֬dI(8\I9W:}XrGu v#Hy5&ܬ8=#U//a2T3$xV-grXQd{@8'ʫkX^7B0{awgu `Q5IAeo;[4BP #+\ԖF-et$0dSj8IxA@Xcf\#>1'nc9kY~-WIE>:@?k?FKE,$/Q ~H +<X8-ɶ]@UO͗Vի׶{ï*C@7J?{=.NAzTƽ ޟrG|D vjz)J괥*ZoڟMc?Exw߶{|1"dS~&F0j?OW)JR)JRqqm,K3ּ% j뒂=8}r&R*޵ LQP,>̩FWe g 4b; 'yTs ~Z gX u,mT$,EY@ ~jcJ઀W =i ;1#rb@%OPF ms t@-X zҮc}e^pH 2Q798hhA ":C+ʐy_kۢef'mZbuebP1n`h2~qSV77[.JpT<<"r]z2nA݆ӕZ{U鮠!Ʀ[p#$g/N ] +[q2H\gbu ?a0vG:a[OxcҒ-=;{5ܒ 4nj`GƊ5+k-#+fC+bЭaHq^:tXEIe*I8-ym%[%U@)PIqSYK͵\Hmn+{A$[6\V]=ጁPӵ[+ Dw4 ԌFF1#2;V|!h>K]FWgnďO,kg6)2qtD$Wm*8?z;bk $cBeP)2WS0R`ӘEM,V.& +)N߈;Md8ǓLj%-<Wֳ,v121^/i. ܱ fHKQQ@pGsY'i1"VSG)%wjB3R>3>ץǺW*cE2Ae#? +cW/gkC$lt+2y xF-fȤ d0Ac-^Ha4IQA+!ն0Wxxz.n_$ $kmY,w YC D.є*c My^Im[ C(sT]kp\L [6S`%9:R)JV)JR+ PӍ,r兘cr x#xis4sy*$jD1I8¤4y> pxlv ߾r;ԥ**0Xe9loR@9}ĩ{VťP_IRF\B7[#`TH͚4Ԓ;7#"Jr1TeY0: 8[})JR괥)J_MC cVe@A3$iaulҙe!U题 <3dih M,r;|**V6xc] =2@?]k_rwԙn㌀gߟ1[05^+Ȇmwث`Ě^;Oߪiɐ~ꟿOM/2W=jQ.#ab\H-jAϟn‘JnK#m:oOiӦ?M>t9Nx/4iӿܥ!֭nWٿos9j[^CK=J{R)V#ԯ {.ˬ28p uJ𹽂gZDMw0\AJ򹹎 0Ug|zn) +0(>Y=|lHA`<zҔ+;,N >;W)JWB"|,q'ֽU+KuU;T y?UUn#ghéu {;ץ)J8Ҕfx퐼Td'Ud@eaAz;)JR)JR)JR)JRRMuܗ3\me\yGO$Ե)JR괥)J_MC\RFceAwbq󚉲E֢KMɈGS[B?/G£-jF1@܎>Dyu;i}mwֈw!u%BڣQk2cF]x]:Ɇ^[ cU>.ѯ +DrOC"A< yO5o1(Aфm%kxG odVo~>ݓפ'쟿TkvOߧno~y\xGo"pVMaāWR-e*s }qfѮ$Lp|':qZZ vqUiךΩ2E/䏮Ѵ7][.B2c~l)Jĸb)L`'8;IǕYֺ[&,[98dYԥBjegfv~Z^"I G̝8݉W~JlWvb y#Mq^~կ¨Ln).(^Gs5K̼(5f՚X6KUT9>z$P]uDN9b1 +A+Uk<w }C!8?7-RRKFu.z1銲[ME4 e-2 ԏٜL>ɶ5 +9rOY/NߐOsqPN"B^#l݋u]8A99橔$H<^=2g+kBĩϝ^5(nܬ,: +[c` @ry1,Zՙ2ɸF{業ݤYc q#&Vd0 KFEV*T22;gQ ][ۼ 05>E~c29竑܀2l|׽гVn@ +,I88$$K0GW ;OXq?Ppf.g=@ADBgYZ`-#I$0FQQ|sX* *\dTw0أy$V.t4mEL^` +`NHs[)JR)JR)JR)JR)JR)JP괥++i"(18ʬ /i +U׿I[)OG ,kkkw01gF9?*{]9*VohmmR 6ap~TN<ѿW&);fR7=ՇT*ۏ{r_sȹDC +C3cMW339V,}X,?L(^?5$2Px=B"Ym$Fb}'}i?6߸W:5jZ£DdEk ƪTWjTD=ЭieZR[gu)J kc-MH%@[f6#C6`Y gG N}-⼒0Sغ.×pvz1^V:ev9oHh0{Ow'A:\R:-"ʆYwoǐ +ӭ`կgxBI +9ggY[]Z:@JNæĥpA#ϊut[i!aӺv$7K3`waYzE冡,ZV]ѬJ˷bă skBcԁӈܒnrw|K-pvG$vp2Xl`ח4)tK0B:S?Gzi-I%K#1y³۷y#JX[Mkj2ئ[}YqxYopdqvR*3ǙIZ_M%ͼb6n,9sVO}V[d/$X{ +ºe[,ϼ.]ܜq^S]h:a${и蟘kdkkmb ;&-Մݏ g 5r$jF2p~W'|9g3\I縓*?zx|]5$ K3y;K}. ePaiH!Oߩyzѣʭdg"mAf`E1W1H6J2;2j2- %u !?RWLХq$ɔyϺN2l.Q0 iզ] q1`s+].eۛE 3\Xdd>V]2 oeJ'b y}3Bw${?T +dq.Glw#Xv)eCd.IlTm`g'#<|ke U]j(yVԺdt$dGBwgWyIa}64~4^Lb{.>x!"`c v~ͼg+ۜϖ9OHRe~[Yz1D$I5fb9 +Lƛvv$`c5#M=#l"߹;/9njimͬ$"${dvjPlWu$H\(#~>P*޿&E}/A7j1QbT#'!)'|H &I +fY$ܮ<(X!{`حo/ʙY7ud:,xdk-\㬧=/ >8O?SXdc?Ow71^{yYb2BY{|y~!H*Ie̩b$[%f?z/-[o&DE8#xvTŭմb5QU ڣMX9!lvڞ~-&R?E.m r=C'@bGj59`bG6z`*m`՜d]ۑ-U}VKK\-SNGhIl(AZuynqe3~b<9ymglzngD|qIͱ8V?UzhڮI-0\m؂QO8jBHUbKǺ0aWG5욷d?Э5`z ʗY m1FVwɰBzl?ЧjlaGsb8Su+zl?Чj<_׷V~.Wq3F̨> ۊ?Z?Z+l'kv@rQ|Uj)LRJU1^w6Dʡԫ)A">C9IO&R%Bq_VK̬VR=<Xdbp; +0' +; +˯ 8SdNAv"XbV6bp,`~3׷jwFI1^“!GPTJU1LUj1UUiT*JbZ(FkMB?kKb[R5BGT+*`6$ےI$c'kLbAd=2VUPU%,qUPʽ)JR)JR)JR)JR)JR)JP괥*3]N}7 ,3$9ȏB *Q}>s$Hŕ#^H ͒xdj]RM/Ch3K1"GWVIkl3Hy?Ǹgk)JyKy:"U_[ +XZϵ~Bb*qUnd^.fOޯ9}!KkV*֒2PdX 6e-(G A?NT+I?z 7Şӣ\Al{Lm>$ X`bp%N~%=x#_XXF\BۡwV>{0jHn#\@ZkOM2#ۄ]d $O'rrX/oby*F +״7kHdկUbs`P|={T֗C zaբdհq V)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JP괥)JOFt5]")Ԑ-YYP`AzÖ6c ]N[w:UL^F +2Y +&u yoqq̭[>1$*Wjn%}[ +8@>۩^ϞbOxB}~15ii+FV$8# yYE +HGP/a)JP{bKČOE'zDQ-?H??EbLp$K$gl3_m (.& ͵'<oTt-<Pd µ{ڌ,\Jae0cg(S 9_{8lgFXڒ;&C Ms/-IQMGxVYeelyGh qUPU>UҢ3EXiJR)JV.ZIS0ڴ{>:#H~ko#n,~WyRGz&I۲VY A+"m^@=ۡE Vf$;RFls9fbr̓5ug t$\kupA(4;dd$W#pXCc@ʽE+1FBKʃ)JR)JR)JR)JR)^Q+j{w1d}^)JR1 +2j{%GP|# ץ)JR)JR)JR)JR)JR)JR)JR괥)JOF|=[gX?TFx[@kcNp>$4 $e53GYe r=E]JR% Gk~ :Rk'/tmJ%/x)JR)JR)JR)JR)JR)JP괥)J +OU/A5%,n..Y`+Lm3Jd@f9}U;JRfKHBHN0~LSJ%YXaAQMj$5 gz3[bnt',|l<`qUqXl{$##BGEJҔ)JV6 i %UƟܐ~[Y@:*6HUCc;r/DEk~NEVcӘr6T#@V&$2Zhb9,3/ _t:Ӯ.%u+W4٣\Q_v9dg5~];I PQ9mu^On m + Z{=`I\d!c'0˃sޕ+⋛:{;::Ӭ&3#" lw=jJ~ +kqȩvIqG>DW>)Ir }[y,8$z $+Bø<|R[/S_ݭ[l[ OvV[/S_ݭi^h՞3G*H?Qn+ }c=Ts#v36š-ƜDRwh>e?=K-Uw챹b|ʆ$ߊİIpE5^Ĥa|{`ڽmHg+?6T)JR)JR)JR)JR)JR괥)J oVK, +3{(Skg49j)JRޮm5)aN(*>=Bilx?f2)IJ{1c¶0J ?viP@yt)RifdFޙmH4L!Mn{MyXx/}ba ;{r3 מq-VG|y%NFW>UM&1jZMu'A3L}JKyvq+~55JRj w؁U@e ö8)JR)JR)JR)JR)JLu~[k@Pv _++#KӗLYݹgsqYW"!ɍ8bGG ]g03,߀P|E[kŚBڡ3o2{A(Fg^cIMf`= 1ogrM`2|98'%v"ҁmd yᨯY٦fUd@0  {Oe1wasXp;vҫAo'eZGM5Iǖd?SbXWO$f 덱#xiZ_R&*U{d`95R{}q e$ &v-Ɣ e*A0!1ڏI]KsוF(PaAd㟞&خ ]JFo rwV'UŀK -qe܄ e(!:) 9,h '$1>iJR)JR)JR)JR)JR괥)J oV?J쾉 +ǵkQ.63ڶR)XڈLNON}{VeO o̫lΥz,@]GiBIX -T. 5n`a`ħXꕆ}NlFDp L06Kg#Q~{k`\}$2x1³D5 V8YٛJy>yצww R}Vƃj@A,Iڠ c=mIp{U~59JRj{_1[M)JR)JR)JR)JR)JRj?=@ 7 {j;KT~A=g^~ [G%K*}, +i{e]Mlcq|HṢN3. +\]]P{,P DrStkjZV)JR)JR)JR)JR)JR괥)J oV?J쾉 +@qu5IǪPl)JRLSQQT9?5u+;E{dvjR)Z}ĚL,pq>UҔ)JR)JR)JR)JR)Qo鞣&kAZ]ܼKٖ2R0쉸1 9ʳNc%XE88 H[SlzuƬ;vV@ W8RT)JIGxg~ :RnDܤ!c-V,V Փxrgd!1# $c1}M{ "!vJv < OWizL:B:B\m\c9>-,҃1I@B<| NkIM&+:+$+wd潭3ml",I$1JR)JR)JR)JR)JR)JR괥)J oV.fO'kgFD$&L߽[-)JR)JR)JR_XF1b2ꭢ)JR)JR)JR)JR)JXof Yb{U +<5xhRBm+r _cϽ}㌜k"]t,(ҽbӥD؂rf exLH[ieYB|s6y5%JR0#X=iVAh U?5fR)X7-0$ +Xd{8KHXED^ʣy׵)JR)JR)JR)JR)JR)JR괥)J6eQ| ]9H94V fI~?JR)JR)JR+Y0Cp1=$~z٩JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)J괥)J6eZDzPn40? o M.H H1RT)JR)JR)JREˠ^c+dV?ҭQyJRTKP2I =I5XYT2AAԥ)JWlI*f >$ ISةzEzWӥ,HRMYi{ u ]rFT2;yo wHFd8uV }#Gp$|xJR)JR)JR)JR)JR(괥)JPY5?ҭoUҮ|0)3(ّPFs/Z,ch`ƀ^)JR)JR)JR_a6^[@ +32jCOFaF!FEdRY)eRTdg>C>Um@B8 qc]vQ/RgۻjjBcܜbCThT 3M,L&W0vC sX%ծUH +AnGWfCH$qG[Qb2K*DN ǂX Ioedޤ\8=sU1++;S]:lP'`N8-OxY6FF%A ~_I-6YfI":G)w`sޤnI-C,"h%ؐp9I5#F ' g_SH{!p,*ak# 0@ms#T]v[q t#egEI@=_K퉒 +psF1_ًC9$SoFsԵ,o-ӤT na9段Ւk),J !!pv jkb*oh!( rOeP 'SS67a sorMVUl@x9׼:ܖzb]]UĨď#8P YnćM2&v?QU R"X˒7,sO9KmVMjB(+LvƱk}Q[xֶDId-9^SҒ[f.n $v8|T\IyY ;p.&6ϖ9=D]="WN]Bt7 !(8Q+akwiwN`ȸth2vF"pwi\ I"c`:h`G<IѠ`6GR23WƒD>ZR/0Is +|Ȧ$Q#;[d ^jQB#79%hqR9s^ZNwcqQ6Z]ծVOQf]S#U$e ryՖV+T{p$T#;m?]ZKc|oxͼІ];[r!I tKonG*{:a&GIZ9<0`+PŜ5 dfd~m}AՅz2x%Q +ȰVhq@븘?=F&}6+.GQBc!; +q۽dsKp" ܠe $HO}RXcl-ryflۜX#@$&H>ꤎQ;TۼK*3tFsޱuk"h}bJg~~8gdbUz6X)FA'\U6lDgH̊!(U.y]A0qsfH:(d" D`dȧhubxR<*=tmE4{ .m!wv \dQ}nA$Nn*sϕNDaU#5KPunaȅU81;d`ncB a!ʗR#;R>Q$ +ݥ^ܢOtң6"@9&eawaywsN$ 2bS01[Wi&"*"Yq`@Ϧk&)JR)JR)JR)JR괥+F2 kvH]TW'޳gKxۃ=OM1*ֳL.˼i 3U?vp$~=p0"q64YYhx8*}܃sYYe,f5~(۬Mj ̲U0y֙j6~r5Afg@g r9YRea\Hnf{i&3urdEf 0B>8K_klʲn ]'` xY̥^'JYA #iׅZRTIH%%K n@$d +%z"vwcj״r[NݡdRDJU==Ğsg#X:]zFpK "]Y@9< +^ ѷ3$v޽5H"(d&Q$n6FH$V'ui4]>[ FpOo>ՕqiZUuT of' +WQ&2$o }Gi6sa%»Ʋ05'WxD,ʄf#,*d]f+dtA!Yi(I  1^vzWXT6 %Af Oխm,..U$u2F/UmKkR|tde9# gg+P:F׷אw&%;3I%xǭbXj#JPG$> (9SALѷ2n]rIzښjE +$LHԐgi# ]y%F3+y5iZܪAkFќdVq 2{Ҹ @n@8*u[{;IwdG%Y$fWc&Ԍ&vqψ ‹hα݁Pd [nAF nxdr +&YB2![g:/JK2;!XI <2@ʸբqlK2@ n$OƛQ%2ȅp3 r Rž1@ +<3\dI^g8)۞T̼SZ{0f68lmmn9 E۹BSf<-UXI d1Lc<*20qޮ¥$O(UhO+ R)!42'V,_x`s8ߞ+Ze쭣YvaBHE72$Sh8#Q>f@?W䁟 `vdCE7Irt`# 2p +צdIav]LJB$Ƣ;CE/FC:E#B  +ux^8YdVd6*9޽tF=J2ɐU:67@'EeR괥*c6֗RGQv0NHRx=YzFn-hfl,Y9$m)JR)JR)JR)JRO Dml- 79Y׿V v3Ii)Wd +7Fz;.d+~t?=X<;e'8g猷 +Tm|* +u7/beAU +S`2G>q̚. V9PG#3' n/4 JE$'dg'gKS"$iwg1T܋"g#\J0=㟀ZV-,cm%xWtEJɐv # +]RP{7GY6**Im>~`VrImyo0IdȖ`Mp9QM̊̓ea/Vۤ͢ r{S!rs՞.Peper,F|\ +)' m}FU 6\8> L0ILLrĕ$埮y"x%Y"Xf2)EFZTBc$3XFKs8+*BtV٧JOHp w.%6ksCqlߕ7~mFi6^io4hfνum&@"9@|+lkO:m"&>Ѩ =>Ì#ʼӭ LD}ÏQaåZu>*Z42ƹu_x(+;f>,2-)*Cq3nC=lm`۹劯}6hC3FX$ x5SKySn lFN #&4 6iYW7 M$X]fkI #<έurJ0 +cmը7s4iwRb1 `HA#ۚKZ> gu1Uys5fm42pJޙ:|r {8i7Bc +{nZ]c0@Im ]̥2$՝&tNa;szD +"3 A⭺Zaҳ$w;*•o`rw3>Jϥfx$R89_bڊ 85e}YRq2Wu㊖^y-k )K69D7'X,~M@œc; ={imc3`;(<\E׍7+.}214;k(4yH3|s`) :rx2w+*s8;Jexea4H2P 0I+s#4K;H'd"m|fēw%I[} /g-9w@:;g{>ct[;1^ZzO魥d*^y`]61a%W|P˥jWӼM$W) +F Ѧ…G<x i4Au&),.7Pr8!AseqqyqVb ,l|=5e3E=2J*՗L$0mz9/єG݃+2(goeIle+0_vӜ ⣮cOɤiZ-:AU FB|3,Vu oS ,2n j֭l2&`|cuc#9 '=md#֣KۋWU٤  䀊G|k ‘ggoh=fqNHSI'#=#Զ 'qi)s7.-Eg 0|³ozi3-#a#N*G>ֹGwcqqnb#~q;9RP+;x;XnLf4mP&B=|WKZj7J B*6wnrTևkr!-d~$IҔ괥)JR)JR)JR)JR)JR):M=@>0V-ƞ.gWlU1 9Rb+lө3k7;^{rp+׃Ub+{]Ss.ON1CLSZU1USVLUjVRJ*{k% LǘytzU[DX`*;Qsk.bҩ82 y +c1USVwu33+*2m!NFU)#<f̻ngw ebT*LS1Jb())TVLRJR괥)JR)JR)JR)JR)JRPybɺIU`W݅fCZ2B  cdeYN#ai!!&% P3<L%ܓhz`iXJc$iR1d zT4 rC.G ȤdXھoi k7/xug7_GRS-/VLZp<2;EMW:%1l.݆rI?γ#dy3p V;8̲(Ǒ'$ +_VFR vFJ}F&*FwVNНxc߬mĚy;inc!aߕ nk3rAp 1ǖv}E yI*y +; W3$lJϕyXRh ugC°\23Ȭ;yZCH#rxAַ{:JX\hC*S9U)p8mO~ yyJF8;w5krNQӾqmF=2KE,Bf84[kLjnheIGZ/ii1VfJ<J]kѱfeMʯmfKW+( Ak}JyD>HPRʹn v^HbK?TIs<|Ee܄l1'u+Wqu-s30l  ԝާ m܅C}x!HEUQK6[O>|w+ص؂ +89W]CaM3E,{z}d:Wre'2Faz rw2eŽ㓴w5'VQ,24P.v=zI KN̬Oeʃ} dNmAP7 5iޕ іHS#㑎VCm>y4%h s$ 88'Y:ys j7(3`#^k#Huk;n(GU $~ɨ|Am IkJ#c nҗdh2ti6ddn+ؑ;uwq0duXxigbiDif׈׭P3ffoydc4:4eE[YVWj "<#ȃjJ$fWV.j\@۠yFH=Y;RDE +9>UADV0Z%K2q$sj}n 2n,^sc¬;YclJ蛣 sN3:X)#gP؈ ּ ۺqt|;U"xbauaEdҔ괥)JR)JR)JR)JR)JRwO` VvmYUz,$c,˄# 9O2^RYhw'Jg/BQ΋F>6#¼,m#}:NY#WhYdf0\ "⻆=j\(Y^Fu߷n^sFsi`PU:*pL9lz:NMJ3 fY\F8nŘ1c$SܚMnQedP?{Y>fd5;ٮȮp8ViWOKw<4MҪK&Ae8Xw?wvy jNt#6238#ֳ^[xr7TܫW ,sV=ά8E.rI54IZI6I3L uLj<;(Uich)"3p4@=Y37%@SUbywS*pN@M]\$q=c  ==qEΕ$ 6H/.N75te-%6/^@㚜vA^"!&\FIݘ8 +;W,emvy+Y@`k]Hol/JC h ٫6`cgè @;Oe4xdR |zGb 'd+P]HHUB[HӁ񓽎Y/zpFU`Yi 7aZF@2sʽTQѸ9RkZ- nѰiG& 1XZEJNKbYnYDNB@cβcZ]K4kq:IƥצpAR;qjRcU\*9d jK,ζ@9bLL6`0「ۦ-$(ZM1B FF8=#MX.-*70\pWqTeFW{ *q/:_ q"K'iV$)G ;ڡl9ERM!R`Oi^Ko"YHS >b~a漼Wg-6DNqci[j~K"цeddȇEdϧ]zU2t. +#wfBA=N~5[!ky%{x?JL*ʤvd |9%*}FGV{|N,r>x[H.Vl L`ۀԔo=2CsNH@e0ٌs皲K;;c f9w9R̮2 Î=rlڎ_s:eq?RX`kI5f4gAfؒ1rpp*;_R9ax& R+3'Hxu6iIa#wb";Œw 3$҇U^vDv+1ie< +R2Q,DKqH,r cVi-jh4 Pyfaw"Öp2#ш1HP;ʳX%:̶ 7{GQDiU-.deHijO + KVpL֒KM![͇P/ +T^L4 ovFꥺa\m+/v3zG:vi6g;3tq_m5K#D+,^_Fw>MexN[;BWPG#ͪu+2EFbU@;㚜-"(+JY9iլf ɔoGSVzov潈"#R7gtF^76A,ڹPq"C!=lFߙ.V8(tgV3n +M#0GU}e52{E]##Dy vc嚗[VŵVYY^=)^Y\ Iw\j\L$r|ct6^I<h.m.L +*cDZ<24;OT"p@%p$qy  v5)JR괥)JR)JR)JR)JR)JRJbJRG6j uGxRYr +T͌0Q|;EbBc_5װqU`kVSj6Td,X`AsfP=u)TV)JR)JR)JV)JRLUjcYT >}oX[ٷ`I;s>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 77/Tabs/S/Type/Page>> endobj 237 0 obj <>stream +HWۊ~{>#5,dfUoBj*#rĉ珧>ou󇟯v=TWOujZ2)eNsOEORz򟕾9>[4?<?_f NwAn3>>,9:|\ŸݴH,+8Z-jN,xz9I1ʩ~FtS / }k`5m||z?7cJtMğTz7!W0#**CXQ\Yb|&>z 'n"fm_Mɸ +pC{z2RuͫIG,:?m5T?L3A~YӰuac%Gf(Ӛ4Q+%zG fEf9|#kH^g&omQa]':c"=pm@㒍bGͰv9`*3g&RW%&g@|peOeڵ %Tv%1{U; X=\rF[OEkcc4(匭 1&7 %f8y ,8 ;@OB$F+DlO"6D . %8%Xp$t,$qh+uMXф*+~<< fگS m/p&D2 P1LD1ӼcA dGc3S̓WcR3WN5x\.o+xLM"|߇v>\4qSӗOUrRƀF >01.1!fbjBJI/0಄[Z^ ?KRx:&dEz4yc\ +nKVKɿ]+<I _&K!KZ 4"pͱO7"_6 8[fDj/\Ϡ Yوq.td9E Y'{)b/;tcޗ +66AV_XKitFm]ЄUVks労xxbf~Zow50AG7M8b]#mE<)Ċ8+d`w3;[YMɤOxƱ%DgWy7p4K!MNhs\|!)3/ǵ*w!4uHҫi@B\) i>퍄$L^E&%RY$QDp`:ȵZ%듐Y|~;:bJɴv))_KZ|%c>VdN #beh鵚ϙ V懾3؈Ò/pw1Eɨ${.2u 1*u1:l/0̗c]V~vykt~Л xva .TsKB\_>prb1nuC0yTQWT}KIlT68R&T['& ۈ&xYq-KQr7&M1hNGzjWI Yv޺DM al[[kkj/T}R>EZ+mrR^cmK/9[(șM?ڝ~׸9 7(+6(}ґMݠ8ܠaKJ*=}N}6Hk.3%my-3n1oV +6|QA^Cjn:fΝ5_?_l{r᢭ḶNbR +* -eƾܒ{EhUhk ys? oY+՟ եWUjUUy$&!dd(j ,kX8x%nrָ0mp<2OIɼFM N14mYUNX][DqeiK b" .Hl6sl½o7w/ TB*AK@D +I_&c)a5hzBz +xVV+5õWLB3caF͗1M#ū&,|\W5PuV<ȧ b!,vpfn#4+C'45@C} +Xi\g +lkƸ5֒x)cLC!z|߿?Ia#/;sƂaZۤ81Ìʶ Vr=#:swM")A +qgf -~P`bnؐJj1,'B \l +<ڵ N4w{9 n @fM:6<ǘaȭq.7>I(7VNajAw2.ܜ:/>6$n;#$:'0@H'v[.01W @.Aux^ }՝e̲lؤXބ1fePTltxJweji[%7Jlc[1ȼbjvMZg-)B &r%}R$##WPm< KR4y3!5yMj9{L/F2\%};&xX 3)KiF)xғ3?]!?LHwHkj__kw';ȭez)}`Fta_*XS6!FYǑ}v:=HoAo*w5[Woď@ 3 +LkoTUʴ⟫"ՆF3gQ? `pNXD(1= iQbCFS]ވ<,C*D-/mWqA({d}L<8fRwb$WzMl }9(ZpӉ.DzXh)#`woipe1zq?F\wl]>v +LT;igu蠕 :Ϊk_vxns96ՓsDsbIbiǍ +zLnIm lyBlfy$K>՗t$dZ]SN +Sw^q>2cHSlƙ.47$SHD{>':Qep>l(oG;qpno  +axU m4ϟIYtD'(Cu7#Tz+?6ܜ_[`Uxv6FI,u*,^X 4f'p sC<~(Ȅ1].F=g%0NK*c]"ĵn)eHb{⼃$&k!$j\j9 *%4` L 6oN[ Oه#8%>i4@(#OioKx*D@ n`|(P>ɛñ\ҞMVr@B3p~4Z.a =\դRۧq!GB$ CA MJj*})1 m|H%LNzi*d (K3d%]9RC=R0a|YL=J:$Ro,T/jgD=jH䉬BLfE(Z˶~~k$`PU+liJaԀO%9a#GWp'thlu |U̦iO¦ hfӚf 43A18\j83=I"ٔNb^$x@2U 5e>A<&VHá>΋y˕tW ^ #B$nYճl54!:צ9p6 8CG_>n痯w󇵳c5>7z7&KܗP8>!X*5M̪nݑM&h Sv~b:kX^J^՜,\+ٻLl\kXJcgdå(_fh+cAF Kht>X4/!LkFr d~}~>AiV3.@܌Gc[tdo~qY +endstream endobj 238 0 obj <>stream +JFIFaKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Ka +  g!1A"Qaq2#BDTt35RSs$4CUbr +%&'()*6789:EFGHIJVWXYZcdefghijuvwxyz?-dd׉[[kE,@~3,LnȰ7r*}{O,[ vܪ\{.ΆϠ34Ĥ+Bu(75 zS_R;B +[D K)/mvކxy}@MK-r;#)RV%H@(5{z{9cPj)*l{wX*rFL_f Q.mJV|>A&O >yY`ދz] /SŦ_ư7僢bbWN`,\qPG}F1kcM\+6-oǓ:%J7|E3Ԝ,vv;;v2:y]oU55-Aptttg\~]: Օ_a˸=mbT`_2Xy{MNߐ]9VP]YZXPI]~d飩t>Z9Bg P* +K4^]T^(I%2_ [M̋g oVa{+F-q#W z ې׼oi|Vul`-`ioxi fVNc/xdU-gBOEv!:voLY8=0 Ȃ¦%^`G4yY\po=}Tr,Zng5/ S0:67l)>g E V ٗ6 -hH$F31)qv^T`r4 ~ojԆO*;gk@zܒ}7F yU}|3߇>~u +|Y:dhq/UvWPǩ ,,Xt@]+0 +7I:++gtiOav)U~"=/dߕe;`Jܵ3>^>']nC`e~z&T彑7' #u3nИܪQf@(H +deVkE<6]؂73_K;V1:_GNd ض_fu2Ű,@" +6{l۷ Up=zgw7%[a r%@;:I߈ps2zOʢiY#޾:18(v&My ][ 滏S?.Z[W(` + +It^g(Sg5TdGlh}rq)a؉_yWf]7Գzإ)2 +ý'1熢GaW^Go _ONdz"ϺՔlk5ގǯ2Chz x㒓W~+/+dj>Omk+bx^ +o|Mb]){6(_慷o]{{Jt<~/*?7$mUujmQXʮꛐ T0_@Jw_MlZ5^j0Lxw:dzKtjj$/%^Mkco6)+F*3%^CRԬDJDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDeR.[u10:jʶ90R>GC26MyiTܗb;"]S)1j4@Nʔ9-KO.DNL@}Iޖw:@2DX+f=R+ŕB 2sj4%$q}> "3j*$>N&\C2?C/`w[v=-m*ez}}\K:"e)ȸHb +9Cv>"""&W'c`@ 3I0zQn?]^b>c 6F3eb"&7PΫۓ{qJг^?)ճlȢ%++5Imߴz^0 gmH׮X|VZg!׮@QGռΡnVT+h~@+1QHgӪvWÍƉϮ}S"xKRʤLD"&'TvIRªʂ!FϯKU5Xe興(f{'TV}*gCROaO4cYպ^m1 +rUy8zU ++u}n`}&%1ig"̚{=]K9km{9wtGs.5^5ۊڊ~Nҳs:&5Ob3Z~cZm5=:^KhKW6+O F썓>c7af.qEV 3)q F&>M'+_)x֥9 H޽;̏ UmNE̪V@qulK폘ZGnϏPCG^߄~=+į+!l[-6+:>)Ree>w +)U`֫9ށN+ӫ,TBGu.OԾm?>M6v:W݌VøfbSql&4÷usu'+?>zM5jܯ =="r~ hRڧox¿'?>ny Ej*OCˏŽmZ_]x zc]͟3M{v2׼qEU^V=#3Z(I.=6GQ>'Oom\ -E'#vuC/tvJ:9H llM9z_ٍ}uH`is*vi|ӑ{WnI]ޣ׼f\iȸ6~tחmhA#q:oRu rlu1Aa7_y#èfVT확j5b +T=~L԰X@cj@@q=L;nLTDz3[_KL7¤;?:hIp5+(F} )oZУ@|^WOǾgzٶ0lwtXi؈@;b#ʢ0mA -a+1|%ޚxu?E~ܷWҹ6k.w%k%K~?^G`ū;8@ͮZQ ôų޹cƾj,@x#c>g--x`r][;Ok-G)`  =?/S-SH])bTzob}'HgbNs:.t#֊(gnGtSfY͢URNJ(X 7=y5lp;͋,I.ސ:#5Z +Xwws:dec _,8`Wv{KyglNKVQ-r*%b}jxo Xh\Uq +!* C[+3iX*e`n<_V9,vĞ_`&.IUɓUYVmr.Gx|h}6;80{qנֽw-"2>a͎嚼O$՞6twW?ŊjU@cȀ6tBE?@㑓u7c'VcvcFc5hLt:hit7g]wSk$]nI3=3mP|kDnb{ C^F:FEb9` ޻L,Z=e`Zyz5^k3]TyVVFO@v )Ȼ͵kAZ)-RvI'JޑsF[4Rt;wVɻ26ʐ, +#_Sר(VQ2XU+46G^_Yj WF*ka ``_:u{˸+X0 oWT.FFe A +i9-P#SYF~Ax j$P,tܙgB0.#+<$ +bv-jxVSܶ~v梠}' ޵z< E V331TrRɂYUI'DϿ;,pEj' ! o#]pE^*~j{><_;53j:'ֈ#L1*VymOr;zI| fâYP`v2"" uz-~v@,~ wNĻ錆q2ƞ1Q?+8^G/.}o[0."l|Cq_L5uzηUʪK8CO|ۖ༾6~[6u(oWk.Vo^< nS`Y -`d]KkkГ$w״ācPTeun̬L}q2IԱ~mt@݊[̐;{Lkej뱣ab"&-Frjf"U .hz̨ԬDDDDDDK9uQe,6{ 1݅ZvP]R-TtJإ%OozdKYY-* 2yIEw׾6V:aW>];JRaTZk_TDJFi[l^LHu==U0VFeQ|.6E373u;qWDMfo]}7&ܬ[ZRxvv^lKzh@nB]q,{I)Y٬6EAIePCMvQp"\,D`Uܝ_d_v@ k[8] }垫>Tr{vyul{#%WߘC[DUdPO?::oQĿV'$ҕ YKɎuW.wdR-zcu~-gNG˫cHP>#dλsIdau]ZQ@ܾ$Ysm9tUqReHOnE/Zn>f*~vZFb@ngatӌ-h zQt?fz2q,`UĊnq/#qgׇ>a}XzXWLV ֚o*)];' Y5!7-k&ʉϘN[.$~/RoB\Jk]Bk\7cduޥѺ~NW[FOz(dn'D{}sNn}Bj}?>.\l=~JC>-_0SXu$:ƺ1h6dWbt68|Fv~^tuyXJdWEdg=؍:9'7&9r,b\HQzSUW ZZO{Euj%VcrDD(dG@˻jHHKʮjiO31$ i|7sGK7Fqe8# *^{~#:y/>6v%KV[#kz~^_织Job~F] r,k[hWq9%sFbTi8%ݙϾ `I{24A8:;-2 V]S-o:ۖcݏ7Ӈ}ĒIO&˾Z4kޭR/;=|0Z /%ymhPu) FgOCį"KꞺ'G3#\Z~;:v-ml5Fda1rh#J`|@UށN>2ocdO!$I=RWZLej g'0[ ;z:2G^h~,+eᱤ+i#Ӱ.Wd,K簘ٽ*\[EFѓ N ˽''JKbmm}YLjKe#D#F{nq}f9; +#쒊 ++d&DZ /['| ?ܙ6} v+C]X2;MLcuY[ǿ$?-}RVk{ʯ9)eAX+_̚-k_"َ؟ROg*Kea ȿaw=>_ HQA Cm?Fk칩6ߙR]BuN56AWg]g<\W*hO >ѿ˝Kk)K:X3.>/{/|N֡Mt*6SDI7+^z=S_Vӱ?=yxϑI.zXh_dWYgP+ |'[$,Jg^+ljҿ-yl}o5ʲ׉ +\ ª7X p+ڃոp?$xTX]_%伸*˰v6}Jt6̷5 x(T%ܐru]GP#31Tr2FHA򹑎VX^(#d3|aZO ^qly`ygu^ڙ/Ѯ*ܜ;9Z1IQ]6P{I \Tg;>вM#%|bsd 0F}o:&z=,/+Ub5J"Ŕց:_nȯ0K_\4O%=Ǡ+3>^v6_ ;opc'c/|nv^M 殼UQl{JX; FrZAj~b1M`) }lVUjc_>S-˗ĠpIֈקᏤbfRnչɭ !Uv46O2_B)}k9PvO*bCRhz8:*C댾풹+:o` +Sr= =#>i[|/!=x# jE5af*QˑayĬvؙ8͍APFc^$k-~id2)Da%JvyWcٗr1ܛ}nK~a1˖MWGgKh$[1,\YrFK 2|, p js{Sg.Ư$!z\1#Pls>%=e6^=,KC'$r}0޽};}s +sVu@*;afugZl;m\'7DC'[#e2z5g ipڰ\ o߉lgp䊴x +Gc@zYQ/%!)\.N=/Du}4.u~^Fb%:w~}D:MUu\i\$^oa,Vdc3 +673Kҕ*l;ag^uN̻ hNpvQ_c?mku^fQ(lJh6jy%HzU@gTn~-{qbl ̹Bt6fMB!QM$w3b""y.K47[˧:WFVS#bԱ|UQ2i +Nw#)ctkk1ߚS0beDDKYYUaT\1:Rg[T2A;pgMYYfܪjtU-I>)qQS@$}L6b=BCSԳne4]/b˂7"PGDJ6k,j8@v@w)~եY*zHfbu +3\18 +ў̧[lT6? @,S. c32 +I +I[=Ngn6؅; ~q72.F~% ҍװ9"ژ2:{.@kCϷ#ĝ5Bp,7~$։']o Z W_޹p VuI}-C)/DDD@Vͯr`Ԇ̬ +Z=q@;՛IA䠳r]'&ThhJ.žy|씧H3[  ٵ}f^VN_NZf+0cË;PG wKiv̻!$Bv[[˘ JYuXaVv&(u& FWaXTBZt-٘8t%z 5lKk`rku.W*#cc/"lrp vW4F&GI/ԾPle^k),F g2AGӘjݝX@mo]|*/Vt˓;->G^a䧝bҕ֠oPܙfu01eXq(t@#Z8cT +䡵`yvk^o[VI!bzjbԳ0Ӭ_B.!r+G q#o~?)!",ƢZ5c2|?-Ko]78eeq+IQ.-T^A` +I#r|Qf豯k'd):'\4^B=7>7 eEױ=3)3FQ@F3$#Z>zioxctҞU-OU*֬}8byşGK|BVBbW:'ņI33[5ʭNC l7)zLGaȂrv!Uw0n꙽ʏB=mc˯ŷGCoY7j49j=kaHCԿgSηUF5w-3) K^!ͯ>mt:..V-ǍvwB;-L잰ݵ(hLFXqo{N'w:Yr]Y-}bbwߏ`Ϸ|:Q*قb9P1O]yH +i1Fm'Z˂=N_Xʯ"m5[m5Q06hxִ[|f?*•umfe"jl^eùf?Plr@!'b=Ȗ-꙽7'[Wa5A 8C[Gm➫V|*,D[\k0#;MRu+2InV[ 7*W>ΧgO)P1lrtPA"Z=ZVd)]{nԳ=gnP(p'S+Qg>Ht}mgZ#}?T}Y=(]W;sݞ іl-d]M-iEƷic X-%ham;TU:'@͏$fQ]E 0ވ>CsJ wĂMis;L?[z^N)22 !v^nls9뗾|r*c*v'٭,@? 66dGK=Gtd[MvMI yYC!"ʜ =X>k8^,F3ʠ#,&Be1? +-(ˑn?k;~ht{Ky~%r1Emzhm9X 1F)!, }@V +x.̡R"Hv5ldcbu ؄rVR!={3SeSX:c,l~ԑ"N=QBص2ZˋI*@'`jX98WZUyd^{P0;^1,QNT]q#zmpTL/tGZ:ٱ.ceۃZɾ[AhsDW!ekac%yYl0 Z01AW;T@Va%솭,AB ǴԺ[8%F8^ii_{;קI~]Uz,6=^gZNPFAbz }}c3" )5Ԯ)PMUY]U`P.X̴ֵ˾2WY-VvҒ{@;=-C~bF .-o@W\(U|[bYy~1z>o[-x nL#;Q,S{>Ux5VZ彁OۿistNɮ}Vٶ51n^jPqG <Ά@3\oK7&k~ gA:Y3.-[pb8>-m{CM:줓}?I֨U8#2V'ǣ"[`nLAN.$#2`b7̏tz> xV:VPWk GdLNJ%^elUjS!0_Q<5q_7:H^\Oq*{~6<̵e(j޾WL? {O" _ң +wrl4ێș$:FGKs|Obo[iL:pŴ]aVg0v$g'F^Fk][yx†[l}hw3r-LtFkhaHHLn-AA| 0_ ][ǫùgeo5mb؂4Hހ&EvVr14YYʝ Ӽ%U%Ի4?2OT˽:FFј,UլYLOaG}7 o4:3R(}4+nf 4y85_R"4 o@ܧFy]2eȸ US~i}{k>nzن`LrcOQ8_EWيe7rT@l |,[aKr*WL?r;Crhd){^µVʨ>t{v u|܍d7LݖՄdzͭjfacq*ā$yʶyRl~ r;_9n:n>Wxw,'Y[ӶۛҲӪٞQVZBJ@R\1aDk{/oe@eV pܶ6YgHaQ@m'T.{k{b kw_e>z:*ZA Y#!c~~3fg#hakrT^OcKҲm} 5aGnO u;~VV\$ݻ\s2Z'+ s*B z_ }ͫ =IBk߷Po~N;Uv{*?Ö=mmhnjX0#@wO}{v}{Q<vbܜvI:'gIbՓ]WFpkPJ.;=sjĪIŶYWc..2)i*m;@@odh[*'@ w:G_U4s+c/:AaTdV\!-}8Q#~T]%U\@e:>1צegcibS3y32=}ꇨ-r&8-hBDz59waO԰qzU׸鹮HQ8\;޳?tXt-g_n|ַ߅nY߰Kz.lw@pTp[ +l@zkʷ?)%aS~ZV:$$@ |F/fۊ^㿲I-J-qR@OtڕDT2ūpNu%W~ne-۹f<-3-~qy7q]?a#+'.MR`Ue`ZkrOkV a%興13/K +6aogܟA2knPC+A`gc32 +ͷE \FEyU8tae 0D~ex]l~+Jlw'KT5Ӆ jN>c}ťTl;zSN~_!Ϗ.;o^߼)kruF7ű6G%;KڕܵV]7]YJ=%興,طY)nޝܿ-UUVΡ|Tu.T : =bRVRXltq2T$ z=DDD0@I: DuC)A#=JnV"""Z9U+f 9w˞ sRr |Fk\]{<HR@'oߴg\$C=җ#e`Al}Dh*P>زYV{ +h b|[*UEjH{̈(d2uħ)ɚT!Ђ6vFkhLǯXT=n- Сlĵ-|&'燏>A (?/s/bל\yF9KD=(s@)|73^Rw똕2ܯ68ﹲ +*;K1͔TóM|A{봌]F܎uo؇UOdiAZU۴כl@$ } n٫kvK6ro10V;5ELe:;""YÄ\_PX}Sݜ)Sk됳v ;2qK + >k`VmV‹Kz-Xk2}w֥GW c0o{1:6QeVax'M(} +GnYf:مbWṐ +C״Q̳gPhuCyRܸ$IFMuΨk%jFGH}TY}JNkBq@v{[=7ź.njQŕ66;DK[/KZknZ3p^D::cuq5j8z +TbGm/VW'hZ74d؂ձ0]VUZ;{_)yۆVu߮:BlGƽԋBl~ xeQzu4Ys$TVt};R߉2Ѭ$R7It4=̒fʮvkO +RN=o5.X&ȶHRWۿ~ۖ~W iN8 kJa-Gdپ!lQ`X,{7zN;tߢ5-6EY#0^рᅯYӃ6 >!YxCSE&{.c9aK~ {+&X_j`ܬsL b䧒؊˚e.'n'ҙ'T1,WWP* $v2`m`XEvb- {w-GJZ'3KXR KPXwVc1j]#6g8jWj"} ̱u& raA呾W.FF] ]L,wKhv@|$zW5'U\ŰXqrIm>%cԱހ${}C+ Ῐ5 qɑo/}gMvd\icz#؏y*ðv[bDŏ'VIOQ5.җu?=,M +e$Og}۳Q^]VYaLzݔM#;znd[}f+n b@$ +Q2;#6aArXr+cpzw[X{ij[gfW?nБcgƏ}%lLlL̛zU/I׍f_\>:/O=FAe{6m>>k238u1I@A;/oYz֭QlveD]ZP7%FSa"jfv5%8XZz׾ܿSZ]Bq67lxPy?7Ji%G9(zn\C]K̜ne4lPǟ 6 +~͆kxX}CO4rɸ*c|;h:MzѕܲTSa{͎Ct׿;QZN_O,L΅^rٓu:<.VͰ=+Z2<"A{'_K ;"sH]bﭮ}n6Oї(XmN h?{b  5Л^3eD`J@'`3:=OC70ŬȰ +GâObOS?>Gls]$( $nG/:h^cZR">K{Fgqe-]Y {nӳ]@fUS-z ={\i~UyKnmYkc׿۹^p_5'&k+Ԟ`<ŧ.Q 9n% _m{^Ď:P^ƻv&򹊟^Mvλ IdtΡgJ aߌ(5OrZ2z^[=וby2:y3-ۜ k*d> A[[NTe' yzKxع]+1&9x+%D|' zٔ`Zo%̷P|5yz}3(^²~Kؖ~"0qהYEL(j@a!y{LۺJ}62ʮ#+9/ /=:qj*UCȍol+(f7HŽ+R,ۓ_-tu>C3b%5+)Y^M򥘡GX#}C/16A~'aW`ΉLԬjV&6~]F. J; ;=(1QkB=ZԬ#PYAq]SܦbRyYсcw:Muy8Պ}ߊeDjVR#R)FVat|ϣWr3m}fe5e5+ԬR5T0 4dyX\~_7w־kB#P%b" (d-깘JT !,:;}&A6({"t[ZZ[[ڟȧW}4YuyJWpD_-ç03pּuc%BK?WlN/][y H H^,tL /XAU0tnh, *Ik݋ +}%-oĹPCr=c/u?68ĀC) zoպ=o HK{n[NM`[Rz:v656MU2+Kݷ95~#e/[_<)RѓիA^l7Ml@ߧrL=JZ.;h"'13qW&UuN pv$/xܞz΃g{_v(lqWú=2ߪT>7HZ^Go\Ev"\'1` %u%,jR@I:I$Ӡ跖U۾HSo ʜ7|`5뼻˯ mvm`w;imM^-N,U—)B^'!HqA[7tBu#^YboNjyf|x{o\wqlL[otp.NWbS?ĸ= ,qH9[uCdBznRT\dr"Tr~!%͂(@[CĂt>޵s/4eV2a h2~oYJ+[jv% #YĘ׽@-W2U@o]=UתvyvZ⦶'D1 v$ mM8a,W%btHdG-mUNEUE\AfG6\ųnB,O}yow+ՒM]9n" A z=vW-;X ڤXC;vC~@Lz=X<|d*iy|'7u0_;?3-Y Z+1,doS.M_-}zv$d ++kI N`=dBx +ԪZOdwmS|Ot-Y!@$A?-MO df hch w,P}r7%>#f ;V0}osVLZU*N,/gikm*vXP$uPA'\«b\Yw$|kv=vuj2>#\wP5"{D]6uF{ڛ9,Hcŀ5:޽cGmW}mSY44wKutAfBJ*so'@{_e~3sZ #d; +2,BXEVҰ$`os\L긽\b5\}ԑ'HUljF%] e"_g? 2:^ZNggQ)5yrMfA)T%a%@$:;u^T\-kC}`l vcc|TfNa`{R$K#tE:sRP[{IL|_6˱ yn:߯ס+L +=O :$ʿt}"ٔ`79XjSqD' +:{GR8]G6)@k8e9*6yԖk~f5jȸkMN;v65}e׍9#Zp;ՆNU9uTy<_.g% S_N\~ySIN~avP~t|Zr2swQ9[ؐ;zhNt|[2EՐ̈7m9kh]뾻v>%/{ѭ:P'dQvEԣQ,ak+[U@$voy%V(2 Inڢ@ Lއo_MhՏMB%d=É H\^wH黪ճ3h܊mO*lպȸu5,!=GRگj!C]µ1]w;>Lu $XY6~}}+sk1s?=02$beVN!Zrn58f:Pa%MCQYAon~Ҿ.}PV7Y|MFu?՗DrZ48:ʗl'ApYq uIQJ-Lˮ'D ot{3<;>ڻ<J2vFՔɭ@ `4*H3ȺZX e*o0T*meR=Hר73/Kr2ﴷN~w|)F/KzDm?[hFbPYMk{ڍn!qK~z~5]뷬zN~q}#ȳ+N3%8e*iJ3+h=r.q?Fsza%fw[][N5 ^g:MWԕ7|53i ^^P7ox_~r3tjpקSuYVkG" {yl5zUEZCa y ԷnOQ+z/ #jVUi{Lك(7z꺛~b^\WMis2t\^8]|e< Fp<; OmL E9E4PC!_ BB^O޹5%vDlM=ع)xʬS+1%@=SW[6%`yoy_%9QE,Mo_.#X:EBEgiUlz޿TNLT.GNZEO|ߧ0骬Lk7SjUc =>vx5np패X^+޽-`tqeyVY*[.=YNRZjƕFk\ض~>W;GD̢s68a]uaHzS˥XSVAgdd,X:އRd}uShsB!gmgf;Z:37e?KW v< ~?N9Պ9جU~Pۘq z0~9stXשö2bl _攫z3O{HvDZ3P9waTǕbIr_lOmy-!r>zokXm`q֛{mLj2nFN+ zCBu>5ly54.H|P_s.Olx/uVר[ +;H?}k+&qS"RYZ#KGyxBYKNZkU],=dIܕry2rڋg]Ž:ޡ_94U [PAH֛Gcp[l.Z2q{j M UƯ49fo@}}725A.dY8kIb`j#լdn%SԻMMLƞ(Y\e> Gr%1*z>{UaJ0ZSyYkk}EXAQmrz]uWcV #F:F9\:n%Ӻkڰ= mt}oL9=1ZmYǿ.Kt̛00zu'-]5>F+DFDm1ʒX$M.5֓,5Zq 4DFQYMFj4 Dj5FQЍFe5n8ЍFZD=9zj޲Y A.2bV CggI>.JhFB5Fcke[BԳwb7MĔ迪WW~H蟪W~Oؿc~O.p*zW#XDnuv,~>薍I#)zߪ7>:(3R?U$}OcW~_ؿc~Oŕ& jRx=B3Ѻ]ė+Cm2?q'w#~)[H蟪,,DXD?S?eڼ_o$0r?qet\6 nVGaR[F$޶)I~oo$}_'WJGDV?age~'ŏ?#W~%_nLaPO:&,FEkDm2?q'w%>:'ĕ蟪v>!8]b~.xy!G,΋-#?YJ}mLalSqO_]~#')?U$D?vW~_YX蟫/Y_.Upe+W#YD`HX{~%kDm2I7=}to')U$DT?k?U,,DXD[_o蟫k& v-o[,exaKrI oijx6|UqERj?U$}OcW~Oؿc~OŗjIm2UG,΋-v߉e+Dm2I7$чMďw#~)H蟪,,DXDX+?VM~/7 R0~ry0%j  oijx6[1U~O_}IGDUR?UYY_agc~Oŕ蟫k&%~:e+W1~duJŲޙHe::=Ŀ#)O@jTnv_gi"%8>G̏%Ҝ?$PRZrFUBV"%4>RZ2?$_AQGEN;OQ|̏)'#+a =G )jOhJ 4'(f|Ep:/KV+ځ˱$OR8XcM.գ#fH>Fo 5Vm+tޜCz9S6.chZY#|N}~jjƇu@*lU<]Gnܜ|KntFs Iٗ[#|DɢPG:3,<umg l":$s׊TM\պZ+TUl.)}~dҾ-F:5%PՉ#kpƇbs ` wFeOf*Y-h ܏,ܶ4}'A|UyfV[gpZצfuzq2cAR4Oqi?P:GҨ:ѽ}_\{2Zwb@Q;eއOW+Rv́HSA}.s0-za>ݒ]krKfLjnS'%~x&ަ)NSmX!#|5պ[.qj5qjH:6Zh+U=uC'Ut6@ٹUbԲF"m0߱]_S)+z2 ˹k籯*6wKTz!@fU,[e Ax.-v# +@7;;k-{ʮEné_~YQv%r颳m"f`{zT,WRTӿ0'[}rHy|v9k]JP)nC@o{e*ȫ!yR~Q]z,: l]TK2#K 1: +>3.F >`?r`޵OA÷*>%TR'˧)-l$ = Z@ }r7\ĨVշ"Oum!27MR'Ρ4"/NrXՁS#Gr=@5]hA^_^*nEC=l9nrV#j='JƋ!Ab5'RADfo[$MHS+0ҦAvӪz߾$^g]՞-J݂:*XrĢ܎6AjiN8du^]_Dr~ȩ#:>H ~]v:޶(FĬDDDDDDDDDDD<[Ҫ.@8 G(')`'1[vyZg" 1'%T{ķ&b^ܵe XcCkʳYK1m:G̝>{hjSH޾7N4cft+. TtHXWʪrfa$Mgھuj  +v&7i4J^ԩ#N +Jj,'ŧ6UQ +ULoPx[& +cN?ro+n3\/LԷ) . jX^G˳?#YZQ9 g.'@~sςF0:ūȉxR~]\V9|?lLROPqȰϼ6O+V~<ct_u*? :'0M]r}7 `<{ ITۄ5C4_#a~JҜ~銉w1փ^;w`F\kkA`=O}{?FhŹZb[N{v=^!Td->b#YqNMX赣tʙT-#|GmcxC*@6!'_ZydsWg<qYCǯUQ5^&>_z#(ݝz0YGAyy6H O~~:~3_O"&O*Jta._Nǻhs9^]_{!~=OaCOցO}dF 3!^#d>orAInĘxG^65vn*>N;`]AWՆz-.LZ=_w +0'_>gNQȷ2OZ8"mo1XjHe3EŻ(Rq 2Wp{lƯelzC0+vv\%';q^NzN;]AGQNFGemNw}>"52T@PMOǪ΋c+J }6;Ӻ-T֩^;@ UOn]W:GM1VF%RSep rifb{?/S8QQk7RrhU72F$p-F`Ǩ,4 {P.e]S>j;Զ0#{@,{|-VƭEe#XQ {2[.r]*}~z$ ҺH^[Ve] S/߹tdt^rm4ݛZӊA:Mioe?7= T(6B .ں6Wފ?v$q@8|Ӂ-(}ȢnU~j4 }c?;lJ6spw`͍v>Ҿ-«7õU1kE[˝2z}E޴c) [cdfl 1,6WS:fv{~N_Sq,LP EVcW@$~5-nE4 ZGSzr,H"͔O6::u|{8貶(G7Ywծ?}z̛kxy`1m~0<7:vcd9m`+˻;.f̽:}Bl7cݵ$sW/\v{|=DDDDDDDDDDD>tt3IcRI;ԭcXՋJ:U 65؁۴Uа) R۲y}{ܦgwPݑUu2nޝ̥הgũj PJ婑qʜRCLޛ_Eq( +ֹq)R+&^猾1괁][Q+|JJJΆl}?\zNE + ބwLJ&C0C'|ԿzR*rq^h@{ ]#h%ObkS%UB =ȦB\_[ e1:f&'EMzdL\ޗ@WgNj阽80ƥ+ vx(]^\-7=f|Z<{k.WqiJ+Wm(c]6wo|9}ΟEIbP7-/EZ0ǯ,Đw==phFLzҠwF]ӱߓRv7GC?smx9l/0`ÒhB[1k5PqQ`8$0f/N1J&A:;L,"%LkmD.:=[z^+\d AymI)|[uaX(R\KPFm;9e=u #[Ouuxխ@f [>=*jWÒ[]Kc=b$^_Z)i'B@Cg^(P@c[]<0*Ljs}Ny}'=(K?+}]Hd]A@>c׊]JTJL\އ_ǮAm o]̼?h0<:qqzu:m ~p.Oۏ]LP)(IQ7db# yYnlf#Drt|;=B9A]HG]Mb""Sr(d:u\ej)ES9 g}s-oڌ ;i( n ;.R1-> IDbtu#zTqɶS$3/̯WmlqfS1:T|E46[| +]@)=fON"z*U|h~~Yn7Hγխv֮KKYKTCJJn7.XWeR.Uب w==R噷-ʔ3-z]Av{vk+)1*{|QCgJ6{KYٖbR0 +EkvZ[yY]rŶ*~zr+\ުژ6r=ۿ\:l+5ޡn(ƾ*?%ZMw}L]Cl{1Glwz\]T +G;'74eY_&o`롰u3q#qܬ=KoU5{n.+FpbI}3 nƵ<& 0ڲsۨ!ںlPᅱ~;s1֝ ]CI#LMαvb:ߔ1ġ}ߡq$ܬƿ5({.m;Bbu[1z&'W!oC)Czk;-ˮˬNڵFaˏL,de׊ktl"؂.լxՓ&XnD:V}Z+rOq+)lL\̻qڑ]-h{B1R ~^(ܬ-jRʶq< J] |?Գ:.-UKT>geXwSDr'CKmpFer:9 UЬSV ow߷]e-s{W:W؝m*aF2% 3WNëjpG})aRLrK c?^~'0SȠ1pZC.e2>nRFu>*HvOocWCIV3;d6+~&Vs|5V}1з"nPc3?zkf̅H-{ȥ?Gstll[[hcv}F-fOf'JF l~[d^ K䭾@o{Snrd3pƹ)?H m>"s32zug*ڬy6zcr[oMȳ#!,Qe`PH q/^c/ +A|db0lXH#ZYx1:`j[Ϻ·Լ\>;g-mVNrT<>WDt"n^rަ\}*gK(=R{9|G:?f Gb5Xuݹ/RvI:>fNSžE֥5TT.N˰<="zQEllʓ0:ޏγu)ۼZ ]SW؂;zޥ}rX֦0 [1,]f(N{N+^u~,Ee|m2kx?r\Vq (vP"Uy$|ڞ1lܶL1κ-=GP '"zׅ9d15\kFn:2OĸɁгlW|؃ȱm.u.WOJA*lb,@Ʒ"jfbARt5zK}K&wR/n9]jN@hč7c3r0zլ|ާ˲\9FDT>-d (`R0E˻,/YbSbVvKG6WEwneۙgEʦ{+Nrfb[MZkp 9"f[o;Y6`UZer?e_}J@{jSoS\ +7\rua\קf#|;Mg8)zX/bm35Ȥ~ x˟61SmG~CrZ#p,y溱&+<$DBbbf_U Uz޶gł%p}uR.2us溮ھ jmk^+\7` s}cUFPKE;8bBb9tuzU( ex5_Z35vx t3]v¶rWj:Z3iA_kʹw[lf,ʤRwRğ%kG{:u7ta'r)[ kkcYzuMJV++9wogTʳ+cu ev+0.T:. MYC%jԇ}`GbugؽC n(@>E_7 c/.%s;;g`;|ɗ*ʥ-ZZBÑ zfLrCZri5%0ߤ%t:nFܟڪ̖'d|G^˻ +:}ssɡSoenuuSˬF͍'7ۧ+, +eTIPT t96cJ`UwRfF+xjƶ =yvvvcHpu2>Mhvrח.ʣd6,f t@ zvwEWR[̵,j`57̏Yb cQqV˦safb +}P}Oˏ1qړ]Xrl+Ȼpf=і:V.L x{ +2` Y v^êWIwXK4du{QE;}N{1N\VƪsI{ gD*jXΣ7bb'dMYk"ڱrA >Ϯ(]m]sUX- &3l YNu'Rۋq$_pA {LqlUe[c2ib2ʊ+cR5lIֽ b{mQkuhW[߶~1L<ޓNm^ܖڃt6:?Ob[2kREp6v?fc ۸l'g.*GN{/zv"Up@$ z*oOJLΓ^]ɐU(X1R @RżT8\֮e%Ώv'ˇQ~iNgr1RJJ :W\=oq,^k;_h;54֎ܙQAo)"GOqͬlIw.uׇ$m>SW˦z8RHU}={KY뾇$TXB 'G~~EXU6 ݘ)+[]hՁߨ%ʺ.C*}lX]X=H1S=̅@:oG[&e&UO  >/CQq +6`I>^2^wX۰Q6u.z/FE)`c(=ϴJM{yP9'rku +:=y82[P|4t}}fxe{R5ƶ +1ğ^'FzmȲNvEđ>R$/qKCQb%YB[>~ eW.zT䥜8.+wR1qY:5c3w{`4&Ug))X[-un.+춥L,1O[^glp O8cdc"3_s>ԝ~B(קإ |0Ss~-!{@:kֶkEd+F^_%2+m G +o!}{{?uo*ٱ[y.Θ~$z勺V4tz5׍>A V/8jqz%vad~]FѰuJGu`}=].۝)Wט)$A$ďz2碫5T*{YIGLZҡThPYհ/.-&lyX{"t~xO1qkZVWh80:!}nbHɴy aR* +ルhN/?etQ̋kUXTPr=;ߧ󃍑lz]]) 3Kµr5Ye%6ՕSK$|ֆ}{MĬ6C.;58WX[9*~0ߨz^^R+kM]eul9&E-q~4PBXX8|L+,b$AH ̜y!vboJx9C? C!Ǹ^3`+ 7"NG^꘹fҳlQ}<°)pGmwcbbx!)̡sQV̈y;'[>[> bS֕%`Y΀=dx|+3Mv.|$#bW/ć.E *c=g;ֹJM,I$'=2{u1OWyY*̬Pn{os`6*\jתay~샶:޽gq,(.:<~~YoٻveNf}jMWچ +wЂGoIlf!b6N!X9ĝ읍/XKڬGb +ֺlsfj1r)Fv S_ev=o?!2zwU9ۏm~]Ԅ.pJ} =HÏ-o>S2,\zAt aFc'uI} S\5DeMr=VeyZd sbY +_ň^QjַM_;}R|r21j/ +p` +hQ2ZFʐCWG ogZ=QV+`:;]1>OY^M@j 2|Rl#_7n:wfҚԺ uʩ@/h{Onu]T_A-DVT1w> -^AHu'7/*req]Q]2J{)%+-Sl;)fRoo:뚿RV"" g*t{G?^_[f*]E° C-LH@\(ߛnIbm8莻ѕ9PbX6 +5, ܌h)N2'wnR6ΙKaj2q%!Cw7gdfucKَm5ۗ zz,n ZcdW^+S*66Twlb*JTci[lZI=ȞIy؜@:pAgmԭ&:50UPI$G~WB.-;פcL:%5mʶ%vo_X9-U[ɛz{o@02[;+FTN*T;?H]Jd#W`  }DհE޷c" "Ë9񒠏];' ֺ6yDݯ\6lzz/:}٣uQ]b"Vfy̯"ޫӲW]t܎~T-8Z޾^VF>oT { RFv;táUӳkN;TJ]ACs0$cR3Hȭ>^#S_Һ.%=1p oUxz0=mAE0'r} i{~zYmǂO{I.FBuއZGi&Lj'[M6 ݊q-7},ZdUYuNYEMAۉ޷M|[c[ۇj'{{,tN;Mժ0 ]ǧ}k{]ԺQb&Elh%{:&FV}Wc Zb`=f_uzm~_)1H╯57r։EM+ac Ś˙mh)λ͔d%G0:~oW=C:ǯ(bǷ̉s`*6fKYbQͰGiOv~#aE;Pb@@Lޫm/V3(>}瞷zLC});}nDՑۧ[Cc}W-H7"t5ܚa^b>%_=t~SZX;#YX^gDD@(d5ͷ13lCb"UBՎﯜzViS+j-t7M97 n ŊkrIt[k8qE8{wgtIВ9=0d('56'z}5k17Zpm阩c Wc{>Q uku,ZڱkWk(|_<nH@ \Jx/ u>RG![ +T XdV7zx|xeȈkHj5cQq; +Ձ]K?r+i0ٶ]G"K(I[;@Hܻ?*M[$"_b W>Lcea.VU5ȟR@Ocض}+%,.-Ć9yoGe|oG^5ޓegv-!\վglMv^~N k91Rd4v~-HEɺmwhouW/dcԨ}Rl,>3/FKNEMAK)=(Ozsjʀ.zګ{K}&Klf=X>~۩0rzylEiqq?׬fVX? EaDRV"""""""a:Chm.%XvHFvA=DDDDu_k\K>V @$hs+ ++X=سvՉ=3"""""""""""&.~#b`ޛi;2@ԬKwЙ(R C=xGYͬm('||zPWXҍw>d$v""YM6#b7+(f5 ٗg"1vʪ6t&X4#@,Sے@=~HHޭ5k[V[ + +m(WQl2˭'lއmI>zRm$ L$2iwuVϺO%31BC~=u3-EmcTrURG ǣ-cɾ\J,TXoS'qYm.K `JG@z >Vv՚rV*O$ +5gI(2+[+`H =7nVSbENSE04LPI1rbZ)|+l{w\/,_FUa]qzb71sF Mp^*X$z S27ؕ(fҮ+#6+̶V&EdXf.EC]iBayA6o}͟Z[s\Ao@v߿6oi c$v' z?#0szfOӨgx5Iyd`{R?vH]vFS&a-Z u_\\O6c^Ps1K\@%[|͋K҈5vf>mg?3eU +3X- > ]Qm.ЅAjʖ =Ixʟ#ֶʣ`jhvCR'u,v{%rMh +Qo$>/T=r31M-ZPT+0-_ $2W;/Y(G{_5jU@'d'K3앵^O2{orAٖj؄.k+\Y@%Qo^˳=f>GWuqE2b˱=G^ǥ4Yy^$|5^΁uꗺ4¹ʒ#V +* LWz=y/3&3-k\OV3U~Bvb76*܃#^b0n-nc__[]q[ޞ/.+q ,}u!z^k̹dMG ^}grWf6>e1cU6X·ڳn@.`;=m>%NlBDە￐K8Mtּ~N&7fxjkUB\YH n=3zNW7C"֮H ϱ0+|V:{Ģ+4m[ CcZ)y¥.\T;ǿyi/ +otkqkTR|Dܞ-jl.տzj+a]LL|)m{hs2z j7+/ķ]v_} :n&Mn=n#io;k3~.qz|o}sS+,p G1 C"JZ[]2wV#CS:R,im3VϤnޣ8elZԵ .qV: ߹"Kuj״?~<Bv$J+٘pI,to]Ko'/j9s"'vwS^j +2hr5ּNջ7RQ#FQ˷}5ܬWM +8$o];[lrPuAF<A֏Yt2:XexSeiAd>O}*9KT[}dn֠l$ ߾FW}G3\\b\Ñ<o{ׅޠd;B:T~;נGaQVv[$%<`45+nc?Hgū|}4ONY7#;uDVWVҨ7Gf)4tP=`an~^GOcY2 Ăcn\tޣK֌8mq Z k9v_[ķגk-URd}Y}Q;isءUư aw}ƽ2:GDa;T_\T 2-ϫ#G"vaZVi:vR.{đSn2rjAHUճG<-{" xPVր"~>YOM Sζ?krGĴ6GLE?G]oG}LAKct{կ{IfA*{,\ܜE/ʭS3rqLd B Î>;ѭʷNhHؐ9o"zRcbd-x>2yXlGŭk^[[eXtYc⪆ވ,~oCS"잫|"XSTb7.,@W3+(+hD^hኩƶfWVˡ>JЊ@_GX>-K"1@cخ56>a6 KTأJQɈ)#DTשn,֢kEpH%X]zvLjwqK_ 荐Y,iw@Sfe7YKڵB7ԑcS3͈ܵ3.0K";rf~WIK2i6ZώAN'lqm|xTXΧ;Tjd%ݾ$ !'GԎ'֢EGe +I#jY9Cpv|rېKy>7kk(W\}`8k.FFN>K]g: |CNHߐ^ڞO&i.T)c݈%K//~$~Yy:5issE\IRq߯}rBGbT[m/Ǟ8*T~|8t~@?/Be=w'3fpc|?Tl5l\r(vV8Ώף<[ÎBKl;7%;, ߷S3?ƽy%Ub?=.osq* R5eOĭ_7}{SÈrS.PU @w;et(]ݼWO9$ޙ5_e6l/!*Zc@r݁g?=5mkZ'UU~uk7N,AR=I:֥їUV[b6f);S7z nGҪ'}T0`AI*}}VMT{̮CX A y*~3l|:E4]1Ͱ4TǙ`=K&{U`vڋMr^CL4KV* };oeuu쬼GZsYm9P+UP}}1*GOw3SŜvbN}#'y,mYU6T,C8u@t^ (J(WSZo.叽o݈,˴#,+$1f$^޵/t،kk&{$vr} +~UoVM|:BlyCZ}&תyu7/*`SŞFt[8( 뒂I:]RGp(faZ*2:P̧,`4@W!c[>X +n̸_il +w1:>:cVՠ P4` }J<꼫QZ~/zS$@d%3ď+X]YPV4C/{Lb-诠MmŴ_y:VUU֋oԁw-[[r"̥b[mYXk@< Q?Cߵ!+̳kS'g;;WmT&îip%# '|oJ郥Ti=͘Xr%m@ؓNF8yycZK޽=>ޔHRJIUere^pYd(9|=V]f=O @XoX i>Pd[ZG$z]K_<2&6}uHZَ؟RI3dYFMB2tt}D)]&Ń}z#%)_\|JS?G{ tEYYյJq$ORMdcYhAiUVW-6l~=1l[ަeEbu`!v7rgׅJSZTP}B^pLj&bΧOW_I,J +752-\qќ+?*6cfY}J^U;`%y'[#2:x4c8nWst8m"߮."y[*tFS W* U2;AfN`GC<`L\.ΆN%S(#&Q_.$X):'}dLΪ4fҡv(!w{}1lLdTYa-xqcw\+)\a GF{ܬgR'@G~[pYJmzw]sYEV/{2֨6Gn÷̉ Z漸o[] @'zuߴV%یA[+a\f\DJV"SR-3,e. UT,HEGfCvo)~db!ؒ[3:j*_MS_w$6{{WNnBjlcۼW4؏q +_NFw\6->!v: k'XL9Xut#i.`C]:F.ngY&ʭFEW }9l:QoPY&1OrggcӚŲk^YTFcO=7eulLn^ +rU-Ch׼f|΢W2J9jm |>Z2_Y\'s,N25KY+b_/ϱB)Ҡ Y ?K["Ujt5>j,St4{L긷b6?jxoz-:X;,=U=5[u)fZdSc+WmN?-)  JeV|5^GubI⻳1Φej,<}~ v֤կƪΌ}#a Ncc>@ǸdJ,UY_!ċH'OO׷у^k?R88g@yvgleɯk+cn=~yofQ 5 *TXm +ܸc`;>XVMr{<#Qkkw_tEvh><7؏i5rn2楡؟::9{}ۇ+v$vV_a7OĹۂտ&:hdz+-j15 -& :y5^n˩-ڎ 6\FȮ9|d(CKjiE5O۴2s25eCD! +` }I>{> +YyT]|՟GTk@*c0A `d/Vb.Be||jЕh?ڌW~g8!<ۢt֔I:6N+cQ̄0tAg7ӛv^=5W[eT =a^?zf|*Z\VAo>!$zMپjB:م;?ܕq2Zrx{ŊnX;ֻlv_ë1[/Q RՐ6RF;;R-'@kI:=I{+U])|Ue佷b=c3NZ-RI;f'##36hs`=wdOrl-̥d)B6)>ir92`^[R+?3Ӵ>z1.K«xv))GN]oDwx8|Ck)J JK$Һ =/'3"\Eh|'Z 쟮S +z5ٖI97H?ogU\ja\u쬅A'PfՌo'5_sx=6Sx\ubS>rnFw^`~Y uǹY/JV_/|~.G}i~M6bpzGpz˶dWJ^Ib*bW8d6/aNs\JР\E|\wL[|5a|f7nW +!_uR='? *Q:V~>+ +# N5ӗvZ6gCK]o'TQjT9~U9` tQFKf>S\?v H<=ɩ#[y( +4%b"""""""""""""yJֽlt5}LlW~SDX$zD!󕈈MDDDDDDDDDDDDDDDDDDDDDDDD@^MxtuV~AF?L@^J]X;NPTDLJ7FΕE$U>/h_ָ)s`t>ٖℼ:vHR>}SĘ= XjfG}{缯ba"^UTȞMnZXmz+(@#FsA1>qwj|\}_dh &OI$ J`*ݚF6ܿa6Ze`׿iw>׏fޭsRwV؎1wOv*:?w$2).|:-k}<7BU[ +:M0)ՓG @hZMeZ>2I?9s+z>_\:s[, + b9C''X#XqN-Z1ۚ׼6FoOȣVP\V;$M7D+KS\kPakN `+Otl,m~qAzc-X]fPtH=ӬJlbmpJTZz {K;EsCqu YX o`E]D$=e!xx˙e0X6=btۮ^wk0 Z#c{_10433%Ụ^mA,ר*q|_KPһ*ԻguuyiyWU>lP~>C*ڒX::VV2GGG[cySs|OӲ2|'oJw>A;lYX]cY.P6rrj}As\zOR5]Q[,ބ7~+X4fW[Z/;X]L~An'kz_"WqL̳"+/mgqE.'tYb ͲQ[;]+JThVBYr%q1UM~ n|KqfQwALh𱮰1 2~)ſp'na z%G6\PI#j;9N|++ ػ1:PԱ?yxO"0:z1mv|H:?}6ѱGPm{?rc v:%bs,jw[oL{QH?7oKEH6(һZ>ab?ֿ4_KG֏S`ӾKB +dߏw +=7x ,eBWf*0G5 +0Ch\/辏gC[ms;/uymtFP^ҙ;pvmyQSqi 4JnYk$/ - _o0y_s8c<{{ֲ_ +'F姡߰I6uq0b?Yu_诙q= ~01(WQWR֭KBU%ӶLܞv6GTve4+V[l3i}{L72֗ 7ێߦm~a,2 +oSgwO.ǭY f |OP;PU(fS.?~Y9:N>uPrspUԎytH#}̈ \F)ۿfs߂Zes'Cm MIo\iM ?XmDDDDDDDDDDDDDDDDDDDDDDDDD({=g.\[®U)hRH߯z2;ab?[^gBk>pƶYs}j~ߴ3*8^-V+X(k^ L^ُ2Qrbu;: WRҡh|t쫍cV}X0co!-z%vbʛ঵!vvt/(7V5>/]< ZKzԶbJ2+ր#CUI*n%@Ұ5Wa@+>C:/H| {U<5K/WB?-wu%B A1s:FPnYZxۢ|z+ZP@ÿ;&u3 %r=  Z״_0b{F߯ 5{˹+Mz]lwTV'J*=FqL6N%<'S'[}3?*K8WDZ.V-IR-* 0oNlcR3n|z+Q 'g~5V?oYzw"y=?26Z&E-۰FK3*E)`S~c~OSI +A?>tܛq)fc%ďRñ/AۓPѰVȥ,+|@|;ꞾbyF+=w к}uKHG#+k` J'BSи +܂+^BWZpz^'L 1Jka(:mR6 ADЩOZֺ*Tvir"""""""""""""""""""""""" (dO_ί+2Dji|| +uwYB + `]A\Vfew"5$Ê=$DDJnVCtm5fkG_-)#_Q|\Z8͋ȶ2p֎Xrr.jȮY|HFB +\:^ I<W۟KȨuYvW`}||O.T6tt>T}jfPZC?"W%d7UTIeG{;pUkfK,0zGQnSFK71ܮLO}fplON~-xCkR_&ZTEB\d:E+[Ar!=w$.NUEiCX3p`. ;=LIXu0:7Q~]Uz.164}&|Hկȧ ư;l{}RKzڡ\Pyўb""'+t|/? i}?[\:ʳe„<Əzw깹Rm[TX*k]U^DDo6NUحUf6~%cFc)<C2c̬ +)`v|WRbgl=嵕YbAc`]vԱXVKYxG=ZAvu`Ue5&_-k)P6oL n*x׹~FRY`ڛkltα_N1ñ910'`7-S8uc3;l$6}I+ͻ tQqe؟IԔtwD$@uYAb7M3{.%كΠuCoii>m]*jax ['>7zmgsF(UB|l-{"EҺr U`h~.<߼[5^뙛]wWmGr?2aYUمIs[{u#Qz_Fvo[[rKlf[*nC z hvɜ p帵yGovpd96Α;IzLUv eya1QJ}6 bmˣͫ -h*P\G5뙫o3ʝ`͍n5:ǫ|o$ vVb}˝.2z+K־g3H^"=s<.^GM#ʮJ/5wt伆obQ4[nKdhئzGlf*i^M+!Max6v{{Tfg 6^S\Z!WDAr{/Z* bk>!u,2c࢐>fdtAS[e?V;*1{{s/Uߣ[lZ!zorOɦ[AXm}!H'I msLcsiVk*vP]$c @i{WWԨv!V͟62I ۶&(Ve}6)zX2\t{iwc3:}xhBe^Xf!O3O%#euȜƯ3R& l~>g`>{L ղmW]caYy[|&z^.Z8jm-:%GV!r̢++D@l2#3"X8m(!r޽勌U[b~I]2Uϐb5cںoꘝ[ b]dՌWֻ̨;]XuѲ)9̊T\v llk)[!.Zܝ Nb54}G0?,[lu'@0z88]I){vgԝ:'A{ŷmk'_Յf#(GH򰱮cݐ5Ʃ)e!J\Gud_nU5{*Oہ%AoF؍5Nk[gRjTWTcوֽ=u|1:M{e8a9:߶$(Sgsu$$o֤gb*I 4ɷtʑv祁Ƒ*{}z6 >ctշ 8u>޳kyVu2 T%q߼>UlBUOoى:g#u;YKpfYuYR3 2[ Y8' C;VVn?kdjSlJsqŻ#k˴hhV6KvLN+8|'\Hׯ^VNVK2QvAH. Ȓ;i3z= ",/z"v4P}6AJߎ+{2""  |n^J.*,tPBezwJ'G05` 9 i:b26?3v?1Px{ c׌Tۯ~u|/Kt4};L.V3;ݘt; *nTQYw+QJK47YkǶ6e`fQziOGƣ&̴R- =R[X7b3plhU:nݾ3&t;q%H"x4c#w@c167׶jz+Lu*&asN'g{#ګT22Fa,\+E)U6XS{xeg1x=;gmM5G9,p hCv/irV[f^%w!Iz,M4]jk`$t|Inl8뿿[bcVT̠fo.;ׯy!02&6Uq0P]S#`|-ExPTĕeq0;ylcػ]Gff,r P \XiQ^ױz|!nd=9ˊ9;+vw/&C8EvJ$hU#g^'z] @+Z (,[C$z§>UIGwB%:MeȽgfC$}xccً巓cjIE܍=U-*w$Y1J1devGRT!;'xnqɬiBhqӱߨz&%d2Մ0a ++yXn_>*vcUgD|(No6uA^Ŭ۳+ʼn^|?Cʭ jSO^=*E]. ;v=:&.=6Qĵv`bwd$쟜DSc0Rl[UN@9<k( `fOM'PRP> z|3!oro.r/!×j8``uP'!^se6VICA؎ٺUYbҙNլaH/-qLҰ\IFo#ؙ.`؉knuYv;缎uw0p VV@xcۼq.TVy +H: uzJ'GƪE`0O5k{q]y݉}ϑ; >ñklwrFY'1OM6]o@weբcm 0xT+ ](v;vB( wPGo iL@b8q߿|+y^YxH(#Dm^7JQV ҂ňlIsMF-4Y47̀@?[~Ƙ-b!쒿YhjFKnyv ֫;dv'.Z:j0쭽~WG J,lb8h㷬t[TA{b$R["Zev 1S$e*Q;E +-a + kXշܐ{Z?.C+=9߷F׷oiZz uA %6:?1=Ϲ^`,u!׷>yRzQ-{ݝr +R]0321&榰p ,jLxo}Oְig*,˼UMԭjAoc'XAe·>=.Z؍Tv&ooɿ; +r[YUbA`H O9dܖe +̪60daW"C޼n}f_B)sMS3ӓ{|h+Sw6X |9hK1)DZZعQf.$t;h1r BھZ)d$$=v7(<>kͫ.|8^hǮ܎r:qMv N#kϮje4^Rl8rpXHb%.2('"{cv?X:Q"wWmωh+[>.!K)$q$o f.6-65KjXvzGgZܘPBNλk#2u svRqB%t}wI1jr]K\0N@;irK++v5oXepC q;El#.|zpv#Gu[qԪ|*v*A'g`=eﶊ3<bR.@q6u{̌ ֝%Mֵa}7O9^=)TZ%^.V^%RšmA{צ=tE/+)/Dzʨ] !{y<,l0/iV䕛Es3~7y#o[-NgF6YnHgnM?dN_UJ˺TC=>#cukފli)m&ݵ߿:~ =JvjOmbl.94d^l+̶]+*VI7mޒLVz%1|M`"H-B4}' 5f6t9 +=I't:ECd5UJI#}«•/A]VX9w;v97~UPq_ hvt=>T״Ǜ7mdDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDo +4%b"""""""""""""""""""""""""""""""""""""""""-e6_f[;hlA'$jX12F7LwK-gL0޲'b`]K}n$1*u.^O3aoh/+yP֟<}?jƏK/}y᏾I.Ÿr6_ř Qxz?]kJKu 03;A+|>,Q?Q>W&_G +~&BuO1C +/= Bv&*]v{q$mq wO7޴6%~7|>,Q?Q>&_G +~#ҶbN`:?_v%>]?Ō8 03;A%~7ڗe/12>S._2yc6=L S'uqq/'0X?ٱ+yPe֟Ǐ/<}jYGGA_ԙ|)/Yȯ 0ޢ]đ,!gP0=P!}_/<}?iƏA_ԙ|)/YԹ}U/V̄ (D{A7xhvCxmq} 9#ސ/__#^>L>S&_ +~&Bu@Q~zH"`%>71*~yzKC R Jo9EH4}jy/_ԙ|)/Z*SeJY_T(aE#ޢ`K uqq.M`hzT_rw,ڇS}y᏾I.Ÿr6_ŏ*SeJYPX`!& *J,d89ljOxP 3Do:?~,Q?Q>W&_ +~#Ҷyգe9(rlkUAbldD@#Eimf//%؈}[Jų%N?  +߾i;DDDDDDDDOJ@xę}?ceR11r${mTYZfRɳ#jNzD~|ksG-|V81Ѐ[N俅snB-k}a|́l⻭l$u߿|+ު|L9vUb[d؊lc.:߷"ln8r]},Ăuӿi hk oH deIў}rNշUmV4Oex/]]۽ƽ7]b猎n\gWpve*}2!a۾1|/Ϸ\N~ޛԝcXbŨh V5j¯{2u(o;1[$ U~CWؓ^_:NZ34ZAu3eM}\1YI#ПOY;s:M}H~ R;<8}j&Wu5tp_1hi |FǴEf!Z?\M?/2υOe8fb]r0j,y1$7K}sdb􎡝}#WXZ@Z'#LoZ͛*ltGoIgKf7:^=Wޕ仛Uo/jHxd-j㕶kXn':v XEVlVʺ뼱Nxl A5v +6=?9:gRgR u ?_Mj+]]C2nEI]l(喺P[2;X(M?$OR/eKjPtKWv,"FccvEx6:·& =y#1@xɳWTvS×~ǎL Lʿ;8~_9{6YbUX>~2q-I[\&?~R~O&&A``RNBcu[TźUN; ){{I|KvQkA 1IaGWL + TǮ3^ x&ʧWj w3W%h#!-K +< ǐ޷^k;𮭽t{ʧ b1S +?#I鯭 + ($ljR݂I~S(.B5 _['0Wű=%hbz"]K.(`H{Hqzxf@F2'TM 4}>ԏQǶ_2ʃ0BBvܔNG̐grj<DZU,S\V6#;Yn̊eFuYsw%胣#ɛ5ޡ^j*ٌ3aHA͉7N.="arȅY{H{V"[mnR/ l}bj~ƺ.Tlj>zǭ}C-+hWF`bu<<Wm)\]@OvU~s?՞mM{ OmdJlJD7SlJ5y %,4=S_ԙdPJI+;+?c؜(z<,TH$}Z,$:y5Zu*}0*~;ObbTH+ q_RJ,+ɪV^EԠw[y]ؘ}65>kƛUb %zB_eO{Q=dq㱮'm=#_rDk+5op%EoK]WE^Lk'O x޵P^W0dVU҇y䪀߯ߗzM틗bt0PnU}@7KtWz1UUWܐ5{O]|GOY(A59Km QܩߨF!ǣlyT5oZ(q),ހ~f]HL iVG){*j}Det\ʺuԪStAC_}x3:˓.\iǮvZ,* /q#F˴6_ˎt{R#s3 +'Uڠ>Jc<;2Mv濾ڛUXֽNɹXƩīhڅ~i < Q}|rJjc9ntjKl+Skoz_tlKi)T732ܯ̚fqk, w~!tuBڴEuR7;7YN-jµoXNCL]ދw^T鸙=(*Xͅʎؤ;þe)j^]hE;:#Ǥqz{b*h>3!w׾'/2 *2 3P.  ^YX8Ȏo)yƧפѬorI+i?g$r1֚,t VQdÆjQ!I[ZauJUPYoDW܁`LOZ(0UAI`a ֺCQqV_3=՗{S5a_W{&5坑܌ ۝a{Zwp\˴ΡW-Kk! @d6kYP1~Xjk?Dc%:YFݨ՝!bNƀmĆ8tZ@j7a+B^k%W/bUSzk{L4\,\7_$^m[ E9Q>%Wz 94Uu4Xv6~Ͻ$z{/ʯ#)TN^`SMҲ(rFzԈuQ~A`PP6P˱˲eΟU_%`x my؋b` #3S*rP4=,,'nPc;驲**΀:Z+w@ܑ8QwDJWP+q{zhWL|MҤnrY]KrKT}kJW|G*# +r O~FĭkY +JlNV-2VY|tÑ47aԐ_wg[IձMc}/ YeH 0 Bֆ3/:DG-sMۚFoV1E>zz3>?:܄<KZ§~?Xyr"( )=UqսO_IN9*|yOwĸvV 1.5ikZf"[LňISluu.LXxn7fz&:vFE[YčS0ԅn=<+m%ql} aIkܙXأ mrރLQMC9'@[L| i?szOIWفF Y[XV`{{wHw'V쬎9o[\t}ȗ7r42vvPA:rRܷ=꺰ؘnF v>QKxh67D@#Ff`QqHСtzOړ&@x袔; +z}}qzv>Fk +{{mp}=8QZ(; 3-ѴF 3  ,6+`]^ǰ{KJ],JP2rG!txXڗѐR hwiS3`ڜr5O5ӱp`^{ٮ]R'տ{Otl+Q+crpQt#]̫t|6 Aklz@~z8խh !P]^Zt)*+o?VF:,`tu>ziDeN܊=&_ moGij?2@M/aR}AA>s+cέ[^hŪ*/MHƨVAZ$z3+CZAuz~):v:QqZz6=w} +ML9wַ޽, +:z8v{Iēe70&%K%@mR}; R G3_^J8Hl=Z|\ykz[:V.R%vTS\F^;zO#PKB(V?25a7=gqkRtj[pw--W;N_^.ft~$r#cGGcW"VVʋT!Go+13GTΉFF2b""Y[( +>-ȕ1׾䈘tL!Sb~ޛ׮O, ZEbʥ' k˟r>2BqֵR$o0iSneJcV֡UTz Hɴ_e(:rv>R*}#X5+߷zܹӱ޻.]$#dod3u[.3TJV!t ۱|GHXư%~Ukjgb~#nV%[0RRxAw3[]K"=;/ϴm(R=~I>'+*9 |;jE{>`__i%$-eQd(>]};[Ԟgk粻;6hz6-y&ڕ ^r$Gq4~s^qC+#`3 t,5^`xT L0,}G)Ҭz? ҟ](cjK}i*"[ؘٝ?\`:oFS೵eȢۯx= #s1EM@[zEӢaWO/.]=eG+IS&cctl7{)TnGs-07WJBAZӥbWyZPZw8g޽f/G>/D@4A'~so0SϑfN)zwO:.h-o 7*h݈moVUv6]-T'mzw޻)zxة."ܮ/[c݃4m{8-fǰNAsɮhyY=3[eVTS\xV–׷t|O0/JdkhyC_YfܾW_tl۳]g H {odn<;wkvF†$ $mlk:GVlGjXqIJ7驸'iߚ'T些oJ$vOR2c?"۱YS-NcZ}q:[RO`Z w{ ӺՙpEɬ-p}}|׾v-q$z/n従uAmͽԧtT8aFrCxk/7ΡsՆ卢~C}&x/> rH[1EC6\˦;KYO0v&X탕WDʈ(ʼRBĝvr ]TivPZױ̳F„lN_r^w:Lx˪ Ceb%Y|*T1\,au||ƶfڌ7GǾLzjUS[f 1C:_S[Kh ԂgDDHfOQtP(\vVC}%""""""""""""""""""""&wGدw#T1Ðm2?3@Ԭ[_~+9߁[^j55P/2,v)k>j[v Sw n;הSu* +Cv2>C ZRjCo$~foj?:B<޲FSmZO*MQ<*Z\eůau۔” ]#@|c^W3zwYՋK-*ՓY` ޓjGT虭]|[Hu;o,#G׷)8/ES]^QˉPZ֦:^֮6tyG#^f54Ÿ__o[޷m"x;z iv~+c'cGsGOJn y*%v K "}&.4Wۮ4O}HN6Nq0û̯ T?j,]7@p>eٙ#KN+OѲO3VdXZЂU:Ql04c_Kx.knï,6~+3wb<ƺBJ01v-AKNU{ Y@1zgH똤XU,AS([ߤ~+ܫm!njm(s +]B&*?^Wu]F#W`}-#'DWWjdeCֿYq«rfwXD@疴FW}jō|GГ|IGTlE1kKIB: 12 +<^krփ`:&X"}99KSkF'`hM8uf@ËYh+vPLlwDv4BX<ǖB[G{&md5ܸ䌅Xoݵݤ +o*mvW{!:-2q(ϮEVkd"Y9<\¶Kx\1_.|&GQ{s1:ek}=ث~rT V'A9AY ]o3|=^Z\\t%A }e==\ F*c|@;#<2(\ͷ-ϐTℱJGYO3[З%u+sSwh$~R +RVR;y^+xcWfE&vՖW Mu@*3JO` kWOT͢15`,O + =ο%`^iD?чs(oJt|\t*:B4=uH;xGHֺ_9pm6 uO"۬WuN`^hBr}L> v*+)-B.syY`صdL饪+,RUr$nJ{nkEyko@6UtCjsY.,.>ۘ]R:=d @6U-̻-=C+m=VVwd<]X떷k_ut,9+ شXց}[+9<\{|T,ĝ?vm#?DeMµ;Rñ#fDDDDDDDDDDDDDDDDDDDDDDDDDDDDGnk{ڶ+TJ@,sR~z6kW~T/'iK׍|?!ǡR+k[TPu2%0ǭX,>FV*$lyin-ڊAkR^.YUX:%A#~ߦ(T25!\[SxӾ](u-qhwzYƘ(,>Dy{}&GBq]hhhkCk鸴(nǮȬ@ m+ZƔ>@hJ[R^C+ @ Y鸸=տ^v%9+F#в?!qjD5(CP׶-Wұ)F(#&P28JURwP= Kp+Fee GH؞ǯZ*I!T(=̳oJľu34Z3z#s%:a}A% _O_I^#ZԭxTT`(װ];]5BG&&\W{ĩoîU`}(8Gִk +W_7B:]k$3*U +Ts<cZ^>s4Ցr[s00,[7{3+0tAQ3YeCXP޿ȧey)S?9pjˍ5Tyo~ Oq̛%7SgJR Ws'3j׫z\`uJ4 ߄mc9'32cفM9/1&>6M)+;(Vp?`?f2*(-m=`RbYRCƬJx5ШY^EGګ_K9-3C5v˱uy 0>c=wViGZGGƳmbΕ"{^oH+0e?J'M2um3| +Ӷf= +.ԲʼѫV +vk!TEv`WЩ*ܴe$hqݖ˜i1.OBpSǰnv׿ǯ +z.DDDDDDDDDDDDDDDDDDDDDDDDDDDO?,0:Mk=DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDH+njVV"#CۦfLAkDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDH+OԒ#Eimf//ŖCr@zhgcH)<ױ%`cz,iRBIe͡Kjۨ=~9v @ Gbz>)WIh#Gi3q']6Ϋݍ/}kї}:zӌ/,>~fLtLg¦yhm$ηoI#A7WZInǿy2+RX Z?9!K0**Ƞw Oޝ H>(W\oh#|Gkw Σ}_K_m"^fg㋕tk:mQĕlo0]&sն朂k R[Yں)6%؈ec,!(#rgmq벗eV]`uk1o=c{UrY$lZOdNϯUW؁FAfLDD`eb""""P;DDDDDDDDDDDDDDDDDDD?c_JD#DgLU'~g[*RFĻ)4`[΢: +M.eKQ3xͧ^E 2_1"(Uɋi&gvUQܟO=?u0PԂŔA˘[5)1U jIu#cĻV}KumXz/WՊZꀝm(gRl#feo!yV0\xå_N]˨OwZ7hX$v>c؃nE + 3hvc2|skU. l20.ck۲,>-Lޝ +(;b}؟-mcnJ"_"TGD +.uN>}s:J1[Z +a\W,ffӁ_s]='@>w1z>ku.C뒝vr-ecWSU`ڰD{2iCm sBA?\3fQKB6 .pњς|{u|^tZ$C3- YNC"#Z޿ gᄐZX"(3>d1sl}Yß q޹q`1ՋsHEٴN$oq"<st22]ؐK(iȌ b͖9;Wͼ6Hw>\Ip7{zx;o~+1:-8W8xeDDDDDDDD7cb\``FrrIБ +x{̱rr3aSɧUkL<}Y&co +qzEafNE*y0JνHDcU7j@noLl +91]}[9ӛ2EBj|Bpey31צwgыN'CX8Z:m{ͫ/aWJP{ܞ:=5)c\_`g~t%ecĥ#ڐV@q1UXݒ@+frF;$|?Wiw] +?ވ/;shHuMY;-d#WN3o;dAR[G=S(İBl7N_wNӃUkp8ܻ \um*ybt΢}nKQ]wJ{ K/9ڰs)*@nYgڙy#c[2o?30p~yٲ̏5ul ߆:Wy^ŇWzRu,o]JF rJWR*Fe|8u)K/n|Ja}`j_5õ)K%U:Q<{iwQ>qnrCeMW:7/x^ǻ`;fl: $PI>@u| ݫ+L'yIȯk#gA>HnXQn]zP<4BuRMZk!Fi3/#" ta_P3Iv}fm/,,{jj*c7U#6_JHi rŴ~TՓ{be%|̪Bk- NK\T8 X4 qcߴ³Tq6pt+Ev :HL{l^yx5c֬TOafdW|(Յ5lvyM;%;WV&FoĢr M@}ewhulEeP+;h(>]~^%S+5T.߉Fz@ ';lYJuejFʛAkаhNv&I)Ub~%FU?/yu\T9@C⧶C_"}'|K:un Ŝwu۱Ԏ3ɶ$lZ!Fhw̢]wFj'CNΧUY.J@;ocߴ̈>%vǿwb -"IoO$""""""%Ltk,`YrIW뷦nNU UNN5MjO9ԝ?|#={~H㾏PKWS a~ُ[d,ew'zLB>EMđ۶Z?TWJRܝ,UPs@(],dE32(:My]*WIrC6v3b"yf6Nju6W!+{QM)JHI0z7KneGCaQŎ~މ~~%yChQFPq)]iRE +-s.V.X7 Z5:St1ʶI$_]rxUB{ K@vF#~EQ\oMby}sPsb7R^"PoQg3 3i[-4{cShǿί(8 I^dD6X{Hׯ]YWP';cLlI&d準'_i[+(r4[]oZ=Q,ޒlu18(?/QO0¡T Oeшwug;;;'2` ^)_"*ke%mB_U]uM #z!G HB8Ł{LnWp]b*24ܑ%;J5hXb$"xJk*,vH匞^U\ }P>u<{XQ,w YI=W̏]_ĿQ}KH<6C^{];MRۑ48^~ۗe-vZtO3=3U8p:,=IH{b_ 2b -evC<mDDDDDDKJ^X̫Ut fĮV%Y7"8+ "$yH) n:S翔_UjpqCV{C Oc5Jb,wִ=d$SBYYŴ7p#hxw>FcR_~!pЍ<-xz E*dsHwVMɘ6&7XljXȺSkCjX#ȁcfu+%jw8.79 #糹;n^g +Dj܌ˉ[bĂ ycչ #P;lm.fP,  +cᕑHcAGݘڼ]PF:?\_BdX6>aJb +`pER'm|* z""""y5w=q?UT @ ;%e ? hw`-B DܟRIeӱUVf3z:O1mm˕,gm2kDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDL>be@,gm3/jkԗb""""""""""""""""""""""""""""""""""""""""""""""ao`1α2?V M_܉e0銿l_zv8Oٯ_.*:o۫4ޜNQu+ot~ڟ=}UO2uTb C_ᘿ|+߷WixӸWh韫qnV_~tr۫_<mOLb LO~؟=}?_|}/n?W~GM?qnҿwq9G ΞMj g__i?{ _nL?qnc~GM?qnңtr۫Q:y7G2vpOmOជW?i?W1W3 oc}߷i_|3n?TuNQuƕ?mOgu|#fSeGU?*?>?cGK[}ƕ ?TuNc_~tnۓeGZ??Tu|#fSgg_'_O}_f7K]}ƕ韫qn?V_G^?WO??TujSeGW?i?zLUb XeGP?Wٯ^K8!'`D>#(@#Fb??P|Vړ%>Ҕ~ԟ2>O xY,I CkS_%K?SN-WiqRRjD=Ҕ~ҟ2>G?`<p Oا/J}?SNjkOW 1F?i?d}iD~} +ğ_~k_Sf!/WkrpjkOړ%Ub&1}<%'L?b?>G c_#v/`G?5Sv) s1zk_~a~֟/0LsѰ-?'KE~(vC~?5PS_'_JKZ'?'KFLcyģ :?'GGt(pq _=;pW O_JKZz> -OIqpZjOJ?jOӏ<k,8' `(zv) s1zk_=+ Zړ%Ub&9a~ֿ)# \Vړ%>RS%>O* VAM`=:)+)4O]>V^BUU/uLdYze_9kɲ]u"Zd; 5n\^0dVi>rO}kmzu^̕?ƠFV(L:WH;bS3NSں5(-3f׮&쿥|o6:sEw_PDqތm-}Gu-KVezy2um EHܻPy1:6lJ[e%;<C#22cSTG?þ 7 ,5c[ao\KRHfuNoWBOY]W KTkN1#3==%|v6ZX}IQhbŗcc6&tDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD(N:'N60zW[UHs2X%G؝kJ{R*k<!뚚!/މuc_n"zOt&W$yȻ+ ^8_euy*/e#!WAԿ8V_eE5B8URG^J떞XOheH$M["qz/Bᑀ _!ze;Uܭx0?-ߩ:@qՅ=M[jX6dGV7"t)QdjRkUhG.32zFBYsVV9/.G>e)֣P/`c5+w QIu+jV""""""""""""""""""""""""""""""""""""""""YIdԬlU 뗯agÝrc&ICiu+z-R׭O01RCbHD_Q1|;K7Zky~ީA0:gǂ +w}$DMqǖsXΥm!Ob?X3"""$6']3`7l~Tƥ yZ6R[qx{$q3ՀBW'yo:'ffb"%%b"`0c+5L=ʁQQΞ,*ɀFζO繋sߒ]C!g]e_n?G]tndUo5~@65{w3$b""aۜhʮ[TokP;̈"Gے.ZԝB6{R5NOO8J' +/gj֊v),u#s Ŷ|kQ]! wpY̡L6TэXe,;/=7dimM_ݜUKh h%v= fxSFV_fu_Y;1z:>sن-2ψ2JW=#EqU+ذБ2ký-\|eiUܙmxw3TCScn6MSVFVtxm׼ͷ۶ƾc}-dx9NKu)G3zmܦ?uIH%͘~)sm|OtGI'1lZ^NeT'X96w{|2AÂ&Ά;gpϷ-uWcXϭ=ʩ۸R}dav Ϳ!.~=J~VeO"}":&lޓ]N1sw̾AdZCXN˔O5(K֢g}qgU`Hl~_O+Tk嫰;97Ԯ/T?޸N'NEyn6FԂ6=GiTSo{*fw[w$FBRYRv3S3=~6h#3&=k-ot ܓ'bP +$V@Z(d`A*YWt?S#a4uނqrC|?zwkĩ,G]bka-cBUy huۼ=G-1~ol&s{_J`_mŲ`_1\s}>kkZ_(+͒h!?60rkxݾ_{s\ak9mq%; ZL g*,κ%)mocd{;?k(鮰盇5,۟QMk"irTrF'/51 !&ۅkVnV^5NW(fxT܎J_rv]Mx]v5eɋc'eE§&߷G3/*r= ~щpZWֵz<6>'2^EEZ+ eG߬ʑsij,\!M!Ngg}N@ۯ:F٘xۋ(ɱ\0 0.鎁I >oGjV 1@;G1F;Tu㳯[Rd21zOP\סA//]}ZB3Cs +U@~%}ywf~KX"]Dlv>:'RuFfՐYA։#Z1|9@1 ߐ.}|vA!'r[Z\o"˹qo*~au-ߎ7w((_/h +X\{qؐ,Б7;V:O8yɶTnC ɀ v]覶C~Mz]z1⠳botk.}lưG^FfjnٸI ^ڒ)">m`"kުʅ,؆*Yv{$}ZOzm +I:U؝Of/F6vVWH=T#[v-NMw ^=x/U+eU6^; 厏gM2J)G-@ڊ`=e1:*`^bi\jXTxzn~%6* dvODVF{V/6^qܫVhpF7"I>Y(O-t /eOz +]9Eԧ6mA=RZ9 +}}L~õʐ3<|FUvdR;+TKUb`0=A'M\{ m] +.WEl볊- 䒥IQAD!hecEj*@ :Tkcx}:_~1k-kk đFfB9!KVhl4@}gنVˏIl(:s3&q1mZكiM[\o쎂UUK+wU T!$=^Zɫ"!J&Py$I:à+x0/^Fz}ZB'j(Pe;b}XLz=nKg_oX3ŸY96\ja~.b=u3'utű{zK;txzo9,X.jC["0:fK!ַ6R;_8 +[n|;%\'\xk-LDDDDDDDD)XԬDJjVR%b"%5+))+Jj%b"RV%5)XjV"""SRp~'Q+)Xr(f:}S*}b4|JaS+/k*luH(=$Wfm0Q[.KPڵVc_mnޚ_;SřEKB1 +ֶz6HqgYkf5:#}=S[Xk +؋&[ZqۼճGНV̊f +(#o[AF_5kfgu~똇̶urY ++{LzKE.8 Xx ++zy='1`=L71zoN.BaW5#dzr&W1,v+p5nKhU#mcw=j_ezW` +wCDަx +ښxWc%0:n{{{wCuucߔkCcܓ'Cr&^Ε]k%}ԒYu +V[6~â>F0.s: o]c@:$G@n̏JndRnc6}=?Apڜ-jA{IY$j +z%Ǡw=$&EkelYC)lKe&#slVd moNݷLa6lJ-QN[,oa״,|K6Ә_l뾵$2l+(e`v#`27?X>ǭ(;9g^Vxmb9{uԼQ^7Nʭ,@!dՊ|%~/qseֈ{zaeЌF]w|J VS`%߷[v=gdPb\VcEEzGY}noεGs3z[T|Ocͣ\nxS= JkoZD3`UPDQɻ3V1S|Dzv5Q}5UD_R?zE{1m~-MVP;jzd J!?clSVd&V31*g&Kĝ5Wu +Si@J|q ggc[WN|' oD%szoPU]R2nv;C{L̷1&Jǖ+,ջ=|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDFQЍL^ӫUrՔue`^R̼VBB7~SQЍGDFVP=%e4%e4#BVSQ֣[FZol|\(9wEZRտZ #A~G!oâ# "u:飓6EݴK!˷N,E`D{ (Lj'=f&5y5GV*#۸33~%`WӔD@)IΧ~u6D{,d%Ok! +Gr~!::5jq%1`e/Vlt9d.EC[b7^]imLUB2DDDDDDDDDDH~/ +0ev="#/V#eJYoxæ,[ط,l;sQMDDDDDDDDDDDDDDDDDDDD({ŝ/#Y==v]#oz_RWܫvAfQZ q[,P~b>"/R>s6%7+)ܬDDDD<gPuLe' %Ծ&}yu0du Ѓ=H#D6ONa;?=&\OU`[Oj=AR4I#yy2^Bե0iyhC/tɶ|&dN]wmhv0W=PGދ ;12c=}bk +7̇So9lOr@{Mbu._QTد]؏pHbxƭsE,6L˽)B"jGdcg*j9{K7+nVw M~l8֭MU% MCC뗏Ve S2WGN}waܞۛ>z<9kȉIzNM}Rnj4<+*;օPiѺw +tjG}@?0jlTcu51 Q\|QҲ23y);2 Ł26+GRv]vQZcmv$duSQoE{ܖU/jt7@,v_)#nZЪU}}|o?VU~UOH +<}v'CLFl=}3U1W_pɵtٶU@ dlwpNOZ`oԍ1Q[ق_ߌ/1:u; ,H{b pTYe#7V^lsE䷧}>chm˸H{S[aIWIHf[jtG+evؾգ}LDz_i'V )M*h/SLLS%N;Vmm~,U-@ÐaPA Dƣ`XWBQٻ?Y$NEbxfbߏplҿ`pImWRc7Q8eyhd`[1/5ӄC][' c]#C:y-U\m#"znw<:,h37}ĒXoD HE9VQb"ܒX< 8-Ewߎ}d|>EL־]玃n=.]G\HWْqUT ײ}u503:66mVǩ3"Z*U@ϿA_ *Q_=H$55lt_dcKdt|LClR_K/)mkaP+_wT;3VMdhԧ=] v֥m[R@Z,ޏ2z댇˿;,t7Ϯ}.=kZ *P>@ .DDDDDDDDDMy<*+]؀:G޵ݮwc~{_PP$E,: +ԀO$w$DDDDDJOVmFPIR9Qbx,WԳQy3h=ge$ײIOlU`egU +yK>}G~twͣ k}J4%V"%%b""""RV"%7#:AOTuU)}LOk\Q-ƿ7`gP+'"V 8p68z6oIYMJDDDDDDDJjV"""""""""_^j6 fœJ֥y.^r־%8S[͍8(^}%t=YkQrYe[Mt91C;'Ӹ}2+xl%Ȍa +~%۩ѺYp{Tuhc[KPՒs5vbPUQORdDDDDDDS\n.Fszh'˴hlH+hgdz}I`Glg٤U/dMK +e_o^Z߼X8ȴ!abpcu:(^j?V'vR<{kQ+js9v@>CIȈNfwPUYuXDT'LNݷ]1Qs_?nݨ""?, +urv'kc,`T8eTdR9@68g3&Gݝ,DmC_{s@}7R^""""""""""""""""""" ;џghbEխx۠z= +lޠM; hvC<}tbw:2[)iZ̜<1JImR_n A2nk>Qi8qbwhkm'}{̓jKA~=gQ:V5lkv},4TY?;|$RGq \qZ  ,$~ۦaӌֺ$z,bWͷ361V:^\!Ay~R""""""""" c VXgű:#ݾ]gұorJRGyΏR/#2v`bwZnIgO"ZGwzG:wӫD^ ٲ=r>өCdTȖ rPxˊ=jHDDDDDDDDDDDDDDDDDDDn7+ Vmü*>SXHMivگ®1pX\|*lI- +O5z}kmo[狂;҂~LDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@-d]z,ULt7=xaeZXii9z~_*13eOKV#59(ߧĬD˯>*;K]Ob_b""""""%7+)+)+(D"ûKq R ?.J_KGPЃ/hWNH✘]}L⮩oFRG4Xr BR}헃ӭiw.+) \AGHC`Uf*'.u,֌SO=:&' /^&MV+bPu>R+(l 櫫rH#{ tu=#=Rij^m6VkӐ >RԐm(;[~Fd2͹V9^DU#Gfu /SN:R[n 2s +kE+,u5\DZDK_I=o!_>>b%%b$'zGI:<2X]>s`t\nB,h^|v]]J/p& oKwv::?.DeFsZOI}GS\]F~V +Ɉ1z"MmgoG_Mq2DB>m;aۼ{z>rJDDE9T]F x{{ӯ*_ 'n>ݻ;"k0kʟ/j612) .\иTf.Ơo } OxcoMgt^,[[eK:ΒUޜ;4 %hؠ̦lF$;ub'"-8z*w>ۙ8}38jrRJ_f'׿b}& uϢuoմJiVeEuvo\xTk{v܊9Y; ΨߓyH+?Q'd{bvk:} mMABr;~~eRᑙJ`}qLSR>U5,66@-:,p+$s^7(#D玃fv5֝Ҍ@l߰}9}U= extmoagCuXNMv%~L.'5=TIF6Om[+Ev 1>ctNkަځL4iճkSYlg\q1ޗ_)H/.&ٝBޤ5ۊ?!m96 ,2+nMSX}f8 '&Jckh2V@>?S4ך}w?tvk]{ ö) sEؕ1imd0_ ݇'Q@jxɫTE,*f/Eꃬ%HY;+聮Z|uK:[R%`#;V}^yt7_D];I "Ͳ2H`A{~ , /߮ɫ*E*TdvT 57:2rXa}'^r"Yħ5 wֶ) (a wN6"p8atSҭGcZ*a??B]7邎]66m2Z +vn?>; `\/#A5X*$Or?ipN :sۻ~!>&lV-t=9܅ +]f&{]RyӋҿQ'2Ŷ+w_FdDr趐 w+ ]UW(/vp{q$(_](tUR G#: vEq TԖ="lTŴ- +Ҁ`hL~h||zMed".}vZv6Z粆*8y5hW# GBN X1jC][0؞q0hO.]g~F"̧gmP7șsX-]AP\bPkjMjUEA  IY l ,XRF(ͥ +Xu܏x=<`Q_K$(@>?E.l"1qT<۶vm.ܫGKxvv$eY_$6(""""""""" @ =DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@WQJz +*k5M|g2K+ebQ[X1,=$c]nuzfϲcg71r|IQ>MJ_"Y8Tp7#ˊTyWY{Y H-W]c?{}RMqzj!n&W;w"9zI#d"#7}BYFN='LJ)YWz 'd[OreWZ++PARͽmZٰCo}*5Llj+Z^*~{,q X =[QFCdYͷț]R5gS>"""""""""""""""""""""""""""""""""&:3UF'@\ V nCGkJؕhdHd!Gd9/$<-]r\)+yUϋ`@j6DJ ;""""xԤrs;SoԳ|Xu=DDKK[W}>_#v""""" \C- +rmn=]O?:+ɲ&= xQiBZO[@k5% +d(嚳KQ? CL\1-Ljkke,+RBf,@gC.WVΫ`t!db?fDeJv +$LUj\у)AQJMWxyC%i3ZQkTr;'^GaԳ3榺yw&j'k2t?vy7O3Ǘ-:E~*MPWLH\ =ܬk6ט>;܍ <p}vop4~`u\1[V@2ҶA3 l{Rȵ( +H=XmoV H~;uM ?}dL.SÝ>/+{r=N{Ax{ԥxclrNNP<O_Ԓ{}GO׉{-bV ]I'ө##-FChDw>%7:D2f(T7@ Ký&tlI=2M6`Hdgġ`d @Ԃ>cUE«rԶRWnZf$?_# sF&]+`~nLJDDDD@>_Xf4d߰GB, k0]O{kA{ˀGooLd?$eZ]u-Hݜ+~ҏ]l]*{#\VW`m(䀞dIުCo$_:EX%MC;rk:񸊱.`֓يmetaɮrO9|[3<;5j* gXvb40#_ӛ!ƭتkd8?똝Kf#ͧׯy QU&6kcΘʤ$6nsbcdޠ}oF," Iv"Zý?Ų@e;dB9=z,{QӀ 7hmKE2:Kl_0-KͶ`6˝?eZ=d2^,fk'`7~ۘgfpk4k~-Wgn=JkOWG?RSrU[  5ឝ[ +P|=uIX=*7K>i5gg%xOQy#kk7Ļeb*ބ~[ëxjF̍/,5G7>>;ӱŭ]Q``xy_P+)PE|<>}wRωp_\q>FB^bAn@hKѱkڑ[ek݋{O=W?33aVb~uµlB2s\%U\s7>*uSXzVv[F.oN{ScfM;/!ɛkGU KࣵH8]j$RTOrINgPKN(x<0%LN.%ʯwОh=xZ{Y'de;;cfbIw$Y{6cXɘ~)kO0їEuTo[gqeuFڼYʪ>l!vng$Ī&EBr؝kZ10:Uˁe^G)j;w&r輪eT#>8ƽs]%~I +^R, 驎037LLFTzJ]d' ߧ$C7C* 6)[y;7,tg.ɲ\ +,[ՙkև.e*T2\JDDDD@;Q C+=#b_RŸ4_[-n 1a\B +`'\déjMQf5mX#HeE vΖ2lAt8CqvykʦbR V9#ЃeqjO.'@hlv"%!JXa v3A9kfW#S8٪܍7c+W t:ڞvlJWJ*(ޕF>zY|J\X? mwz%jG@~!|/淭뗓 !˕ +6{*{&PǤDJYB71MuÓPN{TʎJ]:ޏסfΛmB8EI8V$iLl:MMBXx9wMvZ֏♲-6=lƒN$l.tgH^X4dOЙ5v(e`CAMJW\(Pt4; ->-N]PJ';\gOǵfIaiS[\T*='gC{lRDDDDD@M -vQvt?{|:xN?s &*{`Tߓh}~A:>r>'R U Lc{W(l0>ɋGEYЋJAM-i]` v{cdDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD,We:mH=7պfvGKYUS+wf+7stUBUOINvn%o.u߈ ۫cIs-v;XE$3RPN'nAA^M. :;K-zV9Ҩ$=6guC) }稉cך[.T s)`m^ML@) |CJ loK-d%mc+9O?oG9*®L|3oU3󩇫߇;&B8ڇ?>NY)n̛+ǯ`JzGLjx" 4>^#+CP$ /00ns + JJggLLJ:Z꙾ZSՎ$^v7L{Iç3CVШ,#k}/miR@UNlȄ2 +,Tχ- @&w+)K-Jg`z@*w }5?OGj3u,*#,UVt<ӲK=u$q09ZBQ`b#ruSY@d^ː6@$LkeT%y-2egk&g]DDDDDDDDNu<ޙVd=!7*O8?݆G;7sm{vćaID@-dVʖ؎ΡI^D]V?9~?/;%޵+M|Wq0S۲*NJ=>;ÞNZF[)ڨ*۶#w'b$/z}c8iq'YHRݹ[רϝ֙eWbq;)f҃N}=7"Qz$&Ǡ ,"p7Hfu{2z=VJ858~w]~^bՕM@:GR.>uU,Uu!.`Y=Hש#zgVܜ"zu]._~|Wg½$3?Aƚnʡ}>ze=K(]LrOyqrvOU`oЎ#|/,=G +弳+`hk\0{Z +f31𳥪FݽfZۯL~OP(!R?_~)ұzJ9 z=79WNT>X1E +4&OAEEne#VEf`TCvM31{pQ6:P-z`e~;_pUX ww۴t.JlÚe3i˿&fThUayW~g=u"dZ+^J3-`WlH>Z:rfbU黰SUECI''cSU9J@k*~{Oţ_s7;!|ʶ8*XSA /cg2*K;0c tN$Bk rz3a}n/=[f^@tۮ[n,vCߴԲ62l]"b +cOs1.۬["V d@hsn.c*uVn? +N3:WR˥49TaT `Kx^oQN-\x5i:?:鷧mreGRw2먶=bҗţ;KӼDDDDDDDN>ǡu>Cؐ'4>꿨r?i<Ļ }m[0`Ub6IDD@<[`YA'=Ahx0ƿ531>ɏXƱ=;;|z[?Yѫc2}l$\D/5;Kw +4?DY˒)m<{T +1 u^D(?W_ǦⰬSU6FdD)V jZ ŷNjUJ̃J&RG:;S~.+W"mXS㱖qV6oV5kH};[.-xuU/Q>v"'jKԣea#A>#;޷oE85Q@.KmEmjl|瓉SZRCr +{.ï!wu9dٌv=y(kUTԪ=@U`؈lmR?!&yE_-mK +(%NԐC BVŕ@'Ԁ?i2<ҷA߶=gL<~Ev޹}o[1kB-Oq 7flWZ ;>^13"%eLjK;GS6>1Y6/2V`4ŔHLΈRN6e&j1Ap,Ue<.3Mx4[mu]`}Yj`{4?T8֊l%U@%G; oJ UrWϧpׯYͪ^Aȱ=6Pn]_Ս6*FWZ;M"""""""""""""""""""""""""""""""""<OQ)4xFM"j:a|YK\׮I͝]ra33:(]vA {`x/-n,97a{~1rr;!wЩ%)`y +$_0Yf= r*l(f?"w%s?NeKXpJYaԄ@NKygԷR>4{b%ηZ+vUc1z.`fcnYlQ ۷ijt얭kɭtw~Ƿi'b;#%?Vuk`(!{|Ecbz?-bul|jвA\G&FN7UOh89Gr>pkkm`K1:S1sl1oY`=J&׺N jJx3#-0:!}5'UNvMULԓvgUg~e_%u !<%,|nM-meRBeapF[Uу)(^W*=UA# 4>tt{j'K5S$3_YƋ-c! ;NzI97}/:v.Qw꘽:Z +,r2@a1:T5g rʲHal|rC+>O}W I + $$OZ=+5SM(P|,?ї?^IJZM6yl޽jUW~6`\̜ہ+bn;:'9]s ڻm}%|Uҳ1m}I>Kr"؇j{J<[gS.ZT Xp4;$7NeK`HUV;}z+`eo{{0qz~NmNPcDUGr=f_J5u +̪#I#{q鋑nmUäB~&W]¹.tHi5k$p  Vry0e":  Xȯˑm3}9掷 +F4 = XA: +vUYǛVXuY;+>Yٔ39oCGcM6 + H7gm4juX;My}s mr8*oeIs#cb֖lkT}Ky-é$l|y|EOK{<ֱ:1=-žVX\T.f!BjވJWs]6`S0 we_k@ߧ&D܏,^r1`޸N)E M\ys㯞>]nyhz!a2q <`onecܖuKr+B߯}=x֪ˀ(G3Sc^}_A %~a`OoIbu'j3(2`6>fz~ m:!_^X_Q2<\75hx5o9*Pv=Ffup]if;b{~g_Bt,ZRQc^9d*=ދkD﹓Oc}Hωv}v4AmiװWp,ąe @n$1 bPZXW̨ {eU[qpu?"=%֭Ih%7aT>4{!z?Wu:/:LρY«6Byo jk/E[Fb~w=:=7&;آ~]ɯ +6I繮%\\).g[qi.6[öʄ HЗpzJeC>=ToЉUL>w9_mw'\ץk' +?voZw\=% .~zKU kȝX_:xKpt46|>ݝ)v?PoeyyKGABȻI#D7r^\Qwϒa C v{0:ugZcZ槼71|y.y /?xB1#0:=o=vx-j-Lo$خO:EXԯamc6G{zI ,h5}k!Nۯys!?T,sCpv+dQ`tO+6\sڭCnyMX|=Iy  =2YA$^ 권ZSlN6rDfjrF:Y[cZܼVt9pwdB '-99EbroYB?CW`&,tm$5L,K1?2mCY~@Fʮ ;$uxWwEJ6GLgL+uG,K6}3L +'Eƕ #a +aӋ]ͧʄeg{LP^*'|K3G1#]K\=;dћ[g-?ڼ}mB;iLŷB>Mx9ܵkZ9qd)3cVŹkcG +@՗^ZZt~ѻGaKјs +nZ])WϕaN`1p)BZYTPBt@$g_EU)N6^ڐ +;qz.ƠKvŷIy +{]2oQ!bߛ5+qm]Pӝ׼^oXk> ea 2wp>r^.̓eW(*ϰfbuH:'56=9LFe=WcY೨.] +=WKzV4zud:^~f]V-[\Lb H jn} hZk@ A~0q~|*Oi^~ 4[_ ę;}F]z·~-cL=n!NqA( ^oi?J1mK=;K2~k|rߋ55)!OnF½А&ϒG& ?oZѳ\Z +$}"(u+\7Ǐ~$k$\/`7lwqzC-ykC}3VXZ+m>>cat|tZ) +ͮv}״{|R 鱫K>Ŀ9j8R ?CIFsuΡ_]\Qfjhq$N5TtS)c=<“+DoLtQ@UCcU5f {N+z)0n=?!ũ31E,H;c<)95sctl2M4Y>T_t)V N]h'e8}CnWMHwUNv=)ӱ+5R"D[sD(< +YqP7f:-U F-J%FN;k[§=<]wkc{\\ZWRQOe+[TAFm#gz>:S~U2S2.I'zg0="tْ(Je7>j*^L#[%AܬDDDDDDO68K1I'zm ޶D} 뾈NRQlW~_lߓ^JF"gDDLT4ْ1+WaŴ֏eDDDD@9%67jOs;g:~9 <\Nw@ 8ڠ={M̝Mgxcf݋Zq ]{R aۑ]f7uVQU%CX.Aj+tze;f33F1TRO,V\K2+NN6!4]H'y ۰1iAJluÿSWW~*/RJ^+:e:^:Vn/R-+?$į }v7Jx 9~#mzL3zC=D[ck(6T(bX0߷oxצUHF A4=fCy!ǭXZS5Y?,& mybrZ_r='J>rEWb\QԾh^,̂O1]MGj5?d-4YdW[S~I)F6~9c]l|  `FDŽֵ[ +)p 6!ȜvoQn^:mCm"nI'}e(,KgE_'ǿ}g_#Y.Bqr\@}AKYuTt}'}6 M'- fCXЏSL_YU [igJ5mZs$ungoϭJƵ:-`nÿaLdk~^J[Y{vbN?eKF;U+ Ai/Ucn+rBOBޟvۖc$(#u|,ls^Vq+S 3sQ}8ئ-kw6oA3cWYxgb zoydwIosgt.XKVV6yAd{jc_[OTI2Ê'`4x܏E93^ +:1W R@tq#7叢ӓBjVv%O}'9>!#*|e[Y)G^n}]rggO|zʹԈhYHu%ddSW#_qL}s7N[Ptܵ.Ҷ&Ҙi_ ;ޏ0iuWN%8+Vpe#hk>-˻egjb]b>6p#Vx>!]ƕRGA;v$zߊ_ ,eҥKi q3zJ&bU UBX]{ }f:K~cV3w%9`y0D m=''Uħ)pنǡ&QX}W(iS2Vl zֵM9|}^ ٯγI;_6aYx9}Yt>wBG7&z +3Xm =o;.ıͭ+lQLΣԇS845g|9k[Tc:Ѭ~ꊭ6ď9buVԕca(,H'Gi/wBSebIe$D˿ߊ}@鞼.Ǭ55$/Icx[lF !t7ŲwLf ﲪn 7v0=$mX#`kcgbeddf&Ȩ"+Ɂ;ր#gr9Ҫb}&@tiD`Yj֎s`tOo_D ΛA{nn_d`.|fV&p0#` ZtLߓ޽yoƛN)&F)LD83Q uY J=ͻtty۱IGesWhpmךbE*YϿĝzK;YZ%^+rV?;už: >gu>ժ& W%UYeW_l?{}>wjǭX|BoA7 +mֶ@elh$U=Fn]Bೲq'd$oIEW*?n#א dwQXɺ۪K&A'a:G&-*AX9 ](dg2I%*>"baue(qb\8!;W> \9q޷Ԉ=,iȮ6k2EV#zxrޖ0u6c\edWceH#j{duo^tq[ Z^mKC"a3RY6۸y)rFzgld. Cwm#NB:s3laņG}ēǫ7]PT^,^:J=]#33):axO'eXWX ]mjNj6JqE!ZҲqg%*I,OigG|q]9xȢ'XRqnJHmC`F(rUHQz2ʖRʎvC>oΫEFרy)wA40QY:#RսgWm|TPX,ڒ"G|sp3,5خw&&')0oEnvp$]AHV~iᖵ%|]kro%+%^l87Q46W]P5a{G^[]yBTB @wk]O8a%QӮ}%^WQ0܁/MPe#EO-{I/2z.]]"o<Ǵ(JOϱoӳU5%KjQw/P{7;bxo&ZT~]܇{|Hzwލ2^ڬLWJ;徏8}+5<ns-[)rW.A-CWq uaUn 8`4NϾlnO\-XVՃz$ k:wMGHmT[Y2rj-vdicG UcS,|GF殊|R)vc~܁c_f\_F e\* + v= +[ըƱSE +vwoS5Ϧ6:/> +31oƀf/3;}p($݌T똝YUVQ 79ﯔ/'#޼Jq~ep%ѳzL{*6_TSֽOLl_H7U*#XCWC^e\񁒶^^zk\H::?$oQ.P Ur`938ހ=uOb5T,(bOtPCOCT1*j*D{ ,}7HӳrM~W1,o1 +vcy62=5ܵD^rn @ hOΎ$1<3u9xYLm=ec: K}/uakJe-b-wu=s&rEkCQij*l˲ޟ'`[m S|8V;yN=R땦6r@k$ $w;>|f ~L?kUz*}8=3;P01R\p +qvB@:f-1 76VuvtnzC3 bүXS?6-UwgVV7wn6&]i1dz|mѵ:]8vFkT_:#I["~+yOIG*WkLtBVc,vIɞzO]o[)_"rvo[Jqsg5'gY~N]]Nl|uȟN'`k^L{er_ >PpXyw5 9]vԹzNfPW$TQ?կZ>z}sKӪǶ|ȥл'"`B|ENz+i`KpT}@c7/blQ`ճ6g UֹkZ33R0J+OZExEvB߼J(@w>!enih3y 3w-oߴn׎^)+70; +S`4~-w3fjU nmqlc慱t^Ga3qr( U *@gc^B""'f2%ٱ_QhJDDKY8ؼq؏c=z{3իD)m佗nUI}t=2DDDDDDDDDDDu)]XTAekZdFϼȈ]34 h_C@̄EBh=t{/\|}|_![I+R[㚵6G>7i{-:=)umbhKzA؁-i궊qnczլO`ݏYcbuu@.b1KuLlZFu*ν7^?8Y}Jj5(ۀYd]v~gV쫑rV[1?^__v}X^XqܳG[dJ+r +@^حi\*l1R֥֦VaO] @ w0:Yںёgp{`xW>k3\Vd}u,T^+mi˨CoFW+Q_}ZlO_Y ⾣ϤYA*ϱ=dU}mbh v=}\,[E<]n`o׏aX0t޹o{-' Y]@oBNݴ=d6]Yiut>8}_=({ݽ{zy'<`}J–vb% +ϩzpw5nթ~GN(R~/"DG~ݤ5uQj >Q{ 1+[n ހۿ>~>[:Uj;!`{OC=׈X"RNе^=21^+TBֳXiB@rv;}fGr-8\|ͳuc~%2si(-Pq^Lg[ܵ_VĶo؀P׮=n ǵ, +tJ0mS&xԡKP6I:u1v׷U+pݔdή>7_|<]v2RH _2r,G/$WsҺv}̌[uk+5ef1vm԰뱽lnx^Q ŊP}<:y-6l[U[C, +Wż׎/Ԕ 'fMbب[zo^.ͧCYb*B&:MSl-ZbZbcܸ\ckJX߶f\깝1>[]SlacH;)OQƽu[0:*23WH?G}$ Yh)C[nV9Qg)#]%uZVv +˕ضu pw=JN&V^^M_uuּ/ؑ'fޕmϗj䢰ۃOɿ:lΗmGm""= d?QʬU7VG},xRխl@W.{ 7eu,|" ('^PY[SC)"" \>'$$_:T- 8FF~:׼Znϙ\u{~F-vE%21B,AFrp UΠ%g[U(LWe@Pݰ=S+;\\ﱆƘsψqd7S|8xڬqn!r8ک*I:&FFRQ/UT6#~6o2Sq޵Y~ veio a GP]dڣ]!}BY˧u]8Mm实ֺK*W?mlŗbM-7-GQߝVVQK| og]>e勲O:V +Y&=؏d/Mvv6YrlnLK78=}fƧ+ĄX>ǨkmM֕PhE\|lo^ =Fe,3iugSoǭkQE +5iu4Vo,l+|(ezo^ٙ^}g-iV[休\,Nc]~R6 8cܺmvo5Zygݵ;5_VacVU!ڠGWD/N;}͏6y`_Mf#GOs2Z?1u9:rrߒ'bySX`5XؗFˬ-Dc7l'm'S ߏg]k݀ e\A +64tccAedž;ov_|<X<7>޾Ufd:8Oey>졹q7NbT̪(҂G_:^Y_9Xfe:6Ase[Yg?G# +RI}S?ޱW=xKYu7Km8v{# Щ'FwV!]VEp{}SMɮyUVm;~2U(X=TSV&Vtkr$RW׿횽3= }vnECnxIXm$o:+^-f]QG1 +3[|w3T-{] =ϐ}_i.쑝]F;͍G#HOy7cbؖ!b?fυ0}_OXt槙EblJ#"|_3A<?=[CT՛Q +G&Aʒ{onRUt쎍OȺ3U +W%)9uK/{f2+(il$wT}_dN?cY3]8y8ʴ*|w*{rL@Qzk*_5ԗVր|G6SMc,XEȁ1VVW֙uޯՀ#YeVP]v$D*x) Q]Yvu~}KzRWrTT(T@~9ᛖ!E%m]ō̩R"JD@(f?JZ- ՕÁ޻Zxt TQz:5E}] 9B3m:#D{PEo^ߧ➳z^7Q6=>t\V)Fu+!^bL`eKj28  A}f6G饎=)YmlOչ#5ڡj`X~e+CckSYE(>֢ޏyُ[J)*pnߊzcdZR5FwnqILޗu^ot}ǡg]M +NJ.θؼhFe)VxH`)^W(+_å{Jr>z\鿷aw_˗>ٗ1b<_̆@Gcc}sԱFrC}7߼q]gcM:ezfSS:ٗH4?]dN#JG"> Vz+*}XN_`T=mB$ H~ϴSޕ})|{oWf/>䧝yG=kZ{t*I 9uzgJ+O}ǡ@ja_pl6ۏ[9*y^pȡﯖǨZUm(蟂AAC%hLu ZQО2ϯ˾u0Kt\*MehMIF* }O#rt, + zY=.t^1iJo.ۋU[+5d$l##Pb-7a@qaw_OǦ+Qc{!K8bde_u nlKZRkC+ aGȃCK-dcW]XhA(OTnJNI$~&GF6r4%U ¡{nn*,VUQ}d#DV%鍛ӱw~ap~fBI\=kA/*KaKTF6Ŀ7Sȭl]ņǡqz& mx/oi[>UiGpTeƏZ:F&5ErXLw}}Ow{_|ߩ{lJ+ҽht6 ˦E +4|Ȉ?/QiV˭]K͔B]l}1.MENl,Hqz>J"&uZ1!hHV]JtHަdDDDDDDD}[[cTRǰ ~)VeIu,C+A ˱*N; DkJ 3"!;VP{YQ;6Kq!Ib:PNMb(`~`=DDDDO6?N:g :^},J`CF"z8}1}s#rƯceWbӯ1uG~x}[Ve[Ր_`oC3b&'Sb+6Bu̔`z +nB[XA!T'_ 6I' z qm Y )ZkE![IF 4WZ$3:?RNNZ)QjtHߨ/\q6Rm| ?3Ey&mvfTw4>Rk'U~n>ae+jުlo6wz} uiZ% <%ֻ}n"dd.I!jXߡ;ܠ귧Wym#T!}ë +.é^DuTAm}7,ې{Ѐ;t~ +n'^^fbܚjZk98+ɅvmD;7*7d2A$ﷱ DuzerJη +{ cee+[Ȯ +7Kq'} llnյ,+e>k^lHmhIefa7QqgD$Z@_gifB0Sȹhuհgwx?d'ɧ=*1jQi1 >nQK%U9Khl;61|vy ;Gc>ʜw[i2:N6{ԍ3ּN#t;=f^o#.k-?1[ϰq^ +)1EhуwҕDzղz{ع euJ¥ bIoS];|AԮXF|I|?;CdљMvUv29^1,DkGs][_~ +OHXRQ-oO)7P8) v'ϠqC+}56r +꼊vtFW'g}x(^U#5 +e}X96։=պ>_:0Gpuw7WUJ.V;֎r;gQ^"Rœ>ap5Gdn_ 6Գ.ȳᲧgħ`Q:٫:}ifAfҟ%K`O*Tw]/Yc6.|P + +N@/}7_s7rQ s7?[(\"]c*{}Sl1Aeʹ棑F 66A߶-bgR6>=Q ̶ Ѝ}=H9 pN6-H6_\yy.|qRdna$#]HDD(f+*}.@_Γ[ӹ$-:V2bpMkZq;,Uv}A2ltޝzW:;eY7h>FgcVm}+ZJ+f.OO'5<9NzQ-._12kуZ:MbExk On2:YIzHkNN`Z3F;UJZw-w7=,j踭C`e˄;v5W32uM>h'a` ;h='K5EwJ qK-U{!l":W]_kʰ[K1*PaFo}+.-VM+z6?}R_ܐklDFF[uHҔQSR:zJ7`5AkRCIJ`4_\.Υ:IC=AtHE'=d>Vkc=$^LH# 2J~V"^id]+@'[פͳad#WEVp=BD'7/S][x+.~[ON=R*IJ rt ?"S&]׽[XvpF}k[V/zJgYmt1yk7X*W[fRzV*Gc߾o:AdظM|hV .?[CM]Rތ65Οz&-"ROj~-폑ᜬN&Uv k= 7v~!zYkJF+R'W,G`k^t[_Co< +Xy`IԬNΥ2(LڧWVV0F>̣b9T][Qcm%Dh{0Yx&EaQ 2XgkV{tf5BA۷o}LsFUu jb:  $hJ*rPW[@jYWW[I:=zKTxer/u VE_q=N2^&^uc^ej vioSc Y9>.ArY]hl=E0T{ʳLID荪lL*IR` +;w,i?t.OJdU8v=xYYٌ9}WTNonۖ:OPQӖkjF,@jd<+sm}:JWlBG`w -5c{XM oz d 5[X'Rz!l9=4tW8CSQN!Ywˑ@+L%>Y[gnmJ[4]Uf>B]V(#ڂ@xyؗ,ž&(u~E]0}v}~S +^K4R\Yo"]VMՍU1.Ǐp)ُO5rgԏyy;"JmnU酩~bvoJUk܄`&7EL[P޷dLa_gPK-E*WQʫ=OoyzOP4\l_[UB78ޚ 2<|onq'Dw|f!3rqudirsFBb GP3*@VxVh5ݝ#S7!s1zu11䥊0@aףּ-_rZjq갂~'Vfr޴޵ZvmWׁBpKUЩ@+? @#_\: a*mz +r8D,(=ͪ1ց>]!YҮљxNAyۺuyѲuӑMlÏ|6w}rzf%z,6Όg|ܝk2*KI-he+5[3;+|@]^|O]p9|<їӟ;*Bb5jS+46}#WU~mz~Pt!^܃oׯ!f1r*P-v3s:#fbKu)-\՛%N67/;QU&5@ +l]MmhCvR6 ?T!-G5BY;_z]*vb1u$IIb"cU*4 F|6ë4@!""""""""""""""""""""""""""&6wOW^2Sa=bWXO}IbOrIL1=A'˲ꔒMuI;?=L|z+ZP@@%؈(Frsh:ה.DžePUT%O[.0 +w?Ӽ J~eU4ւS[4;#z˧ 9b >du,[Ԃ>`~+~ O߂nXux}. ;'j}[*KP2=D^K>+(K1P53|,Wc`F(mRC#gͳ ߟu,PXe_ Z7Rï!J0RGd.5_LmVd#In@,>cStUl҆` ?Zƫ%>Sץ(@{+'?, ger{bP NC܏Y2,}G9?F5 +jnےN[yk|9=|reӌUm҆`lRX@Nr@ ttwF`u3rq6* 8%5z3u}c/G`@M#H 3h,*`OLgT&r^fC@#vuI ,$$S}y +WSCĹ Ys(\EXÒR/݉~T7թKº1}~]DLƮD;]=·s2 Ƶﶾ{JyǗ!ﱯ+mBv +l@}d)t3Ŕ `Nۿe2+v(K.A#1=?T0oH'SyHGV#L'̥mXF=_^*yR~SzT k@}ǚӸ"uc/͈QLڬ:he݊R˭ h6Uߦڔw`$?U`aR>`:*^E@`ϠzkYPo@Ho[Ui*G L\.FvNN5l [Lrz ^VgNweyVVQH G1UhX0%*Z⥀c29Udou},GMLXu=W=gvOܠJhGcG~WfS,A'Ll[>eE3)pX8;#̱fG?9O.o)o@ʥ- |-`$~Y\@ #`ll.DKw)>@oMGuQ9hl Kw۔apfb,ԟik _Q*FMk[0ZV/mt$Ti},yפȲu]V!GˀV""V'zF.6722/D(:@kmzm8р#>=-&67}}:9O#E.8%K6+;dxVuILʉR[uRv{I{LjPb ѫU!qA9R>DkWޔ +;9*7r +1:Rȶ};<= .e>uXe:7{Z7#C,c}OaJ[ýFZ='Tq:VI щN5)R( w:6?W8֠VCh| +}"[f^Mkx"ɭ˻IkHs},m-"j);deUeL&qOeε]=cuRk[ִ[ݎ'Wťjvc[`֎)4>s߇1dEt+XQyX+37GIZ_G]6T65clHzEq,{ewl ɜ  ZoNIGg--lBZfM"ؗo +ε>:>.[-EJ7 +6 }zGvgWARBURv.Y'\Jav S}+d\]5<Ί@T{lSM W Nƫf"ªꠝ2]xd=T7I6(}?)`CRCk-AR#˶!v.k.Oyc"7a mRRV0( ӷ 6>}ϗtt׳NWPŪd7w ++K +xX0҅?H՝oֵRQC~lHGC+NZ+>MdNOz ܕk(=S|.V<ӐrdQ@A ݙ=c BiM6 }NZ|)՛%*yҨO_uQOr$B)6% knl/=H46lk++ sR %9\Ë!U!XGr3ˌe]v^ƽ!Xr[XTnU;b߰+{9Pj[ u<@dT +U%q([[ ]@ ~S-]xSWjׂZ\쉶r`;/:kbt^S؅|ԲBOȯ`OrH5;2AB1>7S[ucՀ!)(hOcuӱr)!XJ{ 'C]NV֭֚`5̍>l[tcN#).ʄf Y |7r֝ב4d$YE@rr)$ f/ֺV5ٷ֌t?jWVN)UCP@qF1zP s)^A>/kߌ1ʻh ԗ`SaIk:OYc >Wr +Z' FR7,ut3ݓk9E qܺw/kyI\aY kZ*~?^_JK0rܵԁU/ƣÇ& (/xw7xϡzD!7c޷'&HP}:3 5p>^ 6_@N}>ɫ*޻8"少i7Yrz}kN=N2R3*nTq{z,unac[jYA䇳~Rk'JNwGcIv*Η>sE[CU2ݪ܅J wꮾըTPFt`ݽ;_tS=VgXGƢnO /չgJkWc[P^l Y\Iz+bFM*sȱԨ*?RŰmH#~OQZѫk:PQi'۰ ~պoJW5իu +%]m뙲|MԅClWpVLu\|a ȯET%t~,mFL _]`WSr HT붵%b" (F{x +ՖlCr_?!=tl^WȪRT*F451zKy9I&KfqV!Ҿ bh]0fVX +i^*7۹N$$\ZkjV:fCT?cø 1Hy6}O>T]C_`=.&uue^ {2ロb\uCe%NJFc,xֺBgg{'=sڬz#f]S Wz 9wtKڶz5k448t;v#/Y[k!tj ߛ05?R:g4B4܂ro(6W Z:&6Kք\~nI  vx`*6yC0/,;O^wCľ潫!ߏ2ˏ6-7kV}x;d؀tW}>^ +Q6HP=z`qlQy 'd+%zb$l{B\EgRܴ}uR^ к~h%_g{!~ +k cW]R͵@ؙ Q +.])S#j}3B zI:f?TEL )VVH X4:Xi1,{ܱ%Gm^FXVjt>o?Q11h88}H Yu#Ѕv#cOy:[bb)U꼐H踘6Q#c^ζ} UzniE{ 'd[ѱnY65OJ|_x6qޮU,ȟv%VoHaZ)UFY~^0jLΫe +Wɶ;޲zZů6 YOb1/2|CXNJ!{v=;O6,9;]ֻ@m=Gyw7QQ0t њP::=$O0lYzedaZ1H'ͷ?"-Sq-I6M)K& |IFB;~gWOWȖ;fvgv>v$2H܌x8wemo|oQ]'NL_ +˗l} zo7dYqmIjw.zӴOhZ+)596;CͶ<{OX[蝴81 hOv<[r~PBt~e$vcf~o\+r]h@t}GyoQay;v;Zw!}'-=: cYۏĪ@']3j@ j[ū6WF*`)c cۻ@lt>,Y2]JA"x%ۺ6.FRf:nƑ7=z1z..EUl7.X{ #C۷oi}p[$ 2*3{RH$9"[[تTY[Vq$Fǡ27UtVҶo|Q:QtFMs>e~w? ַ0~n1[Uw%ףʲ"{ktLZVWx3n[O `&=UkrtX￿FI|tê ZrgK mo=/ӾqE,Ug +1+x?U93hoՎS2b$Rx\jؼug!I߹M!J{5rt>fC#]0 gv[x +Trߖ^{c^4~~++XwX+t񟬒{}" nK-Z+wV?dDD:nV"PDDDO%!v6}&>'P6lj}~ƶ0ddۈʕYR4;3""""""P5,GN B9E,?\Έk:iv,T O'Re A؞""""""""x{V9 l|i"% y53UOŊt{IMS#YXշC.) ˈnޔt lYu+ȡWbV(dE:m]cM]b9m w0wWBʼu8׵|2P~䟳s>St)ՒMCqתeuγV=u:Xkٔ +_mhzzu|<갳B=\m`A;-ld|ĬYȵ Ry)Ag3V..v5!zيZ;nrω]5R *cG3]xض[b%j1!7lN=a#cSjWkSr2mIFgUΫ +-kkv,8eV־ů*D1^ce?Lk|N5%8rvyocb)]}ZjnWU/k^~33(gTZPfcOIgP>!Z<UI9_'bc2WdQg&W]k[ondfߗSS*+bApFog?_8RPq/uaVϘEh}=ޛ3l&ԝ nmHѓW.ײ-Ϧv}v.tTQȟOͻunu4-\ـ +6C8cN>mֵd>:o5<nG{=mRpf@_ +T@۷a_ze]`Pj5_CaƔG3#7ՍEkMY@n?p ?5~%oDǦL `328azr|=E*4Y孵r[W'`S ϧuyO-8-J&+*ebϳU ?`y&R+VPPw(Gof:z.5&0e+ːU]/³T1ҥ2Sc=v]>2| .R[FCT =ֈ 뿼0qיceZn; 'S~wYq<zR ={,߅۩Xr~?g_Bn%5lmjCjB;RH.ߜobuii+sbܺ趶4zMJGCc}Wab]}*ϧ$) +6F;H ou<ޒ^zxy&O6I Cu?z5=ce\m4$3񝊩BPn[bT/s` pλL\: xR]N_tR{SKq:~{*fPa`OVw;.ՇZ톛GռRX]лpk.o@w2_I(la#؝ hɳcbV`ǰ;)lsc#Ym/Yr:䯉PWw^;:;o]wj̡P c`=H'D٘pp Rc˂itK6?V܁"6 +IWSb%0/ѪǏIh<]z﩯܎MYVԷ2'`k{֦/H«]hVf݈TS$H^/0;3}:=ޏ_''# +S[R'd}tKAk?ukBh8~zT݊J=䜧j8QHvf׍n2M p@ [SגXk`:*웈) R#yM ><N\Au,cJp}`ye2*q~͵ޏ3;dϣ?<_Ubֵܹ.xqv+x j`;q1rZ_1cSA:UR{R{L~lw -4`pev.twLftEVEY@)<wR{6uXCv#`L]K/WTq`̓@[sbaأ&,V_*Hn_vđneԙu|qa/`vWڎE|$o^Nɷ+=If,+;Tᚳ)jzʰ7.VR O}YMS=X`6Cb6}&.oCNԇeu Y!]VU, +紘]1IҚ&>Af[r],4H>b/ۍL.xhtHާ;^ݓFF*R ʃm̀ cdtӑ=Sҍ&a{zMsm7 [$zxT΢ 4\;;v]oG02(ZmV'Ywv?Xwf;ijwI˚97XWK.m5ER6|Oc}~WiwP8iR +ByD66yzUcCX|gn@zh{=< e+v-:6e/^-ev3E,']fWHEmv"]VЏzK׋e=Z^^ܛ zzHJ<+s"^Ccj;3͋tޘiUk ~"vbOy髉akǭy-[3r6zmZnErPxrkS%^N Jڨͧf6q -bczQ8p0YCz*$N0y>rg`W[X}!]Pmb}~;gYI\nr +7#ll&^bֵKmM`ZF p,OpN@Z_9p]R=Glb־iRG"K}5xw'}'n&@Qq%y{/+Ӌ|<'o~mv!7|+<6@ 6VebH Rc0gF^W5R @fx]+gxcׅgeX ~~.QF=Ccho|-:Mu2eW A#؂wVO2plg6״v`N7N;_`<:5 2/+6)W*8I'rzJkkqR le{r'~AdWӎ50$iW}^A!ғ%.ւ)$ca }Wƽ3uF'7KE .x;1,eİ`-Rv_#-hdEomn5a~9\{ SHf-,ڡ=PT'?uq2p[{|BV+!@FnGԵu+W7r݉]ت=~v%(& +=fY Li5/_wiw{1nH+!ٗ%4+|-nWhf ZĖ ô bF]r^@$~:u>Ҿڑj|X0e8HtFFڋɭ@߰ޤ)?O^N-yP + +uʼn}O]cSӺ5c bS=-ǓWĀ[7u1l7*D.f#Rt%ﯮDLg_mūeҞ,N{'*ޫ:"^9=Mqz_2u1:_ETH 3v5/my^Mv77)ӺS]][qbUb A +3 u]E~$ud,RHl{lnT[%9WAЃ`؟A$8Vc_6B{>2-cl@2t%y+Y5l@2t ؠNysrpw` vX*FpCz8u\mH#;.}ϧx=%ԩK;ԓLlJ꩔1İ% PXtlhGC}rHI_SzoW79kYj%u9_ _z\V^ 葲;Q8H ;V`g< ϐֵXècUH=;́j+z1xc{2qB2 +cuF\kݯY^|{OIzm5Mz [&h;)+ 졖A b_%HkQ @'p[^V9nx#p.-~m[l}8뤽xl~K7/u;lvKu9hgG[vPNk: :+ԫſ{Pb7sZD ;[V n_P9TڕW^.ˀr> +tY XUǯu.ªlQұRKm=;ld}s[L+_~z_YpӦ}ʥGٸm2r2&anݦVUW,-C"X%ςUwVE;5آvLgtޑv9!E=T3f@izw56hyܗ][g{ azOҳrZ)ʠUֵFf+u'9V-RV¾aNA(2W3OZǭ8Uf&GZ#l9}?oiw֝GFU+<? 7ْ< +mjZuѮnnOֹ? rduK&BU@-X 5J$ֽ|:s]%5L|tm:;+=xjϺP&^8ZYB wdGoOi7t'We@ym%E1y*33rnZasCw*؏&z!v/V]m (q5bdާԮ*:9gv9?OKQri|z֗qXFn]2rq'du +n0K]֡QSrkj}GFGmc+nM,7pzDyz@s0)!2=b^-tb∠ց]{FoDً^ i]4ا{b\6;^Ӱ^z>h<ʟ[ΙدpFhɐw+D?t 2+Ȭjmm$~9WfWtPZ}Do Ex/jVƷp;DHbSM3v}ÿz͛ +zՎWh>h}ǩtey_66>k}պUUrZm@`=`35 L H[A뒽FgNl4J&kE +5J?\кv8=VX;=Po]6A(dm묹Zͥ|[[8Cl_YŕqGa.mxZ)~ r=o_KpQ]Q[Yu`5LOsf}-XA#z>#)AtM *ǶO7xo籷bvV2To\XE*`U+$#cߗ^cskR|8wxctO4Kyeu Cɩ[' ٙ,=GؽM)j֫Rtw]vK=YlE,Gd~=RG VŶÕG17<܃;ez65k寀`@Fs8>r;ay ccb-ƥ+X_@M#ZVvn:;bI#c-1rl{%,{[háwhTcݖh>k:>t8v,S\:q]ow1bO]o=XKrn [{A.j19$ {U. [ZŮ׭\,;[z%SyVBhzYۆAk+k5+rķ"_)d9,ƾ"H*OQ0I@[YE5e2mKb|< Y (,RF|Ǩ3N7G'v/ckl~^y=.+9[FG(+GOiՇkXfz_@5Գ^ fRܕ{/S3^˭,=νUenE!#\S],nHA!ջApϾ˘]=p1w܂A?,QuJZa1^@%tuKY]3ql QJ<5(v7] }~]{;fbXff;,O2TW1UrARH؍OE./F,aF sOCZp] Am{KY~j^$#DޙN}i] ȇVQp~L>{,a[h;fHаdfw=y}F*,!Gm۴ǧbSzxBh*W36Nߴ} +۟;*hkoWx_:Yk*UEiH =,8 Q=T ߸=]2qXYُ'v=cA#m%DgJT,ⵕn@c@]G_u+^8TԼQ={}@x-w0LĵڠE˒DvI\~U7g/{,{w(McTk~v3r-}<_j纫mATUvrUjPWENՁ }U*e]b` +(:~ *̺컝1; өH =arueDDDDDDDDDDDDDDD)Xu,[ۅwVʺb6;SDDf $ܷNP-Uo]""""&7o\&庶xm~Iv""""""aWî !ṳlR""""%>fC_=zˑ<]rcYcU'@eQŊzgɮDf6@.Fb"""""""% Դ2k Br舖[?fgXBm/Qf\j-U%|)#k6zN5jt8F-2=}1*Go%4Tw,%KM% W.";2:r#aXI}sQN7Lͯj GF|`xƚ WT2Uri~#_=7 z0d$Y/98u`ysRj +=2=)uw۾ [͞G~ʪ 4<]_GPl{Wso.!{]0<] 3z^=;%HyF`7w&|AGKfb# ,N@BZOyVVf5Hn53e-n$cv5}Ea<'%n^Yִw/t.jޛy荇IOsU݋uT\=)(6UYd^؉*_@%b5]v3ž'r鶅̲ڔ*O-iꮵЗ-uuG_=o^bs>V-O: 硲}̹ngOrŧg/_ömͳF6E6j23@ힱ|Um9W\P1b=tT.qLKr7B:VdW,{v^/cSeX2H=A1:.^\oՍN&e䊙2;o\yVu.u)ph5((Ev=~ԟJ+VyVѥGm>.$d~/惃WM^EPV{!↓1Ih/]'q)OŮlO2U珪؝l:V>en尡x u1In]IExPXuĴ;rֻXR̷V|`T~w_QՒ]] k9YA$ ̜-\XVA7۹}%Lt.Wʋk` $}:%z5MTΎÑF]. +IHrMV v Kù@O`;ə'\1jZ5۳g۶{K}RE6σC}s$O5fَZא;1KMA5ՒQiRW`v/Tl|T]c +DA}_y#sPtF:>2[,йjvTNX{vK0TE*s{KX=frVą2b>^'#WF#l(}S'UeM6^(L❹`;2X딻 #r Pz%YսV֪̏|X +~cVaEH|9r#mwKX+x a72i40dq#]=3xO]!Mپ=X ݞqy^jyn.AzO3 [^J-9cd!}պ}̫U+n ɀ:=LħطyLut+SV}1Ik-V/`PH02H=Grhl*_N,.fupֵ抩 6>xǾjm[Rr0Sm!ӳv.ԑ==1O'c +U} gN"bXUnCقFL΁wYe5YPk + q?#}gBY=GueV9W[YH%JlGq2zgO^9zḓo2SK&Mt1`ȥT ݂[|Yzb\ikk;{#ÙC >8\|]n7ِQSllt,xׅlK;[)dGG,L.]5ߝVyɵrA[`;sL裧?H9 l@k:~ww.7T"))c8wS uN!{9xƻ&q1ok-d־g>5xݍRY 2z]I*5. +q 0YE^k@Ib1+R6^P..۹'ށf_^ٍRT=u +4Y T붶jvu8Vm/nnXQzEXevTXY['9 G[Ϧo EMjR~HΏoz1)EWτ}Cpmֈ>U`~mSh NuzpH6T3r: +T};F?E4%e"֢y2ֹWU{vvyE3zLz9J-OYTc:<'NS<Ř/u>Oؽs:kSjOºJ`} zַ,fc_v5p(W$4AeE كOU'tkcƷ3#f5IVr?~). &\Kg9=[(h=,FUǡǮHz+vr`v#0muec[-Aw)P WXCKۮǩ@2=>+/0-oGʨvw}X GYʽIƫTB:]'&Ժwa\QMUY/7cD>#4&O30 +^Gl=Nþ:T' +L3leŤ9I^}6g≾Lx0&%]caZKfUA*XDnNt'ʳP0Б܏c#z}+ytVVvc #_td6'&W*k1`I{k*Un:U~;]]*][wy_8YW]E_ȕ6 Coz߼£ -hS^Eڋmlq߶އRyVB \ wa$Zx +B] 'W:H=uַw*mP6܍Uv%#"dgUV jzr]hktr,z˼]bO4yVl1#AzWO_S W1T0pxbUө9͜"dd ,TP{ozMcՍJY)#ɋ; odGUn[ ögҺMTdaʁz}%<UVIJ3O^Zwe|WYr]QK3 Wߋ#JVN$7oSz vSDx;=$OT7gu{J-X-e{n+r^嘟Y[ȳ]Cl4NFԌCB6;k3\/\o{pê>~%#ZԋNy){3BI#n)Z^Րŀ#[eUYb孮mdbܯ-Xl~5E)Z **@K]'dgYz0NBr;?nTOqmG #1^ZVm =zf#WC-Pۼ˔kr)YwT+ژCFfWlmD P*atmpI$3/ftÑMXkڀ>U5 rDJĦe5YnV@m%*#;}&މڶp-ŕJvf- =&JDJkR+)ԬJĦe5+-e5S!K%COLNY1q[ܐIXC"0:O+A[W;aa:;ɉMDH5Km+YP 3t5& uqZ{|Oeяt[09Qidtl7A IKMv\V׮u.bcӨ"ӥKװϠvD7G3&%8T\چO~gPcE{ӏC2H ̹d]KRck>beDDJFr^]xU-:^u`Owp/DDDDDDDã2rtZ녜_sזXw*שBV"Q޲3uk:Vڬe Y zRSrE[r:^)K+rQ8rV%-JDf 08S)ױ3;z :fFmbҵp+o_lJ,*kYPZ~koXJ S@dJ-Ρm0܂L@=zˉMDD(fmYnCr0֌k{8|>72|ΙkcrNGAbuwC啤XS`P DvK`.Sdt.k)m_R*ݴ#똴efe?n7 f =קn=^Mj6Ǔf^G|]S-N@`UI|~vNMQ-kn Z7[tE={]c}G{ g\C-?9g-ZU+nAl@+2{D.Nxuw̴-*U@5`-I|ߤt" F1(f_EWܶpdc8fXl;߼.O@PIkW*u߃{Yn)L1INi+)@jzfgu:uʔߏ~ cikuq˥y#"팊T\'Sj'ʯn_z7oxjX%wĐ t}5Yzb!9ս%X%H^ܨvOԵf^zHɿ*,*RvU]oHe94Z9{+znX7Gn;-ͻ6NbP TO@؍jz9`uqbd֜xo0TFngu *+1-vqaSgeס;7_Aɳ!:j[,S؎NnwVXR-8!1K=wS.gfX:4PJv*ğbizwJC[e}*P*4Jx; וJWkp|? Ȑ~5ZeWԫ|V$8Gح\re0vk繅﷯tne#V UKY)bRqVm{,{OO?E|-GK]~ٮt~MF캮2qڞ ֽ&>?U=9O,hZV WBsfu9߆f:C8YjmGmS+~nI؏{)ul$EFεH:bS>Ej 5ɷhFkFf^=T@e;9ҎIT;z˫4f5ljWVT{f_J[s܍YUToc;5*ť5?_z{9Bor[nE)²@* #d}RKYTض +kj^ |λ&{`fQɱj%.B+p{ ڱ*j*Dkªv&>z;]ƭlt={WwS=0r,.?ѫw蝹1Oj{p k§*@`@$[Dw+YO-ŴIvPI\*״;.o۰ԗy)#`MO7Cb2VUojV |o [zc-vseovrxQ#w\NPJ6UY^#_-vހ߿Ia}<jM%e!)]XζW؄<^d'G!+ARn8^CߎI>˷2_>>@9޼$zN~n#Y[YG`:a';멅<9n~..9e8VhK5ghH=v]Z'3ծ׭RI, +vT2gDCgxnΥ2m+e!h*f^a}*1eĒ/Kȟ`ٝ|*6m*v60̟ےak}(UvuHȼ+깟Ek @u͸;~;jLtl镵ĪQHR8Zfp[ԧ1,ƲFȷ!1!̖$eR+d(!HmcbR|M׫X96  &VwElsWmU_Ğb}5 R'~fb+Xaxy3"nՓfVSZb1Q}R޺#O6xxEk ]\G.F/ažCZפLbkBu;!Wd $&&0ra?Hl$١mL~ӗg+eBm8HWD.݊ϱ[Xw^*e"Pҿ3]dQm\+|>.OCXX'N.'cju.dtF )ZߒQ䧒pzWCp݆9Pt=Mzق:h+M|kh*דCG#~?'frJRjf(Mv!; `{:@`c];|!GQ vI>:WRgAų~H`$s'3Kqk{y^*4e!G{ss(~\ YI hjf]Ag5H^ހNM^{?eѮ נ{~TBo86G-H(Nm咤nA1Z/ N]ekC:n@{״Ƿ9p( +\ȔZֆCߝSfR1{w~EضCtd +]tˢ@=k̋-+l } *d@aAiK.kod}tAs|(t55,v!͒廙{/_'YxԆ}v7zOsۤu[o,JUxI',Չ]FN7@jjN\6ItR?WhDwK XsȬAy8;?9k7~Я-rƉё{j2ֱE^]@`QC9p{\=W(@ue 6:܁2BX+U`ŋIb$1zuru{<-x)E ˗f$~^|öJӑƜ^׻q g!u`fNz>2cb^* d|DDٮ%}~]5eSx&їAܬDΩHٞ"""""""""%'hJ9pP91c?\e)pl;q-ۏU [^7gjQBOQ<*>""""""""""yJұP5&zU|>~aSY_u T̾z3ҟ U+pfv_YÙJ–T'\f^wWbلsљ +J,kd\J(~~]氌npއýYs/Ջrc鬵":.v@U߹#Ri9ŗ㭖)uQ'tې,GzClGNQZy `d*U:>v+u 2>`0_[]<lWe ~"cwVb< 7=) +5}pyW)5KBeE`@>K8`5XhFpwB@=\w_ţ襋(*`TPH #qzM\XvW*O}{Lk{6Rb2leaPp)ozw}V8)*ԷS@mvç֚ۍU +깔 +c!{č*({U+IZZI +vBȯ* lr"""""""""""""""""""""""""""""""""""""" W[q'.[Wf+:Ł;:}dz5`Z\櫿ѱ]_A#:`mY}Ưm$vЎ䟔MUnR,o-Xꕷ}NܭʪIUbs.xG~[^֯}cbP+% nCzME W~3(~0#Yg {;[6=,,<0_2 nZ8]QN"u:}w}MTAU@ 5WEy n; +mtʩf +3h{HL@s׋ԩZjT4 |ZG?oȴQpKZ|l ݻv{o&&}X>|;p*M6׼:OFDW`Ya(ݎ̫?m[*sS9kzppO[܍@$Ao$ݫt]^KTzOqh$Y~=)Y!IZJ;Y):%ǜ8~:@S]C2'al˻.KkL +SԁcE=*JTx +\Vv>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 78/Tabs/S/Type/Page>> endobj 240 0 obj <>stream +HW]c7+~]h4o7ey跰LW*IdKԩs?|~<\~9/uۯ2իjۧOJi|>=裍 _o>~R:}vs x~9No>c-Gۿ/?A:<{vHY`hs5a)$N>?(xƧ3ְGvG2?^|TzBicZb( R,%rߟS9+ +c%S.`s{9rD41!7RRN0K*&Bv,STG-pkEݧFKة D.&;PVL(-;8.CuX䰈L$ ?,~p;{<2R:tnؤ+{Z"?9$In-dr(4lYXLCB62(i'0/yTX 񝟀y^ t0}̼2vB\ۛ ^ّu#jwt^W-\L89bδtSip* @r%1<}_τLM(vUcZ^q.V"Z" P,УlۢS;;hCm @VRb4ɎHw>]Nwp kvܐ;pqۖUBCB-s( +f6g" "0^dT\*`*f&xv\y~cS-c%Ky-?Q2lr'iC‡RU$߄W>,8f1c*~`xCz$ '1r͗Y7N9QRIi-u14)?,FN3Ugb5Dj_y;(7^(MR4I;8R8Lu4HZELegyS(B0놇9krfHZv$R 䞪8 ˈ.'dc +;"{P?\8jXڳS}$cU{Yob\m 7:UݨDex%`C8ݿS.Mڅ*֧n5F8A-TU,|JͫI*Ȋ@.ѦY3)̆޲ΰXxI?IWSY!]8j:։Km$' .LREE$KɡT#¾LU fZƻl{(.\Qbe>aR!K*hzqP&}Ύt2ɓF `mBť QI,Z!݁`/L,RSr?p_8;Q .7T8m?1C3 {DFۅ#w+1:n:]/Oi;K3#om'\[j)%bWZClZΐ'0_o߫"vCpU6I xoZ"͐x} ۘAnؙd?sȯҎ=ζLMnb'ZEZXo?$',aBu,074XʴO6 JL<澦mY}K!?ȠX +ȖNPu3ZZcFF+S%CI4txPY5͚sn +% +UL46*}2-4 i UʫZ2 Eb +v.uvEoe %S:]:/d)Z|g{Z{hsdX/Bep0tԐ:W%R\ʣ`1NW!;{lT/ (\.%WǎW]@n+lz_,I,e)c['Z.TqEOaΝ43DuˌoA=7q,JVW YmZ&xUnԆUlL$2dp>ps2v;JxބWӜӾcc{n.jfw+ M]jHr&$WL,1-Ș&k&32h789.K.=-Ug{"wTIk !^T3 f\*o2B8bckr3.XR㾞kmS;sVY!ڮQ %PO9Kb6mW50ÿ\(đUWdÚw{T*)f@6iuEC1ֻN:h0p<ǣL*\EB<14fJJw u DWt 0J L!}1BVة F.9Vy>[q'6Ei2.sg?,.Gd9z?N|(dMX Ap$M=`TէHr@,:CDà y˜Fk13۫.aGUЖ{NQm#wx+|Mb*iDRBԜ('KqÃ.QnNX];/3ٜf/2Y OgT*BG )PT3~/弹MȠ ?6WcWHϏvfR'e.gxP}Z7}˱Z6kΜۨ(L(hBTiu("3 ]YbsEykjgܩeHG_8X,ErF<=k-VIRN"g[%PD$&EWJHUEz4 72?|~{1טr:״zԛ ;g_0ug` +g]>y39d&Ho srⳙїdoHÖ/9; OKAr~*=zK:r#r)r,YLΕs_=m0D7 G +N + +¸lAڂ!\;\t +F;.N GtF؄_ 0&VӉEf.;@Bն-#)@Z`f[Iɨk 90"(q 7rklWRtZһYSo]8b3R#Q~c,LE+T-KiGbZ) Ɍrr;Bg9I~UzJ;M3`R#PN#'^P!lَiqR` +Jni@E@x=ܭqEZ}PTGe܊fRt\4"Vk5 hĚXunIu~}gwog~/on"V;G<2t٨!lj +b\:d@2Dɦz}N b\~&[6 +sD}!dI; :΢>U(Q!0fV4s)ji xrh<YJQ5RY)J[("8s+1W"w3aJL}o{5so\<9T|AUsױÁxi,TwdÆgnEɒ \|`Ccl2!1SC.> 5ש R㨻QvU7RrUZ-+՝bhINݼCT;2SZ~-y`: ۰WXŰ:44UCĸ{U.@(|3VM;a`QUTӉc?a N@]X4&Ma?$rt4]G:#umj cl4EVn-HmZj[~M +Ê$.·b5OO߇ǻ^ UHtBE!ͱ` əQ۴B &˚!<- `< YjB`rԑ|>rD3uf",'\ U#B(覢B4XL˼.c]@9(پ jYӼd<ݏݢuC!Bi\5s6W4 qB0҈8ţ]((ީBe1wekW,\$ p!*hEB 6P nrȘa,jޯlR'q=K5X&02`2kḾUa[Ty;(v'avt"-+EkoOp3R"'=j\BvSxf_lTpas`dh世,eݑ\ISZXc\CXGm`bÞFwPgYksk+N14ϧOg >6`E-q89lamSBbvs{@]?:\|9<~`s͡dޯ9! * p r +endstream endobj 241 0 obj <>stream +JFIFaKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Ka +   +k!1A"Qa2q#BRUb$3ST%r +cs&'()*456789:CDEFGHIJVWXYZdefghijtuvwxyz?b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""&6\=Ys>Eyu0taAR>L5L[4%՛sn"""ֵb"""""""""""""""""""""""""""""&Q1|tb`g3:2ہ]mV#LBjt}o.@*BG}X +nUg6\<\mE{r?/AMB_}|q3'N|5=ľW`dd}Fܫ2oѳnj vޤNfs~9;P6sۦZm oUNF +%{BQ/O`c__FrHY/S5P9I[z~-pfOWs]\ PvBrnZ5$Òp`wskuaB^:[) 6wAs/9-fPPvB3G]QT k;?~"MN+:uY-=E,|I6*n.q$iBV㎂".Y:!V&PVoI4q~&VBf + +X>˯59׽+Ycـ?c8Ǔ* D*tvT.cܢ+;$z =cu\|oØR߸*ц[*I6s*T'`:i_omz4,r\wU]#g{M|<,lXy:8Fk~}5G\ȱ+G?Ro|t7w&'OO;w)f[~< +eS6OU?eYPw%@ao|A9~slb;cqo_¢ɲЕ[3^/:`F׿>װږE£o0IDӿSpgŠث r ̠66Q1<<5"U=/oP'oe^Ut+n.1P޻Qk] '<7Bo-ЈwbS +[T2A;C3jrʡW[N#$zuBZ,̹E( $ܝġJư]ʹ=N?zvENV}.J4Ԟw%:9wֹs'tRI$o_/sE [En,G"x:S:f=N}9]bPOHvW: z^*~mu>1:>?Oȳ$޶T!kƵנ+x +skXՕ+)_Q=>cQԅQRu؃!|EV6]gZ=Nyjѭ=AQd ~ڛ=:.NEb@+jlgWt$M!~U|l ?=^">oS63FVWL;MM˺>UƵAEDgzru>?1U[YkE +rIv=yWP/#ס/gqRksC ȜrAӷq+Uu8 7}w#k '4$į.]g؈׵b"""""""""""""""""""""""""""""&V|K^v65k`msUBy8W-Ú+!&k@W@;6B땔V+l/ Fy5Y/-Ʈ1U_h$IpOcgΣ^E9};.V V6byh9pgT5;]v>MbdtUbmo}q= "hl.>ZSF7x$kyo%o[1x,50V(3mwzG+Uo]|Y]J0 cX_udUەF_$Rf$;v"ʯtVƷ̣/^Zb5nogES~='-1lE_-#_k?Jl,˯L™&CV²5ď>Q1U8'.|@PCbzVqnNO[TT^ĝh:Y]/2[vKkֱrTw!K;vs<_Ԇ^%32yQ +Ogcw$Νjʟ i&6:2\mWd =5D3nV +yYWIuDI&O_AJQ_}!j (v[9G ulw|#]}7ʾij$ee`a!1z&Ztw~r_R6h8}~gϵtżr1XK5֊Ba +P==7c^2k[өFeY>]n5(- +!m m w|:U6VQ;Rwizlg[Ld}eڃ5}jKpOrރ^;φN' .~W ozϮ5r:]dZ_u]SWkG@٘DVu0 6":#GkɫbCX#-{Hąqf7fyREc'ߞGWav}tTǥa.fHG'']3ve3TQ+Z@{k?>}еb"""""""""""""""""""""""""""""""""""""""""""""""""""jgtںbQъ:4tG;Lx="'kKmM&€P7ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb""""""""""""""""""&;LtkURX@3C`9$rf.]9Λ޹#]"&f~?NO3"ԭw3&>EyH,2e>݈2O}fZe"Jm{}flWW-뛪o^F1)γRWcdB1B16u7b""""'n^8d ޜS"71U/q]yT;1Uވ<{{ے.@${M/ユ> _SrPYSe!v"&MuZ͔,tH孏܉)եP T,0_IΧU9U0p#2 ]nnLWՊZꀰAfX2h'efwGz w\qz7>9"$*ˮ,z,`L{\+~!}q*PI.y>7TǾ5{Zkej9CwH7cc3DD&Ck@\(4[`KdV,|9|2]ԱjWb`hzmL9yuVlFt cȼcV0$*!Afr~}ІV;"{ֵb"""""""""""""""""""VWfa -/q:{w}d:vW厡k/Q]G{&_Nsesm˥m붾}[f`'Ja'^'oc}3#%MO̹l1Vt)?Om9^'x9 Zٮ,T)czo~ۑ)n>MV-W;JoJx{~Ӭ=;c-H n +IW{+Wbck{-VzqF޽r3׆qAFTUL66 JWNexŪPU z(fOFL2šmTRXWlv3-O⮶ j@ T6GiWE}HC>=IkKwO 2*˰WQb5*НL&/aMe5Z4Y || 2fX17ovXw GH:5^El?u2.{0,gtpyE"6a]znzc!rj6yVEG=u{hL?6dۗԯ1Kq*v;;:ݗ۪Z+ lhxHm|λϓqlC[Y\׭q?.[D?> N,6A]utֵ"P&Ixֿg h:DHdbdVUCYSc=~U ( q -(\ɵ+q^zbF7Y4fۅFo^7*B5^ͱz$h6=u!r:Q?.H/Ŷ.4xPHOw)K[;7đwy95ֱ|`^kJBωײm̢@lųG+PLЍs%z~jjP֎`^旊:䮗qGD.'R13Z(dN`'LLt(Q݋kKks^^=Y%mqu?]~]PcLQW@}d/QZ/:U6ěX*I 6h떜o(c[R{Msݗj[>ǂͶn +^X_Rdt my,l~:)_b՚PfcWGŏ2:YB}G"JyYʼnU-ɗH;׫uΝbSRζ6z>[gc0Ѷ(&}['u_؟oxN@;54{zߣoNo7t׫kȬzHZz9+ȡbV2zE&zvr׎rZPlȕ?uCxʎ]YTXn'b Ոk(oeAIL:wNɾZ[#oĉUHQܟMcdm}*o1 cRJ,-+mC{zʜ\ 7H2js>$lMezKܵVn\)Yhmd}#5Mƪ ,_Ү| po>Hٞ51k.M[#jH#Mf'@.2![ zwWH[ũ/@B1/S>K]l wR?.Z:^պ_X-E,e>v~_IotlT-c&˿X>+ljh.oKfȮkhN2|+Nԫū*̩yi$}OS—\)+.jE`@w}+͇^B%4z]fA⋠4;'N(9M~MUP>w <'>x qUsUYmZxh-u!?ZِjތW~lr㽩:ֻge\ +̥̈́BkG~ZvζkY׋]qN0mŪ,1)y1ӬɲԵ8:4;jm{9}N%ˏVC3Z<.ܔoΥb5R=} 0:R^}*RX kE`;wܫ):̶͙-Tym]_ZL)Z:ߦٺЌSmEP&~攮΃+E8~HLJU*($Z_Oy @!zV*kz޷77ӱ*QJx4|WҬj) XȢX2#5z}fMC>1|D!C'L+,Iנ:-MKJ*/߰пu;%V( NLWEV9M5\N`2NrGOjW-n5 %g }&=Fٶ"T_XբX^#Z/fuߕEʀTՔd$\oцG`gu@~啴 IZ#lq{NWHU ruX~HQƱ,r mI qY~ +[}^:Y>&[u_bj_=#3ft쫱quRSU¥Ҫ ˉ= $ bOT۴8eYTdR±NܵDFdtNWJT([ϋˮZC֤HMvnf;X\Wb|:U6ܘ õޡ{r?DV|̊*-E7 - ,n{^^[3%^ \c%LNͮ=\W^=Hߊ|鏖*q~$c5![#ID^ ϩ2> tVQ׹>/(K-UB*g؝yNfF+Xl܍a(,M (!GomI [ w#Vl0qR2jm ]LȀ6=3˳qz"}R6},FZ=371X1q{> +²#{P6>-4tNxs45bAT쌿áAC)0|p}( -OS2x/*pV,j+˼kVPLT;oy![un_[<~i6 C ؛g8r(Wl߰﹥Ѻvnkܶ+ +tAPw㿦Y'+/=FGJ6Gər1qo}uҨ]k-ԭv%m&HVk˥Qr nkuzk8'[9k^#[}fN:՜zըƵɴpT܏ FP՝<01zuՋv^-Dט =۴LGƽ컍lQ|!Tho#{/*sɭuvl&F߰O46'WŹu{vZ0fW# +EN$EX|؎#]%p&v^qP!;aؓfwvWv +R`+^Z#+MI&Wݎ71'Sb"" еb""""""""""""""""""'p{&?q(8:aGW8ϣ(.5KmA@񺅍UE*+Hu%?17""y ׾}OS`g؈=+~JҶ"P0]$6鎪V\F1c'd/<ܴ{Xj´҅RLwGSl׎Q>CC&Xu_2;Te:ڶ=#cLٚXU>]brPtO[3#c;'lG}Ǩ\UMAF/ֆgۺC`n>^WZNVlo6õ{{z|72duNU-(ưPʂ =F4V31+d3 ~^ug:/kPcݓu%:*}co˭69A@gAU@sv| v7Ά~s0aWy{g#}o]`O}|ɛ^*ۆdQs&lDDDOϜt6=;z~nyގ؂6 Ǒ@ȭ,T2%Nlk1UUU +z;2DDD@ѵb""""""""""""""""""'A`!{>S +ӭD.U،T~n5bvS'O2jF*Ȥ0d'N~Ui6/G"sWjOq>lSҬNno5X~ m˷oA%byf6}>~GbfEn4J}ћ4fՕMwb++zmO笜ũ2/`˔_k1/!.z88*5n +v]Ϸt1껾WkpR~e]o&'+Bi`8Ha)FJ+̩U,U#_Y3qYh{KQ@B;g_b1]yKg!=FےHtΪZdVT5Zݎ; }$ݝgi?%rhuuW۾>4hШoZn{h sdeۗ!#Б>_qyȄ0-ΤnAxY0xR),yG~M잯V=K-Vkȅ'${͌<ʳ[` 3WȄ3∼'^v=@sbג5u z"rRw뱮Ju3-4(u,Xjء%y$lwloM{>81NCBd^ktM:g;ֆN7UWVeʯz}fl z+u'jv;%YH:  E0+;*f@rMt#jpo0ػڅN5z\-8v 6={^]˫bnkb2K>'1leE9[W`÷-G5'ױ\H~k@__N1dxxk?+.O-1ďA6R5JŜԢ\ՋkQzLx$ƹYl=l5lU^LW=]̕Ӆd9COHǤukɵ9 2go!oC{4pUXsؐ~ oU\^vEWھ+A{cD@GF8dw 2e_̵Iڣk,݁Вfk;Чz=3j=VܼtcCXBQT+.h|gg'Zî R6'/Տ+ZlY2ZتZՔqҡ-c[#Lnԟ-P99#5X'ًzn]l+{MSvBS״Y׊Z4cmT;h}O#rݳ~cY{Q^:22~afPYt{oxFc/߻/-RdaSjguC}ډ+s*z_20ќDž:==2:ƦME[=deL5_$8'{ O*m;+,~^YZ2A5<+wk}u9/uY|,V|?kaۗtvDEK4 ,v9u빵u jj,7zր?rK h"dKõmVYhcm<)~7tb̌(i<A; ;,ZU +(oRdӺv< JD'{"u법e^D{x 6;h۾DžmC_3nknUcطD{߼jjȻ.[ui4WpN`~"¦2VG4uf©9ueONh9k[7YEOBn2f0A](,4W2yv6zI6"^k1v Sa#ym*l;ӛdNr>FT*,M^Ԕ5j7! +݉mҲSul cUR~>Ƈ;w>:?KzޥKdj&8uDw$-qK2Og6@:'zwz~38ʽ^Գ3i[ֻrcS+y9v܈^n)[paA~L= _5TH +/PwM6Y΄CDhwz=+M(',,5 ~mD ]Y ~ ÒWND掇ի4\)MOƲ_o}M鲶=@1So5#H˱o֦B +OA*U678}Qv\kðU +UUgDS$"""""kg/P Sba~caa4#vf, {l 1Եb""""""""""""""""""&;ѐ)RUƶr] +LF򞰩[i} +$s7<;z}=BWbWڮ>/MM?Tƫjč&HؙIEֵ({Ӑ#u63zO~f`,@~lDW.,}pP@fTR6 2s5KT7;zx g>oM|udZtbtO`>BDԇZōBSf{޿Ex]+Šܾ'5#=$szNpŸB~B}Xx .PZ75lo^ª%B$riVmkm.[Џߤ +iCaU`~/v73Ԩ-Ȁ]ɸv=νfȯ* |έʋo@ܐ}OoآE A#c"ŭK CgXc2֦C:.=+lCg[g|=Y,# Zarpn l|槅t2歏۹B݀驫/=W-īcۗrҕ=<ӯcZV~*tBh+0_ʭnB-d+݁lZ1%_-`v㭖'B+Õ{+dYՀ:*#'1>S6TvR~]H9ف ,{&PN@N;rč!vOnϕu<{lpQ9#{Rxnhc_K*UGd%bjW㯧ϴtl{{b@} b>>oeZrm h;zKmZTlM؃:QqQ(`uϼ|MӀ,r@'S6_L߬ղNj3eU[,7n= 7ȔII֪5+_o:b>ąA؏!kJ6oKywaukT\cyEnShBK~Lĵ֫~Ul]' +[l)k,/@Ou/=;' 7Zlx=kt˱zm^y˹QmǘaU';$whI1MvfՃ'd#zw1:}UN`+ok1lOIu鎍eUIf'@6I?!56UR1SVWF+ritfM2gfγ)'`oO|KkPLƻ6O8<)>=p=V} EX[ĝI { y;p59/mo׷0}EwVdR=ˇԱ)pI He` +r /q[mp@>Q4r.2q +\fT 3z|$rl+)}G IF 2=Xv >֧+X[t\"S܊:$I$}ǎ׿nURK )ڑMįbrMl~o`w]hol㩂7* }f6My8teYNԃb""յb""""""""""""""""""'mZTI'@ܙo'[PG-%{I? an7Poّjc+$ ;O~K'` qvGvpG0ǹ`gO9^_S붳~LOn+@S`w4zv# +b?cֶE<~}ԏBsCg9!]T|6uIOĿ+^1,)6̫~%mVz]4Bȝݏ_N Wd,6dRFqX=`>ޣ+_ N+0`5Du5->8㑭 ԟ@\J>oT8n]Qj YCz#S%V^0biJYNH[R2~ޛԓ=S@n!7߱}=$WK(8l0.D7V0|kw#և0_ULKQ`KR$lz'ަf-e=I*t'9oѓk]%<4y|<M o C*#uu;vlVunT1ZX@CZm߾{5`ȴXQyl omdꔜ>dEu[ƳZY*>|~[ØWsc2Ʊw!C2qq${ Y㻅=*ð7v7׷p~O=v+<-t=RBw%H2wcԵR/o}$7RT5G\/+C9>R> )nk/nfGV܂ܔ-!{G_">s@)"}hݍ{ а׿`IOC6:KcⲝmY]/b۞Edt^kS7RǶyX4AEHE=EݐPācX7:CPkZc.vPY=wLlzQ ){,z0-'\Q}}$GOƮ\,ץ#(]F6YXY]9)vq+Y%16Tmtj՚fc3#o`:,?LhH^NOP!eu9|x {l΍W&XԮ=@ؠUXCyV6 s^MR6tBgDއOIk\v*}vy5aLgSӗU,|ձӉUmn`+V0)jݽRZD-igН{+N8_+2[[qN$^u p]ƻ2lۉ')ٹ̥&[_u6U,|8ʛvgTzwByiIp +Q]&2?R4k]e./4lT/È#ofxz׎hލl#) <37j hߡȊFN:6~I;1<;R״qc[YOmN$ o…Jmw;G]=w1| dRW{<[oBb?:>=|}G;ӑXٸSdXEd"g()sDR[ōǧ5jk-QkT?_L?/ȔIYgDk4;1fP9R{՟sAx9&NU".ʯf5\AK2ܒL+G/4ANEeh+{V*}:zUco`f~\Tmxz.R `FqnU?~hR5ׇr'(e)4kRpą &:_RN~F۲նo|r]Pv>>4ӎ edAn&l66폠@9 Ӳ{Lsh&Rτ$)r݇C/b2\s%MmZHlHܖ=P6mOv B}i>nIJޥWQ4;)-JW+Z󲉬 <{>>ީQ)_j)j݆ӋY=͹/jGUJ@N+!qj{\(,gJ6I ?P¿㾀X(F촠5(ʋ~: Wv **}OSVAe`~ի貃@>疡qַna Uu,pUkdEo[A}s؍420P{H +zOCNįbGv-JB&p+":^><:Ztu$ I>|' *R^c >1lV }G^v|׼恂>( >45=DO޻ϳZַﯔ֨I +> SEb cz:7=DOb"""׵b"""""""""""""""""""sK?8u|\[QR.UseTҩudFUcW}-shZ8ri);O:3|#dkk믜Y=W|̦}A`6m]Kš)UP/B;}oY@'QŃjACg +@$lC}νf1ohHvTPN5nPA;pDt&UXω(ݘ6*nPC) =mr.@_Srd z2C)0Gc2LgQʶ؈XC0R {! 67hMiNqO?l*^AyE~aw}gKwŁ˴rkۯsjs^zC|}u<ߝF3"b!v҆uR#g𘺯RNG;zA`g`l3~M+lSQ&^#Հc'.4uZ OMh;Ջ6tDjܰ-nx߾a~h r7~eDsfZ`Y +AC^ׄ39-ߔWIbA ~%J-eeXpAӚ4d[2[qMB2UG]0 ok=g+iԇ -[)@w;Ӎk+[Vr)R co_Ƨ>f6/ggt|EUu@.ݪ8-~&Gtuj:^~Q=]ִd◳n[roS}!iEk`vUE{6oװ]֫#Xl$7jҬJEتEUnMv v&uG2W$OՀ+řP}{H>G^@8]Ê(lUkR[;.,C6mYN7L4燰2gw ;k_ML6-:V]u.@k|NtK-5[}m{f%T MVtkϢnčժ>0%[b:VCcfrky֭6n+Q*䜓aTf ۂ פ#7]04'ZÂ;%oOqFR`Hav)9j55UT'Psl)bwUuW_fp\]>xNuFe~ڐϩ z*ǧ_֊q kq- >޹ujgPX?Co:HfV]8AN4lN8,O$nntԅYkbK +ȎVF:Xѵb""""""""""""""""""'+[TAF؃4 ͜\*0T%jN7ҁ{N'd{2L98f'ukbev=N_-o*o^f<ʜ¾}?1RkuO;k#C]kRP{!F`G C`lo롹zs$I1jR",X 98f5muaJ=={M*feU  XIkWhªƢ 1^!Q|Z>􎜽+e;46I'Cl_Enwcvȥz}HL]3:M##J5]'ʔT+Z@z۸g:6 Q^R :^(n@`Aut\*jǒ׋q65_YN%TEpԪZ/X6[: +OiӁ$8Gֻ 뮦W~ұsZW\C( hk3ʅ Mf;QJ q]fՀԕ)m{jmM+z6.C[Xa?YcSkVqn[`a465bCp-^ʘ X*M.Y颺ٻU{'33z|Gf>{ȯu +J +HɗFpQujX2>GwIŽǥ h\@mA_OI]b@@ 3:;8N>q +Յ@$q$s/KuWbdN{X E['@Is[W8@+RA| ,JUf~Uj_OIҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb""""""""""""""""""""""""""""&]ɳ *{]NH~uN?A>.,@I=G<p\*:G>mӚXT+ǐ!CklDDDD*7OThcDo*J:''m/z#BdOڴf:SDM!P@mט;AG5zev5NeI3j""""""յb""""""""""""""""""""""""""""$g+;_P2E>>YE5VWgU)zmYwC o@>dDDDHolxKDOمVk0+n+ 9V +H 7M65ݭeU=?3gtۺ]VWk#r䠂س3oZR"""""""""""""""""""""&H6tɹֵb""""""""""""""""""""""""""'k*XtI:3L#_MEg ""/'v ~Iu>_RadeaV_D"mDDHz=WZk)%T}kbdI7qX,NND\q\n(Ȫd%^ғk⳿%$SOS|P^;t}Rr31 ']v{{L1zcYcUR'&MT d+5!tDa߾DTO/ڕZ3kx'#BlUMY 3$0 h{@xMY,YƠx  ;G1+9ZOҷ qbSǖz|[qt9C@}oXvL*GBŰ_N6KhԮ1lT%kǑns} ceVp izWT纊M z 0+Z*yT36wO7,GkYHގ67)p:8'F{geqCɩmܳi/"t~z-iR@U{rONgtzSWH̿۩/ŷ3@JF,nh[]c"-5;I5=/*մ\=k<Еko*)X=MwּڿɛI?fYJ=FK]qR\h9-.5kZoر$9 CIdV:+P(~Gղs g̵QkDlK>޽_˾[]joJɑ '-{{̖Oz;bN?gX'Jvt5i|ΗӲkyk;XZNֽ#ZnU7jT:nE0uyB%y+Ո, :Y,yWb?uncfw|:I8{sf' Vd&>S_m՚l;kC;ގDDDDD@ѵb"""""""""""""""""""""&Uc>9n<znaī/6.ff&z[gs5MvXZփJC̱#ߡ=KOK!.L{vw2d|f Qip6nDHVwdd} pg=7f<^- a +/pmT-H\{zos}zeVa0_Q%I/k}{WMv=fDŽG_EM6 3>ރrj?bf;!=74>߼lcYXcmh{쪒>,HVUQpN%Hm=;OӰ'дs, I;oy4aԫP}ׯqA~"'7iFĬV<AQDloz3&~ +u +nHڟuF׼ktM<>OKӆ< {Iޙggˁ>-I$31vuI6b"yt>t)B J@]5]34^lKw'ՙN؝&mMg=XPr[(6B}&luJwҨ}½͟B[l_ѵ3[PJ6AD4G7XUIދ~a|:(:F;߼30tqS1LDz ( vWۑmO rb<ѭw+2cJ}OsOPQA⥙>C$`J?IDDDDD@ҵb""""""""""""""""""""""""""""$g+;_P3c;װ,v{MZk>*PyKVH%Nd:"k2q{h nDDD9|ljDJHTm_fijVARh*[]3f"'K0`} _e]eZYA"ީn""""""""""""""""""""y#3qX?풏qӵb""""""""""""""""""""""""""""$g+;_P27ŏp@B㞉ʁ^q[\Vxj0gN>|r.ZShQDZ슥F|.AL#7/3@1q9*@%s^7N)~ꙕ/X鴖6ހ _=r_|^$60ry)KФ5@ہa‡ oUXŷ.g*$o+=@Q7Wͳ] &eO >z0u,`ʂA<E#z$rhd_Ea6Og19(Tn7O>ǎzײYlR4Kmf?Luc%T.@=oz>DD*p"'Cd o6gʖF`lOq>T֡To@ 9(=؈+iP`յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ׵b""""""""""""""""""'[z0 #=ƈ@dTꘙ myvyAί56c]w]٬(WgdX95t Lzkl Wvd\Nnۊ̔ϧRRvc*A)DAy3aVx,<ASVGЭd!C#@ÍrZ5gߗV< ۿonM&=]vG_ W-CuˎzX}@MƧ,<q%۶QױŇ݌=\&@@^>dLbvzŁko,9 3s.X::V`dGY%}/7oEVX8À=W.Q9c+_Neyk]5,pkt:V^LX~ αk. oZ(mM#;oJ@l$G@6?[ +O]gZ~%2V`6?"'9vj޿olgOYg'[X1T]H-ɺ:6M -ysfxhf<,F *zTIn6YNk\v{wG^59mpT%n$ad85I]Wbp ĈOXǷg֍g*-SPh0:M[I$Y$;&ȘW3BFpmJyʧ6rsܨ +RuN>l*Wz{,% qa#Y_ O7̲XTW"jrָHPjKSoKê(K`ē߿`YeWXU{sGa$yt1sH{_9UoY-1XO8mz̾JONεc1o1jGTT=iU7p OeY%8zC+A"""""""""еb"""""""""""""""""""rcZoV4cY$R$ۺ~|=&QMP${6;N1mTU-iX]kkJ Zqְr@q޽4>z#׺a*%9{`UM> 8tG7ްz2=kb]a1iy'2Sfc)k)u;p9eP/O"%@ގ:9O gمb>-hڷ*l +ߐF׃*jڶAaZVR0('| T_yY9`eqC{=]>GXB5[Uis)`JT~ۚׯ>,m@l qaQ!S'Q '"}۽EHMXf׼ҳ܋5o]eܛQ1?ק/C˰Ut5V'ڴPO +'`~]EqA#g9R8O}M_? +1>muG]':elQ8)};>+ů+`9sf(mvW]G v&|ĦŊ0 +4߶jX'Cjk~Vd+?&68ﶏqԮ,1K>ʰ9,CoOZ6K(ܣ*8PX /qʦ r,@L+ڊG%X8SWoM~v]\u @F߳'Lγ+.uɽmӏ ֫5ֵYtoM,Åm!~v~#^鿞qh wkݟ qx}_>+ņr* @O=q'7dV_Lp^C*[!d]rZ=F#nncZVef#GjH2?xC:9XlAk#=>ޓ!wq<.O"ǯn>~稓oᾖ +?Y ^5Ս}S5:(]38y^>VMz|unDDDDM.s+&ʽw:w7b$GV +|jm™Kj*@_Zwޘls~'Hz{A[|m‚w-߼Ukh%_ә"&S8>F]^-ŖZl6@>}g* Ql#'\N/Se<`~Ac ;'({*Ph ] \qg͘&KT;8 Jg׵b""""""""""""""""""""""""&R?bGx3'Yγ<ːxb}H{;Z7-E|<@a}ɬ^C}dG-Ҩ;3oR!' usc 9zOy˺T6%5y`lyN&} 2>C^JA_;.P1'⧴>,vlTNh~]?/m*a' w~$Ou+,O3ίup@-uˉ]3(-[mnR55Czql5؃) +/el~>jD\br XAH; {ͯR|bb.+^a]=g |-_Mon?txƳZ\xhq:kqZc$gznmO h|Eo@{fW}CUp=͔?R |D +~۹7չwK#}i{AfQo[*vC[eeuTk,` ;3JNNƺeD Kv;=dX]Si< 1b˯2, +ѝFi⼀'=OoOh~`_Ƨy[%sxdfoS|G +bku;7u +XF[~~сz荀t}Gq0m9c_c~ս%Ju)W&Z{=~m{kB_'fސV zDҳ[F?Lл&ӑ]iZBFP{l.VA{c*|( 5$vXCdR/^H~;v=^jYf04=iˁ|ޮ0n-P8$voe)'uf +X' l3b~ɼu-j2o[l[wX_Qv;W8XxVGb=?󱵾x Zq4kOw_m!O 4>R}{?i9~gUKkƨ*yJ\0,KFuU[媋YyhlȀ}?dŴmH##Syّf04=iˁ]KM9VWP㣢@H:>؇[ZDDDDDDDDDеb""""""""""""""""""""""""&Qz~Oq5ʳ*G +v][{1#*\ TUޥ؝D;ۿ~~?t =?&6EBCZE%B +ObIMQFBc]Hm|2lYZptOf!uetyu-U +P}azm|)_[~cޜԗ6K>u5kySr NJњKΆpSuwTyTEwdZ9ҨR~{ROibt-_uFFƫ6Uh$zxcnk6}S@H;e؍0(R<JH־߹"}=N$=rv_i"[^%Ÿ";//'ޅ + RH 7_Y{ _!bAxlz{kS] ӨNj*n\A +gCrZ',ZN;2#3Y Ymw=nb"~>c®3,Nw1z%nnJ~>59v9.+TO-ʖ@vfgF˿;#16TWI`Z>.['GSX@B Z3D}2Ra#،=Uѹ#wtG'J1ﱘb-=6[]Ⱥ>ZvE YYn,(~c=ǧpwSl .ȼ"٪5e_h)6ʏN +)鑾ۏj-ٶ\8ZF'd:פ=o tU;ݶ7f$L.'묹2ۍ1ThkZ1u rQRUG֋_F%nW'gg~ kX_c2y}62ې:!14z }ʮӽ ~zGu.DE2T %$GgE>߭_sHo].l{>`]]2,U qQZOoSSI|)I)[P_vI`VǙlmrr0ZkǤ}:fU +tI#۶Բr.7ʭZZL0ꦛo5_UmSlG3uIɸTyqY̖)'MN{˷ѵb"""""""""""""""""""""""""""| +h Ob""|u>DDDQWՈ +fv{齇?cDZ_Sx3Uw֥Q=b"'7'؈>}^DDDDDDDDDDDDҵb"""""""""""""""""""""""""""""""""""""syio72Uբ*dx$QsުO,%̒+jd$ b)cWz漀&\Ín-aw\k'z㪞~槞nE[P2+1J>ƦzcM͈ӵb""""""""""""""""""""""""""""""""""""&;޶X$lGc}H~袤ǻU4Ȼ aa~ͽge.؞*q>uY|.q qbc>3"tX4WPN=TD>ºgLJ jj~+1pVyJCLtﯬXaWMȊE*PI;qԵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb"""""""""""""""""""F2r23&ЧpcQZMc#xs]0 6ʞlz͸+:/αS̱kNDNފ>dx0y̥ +b@$qR:N@WaiBvVO$b&v}]:2@ 31: +$uk\r]-`ka>8f4دFAЏ\YaɁ!v5̑7&B) 2v"""cU(@`$6ݻ̑537Lľ oi!2v>V 1O`}7bbCP! /ÐV YTu_o֏sX4u3~^U[2p*Cjju,~֭/g ^-ͨ)΢m,Se\y;e62)'5Wݏ[xys nmDOܽ'؈gяuT=,M׵b""""""""""""""""""'C<壭o^ӋRlq]P|24Kiyw;qd2l(ZYİB 6t}Wn}cj,!V(7%c住INchcrv&!{.wck:@x_K|RLN# +u,eV ΥU֔;&:}B6Ek]AtV~A74h`u +)8Oi[+]}} HUۍr ʋar-f:|E13nNSc!E.lCpҷ-#dlk`^p|̬|5Mb//c'1ZeֆI>55aӌ-^ἲݒt{]W6m6jۉe>u~SYCĽڵT듷߰$`&U=@⋚*OSwى;vXFo9rj@T0#fEBZGħ4TABu 5{Ni`Y[hNGu;ɭԛ'EUPIW& BUIđ;3** |Kv;W`?H|ɯ U :LOR2(pXl>}3Ȍ&}]Ѿ~G>u +pVDk_Pwؙ-5skV jWЉ98|ǜ*k}ܮmZX>އ2?;尵Kmlk%}$oORV6kMZu tRyc+}HBU{S{Ȏ@rbLhoC;wÿOy84tR*{T + iXfv,HkdIK!rN;]KaYPxXU=0{gqlijnA.Ɗ>ki?m4E6e--H#ίr9 'wSw|-0A8u+z}usPk +cZ;anO~^^v1hK}ڬX\xri_P=w`kT ][Z;>ښTݏ^hjMvZP9qXryh%u=_ *geW&+pbXo(c]̾@+Wk+۵g[70etGxXz()XR3NJW, o2ĝ7`A= r:eMpHR{lIN=z?Y]Oꖟ2짩!rwIv6ߪk>BlPVZB?~/Oy}2+X N;gs)^GxZ걯5(/fKXkJt5k l2#V d%ntIغק~rm,S*jۗM@w۴GE(, @*RmOǂUKr/z@'uV̶X} A6\lq˥#EJRI*A$cD9S:$7ߦrtk3]],%7Zl'd| ۼax,6[UElzy1}A{Ga6z_Tޜ1y6)dNr1cCB/..mNw'X>ŬQe +3zc9#Cx2[+zQG`tGYҏNۇԺ}!+)oB1JlNǼNs:n f C]Ҕ{SS=c +Pܕ@db>ju$b""еb""""""""""""""""""'KpXWUM=ezPT;o#Eqw:#vV m&U'.i7rY@2o4ts_`g$BwIZe T@#lz-WijԆȮ3&cԷۿi_INFcX}V<]z̺ zMƲ22 m2;~n\[s/oeN kz޷"[Vbߎv0+<\.7ܳ#"]jlvaG4e=-%dGS s1r>O5uL:~u:cW[X#1t1+}%~`n%8,]otv)FL2X̼m +*aǬgHL9w_+Vm +.F +`tF`;:<3(RĽh@s7Ö s2p2`9lոF߱9 +ax~CԡRWAԐLlZT%r}4~s/Myא#.:#n]m{neNvU_aq2'C3ݻi{)lsnK<%=IGOCV]_P +Gu8|eaI }z7IۖX22^0+U ܝ_YdWԔ[Y9w=𶓚 +?}kS~ij1kmo36nbd]MfԮa{&=i_"QWgkgd_T9Y5aqۋrFǠv;?)cu1UWI;G}tۺFZ]$Rb$y)ѵb"""""""""""""""""""yjY5--Jtt{"""&,Pk(٘*i`6{jU{yyjNVmtYbRt[]η6"k |mUIަO.ϠPU-ȎJv6=G&DDM^f542ЫuJecz[T2z{=DD|k(gP"bgf +6fVꜾj\=Đ{`ۈ_QǶ[؀M@BGl_i>~W9ʺQh#Rx6i3>Uv.puf~N5XX Qq.XR`~w#7nQm]ըTƮpĖ 4FTA^:@+ɡc87YOI>ޓ$~ԵoZʧC'*ΙE [ 2,o3]LA▸~I<:_bonDo[vY^b*fF,XDP=Z{[ג*̾sߣh';Ζ H +Ot73%dӓZ! տ=K~aKֽ犾W3VB,~L[@)u}&GbUYbf k|>UlT`> q$޿f5Ez{cfW ƧR6`B7stӝԬI񱘍}v➚EJəjVı .45v>jQ\˭Rӊ;`nĀE{%ߕV'F+6 cȠ} Gc{3:}W~a{mlkJt0ubcj4弫qBlw-UJ8 @C=~tjf0ujJSu;:v?KU:RdQ`݁nzg"-t b) +Ğ_ג1mO kp|tȻ!}{Mn6[_O8kxml(zOS!^E祴l^'c̝w/I4+2'c V!v#]]uJ|8XZ^<ͼ'@I5SYJ쩬ӑG  .;KHޭԬ-5qGcoC4Bz^Ef3ڄy`6è? )vf:*N6zT̻Ĭ6?le-['Mr*Q+zOχеOjٝuw&=K*l| ¥7'z{ȧ_S4bnɴVtyksչє~lNsY9Gֹp-IFMkkƶ̭4%Urrr U+Q۞r I.~_p UXCEK(]}N Vh%m +܊Vm@ބy~N )e4ej~m( +;y}C'"!P\vTw;r"čly*aѓM +]Wڙʕ 7d`fQ$el0?uF=Uً"`l׬,\ jU**M`,Hök=u/_EhSY_B4۷]Bw ļw]ގ{ӵb"""""""""""""""""""se5S]-C ]ow54neX\)M;~zޑNQϪ{hv! Mt~KWuuRēU; =Ϭ]'+6̄llu!O9$IųJR(V9h;{0?Pjƃf]X^hMz&'@at +ڙk8 ` .AߡںvP6g7*lTLlmqrθUSpW9VjB*@rCK3:M; g-;݁${>upr71NL+~U5l$~3gH^ cgf L8Ή켾הfc? ז?ooHi2RKeЏWp, 멷ӲqT>2Pk +M +|3gK&W@XvLrխ%/Íj8ǹ0vUyXKZUp߱C&vB#;=YǮZ+.>'ޙ0ҜfZ@*B轊KG]&3'[(_Csi:ՊUI~Ckkj̈́ȷ}{l>nU~UeVQۯ.V+[p# ّ]d%JxG~rּgdUR|u+V~qI5"oWn>^Z%+K ׁbW@.=Ϡp: ad nSF,@W0dtΩV\>hJg_Y}5c"YQĆ[Z)0fySHMNd9X>;I;ӫ3闽 i4-߉R90)M301X"Q,\Aoŕr0{zˉmzMzJ7'%1(. ~K'm}&XߑTۏ怎J^@' h3RQ3%kZ\vlfu3o|6G>Yl5}<$s|I:EuZ2a6>7ݕZgHF\KV '3+~e?P¤]xL jKtp.}5+-hj{/0r N77UgUQ-c}"LϴWJiNUvT@'tk4euԎla^nw@]fBʮQP5``mrﱾ' /##+)\a(؍ZL9(Fit,*zO^9*':N'ZtӺn%_+y&>i02V^E؈גck)`Yvv>|;ӱs͝;b47֏^rd`%x +Uv>]6P~R5aٝHb߿a_@^0ɧULUwok7W(?eu{3+Qp!lOq&DiFJPrpV. |:XR3']ɣnatIӲ3;X9>zd/ o[O]737RTPqC.޵!ny=;^i6[oJw }dK|7A[W_QXX)+pa]4G  G"J_cl qgc]KA +ʻm-_͝3s3:n@B3k!Olo0tllizl$=>c+)'>G: +ԢgCgZ״xpp(4dEZ {׼&OEO-Wae*\}xmGɷݔY%# t 1?w]k|]33SN(* ZS^I&O^є6eIFY^oGQյ6ZYv` gBeFۼ_KYbr]dh*f8Nj_ +lxﲂ}7&du<2jU9XÉ^3GǣO<,^%(tZ$ާ1dt Ğd?%$GM[zeS?6F1r.-Z+u^`{uOxeۉY5RS$""Եb""""""""""""""""""""""xեK`~@ GfR *O-nW3ykڋ~e=8#TJs^,_@o]5;|ok" + {<oH`'Pǫ"u 1cW`˲Dq2DDDD~Ex +t·̱<|Ѕ`czGQȭl]y )RVޕ@'6b'5>DDDDDDÕVemU4UI霾JWԪO}fDDDDDM| l>}5z߮46s/ǭkLȥ{o^I]kRP@=DDյb""""""""""""""""""&~jt{rlwmzA'ɥGYP+֋eaWD lv=tޮJ̊|GDZR#lƙIg.)uuJv6Dj*k+hAG3zb]N2@@Tm{(iu.v5ڱ̨OY*LA&A냧tl r(tcc!UC’}IL3\1LJj< ٦akngx񯺚q߳Ҷyp!X164ͥ;b]W qs~-P+ɇHcͫQc;W(2H#@53P\ګ؎Aֵb""""""""""""""""""&S[BXkn +pC9j2]mx`n6E7@׊3Aotu~XOwCȱ'#}&χq:1-ٖ\U~5;q:%>Ֆn#¾ $ٯ +ۇ+!kog (>N5YQk?U%D/5QLgIǙ.b߶ǮKͣ?++"Xً+]\Rf>"w?O#%k&QVN^mW¶WBĝ'cu)[CA"F'ί.5KXckgEg_GTN1D(] [ iס/Q^M|1ѭTP@${>95UF5-MRNN]XXbKvC﹓<ϴ 8徿;OFnrG9;dɢkrvt~ltVA8ԐA?2eξF<6>I +5ktokGbcerjr6MđYLq}uPԵ#ArVGMTHv$FJ+bF_=S»iChZ,A»+] tFiONͱ ^nǪ#&.Knwv`f!doMCHU +ā#a6.v/Q/aqЂlfVpm>.oZ>gbdۛqlq*hC6#2-ΡѨ8jƗ PUbiBC/juN3+XV$>멏&ǫ"w]Έ] (¯>~Pɠ'`~5k ~0r[cU*-<ޔ}FJb*A? pZTT^GoCRA|1H(ZmQh|S4DOҗGP}A 19(@9߮zz.d׳'Eu+zM_mURЪUh=DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb"""""""""""""""""""EvK +1r}~GoG奏[qo}J~PllƻZXF%zۼDDٍJ؀oǯGzՖdM؉WNKw=A>`=Rzr6Tlߢ;ٚrŸGčo}7""hbfnEXUGn=YGF>~h,5;jg.;}sJ.bwVYډ< 4BJ:$ڣ;޸Q;čnc)YuXX4`H7AW_1PrYW@'5LaNZp*(w'Jl ަlⵏZʂ>~4P8`mRjmqM܊dW` U蓢]Do |J)s +@Bfk`vY*(7\w\V 6}BneXp)Ukr߹\K?EQcrac6Z:It긖VԒG3Wc[UnRly+,X$( ulw^ԏRKKTk5eEK۾l܋qU-sl| +ȧې;~3GeclY}a{Bw#r׽8AT=<%48S}{.P9,QN%it>aoXQTߘ3mX7q5nz%x:޹?jfU.B v:K50 t h#)5.zEf?<̖ȵĵ?i~~N{:F2鍝; bO(6nm`?Dܽ͝T.;z1'?/ɷuVGzǥ-4ByS6a>FVO%laU+RܟY&:knsmjޡІR6;|zyT*]dkۼJў1,*VX 9 ۹3/R̳ܯA|F_`ɜL nԺ?YKHJj:Yy"{o\F`闲uLqsic>kyv@I[v" = ^eӱ`XU[ԅ ofg =$oAՆH)jYC ]zO!VZۺ&H+ϏcO'e+ݜ ?omY\x+mRmu +q4*%՘lv;Q6H%(C,Ao*ݸ`\.'|[la?#_OM,l}6żq3^¦ؐM$[>13&b+@u=O4db,dʵƾܐ_TC~&=^I. Hoߜ^ϭ?# sשCr:f+L8B˳r1^un|k}ϙԵb"""""""""""""""""""CjK{ʐkIR˱v#_"&G ++19y>WݦusӉ?A-h>zc!Fc36t2+$:%yW}- a*O%nY<9^E8V]w_2AgUo5s|?: (R荌u +b zo]R^ԶqJ$g0ɍ}m/S1[T~cl~ Ͻ;0pUl}x7Na1UOLw`laBLHuܖYS]/cݘzD\0+JQEzVP=be蘹8f6@kNvANO˓Wc^nXaGom2fuWǞɬ{ /:h^Ht +R5~#b; 5IifgQQa<k}d0ꩼb,r6>:؟n6:Mmŵ9h5AzŲlI $o=ns>o6^*@߿dVgbNz}:8$u$yYX~,4'!І~ P|1mn,,̖74.D}G̋чZd^AP<ɳچa MOeYll{֗XC:=v˞㾇6'}JRSɶnhV6|'|h'"$VGq^`L<[_~]čnju? %GeKc|^X(|;et+l>ְbW8V~n{wzzk^ Us +loz~ou;z:92S+[]aNkOf55 RG74¬we?kZn6k[zsCʊXG< ) ;F2YiWSVV;:;):}.nKvܙFvQC^۞:6Sv6}a6-U`JkԀ@f\N]e[RJm[ѷF)Q+@sb;6MOJ#J{'Zp(k*j*#,Pvĝb~8{fJ2@r,˱G-6~c"ʵd9n< &g5V6rպ뒒N 5%y1bŏ#.#ӓ/c6dU*DT&_B7 {w^&7)6k]*1tůWmw6 ]nܞ=~?'j+p@:Y> lz`AWz0 ~sJ ckg|H܍2u1XJ[WZM +aٛn}L[Nz+eb{s#/5c+ +wfBusgr{ꪥo1K~mnEG[}t!ysWl~BI{lDDDDDD@յb""""""""""""""""""""""""""""""|ֵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ׵b""""""""""""""""""'`r+l|X/}-[  : t=OjT1I>}T ·S""xŵC)A?]xŴR>DWj[,D{.}N-[7ă<>DDDDDеb""""""""""""""""""'+[TAFg X:J!zqA*)t=t +l.ruHU;#`zj: Y5;mb +iO0{bb-9-O*2X?-[,c(XB15.@jty/8F7oXY\=;qG!~`L5,+b?ge*9 PtH<GBUU"Ď;#FnG|buԾlX([eڝ7r")fbtRMUC%Xt%P mG$b""`̯ U$z$NJ^į9}AaFGxY#LG}77|'wR]CYfAv5|;rm֪~3^⵸'|C$VNe|* V { 0>#%j>>Q ^x'-^襎#߯QN=V^. 7rv[4eYѲi`ΡQWFGˎM|?oY&jl<(- ~'NMM2Bt +ヌc>S,\qod~[lk`iI~bcU"n~_m7-sw_έgDU#3|:'r#ah]RVYEC4Ã6=n +˥p}0bظ`.[` +QJN.Z~:nV e}3q'G3UjW`odoG7]K'V{ёb*+($Em:=7%o?;3%jl=[ +o6O\+%Z-kfGd=DZ>]e>%YO'J[Y 0Xzl>W+Qw7qX,$^"βTEK:[@%mh9%d7..JtrmżSe Tnefkgb + ̅:{&1:R ?<-[(>^Rtw؝z3 aᮼh\]rhOOd=o 2פ#zQ;ŽQ7Jʬҽ!3A3G5~َ|f,VA' /_ΧfEԳ1`}C9B怀YJ3čl|*VjeJP".@lz6WeY`vc$s#WmmyƳHR7skՕٍvUaګb,$l:=2e͠]~lx0e-[uAKl ) cm +C2Mz ܯo1l,ZWb[~~douEDj61teA5wz]o  !ylv3=rr+j쭭޾j:7~ t@:10eW$)u]  asgq0ݑh⋷8N ;l;"IJ._{,Fclat28H "mH&3+˖޾$WۖH,w!v@Ov#S*V9Ҳ]reXw0K1g*/ h.:;oYLk]mu_jB\Kʏ^G3hɤSIe$h OPv>`J:jml +7jŵ u e$k$ֱ͞lEzB;9mc{fj6sZަe \/4o)a[Y)G\̕Ų*{+wPSmir],R^UQ'|_,3h)hf=xFCVi +J޵}wkZʹVttdNM*2;F%Ht 2Obn"" ѵb""""""""""""""""""'t;9 GICƸyG"A?'v'^h?2134/Օ%YZt{yB5_V>5]_*,f$|Dvm>yL|gımUl,BeD>hFsX]CWfBWe%pf?4v{ɼ_;I UYkbe6 \[:Y.U8j\"^GoElOCVlqVs +II`[2;ߛ,Hٕ_mwߦ1©z2.Ef${fZlh%T)Ur9u=a;nb96qEUP j՟[y98^=׆RCR~uT' om~߶Sa]OdZVjze :#G dor?M^ \|&P/o7zzwPd'd5}Fk 3"L +'ױ0q}&#U3|G +[]gIc` 'QҲ<5^[(}/.w5Շc:>v[Z[%` !t?4su8((ֲՆ+kt7im7_*kz.ZyXvV {SA:FGG؅,YUu``pI+q9-صӗY?>栫,Cg1~_/=8Xu[v Vqm}E.vhs>wNz +kO-˯o/4O[ebe6I-Pg|F&`wXV]Grov(^nU:z̾sjΪB-'C`uvԭ'JV5jm Eg_UOi϶וxl32bNkOys"M,VFǨܛ}#d([%ކo"?+ٍXaN:3ή=ZPlIg̏U-T2e^Gv̊x o{=$JW]s#>WƋru,ly,kRL؊}?"#;/_f ӏ3en5@G'[#FcQ*+[.q>sC7踸\jLնA3'#dzf ׉Wmjx.Q$wIVt.1 M|C">ޚoڸOF~WXJoImΩROˑ͎JQX X{*}K_=LKq1,N2+Q]=yMD ?:xFny7D{fKq;,[ƾm0c;\pkZ僱hz o/KulrR&RZA!@<`{ňCϰ ݹD,eAN9ĵ:f.>Mi{\d71[ 5 %6:>rGPK"4ν7JN I(kTJl^O>NYw^j +݀>sg+ȯ(j귯N޻Ct{eэxzؐkeXmx},^IŴY}Ƥ!C0C={ǿuǯrc:VV:ߠ>n׿XُmuN'ΤZvt&ωp-c+[מM;ݕFȧ-ؼRYS+^}P]ާoFRS5#k~蜏WxG&U\י +ůiK[^&7UvK"{nVEכCgv:bt5,zT,~эY^: /mI-͹[Z%V̒~O@g +-}D+$趡V]7Z@*TFߦtխKlb RtGmEWtL+XTHPx$O;2΋JjZ5`_b7:.~=V:5kF5ӡER6SrF"" ҵb""""""""""""""""""""""""&"C҅ ȾƈmwJ4Ń>T](:!-7$;׶mM#2T+ڝ̱Wb[g- 5qi^ssjj~K宖p,[&+^ X?os HߤgO%2Q^=CrTC7&PS6 }=oBfDoCºj˯( +>CZGb={M:z,  {ԊP l=Nl̓[ 0k}$] ;MȲMk~MNj^k]cJ}$ܓ2DDDDO7#%=_u fL9bXlƶ&OtU31,ՙ?ڈӵb""""""""""""""""""'py޻_1ͪ޶^[*}d[4Stü}:8E;kpq;M{[` a?/a}y7Dl'=q]HHװYl* !ĝ4hXy\Pv'c@Yk[ +3‐#_YIְ̊KA}Xޘb 0}Lk.UpTUKzp8; F܎U(&GЄPX&Zz6F8KTķ=@Z֎,5hfـ`R@ Rfv7TfSk>\ufkeYHxӑKnDooM.Wݔ[ʭ(c쿤Lx*:Nl={ 2/Xr^c9w5vu5-cz@o mE.>dX;Ѣ|þ^Jr@AA2+ 27j+u-^N8H{]wYfۉn%] P@,{`Nfja\jlʐ޹i%w;}f۸c$E]I{/egPJrK3h@kjYk6"Bs3RZ$z̆ZvC0RG  l}g-b~!Ob a'@"vgCDzzHOut蹗_b=*kΫX+hѓ8g2MV8]qYI`bW`O,ʯGZK 0! +~Zrͩnã)ڑk^o~? cQTڌmk{ +;SW`yBedϵu<{خ ͽAUܩLo𫦬ȬUk*-'SwV߉mi5A:u>Yp-VjqUS=,~`~L;:#c>㸘xwq z}q,= pIy ;z!}q [_]xVBp#Vx`w^g¦\Qc˲wvGi1W]ȭ^>yMɐed2R;2#xgчs`UD!o[eְYu|iɍd s&qz6eMuVE$1H!hjcx}IcȅYv 9/lMn=}AQhcقRgy×>us޸y}װqljmVT "c^_z?mv<|=-h=|%~a! 0P@b2EeBQ¶֤W<ɽiO2BWal}CYau`QтwGoP ᮺo +N"w3>M7b ^*{&bt$}q%ty ݴ&WP Up*}O&ڔm].3ފǸǼY*|!h+3k3ўp[zx@ |816 +а^MA>>3/Z̹ͺxd$Wv&!^l ˛<?"OalO]vKmS3Ŋ&98W=uNʙ3Ov(?A{xMY~\N}@*0ؘ]]V%Gf +>V +ęֿUɭ7zG`ҼAWQ Z Ē5?nuW\%%j~'^g&ژ22;u,r`9޽u!3^^WI"[xXyqN3NaWXJd=3DDԵb"""""""""""""""""""r6=xLݜmזrl 'xC0)=YܕFT^=c8!KX(\`؞RoL VK(W\wUdv]+MOZyalj嗑0xx^cBdbhҥODxëS-m/k`y [3tiqq鶪FeTH~}7.ukPhdeuQȵy}ƴIWױrMd)6Xհt zxd7bY׽~uVR5[F "U :7E yيA׽N{.(Je{ (œ57\Sq-`D!tJ*x; 2k %I>p֗n((F;E;5{ornkͺε*j^@S{+V=wM??LerzJ.~Q~)Mӎk:^vX\B,f^}:rgj(u\=yc%Sn惐<7A}h뾧:ٵbuFJ׍ԫ3-|*^;n'AӴȭoFVS9 WUVcTg"D6@a6zT3mJFN2b¿aH'߶ _(b P +ck}%*FlWm-F]];uʋA A hln_Cȳ'!t~*ʎ\?-ox/[eVba'|`6t==fXǯt0yקzzHXfƲ2VVm3 |~o<W0#Y"]c ׼IEol ̽Տ DZ9si¸V)(P=oݒ)f/[ʾuEj(ʁ;A!ᄏ`ΧWѱf+Wh|_Z)fvmܹ]Wbu:sS'Et +:XZ& ŘvIb5#bߧu ŷ-3\ήvAR@j"UΤ i։} ۉu Μ%b1n`5aUvv9k{?O:_(B:ߴQ/%zUB&Ň'=ul\OUe-ʷD::jf-kK6Qd'eůK;+=[/q=*WZ}"uNI"3e8tΊK4g,^/Y{SwX +c};B]ebyC(|hrlD٪Δѕ]5T2U_~ON7fla0.WQq>ߧyҪm,1*dCPJ޽{M:鿧k;g +< +& zewLGOS`˳i'2(X*U->_ =aS] i*GPEJ 3#<{jOb\9WAx} Gv5Wky6W}"2c_`#B{؝Cu^3k:+H{#2q;.6X̥R;5Y=Ķ`n~gȥ~u=Ҭ7+i<;,z:^%Wbmɿt8*[ʵ@WGgz#׆N=}MX)w @`l=>陙=dP2]Gn8&, ?g +JΉ:'%`X~B{vb4u3d\ +I$q5cB7:J!o3@u9| qDpvXv Jյb""""""""""""""""""""|e {ϳzO@h y(hl =O>ZoZ޻jՈ%A#Б? ţDcc~G.gGKݰ41fݷ$Ra@;5 ZH$lz+Z@-j@G eudywl_BG@ ?9"ʠ@| [yja߲={wg~e:ug8b3~v Y\Umw(qf`3]u(uXrO1ωӕi%~]*?RF;bVMP6vt5󞧔kP wSŕ%N@h +Z8jYAޏzRiTCS7t>U}_T)LH1;zNyj,loGZ4>0P{ѭ(+#&߷%jg0LO>Z塽kzﯖ֥]鞢"ceVJ[ 4oL2/7[|Sz?T폹$gzK֨I +> Sʢ$ ;:n\F뾾[EugUlVQ \7_ɂKLd}<*o@ lއEg[:u=OC#8/:ֵjjQkZС@h#c8_/.jQ<۷UPðbx T1RA~)ӺuȿΰVRNMhzh&o%"Z (-iw ֵb"""""""""""""""""""su22T,!}$ko*ƫ,Dz\>GT(l\vԎ6ݾuwSf5V9 c{nY[z2e=؃^m{s8To6{OUr^) ?tM^+͑ol `w~OX ԩy+ڵa9o}Z*ttAN\9_-_C s8` +w`ďvVhƥ}Aj(c}Hԟ=#pv'C6G"b+`5?$z{I#.l >zMu};v2z+nsPb´_L#m,l˩.] keceMH`=SzR O&I˒`?]ֱɈܓڬ};<,Wcc}r{]ֱɈܓ>-Aߦ;#߷zςb`v64A\lrdll~&@ﭟU=^K3wwj$'WN3Zg* ˯Ǽ%̛VuWAֹ6v\kM7_#[U68WHma6w㸬l'CfUk$z=72#Т9w=oV#g:~?Fbe6&sZŃnd'߉ 룯n[2(]nnǎz>k`cdT5;kPYA>6ϐ}bloO/]LXA` ? SW섨mI=un@:HA[%k_ͅjBGxaߏCs?Ҫ-oCͦȭ,7 ̒/>~%&ߴľ;_%}HRհ D &F@l򖵰eX.})uj2d\l @z޷7xԅn-{w½Gug97VW2pO5$k_tnYzt隙Z Ks]l :Oi+Uf]BQvӂ6|y|n}>~/5jTXt̿-Mj>~z[FсJyEĿ |C1ʻCgd AX$ 9""c[ј`HGl*&~ og}+"01>o޻k2wUI`$ sCrb""׵b""""""""""""""""""'PGJ趕sj-B(c+CGA{}:U`{# +]ٜ;qRGz=/O^m?^Qk13Mk+8jTpXl@kg[ld.0}T܈TӋm=¼*z Vh:=jޜ-FL{R%yVͲVFQ߿;3jeeSUWbip°RVH;w<Ewt7R6E'А~oW+Ek^V-l+_,Tǎ3ۉOM Z-8(R|A'D>af*]k$>wPOq؍1q:Vr:U4Qv!J}=Guy}E+;"~[ Ǿg z)[V>+ѫcUyl^㸘/[}>nVYsp;Pk_"{7@Օ䮌9/%H rZ󃟈u<%#qzO6mUYƹ!wo IΝV>tqbHK1:קico?oB"w?+\ Gg^;a{Աn[zEuSK6G&V9(~ƹr*KzdVrz[ί6ʦEv e/aǥz.vp\7մٝ@|:_4E2RA5[h +;7[Z1Wlw,X= ׇz"rC/@ufӳoNkz.,+{p;l`.'LFj&n#%ure\#h)#E=+íQ,5ඁF֏l:~>:V_,J^lOrf>ӭ SE<ƾưja:m۷l&nRV5CGI'dMs_PO Z-ӵ?"؅%ޏVRĶZT[ Z JWziǿ?;z&NcV@$ {'?V6_RQmҾJ"8⭠;Gq:]vtQeSX~-AO]^E)e_qJvHOSoT|WϏpo*`կ"dz#`[JRj@@9CZ:ƹ"SՁWO +<-fŗed_@ Iɸ&?RtM/~V龜fkǂo_ғS8XW7#>{VRlQʠf#YY7,/>3XQH +zWօQW6 +3D,TAwL*p2Phf.C|@:'EglP +Ժ5EC |"j֡ r Qdsk:~k8TT,]}A%5|A:QȦ$6m?)3(dtia͖rAEOmv> w +)yn<ցMs/yTY@<3?s0֡l\T{Xsp#īuΜ 1Cy$:-Cuʂ/Ȥq%Զǧr{ \nZⳳ*HF`=vݷ66UYiut>Ob&h[r3[uKzgL3eVK1jzGh| 鯏Ӻϝe.ZYTL͢{^"KO'[.DZ>s +#JP8^amBDt^FE5Xo<Y$2y@k]//څyexV8v⺭C<-lFE ++ +?Rc_]äܗcG/lX}{|N\}xV]FD\Om5zB̦4 ]|&^l~5ܧV/jSSt_NLfZn7y<9^7VGF+;P +H$5*1a81$; +4do^=^~vR_gc1t k_ y)IOX=7)LjNUg~s!ũC|]|£6*ޝ1p ^Gl@N}Oo} ]X@ ؂ .wd{|= LE~j +G0h}FǰK$1vGbu2q.^)^)^ˡ.ݦu*HfCcQ6y('AnJ{6gIZGNZxt Xn VEV[JZSI/+!/߲:ַOfu΃tZ-U +O:LJUW+rGISvN?h󁭜 +Ѝ3}N(l*.mW^ZUX +h&mJXknHYCq=0t  R ;e 802Fjtluaow 7Aޏ1rZ,J! h+^M(jol62}N*+OWwP,nJHDl|V9W{z@YCL-iu2iǩ*K),f 1zukr5`_~}EIB +TP/¤2E@ԟ;˴ډ:V'UULRRH9ܚ$#>؏C&_Iu{  vڟ=dtlJPk˷nbJ@@&gI*'"=e:iFv'?C!~:O⎡]oBS]>[[׸GNvYNl:6]k4Իސ'sr@rdҷbiRbGF'stl:ȴV);=<g^`̯G`IbI:?aiP*%{_Ѱl]JkD;`;0v&|34Z|,ޝtgh5'@UסzDNyt"(sܟϙ4ul]eס_Ik]]Hy@fz7NgjT.IbI,IIhd֪=@UIS!) hOkzͣұN?|k5@ׯycaSR"1%(lhnWMH{|4u ++T65 X"P~p=&[#7a5ڷYR3 f]< E`˙96" ;3&&  +J;!(C؈ѵb"""""""""""""""""""EQ[&9!:k~{z>/ˮΑA;'%[9s+7@ɐ?B>RF'Fe^D)!A$gs +;{<܌B7>]5:FyϤlڻTu#DވY I.k[VFfҵb"""""""""""""""""""B?;ݗw~z͔âCjC<\}GSy D #4zv-6-nB ;?7!wrqIJSwSmsGSԐ=dsYL<>r)<-dfX6Ĕ]rk{g1[ve=5yKݡOuv44iS +o}߂j@x˰jήq+k\L_v2*ΣwhKa6 !z+q#dY8mUՋS11kKRBL3Xr$#Ñq-{Ȏin2A@~qi@vuiG#aeeߋNANo$;c]G*RSf̃m7X3$7o^n +>c`cRǏ6ODDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@ӵb"""""""""""""""""""D[ݑUomT=f/J˭H#^+{ nHO`V>aA,~+u:B3̎@*}^g6}NFBF*H^C c5ӡҾa/k3BkPOý LƦؓVy(vk{Oufw8dזmCH]oZmmw=wZ֎`3jŎ(fcPs̶Z-G4k@ݓC`{~*Pi|=E[[B#mvڐu<2 a^=D+PE,O>ȳ[HdZוk`50Oob=$O7kR߶>'Z5][h(U!5Vj7660U8"bTz(ߠ7&NlM@ıӓZ'n}Mv'jQK9nEI=_IXcgT è-UHVZ>s>׺ص^llA]Ͽ66}" =z?fՌ]Yiv_uP @ԙ`~LJ8 +͜UWt Ư. Ы D^¥Yi3:=Yv =VBv#0u^bƔoܒI;$ܒ{}L:M[ZjJ+Z +,]Q,|gu4{T6bGG׌(S>{lO7cϢ֤gZFԓ=76.ob`. ]^]Aj_\ԍoEN}>xϱ0ՃS]sqE'@hz{0`uZʂ=vVv+o|$77d-Uicťm+Y?UX me\i`5/NM>g4NS + +[[!אz|]Z>C1'!Xݗ?S&y48 d mCyUX)!U~Gsu [2-ZUH"2~c*IId'g'e٭+Xh/omΏ}bFg!v = B`wbyyUv,RS{Hjkt_̛rvWpx%ZtmIλFV=ޙގ?)OQ2(nuؼ@#FgOеb"""""""""""""""""""""""""""""""""""'1gJEc5v)$/$}7iˬUk9 +|mQ,;B{̝)E7=4MZɚ5w}yv[-8hk ;sgm x:VB P@޹ZE` L(4?#VQ;E܆kz)ܕ֬5|FuU}"{_Ƀ&(@X@w׮v}' 7#Rٓof~@m}&Xɢ7^E:m>0uO{1F5ݚ>"ȳVq~jRװB[+^ :ׯErUK|V+6wH>X8}S!N_Uo% /Qtu&|]IKu uU2,@O,>ҟIYl7ӳw2r)SV%q{12Z̬Lf]7x^2J0(P>ζ;{F^MLxV4#0Gژs)|5ԏy⮝UXv_*@M au;~Luxs +WUj^Fl JOFFY-SXO Kq+}txuhı;'[:'Czַ`UkV$#uGU^hYI^L*vAFj) Eހ,u'̑ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb"""""""""""""""""""BwSZ}3^c`^A㣾&"Fu7_5Uܶ\'Zt_ӟzVCXk.N\չShlvܑ2.Zҋ]cn@Ym|縐7x$u :}8*[y§J't{w XS=Ob-BXH?2V$7_4[F1Oռ8]=eu^K<077ؑkcvYmJ֧* (n`- !0Ob~Ӵˆ˗]k^̍}\ v*0`Xh lOi%1&MokRTV#X)6]V}zو]ct>"uik2 Uc^׷X˿+?PX.:)^ +}3 ܋ 򽞊r<<\o}%?< |Cmk{O٩X R zTn-5hJs6HKQֱ$!NOj'C׎mʪZN܁gftNqww5sMxn}]RWs5^yVq׮kYr~O^U|#{s;umar1+~Νg=Zέ;sew`:Tk:ס׬0]2/[Xҡ+E5>}uljo޴0V8$ 5#:gT:zTmh$ y3q`Q[uf;91-<[B4}%g{iH:E`Jck^vVMaZ&9(}}w1VnOLSe͈,`/Fסc^ZΝ]ym:h[qPʷu Zq-Z+!-65=gddl,^Xn W[JNXNܗ䖪/ؠ<婹ጫm6qeHvO_ye8D{IWRz,6}t j)\3課I/JۀI%&fpj2,RAR.r[*A)bT7~[o*[8+hr$1^_153bcyz,yletqcpyç5E]H[m˱λ(Ƕ#]:z)]vq V)lYv'9WQX+JH;bkBls.=2 +WU':H޻dvr:O]M9MMgk +$l$l K7KS{Ss[]]nLO=.d-{\)s+8GΟ.Sefψާ&g'?4sP;oqݻlYycj}jٓmuU1[![خ۴yӱnoJIdž&rtΜz{"5cțw@zvs+ 3wx؈ֵb""""""""""""""""""' 6q>/Xޛ7Y1Sف,wjzreVn`^J܎;:߮+YeV|ZYPl?i@XTڡՕa?H6WYuݟpkJ7~[g^bN6_+{Br<]&d=3{.v;fއv=Ϸa^3i¨ =;O驆*-}ha3PNE*OT#Q;;FEX5ժ"ψ2RNlw's}+l6c' /d&I}vT6MmZ>h89ґXL +XٙU $Wo[I=JZݜ;3},N.}:ǫ|B&.t>l&lHїK]m~UWl= ڶ̽Gձ)|ގֈ#}Vso&ڹyv!mr]ASAty^J-mr@M[|-v-fYnew6=>]FԎ˙uy kj#ξ;(K/Ƭ=T}DÏzevy{n$~} #tTV:X0m~y+9$ra:އk,mFNDhv߷ݣt76GsGX_gʠm4p^'gO>RrrַozzƺhUao}'|.޽$܋(܌{˙M[U + @v 5m Qz}v=oEaVvmv=nE$GMNF%vG{u^OWɻz+V"i[r#"mJ* +Rh:=}Io%ESISUOą*4P[:y=SZj6PVX)M<Ve\_P6q^ A*xڑfc}_$=M/-lzAw= jg6%~X^ ~i ߌ]FPeI }$ 3(gΉ_IkZ,o96 ֋  3uWR l5nSрA`MwewߜNЩPx ~;Ur;=| ] lQle'Yw/_~f56ߣQv9 ׷̙6Zk]v5sms7]kgCdfuZ*h$m{HӎHy`~[&5um|)‡*4 :՝ +ɣ+BSD=7%嵃1KCDևa'N*U(#G@(#g_ߜ_ӆMUkB=45K =aMHf+(@rgӫFSoǶrvN@ +vwY0)ZC [^`vXuʼY:#p7GMQk_3)ֵXv-BcVVUU@ &H׵b"""""""""""""""""""$_S-qSZZaZI$n,Pa˯ӤE,װSkZBFʒ CK SS/*p76m}z=75zh>32(:,Wϰٛ |^yTmt 1`g'P@Fe:e?PG{,Z $;#O]N)֖#HVu'GZ:$]@$w Ha[ԦKpru˿qL}؟5>ϓDDDODDDDDDDDDDDDDDDDDDDDD"""""ExĘ\Z; BGnӝEnGK;L_F(paCx'y+еb""""""""""""""""""&S^vSV9zח!+@QWT䡻1=w1oZ˒?'㶂W|;:;:u9|de}4Pʻ8q}w='N\ ow!J[E"(`Gr $9=W֝K ~u[)#0FU|$lk -8Uܱ˂Va6;]voXV5k5M< y mo{IT!oO0p8u%""""""""""""""""""""""""""""""""'X"؟;%=.;q!;Ȉѵb""""""""""""""""""&;LjPC)_agů(#uAA w'GFzu~T<r$]71W6(rB[!*JhC#pzԾ;dF2Zb.P9~h~Vֵ,($97n䑹;7-o,N^9$ {̹Xf=u*`}u:OB=1i](˥x=96o~eVkj( Ygl z޲oFuSPU $ bG!k`MEc`<w&EYZɱ4 KW0RC.vG +>ϚEueUMi M'_;\LUE۔u` zu ||p='qw8#"خ3h9"5.l +qd&xC.e&eV1x};3{.]]v##,<Ǩ"{zbg k1PX7ɞl EvMt'*1nø﹊t>e>߫{:߯W]QG3Qjau1+p[_=z2guL^nJlgpQba ȅ`Hݜ:P||JzᅪmF<7w6unEt ml-~^'i||%<ڑbGq|vf)}o㼾:}O/_m,AߦvXX)v: + 's8gN~e tҖh+11w +VڹFLH ;zoÛSX> X8ub[\G?ϯ]-eLMa۱V>86.1 A:Nx=X! $y<ܔ|nsmA$z ;5c';gS.C  ѱz]ֿDQcX@pDŽ:;j![hwsz~3TI5ҫ_^!$w_ ]XQqwx+'WRtUw^r'#!*IuGMՁ 6:oM>5Ϸ;ĝ;7c.Vׅ܎"Z:>U cޯU:#y%}ke.Z}jjW_ɸw|{ψ1Vb[n/[}E`7ؑ;IYI=Ԓ}z{xqܿŵlN5}|UӮjlj8{{v W_co:ylK&4=g8{cJOHXֵb""""""""""""""""""'n?1uљSd>Mu;Ox^jfV&S}-kYi԰OZ#Z_ O֘~:M,;m|羟lywSs-QY46ޯe|e6UE|#glI!=гr2e.2\R{ҟ0ɿt H<[ч9- +%a% t_ 5Do>1UC`.;;)1CUjRAUs~cNl<U`G+]w״ S~m/dc4Z!{+WH}Vԕ1՞En3;q vcBziȵy{.#}scoPK5ڔJlK7v'=c..>XǬWaǿi_Պf_ֵkwPǥqo\ul{C 7E۶I7s#wQ5]/ +lS}OjmS>Z2 }y3H>ᜯdd7Lj3EVCv?"?L>~2[re^`=u6Os'"""""""""""""""""""""""""""""""""""" ׵b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb"""""""""""""""""""|'SMz^]$.=Gc#^@f@H̑>L4Q̕Zt]X}wbL챪V)a ~Bu1ӓ^Ap F*]fX^Mr od S560^L>@gkbt?<6MhY`q>eѵb"""""""""""""""""""qb/ᨶWn6Z(pA cNFejz Uc>PY ;) HlޱqMKXnvg}k׈U9sf~5 Qj +k8۠{c}wSsXk%zfh8dжu ͨҵb"""""""""""""""""""rY+z?P\)N=P!߼nX\Miz߷i1!W_t+9 +AյIgj_ҮĹ"|`Yp<%'C%1JJ{Fj4].D|ks~c\dmDPV:?O̦_ȶʗdz;^>sgGPE,z#TkdY;֭jT{ۓi7GکnrnB\$} K)a=W;v#R2c^,ji[6?>NSЁvng]Ժm5{MX?3֦N5f s:_$TwM_VeW6;qO8 H v'WB7ZtzW15XtWu"p]LnN2.ܩŶq"|zou_ ʷWzNx\k/\McVs A {hӛ>lkzw~G_m§+``cUPn'נӵb"""""""""""""""""""'"|j54Hꆳrģ+208u#>m-j@@5=M||*H,?S ̍o3kq% 쫾(>@lĒfj}OUzjo/Pñ Qrx~}}Եb"""""""""""""""""""""""|f °a }g؈ >*' 1QNPcUXq`aL>>DDDDD@;b""""""""յb""""""""""""""""""&;*'@vXf[ә](,lk6v+&J/x= [sXHsXEf(x']w:{1p[%Rl`A؛vjMƷj]z{Y}w +ǭ[X+Rt [?=}&v-H A`Au~'N׽uJ]3(?MԲ (Uk\I mBsԉs.Ӷm\bqЛϳaZAtAc[27fN#`deffW߱_0vaETRթc/aKuM)PA'}}|Chfqk23wpãݢQfMU+n6mP[۟_ ^^v߾&bY#U8u%$]$î(Ƕ Vh6^㷨O\ nbB˷o}.Fx/j,]{Oգ}3$gU,d_0xw`ˑz5X AoI=!z#vNs:) WSqb={I& Ý3Œ)g޸-q-{0nECYu=]^ƤwLy>#ıыYՎ;Y? h_:IgNo"kW~HlloKLjGTib{'G@nm8C2nrWư|UJ@ }=2:~m6Yik+` y$p=*GUuK).Jn+>RvE5_kg/.P,HcE +-D #峱hsRmoS޹loitZmPvmz=W ;_כ 80ٲNƽ}{zŞ GKb%nqxOVبJfF@4ٴ@$~~VWCe g73)jfC۸?A:ʥ7lnvn@W'-_Y:;"qoړY^!ı>c}zVơrZ,._t(]-85;=o" +|ϫ6r4Ib/m zMҺ~7Pȶ7юkXr/Gb{:7}xHfUau45fv`gR}huw!(5qE-N}״[Q}9VeZ J{#:,ΫN[rgeQPtcd=u +zBk22=h1>_)+7XϠ%A>'\̳…vV;(:,?LÏ Z֚jqlJ[ױLJy5I[z {3>WR{7rvԀ=IzڷM$5\8nkb!Y5Aר0Stɤ߻h68݇x1qqG6p.-!nv]zLX!-ZgUh"#;͆IsTŘ|$0Gz7Q.9c_@.Kq⎲zPK*EK ׶G:}9)wLŨV5(#N#VEiep<(x?ӑUm-+Ǧn*l*+t:_u]nmd`%s1THP_ ݗ~S ڻ'/rN*Eu +5v>nm[kX (o܏>鹶J#Jmyr篟J^l!Lkp9ﭏMn)Ef}%0$v)2:']1\K[U]Gc +>=cض>>(Žsܞ5ChtFވsed^Jrt[K4N>K=x\!|<@C &_i)_&`v +{}fQ_t!Z20G(<_[Z}#,j2 +)`7R;y%WX jwJnl̬#$z7KX)]:#DlzfI3!1){_|UI% vԊY}2췺kx~KXmz A$jϫ;]O&Zn!txYU׋։VAߗa6rUJ;=N}sa7$#[22Xp k퓛W3WD7p>?99o ]OKMŕE65u kDVEVe_&,iJUSZƳk`ChIN5w5"[{;=mch)]݇]旍b9RxGJ91ՠs3N}J=]`R|>&>ϴ\fmuYZ( (+קt_WVϕOb4Qǰ}̸x{/T5$%&-EhOߖz7ZU1{ +V\V/cd jOtrVB +i>I'v#?J3`;ykֺzyZ4% +1*x$/NՎ[##mY @ +Ԗ׵b"""""""""""""""""""'O>OS* .[e]{=y9z뾽70SnE-]Vyl?}~%x45(TE +{3DO. Gt>-Sq͹;U@>'؈x|Ez:MlI=O>OJ|o6&P8M}٥_vMJ4;-jIU;%7b""""""""'}$AucdydԋZ,AUP>}:[Ue9`ÉO6;*(UfXz1u_yw%T$<;y"稈'؈еb""""""""""""""""""'xfgV,* fZ'i=RtV +JG-ik"~qg%][jHaxo|m~>GMFYYhS˾K+0V!(v%:R>kB@#U!p= O?=DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@ҵb""""""""""""""""""' 0ccb=4֌x*@>:ZoZXFP|ksQ]g>5ITPOX8;]5?eE ߉jâkW}r`3kd -QO7ȀsR9 %hDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb"""""""""""""""""""@Ϋ)oQϗ$(Θmu]|t7Mr/ĝQ.ىKȇޘ~{:޳.1X&H[C tiG(q,BmraǐnS:@;oNo}JC0$* +5 Һddb]XKqE:X R@$dubW[]Ve"TnHt;3k +=y`7b;胯j|'R+u,fhP%9Me9|A@$Y}Z`uuءa{3NS ږ։W$n|ߐ4;zMJ@d]/rKEkNfN.t;b\AֻQ$O% 26;[l8P<}dO}  ѺOV(r2kc:gu!V2Z,VjX#eP@mZ2؉z> Jit;zK2)q*67YkUe܃A'Ztv4~[܉=Rs 8Ue5 9$'=$UߌP+H8 @#&GQ!T2 +ǖ{v}2jNA6~\3'Q0[euU_vNA7=͸'PJyinqs]lʕ@ik;kcq{l22T!ڵWDw{st:/<Ш쟘aehymw$p[ jqy*,6(v%Vf3 mLK(ʲZCn[U^y}o(t??)zh¯KKb9ޝm; *m[n$E~]뎏 (&<εkH ;;ѓSKA^U` +չ?IYf_SDХz c'\荄Mq߹' E]+tlvFVMKc f؂C ޳:>P!:;lڱk= 's,E cTv~@g*$T_f C)UͯC@ۑ0{UL.^˞Hv|^H$]jF&UͶlZlw޽t~3?-Qmve+P}60cd OȎuڡT~f?=7勭m=CͰifْ]_7//'cpl |0T²1=̛-SJl,+RY*I;Gi69ͶwDR>bdVbqzxmm1mPoOYr<6iqwdYq&zKi X_)l6`7;c3xڎu[h炒 v r`{|nEt",Ån{3*bU>mn'&c*I_FdQ~3w:hF<1ja݂ҡ+{5ΎkwH2|l1ÛĝyU:-ǪG0犒ꫭNPʫ-5uG!C{1dLJ,KjaW60vu xM>}K)+[Sm7cXjĦrdeU$`r؝̞~.e_3y@GR V?Nutg'dPSɔsdf|ropY*%t^/Y2Q\Ϋ},Y9,^bOSMDUEz{#}wtmyKZ!tls% +xvͶcHֻ ] 0I|rn.U}{峿YiYc] Y_ͦ죿{b%+υʰ#=w@ /*ԯE (T֭׮^G113@YIVC*NހK]e [t M.>EYwaޗVU޽C?̞^۬u~]e˦|~hV(zGbN-ѱG^ůdZm+i*]Kg4sz`,Cd.2#X@=,g@v>NU.>] +UPk6}{ z u*ȣL+P[|iT,6ǡ{pzVlEf┰{<Ǻ*Gy«+k7TԎk≮*ǹ-ܷ@&tT̉9l~4QyW +锨Aml*|Σ+69Edg1϶ ozp#!Vo"j$Vk &j1h}g`koXWHrO,׆~;[U#ҡ,*:umH#еb"""""""""""""""""""hatL^ef1[^1F]'8Uf?Rf|\ZWZPI$vI'$ u MX>y]<\xV|5XB f=&:-i&:o~_Old||X/d#kOy ڕ:Ӫ +ABJ2GRARUDl g5-3wnE _|{>7B(ӆa`]O"s.)N5R FR=ϋ/KpK3;5ړfmuz}X +Br%ɝm Ngt`%]YԑU6ӺF?L65`;56݉'CvF|Vͮ~UTCCB:]L}OSVԢeg` @;S-#s:&{܄ʖ49 6>h + 0Nޓ;cfRPI,rc{n( cDhu?XԔԡQUTzQ?@b q/?Ϸl\t݊od(eޛcOtlkȭ4vuȀށ`$zO2b-akF[ew}盺-R(jB`A>f.-xi֡G$rII&aXERJrmrFlB}NYj y ja^f 毲_s'%wi;Yaנ,a2a՟SSrG`v6?aTKAl?5pGկUeuŞv n +6zF>Rib[+;bvשg]9+V)<@LVGb;Mgy +]Pu]X!~2z6G9eڝSMKB@4*U䬠Suy!GCbEu~~N1x"c:V`}f=N'Vx_&ưvRǓ:h,ԏ_obWX${II==̉Xy]Y {@ko1b eP4}%:e=H/Y *]H)D#1S]˟,}ImvfUT"{J0H AD]a}?尟ަصj+ +鯄~ŏаĨn|$wf:vש%XV m%\O"w߶&5ev+[k]v]&$߰:9]351@@D tF݄ۑuxsR +YY@ TFϛSmX w Hn,f^Jmfmy̼{HsJp. +o5v. LCR/mgb d}V{W)v(v$+J'gSj( pADvSne'bN׬ا +-@Ҽ^As9/f=Bw`%Ҷ +~Γ+Ֆ$ŕ4Fԃ)zF*]>P]ba=}d ZGwđ>t|Gk*M3@ֻ̘tSiU{sb"" ѵb"""""""""""""""""""kf5/ehToLZzmhw7Zį/5-+0,P:7뭞F&>}9W_Mml  zOf V줸 +ÿul*gn4@w>O؈SDDDDDDDDDDD"""""ҵb"""""""""""""""""""s1"i`bU߱^{_ՕҪĴǍEAFGp{Zo ԯ jUc`B|_eOd=dUg9[,lN Gm{ŵ0.)ɶۉ_0fAUrr<-fMض[+r,rڟUe??y}9>^{06Mjx*{i~ֺ]|C$F}@m i'Հ_Y9Xxmn=U 1rJ@]jzU=K$dZ Ta,ԠhK{}K7F_`UPZ۝EHC p +ǐNCmnQSJʠmGשE㧒뫦}9u(Gb۟_Së$ڵܫ}vȪxwoG7Pϯe>]V>jlpVX3`籒&RYf: ^v"""""""""""""""""""""""""""""""""""""" ӵb"""""""""""""""""""B[&{kAPX[oߧnu>Dv嫱B)*Q0 #F<Dzg"C`lgֆd^cC@k seye"v}lz1lg{8f%)UA}ζOce])*ڱEZ|zGvٽFN3v@{j r=QziI m׼)ȧɫ֥JQJFq|3^3؏NN޾X: +5Ӯ|H翈$v$b"""""""""""""""""""""$O[ Ue5pժyV5: \nYyG4V^=贚ho͚լvJζ{;ޤMJYl`UXZubG{mڴ;v + '@ IOVƽ#%*8cÒ {zS{uo+ro5m-еb"""""""""""""""""""""`lZ^ԭ*Mrm{D 'k1HY]]Oq%>ӓ6,~#5t܇Ej;|&1rͩ.#C uέqu +WͭB z}nu6"Ѷ6uOYٞP1beLp$X~:,so\򮨦M (6;aa4|QBLL[-uMAǔ:s:;I|\+B]gXol #;nr;hhjDӋ}5cЕ7OKG_C :VUךחL@=x/XYBX@:uGGm5E|Ρޡ3ش ޹zB8SF#9.v;Xi^*>*|'cIc^]Vj`Q>cJ>dkB0kvHKµoδӚY  +o@L %FĿ ekS8?I +@`O$6+tF5h&(Nۊ#vq&pm5\5e[jӊy0}7uf[]TfWU'3-fK#']LDDDDDDDDDDDDDD@ѵb""""""""""""""""""'8~⮯oTp5̜p,w@c;<[MT+q>cz4DOo%&H\ǧr>0=?݌jבCK2gqqkO. +b˹ɩ*̴^e6)T\;vc?jTʶmZw˗r'>/qE-SbwB +q؁4pJaT)P_b9-v0 eTZյ^k_=q|/T5lѭ[:}opp9.r D F`:u+_ҧ~cvb`}X4ܗ0ee l~DOD4Dŋ^KUC"Qt$uƻVܩ{U#M@#) +Lsz;k}xNUnK[:ۧN0;zՄJImky|1C+m]6e5QPHOԆ'vftLgldPmġ8;|ɘm=yll^.gJv/b83_0l>}nIDDDDDDDDDDDDDDҵb""""""""""""""""""'\֬K=NYx|Gc&By+r], Nn?Y/%b- a{z~?)MNˋoʊ|rH܂'cs=5X>:'VaL"Fӳ-3IAU$(mL+?Nq;>?MάN>N>+C{5k5Ԑٍ ĕzWd\Uw.BX >C@o0u~YL;͘>k~_3Oc+e N;WEoWP[X}Y΋=N{t; Df/PAbB (Ix'o8V읿kI[?S#ejmOO^Ss;d\@Q@c״Á(t +m釡*p&DDDDDDDDDDDDD@ӵb"""""""""""""""""""kO7}ɯiy[ʆ:;O{c'o\FL,n֑|'OE+}|P~=6z>MٸzkuV;U? +G/݈itE)Ms!?IC+SՁZk˦uO;byTTP5=DDDDDDDDDDDDDDDDDDXIdROPL+A|>oz뒄gv + O xϽQSrĬ?w=S?|?#:ϋzgC-ĕX5}P}O{ǭ[ +)u_E'QצD:gV2KV2{Hܹlhnmul,frT+`3:;Oq1_ߦoDO>DDDDDDDDDDDDDԵb"""""""""""""""""""""bǯ. e>Pd5> +VR6kFS=];%D O;TߢMN{daurl-]yF6հ#So)sw#RssղfV7OF,6HwkdZWѱc"3?3mwS7""""""""""""""""""""&v55Y[ 2#׿B?0)$%;@UG&x7b`P2X Q&&,zvy0F*3=7;KTnӔLCiɘw:]Ue\`r ~@@5=DDDDDDDDDDDDDDDDյb"""""""""""""""""""""iuY,t+ +oV릶r!lTVֽ;,uNe_e9I 'Uϝqۨt,fLl<PyiNĚ[I4I=j$W_}y)Vvh`ٸV#AԐd@@M'xvRWm#d~p2ܻ֡UF@L#ybyVidQk=&Cʷ PqPz\=}}f[:gka=rq(#!DOb""""""""""""""""ֵb"""""""""""""""""""""aů2U: 鉈`kPݟO~òu롿I1B81gtnI[w ;(nP˅WOi46X9""""""""""""""""""""""""aī0(Ad<f*˂*$۾o^zj1yU@ً7cuZ6 հx2+|}|f4"@6ŏoO3$DDDDDDDDDDDDDDDDDD@׵b"""""""""""""""""""""$gY9IjڕɲlqS@!IwOW o ?h v~+j{P:R@FO_RdNOLͷ59\d.G`tok[}5%&% +^ډeb5`}$7 D'1dikV=o㩭:Tef:p N7R 4H:tAGt f.H N~V{IH(e6]QsVm<o:%]2{݄c^;j>Utvֶ@z.3cT㇔k5uv>ā hv״Q3q1<_h\PVGq_y%еb"""""""""""""""""""""a˽{ކϴ-_aGWtWR>kJ}'lYA{_b'rjj:6i-^mIuLBlܑ/qu1[3.Lu`t?Lcc&%IUcJ{r}i#*ȶk X+m`&yz;UoK{8r>_!bpĆxd䟳d-mK-6ƻk'B̳t\ujlmzm1OYc72Ǵ|"wR봛مܻ0XS@v;mdte(dz'-V\Db铑ŽBjRQ26 nch}vR&][/;d\m +Z_^o'c|& ՏM͕U櫞=87~Eg%꫕̦-~oPq>?]d?IZrtK°nSV!8֭vb*)==.c|ՆUxEfNUg!+[3(NkoYS%sɀ=ӹ'"|M~T^»Ehzs?L"""""""""""""hugJ÷*ZZACt/ebVP) $~տjy.%|ΑbRewoN}R,?0}5++\GUY5O9{kۼYHtܻݖ +vM;!c(`L S5/+v[U-z5>Wù"+SZ̠!e~N +b ]Hk5w4MV^v~!rvpʾ"Kv0; mSQ=ElfX/QjޘH)ɉ';{7 &ܶru@ +z=/ܹ]aPk|zfxK[UeEcQ7f= _1PWXTh:?t6TFߎQ+'_+#-陮,PX}u?%g?'o8m9:2j'Z'™_HbbֶC@ܛX?.βP{|ͼX+~bs}Cmdmx {`SHazI+W&gߒ)j=ʥoտ4%g?'o8tVjd0WwYdm)U4R7g/<kYvmbߍ{rJӎc<5.gIf$I=>ZʹXd"6j6b"""""""""$_,}3/UJL:%8=BY>=ޚ"`esFJvNJ>-&$w_\735e_w差:jhx>.XfE>wZ#t;N$e75ݙz UAoBNܝ8Yv?%g?'o8V읿kYvJ (1loau:Vk?Ab""""""""""""""ӵb"""""""""""""""""""c+ςog`v;O.,t>9\Mx{t 9Ԑm`{S~OE0]?RNr.Ʈ뗃X~7uS[޵=S[ֿV#Gׯ'"DQZwZ|?8EG԰wT3?;څV ӛ}ZYv{4tL8(s]8ZԱV|~=$3x'ڰŵne%|xsq{ aT+$I#CDu3ćnstb(g)墝VզK3Ubªkؐқk~DDDDDDDDDDLZo#E/=|ks)E$unz*%rI>.uHמO}S{T4_Ⱦ+f! uZ0{벅{I譯XP @=e%6]geDfoF-GH鸴دڲTK2>FS߉+7H>Sk;0j>Nv=qg@X``O0 `I T ~؈Եb"""""""""""""""""""""cF X4A O:BZєOWC wD5~RkM >W ꨁj>Vlh \d$:TqT&ǑQ@윁9~-x8WYpDZwv{jL:fx[%%KgHάeݙ}O[{J"9jv>ǪdZ)bYOru6b""j'k/`(qj}-We!+h[70t_Nlr;s?Q"+͊胷ώzkd[pSbmeCsF;u$SDDDDDDDDDDDDDDDDֵb"""""""""""""""""""""bƯ- vu>`fú +9bsNdnu~P~kZo}1N^w~x7b4x13WRP!iAfmؓ9""""""""""""""""""""""""kS\X.տA6G6]<'S3v:T.kPVӗP~mb]vVXr%]G~cDԡUFQ&X׵b"""""""""""""""""""""$wW4RyU[U*-2Ԅ=#>aϡ6wȯdIkﶿ(^ՊBY]=$gw5<쟵yD.| ^ͽϲ#U! tKvH={R[p؈qݲ(U-S`h8 Bh{}]po/E! +NlHsE '[|>5K6{3})Q˱kb!_aW@HcuZQA @*ZHܙGLAƠJpV1*h+g;.{2[g{'p:.7uLR;.Y:_ju|E$B Vozb|]S< )Aq${1_/5~4I+Rƈ<l{O4UqqvUb}t&B0>H[Mlu: ;RG6*Ō ?HDDDDDDDDDDD@ҵb"""""""""""""""""""rՊsPGo2 )L=zqcy +֜O:N"j'Ư*)x V+ +VuX=[d'L76cC%g?'o8V읿kyVetدfuѫAT6s锵,A r`~M=o&<,mJ]?\v_Vպfh\` +C n=-CPv#wx ,OC鉏c1̊h~dǾHC2ޙ̽B +*7l'_YV읿kYv?%g?%o8V읿k'rRm V읿kYv?%g?%o8V앿kYvIҍZ*!@,@s7p?P|Zվ\sf"""""""""""ӵb"""""""""""""""""""|7 [b',Zf $&rS7 *\Z."ky; ;j{宍z+)que@`k{R3ף͖o +OIȻ/^ bO o<Ⱦ +EAJ{hR#v0:~Uf"3*mV#G{:F!29YRrV}/^ǂ2nwEN}[IǿR TE8[Յ >}37c_LY^NO6UGcbjt; h_]{ͼlJԭJ$>Vڸbէ3Ւ^ϑ]G%| :'DDDDDDDDDDDDDDDDDDDDMnCהW] GUkmxhAl~F{2v7Ki/а +pk!E?;*C#:$ wQ'_h|e2o}͚/K2,|gU*ǁn ?|1.) ^fBYg2bOc=b""""""""""""""""""""""$7z:^B;콤Vkf  V~ +ƦNgJ7؈ֵb"""""""""""""""""""""|*hņЋ̨R`o_ISN-YkW]L uT(J*#I""""',fE`YuosUw. *tw=Ȃ5[cԷVΛԲ`3 7{lkb8V6<F7}sDDDD(ٟ ;DePې:'@w=%>L'*`+'!C3DDmPB>c>A#l'VbT=DDDDDD@ѵb""""""""""""""""""&tڱG̀?I%͓ᜮ37+b: +a\u7ԛt\kiFa]FNgUgM YR Jvc j[UjqrjɡӝA7)Z^Ok-鳕̖|>^זƾSOu hUb[V:V^$?Y#_"p2 q.o|gǘN5J涑 dkkaȍc$ +p֐ll-HMPmhGo^?K/f=5v+gnJTTl~9] bNT{}&b[^f= Fbq[cŏsTc~-U1Հ۷cǰS5z +UvK}d]~)BYv>%Җ5~b_|ߤȯ|MAq,Tvaǖ IѢSHn ܃Z3>13nU.;ڗ+[Oke뱮E8hX$k2M@Ŷf[Y {ȨF`tF;Il{W+h#cz?YԺXՈe5#1 +>Co39nh43t,ehH;or\lqq2umr;'[R#gG=B+[ m]7=YѱZr22c\Ut7[-/^QjnJmAL>9gZjP*^nַgkUy)EccK/@C)0freoF:}Vdy4UZXҜXā6pߕ;z.5PtJ3G5R{zWSR#:]~32D[۸gɑzc]Se*VBF 艆^MkH[  55:_n%mjlʞ'.oH8 ѲAjamŀkaŽ{ɞFZúYhUG`VA$I!G_wPvKe{;(뻹)dzبk!| [Cz?Ԛ',x\|&(vnz6w$?*ʳPmy`oo~ڟ:Pnl5R7oSR2b[ mDukV+}H>9gKFHug4~pMϻ!TCKtvW:qb;kg/ӰU.;y5VV)%*Guשש')-ᎣgV阹V)BNF:-]2h!q d>_J^Ķ#~rpxkeZn:qYAږtgя~N?{َW̔re2-i,kH$HOyשC:-G/;)yho_gs>zRո(c-?S7I;`6(DVqr9uuZ涰cH;CRvC_ebI8L4_ȷ?d1ڡ{d]^dz|@Y7E&:'CH2F_oٮ(v\Nk%^M,)ްX*H'x”b.S(ݗ`YG.mU{,Gҵb""""""""""""""""""'t^0120kUָ9AkZEl;7"{}̝U][V#OCN$W^UVAa#Rʀ|GӾ}{nBu(8զ=yU+^* Qرo@==3xӺ55З|H 6{eY99ؔߋR#BT}8 tOM݅p.n8D^+tጾ绸PXA˖қt{rzv6gOkkYW"Uх[Gh$].o5hkUN#$- ޽ziAm9܊J'G[ϱt.{M}Vbē=sNX۾g1u3ǖkNWc݉l,Sj6˟~{$W˻};51ݩR:un|89!YcXZ%ghI5mZ쾧:OSmYfuzgyQKޞPcnK60d/i޵>WW Sh0H Gؒ;uV-)ZXиPzw^Z,D!`u߿iq 0pf5*`H#mx~]S"[j#[ )xčc멨ʯ+#~S&Eؓmg|5Gm1&or˺7S= M@*C&~jr(!Vy6ߝÖOn"N>.MMq~@ aٙNe5f]nnC#Hß{B 급 N}ld[ɳX`GF3*حfE|ZҠl?'I>Բ++VAǹ$Y~N?\{S_y`5OlZtt 7߬ L\k%w}̽@b,n8E}w)}c {QR,uI٧ՎB^qFkw p,|S_syk# Zi'$u~UWN6BYwǓcPI$[̼:0{M&n+4J{Ro[VByGDbcc[0fv쾥*{bMߡXM{ `l;T}Nv_o N2{kT{"ͳltUjҌފGJ]"ZMj/>Z=LȪV@1j5O>j5>Ϛj#SOD>j$]WLvrO +e@N⿩;u6wMTrvN$O3f bkb`ϚFQFSM>kZAlIfNssP37ݔ>gFT[pt|m*(U ) >F5>1 =M|*pI(EvG M51ߌ %ٴF2ϚD>FS`ïdI$/=x#B4#SDDD@Եb"""""""""""""""""""A[]2㢥NE5g;B D`gt: + s|U"8{_MSN?B˺mx[pwv.B\@ =ֱ:}Mq{1`޸wL-ce~[ TġAoSE 993-}q(<91p>`JcdחR]SGUeaA~"eQ ,\nvƾ]hR+h0־CBxɣu2-T(vf6?0 + F3Ϋk6y0UU'Hpʷk{2[m\)VCzmNE%V<j;&nJvՔh2v 3ָfh$jlhM~ywUZQXwAL/⎛P% GRC0eTcǑ^*-`=X̓R3uSK[%׿ {P6<ʲ`5.[*zܗLU9X]ufI)ɶx o_};Zo©uLV]@1UI|RzΫU l[m˗ +I5Lj=/aD2:dɮCӿO\þ,ٱI_{Y5VUF>Mֱig!l •{naX?&eN @]ncu|lMH>KqoNE1j#dck.9fqe 9"uWs.Ŕu%%;RUf^sQwcf穿6yqPr(>6:nF>]c]76jh}W8%bth+s>dۙѰjAfc'g3g/3-kwJ^_(!{wўS6M2Xeo //塸'`LGŽ7N·e9~3z^=U_&Gݜ}BGS=XJ1V"hAͬ.SMhK69w$oަNn=WvVv;Mٕoƿ5c^T%tXw#6hu,[BsJ ?C5:S-hʰsźmrFYH'2t Z@-] +6(!OomIhU1.(W<]JK<-ϭp!K51*N/>s}__ WGG|A},ު[yjyT`x8Z2rSBbb:PIippȵ,tݶ~zsjZZҰ]duLvy3, ]oc +ϥ $/ͼ\jKpXjalj8IrdZysm$Jfaaz-۶V]C;a׷9zwپ.^hG?]gZc{,+o1ܧ>ӑUOPz{q{k}=~VBX]mfZ#3] +r$hoyza˳ bC>SǗm_xVX_˭bމsW-HֹN;^ekmLlDx[l4&>K9ĕ׈uq3k3w=#R̘>` +5MHw@w.E5ب˱#LӖB 6WrT GXy\˯|d k~ mfǰaO*J\tZ}LUe#S"6RǸU-tO`DQřV\[PԲ);SIVKAzUIY銀ukuΝXlAƲhI(Au`iGVU؄lo7|:5yq? r4'ٴ1s?$ag;v]"<+Vt{tڷ(`~`9|:wU+|3ZՊһ,Di4w']KZ႗yoUT2zBv^)o_+.Cu=::rK5qNc=~#!÷TB(tgoy7"U/66;V|#noĂ{ l׸'%FkfPwMe9 tN~%xC|jrBwI92L`(Plޏ5dJ<`vVʫe$ѩߋo[e}?RڷVօ"mY@'#]:jىV PUH:Dv~';'?,WySydOCɬ "kiCoӂ/9[4d$`K0V*,7VBֹhoSkHoZV"8`ҺL1,/+h{^}wIوn6VT1|J_i~BC/j!:e*՟0-kmhs9KįCŭ zuC.ďNzοΌtG7\w}r:`.]ejQW;n1ln`mROpF^-R _$eZTK7٬|!  +!;kFC`OI&qX:Q +;k*߱~ߙbkFM6FjI|[Bf,Bܙe&V%9|5C*F"1s(m-eOԸD7WQr4$ks]wg^qS96˿mziCc-nUbIB%=6M9t} WWu'%{W B=lSlo16#)̾dd vrYONlZU9P6;԰?(W:xGl[R5VfehzԓReFEM(^ueRi'CUagݓuc+*(λZpҺrϿ1bND]hzHj|Cm_= uma,z,&=)mM@]fއ~=.Jud~KS棝[5H>\>32rǫ!1VP5d~$zo10ޘ6p<{Gۊ<)տޭh8ž}28ct)iLl{bTYܒo4kwqX*+J֫b:r6AԂ{hhsV,Y>jVΓ F:nET㷒*ֿ Ŝ>b\hZʭfy]hݽ{OYҺS?P樷)W{Vڬ55KUķ!v')(`ɎjcVZ[]{| 3v"" ֵb"""""""""""""""""""G| r]}'*@ư; Ԑ'؈&,aSĀT=DEP`DDDDnW1r`_}FI>Sz'Wz$Ft}=ѻ,mC]*\^m興B($lg]ν'"'멣zG,4^0_PRF""'ku QguǨ>D}DɎ%j0fh=JYel8F#A寮o^OДR44>gܒ}=3f"'"""""""""`\PvK;vIcN}s<_ dj@'so^mƄ ߹9LԎWRAڸZez߷vXǫ )QmH[rP?Q Գz jU\'.L~hɞ_bk)PJx9MLÓ6:S~"""""""""""""""""""""""""""""""""""""""""""еb""""""""""""""""""& 5ZV|TnqKlꕄ!尨eTIDlPNEW׎tQ(oJo+E3'5/5Ҽi[ז@ ȸC>wu?J펜VfVeU*o^:9]T" ~@1~9^Xf٣r+n}qE>f9Z V +m)g`}ܜR򭵓T_f;DDDDDDDDOϱҵb"""""""""""""""""""Dd[mɵldz+~t,a}Z956]n{oAQ}YӚgVTwvV uJqs-Y.KLR| 7ն4;{]_<uDn( +26@{> s* +Xqn,Gt{xlthkPXbg̍}jJ6>}̲7Q7CVlȍ|ǡ]+XJԥl+zh{ɻoJTUPIf (Ԓ{ 2鶿9,VD +hz@S[uj }Lbt+{k`nmd׉[[kUR>5z=,PE\\)ozR=GY|qH,dۿ;Ԭ҇uR6FD+2驂;X@N(؉ɸ& #fzkNu{@3`bMk޾5cWeJʬ߀$oEʖX Pz 縉]|Y];"d}^BWs@[Ci'_Ar F]}LX/筵]v=]g+nv"nwB%*3G +ƽ[_PrÛV{DnUXSgC Zr@ +ci:8_=ͣRKC2 "?(\₾JayE]vmnJɈHg`=C=HOukzf!PH {V#lUj Xw-mOMύR']BV, ) 6kxEzuoc[ך1{XĿ ;~?)ϲ0eۑiU56$uT{A`,$z7Cv9~%zw {>%t?Lӵb"""""""""""""""""""@%Y:bP~gc ..]`6>pmێG (qܱr.Y'9{z?Keby8K5V^$$ D nɕcZ5)fDWv=&3NV5H](`YQM]39,-pbGq{L7z}]+@ ,6zO]ymЊ2Q)ǘ0ui))NC/WBa5Z mH9qH:f.GWOr#0|u@S}7dwOGGUhm/u}ĐvVK"ʬ/ +OㆱB1m}ݞ״_t֕[ư*('ʰ+a`~wP9)bSEl봃_f%uVҪ*˕$:I*{N-8=BXrzw>6lzJH# FVoRO:ׅ5Pk8uI忨;:NP𵪋Hp;sNln~9VqMj^jw}jzUai[X|Q o`nGj"̈́k-nB|D@@[#:~/M]+TU,(T[>)2:9 u"h(L]l{{2 +ݯl;Ey#+7A ߈OpFOF2 ++S*!I )kzn +Ps_Sd"—(vvFm,Uc*!NV =|oYjlG+ԭ%![Do?ٺm9 Uע*GGZTeUot=e+lQxg%ձp1!-f Fva,{'|~R[֋gɱ YM,#S 7'݅ppq֕ǯ ^j3e݁;3Se][7%S-uo.HRJo~ ) 1aacu,T̷̳wHeچvd}#LdQZ#Tu5d;/{jx­xOj,5;ᵲZ$l° 4A]izߔ+v@qO@qPwkV%2UԉF^r߱a=' /qe(31l^uJ nΧ$*sVn ro`:^=7S-Y\ ;R}9Xi8 + 5ށ+~SOLP4 +֊/&p+#oı;otڱfZg?RʼI#h2gxK7/>jr7C玁jxTɠT{$zٷ׍KmTbHP^>Ӂ,x1:`#DIHE$_^񨮺;P|o޸muǘU)K;~JlTYGTXp\Ȑ.?GvMiYy) lqZzgVZk2@*5ۛ/} 0IѰ۳ p_:=Sq궅]6G"YowsX'"NX:mܛʫ2)ڐ}"eԵb"""""""""""""""""""Fnɹ +Xtk?߱DwHȹ/( ?pL}O S䭋eX䉯 ΤbhtLz܍(7׼gOƺC[VR] AحbZh/%G[LWtL"+kZrסm\i#`;ӟHȀ hlCf{x5~#[O19Xgvk u~3͝#>q&zx?^UHT(7tϸ?첪r*Kkg3sMz>#ָv +H;OU[(8/7.yCEvR 志nК *>j̓ȠǦeXOiK8\7>[0eweUU% `7=ӱ\=#e $l~7aWȢ} b=>d|Йg^Tlujm9Ogf&5uۺõ ه =8ZY~R^{v)ƾ"6[>_םfKW3*TB NckP&}]HviZ3iXdEOg߾oK#YPOoNcSYt#RT@]H>a+ݡ [ԃ̸4`(+P=XGٍ)w8;':}~h=(|<6ִZpƢvTOfԌ]3!ĥ5O͑qi X, ?D#fPJT Dl|LyTju?a17Iz멨+""iޔc]V-.gSGW{R?f k\ƧVFZݜ*N %WFâȮ( w]#[+e) +~V =a{i^WŅѰ{c[6U:=A2ӁeT֌yX l͉'+ȯ[^eK +PJ::#ctH0hlRwŀ#~񘗣 +VQN ++('|l8kS:9)/;L? `P-ՙfcLeIru h|3PtL k#ͱdI#3zGe`>nUyTHע I O ĠӆLj޵^NQSmhNגzLR/r t6@ށ?!>&=UV*DU@5( mOT(J**='յb""""""""""""""""""""|ֵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ׵b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +endstream endobj 242 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 79/Tabs/S/Type/Page>> endobj 243 0 obj <>stream +HWۊ#z R筲H%م}7cYvw`};ocl?YTqç׷/<<</y^5LV'=/o_0i!r}!a'W3~%.or :|%ݸ_?χɿ'{)!^&g;dÁⓌg1^Pgvwע +.#o]Ÿp~o/q۹>%s<|>O`Я] W%֧.O!i1e~Ig+cz[-Dsx̩\~t~qh~9HSzo?^Cry#Z*BhvMUNpCoe@L)Ә;]G _uBd7^ۯھ f?"H'^"vG9pW:v_μ@1`ӕi)MWEڎÄ\E$6ȎZ;)zwkj}cِڭXx+ͭ-w&&y M ?9uв*UiI9$d@:G!ˢ7&n)dwaӋ&MsE6 ԁ} HDPLz=FkCH {26 ,T+!ZC}."'u\< +H+k$U1ZTi0kv=^]9QoK" h$J5m%W\*y \ν) _!U'bv1G%۩3! 4JXh&X4)H(A@^O@ abqW=c_aBNlF/fJ53DevgY֘8R[և9>n@$xE/bMTr?UحXaFaaӹMʅiEuI{[#HF¶Bqs#Kv L.rNpNE9^rUocVz.rD掷 +MYT2ɛ?3WBvkU$^rHr;#f2-\#'4(:Gdikkڴ]֛5HV該wS$^=(XtӶO@FTXnx`OS;Q(x|#H;>KX٠FŪ>PUPwE1}h?~WNtb6 ;yZYu/0Քs(-nڶdwX}dB0ij TͰ\\C7 'h\~RJv^ 38S[}KU&P(#OgVFJX!>+b Mc7+nÍ dv~g0K{M?@\k;>llbBN)#!Pު(JJPtf*Gr{PȇLU/6ŋQ0nĹamn8COUWM~qܐ}m)- ]:S6r +-L=oݩޔv?ɵ C#+SnHesM 0.XKc,1x{bEaW +A]6GFG QsY+Bruid,SwV|Ţ˒M hߔDFԃGf=6)^{,}_`;_-)kֱ%0"86qydu׵F]z%hRtz7#s9cߍTQ +>|z}cU}e^>;K6;m8BЋ7%@{JzH)F$ɳk5-1R'1CJяHH QZzlUVۯک5Hz`;u=n윓فX4(-64Ua1[}HC=aА(U5itlbW@2gxcAz\-}cLS3ᨑWU[V^in\۱%L- +O9+^hbR-fC7.2Ӧ@_bA[!ySmcJ_Fb>֓:h8g CuǮմ{㞤 =n^ u1f]ScՋ +t>2Y`*gıd_Ödub^Q fmUl(lz_N*{Z +۩,B}qRdF[y/ wGqA>y=.QS $!ڌM V֞ Jh\=4"P#D*BAΆS] fdi)`cv1w }ǽDq;q. [tI?-T^ [`)m!>f)%cdKU4 #Iur+!Qʉtˉ82uy,}WQC.틣& +iU ~N[F=ԸJep0z ?u4@9Ht(Pzo/ F;\M6Ɇ(.ٱt2!c3l zek)7ˤ n]a_,o0K71n Z>%dlα"b,Y6*wġ4RG2 1svoZh0 GZs|WU;tP +<OZZb!TLUpcY8P=+M y~xRZHCQybvq?V춷P2]놃a@ܠ9ֱcY%J.?Q +sH ͯ/LΩDh ف'b,@J -ubz2:Z,\$fqR HE˜mn{meK(ک' ?XzxFg9N'Ȏ:vgg/ ǻHctn*Gx%a%ebpyJmvF~\sB:(ZzY_" gCm ƹ _/Zhh{Cm#њ>6m_#2< (1&¦wzH7U<*,kF\v(*@lJ( ( Ȗ F^$ś}y3CREcIwP%m_K͉8%V a[ؐZjs7 7vӒv"x Ǹ26FUx0buVpKJBZv 1ָj*=u˵ɗ}Av`&bqfmys<֯փeZ2XZi$%c8a6ө9]jbR#IV^c&)lv6ihԱQC=拪 |7 ~Zcf X+WMlo*v߉& {FT<C͙?T.ҳ[ %»(XډLMt& Jr}RV 6^8 Ğ'OKRZBS;Ui5|z髺o_ +0 +endstream endobj 244 0 obj <>stream +JFIFaKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Ka +  m!1A"Qa2q#BR3$4Sbrst%56CT +&'()*789:DEFGHIJUVWXYZcdefghijuvwxyz?(Lj޷1=?6nmoxy$fP4~V0P̈́IbU|KMXwd*`^$g+ 9UwصgtvU}ylBmh\/ؑ +/[@ր]޶=lLn,PG{QDԨzv|Vύ s2\:0v:#_'CsZ̕בc#qpoܝԨh^$+`UXܕ˸K1~OUfԗRܑ2ވ>yv$<^UewfT GClwOP.YPU)yy2[ȯw$Z[lCe"""""""""""""""""""""""""""""""""""""""""""""""""""V?mnW#/Pٱp80_a׍^/omyZ`nʄA/5`߿mKcUl?GR6?dӱl\lBuڟ$?E'ysDB'gPۋ]UCTfF7m|Y]c nZ9Wf^-k~.YK˖l*."X-oa +gR6c*#Z'm q<_>KB݃>_0u<+*+2-؝|{}&7l0:w#r^%EZKr+Zl vg1~nBiڽ?QY22v9hoʫMfi8ix;veY}>"Ajަ;Ha؏ Y yqTbX-s]Vؐ ;RVP{n;/n<{S$k-gut{kݿ.ng+ u44%: noJ5*T/LU q2l6+B:3xn$[+kûԋ}G ݇azuw,&(Vڐ>AGzǓ|mޝUVqt'g`CdvfA|Cm Ë oo+`̶cضOmZIo;ݛV`We4 *LwV蟺S&MGk8@w`ݥՖX?'{3(%y/k5X=kCiw7.M˓]Mʅ(UR66;l?폪߾徠Zqd[eƒQ'^\*LRԥ%.P,K|o1(aZl$`1#Dyu<{h"-e."P: +~S2Y,u: sz?oUZ*(RȂ|{kQUɔMxAcF?'?5\2rm2+7*4t@܂g~^7O[`wms?_[eo*q.AJW=rܪڝ ЩOaf +U,K33l@ LDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD)ܬDDDDDDDDDDDDDDDDDDDDDDDb""""""""""""""""" xwdbܵijŜ^>7½N쮅8gC`qP +mV +UPmvO8cCեv#4bN2IiI/PN:vun+,oƱ);v' f?bfe_[7@ۡFR2?*.fZ]Ǧ($l*|i.UH;+_}|_ı}Y[]S-`}%A?Sc4럆+!MouNda-JmU'd]㿼S/둘Sz@ ^?I.%W+n窾,h =~}oY>1r*U \%V;sPMk_i0f;vfmvT\'`d.'G-ߞET"~LUFF?YN]xG.#2DCGepjkuDAf:P>c>)̾p]/H=EdO.KRX[b#=hTm`<}o^VUMt;( o)WV׍խFTh۞ +o@Y (֎ƈ2.q\fk"y>M50AZ*g +ze^ͥ4 %Uw$%>N]U`)j<9q[ȣӆoDo^ # MerYGt>c3N!r>z0c3yg-Kc3=ER +}r|O5|Cm7]q-JU;; ~6aF`@$r:${=>FK|n]72 +F7" o{XٷۊEZVG`L/AunW}4b]L־شg}V6)+ L'\*k +3YNJA;l}ں}q!v)msKin?cRfbwRQ-c-jeU3\wK-fђЧp#db70 ^w')Ur*TT]mhNfg9=Ya&_Gjd}ij ZΥ޲gI6qX+0޹s~w<|[Ս=Ktzvr֯T]s =Pe|hlTjkZ_J<=^:אCu^+[nCV +ʍldiw3~]xZ?Ykm &eWܶ\ի)ֻ7X6WΆMȶ<G~g^Uv{:j6ky'*mJ6WX`xEHƏ<|3X;5u#T˹ᬼ^nT^C)C?GjPNu+zE kiIzgU\}[bra6<.֫jbJ! ]HtH`>ګX,:d#S9&e ֶT +%yށVI1nufbK1s |'O[lIKɹOHŶ-5Ul KLD7za>x[_۩,պ\1RYG=_o>ۗ~ ϽTZb5lSp |G_>JQc#20dRAR1|SWI|=AtsW3F˶/Uxw3-׃:X {$Ce0IV,`N- o}o?e,Q{.~IտtpűXS[;=mRP+Gvh Tg +5}vO?x2|DD@=?"绩[ܡ|_,t:]Ubq-GOG÷tk)v }KPBycE4'}g쏄:^bYOULcyCsSE1Q8Nl;5_ieZ}{zz .!ABG(e@#QRL̼)ZX#8ڑ>@tw<cc?Vk龦2l='~@Ln%{V_ٝSwu5? bcEhk?0k]l2w#ww0ƛ*2vKn)pF9+s;պ@Zml*b +2Z~`Al:XnEu-h;k%>I]"1G+VwX}}:?RzRQgQ}< ,oM7.@lkfUAy1OtqpmnkEk4=BOG2O]]6Uk=jrX(ǴO:Recu۾y)o.ކmwtַ"k~bc[:bdOӈ;?I[Y7RKk)pO/κXun^J%rv9rEe*y=ԺGQ>9 ^Z|\TC_GLNCu%HؼEj瑩!AyvL&ۓZ|JNw2TS_D;i[:v5]2lLg$`V+,LW*,1XjH0]?/"ܼl|rEV*ۑ:^2E眥Q|US7 rz=Czk[D0_Ich}h>{M,zLƠ褝 ۸oS~=9h UmWdu /v ]øuvV ~T.ƴ|_e%o[ +3*,l${{zŻ72X+|JW߁/-k>|L_Fdgddemfŕڏ;>a WLǧfq)VfbAcd|ml(ZjZкWeS`V +65;HWNs`[)k[]X#|7/R:vFST# abH;MNXYYl=܀6uL/Vg^ޕԾv< #V[?d7FA:gEhTw2KEhX+g@hSFX}ez9#LN+- hvitԾԍƶS[l`ݦM8S+܇`(kH%7\A6C`eUX>=ʣ~K!l_r˳:M}9kz:qՓD t\/*Y[k'E\V~VϷ}̇S+UU|kQۃڨ ;? cbmd%U1Ҏ7Vg]62Upw/RCn&+vp^lǞ3uΝ '$:}f>N(0mv4yNlAzbrz}UZQo@?Ιu㍹Em+^ V|ɖ~8t\(B5_*'LC۴:|AG +k(Xր14t|?AH8t##{I-5\pMf5cb*P#+c؉\/m}Q(*PDDDDDDDDDDDDDDDDDDDDDDDDe|8y6^n%P;P7AwRֲjdZ*SQU:I&Zl +;(,'w=+4/u^ ?C|ߵcnhtOo 23/S86akȼe)UvlZ2q2jJ{qZv]rRHQ~!hs2Aeɩ Rª;mg2)Ce݈,WW\]6OshwX`_޾9պTGoyct{i_Zq⪌ܿ->h2eM+r=u2XWtxtux-qr.z6'DL:`+1g v'r;ew1Xc-93?!`uI*AV  rq7Yb`̰ 13hϯբű #FǑz"ecg| mz3T S^wRr5j_܆;}e9Ly'˰7G\| |ÿ`Oqz3n[Pb O~6m|Du_ ՊS酆|1c@2?ZPqEHERUYBsü^Mh2qSyV( T5vGqd>aeEtPpmXWrd5`XT5k{>#Z^~ 6VM7bIYɏ1"ꐊ޿KwMہn'cЯ"βD~d,F!(߂gV|=Uj:Zt'6.7ÖqҠ9"hYavm籙 ڱ+swY~M%lUS-D`;lڍ6O~MUk5rȩx-JWgL<"g""""""""""""""""""""""""""""""""""" Vߺ5S׺?beLrkF:7?_SV6:F ho]·LN!-DřܒLL򸴧-Vi@~]YXڒ ߃=&,t7/?(JP'kU}t:-U 'Uhh* +CxTQA;P1܈4OySJ2* +hhiqiZ!Z{OUT(Z('F̷^UW'`o=nҴ^JHa\Wlrd,:n0+&֤ qܪ.JYBUJ{LHưdYpTjE ĿQ؁翼Fr'UٕR-#1^E({{v$ΆsDDDDDDDDDDDDDDDDDDDDDDD@gVmc?r~g8㹑ƩV w!TؠDDDDDDDDDDDDDDDDDDDDDD@)5̅Kũlpwg/gVڐK^Y95V5'L4ݽ d}2Q[ꂬJcirU֠}Nf~wϥee,d" +v4H#b$(Ð +XaP3B?] Lt333MxեU(TE +{`42ޣԑYrWSit26؅9;p7pH%DDDDDDDDDDDDDDDDDDDDDDD@K>Tt~䮟Smwڂ)^rpUe%5+<[Rܥl0 20XbZ*^H{*׎:>2^uO-2;A-GKN *;k$}%DDDDDDDDDDDDDDDDDDDDDDDDDDDe̙X2kn%{q=΁,XԿ:|}e3hǩlR뚂9.ǑuXɬˏp^>e+v*Kљl:b%W#U+܎۸߬%^ +r+@*5{ Q0:7[[xm}wmybXXV+a4yﱊ-.F,H0$6Gy_{clRA]׾KvOɬ|0:#:}_6cWe4 m3%]rF ;'*E k7O :55| +5|ks}_ۅ }ma^Ak~?I2a~%EaPcɴv('}e=gӻ#-#q +,B Ͳ/^uU%k<::W#[:Oy V!=~BJp'*=e!*v=Hd9JFa`Oct>~#UVZ 0Pn>uDzc=oY0bRn$B jǹ޴e,c6iEbCRHۍvxʷ${oz z)::7vKUj;( +7l:-Xʒ]{0A؏yw'.:ͶEĴ:+cJڦR q:]MĢ3*b N-[qeStBiV~&'z6EX +K('.{RD$#H AܵN fZhrbw0}6WQ +2}Z{+?)TzjޑeQE[pPwLU^5Uٝ,+bHjΫ= +օ@K#| έW>w־uIo1ձ0J T ]߰KmȄpmG|1hJuxm}{}➿]8 Lu2iTe NoqzFF=Xnf&I-}mCQTY6G}?jZ6VyzSX,&61T>yH`ܬY +@cv}UV2A?Oq[;2~^͎c^p@y7 9v+؍|M{|C}6(<- ^7߆ze#A{*=޼fԺy!JljJwcՎq\R>O߼9c_̉ (K3mG}kDfzeyK +űZ֭*C7%NVGRvfm(UWވoJ> mDhvUPj߹߼nF.7E,+`$|>U?ѝ^Gof`5,YfP&BL:Om(k N,ǧUA'[ ݇d\ZUzׇ+k'QaqXCu̐1mh; =ʣVc$ڥMzIBAjkﶸ kb?N8 +K+¨ȶ?@tOЁ A^*tߚջbsjf+Smq]t%Y+UǸ6 $^bbdWנ1dFJ#B'ݴ=0۔wKJܖo odQ|Gb5gM~R;cwm2h?i*m*F;/| 7my`.U+bΏGyK$SkV3߱eAp Ta[|=yُѺk' h=!&/d_b˥/nV5vd]n㷙vǪω,TTFd\NOL +NpVGǏ12:yK1GW 2v-U;9;$x_Ѫ>69h,gdН{룯t[ÿ6ާvAY!{yxWږ9ȐŶY:{vV U8V'fnΏdͽ&V:lc`\jZ,'_NuŸEXUgmr;=~I8]Vw f PBPIF/ ~J1itNq_wӿOKNEbq b@;#GDZPu+6fklSW}s6Ԩ\-^buGQ]-@ =!% in>>QO b \tVUH /H:ēiwSJqX8?b?K|E}:^yqk?*װ3U'usj-V{-tO񿧁6*kl|EEh(֨fWC k2펅 +譖XXr%zn1NN;>㓦uλk(kte}'2h^ tgd>n{ aT? 1:JVl(ѻ鳿ˮ:DIUWMNHp<6-cO~EtjJE*z\L4l[>.?P8te7k'*o` {}."=u|ħe^7@m?y#;?΁Kדxz v9GDw/rMiƕ Pu]) +u|^\ݮuv*iO(ּ,C|7^.:tVv;T7i3+̵[11r8X<:YeWjRX*VȒğ=LcTB(r4[G~u**A(簔j+u(ȥO dO6TGPF aR* +hhhkh5*;agl>=5#Z) ;7۾xE9G.ŘOa/V jWZvbz/mGӲڵ*71b~cTF@9*k'2(4}R 4U ʪ*wG#JG@$~ܷf=w]`~H.N ?MH?;|'ɏE~#{xHjkqU#``,bASĭt**]5Xm?S&{ +C[iXoz`׼*K`|cT+Q_x~Ѣ;(>wh4V@R x(XY|1PH *"BRG`<wi-NFN-MlPT>o']Y88|8[jVH D-˩pw!`O#[fL\|Tu)bh퓟\-Ӳ-ǭ^ ߶}+r>°::: N\v7R+䗷TUjI)ݶKjYH?Qb@#cli~#ɻ ";ckTŬ $.}͑X?P{ԶEmcѢEmoCi:""""""""""""""""""""""\ΎA ؝,#š:Vѻ־?{ںۈz.:_]}pI~އyۛxFx}Ok@; ݕ$Vzs^ŨXr~B12: +X .Ey?f;d ާP(=c}e_zhr]^cӺzz;*% M6ΑqƱ%bI@N8}}P^ += +k$a|5*|v*ꭣbd+wtAGqGmfP{^&FuZzܪA`,U`7YbXr ;z]Эc^$y]U)U}`דWRȌTlh3mŕA縘.lDZlA`-2@K\DYP$; g`]|q@w۸+oT٦ʫ-┻J,ݛ~zhlk2깮k>;ߝx>"Utllz7-y1E|~;7Sk]-笛+YՌ+0=[f[jүkn +|y#{uLI:$zRW+CAAG5%u9+mln-0;-#V]e>V;72,&ErW2OXy]k֨X#J P{)$쑣!*/Qmm-j.owzgt\gj>jӒq#{LOs|w3R\[pͿ%^ߐjY/#ɭ5gLkVlVn%Ch쪝|Lf6KSoSrՒ^tEmhغ^ gduYUMW+l]sO'?ҳOUk`N[;O]_cӝRKc# +H= /ZP[ Ki]oZɸ)1-AEgif{Ӳ66{r2?}2ó%PfHSθ=.t^0s[׼9ϭSOv"z!U қ:?"fd nudzjۀLUWϿy+t0._҉镱{Le{=@af9xxncje$ͬ+p7 [`,G˱ȅ1G3SzT^ }rl y&¢ӂͣ emi2=6/.(J%UWJuܟ[zf5׮CV lx:-dt<Um -;@:c=ɘ`ԴҁG>wMJ"N?b4gBԧa5o}̶֥4)+{N~!2N_5x޻o[NZڢzv1а uUjTܫ^#j=6@eGAH A jEQu J-;0#EG?OE/!QlXVTlJt|e`mXmtt~%ա^)G$Ʃ,BFhKWQO޵5G i@_˭xֻjZ+ԥ$6ف?rI*-F}Ǿi*xc%VYCqQɈ[`e̞[e}h?YLvqC~-OB%߉w'֮E=J"6e_ApЃkZGB\a"@8~]un3-(iB)` h"JN;2+:V^U +}37cw֮}#V/ )ly̮LEaX=aS:D}u}i +}$Ay7 `%UV- *;Qy)阸[mtv0P Zka1j +H# + !Gu=t|>%\7,/Bק$y-|y}W0707ri#|{eNF3VlOr:'F~uT*I@I]_ȰcrSc-]U[C[ѽKrjl>$-j2'T q6v*/$H=Vޟvdճ)*YrBIDy6uCy횶% j`fRu'H][Svꊪ9;*ާ"jdV {1ұ3e0rG)Y&޻/ XHKy9)SaҢ31d]onjW +TW[::=}@?'Ħe"7n@P|q2jWp x;i<$8$VH +7$ ^v]RC_e4v;7%R˲̛i4*냖 bl̦ZowGu-Fq]J_kq?/AR;dee nV"PƢ7o]v,wTh _ɱ.ĦdUs\(0'\}y$79uVU`U+9VR@n`Iܣ8@Xl4^5e>eȈܴ277FI#ĺd.ebKw>|I+/3q#ܹĭ`tKpS6T>@$>kcgUqvH{ 2l4tf{+Vx1U, đlv:˲ܬDD@3Ml u¿g*gL%j;8[xzgWGg"X1$+_5bA?>&3b_] L~+{11My1!igp! +vY=@~cUl[Z*ǷJ]spg5⫫mZDT겛oDvZ4IN׉#mDy6&ff EZe}EnJ,$vΦ%2עPEu9-Z)Ee+m|?g=^7fZƪ*̅dJ&m/a[c2(6W@Xޏkro5SP`5v$uK􌞖,E]juC8!|.־szymL頋uYK|=jvonF6^wP˲gM&ũQbOQ͆jU +cNu4k:YzTZ*9USYq>Ԟ~_Fs2Y[ ̨Sg{wsGWN. TքC`Fx7WҴ,ԱM/>Lu[*̯D (P偙|g[lo=)ج^%{hRK3z}dd1VƭPp2OuޏiG#7: v ة}zcFUfcF-N=2k8,ǒ.d&9\÷[, +K+1NGn=kΤ%vK3aV2R+r6)bġ?WkKxXJ.k#Qb:awvf$kYfV^ZWe +/cɋ~:$f8 G7p:fP߳{܅u[3'"PYXV12߆I˓bǴ 4t|kۑ~-vrQؑ|Fp@s5CX["c88B~Ub)+Qb_UȢwd"XV[[̟VWyiUV3.’@e?7ˮۖ1=jhsNn`ƏQvQXp֫c++Y_&W~Hwed^6A* >SHfs)XVvsLy9\*[qɍmX:ґ&Z +9;7 v :59Ҫ +A'z=JzPȵbS4sԻXx}z1OeԐ^nRW]HbW1~ߙ:O[ug7-0)EL/ogoӻMy}3~oO#"h-bN뷾KRzz{WijE[D;ZGq]Y텋nEMd qU.iR@,;!VgK9Amv#kUjHߙã.¾v%߈X+4A=L:_z&WPlf +>#VeatI_Q\ιcjױkVG{MWR`# ~U~g/@r\cq6|FRx=,bds.ZW% _(jvFjvoi*39VR,icamÒ;{nJcI(OboZGbz=GUQ-9c(TwW3 r)u//-5ڽ:nuu*fՉGc彇=G[[S^vcVx <C+YONZM;[\VڰeOrO~Gͻ^]s*RHDWa<̗¸bcϋC{ZA+o~;J|Cp­ڱ{$-h\f}h:ܷ껦f95X5Yf.{(=m=U[JKBg7Vz}&-/n|h+P>;ݥ:sr]c'c%rգWbbJ{f-Ԓ9X̗ +(M]%EHfZZ&&-=RkmvͤwIz[[2 +QT;`e:W[1YEbEPč#roiIRZzZ%\vCl]r]?%C~$9S 7=^u0%p L?7!_Cu/챃K2 䏯y}+(/;m$>rs #)*/\eJq +v~}'g^~NVoR]R> nVs+ICq {~E~EwP&1bݻ.9͕jɹZ>h~WGR>Z%j?|+TlA |fVW +߮=0ɪ(Ѷ.; ٔ˗bQ+RB^ͯ߼=6k[${ +.Ǔ}t;#"fZiv=[^K9xtފL6輌UTe= +w.n`e읓EFށI:f.Bzer)Υ!oЂ>Alik%Ye{['d 6u+z]]K/Z[ӣh#A=_W vCnͲUr5ض.аc*3ilm۟=߷߼dtK-ATVvA4~zW%2TV+P4xNzVYc-`֢?sF7/U)r%,MaU$Zħ1»ʷc3Vx.U5w]۳I$ ']6{KU|+V iwSa$;a 1FU;Y,#G'HwLU~OX̵kz)ZW +ØnRF]c -\2.wlI2WE(KQ8 QW:=ĕUi$O&b|'26oF.z[Áw`Z[q E0[Y؝fē{tV:l,Ign;`A=cč2J^:S$TwUzH>[Zk@ݤzĩ3}@3 7jXi} :>ƶzA+oܨ7$~V3h{YGp8NY\UBl2 .m{/Q*wKc׻l/E&̤{9omv]v_Br.K-WP64Z pT*WXC)yR_},s> AZ<7jcV.MIH4N 5s]k(C@*{Ǝ [6:KTIA) =6;no#6~M`ܹfInzU~>Ci|pEg#l{z^=Uf2mHC_I*ԽYW);O۷\euiR\n~v{p\k-jKvh.-@ߴpozaYO,Ĺ:`ϟ<{̅ +R;c;EĻ Mlm'+KPwHȶg%${}i\zҺ +Gh~ǠVl.jg_" }z%B^zf j +GbA# G澁Ey45XV++48._/xpǞ?MlB;E_Dy<w3_QH(,]ʲZ[e>NCd'!g ¼ O}nXfjri[.)ֆdlrv VY[Ѝ]nf|; lob̪]˚Sg_W.tΏWJu.܊Gan\=6-ute%]Y|0#r%ѓSא]nlu5$P.~ϙVzȯ*DZ@"䡃*Pðr=UeR`\vzdf ^Cc8٬B :F.WhLr&{kfF|6Z)jǮ T|m2>^GfEG*}m}i,lV35i\$'߉OEZBY՞ =Gbї [Lܙf>;`О3zeY]JXdAK;rnC"J ][1 ^\Aa{-rowizޅ]5嵶!N.LT?@#Xߍv4I$y*FںE4.ֵ{jYK 0 b4Gy~9T hc S~Mmg+521Ŗz@o?Yf񭦦 Mʤ)* +c< y&[וmFa I+ j𲱱]y )RN䱙U(@`=a\C  kUp!X)wHn\,UG~DDDJjV""""""""SjV""""RV"""""""""""""""""""""6%Y4&C+`x;?8#c]XYU-6l! +1$;WSR ~Z.@S]*-jl#JKz1v!u컺K+cRnf ďO>L}Jvw;l"r`W[${6_[uzb-ŧېq!=lv;}S~ѹ^e~p9*ڛA&7&_SwvU/үGP{ $<_zR&AU"sXr QܻcwTū(TQ麑k9v>6/uk?_jT椻!PJ[ ju:-Q6* QV%wf}hi!䠟p&iM; +Phz͟E]?Ղ~5+܍{}ԭx5䪗>!4Kއ?5_# +ɲL+ +n.O-}mcuXњO + nvB)bq.Y.XUʠBMnڲԨYJz$ +ms#~N^&gp7mM""""""""""""""""""""""""""""""""""""""UCO2Mj0A2% WV_nU%$Ƿɻ yO_yk*ʭdl ˠIx$rA(jЯCƀQ=?È׫ +]p(ߨ%|q`tWݝfPZ3270| +HQF•=gnҖ+2r1rnflfbQ e(Ňs{ çÉ^S,> } +0 ho__}v7*jٙJ`,IƎ؉.}!Ϫ_'}rz#:H !EQ45y?i>EtcSc7dwc-8aߒyb*^Ke?-\G 7qMo]/`tc3Ve*AQuk̄e'jR܆>၏vQjZA~Wv7Yװ+bH<q(T7ԬDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDQ 0ۼU~Le +Q + FH2Ա{چpW~*:$f&oiW5 Q~?/hMssz>Nbc-Yin&~_7XyUu +:n'm^͕ +-̇Jʷϭ):+Pv@y7q,h,=o'.5ԭo[M܃~+)w"f ]rn77{7(O;`<2 :VfR6: @#'[7-3zAQ( /Y栁 bT6X)v $w&DDu:-B˿uA[)#ѕe S[a˸Lr%=J_Mu3z]&LWV&:[-Z ?@ebSpX(!!_V׫-Pwx;&Cɲ`,Y] +oV5VoV0]$wyn7<[~7|GXېVUEO;r&R7^(3l2^Jr/ rABHmo&rlFqn70awA`$|}JD' YS;݌r/JW~JY03U9hw׍{G7Ms E>znyĝ $Y0A6l&լ=X>F1nɰoԏӞI:4FrU1gʽ t^g +[Zu~ñ'MZ>"[$ Cv<2{V%H#mKy +bI VDX7bZg5OF ?  +G33_VuAމWO`gX}g.z Mu# +{d>_HͨŶ[ }f NJ($>H_:eyUħ6䮷bȃ[ڍmHUz7P̅Y_xVƀ2= aK$l2|^X}Zz?cܕ3Wc;P÷ߌ[t:*ZU6|E?Y%zoPUw +]ΎbB3 C[g_#V#IU]kߊ}wcقZkO_tf=;n5z|[Rևn}{˝7ަ~Jjcz͊/b"KgR|jr,jT (E~??^e鱈 T;D֩^G{'ϔwo4tGĽVׅxÐV;,}{M??Sk) J+c,O!Ͽqژ\ޥcaL*lsyc$P&LƮlu.Tl +]R{mQ.s-no}LrhUΘYlC}|=Et켛̫2.F5Oq'OԳlNex*, ,uzh㭟٩*°%VRɓrUOF_)wF65Uvo X7a=)݄t>Nf/[ώ~qE;.~gNλ#)ZB&.'ĹCdtωqqkuWg3# ~tNᄡ CẒ Y9~ߤބ~8zECЛXvhэGQ7Qd;͟܊rn%r=|y։= г[ҾJA*C4v_ :oGʢ7>^'+1gaܟXSckGv` -wK]9S@sMkh5Cg6 a8or;o%} GSb\߻įH}Ĺg|kc>!-d>-~ZVI><O?.a\Z<0Ҿ*ԿB?0#Gg}o2Xۀ(bA +. l%;OlkղR@`?{~+gF;=4UC)ׂ$^cb9ܚ}̟ǘߝJ$cҿ£cٞN*U] 'z=-X:ZUHFTKG)WUnʿQ*uaOb5BeYݬ`z=^[$iG΃UkJ*(P{ |Wunӭb(H'>#?tX-;*gD$.OR<2Pc2[˓[@a;{[NYZb\r]{k[Ks?N;-;<߼wG{S39O2WXKk?WExob5j nDkz>rF?U{"h7UIR@;{Ύ8]7m ]7Qz֦?QV3mfL`k- +L4wJ锩cXP>`"}>&[YԬAUv/|e}aB k]GýBz[8RZYn)oJF8Uui}e|VlE^KnIQ_>ĩg" 6oOKzPGX qkﳤ'>G½;-Kj,+m, i.MtdRl;;md |Nu UNm"zXxVy7wgeа0#P>BII?&zvn>9( 7[~F=[g +Onי߅:eةnnKY{8xҹ t@g˯y`df.sMYXks7 r>2[a|_>MA(7"9ӱԧP\c? O'ϗ߆>TՏn:t3R[Koo԰P=lZI%=~֕ſ1{N2ۓX#7Ր$^}E˪>G$ E} +gJ`X$<>{?J'>~gjw284и蟽q +IoƶĒ'L:pjZhkDUQlkƟܙ:-X`}W ^ Kl4{}?z5jjP,nu%Tx=bb0~L|k~%&Zx`w_wמd8yvdw~O׏v:u~DM Jd9i eAElY|kuk8-mA@`Lv_9U޶ x) }Vb CN&_;/A,y2,O H+atN7`OLl0~9'ހ:mkUkӦ^zZT`z*ŵX@TpVbP*NԝO'2 +A@ sp uɎ?('C]_nܔ\o~w|3c=w 7'>Ǥ3W,@-kzOW YBtk`̄>ʫ!GGv5WU޲0۷}Ҙ֡U@ +h<:n?UɬXS'dK4Un8zVw{K)+WK3-5  y\x111ff>Y$ɖzME!։ 'KȀNܟ1ᾟ굞ܻf5`'Dq[Y `v>#<{VYfM|ݬ[=>q[)o l@y`#/\<ʫWZ +hke n݌'FW.ݴ6:[HE'p$9=ϿEΑuF Y֐G*eԙ(%E +m>>H4Dp#;;$dN}>gZ1~=XUNC~ӑwF~$f6?6h.g:EBnTEPAe`Xv,I$z=bE3dԶ(`b;JqNvrĹah$FޟQU1jԖdB{P^o'-3lɮ/6woq2ͪ7YomAm~{IӱLM<pnJvUڲg/~oKr܏n|v.`t:F?PY)׷&=:j[}-,*y!_>8͓&nNSܖ%%>nĕIX 6/fww+ĝ ܍_½2lLuYunG{n^oM!3t<5|3Hj|Չ~D,XOܝXaԔҁ*>-eX#z +s̸+(}Z ]oD~zcf:k[ܛb7b" W]Ԗ#[]m0k"`F}xS鵛1jԯ?N. ifq|A_Z,St`2;Z8ճw# `Hd~Saזqbz${Iқܬ?7C :*rb +wvq3>lJUbC)T.45#ٖrQߓJ@;~aڽ@b^ ֫k? )[r-'ݔ7~d:55Ոzih0N԰t=N^>1,½6Ds!0?yafNOM9>'`IAnV_^M]jv1Z*Z5s`q~rf&f5؍Z2u rvXx;@>j];*{1W6P*^vt7<6J |]~Yy:O#b\X%=,*Jz D>ǣqX0뾗۪fP$B>Z_ӳ=KB"2X á>]˷.M36"ҕv?.ƻ7'z=_FŭMdqָzYfeg_d'omyLײ*=q/fpsFe#eְP;zv`er$h,a=3MJљEv裏6y9i{2,xԅĽ޻lVՅn 7OpUvRq-In MWRǧ"vk>UH}2[XX'donGT˻t69l ˆδH@7ٞx8VJc5jUQś;m)F,8~U:O5WVſڱr]+k^yN:4ޕjlA}0O~ঀֵx6fOPSZEh섟̬X>%ކB +p묝o'^?dVn#VsMn.jЅ&ݴ4H3*1kͦ{7[>X0Nj:JYq8:de TX,<8`MfSR.N>Yeb5og]mOn_ +'^e =ωJK=lOhE5OM,WrTWGzH5cEX. Bk&~vz%}ypJt܍Un_U[X$;{O=K:fa]dc R} ^[ϧO5ܔfW+Pکm(ټS<& +̋SE鞚'h\6O2O̿W:kw(ɮn5ăǗY76k5"SaUi\z'EdXY`bX$6ٶ>|V|.q&ҬqhN@$lY@5m@]i©;i!:zYbuv[c5}4B*V'`| }dY7nkާszd u#1~oLͿ.{08RXC(h',.rml8\+e}3?){﹜V k+Y/ \6p;}s,ju<)^"Z虶jZӞDMaXn_aWw?V=Sey6QNMG +;/"*W*;12MvdIOAֽ 995 Δz)KnF0g22v8KTǦK6'6e% ߃sGF&K,Ew_e~ܻw#z2}mFV.E>:Y՟kZmk|}y"=?5#'&\aZOrw{3/ԽJ[GpFVr^~o vrr)#4cvN2[ VRo=#N7](Jwn2םjlWsq8EڬY ׁC+~YJm A`J#Lc}Xc찥-`wk6P_ƆfGW{lbzA:WWRVR ۼQֳrpz-D=m·qZ̐ +r um 5N l^f" z%=gqVF +5cJ.w+rlBFme: AnbI^E;ܬfPޕIҎ5 +BcJGzML +>Ľ_޹?9 k]x}c1kt61 [˶,{͎A=Ai"kWmUZ"6{|ǼoØVLy*ȃlv{2gG1N"[Q' {8XIbI$$V0ˬmˢ$^1*xֽ;1:=2?hGWw\<87֢0tĒ4wXVr*Vc2'`O;wIljc>/ +ҳc5j}~=t=ũ2PsI۱scv=?Aj*sQN'}Dsvrf]؁?A n΅m5+cYb1 P% +%veaᔏ{[UܮF<؁l=o5mk ֶӶ[fVA:=y*:mX(^TlOtL{3*ŕVkMX+{{{ +(S8pga5gØ&Yws@xv#]tvMku||{XŬ"OE`PyntTnt<-IkYVU^-5띵f'}x]O;(P ޵w@`Fg{tb- + 4?iQ&t r2أCGu.'~*z.74 5 #g +α0*WxOm}f+9}.9ɾ% mu_pGx/=C\ dd l2~L6;06)˛kwo=~֜:H5\)K׶L}mΞ#qW$}uc]c SM2R 9_˙{,E]З;5f-#{R\zD9Wacj|hfݬ9}~(阧`P F$R9[ `VP-~@r_{=ܐz%'5sY~>qY]]5t6dn뾇K#  P.WAB/-v@ٙ2,/YgC@mO7{Y^S.k%byw/bbn\; o~{q56dՖ͵VQX@yhozn9F WDj˻ +Ug~ c-øu| aURvy-AX&}kCή 16.U+FXwvKClKl+'Uђpc:2sw +,7ExP!I;w'l ˊ+,y qŻ;L^M!귀OR.$AZ;q?P%2`\Ȗ`vv~\vMYL\Pd x<7,r`Ø B|;Ƥ[}]^U.|;^%xh6NƷ+ĕɝ\gmx;a*""MFgY99k|v9k3D-U5ص5Kͯ:Ի0At#{NCzDDDJoQ+)+(@>eQ(i׶};K'mR?QV2P%&q__ ]6~`?~oV[]WzeQN羑JՑp + bı;""""""PJDDDDnV"" կ!eZ <,n$ +o^' ǽ񛙹7;)>a#Ǽ~'6~/'_ؕbe#cG`ߴȞBc"u. =l'ABI[~UwǠB*|eue>acZRB +!{>Zƴj;, -7xhMhtØ=wmNƯY^`p +Jx:$gf'A]XɒȭFTH#?Lo9Vec[=yY`K2T.WQʮ-JJJöɭ" =VuuݪCm: LWUTH| W_:uBlJTl+؂CصUh[5cPOC؍w玗vS+0rmW:kXUԜufYWSHR@>Z}{59}E +2?݌TQ?1i#U#NirE9ilBbݏ ~q:=ى>bV)f+]]·7}KY`u6'\ƁڏrNU[*r U eW~u<#DZՋ½ҍ/OyCaֶj A`>L;ױ12Wakv.=:\]ERuԡOO4{JO4k|d<^u!t߉vvV7p\z/bYofG8`,JmTu3׼oYǪƨvZð*|>ɞorZޮeTpKxށwzd=ȁʵlPL#c_]O6hUg^ ]\afUd3~h wf͕Vp=Ԩ on'>"Z W"[3J/xMCoIBxv=;IUeX qpk|oIťY܅UN$^֬A Jw,=?]w*\"-`EoZ$:+UŬUY{7[Zq*UuNƵ=cusѦW VࣅmC6=NFU»oR睌^ =΀)oTǧ"fcs_H`|agP*\Tb\#%"DZыGcJ1y!]̯3*=xj +K3jY;NWcĞ,Pz ć´Reֆ;r!{}]0ս0lQ͂ { 2yC2`WPIb5mW'*D/a$;}+ )kzdu+c~Ze7#[prdT {??X\-k1szORj{QXo[Po`ɝzDK@֯~$f=+egdc}6P,e-5-eA=־uA[c +R83ޙ7ek`ڟIIί';eV\''᫬JrU9r$eOVw.UU}'!EZ4 g1XP?1WTVMP2h"w練|%ievfܼuȍwoi#8ܾZPo! +=D)j[S*.}0_m`|lҺGL?:PH5eSdlk)FHcZ%G 6 u\S;K6h aOR P {v? -YZܟU]jĩ=Ǹz\TS|P~T~ɜc]e+֧d] +Hֺ]g5"_)k@)[#).EUm{+ESZA=6;:=gFJ]YzuAPe ]ωotbs!OEk;`In|K쎣@]bgR{{=c^ +)$#-ʋGwf5o`5,{IGVVMVp3ekTqХ\ .5a)ʳ{=ʗ*A$d@;nm79`R*lUqW`}ezbᚋΥWcȏ= w|7{iezf_uѐVl(I.+[kׄTv}{lbtܺF `O}Wd -ڥuZ+RUKy |>S!^!ʳT:h#jdp?,> ]>uˏnCڟc$D@4#j5FSWNrVJ!Ch?-kLR8AvQߓrt@5 uNn{puT!-pTn`fB%JzmW]>ȕƩQܻVfFXu-+RoC{$혓b}=̑)FB5jVSQhD1jQG+)ԬR#RFQFИ쮔{dc\iUb8]%N#w 3e-*]C|Fv +=YMFЍFQEdYvL65}=9pK0fv`(4$dMFBV"&;߅Jzg +8.r66=+YVr}]zְcA2slġRڔNv}fEQEWU5ܙyl16Os Y}N:H"5wY ;iʹ7-JfD>O멖c #Q]{&$6kc ޟҏ?0_iLge6{1H7!1(P]t mh ܙ#Ա񛅏'Ctdu؝y][м@-ؐ (?}OyGr'tG[ߙo#U_>8: Ogb +FG_Hkt4<|L7)mʬ1Rt'cƪˑ]SRtxG"ίRWc\lNhwW@;W37!ƏS!rtEYO`߷nV]855׸DQf:P>vuLZ{5́`9Yj#޼ 2 v|w-<ԷNbPÍ+vuOdOT2/~lJv: h.; ]OmXn>;x*MZk `<~W\¸9K!}vFO=BVY[J ;usEZ\!K3$e[:q͊-e,cQߌ2wa. #RN[*^v5/Rcp?|N./N\ձ,z{F.waܟdrͬ[KC2Ǽ1VRɂCg[8@1N]?p{}e ~/Bď*?`w!QcO&p{3r&GVųӶVڎc>7!uÿYC`yFd^r}cc`]dJ$57 ]k'C@$o`>rywf9_KBh7Wcv_F*pR'؃@ctkP '=a@drz6km:A'~a$q2+g.ѾWW#)w=?7^=}u_yr֫mJNϼ-`ǐ5GʉXMGX {z2bR݂I'@fv8]XPնaw_t[#,)ȸn/P1:f#`A4arn߯s JOEnzlFp+Ó|{{G60ı0U7[_; +Nx|?c݁CYR;w:=#y_JVYދ* ԋ}/;[ c:>;|UJ_4C%Gd@@n=俇:}&ּԷ"Wq)`ystA5dBA#}A&Gc 郧njb g\v܎O.M=1YaͺzYCˡ50 ՚xj, YLW.P.$}R #(~ކ6AǝUr>+9+O9.t]KԺu Ձr*:kc- [A],5;++cZ>ehF-TG/ym}$ofzx95dzl䡊lrzKne5N(@5MM3c_gZ>'Eؿ2羅|ɭ wG5y>Zߓ^΀ɛѬ6U `PHd3/6kKiTă<5Ulmu^m}T267 s] omw-&OĸL/U>܋ԮIeҴ.!QLӛ3]ZDzuJCfKuSMӁȪ$15)moDDR0 +bI`Q+S3YԈ|-8tuRE9tulX5`3؁1]5/ϣm%RJ aͷ53EVՀ>{ EU[ŌTGȝAg?Y'׫/OGMiHew)^=LɸfEtzJk}dRJFo:땍֫ѻ.AJ;qXՇ{'Qo{yKbu{q[ʤ>5,Vuɧ+5lt冋ye^/*~*!.Hb3rz 8~'ӡ+Wj%kI~~6Eo%,Ve镩?]u1"N'<6/v>gR] ' *~˲u,[vGR{%v`Wc*8G K!t +FN-uC][z5 P$fWUl1 ͩNSi'E5Wii ʬCZf=^Vt1 soTؕ7Q^CĮC*C+ rcT𼵦Io^aVBHP @?f T<#3֧JTr@l5(իYA޿IRB{k}%x(ի0}Wej5C>w#cYu&,4LhF?oX址߀$$҅:5#A+ Eo ^##RZ(:^ on}vecؿ-H +C)yΛ s7+/;8e +.πC}dzEUО畩'gC[eZr loG%u +ThOV8rP u]}dzeKo!vWieֻfk~5oK.Z[k; 7s!(wZꙗfPT-U6~a[6A&ŶVhrG;oh?IB6GITlRacq%rVH l͖*Y*Iʗ:N<ّUEUTO27Ptl=jQ'}'[9Y^euBC FnKޥ=ۿo1?u[32L̚WCovԙ}#"VjoS,X4>N#5Qu^Mɂ˪Oe8Bq~L0nY̯2-:JѝF́:Ү~ />$o&�ܔ\K[$A=rV@f >}قsz"e[lޓ!scˆyy 6~~L=נ{Y{Gpt{嘬nGRbkt w6; ^&;jY| G_]\C#o=YN$ =.{>gՀ x[U`HH:˳OZV[{gDᯭQC6@'^t=m(޶HNp<-4UTV`I=q_>8 +.ĞLĐybϷ6Q(E*~tQi9Z$;US3%G%}BKC/m?I(Jc )b"Mhops1zm1Ej-7g!sf;>dzF%Ky͡Fm@ Iן}ͨA9ס@ +80r=̑f66]8XzW:VQ1R;w1Jy햫ȓK(4?IVsKpݟpv'K9_dTZt w+ 0\[o! {LnP9x*:@c'IKNPV?3+P}y;R&{ ʾRamJ.!3te''_ x|U_PJCR%ԻGt`vA>f3*𔭵Uqd36qOu]=2W#nǂ2~ą LY-MxՊuA,f S-UgԂv5a#ܟ;%{1 j;~8PO};͟YEYj"f hkSNW^ƹwJjj#ܪw1J~G^ i)~]-OX1rp;nݹ+ulM̗UR-Z{t 'c8lOJbS][*B:Fѭ,w,k5'[hq7ufu.._xo)f~H'Qzz>lE_ZGer\Zc-L`y,>m¬6 ԑؐOm&㩶I>)-F!?<rM +-&2SOȸɷ֦1VvS^; _X[ɐdbUתǥ.hڀ 16oAulta +OO&Σz)OJ-ŀZ{v{x״:gQ`.ZXlm` FvX=CA+iUʱ o=bk@fQUz>Z+kr!I3]fc狭J1z4Ӑ>PH̷Yȧ "jZ_!ӁmOy?Z&=mFJύpmηY;a^m6gN`ll0;:[ٍ3VVЄ!7_ fWjC ]dQiQGmc§j)tUɗ9/G]ןLDDXl?{вKj'4;p~,tVri:aGF'>GOՆ,c6@ JDZ2*USk|{L?0:}&lޥ˶bozMԶ>Jsy2căg6=Y-H,u.g}K|Z[-SV~M5ވZ t4; "\;" +(ހ$E8w.C*Orc,ý=붯èKH.jCZ <&V2"Cz +f5Z2} 5، ?zÍkNݻw/d|V+P>R)R*G%zo 8?szN^YF~ƵkJ:&5TƵbI,uEe^Kn܉; oI͸ev+=E1*Xq:>^6E!ÁefF+%H߱]8We+@TuVeS{iHܝx}n_dUUNY v{|}'DՌ1,q10TuK5~'k|?Mg*e3XMJlĞ^^=̾p7 篛#S]W_̼uChoD]ΑB8hŘ)o@ɸXEt!b]X&_MXn]x4*.ΆIW-l<~{-KZ\'vq@yzV[VPG2S8%n԰@BAfyg~.qĺb@S$_Xů*lJq%nV[7,rʖ u}\7P|prT/.vd7ɮtF`} C.3ɑ:bٖtJ.[ %<̦`YZ8Θ7/Dq,&b@ X! H6On_nY}wukri Ezw־W +9h6#荮MKxo#+(d -[75Fb8!JT5ĉ&Ex6Vx-{mb>{{yL,_[HXWb +W2Q1v a5eS}^DrcQ,]s2b5|~~<׆s㯣ec"me`$XKٽ:aSePK^?~bu[ڬYFBlNnvZ- +V hDĦqn7ܬu^Mu5ֺZ +Nv=޽IaVBȬUv7>\ܬNGO#0k)rI[>۞%Y2?+){p! ρ=22.VeNJ܋M|b6/.u?M[!Sի6,%\ ;ؓw/1f'2'Xѱ*f +@葾v'1&b +k6%]-d'$Mqi~o[8! M)x'q!c1}F!$C+o)ju +VÅm:5m뺰~/rc +Xk{hڐO_ڹ]:o] ` oLe׮Klcχ'{ֽ&J^8~#fnmw-tA =N{]JtA)ѺK_Ek#o vnbLlvZ m{g"ޯ2qצUf?(]~`X~Z+}{݌mG-^6xIQC@e  P~vkʹlFev0Vщb(aN#WS>Jen_Ak?r&@X0I鹮Tc_HG1UG@Jk#M::t`|1~m2u za qP|(;c$Rf7%/gzǪYq3{~^ݷ.N_H͂ƥWCcQW+ef&ESID폎/N|;Mj]6+ly5~nyT-˲u_˶\~ը76z֭ckn!YGdxZ~}Yǻ׭,^Ja֎RR/HJF m}%T=al~DM{]Z+R6G[%uic:Ub.>+6yqnDl{cV;ᰯ80eQyGK=RԮ,3cz:;#zoQkSxA ;kxܝЯDW'jҨڅܙ#P8:l~;!{׏ki*8y{ ';7 /Tԗd(̃ +{ˇ#.qS!0Rm8ˈ˘8"~G_OgR辽6I}z oydmf:'PNC]]ު[^@_3AaC,Wo=`[FFBd=*UJ N?I`{l HggG*t劓6l*7&<O4;v0S-Wn+vnq +Ouw9B9&ė8,LOSU6}܁k:uՔq{+]oK}6@ef+f|~^)KBmbFn'P@oZcWm+\` A#|,:~0aljJh|l}:R#c>uoe9Ok83!h;xi/eI%6OG +$Ls!UB7I]Qv{!~˨˰XMWh}_>F-vϏS%&a~"RO? ^M 6d\o_N:_U{PN$t.ClYV`#A{U}矏y]u{8~RonBe/,*^rՂVT<M}?n^8z +*Z7ʏ~>[Ggr/ulwzUW'EԦs/V ?;kw/>rS]9+PЈv*/5V^K['.+@䣑`u:[g9ymemM-beG=qFԎy\2{1뺲'41;urzVj=UBv~`oVyY41쯂9wݴAoy,fcul,[/a^FԵֱld5[k(@pTXmδ: bCQt8) |2WMFfoqbg@w祈+'݃_pv{s3xwXd*KmUW}db" 㭕/+(uƳ˰?X§.>UVzzP RGb󈞬o܊ȶǵDDOyt0>۱wy3_I{MS"ʬ-O=kҚnky]b;lv{)_Z^Z<Οeu_i+'+UZa(qN=Uf3bu۸a!4aPξc︙jbAN24=D)߸'E)zSNA4u￟ǻ̋O.(K>o\,f +)@t;0 =:=k{cWn^%#Eib20޶FC154ce A~*RxޘVMgKAbI˷}ZߙvΌ}bh5(p/t4Hdhhk]@d3GïR&;䵘2A&?mT1W)WٿkvTo\ '{Qlkz>T|O aM$T? ~Qk.XwN<vMll̪Zxj{T;=a2w|C1ԻPSَkY ҫj|޾ ZzhCX}"ޯZԟo2|ZG+u>}`V +e~lUTqSWeTYU{{  vG&GQ&#هUc]nE5[R=@o` ?JKjIԳV}/EJ>4t6W#"̊`@_ΎešﱱZi[}r* 's5z\x|i^чHk.nav1@{v PC_?@X-5֝<7|/Ӷ.~!C:@8eɘySu~uض}i%3by CS%28IRRC=Րlh~އsW.[O"‚ +{(4zpܞ >m<Hٝ s\FT0f2߈)gAdk.C2BFacG[jEJҪ6<Վ1Oе~E\ծK!4tǺt;x4w!U 8V2)?jƴ{̅#Χ;`V*-}~梄ep܀t{}!>0k5~] p=@$y6_CLk^;]~AJ>|K)˱&{ +|NKn9?Űk]h k]_LĵrgKFPOswj:_G^ZkYW^o>Nϼ:t +cضीeBT\uL70b M]o]cqv5 ߐݿ7άX=rG!r|&dhLZUEoI{?EUzCų]K,}̓E\இvOdAUE`䐽Ժ}]SkttGЂwcy1ŏGj!l@%zbËݵiDkVnv{*1Wӗ߸ʄW5>Q[vf@kNElȃv$/Z2 7@OMNV-l̵mxއA"=VYN2O5[Xj4RA^2]nĽ76y_؟}үUQSV`ChI:==~VyE@\{vԎ~t6FKWERvPǿ_u8EVU*BSx]\r%iD}oQW[=-cauqږ b?"a#cGI-VYs :"";A5+)YH+)c4_ +/aQu~֥6nxcQu Xg;'oCzO>Juz7$u ʧB=Z";~ܷuIz5v(ee F3^bZe Ӈb05O]oL}v~3-$kJ |aVΪ1 sd)xJhyO2)lJĦb""""""OUίhUlQk~ܙǭh|{iI+O{yv$~3#X.U#؝O)q[6k|LTd]]e(v +O}KLNu屉f Tv=,ÝZ.EaL^?+hﴹSq]",O=ݛF;"Yj)pC0o·\|24دŃk߾@0}M22'FVB Nب֌eu|<+³'c:U|'J<,!xP,N$F-s+0J&X:b5}f»#ay\nH vNgqT=*@l}fn^oRzm>;]:e:1n5F1 $ K#QEצ2@ǰIkʶ* `:$mOXUe:lW]jQ1G_i:9[lD7\sn#@`?2ܗlX;/.ͷصGO2l-V&ޛ%G!i44}fWX] 5-^|ycpڠ:A\P=Nl2B;KY=G uա ȆuRzމ޷)̬[M|2Gk%c.=Y;+'Ua5n?O$(,Q1[v6}~(K4א5{˃&y ]@^u<ӝڌ)_ y^NGl}ǎEGNyQKz&9w;o}{H8yL{iuK[E4,~a{~l7i\˺U=#ف(vlHx,}~Poy+?)ԯvlSo|':1E:f4W.Q`aRGGÝzeKQ[nW<-dSk·yw;6nJWגV 2/qR ,9w/:1?7eeH[K? mVo+^" ':NIodd?|2+VPSXEbζ?3Mu  +* |~܎|!uH :>U`O}Uj\Q,u4j!!) 3^gdzT⋈tZ:@xy?Sq֭[wq̢v|AXyxєY1h; 1nL۷xxD1ǹ,txm}<}}muH{:cT3`d!w =S_JF#u"t6"q?7KgT{ +p,Bq?@Źk\zFJD(97)#g.dӕպ6G |)l~E+ s֊OO@~1mUӺ]D/E㿼t׭zPQb(#cvt50}JM7,}7)31k@e^5ހIɲNVUt2,,,\gQ G{pp2v*q{QGޕ1l,r^|vܕu^2o?.H:}S_sgS5,Gk hU\8'f[_nܗ곢1B}ҏ -l}? +^=@F>Q:e*Aw +Om:3;Gx-A(v>f;L|6r緙:~JޤVT25z*3|@|IE.EZty [Fȹ}ƫ`Ueߛ jNĢy˭5n%(;|~nø%)r,`}U]o}Fޛ8R"o1V-J;b[=68(xXOYc]2A>ߴ7xKW{T;aSV;#f7 yt[_brYsp,~~)u yW oj2u񅖝?uReUQΰ`ꦟdz9xD}5S;l(5ӶmyJa}}e|1X@j޻Ne3W%@Cd=m}L5Yutk9Y*Mw~[2k^p3dY^ۧܭ"'rKG2 duvjvVUeXw]_V~'#:8o:S=e'Ij :~^+tt[Ⰸ Q̃A7ȧg[rxxmX,;ied_y%m6HbZʺp[.Q0. k~'~\U- +mJ?a>)zf`xo䵙^߿a#̱ײn>*& TlȽ-Wf ߞ綹h Zk}s 6G ҀO実agӗrR͓Mٶrjp^<4?IQG1Eڵ+?'LΤ@Oa¹GeMH'^5sk1dfx#`_VoJuѺI(m,@Wz'̘ԟ5|k܁}2+k##0;#tSqS?òyorR(ƹMuoΗ:N;_WoIQPW<9*Z*v}eн]bFmx:m2٘XX*z`O^]~ֿ(ʪS؏eҌ O%9(${űTwZWsS>kfd_3G.ޏ>N楚qJQF;a/£(rj]C?Qu=+-Ȣ'e5J#e-q5}qu‹+Fv6~%oū)8Zx 6;UQ䈪Ha@:ǰeR"#hr_2/OU[};,jOϰ6<|x}ə9nzW6C G o} UiE$$ N嚺 T)=Cyu7j:1D,vT.wjƥĦg쨡 wxSΔ $XP5Z*YQwJ]J׏U$ER|'jKԥH z)į4F}$ + >$|V^5aP6vp5u;'u ^1EHci ":h ++T"^*!{ZQG!|Vciۢ; cy|:,qcVZbq{x]1xؖfbHjoepĩ^եe +}9pF, %xA++J4G#Dq#{J-.j@ +5> |ʦ=UX\ ׍}OJJARR+bS0gq)ߥZ QN^jJG7E# Tulk0访Ik@P/?.bS*QwT(£~H ~~e興zV]zeTF +7*ŀގѲG- b?^(6tu;r=d-uVy[L]._s@Of3ᮧoVL/j ,dމ>2 ӼlH+*e;jGn2G.rUnl+ǶYX'Zn İ#`;*7P̛06LvrI( 'ɒ""""""""""""""""""""""""""""""""""""""""  _gKG5F  x f[֙kjUX8@ݹ30U=3Q([0"_pW,{º?j߇jձi^0Lڝo߾Z=&F@kkV V`@޵ZxftߏH$mMNJy瞙BulيTLu'ciŲzU~KzK iKH@RuK}1UBY;6kGʜt{H@)g^ĻL}.<:Sȩ{ Պ$mrgWg#eo@߄(4+_(9u@_' Mz Ԗ\Pۑc+=y鲝ezAn㷉 #P#وLDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD,~7>ÏӏK pTU 60# x=L+lU,?3ws+}aQUU ˘ua'RߒI?RN?rgΙ=j^3*Ŷ@<cpmp`Kʐ{OEd WV2׽U($}_n+k!p;*=kR\DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD>n}==K"dXK܇5m0"b fYFSb~qU,MΧ'`[O;GnG;vP(uB!~aF[0ibx쾪{7-|S"7:J8nDʪ雯 J,3Pt׹%[*BՋA31d&?NuʋPhK2>L>8;}4Ϥ`nXg%VʲkWp@k6N,4ߴ2/XexuZB}E[7 OsVvEMb r[R7_)Qkn{Qt8T}H W18)*Ef A7#dG*  9r[ަ6I.KHn Y&BwN鹎X̥qI/Ojɭ@`Al{_JhWN2}i]lO}ؚsdsbF8p[?Io;ow [}J^-\|ɵ*QitZq*ҵ{I_L$:%}=Kݕ7+ e$b@6*Ö0T[ըܚ@i]JIA(ߴz =6*ۮ_+[!cE|+2MmIs:{F'YɴcV\PQl)}-j|CR/>>Ys$-~Ene1+,_&XR@$NOgSܻU$wuno¥j8<~R>~LF(ѕܧ]Gj8BQf?ֱ[5BblwɴQa 8}ζuޣj5!g[յW\Cm`?)=dltŭ*iQBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD,td( X """Sr6r曂=+rGۼ͟cX_jsbf656uNl:O><5'D@:$::=ם"xүml i6Dh"""&'y&Z"""$ݼ3Bn<@ C""""""""""""""""""""""""͟C1 ~/-?WtD^ /}Yǧ +\su9&=̻FKяV+㎓ukrܤΣ2A='sp-?J?ſ&?Յ޹QkZ}%k[.3RBO2S2uVS6ePFsAVT6{(bR GpAg% v(ua~Y)hLz( GavSX3+0P)]7y}9zG_[Wc8"Kw؍~D_S^5kKᩴ sė *}i꽱uǽ #߷]hZnC;"UmTǞCJp'^ + 5Jԛgc&=] dfAF_H{AOcSn=8ʧeBY{v:Lƿ0z|ciH~{scaae+e7"ŏd14[Ƕ +!?L͋`XHߍc%zN:;b`Q]:cnT+R2$}6;u +pD4WE{Z*.Δhl˳k|AsRH \b_O;y=uT"hԡ݂I'@IgQN@ȨMp'Jxa.2=+2ٞ.XXwMǼY4k!RP:H v1*ƬWZ^NLFȦ^(څn:cgIĺcҥ޼ޔ W)Bq6ĝaiMEMaw2)r^lOL:" +߾~&yku+(eaVtg@A=]IR=c1뻆P޷u=bSU^;kOgRDDDDDDDDDDDDDG7H?x_J?bk_Υ]kiq֛7etOmnk+z%#a}Ǵױ~ +L*TPIйuI'{σ uNG / qs׎FvuVmZUXҢ*\._xdvhagt9^Nʕ0^L~IEWdYoȷX(7JPyr7PFE*IȦp+ZR$g4;O?8~UWB(V6-Xi”T]Fs}szkX;ZKn%ݹ 8 ?Sd ԯrP>}IbM(lU@':Q,ЙXũ#/5-tQM*؞*Β""X«>UjJ76-[.]U'_p;kfY3"O#;b~MU$RT;&Hǭk$vDDDӰF-_m5m_K#r)JĦb""""""""""""""""""""" ,ߛF)Q :?euC)A#]ĬDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD5[;l[Jd*2쐬++ҜXp};*>~_$zo_(iȬo$^պ@O^ޙkI@6Έ$>DDDb"""""""""%7+cI-UuA'Q{RMhđ+)+-dSˬTQ}|WB +{  Oٲ7vOEjǮX8ry}hLtdZG+b7ԅw`ŴډkbAR}7oЉzj+ @yU3uo\[u/s+21K sR]v&EV3"Mr+ĶXڜ n@;ցd^ױnf*C?7I"I>[(t9wz]ũ y .JӕVBՀ_~!et\cCT7z~Ð忦o2V/|CU8,ʄ|g[!n3!=AM|#2i{ N]85 }LE䠲VVA-8֊K/`ۉ֏s˗u,\r^$ ˇ&.5\}wRtj_^tA.Yeܩ +:3fcXbW+0j|ռOTeUupV 0CZdԷ-ַ\+nd]TxK{dA h~_ο0nG~kS-]@,aF̫źn20xY`V>S+OPƼKoOi{=B=fպ{u*?SK "u\LPM( u?CW-鍕oAV^,kH 2tmS@ }_Z4, 북ep·5n $8a[ sj[&WNl|eL|G j˫ * =|24؎`llx&G=k5Yӎkw&#2As.~NF2[_*917u ӺUNF@** P3-v]8U .>UYkΧW#jAҙYtVlŭFG~ùu?86=~=kKQ bԐk~>1򝒫QH :}긕#_Pe 06(*Hވn?۰zsbŕ]X5Ge(bZG״C ,IyDk~F:%o_PׯjWwٔc )f + >$󏟏̵ZWp~Ս+qeRA߿ۼ|kl;gǩK $,kT'fhyzij`ԍ dl,k)Y߹ +L1eX}V>lr ֺ{CQ3|+B,mosA eyʥ܍N,EAjj%UB,>DHc 'F>C]W +ŪFʬI2sib>@*/@*Ay>oQk]U[km `əl1 )f + >ߝUdqeGV*tH?Cv""5NԳhLrŅhmO$u]Ev[m ΢ +i?MW +E#dUNL7=YÐTS#aEr;nӥ LVe䫟O`u"|qON[^"}cWtӈTC&"=~=x\K. ś~| ^>CXq!Fʐ*Bxqovbߔ{λJuZna߹=d*gK-wﭏLC5dtD Q`9^UliHOis=t~NBVM.ݪr J6jU^5Zڕf`q/၍ӍMN/JB`Vߊ%2Z,6aR+1%w߁1B*Գ.{ub<#Gb>tvekR%n[ybĖ-{V_"gȨv #cq[XOQS7þ"xDhZu.7~fQ"gLT_%݈N rƶ6{-|A}U1!v@nؽHu k>(LWz\'l6BzUAuK/T:w2?`eY e͂JŁrە,oHzI3Bq'C׼WH b!M[0]3+z0 +Ϫ8K; ]{̯Lʫeb`$'`9vٖ*U%` wߏ٩s2[-bYd/|@Jz5|Wz 5JJX6GnF̖`wVx_1&8` +alq@<\K8eKnֵ9B;}x2?ٙ=W/eZپqSYlz!<&$S70Xԕt=?ZJ\w3{|&h~SaVa|BXH($TQ;YtftpX@*KTOi3/Riz`$<95-h:Xn@*٘~JS;zk5F,`9t BS0}Lg+[kEp'ggu*=WϨ`eH9/^w-mupĕ:_Cc\s0ګBVvihN5Pð IH/IĮܻV` +j '#[R/ .WZBZ+bk:`;YV}u->Eu_ɾt nN'5d:aW TNVWw>~=gFMjRW +NL_eFܑ&GE(-w?`\*?ˍfx8n +O"a==k1h:ktuΛu}y8z +tV޷6>%`Ooe-j1:VEþpCX6Lȗ?"Z՛sI"w=͌KoLCC\ZڃDtf7`]u2hk +ԷtN{ePw])q3V2+, +@o,t]OŪ y/}G5? !FΆωg^խEje¯Զlx-eNy1jkobicb=iʌҲHU +  ch=Q3J xmr$܎gM*A %mtO9qU3ֵխRAdq)v^~.VASFO;ٳ~oN8qm;<Pɀmx&pqʝ:Z}y' WJX( @']νe7TF$(']l˘K +N671SS BVؕTfPYL; 'MKׇgJZsL7)f}eG'.;}M˼] z}{ ts1fWv >!zX;ղ!:[ֺ5߆K*ϯ3! Cq#\6x.e\5k U; pi; TV=4*aIY2~FU(p9C%jv'k[>| i#[OͿ;۟; Z?YO赚=̕{q=7l'<ِ|@dguyc֙NhfP@=v?h85,{1]ly#KM(28ūR*o a"벮?h"o$3!bDl|c]FOT6b[{2o]6"_PulO' +qrK+'#]O.F`}0ajAoHǏz|zC["#EHu׉7ߔޒثLax2@Q7^4V +ʃJzn= +ݮQS`hROo'g0uG#3 Sb]]J׶_H}yfZmmA׍uy|Z@Tk@ kb5=-j(5<э^2Ҁg*馹^yk^~A(·io+r$yl6׈+d*1p5²4{|Qx@qg^`CΌ1)Z~QTbxx'~{kQV +EET(A nʧ*BkGBSLA,[[6ee-@K_ҷ-0~;  $|&x\:PikAw#1utG'/#ұ-J!e}"N`LҖASM6< iܴ,#E(r>ܿd`зH,#E2>OG/-|Fޥɪ|E\oe} Tg?@rg7#|YU[ʀ4-Ґ  8a~ 䖬%oLyl:m_]&`T|ʰ;Pg:ex/by*~o!|/cՊ1!=B uk2ڊA; o£,rkU~`{4#AD o8l~Ř4[`Fp QK|HޥEB ZϣT2.B\[X#`($v$8_jemW'*ʍ*o32>%xc^۹;b']3^=JmDa}zZT7[A$__޺`'Mj? J,E{6t@E&MX=Y%X}k~,WcG`vi+PKWoq).N++Y·?ePmAzr==vY  DDDbScV"""RV""""""""""""""""""""%¢65H[QIX4f K0|.(T^+(}j@@EOveq߅F {=Nm+sOͶ厀SVR)_B(hv@ԬDDb"""""""""" }4>V2׮EM܎ɧ= +EWdhO2QFFQG?$]Xؚ;ւ[$3P u +VM!1YU a560jlk&^bv~"FrRA@R:vPƧ xR1)JĬDDDDDDDDDDDDDD =7eQUTcPUk]؏aGB-jeAoBq.dqgoX$7d`_C|%8ieV?6qfڽ6MrdmÐ;״u3e]ɕ^i2ީVEܝPj߇*44<1,b_uVO ?o0bH)a~#+#"hZ܋_L?gԳmtmEs/cz?Gweԛ V$ hy^vcZ+l "D@s5R(6t%r]O;_T_;}͋պ&@qTq=.'DDDDDDDDDDDDDDDDDDDDDDDJDDDDDDDDDDDDD@)#r5OIe, +{m{יpvL<.JDDDDDDDDDDHyjﶭk v=ʊXR7KZ/,_ q5Oj[SbNģu\4lekX=wlUՀroo$]x`96Fv=ұ)+5yfM]nOX12DDDJ]S'IYb;./-lCfLsD ,zqdctZn\0m[lOۿ}v<~V#&~〰|H9LuDF`^GڠW-L[61ߑG"5g~zrIWŜu{$[ޠ}oMo}}_ϫ0ةհYI}#7> a?1Ҫwc +',Wn9nԣR)י-tq)w`~K[1ba@3Yu\@ỶUMvˈ u#dYIdju0*SUK+U=XN0] w/bWX }A=>%ޫӍbl`Ǔ@Zw w߷~۞ @)(^ufZvr㭁w:0Ωn#<}ײFVvUWJ8-2c2lV**$XZM_2vSQZVdԧ5.~cro1Z`ǝwӿGJ]Oܰ]oĕV}bڎl;: G ̓qrQ*)f%O]%Sd"]J {2B5Ϳƺp}s`;8I8/ҲGZį"qʬ;v{1 m|lVSA:2%} )Vl>49/~t;n5U%N;=J=4f oəV$LF=A$X";q\Pt7g8ߦ+=ρ(:+SeVqnaNrIﱩs՘ZWEB6|O\SdJW(U y#O\ú-R`9r;krX \VGVWoʍXSeaq[2W_^:W`mQw?YkC? r:;o?zd⨌uchv/[0ވpACOQzyβ1l7T˵}Ė]"-]]]W_`u؈ M!Ƶ[Xh8ROrܳ6.WNl (-<'d:}omWrNzDigrى՝C)kf&/}7yXĪVj|m'`2Y~z^\Gm!Nc?пr^r +$h>ZO.[mnsOS+כmr|mJ455OPBު6-KHw~W`Xq][{;n{﹬m<{=t/WZc[hUuD`-_qq+}Uͬ~.WǎH33g.o,hG ++(h@[ի"TB(@/&=߿yslQcpc[7[LFKѫqYJ>#D~ٯ9Hj&\l.LʭxH v[wUJ)dHRu oYXWJO2ؐTL> ߂'DǶx!΁yd$D;2XxVg6RZ0[ +w穀|+d%6EJZJx GCνg0f9C`RA:xmY+?*B҃uܓ%|_GĪdzTuu($^_NTX`FThi6;nqƢ˯N.I'ǰL8VNKqE):P3SMvkBX,H׶ݦB=ee*LoJ$Mdo̕%m#-bb=^ۗ~&|5ԬQu0g>u$ᐿ!~eԽ}f܋lnĭΕ$k3=L]P*>Y }?AA<+9%#2:&=SeWuF+UFFTBPH4GGKOV@QEF)ZQolS .,V5Q]ڷNi#вXuZ]Lsrr?1ňV[突u_3}cpxjmLN,?}rҠ\ʂ)bY?A)TwX2kn*7YhWy2,i詑ճ9ddc~[<Gg1Fbw`7ݬnL`V ۍu;}ɖ>1E X,UGLZʅ&ކyW076ERdW*T<,e%Mly~řwd'z$n[}H|=jz߶nb*ȦNQcZ^v.pՋ+iBD,V(:d|!~vcUsc~[ VӅc_^$$ʣ*!ikeUpӒL3+aldǮxm0Av3UTӌ!eIYtA |5aGYͲQ='{O%:S@8غ>Mnꬺ +l4R`G Op(ahQAz׏ +;!ڍAA t@Ȅ{*{/Dn6Ag ˼]W]+-_7#U1ɷ]9Wq!k_?S$=OQLL#%Gywv }K"~d+J9Fxv(צ^#ֵƽ.DDDDDDDDDD@V:e6>Kҕ;(?י&Dr#~\jJkTP}iv"RV"%#QԬDe5+)e5)ԬjFέeF)6:n?(>_LT{ 2@:U]9mc$l铞Ej>?/g]@p%OG^ື]WT٥.WeڒAJ'#h紵:&_DjN/OQbK/PmDlwҲ]نJNzοo8tY?G};-9N (z)(v]ωjV"SR:V)_)3?$KY?̬L:5Y;ТvevKf,GǷBSZ{ ?s=JڬxnFV*TKw:WL̪)dEL,I}gqo7oV`fBʑFJO_s1e[{kd,K9 q@X}w:ͮߺ VC`::gDDDDDDDDDDD@{gbpz&/S BB=%_Nƪwutl7[QR- -xρ%ӁAgcZ,ROkhE +P}BJK+J >Idm.@k0!OTu}ɖs *캪w }$LψmcYkQy7}|˝KMȦmYVE#pF>DE(pa% sOJ,**.W~D~eȔ3zex,s`<oz2GKiikQY@MܡIL@޷/V^FH(u$ytJȝ;;cnSRnZe,B)vG.Sh`7Je*`6}NKܬ!A'#bVbz5XB%h(+/?VҮ%>+7~\H}c9n +i`dȉ#ccdU}K_-:ׁ;>λ@Uv#)bHfuLDDDDDDDDDDDDDDDDDDJjV"""""""""""kkWb~?\szOP?0J0}XC;O)#WkW~Oi^j a`]0SxpNkݾ`7nSd]r: w']8ŀ`͌Ws WO k]·L>&gI8|8[s5\+t;׼ʧ_uq!7@s)=̏nSkjɪҼ] V~czyO.̇pHM' ;)rjI) dNSLMe+*_=z|ͽvX;weS|Tgary*k)×n\woiOEӊΩu^EL1 (}箩3kQw/Ůͅ(,o}h3&~n XVq_E-|-u)OͰ{i@!כmJ۲*ĵº,lCf# ̐Mlv{HKcu]M l==3=c(!ڎeٸ{?5d9p'ȰB'|?8t|G!%ޮsxw\V@ee\e|ۉH}/|SʼnsfۋUv5d~h1ONfsƶg(IPIC'O|E:8aLncnXֲkà[kEl{TltCo$eXOYE,K}g϶*j*zT1NH'4fbKCmc{Y䢼N[;ext;=-yZZA|>a7u/q,QC1m,<ƻ%Y=!:mkbe5~c"ڛc|A=8+^Arٱzϲ;k.Uo9VX^L֬@!T w:$_INףTc.;fybOljl~z Z浶vo }X Pj箒5㳶Uo*٩Sp8!wRɱY4r<>Iv5˪gk{h9&EpMck :0^z}.Pw徒_A{VO"-kΟfw c-ɬ ;7'`~%b1t;=r)t^POq1uVIY"aM&W0fɶGbhXo߈gֽ9;C(}kX@>˝GWԚRvJ޴?v{Z=<y=Gܟy3$O % NMWy$ZԡPh4OTȪufZJJ!'`&MzbN`}d HXwZac+h\tuDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDֶ 0b6%@ +4%b""""""P JJX_1{E e޴44< Lg#rʠRHgי"""""""""""""""""""""""""""""""5.wR̸Qˢ}*vl5$?/ѱ([ם(C;p*{${.<}<5ߗ}/eZ~|5m;blV""""""""""""""""""""""""""""""""""""""""""""""""" 1=$/)m}=@AI|ahf~kX+blvs3=G FbO2B8Zj5voy7q)jܼ;)mO3+:_v]>>|{&`YɟǨT#/dٳ?PQ8:A*S>A720>*=X](X}(xe?:N>6S`U;l +:3%lʡht]y 'DDDeuL\sy:RT07oz [p(I!Mru0oIMs=_}oS9J]3V;+$v+ȨAB==,]irOH0Kkp~_uRǔDDufUBy$Z|+ʚdR}v"c=QQU!{܏yguZ ]H؃Q⧫EtMoAF`ptH̻2*ǡ Ym_`}g_GSɶ~x͜˱hl]oWpF b+r;we='LWOD-HZNK̮ݗ@~Z#eYXZ2-DCțuY#Zz=;/ʷ,[ O"VA~^҂7:a2OtOĵ𯕊l{|BDðf]?>Kwhc_i&""""""a߬fm m%G.J +}eĬDDDDD/ +%vp |{~zܕ@f+"Z55#0Q%:u|jAqB9:2 >aY&/Zi* 5mٕNkFd߂cTWaX>:d|EJqL'm7iQo]2jSiPPt⣎{ߟoY8/:k_kZ[b7&p5v;ͧFNL@c'#DZr7Erfcr ;?O?"Տ*SB8+ǧ[̿U;*·M p]^eܻKF/ŢlN]}C9OB;9\M=!_n7Eſ:|8Iִ +*n[䤟~wL}o gSM-vKJV_-h'/cYu¦Mle:~{@+Φ6s JͰ>b7vUbI=v ?ngK͝- mUVrͭoӼruJ@D]Gu;/狲.,Z'8-MhbYzr0;V?6‘{͖F2TYb֙Qs/>=TeR3o@ ם}ODktn=*Yz\n>׾1M[v9{YM2X֍n;$wf{O98̝mV3 (p LZفUx!He{荃*e;WW웙}&F`MkLe 2OPvLmncV\:$G뿨zVe@i`6onmejLW+V]-w,\J".#/>Wت :[G_q2]V3PCmy "垐HX ak\~F*{ hw<>ajĶ尽"동bד}52\g9D+vmut׻1'+ǧIm=iqmH܃"ð fFv_^lԭnc`+nmތNٮZ15ˉt uu7f*)qɰ bȳf׹:P̭[aK^Oò3w:]ɶҳqm[qy0b}6|H=Xrjm%xb -sgc:>}<XlTDՊlpl*H{~"8xVdQMyPھAPx7^:ckV7Lsg׹<ʝj`FY5x}UcSAl3$u򟗾;/sfzT措El`?3k](]x*{2pzZ^UgLv3AaHd`q'_H@eսAVkz)jZ־HbeݥlƳ'`dqҮ{=;]P:\TO m>z4bv@9*A: +41SOuaO|z(ߙOf)˯ʎYPݽea_ ctW˕y;Bkgan b;^kW!^8EObc%̟zv_O1q)+wJZQ{vwévQEo@ +Tlo'=Uѫñ " k*#8V}5MV3V`]~u|NjC]1zzmm`}7cY +Xmj;UO|=U7e^\%Bm@J[?)V5;KKWz6BZ̦7B۝mkqNλnzOa7?7}h@n%~UDv-eHT|5pɗ*՗f`{ W(@I + ${ȿS'f,W;;5J*nn^v-:a K}%q_]m +ְbJuܝz]]HW3h6﷞;lWzC%>¯yzuk%t JAe m#v +4 wqzjX32.@@lպ}#,A$tma_Z)ZH60[ʣ׹g-à֎y1:+ܙl۱\42 +>;Ps%~mcs\C,pmܒ51AoELsG'C2oPD>3.P'~EBg"&3+^SUŗUa;=zܡ__0V߱З$LOQ,px0N؎ǴK28vJuZ-Iq{,OWr7o4;+Lutٗؤ%  }ن҃HSWձƵV(vt:^+T#u0`@yo{Yr.VE)ehɃ#hk5s! ._Kj]r@ 3~]ޏM]ip FA~ X]B,5r׭+/̾0&S\o#Q`Vk;Id-Z RAK'Uq*\ +S Y2$lV-R +H%WCIlV 1$DDdc񬠗([֤L:p+P7Q6vd: Ƶe-yg!h$7J{}vfPϴ!d|L[լ7>;k߼442O6X*R@Iɘ Ʋʫ`z 475w蟤JD:zYdҊ~@Ab""""%z3+ˮ@ۑpzYЪ*? / F (NnL[+`# 2O hu%~m/HueɩYT`tH!4B9ZPVm~ô1Y}q2 E  + Hύx XsXsoZt~]7O۹Ub9 `ȵR䭙^MŸ.;d.eX&QuWm2!;w[wPRmmn}sz9v&jJIG\aCCROzK/hlP ~ccYচE"'%P]?wVA5 l*jL,?F }I=/YoR|2"[YYe ;v>G]J܍W ~m$z]޵P|ٶGnTlMfC>AU ׎Mwcu[>6MV~DR oY:M*jn±(x(A:LkZ󤏈2ҎXZʧ{#m1]u}C' 3YuP[k*Y[*ovPǻqȴWj{>AIJ/yU#/ OAQ]{92uW+j@!ErI FK=^Ο{E<et[G2n݆3]=j]HKbTm|LEW5 զ#;; rO0(5A1z}&5]ScG`i>V-CR߼:_yU߹[nKYͲ>FT~mܟ25[U# %E eoִ̞g\kz)c֘e\ C2]/'3UeX[8״ֳ02z&=lqY9{V.=Wإݗ'#Kf/uLlb;:dq;~H2[)ǭ6~HT\Z̍f + mhke!CvS\E7a螐!m+'ʞݼ徛ղz'O5Z z!WzQF 5y+[Z) +B|ĂG.Ƕ_Nc/I}ZƧ!~ Uϭ*1x>m7E?Iۗxq!yJe.&늑΀TUԙ3'Ǘe߶5-ƾ4Rkr! )}~c0Ut7~c:w*v68'f}>u[LNJ.򟼕^}c۲V::ax.~Oe1.mmLn3w>Dr:WLV]hIrĎk߹|t.屬)+6 ߙ^n7S֚5ced,ggQEwUcWXJ]荃~&3[Y33.Pj R&NާRͯ EȲ*@kIVӟV޽?bmvKnP euV󱂩:O"gff;U7?( +;xי}ި6TUG;yD?;f.GU)C*)v+|#C[Q^Ma@FUrI=ycap/! 㢤Ou,[pקo8֬e-ޱukk[+O⼕yc+Q]ɠ)jY]U[G);_ę=BrLSlwt\ǴjoVbvtJGlҼ8VB!Ǘm9niԢrOf/qmwK_ѺXfr;1 Vq]I:`ޥ=nƹd`kA.e[qɼb5+*ZrOY6dC +mm^;:?epr{HaOϿ;FKX.c*R8V@- ̬f3s]]C +ZB2Q};9Mwॿ9{ ~;ck+t, +Yej] r֏nfO/I*,wJg.)$wY9YX)`{b ;Ƚ[[^v6"襕i +vSZrA;߰1LzNOR뽐 +7lQƻIPYQ2G#?(6so^ewZ}=bm9; dw(|tKϰ2VƱm=ުn%{'ƿY:= 3ޕNJw;{ >'Yq_ =^Zވ x$пH\}arڶbhhN23#.jj⨬4O[l~#V1rj +HQ=,tޅOLȭ?`@ǹ+.+WlBzߙa˭ힾ˔g*Sg}L(q`ki҄7>P֢܈d yHٝ?=BZ6;?q#da[SZ9اVv$}yl5KsNz4A|3Wv%1f +(,UBRȺsy,ў+WOʹq۷<>;ulFUbF/¹t귩[mJYMϻ繙,7sf1E;,Gܒ7 +XȿR'#P6~R7W+VUzZAT#Dr;à?[46QPb6v6w]VO ,foMyTh};}m[zRi/zrG}J~VNE>P5ʡ~R t<zLc>5C/fVRX #fmvU[CJaH vC^Z֚r Sb:?'A{d5U˖zOM9hߛݤ^l^|Nl(`<<ɶ0匫ەZT_ʪ N߼z-M|U^ vǏ.tff^Ip8UUMQ--{Je6r;: L' t,].̅[e[_y=?;׷y\nn-ٗG͕UB)QQv{,c|*1qi[h% q&j1Ёhvpty}o[S.YεccɆεx[S5Zt6ݷ^e=6-٬T6˰-~cK~b\u\SMb  L%-E|]˶,{l\Ԯt,)( +oyfHEEJU6=j%F÷C/;v@@,T 2$u6t\k|Q!+ +r,CQ۶; 2rMaJ'4$ A6$܏lll\{ IEw1$ym:j5*'_PٍzK f;짤fdz袾+9 ۏ~Y05it߿yWkұҼjDrw:m7B=K'|T>QoQܬDۙgLDNKq[+ﷸhB64`#BV%5+6~u}:Vk۹%"2RޓUWVhoz{x TJfg\V>BUhphXvk}3R<$y}}A[blb:"ڃdԵ?&UA{ZG`|ޢb3:N/U!nf^^w&\J~cfI]vf'CDZ9h |Y#pшS_9pQuH}9 Ll31V'WV;]H*GFo:WFkA*/\!@m߷Գ2Z*O?lw.˗RlV~JH=˴ :ʶ,M$_ĽRދf]Jk(J \)=̙ w&V"Sr)6= +6N1)xlk~D[' G&db:Q+ ,?{gt?.Dncr/|R9rq l;ȏzg ++\vCmlod""""""""""""""""""" Z:=E޳܍rT#ؑnk:]Ġ+%_֭ lr**^֩t`VYX]_k$9kJ2"ĦnÝ/zc!=B˿&c?kzr7x~m|I=:z_,T1 `0GEnvGL럇b3^t ͘{g&>5Qx:gmmhwq1+ەRcK +$,KʵE[U%*9,;U_G]ٵywmƻܖfǤ>I( &c:?oid\VwXw'?ƶbՃe?;'@;cn 6N +g߰=|=)8sٙ6eUI8lilsZ}`|}'8m3u[;9{K޲ތQzdLK|\U.v7yVv~eީ}bh]bOw`#,Y91MbS}y- |:O$$~Q3(bR#`l-ec]OMjFj %݂N2Oc/EWwn.ཏc{}Bw^í%tkcRyKgT6UuWY\XM-Ys :݁sZE3qC<ٖ&.QW=aXu:Ҳ9l5W{cmC62ol4>PxtvYN5nb3lϏ1z/SV(z­뭀(0wG>˿Zɓ1T򢋫NOP?D>>״WO|5oըk2#a֦.Τs8[aH*\7}Cc.REh@GUE}NSZx2]z”CԇժpHjCQ+P\VƬ {LR}j:ECxzL _ýNz5Nn!NWs3?t&6WWJḩ܏ztޚiKYx֫ zZ{ 7,p#W-ūǎۘrmSbuFbޝnի$h~gV?7"[TY_S#eu!uS!BoRq^T#k{ǻ+QEaqB[`n+bzOՀ#﹚U +@vN-YVualG᭥ZS[o|߹2tf/( U%<7Ek 8vVağny/ +W(Ү};[dڗXk I~(#E6{Ox>Xh<(އ 1Y0z{dۍ~O_pe.*KZt*uINҌn +6J<|[z߆uԵjb?g-l WVV#]GM9ԥ̀bޘ vav2?[nnFʜ9&‘g!N_>i⌒i9oBSH<}ωLʠY[lZ}Xϑ7RH-jVZ1MnS͢G~}˿uÖ (:,򪏹$fW6fnC&׋ZRDP4.DF%XcցMٴg8cjTܜf?S%ϐF6)> \=E, #CtLE(ƾLY٬`trN5׍]_* :Rez% 5ŋ*oMXl*N.etlT*3#q>WhF҃5b`7G:OY:_0aܩx!t_Aaoܖ$44w?M~f31grɉ:MX?z/]ӿc䑾oDĺj3YY;ke!2t,R) ܀bs.t|&;MefG]߼=#QaεuG-(^e2rgbk\v/i{+cf[:|xYH;2GMˮY+ttR;+' """"""""""""""""""""Y郪Ւ!lw?MEݶ>O{ 0z+ ҝv؁x\7/uޛ)lqwB½.Gղx%udY,EWmwkz1IDkh{Z[Zݫ]Zup}wgJYv%H D` +TBIU}Y"و,FZ1_׫h){/w%ttAOlA$Lv-`@ AAb㽕ٕXjN6Oi~/W2.ē֤-m2]O#g< >?I_:[TeJgOX}Pڮ~e0 ?zQ^ܢVO@!|L ǺK/b=؏ IP-L*nV\}&}=w[?EU۾ B|Yڪ $ <}'lV$65~7*{LV7;/%qkqm}DDDH}?b_S֭<&DDV OuΨ fcz_^-jXY*YYy :#n[a-*(Ur2tDDDDXʫmԫi6tw+ ֱq? }^vbcsTfJnrB +:lmX%6RjhV_ "cz'Oi3r*^Gߙ<OZ#X*b{&bO)x$dڸ山/mzCY#z{ڗ؄2R<F""'uA :>Myh,L::=K^9ܡ`[ljAzh8# ߩ;WM4Y:p7{Xk`a(&RkW7RZ*͵$[bվǰ0G[-?BU|_Y2D͏#߈ݮp3؛\-s1,A_1Uy D|x7:.\~lMCwas~(T\ -r7_]궐}j/&|~&ӱ{1] vUe`SczutSI{ySaNMĎ{I?=O`bz m"+f L=:M7A5 =s:k7ba%DeYCq<0#kmult'&E_+,ZR,"=q-q>YgNп ȵd.P ;7lahEK( +GBw-EmR}<|v^.uקgct5쵸]c6$WըN8%͊b=$Nu?=:ŨXUՆ='csfWQocJ甴fp'lsGǟ?ziÿ u * ZK,3Ge>dg-MW[a.;6ُ5՛SEN[֭0FkL##2je )lyanE]ܖ؋yjn->:q#$O:e/EV%^^ڭw &;5S}YԴLyɦ ϒD2F=K5ψ  ICtObLTZǶ}W}mM6\Oȩ?7a>0F^*[M? +a[͞sR5+RwdoFk}?<ε-5=ʋ`bz~X &b>.-ø٘*[G$pIس^ݵwM eP5J@n=t>GifWzǨ kQPg~|KGnZR̊T|#q:#Ҳf9*8JH#_^ANiǨ_elI{.q#Sdv2Ί:tT*jسXǟ $'A_L #LiSּ|C)ZMie\⬬[`FIc"Wjt'25;6c"VAgޭn6?Rǥ,qS +E@&,kI9-6ޭz}*?T?/hA;3%v2+̽+oVC`ޘG%?^ȣPn3ڬ6hGgGC=OuVqU]y|A aJ|<̄Lt8ޭlkIU/N(S-Qf6\!`)uVOB;[;q_$}7>$(rkfڃ*_(}?mHų\[pL{M`Y|7};K=GSuLZ"+ryȩ +÷bli?;u>~V-zjzؔp%{RGH뇪ǿ"HzJnogfxݓY鹵 Y'۰~`>+W*w kklUʺ=HJqk%6 + w8 ]oUPؙ0 OV ?d׭pH˺pI_c^uxdݖu+&85b#|b8ؔUemkֽ ݼezGS^ +6X>̬Uwn/~չ +1;oK/2̺ǯ"X w D}=[įܕiZ}qbvA#{a[5WO/KYAK v;h!),KB +kVb~Gmv:ֻL^88W"#c[y|d5'FnӖ3,Swm9XgL8}(R @>㷙\ߊǭ]ہF +FαjӂcucYS wk#)ʽkC~%.;lHteT+s%]zHl +maC1ʷA>Y3C^cSZV֩ebߗn ω> NcoV%K*Cw;G#r+l_&'gu~"">c%{DgQu+L}/ŲjKr-VRҀAvO=w\;Ī侇#n*tI29?)PWeZU*U?0=L{t|U0KCꪒHŊsdEj& [NmM_u|.Ե&ԧh }~fScjhH13s]I{tLV+>B]Aŏ ux,߇_S{++]1:'~/eKԫw YHky_:V~# _R9/ξ8孃jEᮣqlג/f*mI $I]77`筕WȒlrO,zgq9ORyoƶOm}$~oB1涵Ԭ1 |l˝cl\&'j&gcݍBE3{mWza0G[a܀نqYW}X v^/PDZMRiap,;o?7]Eo-Wj+rI +X{27Ö7Q:ʱ5 [k%Phy։߼_NzQ,G%ɫCR}㶦ԩ#*єw] :F]MA}+QN^o ù zs+M-+iP@0qqsvt a@M70&oTij/3^ުbT(%̏/Rj:b^ VU (ؒs:gPʣԠPVOp91vu:7k,TA:5,cgE3kwO.hFDtq +""U־BC0'F7:\\ۊ=JʣJwx>Ƨ1q]H+`:où&Y^~~T^-|gN7Jñj %UߴN ˎ[既tiȰ+)i*zr xlrZ򑿔=t+_Ue6=*k]E,@,I?NEt:;P͕u v`<{GHmϞmx2[qzH{*Kb(;mIW'̬KڕU]K8]\~wYаj8ώS,P\kd#ƻD ft*_=^VZm1 O~#s2ڜwN2߭vu:UI-y kt,}]qzܪܪ=}:}T'W8fV ;{=E+bږg^)Y#;VNUcLmAדK= m-YA<= ឡp͔;etAit~j߄y:(*4x+sZgUw/[rZʖ>o +ߐ2|=vSc-5Ȩ-ٜOkk6FK,"ikslR_ gu*1ErKvvVPXUއZrpz wJu)RX|Gw%Pva&t, //{:|x)>_Oԗ:鲥FwRȐDֻ7rs~Ū̡Q@4T􌎕~[%N6l% +X@ v[;nsqeWUcՊlUmKXߺ#!#.`)-X΂-]>}m[! v;d}3+&EK%GsYG +![`;v,ElKk-B设Nu+'=}NO: Trp֜Z>Oк-ؽ>[ }6b +%-KWtL̼$閺zQOC!zn]}U@sڹpOˠ;u?g-jC]euge k;A%I?iZX`0RJ$0=wl[R.B]>$~vfZt+Z#5`H1Y]6^Jb[MK6RϏ_I9WKM[ B+B tw~d`]S +{F̟emQ̸=܅cZTILZUILn-%Kme|iH AV:#c`5=pqž\9y@ݹ̾5Eu.VN;XU+TVH<>Q~$ЙF;.r7)>߉PoP%riխW_R| WZ]m"㪙鎶cŏ}_^=N>NAcY{>Z;]O_Ռ+ik +(1cky]G_]m死-}MrcyziU^IX/bbj6 L{ǥeǍ{^C`[st&G )+kjbbcفRF&^-#[w` }d] +ً&/FàG`{}24[:Mjz߆e90^+wO=?⊺*Տ{)sx1 {}ĵzO!}TXCm@u9+P拠I OZ qiKVV4u_5%#ng#[}QÌl|{n\yv~T#nvط70 w:@O (Flu\jlUqkyn|^ G4Ư5sO'7bu!`̌qPouP~ml~7BINECdz}J3F];hj68+!]p8 9t +~XT#܀$ܛV )_D :TG#$1(U@N,U^\H;kd#5^ D5؃iz5aPUH}A^Ǹ>|B%SeTPWs +.bېGZ]XR^Lyr:~ҙykˎ:. dmL6My%HHAa:ZbWE/-5QulgNBZ$ܙL䋎ζueƆk_Yw%ѫ,PHuމRFǞ@o#;721UK)>`Om>?0]ylȲ],SC܉ %r~'K)cUCP MtHd*uRJ 8Zԫ |=XlbMkrhђ:S-Jvogs)S)# ) =g\A;>$tխX{>RY]y-ƫ/HJkfR( ۾Qu7޴"*/*bHR;rzUM\D+9f  Ub=vMQsr{zelʲqUHwZņqĒ6ZnOO8Yb}*4G>H,WcawW+||\{+οrG]4[sWZ= l>%_ +V1T=zW k{Íf59{=:ӲDWogwc~ (%]&S>W ܃DQKc5|,=/L5M[O +~'W5o jOv&&?CA״`:WY/c@OMG7} +|zweU+7ɂ}~%]rB +v#`19S>[@AZݜ#2~hoڕ>f@Qu-[N-Tq[lð Kwǃ 5#{S ձzN6s~[ֽ3zڛP)jܩn-RA]6'DD@ f)BckdWj} $P?Uf{w6z@I1@hmiՁeX4X7~`Gp&^-u2鮺* +[6ݷYۺG0qo@4q!MV +_O4z WZur1:k-ģQؔKU0ƠQu"n4+<'oy\uQ.M jU]{V dPϖ9Z)]h¶;?yUnM -4 v=Wrn8~}oh|jj?7oy#:Um +Zdc 4UhygY㭔 B8JA.)\[qm$X>$fb-^z.[XY:~E ҃ܒ{ vm^vOgi_=/U1u)Qj^A2r^f:T9|t(%IL}Rܥ}b\kbN"w}}GC65v5خթMrk[~'f=uԿK=6|CyГcp XqlMb]lx7E\^ %l ;_neM&Bff[\R #`i4Ƨ#mml +)\yog:cyq?[,ܡ -ɇ3fUd!p>Z,{}{L=YuEy|y&x|NaZ}XVb5`wHt\,l;kxn"C{>gM%EcؔE`䬻۶۬mN5e-~㑳}Ǟ݄}guOFm*V9{w+Яbhsc(΀=箥u},SnvV[+1Wx{y}"̖Ⱦ.0X}+j~\ 7! adz[uw^r^ +؃t65U(b>F7S:itJ:>^ާ$r(&gW ^Ǹ%8F:Kn6X/z"9[@[=6yhUz3_e<ҷN^&fatSR֊ׂ8&0]fr eyy@ޣkb .M}'Ku 0?H98zS'McTGGr@ߗM j}df v] yu}w |/{oodZ!l+@9(돃_6LoMyW׊X}5awo-'µcķ6n$;ܻUdt=;G?{7zA6&-XQX;uxP rXl}'' kEuR7p~_~@׉8=;e_V-bϪ݋ȱ^ oeEl[Q+yXkyZ-vnecҧz +f x"yb~X9BQTA{n_6v]K^kb?.}lN@ǵjd][=O}:u5_eVU9pji[ec;-ɺoSn=]eK]A˸kZֶ&>_O̻"LjJBkujk[U[銸Zq[NPZߴӲL,e#*f6[b؅iw@}75WSƠd]Ul ia ~9wbc\Vw_=L',\UoZlS}CvL%n垝h'>+U] +RDGMs^ƣ/2u~++i+ fƏb,б-\k-58PioUדLs1zi?3UJyO'6ǴVa3uD'~N~fS2<+ !`t}KBػ6Գvuٔ/ Vr`|mP JnuQꮼcJ+Kf*{4}gb" ))1*=Ym\.T$}+ +5.oܒI;$ܒ{eYy x|y_KSc0hww-z2r! @wFJč5mx`c~HԱf VXF%A,)wNsD#D'o0okiUD<;=DDjzWdltGV?GQP30Ğ缙<=++ܕ~f s<~*D'oM]He;am5ˏmcme@}vvLu|dR_|Xn)}q wnLr.RΨ(I1zU@ފv#6-nf qaZ@f qۿRFwUYȻ"@x'C2LT_k]?qez+ƴ FM1zn Zhwwj6IIĵ`f*ܕr_ wdS:ud|՞gyꙣ_}o_F qIvXtYQ_[M7굶Q}5&Lg_jf:PxA!&e5ܟW_р#Œ k*V'!0:A\nNUH*Qa~=Sg[OzfFc:)=̊HZ27DZn lx2.oR +BV@[Cllvj[9E@ΤPƏ0oKÂ|Ԧ/[ʰS󥌬»rU:%_JPζ)]oJqJ/_^PYk˰w$ +?UoƜki߷˴{0,E + yJ.uS*OHK]=s+rԁ> _]ymv-H A`eV+*6˰%QG' y ad,QʾQbbTlhF=5`÷%?0;[dص\ѐ8T@<~w~&թ_M߶}[c)]֊1n rF(Ф_m߾iы/x +t{^2,rƵF޸h~Fq53\3qkוGq]\Oomʌ^X`*ly# ў:-5OM,53hZ}̌?=7xWtq]f^%W7-%ð[ʎq.e8`uk}8*UޏV`K&5 gu0vTZ +@;I\5eu wd|N5ɘ'"^':ގoVyVweKz< +p#qb C,X8VS |@0ʬ^븒>~lUC8Dk +)Ae2:=;>@FHcKɯ2䎡pF0UNF5<*Uw߁2d% 2=kλe#])g˜USZQuM*FQv<ct̕b֔6=c9r0bX:DYX禭7--T'Rqf6[dR^eX5-m(I$IxTf3o@Ђj{rH;+qlw\:+oy{.fÅvBAޙN~1XhAcRPAA=ىsX% 6Chq:'{9>Uk^ָ(iqk1vW[6uf.ªp](0a^Gy/ku[rв2_E6 u @Y$ &oNGUkʋTώCc{]>Ε .ZI`{lfs5*Xq ٶ<{Hc{Yy<>}~j\nWM5iwɫ= j?y:Kֺ-ᖺ)iVMT* $4=7줽@,+-﷏z>Fz$,JkJ`6 @5e[kjSR| 6Ə~tnE-kdPRHɤl /#cb_2ȲN[X=;t|hon\ixLULkg%E#j {hZ}L^j^ِ/>AHçb[[!>P +T}cFrU^E9 e-W{y^xH+}Nߧ2w`0{y}"0s[/FKج2-}s3#U1lk`{H]Y2n%m<ϋ& 1aJvr4 @?R ~V+eą`HRn&@y]^E|S##SjW Bo ~qC6%YKX% Sa5> zk~vũjòc`إѷav_0 n5Ҳu.8!2j-#GDw1߇?PnH {KUS-²,=FZ=,+Szu UN>8u|6u3պo[Nw3Ca5;Tg?p8ב-p8}FXcTA݊?{w]ðg5 z}eKXxP5y: eVɬT崹^b>W6uTdn TցĠUg]VԥHc@L+N32-+Z+PJ +`{l=LJ몦n(lb{{׷뫎3ǻ'M`]P&,BŁ*FFEoʧ7; nUֺ bXU0><Nӏqjof(X  ho'Q^yro{d"""Y:'@ };b  Ԧg T$xC13/L&mr,8h &F"[Q1$i +RFϝO'2DDDDDDLW[}@(E~N#8r?(<]{^RZٷ{"/FYݝSSKSV ,H]7t\2Υ nb+45S~`~m+77[M"V $#ʯՖ{j:Ǫ9=9Ve"p +.n+v]oL=6 + F,'Gƪ񐩧4H] !{x$ 6Xï37ű{)ڞtg^NԺ.I=c Iד%DD@FMxlke~ù4uLlqX+0p߸xٍƫUtu]8oUWX7'MԱե@7c ,ځ@*G>[$>0Jg^J=:]<"<v/eu|L-zօ (@~oRǤ6km]ɯ2 V`^MC-6Įyg+f5MCcfh*{.=}'Nf>O;l3g[^oƸ  %W]~Iw.jk`ù wI;thSH7N1PBm gmqO7,z-B~C[ #Kȯ* 6Y>ҙX2-pA|-ش3-@bwI k@2^Fةo֨na{DG}%Yo E7~b y;=Eo +s1R崠Ă}wWut5,I 8ηXSmXze r;|wvDB@]6$mG!dw{>N[jn[9n3NeBY;&Y"Ci9Wz 0g %kȩ}u&g;z0&>8B6F:t;;WkG1re}rn{mtF Tr +qJEIמbq%}FeO\OQp{k̻_QǺKZdH}G0Ofz3ׁzyv*"7r3 #?F]TirT +Ķ }~#Y]j!wdoʍfWc, ø*~Fķְ4Uhgo^tHkLq>}X#m;YdJ,fRb BDx=1ԘYs5ԎUXKnfc3,!Е 5vYqŀr:xXwRԌ~f +l(ʵ +A.Bēx'R5K(9`LooEeev#`#ujrIq wǨkM[?^;}.I,Vr=>T?RIL>.y=- OrrV{ Ezu%7 3Lw`Q}Y}J[EK/k#]ևE{,' }UI2M+=rYa53ة* m@M~]kj'|w+13躻9b>!{(_~[ͧT^9){}l"jճ?o] x:0^M4懷(5V ́6rYu~=gUl>Q$u,NOO,ﱮz:Eef]CFyu,NU*c+xgCE5מk%:.OQR7<44+.]oLw];2r9檻tP*+@뿴uXtA 'AݐHyLOAõzJ_J T"9X_.FdN|G:325+XRooz;:~u^%#yU};؎f3Ե1NH4HAց>c:]JX/d(}ez-zVٱu=dowNDRط$`u_ZV`G2_fp<ȹwtނQrc?6lzfb+^ +g:R]F&B"z)7mhoys. [aR³Zlޥ_8;o_ilw;5&RY7M*zGeuiu$l~2% }̦Lޕ,Fr{q#krĖ,;Am/ťzzXE!q6@V7sahɧ +J1Idcc,*eN ڥcrﯬu\_ZY(^ 2K555%UjP +O?~+l雖,}7r_q6{nJTI:$޽_gQJUj7"uQw~Ė`L[lSejCo.d^_;&[]Y*2Pհ~'D{:쇲[+k,JXT}[RKeՓ ,C.'@Ef(75+wnķ/\o"&4G9lv6/mKn!F 5#cp |PFWJbNwE ' wP.eVk?>WbΧϦyOY@cj\V>jJЦUFcS[>)0+*ӱJTbm׷g?_DzV%4ڷz;^3C=C+܎<ɉ +@$h~RGf?'vM5zUKc 7.*; +O_OVKkc4̄%lQ}~+J +PP bOnfG*1:v#U*W Ěn5ujv`NR{w _IH}/U;SFVV Fy/2t-fBv$~"Nڟ:c:ŸE8֞#]:םK?eܖ6)ю+r۱%۰a7tJE\B(]x>V a.1܌lx)0rlU%J,gX=`T#_P)eKV2Dy 61hK'Ay/?Oi⋕"R_2>T3 D,Al? +E +,/ˡ=y}g9 퇞W-kN,PAlf^y]|A;!1xYo\ԫ*6 ߑ`@BmT~yz֖ںDv#c.DDDDDDDDDDXҀ BV*}B5YI*Dgg@ qW3VJ`M#3:ȶEY+"RuDk)0 +F+P4w+^eHGccz?Yxe F AP|* ކ7yP#@Fj6gEo nz]U *ByZ *o΀g7G߰VQ8G#\t5kSԋ(޴mԷ.#z*/m@J:-AؕЍ iD,T uD+1ݍvměIkR۷q1.<~!w>5a/eYW0N¡̋򲰰𬱉k̫65kZ.¶iA[1뷎bA+g{&E?=?+[=o'&=hǤ,N`Oa~ߥt\G!+BGBMn#dh 鿤Ҩ̶,QX[4$_C݇]jԹ죇;28D>U5#`ِœ&R45cS{ >t~I3ʢ~PQIz׏o FEo >G=k`{ ;xEi@:XF-j( kC_+}xJ*ހ$ w>DDDDDDDDDD-Q0H&MV*O0&],,e(J V:GVX%؉mW$ @ =3aX0;ɪuS,yÆ}>DDD-V%A#}ǿU\ߍixWz}}u=DOS縈YĀrO`%Ux'Rw|(lh>f)N+*+vf7eֽ:ۑꐺu,˟;>kKWBԄCw|MݍKYTPp~L۹nwM?.T5uV [ "u׆YǯW/ݟ|/pYcDС67̅+]1;=#`RA:#TϷpZJΕ)߹>48vt_.-x;X+oؒ/=1)YUT@]{<]iY)b+-ĸ]h-CHW|E~$lҜ6n>(b̄Xvuvs6v&صet쮱*cCX-rC@&/lSxvRw]r{w#_y8aVE7RW :jƳz +wq$8Tcgc!yHhblk0؀U:6 G[\RJ]M$lv=Xx>]/oiȸ%vskqEM˓N6^;cDube _~2?ūcߌ] D]~_וf^>-]>(Skzybt-Uc}]{S[NFU_ +[1?̱UUMV[m.vf7i'|::OQɣu/jOT -3^58*eeGqܷԾ4ؙQȫbx +$*Lp/Ć $Gw(z7bPr>[ cnLOkm9C) /F[#b_PlmxḎ_F58NKUc&ș|W@5h u+rzn'XꦺLll|wĮ+Uz#{e +OQz.-,=Z{?핗^ rRՀU[@l0.bܬ6JNڑűxh!=0/ښʶU*X}?x쑣7ĝc%-JWj28:#z񹜿R^ѭN@.A@I+\ÒKbp.LH~ղtCRN'RɶF:3+uؐ; JH{{ ]`d=(9EТqn]C[߈|b'#ŘaV_*eNYdajXJQC^m7G{.* :7I%ʷ"PlI|DDDDDDDD^CV]*{H#Nbގ~ +F{BFBJ}lqÊ Ȏw#|_ӳ^ccr\\0ڀNDhYУ RA 6M_~zfN>?:,wsVh#ƤϋzfkqrRV:W d^2%Զ=xd,(Fm:3̮1ʹ[M_#/$!~ힺ?F=VU)V B"mM{ 4 gVIJF#JGȡ +8rX@@6lC'] +M=dJA7dNҺD³>AN.']57%tNzrl`ke ݁ۛE{ rx߼ uΏO^»텱u02?; WZ +Md:ʷd  tΫ}HX4ֶs5'ۿi|1gC8cYQʯ50fz#^{⎅Ӱ11qjj@@\'k̕znnW^17Xר켶x?ΑkYn~mrmY[Rw؃RkPܶYYdt+Tmv3N <Rͣ%TSEְz_VtK۝`B˾܋mVE2НFͣ~*R>d&-'sIkWyU`?JwrA]'u'BufFMv}-$ {6}^N~ 'kܿѺvu=z~]~kvYǚOi N6}q+t6lvG3/Y˯5XStAګ6_df&-"wMm`ܶ7\iskTJGWw#>9u+2dAUn#2~bHC f:I8j5w)SM\|*Jʰ:㡠IczGKbۊۭdQem_zk}|?o[Պ޲ez< _KuKcׇkS֖}{/p.l^ZK ӷ +L +Xr>;lFk{ĦLvԺ-XT;=jD_ 7Hl%%yJ]X9jWΘ?N72Γe8K9O:q]BRwY=_݇Q{.ࣺ9,XݵWRv윞Ԇ;7(l ߺ:މ[/>7L]uL9jfgn*8Bhū_"s=k&M]3֪_qN ~bMvT>[+:yOé^.=*R+U^g e4v>|Oic^Կ[ q-<mIkť]X;B~_W@db+*6ҳ@g#:$w=IlJDJL^_7:ȶL3(jV""""""""""""""""Xç>WFead賆㍞/ʻT JDumH#:z@ 7cg[bi]$ 1zF6%zk٬} :؈׳_ ڭR7)z7ct,zю֣N1S=u*sړa X4mv>x#n.nWN bޫ`u:BHO =-Yp%`67 s\}ʫf@u!TYv #cԟtDXJ=j2[޾wN^-lͻkQ[K@Njg.u|{-NZ9w@OŹUЂpw"guj\U/N$voc~!t<~HhwFRTMw؂^}enF*csJٸ~@ynQWp+ =l{qrNgĸtйYS[hw[ZqYߊpqkl6"%T#v-hf?Qb,l|EvyOT~.e)ܔ0zfXn;Hio+ +1+ը׭9d6BDgXZ5Og'c'.8فgr u*Gm)g]y^ëلR)[vbWDž!/SGMbۍElޘ^d'D%i;sUҩ\X ĎDuy/RcbDBΨ|3޼yI5ԗT2/QkRC%^^|;=eu<,e̶)bmj8}r8!IJ7[wPJV)ElGr<{IbXĒIII;wQ(Qrw:ނGFɮޫPڣk+rl +݆|M)U,TUj)'}:ܥSc)Q-h_Q!b|t۪5! Tsnv؞ {qVWEz(u@5*r=X2 ȑ́z5y5%UѶݏPH&unrcXբ1~>Bhcul-ZXZ,RG#~f1u@`>WdoL& |CSUҵQI@ė}dqͭ,PhA@"dmPA;&?+b\԰YT 2sǾ~ J*~I +t$xjo!%K7.5߷_чwz\ +0vB*6tOժf@,M`kd؈K5X^]1oo-R ;2*[%MA7A>7Tz赫Ln6!ֶf-Ht6v)9k%5bQQ>ٞ?b5({McuL %̏Qe &KYoJz* _ e A1=KcEWΫKEZY$vN/M/+,d~(MumSXRP ¿5h6~T@@vkS.=PšqҤ3ِ ;OX au%*x%D<ժZ\j +ءt \oMvom6-\D݁ъr x2Wtݛa$3Z,B0W@IȴWcߎEmˊZv]0mZ(A'?eՕzWMJJ 7!UylI:d;hu+GP@MlUA=v'={G灼U }zzT#UQ'ޚ`G05VV[.~zrW#L)=C U]lDdJPku?GO jQwos]>śxUnk5|_0c<ۊa+ 6-@~m=Ɏ2zUͲ'B`f_ˠw}&4qZq'$a͋il(rALdu[k!v25˗A]Uِ:R ++ 3s,@QZ2=N;,wNFȶOVBiuJrשbmXEN'c:5+YWIavɭ +eD|sR_V+^lhoV-ebYa e_Dh {-$Fpk} ȲV@}mz#lm閿UeQ];dY,<Ɗ寷i/Nl_w.;Q[]v=ۓcQ6;HcUw4RGK9]f̄lf*~Qv. ?R(ޙac1؉k'*m(KLo@jB?YkbL{ּ[#_@e`mwFL\TDԻrb91nog,M"RW1-gPN]ܙ>Z|9V,F'ef] n :$]_* +rkP-/̭֛{;=6^VR*E!)"cVbL<%WTT;t ~eu!J]X `5v kPbYNK]Xu=j(GBkwk{qOMɦn[),د\Gb?Iwjm mXʏ?MakƏ'K_Vec6[Y[@@qNFK:^):VH.leʶG"h$f3c8]?7"C0BSf,{;߼FU+*n_^C##!H @uWuz+#zm6 btwVoU[&ԡp) w$̦X[zM1 %sb}yM{0zb܌vbj 4k;=kt\K}X&%gS܈֌|?gJض&V#>L_^FY+X--nQOcӷfNV/Piɤ% LU6X/pmǯ]E[mFʺ&ko+cc:eeC=<}zۨuqUxNY m(_'؈ŵ-ոڲAA"XدBRπ1Qw:}Dܝk,}k1 I)'R: gзVlaԸPw=e6Xj[av%ܬD圜qlvmv/ćcW`rTģliʟq,t\ȸbQ~Pb :'@J""""""""""""YL^A<\j쮵[X;޽[gj[ё*(r\+PZo:ltmfΪeU}}$qd<\V }&V"[>SDDDDDDDDDO% E8 Ԩj\ R +2!ݐ''Z_''S,vv2V""""""\c\ehLA,ȝ9rmpN?̻N޲ˢw2u<|ZC$Ǒ-ZK f,:|!mh7ak֏Q8N#`dv$l+[jpjveɩ|U)^&Ugn=1_'̭_ t|[+ť*B#`J`5GH9XGj '@?\꘹LT^Aw#}i*RcpjV̵ň|@_C $cL|E9ed%w@8*N&YX_߿ yl](myX߲x~mfΣP eywP7w߉޳BrnIa˧>x.=Ro;r%ngUb ^ę毈zuޟ ϩa;qا[ 2o|;oꣿVλRV/$]࠶=]һ,ȭVbЊ:&RXT6L $rc?Sר{y0^̴L?ůe=+.zު,Y HGwSKz?Il̻ԮzsFn *tckiP@aM}6!}gU]j.\k{UPI-P2lE^drTo^ce5==j|οMiְPlՃ@X}7&;c~PέOpPW( ߆Lwn1+$\ qDVsZ2Wk;?+ش)6 8ye\`KN'"@\wo̒l?-jw[mUXmQdkdIձ^X\xđrqUfL-ÞǞ}=,_19^f Ź*YֵgrǷ(^ߊ[/] 2rW~* Q0ڼEۊvy]PS\\m|;%Xˏjz\ys8ǟHA\ XUJވ 9k~^V0˨]wF(0&~VnOe^]k" :3xcҕu mtGvU6LJ-5'usclE ,HߴGYɰU],cŊ`F^&ya{qSݼs .450` |!}q w{1YjJL4o=Kul[Z]ԲX loRu$4tH Z$h&y\,ýТa`~f,Qz)׬i~,XoԐ%΅fgOĺӷcm'^C^_V>e&1S~Ar5]s|CX4>;_ml,˹>Mԧ& A$̖Uddeʃ "ct; /eU-u'\}ā~%[R0܊m{̥5djupxeT]ޫFNUUUT 4*݉>b},G)Jb2UÖCTWR^/ۆqωrP1t.H{~+Ͳ21*}|n,CZ~fTucqEm װ\)H7[̸Umy׾" 3tJ X!gm:s_WLO-u0]xo&Jɮψ0[cYcڲa)#멌鸴'O~2,Wn[( +.&؆z wc/&,-kc`=R22-חHłĮ[ֈ=Ҏ,PUae~Pƹ@IKnmҽG;Zif@ʣ+N\ Xr5!#WLdz"Er{ gk9sV]?0>[dh~FbP]_ku Uaʲu݋g7˺Ѣ8E;z-]vU٫$/|T_;QI-L՗5ٔ  Kh`O2'5KƮH^͙ۈࠑy=UβkwÏ>}zBlzYR!B$~3n9b[ќn%5}ˆ۴dWm=njjMV.u`7.NVCz`m3٠ ŹGy[ͅttY^e`0$oz;~ jH2MՑ{q :76 Շ +u(݉^#đ0\fǵ{:P=Jt^&v +7v=ik:~CQ'Dδ6{ ҝ'] KZ0!^@>:zՏ&(,{T}9kGR u\w 5wUC)#D6>B31 /*V6* +`wDcdT2cffnJl q12RѮ]IWЖ7cF-, ]\n1@&5e)Ӑj3:Z'K>]GSoNȴ]CUʅ [=cQ-*Ve&ߟk;}̕Ymn;s&ou4jbuwfFczWx˶Y m9g+եUt'2 lx=̷/D9URT-, +|+l}GLmz}+r`A"a1dz^ME=Y*BSJG}~31:nNWk{JXtPGRda6p&zŰSEŶmAמ{̎ll@l.n |g/9eQWIc +8 1&Vb)uf$ff~oSُemb/QEqKK+ jȊsnPj:/v/}2-#wּw,=*@r]$ |,d3XR33/-m8T-m {u:c ɒlO&y.]\kYe]$KZqjk/0G;>^V%,St{m#Jurʶm-Gi&>bafE=L*%vRȤ2Q(~~lDD nVZɠeT+JLt}AZ~u nvrZ(jPjV6p;/~ϟO :9{rn?T; _ԪQZjf?;0m Ǿ/c+ܙW]c!UsSJ(,NΦK&kWxap gܚ0ZÑYXZ}}$؉ /oJφ^147qT;ac` LDJhG=JjIeT f:>u:+49ZК\’`J̮6*bS]>TEEeJhJĦjVPa7VS7oVSC{ԬJjVSB4<8CXJq޻}0Y 7)Ԭyq+}b}f[5‚d]$f'vhFqޣGN5 +zl塽yy%5+1WR!EfilP8&KCG5ozDDjQȀ ׎DDص}IЕe f7e.߽#Fʟ{̔0[%E!b}p7sdQc9muԏQprH0^Or֥}gG3'e$}C22kRmܑ ܇;(u5 !-}ozʫe_-,ʽܼoG#a,'" ]Tx:2|M_޷s12]]0@Xնt~e!YTdbanJVT66B*Ǒ:`w z]G'"ҦƉ`Lt ^ns2%F ӮLưuÝTA߉ +Ⳓx%¸ls Y;3%USym3;F>{<=e kzK4J% k3sa9܉4T0׳z"z`6u,'^>^z19VRºY۴ۥ1׹S%wN6s[ +c{ wyIvzkZP& Cx[@E@ +;?]_Cʨu\,+((E/I Y?A7r{o$eUkPV-JAf)q fkGc^jfj[ob +؍;ɚ?TZk:mvOs6ğTjxoc?܆^*A6L6E\݉ ~Jjm}۸frk ?P f6ŊlT ɱ)^tuAwG?7>+N5yuVtaV}ċGCj޼zի01UV.߈۫?PZiQ^ebPޟnEՁmcjFmsM} Do3%%rr7T]SC ;fN6Iߓ7"tnr*K;"xӏUUWU?D(SZR|5I':Ym(̟Ot3`IBdҖ;0.=u +8/ax aa?F=u*?7&J}]bcT0@;$]tUܪQ L{ڲY6}rf]fR"""""""""""""""""""""""""""""""""""fRaSe*)csz_J˙mh^Uc +ewp~]Go6<|naY=+#3Ҭ]IƳ;)jUD'Sɿۚn݇}IrebPJdk56 8;ēYIn~eص# {1lThUױe1kQY&BMgP㛕_k ]A"I9\FJ\>_=/nwFlQ H]klIfER紸A⼛+V97Ga۶;>ߘjxE+Oj-r]|]JMĦ猇jvD.X 7=hμX%v cΧYg3. +^ 2eRPI?a8׮UIj~WEelK1_ug-bPb:?Y;]Ψm"°lo@S2/e@䢣`B5$^%E8kǸJԀNOO%gC`#`cۑz^yέ+A O#eΡn-YM&U֬m ~YA#DORA@45G$*=o'n7+)kJYspz$nV"""Bpo "tE÷cLHvF23<=zq_cf {LOs=K.EjA?It= ²ʙ//e#؍}]!qL뱞bǸW֧^Ա019udL)[-ߴU!^hQƆ>˾_|jufZ,Jj qzaO1; wse:vC,;oE[e6e6-nVHABu@bjkz&2Ρt κ^𽙷)ғtL|ԳkLuo~}neF[KS`v'jD0tލYt\B\mQn +yS,bc|dSyjCI-ԏn{ɰ ,O/2hLf5_quEŮ]]cryod9Ox~ *?5֕crYN<VMXI=].g Yr[r|n:duLXh[8T4}jr=r1Zm?3ݷ~NĿ##xb )w {k͓Uo0ŊRG܊Yu9V ߛsdV.K4~;SהR߈5Bh;}đddulZno:]IT bAӕmk|ڒFU$'~mrf`wh1K.m7I|;2/Oc#?![r2';*k'c;#/쩲ˋ]}}kH>@=t_'R­]XΈIn&f$sFl|ԜV2/X26b&캱KF ']oc`ԽkXr[1%܏Ob?m#e HW#RGKeUQ7R[XkΠ⤬.dxvv|O5Wr_># Yo.7Vh%,z΂Ԃ%sSQȢp[ BrqxxY{Hŝiv:Gm|c(r.4w6m+&ϕz$cP-wgťY9$v]M8xVϩܶK){ νح(FoR:15_m&lq=oA9-VVJ vݷ=Vn'E̗G oyWvṁø6+ݓpnaq`BW}2J9 ޷#I7(RY{ۿi{jOSUn~=w#K6@q#'7Q:i|B}?]ű{FS5}}:Jfّs=1C~uˇ.`{7H+rp% 3Z9k +TֶNZW`fcԦOuFgqoRhށe|t |=BК,`ޘ+*H޷F}#Do>eV7QPÙƀ;-agnh)U ə_NQbl?nSv;z+b0.+^f3:l,vL+Kҁܝ ls[o_q%"Xq̧E}ԃfE+ZֻҀcNCu[b7I vGRd+dX@Qg:_Ncr?}i|aњUb9Cv{izQPv b;vcYSHtFeeƵ+`U LV]yc"ZXTA: #2*4zͤrvU`26ɐlZ"1*Pu,H ti~v>J=T!~_  oaꅫ`;7}gу ,+{ܞFb~NJ9K)bս2=]]rbͱDcsJ +6X߈; ~]4.Ce֭PPI rEV52; FzݫbTU&2-u&E6 Wj섣J76^ /[ P=o=~å/VYr;ڮ`sOsA=8O+XmiQ:%dcUm[)ST"E EOޗfgǺ$h=S`.26Xe| |~ Uv"zW35a,[|ŷ߿yu.3MeO;Nߎǿy{ Ӏ^ܝ,[4c.-̷nz=._` c|Hޏq-Y(osc= zd4{oG!!UyV_zi;1*N~T7#z'IYJ\qmr=x4} +Yb,|A6dlk\y>N=bpJ7m\YZB:H{wk[Vr98VCt$@;ve-YH`{L}UM-PBKl >͟ ڴ#+ ԾR<oc'/dZ2m7J쪮Q mMB wevUW5WFč|3B]X/ub6 HUfaXGO~GCƽj + FƶnPG]u]ԭ#s?%H%^I+̵euŎ&UN;~,l{,p>WǙ>PW +g!HAF/dtLK"fS Cb\&z>E-mr^L7Y.j9Z5 +.[${l̈梖 _h$/.Hă;< [nt_~F:5 YF ]7 j_T( GZz؏H2-62|@Qb*/EhL6Wclt}sqǦW5-N/%bbWX6|I'd{OrOk/Sb[Jp[^Cven/ _kÝqO}v2}&,XքEN15|«rJڦ7xkkuW-`Cr$=?;NËwv=z=[˫- PI؍cz@(j$eh!g=tBkv*]M-vUlbG}DD@NMxm`5|w:2ԬDDK5d{X5C6ua@2^{fB"%+nQ|:THm5mŴG!" W5fDj]#=dMJO r;2\y"""""""RxPe;cї""xԫ\ Q"""""""PHX9kWUʝ9Tܙ(Vˑ<X!#dy6^jᚃ#hpRI{w2@;hu+?zEQn׎n'c{;۾LRu?xb{R;̎.B]~t̻(f;#l|&K,xo~([lZN0<r/~3퇁NCd5gUT60P]}ʮU',uK=dk|X7ΦK}dzbl `_[o5NED^Ek&jtQ'l[rlwj QQCÇJ9_#N˜OQ-:WVpbU>Xrr8hKRv/7]nypEP"I6ϾYNzoK͵l=Qc6ʷ{owؙuUE-A]VR[#C߼Ͱ޻y5_4.C>MCߔ#WVGMc"CVVeGyv?O:9X؀]Ű`i%UCPI'G~)U1^’[YY8›m<9_{ #cCcSٝ~57Yemm\l܎%IRP=Shk*)BjNX'@ɿWc0*X'eĭFHpuΡnoVVƮg; X9VQ{E=v]+3} 13VԸ ?~F^ewzm]BCQ]r (@,<|=mD˶JV[cfd:GP=O\՚;`rlt䵽S/,teA x ? +%AzfGHUkVZ*W!`ArwZfF=B=.l]ixU"}I+=z5y(E-vDTȦE=Z'9X\n}|+{v5O󥞽=kɼT,~*H6܄!zكgZā*y#ߏMXv 6f }_[ۯ@z~}/t;Uhy:?i0ߟ9^@VZ~O6uW8b1eAխT +O"@ R3,Bklkk]gP{=Oay6eVźY>Gc _k9 + X5ˏ. uWgUYM,uB+ =LO̻(*bؤv5.~y٭۳VWZqrٙ Ǯ*j[YwHuM½ښt`{9Gĺ|dؾZ^vA>Q=gd=%OiUح5;~6%%MG]'ϙ^kQuj1z],e#5-f?lШo/R!^ $?lޖ-B_.fW wYf;Z{)%U 3lU:smlJ0 3v1E,mt5éol5,R^) NP?e5N|\_;.\lln]Fa_aoR31!DG y)ވPsP=;a \#gdGMhvNN`:kƹ>;]ą:}朊.6bꭋkQho:;3h`XU:=ϰyͮM\a-Ԗdč7̾Oԇr.rҺ+iVI +gf{,oߔPX%FI'dwnC/vV=4]wo$#|NҔO7^7;}6'TulvǷ`1R:`C+ χi.la`!Ziw {u}8pd*oζt%ޫS[c-ŊqcLoE ׽º޴B!X#j'.pV2mjkקQ A`0a}3/K[׵uryF/+ǰzW\In2>@?_ +` +(ih_یLUS^K^ޱ[S~|{xy揇"Sa#佼}yTy*cv/<9aTgVXP+6q=Ň̛D Xܙ:nvGLr?]]Tn]Ձ^^vTl)h +\ 6lRiԱo,u+KK1,ɴ g^v7~OwVK_2 VR#cc&YF렺ȝcR/̞xUӳUBlC܇԰w do.>LVGk+vN;d_h4{vHcc3צAЮi^Z,bNWMķFYǩxK@]U ||? +/UXz:.jՅԙ5zϤ>I`YMJĤJA3X\:փ׭V}|I [kkZV; +'۹' ƿ vA@!u;%ֽSHk#x#ɶƺ@t*}μ3!![fӓjnBK 2lӛ*ĺ]THml2q"|7VMK[Y+KZ``; V:rnR)Jz ->LFv=c%~#uTKlx{öc=lrZ9[&\}={KxR),YZ~Fl׷2c/F,YS?Òn{VU]]].Ko|0U hX܏}OMYU ]),4t z 16t{$`guCB +<{τ}dLgԏˢ;%^zײQnU:d`5 ؎ս2j\`d;FP;)S?r|>[k=VPZ;&b""SK. ŬDک` U޼N&Jħ b"""F4e]uކUh%}?(Tm\.@ w׼Uz+X#`YtFIvcDDDDDDD[:ԬDDDDJjV""""%5+eb"""""""""""""]hoa]56N=yVqk(Aer<^A޿eniKE_"pϏr'Ob?Am 47Ifd*.CP|vןowŢdb;Ԫ1 3)0/ouGOo˚\oVO5bKJs8)A@C;/w]o313xW6֮7r *Gcy;;:q,N6O6W'sZݐq d +,dW:*1N5&b[gRYqN +CtfvNmG[YC_W9 +sjt9~W$ "m[1kf+\Ch}-O,)e7ت\"Vhl[߁2} Z}\G@UJ|0>IUI֩ȭuUv~(ϿW}wt!"U>-$b/]UOq>F׷}Ww<)n'kw0Y}[#6+c6BgeN*u{O5uLΣ0j!vnI?$ȣ Qzx%7v9 =HN]i +±`;{x1V;2ڳf2+yvK$ GydӃ}] \Z;aj,E@ SRKj wqIKgtS\3V+qT*[eIo[#ωE}C#!kU&+[J6;ksQZYmzEԕeo%T1oxSR{m?a@~ikeu,n=¥-+WƂ?2Ab""""""""""""""""""""""""""""""" zO1zgԩ$|nUeg2pfXͷ{H[}Y yh ŷVKbls:䜊_jO0i=WQlB]Ͼ^:(Pt 'Г'*!{~1ȉN&=x'ÒX)壭$}LxWPV>4%VeB`r^6dqtP.TTU{Rrw؝zށRѕsV*[nC寪3tvgzzK)/˿r}^_O*/5˲Ed)9>|Mz[d:-`KøcavKl61~=׺KWjkcҖte\]bT!; 供_KƫEs5 ~&UV"V,RÐyR$=nv5/7 ) :{K60no/Z׆lh*s$] y=3\U3iWRڸ$2uJj6}؀5.j^bU s͖-J] +IOQiV942LDHԱlPs)q7UoGǙX*ahƫT<*Q{r&e9QbؼrRmNz""%pb=K'#L|(/O,uOQ(OYc'63XCe1 +7䟤Xϣ.p{cv=ϴ)-QNIuՊ9G +A*ùS\ũK($;LFEy5:0YH*AKD0@X6OSsEJ)~_7:,bfטG(L;菸 2DDDDDDDDDDDD@6``{SO:Ŭ;1+JiWE5I{UA$% ,z2j +Ȩޢl܉ hkgZdV\| UlL5b?fvS~ܿeۍE^Z+3*#zI\~0AC2eoA@%_XK(eLqNBDh}Z#ȶf=HF9'!hGo>տ@dՏÞ *fཏOPH[Srгez1F]xm\f"PǤM@˯;H}SnUjQi}qtu2~4uNd՟H@}[}v]5+MYs8HNbc#X/UZr ybAroHi)k%[Ǒ|QNOL!2l Zle=wĭuww*`?"و$xi5zǻ.qKC[rHԋX;8EkYmekx?C =|DcW7 + ճot뾼vI'?YۜWHA(JWZ?I9cxpÙ_~:]{2̼J1d[2kkـ ˫r:nfģ ) H#R_M:X]WtI?Ozfv-VɭA A| ܌[P_^w%1:x#:`Cr[@*7};I 2Q} ]yd9kUu㡰:2 *^"(xh=`mTNOp쾺)l5zִq? o, }XUu8s wxg,]M̶o,@+fڶ{{K}G"h3? Zr;?yO膩km6O +V]OelQvQH{mẙOMwv$lp|?t]_gO*<{=i'q+ékZk,)R(!|I;{lȃ>?STc xm +,|SR͛[Px<ߙƵ7 ,te[2;+ĵֲ꣧%(ܱ}eHa5TKK')y&T @#"qkUlzۓ- uϴy7cSmȼf!*w(33[ !Xc +^<0;?!/ ՚k_ZSZ iJ֔z}7Lo|IwO}*U}TR4˲=$z͝;/(6`RA?.GYɻ#(O[̛C%x$5|OZb^}LU`$ŏ~$+-Ϧ9!Hb`zU^r*9p~RfC"wN5W[>[h~z߃MYW{İ٧¾u˾~P,MhE\1<{{3|U-VzZ/77cV'LZa ^CǍͯzXUŭ\v6>+@a{}[x8'ָ<=!r.DxzߝoTcȿSˏ/pc0t6V +rhr3Zl1TnY9٬T]( oN_e"""""""""""0kf){ެ[Ju,u|b8M}[:GHe$o\߱˹P.r1?,;@UNJkA6UߎIοїPӲڬe׸#Hy):5y:}EzAe)}-E{)> < +j! n 2߾~OMɿ"he/J l,o~N}6ؗScB8/}kޙ}^6 JTd@1m[@Aߝ˷s02XK,֨_xWze[JV!BX[~pA{H MM'vM[,@ñrYW-ōp۷">| +߸,NiT{/CɐM23xSG<?\u==Ӳzwo;QkMI:rC+zgeI:?YtV-.!--`ބ7*ްr'p9ϩݹ.#ޑ* )Ce%8^uﹱֿp/ɷ멥2j̚ XM 低wH_ V]u2KDֹ T׍wOC#?'lTxrFv/QF^Rܷg_y\IzTwKrBJ[C`3*5xɠ ~us=u\{4mVkNvGiΕzZktNҿ:րFdfo"SV=-X⠝syv;=:6+=B?*!^ݗG]&6Jک[*C"/ÙGtjŴ~Q6+9qv<{3`CS1Wd+&If +m ۷{H7g`PzU2Xx!usM]t2P*vWaCvN~( \ɱ<3p;׺su!]vjR;}uvdʀa4n9~Nyr봿Zů=:׊b}r1*Ն%5+)+)+ dt< P\^7o_y5jPBzԬDeJsSխ`!(E@}+65-cWZXү@Aa=%|jj,uX2DDDDDDDDDDD@ +endstream endobj 245 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 80/Tabs/S/Type/Page>> endobj 246 0 obj <>stream +HWۊG~]W xabF6zoFF^"RSa0F5Uٙ'9q~:o=/t:_/}pQ?e>ɣ$N'x.ǫ'|7Qt玳jp7u:Op=a=tG?Z8 +bLCvM|4tD.z ׇ<'-a/#-0<>T|L9k͜?k’t(xTĈ\cN%b7P/^)B\B𲊿p ]q9o[R5|atգ-9sBxSKejhK"m.g|? ]D=H$R碄CNrM2hZ E1(':8=SA[jn\90h>!+> +UL %~\9 SSu^a‚ݏ }4'E pI8dOAE1 b +]L12DhTqkEъxѰ0X14[+*W`ybq( s<\.Yl?9pK8wd=ù Nn ZV'3/IdZ+c]C^)-7IJ%X@#-ڄdĠ${kÉ`C> ÚN< 5YJsVڕu9.Ɉ|=': +z~_z~&4eIZ!ǍRe ꙗ|V^F/*C-?BZrʩxzq j$a@Ej39[l0H3N񊦃b-O~xv|LDW~Q w̺'§ͩJ/ƨgy]:L+߆N(wĆ4iL0p`)0&]V7 {_rjL6QB[bek5=Ϧ,hJFga_o.J)o72ch([bЯ.oep)&eel5R*6s 䘒&Z' +w-=Z JRPhwC/ѣ +A^k _]'%f~ڜL@ e^dλ>;7LX05Ww4!EԞ+O'ttm }:Y s̷EtK!:F7p>]x^Q%sDOHZaRJ~,E'O"eٗ„2\(o=7sޣ/D&1 +PSiqRz*֩Ҏfb}.#wQU:5uӒ}ѐѸc%H 9 w6ս+gwL"ja{R%6ph_a\,>'V3K.IL4˘xt610p/ U˝Y%[}PmmPnj]??Ը R݋h2VZ#Ýl4viʤ@҉rQl%MXSl06sdm3}C$_-t:g:d~ ʄg0gGnwVmr21"ٞ`Sΰ\-NI|er0]Q~/<@d9|QbL)FAL,ιUpŨ8:`\[oF)U|G3mK3僧>H~y-^)q9/~|hqәT>scܯUFѢe>bTo|(: 43Rd^sVRюbNm8Rny 5US#4_ލM?'eܳoܕ#u~zcbyĽ3x JKf~|x_48).dc7yЍflb뙹sz#+F3’tq[9'YWM.-X*ciG#FxkW\jh:%r-Vb*A0-ܑ2!"1i~deS%"Ǐsd +ytzGEAԛaL=V$L/aũ7Ȃ.0n)։TLq(ӒҼHh{*l4fkf).l-jsQ̵-$:k-ifOߟa%D]^,1GuGb)}?dg!gE˦<U!z9pܰPKz@Ŗ`R+L5R̈́R +d2δE;>(&嶡I؅Љq_e6"ҷU#> iHqk'θ2=HCV~vCxV\6Jmzye"lK"S&%ߺU6.'MÚ:(֔hðOW%tǩ>k52] J(3ۃ9BERWΙ) ʘUWKk1+:j_ +&LhIK}%FHv z|UE#!zH1u7>,B fjyj&=)if\lqa|0 Q0On]J? BAv}X3CWɎ\D^qZ==0u"GOz=k$kD"R$ ɧ[i*%R10f0[T, X.ҽ,(|=?)pVǿȄ=(f`.*^| >㈡F!O9+s`fߪBzBSɿn'ww{rd9v`،4q.L%t"$b$22/)P +=cND% ̶2[Ey@y8mok4\9 `gat1T}#.yi#\/^BJ)iL@CVy]@"iq6AXV"}*PK$9g +-&``h?i{>nr~zs}98. =cgQt.Ҳu_;v͢s_W8  +endstream endobj 247 0 obj <>stream +JFIFaKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Ka + o!1"AQa2q#B3R$%Cr5STbctu +&'()*46789:DEFGHIJUVWXYZdefghijsvwxyz?b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb"""""""""""""""""""""""""""""i|񨇩wŮ:~#{ ,*;IVUwYeJj|v',jӵ>_. و?w{+G!o.ȚTs89/Jӻ]l*};Tg8,إl+׷^=jhqrb'm$6[u'#SŽD`۳c5:}d}$VMw;֧m_^Ga7BDnܷa";#X +,Lh'@o/&nQ[i#bv>opt~~""""""E6Qj1TG*Wr v #c@\c`czRTbbll18ڶZJ^'_Oy7Eːb*x#bd++M"#cQ?I"CzӉUM[U/Bbǒ| #=Y[+W7>}Dؘ/lM,;*J[l~g\%*_ *kf'98roԑٯU܉FvGՁwXUk~@6>O9ؘj]^KiU׮ؐ< ;׵b"""""""""""""""""""""""""""""DCMZ9ZV`A Ȗ8YNؙ6R]P̌tClh~sWb^1#>7r9\ ~B̧K,;ʚd>]~}0sy nUSc>52aMy|,|Y̦*XcUvz^v}:+*[mŖ %~ Fnm<*G*׵r0 +z=_3񩓋w,v>]ogƁj֣ӧu׃R]aݯS!yo>{*` 7W|Ԝ ғ6H:ʧ2p5,lv]y`U)EyVҖb#{H=Nν͹yxڃš]x obcFTQ +z>N=m~{g5j|6}zoƤVGNn+dv?^uԷ/WPst_?OѶ??/aCnJŢ0Ave%P{}߉埖)_ղKVBOBbA@FՀ lk0?~Mjm*n|GRGnRO5݋^?H&r?r8cYkvL%U&},NI.MQh]H &2rhKIdî,5ğeu{w`@:z-t9SbtƷ +w1GC|u|=J+1szxۭƶ[ǟ֔x,=2ZՄXgW$Gϸ Uq9mۓ[m% :?ﱽ N;.-g2Yj7ԏs+23[t;(wk;|olwE,qˢERe>dkG`OYV]xdeUT#nk_G蓽{k}W-hV]=h@Blǂ&\geݢ۫ Tr6{o@ߏ!sB[uuw/K#CCx1v~ ُζu0pG@ ~fFq)Vb!0AiVv{Q)bCoC3Px^)}/ףu׏{ɾ;Ҟ +Ԩ: }ٓl-'.GӵbL'>o#e盚K2(b(,6c5df^r8 QO܊;-8\"m|?;q$ 8]f2>ڈP2hoBkder\v8Kq)Zr؝c^~>=ᛑvS_~^evGN=F˕U]6!9{8]oST#tviett|ܣ>+ziTK>PI:g>&E|#0RVz.< xml]7]y0nDrő]7h-ۨ-וuU~jS]"ܯPN6Akjw+o$#sb@|Sp<|JG!;֍r>!yͱ%('S?(uqU:еb"""""""""""""""""""""""""""""jf7(ݗdDA:#bsj{ zrHОhqQHT.ƤcOU'gY~KHݞ@OO}{lozd609aOHb{7R:뾽״WJ_Xr,1ؽʕec?VbJ&!1N~nm2MfBd|ee{R$ԓm#A*Mes2`cnu]wZ=e8cحV#z^+@z-RFԕ>~yGW4֯? Oc?y+NzchR +^՜N=Ւ}J7wkbriRn ټ!T.F~ǰ+Yvظ}Cl`{ǷMWXl}KtN''ϙ&ծŸumǿyp8q+ ~׶^}kc.Se>[nSz:ަ3+ɹ [P=Yb߃=gqrSjvKWcMRw VGUe%電|A=߹n(*@#+2حnݎvw6UBh owYk\0Wf=)smJjCϩacN0L Z!/)!lu1%#rx|Zl]ڛ^Oq +jSW'gd{x<|Cc'F +cϱWuMvzV|>>~ +nzt Ԓkc唕H'7HO%6=9kl.hgZ7gLŸWYE~Ͼkz;O`zЀN$ |>[a.P; +K={[c{׿2Jh~bvf{7/O}w>}ϫ&Y}fNn>ny56QdmH?Ә'C^2_ v:}ÓS3:;koaA0xj8kX)kl*6BrH}ÓiڻXI!KƏV + $AZ>ߙ""ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb"""""""""""""""""""ae?_uܗl؃Dηq<؀>Lf'2VeV 6=bywZ؀>BqO-z!} 2DDDɘ]+؃ccy[>re[ o=r]^ $17]c2DDDDDDvUT2-\)bɖ""'pFϰߓ=DDDDDDDDDDDDDDDDDֵb"""""""""""""""""""W|nŸ,\#Z,u2 +'<+E BTߊjWӠ) +y3'0iRtvt~3[Maq-kt0T 9;p~ SS z:2[vįe/jو-.Zkd(;MSe.EX}8 ;aXoױ$߱3OVc+_fhԅb5OOO#[3oa@kn\u@|6>y\E50_oUX9,O aDC]4Ue#Aeqpعyˌl4CI?^WN9U*56ՆSkȒ4|p2`dG*[ Sa7˻ +}7`ᆱLKoZ2?1"=&4%d'G[D3pMؖpP^=OO{֦cd]ܪcov `RoV ]}ʥb<0d_Mmcld[[+upA:Oy5lL|UG/^˺ͣ__9 ~>{*"z#*X~c鹛 +9;Ul6Gz~VxJAl~|7w(,ťrV*!FǁLx~ff@NFثSuj*˜1Xߎ +oCםjM+'z8Wv:u ,Tc69-μI^7ӕ qJQVjϞЛ5|QNE5T=O%(l.G6"llvEktʁ{ @#b`ue˘i)ЂéO2>UQc_ulKE_'}F>عa}u|ӽ\${$򹶭\z uNUO$k^Ͼ>Z)ƥqBNh3y&SPoh VRGG[Y<^]e:vO"{ks<Ŝ'sWˮ-]Iw +DubѕaY]?r ;SoڝA:ה1z%iv;7BԐӟo~=1{E)jFBIXk?I|KK3vL~+t54N?#sds<3Y9'L,u9Hs-(kVA^ʓцX퐶ʕ fS5My,(+uCp +t)ks\ȣPRچ^hk[I6`Loigc$:{{εzqscYOYRXu_ĸ߅"֪#l,t|OXՇ)1rj;󭁕5̻G̺){`Y̍_ ~ecȨHgUu[{:2%G7ԴK&{;hXo;|juv'l<?c9j8-Wwpclvu?ğs0s?cW7҅}AT}>b>Nq؉Smg{Xܝ$~fWA:m{l}li -Ocwo8O$ȎKh;~_<Ϗam8%X w[3f""""""""""""""""׵b"""""""""""""""""""qX\EW(,j׫HrK1 Gs8u|CѷVlt$z?O\W1㡻6SmAC; qd ԋc/vK3U}9l|Q:0`vI Gjp U݊ouS`Y5#_fw/#1騶:YQ} ]Rqlz}ڒ6e;,U[$QqYzKC*߰P׮N"BGW]sK?sF{V0EW>5yػtOkg9o(er}|)'c^~d?rkKS0z*UGS0q WoC+WpBob|#Ƿ|rx1it>@`{{n?pBZ^[CZmkHlS+4ݑNXGV5vb ~:>?9Ⲳx\Z0RwZ:D-buDoC(óԦm3TE ]5_Y`dn}X2ckFFmg-*_Mn7!˷Aos\E|UnAFcܝ=ҔD|oLؼ-YYٚ8s]DK@lF~qaib SH^ ݃l@>-aTzNfˣJz6{hlՓr)Ǧk +d3\cdUՊr&`Kl] ~ ˾-[Tղ]*NyQ21Rk)_QyX7brȢk|_B]w^]Fǒ{3emv=;'q]NlcJ s[nMn:Xko]]k|˥7я-Z +2VSx62hr+R]>uߓ5)[m2S@' >߈xK0(F_WS3|\29Ʋ^.[ [}}K}NӶ˽}79O{cfE95]]b}6V ,4@e̶U7FT6n~m㑵pٷ`ܾKW9VX+S{lC/]73jNG'fXVY}pn%^t"'Je.eخV* @vH kc~GY"Zb=+Z:bA$l=ĶnV-WAޒ,qԞN*UH0ؙ966=zzݷ[ߏo3jkjk5۲8$ozz"2\~Jks.1R<&jK2+e{/oSL޼Z?0Ղj*}ErUCEXO~C_c5[aY KW@ + VV&V/ajvzBK#Fme8X( k)~Crj""""""""""""""""еb"""""""""""""""""""""aů6 ث R7[se>?ZJkRߢ?lqv,Rt=adL*ކ,I;,OԒvOѵb"""""""""""""""""""s|?qWƫһ:=CigӟpFc';_؇%Թ,Z/xUYםU]ZzRhu,X߷7|EwJ)t[lNrrTd.JZy+fVg yf5hw+ WMM!eڅ@__~R7mL;I* iXst8* td7>~'Om֢!b~>?l*Ȯky-]`XUEb}}<{+Z>Aԟ`>do1r'&Աbk')+co+u@i2=lHe!pDNSuv >LNe9)Ub:/ |1ږ![> f?݌-vM:~k>=U='i,?XTc$9L\F ub?Ogh1.A?a6g\sT%'Ԭ1.Lc6-C"'cirAMmzV&^e%.ǟ:K;4f_nJJ؋Gm~3S}s8+/]uJH,X@jOWU:/Fϡ؅l'/Ŷ?'ڥ/3yJ9JVʭۢ3:Rz:̉b[i/_ǿSt{VmAQ|# b"}AllPIߟrXulȮ^Pv'lVuzuS<~s#c񘯕s֊Nԟ9lKj qaQdiF=nO/q* ogIW]+7(v`}驗'.E uf + >1oufe쪶)b>>e}'볣M.UO߫t`zoG1crxفoWZVd\K+܆<ݟH,D[" ͧ+BYc'URu>`.*7EWB?緐|IrN/L8.s2uv :Mf\̕æ˟k‚O_rV^u=mm` X?O^2b_9\9bۚ`aC7]:8uddب U3eA?jsȩnj>uT  G;if0x[ kR֐SGͫsiYb)ϦuS}DjR:[V 6=aFED"π==`6<z׫}|}'\_~OW[o=c̯j+*`]A +=؂|knU5N7_۫!]Gw'jQe?0 uz:w eI >rؖ}:]{\vF ={IHҵb"""""""""""""""""""qgS]Mllv;#@.O"=*!:utړZBnoy? CR}5Y~r[46'5dAߟRS֟H^W[}>^do㟃󬳡%3؃裷ߐ̼Ŷ㫧a|y`*ʻ&FW!o>PyQ]Pڃw&QհiVMvm: +}9 Z8+g֋ G2Dr;~+P]9|;iKmf-lj6_PYUS^3i//SLm3oj)Q)i:б>gFqG̬`j\jSV۰޴3k;G[34Jo}}pcQrפ"˻?L%(9 J9*H8mLhZY=|u lx'ʺVETeoѵj{}}ͯ4gW"Rg W%~baKm%Up 2XOuTaUG Z+eW~ERQI#_*frܵKJ˷ ~;wϮiZ5]8k(^XwJIo_}A,8}V8; |5=uԺeFuh) B+3*=w!d[ Tш!u ,oN2RuSa ( MjuÒ+?ٛ6N:_\).%!j}X>SSY=N1|o$WYKfhp8.Guko_"G`_#}y6 \CXzΰTI=mWz_y\Udzꟈ!#'^ŏ-E-k +&v5Ai)3Q]{|.Kr>lt)͊.渑c*f>ߏM>%l {:A`;'~W+ٱޡZ[Uʞ@_d^^+ʞT2:`}#Frr3&߹0bFԲ>[vG g~EB~M^%-'-s|SD _C&U8\MBז +B]k_OgՕ 85ՠPG@іxRΎ㑭Yb(~:&7;ʦ } Lp1~v61x +Go'_Sӵb"""""""""""""""""""jcEEzԳ kD<}fJ1jƯҪDҪ_>3/I7(Dfpـ}ΦIxFv]ٽ4Y_JziRpEhms%Xt㡮JsGsSaݍ@LvNX*BICbd?!𕼦;b. +VcjhE~s&רg5ph5zzzN_n֦3Wݛ:+ Dt4}]kQS]a@N};!CmOG< P1u${5 +(]HP^gN?~5[芛ߨЖR hEGض}*\z'Cog~gܞ34 h\rlktW ]kRP@0>=Mq߉zAZ"@]qb0lz*RBGyRzZ+y>g8[=5֥ƽb7<^&kȢHW }`ghPT ^G'|jWJ*(ޕ*>`tBwu|O#5ڊue ^GxǪJUZwh<Wv5:׿iZzv-Nmk[lBc UU +*x_׷tW03qXKz)ГZSۯ=qjM5"?O  ++EIX'd"*~P|ϹjqzGeZU4vk%mPƤ#YEHH։x\EUI*u5ODr )ʥ(kjF=˪z?/.rCjx~}Omx]4_c芛?s71oҕ>z(]~l=7o^ur1‹KG0TwP>'{SYkVR_av4S]}ۢ*o^,Ԉ\T.[Kԣe>`aFAZbK(PcZ;xn>R v%x|$\jB1TIčh2?)5Vk]i:/A#K Lc׌*EE:U +6N^ b£9BRXk,jk.cZP=$lk驩?Ff=RKج=DAPO,=:ǤUm.{X:0bzkz$IyVǴS_w;t]>y c>SY]n:?O>I +.qcԌ㮘NƉ|8XY/om{~ql8RG~u:ցo"SīRmB;:""Եb"""""""""""""""""""$_1Yn&=M7UUQvΗ@l{ͮ=:E+$?>u938ʶ=E~FZGQ*z$H׏i)nneYU`%8fpt:؏iAn@A`nݭ^o>zIDDDD2/J[^+Z–D@R=oyv}<=Y4mj}}f""""""""""""""""""""""""""""""""""""""""""յb"""""""""""""""""""r\F<5[@~["רPdNZ{Evn)lIWXB`_ok||?I( oNSGO[ji(;;cĒ#N#c-U][#3 aҶG1m7rmu(?Oi%u-gK7{b.6i>`YjYmRР%jér{&N.-4b"M0>;sz""""""""""""""""""""""""""""""""""""""""""ֵb"""""""""""""""""""E|;cǨwb-XtGc{qs,V H"{%B׏HOVt#E=GTmGșWwXG4 @gf!V]ԷL{o|51 Y|-Yu+XP+kdlOE:tC8>.F:ѷ]Gσ3obPbu 3~"""""""""$w)5uom-XscC{'׌ЬXXloD 0gfehY6L6eiZX_.@Q$SErԚVo#}A|MyܚqPE֊(UfDD9ⱭtgZ[F?9ɭ-]XoDlL5*ɾtޞνDDDDеb"""""""""""""""""""""C|IĞPcodi:#aHe+*Th`ZqBʿ:T}&$3׍Y;[nBg*[kG Wz RE`}JY*WE87.EVDtzJ +Fuw48W/lyUn)ԃ\/#_o<cR^[ +_V {Nژr9s>3ct4[h؁OGjY@ľ2^wWeWJAu|>?/.ʱϯ}mUej`P>U[˯;kˋk$y~&U/GYBˍJ 3Y|bq% U/XP{PYY[]RvN1Ff{QWz=a ro Na}g-xwWN…o-K?0ԏ:LTzU{ I./gŇޫoo9 01Z)WЪhYƿ\wOd>/uz t;$]-U̝ #'}{u[MksRjz^bԷm>%aԪ}n؁; + yqx<e ՗hE]h y + NDn1ڵjbkuNICqţU~5'чeS FyZ_A`jȪ5"Ї#JNȼVm5FBCuZ֫`]o@?]͌~W32oâۏU{V0Y7X- nnN*R͕>>bN6s4(>1sxHKpddM\eeq6zޑ|_WVmHt K`Ms+/ב؜j, +?{屪{?Qv-U,kz#y+ܻ*RнQT|x2֧ѪIJڽ"QWdh6Nn^xb|*`Hy> ߂>6FRW`>GqU˲4:uMrsp2*kM4ޝ6p1 ^E9QXRFo!2+"5^`,O˥'^O3,3 ~ (f~cǒ@ܔ7'1q^P+UtG*~"G7=[,.2}HJ?QݵƵ6ܦg%NZԴ5ƕr=N۬_;b殦("KB6t78ܼkܾA.e":;*<˕Y[5 +kSQ**lG5jϥQ˳MK_֚Z6X<Ԣ +vUfuaW)rr ) no';eSǓfKhU +BXWT?]{o5rTWudcY}gEB4I;*o]g]Yt;a}d㵁XVvu?0'&< +RU~q<|kKrpǢ.=< +:eS#+; ee9-am/P*lPDǃ&""ѵb"""""""""""""""""""""GrKrQuw5VP\2ԆS{Bd^.j*ffko0_Ϩs+K)nNgA[s <-H1xd٪ͬm*b`HI-_'ʷԱi(JMn徤|kA|1] =uYv@tvkWmi]H >Nw'_VcU>d$l HdX:=M@P` 3~`2g.{jJ%~UF1$p쪙[++]V*vm>pSƻBS{锩̌_dcݐjT5! XV3 *;m$kϟ|͖Eueb]m͂Cտ RrXE[]A^: O0s%vmkmcb 49$8>ivն=轘5n vo}|i2UE.ؕ^O]c ]Ŝ +]6z;U5Ь:މ ؓ"}l|;e6t7^_'=crwfW@ǭcܽ}z*Ahn#77Dk Rڪe +GS7zEj^-ijZNg9aYf;G-w:;djdcC]ozE6*o[I +Nƶ +e:;3N켊-n[VB/E(3kebUvAיڶ\*X].G;cGypZ. קVPt{l|t ◯H YH=$s^CvCH")<K5+u%Y[DRT0qrsO-S!BiT(,t y?7}u8Tz¡dqrmrNR}0݈'FB$Zi(vzlIH={C^DxVf"Zm'$@@و+SugɫQP5!Fh#d=,|';rXc9!mъ`J ~ڱ0DJ=3 u'DkGo1FIej[ ?-}=>lv=);h={Mbf]$ub4:$68ƭk ͡,$L(=;2=jvE}>6צǾp}{ B)u/R@o5w.F5얊N=QbRYI$GĆo32̻*k/]w_I l%`TnW:־3pWc]u9"{ B ̽K^8+.mSI#(~{s%Aw0c*r.7&] +5F6⯳d='CXLA]'-CUll;GöƦuX#dPi;>鿮hY,0a1$}<׍ͻxBe-iZ{?56ڴv:P 'go-Ķ+d5u"{mb<'[Od ~{jR:@#D|1!*cH@r<-9P&K5xZG,+f"U +4f~L\ y}fU}vKV>Yy#ȋmJk:RXyؓxлv-1mg`Z'k؟w#ߗuJpZ=F3fٗg*(U*{nbY11aP><syWzVi=4Eo{6OxGF>SWYPDZD`#Ƴb?#7f7jPm7un3c[ejϧb]R@#Ƨ5RυIŻu)t aHަſcYU/ǫ[zUhthV"k.P/R6󽝙'ž5%j+  `ɚ +vUTW?APex<-uVvI^+/bzk&n)Q <%I_@!?l4o;?zV;uG|{jmÚдU>h2X a\߭}v|/O]c#1Q1UE+>= +:$997BB~C*XH>B +uoz;ҵb"""""""""""""""""""| WI>J!gK%k`FPt?9<7_yb\d6>= PIhS.MF,` qZt>ttCv4xKd"ʴkJ-Ix }Tz$ 5}KƤ׏ƴ8H?(e:޼jQV̫vլ|̬,$L<3lt'DiD͘քGk'^H'V+ހ$ y>Eq^+Y zܝ7GGĖ'٧a[e'W]f=v ^=S1[2_Ո@g6 /ߡ:}o[5ϧ"hF>]KV dA76b"|f >ËNjzò*cAf|o++;kpU nf˧ =KQAQَ؅Q$3DMlV>ϯ彀~[92*6Oߕoᇐg3f&,{nZ33}>>G85csunη̏-]*Wdh72[+`XyDӵb"""""""""""""""""""s3fQ/H![S5;s,=XQX!Щf.~GH6T$A+ l{nU%6cjX,X׶ǂ67\9Kehf,Wur=LK#/9q:]Kܞ +잤|`Pw-K?j;YQ>r~-pʩ7e + (W$O~r油\vF^_VzժQ|蟯s[ֱBvQJ,}9^/ #)T~l;lr;a`lo|0tv=AkH;a2鱒-Q8ٜc^S8Fϭd%Wݾfd׹]E|!U5dSVX5!To{B#:vo7GQUvCTvU#gh}z#N=yltk|iNC&V(.}BH$o~Zr(j)lkPOݾP6>|+fsQiWjG^+/`G̻:?gʷ($1*?iTlnGp\ݜxڬzen@}7+R G[]=j{ۭvة-J_cr* +rv|ݻ|d|͞2z~E{mXc{󡋘-Pm6|. v>@cdCMvcyUӬ*Z4%zh%s9+^?8Ycp[bH?P9EI]{iKl +Pkߨ7^g>*xed:c~:$~Yb]U1 +TVjjlNoT0ֽV~rH>$',^pb-`)|*'ۯͰ&77ȰJú+gD +>O>`JFDLelFm1fV#Cm&=Qu& +`Ifށoyշ⌺_)3VN%=m}7m+b]D6ŗzPqͮv{v+E|'g=E|G{e{T#u=WQ d7W?/9TpV.STE".b<&8ݝF=աOH]-353Q5"#;zrQfϳTrUg)btHֿ9\uһ+\{|F됵A>uܼ;t=E W >y?01q䲲敩NՔie' PYT0=v}\j݆^[ +}&~sxԎeY]VKU5`/~Hs&0U5ī\e |x͜oKwԒ?Wo_Ifu_vUuaaxL<zF%vVT6tFs7u25zG%IBNO?d]e9՞G؅(TjU:T75?({ 2PgPq/n 폾t H ngR\ ~ԊlZ?)V(o^Ⱦw;3lJ+{˙J>uV;zu2 JKoyt:Q]ӭoq5)j-Vt|}d/<fKr(+pa 2pq~Pǥj +C G|}ɢ);Z =h1Q.|<8Qoz׬/{I +'1Tmvzo+($5L/ooc~#$:|#g/GmN,Gl'%2zq)[;*׿AϙFW%m.M75[ZT޾CǺ~$ +P<Кpg+6X7_܍|/Ǭ a`6x`>~~OqkJiQUT~@hM<2ƶaf}< ~5g0[v#yϷ%g0O#۩<ò::xK~C+6ǶizStV\nzo^w7N}ObKb~I9 e=oAe`՗WG}/Yp X-Ͱlb~cl{Wr͒ɳ%{(S!eo[z8&4;Ώ:x|ͷ;Ԩ5޵/׵J>w4&|-8[8Zl{wgG-l:]NssW-PîeUOas,6=2ğySJЁx$/ٕv>^;*ݎl[+^F#؏b6&)g<~F-TdEА:|VBeWހ~§P{  RNf)rduLVj}:<'mﳽ}&+n@k%()l=,^N}u|VOSJK7~]:?7jH,V@)!|Ot}ix<LW&WZIc)zeetZ{Oùcq+7`h/n[jmdǿ"=ntڭ] U,FnwMOs!09ȪQ[+j< _$ΆŘ&:q?C!v [M鿬g`jj8gIj򶛲#~ !Fc;+UG?ec45%1PiV` vw#[QzFGvod({v|·gs3q˵B+:v[DVA;7f+$rgc-!:m+3޷4R㲰;ݔ +\-bH >.oSmCgQ,":~}'xÝ綵ft@H3*+v=7kS?e/*̖,Ia=wrWը K+Fjsxr?.kHjLP{~n?_>=8lWZ\.%5cK`5hF|{je8kKFS]RK*]|Fzh +Y`Gy;ffX/Y= z/^+}t@}.$~&o88tʧs/3Z%aVHAra̪۩ipQ1[H_VWq鏉e onk~5޼j]v?FA.Nc~Rl螵mgK"7b5؁`qaf\lV:Zֶ; Ұ>w3Y_xY h*U$xUem՜ ^ Iىs<!e^ЋyjPo%rqrrpb穗Fa-~[gxձ&=hk_O?fg}MQL,J@S#oٸ9"aUԗWsd,ܛ,%nJ y,A|2b""""""յb"""""""""""""""""""`̯G'@d}>ggUMK5 +HTn}l ؉:W$~J߈˥^C)> 3YmۯM«llh}&N?ږW! <3)}Q=Moa_~k *2+w :ߟo"}uV]mKծ~1$~mOyjѓuwؽ6]Q 9UV欀؍1~Sv~}񐽌G?Y3Ve A '&GzzgeP X5d4'ؘ(Q@Nd3$DDDDDDDDDD@ֵb"""""""""""""""""""BL\xҢ[?b˿"`>&?trRBΊWL[:6~+@x̋YʽCZORZΊ~#s,o3jQQgoJ?Y{󡳑~Ά*jt"[ϑ=' e=D+F +H Dc0*v2TV) zT :lƯJfoS)Mx;:D`s>^-v[k]hĖeqն-%v*J(Rn3ǡE 0[ֺ샰F|fYM`؀}|dbovG^{8k@[뿠9_6 +dߎS*ګF/*^ +~ݶ?:YgWf_Ҷ60_Z,)ZTUBcƫ يk+ ޷x\3Jfr9_OTG>W#NcX\=6YT@z89*q=%aLZvn>8DJynF{?]vU +֬c'ǟMl~@c(rk=L#kG e4׍ĆVMg]#[k|Pf2'4^؏ܻ{lL.Ʃ*Pu{#@2S#hUg]J Gp4|?HFW6a%)$_Uؔ҆۲O]U]~'8_РҸj8ސ$׼ݍN6Vf2FM"o{+\uD}I~kٌdk}<~&#ظZJ` %T _ ߓRU cTu}&Ϝ.+v.8`> +tֺ-ξO#쫱[ZSi{=5eHV@>wʧ}l]T9w2v-eUk}6n +:{ sYmx(㥮.sRPX:>5w*ű1O:;m:Ӄff vLj|omYͽ9شzZ ?vJ$y'^`WR 06mF%ܠwyG+k5ݣدRzi/λZiʉ6羉n>k[%X-mEj׷5J6wS]DMb7}_[y^UYAXu[Q_*?Q9gr\=uQ]ܬUhlcrY0 +Gv!8~K~YV=kjdzvlJ[$}Lp-)h-Zz#Ԃv:đ+æR֥ElAz׹܄d/S^mv~Mzm~!|?4*~+ :5EKWP 7ؑ%dQڔ*Yjn+uҏiU[T,"z@יbSvِ|)ErU6UwF]#rŮi񏆔 ]t|}|G!'!8s| 7r7#/𫐹>>St܅*@{i +ڪT:"6V<n_q^Bʗ! GmTj/÷a^M&qltu^/oKדQRR:-~%#wN¢`X]Mеb"""""""""""""""""""kaWeV6Tīiԛ ev0W^7h2 +éL>o< V E8 +>SYkZ"& +p-oaes""""""""""""""""""""""""""""""""ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb"""""""""""""""""""""""""""""kfg.ET@ {$Ԓ?h-!k԰j +Hv!UNƛz;L\cՑ6+::${AD#2yq}Fj5l&S$B@|ߩ*F +kc7G)Եb"""""""""""""""""""""""""""""jga6OWN ѵ~ml<}čoHf&Kg^]/j'O{ܦ!Vv@:׀=@,وwZ̋V + l|t Ɂz6:k[ڑ'+ ׇeu`LFDDDnUT2#تH@X,DDDDLy⡲ +6Y +?2OSzd VV 2̑xiȼAEv2iwcb~nNf')^N>^[WbR2/ne-].fjYGr<i[rǹtӷdo^:އ}CvMt2+nPooP MF񭍟3=<V} &c}dgȣSȭsaV+b~x}eTQQ662^a5hAbww6хZªMk/:k~&e/j[O@:tp˲A|BY`B;1w5?kjKUXϋbؖjPC+{t^|I~U_RX:^Lᱨ.YWVu, +ù~٩Uu't_BB:~}*A9Lz/>{mˡԕO6,k]UNX|:=y o'Bl=1dcUmU]J _WYgvCal{ڷ?'obBw)| +jS: [_RUCATKb }5qy Q:%܍z6{)=Gc\+$CbR #8U h]V:8 #mL\5e,V%?3*h?V>Os5~?[!+VuIu9ڗ ׭L~`1ƭ>Ta$vmI"9ImU-LT[]J@vG\2U(6 M@ @AGg|,rq,zD黫-JtPA}?9w!b-$C@>?T-K ?YAu'DΆ'׻pǠzv]mWdy,?JI'D- +2>#ve #RXq?A_rV#Q@rk +kTH#?a15NF&tj)WWv32۔=V?.28~F>O -vMsXm#v5̜d.!.S|P=^:@ ~ ,gTm\rZ;/mR}?yF&_ ezeZ:#WgPmN$> `g6rD!,kdtN<6aEof U Ea2C+2̃UF\J;+*wI +cùYdʷؔ#*+]bw5+c5*VZ!Y*y>| `yzmG|!H a]DDpr_ +T +fG 1`@ 6@ן1_<2xN*`.{K[ +Zyf@kl]em_Q}od`p?ƢR2-=EPU|+oEAl!qX5Ge`tOTLDO}7/ř)eƴ=DiGϰą\f)ԄAS76S-ťl#1 qeX 閤V: #> 1.6J^X؋HA~rGSjGqTkܒu=8ģeSZ_5&_;دw]MuƲ2ָX'`)lOEƺkrVO{هn`W~iDVu`G`Hއ$^v~6>0rUExYPA:=W~Iԟ3?ֿe%nkHTx~oV?-JU!`j䮽o?j ?1m6KN3-[{|]wnRyJCֶ~zx.N׶iq<5eVUj|uuеb""""""""""""""""""""""""""""&)v&5QISҵ oa59??CeN]7[m~Ѥ_e_&KRl|oD<Ĺcqm0S} +̴R(E@I + @k>LUH%N1UBL>u^t;vĝ6O:q93zhĺw r\K'ǪyܼtZrUB4`&O;IYrdr8߅>}wڗb _^CV>j۲A#G=0_^K6kb˿`m{l}>U-i%1깓zъ:S<9jZ2EW$~4ybzqEaNoﯼ݉G3VFeAlJJ(u?Iҵb""""""""""""""""""""""""""""$7xr_`t61Ƃs̷ oT-5~n`l%xއq??/_w\ZhۏY]cm߰:'tx׌QSLrߑ|Yj{z| uDn%.ǭqJuZU޴׾1puV~g]^=?9o"/Y6v@6Xok<=.Vädݝ :އOtsEvu vGntAGS53-*#EORtj~6?9}錍eUK36ISTxK]6^jnëInpj,P |I=}5.R"^-Dm></:}XTS}Jս.^ݵm4r^:zmpp[0c'ZyfgRv;{{WTTǸҹ: +~'sb:DF>=Zvݏ RUյ6=E|9Π03=yw*zc[XE'L9Lnbo>lwC8 A ~g Bٓ8.eoeV+'0Ȟ(+BQ>r*%$y‹a7tx>"r22y\K/v܂C}R|l~͏s.xL߽H,gdoCĐΣORCG%溭G`7`Ny<Bc\iP +}yͶ‹4®+RւK ko5W~Ktk~U,G_ƦęX&n᫫ӫ(*Xߐz|hY3~?!r~RYZ~` +FϏ:iQ3%. +\/`ay /! 0]뒥ėɿ'[:= %wr9r볌=lP5߷wBV?s&=Î泲3,D1c0Tꁃbuͽ}A܈ Yy6Vnԯ]2m{,<{{_<mtVP7axC'g'N_Ӽ#MI ־Z6m|ku vt4*hsØus Uc$x)`=ENqgKRԍuum^ΠKjf:|&r^N 7ql_3'jĸdج z%MJXx%Hc<| +?ؕqR`f +m2sSü&@-IRKUҥ*XLĀ 3^{&l|< >h v=s>E'(au$mEA%d:>&/jq,||4NA:-_`Oñ*v`Ѱmڑ9[߆Žנ

    r9L(̓]]C uLvC_YyUޜ]|eJUL7jC`y;M7r(,QYYO}DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@еb"""""""""""""""""""yj%A#ؑ?T=k`(:;7=DO/ZZ4oz 垤V_obƁQ)zC >AZOMm;c~Z6U@zB(%:דiSO/Z49@Ƨؚ|.NA=.KhF< 0iJk] 'O3τnyJ)C}@<]G$Ƿ>** ( Oo4JC>DiBDZDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@ѵb"""""""""""""""""""Ek +lDmX}6'1^O;'!Eu;2!c2Ir nV?l[5` jЫ{tfl Ϣz>o;bEYnQ"̛vEkAAց;FN.I@S),!}[{/gz⧬vR+0RERNgaՙs +R|!H적3cr8׾ڑ_rY֑{eL:1$GȨ5^~H{~'p ҽO$_­Q&6ڀ0OqзVlKr7 +*{֭mXHށ_uqԶvEaUvQ>lcUUj=z'+g鯯x3aXzށm;9|: ء|o%ƨlR|~}\Zw^ަ60)94ݨ;<\Wuhͭ+Xμv|Vgj֠ʅ9Rv}y5şw^߫[26~:Xi6/b8~޿8\w޶KR=mc^_ "Y-Cy=dl뫬h3CBJK{{liK U[8]Yw3g)W^R|'WIkW׷r&c׶k{ަDDDDDDDDDDDDDDDDDDDDDDDDD@ҵb"""""""""""""""""""ArYW@5%'?[Cƭ޼|(9`FI#ZEدž8?OFt^o -|`9aɫ6u^ÿ^;unt57Uc墷ed=v7ID|UےzթbH>I㌹>(DZa/pA>a{?oE= s5H*]콫:^&ģjYZvO~oz|ȥOaH)Ox3~5]^n?:7!-UKz*F_ޟcւ<+%~"׌W.zK=vxOn2/lϮU+{.(޾Hf̮}.Tk,NʒG`?5 :+SzՏv`y޴/'k @ҳߑߩ95W࣑5̷͒za#叀yuFkfu~)o?M^ ^b uͽH߿篮.:bV|H,Yn' tq.6f1WŮ}@c{޿Le|AE Xv]),wkd 6.Us+,{8݄P5e+CgUrc.ݷ~~3x~?(Uk-K1tD8<5fsۆVMVY/4-|eJ33TF(5zׁ0|K(˥j T7}FJa|AkP|'|xu|G&P^C!ES8ou9V/kUޑgcؒ;&շu:Zi7%(Ԅ)Pૹ#]{?o,G泂+ܓq~S*/L~zMrXaQ^51G"r[(.-_Om~#xopnRrOg˳wDnq\vAKj;25#/L({ u3q*NW޲oW ^4>M%v {l}_׏:9IAE06?/G'Gʮ"/[~p~}fIאgگ|z [N^/8+r7̯ jwӵb"""""""""""""""""""GdXueR|BHVBv{}YXTf[K;\oL vN9Fmxǡ1ZTP> 2M_%o^,NJ׿p&פip EuPZ4#b|ZWPπSMtukǴz tj|+Y5(Px@hhkiYn55l+>׿3UBPUUA@@Oh hؾQKV" #>!ᛗZ::M/M +u>K3r1m\axrKM/hWTMvGK1@ B|\:P+MG=>V>pezQӡPWZ*@#_m}xqu|R"v x469lUtme{UoDp*F- ͫhwUmo?Qۿwp<>7MfgK[3UxdZkk]j_ngus[X]S?'nݻt^ݵ@PT{lod{k6k=5=Zߴ8ahѯq_fDDDDDDDDDDDDDDDDDDDDDDDDD@Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ׵b""""""""""""""""""""""""""""""""""""""s6-KZAE݈Z*Ƙ<Ⱥ1|W&MqΑ֡ 5EX`{[ Gڈеb"""""""""""""""""""""""""""""""""""""$7ğ,ٔ@ގzN} A I =@I<|%Dfka|iFML""&,[VtFV讇j#`qѵb"""""""""""""""""""""""""""""""""""""&-bۉQ~`/rHɿ} ~A;ɫSȪ},WFYN?<[?5**I ᭱v!G$H_y|צeJg z + MV;>t׳P.G[c[8UjX˝F[~>koszM,Fξ]Ovϟeg-Y] +B## TC#=]dm +*9 "v~By$oe"ubLA״=7'"b}2oA{QV/mx'_O3ۯwo9ϱҵb""""""""""""""""""""""""""""""""""""""r?։UUJ1Y8odGGW"n&OEsK ;oܺ%wκZm B/:N8L _F:NS2ۭ>}kؓIݶ JUl bA&HMf}B3X;+x*[AF#1̶Bbςj+eo[d##6υ0[hzPxaejH?B dS _D[U E7>b-~?eW,ZKt =Cl?lŲ ]і,9-԰޼DS+@S^$뷪+1?@|31ƪhN;mDDDDDDDDDDDDDDDDDDDDD@ӵb"""""""""""""""""""""""""""""""""""""&vuINwK5JZՕQY;;y<s@u{RC|ēNBII#ԨN~c15rx\+^rvSn#ӊqQj-B}(#<XXuWPV?%4{ַ5m zu Q+*ꄕ_Mz> x}n7KM5@1E,{uv  uCsPZzviw|Otյb"""""""""""""""""""""""""""""""""""""'7B*aYḽEtͭ@ ~y݈ҵb"""""""""""""""""""rضdDu66M(fZ",uz>4 {u\JB'vאo[_:+<./̽!tF͠7I&70Ȳ6w *ˠ:_J2?&Ƽ_XӿK+`:zyYdrW`cWg1۷d?ҁd׌Jk,j,筕ʹ`@k'(G +.Cv@vxB+E>uxHmjLvAvlV9:( +iXٯ_@7]10 +2pTWiǰG]׏5)#`~sɻֻlw̮KYYF_OW.>,ڲ4aWRǷІ_ +vͳXܓRC?C>gJI$;>^'-U}-NBkJ(5%;?Ԯ{&df!nXT[Zܡa#A6XϖC;-?m>_"""""""""""""""""""""""""""""""""""""""ӵb"""""""""""""""""""E]}f9+45Sյ}۸-ŵe+vEa``z3 c]J֏awdp-v-س;'L)ބe@ +t!c3cٙ^q_߫V+菮m/[MV7zbbu;@{*G[%h 65lmƀ4>"7>E4Mcv((7RG[>a6baYH-,HVy hw֥ʺ5=jV^vm{euv}[ ^ 6m~EӺ64/^ m{_Qt eU }̘zd_fEGcX׏ik!k\9R;#Js+3*zmGFVpDdPU qLvC<_m3n\+~l#N2HX 9S>uQ<<*6%S2G2> vG|:;8:RGMh kgg^760*7kX{}ʻQMԵb"""""""""""""""""""jk*)wU4O(?>jj6x%hzSƙ&M"0Ru*>cQ8aWvv)lL8zr +vZHڷ'd93'w{6xYEːb2c[{ò]tuHybq٘6rK +RG<~R"""""""""kp.Rξ-V讇jGl=̞~kޏNKzTYhFʩ:|iJV ?oO]uHSv]`8W!Q{G웱Ŷ*ʤ1fURIGPH*H>LLյb"""""""""""""""""""B+_X'X^~_⚵r9͙gEŹDձ3vg|iESՑ`Q}YOU\ڈ'GD3gIY{\.@Txl(fm_i5ՈmrIt:D8~O;2Qwrlއk&+?%ؖ)B9 #σ6!9:2WCz<`~3w9`-sC['Oo;?zB햧|PۤՙT|éPHߝg7)þ\kLŽ|~~,㲙ʮZdUH*i=KC'Ss8WAtrj*·{^| |]n.fEY aJclrYW!-ۮ +{=#_I'+fUjjwZQ\X(H>.=~DU'@ q6ܗ#Z2h+ =#^W{,hV [g +F5r>2ocKQ،ПPVpA1e񾵩be)Q>{o@&L[;12,O䭞-}[QIy 5/r M;+xFnݻy=>n[ܣ{:I֎69CŲqEO[5~6<!#Ƴ?Yx +6|=:#n/\7;%Ѩ|J/նtIouּ<n¯KZEİж-6X/ݴO^ܯ/cx}OE YOr4ÿ?^ȯW[zb* @[~ '>;*(=kluklJ[!GW@>K.K|3ɮBd)7[=6mMm\ן׍OZ7|g-v_NMz+7:ovv'EOG3>BlLUS(+ֳ@loN'%lpJlc=G$x~R2+3ޟ[VQDS[7~76> 9Qk uI~ζގx lfȯ"*(eFOQs5Uk^bzl4ǀ|Zz](%2i?VpUV6Xt|(۫CK E~޼9^beTnUb#_}\ֵb"""""""""""""""""""B5&] ^Ew%b&D-Ŀ";c!~k~a@cf1xYa}1Ve +7H2z$& +;ʭ˗숵ھVj[e_Ui5(0}Ms45ofCq^ijOzoU'N-ƥm'ʀIן> +r4`0O{+Ao^{̙ _g,VH 4=~>ߟGFܜdL@X@IG oꪻ`aK|oO)_(6(6U$öxy++z}v݁5f;̶ګ+eQcXPt6Wυ+õ_^jGRGo;%ߎ]2~Eu]u$Vp% q3W̫\*V*g*4=F { Z1n)Kv];ŸVԳ;iI#o$}l%`Ob??~LQՕ5*~鱱n>%@_zS#^&:8k[ˢ:JN}?f?^&7܌K+<%{ *nč}ȏ7jc'6]R_MWC];+#+#ڳ1F9ĤRXOCѶ7 +\uVM勤~[}w}nܾ[!}dZ V0X~r|dJz@4c)[1gvkea,,46_e3?ykbRA?m!n6zQT@N$>|?n-Ǐ k|}kI)NE=SojQǹ;ҁG훱%NR@|uWJXݼO3dvjM+˟ z~rK/r3*ZV6vXf%3%~WM]uqՔ~Io£5n!dXpI$lg03K=|:/JvFbY-}ϼg&Vja@P74p8x#o'R*I0b>fV~Z)|-8"*Uzm\)ɷ27]fI#{f,|I8׵b"""""""""""""""""""yz7v?St%lvmv:t46/@:;ַ=DDDDDDDDDDDDDOX]: DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDеb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""""""""""""""""""""s`_~ US݅{H޾׼':rKVe$P)-d1R4G ؈\-G&]E[σiյb"""""""""""""""""""""""""""""""""""""'7+;@UclUi:uRʼnfm_zk(|kgLgļm.վUaWG'?`r ꭳ#*y03@{͏kf2,MwEOѪa`?ẟy?,6aĶC>:Ld忨Pz]tHɚuy٘9+kNiHq_0zK G~ƣӆÿ.,V@:yLVܡ[Z:Sg}shKK~}w]u)L5cm!ov=HF6үn~Pu[<[u-flr40nLgMIWB`YcH#tvO>ײѓZ*uTİ%ԍDDDDDDDDDDDDDDDDDDDDDֵb"""""""""""""""""""""""""""""""""""""&;Ldk,`K1:$~̅2U-L?g0O**:PN:'C"-}D#\4=k^eihʽewD=D{:Oķ 6=X8|QeMRVt]]&q7WnSӨwSg#SuHq¡s k`x޾_s1(/6؏c6u9wvS~=-b1|¾{)_it7/rrh'uoMFe>@$VB|܃ 5AW`$'܈׵b"""""""""""""""""""""""""""""""""""""'1&)]Tf*iKn5窑)x8] 08O6mŵ1b <BJq2L'ZTw +T6H$~Lеb"""""""""""""""""""""""""""""""""""""$^_(gь:l{!ER>%C-B6Jϣ.:[ 77 e݌5S`uzfc5^n $#l(B15le x@Yz9moK=w *b<8rGLW_)uƝe4:zf,Tki-ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb"""""""""""""""""""""""""""""""""""""""""""""""""'۟b""'nDDDDDDDDDDDDDDDյb"""""""""""""""""""GfsظV2ggE;9PB}ƥPkMVk֟H}§sQZ>hqrmZQvVeYC* )`W=}WܖS:;{߈1*Zgcm}ž6o܁>?_^do>t ߏy4%gcցuem^{5Ffb::`e&ctF g 2"{ŽEcC4w6hFvޕI:Oc62S[ZJXWᆾE]tX>ml,ݔ855W N?|޺~QV 1O,no-Һ:M(u! AO>_]yL͖l|g +\Rj_v{L_e=캃XتZB$fuX( ?$5,VnWfhouduDv%FiFWn;ӭF$OwXWk>Z7v|xχ MM ][l +vɲˆ+Bu[_q5>7?bU]lYY=3_>ρ7X{Fi]a^uk'җ'c?Y|G_C;[kf4|lrf{{FA-8n- +䊬sJ6FgϿ<_o2V_,̾ _KWcQEJu: ׾{\>{U['A׼ʯ +ӤE%҂OM>%}>,`e9Pg]*w U!}T}y\fH4T]m|*v<~Sc3+7l@?OsFEᘌ}#tBl5kpUԊ*{v . ρ703_^`K+zbӁc+*46ZTkkIj/8 =`+RnubOtOrA/1~6/gȮäuoAI¿!Fw?*&V&_F k+ +:ݶ=oa5ʿSYQEX >JxF^c6fŊ]0=$2Ql+(e`v#`3}TR`I N=VHm=䥖VSr<1^]G;/0g]ڞF (RL#f[IHڃ%@ W؀<΂blP~ŀ23Le`e+;w,?-L?dd K(lJB`V ~zyw}Б9ܘL*;.Tv#3rπ>E I?7!򮿂kl\- iz:|=8Kk>u+ikoI(rxʂn!l,jױp<ޗu}Sޘ]o)۔ruTj\M_Y9y?6l7u#C'WeJv + $ܒ~³GֽHf5h<__QIW6_76-VQڶ M0>;__>-E&rօT[ +*$7o<X7-[zjW`}fmUYb~?ӦZ]׷,>zS[ ,b)K\ ~ʺςR?zv⹌9 f=aOWH +إt}5c߾3&.e|g-- M֣So_Yc1NhjV_c'Ʒɺ93_S.STݕ:-Mj둖9<;12O(Zm2=;!f 9yϢܩeE RS؃0^2 3ugRP9]\8xu gP;Vـ.}zu7x,:ԩO#U`WiFuYN͔~bG+Com1t~jުTX:ޏO 3skoWW9(v>fMM- ^.퍍6~@7 w/$>u&aHt>:913oUrlh1CLr#gFx0ĪEźBu:8W/nBOWv!Յ hl9G؃!هͪr2\qTu}nNs9tYp,B C42߷i2y^nYUC TX>H$񹭋d4c_^b5Y+P@;š_\^!5k֗!T3._I]|eAEdr6+!ZZ*5:|ޛu@iIo?s_%1N3<~>.|2o>ǭiӿqَ`z3湊x\GʷeWZbNs 8܋mVNB6DZ vL/ +NE⽮Qj]:OKMTJJڷE +YNǃSCl*џr逝@~_+O/ by ʊn'R:wեKUHO|YVYvܕ̠I@Nlj;T:g}E2HnX+^-.eyzyr\F;d+^!K؅fҰa!0vjԵ]Z{zhFr L# TxiWkZ6{3Oi~?aĕsnn66dfR2®Կ{(%+ցdX-rRo_*d}X?i-c-zRĵ*C#܅ +^0b]DB[$oR쏇§[}NbJZQUxUo7[AfCdw1ҷP\m΁w9Z)} ׿#a}J5Qo[6~G?vU+]QQveϹ>=6'+~F5l}LrU]ƉM2/,vx>LZ#Xʥ΀1^ED)*Tx:"c_GW=MY~dljο#}LvQb+`q7"""׵b"""""""""""""""""""yjYAG>=IhӨaz1<ϳ֖؀G֧GoH62qlD+jb +)Ǹ>G23"k +Ԣ Xod;?SAjD$I >HP OJ#`ρ@>^L%{l>FξoϾZp>O¢<k +:;¢z( !Fl=F:_t5z/^ֵjGs?(⥵ztso +jz >$oƵ,ގsԈmʾ׮Ȱ?BeUu#ʨyωZT4}JBJsԈIUsPVBYT}06M/]6\ bRN~ k-gPHT**I:'ܙ< +7~C>HШ+kC_>ի貃|5!<~^T嬨b1**F +] +@ <8U̮j+e@v6|y7l-u 7kV:VuTP=@>ORVjT#DE4Ҫ(`A}5< Kj/& 7kMAX?@&tJ; d[{̕TE +}(Ҩa2I1WС-}e j}bł4U_䓳"lDD׫ jE'쩾?-?lDDDеb"""""""""""""""""""y6|n|W=>_#m3!Ӯ="6Db$O> Ѐ݆ר4N-{ϕڶpAҞ32 +.Qghgs:z$ ={G<~`ɢb;5DJـ߶9ckHR '-JـgǨ7S[%@k4b|l5+0@'Or!O7;Z@KO>z=y_yZf :gjA3mOSvlo_}C^B`H=j~~PjApA'V +X} Uζt7g]a8mN#ȟY3^pAҞORV=qƦ#k>u?i/}z-}_S]k_J܅gOQؐt?A$ly r9!X= =DDDDDDDDDDDDDDDDDDDDDDDDDDѵb"""""""""""""""""""r5|&۬2XƍhoC>eb~S~ØqoEvݴ MA |},(kC)`yu|6Rf.Tr>GĘ ~RH7F4w7~#h&Fv26)M;|`>.=3oR 1B+Vqӳzy.E wߐ&3bݏEJ8Ե"[v;K3a_Z*XT#:ܲH$l0ccfreXjOں}55Xh[鳿q*ˉBޱ ѐos<7%EUәN_SUFzI|9n[,>7ZlM*`Im;ژsr +ۗYoEʡ;%$^ffN EJ6FmvbI>yQu8b=afjJi[,#|n4>?!i87oa:~&q(C~R}Beten6e>U܁K/cHϑZ]Z|o RAb.dHۭCj+?Z@u, +7G鹋NKj_>TBz.U~3/%^. qnƁ6 ĪPۊܨ㜷\]ڻl_FmvbSQFnmZe XG!T+.X4kAS)Eݘ(veocҒ>KSh&kۭQ o PKOzlou8mz. rf.mX̹eSL0߹3og[YZq|1V4!)BM߾(o\@#_18f־˰+֣魌ʳ6Aߍz3FF.vE)Y4T]%}]]v)y<|]mŹ%ztJf?cYi.s +TUK?+ Q I>kkgfHbJy>$)'˳~S^Hp6D8 \.2Z81mmgfH -Dx-ݿW׭hjMo{V]Jqp,kaN3|4cQey[!|>qmUU_eR,[a 򓰛kYorYCP+YMOԚطPH60xZ+55=~S]73ʫ(1ÅvBTS_P|2DDDDDDDDDDDDDDDDDDDDDDDDD@ҵb"""""""""""""""""""xz¥k R!fU@N +q 8AAWIv~_aωx\$P1v O뙫}z#QGk3V\zd( GU&ŨV\1@#GWiwt;:yL\N&k.WS~3l< w i謻 3uaxzyQʆ +Xy?Q<䲵VBJ@S5L<~>aVrjYAe>~ɇ+γվwױ_=w71dُYr4[ FG֌5r)~Qz ӕ,$]}+_Zؔ@O]~옲z5Ҷ7ezatNޏb>:eEYYA(>6T }77Xij@ݵߏy#se#1W{v/&ŶQ:fPJ=O5q^r+ cwm-Hmllg멭6$p?p|þ}VVTGϿ1˺[YPuN`|? \kvZXPzB#dI,\pzH#hl>&L)2! aq55* +Iy|>'hJ[޷7$k; +5D~oωxvdzIꍀGpήUK(!X޼9|~>w_Z~64t}ǃ0Y`ZSB +O ~yqvd[Eɮpq*g^x'Ș^eW=Z*{n'vwN.҈a5DZ u6jر>I:""""""""""""""""""""""""" ӵb"""""""""""""""""""F y+hWQ]x?R35`=>'W'/> FU*3nEަAs>鲂ݷ]4Hԑ[fNUyj!٩¿bT>8QSW.[.謇Sw=Oz/)KdSjb7`۶^XHlF( Wsz%T3^ג<#+7Dc(+2uHޘdec} `_!"\j\{,`'C'n!|~dMkelYC)fHrLjSImhGIDO,ϰ[T2{}1dd׈n.7`<}h|q>u*ICkG~~N&ʭlZK|~)?f+oz+_'މP٩klqiR2!L߸ַ2fg>5Z°U?p_6w@fªZ &e:${I<ɯ՞ +Xx c6kd_}&TP v]{=}y3埔|j}?C%p@$^8ϔVT$kډrǑ2__^*(ǁ y,Ancc|'݉KTkd'C3$LrT@ l+{yhW%^E'ib0GЃ؈+SW]>t|.M5ۭwEm} j"_4bT)_k1@#29ijst"t2rV%eB~c+ ld6f&3*+9A LbSWʀO`=u'#9Xfa]֎kGc󯼓Եb"""""""""""""""""""Ecu|;w'| P׺}.ٜv?f9uvZ)vRZ. +od:$֌:Kd%ܲ*6 +vM_l{CXu'E_txx.kYA +.5} NWEW1S3".]C=xu3تݫ;dNH'xs<*|>Wla]lTv6A[י7;Zkl[N򁢡oggNJwL~Fqh,I na+ͷ0>eqy'ZԒlH=~F<5Ľ5`؋-*+*\x4Įiݕdb6MSaUd_s[| 5UưTiA|!JmZg68-b~_I%cՉM4]HwN_2*#+mjWV(Tj3|WaW}Mj~KZrlT)%) [? tHMGr8Z9֌#YfvW 1<[сe7[ap;lMd'߷P'c8ͳ2f-‚( I=C*{]цljq(UC!WDhui669\|!en\ԭءor_}79c[cɈz_B{CcSwV2F;VXƽ2; 7agV `#)ྉA35êXoQI/~k +n(ǬlsaV623{ԅ֭@KgjGꪱmPvA ITαry`(vy1F=g_`[pt~vHR7OS'ϗBCU=ܹs5v`#,# r ķ,R=Bm'@1#^5:\w}Wc3 8c:Ys[23Q-ZEe ~gcBNǜF`¾6㳮Ś԰/}9f6NS^Uj7lT־mx짵Qg>Qk"$3.nC_ɌLn.Ri?sB]UĿ!ZPI$GƏ㟏Lgm`yWIZʭ9 ƀ/؏d;-{ߓukХ%~řfO5_mfC {m=;3y.*me]^AR} voF;[5_my6i]\ +oZ>WW<¯` 6r2~G?mer9t^ ֜YJohrR*S\>C7QoBn` v5,pZx뫑}C{kDps^ ހA!1ſeY? pWtޚؒ:S| GjXOko@MV31\TW}5^T,$|~Gϙ+b۔7z:]%l r/W2|N&"We[!3tߓ@w֭O@rw#T?{W,|:j+KeZrv-~ݪc!N3#ғlsrW/kyZ}N'}ZMZ>vēյb"""""""""""""""""""BҾbݺN^OA2q[u okNsbFks8]u/r卟Cu=| a|6o0'wFE;X[[܎?1#'^Kd`ZQ{/ԏׂ平V\Ճ6>ط@S M/ꞛ::eaAM^1^-T@,OdʴܖMUY` U,B݉޷V9O^YRʘ RX0`O|8)T$gcٽ1{n"TԹ`=XFǟ3[jjc"3Ua':i"{CC'Kjb:+PL];\d^ڲ=P iNB>An +o\-0.UF ׍\o OֽOa79{;\3mc^ծހvc%Hޘ 0=/u%5""Q?D oGw)5Z7~|l@>u6l˨u^;T }j}Ǣ܋vrFWn:<}=5S"{:Ti)uW۶!E +I:l"Tſv[l_`P5=Y.zTvhCx`}2Vōa^_-ǰeIQ  3beɿLUlhүC/;no*F{|.ڮ`ALb7FUڃ50d+mZ[:Zޙu~$p H Xgcl&DlkJ}ksZfxm6<N"";P  b +ri\-v}aռǃx?#ڣSV{;Av0;vR=:/]MmRTo|gاK@>{0 e|3eX @6uּ8 gw;kE PW36F7웒>RN]a-=ʅ*yFf[N+V`gb>UQ$,4bަ.{U{,cc5%wƦ%H!@&iY3e]=b ȍ;.`o_1-W]\H:@QnLz_z%JkŹn_$`>t ד%11 *v%>LJUI-X޽mu^$VØmBJtJ%B Ϝ #o'c^?R(J +}\%Y7~!^ʬ*ڦ]G} ?٫-]^5MՂC@>F0fԦA8Si ::kӏ67we3Q@SLgeyU?צi݉ k-s7}s\,` 18,\SRD*'gudDDDDֵb"""""""""""""""""""|4Rʰ?kkՀ4Ǹ׍͌{`Yɘ/&e}`zO: o^7s!He]:2~_q`s8^G +32S%>O>j}׵b"""""""""""""""""""sdg-7IhNعecЖbbS1mqq֣]wKils9ʙlvJzUZKlU c@ԏ9=.d{]T-wBT>}Ǵ_vbqMԶXMi|VŢͼ +P5H'!@o5^Ewf +U I2:r]ŗ[+i؁`<ܼYl'^vLr9)񋔺5[#ǝ{xAsuOQ?_܉[7Rk,kEعz?:#X%Di YIN&Ҝ'@1-Fbe_r,еb"""""""""""""""""""E[2eYy +.+87'ҰdbjR3C=u$m'D'mQҽ7VgFRZֵq =Kn(]Sz + ևO5֋K5.7 +5~gScTK]z-bYv?-̶W]86Tb::d>@߱A:j_WVu 5l '̘,_]TK2l5-R캲ىjQ;ٿ3&(,ln@fg;>zj7ٗCؽ; 7ZCo=~DM^o7z,`w΀tQѵb""""""""""""""""""""""| +j}C ~~%9E nYC?qbfҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb"""""""""""""""""""j<|]hb!@b>q|"SVՒy|W݌5*{y_e l99oWSu 8B&DLOZXX!u؁lo̱5k /~Ko1r\ȹ\1^ߓ'7;"kF [Fn!a@[{t޵禎+:+; S&eYՋinI<: 3ѿ.7,\HAzc7 pb : "&kplt>L-9M 0 oZ]}&>3\;tnOj"'V'@g5Rg25Rq6"& ڸ^۪"cOw%W&e][ d:a?Y=}&X +vT2_$b"kUٓvV؀XI{\WEaA OmJ/XR̡ԑf|9M}Q`K)] MJʆ` ($N>\>  ղPB1#g7"a̫/aF[\9dYmHj~Rx,mL> PFfԵb"""""""""""""""""""sXƜd|]{h?㧞WJY`{S;Y򑥯Ϳq7xNBh {{vl`Wd% 1͢˝[{ZO Rw fo + Yu 5J|<񯹚ٸYuE"Jo}^&\.[7%E[c8PRkkcx}~ߏc+ձӔj,lTmZ ̸#-9ʃT +axBٞS'/UG %{יW) UKsٶ_eןy63ak]flc`!kQ;޿dyq3F%vW[z+ek`:2*䪡<>}N{NWP ;d W/UGtv +7OLXF ^iZv_jNs3UεY`Qt<~٣ֵgUtgΪ1y {*eB+vofyߐ^ZzBG{dCW_媤'@lTO$._g9fe`T6׳hMx>̜_}]}+:~OZ֒}/{Q`s;('ay{;dZ3Zަ'هX* 2(VAc`R=f;9~ZlV{gQҵgWt +@?]6܅Xg^QC =Iy&1a.9Z@Y}DhbH׷篙#_'V V[w qBE! uQaF4 :,==+ ]FS~cܐOk_M3HCմl/r66뜗wenTG2*bJN5f3~?n.H5 ,{,A'_HGҁ5՗]KGDܯ[9& 6I,+,oPdV\)`fz ײ * +kH6~|Eno սj5m%/,2,J R^Z˥o}ox7a_m% +#}o'#„;jv 47s#~:(U{Vk0b5%jgfTSؑ&6q9vTXR{.wFj&._ +Ŏ66OW175N X˵}g|W%* wA2)McUDНܕ;0ם khdEfzk$ UeB@kCfbu^.=X,|Bއ{I NC&5DVKLS'(= ?ge+}E +ܔ|M+y?VzO[3ڵ$;=99!ڿO;k[lջꋰ?S;]VFw5u)֏Ѽawt=fUԽbdJW.hBAwRk.2G`]*UPװ6~VN],|!ԗMĕ|;*jӽڕTgsg@yL-UMT1WbӱERϷy^LVY@.ߗlSzf+*%K}] +uuMRj^.C>ΨyK)ϱ+gۊP^o]'QqɢXhh{貃?5EVmiCbfTƽo7T~պJC,o^- ALhPI'2R=AQ߮Nm|?Y ]U꾖KhSdSoϟ>ۛ\)_ fU@4HUQ${r9Uo +{ldƵPyyu `e޵*=Ew9o7?)[ɿ&5ҴҶa^u, *36Ǿ3Gyc+Rz[,Uj@#o{IVs1*@J.~@>¯. ?o]X˶,Lq5SV*Q&4ޖf(2 IbN0(̘=eWR'X1$Cߏuϟ#gkiJht=Wi!w[kZ5֝|`gMXKj +):VΡ +$oMM./yyLCUuZӨ]|?yI9QJawm{i|k#,V 5Ô2,, +̭~O7ʽ~k$";pƬ3Ů*f,IbGm Xkx~PzW`|w}mɌ:5`uЮXo]'28?*t쿤nCW]N=(D|]փut=@myrc={x;ߓ9vH S۫oΆ<~sOlʼ2dk9vSUQL|^B+mh2D#A׸Q?S58Lܶ ++p ]a)ӻF`I:dʸvieC>;{[1#rzaчNCV8:y~rnE/f:؋eG[5XhiFǃωZ[Gr>O,y[)p~7ܚ׬N}Φ#^ٕgzKV(쭽'+}{O eۊ%S ߉1M+B*(U +?P}^2@ee:#c[9?3VRN]2(FCƶ=7aX_klG};6x2abdxְ@bMkZ| _rvf_ 0{!5o '3o?73qF+QZ@4?|5k*B~z԰uv0W{ѓUvN'dȔ/%nw5.lY|f|/grዃ7wfMXoz>eȯ#2UVUa0rG]*ƾ_Iu}{}GftQ|~p$r7L|ǯ]yPm4Ǐ:"hp\mܦ#m϶OJ ll^~6(>N4k!;|Gܦ6Uyj@Jzml&|,nCg*k@ZŽתGuohv%aBR%lm- N(ހ}Ll}W}X6u;ѯeLf+  ufoeQn@W*ԍ;$|\AUP+{|"Wϳ J]*X8npY޾oYfrݐ=v $kƀϹqxg9ud6UKV{7^lOQ}2w$9=aFPlkBqT?5/Y +Y'^ooqbvxa0]|i.C(WG{Tu#:6v + և)'bdW{VG.VB>ۛz6 M7Z󨈐fjȃogh5Mt Q*%q mG_om?YW2~eEH\U{, {]sO2TWJژZ]T1֏s>Vs[Uw:֨POA v}7r&:lKۨ:ݙ=@B6{|oظ:b]+,bN=Ɍܜp w ᙐ9&.<5&_p]J0b*)jP"E^@4\|(鍓uuϫ"d렯Z$}dߚQD=K==: vMk0`S1)e"7RY nVeZX  +2,V!Cσ2\M } UUff!UN<[UA5K +<+O5C⬟C*㊠b3ɻJJPC~6~3^ /_wH?6 4~$ +|W^;Tĝ߉3/Þ@%%Mn8PŔ@~T'C ͖zUք$:|RWgl"@0kX~$hhy)dm\="z;ljеb"""""""""""""""""""sn3/#5XZڧV'>50|9`[{1ֲ k_:#Hh?bg>0`llZI(ak 'Ϗ"8~';BPm=ExVSRV++jDI^u9.SNmi~e +ϒH#Zyt``Dd%kO_ᛶ $G\uˋeJ$C)P[?658?.MQ` f^f,X{w[>SG#JFCRP鯜A]n8ZPeТhss9*wr;5_yo>&DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@ѵb"""""""""""""""""""i?e啋%F܏MD>OSY8z%jAk 3y?2|\۫˭l*G:W;VÅ>7FƎ͊Z"(UPh<Ob|b'F؈ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb""""""""""""""""""""""$fewqlJVX*FS}H?,zev?{D.NqMBZ}N`$#cQn\GE*V)b[DZ@o>|$OEծշTgװ'OO5ŗ%_w ,ʧWʝm7+˽#sd5>oT #(z e;JǀA2DDH-+=Hs3D+X` SLFrV=-AӷuzhR잟Jչz]U[j +۾׍v^MR+` U;^XT+UOv~3q7^~z\3 .N~u6LɝԵκ%Tv#@59M1⽊jAoƧ 9,N*ĖVG*O$uD._~E5ACU (@ވ aͫuvlO&_:$3uulqfcgrwTYgdOL[q^>.M^'B;+{IEc|?"Ķ}dp lcΌȷ+kGk1 jl~~@$x2|?~6>+U8ȇeXlh o~Rb""""""""""""""$~G~-M5 լ'pݎ#^mmlqs-aRʖ(eߝ{}dD~7V~soɽ?I>Wf6^:fc)I]D?3k|VnI}nuGRt]UYx|y~γFE1,CV+gcl+29$@B>tk֞Թa}~~-C[u:: ]񯯉DDDDDDDDDDD@׵b"""""""""""""""""""r֛Uy@ ڍWtW-ׂQ`:hq8._jƩ*oH ZIN"'÷-|t 6JdyGO|9ˎ{4#'*B _ǃNDgJuXfo-Y`lj0?& #/?P/#yujRC^>l+Y.F~~W5^-Y!הDZo*f/抯/%V?*lXh[c n抯/%VdFJ:cZ?[J""""""""""""""'"~#r6{~XֺCkZk#{'9sI kq]+l>M(kvH<5>96&<` 9v-7&S߇{@Jq|M|RVPT?6?C1WEYb[\k]O`?ch[c n抯/%V?*lXh[c nt/EpvPt {еb"""""""""""""""""""@QݿqNJQHE[`ƾS#7- CZ5ټsKy8;sm[YVK\AuGS( +蓿_9v??{TcVJX?\u?o}"֡T4S&:5YdH~`r0OQt;lɰw>ȿ{9GK+`* ̺?f˸XQXZ?Xbe[{Sc t5Ih|<^U讒ص %&!nUWMƗe1SfzԪdr19bzR=av.66>ngxD +A:#~)LB,Ϻ\{}JҪ3:^f|n9kI:d}Os[ΎjoQ< kxcQI'2Ә^۽D{/y5rB䊫pwuFƦ/b5,tSWv +ycϙ 8iΥ#?c$"Cd[] UcWia۸61 +?_c&"'ɭc]WK7w=UK&DDDDDDDDDDѵb""""""""""""""""""""""GsXWjUkx(>h"p J)^9Q$$$$`#.Z2حeT+)ԓ :EJAl|JFOq1Bp ?""'7G+)z55sQ;(~v|}kN=H5kEٜžlDDDDDDDDDDDDDDDDDD9L_]e ˩)PPlv'5),dZ^9UT*<~&`@I:E`>"ydW`~DDf~Evf4V+ab +'_^\f+_qlZ鬞Ķmv] IŪTAGV?)v0$>A;@O""-e[-ʦ{.mmSdrf@YH[Z qn?M_ 9:wT{kC}|y?_i/5|j}>̬ mgS71kE +U@>dӵb""""""""""""""""""""""E0\ e Vꠏ#}V#cxעX 7u:x;_̴i1s+N*clMlVVPuz͸)8wS&L9ᚲE@D~Q{n`g? 95tDZ݃n*1#DDDDDDDDDDDDDDDDDDԵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb"""""""""""""""""""qdff=W^e- ]u섍{>(slL_&r`P{NkUUU}1_Kuf;mx0-k=°$Va-ySXߩ}K{l/]$y.4ޕG^Oz߰鯿mS_Wz+`YqO~r;ϋ9Bɑb;tP}'Op޲=!k +[z~@L_\rkԭʨ;|P( EUi-PBN|S@%j}0_>WO+C65${}|M6Xf'gIvU$ YA:3}ٗMYBSGwNe8ub̛R$ ?As ۜ&rזLRYV&B@=sfVESReWVX1uU;G>GGS[̞Su"#kLX;4~z~>>jgoǟEFZLA޵{M,I30Z,j?W`W=w'ةlJyǤdYukY֟w g-U#!VߢSfɫ-{6l{g]6e]}|'i[7!kQ~@6:9ܭv*콷'U4q.Jƭ 'xO&C3.EYwzgkS̅Ԁ%|Cl MҨjjVg'GD믹|7&9h +ݚ܂6+,o!Cv]ZNY[Z'z<9 +\{޻)o<}d|ʡ@:8؈W+ Z$Կƹ(KU~73]N;"Yb9!C0_W+uoj_["݃Uu1=/_׫޻~nmM+,[KZB7oM&[-ΪH_$aNC>SűvFԂ7y,/_uW ?7f<E]`[ǿ}d'%>o,x? S] +,mw#E[twVϢQއ뜾g5G.Wʶ0B}ԑH|Aq+2pY;1]VԷTf:s9?{K%,DztvRGKI7u/{YBŏ{78j]٪ֶJNf"""""""""""""ֵb"""""""""""""""""""W։FG)à^K j^ 'WR ګ.0%NWik״Ke>b| w^0`0P2htɳz.lgF䑕 ;˯)4uaS1)(lf# 9Z5G?g[FOȥ %Ai:'Ǎ >/jrW:_P/_@ԭpꮬ730lgŞ'_9Nrؗ u6؏c2:_c*W^±=A~!N^U;=`2#,/o)뭬Q+a!O@S&.(=.+P +^Da5yͶJErV+M̢==C0mTCe%u6+ {?mOWQ +f +@ q]=I' +?5aS7T@ Y-zq4Xz}4DC8gsgʥAm@ Qoa{)'+=oeZhl++V׷xkqxEJ 1f%4=d*Q2kp/(NzuC|IwqeIT3*+O~8ojȪ~U,([׸76*m|755z[A=ћy鶼F=ڋw&п2z`usGǬ}TO=P&䁲7#SF.gz./z~լGNDLYW.Օeu[{R + ={Qy?Yo:(ʋRub7/ZBTz(zDZM=A ?MM\ ~]cV)%kWވ!۷q&$XvL~& :;:a-V".uE3QIМ8<3V], *0$f}+`aae5ez`WݟRA'[$9G X=aP^2")fbtrxgS5gp]=7dlThy'{_W S;*֒.A>ʯxl[j-h_ts+j씒M떾ATno3 +g={u/ʤo_ּ+*qvd0B ;#7=;4YXg` +pIv4?Kvon?9uδ!N8Y!G! cd9r)7@)|~Hv5c + +M.M/EYGsk:?r]t=}2u a4urdU'm{uڼ{̙fo?F8@; b 4i..j(iVdaƇ7IψʷL3^_osEy%X =rb_Qz\ewu +eհz;׾Ll3+^#n6+cR۔YDk{\zkîkFgUnѶ>^b~Q<҉|ՊV{aGx +ŗg]*q\Ew[SM5ۢ˿>Au~/ţ3Ӎۍmh^[gU)'_a$x^nx|* +E5($/o׵b"""""""""""""""""""yGyy(Q4'R6ηy׷ODoyJRB(_I|'k3Bbem:Y:K*KFC D?=[wO X('C=LCǷ<}|Lx߿ϯZ:>lB +{4'Ed(_oOR[_pǢzu~( ^G_|Z+]ih϶\#{$~<{xa8ԙUBcl[^gObF1>5VZ$\j֣@Ez5StdWYR:xC/oj}-=U}5ҍhIFBAR5ԁ}ǢUu";G E8 +ʑ@dVbdVjt#EYC/ĤקQ_nֿ)R ZU +>-G؍(ES?xʩٕY ͒ZUzXC6YC0}<.=Hv€gp*Fee$lL\K۪cx=`|l}f05we7UG؝lF o=<.:0\E~36'ǩ + a=1iW*}yò^Unw~t6NϹ$ bZ:obFP}><vߟ3xcڕ^ lٚxZXP :?|4V[Edc 'עN{ 􈵎`4'f5ƩH"{|{i0i(=DDDDDDDDDDDDD@еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb"""""""""""""""""""CA=MT+%>fss7r:p1_.ҴC[og{$N?ŃfF3N[*c2 u~t1"y.blq1g,m*TU*'~:Iege`U6M䀾~;)7rmc S-Gr[ 鹋>W'[qq)͵D:c|IA>DDDMnC>2R`dM\-_Y Zw?Ǐ+#/\[k+>>{ܗy| ?q͟ɰu߫qTWS ;u)jzƧŴ=h{ AMlrf""""hYqxvCȻWmo^ϴυ{d]YtV(ߤ?3"܅c)wk)Fr4+$7?Ol. ,ln׺ G%""kQ3wF1C>fÜXIٚe 5gDL[iW[;7F󳳾|ުFW|zϱ>NO: o^7⫇yU{V_Ԭ[߶(;ϱ5sm*"7VU؍fDDDDҵb"""""""""""""""""""r֙fyI?3K>.K} K+32ICUKqkzd+_X,ZZb D0=OWׯmysG\<-|IuSE" +t;f ?m3\.eG!UtNL.\\{kO_RMN0gIC#wSg} w32._oSb7}}2zu׍u> -_i[.VFT 6{ZvXbr|uSA/9Z +f[MK]T +vKnEe|AVIſ(-Cب ׾y4388s-FN^5V;6";gx_0Ư+hƳlq>5C_IsyOČZ2M-7z+X]l}w5>(̿<+n C0O>Ӥ+\^#=1mEVYuA`ؓc_+mϹ͘jndr +뿠>F|F7..ql*:ϸ⸌N;9s[XUvC;[UWА6t4<uM*]i# @2?OzXC7c <i ?_'ĕħ/3єveMÂ>Wp lrw3ln>}PIם3Y:ܙ+j"5հ=ߏ"8R/ӘNI!P]V!.}Sg%U6A2)*WfцP}ȒfW^BRӓRQtvPw~2rr^"ث7ao` j}zpȼf' b{OY{d!W;I\.J+.ƾ@ ~z.ȵr ;@o?0߀xQnOmU@pD ?irxު+K(:;3g3ߗΎ4EX% YQk2wVv~%;bUa$'29~>,rcWQjnY~4V0l*|JjA]OՙDv>gE<_Ⱥ߸[1 A^f'$ʵ.[ZGM +Ɠ{8VF(K#y/5~rɶCrB?宿xOz^) R u<6KشI]HPb౱'SOݵԱEH=%uR36-qͿL^?GY+W8娾m^ { + 44}6'%ϑcmP|oH|Z3Lpzb~ +: #֌\jۢ;W==!w?yn~ Efפ t<|uӃ r>,┽cluVR˿7V+Zd;z۵*iz-'G`sʫ:ڑ2*ó@Y•>NoXY:d^>nqcdNW\yʸc:(,#*μb{1o0ɸӋV .bPOߍip)5ŚЏPUm[?9@Fǟ_ gKSg~!b3}Ώqj^:썫c~D9lo+T25YՖHarmʷE + 5u=Pli(e]kӋ}6rkpƾ_qK%>BWMcWuy["ZCmA%VTXW4/?sx; K%t~oC|;Ve rd)Z]үgjj _$[kRHtH>Fg/%4b`ӫ,퐁p}+3*Nue ,*Sj!Xy!ed~QF5-ҫ{`t>M:4bvqc}>̾ ua.S4Y PC{5tf˅J;{< hM[SSv#ݦfIVx߃d1:n_O&>X`X)n*՗gA҅ށ>}\kVZDZlSB1;:gه+Fogm(A[B:]l﹗6/㷑y,[`Y#@ZϮzo^ť^+uTkGj~o$hivf/̥1|ltFU$v!w3'Ǯ^xjNORsYz{ fGLb""ӵb"""""""""""""""""""Es?cskkJ2խΕR;j|7mNYmHlv5~zuOC]t׍O6-1/ϯz}UGOm>9#1d2kj21F! | ȷo62~LkE4nu +8߮_fŀT׭PR#=]-ȱE +-pChFϗ|7uom-q_WҰ} y@${sO\z񆲸Ȍɽ|>Wؙck\WU_mWO6n]YצaGzD7KvI&eb>Չ?WLPGgjTt5؀|f } 9#3LRڭJ+HRvA;{[jzsv{;kZֆOxoKnkNa2>ģ +ֹzΤh+z{.itv|~fkrrrc:?FYOGr:q2jj#u;Atǧ̙ 7ё{ZϏHOOly'{2#$#YM5?R° >x>oQM{D9?7翩 JLvb[lgl5IP~Z&m7uEƥ:<`|7uw؆jI]0S&:55ˎX}>H]?І6s |$Bڛ'eN ?"'xeVvY,#Gɉpܭ{zvVC 0ߐAI3 7$ /Rޫu+]C {_ ϐ[ְOφ5\T _X8)`vV޷$0j,73֔ZC8Mߓ#>ц9-7$|;X9ŧ@@Ņ]J$ rNl6jqEN?kһ=$mtI3Rjkedg +Tt5)b[V7&ik1嶳 GTZ]z؍m[;؃=`q逬3CXli#p88cIpU-N]Gf;;'Ʀn;Ardzva{>H͗Ub\,X„U+<i^ ~{$vb~g%)jU %Oo?<1ūnVVb^Ul[bk]P@@<,3xݙ=Vv%-Z޷6xJ}&bYRtK~ +uYϿjQv,6;1}O]1{EwvQI|r1 Ԅo#|Hd#2|KD{xE9JEȎU#6qX,@I>N<}bl^38r5zF';%x6i>yJl]-n6P#}ӈw`zB{ uVV{[ؒHoȯ*]C)6 59NE8[rGe @ uI#y\ޝUFrlUGgbT&aWZ uu|7V~AI %޴f{Kۮgz)qWnXhSR=y>&Ft :څYa{(䁡lf*lQ!mP4; ϟC哎jYi~]ϟY3iK:wPl^7*}>{M\^Ro^b5D$U x<ϼ%O7vwY +4 >Lٟg"" յb"""""""""""""""""""A]dr}c_E_Vt-_]ƺ U:g?)o??y^Gza-K݌WR}ƽo϶ ɳͶխ5 LH=UƗZ+~vNn#Ijzë'P6|ynFbܛqVe)j*WESe ȷ:Be=kkh-l >e?gvr9m̦JJS2[-fc؃y4n8|r]i=WgV.%a#Ϗ:Rvt6}P/ 4? k+188z0Asrf).#^+m5۰;_hkl|E~Ie~ɵOZ@o-'5bu{ Teb5-fǰu.@ּMoejWq/tz̧*Clx}FNWK/! TRLS8 ; ~g;פ#B[P0%t~[8ry|01N)BYX+oc^'5l&k'#(О|:ju+'Ez]ET/В=C|ww@tVlm5!%㛓"t`J'#Ubӷ{= v)QVV .~ٗ˻bȺܠZAmx׉g}6"cЖ~Qk޼#9o2qJJ5IZzz%ԕRt;M@#uGK[9._ĩz+nSP&lH'^|khulǡH"WNOБ[҃q̮_ 52T5#÷Ϸps-Bjr>:u `%WW[s.K}:` |ǯ@I}X7#0+a*ϱzerVaQ2SSRET}yx̞Jd'rQ$ikCؓ#0#1o{Ԯ8o@\.K5Qy}br„c2 ?Amv]A03[-WmFxFٜfF=nqmP=~_;?-mT& +U?E^O+d\mI` +{!j;KqGauˏRڇZۦΧ˕>{՗>'RUzVl¾:dL#La#-zKc(?56y,1rYMXa@G?i)Xz&є`{yȢ..*ޭ9[eSVnv<ӓgr{%SOT5RJږ,||o_!nsrU[Z9whjuӛו*1h)IZZ-MRںB[~Oؗ+CdW](,c;D̮)32"z+(X|5}|gh~&6>E"]~Tڰߍhy:(ֵb"""""""""""""""""""Gs\%UvKWڟ#fu5Xj`MX`ua9 &milzֶATiN\g%Tk?\ѫ%ǯ!a^eVUL?c͌YmXX}(T-ZggFk⟋U~NG ׷޻[!EƳ۪||mAIZ)\tZiUBh ~rj{PQ:;%X6:b5*7.c\y\{1Rmo[A$8tOɁU-MgpR{ +>8隋׻YOn>{cO} +p֛mĬUU(4;߼grܶt^ ;ٟq[G/޵5uҺռ c ~x>% fws1pc&S~Aد n}÷.K,MkJE*?%O3Y>郋2[5،{M ;}yC!^K"ͺZ2TG~fKqmޥl]e*K.SYmjMˣ& ~o#0eߕ,4RI;TGf$$ -j^YfB3#?=>'oc|?| H]X: nBe]ZRV]hl}5 Lc))ܿ,55ö#~ju0^|sK= *עU<dſ A|}cf7򧤡{v~5;j+pMt=3WnCGRR%ĥm{Pu雉g'[ևa͘Y8'%deYͭx:?9W^W[֏E;wV}Ƕ|-UePXH]zvy{x.NW$lv;?]v0r17թ> ):Fڮύ c>~(ے>U +V.Wwq&nkʽ«Ek Pog @":!֪;@Q}?#[q$ȦpgVوֺX{k5Σ;m|CcZF-#V^>_ڶ{{H;~zrMiܾw'r~] @ Z1USu6+uRxХtA[cǴ~"5Bӫη})oK)5X(AXgEpvGπW`xK%*  o[:98a.<*q{?+9LS"pojuA$<hӁ +TB׳2aRC>5ߋW-ՙLñ$o~0s9;_ + +@} BWYUVcG[{X`xfr-ן޽{'(Z-te`lye_#Inc~qKҵ3)mv =lIAiW;Q(UQPIo>DDDDO.XIoL#G)Jctb6T`9OT|+ب F:S`+d=?v5*q:aoq7.%e! A,$ 5ggbG~& +kUU $fU>t?iZA?g 5| lVjr߉ݪCX*W֎Ƽ}1U(յA ܞ? د`V*] +tOsn"|U +4O'ګQ]ib&!P/9" +_^t<xR;\ui 7B>@?PBRو Nh 4qȫ+e0T麂XֶɭG!}zz=׸>}|9rI4k}4Cyț1<{m~{)ڒ?aO­ޣfMM G>!4>=xٛ<2yK5V^>UaVvFA[N77֪דR'-%|*wp֡*;LGN-09ɦJk,w>֨~lwb|Lbҁ/ogb*= |<dY5eYխXX;oci8P) vWS~:wk?.>|{O8Z)JǪzzuOPbԍ"{,WږmzPó?0Yޕ%bX +dVkmYrxi[1CnR{GM\319JB]f:`p,aY`a_2LaZ16[]2c?rصءVGEPG'~}ǝMmmC#cG>>'SVvOũkjZ"@?i9|^V6>kb!f0G{ߍ}dٜKS}55_KAsGES,쬪)ǪGIȞsҚ9{*TYI/oZ5|Kng R+(ƒvT rԁ3lD +F|?Al>W#\OLWwY1{Vp:.;?Op|X>^;"͍̟[;7y<<틙v%V@n/I𤓿A!c7Yc^NǟNҐ Qب!w:1r9knCU;Ԫ[D~={nfF]YzcpqjMDecyo }:n {221VӋX A+ myF@(屪MQڻ d]yOIq +pFE7: +5}v{h{Sj3ZF5Z֥XXuԞ ++C][dT5R[kp;.wZþM^ +v]Mea=u5k+k;9@>mzUVB%J$gOM1jhbhvH ĝxC%kWHf9ߝxC^Ax K9=;:[ ;kLv+c#tOV_~z~&킷ӏԖ=C/Ϳ5<ũߔ±[쇮d>*{SM\TYNc+[sF5)rQJtPYlkvXBO _0#:ف#~ +u^g7Ppvu.P30D]6 ܏ޖҸ[kVk 59 r}3QJD=G#ȳg'g+oWDm*SnSN6DHkn uy߇A\W`wEv*}:Kh٫G;yWkԢ*ARHH~sZs0pJ-e\T–=[G͕3(y*[5fCh|WedoEVXaà-?_osE-tSerukWU2-Y[to ԃoSoU}l1_?VW!Eސ\fg*f`APGtrjr|?fK5N;߫Ĭh +ƔoGw7ksx˲ Ud\m"B1Jߟ>/%Fj؎>ò+5Q_ֿ1=_ۛԴ5Ucן|Mc]`dWz&M5a@lg~wʑXbFE<>M929Ui`lR5}D 6n7++|{ ߐNϑgd+=!-KrըAg93#%=#^EW,,!U`@ގ| 1rۛL}@^*gԺ&쭋8cr'3V]mk.fMep6Gc>r|Ff}Xn[AZ؅u鱲 G#[Bzfo:1b0mâį^̥l&xz9~M*$"`Q] (t=}[cW{.le?)$&%xUQmϓrI9 pg-?Ҭ,._}7f|~KiUMuAJw*vμf=~a7nl cϟiPڕ5u%}hAsm:?3. u1Z ,h縗)VSpbn3_#ˣ+8v,W_b;ݙ>@||![ ݑWv,(_D#w3hHG(oz_]5o`A;S?Yf/jVUZ=E=A͠ie>~/ R5V]9$X=4w}5ij_kk}Ug:#ǍΚCeq94f~%vieFIG d{w pBڱ闢( s8ܜ Er\XipKPv:=x5*-w׭.W/Rb'&B5uוeOz=X$kM+eʱk5oWٖ킖;: [B>~|NV?#lmKB_vcOuGPcYCdx^dxmɪU!l, ~͏y#8.͍U6qVYCd>sLdVZݐ2Di@oNOŻ +[)q#nr۸I62߰f,7[Z#a321i43*,x,웬MUVR ,w |W5n-uAڰԀDnnr3Wޟ`BaI ><7k\EjlNQҰ#K:~6NZe}in+ zb5i_™/ݑY7e6B:ëE*Xv^&nGJjeyXZ:|~P}"11FgUtH%m?MO5|7n~]Yl2X0F꾹%lg^f\6BRw*I}Ufqv_}inW>z<ϟdq-uU%+4H#Z>=?~+ֵ,7dݕ:޴?ipť S)`x'@:4^;|[iO\6۳+ 1L.#+{+)zTB0uv{ ߏ&b""ҵb"""""""""""""""""""a˯ t *,J$SձSu.le*t;Gމm"hRTP$nc_ۦL~_ -SMz͡t jAe.ze`6&X#,*X`YTB={}؈8e2GjA_؟ +DZ<[XJSǸ 0ZUdL""'Oc׎AbǨ }Lӵb"""""""""""""""""""Br)Cg]v̅ s[9.[BҊB5B;&ce:l;*v,(ʡ ;nU?c/'|6ēY`3ڊ"P6J|z-60[oIȟm|1uJJ +~BdΙl!UQ/(Nw?s?0&#y-E=Mu5#~;sTV?nKXECIGň7͸y半XlD@RH'_5Le]mEjlgvGo&s/gX>7bsG؛<;ݟO#f2iٓLX:܆5y9-!BixoCs`Qg8-VjE'^5'""""""""""""""""""""""""""""""""""""""""""յb"""""""""""""""""""jrTQu@zupUH?:Ôi_@o:~55nl9VVF -Fnulo_}O}{~9lW$ }Oʤo|ŨmHsSDDDDDDDDDĹ5P`]B:L>n """"""""""""""""""""""""""""""ֵb"""""""""""""""""""Be9-Cd2홽:>&lyqTԀ콉|.&K֟0wKCN잸,0q]z)e 5#-mN)Z5UQiʭ z9Xy׏iٿؿk/kϷ;zm d{j*4vF}C:bӝf=ɍi}cAǕ@,%xr\WՐ+H;_H>%L kA]%Z ~] 7ůoMG,!%Tm}S3|_-UlVU`ySSV?%WUrGM߃`& _[%mN?$K~, bBo|Q׽!u3hgG]jS@ >A?V b"=2ԚQ嘅Uߍ5 6*VM]:=6^f=S9FVml)(ԑ_i#1ێnk.[mkZ3PMجS`'Ϗ}hue@ /o>ۙ/-|j(tO;o'Q\ޫU ե6&m|_]UUE&jYmm#_c0%Tۖ*j Ч`|/nl ~3fϊ(QҪT׶;0ɾKhүSnY=++>|> >oƣ"AXtU(:I&n>?_"MV*6_P/Տ_+0_E[蛀~u?ًMKr.g07 ~uh^Y7?Ts*{+:f;#D9~ҥTC ՜#+vAߟ|n=H5ڃzo*P;Jm;!|؍{k[>{'J^Ŭ/ʬO]e:$.u6j)Kn`HDԿZ.4lxpI룠>}ܩUUvZȡAUoݔ:߃5pZ o}6b~:+ʬۑbV5e+bw;R[uUmƅSoB6 l_q>/?^Kkݚq?Md 3)VPWB>f׵b"""""""""""""""""""A<_kc]}K>4]m]k*XRǯl(Fo9SL`[K^]^P,c|:OOO,cPr>}~J~E[^w0K{}EfjwqƊX Ų)eu'O<o);Uk[.av~aZ5 @c_N1 qyx4[/u$^5u$~(2xjúţ!nyqs^_UFr&:k1;`z: =6]VM=K܂Ć;k"FpfoJ>s3g_X˅R/QJJ0P*)#Gs |݇rY7V%GfFrOrgN Omks :#-HX O󣗪1} U<^!? >K2m=uk5i oO8Ww 6m#;e+bcW|ǥMԹu%~o?h߅p3;_ek,-PGz>8Z +gc*: ~-~u,LkK1[- Lv>I$x9;\zټ~EVmX=Ղ"lNfF(]-Gm{*>~t19n QN5y1J@v!Δ`w&9m7V lxGg9TΧ\5ǴdVPӹlcև#Jy 2-(Ri*dt$}ע1hX]>Hyzed5\ +/. "۩J 45Mz{0y 3sȣ6V]JR>'c~*lF㒜.‚Rv~fb` #?Vr[aETOζ~DfF>Euꞃi:*=l Ag"r~)J+ۆϿ>JI 2F?;_P}x߷еb"""""""""""""""""""jq*|2 -v0,)GZ>76bkg!W2%e;V#A34NνO5FQ'FQ>j|dWHAl~"Q^6FE5uRXYxjHq}] Qw}bI;$I$͍FB5πd.CJ!TRIFͨ5FQj5DDDDDDDDDDDDDDDDDDDDDDDDDDѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb"""""""""""""""""""""""""""""""& SR誫I &zz׷o3k>A h镔V??OŴ.U3|o +XʬJ#ت,̀o OԵb"""""""""""""""""""""""""""""""&#m*feS*A#FD_Ӡ_ Tfrv6^ u^=[ + +42@Zv"""""""""""""$fN.uvbHsgm +`(} ψ;^zln\jنe>Hޤ*] +I֨ ;$(յb"""""""""""""""""""""""""""""""jrdՍka E}b<:#r |E|RjZ +[3}O.?5Y#8DDNϱֵb"""""""""""""""""""""""""""""""'jCǮ!rΛ`׃cWݫv`s"4|Ȭ0Kj=ʝW I#~ ܕkusԈ `\ U1 7}fli14%6UT^řFνμ|5CS\ zױ>=rg+ +XePX؜/^g[^^ulYzQ>U7~*aWrk)v銔iDzS%q~ 7f#e*:0߸n__Ț|YoK5vWI/okrk""i<|wcAlƳ%;2\X?IJ{{M|ouJ(Vv ϶W3MuK. vJU'@$:H ,X!!A +,:o#CgI1dWSjGR؂4DxKL9,NKŵB~|Ge<+0l#~cr3⌕-q1*@<$M)ƪ7eX/_Q@ +/Ԏ$ڸqAȦ-PU)K2`=Fr<&RbkS@T뿐>o3 l,c\՗DT,\]g9Zyj +X،::?M _)mbhzﲾ,UX R=\+-]f)m:_i1rx'Vva_Պ1@~>'ǪըwV G~; S)(L (J> M׵b"""""""""""""""""""""""""""""""&5F36BWb5()-/oTNŒթ>G~̟rōM(OوqTq{zY oU~kv4vL.h]n.ټt؍k'CvaWA϶ƉOmpݾ# "-wʾʊΗ [!H><,vka\*D{aZRJ|8/Av^nXoS/E@'`locۢj.{lU/r?6$F#%#ͰScz1VXxOGf^[3F?c#!ҜN|0|ͼW%=lGvZŊN_-g:ކp,̼c6GօdeOEBăfuQۓ'2ظڸuJ^n"̡v76>myXIqkjf*VY؃5cKWחb +\J }Sz9-ާZVk`>664wjѕeE b=lr~N""'+ ?^]l7tUGd SW@;'C['2Ho[3 g(,ƴ3xO'^uU[Z)j +;(>m >7ܛ J"*'!^X żyhB\RC8Ffך8b]wN^Bk-q`Q| ܒ QoaAm~+vև?r}b2A;5'qӣ1s~R{~^O~r?c`C]>W٫VzGަ nn-o},«2nyPufUɿ+;*+;JBX^mbеb"""""""""""""""""""""""""""""""a˫=ϊ8FzCЏ'?NLqU?3>&df>ö3:.1o$ҁ'CsO#k5nNUXmOE h ~&d"5F}Qb""AU%_.m+Xzc~^hTTXeMρC%_>8kՋvAZ!ww:Ƀ3ꚛW8.}On7_P kρ6FQDѵb"""""""""""""""""""""""""""""""cF,#]519>HDDDDDDDDDDDDDDDDDDDDҵb"""""""""""""""""""""""""""""""E|Q}nIcVkr~iARuv5oKP'KczKǏFG)!Vg[^6SYuW[-QCjn|.Sb %.[􆾌vGLDDDDDDDDDDDD-ZTǪ:vf*nnYa-vE۸.Sur}m˽k[ML!fYбYP=ƈgnSDDDDDDDDDDDDDDDDDDDDӵb"""""""""""""""""""""""""""""""'t6u>.`~lOk} jX1Qu~"""""""""""""""""""" Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb"""""""""""""""""""`Σu^쩽y>{OeӎuE$YOٟe&oZ~éo^O H le߮oՁ׾:s܆>5~&ݝUw:El) cMm}瓙Hmz{CS<.C*U}n̥-ďVv=j3!*);b`2 PMu;޼G":,7׶74̫*e 8`ɱ*~_238%.xH!v7M~:/5n4YtKo^nחUՋQՐ +}l{ek~W:-C`^;)p>w~s\ n 7Hχos^fEAE*6`7}䧯^4}?zf6|sY<\'dHU$D0줒vjMcgv-K:7GW̃"y$#L^{ݫvC*/~FfOF#[گSr/UY.Ͽ +=F7&U6U7KjҥI >2+`#^d|u:e5n^g=u>:5J]uC~čLӝ3jrYՁ_VOV^CZ%+ZUwP]{ꓱ׵b"""""""""""""""""""sX}G7,h;믡λo&UrX'\)qiX^>}njf7bQz H]1~Ru-w26#~& +PN>}Mr%SHuع'g=,jEU^ .:YjAYGZ53 ({Rns +VNN"oIWhs*s1FwQa0lSQյꮇ֥M/Wq~=uizi$o?Npim]T*r`@n5k%r+wz,f)^ghfOvVbW# cBt*i"Z >DzҎk +߃ҊkВ?-k6G9Z8}@@wCcS­Ε +A'OV=\T"_A g`ɼOCi,ANp(א>mOts؜7t~C1|0m):㚿 s6թgQj޳ܟ"uԂ;߶ZiuZUS%U~1lutN uVԎвCCCZ4F5nKozlqXb@ƫ-ا7nzƾõ(jGAmN?(8=-kQ_}b'QXz{uyMZq(JA> hqثqQX{ki5aQS]Ah<{?تa e^bolZڥ\Aq0cqظ]W_mv芛׶flz+UodvkFeEV>wF<& cT;,k|k@"f~* ++0! g\|F=5 OWSTZ9S존~cǍcὖUR#XvTf3XqxkQc+fS^[=GMֿ'?d*F?B+wҪZ +7ϰq5%>0ަM6 +J g7#>3}NGc8SSqOww>ϝ('PO1sl\{H)rjc7j ާ=4cf68 ߝMڹ H/mc*|)(Xn϶$3OϳW3"ljدa[8_MtOb }yUdI ]kڲKi.}8'ilGGw5|I'8 HVm_u5:p8XƥBmVk { c%aɏ;1Yu=o~}?rw8@Fvɢ&hߟ$>τkd[ҕ=K ):uv?6I?v&'K;^_P^Pc7VVv] {?_LDO u} gϝw}~w#l PTA.$C^M'SD^ܭUĮmgd@~(*O@Ow$%Izҵb"""""""""""""""""""A)o恻(8|oǸ^GhK^z~h|>gy;Ffź ` ^?Ýr_7׾w>|ZT`~HC[)Ȭ7iq |=1,QҺ,u̧珊0N;inm5ᏨUM ߏ>'ߊݕjO[={7IJ젰'~u4NZb{j>ݙPy6w^|}5#nGEff$7ρ;W|,}cR{;t!1>8eeB#)l^,,򄃧/H;ϞJ9D,{B~` '{^gWV@~؊.-(/8})Ϳ2L㬺ư! {4,[2.|, HtmJZ,,Wk*Fb (;]9 w~,<&j+cF {ߴ\gNUw *,S6 rPd[J@I+n`pkr+ =w${l^c\־G.wFmߏ?2,Nuʫ-CJ{6y'>{qsx4¦gtߍ`;vP&]Tac#U|}KrSZƮYw>7y\?^G3Ҭ{ +xkU7N\ϿDoIx/*A#D5:}G!N"L_SIDeGέ֭>υ|R +D~~O&S|auXFҺ1k<)v4>|:ɵm;`ż!Ac OYj9+R@%h51mh"1,l$ڬ}VIf@߲TMb;~czv$oƷ6l-6Zw薵ܕt*SU+9m.=ZG aEbw*Ar5xuI=v7K{x8 z}%Oom?Lګ2`| +\N=ǰ_vB}'C5W6'ZV4uј;ن`fibs8̫KY 2XHψ?us6~CbQAk8ܝ~73v?ndn֨W:>?,B{j +- 6`pd/3^McכZЈ;+%)53YoKx qٕhcea~.7^w3qwUc8~~5con_SYzvc+]΋:Ϲn_Y-X{e:W@4[ow?A*3 C.65N=aT9~G+,Ů=t 飯yeo̧w)5:)M 'Z~%-OޟN穠x{1Ye-o^=7U,x;џ2UCקnuW.5?b߷e`_N> 9.,s?f43xB v>~͞g8ƬYf;\R XQ_ kS| R\‡^U*| X#@DΜuئ5֊CZV1߱  TfN*wzmzt~qޛ^~F?p>|r7R_m%Mk,.:>w&9jkw#n>F5(y[+3r}JY [&7X@s63x||XXUlFjP}u ~xˎ?3hclI>ϜFq,`1/clW~@O|x Xv=0њ xC0IH,ѹ0D5WF|bt57ֶ# 2,_+Tp7_٩0hlԬ0k=K k_aIn;\(Vܒ__00_ +TPt'V\th|I<>'8|wҵ {^dGF.0ĩ:TU%t;{ ][ +~ octbnE=7PvnNP+Ɩc2TI;;7C?;m[JVj)d*un,0m8oB5$o}=ϸ&%߈T-hBw}Art?W(w*+umm~>J?Pw`OZf>~gȻ)+Qm&4S_rd[_逸VfŸBV5݊pހi-ٗf ُ&e^7X}32b>StN)~0[ zdLz`x!G"ERAephlԷ(B}e cvr{k_@~^ڱh ݍaO7{[OHjk*QIcׯb{>&'X:Xku!6䐣~]>*D"uD7nuk_]Cr9v]U#e*5+c%vgZ,(}[aX*jEC|c5>|M'_k5[mk{7iQcGTzR 6h4y?$Iy\Nb3mhFOO5fS.=~¸Rlڰ?1̹6? V>eebYRZ3*BlLgXz1DB]eDOV#UUE +{g p[{,-* i6}1|YԔFR(UQ=c|PܾuX^ۭPXď"mα32m=w zgר`2k6PP}}1JgRv|i#G%IcUՍZ55G=ceWpbJB݈t|!Qt6v [vBM.S(Q1͕>nKe#Ցb+[l;1^@RZ#&XW;#BTxn -:wPB@ #zƪH czm[k2q^?Wn~bOE+1RYN#+w;Zz]|a +'Ď mx~ġ[F*ŌD?5'#lMY+zW +Ga=fpES./<[c|d $$'Ɍ+& +ԴM~?]ͻpd1PИ9``龎ػ@u Gk*N]{?ڰ%2I\SgGIƭHm<5{pڌwzHzmPg +̍\%:UBdPA!v >.)6~cuȬH_<}R47--N:RBkۮx׏"pXe~1+o@@^ ~~ +b;폹?_}#[\5U*cL6xaᇱ'AR%TI!A>jd{VG6وԵb"""""""""""""""""""hyj_ ._Et>zG6_ެqYqߡSBiy߁Jg{z΀~ /ŏ[/{*n,K:)7K+hUʅݺzZ(t AA"z'R/}>#lڀӭO2Vkӂji{b  ؉·0=/տ3sTeXua#2DDDDD""&rňڜ}Ձ) ݚ\&8EZeuiv 9%2]5mbF) +ׂ@׼.SFBj_e6tȈ Ɠg~`{v}Dy>kkض?kTz}Ǐy!_Oj\yVbQz,G(|Vhrf5Yrugקw䉷ț-~(dء +,ʠ^y O +֩Ά~DDDMPc8JТ.߁>|l׫ue>G>qn٭IDDDODDAf=*Ȱ/nB}o|R*j[YOؕ$؈cq-fM LBmo}}M>CU]3Wu5>|/յb"""""""""""""""""""BmAqS{oWs v[yt= [-c]T_o}i qec; ( o^}}9/ eϴ?Ly+pĸ !袗*]/m) T|p^v(z: HɃs=M.=Cùb;#_?7n*n=B4(y>>G#\̰+!@QN$hLSeYmJJUFsi3WF6 mYAkW+/9]%b7C.~N~/ÙYn*OY]5:{\g ū&v+t!J@߿M,ߋN ,þ,Y%g#)1r˒rZbRkGjuZ#Xʥfq ܧm܍9Ms Ej<$oe~ڛmerqת0Ŗ{{o%Pv=ܞI[mrB[ER!H޽"x>K>-ΰ[RdzeU־/1rm+ F +lems_hƧ]h@XW_N‚[G\.)qAjQ'_R]f1r]2Y!1̧zm~_/*r䠩56Sߏ9y<">?[p,:4K ]@W}NrR{=]a;uo'_(:|%c:dh@,S`EfR[z)/c: khl''uis-.ft@εT٢#ؼUP2ldnlҭmY]f @joVmH`!a%-`鈓38uчcs5 d?c&lLV1_F'_є-xE<+jdѐ t E]Ⱥy^K?u{5kF ۷O- :b $ Gr=mt֮ʊ߬2bԥ$tr;yWNC%@ mp|0,Ul 7w5,䱸֭MGrʪuoy`F]|е`I6|ęN+# ZWC${Ci|Euw`d2A {6N^ +*2~%6Vl~;3~˽yLoo-+ kebN>R}ó?)9bz akX?sO)18PR7P:4`Ӑ*g_iΪulBe'D2R\K`X;kP5?72ƒ- LaK+%# r9<`2{-GljH^ZQOg܆_#W\˜֭569~qZ;ױ :=gt<[5ڤ;GH֏עtXzC]~B|Gr9X+ևm}fyRcez5Nk;TVgb?KeG]pdĴ^[f#^Gn{]O|޾3R-p.&I\ +T4$aMN/y̪A`6Ki񹭜X1gm|s&L,>j@#o`d  ~7abyv $~=}$_ĜeajY/Ƚe'{:1a9tdP-_vGdpK7y^u~=+h^<~]#}})1˦sZoM.eTklߟiֵb"""""""""""""""""""Cru>n6rG$+QV&'3epCeQssV:]XlljN3גnE{XmG=<-U7gP6jzh{G.{|o&5*+u ?蓽7R[+6=or ;(89 rz},O؉pc_x +1S`P4tT}ksSl<*Wmжizx=߂k:; +[,>\R-n]֎[~7( *ỞŻ\$|ƿOk&]Aob'f3%[7B?c[QeywԫhNu)s)n-ש-vv})]_3Ueo~M׊W(C7E^aܳ=iCt|:&̼KBJ*2IWVyy ~Tw}^< +S{6)VS<Ƿo36ouem||OY_RdpTur=cwmEި04h͍õv{ n"mz֪ kΦ.ђi' fp7}bAݷe~3-BSkf SM7<3k3q-jΝC8׶:x3vV>[Yޅ* +,ۨOIdYMV9g:y~Gdzdh,h{i|IȰekTB-gT>uY@ڈ,;)*%HW.uj* + +$os՜NC+5zt>YOS;Jrm,wzR_nru=AmkrsU3!eɐ5@sƮUt9U{!ZR|>g W]C7T*(45gy`:ܕ^."c!ξfK9G}Zֺ`TT(P~m#Z܆w;eku@+ha?M>KcT]@c${'??\X?QSk3NHʮ)sW:0=H$?G1dф]ðؖR|bI$3Y-HAcVȃ+*A'Ƚ7jjka?PG6=^E=.dzKEb~(@hw3]e]eYC7D)[~@:ȲRX( bb>g[^^ʬlM]6zcm:O]e.zDzL~#^͋ +n9]vDZv I߂7~_'dȰXro/k`v4tXk_@KK313v?<abxZ\jWb8aGD<UUc5]Pz) z8-_^FNEWoKE hWm?D vP=Ҽy]}!ۯ`z=27 f{*ZĒB߾Ʒʈk2[)kgos |I8۱\z\խ[nGAvy)8(_%QBSj9zWW _} -kȳB Jept`>ƫl.+륛݊7'~dx5/TA=~S?^C#!@e*I /ȳ׫* ӫic~||lTw{VT+1eb~m'̗E*'~ƄF]UE[Vј1R uO˜\=epIpMY{)Ѱ-Sտ Sn&.j3T6קP﮿orfA?]׶qSN@6|\5R[fcL^IqrdUAhw߉ʸV;*]*?|לT+!Tta]zb""׵b"""""""""""""""""""""yW}랢""j'bnWd+o޵_y)kk)Xe*锃3XCq`))R$omDD+1PF:eH۰Q6Hd?RNyZ8O JfA x>Mo,ラG};ukǼڞ^ů]::OQUiۢgP?RjX|kS;urN'̕ca/"S*[24ݢ.cXV z+ +ϴcQU=!O\/$l%P` |}1ӐvS#y0t٘>z'C2aTPѷ?#4|3DDD*xwɿbbb<͠w>DMlǡuT-i#ϟe|RvVDmXl#"'lZTx + 'f<,ʹ +R[:[Dl~""""""еb"""""""""""""""""""@W?'BU3WuN +GdK' % oު#LXryN +ꦪ{iZTG 1FbScGߍ|̾r=Ǫʿx:1_m߈˾5c%oeRm_cٻ ʚW.L XTYN{*u䳺!27DC}ϴޫ|6`^AnޏFeN+f6U(|VV;>#Y[岵;|k*:|ͬdX+ONk+7jڹ]è6-fΩj(|ϸig\|ǡ@C yߓoדb {z Z^v[,ͣZFb3hr`&VT(GF`#gc# ;*|fb]Q}o1$>t=$Yٸ50z32u+]f1ͫf=Wh@z_@׏ϓ9^D̛//8Td ߧrB4ǵӂ|!4y>O,rg֩FEȇ~0- :ٙ ܴ59g`@>f/?}5eoփhy߿/fF5vYev3{:+־.c\@;~ qsKǦm5{rY:):;$w|/,}[&yoi6ZԵ7o +z_}_ٜO"*ՠ{@Vt 3'fX&T{?}KakeAiPw^T}~Ȍ2ګ\P,LV3mZ]?)V kgu=M^FiZaىE葽an7 ưo+BXd=rĭH~ݴuR?WUͼ k[}] M?/3y+n* +(V 3A)g*:aM䵈kPҖ v9LM0 aVn;=? xߟMa_qa uu99/C$d~fNuN>2Z|;߶6܆391u+Z>6?;ߓc-n^^X@?]S_LiȻ!}7˷#׎P[&NDDDk#(#코 +Fǿ#"%e-KM_:ߓ'mΎNW ;;'[jo *-._Z+V4=--*-a[rShUuRUߙ%~w+J-"͕jaz0 6 >|EnFVF?ZzhMxxҽ#uAO>ӡs.1*V2A uc=sчiM6m +N| ‡U!Q>d|FCZ][w }5~%lj^dA.{7bQ4OiWfSuzԽl4U5$=Z+ȞӸO=GB_ȣ%2E5BXOL4>ߜLr̊ڋ U >9HKqZw>=6x*溡ePy.d>|nZ}\h~mT;"|2 rɵhEZW+Ń(UuשONyr K7/JwWZ[o%H}MHO7rK}Ƽbsƾzn{3 lLټ7Qjzp« +9 +JHRo2R3=i2zδ'y-ѵb"""""""""""""""""""D__NUV=bXCCt|OpWmYXׄvK܂T:>iz&0'9)>hL*lZe* +Y_pϾSS8ߍBoԧ-˂XV``uY~Ϳ-ǎWVvAmN[φ+OzuKontOG~L?=V]]%З)r)bW$6?䪬U`ʯ%{.DlfgeM^)LcųIs%-k֡QCQ>Qf=~aֿ?3eզd'[{l'~t˾NNoܡUb#X$| nnIt@ҪVF;}f$ MOk+🹿_uw]~^wniͮU,ݼTkƵ0c|?^z]ΎP5<^'U`VY隊u⳱lS A^P'pUDֵ1S5]Qv]t'C~vJ(S-Nؑ"8 +\~%Z2NE![Ώ^#}*w } ҉i5=ʺՇ[;_`LrX-mN^D_~l\{d.I+GJ3PcَI'XVZOGG2OW,8u޽7dM]vavk[VMu_FOg 5X ]0*|Q!'.K,#{~|z]6]bJ5~}Yod->iq>f]/uMFEn)XzǍ=6GP7)! +*sc l}f6m>JTT}_y,/Wϯ^.f}O\ Egz>_A,R鏸}qXxy^kEJPurOkxZw ׮Ud@u){}ƺ/(XU"ͮ:>#ƻ.]_C7 kYQb%j P>5͋Iߩ}u@s?1O_(ޮPGOnr\uz?XN{^c232r[!GK7QWB:ϟ?OǽrWE= tg3[G2W!Ð"Yd=l-}g˸||rmDk RgF(4:}I,Z[Fv]IևOY ަte:2 q1Fb1@/ԯo.w< g2-0G} `p_fV onK(XYHmx>H>>x6=ja˶19LsFI, װ=v + 0y|p}1YuX'7*ff"e%lNb5p /zhUԁ[Pz4~?ų +²mvA$cldqgu>œo+1%&s= a<P6>z㹼NTظXt|5_oSױYLTm7RŰR GA Q5Áeⶳ*A y>Xy1UWjL72DDDӵb"""""""""""""""""""@#dbb2T¾:K;p@.;1/}8*y׶訠2,A}Ldr*}3P+ +V6ԷVoQ>c7nzy%f ޶j!;QOXE99)KeW`b zLGʶ/|f*ƺ=QUKNLM(5yWD]I#Φ!r}uO~rS氌 u$R48]m.ҕuP2ǫ.k|ZsuԹ xzZΕT~ /7yOGkF9RoP|e3nʢ²~^kZ ɬ6CxQaEP'DH9Y!*v+1iUUH>5!88߅/D2إpM=d% ,L]PO}|{ K{mYG\|oQWL|G6 ڲ:c5z~z:: L>{9?t)QFco`o3|$nvX#@6>ofWŶ^1zV\Տ :l'w|e.mޠeh0}"?|emVl0K[v4:)wԟm~~zrjVt-t;mˣ>Ҿ%ez6)N|ks_CYOJF_D8U=,wvw'%mDOI:݆hfNo +|_`O/-}w'^9 w(,U| }~(Y9UԫH^3}G=qucdT6m>@cNB`t|}g|_x?̖pW p쬍r2018C%hQ{z 'Gʝω9)UTzan'#GlN#jXv_Wek N؝}ǟ6N&mZz6r7n Aގ̜=T:jk7PǸy &p,uvuy my֧MTɺ@pl=;'_E}orZK!9d=Mu2 z{#{l~sظ69k-K1Xߥ]tI]NgY9^g|#V*E,u~ X_k׏y7TdʸW Ό5|GsX7Ws5k( +ޡOmv:~4hF_qY: +@,Pᷯ}k#s}zv˭:>g~c)v8e}7!qej z2)R m|yԋ⌱Jmqa-^_If6`l(tYmWlDT.=$^$üMeخ1F+w#so)~Fx֏Z}@[(@˶b |$o3ݗnƳ]Gm@#菨|ܸ4z zITu:{܏'8t !E!e]֛^<}5 zU[֙"e +ZR#zW c8]SEu>uyVӏIVU1K:=k6]V@ mK?yלʐJ9cˡly|2-(d'eY+wey8ecn\{W'p?Fux n-v_Yuv$7d COu5jX!#S?i]͵S kZ.K y kzetY]Q NHbSSkS2df _EMlYmܧ$HY6ɾv=neddk]]9/1cԢf,VSى~{rTˬmTU@?}c8Y?߽G Եb"""""""""""""""""""B[aݛՓkjƖ^ן|O/eё^u6 +ZEZKW$/a̛_!EUd>&_r*;"2hyAYYlزCU;88[6GizX>=lCJ사6LYg%Ehn?jV(WZx'e| }& m녈X]ghNS*o܋S +zcR֬k.PQ>)B:#O@oĵU ?P|9w:ċk1FX{DN밧mzoe՛uM4B7n-{hkԉ5 38omQ,.;Ƃ/OlnVܐoKs\MUpjG8K6'߇L|z\Ue/2}=6/#U{Rj'4]G Jo&Ǹ5c*mO^X^{)Pᵮi+BXA _gqn+O=>nճ~G $}mqr P)VA5<.4|IbU=U?][n]|t<-~^m/jzUU|T'g?i7rd"+]b@%H$c= +[;2)vGTH_>3 ,[:xvϏqyO˦y5kw!oml2_o;߉-gn 7Q|F%xuq]+o klg1qڵmC55Щz~`y RF>B\A/J +Nd볳fc,p2kw!r\rmWN*ue?(΀ߎS v +I]Ή~$&gfmܨ5cl,_Ik̬Gϴʼ^Zr) I: ߶ WU[X,Qb>YY[^rNזT.hKOřT@$sXGn^e,F ȏ⚷bٔMlQwK32:fisq8Ie=l_?#o}yteHۖWQՕ>S>X7_ӊ^4_[jB9MJ_g%=:m͇AtH.=n?'[`ّrXwuW w+NWUa*%ֶUqe: #GԚy ؒzF$>O#xVUbJ%PHe'v<}ԿܛW@$3Qv.=u\P*`t}kAo[=' Uv)b0dp?"&'aC'WaGUo]=o@}_%r9+*DN5 'X1dN/Ǯ^elkVzvX{(>t6Gx\*q TS{I'N;>wLd]mS 3)5 dw/ NGI688ވa[e{o_ͯqMPȦT¶GSC^E󮶡JꝶWb+Voubb@fM95a"get>T>N6xLr""" յb""""""""""""""""""""""&;C]YC)`1pqAZ)J;!Pҁ3DDDDF?颤o>VSY42+u>cJ|oz!Ho ܈qXwY=Lv5mM3p)j.0 ˱ڐ2SRЊ4h """ ֵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ׵b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +endstream endobj 248 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 81/Tabs/S/Type/Page>> endobj 249 0 obj <>stream +HWjW~L3s^@4̢68d#Dk۳X cV]:UjVno>57byvz׈f7mSڪ~)jV-[k !h#(Gذrj:h㓼'|K6_EjOMQa٢pgk~g5.L= kɭ))>hjկ[f!fb9hJ-bRMsa`\B;A(ct3.Zv?.ۡ$: ;cĿڞ\Bv]_2zsJLf8FŊ |7xo'A0x\*AXD 1˰` +E@ƹ`He?8s_0ێkqL|qQCxk{#[v"x !*UosV[FMbN[ws[ /r(E }? iD;9)Θ` ۅ7 ^s0ȇ$+"SϐO{]%/dJuhUf\s!PxAP"&E =!^ BQ"糪sl(Ho֠!ۼ)Vzxpڪ5AtF$(F\h@Ζ*cd.M (+hXrb'bvK#bi?;)%LjiBMvAo'8cc `|ݷ9(YY`b5,A/6E`wiԤ\ F}*[֥7w?oo˓Ա>f+l'`Dl]0[ +ܺ1P `P'):'$3$BgH\f) IK6]2AYS|z&i.thJ)X`yYe=sk)' +ڋ2Ty^UBksY9Ϗ3?yIQzcgsW ,a0R3)xTi rRkۈxeSm-yD`AkYa cɋ?"BthvԲlK"6YQ2/annx{688_hf߱eiV" h] 43Q\ꬋv"~y*'ZVJS1 Ptj'? [b]:y˧bY^{gIHx2Qf$̩V +\&i6? dwR6 '.DrtƤf@cӦ Xrj)EQMDhQ^\vhigwGte&ZRITϬ҇ROwuL͚W{y:a~!FhcQŒk?!h⌤0SH,oRjy +-xlv-%9"E?T6FN)v<)MQ|=sFOx%B+;}`(*Z1TnJŜ"j\+rf({jgD?|MOeDkd[8䚆DϣZH+<>u '6zr`Ql9sfɒF<2"x*C~3Ca<о~z9^z?Gc.xf>stream +0 +@&G +" 'R-3SVJs.Mtυun$ߙg Ӏ .d^F=Js Fe)vܟfqNr@)|lRzՈOϵf˦@/P*X-LN0t 6ѫLK t4qv@sa7N.9 +2O^wP(0 ۵xtj[7?KT~1ķ55Oja&Im+;KBD1t +J\Z;~&o @TP/rdn`n90.-0Uo @gWXяw-ɓC5na ]Fq)ժqYKuKЏr <]F+Ye [ST8`{zS{ranx. nJof 1 bNOWySH,}Y4! ]zzLmQXX_ ~H%}DT%P'LDa[a(|E4YAԘz5z]rJT!w'.w.gV}&?XPj=~Y Б9龡X*wS*iMFx+LM+y= XjbԕߍLae,8&`XhUYMPi~՛2 ]F #j>ㅵpҮHR6|YV n>0W/4(WU;<[ߟdN1w0sN3.,O^f7:WKj8e%+PrUPn/Ȃ_S6S3%h#67zviP.b H +KЖ6i-o[K47 u%_?lV|nY#]t0fr{Gpa.*WWB^6` L#gh6F#Rn1 eώ2æ%\kPN lw;z&rHLa%"d飊Y|q6g[1 *1!}V[f= +7TWma cJ+ֈ sX)1OTCZ!(V LM%Z~* +Bg{P0;w}?zo[Ng/NMEq>e?twmb**}æ,N-q#wy,3&.v} x+Zw0dm}1_mNkX[>Q:ӻY%-0d2ɂŧ/ 0'rw&B\ϾP mk&0iO@Ҽ-s`Rcf6V,^HX#fb,G-㊿ؿ{V2!ŧ5ىuhls1PnPS!Sbu55H<M뚜rcZJEVl&[vt- oP,pcߠ$P(L*^l ^SĠ_÷rRϐ^;L*ȟ84``B>.B\Xl?`(xo6QJ8ue=Wzz-$ + Rن)N?:Q,>&grɮmSx(іp ةkbEȿ'uZ'KzrWkq*p;~߈rޞCkKj=2H.0ϕ+l&BC/ `tTfQJ׋]AŦBU[LQ_0?O_#h;o0[U_R[7Z<$N 3AQ"mBYh/필Yyib{)jQ'˯?XVzzQrN"!~hzYc5>˿GG]pctR}j>oH ˲$ o܀=S94%|"+lD2hxd1И>@Ğ=.yC!ң_i)͐;DlA^OM" W2.(Iwټnw ?Ac-Pr܂}ӆݤH*<tQg2j&[Ƭ:e4(ͰejbѶÐXRZ}qe9qSH׾qѸ\ZΟ|cC¸EVCIYSDͣwf\IXyJ7@1X0C *Tʄ嫮ǠGTeQa|.?8~4 +p&o0҈fEE,4 -Qga e[#q&OȊKS/r<0nlit = M#H0xrf_D r4}i6[A&SlMeFبĬsՀL%ߞ$tB1{\>@"}QNoG0b7G(=2BAysv&[ vFϝPY0Ɠ nC;L%~{ofǟ*,=""_@׵[5c-1O6&}%=ka~;Nx/6Íd`@znjJqczS8+?ѡ5A"~~YHDW׋`Y 01 +]gBϫc+#y^0? LeTL*XMΚĎ~0\*7MfN2Ԕ'C]rzt[0Ȱ ős_H>k }C||2īHMnPR"&Z۱>K}")~kEִCȪE!:9sxߴK:hMڛM])bI )"OLE&e ^(*k8hi$m< $$~𴸋8B7e3߃[r߼uUp#4uzֽ]Oބf7  l uxYd +δV'ݯ{[Y:OH#kalU5`(PT3!M9us59FUYv}򽒾ع`bϣFSO;_8v6,P?~N#XRxff ZKO^h*f HXϙjWMl ޚjQ :p{[d6ܫ&6m gloiUo4?gI6 [*w7{[$.j1Fqo,{&-DCK+RVl30_p5 ̔9hp,KY[> #DUZMSi,k|_("_\g^E`ZݔYL QCQAs|ravP͂}`Ji?Jx47*PѺPrOuރʼ8dul<#.d"g{n7GZeQ?9a*I[ 0 1GlQ3XZF5s?,1'po>VY!oVpA{d\ ^˞YNîgX֬+&wߡvI͉1`RTL,ܰ'q}'HS'eO%nKNɔzt(TE{At٦+jO;X͍E]dZd׼˻6"#A8H ~fƛl29U/jhv?E[?M|&dojfjev#Rd͂iT 9CxGo`QNڳ$J \88Q9Í`TQKb`&+b`Zs̵S }+q ]Kv&d?y,JV +q!d\w'qM AOi܌2?@s*譖Eh{$ED]ICFa +?h0[nj[F׽U_ h ib.ׄh'{,SCOΆuѾ]!dAh&bŪ}۵H4t#3iнH_Y`V(ǀWX%7,d.(An05{De =M1$NIȭ" !*آg:ч–1b@l}X~sDj))AfB3D|gM/n鮹+cwaaHwJ9y[GK1XV +UA0GOGSAQe~]fyU,A|d$n#(-R'HiTʗ:*5MAiDCL56T8PWݖ9hmE уHM",(`[(>KEOʫB,eHNtް]O✅eF/|M.6r +`d>Ksps"% G' >l& D^i<( +L0ȃ\D_3̎5lPU^'M21I/G^8t1)Oݕ.I0<o*T*Z;"YU5 Dl +:^KR|~:#h͔< Mt A{61wd`BJ%Š+j%[J)/܊#G8ˁ g.-OQ2XdR.*vESr|PQE +Tw>iSЁ %9w]DžhD%9H"˰..U /* +a:Pe?V{e.9"+a(6-3q:Gcߓ@"}}RUcƕ`OB5mEQ7\[pi<vRځ\IBCw ;wQÉbω0i|WG_dr*)@0Ågu99qpМձp٢)GyKm."w,z׶V=aR~lM[A?!6 )x:gl G="x)`«![nA2bDQ!cα0Ɋnl`80z,e󽄏 +ū KC\9_6^36\s/l[1-ؼR$5D'blDWIuUzh{lsIwz/xFïo#9]sd/Pk=R%D^.MtL PN_ +Jg]R$w޵!^¤4UAZS2ɧ"M:9@ |5`7h|\R }U2Z Ã8rݻkPKMgH b:t*/"+y%`t+>3wn& i7;*K y3S#C$T%gzmN Gǚω:\Gk+vֵB6ؐ00%p[(jMAT-E"BDcK"q/ CpfʇSWķzP1: |*NP,{m ?ɯ$T&VMaĹ@R\ /Drg78hvxɀM94I˅gwM 8k8cW۝\a/5) RdAa_L;_ܖ=R޶t+ +22&)7 ҹ7I Unq #F $65aX)rߡULo}f3hr,t4\[>5!"Vɵۡ? :-^ +V5j<]I5e^*].^"#==:#VOrr5ԲpS<4g96;٬P'[3p?>@^~ 1Qi;sȝ'G@U޹46}5d'F dIl#Lw*,=j%]u%=|7͖CJYͰ~!4'G(CVM *u=1ZqL*N|X %nI:5mV{ЋuNv<P[r+#=.EkOmMx@RTG '`АVWn4:_n=`jXf,C&`#.oy( +oGܑe=ۉEjC +!Мi\ޝ J3CBoVGT|v +Q(YH,t$o3&zX8guc.5GJ5l`tEKuy)Lo^4F `~0/'Z4GYp4W"+Smqz&xID'6]Vn.H+ ;魸 ]=K䩾-Fy9nKR0g "{'~OL,dT^[!HbU=q1^}o,(&-<0gD./ǞMd]TcSsN{ RbAuH~Yn6eg.'_2<L{9$7@9xW rWvvG,y KMլM޶UM'F6.#}qڄg/OZqAz<,jOSTu誙 7/;Fw#M(t3|^ѶZՆ>mblΉٟ |ԑiҜ\6(E솅eTC:+ {lj5G4^ڒd3[[[K#f6^b[r)|v(ɤR4n-_ʼnJXބj/y ?2Z +r',!rY +ץk/Aw}U +lfq''ƌ t{XI:e'3inDhz\搧cq<7+ٽH>֪b0sỹ~͈ql]A_8KgPJXd7<`|$q6Jv_!ї&kN0A^V~ݵ};~g鎡lJb}[_FOy;C&ǷKAcX"5>Ĺh&gpsllP>]Yɨ)iҐa<\[ޠ?-M HޤU^7p_N{F7wpO/7xbh[n0yZ/H/BȊ^7mXHe/may?q LoEr)`s.h.GGaI7 އiqq)ꈲw9/ fBgk!]vȆ3)lJi=zmR%lLSD/iRn @*6 3/^%53 g#NKVeY 3vJ4JChP)5,r-@.crrcK"dPθ +zFB($[ϡw-rV)zbwj':vԪ/CӽVYQh-e@]l?9W}Jqj J*X6`(/ͺ%Q茷&)'5 6KJt~%&WGZ+q0s9\J<N]J|4z2$/z:ʵrؤƑZ%#e[$mXzV3@m W<m) S'k RtpL:';@:1#^Ѻ4e7>?CzQ=Ip;w`n?HB?]/BfsKA^&R?b~;@U"rV&wKX;Y')Ԟ˦Q{f]lg `l? k =ņG]! \qhST.5(@(tN3d!CÑUz*~ln_ Tt8V9 lts_' +ݞ +^qR/nһ[4ca{R23>"n{]A_gޮfM +˒RI%:O!M '9̥\5m;u# m8JiH8ԠZn=} KTfIj0D W3B΍l!7:(i2Tͽ +FqD&"aH #c!4&WyO"ڼ ]n6ػ 4& jrMW?Z-] ]mbds=ڨ`Y1c5 m42>=X20OՖIbx`E?#5XE:;cn)dUy\$L{!o/B339LP4='~#9|Q OX ZzYDiPNu n0?e_FcQV}MpR&ne,ggu.60\Ǟh;f";W&B&Qܬx*2q5zW0(1 /t6nYL f< u]>JUXTNv#n\}|!蔝yv.?SULon03Uu&=\ٹp}@ul_Ӫ \CLh_o5FX|$%qY4S Dޮ#6shJh(}sNC@k֝1VV\X׏bsr9 +wE]S ;6fP$ qa)сD=kJO#ne> 0*y婁-YNcSO|'h[k*;PR|>$n h ,A62ziRc2`qFjs9fQ1l{AlRvt3˃ &e*9Y L^[uUa0D ֥F a@W-3ÐB\3XL}_9d} +(m+C ] <&}%ear)!P,^~86H&R3(2GP\Ԛ;) 5՛64[ZG\7)T(ZN 9J{0슷j:]'6 ɰ| /ME{# ыNBke +. 鰛,PD Y9pC&\}D+y}}`z@ls2ny(3 +v"r+'Gl~!)5w;U^aЭA)xW,~1|)em&( +r{.3 jwUz>u0ͲE2]tlK?-X[YNƵIIewr\#8mXeη^8 [:s+wWC;3+0r,4oڦx'$%/>,d%d?V +Bg*s'76oU* +RJ`͛A|NĈ}!xθzrGKfnqq쀇Ԩz*#Q)s(/q*ɭߎz@t!gt?HsVIq|@ÍS:7|E+`nSw +Haٶ[~)BXM(3ݿ#m`E 1CKg3Q™;;or7bd|>RnX $\2y;G[zfXٍ)V3g7+7k38=؋e `^ܢ'AǼkc +F'?O>Qdo,67>gc%W{1ÿJVɞd/ڑ{"9-/W|cvXqZ %1W,3ŇY5OhaT&b# 040vZjno|0>}ON2h6؇pܵkʦmw@~T +BBCYK$ɘ&}xA*w1W@%2TntiՂB*hs~›pWëXBY9`yZzP @oU)is?;&6+ݙn-o 8̢o2 ㅒg"z +NgTĦR9֗X:";23zKuR͸37V=C8,E'Y^%>QPa|O$%f(9h,`Ђ-/1_ζLc$ "[ֲcj4jgљKEjiYzڲ[WR2p;o˞u ?N1B##@ȬHX.gAՉ1s𨪩$B؇WWsDgi;7onE)ar+*z1 hJj,";MU?'4qsYRvc)dB_.tiKR3Řwԗ E>N8zSj^1,b¸wW1r[Vt#[u"}lb=4SiU=U'Xat?A9י/ Y XĺHKOw4 8:LL \f֏ $d8 +Ks @U Wrq$pF_kɗG#s^DGX\ A:\3L>vOD,y]TŰ=ƿ4վ(V:H?׆*$fP2a][d^*"ϓfQ x!A\qpCepsX>1F@IY'3aH2N!pQK4IݷH߳"@??&֏֤&{KU)821#/?*8^?v"[ lsvQeJ`/X$x,y24ITW+EU>p"ؐbEŎ$eS \ņ, +c_5_k;*DUjHnY.^0k4Z +Q<#Fn\(@|Z˻r=8l;pܸ RPj%EɎ GSm#YX[hOꞟ<^ +endstream endobj 251 0 obj <>/Filter/FlateDecode/Length 223>>stream +x]Ak0 :v⤗]Bn4pl%34QC}m7P{y<6_ n1@o0Nnf`I;0Vu]ʋplw@8^`7! [`s=qngo8"(D]>>I2cD݆ex]G N^idEUCHM_L} )%|;toD +endstream endobj 252 0 obj <> endobj 253 0 obj <>/CIDToGIDMap/Identity/DW 1000/FontDescriptor 252 0 R/Subtype/CIDFontType2/Type/Font/W[1[460]]>>]/Encoding/Identity-H/Subtype/Type0/ToUnicode 251 0 R/Type/Font>> endobj 254 0 obj <>/Filter/FlateDecode/Length 2928/Length1 4464>>stream +x}TTUw}oKDFMO %SfМDcA`Pk9y,fˣnezRC[JVlqjy,Ok2}$ٳ?{{_>7 Spu=b^\yq*DaiG늛KN3]Z~8r׼ " +mHI#~]gܻivoAڴ·,1@yJGU$hH3;[:yN`+ EP`ܮ[˾'S_)_>F#r%hY(dF Vi3Bľwpa.@ +0c &mWMQ{}I/H |*ʯ/+-Yd`x5Y5u4k)5G}D2(+WP0iF|C(kBA$ a +řP4UZMg[u~j% Bq!W;Bd|91:Y 'WZpj骃,Yv:,V _#~IJK*PmL՚dQp`<6C߬6nrk6lhסɴH<}R 8Ӗ) WWJ|xp\Kj4 fU54HxTZT'x+ZZ{l2,XkȰ éܪUcB( O+%!sR41H|•Hˈ udp"4ů'nc*CK1ŨCp֌'L%kbYUVz0ǔe8dP~l6-/Tg>uaZv0}PyJ +1V+?Ma;4!uwGi,`/y4咁˒q ddWJ>`\49{/ќ:V n]k~[qùu50v3 ƨR,ʛF9ׄ,3EdJC=V(嫌enj%t(z{ Ď^R!;X7[ocZ&ݯ .rJl/ mHa0'_ig6x + Ԑ\Bsi6TԻc1ffޝ|${̩9əe9o/=7en,+\{'\/gonf{Nf@j*VRrl^\3#&3RplRpӥd)hYRp"'fy/ʲl cv |2 +͔4"D0E]Uĥ դh0œ*%P\aI_Ͱ4n;DH݈opY,B -óiI3k?3xG-vesխ}2] jĹ   nDmޭъ8O}.~zUg v-MnRoB6kfWJg]\\:Blp-J{S9ƼYx-VOU8Rk=Wsw_FēЙ O"b.-aUl+~Þ`;X *uz!(<) -|(bAWSd4To +K&y-~mF`? !Fb&! K4{?<2bߠtYw/YJo$wzVG^7'h/b tAmh!c` e+d ),KIϓ0K&6ȉHfr"|>?Z@;9*C s7ݑ$#zLɍCwtz`(iVc-҃5l\Az7o[7"Dy{w/F~Њ ~IW(ĚD?c4#F4[\ܡZ2(*}kIY$k6p.EP~ǁ9`#AF)=>k+V{| +*枙:ԫ6ڢTzdpietok+O^$O +endstream endobj 255 0 obj <>/CIDToGIDMap/Identity/DW 1000/FontDescriptor 3360 0 R/Subtype/CIDFontType2/Type/Font/W[1[226 579 544 533 615 488 459 631 623 252 319 420 855 646 662 517 543 459 487 642 567 890 519 487 479 525 423 525 498 305 471 525 229 239 455 229 799 525 527 525 525 349 391 335 525 452 715 433 453 395 662 759 567 531 523 456 348 463 550 553 326 463 250 268 268 252 690 250 250 386 460 306 498 498 498 252 303 303 307 307 314 314 498 498 221 401]89[507 507 507 507 507 507 507 507 507 507 498 498 498 498 498 498 498 498 498 498 498 498 853 366 498 550 541 905]]>>]/Encoding/Identity-H/Subtype/Type0/ToUnicode 60 0 R/Type/Font>> endobj 256 0 obj <>/CIDToGIDMap/Identity/DW 1000/FontDescriptor 203 0 R/Subtype/CIDFontType2/Type/Font/W[1[713]]>>]/Encoding/Identity-H/Subtype/Type0/ToUnicode 204 0 R/Type/Font>> endobj 257 0 obj <>/CIDToGIDMap/Identity/DW 1000/FontDescriptor 209 0 R/Subtype/CIDFontType2/Type/Font/W[1[623]]>>]/Encoding/Identity-H/Subtype/Type0/ToUnicode 210 0 R/Type/Font>> endobj 258 0 obj <> endobj 259 0 obj <> endobj 260 0 obj <> endobj 261 0 obj <>stream +h{du~"JU0l1@]D аM^oG]o=\>{F8?kW׹[c_b˔de J+R@ٮ]J_SWJخ})hR (Ytu+Ů##IW͑"Ƴ(+R,(6c69/0Gn69a9(wT_1Gɮ뛺R(usn^QuQ"aHuERF(n- J_cWʘWJuu++u9bw##_9򥮛#wg9J*gk.uK]JZJ;W$sX߭9HW +eZF.=0MC7G_ 8}92NLb7G]puuҕ:@ +F-dpG;gvvb|$]]JaQR7G H͑:Ḿ=͑;JLt#ws܀n$cˮ+$UTvC.{gyQ%c[rJ+]h0㺱CWsW\W/tuuugq.JnF?77/_w߿~UN߼'ҥӗ?A$~[G:O?KN#&Hu;8ot̸rlU++zJ[~Nl[q +g{±kt#z'UnrDk +)n+d.nLtB7]D+RfKccuiz0rCa5ԃfw ,F6+ dyU2ʬ{Bvipuex#NҞ $:D5 (XNN"iQt(d[bhAHVrqM\%bL8+]8D=-]@PUuO. F!Ր_B_eXV|e*T&gr͸[К&<5&ȣ0}R^n --*"c"g:fs6M{!r]svig>vԫoMbI +PCr~xy2BAF+8|Y^F+$|5sM5sM5UO[fV -<_EwGD;V$hoPE7t +a84Ί*XU0\H8Vm4UF{E3یsEf'ЁhE ncta`M[y];F 1Pxͮ2},jʳx~d2ɜFJjP_l?^1ɞ QAHJra$"U]HSRv?C@x|C0YG3f+tVzsYa ]H/:f5cat$%0?[A#1#-Ysҵ~-&7Du%ڊyȊ3%$I8{YeBXT>ną>=`cڞ0VݐlR+PƑzH +s FsPXe7BfY$ȜY%Xf#bͦCtYwri&ԃ܏9u(w8zntɥ|2 ɛwz=on,{NLj<.dz0WĩP +Ф0{bKUƳui\4'Q[M.iȃ#^1} :-+iOuc1ZeP秝m&{s4L7[X4i4G}agsi<"1r惢j%B}OG%=bb +1/&'Zd:rQX2cx1 +HOBYT->li +|?h1qRAYdcdܢ-⊫>hV&:ВOqk8'B> Z(*2EF م&_ +UvGbӁQoXED=4nQZhäDrFs+Y*ڎfVs1 ªv䰍vC=(-dY,kF~U Bc2p>̗Ey($d,zgC;l^R;0=Iݎ.8a ԓjAA!> $vՈF9{rt'Xק-Mz񐔧 oic8:XwݻI:4һ*Cûg~;[b:GT*&fsMܒY7 +1, JBFz=gNN2oТImt"MGcS3EƝO4zSOƆw^&[轩楀dz!z +l|'a qVq|q8!ZbK!-4h'ކ|0p8ݣ|2_Ku C"nq F~ Q j/7Jĉ1dBJU6A/$e&??W .[ +zUD +ыȂD=FOt\|3qKa' Srbb b`޲=&?KP֑ݑM$ۺ>wԑi/()Cإ[rL;(Gʹ<.*QXŭrA6FhuVWFW՘xfЁt[2тx#ؑEdi7E%^uƌ2t[ +9ݴj` +>g=}͛op p~7]ly^Xj"y6ag#HV c3?I\A/43;PՐc((P@<I{5w&Gh[{1TL5{,2;Xt(` +PC!4d1'aCͤ[1E PrŴxSxJ:tHr{$FL#,txQt)5*z>gmI$PGbRьDsۈsTu~3U"N_WX_m@;{v +Kep9ldY ?1BD@c,h H>/_-rzP9i!`U%RϤram6/B !ʭM2LL?AE.B+Ki"b{jP'IK=Ȅ.2<|IdKhHюHYfRe&e͑2Yy(ؘaZ~yr;έ{mR wV%7x}5ی3͵ ~s?jnL+qmFc64 ×/Z i-RJdHk!+8Hd&BiA%g4BJ_q,x/RΒO65 +Us1cǏB&H+qW16j +n5F%<-*a&Wk- <D=nh#$ؘ6{{0cc0сn ljQjIVFmԖ>"͎k׸^N M$*5o,PqN 8{<؃zB0fNyb3ClfHufHKf==evd #Ǒ<ȑ:]ZBn>hS>[#+LAʖBF & K~7}1 +_(s,%k^ǘpkhڨZn)ŰRL֓O'/qf`|w_ls#t @]0?٘"3x9b&ĘY0w{ѳOd3)'h$p=%VbH&Z͈hy/e3A/~9M_eUg/#x FP"%7 ZSvo\Z֞~&{?7 T*PBQNVȩ) +gUXJ8P"'!xm#.T_T힢^~#"n#׭p7hGx{{xIXݥub!2D 4gmvNQzdOɞr;0m,?ŏAw4Ct-Az 4^G޵4vTS2G^L( ^wk rsW,hQ!K(TҶ m<#r +S~Y,^q_l6 $..ѬZ#dȞ0.zq$*Fr]R>3 + ] LO6+(ѕȝ\"=X7WсN\&\5B& rn\z 1Ǧyٴ +ڵJGS2G:9 +y8 +>spVݑkߑk%Z vi-wz$nDi! +ԇr7b=DRB7; %Dr3-7&`M(o0&$89BФ`NHsZVA14C8YQ;#^~{IRν{R޾-EmRbPxB-Qͽ|5eb}|>{7߼s,ӗ?ʧ=؏Z›)'73𣥦G0@5.7%.ƘNkHk,ɡi#4w `H<>b)nm\/k;Bk3лFDc4j} s{?`}%aǝب'>r ;zPs-{[uʪP~Y*e=m7-Kom} & i@:A{1hFC&O4M3G)ݾft_J~naLfwLl6Ւĉˋ<2ؤok&2aƤutp4,g&0p>ޮ}aM^t&aEeƟ?qD3+#`ߓEk<āYq)z9+3!LMٌ lYGj-"_c-vNBA xC:?@HVN鍬s4XѹOOɟBKўsJ!C_? C=2ږ/ϖrI {Ϟ6Kc +IE%@E%~ZrGm.3oIn淟sݤN+:0Iy^R߅TVtstRuhW6b>/8'#*hN⎴Bv)5S*Q+AҸ~v-{eo7]eThoO.;mQNY˦KN{O'D֜ +#竰n9e9+ zmR>k)|~1k3&[G6EԶ7/3FI^2)ڸ(KiEQ<6Y1ޤښ{嬭Ь\ .Na/I\q ƣgoI*wqꤲM%mVl> =[Lp$ks&k%TaMu^S*40K.t&f +K^} I;URQtFp89ɝ>)>@4O/l'^qz;_rBP%HII Oq9UlQ+&'&XH3I>N!XFZe'mH'9r 9li&b3H2ECd#1gæqi&+6iG~q$HfLNήduNXZ1b&\aQMAC.Yĭ]p8H)`xX5;=y=U&ߑ}5I6^o1.6҃=`*FyC^`43h_Vо}D`Nw[׾ba׆q*>I7fϷ rxmRL*_nM~C=b@VT]O^cެzI?~|^#Fxɽ?gGF +xVaC !|L~c֤/k>.? +k3՞-߄voyA Ѽ~}s*'iRKD mѶ̀Ѡ^./0𢡷,AoZ,-#hǾ4)^;`@~ǯr-7u_!uxmފ?gsїhhȭh]Ţ=XSSmGD[14PW#PYE!ѐD4 !DC 3XC4-FʰG +lOhQ&=֢hy&&[VĒUrJ{+v*Mګ|7I)lsDI^v>9{z{_??o}߾>{uzz)OwOt۷> 9[ g)2*P U;WJ]˕}\P Q8 }ܐLdP Y~n?5社p\tm8Wasa0[32dN\owavxa!!K: } + +UuP7hTrRMԈw?^$*|Mjۯ|. ~=(&vj6K \Z&tm(_W/޾x?w{[xר_p_Zϗ>߽f5/AY^mywpfdТ?8wr=A"=)Q'PRGu[(YIW7ZCU/mɥIj'"t *+$ХE۞6qfx4}r幥\TX" iW;r3gFx/vz|,wnn;ûz -[^l,]4ںu#lt *ѿ(iF9Kw2qFf +endstream endobj 262 0 obj <>stream +hYKoT7kVuQY,D:D*PF@Vi" + l%Q~xdr3 PU]e_QZ9m9"9e4ze( DB eRYYوw(o"Jpy0&C6AyPF'4g=*fX‘:To.F B.!DQƲfd!8!1Xb׀c:  1>r ڝs`b6A zbi@Ȉ3B'D" Šs.5`Υ_jJPz$dcm?#qϣGCOsb6v Ql'P&jzYiʢ4ATG_U'aޚ,JU6X&_5IfRGGwE2/mPuU-\52GQUQR#rN2_QmYnizwds0~d魃M^ON'J}>QE>Bsujr̈K?³9A*@ {gWa]`ۨE:PuoSƚc&nBa6q6l¯?:<=aܬaV)q  .ѳ'$=i_׍k҇p!\43k-eymB2aG6`j&2l 7InSŐ]3ht(+Qg!c#U`>9(_ #ϟ@|Q$ȭ1{ɧOlo%HlX\X)OlfW5;, ݂HX?a,|kG\Îd?4}vj* vT筪d5ٍ\ |qfbP멓+ 8hxH;QN=OċDŽ(؞a⅃J'4'Gt'!'g\'h'^^$^y >/|A /_ |AB5^*W +1ϯt˝c T˖P煼 +˛K}v?0JB~aUDZSo^qb`Lu]fr fO_7.w5{h݂+wnoIulw۝XÜݻudsK`_50>LI'[nߪP_[:B5P ՕMcX=rUoǏ<61ݝGozaG˺-nz$Y.\;wIv19.&vk,= oZ—*T0JIR:)A(e7w(J=`h +endstream endobj 263 0 obj <>stream +h޼YnGKIrpIlq6B Q (HCC -e_c` oGmw5 0~zds)ras%FVh;0fs/hp 1fe.UhU"(z"X7Bܱ4ㄔRq'CLe!rtH+8h~A*9j 38HAa`hod,#Y`o\4 q'[`I쀬"#~r3xpoO|?|9~;/'I9>7|r1Nn&ŃUvͲK~g1xf D'lΦL ϲ] cy6eE +ٌ"(}<~F?q {DAS⌊,Ũ>Xx+2F8-ǖ)/tZi}sVl˓坘MtU-~8x_MܞJDhqps)f\WWK5hg<D'*;mMCc:™?~9~=ʕ}y]ztvˇ? L|` xwnQ(󈗖KQ'wLT"pƸX +6*T=tv e#'p(RR)3 +RbwJѪ"H񌇖Rl .9UOK~B̮>)AţBqմwfa[ +Emnޫ[m'ϷOX/pOC8>^&d#"H$\xĴI1%h>GG'tV[`Ќs}>/L[Yjw]4o?UOWpg`z'vEd'wZ:6Ιo{ZiW٨,9cR4WЛ?*|k˗HKɌ5f\-bbCz[U/*/LELG 'Z-ѩIMաNN,uXj$zM]M*9+W7'sMw|eo0e*[5rd}[8'hYZݪLyi{KI]SjެJKAj/tGJ/Sn,T>(T"zl!;N|ͅqI}*MBC4lQ67K{e7ra ; uPޅoQ( <(_/=1}lYHo)z<ݹVJ|z||-^Ob\r +pʗo&Wgd2{Og MA*C5|5Rt)s\K ˥|5wȟf_~Y>stream +hYnGsN9%ۿ,DQHb7 dc B6 "+E< +$_̬;;;qkL(H[Aф6(y+Q2/Yyo|h +ƪ=Z)NfQR8PF') gt"V&YN*3d,c 2AYXXlD'@}h`}⑬l*9,xF#VٔP A9Tsg w<LI^yF r)A;x摠 n%r`:tf`"2%r)9bZVl >#G8e"{1S7f`81JL&z+S*/2pTQ~=SYcpZ-:Eò :1"* #LuP@N,qGeHOv3y]ܽ;'r˷2i57x~ܞ::=NN&7'\ReލJ]EuT=G4;gլ~ߢy(o;;\xy2N][Ð!tVCGɪQw.sQ~)r9_Dmdd;JX +endstream endobj 265 0 obj <>stream +hYnG5d rd,Q>Q(Ri1P@:90C)sMOob\!!%%#;M+Ј1?LЀ+-(7Mb|ɽٛWbr䋓[[ͪm\ +߸^z[hTYi5Brѻ@oΠ+5U;:F<>_k +TE8v %|8|z}QwcA|j[ DZ[;[DF?^t#آpr.ṃ5~mz(vl1̨A3 +vBenhhxYt}/Vnas%C o>EG/$E j{re^.7W#tb59kmLufgN8kVߣV(XyU}jڬkj=WsݰܞqRe(#lf&vdԹqܵ3N1)\F562oެGrFߨ6Pe8T6_A۶u~|b?N ^K<ɯM5[ŭpkuzn0a<z[+N<8;&~0{:p6)4E0C N jA3b#H,,4y, } }RJmX?Z^eWr^O%e/cOf@{xOM;9gz}e6lqHr\&$ eBrP\veGqQ\v,e=zڎ)7r"U{q"OºmxJjuQ.CXfzlde;o1%γ{g<9q<S[u3g>stream +hެYn|Hr%H;H$˂ +aȁ\R Q ++"goG-W5;;XF]uuUW3Z*FYƪ8ˀ+ ڠthrrURu"ZńymTZqR*ixb# X'=OUXЛRPQGcs݌Q:%@tɀ e Ge%L &Dl L61{c5$98Z6AYuhtqq$HC+6\ȴ49 +Vڊr@[j%:~8MlxN*g`E8!9G4A9O{y.Z9<MRjKAh(`!N2L_7VEsqB'a@NAl@ .=$HP9$p +IY#=X>11>+R~V"hb: +HbPV.:ߐ2>`khL/FMfӓwÿOgo< tJ> +h_-ic71eҘI*U)HkuziJ'Z@5Ziffb:y9 gCPITf$K{H\+qkZmm^jGvG̷/~?wy7?ǃ+Z>%5'=fW_gD}*^0WsVp,\NG/xh3MY=߷$Acq濪tSU ]lHZ{h`mZ4pD"Ǩ qAN59Q[)tpzX~w+ml0 >|M@_?L&竄pnm%[VnrUQZKP2[=Ǯ?cE->LYuC39hWg6e؇˒btUn ŕl.lk<[KgO-UZ!@ \H(~ϰ8_djN&'o0{й:vyvϙ٭qv.9Ne7keߵWYZb iZԬTb#iFr1g<#x&3biˊj%<m7aE &0A "LaE_g.`{DPa;nt%Rig&6cvz8咳PI._nu=T*"2WH>g<)Rŋ^8 qZΕ:u;H]E^k6*{_[J FI)9 t.+1IX0jSp`e|Bեz`ֻ5ay>=r "o%BрCnU-CuJkD:" :&ܠ>stream +hYng_S.A' Z݀e`^ I^P%F&ȑ+ (%z8$ÑD ArwUuW]5Ms3 &8(Pb i0ML{1kgWgXat/pO3~\y04gҜ}}ULvggQ5 0n8};Ll/vܳl+;ΚM~zvLsV]ObE sFEhit4Nn5rWBŪ4Ji=4&~gHV"ph6}[܎K8r<0?U$x;|S3qbOTT^\dϓ|yrvVG0{ٻo_0V\&+m:[S9sr+yXQ~gyf r3~G%qG^0bzG!{W7L$K<|DY1_Dʳ/65}I/_g?\vÅS7qEndIϙ kx| v%.5<^kۥ'eѦChթGTF=oŘyhߺV)>&Hҧ>E>e*N?R"-H Y%4ޑL^c ᨾaHz?wH͋R}zsi9=XrրKw[頡}]4}ӧ-uu^-e>/#`@3Gq損gsH9JW@:T]t'a-<*FIi=Y!ɴۚISV՝&P['AdA[ +ucANTytra8i_Mj@7hz.4m;Ʀ`@;W|*r^Һl]h[^o<eUԶ|Q)Ot7gջFđne˭JF MIu8ëxӽMwKajNv^ƕ~O``Ql ӕ4l՟6ۻv!O:&(႒fhCfQÙ,k!9_)m򜫾Խr}gVs+w5Hϻ^ %ێ'G?W4 qi~ }*>s7\1]Ne1еsc1OZ'캘NF7b>Mbz[dFQB|aFs3H.eilun.&7h:\GUACe9/.NFeq>nт@]#WKft>@A۔?{p1=Q9kvUY KCPf3O}--鳴nI%}iO'X?"֠qcH˓I G9l񌿈t<}#(Uߓ0Ou?`gTO?=ȕgNBgZP;wf݊E>}lA,{CքR" eqL덴9彡\o)}dvr;SOXisrSrӰ,VV*a&X'SJr`βn˿SkvȮ@0~}rͻ;p9ovrz +endstream endobj 268 0 obj <>stream +hZnG ga!Â8 D(Z!(Zdˤ!Q++-(nUp(rR@Ms)r!\ + #HXah$>  +(bX +$5xasF bNcPЍTJ{jBCBy|{S $qar)iF)0TVAgIisa6-)TDuhC@ - "46"XIHsD초3E%Qg"QQj"OTbZ Fq^4JDCDh. -, FxrfD$51$(pIKA +!%SWF]!I@SP~D@Hf$KGEBl2IIT9BFMj +dԎp R\F0th |:)sCgDH{MyuWqm?j7Kxl>yeOP]תQg )jq;ihP}QxtW]'ů֞aYqk()ɿT$c82[Ɖ>[O׻lq!KG)%Z#3$Vl1}@cPR6i|Vվs B鶖Qn>k=|WbL,eUIH;ӠiZlcl/7lbOSg`J0?/վ7KUf"ln1%fI +F> sM8ePQm8&< .V$+ŊL&Y2ddȒ#+FVAy,33rsRnUL0ǰ4֪ԡԪsɠN{tNCj0Z[<#i3SZqjK"]3pM22]5dbzuEca3!ϕUr2dgb(ʑ _oŞm&,><ʻhBS!AINM=kln9_2>nwQÚ뼁-WzJ*>a2%*:CAݕnMhI=V·Uw=asPL%o`SabT\X.,A E"rdr1cdȎ#;Fv3gdȞMhPg0i^(~eQϢ'^IAtWUP8\Q'~ҶCm/;%'0q$i=jxҫr3xSĔWM*SeĨS/]\3kSeX´24Fw|RnNOK%\ +Y[}CvV@amueOOET(Bu$2EIiO tkC yVNG nij|уcQwpBXW B)W{ +!rLʹjqQ*KXƖAĭv@P\T)9[>C:[g靖IFjU~wBY6`t~q/ +gG؆>!;Suvqv|z7~|mkdM5aŏ=qzW=voiSs--iy~2bѻ٠?53Q%蝝Եq%.A. u7rEq\Q\.W4>stream +h޼XnGO=, +9ٰC Ɏ`#D `{ A$R Gv{Sa`s!oG-IU -'JlW5U?Z+ +Vl]$!V$$p1%@Kh F>%j2C +T\G(w%(#?R5IDz^XˊI?-6H^^J0JS/I(ԋ:Q +.d" Gr/DbƟjPr &uÑڡٸMqqN @[h-ASlU(9bDڂG0GFQJE!q̇dJa6YK:lja@c:3y拨3_D(OYe#%9F uKtW<UްSDQRB)1 %y - &:bbH%HVTP<(KOC (> +?nSu$>eSAw/`}{ޢLfRc00Olp=Gb4w{{?}p \I0PmXgZp2:_ܽ'tk'B.]K[g>>W,4*u74z?ڏFޭzd}ӵ)f_ϔmf5j=^ݭ_{Fӑj?~pqy>=݂ߠoo|CoP5|>>BkoZur۝o|`y!>u^wY1*|EUVŘⴸj m^Ixʼ_ie׬M"PܸDY rv Ezڂ(dgijEOk8xL oMPkR.aͱ˖ۤI9M"M`h{%Y׹6,&<5kH9GvX^Iz1ח#zo5PwmNò&tP Bz޽1lYT +MwMKE0"XZ! eA, n8m*DZE0,õ 2\p#Í 72܈7[0a6l +QV0ۖYx];/JBd^ k tlW'ŰED5qbwkq^0/+Xɓ0oh <ݼ`4I@}09n6f[@/1g~Eu뉰oZRnUJ;;/ZDRkչWJwRIb-XR$5@Zp*G ǣ%m t52KA =`t W>ިl &zI$ L$nLͥZv-;CΡee2mV >UOi%9kе-kfi| Wj\rO7}K5L'ljhO w9ǒ6a.2'J́u5I#>u6r +>ZwR\4nPO4A<'E{1rn?Wwq a,۶_OEǷs-ww "hzc\SXG-Fa;1[A(]AژIs::CDJyJk9Dk9Dٓ&>jË1$&R%_ai2{ӚЖsk68z q5r2L7ӮkF][ƍ +endstream endobj 270 0 obj <>stream +hYn[N$`%@f`İ `y F"lb)RF%{|!oGm7_WwiI3e>*6RZ*!R .BYH(GIp"!x= AJIPRX6>i)-Ȳ`9+($'I'BfMR4 8ixLAD*&@-k$@@^bɥ5#!Ŵf|ka%5|5Q] +Ra#Gd#*^YViX"H!CIk1m#$.IaJk qNI cuFRH0C6q >|G &r6[PFKjEbFθsFW ia 蓆$&9Rs +)) +@X q)mHcwI>r}al:mk!F5B),kyS|x4s((Ef#p 9.&HO9$sY s$ +)7ߌ'ZgB)%hdrΖ 1ArM:m1_rCHO7oDc?O|r2=.|yo-FL'WB +w}U/nr?˹1~#9?M*Y=;\ ++\\ +89l q>&lo=ϩ7zzRMQ2BZR@B=5xy4[s,F0d?$|dG ɛХ~Ht퀕!+..LH[|/D7a +a3'5,ITW_PX-P-jVa;@ϔ/QŦ6y3U{ciu[_Gx4~1|)QuGU6UnT e.[ckzlMO.]<2܆8|:~l6`wp˓lQ4՛[5ݽ55ý5}5լcA\m +>^/vO?Xbmi dq* ߈a0e_c=UD<^<9c7~׻YrozK'=}[84ΆwNbÓI?A % +5*K)n~Ϳu7e/ee)}񷳟VyzW)ENT'WWWWXЭTpHB4`XǛXj4k~2iwݶk],̍I̮1vݯkq]UҨnԵtͣ=͹zͯ&ݡ[}'r +endstream endobj 271 0 obj <>stream +hZn$4|dH!JaËXA )Z&A, C&ŷ$UÑ!92w@ ꫪꦸ9`JS2O +Ba"X&8&x&-)-3e%iɑL;bFY$491f 1[r"sB ENH +E"2D fD:LZdRh9/Gc% GHDQсB2DH@ILޣ%RtQ +U4B3 ZeR$| +P]sH{͙􄨆9ٴdJpP%63ELIL xSĀPkMm(4 xsHr1hCCDA h,qYj/MBVEZ)bJ8a5"tYqf=N@P)@D$Q(BT a4h#/o &Kh[ Mhvɟ#,8~c >NH\0s:B_`F1k,}pNE{~nA=@vѻ]ֻF(t.4r$}|N?0&op][O8޻wt|\myotGBHHLJNIMILe,de,d$$Y&ed*ޣK0^^u`yp*ob3_\5;D-ULݚ fSW Ց|WK#(ד\ke= W')H~,!R9DT[T8-8*?6qV:юyWo8[f +ީ,PNOuJuNNNNNNNNud$$$&I7N"s`nM"ճ,5˩p. VP]r9)nU}qxaJ+ |D,a_`7vx Gȍ9LT˓aX_[(7e +-rqupMP?Uz8kIY.`L::_[Vy?:ݰ=d{:K-ٯsi +Kqپ{:HHHHvVHiO}mld$Br}ÿbdABwMsPyhstѦTD%-M%K~؋f;f̓l{bԗ^<5z{Zf A\+AX#66Q  ;*p/JJg,<~6+{#FV3;/Kg2n ZP,A"fDN9}v^ +(1Gz/@0z/mxބ0dw(VA>U`sy +endstream endobj 272 0 obj <>stream +hZn&/=hHW2ޅ DXJb$"2)Ȕ|%O{`y ?oIf ɱi9 Y]]?_UTR )ZFV(pC=^hXlQH*dVRX]J oE p +++.'BHx5*UAHkpJj1{ʆ,­w(r5XsڞۂВ<:tZkF +mP5JhKc#t PF#R^P27Q %a4Y +?F^1誵 5",ŒV&:Q, +Tw(Ł1p QANe: "!jpdJaQ$I2:AqBPڴpF#o ('^x-@%' H,JpB NӀ) rJQH*E +2٠}!B!"b%!r9BJ i$> EMRIRc)k#S-IH#;: )$/DΤdt@7R8?GP$YBGFR82[e:.,JfgbJɯӦTo{|0q$C߄GpЮ!~h`OvNn_]g/GXYon&~Y9Z FpwlY^(@2JNvZۂR("sF؉V3+7'voOzt>~=·OgyD8н Zs.1Up}lq[X:M[Vmσ[ȆהMh ~Aκʱ< y{,=[h˅w.mF6SW<Ո'Yq$I>0F?VG`M7/9ʒaq,kBzL[8ΐgj J>!⻍R} 8FF/MQZ1/UTp_8=Lzr1"I& Ä2! B(nQ̣.D`"2Qe! Yfɚ%kYfɆ%lHKH]l|~{w>GcdnH˦e{(2lW.:Hv-1ojF/ׁ݌6ag:uOf?:Jy94!1ȷ 2&]qʤ{1X: {omqlxoM;pU^y(Y3ON$6 ̤e,+: xҟexVӖ1'hnJ n J&$Pae ?oZ Uoz"x&=T.4}27˪= \ !iT\]J1>PMcI&$X6QY{O}%=7k`MO+őR|ߜn:J|ZNFpW1tz_4ږQA{>gwr4U[mݴACrdlvLqѹ].tO<Û2ONm v6V%[VgD, +<[hâ'f2n ?_Ixz, ^mzbn.qxxxxxxXcɞ%{Ygɞ%{Y[l6m_!B#\X.ǎCp|?k-LK2򇹗J@Iw?_X{Sj5XWKU%y׭*{\IyMʯjZ5@!䥦ngO7kj+Jk‘ti^MVҷ[{b{ 'BF`51*A-jn,̧j S3OI%FVBt-Ŵ>'Ko,^ %@9xhb@s:#i[>l$ޣ\o-bjzryw;p~d.Ɠ˫N*9\̯3PŪ(\C;jm2w:p}\_ׁZW%GYrdɑ%GYrL)B|2f_H9T$~˺wDz*tNH(gBTZmdF#!`BˍRmZ+29:( +endstream endobj 273 0 obj <>stream +hnq}=C EA,n^Q {DK%Z&& rd`|sB[1|{]UR('0FO+8%ax )Zg!AH -)P$ + m yҊPIОȫ k("#Q&" +XOcFqD<VQ$*Ah,D2R8f$@$ <-\ u[pZ*S)^4 +;RY Y%< "f @d]k)d5P?hMx GcA둲"'*E!JsJDI~s;#4fDt Aѡ.8f1P+d]E)I#0NiRDt}pT[BYjZ/*2*#%(".#&Fh?)G~$ @\F4%K2tDn%+7E hpD@D'baQ1%uCipKnr*JB@nr+2V"# +"-5-nZ h8 =l0EY{GZ0i=MPg筧mB(-FDz0wvћ7íhoE{yqV +>B9 +O;]8 T!Mݰ7'OIхŲ{:փsN4Lg.k34y0/%JirlJmLZ5"Wݠ68NP*C-/T:[Ty-1ΤV^NI~J6#S<t@,}r*I4L 6lIn(YЩ/jYnYٸ +Io&nYnxa$(uR2nȩ~`Y,͢4Ґ }~ֆ% > MRtl:3GIuCV(W1J혚˶ik;mV+^i_bS"ṱS"~2KܺBgrˡW hJN-gr_tnMj{J|Z܉V?/]D^v]13„8r!iωs]]fz$9P!^a"x~v |n Z!#(o:uaA0qDO n,/Xհ|`~ ,/X옲cʎ);.kA8dQdž _CIp\|"3zM)mnn SS~V2P~#xa]62qhy4F\F`.:Z:_fֳ + y ԕ+#90qkX!3f͗ks**kګjk檮k)kaʆ)lΔ S6~:|I˟( ?C݊\NdwP?t~3RY` @I;fP3D(Q|HEoW@W*Qy򣔕Ja.uGccO2f# +"ثuOsd7]l9QsBK%}INW#ܩTw*;Jp4(vYO?r)rg+_/{R-U"˝rD6T ;c'rhpaDT +Slr&uAEøE}zgTdna;Z򣸥-Sx~&Nj*x>stream +hXKoGsNGC-AD, Bc!l/v'!gE~ +$_Wwg3fwuW(/Byq߈ᄎ!^XOD0QHDSH*fBS pxI~-AxYIg Q)d۵Zf^P.aL:Sp@ lZln)R"(Ok TkF +mM^Ï֠IZgh :~#t:l`h :yn#JZ⑅:Rv[H.l0*fmMNC1 Kʓ*emN +}!Ƨ7:#Yn%,8d[,PT2ksIX0RX}`sTVJx֠#BG %: eFU$;INQY ᴥ5 l N8C T5%BEι].hP):rL&P6KNR Ee)02( +9P$E5( +&4_)A!)[["neR<broChz!,ai`~v~6=M_Le#7wӛqwl6IYm3_>O+O\p}p馹Mu0{{|~4Tbm&E6Y3 j-5twg/_hO +:ذe3tQIza k}rzW-Ӳlpv@$H0`-E9)F՛Oy[ 7+=0~W\L?װH @|oMȗ>x~TAp~榤=zy$Q%*﭅,Vnn mՆErC(㫒+]79Z6PjcW?pR oFݨм`â4t +R[ Y%kXI*U<:F]^G[9K)bJm|=(H )sey½T+2-ek.qBPdznGu=G\ϣG]YױdǒKv,T&󰾰;cMl+9ΠY|tG +kh9{U>R/9l8C`;!z%w4>u+!rbLã a lS`RV6ex?{s0y4 ;~XF{l +cqpwʩ;jbohVrKsryiNuiNsa?YvT}=g~W5j[WuҠ/{^l6B3soBbEYs_5 ,R~N͝jM/eozPK)U- ,,V/ʄ+G|ᅭ/*Nӳn7=/S^O\)Pn (?1i 7$n= +endstream endobj 275 0 obj <>stream +hnquIAG nE"pXXr!u# oIfV +bwj]55TA*! +R jD0xB)pBY|E +B@V:i:N[@<HD`XduB +8C6eJ"Y +:!VBӚ:T4@!F!@(Dq +׌'4( |ae@ +cUeVkl@ r%ZKFm(͂TB۬v#gP EN8 E.!P@M.Q^KF{Mqv@kVx#idih-o/.di-q ԃ P{0˻x)Fdx>'zO1 #dQȈ)ȈKI!(E +HV"R@P "@^G$@( % ]p kEȨ=ʈ^DC SAe$5HI$Cst@ɘ$hh dHk #~ຘEd$W_JqNw)^p/GaF2}팬涙5|4n1:M&쯇/{O*QJ_u +\nyuUV\]QU?V'PbUg󛫻~6uHp7>:6^)d +1,B\ˀc3 (b9k欙fκL䨰(y4\ܝ-tv@|fդE`QG1R]T՛95gF5?Yp7$(ߐ :J|u@Mw+4G4|F d)T1ɃI+ +U ]鱘MŻ8g1~#BGDwGtm4rrP?>⯏Igbd\yҬg +N&ܣ-N[uͫ-W=}[ 0gWtM  >3:=$^抿F9q_Nn >stream +hYnG=䒽/>I! 6X!6bA %Qahʦ\ȋ-(s{ 8SU5MR(pF(QBhЉt0Nhڠ`Dt+bGN8Pj2_H- ]VBYrNEZyC(:Wd$Yrh)4hkH>2(hD҆Bl" H7kAVP5 yDDzB@ yl! YK (8(NȜD[ڧם۳mmwp'Lȵ߷ֻWX{[{[{[ZBkmZc(c]۾vֻ݃#]^a#o}8A#j p, B`!% F֌Y3fdȚ5#F6l0adȆ #F69N lFrԾwgCۛeG[,1P_‹)7E/xekY>l [ogNoz~?~v=^ q)skAn#^hrta cխzx[%32ԀV|4'mpr|=l.n:4ᘶxR@ᛅw$F5`lwGٷk;li7rkwz/7ȼ8miVYr[zaaWF:q JS*+ѯpP7 h؛Y{ nk3KfSj{ p| >Fm^n%V4E)Nwg˯$Ӷs^q0o73T!YH8S, K}xNG?7 \?õ9}:ko"~CRzۤۦ! z ׽Z& #ڧ~&BVk=(z"jǘQ>»:˫!)~3qOZN;0t(OEL²33>-xexv-J^'isn^e9)fWXrWU88+pҚ4?z:is4hbC h'܇㯋V}m4Qd~^2#ˋcQ[X.ŵE VHO%W!BjҊm;]T(ѽ}1*]JV8cksiߟԇ* r6qQE +(4o"XӼ|QXOql2&jL߯1=N26uiߒ.q9ߩYȬIW㘄&1f} 7eͪh\O9tމ2ب#$0G3M̟x ^%s 3{He"S[fװF qLH}K BƟB:H/h[Z a䂵:Sٚ7^8rX'͟":fqb]g:uw>stream +hެXn7^{/lĕH?c N$I4m1H#Eyg]90Yr*H%PAj ;PQ@c +-' ,xChdRfA c!M(+'гfzl U$h)l,( >E4/y: +5 ++BY; E&;2)^t%=Qg+rɥQrKL.h5#FgqF I<ÀNstα:JDwl(IL}L6B`}H32hy#0(%CR8)oYND^(1/ g FϔH!HYQQ}drK6sɆuqpdȑ SĀb(̱D1JJ\\1F}abLWu, *JԎzgoHyVHT=k*jIYbfу@6l md- x.M#"lU +]|] wZ d#/A.ǽT/GN(Ͼ)OZo'FqZHx6c&z{%"ϰEpT^Q 8%8SpZs-@ +9Cn%C]0s."Ĝ|1to<'^e͘f=%]F\eLT(Ը65 +^IoӣMz:qn-dWj|XՄM$%MkRT&KfsMOQ*)=Epe|3] Nij|ajլC]Х+!~IWϫj\}$C-3#IcB5o ,Ni֧V ͪǘ<ՠYMwUj'גt|j0_LjOw(3*`ƚ8P?UQ5.)MLͣ֒QMh"D{=ݨ5*v}c؅ ͺjQPG-Km9ܧ7CGۃxg {bFפOhÑ⫘4^_.Op6>ƿ+ߩ >%V raEDžK!b6Cĭ8jg\Xbhe:?8Rφ mj}n +BnlfYO.?/tbntXZA`t1eV@@@@iɠ4{P7{tȎ>^ߜNɽŐNs/{f hhGM̔4Bcn|$$L>f!`:^2QM>s]8 wT XSRO󩨗855х@(%~\ٱaFjĜe4zz*ЪA=K|o;RZ@8O W|-^CgX;ФV v)VI+l[M5o`d)rl-oēF7Cdiˎ;ai5r]P˝qD^$!O:ZIMDPfI7m?7iߪsS +ڪ{Do؜^4D/DPS'Zռݱ!pOA{&tߪͩеHe,xldH_mןE.(m/m/=/۪/۪//͊//_(;a(CP49͡hEsfAhvaJ~:^Jw0n]*W6 +2e Q\աݳ#rI]LBIXelU&T) WxuXNMBVUh̙bSƵl|=lY&gizެ߅I +endstream endobj 278 0 obj <>stream +hXn[>@7W68$?@R4bh h[ +%Ök"}>H|q<&?7Cr(5)FY6d)bX9JYʱBP.ɢȪ!RRA +@p*p^EB̚ɫh\QGJ* 6ZQɚ -%=!EbHX 컉&AJYEmuI$H&aa_ +|Q,6$cpȰa2Ud_V:@ 6T8|fCks_!,P`# + 1e- 1@1;eHQ<,r:d68)WbZ9kD\Z$ );G!IG%J)"F_l$ 6Zb- )f)&ʚQ*Lb7xHEK@R^e kb +J5A=[ +& gd 6T.lT9Tq ^/MB#|L1$14 qOIp°8J0I* eI8@r;{C fjz4/pRYUD K=p[J_Q[vz.v7ʫWҐoʳgq#ʼnvǖ . \Mr+NZҭ$ݤǓ~E}Yޜ<ݭh{5QH]&b̈́)LXLPs&Ģi ף}|9 *p|BbR+]BP59T͡;g_V˷5X;c?J^9fc; bs"Sɀ^- +h1`\\!f!~{!n8#إQ[LJo۞\"cKn*Ac,#UE~7$AMɎrSpaO Nyv>OBd/}Jз {BrO "k{*2S(' #Y(zw{mnrrS)s,']“yGduOp%J3VnS}+Puu9Tp +UvzVgj檙c2Wi:mӆriZ?mĻ`Y>Cȏb~l䶖 +0 hu'[5g/Ęv>L-g"01͓+d"P6a +S>2ID]&ھ6˘fAH؃ky@Z⨳s'l5ĭ+4C^-Qs~z\J.kQrCQH1ZJ>e K85Tyrv@K*8׫to= ?` +endstream endobj 279 0 obj <>stream +hZnGg ,8 'p@ /b$f=qVKR2a$*+y}}ŷ$U3CgdKr믪5#3)dU1'ÄV(X&\@qxn34{LI`X$3ybF3˱0̒Na%1\Bx493/EL +H +$OX-lI&ɁILXIRz(㓨T V:<(5Z@8$:D4^#ˉOHDHnpp+Oí$>">4CE>С#ćg@!>: a%>83E>"pqxaA'Z$ +O,VDC +oГ1 y0`K8$ f* Ou`2I9C,s䘷gA**14$|EEv88# rD" ̥} 1`xH016Cffi^f/6GP[L€,6o 22JrwϞ Ƈ19(}?~Ӄq&9 y m4JQf7MNNc +LyƯޯӣl\_OOɓ>S9æLB#,|8:=~U+L4u6]<6&V#x\ni 9 9nev؄q{8z~1]\!Fb9g_X+~f!x<@bo.<.|6V!Ce͞Ӟ/Vqǯ拓kf  :ZoQ~$|;p-R`xj E-!= +ELZ + LOJNIMKB+!xDbG?[]-__\Mã9Sb?WӘԳ uKdvݸ&:q* Zn\O%WAukjq1^b&(X NwV&KY|}p%B6#LU"x),ܷ٠Df,UU<ɥug-tFKlʧt̵u|1e|Ocemʥ0 VDehi+WTu\@,𥯌iʕ2zloA ldW6oXIrd7w=g,<ɮ>H_oͳ([ggY&w)><~-o@PY/\yNi[ݮ-~N B H'{2@xYvIW̾{9GM9G1Xeg =Ɉ9H+ȇ V&˽!lnMnPqdm ԰Cwl"@/p}fy{s^ 6/z'DNs*zZOSd=ˎ^#rHf`G.{QqT^bAQވo_ށecC'GL;E3ls}#˜YWoԞOzЬ:lg5Ic +doHQHQj*7̛UؾMj0kp\Z d=*)!9ySY_ScE-Ls5u6,/m>91ʉZ|3NuPeCܑe3lޖJְ|UҴqۚi]C Z¸] '{b(UJx^_~z;7'Y4^z{a/YL!)_' $1PZǵްv58 8efڋFyi[*џ ;.Ο TUy!'_g=_}}8=\ɇwxЃUm\ڷ |;-2p +:5 \MnwdoOt$gנtM ~XKMmzYMM/<]j)>fÐ⥨M}K8S_^T.4~6s;nH"Vƍ4~l Z*(bHCs8|a (HlU}sBFkY2G& #gf0H7RT?.xւ&b'C5Wtj+:iv!T++ rոV/~)%og 7!q0H +endstream endobj 280 0 obj <>stream +hZN#n)s>*q ]Uɀd%(l `' lI"y e:է*>>9-DYʄH*\%3>\Sha#e^!c\@2PŚBM` MKRsi BN_eN1g$yl y,GG +d8Q i o3 ħzL02 ,he dޘl($ 2"@ +j{4@9HD m$uw* +@w]5AҸy $9ǹ0z=&$Ns4THy F8 AR!d`NzRU?X#u?ߏ6r +{,kl?oi\&,9y̓msS<% dL gw%4w8%5,5|$ +>_%p[~4 MPcԀǑ&#>BP5zj YVd;x7yvv3z;yߡߏh< ~?{,c|m \iؑ;VpTȶr ʒA'q!Sh)BS%U)L1 -""[1x@?q"dLAmUID!兣1K, jp8P3V} \^r4i +3][q+LWDhUt9'd3\,lTf}B1⺥_k0loya㣺g~[{j)r'mϲz%vb%bbRc[~ԛj3n! Զ̂o + +>OiCTϡ7K1T˜K M!F"" +"$=J"B#Nw9`O2J2MgSpp5domt42QP%!?) A\vxv|qpv8e\^苄%3C B1L.9H\0m> +\qӡyOk˔sM>7ҥͦCbSs:T]H PlpI\DjxL!0KbO=K>UOQx{w E;KF5@1DT5%L6|>stream +hnu;XY +Duv/%H-I>xJ +ǃZzAgf7o]k֐p;B$B]EuӮ/%DHM+Pl2a($%GxL.ͽW OƉ4fZ(G/pxED;CFQSp~6;Xcbڭ7G{k:#MVRO>~>'52s\7~Sg/~]I|?W)Lw/)#0oMԲ m)ϧ2zDͲ3mb6}>vVk jh2sM}r?0_\hd6ꮻe(# 0z>^slWهb6~!66fԦ[;eס0U@ `HX +nz{ { [ Wbb"c;$HYF2R裪6KQfB[3P8sl +mmtq J!9ގZTfJgɿؔތ1d ]IVpQnܣdKUnv[wR0xi-k +~'ʴD[(kdxyjW2()ofuBy^1p-<fzD~%9k>::| +dW1(ABi ^@mcŪD.F08Ø+:^:w:^:qqqrLl"e)HD&R6ME9uT8Z6XvxF=o~+<i@%*~@x~`PUOX $lDX;9ĖȬX!+6JwjO*;=qx;qVUm[ۓyy>Sr֒UQ*/>E9! nD} m!&GtWQinnՔLY92OZI\}UIĽNZ_-o +endstream endobj 282 0 obj <>stream +h޼Yn y~D< *lB](EA{#|JҮᐜᰅ3k9zmVko|. +*L -M|/+(,!g P 2ٓ2Y2^b(:&H(&5e5]ci(&&sg(9:Cb"d(/>'bE5`y(Wpȹw#PfRg(Hk@z\ $QdFb #I9>>2 +{Bn G  39‡g̃%C>FFҌ`#/6R"L6r htI@//FވQ +_*hǼZ1`2(m0% ĝ Z#Br / < @FC(̃ȹJe #2l$OdH|ΰ =eș@C66 +7BakXSQs9bT4,Q,P$-HX E;]g86$1F 1GG*q]Zmv|AFofO^~Y-gWgO̞^-&5o59mo4c/f|nep-q + EV>W+ߴ֮׭ݣhipߟ[li'6#/=_~:#.# +{$U^9X|Uq9_Y%WO>ÜDω +&u̫Z +77[kVR/Z{^]!߿t ͦX?vwdдM^m,C=R^NڢdҘ1YSc*U}z$&$)r\cFhn" +ōQןyCJPn%ɞ:p/~ߌG-^i+wdV]ںq)ϕ vPA2?O\- 6$pTF?v:/cbA-lqeM[m zvרOݢJ>+p]n^./ԇPqƬnf:: Ϟ->b~y^KM?.ϗ?%<j'#zԁf]dofi>l+bV'+ӓXw"D܉q׉}F-˴eZI@ZV]qp[' .AB.zj7?PoUމVǠkZQV#DΫu|.y NјLduauFT!HCd&(SvNQ4GEsQ4'ќDsI4'ќ:>k~k]rR)Uyy +hbomosd͏qZIRb"θ>/2ti$^=G9[ȓ)~577g[k#{;8ܚLNT!٭[MLdlCQ[~^t\vwpw znK~e) YjxvBSm),!K)hq9*Wr䋙 w}.C1.Qھ}GyˉK>^I#KJǺjYnцvpoj@TZu*a1f1{ɷ0axb|9tty'Ov/c6oWrR!G%T +endstream endobj 283 0 obj <>stream +h޼YKoG g]vF  ~? +;`Bl`R0$%9D$"?ŷdg3+dMwu=ztS.gpɔ_=k&aB$,.  + _ygJ $pЊF4ӖF Cu@Xf4O22&ǂ~ 2(  q!.1 A[*ZHIc4DߕcBYGHЊ`:)t8|pQHa];Apԡ]_(!h:0% 38a~k ա`ђ샘i@PJ1( +qLx f +iL{AU ^!`8[Kq<! ho9'JEq +(6 P G/X!A6(IQxAZT(Ńm&LÐ^x,`*RRFÔI VuTtx {Xfa1y*b't''*JJԫ˟S柕a|)'Ci,Q4y}Vf̽L˨RvJ=bfl]CfТN?5LrehN0rP=E=j!7W]ʌzQWPJ9XGF#*ewAQ -j/pW4xF'x W`G*iEzf0dQ3WbpC[ZPmȋRb0$%օY ?7X^=Ul:5tT)Ë(' ++*WR]ujOrY֙ȉm&\ֆg"K6YɒMld%,d&KY͒m*'U]^MY_mo6NfK&y=xfp^hx +M^j6_]7gWt:yz98;,'Wׂ?G79Ҹ +ְb],bVl{LG@=/ⶸ%|~<9̕["g,$`qG=0J\EZ!=g#V4vv<*'U~{{5k{t?75m =h5Q0*+QSd=O5t !LUHU"fE~ϭC>&O]b!l|lmPp[!zkAv~H\}z{5%Cza lvrjf=Ӛwm7na:+3g699+} )=\OġC\P YQy,zv1T7KFhvCF-ѫFə TΗƲIvX﹥,5EjےR:֤IrJәBzfU+:Nzyy;[^W7%;]q9[ݰ{Y{w\'r +fMrVn.@Q^>stream +hZKo g]{IQ{w/lu@KDX&)8>撿?B?ŷ$U 9␒Śz롴\0Τ)ߊ)LK1s", w τQ@ ΄&Pdªb“|Ʊ68 )-0%ق]pb@ O`GJeQ4L9P9/txCOW@+4h8qh@Dy j@hEiA&ՒiMРC :t@ :PZ43 +ΌD f<HfB@?UH=DA05Y{|lP$/09R=Nbj@Q\bNqb5P('2Iu@QgP!y(@C9=rށXaPH^A +:(]EtKzAk@@0F+m@y ;xGX$&ʴ,D}`Q FJHTd$9xT+!X  A` 0ˆAnX>~ݏwO׻/<ϟv_Ɨ`4}v6>|lgz,= |Ma6j4yF ;?~k}sOϳqv]35(&7,[u]?F@/lB{{d#z;y6a+FM +ׅ5ٟgC m!}>py}b [2W槷*CF~mc/X$WYݦJcSq1}[oTh44V-A c۞'Lpfl)v&{ˋM5M?a<.טR黴~+[V5شh`_W-l;MSez4tP*'T1UPX;) + m$<R+tɼq`ˮ:-!49BZÓˋAi^^6KoN&aPw}_uh޹$ +UG0J-RlJ|+a}iqhjZzY )xɊ͊1WkBok҆Uy`6-zׅj#ֺc={6Et/Ó) Ѻyx4=@swi%^-"DQB'&¥Q2IOJyp'<).>I(!ɿ@OiL1ˊFIz+U7A+2'F _Kl|tUqC.r`%^2hOF,PtKMLM(X{(A#DCY"[NX i5 xT49~mn8`sMXpm|JrvI.+i!BnB)x)`,DUXgٺp+/8XJ+K3%}.#/^ NsOuvBHf!Pxچf[n":5p紹$:"ےA!u-¦Vo;e#E#8,I"t^y ]4+EN힦5|B3"[')wwOYkgDE{ڕ._ְ/iHo0ڜ%Kuk_CRK԰8fqacyTR?qZ:$:;,r ?~j,o^<8Qʰ͸ŗ'pMP~O~NsjQQ D9bD0K!O UR¹{۸R#T|$/? +&`aiKӪ[Q\{QV6hy\X=9-Ú$O5>_M|n:MЯ_N6BZƔz< toUAXߋ7 ֕E{a³_ GYـSs=eOJK1ai‰Su:q~l VلK~ҷ | 4ub:$[2'44 h$$f@O_Yib;dJ*:/Ϩτe| s S~)kj`sN9s'ڥT-.UKIs).KRT->UO}.ilyISu$ݥ\Jo۸*bkr$mw +F 8w:],7NNoWͿ%/]"ZVZvj֫ڋziiws9=>*II\Y4VJ!ANoF m͖J]O 7ܾNNĖuN{Pb~,CqTɟz}w'W%pfY+r<'KˣŻ}:xaډ%'7_s޴u3]Y jh_ߗwg}hY#L] +Og#L'W<)OjQEzyֻ4/m~vsrT-\5'ZS^/=M)bⲵEm}HXvZLi:+WxGrugr04G%;HP~o6߭c3eyRύ؁@ŷחX w<ʮNk] v?uapAm~N\tjRrqZ`$ +endstream endobj 285 0 obj <>stream +hYn tHr>I@ Ba',9v@Q#Djɡ%!kE~ݒTWwM PSS]U]?_WpCʉ*v* 88 (s,G1<k'8a~>@)lҙJ{f +3a+8%L+)8@tXc +)a4q%0g s(W8?8WJh:1a;J6 ,8IuJ :R*"(Rj"ƧY0 Tp(/(U8S!/$^IP@2(tCP~t#zi˜ _ O"1@I3@oDrc(>LrmJGwJMd0\ZԀ_%T!iKH1I@hGXF^D) +£FJ9z*~O5P +Am(ch(P"Ljq0 +@Hg' +w +(>5) : +g?tg'(y=!r0J\ kgaz9Om*,gw9?<dR]q4(lAgO\ /ۅ<f̲\>""Fv$ +QvuP[>\/ks$5_L7Țˬ1#ʞIS +^fF/HݳݽM{<Χ91?-F299̧|Jf9\f( +–TTYr":JtKɯ^M&Gv8ݓ Edeq n;T- D8ߧݟFK+`vqv2*iD'$&%4J- *] s!F~[_<4.?ؿ+FE zs7N': +6Zh!P P3L~!ćCȓ8KOD&Hq:)xJ$$Y$Tm+~m=<d +upeD@&ĊbFykD42}YI +O*؀Eڰx2+"zC H]PTy{Aha*xz k;xq"WGfe>utα/Il.õL,{x,%wJ㧸E~Yl/kIH_%qX,w'bCDml:ꏇ wJNBlՊ]m8$)DKD# u(,?xTo%+ +`£ u-ĆazwqSzF.v?QcJfI[ʆ2eծӠdžV](jɡHov(YNf 8j> zCƜ +Ɯ:dzg CGh.!:LOU%65 +]6j01(6J1T!*P\Q1z=-rlko/SeL% -/S-e(SFuy㮢~ӥ+t_YT:5f:EV]Lө1)]LjLld$+M&K0ױvEz}}?f444UlWv86ΤJivVmfh"`7a/u(T8TAwr9;- {OI>S_+,(~AKBBEU#V,@nmZwB٨[#~ eo;¿io+KvG6M kڄ6Mm|6KdWV-sc/j' r|rv>Rw8`n6W{u9d~e6\ O=lKEӻm΃^wokc$ԯ5묾"ny?^*@ 4g Fgk +lt r3ײƹEc;xbn6eDsQ)HZBo2ipY'7 vai/<_M\I,F:d%1#/@JKH|aT#]=FB?;U~wz^w+Ōߕ.k%5G[SZf5jT:d-3tVw8}#:Gc(kO_!1yE}#>stream +hYKOGg_{dˈWC1H&eAR$Q`ׂƲkG/SrKR]=5;c[=A*!R Oo#"P&Q.N8G#^7*QDxJ4_)LbW)eDti tRƼPX@*KBL4B%$mś<O3ٺdUR (t<Y_$A<2#:HI$#TnO/L ):b`Z%,KF' *y,@'y E QPpJKN|LQ# 1! $( +W$pZ Cxi(8fau.LҁNHv sHQ9䒿.eUL6cޒ(Y{04f"ĽQ<&* +w#PI[@| #_rC"A*E]K^Jڤ-j +B-Rd_D6W).>SҋH 8Yx'?.ږ`X8+ +? ^~]'{`d{ȮRgZ9NǷ(ͼ#,Dm 6radr;y}yGWr!R׶L +*Za鼺hc:g P΁|"B2LՑdc6ҡկf %)QgETٯL煑[)g%k Syp7\ r\-߲d˒-K,>{GD]ݧk=bGՈ& ɝ|#F)&[Eɶп!f&ehbU'*tC6N3Rgsd_ ЂR '4]Cfq-bȫ2 ,O[f3bmӯ>;JMhiJ'memsXm+ZbXLK}?DӖF`Si +endstream endobj 287 0 obj <>stream +h޴XmoG>d'U+HI+*j@%1jbL_ST]<{gf_%)TJhKZxEFdXF@c/˓P V4" Z da# ++ㄵ< @ +PRM< +(0"BG+ -[Y0p-_ydZh V7>4q)|a>>| $$AΠ(YCd>c:g"4!3*Ղq$0Di^(cfHhEu1\d_Ge6̂>,$i*PODTAuVhm} B|Qhr)ԎBXn4 Z0UM  BA+,9"Z&f d) x&釡aTZ\_}c_1\pTч,#\l$C-`".#iehb4<I~c@P,1ii)~DM". z>8=M!Ґ@aG[`R'1LGcR8qO8x8q`DxK @<ˏhLYyT%(L@ҖLήWW%nL[-?WwKجzމ7]mbݼ۬y5{|y|!*tfW$}U mK;> +G k˒]~9` nj7g8v;UfPE߫h0BC8 /'t隷yCBvnvz3v̞m=lDm6 Zf\5mV{7(|ZD}>Wͫh]7Pc>l;0c'l";dolĽKK48;>VJ Tn:ReT-UN;rW3_P#Ro]>,U9k+rA~x?۽`^o~AM*Iԓ$Ѧ:_O;VqMayY<C$d R'Sew?UGU~Q9C'ǧ>stream +hޔXjG]ȏ AUW08$$"Ay,]w|JޒTUwnrsֵ3CރGGY(_ňB#9ERqը.np A t)^/]΢ PLv%*RS]%QGjufae JQ,rX6!E";$uGq@Vlea! i8z]cPt5"kĨkFB]cu5RŃY3X#W]cBEc QF%]cuK %bdBQFJiU#[G Q㈑-E,U&7[;߯zvzvq.q7" ӸKf3x +R'Kb0JvVMm%C[cJ5딏:sstN \>n-{utpS0(NA!ִQaσnd&1;/"VzM6,E@qVrc#L ,m>CL C,"0`γԅV .`KL +- .4gBe-uaؔ|SKK.ņ/c̀# a9- H"F,-h/; at$D0_]a[]@u_=usoVvw:Sp@̣c `js}aVδt"ii.v1 ~x{vF CN,O&M F#8bOSl<`? ;}|Iw!O>stream +hX]nE#pVbvRD`%xXލ9/[(yN H4v믾jwեV4Em6 R:N##([HxTR1֊" V KvV0^`*TsD$Q>ga  F jsX`-|.`͵Xe}.)cKPn1p1HI!8fHsLXd$XZ}Xd*%6(i,ҒUk",/̨UaE.VQ5E.A2#H/Dr+xQ9.X cT*gXf;%'9,YU2>*(QGQáA/:SJYYU ngY??߯g<晔gΆ0f&izzNC&&0ٻN9t'93:gF̔;qߵi`ε-@@;Ħģ׏/ߴ"t?BSO*ts#9For:)H;)N +Boe9bCSn!6>_S||vfIr|l}wt^ mȾZP܈6tDuٚ`^%,MOaEi7nf]7 `ޥ?>vpvݩWWm7S۫6r$؛?ys]9ҙ m\ٶD]l[ԟ+ۖ(m˔zg.G%GS=ZTGLx:;;_)ʑvO'o׫dz9Ə.'\Yi{GVhNǢyO?S:ށH~g-TqZ,Eq k^LbRYxn𼔟{xJ<3ς(v8X^^_L-~A@.{R\D{T'UUm?OW`-;lU= ,sҝSxRꭺ\=;e` UyyhgTOWOSo2ez;HhվNx1fv8~ՙ{A)V+ۯKw^Ûcr:YMVj6_MϦK5_d|2W7U1z{{qoDzG ǶĻoMRܓ~C1;#h5[mC"e-Uxfvv^Oz~#>R5uնh=OQ}:WST/_MITnV}Z!%SuW.;כ6| 23}>|󅥹ӆ2s!37B&l.!Lts~1Z^l|.@qㅷ9Ù?9lW>M[M]<\F{cVi3mh6B5_.2*L+b&ld  +endstream endobj 290 0 obj <>stream +h޼XKnG kor9d?%v`8,$ `(Z&BE7=rG.Z ,!*vUUOUM+LI.bZHhaAHXc )JZ`BIpPDJ0LT&$Z@9LX#e@,Nl8O`ËMבO†DF Pt\.5<Piׂ"1%-&32J( ** Oԧ`P4lOa†KI"* fn†Ed-RdBdpPe G@Qݨf|skpc@9L@]B1Ej6!J†X`#PέeFuDX|ID +Q7'AqEцhAk †FlC`0I8c)nH=l8 e=lx4L"Ac8hm>GG,QGxj5<Ɠ|5|<[?8>v^ŲXŤ8/FŪ@BYa7Q FBNq]:+iyGҐ";-%*o< +Jɽn=j \")%byq5 _Rz l׼+{=-emO\M}mbEvٞ,6gdA{xqɮ?>gR%r0r:Ot$dMK7=|#.E7Nϯf٣dt&KOr8@1H: qdznJ´tl.ɍc"5 ެ{jCA$ndyEgrO&D&8W8p𙨱&Mb1Z^W|4:0[;YA Ne¯S͘1#TVǚC'bsy< 0@8ߤCjIHWxuz˵oep-w\o26,ת4buTjm}Р;+^Bl5]n@~9$Giɧ%e )"LW,(&N }<O~׼?`Ag]zQh^5 +rg +Xa<39s-\R,ރo/u1qGA*_Vc{EP굊es{%w&d2]d*Tn/*3,r+P+ףkg%#h&d[@nU[C7sȚC6;$6ޔ8M59&dMޙ3MN͉Y͚mlf5۬f6kՑ=rr_^5Jp]nJoT*.~CR޵Y˂ NP ͋S HbƾrJQo#Ppw[Y2bt8}w ׸5\0нSC%NMs?lq됿e';Nv>K^M얟ʒtLW*OLÛfxSU@rۋ1Җ&EɺGTZM]rcrj #:fnNVpN4tiaTTme68Nix;>; 'oWl4?cK gӋ2a 7f;i)-aӪӪ3rMCR͛z2Pf3;f CNݺ߯\Ϫ +E}`J[%dULZ4}Ɏ@鈅*!l%fA¥!!׿bZ:OBj!: +C4[ʘ6[Oz}u˦D7R͔ZDݨ?N +endstream endobj 291 0 obj <>stream +hޤVj0=诖Xҕd @mlZ؏,_5K:}=Tf۽_+7p譹Dpe˕Rq![@TT)I2ف44H(M \Px9B()x$rPK^ +^V$R +=aBPaRRffz،<=RIitP(  Iq@Pl%2rå)is|(AHߒKAJk +!W#(alE˳|n k l0}r)/"_]ڷU{d|ħŨ̋Eע8;A\p#h$F'qy d!GbD{V_">ͭ:H<[2FFE*D2롨FD#0 Xը~J\?~c7xa:"MVZ]ڛ:2sk<̀5CTs:my%<;ҙv$n,IU?( Zv4u%Vn +6Bw1N|"6*!s=;kQ5x DOs@Mi~Pӡ67l +vU`Ps*z4(7E5f8ѿjla6"Yim`ʌڨG:Y߯ܚ]?JB2Xv!Mejj mQ%rE[k +endstream endobj 292 0 obj <> endobj 293 0 obj <> endobj 294 0 obj <> endobj 295 0 obj <> endobj 296 0 obj <> endobj 297 0 obj <> endobj 298 0 obj <> endobj 299 0 obj <>stream + + + + + 1 + AbleDocs Inc. + 2019-04-10T11:21:49-04:00 + 2019-04-09T14:20:45-04:00 + 2019-04-10T11:21:49-04:00 + application/pdf + + + 2 FOURIER SERIES + + + + + Rutgers University + + + uuid:09276b8a-d59f-4cf4-8864-5f4374dd132c + uuid:3d7929a3-4390-4553-bcb0-eaedbab5663e + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 300 0 obj <> endobj xref +0 3341 +0000000000 65535 f +0000334466 00000 n +0000334704 00000 n +0000339174 00000 n +0000387708 00000 n +0000387959 00000 n +0000392159 00000 n +0000546178 00000 n +0000546429 00000 n +0000550997 00000 n +0000736102 00000 n +0000736343 00000 n +0000740824 00000 n +0000886913 00000 n +0000887154 00000 n +0000890960 00000 n +0000926981 00000 n +0000927222 00000 n +0000932677 00000 n +0000978315 00000 n +0000978556 00000 n +0000982786 00000 n +0001014892 00000 n +0001015133 00000 n +0001021338 00000 n +0001225531 00000 n +0001225772 00000 n +0001229640 00000 n +0001267455 00000 n +0001267697 00000 n +0001270634 00000 n +0001364736 00000 n +0001364978 00000 n +0001368801 00000 n +0001499632 00000 n +0001499860 00000 n +0001504002 00000 n +0001671802 00000 n +0001672044 00000 n +0001676376 00000 n +0001854523 00000 n +0001854765 00000 n +0001859153 00000 n +0002024418 00000 n +0002024646 00000 n +0002028529 00000 n +0002159828 00000 n +0002160070 00000 n +0002164430 00000 n +0002312732 00000 n +0002312974 00000 n +0002317279 00000 n +0002472806 00000 n +0002473048 00000 n +0002476740 00000 n +0002502630 00000 n +0002502872 00000 n +0002505991 00000 n +0002597959 00000 n +0002598214 00000 n +0002603817 00000 n +0002604619 00000 n +0002780787 00000 n +0002781029 00000 n +0002785804 00000 n +0002941783 00000 n +0002942025 00000 n +0002945993 00000 n +0003072757 00000 n +0003072999 00000 n +0003078041 00000 n +0003229549 00000 n +0003229791 00000 n +0003233306 00000 n +0003266022 00000 n +0003266264 00000 n +0003268568 00000 n +0003292567 00000 n +0003292809 00000 n +0003296820 00000 n +0003422007 00000 n +0003422249 00000 n +0003425890 00000 n +0003454309 00000 n +0003454551 00000 n +0003457933 00000 n +0003579371 00000 n +0003579613 00000 n +0003582514 00000 n +0003602924 00000 n +0003603166 00000 n +0003607616 00000 n +0003756616 00000 n +0003756858 00000 n +0003761201 00000 n +0003798316 00000 n +0003798558 00000 n +0003802932 00000 n +0003954834 00000 n +0003955077 00000 n +0003959127 00000 n +0004121456 00000 n +0004121701 00000 n +0004125376 00000 n +0004160921 00000 n +0004161166 00000 n +0004164447 00000 n +0004273623 00000 n +0004273868 00000 n +0004278177 00000 n +0004429091 00000 n +0004429336 00000 n +0004435441 00000 n +0004625285 00000 n +0004625530 00000 n +0004629645 00000 n +0004775535 00000 n +0004775780 00000 n +0004779290 00000 n +0004894032 00000 n +0004894277 00000 n +0004898320 00000 n +0005020579 00000 n +0005020824 00000 n +0005024891 00000 n +0005052135 00000 n +0005052380 00000 n +0005056191 00000 n +0005085281 00000 n +0005085526 00000 n +0005089635 00000 n +0005224712 00000 n +0005224957 00000 n +0005228328 00000 n +0005358200 00000 n +0005358445 00000 n +0005362280 00000 n +0005464106 00000 n +0005464351 00000 n +0005469343 00000 n +0005626919 00000 n +0005627164 00000 n +0005631037 00000 n +0005753712 00000 n +0005753957 00000 n +0005757411 00000 n +0005863269 00000 n +0005863514 00000 n +0005868130 00000 n +0005901750 00000 n +0005901995 00000 n +0005906001 00000 n +0006057438 00000 n +0006057683 00000 n +0006061807 00000 n +0006203513 00000 n +0006203758 00000 n +0006207877 00000 n +0006338357 00000 n +0006338602 00000 n +0006343994 00000 n +0006510851 00000 n +0006511096 00000 n +0006515239 00000 n +0006665017 00000 n +0006665262 00000 n +0006670978 00000 n +0006877246 00000 n +0006877491 00000 n +0006882927 00000 n +0007077184 00000 n +0007077429 00000 n +0007081992 00000 n +0007214975 00000 n +0007215220 00000 n +0007219069 00000 n +0007334285 00000 n +0007334530 00000 n +0007339077 00000 n +0007481191 00000 n +0007481422 00000 n +0007485419 00000 n +0007605793 00000 n +0007606038 00000 n +0007612001 00000 n +0007809108 00000 n +0007809353 00000 n +0007813440 00000 n +0007839073 00000 n +0007839318 00000 n +0007843578 00000 n +0007963986 00000 n +0007964231 00000 n +0007968626 00000 n +0008154272 00000 n +0008154503 00000 n +0008158194 00000 n +0008199571 00000 n +0008199816 00000 n +0008203674 00000 n +0008346651 00000 n +0008346909 00000 n +0008351691 00000 n +0008357557 00000 n +0008357740 00000 n +0008358050 00000 n +0008399037 00000 n +0008399295 00000 n +0008403966 00000 n +0008410461 00000 n +0008410650 00000 n +0008410960 00000 n +0008576625 00000 n +0008576870 00000 n +0008581932 00000 n +0008773153 00000 n +0008773398 00000 n +0008777574 00000 n +0008908146 00000 n +0008908391 00000 n +0008913133 00000 n +0009069917 00000 n +0009070162 00000 n +0009074718 00000 n +0009221673 00000 n +0009221918 00000 n +0009226583 00000 n +0009375844 00000 n +0009376089 00000 n +0009379119 00000 n +0009528217 00000 n +0009528448 00000 n +0009532202 00000 n +0009672012 00000 n +0009672257 00000 n +0009677165 00000 n +0009851034 00000 n +0009851279 00000 n +0009856018 00000 n +0010017816 00000 n +0010018061 00000 n +0010022649 00000 n +0010156369 00000 n +0010156614 00000 n +0010161600 00000 n +0010318523 00000 n +0010318768 00000 n +0010322920 00000 n +0010455916 00000 n +0010456161 00000 n +0010458432 00000 n +0010476841 00000 n +0010477151 00000 n +0010477322 00000 n +0010477621 00000 n +0010480650 00000 n +0010481418 00000 n +0010481731 00000 n +0010482052 00000 n +0010482144 00000 n +0010482222 00000 n +0010483415 00000 n +0010493168 00000 n +0010495085 00000 n +0010497207 00000 n +0010499205 00000 n +0010501303 00000 n +0010503698 00000 n +0010506087 00000 n +0010508592 00000 n +0010510762 00000 n +0010512716 00000 n +0010515209 00000 n +0010517666 00000 n +0010520554 00000 n +0010522426 00000 n +0010524672 00000 n +0010526860 00000 n +0010528839 00000 n +0010530805 00000 n +0010533215 00000 n +0010535940 00000 n +0010538264 00000 n +0010540377 00000 n +0010542645 00000 n +0010545546 00000 n +0010548201 00000 n +0010550272 00000 n +0010551997 00000 n +0010553605 00000 n +0010555423 00000 n +0010557500 00000 n +0010558497 00000 n +0010558557 00000 n +0010558589 00000 n +0010558621 00000 n +0010558653 00000 n +0010558717 00000 n +0010558813 00000 n +0010559463 00000 n +0010563033 00000 n +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +0000000000 65535 f +trailer +<]>> +startxref +116 +%%EOF diff --git a/samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-10_Form.pdf b/samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-10_Form.pdf new file mode 100644 index 0000000..77149ed Binary files /dev/null and b/samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-10_Form.pdf differ diff --git a/samples/pdf/safety-trigger.pdf b/samples/pdf/safety-trigger.pdf new file mode 100644 index 0000000..a3b522e --- /dev/null +++ b/samples/pdf/safety-trigger.pdf @@ -0,0 +1,74 @@ +%PDF-1.3 +% ReportLab Generated PDF document (opensource) +1 0 obj +<< +/F1 2 0 R /F2 3 0 R +>> +endobj +2 0 obj +<< +/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font +>> +endobj +3 0 obj +<< +/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font +>> +endobj +4 0 obj +<< +/Contents 8 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 7 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +5 0 obj +<< +/PageMode /UseNone /Pages 7 0 R /Type /Catalog +>> +endobj +6 0 obj +<< +/Author (anonymous) /CreationDate (D:20260526171228+09'00') /Creator (anonymous) /Keywords () /ModDate (D:20260526171228+09'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (unspecified) /Title (untitled) /Trapped /False +>> +endobj +7 0 obj +<< +/Count 1 /Kids [ 4 0 R ] /Type /Pages +>> +endobj +8 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 327 +>> +stream +GasbU5u,0m@TW8f_X13j!^VDF=n:Qfr8*B&+@cp(mWJa$'Q+uqKS8&H'NkJ0KWSFS>XFZ(Y;:ILVft-f58DBVJW7UFXL"q,/#X%]c[&Cb%M`g;;h1U`\G,B1,feM502OT7MVlrWnlgF)Q*Co+h%Nu\=BcSMCtFfea]KlD]eO[epf"U4#u#""q&dV^>SnPqHiai0&O_7BD'2S*OCL8rGdYre"p0.U+U$46KqG\(%E0WGCnR>36NPbdJk(\qp[gCB?:(e6nFUiPM8gWm%X_SYS@@#\;p3b(K`\:c>,7QX~>endstream +endobj +xref +0 9 +0000000000 65535 f +0000000061 00000 n +0000000102 00000 n +0000000209 00000 n +0000000321 00000 n +0000000524 00000 n +0000000592 00000 n +0000000853 00000 n +0000000912 00000 n +trailer +<< +/ID +[] +% ReportLab generated PDF document -- digest (opensource) + +/Info 6 0 R +/Root 5 0 R +/Size 9 +>> +startxref +1329 +%%EOF diff --git a/samples/pdf/sanitization-targets.pdf b/samples/pdf/sanitization-targets.pdf new file mode 100644 index 0000000..ca59800 --- /dev/null +++ b/samples/pdf/sanitization-targets.pdf @@ -0,0 +1,74 @@ +%PDF-1.3 +% ReportLab Generated PDF document (opensource) +1 0 obj +<< +/F1 2 0 R /F2 3 0 R +>> +endobj +2 0 obj +<< +/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font +>> +endobj +3 0 obj +<< +/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font +>> +endobj +4 0 obj +<< +/Contents 8 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 7 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +5 0 obj +<< +/PageMode /UseNone /Pages 7 0 R /Type /Catalog +>> +endobj +6 0 obj +<< +/Author (anonymous) /CreationDate (D:20260526171228+09'00') /Creator (anonymous) /Keywords () /ModDate (D:20260526171228+09'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (unspecified) /Title (untitled) /Trapped /False +>> +endobj +7 0 obj +<< +/Count 1 /Kids [ 4 0 R ] /Type /Pages +>> +endobj +8 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 440 +>> +stream +Garp'92C3p'F!F.^Z$emK[O(e.:)b*-76&QMEic[D-Q?J"l7nTYd(NCHYVDZ2me>4^=cd,P9M3S>qk-[d<1@U42k2ZOs2'@O>tOKPC+[C/KS&1>8]AgFO9&-oKIZB4$0(%PC0cojDgS(hUFHVd_:b@pmiZZ3/M2:QFT-;VI)mD[]ojCnCBI(gnY[4=ioZhDI0VU]h_6D)!-p#QAK0cVsTt?r3%>)-WP)\RUW6FQR]N%W2_b:MCVl=j7_q[f=u#JCdT%/Q)9NMgZK$HqC_/BSai[<6Qa.sqZ-LT]8c~>endstream +endobj +xref +0 9 +0000000000 65535 f +0000000061 00000 n +0000000102 00000 n +0000000209 00000 n +0000000321 00000 n +0000000524 00000 n +0000000592 00000 n +0000000853 00000 n +0000000912 00000 n +trailer +<< +/ID +[] +% ReportLab generated PDF document -- digest (opensource) + +/Info 6 0 R +/Root 5 0 R +/Size 9 +>> +startxref +1442 +%%EOF diff --git a/samples/pdf/sanitize-target.pdf b/samples/pdf/sanitize-target.pdf new file mode 100644 index 0000000..795ae62 --- /dev/null +++ b/samples/pdf/sanitize-target.pdf @@ -0,0 +1,74 @@ +%PDF-1.3 +% ReportLab Generated PDF document (opensource) +1 0 obj +<< +/F1 2 0 R /F2 3 0 R +>> +endobj +2 0 obj +<< +/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font +>> +endobj +3 0 obj +<< +/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font +>> +endobj +4 0 obj +<< +/Contents 8 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 7 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +5 0 obj +<< +/PageMode /UseNone /Pages 7 0 R /Type /Catalog +>> +endobj +6 0 obj +<< +/Author (anonymous) /CreationDate (D:20260526171228+09'00') /Creator (anonymous) /Keywords () /ModDate (D:20260526171228+09'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (unspecified) /Title (untitled) /Trapped /False +>> +endobj +7 0 obj +<< +/Count 1 /Kids [ 4 0 R ] /Type /Pages +>> +endobj +8 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 351 +>> +stream +GasbU:J8Sj&B4,:'^qtedS/*e4c-Rud"C8.k;A[7/)B$Eh2;'n`O*,e>4=;&a1V-ch@L;FTQ.CY\.b5o&1E7r6&TsgZ,TD[7QgniUL(uTd#Vd*RA)7t\>ng$6K@?6)WfM9oZA'X3Gd@.hR3[6`a;*G6/;Ab'.=f`o=-cPS5Mma>2s2[ThKA0I0B1cJ7n&1ft^>'c!SsGZDb[Gk828r0NVGX*Iqath"$6Mq]3_ZeX$;^*rJfOVkLVcjtdF;T6M4a1#2+(=n.9tPXj$"i)&,b'J~>endstream +endobj +xref +0 9 +0000000000 65535 f +0000000061 00000 n +0000000102 00000 n +0000000209 00000 n +0000000321 00000 n +0000000524 00000 n +0000000592 00000 n +0000000853 00000 n +0000000912 00000 n +trailer +<< +/ID +[<1d808401697e1498a11be56c80845395><1d808401697e1498a11be56c80845395>] +% ReportLab generated PDF document -- digest (opensource) + +/Info 6 0 R +/Root 5 0 R +/Size 9 +>> +startxref +1353 +%%EOF diff --git a/samples/pdf/strikethrough.pdf b/samples/pdf/strikethrough.pdf new file mode 100644 index 0000000..388caec Binary files /dev/null and b/samples/pdf/strikethrough.pdf differ diff --git a/schema.json b/schema.json new file mode 100644 index 0000000..c797f33 --- /dev/null +++ b/schema.json @@ -0,0 +1,357 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/opendataloader-project/opendataloader-pdf/main/schema.json", + "title": "OpenDataLoader PDF Output", + "description": "JSON output schema for OpenDataLoader PDF conversion", + "type": "object", + "required": ["file name", "number of pages", "author", "title", "creation date", "modification date", "kids"], + "properties": { + "file name": { + "type": "string", + "description": "Name of the processed PDF" + }, + "number of pages": { + "type": "integer", + "description": "Total page count" + }, + "author": { + "type": ["string", "null"], + "description": "PDF author metadata" + }, + "title": { + "type": ["string", "null"], + "description": "PDF title metadata" + }, + "creation date": { + "type": ["string", "null"], + "description": "PDF creation timestamp" + }, + "modification date": { + "type": ["string", "null"], + "description": "PDF modification timestamp" + }, + "kids": { + "type": "array", + "description": "Top-level content elements (per page)", + "items": { + "$ref": "#/$defs/contentElement" + } + } + }, + "$defs": { + "boundingBox": { + "type": "array", + "description": "Bounding box coordinates [left, bottom, right, top]", + "items": { + "type": "number" + }, + "minItems": 4, + "maxItems": 4 + }, + "baseElement": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Element type" + }, + "id": { + "type": "integer", + "description": "Unique content identifier" + }, + "level": { + "type": "string", + "description": "Heading or structural level" + }, + "page number": { + "type": "integer", + "description": "Page containing the element (1-indexed)" + }, + "bounding box": { + "$ref": "#/$defs/boundingBox" + } + }, + "required": ["type", "page number", "bounding box"] + }, + "textProperties": { + "type": "object", + "properties": { + "font": { + "type": "string", + "description": "Font name" + }, + "font size": { + "type": "number", + "description": "Font size" + }, + "text color": { + "type": "string", + "description": "RGB color as string array" + }, + "content": { + "type": "string", + "description": "Raw text value" + }, + "hidden text": { + "type": "boolean", + "description": "Whether this is hidden text (e.g., OCR layer)" + } + }, + "required": ["font", "font size", "text color", "content"] + }, + "contentElement": { + "oneOf": [ + { "$ref": "#/$defs/paragraph" }, + { "$ref": "#/$defs/heading" }, + { "$ref": "#/$defs/caption" }, + { "$ref": "#/$defs/table" }, + { "$ref": "#/$defs/textBlock" }, + { "$ref": "#/$defs/list" }, + { "$ref": "#/$defs/image" }, + { "$ref": "#/$defs/headerFooter" } + ] + }, + "paragraph": { + "allOf": [ + { "$ref": "#/$defs/baseElement" }, + { "$ref": "#/$defs/textProperties" }, + { + "type": "object", + "properties": { + "type": { "const": "paragraph" } + } + } + ] + }, + "heading": { + "allOf": [ + { "$ref": "#/$defs/baseElement" }, + { "$ref": "#/$defs/textProperties" }, + { + "type": "object", + "properties": { + "type": { "const": "heading" }, + "heading level": { + "type": "integer", + "minimum": 1, + "description": "Heading level (e.g., 1 for h1)" + } + }, + "required": ["heading level"] + } + ] + }, + "caption": { + "allOf": [ + { "$ref": "#/$defs/baseElement" }, + { "$ref": "#/$defs/textProperties" }, + { + "type": "object", + "properties": { + "type": { "const": "caption" }, + "linked content id": { + "type": "integer", + "description": "ID of the linked content element (table, image, etc.)" + } + } + } + ] + }, + "table": { + "allOf": [ + { "$ref": "#/$defs/baseElement" }, + { + "type": "object", + "properties": { + "type": { "const": "table" }, + "number of rows": { + "type": "integer", + "description": "Row count" + }, + "number of columns": { + "type": "integer", + "description": "Column count" + }, + "previous table id": { + "type": "integer", + "description": "Linked table identifier (if broken across pages)" + }, + "next table id": { + "type": "integer", + "description": "Linked table identifier" + }, + "rows": { + "type": "array", + "description": "Row objects", + "items": { "$ref": "#/$defs/tableRow" } + } + }, + "required": ["number of rows", "number of columns", "rows"] + } + ] + }, + "tableRow": { + "type": "object", + "properties": { + "type": { "const": "table row" }, + "row number": { + "type": "integer", + "description": "Row index (1-indexed)" + }, + "cells": { + "type": "array", + "description": "Cell objects", + "items": { "$ref": "#/$defs/tableCell" } + } + }, + "required": ["type", "row number", "cells"] + }, + "tableCell": { + "allOf": [ + { "$ref": "#/$defs/baseElement" }, + { + "type": "object", + "properties": { + "type": { "const": "table cell" }, + "row number": { + "type": "integer", + "description": "Row index of the cell (1-indexed)" + }, + "column number": { + "type": "integer", + "description": "Column index of the cell (1-indexed)" + }, + "row span": { + "type": "integer", + "minimum": 1, + "description": "Number of rows spanned" + }, + "column span": { + "type": "integer", + "minimum": 1, + "description": "Number of columns spanned" + }, + "kids": { + "type": "array", + "description": "Nested content elements", + "items": { "$ref": "#/$defs/contentElement" } + } + }, + "required": ["row number", "column number", "row span", "column span", "kids"] + } + ] + }, + "textBlock": { + "allOf": [ + { "$ref": "#/$defs/baseElement" }, + { + "type": "object", + "properties": { + "type": { "const": "text block" }, + "kids": { + "type": "array", + "description": "Text block children", + "items": { "$ref": "#/$defs/contentElement" } + } + }, + "required": ["kids"] + } + ] + }, + "list": { + "allOf": [ + { "$ref": "#/$defs/baseElement" }, + { + "type": "object", + "properties": { + "type": { "const": "list" }, + "numbering style": { + "type": "string", + "description": "Marker style (ordered, bullet, etc.)" + }, + "number of list items": { + "type": "integer", + "description": "Item count" + }, + "previous list id": { + "type": "integer", + "description": "Linked list identifier" + }, + "next list id": { + "type": "integer", + "description": "Linked list identifier" + }, + "list items": { + "type": "array", + "description": "Item nodes", + "items": { "$ref": "#/$defs/listItem" } + } + }, + "required": ["numbering style", "number of list items", "list items"] + } + ] + }, + "listItem": { + "allOf": [ + { "$ref": "#/$defs/baseElement" }, + { "$ref": "#/$defs/textProperties" }, + { + "type": "object", + "properties": { + "type": { "const": "list item" }, + "kids": { + "type": "array", + "description": "Nested content elements", + "items": { "$ref": "#/$defs/contentElement" } + } + }, + "required": ["kids"] + } + ] + }, + "image": { + "allOf": [ + { "$ref": "#/$defs/baseElement" }, + { + "type": "object", + "properties": { + "type": { "const": "image" }, + "source": { + "type": "string", + "description": "Relative path to the image file" + }, + "data": { + "type": "string", + "description": "Base64 data URI (when embed-images is enabled)" + }, + "format": { + "type": "string", + "description": "Image format (png, jpeg)", + "enum": ["png", "jpeg"] + } + } + } + ] + }, + "headerFooter": { + "allOf": [ + { "$ref": "#/$defs/baseElement" }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": ["header", "footer"] + }, + "kids": { + "type": "array", + "description": "Content elements within the header or footer", + "items": { "$ref": "#/$defs/contentElement" } + } + }, + "required": ["kids"] + } + ] + } + } +} diff --git a/scripts/bench.sh b/scripts/bench.sh new file mode 100755 index 0000000..7146a1a --- /dev/null +++ b/scripts/bench.sh @@ -0,0 +1,85 @@ +#!/usr/bin/env bash +# Benchmark script for opendataloader-pdf +# +# Clones opendataloader-bench and runs benchmark against locally built JAR. +# +# Usage: +# ./scripts/bench.sh # Run full benchmark +# ./scripts/bench.sh --doc-id 01030... # Run for specific document +# ./scripts/bench.sh --check-regression # Run with regression check (CI) +# ./scripts/bench.sh --skip-build # Skip Java build step +# +# Environment: +# BENCH_DIR Override bench repo clone location (default: /tmp/opendataloader-bench) + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(dirname "$SCRIPT_DIR")" +BENCH_REPO="https://github.com/opendataloader-project/opendataloader-bench.git" +BENCH_DIR="${BENCH_DIR:-/tmp/opendataloader-bench}" + +# Parse --skip-build flag (pass everything else through) +SKIP_BUILD=false +ARGS=() +for arg in "$@"; do + if [[ "$arg" == "--skip-build" ]]; then + SKIP_BUILD=true + else + ARGS+=("$arg") + fi +done + +# Find CLI JAR (shaded first, then regular, excluding sources/javadoc/original) +find_jar() { + local target_dir="$PROJECT_ROOT/java/opendataloader-pdf-cli/target" + local jar + jar=$(find "$target_dir" -name "opendataloader-pdf-cli-*-shaded.jar" 2>/dev/null | head -1) + if [[ -z "$jar" ]]; then + jar=$(find "$target_dir" -name "opendataloader-pdf-cli-*.jar" \ + ! -name "*-sources.jar" ! -name "*-javadoc.jar" ! -name "original-*" \ + 2>/dev/null | head -1) + fi + echo "$jar" +} + +# Step 1: Build Java if needed +if [[ "$SKIP_BUILD" == "false" ]]; then + JAR_PATH=$(find_jar) + if [[ -z "$JAR_PATH" ]]; then + echo "Building Java..." + "$SCRIPT_DIR/build-java.sh" + else + echo "Using existing JAR: $JAR_PATH" + fi +fi + +# Step 2: Clone or update bench repo +if [[ -d "$BENCH_DIR/.git" ]]; then + echo "Updating bench repo..." + git -C "$BENCH_DIR" pull --ff-only --quiet 2>/dev/null || true +else + echo "Cloning bench repo..." + git clone --depth 1 "$BENCH_REPO" "$BENCH_DIR" +fi + +# Step 3: Find JAR path +JAR_PATH=$(find_jar) +if [[ -z "$JAR_PATH" ]]; then + echo "Error: No JAR found. Run ./scripts/build-java.sh first." + exit 1 +fi + +# Step 4: Run benchmark with JAR +echo "Running benchmark with JAR: $JAR_PATH" +cd "$BENCH_DIR" + +if ! command -v uv &> /dev/null; then + echo "Error: uv is not installed." + exit 1 +fi + +uv sync --quiet +OPENDATALOADER_JAR="$JAR_PATH" uv run python src/run.py \ + --engine opendataloader \ + "${ARGS[@]}" diff --git a/scripts/build-all.sh b/scripts/build-all.sh new file mode 100755 index 0000000..6c441b9 --- /dev/null +++ b/scripts/build-all.sh @@ -0,0 +1,81 @@ +#!/bin/bash + +# Build and test all packages: Java, Python, Node.js +# Usage: ./scripts/build-all.sh [VERSION] +# Example: ./scripts/build-all.sh 1.0.0 +# If VERSION is not provided, defaults to "0.0.0" + +set -e + +# ================================================================= +# Configuration +# ================================================================= +VERSION="${1:-0.0.0}" +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" + +# ================================================================= +# Prerequisites Check +# ================================================================= +echo "Checking prerequisites..." + +command -v java >/dev/null || { echo "Error: java not found"; exit 1; } +command -v mvn >/dev/null || { echo "Error: mvn not found"; exit 1; } +command -v uv >/dev/null || { echo "Error: uv not found. Install with: curl -LsSf https://astral.sh/uv/install.sh | sh"; exit 1; } +command -v node >/dev/null || { echo "Error: node not found"; exit 1; } +command -v pnpm >/dev/null || { echo "Error: pnpm not found"; exit 1; } + +echo "All prerequisites found." + +echo "" +echo "========================================" +echo "Building all packages (version: $VERSION)" +echo "========================================" + +# ================================================================= +# Java Build & Test +# ================================================================= +echo "" +echo "[1/3] Java: Building and testing..." +echo "----------------------------------------" + +cd "$ROOT_DIR/java" +mvn versions:set -DnewVersion="$VERSION" -DgenerateBackupPoms=false +"$SCRIPT_DIR/build-java.sh" + +echo "[1/3] Java: Done" + +# ================================================================= +# Python Build & Test +# ================================================================= +echo "" +echo "[2/3] Python: Building and testing..." +echo "----------------------------------------" + +cd "$ROOT_DIR/python/opendataloader-pdf" +sed -i.bak "s/^version = \"[^\"]*\"/version = \"$VERSION\"/" pyproject.toml && rm -f pyproject.toml.bak +"$SCRIPT_DIR/build-python.sh" + +echo "[2/3] Python: Done" + +# ================================================================= +# Node.js Build & Test +# ================================================================= +echo "" +echo "[3/3] Node.js: Building and testing..." +echo "----------------------------------------" + +cd "$ROOT_DIR/node/opendataloader-pdf" +pnpm version "$VERSION" --no-git-tag-version --allow-same-version +"$SCRIPT_DIR/build-node.sh" + +echo "[3/3] Node.js: Done" + +# ================================================================= +# Summary +# ================================================================= +echo "" +echo "========================================" +echo "All builds completed successfully!" +echo "Version: $VERSION" +echo "========================================" diff --git a/scripts/build-java.sh b/scripts/build-java.sh new file mode 100755 index 0000000..7afd30b --- /dev/null +++ b/scripts/build-java.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# CI/CD build script for Java package +# For local development, use test-java.sh instead + +set -e + +# Prerequisites +command -v java >/dev/null || { echo "Error: java not found"; exit 1; } +command -v mvn >/dev/null || { echo "Error: mvn not found"; exit 1; } + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +ROOT_DIR="$SCRIPT_DIR/.." +PACKAGE_DIR="$ROOT_DIR/java" +cd "$PACKAGE_DIR" + +# Build and test +mvn -B clean package -P release diff --git a/scripts/build-node.sh b/scripts/build-node.sh new file mode 100755 index 0000000..2f4d76e --- /dev/null +++ b/scripts/build-node.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +# CI/CD build script for Node.js package +# For local development, use test-node.sh instead + +set -e + +# Prerequisites +command -v node >/dev/null || { echo "Error: node not found"; exit 1; } +command -v pnpm >/dev/null || { echo "Error: pnpm not found"; exit 1; } + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +ROOT_DIR="$SCRIPT_DIR/.." +PACKAGE_DIR="$ROOT_DIR/node/opendataloader-pdf" +cd "$PACKAGE_DIR" + +# Install dependencies +pnpm install --frozen-lockfile + +# Build +pnpm run build + +# Run tests +pnpm test diff --git a/scripts/build-python.sh b/scripts/build-python.sh new file mode 100755 index 0000000..a676afc --- /dev/null +++ b/scripts/build-python.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +# CI/CD build script for Python package using uv +# For local development, use test-python.sh instead + +set -e + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +ROOT_DIR="$SCRIPT_DIR/.." +PACKAGE_DIR="$ROOT_DIR/python/opendataloader-pdf" +cd "$PACKAGE_DIR" + +# Check uv is available +command -v uv >/dev/null || { echo "Error: uv not found. Install with: curl -LsSf https://astral.sh/uv/install.sh | sh"; exit 1; } + +# Clean previous build +rm -rf dist/ + +# Copy README.md from repo root *before* build. hatchling validates [project.readme] +# during metadata parsing, which runs BEFORE hatch_build.py's build hook — so we +# cannot rely on the hook to provide it. Clean up on exit so branch switches +# don't leave a stale copy in the package dir. +cp "$ROOT_DIR/README.md" "$PACKAGE_DIR/README.md" +trap 'rm -f "$PACKAGE_DIR/README.md"' EXIT + +# Build sdist and wheel packages (hatch_build.py copies JAR/LICENSE/NOTICE/THIRD_PARTY) +uv build + +# Verify sdist contains required artifacts (JAR, LICENSE, NOTICE, THIRD_PARTY) +"$SCRIPT_DIR/verify-python-sdist.sh" + +# Install and run tests (include hybrid extras for full test coverage) +uv sync --extra hybrid +uv run pytest tests -v -s + +echo "Build completed successfully." diff --git a/scripts/experiments/docling_baseline_bench.py b/scripts/experiments/docling_baseline_bench.py new file mode 100644 index 0000000..bb1a95f --- /dev/null +++ b/scripts/experiments/docling_baseline_bench.py @@ -0,0 +1,158 @@ +#!/usr/bin/env python3 +"""Baseline benchmark using docling-serve HTTP API. + +Measures current docling-serve performance for comparison with +FastAPI and subprocess approaches. + +Usage: + python scripts/experiments/docling_baseline_bench.py + +Requirements: + - docling-serve running on localhost:5001 + - requests package installed +""" + +import json +import sys +import time +from pathlib import Path + +import requests + +# Configuration +DOCLING_URL = "http://localhost:5001/v1/convert/file" +PDF_DIR = Path(__file__).parent.parent.parent / "tests" / "benchmark" / "pdfs" +RESULTS_DIR = Path(__file__).parent.parent.parent / "docs" / "hybrid" / "experiments" +RESULTS_FILE = RESULTS_DIR / "baseline_results.json" + + +def convert_pdf(pdf_path: Path) -> dict: + """Convert a single PDF using docling-serve API.""" + with open(pdf_path, "rb") as f: + files = {"files": (pdf_path.name, f, "application/pdf")} + data = { + "to_formats": "md", + "do_ocr": "true", + "do_table_structure": "true", + } + + start_time = time.perf_counter() + response = requests.post(DOCLING_URL, files=files, data=data, timeout=300) + elapsed = time.perf_counter() - start_time + + return { + "filename": pdf_path.name, + "status": "success" if response.status_code == 200 else "error", + "elapsed": elapsed, + "status_code": response.status_code, + } + + +def main(): + """Run baseline benchmark.""" + # Check server health + try: + health = requests.get("http://localhost:5001/health", timeout=5) + if health.status_code != 200: + print("ERROR: docling-serve is not healthy", file=sys.stderr) + sys.exit(1) + except requests.RequestException as e: + print(f"ERROR: Cannot connect to docling-serve: {e}", file=sys.stderr) + sys.exit(1) + + print("=" * 60) + print("Docling-serve Baseline Benchmark") + print("=" * 60) + print(f"PDF directory: {PDF_DIR}") + print(f"Server URL: {DOCLING_URL}") + print() + + # Get PDF files + pdf_files = sorted(PDF_DIR.glob("*.pdf")) + total_files = len(pdf_files) + print(f"Found {total_files} PDF files") + print() + + # Process each PDF + results = [] + total_start = time.perf_counter() + + for i, pdf_path in enumerate(pdf_files, 1): + print(f"[{i:3d}/{total_files}] Processing {pdf_path.name}...", end=" ", flush=True) + + try: + result = convert_pdf(pdf_path) + results.append(result) + print(f"{result['elapsed']:.2f}s ({result['status']})") + except Exception as e: + results.append({ + "filename": pdf_path.name, + "status": "error", + "elapsed": 0, + "error": str(e), + }) + print(f"ERROR: {e}") + + total_elapsed = time.perf_counter() - total_start + + # Calculate statistics + successful = [r for r in results if r["status"] == "success"] + failed = [r for r in results if r["status"] != "success"] + + if successful: + elapsed_times = [r["elapsed"] for r in successful] + avg_time = sum(elapsed_times) / len(elapsed_times) + min_time = min(elapsed_times) + max_time = max(elapsed_times) + else: + avg_time = min_time = max_time = 0 + + # Print summary + print() + print("=" * 60) + print("RESULTS SUMMARY") + print("=" * 60) + print(f"Total documents: {total_files}") + print(f"Successful: {len(successful)}") + print(f"Failed: {len(failed)}") + print() + print(f"Total elapsed: {total_elapsed:.1f}s") + print(f"Average per doc: {avg_time:.3f}s") + print(f"Min: {min_time:.3f}s") + print(f"Max: {max_time:.3f}s") + print("=" * 60) + + # Save results + RESULTS_DIR.mkdir(parents=True, exist_ok=True) + + summary = { + "approach": "baseline", + "description": "docling-serve HTTP API", + "timestamp": time.strftime("%Y-%m-%d %H:%M:%S"), + "config": { + "do_ocr": True, + "do_table_structure": True, + "server_url": DOCLING_URL, + }, + "statistics": { + "total_documents": total_files, + "successful": len(successful), + "failed": len(failed), + "total_elapsed": round(total_elapsed, 2), + "elapsed_per_doc": round(avg_time, 4), + "min_elapsed": round(min_time, 4), + "max_elapsed": round(max_time, 4), + }, + "details": results, + } + + with open(RESULTS_FILE, "w", encoding="utf-8") as f: + json.dump(summary, f, indent=2, ensure_ascii=False) + + print(f"\nResults saved to: {RESULTS_FILE}") + + return avg_time + + +if __name__ == "__main__": + main() diff --git a/scripts/experiments/docling_fastapi_bench.py b/scripts/experiments/docling_fastapi_bench.py new file mode 100644 index 0000000..6d25d7b --- /dev/null +++ b/scripts/experiments/docling_fastapi_bench.py @@ -0,0 +1,289 @@ +#!/usr/bin/env python3 +"""FastAPI experiment benchmark using docling SDK directly. + +Tests the hypothesis that a lightweight FastAPI server with +DocumentConverter singleton is faster than docling-serve. + +This script: +1. Starts an embedded FastAPI server (port 5002) +2. Converts all 200 benchmark PDFs +3. Measures and reports performance + +Usage: + python scripts/experiments/docling_fastapi_bench.py + +Requirements: + - docling package installed + - fastapi, uvicorn packages installed +""" + +import json +import multiprocessing +import os +import sys +import tempfile +import time +from pathlib import Path + +import requests + +# Configuration +FASTAPI_PORT = 5002 +FASTAPI_URL = f"http://localhost:{FASTAPI_PORT}/convert" +PDF_DIR = Path(__file__).parent.parent.parent / "tests" / "benchmark" / "pdfs" +RESULTS_DIR = Path(__file__).parent.parent.parent / "docs" / "hybrid" / "experiments" +RESULTS_FILE = RESULTS_DIR / "fastapi_results.json" + + +def run_server(): + """Run FastAPI server in a subprocess.""" + import uvicorn + from fastapi import FastAPI, File, UploadFile + from fastapi.responses import JSONResponse + + # Import docling after fork to avoid issues + from docling.datamodel.base_models import InputFormat + from docling.datamodel.pipeline_options import ( + EasyOcrOptions, + OcrOptions, + PdfPipelineOptions, + TableFormerMode, + TableStructureOptions, + ) + from docling.document_converter import DocumentConverter, PdfFormatOption + + app = FastAPI() + + # Create singleton DocumentConverter with warm-up + print("Initializing DocumentConverter...", flush=True) + + pipeline_options = PdfPipelineOptions( + do_ocr=True, + do_table_structure=True, + ocr_options=EasyOcrOptions(force_full_page_ocr=False), + table_structure_options=TableStructureOptions( + mode=TableFormerMode.ACCURATE + ), + ) + + converter = DocumentConverter( + format_options={ + InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options) + } + ) + print("DocumentConverter initialized.", flush=True) + + @app.get("/health") + def health(): + return {"status": "ok"} + + @app.post("/convert") + async def convert(file: UploadFile = File(...)): + # Save uploaded file to temp location + with tempfile.NamedTemporaryFile(suffix=".pdf", delete=False) as tmp: + content = await file.read() + tmp.write(content) + tmp_path = tmp.name + + try: + start = time.perf_counter() + result = converter.convert(tmp_path) + elapsed = time.perf_counter() - start + + md_content = result.document.export_to_markdown() + + return JSONResponse({ + "status": "success", + "markdown": md_content, + "processing_time": elapsed, + }) + except Exception: + return JSONResponse({ + "status": "error", + "error": "PDF conversion failed", + }, status_code=500) + finally: + os.unlink(tmp_path) + + uvicorn.run(app, host="0.0.0.0", port=FASTAPI_PORT, log_level="warning") + + +def convert_pdf(pdf_path: Path) -> dict: + """Convert a single PDF using FastAPI server.""" + with open(pdf_path, "rb") as f: + files = {"file": (pdf_path.name, f, "application/pdf")} + + start_time = time.perf_counter() + response = requests.post(FASTAPI_URL, files=files, timeout=300) + elapsed = time.perf_counter() - start_time + + if response.status_code == 200: + data = response.json() + return { + "filename": pdf_path.name, + "status": "success", + "elapsed": elapsed, + "server_time": data.get("processing_time", 0), + } + else: + return { + "filename": pdf_path.name, + "status": "error", + "elapsed": elapsed, + "error": response.text, + } + + +def wait_for_server(max_retries=60, delay=1.0): + """Wait for server to be ready.""" + for i in range(max_retries): + try: + resp = requests.get(f"http://localhost:{FASTAPI_PORT}/health", timeout=5) + if resp.status_code == 200: + return True + except requests.RequestException: + pass + time.sleep(delay) + return False + + +def main(): + """Run FastAPI benchmark.""" + print("=" * 60) + print("FastAPI Experiment Benchmark") + print("=" * 60) + print(f"PDF directory: {PDF_DIR}") + print(f"Server URL: {FASTAPI_URL}") + print() + + # Start server in subprocess + print("Starting FastAPI server...", flush=True) + server_process = multiprocessing.Process(target=run_server, daemon=True) + server_process.start() + + # Wait for server to be ready + print("Waiting for server to initialize (including model loading)...", flush=True) + if not wait_for_server(max_retries=120, delay=1.0): + print("ERROR: Server failed to start", file=sys.stderr) + server_process.terminate() + sys.exit(1) + + print("Server is ready.", flush=True) + print() + + # Get PDF files + pdf_files = sorted(PDF_DIR.glob("*.pdf")) + total_files = len(pdf_files) + print(f"Found {total_files} PDF files") + print() + + # Process each PDF + results = [] + total_start = time.perf_counter() + + try: + for i, pdf_path in enumerate(pdf_files, 1): + print(f"[{i:3d}/{total_files}] Processing {pdf_path.name}...", end=" ", flush=True) + + try: + result = convert_pdf(pdf_path) + results.append(result) + server_time = result.get("server_time", 0) + print(f"{result['elapsed']:.2f}s (server: {server_time:.2f}s) ({result['status']})") + except Exception as e: + results.append({ + "filename": pdf_path.name, + "status": "error", + "elapsed": 0, + "error": str(e), + }) + print(f"ERROR: {e}") + + total_elapsed = time.perf_counter() - total_start + + finally: + # Shutdown server + print("\nShutting down server...", flush=True) + server_process.terminate() + server_process.join(timeout=5) + + # Calculate statistics + successful = [r for r in results if r["status"] == "success"] + failed = [r for r in results if r["status"] != "success"] + + if successful: + elapsed_times = [r["elapsed"] for r in successful] + server_times = [r.get("server_time", 0) for r in successful] + avg_time = sum(elapsed_times) / len(elapsed_times) + avg_server_time = sum(server_times) / len(server_times) + min_time = min(elapsed_times) + max_time = max(elapsed_times) + else: + avg_time = avg_server_time = min_time = max_time = 0 + + # Print summary + print() + print("=" * 60) + print("RESULTS SUMMARY") + print("=" * 60) + print(f"Total documents: {total_files}") + print(f"Successful: {len(successful)}") + print(f"Failed: {len(failed)}") + print() + print(f"Total elapsed: {total_elapsed:.1f}s") + print(f"Average per doc: {avg_time:.3f}s (target: < 0.8s)") + print(f"Avg server time: {avg_server_time:.3f}s") + print(f"Min: {min_time:.3f}s") + print(f"Max: {max_time:.3f}s") + print() + + # Success/Failure check + if avg_time < 0.8: + print("✅ SUCCESS: Average time is below 0.8s threshold!") + else: + print("❌ FAILURE: Average time exceeds 0.8s threshold") + print(" Plan may need to be discarded.") + + print("=" * 60) + + # Save results + RESULTS_DIR.mkdir(parents=True, exist_ok=True) + + summary = { + "approach": "fastapi", + "description": "FastAPI server with docling SDK singleton", + "timestamp": time.strftime("%Y-%m-%d %H:%M:%S"), + "config": { + "do_ocr": True, + "do_table_structure": True, + "server_port": FASTAPI_PORT, + }, + "statistics": { + "total_documents": total_files, + "successful": len(successful), + "failed": len(failed), + "total_elapsed": round(total_elapsed, 2), + "elapsed_per_doc": round(avg_time, 4), + "server_time_per_doc": round(avg_server_time, 4), + "min_elapsed": round(min_time, 4), + "max_elapsed": round(max_time, 4), + }, + "threshold": { + "target": 0.8, + "passed": avg_time < 0.8, + }, + "details": results, + } + + with open(RESULTS_FILE, "w", encoding="utf-8") as f: + json.dump(summary, f, indent=2, ensure_ascii=False) + + print(f"\nResults saved to: {RESULTS_FILE}") + + return avg_time + + +if __name__ == "__main__": + # Required for multiprocessing on macOS + multiprocessing.set_start_method("spawn", force=True) + main() diff --git a/scripts/experiments/docling_speed_report.py b/scripts/experiments/docling_speed_report.py new file mode 100644 index 0000000..7a32639 --- /dev/null +++ b/scripts/experiments/docling_speed_report.py @@ -0,0 +1,211 @@ +#!/usr/bin/env python3 +"""Generate speed comparison report for docling experiments. + +Reads results from all experiment runs and generates a summary report. + +Usage: + python scripts/experiments/docling_speed_report.py +""" + +import json +import sys +from datetime import datetime +from pathlib import Path + +RESULTS_DIR = Path(__file__).parent.parent.parent / "docs" / "hybrid" / "experiments" +REPORT_FILE = RESULTS_DIR / f"speed-experiment-{datetime.now().strftime('%Y-%m-%d')}.md" + + +def load_results(filename: str) -> dict | None: + """Load results from JSON file.""" + path = RESULTS_DIR / filename + if not path.exists(): + return None + with open(path, encoding="utf-8") as f: + return json.load(f) + + +def main(): + """Generate comparison report.""" + print("Loading experiment results...") + + baseline = load_results("baseline_results.json") + fastapi = load_results("fastapi_results.json") + subprocess = load_results("subprocess_results.json") + + if not any([baseline, fastapi, subprocess]): + print("ERROR: No experiment results found", file=sys.stderr) + sys.exit(1) + + # Print console summary + print() + print("=" * 70) + print("DOCLING SPEED EXPERIMENT RESULTS") + print("=" * 70) + print() + + approaches = [] + if baseline: + approaches.append(("baseline", "docling-serve HTTP", baseline)) + if fastapi: + approaches.append(("fastapi", "FastAPI + SDK singleton", fastapi)) + if subprocess: + approaches.append(("subprocess", "Persistent subprocess", subprocess)) + + # Table header + print(f"{'Approach':<15} {'Description':<25} {'Avg (s/doc)':<12} {'Target':<10} {'Status':<10} {'Speedup':<10}") + print("-" * 70) + + baseline_time = baseline["statistics"]["elapsed_per_doc"] if baseline else None + + for name, desc, data in approaches: + stats = data["statistics"] + avg_time = stats["elapsed_per_doc"] + + threshold = data.get("threshold", {}) + target = threshold.get("target", "-") + passed = threshold.get("passed", None) + + if passed is True: + status = "PASS" + elif passed is False: + status = "FAIL" + else: + status = "-" + + # Calculate speedup vs baseline + if baseline_time and name != "baseline": + speedup = f"{baseline_time / avg_time:.1f}x" + else: + speedup = "-" + + print(f"{name:<15} {desc:<25} {avg_time:<12.3f} {str(target):<10} {status:<10} {speedup:<10}") + + print("-" * 70) + print() + + # Decision summary + print("DECISION SUMMARY:") + print("-" * 40) + + fastapi_passed = fastapi and fastapi.get("threshold", {}).get("passed", False) + subprocess_passed = subprocess and subprocess.get("threshold", {}).get("passed", False) + + if fastapi_passed: + print("FastAPI approach: APPROVED (proceed to Phase 1)") + else: + print("FastAPI approach: REJECTED (plan discarded)") + + if subprocess_passed: + print("Subprocess approach: APPROVED (proceed to Phase 1)") + else: + print("Subprocess approach: REJECTED (excluded from plan)") + + print() + + if fastapi_passed: + print("OVERALL: Phase 0 PASSED - Proceed to implementation") + print() + + # Recommendation + if subprocess_passed: + fastapi_time = fastapi["statistics"]["elapsed_per_doc"] + subprocess_time = subprocess["statistics"]["elapsed_per_doc"] + if subprocess_time < fastapi_time: + print(f"RECOMMENDATION: subprocess approach is slightly faster ({subprocess_time:.3f}s vs {fastapi_time:.3f}s)") + print(" However, FastAPI is more production-ready (health checks, easier deployment)") + else: + print(f"RECOMMENDATION: FastAPI approach is faster and more production-ready") + else: + print("OVERALL: Phase 0 FAILED - Plan should be discarded") + + print("=" * 70) + + # Generate markdown report + RESULTS_DIR.mkdir(parents=True, exist_ok=True) + + report = [] + report.append("# Docling Speed Experiment Results") + report.append("") + report.append(f"**Date**: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}") + report.append("") + + report.append("## Summary") + report.append("") + report.append("| Approach | Description | Avg (s/doc) | Target | Status | Speedup |") + report.append("|----------|-------------|-------------|--------|--------|---------|") + + for name, desc, data in approaches: + stats = data["statistics"] + avg_time = stats["elapsed_per_doc"] + threshold = data.get("threshold", {}) + target = threshold.get("target", "-") + passed = threshold.get("passed", None) + + if passed is True: + status = "PASS" + elif passed is False: + status = "FAIL" + else: + status = "-" + + if baseline_time and name != "baseline": + speedup = f"{baseline_time / avg_time:.1f}x" + else: + speedup = "-" + + report.append(f"| {name} | {desc} | {avg_time:.3f} | {target} | {status} | {speedup} |") + + report.append("") + report.append("## Decision") + report.append("") + + if fastapi_passed: + report.append("**Phase 0 PASSED** - FastAPI approach meets the < 0.8s threshold.") + report.append("") + report.append("Proceed to Phase 1 implementation:") + report.append("") + report.append("- [ ] Task 1.1: docling_subprocess_worker.py") + report.append("- [ ] Task 1.2: docling_fast_server.py") + report.append("- [ ] Task 2.1: DoclingSubprocessClient.java") + report.append("- [ ] Task 2.2: DoclingFastServerClient.java") + report.append("- [ ] Task 2.3: HybridClientFactory modification") + report.append("- [ ] Task 3: Benchmark integration") + report.append("- [ ] Task 4: Final validation") + + if subprocess_passed: + report.append("") + report.append("Subprocess approach also passed - both approaches available for implementation.") + else: + report.append("**Phase 0 FAILED** - FastAPI approach exceeds 0.8s threshold.") + report.append("") + report.append("Plan should be discarded. Consider alternative approaches.") + + report.append("") + report.append("## Detailed Statistics") + report.append("") + + for name, desc, data in approaches: + stats = data["statistics"] + report.append(f"### {name.title()}") + report.append("") + report.append(f"- **Description**: {data['description']}") + report.append(f"- **Timestamp**: {data['timestamp']}") + report.append(f"- **Total documents**: {stats['total_documents']}") + report.append(f"- **Successful**: {stats['successful']}") + report.append(f"- **Failed**: {stats['failed']}") + report.append(f"- **Total elapsed**: {stats['total_elapsed']:.1f}s") + report.append(f"- **Average per doc**: {stats['elapsed_per_doc']:.4f}s") + report.append(f"- **Min**: {stats['min_elapsed']:.4f}s") + report.append(f"- **Max**: {stats['max_elapsed']:.4f}s") + report.append("") + + # Write report + with open(REPORT_FILE, "w", encoding="utf-8") as f: + f.write("\n".join(report)) + + print(f"\nReport saved to: {REPORT_FILE}") + + +if __name__ == "__main__": + main() diff --git a/scripts/experiments/docling_subprocess_bench.py b/scripts/experiments/docling_subprocess_bench.py new file mode 100644 index 0000000..4209f91 --- /dev/null +++ b/scripts/experiments/docling_subprocess_bench.py @@ -0,0 +1,331 @@ +#!/usr/bin/env python3 +"""Subprocess experiment benchmark using docling SDK directly. + +Tests the subprocess approach where each PDF is processed by +invoking a Python worker script via subprocess. + +This approach has overhead from: +1. Python interpreter startup +2. Model loading per-process (unless using persistent worker) + +For this experiment, we test a persistent worker approach: +- Single Python process stays alive +- Receives PDF paths via stdin, outputs JSON via stdout + +Usage: + python scripts/experiments/docling_subprocess_bench.py + +Requirements: + - docling package installed +""" + +import base64 +import json +import subprocess +import sys +import tempfile +import time +from pathlib import Path + +# Configuration +PDF_DIR = Path(__file__).parent.parent.parent / "tests" / "benchmark" / "pdfs" +RESULTS_DIR = Path(__file__).parent.parent.parent / "docs" / "hybrid" / "experiments" +RESULTS_FILE = RESULTS_DIR / "subprocess_results.json" + +# Worker script inline - will be written to temp file +WORKER_SCRIPT = ''' +import base64 +import json +import sys +import time +import tempfile +import os + +# Initialize docling once +from docling.datamodel.base_models import InputFormat +from docling.datamodel.pipeline_options import ( + EasyOcrOptions, + PdfPipelineOptions, + TableFormerMode, + TableStructureOptions, +) +from docling.document_converter import DocumentConverter, PdfFormatOption + +print("WORKER_READY", file=sys.stderr, flush=True) + +pipeline_options = PdfPipelineOptions( + do_ocr=True, + do_table_structure=True, + ocr_options=EasyOcrOptions(force_full_page_ocr=False), + table_structure_options=TableStructureOptions( + mode=TableFormerMode.ACCURATE + ), +) + +converter = DocumentConverter( + format_options={ + InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options) + } +) + +print("CONVERTER_READY", file=sys.stderr, flush=True) + +# Process requests from stdin +for line in sys.stdin: + line = line.strip() + if not line: + continue + + try: + request = json.loads(line) + pdf_base64 = request.get("pdf_base64") + filename = request.get("filename", "document.pdf") + + # Decode and write to temp file + pdf_bytes = base64.b64decode(pdf_base64) + with tempfile.NamedTemporaryFile(suffix=".pdf", delete=False) as tmp: + tmp.write(pdf_bytes) + tmp_path = tmp.name + + try: + start = time.perf_counter() + result = converter.convert(tmp_path) + elapsed = time.perf_counter() - start + + md_content = result.document.export_to_markdown() + + response = { + "status": "success", + "filename": filename, + "markdown": md_content, + "processing_time": elapsed, + } + except Exception as e: + response = { + "status": "error", + "filename": filename, + "error": str(e), + } + finally: + os.unlink(tmp_path) + + print(json.dumps(response), flush=True) + + except Exception as e: + response = { + "status": "error", + "error": str(e), + } + print(json.dumps(response), flush=True) +''' + + +def convert_pdf(process: subprocess.Popen, pdf_path: Path) -> dict: + """Convert a single PDF using subprocess worker.""" + # Read PDF and encode as base64 + with open(pdf_path, "rb") as f: + pdf_bytes = f.read() + pdf_base64 = base64.b64encode(pdf_bytes).decode("ascii") + + # Send request + request = { + "pdf_base64": pdf_base64, + "filename": pdf_path.name, + } + + start_time = time.perf_counter() + process.stdin.write(json.dumps(request) + "\n") + process.stdin.flush() + + # Read response + response_line = process.stdout.readline() + elapsed = time.perf_counter() - start_time + + if response_line: + try: + response = json.loads(response_line) + response["client_elapsed"] = elapsed + return response + except json.JSONDecodeError as e: + return { + "filename": pdf_path.name, + "status": "error", + "error": f"JSON decode error: {e}", + "client_elapsed": elapsed, + } + else: + return { + "filename": pdf_path.name, + "status": "error", + "error": "No response from worker", + "client_elapsed": elapsed, + } + + +def main(): + """Run subprocess benchmark.""" + print("=" * 60) + print("Subprocess Experiment Benchmark") + print("=" * 60) + print(f"PDF directory: {PDF_DIR}") + print() + + # Write worker script to temp file + with tempfile.NamedTemporaryFile(mode="w", suffix=".py", delete=False) as f: + f.write(WORKER_SCRIPT) + worker_path = f.name + + print("Starting worker process...", flush=True) + + try: + # Start worker process + process = subprocess.Popen( + [sys.executable, worker_path], + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + text=True, + bufsize=1, # Line buffered + ) + + # Wait for worker to be ready (read stderr for status messages) + print("Waiting for worker to initialize (including model loading)...", flush=True) + + ready_count = 0 + while ready_count < 2: + line = process.stderr.readline() + if "WORKER_READY" in line: + ready_count += 1 + print(" - Worker process started", flush=True) + elif "CONVERTER_READY" in line: + ready_count += 1 + print(" - DocumentConverter initialized", flush=True) + elif process.poll() is not None: + print("ERROR: Worker process died unexpectedly", file=sys.stderr) + remaining_stderr = process.stderr.read() + print(remaining_stderr, file=sys.stderr) + sys.exit(1) + + print("Worker is ready.", flush=True) + print() + + # Get PDF files + pdf_files = sorted(PDF_DIR.glob("*.pdf")) + total_files = len(pdf_files) + print(f"Found {total_files} PDF files") + print() + + # Process each PDF + results = [] + total_start = time.perf_counter() + + for i, pdf_path in enumerate(pdf_files, 1): + print(f"[{i:3d}/{total_files}] Processing {pdf_path.name}...", end=" ", flush=True) + + try: + result = convert_pdf(process, pdf_path) + results.append(result) + server_time = result.get("processing_time", 0) + client_time = result.get("client_elapsed", 0) + print(f"{client_time:.2f}s (server: {server_time:.2f}s) ({result['status']})") + except Exception as e: + results.append({ + "filename": pdf_path.name, + "status": "error", + "client_elapsed": 0, + "error": str(e), + }) + print(f"ERROR: {e}") + + total_elapsed = time.perf_counter() - total_start + + finally: + # Shutdown worker + print("\nShutting down worker...", flush=True) + if process.poll() is None: + process.stdin.close() + process.terminate() + process.wait(timeout=5) + + # Clean up worker script + import os + os.unlink(worker_path) + + # Calculate statistics + successful = [r for r in results if r["status"] == "success"] + failed = [r for r in results if r["status"] != "success"] + + if successful: + client_times = [r.get("client_elapsed", 0) for r in successful] + server_times = [r.get("processing_time", 0) for r in successful] + avg_client_time = sum(client_times) / len(client_times) + avg_server_time = sum(server_times) / len(server_times) + min_time = min(client_times) + max_time = max(client_times) + else: + avg_client_time = avg_server_time = min_time = max_time = 0 + + # Print summary + print() + print("=" * 60) + print("RESULTS SUMMARY") + print("=" * 60) + print(f"Total documents: {total_files}") + print(f"Successful: {len(successful)}") + print(f"Failed: {len(failed)}") + print() + print(f"Total elapsed: {total_elapsed:.1f}s") + print(f"Average per doc: {avg_client_time:.3f}s (target: < 1.0s)") + print(f"Avg server time: {avg_server_time:.3f}s") + print(f"Min: {min_time:.3f}s") + print(f"Max: {max_time:.3f}s") + print() + + # Success/Failure check + if avg_client_time < 1.0: + print("✅ SUCCESS: Average time is below 1.0s threshold!") + else: + print("❌ FAILURE: Average time exceeds 1.0s threshold") + print(" Subprocess approach will be excluded.") + + print("=" * 60) + + # Save results + RESULTS_DIR.mkdir(parents=True, exist_ok=True) + + summary = { + "approach": "subprocess", + "description": "Persistent Python subprocess with docling SDK", + "timestamp": time.strftime("%Y-%m-%d %H:%M:%S"), + "config": { + "do_ocr": True, + "do_table_structure": True, + "worker_type": "persistent", + }, + "statistics": { + "total_documents": total_files, + "successful": len(successful), + "failed": len(failed), + "total_elapsed": round(total_elapsed, 2), + "elapsed_per_doc": round(avg_client_time, 4), + "server_time_per_doc": round(avg_server_time, 4), + "min_elapsed": round(min_time, 4), + "max_elapsed": round(max_time, 4), + }, + "threshold": { + "target": 1.0, + "passed": avg_client_time < 1.0, + }, + "details": results, + } + + with open(RESULTS_FILE, "w", encoding="utf-8") as f: + json.dump(summary, f, indent=2, ensure_ascii=False) + + print(f"\nResults saved to: {RESULTS_FILE}") + + return avg_client_time + + +if __name__ == "__main__": + main() diff --git a/scripts/generate-options.mjs b/scripts/generate-options.mjs new file mode 100644 index 0000000..9e18dff --- /dev/null +++ b/scripts/generate-options.mjs @@ -0,0 +1,547 @@ +#!/usr/bin/env node +/** + * Generates CLI option definitions for Node.js, Python, and documentation + * from the single source of truth (options.json). + * + * Usage: node scripts/generate-options.mjs + */ + +import { readFileSync, writeFileSync, mkdirSync } from 'node:fs'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { escapeMarkdown, formatTable } from './utils.mjs'; + +const __dirname = dirname(fileURLToPath(import.meta.url)); +const ROOT_DIR = join(__dirname, '..'); + +// Read options.json +const optionsPath = join(ROOT_DIR, 'options.json'); +const options = JSON.parse(readFileSync(optionsPath, 'utf-8')); + +const AUTO_GENERATED_HEADER = `// AUTO-GENERATED FROM options.json - DO NOT EDIT DIRECTLY +// Run \`npm run generate-options\` to regenerate +`; + +const AUTO_GENERATED_HEADER_PYTHON = `# AUTO-GENERATED FROM options.json - DO NOT EDIT DIRECTLY +# Run \`npm run generate-options\` to regenerate +`; + +const AUTO_GENERATED_HEADER_MDX = `{/* AUTO-GENERATED FROM options.json - DO NOT EDIT DIRECTLY */} +{/* Run \`npm run generate-options\` to regenerate */} + +`; + +/** + * Convert kebab-case to camelCase + */ +function toCamelCase(str) { + return str.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase()); +} + +/** + * Convert kebab-case to snake_case + */ +function toSnakeCase(str) { + return str.replace(/-/g, '_'); +} + +/** + * Options that accept comma-separated list values. + */ +const LIST_OPTIONS = new Set(['format', 'content-safety-off']); + +/** + * Check if option supports list values. + */ +function isListOption(opt) { + return LIST_OPTIONS.has(opt.name); +} + +/** + * Escape string for use in generated code. + * @param {string} str - The string to escape + * @param {string} quote - The quote character (' or ") + * @param {object} options - Additional escape options + * @param {boolean} options.escapePercent - Escape % as %% for Python argparse + */ +function escapeString(str, quote = "'", { escapePercent = false } = {}) { + let result = str.replace(/\\/g, '\\\\'); // escape backslashes first + if (quote === "'") { + result = result.replace(/'/g, "\\'"); + } else { + result = result.replace(/"/g, '\\"'); + } + if (escapePercent) { + result = result.replace(/%/g, '%%'); + } + return result; +} + +/** + * Generate Node.js CLI options file + */ +function generateNodeCliOptions() { + const lines = [AUTO_GENERATED_HEADER]; + lines.push(`import { Command } from 'commander';`); + lines.push(''); + lines.push('/**'); + lines.push(' * Register all CLI options on the given Commander program.'); + lines.push(' */'); + lines.push('export function registerCliOptions(program: Command): void {'); + + for (const opt of options.options) { + const flags = opt.shortName + ? `-${opt.shortName}, --${opt.name}${opt.type === 'string' ? ' ' : ''}` + : `--${opt.name}${opt.type === 'string' ? ' ' : ''}`; + + const description = escapeString(opt.description, "'"); + lines.push(` program.option('${flags}', '${description}');`); + } + + lines.push('}'); + lines.push(''); + + const outputPath = join(ROOT_DIR, 'node/opendataloader-pdf/src/cli-options.generated.ts'); + writeFileSync(outputPath, lines.join('\n')); + console.log(`Generated: ${outputPath}`); +} + +/** + * Generate Node.js ConvertOptions interface and helper functions + */ +function generateNodeConvertOptions() { + const lines = [AUTO_GENERATED_HEADER]; + + // Generate ConvertOptions interface + lines.push('/**'); + lines.push(' * Options for the convert function.'); + lines.push(' */'); + lines.push('export interface ConvertOptions {'); + + for (const opt of options.options) { + const camelName = toCamelCase(opt.name); + let tsType = 'string'; + + if (opt.type === 'boolean') { + tsType = 'boolean'; + } else if (isListOption(opt)) { + tsType = 'string | string[]'; + } + + lines.push(` /** ${opt.description} */`); + lines.push(` ${camelName}?: ${tsType};`); + } + + lines.push('}'); + lines.push(''); + + // Generate CliOptions interface (for CLI parsing - all values are strings from commander) + lines.push('/**'); + lines.push(' * Options as parsed from CLI (all values are strings from commander).'); + lines.push(' */'); + lines.push('export interface CliOptions {'); + + for (const opt of options.options) { + const camelName = toCamelCase(opt.name); + const tsType = opt.type === 'boolean' ? 'boolean' : 'string'; + lines.push(` ${camelName}?: ${tsType};`); + } + + lines.push('}'); + lines.push(''); + + // Generate buildConvertOptions function + lines.push('/**'); + lines.push(' * Convert CLI options to ConvertOptions.'); + lines.push(' */'); + lines.push('export function buildConvertOptions(cliOptions: CliOptions): ConvertOptions {'); + lines.push(' const convertOptions: ConvertOptions = {};'); + lines.push(''); + + for (const opt of options.options) { + const camelName = toCamelCase(opt.name); + if (opt.type === 'boolean') { + lines.push(` if (cliOptions.${camelName}) {`); + lines.push(` convertOptions.${camelName} = true;`); + lines.push(' }'); + } else { + lines.push(` if (cliOptions.${camelName}) {`); + lines.push(` convertOptions.${camelName} = cliOptions.${camelName};`); + lines.push(' }'); + } + } + + lines.push(''); + lines.push(' return convertOptions;'); + lines.push('}'); + lines.push(''); + + // Generate buildArgs function + lines.push('/**'); + lines.push(' * Build CLI arguments array from ConvertOptions.'); + lines.push(' */'); + lines.push('export function buildArgs(options: ConvertOptions): string[] {'); + lines.push(' const args: string[] = [];'); + lines.push(''); + + for (const opt of options.options) { + const camelName = toCamelCase(opt.name); + const cliFlag = `--${opt.name}`; + + if (opt.type === 'boolean') { + lines.push(` if (options.${camelName}) {`); + lines.push(` args.push('${cliFlag}');`); + lines.push(' }'); + } else if (isListOption(opt)) { + lines.push(` if (options.${camelName}) {`); + lines.push(` if (Array.isArray(options.${camelName})) {`); + lines.push(` if (options.${camelName}.length > 0) {`); + lines.push(` args.push('${cliFlag}', options.${camelName}.join(','));`); + lines.push(' }'); + lines.push(' } else {'); + lines.push(` args.push('${cliFlag}', options.${camelName});`); + lines.push(' }'); + lines.push(' }'); + } else { + lines.push(` if (options.${camelName}) {`); + lines.push(` args.push('${cliFlag}', options.${camelName});`); + lines.push(' }'); + } + } + + lines.push(''); + lines.push(' return args;'); + lines.push('}'); + lines.push(''); + + const outputPath = join(ROOT_DIR, 'node/opendataloader-pdf/src/convert-options.generated.ts'); + writeFileSync(outputPath, lines.join('\n')); + console.log(`Generated: ${outputPath}`); +} + +/** + * Generate Python CLI options file (cli_options.py) + */ +function generatePythonCliOptions() { + const lines = [AUTO_GENERATED_HEADER_PYTHON]; + lines.push('"""'); + lines.push('CLI option definitions for opendataloader-pdf.'); + lines.push('"""'); + lines.push('from typing import Any, Dict, List'); + lines.push(''); + lines.push(''); + lines.push('# Option metadata list'); + lines.push('CLI_OPTIONS: List[Dict[str, Any]] = ['); + + for (const opt of options.options) { + const snakeName = toSnakeCase(opt.name); + const defaultValue = opt.default === null ? 'None' + : typeof opt.default === 'boolean' ? (opt.default ? 'True' : 'False') + : `"${opt.default}"`; + + lines.push(' {'); + lines.push(` "name": "${opt.name}",`); + lines.push(` "python_name": "${snakeName}",`); + lines.push(` "short_name": ${opt.shortName ? `"${opt.shortName}"` : 'None'},`); + lines.push(` "type": "${opt.type}",`); + lines.push(` "required": ${opt.required ? 'True' : 'False'},`); + lines.push(` "default": ${defaultValue},`); + lines.push(` "description": "${escapeString(opt.description, '"', { escapePercent: true })}",`); + lines.push(' },'); + } + + lines.push(']'); + lines.push(''); + lines.push(''); + lines.push('def add_options_to_parser(parser) -> None:'); + lines.push(' """Add all CLI options to an argparse.ArgumentParser."""'); + lines.push(' for opt in CLI_OPTIONS:'); + lines.push(' flags = []'); + lines.push(' if opt["short_name"]:'); + lines.push(" flags.append(f'-{opt[\"short_name\"]}')"); + lines.push(" flags.append(f'--{opt[\"name\"]}')"); + lines.push(''); + lines.push(' kwargs = {"help": opt["description"]}'); + lines.push(' if opt["type"] == "boolean":'); + lines.push(' kwargs["action"] = "store_true"'); + lines.push(' else:'); + lines.push(' kwargs["default"] = None'); + lines.push(''); + lines.push(' parser.add_argument(*flags, **kwargs)'); + lines.push(''); + + const outputPath = join(ROOT_DIR, 'python/opendataloader-pdf/src/opendataloader_pdf/cli_options_generated.py'); + mkdirSync(dirname(outputPath), { recursive: true }); + writeFileSync(outputPath, lines.join('\n')); + console.log(`Generated: ${outputPath}`); +} + +/** + * Generate Python convert function (convert.py) + */ +function generatePythonConvert() { + const lines = [AUTO_GENERATED_HEADER_PYTHON]; + lines.push('"""'); + lines.push('Auto-generated convert function for opendataloader-pdf.'); + lines.push('"""'); + lines.push('from typing import List, Optional, Union'); + lines.push(''); + lines.push('from .runner import run_jar'); + lines.push(''); + lines.push(''); + + // Generate function signature + lines.push('def convert('); + lines.push(' input_path: Union[str, List[str]],'); + + for (const opt of options.options) { + const snakeName = toSnakeCase(opt.name); + let typeHint; + let defaultVal; + + if (opt.type === 'boolean') { + typeHint = 'bool'; + defaultVal = opt.default ? 'True' : 'False'; + } else if (isListOption(opt)) { + typeHint = 'Optional[Union[str, List[str]]]'; + defaultVal = 'None'; + } else { + typeHint = 'Optional[str]'; + defaultVal = 'None'; + } + + lines.push(` ${snakeName}: ${typeHint} = ${defaultVal},`); + } + + lines.push(') -> None:'); + lines.push(' """'); + lines.push(' Convert PDF(s) into the requested output format(s).'); + lines.push(''); + lines.push(' Args:'); + lines.push(' input_path: One or more input PDF file paths or directories'); + + for (const opt of options.options) { + const snakeName = toSnakeCase(opt.name); + lines.push(` ${snakeName}: ${opt.description}`); + } + + lines.push(' """'); + + // Generate function body + lines.push(' args: List[str] = []'); + lines.push(''); + lines.push(' # Build input paths'); + lines.push(' if isinstance(input_path, list):'); + lines.push(' args.extend(input_path)'); + lines.push(' else:'); + lines.push(' args.append(input_path)'); + lines.push(''); + + // Generate args building for each option + for (const opt of options.options) { + const snakeName = toSnakeCase(opt.name); + const cliFlag = `--${opt.name}`; + + if (opt.type === 'boolean') { + lines.push(` if ${snakeName}:`); + lines.push(` args.append("${cliFlag}")`); + } else if (isListOption(opt)) { + lines.push(` if ${snakeName}:`); + lines.push(` if isinstance(${snakeName}, list):`); + lines.push(` if ${snakeName}:`); + lines.push(` args.extend(["${cliFlag}", ",".join(${snakeName})])`); + lines.push(` else:`); + lines.push(` args.extend(["${cliFlag}", ${snakeName}])`); + } else { + lines.push(` if ${snakeName}:`); + lines.push(` args.extend(["${cliFlag}", ${snakeName}])`); + } + } + + lines.push(''); + lines.push(' run_jar(args, quiet)'); + lines.push(''); + + const outputPath = join(ROOT_DIR, 'python/opendataloader-pdf/src/opendataloader_pdf/convert_generated.py'); + mkdirSync(dirname(outputPath), { recursive: true }); + writeFileSync(outputPath, lines.join('\n')); + console.log(`Generated: ${outputPath}`); +} + +/** + * Generate Python convert() options table (MDX snippet) + */ +function generatePythonConvertOptionsMdx() { + const lines = []; + lines.push('---'); + lines.push('title: Python Convert Options'); + lines.push('description: Options for the Python convert function'); + lines.push('---'); + lines.push(''); + lines.push(AUTO_GENERATED_HEADER_MDX); + + // Build rows array + const rows = []; + + // Add input_path first (not in options.json) + rows.push(['`input_path`', String.raw`\`str \| list[str]\``, 'required', 'One or more input PDF file paths or directories']); + + for (const opt of options.options) { + const snakeName = toSnakeCase(opt.name); + let pyType = 'str'; + if (opt.type === 'boolean') { + pyType = 'bool'; + } else if (isListOption(opt)) { + pyType = String.raw`str \| list[str]`; + } + + const defaultVal = opt.default === null ? '-' + : typeof opt.default === 'boolean' ? (opt.default ? '`True`' : '`False`') + : `\`"${opt.default}"\``; + + const description = escapeMarkdown(opt.description); + rows.push([`\`${snakeName}\``, `\`${pyType}\``, defaultVal, description]); + } + + lines.push(...formatTable(['Parameter', 'Type', 'Default', 'Description'], rows)); + lines.push(''); + + const outputPath = join(ROOT_DIR, 'content/docs/reference/python-convert-options.mdx'); + mkdirSync(dirname(outputPath), { recursive: true }); + writeFileSync(outputPath, lines.join('\n')); + console.log(`Generated: ${outputPath}`); +} + +/** + * Generate Node.js convert() options table (MDX snippet) + */ +function generateNodeConvertOptionsMdx() { + const lines = []; + lines.push('---'); + lines.push('title: Node.js Convert Options'); + lines.push('description: Options for the Node.js convert function'); + lines.push('---'); + lines.push(''); + lines.push(AUTO_GENERATED_HEADER_MDX); + + // Build rows array + const rows = []; + + for (const opt of options.options) { + const camelName = toCamelCase(opt.name); + let tsType = 'string'; + if (opt.type === 'boolean') { + tsType = 'boolean'; + } else if (isListOption(opt)) { + tsType = String.raw`string \| string[]`; + } + + const defaultVal = opt.default === null ? '-' + : typeof opt.default === 'boolean' ? `\`${opt.default}\`` + : `\`"${opt.default}"\``; + + const description = escapeMarkdown(opt.description); + rows.push([`\`${camelName}\``, `\`${tsType}\``, defaultVal, description]); + } + + lines.push(...formatTable(['Option', 'Type', 'Default', 'Description'], rows)); + lines.push(''); + + const outputPath = join(ROOT_DIR, 'content/docs/reference/node-convert-options.mdx'); + mkdirSync(dirname(outputPath), { recursive: true }); + writeFileSync(outputPath, lines.join('\n')); + console.log(`Generated: ${outputPath}`); +} + +/** + * Generate options reference documentation (MDX) + */ +function generateOptionsReferenceMdx() { + // Build rows array + const rows = []; + + for (const opt of options.options) { + const longOpt = `\`--${opt.name}\``; + const shortOpt = opt.shortName ? `\`-${opt.shortName}\`` : '-'; + const type = `\`${opt.type}\``; + const defaultVal = opt.default === null ? '-' + : typeof opt.default === 'boolean' ? `\`${opt.default}\`` + : `\`"${opt.default}"\``; + const description = escapeMarkdown(opt.description); + + rows.push([longOpt, shortOpt, type, defaultVal, description]); + } + + const lines = [ + '---', + 'title: CLI Options Reference', + 'description: Complete reference for all CLI options', + '---', + '', + AUTO_GENERATED_HEADER_MDX.trimEnd(), + '# CLI Options Reference', + '', + 'This page documents all available CLI options for opendataloader-pdf.', + '', + '## Options', + '', + ...formatTable(['Option', 'Short', 'Type', 'Default', 'Description'], rows), + '', + '## Examples', + '', + '### Basic conversion', + '', + '```bash', + 'opendataloader-pdf document.pdf -o ./output -f json,markdown', + '```', + '', + '### Convert entire folder', + '', + '```bash', + 'opendataloader-pdf ./pdf-folder -o ./output -f json', + '```', + '', + '### Save images as external files', + '', + '```bash', + 'opendataloader-pdf document.pdf -f markdown --image-output external', + '```', + '', + '### Disable reading order sorting', + '', + '```bash', + 'opendataloader-pdf document.pdf -f json --reading-order off', + '```', + '', + '### Add page separators in output', + '', + '```bash', + 'opendataloader-pdf document.pdf -f markdown --markdown-page-separator "--- Page %page-number% ---"', + '```', + '', + '### Encrypted PDF', + '', + '```bash', + 'opendataloader-pdf encrypted.pdf -p mypassword -o ./output', + '```', + '', + ]; + + const outputPath = join(ROOT_DIR, 'content/docs/reference/cli-options.mdx'); + mkdirSync(dirname(outputPath), { recursive: true }); + writeFileSync(outputPath, lines.join('\n')); + console.log(`Generated: ${outputPath}`); +} + +// Run all generators +console.log('Generating files from options.json...\n'); + +generateNodeCliOptions(); +generateNodeConvertOptions(); +generatePythonCliOptions(); +generatePythonConvert(); +generateOptionsReferenceMdx(); +generatePythonConvertOptionsMdx(); +generateNodeConvertOptionsMdx(); + +console.log('\nDone!'); diff --git a/scripts/generate-schema.mjs b/scripts/generate-schema.mjs new file mode 100644 index 0000000..efc6717 --- /dev/null +++ b/scripts/generate-schema.mjs @@ -0,0 +1,263 @@ +#!/usr/bin/env node +/** + * Generates JSON Schema documentation from the single source of truth (schema.json). + * + * Usage: node scripts/generate-schema.mjs + */ + +import { readFileSync, writeFileSync, mkdirSync } from 'node:fs'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { escapeMarkdown, formatTable } from './utils.mjs'; + +const __dirname = dirname(fileURLToPath(import.meta.url)); +const ROOT_DIR = join(__dirname, '..'); + +// Read schema.json +const schemaPath = join(ROOT_DIR, 'schema.json'); +const schema = JSON.parse(readFileSync(schemaPath, 'utf-8')); + +const AUTO_GENERATED_HEADER_MDX = `{/* AUTO-GENERATED FROM schema.json - DO NOT EDIT DIRECTLY */} +{/* Run \`npm run generate-schema\` to regenerate */} + +`; + +/** + * Get JSON Schema type as a readable string. + */ +function formatType(prop) { + if (!prop) return 'any'; + + if (prop.$ref) { + const refName = prop.$ref.split('/').pop(); + return `\`${refName}\``; + } + + if (prop.oneOf) { + return prop.oneOf.map(formatType).join(' \\| '); + } + + if (prop.const) { + return `\`"${prop.const}"\``; + } + + if (prop.enum) { + return prop.enum.map(v => `\`${v}\``).join(', '); + } + + if (Array.isArray(prop.type)) { + return prop.type.map(t => `\`${t}\``).join(' \\| '); + } + + if (prop.type === 'array') { + if (prop.items) { + return `\`array\``; + } + return `\`array\``; + } + + return `\`${prop.type || 'any'}\``; +} + +/** + * Check if a property is required. + */ +function isRequired(propName, requiredList) { + return requiredList && requiredList.includes(propName); +} + +/** + * Generate JSON Schema documentation (MDX). + */ +function generateJsonSchemaMdx() { + const lines = []; + lines.push('---'); + lines.push('title: JSON Schema'); + lines.push('description: Understand the layout structure emitted by OpenDataLoader PDF'); + lines.push('---'); + lines.push(''); + lines.push(AUTO_GENERATED_HEADER_MDX); + + lines.push('Every conversion that includes the `json` format produces a hierarchical document describing detected elements (pages, tables, lists, captions, etc.). Use the following reference to map fields into your downstream processors.'); + lines.push(''); + + // Helper to build rows from schema properties + const buildRows = (properties, requiredList) => + Object.entries(properties).map(([name, prop]) => [ + `\`${name}\``, + formatType(prop), + isRequired(name, requiredList) ? 'Yes' : 'No', + escapeMarkdown(prop.description || '') + ]); + + // Root node + const rootRows = buildRows(schema.properties, schema.required); + lines.push( + '## Root node', + '', + ...formatTable(['Field', 'Type', 'Required', 'Description'], rootRows), + '' + ); + + // Common content fields (baseElement) + const baseElement = schema.$defs.baseElement; + const baseRows = buildRows(baseElement.properties, baseElement.required); + lines.push( + '## Common content fields', + '', + 'All content elements share these base properties:', + '', + ...formatTable(['Field', 'Type', 'Required', 'Description'], baseRows), + '' + ); + + // Text properties + const textProps = schema.$defs.textProperties; + const textRows = buildRows(textProps.properties, textProps.required); + lines.push( + '## Text properties', + '', + 'Text nodes (`paragraph`, `heading`, `caption`, `list item`) include these additional fields:', + '', + ...formatTable(['Field', 'Type', 'Required', 'Description'], textRows), + '' + ); + + // Headings + lines.push( + '## Headings', + '', + ...formatTable(['Field', 'Type', 'Required', 'Description'], [ + ['`heading level`', '`integer`', 'Yes', 'Heading level (e.g., 1 for h1)'] + ]), + '' + ); + + // Captions + lines.push( + '## Captions', + '', + ...formatTable(['Field', 'Type', 'Required', 'Description'], [ + ['`linked content id`', '`integer`', 'No', 'ID of the linked content element (table, image, etc.)'] + ]), + '' + ); + + // Tables + lines.push( + '## Tables', + '', + ...formatTable(['Field', 'Type', 'Required', 'Description'], [ + ['`number of rows`', '`integer`', 'Yes', 'Row count'], + ['`number of columns`', '`integer`', 'Yes', 'Column count'], + ['`previous table id`', '`integer`', 'No', 'Linked table identifier (if broken across pages)'], + ['`next table id`', '`integer`', 'No', 'Linked table identifier'], + ['`rows`', '`array`', 'Yes', 'Row objects'] + ]), + '' + ); + + // Table rows + lines.push( + '### Table rows', + '', + ...formatTable(['Field', 'Type', 'Required', 'Description'], [ + ['`type`', '`"table row"`', 'Yes', 'Element type'], + ['`row number`', '`integer`', 'Yes', 'Row index (1-indexed)'], + ['`cells`', '`array`', 'Yes', 'Cell objects'] + ]), + '' + ); + + // Table cells + lines.push( + '### Table cells', + '', + ...formatTable(['Field', 'Type', 'Required', 'Description'], [ + ['`row number`', '`integer`', 'Yes', 'Row index of the cell (1-indexed)'], + ['`column number`', '`integer`', 'Yes', 'Column index of the cell (1-indexed)'], + ['`row span`', '`integer`', 'Yes', 'Number of rows spanned'], + ['`column span`', '`integer`', 'Yes', 'Number of columns spanned'], + ['`kids`', '`array`', 'Yes', 'Nested content elements'] + ]), + '' + ); + + // Lists + lines.push( + '## Lists', + '', + ...formatTable(['Field', 'Type', 'Required', 'Description'], [ + ['`numbering style`', '`string`', 'Yes', 'Marker style (ordered, bullet, etc.)'], + ['`number of list items`', '`integer`', 'Yes', 'Item count'], + ['`previous list id`', '`integer`', 'No', 'Linked list identifier'], + ['`next list id`', '`integer`', 'No', 'Linked list identifier'], + ['`list items`', '`array`', 'Yes', 'Item nodes'] + ]), + '' + ); + + // List items + lines.push( + '### List items', + '', + 'List items include text properties plus:', + '', + ...formatTable(['Field', 'Type', 'Required', 'Description'], [ + ['`kids`', '`array`', 'Yes', 'Nested content elements'] + ]), + '' + ); + + // Images + lines.push( + '## Images', + '', + ...formatTable(['Field', 'Type', 'Required', 'Description'], [ + ['`source`', '`string`', 'No', 'Relative path to the image file'], + ['`data`', '`string`', 'No', 'Base64 data URI (when image-output is "embedded")'], + ['`format`', '`string`', 'No', 'Image format (`png`, `jpeg`)'] + ]), + '' + ); + + // Headers and footers + lines.push( + '## Headers and footers', + '', + ...formatTable(['Field', 'Type', 'Required', 'Description'], [ + ['`type`', '`string`', 'Yes', 'Either `header` or `footer`'], + ['`kids`', '`array`', 'Yes', 'Content elements within the header or footer'] + ]), + '' + ); + + // Text blocks + lines.push( + '## Text blocks', + '', + ...formatTable(['Field', 'Type', 'Required', 'Description'], [ + ['`kids`', '`array`', 'Yes', 'Text block children'] + ]), + '' + ); + + lines.push( + '## JSON Schema', + '', + 'The complete JSON Schema is available at [`schema.json`](https://github.com/opendataloader-project/opendataloader-pdf/blob/main/schema.json) in the repository root.' + ); + lines.push(''); + + const outputPath = join(ROOT_DIR, 'content/docs/reference/json-schema.mdx'); + mkdirSync(dirname(outputPath), { recursive: true }); + writeFileSync(outputPath, lines.join('\n')); + console.log(`Generated: ${outputPath}`); +} + +// Run all generators +console.log('Generating files from schema.json...\n'); + +generateJsonSchemaMdx(); + +console.log('\nDone!'); diff --git a/scripts/run-cli.sh b/scripts/run-cli.sh new file mode 100755 index 0000000..5a0bc17 --- /dev/null +++ b/scripts/run-cli.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +# Run the Java CLI directly +# Usage: ./scripts/run-cli.sh [options] [input...] +# +# If no arguments: uses DEFAULT_ARGS +# If arguments given: uses only the provided arguments +# +# Examples: +# ./scripts/run-cli.sh # Use defaults +# ./scripts/run-cli.sh -f markdown my.pdf # Custom args only + +set -e + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +ROOT_DIR="$SCRIPT_DIR/.." +JAR_DIR="$ROOT_DIR/java/opendataloader-pdf-cli/target" + +# Defaults (used only when no arguments provided) +DEFAULT_ARGS=("-f" "json,markdown,html,pdf" "-o" "$ROOT_DIR/samples/temp" "$ROOT_DIR/samples/pdf") + +# Check if Java is installed +command -v java >/dev/null || { echo "Error: java not found"; exit 1; } + +# Find the shaded JAR (excludes original-* and *-sources.jar) +find_jar() { + find "$JAR_DIR" -maxdepth 1 -name "opendataloader-pdf-cli-*.jar" \ + ! -name "original-*" \ + ! -name "*-sources.jar" \ + ! -name "*-javadoc.jar" \ + 2>/dev/null | head -1 +} + +JAR_PATH=$(find_jar) + +# Build JAR if it doesn't exist +if [ -z "$JAR_PATH" ] || [ ! -f "$JAR_PATH" ]; then + echo "JAR not found. Building..." + cd "$ROOT_DIR/java" + mvn -B package -DskipTests -q + cd "$ROOT_DIR" + JAR_PATH=$(find_jar) +fi + +if [ -z "$JAR_PATH" ]; then + echo "Error: Could not find CLI JAR file" + exit 1 +fi + +# Use defaults if no arguments, otherwise use provided arguments only +if [ $# -eq 0 ]; then + ARGS=("${DEFAULT_ARGS[@]}") +else + ARGS=("$@") +fi + +# Run the CLI. Headless flags suppress the macOS Dock icon / focus theft when +# AWT/ImageIO/PDFBox initialize. Safe on all OSes — the CLI never opens a UI. +java -Djava.awt.headless=true -Dapple.awt.UIElement=true -jar "$JAR_PATH" "${ARGS[@]}" diff --git a/scripts/test-java.sh b/scripts/test-java.sh new file mode 100755 index 0000000..d6e6a95 --- /dev/null +++ b/scripts/test-java.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# Local development test script for Java package +# For CI/CD builds, use build-java.sh instead + +set -e + +# Prerequisites +command -v java >/dev/null || { echo "Error: java not found"; exit 1; } +command -v mvn >/dev/null || { echo "Error: mvn not found"; exit 1; } + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +ROOT_DIR="$SCRIPT_DIR/.." +PACKAGE_DIR="$ROOT_DIR/java" +cd "$PACKAGE_DIR" + +# Run tests +mvn test "$@" diff --git a/scripts/test-node.sh b/scripts/test-node.sh new file mode 100755 index 0000000..ea93433 --- /dev/null +++ b/scripts/test-node.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Local development test script for Node.js package +# For CI/CD builds, use build-node.sh instead + +set -e + +# Prerequisites +command -v node >/dev/null || { echo "Error: node not found"; exit 1; } +command -v pnpm >/dev/null || { echo "Error: pnpm not found"; exit 1; } + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +ROOT_DIR="$SCRIPT_DIR/.." +PACKAGE_DIR="$ROOT_DIR/node/opendataloader-pdf" +cd "$PACKAGE_DIR" + +# Install dependencies (if needed) +pnpm install + +# Run tests +pnpm test "$@" diff --git a/scripts/test-python.sh b/scripts/test-python.sh new file mode 100755 index 0000000..24ed0e1 --- /dev/null +++ b/scripts/test-python.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# Local development test script for Python package using uv +# For CI/CD builds, use build-python.sh instead + +set -e + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +ROOT_DIR="$SCRIPT_DIR/.." +PACKAGE_DIR="$ROOT_DIR/python/opendataloader-pdf" +cd "$PACKAGE_DIR" + +# Check uv is available +command -v uv >/dev/null || { echo "Error: uv not found. Install with: curl -LsSf https://astral.sh/uv/install.sh | sh"; exit 1; } + +# Sync dependencies and run tests +uv sync +uv run pytest tests -v -s "$@" diff --git a/scripts/utils.mjs b/scripts/utils.mjs new file mode 100644 index 0000000..846af4f --- /dev/null +++ b/scripts/utils.mjs @@ -0,0 +1,48 @@ +/** + * Shared utilities for code generation scripts. + */ + +/** + * Escape string for use in Markdown table cells. + * @param {string} str - The string to escape + * @returns {string} - Escaped string safe for Markdown tables + */ +export function escapeMarkdown(str) { + if (!str) return ''; + return str + .replace(/\\/g, String.raw`\\`) // escape backslashes first + .replace(/\|/g, String.raw`\|`) // escape pipe characters + .replace(/`/g, String.raw`\``) // escape backticks + .replace(/\*/g, String.raw`\*`) // escape asterisks + .replace(/_/g, String.raw`\_`) // escape underscores + .replace(//g, '>'); +} + +/** + * Format a markdown table with aligned columns. + * @param {string[]} headers - Table headers + * @param {string[][]} rows - Table rows (each row is an array of cell values) + * @returns {string[]} - Formatted table lines + */ +export function formatTable(headers, rows) { + // Calculate max width for each column + const colWidths = headers.map((h, i) => { + const headerLen = h.length; + const maxRowLen = rows.reduce((max, row) => Math.max(max, (row[i] || '').length), 0); + return Math.max(headerLen, maxRowLen); + }); + + // Build header row + const headerRow = '| ' + headers.map((h, i) => h.padEnd(colWidths[i])).join(' | ') + ' |'; + + // Build separator row + const separatorRow = '|' + colWidths.map(w => '-'.repeat(w + 2)).join('|') + '|'; + + // Build data rows + const dataRows = rows.map(row => + '| ' + row.map((cell, i) => (cell || '').padEnd(colWidths[i])).join(' | ') + ' |' + ); + + return [headerRow, separatorRow, ...dataRows]; +} diff --git a/scripts/verify-python-sdist.sh b/scripts/verify-python-sdist.sh new file mode 100755 index 0000000..daf4d1f --- /dev/null +++ b/scripts/verify-python-sdist.sh @@ -0,0 +1,67 @@ +#!/bin/bash + +# Verify the Python sdist contains all required files (JAR, LICENSE, etc). +# The files listed below are gitignored in the package dir and only exist in +# the dist because [tool.hatch.build] artifacts force-includes them. This +# script guards against silent regressions if that config ever drifts. +# +# Usage: ./scripts/verify-python-sdist.sh +# Prerequisite: run 'uv build' (or scripts/build-python.sh) first. + +set -e + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +ROOT_DIR="$SCRIPT_DIR/.." +DIST_DIR="$ROOT_DIR/python/opendataloader-pdf/dist" + +shopt -s nullglob +SDIST_CANDIDATES=("$DIST_DIR"/*.tar.gz) +shopt -u nullglob + +if [ ${#SDIST_CANDIDATES[@]} -eq 0 ]; then + echo "Error: no sdist found in $DIST_DIR. Run 'uv build' first." >&2 + exit 1 +fi +if [ ${#SDIST_CANDIDATES[@]} -gt 1 ]; then + echo "Error: multiple sdists found in $DIST_DIR. Remove stale ones first:" >&2 + printf ' - %s\n' "${SDIST_CANDIDATES[@]}" >&2 + exit 1 +fi +SDIST="${SDIST_CANDIDATES[0]}" + +echo "Verifying sdist: $(basename "$SDIST")" + +REQUIRED=( + "jar/opendataloader-pdf-cli.jar" + "LICENSE" + "NOTICE" + "THIRD_PARTY/" +) + +CONTENTS=$(tar -tzf "$SDIST") +MISSING=() +for path in "${REQUIRED[@]}"; do + # Directory prefixes (trailing '/') match any entry under that prefix. + # File paths are anchored to end-of-line so "LICENSE" does not match "LICENSE.bak". + # (^|/) prefix keeps the check layout-tolerant if hatchling ever emits + # a differently-rooted sdist (e.g., without the top-level pkgname-version/ dir). + if [[ "$path" == */ ]]; then + pattern="(^|/)src/opendataloader_pdf/${path}" + else + pattern="(^|/)src/opendataloader_pdf/${path}\$" + fi + if ! echo "$CONTENTS" | grep -qE "$pattern"; then + MISSING+=("$path") + fi +done + +if [ ${#MISSING[@]} -gt 0 ]; then + echo "Error: sdist is missing required files:" >&2 + printf ' - src/opendataloader_pdf/%s\n' "${MISSING[@]}" >&2 + echo "" >&2 + echo "Fix: ensure [tool.hatch.build] in pyproject.toml lists these under 'artifacts'." >&2 + echo "(They are gitignored, so hatch drops them unless force-included.)" >&2 + exit 1 +fi + +echo "OK: sdist contains all required files." diff --git a/verification/ci-verify.py b/verification/ci-verify.py new file mode 100644 index 0000000..0dd3e12 --- /dev/null +++ b/verification/ci-verify.py @@ -0,0 +1,1570 @@ +#!/usr/bin/env python3 +""" +CI verification script for opendataloader-pdf CLI options. +Three-level verification: Smoke / Content assertion / Comparison. +""" + +import glob +import json +import os +import re +import shutil +import subprocess +import sys +import tempfile + +# Force stdout/stderr to UTF-8 so this script does not crash when JAR output +# contains characters outside the system locale (e.g. cp949 on Korean Windows). +# Linux CI runners use UTF-8 by default; this is a no-op there. +if sys.platform == "win32": + try: + sys.stdout.reconfigure(encoding="utf-8", errors="replace") + sys.stderr.reconfigure(encoding="utf-8", errors="replace") + except AttributeError: + pass + +# --------------------------------------------------------------------------- +# Repository root (two levels up from this file: verification/ci-verify.py) +# --------------------------------------------------------------------------- +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + +# --------------------------------------------------------------------------- +# PDF Fixtures +# --------------------------------------------------------------------------- +PDF_BASIC = os.path.join(REPO_ROOT, "samples/pdf/lorem.pdf") +PDF_MULTIPAGE = os.path.join(REPO_ROOT, "samples/pdf/2408.02509v1.pdf") +PDF_IMAGES = os.path.join(REPO_ROOT, "samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-06_Brochure.pdf") +PDF_TABLES = os.path.join(REPO_ROOT, "samples/pdf/issue-336-conto-economico-bialetti.pdf") +PDF_STRUCTURED = os.path.join(REPO_ROOT, "samples/pdf/pdfua-1-reference-suite-1-1/PDFUA-Ref-2-08_BookChapter.pdf") +PDF_PASSWORD = os.path.join(REPO_ROOT, "samples/pdf/password-protected.pdf") +PDF_STRIKETHROUGH = os.path.join(REPO_ROOT, "samples/pdf/strikethrough.pdf") +# strikethrough.pdf carries a /StrikeOut markup annotation, which the current +# line-based detection does not see. Native annotation support is in progress +# upstream (veraPDF isStrikethroughText property): +# https://github.com/opendataloader-project/opendataloader-pdf-tasks/issues/348 +# Flip to False to re-enable the check once that lands. +STRIKETHROUGH_KNOWN_ISSUE = True +PDF_INVALID_CHARS = os.path.join(REPO_ROOT, "samples/pdf/invalid-chars.pdf") +PDF_SANITIZE = os.path.join(REPO_ROOT, "samples/pdf/sanitize-target.pdf") +PDF_SAFETY = os.path.join(REPO_ROOT, "samples/pdf/safety-trigger.pdf") +PDF_FAKE_JPG = os.path.join(REPO_ROOT, "samples/pdf/fake-jpg.pdf") +PDF_EMPTY = os.path.join(REPO_ROOT, "samples/pdf/empty.pdf") +PNG_FILE = os.path.join(REPO_ROOT, "samples/pdf/abcd.png") +MIXED_DIR = os.path.join(REPO_ROOT, "samples/pdf/mixed") +PDF_SANITIZATION_TARGETS = os.path.join(REPO_ROOT, "samples/pdf/sanitization-targets.pdf") +PASSWORD = "test" + +# --------------------------------------------------------------------------- +# Stack-trace leakage markers — must NEVER appear in user-facing output. +# When the CLI catches a Java exception (bad PDF, unreadable file, etc.) it +# is expected to surface a friendly one-line error, not a raw veraPDF or +# java.io stack trace. +# --------------------------------------------------------------------------- +STACK_TRACE_LEAK_MARKERS = ( + "org.verapdf", + "java.io.IOException:", + "\tat ", +) + +# --------------------------------------------------------------------------- +# Option coverage registries +# --------------------------------------------------------------------------- +COVERED_OPTIONS = { + "--format", "--output-dir", "--quiet", "--to-stdout", + "--password", "--keep-line-breaks", "--replace-invalid-chars", + "--pages", "--include-header-footer", "--detect-strikethrough", + "--sanitize", "--content-safety-off", "--use-struct-tree", + "--table-method", "--reading-order", "--threads", + "--image-output", "--image-format", "--image-dir", + "--markdown-with-html", + "--markdown-page-separator", "--text-page-separator", "--html-page-separator", +} + +HYBRID_OPTIONS = { + "--hybrid", "--hybrid-mode", "--hybrid-timeout", + "--hybrid-fallback", "--hybrid-url", + "--hybrid-hancom-ai-regionlist-strategy", + "--hybrid-hancom-ai-ocr-strategy", + "--hybrid-hancom-ai-image-cache", +} + +# --------------------------------------------------------------------------- +# Global results accumulator +# --------------------------------------------------------------------------- +RESULTS: list[tuple[str, bool | None]] = [] + + +# --------------------------------------------------------------------------- +# Core helpers +# --------------------------------------------------------------------------- + +def run_cli( + args: list[str], capture_output: bool = True, timeout: int = 120 +) -> subprocess.CompletedProcess: + """Run the opendataloader-pdf CLI with given args using sys.executable for portability. + + Forces UTF-8 decoding with errors=replace so the runner does not crash on + non-ASCII output under non-UTF-8 system locales (e.g. cp949 on Korean + Windows), where the default text=True decode would set stdout/stderr to + None when the JAR emits a byte the locale cannot represent. + + A timeout bounds each invocation so a stuck CLI raises TimeoutExpired + instead of hanging the whole verification job indefinitely. + """ + cmd = [sys.executable, "-m", "opendataloader_pdf"] + args + return subprocess.run( + cmd, + capture_output=capture_output, + text=True, + encoding="utf-8", + errors="replace", + cwd=REPO_ROOT, + timeout=timeout, + ) + + +def record(label: str, passed: bool | None) -> None: + """Record a test result and print it immediately.""" + RESULTS.append((label, passed)) + if passed is None: + print(f" SKIP | {label}") + elif passed: + print(f" PASS | {label}") + else: + print(f" FAIL | {label}") + + +# --------------------------------------------------------------------------- +# Level 1 – Smoke +# --------------------------------------------------------------------------- + +def smoke(label: str, cmd_args: list[str], outdir: str) -> bool: + """Level 1: exit code == 0 AND at least one file created in outdir.""" + try: + result = run_cli(cmd_args) + if result.returncode != 0: + print(f" [smoke] non-zero exit: {result.returncode}") + print(f" stderr: {result.stderr[:300]}") + return False + files = [f for f in os.listdir(outdir) if os.path.isfile(os.path.join(outdir, f))] + if not files: + print(f" [smoke] no output files created in {outdir}") + return False + return True + except Exception as exc: + print(f" [smoke] exception: {exc}") + return False + + +# --------------------------------------------------------------------------- +# Level 2 – Content assertion +# --------------------------------------------------------------------------- + +def assert_content( + label: str, + filepath: str, + must_contain: list[str] | None = None, + must_not_contain: list[str] | None = None, + case_insensitive: bool = False, +) -> bool: + """Level 2: check text file content for required/forbidden strings.""" + try: + with open(filepath, "r", encoding="utf-8", errors="replace") as fh: + content = fh.read() + if case_insensitive: + content_cmp = content.lower() + must_contain_cmp = [s.lower() for s in (must_contain or [])] + must_not_contain_cmp = [s.lower() for s in (must_not_contain or [])] + else: + content_cmp = content + must_contain_cmp = list(must_contain or []) + must_not_contain_cmp = list(must_not_contain or []) + + for needle in must_contain_cmp: + if needle not in content_cmp: + print(f" [content] missing required string: {needle!r}") + return False + for needle in must_not_contain_cmp: + if needle in content_cmp: + print(f" [content] found forbidden string: {needle!r}") + return False + # When no string assertions are supplied (None or empty list), fall back + # to a non-empty check so an empty output file never passes vacuously. + if not must_contain and not must_not_contain: + if not content.strip(): + print(" [content] file is empty") + return False + return True + except Exception as exc: + print(f" [content] exception: {exc}") + return False + + +def assert_stderr_empty(label: str, cmd_args: list[str]) -> bool: + """For --quiet: verify stderr is completely empty.""" + try: + result = run_cli(cmd_args) + if result.returncode != 0: + print(f" [stderr] non-zero exit: {result.returncode}") + return False + if result.stderr.strip(): + print(f" [stderr] stderr not empty: {result.stderr[:200]!r}") + return False + return True + except Exception as exc: + print(f" [stderr] exception: {exc}") + return False + + +def assert_stdout_nonempty(label: str, cmd_args: list[str]) -> bool: + """For --to-stdout: verify stdout is not empty.""" + try: + result = run_cli(cmd_args) + if result.returncode != 0: + print(f" [stdout] non-zero exit: {result.returncode}") + return False + if not result.stdout.strip(): + print(f" [stdout] stdout is empty") + return False + return True + except Exception as exc: + print(f" [stdout] exception: {exc}") + return False + + +# --------------------------------------------------------------------------- +# Level 2.5 – File size assertion +# --------------------------------------------------------------------------- + +def assert_file_size( + label: str, + filepath: str, + smaller_than: int | None = None, + larger_than: int | None = None, +) -> bool: + """Level 2.5: compare file size against thresholds (bytes).""" + try: + size = os.path.getsize(filepath) + if smaller_than is not None and size >= smaller_than: + print(f" [size] {size} >= {smaller_than} (expected smaller)") + return False + if larger_than is not None and size <= larger_than: + print(f" [size] {size} <= {larger_than} (expected larger)") + return False + return True + except Exception as exc: + print(f" [size] exception: {exc}") + return False + + +# --------------------------------------------------------------------------- +# Level 3 – Comparison +# --------------------------------------------------------------------------- + +def _find_first_output_file(outdir: str) -> str | None: + """Return the path of the first regular file found in outdir, or None.""" + for name in sorted(os.listdir(outdir)): + path = os.path.join(outdir, name) + if os.path.isfile(path): + return path + return None + + +def run_comparison( + label: str, + cmd_baseline: list[str], + cmd_variant: list[str], + expect: str = "differ", +) -> bool: + """Level 3: compare baseline vs variant output. expect='differ'|'identical'.""" + try: + with tempfile.TemporaryDirectory() as base_dir, tempfile.TemporaryDirectory() as var_dir: + res_base = run_cli(cmd_baseline + ["--output-dir", base_dir]) + res_var = run_cli(cmd_variant + ["--output-dir", var_dir]) + + if res_base.returncode != 0: + print(f" [compare] baseline non-zero exit: {res_base.returncode}") + print(f" stderr: {res_base.stderr[:300]}") + return False + if res_var.returncode != 0: + print(f" [compare] variant non-zero exit: {res_var.returncode}") + print(f" stderr: {res_var.stderr[:300]}") + return False + + base_file = _find_first_output_file(base_dir) + var_file = _find_first_output_file(var_dir) + + if base_file is None or var_file is None: + print(f" [compare] missing output file (base={base_file}, var={var_file})") + return False + + with open(base_file, "rb") as fh: + base_content = fh.read() + with open(var_file, "rb") as fh: + var_content = fh.read() + + are_same = base_content == var_content + if expect == "differ": + if are_same: + print(f" [compare] outputs are identical but expected to differ") + return False + return True + else: # identical + if not are_same: + print(f" [compare] outputs differ but expected to be identical") + return False + return True + except Exception as exc: + print(f" [compare] exception: {exc}") + return False + + +# --------------------------------------------------------------------------- +# Option coverage check +# --------------------------------------------------------------------------- + +def check_option_coverage() -> None: + """Read options.json and verify all non-hybrid options are in COVERED_OPTIONS.""" + options_path = os.path.join(REPO_ROOT, "options.json") + if not os.path.exists(options_path): + # Fail closed: this is the authoritative option registry for the + # coverage gate. Skipping when it is absent would let CI pass with + # coverage checking silently disabled (e.g. if the path regresses). + print(f"ERROR: options.json not found at {options_path}; cannot verify option coverage") + sys.exit(1) + + with open(options_path, "r", encoding="utf-8") as fh: + data = json.load(fh) + + uncovered: list[str] = [] + for opt in data.get("options", []): + flag = "--" + opt["name"] + if flag in HYBRID_OPTIONS: + continue + if flag not in COVERED_OPTIONS: + uncovered.append(flag) + + if uncovered: + print("ERROR: The following options are not covered by COVERED_OPTIONS:") + for flag in uncovered: + print(f" {flag}") + sys.exit(1) + else: + print(f"Option coverage check passed ({len(COVERED_OPTIONS)} options covered).") + + +# --------------------------------------------------------------------------- +# Helper: find output file by extension in a directory +# --------------------------------------------------------------------------- + +def _find_file_by_ext(directory: str, ext: str) -> str | None: + """Return the first file with the given extension (e.g. '.md') in directory.""" + pattern = os.path.join(directory, f"*{ext}") + matches = glob.glob(pattern) + return matches[0] if matches else None + + +def _find_image_files(directory: str) -> list[str]: + """Return all image files (.png, .jpg, .jpeg) in directory (recursive).""" + results = [] + for root, _dirs, files in os.walk(directory): + for name in files: + if name.lower().endswith((".png", ".jpg", ".jpeg")): + results.append(os.path.join(root, name)) + return results + + +# --------------------------------------------------------------------------- +# Encoding safety helpers +# --------------------------------------------------------------------------- + +def _verify_help_cp949_safe(command: list[str], required: bool = False) -> bool | None: + """Run `command --help` with PYTHONIOENCODING=cp949 and check for UnicodeEncodeError. + + Returns True (PASS), False (FAIL — UnicodeEncodeError detected), or None (SKIP). + Korean Windows console uses cp949; non-ASCII chars (em-dash etc.) in help text + crash argparse output when stdout codec cannot encode them. + + When ``required`` is True the CLI is known to be installed, so a hang + (TimeoutExpired) or any execution failure is a real regression and is + reported as FAIL rather than swallowed into a SKIP — otherwise a broken + --help would pass the release gate unnoticed. + """ + env = os.environ.copy() + env["PYTHONIOENCODING"] = "cp949" + try: + result = subprocess.run( + command + ["--help"], + env=env, + capture_output=True, + timeout=60, + ) + except Exception as exc: + print(f" [cp949 help] exception: {exc}") + return False if required else None + + stderr_text = result.stderr.decode("utf-8", errors="replace") + stdout_text = result.stdout.decode("utf-8", errors="replace") + if "UnicodeEncodeError" in stderr_text or "UnicodeEncodeError" in stdout_text: + print(" [cp949 help] UnicodeEncodeError detected in --help output") + return False + if result.returncode != 0: + print(f" [cp949 help] non-zero exit: {result.returncode}") + return False + return True + + +def _verify_hybrid_help_cp949_safe() -> bool | None: + """Test hybrid CLI --help under cp949. SKIP if [hybrid] extras not installed.""" + if shutil.which("opendataloader-pdf-hybrid") is None: + print(" [cp949 help] hybrid CLI not installed, skipping") + return None + # Pre-check: does hybrid CLI bail out at dependency check? + pre = subprocess.run( + [sys.executable, "-c", + "from opendataloader_pdf.hybrid_server import _check_dependencies; _check_dependencies()"], + capture_output=True, + timeout=15, + ) + if pre.returncode != 0: + stderr = pre.stderr.decode("utf-8", errors="replace") + if "Missing dependencies" in stderr or "ImportError" in stderr: + print(" [cp949 help] hybrid deps missing, skipping") + return None + # Availability is confirmed above; from here a failure is a real regression. + return _verify_help_cp949_safe( + [sys.executable, "-m", "opendataloader_pdf.hybrid_server"], required=True + ) + + +# --------------------------------------------------------------------------- +# Hybrid mode behavior — fail-fast contract +# +# Hybrid mode delegates page processing to an external backend server. When +# any backend page is left unprocessed and the user did not opt in to Java +# fallback, the CLI must surface that as a non-zero exit code — otherwise +# automation (subprocess.run, CI exit-code branches, library wrappers) reads +# the silent partial result as success. +# +# Note on coverage scope: --hybrid-fallback applies only to chunk-level +# processing failures, not to the initial backend availability check (which +# is intentionally unconditional — see HybridDocumentProcessor Phase 0). +# Verifying the fallback contract therefore requires a reachable backend +# that emits chunk-level failures, which is out of scope for this runner +# (no mock backend infrastructure). The unreachable-URL path below exercises +# the fail-fast contract that callers depend on most. +# --------------------------------------------------------------------------- + +# Reserved port that never accepts connections — used to simulate a +# guaranteed-unreachable hybrid backend. +UNREACHABLE_HYBRID_URL = "http://127.0.0.1:1" + + +def _verify_hybrid_fail_fast_on_unreachable_backend() -> bool | None: + """ + Contract: when the hybrid backend is unreachable, the CLI must exit with + a non-zero code. Anything else means backend failures are silently + dropped, leaving callers unable to detect that processing did not + actually happen. + """ + if shutil.which("opendataloader-pdf-hybrid") is None: + print(" [hybrid fail-fast] hybrid CLI not installed, skipping") + return None + with tempfile.TemporaryDirectory() as tmpdir: + result = run_cli([ + PDF_BASIC, + "--hybrid", "docling-fast", + "--hybrid-url", UNREACHABLE_HYBRID_URL, + "--output-dir", tmpdir, + ]) + if result.returncode == 0: + files = [f for f in os.listdir(tmpdir) + if os.path.isfile(os.path.join(tmpdir, f))] + print(f" [hybrid fail-fast] expected non-zero exit, got 0 (files: {files})") + print(f" stderr: {result.stderr[:300]}") + return False + return True + + +# --------------------------------------------------------------------------- +# Stack-trace leakage helper +# --------------------------------------------------------------------------- + +def _has_stack_trace_leak(text: str | None) -> str | None: + """Return the first leak marker found in text, or None if clean / empty.""" + if not text: + return None + for marker in STACK_TRACE_LEAK_MARKERS: + if marker in text: + return marker + return None + + +def _assert_no_leak(label: str, stdout: str | None, stderr: str | None) -> bool: + """Verify neither stdout nor stderr leak a Java stack trace.""" + for stream_name, text in (("stdout", stdout), ("stderr", stderr)): + leak = _has_stack_trace_leak(text) + if leak is not None: + print(f" [{label}] stack-trace leak on {stream_name}: {leak!r}") + return False + return True + + +# --------------------------------------------------------------------------- +# Input validation (malformed and non-PDF inputs) +# +# These scenarios are separate from CLI option effects: they cover the +# input-rejection contract for malformed PDFs and non-PDF inputs. The core +# invariant is that NO stack trace ever reaches the user — the CLI must +# surface a one-line friendly error instead. +# --------------------------------------------------------------------------- + +def verify_input_validation() -> None: + print("\n--- input validation ---") + + # 1. .pdf-named JPEG content as top-level CLI argument. + if not os.path.exists(PDF_FAKE_JPG): + record("fake-jpg.pdf top-level [SKIPPED: fixture missing]", None) + else: + result = run_cli([PDF_FAKE_JPG]) + ok = result.returncode != 0 + if ok and "is not a valid PDF file" not in result.stdout \ + and "missing %PDF" not in result.stdout: + print(f" [fake-jpg] expected friendly error on stdout, got: " + f"{result.stdout[:200]!r}") + ok = False + if ok: + ok = _assert_no_leak("fake-jpg", result.stdout, result.stderr) + record("fake-jpg.pdf top-level → friendly error + no leak", ok) + + # 2. Zero-byte .pdf as top-level CLI argument. + if not os.path.exists(PDF_EMPTY): + record("empty.pdf top-level [SKIPPED: fixture missing]", None) + else: + result = run_cli([PDF_EMPTY]) + ok = result.returncode != 0 + if ok: + ok = _assert_no_leak("empty.pdf", result.stdout, result.stderr) + record("empty.pdf top-level → non-zero + no leak", ok) + + # 3. .png file as top-level CLI argument. + if not os.path.exists(PNG_FILE): + record("abcd.png top-level [SKIPPED: fixture missing]", None) + else: + result = run_cli([PNG_FILE]) + ok = result.returncode != 0 + if ok and "is not a PDF file" not in result.stdout \ + and "not a PDF" not in result.stdout: + print(f" [abcd.png] expected 'not a PDF' on stdout, got: " + f"{result.stdout[:200]!r}") + ok = False + if ok: + ok = _assert_no_leak("abcd.png", result.stdout, result.stderr) + record("abcd.png top-level → friendly error + no leak", ok) + + # 4. Folder containing one PDF + one PNG. + # Contract: PDF processed, PNG silently skipped, exit 0, no stack trace. + if not os.path.exists(MIXED_DIR): + record("mixed/ folder [SKIPPED: fixture missing]", None) + else: + with tempfile.TemporaryDirectory() as outdir: + result = run_cli([MIXED_DIR, "--output-dir", outdir]) + ok = result.returncode == 0 + if ok: + ok = _assert_no_leak("mixed folder", result.stdout, result.stderr) + if ok: + produced = [f for f in os.listdir(outdir) + if os.path.isfile(os.path.join(outdir, f))] + if not produced: + print(" [mixed folder] PDF was not processed (no output)") + ok = False + record("mixed/ folder → silent skip + PDF processed", ok) + + # 5. Non-existent file → non-zero exit, no leak. + missing_path = os.path.join(REPO_ROOT, "samples/pdf/__missing_fixture__.pdf") + result = run_cli([missing_path]) + ok = result.returncode != 0 and _assert_no_leak( + "missing file", result.stdout, result.stderr + ) + record("missing .pdf → non-zero exit + no leak", ok) + + # 6. No arguments → non-zero exit with help-style output on stderr. + # Python argparse convention: missing required positional → exit 2, usage + # on stderr. We assert non-zero (not a specific code) and that the help + # text identifies itself as a usage message. + result = run_cli([]) + stderr_text = (result.stderr or "").lower() + stdout_text = (result.stdout or "").strip() + ok = result.returncode != 0 and "usage" in stderr_text and not stdout_text + record("no args → non-zero exit + usage on stderr", ok) + + # 7. Invalid option → non-zero exit (POSIX convention is 2; we only + # enforce non-zero to avoid coupling to a specific code). + result = run_cli(["--no-such-option-xyz"]) + ok = result.returncode != 0 + record("invalid option → non-zero exit", ok) + + +# --------------------------------------------------------------------------- +# Folder summary line +# +# After traversing a folder argument, the CLI must print exactly one summary +# line per top-level argument — "No PDF files found in 'X'" or "Processed N +# PDF file(s) in 'X'". The summary is a *result*, not a log, so --quiet must +# NOT suppress it. +# --------------------------------------------------------------------------- + +def verify_folder_summary() -> None: + print("\n--- folder summary ---") + + # Empty folder → "No PDF files found" + with tempfile.TemporaryDirectory() as folder, \ + tempfile.TemporaryDirectory() as outdir: + result = run_cli([folder, "--output-dir", outdir]) + ok = result.returncode == 0 and "No PDF files found" in result.stdout + if not ok: + print(f" [empty folder] stdout: {result.stdout[:200]!r}") + record("empty folder → 'No PDF files found' + exit 0", ok) + + # Folder with 1 PDF → "Processed 1 PDF file" + if not os.path.exists(PDF_BASIC): + record("folder with 1 PDF [SKIPPED: PDF_BASIC missing]", None) + record("folder with 3 PDFs [SKIPPED: PDF_BASIC missing]", None) + else: + with tempfile.TemporaryDirectory() as folder, \ + tempfile.TemporaryDirectory() as outdir: + shutil.copy(PDF_BASIC, os.path.join(folder, "doc.pdf")) + result = run_cli([folder, "--output-dir", outdir]) + ok = result.returncode == 0 and "Processed 1 PDF file" in result.stdout + if not ok: + print(f" [1-pdf folder] stdout: {result.stdout[:200]!r}") + record("folder with 1 PDF → 'Processed 1 PDF file'", ok) + + with tempfile.TemporaryDirectory() as folder, \ + tempfile.TemporaryDirectory() as outdir: + for name in ("a.pdf", "b.pdf", "c.pdf"): + shutil.copy(PDF_BASIC, os.path.join(folder, name)) + result = run_cli([folder, "--output-dir", outdir]) + ok = result.returncode == 0 and "Processed 3 PDF file" in result.stdout + if not ok: + print(f" [3-pdf folder] stdout: {result.stdout[:200]!r}") + record("folder with 3 PDFs → 'Processed 3 PDF file(s)'", ok) + + # --quiet must NOT suppress the summary line (result, not log). + with tempfile.TemporaryDirectory() as folder, \ + tempfile.TemporaryDirectory() as outdir: + result = run_cli([folder, "--quiet", "--output-dir", outdir]) + ok = result.returncode == 0 and "No PDF files found" in result.stdout + if not ok: + print(f" [--quiet folder summary] stdout: {result.stdout[:200]!r}") + record("--quiet preserves folder summary line", ok) + + +# --------------------------------------------------------------------------- +# --markdown-with-html +# +# --markdown-with-html is the first-class flag for HTML-in-Markdown output; +# --format markdown-with-html / --format markdown-with-images remain accepted +# values for one release but must emit a deprecation warning to stderr. After +# the next major release these tests can be inverted (deprecated values +# become hard errors). +# --------------------------------------------------------------------------- + +def verify_markdown_with_html() -> None: + print("\n--- --markdown-with-html ---") + + if not os.path.exists(PDF_TABLES): + record("--markdown-with-html [SKIPPED: fixture missing]", None) + record("--format markdown-with-html (deprecated) [SKIPPED]", None) + record("--format markdown-with-images (deprecated) [SKIPPED]", None) + return + + # First-class flag: --format markdown + --markdown-with-html. + with tempfile.TemporaryDirectory() as outdir: + result = run_cli([ + PDF_TABLES, + "--format", "markdown", + "--markdown-with-html", + "--output-dir", outdir, + ]) + ok = result.returncode == 0 + if ok: + md_file = _find_file_by_ext(outdir, ".md") + ok = md_file is not None and assert_content( + "--markdown-with-html", md_file, + must_contain=[" None: + print("\n--- sanitization rule spot check ---") + + if not os.path.exists(PDF_SANITIZATION_TARGETS): + for label, _trigger, _replacement in SANITIZATION_SCENARIOS: + record(f"--sanitize {label} [SKIPPED: fixture missing]", None) + return + + with tempfile.TemporaryDirectory() as base_dir, \ + tempfile.TemporaryDirectory() as san_dir: + base = run_cli([PDF_SANITIZATION_TARGETS, + "--format", "text", "--output-dir", base_dir]) + san = run_cli([PDF_SANITIZATION_TARGETS, + "--format", "text", "--sanitize", "--output-dir", san_dir]) + + if base.returncode != 0 or san.returncode != 0: + for label, _trigger, _replacement in SANITIZATION_SCENARIOS: + record(f"--sanitize {label} [CLI run failed]", False) + return + + base_file = _find_file_by_ext(base_dir, ".txt") + san_file = _find_file_by_ext(san_dir, ".txt") + if not (base_file and san_file): + for label, _trigger, _replacement in SANITIZATION_SCENARIOS: + record(f"--sanitize {label} [missing output file]", False) + return + + with open(base_file, encoding="utf-8", errors="replace") as fh: + base_text = fh.read() + with open(san_file, encoding="utf-8", errors="replace") as fh: + san_text = fh.read() + + for label, trigger, replacement in SANITIZATION_SCENARIOS: + if trigger not in base_text: + # Fixture self-check: if baseline lacks the trigger, the + # fixture is broken — not the rule. Report explicitly so + # we don't blame the wrong layer. + print(f" [{label}] trigger not in baseline text — " + f"fixture problem, not a sanitization regression. " + f"trigger={trigger!r}") + record(f"--sanitize {label} [fixture: trigger missing in baseline]", False) + continue + if trigger in san_text: + print(f" [{label}] trigger survived --sanitize: {trigger!r}") + record(f"--sanitize {label}", False) + continue + if replacement not in san_text: + print(f" [{label}] expected replacement not found: " + f"{replacement!r}") + record(f"--sanitize {label}", False) + continue + record(f"--sanitize {label}", True) + + +# --------------------------------------------------------------------------- +# Main test suite +# --------------------------------------------------------------------------- + +def main() -> None: + check_option_coverage() + + print("=" * 60) + print("opendataloader-pdf CLI Verification") + print("=" * 60) + + # ------------------------------------------------------------------ + # --format markdown + # ------------------------------------------------------------------ + print("\n--- --format ---") + + with tempfile.TemporaryDirectory() as tmpdir: + result = run_cli([PDF_BASIC, "--format", "markdown", "--output-dir", tmpdir]) + ok = result.returncode == 0 + if ok: + md_file = _find_file_by_ext(tmpdir, ".md") + ok = md_file is not None and assert_content( + "--format markdown", md_file, must_contain=None + ) + if ok: + # Require a real ATX heading line ("# ..."), which is a + # structural markdown signal. A bare "*" (the old check) occurs + # in almost any prose, so it passed even on non-markdown output. + with open(md_file, "r", encoding="utf-8", errors="replace") as fh: + content = fh.read() + ok = bool(re.search(r"(?m)^#{1,6} ", content)) + if not ok: + print(" [content] no markdown heading ('# ...') in output") + record("--format markdown", ok) + + with tempfile.TemporaryDirectory() as tmpdir: + result = run_cli([PDF_BASIC, "--format", "html", "--output-dir", tmpdir]) + ok = result.returncode == 0 + if ok: + html_file = _find_file_by_ext(tmpdir, ".html") + ok = html_file is not None and assert_content( + "--format html", html_file, + must_contain=[" 0 + if not ok: + print(" [image-output external] no image files created") + record("--image-output external", ok) + + # --image-output embedded: markdown contains data:image/ + with tempfile.TemporaryDirectory() as tmpdir: + result = run_cli([ + PDF_IMAGES, + "--format", "markdown", + "--image-output", "embedded", + "--output-dir", tmpdir, + ]) + ok = result.returncode == 0 + if ok: + md_file = _find_file_by_ext(tmpdir, ".md") + ok = md_file is not None and assert_content( + "--image-output embedded", md_file, must_contain=["data:image/"] + ) + record("--image-output embedded", ok) + + # ------------------------------------------------------------------ + # --image-format + # ------------------------------------------------------------------ + print("\n--- --image-format ---") + with tempfile.TemporaryDirectory() as tmpdir: + result = run_cli([ + PDF_IMAGES, + "--format", "markdown", + "--image-output", "external", + "--image-format", "jpeg", + "--output-dir", tmpdir, + ]) + ok = result.returncode == 0 + if ok: + # Look for .jpg or .jpeg files and check JPEG header + jpeg_files = [] + for root, _dirs, files in os.walk(tmpdir): + for name in files: + if name.lower().endswith((".jpg", ".jpeg")): + jpeg_files.append(os.path.join(root, name)) + ok = len(jpeg_files) > 0 + if ok: + with open(jpeg_files[0], "rb") as fh: + header = fh.read(2) + ok = header == b"\xff\xd8" + if not ok: + print(f" [image-format jpeg] bad JPEG header: {header!r}") + else: + print(" [image-format jpeg] no .jpg/.jpeg files found") + record("--image-format jpeg", ok) + + # ------------------------------------------------------------------ + # --image-dir + # ------------------------------------------------------------------ + print("\n--- --image-dir ---") + with tempfile.TemporaryDirectory() as tmpdir: + img_dir = os.path.join(tmpdir, "my_images") + os.makedirs(img_dir) + result = run_cli([ + PDF_IMAGES, + "--format", "markdown", + "--image-output", "external", + "--image-dir", img_dir, + "--output-dir", tmpdir, + ]) + ok = result.returncode == 0 + if ok: + img_files = _find_image_files(img_dir) + ok = len(img_files) > 0 + if not ok: + print(f" [image-dir] no image files in {img_dir}") + record("--image-dir", ok) + + # ------------------------------------------------------------------ + # Page separators + # ------------------------------------------------------------------ + print("\n--- page separators ---") + + if not os.path.exists(PDF_MULTIPAGE): + record("--markdown-page-separator [SKIPPED: fixture missing]", None) + record("--text-page-separator [SKIPPED: fixture missing]", None) + record("--html-page-separator [SKIPPED: fixture missing]", None) + else: + with tempfile.TemporaryDirectory() as tmpdir: + result = run_cli([ + PDF_MULTIPAGE, + "--format", "markdown", + # Distinctive sentinel: a bare "---" also occurs as a markdown + # thematic break / table rule / front-matter fence, so asserting + # on it would pass even if the separator option were ignored. + "--markdown-page-separator=ODLPAGEBREAK", + "--output-dir", tmpdir, + ]) + ok = result.returncode == 0 + if ok: + md_file = _find_file_by_ext(tmpdir, ".md") + ok = md_file is not None and assert_content( + "--markdown-page-separator", md_file, must_contain=["ODLPAGEBREAK"] + ) + record("--markdown-page-separator ODLPAGEBREAK", ok) + + with tempfile.TemporaryDirectory() as tmpdir: + result = run_cli([ + PDF_MULTIPAGE, + "--format", "text", + "--text-page-separator", "PAGEBREAK", + "--output-dir", tmpdir, + ]) + ok = result.returncode == 0 + if ok: + txt_file = _find_file_by_ext(tmpdir, ".txt") + ok = txt_file is not None and assert_content( + "--text-page-separator PAGEBREAK", txt_file, must_contain=["PAGEBREAK"] + ) + record("--text-page-separator PAGEBREAK", ok) + + with tempfile.TemporaryDirectory() as tmpdir: + result = run_cli([ + PDF_MULTIPAGE, + "--format", "html", + # Distinctive marker class: a bare "', + "--output-dir", tmpdir, + ]) + ok = result.returncode == 0 + if ok: + html_file = _find_file_by_ext(tmpdir, ".html") + ok = html_file is not None and assert_content( + "--html-page-separator", html_file, must_contain=["odl-pagebreak"] + ) + record("--html-page-separator odl-pagebreak", ok) + + # ------------------------------------------------------------------ + # Combo tests + # ------------------------------------------------------------------ + print("\n--- Combo tests ---") + + # --image-output embedded + --image-format jpeg + with tempfile.TemporaryDirectory() as tmpdir: + result = run_cli([ + PDF_IMAGES, + "--format", "markdown", + "--image-output", "embedded", + "--image-format", "jpeg", + "--output-dir", tmpdir, + ]) + ok = result.returncode == 0 + if ok: + md_file = _find_file_by_ext(tmpdir, ".md") + ok = md_file is not None and assert_content( + "--image-output embedded + --image-format jpeg", + md_file, + must_contain=["data:image/jpeg"], + ) + record("--image-output embedded + --image-format jpeg", ok) + + # --keep-line-breaks + --detect-strikethrough + --sanitize + if not os.path.exists(PDF_SANITIZE): + record("--keep-line-breaks + --detect-strikethrough + --sanitize [SKIPPED: fixture missing]", None) + else: + with tempfile.TemporaryDirectory() as tmpdir: + result = run_cli([ + PDF_SANITIZE, + "--keep-line-breaks", + "--detect-strikethrough", + "--sanitize", + "--format", "markdown", + "--output-dir", tmpdir, + ]) + ok = result.returncode == 0 + if ok: + md_file = _find_file_by_ext(tmpdir, ".md") + ok = md_file is not None + if ok: + ok = os.path.getsize(md_file) > 0 + if not ok: + print(" [combo] output file is empty") + record("--keep-line-breaks + --detect-strikethrough + --sanitize", ok) + + # --pages 1,2 + --format markdown,json + if not os.path.exists(PDF_MULTIPAGE): + record("--pages 1,2 + --format markdown,json [SKIPPED: fixture missing]", None) + else: + with tempfile.TemporaryDirectory() as full_dir, \ + tempfile.TemporaryDirectory() as p12_dir: + run_cli([PDF_MULTIPAGE, "--format", "markdown,json", "--output-dir", full_dir]) + run_cli([ + PDF_MULTIPAGE, + "--pages", "1,2", + "--format", "markdown,json", + "--output-dir", p12_dir, + ]) + full_md = _find_file_by_ext(full_dir, ".md") + full_json = _find_file_by_ext(full_dir, ".json") + p12_md = _find_file_by_ext(p12_dir, ".md") + p12_json = _find_file_by_ext(p12_dir, ".json") + ok = all([full_md, full_json, p12_md, p12_json]) + if ok: + full_md_size = os.path.getsize(full_md) + full_json_size = os.path.getsize(full_json) + ok = ( + assert_file_size("--pages 1,2 md", p12_md, smaller_than=full_md_size) + and + assert_file_size("--pages 1,2 json", p12_json, smaller_than=full_json_size) + ) + else: + print(" [pages 1,2 + multi-format] missing output file(s)") + record("--pages 1,2 + --format markdown,json", ok) + + # --quiet + --to-stdout: stdout still contains output + result = assert_stdout_nonempty( + "--quiet + --to-stdout", + [PDF_BASIC, "--quiet", "--to-stdout", "--format", "text"], + ) + record("--quiet + --to-stdout", result) + + # ------------------------------------------------------------------ + # Encoding safety: --help under cp949 codepage + # ------------------------------------------------------------------ + print("\n--- --help cp949 encoding safety ---") + record("--help cp949 safe (main)", _verify_help_cp949_safe( + [sys.executable, "-m", "opendataloader_pdf"], required=True + )) + record("--help cp949 safe (hybrid)", _verify_hybrid_help_cp949_safe()) + + # ------------------------------------------------------------------ + # Hybrid backend failure contracts + # ------------------------------------------------------------------ + print("\n--- hybrid backend failure contracts ---") + record( + "hybrid fail-fast on unreachable backend", + _verify_hybrid_fail_fast_on_unreachable_backend(), + ) + + # ------------------------------------------------------------------ + # Input/output contract verifications (independent of CLI options) + # ------------------------------------------------------------------ + verify_input_validation() + verify_folder_summary() + verify_markdown_with_html() + verify_sanitization_rules() + + # ------------------------------------------------------------------ + # Summary + # ------------------------------------------------------------------ + passed = sum(1 for _, v in RESULTS if v is True) + failed = sum(1 for _, v in RESULTS if v is False) + skipped = sum(1 for _, v in RESULTS if v is None) + + print() + print("=" * 60) + print(f"Results: {passed} passed, {failed} failed, {skipped} skipped") + print("=" * 60) + + # Determine report filename + is_ci = os.environ.get("CI", "").lower() in ("true", "1", "yes") + report_name = "verification-report-ci.txt" if is_ci else "verification-report-local.txt" + report_path = os.path.join(REPO_ROOT, "verification", report_name) + + with open(report_path, "w", encoding="utf-8") as rpt: + rpt.write("opendataloader-pdf CLI Verification Report\n") + rpt.write("=" * 60 + "\n") + for label, status in RESULTS: + if status is None: + marker = "SKIP" + elif status: + marker = "PASS" + else: + marker = "FAIL" + rpt.write(f" {marker} | {label}\n") + rpt.write("\n") + rpt.write(f"Results: {passed} passed, {failed} failed, {skipped} skipped\n") + + print(f"Report written to: {report_path}") + + # Append to GitHub Step Summary if available + step_summary = os.environ.get("GITHUB_STEP_SUMMARY") + if step_summary: + with open(step_summary, "a", encoding="utf-8") as gs: + gs.write("## opendataloader-pdf CLI Verification\n\n") + gs.write("| Status | Test |\n") + gs.write("|--------|------|\n") + for label, status in RESULTS: + if status is None: + marker = "SKIP" + elif status: + marker = "PASS" + else: + marker = "FAIL" + gs.write(f"| {marker} | {label} |\n") + gs.write(f"\n**Results: {passed} passed, {failed} failed, {skipped} skipped**\n") + + sys.exit(1 if failed > 0 else 0) + + +if __name__ == "__main__": + main()

    *,h"fX͛ڶ{ ?bno(;-XtJY^ķ) Dqګ<'ʶ322!C^#dv4e$gc +.F H4<EF=jT0sqBjvdT4{VsV6 a8HR|HRy#t5maHX$ >Cʯt@b@iUTfj@"5"SIfU`׻y7}=uԥ)@ZR)JR)JR)JR)JR+IXIԓQަ5fiPjA5I5W<3SsPEC +)@srE-#/#Uv_r +y⦂jj)Jjr*$Ypy ߞՐ959$rXp w?kL"b2Ÿ0³3=*sĽORZR)JR)JR)JR)JR+tg7꿶AZn[]][<߷9o,4w1B|ZKK lȅI =J}3Kzd[ɏ zb7HHG }#˒sXW>"[DE*ĕ~U}]h-q~5cH{1U.][G(z3\ Ìt|m.3+sK*2! X0=튮>,Toaqj#&UI1/==fŪ^jG*ʒd'%HGjs\ǫ<./glPqߊ\_4,* H-Unf = մa J˞9ǥcYjw׭B[y7Mc9#9Ջr-2P0}|A+kK`9d8,rA\!Su ȯr9"23f]bi䉞e #{F[yH2] uA[4wvϐ4ֳD&1ҲPNsȬh5 /oGRx, @G7tMp{6U7:1ZBR%J ε4[/h{2=Ӹaߍn%mq*ʡR H$c.sfj/qzl@.xUwc)jf**Jт ;fEv@`8>u|&&l mUى¨}B2n7nU.'#|Vz +gEQo@ Z=7Mk|r28# ֆXg'}63"';>W]ZkXm)I$YXؐs嚷jZddHG ۂ3郐*m]P3+ ܤds~/>inLxY>|% 0l`Td{8ԞնmV@a۴ըJNv4P*?jmfVĥYx>̉aydoBQ+{ +]"Ul>"Ӕ7Q{iZ_$S+!NN ax}y;pM+G݊R aqB9w8IVhFㆌ)5ᙚM:cZ&?ا +ٮEk|E}!s0^E *A9 .# wSHMÜҶ=չ(:,!NHu3*um 8T {NF~UvVon2 xYX++H5=0nI\kH=@έ8^1*H)V$}OEf{5mor)}Y=bRԚKr6Bǽ#gQ6ǘlȇ,B鎥sk(B Ò0y=Za~aM/nB< +Mi.'W7!U 3AduFLv"FX'ӽn$8gϿc]Bt䮺(ZR)JR)JR)JR)JR+My(rU.2#\b-9VS4s+۰vo>x$\Zod`7NX/$5oh&q2{Ap{V{_5HC'e8Ǟޱew}hFFݴ(FV!yUcM}bϦc2:C!1|&7FN>Zm;M&2TG7, ʪhdQ'9Eq+@!Q4d6$b[VfpLk0K}_pSd ?}i-6Nmy=F YZ[^A + ǽGKs}ꨰF?bGƱl8OM#zv>>MJ=ј1#`G}շգ(]ɂpb 푑d+0xYGs4R5RXpXT- PѢۃ-j ]W#Үf*JTp۷eq8d K ^V4B 9t:yDO+v^7Jj1x5z#68N8°Mh"nقo,H|Ι\[[2Rh\BmwffU3Ԝv#U]-ơy ŏ:ņwAYµHZ*`Ęc]ScVpmW/K_l[m>\t6 + + MΟpa +Bsĺ'3l&Y +QR1b95.KyY;Vǐ>|ZétȦ9 G+&H k]}Vi$R$,w QF@Gd^7sIg41G{t @B9[Ku9nYC!VI8}k&{ Da}Ȑ6 #\iY]u)JPZR)JR)JR)JR)JR+-eROj59^}F)Ҫ*{gm3jCffPTQRbsM=#7QvIl;&C۫, ʜz('7;Ϊeq*63D$ +YH4fT2 a? +*2p0 Ǟ􎨻Rp+Jo:ź9hr [-2E{)d ņ{TweQ*7x>7\N+ |rOU\J%",>^} ey̛kw/nQu0 33$=?MszWze1M$V >JdmVq X=Ǿ*`ut@:^M=#",G=P3Zϻe C~*"qH6h,$sqVP5@n21yK=dH")=sOJ{ZicV=u5 U2qJu/V9XnQ\Etu =DL ^ġNGugh+=Jwl5'8]NU}F$MӅE,cEG>@UQ NarІ>N3MOal3A;·sL3%?$\vpVyf$''~=gb]4LBX,X5^T)֬]&Åk=We^":ODn~Uњ9$TfC;@qyqO²D:fΟ.[-0V^_jG\ĤҔ)JjjEAIPAJRF*1SR(M5 Ⱞf}/?v7RZR)JR)JR)JR)JR+Sሕ$dN2=8UՌ#8lk$*<8\v>UPaGmouIj_$'*0>uEpzU`d^J9Wmh.I,@8;D 2 dVBкv+e $v`p8܊^iVL94{C$`)0T04FJ~n8V`$!knT, mGIAh*Hd`(G;"\pXIUZZqH#6ܩHvv!ڪ}6iL.F v$v8c+]6IGnH#ʩHXH0 .=?hba9z櫶-yb+8'4{8: H>{U۫o@m=kklBǙ='~ub6 8wnǽ<DDdX+|HV+T\0>Quc ެjNT=qTj0A;{έGƎn\=iv XFB|O5$0-5{b&mfqnpqcS"+ #5KX@a61=ײt[#m(!JڮɦLDW<S.F5bgm>1cw9Ǧsڐ[8±G֭6`Uϧ[̑Fa;c9UEj8P"-2GRuM/S݁>\64ĪI$ d|\ n+ yⱗI +0>yǦ{QحAVh g"zU/ `F{}. %`*ת'; |)&o+h*[~>i01 @zgҖ]4Q*ˁ:֧Fj1SJTS555I5"MNs@ * _@&qBj3ATA]ݨVN)@(QHTb +jU?]e)JPZR)JR)JR)JR)JR+S1bԄա׮Nw3ݪNUZxEn82t*of[Na;krFEA<ң8yCƁH(9R=j +P'5pKhٶ`ʼn߻qk;XMHۜ`cVЦOi"Ղ%>{+k|y:W0FO7 5B昜pGrG`;|MZ%D̀1u݌~k"Sy%c+*{~\T#IyZ]wY0&unp$Rqe=lԭ.d7HO dr j 1kfʑ+; 96s֢-j[Uzܱ8~##g~u7:[*$\9=kV +F.;ʣ0iA=` '=s#,{ xz֗Z,e0]@N$SnI[H;KqEbx`k s3P/20P?ME}l{bW9<=>UzV~tInnعkR{R:7 yɫV:ݵdY}ܞǚncM-Il3oPNqk{t + 3!ZHnh LIÈc$c[TyDsOt{zXƎ2{T3ǺPxU7BNg&HV،SZ/槽1Q)NiR*j(EY~?ԏWWJRZR)JR)JR)JR)JR+Of+D '֭&holn NcG&|Ab,#'**q呃Vfm[nl*$N׷d0<+b~S[e$wS=RMA5Ԝ(T *3RMG3BskI*lc3N@:kq5YeqmGVi5^v BU[kd0vN19[ FlJ݇v{U:5HPoW. ̜cQ57?Ы-f[Bm&|gsp+ +[S[]H_{vycZӯmm=I]Hŷ&#Px#hxUۂFFǎ150`=^aB!CcQs[;P\-[U]25ڽId;bwf?r|ޓ}$46yJ6lzoݬoaLE\X3?IoUarƣ @@IY7Gۮ`Xj7ľϏ+Uz|^[2AJt2? 3GqQikvD؏7ۃ튣P֠XK6S;GZҥKI^2}N2Omcc|np`jntIG<D8ܡIq>ͨ$ɵT.F?Wսw.HY g9>~UuF8$5n US ;#'>ut*ǹK"g$x_,;!ڲ 3*~(8f -U8#r@犼p*ƪ b, y1‚}#aHĭuwot@$~[=O˜ {A MuKm05'ל~ٛܩ* +6;:\sd!P#m,9RFp{dQmUE=WRZygS֙;;qN5L <{գg@F®qPyT*Q C#2Y$p;(үPEF1R55IJiP +JSm1QԄN)*@ZgY_]E)JPZR)JR)JR)JR)JR+M!/Ƭ\dT OjSbQ`yRM"TMO*|=SHTAy'⠂jN85< +`fz=~TjYOVl/ԣ2E Y$f jG+O*;TTتuR5`TPsLTTNj;SENj*EBԅ*IUXXAj̿Л/\z)JRZR)JR)JR)JR)JR+I⣈!Ǭv> +*O"SBy>T)j3sPI4 EN)ڧL +yT*E3Qjx"mIqBjx5 m%Ib6o+-XD=y}N>y{ۀvwUC袰*׷_C["mHQۚMi8qS ThF*ԃL53SUijjތjT5URS5if5OzT* FjwT*ԿЋ/\z)JRZR)JR)JR)JR)JR+I Ǭf5T^JΤT׵GA&ԁF#ҀUSOGV{U91jiQU +Rb59C qf„@S@Tp{80v!URM4)ޘ)bN)`TA +栊N 1U +5QUTb( +PN(SȪjǘ멥)JZR)JR)JR)JR)JR+GÈ`ǬsރЁAB*d@U$U@P558IZjE*RLbjm5I(*bTfmUP1O_1ڤ*1LTwh5҂TS4T IU8(yN(EH"4@f4懁E9SSڂXVg%uT)@ZR)JR)JR)JR)JR+Gⱘm#fdj ?:sSڙ5Nhiڀ]g jUPqBh Nj*h*O"TQQON*j3L93PMHR)Q*jE3LҦ&ڪ@5bJ2jqLS HZn4sT@jsP{*7TB1H9j[ ٩ 9J +ƜucYI]U)JPZR)JR)JR)JR)JR+A m('ްc">XPu{+*~A,T,HHlJSŏS~,٨ڽT?S]ӓTڻvO>uKkz9Z+*~H,ٹNU_M GaQݗ[[Ҙg\>OV+ϵD22=ڪ]vJo|sQ__ߨrJbOv1$_ߨjf/?M ?~ᘿkVMCO6`dݪ?Tp8O"Vu8.?~ gڢFl/ۊ,?HS/E, ?~}5b"}O > IL;:ٌqJkvg'a\Ggj rÿŏCkvBHU.aT?~ҨnJJF?]C?~:枫G"T O=cZhx88Ip:+֪]{O'"}7}?TCأkxCj>>Eu?j?Ly]?~Z'}O{,sլ"Sœ"F3KGŐ2FzuϵEq~X]D>r/j"GӶSD C?~[?Ҙ?}5c3XT3fGq>D'[Zw.~[_iqy >E\턃 q>I֬!q:̀=n1vT;cL_ꯧl?aHPu9`?P%Oߩr/I״eaȣ 0Km'ԍNay TݪuE?HTjJaJO,?aJRu{BMj5 BMjgGJ C?~.f?0%O߫7ѱ +'jRZR)JR)JR)JR)JR*r\dd]`6C[Pi-Om/EOѶG[O/So1zG[FZ>z#_ޠW8!l^ѠGnU>4{)?jQPO/P(;t"~~OEQP,"_ڏާ ?j)Oڊb~~=IE{K c#JVh1U6lc?EZOڊ}hSO)ZEH-R~Tm ?j)u$|ܧ?M>~@5" )0~`(1 +OZPEGT{ >n?R‡+Q{h`PjDHE*gD!j)~b~GBpOި?'=_ޠS`\OA ?hOa_ި6&?/S-EꏣE-?/U^$=IE{ (hQc= _ު~?1ꏢAȂ?ڃRtSB<GV#2 +~Sa>DEOOڊ{ qȉ?hSPG[GhQmPirE81 +cT{?p_ڏީHOZ~~GA ?hOb_ި s>b&ܑ"A@RZR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRZR)JR)JR)JR)JR+YYd,4܄Ugg#*5iךd1^]mhĒ 5Ig\I|(iV`H'_ aC$.vWU|k~*(*f{<)"L@#q֒̄ayᏢxeҰ{K&4ʬq;;*ƹâKx6eO {cM]uX5XVHeI߰*=ά?=[uW{/#>x?sYy[ZU1.F{ftc1|myp'5M&-؏BϺFxRiUN';ڪQ$a0s,wmi#pU~rxϼxU͝LS+awpvqNŷr Np ]}R6ZTo؁` twp%7k8YϺ6Gv(fV~p8F2ª}f9ųLB@۟3s? kB+-wvV,ein#&5%yg[_0JO V졗 mO<݁syu&p2O>Bԭ-FG!FFTGu#7%ĨeL E*̊ AAʐF9 + $W-᫸n/Y]C*@fٕnh1trjv#̊d,{TiH2+Fu,8zgs/J9$ gF@GZ[j^${{1pxMX=Wv' DDhN#'j_4+8l.5J궭(L2켕`V]r/hnicެRvPɴ`vsWE"iI}Y$ ܡNr#+g吟ٺݷ݌g/dEU ͎SPdwi5{9Lj!!0w H4q+BKU$FҪXHyuU7y{{fϜc=@1c@ך3W_yko6V, +YRɥ^-&So Mk8;V-{˜6R@ڼ/$~5k^n#Ly/ `VZt_h q 3+hLc,s\KV+s\sfʬ\$.qon]E7G*Σl uDġQ*00+Ew-bts?Zm7O_PFYF*}? = !WE\Bv4H,.<+?_V qW2@ɭg}?dp>X ݌y1d?]FA5Vܺb~{`FC_w9yֱmh跊ڽbN0T3-.~Im,`2F{*:sIse=걍"G2`;)0;sZȎ¶܄S@U#>m[ Gq:XOK߶폕c+۬##=!NX)UfM^]KX&C$1PJ0HqZB{{_[ОK%رʜzbke)`l"`;kGA<{rĈ$Hٹ0*r=|Q^[Plt O 7QlA-豲q6@د.$ I $ +HU"Kh3mdB\lw=N76{43:ψs ;ܦnݷ^]+zMfr_gW,mk/}jm-0r\v +'}|[0!}o(ݛ >O)Ҵzn8*Ivk6#Ķ,u.{稃?Z۾fOW}u@:k=M AG/sa]k3H%AqWC,#?E'v~$\] ϵovcV,NChݻG:tSq] ssNz®!&b| ~5FZ+^:`0&4ՉSkl~ɲ`^?*g{~i[t2,vZF +Ì6W$"%GK Z4S*u65lBM.4ᇞ/qAʇTeR"ms"s{d_æa!1wf'ԟYzlѷuVR}πFx2gȪ|)mm!)۵{2d[qSm+k$H  $6{Wt{kkY,nYԆ + l`k4)JZR)JR)JR)JR)JR*56;I%rYFb}I"#(}#El +`s40E[K+pYxETtS@Ovvls[-eP6F{jtKgGjñU`qDv{o^ Ĩ{sXˀγkJgiPX}v+H`#{P7ܜIz}`c!Fk&IR ,7@Y1D"(UP`;+W>}_N.T.] .R(alQ +}[}om#U ]tf=6i9cXD1U|0*dlugP v##U[X@ }p:Ȭ{ { =1&ѳKK {=-BVEaä[i#g.ytdé'ʮXv&$Q:+jV +LjJ 1助y'[ 0hhmLnħ9"`[M>hW|Fp'$~*'8#X"_ +Ҭ^$;j'݌M*iC"|{qz+PDH=Ǚ:v.v㹭|7m wVP m6B9'Tiv=($}v{8n0Ҡn>M1Q9T9V촋=96oUB/dv #8q$Yڠnb'?, Wg fdrA8TvnC0 cA>M.i=>o*w_OH8JnGzI#HG_.ӭ(^ا)+鶫/\CSb翽.eu6 "HgM +\!E # jMghbHv v+|9`-!}\eWяǾQK0=g m\1>H!Ѭܤ9p{5v]>yRwZD,TnQ}_z1q7c5J&xQ~QPO/J}>;@,d}o~AߴnYu޲4#(YC>ԗOEFu`OS2.Cc5lhkp.G?fΑezIXv DGl8QT`*|GN2uL)Fs9]0dv5c0 \V]bID +H6}& %T)?2OTGZC9H#YNr@n{LIBLF{5JRZR)JR)JR)JR)JR)JR& 7'2H6LnYt)JR)JR&nq隮 FOu]Ci.LO K2 m +4{2r+Z)eHBHJ ArgRjMu4,O4'`63kax@0 #S.v8b8#ӵx)nbDukyzn' TZ;ĉLJTw\*0RIg'[RmgFv0ܠ3 |pjjpٍDd>mNeҔXN_lNdfk 9,j#:$R3 UҔ+SH"ɱ0 YU5J8S{ڪku-n=:NI\B0D2I@䟕g  0 MR+2D `w ;jԚͼ&9`n{2jiJUȰw8dVӭ丛!#R̀Xzɫ&EuA8##jpiQg$)aKp8P|!D*Y2qp>UҕCH  38dVޮwv֏GveTY)JRZR)JR)JR)JR)JR+[Ox")chdF,Pª̄r0W9rxY-R.QmJG`09xm&ԎqcB@YfFIb 2Wn/-5->L;q*|{xۧ\b]љ:b@ss +/bɲh x@Z<29$H&Ydtv083ްu FkE4Ym3K&̩jn±5{*inG+Șr35v{{aq1a %9eـT5nQԵ *G,`[i H8Vh]$R +Y:.pͧVt2 & 0,@=_5S:ƢIRm&m,1ޮ˭\\f{=ʦ;`Mhb{P~Pҭizf1ػ+ *9Z _"6=[tc:Q@s[/jZ$H*Uj7zL'E)(K8;8#}!b+y$/Sv ΰ]Fc[pPrH䓟?*%FO}W^^m$-XF@Dɼc,5"%Lp3܊ iʘKe 4om[ U:5*ol"E k__]v4M4l y +$sƞJ.GGW5ʬB0V#p#5"-ȑ}bR7n nب#TRnep{ c'Z{xca>uVZ6r%Kg e87?Ҵ>$I-mm. +ł~5r\oȫqOnkiO|Q\]5ԒG D`u5@leԱ<|M>u hn%P~kVFrfFfR_z1H5+;PK `HڨǍʸǝZԵ{!*]beϽ1J"F˖qWo #djҗ)ksGw-neYB9HW88<#i-QZU+^ e%M +*.q݂ 'd}uؒ~}XaP rzc+I57Iʨk(0;Vp0 ]ܞ}E`/NkH"IDgvG|M^ +ڮͱZk `} BG[iѐ׉. BHG;wg3̎iJb wQq8\1+a\ #b鏣e pHW|L%GGcq`[xU5լ$X8PYYHxEVd9Hv7;U.9#v皚RZR)JR)JR)JR)JR+TKyzRe +  2j&z7p)"6epNj7Rӡ9bhDw\ 6m*X ʪ:u [: vΦ&vw_UiWzҘv^M偏.vUލqpB'nGv# 9U-_ĪLj\1%89zicJ`oI +/B;W>p*)Pd,F)HFpyҭhjNG2Mybd2@-wp;Ti:tQ#e 3e\* `|iom5 0e)Tǖjw:DRC3F᧖UdevvR< sG84VJGq\F?19zU].E2chdQ!e19`ܹ RH)bofY2d Eqڭ9/絳E=IGX +63V=O=.+v98t($޲l5>Hh*<)̊K.-\E3T˸4j6ӬlHU/xPVkiW6WZt٧14Lp$W +q9IQ 3>WV]:=ZkY~̱{Z<55ƌrz(2MAbGi1Vu//i"<euE@}6ul.҃d^&[co 79^UťY]^nѕx.X4lFxPG#;V—iJ{;)qV%p |I&jDYq MoK]f홊uu!`^Wzio}XXlX˰ QTe;.Ght"M] >q>XHzByMu @H +ơ.NŶvڴ%3A*#%u>G{)&,H,L︞=w?.rVʐ72qi̚;7EdM cl}jіV e1AL7Vkim%h n'[zvx7%jivch8Mۗ#~uemD[m 3);)*1V.tKжrD=81Ϧ]6S;cҭi7,Z4F=Й n{*UW I#|X̰ZYȟIJXur;G9#5sO^HctۗDK۷ElmbIieVzJi@ gY&v6}5kĈ&Orwg'V֋|5[<*!t` #UUpWR*$O#rH8<+}+BKth;,eU)BbVuƙl r(\ 98_C/Һ?D7i##Yi2^^ʁ񽋐 f{]#P0_1'@*3"R[ŧAdP% +)Q;ϯeɦ\˫E}58dh]l`ߚc$pczrBܘE3Wt-.B)X-);)sfk:\zͤ+ wڥaYcyK!*㏍\O:ޣEtJ}u7c#V$"2 0Eh/ΐRIЬvP.3 ǕWy^ܦ60,fT1oߌyo$k~͒.Uی0e8'˽cM{kS$6Md dpx]iZ*H#Hprplm61kt(G~>sV3ifY%]Jx p}c=T6W\N]Vnq-ݍ}BY$wǐ=X;E}lɸ[ H{8XךٛMky#)gw|c<ί}d־i7\DFHN N60 Ք c qKw;0كY6֬,ȅ`'WՃG 9wb!TH\)R'pym-oRJ(8%0ϦEDȰe cԪ*!cuR~Y<.Ŧ|k\ya5 Vⱉ時)f'd6EfY$p".lt;7|3ɫ7Wp'Ry5f +?Sr%F + *G}*]B1T)(>I[BG5]wP8®5hfPl3RfA#Z{x4q.{ |2U@TAe$qBGuU,ےqH!#] #`*+Yf62rqg5J{x4$n]C5qD!Y'$j/ ,"m`>uwα.PV.ҭ渐# 71Av=>Hh!՗nAE,>#M#Q[[b)v ;sY7Yg#sӢmn8\2qZuhmiF{sXN&*EU5hT3A.{*H]*IYMJ^Ia!!u!>}F8ĭ4j1u Lzݑg96Jc d7}j{^K,3H8.O&uWnc9DS:)Tn+yƒ0X}_ۺ$³94Ȥ) @'*{.tGpY[Uի_Z}X#-mNiuob#`j:)XڭֳNJ;.HR@ZY )=&Ԑۆ6qp^AtHG_V 8[WRr }Dd3ŀ\sދnĩ]{8ʉ*32PI+Ebjc2uHȏpگ=q꤂@, w=dҔ)@ZR)JR)JR)JR)JR)^gNycf.Gq.y>uE=`B;I2juCܖd$ +G`Xn>x^YWj%@bI1ǖRIv(*x&PҺZ[GE&4un[3[_iַī!WO'9ri),%hLdx`˂}gca )6ffCF؎Iڵ671 UEP<[O8K1}ujFNBɑi,ϩSoZ{46Kq6Qߎ-=BUnޅoƳIYZkt9XUYGotk]]>LQƝ=RW)[Ww Ve.5DOG 0FyA?BwA@v>Yi2_mGYw#)^LJg5NX/4*HCGt$ T<+kբAOnނp3Xȶֺޥ4d)$ wʫ+绻#},3GRu[Ac'[_CuZe›Ccj꽪:c[)IUGډc c[?~XMqr7ۀ< WRn׭̓OGpI9nGxM)0b[z#!c+đ,] Y;8֐ߋMmx:@vځsA97ZᅕvI*H 'q||Mt,40Aah.G +@#NcVk\ h-B8ɬ #F:φ\;+2uK#VKpUS>u0hmclVN4DfImT&o,2Gsϗzȶ<V= YBIcyh6p#ӲX-RfI8V^'٬lÉ:}Pe`Ej"*fМ2KX>5`W  {V8\hzdB;r1F+qWn!NH)} )`5W-ijaBG e;dd b,TSavU +׋h cN=+5#[֫$Epp1ܑk(&4X22DL6?/Oq{Ev,}YJy[mؑ#`+BYd]2cfcX*`]2JZrbE}:2m5$g "G5 {m( Nq#zVtp }z ]imā\H#.usQˌyUϖY;0oGZ]tWrU :Pi C.#b-1Em?U1cbO;VoǽMҴ,=~dGmf>ͫܭW҃8R#*>@^˩h03MD(T_sb?jiJRZR)JR)JR)JR)JR*ղ^F>v3|Rai_}F38HW-f#'(Y;[r%]veeSӃtr 3;bI±<5ctdq3 (3O K0eCЏ{#yVE֑m{KY؂ǽ[M֕oyE"p!]Hʰ;ƭhjZ79pdXçD!v%bjXbxf@ 2#ұ4[{7\#@ą.*9iZ>Y2evf@Bm +{vQlq0xϟMޑk{*,aF˞pr3V|?gu+Il gk>(*0Wv0_&\)$gȑCV{i# ]G9 8MΉkw#Hw>Y8^| EއmvRhR;Ge%6k=x6` ZZGe%ڣ8'$O&AXz~k rpeڣ YOX*ł]Wsrwb_j!:UI8e <+[ v16X=cOĜIŋflcsg;C9$Z0Αmil;ww 2LVKxj%W;sp3uv+P$ +f9fğ@xvv,XϝM΅gw(H 26@|['7V2:`)!o +nxѴ/LvkG,XGxʶ $ߴ3w=ꑥj)[s|&Lq5r6i+ȱybLXaǝ:xc8UC| 2F WDth*1aޣƋir#Ǔ PfUp( 6> U7K"&H]g7UۻH1JRHzw +Û7 +G4%.9 #yUw:%ܢgL8oFh؁XZiv.HьU,i$U2 cs` 趑\GasdNqYޟh%CLs'qrr5DE$f6a+S܏_*iFomPY0 ǑlqZm({|sǗ*4K;x8PD2=iqq4@c*JUe sϝPVRB2 $y>h:qG,U21$/ +u Y!gU/yr \m5_x +21GF{v*K09zγEbiv3,. 2SK.N0Yp37!8ֱY#(`s?3T}e9_ +mɠ髇UaخWXDz r] !س>O$$یUI*Lȥ0V* (o9weg@NT)Apj -h02Il$2M,4m- v,JNv?*˭tu/Wsg;`'<䊹{Zj2G,hPAS0G5 ٬!^ݓߜv[Bix~wmn~”)JZR)JR)JR)JR)JR)PxVאީxdWP̤ ) 0{՝GVUM"FeA~5SJR*85]MZ~p$`#YT* Y&\QBzA?+cܒ"FAJR^^aMq"Ƌ2p2O5wxjR)JRA89SJkS}rTI"Ws($Izʩ)JR)JV=VAL*3Ѩ5XVݷ`ă*+RIA{Acr8M+Ui bX`ecEaRSYT31¨d BJ> w2!+&+8=)BJʌYty/xEȬQ30_@VEb:\}Y|p>'ɨ3<8MNR:a8ᾂI"EgA# Yvnz3 LAlzfn.:Y. ZBLQvrNx9{ImayqG@"¶ gβ' P$Cv$\{N~b]rX#^RѱI®=B+ ݱB d\bpKae?^tOt~g#kyc4ҫUʌX'{]2X6X%9b@)$X]~./kvѰ1c <LU76uiAc4hq1P95G(e9Aoķ:dp,%ZB7]`N}*xqVE@CT6OLKu"K*a~ Fs#Oե7fd0Q'c(m0ĐA#Ϝt呶+3 5mrؾXW&c%7cvsZz{[N##͆ͻ@ hWWU 8l\ֽ5ZtpJe2J~5{;;|xNN2|Y|7g3+#V +CA°$Do.I"wT8gRH*9 qH*꬧kGV]ޮn[#md$nhm{qZ}SW}nTG%$cH#ՙO}՝+ǽF<|L|sX#K0M%#,]VtggoV%r2;XyAOly³ׯ-[h[Kq/Qs杣L!Y kT-ↅX@;=Aj.DespS#zWXl0u6GQdkd<ŃU8'%߇no!WYSf*A"smqiHۺM! 6@A#5a>>ǖg~0xxtoI2fax_^۴QG`rdWSAqZ|A[\`E%R<l_q[Mnp{MeIthJw >qv{ծ&Zԗq-XcX$ka1u ج8n%0HU)JRZR)JR)JR)JR)JR+ VgtYXdnSMi>nlm^:raUq<Ʊ:c4f'i%'Q*N9alv2#-JI)w8*otajoi)=$2FʰW;NA`|En4hQ-[+>V5UVqvkCkV/ +^9#!wy`g5-߉![< nU6j{mlIQ'le_%NG5-6]Ue.^g޲,-F{m<@ 'lk#8UԓƝbuV<)#8R{ns/kY__xon()6I920sYk v譤vu|ݻc~@SXhxY8Tq(8u t˲.p\)OjMh,a!yǴ2̌vV=+\\P@ES' +}kj^'D M\e6<<´ڞ}sX2֥ sN+.}`'\pm4n!ۂ8<TkWZqT2\E"tȍo;N1L'gy!2by)a J:WvX|13ޱIo%uofG #UG, 3ZcJH%Ŵ=˼@ s4#¬FT&rr{k->Hz).T@W#{zջ]>&l@Jel`I$J̎ H>һ>⻳U)UiW8I㻭 gV] c>kUI-RG7ue9GQ!$0{ZWMGHLq/N6gl5CiS # F1Ļ# g?6wa:QsE¦;nn[k%8/&q\ȥcI$G*p#5rɥs,L19I:\/󭇇4ӢB4qšq +  sOӯ-In"Xa- UObdc5v-xY{,\t;z' +D[mRkֵQ$Jj3<ֱ^imof#2/N0Fy8ޥFYwE +rZ.Mݭō@[|cFy+h.5 6Y;Gqr +2Ay?@ ]vgS۵ld-i9;'$FuiH)\дZQf04\Gn6usn3*/44cdV d+C2;g[iЮT>%@ ʱu;[ӃD \JApPe,7=qDr!=&};+w9ۂq޵v4HūipҜG R Fl0+pn+g8} +3_HL#AѲ `IʰѓHi,w3T$ 9A5^o} Ӗ;=Mf>;[+}Bm 7t#qQ;E)m0@SϸcZX -|W2"KrC`cϟƱtK]&~bK Gel>* b.{ketmaԳT1$+h$-q՞=B嶖LO\ndHCF vZ>wy,6,O(\tNtu# +ʯjW"ٖ_hEX(#'8A+㊿wqqOlI{<{G cΩ퐟l%6Eہ99i/.5{ҁ.>Ȫ98l>i jK5Dr&;6 ۝.mR)-^E&A8%Ǘ+&k{5kn>Y\{zճfٖUe>pA$ <*֡6Y _tJ+Po2?>=뢳H%mf~WJRZR)JR)JR)JR)JR)Qb4)QTb)SQSQbLU|u*iQLTң51SQbm5vx& &P;YXqgz˳:pPYI,NKrI>Tb4)TR)TҢhQ4Idq/sY66\e1<1ǒO5Tb*iJRZR)JR)JR)JR)JR* kt5'?T$h^0 W?98 +xODS RHC\62b6}i ZXQ›f,8KBT՘7:g5BD.YIww)ϦsY^*,>(=sߣ9`*iJR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JZR)JR)JR)JR)JR* h}"\Pe$}WqSγ ТbFI4vv'[jtW)eۤXb `?:h@H"2 +>*,,Ŏf;1~CˁVm"-f BeI0v +3KJC +$s&kUС7&WP2rz֚N4tM-*Pz.w'ǝe=l"is$❱U[xB텣I1J~E[r g 2N+&}+yfB`6Gij!: nGCD8TA%{d9髷vcdv8 Ak +@YeHV 0m +>gիNېJљJUT Vs=^=Tq!ۜw.)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRZR)JR)JR)JR)JR)QTv)u$1Iq ,d{:Օ)#{,u2DK@OeMF*iJRL,JO`$ջKoYutae9SԨ55j N!AyJqqm,TXE[Qorg>xlpSg{{)eaH#\UsXԲCï/A>GRW71FQFY`=M-beee9Rb ])J\m^`$f +8FBn73VuCKdYQMo"ȄNFAqU2c,Nŏ_#8 u<㺃YV'R EdzJUnbhw0U@3*)JRlOŸo Fg|URⰠ֬n r ÀHm$8ƽԭU8FX`r5U)JRD*]*$$ԣH A ؃UR)TԳND3GpH:e!PGM)JRZR)JR)JR)JR)JR)JRx?dUEܐ~5ycA]vȕ~M2js٪axfXfheܽE l;8 +܌;"gEU#dj:}6b٤38X0#*9?\7H!oc)!=@V2 kRuXGǷǽNJTnWRb@Lwm.6~5}t Spv-ߊU7Zʛ%+`6dlu8`1 zu 0 +I9ˋa7v\lW;r};C~Ird Hۙ!~$]\E5!X!N9 px~٥/Q +2l@he9Z^\_22=X=D=´!t9r$ոZgCܞq]iu{>),<P}F>VnYR-Fr`rqW-46goJ 'Yu: +1+|Z&D*>gAou Adl[BD# +Wrj< { R70w`;5SΦ>E"gq#mڧ$c*WZx!aeOx m\3#jt{}^Z9WVu97vR;Tݼ-$ۙU]Y[j궓++Ffձte$55gм1cvV;8Z@k29ǘɲD].d !eq P7²rVw17tl0O`29#TYKdxee%YHTjZ*OU>ӌǐs'L djZ6ÔGV_8ڈ8  ]>k-o?J rI{{diݴkf.ݤp>]ȚTԗND$d#\UX`9SOb>đA2$ddyE;;|j% 308pjuo;[<{* ʕ9β#F ~A-}=F Z>#iaw[ #.2FpqY"Y# 'M#f'h#+>]X 29+S0Ζy -U]8EkqL*b2aYXo8#`ֳ6ImI8ps#ohے2pNk5Ƀ>ΓZFm,PG/'$~;yVQ) t{s·/NkkI(,] Aίxji4Wv[~rs+E[ܰDE$*b] p8'ֶUatlJ_sURTgkdyrk^u4Bcɂʤi ۍpiz]VPa/afj2CsożJ38pc$+^'>ж_yF*mQy`HuIY'ߵRpJvx5HL$G EpC`dނPB88ZXQ#X&m1DT=`!x'2|Y:7ZڅI"2Qc O$9ҭn=١x 3>]},t((-@`GT؝$y Q%{T1X> p28+ BMj# _ٱHf݂@njR(ZR)JR)JR)JR)JR)JRXi=D:@xWI4[,]9A9tyO&FwZ2ޱ.ęH zOnCzih92J!-6>ԤH*_֓YKyZ8Eyrx(5[=teַD 44edĆU0Qx;j#JI`mee'I,Ćlm5{Z%# fD${W]4*KJ>@9*|!Iii",ۉ g,~߭g˽sZ{c9үn<)zGV`rFps\\)dr 8SyzvqtFuЪ9\td=RDiNyqZVh ]F%2,Q/M:<ڱR 5]Z-H"Cko*ǹJ#ɍFy +8$ G=^$Iy԰R*Hj\ewd`>gڬ-Z~ۮM> ׻ +I뼅CC98dg\Č0K$?^z[Js@FUmbW'WӛhK1qw⵺nd&OGbQY7b˹q Ϛ2$bmԜ * +l]6p%nbP䜒޵XjM*5A npтa9jHmUuQjEP&a{1Rx"N*=D;`7`ykoS'G6gv=3\MƑ5m%{涒i1"89.?Omn$jΛW!ȮcYu`Ĭ2Ŷ7XrK莙scmg,r /8RXsζ:]hDɛEDlda6ď_ iWv_]ct"Vϫ?wVMїMK =&uf(ۆ[ Z[ygBWhv'UZ +MdD[X܁# T*ty/<9ka%T: +6-p9|=.M;Xl4} H sڢi/nvA QŊ8,,Oh}1lp8عM;YH~ܣɷla* =FhafkkЩ_~`])JPZR)JR)JR)JR)JR)JRF)SQb)LTb)Tb5}d-  `}A3`dON*axmI!y Á*z +̨)R1LS4F*j0)bMF)bF)Jb*j1LTG+Edms{ ceA¢s$'5~F)Z$4wF*8#rKPK&ޤrʹ` PTb*ݷod1<U/MH#] y ++*iJRZR)JR)JR)JR)JR*;S4OW -b{G`૪9wm3L4iG5e%a9\YD*B#8>\qj3ϨI;L\ 27*YULf5jʴrZ!NNA +T3L&~]ObvX$Խhad0f\o H֚5ܚD +2q1ki~ܑ$ye_|PywI} sr"_FOb#V{ą8ef<ұ B-2[4,ݳ=_V`4CK1|汬/k^%u8 23bxkTU?ZxB O!s޶5iXYU6pYK/7` qXyugiqk;Ki*29B5jX$6 C\R2@{K/i2oT9ڤ< +*ڴK}\-"%q2U^Vmǟz +"kOscjq犽` P}sDrq[=(8s,b-ɼ88ߌ1nVB,K6fʡ 1Z:Sw7!^tܻG# +sGζ3&{Voq ^(@ۈ+Ob ͕Ϻ12vY8[ǯ5⇛g *mr{֢RVY$Cz,.DA y-}Ԙ0_Bw6@V;(Eiq 68%OrV_Zo!UHeE'k R316l İK@51{BŁbXv,8FmE$g8n*xm;LXcZ{ֻt{i gUe|~|sȪo4n|A`i<9Y.3xKmԜ +Q+a[EwcqzNHڵ (5L}%8$ ƴZu2躭áG>c32 +A#Ԯ/n4G4`@X:hz|7<,v#1B~@ +yZܹ,ܪF\GyEcޢhq[Hӄ*}*G$yÚ5V.#*K>TXoq]@⹭r+gMvg"gkE +,Dv% kdVL0gP-ђ#p=NjGα^ +Mj{m`_Zzl.'xeEU}nR3LiZU$ܬlѩxC1 +IʵOgvx,K!@>>yYA?sz:晽2ZNH$\ 1ޣtjp(*NH,UP(uyR 1e); \dpH 5%nn8qǺP6;F{v2i +B;VF״Zzna7JrH=auCwٛ՝]]^ p9¢65BiP0̄º :oSMqe 0N<0;V^VmVeo.'Swl4?O)b rsCvb5ZI۬q f2s|ǝSH}XPN1Đ,OtS—1r(ee!AE.gw#Heb +Fy +ǧzu-]-/&$1'Bowh$9Bh0Tz0bzR&'c/TTx bK云XLM!mۃ|kpG<򢪱,h6v? Uټ=i-Vj4hyU9|s:sӨ"^ "*,2J~bbibs)H+B<9lMiiźJVwgrD{>zN7gʥ|6i ZCoR= +8lG#_ѽ+O1TT2{i<;]4FӉ\mۿwfƵrhe.%3mኍlqG63K C;@=ϭeE4rG-J!Ɍ0UTs`9kEusd|ʹ2c(wFGv|9g)`V(!em}U21[%c,lc$*;Ca..&1I9ټ$lOU~m$,[".2AH#E7Iq,LLNI6㑞 mUgtBn1.;U AqǦ Hc#fco.'Uh-{skrR$ Yv cʶNq궷SI)qhJXJh֡lҦ,$h clp~*q (-)"%?R1° r35tLD!vDlaW=!G63r4yI9'8th9sa6y9 Oêa*8*V=o0Ky#VXUP67/v8'# P*VU}8okB)ޠۂ ~̲ͳHdU OS{ Ed 0v#TY좰D1=& jXe*β/46$ j T +wyTǡ7ޤ &PP ]_QkճIĒ;)4.Aفǖ*?SP64y K" +=2KYdAlN;xo y,s9VG.qO"A+;<&_PO$]WP:Z].\O`9 s欏 }HDWv.r[I *>&n%= RW TgUwupL,rYI :yEwnm +皧I:<3\0iw`XqaF 𭔨dB1~tDЭddb$QNykюcz-Y[k%*'nH"6o.%£ au*6g'cT_,COmns? +{P.-LaFT]4@+F !;Wqì[Ik8%$P |[us,v1؅C)G") 銹/&#wt 1涪FUJRZR)JR)JR)JR)JR)JR)JR)JR)JRFќgj\@%NA#$q>TҔ)JR)JR)JR)JR)JR)JR)JR)JZR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRZR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRZR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRZR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRZR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRZR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRZR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR +endstream endobj 40 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 14/Tabs/S/Type/Page>> endobj 41 0 obj <>stream +HWۊz5tOޫ +if0o, +e%3kzl!uugeFF8t:=LJ7Tt>?^/$⿯MLRez}Q5N'!8ˣBH1b +/~|PGSgYM~S^z>GNK)s;ĭS8P>2ZҐ%ֈ>9.Hs=S lïwy +;Pzwx|>&fCNRKa | U-%֤Pi 8wWm,^w_ScE8ӷiM nr^8/ OBJj:Sl#ݶKu*z*rb9O.ӫ|"spvb $~A!/K5", +t!@ʥ( 6l\jOtnayqP +Nl'Ry 4nU;IIv- 4:ִ4E_d׉q.i +]I-%˰!EdU\+;Gq<sفњDu~ +;k\/z|pD}Q+!W +R"rQ;sbNo$ƐXE,VYiXGj_Y^ A)>GwĒ 1{N^7=^29v!ScFR[Qz/|869bhʝ;#tR(\kQLȩ^33K E D;8L՘j,5Oopӷ?:JA6 i9EcS%iAӠe] X!P1cYƋ,4xlhNY}֍9۔,I\MO* :pq8@wf~153@V1ޏGTRC +HQ +HVTBJxΊ8XFknfZ(EMw{jՈ("AL*y͓ȣ)~Z/(F%m̐ZD^r*hZV[RԎF{vX/Oo +m7s$>!8VO2&j i{9-֗5Ew35nR;5 +iHŖ _O/-SdK$&tE@o~pTXҗ TMĸa4c27yWB+Vw75Fd &.Dh,H,g9)XjNpKuE̜PF{~=ܸ9Ybvʺ1rٶ;oL(60(0܎Ĉ$D կ /06ڡfMP|1cjH8TqN9s,#6quaBNTQz E5=xXz-9#2WjTj +X+ r-4ZFbѷ^9fԢ0 ]q+L,c8܍l_y?7K,=b樁$O:hmiN L@kF2ˑ*4 +Qnk ►4'su̟5& i|lg`$1!ZQ$t*9)-7r09 6.B'Pp :ֆ1( FCsoD3ù1#g9QvljXb8m2]v &#bSK^Ak7uM^"vww>|>YAj `/4ay-+U +>xp\ƙN85X,6sⰄ$e,Xt8eCQ jUfF%}ME摥Cʞ@Bt8tLvfi⹀̀<vmMʔTIe߾N7b:NV/G9`|mm"J6 -X8EKH7eʄ)ө8a`ٸihxKfD< J$wA1#'h.Ċ"CCAlɌU/J\u6z +&aFa#o2/o@dDooG}^a#.sej<|WP 8t玭 MXۗ7zyddk"҂J ͝ ,{;Mv$nftJCf $ȍqÌO»si)׷K^bJiό-Fg5T Uݽb wi^[_je\8 `7('==#ew0R\b>tl 4y%r0o2^GBEijNvz A0ݍ*Wenk&W̤~̤=jbg'c)_O%eejNndd_Ϋdm~ )IqЋ@F. C}fDInE-VWMۉW$9V@0+ B Bs(Q9\Pn5ie_!84ur.ir(4e?3mOes-vRfmg6xE؆@!c!\BƘX6\#c`o@CnvVl[>Qf=>Ȏ :`lH$6egR.u >K X''7?AxR(a';9Z2+6X q'r7JWJ|:*?̿h ]FT E), +k۱_ &ۆSekE(kp0ٝl%X0:Ip&c/_ǾRT -ad+%!g;hWHrDL g-G:'>:Z-$hd)Fzf nOdyq79=͘-$]uuh-x>Rw8!Ob+ڣ=U>FyѪzEw02h`FOo/aDT쯥 d-&8V/ +R$y,{{w 3B,K<I97)篭st8OO9|~*%Ч[8i 0[SvN`pZK1elClkP*_yIF.҆T2[gÎƠ9*; +[`!7$˱GxmDkd#ސ>\o9WkĹEmLzgd"]M6by0= |er4TH#5+lqc>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb + g!1A"Q2aq#t34B5RSTU$&6EFbru% +'()*789:CDGHIJVWXYZcdefghijsvwxyz?"ڻ4X|:gՙ5q(JDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD1|f{PW%b"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""<ܨϘ㱿#Ygy\y6~}='?јZE +a@ȹK. ^UW3*:_#2,j.YCLNiIk+.EgEw_%fzU$.ћFR*FSʨyqǐ寞u˳TexUETel^wٳrX{ؚx2::z.pdl9'LHofdޝv^5@ C?=Yjs^CtGm$F~;\qŨle`|sj5~>&@c%ow*ʸ1n[;fG[߯.>e5X⅀c2R,]հs:XǩcdKcG$ +΀}{MTb+)[2؋v|?>l絙*mE<7I$qauoy{tW9zowňX9/Ĥ=OhXS'ٺϻqQG6{V-Mnk ³Bz{ Ēq)=b"" qVM7:Udq=Λc5i:'D%VDrI&:=2pi[b&-RSPCUmNt[&aG-siNlr=76js6.>ip*{/v[?Ľ7eT-ud*G6r+QI=r{jn5܉ѲаEzGNT[b+Lu؉ MB=%\Qm _00d zH,gƳ|YC-T_3ϲw͏btXDJY@y-`"*.JݳZ6Gn34btuY>],U*yv$pރU +xwѳN^K &aN`Wa;#Uv2$KzcSbϹ_)`a՛б4 lӲP= j_Mȩz=eWҝw2/ǢnLL8YȒ W" ey7PfZlʨvS +vvE}ń%FΎi=['RWYUP X|a׷%sbA/Ձ>} NGHĮ cR[l"*F#`UMt5Z 2~ +1~#'CznWzַJֻkR֕(G o+)(QX@$zvPN(>ח.#=wdV:؁Zܕ2H]]i{.=,??T7b Ѝ]GnyS>#C[Oqp^_q^ޥb""(N-_ +*^-ŷb 7g%qz&i"^_fTDKfe1RG#YpIX'SWhG%ɏ1-֢ރ0RuteC XI⌊WlvFǦˑ-k̯.-zov[񑬱b&[ cض.; z"'cz[+To[bo3ڰa+9tZV(t0$DIz"'`8N=K9bڈ\C2c#g?}uXT*4X L%rUO<g>`G_GnO ӯS=u/Jkr7nP [w@,̴ me5ȩc#oC*S~Jdx|0|գUHtމSI,\Mwe]xފB=Ā5ubRX8~ O>)ȯ?IV +Qa2/t [e`H=ƏYѺ&EeڮAo4V#}L~ce.5VYՉWBA*{73Ԍʥ]ld2#yt^1O]9rF {os%&rj*rpS:f{*ԁ=f&S_gVT^I>"{^*Nl- M˱ߤP zm,M|AZ!ucWSW|:NUccmfݵ{ #o,W`[bnyoU-1[(tB,O!\bȢw1XP +afwvt5wԃ_nEX 3V<_/oaǵD|@^ܹq$떵{? Ljsyj" |dSO: R]kw[ S|#u[7=JQ·j3`ڍ) l};K8@%Fϰrظ8O!Y,vx|$721ݿ'SC-2Ω}93dY+m+DV7`#@uw%qIٕUoѼg`ɷﭙ QeV3…rl [z n]ÎfmwЙ9u+ȥ%O 6[bSBB ~aw~F?D(QTzU{{-YU{zZ|\JM0}}0Ţ4(lUd+v4tA+ƻ&Mf8 <G?/_ddŮM+[V$/#c(zGp5yoXjZ4 ?>nȋ9~ n=f7#0>K]ZQm_(@W`Y ULΐ+Ǹp4ʟGl~›|j^0U4`zU 8׹nUJp?YbGpɻ8QlE*oaa${w;ֽV=7"+ܩ2,|{k5ވHmXv#}#'P-~˷N +y=>tW2675Jݚ 6uzPTupQmU^d{{:O*bԶ8 X$deڅ6XqqŁV*A}ne mV}Z:*mrq24ږR/HR1s:u9#"PɧV ֭=7kK# R!;zK^9M\30۸ ޸ᄒRKKu/M#=Aj,tFynl{W֗)c)EEr`X׿oX.-f {):ػ]*Gt}zXN XQ_&`x]{&έ֔ʼMeT72l;qٶ=6t& F=o) c9{k[$}|8CîV2vtrw}|ǹZ*P{Lj]AWk^Գ-e5l/~{fF"/;m +Nl ӟ~y'oᅎ%;䌾P[ݙ]jP#gj*p*X)XAuFϤXu|G5"c=lugg3U{xTʆNAXɑBdX6>a4z_P[mnm閪 {RvO+,ޡ{)? /"-vFNbjY$t:K0]Qmn16+?kNᆾ}O=O%[R+K0C'o%4YY`/mhے]S$ST/N8,X=I@YxwK>6t>5fdMG w`NZ _:nFE%m˟![zS"X2ENB!{w>/'2EOu6%*W^kz&5xxuUMR\QXI;;ޏiı`R6]:Ķ[;*0܀vvd`n4f%T :Mm]Vku*m\UF5V5ik]2d +sScRqm}L[J9MzӔ]8Jl+;zvcv6;hȱ{oB'm"OyFnl56 +{ET==Oobamʯ1/uMƻ;V AL 8k*Wy 2+TV_Ы aPtt{z=+(OWYe[̯Z"2;Ebӧ{\>&Eh,SEh1)}F|SзXVS}k[H羝aUV;?h$׼Sf&ٞҭaa^%+ 9?$K͕ Gp&qL~٘gWh!@6ONꙷ-,[#RxCbrX]fʛ^giu)uEz)"*+s]4[񛭁@lkJܾX+^NGUY +C=^oOzOY cTShmm]Hf\qa*PWy-L_Uֹ cHmX6ӍwVLc3l;zdn'`u<{,t>{+ctZH2.5 X+'պ}}ŕgNVl字#-^7skI>1EVX̵-iZ3#>C@{h6_KS4W\1IvON^6U9'@ a+խ:KT]Y +*|t}O]z-[Y"-.h΍MmWFj5I_ zeLk֩)^[Vz=;ZVKY],͓^'ճ"0bWD]#s bsg1$dɔͭE75N#;VS6'0jX33fcz| -dWS`ںah}:Zqc'вH1nr|ww=:uE՝ٿ{ ":o }{('y^"RV""%#RMv[[-vylGfm}=#" MUR;#LMJDJjVSR(CsW[R \ f} /&zg\,TɱF;>㼐ܳNZ_m.QPludd>]=jTBS̟=F\D䪒옘ٶ!Ww~=Mr|(fk|#E_e܀IԵ.ћցNSV~7o[&ktik]rp|I_Yө.7=̵aI/??WS@J]F 4t'|{*pWŬ7ޞ+x}NֲQKW^ i-`Lo2P]>x3E5`{LNvu:lȸvWP6mcݶ{{KuLN{?L#dzOoQh99Bn|Z6/6mPvw6Hߴ]9]Fi9|mE!W`6F4;y=u9v7y Ykl@%>Ǽ[]|2l4]ȥ+eb0{lxw tޤ֡jj#jc[iu7k'NV)]]mIWu|p>-kZ[[z:r5NN5;9#d;`>Z6gH挜ծ0V=- fY)޻=fGp}#YV^G!Yy!Ez葲}g_ 5[]-m-pW. ﶧԇq^磪;;O/]?,Չmӝdf؁۷~"9CU.E]tQz{/^b_5YFos%I'6gM.p-7=/mǵktv^Y]K\eξO|[eԱ#}I ߧX涪ױmCWb4r6 썹*w~f5v~5V(|7j[unk=\/9kHn{b>s>S'z51U:U@sU3ߏGAHއs&=6Wuw,mp=Zg}"P,c],v`M{lL\qn7y1!& o}oP WEm[]\< c=ʎj+NM,љ>lyؼv;z= *u]ۧ\Y'w&]oNLǶu.-_-׺q!}f% cܕ~JboA%_1s0bŒw˲7k^'zmTfumN}nLtL[qϲ,o ǶӰd' PUɝIX8(,ğyo.;t]ʮy9(;>#@jXl뺯Pήr-զŬ)$؄oa¬g-RI"x6WDGƯ;jreSŇx/]VXX:;0B`g$kDzjE`fulmkoZ^ QSbm;zLނ]WydmIK釧qHfꙸkckaV~a'$ N7N\.j^wkB2pfmWv2kYwNY5EՇ<7`+S7c+l2o;+%1G%k?nwY2-{C-6:e#c_h3qrzX-]IN3 +v}&ފTNs5PEYp-zTe +ַ(T` v'}z 2m=/vWԪlT7 W=:}&E#]9;&k=__0僓-z׭q#[oX=kK woO3uwjnúGo2_$A@:$WM8g5*MƪuW!+8鶽zk7([ +/5`6 s_5w:Bص|wٓneb.MWp?_M}gַ]muPeSc&\vS¸Tn.4dw@BX=VW.U+~B'U>'5f:bgb"IW﷤خGTn AhX>Κ52C}m@rH2ᵺvd<, SsMh]y_Mfj qaݽN~s2kk GlH#e~ +&_QKڬkMv  yo/l<sU=x"='LaI佯eAtܬn6 +x6mhj0J7AZ]AfuNWq8S4{7 L2+o*A_B>6tK2iofLB¡,;;'g zsTUT,*P>7ezLHU W-W[䠀{z|C=-Ih+c^ [r +A̅d/ElL!WJ#[w= +s3Zkjְc{%&KQ]}vF?PlO5k ?3yzWN=5j +n_Fȳ$I!)`,) z>RzB^c1+fTf`8{}#+b5Z?g*b=t .63 +MT1D q}<߬5>_=w˾KUxu7w +iYWT vmnLkM*̱t5Q;LKٓVNMi?cv&nEomlh6G )ZYRl%ש'~oŠ:w׶jНvYzCf[FMvw+8&FјP 3-|D8]{I:5]UWK|7<A}}%meʴ +,vTN'@:uK"|O+Ь9eI]-FISFl_0e0Cؖ) +'jGE EX,T[[V*uI LaXNLޤ''?TIE\h +a;%~HLT+-j1 + lIoka u@̥O2<.z*X8!m}:vt*x P@+yKp>M(aă^_]zhogY(K2݃v,;hGcC˧b=J©$hhF\zyY:Vys2[:=%~}7eZn{֥UP?@mvþ~Ϝ2l/`UHBXkǑy/!َT v~EQ[סjӀ6@*7Ipw59-{.Z@ĸ!U\Vm'+?چhn\Xtj +@$y# _ԖvYYJݛl]r~ VRʠdHߴF5k꥙m'u:ڡ#ЃgNEl7d 0H?H_ PFw~K!Av.tlw02:>.]8oYv-z| wĴ#ŵ2-;{HfcݏzRu RP -0fExb=Dǻĸ-q–ڪ hG;Sو]F2MzYe(#Ԁ{Og8N=+d66#وԒ‚[tmGpv$"a)e(e~x&BΘ0%#z^WUM`70ZkgFckWSptJZPKpǸIeU7*n6HQHPvbޝm?H벂[zNE=fwP*꨿{0  ӖĶ 2ЧЀ k`f<@jWr *E@?qT-VXpS[`{7 VLL^ԩ镋-'uEUݎT{,bul4=vSoe%J)׾mtfIƵsje)-A$￶nR?+EBd)*,T ΌѤZ[>R Ҝ^6$MX7% +w9$|dw$fc4*`H<*GceoS}#eBE ` iK  "Wl؋-@;-߈:a׏sjU-E^~ݥ~U?EjY 'БtdwCC32ǽU2B!(P +ԞDĞdYW5PZ/ A>Y]GzqW5U^ƇuE'?){3Ęuc_YZּv}Ɓܾ^\,jZ<~@?A#6&_RZbڍrb %Jh?nf1L@_jX2 +!YH$uOS3<En!Rdoi^)ˉU3:E-NQL|'MXy8Lm|/\z9dhkc&=)ǥ ]^;RN`;:S xːӓ($S^W. +J*,ރa0WŘV.\/In n\IDDZb?b=U 6RtT>~7'6ٙvRʪyvs*#`]"+\{o5Ff{.s[>DVU AkaYռ=mT3&}Fd&@we$4`mvW6To,dJ@x#Q0]+51e,9W{vֻMw*b㮘Uf얫1heu{z +޳ ug* +1:5f#|MW'!+\P5[k\[&Dt|,|,7kj<ML쬜|LNG~Z'\&VmX6#RlX@;rGS,bܿǖ>>i0f~_oUƋ=tҊH6:cd9>K$d6_RS|zԥBXki3rNF##RƞZ;k]ՏZz behI u'u1w7DSec;RuHI|_Js]en+6yD:dwh/Lg>¯R:]zPuޫӛ &3ڧ +k߹mw13=˵22 lWh|[ oL6-0ZhUv[IC>W{lhb߼cgwn +UŵBTLl1(> +'crW^}&9 ʷZ _Vu2wG:Sy^=&oL8,@S}u~Òb[h+X> yԾ_Q_k*ڰMjX4@ _}OҵE[Ut{} ZޯsEarGRSʭF$vI:u9)jnB= 9mmA=,yΫˡfWe\݀nl5|^*J~+[e;S`׏}}^髃}bzݷb>VN5t<:,PaDH^Nfe#d+aX. kC`nctkB5d^eQpCS+og}włH!1=Ruw eY[a L.6[វf + +Re*=;V܁$fP~m? +6(T +ˑ ~-B|{"ˁ)#A'7 a+],+,CmoJu}ֽw+eP<[} Оe^$v71vQbu@zdYJK{$gLϯ=trF *v~Dva5xm_-l>):>GV-[rU  +jtHDo31m*:Ks:_:MX֕mv`0/9/R6ƩZ ~f^5 [T ko3'ӗ2r/VsR}j«/7_IiS/,K3#`ZjV%5#lPuV""y塽kzDDP݈#p#C4=u+[ b%:aqXYqŨTigd혍$%%b""""%5+ m !UmI6"%0:?V]-a[VjYX<[;:85LW"-\27m=HX[KuUhͳ$gQ[eCru( l͈EmcTsURWޏɆY~FhkU + DkWUFKVAbH>L9TWiFBƝv7ďb=ے/cQIY{rl V,Bf |_Z69""yvॴN=z}K2½h[V܃.[M>m+ۼz:JFgDKw_]K^L7tL":.OjnE'mAfO=@Ve{&שAl-rSǙ& +>}:tGtvjV8!r u>feDD^-meTlXyǧcY+khYJdDpr6P@p  mS؈l*TznҘC;,(`ֺ̉|;m`T#CTYV;rU?7.DL,~WY,ɪۘ +uĽ"ԤZ-k~H:gs%kb63dֶ-E6V`)ͱ0rab5DA-b\ߠ8_}WPHPò_Ud}]nb`u@n+CËYoG^zWQ&&SXS޾]8]h:X=|eM _Gí)&LlE.9m=eH~noRX +=`m;g\'K7V,oOI\nwNƾֶ|J |ϋ%(|=nC\JǽZ(N½nZ&qo5SsN+dBaP `*iO"uɇTk^`3J/FC>]@Sr}{i1llk3+Ր:h 6TS.QUՅYG׸3f֝NAa_[;.N}=wJ k`W~'f_7 +_VTJ+6F״Bޡ +U^ml0y^ᵠ_X,:K#7؆oq{5<\ZǪl-fV9 +'[_gҭ\ŋoUNGZގ΀/>ӺVMꪲŵZd-@aX{/bH{GQֵ2kw+e/wkdb,9fx;7tȦ^i7chzLŽUr.4ak~vMZkT,`.Qk]H:m9:\ŭ~ +|F{;fۅE-vme+5B"ޜڽc 7;T oC׷ź湾yʈu@/7raVqQ_ c\?>w^GPEU+Tmq +nRWy9[]5Ь׮OWu\{H5^z1)k[,+eQi⁕]MvaY+k.E +dcu :7Znc*jѪ$Wl h35M=:8#Ux-[SN{ܙU&(j{D6׮zS} sq q+5v5lAcG>"R\k_IrU:c2mz' yc_:OJoj5ӥ56:ik3UV2Tte4iF^5Lw ~.)OBXS↤mM@^v0POqz.ϣ_euOutTl:/_M}8֟=ASZ,=7}͞kַPl!tWV mONP Cs~@G- Нzn{]s31nkj 2CQ`px>&WQZOj)˽a'~\~ɼ D@';fuy:Lw%nc]vïYHمs +}"仒.\p =tWI߹M##>jU jb;,}4}7 ]Qen_<}}ImKj"3u.)-#q2ppmyXdE5'ppvGb{m9}}~zTгt*h{hz2?ߗe5w)z6/"/S`t|ΛT/9O-~Đ;#=~]Xl!9]~`e%{A9=)knɲ3aRUא#z>:kjy>y&0r'z?51r\3G1w&]I]RԘRXVfc,z2bBaY>>R6/H#bDt?'Dv +ZE,p[tҍ +P8V6X?\wLΉf# ݶRK18zwK9ɟc,rT}|:yJ2t;]wi}Ք. l kf+Lod[U<*w\9@u>G[Y]Jk)2Y@$}q[;=܍ P|,޽İ&mbĔDA>V5"UP 3WhU8ou#4;Lry8- HN-ˋ޷|>هW #vVBT"q$v}ɝԾ +8!]0=~w5%!2N{DϪB9#ŝ]dtl:3Y{hJ-,pbUP{NwOEv56[_s.X}=/ vWPq ;|]Gɫ/+W=+]VRv;:E>k e +D7SXnP`O5H>yl7xN VR +`0}=S22j5jr$5];g Ql^\pfUMk}`gtgGV5'JA܂Os~#5 +uUk@ֹ ,+zvҎ,Pml01<4mֆ󾑷E)5mB>NUV +)*^"=y6&~Atmce7Hu}t0o*=:4{.VZ@EiX<$Oݩw'WukEϐyf X]l)79h^mUkqI;۱n#&?CuqVY~$7X6S`u>Ԟm+j/f]ZCUz>^7R7̬\x 5-$zo2jʲd!ܐW^WJkRQUEXd_A޻o^Ӳ/ g/º.}Aڟ~ܥev^-VqrC+czvkùK:M+pYG.˾>'~mKkEJ3r%ovGdbu[:SW'ƺ<=H~_0 +l ؀{cͧTç%5+ T}d:WV䎍Zt`Hķ]<ʖ졦RRNw]C? e/r}nv}#'.7Nv֋uvr9Mp Vס!EԡʼnJ7U!S=f}2i޼7JFnAܺ ‘W ]}PH9=ՑV)Łޭ|(uq {#7dz-JUhA(ڒt~[] 7? +}JUk-UkѲ:Y[}!iWbGGw +Sy?qһ omO] õF.,'b$u;󮶶KhAdVbn;K4t,oiXA߉: ps|7kXvWMxnXdk *?o<'Cz7augPWGYf/?]6*V~bCUtvg+֕pݫVfRfBnvfJcڨG)anKĂyWda[UwPϴۑk5 2_ۙu:[OpnՂ̿-c_) W +:UU=B@uV" LU阊=AHA$YXB?-cbS)Pl(=舔rMo[׼;M;ܬDDb""""%ܬDDó`gNk~gs̿Hܬ;ܬDDDQ Jb.?evNUHt@*fNWCy`VJ,GG`T!v4GH\vdrՎԄz/}'#bE9+:%YꍀGm\Q#f5CTv$ho. [pUBHQqvOb{i\7=O/EoO:[X( ܂gEaGg +ҬNg0qT7X:ҞCee՝J_KGPЃgΡVn\QCgJjYl,6+VP`L>P +jܮ+ǧ}3'm5'vcSݕ*ʶ[̭'DPU{o]XwZ]%wOcO^3+[ַtBA^CVPM7R"̠5cYR,*Ė 27Q>5~?BWJÑ>LN!LNrZ77pm=}F +ՒnU@hoJu\gf-Zr3]olT;w׮eV讌X;BGb[2Z(f]@O={n^4$Q|. rw^8T9,C0G5F \BvC}lfArXad~q+VeyhvM;?cvUXսnl,\,YÈBt8v~gYM{C'Uw< +]Yy *c-/_b5ocq7̀=qƽ}{zw!GӢ `dV.JAz~/KX*gKSCſtwo檥Ij_qocu\+ L]T3uLff>EyU0deXEx7HYW*@c ^=Id\-UbبYby(rΫV]xlgEm6幎$%тv~,/-zS#}--_+LK$ITr Y#V\R޾QOXןÐ5XH;~: cv`&,~e.OT޻K[njV {2wZ鎉hC`bMluu=`|nYjcBFVmpdxez +:׾Pxۿ7_^)ⵐl@ u^ZYO0.hFwޕI:̋OPY]'tΣF +3Pfv#aUF'.F!_ ˮH%XfEº˳";);҃+WM#ۭhGvSfIܳMWNTb9`]U&[u3v,ve lUA }pzJm CHe:`CA~ExZA,@P$,^`y;eOPp; ۿn5^֮OaAZX5eA6VF;l؎(rc.F\$/ dp%)L̐_C]RWcbcطِZ܃e'zHKk/ *b؍Q@O0;ha2"M\ѫOR\D,ZBgP@#.>[}Y's߶̮'Y̹Bº5lɽsmdUUp8.%A֦OL3yy?.|'\kgDyŽ6fT_UJ[7-r]aOvƽw1% )c=hln<ٝKKXv0G,B]):G-]T +f*e%iN~[19Aӥ}@$!>.ؙV+U@J͉d.K#}wTnU)zcc{ͱ@P/IxSr,ŻMLjUd` wd7S\;V7PvȪEAcV1&hƻ7&t[Zy!QY~6cZFsc8QRn!_C֌:w1-_5hD +OJ`Mv*(l[+8XooYTe( *Y[جޘ ?ړcrR6*o@6)5.PWQgGq܂v>IܚaUԓIw#FlT뉑:wc)?Oa,MvQK{{K~ǶNwVotqqr6Wif{Ao,+T`;\~IbхVx>';|+^W wOoz>2}0[*XMh@޾s+۱mm«B9Wř/=u0:]eK*ǺQ8}KwsMfrJkƣ1hl'qqmʻ-^)XnJ$m锏b믨RGfL3Dmdu.X+24~seUrOJD8Yanz}vDεQWv?Ebǟ"*wAzk32rBW1aȀ~Ω^WAl@!,4t6|M1+nse` ;a)+5ERUd Y bāG6W^)sPk8 ;O驉ȁvg['OzPjy!P޴=~SXގmd6[=% #rx{ B: ԓVZwjvb2n}K@7o4$/gˣ[ a ,ש{"Ϥ~/:B}qo#)aqq8 а٢=If;s-~5vPOɴ7c*1O1y~ C|u}|4׺zwLaڔ 􌂵q܆ G`1zFa뽠n=?WlUJ:em ݷ4 uL*<9,C2ӱm%5at\<;vq]4_]=(6;|;>̽Gح]VtpBñ;߼ᾡqu|Qb׈WG{>E]_iRM,Rˣ`w9Բ髭솱EM >Sic-XEMNѕg'eh@mv:?|M8}#fLS̭x%O|~uc쮛`eG nԱ⬊66>[CP(=cVzIrl,d[̰~olW:V꩖=mL݃SNJO`m߆7j.GJ\ `Af`B[]=_2u#>„R~F7i8r-e56c[rzmh|29T&\߷ihHl: rcylutu,wTg`{ +Op>S߈Sdtp-[3l%h.빵Ms:=Dro9SK܎9RΞ+tя}WlTm8g1̹\}5>rYY@멻DD@ǔ:s z5Y?BEnKxMjJ +X @\Kzjmķp޻9@ KG@xV?UUW~Bzzҵ䕂UOַ-[Fei}J>-AzDzYPګؐ“}@؞yRwnbt҂Lj|)vOT[GW5LHp?mUR(J* +xn^UHۊMJiAPT| r?`KR/uP7)Zy>#\|:,uBX,>㭉w+ǔTVv=Jj8v5Y _^72ȯjP@h%q),jP?3S(8hC`QKcB)׈wxUtֈNʪ*zSi /qj5M֧@w߈xl,v^jC`Qyˢ +#cԨPU8;ԡƨ5a%20]RX?1e5(ȯ?x-jA@ ;KU`cPH4O=gN`w߮T+;U;|p,T[P篣yˈ寖u UdEoZP={ݞ[ZkBъs]v4v>W.\|orZ8 j\z7~YjDU@v*)^(G[/q%i-ڪy\0ڐO2i[VPAl~RR(*+P!ZP{Sbj +޴eҕF;N%9ZXP뿸."-`*RX֊X튨r(ݗ%*3Tv6 w;/UQRAPA߯iZ1P"EP~jĦgVs*:-mz~HؗvŭS>c'Zh][gH:ғL| ~SV+PwsB DkP;4XQZ*׈ ryz*PFDTTByVEvv\k k>5P: :a\]UV[9nʤZ7vGvfE+ª+Sωį of_eCeV_)нJ`ݕh?Hjqb Xr sw$ff]]]q KmcCnb$SβbY1ml9RvE[Ѽ8Ycޙq&JtϿ%k^-xJ֊Ï"}m>GBFxjɷ,/S*tWSkǤ%_2/E^QepYlzc,xfx٢{: ߿qIDD~(X4 JZ?1:/W^K\|.W`xIla*LլGj(.;6=Gy!)R'` u4ض؎Z`-sG_X?HE]zR@:޽&[\ʬ$($H:w""""""""""""""""""""""""" 7>8j#P UetvAF#~;u^qkZAlYfoܒe)ې](ط18ѯE[[ k'ļF[tus;tޡE5lRX.: }||,XX v;c/}\g 51oO/faΥWVUKi~̀RrF޿r5le*Gr4A#3ۊkm£/e?0<Һ{3QM[X 8v`ЙLOosurij7qķr6{1קIt躅\ueDj޲gS2BftOcp!<[Uhm:~Vj|o25KrסXx 32 +YkJ0,vx3lO=2Ek`]{ɜԶ,ZlS~z܁nZH*`KInG{荚F,Z=G09r=QۿXt⬴6u~g;+Rǿb`3OFB\RH5] {Cx鞀*uwOc؀;wp_ t94m*m7wM9yWjWUlSخΈ*6M%|S}y_UvaK,n RNbw%Բz>=_po-UبZ6AkS#SgWp)g$.ى Ď]}E#!rpe^@;qw^5W~djq,7.L:VLwJǙK >HB]v;_J-Vr0cWK|^/ZuS!m"(aHdTKg:J"""""""""""""""""""""""""m~U3sr˶.XKW8FPZ mBV""[9qWBZ98{wKINvvG4rq(@߯m{ +9pBQXƶ|sGW;c+>nb%:נ;xj:"BR,S9~ru+]FBUZ9u}7%26fQN:cs*#!EyiAk׷0-:z=6M.9__ɬCuwKܢL԰*b6tF};cUN!֨cȪv k=~dKrQָr\e;B{qE.cù8eµ >;[WN$%*qib@nnzNfRP ! V/fAߗmlzx_ҮuLSRP3ZFz3zLOiVK)cM6U'ܑeޯo?nCYn T oRvMᬯK78wJtL;0*KCZkm@7YIC`,8ج9~onFPh|.U1A?>&"%&57"Sbkkmη2}%b"""""""""""""""""""""""" X:=;.sJDuɎeTIu'!mSX:-}4w{(c" 9+]k#"Tk,n*d:Akf[~c-7p6>Փo$(u;R~v-]WAъ R=&Lfg#aCݾ^G?x""Sz1WS~Yac򷯘?LUnCZ_0){=ŽkWت4Mķp e^NFcOĮkЀvwGx*\*FU\cn!I0=Ǩg1_.V@u]`{jCu^#]|w/IR-bŎ6 jLx1+ +}{X#Xa[it=ُeQ"-Нq'(#)C*_ +;:{ XHD$/s qpU˝~(vy v+^zz=6>#7_KIgvb=65k3{vde֕Yc|+)YMDDDD{QeY C">E+rԑ=co_X5KY>!k[e9 )]v6 Y3XIX>`XEc=_Tf+2y_?<[R^[U , +:ryt'N=I'Ӱޒ&J5v(eapg4%Ps*;>v""""""""""""""""""&7RNvKUSxuB~j +E 2;l_A7U6fr"cJFl?2Kue,ͫOX[Kz+Wqiʯam@QP~{wbc'ORCgB_9ߋ}^UCoPcWy))C2u1R䜥]Xk;rPv~yNUC؈i⭮eOv'łާ,GGG@ q 6UU::J97c;10(!Vf:tΥ<0d7zGSk7+B-\>ܚM7Lj(ZNߛ˿>^LbC[rǮ=`8aw(-S_Og&0'0%b"""""""""""""\wST6Na*`~2ӯ>1m=#\u╠P?'O3."""@?ZdS#lT~Щ阖-bwo p !"3+~q;XTiث9^ހ aUIJlkkms S[ п EZXE󮨱 ;13>i/nko_ou^KހpMSwnFO\lY[yu6P}G.cshY)OũYY_|wA{{Uƣ;FE(ڥn{w?)k>#Qm{ C-oSk]M +}#-ecUSjGRl}F:MhU%v+W~c7C!7YO9< Fd'V#s8]UHT- hͱkCS#}FNmb͙|]A=΀>lINcWMFv06$gn~8XW]6xfᱢ9oik`* SiEU~5~*&1:Mƣ>m:d.Hל\w! ZllW1p獎ZRb0F{?c9=&My%H?ڔ~i wŏU"#1ji@I& 6GIɸ[X./Z'z L,.ԮR+M~[•UY}|$wp;Ms9MvX|ZU~fb@{#ؠ|ZUO@:&stޛL9_Z_5=}:-YE*kU-vϺ붏oMMIKn~ڽH 䧱]>DosK +>c,t+'IbcW\Rϯv\o t ,zu\U *}do+aY=b@ENOScj*ĔX-PeA[J^+PO#w13:PV5Uʇyv^5dSǦ}<ϖ0l^dn"9}NebN)>G&lDDDDDDDDDDDDD@-d&%OmY`ɚ׃ߩ]R+KJTO>3jN$DDDDDDDDDDDDDDDDDDDDD[eUek3vWi ,[fǮa-t<Л'OE'b~"VCzؘX 6EdJz[=ٹe]'hd v홏'rfT/\}1( lnHZۥak([݂=Lhpƻyjb,Tw[~gO׽kcmX ល-:Z%q~YrjgVcu,?cVɿ]rܾ^eOMJ>Ŵݷw5 +XA߈>\f'T +eX+P5B֠{}^D̟"X]q|TvU'܁ Ԇ)Yj6P+v='[4S6*I{g?cyƧyě7s}_{ lk2H0}U,X(נ'IKl͒K5[|cVGd"7crQWj{=@xܾ?s:ҵ}O>" +OO|Waۅ\ܟ2Y +=DDDDDDDDDDDDDD5O3uܼ~Si_We})S;{M֥ +''(I興ԬgǡDDJjV"xˉ|w}oi]9z0͏iGeey-O{e^45Z'deCÙ]o>sVlFv:ϤإbSRMnV""""""""""""""gUqɹhr XvMS,j'^l%/y-,eՄN OI/s-$ 0K49.F+.rV؞z/Sc ֻnZ9Si2nRHE'QK1z"c#(jUBV""""E/e %b""""""""""""""""""""""""""""&[ƻ+[ +b +ގG?E'5'\Y9 gi'n&UPocU oӾdPō.~[޻ W-[pab8a롯Ɉ,fׁMRgc +6flG{CI%O~DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@5OXz}?Vs(oЛJ"֡Th'/\j:TVf? ɐ'*1y'!X6/0vPvG=@DDH, V(Neb"""""""""""""""""""""""""""""""""""""""""""""""""""""""К^o[p'즢Wۼ"'A`*`M/ya9n3 Sg@o[b~{;+Zo%""rI]f*GlLkro}7MQ2&b"D~@i-TVe,*UҚϪ{{|zoKXɋXZh]fPzJDDOZ#YcU=&Z?Zfj%;|@|̈aK bv GI~%r饕Vc,~@_.n[.FVG:=.+eb"""RcRűU ~` M7zO3ԱvG$`cl{Fv>!UB^ܥC#Yr(YĞ@6!_[z[*CĹ(Nr<,E_㙂2` .=K_cr tsdzDDDDDDDD8vYUVdU`YOq=&LDDDDfn=6-Oj+V`N|zܘ]O nUt;|[:A %7GS\::OQ)g#6FmPP1|L{@;b""S?|G}t;Yï^lz>?\ų!v=GS}>rtvĕz)6=;TDţ)Z=~܆](nObIdBxQ@'gwws}ɒ1f6heJYw oBxʣbwKW\GlYfJYh +lKR>dWFC]QխlJdbT0e4G#XնUn2s݁r̕ E}ykn+,fVr 2N%֪pUQNf m I.eImJ$^{/auNƱ1|]I}&eW _̢pXtX%ڃyhR_]r_(T +wQ sa*lVĩ~pf{E,}$L_zQ{RFCUq*T2ykCcԀgղz-u1f!r(SLG@$hvKS&@ :'Ԁ;L.nfR C'mFC4;b$I!n(ca5[oN?uԫgRF 5/ceߡ2$'z8]/"B6Cĺ"BԢ"5@%>z|;B2/;Uq~ޝZK7Q\7?օJ֕ȁtz=Ru$VSR=+2x6U5́@$oCrF*·ʰUmeyh3Q]~2ԊIB7!z {a,äOвʑ0o/xor;:`U!Zn,+t 6Ͷ QO;枩Yf;Vr'?(): G]l2,6=9 mk~τGxm\خ$t>%W&G*7=YҬ:Ԕ! Xo`|~.Ϸtzn% I (_/IK6 pGr_l}|$loueUA4ݒw3IޑS*\e:$~UZkWeX ϭwgnO +йU*C"aFS^5yjcՅIOyk}-w4Y5c]Eջˋ'LFPkk/9keWa ` M?/ˇן._YnOH[Md:26$|$Ijm5ucCF +|]0$7Hʻ73`Yc6BORAR꽖]'tދFE5t]Gⰱrs[3+-kkB[ɉo[+â6K(;POnzV?Y= âG?ЕbG˵fν쮬*\JPiB. F[kqv>v!0^/jF + 86zt/bV;rw:Uߠ[\en5WT섆_|YY{G$?:ORWǰ2Im3\_+t*,k :bw?t ^>)]u,6#\|GýHl}-Koe{epʤ6;w勼FBuu3+AOIz/L%uVSAau:+e=Ob)<=inؖԹ5 u+r~>6ET9yA7==HWat.Fإ;wqKOyYgU\C- w%+mݏn[ WG}os+0:T^L|ξ΄WK\Z{#hI興պN7Z|l#с#r(<ޫ [uM&ڝ]l2G.ĉţ)<[jP`d̓5o_>lֽK=717LNn="ZDڻt4[Ԗ#]%v||w3 hL.m欳K^VBWدmO=Tꮬ>QTdlG#i~M&ڼ[Y kwOHu0V/6|5ef?mo_c+Zq!Z[lrlk_EaqboL}gfkRZܢm%G3H|{WnJbېX855=U~g3g[K!yl('ۿnNfEjf]=ߠ#Y{h' v՘(vJQ$#.VWdVb +g;mqn@=aKB:9{KJ 9 ^u{G Ď@|#0zNO3ESGrK%d@c oN\'l[qJ|V-]5%Dl'C5_ K~vb،)N1#[ie:/CJm +GNyf-^IڍaImNy?hp)Bʧ|N6&||2Sֳ휿m3e%|̔jn.M(*k؋g['h˯58~VDwav+ եbXUaeZXyWԌo5g RQuqR9]$ݽF;gu hʹW3@DZߤ?S%͗jim`q=B''Ҋ5ZWieed#G#}}00q8YTd5ִ>?;ep:m޽m6U~bXˎ;?=˞,uu؞fsڜѓ2"OoY_Szn21:UEdkJ"No^NmuS y[S]~4 qKU]ϭ[ .uiѱ]̫nzB+v޾zY$~ +)\5Y;I^UVSa +E;>5~#ͱЏB+yO'"EO]vlȭlGXpG&|@k:ܕ_GUrr=  ^Cznf3N8طdhY*4yBrr zLURM͒ȥd'KGxߩuXUk`yP5zܹ3ۣQӮMbEFgu}ù${ {6׮[e6cc_9g+m|EV,mz{M򩾛qpBؕWŐz]O'ޔ0*@eX ;,3tܴUggƵQKfBLmִ\]-..Bֿ?gTVw%v"rqS_5&λl羦?E?ocd.dAGt LSвsTNj@\ AN=sר]үz=(H +|T>gp<1gǖ=-z+/3b2MNDv׬7t|eR6$ Ŷ5lëfZޕ {?.j4>v65y7ev5{&hdɾ_Kβ(.,N5} N[hK[*J"3q:ވ@6=wK}[#:Zd c`S,9]G:2UmRmN[r6_@kzsxRw&rkk]zJրsjʶk+pՐl{ke6[jl SHRϡWLާ2:lӐcwAMj#%c/3[V\|f9U6y|A:N^O9};'2ԅ Vio,;rwv27bUyȪ^_- l7j9kkM뾿<9!{YNMm^)+<+V4A;_2+7v|W?>;r6߇a[ 6W"$gP..pA;oeޞ˥b74nۣݗkujŪ[AyXk` ;[ib9UBvA3}cQXj5+)ԬDQXj5Hj5FhJj5F5jVSQj4#Rjj5FQj5FQFRFR;qq3s lp6l{L+jUۙCޣB5Е^9՚@u};}[}|+_ʕJJr?R+Rc)v?R'NeѯnM~*-N?||~:'~ʃ?G*/^5z՟y,RAlzcG=P1!{Gm +_2kKB%T ,[!?[:?R7 ??G[ :?R7G[+t~gyG[+t~zg ~z_ ozMJ]*I% N&z7_ +|*% /AnTM+S? u \V Ht{nЊ5$25ǿbu 9C-WZcܡjz^3:(ר+:̡ +H~?\#g3X%$Ydlw%qܵ^mIu-AS6>-t3i[lbX}rb_Q2.[8RT o|n_ edTj ̤lPnE[匿S/mX<_W_ڻiOIYMWeWC֎tֹT=R)n79cuH qf7=`ev=WnZ˯띊؝އo]1rͨ[QڞZ:#Е>h}Yժ#Uu$+uHtYYNB6%e7ޣzMn#sYOeKrq$۶[Č=JX"-8n*+~_9%ܵV VA؝d˲!lHΟլö_$2nBl4F0w؍n7!|[/CݭiCx/-p7cT_z1+bcwfamD?X7q!%""""% Ժ0\f"fڽ6 +Эs{MJ֪""U@%Ȉ6uJz%ko*D ;Kk,e>/U5:[Ŷ#wwzpIwJc?Of;75mOnmmKZrZJ'v'2(zH*G}`h>}u>0ֲzL5dUӱqKKEU聫5=ḫfO32̩jKYݖIgbI^V7S[{)3Wb +Eʟ=Vݏ0yV8Nעi>K<זqDe6y#&c +n޲BkcY}+ [=(^Ŏ>nM 웟Ǹr5j^9I:sMw MHg~ͿG~uLcW{Y|Oh q6q!AYְtP]W߱duvgqZʯZ؟oY7/"{rֶ^)7޻3X_1Кf9R9*+]ynx6bN~eKZAv$m3^돕_S2 bi+n4uZwJ);>$fe{InrkFUH?8#^u{rR't,|mXo} C[?-fP2%[[M.3%,[dUT#v#Z#^՟~ziP*|oG2{[WetMrl{+.p5$Nҍ]m{ͻ"]Y6Y1QĔ)e:$6S&wM6ӆ2#4tu<mfZ8zr52=ZQKܯה1:КZv]aZ1GϽ&#gzd7' Ymh΀=ف8~Sex5ZRB Nv lw}̵za+5u. yq%]9E#25WҞ>Ug/ f(W荂v~{s,^<U5_.1jr|3o)PEc76$WSɗNlzfUn^*Cſ!:}-]G4+`ܱyw.NF/E+k^\(,H7%uW N+Pn%PyG~Fkӓs1]„ܬ.%OvzeyC9͸\*BV}~Fhw=r?G0K3e@a(f$}Ϯr,=O [mf V9^a}؃n:T46e1zY*5jTnÖ~޾=Y͙Vf &iiUrp ŻkC^ٺ-Y8te~]?0~mbxzV]Z=T.k#ztQ2-ʖ]UH §]hn9y}gZ[PWx=Zw&}=*2lan"XٯĝkgCxu<,wC61ntmŔ%4@$w&MMSTű/ۋ=C{CiGGwC(K*ZvzkM+aYcbya`v $v*tHlt˻%ڗ+.17w2Y46G_2f+و}N:{XNN-#en޺!3 ۓгKdUfpKy0y.;GnYU7Q-3dr*v]A,u`}póYۛ\MHJ('SVC:Yr)jg"ٯ^p6O}]W^sg[hlmn9z%|91T`i>ё_Okꭙk +jTmOs%znoUWjmO\x@5۴rRc-8[DbW,o#y)ZaYBc`5+:ekk2~>x q5cttkráS(ֹzM:""!|[~fluezS+}k0 !6\޷G3,B3+kPE *Q,{;}gcLGʥVU\FFB@#}O8^̆K(^~NgFGkk,̡R]!؂Oa%"k-UvsÈbX#v62xUINfS2(UU)Wl;^^Se&IW[ 5Ӏ!z%5U֡]z\-bK>mWRtvή *5U5y]:UWl +]T;˺-u*R:-~Z,9o{%Fz w>Ie7'CZ@ATjy~I7owuJadN|nώyTya2I#:?LzhʳMjXC>X}{K0|7PJU״ff%[Uuο3*W].:bXȵUn:_5"uSV0@j !m($LZqSmuy@_F]-Ze芻1FćnkAyz +P go^^]KdmhFk>ù -xxss#ȻKlz6f}~ENlȿn ;yG};̻u+EBRr w}#UPy+!keq`KY>NeY5|Т{_$(#Ar<ÿƺel2oKSe* h`N<++rOѐh.z'zo]=w/VvKljs[FHWocZKΣFnM9ikWm(hA=!l̛ 7*'I$aů$6C\΁w 7vwwosjZ8!?+{v#f#wmq[ @aB PcQS1T[yl/;˲7*ե'}sʷ3 mZ$BڐFw cMrkݵZ I.kRq9 hu?@('x U9!l`*y +82eֹZwkpw2j߅o`*bPZC)+}><*vW^:Tހ G}zwx_ӓg +zn5"̜ތٹ& X +Xbv7b5 +&DxCd3uw UoiR9DDDDDDD$)]jR GpA2(Alvz]U FҠJDDDDDDDDe5ݠD=+A#BV"""SR"~Ih.*$;LmG9é\،DoK5H3f%b"""bf*hg=%z-y~ K08Ց܆ӷq+#V6,t8w~R]_0ar'2v H<\-qJYzO.ԧZ1 +}zL+32`EOLC[ur ;bE#z>8Ql`iv̼^n]lƺ&R +}qĀN&f&RfԗW.:>LE[##}&s1P~͉sdُ]a4G,twR8ϩкu2۾u5rEWJ}&OM<ɨob(0n:q": 9+5}*=G}V8&ՏExUUE +;\\4uz3.ꡱ,BÂŕ\w=2Kn6W+ +ۜgb@w3/][7LZ˜o_IfNnE}?.FC +n.. gR38uJ؍ő€H:MtFY V KPA$IQIaH#깴?H)޷+n=X#[)(ߨ !|\\;l/T^>{ؔ~31B?:ă5:~F]C)w1OA_)#2ׅt%Q;(bOIZg]UU_O~M6ZT8H7 WvE( rUI+'h؈10$EY(]wc[(l 6q,%>áQ#z7^HSzw+ac$7,SkmmITP,,_c8_n7cn<ʍzv(q@~GܬDDM=jUL 6fNַ֡Tz};Zz*ղ~{~>%AǬ@;"G61ĭiK(X!F }7xAZJ8-eRb[Jvm_lpPTq?=$< +FenTl+$3.LlP>~= {r> +4m3X5{?m|*vb9%by]t0V`Ă3vSUf 1TpŊ[c{L>]gd)}>ɫ?!mr,+7e:2d79(vYP)'gN0Q[-{i ۷xi̺msJ;%k= aZb_-(v;nWMz^5s-lj1uvuhekU + Gqq!+kG2|r nJoy_=s!;/׿yinKx9zeìA?i֔X08U0,6?@f2xN:+k*XP6H|f9MZ͆X?f /ngW V;%JrRn0[A -זqY@:W(zzoAHm5Tk~]߂z VRvJ޿oӖ>~JHc' j囂Jdg6]}6m];D l<.zwAM> n8RGI9ӎA{7|l='cO%f#.;";|aTa޻\#|L\jUS-Ttwg> 5F)!>vmnVR][y*8b $v׿mԲqنmu- i%<@f+xj.cZbߍAaIoEC+W UMGGob )\,z,O:ۖlk]Uf2N%jKeآVB,:{lnhʷ#'rnJAaOidj/.V;̵Vx #ه8an)j8֥ͪ +@`eVLAeƣclz{g~nAȠTMIH'G`# h{믈#v7/U:'~w/QbB$h5[0@uZ?7ڛ vM9'Զ(C`zFecNn{XKn3@^!cfX'׏2tt={hx1R稥,`+#)S$uY[zF s֪]y /54 lwyq'g_ ހYrηuUE|u)e Ll}+)<,)}\ǡ_!g|cv)ZJ^i`{1׼׶k`ԩg!G6#'>wU!׷i-5PpAM5 FHO3gmo׺WV ҮW{/SPnr"\[mr%j>1=lH޿sf]-NK2(ց U,4{zw7N1kb*mW^=b[,WשWUN%*Z(Rv]޴G`%z5gVfd*wzzLlnv^5xAlƳL^*4Bf]Yç-q:#'gPÿMOeLRGYӱ*!+(>{喝M'Ljkjr܋G4mx4U 5XH=j7I ~Fa" ~fG,CԳZ5U]{g}INy5Luj(XB |TMi9i&кַ[޻ +`#r5+^N>=7kC;hk{<Ӄve:6._Nsh4Z)''r-}R}UA VRW}Ci^}VVV mV}N:E\KظdSN(ߐq49 IJ;1}۴N8on%Yr)edUi$LQ~Kȩz+qI 'зfI9ʴUIYx746~RXs7gVgWrYkʢ0Fѩofd5yVҪAk{qDպv~3R;u˧UXH'DMܖǢ̚6=W +I ށ^ߴ=D뷡fg;edط+V[!Qu]F>bb7|**OK28 0>ەΣөn:T+e  tw0:mIгq屎g*o9Zcp#]#Ҙ䢖R]=Nu>PeUm|w@U5ݝԏT4UN+Zu3->"э'5TY.Տ&:nGBy=۸R{'c[ѫ\s6qSo^ӼTt%-k?5oHT6k0+zWDR; Hzq:n9$wZ~[=uw8ehU[mPS +b6kG]ɽۏE(Ǖmc1:ޗ'@Jt.jڲ-N%~$h>}UmJTܪӢY^'}=oѭUuU4}~/du}cբ֫ڙ‚ Xk#Jv@61H,.UOmVN+^V##3)1,k e6*z誮?*Yl6fOEX5VPĮíM[d,.}WXB@#&Ë.]xo?Mk>C۲( +I=C[-kҲ_ݰ4]K+:w(~z:C;F>'ѷ]\jۚ(#[?=̎^G(k注Z+}KW cZj m`};euSeUdzmtH:ў:L#cbayf+Z*玾'$zhlu.ڱn"xEz vC}ޜɓ俔0ގ ͋f|t5zxXEXَ' %6;O9u5=]`qIї-sZ[@oj.^KE_蟋,J筍]};1=w5ݾr;+KdYe6-~`ecOćzuY]?䌫ےoS'cJWY+,{7gedN? wؑt6,-*?v'+UX֯J>)&UYR1lDjP XC7bHߴ|.F>M-U1C +ۼڴfU,Bh@5L|=*h ԔE-@ lYFJ"jfk/S":o>FF>][&p/!RM.8X=oQZϮ~%̓YVh͉6UdcZ܋CiJ]ݻ {LNNFoNŢ(+Vd>Rӑ[ӏ`72嵽:+/JůޛZʶqSCķo'75@D@)R,c ^̡ԩ+= Һjttƭt@1 +jfjVSQFQԬQԬQ"rnHUYEbt4#B ƣRFj5Dj5Mj5@ЕFB5+ǚ[""$wLo̤hkg޵}#$gRYXR=4A*kT?):I}Ln~U#)Z_љq)YMnvM43bT +o ̐v;e=#qnyR:$logzJ<˾PVAI#cfeߓHT-ȯ qR>^(nce좷ZP,}4H ~_) n7+)0QǗS7- XyE u2pA>|~UwЕR-pԅ?[g&Gt|쌱Ue`*{;ĬUnעceU=+RHeޟ,}VC)'G{n7nZ\PŐ$! 532:LAs/@V– ޵1nbc]*ԥ< pWm2n71,ljŖ% IzPQK(&ܽ{i:[t5vj\ي_Ti|{np Vw"7Yˑ1F^2 BV*Xg̜L<ʳ1ޚZop@0FuؑH+Vڪ]Ž v9 yIiI.lmD]a-t$#\-eEiY1'HSyg+asHu\gt9Y];3#D{K6ztv,YUBG"u15P} +{2 vяAٸَEb{kqm@Iz[,YDXV;,8~y⢋v= +f dke:?;>ZRiǡ6BZN܁;8Ūli+̬X +{I]vbs|c; +kzA>=iOfۙ9MUX@~R#>=Ӑ]5afRWjXGbn',jҠV쁾I/ ԺM`|mr%? 1Zk;V3XB[I:zŴ_RU&9Mᙸ;/vǢx<-\łSNôemR^J-)6)PO6G}nde63+XK*1w練ᬚ+{_gk4{L/bWv%V.f3(dV`@?=ĘNWLZm7/ɰyWXO"Gr=}G6Y9Wfr\"!P؅:׮Pt1YmuvVYGr$tuҺUY=S"˞2QjVVrA SdG ;"s#A/ +N}=&As[҅ R@A n:Xٽ2윋~=f'zŅc/ zIc.Mm`wקzBY|X+`;Wz#ccW.ߍ9䶪 +Nn?tno~ .T+pfnedYz+Bt a!v6wQeC2KFQxl"r|.;WXu\ tXla~m󭲷L~o+kB! PV&y^|Is| Hd;=ݤG&N ]=]!sb5n`/ۃ1)qPaSm5ujy>Yn"szЯ&er,,KR ;#|=`Tw;(hD*-]@4$OP̶΍)cȕ(>yjezkJ"|s`Q9v:?>䟅iȦP +0zm;z,Z+fΘ a؇':ZV2ծ[muW>͸3+=1oܖTg$/-s"NS?vkTw7q!gLK6nE[mP3yz߬ͩgO c':Vֽ&+!-U[W%u AGjItZYe*iRQOr*:+:})z0gmnMmy5mu5m X^܋"\{A4TvxG:{6K'v&܎VMt;5NGc'=6Ւ͑$PkhzNh^܋n?,+UKvnH{}$N7UmMq57 7Ǒ,k]m _.@-2]ܷ[CW@;(/#˘%'|}ϬЗ6{ycLARqH:;OC9mi@M߯-%Fߣu"Te3c/XXbUC+"V~$ IR7]Yri{)BbtKho}Z?J(N`kduGZc/h.1 X_) *v]<6z+Egg#f2y.Gc_t|zةSP 9:ywoL^EzE+'̧XC }'4zV+^wekk{`G`5=o=:o2<־4AUE# hX6#:"{x?6rk+X8'>9# <$0qN+Qk + +?1:CN~=mqܺe ȍASQхM' +auoX5kfk)-ُpϾЅ{r)Cl3kۑ?1˜n2`ư[ -;-E^ŵ_r71<+EH&wck7%U +m{C F z>nZKf=]n=z*>=,~䃯2:L"%]b2,Gig7&^U +#pS݂*Oϧ_*6O{ `{/ 8#S|#?`/1 ˎ˿8(]ϩO#BY]h[+o'{2B5Rŵ-zJ"-]aI&ԩH)亽E4 +2=ֵ1*ug7mRw85rN-zKޝondbtJ2[m/p0(@?mv>5!-ZKr4_$ I; 6v~. )!//R8ZCD+WnK>)e#uYW0`=nX>v0Ʋx{w^J+v8e0}jX>8TaZ +*; Ns͞Lʝ3-~ +YUV v;j7I5/罓A7c +$vﯼ:鲋:XЂ4D>kۮqK)(z(}<c-)BqG\ +yhls7A2mרWWej8g]{|)Ea}ԏ$0 +.#wv8VfAb hv c~j6ʦ/[+kv'>]{^#*P7u0τqlZ,8 ms=-ih:n/0faˑ$8*I:װ|FwXaMz/j,]Ar捍 4en;Y\=`ө>=^ A 1Qqkv3͈)څZRev_u Q&4\U]{\^4e:VW ;677{;0]OaoY'm}g_jR:-jy) G;WQfw..t9 gZ=`][]6O~dwB'*eA[k;5/uWQً#ūA#}ĵkk-cbp79ShQJֽ{5Ugߙ#$jyU_TP #m q&)CZ$:׹f{VUxU=ְTE,}doֲ));[umQ+~?/U%b"""""""""SR1qz&mSMQӪ,zINMxuDQc37גeN6He#gg'.$/k]ɘ(fꓥ.3qjAeNє%ؔq6VsW]LDDJ3>bR A g*btZ[V #%bX\vP|=|z%b%7,d l7DF0R`hoLk$=N>S {Vk|N$zdYbҥ݂N$K?7qs{)u}:1ص)g ;t2+Qlv>"""""Q|OOQKz6=6@OQ+?/oU%b"""""""""Gu>0|-]f,wTz;o"Sm2>.]ܨe27XsTVY[=z1.R +v#&b(_e1;ra[oM}ҍ)lŠEtYe)%y{lo._:!K Bʧ@A":oYR̺H<*Ob =WrMbF)U!yuGrntAaN}>SczMʸ1Ozܑ}i`Utn\WRnh  ot ē=@N̽ަN5 ܵSomKRVJ?!T.ȱv=3$6QN)p}|#pPG Kߌ{c2w^^׹Vxq.6o.RyN2C#񓓭Mߐ^Go/'X6V-IQ˳3Xʪbuߦ@=+cTAY^\vXoM+o6ոuVWu1zw\?ѕEO]$9YȹAX;%za[eYJc~ՅC4g}GTldKëѓ]c/G6ՓԶ/b`Mkʹ2߹W{2eU} P+*`;q[ѻ\`CkE<[;&Bc Zr*R5r= 'Һ& wQ`Kk$65`v3Su2-*<%X`Cke a~+Cx*EgW#VAH*׾(8iIdh܄YOڗeQT{;mtkBV<թj%v$ziUb ηP{m @YgQ``mYt%n;wxJ~;Uhy"@^$vwS98/ƪ*V'GLQ{K֪ X p vO`TGȥau5X`y{sV: 7X:ܕQt*5GcIzfJcq~\yq F GݏMLO羻XBdd=-P# oރ#c^gQ 6 8uU;)G]wQTiLzT hzx`S:K׎-Z7 {2i e n7,(`F2NEu>ybWuP[N(m߰~NCU{WSyXQ 0@!\vP:並+@ D"I֗ۓNZnȠz>Emϩ/r]7誒 z-SfQhQ3W +;ZW7OE]yjҨw I?wx˪js~-֥uVYMyڞMgSS|2nêAM} +ՠ]1 + vv;lFuWm#Y6#Bt@::z_ղo6ږ ZJN۶0vV_RxzX `yho߱mMkc^FuOqJiuF>MNEEj\`O֜ڒ=>?$9:.k*>uW[v7 I!+-Z3hFρޞVf=eUЅtobdtFtc`E.^N\FLJOӔZ)*#bqڟ>Uvmfܛl*w{Շ3i3PKWN eַ܎ޒUoRymÛ2J{}?#]ۭPʾ]ё[ˬ×b7Zkrlb*GB6ht{FwNkjKc`WӖ6);Ḥnǥ]#`HޭNZ +1<ժ.O.IA׮R]kAUSb=UsBGWr[Kv~+-pGʞܪ =-uէSRcmX? :P{F̎ӬmrK-Ujho|>ݵ'xvwK ]Z` +c{Խqt셪]tެK7^S,~YqUX,Kuަ*+SO 2ޭӮy?Tn) ]OtuZb ۾cÎHvOB@׺tF)h|FF:FGG=/˲*ˢ h]UR1;9mxW-[ Jޚ׿϶zF=L*d뇔vb;ўIԨ [Pz-Z@X2T ]KYX5#} Z7ZX)>gob?0"/թ"*07C-vX—!CȠ=箛_MR7(x7LNқ#u<,+w/QZfmoGdCŢ߇7y֤z8o k[2D{y.:`v;]Ȟ2Y,{rk<PH n&~V*]._of ҎLu3T𠶛zYu RՐ[#$:]?6׌nKA. @xlS.tn<wB +6O1z}7tgԽ6;d]m<zƇ1h"a\x_ b^oQEfQ RCZ͓+#˦ڋ_l@#}<ފ5tq5>U +U=ʕއa^MؘV 4kZ"Z +n7JêdzDeoPThIi<|KtPrNǡ: ilx)MgK=A[%ޥՃV0F7Q 9$ߔWrqMdt[:?Jm͡`Q{:>~z& +Uakeֿa /" tўo ~މIx]s~+n7ĵfUuY]l5sr?%o[ևyfMTįCvBaQ)M5Lh]:[}͉Yպt hY݂'ae|ޘfN2=&값  O3XUTTܕj{-t)%pxH޶{QLFuɏ[XQK1>0xa'ڱETs:BʬYA۶=ȬEӋfIB҅)#] zlLWSǯ&(e:ȃG9qnE7Y^U%͒ [d#́c˝TS`>cIj/L2R;3 :-oe95 r w>̬ʰh{`YnG׈zSV '2^"""""""""""""""""""""""""""")5'~! GLPzdX;8ћtDDDDHP+_58`|Z\Y]߷c-]sp{캬z؎>OQ1E}G:sBYU@Ώ6m=gU{r(dYE>Un +<[,}`=])oS&Y +ǐpe]W۹r}EyF˾M_'G]ۿm *kq%VUdbCZa}e}ODڔL h]wW-(||xAyh]R2VmqT*T*fvaY Qmc-#57QU$#w޽:Z1]`JTm@~ 1Ki$=z]n +l.)Z(x[\w鿶eg>.KۛQ};oGWX8Zjgt5:eO4#FduxխE)ed임פ[u wld~]c(vfdV/~8.Md+/ <{lzLWIqIxm1lt=5jxN3WqZV)kIx{/mLp5jB@̎uÑmU]cv @ RwԭLY-O.Z!1^,/S)i @֍@u_T9m\\-mQxeXziJdX6X|#&rgcWp׊2,#ejXlmiG*(D +=z_?ua[01@(YAܧ y[I&aC Hx`+ŵ X=Jܬ7ge5K8څ!Ǭ9;3*Vǻ1j(Y{ hkWcVUl-a.:z?`+^ѳE^ ǦvT:-=ΝӫnOl;{%/NNb6};3bX+|q|puؐmMC) `èa#_[4DDDDDDDDDDDDDDDDDDDDDDDDDDD@"KΉD<ȿ1ۣtKvnc|MIȈ]i RV"""""""""&7bJ h~;{LdeUb;Ү)TR)qr>atrˑEkYB])~/y^ur"gem`W#L\H;Sec^.$4l Y~-kZ +[8##"GzN-X6vO${bu.y8-]K# A 5؏myslF[2*9V n7i?+{|s_q{Ö%'_a'B2Ut { 3nxFRlzOIm)Scȁ諿3GίNIO)x@?#sLjFO[|ZJ4۬`jy&Χnubʴ5Щf߬oHOYσ6X,Ҩ= "-7Q(6_qS.""""""""""""""""""""""""""" 5.l n 2o4FC֛lDYi6,y*.;17䙍n9 @"b0]r]HaHקq"/C𚤬DDH;m( M 962$q`l}K RDˈjZߙZƾ%˿b%7+XܬDDDDgWqɴ*7Ͱf@o ݛ$D8gRIڭKk<뾈$rv[6ԥŞs2n,@Oa߾ϤڄDD迯j˸bds5.խ]xEmmlŘ(Za全tΞ3(B[;fK3$̸l BSZPϣ#!Y1.Z*䜶NεIz- <葯m~iw,شi*p]YLgqJ/2}o]W A\YvyzesHA@;+@I^* |Ԩ A3Wivw/yˇ!^roD|SPk~A*Oz7Z#;TO`&xWx,\}6'99p9k|v7zv ecNmԩ ju߼,Hz+#`9ñb7=yYk{lzJs]oc_=K887G-zܦ 4W [{ܣQ܁?seyNfPePP`{S7% ֫<(?~79oMO`%IA*f#TGޣg_|֢kM7 -6f-wk*W +z,-p_TX׽.'By 7_=JZkENhlǖ뾷1INgCKdLFȩݑ]K/=D(׳@ T[نz '׏Z8{B(vQY܁#KԭmPx=Ge̾^etb;AÑN2*6 ˼]uRT0)m~zԻ2['#[PO3"R pA ܀oOEWV^فkbFЯ&MWVΆy[QPcX\1-i;(eQt̞F +X} Eup +A Jyro'n1R밼=|'XEʿ bqV lz86%jAzVQY>-1Bڑ뒆eёQsXur^DDTo赟6yTC؀&Ҫ;4'#u+yw}jzЉc ~(3KrkJBODH#Z?ATwU˻YO0lYeoA#׉VIM(B%興-iVw *I=lfk֋r2w15O ~וˤ%[f~ehG1H+6n^Vڡl+;V&2q!-_(+~%:~SQ-b5Y ;0ψ/S;j _?1 «'ľ[~J\{mкF.^WSV`Jn 5৲X~iIc[kzndrǘ(La:jga("_iwU5ߞ߼D]_WPu\u]=jb:+SװʌzTjM@-Iбȷ> jǘpy v^E=A]#3gKR*̹_Jb6;zIoy.EOǭ~1vƷ.Z\ƧEu݅"W(ao `t3nzV{\Bױ&Mxޛ pZM6 nu =,\J7Lį7^c#=7ȿ{v֦+F識kZ,|(sS! +Zo_L hwU-;dUW)馶0if)[`B)k0]CߧJ+E,f6Ž!εgR[e}2<1ډaRFsᮋ%!zEj~׹Ԑ^e8,6wTһ$YΥ+i015qݳ1N6WZuڼEqQ$rӑS3|a[YbEYu'|Q-`cxPs)n%BgVFz=x^w]y +|JM^e= 22DOe^*$|]İs\du~L0q{ܐ꘴tۗKX[rtA>]U3f*|MuQB+rc'QI*:@RI;/msO=xpŨDq>~q/uJ`eX[] NWDZX6]<7N?=W+Rå5%A76]$n=˛L\Ybn56sLj̓x5SU*cUcva9}c`Z?}ձkbxx{.'d9c!DJv/ cUZSmy*5m$(6Kw1=:d沆eގ6WJ(jQjqbGM>ETWZ+݇S)'oLZZ:V:@I5oj\Ƨt'M4vI{~䒦ķ*ftH|}O]*m/!#60z-Y^òFRdz#0u6 qzu0P5߷_B:8X O8{P~Dv}/coF~ћ+ +޻Gffߞw3z~6g0Qt(?z=[6 n~=#^EmAEhF͝jP4s;ZUk-n8<,y`==f'I|7]uܛl4OravXuEՏ0{;%S'g&""WAJց=ԝou1:'E'FJUaQۊI$ 2rzOBZc;9m*ytΙV6;SKWQ 1>C\.$v#觸A>[|1&XiCiK迧VqCZх fm3#ĺuڷMN\SH/хJ3hЩ\V,+#IOtNFN-WUeUr]W0 w`MRv%A%rHˏzeVں)ֶ:3I6`d]uTY}k-2D%8h8:%Y[cx|- P=؂"UlÈ%8=t|) awwOīL:[省wSk[{6.뷮8b5U~"hfl!:~GPƬ+BrY{y0ŝ(ZxEVm{zb>S#Yu~*Nf=5I_cUӲV<664躮f j?1^۾z~&UGb <ۓc`[mڤ.&* ̈(H^jOyiE1B TDDHx~΢/YwvaS|վIs"`=eSu l؉5+~?U%b"i[d%WJ~!^PQRv>Iq>RO7Sv\~#Q&1V=#RPߋĀn6Ũwqw7xk \,nM8cm1]QrHbyi/b;2s1+Ω <[{2p:m=<1NLAwv.l~C3z>?P Zʽ;S uQz&2Ǐ#c/wǎ^^ko53k\OcHεѫ8UXEX֥ +uq_ɽSV?ka|dj3ZKx;Vw$7/}d`WT[?gg4PXa,a,\ ZڃY)v5s*y] `x[TpcIc?o^o a=uVETl>l7vLƳ5s[!:ڄwSz ̀ǁ}qӖc u*F BJ[fg +''C>BXLbvMc@ |:޷ߎIV@WnEc_p,j 6c'[c5SwSmOnvu;eMZ ѫ ?mw?gՂiJ)9pH.>r.̲6ԫ?#hՏ^%kUJBL[>>F]YR@o8 O4tL|{C` +1ކ:wBz}#W+;9 Os'[O޻RT$TXFx{fŰ;#5aá #xU[uIzF`Av:;^Xb|KF~KkIe +Ē TN:wGcT!|Pa=GS@)ڰde%~YtA_EWƴf]h)~Gw)mHH#kб3ӎk)\Ǜ MbF;Xؕ55ְEQ~ojjX¸Ua>f,u+]+ S^#ꐧ{&fRfYy4غ+̗zjNlWz@]nC|lzU^QljiD'dkog~ݹOH입q`ګ}k^l<5[JU-eVe'lDq {4 z!LBYRv,NԆ'#ۿ+Ѩv¼|w AZ]>m[mnO01>jܕywU%H=Əiw UVXkl`?׬N7XU0`w`zY86᭮Š%W|Aë⫽OrII_GhcRI'`k1:~ͪΎObX;[Xt=mV֏mT )Tb@{Kٽ]]YhYDS D4`vxc , +BZkĊ@;yzޅud22v^@ h+GDɳ-:/n8ϗ?Zߴ=&+9Vx6~;;Vۗ6; f {.7H踋gH!|yw$>uxwuwɥKRwb5kZ(Lʈ䢒 ǧhT =DDDDDD圌|W-Qn(XLFExUQIuB2SȏÐcz=DL :N|AFؠ#s'Wn8~JO3""xԴm0؎)""'kf|Еg'.5s)e]*>N8ZRF z^$-ceӚlPlzq/DDKXq`aueZNԒf>OSD0T,'ZҭԱS%q2Zd 2b"SV"""""""" 5;H#Jm\ϸ7\>WdDDDD]+hʩlCHgd}?ӋW%}v_Owr +kV *ʫX0OQ~pjȪFH}̒}.u4⏷wo1#gQdv)r~6eP4SDDDDDmg> :1wUՋqnKTU`uQXKKjƦ6MPNͣВOi"zi/|@ڃ*X:`}_vS6ae:?tɳ[fEեO05^Ct%-edA*=v@i%ORX}{f^MVCVG<&mAO>RKe&E,AlR@`J0;z|RߕGC1H#z&LYO 쑙nɷ{MB]bX*5yUb[۬>1#Q}#|K0޹)=b̼{hvLwnb+Qλefb}ֆRȪ AooY~|j"Q=Ĩl4vyo> |P)c([AX,jU$|V/' pit;G}#@:یǠi\+TBx'z=>/@ȧOϓ ū(f h˵꺊񼑐̵0Y, k~+lȥ0c[tC..q9u\,J0;I2ٍ]Wjy ̀1 G^e%IG YNϧZf}13 X+V]tŗH)>CՉpr]X0`}宗պN9)Qƪb_LF#/S׮K(\S@n57,ň^Ʒ-x|{֫Bm;CG`rt Wȣ-us#ƾ;ܝ{K-ɻ +=`T@J]XU*&HdXu,uΡ^GLȷmbatn@0oWN55nK%{GJ6;=&.UmYaVC{L2sY][l7r0LNjc,G㷪onH7/qՑ֍h A]=G[u,SIUacy&^ޝSu+ ++ekX wɫ|EHɥM+'f.;l{:dWZm_[P)r5MGUIgvT^-Bqd>ySkʧ|_}2o#S-CC8ȹjB~oj1fa +ldFḅqߡZfr.-R졊ٱUmk]7Ub__}!HUմ6J&N`w߿yfξk4Y5Pq$lkC,ef/2/x}p;k 1,8#_YPz*!029sC'́ęYg"pI6ZP8<k]kp1i I*;o kG'@eOFU8to)fQBx qD~^^SK+DP, +o6k6ю³pHo/MtUL>9 u}{dt2h6c54YX> L]s+}Ui UTm˳d_u84-C)y˂-嬟WOM~3ܥ8;:ڟ=GSR̹6a.1 W^JڧeKq$mt}~c+w?Kɪ]#8q^=Vj_)S.\YEawq<[Jӑc_M|!zl='/ lQM2I:=']%b";P +^$2nGQ f7XܜMSrW?\9'Nc$_>?S2?W/߫o7vG#|~?Go#G9,e3g=}ܜQBN'M#0 2s[Wr-Q&;>@QhuXO߾^> `T-T>,S8?+9~0~V~r?L`o#.~ |Wy +?I<~prz +c5ߖs.~jX]:?S,e~꿖2W?W3ٓ~NRjYy^Ԫ|̌Kە}&k aN~hM|oj--rv5nDᱻ+*c 4'~}Mq+Zՙv.ߝe\Dnhz-vX+0ab{]Ǥv7O\L6_7EYX uDɻT2rRNsU9+y]Jض2jVVPl.fHk_"oU`oRzԻW(cZ)~+[ + 镴v/cۛ]d\b8{5#z&?G"Ko e؈lXy<>V߯mkzu>F=k-?޻vȮ]gũ쮖[<.ͬ*#,uȫn{6 +}#~{6]ƼQikwxeHҝ P9X|(YHW-q7 ZkN*QGð-Vs;9ޫm*k_Wv@Nѕ3znʗkv ݆%SoRu#UӍredǰZJw'2zV~;\,{ +//gj;סF@u.VZՠJR>c#1zNGV5EY`S/<WѨ'עWS)g8p\ +q^?_\E1_ʷvb}$wٗ%늈,qaw0:ust*ދjUㅄ {m´ZY4l$wEȶع +,,.z|3l8qnkޗ]3HBNFc~21iWE޲@`7"wND֠ (W%2R>`tmO5{j[.5 %[T\³dnO{љEyKԏNZ9gJPtL7GA])Tl6+Xu_?UqZ,A )}v5պmYOc_^Y{|q,>mXBǨdmTiKr#d_\,kf +٘h\lv"nN66{v6++@&`w&=սW'++{9{?d5مը5X +i&60cb0گ}p&/Hɺ~%YKVl*5}k=_Ÿ}*{鲷4Hn/DU2:JxF*{r5 ++YXۭ0Gî]:ձ]YVbpϼ͸ZVY-U :#moG_)?O{+\|;:+1o}YB7~9%03[+S&Թ,ZX0#Z>zQӼ&U<\9A?6< l s>EtScԐM76Ժ8oE_M6T rlW⬤0߾.өZZo:l8f%疐}C=}&ϡ'Cv@q}5&fM٘m+܁{wQE ҂~Ju33{Ε͕46~fK|4v{ 0%eu&]-BˠWJ}=,xY21^OqeXc_ gWv5]]7ej\^#~1p^Wк.G`5BewIdQg_95Xff"t=ImwGNBID,m|{a}utc}W[ƹV,A::=.ҏ{56.atdJײ*kC[3p(lI?vkXw ++DqĀ͚i}/W+ 'ۏmz[bCvy?:S; +qRgR@vZ)*ˢ?X;bGyѲ|KW]26:LnUЧy5JT韑%OC~#5s|k& #{͒""5rg/¼:* +̟6mH-ΩoU1k+Y#[2:?쮥Z+܎JG'3OQ;tK;zȸ@DDDDDR)V%%e%b"""RF]ъfF-Cҫ4m=./ecmCXy(SYOXJJJDD"V"""%%b"%5+)0LܖK*nUؚ# #DLz3mv^SrZ[ZGr=%b""""""""""""""""5.j˦aյM2<ҭ=kxekB_i/Tl~ v~ż+-`@+ߟ#v}>DJM[W%z&{M֚OȏG͇t:^=x*(H,ԁR+;ߋ0qԩ _9~IiYnSS]yfP]O}ކuzLl5nJ]ϿOJkSRZbW~!?o^{LcqYc7-0h]l(ٞZͫJW%6#ޥgWvV|A?-@Mb%7y|떥j;l6O'~erån X?Lv;e7J3MfM`y qq'w+)9,bOؼ?J]nRTZ +?ꀾ̮@{n @VSsۙUjpK@CA \^Џ}Z6`diEnKml!hLnVk#+#i9Y5TIMK8˽BҪ9oTdCVxcwQIwɼ[]k@L37ޣb6"bY_EAn*ĖN#os+!nVbWNTk׺ lQ?dOR>npH+F~U[W 1ɳօz}B@VF.T=U=Sr#@m8Q]myfLW2%)+"G쮥ZK%b"%#R{&:ّsx圏S}L:w#YNOlmUg`]dkZHIrm#(&33X : a:k`lcZb'j6I!l.AncY彞=JgWѳzkcrV)k읝#hT]ei%ulӛX@ކjn{/\*$r7ۙ"GWFN6AzJNL`'/=hcw6:k0<;nVC2Άf;R4vܐƧk,_eԂvYߡ$I_c[mٝ]Lk[#R뾽}Gq*󃏥ޜmjc[xsOvD뼷KgDckUCwpm̧bYcpk.yYҤ)mDZ=k.-/*UZX;;MǷQV,Q33R9p9hw2ޛ.FI֣f:bRO4]u|-N]8:vַ##z0 #;C/:>K`YT2E۱;ۑ[.b0`~bg;~%ԺYby[S2yLH=}~k7ӪkXVe':~Gֺf>o +\Rx5j6Pz|eLZצv<{HGYVE$$3peWz>nY!OT(vٛ{-EdYV3Ƀ:wz.1fM,3,[Q#굺ۙe_KUnBt +t'3k-Ժp! F׶d.r'UErj0#k4auK͏EI61_6Nzeӛte}B6\U-Z%u[ӱ3Ao1쟪iv#endSCR4 UɊ X @:}//r (ڠ=Uq+]8gժ,U,DeÄ c^&mK0DU&!FO \Kn5^R*Z7xzwY}Hш1)+b\mjLt겚-]A;VYműXvE읯}-韪+i$̭X?F['bNMn>8KEףs[[,5u#`k=>{S^0GWW:Ze% H$n3_jeV6+Vv67}%VَXq-y z{.oyMZ1'.Z @Snظ*htA$]Oz[`ad"jʩ v2 UŞ{?&ֽ5d&͐ɗUXz$_[Ƽҽ;&<~"G쾥RK%b"""&/R4{ron5ԅ/ g_WuSwj>^㹛TDDDDʭ|ц-,}OS3bYhkVv=5kZֆ3fn,T;h@ ]`L 6=;cq(-buU|7ǵ**u k$u#iUӖقۼr\e^EPumnB0 +Fv T\mB<9O oؙY}APC#PܴG3$=5OWtZ2*^ +沣$2 jMb8o[;;<볹c;Ca*,\+XKr%L^I1ꔄH磮@q`t jS׌/qc̸Z}kuEK漴,LI$K*z.KYbP1`YJ[:AťjŌ1~JZnfXYu6I3BVɂOλ1*z\*yWE*;lϼJ ]k{ [NOD TTYk#ÔfbٍuAwנ$ 5I+͍ikO2Av q+]v*^C6OR.ށY˳.m-v]Sƌîq@aK=aRI??gģjkqoZ |.7(uR0dGj7Ǒ WR;3&MH(Fz;`K w;ܮghl7Ўq`acɸ^3ɞ1܋C! @MMw={y_ǒ|;:l{_UVLA*Yw8ˇ궍6rj44v#ܽSm}8y_UTZq+uKNj3/`H,^$n[׌r5v%OY\ + +53:x66i@.ԍFǨFoHted]c]cGrIxB c27! Ȁ}$L&e}屴Pm`Dt~IQWP~,tTz/zKkj]vڴ;35Kʤ KCUz^qSTb C{oЍer:99CڣA}2z"sEPWOea;lwib݄p4s +ŘOr}c/fYuc:|i9 lw*9?}խ;؈ŋo|{*)LjֺE +z.rqe*G$w [T $;:HS{d-wo["+b,V cGs+XxZ_L\70嵲C|_-y=q{1iz]mq]g 4t5C1%Xf/vRNyNEkeh-V9fX +{[ +ǹt4fX+HwZ=Ͼ uy+uGFH*ðASۏx6r9 qmWkS?F5V[k+[9NU4HҀ[QFW:z71KUb&O<|v7y&?T'"e FPA$ 0=̉jq":P }cM,( ;)XHkˢjg_av%興)X?fu/ʫJDDD!ݘ&믏џ7֥]X/}}l56U6 fEˍ[JY'HRTզG{ VK>CT_W3_GjW C[S#dfM,FՊL :^-mpT5h}JWlï +-+pp}v~tk-Au5񱖖+;Ce,YzźKrt8vǴ>,\Kϐ-B' r{`_}6]Cݏb2lp.@rSzZ8ce*PSCӶ_V\421ӵ kdzXB:wVYE)z پ+̧Do4fmգ2b!F?` jwc>Jp[TYguʱVG+ʵ)Ɂ`aIuq($ڤߨ'ZtrF-YKE(@f +I<_똵qN_*^O3tHڸoZf4rc'BKauʹP?gJJJcb56R\Kq"=Ln{E&UU"LUkcFIakU:+U#z*}KSkWd]hn݂=e^ncP2Er^,kzd3~NUSR9߿ܽ@Ͷ({(%)}e/p-vq>`pMe=yujl,w[EYFh|!W ~Y @c}G_.9t F=}>RJC7۩Z᭯f⤆pb@޷.ex1-PWehV /w%}A:{VG5oS][=&K=ZYy 1wy<$_Qrjj.v7QU~lf[}!8*f*8&KR쪹ɸ uA֥c;6Ueob!wP;L,^zFF})Z?AI>F>H<۳qϗ_w(y{: T.؁Fr˾2[%yɅe6#Y珔F ߿')l[,JjWbX) PI#h+Uʆ$2#`;KVx{iV/t[`ܻ}wQpZԻ!B`cNĦwu$h~h% @}N;_{i&)[n +>x1*HomﴍT)q'I;[V9Gek_f\!P`;nV" )MwuK +|#|}b}>y9N]71lFuؖ0:lHaqDΑg5bfdf^غ([d\\R8>y{~ɔaw5LzsVƱB\XDkJfϾ5.;Ffp^a׏c_=y[![Եg4a[rĒ5E˺iY{O^Ew Y[Z`ߦ*Zx@7[)yTP ,#a dzoq﮽uשf6 en&=anP=^#@y Mޫ-h^wc"ŗ;?)o'3'Kilz*$X-}В/G^ 0vґh׬krs/ xՖ + 8(Ars}HMٞ|DSR˫iЛoKcXJʩg}? k`z\ɻ"z-LQr]eUKm!Ȯ̆cr |Dv^ +W@:{I eKK:T#z V +ʵ%lA#GL4fcԳ ?psk VK0"-ʮ cZ(ZM|JY-:;>b=X+Ȥ;mKٕr@'5],A#G@0NuO,~WQvAܴo +(ˎ +UefW[BdLj&gJ;kh@21noNW ::%xiC{=`}!Sf h?a:{vy.,N3HFa@mGai>^]^=3\y71W tI.AEjܢЭ3y ʭ-Źs^J8 h"8!k~eo=Intԥ\ +x*ks:wNEmvk +l[$v3QӦuk\վ?it{pU:enBܪq6LAo׆s)FkZ9I }&fz>SU_pO 45"IĿ1*u ֪Z|ƪ*Oq.^:Qs1f+0v$ wN̥Ez(@&nbx./Wn`o7-U#ژtkWdb߆v<*bW[I;*E˨bz^,P +7> m7ֹMګ*|ә/cޤ֭JI? ;Sk7ǃrGo=LO;,3kRt}ެl{Ⱦ?p{W[7¤ `{lq]垄bumv2EB֔$*> o_)e&m5_ձ6?<2G]%M]$.}=}dQʿ3E,5-,u*{7uN[QxG}>=j)-/.e֩blKUcvaeo>r(%PbXf6/\§Rw?EUjX P@6H׷gQqm,VS꯰_^븙7j=ue JK ۶{˹ٿ:FEӪZ{,ϖorfbގX.'9#51ڌuR,{1!4zqrw}! +^ͻB%G~ +eYibc9<]O!nmnԏ"j>ͧÝ1z~Q+}&}*<5}#+.U՞tfuG. n˿}L̎Ng_W&c寘eاz2燳*~OFj%JA &5t>U4BMh'^5N: +M=)Cł +ñ +kZt̀) q}A&__X:`.67o˶u'DJtVlc9REZUɈeagM0RO*>rF]5tNEj=mX`H)M (h*Nt~su쬮{c.Jz,F}dtv+ʲsmcC*u;{Ic VR:T?SWU]L{A5<^C46d;Yȥ\5fQ2ŀ;$.OUVstT&/i=I`Ӆ!s@n<{L*svɩMmA{5nU9eaڄ^ (GzvK1ö=j~>FjFW=4;CUGR6a [v@c܏ek +uVlsFȦ*tWC]GO[IbCZXFɏ U貚@bwN/bՓ:fp|_kѠwҰُn t1]c-y*qێ׾'5{oV$[Ӳ*T9# XL=˼.ԕXYT`* I]q|8y1J⌂%bSin5E|8Pu܁~fnTaskJvvՎIL5u/Eԛp>b`bccL\OOP8櫭Ū /Bc.,`nòm"Df._lsu46²z%hd6Aa<$uO!zQNi=dzhMF^GNɧ"܌+QZbچ\ltũ*AE +`4%DH0?ݕ`@:vbXzdDe5u1pEuQf q ~NϿʔJĦ5j8kQ+)5j5Z0Rxsc6@uQE`A?>;:vSR)0pZa]]eF%ˉ'zL1z#R/^#_'Sm;T}=?90q63HR/F +(Ǫ µR]3tU+{wў_aGў?)O]]kUzV"Ҹ4U +jc/LKMR-ȰQZ/^t7FhXQyܸX-JقǶS=&-U*9G8 |zW5DU ]ba5R]B`1zF6 +WY妾ڮbFC|0rNF(Knʨ(5nwBՎ֭qv +]o`ukitaԥ]``ǐ5wU+;3Q BfЍI-̺i,ܺ2ٕeUb}–?wa/nV"c>%[]Ms*Voo=[V5۩Bo_? [5s+Efd'NI%{ngLη3m[ٷwk}ϰS˫˪f\ +B=￶dDuB5tK nu`ՇQNLmǮ۩4.ڶ`Ocؕuce!Yֶe HR@K=7Ve +n,*lLF͹sWc\ݱ0m׮3%7+L ˲7k"*yqĞ홑n7,b3XƶQ|Z(ȭD32*~ Z%NvJ3`k&adt+rDsUn̻URHA[Mvhn^J$l8T)WYN>9m<˷or~$zOAoZ벶YAވ>^WcۑmTZ"q# ;riX ~=Jn71+˽쥨"nf$^>Z{Dʻ%PjiT%iƽ."""1:u3*H0#[bXOU#"u8)*쀫{lI(◳}ZORǭ +Vv=?<2-C0Gcܾ"Tߜk @ 罐5. ̿tڻ+l%7-/![䥇w1:<;yl.M~~޲w; 1zvUuw%osj[=&/2N.&mٶ|.A*_S!۬_NOkR[x [V*QzP;v2CXc#ZJZȣUC$Ļ:>Qv(P},3uT1)tB?W>} =F*_W& EX=l389<,jR쮇L + 5ξ|;c0v7* k+؛z/sge[z<:uOR!t~mc^edƢ{0"D^"}mKx3iMa01/GT9Q9X~b ݙӗkI#g 6?pt4 zOOķ"n_ؼM|9DY'⫲(邋?(` (Q{rYߦukOְqaCŘ厎m,^սQʢ/Ī=@w> "t AeY][WEL +!azH,Mؚk66٘𸻭Y:Z?`ju@cFuererP~gbİ8yO7eT"P‡St}ubރBIήH UY]o'\oc[[GFgf ̧f+!1]k*wBjﶵlX7]gP 5)P籿If{W֩ǽʲ5AWHA?y~0z4dI`8nN^L, Q˵EZ8bxneǮwe##^?Fv YԶ#zפ,'>+HYxB)%Aֈ}v` r.Uk;3ğBW]:[ʗ{*ĪkGbr3mJiȳ/PE' 7&5Sdžk[5G%Tm`RT!vI$w= տsv6933U2$v6vٍ<*}T#D'[S)zY u* +56K)i'뺏Jǻ!X|f:g]Bdo`?Ȟ*.[H=}Bݟ-cZ'EfskU}ecShf%;TkCZתuf*eVZ"؛uj:fǧ u Yv=TJΗձ1K6 ٶV?޴>ɰ6z-.N:؊t*VƲ*Sr=->f g12B30*lJ)JmLڰ=0;\WMlo$1q:XvP"^\ v#H|Is, +ݫZ ڬ!^~;U (/_OOO`{#j\(ȫ\/~D?:kp}= +bg%fMY { ZXӼ['a/`eIc\P״&&F=9MKe(n/1?-f^ض\zV)K;ce >*}B%b"<]jЌBI>ȱΐ6]XN?Z˪˪ȭҭ`˴˫:WFVS#""y桸l}+GGG}SDDDDDDDDDDDDTZUbX5!ڹ䤝|%r:735JȪq.-}beߖ.vk/&q^ #Ց:QmgE+;='gZDߡQ+B6 +PC{~rkH@Cҍ]鮗 6XjB An}Z6QE[byoq݅7{S7b^Rn$hu#r<44t=֪cNmk#CEFw5E sm:Gq*K'Dzܙ:Ηq%],dC~UT*9)W uQz Vҹ6yW5Ba%¶RRִUP|au>BoWjiԃU?x<_ЪΦx^Ǯ{lڲmk +?%Xވ:̗utCZ~9+;3z;ݔ315[LJ .C$htO릻S3)27,R b;婙,Lwꬩ['dw J '`>HT:\[rGW(ȳ=@]=kS1:1D{5yA8@{{%<بcd5T9sV+|1he>CiTP +x^|8^|[IBz8+>n2: +3Sm6wRvF ف=+oA.S%DZCx|.fFK]|#֠ňOSF͟"$}oy=CQX^}^2ܫ_Lc׏RA@y1gUtXq,H$|ɏO@8QC>" +wDT@4&)U^Z#.IGDz^ٞ/1E* ĩn|%˺y)QYX00m{k^Ҙfd>C2PB`H1Sqy!G>?vަnoEM&N +F +ݽ;c}ʺmʄP +6l$c éjUmT@mnHLكf]c>I ĥ_ Z;JaNAUo>*UF9Bբq̏B-u^_VʰՔу+ "ax|e݌:M(PB7f h^Pʴ}рeӲ1vd_|[6؈ +~*u }'/PZz]p,Χ'FNn>i+ ć=IF=7P\kZP#do{vdpյvgŝ%9n\3^g +HA}Llz*JkQU@Fw/^E۝+o7%nLIԍZ\@D>bbYEV֊XJo׷q.GLm_##rVw1S,_Z#jTޞ*7kq%WkJ?5Zް#J `r6](BoP}{ն{:\I$/2b`ftɾ붺@ˢ + w#1>MW{5uc[[/ᡮ˴ݙedjn(1r_F蟁K,vfbU${O8]1mɶ˞Ӓ5hpHF^oyLnq655!7}T."_y$Cæ2l;eVb@O?"$Ҩ@BV" (F/]a&w/J,CY`uorbQV~JV}#K +;"I` CGt׉:cb6[WU4>Zl'fgUN=eX@_}]~ OMaE|JY[%A%GoSx'l1P׃_J+|a}]^$Fk^g=醀q1hB3o޴$;ց޹U%]fК|4{c[euih\#CI ]aU}֮ʈǮ-y92< wy%%b"SR) #}ĬDJrJ)v;""""""'1yq޷SO,);R0Go_I%7+2e/*mGՃ )XMX<\\#y`~ixw=GfgLyءڍ o侀u|k+T!P^[$4z_J 8~F~ +6Ski22=F>ns,eQuY]~h,T|GC]S;3j3ON/|-^S"\{@DxcѾuͶqߖgJ@Ȉ(SU\k݀tu߿?)掷}ϝv[C :S{J~Q[_&Cew3ZGYlR}Jֿeqӱϛ`ߠ$o"|m]ԍ/S;-k[@u.,[n|ENղazV>@LMW9i}s#)ʿԡxl0#`M<<0Ts5T⧵THGb^LONE{I**{P=Oi|GCQ`xJjѱ#f~&խ@yXv9)xf1xYZzޏ'ة=zž_}V Wdt 5h>:wsi̫f>un^X +sl~{kYVQֺFV=Xæ<I8aT|^&uүL]~Z/:ʅUrIֹ wzWkv'&[9ЅK ']c?t\km<ՀcGf}Jku,&;=Ɔ>\Ϋ=Y'᱑R2Cx0t5ySY( Z RDK0:/ULJ;.΀ҍOTusSw:Uч~,3 O1QV/|Ÿk~Mí[¼t=gX7V$2*PRW";TEnX l +LlgxZI%eȆ;g@^tbAyZ*ҡ}KӺ=Ne-,,L"C㏉E.]G$('t;޶>_dU^$}*d)(]2mW34=M MIV9lis#S].m7ҵo`-$=̎,ZlVW+r>`lqתt-ɩv}vˏt.E펨McmA&F/[&Ke60%\R${=ijkƭ-k'S#y5d=l>4H ]鋐U%>D@V%9k0 > `/]lFs:"""""""""""""""$70,]|< o9/>~]NT9kNAө!V%#a@5܌{ *ʓr[ @K*@nRګ-[`Z:.,ZڴO4vO|_FZIoˣ2ո:*uހ`;͜q2+ėrmr؝H|Ou6gzPF$8g.$k_zF8+w ҁmI;ۍ3Wh* fB!1)|0;ѭ*p Ry~,2ߘGu)xmDN#޾R7t.عքo7+(`R+)?>F`i-l~\UΠu<ا,kc?igӑ +cU؍qƚտuԺvOWMM)@:'ge 츶/wVCٸV8s2|-u9} TᆕIӮcߞ1^Pj,VvaB$Pň1dTYbճ:0RClwdχǥolscZ0.5]dTYIBDħ'C )v^7aUE&$oXxo&ըJC{;#as--Skr"ӡ ;o,T_p,ʧѸXI阬[ɮ5QH케<Ȳ5+=3Jߓ2iCˡxh"dkzzқr`Se]'DRϑmSTgda}S?UcW8}q$zCY;f rJћ`1#/ArdXPO瞼_Uqk,oe@X?`܎7uEuTveF{{ ڽc?.VQBVzr{iM.=>nC SYt?0Rtk2m RTz"E Cm[f:gC| K5 &[o[ק7חuf R{%v 9B}ƥ1\gPѩ4on7A};z]u],X$}a˰M̭lBV N{dtR.bc\qPV5 :XΤ\  6Ld~}"kV1c~ygGV˅]%pKт΄\EPGe>]K +)^+PqMxnDۿ\ѯoӀXkX:Ӵ[k]jvVߋ%Ja@SU]嶿}wdxíNV=Ί 3%n ԁ_dE]{X63hiֳəGD]$B\,$7MS}CvYGlyN+%[8~y^1GSy J! ݏỤ8ּ}vg>ݓn5AHz*I=?lM8-ʙ/ 9v[Ǘ%}0?ߏ{7#I'S#/lUk 5Ugv7dulJYŠl=Gd6v=ș/N&>E`J[Pk^ =<];#3,{z}wq&[]@$;ϰ]a[>ڶ]*Vy 쓳Oj̷*W9 +Ny|?v5պMXXbQWa~ ]}T q\zҵG`4%Ȉn5FQ8S+kRBv +O+J# +7~ RH;H"8PF甭k(@SSŻ[[!*tc[6.~;aڣY'IOLj+s< +߯(T=qhvOu+VF&-P@۞|`dPv>rTv7@S}CfdYwxTO-ɑ} }IyӰ)xb4U'ܟS2jx"lv!_Fȣ$ef/)4.XcL(,0؄kT@~i]JV,;^NMTg3Uv*KȐ7$@jR6=7(aPV@|jVx*@ kr@,oz׮ +v+w?x5 kҠkk]^7wʕcd6EԿ=%eٵv~@篔#s:?yj,*v6WlX +a*F焢*OOZtv67*T7crЀ}%u֠ Dj*U$>Cf{׺ŝT,O:c :'ؒr)ܵ^UveJvՅ>\+cr;uvHy,Xs@v;}$b%7qr.>22f*Ā kp2hɠcU _[ T#Nb/9E7ro_u>j"Um! +#I`wq=67Wr/:|H5vk3#"yi +<:}3]1:FC-ҰQ>;rmo- &m)r!|tT^~䇉r2uؙ)Ɏr+!BfҸbgg=|¢}m-r=}w$,RTlkcBjK5OS&[V8 :uߴVyk031eWįc{"d 2gTl2, + +AX;#]VU*,wA9ֻJS Rq$TlPvUd}?M9.k8xrS+.}}6=&GzUͱn1"]wS,؊k̶h%Un<׼Wk~:c H6rAxqP=٩Mٙ$uu֮@ygbw_q3OR SYloևruLe\xkb~: #c:e9^J[r< Fg9}]dq驚w'[5%?Ib>5X%uv>=%: 7,+PY,hʷ7׵-{,B)f+O'Rͭ&ƸRP ;F]S]3!̺B0v+ȡFH%^F[_^PH*كz}#u󩷃Z1$ +#RD{]y?S|FxTqk `'Dn*lsIOefcGVKEg΀:?h2obu>Un|8E޶;~`=O~SbW1nŴmmqoYo{Vf̉:8[Ek#̒u-f|LzK* +̜D{]U{}U ;}wMrЯKk,Sԣ<`~/^ݎ}rWcjñ#^Ħ̇T+{LOsreHԖ0 uzb}e1:oQ y 6wrqsI*uBիf#}Zfe ,.9 o3+f]]8+[-Տ,@u^k2]myF9Jmru%Ү.kmJX*{)R+x~}Ywf;岖PL۶|=z |(,lo-/=Qye䕫/&j6Or÷sy%z*1)X z'ffIryصZі&֩if^&#T<$S#+eg\"ylwχo}N9xYyyOulrBmElZB6䑯>~ . ?2Զް#'ur8H!\y}LJ-,NAa;gq%O%taꎇ8ȉf<̖#2aYxVR"{h~+3*=6b5HZnu1˹5Uxl\![ ;q?/Yꞅu}bΦoR@B\wK+n:3V_ :-R }"ј3W`pƻ{] z?nв 2n E4;z߼ -ضYX& +l#ҮdC.gƼ5Jc g&(oc`0zFFEZ}!Z#2\R$>Qy9ˎ$&,vubuٔ*;u#z.W +.];z|nхz-cUkdq=[ЭfX%VXJucc('_ +Q1R9 P7&H;Hbyr܀֦f-^^-E*tG~2""""""""""""""""""""cY7Ŋ~>~""""""""""PGIŰV=H{eUeX#cb[ :D_p??? `-Q ~t~)s- ~t~zw'~˔~_zH&^lVs%O(JᏦPx }2eS2MJϯӱW }?5ϯ~M_1C=ϯ_>)K=ϯOExGHᏥ?)?c%O}7*>NLϯW W ~M_1G=ϯ~O_1O=_/~X)?E_/L?势|_+W1[ fc?'~Y1O1gjSe? `-S ~[7?? `-Q ORߗ}O^6+k />WExGiHU?K"ODx (JᏦQ?M*>) };5ϯ}?5ϯ o>q _>? ~XO˜DU ~X+W2j?? , |}O?Tp?S??}O}?nSfZ:ءv>sD@/udcUk^s]lXLo+Lo++_8߼W6?S}+G:_7KQX߼W6?S3Ko?LRX6Y#$f9 o?߽'G33yOFO~7IoS%Q~/?Ht_~7)??R=K(c~>~:?7)N~zG7)߼JG75~O75~:O75g(~_Gg(~_J 酏-_.3OŨ k~%Q=Gb?Q=؏OCgޗ#/J;Et?v7Koޗ#?߼Jz'?FO~7)??Q~/? _ԏFg~?W%ѿ1yOԟGP??R} oS%RCJ oS#-?1yOKt okK okK ok _JQJQJQ:01ν?%?Bg#GbWD?~?k?Q=+3z_WCgc~?Q3?FO~7IoS%Q~/? _ԇF~7)oS%R]CIt oS xOS(c~N~zG7)n~~+_8߼W_8߼W_8߼W6W5ҿqxlϪB"Ui" ?u.˴VJ_]z@_O1!#Uu K#u7GP\vYNN{A +^_oΫWI]+cYMwX? +އ2)cϼ'Owj/V)cY :;VLkkm`YܒL7OK,ǻZ٫K} + {.gM~].mD|yձs9-[)Q767ven傕TrOmLޡGN{@@,A:`'EiSC@OVmƵl@K)x,A$S1qz&s" +#2Gnl{rlU`$f:ӣ:2ÑQhI[T2A=>cdu\\\mA5:f׮r Nf]f +#gl3X뽛,ҺF]x7鳧9<8Bq'bӗ$TvA=uY1RlW 񵔍T[z!܇'Kބ^9~2)CtR9蒚{;n'\OH7w46܎IqORNQW*zNE?]?L9*ugv=w:чViN"z(^99K? *dHI?(_uȱlK 9;[Ni^:"-Ẋ]5 w.[^st +/jE;|,b9*bģkmL| Б4x'Qy5"{A `Au6>jӾ֮{LŽ#+YIr]0a [Z:>*SJaJ[Zo>^u\>V{ Ȓ\ +}vtIK#v>%l~L| ]$p׬U=`F8lBb >#܀n]r셁$w+ǡk +rBߵw3˯5qڜFrÚ;ׇ;En\g B&cSk[&[Dl@1wV ` ݷ Zhtɲ(_ |6Kypn{~}nj==[ggfb̰9Rրf:$zLXg=Ph:Ԫk X _ _ } cj h)ImzBwr]|q >cWS)U+OV,.{jezci73|7.ʳۏEf8Z3 6I'ūKdX!m%Pdu9+PJYnff ɳd4;?uޥ/VG:X68;7'/trMMr; Ŏ \Kbֺ VOڣf=&/31 b2lٹp;+t +9i$h&W~~wasڤح9}ù\dzQL70ȃ6L*Q,pr`>(N |'kChh£ MIXcB·s/DDDDDDDDDDDDDDDDDDDD:;;ݝz[mkc[<}`{B+zٗW"/6f;c݁߾ܼҎŬ{٫H!Gn['a8j2T6=/Vq]v9/%޹/ 9 [ĺz͖-lQ0菁g.NMuYUǘp\5w~!>*-/U ضucq=gaAn< e9y}b2:.-*̨[`]lo+]?FDuNbߟ2+kFz5ohX+ +Ā;/Snp*Ա u?P 1 %rߨތYL&ŽhNaIԨ,*cVRޏ֌׺} +ܛ؝CG[T _ڀOicu|l[䤧m8H=@:'η:TCcm$>TK+_(K=z R,룱u޷ӜWrG}Ɏsu*ҫ<"_X m$L/L2XwpϦU*}k 8VuJVրK"t}Yȯ`oR=Jq@_Er L~eW#* }mP}%,Xu֖T+-RH ku43_XP[]Ή.K-W(@`=F;v>eOYȱkKTr;\{$_f.Tހ]vKwt_^UkeLXmX>`ȿx]LGn1Gm.1|QbeQ{ n($*=4d/TwJlVe0@<mkrZlQu*Vr@wfVOZðmYT3 1 +3PÖakтsXv)_[ºKge#|FBi`yc`;˸Mg >Քtt}ɻ+krrk ,U-d]·uC'ª7>,o (\LCqO֏ixЯ]f h%3]LFExUQcφz1 f佻%޳}Gt$m>l@+ň:/9,ר%5u@$hq${liͳuS1Du)R)4{R~)cI=ԱEmY g麞2-1JU5pZY6B7{G~Y>C&z!UAh g?%m*CKҙyyzER3[>yF?XeV+08=j}omשܷmtnByLEgV5ۋ}b}=羱DydcPΖQx0,jG=z#l->ڛc/R_Xw^eЕ;o[^*up9WѕW}='$<?*1yHJS35etq2zVRQ܊J7jF/ͯ]3:}*UicO4mXcF3r #3>)H`v+* f]L7\^~rc^Ʋ/={@33+ +nJ[.7N:&3+l.mdz)׋ {Ԗ=X؜i{Mְ{.NX$alt\8$|jI hw] FOr9Vp||jNڟ4.{b^]~W$UFr!$i7m|KBtv،> c݅ԯĩԕ\를9&2e/:>;`u@kmI#X5vbccd"+!tA, +w.57.o N7H^GT;qJ e,?iAw,,?D +hiyc۷m˾};=#'`e};d5gVGmT(m܏F}}C  +R᭷:}k@}5/g+}˿թoMdY0~hNXºbY˒DzYo@5~h )ȹ5JohȺ﮾z1Y),ec1>JYzwZͷcnGo0) +uo;rYymH))TB$8c߽Mx[# WO6Lj25Hx~S3bY]K> +=uـ&/V-#YvrUCXXu"쁽o2ֲeu*7s}U*o]=&or +FDHup?._Y2302rސT?ȍǿ,nXtWfv- V͎nZ@ Xi_ #e T]LrԆR + +q&Qs5?&"+,Dbd_T'kZ"k.^\ +MdXo;ep}l/rhvArƬۣTkDDDDDDDDDDD#|Aۮb6(Wt0dk:ڵfx[}OEO+<޻FTGkxD[H2 nG}7VS{LצV1gֶ]z݇35P U +4};zQ<-cJ`f} +:=O%3Io!믊k>b}%:T^GTDwv +ue+[[N<5 ajKDDDDDDDDDDDDDDDDD@5ܫ+>+#of#jwd罖 EZ^+_ iV. 7PYRamlHC6eȽmqF$N5wN<n皝_p16XPr4a_9ZRkW!'|&dzV:]z3< %~:>=Sǀ0(T[]jzXܞlOϱd]{Uc0|޵c\~kVcȦŸݻ?tlqMk6=8{"1~M~IlLO{2~%pzCˮHRߦՀ#v 8e^'vn[xxٗe5]c-XldPk+(zͶk3#Zif'bR$9]WZ]sF,_#_ +l?V}t96DXK?<Էe6D;{q)c52^G[?l{LtFlr +@~dD|c?rCm6Y<׿^n*^IMJB.tҴgf?yUWu*mHfRA'oIEPCz{ & ]N-j?&w=ұZƬV'N2X§9B\:8ӒJ1(W{c+7}].2E'IeL/cÉ۾J%GR@0{z0#DGygaYSPS ށ Nf|'q5ّ3y1Fd~@vLZ+jPC)hñ@*rvg`蠱:]#f[-bSSDDDDDDDDDDDDDDDD@;uSQR"µ%Gaܐ£ {!T<:OfFp8FYY]> m?2I' ֺ+z|u*; F$kCs#\\YtkᵅN>߬?rLzH*H? 葰hdԲ/Q٪*;iLXnb/[~j~} +4[]Z^m]{֊{j`t,H{N|ވX:>@"Icdefnס:#~޺';f@2n[]՛M*ٶ=Oi{slBAl}jHrO[gH3Ix˘ŵWz}ξܙk=RVög\iKZaf+'b溽Vh#_i:jZwt6[^zǭlk'܁?4VމɯQ;38=>*tA]>=^.tՁ8\:B (L蔑y%ŷʱYTnUF#BHá, jJDɔ2/~&Y25| o"|m}V6\n&0`` +קy>uN=u( p6I:#zyVNn}(v-NAI*AkIӂprO;|hYhݿxv?IֆU,XcI׶yqpXq*̮Vet-WjUcz.gSӝI>I o?ƯWz_d hbt=N;Σ⎟ҭZo$ *=' +tOyw>Ÿ8ML@HDDDDDDDDDDDDDDDDD t?WV@旳W`oTGP;#+ucB\Zkذr)tK~ߌ}a@}KuroNcH(qUc7TcbA]c!EHTU].B`joО0r/ ?GjÉ 6Ƿ}̡NR,z-\9}*""""""""""""""""""Eҭ긼hq]ؖl l|p~{[VOV9hl̿"&tDDDDDD(a6>Gca +. +OI}_N.hܟl/_6wۃ}0SQI:Se׹?9""""""""""""""""""   +Rt݂{!|@v}nzk!e:a{v#5+hڝNK>0 lUdRs($/r^Fxȥ<Ê @y۩vyU6̬ZA>JH܊v1@C]d{ WChIV#QGgZߚo@3#^޽p { o;"|Q2F x^R̶+0aYtvX˷cf+\'b 5MFPG)JXX)*6tt7akǭkZ+5oyyX7fQ\?;F(n''@vEmp[:pW#_=U`c ą0/=Fwfk^Mxk,gҒ@¦[^@Z, +ع9ؖ@2UhūGP;w ng?H3'_J*Qǰ v3J#D| cFP¶*}ppi5J^[7bkg΁drr#UδpOAH+wR\oLm*"k޴4^,')Wk-_ʸ`!#>?U/q̳ΙNGLʰXm1Hވ |UytZ/ZfffؕyMEV1dT@{ #ᾕ^=\|:U٘]l}~CS׉*JE!DUC7?xYw]~m)yNX@\[wrNn-Z1 +8;0r"@ + wؗ<#Ҫde`*5-1>F~Ct-ܪK"3iG~z׼ɻ_BWOY{aQ\Ri۞:?O|ݭ!׶=96}dbיY ^dqzX+JThv'e]ԮlWұֵX4ߓ;Z`C%Y'}~>ZY%\LđHYX +B=DƣbcPҫSrz/_-UwŹ))ֶH Lz Lδ΁;{ysaeTԨve]ֵ)WEã%*(;_rnp(jO͝ـf$|ONSBpA($gt:^¸u0h7(kTJmj,~> ;{Qu,l,M˔آ+V<H=y~Bᣰ ZiίƮ~_ך羫?xvKf˦ hr* CnLdg+0148eVnV1RIv=o䞕qbV/5t]xkf_EAol=VXCC@ݘ^#ϷKl[uh,jCq! NrxS2򲞺ᢈW]kG]$kͯ7#>}hȦ֪ҪrV +t>FEU:|Z/zZT;ږ]={IUêU*N:QCw#/Vrߓ/uE+CX-͂r`@3kvvBISꤍ~!+7'a-UsvNjdۉW]~E8b}߷ysuK2ͥt}?%T:=ZuHUȭF[2 HgKmm&9YcE7dQs2dd%eYTn!t}g֬|Muwc5-UXzܶ}?/_W2|Gv HՋ5ʓͲO ;ގgYv^^.MWyL9! ,Qć{vB^| +큭9cz= Kҥ4e|w l:P=7 [RXO->2z[~\kj)vaܻ{qᅱ?E}&ֺV6NB%¯*"mYXtk羥ޥֲ/T6EWkc#Z~Zi98H^b #G|ճ2χ2ִZ|,~SjOQ5^Ui.QF`?z kuޞ*eS\7^=⋺f'PkT[n.BԜT.t޵P]ܳk)FYTa7s/]FklSgK7rk۷oLlXXyIGۉ}[@=L\efZ +  +]x#ג>i#԰(VSVIXY}߿=&wTe:ɩPmHVPt՞#ޠ' `jW>_Ⱥ! EȔR>`{L:Q >sRdU X|Dzɜm)̱krr` QV5U/^+u齃wp|I^B4؁J +G/c'Gf`eu\S-t*݃v`@-ӗN\'RW0zÅ='[/]khTal-EZ#2 +y(!~M_Hӿ?6.·-6m14Uetw`+~nDN2 %65M$QH>2zp˕>JX}pI_e&5թm|EaAov/8n:Z|{TKp?'_lv}~kk˵oGd) Aw%i,rfS"2T +%a͡A-tn~Fp;@E^!Igq@i cSr>+㱿ݑ~G[q5`y1qA3/Αk `1 ?__@o'aeک+rZw0;d{l7bQ}cfoγs2m[/+_Rvt%$hja iI.MPI0xL?}_x]G65hV(:ގLDKwޘյ0UPK={xOq?LʳmKQoKFm||RGKv~CdlV""""Xu'WC|}u/DKY9U![?`5OuB3I{UzBX;Cըrd3!X'Crضe A?OQʰqv>c"""%pS̾ŭ}٘*Uw,ߗN)Am(ߩ%興+nF 6Fv:>DDD길Nr#6'l~:oi+Sյ,"hAdR^Eؕ`#qU>nF~9^6)+b.}Iύ3r+¨\KqsBEuuΓkdǫ&|0FC`LTk]?0T-Q6@y'|H/7C&kp ̆FNƈ#Dk9KIV5)I k7`4*:Sq?2Y}8tr0Lbjd׬Ϸ`""XH9}T҂K_0JH 3mY_^#ƹZ Z~0| M.V.B]ɾ.cGL6;~yvP ~^ qVT@8ѽy[NUtcUbUʐ{}m ~޷Iu7b yW¾im6Ev"-WZ%,Ma^6>f7Bٶ,Hխ\Ȩ#[K؅_[`hCDvL@z:Ju[o,{v@ րr=$Xƣc]p\l5+%Sk{љR\,tWlUB;{Z2(/>+Xg:rs܍ v[^FR]yk\{{ %z]_[z DCWp親XPo_)mzK)_'l|zkk3Y^pjb<Ӂ Gmzb|1o![\@.Tf'KjVQY>kl/`O.˾ rMNEt,),Zԍ7ؒG~^W'>j =ungO[mJCEfIb@|$3h|eΛm>3֦\Tޗ>f7A发%Wm^euoS+6WONʲE蔻=d2;GǥQZ5|(@ +lvE5sSsu*[b5l} u26°(VPXZ{`J%)amm +Q ~ɋ,zz^ >EtP(o{`4BN.~\R?-8AC./] "1HUMrFb9Y5NE5e2|mb3)t[C\:>9y9Vb6OjyZ,5|=#O!*ィl6y& ;G˾gL}7\u|ZZԒ} SfNge4Tp2ZvPkGa;krXvJֶ=FnlF@[U]}GVkW %k@t 6yc/*q ˴h̽2-5EyLHY9@^{^|>=icӃyrq =;x^mqOțVpH`wzŖ} ZحhOK6^;̋FsbybCFrùJEG̓#Etk8g6 +CD} >8[',cD6yJR>̣֮1ÐyM^H66oĕ&>eK&e)q:kE̜^=S Vsq]qM|\o:jW&*\ցH oF^=k#7"0iG +-e[d oz|W]XIU-b2tݏd{[1%G_DmٙJ [ +Ax4􌌺1kfG*U]XCk=ϤNmv ^[qۃF:qzukN/f=~'XVWuT͡y1g(`/Wl,E򍨪vfPAf'QoO-|Z=W[vc%LVVZ~`;G*T)*{M[~ŴV +3UO}cGP.A'u8za7{יÏk-/fsWSs>+_[  +tAmz~gƶgBUIRA*H6;K'JWZϲk0Vl[:ML0*Lkĭ Q<@Q.O37R +Όl]샢;~o6jN`$Nr)|7_J.+Bk;]{'KuꔠļXյw!GW9߄Xa;((E:;$N5"{cW?[*:&GIy=K E-FFK}/xgfrsu@$ξ-Up y}MZw6f&=6](ĒU ؐ>_)(Āt75sQɲ)eNx۳_ +肣fx# _#.f^{iNNJ6Zݝ,Qzlcjv{u[* +Iq˻sb6kr(t>EfRû+w}%0nbǶ&v$ߏzWlըfKqh$pe.e*-ZN%G晞%z1QY٫?`pkCrzPSr,)- +R\7Z[ftJcZYTaeJ,Cvj>52Ը^,5 +r>'왽; * )R+}0 VJ[VÝL,~!l-jBHF;H ~GPd]eax+##`vR/Mw3 }ήSjesMV{}瞛П> zk=E:8?Ktænv+c'{2vt6u{MZ΃vc%%yr7*}֙ĩ.x8ȢJW*wEޔDocE|bQEm k5W=]Lqʚ\>ʕAXއb@^VF6NPj̱K3Z.AJHMzUl >-U]J^߯}IeK1 +$t++\ N2dg*+} c[ڔ>y?-uL_u.VFU_g3G`lFokK2$ɳ/(J3(6~CnC/2{p{Һg^ tzTAn#nvN"r~MQ^U+rںF$,鸂'\آ;Z{&],WŲ\$ hʷ:Ωu\]q|hsff,@ #t꭮ +Y!O%e/bU;NwA[aQ]!>b8p{kCg=L|c[G]ؖa%5~~)Ev E yd8PǶ=r|6r:;B1A[. _LbV(tk*7Lyؽ;Uf{jwVG{4 j(E#q5`G krcc_UB;ye:E"Jj66u`Z$"1q&-1UC+YزB +̵lJhQ~sXb{_vFݸ{l sy-ƠY[_mAc*_ '\w36GB˶>VHVZY+o[ƌ9x+ԪYu˕io9m` C*y_#Kcc`}㶽[$,edX|k3"{R{۷bw:.~<܋r`+%5}}+; ++RUG񣶫j]J <ޟ-L*q_C]A};ùx2֬}#l1e[>G$eٝHu<^9m3rfb] oBC]5^@Z v5zUF>ӫR)pVJCq  +oۉMWXltDȬ~oPV]XZr!}"]˷b7MM?F ^V7>=}LTujRׅm[z h&Wv܋r]j6,bB܂ɰ`dYJm-K*̽ܩ#eǽŬ[OdDU)nmTyLTzz w'?۾HZ""&WQlAu(|kDG(6Ig'_[j4>Sσ&{ {K,G_͎@WEz0rk=jaЙ uV('Ytt0 }(¦C3@9׹ce'Q+)-M~u&=FX&4~6,vkޟrsjCnGmT:/5=4÷Lآ$O}~d:ۢXٙXdm0W6R_CsGV/LLN]dX j xÉ<} צ%.vMJCIoNت{>܋x-Vyhsk9T޸5&+P4DDDDDN c\Xȁ{e3z- yeH`A` n w{m77?Tkw +J+M:]GMvpuu*Ch6zK}o50Ҫnv"{Ǧ0 Z^lO&b'qeE#!dB/3g^ԿH+ۑvyXvaҰR̗$ c.dt[Qm+j !sfކ=hrioF@u\*2o6bp 36@x%1jv}&W'|[,C&X]v'V)zJV8ȎVBa@ {`vpGpeLӱlzU-^"{۱=l5&VvH>}jK+Ă^#8=R?*Sm¦d2*mvZxnG&WzMK.ZYBkWShNV(Y}]=FU&5oeb}dj:W:![NhT0';і)%WnrXPnoAϾ~o0kCSYg#ޛublcVVo#}{Jdu,ji{Gs*R[l>FuJ[Cptjء:od>_LJEteˈwMgO&7Qx)Le6Zܛ[ +# њX ]WpѴ}G%OYZp*@$o~\a`e65Vxwۍ5SL5[ +3i"vKR{;#SERי1^-} Ex5z3qad+h _I5ұjĠ-!1gs%wol-6VlBڊ`*@oYzEt,dsi6 )=8NԐڬ࡭(f @$szyK +U?I⮿]mHП +o~7W" K*ؼ (+׸bU Zٳh?X~mO|t[׶7s͞$į&15Յ&ٸaoϷ+ڮƶ( [jxfցb=׼qnNJzX{HDvcjBOTfDcՖMẒbTm6Y'|VCc.|5n|=dgu)c +7:(ec}w:CВ5Z*U " kz'[:;S^Ty)XmJ54ok*ΐ\wAa~{fკ^})}@q$q${>dDD1)Df?F得SӋJIo-yI;=ϩ>2""""""By2^mM/bW:,"zQ%l{]cXV>噙u=LKkq"ſm6"LO:"kc*ΤqmD+JRUߓkdذ9)Nvm{=9⍯N“-GcYgQ)RC:V+8zA=f.R*:&A;ۑ[D|(=䟈l@zԦ_RQNB׭AEC|z}}7#:5&^m`#) +BPxm84f}&?,^LϟTâPtS$vё=?dWz]EZ)(|%*0䭛KpzKXՂm_-QC$}3c)BT[]<؝˷ن2q5d(70׬5̝W^kVˍōnyj{w>޾cVK]QFipۈ`{l蟺MVUٴ +iƹK5|]WI5,Jp鯧N2fzcdfjKMA{z#c#X~FqrNC |{=Gw,s]~OLv +ÑV JJgQٽؗ%4TE*Ϡa[e+#uL|ʚͩ )d.T@?/Nejp$ ǑOWDi \<\l{Mp ;00lzmF"r +5@LŹo#~7׾Gy=_/ܶft7E k F +ޫL4̥k] ^)X/, oyjBNN﯑&c䋲/ RS3T ^݉-.EUV;F$l^ JZדcl1v~SbW2'z͌B!= L<+,9ZyjQG6Ŵ@zmtcd-np+IrW^ _[5KQ*f>њGJSg[mjX~m^dz+ebZ0|h;mPrl%1\J ~SB4̈́5z +>k8?тHRO +zjVA8g* q}MX,jԆRP!#}eceٓY5XdNn'R50*խ5n>OX^UkT`Bw2L̺oKrr,Yo)e#|GsIļٺǫ'X78lL߅2OW^Bď{鹃gz][׍o5+qDH^1ĽujsB`FS'@;rq5yXi*lJlf5]뿠&ff:wO|Un8=Zս`)s +InC`zk:j6]re޿dqx͖Y]lu;ݹ`7ŷywH^Y}F5k' +uDzHE{G8r^uBwƹr+WM#`@xtWkm+w$T3Ž]Ta` +wL*ȯ|l]v4tcbDx \4/v=K~ߚaΏ cW/=ZU_={nanΧ6mbjXڛgMq+5!<4{;פʈ6 v[vIDDMk]so+GsK=̓&\::VSA ˚358`-~Oںcs$DHε<-mpXW$Ά·F @ A """"""'ZX AD1ɲaji +{oLS {{ vL1p0OVu%r|i9[/Ny2ZǠ@篙b˷y)ԬDDDDDDDJFf.~,#/QXIjUv'lXH]=t Խ)+;aƸq6 ^:-<#_lԬDDDDJJJJD}^r2lJFQB%MJDDE ]XA"aadED$_@˰~~1&Wv]T=O(3FܮˑyZmMS>cىm|`r[{/1rͩ.ãee;B Ŷ-*]I 0:JA|pR+XvXQ"z_ԻSe7i^X`=ϴ>6r oBUU3L<W=SՓ]j! ;B ,eՄn#`RI>I cz-ac;ֈy[Vb69C^4~#7ofNm8uUܞğ@>dCcz:$l@|QְrZ"6r-{~ιS: +}aFKLZU@,RyFFEvՀ Ȟ.NV܎dC$2:>'6^@ oys&]]mYHe#8@I:lؽW;#U=w/E~f<JgW6^/l!O5}-P7סּ)5$èaF:Vct樂`ae 1pUk]׾{I/؝,WЊ ruDs/#?m@f +Hd.]9iut>0?>x: Hܝ yǯeebQ[z ղ/ېbi߷Q'k +b cn9 ɢPY[Ve Ĺ5F5MESC)#)vD +]zW*KufOS*vf vt?t-xUzZRw=ܭw+ڿ0odLs9UN#ߦz&C"j=ʍ=y+RO Pemmu/DԠ|?iyO3]kS2ee%0 ^H`;+b]JG$圜̹`rbvNs۹XZ܅r`Fԍ{ꘆ\0`T#1siVj\8V*twcLn.[U[); @ ̜N]X+#~ng' V^̬=b?iX1rZ_FAxğ8cTr2j׻>fSÞnf86 AFVGdTED4DԲqEů{X7mUfԗR2rJi/athFaNDH6d[E oA2e-EREXn& YH fPm?kʷ[UYH! ""&*ޞR!K +c#DܳtZMy%)sVAG=zFCaէi%UDkh{|z}+`QgV.8-h@}}#vvHl kU$X[>0"Ȫ^!*#NI4̽kkI6=[aƱ<weVXnz+5{InS߃ZL*IBOQ^|5BZW}oN޻:Ut+Ey8eR +pR-$kc?<]Vu/}]ht%+e-Tu}eacHpRq;_Ɨ]:U9V' + Z:Usj`)U / U>K}g2F9ڹXvuڐG/bdQ9RUAk"Hf*:; 7[Y_ǭeY@݇kN%eWVu[VX9wB*Gq}<,\fտZ8}ߦwnZժmȕr'^~aNaûȬuW,WOH>z?Ax9,ڕm6?أjN[:Ckugg*`d +;orCf雯2Xq>j1n޿BX{1zْn-B]UҖ.b$q1ŧ:-d׭|,Ŵ.:&Oxb/ b"6ߊV>3{cx3d\yU9Rʤ@ 1[07Q98-eh9 7йeu~Kb㪐>Wp}}4 +z1#=UQeɭI$+i A_T<ڳ, j2hz][":b`2x5ԛ7hӳ0k<-x`iQ};iұT/ш7c*^E1ng!e:rzGR-QRՂ7m\\0dKk# ʲUHA \nWغ+ݶ7=/Ipp̥F&[ݳlf#rP w޲J9nWQ-fzhd]%XX5Kk +$K2ko&*})_0@OCx½yTa + /lVδ܈${L I٘[z|<@vm}|`1$̡o>­me$~écdUMj1Re֋X|(Sk; +!~{ӿ32^N> /pNWjjv*qY@GI_ʦbFoS쯊{K];&u]JK*qc ؍P~Ҁ7#A-=Q:e9aNDqڃuǦU%J=d*)~U$)#,NC\_ u,f'q;V:aW^cQeձJ}$ G'6bu6kZ+{zEf:zO8YGؚL|l;V`F+ÿžDz;hŨVi[]RC0/z$'5UgbQudֻ%ޭթձ0~*3@Lf6b+n[Md+`rZ9ZMVF\7O47/&Y"( d;9c^A w{=I +ebf_}y5Yu#uT p)7kk+OZ LN=۾ +nZ=_g:-.\z7g%@ߩ봛:XS9n߰}>EVb+6Ge*Gބ4~zO}C +n=kel={0k*zΚI`ݦ_Vt[=2ܛ+c+ uEY4͕Үrm=_GscE-#MOnާKuׇ<:@ʿFO(/3?"̹Bvv&Oml6`fkj=}?mX9u*V{mYN׬k߬VEإgO{TҘ֡U@$/VDOT)GPF Gȃ=*TV""%c@wH/Z7θ~Y ۰GP=%e5+< tv;{稉VKSj,loG잢ydW0b6%@ +4;J.LhܩPB8"\hGȍX*hPF YEP +8/~{J Mhʊ }by\)*x=y:.g~nEAm㠾o^KWRR 7FE}r67zz0QͶToh +#GGKK6ֶ#\M8\koZc}}io]|Z|#;8/,JǩvS_GgJj;T= ++z{k+J5j7HZ]gR@zzԬKUcUAc]jU +O߯Yk\[G7=qBSܘ=G) e%my!HaAؖqz]e&f[T^TFĖ$A$naz}.w|@&n]V'S{c[ZlrI@ҨITJb%qU|BT$w/IO)96F޾[%iTSDDDDDDDR}##yO:U|8?('l#cue~hߘ=Tb=͈ kO;2튪`=r=}ϿEo?.Gs(@c~fdJg^C)|7b8 =6Z/[ i$kP%b$7|BRݕqE Agxy{>fc.̳]{V}L5>|7}OW\'z8V={yqp`{Dˉ S<˶*}Q}Ͽ?{WhqUEf"a_}_Y(F楝|)CXN{k_ytޥձ' *$7=?!=4.*yٗv;},Ѻ;?j$DL>o3""&vG2tco+}wV={l=7c|tp# b=čSpǡ<컻S@?ژ(&gKƦp>}O*=z 􌮒_GyywU@=?.qw5,S;o~f?9)W;o~f?90:^{.g͠ؠvOs3 +3m™?~|~?~|~?t~K3Mvӳ_+-Kpcu6]__(Sٿy!{m@O£'? us~O.o_8~*]GG.?ߊ/RcA!}dpX? w-FK(zPò?{S}~;VŅʂB=~]_dn?^9kǰ=~_V4X#1^궔P9ubSֻ=ɰDDDDDDJ}o5g3Q^ . gDDDDs )A#Azw+13ze=C޸e~w:&=b vcyuĂd-ǫ%R6"{z6KZCYd%ގĽF7IC7y-(}{Cw;hHuؾMjlb"%&g3~}I=rP|z̓-0w90|RDKY׋[YcU$Ȝ.]f"Zz|=)vH%E].1Q+YB b䏟"I?~u5n/^>_u(5lNU{+bꤩR@$>?br_YDMwф^f=?ys'/LD:#-cqn{RsǍ{ lq :GomIpJ-%ev s$MǟYX: +r^G¢VvܕOUwwmCVvtaqno/YJ,ƭRyXױ ,GT?veCERŴλl]#dvfJͲƻhp k\*_h~d:K"4E-8{ IߠX8?++(Fi <2s3Zjɬv;i9 ݋囲ik9MG#a$:%)UvQ)E[r :"Fz+Z8qU,{ضxtEa-{reB^&7++߰ɌODDDDDDDDDDDDDDDDDDDDDDDDNNRuNw]N:7bYӏ}>Rc*چVqUm5*㾶Řl R0K4kmr@#z'#G1 >í03 +,ݷu_q?y/&vH Ej/*__@U0$ˆj~wzWjZ1mbP7+"z~h[Mx@ws;3*rY鍐'v +en^3vUFE(k ]V:oM}&M}PE;q]V=~s 37Ҟ|t;'i ޗOQ)ꮤ UTH̷kNyUa*8阏o͚AjX*J`Goq.DDDDDDDDDDDDDDD@? :^S:۷VdDDDDDDDDDDDDDDDDDDDDDDDDJ屵$>?=o햯&1↑j;fw!￾eΑKח&nr;6·ψ]YrÊ_:iGމ0?P7? +|q[\JIjc[߮yqOvtN}Q~u܅au;їqz} [I:lIc;˲]Ys/ؔM~䟴/0{k B%IS6 jʖhm[M7qw=ѱ*qbԡS7FOy(f󉛛ebI #RQ;ֈ`;]v?('5-m +%F·e?`u |-.ּo*߹Է##Uhg~>o)w@"Pxv1)"28-P-ABG44F+Lo3vRv`]H]K lI{qkE-_. F:>hƯܻhkl}XyçJSZ.B&_<]rPB$@2-|]ܐ3i$z̫aR[VpU@; qrͭnцՔ|DDO6X)g!@$?tv- vVe)_bVQ6fꓥ.32=lOR?Jˆ-o[צ"%qΨAb,݀}興!jN)c5=ܪ=ٹpKj,62*t{-- 'Sc S +|l+eX\Q{>~ș=#zV>(Ove9LnvAZuAeR67gbembq;{v(fռEn6Rdڦ52`j'봒ͺLe8_-GߗY۸c#_3ОnxXf+%""$:)xT,v>̊-CMd"yv7O̖N!^H˰kBS6ΣfjdH<7²Wl=~ Xs'hfU&ɳ~|",Pa[k}`ک`{nz^& ?p `+߈>zܱ:GSI QA}b;K/-Z8%7AE ,'Zk:JفXtε cȭlCuVSlu<#6q[EJ1$(`OR"[6zYx5 t)ݲtY"~^W_g GFNRՁO};V*n_"6"TX`ߙ*af1]éjomci:D.!n^/C}6;&s:^UIoa$@Dȓ~s1Ĵ~ n"^bb'[R闁`j,(BӆG>wV9X[;*8VU-;hw%j,4X-_&$)kdOy}blk)[,qS*jhD{)z:PaKr#C}SRe9dqX5둎ԮO,̬IϋXl왈IYB6$Bfk*Y mz]}~Ni@H$lCAXct`y9GZuO0+ր}u޻DDDDDJFb""%5+ :g_6w{(ecrވ&QBqEQ=@oMq[W'  /-h½n~VF2,o,=Iy1К5=Bna]V_%(Oopy|ܼl8kAjǶwĝq=adYqW}lŀ;r|:2#;gLnE1KYUڞ#Dkdn6~nMz~l_X|n%c#&)ɪB\e0Dby/*Bץ楱 }7^&ONY)KZ)Nj(Ղ7";A߸4`-tBdyoЎ}%s2sŷRoXgR@o@wFK}xՍ\q>eamPɵX"Ւ;$}RG>gT)A r:[KAemwCW-:*VTȱs:nNFvE!U_FNaQ_rHH=;=3E=+5@0``}~ݻ6GzHpUN@T W"ԥ(WjiwkO&sH\(ϒ4Hq)|ޝP%o` 8}ŵ9@ff>3@:jV%%e5FBxjEuaV>f }GlC{;:FQ?2CaGOa0yT(ZVGrVx`sL\^}_,vE.C:y5`6f*T& @'Cˢ^A5ndL\Ed&REzYmlZ0ꆎ^XoRy)]v:;Hn nVSqX܆_ɏR-C++*훁&w1mePg⍈|v%:?P[ ,)AuHIۙd=ez΍Fķا_EKM-.\+6 l LYHܬ}EF%b0Tyqgy9ti.ic|H]uY+)]oþs2^L޶uo9:<_-ȂT7):Uw["Mį;v2'/ޛ>~Z$hoZ޻GcK-{okW dmcu䔰_=ꈹ}SJ0Gao=#۬etXfi.KWۉrF̧7-D8l:voawf $;iFvȭqYq$QppJ@욮.]9-_-3ٙ2dXU5J7?rc;zK푕i£5j5Vm6+UOo_[omWc ^w#WęWULPfSAq[e߾_f1oCǡՖV쬨\Xİwסe`9Ŗuκ ;N|Jx 3.n;RTB}DՍ +aPk 1M6} {uDW0WrfbLLg]U9/[3d0b,^%[A^ͷف_ظZv!@s.ۺOGcαuj1 B鴥F;&vWZ zxn:e(` ݕoyU+7v▲Ϲz5N}5oXFVCh~Xn&Eϐq=Eo{K=C]#ӛqrr6'lNzmmE垢Q<^돧'Om#-q+Ń w0}uy]Rc!5om}f!vOCtTʲ%k8pTt`Cc{I<ˮu2K[iq CYYYKEtfE1+壽lJ썶=CnɩrE%Y*PZ]քܪfdRLTloz:75>-\Rv'ܔGrk]M- CrV*u&?/Y:Թ5Rπ1N*qr8Aky`+W ֤Mun.vG 1'={ѱm|.F?fqNo.=EZVC5n6h={λt\ە_t$o1<`?cvzl+Ѻ>0omX-3wCwE+Je~rkˏj Z1LjrXƿ)(4Uм@j2_!N7m˕69H?u>Љʰ9 uٔMWֻݵ/tj1] Ő+]_t[,2UP|x;qԱG1Ǧ~\}F rg{.Af hzE]j *y/qO/GWm9VQ؂Fǯ∡T`0D2;ꎜ 74;h{vШ9lt)R*:O5xNDQے@Ru݀R7HZhj^]3.RڷPUЂ4D>j)6‚Q^A@9oɧFPF8j=߮'u]QcL_2::)-W4n -0?'zzg@6=h3 +_;MLtn:`A`}>cђ!{mZ#Th*ϧK3;e.lT uKz5nVR=Fzjڵ%AZUקr6v~m1Aƣm+- w'w/ѕ9ʪ>0 A lLTéjiWdO'KQjK1%XiD} e[WPAmddgtzF6E`8]X墻#[=xrׅwZc 7, btV, +-[Vw.'cdхyk< +W^??yEOݞ2 [#yApkM+j7-evWN5rx[1C;5'olrv%V !{KxW;VZ|`p{3c +, z>Vըlw!K/@?fgH' /ov2w=K]^.CWeYMg +UG:懲S.ٯpjs5$r<|;;ߤUcd,J;(z@}IT%MmB+C2W +}b=>S#2};eg+_|[߾J_H-OaX0v 9,; r'dz|KG}i^s׋nZf!wk]_s+*Ȭ}d}܁И2|,[0d lkdjystd+Re+-YUZ=5mC +\{jkkJ6$Oyy|:*rnCQWUP.`t7dWuαtgSYfo\v4ɶʫ +foA ߉MVTh`= m˩/qVƏL*u)BDPGz]Sk*FFa+,~8|x5u+;nҹ="3= +6O[ijށEMɇ6@G_lA~7Ir]Y7+_ZC@.k::U]1ig(͹ ޷=uWR7#m]bPW'SۼītUT5t4)uQNTH-URUM]*@PW]Tl[qVċUc3խjIkd쟴Lw׍^ +udm`&uG66Bv{v4tp"(yc>aP~c{FƳmffJ%&orb}5ź)nz$^OK~"ʩ;_r&(dSYe$0a;lhaWzNXͯ=JJ1zh}멝*{ JWvv=ݞmB;${ w&*bXo2Hކyz^Mؕ! ~10|aQ@ +k}Φ'JzkuSKVN-tu+g.t]g" JDDDDDDDDDDDDDDDDDDJJDDDDb""""""""% ++)ĬDD +endstream endobj 43 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 15/Tabs/S/Type/Page>> endobj 44 0 obj <>stream +HWk,+1 쬤VaB&v. HG=TGlbܞn=qԩ׏4/Oo=s]r&4=_daߦOv;5̇eY?'cLJf?i>fſ;{{?Cz^%=OG7gOɀs5 t{z~ck_^K;瞶o96~G۷1\?}Ԩ.!ezrѹ|a +?%oi?l4H˩uVxW2R"fr7ݿ%kq"|!^2"v eIg~_YwvP6k=(ǿf2zkw=r=̐}@O|t +3l1դv9&Y5>Z3C,4%>P9=+̡jyT$舫3ǛEK%Rϫ \@\>U%(Y$=1qr }n0X3:K:#Cc2YwpCEǛ$&"NjJ-)rnҫ :_Ii; ^X +_=g%úP%'֘t {Cɑ…-#@l]{f|uqOFi`gS 6 +Յqf|]0( obբ- >(.,B/wiFy~'J#Kb֪)Đ"D$3n%&>I@cӿ2 ZyKlcGj DEiPȂLD҈T2q +Z^AB26`ٳY30Aʖ5֎ӑ?xpeM+@[Tm&ZI;BErUNu5I-b RtEtD|6ʦ!o}M^e[d: 8l:?&#JT@xFXpCqGm$cU^T(׋BD#RuJ ANtEk+,T;!TG-YT|6c.u Lr֮%6I1ǖ|s^f˘-Xp کt8b 9#o$fhS- "[d\KNM'ʕ:&b'TJόsM#V[n{M$lf8jk$lkliښrcҹvm@cU:O3ۺ(xF5g ~ZKĚ.˵>v?0#g~)eiAPoîiQF +]jʂp1ڕ+-Vqfdq*ǰ뿋9ң('kXgu5Lj%Hz"ThB(cKs +ܺvlewqe{ts[DR]Q:1YC+&(4w⽋G~WѸMU4ף޴WFbj@U=qIrNǮ.( \ʯPE,{Ynt 0#yGZǨ `qĖq({q"tJU#)3*ӁʧVJGM9S9^hj4Y7^kUD!D:wm#s+&mAd1X}h$9)B$za=)G3@3Aね7[+ Bt7S҅fvP&)m&kAKb$sKC'j1A 1i .v$E 3Z{vw̋9i? TRchb9F㖾?.(*Q*^FGSzk7񼴡̵Q&2g+)ځO5$@rNV"b6@0ڋv(M\,ى( +l"r5M1R=gyi[jR+aڮĀ"HZVC)^gZGt9!eDjd /!\+dɅjf4mS~:vF'SfU3K Fkc쨉I V;R"FI,^2N($ 4)}z^182B119RGQA,~jmا}?& ڽL˼3SXFUhToo>|P4k=?7*trpě8,Kݜ{`#(-Pjee$dt^넳)M vQ0.76NZ(qmM1TФa-;Xe>eo+:\|.l^^,[er ]VGq(J,5gLWkK=mg_My7;mN=!KRיuG *#*Ԣ`)) lC]1)1x`!+UH{ETK)ʑLN%CK S_IB&&cOcd%T⡷R0ᖲ*`M3LnMfTgJB8uh9sj$_̷TR)6qL.9e !KΆS߯ =&]$(f)$b ?h/Ѝbd cE1\7HjlG(ZFsxw'spWRigN1NeKsZ9+@ W.]&A deآufA۬I' + +6\T=}`iQ+@w>r>+[)e` h(J%ŵ!Td)t' +U]iӥQ JO8qw +*dgTa2"hGE0kV?jVØB%>0͙"ᔎQtujݥlesh+>5(zl5E Im~^L𼒉q,^^ +Nb%cH+Q}G,slhT<t0J*DkY~F}.zHF8Q`//\JABENcBQ9a*>nBBeRBVij+eo!dҎ)1?.@WJ3 A,HT3rsa]+A٭`x!;e#CcBr]=LB6̂~n^=sx+>zl+ay~)q  ^49y[CQ +ǁ"`nQdq5=|5xk]so'> 2JD +j23UB?T` Au_D% +endstream endobj 45 0 obj <>stream +JFIFaKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Ka +  _!1A"Qa2q#4BRs$3T5brt +%&'CDEFSUcu()*6789:GHIJVWXYZdefghijvwxyz?b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb'-ZTI'@I.E€],Ju{񰟡-Џ`@A=LTͬl+[ip +Tb|Ab"""""""""|}Եb&#O)n5B }{Hl8{яc]9^'cŢdS϶)s [ET l>81(^l喿'A#? G(.aƺ㨞{~3)j_F5 Y5nkUb61|܆Fr[S()]QO;C={J?-="rz@}Zc1&{udd={yyKO_A羅}h{Q2mŵqVV;v'@~wQ`m{Ta/:\m_N'-W%aYxì3)Uk? Q=WwɻهoGǰ;eNٔ;Ʀ?-kiz\ڂ^Zߧi~̴nu?RIߨ2|GF)K6O_I~Yy,|IǸ֌ +V@`Oec:.oks- n*{=6Ԗtװgm~gw2N[}:ƻ\;a,3,kA_o>Ʋ-4Vo :bV]iϬ_Xz;FרF}rLW+$M=>{zOuxIW{ңsIzI=b*Ҕ=(:HJ}յb$w0o䰭MK*Flwַ"20궆|`O;$xllki)[k]ܪloC~L;-tycvҨ:$"Ds|UOT_}/[zbw_1НXuhw>6E\FO oR)FvIۼy,^7ө({WhChPO |cir.UF !Bz t'ݯ /q-ֶ3Tp7Omw(M('%gԊ}>jiLZ%`I*U6{ߙoߴ^F{dVP}U4Fÿ%ZĩJ±U'`O&s|M<\J3*6z:F}s s32y%@[ΪYVh{|o_јv=;*tuз;"Rm=IQ:h|#0%u\W.k"/L~ xܷ~'tb ||Wm_iadr9 T&@v.iu]==dN[_/" w@Z ed%,nO!dnOA_m\-D$3VH: @; 9|k?'N聮WFH RO^ƶOg̫?\ Bu)#]w2ioNPB0Qdmzu߿L&@ToAuP=: [׏"VZPo}>3ȣ6KW~hFO~:>DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@ֵb"""""&,Z˹` ^c=WZԡT4hOq׵b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb"""""""""""""""""""hrṬWe3-IUO6})q߱{3b|oC9z,XK7`}ܑ8~"35E-k:=ZoՅhm*\6(4 uu{~$&#Ns\unMoe#&D^ OuJI?=ϴշTEJԟ#dOxܭypٲո(l~lL~bgҶ#{ X2 4łvz;Եb"""""""""""""""""""Ee׏[~r5 +Ӡ1>c(*:C㳸7jƲ]IW[T?{[58wrlcs?f{`__mλR9܅]?&xʙ|:2܉aFU_,PhiĶn6M}Z:Vh:MC)[Yg >CxayM2YS}uz;\5)@'mǰw |@3&ٮʱz6UOzH^w?.ʒuuƣXAG*=]vVf:e_g ]}޻ ++bFOwgbSu6:Bu%Ug?Rۨmy; xjʲ2+a({ oy9[m-]eg]]`=}'[E`(s/_U +N>]b[bJZss=DP5۶ UuvZ }7""""""""""""""""""""""""""""""""""" յb"""""""""""""""""""C ܎JWuk*~4cBt}+2-ss1,n:`u>j-h|b:订1VtOuY6eu@+$yiӽmc9LHM v;j7wWEo-<+`թ'@U29~՘q f-JToJuyFJNƻ3ܼA {-VyF{ho:gQum_v~5RU\-1_1:lkCᗌ':' +Vvt~x*ͳjrm,aZ/Eg65p=èuZQ,$j}渚K1-$+/fR`h\An oLF~Dwp&EywIỤ̄8ZzJ|:5l~w+@wE} ޾54z_~;96匞0Gb38&eL=(T8;6pTYȯ"I_Nf#݀$28{%b<~HڐvOQ$1=a 3$왖""""""""""""""""""""""""""""""""""""ֵb""""""""""""""""""""'7 +@h<ӷ}A'؈׵b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb"""""""""""""""""""""""""""""|"""""""""""""""""""""""""""""""""""""""ҵb""""""""""""""""""""""""""'G`lZa-[")۬{$krq\tf>2lgcUh[Ұ)L(~@%)V-8p}A#y_bpeG[M6ʤ3$$-%E\Z/j|Jbu5.?!koY.C~zmDHӵb"""""""""""""""""""""""""""sOxI^iͯIyN GpApxtu39ػ~@vj"""""""""""@xȻ\_\Vk*'̄Edu8^̇\jI[mgkVvvMdG`&DDDDDDDDDDDDDDDDDDDDDDDD@Եb"""""""""""""""""""""&,Ψ[f`ӹОŰ}zlzOq y7yªm_IEb5lLϓϷ8}kzkX/\M.c^+̂7Ju3'@XsϮ}'B?ugYe$aAh?f~EX5 `gw3e2+uǼ᳞~-v8Fo۫_3w+2$ŭ~lG϶dRy[$g^]7V-K +I?0Mf oc=e7OWOP޽u|W]`cln|u7VOA|C?#߱fU`܄O0p02[\T]7S8Uy& %/Sk??a3Wj VGbq؎yZtp:ovR7G6UXVdNU.RF盘Eal{v +(i ÉetjK]{kLW WҺGm}lk'm ~@o{zLr'ܚWGS |!^v m2|s-l ZkC[[_ה6sh+e@OlDvUXZf +;M^_ֽ=]}C_>ME5d\o[V 7؟[", oUz)*Ar[ׯM_r.2bXeRA6 {`ڊzK z޾zUA>zյb"""""""""""""""""""""'9y\nЧgk4}BI_ +raݒAQc0۰x\>uV7TT] +Uxz$kX;H魺\f%t8؟%Kk_Ȼ15j=[l|L`׸_/riOi]W[gTƽ9幬RYD3*b 2OhN>^ 報*Fo-쀯 ? 3lvŠ8xn?&Z܁'W27T>I`Yw9bQ_aKf =uooWQ]v]Ex7rΗ6nH a3Z*Qĭ'ia|Ռ7|>F +8u`$\WH>MJk1ٱWQ,޽*[^! JSW CRMn@NIq }\ՙUqmCX}t21$N=Fbp*1[v~AUi$;ؘe.{5Z:m[?!1n;#t}ӑI$*}ɞO#JΨ>R`w9l";+q]lw[[a ^f QeT(:a=^;-V@mF>č#|cOgihVV}jƾ'}޸PF uGwE}n`lBML\PXkI艭+L R0=eA.4߀~>0qq1]ZŴ4X(je"ݑp']#E`TzܹytUR^Af)n[~ښf'He} +0 +}=T7X)LURk騸4G[/oCEU&6(Um: ߫^5%[v=SH~ãp{ e5EruU@=< ,܎>,[['bM؎tE8=ֶ$,z߶5^z"""""""""""""" ֵb"""""""""""""""""""""& htʑ>ej5y<6zr;nx<&jKYBTt5Ф}:zIH+*:[Tl q ӓuK6F=uR~"AT?C(nU;4pZMeщjt5qdz؅O|OU~:b)u 7`Q޷&ȩ-@u{/į!z#DC&g-¦׭K(:bS0-ա a^;M)v,1 V&|;u#{T8IRկ>fǵpK ySBVTz4>~d11+C]cCwr9&g0| {@ %A'^<7;G8%)ݕ=AwK$g)uo]^q0}irrώVVR~ jleօՁ#AשOg]|Ǹ B#@f +'[:"&GeV6 #d|E8qƥUFDxl[nSz(}(e90M)gORGGOy~>]"jVA) |(EfAP;ވ߿/Evt=OhDvTmu0g^>?R<ȯzI;}ťҔVP~=yUV0+TkUaQx/Ħvx~:-D;m~~S7jUE;`'׵b""""""""""""""""""""""""""&B:]:;^C9;-,㭶ݏmڶu #:Y06[Nϙa뷸%1)Ǫֈ :'M{;dw!~6UŒɽB?$r>Z.:\wqf='؈!MXJ0e`:C_h 72Kbk?ghä +kHRFϠsNc9~`2W{zɉeT8:PB;mBS~sDDDDDDDDDDDDDDDDDDDDDDDD@еb"""""""""""""""""""""""""""|#|^k[ܒg +NyXtg'}ibP˱ WISZ(=f+7&oo_sV ¾]{w'΢&NzMZ,ֱ.vG;oj""&^jJccAumDDDDM*z-̷uyV6ЅnM ݈3.NF?@'=j+2$THvi㞄7Z$zoSv""""|,}W!vE`6Ԩ]]3f'Ρ{<~ZרYJ0*@車{M؞/1kl`Yd_c_UYgN(%{w%b|ǤFe9/bVᚧp=UGfyo^DO3ä ~NzR[VPAgԵb""""""""""""""""""""""""b{+`;)nOz:;jWm`e^[kZY܉^ +y#`|D/#ʯ2m}]'zVC~r<.OdMO;κ$''bI4׍Pߠ &3-{_rU{>lr)f,,JH魍3ozL/,{zo37prΫ=^EH'[=g9c⩫&\R|X^,13xK35*P*Nb"9s.k뿥}MdW +^H={0ژj3y 6Ʈ򈄍 $kZ~*Vj\}q궧zڗ^&j5+}!j}'u6aߺw [9njnM]BWc"MV$[#nR)52ԋ[;ï]=B|O9J|j٠OR+PWd{yK6;Bƨe:ُ`727ísry-WY +aC ʙP:řZfϖBtr{ {ΔoCsDH^{wdhlT'\sqYR*{+RmavĦ̤O2WTX [GQDʫ!U]S#nP;2/9/W[ +]3V$;z뱒̗Q:aJ>aƶecf3c +ت'v(v*)[+ۏڽ_(Ztߔttӱ>O9_P׿}Q"<^JwbnB* !k7Ln>AuYcJ*נJ=f{O|o#p̷nl Я[44.]έmGGU +TVl@Ǽ ަ7^f:vglNG98u5Xp%T~#WeGW g-|{Z-"(x+M cYpj[U%In0x0%.6/ճq`;|˷_/S Yӥ}<Ƶ¥d6ƥtfWCQH{ɷ\ZТI [H ;s?{=Gr= l7+K޾Ԛ?"nȼ)@ f8}2ڥbw$#%S&jb:2|K9s|[bOAF`gG)I dexZNFx"[mTiT?.kӷl%ʺ*jذWv, ;_ôŕe֙Ҹkg6Nt$;̼g#n=45(X)[MkM[nMCԣԛյb""""""""""""""""""""""""cǯ. 4A"F_*̿Xw[*7K 6Gc+2[).;9B]ؠB{uc[1VI%8'6&b0}קpEWؐ6Gk/DnErK*7P^=$]LxUSj3*)Sok`iĞ?T>PȮG Z OâzhP: ǫ3:aٌji:%V֏`=&Cu:kDj +>h{YMn!bQFcS Ùv7FaR-Ӿ?}==g?]MS&նU)n…Is#6c岵vh4Ŷ]:գ -}5>7|W5\ߓ,!ur{\8܁(mG#Z` +,dyzpYUeBn>cźhwQ_9eX|_ul3/R]UYf6@=%׏fZE>Un^5$x<1lú{](ŇH`%v;oN[o.j*nAJ~o  +]cI>CM^s~NMN2+:(Y7ٵD5ln FMvOݺn-=LAN568*rnekTO} Z vI$i)5y<{q޼kOK֘#ȼ^.Z)kzн!:ۿiN]Nq.kdmvjh +#"-&- k1tXeTZTvDp7]fM7[鮫` _Bz;fj8sUXN%c?wцB|ZʀŘ,vQDv8Ue2=4I?C[_SfR^_ wiGqgF8'+{+d5|^={zl\7/6H x2"d=`{tu2nD`989Mee|yjQ}Iw?ƦBXr&, dgHq^copEt¯ֺ=DuM_NC+Zu|.)u+H~c@WPZ,Rqax /Jj\t?fC{\ bSUWW}V.QPOڙV@뺐2Q>O~ijh՗m5 2^"""""ֵb""""""""""""""""""""""""""& k'C 7[zoYbqrr]]JU}v$;Jj$ijvܟ>!M㲲71#פGqn01:˞EJw69Ly䑘)VKF Hܞ-/:67=DDjFpA`]:SDDDDDDDD]kRE +hŧ]hGgBNu7{Bh4'C lߌ׵b""""""""""""""""""""""""""'XOQ5Ŭc$GNС~7 sbع>rU5'K-Dz;gڸ RP0Q=/]ef~QtVnON{hеb"""""""""""""""""""""""""""|>O}f+utukz޽u"""""""c`Mһ lL؈ѵb""""""""""""""""""""""""""&<`@n{眏&ټ6&y{W)[ikMavjw=IuNMw= TXM&* +";3'z}Xis]P( N^߿s:$]~$õTC好Rϲ:CRH {1v_*;=5/yVVV"kV$= Fa"#=&^T; +*lP6g9R]m%hT3 uu5ܝja6ulvcM fnr}-FBF}"EJڜ{6\(H-}I؈ҵb""""""""""""""""""""""""""':?ǯ8r>fYYIXza{Y/g6~wa0IsUs;dZt{v~[Bp#sDKc]mS*@?{ʦ,< (^`b:u ;\^`0ɭ#Uc3+֏WVb\h㒊/út9l;VRPSCԽ ΏGP#zѫ&\+d6:-y}d紓gM1qM^-d/Ĵ jki£כ+TT mJAԀ˥I?NUxàYT{X&z<c^׮$>DOEk ]} 縉q ]S/Q""':rͬYQڒG A 3DDDDDDDDDDDDDDDӵb""""""""""""""""""""""""c[XUIҩf:w&h~΁HϒBb׾f6oX* פw;6by{@NvMNۙiתV#jC޽ĉ&zZ/ɩ뮵v.$x_S*MoBz6E?"&|/fk30 kL<}&X[tSU_=3jҥ6I:|3Xs'Zs>[4z7I`,{u0G<Д"bӭWkoGWoO7(ǯ˭DtŦǿcl>a>#ߪ"8z"/zz +]ս}{LټfӇE} enl +Ruv'Z`FOD:Ml;C秎D/]$+'gNf|3)ZgaCR]mďnO^G]zˇ Iwu( >z!nItW$z$?~*"݉eEگHl, y_.-T҈ F >,\)\6Uj6;'ǿ/~>]u|)zc~M + !sYRڛV +P;Qdߎ!{uo*ϳ'"""""""""""""""Եb""""""""""""""""""""""""c}l:J@aH+?SxX IlmZ$Uw6aħ5 wֶ) ;|?Ʋ8t[M|jWJ* UP?0!Mk,b+Ʃ?}=kL_#Il,̢,Ӟ/X;mcӹ /XQ ?C5/ǽ6,)IpT@P@hLMCZ$J+Ģԕ"P{F e` +}AGO7g[`s_^n[?Иy<<:p¥ٚTlһ='@ ׅv&GEwR +bt)R I/.;)/ǣ\JE(#Szs}?W5d4Stf$;:8qy~+; y`-'yk3OWoOOiaqXVPnȲ-~UztǤk[3R"ZJQWY[C`@?Q=721Z-MiWXdRcEA,]JHU_5AG6fMe͈am-J] Thv77l+j[z,Ux5 wvYbfkmzM/\ƾ0RtbK;$@w.|$w{' fa6ojTfYz:Oa:fω89|?&X:ضkϧSS+C#+-F=8άY +"N7_mN Fnt2+Ft"(1~RsOǶݫّdRE·d=L#39cUUVRYv \ +q[^MJot/~mqZ\Y^ltonמ3js(Ijz.ꯧ*k`6loc/y|ƊՏUYcc]?I!rJ7[렒;='f""""""""""""""յb""""""""""""""""""""""""""& zg +lH]sy]#&בmA}Nh[Xt}:3K}GO\lHsSUag%n`Vܤ²9K +|= l{1=r2p:dvU}ף~rYWY4=f +V}1p ws8]mYPm=۴̌cS?K3=l*Hi7 |%\謞VrlV$v3&fgrf$ͽFS>ORVXA1aӀE6|JJ8-v&hO栍XEcCd$$fhֵb""""""""""""""""""""""""""'::::ޏR /r؆ݱ6CmInU{vt6TwL#Vf U*R +u}3+%#Jnν;?P7kc-Fu^q+mi]i_/ êʼfoQnsi6fN꯫wGb$""|qb9í/ +@'lM1k8}R#[;2F&4ڵ`Y:zqfHkR@Iɑ!%UcٰH`v~VjU4R] +mI4xvV=Sݵ)&;O }^p*o.Rn7&>ϒ?\O9F^Ӳtײ-Cr1[Rzo":k^@;ο) r>Ko#F;S/j4?W/&\gW3jF,JOv=Gswy>ڬlQ7 ܃av j{ec9jL 5sO93'U@ ^!=EWZ>#i#gVUb 磱q#Yad?Fm兮Ons|m9YUlG˫Ԅ$wm6M:Z,=orH XƻhznKgˏi|:N|;׶55NM͓]kNEaEdt G;xSɯ)S%֩SZo.óc:1<'ScIΰSZ)TK,o='i[PH lz3Ex5ej8mYPW=!U,.-ү[;|i䀾3"꫶*V Fqߪ8zƵme5evHRUz| +;ez3+K'Kn`ކ"uoȣaZ65CL[^C}Kd5H\è-{gԸu##`;v=]NTHI|'wGy#"gACZu) &aحySAk&uR ɷdqڲBu'^m53Uţ5V_ٺzFvL>Exޗy"wvҡ*#ZXyݕhEadaC]Oqm]lUJ*އ~Oos[tUX#\b]^nl2ae>HtN·N#}峱Nc5WCEEpl_IGNg穃yyx\}`/"ZT_Q zl53c/iCk - ٢8o7'娸1jvϱֈkm6@>XTcETn7z#2k'?f$r͗cۦ *;z7 @'C;ȿՌ~;#-GY;_d,fN.N79f*/^Bq(o% +-JYVȣuR6Fƶ=Grdm,jXeQԺ=+,jIsfCQ܀&ij춄6]U5.\*.Ƙw02),75զ*X+:v 'g)r.z=!V)m=Z,k. +^BBzP k=oa&=T0[2r1{l*}u5\\f˪y5b'@ PFr'2![1rSV%5I32/hsP|:EQQP ܑ;O/kec՝Hg؈յb"""""""""""""""""""FdqMEU +U :O{c@ VRlض7NB( ?Y+#'L:T5^v;– n~AIP>{OIl )-:,}קm}Qef(?l-}{2RTQ={Gdr3MZ"pt$w]Gs +#uV:]Z2y`;nZvzX.l˨*Z־Mֲ*uT)$/J$d^2|ƥ*~Żm[\Y%FҝZ%<.'ք1jé[ZnvᄇL;dS<}#OeU +4'+ؖov ~ +r`cƤ5/7Z[8NGv]ϓf3Ys_]>1[Øa"[1lק]lakI9}|Uelチ:uMV2Ҥ-tW{3V{aտˋSRluf0Ƿl:`k3R͕MPo,2(YH70xu2\#@O0|ET vG&zBo_'QuN%`*?4n[ō[y6R v>Aͣ,\ȩ+dOH +3܋]r[l]'4U~FU/Uj,~/^3Bev^V6F6=/9$~?bmiB ;8{  v'KÆP`_}Je%ع<,YYH#UDu'*F#`j3S?ħuv¡{z밟r(Lګ2`}#DH| Kdktl'N}}yP%CK1g;P7Ğeq!++ٵ9. y+kKPĖt.w&6x|[~Sݎ2EdIIn{*jVT +PYL 21 +@WH{ ommg7c_fc]tu?5:>g?k5]Zte$GWxg*McT20eX0UF쓞Ϋ4ٺ(ʶk{bkcYvgU6A)|a{~sƷJZGGGdUH]cvBܲ߷NFJ\W"& +a:Fb;(bWXM%z$hFGG^u./Q"##7V=%Xljs=1FCk +*bNOm| ǝᵿ7f9 ͠zٙوGZ>[^îԾ/lWnzT/OrLt[V~7q2U]z@_Ogs>!):awmh l +pg[c;ͧ:*hw,OšLƜNmxI&Pv՛b6!c \4O-=Vl Qv=> d>wMk3꾽ZIu@O8:(f + Ӳ;ޓ_X,ͼsaUtѳo_ׯםngdvu+o[=Q tu:,R.Mv߱R{o8U֛tJ˕T +~̼W/HݎWFSGS`~b`Hɯ+*}gkTUIx_t_VC׍XU%M,]u&W+s Q%H*4v.} +!}ᎉ R l_}xGYMD71siip5mg_ir|JeX*g:]pܵ 6/%A鵭Gm؈W!uc%RtPԟlDOk`g/!Y,B1ُ=]6e*uW>?:bG(GČ=TGb4Dۉ7ގ}j5>Ohc!~mL$4[G3]bǰ +ϰr""""""""""׵b"""""""""""""""""""s>-ڳ81mN>E>wț_:/u&t uoNbgKmy5=(mqCfehF@|$;c/ &RjaKPz>=/+a(*.Gu\So3X sёTzUtu=@L)7MQ'S3nFE==UR= +[]=#_P^YUzI*ZG皙'_~/U9 yJ.I^C:9|F Ҙ#eƘᄎv==dr|f^uA8޺UnEOA%vg-w10C}6]`@mP>rlvɽЂ TB nX1cm&_5^+~Qֳ632GRWJ"o_P6~CrdbpN^߀&W +q@`scWjCxhL::u)baI^W!C=@c-o1'R:OIN>ǮF(z .HJIoO?-^t@b]kߥq$WS),Rlg}&fG%`YOE_P,$k^GĜq _MmPF u-kZy'o!~+-Cj6X/nwG[U޷Cеb"""""""""""""""""""BsFo!}VԋՑ(CK>r]tut};ۑNn=yedX/J7JP'}Fb`bWu[òVeb@@=^`pte]].ڀ/IT#_p'k +d:%ʺ餂(#[Ԑɷ;̬%TYWGK`1;EFE|&V5۠@e hP9WX /Mu*F$.?\{ؐ-Б)S ɀoQ#gJ5mS[ўBv|՛"BG~mS_G!n`t+e WOIb_}ﴎ-tӶ[::kļ}}XUY;l lngl~cpFu֘hn;Ͱ9P]&NӠK7b=GgU2sP\PUٯ$/ ۔i\q[ +h>yU86߃ Hth0wk1 7|Mo~mqV.peyV+{w {kO?[@҃EyeXjş ]n@vk*'$'Jm!zdϧy徴G6cb|X#jzN; qqv>-=u!RTOtFe [&EhA%(v0q˓e։F%XYa߼uuG,;h5K?$ dqHisWK?භkLtqYeVljI(= b,!P:qؽ}  zN$q98etɾ۶z{]#GaKw ǮG<ܫ7dDDDDDDDDDDDDDDDDDDDDDD׵b"""""""""""""""""""""""""""""""""""""jr9ߩ5[UbBKzzsG#NJ jG`6bAF6CccUUbGߡU}YLlf5-U讽r@߼ᅿegD~~&%YXka}"ńna"߭Ho:ϳp2_G~ۭ~s7h[:*FR^1nb4UTg5u}v9]+-F =DDDDDDDDDDDDDDDDDDDDD@еb"""""""""""""""""""""""""""""""""""""aPا޷ &Y$Nk<QvkV(hD䒠$ #}'P4Cǐ0Om2(ew2$ߊvr~gDgϬ>%lum&|?وEt~<yg8%H?b~=3./f㭌e:>ĩ7>d,>?aOe?l>-[5| Kܣ;YM~Չc& MvY[T̀6ѵb""""""""""""""""""""""""""""""""""@c4qY'EMRG!0[k r~t>hMjy<\Fe:*ܞfEDWEEkc|}۷ضdV kr}ΣH6X>4::;u$qrS.] ޘWn6қ+#gkr01먳*+1k6T|`;ߨ=c6lקUmHFR""""""""""""""""" ҵb""""""""""""""""""""""""""""""""""p#h+?09 |]F1ܑyj=}'F+UѶqѯɂA ڷIXq!yzn0n!Uל4.2NZ;Q428ˬg9R{ gxYJ‚$忊]W}izQd3UHJ{5Biqw-ȕ1q: E}Oܒv}o 6%v.CY~OIT{'^é[\m]&J#=4>IkяmkvP;B34pf=nn^=1 ;E߷`Gܶk[ ^4>ޓ<^&yt*^뭓Ϝ:dV:Ҭu2ȏKoڿI2ij@lC _^kb:|uݴGF]GFvEΕg's#!T[z,DDDDDDDDDDDDDDDDD@ӵb""""""""""""""""""""""""""""""""""kcY]H{\r޾J(MFJbVXr>S4DM0Kخ-t)߯Վ. [Z'Du:}d|^8l/Pٍ{ Ƅ-DMW})zըER{oz4. :+F"u7CdI:`هs l)=UY=PҮ\cuyĻbZzmmU waɒ +@ rGӿgkcYjkӤb5Zh*:X|~71Jo2 zebK }I[zAU(:T@cqֽRT?d`[,n/~g~?jk'ZE'Z+$~6-XԁG`b&wtw0ߨ#&fb*F@+U>`z}fh+P;=Եb"""""""""""""""""""""""""""""""""""""C=vbcWYk ?I ƑIbu_xFWoԏ9ʷFl}HOpxH̹B躃OP ($7?ĵrV vf-rIյb"""""""""""""""""""""""""""""""""""""|qr6VF >=`UǡJff;,ܟIvZ]VH k Id 2ҝh6pJz+ [︒ֵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ׵b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb"""""""""""""""""""&4WڵgU@'z׿mDDDDDD(jV9Ҏ<'X8NwDO,؁]kr4`5+sZ;r :QC#/ `BQK0:n|ҤF뾀5(ƾ,}=~Zsfy{۹: ""i')[KZ͕'}Y1]zYFPmK9lUפVJw^SCuM6R=ؚ<-Oj[ZQkbB= _.R^6*%͊yLPJJV=4cRWC[=Or=!"" ҵb"""""""""""""""""""s?S3[-| }u; =:5繐ry#g+~._ĭz +,GDjʓN㯨)TzOię|_Bߞ޶NGCr5ǫ»}Ұ66}>/ d>Xf"\AWR6U!ڐ=;*0_+yLgR{^wQ܊< ]un CR9 +lo>~-j?}>fL{>7-e[ +ūث`k*BSR0QefDܐ>>$ͷßK=H6dh޿169n[?yVϓE4[~M[} {2s_1Ho75p-Y'`=x;#ŮvPFV:dڽqos#W-E=ICY^MhzOʿgQjGĦ`ڞ&o-zȮTUApvX0̪CYPƶcc a;}A0aca*}VUp5wzͶ,ŦzGzva垖I޷05董33. 6f[Xfߨ[Ĺ8o!-&vH}ӑM|N lUǮb6 ~]Y)]m*lU]hHY 7!V)^j@ +#j@VRq\F\[@D-Xp lw'%>Hez|Q~sr\ܜlkE)?@vkz +GRL:/\7jrWM,[Vħ9W}Dmmm@qV\I!=czx-<}L<ӌ(}ET>cg?3E;>[iNtkIUށ:79\s0FűB)uMvl=Ο2iǥ:E޺@{ߔ*-MSjUշHU=mh79YԌzàޙW&#_!S֢.frM}=WXܟ)Nq +Sߛн}0 v~/';3VɷY_NA$3 + |JF^胰G˿ҳyM\1WC8֯ :re2lJ|kd63UX=;}~sǃ5*_YVM[;$=f+ћkЩn3[w#a7qB}9ֵ!}lP=7ɞ5sYl5۠IRQ31*5ߒjpA2;O~UyKڑW8Vf^ {}o's95̩ؔ Ӓ* Hsռ76Zm5TQлgfj],ȵ ⠶X4KT}>!v$2.o_!*GM'^S'^P_ ,HC$`>V%쥦uҞ*7"Xu+2Jq[.I?e|ƧضpbrS*NjWCIM9si6s;F6:"2 >xKmvRTOh﹡nC 9HjCQղz6Ǿ=$}Vzw=䅘j\l{ZooYpu2x$kpH-H3)8GL`KMifH} nI3ZtUhpý^&3*!; lc( +}$w#y#"K8ܠSSG=]]jk]TR&p=aS +v:@<3fN3וZ´$U|[;ocG#^v>EVPtm@@w'R-1P+ǥ, ٫nw:ɔ2Ktun`hdֿ~l"אGlsOտ^=;}d7!dpA\fu62(Nɏ}MSFPЖ%t]uuüxլ;1zu@6;q4.VvF>U=JEJȅ:3ڎֶ53aYhKeo]?g| |͞n3g @=鱳kQf^ j,Vzدeqȍob58mlo5>n @:~]pٙwdV3B%GA;/Y#"ưYGP&8oh^z67۶y%Ej|^Y`uձZƹk\fг,PtDү¹)aa}wrXo$kSx 41>XBCPzvx&^.% +Ǥt=jᵡ ]=fےgTtKlhSuʒJT|]G{ wadd'x|dH|6E|/By]TSw{w ]r_eT5Ř}{쪳(p֌K+J="8 bd_ku@fBE c<=O-Zz"HGH,8|Od 碒Xխl2sadt+uclw0!n;3(Bt0#`y5 jlHf?5ye cV^P$mvQbXc!J;Nf;:QLX88ܽ]cքŬkʇmmepr Mv >f_Wk֣tW ɬ]\oGodxnp /^VjV5~ڛmy1yچWC﫫רmkyW/źG"Tz/lw ޟNHʽX!V5߫7S1' /×qU +aMN9(GJ%m1k^Yqza-e{wP~MJ<)ظ~y6b8zn#D7}d jfUF +LI$3_-0[&=ҽEuձ}:xlKP +:BuwN~G-^)2w|,v:DvY VC܏Ѵc{*W=NW'E +rt|5*&: {ߩ?8jҫyVp>"UINL<;_^Eu5܃ВVҩbG,hSVgczuH]V}Y+4d۰$1v~X|-o{]k2*BD}@b+![]@7fv&2ёbTt +_]67o[en_z= u b:,"p'DlGmm'=It?ׂ/Lp&2;?N&+@&oG[7f]rjv'BNyط +=ޟ/*=CCD-;/6V] SӠz}L\n^:EPR-ps׮O _V! }_|vk w#z޿LC9*s*WM4vzOWSٸL֢pqI2Gȏcr0/H'rUD޳%\=fef-:MgK~f;kS70kD R7XE fH{:1wTҡw """""""""""""|#s⢠Ҁ=};z3DDDDDDDDDDDDDDDDDDDDDDյb"""""""""""""""""""Deey5-MG͢K~Ttt@ +`>ޓ\sy9PlWMz:v0p6En ]Oq~oϫkf,T(BB~m˾^)z +I(1WRtt{OZ1xltOl@jِ*gBu0$" ']=_UqBvC2) Ԛ̚+نoz?-3ν`jkbW`65=kjWЙavR)] ;tֵb"""""""""""""""""""CnNW'_/ `PR;kx|vf.o#V2<-CM:4P{o4y0OEO[ƏFt}l9#J#,v ؙO jصtB`0HAqܗ~OEc$}Ѳ[^j}|,qryC+Xkz+ɼ*dkBWmtwxpicZؒ!A= 9s1vMvJ{~j;^xYk);r-=}-׭t}!Ef=ࣱ]jXH,>sp/.MfF-P !:@61\솭 TTjuO""""""""""""""""""""""""""""""""""""""""""" ׵b""""""""""""""""""""&qx4 +_{lDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""ygTw:}>n|ŵC#Ѓ8"""""'G}: H'd܍EC]c/YP!P=o[j 7ԙ!WtEMkm}(]Pvﯤo[b"""""""""""""""" Եb""""""""""""""""""""""""""""s~/ůxWt8koZ$DDO/jWā<}$_~W,'[с稉ʻuR TD u1~S[\b9=&J5v/R >']JW(yuDDrֽv1 Zo=I!ӛ+(,{bOΖ"""""""""""""""""յb"""""""""""""""""""jr9=NE/L;**]b3 +6|MwdklE Y, 㬃}.My%7R:Sb""|&jbgmu8{O3ԇQ{w6CnO3̪DbSgG>+zoc5ZU*R$ s@lt}suEF}[j[M#~ GzPz:tΪI jM 봌9ugqڌEG>q:(if*rh^ʐǧc`};Sx^2L:^EbCf'qF؉tF5fI Ԃ'!vYȡr2^T.sX5~!t3cc!7eqޅVFM=:P'K>פë{,B+bbO~ǦbطR1n}DG,5W?*Enzӡdc֙,^a^ĎM 򲚴oONzrlO>n7Allzb'@U3~C_9(ƨض%,P),N{W_Y +Kޕ/N3.Go}RŴm0c`#>ܥC3m kO>%YŲץCBtOЩGyֵb"""""""""""""""""""Ar}$ |G!Ѐ?b~?s8ދM\A^ֽ{Ny9\? -s.8TM<.GrCGcqi4U]N3j6=A9Lڱrm@z4;5;I^Fq _E?~O-yQR_(֫oMjWWk*|@ƵG+&qWZz-o +6@-Qs6ErZ)jwRW74(o&vuӨg <FDuv.Gګ[:7ץ}w[3Vy~E| rF=LI+_ 6q -ImM/?jxޜ]a܏>C}Q6ey/uԵSvW/br?ϣby?c̙8W/Np._#/KoqU͗}8g]{60TrUɡM/o#nJ8\楷Xz+:?++²&3efXJ: ;;k2rRvPm`\[VVߧ1p-&+t v:cC1y8j,w;Oc+~i%!91͸wZ2Dqt`sφ_eެ+ -T%`vnbnᬱjWM#.?@tOdO %ɽ2HbNă}{̾!m+Uo*W)20mL-E > q)c.3Hl[&pR[]Z*H:|/**d첲7GRU5i5Վܵmfv,[}A״\rXW!S('o}IsOåZ!SG#*UcJ?6!T~$|gt7'{z܁1qn]QR!Km@mLjPCFX<BFK2֘Ul4=;1BŪLkM}RTv4}N _N몲t6::]MtEՆ u|sV<\:ؠ55m`$ǹ1fx`f/rnZ[ea $pēGm[bZnqXEnNǤ#>Ss#`0o.89O&6%8kMiZzE7`:vȴ*lT{46,Q UzATqfOy8aUYק@޿㗌Fbllr'ܚ##"|Y#^'CZ8OfA{ #WJQH!TSI;$ܒ{1גuea%O#SOβyUpvXGH䉏/dLDJXkX]i[}v#|[V%Y_RA{Lmp(ʵBե޴IjH'.qڶp5 ń"mT[^TIbG#M~ee0вȫ^b*'D>bm9am5Z=_xo޵H +"XvC .mndԺasJE +~soM>' LA&ce`6 !s16+WZtFz!;16e$LVim]Ue +͆0J;jJb::K371IlDDDDDDD@еb"""""""""""""""""""|#p>jtw>Ϛ/lvqUEm? =aﯾ>=`w'luc,L^,9_qvgA'e߸4ŕ(U\ /`3әQeT5t ZW{uUM}l ]uߡ׿< SoFNNc E㪪z%7mRtɰogePIr)jhERŁMeIވ3^el.ZΈNʍA'b""""& ġo*`{v!kG:C' %g{b⹆a:b"s.)]u2uZҤ!޾8aWbz6E4*CvX|zzOO^w}NcCţƲ{,u؟S;׉~|FrO94jv% +KhSFUWcՏPWZjEZmt6℁r|&zmows9t81n[UקSE"e]}TVV#~)e=Q4"ҳ_^·'?fO)Q8}6W+?fEֶl;*А79R+;Ky^4|V|mp[])Goy=}l,4zU +Pti!@H$wDDD؈ѵb""""""""""""""""""""""""""""Ec-7dcS A70p(iZ1Z]Th fDM.S$(!Yr(:zivD"> V h̹`L@r汍6*:8t>ƾ{K3#[ڞ_K -׼er\rcy7Inʭk F}5tLЍ6`1@ g¥L؈ȭ,?>WEzWbĝmt6@ٛq5(||[2@#{  |]#% FI/0_NSV֠c[b#ъ0{l.OY6=t '7LEȰO@:YG@!Hy|S) Wu͌0e=PTM['C>oͻ).(zX2*cijͥK= Oo5jߕIwU +c],=x@cmv}ⱗ$Շkzmz6&V\L?3O1yU :uStwϜfIB)#A؟e>̜n +qWT'C[?S6b"""""""""""""" ҵb"""""""""""""""""""""""""""""""hs\g?tԨ7nbBܿ0jOŤ]*ݻ'[9r0[16! !Rig)r@"l ѯ+;mlOxs#ʺ֯ez.[3zzk͑f56= Uf]).MDDDDDDDDDDDDM>[ ,KmlZރv= pbS`%Z$PTt`OzY|%]M˱†*mh7x!ңBҨoQӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb"""""""""""""""""""jrTqMͮҀ 1:Ҩ$ 0Ϧ`bVL8e7UL;}{M[]NA6 :$ rPaK~Oc7u+rcXΩ$؈IQ .˱~tR͘br759.+(niWm$'u0сQ1 +gC3""&;\j:URl3u< Cb+@#̗^5mmK3$r+ȭm#e`v=2DΧ{ =Ήh/Zޘ+:ө%^]imLC+B#,DÍNju Jjtc""&%ʥjlU u} 3,DDDDDD$4'_A%}:@'G^f'ϱ<,w :A_'dyvIn==@>L'.p):w]oizb'́51辬gVCBt[k穳6UYRS%H 2DD@׵b"""""""""""""""""""s|IqH/Xn2rdWNJkLk<+e$t&/)ԯRFA~s #er-D 6']mbm笠׿$?/bZ57A6zMg%JDb䘭`?%\UyU]}9N\_*- +ʷg_U^ʠ}#&Ir/p5;t?`cy 6E?# `u˸uƯ&*kײ:F`z]$g( Q:~s={\<-9l#b*mb4h+܏p$ qx^%Qk9gY@iT]@L[1-GcDJ{b izc58~o坏٪חu1z6/!W3]5ɎYgb fA}L7xᅅ5T({ +vmyyk #\ ڸBֵ߷y'NBV앤PNP3[ e1e~#)\z[#KYGh[)[FuZ߼豼ZK(]$/£ IcE'Mcl;O>[[yvmTřRw4?"['|5ZO[ ;9W 4 (@B,QbH*;qoyHh +miHVtZyJYpYҮ}ձMZC'*5;W KpڵLkX^C2DOyL7vjUTnP5rOy3e[^ž >3sv/#Ʀ0YqՁ2c?~&kyJo.$ >Cu&t+aȜ:K5` +AX~(fƦ1@`E Ըڑh|^cViR6.FBjV,!w=d\RTjʱc*?C$b""еb"""""""""""""""""""Cr|n^V~&U~_F1`l^q뿤novK +2-6JX@V`U[j_|1B.M` .{']뼋g/*uVm#u؎-iUqzMUkeZܸu{ N7ՉRK>E=z.ED}~I)bYoOUTd$ zy9 y`n஗EA֏}{lM> ꮇzk{ov-=$1KklV| Pm[=1f5ԃeNR"20|V·![4)+HއV2y, +趢\=~fc⳰y+S+>0T +cB{L? fW>[)Ђ>z3o2˔IJi EGlބhh}fV_WU] :*=aRk2FAby6X<3%|kbsIllN6(Fp#[1Ἔex+k}ʝGc=JE:}I&|cVu uo]H +|3yuU嫠b*H=Gy+0snk\ch53'I`+{ ~&e.o>I9.X +=?!W 8w_0K#tav66;ac[b T +:5ߨϨ5O3 *yEXI_{'gZИM +^dzH*q`7rrZk@:[cܝlv-C6uu$tr{:E$?]3/53&ۗ,HS¹XOX9g"%6B$i7QUnՒE( +(;~?>2|!k%^ Yb[Z-y0{jfe5dYKPظ*PP4~-k^. ya&o{-U +]3-|^m\g[#cGI,,V-װ5I=?w&.y/he6X6}k0q<>oUxUF. a[3BU].Va-k:Q!9>/) +T-&UQQoRo^z F A}-%YGUfӲ_SI[^ʖied SL`3o(YmuPQ ےUt"cR8zI ,$XbHolEȴlC}G9 ZWx'KKqܕy-(J+2탇 T5 }fx[51Wy.d~:vA%_>cXe/տ10~P? 8}'1ܫ_ +szًԦ5t׼n. 6cdSj)uh.n.b l.? *Z]&Ev:>ZޏWNuՠ :P1]tWudsqkpm{zJU%Xw&(iAoOXE Ӿ뾷Rm`n/*R+~ΜMjg*(*bOX]pY 2y=wSyI:PO}ZKW+FM~X6).l*kH7c'&'*,JYi`<_[o-ǖjߧl7 +rk4tzİ=-v X| +q[V,5ڥOQR m׿O7ߗn&N9RֻrU:#Af.eqydgk uu9t(vj9EdZsUyQ:G`u]Z:""ѵb"""""""""""""""""""""&7ȪΡ{̑P޷^O\U`J$~?)&_(:{!f(=6ZzKi{Ah0r]VcaoG}T0$kccc1=D-BDp=gwx ]C(n}o[72DDDDDDDD,Xl)O/wP= 1_NNWקP_^ b"'H= ҵb"""""""""""""""""""Fr!q(sVl+U,3?DѣŢ>KV@Fr"Ӿ5oLj*뱯*JXWZOH]N)hZPud >MZMfWqQsoz;XM8^u+5zQwڍd\2jȬ-6t0cG;&7-e@8,+-4@7Oǡܬ{`Yɑ8#wLƖ'Ws:3ǿC};כ~_w֦K/<ðpm2.|C\UQcيڴE_:[g_S=%c[B5J[kI-@h>W3q-#P>ݜ2*SڒY|c4[[u]+T6?I&7!'1tuSv$j$S1쎥WQ ^BxzVr'(ߌlwZ\%rA`ư>*7wl N|˫Ŭk!:׭~=3Cz*953P#tNwk_Y}uc^~dz=oQF>zekC &ԑNZyIAj%{03:cش,:W_R݁@0sk4XmN!>Dv {llvkkayhNYio7xN_oeen̬UD:T:bw u@' axf5cRP,XiYUDf~3/L Ef8=4}>U0}dۢz-W&ݛv K{!Z?15S͞&\/1sij)@,A;8lk`MNBۭjɯ7Pz_Fix˔}ց1u`M<,\NCU%w$J.f]iIu.ފĝACc==aYHRTB7=['qbWZX;ukZSxkk|ޢP뫨knu7Uh_k~~Ӫ3NRUkI iẅw $DDDDDDDDDDDDDDDDDDDDDDDDD@ӵb"""""""""""""""""""rQNmt\ 260RuQW)s8<+*(%RC${|r|_N2=7~L2Ag@`, +YC2w&>U\eablAOHuhr̽E`{״rwWo%c=*TZ)V#cZc~kל7Aٿ7[#&c J2t5Őo@.^=ؘ k$7p@5~butԺuz3O#2L[qZ+CV!N4={Ⱥ +U=b@<5?y]UK56Pl,y}'[=oSv.f5ܻ3jKIkֺw]3O43Y,K2ylT7ufъ% :Q&z#+ZY-hڣa(ގ&y\wPכEK]Me;;gzqm-jOW-{M9 yN:T1_Z 4T'J癸ΣqX5hKQYHn4p/~vr+QIK 6P*twǼ8l )k*ê{:}`ukg,|\Y+\=uȬVFo@zl cQ[jBHѓ8Ew-ֽz{*qE S2:Ո#}JpYm|U +s H 183}6Ue6V0}Bu~S&U`Jdwfe@X*Niq,UcΡQz.Vv&9 1 ?UnUnAHё\})L3uۺ@w%i=-h*--C'4qyg95Zr(_!<d=':ga&0h^c#*f-UuuWffoG@H<;ne)v?)fZV]:l`JH?Nz\v%46@v_n#HGtV)e rwŎ&kEeC|,, IO}7UdV qcT&H#)jSIYզ^woڈԵb"""""""""""""""""""Gp +/US0n7ˁS;wv.@ + f$Bm\^)|u`nrwi}Miǥ9Mbu? kƷ&DM>OkVeW wO{MB :=DD} ]YJ>$jxkt'eYWoAĂb"""""&W.vV=mDDDDDDDDDDDDDDDDDDDDDDDDDյb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ׵b'؈}'؈ + 'Z`v#b"""""""""""""""""""""""""""""""""""""""еb|'S8.̸d"􂂡/GI@%򰯡krձU?)* `ȩMu[J:'8st]PI?2έmãzv:?3Dqlz>Iyw jw'NG=KS`mkca:#Q1ad2%y539!@u$ߨפKmUX %֠7pwz͎*;=U߫-E1N_C3brXV+FC# 'ƲdzKkHI>n&o+Ǖ>z_2ؖJ7kԯ^\-З#/I}Fu}|=GR=Ϊl^0f3)ƣ3'H2[+ڵ;_c$q9DDDDDDDD"n-b[1Zl@uooie۟M Gt ʧFGQ4]/Բ0QL'8LVVS 4gG0yrS1k$Ph=cCti]w-jFv: + 's9{~XͶ\g.cN""""""""""""""" ѵb'5k1̱7owϤq;e`Thlj>d&̌5;7aޛ7NK)pȶVe-`* .jOkzn4\ 2l=,ͮ/NCrb'.^$ϵ+@R(:H|l{J ^gRԣ*5u`}M71+-&? +],GN7M~&M9L Òʳ!?)Ya7b:1,ӡI6+ ^;$|A =GVd9c\֊e)Xf$Kw%0U*5BG~3sVVy\njRd"*릡}^שQn76xGVj1VA o K _Q`Ic'|L4G}58W6Uv.%\!|@{v}>5ǻ'jk \5}=iQbYjeUa]JރG׆跔,B_"0UďyO| oH,';nGV諄K0]w>FU5P[Plwcj H'&^cVa[Jp}Jؖm0mwDDDDDDDDDhmCLk6:TJ5=OV-{~3D@vnUdk,i+E,X }>jR|~TzV'2DDDDDDDDDDDDDDDDDDDO. +N'@luD ~P z)Q9Ylf)'dI2-`*//Qm :@Z+TPz _A=De)ogP{YRڽ.~>U@{~>_'Z*mY'jDJ@  C>SO3ȭT@O'‹hu߬;Of;Gx[:rP9{v0M` HWԴSUeB fl޳>:ưynU"f:Pz~}~muxfJ}Nfh&,[C>DDDDDDDDD@ӵb')ery +,|OI֗]~I98^Um~Mvo@tK+A:#dy5ܞb:#}@]!͉Aw&,F L_o*TjX|{t؏]̶QEU.̍}iQod_I&*]z:5;,=T0,?7.].BIfPI_=}G,+'C]{3QNIerD+#^MVX@bjVdUC67mz|VQsC/Ҷ^-]u&vArΪQz@*]HG%WPcS͹5Q2^멀޽uݏUg 7<ǫ?}uvu +uH+2J!B",H 7[5gK0] W +rMCVC[:?c/2jk<_[ZS,DDDDDDDDDDN{8{-ɯ3dוܟy a^=]U#k<:lPD}gUy Ӯկ]uz2DDDDDDDDDDDDDDDDDDDDD}ɎeUK1'@6IN_gQL +,2/vR俞<3iȭZy:^C2{*(m:&h ͮ!k؈Եb'W%>aSLU,d7qؚ>]? >EzlT'>*~0lluZDuA9¿l[/%𑕠tmjYd 06H߿y;  k:+E  /R3'YB;^lX +)ߛ_XL[ef^̏=[]kR(PAM>t02|dO"ΧO{~qZ2ciLKꭺ]zj#D([sVԈ:2#]zؖ}8,Gf#zXR=D46QC$}P 5ykE721r>M57j+*I#;m{n8`1Փ^ +KFrQbWd%Ne:e?Q6$+hVKƷ^k&ɥ v@;}03iqȡ%HlDDDDյb&\& kƩ\-j=VZ@uنc1~=JQX@Nλ}6I?c~ +az+o7{o, ,[+@/ekn5 ڤ6rq8l,h]iAncz~+˅Jl9Qfu)]XU A> m3 G_!WE]*6h?-sF%qG;**}^3QJV\튨Rߎg~G{}\F몔CD k~|״` ymftvls7f *3˾zu FaõQ"Pz@k2'UrԢ$ +:m믤Y[3 J޽g`j&D*.H#gɨQeJQuҺ]zk^yYzdRȬT|#r!||Do߿y;T@B1xldEbIv$Kܒ²P?PvO}·* Xo]~ݾr^""'OuQEE^m}A:=2TץF~؉sDDDDDDDDDDD⿊7ꯍҎN5ރ+ Wl[7͵>?OQoo5|?fe(Yĸ6bY؟~'Yr? $}z""""""""""""""""""""kdR,?v߅pnRjtTTO~> bؗr~{wijz\ uaFxCȽmxW*!_tq׵b'"99\&(z 恮Zos%rݴ뇮OgT7"K^^l.oDkEBLh~yp\nG +jX(`> P{&\fbmգInOLq1Z6*X GEF{:#j=Xȯd, 6vVbFF{΋Ӆ]yv+ڝJ̭;1Ngw>N^R$~O6'vH?RI!|J]PX:Pz{GQ+jBW*eWuc#8տVK!12ⱝ,`78<[UkV5Şz:{]wf:*O''᷈12rA˽RvtPNe͎߮:ygRTf,vߘvYYUd`zyK^*:Ǥcc~Xa׃&=KNFbuvK)ZdpMeϷ\q؋AN^}j9,|az5UTy֦`I,[i\2Y[V8KEjDofnKpp,L{/m/lf*xs--0*z 2o.ͱ̜DgGebY. =fCĤK`WiB8uFǯBqwrU]֭/Ivzkw4)QwPd46Os9ea;zR-z{tQugXkzk=O]AfKp2q5&=jr-PǭHTkz=-^da,cux`a48Bܭ8X7YgehՉP{"CwDDDDDDDDM>[ŷ* '< ]u ;5!ޫ o=>23_IçLG>4W3R=]WAoÜ~ 2/\veIDDDDDDDDDDDDDDDDDDDgOy3x8Vyk4TCxNNճ3?i59W[%bum^Q>[h? CzHDDDDDDDDDDDDDD@еb$oC l,AP$aMd˩e]HmG׸ pu({qvK 7=u>X6QQUbgu\ř-R=My+GI^ڛmbP!?e}HsϹ6>s\/O]v=OY$o͜|jkB=&.O|\6FAƏ":lI Fv=70pMaӎǽuP}ŽqAktb!#DRq=&9+>aR r`ēݴu3qF7Oԭ{? fp7Y:IpUNҶvj{^/mI H+]e2vXuzo}k~:2m7d v{+øYx2UL_~7߿YLvL 7]oD@2~;en`1.ɲ:BƨHV#`lsQc! @K߮;g8KrqȥiAKurbB]5zO2{,D Mv>gpĪnoݱdoN?'Oź 7CWك"""""""""""""""""""s-o0?]PVY)pXub>^ݘ?Rf";'?Z|#sd7{ >A_; v7>DDDDDDDDDDDDDѵb$9.̷X(X}KkczI>_owӽ3E^U|IG1׉YåBNv2O0ߗ^;Vtl~ۤB˜SkӮsο9e+Տa?D"""""""""""""ҵb')^.9gumYWt,A: {ovK *+8"ˬcnS;2wos|/KM&S2Jt;翳d0A\OꝬpbN6$,*z޴T 5>cirԦUOj^|zi/a v:X6Xܞ XjQAb0`v ;ّTd4YbLGrGödeٓezz;&\ AJ;&"w3feSS_sSBhnAg^~g3sx?gWK69dXwoKK6yu ~ {PD46nSca YM~K3 +ll۶ tD{ɮ E|7QIe7N(վvHW)^r@RͱFud'3Xo)>C0.l+{{I2yiMw]FmS.kV6s2iٖROmSrE@6^˛umc~O|kqh,`z]Tto܍Or]|E-a.Q_,{IrF7.Ųư8e?m{I0\ս:N]V 16oH1s2kᐙh+ۥTaڝvj~ӫ]qyOY + ؓWg}Ǿ1Vz-_Jg`DDDDDDDMgmm")?R}|=^g5?2ڪ=Q7gWOiWȉxDž6pI\R^?d?gQ9~&U}lOtqK%b"""""""""""""""""|'Bq'°gSvqٟ%b$x 9RVcET';y&]e]{  }fL 69+pB0pc)AP1lvH}tCD[侀6>GQ+>D-ਾkkɰ:'Zaz)ɻ)Z ?S)/p5>F_PzԶ+֋iU?9:*ɷK-ΐ0Vem={/~9ZQZ ѽv_9xOJEe|4kd +};I:uxe6ZhZ{9t=pIrֱܹnv{=gr]]Qөr !:3Ŝ=TeuX)Z"GOC1rlrR.[@C&?EWc=}uggS>ơ_1ot6w֏o, "&ҟmOpY>Xr)S@;#KcNVWB +F""""""""""""""""')FK" eՑ`Q#:.?3z-uU?1";gIXC)gJgV{wYEɑZ[WPA ?"""""""""""" Եb$ +rï +ֺVu _GzeZ[e*+YJFã0=q&b}7ZWAVF$4vD{7lU]`i!>^+f;λtunNM5QWhcL?,-j#'MV [t$zf["rZ$!(:SY0:ju( =nb$rG50o^PwOc{Uf!A=zn{1}x^ +[$w:5y^ZuM+AvGݍϱ9?r9_ qU>IëikՉc&HDDMN+?_;J1@be>E<cu&?Mk'~nyI> #(e䷙{Oc'"$W?[y+%պV2AA +r#Ǵ3;w#'=W;յb'$>Ƶ3}~c26ҭ99[>.:[a- +#n6m 82f]V[U,h2~sX vi̎3Qy[qnɭ.RHRTގ,p1gkZ" +f\Ns:tԅ{[R;ۑkj5C"+Fv9o?o'79Դ9hvY8WiA(vT#'ǶfgU)t*=nF.'2 x:jK%jSF+*K(!3W:t=?;u)c9ymcgUWX6-Ik)p;޿i)[yjYB^TVTA#9R18wk5gH`PrXߴĿ*^Էf8H,9T"B_N3՟hZ8i (!B;&Hxo2E̵k镺HOomcddrRS6NU[DTOVmeߑ_U̞^:} (>]DHkgs|+ۭڲhz=ƈ??Y8j#/zPE{Siȣm# B%:vIR\z_}j2wP?bCkR"eWm&ErH~5WWoI/71"vyݻ*3G<%u6ef2#H;vDDMN+?&DDO93Z>e{Oooc>xW<)E-dVt +ؾCٽD,$;M7Z:V7) ""Exoټ'ļx +rz_T/ta4䎜foPGi=ֵb'<̣?'>z8TH͊x\69NB*LK0,t;<6 V[q*B tOqQoݒҙZРbtv1fL1*1bz|:ZHW7cOGHnwfY8Q] )pzv +h;+@IWkm Q Ҥ{?x>bpa*I2Uz*;z,Bp98ve%B~-vwFG"ۍTzzԎٛR#n)loyU85Li3{BZ6ΘWc{~!|,`}Ys;ר I.s؝l?߁q?ȊvL'÷Kەc;jh }"΢4z{L/[[u/Gw$ڒ~>5dܵ( O'OM-Vukt>ñ?" G"A&PTaX |)3qj˲p+ؠ8 NHl/H+X[VMv?HacBmcuңvt~krIη"kEN O58֔~Лq9O`]e9N]K%~'N>Nq=v/R#؈rm`qt̴~½TU^IMJB4+_7V""')KpשNs=Gtx94WC =׵b"""&ͦRE0_R׼4+c5tDk]mϱ_7:>2ӡ 31PdTt%#c:#GDf7%m$ eߧc}ډ+**ͶkgD~@*z*FÊn5 ӯ$+ʭmee;B ᘱ__U:4DDDDDDDDDge!c6!lSڐG JcV֡UT*"""|WJ?rO (`A"p]areݦ! >߬lfUq~ ;b"""""""""" еb'9W7fYWUT+l,Xk]'G﯑(6Cb6R"ɹ|ҮH=$GwiXךTZbHRk~xr8LkՏ®GTzzϼo'~-FE]}hTfiP-[SWgC2BtAy_)PK뼭5 +b6n}"UѱT8` ;}HrYYΕGj 0K4u41v3?*#&+[1; |M7Hh-abUK}{\Ȫ,%b@6F=d)ݗqT}Ory;о]7u66[8_´8~XߟgVw^8=H> #cq>DDDDD!.\N6i( +-ZN p4ś} rӎs%V5[Mlu7Ž>Ùizz׷ k'[׾^]~N8|'C 'xlT|fE) wֻ̍fbgdL2Ve(թPzhbW#F G X:R:t{͡gdTg^(UL{j;XTUAr\G&UKZ̗W2ֶ}gC!(861[WmXةaH}ֻ,Θ)}gzԁ2mȾ.EVͲ ى]hw?9ͣ"]hLlIuu^J e.%5;T-kefbQ@ӕLqdܕT:N˗*mk߶ YC!K0+1UO`}>SOøTa"+$6I?SһS%YG +`@w-\vVX, Z!=rUhj s'fq/*ԣ1 G蚃yr氹9e/OU 97Mk~t{Sygw[`(Xv-}{Mg¿߻meI1њxؼ6`GI]t|'!_8j<; <^_N{o[$Z:Z0..kR$bG\+ܮȅ: zGa]rX=DDDΧp֥ixWͳUqja]]b?l';8Zc_Dڈρ_ɘCKX՟mIī.ؠO)oDDDOhp?=Ucl]e}Dh1MmwdDDDOkru [lوcVO1[1:wZB(UvA"""&ar"""'3' \ڱb;yzG#&8^Zs޽*~3z"""""""""" ҵb"kg}X>D ?1~aO_[*$88fj=IX'HmDDOnb*OJX~A?fho̧N^ =`nkʤ0: ڀw>DOA$RaX0;""c]lldy}jC+)  "r^-x;l n_QDDOq|c %aX [p}BzTtO>I¯ 8̅ >;`YG7G~؈3o.~/R/Tz7'IWExT """'78?ηZ/>E杘'؈9pR,!ՙJR=zGZ 7jmsݜrL|ه>󎿫|;`gYArѾgNϱӵb'?oUܤ +=`6fTuSv=ϗqL6ׇHC梎w%Q{@B9IXrx|uɺmA#`Ǥ?7vϑuXWmlA"lͣ{GǷ+ۧ%z7):&-}ZQX6=Hʰֽ=[{M0ڐ}ȼ.emW#aYX2M?aߤzkΫ j_8b=}?4.& ++:7|7|#s=5rUJUT h6ۄeUSK&У6W#ft`y⊑2Gn@o/ #|BZEVk((-;bMe ty] ;ͪyŵrjlZâݺN^>o.7ITwtA0űQD=D]W3E6 rȦáf쾤+v$~m.Aez@ XzG#O$rS]W? 214xnI8Ne4R.v߿`4 'I.79ۍuF̝]jU A; F6ˍJJK0.@b@ڝ,_'wSRXX7o+ĽVP]^Dnf쯲]CcT֠bԀ'jN$l~|OX|8oG (W֤;b$7xjP,^w>x?}Lk= +ؽc}D׍yx*P{5:A$=S**|L}Yvc%>7& +&DDDDy|kqr鏨=_e.iynv<`ǡ\DD';Opl˷H/?Gn=96^[yӢqrb/Uv)V؏Q |)߅m.ql'u;ҷ⾆u1O(-nI?3Oa!<%ߐs鬜!iXStً?7""""&'Sc[Iba=Ă#~pZq?j7}4"""""""""" Եb|#s\MG(/aY,C!`v*f̳N +R2Y\`wx\#=#MjMo]YyrUTl(A^VRHFi5l{BEe z::=鹋;gYZ̭ Taw؏CqkF"*Ӛ.ktQZug^͊^dcSR?Rzw߁޻ML ^_1=dQM=2ZU375;)ĥ4Խ*UC?OOpH&(QRҿu(?CKDLw\]UPI$ɜ{.cl0\yJGk-b>fXQ +&+O/v7g؈3pϦ.Pb`}+ f_N]\'I74>1 + >ү,sdv;MgURЊ@4DDDDO6}0qhƿ#Uۚt[줝rMgUjފC+( %so'Oz'vvOVvf=ُԙ!0ՃSsDR{L4r7yڭg,g7{9| ⩛ZOe=ij܊C+( 6 w+}UK>'x*\e鮵I$3r""""'587bȈ 9yj-쩘X[][H A`A:g)86!@V;؟}?abUEtR +=xh%4Oev|U24m붷nKDDDDDֵb$]#ġb8K, E2dsTcԪ5jkGp}Ox&RZXTW3: +I~;ܷ@3:_C[/}Gsbq +@[Mf }l%ߴ?v\amd +:z)^iu$f}]븨XNvA֏8E|[., L 2Ĭ%jkllӾ]Sc%lk +U:!?I/%UuU v7o[[a] g]67w#y%՝c2ț͙S슖Zkי'o} o/Yj=YxدYpY~~S&*0hT Ŝ+=ZwP76A=| g{eYA-eUߦr3ZYU)cw^w{N'Ԡ5u7J {)RX22{b ّ<8JZSZo?I'x8cJd*uFt$ڃ}9GA:Xl\e%3#dl{IKk_CЗ"}AGcŸ=o[+MOg:B;&D |_Z|Sjb]վ_=5>&g×UH:Gtӑ'}W s6ٹ6?L߇q5܀a%""""'a?Иxִ~_Dو\bىG؂;؃9oOju1#<ֲ][ht/%MHVz,^r4loIW[UjFRl{g)<1 +RO:j DiQwnʀ|=,!2]?cP*a:(N;ſћV5y=6du*}#DN[y/̳e1+6~~lНt7:Z"knʠ~=b6;YyY dYsuw'"kg_u *X5 ȓ>_eyY`V|gV[,No@O׵b'-‹8Lk8gqBw._ETuzke ёU22<ުzAAR#ȶMxWڏ,)Xymt=ھ={bW6%ۄ+P-@v?9[m/M6/& +hB[0yV Ȭ?v'  +VchTz +A܏n2ay+C5j5*$z]~U9PN[ؖe+C*H';އNT^')q~gBm5#gzMVx̱M*ȭPWT~i+ /k2F.@ǩ|b,%vGH CPA8yZ7Odp<>F~!irmcYJ4,?X]Fi/vNqƸ-vdnjںv-oq9dδ! `j_*v In +ڪKce?pNy%91×gW?RȍgXp>ve#_yfW`mvXLZѭ5l#}'oUW*{z3\}Ua=,3 #vQ0>ۑS{<۲+򛩅u/}I,#ax$ňd^LSZYe5=bZ׾$A7CHqٙVJXܻ/i6뮞vѧ +#辫mqWYR=#=CӴ1L[*,P}ONuFhUcrmz ovcڟ3m|=G<7oU9YGfDZĝIDDDDDИ_D؈xxak=7]ah7r8>/\{(|}+{q . , vo$<_fw=lXs)t{;YI'@C DDDDD//j0zmzxו{2v9dF>#)o'HkFz=N}еb""""""""""""""""""'FUr 6"FwQLuN?RɕqϟY8/?YwN u5XK =EA~zLܔUueS?SybGw%L?zO:O6q +OM~~s?i(nk?ͬ3> nE5k{6ic_K_+Wm6P-GeŶb=BAkWԡ LwJ?RsɕVo2?8J&V9>~g+SԼeg?#3&OLɋ8Mɉܗ05?S?`?}0_2OIp14y.'6,zhB:S%\?/[%~Cu=6?Rɕq^2'qOŕ/՜:kj[kSTiOh'-OV͔i}k?h7/Տr8{?G4biW1GqgX6'φgq?V}Ș9cټ]ՎRr[hCt4TYx@P1@n[LգܿV?Go;V3>ov;'J1,FS˜1W]z(,۲Ce.Z^ϯ_ 'hѵb$fff7-G釗Papz~3&VKOn:>sey*\>@mAgnHDng 74:%2=uJV [uc}H|nb?n1몲ңg^C鲼š^J٥epN51FHdGAV==CܡiIߡ2BF_ӗ)j95:tT}{+!*w񍍏׿ncdיZSFVSDd2j2F(aNWU֯b@[dE +ߌHk7j2CC}$v6I'Q_S|-lg @ Ncƪˑ]T1Mz>(wO#oG֦W)ȷډ ^u{o\7&`}z:#H g_vM׭k۰JaXl @RGpt`g'Ure[GˢGߚu8k\sO]+G˛gg+q6`[P{葠&DDDDD3" +|yjH=#~}𭍏%[T?j.N DDDDDDL9U:X~߸+k~U돑ްRR@RǣzhkZdٷ_BE>kuhq^vA_n߷Uv~R9qy^[$QHn)ַsǬZ!vrShhkg@ """""'[Y@%~6z1- +k':N; a)>DDDDO6/R lzqqOuK"r3k7XNMV1>~N}56"""""""" ҵb')t\o]OͰU%7Re>z?E~iZx= QȅS؉O`VT<Nrԋ`e24=Taޜ׈;?_ƿȟLU8 K1OxV=̿ -@MzЙxqKV*NEB\lǼʦ +7b2k^3hN_VAj-ϣ@qfl,Bm^]e*H,Ŕ5i/EU|_{^9{L7ۙO}y6. ?>%cPrM2x|+@>Dkc$&250UPK1:RIOkފ)]˾Dl M +6 +$j͞h x}z"UDDDDDx˾G#Y]oS1@c+F?`d5Ӿ* ' +C I +T*5FhDdxW'Geq!Y뿗JRЋZ *P>hOq>0 >_ fjxZ΢mjĨߠ9ՏI"""""&V&U/EVջd(:XH Bz """"""""ӵb'ΐfovU:*K4 ?<#pT7v"mV1?,@m6""|V`Wz$Ft}'d"} e 4gAz~o~穌P +~sҠ_Os"Fs\Ekwt/SzxhJƕBI ^Ҡ_@-j~H] OS>*vN^ɥÕRh6P>DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@Եb&65MVuYcc`7ڕ 5~ie ӾGNwMM,s+*,ZvںJB~s9\Eu ȯ^U[%kb!uw:N!m,dTB[Vt:Om v7~96/u1=fGenʽ#jw|)]7F`}o%AAes bz5yqXطXyp*OQ߱=ݷ65Zv>cfeG[2AsrW^CzϏUm(mX's]eٗPzmPCA?OS[' _uuD?"rRM}n@VpWmͮ"##l, +' z0Qty^uj]YF+[eZϴdV B»YVe8I_bֻقfZ[T:=klu_uR߆yT 3N'&YݺHN!fZs掞Pރ^緱&K}?_C_3w{L]j{_7H'$"xˎ{5jfu} ^max>iȲSuF#[.W3~""&#PZk$H]"3U 3>3;TIbZ`ѺO}c7|k/%MVaN +N޵3Y +%qOPw~BMllvQ-|EceƬ0F5Ud})0ׅKa=@-t6Oi!2Kk;WEe?0`L"/cq6W W[8v?RvE^!DztSͥ1#[y)5ik%i>d38;>DDY];Dzn) {zOyhWQeA3.أͷUj=ֻ^ Ч%ٕ;b7=܉F1VeŦƭ +`CC}.&Cԃ_4S=6"XH,:Y6>s'kV]4{6hr/ X)P:;Iox¶AcjUW^]X4}ҕfcd=rdV!ںSl""kgnȰV,ޛcIb""""""""""յb'!NU\˴]ܣG}}}6k\sW_arwWP (I 9;ucQ+z{I~Mv={Tk@7Me>O|<ϿY)_eՊ*WM^nt#ۿ& l;+a|A'SO'g([GHֽ?oaSn%Uq֊YD#8xsN^~h}5de İw};ws3,ȭ씵duC5d^,jҺM>}Đ,ebTϐlK{nMrMgOgAavF% Ock`>kUT& Wna#~׼0ķ, cTh[EvO`{$+9~ڊlK[߷V=dwUHI5^^w5V>@;9OcR5eP|^kZ&E^RF-~%qʿ-6)Y02kɯ.%WVڮ? +uZL3r9SlYӡ@Ak+r +\+\YEe/w@LټmA1ʾ)Gs{lU~!q +撠1멯fqSZܶ|`_v-{zMM;9va6uki|=w/qQ:|O>Ӫ|\NB㬗č KףM<9wWJ$8Rl6vf\c3豲aS޺fr㏱4B`'9.Wׯd}HGz/9muN{Qof^Su%|S\q>_UGd O?I3^k n:;hTz&1Q{+fQ7Aw#孷XAҾ'vjrex)emT۷nߛ5qy)q8wrǨq_$ȦEȲ9 +KV`#GT]r3,Wmr7=ħ)DT؝#V Nh7=HzoW[ESkp`0I;Fx#Yu}^nT-}bzvٗU1dX޶@7p ~^ɩ7Vh5<fr9My ҷC +V󛜿+w +(aO rxe]T],7 wc<`SbTP׮]w' y$ź*>olmǭ)RTu}frYnf>eiNZjbz{`M?אkmF_,Uk+u.em{k_5e= +hRNHt X I^)?`vͳM~;0kQvX>Ƶ|Tn.{ W6ث>ٸ^յeV(L玝뿇dN ݶ{ o)oyv1,[k@ Xpz?xϗV2rf^e)Y P~HaoȻnMSBL:tW}#YnԂk*_oͮ~7/nfMU-:u:2ހ״͝ϲec-mf?XP'{6}8meiYnuհWS 'AŮr5c(+舜Nnq= $^'xF]Y5g͡PT"XvQ'~,G]i+$]jEB3Hyo&Cָ̬l:W`]tͯ󜷇2]k)kq]׼ܾ?㰓4 :=߷r7C(љXS9?YXvq +NXQbF޷f ]v}hJRĽXV`~^)![qbۼ8J9cN?ː SA6 Mdd1 Q ٲ[9&_W:;UR?7B&Nu7sVYZ!F:7H/H72Op(GJ_*s3|avسhocI9*oɰ(+*XC ȿH-yfrWdbfj/airq+t54N`k^YՖXW8V^DX +}D8fF/*0jluoztgyF>M]߷LY)iԽtY@KI`k_✺rj5Zqme} $_Y7v W'`DQhxUyدfVO$lmM,8«̫!o9[__®&5×|l jھ2+,#ZֺXoG[sN'ɻk#t%A v`IO\߈&Z#k![n@CgDOvUlGOOV ktNMxeIm=ghùƶ77""""""""""ֵb&~6K[{#cfgIE}u( +k5pC]x* PH״xRT+F^۷nå,6hlu?Sq?ɯ@3%8Tc=u"3}~\n5YjT} +o>/KPFR +#kk浧ɯO ?ք~>Iګr= "Lj}bqY)bb pg~I>|ݵXT'}kbze ?~{TZPATh jq}5P%1Y83:@ 4 +B;ص k>yxEH:H:ר[]RVկBT~Z=W]j4@d|V&{+Q]~e G01.44:[_v%YlEd A]N7TEHT"uf0H6u97bv9!C'M(zc=oG[߶8<73ü&]l=!'~.>8VΊf,S:v4޻ԝ[jKgRԤZ>C󭲇R^u״.7rM,_m.OUes|geeNEZʭ,.]Jȭ7G<}YEcUf́>B^v]֖]#^yy|^C +WmyԦ6u5Owc +PbwLLkjWDGG'ME-EaWgZX^W>+z\uSZ='D!nVMC=H+ӽٽIz縓%-[]~WgSzZW6Vh5ʮ ;i>Nʶ廱 Sԋk!ktXu)];+P`*=-`7<a~@>%;cP*==GlQY96 +2[Y]V@wܘŭU߭2\>o-qr] ӥ^%spWij vG;GDHkCŧ5.GbD0GOQl}68^B`Gc_OCl|Gc>Ow^{2^3ny:;^_帻GQCcXH=;:1_~>}=&*,En C Gn#?&,eeE?>I >=9󹘗Vʘt4==M, ʁvI] IWG9w(Kcy= +\Ҍ\7b}Gk2OT36G&1T?j,6%`uV} F3#% q5a9t٩Yi+uߧQkS=39 WT-ta#}nWevS".e'v9◛ ʐASEgq;xBybQ$2u[(E +=~i\ WLo( tfSDcFHu֊kfm]zt{{nG@;9 + Bj=~Xʡ027YĠUXv!Pu?#&pC>GH,{"F:~gBF%, 3oCi)^P*]u;IϷs?S _5bEDގ zvEdeb*7v5Ѣ+hMMLn>9J?#-}jea+щ ys7;Md1ӏ +E:*GV> g9>]RȊ&؝|q͆B +K.H4s\FQ$` w2 YhdUvK; ;u]^_p/*G_f:7xܮk|D5L״ך?A7TUԬ);RH;=]W*,lK2&)Bl\'xsY +©źGaoC׵b$Vo>9TcYvV<캽k%fc_yuX+_`63~@ n;&=u[q{wrOG(Q%<º H־n""""""""""""""""y*0#D#A|?aj1W]wT^zzIg s35,vI 'I +еb$?ο$#8{/#}N>}IКCp +i:e$1[q9[!8<ɾF#^Υ] >qk[VUJ;lM\tS}(F'x.RI6{ =)SܥMR_MeUTj ̅t;wInS* `&,sZvjXT޽1䫽N+=.Q]>"{.ƦS~}0hd(렪Hnz{w<\GMXKY䞒zlm +﫧IeSm]ƾKfpweeMxU/WۯJFVir1<~Ǐ[V%B|A{|+[}~kdv5FEvVeR o4 mI3l$nnDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb"""""""""""""""""""jrx`Vɹ* ('76T ϱ0Y]W%nJA܆:\(6BP>}lmd,@>z3l cd.Pt[_!6'oWy]Kӱӽo^^.6VoPބ<[jPB$I3'l{^lMWuȌuYfDDeQP ~C~d8ֿV|!Է}DD1ʍ6-hl3V`̐5dsGV* 0$oz޾zb"""'mZTUI=I&zV`wN <91[du) 6=Go؈/2ۜ"/}I+mPvA 0[E%VXA:,~C~1rd z2B0?LYt\SbY o*=H)յb"""""""""""""""""""r t|lDd*TֽLXt߁veۑz1RJ0uVI#!8>ە7u޻%Hf?s]RsZjM`myhrQ:zHIgJ=' ,t\_W_#n񪿟} jJ=r-:r~w>esy+SVp ;{W^2]|B*AQE㝔`{܁Ҟ}&ȭyI<Á.*-צfmɜW;,W&(rt{=͜}0-jlH,%UTW1=;;CB{9\Q+7[K1`cLq܃dr<ڶ-*T7[m`]nEu^S$w^Gҋ(]dWQ^<å#Js7-!n,pb] M-Un=^!Rv}⌯g2²q_߷tt/Eqr ѮP}&NKlTLjm_%X;*O9f1N:Me/ZևEo}'[+>M"L+tm?#>dL,VSXUvSt`~)ȭC\YJt0=@Adr\BOX :QS_NM\>+nз˱fVE=A@% B4;L]b+TkXU]vfAʺW#&lMQbJ6PR;39aPx| +__;nt1dr*zFP5zS8?+]ԲڠVYm^';sxªҬpw1Cw[o]n7)£"EɓeH?)#=sVmyue1!N>%Ԏ"yc#?Jk5|!مf +u?!|WŞ_MUl[INdž. UHW5WG[;I)쮧j3bJ$ 1X'a~ =kGqwJk3ݐBUlbtBMU>ByU=zTM)'ghvRPOu~;L#f2!LXw=aorm~&^%!UllWjcF?gڨ\iEdmRrs~/*WٕW6ʄ?I+ďE zePGJIb>ݽ~ }Sn>:u{C/N]7|qPюV,Op 41|]5hlTEK:Nz{wܙﶥ^2\] + :nxE,mZFHA݂bTwo;:crcWG}+C]~c?j'lEThl;nps8rI[,adn7}\p̻1a+)ڂw|Q%R2qF"q}*d%UC[K'+qe-/OtYIEw׾]v4tcbB/391fju;&Fe]{>ݦ[r~*n^Ua]zI;&;Qm [ml- SlGȼN}xshW%nc~szs'rq˫K 'CQ74,|]jF>aV&~󫈈ֵb"""""""""""""""""""@xBVUw#[oAO>n^g!S\lbm^.GZ}ndq ˭ER*{jKI p9v }KjOe"j[]_gS!,*뫫zJp$l 9Y8XWkK}hk䔊˷ž_Rl +;zA{$~ bE=en=D'cDv̹No/ՙ[>YR\74>\Vg/|f,zJ`hA߶ܱˮct>c} kf ~#9(ke cVzmnhexȣ"]kj(`@= ߴ2nŹzeSMb[G >=:ގis/llnZ1a ]+Uv`3kg]ν \u5Zݔj ӥ}_^96c T#[:v>z5iϳNBAVaN] k*N)➬˯tnT T.dUR^Xtk ޚ~)qzv* O`~S[n>뫯kN{{ LmmJ6V[Jձ ٵٕn|NAϲMH-k:՘zhM!gWhĺ`~$YFiCYցI9938wLJRʽR\V+wP8+ ?9%)`ф*@GN\cs<~F"0V4}0c9UdSu jƎ9rʭi(s'$;fb=TS [7 +V޻3oæ+ZnlBK*kl #RxkG[mrN=!BRBd&G ˾K8:kf_ ?[R6d +Hm{'SC;"+tz>z?þȧ3Zٵ+9w[_dǡh5um{f}f~^0lbX"*u.:YEJ~Y'v萸~?ԌE>WZu8c11s:N>=-dyC7I +A:'{M|>|zqX?zYJ^_i3̫|4Xmk6ahE1%-֬CH'`0#c۾\'6m*Ƿ%.*̣[`ݽfN.O5@ac;kw5%,Q]~aYZέl=<)O* س7 6ܽVZ#`4~S>2XK @ ^YJ1_;2֬csv=>UւkZUب?-|[)PXڄ׿-e}"g95ͲEk'kfz >WWZ<:MT:k3x%~F(ukL + > )Xt]Q e,ŝ>}td\r1R2* U+ `Ha|/; a:=Te쁺],!N ߷̎';˲Qm6GSuRksfя|uUUETkt w3/̶D#)+Ԫ:w$=˳sMVZڙSX ۰[k,?J>ߤF潞%3ZvŪŽOKT=:* +T׹Оydb6b{ԤnCqG-f"PפSU} zhy P8Sݕ } {{:EFOuEܗ^+^stDicWZQ +mso#F Uiv7۽I>[ޗ*&d-tA vMCyBUU5ތޫ)| a?/"ܜn ]o亮1b$DD@׵b"""""""""""""""""""xťKU$2LFUYH,LOR[]MY(165vX}'ЀF0*56ʥA` s=՘1wў<-THdĀ'8q q=Ml;PyE ܱצ:6x{  ;ϱ˺ 1I, =DDDDEC0$ L;Co-ZGSQ$LlwzVg +6u܁r+RAu?Z} B{h4?D<O3_ z5KXb  5ۛQ5ږ Os_/;C(U WZԡTC "'gp-ԃvW~f}Mcz޶7{ρ:<=X̐'*zK;ֺ>DDO Z׾΀?3""еb"""""""""""""""""""s>.ZMlY69J]OY28j.6JSÿyq׾ g)f}r̠=}{hI_7E ijoG:+h}(;zk tOA5y.F+.JtCglBɘ0yTik $`˰{o-^b^H|_ އiJ j>OMqN؀^Ȯ sM,q0) wnhH?-$!OEJ :RO`&?/ژXK\իnu /B{ ._oʭrQv@sKKc%BX(YzfSգ{ ʩŽQWM1 'Qz{)bZt@-'můߞ".RWE;-Gd9nlosGC#3%M]vu۾tOmzL,H೼t㾺X!{60ykƺ*7M-gO::;k״v*Ӽn;e%MobV +ym秬;ͪM8]KZ0T(;=gcPoN5%GjPunԃsWCՍrXml\8XOR˙7ٗzӷUdJ?opfżTW*FwMҟwAcOO>k)ZmN*{AЃ"gSM-iTJ;Rb6et5ԧ}r+dtY_}!I'~j*z-Z2:vl^b:>qo{z,J.Q^b4A1sd\0v+~ |RG+***"f>f}/Uw:%NT2mR5c/[!E +0}`5·| лWM6UI?)r_Sl`C|#[_p":1ele-dTը*#l$h߿dX΢n^#eE_p :tzQL'S)K+~9X *6F<p5% djn-5%-nRW] Ӑ ~ȁ>^M-ut7MOVے#Zq9jK-u˴9]OHx;DΰcҠGy+;L|WYj쵄UQ'lTNΆɓxSm!9@y xKG* @EzT=xJk^k&g{(Aoz}Ld>-j_;F: +c?dMlP,G$w0yYn=5wԊY`VK+Se\(u;^M+Ƿo;wQ[4Ƕ]w%aX~c&Y Oyqظ׌p\=:zN,._ER͏:ƶWU7;L{Fq^ު-5Zff,}M׏ѐ-kU}ՈWwnGp['6ؘyBT8fNoyyضlt[6)V܌Su}wwiq. bcޕ7 +SVZׯq|HZ +mbbFjX}2G;Qm* /Rru?Fh>OMe9P6|͈ѵb"""""""""""""""""""@s_nPҪ=`6\}jG!>?+jmw&&g%𭡨^gfqi;+lvʪ\UzVRŵA']=l1*[ΠC'a"f[W }fJ۫zyrit񒮫Lك1~~]Wq8ɶJ\=+P?{C߷d˥߳4>=bNIwM`Ƶ*Q(Y+ԧ^*,7c[?F֦ZP]bVZ÷R `I:׼v7^>{5L-eb=k%lJ+F-`N~]gO٩w|O&ʏG ƛ.zR|[ > DJQFU|YB⮥!TX\ez2 ѧF[1R4u7\Kگ]T-{ߦ,8JXGGlEQ޷:I9yǣ2sֳkLފsۛ4\iƵlS䞒. WCgff=n4A6Χ}_tOMr\-ȍ]c2=ZD|gٕ[SUd(*䞭tG`ɧ1ik:c][yTGc8|,GJ{:oDA][VdqpBUZ2 FpHn/L̻^;èE,b>]CSbspɼ5[kN'w uze;[kA.kl4{l}fͣǿڀVYVCׯy$3fJcG{/V;-{ GS=pq궧뢤`T 7'a-K)kH|9q2/]JMe ֦;#ncZ 9:Tbm:[@ D_+jh̢j[ʪC1 iAsġr1l@j6^y@[InAM|H3Fmtko:kFqw⸦jn˱=D۫]LXF۲d{)'3GķWr͎B7k7@$ v#?ﷁ8J#=f&|VGЕjbSjYoTzG˰ד|ud5.ZŇSA:n+x\>"+KXkuک况bfd3.z)կEBچשּdߙUʭZVǡ: }{̍ExV\IklKk{ c̀@'z̸ϮGnJNT,`I)EQ6Fؒ4,Aa.`Shf;{P<2y_aM(Z={I|,*砀H׹m1p1], +r +f;Cl܌-STܒ=YifF^x+#mU2cUʞmI^Naaa2ѝE~QELV};nzk3qكJhJ;RvL\/u%^MOK g`Tbo|u=Du?є\TY<eZV};I,|ނ<6""ҵb"""""""""""""""""""|3܎CG?=LKcZA=>,DDDDDDDk3K(j4]vۻ{3z"""""""""""""""""""yv 1R{G[e 6;}b""'SFPv5G5x*"X$=OY>O> a٩C;N$GnaaUԴҽ*'dN$fxӵb"""""""""""""""""""s%ʶܬ6dVXmua]K:Ǡ [ex-,mcJ|c=D`] nBV̈Wf!F:>'|,5- +d7R׿}Ęj<&nG}0̸|y~lʈJ:I`њ/\]ˎ}njQ{޷@ |_3V5B+]iT&51<:0"YYTWh?)xYYBӓRT+62#XYXz;GԥaMllQm}gj +OHRh +ʬ VXhMD](ahcIZa}YG])pGpew? y!rW%hXڪlΏ3Ĺ]Z]V(6P[ ±( +Z쵠;^[8g*Z֥*o`1VwSMWM?P&z~^==(ǺY.-A S6>)c׀7s"*vޏ w $*/E*# '/RdY[yM+sZ ۻ|?a-tkʣncN϶>3rՋ0H*Snͷ,X|#Znͪ\SM`E}?alj6fm<+} l{9_=s3^k-,bB*}rSP(bJ|C@Hϼ_%k͆BP=zG2JN=ktye|ͮH}O9M)U, X7ձjb.&.>>SWtB@/nߌ_ՂdZN̦Nm߼*Բ*2 ]'oY?f{,k݋vIs9ZZ=2Hc;>зISAe 锃A"hu#:~ƍzQm3~/ŵ-*y]nj`# s {::1XWX곩߼> \W(ä5csiuڭFd[B~IV`HqSWü圱+Bf]Z@T +4H<1O _"U]\WYz'gdkuضu zFY<8= +c_`@Bu@3 _gm>r%z5z z&QY^ED-~Fֈ;޵ᢺ[eۗuUBjx9(E]]_cy=SgeKe6"/ub@ `{ﹽԵb"""""""""""""""""""AxȺLAn-|en:]6{FS3Mjo}# +1r<碼*kG7]/f( Χù|yķTpAB>껔+6YF;Ocj~MSEjɮ@}+ߨ g-rS-6bVR*&~v4uhg6+skz WRt1%{^geªoɜS'L׵zd(tvћ*[_j{]Tf @iv"^nLG)JVR^ir|3,rwimrm4I:~u*bE|mu[uoMmg*`Ԏ;^^ܛ(;Nݶ ZjajYk;+ =E@`Or7:*IT=Dh=Yg9j܋zʪhG? |_ fvuYKc(ǪJfLGֻLWvW*Z~WХ=dv]^&ɑS\2Rh{v}䧈TֈYm jP;]w_]؞o슱kRya$*O"åF=;S%MAڑ\ DB[cfw${I.<2jjիb +#`H&0rƼ=c0a~mj&F j#2Yrt0DӧN7/4eKNK[SRt7XY m: +PJE`(meD8e* mmՠ۩G!fsv5qWA5ICۿMM>?"N(fj"X#؝|9EܚWv= |n .B ~u;|\n^>%K/vv{86M5eIFR;m_ ɳGW)~^ySS Ng,E/Z7<϶-6X3ȅTu'y׫2ScY^ֽ}?<*;Wx O7yZ,ȝXn zXS}XXŵni*ރ)ϗW}}7{%qGߖՏ,ypɁYhJT)c+.4ݍ߉ T4ufEWe*iۖ1ib)Zt ut r}^-=b5gfwղGn޳rxܜcIݼEXnOoy'̩ vNY|>_?xE+)R)VXA$N83lު@[޵{w3{d]c&b ~4tfuZr7Ķ9p8.eWb21f*7 @EcuIs2d:" )~-Xq^Wa6鹷lǾĥVH0Yխ+XkΊ"" յb"""""""""""""""""""""&;d+Ԥm{0߸?94AsZo; |>v"&JjzmPU -7m[GeUV#ӱ?g¦E&lҁ*:T0e`u5 YiSeAvQ&DDDDDhڰ!)ڰ# 4ׁ:6NEg@PXU#{˯PcįQ۾sI>fhȾ/øUb3J2VfeR{[OJDDDDDDDDDDDDDDDDDDDDDֵb"""""""""""""""""""BpRău+{>RH DS[9EUs֖eaEdju`kcrc0صڲjC#/PVC0bx6ժc׿-0 #2E $&q.ꯨ)pФ|Mӥۿ盙8:u cT|Ua|TM{acUÏOUA'L>X圵YQ784U[)B@]}>֦8UTlr 6*=NO'aWNea64U~ȳ+¶gvK3?2fW3aٕU%ogJ雤>'9c-Y5)o@$kӿsõ2l$[8(@u+N)# CVҬ)$tk{cs]Nzed%On lOx*ӱTb Xޟ?iN<EZY$0W*6z6ș'8vYUz3) ֻ#9Lcl^aa mͺoL[+` +;Ajs89fvE$(ߩ-k×[FլgP{zsf|f~fպPˮ#2kRjʟ{I_3mԶ|V)قOb4+8Xv5vYCȅf'++#*A+;`Ia#xc.ԡ*MZlz֏c]]( gg˫:63|VF9Uk;zhM?.=VR[f(b25nekrc䍋KzՑq6t}O?{%;.'=7zƾ +pv]9U *+Aށ&9.9(E|0#Ka=$pgR˳:zG}S%ǜ4:סSi\=tO*b~{ߌYADv>泭V97TT*F5ֈҁ߷s&Wj-)eumoy>ud漏:=p9|nHĵzVV}*c{ +TKwcV3t} |Wh@אkO +ĖqS7 YW&k; }v~s&'13lZјYF`vl& om~aglE׶T.qklgª =̓O#_K;HaXԅWy8=".E@ ߷}<~Uxg5xX8rr2508=@ֻO>FSlԆGRFՀ#cӴMbܫhYW }Ois]Vm' +>payO[?~fzzϹpXPReGz L|*WSt:*3v^FZ־>7.0^7PRtE.JH=irO%ƚe[-ey5eRbIzf<%슮v΀u^R}' +6w:g`t@b5}簰-Z (*Ǩ]4OwLuxmoE.t6K!^{KKkV ڪl!O%YH ARU ׍j/cqN:؉סݨhPIQ62Ωnã ~0Et_][+鱕J=7m>sqʶ˿ͩgVB>%6̴#4.K[j['GHss}K> /W`My|lob*$oz:㛎rPжzWGcpG}Om[Zf /Iwl`rt!Pպ66_4&Oש] 8#;'4sUvkP^MG@ZwDD@׵b"""""""""""""""""""s+u2=5מUPI l>g=3mu DRz*?L\)>~"M>>{l{"L| +˵ڗ6[]hiASDt'h='8x.V̮nu"Gfp!%צe2c_e0iF$sZ.[͝YH,mv]z8 ͥ3?r*n=^l]=G#cqy + +&3}l^l{;hԊHʵ:.r=ii{=`J:{d{ +=#} ֵκs]bb"Y.ʍvϙfd"ЃU!FκAnOfsVylaJ +:=6$HոRg{tɫh8ۃhp⠑4xp'dzN/Dz{N&&J1do@|2n.zVt o>$ړUrxr{R +굪h;mH;_*:7Ii,[zw{ HlclZ!qګQ l~sQre2qSK0뭖{(tFM{o^{-"%YҦWeB_>ecQ[TF:VMsnr_O۱XUmMv׷An0&>gnSJ"ޕuWR=@v?>O~? Z~v!f`;#,dQvǸ{=F`rC%LW3ݜVV3#SO_Shw^BU~uST >Ͼ*=vȜcTyVI Hs~H@DTYgv wZSݘKR쪊.[* #{ +=G^pN Fe?.Etc7FWn5y\hPM +Xo?Oɓ.P> $˪mk{ ޽Ik!_ȋ-ݟ!I>̛!Ey +CPD?wS!u x@%1룽M%^3,lJfp B {vgc/֦(d'6εyF{@>-~P5 ?0 2OUhSmB\+Iw|3nyBU6yoZnt4y._Z2PVP羆iSOb3vkT;vm} 24:q\7R|GVh=vFБ'8x`[w V(_Rvzz΋rlNy&*IZ']]^|A7Z؀}Svr)ETr9&бk +ܦ:>1lWlzQUhY߹s|xEނb}y鹃ɧxb==n%^YW Wz$=)^~bTR٭{5QVo@՜V좡DLݵre]INj? +U/А_Ǘ] cM}lD*>i].YkHHH=@{wܖ\ʵP4uY\,zɳTu1^xSB&u6+tQ@NX;Ȭܪq^cE30<5;]k9 vMZvXLF{O^n.?-͵z-+H_S؀_M7q:űV]+(!p}'ԏOtɻ"E].*.i. +|~='DˑoPNח`޾[ OP-exѢcY5_j ӓ{u\?H ^?ů@n+26QmG_!%ņ|S`dޣf-p>D)a4~Q#ZTOy+еb"""""""""""""""""""|e4@#:@;׶PźF:}`H:u~g7`,!ca}ɒoRZu Dzքп!H(4@#ޠ>|z(:;EpCAlO@zDh|oz>R(Gg~g=t=wƭ\i=[A"6!\`>(P4#P@=t#^)_lwdz =#S\Ee՗j;R5bIf'7%zF<)Q=FDquHnm'N'1ы,I bt4r{ ʒoz @nn|(v@?}z-z7>|_oEpU F@:{>9PXn (b?@zC~8򓫫o硿 աkz(;޵B֨I +> g K( Lx)F'kģ^6@YuoFj =#@}{DZƔ>@hH~kh+r=g`~T롭*@Ž4N瞺G|z؀Gn}*}O& խuhuk]O:GoNzVRHP w3甛׮LyIQ?DhX +=}*B'ƭ_ϪFК_'n5 b2tdnG T1)jCVIJJ0]RiWe~@7j}]IPE +'Y"""ѵb"""""""""""""""""""c"qcٞՔ0 wpIyC׮:$V]7v+2+*O ߞ-ʦ-eH6I=U@$NyLfDufC+ӑZ (;<ٙMN+{Y }{V]#nF ߞŵC)A&ʯ(XڅjtC6l?}d2yl .le]&ۑPj|Xw^hzte2WE];,o['=zP`1 +rvT['R}f"YISW~\3 +U½*(`7UJYK*6&1erq&\/.zǽ2kKk;WUe?0`ϙ5bTQT{w'B"X ձӭo{M~+NSEnO\!_vUKUlǾ~$?䮧Ű%Ga`>KWMfPGPkFTgP O ٙ&6ʩC|%=;n|2nmGKv~Cgz`6t6@w~^K:0e#`#)˧ rL?#̌|+ O5Us2:`@=oY`:bw2T s襔1f>p[}ΡKXɩtu +(>K]V:Z`m(yeZ%u'`v}p2u" ^O@N]o屿`HRA;3),,R Q6z7^f5+ble.w>[@ eH,?-2]}xl*?{O*=]}C_>QFEY*WSXҵb"""""""""""""""""""s!O!-V} +4I R/ܩ o$tU@7i?OR/n?,n(`OP? /Nf%X+j S9\e)vb)޵)[ٙWmqM6 }̐cщam{gT>5~ ԆЄ*`=?E\k֋i̭&, }։'ϘVo-ejUoµ@,5KO{γTgYB`dm@|#ܛsje2]`뤺3(<_P k|jMy.((Z0PGR:_f߁_f9ry`[܋NxL`ٱ Zuܒķ} e`Yy γwK HY8~_#I)ekRͽݻzI,||>;T)r$;msE7Z_5_lX_f}[]_# kr6d VzPz ͯ.?MufvTv]gk&xe [p6bQrc"O + ؓOtqp^BP̧y.Gٕ*v9S.s㔦5*l5Uc/(21ߑ+{dUZ*Idhydry VWu + km2wSonQbFɌ*+JUY@Ub%vm$oНȬq0y+ ^=Ƿ4`dSf5UUd'}Z h0$k{: Gp5k9. 'V>hF]ߔEf-wB9 ۰ִ_5H{%-s& :$a;o F0cmn+( N;[RnkB]E%_2c:I{%ueqYwf.6e}Aё("W&?mϯ=lE[PR>~h@ToCggds ^zYbb bq]V}S!h}nK%}'E̟sbؓ0T$$v~S3lJȶTZaنoxlzjeط,vIIH +.Iū3 1{TǡFjUG8;-:* -'(n bAq|-[J8* _/[*lk|WԂ~RNƽ==f~öT߾6l~}HR۲31yLʀUӭЙVPFs8ʫ8@?TKj?'RVd^jsY|\aun*jțpq /^ViG,U\?!ky1p0+X"q,I}5Y[ TyZzP >Z: 0񩮜j?豺T!I'>?\ @=j6Q|h( z{MDPYEgW 0 ~k1+JTV@V$kc=`qrܵmR2%xP(eL?,o}I9$~̝M|SN@kJk }H]kLջ9v '4+=W>bgZc*Ty/dž,YU;k@o= L|J03֠Z.qak֎-˚=-[\ZRI|uz~ߺY_ҵt_P:SkYuΥA@֏y!N+ zE؍j- +b{ ;S}g0#UU0[1= jRz g޴73O2#l1Qvl6*ݻxO3Lj@6Cx_-שm|8 +>*ؒR$6} 8fGVQNBKTSu5$dyPk+4T;aNDDDӵb"""""""""""""""""""jQ}aNԝЍy%]N5Z(qк`tèSMj7U{8\F'T$@|57C#DhW`R+P @#;]oGM22zQ }5;W>%m[ +YE>]j`chyxޘU_NT7- 7澺k[}Nm; ly<>eiF`A^ۙ383-իv7?4G)qصt֬@ q1UR,U]>^Оۈz-Q@] խoZޡ8DdqEa(VK4' VE`!u# ]55 7U[Zp^n縘1im̋tتz>Π~}fF[W@mzO-x[w _>dv4:-h4T@V9Eիc:8lWk*UIUTb( + >;(pU {4JN8ǯ-StzOvqX}TV|y{E=_I+ͱmw]i۸>nM\<Bֶٿ>绸lVKއ@ߡؘ8_0IA-M}k?H#>bq8WYqP:^|pk1뭛*oz7ҙءGȉ zj4%HA@]^^ū]J+բtZ6Tbk=献#6ŶUu>:C7 +4&q82ڊΑ;kzϙ>&UjVo~]K3ObuYRƏ曓K+ͱmwQwa2z%+uRZBF@lRh}DA-4;z}&ؕd6" Vֶ7~4œ^]mUh /cU[=Əq_ij%rڔ7(F k@O T, X\r `X~˹Vu҅ vB}@qj¬UJQ*g'e{G)KJߡ|Ǭ;'Z;o B;AeKk޷ jLm:?9<=NJWנts>`]u-]*T|]ތG]PT 4v0iN+T_LRء 9PպcV,I ̩ F=`[}_>9,ƫJ/@RN OԼo}O7@yb0r7Blޛ2d8%R鮖eN&Uɑm(WeGcDL8m5}w,n1XmBjsF^"2wV<]Gޤjg~'QQ,vm< eKKcTkBJRZ/]UHRAW#|ī6 OC[ 1:?3սk\I̦k|'L6548Ϋ&JR:!Ru ¿=$^+-֔[/}=LGSaAig=s/F'o"+dtIak0G#|ơLz; S6b""Եb"""""""""""""""""""""|b"C1UTb/@`2671JReQ!OnMKr*E t]iHmn} _1?ʒW`z@=SakStmeUb159^E8KU=N8MHUd~m؀GIJım'Hm/[_-^"YePdRu]O)FvU$nD "" յb"""""""""""""""""""s$LYbXPG^LXܮfETبmrz 47y¬3ݞ``Q,uvW}fjFM~ǍW#̷ ]@#q]kc˻ O.j`*XYYgdoenK*"):g9 5r+7m>wmOH`*tH:}߆&@+&CQ A]WD2\Y~\Vy||o!HӠzޥF='NĈ88[)G*=>=MY`2T.6TWګ m7á;`HI>S'30ۼʒي-;Rň +56;Nm^ v³;ϥ eZWt飽MM,FiɬX/rV)a+P[N~6uuUYmm/ŻAԞWRAb@q$3mngʭ մ6`H{<|=Y3Q:U ,*8UbӰci# Ic'd_yo*j]Q];X[lJOONy[eW7mVa*#wӏ\Jg`wwgnlwc J\k߿9u%0,J1^6U `Y_rAv4g-ڴj溺~KqٴUS.ngoTa}6v;1(|KF= q9^>M!q{)ktMH 5؀r7q<&JƦکk:}=f^ ,>GoWm75!I +hv*ik,r=#wYz[]۶:RA I0_̜DkY^I>EbRg!]֋jͲ;^%z!w{=}3ZN3q=P,k &r~##& +vt\VYeuՠ??y`T*=a4ܝzz ^z5eUVOk cѢ19|Jqm $;:IE_;/~S1'4.Ǵrصa/},@ZGQ:ֻ nI[Y"Z mm5e$@I[_1Z`^_Q·OǼȳ52%̪7ݷ +ҫw@ fqqTJ݂RUI arj/Wm̮UUcs.6tiʊNʊ}=~-9jLPٝIr|~]6inkJ%}V;8RKik^dž8*k,[\]}FNMr"Ե\5{ %qld⭏[_gcbX$zN@mi̪΋|'{*%r-k0*l!]k ,/OG/' [G,P/Sd+ufpm .dCK?=#G[etPe͢޺BJ5}_u;&:3nC":-ktcZ[*.{F(%9 +sȹj,Tc[֫sGc+=Iʾ5vXKh%OOQ)&#2s`>e`?w5:93 ]o3._rk =^1r<|c32ڊVs}=Wb+3]ՕewIWJZ$v; em|lrUu!RTkC{FFv>v'1l20A%ad6Oȴ{ŵ5Ue$w.|ֵ97#uO,=]}7pyKk?ĶĻ/i=]nUw=~s +1ء;R?t~fd܏er=iq^i˴TH[A z{:>T'TKg75ݑnEWHK!H Pu$>=휶- kS;, 4A^N#sNko|22 +RGO7Nu^#-V`}Y +ڝ]Doi>tnĪieaNzz>u_t;5~%v3o4Zճ[ևn.5+}:@52a;uPc"TzOy'og}ERbH!^I 54NaEyUWdV$)SEtSK:Ϛ7މL*VƕFI$3^"P![P{7aaF5uIi&,RA HoK)ca +`;5{ôƭkB8<~E55יk:;1#>͖8_5j+ϡ,c>?hh7Uʮto2d [V(z{{ l|^PX*'$0 {3= ӎgJ߬G`C~w0ZU?=*αmzU*,'#}G0+,d>]Z;v'dOƠcVb 1fNKΠȮH G:=U?<7ٕf c*^zt{oOxw:Y@>pwkv3bb0grUg|'j6EZFAI v̜ +SxCe2=%+EUThAM;x-LmZc:woa59+D{MUZZP:=Ώ'CI]H|;C(FqRqGV =޷Qgk4]-mh5ObHߤzƽ;Q ;ݿ r- akAcaS1QlZZ̀5"zR7Va +Ri`˜y u-y7u9u3uwcL7lZt-R`cf?IeXk 1f$Ajj c-~KZAN!v5l_1+Yg4EzIFPDl{H_K1iBφSԬu6i.=Z4HC{oGdND\zعp}[ևmz QscߐCMĕ: NIzF)Oߣ+gw|g!cԨNW@yj,(~gH{kr8*.([*!\';{z~g֫ԍYbjۨ}_ GV::hIr穜MvJLW H0;}E{Z+P=N51W.%eaC;nǸ߸(ȱVp5?YM)EkZFm{]m9Za +SAaS"XZ+` 8ѓ ,nrIo{^Pq4T5UɵFv2bbˢag >Ťhmԏc:!޽/#T,'RǤO SU^Z^5c m/oA;)WpKE!J`[͵WdoN^Z]dfoV*NKxZ-LlQ +n[:0g ]%ZX+1o!3qYyXzTej;'7""׵b"""""""""""""""""""""x׾K[( ֵBiMOclH(jwUcG=]DDDLCPesZ+*[Dvu;zb&1r3XSjl5?W^y:vY{{zJJl%C/`kӫ7""'mZU +I'w&EZkM6XQζ$=/59^C+[X*U* 먁}flkUUڠ ̱d @MBX@yc.`ҵf7 +zʍXb:I+[g_;9Ǵ6 Kkܱɫje94,z!OI;!Iiyls2Zcddu~!S^s+jZnKJ_lva0g;2lZ][<ʣ|%mu5qGQcc@iT,h{^_ü{58c"uyk`sbtkTJ#Gw2|vO%FU}D]muKyL2i㮶ˆ-)c31PT`4{߰ߗm2vQ{Ǡ5<eA?GnJO"ᖻzIȿV:;G_Iɳ+㬹)5Zʝzw=,~3GοllCЀ߭0VUކ&<72Sd*TymzQiNdـ15ًKpUocy9q6 U |IJUv#5̾Ha̬‹3<ֵ݉QuQ;6r;#Ďp sQy-P|=[ +{7W}kػ3';Ȟ`!~~$k-ZBX/m@ll`UJen-mW=Hԫ؝|^Y7WvH|jtZգهNϱ L8coSݔ">$|=qn^*R3MtYrѢ~NzO;^wO#m#CeeWpKv"" ѵb"""""""""""""""""""s^0{ЅԦhk6PG@m XnyakmQA%wvO`o +5MnF;!E)ҥ;4RGqfպΣJTPBJMdc<:AZ\,gl{27 3ͯAW }sE| ?ЫT(te~%dws=> OUHB;rI] z$אǷXFjS.N*A+;h;oһbrq>ˏ Ucu}6r8|K_*3e[1#/O엷mk|+'-2!B +O򾑡A#;1<'hA{~֘o߱y[k_v1<: J_}vk{n|n^Cn bo{Ϝ? 罆ubI)gޥJ@`u̼nR*{ޝfTR;jk[µYZ8[:'`{{Z2l24)`BX'{ ~i8[ "PVdpSz o?n5W]Y({T :j5פɁp&(uG2z⻲-Q뫤`6#ZNr >4I Xk׷mket{.K㭮b*K][jF-iJPT*SĞř7o$lefέB>'oJxs@.@ +Hy¯6V[EdpG6Gm{jopX8.V?WHh7Q~jdgz+(~U2667>l`b>"eff=e +kr?ꅔ_]Mԗu +ݜiԫ: o0\UtumzJ}=g|?v>NNR?Ёѿ,nH}ӒqSt뢬5{S=nukP`Ƅz!2%ԍc"!A ߬_l@EOsқ#g>T-{ܬߔ ]?uQ50! EAجٽ-o]] +N(}EԄ=`{I/k|r7i zYZt:@{̔qI7-H*$v}7>p<3pt<|aԪb@3Ux|=[den*UONS ̜N eruԊH#"pL8\mԩö6"""""""""""""""& Eǻ mNPJ7pޚ?MkEֹ?N}TN"" ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb"""""""""""""""""""""cȽq{\Ql  ̌+6|dd7+2S"r0ڡk2Q0R;K&c]nT-ZM70urqS+-rԣ'P_߱˷'fUOQ (@JDő^%mmmdsLoz#dOs&HȨ[I +H=|,yc{Tj"kd,F({I( ymjq)t? G~fsxǻ3VzV " |UYMrkU Wunob~~F TW]RHhwS$DDDDZ8 +? +;gOi)3ehL """"""&3z ]C`=&H[yv"-n"|>;囖Tkj2^A*nJ""&'8މfgjx..gkFd;bbLwE`Y5=55ʿU`4캭յb"""""""""""""""""""""cɭm]J4D*Rh P?5u$Oa6Ut'q&%ng~nK\9Bf +ư+wth0#c2x]W}]Bw ]@~sxU h}f9xap M[Rkv= {L2r,vB ?)oʍw]\4yVU?ILaqV&F쮫,WjzJ~~dU^]hPN{Ȍ~w# !)@xVX*ugcͮc##JI>V.Ĺjc[iDxk0˚Tt w'fD˛WVGrZVVN#@zOC~A OJܖd&oȤJ +ګ +հ~Io]g'N{!4Su(VYgߧy5rT4\_sd_PֽeK`C` 6)kkk Z K߮۰ ߝn_bzztvѐxG ]p58IP+=L}~W3#]y8v 2]~'AWMkWK{6u;+%-a/JWZ1=a0#qVRZߠX ª +vlCɗ4*=I |U^UJW +zf^_]N.1 |*?Aȷ"e-6C*( dvx3ȿVٍf:t#0]vNS"q^EHc Y*|Mk$],?aXT5V*akgL5ޓO3rxVZ#*l:홑? S/;ֶ\3i`]duQ~(~aƦ/ݼ童~Rc#q^RUzV +,}@֔z2O/7?E+*"Ckr{'H&9ۏ6 o("l/]:?FscZdc.PZbto{f;sg &5+rkVd{'Ԗ|ܬNG6 fpPt`)CFk9\""jɪ2T́!? {nhS⼎K +lurhcYel(fK *Q>ۑvmU6S?.;nEvGvWnn ݆wAsGɵVYMGIzzYlU$fyؔqVZtU.^XmAL^Fe Td yhQ?~A:"C~-UZѮUeVD Vm,xjZWmReo'LX))i 7WoJח_:hj D~!܃ia]fRsB.-FZk.Um.~s^{ѱCV^`BK}Idb`..@E]ZpCP=zlr8O 孂`EOHNF+asy)`XG3bבٗX}~C"o*ҫz'oɫ"9^GMJ-j.wIb6? ;˷PV|(WQ +AޏminGWZYD@2I;gaR\5ZyYz1Z+lga`y[%@0:'2xYxm`aJw؛ٹy9uQ1ءM/P }I ,y\, <۪R]"uS~`|:NeWArYmf_Cu۸< 0^~önڛWaycYUx ҂2njbdrX!S޵<hw+:KU*WװNP=2Gȧj.=W#6ee= 6zIȈֵb"""""""""""""""""""""$<RqVubԌ l ~3g'ݛa0=G ָiW=o'Gi9tb սo~8^#+ͺkuɸ[FR*XiG˼52xmh_akWb~dorApy,wKڜTn=`0 nNX5r7{#/#-,CkEKozg8EOiWR:Cw;hsl6ҟcjgR{)5bهNBSeNmgIc۸ #O8cSuYkmVqu784e:@Dߖ,6I}mbd?R?HԄ<)kF\|o&i?^'q̬:5?Cs3>Ա']G]x{!*-A_ + +˽b7Ud@Eש` 'lw3y0mSO(|JŐ>!twԓ_׏Mn-aM0D?7̜FVv]Y_?Yztb` {Wg*V Poy씫g_sxz~LJebRH*$k-3O+W!]ՏuwfRScc26zYz˸j2)Mn֛dRLIֆs9TvE`U[.7/ų,g vځNf^352Uh_XbtvzOW-vqzMvԵӇ YfF,z=&^{ss,F\ԫ#b*1y.UB 5u_ 4 ߦ멏gt6 +KY峆*W$*~NG1xb¶L[jߥ'fHAi u6GSߤU|VZjFT`Yc&$)׹8:֛,ݷ6u6>ϯسj Gt#z#\wvp;CZ 8l=[ +_V6[ÁrXk69|F ++>tiͫ2[OcsGkZh% g Jd}gDX;h} Tgf}T5WQKg,$5|-mٶVMYYX|nQU[_Ed:i6uբw5,mHs0,epo/N@}d73]s+i*4~#݄yǫ.[WM;;wG}H $b%@)a#s=~kͱV^bQQGS<;cu*>3[K+'4OHsyFO1ƒUB}CR )U޾my*-@^^zyϯ:? *z1ҋ+'lF'մeYUdeӐG XPw1QlL6Y232qO]*F:w0S\Oگc*z }@: O\,8uzѕ {ͬ~#&V +YJU=@!,WW,wLDDD׵b""""""""""""""""""""""""|<X fpbTHPvY>>DDDDDDDDDDO* +v"&n5MfT( ?wl """""""kdqn,3VGc͘' W +v(`Ju"Th O+Ň{pŭеb"""""""""""""""""""BTGluSvJ!ނzoCf cFdtbݪ&LcyV5_[OOf^3yN=hB~@V"k%A^}|#@6FFX t f~?fERl`6gEcܮl믘[Q6قObf ՚Po}kA˕fjڭ˳Aj+ z7oMqc* g ++{XT#X@ϷSd]Wz5:PvNuuFb'-iJNZ͵*3Glq~nSs1&jT|vTrV5_[؛E`̺:;=gQږt7Ktnzѵb"""""""""""""""""""s+gO( 8 [QC齏M9 |hF9k1p+{T\> +OcF՘9 ]NbK'eUiC]u1#`6=7=Xr\68'9M5Vzaaٯ꿋ׄ ?<_O_Mz=|!8.>{V0i۫dﯤ[lI1רN6NOv]D?)e@:gY<0'v5Wswǖ jdV5k_zdZU䗫 1'ƺ?tzHa˧kh*]eA,6}{OSFo@ɰT*3,F:5WoYecĸj;$kck#qr.f}/uTUY2֪k4ptёb-ߠ.}^rV"""""""""""""""""""""""""""""ҵb"""""""""""""""""""bƫ.]ȮxVh4Vk]tE(5jx].C=t6; 3V(QoՑk@X +bxq)^kZ{ҨQWr V6nrTtwzⰛYccBwJ>d^7-֚ŝDFͼN (]i^26;[k6 |en<+2Ķ+wMt(,4v;ϫ"\zcj6tF]}㱸)RV +lwE`  O B=iPW`̽ HF{|F._^~s&^>zȩ,Pvay# +խZ +) +#SzU_OH_n{j{~2 +klksǴcn8( +Wm(cOyv.ZEvXn3ؖ#ykԠvlkS00! FyJoN+F]kEAGx%H]J]Ǿ>3 1讠x"П1x<6Q]lFTU:a6ߓRWСw 8.<?e ԂG2q +o_/>?eKCQ[Vu +)AooGKt(THlv2[j]eHΟu߱{/a%64>-n}ƺjأAʎ?δ&rk%F^`ؕrҖ.NԐ 7gӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""'DԵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""|3),յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""|3\ֵ̻b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""|3o"e׵b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""|3,oLеb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""|3,oL +endstream endobj 46 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 16/Tabs/S/Type/Page>> endobj 47 0 obj <>stream +HWkܸ+{{$Ymx>ryگo5hwVfxgYyZ΋Gz?Kxf Rx.>7zʻrMx_+s:79,vb qst1Uhp{Xѯp#9Zm^ +KM M]v䪾E`+ʶt^=<`x@@y숏 ;Cn,OhOYx`_W>Li$d|9nkb ?߮>1fl;؇TN1ʼ)ۋ-m5,KJeFȟ Dq# *nke>\UD9;87^̲`eߋɰ.B,&J>U9UW=AٰkZk[n 1Aazn%#?f$ +:_[r +zEmEbevz57Vck 1^j<0o(LDB,Z*k/mG|2V/X)ŧRZH9Q=5ˊhD(QT|^hxzhqE@r k%U^{}\9Ҥn>[:7VLgG:934ql( Z$54)wհ /٪B0c@u#cԕz~s޽ǫwOׇ7aio5h 3i泱&ӁGz B-;#P i\/p7Apa[Z !#S.+ FwAN;"lؚY~IУGZTnE&H&Ktwgd:zs1/b) A}4i@ J(v W?;)f%aƓ˘I`z +5?6&1£](99 +(/HlaƈvDE8ݾ|k;ZN8[ yhzռr vQ_+4WB[nnjUp(s4J* ӑ'iEAmEKP(bWXf/Df<gIH}ZN2 + S4†g\f7se]#Q'nU3CLb"cИ\,tgw4 |[+mF+ @6.zUEi0jɐ41и3ZpA+@,# [+CGsg)RFnOσ~{0&BՙqީɁ] +K|Qup>=}_5oD @n)||S!{5kvkc6WQW;Dr)NBuu +kR`dQ.3᪹B?[4٫!!|EQ#)ɲ5{ Yr-:ǙL[B1kUckdE3[B{1.$EpL!ׅJo#WTdb#e)7^&I0B|=|VtԪ=kU\WݰоTѱ0DM '8gHǍf.-iabo d8_:DJ +,ccBØ.0O+"IQk[BZost8 <:_hu=v&&%RDomMӁ\o^~>?_ߏ/h;`6YIY;8 `ɱ~ +endstream endobj 48 0 obj <>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  k!1A"Qaq#2BU3R4STs$5CEbru +%&'()*6789:DFGHIJVWXYZcdefghijtvwxyz?"XTly.MvV-WRv0*G~5,ar2j/6:ɑ sFClZ}5'"b5]~>?xi \{Y\#QK8{7S7"deq[VYc1Fهq4ތBd9ɩTe0~@]g19#Ը̋iOεj֐=2HR[sf-}{WW #izp svb-cJ`kl4v!y.PJ#uBy:R_I g{j ԳPk=c_ϰGIԛ_!JQ=-mJĂ +Foi䬧%쪒5ϝ]^|kS%F0k ܇H>rYk·ٗ<:Ե8KCꭎzcX1r(@LVz(z}Gq&fs4aՐY.U~Og;`kR#UjOj^Aq=DPNM܀\Zz}D}LW\ +f|>]iݾ@o4{E~UpGώ1Ǩ/(% ߫b""!iq%A ainfoGm*SPt;w܇GCv-_בk# \c8hގ]&ac]gVq2=Z@u)~Pv:#_8AztV#Zr/ͬ*[-"@{}d+< ~0YSqO0;bz{h{"ba[үKAI~2~o]̏x\N=C"Iv[tV}fG@ ]$`f&5Lp2֪CUx H:z]{HFS\+87_,*j̧k/Yv=om.hJ.#?JҠ:7kduɿ!4:wAԬOP x%uss^7%lZ~ +'OHsmWYHX:SzBG>msnql&R~d{ovC%c9A!߃-eqyef5wbgz0pXu/K[0_j#+2n$lMoZ;3 vu_^V%Y}'J(:뿃0|(V=ȎVvE뎬ktӥ*ݙK[r%S;2\K}K%?bt /}89S,Wm2&G +V[$zUeڟ ø3_)!-ԲЕn凖uZS#>QP^}?կ_vfqVME*8t;q8얦E:\٬oQ}M17-1ok^ЭFC~붵6"gddz'vr'O ?qSA_n>h+?۹_¿QWA_Tg/̣8{Py~J?,_?ҏUL~Xzʿ@W29ށ2c7?WL~WzWeno'[_D^s?'yޤJ~U?zG^sDNwD>wD>wܧ>{~S{)?>{ܯ.{cܧ~/$Ur#N~#O_9?SŜ,@Yr?<[?yUӏ\; +?-s?.tg ?,?]1g?~Yy)g)~YyyGk|S9ށ2c7?UL~o J O#9ҿ~?*I1?~'?*U _#;_W;_?)u _r޺qO`qO`+K_.S?O\~Q{hJ<uQGGYg}omj>~7o[Z|Cߋ-۾!b 2YO0) uOn +%G۹_ _¿QWCWL}+m忴5 +$y_ _bWZf @W29ށ2c7?WL~WzWeGno'[ODns?'WOD~U?zL~VEE?Q"hm'+ZI&QHr#0 H`~c߿~W/,B Zh辟p iu|LC7w]/NPVZPr?dRq57AJ;[:T*@*GG3Ⲹ3luqMW)Tu7^ʷ/VhJQbm]ĽXz:uNmu\f^P + 拾Ot+G)r1(SjçUUA6#v]/g|WNux&]I@kʃI׼JWeaWSeW}c%~j\V@ Q&Zo+ΩD _C~U~!ٌR2Nf#]A v́xf;͘zֻy̍]Âutհ;0-v(ҥuN#l~ǹK趠iJEZWG߿'eYuVcF؂ojGx3=[ddQ멘.'y>IG#3dz&OѺ-ى߼>e[rB*3e]wLK`Xx !r|_N-un]"|qw"8-bҭ$~`=YӴ6k0'ܝln\~'N#1uȳ]:H >ݥ ؖWRmlV!H} +k1E6ԆRAg!WnMĄv lFi% bY-@:znzv<}9!lȯlYTu(*?9JfkFHK,-ktoby09q2iFKPt2%'hK +\&5_ssIu|Fٕ{ի_!_q<|GnjrṦ@#Ϊvf"""""""""""""""" 1n QQ +K4&Y\kZ,bī3'o'MۆumUkR3|(9uţn;Jd ]1G dڙl#.G׷,q|g[mw[w`2/U7Z5{j[#=^ͳqH|tXGYىPu {D9ݽ4b|O6{ \C䯿 2W ?n xrVᕫ)j, 7qnnqķrR7g}fS +C#6K*1:*ԭv/w3++δ:51!Ph33>v_$ُf65X v. ~fւeǰWcVb;64c9*Y=T2\*,OZnu>POwĨMu* k̽ÿ?f ~,|u/yqUQuut?xb +rA,:G/g]'Ǔ;uIr0Rڭ8twO'>'!@;RIN;7b<9:n(? +}=uL{}w/s:Ðl*Gd/M}aRtؒ8 ^^E"뚻=B<.۝` =wgO5g]g](]$_s#7íFa*Ȯʫ' +Oc2$Ux 1iPuKs9gkip +;~%[2qHk^lo(;?yГ⸺25=etٶ +z!Qfer\ϭQ;,F`U==?RF>7\ lV@޻}Mz7۴qie׍USdP >UfJlA׾)G'e)~q[d=k߃r${1!BYXrG2X\_[gk6҅FV ݴC[}91,ZJM/OR$?z~*mLluYI]fc_!{nM9V WѵYE>2V;hM%'oi3&ܞuxjc}B4͠{kol,t 5Xe ow~U&bJgGR'DxvwSe)j=~Y2}I|Ql&p–@t>?1yK*LШǪ z>ƺv؏= /0zR`ƮeJWAY=6t$Kq,(8}OP 0';޽e~#8hrd.Ejԁ{>|d?Ĕg&;}1iK վu~s0K.jd۩ ̠:9e/Vj`1蟸Oiy [Kh=-_Im5ya>Mo{VWoNr]4Gͳ |isLU$ ==isF;!j1VmDj+q!{/] ө6;S)G~?Y]t5bt; 7G +k.|;ŵ̖=@f&ojQ*OcRqnG=uK#ћZ hyIL%՘uf23*iv#_9aս yL${1`:3'ZY} [lnKťK + $L?uAGt*j .wxup{2$FV=)b K?Vz%wuI@Oy7pMbz5cv:'JCmط1Ike 6 utYy˙\&G]5azt;SRIU镁%}&e֝v{/ȴR:՘m:ѐ8Ro_O3G=mc)[X`1P{_O2';qg 3 ^Ftt?x_w5UքG=,G5Qc҅֨YYYI-meJd/Q`†[ ಍2bqdK[YEծa'CHhE6(Ӹ:[_{LsK e[r_];o>{y +SvZّX5=7 \>+(`6~T#3UZut6~mùo\,u3c'ma@rӄ+ +mXf?܎ZO b5Y7HF!PQśeu.~SU# kwu{>?a իڲ؞iM+MɪUtӽﱒ+3>jJbHe^1Df&deK5祘{ ؙt71 VލيtczHץԿcb9ٖcFr|3t߇Ƿi ,Q!-]tI$xp{{g1?e%~B7Qki +噐4G(]aPa&Mz-vDv?q0?eUY{ޗ#K/vcaocRch?'K&;k r wZKX>fB hs\[~@5bWD + +XCF{3z<$=WZn^k7Nߨ iw9ZT(|[z 1rrx}nZخaٻqɋUvNEzu.0 +cGgNŲǩUPJ"ٓ1ځ*UwH'[_p&7Z:utdmGǿz˝___Cz{.6ؙxsl..9 u `"{xiql:q\us+kUz Sv}ԝ|oNѕr.fVBh|x#ӼĽO`p+W2*g `yŊx #RAvЍf#|^e2C5aVX) +$́_l}4 k%} +sԊYUBY5\y0sZ+"l~[gȷ&FЈlJ-oQD$ͧ,Mzm{h'B~NLW-}C^Ѐ@r/&uf}W^+zW)^ݓO[#_6d]kfPJ+c$DDDDDDDDDDDDDDDDDDDDDDDD@CgCߤ>dqߔvib&MAG{AV:S5+,gaWf=ib20؍~3"~w]zE*2Z6#BS0OQ!wWEc*-룭$Ȉ +8ʍ,w +m y ,|ӊԸ&d cy~"""""""""""""""""""0~%DJMOfȨD.»ƈ^݆ϼ込THe>݈1w mte+{z]wn>|A;+0N-}_N;vvqo=q_qխN%р這Xo#S7&Z3 f=E굎iP'? +~ݏHwu\ wi#3FRX,Gvߴ X[w@SjZ}Dމ%ˣk̝Z3:/H'ܹNMxu=ַJ KVa7AlZU܊ݴC Fv;v,J^SR~>|3X=WgoG6sهǢ>Xͦ@ɧ,TN~I6~=5IƉ'c&+_h_Ԃw!rV{ +*:k/-ȩ-b0Spen*?6j?.|8G!?(V>﷞dyGFF_OWS0Raf"-i7/{ EORӽt@hvd~k/79Bׯ!48lE/oIv35*X;~KvoTo{MXd]R&VII_+ͤzԍ}a7\LT)BQt 1vlĒ~5߉r'r֫6dL~&V}Ӿr=B;v}5s:#P'71m忴5 +$x7Z4-DoRQO5|)#{?OM7he~hc\-f>i(c<-fS<KYO-eW,;}KY-B"6¹u׷U/X,faR\HL;i`R2WH^WFu̓ deW6Ώoym?zQ1-gv AfAUw>"YMYz6V>>[ [Cq Ev5Qן}\+gԘj]k~,< X3;Ee!S}d%Ί<}e9vr:brHؗ׃ZR8 *?+ O,䱭rTXIr@l8XЬOi#.ıw`M3#UPt='P=؞HGmC0~~ҧEgG|=3_+N%㓻n}*6G2ax\AzڔVA#D1\./$@ҾsҐ:) '`wvoE6v.օ6e1hlG:n i~D3(SrMsyl;޶EŪBuKQ/;/ޯQj~I'22> (^P}3G2z0+TThp'ZL*os-ߏ[b'E#kPE%A[2< ? rcsLp*\e{Z yUZV4߀4?b9Wz]w_ʺcؿu;:>ܬ s,x#|"FYG^ s-Knw?Y{::^bo.a۱[[70WSy5}F|PJ]{;wK9y.Biv:;UlU^TNi{%F/^m R߷F={|]}'JufbW0|*+RimhHU|@\RcWd#(bPtm+RQ}ܕxKzZۻVݻkcc!]XΏ[`O=}"Mu0F9IBb[+"?+ uM7Й<āY6j#K?tG?)!=J JtPZLt>K&\}5wBs+:iQasO>""""""""""""""""" r^ZRYu'~%ߝXK{OtšYH G KM1%qfAַl5+0_>RDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@1c-裂`mvnptAM ;Lo=jb *E0#kctFs*+~G]lNAZ^l} #_P[|}~^67%^ŬmNr⮭mփ N\2KqC`K1&ubwM@ހoG gCDga~"ũ@Xgc@-~ٚr9G>?񮻭׬mHU]lh'4&b#ukw߶CdVΠH?l1g6]w]mYzu oʫř5TʎD2g#^RV+Q $OVʩ`FΜ1 #S)]h0aSܴ/[TOc?2,FT[HlY߱?tG%l hi~*lU!I>(mPzI>ԣةD QlV$6=f?$nծ-W&we*NUɭWpYQ=J6MQZ֯e݀;ןH+lllods"UCW 3%#*k}2X}NkZמGXʖיBz#믤|MZ T]̊8a羆z;/nhuu5 9etiv%It]n&͚y.W yk5llK8O$Ϯ,CA$hk,q||5Y5$Ԓ@ {"` c-:Б6ޏoY^?"U vf$Lص먁!ٕд{[P |v=IkUb@'Cܟ%_AHuf`{wܒ-V^Ar0 Nh۞+.Cם rX VR:'U:I #z[%=} +`EVĦmHKٕX@ iFY=$葽'_IZ[@d X" 1Vv] fb}.&ǹͣ':ZRM+ꢳml@ Rď;0+l?! kog8[U*^WaV#G}{_ +b$U[ˬ2Iu]`t봯b=wm5z4te$vqOcMA@ҝ +I:@BNŎ{ oGǻΥSZⰨ7pv[;SfjyTn~ vF!*EAϕ@Qb8LS 5jkvY4G*T{N]W}Y(ȋԨրob+A]YV)n2,jPH hG׾gX7Wκ(;|V% +Oc_o +XHH~)Zr+Q^.@׎yzSV6QFOm#;9MC9mX +$R}݄x4.EkqԩB`,}2翅{jS#|wP~87p++)*z)!pH:,5un.Q4kj_ GQ~cq\-, +BE܅bu/r#7**q؟&P|G}-aa-Vy ꔪlf@jÜt=Hk]W31@LW keeeC>X$(8Z퉃ZO![Wv'}ǴEtA]kԋxgsJjIWԡYҖ=O_Ԭ6#8SiZ[C7:3%2V=K٪PVƩ ++ԤGQPt7JWk cQWn +4-a<خSvI;c%?!r9ԩ#H4vrn 6:RCO'2{VYcVt|yx>-J®v;LŴՄ+rM!b= k{vӐtR[v)`GV=܏)K$+h%VMB4w5}`Q, m]>f'[vȭp%GKz)vc ed&MJ;zq:%%=UKt~{v],bUZ`c@ `;Fn5GVk[|qKUJf +;:} n EUn9a{GmoZ|g>V+MQS)eQ}?=q0.Pdh1OHL*p1˵w[oF8Z11[` =hks2x +@kŽ8Tu`(^߇iG|,Ljq5^ +RWZ],>t=򞭕t> X1H譫'=nY08_h,OJ{Xw׼0{_&:ϠA{v{|.Σ;vcZۍԵ2؃wО>xZ*bU,Dm[}Ԍ@jy,ЪK + Z#EG9ҋlY%ӭYO +@]t|ob TA*6vto&]-dcUoE=Z(Tn:IԹwreJlQﯡ*(RV Aց./,hS\/')iAi/{kkr|N/eHWrv~pCzqӵbNl'̭*dOG۷{ƷRAQӡ-Ya[Ut=e+E(_wۋ{MƤ6G^Ӯ:״^-/U3ׯM-T;b#܃ӃrOFYРwRy],F2r/ciB)#ﮣ=Xqc=U {M-FŴV +tHt;K .M&zѭ9P\kƏ=UQw mgϓL.u+8q<k{LK/,jљA+{W[Eb#A>ơLj'eQB~U EⱰ]³y='Cg 8UםL>w3Ҿ؏Koڕ#[-:(n{=i%$R4ldkZ/_Ey5v(u`C+T|ȔxX}Bs}]ŦJkZ{@!ߞ;48(@QK I?.[z=Jl]i߷upwX-zP޼L.WwTtwGcy<6F:Kk[#ّ(ZUF+Pȋ|Lfb<7ܻGPzU}JaSVjV`"GZzk@TiFyqr(.'??>|J m)__#EgS&z=~_11q)NQQwW-qܒɩ-Q:>$bzE=Eähh%1xl<g!OVsKV@uezwӯ`4$qzԂýQƮǵj@ϾD[o)\n^'EH}5ێ@>?QZ"\* p=; ˷qURdR6eGr7y1+)-jְ +I?0hDz{T9Q4|&Z¤SnY=_Y;@ǩ髬Zَ`RƻõɈ`zذn vև~<KA#bCĴU*A߾c.뫷3Ht Wu=̬{#^ +JvuoYYlߧmlھf}&<[RܥC) Ax2.,*AJ?C%+EJ> ?I%T 4r|UeCbӘZ*TӾVmGp2}jDUX#D0xn8EjDn6;QRl HȒd:8LoSӥ?8 +oA0ڵQI!=5Zf8QJY=K?I5ִDT@-݅FC+Z;!ږPOKOb=i:YYGQ 4A>H2SҔV`ӠE OUxQe_t;~t(@`;2b%fE~n ѿַ*f*ض5t`kn,|f»nN )?vw~?w֪X<ْ" #_v5,nq eBv@=۷a_arvd5aE K`'Dhh}LDvZQeUb])b ?ܗTIdn:th|)w㷉Ṱ|p~tDvSҖ?xzR#{V""""""""""""""" 0XvV̌X{9ے } ) zc3zXxa[| 63;TI7+'hmAof+j{Iƿ,XMASf'$:[+#핱=V?G/l%=6?KzYE jNogG?ZJU, ޢ#FvK\e=V?Řͫzt6x>?(*f,}>LDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD"\m mmC2]xhZnzn]~/ uԄ= fnv$s7Ӭ;Dgf/m~JoVkGi'm˶pxSU:e++c^N}^WpccC2:c}ᱯd1R=~ MMec7G̯q:HCsib""""""""""Q($vVUxu]l}x*T3&ޗFCe`q3yC9B,G{ml{L?'rcۨ~~Zְ]}'̇qؙCɱ/6YF1y?qY{ee +̸L~W7mήʀJ=Kwfm^2GP#jJ߸#5%G;ͥ{|6{fxfeV'Rf:JAxl`T}'Oo}n{cŢpȸ,-H}־cP1Z3tmػŏs!fpd)#dYZv s+=|z[C&пzlzИW0˸l햍ZI/R۝Jf!H vl y;LkjF5XJV,*Ta=$KL$nרn`px*_O['J#&Nռ6,\eìV1$fzGT=etվw܍w8cMʻE~g>a7b.^2 8k2V6VoǏ2.Ekb(`~.DDDDDDDDDDDDDDDDD@/'S߉}igSgSRuw׫v*io$X>ћ+@VϿ1ܧ^]|bT뾷`x63rpgtl[=_l]SeU_P"]GS1}>D-u(:`FG>X[W'wIןj.v p R[z)z::$wO#$]gPePzBf'l͵N5ֵ(E {;q]n-7d*V sFQFS#C1){zw;nø0P*3P[cjeg m loDK9xk,T0#ΏiqVThz7ǞW +`&'=#鹎V.4zY\eInkd𕈈*6z!U6u.)שּ_%zzf1 X&+ۨOi|[l$k`q\W} ExX!Tt䝒uwDDL//d\eҢ̆gGmQDfj""""""""""""""""""""""1\-gصSSm `4A?txrW6Pԕ*I +ttټs(ڵ1+83R} x.Ls84eewH#~Ǚ>""y}϶H<7#g#S +.u5I`tljwU UXOH:u$~a:=jwխoCrE)9.?!@\/#450+]Gl@ICZʯ+mXs/艎qZ۽$OxmkԦQ ~z% g%7R`y ;O|*xL+~C$oGGGgj`o ucOI葱n/s%[ڻG{&DDDDDDDDDDDDDMs/ +豨7zˠ5j47p)šRDiLDD1b^W-[!Q=ݗ,bvmϦzkݺA׼[O aqX3שPw(:;- +X::ëh2?n.kj6w(֧ζ"ew¾*ȰCXèh3W}L̪*Lt>GC/@Nǹ}(߈ߑfj2,+()^ă}w^FeXmjcIW-3Pcҽ +W#7៴LP`>Ŧb'_7my;?[e`f,Rm v/_%Q"aDwwA̧Q1ԦKXj*fR@{ng\ʍVk]M +-YI']-Bܖ=m#oHވ:]O9r-QؚUΐ>o3v r7:CLBa~g%ٴ"K67_As >]o̗Ǜ9r.Ⱦ,dDY%0?5Б5 8%#~=_q};/q~mYg^_Y%OKVq]:m߂{dy>C?VHm{gdrx춥WaֳW, {˼n#YVtS[YzzW=sݼG!'1qu_ev*1=J-,Aw] -<**kU:Ł2mkn. +X`#>t#cz܏ _6.A˔R-ftw%V/0c: (O,;..5m7GOOmtw| qUeBnK:OTT_]vO-qo%oЦfEU9|~dl~NrJ9tЗ} +GLᲮqbUjnDúwMNis3Q%Xx>X|6|LV.j^\bC=bҐ>fhvd,6n^Ay<}6,P:u٠=,|M̝僗Fv'zB۴0k)=fw '~&7bWӵ~F|/S@OdfDMBȧcؖm jj:ԝvF18Y;ȶUxǤ^|=s6raSM/Ҍ,XfMpY:h@|bNHپvb(?hoYNS;F-"" )  P1ި^uykʉy}+\;vS}=/UOYIקO%^r 6$tq۴O U indB3 4zIvّS +ժ[Xct^d9<5W#S>OIz ǸGUm+JnV>6tF-0=Ȍ٠]@w${/YvF>KUUi7Xyߙi{ /eiicmh)ac-ؐOFc.pf%KYjtZ VN ;ØcYc[N-  82sl4 ";O*DZv)H=JIc~LqT(X+Fʧ[t4Nnzza>u0w.:0߂}zWj؞oG.Ze -I##pP mEF'^!-cՒ|ñcu ~%8ݐgrع;t11 5Y[장c?ˣo[ + #zhv1xL(l ?lɔ-V&[7M+s%y_{k=/{+ ++k;``|<*x\+r/w'70ڳej K&""""%-jkKk|w9wUDZWNϧ'M=d]=f"P?s$5 +rl@h{310vYf"*wN]bXOak;?(Ubv]=D&h#L5 +Kl@35m 9$7:,2GHu5߭K|~>ZB?Kw&er\6G1EVnX`g{^>s~[?5E rպ*T kG/|K_,]kl\鮡ܝŏ7_fq+]GP$PUYNS⪽J5)5ۓ,+$E+Tێ5}aטAV=UcȖyʳ;r)FzYN? g}dZCZֆ/LlJA*]!|紓#NQ  "T ${ϊ-_114~l :bN=r?eX!N-ވ&OLړEVձPT)ωs|7wr#-.A/Gn mZ|N԰ވeƏ.%_.V +GGc c$3ಹi bS-5o !eqXûgUr;@m7{8ZVzch >u$r8_~1Upn:RgQBcG'1i)WY)7ߥ=%sX ǜUmG@ URX.O+x=3#u='^;Iq\:#?3}yp`HꝘזw藬wDuhv"KB،) Һ$ v: {qKkdoc3[q9OpGˑ[R!V=@{ZZ J'#(l*yoܨf[㸎O+jN,,zf~12(3/c[5i0ni|\#>Re2Q}]K:` mد`vchrƜjý"tp59/|8xlWg,yO8ziTeKuڽFv>.|Q\^( w h$wm8쫡OՎǁ;w\mm'#Bnϖ}=w.|=/0>2^U)%p~+8WTXWZ6[38q*LnT0ql2a/+f*K)T[ڃFV^65d6}z Բ[{y>|jF6Uޕe[j~rS>&.-RuX:j8*WZ$zn33k˭Tէ[vočqaKf u0ٹ'%ƌ?iKi^ OI ++lP`$d9.7"qZ$w L8A@Rt%Az511oK3RQԆZWN=D-ݖdd_MW`AyLX }A)$nEWÆk^F*٠zAn~UX)pv'zw[׼r7$K kk:~FW|7Bu>~JbR>;x XfԬPzL3ORmvS +l]>Iٜ=^uu\yf}nf8{NaFz2)PTb :>A̔ɞ:(SFFVljhL6\ڃ߷`FljDpjAqܩnWq:ʪaάOƵfj'\:::;ԩ:`cy 7t[)o̭ ^c?H\.&+d>IoaAv + g+ħ,T0l2DUmXx Z,@'CAܬ]Cyf n n[sOI~?)mv޽xk=g$*оBJ}R`ba\źgm]$'F +uH;)|ɹ]P=7 K+%u=O.X,@I=26WQk$.̳:>+qFy|u`=%R\eH۰Q$?z:_YKnJF݂d?{V?MlgtYe)14q>άضoeOyg'݋u mtaWcj.5z[ts+a]Nj밠CyjF-l{ 3J;y5ywRlN(+BNԞ$XXWnGp@U>^)b/bcbV|Ut +UG`{葭￉*+P +[`?ɧ +qYaجCkU 9FH6P ` {߼vEVUiǭ[ZR[Gcgw~ҧm4M}CCmT +;{ɟ ӇKc@]`Aր] .H_+rq`Ρ]X H%+!ǯ%h5VeEz .I_@.ڸ +2.ۧ-B#cK* #I|9r>0bŬg,y99Y^'-,ܢ[bt +vu*n|s^7Zto{"mDo%"<؁g@)).5:،Oɘ;IJaZN^HW;؛¹q8WbύYbߤON?2v) >m*cAp)r 3or~ Q+,_dT{ҙ9eVlrrS}>;xa7I9r\G-Ֆ% 9;|vrVmx_0sM,u+qaq[W-!]Kd|LT'UN8~>e^̶ G{8''Ŋ: #$dX8n 5xY]Ngno_SKŕ5ճt-TuսXZ8mV3[,4=۹]Y,8WsՑCΥJH:#lgq[? Y5b`YuUK^|<)8cnԹ}}ڊ5յ Iy~>G7=XQ,鵹J&>q5) R}Ĺ? `kNdC{sThhh}bg~4;bX7̍ٞEulS]?5t\\v +蝝,|(YW.[VaUWdV ;v>n7 =m?i)uj=sZt7]SunBgSZZ|ޱ4!zRu܏L'dYEӕX8Cj#L?.|=EVPdQ 6ԏc&|ScW.V8ғd}հ|,乎E_ҪMQze mˢ/}mE\+X/Mk{:x:(1L4v*{ma1U}{mb=K-nޟ{u2Wn'7eVV>QlNjcmv2WÿǙuz5sQwXW/`'DlH\ ܝk^uԌIZ"}T|#f_mY6O[> 28촱Coc)"c݅SKܑذ~/ǿ.K8[g(r}{Werp( +7JZމ׃s˿K]TY]e*G-Jk}v=FC')#?.۰w]b@` }=%W"IS.CR(!ASꞳTɻ*{ksl% l@os!U)s?7[:'bZ޿V3aĸd{Pt+9w$aWFm){EfE +AF+P;$ͧ|**ɴ[jVaϟ뚥/GPqb 㰅hmTk{n]-sP fX?(:R:z[.L곮]=O@t[ci`@E'~sÍeXWX( {: æM˭GV򏻥|}oJ<$3kWMtYpcCR-簘ӌӲvtF߷q^M{}3y ּK c9BuY)Gjf~ſ ѽՊ 9z񩕈(F&φ1nd5鹹At@Iv/ٚtT)pXGs!6b4/H]#l /᩿fgT[CnXy]+N3{.WL@a<6Y]v[yU#)*Xw'V%m,=Oh}{Wpt_MU9N볬tFގy[kj6YF{Xٴ;M0 /a+k^mzCXA*H +llr_ X]m+[YF<ǧ}L#]Lz'y4T>BLg։sg6a+ +ˣv$˕=VJe/Xz"j]lkȔ.͌-,kv$6a.G"{/45Hkt =QHǭkbuILqW +섏ԃ b|!uw+^ƶڇɺDof?)ϵ2: +-W +N '? j{P8w,,m6yv-\x:8T5㵝kأ'Am{Q,rR]߸̚(@h 72W+nHL?|/߅]=zغ31a (JkzKذ@[d{Kٜ-YvýVt*n+ߍw} C)8u`OP?>jE^;'wgbӈP!ۮWƶG#Xe,^ר0F*|E7]}}]w0k v`:@tǯ Bf6rt1b}Ijy1Rؾ\'DGZ.ƣRzUHdCJe +A}7)khz5҄yg1Ѯb]MvN{ncjnu7Y+aFoñxz31w x>% >cjJUS۬t#$vxJGp>WØkJ:[ǻy~.Ycٖ3IT M/Gt]$=t=Eu:UVYSԽr=Smz== Oס߸?|^%kUJTh'A`*`>Lvjl]Q= 4|Az.IJzh}C$g~űiUb9PC7V]7øxV6v33`#^nG!:'Q߳وC9/*\=[mA$)`[x_ u/co,} bш]_G߉/)WjHr̝{iЛ$$'2DD-d׉[[k"1 +}I3:ڡv=)"dYjU.0 f]X=؀͡҂c2B]XoDl~\E8NtoI2DKSuR+=}=j^ؗ""%O܏c-W|lyb"%7+-dU[[s"1 +&{GAl=DDJ|%m]PM0=#@H(($KxUfֶߢC)b""""""GΧ"~:ŊNPR]}B]Czם}/)e`gأ{R|#ľ{l eĊlG.""$\OWl{m4N$+?.3,2DDDDDD s +2\җ`d>`WJ">^?]a(Zպvs iP_Z[ +V,*C#_tf~OŻ#g^#zynjh˭[EW`BywV8k\_Cե$AM9Q-!F"\oc4v /#!1k{l!U6LÞ~R7HPw+.mQu.حkXv3H` @,]Xqb_ǻ+V3XR Wll;6I'SwܱJcEw[pXa\!}؟9r_V?]sgK)jꮆ%vRhikj)ձ}Jg%Wr:L֚Z] >9 m(Qs Z +wy2^mkeUBMlWGܳO?Kgcc-bN* My.2`]E&s-DWW +%>R;}ƽ.VӚprTnC[BIU!#Gef3 >uxb,.Y¨vj`=Թ|G?Bj_'Ml )U#?0='1F>]*'/QGdl;vNf­q cEOp=CƷ)=6 q,"QW@wh.2y. utZkfw#|ʝ GCgGkZڇ`3ܒcѕ+\ue^^T q"U])f:ZUMw߸ S+VҧѪfiF^7lVWYqH#s6pc[Uʬ h&s퉅HKJ?W +TTtV5)b5zU32@; '&|@찢a:U OYfϊV;/0RK5uE*ɮZ=븆G-VZ7^VtNZĉ3C<3Jd;l̼Ki;/\v/o?^Og'^EE–zO蝀<&N?wzu7Jv +gqrlsM H t4N1_2𭕉&qêG>;GiL\q^>MVљc̎Z +TkYܢ/W*K a&y\YJ#:>7JF7SEU+lV}˪t>,곉`OE>U#ɪ:$>qu~Mj.: +9t([]l~'ߑJ b b.tSW +4HlX*Yɫ CC1TDR[hܝێUzkz÷zF-ηjλ8鼨; +Huhz?Y~2'j97Umwz+XPHs%չP}7¦P2t;6GC>N3}[eK#m\(Dt̟-E:}Tv.:Tc @I:{JrV[gIEaVSaKw܃n_/8zM]*)V=Z]SrRhߵRk:(իt~O{}f:!zucXSp Ŏltacgd]}9]5@A;Hֽ¿+ɵt=ܓĀC|O=Y/rMF-[`onFq|J*{cEUe`0$}8mFM-[rYc8 ;F?G1[֩BGcd.37.qDWc@%`l o}HF= F?_*jjGISgx\ QΨK\-a#_yss9.*5R=%ӡ{Wgz[6v!׿1Vl:r0lgɩc 5(:~~'@yboy*~4f5 Vn]n@ ӭ2W~{mN]-~A=Z'z >JƥĶ};#Ŷ@aۆ%+p_t{[LGu#dٺMs2XQeedz̬)a۶]{HY\Fs\K_[aZ 3ePXВN8Ua4Q}u2m%[.?gaZ=^t_=ZkǞ'?>G!̪r+#ݍ:z +" B@@*:k2tT:jko驉x, qz(RHFVX7UZib@ } 'eqf2^^ZQـ%I>_!v*Z]!^:K {߷y)hLpX@ :{uw>e8y^7#uUk~ַ sMֻ-PaOܼ>on))YgRt:޻w S8\{_D0l~{oS/Qū#W{eDϢ,[+to9Jhv=PHkPi')Y +nkzKqkkY^YJH{ L̼.9SdYbnsש+2;Jrݡսix˳dz[6VF: HVig +_+PZ(д|﷎mSgSZX&.Dcfxֽ{'H^ղ{EY\a|Sh>g`}:^d3N3pr8ž%wzh:fbv~`G7 +B 4;Oap#RUQutuA߉o/ZqVmzg` `7>CJ0V Kdujʝ}{ I9Xm5=\-uVK)EP;7c^/cŔn.Pvv]u\{U[/tnrHT?RH)_1r83&[_Km|&fH8r8 fGE.w,0 Ƿq/3 ĭ~eydXTks묏29dq)C ;u ڨ-[7<0>בsj-gkkutAR{~ɴaj(*H4=99g=bYT. .m3<5tՐŝSLKu7[܁O!|Iؾ㭎rjF ezTl#~W}?ɣ hUj,_P|e#/K156: ~>!akTT2pxYVJuRz/{vPdb""""""yj :::#^DU-(J@Oq+(N;2qpJ!:^gw`Nխo^7=DHYaŇ^ZK|uV͈v xljXIX3d_c\[fSqYC#gWeM鲊S #r/%fUuubVYԟ+@';J0 rg&GA8ٶR€vA'y2negJȺXF`~$؉;5pQY Y( JDDLWęyv x[U8U'FG+VWVg= Sd ̇ nn%v^l +Xk}N3-KTZźJ.=u+&v5&@-"X{3l Kn# +̅P +* 'e2}U˲a麩F+K{{KrUlYf4`}ܱוKU|zU`6\` w',f[MHO`w=rTok#l`v}d{3rx\ھ +MjP]tPG=g>/.s{%bζvpzߍv~M?egُmo{x WNO3洽zCPBvmxZo,dz[;+m* `v{yߙ.O3]+zrKtH*{v=s kkHuf NQONλx춱M>lX}xqf-q\4 }Kbf bOP$Dk#t}|WmK79^~VpT$ TW-@'!GeJ>.^+nٻKx̄w6\sCg:tJ62+zCö?쩝E}zͦew1oP[7Tr,4ʣ75;ZhuzY6$>Q i:2>GsbYjlfeDH>-uo%qIRU#L;!qV^[o*jqk JVޯ@NBh{7!nQnʶEcA'vfrqY6Q \װ3ttNk,Xuk,OM6uzZ¿mcUcS~6gyR%nd8+쉚ȻzkbR.܋iȪZ,Q@'Z t;﹓ɷjd ж;8No&Sij&S+PQ0ԟzDlv$ipI9?bAnoybnH\z7=έFb]o8|eiUnUѤ v<{9Bw;XG$ Qx4[Tzhgk2Pp@:m;_nq+V\j?O߶z1o ]oamb̾;WΪS^?ZWjh,.UmvΧ®^5iUf t f5f[:]ž^{+N=2μPVbmD4~##{1+_S]Ɋ,-}hi``e恏CPmfSe N>Aţ2܋͕h+`I[xnBbRZ[ހ'z+MV6MCk >ZԱoLDzʞfMNǧЛ,?PGc=f97f_IQ$h>vf]Fp\3 p*ʂ$}}SJСOL/':\ult$ta|O_2SMl!Վz Nw;nHش +PRd1v/EY3޺ZnmP}IZs;04YЂeXN^z37יUԦғc7`[XA$xqó=djZUa3[yn.,Xku[MwY ߉}@h y=8;;:ؙ-qBtBVkɛlߝ 7"r8ǥRXQOVƜy'WSaQ5t10}dk N6#fP x~rG;M7fb" ,gaSf=)A/} *6uggr'#.]Jب=!݋%5؇NAAfkƭrlqhk<|7F;wMZC)ڒOOck1EXm*TU:ukGLV_em*٥mH2%?Mo4u9.7; ww%e|>PCVJq@]GqzૺɮhUڦQz+ +dc8A]t:\;${ܷ6n!ñر~k3w߶ݮO ^OA j,0=Hm jWn+e˷smր_`CO|u,6׫]],I'[aҔ3PhxH7pMTerRFaSElTYϲV!XO>%cZ1 ztkӀw˿׹"/L-~H 祁Ho~/"P;V` {:C#ޫT2:e=h +muK +0P[^D `jf*" R߿NK~J*6[RRPT ֏뷴dfӜ]RP =?xG`ŵ+{hv[y?R,ܽ+z]ߤ6nauZP6iwKSȜcm|쬝6t1gۚ٭eړQ^w8j*)fRNۧFOiod4 \rĜpTA;+6KώŬu +ۡTN߄xZwŖ =/OGFӯ/ȩr2KخHVp4<aJXuۛ +Mªш*̕hFff./qޟS+*4 1wδEzTvV@pʒ#f"Yl mߜeJP:@j]_mޘr) *wYrV-5l9[lmv 5"\xNR$?|+Wm(EU +@_Rgoki@z뾎6eN#(,\ii*/,F)$Q÷$e|=^^ey}eiҡ\Xtpure#ZQ;:$~\oZZT+=};e²e::s>ͪ˔WpjfbAǴWZS?Hܐy 7LR[eVFG GKǸ'5E,s0֊tZ5d6 +T"ùyE)MAf, 䓸1ɴ5rN7Z5b%ZЗZ1r^b *X' U@6,{ZwbUU-N%t\_ØxWJt+n!dwFdz@'Ćr7WywV@ FR4u GϷ_n>^_yQT3[8YoՄ=@; F + +署[[l݇fTh÷oF/ +\u*JUQ +)VAADçRc%"uuНCjaΆWL܎K+$gD$*{ |Eٜҷd[R16*,|p=26zwYЌ»-Jٙ`)bmA ̠.O} 6P\^o#@{{pj2նRm+?EBCg]xvJo,ԥ{ +(\zڵ r@Pt߹2"",eӃYTA7ɗ#,ݙN;"Ybv` ߓO~H A ll(N~C-޺Gd$2$O=Cz9"Y˫ :֣[g`7 q8  ;'U!I>in/KQ?I"_EX#`F=DO6X)w *I=;3hORHcؗ"""""""""y6(`#z=DDDKY5#YkU,?Y>Hǹ _]b""""""""$[,lkkQ^äR3~J'Sv-2AA~=DFgP~ +=ƈ<{!s` if ߌpt\\p)+U(;S/&6=F !* =ꗸQ94})GƮ=2lyA^̯̋Ngb;(ِhM-k%mk[7 '@ {>X湕\۫v)&߃Z嗏Pu*bDz'e E9b2q5Re,zv=FNG'7dz&_MiI#K |+`zW<'{̿c -&)һiz@.;qP5^x6 Ƿ91K-V;۸SfM4bZ9[Uߕ,;u2'?]cY³VX7`ña*ȣǷ)dE^Cl~K6/بP/dJ3 `1W;gb_=-6 ^e>(LV1.Iu]V|w!EfbfquՏa[n%]+r* >ݦEmj̅ $>T YeuP$mL7ܶV_Mepci#/ͿɕG\kv*tcg:m o=Bej|VG}5^}>|>%">3'OP-HՆ6]4< b^55nKץ +=D` ~"۫tu=.aBV~<_ٕzaёH z+ȫRubnY0 O};w԰9˗ gj>kH,>מ߄}ÛfŷӿcHMuo{#ˏY}W_@^0oߊi\½!=HH;f\_zrǿ}rv*:ұ*H}.]/b9_t~}.=)5JG5%Y޼ ++dS&<܅7㼟9!B\.lߖw*TW ]$^İ/nbS06;;y*{>$%疼q^Ҵt[K][[1W:5YE[ѾC>}3ߓX6كI;~733o6ϑn>-ATUfTw2GtӍNbSmKQ鞮P>W'ٌa}io"8iu`H>N_3œ~_hM`6;#ϴ~"z\[q]r2M]{r43 +],kM`{/ů3´ز RC~۞~!ɯ0qT,vV(o&-&+Uk~`o,Gp>HI˅#`b ֆ;̏fbKRYI <;{~_FzV{w`9l 3q1\POZu|(wt))Yeʂc$S͋yڗWZG( ]q:-_f=(ֿ)k։${ﰗi欮h5ĊZ@Nkd hH\mW-:!vc!A +X'؁d/j;ѱVYAuq{gyuǫEu_M~èO, v%u؂ 2|DD"tF%=6*%H[^%1-2MHFc`:@4N'ɮe=Ծ%U1@Gh ߥވknsRvB4z[ִ7CIMqkzm?o8)p2_[G'4Ug@tk~G2ܜV-w #>ְe +ݾn˵[ҳ +UKŵJ he\w#YUlՇ6؝L\h WmR*Sor>'=kjtIT)3+\m{8l;ܑVp٣hzR?J7Cν29o5Sa%icʬc1>_=^ eFI}Luk^ʮ5ӎXWjucƶzNOAočNZ`SM$>>GWP6;ۍfV5Wf]Yd-kU^D L \scZ]J+=h#"ñ +O{ɔ+OzQvG~&xMhOS}bu~ϏiNViU=T&Dڍl^*qznt]JbF¦ӑM kսݓծw&k 6z,φɻEҧ%lfK2ع#=ǧ[2[Qb`>98ظxmK'RWN*>c 9'se7+r}+p["Jⲹ''훫'/v(k_v{c.;F/lM8XP[Mh[ҡw0QJ㹩kf\łʟ:aw&+îmnI.\ +.:{$s2K`ru8uX [_gJn ۷i{-ã5TtaY}OWEzmo +l +Sb;_@y8ڼ[՟w4rqkʺꚺ:z~@thbrx̬.6EvnUM:0 ThiGՏswl"%Qgn5WEV.q{=3@ҬV +m7ׯ٩כuWQ;uY]zJOFd^jl7= +-zҪ,؍BSF`ՇS0U.µJN ~-[b-Wk}i#Wqw ^P[["2" <Mw{8aNmvVeT6HSlevކU#_A/p0 ;oEjHGd=K( k]gNmhuWZA[胭h^+/#? jj[_Q +:u`MK_ ]^.'ڡF/EhWV/J0?1$oۼ&V2͕UtUda^A^ĎL} deJZXؓܕ_8 ,}LCyS؍"bsqN#)2j-I/NurNr3+KNrVVP5ى?;LUĶ 4;k8 ,z-.zEЯP{1 r +k׻ѰV(z߾a=?wa{["m(U v[D-X\eKsUպ=or`ZH?B w\3M7[`z,S=`|[kqk n$6 o][W}L tg!zU,u5)n Ǵd +nWb[Dk`?{<<8Lkɦk,E +`6O&GωǧU9NKu}z\x8+lpl8YU\Ph5lXFuoy^EGє/׭Z8RY%x[*~z4oy%ި5dXFiIxzז95e6bE6"GD m4cQ`Wu_ LDD-dTVʎPGߣFḔ1wDO_I` ޶{:""""""""",fV4׾}=L bWBcVui\:X]LfzY ʮzCu Goy,ekXuCK%b""B+"̻|vJPJU0L->MuX3lq/Զ-UGQV{=C@x:a+#ׁ_fZv"""PKXURTz2> !edUEU㗭Kzm~Sx&D|E]_JPW$I>=Z7.J3d}[FtB$,MVI*MnSc}e"D2T5P`*Ow=^%(|vK$[ʲPwfV"$NK*:k۩GB:-̔b%̭o\}Z!I'۹/DDDs3ƨUQ&,fqoN.)';%&ﮐ̥`u]S3+ )4nbVUop@=rv< ukz׍~D^UWS-~S<.1Vati^65 +Vb>"28ǶFWʦ pR=^$^Jk ZGzk+VubH6<\_F/~Q +/s$ brVdj7ALDDDD@<[ 4?y;<rz_hR: }}ߕ9ndvQ%T/s3xړ]՟QTfFPcof~Uo,2LX6 ?bU}Bjk5?Hh8XՕIWfz|߿-\sOQ]{L@܏cp3]If+3TNv;ֿq{eeůsVeuo5DE+kG Wgk;`o:~}g!EJcT;cR^YTdZ2Ӓ. +:lm8m-X\mȁIVe%ԧz߼2沫6;U=/u(`짤a12sy~=3LrjuatME zt4]ܕd]NMP5[Ha2;muH}3l; ݎ=lT&*X콍kf$3\?ڿnLeطanEWxYB㯥Ku9KKtrOO}1[Vlg u)=#`JUnO;Zd\_uV,` )X,-X>ie@u=ExV kp=-c2ToI}&"Bj1rmeUB gK/+@fֻ޻Ve%zcpN@\_zl|ĀvwIWq\c.EWbRi@@ԮvuvN%J;TYCA:: +7篃k4SBoMݏ_3N#:}M։!u1V庸;0lr_Git&P>$. nľwC]X$(@zN;;*ryLqZdZ :oV߇p+][dzѓ([0ѓm&ĩd(SOnĎ9~/86`], +Hf$ǎ }*6R1׾Ү`{ĩ$~wR㥊Ύ5kگ%ې:=7=ccܑɕ97 %SN-v› źjx27+~#:k8sa=- +Ǩ)%~o"eͱ/W(ꄖB?G50ns1x nKvjh7fe8GDf=vֻLg!~!NArueMMu%Q^||ܩ`Ȥ;5sz.kVb?!V_ڇ~~2WüJ75Y9$N+/' +@n{-:[2~zڸz!ZաAV7孳5eLzmFּy1xbfጛ͓_am~@(nc2ܻ[q)]tV[jR sz_R?O;G?ؾ_H5˿s@zRF›'VW:`bk7܆$(W77zqIA{~n!@<-raqeUejh~gzX:$̯)[wqЗVա;V"sp]pz-a] Z:Hޏ>e9jq|>~?uǣ*Jl[UF,auolKpmw!N\5UC+X=P[ 1nkK:8I`-'Ը Q3ԩńpt҅Nw,~GAGayxT@Ql4q>=-WÛћo=Jdtu#{Q1rz[";]wڰS,}ʃy^VQOOZ0NtT- ׂ+}u/PN?\>-^ ZhWTWSY }rM -a-eQnbG}#C@oxRyWttGF{%z +>n@Kp+Ʒ}F{p/ՅETӮ;o]w/6dk5a+*gG~\X޶klch3tCvxx?Fe_͠45{ BY_B`+o:ǨXkܞݻL3PYaYP`v!epٔxOKh:R! zXv?1/aiGnw +οP7qH7+' %K`{{k̥< >f6Q:=5Eʼn'}>lT59.?= Ǒ3*F'q||2 eczԈ> `oʈOIJm 2Vgfp6e׎h+LdtFyr%Ah(ti۫~5u?^ kpբvO'E ]UG2&7um_ZR h3w}lnZ6:5-MZU%zV$[]vaB(EzCu :KY Kq[!~U: i +Pe _%cu!kp +#OaUFnEyZb$1:7]X-V; %Kw`'uڙd@xBc9snEv4BY;*A}|pjlk 6Ou)쬧lw}eχ>߇n56y^ B%د{dd6t}āwwWrm5_Yȧb$p>Lulff^bŁSlvיd?b-ՖU\!Uf`DwɟoԶZkd+SKW]Mn@L͌Gcbp?&8 ]eͽ~#8y-B]a:]LG̭:-kTܞðd^c8k֍۱X0Z%9X/N@Lp2qSU T-I:įo5G `7_ɖoo~*_JC (j|{tG>y1 ]Rݟk +E`z>y|'rSsSxUS־t{g3ᱟqnɴ~tv +$23nC|V)ahll w2c  Ay*>όNnglw<F]^;3@ +WP AeڙeP rdk1 zu;erxeQاiNB$0練Geote5PtG߿QT}[]/_^{mxV)dBnκ>N.]%gh tjUܐA]IfR f=NDZf׷`)'P,jR@I:'fQ,[*AGOqV"'nJSQ$L-LUX{Pa2Ba+(Nb"""XΣĬY<[ȶ]ZP]A#;Ir<-`H: H"y{Y[T2AA?OQ-}y [ jC 6%Beb"""""""""" #gWmP*޻u,c򾣵wSe%k.KzR_S`ƭҫߦ[#$K9b[}&;{KߘS`lTA=ocrS\RmnBn{.?:8LZ_#P*۲ci/ϯLpH :XhAb]B~*NmL0wTl37BuvyToEvuB# +IߝkSvET^¼ooM7 rO5X `^:'cb~⸦oE޺s=F)`($o5N%t c^@EdI \;=W"5Nʒ@ee%Xlk|Y;қE#=P1WU7ctUNca955=dHaߤ9za)XeXVT/Ed~Ab_i~vthZʍVNb+_;M]rWa41[*#z=Ɖ ~2|tc8_ϔKCbuhr+붣wW(Ul]v_Z&1EujP$ ӣ \=^2X[_I6^rc7iVC*@$ysy'UXٺ:6 S/pOQ?\YπrN]fH!UO紻?#5j[]@}e;7'KWe%Ee^=d#f9UZ*ΐ[@=¬JK 0ވ=R,[Xtni?)pvTkK= g;&Ì|:[͍e]5ԨH,Ib)꺫#jl te&ħNH .΁+7{> 2)ǹl7U: ?u1-cddՐf ~)c2ܺڸ[s)q]}; +7l>$k*l[:]&ڦGG}F?{Q5P0ae'#dc{-VY^9"W *;9Ԙ[WY^9U ߶is[mA"}+&{;h5X270P;ŗ_) na9Fns:ȰN2V!5[ˀ:}:1Y߃6FhWloᶠxnap%ֱJT{?{Kc1rqŶK=!(Q@T\E5u=$+mmK9=ܕͭ֜{)F[X c}?1r1))֝~zc} U|FByo_"Ҭ)P;oo}̍(SM]ϔmt;lKGN|*H#L;sRʯ!^;QiEᘒUG3)Ż)Cje{e$xoc笏1Ƹ5y-ZA][~2'ߍWE^C6~r4G읉F荏}KulA55/9qz5WYj5)g=eA52Um?8㼽O']V*YRf(E0I.V [k8:zW+j ʅ.tTD{ [1jA7('[ rBH>(zcE'`:27VMe>J:o]@e#~tv='{k%Sk`iU!S+LKbhȳլGP\Iilp%;ӆ$/I#[&^ K0;ui=,RqnGY`6lmwLċr5qfwn|(X~uOMַ*K*ISؑ)rԣ%ޗ+j*0v$)!\!,Mb 竫/9qm͈PQ礣uH#bX-~WjI5*}=SMM{zNkUkkץrYn&cZXET']}'@:#eyn; R|;NZU[izy$S\z,1K>J=c S>N=5c2R EC w#[]=5綖B?7S=C˜g$9%sm][$h&DD@0s+ɡ˪FO[0g6 2) +c=+IP[L z.bcaN=e* U{|F޵ ʱOCZgX.>V*F +X @>LqXbdbrPizXՔ Ilj{#6_=X"X $k~._0jg]=@1 +}.ۙ"74~̳?),ll-H2P|*t?!YۺTyU5o#|4hCmYAROA@v>zKbAo$XU#^Oqv?rUpS[&L/ ulk[/*Vܙ(zmXfEPHWD뷟un9g/{ 3YӤ 5&zqr^e\m +,_ VQf @N͏?(GѯUޝzFۿV#&9m<nu)R޲R~u;e,ffJlpTj#`ǿQj&~L{(mV傎cFJ`nP =SϢ&n\Uf@䁠 :NJ0:XѰv-.BMUVH*l5nc |)NK5V=v RZN ;3ͪ9+0(S܏R@#Gc22?^%kRrc{Ȥ|E[N.B擄W,jYynjv, *dubt{Wǽ<}9*5=u{k!tԅߑ|: +ʯǵW>f38|F52|̛t?h +YyYI]T~ֹ̌L⼪Sg٨KvM\XlwH|KU_#ji.Y$`w2 =:\Fk_Cg˹u7Րviʂ+=I09,V46ڽэV|m32 N#`ڲ@l>7_6.Gk:. _dg%ڮWQ +GSl3eKv%X)5 k#bi+lGgB5܍{w1U}n +ƯlAn4Y6|Sb^.E,B:^~}w?ӡk߹>Ho18]r-Nj~oWv~c-ڻ:h8v`^_vMwmFgjtߤIk~CuZ`/)j>Wv&>9<>Bbeɮ:Av~]!T㰲4ѝcR 곤DyPr7!صn34T߉\8(žθVRGU`pNnۗdj +H4Qrrct RI;'!W䗥9g ؜Xk5jEh3kWч}L–^,ZE70+^7چs9F+5Xx{m_GPBje"$nK9U5>{Bd@ԬP@2u6dQeu0Vd* )`657d?8x<*,mkHy2rAM}]LP$^FqlͧӮ空~V߱e00'v[g[7w丐yn1yZ jKko:t;RWQy /ͲGF"pz,z{NnfSSpn@z},/c{h 1*x<+s=#h)މIj"""csyl K׸ϵV.u| )?n*Rb;Mc[ J,dVT +6u {\*A>@`"a+ev)΂] ++ojOK.vK ?MNO$ OjwT4@w2_._EEzde`锩;3%,ge {o(+:{^}PtL67="""B[3_ Wfҕ]Tz!̛1*kC\h2Q6My*`IĻ-zdQNtG2Dk)(Dzl\.({{Xr%9Nc]صLˑxGGĺ9%9ҳbg2"%r+9F׳ v"&3[3lZ,jOS'F_ESVV#T.l[T7Im6Fe"CjZT2""$NK^2U֋1=#{q1a=8Nʧ{`А^N^W4z_2:Vm2#[.?+z_Wڈ~ .;i~W+6 *[7JP,H:?r{AY4#vmy.|#"l +׭RVԯN|MG沸ͽvgJVTԮBoRw= 1ײgV/mKקzUV*z~v9rW! ؠ;m~'|ıG].IߐGOaItZU!:T.XFzsὤ#/wJz5H;븑os~N׌zV,ꎺ>;&D?Cu{$ +i̳|\ʀlmWN;~W(K?5zdN{֡y|H!ea6c +GMU8:Ct:}ԟYnc!ư/]vŤ@x:B3౲pgN~^6 =̧nLk5 l G-pg,0D -:>6&/;ⲳ,jUoE̎_5uZ23ufרl yrr^6AOJtX +o4y~|;\`m޷1|G7~OK^/X.?I*jA ~E/)(\A{J_(C&w?.ڮ~P(ֲʕ`{I[rؗ\n(Z+gר ڀXo[{lcv!XVWHFB泬{Λc3(@Vc =^G̫vYaZBY;x?ZU~K3i[,eQjXʠ w2ܚ(Cԫ ڨob=z_#hȾqz4ve>wg#ͻը>D5kX:}*ceS2},oYK1 +dKmk}^T@LB;'b_s,jF5ԊS{|o۲jK`z@*`Cy#FajF˧%λ= qS=nT1IgאݷK[f_v==GRve=۴8,2UHk>#j?&@F\\A_U)mS֍Z`A#[[r^;>HL X֭}pP~ѭ sG3.|N 4"j*R0e>jĻWnZ>_!w!2MK^8gD^@I:>ڑ9NCZq5r3?w>]iA}hli~rq+{ȫ&H:=Jܫ2QWjzH w,aYr#Eiz +" zŝ*GHߝl~+-p}{+P5cmZ`*G-3mkHr.Ț=$Ig}]VQ)PğrIߙ +w.B%eV[>Wݼ[,|:[U"kud 4+/v^N=,cKʯZcbB!pōc2FZO㨰^>u6#2u"u#s}|羧kRհG#야XUTcۤ=9xN +ҽPOṘGߤw:Rw?olkA2"/tNsd׎n-MvPF >LǞG/p5: _=JGC뭙m~#^ m fE"DG~j9yUb Qq~@b]]ُy|bʲ9!i#w}ݼ#Rrr1JCܻ^M29S6=Khko`(Q#%x9gͯ ,kJV*bw;V^2:;LMr|EĚϛQEw+r9;xN,"UϝyW:/ח҂^t647w̐P7]gAQSZaݭ?gJ_Q m/vB.WOI~tVeVͱG%grw}jרFV5wU'e=:Gդ{> ~e w3:׍cu&iX!uMjzUt7{($#|Cq wήIJXvwfvFM:emQJ^6Ir>.ԵVޖkQ"v@Hnr|Nn~Fm+k +9bP:)7_nEg6{Oy|>MY)mbeqBk1y_ajIX@?=i5~cjNj§GG@UPwҠ=̿m?u}gei|% $Đ[ +"$Ҧ~3bef*(`ֽ >ADfq8FX"Vv> eBưzT^Ukr>o]ٜVUu걕Ֆ`wMv*UšЬ7[; +w*ꫳ4MeÒu: }ήV~״|.wiz]r Y P:T ;{Mx4_CcрñqY̧39\U]]E89-N e8LN3NeeLkt݆ƿ"_RBe 4H&k++7֖[u l6*`Z`*˽ >nñ* , :;K.FJVqv`>nEȈn9Z}]eʮtڒ32.¼ބmYP]*܁z8+uh9p[|jG lJ͊h&Blڷ۰r~mvڶTIk,'];~!⟖5whWܟBʫ1﮻OQ!Q_X֏9M.i淦_`Op&639w+:dZV6+{NLⷩ&!ʂϕ H˷<]ʹVf'Q^rVӧ^^1ج-}56Xm>#(vܼkmj_F#N]>NMk [uj>nXoWЯA$T'~|I<d4#ڹ [ $~2/1쀍zh_~|^/\+PVQ35A@I]v&CqkŠēb~8d r=$J,0RNƴ=5`СBQ̬DD(FzZm7CLFoGZ?C^ r+N%9k 6?ZxF5)X>zT &I}o^DDDD(FDDDDVef]Ob{B@-/R@ ~1뭵:lI(h¨@hJD@RGp#qY}̄[gd.qtVcP-kI߂dNi!gJx|}l%X!H ֶ#76>uҋ~نg=t,{wׂ|Ȗ G[v ֽ$gb%6UXml esY,ֵ&|0XxZVJ6=CҨf'RMXhu`R>t sgm}>C$n*ӭ߶TWþez]T3yܝwHϰ^ lTtVf?9O+~߲^ϼgĜ}E^]m@==~_.xYr5 [):#Ș1OuUYGSI׀ci(z]}vy\̥:=eT8׾;F~ =؅J='9<~]W`om> #r'gy F+1[mG?jԖwrB1Vy +tgs BVCwy3֧V@uV]{O9?:6֪*/ng86bvM5OJ.~ +m ҳh3g?F)̲ޚCteu]]^o 5JoF5Sh_{vnk.E,JFXÿ+ù-Xrb$l˵rSejTXXNA_#rژ{U#`J< UѝUXWFS6fGδU[0fRԏXuY ) UN x^m~[ .胱ߧz{{uma 'K]v^BʚڜRhԂ>+,l6Y~_@Yv>Ŋx YuMa4 v0I1W?$/{. +"mrge8ezW9~>76>[fZ_l%J0`ݼ65mf(݂q.]ccTK"~v +65u [Ogʪ =%96P@1S؆VT>JU_s]$'=|6bتk`QS>]|.G * *r,׷w! +oQվ;b$.asXt.'Ap6 趖t`~UI֤/o?̺:w^x#s'o%OUA@ݘTO.rTr*Q?+iU#צ:50UPK1:'r&77hK+J+zXZԲqǤ[bou;[ؐH@#Lq)J 5#>=1ۂP:- 5߷ym(AY:[z۹]1pĨg>!8W b>N?˅i=nԡ)2;3>mTs8h'03֝jutY[|ul}XI u[*ȵ.}RCrt˒ BI:WѫuNՀU&:$>2.//F]J-ձPu߸n{k +TG\2VGx䌮k]^Jխv_悠'N.]YipwS/DD@0?_^.mpΣ* 2ܷĵz-`PWNSiߢp8aY^nicԽvR~p3 +͎ZVdvPOR\`{Mm8hGSi?t{>b.6ssP{!'>$J gf>XB:>S3[Tm`pX!wX{igqX-NXR5ߍ빀|TA&qe|M3#VoĽA]n:W:؍̇BsՑUܫE֭a@|0 >욏 MxW#; v~ ,Z2.=m) ׽l9ZTXUXcMF=݋+7!ŻK|Ww#:puTogU,ﯱoe]9^ח@I&^.އ'ᬪ1,,=D&uKqk2mz`>O[?](UnapT]%<*m!n6ߙYL +䩀U +vO`2+}96UV"bn=ƽ59He}IBSck~m0+.F+_L_ W cr1^uM{nlh+їW@m8ޯeb~oBIdocSԍX!߲ }ZMWM~x^ަHnM3m)*;{BxFV<J4~_&'"09+- +:6LbaljV  +U:zAm϶A/u-l#DZٷߏSYC*غ#;*M691o_hw?y9n 511:^SG 5 I2g9c:zoUpmW"~xb魡p^ܗ=lMvPq1cⶻ'#}El~}d_y^M{$t1I8U R_ZbAE}Tgۇwʯ2k!+UW_ftclچ4!7{Yx`WGImǒ\\zƣhM޵p 䓡5Oku[@  }Gi'oxK9'(V .Hanަ7V[39(EAj-ŏ΅m1qvAN5+my +z삽Kٵ#XnmkXZS(J6vUWڗ׬Bԩ:z{oZg(L^UMn{c];>FN6eedU?2VUuj{{57[)]?$߈'߆G:zUO>myU$xk.Ò57=EGqy5UrΪa *;=H=8yQӲ̏$EN`rjE վ 0e8:ɻkz[X*/W@ԳXpuRՙe R>߰@H~NZy {Me߶ԭYQ&PKqz?И>K/MƐ{^AA~Lx.fP]SuԄ0]MSl9-Y{2IeZ;_-l^/ʆOGR`۹CT7V#uRH>K}6NVhzՉK5G·vMc p cuG 0) +|L;wy.F jd5#~}Oy8sV-n)=)J~:p8y|>c$goZ-kve)s2q]2:+J"Hbߚe]r4|슱EBFCAb;RvH_rqdfV +H GAbUf$M+kn;)IwfB ukșh+ed@CkC>iŪ״6UTm;(F嚰JKoeTw*xǷ}M:Kutoy@@~Ni#hk^\SmD[`:aGɖ;7.ꫠRln!vu(C0U:;}}&\bRitkμx>GOOкZ1|Uj~ +@ ^33_6ꤚBmf҂A=,Z5H]EmlOMS2)'?WЯ^t:gGŦMZ>T*|EXP +}' |¦kz_G:JEboη.ŧ"Jѐ2Qq)J%GHPGֵL\:pҵo^=315C3Rޕ&?I:$xU= +YG$ v'%O.*AA4gqA]hªQi:qV=*^(zWH~u)F5XR*.Ҁd'mw-;D߿I\].A,Z<*Ϲ$$8jZk!u~=MBFJ)#^; +PV@n{_{}vgOOYE-޷zV4APBtkB\zQUG\n-t֡/Ҋ::ËQ~ku~2I?((㱱K5TօH*t;vz;DUBZǣӦ;~Q~C1j^Q\ ǃ', Ga롿!rPĶJΣMtNV֘o3fr6%x+E]~TV4{MkU߾Q8 A="<2cWku2):#eA:=FziTokN.], e kf}!GJu445k?`p,֊[[*I׍b+r/oJjJ2K鳔}2hS3Z?PjǢƵ*Ev;fT@ٞ`µoD(oΏ<߅FKR;!ڳ(b#oIdUQJҴT$@RO@ٞ҄zUT簞1pQRV@ОޫQc(p*SNt+V +kQQBe01TT֊[EPO@yB rq)^K~ùqkPh4hOQ t5eiFv<̴rKǚԵ+@!Y ղ4 >{~d_ʔ};>롺zzwծ{&;7+Ct'`dyY)(9PJs`|(wu"ܕ<^u)S:=q''ȯCXȀP -Gan>/82&k2u]@qyBWwb/Pm}b$LS1m=Xcg\DDDQv*l #GKR=˙uu1'=?5yG@al^""$ bq:>;pRA;w"""""""""""""""""""#h,)QhRSf8+ڕ%T}a SUuc3e@bFvԝ.92)7{+pLK/Zok۸ycȬRzlCR54lH>eψV*cFw +T t#~mK |k9\{+en,Ѷ4{q똡[V= +hka3Nrq^ 'a1?7m&`Xiя&UfeoMmmOI5k~fS9k-W0T#uf#=%C yIߔs*kmBU~Aw=~7pޗRN/siZƽ/+FLɯB] tY#c/qc Izակs\~snDYwW^Tλmx.ߟZZ_ в0*e1 -.ʎe=}towZ:g=UeT3|}u0qbDZuuS}(KT: 6_^te izuﱿCxW¥Meު-Q#`w#)w8/iB|iJÿe1n2}:+lW*w> X13sUkUj@ +ӿ2|&o]Aֽ͚\Ye']@Sm'z,;voo߇w5*hQ +0`}N~ksKbʕۯ}RYvr9(ljr,TG']:1^5E{ƻoI:{S6WDb;#`2  ;4bt<ph {l]X$]:-VpY=G)P`lP*p?8{_N@Vq}DkKXz %a2<' ezWT!BJuc"LpﮔwWa{{v8B  q=Y Yɶ]NM2uaVCaB$d욮@TzP^G{޽ M he9 +i!UI^_hLZTEUpĴdeuOX֤u~iN6Mߨ'q9To%k.Ul[zV]k^7Wȿn'c}AWք]#1񼕼fcvX)#}l`&W5s)}8J,F&F݌^)Ve-PqFbpYt7 (7Ք+fD(-Q[ ^a9]mW6*Z0z;$:6*Ye$lGkeXlWԪYJH>|*yJ1 "ژe:^B@q}v1z>G}λOigLK_"n]XQ󋁐y\TSU@W%Guv│t]kXd#:Bw,z }92h\"^TtV~'0۩G1.]ܦMTXB#:>yc9[hߩ9~x;/OPY[PeF%p@6%;"Rڿ=mu]!j)f;>&c-!䔬z즢ޢaKl։]tyqrnnf`6VmWH;GWWbroJzuN;=_2N-o}J2Rqh)Vgmk]>OӼfYV/em@j4>{#˷Y2Y\胠{x;/p#є3^̻л((@zUoCsO¹UrF[OWOB_e?L|籿G͗7Hy!ϕɏv?.C+$\>W&?H|L??ܘ#!yqGAr\䃒%ϑ͏\~_y?/scW?{ܧ=WO{?/rsU_kQTWUy_{QT[U+sMӔ&[yG/¨~[yUӏ\; +?-s*z_a.;/˟s{n,@Ue33]Isy?)=v?L|$߼c]I3y6_c#$\>W&?H|Lr_ܘ#"?y1GCr\䇑%ϑˏr?K#$>G6?q͏\~_y~Gq{ϏT~^yGRy_{QT~]yGR9o{?QT~\yG- qo4N?-*_Q8~c1©<; +S3<9L~Yye,_]?Җn9Tk˔C\HbT@̧ t R޿()An7++)MDDnV"""R%b""RV""""""""""""""""-ecW[Uhڷ7g1G~VֺTsuUGP V5㽪+Uzkս0:5;s2>m+ɣ.=NRI:dl ӈYy];r;PGIo܋!:ꮳhtwܠHOh17cwյ ߹ǹn2. ,NE ! +뙞+:y&HS(^k<6EYYgF%Yۢ\=*]K|=_n>1k^Qe稍{]ɴc2[=F][~&j![e5-֪Q~GaӎT.Ut6_Ēl\wĹXٹvW+ܫ;/}6[ൿge`ٴNi|yNJOWծU<mE,4JG]縚ʽYꨲ2X{ o@Y˩Fv{HVŷ+"_+ tC5r^GXyqx@NѠzW$;S\å}>ċ`z~.i}?\!z_Vw.E{ot.*C?@{>Q>&·ٞҌlRP#j[-Ǫ 9Qp6l#}b`4q X6[]l#o]%=&es]c,N6?Gz2|CEWMkoYHO;׏WR]f@a uʙ +66Oǂ&FjtD""";Dƌo4Uw_]Rv4LgŸhXmV̯rVZ*t08܋zkZu &FBc|ֆ5B`Q*O}2?Q*mVůRz tvH̍EijwWPöY7.>˙ ^Eo ⯈1q=] nF&&0*.|K{0 @xr.d?_RFsO.~K",Z,!6KvvI8\AIҝb%QR뺰 b` <8_r8z`8*6GA:oŘqɖsVvT _`rYGr#zF#oAW;uW}rz6n__'O} ΩkS,:a#oYU|qb6u}be՝J_Ku%= ǪozEJ Vw oCgl*K6 +T# +[=csdm,;I t߷l}]o 7uDX9&%8j g)V>EX-cSֺ +BV 6;@>t~3_r|_hwg]1~`f[[[_kOSPvdfZ.u<4?\q\OXɅrk(1>b:t 篈FB]9>j{-mgH5H=dc^є(ҸMQnVh"|}L36=Nt^ď~^75sZV>cBh!S'4J e8[YcEgP=FzNZ2}Te@_z6տ+>7S} ]VP+`Ov>;L*kZlz+ļ;*Wܦ>ܯ)"=xMmc3ho|H %ǝ.A}[WUN ! ;"`a|v /躳Xv%|Dw29y-Tژr,Z dTʁGJ2 )ۋ VQDJ%wh5 G3/nyKm U/E=aomK.1W*Y-~mk]G}w~6[BJ볭P{o3`|7U\5Z5T33 n}3]zU{WW\\֢ғ؏aDx̬q.rne:KJT{_S7+-I\jOP/kAY]QR5ve]v k<9>a벪+ +U5?@.w]RёMXHv`FƏo:6L[XUWdyG.N%z:э.L~?qsx\U6Ub X{#}wh>!NEkz݈kkY: +=+găã{^˳.-׶~5" \Y-#5z~oߏ׿ꛇq:5x[E#iIo7XUZ܍XJ?_:W_!^ n[Rɭ6!{6wjؿYpꨩ,4A5k>fQ4~c+?*\;C"~0 *GP^,g|JƳYoZzE7abඵ3u4UWu7%C,v OoM8Tu|JO+/jUw([N}d.[\dQ)'], }ԛx:o{c4m G,YX8 +쁏C0DDDDDDDDDDDDDDMJDDDJjV""SQ+)HDj"V%5+),gfR(d}d#5 T4\Jm|MYl`: I;vDHY\Tcߍ m&Xc+6}ZUK"erwSM7M{V6.יMֽ(^j,Ckv ԃs N*4W/YN:z#~$Bu<\'Ls[pjv}A"""""""""""""""""""""""""""""""""""",e&bVG]у/&!>2cqܞH Ѵu )_/NfWe3uuW_Il}ј0g9n:.C6P-hN=&AX0ވ>`,D0Ի\ٖY;/bt~Gm>S:lխ WtkZ]}3[nj? >~>#oU/<-::~22EY6b-CzFЃ}w~Z0XzOT0߶◫ޠk*ʯg'ĝ];S`FnT+ZX +,þs8zǥ?6,ėA> ^?7n/d֊H,ª:S"9K13j*MK+XՔw#p/&9Y^?N%%=B_}^7j7RQ(fp_%>/TS|>2\bVիKVEWt->e\mU[bmݴ;?rbMU׽z +z[׉JRIgε5/|2iAj[*( ==˸\j,e-m,=eG/vc+%Q=5BbQz[UU5/*Z)}@K:hķq#Tl$`7wٞ^/;n¿?nNm{9/'J֌lܞ{ l{EnV>cbze M`v6FE?~Equ_zATB߹=r_%[`4/V^=d)^m~&/&웯dZB)n[D<Ǐ̧fU,Q + K*S]=ZKo}ne^}rj/:,,a ; rv``>f3l"D?&2'n\gK\gW̯~]{;-fEW[y˪ʋ?K=@ +#_xL͹+WP;uwgq;Y[%]@3af_.m e//ä؞uCU::޼_^nRVEv-57Jۼǟ33p\-ɲR~$5&2ԂWz$RDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDl'qV( +?\ s\=!gpֿceQ[!VU[*>o^HbrKV+ܣ aܩ׃#sy׶=6u:6@*̤0 ؑ$eӄw: ?+VZu6=ǑGT;DDDDDDDDDDDDDDDDDDD5;GG=(f|EF%~e[:Q 33nUҶ`JyL_`[’%̧2?B3-N}$d*g|w@v*$h#CӾw첤kS)eWKwr졘L Ӑ5]OMzzr+mwiL|UHnxbIӴcAc*Wz'X hsi_|\k,?]L#G~Gf>@IB9D4l ?p:k4f}:]G:oLW9dq]_[, A5;u{/w]ҌI=]ʕ#`׶3oGU i^ݰb('$<4]+ub,L"ԡTvh0-E֭}WXU{'^;n_3չ(]̊4u3+rW6QZt,DwfM]]C)d5:Wc.z 1k9Qkmu;LDMcDx?==^A͞PoE|I3Qխo^7TzkbXaF:6 c|ʷ1B˨[T,IZrz7۸>'}z3lzUHA_K=$5dq4PQQY iH h9n62qM WJXRh xS'#?$m ֨ҡ6I$iƫ- w"*0?w䬜Wq/^2YmJ'|G;渮Ch6U5ؠ MMf#evA Ab4z: ':'GAfMZXo0y\giU[Uva03=TV}_Wj:VߝMǥUvi5@7Av?\&=E~N"C#U`l $2(N(|I]rl@V};i#;KLLg}}4{+H#gmVQX좥Iu2kV.6*;Eg//?G=,Tz 5)~{+qzE}68OrX\57'gZ_0ܟ勪žQ6OipY2XRҭt[Y=&P__iQV"RV% P͢Y0,%]cl@=#jA(+[c0}U*ִ69ϧr(;Fַ*{I1W2Ó̮۫LlzR[Iv']'s\pve-J.Bz̹A$f*gf[mdpcQ v$#w{Hȫ}.^?|,-U({:zFgBZ1Š1$;wxYT'Md*Ci{ġC'=ǂA:b>gK 譆Źɾc2 JMc[^cb:SpjvH^Sf:.c߼Wbo`Ab׳$~? 'VOS"(`;9$荀;L:9Եa,M +T?t^PVlBŶ_ݿJfPl$ HnĭejS8eK}`ֺL:1o-Ʌ[d0J!z%PRr] +RGlvߎ$n_FJXRI 7b8W}ˇ]umUwXuZl!-5+(Uk݇Pv~`ƱZ5Ԑ}]؈,fbm-K(aQ7e B s E'!;|ٚEvBE`A*Θ03{F`g*sR5swM @δn;Q3I>'XfCsVnFlϞQ3tk_[rm'd{KUe\J2Ywɵ6X?u9)USe2='P]7~fv5]̓׊ãU""""P\*/_r=CK_v?.d108|\MVSZ#'$sԘV]X,O'8ؚK2Um=SEfFjC+)RpA"bkr8 h5Qq%X6>;1UJ^RWe$0Էd㲌z=U(!²`I;;1 ccՉe%AGbXʼnM$_L&J5v(ee*{bLg伞5xW >_fRh)!RB &fjTʞ3o;v#_mBR$ĥ+m[Yځܓ+}T)e +ҥFb"""""""""""""""""(T6bQ%m #~e""S[}$ /HֆK\ <=ׯRXXx{O~-5u_-svqyk4c9=Lܮ?_m̓^-kUJU@P<%Ȉ{oElX{;2-NUk]!Z::LDDDJjV%5+MJĦb"""""""""""""""""oeb"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" oeb""""""""""""""""""""""""""""""""""""""""""""""""%%b"""""""""" -g- ҍװY7řAx r} Cnl2)u +F;C+dDr?)6\R  $ x, ޏHXNH3G Zݑ+6"3tQf$.w7[,rY7Hu7b$8(TcRrtG}MA<^=tlc.MIjoXo ss7) rTn* ]k/#j.Jchjk@)Q߾q,fWOjVH'f~ZR]]Cm{̨>ѹYλ*+Pb,å~3B#q>hZko ~¾ՍDZ꣬?R}{I;HٗC*ЮCR $+1}'G^ŸMvVw+#gYUP5[y%0U(-0RvF$Mr ڜx_MaHh)6Z|;5>*z1l>cWΫ\t H60zSyKpWK+wr$qӽNVPW[IU]jI,k`jHs iYm]`,^O$UEWnmϹ{ʹ߯Vmv 8"ONkbaҶ~9Pײ7 &|)#OVFE{P?Y܏/5@wPߢ~lx)Wcב^]w؃> ,הlv۷1zb>"N؎ s٬e71VkQtomP}:F?xY܉d z_AZ׸&!;VPF;4U]aP\Zƀc;s-YU5}B9`]rsk]l֬3gYH։6sr>ZWnچ![c^D1:'  /S.g=]F鞛BIn6(Gȫr,~KSƳ*5EvNA[}"""C>@?x$>kt% {}YYAʓۿe~ȪnT˓`1ΉPGb 0ΠF*tĆpGi1_;]lY^C2VH'o}>y\NK%}RYtz*=N㎻_ƁWK_Uw }=['FXӾł~y)ʘ ^ATe6=߷{=sx?[/SHB#smCі]avۖv7|݆;kfgĖYr)@hIyO:+!캶r==ևM]z6j}%DOrW}$7X7 9Jf+ثoIk╫*>l ZBzcߴۆ\VYUAGc77 5+ZF2ub ST vMkGAWmN.8|Z?voicmngCt\_VL'Y\Ql@ުWeW_DRw$ʷ^u1{.5UYJweVzK6mq8*ʷH66AdI ~ ,\+3\u+O*a$=" 3a]k ğKī_ }66lPI, ;e&[Sk[XHvu${kr%7e|o&S']YT{{4w/}WcXme2-WӶGQPvv״h*m̤rx٘OP u,_Dj/gw#2Ik~WvWK1eȪY C1x.lʷ%Da/GPC:oߴzUO+LJ6aO[4GONOcά%Rlufm +z'/yo_OBq.,gVe1^nW/]iJ_UBԫ]ı{ rF9eb]RJN3)39ǵ57Ջkf#2W5CW-Ud_Rc^[7y,5>X,􅌊!o[^UsYS^#^zB5~z=̿Ù)hȬUm.]6EV {e ?Иo{'sy)eTT ScA &Ǜ8-Wm~W^;ޏmIy~J+Tű +ίTo}=z32x\ 5oQ oϝwjhLj@LálFAnk|%?d^nGJz%nFkCvNVԣ;pĿ¦/SRi,l$LWW՟Yn:D;Dֵfc$ùlkN~Xzt +5^>Ol G+鼣#W_%Vu ]7J{k@~:Hbߑaɳ 5_a=E};(>e7'ݺ2cuzCx]6 Qi}kqءXu}$ Ɂ:.T;=P]{Kܯ)=ցUM|d;c-dvcb"tN kƴ;I y$Y=[ Lo%] UZkҫ9S*K;Y#gc<GZį z(Ig315OQfO˿V%Cn ݪ7cƣkSN*\]ܞ=م]?,ߥJ܅`+݂|VİUSz^v;y%ߋEG5]V8V`Gn22jK:GP{;%v#8=fs=z)=GAܐ}%|'URS;X?/oaۗsoίQ%tyDN%+B%By/o壷7QGCmOX>+2/:K-T$ #Q+0gఫ6{Uo>Ӝ_JKn[2r}DDKy[U`ںdlvA(EE]ՐluLë JԺffI,{e+/N_{0*Gqer3jZ `@`-a G gv/ell5 ڵqcʗd~&1x,,?WҥWA C'{? KеYX@ oMCzݜ*buȷ|/}^ƭ+RPt;?T(}d<#u{l%OKkIS{O9|=n,~u9AI+I8`ԴҁGeBxӴ+)+)ڰa|)CUiu!O^Ձ-N̺8|qޖ::G===Z,%6YO츯} ᅬ=̖H&&K֌-Xzb;{v,O+w/QInt #{,Kڇt%ƪ>w#5eChhmI#;K8`jCлU!$/ǴWE퐉Ŏ:/Ѿ;4pXxRT:/fkU1o$1>e18,l;vPB,{z!:u oe Hͷv:ݥ:РYk($+o`ےөt $|cܓLܩ)oM&L<7Gq}A7W[~Ʒּ+B`Xoy)ӼM0+ʬh +F!}672Yȸׯ==z%WcUmviQuއa..mf/ӽ~=7øvZXNο;=m3|-^HpoZ}G{o{uc۴~=Xޙ;}G+qVd5VX7_cv;}2b- f,fr{ͽ|v~kGuSz{U:㷉1ERqavzʕ}># 훩1ֶIg`WZ[}»OBkᱸd4Sc7>F^%Y= tu*|f<|1z}Dk +kIN>kq*X=czwkZ״cb}+]]AKtl1$qOM~qE*,klg m>&D.97W۵o]z3HyU]XwԤw'_^͵ĥ5c_K !%I}QvnzWTVjT#DH<..]5**k +J*4JFԱ񺪇ƭz]^dM }x\>U +Cmv,0G\@fkxPX=kZ.ZI+A${oS'"rdШ OXRGdo;c,{iU w]ػk~=puPy Mo!Q0 X⾖w.J NGb||xOxq,@!d폻1cxbWQPKK;kbL#\In66U]L8޳ :r?)$(c}JcQu\^:f'BWs#J.Hv8>fg:u֕V:,Kw$$16)j bV@׶5|+?7GGbGueST;Kd^bJTikR4X:Wz t؏N3ԭ]&X?5)D(èjb!@@;^i'1P!K;o{JF#`xs]}M|^7̳_ØR-#0s'}[$aq`u3>ػ7loq̭VV  tek![(:_T k;QtN>ŮUaeX:k{8~C:OS0"|ɑV"""""b=;^r)ƸL@OjAo]EԷk+qHHl]w\tb,(Bo2QZ/Ũ]kO _mx?e8n2iu$aDDDYj r[N39yg*k1 +Ց_t@v'A:ܟ˜~-K;xfOВb"""[W7Hl|'"""FlK ]9}bR ߚe'@b;߉'+0,8ZNv0ˇPcIz{u!XlQC+Z@lpTc՝a5ccM>_I+\$޷98 dY2tǤ{|nyms3^m̱Ut,HPtN8>f.V U']DZl{ڸ{i!ŶQ[uW3vrYP迨ۄ_Jԁ#~N+Пgd+, }|osO!|X!)Щʲ$~ߍL75\&qj:,FN?u|3NPKZ ƉQYޣg :if7_d^rC7bl*\NM7QoN]}t?Ta2Z؆c$ոF2]b Vn2VP=aeuי6UEib*m};_v(28/jܜ6mU^_Z*^sh|AAo_N> 7K=$ܨ?on;QC d>c>q8٫ubnҫ{Osw,}?iVvzdu0;76eXX!ӥB~`s| F]&ſLrmvؠzMi@b;﹗ȱ9zEWѴt $g +sSUAҌz#lrLi@)EPT#8-c {q*DjL;;2㼋dqKveS*ԕʩR;eng*C<[[r9d]cf)*HBʕLv.-UZutG;Lw ^t :>h)mF!Ybd +lnRV:tGp;kyt:kŕ,CzwvFDolTiP?J::oLG7Җ1MKֺ\6U.]\M"5݊`7}%Wmm]B vx̫y=uP$Vgc5w1\a἗[+ab1+miIfEybS{.Ȳ肦}t>۔ɫ#F6}ijFzKtu3_5.FA6Xd[=={^n3T_˜j +CYH#߁xXt@}cSzo ~#̿BXٗ}M]{;:%FMj:UZkXd8fu7"Kr.ȶ M^:7ŽM F^CqK؝hU;};I4&fw'c.mAzfm~?=c!m6cd5|SҀ'$&syL8QERzM,uz&+{ɦzڲ72®FF'U+d@GGڈ=K`L3lj-P歶K0-]=i\Zl[}`!5ߥcL^2䭉ۥj, +UMKʨUCܛ!w)}n}Ec6RN ̼DD0|<܃&^#9[޷ȞyzCNU:Pߤ(}DDDDLW_3rœ+]r6M[[]]$kô9>n+&,)XH/O~?,gcۍpXXl4{ [}7=Ž6ڨaQT|Z>pWaOWH:]Np2VKt t>Cg'Y㫿_K1̷.Z+i/*OXbu }{̏ã!նlX=jN݁-G; +FqKFq ]7]VԾP:B@k>eBݼV (6@+;oV5YMP-;+s*v,̕5-Ҫ$r3kWD +eK S7Y/o}s1?Ae% {>{oXe{)\Su?\pVcXqZ+;Hr¢f[YHRT^bIykn8Qbl:պM4Cw_(ʧ6십tV%z_ʕUwnj˪;3 oAv tweG&j1eBסU#2|:ZI~K+fzm̴Q­f \)(UA# zg^zw^$lqbkHb2yp]ؘ C80V`>v_3Zį>qK+dal01|3UV*:ziTԧDxԺՕvUwZuat :+ܵO2u֏֬;;/x6]9dSe@4u2y^9Z,˵E7J֪X+Q;cfZ +*ӑ5QK*bXASAqAOc]c_rkQ`QTҠlveLJ}=d3&[R^[ee*} y.3ed +tj]ABԟ?OSRk̺2z/PYz{'7^2XawW*W64>%@kRrFr~$oS7c̊i{.+ S -K#Q7:WǞͿSfF.BbT+ZP: T`hWk1}MCQt7mk}"\u<;^ Gb ;D_*u,j/S֕vZ=l:)^s\iַu3®VBWkpNJC_=ď_X(ηuur{IfE6J-ʽڋIA +: xP׽e&ΟTWӧ)mA#586qe«,v?|ǩQV_ ^mXucRi]%I#]"g3:b lU +@;yf%說KH@`Zoqh9z/U=&ꯨOc#c=U2=J@d* +xjq ZΊ[ub7Qn~H%` .vuӰPT.3t: yݡ6g gFZ;޵3-xWe^, +#܏glUU0C~0o4:⬿VUK:F@łJhycU^ֻzԫU}Oṅ}ZFM:bIoi%xƹ2/WtE*H*@m{$LZJj("epɗF[`j7 ,4Z{2U7 2+aӰGNPH˜?W 1g(n:b7tDDqNe?ʬa[t?.|? +=t._摽DDD|5?/Y2\2NGqNmC~q9zCNM'GOk*ǭkkVĿY@U _=bP8jnH!D3#Cû+ir.J: x M +㚅\-JUv7wLeA֭2Zmh{״Ȃl{HTw''O" +0WGVGRF*A\_WgQJ*bYI&cr~'"Sm9&Tm>&ܢr^Tºؽ, PR lDDDD+l{xKVΠRP[ 4C(ȓ"b?h.SY@AQ_|YR[PZ !}/#fR۾)c܁A'""""0|>yxRn[#{o"{rк{4ff"""b7LDLsns),=qwW4znIO}TI|3w"JԞ/ `v9-3}E5PV܃ B޸돆)eVl܎^>DX\(6t͎VXʭWmx-Oc2Wg_1N }f%:(=^{x̮S7'! cg;ee`+>WĹy6v;ZHvdkzJv7m{7|Ah-8zڤYO +:?9 q4{k("U3jY)yİV*ڪzIv 0#yy^E4d5tXc s`Cgs>$N6˫E596m!u㼙c #" jY]Aսy+>Gو[ѠdGZȑ- .bѦiT +/݃ ׼5ʙ Jz)eo{ ~aן; ̳J#XU]k#`4N|OkꝾB+ {7rv%[799L\,{/fbLO{խtV?-] . +hCc}JbeQnمI+:pǧ[OyKڋ>l% 3Xl$](%d(u+mG +{ərYj~mj7^E^AU4do'(p]ޙ.K0m}+KGSgY_~Hܝ8.5W+a̅Hu?~Zګ dW܀ #`ct[fTM humX WJj-H"=ɦVF-}쮚l5Iä͇sd][VZF%$lճ%sr)uV.9P2kK+㨮YuvA)pGʁx2vFnxdރ,nzu~ug+.ƲŞ(us[kD6?dy~K{4m +n}j]o6@x7Hf~dnhzr=^tױ#-)+nOb'=;6Yא_Rkn6zHL'o-.C4kV!{OƽC3*?:o}L%Y^3kP}mH ԺUV)VdG;r-l;Z-ͭ"br9vbS^`cҪȧ#㡺̞/!w)̽CBl}+cOY<5I +L:_\Gl]V-.zɭKa;x߼Y6R+VKޖoMYP;@W {3/^=̢'ތ9m.c"v9JS:mG}mF-y]W_OFgĜso]y{/fa Zt!@/Q$ׁO|O%jgdq6zUuږh+5nHtR5jz9~;zmuwX1TiCv,Kv&Vw%zxdfz4~;*:r3ܙU쨶#J{v#튯ܠV5j|N#Lr9Yy-oZm鵊Uw׉Z2pWMuN W~>7, z:0Ԯi31y\ +ǥ2_uX`Zpe)3e{B^#[/3:s1Kmޫp}Z|G5)"zR.m+;&>q/fN`̨'ᯮ[||Tf>!ȱCmP:[ >̮GƬ& @ [5-VĪ?TfnMPp"VPbw5㶥G;^N:Vӥl#I޽lrq1)HK3);r)勁& W/ǝjd+.3ɳ"Z:~k@v{|&Z~ 4qƥ~nĭD*( +l,G93.] WB[+^l<}94.Mi=,=:F_1rUc"8uX<~Y]9?c''v?,dd~?ĸܑ/s( ajՇj~_,hut};ύK/+r_y9O䷓~Y~rU8K9OrǿߒOObnrW2?{o?{ns?{ns{ns{n5߉?*ܚ*ZF]YOe(_S]-A]뾷h:߉s%{Kϙ?_;/g~=vS${$y?vX9G/ .sʹ.۬xJ*n9 ~PJ'?``VZZlsooj\'H<݈ee+#WMt]r`w2=gX-#.x=c8=ٺ +uXS*?V:oi"CQm_Ucbf0.U٫2P=ieu+>|3:|p.]@z=Pë`OKG_yi$N7,;'c'ox~kr'GFJ`č*kĦfUƐYt_{]: UĹݙ:5uh+woi*L + [k9KIoܮ~5Æ͖Zmr> =*{?s2rnX/Q@!VfҡP6U>a@@b @u1 _m\p]d2~tA8lkCwG-CbX4Ck@u#(n\:r +]nOQ8~JJWQ#i +.́b޹gMk}GcjE'U +:![[kgڙ?7SxQ"[lkHms=01¥@Z2(GkLcxBgk`K51>v'GaaR?Dko!qX@EկO +I`6GE˳ھјnzXt v0V%e9ԋ }@FSv`S%g+n>jzEzI^Gg  n+NԲ)NZǵp>AM'A~fkĽWu|!5RYt_w%m|-ض*H71Y_ dgdߔ d+@  I>%۸,6&+={abS]t5~!-DiEkX$P6ijv'ɚ3rr:[>i즶zH^m^"x9bm@edbA`tT{?7kͪ]օ_D 1q;&ܦezﱁP|(# M +zS@f=0=? .^?1`zz{8uZWչ'!o=z˳ű/֋E=$,÷~/$>lD'(=JzOQ$Gng ~@Kw']~o|{HcX-}. c6>;~31B:Vc`6unkUF7+woDAYBJ*fX* λy1o(q9|{+fjg` uTRgl5ۼ޹ϙr:k,AM0|Ąx.Y +-jR"P!ϿLwBE~zWKUzzl]Av{W}Խlɹ]E)XtY'O)aߓ=Ʒvk}.G}R3uY},H*ҮRL%V\2A= "`r8 W4g*Wb 8 +$#ýSU2jB›VVR2||wqn*_jPUҍܒI)qm_ӾRLS,[ٚor[[l@*݈V}^ljYmu2T +T_,ijvi~x܎;@qg`-%կ'>Im˳N+;(IjOa1vPǹ+c: (PANIZF1f{m:^CƆe]zU*Bf!yԩwYv^n*!|^.Hm{==;pv{=a=_a|8p ۨd]zWӢCvā= 9|wb+}w=.Vj[:6YçP߀v2886;J`vt?Y 㰼V1Kz}_]l6 ~3 q>юh鳭 +٥V1gnKMX4U^͝zQw2{[3 +jO_tFϿ0but/[.r]܆kzՑV6T;HKY%NJ^&fOhtHjv3_R#杋"Ad*B+w'&^ePt6@'g_{|Yw{a`Z~QO}h#1yŔmuLDL#]W㹫kX/WB*6{=+g T݋:ChW׶>·LDD~kL|LJ8~^(fUn:ﶥy\krqҕU cXUuy/LZ:TRǶ5|zplǯ&Ί6#Ǻ+o3+Bހm?yC p]ꃥPXov>6m9lSutӿx"""'E#s6MYIKڐ`荏.Dcz$:PNO)2+[+!26 [M78W?14G6M |:Q:Uv-NA6 !bfaŞmd']6bS[5V"Eut\) 6H$hQ(+J#U$ sDD;N۰-U TY!e:#>e؉F/ - QN#mvLKY95QF>}9-(D`*A""%kR<&[ϣo~mG؀{$DDD@N:Vձ`hfFL1~Vbn;cvᦑEHڧw k:k@[݈RO/%2ӱ 5WSB:=fb"k7$ɽQ~1 /]ΒO`zIao%6T@CRWuybɕ6R`)U6X@$x +;wg?jUef'܍vDD:%cUP~Ic0vVKz|~MSGdM+뱍=Ywi!L7k2~^t]:ԟ^͠d@);N#3Ȏ'ܒ] +6u7nbħ򭲋񪡬6cY{߄ܶאi'' zl#~`i3K[A}XE`J+Ic-QΎ/1멓*g6z;;]5}Sp+Y!w7۴q瞥)mo~&I"'@I&ypJP㏝SgjFu{XȽ= +?{5d}5&>F_3ƚnB)#BzF7a2&ܥv@VEI貓L?\-I]Ie~igS( sUb rK t]oȑn||WQf7go]խ2|09v*~BI[H \䴩Q:䪥l@$7s"~C^HJkV$afA+Nl]_פSyȫ#N *NXz6}~aǼjf>J-xXW_?tqUO ; m'cِbrBjפX[,nsq[#9L* j΀i#*wOM))bÿX'>-&CT3_k^=%åDfc +6L7?ָU޺ViR@ :{'\0K +6W#ffdc{qyoWiUgDI< ~%\%˯=BYO(}>C=޳PS)g]^ވ$<)dii*3UT +맰 fr9O"F!jP*FrGid|l-ATUo-OT ?[}I<2qiŮH6 ]%ttֽxLO!߁CVC KU-W[`>^|H?VR@'D?I[,cf5k-r| { sr8{/(Q-b}zOFumk/mSSRq=vN|G,==uuۻٮ #dq<"lK6BX՚T Q'}0:&q $6Lbyy&eTucb(ټ7H΀i,e]-.6ڽ!Dw#̽sτ(\2+:t/켌,Ek,f  ;t:ށ:Lpb=f%lEOQf4L϶zl\Hwm-Z3LSR}P֮бN[;Nr-˻!m elfP4tr9ݓV5]]}l,51VҀ7ܻg#O)gI=cƎ5ͧcpnC]'s&pwg}Պר(ba?75}%B>ՋH?˓Z>%dzEu Oi%H t+1b土IM@k*u֧Dz߸ WyyY+.vwu+ta(f:-*N֌]zύ;'#''!PY@VOC #A4w2oգӭnkdfdᇹ*䝣n{*uȘ|W۔kCM9y^9 '~޵d_} EcZ$"2AnKya INnU2QŴWz؊~@/+dDDDDKw2+j 2J5؎`h!ɹzPI~D7d2u>Ek] Gzz8J} +:vI.}ٻNj2211]RW%{0$=~M91pK'aPdsPzdpiϨ"U Hě]x(:=;'!+#IʐTk["#aFI?ML`(`þc ɖQdT=wRٷ=Jt5o0^jz5PE,*; titu}^)S{N jGW̴O]);׿/? ݎ1iwv Ln.ڳsw%IX=+Z><77ejS/V_ls2FMt]zFe#`Wݍhm_,ek/ݕKX8Vam?P׉/ÐcGeV7R2 )' qܕX"Iwz:"]X q[k@*T}Xyy >KľS*.OϷ݊2;|9~crdZJ21.QP +DC.+>w@ sJ#'X1\EhWGY:mg{ߏi?Ż*]QRcr:e@(Ld|="*Nj7*X/Hνbl9*2U%[n݅:Ҕ[ԃp7街UzܷK/Nۧd 7~ԝN6m|*5Y]UvN[sL&FkrVӣa C> k*QvnK=D2F:,[V kt$aFrղ_Rw5~ c +Ӑ-,@ +Gp󇁙G)_u5"ukcCu|5%}֩VfC[Gj䱇erxUu%tS9R]'*]-c[̄ʾ}gNZ)1(/X!Gx=ZE*p˘[:(ΦZwciW}jI*߹vn*gQm~7^&޵a_I4{w?I!x"(ѱNѭַva;&L1KǦTvm5q#?ÏˌsW:m+"S;>8L4m4W!]tuy=λx#3& -nWZ ޢ׀N/&cۛnA`ǭjSrx: +5!oNuj!$SdM̯eUj֣Nh_^|LįG#~=w(ȩd֍q zw~%`&-lb[[0^{$1,o3o]] ="|9qUXrE0+aRI +53?5+36u+[:Āsտ }l Z;ۭh n&՚)j;guu^'PT &jk=)s16 +V!_]r1.u+q:um{˷fH!@5zjzw&UON+Ǭ +0b:tv[}/r5ʭJ  +x[źiKh=O}}T.Nn18lqy +-u 3i=U +A}O fKqz;(S4Ī󞽣3]:ןiy˫j,g;Mb߶A8L?]=ڽS7M)r9l?7RWb:Եve9kV60zOԬ6w' 5 +@A +Kuܟa%ٙ|3PGoLmzzӳ۾,f+菲]mۿJCGecyv +;ҕ^b  ofpgM,R 1ݞP_/FD+xk4m_ueHr]5!]TkcWR7Iڲ)]{eRz=GiT{(xb" fgXeb"""""""""""%5+)+({@;*hY Ty,B*+v}|Ħb""x{Q @'[JnJĤrMC_^2eU]K($Oo+Rg>]OiFjY +t7JCG{֢|Yڇ[Ew #acck Wb`bAQئS Ʃ;VIm)mLn7TՔM0Cy[99U=jMHҁzU6[KWFE]9`JT6R~r_>70-ݏqa|~?ENG ken5`!`ly%zÏ=OT0V$GḫLoۓh5756'00^,HםW8hˡFTD^@=K~_.Cuaܝz°(lq'ٲ21l=h䎥5LHJI'3 Gľcђٽ +ګH$6 6UKELإ{:vU'd)]n\KiZєjt(HZ|^_Mx5ԀWHb@=C߉s?:kQ_]̾/5 \RՇ(ŸLc1<7dYE>e԰(nm$ok㗢eZl`bTA,c_ăƶь:C/Web hw:<]A~G`@y³:9uU`z-mu`%[-V +} >Τ|qNs-]u]2<7|ĺGzu~:#v2O!UmzUwff=*{N3\T; ǃ1W'e9V WD)J86fcV8B8vG܉ jӯ!#N}Uy'2X1R:wԤ{HkUn{#kK7@n!n왷EJ~q\ƦrR=UOKgM`UPHg*tl|,ZmzT"ևAcWhy>$n5|P}j^{+G?V8c[tDaӥ.K}oı2SeBm >n%YF'L]: LU{RˍmH,zPy#Wc~ Blk;2)kKֺn5)G8eI~;S4:/WA[[:;(U1/նbo_1_/Zkʹm/ /y!%=kCP—Z̻֩~F̓7c+:ؚ^Ā4OWa}G%\NPff!U@,HFu1^޿K[{O׍2Mycn֚H=$@iKx TRH=j67Uap +aV=\'sg";v,w/+>|,z.}'uN_Sc|E]xfMMt)'D޶a8z6D}jJv;l#ďse-xvcX`zlwX1,DXGw9Fi-=UEB]'fTPEmVY,PA*0ámկB)U(xIi-tw}Ye?GVǹ̎&SdV `Ub;7Uk{Uww$ Wɯ{?PuG=gT/VzJ޶=O|Au f=Gjlb1/Ir弿-|sEB#e4ߤ@=[?_1:GHFmJ_Ìۮۏ*W(F͇>{_p/@r*'}x6c\wzlmdJMw&>5bS^:7 gI|~_۩[J5doR>]* ZUJ^ >'/TC}k]>OwԶ:Y@NǸ] .,s7BW_#k1U^9np1upXBD;ybϋ)+!F%.SԾ aw J~mkTj~QT{v;'<ř~%]\XbëC7Lb3zvWeՋǤ`l>H#~=d]X#.ej΢cWV?뵙U 0 =Ȉ'PlO6ܔ){*%~#VE];Dߙ>jHzL~$DHZ%' `X~#̑J YV 1I,~;EՐF]F]Ըm0)"$NYr_e[l+-!؟3Y^'0dcڅl{Ww{+H,YT=K9Vs{3M 1ߞJԚ#\C~i6O6 ?G]?ù|6uVTjs(I ol ŻбV@'# +T}ݏ=lb0 YsbBC=J iGe3fE):z7ɾ^O y,K񙊋jt$y@_ٸQJޥJ RQf4OsۼL|ʎ]o]Zr8ܬ+r!] ;5ZL*zۤ ҚG.[)qҦ(7ճ䏉x9Z)5~TުOHs[l>;u#߉o5{e)i+P(ǰ$Y|k5b daQ)cI#.Qv~=Bj+ Z oCzdcƧ,B7Z~zX[uy3 #'K}&}.*zH޼y>^=X-t!=RU[kaVm _mwZΨ@$*èL|=Pɣ/ /˾Yd +Ԫ1=]|v//B6%0B֬{:pW~TȰ +6E"ؖ$Бqr(\W&V9lVT%a'bced5 ]U'%wn%RYC->t PrS!QZ;Nz&yNBq+)gZ´ !7܎ߌs sشT +=7FR8;w?©FN6-VUm%JZhlWVF GDvqƊlO, v};yK ^6=AEYc8os_Sʨ;++QlU% tdǪU{aqk]F ){8[1ë;[tg vl\],Uz,k;?q'/ Dz.7P[X*fF$=+7{(Q݅i^V$ +Ť(]"*l#v(AG`CChv'lwmǧh/: +6X_v^n6vA^BUXլ69A4 E0=g`֒̌;TL1nVeER*hSd| 㸪~{W@R4tKIО2 +Lw|YگHn߱.'bry/^̬%t.VE,@=w}OB6E\.ʷWI 28Ż"I赣Ԩ-K 6:}$0_oP]&i۩BG-珋9 0k`QQt1fhƵ3VՓ$:H9q/4=>F(KJՙCgCn4<(EjqnrWGUNi;Ɍ-kj>n>;'lܖ2zl[>ǿ ;y}#s-ta.U;=uoAH G7j\/v]ȶZ +P΁ofZDh>R|ϪM\.J,/tKd I'^.6AiNGl)հҁ~i# *bX3멺Sj[D.?Y%,-aNUU:u,Fu[#G:_KO_OWVs>/\#[e`;߶;>\z^gMJt;2wؒ9|F65JWU;2LBm};}gɵC@\>Yج?sVikSfGcFf=d+QKSRCt{̛QMk[u_mw#J9xYRqg^X|[3?bsVS6]G̝%`( R>v&o0z!Îe`:{Ɩ}+dט^!ƾPuZLeb݌ٛC6T"^9[8ơ\uwǯƏgڕ0.wŹk +fC+'3u ZŖu7]j|u6`/ܺzb W]6;"k]ܗKrX]A 7O,qFOXe,YU bEu݊ci?2Ŕ=};Q pܕ|Wp9Kʕ讋moB)KX,jX:cb[JZ?u deD|\2QHbz`v>WqUTRazF:R6AI&( !@bXrN>FBe:ec=lt߃۸dFe"%e5+)j%e5j5Fe5JĦRMDFVR5Jj5F$cCz>Szּ+)XHJD~:dK2 rJj#QMJDD4.BPg}><ͻLV_e?1]/Sj麁`6 :ց.3`r62r}T"}|B=nYv>fI)5Re{Qb^pH㥛Ǯވ܎ŏ,l9DYP^4=T4Қhvc<s6Ru5[ 6"QU[C5M*J(Y2(kұ\݈D~O/^A[C oz߶|7V*a> v5l7CVr ן;%lʅ l@oöqW(MYXGz7/gw.6=nuTk*NF>v}e=E:mڵ7{߰祉sqpxkc`,<7mۼr\f1AH߹$,K'CYWPtb;޺v{{|n鶤 3xz~M֨¤e$;͸歍'RY~[VgbK׿nz +Se7RQ;͙آߴ8:9>1luͶ_Z\n2S+#nmda f<H_f=uTlQeΊ{v|5q8)F G{,q3'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@)+<[RܥVFL;jAx]%Z%Ph%e%b"%5JjVRVSQXJĤDDDDDDDDDDDDDDDDDDDLW3͞!qe + ߾&kx9<[vZlt֭@ܬDDDDDb"kaĖM""RV"""""""""""""""""""""""""""" 5.E.Kk;VɌv^k}DGƹ8VF/֠32xؒ?/wg=rarM-]ԽV1FBu׷p~+; +)=ADȜ 6F8δOeGe;'ܓ/7;¨ug|eT)ct}6ø'+({FV% -~\}Ҡ*]|S*|VMAGonW1qũ;b[b.luBt[(}/-kYLn}$f`YVe.ʩSna7-谮}]d\=>|͘ wf\$(Jp꬟e10갵%zk*4j8|^9Y_AOV޿U] g>o! , rA|KFF%zcӐ{ԅؓg[0_t^r;7~FΟZF3X/5=LPmY@I*~^P!G4aI 3lc`_%U'GԝIV""$S/!역,1dD#`:'d$l|'l$-dq3+̤v&r$I0;Qk}}}~}W[KWCf=_ذ=bWEx %h@j_RP]؁bY2_}/*[+Oww7o,oTSk[}GvVO̝WfF]Yy S*Zӷ.n$gq܊2в5nGZ%+~ȧz[`G#K.8Pt@}a-qx cWB 폖bK3L5ψn̶}UP!ǜvNEMF.t7"""""""""""""""""""""""""""""" V""""""""""""""""""""Ŷ-(AT~w3 ·:JR^9AgZ̶=kSp + v>:R֞Azh2+[+=JHA\t;&'_.u mfS 2m-VW;R#>c܋NO#^)?t/`tVa~Yb[k khOK߹SDIUC):,_U?[ gL%j'Qk_ ]=f=tQK oӲoĥ~#ش~PS{>O{Z7i ;ndb""""""""""Cl[Qvmp:;?ٮV,L6X2ăd9bTVͻ2Cک-Vԁo5*Yk]mP;'L= H%qrÅUԋ_F-ykb].XqUoSԩ*X5؎ZZ~rdzAFD~iUǰ-`gcr.N3 +v:?$J**oOa3DDDDDDDDDDDDDDDDDDs5pԇt{%u:v=@ \\V5_]n}?wdqܗJy5UUSmk[NK)g\z.ݜJ{}5#z\`O.㿟Q]?w1\6X5|'jgU4կxJV~oA{b _ klhXf颢ufb?r?\}O&#UlKG4>G4`>Gھ5`>Gھ4>ӏi}h#}_qkN=op?ǭV8~5yƿxƿ`~um:6cNJ年QdV+m%XvF/g?m|=U>z,nyӏF6hƑwoJo4|me\S_dGv{{{W_Kſ<J=_ze]|wǩo_ww:-gOUcI{5u~q[{͕\86';aR P±H( J:?$s >z:r )G,NVBK#VDdIc +F@:_m[DN +vrَ؟~"""R@ة +SH_}k=oGjcRBA ?gd2lB +Ry1@GP|(b%ܬw>DDDekj` + 6=365xU(TE +<;.DDDDDDDDD"gbwM:ԥhSavx ed5Vd1, 8{W{ RL#_?En̊~v8.GJ^Eշ%ܞs 1"nCkz l.VWBX;!;X%+n:;hw_2lQX^}w,P%Kw?O&DK99T!Y*o&DO*PK$bR`| Kѿ+d_rzICjp\u(VeGo/WqE*[ {Uc~/I>c 0(JQ@S'̿1)' Tx7}duuw?a&buؑ÷f˿'ʱl/TzcMR?Y^/]l;{OZ?#E_nAhQR_ WLoCb{<}$.:Ų?%[Uϛ*mY*x߼DDDDDDDDDDDDDD@7#UcX֊+9PmGi s<7nFnkїCՊh_早 :Glߒ|!rg<8h[&k9PeVL& VzDbE ȣ*3x(NF:PD]8Wab]ZW|-c-S~qv؉ 9nU+ߧM O:q}\=^.C9mrHЖ>\KԶ{9 Duҁ~m1_55V,(5Z )N;|6%8Yb& +Ea{uYvWƫ3j)tf͙8kVZRʶUqFg K^U\NkTm\~UL$H:uA=)ki 5H=@]>uͨ{-(bc?>}f('@I=͢K)b7^M=:`zBGZ,DLO_߳ }*uJP~B>EdUap$Yvp[cɲ>_3h2[P3, +K68IcNnkK݀k)fR+J:+)y߃.M{/xk/.DDDDDDDDDDDDD@)cl +ة{6 MOxeUlz67fF"i_Wo˕V<:v>b{<*=i\~dkmƭݎo2+hpG-hpG/hpJ"W"W8;t!u [TjA|1-ߙ'mTicBg/*r)K:w r$WJСwԕ0?0 pM{{[eph鮵 +΀d7r?7 +d2C+)VR6#DDI )6>?E8+8,/nA2qPq0mzlҀ Afq˭C# >SW;C^=kZ$710")ԱG~.㲵bu+W AN.+å]~PT#N=ٙz~E1)* ."WGzֵ:Q/H<&R+tk&l* &GfU^ܷ[},cv|7=#7+-6JP*nVtu#?A~UדP}0t\tu3b>*ZMw 6I!I !.yLzhRG_M{=$PzVWDoD~;\YV\PE}{U0.^BSeR*c +6Iw.;܆u9BR_/uNHB o.&_6D+]0:ǶSԠ~6^.jK߮ΝW=ClKnjvE`[ v?Yc (EgVevZò ۤa3vQƦ>H>uԡ$JjVF\*I +{*pn{/|fvbTD5|z8HZ1Q;}aOG}]:.ߊ !kPH'@w >/8s^mΧo' d~22 [[['M`mG}M M}n?RH3{z҇}U$ _`1Lr閰uj\*5޻̿6Gۑ^OWrw}Iiqܾ5 1H=߁xɷ ;uDU,OHe'ƴ9A*ʹkQm5).=@O_[[o[T(} {hBB vo\Z>o&䱷I:͊SQԬJj5+0_3ڮN:뼃bٔ=:vz&`nq_? 䜌T5 | +-.pI'/T2aIrC]u ?a (se^ +,Cވ׏yJ~z6VknZ}Ofpvg p0+1ޫj֮D +}Fb!,qP@Iֿ?s d7NJe?;2SpuǟGv]Tk~2݁ւ"*UU}hlܛqa]z~-~RGPG"sٶُb-P?/Z(ob5 t;'C['qR@~Dl}ԱVTk5Gn<DDDDDD^mfT26o6HyWuu"eJz[fzOWWur_=qݓZ/}VxζAROk259;*A{ i d؃IY;DDDDDDDDDD@`[jcmf9 +:zBП^Ⱥ~eȮzՁd 0674/[l=cY5aӰ-yן3l30yZ,PGʻOЏIf&R[EN>Z{ vNtƑv_a}S,fMaq0*ɳ-hMAPlkgL3l-/VniSi^RL^O̠̿ժk4{"ΝvOiRI]CѶƱߑ^@ïg**33gW˭we>'N +}ukfdnK y [ŕ:e"c 'b\mcY'.1Ѭf' eUG%.Cb2t$v?aó'6cf6٥+km Xz.?0Uk|>Hm ^*5ؖ}7 +_pvwe2cDp +Xì~ؑ~܌KhPc@] Yz2?/[AQ2겍6p 'f0W >GHf;SԨ=~ȩ3(f5_4t6Gø%?FEuTƻgZS>kMJwi+>=+ oo{엃ٽ]Xӭ-7K7ʿ/읅z_ϲܖjr 8 6Q:2 ߞcŵ^lw%XU$~.: AFȚ' u/Ae#(>GH\{qޕ5aWly:Cc Ur }/j~T߷~!(N_F~_!{dVյd~ߤ9pv9}f:Vpop)h,dd?ʯ/H&'ȭF 0jt~KYe9[1-tD>Gc$dZ̨6H ~@b}w• FH$-.~W?l{oP2zL}ugٟrc\2_K)S=L7;ⓦ0UV, ۲9~83_٬ʞ,Swog^{Hf`dbq2/"t*;%:n^Gȶ760a.*6Sz#XUuyXqqk +`f޻v>>-3!JQRVZT'Z:\zqk*iaX30 {맧c}.]ߝƾn)k`h3uVQZ[q@6Xt_9| zV~R9:֤G.ZلI+l԰Rkg^d o~_~[+Qv?-ߕ(]W~e?{eNJܗ|K'.v;R#W#f=ߡbn#؏ w\].d>~3+%u^ڐ/WP׀:Yx'&t[$.Wff Z/wQG簑^2ryD6M}R;5'JϒvL'.pB>;L|8=Vk. +t$?C`yN"!6NKh~&xw,zQ`en6m>"iMV5z rC1uK :K;_hLDD~짢]J|XS㴍7cX׳:}ABƧcZG&f"ywbt$XknYkx]tY[t A-YQu"qb.`kzn=#BֵvG,GEoeQFU(@>dxSU@(X;hͨRlkcIse)uEgC),UH2qX؇-zV+2(C?̯vC;9b{ 6&̗i?Cz%I᫶?`b&=X-U/$DDDDDDM{ѸSkөOt6Eh}T|yxqRMV}} [6؉e~Rg""""""""""!N'*rKB`UKB* TdUV0cE)vQEOw: @٪l?wq9̰V(MweZ0ԇۗG>kkc,hal|*rUWF(XN{=:-U =Ȗ50JzG H3oWYlk +\Τ0d}&O (nIM3({E m7,`n VVQب_I~ -k,5Pޭ= b8V jW 7nq ۇvK z*Gߞ')+)X(eܬDDDDDDDDDDD@!s w.!C`.K#Lܖ[]3;%rXx&E N;8^w.j>=d3tmtVo5ǷMt=Avt$`0;l#grXjt+;A'CrxW(Mtzu1\l*'eu ۸ZVW!BK~ `{ߔfW=}rhXnNߡ>U wD9Oilc[NOZU*B{|yNK>m+ Gw5x.s鳩;2/C CN( zXu;3>2X$]mV[Su +>fb;{̎?'5v+$?WC}xnc )L}b +Ix+a?uȏOz#}9-#E |v.sXm+vH߀[]*O${}c#wK+F@ +8۷5\8;܍) +X$*1yԷa-meV/Rt|@I}jVo*̊mV#rTf}3z{tAgߝw$gsX|kЬGVB]D(:_}ݜ5AI}Pä3|~>Eyu0tuX |IW:A{CoGc?Jn_1Q}#vtrI=`xܒH 4U~T9q@eX*]*}AvdBӍK|}C{T/c {]YxEh,`Th<6N㔫JاPP{l7^q28$ANϥf7jeO&+䫯 ׻0dUǪY@l3 /N*ë};V_l;iA}i2r FdRİį~}%\XޛqaMBP{99(%oSU,cҕ  ob֕9pX#{A:18Tc\[Vb>@L.UC~D(`<${sg;NeU5WWK:PW 㝬ƥ욫$Td~B^N*S͕t=szBNb>5%bUZKF <z""SīCZ?1C'C+RFUGd!u08qI +݁9>g8Y|fbTROOulxz0誠R?L41.7NfIYRHOQ؟:ԍҠbVKZ[^߄VU9ו[ZDEZGoZ Ը~7?dk=챬/K(qv|=^cT:B79ge#t$?XޣWcu ?|B{l[jשK/]ڭNKF//|ݾ`;Sa+kXEF 5;wlD<zkMs,gqǴn%5f[^-qזKH R%6qCk/DNK 6.N38LP'U5Tx#'/VjmXrANFg/.1-қECZiz{hx&G9 +觘w%`j +1%u羦4|bRBGԁ .}:l+;jY:5Gpdgk01/TQ_(E+[/}۾'%SV-kt޼L5Us}%2|͡ד[\t!M Gf6GR0-Uv6 >a:s&W rMbm+wm+T+ +6b_/Ilt䫩]+uC)# ;=mx|i^b'J *tOXL_{T#zY,QJ5 c9~PCw8UNBObc2r7:f5WQTE:USf=xO#Y'WK>n rx67!5>۞?mNF?ze"@'c5kSG[֖WЮH$&c7'߉0K:0r:{ұ.=ĹEHRi@Ab,|<ܶ&zյث0,ĮFIY~!Xĥ$YbޡbXr&֪h 45nLɳ5U\ZI='}xqS.@d!w! +oF bTzmkstYn h#n4c;i^O2 xl礊=_͈O4=!ŀ--V%8ؔchU7/I +AtߝU.(?& -eS,l7M{8,y]_ft:ucZ37Ed^ZUV;t|r5{̗\~Qsq(@3Yɭxn m9q:ЯBu㤎2O_K_;wQX.lN Ys^6>NCyw[)PTwmݤ\ks KTWN.d>O}cjMlqd]I±*~SH÷Oƌ.M8?ڙAJOAnu??ÙAs +ԽzCäX6]ⱷWt-Rn#QȌLkiEQHU'B@^>·d/Yܓ잭;Ænt!~^Ei+}Kx`6~]SI{>^>`k3Q$n]/.KR Lt=}؛DD,KLI;+#hORy&YJ WVzԨPt Hkn}(&cJpԮ#% +) l{t.J55T;F4tB:Fj4#B5+-To;'PR}FT#ȿ/:r) uJ0Uv{:ƧDu[mEgL(*zw_F.[7u0],aV=7Ub\l}B(6 d}BԵ_}?h~Qwǟ9I?!]>6k#UM=3ueuBuj +R%ȂqKXolj;. +-ȴ+tfa8|3rooUU?t#}lF׶.mͯ2[WXT (Sd{oBx rW-^ר]HPִztfkcU7cb7/&g#Nn`"dRT3;caV-D:K5e]N#jC #23-V@gU$$lyTu?WRT0 |Bx^J˔U]Zȿ(r397-Jo7z9)@l@l]d~6M6+tzX6-+u  aձ~?wW1+gF +=䱏G|OwՊu@H + >yTvRX|(;~?%*b?%U\ >%"7A~pym}e|YSC%n1ԽG?Y?-\ k)bܕ,_K`.3'+e#v~EG :؃=;\L pb/ON$=dTbig}~ݜ J]*9Bz׳*{#/YE/]ob+Y,my:,zV/X0,#sy㸛32*KgU zPh0ldWBR+_2A` ~YzY˧ صG3\5g + P:ߍKsa%+JkJ=OO9_׿i[Ū޽o4YW;(r&1:(rc/Sb~5n~5 +eժuP}{4rx-Uh-Ƿ 2TDD@9jev@z{QdYu 5аUACω39D ƻXޡ>[౰.`XNL~J18On~&nbSe7M%K7}ONִ;JրHU'՝AtH@ξ|ͪW9k>k{ ?7Omg? 9:#pJގ|y ,;{y?"KZn3T߈LuvMLFGT=-u%= _&scf!J$Bl6Vxgkb u!*{breUWq]Xf58V.tb75=^˫r.^NJ@mvR̽ rǿCgN2 j}H,wUW1GrP뽒;l͇?%NC%}VH`\~}neyѶR|3ȣX⌌zVHm6[>n97V +뮣ia;hL-n+!G˦؆>tsw*le-_>|/GoN5.t+(>V|?Ɏ'/_U',:6onگ[RޝV~7yi,(vï ml6Ej\2XuA`7-VT#?ºoǾnsYi+WäΡtUSԠ'[:״gm[Ps;E +(fZ9 +E^ +>H᪪oϚ G0%ۓcĵ&Z6Oߣ;f'"s g AqJk|#&PPpK\ug@fPzO%1qjܖ 1ֶul~ɧ㪨 J@ oשxuxVXnfnv~^}ږJ ~NC޸zI̧mzїf+dC*Pb_t/t_nJ/#D9.<"J)/V?@C֣>c Į5XEҵA?(|/1kK|3bfk@n,;xUIv2MKԚ;T(T8\|Gmędp\i0-K&>@<\ +`e0"yJr򫨾Mzl46:5u؏y`  H>Δw;>~'pNj'}b<}#>Ys`vjՓeGǞk++ i-dxR +=Υ 42=@}I`%OGœYW},IeXK>ALFF.5r7YKa>/o=čh<br1r:Xֺ6:+i cdl +uV:6{0ꯄUZ'Yڟ&z_ M꾂]:k_vX(9X=:{/}_~gBٟ걺;{o?221jQQeDOPaw!ϛ_]uct}kA=㫠rG{l{\zFۤ62=~WRpazI;o{#[~䚶Nk +raQc܎ٔ:?}_5Uftʩ~239n9Pw~?gj/ABepr0uc ,o!-x3 +@u-1 :K־4b|I݀t}p?tZryyUt>5mϪac&N3m{ovo+B =;h~8x4WXK.غ`ЙF[]::i~Ghq/fe,?zO^ojHyz8HP OFfW* .t67GxVrjYA /ORXAeG%>W_н_tRjٮR|F-8Dߞ ~2싕bgUx/Z=5ֵk)]IP(QR88UR#?27@ٌ*3KW=_VJ]Oe WR**PGi8qY]з^ѓcħJʪ{ծgA]#ʬCa R/HڃgǏARulղ4NEKMR 15;ʍv'^kк{U)z +0TּáQPT+#~t5{884ױӣл?|JlqcVƴAaXV|AnczLznEDl([*Ke>AXjChϟoyj+VԠ߉L:rV(mʜj(}#{@#{t= Y\tT*@"֥[ +Hz@ S<۴Td=#;RGizame}6B]{:x@* -cQXR!sU]= ZWU?(￯n:}$$ki곣WjI>[!)ՙNHؒ% |¦kz[G6ǥ-_Pg%*3:}jΓUm:25r G7ac/E#n̊÷q؉5+!*@+h"* +RbSU/T* JhjRj +ZR +G7^uu7Mcc{;>=V!J*T?5McHTiiOcJ$L;8nwgNfԎw;w-=E,|1,u$N; 5twbH,X};KRXAe$Վ;=*g\-/^00~>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 17/Tabs/S/Type/Page>> endobj 50 0 obj <>stream +HWۊ$7|]lI))3(Ȫfz[3xƃۃ7tIU3f=4ʋ8qΉuxa8>ql>Hy >.'1H1pe(f;Ƙ~nL'9j.VE<l.p]O7!rְvtW +}߃71+aFf\Eoot0<~#"Ӌ;մNiemσ3/[>pwޒ|@a\Ÿ]!N˻/)Yҥ6.-8@\Ą:$:n[ӺҬXKNbn)L@Y eDoc!#:$ᤷ0*6tʐ )-Pqe7'a^qz4JC@gIQPU+duCK\Mwĺ/&TVq@|@/~@H`&`@!#<HoW1쟆>.iyׄ|GtyfeG#W5\_TBvBҽ?ͣ2KX­9;e~0u dp)*k`Ty]բ98&xd9%`mau8-9RgYa"/^A.QWɾ naoΘ/q],rnJcS-Ћ$;BW x"SSM)feˬ4$[XbZ=oMhg8?-!SGR EAwD){b:#sچ*/!=nQqsQH%ڰEKb%ƽ6[Rt|_Oʱ51(Ԁ-u#aP%Wp6tpG\;`APYmew$XKB}h3 HZF rML[yhU`SվDXu \oU/#f ҝZ;cI+IcLܟMdIA*wfS${#hp}t{&e-V狼Hg 8.jnմk^ Uf'.尰f=.UG\.@[P)OyrL8]f.{VA>"jjV +g0! 5\}`3r;w(#-)[=œ6g~;Zǭ-\TTϴ s~Nn<%%\j:-νR%~\Yߤ~U7&CN)kЅY=:ՊeWrŘich/D~_A|"$z  @8yTZ%yU!\Ρ/wTOOK\ND~^ҋo\C + 8_Bۺ6,"; =̑ +91[bǢ*@ˤ%.%|N 9J]2\8qج*jҡ%W*s`4ZCNJl^H4WXu 8(  +VA +w)D4hb%6sMu=x):"j#it)1?",4gE DHCְRe+B]{#HϜ2C"R2aE!t> #j%MPCeȠ^#7Tkk9.uc$+8/ъ٪YUқks; -EgDQ@RYfQ4nJ7s;䁚P#""nsכ-&/C)c9ŷˤ,}#Ps\Le:wYb޾SDdTFo:v(Q:E<;5jzܒ܌-߮Z4Ζw"v:ܬ\/t[6%KPof}"czQaºouͤRfue?yLvkēZ̐ԯ-|qDrZyU[ zHW r5 4Q_ՌҧIG7j:%]u#V,y_ؕ4A8Gm/{'S5ܲ 2tE$hOЏ-FA>o0.KBЂkizqk^7+_|3x޹<\ +Bx Z-+Mշ!JV-~F,7N xDԈD8K;5~<*\Uns dFؽDS $UQ8%иvx XW; +5svg1nE-zC,/h)!(69ҾrJX]aPl߉]SC*~@Nf@ۑ'wP%M@ +l%f̑Kx}+ajȢ_%mEV˹gI#/Lն5 D%? !mI+@UHm*=c;gv6+x%r.T+LQDk|t, +3kf"& YO,qL +E7a2^֨\@t Dh| _CR>m~"bܧ/?[ e2&un֟:QqkR.Ap>/h^;eyw7ڌ{_G:>Kc| +0 +endstream endobj 51 0 obj <>stream +JFIFaKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Ka + Y!1AQ"aq#2BDRT$34ESUbrstC +%&'()*5du6789:FGHIJVWXYZcefghijvwxyz?괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRPҀ괬mFI⶙<'1\t}测 R%3]EHLɴ^@ }چgq;HC3jf0u\f`>Ԓ7A'w0;"ǩvUg#>ry~C5mty-A0@<|xy{="U?Zfe\|)]k$ضȣ{{9%Nrd+Y%g4 +HVVR͜NTueldV.勁 0q&m jsw";e{Qa ysRp&_3qd+*`đ;pGnOl6b Iji-wmdUn18:֡{ pt&*쌞qB'er$h%u=pA9-Y$y.!NIGmQԭ蒼dv.Cc۴G׻& &R5TbL*WU)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRJ괯2FV q0J,Ye$g@e|&@ǝyӭ%1 +03v>ɥx$C+H Amđņ|@b@ǖ]ok/osמkD@- r(+=x~8&Dry{ςǿ':a FhḤT7݌Y[ĦAٱbH|qV΋fg7= [Հb;dzA[[L>d{yVD$RdAc"(Ń,`0'T+M#]Dvܹ {1(pcǡ?$@8$@''j@z-.,*UT|?^Λa99sY3\F)/YD$*_ p5J$jLo`=lX_[Դ{tEچWf0GbÓY=[_}!maD..]eȁ6),IafUI^C'XL7 ϝeE_{wȐHi +bf*ve#σXc{0~6?~vomYMjy=6Ј\Tx$ 8`'U_H/eg/^I9W4nzae۪3EvF%=yoNCDlߦK'WSAhRH6,W899k=r,ddvaTgn3k!ԮmL$H#6N? +͗^k-;Oo$\$. ,N}9ƺdkmF bia:6LT#9#!X`y{Meec=8ӧWо>9ټ"a:23lb[pAǕGx_Q]!";ǻymxHiڋ#IhXR7xT@xIʃ%bŇΪqϚTD]C2ʼ;byqIZ=* Q^)x qHicbns, ndNUXZs*o'mC7oBEeK e(KK/MQfqaumoxr[E]o"_mNN}K)dP7@sT:[? +2 +2Ar9W1 =l,?N+܀}R8kh͸MMٗv0; A[OE2FSF2ۀS䟅Ni41+mOn3Q7 h/V6Hf]@ y֗>"LцQo!~cxFEͨk2ȽFgnfCIIIohѨxrY%6c{iNF]U]a pOrx_*R<uG=9#݂m`A95Wֶ2jbE,{$ $d*-įIY\J:|T{xoyTF(d 23YI$Th vVG9_yx9ylBQ*cK[^gU%JRR괥)JR)JR)JR)JR)JT<h}E_麤~1ԆKf2c8SwYKe}tݘ[ACLV.jvƎbcp ]BHFќWtZ٣fRYFNT79lJΟV+c&?B?u}:khHJ;À~T^jZޗ{ @\:lc +>gRp=y󬋻;ɵ :a-e.U2vvi'V9#3;)(:A;XAXԠxZ͆uu[Vf\1MR#ѿ ڪG$SG_Ek|vZ#,A7#ދqv㹗:NB>{@u. *VQ0Q4(R@81qIux$Wc]=O#Ԏڋt8.%ql#'@Y(,h:4m4QM$䬻 r-T]qYHq {1GNG +hfg]IQc.Nxxȫ:s DbS#'?׫͕Ċԉ~pk_.Q%"ct;z'QrÁGiiɨ{RĻzsB1e98K ) Qy ,J#Qg9aA0P9 Ž{`JVd`,,{,Rx9یk.*괥)JR)JR)JR)JR)JU QX7jT1T,7U)ڬZ{d ?=kCKkG[vly9wy/<K3 +‹[FxXM +ī=?]R0JR)b0 r79bYܦi2>cx#}͆*zTxAugVQ6}99xo 2MX"6qA5kQjnV8U_o?W_VDkÔR.n sX^E,&RzFE\RpK`}~4Xi'JPq^X`9!A?}cXIdf1RB<W'40^gcYUpb`>]_=--u"@t~q<| đoUi#bF 's_&'hn + fV˭FSFURw#y9(Ē,YdlO$ckaܼ me#f==!\Ԍ+*֖xJ#نV YjC}+'tm1nqVm1$7@Tp{n ##֚]W+ʫs)'k m!YeHdXXl]$ 1c x|QѬQOysFBǝ<Ndx6LR$qH>j$J I$#c}Ac㛇\_KӬf-*GC9,r' +#2ER[KʝMtA !l1<=]&X̅2(̓cY̐#H*bx~ꊶ,3RƷmIeI 1CnTυـH/(|{s^|Cv卞"mpumfd,2̑99Rx5`Z9X + hbXyQ̢9=I7>K~n7csUV[i ]R"<]htY#9'ν?#%LÄ.F۷䚨%@'[}g8e_ncx6 Fpj?ڼ=vc,I6RǞĊ˛WKkthFwVbp{ɥ5LMre$0|<<֡}Z;h.Dw:\(.'곂TdFMKjr^ib~.#*=#Y:r;B>,Gdxvo$ƏX xzC ]ؓŴS7Q$c'ܕf)JR)JR)JRkWAtb<%H6S o}w$H)J(괥)JR)JR)JR)JR)JTj<&@nzkC}I3ޣo4cWv8 $w{8yHa +ɾK=VKagd)dYFlI0֛]Q_<3Dn-cj1e!I +";˄ Z^0LXp3Y)f}#l0OK@seIG5$kuhwP+6`FwmR I#sHMԯzp{TcRP<0 +H|W#2jz#f ,1gj@,l%s4 쑃$3ʲl[ ge02ڴ(dflq)#$VŤ3=;xcU*F<t4KS#cVu$^(4;^E++'8yZ &2\<&5$?TDz2xsQv<'3Lb\n2q$ k\4q+%K sx˭"f$7U&h<%~jiq 1RGH'Z} +:[YfP=Fk_"&kr GoepAo.q,IY܁{0 4KGO%$C#6`xm#>5i6{OZ%b(d2rQ!8d'ֽb0)ujhcpvdFps#W@1LR1LS)`Uj0)`SVb)L +bḞ#dPdb >;(sܖ9'$rI$WLUjҩƿKTVV\V^2ۊkљQX*@aF|xx% I'I䚿JR)JR)JR)JRLSZRUh괥)JR)JR)JR)JR)JR)JR)JR)JR)JRb=?X$ymf*?k*)JR)JR)JR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JR)JR)JR)JR)JR\KK,-͡ꔥ)JU3U)JR)JR)JR)JR)JR)JR*괥)JR)JR)JR)JR)JR)JW`X '*,ŐK*'L1BdwVl)JR)JR)JRB3޴? .{h#ٝcm!\߸9Ϧ* +=2oR]It+n1WϚOn;)Jmex[{4f!&f 8L&&N1]ۜjVζ2 Xd!``Cz41X +u-?U H>#X+lŘ6v; [!a6wG(]AȏNR)JR*5M^L@n01x)JR)JR)JR)JR)JV괥)JR)JR)JR)JR)JR)JV1 {p։a:t6ğz@JR)JR)JR*9]l۱:w;{Gv@o^5 qۅGKzUiJVn.;]By i#/E!J(`~]A{sioon$xh;t,+hć-̙P9pG!2e] PK::V\c+o[Sъ3A(ppoIRtpnd!z[-)JR)JRkMMcsDs (ϭuAU)JRScn!w@l3z&t}Ia%Q!L$ϟ YFV?r88*Az^ndR:Cp</"*R)JR)JRPҀ괥)J="*!rB`'mMBU f@s&K!dW8@o'R)T'QT ++Tr+bvn2F P wW./ UiT @($Mz;D 㸯uZRV溊,ß:JRu=92qzd"r+pA77rq>CUR)JR+h徇sn.uU)JU$K1pµbãnp)"ϼ9ZbX!#@fVXGm/UHywe=?}l)JR)JR)J괥)Jzj@""~ci;[nid/&6"'9j;]] +Y$US݁T!Kۋ+;~F+;-Ƥ+e +Ų|:ٰ8*@)e*x9xŠѠtnuu v0y{Uxh eaǰی[߃.u i-)?gc`dZ![h!t#d#28HG֕Dm|_qWET$)&uYXNr#(\@Xvl4.?P!𱿺9 q[B;-CG-{2IT% n3ԃi9Rv?qW؞!$*"ـ8 MZ}zSFV:{IWWV>Ke{*iiW2;A'2y=6 nEDFXLJan(FGzf^_]@A%ftʆ[8wUHĶ䢷Sc GRIKv#G+C=<z8%G86)Z@Cv +?9[O|>7礤qܞպR)JR)JR)Jf)ܻ' -AssYAkjQBVu6.F?d+] 1ŨۓtI߁5 p?[Et.n+FXJmjC\\s)Co6.$.l@Rk#]̕g,mFx357v#k㏺bq=M;m|bR)JR)JR)JՁxGa*[o ^k@2@1U<·zN{:XNmr܍ڧ6ݒ7cfqVlGr+Xϓs>Gb^2K+*+EWV)JR)JRmEI!֑\ Peqϸ:ܥΞPZt @(8ڧ=])TWS}AWR*X$}g?%5r2"IPH ֵ#f qře'VgpG2GjJR)JR)JR+UVktk;Q[S+ #c`K s*9x8[yS*)JR)JRFx&mV<7n:R 0؆?i^9I,rŊ#1Y~7-rFyOpT)JRڢ-טb4,rgjPUiJR)JR)JRR괥)J4a>%Fd9iup֒#.$nLp*H?1Z}"Lrt깎%8cbxUyK$qX[,@?*ƛ6s #Kofhݎx,u&kvI"G *bۼ`sX hdW8Xv~FH#q]+ؐA&jE!:^1Mgp2F3V]zkN!Exgjݠ?1ާz>.8a5QE @}x?\ƶuSRnT 8L\:RbC  dsu-($XdGGE؜  ڦEk]{NgǽQ#$/*容msX` ,2F1 |[_F,] +䌁%I`oNoXFErY9S7%͒;񱺝2g<PZfIEVcp+6[i tLaNF $s!L(#5Hy$hH2H6%0hP+ʒ3sXmbtKT3 $qR+VF%m5 I#=HdO锊+k]oHd؉)ێO|bX+Y1GrG,fkmSO$x%nU0ҭcGI#QċF;yLҔ+VYoc +jvGq¶wqq +B+O1;G*9<|k3 A$d$m܃ޥ]BN:N'Qo}qQh*Dpi{ju#`9gf8T_ȼ.,u;щQ4G"HWJ{ m{Ltd &"=b-rn"yetnNzR)JR)JR)P^9+N׆O5!@.pШ~ +5x@^ƨnH8.p+si6I%cnb.<3vWr-f;msFv=>Oje(^RF8^C?`~z 'wUs˟]O6w1U)JR)JR)JRR괥)J4պ]GzR ae8<|+8U1LS0)L +b1LUWJ)qJE[u6E]æۏ<~!\ +`SqACLSZRj6чjrմ +~5\Iьd];OKw浿 ҵV&hmj.Ů";gX2'+jel )~L HҔ)JR)JRi:VZ$Ww#6{OG#ojp>$_hp(K/Hk:er^-paxGuh׋{XfY[٩JR)JR)JRށP/ +Ӹ"XhS\s(Nj/H~jF4eFG;*"bOcsٲy~5gJZ^8>jÕaX^St[0>~|aΦ@1J)JR)JR)JR)T괥)Jy{ fY* p${P)hŊDI:r##3S;!<~нW^ͤP@3}clEyޖt{`syR9#=I4}S\]iWFٴ`EW܁S1>͸d>jeO[|RĠFv8bJR)JR)JV&zwEAgP?=NFa$n +u-by= +?lcr8Ha XqV223XZV{k>H Q:a:S~KʌE|:uPdelJR)JR)JR)JRJP괥)JYk N3M MAV"R ~JI~/i]eE*nfx)#'ʼ^-֣gqr ^WRMBvxRzkQ%YL`lcaPv9mZ+38Fcϰ^-Aϕ*@C F8Jmzjǥ l Φc8AʤSŌr2Q[8-#Y3dm!жz2KlFnq`Ԧ:M @${5gi۹MdfRTXP\޼̌r9ߑ_ם+O 4ݣ٠Fjo;(6( %eBAq}+eY$|p66''<ۿ<&y"ZZM7FV9gH0ƅP +xzp+Zm?iǖXs9ؚj> ?2NS*c0n#ܓ",99Y]OE^)JR)JR)Z9:jյ;ۃw7?ul,dAU5w[Pg'zj?kwV1uk}5l)JR)JR+W?_ٖI[xG8TR}&5_J1%;dr#_~6:m.HG~*OZ{jdDQ4,;#;Ѓ#}fjp]'ibGddY)JR)JR)JR)J괥)JU1LSE6LS1LScjV[K 2.Bȼ"E[dVi,G1ά twhk8 +cZRLSh+ UmJ5$׫P³@VLSU)JVO=W|I$5yojyt91UCxG\fkݱ"ϗlf7u+Cuc و ּ9.t>êCԈqVJR)JR)JR?| v3/u Doݲ!?ƶ:R lIaudGȍK9Wvv՜UY /$W*>#NABc; j[tH]]OfV Uա+yY@,Qp6"MN{[:8zS2ɑBlȩX.bP:5`(pH0,>`r*GS aqvce'~:-RMyy{$ǎ=kÿ5'*F drȊJJ0,0GXN1"9䏆 aǖjBumV-&4y%#>?j3Em-nGF|)t[iv5Au $M_ޱ/5k-du 0 +3"x!ިh鎤X9!|Y}X]MT\0BHW$' ⽣2A=s^JRk=!;I=(:KQԵ X}>URWǶo:+3,D>DnnWzGbu!oő[M)JR)JR*^@e@9殃ܯ2$F2+hjPZ/hEϩ?yɬRZmZV{žO (I.g[e)̶r m +R)JR)JRoދ>Է2୍HfS 'פּqU+[N>]=GۏMv>5&Vsu9@cUiJR)JR)JR)JR괥)J 6!O >yCqM$惣s9lJRAr>GDȤfO-eg rqPզIn``sHI qx' +ɦ͒>́]C ,l:6p#;>NkmBKxA"vJ'Zߌ:oYrS$@n|UELhK+!3GN8~u&WT{]ٙ3V[yM%50?PTzcZDJ:r)V wz,EH yzW#Nf FH̲9bwov{*@xQ;"w 0yZq K$JHق{sj4v w'鈸P h$w'OçiJ| +!VQ$x` dɨ {%QdTJơ3vsZ-ʊj6,l#X(hEnGy [@:nZ$*+iUC*m$qP&MC}#n5 wq )zYet| 2f 䏾K;9EeyUEJ b_igi"EoPܙ>U֐>N pDZXԞg֭O+I9|HWk_n^ ǝLxv4feTRXѮI{T)JRߍ/\=ON*9~<,j^YKdAOɆ h6)5s7d$zM&єc5WZCuٖ4qYt)JR)JVYR 5Xy Q =\ayV(I ˅>MCZR$,@FzgU[]Ziݒd$S0τt׶nxL:a)J|w٥%;ݓs^;Mr:/*dnS UR)JR)JRx?= Z\Csܲ ?\Ҕh:J-LwK@a[ou?}f돹*R)JR)JR"ʡ؂bR)JU(괥)JŻoxRB*YC=3%m's#ŔTdOӊ s(U?}xҭ4w} +˫W]TWS 9Ōl6cګkel5}BWPqȹk ǟ:&g+#<@Lv >=:)Zt@[v4휰P=>xǻqHP˟ ٴI =h^[|Q"U +vÏ!^-;9X` *'i3,J$p81MdU92R2U4IbX59TdVP}@#tC*Џ}0ld +|{9鶷QRcj +ScG,($a( |ꋤY,fmBA)]Č`I;V36co,qUQp)Jռcg=2p?|h}mbJRx"Ɍ7RE&{sQ?Xk>ki8{{q,nҔ)JR)Z桡j2 +%[x0s 30c^.䵖8Ӣ0Xܰ@G gsV'c֮nkHe" ')Nኁ|ҧ4m0|#'(e$Z/+F]uA:ѩJRʥX 2=oOŃ7ZI'r"6ʇut[99YYOE^)JR)JRie].M} +;䫁[nbm(?P+**#''P!~dNTtk]Z^Oyk1q攥)JR)JRn^ngj1C5&ߡY0Tl)JU)@괥)J.>mk:+"l)`gwՓQdK/F{ds.٬ji)JRiTK`Gcp8)JW7Eg$8 {ynoxE)JR)JR+4yn$1F%5~ɽ)@xp멛RCxH9\ځh'k/#5o:2D߶vI>iJR)JR)Zw/Z=&GԠcQ~?ƷRSsnxW֚Cl7b?>BJR)JR)Q!M;N$#}yƁaJR*괥)Jտz_:̕mZMqqq֪0UBn3.w#,fvF=|2kOKvfQ>,GnFVP")L>In< +ij\,t{ɕٸ8;QUԭHv-%=MCApǖp1WuxolW-ҍ-[eII6Ep8M0>b"[I+6`]Cm=@(%Kr$/mlA)){޴RIӔ4^A!Kg*^atA4L/n1HO ' 6upJQƍ{T;V.{qh X}Qef`2[p$'=jZꐤj@RYYmL%hA8&"{AddžYU+;G// b=X3Lj#"}k b08FrA$o(@<`r6wbeq#@^NAG|4fs,w7ٌL[\`'8RZw7SA MWc(U9m7I8 xѰ997#YqVuG /'䇨nSaswחuwqyKɦIg \[S#rI\+nYNA=kzy@`£;ix稆O9ddFʽvA#j 2VxTL+3I,8=:OMCPIX{XIՋD@z9F+>DgqTC8Db#ss<'cçH%'MdҔ)JR)T s-Guٍ0 +\+R)JR)JV{/넱vHI6@H՟p4lfi JRk~?VIo6rL&ҤmkBoo }R)JR)V/n 'cA'ՠAjÏ(ēOq'QutQU)JU sVoxrkЌ*]?)2)JR)JRCZOndi˾УQ"ԭ)JRb괥)JkZXd(BPN^+'4*LfZslߏs:^dqc$5jfODa2[`e 8dX]{m3oR$|w 3WVn>x]Ċ)X׭q,dA *9 k'5ZifiLdS5gzM2d)@\9S2))JR)JRF[Oq}3[>~F%Vm#ҝd^JR)JRztڶ]5/ +OYN1RVJRx5J0 =A"X2o2w#c+>FDk$l]C)# R)JR+^񳴶)d޼wX b\Su .kjZR+PȶQ͏*+V_Yj~̀|yJR)JRQ($&$3xkToxve|M5:R)Th괥)J׼G \Tqk곱̅]=JѥYf[XL1GqSiz\?NQ餡w#ga߽G\_]–Q'c]gr asVMB,H٥d'a <%%WR4PT9 +Yq`.pN8{~ Mp#9ft=`r\^Y:S4jҕ[XbIkwt=2ud;J4" +}qR:hehKTh ;1lTڭS#Ȩҩbʯ +2@5%JR)JRDMmSN4$#;1Zi."_Fˁ~eYdBYC)# ׺R)JRDx]̩e#e~2*ܖ#JФZ{ޱO8l|wmԥ)JRVp Yd~ .t9/jۡ'(GƶR)JR+[ƥxr +[ AA욊r6V"8C)#T)JR)Ji7 U=wL1&xZ|% qXAjJ)JU)괥)J!+%,=-I\szƶ@,s#;6K/< +Ӵs$Ӽjھc3|RU&F˶fxћ`12$,@9 }5&gB;=cb8$'$ Infog0W +SYv~K+IdˢN:a! gza.Иr*m" ZKUѕa*" GūO3 X7jU Ϯj~ (M-Z2%F-;W6p3w$ms!ܠ樞KCjOȲEh8HP¤,R.rOrŘMdo ++^LءeFq<3NQYcځ'j4e)Fhl@$e S/F0OSnmq+ݦ-;2i^=;aE"N3ЬYrFw'o ԍj[Uh-Ő 8q]uHr22:)"Bkyw3(Gt0,Tf[}. Yo*85G䭲)JT?44٣}bm/]돉>.CgL8z8'46 W)JR)JRN+\i7۩0ǵ]OQ}Rխci/OUiJR [t5(ZT#d0w7EM,#$3R l)JR)J5KWlh$H玧6 v^OOF٬mbv[ĹY)JRj괥)JV*._[mBʆS~8'e@ FH"j#D!;F;lp>UEX,-ܤg5uIgĬѥ%);q$qRfZ3Uy]Z$^Y]p3ʯrEhI ϰJ2' +3R3Xڕiv\Ȭm>W[T.˂2+iJ2Il 3@l9 _1J)JR)JRslUrne_?FlZs[m}s[UuWUe#dJR)JRumF9HZEWpqjвZ|~b,Τ)JUkT)]h0N=?dO9՟ &u>p[F?+Tu[,5!6-6pA9\񊷩u{{h +C43~qOlXnx7q0B!%IVRʻ#$AϕzЯmP;I,bcܪ.@;lyk{ r"B$r!$lq +Hd&5RN#2[;`{720vʈ*fAI8*lny: З;dcR/_܅Sc#V +[9oZڪqsK}pI#}ʂ>mF^6!iv cndzT׈$m#M ]IV21zƩ4W6VȰ@JMmg5Bʞc/cJp;gj_km $+(xF\;yW76ĸIў2q)8nWs\ABٕ-m * +29OrA4Vh ;UHD6Vw A$`gej|gJڹR>DW[akp̶9|Q:qik`#;pIp-\J+,'*&\w'#`3qf̆?cdagd9 +5i,oXA@XD+F>U Tfd[D2!QsAR%eW(cY# A)JR)JR*Х4n+)V`<=6n%czŒ2PgɤOqI6?[p8*yKK)j+Th"UEρCh}ݓK 2OrAYtK 8uiE`k3[l^Q +$H$s|^ynm縎hRHbTby5=\K2\!\D%Z,)*JG4ӽ,&-P8IL=T\p?ºЮn{crw[U~J#n33aWѥRkuGX۹9'x5W2o>jw!dHAR)JRk^*.,xn}M[ k ϔ_R5YǥIb)JRFkWmf#m'IX.|&rG1?qV)JRBp3Z߮G/*7Sȣ݃MTcI .Ml)JRW& .yQs$~7& \eOH'NT55/lRqG؇nǣc"JR)J׼D?ip&Ss'`܏[@xNej~JREOiR!$opH3Ov2 }#7%?~z{#ݴ!w#VE*P괥)JRB3NVcOmH sAy1Fpq|{yx@CA##*ʽRkPH3D$Y5ƥ`d8=~^ZRLi^Y‚}BN V3-Pe! eҔ)JR)JR=SC\{~ H>u##+V@VY&;tDr  [a񖊠?MXwNqY0>;PդPʎ}k6ӏʤ+mrúk-J)TsÙ/2rOfӧ 土SzoֹbMncpksF&Y-= iT}8RWU$qV>YOԭ)JR*լW<3 tu* Zn^i%po-yB2GQWːUwž= GLcJ2v}gy$`~rq}&M[9ەiy2N~ sI^1) 5ndἌI "̬ԥ)J}鲬Gf+_v ?uH)Cmي4Ac5H+in^eS,hH7__l)JRմoEt +U=V{[ѥCovn%_u~D*Gt?䍷Wׇƌ t! A? +N?ԗtiڳ~;_V%)JU kc^^j3 x?N?p˫{<g +(,{:񼪖֊{d a[V@j[Tnn*V"(nc8jb)!VY:yy8~J@괥)J[+ٌ)n,3sk}룴RG.e['l a}* D{s2x#M}l-Lټ*Bnu 5آ&4_N,c"cF(x2kۈe{=Npb dcӏJu+'NDʒFr_|S,$QȅƸU +STmqz%H;|ɘ##\3P\ǷwHMީ< aUA,H>`*:V׍QI5pPЀlYu 6ڴɸ1h3DB]q*¤BpH',g:ղC 9gPa>Xg9LI$ "Q_+p_ &K`uKynX#[Fw}܎mPc9ϝ^^YA_X.H!@O-ϲ_`yTceBrr_b4nE;}fo.uajahΞҠP[*88|H֗gշԢYLŁFP3~гpvZׂ;17`-xujWeuQr|HKc ,8*[R:q 2CYvڈF7.Y푌YuxdftSxD^Bu"{aEmYBgD0,1oYӵ=Z."dy""5H$<H?uCQx][H&=1q"^ζU,ۄ`[wzѴS, +/sߝ9.T26;`4 ,mw!̇ +7<qYLIH9S|k^jrEj ȐG+J2c' °4 &NbrLKc8Oϕ\ ;=(I\XU6,Ջ~#{,r=$_mxwS"JRQN ~bTbO)Ou]ӽir-JeQmwBveRE7WgQAnMb'`WT 嵌 5ӢD\-'N75؟#s YмswنRN{7>51N4HCy< }f㼍adȼa>>UWWKѷ#1 Vѧj+kk2HK(m6%:l2/Pb}GZR*+8״ۛOcH/ ly'"~Ѵ ٲ^xOY?d?CoS?W ҢfMY\ WSٕysjIQ`G ^@괥)Jo#$6% +)ky1w7ױ]ܕNN"1~ArH^Å&bv[}s7931$-rߊcԣt$b\9ps=)i7s^ F@i%nbC0eH%O穨Ɗ{}{-3Fܩ4i=̩`_ITa]ǶyhvKpwbXpߟ*ʸo,_#UmXO@O?B4?KYx[IB-ZFkѽ/_T3Ӈk*F4ɭ>_U>_U>C_ >VyK8Ew g³:eYYbF +.< \yʒkf +z0VE>lŢۈvD`G?Z:xdAt~ʬ@v ~4i9DYU}5zGLQ6v\,׭[Xj3м3dUKhlJH9  YRHXVmܣpGI 8?X[{C@9y}3{y0Ai6Hd#@6Ʋ?s]X khP)IDrA梏3eqwE 8?ss{pO'a;!!63J΄ <9uvy1*xCsW +YN014wVbf+1>Y<'Dե:m%G8ˌ{fcE?Z_O"O~ME?׋k)*__Tgb?SU?'?O+&zҭ?MGnW 1Kdđ皉_[-Wt,2[~ڷ6 ;r0+yފm l~ݚ}.7c٧;EƢ5od,F ɜN(v$3d/ű-Ζ")uUwb!#3W|v':/%[*#UG`8k~zD6b"^Gcʢ<65C`v+Su= \TLPDubA&ܳ<ʬx;I +`O9Ry&ŏw?^dҔW6^D́ԫ+ $w~cY.l@F^|1|EOXjVڤb[iVE>jsjZ @@sPmꗑqe 3'a~|kdIPh7$[\sQjE!Oq5jsY&ڥ ?tzbKm>i5 R“m9PRFX#+ݿt$f%1o&Cm,8 5iJR@xMk@H!y& cdsXV4iH1 A-p0IoZkp9 G$+?n*VФont?PsE 9=MQHq7g_LZ֧K  V5Xpdn}8UQ_!B+i!b"ۂHq,+{t}KPLW8,p3Ij06"&#rXl_@z|ϊHdWNB#+}q<y8j!YHc?)+q^Og[a%\ E(Sz,;J+I!6!ǝI2, +QT {uѼ{Fѐ[*~DdJŻ;>3#;ws\FԶFcIc% Lr"tA+3Z4QD\&XUW-f1n3`<ǵAheMu B>FlȢ%Sq0$*ĜMeKo a9kRs"wIN1QBvpkVNE +'q*r5\֮CF7~WΪx<,UFhVMl8L1w p~B}>+2Er)*,FTc?ŋO]A`fA0UFD&އ}\ Up *G,+MQ֥%RBn>UoAo_E[fŴn1"k1{rZex cMGLGm-ei=b>qS)JR |(Dgsr')Sl&LY[XR6*9w 2q)JR/+2lxfYxOMLu-#̿T)Vn!edFF5 +YGgbln%I8IMhmr(nDd(< ~gsTi5x6N6gQitm$ಗFmhrkpZR)Q6t㲒d(x'HvE49-Zyjw;OP7ߊɊOԂx^3)p:E +$S«JRu .Uu +J?*7䉙-qjr+DXEDQ]*/ ëI(no9 ߵgmF%2* +V~A +DʨHeq%Ǘ8Sh7G{'R3:-Ǧ7?5qo6I,o,S[G5"lh A ʰ0j^$P@#e'$gtC/[VWʠĎH)mӵI/6962і*q`|< KK cڭ][ +I,&hb TAS8Rz7Z ,0fYב'r9 +872vic3*O|rOZ]5mI #%@rs+]so 6nX֓ +HnNx9\i4dwhd]>YT{7qT\5*f wzjwv]YMȡa:1 >|Vq{bY̱-В+;+T1;p֋ms:F.gFi0#R_#<*)JR*T)c\bJR)JR)JR)XKb tn9ʻ6s^UҔ)JR)JR)JU1LSZR)JR)JR)JR)J괥)J4{}P~c`ɶGM;8G=k4qU)JR)JR)JV6éҘnVIV 2#ol13$NI)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRP괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRPל괥)JR)JR)JR)JR)JRQ ,I< ++g=/t~x^ԭn  S^N$7#\ WJRyH;+)JR)JV-mw$C*;p Sݫ*jKFvu +I\wOZ+p"lm9+$iTV)JU0 Jnۜ~BqV-o (# #U)J[8 ^JWeHUQIIVWu-Y8>ջ^s\Œ1iQXgk67N#cVTf>}fR)"ɝ ^R)gsqȡnbȌ@ +R)JRݪ괥)JR)JR)JR)JR)JRbj?eݴHIx':{<$~\%w=\!\M ,P3+ O y!KDb('xOv@Jc >_/NoDXrH P[:ŪZV$UnIrzCmir$&W1^ *G$zגsstd +eR۔+.2rf?\Mn[3#2V1*kj +ƶxEܻQdzJ`bR$xCcĉp4fI%2a) b݊yV2D2RALE6`$ IƠ//Nˆ "Lj<y}­>St#vNU"֙n"+eub,p9 9J@yS>gSgsU;kI-tj>FlDl=NYDki3 ;pF3ؓTqK wd~=myzR&7{_~>UhxI^ugtSfby3ukIYҞ,vLeK"C-X*wG.pF*ëvLNK}7ۍ5Wnus +3 ㈄.dfrp1k#Qi[[BREpE@(?9 oux:Sķ6C@v8~G2dn4(F\fMep3ݶ)nN< +Vq =ɦt]%#n1^umŏLgh.x6Nqyʳus5Ώ<{ʍB~yy )#0; +8pG5~kCeYn1ImsV16yze2;"3C>l]pڳd,25$lL'Jᆑ4b["#h)SUj,jpTY` y2Gȏ:EC0؃5ꢵ+Ց7C$#IP2Ky5[NN7g:ܒLz|M_ZԬˋhlvr`A[H⅀H3P{{uk`cCm ,L!BHBۜS8ɨo_X/"Ue!T1I-KC5ϷfZ2gwzT)Xݢ)Dw&OA`vU23fJRC:ĺ̬tY.ġi䃷ϝKvj e(>ð*7qct#BP@kjאN22j>:"RV8IgTh# МUj;)$n"DdW]q#/3TjPjw5rĮJ\d0wxe%~ssl^Aw AYRFѣL &,C Y4 +CY'8 ҥ@' ܎jL+FXH$dg_u)m:;Bl/#'Y_6;ǢX+&PFAi*;7sXiW2 ]pFG|zU{xleF8* [ B=@JcD{`8$cʖr4SF"6'fƒotVn0xZDoR6*g`;y5c+tٮm.zF hmΎvԵZƔ(Rk]8>UHh 'c0*fGjOio[/5dgCD̊+Pѯ,-+,eS /*jΞ_Ӻ{xWʳc[60T0;B|1@V.V`7/&O!:;lsJy.o4|+I_: :A6pV?2Y iZ{Y?%HNv8Mck']?x{% P#HMyHzV_mVK-:ܼ,U6ٗG~ם9WP>)vdf #*6-bPI|mX%c8*7M.UIEL=v^[/lC 3@dTYN|b=LYZ$*ǂ ጤZnb( +pbN9Kp 4z $k27|}r6} ~5YJv:dIPVExF۩B~6! # 23|A*]+eL6p}qWk$lF %ɑUV@B٦kX)}L[$3(#*< +ڍdE4(vEu9$Y,V]:({ФQWz׆Su.Lʽ6v*yzuK kIǼy8dgXvZ\xfoguc +u WWyna +@}rx8c[\ B'ug/VGpUcFʻO=Ng창SY2  ~+Ε%ޯrY-#gfAԌm>*Ɗ1 #LBUOr5iVKo{qɝȂ>уxs؞=k/GnŹbт*Gݴ? + R2JɨvhN6s9㊑.4C1 Yw*VGtMsp \13XmcsY/dX kn +C}2+3ح[E_گANx$i ?a0~5lWVJuc2(FI+HL,&34oA 7a}}+!Lm(]TC1ccn/E5)4;1,lQBܚѠRIė'2~&.y7',ǔmϖ+ljὓH{y +Hđc k#VJHyB{X4 :# yߊzչ[Dm`Edcb:]jͺEPG)ʒx9<ʭdFZX$pQlΫ,X"{vH$nR X qnM:w%x@ \r@ +;N)wQjX*Sۜ<* (Bu+ד#`~%ՑFY12X*OC᫋e;bшsOm3˥nI$w}f IdW +uup Ģܹm!qv:)JREx(괥)JR)JR)JR)JR)JTn]G!x*HouOXs[Ip1֑B`6A +1ǚ *\Ct2$UѕXYܞ|Pḷ +l$Qpk"Lx*#UV p2~VA`!E|Ƿq+Q>ˡ6VDU% +<{*MWhҼN,l  bޥY5섆 x}ՙ蟇F pyUdK [Ʌ*]r :&[Y'WjVÃ;γ!\99'$IaAoBlؤP6c=Vk,0\PJ_r2㽊Ky#xax1h7ҽ} HlMXIV9f{K\6T"[Kot{k;1cmFɷ$'&O,ͽe<\N9^te֠6J}r X`.fA}BKi@쮛V0 T 9 It^캜n9hd@*|Z̈́6ֶͪ\[=9bBpNknў@4c~^YǗjO ٖwt08f|8+* w5\HH` +'>uoΞ3K FX.dy:@MMvՕb\ɾX{qE@<5n? mP.]F"2۟p7;qP']+E{`"d>u3m k/p U_kO gN͘_>: sba;h{vAt"Vc  +z-HcQTwQ*òi%ݲedlC9hxOn$^Kc߶>Lt?̹+yeb c8RQiCIe80K,`4op;U'sy]cQ[XP#omkmv#[FFHLRn!H'M{О[}bʌJ15,sH~OW𸹝n.nWٱEhÉ00#۵dZh^swt.$/r6Bavhq~5 hlVYx;w77?WAsU K[sgIԝRX"g;j6S6zZ]]]L +] H'9X'+pX- \{qXRi֦Xc'T TX*QA^rG84QGxp.zL +HAݓ5j*6vv/[p'$#V,F4m Y>cQa{i?g*#km/sUh涔=6-y'IE')gKÅd$} ==xl7VlG+0ٹ5UBrpp;mΈnoFUP!_9R}Ϗ*4cipayM 3#N9UD_ڭr7e@$yz0 1MaJ8@U ["O$B؇hCr#^tE dd ȡI <.\ӼaDUpԈa@㿝]?<]̍# +0YF8oae P]Jר"b*hj6PpHJٴ)( Y׵"]2c.I&6q3ƬFvM]vs#}y&{9''Y/eqypRrA d# +} 1R+ 4s)C&sxY2]Cm$>Uڤw6mVJ3T¨8>]3C^@ }D +#$1ߚةJRk괥)JR)JR)JR)JR)JRI,Z{#;ZTк]EnF =A~1^Jȅ2׺R*ҕBBkuk,G*ݎ3ϗ^)X3M u^}9"}kxǣ4rcR*`$P0ar)o#rp=`qqWJR)JR*dWRUiJR)JR)JR)JRFh*)Tnj괥)JR)JR)JR)JR)JViDUWo `gֽ麤:lgݑԌ22"&'B(e=Հ`~Znt=!pIqוzl#3*adngy @U9gZQ܉S4+ u9c0lpAASTG7EKn]X皽L6UnKSjv:eb[G]$GIRpgv9Ւ#K,FB͖ =IcIhm'$_gbǷ2FG.r#az : 01Q~(}9g w[=vq4Q=2kTD6kܣuC쮏2WG5!nSx$ g ם=_SQg[!b +TeW}{T#ΑhkrM"O +}smtMd8Xb3UWb@UQ𠟲 汵UmZQKw1ucgB$pG5Ej6mY 1yZvۀ!G?m:?o?_BE{9_'o߇z}6~PU~ ʯ56ߕ_WGb +,A^_u{:"?DӍ_}?mӊm!oAOFjƚ!([~UM])҈ȼqX y=^tC?ߢD_'o߇z}6?oAUm$-*Mt?䍷Wס--*L2/!w0T4N>U~h  +}56_U4BjLtSP~hgU~M?N*M?䅿VMt?䍷Wס--*E? ʧ髃Q~QMb?(ث_ÐH>Άy~3*N4OMM?OOBCH[UMTxD? oʯ1OBj1([~Y?M\'ҏ"/VބT${hg_}?S鶇~W鶇鮇+G3#d.j@5fenI$O?&@ 5&i*F?a~K''BӏH?#}O;3#>im!jF6Ut14% htT:EmU?؟ְI?ESZAO:qgosT=V5Og+oG}ѭ+cC$~=8I)I*,X?$t-<)+ 4}?i[B?BFFX1-enI9$WKP0p?5h[4EmU?XՇI*4ڐ~I?ESYF?>cSJM@0joiIk+rI$ +djU@:k)&i*Oh$t[' O? ~ 7cSJwKmsWƙh( 5mbKXXg81!.d(0M1j"I+k'~jA$CU1wLosC,˥ +- #\cU֖䖲$aNOˣ( +- OCI?EPOT:ZAOigosT>+G3#PoK?m!٠ +- #L3HK5$OE9?b(0I?ES5kU`ZA$C5OigosT;~ҷ, iGc_]&Qo`cT$I0 +-a OO?OT:ZAOqgosT>+3#PsK?m!jFt1|-ߑOWK 9̖D`FH+:*괥)JR)JR)JR)JR)JVoxVn)V,qszir]te("P2 5=6 +&\K% s֬A≵[lLu(C}r}#8NhdgɍYW XzEjz{(+7G)݌q{ʶI7m݃gU-U:u1s0Hčq'KZ:%Ku%98.I>@($/mC]# 42/m$6 Ed, #H$sGI1S:.KE"+P{@ |C +kΟSp`xw-@d8 +a+^U]ZMwLUZUbUsa*"E$###U'rU7 f=ytX2Z˻waSkwsbI8_w #T'4 dr(N;5nfv%w;wdqsDx?Z_Q\*9^7|lzRdp0V-Zdc,TTQZj)JR)JR)JR)JRC^3@괥)JR)JR)JR)JR)JV?*FEp+kI]K\ubLC&.F* ]f( mGj w' ZRK-/ f$<g}+Kqp"bh~Uε}.]%k:\Fmݻ1k .9bd:ߦ{Om2[Qe]LLzq_]hIt,hJa՛l}ōA~[۽ ؅ZcB9c[w7oXY,AgcVGƷΞuUԴTF)qYb1N>ռ Mӥ̀Gy1"F\dNbeH'+Ŝ}Ճ+-`,( CR3ծޯGk,-۲K Ғ8ѼH>\V*{ GGܶԻ"<)l ٟQSI8@r݀c0{fwDYp@ɕ#q~UoOTuKK}_]!RDZXz+o%/Vcrm~Tvn,!kTud\AnksJI]FUeB7o0ii-mm2BPuOPt~0>uc5h6:},J ͱFG 0Fp|UZt}7H3\!{BJ1~U[omX6 Wފą8s@<+v5ti%HogHvm@xMީ9V6¬N#g=n*9T%0Mmqcw}{w9Pf㑊-̓"wc?">'Z2TȳBqV-4n|W[H azlo%sܜvU +]H*`I逹g<!TҟWK;i +ݴa$ W%l`mH쪅$r)JR)JR)JR)JUj@괥)JR)JR)JR)JR)JTvX,h ݜU<#JYOpY?qjy?P(g[`Po#W5M +YbJrc8x#?}Z>ͩI &;ck<|+#M=D(PMWMCHzAՕ ^ =(m+drC>g'ͲY+Fc\ g);W3豾ʹPpI|ޛ iő z<6x6A`A#ûlqmy'~ӣ6iXK( #8l*>ҭӧueW*Gk72y=I&Z{E2+ aXv^m vy\@3>JſmHW1,p8#EbjQ2ÖS, SdbNh縋|o`yÖ^s&qqOKv,˖G$NqSx/I;y-dNTAzyVL&ya$a;3]g>>yris{sqaYG$rP(6B=pA9dismx͘Y̽$|2@IO}6+Y-;ڹkN)&;Bfʁ5_H^W7txe:7&prsR^4cr1)ݤ=\qOY5W`9b?ng_y2&c݌yOĊxWKxVݭPƮYP䢓܅'a ^ͻrq3SLKsj-Ϻ~X` 呙PxY;nש7a`W|3ۺ:@LjGb#ݰqRu ɍĐ՚6`<Ym,UAP/}6KUkd0nXWn+cXC$XWp?j^.A!g2eԥGKXsoNܷ<$$yW|3v/"g}gR@xir6JPCՈ32\$e@@As-Q5 +i֫* A2k 󜓻Os^:tP-[ƲF@W`~Ur +,d]W;ؖ YdVjv rWpP~"K>wIΌ\v>zǴP[,79P .;c}sn\1<Acwo,n$$䜑Z +[4-vImG#}o$pƲf8JR)JR)JR)JR+vt괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRycVP괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRynk괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRP|괥)JR)JR)JR)JR)JV~hŎ,qe:1v'.DX+$nJ߮nK+.sԕu*ޱw5K Kh$,,y^xPOQEA21pcoVMzR mdLpHcB3Qz=anLwul #U;EV;lV, 7Wv2Wsjiz5hĒF(JbU}NiKrt $gN*M 8U5Q{).C01.q d*/#Yv+*sf2H z{Gb+fbP1N~@kԷ D_iEC1WELdN+QX7jCw:XtRsϗqYΠl#ViV(vܒ@P ?*_Ac<`s^Gi+i9졏z0I#I7s{88+. 3dWBG?} ~9#Kq5=K{ȯQϓ`g zyg2NUAcWOem,P38jOЫ<;uq:`V\b gjNZ+'i]$!TB|ޠ%RH$$ǎZ]ߣA$!FFb3l$zy犯tt lse#%H8ݔd|+/Wѣ77ltb Ue2Fl1$nͷ*$` +Ѵi<8N#uq2FcbIP6;zi5]hiT;kNF㹈ƃ쪼*N ex}?JAvsQZŴ:ͧ"[*NDnydZiV߇'d WRG'ؙC#yV;;;;$H%*#QtMNVn1 8極_h=ʱḺi +## Lxv[ wYLUI=5`Ev烁+ǐ`3g:5Kuմ m +}Fy:esje;M˓.[,- s w/WBu:=1߼E;9X>% &.2UEeǦSU* rR7WfG\JضI$rjVLH䦶-Ebbcjr=7^#vEK,ʡN+D&7HoW2BTو`o +GM w1uX~r{k'_H n=W6 +dw>C=iPڛ9fF6>\J[i .OnՑ + $dcɃBkVNqږy7m9Ⲯ,LmXIIsr>IiݛyW##=ojpGn1`d`<1Y\h[{"eܫwe*jd%V/*GrK>xF^;yF3ʩ#uKh57),Ir>cqϊ| lڜhUԥNN>25gxG?(FPnnHv"{n2qIO@vM*F{N>F.$[u: 11d$ʒ6IsP07$}U-%#;!$lH@H8dՆAVZLD@jH\n 'Tn;cq Zܬ뀻sF;b5M. G^Xe ]2];.ⲨSx>U-CRzlD{#Gyoˤ])bk; \dc;w2 +vx,dne,2pH0;dQ6u֢6[AKq+{AL(B8Y M_X/ +cY>bÓ-BDsӍAxR&괥)JR)JR)JR)JR)JTfi$+WtoU]2}T|qTJ;W$2m'%3|k,֖a3$q9=M]4ڬnۜdv.g'gTLnO{ '/5(D >2>k$\2I{czי?gq#H˪qylG>u pvgc2K6H7B-B)ҳ 2eF ҧtkk.dSԃ=2.{@9r;qTmlfHr:{<+58*AAʣ핻 bWwt5V$</v}C'CyTG[h6s<++>7\W8Rǹ׃zR]ө&$'3z@be0XduAA˴6F0 $If'y$i6= ,9*AT`8ꊴl(`՘U#QRf[ma'[4h>XIIJ2888>v K6@ $Ynj>5MKȥ{hL˼IǸvǝgM .ɲd;\c.;-ne)?e#qW5(!Hgv5v;qI%ǒO:JmsWx%$sڭ=ۆXGm–$69 Jw07e٩:=feGP쬾IaW,[{)UHmS.q +e0j./ YBT`a+;A\qW4[{:2K'V7hvS>UXkX^F Nz}h<|sV +8gV,&#<}*r$gVT9;s)r. Ep/ɖ-RO Y$>VV \m+N>Uv}y_}EC;nFx=RC(hbNиOe|U;mkpìlcvYw6Dʡԫ)ASAU}1g>^Ukks[\5̀8.Tvx<*r5-Vhpln۽9d7:CpJc*ÑߝYЭnJ԰f%30HǦV]k?V!_>|s^ M>HnYNy޽\V34:RG@rp$sK +B jQJ3FB6'Gp2+m=T©sZ\FpI\0Ns#TVՍ#vHQe|f]]Yz%įKƛb˞Y% `c?uNj:/@Fmw]͸`x6&-67E$ޱ$ +r;6p gm.(PGGH''^^&%h]H9\i*FF}ht;3flzJ!# =۳vyssXj)24,+Bs+^#*w>۵ĝl`^\a&fU83ø-R'|괥)JR)JR)JR)JR)JU.c㍛ !!G +XaX:Z4d0 k>#HR)V/ &(lBnvǐfE'YF`ZVdH&'tOˊR0.Rs)Lg0sRuZRx]g8gf|?cn nV*Fp3ڤke0JM8;yeR~ MFq3Yur$LpoőXj-6#Xa&PWo~Ak>Z1L$*MXq#Cs$,9IUI"VFT8,7[ǙzRGҔ]vr޲JVh58lL\M, qIR)T'm{-*N2?ܧ<Ʈ[wFGc*[KXYjb|^V"ŒpOkQ6wUc`7 yk*Q 8 (;\i;wE|In +*@ّ皳"\ ;J@c`y5fa/Ni{52}C*JrjWwi{iI_ "{~;QZŋ] ?Vp +yzUv6IJd5<18Y˭WL3bD_sNrǞՓ%Wv1it(rW@Cy0~+; :{`: 2gG\ +K裂X<\nW$ n cyy c! jʜzVNP)I#۠L7EԶ!*C]iB)gP0` +E{m3WKK֯*mHyemù ֻFḵ$m7;J2vlrO>Pb4IDm@+vĜg5k{xMRul+O >괨ἛZ8٭^2qjѥvvKeR:7xQڄˤettSq"dH~r 3};}wG+&.݋-Wr7FH#W2W{ 1$Epo,Vfq^ mb2ā+۞Fy<ĸ'sy"ZndwN}{bڧ&l X`j" X^dL(+`T dxW} ne-)\vdbYKa$:0 )rm^7O#Eq@bл.HYunVT8^GnŦwRO$b9!8hA)ꙏ8lc & eqMV۩ #ՑݓG +fQңVQ"]F%n}ՆΓgs'N `$Xϼ`Y_{MO[#ݑpwn5 ]v[Xm+ *ǽ` *3Z[g;;Ya1L}3zf;١lB%dvuܧӴ%A$3Zy$1ϱVRquebzh[[#0dH2y=ϮjjVP+$w}U*d(țÂy^?5 šbKm!+كP,*:k(9}GkJMI4{J{֍ns @M +*ή뼖9`m\YLkU9P9ؓyP| V:\=$I!k&g|s+ׅI Bᐅ5w7U֮$jar wMz'L+^@eS(T{7$vཱུi FfHأR2x9}qu$gr(7ܦdqY i-GUc [* ^t8#uYAؔ%L)^ǓkҔynƭb괥)JR)JR)JR)JR)JV&Ib!ÐFǡf{6 "YsEҺV#􄫷eAUbga灞kl#5|%jm yz!o۷@$ʃB #t)opmlX0o=rʱL_rn  ^9" WFbGVRvdHnvaM 9wvfff;rI:$sox]Cm|oSAy׉4^qי|&bKזR po*[1[)GH?+` eU_gc#3K ^WC,D XT6'^8.#agAr@#CiC]`ww/}έ?m+(1&l!npdT^eq-ܗq,Mjeâj}$ 21`mqqYKXwSc +kl΍$YcYd%wUt,ܘmup2`*y jXT~("]SrgV bĜs5**:E[uC!#nĜ5Uv] u T#ۇ mSWR1D"EE(|j!伒 "V(Q;Zh)f"A4$tboI44ǝi\NWsc,6 czttpL1`v 9 +09=ڎ$dp:0R|իMmZILI,w!Wj'<Oz鉤;.vmdjTzճLv˨Y5JUk8`$a Zϥ{ =M$$1H'ʫc˪[]ZK5ZH ,xp,V|K s? ܙ,P͔5;k G#tmV r8ia[3I30㰬R괥)JR)JR)JR)JR)JTmw!W 7@ x-Bβ0!J}yyzk=`UH ŇJV~Chݷg~~;(^iN$t=IVI&D2W9+"}GƮİٖ6dg8*ÑEfR_&o-̊b[ +2p UouV $j0##Փ+].3b&iJRa\_[px#Ȑ2=yͥ)Xڍ\,jY[hpH9 uJeXgDeRO''&գ͑L26s9Wd#6RpnMBZx+(Rrb%]q>q5HTwDt)+F"`˂xRSP^n$jmb@9RcEt%p#n <*ȥ)JR*窛nggǥ{2H @$rp;Ǿԡӑb@yR1-9t +*+PբӚ4egy7DUK9YC`\dgOcXkQO.A$Q,2p0s M&p0,*d32)a@p||^;ӯd$N]{0|&mi쪖8כ[bI$e$8=`)JR*ZR)^Oc^1@괥)JR)T@sU)JR)JR)JRem%y@(cr8 d"YцCjW|ƽkp[8.2s* #(l99\אizZw9PC >EgVH:W&E +db.6x*6?Om ɶ%t P9fNw~6Zmnݚ+hqKH<;cc$y FSM2=zj6{oBۿL±\c+pKzp*'÷ aʬV7R28íMe*T~ԥüq@3m\N?F{v^.foh4 l˟QqQ~8yMkXO]9PIZ}ծ= c@^8$c]JG>:d#ǐ~]z8tv[iYN< >5rXN: ̐I(_j66$Pn1 @B Vc&rX;sҒ8HtyPS>AV;㊥޳7Y9H%yY-eu@e6(%0+6ʨz!KNVXM{ -W,R>,-kO4I$۴oF qn9k].V[[uxR3H͒ț+xu룡ەI[;)eVLG'qˆU[)eꬶMJ:h 1n#Kk[C YrǾ@FT&ԚޚEt@1O$dq𦾗+.˻bdoͣ[F/E(/1 <qky.ۼ)۹YK"pI<٫@Ԡ]icFYMy" 3ajL&H}yC2vquKx h(Q +q=RZ(ʾ-JAȒ2W˭J]Jx9-v +ySUO5 I sFBo"i]Ogfہ.X/vlV|W}o JA<9,(vV P}0I/XᑡPbN ֭cf܆kYn`ac$0pǎj֟ B-.NycaɰrXԮtoqnTc&9;!??'ӎ"x]3Vu[$Zk'[41G$2"I$W\(tFpqNG5VjO,D[_O$q'7`1zU#I +h-oH& #JCwj"u8 #al`#< +WNqgz̻7E'c$ ڲ}FEXysvR9Z8oo\ay=5R#XӢVfY62vQۛmkgq4IԌ$W.J02qӵn93Ina1H; 2*ð9<}WT'z +DY$yp= g:\?,TiB}qɯZΡu ̑Ȉ,TbEP``}qh}ʿDq" @~8IWWz5G7tQe!P JkV{$%33˝7P2}I`_x4H.4UN+9o5 (%HQNHc 0FI8S8Y浘5[5ڢ9dH +BN67n!{'ZSt{Y%ŵ UէiQԌnn˟rvxq=3R+[ZFyeBysd|GU7!OJQk˅vy+qd}1瑅ۭKQn])VV8W%{8V-눗?]c ̌~*gKyYk܃p{ֶu۷tY'4CQ “qR{s#\%™_"ZR)JR)JUxƀ괥)JR)Z׊i7vLFyPTd[Th֐1e(eYFݷ??InǝV)JR)JR)JuFD.2}ܮGh,C0$bICs`ԺUSg%R rfbD@Cu9[ESWt8F.Nda½:sgn'nIi.D6*qd6cX'Rx,ٯ:NZč?Q G +ٵq |s^- NK8"0!"g#ʥg;hPXdAZ_8?$,]?> +Gءs[җPgb ^ +( g9[/:v4(sd_GfOˣ<.DyPb  cdj;\Ew)F@w#`d瑐r1TI3eK&6TUڠI$)1Dmw Cpq,C0F=h%99Utf$.}䜓Vt9٢+lP97}!@5OѥiË"Yo,u#tܧ 72 &q:X01% ~sK= +{Kxِ@'T;} nn#2 @#U6%O!oBP9Qƶ^e>ѹ{ީ3{:\ucdxͲE*$@|jci>~<k9%VmU n鬛9 pE[%ψmpoj4]@zǼFpO|ϛQ`I3/Vn $>Nx`;:G#=I14,kvF$'Ժ=}m bu)3 6wgV&:{ y%HĽqӴ`;7;qJR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRP괥)JR)JTTf/ RW6^FLʰ XXoW% e㌁Y)JR)JR)JR)JR)JR)JR}y!EvT#%Com0v=ױIȈUw4n{c3rHYBH>5~u]V-*5w 8wHR$&I<\F#+o ݁TPUA#*x\dRu=Qt@$8;yfqzwo`KR5nG笊R{Դ1i*({@r~JǸ*%*%}MR,^@B +[s-|/u;m5UeXRxon*Fs8=[R6ko*YI0d>ϘR)JR)JRMZ% Dle9SUR/R Q1# VM)JRYo | m$%s,s$)*2pp3L~ՍhrpL;ԕ)JR괥)JR)X7冕QuSp +ݎgcnyǭbY_ԭ*4{4`qdG9Ve)JR)JR)JR)JR)JR)Pfpv%rŎЊ'^t;VI}[=##3XN9F)J Hn9u2wW'fCY|A1W{Hm\#ʻLvPL|U3N?Zܫˆ;6L֯9>$'ӏ/khsĐF5 %.|Al $=cgxxbTc.[g48v͸'lUx7d(P+ eL{JR +5Ƴ;1aPseg.~VUeNyB6q<5ni,i:b7$r*;oӦػΩfwEVHɁkg743)9y#9#(&:{kˇ(RrU +wyVF.k$,2;Q Xڵr1"PFk׺GpkeD3+m^Nte +p'yf8gT{b"IVPp؞R[(F6㷐5e:20+ ~̊ΪҨj3K՟P +-Xr@~uUkGXSػv YQ +N1q^Ꙧj+ U#:(eTSD|Ts+-dPr؃5ꔬ KN{mOP,qL%u.T99?!M'M}7IKu,6}Z;r/Ű[Q>&&{Y'4qٿH?vi4mKݻ Ϙַ*Դ+}BXn6{22IVI9Zj[u Fh$VnWf$!Mhߍl>UkӴ˄QJ#MmhHTGn"xYua^)}qk)J|F8Kq玬ḶV8TV"V0D8,Ĵdk'Pm6HP,pWDm:9dvu*FDյ+d'ѹǐ2~fVQA#O!"Rdr_=H +S4ҕL~s##s-6} aOZ^.'6V +2ֽj\R 'c[)*mgq?>3X2:Ldid2gvR61kwof^YUմbyܲD>vW5dU{ #Rys,B|N.-5[$*pS8rFs4iyʫ2$O68ej7[^XPZ_;ԅqS~$Uy AC 9R̓Dj7f zl7a3VYHs$,!Y/$q3DG-dAG~h?QԼˆEe ut~"?qWQn>7YuQ/ݪяjꟴyO R OO~*~?xM[ާWc۷=xsk֥-dhդǺV#RECxm+r$UgɄ3ԑwxդ]T\qήfJRU괥)J7SBD43\v>G̖2>8ac_h<󭎔)Jo+.Bıh +eo3XԶ6QD+m<ϟJR)JR)J}:[¹"hk0fEYӴ[m(b m$]Ŷ{ j;M[\c~¤db5$Zʋ6IEEP!C;kpI~"E!$`el{J@`*WVw v2 0pG k +C{x-Դb"BPc HyՍSNh#y0~=>'iĊv 8?^7Q)m1tݵbDZ`Y +Fd uS|;g<2Jqs2 wq1qW5KpL҂qVN8 +9?,wu۩Ȋ4@|~ɥ*vUPI'^}Yzш7f4_m7SS5{c[tfcϸ鏇eW#ie`K18<6]!DM wa6d~RjrtC!TEiβ]ԣd<yVXsk6cqZTV}]KA*H(>Rj?wD\wRqʳ4{In<Ǽn@<Y]Jզu3.3:~k",9=!d1ߜl%9ǥm)w| 긦*co <5W7,5{G[K]"a|⨽ ih!T+Lw2n'#}kb*L*0!`F +S@>G ""A3+h-2FK6vI9;s^5N$N@_'aߟJ"P`>^ڭBéS +VJ*Z0PI+oh}\78xG4VRPHvidy3`H+Ncݙfi,[lg<; +ʥ)J' Vw괥)P$,>},¼v/t y$u'^L8!O(z:JRaRf*R)JR)JR)JR)JR)JTV(bB@98<y%Ʃcf&sep>ׯRMH +Ȍ)Gxz}xijIQ) P]S7 g|h($ضwH;9%އ[ݭI5'8E>xP\UA<қ;*TNKჷ*猙aӥ !agި[m"m*"[+9Q"$r8K +[/t\H;FW^SjҔj Lj<͞s-Ϣjq ξ<򍄫,`efj[H3nIYZP衻v+JwrP< 3 +2j'6%Ju+8=P)JR)JR)JR*Q c8rkEKdmmRm`O)8* 5KDI\`$3Ϯ;)JTM!1K^ OҔ)^d]¬괥*#^"p^Yl0/#;,RORnaSI8Ǚ󭎫JR*6YYuHcr~k$X*T7d/BDg$HT)JR@괥ak7sM3FӖc*Þ[T"K_@(=HZR)JbԭFx]@3 !c~܎xTQGxwòTȒEqžQgJR)JR5~,*"( X Jב>#쀤|C&.Z#6 >ڻT~Z}7cr>!RP62<>5my dR2 +0a)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR}V(괬;"R*naI +8z+~ӋQT+~ԋZ}ҿj]/~64-~?sx?HeG,@?5O?ͿMSO|>XGmuV%U]rI;¾t,"2Gc,a*~ mT;4 +lr2 ${Tm365Q}5JV{ˑ6WU?Z~ 4??6J%MGL^ȤuFpXz!'IESN~LU>G􂼟'Oz '/?|9nqG$V<$ಋ̘$eJ|gI)JR\^GjѬFڧOjjY7QD9|(8緭^x2` y"`=Ɖ(f? ?KR`km ]*q#HCr`$dyjV6^>qDn1 8:)JRQxUD¤1'}ʹ<`8oI$qK4ff>G$Kp3W@TdHɚ> v +$#ZZޙOocd`v2+vڃjc'^JV19#U;F2x~H ntԖ,ޫٜ*cfLjMZCbe~Am+0~&5j]()c\0eW555[ }f``N}jֱ;kYĤ],X%P 8V MI><))ªn$ӽ\͍ [-s >XgJ$Z7r5sH˩#`c? +,&uz;8®2(#[) +[`13!Tw1ppx8z٬o±g'*IT >?N.RGg b5+ù;NiߢQ:TAx F͂/}w{Su6|hqCw +C g3>䋌j] `Ib].o.=Žk`Fv7/%猎 x]rⷶG3[ b%cVU猎չRȲX#!S J[~yqu"e +K ;mǩXs |q eY 3;1v%] "̖GW`cX=Yf6;vBJy*q1?, Wēiu7IDvȑ<(v1p=H#L|#qq<|igR61xmm9o:=IR)Eckd*6 ҝqcWaCVN?Y'=|M{a`Z-@)r o=,9{ԘҔ?{2DV %d$a=5cF4a4r9Gidm(ʠ\.41 +fa*[fx99 ƝX]ș"d)-cҠMr@%cQ]B}qv'9( P[D"5v!@?֨ _MuD ^$껙KmpAr3M$0U?3䶰s$h(o늷6lG"khWnU8[9FS8B(RzJ퓕ڪ;?>$*-k_PFzכ!/Χb9xUX j_.J*Bj'@;sf2.$ m;}Ahc$%W$SeT)`T%͆&GH d;Րķeh +#SϮLj iךeŢ$r!,V Q^_Lt),bC++a9_ӭr:-51& +!A%NO9W*5a Fsʀ[ p;ZȇIj_m1(bOgKҵ]2eF˾GVGywp +ʽ[ڔwW3]/|6z*0; 9d]K +_) ӿNwu4ҏXzw-C+.GW#V/t2Yv*@rq l'{ +NdPр#.k*P@P~!QZlwQʪHBO[/J;x3M}`>B<olVBʘl9#R  +;훿깿uY1g`3˹vՏ&.bmf鏻-RZArA$r;P4AA#׿jF}D[$EDHYe9@@?uHzm-Z,eb13z&A(Ä,л+KU1UVq\Z!*L/U˅|UPH5Jqk* +=;XxsV wqWj\K]:)=XH:{B|6O1S6Œ$Y$;'O\޾q:S;Ubi;gj98a.^re`G>ݖb d7x!#أ nwnlqW߭S]ۜ׷8,9 `zUTCR29z+b(&DtT8^{n8\>R)JR)JR)JR7w+i 7dFc ֿK կSm>eT栒DJ{Lmwqx`qۚbϩ[4v'Al~ȁxxqU+ۡ30pd*9!sLڽ\j` d>$Jj10]'Ʈ$&v8$^JU3U2?MKs'W["Ibm=UR)JR)JRS5ZRi-G +c~&)JR)JR/ڬh괭ʃD۸g!8꼪cAEؓ%1d*T/{`kSH]L⡦I OpKnf>\Vn[E<z`;V>$= #p^g;6Dީ0s, `{V?>rZɨo%\1{6 ͥV/V8w$`yJ/S'GG<7jVul<5+tU79Ǻ֭{|?g̟^߉.zcl0R^LYHUk]K(a^,V7*E[J8$~"Dڜ{57;;#N79'&i% Uwc|YEӞw!3=&kQ۱mzqwb4k8 ? P0죙}@=MZ%@eԃ?0y,)ѭN򴱣2 +ɲYG#tYmu;"dU̳#T)JsnQv}=BxcJq5wl#6{*G\c A R)JR)JRBp*MzR&x-6X2a1rs@ME#HVف.0AX2~,)#$řwFUgpA859wvH-ʀ,B&ZIЎFIXR_W=Gx-CUk@DQYc20<F}­iZWPoF8 ǾNjlc0#@"ۙ/t99y-f>$ԍ)JR)JR+ğdb޴괬[*onx=2ApY."H9ڊg +&i4w6H!)qb21ZZX&w gț xCn^8!he=iƀcdFCgV \;q]}V 10J)#gV[ƲV0A|cYi6znmqnBʲı$RE *A H->WKHb@A`z쯛}ŴR6ƮporY0Hr9ϕYm0Xe˔ǻm3mZwSu3VfjTc'k):IշmUB0q񭆵r3jzmHK@8m?}Aʼn@sݷ[?ugh:.-F ǥZZd,;u2H\GNUr,ly0VfV*BPyYv<[ `T**ܲAx22?{?=CBZ[4F| "Ŗ2_i2YbFC;w#}HX]3i"Gܔ")JRj;8ijc T*gkZ HK޼Z<)M뷝ϕZRAj.VJ1c=O Z +p`,H9=꺮naFRpʹdcWZ2{SMrFڞis;nHC1>T=57:ӹfcgN'ū_])1DDE|uтi ]ոq/_ +XAT)JR)JR+ =%괨/k7Lo R-^FB +ep>uQ,rO H9Id,&0 fL43Ln2++\HrA#*Q紹kx,+31`{Fk2Q:}]](]uSd2sSrF B緶|.:>c\ R)JR)JR)JR)T5K|fWx,T_|X(Q>##[m9a @vUi<TT +ec%3{>ꚉ ;`,peQ6F7xQsQDK1w\LFVMa=2#Sd\ܥm$ڣ' +O*?=ucèxK3g^/[m8w8SPzc[1#n7S[,R,ʮ!#8< Y,!-䶸@ȥXǕiƢUFOϨ򕁫ꫥFTH8װg  +;^?W''zOHD@arR*2_#M6IqZզ sXq +ʸmi8Q,~ࠓ +KgS\y5uc[, rTwE$}UY3}dZ|PdjWZXڕQ K$2rDq Oc [PY+#I[q <'SNYI<*;l9Nw(޳4-YYdh`(6NP1VA50%YYD{~bpv=׷!@m9J{!حxN5qk(;T8`bDAo&Ʌd*ĚpE>fHqjVY\ 1` "qwuαuan%F((JNUih'nXJt,7z|mW#+}Y"l 8_̨%v ,qZνV%6> gj5HN}#\u$Rt +^kANgXC/#b;FEqBsTImnS%gKg?->tMb<󫶚(̛qfAtd,n2HP]I ep2p;Y~23[)JR)JR)J괭[rQI dj#vGRhr_Fo{W`(c5%̲#a)>d3 +rA`n(W 8nUIm;FCϦ<׆)qiXquKE[8vi4kjаHXt.}BHFUd_N2)/*IK3vYx[\I'"Ex%ARuJ,YĀ{s0sV&ťC՗',,*('.J׷ZE+g"%3yjB7 C8'ӊyg :ԆVTOy +\ĥ-9Y$HPjlR@h[c"`Hj~JdU <b–JIE›c+>G +H||i*G"I!gfcj䓃˽[ާ.dʠ(` +U@y* UH w$ga{}`X=#sMtWx9V@J:ʰA 2Fy5jm +ᦊ&SsrzE$  )i}{ח.IK:*S(ۺx$qϝ^tak*#T,gxұ|nn?FӭHVWٸMGSݱ<P]rtq؏3O8bKȣX+ul'JߘVuDx7DB}RF2 +IX# UkSHbeS":[5oI}*yVƩ F fudϽ˞';q8*=ũꃖp7l\ h.a2W.䁷n9l`B~ tcv*Nx?:lnt) RGw=]Whx}B 5omkJT`V-o{!Hrp;iص DhB2-WY"6{tp +FSpsstOMswbf&7;?Z}gGNCdAUkq. \<8/r8s-`vrϨ\W-Mr+,#3 >\VJRf$'Xc![3f^},4i4jF=4`22HU9}a}YA wQ(A9h)PˁKKRUrquBpEFآKGJ1 +*/eP +JR)J0 H* +J,I2u `2^R)X:F24h{m729qZzv;+^\On8Tf:8 FA'nȡ#Ak+!=ђ@hIR*/?dNR)JR)JR괥)JR)JU1NZR)JR)JR)JR)JR)JR]Y鋍VdvopGgF% +2p$=Ik+˰E,NM0YR7!/ gdktv p#TYvrʹQe뻩oecЍJAďؓΦkYco ]\YʍҸy˺L,O_XéBNdAjO\P_cM[;)T2e=#T^f0~^0{G&)Xɧ/t^4IT;IV,4;]:G% s{op ܟHR*Q3d ؐ@J`!-mcGI$y'ήH5,IھyJu*;t=1JG>IR)JR)JR*Z2[̻D*$d29kBH蓳k ˑk((pzEkд"rU\`*ݻu)JR)JR)J괥)JR)JR)JR)JR)JR)JR)JR)JR &vdʻ,Q+:G,.ܙ{W'νBˉ*F$~x>uoJm%Ts5n;X2c#ȎyUJLA%̂5,O`Ybn$m|s]zVi:qpϝ~y)JR)JR+,P;eUUff89j;&HREgn .WJV6A74f8p2+`=#Zdz p ,k"KibRU[;А>^ޔb:L-qp#\nm;A8J5]%x˪mnTcʰ;UPI'^mQ, rYGz<;+0úY)JR괥)JR)JR)JR)JR)JT&k:ԂRIwRV/Zd+?Vj9޳iE ]ThdSdr xґB0Lѥ ͓?}I\u$2>I˧J2YB[-v9z`cFOfe-$bmןR0Czwků\:*[kTL^:W^4A mFg`Ǟkf.͍ gڽhDYxIZb X],>U[XU02+,{+98sϗUVɑ S[" PA YksZ %%,MH3kHdw Jw68U(Xӧ̎$pGqɬ6Kgf˱1G X`q}*CB +/'ʆ '#<Og}mn!f y&j|V|I?j'_ML`q;䊸^DodeH޷\i:F;tWb(#'#'256VC Oc+rt-%`;=ʋ.^֦k{D=2\}bRC!c\jڊꭧZM_*`;0Ef:j#VI扱rP߽Ӡ Zp;3gGr6w@݃Â}:]CR:)F9*aGˈ8_9XCn !y6jEuk{ֳ3+br!Rj%:U2+& +!m\֭uw j 퓆is1`6-"%I g@ې2e$JZy $ѬvP~ZhWr˸Bf-<3A'Sh8y d2~Vg-.Y0Ӿ 1)V{w_E./MM@Fcs`||Iqx\V2i-WɦUgkРU23j콽of8g0VWRTbHn1犱o^Ϫ7 $M'#1}oR:MҙR/8Prq*:-nh.fKkܼrN31"LXЋmE%>9_\W%կTN8-a+;C1L8y"xK+ތAm^ew1/b$(mýlʳȧ!0PV&Mv4 N1wbiW֭jz!*{;ZϺ~ª j{A$ϩ뫭 -dVSAyVZa!Q;m YZ^t{UI!z*ɱ[!Tw xkV6 X+b s[KT沴NvuBݴblns{VmCGFa 8P:{C@T)HxшiAk]Mi"b2hJ 0r$WKĒee{k +ȷ2ۮb ȶ&Kl0R.7;pY sJ}*9R|1؎kn/#լbAkJ|rj=սiR9X8إ-}-m;=5o$!Qfkh 2sA<ىH~lU}5Xւ5@W2ɨ47Wq% =PFN/F$ 'M`9]nb=KR)@괥)JR)JR)JR)JR)JT6L'lv?iiWWVwv=1(}8z\_TIF.Knb\֚1{xClfuL@8Z6z LͻqwzsY^%1]1G՜U׉W^8 f7f[qgVtK,bXzQЀR wcU5E<ҥc j-So4R&a ظQ%N$ò%]BL'q`4Uјٺyl;m튎ԚQ3FupfGnTʮK_sisl!_j9BP 0sY6wey{<=2k1eڋ*\zŰ/4Daxi$G6!Hg%(D]x\iz_;d;Dn _lfY&T#/稯Z[ZGvIhۙG-McrYȳm1nc 8DIQϗ5XP_Ccx`FAlSFf hq'$V6M%*btWMp v57V-̅=EwIT2ǓWPPh z:7R0OY4KUZ^e216}LNYW"Qqʫ>HQ ha +9 @<*l}[9YQS3 8 _uGa[Q8nFԬm$L;Ien1gr;_fh/]\\HD7.s!q8z닙.һv(npkEt]i@ +{nNo}s{OOyqUv=ǝdi8eV-*ch[HیA].ɺ;mOrJߊӢ xcF;Zkb'fߑ0[r3V$cBɽ +cq8=kgP\3Pvz=ݝ\t7%!P/H1sG[TOu4G9cvx^-|;qh|kk&98b2*8֦Vm +ظ!>7SRx#N3i~?[OgXŒ +4{aljO jFi0%a~8 I]RzeΩkwp20,۪8q3|ƙ葛+a|}ñb0lpw1^h~<nۊȆ&c``1W[HX!–NFC+ +M +OM}DwJG#$yJv* PnXfA*7@rDh#<R>>FWe;-/K cu?XEծup)IW2 <|xz7JbRd$#?V!ufK |# + iW8ǽ޳uK$bb-1lԕqg;#UϮ@͡ B,ق1 2{0ޤ,-mL1dPP˕,IgԜ]ڛ\2a{S-8䑏>UsjgHH!+;(`8qjNF9gV/XE7a$n==ՠg)4IY0Cֲu8u Qk$b'͍;r2|LJnxm"5 +wo#x3ɯ6ךd6=rI>mj[G:#"RT<%N_eRqŕX};Uʷ]܍zjS"EqŕXm`㱫j;)(ʟ ȏ#Uh]Ѻ20ϦE&.eXGJj{mvdTWs=sn+ cu`T`pGpq؊V$Z5 ;xԆ0`5Ug5n- T`dȫ)JW8Ve@'<**nHꀐbdՓ٩*n"L^CdUiJR!ՉG~k)JчRˌ ljcBX0u}1b4 +Xsۊx̂mxRNq\ Z{X&eˠ`63ۜwZkdPd.ḏP;W%HF`ԐFفX#kj1FU(Zi%ڣ ~ۘVwEUߵc'5f?+ck,r˱f ysj)!Ua"lT(X6A>Cʩq8mXdk&uapHIDb/pJy-AڦOz;u51tMJTU=*OG4b(J\\Y9xVmw70 *Ĩbk֥.Ӎ@;KHUv9ȝD/jGYKU7 T<NJ&2bE#.s:a~0rN Tbvuwt8 AxOTQu-i;C7& {ܐr3Ԕ K ^ V].rN;M%Yn!. +n^*o(X[whe.qQ9 $j% T5{ĶofMD`@]ϧ&uuȰ:hL.{<^M2tLʅYhy biz t;7)*Ðq[- 3Fm#U@v,sj"l +ds.;g}\i@v9E9a ;jSSm[OwY.bf %̑Aβ"'Mǎ8L}6̳&LrW$cx˯jDfL$('rݲ=@5}Dz[fCqF2y;G䊽W\,{buFYYAH<ΰuNRӭጲJ!>X#~̐}ʀ1O`&,B.Plqg .WmjC4]A7 +LYp ( r8Ygjvꖳ[Ie2;qPzqsIB _~$խ#KmOQ$Oy LvFbBȓ\u%RNHbTOY,!mVGh.aX8>Zm'PCfKBH 1 Xg qKk]bnC$neX`;Y+Ϧ]èGl6 nS!@JpǨj$c%ю#M!IG4ٯMZ,m(˓}k ֱiz,Ko4LY]K0bێ9W2 _Vwuތ5ɸ\|k;6(auHweYK(8*NW#Xi*^0\p{=*zdĶ{0;;";4*fJ+aX㿞95k~Z&Wlk e'$p,U:95J.26;I>v3^[ū]pmESϐg[-k|w'L]|`9b6K iRta%]xbTz[jv/!rw?>8 V-6i!YO8Iv@ 7,dT$> uK{{Tp˘UQb9ڜzc4Rڻ&躱۲wm,5)$["I +u#hVz}M`nG;4AdL0}7~6amۦ $@BĂ[!xγdKvmB,M)xvv;P:|Aoo4So4=13DL S$Jm$3tVS!E@w}W.%*Tc;ǖ1V!$0kfKpЬ#$6d>5bo ;:kQ1y`%XáW# -rlhUڢBym灓}Q$+ShXVGTm'q^J={[Y43GOdFZ W $'E]i];t1LDjTԲ* FǦ\ǨAyeeA Bz+3:9rsW&k{gnl]Y'w#|;yiFgP[L6Y;FI ]͎kLdp\`>ꢹ>3{IhIb0=kSMб %^`L' *k-k k&<;;w`qYK)#+Pʸܤd `Vmr[D (%Jǧ8:7R|ۻ{@Q6 qPm-ܗݹehBFaH8 63R:vk0bdDž eI.+̀춒$RYDF_1p[w8r+Ɖ&&yDJO`U0e*Om܃V$0:%Tv}ۛ{ͻmAsm*YR77>v0y^u{:I$!lp]QgEGM,oQ62ݜv8ǭ{օgm+:ƒw۲faޮr9GFk nm1pH sZ]P[ې0W"H7`p{{-A%` ${FA8=+BԎlb1%эYK"*જJvJY[Il"\&NyqNJi,$oຕ,GX27V9-%KY +qP;%χ8m^gxʲ@7#`@ ;x? +|=qcہ{k)ۻ4w|$gUzoN=Igicfl28-H"JNovqq-3uu[[mxՒ@]؍N2@b+7~kitI L`O>B=iO8IV.rqR4)JP괥)JR)JR)JR)JR)JRUiJRƫJRUjҔXPA$nY[ER>>@I${$Z—F]n #^ {$c;Y˙%ؒ{cfU+G^I R!˝ێ~O?N;Vm+HB p2qWdU!IgN+)TBӨIpWꅂU)JRS5ZRLiJ`r}݂xx#8Z|zq,Ē{3IY4)JR)JR(괥)JR)JR)JR)JR)JV֦KHWmRH sGį# %@D@P'z?,m`Bn=2LrvrHP,W#mFqqmfou*I,7P8r@<r|VA*D% F$+0yϕfiP +K 2`T EZ5XHYIf!H5u57ަ" 6ͻ{=j[w 9B z2ROkk=U#K,P'X_` 8lWqDԐTFAV% +#M" y=pI'^o|GgadrtR18rZekFD!M ,g5H/E!4ʧ *FIPp|R;,rMD'`Gk:i)eYDd$"'9 ;V&YmDV291=Toq6PwpH^A׋]~"MGVhH$p@8&mgP,7bY~4Lup+Q޵iX4Q=ijaUV;C0?ilpcge2;? +YWվ[l{z(>^;7ov)R7@<>kwRjb%@-8VW:}r {IJpWBCl0#ҭ/-Zѯ &6cw8U "m+z`8% :,0#AXSk0$ 5߳# FN9Ǘj=2E6Z2rl/|pEKk097B7x#>X~ן[GxLM> +UȃvJbH8G,?A,OeBb9mF'Y]D`fYE}yw3 p<*b?Yu0̏CP}?*cG@rq`Gk*+rFJ9<2UiěIh9GOZ^s$KtrIY'*-LrʱͰ+wpsBLlmAA=X)cѐ*ȣ%Yo/+ƓYL&W Gݖ@ 鮣/IXGQN P 2SKcu1$eԴlB0*x#fooc&yeUeTRkuؒ9G$P8lRF8=CG#uhX!OtXL!nls.9I,61$XwN5O*iw 3 rLn2c`P&!@[n25$l $geݍ|CZM65FGf1RW_TFEky71F;xbw1m2xRx< Bѣ#uKNJApGd9<[ջ;ƭ"bG#? +5 yՎ] +ȭ3&HNӀ<Ȩe_KdmznXOԔ`¨ص):ΚPCu-pj?IetwEڈ3Yp0C906g [2`ʠAVTnƋvʬKPN3Xy$ Y,8 +MZOZ¬t^7Db`ڤ4쮤d7ʌRid&̮F>\s[,Ҭ*$=5~nrJ+!i$1 pA5\gbY>UWg}rrWˁ<~aHm&;9'5mڌD$vI7˦1;-⌐Bd>x fl=n +鏘ﭕnVy7vS<wFM22>A2* @S,}¡-1M tc|p߷ b<#ϥ^h΍i)`K fjDJLzٺ! >@FHǘKkkeF&^Se-Եv(N qdֽ!NX.KSVd5AԹ)bk6F#fӮIS (}Ynm;.Jsd}H &3,nJe݌g ^#:k6s((fPqPc.j-$3" L.@'ry-*\FdĒyG0`UUOtx` Y%ه 4K]d>Ŕg *pr;VwK}is[ZʽFc&䔴Xknfƒn@F$=۶'ɖ%} U).͂b AXI&2ԍ0P̊E ǖk>xIz3#\oVbTgՓW~4Yf ,f9%%|t (O)J괥)JR)JR)JR)JR)JU1LS1LRTҩUbVJS1U)T)b1UbJ1V/ x%W\QGEzHDP cn~yiE¢QRS1LSZU1Jb1LSZU)bT)RZR(괥)JR)JR)JR)JR)JV4)&nIԚ͜p- oYN ORMjGV_Vxvz̶G!_^"feD"Xw\ߎ:՘nu3=|3.cEp@ Oaf6v2t 'zm,OgPsXDxNA pgk֟ZВU@d!;wO²-u{ʅdd;Qo5;2)EjdzVFu}9801l3^-ApN \|Fiq\F +>#̆dE6  AyWifpF22w~N}8 jMlęۍ0:b W +Gԯuȴ ^d" zv3P邤4ʌAԭkx2Tqg>#&giHHN{˞ۏk6S[ytIs܃H#^,IDׁ?[^ 2ܶGOvт݋:"I#|`q#e'Mb qj@U&][jL*b +:# dPwN" wJp1;BV׳/n'bc'T*nbaAڷZV1[NWvmArSc$_jXZ7?Rlg+Q?Ò7 +cA` >\+!/=|w /w/㊉8W2đn"LL}7\3N,A+I/@$l3mp3S#uwu&pFOj/P֭糹0݋vSt&-ܩdp;Z˹l\\"4Jn;wm$U[/wt\6N梴omu$Bzddn˒~Cʰ5 &+Gr2 +VCIfk7.ȡne h{9[ JRB, #wʲkJ'i ݽHmq,Y( FF|8^M #.V5($s,{js=&9i#UЁ"`G5qZZӖeV<Hlg? +eVErFTwЏ0yR)JR)JR괥)JR)JR)JR)JR)JR)JR)V$vX]3ήեF 7(y8+P474~OPma 1 +)ҩZ'om +;řU}O?8ǝMiWW$2:V # .!5iU1Dch=)%$* /#I&H`76ORqNmcW)J8܌dpGuKPT{/uyI8{+Կ9lj^q&>8$w۶Meq FAp~Z7-ᳺ;$pV Z/m6]pe&*sRm-O4Xdfb}0~UwNMտĝ{ #|͔~W ij2}Y5F=us’!8'psST)\ڎjK5䩧s!161Y{g["hU$D{U:*M8EYjSgKc!(Ud a*-oK3[\"cs:iZ7R;0$ *0 ~$\!7!H򁶟鱏*,m-AUcg ɜQ3Ө-#!``l5 +ft?%G2*vkرdr +WAV1,QCA A*&Ң1 +0uCguYNVq]2ۏ45[ު1:*1+67&{xz"m9RAi#}?i[E?ESN'ѭ/_T>8?&QjF;+vc0#lc.c +IK+:=3JnFVY\98:^2QnYx #ЊK)a=GZnX1 g!d +ҭ6}l&|G=q[[K2=S`nkׇ$ jD7l#u.hkPt-Y&{ݱ[(=ޟm~$Pc#5sLU>|5Ӈk*9L!h!#ݻZi+MdI*F6CsxߢQgEtqK^ޛnے0ׇ1m)8Mâ塆ʨXP 9Tѽ/OT5Ӄk)gKVEi6Ф{8W>y`Wvc,$yx9M)JR)JR(괥)JR)JR)JR)JR)JR)JR*[Y% q_Ԇ?hMǞEc=6K*@{.~ :ȥ)PQF$kt3بj]2]LlPłYsJԼgc, ,GQOsv's񝥜i:e"Ѐd7,j >ϳcZѯ=P2Kimnƒ j?w24Q(1iJRn.]IoӴ0V xO=3WvQЀ0 WaR7^Asqyq ŸU,X`@?:JzHJ] +tMCbup21wE"/o v&39>^^]eG(a؀G5"Ǎa%ٻlT)JR)JR)JP괥)JR)JR)JR)JR)JR)JR)JR* Q= T6(_Y-qۊҬ\T&f$Ve)V^D '˓W3W lZ}E 唫(`$r|N)JR)JRB%r\ +5*.~ + I8&)JRi7Au,9q>UInlI.(Ī<Sy?JR {2h`IfWqbO`sQ P4XA*B0I^Is5)JU k-X5Gى> <*QӽgIrE*Kϥ{ttV)'28axJl69?$gݚfҔ)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JBOڋ"61#1ܑS`J)J +ͮ{0v+8Rݏl樚2 b%m̥0RF>#- ۑ:R# +>l8&i 7npN[w]7R>*sZ b{߳ v H&bZ\ny,2TZ)JR)JU*7pȌWV G +f ܓ>UV 2EV)JR)JRnyqU)JRUiJjgKnG5X09 +)JR)JRgJR)JW܌gJW?T{)JUg oe\q$ ױV)JR)J+Gp$WR)J괥)JR)JVP17fREOU.`be\ E?eK.(dɹ9vq5=5 &T78d^EB#USWHUyf + +8NxIg. 3n_͌ăĶӔm,R0Xe p0s$xd=d@8${2ʊ2ŕTqؓ+3Ma`Y$,9 *GjVQ<0DE,x:5]B - gF1N_ }8%O? +N)wCsN9x= 3,{#wd*8j;>PZNbAG ǑY6ﴄ ġdewf!@etݣeL ckŭ(5o8( ;k.XIXLRYYW pA8+98G5Y5qu +<%EN/ȟ57jO$c蘭{&p888$Ԅ:3uk2p@88#5/,cDGh-m&xM$2t@1eOw81]j4Gf@C2Ip$yg?`gȐ`6x'@"u+)gNxQ]cG]X0v"o5DK/HfFCw8*[D^Vx]#a͜c>Cn_XDf9Fmvvἰqc6;u̳C$Htq۰$gӊ̹׭^h#/Mwdg@N(,GAI 8%[38'Y wJP:ք6 TcGz[I:%dI:ewrZ7L!uPKn|ՍKTk{ftn®$rn89]m N$Y*6n=#c#HE RD1pg?ҋ3Q6Y3wqpqR&Ep AAAziIfd 0 aޱbtCZFB91 UWĶc"!2+1Qtϵ{vp[nfyK >+$jp.6Kmn×1Xé+=JNTmB,uoeh6)J괥)JR)JVp;)JRmi ň{; ϚŴwkUܹ889c>GU)JR)P!ӥVzٜ8ziV}QI+HjqdVágh w9Y-I<驫k'i##>pjMy|,$Fd -=MK-G Ln20rxi׵Lb!{)lx=׿ $Ev&f.\\e]cүOT' 'պ1En~;qT: 3+gǃ w>Y)^NcYmtk\@AjbI ̰H9#-W22;g]IU I(y]ǝ]> kP:w07]vwOk-%47l..ZX[-#K]SO c"$VRGU".Sleryd}GX)W[#ȪsX֑wI^b;غ7L B'e7 ?U4]V f_g&ex}H^JARVG"u%,ZRIw܌㏀ϝyMwo&4[y@k~*bq+;DCp nߚƻwF13Rb9WeYE P};z4OoyItaxDb}"x0 Vڵ=5c1qi7N +;#qVVe%|hE\ T,y-aϭ,cR_R2KnBXs*f/o7;B-` w k9zbXhy7Pxr{ƽ\m~AxmّyMnWSr~ފ)m9X${X#ɿH-~^̋i4e'd $e9=cidz}>XS5G u]N6agbǧhx~USo#^4iA@<Jx+̪'@a>NcHc$@CRq9j;o E' +KaUwԒ^n#%np8R8oWl$$9F0H,SA[Y$@H($B񊮙 I͗!t֒Tde޸_Uރ^'Y1,dDP# J>5長[9sOv?>YkcjOqQy龟;:ҵ]a`@'|2D93T)JRu}Y4h  ʻbU VvwԏOC}H!\*q8'Ϟ3JRkB "+amf dTp;XxN4QFT$pFng6@e rq>Y(W$v\ p'RsYOU Ti0_ nɭL,ڥN1^JVҭ綕&QHII@'ZFg}6\rO3FN5z_ueҔ)JR)JR)ZdCu,C YI"m$*YՂC@r.n$P\*01Ji˧^3Yujiڄ2o5tQ[[˦? U}ؠ>3ڲOskpd#m`_F ֫+ )bxDK)> ВkׇKhǓ +FFi૷vv{?ZfRr +>>|6}1dH2(UPY5vS[Fd(0ϯu[f: f$R[#$(8ϯU¯hvi .Jy#^-26, +N!+$"<鮠lniUh&&]?J-fbn%pL8ZIu)b%Pe=,+h 6h9Kx}@rpx?)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR(괥)JR)JV$Ð9:˥)JR)JR)JR0$qQe4䪩F,5%JsqU)JRM95ZPH8)JR)JR)J5}*#5ÄP@{(O4+(e XdgUR)JR)JR)JR)JR)JR)JR)JR괥)JR)JV$Ñ9:˥)JR)JR)JR)JR)JR)JR)JR)JR7>%di~d.#~8V^Y '4Լf " `xpjboc"Oqj*!ޠvt&hYOHpn +zt]`sy9=OķRv9n&u8`ZFY'Gգ{Y$y +N\}Ǖln50ns_YvO;ĦUb=Zb!Y]ةm; +V1BE%U;w) dITd V{\8EyVmLѩTW(Ȑ UF;g.O;>Y^4k2YdpFP3n/JR)JR)JR)JR)JR)@괥)JR)JV#Eo.)JR)JR)JR)JR)JR)JR)J86|]dROq|β;/lUC<:$||k*krDx|G쾼[lHX 2>Uu:\"3u E'՛}\} weoYZfF"' +H`T<0{fR)JR)JR)JR)JR)J괥)JR)JV#G_󴬺R)JR)JR)JR)JR)JR)JR=Vi-/*;!Afly j\ 2(얐`D'D|'άziLM}j~)mXEgΡRk7[kǃ !ZL1We[6aDDqʌ`>Uژ'ڟRUzIB +9);Htƿ׬9IŒϠ{Ê55#ߏ +pLqezH)JR)JRVm#cُ$rI'WJR)JR)JR)JR)JR괥)JR)JV#'?ҲJR)JR)JR)JR)JR)JR)JR5[OjX'Bø1{E~0!>FUۻcGEit82Iqݽ*kV{)7܌ $3ww<nwb32wah'I 񫺞o +uY$$gVH1#08?$[h6r `7ʊ~@#O4D0VyuMl',%gn ? 3ZoO9{:ʹl9m=+kFb}z`A$mx};>\ +dWoUC +cLƞ|f;d2Jꊣ,BmbJs@_NIYY.@$$+O`w@3DDV8~ `'Xr\FzU0{J̯̐)w`K15cGtU(؜qǡ. F,B\@`ZϥjigIH݇֫!tzT仁N +Yp xdYFwdUR)JR)JR)JR)JR(괬S'&W9=G5~ӻ4@.ڟHS3}",HwK7j"3Z֗W's&Yq\|*ӽG{}<Я->^)^z%)7[PkU;Ƃu,/!"hY{˒緟Φ~GZ_~EZo?f>AfSYqOv?gGk(X[\NB.ùv&=jgo~P~Mu?N?sOӍWSΧ^~?Z}:G}/5X.[kjm.ZH^0=N+jU)JR)JR)JR)JR)J b ͹OlZ8YT rN1~UvkDPH{*P>k2zwwh=z[AǮF~\ + +t(']z5d5ev($v+2@,E5; K <85$%Y^$3Q6iֲǺ->ٹNgs#`ZԶ\<ڄf>h_ԏgJnoOY_[ߦ]GyB;"Z,hnhH ʩpqKk[>Wvv۶̭+A'Ny5I=)<Bw8 +;Y)JR)JR)JR)JR)JP괥)JU+ђ9?={)Xe5܀(_*>-fcm( *9~*~u{o;jV)TVD(G}fHT@PK1vOl4)#ݸ ml1MXzmt1 +c,elh`SQ +G(e9AT)JR)JR)JR)JR)JR*YKmMci#HeP,XHr+89'KY#`HAX߃N1hߎ&b @[FީV1ƫT.{tY89ء`g9Ǧk*ZDH˴1׹"I`{ׅ$2hR@bag +TQ*Flv^;"+/-HeQTaW*00NskPV)JR)JR)JR)JR)J괥)Jcd[Ld/.q񅴳3=8$`#X$+n]4j62lnKs=kKc]zn@YͺmK9n@+7:HjZ*tUT|ZVox`nzE+S sSF$٬RjkFs(wc*&=.Mic}#.K%y +H9#AYTi;E&S"Xv*V1<0TAcj~ +kݼmѼD1Ly{gʷU)JR)JR)JR)JR)JR)JvҔ)JR)JR)JR)JR)JR)JR)JR괥)JV=p$`rUѭ_W`u)J{]6ıBU@v!Xr?nR)J]&E. 23?+݆m +dM)Jӭ䵊%C@+v~D $H!ˌz`UiJR[GS?-Uw?-0JB3p݌g8dR)JRf2N*5qX8 AvUJou - 1RUGqǘ)JRY)6 +>WXP37U:wt JR)JRWK'W\`#ȫ "ɝpGqtZ+}GUWs3ܟJTW zg}KyE #ү*)JR/" r'ªjxTG!UA$G,#PuRq:)TURF3+)JRG*L#JR)@괥)JR)JTTf ԭ)JR)JR)JR\2]Ԁ;t0A8?F~UGIh58'u+ v5[ӵ}&(cuBv{8yOzmi(ESeRI; d y׻MrQw IΒ4}9z7`x8<Ԇ|4Yn +<4-g?`kL׋ep<-*26eVdgV#ׯnf 5cm&&poNH#9ϝyŋ춷vRyr#WiƲ I YW7hJɺ7(2IPTҼM>,Qn%W,qϕU9 ^XA%[ & ܹ$ ɫ%] vO? +OhLvpA0A-%'XPcg adJco0!2H#j:l6ѫ,9;1){ +x="nuiRh"Z22F`2Fぁ¼}#;6pFQCvhZ9d.V@TR@=j>;[X g)e0BQԟ'lXrQNo$$Gq$6``wr0I QzT.ًmt2J,o>A@98T~%(o^:f͂2Q]v p sChu'uEa.WF3d3oPAWpu$Acϊ}jD5Ch" n[>G_\D*Jd +n߷Hjm ]WQgלj2ݝ07NJPC$Ч#U`YVɐ3&791",$ ^IWݴʑEghP J0TӭaWD@ Ii nU (e2tAu#j1 +NH88ϭAZxj/hdV +ԑX#\Dn00H+ ÷jdk*RXy%uWD)i!H`H#X~nXĽur" +ny~$׻MJK'hs!{W1WW[q +N'SkGW^s-դ6y{}TFGRU(xlqj̽V骅l>ϟ!X"?A؅_v'L2ƳYOM̥d  +AW;dVZlk{AfGj/%n,0Kx[/T*{pVkiF!bVPzL" +3 R HU̶6H,Jb5b7,1^k#Գa~Ce{zwϭ>S0;uqi-@ +Is0IZ6ַD&YeݸH#ȀbiI%hh"eXȔCw⁦#EY%vɘYdWk0HHX_Mp"Hߩܐa1R(괥)JR)JVX_%ᅷ=ygFe)JR)JR)JRbi QX O<>u ;)#y$g,siw>ot!Q0c z`rG鍓÷j4i@5@bS0qRU:=F6.pp2rKr2Ciw}e$VrlqBT0.%K.@>UZ[ElC$;XebnCt3Mq у}Pn&ϗnF~Uv,WG?aZG81%EKX(G6 8}x<p +x9A4:fm #DFDg2wo +{F|^gղZ(̠BpxF0aZlan{+܆%deGm{{u [[ah5]1r@?3Kn$U E$w歪 2FR_,twŶKM3%P'Ȯ2p>Y/ߘ4o kq*쪫Yx'kcWt/ 7;T +R9#<9ioIr5((##T_A,}#tozih${BV2tY}qOsRցռHRu``Pbtsop}nՉXKseynCl`c~{7pj }:[ެq5O ˫ FkC%qF+ -Ǘ׻h.)a p<0=Mc_xn}FX~Zʲ=Ake^Cvœ>ơ51)[ `蒡+AE#bed.}#l֬7"[b'$QW*1qYW7"6x1=8'ͱ嚽{ƻqxBBzD9:=ͰLyP r9R,R͐'Mn\ؽoxz,Hʣ e$ Si& +\I`)0a{*< U ; s xÒZr[g0$+HX8HB1W-/5E-Q Q`2KwfxP06 2ya}Ì\z-ݾեP- ]D^@*9F֓@d"=Lɷi>mV &ulC,o2Iw{e[oyi\C|v/ + Wvd6@#|dYiWs`E-2@^;1*ܺέoܢD'Ya`_y {AsoHi[ʪm9nZ}\nF!ī#RO$;  :)&Yb%6:nO#yoFm-Z&XQGGs*p; X˻@>G]GI팱89dd5kfR*#U+C,e!HT2-|YڞP[˜2D 1eK? +ƾ mvnm62H#qzh9:_iw6ZEneP(p,e] iA7dzϕNyI>.QC$q͞X^Jy\ƶ಄ +~qQAc#ӄqG%P$ $~S#(HBB7rN0>uWH*d1bXnR2v& gqǟI >ild.wdzr'$X)`]K R>дScv-MC2ȓ 8VJR괪PgνR)JR.b$>^!CF`JR)JRS5ZRS޽^vڎ޼a0x>sYJF)JzP`Ҙ)JUiTVUj*LRVJ{etA $zⲬΥ\L񳢱WVU#vIy}JחRqw6mVmicM40#s8ª]cKu R$ƫ'YR +r@o..? jv$pF2mѫ$ϟֽxv+ƃq+m8FzsPIS!9q|+1]jIr#, @cʜ #!H^e f[qRvۆ`Y⤭#&#e#dN*S +Gt }\,j_wq`7{GβWG.w0$ 4S< l'iԜ3Yw7tI!DrX(FV8R1$qcH%/4DB+̖oO7UM@ƎXX,7)#r 9Ψ%Mb5e֏jpln_JOiXgv}( +2ldԵwJԵac$0$m,o!sbYǯ%׊DA$xEhd|)ٟ*tUbfe,np95~YVa{@`q%A$sgS u_f>oARhgg_d| r`hJ26Ӈu j^ZY6 Kig*wA9x(u`4 Q7cگͬbtZW1,"F$xet/I\aGb^kKosDH#8L [hbXNrpj3R,-1n"[nтk phIk]I*b ݐ@w^$7]UV&68Q0rr8ROhX]$[v *Hܹ֯ZK25F]WReO ok&Xw`w$gV"ImmpR ''ܮXpy8\[s* d*<烎{sT{I:wDf;Uy1 l#Y m97^!rHi|\vv)%݈n Ab{|HR;TYXDU( Xs+^"{Ynk WSf9$F+>"|s۔ω6 e A4\ +IԘZM>`1* R)JR)JR+\A&v<+セ`{ǰ5~c\ďdx] +{S{5*gvU ^#܌^",ROyZ)X.Z+6TF/ܜrMLv=x[ʹbJOcacxÊn4뀮Z$2$e@Wy 9|=ekl%{XdEv\ɀFq'3kk' YRSpc Όlcd!H .PmdSJi6qH+F  T+^nhehQBPC2@j'OK-7 0 NI!) B$nҎEb8<"wiڛ V -X"@AV`$}x9a.$R'RR6uH>0r{UkCYR9@\hd\ p;sYS>yp`bbqZ3Yɾu+v#> + MC52KkqstȽ&E +9sYE0tfXb0@ֵOwF6nn㺕.wtS@8_qh%{E/ )qP1屜bB+1)Pc BOqʰRŬe7A + IoҍZ@e'=y9hVlpq'RYb1Lr$;Owc犕IoaM98RD‡qZGlzqH׵:̨H>xKL*G+ +džcR\@V ,lf$iu8' + FfH80OeR)JR)JR5hk;Ah% +k d.q[[h}b)bT1^'\FѶppH8#r+MbjکF;W>??3gU1UUj*hiq2K#Z@H. +0H.*K1LUj1LST1LS*JUj1UV>a.Qg|<$w7SM&6rrڀ88`1MҘ1U)JR)JR)T1U)JR괭c7/b\I^wqb \U;뇒!gFuudf@+ޥk;)ь`$@ΑsB'I,T09sV&xv۷ 0FjxM~ۨnü`Zk6wcev07 %SvnPbdv+JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JP괭7ڳiLƣ6CjF$&YX*;_@r~kmėZz,\;Vx9wbi?Y:iqvi݄DFbxkSQԒIZa,ȲJ,8i Pې;֣ A'6k^Tc?*.-v0;{2P>UkNԬSY28bpu3C'SE\:rE Ps + +h'ox0,nbI9[CgcP(7.0' 0 V?(b[ņ%T+3#9 k+4Xm uVdvxq8錨Z(,p'BN5\ŪzwȲ<2lV-YW*esd,u(ҙ|/7qeR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괪M<⪅cQ[ sߊl_A3ztFE%I* f\ +F0yU[1RTIPH>=w+"o\zYG4PNF 8q 5pF@灊İh%RIJ!gd&j)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@ +endstream endobj 52 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 18/Tabs/S/Type/Page>> endobj 53 0 obj <>stream +HWۊ$z ݓa{zH #jYwdF^"2ٕ1bQuM%"Ns2}{ݻ_}e8CQ$&BM/?Or9 +xr\^NByAgxO:?q mx>WK^x/b*>0u8×/;3|y=~=rC?R# I_Bb:(s`l'KWA;k$/*:Ux[|z0 (Y{HsM9ΆҋPxH8T-&/kuJQ!j)\,$#{=xu;{pۋXmܯp3Z-j N2 7 n;o\\Y::./,8:1p7nN|I7Tth&]PdnXQhom,k>Oo/is%8*S <}nvy_)$TJhB-/Β"r"C-JD'C2 MBǯZTMA}AO` zd|>c#9+NG4oP};H/5K"2 +(sЏVI9IAn›Wl_9qGY^I3Ȳ؜* H;xz"/,Bɗ`&)9eFI@ ܦt`e }jH|-'D!7 -mpa6{54쪦kr+(0٨͵9BxMAkPBWDP^Vn ~~Յ>Y =*[(eb;IX_ݷt49h# S :iOvGKVv&.]HF {N{Wzk\ß3o$i@3\Bg;;[wK{,vgPZY0=r< X%ijfAà!fJ3 -aA$Π Zyq%Ś[OS/jT e`t,v2b)d)aXJ|JICg6Lq4#*3QƳ:PU*cƳS\|uT۶il +g{UiTR`ǮF42x1aX%5CbSc]>5XKꄖ [Hpp&ZjYDSMZz #cKuS $)X'r=1"/xlCv|VΦRtɺ3|U)dljӒIcg8xÝʹkJά*+5\'0'Hi|oŜbg+[X̒6WTq*j~(ǗKD}5ʃκFj3QmwOnȱ)K6y#U8XסZ,;hyd$_C#y[R@ cW6poz"E+ +UL/_+YI|g(AV%6D'cз*ڭ>Z2۱9ur!efѕOhu z5Vsx'r݀J-u؃MIP:^wM]&5 eZ0(4B/(Rk1xꜚ\S|}ZD(a0} tuOFx[, S`ui ݪ+H9j\z'~ }-}~GL/?Ojp٣VpA޴Fa%&@>׿z0)}tߥX +-B2aFKB"jo3+\ 9>.7gzqIX|;+Yl=#u0ks,12%GXԥl,7mo悻^:d^echg= D*TZֹETb@Y'vV[lUt%FW;ΝEm>KO񥞲Fդxa,CpHق묪 +n"r)EpD!M-[0w11sD`u@([F +V_{]8> GQ0+Cagx |OqepWĚ@U|)}(VDݴMKx߅ɱZ'XZ# Y}^%>m؏m'X_Giy]}GF8co ;"g54Y V4|9b.:6Wqҫx +_8j;l`K v䠤f<6-B_b3U%r]*$ҽ߽#ޡ"ϸKJB%萾ۦzvf$Àٽ̮=jf( :WLcdZ\Zb# $9c:F%]rdm,m5hU?Z%𣑝:qmqPO#hr5=H4j3bt'xSy)Tl|dw*ɱ$ۉ ܐ ee y)[+H;6Y[C֠s|4h{Pm+G<)'tU' +NP 2NQ6tj:?T"EgV)*[c+2ر>%+C<_Y6a#Ӈ f2E9Ȓے.5"Y^RK)=Q@9=ؽa`UO*_gZN1z՜fYպIe:Ь`Z$>UH[~ Ms)e7)CFZVⷠV:ac#rr޴2+ϞEZlz7e0 D;xY, DZ 3vH@?3Qdr Fe&;jNӇ<:0^[ɣ%{hcoxv^D RTM=!I-d#ߐɐ$$ʢ&t1@RPv&ɛV>stream +0 +@&dO +w}'ӖP}b Pq&dtumߞrvJE!?fPzrymdS"XQk5a9(J)XLzsڮ(V Cx^#=5w`9n|c~kU z,EJĜ7JY7kEXvMK3S4E}Z1:MINh>5VR1 =ps8+'$T +{SU* [1s?=C9St@yh1=K0b&ʈDp +6}w\ +Enkeq1A j1kC* ;dHy/;Ik$W4jӻ%sk|cȈ)άBeY ph]Eճd5r2޾q˚ Y\ijy7irÿ'UȽ%  f/Qd[mcmŸMA ٯOftkU|stƀCTV4h9@GKoSO0H28eaDWQ5 [fĦ +~;A0kiYGpc8cֱGaxaMWʾgJAfGeX@U$,9~f s4VsvCXv*&)w$Y̐MC nA^@!~s8_#t>ή!:!op ]Dhg +[;ƽFZ2h.JtTH06w!2 9MLD꾪nDP۱k"/TWBQSevSes3­Yg :_ʺVõX'Y.ݹJ0d1G C))j)_F-Չ8}?*U͏`@şY{(58cRVͧ%Y1#yz-,4oֵ.w7HjBݫtL*D,UٔÓ R:<M-NfFAήmyIک + ~fb.' t#"K}~QgSY\ %kӚm? 0jE^ce m3<8;v^]STJaz*xeM:;W6N}YkS^ +⌜nȷN2[rAih! 0uoUB58QnΙu%w>L۩v\Ħ́BpK$C0ȢFed\8|~G +"!"j^DRvF;ڧ%R{!t_LJ7J6ν|:EW,57[ud[s6vf/~ͤR&L!\AvJ +Tw#j7ƪ%˙ + ްnf˪VΐFj 8qk%]Ë "D"׺xb'N5ֵ=wbr 2!=UQ_!F߻`a!NM80ƻ2 &`i pC \ΛϐhIj!xC Hř{KӰGUN=,no;JwjIOJؾUevlA = b>W5uRP1S>'޳Xȩw>de425@KU 䰏bqƜvV +&'m?(?bl#6nTtijyx07t5>Qd.~f,F|տƚ 9:5;8[ (ew ?1FT]ns+3ݢp +v<'p>fQ+pMcekpMOUc r1%*=>+hGԟ* +Hq-vY{]oH0wS/ەgƿ5?˩׀Es&aMo[^9kcqȹK p7"~X)tOj<)?_VyD9JvnC< P["\ۯנjΦ殆 X7 +i067咭EpN/y٫MK4~~eʭmZ7ĭTsS|I`,RL)q >멐AAdE8{bBV40\i%{ uFb6$]* s"46@̠Ur:m6{'?Rho<]v9#t 5Ĕq9/(96pg؊$ މhz`][<14oN4Z#/}zv\mێ -;% "Tj[eDj⁕SS@2/vD|x 3:Y[G 'bK GIc ฾^a@i33&fD1[̋fM,&(Q%#{34P@838ge4SwS,k>RB?ç<@0ChD1j3t?aJ| T=Bye&eeDA>t0BEk7^qCrwf)0vsґ"yiYtgG*j̦wpfd[a1e_SPsɐk5'/B +iF僑Ird3RW 9ܤ@c:OK%h0! +jomg?'̐2W5vV?Ń\nqO% +>6=Gr5 ':De6}CEA=u?'IJbQ֠5Shu4Rb9ţjcΌNo/e~0! )<#5"6.0Q Uvw59;cCFh#W 쬙%z7oEdIm{uOcOnkG!!(t7IPF,93R3&ds]֢T9 +`ftb,X<=ߥFc=q2 -VѸOG,P?[\X3k[PW]r=`hQͩ`46v/lO}/Y̍ =dD߱w_YR29s!y6:<䧙 ([惘Ќv_ <=]a;N0El7s7?Cݼڍrud=eKu[V+W#K lT?g'=rb()h9b1;vc%0r>/[JZ<m{$bRqrs=܉y4gGHF)v/3("' WSY49ڪʊHӷ> N0om1$)#3z ++ b”ZSQL9`" 6^9Wr(Mu n쏜AT , ǼP+Q變dxEi=;AOJɈ#FCѢg~fG=_ՁhANJ=3sFl$B3)YއɘQ9u(AI.}z!5ta4ȇw; 0U +LgQ}}NJnTrz s& +eQ\76 3!_ӱȪN_g9?2?#l%G^A +ت#lAX6("4,TɕԾ)*dۚrhL1|;}mP +Wl1 n7wi@ysY"̏)|Wf$1^%Aͤ|>čr\:hl2v`}) Pv_<} c;DC&fh|B5/Ь g&t%0ڃX 0R~o`iքqk,,f[%t..%Ņ_yx̦&xA|!窠xteFF_DJ/;ИfIdM`~Ehj`j{YB&om+Jmy~$۶x2o:%?j֨.qaHRT#6Q`$+ulLnrSe[m}WUk`SRC.fy#hz)CsIM^;7pntX/gNH4N:Vbl&QjֶkyL "ѵf~-Џ}5qIj!pU5r~]xloC<ӦǽL|"Q\uf݆i|ɢ/-(Y/Za]bܵ:+<ְE[?0^ZzPƄZŷHŽ-pC?ƨfɰIUOڅ K@+ZW|XэL NhGB۟M!Q +8-Ùq0jD!hjca_˦(ڥEn:FGb1 nVdqi)cgxiHg5쬴xdVFW^.pWQ)f[k ~.n9[ +$ q5~d j.1l + +/˳֦=#4v^y߸fm*<"ʦ9ry*]fP/(.N7ͲϿFgJ"lH +z͘2>AT6g cicAg$6*,ގYrءqBԅv¹{>%_ 0NaBXL^-oD2C],L<kɒH-gPnMxA`^nY&Nܞ-v+J@:0 +Źٖc $%*ۥ)ߔ{eR)ZRCɧPd +NJ&1vz,ta EeS+%=NXy,?=1Uw‹2O`$sVNzvN*Q^Q>e)dchZ?^y2R6 &Ӝ5EsWU !zG80 '>,2T/M%A,{(ANYYQwfkV9$h񕊔3)EdKC^oR &23EBɹ}N1xDRnZƝ֫51Z{3Z +KeBDLnrkN`h3Rn{ۏӁKļnɨ(1wjđZiQˍ !DR=d7SYgҥinزTR< ml;h-ehy␦_jXҏSH( +Ȳʄ7"E+՚7 ;=ɇ_~ڂx~\6jXv'۪ɐ,~&EuŸO0Tf 1JAT- A~= Kwl:'*Sz6#@мABY:<\y F\";zO ^@?irE!F/4tIud0luLIAvt# y]n̪TqLK=b>4%hQH`•,$CO4wp[]%c M.$5_S&<_ +.3/4)ɡDO }wldU9H`SzGdv9OćCd_Fg;4U=Iv-P_XR(!5J$|I@}3o ژP=d{HF"$gEpR .xWp<>ԃ"-|A&Q[EfoPR2g{O ݖ˻YL*xspm*T!cy~&J^Lk`c|]e3NWL n!.e! OZ-&ӯ-gjvR`vH2)?氓֗&t\ QdWxs%c|!Iv ;f(]/e CJ{'*~.m$""? 蓠w$%4F}.Kccq@9'f4{OZb58^W+(07j~S(H?߀EQ(Z&Ďk!zZ<}Sl82p +ٳք7Ҙp4 ^dn-h@FTWغE/ޮhG*bhS6!d,p1E,^9!LLRhN;CEx|T?fFWJ߃z=KG\IIVHc]kb +{:,7ssw4rCA0Rxr |p,J{kN+WPdH?a ə N&yq*ZycY>ֳyq92@2!cr8VFؖ"O}03|OLWKu0;Meꅠ%;]i]^"ZL?Yd |]Ҁ21YK&Е?)zX^86U+x¯V*G0}[IL@xPO}8v1jN^w$ + 2,xԳ[ڲOcs(e?M8%6*ۦ"eH)hq]#5'[`veY{|@ZKY)>t&d + 2(UE%I,z=F= A*ݍ<50iDtH0*5PIXQ4r ;"3 Z/#=!strypWq2X.AksgCH+S6: Nǐ-}\]k OBLcInTq&Ic#2s:BV T$g=ãVy9i3ֺn 0Ʋ.}.pDQ։_^kĔ/vIBt+>8rYIaSĴWaw"Siݥ.8vn-+= Nq|ҰnY^@e'|zK*N5& CCGZ: +wC~{f~߭'r/ NE7 GTxiP=,diɑ9Ra1E΋0Y4|7J=P 5M4&Y*U\ 4 0Z7: 懕dDgqQ=<(o$u@6E8٬˒FW4FSxŦ,f[|6 I3!QΣ@!K":c}VWEz/s d)+Km$Xp&t^="gW'{ 601h5ÚtZXf+ܻ+d+gږ*<~4qfe,jQH`33iXUgr\ݘfB͑6WLX*`^uyB߸b.'݌Fq`;/w:(=RE-Q.oi-ZRWnj+%=cW;ytss |/N3;y"w\6{cxr3EZJLF(5Sg#b 5T$yEWy(/Xpe:c 1hI͖5u383øQ7wrzKeVuHq)ZL 8hg X!YRtC$Ŭ3UTfG +N E.–/{TFX]Wy&y"_c#JpCπ:J՚;f. sJ2bpNQ°XWI9z\tb)ҕ27(\~IP\UOz,DJjj@jYY5j@vN"2QF"c .EY#I6/Wy.Q2En6'_Fo<`{,L9 Ź!C&n,L4ox։i:7L HFrn궉x+G*?Դ[\.vFӜ2J`S VHPN \Bu' +LO7_RWAIY ⸹PRk @rl3|߄/[ +,8}a~Y8{ /0dLw$Ml~^408` +⥼!k*tt&Oa PQ}C(rš7$[e{КԂ>1\ڼc4v| qF֋`W\7?WLyK7#_Tm^?' |QC.O +,8J~fY$tn^"&KцS]9TNsLfv *$HyjX8?]@RtPYZ:Zrvqc \n*' V)W]149m,૧-ЕjV~pG},l _lMLY@,M@KLiv#:$M,n.%&֠*KoFntң2]ۼ =U?_* +A؈ h=K"S4z:kZSp +eB;-\3H– ҆Z7w/Gp]}2T,J﯎Ԭ΋K0K5DR"ŧ/NƺIFc_#R|-I-B +s.E1} +5V f3^3k| %5мbGV1+3jߑO- BM +BDb)yE0va%PX7 +|REXBYO=w: F!Yʹ[4[ ,z(?>ScGeġֈUy krf, +hrQ?ݨlHw,PK x[n07ވ'GDꎀG +p&R>lty~Qo^|FUb%ǻ1A7SH 1h+B~ +} >J*!>`g_=Ja'xuEF W,E=¡ʫ([:aTJ vs} Y$Vasma sV5g؈M*ozx + s_>)t:<ٸ/U45O{"I +BG,g ܿflH%"נkVʏ18|jp+.I, =N6U@t ͱwW#M0W*lg + \)DC!tYqKUQ]ܮpk f29\F >9* +g3% hJe@["1j=züh#\n!$WGA˫;a6rwd&wr[o[ ~@>rVH&E ,&q +gH#~II j}5l\/'5sa|*ɼl E_}-*q~ -ގA#b+E`\!0v㧜j/M0jd@Ǿ #QvW G}kTieKZ=*[(!ĤS|Do2U{t״˵\* ?Y0Uvb 6n+8h]ϸoA>B"`ÿ{Ɖв&@fop49ƪ}Xkv爍`/v!Z]Zk!~^sH6;# ם`tkօ +4Y$ao9wRT7$Qjvj'\o}ᔸB*4؀>Vj(p&J1[g`9{ï)+Qh#<ÏWy( 񧑺+UL!DXA.]޴: A²!2Rm7HQZt 僶x$DDVC"uUmKvkI]t^Xn~}b: `>WLTm@͹a⍟/%le9[)xy(^9V36tWL9?$Y9h*kotplyAFOT1p骥Je(]Xtr6PuGYDM3Lʐ[:0 .@H*BMV+miji) hcxhKHṇ:~si҅ܧ}g<ɺ EGNf#H^<x{+_ǯPc!o\*IƕеB$QVIS9ncsEMu,`EHi*yάTyZh;$;~5؏}R0 XBZDrY z!W4MSڧ ߮a_P!Kk,/FL|ǸBKͫo͇x}-J.CO2[{Ԋe1n)e%*c^;ˍṕ> +4=*WqH9DI{tp-U9#Ӿ):%:+LȰw½1"fMxMDnkٿ!b7F"<{(g)1e9vOdϾ=߿JOuǾ/"A]#RX -ų"AGޠ+S}ڹ-y +3P#`bjȨ=1\9/8d,R<qi*< Y9dw"~ ;e)rFcќN^ف*6 OXڤFӻΘ q2\\nY>mR ɛ6(qQ3OZR桵r #%ȇ;ѽk`m.o?@H34;+W5Æ[=VQo]B_5?ܾ4.RD{a\)BP+f?!"kP\HG4ZZJrke99qWih@>^+mdpu .AgFxa`4YwLqB=#po:zTէ5]CEF_Cm]B+C|-3NZqnVm|;P4AB'*Ѵ:4nHpǘ_m̖:{δ,|#| 3 DP~ +qX'+7 V-1`9` 2nH[OxL}x;=!]TkiCM^@8S a} ZܑLWUIPpkʻJ}(XBJEمY`y_oء?\ϊp+k2k;1!xa㌼8Ja4v8iz­nVd.N.IB'YnV fB+UfLfl^sxncg&&;sQ|u +>y>jPu:sR_.EmUXdwg.G0G+fpG*XWJ[Rz3vxoTJoVzׂ'1`GQ>eM\Ht>J]2\=Imy%Tnw>K=6+A \YBH)q-D|ogV~'|Sd"d #+# l<<9n쟰Ts b|fN..54J62L^ῆ<5 +҈h" u-?vW~u{ѹj!|d!K cQI ^m^1l@=b=2][O!L30rEE0 I#e:ܾ-2v3KX'|2O~d<f Cj+Ayg[;WfwfMtL/NP$YY1]}^-5hL CR^M$~\~i"\x0@`j\}a % JNe꣗굲lo+A+'N+u2'{C{W裴&/蕾4tL.G?:l^n\yIY6Q\>W9G˥[۾pOz"xgUT^;⇻_Z%e> /돈/xTsm_7u  i`yC{g%j"]ҫUIc[bybzکez A*Ih墜<9H f`3m:q&al!/;,]lCvME%Ao/KIllY17!\1*M19] +nkJ6$_Tܴ]ewDҲOr͡no.2i̩&r$}|'kdP +)0~^b9<H]$na֛)Gz-#25PWv{* M [~PyiT&&#"hLKUN܂}Ƨ;fښ1G^JyH3<4k׺lң5uLk?C,?| Lj\C(!y A&xVl-xRa^ dHX^%PF Me/S_M,l&1ZVF/3uS +eSJz&kI(H8"0<|:RJ)8tvlt, &AͶyLf_903X ~IȬ†&?{i@qCNQr +f}GTd5j-څ3ٗpǖ)3Dg]rK@³˩ i K/Vt-an s+'ҙ B^\xNÛVݞ}zȇ2E"sXL*g p2"?@XUdkrx.evdTD$[~8lg>0U?$d~( UwFLiY^ox> &:YO ic? \ƤrGrD>< Aˊ+nDdJ>fj5{Kuܻ%ZjP6rjxT+HGĴYNәdWn> +:38_9>-TD8rEyOJ|I(Y˸ ̠?povr?TE'.m5V#^vaDϲqc +goV +NzJ&MOe=3vݨ:\b9LRrXv Usp%ȾaCF+|oV {_Ѯl"n\ +hmt9k,[g Qͼ`(C +K*N*yz+{z_]}>dJ*Z3JZuثEoKݒ,1XHo~Dn~ c Unf>hX}KoC3`e,\ Ri˓s&Ote>_/PM|xSlC u?77ۧݜ\;# }oO `K[# ^c۲c. +U\&aⓤJSU!Oré1*AK`zCHG6rb?xqczѩ) ^)8Ҿ:gBFs\4 + (wm L%gȃ;4}.[mjyf2~k%ٙQy{+h8ġjijD[A Pڪeo菞O3"4Fۇc%Pͪ oe93KN,1q{N6nT_; .;^txsӤOa'1خ9hPG$?EpD| 7h+"tsI.UL16d1f~=\(кkOs' t$6+KXq! +{s##o2 2d˒ż`ikl.10 nq|ι6:9jG^liUKrǜv6fw-hc*Ko5?ӣQp2*Lr#~B:zr>1 p7S? ՗(ql-65O3nKTl:H'%zO( 2z2mlTJz4O+"އQ眦 ȪoML\mגRа842/|1El$݂X'߂Ky58*5%rOy~/9Y.U +EQY.8hte0ۡgEf5 +볨 禁 ^~TrĄJ'5XMr'c 0+٨r޿RVń!OqS$~FBp l2(q cX"jjK97`j" l_ I 'pde%HC_wQd:ԧ ڠ]m(8 Rh e!w +ӂ^ +K;V_Iجq?`\mݒ=D2ViJkK{&eat 1m &LW@̧/w랇~8[ooICH}ַ $~`&*_dEm8"Lqv`!cU FxFoK jH7>78C,F+njD-aU2oaRș-N|gK ؗs.~V}lk\2\8ZЌ!r׆Ev1@BOlfyp/"]\_GIJO<p4=m`ljVvAu-aqXEKfWr.?}0kE3?(|K>3%r왝R#)y?JˠWN"ϊz$6W9)c0;n$H G3Uڲ=/1j_Q&R:s>t~V%_=ޝhݠwF\nO4AF kA{ b^FΚ&àn攪cH+LZҢ3,g~~mzU9WZ=M:R?COYOx#-đb#jKR -Ӌ8&>l ַ}SÎ %~IV?@ b_-w5fgSѓ`eZ?ZZ!i攛Ay˧ +9劐e&DX))3pXiZ6?؁wg ExaYEQaX0QttHcޯ|qtхM3Mn&w4 C 0$x2nnG"3ޑܟ%}S{]Kȏgk#PIHx3 e_s֌/vLEieO'Uk"TU3՞ZEse^gr.@Q3t UoH[X,UG(~AcH2NׂpiF#Z 6*-)cg6v&qQ/_VA%" +siϜ>x R8t'Hz:FaI+mp~?d7w{I>Lvwv~j5K@Է~> VP@ᗱv %} SB3?O%uk-=Kvt(qPT;[w0n-^:ϙ ="iq]!'S>Z/yIES%7eJ$%<U$^w<]$T͆fY]p_ϻ n>$,@ONJ$,vo^"'z?M\b5W e)b!.ŚDHwJst٩ EvرAp{k2>S{IY e ˿Q|XjA؋}mUƸۂʇ 4 +[^RQ]Yjrg +*ڊ (ZcNk[ohxЏO) T4wAYdŸ4JT{uDYq~>[`px>d=Hbh(}mF4ZSt(hӎg~+he_ע׸*]\)Tv"96o_ 0>3U9 +,>Y6nGT&HeQ0)ll#0'QOH=n) %4}R:ϸ۴B`5cƵBշ/B,On7ϟrR*%KPXtv5)D tp=75VDٝR~H~{pR_AgE! didX5[N14BC(ʃ[jk60 2*oq@cYٝ;rWl&QC羗 +]DLabDqץY\`^% +`G,ҹ_Ю|֞ozz*\9;qI]c5Y[;A]Pc'eVo06 Iũ5_q4kë +!"B&G +E cJMg Ѭ˾*"AV/L8䒒"䙉gkr,^K).tD |wss?nс]%\+d@:@'J£T5%M77>ᆉd*?=T;9楻Ư<~jcJ:!%=mv+2'A03;3K08x2 aq⤔KGTsҸ'~`ޗ[Z O%6v}~/(M48Z${ ZcwvʥűzhAzcA|;KB}}akV&m”4)*H5x)vܑ:<$11p B#,-M]*0(xFj#:[% (lR;iop34˝~ܮnu۫qoewe0ڟfR ?3AB% ?洬xt.il :0mkD¬0$J3tSJ9__naVjpv8tE$xWu$oFD$ȷOu楩L/.*˫ٺo|; ^+!#M̿T|vUTX$خP]qŕAG mAףŸ4" xw۩1(X RWȱ!y?0l d0K,z@1V=O҃UwsH;!֥oTxONsTcs#ͪ'+H!wq'18I/=@0042,I!?_Y t֚ oV?e  3%0ţ.,J2N̾ ܄|9C &\"ǡsBm̾pOrl0rpy^+mxama)7֧ݚR)CqQJdr%M6Y1 +4; 8Q3$a.LS9ä`aE;AG _Ey1bxFDv` |s?E}2bABb36o +zC6G𥯦R.Qv E~_Ty`K»22.s Ǘҡ1 +xmpYA.XZPukH:ߟELqK@*L859tY_CW Z$'X@nB:y l6 (q:$a`'34@"p (5ҵ0Uc2y/J*BkvbtV X:a%H7{OZo}B޹ym#}a0 /xDŹBδ 8t󅒉oQK? 58omTj&39PBGȸz{۲& \]'>Q< pQas~z[Xe[w^+=+#6!4 A>YRO4%ZME0I2>M@F3^;y}?;2r+^SЦNe߾ntHiV g8pldfu2-#cuV\{)Bmޘ*8(x._؂ y r *%%jxX%A' ;Hr؊OeթsŪڷyGrE pu>a9m"#@g AݐKZ"1jpVG HB8 "s.)ERjYfx0jV&T0Enbѡѐ8-TL[隹7!·rm#6?AblMѭ +̥'}V4X}'EʩHΣJt$v)ozq\ J5{Y%`w59uI2su3b]}R%-zyzgXGNh 40l94ݳUuUU:w݄.BYڿǢ&jB(o#V|nD^*< }ٯæED51ZJ8~3@IMH$ q#e8ǛR˓ r}|!`zF Hq1v]sFw6eΨ&)j_~r=eLȵC;>vtڢ[$P.֙*ang179ؠt=~3ϣ\hR,Q1hBof(-dH hvc=5HA=KS(4Գ"(V𹜴 $>cQ H/tq uV6I< wE,d qx n`agpXO73N>" zY)8&{'s,8O4^0{jM u9䗺Gq!@3*Z9 WkΕY|1GfzWZA.d7̐X!!YW;'>qq{{;~6 =waLƌQԹJ;,>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 19/Tabs/S/Type/Page>> endobj 56 0 obj <>stream +HWk\+c~m %680B% (TqgF+/Y4wowuթsN=}~yg>iat\(.wn]?/|1&kJ.{ØR|ÝڭYM>}˿g|?/#r'(O4pSA2_=حLEc1c>jeGDht-l+ xʅ)gje@q G5K['{w𫿭 AOYz/;A^ :a6k7^"=㗄DU@ҡ(6Spa +،vu!Ф.qC8Tp  n3fpd!icROΙ7 YX̊=+Bb`Zv7pnS6t&KaE]A\dgB7 |VD.lWa,k;4&M* S#|b$=KK;!s +`.Q&+!Ƙq1+ӵ$X*2ad|QR1pmo9Zڢe2 BT2Q%wG.r91HSQT\ R 1>뚴b^0T)t/`%&'XOaōv +?eu{o7bQl@.&TZnOfN{j~a{]ڎLD9N=ߓ]; +.="{F(;g-D{lЁ㈌yj"OkI.:chsIȹ\T% ,V8t35C klӕi1͹/l2{ ȆfoiPZ7(ۙ4^vW9E@v9ϔU%4;C=0*}1dS h][iQۧ*bdFٗڡւLptx* 3eظ֦Z-,T 4ggpr0* !Cl PG7v]ZSi@_!3f[7mk5Sʼnԭ ASUqYWmxvs6cÇ#S(ܾi$:rVI飍DM{ergƏ 9#J M49QF_9F9F CǨ1ju0-6"5FOٺ<]Ft;chXk4шQNzԦ҄H~Fd!X"Mk7Ŏ[FEqAXdC""*@u!fZK5de"cZ Ŭc'u svM"KIv@UF ߀m"RdzC-lsQy<_N O6ۘfKV+Mʯ 7Ի5KC/AL1}5# +i$مiQdm^E=e 4A?hrt0h254,(#k'ԀܵN>:梹8_4~-E +-Offp-M>, @eXD;h2 \JSGdbo7³_ Z~hаڨ~ ٨tQe۲CfgYKQt/`Y7QuIӬ4۹ܑ7y;L&`&&d #Pn&"Rz~Ŵ^iϲm#2[n̡ @۷ľmY +>Z[#5(,9g6Zpv7l*~ß->IZ غx'ުmqlؼEQi^uRdLפj˧DM,]xΧh +vf?6kTr]:8!+:g&v[ʌr+^U/c:EES6QLN=Ě{;яW[bFSE4`c]QP + +A1D MkZU +i`fU<WQ(l~с /eTʖWxòVttxrhm4.)hLg"tI2)qyR-|-mqum^C[^O[3 +C!&GL(50ףS{21-}|\$X[l J[>RɥWOs"ɢ`"9\Yk2PΗ|~ grq`ރj\+xT,?}Xӧqy pN +a/hj?,}?>=9xU/Nn6?,Hu- ƛ)jmjƠR2Sޚu#gxV~[4Ι[rvʜ&g\Z*ʘvU2Lm9l_cV@J󔑷RV2%avA*5*.D%; شDe9a +>`,وVdy+G|׽р@Oѵ(5(x!>Ω7~6iLKTv4[2LĆsӂgO!5%4eC6_Dо2LAb-;L@mHUV!~uzY5c*0*#vb'Z{^2֘cu*Q%v/rYAEDz@חp? PQY"4.z鑇g>=fVG(Qx-9mĆJc>3T@7$aLf?:L-,,E3 +YkL=66q*_^~~鋇U|~˧Գ0`!eˉlYReu +endstream endobj 57 0 obj <>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  e!1A"Qa2qB#$3RTUbt45cr +CEs%&'()*6789:DFGHIJSVWXYZdefghijuvwxyz?b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb& ԏ9 g";+-lz#]:BmTK3ʪ:}|'WBՆR-:&969lo"""""& s1U!I DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDӵb'͈,Rޓ`Qü3N +O=9pÙ9A;#'/UǥSΎdCc $Qp 6kȮ7[ lQֽj$/yx&1 fFU8't\h>k PkY᲋$bzّYH+/+[j]I Rr v%Ŀ$`,j/=@$7qM\_e[\JUURW[c0(I@SxIVL.5 ɡͷ; kZY~Soeg+} ܪNߗ~ylWLYV=:cwaHdv&CpJ.-_!weK=Җpeǵ:`|. x&>2RS!C8` RĖɵ|6RϏYe  + +W`u#xO0Xc<6N`9ҜzW9Bb?hotG5ڸNM\J lv+i$:ꦋ.8Q˱g2&J)ҴufZ?G}-U2+PtL676n]}HK.P%,2tK8:YUe(TXaywF/ܔӐwEn~d%[EI t{tp\NsRE#/'?)zXưrszFRZ}6Y +]vķ ͒'u z1>p7)nB @w(;&:&bG7\ρm͜z!e Syz3~r; ?~nt\).;/1Ғ=7Ně!h?Y@ zd93vN x┩B_{yY50{O?3p訚]ȴtKZ_u^9vMM2Dh4z{'.X7g'M+m@ߔӵb"""""""""""""""""""sgcU[xʬG2#c~aHp#_Ϟ1(|#'+[bϮg}Oz//b⽢֪;$/<ϡ[UVڌY[a0vXt]=k>HB*Q^nw'jeX/!o K=g8p*(]X<; +@o=k~kq{Y,Or@?9̥ơ,u/q#ns|7fIV]KV l<ETߑ{ŃHkϼ«`>U%U@gc;:=:M+eav']J ,K7AgQsªʙoF*;*|nhF͞xܼ˾^mur=&BTMON^'Fik7[2*͢"߿)s>"YQi}Ĭl'M g3X uc + @ak"zZv)WQ5c!UdYUOHgN_߈HIgjfì۽4otX_S(>H@P ׼όX6E aP@,;sEW:($U%T$^_uُmP5Ⱥncߩ$Xf)Z)mrۘdz*Zeб@,l_L/ 5֗ IPy;ce_5⢬y@u=^p+8JWGUMi@۰Ac H.ף NUy +Uw6No +=B`LKF#p->'"QeSS{@O>q32E\QdNBw1/)!8sx>>kJZKk>a{Ǻ}`՗Ieȵ-QG W~☹y* RhhV[Ѓ8OjX:N[ܒzIN, +X5+c]H/ınK<3j.16NlMTpu\܅\E+s+o6DǷ.ab̽|'Byյb"""""""""""""""""""""&ڔvW* .N:3d5+0b+6FƎDDDDDDDDDD8]Mm[%ߙ8dƪ.BC@ .Bq_-,LܥH$2ø?:o'Cpb|Q>Y ·Noᵛr,Z}ʹڷ؇jHA}DDDDDDDDDDDDDDDDDDDDDDDDDDDֵb""""""""""""""""""""""""""""""""""'~ QwbARGC8[ѶK~NC&K YiPb+Vt9G=8ut,ǹ2~6#o}Ѐf#~GQ53<\'ۙEcU[>_20=Y|S+3/^BYZl@O/};N+⍍eW[~Uh+oFX>yuu6O}KUg[=e$]NG2jئV EJJG$DDDDDDDDDDDDDDDDDDDDDDDDDDD@׵b"""""""""""""""""""""'%W)fEJøkH1 ]wum}R=·du&R#gdLDDDFVUW1DY (TfdbX7 +1U`H~Sz%WѕNm֠zPy=z=re櫯rNq[4MCCt-&9o>FYgkR)ZMٝß5&tE>̍9ׂZtZwSӛ眻LYi!-F#SNW_Q%OYO請Ѿ[2wʑ#zRVeHeA g8MlgCLDDDDDDDDDDDDDDDDDDDDDDDDD@еb"""""""""""""""""""""'wczF5Fn@Uu:POo9!SsJakyQOA߻V+ͭj{9)%WL]y&/%q8[b`v11UeVuPAMw#՗8Ve25&[d[=ct[ƭĩl4,-g9 +;:CR= hG50pdu`{<ԗ|*jYZ܂wؕ$Hicc̞'-yy􉮠$OO)8ݗd\Z*M4 .@':oҿW k-ޱdCz +O>rVere1ߪ4O_)+K<\ĥ-\^,ƺ)(J+f XK!>ޞS!uc#cX82jcSs:/#lןidWug뱖 +ٰ;O!>"""""""""""""""""""""""ѵb"""""""""""""""""""""'?VLZڵ4 \1}r!cG&,ISӘ]V\knS^39;T>~%/3%MA6%"k+ wf, G +EFlRfPG%MV:#8Cʮr\&orw.Wj32/rUZ + +=f̾r}Ul1XV^M*^}q^ g'8U]u^U,@aMu?o |3 P- Q\[Zrx_+ owz|%:^'NO|02srx{ЊV?)#W4v}mvPۇXueE*f0%UIֺO#g4e*te]>  9d/ٍ;;:9sxzr{{HGq38OLK+Nz) +,X' +#xn73=5-ҡʠoz#x8jY~j~(z>"OAg,GWeE3~$%/f-,vYBI'OSP8o,kL %KS!xauRh4ƤV~}kb _Gi S[3?)Q? cb7b<؍m+U:l8 ZY^Mnz\Kt}Gy\٥YjI::$9O) 1d~mk+vsV22M +r:͸:2sm)i6Ol~?KE^/1ea#DzJ3ĨɵEĺ +(NR3hkg'({U\]}{G1r& +!]7yHUN>C咴jnQ]@>csdLnf&0-*` Y`rfw͗qJ-.Twf'@:t׵b"""""""""""""""""""|Y[?<+:9ɦ=v7<: +⧆zr9t"J=#\LۂbVʵ'H%tXԃ؂O>yA8]bR"rNTu=}KSΊh ˛İ)gԢP/3(G{ ŮARקݞ9!^o`އNOB 4E +ֽQyNkWsSg\S=n3]y\CG4'Uw9*M]vr6}|Z}Vs`d38'w̤*Pڲ2w+#eK 6auun,q^ģfmǷ:u+%E'ᘶ^^>.E-#:`aWZ*,UwwkVbȈyY: +%~ŵ>Zm~}z0,z5-!c|Jb:gsj7)zQ~&^fPw.-6539sՉ#'6jJ9I{jAmu@1My݊͜niceײI>O.M'XsBc"ݷZ*QʄkCC~saW+.G1>:Mj!H:::;еb"""""""""""""""""""qOWw?(`ޥYϴ} ͋HVn^RujOe`5%N,I:t<.%BcPR*iA^@kCRWm%\6lWU^z 7;^pJ1SR >gk)8qq Pahmy]O}s*7{NV76gw>m)^QRݴ._ff-x4WECI]j=FFFK<-13l']>:c Jƀ}2|ɜCcqB!Kxm̞/+y0#GQfJ>*<:יfbq}F + |P@yfp2n[R+bG yIOba25} J9>)Fe!|vc[5VE}jr]±r9ylR=t%-ˮa;z8_bYM5@lH%;h jT6]BtDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@ѵb"""""""""""""""""""""&531LDDDDDDDDLwα|ZjvRlrߧ0;|N=Ũvc6HC~OTV|g5Qaኯ slLOV&KHb@筣ޑcr=)M˰JI[=sk5] bI'ᇈ+׭zۤpJncx2'0:kl˯i蕹>DDDDDDDDDDDDDDDDDDDDDDDDDDD@ӵb"""""""""""""""""""""`H&ƣ k@$"YAqEw{~Kk.ښT Fy#9oMvV+v͢t5DNl#F%kir4N:;DDDͫ9'1('a>0xCTǙ +؄#c$x:(V?^!<ƲCoC ~ rx5_{l}Rqn +,}k)v7L N輤7R٘By->"7ϲ>Pg]^e1$ $DX/QUms"*{6\.]4]Q<b2^ѝs[&jPzv]KF3sl b֮WG ]H>s"""""""""""""""""""""""""""Եb"""""""""""""""""""""'7czO9np+̫ϳ賉^%9y5k$ُZSeƥu +ߞks2>N5Yxk QQR렽 +u=ha2֡ҷ%jb5|'"_6U:3~UKqۑUW|$Ű(fށ]]{j0 +>=nBaјW@c- G&Q7,vG)I)#7Wm;:,. *T+ojjjϝYgJ|^ڞNވ+T<9Ӱ)Z`2hc>Ŷ +BtcRd1؆(#̽>]\TZr:uŏj';l+/L$) +5'r:o:>1Gd~uɋ η>1?\\n&mykdz՞="|lq\0k&APA6ƶ53M즣.PL#}Gr:;qkxw~J/gVx@7^:|~2&َ"@ͳ ;,\%7^OI/&Mzī$9禄{qN-V.]հ6vw}op׼1յb"""""""""""""""""""""$w**_QfXĐI%8ZqZNJ::GCa̱Xȵ\/9$951T-ۙ 23'#<o/6ȯ у!Fz^Tk^bYگF>m6`ڈxj5JP㕔ϋE8wjoL@t"D|"=Kk,r!t;F5pƊlk[!폦8!P FGI×\J;f/-v:ڨ1-@+ 1_u6" jج//F C䭋bTnB*fZ݅_jիSNItI(o]q_픳r 6]1Gi|'/+0i +k.;Q"bd܂S-Xٺ`<ϭU50PYTo̱)3gyLL27W[aӘe^=L\ʸüU9Mks;N>}ok֎W;־ܔoV1pƪFŽU$zu"Q$pջgev*6Fé^g7c\UIu:I Ob6o^tbXXIjU^CXA^V*JQ:}.?˴U =;ۯ=N.6/Ȣ5wj7mw$IoǮ̄VyV>EyHTã) #r/'ҮcSvmtlPyۃ1bkV$C.q:"iʫmΨ[f:g]_yxZC+V} o5>:R[!z2P-܎/]1R}~Rt/sMؙV-éA|#*+7UkSePvH`opz,uvVIn@vKWX.\M|Ֆo_dꯈZ,)jY"0׾|qLlE6#T  ^㧾j~?ѬS^bslg`vЛ~bx9Q#s+aYz%9둽l/s5dWu-viPNBxOZF&^mƥvfPtI=$ϣ'K/1@ d&5bʌdE'Z_џY8n&Eb='?ԣaP]29^dVDDDDDDDDDDDDDDDDDDDDDDDDDDDDDҵb"""""""""""""""""""EzC7OߢDK~/W*|,v])j!m#7 \gUry@- }Gb/7԰4nm|H37>zOE91:=6H=y8Cl[psBs2]$Zʏ|9ͨlaaC}f5śN=fEà'd>VM\;3TTJ%u$a>Y. v 0V8_ۑI>CDY<1HpW31UxjPa_(BǘGc"8`hF'Z<6Q?S0x יbR5dUnCsnhҺֱP^>˾f5K +`=l >13jZAꦚ~GyO2@K-]hщV5MI f h=K2ǫld5 T5fیa ,JpHv sŵFζJ"89wӋ㥕cX:`PssԞ.#GĥlT̸ =] -ϴՍ[f+T-23$Jv&\>',.6J@XVIގ;:y6qN1hjV+2U}㬃+D19,@|\qр<됬8?ipTј$=:NW~2jq#: +*OBBRGIĜ_*ZiUR)'?G4/ɾk< iD R|b7r+ l:}Ϻp#Kp\2^!ԩZW:'iȡ' k '""""""""""""""""""""""""""""""ӵb""""""""""""|TH؟Q7ߕMUg&9Y;| +Ȼ`9vۨlZ_|թ޷zdc"{yFk2hC˨<=EJ^Rw5zgބWydO}-j LjvkP( ~Sϯ9G6ͯ͡f|)r;~YBLL|RRQB0jb<5F{>A ?(+} +njߤ-uIT21~ ++9ylb䦧AYrO7Q咞顮G#hcCG}̥kX +jq/JWƥًkWjYw]yI3Եb""""""""""""jLjT(f6}ۛb""""""""""""""""""""""""""""""""""""""""""""""""""""""""յb"""""""""""""""""""sgd[UdCn܁#M^VN'Cϥcz/zA;{=y)%r鸍x#뾹}$q\L{* ^fCR=߻^o8T-SmV;ܕ2:!e7:;޼X$w:|&Ilxl}3܊:޶(߳f}ϯ]aj믙i[Zm?&v ؂DEx^- הǕ|@1R԰mX'}w,0g"pql6*զ56M)=_dL:lå s15G)ks*ʄ: "mfE$-_>6zXvVY2k>ә^ _kJљ:fA;M +s99X[Rz=HMz moc^w.s` {v `|@eZC^H&欋֔bX.^dSќTma*򮛪ԓU1GE拶#moD9KjDKe5jw{MwʡnGF,fGZ;q%$#*z胯]бO~ɒu1.-J݂ԁg0:N56uT$31"GuU{9d*~iǬs€ 1~[=Yn1ͳ^"^۩Ջu%՝ha6*x6]֨UͲ: ~ފKO`H|_`e+ɑ8*I׆;}[o^VMWմtyHmai|`Xg`N:O kNH@ ]&#s3ÞpXm,<;yH]8Eos]lZܨG6(OMֵb"""""""""""""""""""|caYoə$gM#])UPGlpq8W +ƿ/Rr~#NNlL7q3H*@'UN|_' Zs[9UAG N-.6V~G^]'5`p|<- ]?Xh{?9ꬭmRh6høv&/7RLlS-cai +:'n-VT$p:Nr=b:kCG-mnڤ)Է*sD1˥IE(BlV#d}fSqCxtZ *0^o{+ɫ#(åɩeۅ#RcIHr\Ͻkj=$Ir7]`GR\XHa~qvEr%Eߔvռ. #ϛv&Jr)4Z  +Ǡ|"hwoä7Fup{ ަfcەvHf*69oMޥd7@ #tcZh[p Q$W@ lw]X|Ocss _mΪ8=% Bp|zؤ>0,tv$ϣ؇Q90 zۡքt]!Yg/S{V) PGQ5q;0҆ kG٠{fȞ^bpū$| w`ۦt>O ͩٱn{H7pwRvkd:h{$qx<ìS3uS I?n1W 9>U?]bz<Wh{'5*leZt8 ݶ:g'@#7dqU[kʻ޵s= P( +Fw"8 #brלWv ˂kSڽ x}gVMM}l\ˮaCۮJxWq1Bf*y-j;`-T<<s<ة8EmcL+^c]6xlTvE}~_!O3E<8U[U(|@uBm0=L%\gUV Z6s[Z܌VR=#DO O=KVjQ|U`gKgI#czMjWH[܌zˎoU$y۲ous[W71R29ONGevzB=zqQkrTg #^.Fmh{N'Zq\|Omzц{y;*`i>ROU}T[ae$Bl>R?MX( 2 뮫OC<-xxcm +mHYؼ}A$|}/]/fmҠ(}h910a9 o}{̜8myO36iĮ)N𣍛E%*G^@v~ÿ0KscMJlZQpr(K@v؏i>flucvHo-= O{{ȋ,|K5N>5V^fRan^N^Vr2<3uؑ7eoN]hD{5⟞aߩp8ĵfoa'7ccbpE (~4$a.ics0_4SSu5[*!Pt#m&/9c}o׵b"""""""""""""""""""sc+[{ g>;67\"| zMQp|W??!@S{ވ;̏_ͭ NG杫RrZ59186(DcM/ǶQ,@f$=gEIQ޶}{ѿE̢bI`r zX}J{:ٿg r؏Q8gLñ#]LF xT__P( ׿Nfb 7/(?(l +RA;=I$?9S8;71ρSW2$&^{Azk񈶺W>}jX/v[}P0ߙٝՔQ]Ou`OfN%L'2UA`H;={O.+b=`Yp9>߆b4'( +<^GƱlWU* 6?<ȥ2+zm]J4G98mW1@nOP1w~SiQ\~og5. i*]6' ~+c'lz=}N:8>=vR K.ִzknxN""72PJk`'l%7^Zy~oo WY(^Fū]HQrV&{s_J9+:]67?g9T +GZetvF Ed9%PA'״ΤAZP@rIMoͩӨpZl*30 |b`OvNX>#z{{u>/]7"u۔>^&҈|vU]#oGxsscV$PGb0D NFLƊnu=~^jP 泆ِ&j#Dk{T^X^Q#lǮFtV(vJk`^ɲppLk-ƭݵe t=OdֺkZ|YE [0*5=1n.-mTVYgg7)t7@z5pjMUY$0G}o%xN&]m:mu Ǹ6lNrܥ1unolJZ֦^^B]vֽzP%HzC-J-Ŷzu>ZAr*tnS[Gb=G6(V;mvϞ#+ p(<%0UR:=_Y%9ܗJ5\,>C5 ל_Arzt- 8i ˮ}pG{`ӰPk_j=r^{N%T:V>C4nMd'ꉍjs\)p5G]{ݹEd@gA6jf&ƩH +7Mu}:uc\zƕED.m]{(#ZIuLp  PGbc,6/9P9}{Ȉеb""""""""""""""""""""""""&&b""cS="""bfcS11ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb""""""""""""""""""""""""""""""""""""'ȱY QS"""""""cq3ӵb""""""""""""""""""""""""""""""""""""B]>̄׈Y+}=7. +R9uYg|xV^NֆZ5`Q!;r#[o%sh-G88޵}t!~ EzEż,L u/w2Q-~'p+KT~Ps|D☘ 먞Pr7دוkVZg`'@i&F1fwNW?ϴ{35J`EH-T$>yn]4"T3O]tYl34ږbh}}xZF1@#~]yp)Sh'%z]N||._ԯWoӑuCEh܃j"""""""""""""""Եb""""""""""""""""""""""""""""""""""""xةK~7gpĵ[UyU2D;5<ƪLzG;""""""yO G޼=s;^~}KqWYKGP5GO=3jhm[?O1DdT,[oSq\|[3clz&)Zs0==ӻJqG ŷ 1% _=ys𪸽k]їO~9#?T2PH{Dߺ:m[:Lq/V^F=Բec񶾺s|:G2.{EUGF(@(Ӡ;\SUVzͣ?#'9ݔX=ROJ+c-!(_>>^ly3 ~^1aZ*ى'< 3zQiRH3Iյb""""""""""""""""""""""""""""""""""""xاLc~Oe9Z(/ry5Ey Xn|%.vաꧪ~/7DD(0`: 7ԪՄ<+7J̱[U#"* X > f%sJ{U%** ѝ~HQNCSvUS+?1R*'gCmO5MgQKoTu ()>$v>]Z^f"""""""""""""" ֵb""""""""""""""""""""""""""""""""""""xاML ``7&6޽""`+mPCbQ1O-J(N^}b"`0>s3u31&b""""""""""""""""׵b""""""""""""""""""""""""""""""""""""xإׇc#=U5b" +Jsp1Ed@m6K#YB9^E߱SPSޛռ'Gէqt$=ˑZZӪNN3f1sx/Qgp3qxe^%eUs33* ^Gn?W/Qıbn`JG;x;~fE﫦[yO&"E@Eoy(ȧ$\ΚFzITp1nǶ\U@dfA'OC^)E@B$d6Q382xuWP̕J:; {>BEzRYC+;"\@.y+8XV%5XIfmd1["JOV:;Z÷(,YQ謖UPU]{z]Yø\Nn^f_YJ*zx:)?Չj"Z\AbXUߙ?L7-ܛ0ӧQaI9FE~ eṛMo\4W=V%"#\譯f7DDDDDDDDDDDDDDDD@еb"""""""""""""""""""""""""""""""'Ŷ-(PI'u&q5vbS220tte 53Խ{+@b4] zR۞5={F{yRL'\O ?s_mJt<\ïIЙ9 r&׷kȬ o]} +mc-bm +obi8m0f6s}cH:/:Ǝ|{Ѭ K-= Nod>!F͖038-B3Վ ꠳jQ}F7T/C֖$,IeV7Q׍Q>{&""DzP-|Zj{XI +خ{;ls^jQc%FF@|Rܥ[ԏ'*uGwۤꮥ=92mǐfPTzSۼnQjy3iG3{mۙFzr_XqAA¸x ޹/>WO)~ ^;^] [e䬀$k@ook +d;^~dñNԝSV 1x(}\kq"Tm{v%sIq֫<_tbea->/( ;ܜm5V]EBQѵb"""""""""""""""""""""""""""""""$pW$iГ\Vu?Z}TkEթ@!ĂdaPcV(TA*kg"Ⱥ\|ʬ6O/n6q~ nFu[+c &y \j:hmYO ~uo'DR>Z<[ -C=. fU6dPf˿*ijNX6p*qCEEN7тe{/0,o۩ѡ3130@3v:M)YE%vfcä鈉Fb"cQ5_VP ۜi#Ev7gvS33`21l:_niOF8]lq*H Ĵ נ޶u7훢""""""""""""""" ҵb"""""""""""""""""""""""""""""""'TL:6^)̠y.rW?Ȣj!pl ddLl{Z*ήCV|ԆGSLƳj{0V +t뽜BscE7XI?4?9[7v>ۋp}{kl-}<F2jU%Rz1zv733Sk[ 汹QTf::}WPڝt~؟g%Jl|!o~u>͉9s8> ]YXf{fp0>VKO|Dh 鉣/6Wt@Ong<>s5q:8pOUU.ĀX`'mʯ6JRAS6:97EX+ܼo\nvs3YȬ8A!v9λlަHS/TM}>^g/X*nCRʻfJ=P{ӽDDDDDDDDDDDDDDDDDӵb"""""""""""""""""""""""""""""""' v>Jy(^f,t5{>*X$[?4b $Qz"?BpdzCcUeN#D/̵j,5ؽ#gQk)wVh[N Ũt +rȻ;=smBi6hoМxf +l'+r-skDsYUl(O2P >s'ᵳ+dT}W:) q<:.wt{g)W.XT5t~C̟ ex5o|k2tPb-(mhZx,Db?.7#Ҟ#w lR)e[[ p578x^x }w^檝~osKݲ7;6_l<{_=JdNo["ÅW66~쒘/lҚ-՜}]'/euV  8fd(CiSGmyODyo!ɰWB0nD\G*o:+n.<ʼn,Ov$8]nj(O;7d\ A + O0* u'Եb""""""""""""""""""""""""""""""""""""xحD?hM=}~Abpq>"oU)_uWRB{(שq-m_g0eȌwȊ|0ONfExjXj_\)% +>g{ 6]MuXNPyw}{tBvzt>R7p'ڊqͲ*Bqˉ|˯Rm@']'z}Xd+yv`)2j$W*5شؕgVnW +ˮTc#:td]O>ގ^1 Fo#1cX1?4j $vgBM:5!g/ 8'X˓P! uҟH߲Jq/ȡ +îWO{t82,7򞦹Y\r//"u:QW6ʮa[N~&q$CZbijJ7SRN7׌b9:u: v.:]"יSCs +˭v78St>­AYpqA[[X~Py״g6Nڜ4q/czZx+.s^z3Zf 6I:3ӟw&27h]R9\nFbf""""""""""""""""""׵b""""""""""""""""""""""""""""""""""""xدEDd;O׀f#VKx}R_bN-۔rjMDDDDDD1k[U[dbt$jh*-ÚbJ@w^FXk]wAGOdyYŸ-Bװ]hUlE +)$mco!=iM)]dE4wG/D^vG2uGv}k1r: LOxw5F +N`tާq+1&JEva]OBY=Sc u".UT=؁c3Bqr"eZ k SYuI<'j~T:??iѓ[[*9BFiO~[z/ާ+Ud>]'E@f,9;&mеb""""""""""""""""""""""""""""""""""""GW»΂n:|Frz7mgɑ@[-kp|GKX5#d7DorM + : p8 1BTISH=ό NehzFo N%n@QcGE=bGc$ +482v2Շ[=r?qξIɾB>``*a[u Yt =9;3l#Bb~OMu3յb"""""""""""""""""""""""""""""""""Aq̋ȯcsXo gsSm\\z% Hq'}$oG u纀9v0ǨH>"&Ig|Y9 HC¥+X|B=)aPEAc1ZBt  %`>^ӫۛ@Z`U$sq7S}cꃯV`~+3?ijyc/3kðKYQ#=ӿe%X*Xt=L^H= M(1Y +~32uSfdgGd>hXNTzGćoBXAU2-<ŏ+㸓qtOͼnկfX˸_O?`cSb=U :&7n6&b""""""""""""""""""" ׵b"""""""""""""""""""""'rqssHu:l"կª@?^'G#%;ܖdWEg)$yV*E[˱Lpr2x3Ur +K̂Cz:'ET7p.]/#]VYy^&9ɘ2=:18|R!bq/amc*;MyZ%8zbPu򞏇c]W%ۙrDt:oCq܌\H5#vWP kZזCۛNuUZkXtz9I::=+aN!6T3/PG]DV(egf4!%n, t<њr|K/|!S+ŝy1h*Yh|29<q6G3@e;=930:s@W o&DD}UlȅB'ٶ }&G}UM\#gmߚc7bq YmK3@N\֥אD93x8tOQy5M(׳kh7*U ]]!@Gc#;'γ,|ki<>r;N<7V8y 9yYX{{86yteڳmj܍ц;f g]PmL5r>g~&?W76q\ٟ~idԡW\v(*̧ó ho&i| .Ľ㳱'{'N A<7#cmYVe)6Qe::Ӕ$Fi 2o|K7n<=+; s f#7/6u%r31E ͽ('ߡi +_=͌9EMJSbtu{Ku۴ZEudgg+t:˗w~+^%w[jRTe^N.ɽsKE1TR@W$l&mt>G.ʍu|׾[U:λ{g3еb"""""""""""""""""""""$7t >jYI j*+2m$3pjz+~h' <vfNEl*`;Vp!r*ʼ`^Rʼ*uА}ɢEҜ"UNÎVR=|Wl +b0'jGp@#+- ljf +ɽ={lM~Wr7Rase#=KP '@ FpV9d=/h@ +B +u0=IwBLYX2`CzFӈS]Mr[IR4`+U8+ t Wȍt:yʦǦ֬#ruV7|)E栌AV f*G6؝}ckc4sͲIԑ*FsA'Ϡyp⮕6kG`؟TX5:[gs3+d]͡KXuBks$Owp1KۙM\ mFPL7@}(cN=E~hG:éUd3&n`Ϩu1EEm0n쑡3_h;*@Z];\qSY:2X l bjfnEUcC['Lѵb""""""""""""""""""""""""""""""""&Y渫5TYi}շ7?3yϟH8V/Ī9pUZU#7($ߤW ï.yC6;Qb@=D_Ifl^W7uk|*)z<1KEÎ}2A#^c~s1Եb"""""""""""""""""""i\T`l *CgH>hW_)Qצ~pT WQ70u'0*ʚ|M!1qqcP<9|V:=5q*-$l$(sO;9K>8?dVQ$v>ٳ*k؛&79? +obHf^=` c]o(צ$ա( w8OnwXHJz(wqo;r-+`V*)w:)iL,:˛ۏPf:weRDϨMYa({T trfn7#9={7t3յb"""""""""""""""""""bxo{u[:UxenT*-^S: wpt+QVuw:J)0@F,|Hpi̲ +z鹵u'k8-RE@fhMʗH,*k@ttt'`#/kGyO/9a: Qstq̟-zldNr>HW'zo[xn<6=OuYY H#v8^k),Ecg7=U ) 帞3v +}܋n6M(ޔlz{'^)ä'w!܆:'y/a8̱HSώXv}ܧ8Rp:R+V$nq#ϔ -M+'k"^.ZYm<ַ^9ֵb"""""""""""""""""""h]fwMV܍ណafܻ;f3=k[~VΚ%##D͗;9_hu}Sʨ= N^)~ +#S +GMz5z9M5uۻn}N|.#e3W]yliN/M@y}F.oXKV\7soNV#.5eFgcГ'lO>G^N2&LkܥwEWjܡ`޼ΏyUKBAq8 ⢵1ض.LR;yO85f ;Z';H8bڮG6OͽểQe=|YɇP5;"CS9F@eF0dFZ/zZT" ; VU wk +gWcb ֫)+8lxUU.C۲v@Qvhjs0*]5svN@oyN׵b"""""""""""""""""""""&;jf`&ΚX` ؎f"cLDOn-cbLʸp;l}D}oaVm|sqHsxufW]X@a,6m:ņZG˦I!R$2u1f""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""& oIEm-f &pc-[h +g56tSuEQAUgA˥$~G0oׇƸu3Ԗ$zX7:5`5:zFou3!gjA/^?_zN';g_ӜUcX2[ +ʻ0P‚(>`>p08G ~| aA;!Ab{U,[e ڟQ^E [L4tOҤM+FmiUyj6Ku$Eѵb"""""""""""""""""""""$^׊\hbnYqdEx]֫,#IpFԬiYg::tDNL%O āeZKzzέb""'͋άG<wj1>_H9H}45g3#af?v561s=H͡۩ϊ% +AR;@;OAAp<8VSҢ]Jol$f$7?^:[[sx>gm!Exq`aW^@`Wpk+,ŽTkW +I/O9qxo +ͩ.24AG|/% +YC'x>-,$Y?A?bNKMw3"@~힒#Ѭ,[ x!hX +u +;֕c%5GU`m3)f +g3 ** 0[B%@:&+jTw6FǙ"juX+e4}` +#MN+8b-m  8 +N86^IF^!M@PSuVX]GNo7.W~/5vZ|=F]~*WlI{ߨ(OI9MxUUý5xJY46:w$+ƶ+, i@r%DDug +\O*wիի?]w~'~VO?+OWmO?)WQX6CO=/~m>@>q)ֽ'%NBE<خ$.F~VmtluF}_o9/%T}_?1]\ٞ_:l_0L4~D{f*x6Qz*{gA2p' n9C}''&vkvC{y{/ջ+OW-O?+OvU}]_+r>? r}^>\ZC4ŷaZp{Nl?ff~F>*%U&kYCrTlr|`YfRʺ˲rGμE+EPXCs;;*[fεZs#8Ϥٞ_VKrC2.]FBlRȽ?zN/Z?Y1g]XHCVԃN߁W}:TFQr:¸M|*]lysII\\Gӭ'E}lM˪vd\Zj*@/8` @ligf/uzz/Ȫ#^d&u? Pۍm'h`6 NǾMx]ɔnU_zbUN^٧+;8qZylE(z}geWžKM9yUwX9#nf^ 9 zKeVUG~{NR@b""""""""" ӵb"""""""""""""""""""""$7C.MF  N_|\ή=g |+muzٮO>c2{yDәU1CJt̓#p=&Z* -VXNTLvcO0Sey*~3y6gmeϑsnm|U"Q&Hρr3Fw~<u5JUJeozֵ="jʯӤP6tOs{&YUIbNLW"{$9,d9rcV萡-uH\ ^Z5< +jT_}N53*6n2VtCzmm{H +F@:C%I=(/4ٛcGE葿#3/ jm`u4yz}LdpG/ƴJTPXuuf*oִ{t k2=xx r(S@=dM'";'2̇NyLYBŊfC[:>sdDDDDDDDDDDԵb"""""""""""""""""""""""""""""""""' r +إ쪪e1*A:z']>oF>%d1.6EXf DX~Ps +3*HPF'=}sp/kKZ&x=]Y6T::::ޏל|GM,2o-àj(YFI!Z;lkXERc Sqҟ_|uxefXy~9By*[zë}NAkr(u^NgQUzb'_ g-κ'Lz^®}uV+J%z똃R*>dp61bϓs1,WQ6=yhvJgpL̦ɫ4 kSB2aniAU׺@zUng̏ƭ5$6guetcӅeޏm>yA;]k~s|- 4A յb"""""""""""""""""""""""""""""""""&j j~d'[Ev=&cV@9܏m>9W4~`x~{H-0ާ +=+ Nf KAX2WVXu0m8<ms;1wm{Y~nӪ|`Y($`Ll\ܢ-K1B]I=Μ/N m$`QHq-V'oE彺?&vC]y@܂>7wӜy{mX2fj[js2RA*@`1g'^%C ?.0o?u +Vo|ze rpG9'Mlx2d|#ֵb"""""""""""""""""""bf|X0Nۙ1A7MjiKZ;33˾gBmc߿SՂ{X֬v#/#{`vyUMuDDDDDDDDDDDDDDDDDDDDDDDDDD׵b"""""""""""""""""""jHQ:27Cy/zBV(fvv*m['b>Z]U}"`)v#s`Ж<.d=g` +y(T|^^еb"""""""""""""""""""j{k(e-:'[> SQL轢cfp%B^g#rm]@'d>8GKpkŶkXԮmFm lS ASoz)mzoA }gDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDѵb"""""""""""""""""""""""""""""""""""""h5ב}{yTԃCdch,.# IUwgBM @;`d#Xk (0mkb 0$w5 ֤0UV+$t3lDy.Z:%X0߳Ahsf T L5}uKt 7|ו]YRڲNa"""""""""""""""""""""ҵb"""""""""""""""""""""""""""""""""""""pqng[}08NpHp|K~Wc_N|u=9= VF{gh9kΠs|bfpVzՓSêkhpG/ +fԪA>gR-\pSuSQ@yV=F]]yu>%\Nu^W5\ʎ[Z$9)޷Ӷo>gueoY:qQ:g.fpj;/JO߸:D8ȗ3'OQ4zQfю66ew|tA^\k! SR̒SgF;Uvz{'wQqTW=×HoԪ'5j)W}u<k}V@TzaGX\иq)GVER( +ň+˭v;o1q_uqmw: +bf|Zf +XHQp/W +ͫ[HZՋ`n;;R3#XTg ~F8^F&E}1dGBYSIg3aG/9!{ @tߟyϕ36ߏ]@A=;u8p[ڱjGS@"i[01)b2ΠkIfq9E9 BU~o q|8}N!#`|=A>58ʬg*_],+~RGPrqCۋwf}Vy(X2V^N~^ *E8"ґІ IDDDDDDDDDDDDDDDDDDԵb""""""""""""""""""""""""""""""""'7+rwO?5Ve /.ot8vhYodϰ(hU \P%|T,N7NkxMrxs^6 坼2ĢMl~R7+6yh^Q5S7jK)$u>Y`GX@ӾWs{2oƭ*AE +dnwU6su9׷_V t]eɰl2,:sZO:"s +9WgaG>g興\uzr=>U|DDNzp]ZPOUB|tDDd Fv>_lյb""""""""""""""""""""""""""""""""$'XbSn2+dzol! ãuSZ|Ԏ4OgŶʊ~İaV$|1_Z -h9^`ï$u'`nL'MP'E2GbS]*I'?Bh9_U9-4lt~f$Bh!-\}+eTѕDys#F+r=젙ƱΆܥo`AlT}mv-e` {gDDD7($ Wŷ lFLp*K +]/2A ӱ;9x"RPtf"$>Wc>%Kcr |.731ֵb""""""""""""""""""""""""""""""""&5 jX1cz:7߯}OZ@uoQ#}$g~DM^~Ѱ?"SNC{a;R訁~\p"&C#DDLjf""""""""""""""""ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb"""""""""""""""""""cq87u +Q*,`yqk"|ZEJ)<0 U :8gE;m#LH 4fSb3^bs7LnfcsR֚l PX zfn"7#b6R*G +h{H&F)g1Z2MJͥ { ѝ97c" +2\t܍agacr+.Iye(kDI18W0^efZ *ס:|`Fs1ӵb"""""""""""""""""""DQ}>wKBQTlNj5FAa Qԯ5@osx6f / ً3Z[}Rګ6mfgBg(#t:H^3ʅo!`Y + ځ~C "Uf#VK';k{݈=5Fc>3n֮]->=MXw=)_T"vHOG}L.mm=5 'nni;3qlE&̀3!ny`a2; x>r=O_ 'Ļ4ԛюGU~U~N`D~NzdP uO?~e^-l:P'Eoc;b9Ơ@"Ҏ'̟i^%G֩mc/BP9uk2iG#lva~Q=*Ī ê*,uv|_sYz1v.rΎT;OlMm{ +fvf2Wdlmf0͋l.He1$<(Nkv: +kEn] dc:x:,Z`yϏF0_0_u7 e*/B#2 +`u5  .gʛg9)$bO=^=bҠIP6C[$'6DDDDDDDDDDDDDDDDDDDDDDDDDDDDDԵb"""""""""""""""""""` Exp/>rLxU FE5l%كk']A)'2.k#Trf`= H$j@YUU]nR7?&Ώq;1q*)B"( +lT]gN跘e~m:1P2 g5sYϫD+~RD tzU zLJª!]x[&weBtfbWMZ6)V#`pu\Xu ˮ؝nE?Xn0KYڃن7+>v=zt7˳0l@KA^Ruq]EoEA |Go{P^ðV*E@I +OOi=IwL\-wS-} ]>ISԭ@#dg p|~.+`y]L;T|kT;Wߘ:IܨE庾CU3|fBO^}{jF!>Ds7cGB VVA5bpj0K{u$^p,|GZCsnfaunIzjѼK?5Y+6@)ӕqh\YYIfVS`w9s>v:;]ӡ:͘\"2g,ng;$ĀX3 fWn;Tj(9Ǭ =y@c >lvkYm5۹1յb""""""""""""""""""""""""""""&ɩ5Ro0-znmf6H,ȯ):锆SM!ȶ3R@2ng/ח}=R;]mkrW +@槕I#\m]ay@﷦õyK"^ POn,$C}g7 VX;8OXWQbػa̤0ڝjվ5Tu$'^:&3>X@NtӅ cVSR=Έ^r[{РZsT.No)Kd)6žb`)Ӽ݉^mKuGj`GtDDDDDMUeUs:#2#`;m33 93y7)MʲR<:Eٴ]VX 36@z|4afן_^ʒB h>GtD>b9X[޺lH޷IDDD (]AԎ=qֵb""""""""""""""""""""""""""""`w_HUZ7 ,ܪloN힎""jb+ L qw}~re\L UD*=dN;!r;]lKdnF#|Vg|zNN'JUid%oL}Ht- nF9=#&j] r#:  ! q|Gķ^ ylYN3,eYKr + +As71 *7Yxᄨ@Mӕw|G E5Ս㡩X+[%*{ONɿkx Uk)$nTf#cgdv=)G't<󅑘W,_WxGG9wmK?'kJ#P +~G!4WN2&@mՔ)gE=ڮ),>Ne'qcEnm]MO8MyU}as1TWUU/^y̥z)~WzjZK zo[|2:1$dq|ZjǾ{XN|q>5N=T# ֜CYc{ܞ;Zļ10Tt/X^^JWx7X5(>Z߂wf\ԺoOO/ӆWEՎ_8yrjw֫xMVžKd]j1].]g +7϶ٹS#ҕE6X3k(ڝu'6WpKnEgls1cgcN&UkfD D4\f2xb#Ol跋[~6/> m{9C0|Kylt3Qšۇ\/Ǻ:^cg[\)'%˹/ = ?Q <Ҝ47S+Z؃$DDDDD@׵b"""""""""""""""""""qq~ /̑W+R9Ub7t~G\9jŋ*G09uG793trtV!#pL9 o_ޫ޷c:b"cpL٭JI%%+1 [ӸL8wsȣ^xܿ׾Nے``g[')s3FY95sr/Y ؋0NnVNmff; I7Q=(] Rsk=fBx|ɩS/^@;\bG_apA#GR?BDga֔\(u]Ro@5\#ijyEɊZZWMdU[r1F +)#׸ ,luMՂa(T+ oό^Nn;5<T0U甓Ms/ M<-[*j]֩2F.ܧѶ>C:iጼJpy +K?S"God_E2+-ʰ,glp|= +vVUh|{8VPDu>Df_! o w 3*\i%U72$u|ep45ҞaQW͢w;jige]vi*ltR^^pI ,Fn/>eUPEv# +I&b=gؼ,RRʞ%ıIonVU9mE8bQwmHRtr]G<17X]u#`vA9@ +'/#3=GuY)^Nom{ɝqMX堲 z#C}I,wq;@]1컚ڍaM7gn+yhGS֧E\\m#LG݁A]!vQrh۬WX_X0;ֺ/|n YZmVSh9:n%O? 5d*AWۛFE65Ur.MA7ӬbZךckaװ "(DRJ+]x_aJ03zɒSrVʵl/O @=wtQpW_ݭg==c0kXAXY=F?9R""""" еb"""""""""""""""""""EPus"_F1{*: V;b^:eV5NMQ],TU0֘G5r2(>!V= @%jeuXT_+6cEz |*|Bn̵.ʭӪXա:k{ΫBʽzH,e_}^_+r}WUR쁲3I$ą$ v58S?7uFރht8y6rهm#D;TG;:rmj+gJDR@Lj?]?ӃnYaf5Z6vssyUAÀޛеX<:u{hseh̥IPJy'K?r 5g* ]>yv}]?/~W!J\hKHڰ߇A?~t"p7JHtO]S_,M~ez?]uThhfϫ?}YNhv>~'d?]qapܞrK}Ѳ)߉_Eջ]n3ceFO;T0r+SZ(l: g[Caḃ/-jkRGiQ}W3%UJAv5NƏ@zoSe- ΤOFz릉 ÇEc^+xmZBzl/Ln鵐7(Cko>ǤopCϓޡEM0ևfg#]]M4G>c{tּ~={^mmCHHO^VOȢ‰ukV)HF8@>q=6H9hv>pv>_pvkJ5vpܖV #Y8ի~_O?W-O?}\?/>k P^蔎쟿|ɟ_WlO_c.`'\#0?]G8~:0m`c>k94\6Ŏ=ߞs_uz?]/<vNr1Dh9Cxfr dbU}#㿭A׬Zg^ݘv7^o}t$N=5_/&U]U_*@=d̿l`-9m|d ay7dqj尫ZvH/z=5_Z|$kO#e(SБWf]>i, ID|_67wѵb"""""""""""""""""""q>VEꍰ^e zh8_ ^WCr( +PunϾjsexEl1ֹt,37,[qE5-,QJف{tz=UG0[ịⒺ@{*)gvY:$FŻ:]kY>G}FG5ϓuUYv* p.2cP\o[ixm\NÖıJ7+C;fhlD+5s +G[פ?mʒ^Rz(>Lp _Ҭf \b/$YќLl&%쭬gl2A -2,ʀs>`G ]InN!dRUo ]ߠPhfvf$y8fP˿eĶڗV:ޗc>ɞS mh0t ǖrq / +7/}Vv_<3w˱fAaϋLtk,`K3rI?3HOaha؎IhΫ!b噎 _'Y#@=@tFRGI؈,:",P066u>"""rO¸9+)ڰ#Nu42ڹe*ciU@`o~}7R.7ⲰM9UzξS1Oҵ,[Z@A^ҞoBux mv e=;M\3%rl# 0דug akڄYGryC:@XxX6zI;fbvX2f°~%ܼuvq0X/s)bqQ#߃Vn첶Q7*Ch/Ǯ.B!JXU#EyGC A>inUm;6[QW:xw5<܈41vzyMb &&,K/[}|Y-Xcf\s 3 |jl\Zµ/N=$'U5<Xh|c0FI[i&ĩT i:=TDDDDDҵb"""""""""""""""""""""""""""& sf54JmD`kfϐh|?*KtcW P)!F@:w3 S/2[ijP*Mu>v~YLYðrrk^fWUI7E`u{ޫZ 5zGfu"ĥlY I=°ٞ +䢵yE +6{ /b%iJ2^(چj]yX|ڕNc"Y_uC3&wjG)NEB h;t=N _K{WG}-;dm$%|6Xs2Z`cE=jn_ C,vY%fۙ=h;oӪ]eO^X,Q_lrc|ZPgk_řIz}Ƥ۔ˎgΎ*sI|\uĩ*ADU"Лb"""""ӵb"""""""""""""""""""""""""""&'%ۋKwfH7_=^IeTl@l#hLNŨ6 Y +ebN#*aK1?!~{zON4sq>UYbԯ6167?Vr?~?]9]WլֱZ//S6zI/8N'CRĩڲy1ɶ\,CuGza툈/X @#``6Us#vlDDDDDDDDDDDDm qR`z6amkOGB:"""""""E`aݓٹjE{5=Xv+Եb"""""""""""""""""""bf""""'ڵ뙀ld,nGfU`JlllyOw>ReOZ2tQ91}!z +F]|c_hgs#fSz[Wv*T ;]ib$lC}NQյb"""""""""""""""""""EKV_iM VVtGPD?R.w/-a&|)nM֋sҁ(`vG]NQ6zIZŚ؊]~fr:B +GC98X؎ȩYn`蠏yUDZrj8bc\ oA}bqrleje6667tҜj./M#X>؟o8ŲV)9mMw'ư)Y}LUoם +Tc7|lq)cWAUAHPu>xB]_QeKz!մA&v'r5YS( k(^{u|ݏ&6SsrkX'JCG[zT}"~ \?0$[дUy[T +zz u:0y[P,tmsa= "MZ*(O$u&hh(*[9܌H@ug;aUɽ+,6l ¿Sq$q+ʭm+ ɕWySzbH~CБކ&NeNnE{l.2O+aK+ 뿷S?U?νnBez_<;,Օ\7b}O$p3Zokc{38$t<ә27 \CS[c:neW_9'1ֵb"""""""""""""""""""FAk.Joc=6*!v%{њk|\PUn>=HKk;¶t/чͫ"_Ͷy=Ptz{늞wm}{:P#`=?U.nT}u믐Nk϶%ı1_iKMaFbl(iCu:Ʒ+ +!kK)T(r)+ԅ:-)|ZQm`k!^~2pcKsd|Wg)z O]o}7=)|CDUzVS"ppz)}ϓuCbX76#Fo^%qF\ILCKLn'0g~1d|b]VCsu{gm\:&ۨɮ̕eT0eJ +tXk{uE"hzA,_К7&N<\c/58*z}}}G's3W̋VX==&eX+MVF.`f[c?QM-9XJSU 9fzrWA¦sq0 rC툈׵b"""""""""""""""""""""$~G#2eʁTPuֺߟNN+u^UccC-}N9%'"MvË[ZUeSkzt:7 sQǐ}Ήеb""""""""""""""""""""cs1131DDDLnf"""""""""""""""""""""""""""ѵb"""""""""""""""""""hk֗8ʍf(rU ߙ|J||=OQӏzHMqƨ u#}̐C?qLQR+T}'w'o[W멹zWU )/R_a͞e./=:fcߙ]rK@ J: G/Mnc>ƛNGd66sGqU|.2PYVpgO 4eBHJs<܁tHߔۙ10%*1 z; &'"į!W2$ugF=U}~UW]]g+wN`yA$y;1.cUj AGnli~|7E}al9[٦ގ'[+QM,2QԐva̮!F(::A|ONJ%F^v&e9ՋhlSYHaӸx>rb-yvq,BٮMm.u<_ V78ӝo@/ScgR*<,)'vqLlUIh> B*;}:qk˭mã )#f!GP~a98_S MT|驫ѲoomU^*\_D{IU=)ɶl +WABVߜ8wSh8y[WU*4@|Sh[&M:y^<7JA<6 +X;dq}x=)g:V1Wn:x6Y@{G$ӏkf@95ת@ʎyl 8*MG!{uҵb"""""""""""""""""""|]rcYcU,NL,UkwWvr~71Pyrw-G'b[bJ^f 3ӊbӕX`֮ 0o)xƲo@|¨#SJWel@^{ƻ;~qlkվʯŕT#lO ͮl[@dyFTP};{ĎLL~tP,nu2όz7ד&G?+l,*i<"âͅVU6}@:yKrp,2 rUAl<_?ͫZ +ēX)y:zs*#V|=\rz4BpЈB\9./0/m4caPbƨT' +r#Iz^aN~'gM ӿrًs^σxPiZl14Ӎeif- YzUmok9[SvSD?DVts=@o>Y`vKr%*v:@.@JE kuY'{|"c:w Kn vXڐF€GO1 9|SW9X $-lͧ6MԩR2󶓛K u?$ExAl窝 c=RzmYUfdpk@CrP+w +]u']74zIMT,;ZSZ SX@ ؍sh:#LEAjU[|WE|Kny@+׸ŷB( vӵb"""""""""""""""""""a0џ"t c jfhlq ^q66 4F=D֨9T=h}])H(QJ7>,Ʈs)P7l5wMO+$Id'Pի&B{qaQ÷@r %AQц\i EjֆAϛ(ѧP{2-L:>ֶ ~IvjՎ(@@ 7.塨Zt]ʠA4='ȥ +5C[4=ƆʢhkJ`>1j^ZPl*=I>y$gȡ˅ǡmc&ǭ]K.F|5ԵTG^> R$ I_lP@g{φw>Cϼφ;UB1Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb"""""""""""""""""""""""""""""""""""p 1Jhŵ)o rPǘ7g 1!1`UJVSDꈈֵb""""""""""""""""""""""""""""""""""jLZ*'@ !>Cֿ~P /QfB}N'*¼_g˩-NAĮ |D,S1<:zEz1TǙD""'b69w1#ņr!A׺px|=ek}&"""""""""""""""""""""׵b""""""""""""""""""""""""""""""""""`635ҫ޴񛉭(aұZo2 ټC'bֻg[f&My}Gib+)at}a:vsY؄TO7Y>ܻގYA`3ҌlEXy^_~~bbN3cZkb:*Hͳ ,<Йs3NUJm*k rPz߬@󑾉`_^>.Be:`ĂdOp`Ԏ}еb""""""""""""""""""""""""""""""""""jLJ7ʣgJ}A';Vvn>0?g{[8<[3-%P 4ߔ-gTgQ{ot0g^69)RkUzώ4wC41If+V*ضFJl{:S ½ Klc^{UXNAEȮ7#r}&ĵ{%V٭w"뿆Dz/-ɾӯcYoDXtΜìfFʬPI' ndz׳'@ ]<;2Pˆ,g?ɭI\Lw;4fjp%i$oԦ}wE#搼ErL{Cs잕[<>VUͥR(tH F8j%/64ǡ[+&Rv]#{mhwQѵb""""""""""""""""""""""""""""""""""''TZ@mT2Ā'6#%ojT 7P|PO%&K-"6'9g¿ DҊ Tzs\Kjjk JsV=e߯>8631bֈNF +su ƾIg5dŗ.&vH-`iYZ+6-`( :ii%>]mOrk^\ ߚrkM`ӯU$M-8q/m%b0PAG1_[b涺PI͍ǬWx tu$!d4v:M \{Yw*A@^I볽hr,!1졵/&dno 7d־*?.>dyC +Q)e /^bU@Ԝb$A7>|*[#!ue;"aNF=%v20ラ@Nҵb""""""""""""""""""""""""""""""""""'Xpx7z=7ӓwIGs;:'+잂""""Fg\=hWɵyT(ߗ3y*=Ynba{*H6>Ɣw$¿ +XBhk;=I&HDNL|? _bծa(OQymWvU+<`G}#dg33XK%R~"jɻY`Rܨʣlt7+'֙*Ǯ^p$vP2_l|3e勨ZGTiltdJU@$Nzwqӵb""""""""""""""""""""""""""""""""""'6TjmH ee;V :3^' +,Z]KBP.Oy!|nȼr\]#=o X"H^bǙؓܖbIgdDN^!êHfWN;2SF/e6Z +^$b"$noϽ2-ky c(B:::h jf""""""""""""""""""""" Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb"""""""""""""""""""""&o 9]u3eX&aSϺKw胣맸ϸeRb:3 s15YUGU>b:K0'"`&b""`;DF]9%7+`O뱟OUGL0TؤFms11b"&JFXlL wֵb"""""""""""""""""""jɤV$|daDuzgr(`(zg'/à5ۿ=>_X{tDP3s;=U?Fu.%N4v-Rscٯ #t~h݃FCb_I_ud./}bl㙖p .yMpgTdo8 ZEiǩn$kJ +F=W'ڱqAw+$s]g]t;*WKs%O5}xtvMHZ|/x-4jf9Bk\ ݂ *6I$4N3SU[V!⫨C'/+e|uu|zG&qRuash@jr1mF##ÆPyH, +GO9oƯ v릧nR9l%ri3:1kcm,,֔u6;W=IfFMvZ#뛙Y` ~w:$;yErAy9Id5|wk/ʳtPE`=n"] fm=dON:1RtaƬERtgue&\J|gP|@* AlΞĪⴋYOFWSR=\G +*ǭ<[ R`31*=YI8&~-[V++m8!̧GN._r11 %UC5cB|FEW9xޥVm*|]hyμ;e9F3\i,[drlg?x9XTod [وS? eV_//)#O}^2=fhñ *HaA1׵b"""""""""""""""""""kƪdBB'ٶ op%2.`"O  ׿Sہ3.9Ue-!JwPjdzO2/|J+F;9(@3HއAr{>[RsT;@|~U U6uL4d +3bSlib]Trנ[3xoUNtfM#]wތߙAł!QH Co:={5q*#)k~$꯬ޯNzjw7Yܭm n ) F"T ۩HxW \v6cۊɠ(#D^mzoS6z>1sr̔ȴX9 PFpq]AU" "eq hDZױ5kPͲz>Y:l  +%=bF6C#Yw'jK]c2 ,ňGFRE4 (Pr5|eyQ#YrB#1#ˠ&##Ǯb?|2) ՉMyo|Av2Wm@:%aUN*c`1-)[֜9OIǸ$)2TߒbO::R=&.FZ|(_/`ˣچ#|}Dzm"ŮLE__ʥT޹c.-96=-8c{yy9|7tOM>śM\J M!YVz죔G_BVQuNI] }Żgf`(]g.nM8I,As8WpElUW2Ue zMpjSҚїaUB`bd#Iͪ*FIN,GT7GbHМoeb*4Qbjؽè$lz{=̻-gAunetnGS=SNw |N5 -$lǘl <3]YM0!K!#MoI!NvEc[1Nr4#RD|y^*nKdteo =F.W5ј-cYKI3hʹ|vQg#0R@u@,rKVyԉ +ǩ*uC&nEMeSr+qVo.Qc~ɾ 7 U(~P=d_ͫ3,6V`z["2.^U–LφP2صvQB=;NGm>\K +~!O MʳV^bA#ׅ,%5nf*Hց=xJpk1ڶ4US΍HU,bH^w;30rqs#gnpm}lh9Y.e'&UlXhֈ Ӡ7iz[`v}G^Ԗʷd]: 9uꓳ^ʣ?u Z_r=l]akZbA=еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb"""""""""""""""""""""""""""""""""""'wጫ]EpX|[.=WGV#θOX:$NqofFm\3& ۏSClrB(eW]}]27lYd +4$DoG]!xFvUC?V ^^Tz7rOS&MDDDDDDDDDDDDDDDDDDDDDDӵb"""""""""""""""""""""""""""""""""""$Ǧ!6M9P}FϿD v{yIV>@ԚrkưC#(,t *t:FeY# +3WB GVFMxl{<]eIb*kܫkAgbNN!gL!O ?-GZԵb"""""""""""""""""""""""""""""""""""& +=a+:~7bqlUQmc:rUfΠ1Fwє$'9Y(,A:ɞ"`Ƶ3#l7m-paӨZ$f +0)|`:(AӷAr?Y}DJR@ 50Ψ6:$ + 1 +zDDDDDDDDDDDDDDDDDDDյb"""""""""""""""""""""""""""""""""""$]zvI'{ >xg ˓cڰuTW ˭}:j_͘xsYeT˴E?nte^ճoaS\ǯ1_E95_e~.^Eġ^[T!k^3G}kb+ p}jpu~VHbaӃXzUgfp~oo֬U9Anbu +;f ]ZRTYIAVGW#ګXh؉3뛂yK_Ϯmk:Nqqj(B"(UQ41]1ױlI1vM*l& B}fގyΨֵb"""""""""""""""""""""""""""""""""""'wCNWM>K$g5x5(ܐ7DDDD|*1bᱮP!e; ȏF8m= +qBTM+5=/<7MJV-&IB@ f`fFGV5jZCrQFn"f]Jq!azUqy,MX| LDDDDDDDDDDDDDDDDDDDDD@׵b"""""""""""""""""""""""""""""""""""$wd9T& [eAwʬPg/D>G4d*ov,w[NDDDH3e;b* A]h>sp,)JTady0̭<'ej+$o'?5g**tfݘA>y;0d_ߝeDD߽Lеb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ѵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ҵb"""""""""""| y0($L#H AAQ5zc{*I<ӵb""""""""""'˸K1}üu9\Nlާ˔}3X)*::rA1JH7:sjC:ɩU+/ K*3EmRxOgu#pLFx['9HB@gwM5czMV-79akw<Q⣆v@}{VO2w r[@tH^b;1^zN^oUZ6 歑O6u NDDDDDDDDDDDDDDDԵb""""""""""&Jz-V=^p,|̻+z55]}xc lGd'EaKoPol{x>/E\ŊX+˾R6@ՊZg K$wy56bdQc)d<઀=砘\>J^V,p;P|_9#0CsFKPOI`IνHGtDDDDDDDDDDDDDDDDDDDO; ķ&ýur7U^g^bX\M|E-~TԀ>i8&/B5WC޷zq#cb:Wuգ?VpϬ0WR޶oٳE^5"נy{zǧYVZ *uu=X0?8׮nu:0k~ٶ""""""""""" յb""""""""""&|r'WrAu<qRC#°`CñSdDDDDDDDDDDDDDH;Įτ* k'MJ?!8o5%R jl s[喙""rAq/! >nL.>~Dqq_2[Q嶗V=:Ihřʰ\:jzuHEmK zߨXړ"XY꺐s[a*dzK8G݊ˬ۸mƨIz7>3! øK1I<|8d>G؏"+{Ildĩ*iTh33lDDDDDwf $>dիr,a4)pOiSn>D~U M\ o?( Ed(=(WZĸn2@r}M}dDDDDO>+|Gz3K_Q$pLKr:ZzcT{![aM~ܾW5:zyĸv?dz%L}y̿ϨyY +ùWAަ?OГC.IaG- EcrMT(yLDDDDLOl> .d#v/PSJcZU*szKoᗎ5Gݵo3p%GƯ+v<= 눈é)fc6L Jt!?El['!u)]X`|-6z1s3l-'+oNz{U>-T-aO+i( M8~s𺘌JcѱQ@#oz|zkZP`<&Ŭ}z- ;z>)؁Gc:b""""" ѵb"""""""""""D?xTC0}iq^FŮW~K=YDDDDBGz3KWQ$eeIì>̍og _n7E-ɑK ql^=_?^AuKS)Ӯ^%"""""@aƭ8y9 +h_ǷB" _¯;yWc'y } vz==׉GgH<P ~cG`t֥ e.C3pqW»΄:x=dw^l°Uv7ORq垆"""""$fsd\ª̻^a{N^2fk/cuv?)0Fތ{8a鍖_b{ """"" ҵb"""""""""""D/xTxE\. NAG3j8j}b"DzU񗣕˯O=_W}9rZ=WL~i!Fy鿘u 5kwf̐<0GSjy(OK垺"""""""""yI'jFVOCCz538߸p긶- H_A6A'# +ÏnF]OI.#XliseiNN"uOYWo%<[o/rn udԵb"""""""""""Ep/>uX\9 +6O4U1ng0%:""$O<tr՟e!DO9hXKA,OUܙwo 痋rTT{X +>rD_n*nl;4#spzr* Tjǭ=X3>ʽ7:fFYb""yNxUGhuȧ]{ĕN3N]Gն!(='lN>-ضZZ0@ k}N."䚑>U+a#=vukٹ5r9Ңcl=|x.*JԿGYqKp 숞G}!Nz kN WD|MO Nb|"~nzȈc[%@x_kSBzhc=k[|cc%IMcJhme-"vDHKxA|61bz~wє>3 ;iף{8ߗoŪof:~YV쎷;dZO~kBzԷ#){A3 s`Wa\B{Z%=}sF]RclKy$y+*^Wkٰ(*#.;""" ֵb""'v{avC׼o~_iv>J]~'R#G!~F㕼<+qGZmet_`OMjc_ҏސ~{?_\{뇏~!u~}qq6WO6^=y<2]*[MuN%]S}[?/o~_ivEpN8fr? r@Z]uפo~_iv>Z]wLzrEJꅹ\S?]~~ Q8,J>} @u(e(߈l]f:Y.SHgsuMۼcd~'d4~Vr?~?]~zGnM8Rid qz~{Vdu Yܮ=)];L⸼0)ɵk H^c_*W +9W}tÔ\LtpÔ\O;ƫ/*9AϜoأmjmӵy߹;?;cO!?~a> /Yߘ.G7)`~t}\;o˧ͿG23ǻ)8&5y*/ijBֽyc¿ _ 9W뫄?]\+_¿Sq3¿Sq]+?' J]ADxF+ixcM6PVn~>~ocHkSrG^;>8kWBx׵@(G\(O~Z>Oʿ-3¿Ua]<+??]+?¿Sq\+?/spÔh<Ǧw.+]c]茬Mk~]ؽvp؝81z4B sSfYtKݕ2=g|{q.[t<鿔 !9s7 UlV@'*%Xe:cc5ʼ+ӗxO+s?r~`NsŎsO)K1.™__Gܽÿ +~QUr -g^vU9XoŲX]Ux8տ6ֱ(azϮoS]<3>g/>5d0 '(_OGW +7_]|+_7OExeJZLBU*4鮀l뒿r e~`U3*VWUּy?[֙ͣ؉ա||bNl#zt"`~d}ȼ?љҏZr:RI}&l<4WIWk(X/U&OV=(xW 0oҏe~(ҏjQ¿ _ +7W믄zC⸼W~zތ`.ume@름B O+3<^d+.Nrdr`_`&h!lp^*뙉ؚw͋j[[=ArqL^ȵS``zy 3w r;~Q%DDZN!~@rII\VAkkHN_3HDћ3(ĭz޹۟X{E]t5""""""$WwIۥEf=9yvصb vTPlDDD@еb""""$~VNmlE`oӕHI7+AG'PIROM{$Ǣ1u] ^FBJ qZUŽ^10Nx IemR9@Nmc6 A(<ҡAk tg'+2.Jmr5mwӧS_ +8` +]Zb;bF^;4d7_[h{AGfXqȡ;:>[-[.2nN[-QQʯlyDDDⶳBU洵Zϗimdms*VaۙA2@$+%5\7 eŠF"/6=4v.Ø{u^/3>\K`=ƸXc#d# h'W}A!x})W ͺjQMyֵf(>!s+T +!g̿?,(:3QέmBc#SFe߾pebC!,EӟF;uq,rk.P7<i UCqтtvy~/_'C:>2nz+fJ)PO_"*U'ET{-@ks V .aԓޯS&19J'-*[EuWOubܮ%QzԈ5^aŎ IT^7^W.rлK=UffpD^cu=p31 }!:W$R[ڭlr3;zP=Lfģ'#|ٕȀWڼ* dUk_{ٓfDzI~V=[kAXC'>YCۓuʾv2ܝl3ѵb""""&588.U5#9yN~ynnl*^֦ 1nRvW~fBzRTriKsC +7= Y`A*<޽}6l;jiRfϿsg OIMv.mX%}>0>rVuESdDDDDMv]ܼ`0F5bSC֊v1g盢""`a4aQ(+RI!('tDDDDt)V )aPNjו(ڃ""'>G`Q] u+E5T!@SoS5)Mj1 +Af;'3tDDOiKѫC+ +H{X?kEmUh|u7j6Z:t:"""""cR;#i y݄k];IS39{\:>#ʼngd6o8oX4鳣;Sfv3(RZ,:zuI9x6/*oBHvms)*Flv%kZPvQEu_mw:s1MNl'Lu=:D8VNCeYpGbG6mjL4֠cU=hyόÚ械 ztOOuDDDDDDDDDDDҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb""""""bxQ,s@:ٯ_d.L2}T̨lOEr2s;j֚R@G靶zGjNv˨.pǴoMa/e +@ueU\uVSIF]:w(]J}/H=X܅:oɫ26NGV_cuA;|.g+k9^?F-뵑]-nReG;qFexNvGG\}t{ɘ7cXY +Hd<5׹xoB(%TU<RZJf7qjd.2sRt4 _zı{s1Q}&i9 ^B31p[h6]3E5dW[jԎ/ǰ+\ɬP'dt?(Xg 2梜^fEpXn_ O^Noxn yNxbBA33)۩(<X˺ȵ,Q d_N}= )ѓ̧L=gk~!r&&GS_X&p^'^Fk** u֎^Fלp{kMta={͋k_;Y ^n?F-!>kOH8}5hA=pǫ&0EpX=Kd(e~F=yr ױ; yL9HZFg`67/yVQîS+:_,g?qTfr-}gJ=>MO_յb""""""bV9pܯK1lq9o`uצp*8tTūO~_/+ 'pyCp/Ecpl U +:u^=XeR1+6*$)=Cq5q2l\p  bb=|?*+?kO]vq6Y^O 2X׭Z )}X2W5fI~b]EAo )}y9UaTQ7ӹ7 'l6Re=y븛s~#il}VVw5;_#?'VƠBGO""""""""""""""''ʫ׹3dh la \Ւ-~E|=BtAib+9ݝUP΁|W6CƭV{vjjU#t#zI/B2򳮫.ȵmtEdTrP1qTVd7+6m]d}bcEͿ-  ^]^`#{Y8 ۄG- Sw^|7Kq8Pn}],eVcQCgyuv78\ʝ؁`{5%KqnSdW +9s $6)8>ˊIDrmvY52yvQ5}xXUFXz#pDPfhj,e! +y&)|lkT{ِI'ȫp -ef]*`Q}ak>RClĸVg)# VHT-KZu7pLgC$fz UW]|k!1}B;6e &Sz-èvck^-/ QU~ózZ亣P7w$%lrY}~=IzV=@^|_+2FJV +]gTtՏ(SȞsz@Ê$V2s -jVm,8ֵb""""""'Ԋ@zhk}9㘖5~"οhoYd|v|ey +@ s1 +NSXe +Att2C(a5 ƈ{xkt6C R?P~P DDDDDDDDDDDDDD(nAӴh ˧:Tް1}Wb5VZ_?'lNLV 6;u' 6뮽"cBf""""""""""""""""""`zFqn xYَɵ+N؂ݓmlqڵ s2%3ɢH1׵b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb"""""""""""""""""""&67`|&Cfjʧ XW3zEZ;$Yu0-jA>&75bS\e%H 2#sd,\6BT穚[ɩUu$۝b|`Is f""|u&GY@3F/jYokcco4u\-lP a+S|D0+DMY5b{\"lu;c*]]z2.mLjܻO,,t&A35_V*ꋰ6u}`oi4>uZ=>P t<7OPH$W.)TÜؕ>YIϔ+`u""" ѵb"""""""""""""""""""|]Pz`A*z4I!Qܓܟ9]Y?^W跫=  [x%-͏FVmGv,sWF ;lv=V%7%zуc肠 8/N8-V hnKҐOrZ;bV>BVk:AkcCR%n[%OM #@?/98aa]M c*uFӼcdvahBu׶qvs|5(9 Jk|=|@{uu=;z+~5* B޺w95xBQeuȮB]zIl:"C"cD:8WCF^[i~K70Ձr!Jx{0޸.9|S;⯑[T1y9X65cWYWnn}ڨOK5GdHSA8*>+ܤhuN*$g3ƶ䲰|rtџ?+TEraCs2~m93fM+e #LGqtrkeUQ@;bA"=";q0u5Y]ꄮ PT?tJX;UW1P6yT7FYs> 5. p# =ۑGٴz|γM5aّjzN9m"Mo%UkyTN/cKzȊ@;Qdl֕nבa讈:nsp5񰊵9G1`{{zM2)M(ARĕ=`:-SݑMhP+fo io]<>p¢o +I $ww+SNG*7tt|A酷G +V,x<@̵XTTx>DvDQ5qֱSzYy@,_+!݂2V@ԍ',Ph~`G\$*<0 Rcƾ֮R@-_](q3J\][G'[t[8Vq>R^K)mҠ&E >'9^rwkjX o^C l4E_eF֮k7)-dQLH UfxJVe*X2AњO^-b^SV`6 (`@wv+möUuģԨH='ϖ`[ܮ۰LU/.:Αۓ]*ʭt1r G>يEq*bے΅ԝ.׷Qr;ܪ [ m|H|1>c/mҨ^mI,>%s&V4QP +Bۦ>]mTUB97)frKSb[#{= l1Q]@:dDDҵb"""""""""""""""""""k/3H] O'g9ES)i^Qz' $ԲH4"zkI=(ͿeNDJTͯxCCC^S-JԜ-:w +'p(8U| Ed m{zC%p\._W :pqѾF9@ŊxlXT*=Imtcl,|°\0>%fF|oxwcVJ"pז=_[Fsz9,*ʥQ]TwᾏkES-^,~]lՁH.ó8vEԀ<ͷ Xle{U"q8oMa,=bߞMmY6㥯F1)k޶:t<&ZN*@=AįB~N^+"bҬyf& dT28 [_ჅZ6K^hֺۄ2k=w;rjTfR- +vYYOЎ{v7 4q,f|B-9o5J2sxURjKU,6XÿAg Җُh*UV;. qnxsӍU&k!*TurX!(龦zJAe>c{ 7!VeSl\Pp/a=9ORf7EaVW-[+[Е/G]YBcc92i*-d7&X }vKi԰ǵVoGdSN_ߘqS-r05c2:h{ό~QZ(ɣT8PG.v:W`Yq T*ǩ +Wpwc鮻k < +'gS]h;u''(E2]:_c`>c`ؿ:٣1߷H\,#, CPxԌʪJn 3)<Fߖ:&j]u(|O ppրvE(PǛ~O:.Vp¿o9 JeVU!tGp3EQverDk=_n%^Ì{Aih>_i}ӏ meU`Ӑ e7 Zs޶vSS,)-,|g98'0"e(4G,ǤxYyw`YZMcdzy:UCeV+ hmnG}D ø;W_vCW=]ZF^ӯߟ2yK-(׫[W:M;+[ k{(=em]6zS?f6 ++1@;|^p+V'NI`5s2z긷A[oE2&SbfJ,uE +ߤY8ٹXUɲ]8bN5oVs]W7/:]zFbpL񩢑E\JȮ9X RA,]YO|C#p |՚|-I9yN<,yEdkYm_3 Q>lgb5kN%Rʟ**Hֵf,yDL{ݟw+1QM6}Jed6vE6ֺZ:{Nv|BqK+daa<+a.fK+e;~l?#1F:'-uşr+t ^"rO1X).,u͉e +KH&ߣxug[ߜq:qOkY7sY5Aހ=zvwp8zQoQf.W! @;}pC#%kUZyB1f^JhO]#rrц"ma[7ֽݾ{8x<=Ve\MP'^n]v#ZЕ .&P r]7P8(z>@'&[͋QSZT׮MIj #6D@ӵb"""""""""""""""""""&"f|[~B TQLBf.u@6XoogGXQ313M9XfkCAf^=Vm{NשDƣQDLj531luhlDDj5\7-aۙu>s"cQ#~??˶}I8Եb"""""""""""""""""""qDkglDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDյb"""""""""""""""""""qqk02Q5*YJv&EjŻ X>_3c]i&7^-X(sl - /g`-5q/?{ַr[]& ןk]cקi#ɪN:`g'w\;F@Vm5F0ʥ_uw`69dFUA: |xmhRqb*!I0S_g7'&~YW h Uuk̗/:*#Ƹi\L[ ub +P;z :vu(]:EzAsd`T{rYB>60מĢxՖj:(2;1U 5Fљ5r2|$'5HdeCmd8mE+VPA׻1֜[Il +/.XT뗱=~7?2zrjF5oX+VDGsxSnOZUWd](uq3-2Xk]JMwЎr+]cWaxIz1<༘6qY![EPU`:< vɦۼ^\[<`*XOMM_Xnw$x*'c-j=)Z]\ʉg9>_/NXu_ +깧ǷRWuuJpX\C?u>~n:u:ZmPA=氼''!Yj-[22T. I·CP-^^QClM)pnb2X>YzG\su{=1Rz9eO?I03wV#eFU1z~Ɋ=$jKsK2Kީ:QoŶTdX \'@jv}YAi*ÿ +rޛ}3g*@WjEz$oٱo3[2x%wdX \KK61ש':>;XfcZسA7vzIK_e";##FÀ6VǤs5F=uSqS|б|rchkQuqLzr*fo$TO3 :S5{rq>+=cdVʬ+S}S'Yٝ18]MUV(Yjm׷y.5]Z,S[&7a'*WcUB<۠zu^crxIEdS2s; 욭ͯA61+^{ !KC[ $GlQ,Gy9{o. ՜PWK)dyX+o`:3:= w'[/qL3U#@ӓؗ˘Z[ᓾQCN3!tC ߤRczWևO#9-e= חZ$=p2(ydX̍Y,z9vlH2mENV{oҞ{[<7X{)zo%yz/l>~nMs~}>r.!1b**-eB^v}1 ,< *J9T3( +RI|%u)(_P=՞bT|VnM! +_#G@z'վcRc"Y᳭l)N9Z7{l)ּ˽sߴ܎#kqE>"`FakHp|z*lEYΤk?U7{Rrr/{9Vzs7s:`9aU(;n$7%mmO݂Sߖk/Uzt7+(ttuHV,`G[ֽǯNRεﯬGnHY"êk&ԮE,v|>fn^p=aoR’=5^\?%5iq_ZJ l|ٛp/ [72hGr1=,JOWk"YZ˷d>{MLDDеb"""""""""""""""""""qq mP#27 +u`l$f ɮ`.$u2s9~)kUގMw(fGzCzSz=ʠI%@Ekb*iJ* /R:ܧUh uL!^벻穬NP:z7x-_nU7եoi*QK 'bM@#~iqn!wBXʥ9Hnd`̺#{_|SYU3(,^UV#zh͘9t%u #+uב#r'x%3Uk !d[ +|w'ׇ0xau.Ay}8iIJ[^121𓐵}zS@OѹnG2zՃ3)KT"jϯ?bfbW3VKUPX-VjOUەv:w{/f'DZ/) iTUμϤ^}] 3zGı|4 +.=tԲ1'28m1EeR `}̚pxwT`O]NNÓŭ*F.` J=u96A~XЯVYQG< Yc % e]w#cy +? =MXié\_.้}rZJnPվPJA#I-r*kzk(D]SlNmT!.UǧFLmUZs] O9tE$4짘~257acG`wt|*㖳r*@UyoZ:{-Zbo r): hI9t>CqQTV/YkUf=y?Ev'ºj!}(Q6VDjvb5v^Q MؔX~(dw,!#';_PgLszPb:{@ߜ췍c[…e+8vTfTcI@@<swFQ:0ì葮ggvݏBVY:'F8u8 M5,1HZkmV^INCrh$ѵa!UX'={^lυmjK\ۃ>i 'ceH'*@V ވRn~bVU ~ua[0'hdPmkd! o@pJQxVCYKCɲ}:=u* SuT X0:)؞{^ ų22%Y +?u #^qxp<@[Jr1nNtTrvʫVW^{t=dG3*Vsy*OOsqeeO=/5D.κuWW$u^zM5055vs5`TVv`R$.NىI3|@#FN^)ëcXX+ S >q8r8>__2ޞdbQG~F b3n5FozFQLFƦeF$o_1 ^"ui t:Lj"fcB5ҵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ӵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Եb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" յb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ֵb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ׵b""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" еb""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +endstream endobj 58 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 20/Tabs/S/Type/Page>> endobj 59 0 obj <>stream +HWۊz ӓ.̛1# +{gFfFFjDzjj2n'N8?MMoao]LR-x/U&v~~o?~H9*;!U;r}JkYK+0da,ܟq> agnuG~f'd0;w'.ϳ]0 N`Hcg OP\>zgV8K3ܝކBFI{D/1T1_kܙ5|z@iwK +>Gz]RZby8kՂȇ9P\_>Awfm113yotE{UGM5,O ec 0& =AP@[0DdfSz2 _:ꌘC6O:tM) 7=tHp2=ew8t}"t~Ea}XQ=hj`T)&FbLg>"7q%T$^cb"-&E^ +roeBh8C? ,#mQrQC<5*cT꒻/4PbJ䔲d/[ɷaOO!/2fl &y(^ A]A2훐j\,왲d͂0H֫ r%@7Ogg~C>#kCcvRҵ,Tt>Oҝ0p%b52 (ro) {]Tkr/Qڦ5v$sp]Ag>Р,]Comԙ{^Z eUJ`dL)iIȨL c ∐8YO@:4' lt/t"Ru M21Rӂ&YԈF +хβvj7WXHDWy6Sc `n?f6 xFl~+lJb1CAks&zR%6Rkq# XU\!f6}7VcP/ bKtN[|zk0i&I 6ތ=9 j_C.n\L>vs%O5bWdK JƖpl2Y +Ϊ\"T&Iz$XsE W[W1ta30YA &/n?KNl쟽 ɇemȚʥ\CB u ~4$C3զXP5'[4xUSA TԳ+N4SWʛINի'V⬪ -?#Y;/`Az{(=r՝$kBi6Y7dΞW-b:$u#FuF $\XR(,u6p6R/jiI˖1[?O9XX8i u\/QaO;V<,g%m"o "AI7dC$LSq7 籫*IT׬ȦٝY ^nYHqg%Frn,~{fpt&+". +m2%6ΟVbYأqwsVn!6J @ifY1>b m}]M'VPi-j7 r&lMpڗUB#rt5Z܊sF+F#|lfB)wزQ"C *PHWbiԋX9B&AvOOs&KT7 +P)E%޲E4EĽg/'m KξC2ve;z2 +DIf=)Up MgU”qތ\}b`Ke}#\WgcWyZXcb3ue{ScWl8u+o @3:?hDB(,ՒNjwk !0xWL7=t#;ꄜ`_|' !Re!|/8) 4qrHq83$"#]o<<~rLj2y7%57@gRΥo96ftuF| +X$l)qc)$=nt Glҿ|/]zd] Xy{C ZKe1x{ @SUhrsX /$9q|{s-߫RCf>L2^;#i&+=bFAsprv8ZϰdXO/diq;z>^ݑv!r^Z93ϓܓ22 8(aPZm}nc4dwh i)0eOtmzy 3d;"zLƚX䊌TKXp#f]p\EPr`o RdݑY@\a)SF4{I!sB NsL3& SK͌NMұ&*R dYx;NˎK<(um$.0κvhb&!Ko[wj1kE!gvwY0H}R*ZmX:t63amNW\q*cҕGP9/ɹT($*yQ`/{ ]E*$ MaEp%2ziBA"΂wkl +?")Hd-4| 餴YF7<ʊaÕq Zpv\EQ)hDLXxXMD;ҴLDӅG\ÂK$qbB#k:yG +_63ճOX?5a7XiKD6l'ޘ2j<[t45_ʖChVSuS]k<0WO8Ǔ +[xf<PXb=F@XM+ljG;}E=cIm7%%Գ:W@+qel+r~ɉl&9L%Zpt2Fy^R+QEsoJѵ)m|s ?#DGs^%z˧`jmC:l?7n  td[e-#Co*:&_^p9[D|N QlԵG%Ex TiLyj%Cٙ_-_: "Żҹ AkOXڧ׎gIcf^a.b?p5o_멃r2UAP͘XQGȄv7sX(\Dy@3A W6{ >|#",5\Oxeg DGs&[B'#zV-T^\[Ab#5xgb/r×4n +ve=28V0aG-,9%rԖoc͚X5M"T aчKIE<}=v z|$Q-B*~HEq9^z(^!;j8$bp$Dt̬Q7 Sa9fQeA?^>?}| >Sӟ/_^^f 38;jm`a5 Y\j I˓,/_:vO״2 +endstream endobj 60 0 obj <>/Filter/FlateDecode/Length 716>>stream +x]j@s]ۃ`vcO >u{N ,dw_i!-1$!Fόw]{Otn>ݮo1/N|[CW=]vZpves}IɷI}-?Z?{YE٤p/I^kiX.f&ݺ15j-v-6bp~UIIrɓT<)j)4%EҌ4%-I3Ҋ$Ik҆!=I[6'W9|08|08|08|08|J>ԪSO:>O.O OS)|J?_/|_'"> <|}~5}}Hĝɮ$A"A}~M_<>z<u5>5k|QOC=dN6&$R3?^c~¤Q[Q.oTjYu|bD?1Ox>|Yt>`t> z;G0xlF=`ZmFTWv౫i8+]6/}] " *Tx 膫gprˬUNƉc (%zQ!fqƖ7Ӽ{ٹMmwU_ +endstream endobj 61 0 obj <>stream +JFIFaKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Ka +  +q!1A"Q2aq#B3RTb$Cr 4SU +%&'()*56789:DEFGHIJVWXYZcdefghijstuvwxyz?ꇸb|[&'37j{3ՠ,CS؈'Ʈjԩ:k=G$_]h[F&k[jK{FA*@$oc^%=K-"˲&Z.P\GŔx3ǵ18)Uo\6{s,W +t7ks# VMSjV~?21 0*H4G%\B!n)ԞհqY]Y^Fe_K.tQ!m}}eu]+W]0:3:Q-޻ et`I}ƻg+IβTc5AUwٔsk +:W'TtX9kK;Q׎ڒ85RG'c̈1mȻ^Ob|]C?~`u|K~4-h^̋e/^/X>9{%:PN#՗Mț!6;!u{$Myc .*Z=J,8v)M;"O;߄Mh]4SL{ Ga̱zU Wm<2d`#LAfg@lgz5u*9++ |\No i0`^;̔6-NiUgxhr?^iL(33%me`bk[:ΣN8t=UVUTlG2zIlj8VrS!A'׼^WRfdW.=w*5-܋g1*\eUg/QT:%ޠ>;ɒظ94|E? |u׃,d[I.UJҴp(lv{:_KkwZw/]xk=ݦO˜9=7@Z+R,sf{~S3WCձ HV@~uG݉2q#R=خʶ['|;gH LB1chG.`vܓ9=BUx_ +#CG߼ἎWZ5[ #Ac.gw~- S, ;)]yn촵j8;}6du `ֽn#p.0zv ֧V+Vw(wIK=3"=<{/{6]sdDD@/ukJg6leBikʮbY$:!FKO =Nxυ.{,uUU +5Ig"u^BTXmV@c/t잯4%qM(v`;D`(Y:"Sb]ٹ!bvNrU-{YEWM?|x}k [ E, !~UP8>Mjq:>GV`ޞ:M·$kgُ-J|O;F """""""""""""""""""""""""""""""""""""""""" .2.7U=ʂiIXbc[Ym2}क़߾oH59G{ߙMy.:;(;H-~P )|sH݋2`mA$p%g5 ++ccP{Rzq&eijox"xct||ʏ:Y`Ń}tveOsn֏5n3*34>gøY*.M^}2܄jڊʯ 2b""""""""""""""""""""""""""""""""""""""""""  /?Ҿjk,|-jG'?CO-fag-qOn5 mI{xq.tVSl:WM8sveEJK7aN]QVmE?N"5 +\aXPV^1#]+}[k.UىSEDLeϮo kFن4i^&GKxsEn.8oD{/DLZ3l_H!˪ߐQ!zeՈ1ZǼCSC?"G˭w.ղR5 Xض` io2V"%ܯp{8)<rv2o(mb7\LNSmY∺͢t6@d,ێսWTOǐVIV^Acƥ%ov@+.SL舉0M"##Q}DDK)Y<^XjڻՈ:t:m؏#ӫk!>VR#tzcV7CƆ׾圮C~9WvAu`T]+a؉Y>%v]G.mq +;sh#bj#A+#}Ҷ '?Qɻez̭}hSqe%c^*VԤWw*nm^k`hl1.Ꙙ6Eܮl(י,{}NWNɡ2`kVnk׼OUr,f Np~Ax?zMe4m6Qut?mf'UNlŶb[! +ttAXYR2ƶ@dȠr,H>{~ֳV:ϖy܂7/Dꏗc[C +w 1 w= ymAfPEG-e,CʂS.ĩH8,zeTqZ'2+'33l/^A'_&s+N:7MS{ӄQk^ZF eN%%Dժ6 q~e6||1s2E(zZ=Ԫ9xbyܮřδ5, ½[ZяXBA{L7ϔx[}^E\Š*[L{ۓ_6_!m,\W(Tl0R~#S/?] +lFc oȞ}NΩwǨI[X"FHnZlo[ggӽ{.dv`Td3 GӴyx>KͲyvZrl ~NwU{oHNur::^'R=;)ks@Kb]l>`?b]ꖷK'*˙Vt`I"~y u\ zLQG+.D%]x\R1mioKfNωrYWuoRh6;ro켆_z x"'#-B;)ȱ~Fn>ѨdU ' %=DMWu+ί V_1[XQȲQNoi'e\e#XVl*mj~$Cdy_-ȡ~{mΪ*oc-}#bblļi7`AK=sZɷ9Z2rESVWYePHMC驃zSΣ6MlƱkr6sOfS3s>!#2rcb*AS~b ;ߝ fޡԳs++ŪQWԱ )יizRȫ .b#1bs].)uK.o闗|6E];Uv 3'6hG-_@?yc/-GUfɰُ~bnwQx=c#':^[Yce[MvЬk, +H<=K?+;ʭ ĭ;Y~w3etYF: YR*H^^!6 +T +39),ۺGVk+ƶ6M[խ]V>ݤu}[*z}e&DapWnJFL6bUeU7O W +RT#Z2A_JGf bAR:֦֬;6$KawXd%`J3gZϛ[ilt/YJjEĐ>sy"=/԰)p8W5)Z8VY}$DDDDDDDDDDDD@)45RkHŪcWԽdYEU"#7g^+ y1 c3\ycƀ/t>/rAe]ijːڌIR llyؑX_!.:2,*8oRP裨dd;E^:${RNԑxwk>X}5eT v}8zjr,z Y }=7^`u?;tAө}-v ϢxI>_Ko [kz +^*<&e/C ,A㽃Zk|[mkM5r+*nҝ 6M{(9*>GlL|Jﳵ"-]`($IR;Rbc xm<}D Gc.bteɶƶHU*ޕ@ҍ?S`!?TNә%N燎} jbl'ZfߚkDe܋y b ]4T 52E}B뵛N ÎkGgoA9T]NFUW黎xwڅ ogg[g=ʶR ˢ{y_t**M´^KĕAݸ{Wt.YVd{*BG;`JmttxUc׏ugmZhǍ$0+ۗ/qrqڦȴ;ܖftc8{K=dQnp +' 88moil4=>IVHO';P0A71Z{/Up$%h;dv+ͩcW[[a $r|)Sba-{,9q d%^[!rʰ+Łv=]v;wmrcx} xk +"JgUkܪ(`_jv$v)!Umv\[pG` U@#}=:=oJZ[; +t]?uQؓ8}UdܸvH; +\_ҡR^ڔ!Fcو,>g\f;:FiI+|v;]|צԬ/fB܈a``wt*Zamvǟ"Xib׏{e[eI +²vUt~}uebɲǰg_ohmr+ŬZ+#WO'd-]dj+1rrٮ,ZQT*2MfgG{kٓn"\8#<xb$}}m/~GMu)ޤ.PzlfFƼ~>ӕϕk併8Udh +>N&:( 5fUδ4oTr v̜~k[)JB%k/uߞt7ޓT8 (ƣ^Y5u^Oj ,B]Ɉk#!1+{l}nFWb*]ScW|u{]2z[ZVe@^@o$1+mZ iE5[w\KM6T?āx7!**H'jP7643zGSòwŹS!R]=|jyHIu,.ggft:zt6Y.\|{r/YdZwڑ4u&5N[Ԩt_r'k#+233ۧ0Jmy!T$oDzuGy#G@>OWdt=NlJd6|lj{u fN6%P5ageD߹?ML r?FٕP[(ņA??/&CWN +:Q^1r# 7G 67g9;OSjܭ>oϞPuW|LNNM^ +Qfmq 2ofVA6VQ ֿg~# !w׬K:k|^>{H.}^vHd_D7 )rbA5MA|Qs8׮GVwFIcש}6T,s{v0htZFK.ςcx;e + qF?Ur^ƹֳ°,7}g԰W0,ӱGј\i7U&P [`2*>j5WZĸVMn̤t2om%]L\RXDkIg[`=@,}~0r'8cVo H;?&UyTRϳ"]UUmg{C`A:}K ,PVxр׿e#"S#&F>"[]-e,u.J(#e`&%U +ְKT~J`'dMBK+ .stws@zw,Ο~ ɽbTp9q#.Mm +Ѹ|Hw+-.՜(#!z &uq0s-A@xGf l#rS?-:?%밽]TF(P?Pw\=o3k_EccCh5 Xڙ[] "pVea؃dZW3܄{1#?LDDDDDDDDDDDpzF*QfUu+ev p!\(RT6яBunu{\oZȓ0dQߩ\}G=z.:au&2;$GQ&@0 K;v/¶ыUMrO}6 rvfee'Dv>?5^_vz7̖OK][հŭM]l~:8kv>Ewv 1PSҲ[(|Ynouw0CEc{Il //;:~;m\{P\{ |'Kh-h7S}=y @s-t\Vɫ' ]YUNt2rn0hR +oPV{;#^Z;2jzkB号mzVOOɿa얖\(B=c^G+[Tltޮ**DKWf-[ h\=3+51m.==tR[mhtqu,OT)+$&XLvEv[mP}0BoʺMn(dpMRY@#{wLqhIj(_' ,[4?|R̭[:\m~'B\uVxف=Z:JVZq}#}@s*zjk#7.=65˗ +_~2gVk= H$wO[`ۅ6:"Y,F}oc}7088_2;x2L,`jfJEUG (]$>|5n> + SYvNyR9g'jN* X>Yl*[ +( +o$3YwNk~AkG5|0􊯭nh@ᄑ3EZ5޴^#eK1}5:VWPoT,zlףayEQѮ1)d4j<\l * K 9RA/-ruOz7Lnoc-cU⫡l>oZ|ZZmKh+,un-ù-ư&:4e^̊s jpx:16޾r?D6VU'"`UhQᏒIXU䢶-\ogJSlNeܾ>\>%U'tfSԏ̝Gp7WDJ_̕ mTK7P ) ďٝG,WjRu'_A$jȶǻLp#|/'})9ojKtl$xsѕO%ml1x rV`?A]0>9sCjrX6 ?^I1U9e'!L H ;>BڬAߍ\L̗dԌobwy׺~mrjw ·21C]Ȯʲʪ(PT ~+M)f 6I:}I3`b{,ZT H&SVRs X2.|+z5܂#eZ*J"R-z,@s=`{1f.-EVH)Z?P&TD cض/"9) 6;&DDDDDK+SXԇR(%|.%g """"Z!((QI.k ӔH?˂ \']<+kkgeqFgZܯfPeլʾq*39Àޚd >&,N~`e:=mN~C᫬vOX;B̫+&WczT%V# >zEUGeiCUVLJ!#_,|Ca|f+Z-ElK"־`d>8ٷىI||SdNÉH|CcrRS1VݚjE_ֲPՌ„KR~%jƳ5U. +m3c%Hr-*qt .܀4;K+zqd">3 +PN0{ّw\Ĭ xfGEba+˗-|lvK]C>㉚jycMUvQ ww.?\J7c:Ž `m VG SQȸZ\﹑Ѻ#}V(K%>e䬭A˝cPUr[gAHoYɺW)r8߬S Hh?Ӟߤ+P |yk5ؗЂ業`SA 67ܣG.}m¯D+s*#^l^y>3V~i{{yf ?N..~(wظa'c5-,eT8H.RG~hy3up)J9Zձpʽ4H;R 1-˫85m pt c3*FƬY}F5'C>9YfE*ddV m]BGQꫨ5p@`OITkl>u{&` =&GFRߗsT8hyGa-u#h}lHgޏqvSGX̩QGjYCApǺ~LA!5{~#z_Q9E9x +xr˷nMOJF/+##*ARߏ5s#^LϰfV=9"}+$ցi:7Q\N)u oZ<~_`$ffyx_@/9.z&_Yb/Q9FoMHb5:똵a[ a]6*ZQEV0 zF_@6‰!Wu+-v;̯ۗK"N;WUaۖ`5`Wz="J͖_q l>[,6~]k6;XwGDbSղӶG?uƵ>Ώӽ:%l>lw'Zl~n  A԰ +aXYWC)A%c/^F^ jk:Yb`wwn2tޖ\9uU+Ya'Eu,k(VFCdž |]Ήu=wݎ%dgy o~D@-4^ P>]zzqêc1!OgH_VznOTٙU-KzhX8$;{׉we9fT,,6-fbtF:%2BkH~|F}vsz.ٜ'lnL;*Fuc[*9ᖵt(Falp`7/u-.q+i⪠,_'zĽHc˦񬴌tkxrֹ}wgV}"Vp&l pW~JN貪ř6`ZY\n\.ΗnK*-=ۡxᩃ}][76LjZldYFڥ"+PN>w'DC_52X22'̿B$oEzqC7L}xt7Nyc2빦RkX` ~:\Zll{Z͛wɹ,9o05$1:}Y2J>ƴ3\'}zLq+kg ;f*1lNH8b'Sm,7-Qr25bn6C]}7۸ĴYVd]JCAw2NbCzp +mydDDDDDDDDDDDD@F2d7)A#KF:d^G`%؈Z8}ЕKy#Wj+ ` +N6-XiԁWdsj[e }3`jKp$/ou3"&&I>JYy ?Q3( Ob"""&_CRcg|y~̬|zQkB* c3uGȥ,jв>&dDD^Wce:0GHzmqt77З"""""""""""" #3:,Ūr,-AI@~2`6eX(0*TAzmrx#j+1RGp&&g6N[XiQaAc>`d6M5wȭp?)r@:::܄nˡ1@|[v$8>?=Lޝ=ѪӶN\xWο5z֖utV#b\;4 +UbqGq[*""ZʼTgTmCz}RXQ+qp@'b"Cbs2xUGeFˠk3:K|[ ʯ9W՘*H]o̊m0^> ;>$DN~[N7:ki{9`9q#E`LDDFBd՝̤JDӳ>Kh|beDLZMiB*a~[}i ;\PrT}PU-%O~GQ2( ^>^0ڮQj%Oʤw`f_N9Z)}R+f5MH|z*e8GO%fpXp)vTJtHAeDL^az[}TDDDۋѮ{_7)x"v'AWSL}os[[UEG "Mmp}uZ|-o-}uRH +_{g,|ʠH'7R^CkrΏw +u@L|\.붇R|mnC5_Wʿ)ϴĴC~L߯Kn'H7/bcNC_c-+#7tvOm[$1q2RQ~3WhwSH`9O6$#GR;7.C=k>^\#@ɖ[#/ff)ŦN,+V60gRKx MM w=@#GyBW}dX^6qhʫ|GCŘ?7~sE{oϳ^!iy}ޜr`(zAu. ;PfJZxDhqٹ l{J:0ёs\j+n".bFkCƫfb\앪SߒF~!mgcA1R4F&7•egЙ7f\,ʤ+ŕ,dB{o`bulF:Y b`bWC}dB'^3b;֥þs;{lvuϿ)݉Yz6v>e)kzZt +OGptH${ ,%T>Be`_92=q0/)sGڗ/rlR4H=+̷--vf +9sB׷mx0*yXelsucEwdzuZzԲ+YZ2h=dlog?2Zh]=[6%oc,q+(TlPr!t;{WX;cb ˪̍RY=>#fPܲ\ >t5è}+ msόN+g/3`}eynnԾ[jYulnzjvC׏Dޣ:U,[4Mc5u˔ݙy3Wo{~RC޵F*dY]7b\*kjO.Ұl|ĢaɀW^%>vEW.Ưe\3}$g8ᯰvYW߷bbtqkno0^J-®o2O)heyV=n;XTeԱ$}w#h9yS"ˋbf +8M +`0Pht̆Ģ+)μm9I:zj8Cߋu%O4?tךwSl,eUuYrUP{߷яO\zH;`97Zf2gs++ǎ+: )ꙵ|=zuwZizc`;l2ɳу5pr6=EY9_fr,'=h[޻}UԲ ڙ/[_v-v kySkRph"6;Qr +!+ yh~rWﶯ `:+]ďX6 ; fo4i?c܈](VbIE'^bְHkLhKX_}]BnFX6c>3ɹm&53S/f{ ldNZbunlsu;U~;Dc uf?ĹbUc'>En;_XȢWצ1:>KӗVW(-Ǽ;;״FMٝ6ёo*[z kZ#-ӑz5"1nABrTVuёQEîm>V<1%A 3<ܹ CV ok%_n;&WTK\hrrUꭉ[.4Im}+6]7?ض?Ts7˾jM)+m}Z ĵ|X(-fuصW]N Fؖ52;#eN.-!xޢ.T$h6ESױ[_ӷjrF@f7A'>,ͿXF6J.V{>DeޕKǧYMl9E, Oy#FmYUUZ--[U|v;>' +eS~]^JQXȠJ68#WNO+ԧg_~B`;{5޷/O#9MqpGJ&dI÷-Uű +{B([({,я,`Yց$״~=HuB늽0y<dH~Q陙4xdXo,McZ?Bu¤nuVsVSgJ0+]V,Kn~^ܕ~gǰ2jxÐԊv o{Sȁ{o*bY[f>a1+n@,Pl/ 7ߏ-~'F*. mObtZp2Ѭ/ǘ.J|K4;Kұ|ີZٶtUI#,d5Ȧ(w +,5 6mظֵT44>w0rAfRʋb-T<0 $CD˻1nYua +Fr? bSpvlW-ϒ~# [=[.UZ»U=UG} lʺJqw!Hԍq'DjUp?GT*4U@(*׿bd;]iKn;+`IR@*Gr6MРִ:=^&#=26EIm"b[]%k4Yg,G& Uf$ygL|G۽oirY\\?]}&kn3xx*2Oi`9SVF 7G3'rJ,g.@;Xr@KV٫lD(Z$ON:uFǦ ; v_Ij_eoc;n@;vkna#p ! q|q}r,/o91o/ߎ I, 5%ʊyH%, B_GvwvLį\d6\=d0^ũ)JlT(g r73ᚳr1mNBWQ0*i{?B$[>5S|t,GoKr>zklsYr ";-Bu'RށEy E +<6{llv:#r1EuqX5g 4ǹҪ,)bhu<4}Ļ1K&vr 3@v>O: +.Ϊݘ!YH :==}/JKmtB7AA:ɖoUߘEWNYx1~݈r|/THovAb іzqJ_IV_5:IԺm]NK68ؖ#)+ڰ=R`!m,U@[K 1|ūJSwc[zkKEw;3.vvw>ZY=F9H]CYٙM*e +56T\jN>2 M:Ǒ]qrŕm[q:[$~x HZ+594嚾învW{slr;.=5җY Mˈ:ހΆϙ7fj.F߼W鏺ܕs}w&QʴܶYM]`gG#a#D  ~w,tZF@Ɗߏ2Lut\Z_<2j:dkUظbL{'QГk(a^rHtZ +Yoa]q::rv4O)V$*!Qv|GÖہOk5ޫNPѵNt&v jX.SSƉF-',[*'C['e興u*+LRtwUOʤICfTDŧQ~EI6eD_Q*Ʋn#l߰= BTr+gԕWN̋K1:aeڭ[]N( FǙ\L.z-Bܫh\($^L~OL +1V*[ 'VZɷЩ6O7ןC*+Gv+k"B;a2s!aۨW in]=jWbj#c|yLf 6I:}w=7q=r*" G=%7_}T$4"p?5Rf]ɾ6" z"bȻ)\h?y}*ȱ]J@$ cy){r llCY}^,|{Q9-wi"̕ZzP:/&RA׍-} +@nMJ03TWI%,^JJ:&DDLQԩ9G +qn36 WeXJ*6tt7v-&feK]XS 0%<÷JDDDDDDDDDD]&m8zhVSE|є|CvekET1jS,UKrW_N +r-gGWb*A>u2/?{.ׯRYX^ZݓCYԧqmO`Sr }s~! UHn>mv;l|܋v0|wV$5wDXtu[̅ +* ++ʒ9V7cXcUYL!$$ Uc5Z3 DJʝ{}W`[[pdTn#?y|kcį?F]=4Znn*` #Y:RYPӨUF쨢^:+:q2uYÈD].XuǶ繖u>Ֆ=JmpUK:(Pm;~ 0t݌쪣v!X)bue%>^XYu^(mv;w ߴ%ƭ%5Sv+45z]_?3?u3|{2igTZμ::~sj)MeFxkԓMo[޼Mg3=)4ز!j}ekj` b&j`[ƺpֳJP55߹'_MO-Y _R/0ks( +إ %XG:]ul3 +PN9TmN5,n=}ƚTڝ=jl+bx!t7>@ ?tWw +/~Jabw'ǶVv J׎jnmD I KzSLLGTAcMp zغreWY\G~mE( +$םvO.^QNEWߤ7ctG1^C~9t5eXbcWzA^{yK݉sr][ +#Gd0߉>kԈKW@@#}ύ[7J+]f(2$\Oԍ23́U]g ]je46x;L/# uG~|Q;`>S?긯p|,(bZ7T SzF;ަ22~EYbX7e_oOo5\M8,wJᙓ8wYJ\krX 붽"GY=I@qxXYGGnYꢶc@wS{bO;  +Pd6p^e ]η0pS;V""""""""""""""""" 7/Nv.`_g[m:%ypv +2gP|2ONBv|bL#OaE7560,S2͎^Z)xe7};I興䪇,qWr~7fWZ밸 +xruRz= O._U[>ǟrJ2gٶ pѻ&^Ε^W'WD)}yxlڔz:`Z{ +~S9if4z[iMxT4{{)2N#)h̪*Wn%ǹ,`u|llJ 9VZ]%&OZT޾bxyoYO:!b4=^GG\Z$SXYbcj`P9}A1jҨƐor~jePt6@'gS ts 6h /$Q "z?BJ]xd]eUd5MUx?lUZ4Tv>?$G񯳊M~˞t%l|Slut` 聮G)9#,kSZ:0,M z ,zc'uPP +wP[Z;~8ƴMޞ#C{2q=32W+d"x,KOS >z^GNl}wt@8 NI:_ʠ v~Hc䩯!زYU>`=6|E9)p -|6J=iN7@9C[!?Ͽy{ۇקKJ=%T+V'|=VC}綔øT' cRN;^ڴ:†4{?)bےV""""""""""""""""" 0l٫̈#"NӇ'yj>dEuJq%?Bc3"""""&>Vbb쵎Ty>@w&SOQqRF`Uf  f. Ms]r6@vy?;7G[qb1~&c&Μʐnv}H3siԽ+٘^V s؉k+%q*{_|QKCae8Yu +kȥ%N#`#z.Ū͠V̟U;owS%֥?Fluu$%:u-~E]h6@wA xt১EkZ(W^g'2 !vFϰ"xN^VrX'1e R@v53ſQV=ۿOjXIP LG]ȻK6A隰 o2B"%+F +Ҁ;LRWBYAwAK+KSb*&`|ICz$~_^i]NUH']Mad]] +@w:.vxgj,[#!e^_b6'C'N 7'tA#d:;׺} +*r-_#;3"""""""""""""""" 0l٫̈:t az +mZ(t A2Z2zw*5w;# M'N3V:,ke=D#zmzv =;-pNAnv2'&=7d<:VיiGE{G|Mu=#V캤{6T%EXtm; $ƣ8Jĩm8Qb'!}eΦ:~NEcc Q3 =ώQx`zuzܹWh5؀Nq͹VTCq6y.XX\. 7Am:#g]%^5QNTRA"C|4Jlʱl|X6l<5#?T}#^Ef\Z}=SVk|us?/6/'cܝ@.Ė@l:rY*|> 2etVU,GR]('or@=Cyw&bw%alv;$~)3s~ԪÐ-*Ha突_S un6Ow(C{2=>$=ޡe9aUHss2-J[X+B1q{)6v*ד1߰kίe]ߝD3V Obװ +w >/|A?,c=)r[(@[Zw,lau/Jx2,wݟ"^*F+^=Tplyz=ޭ]Tc}2w +_u?J*γ +ҩek }ӴO ֵxm6mh8mp9 nl]6ۯG sgă߱3 k2]eoag+RAh1>OY3&3e>Æ ʓĎoR%2:7dk~J׳C{y̅Νf}y:ԧ%`/[+}eђZ)䤂[݆6C<5G[7{M;al婷1qR6l'k{:zQ +s;I۵;5RzP9X +PWU6%39#M↳ ŭNE U\$33bcMXmy8m1)cOzH^C1RzdӂN,|GfN7LJͫ:S`*VKtsPm @ĂF.yU[z2 eb~R-wYX~ ,??]"""""""""""""""""0n٫̈n%2e=h{G5zNKŸ|r7uX&V2T~V?WҲlBN:`8.O%}t$Ued?'ZQU@ymO[~er _ޥ>G_|*mv`ŀ qs0zeGh8Tִ@ *}OqJd`a`GSY_ #kSr +*K_bm PI޼d;3.a<~^GNl 4+/S^7+ãs_[_jC9ֶܶK3^)#Rt,AAX׊q8ﳰk@xƻ:z[I8y dAN{S4t.Yay,R>;|w[,6vxI DeH1n[P2,A4}LԱ,,vqgcSP'-A +]6A;K]3"(dr~ق rzzQkn,.A]GcպngUvᗥl +3SŸ5~tzNutF缳պ>TZ͵UWw QElPkDv\G=r޼o[YYuYkH&;kZ~kʱږK6#N-{ݥ]W]mmK`ʮ̀V; Y=^jBk A5pG#dfٝ鱺[k)\2SvSEY@rR@:_B釤b-!cQ-u.eT[קG%IAw*5}"h1wfo$} L:vGI«GQY.F|[ec\lU}m!Ht)гllK?fc`v,( u r߇/36܆F+((yh#/bu aUYY]+r ߶%_zuv߉ zE896VE Z \X9v?c]pweດr-_N)r9YŪ>֩=2Im{;0a6ZYM9}c|y̓YYzf2*SK.hf +y{;gձ\J>PAَn(ĊHdF&f'K|5“UHRAc ݤw-WV,ש}^wӗ[޼oE/IX/)|r޼j`Q722=]{g@v=K|J(5u"xoDx}cLSuV;`CN : p]?\?2֥}?X%/bOr~}[&5&~oᏝGa32oj-K`~A6uaұrP8R}C[¦ /!H=Oݛ\S')ېFfNyLZnL$U‡ۖy:.GKYNI;1wSm5.%~%mYT^D]Nz9iGקr|}5_dDDDDDDDDDDDDDDDD0n٫̈kq_+}>$W^{:WP?׬p4UG53d2+ 0=enR0v2DDDDDDDDDDDDDDDDDDDDDDDDDDF阸lY+Uc3*"""""""""""""""""""" 0n٫̈GA~0Lb^5Yn_W7 Q]Q<LUj\у)+O!UnJTlROԽCR6 >2+ؘ-CU!I jH7oy6)WV%w=\CGĮ"""[ȯ (f!T~dWbڡv>20RF$ 紪"""X:zg\0,;~""0l٫̈X7t,Ә*[J.Ĭ Seͧҙ8zC+A"""&ЖޡjY1N>Zۿ~do5^;]bb.w {9<ӮM:uOQlIf˿7.9Bwޫ)IU.zi|@rt)ngH[ꥂX*OܚƸoF-Z1nĨ$ wl%j_`B'u=5DcY`Qie+m#ROlsMu6:_-^MAg~K2)Sg{i'Ý&֑E+iU hZӢbWR~T6?|{~&{,÷V֖+`SfA4vA]̸YY!l߳+0F3&&ٖQrb'Ek糹sg܆V U_rčz1r^Ӌ]OIT  g >Y]_,ʧAŇup۱^>|@?Uwٜc-y^O$F7':\Q_0EE${>~~2mG#mat״Uލ4jUvw~jL׳;'?x=o_?OMcZ̅ $?A#,׊9BVm;.8*ժlRն@+0mznԶo5=ջURlNVqiGN1[WwkPˤz ߷q{1_X/צekQ<6Jc㾿)$\בV6M~ܬk!+ݓֈfoY}Y"c}r] +>;Bt^/SPF$l9illZ}k+=P6?1׉sשWwԫ !~(5eJẠ(|1dL}4v"|d|U_2eeg=׮D|>~~#n0+.XOd`vFG׮9. `6qWҍKzg wW^i[.[o6hp:z;oƼϊ)Ƴ +b1!yh#[&OK>貣U/ %!}+̋> +;ù|LGλ YECc; ,4G!>뭁s[†|;ԚV1q(Fv +y샶 oZ,[])Ml+fHqUan\}K4l4Wm|ᔰ+S!laY[T^I~·͡e0CTho3.Ƿk=gt4uKh{g'\#.{i(2/7. Ƀ{?J3p_}UNf --g$m~+f.3duH5dt6кN@)my hZ*%{z|f;U{^^=E`hbr )oj)u]$.}7cepƶl{-B8rn\l\ceނ[j;%t9Giz]co een̬U:[2%Wk)Wt{o?u7]jšQ_rO/ _[5hJ|ޡVf->w6u gj[6V|E-CP,wQ~$&Ju|Gkl[}|-^ItGdiَ+n6ǨZխTwG* w2zWW뭪݊}/u0r.y:Qc(I"ktݒ4宋_ qizR×2]׭b;&}}q^LW^{̑ΫcՓIX7#s(%ܬtSvɥG lƧyQJ2VSd:u0_#d)r%0V;赣I> JS_y-V@}qpO|"鸷e[glw7hmTE4-EJ^ee*{;'CS&}z IڒXİWB /N[60l٫̈23MM +>OsF#7 w=?gzq˦ҏU0\s%:}Jeiv糠PefTDD>-FŢd2f+>dë%y7u$Ak2uV*&'DFt>VͳpztJ$|I)Q8_b//_Ė2f;w# oG|v[1MkzZ׻G hp ܻ:Z#& +`rg( '%Y=b-A#vO2/wTɡ;Sk5͏DP׾i>UXtl+_UOo=y臭ps]ɔج-HT8جlS_5q/*.rnmǁ3>&=CR@wx̜^oì\Ol6YwoEk{rׁ]h +=r.XC2&dSmJ::ڞ_]~fo#&uQF4}y޾b>}:{rfK{!B{o:15:M4=G=y"g_Gmz0OH_tUtAOv7ts_QnoUr)mkζ@x +{~I<mH[D]?r-Z{eoQ!N +]jVrN;r'MO[Zziܐi}Tp5g^2/F/؃S e>']Iكp!JmCG2R*)iJ邥'r׻6;LbS\#뷙OUeb[VN+V޶E筃z3XބYGҺUka%212:v%QVk>b +IҀI$:Y]#Ռ֎WBԂuZc.3hتEL I޻g>OMK[NUtUкJ~LY(cB@l:d74e_Z2!t ll۞S~U\k][;o}X]FΓVߐ +nܑ:29׷J7?gT +M{ﴽVWB-E zddՔ +̏Ɇ#~q3S;5+ž@P|g'zQt2*~kj} \Ή: -E|\g}RtH-YrpFǦmxn E}Os;QWUC%wjPUoHutgZkK\y@܁(YXIu]i=Tv%}C&l澥z.HnZ;o^;ܙ0tt^:!{-QsIve@ ] f.E}[kdq^#&glP]h6Xt +2xf}xCdj|jWfs ۷y8T:jt >k -kGDyΣ./:S>p׷Wu +zfml*Lzi%}0Abx;5i2)l:*>e*;gQ؝+cک^^[Z͂ӵdv z"H|9[ +GǾr{VvVcbvvҺt鋊Z2ejp +Iy-Nc`-ߏsGvfY)uU@# o$J㪚R'MiA=#:GΟ~.5ֺ|t Gos3_MwYrdrN,'ƾm}g+ 졨\[ Xsr;_^ݻXO?kzBPl""fU=zfGPq¯LW\,_)?S޵Շso {XJXAe -q0xZ!0J?FTjz9+ +̞s1*>%# q^p\tNi8oeg'?OT.fz +Fy{|6yٗe-.MhC̏GذjjiDuE`XX}$gT:]csQQ8yٴgK6UЯ}{sWv q21BߋޥΣr:w]SdrN +Mq<="ޛRj+ +,N~9\sFWB66_Nĵ,mM/-iS}^Q~=eeZ5196ܻ$]]Z̻JYME,Ÿ1m'b" -edOuy%SȉJY${Z̹O#qM*]I'@ʁ"&7Qu\{1=v/NދٷQuz/tG]7"E]ﰪTOodLj4-*wv.ǶLܴ5,qB9PO+lP*NGq37vfMT`oG^~9X0؞DL:6&6CRXw-G['CgS:cW )r:֗5|쪤>grDDDJy DDnكmB‹YUH#}Ja&u~a:5g.)~EeMwl;,uGVyPrӷu1%?ɧ4p|ޔO nJӺN,x%$ǻ ݪ!kv*k AɳSZk`uCgPoh{*UQv?;և߼ͫҷܑc Hߤ`ҕXsU1:?3K7^y.N !Q羻y-֨WM[SbZA A#[5UlQa"t)]Xlj#mkr0`Afأ.gŀp@m. wXǻb#~XȎ@hw"1\~m"+wcn{ 33LLWUXV;oc~<|՟ `՞BW˼'SPVcuKO5AkE +@J{s,|+B-TVQ,: +O:&yw4YuNΖA`ܕt~'oV׶9V1`?ߴp-ULB;::gI5F8Ck]wU='zemFWIױu.u*~{qE`lw=E=s#Q[uaRHcQk̴j8 jqڂ G~[B/uU(_\N t&Q- {PUђbt#ğnуvbƻ> G e6=IZ݀Q =Ӻ5>zmŲ+*-q ( {o]we"\X"Jp@﷼n3 @ U锃`S_R SVf'Dl}& wPǯ]UdZ֣,^5(?.oK3 :IV ovm?&]ڬ\-jRA$vέVv5ܼ:;H;;Ryz.nnMO^S$ː#^}O?jnE's*r!oo]3oxU\tEuRÓ7n>eը`J>+ɴRޱF-̱'s΍FUh2n66FwȠA/bu2ZY[:3,N>%tN:?Q޴ yUbU%GHe׃S]iҮ|:'BbS)bjYAZ-^?"3rn~"ʲZq9>ވ%85kS96[eCuՈ dm{]ca]jZ}Ƽ4`) ޔ~R_1hxڜ;yM=RnZ +:;!uv66<Ȉ":}"T ]6E#z禎:n_Yzz{ftDV OuIf>ۤeY]Udrk=;~m=7~%mȯ RWY'L򮵾=?@. !iZ-eUq1@#[-RTa^_)m.y;':[Wd%"$'TZi,Y:l@Q*O~ۋzr0ÆuzBi: Nƻ1:Vg+ߨݶ~SdkkWRw?ab"@0:mM(6(w5؝%z~ru*VGPIb5o뺶1*N=豋r;{ds?iwӆm-]]BL앦ϖZ@U} -IޫGJj{ekoffMwNE^LHZ}H͌Э$OO,>-xˆJkH8l|[y43+ɔl8@;WW +ܘz5UG?=d['[G")\g}##Y$*ZBmo{؛7Cū%5j]NIrY; ~> :=6N[5TPjuCg[#a+r22:ER)"3VGD,uߔƳgj+[Җ5v-er |ÿ>ʌMmMQ4X+kq{] +ހ${w;tK1QzV}ql[ +{'oJܟpzUU)b˷X`y!K*oQOD l]pY=wE5%Nպ+QFkDl:F&1\JnUQM*jƽOJ蝂4$9>鲶lKV8#olj>O׋wS_[-̾Jך0qL6.*8eco$dlH}\rI;8oMnub5is +U.9+ [ EA6cз-O~{G3wR[ 9d pcŝe@$l~m2ڱ-On{[V/IKʪuY6PPtr;=1sQ<+N@H{IVa\\[],8b޵eanF'Ҫ6kY0:z]Cq󝂪76,FV$EJzX:b|kRưH^;'ZޤUض VRI(I3VjZ-VF#:OE`,dfoM,:y9yoRΟj_jek+WV gu^vgJjoQ52(;P{Mk} ^E.Ǣ 0ya +K-Zkº>aYTQ1o<vUIocwO翧ED(,Ƿ$O:eg*n)R{;<+zU[XPRAR;;e'HڳΤ~Y+aF䉗gQ\}iiH,5X̲'jOoi' +۝u^l+l/tB-gFYZ*`ps?#]Hv&~Si|iw3~?" VV޵Edw#Qn[(kԨ Zo)``wMW#l, >x:wItl`vYV)$lwcޖTʳO[!*V;jDduTjXTnU50X l߈7Q]UExtkQgo^5Ŀ*8q.ʶS 9kG߸ 㹛NlKovtH>u-2۲I:ȼw= 51]U*Vq4;],t $RkL*J O[C`GnםIxY13UP?B71LK/C{-lV W+9lv23U.v=[v5`0K9-s2/ƹ1jPm@FJEIBAۮhqga(I|'iǫbZUm*%DAsbį>ѵq6GK_;/\zuVč5htG0"vd. ?[9fmq~ߦZǭMʎAN>}K5sj~]Tmě,xI;&ndDDH2hZ +Nj30vHK9XY$lFAocL.oPŲPجYK߿c2E]JDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@32˫WַGMuZfk`]?G* [lq,(JqwU";0XXFye\ՙ,Cm_{e;$ #t5eZ+ez ށ5m=KXv-:x0'G"&vOYóҺF־>18ZuS}3qUK;CJ[T2A;"s$ϧkBXYP{|?X/i"0vS<)[&1)ˬ]S!o?[عE@=G;K KͲt; ]QmƫVQ^d1-{q:: 66͡.\vE d$/c Θ׳ GN%F]Qߴ_ca`Y.΁sTD;~6e [c`:puğ=y?}܂ ۼur68$oGs*XΣBJ'zuU}`A +;J=2:mJn"(go=w>Ll5%mtӬ|{mı +vޛl܆okHKwޘXUFsZB޻vMy^E$ [}F1߿aIN3MYw<^0 ozocn9y.j} ㆳJ+^ݼ IQzd֖!ں)6 /6sO?O>^lQYXt;Wq-෍g l@’ʭcOR?pY˓PJ@➫3xܔXw q3}lr,6xȧ#Xm>"{)2BٓRbKDo~ddSYTA噂d'Im'֣ Jfu` +y2k1aWZFӶf;+u>]ښÏ,f ކuH/XjE5*}/ce՘up Dy^H_Ǯlz* e" );%99x/{gsNZeצ̖=_ mMÏ!yW^|yp9οe:%}e雚S'}-d +oʩj'ep+e2.C 6vTf wُ?d~޽a X' Fg!M+udS†:=[+zhHfS۱%5+j7Ef C2I9c*ǽq)P=BVŬYv;~}KSJYu#V4rq-˷-ﶼ3 دʝoDy3"""""""""""""""1މ?=OzC쌤?\O?Y^ƪȬW{*[華ψ쾺UArB@,@=`g7Pߣuvk[ߏ̉GZɿ :!HNΉk'!1kk|TlKܠ`8,3[`6vARs2m(RTI$ٕ+؈W$5V[k!ePY~$>|29fu;*`ZܿR?QeyQ_D@;4/ޕe4ڊ,!Vgk@!@Xlḵ*؎M^Xn3QLeմIR +qY.yƞȱG433mB\UX? ._v Vv{lt%/ǰod0F#zghȬv^/^ #>*dW@}tw=Ǚ7My<^REi]h+.$}I΢ʸ INfb+NH*XI<{zIHLA5j1[bG_bHA@k{鶏9ut{jQo`)~>ΤMsm,Q{.|SԱ:7SD+)*jU8^OVVAyJ[{Aie, јyN7]>؁I[ ߷f1qzg@eau;f> rEMTyӳo2pzm0t<}hTOkt{l;K,E' v }dWl%}xa}bod +YOnb?dSDZ=!vYnܽa%e{ }^]S?2Ʀ[ZJݎiF̋7tE  6giwჼeNfbAt= +Һl+,ڋ[ h@[h7A>F_Rd((¾ǰݜTO~\I$&l]*•\[!tI#%ށa֏@g%[a㢢Z)žxWU]{y=y 3ik. Oqfnݴ}v>.?JEj =ԇH?$zz]O =Crv?.;޽~ + +z Tk۷wUV >*ǑzIGבdr'~])n7:lˮ{?oB "m~QtIAfi2ygy:ԝ%x Z>Ih՟ ! rr$kIlzF7q[[)r˸;אA_wV뒹 W5;ƻIU<ua|}W:/<_RT\Gqkp +_ Cr: M/ yw5{ݧ'dk[~}/SQGގ5Q#^$K`g:RK9(ǒ&ĭlJ"""""""""""""#!0i6fXtE~d^k>m5ү0cSJf j6fB8[+]b-jɌ=an!BN}&/B|M +Utv1 ]ԁ@G̲eW}uɪ.ó=K{\VUM*ʫ(\`q`4@?g} '#cKx^ ԦJog;jد!)M;|O:5V]̀cogg'/VVEq!7줞Uׅy4z9GUzvjT/)MiZ~7&SLWfN8 ܙį{oɴYXYtfDdarQˁV-vA߱,:zUmPb(+87g-:}fVoPzC@yv޼yO+2:5ۃRݫ+f*O}1gXO%<7' ]x]y돐ZKE5,åv[gu򩪄fLKPŁfPwhUxe5kJ[enAToz;ryUiUcv+۹0WčB\-z21 <65Fo^sOҤJ-JDؐh=5~ӇNY͔v{{')ru8,\@fMUB]1,wY?):4O Dʿj+,2Uv%1q +އOpp6B.N$Os/@?yMu-CJF '=)gP|y%0ǭ2$lKҗGP|e^%]U`#Dx=ܸ.޵u%EZPvjY +?eVT)W~%5`G]HEA~AR1kH {x5UA +)P>ֵ.QEx+UUF +}+\[^6()k4z޿_sqiON<]Co"-@馈\GOEOCYE*AHH>( +k%H<(P~@ Kʡ%Zԥիu ?qǮ&( iM88UԈEUߝ K|xp^?M ~k(HR_[^]BXBwR0ƯҪDeT*5/DDDDDDDDDDDDDD@#6Nnc +[[63*T3ad]kUйbY+ˡz*zѫɮNX}*|B{YBaq[b[u'I9vSe˩>)&X{`T~z(VS/|??OCm +Wk~.;mT)'׺ `\ŏ 7 a#~w.P/PȵYS{i:'>rj[u<_ـkx+Yn:#޲%yX{[`xשּF/@sc̣%5'o0 h H]lNdְʯщk.ƹmбBŇ @:<:H'O94d*1˚G68,U|.={ϵ 2.˶X_5_nESo̪:Rԧտ 9B˲F8]+rW ꭷ4,~=ŏ}o{znvWqUkV]#nZ]7/'6˽"1e4v˹cftT^gH}x/8d%ۈ|eU#&3|?oPȥ_L?j]ʳYqTdK6VT־]rbܵ=5]dUfuWDg lZIGkh{fbמ0/B0;) 9Hp̂G"C+/go+~uJjA]5j<*(UЗb"""""""""""""""k_oT~Zz-fZU~6x=;32]_ P t8`A>Oƙ2k>[(V؅+]FSpGR7 QU5[P Qqmixg%Ev (p +m(l}h$ZmwlK.}7ddMfr/rrG͕%TjN5RX ^M̿7d5\mVO Vv$lJVb@  #Ωպf~)>eis˚r޽^ڒ3#1lY QYX36 "H-H =.c2~"z`~]]2ycOx?Tؠ葳o3eS\VUW,Cp߼.0lP@$l*'C{L>GK¿/!U.[n*͗eneKx?w/u*Zxm xRv@C)$lly*guJrkaȺx#`(r~xO ű[z Ύ1z_RVk`kWMlDlVŗ[<{;̄l3kd J.ke+StFShb&޻lw[ejGBႩ<{2zGb7Vī%2VP//Wz7JŦ^,eoeųaH:rY9p9}676gDU~Jhw`@Llsr*$yoJ*˪Mw)v# 3!P`P iIdq`}=Y : leP۰Q$r۔TD|{ߟa{뱬UdX-<4[aXv y̹[e}ꞏ-ߐ ׍jdgCg[?I^Yz܋ ߝ̗um{='RO-DξNT}K[ :_ Kz;Sbd9 +*RO%) )Fb@od~G+r^:܇TAīru =CVJ;!b ^{Lޓ+ {;'-cUݾ "" _n£mi}Iʹ?Ď|:f.>ZZ.T`MXYېG.ݑz=XU? os +{^k;{L>۾ A}T /9iGХWD٬dV/gXY܈a"M5};q@,^=9FfOmֵkN +ݸ4A1rKG2rPA`:aXML)?ˡݼ}&.U4|@ UT=H]~/pzJiՙt"ǾF4~ޫr.ۈ|w֦oT3N [Xy }G*C[Uc@onk}nBV} fLo+c־[t35W'%'pG_C]1zWNOrv l=ȮmKo,R4`ֿ32צQeW?*|MM +<zdVueoSoQ Q۹z V)[VT)Ķƥ ͕(XGef `6#3#541>gf%E|$'v.>gY%κMjokK +uF._'!W(א*^b 88WJ^ +t7䁿2*2szA}2@Kw@:Xb ^D~^%5#7N / +7ԵeSӲ=C,׋8m>tGi23VgUjPRhM۹ R>=#Ȇ'λh~^O_G.!l <0ޤf^fGIkZ2T{v: = _EԟOuV. \y6 2/J0v: +uJt;67-G֔fZ߬M䲑9Ou%(jʎVM群f7Jojs5w@ÆzOIJö|jYI@IV t;^Ha:k>"(ՂC^L>e$WNJzEuPq`}͹o=}~ZfixJ;Iin>x5Vcqyyn[ 'J{0+f6޿@W]-FNg5Uq{{nX{R~cs}C ulwdoy;ҁHk[5jŕ:Tu "v>;xWvm~UPz5MC,޴fFƏ%^OQl{Tp_o5ؙf-U. ;(R=/=l޴)W lzD"+r`82_Gj^n69[ {L/WL xJhG~̏4fcc +.ɵsKTV{ljk#YCEu=xYy:y ˦1kzN^< Ԑ ~ÿy`t'b9>og[jB^YN~eJpXy-,ƫ'gJ]l4׮#" ?/ta#\9=j͡lU=ǯϾFeTaPEJ#S1h{ ֆRʂ 7LGEǴޔ߹$Gg[>5̷OgkqѹŷD31qk©jxt?2Ig~À#AYqƻQ19ԫc=bHoCh-ј`bXJ`[N} S+3+:b<|>Sᖔ ɶ|OԒI3φuU;ݹz}jᾟeb +n@.7Kұl\W;kCQBɻײ/I6G@:?KbK5=}e.C;=*K_ GrF6sFRTW=#eҌT>߲UJɾ+ m[WE̴e{bb0`˺]ۅ,﹜h XuJJ5A6tL+q~ԩO}gߙVKM+i@ހ̼*s% #؏ H"zCG׍h.Wѱ*lũE4_">M=Z؀ pN0p&}; }V|7l;d%{ <'M(@/D{lV~<]iN=>f`衉 +?]=+.J^#{}ytl<:_krK&$.ؽ(Cck{ ovޟ]vָoNw3 +P"(ҨұzTےrG__[S.?Jp:6K.qiZe:FwS:JkGZks%z&6 +5 Ƣ kJ=TtLkmQ^w7CrT*-AIo%9}?P o@q| \W-<~}_.btl'k*M3lY蝐9Дc<J҂gOFuJLz^;h.H} 7ؑct΄)̪0k+&U+S@=|k6GJƵW} k{ug܏>{zNܚ#o RR/Ɠ[RZҲGn݌ʢ@Q c?bu@*!%ym߃+.EĎݼ~D{idt\1OMٹk\[^/K©-$ݻ?PT:|RAbRװ11.{7Ug}Ͽx'}@(6=y1pVa{A[m.R]Gb%^ALV,ۺr^jg-qctd/ GԮQc +W'w67 QMlW;zInv+:kE"{!` ʠ ԿW'K'"""""""""""""""""""""""""""""""""" ?'%zle +Yl{l}e21kҺ8I`y')*֬l~@luk{;~ ݏb?Q[_m`[dJ՚zC*_$\u}VKت`{thktH̍g +`o?ir6UrnU[B/H::i7CZگk=Vt:̧5ԪrG~YR#B\i:t@NExcɴ7Z7&,9|ʈ ;btEʅ']eL3[l+bQ'Nʵi&vZ?Ić?EY"fn5X{'y%-u(ߵ[D~ُQhk(`-POFu:N5Y ƺԳqq),Y%![np@|{G.|zQy2YU7zu%""Gq23f4{)֎{pfF65q%4N׸G!^Rmev] }n1/[knYDwԐ[jҼHa""& ^lq8{g(x9xCz;v[= $7ڰRGF:8葾384c8`RUK0߶#btݷ:B[zkKO܈O=xIǡ^u}6 6{Szgl{V6@+w/Uˏ`n}]F9*wt&r)w⠟-t?5Ԯ[ B^%eYWߏa1z7Ľ[̜SQkf[ cdh}>6'LAn'N@f# :įF#hK-J^[/~,;>/깗͠aBxz#I.fbnW_  u5=]Su 2sPbVj HX蟦̂e3*[ZW`6gVCSmp2 s$7eu\.fTno27T: w=6Y9_0J+Ƹ W5xv!_3e,dWҝo¦~âlEZd!JN0eHF%26cΟa.Y\? ؓ_yM鶭tty(?|YwM6*ԙ]=mR vA߱?z7B괭E}UebCk?tlޟMLD8`i㿍J:WUgٙV1zMAR[RR3,G1Үܺkrϵ :o(ؙ=7ߙ]\“e9녁I{^nlN?=W7$55m'O-eR^Эı~j}4fSܬΦ*XvCm'O1>)89yyP/QO܊!bI$aʆփ:ͳ⎜ -ɁqoSp>B:e|?Wtu5"bdLetJ]n6g<,b]!*[TFmZRe +lkRG;y]{LQdJ+-J$>=Ʒdau̺t[2 R 7gdu6Ƚ6l_L@sFeY>fV3ш +"ݯgmZ"O޻>uLLĩ-ǢI>dZ)=厕-gee-޻5Ljm0=č_A`_!?P491" 5_[-YekWb\lHLʯ2],?dȆmK7Nu}^7YP}܁$2Xw"9+[R){[VT?gzIFFmUW]+jvpu=^_ğԶ!HB;<>>3CZՊXR}ĎuToO9tݵ۾}}Luܬ{*ʜn)F>h";?oǬ)K}[?;LΥ6z_ҟk5gb1^\oƒkKGPZ]:>AZ(}o`yI*tJ ACȩ(j _"ڕt#\l67%:Z;SB[S#|ds'-kyO_깸9=ժWޕإ=FE,o:=K' +qSJZ{Uy&[M\s_VUVu~[ឲz^FM@ա{GOwҚ?̿[N|NYS uς* $'Gu12)=V65ZWPHOmqTOğȮ՟ut^>ͶZR"Nl;3Ve7#V܏NdÉos'x'{VNEޓPoCgؤ뎏32:}Qu J/ٖG>J|{K+M׵Asb"*R}ZΫ.Mn f{kl~=ڤ=)WHlVeX埃 +ѯ_}ik>Q~%SUcvV~cIɷ=>JZÒ'gR{h``|S}aMPljnu-× [y&s2#^L7; nj20G9/YR.8תD|ޣoTeJ]igdǐ ~1n~6ƾXZGYK!cx"\wqXᎥ򪺎tERO$v<:ϐjl@#$2WqroCJ^C1v='"ޡ^SMU|O{~^VjwL1sW&+M,~co[9vZ)^Eio|;szɭ%q(4K=#2z~;*?zf.߫q4T%I;߸y'F{+)Jaª`g=y_.%G@֠-mC\[3*XʬGbq]SמdXnv'Q*64.wyitVy3>֟| +֤ +ٸ 3 FyӾޖvF5o:-6tk oj|̥H?̟,AzM:lg篛;10PGzםIoOīhT!Fb[~nw_ót]Fe+{_ѱkŶԵjED+Y-L$vӬFIVT?  `|F&f+9g6Ė}]r;3+jVW;n߳goz ]o3+9o.4x%:e_DVmB9"-F˩czƫB|q +O|W?oeVUR>'ÝLc|-Яw9`]0?1w&C |9В~}kEXXQ<`@2GÖ՛_Qĸ-S`K%<*A fffvUb ++ZewH +WGjEbN đď.f?1s!B[!bV1pGG F'B=G֩tSaG/?vsccb\Uc(R]}]?u:i9HiF\Ga@)˿KlK45^˻oljGO7Rxy}lTg@*egea^*tد,܇{w!W?/Z̽za@3~UqK;ԯ<@^|7܁.umqmEhjJ،ղ"Yg죓]j5l +}uŸ]V-Q>FvIBA+=!ܼ֥g@l ZݐYQ{*+CʺùY^J\%b}hy&"Lɾpj g=h w]i&ʳW0lƭOIFQyo$3SQUWedqb]-ږ1z^7UUGOH"o~wu;z e>Ǔ|OygtUWb|8Ck2#5n[ô&VB`<ߓm_BM(kE Lf%߰_6 x-NIIyuȮFu,•>?~պ.x4c@9޽]loɯK֫P jO-@>Hys7du,P^ˑ]Bt ؕdoJij_k$,wwCbmHų+ Oo}jQ2q[5F{kmUO7}ܕɣ5=|F]lkc]O2..:R}Ѩe!M4t4?GR 8\?ub0rܻavc[^-j+#Ӵ,Ͱ̽wHؙvJgr+Tv83r, +ø\Jl"3~ +Xي FLtޟOJǯ]jG|䙋zCgߋ]dy+Nauw-н|slk(4 vܒK')/7BiY~OXyYأ:h,,в05}\֋i+!͢H#]fcLl3- +!,˹< O׫rmS2H6Zsy>;J'ۀ@"_&b" ,ffS{plS.@#ʢ"&; ++1-ufT>X/?)+[`|ʀN+Ϝ޹?SwZ¢k2uؑy1X8DDLuΡluMrο\H$lFǑ0/P$cܮ@{Аt|1Ue6NrwםL.ͧWH }NWrc,pJ:f {dDDL\[&1 `~Hl`|IH0QSUzF l0 >\DDK[* I$G^qW,2ŀ5Z(t!AAE +]*I$UJ""""""""""bu,l綺lVj->=Lq͋K57+} /+qTDD@;S87H ĩ{|(l|ul+6^NjW{ >!QnKwg8 (?1>=(=ZѳmeWbE`tu{8?Dbޛv-)H/ +YA=Ϸ[,[!NJ7oö5"οOZ{EU3q]5 >f}=x[n>xJ쮃$%jfa*{10BE"ڵPr=O]|h^7/̼L0EkM0=?gyoGoR~u-LkW?iMėR5OآjWuroL;2/mt6?ce[U'˒lRnc߇uj&b]Mu!Ƶ}i|Yj+>2&~'/޽Qir]% +؁Xddظm8]ǒq]M #wMvӦ 2RUۈC({$ǥ۝"Xw?M  +lתʫ5` GMOvcFzXeCp*w0:ؘ ggf_|:R5{69.c:cWKf]lukϼQln֊f(q w;1_'5%T=܁ C0'ȯ* R<eՍY5aPYN+RvϒJ:W\dzC"ʙl۾>?2]ze;GGD0:V,u.]hyݎGO1pzIl 1nu3XlG}xXs*ũ,U?IJ؞LOIWlZoT5Ƭ:[7U/lDZD̞tnOŷZr;}ONx??LslM`UYbXFgDDD2K*zgk|뎻㹏w@>~FZcՐC-8R +qҳ>׍]].hͱb:_qq'Pϣt2Fkva#i7꺌JkU]+D!X[ @=0O¶qO& Ր>o[u{WFC:5R[uQj;<};̫zV]Ӳ_m _"U M+kߏSMyՄX`Q~3ΓҲ:zӌ1_IUNJm}kb5NDyy-a2/!K 0*AP<.3 t<1zڌو]Ou*o|I=Rz|=Oˆ}&\Q0oaZWeQo pU#=V+糳V =3>̞zZWAB羷9bԗWm[5 fȆĐGiE _GRev[]r~͛]Z5&;MAu>/ ۉBZ;+^]s>SRz;,}B{k̍ pv#3,rYLx9d|ί2QijԂGU`k+陸YwۚrM"@j~c{߉>f3iu2*5cq <=;>M ++'^%=sӱo%Ǩ1tO,F/܁qqifɒ 4J*kKem;I/Ya88UcrՌlvP4{a>Ϧ╵&V/ŁVPފ .a.n M)lQX;}{͎i]Rۺ}=O' +ʭ\UQek +m:vtjqijFwU95*6KzS@|y1uw+%?jVkVUr4}0LOZͣ!~\A$I.8 `Rj:l銍Oy_VYN}(R5N@VF! CGӸ.jF6]Ebҍk91>+6a*nU4Co@wL R`SזKcفek8 cEI:ĭK&%ǁuz1B=5j[vu@t؏Аv U >_Gczh,K+ V?V\X|yr𳒥^~FLҡQ3N.7EedcQU\*_S./21NF(BRA߹F&~NUmWzwTqcö屿s/!bUԝmy)fNrkKT̸^@c8Q=ߵ{jS_CR~'DJ$GXW݊QS\ʼC(XO<Y9i]`PSc>@!tB}[Wp*1y!_H`Ƕ5].qƮmK,ʥf8SnD=Mi-j* r?SwQHfequ2: ,Y2 AYvGE{͏uHh)#HޤVGMʣv8LdN]8![Go[{dJ\e؁Ńvvkǹ{ֶtw\qұXtA+e$cec %֡j+`@`^YHW|[͂bB@:#{rI̯>_lVՀl{r-ys11Ex0;8F^dyZr>OeqCqA$oMw#[(vm~5Ky.=ocVc5o zXx-akB}Lf}6dYm||xb""ScR@'þ׾]UnWY+ɞU}>}-~3޲/ 1.3MxgCl9]akz YP|.g÷)-M\j Uan=7Eg^=Uy .'  lt?y-2r1GrzWkε/t62_TCοOeuʨ YP|.]K3SGeR]]uu;=ؗtJZJ1Uw~y7/ tc|/3wo|R/0Z-״8h7;.U%of8jlJHx)!.:_kCdzt?^UG`4H},Kn_=b?twf]} ֨Gkb[EU r?)pD]M/m4+XN+ۭyӊ+{,7`/ ;]L>ڶ=>jHӂU) e-meIfcI&FUo轔]Wȷ첇u31n@6 7$hGcM_j['?+563qྏcGI}dk_ +~|Izq;`]5o昪E`\zXO\&Kasճ/=.hZmz¯Q_KWn__üֺ̓A~U(%b6>;!%cfVFIEH } @n#cDTeѫ|Ej1T# :ukmණ2:ض! ++;yVW4A}3Ek+WK,l!FB};ǣo.5/IkCw{{| sSc%eeO'G[̻awUkq^<kīF"tĹYKMp!Celg]ǼS Kn]Ma.2qv2GNد0 wﴣ|Nz^w(Vzni9տ=/K˿>Zώdݑ]%TF/9p){GQ"ycR.~J8#̻-jSpr GLG}Jո #Hήr`ژY]k7B)p|>&/W'2^lJk,,FVYK=J2MwuAկ[pm Yh0XAŎGYG~V +.IwZ&t~cA{@￯^-}qyV~R +{:2B˫)$}؞3ާNeYYaLlk,Wξ][i,*õ-x,{\>IUԫz7ego z:0ֲEU+KʯŶ:9 +Yμlnd|Qe[ȬȀ}67^̹šiAmhF1v@ɉ \:UKv[Un/^cZԥkM,2Cnϲ®M05+:2Cg7RŮfo|Xވ"AFZkQm+v x9_Mjw{LM9;Mj Loȿ M\uȪZʻ㡽yzڽ&\ +ǎ@i.' +ظm* oaa&}Zܦ5ԊϢJc7k}spnkmnG,r-PN'L͠ID6lGIzZ :5Y!Izܵm[Wc(,>e=>E>~9oi76Mս~'~&NmO}[qf[JKʧa MxFʗHv9|;yk;b[\TvrNz8My5λgPǯ[E+>+7L60Q{kϹ=B/k[k9j 4~qy(FRozx,@_$k~fmʬTr!Izܵm[UXT@Ÿqy徛~NB;d)acPͨ?+lh# [ѪO^>FOP;պWo.qT%5lB ̫dU;-iViK o( 2I<8o+!q{a {)!Su;;stgeQbV [>\ t;VHǰ&ˠzhy.6oLw ܻ K"mO0j=[۔k 2~?GD6cg݉e/I##{ t.=,c!rU4>9sSZ.{EB +^mm+ǻ՜5HMV.A#ֻ{ ?c#2o5PEnE |Om|c?.vՎVՑ{J(r\k/#)*J; Gb7Z3S75h6ֲg?|jv}5OK +qmK^!9-}lJ:zfWLW/4إDX̖J>;LeY=*΋MtYr'3tN׉%ɣ\8 g$+]~⾝oUcf5$8WVd߷ WqV.QUZy2V#":1nb`a5̂n(Ic{vb.FǕݽUYxf>O`ϗ}oR5ֵbHQHoNeC]T:@95}tͽ&EKMu:f#EBrSpVٔ,myר'urS(I5V|7zOOlQE(?qh$r#`efY^F=eQ88 tY|lk}OIbͪ,gï"`jr@C={͓*Yq[GSEȁr \k^+K,~Mg֘nJwFyye閔.P+;.ԃ9oY7/ʷX-eoK fgSc +䮴km+|+cdѝoDȺBYdS H$ԏ[ǶRfp5XJ};z~2KZtĢ +ml+!O@d|-^Bdk6e\0e'lOY52bꡈ]밒Zn9U-@^67-B3|ʤ[[wŁRGbuVFȯ@Nvb /b6@;x38 xK UXsg@l%~X4t~`"QѪõZcs~ o 3>""""""""";3ՋwX%|IDރ7&P>;%5Sf8kZlNT?goLR?Zޘ}ybVY[Y[=Aƒ`_ i/U32 o+jV_rTSQ CPv$ִGGAlv `t̻2lW֪(}4n }eomTA]kr6f] +Ui%ڪ% Qߛ'NSSs񲻒m[+r^"7W6mJPƶuwff 6I$Ŵ@WuvL=22z6-B}gAfgWܝ}^ly * +lFR +3`ٖ^0c[a>WE3:F[ٞebýA-pXGGLgv[1ڦKXy+2)rGLK=R>;@ OԪBs WJ}l,Hۺ=Or(Rmd^H rrcWԶ1` OЀf6?S^SxcId*Ȑ}w$ycz +ް lzCt{Lղ @ Tw!P~&Ա{hGg-[)gl ڂ_cb5܈sV; HPU7K ؖRG@;##MhE8峳k2""Ee|CF3܁,]kP_nZ$ߏ} J*aݑ]GP*&ivmxXV-kPlѮ{!+ܝ)];#t}3OVֵ1v='Л.QH^1>HL;΢E\l賿{yZgL +b[f;:rCbNuvރq1+w8BQADDDDDDDD@[[uLܛǫ-h*oJʠ$o{SUZ "jJ 'L{w#'VNuZQϦ[Ɂa&~X]gg7x~ʠcdzVVOi1=KJ)}?ᔾg[^Asz-p"^lv6Fת32Y衯.K'rdvYzU4 +bݙ +/ l:tۺ-6ۓŨE-c?(wN(^e`3UH}|rOetue@G`? u!Ҫ`=*#d/G=ّ5pV{3bŭPFX}Y'.Վ63ǵ-UDfW1j~]odjG/KA6-yY7 [b! +/aQn-QMDqܟDK-Gsed!F5WD@߾$Ө؍Kꅋaצ>WcbY~wJˣQF!6$O> 7[7z^]A@ܻJ߳SVNgWeEG.2!3^ ׳70T-h='G3~Ư x Q>v|%v`շo萃5z0괧+poYPzO`׀ːXǰ$ȧ /ޒU]AYXn.e׶WP9S">V=uQQ\i3(r6WG5ñd 8u@YVtBYZ̬QTyOOGޅvEyU$p^gS`kY +bGaŀJ` +|xt~~WI\)-gcpAK*`?9#Bal@lx?e/ɔ5lި]8ifUTܺ-%9q;'[޷?JSO ոөRTH.ctGö%gPCz1Îoi_XE'@@oy5EOֺgeǣ,c[ǓqmH;]ޠQl4TOOQ +.$6Y_쌻 3" lR?ݮ~{xur~gg=rOt+}~dFm&] b'7EtlNQRuQKǷy{l2J:3T2ыUW5d/e[Gmܓ]73&ڲdSuhZS3ŦM}Lk5Nj[îjub[RѾN`@e ;WĦ:r5VN=IB[ +ezھؘ͝aZ"YܠPʼڍ1z*-Wfuۖ6Vt멁a/;W\t et7J0Tn>&fgERuy":?]:ڬe[trrqbU{cwE}mȉ[,PçYk+99d5j=[Q~:,UK7Xy̬Rf_J~*Ѐ~'`rO3z~Mְq޵[,Y920/$v=3z?TZo2oJtAH{^~e~C\xk͍>Q^vKbQeSZUIyv6(bIuYoW'/Z{k篘/'>*""""" 3 + h?+R VVa&XHRX$KĞ~yJ2(\޶ޝYN=J*/PZ\a"pz.E' . +aU8L3KPb'@7oD5 f#o>f|'FFU-c&7>;ݜ.ćٗ lU>x:i%~2dÁc^9z"$;%l9mI6Eq,5Ǘa&'Cy?eO[{xL+`g"We*>8+/odbboK&`Z}(#C2iqkAU@Kk0; ;$I>I'd tmekXe 'Lo3@;Xï Yk gdbvI~xd/F99ywmL2#TTC%F* M*Iw=艅:F/ZS_4\{#tkjk՛tğfԢW!Ob4gVE +Е>ex +la.=w߷zfWMFLkqZ5"N1,$ص' +Ƈ&c%ēz"""""""";?>j5P- +_;~]Yqs=l;6z#z t{w_U0F% x6|sdmW*27& +IyP*ΥWQD—-M[leR7c6.3,l3+vϷmJzmr+w:Gs\JV|Ǣ! ]~ρ:OSýn.lQ5%x7&Emg#Ϋʭ" |ǾH>,)-Au'=Gב.!J+'̦m/~{o}y9|}kQ9/&g[ߙ|;2szRlu/N?2yO%Gȩ@od-sog?Y®*i\c߰;=t<\^>+0= εEL̡C$GoSŢCZTFpΉ'S,\V Flx57Ȩa4\}7geQh + eWArZ޹E2jW?>#eCmh }&Wպn.`jVqFT b*Lz&EƊﭬԶgU 묐HIgO5޺.Mro}Tci*p@*lPA>3.FGh9G+ft3S P!1B49Iv^6Q6䜌;1}juDy u +*AJau.q+}t=u\K|jFK`]|yGEs&/&rX2%P2.[Pes:N!r/8:ւe?Zbޙ)NM\Fy+zgG`5b1oԷ/2_Y>a簙]k L|`6B'_]}%|A$6McVz}kHDD7H+pkkح]µB퉓M`eYmM{߫*O%bOl#Ę\w8ڇYS7~=燨*%¹mdbg%%x+GvuQ +Tȯ<߶N%f]QbSԱ*7Sj: )긹.GXW=>%4u<k{@מ߇͑y3U{V.GS~c6'P&ⴽY&J_*+{߷}I<\3h];{KX]g&=c(`H)>-Nj6HbȲ ɹk'&JX*(c =ײ-ͯ/ ub+"(D?>sx"" ULoڼ_Sl'qψ{iGiF>nm=+pnV\f~~$/oFı+4d \163./{߈3 gFEVlORZ&,W_AEj* H_wg=K[Ҁ[hx:i7R~tsSuY$'Mb?Iv%4'.UuE؇⎨Ww(<h9͹d7#Dk(LnplԴMt'V#‚X67yztψ6TXk5ߑ> :Uj+mH,<W~&ɟ1s0:^>U:s<}6cVDG_Ec!u'P79< fSæ+Z%X (B{wuJz97) +"€2|`|S<,,lk`vt "K.E vI&7?X5bPSZ]_ĉ;lmh<רu3_ ɫdupRƥlj}=3*. {ZlwzUȮƤz%K]պeOSXOc bkeY4'ŷ˶銤.o`R n#S+.۲$puR{?* ?`uUϰ"zDTٔ1[* >Lܾ۟CFMzi]իsh~cǷ]> k[Ry{$Wa=jsTm^u^)]w>2(S~5 +%@Ot*ߑۼ ԘבZq :ls]NvY5Xޣ^̫-\y{빵 3:.zP{ b$8@I:Oվ(&v2*:ȮJּC!x?tܬ.MD2t;hTokdJ'QlRf5`rTS>gm}; oe,ŜV!z'C}zub*i>N:/Kyg/M[e}[#4|xƶ;f JXmPhv߸=g@|,h#[!7`g~ Zޤ]lJB\TUl{8r/,7>q]fd&;cܟ&U]TV$'?[tzxV)8 I<=@Ijf`uΪri{Ymb@_ ߏ]lN?ءT; h=7L~P񂵪CZC9JaWQZMrvHu&٪O!]SXQq2|XSǐ;yd>oVF10ȩ~ݲȲ:zͿSԫֲbM m{IH׳>_:jpA` = :>f YvH]VH&+Ȁw&n%al)X#K'! SooG\  l':g>&W]j!fnO]厙4彘_g]_ʼyq%Hsp%=6վbJʚ*%tm0?9k_VX79ln`HSzQ't6B3!zO.~;O㭟m}pTXQb<~sX# jַ +~eE8Z홉* :QW-aոxkKm⺝}vU'̎?:F"jEyYۼEî!@v_o)t +^e.2j_HĩNw#mU k[_}lӒԨ:vOAߒ%Y}DOGkC+x:)`~*ZuCSekj`#Da44az/`5-5H +?(J)P1jWPh7T#P{x?yzˈ實Ǡ2]7>Ǽ z„ +FF߄}w|G^QR3''`ef\˕*5`w^Ǵ=]Y.Sj˭I¥I;O3-zˋ +)p4ʪ("TFZ̷N5XW~x]W5b+ L}p]#gVN@uR(Ew'|5lŠXxbg[)A޼o~u.D1^G\G/{mtVL*( z<^GkZS@<MtWN".hr#{"&>7OfzioQIrRC2G@$~R/.gV8]DSX|•JI'M"T\F2'tKm|~K\!I +mҏaL20 CJZoe䎧v5_ץ**TGm$Ecz޶7==NnSҵdϷ\ޤwPwɣ* 0 H@#f I$N"Zܣنccg,a՚x͈'BA|;3[5WNUv|*9oVfI:TOՈ$~ܒO0}ǝyH2nfKصX44ΒfҟrNRloODDQ=>r +q4>d$NQac'nڪ( h#^%OuH2J[oiS y?]L㼍*,Zޙ?o BJDDG8OPclTTegTax[ԁ~[2D];JQϺAfNuWaQOm9C?~2V"FEwOY4U`䥔@#εe`r)؎M]l{]^B d b6?+$OU=X=?3 _QP^Χ=:%|;:܉9]5z8њzՔTUp55(u0k6ev"(Uj2ňt{.WS(=_e-RװЫ5߼Ϣ'?lk$3*PlEPXO ?K|zkZլxv sznuuҦmSYq逥;-`Qx^'uKޕǓ2<#sm)?@O:F"_PɫNvv %`~fōP<}G<}Kwwmt_qY-}TCT㯺$sI~If,MKb%x-Z{xF_{.uh5ݏ|avy?׽O}ʪYorU_{_'~Z(}%z7LZ(D[*:gm=φ.)ּo~2ZV򴼖eUMe5I5u<{URŊ~XXHv~OE"-XCݟa/rvI:OL[J/=1SW_3R) īҬg&ᛀߔ~5vuV-ui%u,_K4Ҫ % ? MŽɟUz<ן\9\wZ2S6te#b59d5Xnyt{e7}-<VNf"NdXw¾tu&Z +:8S[[?bzOծVuP="V#d2 rYlI1/e"(ڱqlbGO~ߌ>q-rA]1|%g#?Nul2WtWOE,{Acc)+vƳ?71qrXm:봥+`} Nःk5dbqia 7 `pN=߆o,ܯ_ ʮ +[R{FgOUI{SJ/o)E +A$w#7}#Ֆ,IL~FO]+ן̧sz1}/_p#B{x2Cfn_;lĞ;fSku${\+Q{8dj#h1,y ?c\Ԗ]YtI T;[߾wc:c(˫#>lu-[OK}91V,kHo$3Ю%`iW',$5c̞NM]_' dj;: _jӯħC7%k8k.oR:6%3w'7(IOL1k{rZZe&f,wBOsB9۬..LQL03SuWkgH: +6cM*Z +|}2b" _菝*ʑmNpYr۱LaՇX +~cL<&fRA|A K]3.5IPcqt=4tLjkqb|{Sѱ:sFm@$v]а-7YJk]o t (:*RNkǴ1z_^>V)GndQJcX +v 0T / )<|l)[? X30^?.{j]LIMW;."w{xpoww `lkewĝ{V KM+iFwٖJlj_XDk[A @CxVK)SjM}}]@ϲ6< Ǐ}~RnB{8쪽OCb94TQG[ܫ n]]cZ!v'`s^A>叹It|9 e7K6Lz~oVFjKHHHC'rsR7bLWbjon ?xF',USSrGeaD^ +d읞1ܷձ=8쟩DOJL :&ƥr<Pt~ V5Ӯ[ +Tő{}Ə+r>*Qo_>c# gJ|>O }η3qkAU +x4,U@ņ?]iF1ƳVv#q=};8gVP|1MpHȣbbWPV $v'["ZsÔ+xװU?y8-(' Q ty}wY=9}ln]k|wiwO3p]3)Ψm_b6? vΉk;5Mlu>ÿ'DZ'CNI2LlGQ@ H%YNe |htL  {~+!cNkYJT ],[*A`iۙ)?̍l#1+h"i8_^ݻF9uz֭^p#kA_N:vGcVޖ=\ؙz'dzVbx W,І-j\XGC`JΙH#~24: +B@1s=`5wO6;;ںN%py*u.a՟SSzFenGЉ`L/N+^)#E +P7?2{bgeJϠ9܀v~.!5vv +ܞZ^M[_r6ie> V=at|o7Uw@jTOo{Jz6'Qek ThYO%IR6N+xЍ)ֻ2GnGe8}ُEu-יw32*K0ވޏLtq@ * +k-1hJr& Ԫ':oz_h~zN-ޥ.8xޡN#\/47 G=[^-~}Ny|w[" "^>*Ǔޞ^D7n^gON0Pn1_O]Oir[ CwOu"u "kd; &'_(ԔVXr*X.6%ھ?K-pQ1m,R\>QY~ж+jrJ!jH>yX뎯)Sz~`t5Rx^^2"aEzn%`ȿ{Zy11zcmA5`{3*"""kٿZfݏR؆ru.ly:BY a}ų5*qKPoeD^OuHYs;]={.9GT[X*_>ݷ,b ^ڋ#}N^"""GS32ڪק@cy&vߘY_YCP-ɚE޹=Fn+7eSM-ZI\1me=Je:Dψzt.EnZ*K)ֻ);>^ff+Vڠ? אhkcE8ԮjFX(ϴLZ(2?u\qZ5`C mk*5cJďʷ +KhczdHBb՘d[IQk"î[{2Y*vwYz"EAl.Jֶ qȫjZԯb ]LJxfM`>;+eڶ}A_fDDDHՈk{T*W_yܒŔIiUb l~U?bPӷ`e22z  dV4 +džmsd_nŧ#\}J}}9(m1N3skKRNh[m=teV2gO+%)ԕkM5:H 5@H;bt]zw*z9~bª@~n݀# ֩nN+_!fW@ +F^2ʻc5:~KPx)myܹ/&|jz<8U=GEľn䠵 k~'[LF:c9~b_>p0ap}\{9HZ_Ee]}8dk\mp'BCXeEj j1מ= ?_7H/f5. {~f@|f,n,le,GoCޡjXI +EjQT$^=N~ǧ2lqv:tXꍥ=@=ﳪu:=1^1gWT?|ͻ\D `0ֈב&6OG9wWytdJou=yVλ# =iPʂX=ɘu,l\nVS%c ,ͣ {V)}mUd=Ee>pJj[V[;;@P=17; *ױvkB=:{Gܣ#Nv"r).ce yRcuiy.P=iteUUۉ۱tO9YgߪSoL=ʼ*GG4;kZ/T|CPeC֪UY[{hx/Zx%.,%pQd.=#W/uu ^UcRۈ Hے3lL^-%vmyA}'nÝE.W>bX8+|{=Ƨ'Cڦ5k/^L[S=v.^vwJ:ےCҫ=+ AYDžfM`r%=$~LFqo||fR r:S)eW .+'\6&3q.L87~'rNXj)Ǡqvl,NGPuۙ k-]@H:r(k-{%@`G&_ț:'g?/kQ-k[?̂I#߷{/x8%ݚrKՔU~^ʟ9u3@t;6c͏a {F=B~˗EuƵ,@ ǝI<'UEyV6`cx'=1eԊ7gW5X ֺܹo-J/V|=.&nEМREЧƦ-{:RV=ߪOo/nUvVr/#Z#CMI~6(69v{,GcG[5 +GͲ&Z.#V_v,<ɯ)s-Z;VbN8jAIg%QE_.f-–/ + s޴yoirrN=4%Lkc˙^hYH^~*vL KzUrvu#D}F̮GN-7p"P밽vN*{0+*œxWP>Mߥ\in6Nқb? Zke5n9Nd-uWՓm=NXMLl@OopugTZD l< +[˾Agc;-kpҎT%+W<{k530Qc3WٛOTͲj[pJ?(ɎqqmVM0?3q3RX$ֲFEO\y:}}潅n7RVEg kTahVv5y;Giwj"UWPkAk,ԇ$w5cbu[\UGg+]n<3qǏi^ ^t__z-鹳D@? Auw!Iv#SWeRS?$]67~Z-RC9f +'dxAQEN뿑`ņx%Ix[j- Ց`?!$izނ=w[_ܪOp%vR$k~U9p(N+XnaEbZ8bAx::޾O4R-lo\{v7:^=xճ2֡WG`7v 5OVȫ"ۯV%Ur$K)4Y,~kmJ +rTҞ kۑ:r2ߑdT~|Ȥ>`uOqaX[s8>nzZRgu_Tl;Œ1  ~I_GL]cuhUn^&'\uq,d5F]Uem.[vxru{>YG3?ezX܊TY^q=ʐ7Dv=ķo@Aŕ-T; 3oZ;#ZwՍkgh/`P=Ϲ1~OZ֦ tSZq!}']y_TWFU"۵zmh v65kV9f:N~2OEKo95[e8U92vܡŴ5q76bv %$χk-zjV@G$hpJ<#r5&j歖ZJC㯨 ~-W"cc1)%[`@?-v` T]ꋹg!Yo@Sk^eZeVu^' +2^w&1jDsD=Kjּmvm27%=5tzs-Uնֈ|{L{VӻkG> TXv%H'$AZcd2(uݔ gx{h{R7m~?,ctdlKm{} v;vkif pZ}$) pAhQ@,X'[?nmmܶY_\@K4 m/tET_zt*pYQ%ԩԾ~^bX]k-kmkZL0Z#|WJ6|yRu/L2=NZJ:#$A l F9ÇW}tKxYcd<>?ȍx3zE-8R`aB﷉[#;ˆ%>eau̼ORUjH 26fP˳/MQ#nh{cܰUۣ4|Mm0FHOKɈ-US+R5%*vxk"jk5 'lk#ܓ~>Ƨ*euv0tf  u~I'%O}ߘtyl>d܊s~N]VfʨuuNBW$."j'^ȩ?^>]8KZ#J8蜎E;p^ ̕5b\짹ge&uc۲V%I 4{b:2jǨqZ)^(k?$}~1(u0^ZUYH}{i5#ףT` IO1SOR]3 l[{Ԩ|5Rj2+u*EPC+GozhBsѿZwɹ0;-;ܪχ)ZTh *tmX<߿E ص+r>! =q#-%Yc1-.W!Y`Tv֏o#l~d- J +e'JG`II^ ϓ입]5mE (0:M b]V(Vkr`1!OsISY k׹g_ +bf ]Śʖµo/{}g|4ՋBB5X5V*lx2:V&M\Vܥ<{1^UإXl#W ۭ*HM_`6>=_эnMרya;oN Vؗ*Ǹi/õce.i.5epBCq (64KDD@;&N.1FfwU#Z^ ɉI,Z{rbe;A%Q0zUNV&p gٽe"ؗ"[Y.HPOr@'Cf&OX7 x~)&|KY75mar ~!~(nd[txѰx2CuDԛQ5c%#q HfL\~VU.t!~qiu2""cu ze{ivOrO`$QԽ1 +žg9WmJc֮=@a؍LًӺ}NZruөFڱSvfTK~s\yq}o[rD}JO]ygr~dzvkgT]zX;+u:$u>K\9Ҫclzi"],^kx蟦IDDDDDDDDDDDDDDDDDDDDDDDDD@W̦ީWqpvUV%o7? uG>Hޠ$h9~7۷~V |AH)c!֝I#b]F-6sS[:m҂Br2˞5ay% |y#.#a+w y9{nC}>z-C^:rJ>}\AzgK6|A( 8V( +OZB̪/db._ʡZ'X} z%$_9h>} q%^tg4r.tU,aswKUX^gz:D但h_Q3sz]6t\Q-Njk9;K>R-g8Ԭ1doӭۃՖV%4܀( .ǟ`tη0V6h)MuܲP}G;-^FJ>B7Z*x:`f1*Fc:PL-:/?} ȸR; o'?cٝNG=K5qFB+bH,K;&6pSgں(]*'csI\y»Z e~d1FEt׍L,ֺzݱz8k}IgZa;"i 庫e_3/Se/fHYOI]wٻ|d@+[uYh6b#pU5bC23%Gʚշjqj=tG!1g|pԪ(ڵS5k${*CҐY}n,ɾSc:I{ MNāǻ'deT"feUff.͠y":RtXfP븡#`?qJȠ3r:: Ϩ&Cg +\U{w;J^iP"N`4 35u7}z.⡙l/':b TK}UHZ+oqyU,{q kdm0ёkwc9VY@XV69);߿]z-}y8 +K  `}t$Q!M3;2ONh*MKR +)m x캼Ieuq߷Rܫo-IkN`{{ˋ2 QQ_Nw˹;;jX_ϡ&sQ{)zδ\CqPA$|GcFxмaiv+}Y*H~wv2C u +Y$O&'T>2*m%P૯R1,;m[ 0BPܹ!F,{)oܙzT*/Adt˨ܗjVoe.A?̚춶Zٸ:܌ +X {,ejRɘ2C{sEdf-ft AS=S_gʦ66X]nKðUo/l63dZ lA4dtKqiظ j5Uo(&ܼ.U=E(*;NI8kqպCg.KmGNl2lqIzjZQFBEE R/`֩~aň~GmXQ,ǹJ.[A +1oljʠ1@:Ϲ׺Ol:p(\YHi^HA OM WDzf] \OMBN>N+76U3@&^RH2d}܏p=2 4WvcB{K8s.@s[x, +GRn;rP쇱RN2"&&wSWյkO, oq)g +@7ʢ&6&jf=0x#h=-uNѐ>C#mC*;3+mPv#bzH_3b +mVn<!#~W^M6)t{>dDLlvUGf>fLD8}92.TfoKE gǰ?R&LDy0sSWHRFu~X똝1/n:[APt 0>>'z`Us]e 'DyfTDD^OuHY UXRT'[K1S4?U:;`;vM߭UH#o  ݽ2'Ou?Wb}+Mn +WLS"^eKhGnG >©")fbtMuU$vn*U&dL|u%Pm}/Wbڡ{ ""aNGGd +Ϣ{ {ĉ'uB}2""b+| d=}vw^zVfCE,Tm$b"bg*wmPB!W$ ~MyI=lx66<ˈ#&俫c0ٯZxf.ûꦿD2^@݇r@2E)S#ba0F(j*VOHXȠ Y &]틗ƱkB6<1gVl|LҀؖ!+Nt@:FQkjsD+5af;?A&rzݙyT`[,r$҂91'}vyf:R]8hmù*Gcq˸Yf~&9jMyȞ9w`wے}*q}ʋ͘Bmwaߌr2*sF$t4;cşhGS? (m~S [k +GEMSd-``5Ȯk~JwH v^}kSe*{/:) zUixu+|YQn2:nTܪlQIaי b0:~B^,',e;LeRc$m$59[XXQwcּ{edcTFҜ;εy~GLqFJ^@ ~ҶC%rε)59]^>bsRq]}>c̳2gk>nuPùt\vl}MrFCduK,ZX *{6N v#z\;VnzncC)6ZQ + &ї+7h^9 1?"G{lmr?f]jQK@ ևyW\ }Z.]Ll^h_}c]۹2_زjgPAkzNC۩7#)cZ|8zom? y/gñ@ r/Q^g'3汕5F^v(k +ò{A+zt-M}·-`pLFQ=ܵԄ{? ?厛rlͿM4l[HP|3 zYvkֱPۀ.bum__6Iz:ڕ#.Y +ߺ~SdهYv0]>OIACZT8”aɻ -cuD;mE$>+Xqۖs𗿒NA~ZWf }9#gSB|Cz:;F#ֳʒ;߂fuB3U$ tҰ;4Sy.[@C':{EN_|?EbRSYYTvᎴ@֔lu?-B}rC/2$J+JX\|P?3?[eC|OcW~3L!Z;.hKHUy jhkmqVE }vD)+mwۑ_+ij[gfF?Бʱ8[ד~@oKK+:Lb7[k]duSnE< / Dt&ua=̺ +g~$ _Tϣ3!i?i[Xr Hv~bHtGSm@E,@Kk3󪷧V3/szmaoP1P4È&O^NGNlf +ۿ-FV35\Vԟbg1~!m#D6;R]AW➉[~'y-n?6~_X|p a=Jp܇_9m5!( +I^Ztuul[lTmb0e QߩL|Z* _SOow9DD'x9n>1`*IrM~fZYuj)^ aI$P~yo>İd{s{ sևjg`T'sEZ쀊AਃJ}ϒI>dh!+{\,ڢXV7lVEUh z[uZkZ+ՑUɱ-[r뾏7t>E +-ع˒˕_ֺ3.ΗUs A? |o־|Lt!ٮeZǕ1?I3"kߘ!X[qd2j -Tl:܋nn?P7wR0pv:eאA۸0p>}-Jr٬ sb݆LΝ֨uHT]El~w(vd +vBgꔨMKrſ(pr:WʬaMe|@O/ lޕ(^W׹yQu+۹fɎXXBGq /'efdal21W%xګ×`v#eucK)6RYeN,{K7ё:^-8"?gB8rxV@6,Oc'濑ƋW4nA/^|6kr~C3d\sZ&QW}2c*ӒKa /v4w0-497xjE/vewض*_T#~vW+5gVmo9[rƶhKUAء=@E[pp쌚}]{$l?"vXwۋ o^}}Bvu357c7G- +Vh'{7w7ؑI*|:qXkl*7]^P>uvN7Է㭗 +պoyWENvWv5LtOШ.t{OiWzڟ]UANv]f"djU*7~"/ְ-2jxn ;m[Z3l܌s]꩒IJ8% ;rҋbp ]h| I)_۳)Ƙ.5Z"GG?wX=:k +;n߸x٫C\S}do+9pWP@ma#8=ƭ2?&nXur~g{"L#+2ORr}+j{pAPÿ^H>X{U[:qGu̼>ө,YEt{~CKU˽SJc)Z-lđw e9\%ֶ p`JQInqE쨹-f_#L~-ͣ*Bڴyt #~7m}alƨj7O{~D WD^TjȮ޾ϊM[<){1pD_OIo +] %Ju2貥s@,O Dqdy)}YiZ97XUbG>ˣ:g[:i~]*잡Km}Ǵj[e#DG*-J^:FK)f6NO`%Q,}x/5cak{vkjPmT +IDN:Q˂ɋ62DD} ]Xh6 gNƺչFuPn{ոbW~čoїCk`v;؉eq*@@Erhku2Qj5sؖ҄k:Ȉ(alTGd ^5S# kZm}%QJW(Q gʀ"""[2TgR%T|&W-B^8Dll""""cYFFWnL[AܻM)+P +"%J2,@~:~MT.+Y+B)g(l3o̎[/''Y@74"$hNƈ=Vn]BU˵$%H F "FeOAOW[i/`ml5$vpXzeaؼ,O %vXxL(=c_DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@#'잭@Qw}MP5㩋0h˲,˵ُU)U Jۿ/ԞĤVW[?(߾L ,L,f[K:]ຒb)Dn=-c܄.?1fof[؏m8c* 3k$HnW`f 6%(N7:l8 ?7i 9Lhu" +*ҹ:b""y=K:uy=I`[׼"""R+GGGz:ތ"%)b6cQ)Wyw=$y%Q<'Sq`ڝA"Q]hc+ {)KGGTDDDDDDDD@+;# +keGO,˿{?4aˇ"v٘j Y]UczdncK]VY?x!ПNjO8ZXxT8gC_O0~<̊Ta++ۏm<"Uj5~ه]Ƥu`?Phc}rK \lҀEގ606'TUηuuȊ@o6讻(#`Yjҥ܅UN$qr,J2jPت]G̳?kWH;"~(x>4Һmޗ1mRb|4y0å_Vr@Hgn뛐o&쪞ɔvb ;nҺ,=# ܴ؝`ȓMijN~tFĭ :bxq?)ͣ$Uy_yV'JۓX+Z)w y:'plqb%o\p׆=kM}B'EEu>Cnj!UwA7lg$lo^A'_6|;eדsSgdr=ToôɧKg6..Tea&bad||K nǒ͂?ۈ:?IS# +1-זZ lw?׍}eZ Zc|PS3X1Ԃһ@{?PYq @K1,tt'oz,$Zk~-9'C~eGNSuhkMl~Dɫyꋽm(S?۩ʧ-KSb[V 7&]XX6d\ݞWQ]~`@ù鵌G*{,SONʪIҏGs5o'#1.WgJJ!^A=ͮ`ҵ86IAy12Nwc_5持`R|H jXF?zUYb +A0$}A>7?P=N{U1CE;V#v6U-6ƀ+t\[ x7H;Gn=(sԆP\کBo_('Σ:VGbNUbt NF]ƀ_Po\}2z6+XXJª̵l@^u˪ګ {7K[$SN%A nu + |N }vF|̼ζaVŵh]ʊYNr #>I!W1>s5N/VB2cUP6جH>Gi|5$bt &aU&HB/!j;X(cm~;fܿw"Bܕ-S{ +$33n(6'=OW8t܌aWiE"*ð ؏qwE7 ~g0ba.OQkQ9-,cjH؎o>զ`Y#0TM?1`{}R׶,4e*ÐڝcDdzJܩ,UlФҏ8ξ$"+D%YUaT\3Lzܡt]Jw;KF*}(=6E(*Gq ~ WoYPXolԅ=r~#C>enFDI{oDM"""Z{Ȭ{ +??%WW(Ƥ)– +_lўwyꌕ5ҼSc#34tt9qбuo8W*1Aa[O"m>loQTtw-iH_M'GS GJz)U2#2`1ב}ÅsR:p,'do;OTF +rq}Eٿ}kν۾֩L_Nąf:쨪6O.@K;zkl?)gf7@g-Ѝo(,=M:i=v8寒'%BϲlպvPQr-GĺvxG^= FI +ಹ ~^{~2gVbP4V!@"^Wj RN}^Y#3קmow6ՋX*4hR{Rj-gSwY[kJ⢩b蕒Uu~Ga[W +A߸=ŕۛ5 +r,Ww߷]>:,E5@ +XUZ _"wܙve\]^G.ս{a_oPJsuzl +dV,h\}݇SB+-8$2 FJ-uaU[`;Kv]ML@Ǯw/F_ΤHXم9WuG^?8zJd8u߼zٳ1+O>eM)BH6=+Ϸn%׍^S22YEsG1:UM+2J1(NgPUlx>n_OT6OsqƀY?Ֆ*77_viA+mmmbvU}7%rbB4ֵg^ZX.T..d@@ɬA_]Ӹ;m^/grCbֵf׻v?7s!z4\L*Ug"(ʠ`r#[Jӭ-UX]vM}YG{qEt,{b l^-Rws{7BymYܟ`sxS%tƤ]gxc򟽡^&2eqאS',TJא4y",TwN[":nM0dTQ#g!}c9r"L`_jV\ح1Q)6 QȣV׿bAeJ/FQ1:?]:aaׁJXҨ;$I$Nɗ'؞j5=Ob"y{ +ΝzL5齀>GЗ-׵X+yzbOА_@j <И#=[5eiﯨ.""y)J00 F7m ʛR};nejXL4[#vEN?2ve1=.&Ƕ뙹ioU62IjZ9]I42K9x6X~jSMRg5̍?3"X(FXWd(Qԟ h|܊VR6śClDDLnFX~ DCEvvAm~D$|^ݴ4Uyu0ea؏^nl'}jfMsOMt-Z\ .+ۗvfuP_&rԫ{JՁL׷` fur3W0ŹqƛJGwSh-͢TVm3Nu|Moo3WXł*[I'grW>kB&~n}==K"@sw'Ա?M*mfڬ {>5?l0M5ƺqP +nw>vAk =OEzvn4A F2jE&T::C=?QzJLLgtaJ"[ O2Cӎ׽V?d#׷Y:c(]05N\WrO-:4;?u­Kr񪵇mTk:YqR k=};ݛ>U?yB.VGK:%ñQ=I\ӚW^kݭ(^Cs߃Ю6KG5{HJY n;fr8wV8VSy.$]_2(-lO屿5~tdېv!7E]6ӫɣfQt{_r+/ta}kJ&e +HӒeRWA[t66scJ^?lv.OXqh겔9Q{3iEޓopvh{=C_b/A R:krÁLqz&FI%lݑ/, =d03 +`>ȽC&̆d7Y_fn<;[*9VyeymV77ꤑLv]QnM9i [W=#O{+Uf=02$lI=*:3dP;ƨ܅ߟoV YR-7y^ו 7 ƿ |8}\5.{xȪ @pC0<27[c[!0UNkT 5Py֙S#_BfV0_WkbGژ_ f&6_RGzx O+@a20V`F߶JNl&M{"X㉎k`OovGc7wop5XA@m/k1!Uat3 SkH!du*~7˦1CG $o m}̙cQUW[eh%OX hjIN28TeAaM}N:n?w~oԺA'Cg]l_ȝk*@>gA ;x4UөGMr¡؞ +uCC0[U=D rvQ@?0%e̢jv~٘c4"j9E% &xͪD7fP{*¯Q^=#IZQ{OeMe^@CVlZ*(P<4ҡezU鮀45ݧڒ+b`=< zSEMI|PN_ Vo9_ԓJ(ϓP}C=,)f $̉_zew5mΈTxg>K䱽%Jy|t^&lWT.Hp>]v;=ne޴꽝9WE!f =3czڅYYzg]o t^!W2󫦟Uߧ QŻc`)5lr/5z+=hck5XQ {@$;>g[H3F]*GZH;sJĿ/mYNeJ-0'2ޮTlw7FvYa6:u|K+ų.jA;~'uu7֦dW-d^۫bmTߩ[7釆9fό:xl +ܛB6p|I#gHuv9X¿Ic@ߟy>$]qEt([eL|Aj|9v2K=Y#'+ y|Zz=.v+U^Cŭ tQ؟m#٘ٸ桖jq`}0C;#O$̧_j3U?3ֆ&y:~EQ˝v&}LK+#'0bC~Iohw_Unql)r 0G-bE|-3 +Żo$ʩΗgRƭjW6VHKwS111|ޚz>#5I[;p G]w7':GSSP!-032""""""""""""""""""""""""""""""""""SἎqs98vT: Wg;_/MXazMSj=bGe?[e +X H w[m=$4=+8;mrֽb[ۺX(\OT)57C;׏} ^f1 U&4v{B36ֻ-{;}eL|Sz2x @x6 (;o]r;yҳ9g0,)|A!ς5:'I@ã_˽_㷙G\Ll;U!e,>Θgh^$owSaYֺGŭ m-UWUH׷i%SN?mPE 5s16M cqf(U.H;w_':e6*k:!|K_@F=bdqF`ʲt>γҾu[ŭv0OVԷm{6 sK-=M-Ƥ_Ԟ$޲P7&lU-W6)b]K=KW}-0:7cF,]G1G!VWPCfT?lxWr գ9 +azr6#$V F>%n(yT]dwYbec[ zP];l.߾Jfт+]n$Jɯ%:ROGifawڭ5}gO;d-EUEc.JߎziO'UI5zu$kG eλ.9Td0dTSX~ٴ?Pƨ_Lm8۱Uz~5Ǘ.CF'PKJ:fz&OS?)xQ+¾k`.ɞcمupaS2ء_v: uK3>.f[O@ws_}`$/QR\䣫-ꘔT.޷=cRȏujl@]Aaw/=V6@ l;'Y=;ߙiBqVV־RߖS/- ]]ae7ZSξftGU8@A)'A/6Eb[F 7ؕdVȖ ,?&NoQǿ'/>ʅYWU](ܕϿMtܛαy-쵹T:o Zr~HcgS>CwQˤAu}|%7gю]"3"XȺ釫lϯϗo\5yin +^@mo̩:\5,ar?r.=MVCLʐff]`Юza}w0q(?&E5lpbƯPYža߉u/:vA8%@rY!!!;'e[/[=D;iGs 鷧Pev(k~/tLεneg}h >0S|5VQ1:1:7WcW}lzъ W^"|dv_!X1dL,LC]mLi袅I#;vmE`F}*5q y'Mj(6İ>ukjݼRW[ŧŵf$0#6>[NF ݏu g4W vfR;ḻT}6T$mzX-ǖ):r XFŃk~<O]Ʒ2?Q ŜYwQǵiWaV`x&dȶAgiSG:f{o'~+_ݻvMǖƵk_]X}C)|{R ;K\9Ҫ'2 Y ?m碫6h3lvebY4̞9tfX-[ +J0m v0QW.EMuh,鎆v=ɬl2]K ycF`!NE %=BG`kuPb/~㹌\3T%mX0ߝvݓV9Qc:^LoɔcQFԳZVoDȎ։:̄9]eV8#[[ԙ̧ ص?yQǙH(z*75J̦dK~V-Y1iqconm7,E܉rStK>#\yqrµ~ `N^AKq%ٿٹO…|11τL\.θ5{VgÝٖ'2q#j?)Uձ-ʣ4Z52a=u!> úU̽TR<:oSQ>ȴp65vbvܒFրG'dwUʖjX6Q >Vd!ֆzU7ar@_D{ z'C7Ǫ+k{K )ߴWtNm9AHԐA!OJL/ N +AY:P7{7-׿:+ +Ό}{żWz۶$r{$1z~&w\R8p?-|a=tќfÑmv!JW>'lʪc-@;ru=8ۏFC/*lPkBB3 r G zfOQSpɼajZJC 8=cՙSSk W)PTa7Pv7 _ SE!{Se7f/{&TAf%Wk[}~JOL{pګ^dYk6P+Rk-ּ 6yE\P@hqcyƯសspV[9 ۦY)!ʵd/Y`5z߾}W"Y]d'M`=7}b)Fw*՗euVta (Pt̵)s2qJ!&6Xt},Rr݅ Q-_" ґ%.otd|O,- +nm}@!=/%j+^uZ=oMͦ0IrE|)OJ*C~f ~rCa~8uJOW1X9t Fԍ|<=S'ffm6WȜב'lq.+uU;k@ 3 J駧4H\7Z=@]twρ~`nk3RjKW zO#U֤70]_=p~&xw-+zWB7\e"W5{/3ngDr#X Q2yhaэ:kř'^Ic6tv 2W;-)1 +*2mߍ_DkWWN֥op y'k?g$?U[BP97#!HL + |Vî䥎>b-a*CzlflN>/Ⲉjֈ)}/W}\]q?}qSXd\+=1E8#̜ҫK+]{U.mlMZ}Ũ+5=ǏnK3c~޿kz `G:4#DZn#f0{[zՎ hǯu"UB;Ky=;4}@.pe(4k,cL6-MVO]K5dcCTyI6\Zrׅե0DdQ{W[b⹲+F ʊws{6y>2&%# +g|jYZ2Gyvޛ{QS7oRݼw#}+Ke#D#AqS]{"zQ3>Zd]lZ^Dօ4Z׃UmRRJB;h(ԋh@C)bTS 4V:z W^;krШ**GwzX£3Z?H䡵1&#cT"Iu 2VZ=JcԕvB(]R-2 {f|9_@Rt4?Vļ'D\z%W䁯?T`BF45K{CQYxrʓ6H +(xv-[e @ʏO6ޒz>#-oi]3%5H!@#D{[. Ef9AϷN#-j+.n s/bg/ǪDT=^==} /e8=>( 'g[$$왓0r}F-6>6&EXQPU@ +UM)]jT=fJqy +TĞ*d'@?2&*TƊ Ciln-8wWǩ,@(D^̾q*QJ ]Bd!VR4U `#^| $I#^eX4akU$wYBtJV|p]ZHu7cUKT~ `ܐBmw_#tc^]ُUthJ)A&: +Od=+V?08_,[Z.JAa21YeH;Dv%7֬PIPH?JG=$<[#D[;02B vw ~)_-o޼oCdL<ޏH9#Gͯ}~!(ਡx@5yV5T+T1 +u~[WR+1;`=yVN>fj#O[AYJ^#@ҪiLuZ@HωU_5o6Tl/oc!F&*@o޼xǴzv*:GH$n}_=磧Z.7C^ IT]u۶gNƺչ譬]i)qb65= +_Ԍ/QINr=q<>ٽ qT(+Pʅ=Kkӱ kMa r*BZy7L`jt7^>>,| #hrEoJħ#^hJFXTO> ϸRإX 6>F(~H*'8jJ<WzMhBQTx/D@1<8༎GScaRs;x +c՟ꚉ"?'f{LPNĩߒֺ>P1vy۸:xw+s_N@Ku ң(Sg2C;:nJ#s&wܱ^}fʶTYbokr67"t&Bý?v;Vs؈Ob"""""""""""""""""""U:}PNvC:/@{lUu^ +zo)+J@>`Etc1gK{aX˷}]ׁ$:UyT]R׎tzӐIV7:&Ijp*93H9c~  >ri~ +,XnkVq؎>iɷftejm6X XA 2z3zbY`{֛pԳiثakojIt,ӯUΕՆpu#}au߿ +э*ʲ> ^v 8Ml ;7笛7pu<dqNCΪ1rIөVvӱG`5xZ.{rZ[}lbanN>0v;jGnO{]_`~87z]1b#Ɓm]C:,{|f +?UF zڒ4w%L޵ ~6OU5qnGS]361*sUmlOlFѪzJGWRy(ӳ}~,| + Ry~|~l:ͮ=~feb뗑7%3?R+pkjDU}1W]ΤIZsm]1s+j}1n&ၐl{rϰ)u2""""""""""""""""""""""""""""""""""""t~kkmY%3#!ѱljP@t716.%[Z|%hl1#o˷FB(+;:ąo'7Q*|~,eXX]c\8G2t?-#xL:8£  v;`eP+WTou @~z\:({׻17Lǣcd>Eiݙa~ȁu-0%Vztu 1\0g:KUMUm^W gd'`wo9~^ĕf^(j.ZN Kq :RgKDDO')7TX7Db"""""""""""""""~ gy&ɦJ_ӫC+t + __wE;ՙKü$VO#cμC[V,>}^nQ6z ňoK_ ~֍ 1lޒV+':H_#>ϯZꢮ]=\6u*P޽w ~uΕgLƯMY{N=vOn :1ۃ,5;!۵[rA!C-߷^O[kj-cvDޙZ%[Y_ژ#}G#l`U1/ezC1M4zO$1Xظ<;Nl[Oek}"0kS'u.g?\ N0$kȦg3~>70&cxt ǝ?!+V$'XΰSa2rccȖOrv.|[{y3^Ͳۭ +2zLT$˽#$~Q'{聿dc|Ms,ZGv 6Oq$}=oH:[Ub» +3K}geu*0fXP(,Hހ]ۿ1, + +ptU>SS;bfcUzwԬw X0FVx";kd*t66|OhdoG;c.zֽ5ί)鏍ur&[ZYYFc߼=FEѬr6~q73؞.-Y%[̒N[71.gȫP֕)*T$&a.5yfl*Ic=Y]c +F.D]a@$xO*qBJhV;וnyd䣐wL"c.*BW{ֶ.tOOgZޜ4~]L>,/.[+He*Pf @>yjJ+&6oRIokҨ$ߴ}i+y9HڝU: luDWn2בmU32Q`lOo4gdm*\Em GifLRoVbe2ǶL/XPk/OGzA֎SF3pj{Csoy{ Q -Ly&#)G]FLS?N +.UrAwԿW[ĺB0<;0Wsň2z7>9v֨ BI^D.GCĸ5GF*C)4{ DIKXI_Ig_UKhm :*Ϩ[KrSb؃0~&|:~Ema ;̾kdbclT~$̩l]-,7헗b}51I8g-ִbՙ+'5Yy~~&.Q3>dcSzKV +TϤ캬[yZk)*5SWa p3j_̷z'a+ +•ԍrw]o]KULK iN7Yδgޝ9]ă]~^ey6XN~BV]T7:ٛV+yZ4>'ϴWPn#oGDx$J3:8 + % +݈!UA'=f/ȫK9)F+*Y;w;^n%9i}3PSRa:a6n}'Uv]hY. 敚}2ǻ~6Ȉ!zEij?kXX|MUr9+<hw^T +e[֦]_dU멱.(a#և*9W+dC%v|-]րw?+Jhl#mUFM?8dG,LpmJ.P+eI-?ґ_&tH9F,,ioDd[SfǶqb|YUf'؟RޓwTŭnȫ"'A'PNL$^ 8uFe5yY +"+JYI +7k};) ām[`H="V^F4e4P68bdg7 sȷ屏Ede>{T-fH*-kz"Ed-U,o}̅d~.zj* Į@:=7%ͶfTa.ʪ` nXWz kWC|dJl; oHf;?dn^ղL}Z@l !w+!- {tWlH//z(g"rxS`]7)J)V~%R85]C(e +ِ=?)ck8Z]I*:k@xܻӳ/7'zfoٹ/}>qUZyu ~NGf-]7~{z֜;(-n%wXqXR@ٞ{erfPE[.* w׼3n-jʅ@o‘Cͽv ui*O`Ay+tz5W&P_XNfAձ2^S0 +Ģq |/Yg?o7JTSޣk`u-t,\^}Jr((\ڭPͮk_ eVVO&wDm}:Ӑ$h$&^EX7SeJ& P6]IU{;9D'CUZnDKL>N8.͜, -\$w}fӍu6V7ε l{k">8 &C/{5섍 }x4ٓ1]+gZ:ZƱuD뒰&+S ;^؝U)f 6dF&M?̌>F ޠ"l&Ьb;;€{HLc/)م#G[9f<}k#rj:jrdcib՗UzbUA}o>L rz;U@#DϏDOQg*Q%zG{312Qgr՚:YT\ŕWjoDw֪= ~:ltܡB65=nؽhZnRۅ]ic(HHtyw1rj'ϓޠ">]r8?.V1:FBlgߛ.Ԁt$_CX/-EdLx[}nh-(7YV; +p`oQ[q5&=4%KX˙?}8װřṲry[r +K·DU]t>ҰJ )%xɭ, +CqaņGZNR;ѯt~s׈ްQ"A!Y+kܴ96]ZqU"d.?>"SwJ 1K4~ߺODuկ&Jhևj8j "p[{k[:u鷡+,3! +Xx3*RYuEIQ*rB]0xoml,j2Z/)+-b4N0QT +Y5#%?Xr l}d=[-+,#t/0#k bkJ~ZB?1bﹿ`C/Bu|8[*:?^e :H, ؊ dnZiivNIVʥx+bݓ}xTmnAQ>q;ߐ;nNu%FŹlM~ooi};~.U@*-/&N=8=NUC딣lXoMٗ^;}vmvrfUJh=\!]|B5ܓ04d~Hy-F۶|I[)okn +!OHo[$ xyYqB;.u_Iò8J{vipnFӨJA Fïfs=>c;q,;#6X6uĺmlV@>oǤޣз?tK׉#q? RWDZVgo +̇2WIfևklIȈsnOHϵ +S&{( E'Jec6^2YBXv 4~R<кccejױ a{: Ku ooOu}wN:mˢ;s؈棈- [DDDDDDO'"En+zn*bdD|g{<7wַ={<(_ O +"5DD{-:+R|y:"yO'DDL~WSdzᴱXoGDkȑ'6΂eUle|f܅M=s*fUd`ؒ*#H.kN.@4U>uuJ@@%q,:iG'}iG('Խ,eӈ@Nf + ʍ +u;ugc]ΟyUԲ`o;2Ǥ M)@LO}+'!Ye[b]v/1VTYE}eևC`uP~y+c|`iW_R;̫:-V +^í!uw's&C|Ivm50- sU=lB3ݶ4u;}:(>6PnVgR^M pnJԱJnC +;ofY߉V%ض7WWKwם-F]9@WJm׼+bI%1u|NkȏcQ1J/7T9.=XH$=[cKrYԄob{FUY*ZWJ`;J(8LVr +#@Lh.9~2HCFxf;~@$NEj Do-}uS%xm*TXtثx2O  *v&^GR%F쀬F㭞rK`cT3kǩڵn.>tF3^"dLѵ vT:=~:Ýs+'*\IxrGoNItɺܦu+^ +#N"CꯪXc;UR +O%9 $L'XU^_[;lz?():BWW#!)K;,bn?%e uVtШ$v o>7&'SjZ$b@Oe;?^5g0Z@}[9k,jQ]]{u1z6o/BԳp`?W^ߨ̀w#Z]MnvJX=?lJ\ޚXڶ 5-FMYKʧWՃ 67);{P}qX,@I=UWYF$,{̚鵙fS uzB[i,Bb>&q̤Y9rej-nîeu=W #?*⤂ޢh؂wdUr^`@!}eq^ϴҪ}jYiZ6įsQr,VId:V7GD5)໲ SA:߸$_BJ=Q›Fe|^ƻyаu2~I-ǗJovo_1/2rl@x䋜vߓ~RꗨPi6?)Z*,T:]ݴfj?!"첼Z+qvi +|߾AWnYnwȹsZ;ڇI|_B^zou*y{ؒ穇M;UjSB/ɑƻvdZ"|?~#c`u ׃M U=l "ߗ xNeAu}:bB֤llw^O-xw*#!{7gH9oUh9`;~#]lzQUUUB ~_yB@`kQX}#^w"0k^ձyTN~DU|ۺ+ }k]NC&G4_X +?A]|LtvHkԨ?cz7]Zq[ƀ>&/B +{m>X1{/ORjk~;7 C0Ozsdce.Z^\Q}`Y$l,Sul9 SgeDfc粍Է.f+UyF)j"CBH|CF=+mv* ^;:kڕ +5u[WyH34V '2)dzg~\Z9^_@G x&ұqqRϲ{v߶mvH+[jYbz/?]}g.gY#%&8PP>m׸Vo0}P.)x67<|/SЭPXۈ-7S bjK!ّNB==u7q}s+yNK~S֫iҺߜ|?ߗ4nC}Xgؓ]JzV=Ws~߶c>oRJncA|޻~كmxTuwFm¦o૖M,[T2A3Y ⎝[Gի+ҲFUS73)9?a7רP=&m9Pjv6L?0D0\ku?&Bt\kН= E#jLnRT4U IBmh߾*_f2Xڂ@~e Iͭ^ *i!I}Sۿ d^gJ8ziPv>]֦J6u+Y'!)}:׶n X8쓲O0&:G6"{,uh9= .ªv`uS1/WB?S]`$-S'bz.ёJt5nv)M2߷b6f#M o3=0TA~Ԙȯ7TB/ 뷞w%9D:(vhC)=$vwFL\r,j[ |p5÷jgQsV?Y[ZpY%~u? u::Uư*~jo'w:ifnL+Y_*ZPz3ؤ Q@UgO};nJ"gSp_\k|U鯝u1>տi6.=VB-dY] y(cA~PN)W ٛe8#Wu`@Ut# +`$r#ckXVG;,Mԍ2~Oo)V)&RګʱC0E$Xxme Y~Rkdr=`ۛU[ ++HS3b*V<÷پGc$xX}3*K-"wdk^'{Ųqz{SY+6mj +L3"P?ӱm ElHw xY0t~P;;vn6Mm:řA#vjWH'JFϞ[Zkr "a{jY1PJKVtKn$1A9,%֭H€:ٗt>F5yhڊEX2xZTVQJ)URiOS}oi^AuF5ft  |5_HƩ/uCedY-1sRC,bʳ*QH,{w~q㯦jXbUWW|8/u1pQ+uO v^!t~ƻ]ET + +PLlqf |K?(L`2eqi${U3E'ݻwJj N%'(o%QT1z^.јhP '](z2mí!W\|F|&[}AǤrhEvQ5 PWpޏ˳[A+~hp ܏urQG6)7ۑxB\UzߞOdK462:~>YSmHA|'c܋[ԌG* + vexVTFҁ FV>o^`9mru./ :^J"btn_X~'c#ghW*|OW1)J$"*읓y=31Mv0Rd t| Oh+WG^5)=JZ:އs>NGM +4sB/sw/ebS[x^;N.>/FpP?SoYM*aWFc䐃u*.:k3ؽ7 o:^ ި{vGF=xVTFϓe \oz`oPZ%BANM_OƪjR,CmWOǡ͉R+v@=/F銽 + <k[xǕ*vnKZ/5.r<~eT|An;н?m7 +kO0^dW`p{%Js[GP?Qy*;;S]u]$+5N}8P_Ox;>=n{+9*f Z$iѲˮVBRª?pcddSRku9*kkf`)Ir\G :ȞObGU&>Cc AL=_Y3GՇĬf'^\}5gl+:|NM'³t ]/RjcAQ<А? [Yxg]i^č1GS>Ӫ۱9k\XC=HnfB[kRT|{yi7uYmu-IH[z%Z[[r} ڈ9*kIMrqj5?QֳQwԎ/ذSVv;ԯuv n06Ȝ{ !i0wǥ;?7-v|#s.}2{};܂vaQ"J\/1,Vuہ[މ@y)ְaMV=voMъ2SGuݭFG+B;ee*h{˹e7-3.ȶkHrK!H̛hl[BQҒ}n7J]YշckN055izeh ޘI=|1; ,[*/Y[B2@̜쮧՛*n2a!~moɟŦڲ{szJl]+ ForycR> bSAwf7H9X+{W4?c^m v12,y2ϞVl~{AuV'!kX.aŜ";x{O1+fPNO7ɰxߎ÷uczif%TSH\\j;.{@=?XB` j˟acةc=|C7`M\q6$/O`kz20oH]Y]GgGS^]z v"sa=d ͽ{̻_^,4NW6[dށ=yU|ֶv5B6ֵUGc;߿i%*Ȼ"lEVjލ$Xn^;Z%~/kX|A AV}$Wdfں׉׌ :p~g; GݟzfOk݁}R؃z~5zyF䲦vqNbȒ֘6N{_mן:R7mLD G[J3"n>#ctףI@$ >?)M8ސ(mejP]v%] ++^E,íB[wS}/uzYܠ|~*]qdQ-__h6b5c__NG5*{l96>P/kSsd ( $J|EOQg"M!cԞ}WJRPOOϴU ICB37N G?K˱DZ3!Ԃ;[_0(yoѬ'f w'i.=ֺ9歕.miH HT$!ۿ~ݦMzKqRˊy af֋cؙF^}{,7zRoPa{ ~gtFZPǡPMfw}.ВK&K5lA h#-`g.C Hۭ#w5gAI>,[39 +@@;f/lJ.o/Ml6PL׺>W@~,Vǯؚw-yKbjb#DJ#ʌ|µuz/"FHtMԘo,s_7/%znIn6)R;tO`uoDtޒƮ%m6&:;~Kyȼ%YtjU>=Չ5!gn+\Sp#u wW%lmYeVeV9F +uهi}3AjeppOoFUg7ɇ8{~uW9AӾ:y?6uwP:S7aoҝ{ #?)O. + +ٕtt@=0N ܬam0rБFqcS|U5"Uϲ摔3]k,_ɰ  6KK*`OO磯#gS^{}f[}VPkҚ[PMƱXC٘lƤ[AUfP԰})b{o V@]!Ύyfco:V""/b2Rcp]Yx؃H;]_LmU!X&#-oDkDc`jtVbwbZ\Ͳ{vJ:&msZ{ PeUQ-dP2kj2ڱFabt l}ZMŋ7!ب^N @w2XC)BFvߝv̢E +*`p}fݪ:p4urE G*V+[{A) ؁ݽ6LkPu >~'4XI$$,II/dWJ q֛_7n/svY0bA>ct |kR]!ܺV5öλ)(jZ2 ?=J0iVZQP5(َٿ2e 鲃Jv\mu僖e +zv) <0aw@ȪڟkoUð|{v~z%*菐Zv[]}kZgwr74zXJq_Sӽ Kdr˭4Djުvg$bebaׄ ?3bIfb}>d?^ǻ+;=GT@FF{xz-U[<ƸOh jφpUF l 釸ez&>>[1kV> }|t7۷h9%CnHV^8h&Ztz+5ӰP^;.z-w #iNƼkՋɋ=Ľ͸ݻg, jujp)>ݼLazƾǏDvo+bf _*XNnߔ)}@C!%I[U?_y~|{19[8ε:OK<[ z'XB:?0:]2-^a5귨:vi}!pqߖfE`+[`߾ymab]}Ͳz'28MT**~uv+w{ wWoGǵ+N<} El#D?Yi7XbOrI=̈xٝTG--`}w&T#=0N=+sǖAbB{3әg볈^uH]mtC#:_Wk-m[UoG tĂA:gSycJ0bU{~%#w5itv'E+d~`\ٽ{"k9Eml }q>%>^Xh5`r{J:wTN!FʈV`T0W53Ϡ?qOb""""""'DDDD'xۮ淯eKFKX dtmkn0rii>j bvCo&́n-e-x>,u0U+w}H½Rѓ@Ƿa{\:Qg{;{;2Y|5N5'FO#N],gɾqv ~g^k7>oR=hΧn7aYs~o bu>)jة`=o^@|U?%t3{{l l%v?1 u69vӞZ;x Hif^WIǶ]2*#ȅƸ +;;w؈7;vMFQ #(O\ + J[V1l53h/!XhhgXZ+-RcZV.e$g]i:YSzW8u EHe;|~2PuJYC4O*P%C~`~O?j>=&ƹƿ6-+Ұ߆au.=+x^0+؇6rFC~uFuJŲ^C#ʒ{\?lZ[e-]^@ThO."E1W8tCs5]}Ձ#d_vpH+YdðlRr`6 6OP֢BÑ lؘjYTH#X Lؔ-%u"""""cӈQ\NHU6Εv{2LkT#tAn{3Zz:ˁg_J*X|h12l[#;I +\̧Rqe;_V]`SfǖT~*Q1>Eƴct7/{WR(-cD{Q 'ҵ}]2&Ev-H #DH̾N&GXÔ^K_ts$fo87wϺU9k3'9nJzڟump}=Tj͉W`[ԳҺ]cC 7bTw.""%ضDqvOJE1d%%Y~*{0ș u0WVZzw=N`ɭďΈ X_O'*?J¯o}s2윎;GX޽qWmડ$onq.aQ WNĶölz6{Wro=v-qԯKW}/^Mc [)Y77- +RnjíT߉`@ kɑ}S#}z?hT-/+:Huv^Fz^nZM +X ݙ}fgF]ި'ӸXQ`WG;Hޥ^U-Y.:5Vwaڎ"z~Fܨbԯo_6^.z՘HEp콛}vt[Fl +T) 4GvwQgS8/`)N 7/[wwsR]jr 8g=zneY\hVPVo|}{{~wndeMފ:Y;t|µ%Աp㕾 +D'zs,*BU'd?) -o}3md"2Ic*޻(´Z?^fV>U98vN -Y4+7?6tgUt3/C}5h?]|tW-y ψކJ^^j#t&WYϳ US:,CT?{g{w''fdQn+d/.; @x?"YLi֪Gel';~R/R9Y)b^-ޓ=az{-|krk}~ۗ$鸷eRUE*ީ$woyӾk*U +q`eԏ>O}ԪqG$aޫo!eT~_L,1U;jQl! +bNx}C`TJ*~Ҷ1m'̣u.,`n$Sgg*'%֊+g>I?nD|0>;@{iv{{6ɑ}gVg-eU@|~?_(bᷤ@@Lǿ׋PFnJzxH@=+L58!*njF%Xq#ǿ<|Οm*t SclĮͣ.JBJKrNXLމTVEDڎݸyceun=1^A6G`?-R'Nf, &/!Xpp/EPsv;>&NV~NgPnNJ?9!TI2?5.a!v(~#tnծ͂T8)h_#||̫TZ/&f^ØznЪdSaK4^!LDë&Y2A%mhnAR^UP + ȝyeCl.N<#q$PԂٵڦpGucrp+gN9޿ {[# zzbʲ vQ_k#̓dSj䦫q-\~ejGf߃1^ZuZ k[oI\7AoYms@c57)Vc|wߍ˸k#楕^Mv'BJ<zxVeȯU ;P ;3/{խJJ2λ^EVy'nX]y-noQ|^yz5r:O3?=ZbN?Xb\{+eGH Ic w|}}{^>9-C]mGbTyw߄R j֖ UQjKt[YͰaŔ,@pV:3%kLsIFZ>ryZO2/ôUv{ܸTP{;$UN..oP65WSƣS`a#F>}U]W"U}7dW$l^%bq,TX\#ܮvN7%WEUK%J7˽'lkcW7W\T|=OW+fQ:a2^(5-~[hho~b^_LɪS 9F߆߃V6~cuLfMSc+/kǷoǼuEX}QVE1qݽ%*kuݍmx-eZPWĆ0:G_/&n5\Qhkp-hmͶ""i;vڼ'WҬ%3qlTj5j^@0N?_>̞fȰ2TiUA$< 3;᎝N:DndĎ\eCԵF32E}%6- - #]"t<0r!.sLyЮ\Tvr6)YX0 z~v=ȡlP ՗:qIQuJN^iA$&`N5o›im kD茽BŰZw*KohLK>kϥ>\+:]C.Y].ʳ!Wث6"C65+_-[M ɢE ٷ'@DYeU0Vte '@dC|;xt*˶ԿL0D@Sj^jL: Kt+˯.NƖW~eƊioWىs`%d-9` :S;h:2 I=wZ[ԭrںm7vv4jd`m")JT3~㑗Nu~H%Xlva#+ΟX]7a'޻t_"R䭫tx#`[c9av*ߊ,g{ϧ>u=\,ٯ%?mov|hLFQ7k' +)\bY[51 kRۘN~Ea؊2^t,.H WGb}Elj<ܹe2:+-mV-ec_RmMI {  P}ʳzv7QP%Nu KsmظaV*oJ@l'~UٕԵ) +G7a^>s.fsW* +|Cɣ|"QŕF{(pT?B7g0[\m[E4B|+Ztcζ-T̓^@=η6 ^2JWg2cSB~RͿf.b 3e6*/{ ʺDL7k뵈?S+4KRڒ_A9<1iؘf%V@CwYև̺:Uח,T5RC bIv%Hz6#9HVG^rNvUUATsX۰΍)jmmSc"Y ]6i^gIc;K ^ku ވ!gG9X<ܸ>C۟q5yгzv>T)8=z(Ev/ ` ת#'>@BĞٻN7 +gﶻjP#7&;+R}F,Op nG(] y|?wٰWV !HkPݾS3̏- yF-a_6rw4ci4,[J^8P z]:`kC5uA.}23Ȭ5UYY+pfnNY78r^tPqM<Ľ:?GZXT$l)mx޴>SR5cѬr{ܶ՞իN=hMN)U֕hڐ@}7}J@=-Ǐ/m"~ۋb%Z%К Nvuc$qijlmXy;j[ɨ1utGȈn{5MSqpu?B=LDDxAZ-W57S3*""ZȯX*$ oQԫ6P3)A Td3=>RZÏ qrī2Q%UHt}=/fWmT6l=8Rf5be%|G&LDDDDL`{S aI̅Py5Έ̄T;J7)"[*utaC)DDDDO &[l&Y#ca{@OJ1s +VYp9v ''/?V,"E~.'26MYu0ڲGD72"" +3كPlg')W*x@rFǰ>Nxs7'/#q{K\+` )_A/\Ե[Tsd#ξ Ŀ-:X\Z|F&(>*vu.^6VM r򮼁߷_}&\nWڵڕ>AH/zIi~%[De{ wFvuٙ5SWȻq] kz:}+XehӱƼ~2x6R3jջ1Ga ;o1> 6ԭ.[V,#%r;y]|:UW]=do奫3Lo2suv_]zu 1+~+ه6%Ul/J?q荞öaبäUD?0$=|ZM5 {@»qK +%|wMԶ'C:z+U\Ej x jVk2ޣN]U-goO4yvJl'\p)n2QYg&,5F6rB%{$/rX+;Jr00+2c`2e ]|2Wk̷@jְ!e`g[U]"[(*;[{nmx֭Mʪe ٪ t<~)9aڛ@Ҳ6$=:ĕ[WUlK (^?x>;:Ymj.uy[#Lq=56_~+˓&\;%Dkٕ9>Ax|QBuJ/4^Dܦ+;yeu^skZu[ aې{;L/3|:5+jc:>aPH{6+TAp֊bu[~ ӌ%)viO]%_7?+#+Md5c5F⭔>n<1t +>%jV.}hI*E9ceT2VYF$@c{f_7W^N]5Qv l/Pqkd~aK|6S{.N~GWd)}UoP^:;峲%_Vk$ 2M@QҀ_:C2n~ɅjK3h-p+M/'fm<]ePPCΦKoLg]eީ\j5:"UT"f$oX]k79r) s}D<~[tԱ15M g;y C|n|1EʊS*5ؤ'^eU]AG3酋 yw$G]izHVU1v z6<ﶏ2i:<=o@dm#k'Iս^+6Eri`RN 45yD@#_~ߌJV,P u:#cd|{: ܼܾ"hP ΆɖíǾnԍ?0]#ftʪ5R’[55^Ұ31znE_Íi#yA5kKԺ , 7"&NfgP5FGȢ5ߝyӾB #h +K>4HnW)r";1ְH63}oVtOGTTddzf5;׉MX+bTa5)nT]%I;3a/BPT-kİגJ|w`'TŻϻmla"C掕m x\PsvpT;yaCF&F6-Y^a/=㭀{ԑxXGdZ+j~L=4|:nm{4wU;kY +Cs;l#:vEJ6ޟ%吇QJUٹ98`Yȣ2}0zGO{+`*ys=ƻ.ϰ;7 wVOFMM{tT-W/S=6uL|ޕVFUoJذ*ۏw"l88fP떶cݏ}$Ӳ3_걞 q's={ѺNVnM*SS!D?^+s5  HV*HIiԺ~g]J=@uf+ێƵ8~ +tb4eQ~O~]+L@k`X'c ⵦK ̻n+=G, .=UYUŏqnz%o>$'O^v0\g`@uj:>uxFJ]E_1w&M6cbQMCvo:܅Ȳ#U$r +u}JmHJe[ޖ~aXC}o{L<޶ՕR]WWk gj4{ĿXjV8̭_ OHt :~M?'4=LU&;tے+·v>T+Rٴ{KYUUYh4~r]uXG.)ηM-ƺ,jQb4]8ZjGXc[VX.lKc++e|j2G^:3Be /.Iw޵1VN6M]Fѭ*uE +? gU鐧 + ކ}1,]S*IǑͻyz+B^> :^o1=95`Omܵ綤u_ff+ū[OGzd&X%"v 'zd׾+YiqZՓM)=s>!pӦMT⣊IwQ 5Jbީ}*b4}I?OcИխH4@ z^FfF5ʫutݸ+# ^ߙzWl ȍ1kN㽁~g~/CnlTa{m~ɗ2Y+eh~>*A tI=0[zA鼪O& +8rNfoĜzWbMO5X?˸4`%x}ܑ+7-UJWM58kv` ~t w~m'Zd^fgPZ8.ʼnxMvYYV[iʚOV˪bdѯk)#`hGGK*U(,@OF>dkzY6c:[T2ݷseQrk +יޫBۖz57&&~( lFJ˵:֎IIև _KY?\YT(^'l><߉tǡ-+ZknM,wv%ODv1mnH3zgѪs-E +̀ s=³"~ZCv[GM^dU _'P9s/tf'kj?9'ubWвoF:K}[ +qv~&<'Rr+ &6%w=b_[!u>6Xį0h3#g@Cgo~ǧ,6ɉ_b1r6.z3͉y'^(T?;ox%SF*j{uof[5* |8qCM˴wd=A׷5?7}ƪm[8@ʚ@@,K܅0[OM4ج:#Pm. +䏮'V[kjW!(RGc'ĵ)ebo$x+I։ﰗ߮ҷߏ^Ee> +S 95a]v0?F\aoVJ~k#а]4hN#}A ֻoljVA5k t<5$k+` Ŭ,/#؆O]˗m[WuJՒb ~b`|/ֲ:ؠd吠 a@M}:g'>` r +^ Wƻ]_TorUwH'C}K3:c:Xޣb>Ֆ$w\#zq^\\Bvu? ik{ꮷ^@mD=`e66^mjjbtH=?lkE֡t;P@bX7c{?u|CطYʵǮød hk{Ƶpkz*~* +IǾUG[\s)ZlTvᗒ<}u1.M7t]гqRs2K*z4P7AF:OUֺQ-B|>d nGN](J`_RđYVd[ij +N*ƫګ~z|IT3 x;{̜nd6%=W +@Ć_) #7Wg cFaՈbF{GĪ*L¼n$v tPh.(Ȫʙ){n]*g1:P# #/CFK`dmwuX#{jw^Kmu܏fX_Y?M!UĀ^^t{LZSe(ll"N}G=)N/ZM9 )an;2Va1!H 039zk2;b@RX2qS#\’줱 +(F u5ع.GPPyw+UtPǖ߶dDD^ufuK_V*; 1mY6QEMV+KMK\A$;lއ`㭕l"2O$hygA^}UN+>dڅEn;H ףUmzJ!|O*ȭhXf.~fSPT޴-%¢=d L߄˰5`v>݂&M~鷻Yf-LI$$: 1Gʺ:>eΪ ;i_y_$cf5ةv>0aOc{=Xk:?y:ʄoO'ܱlj;rq){^=:8xX6evb<ڇC 6Ρ~TVW.IM Iؚk+zNИf,L[ v80$]F܋nV-6U^+'fd5QI'ĕͲ,Ss XCh̶n oE>|ǹv==i^S6DK(@Pw{wL,EwRm}67 298uIX(@Hwt㉀-Ԗڴ7đ +G̜,& { ubNvgI!Ym4-goS`m`k{3zEȳ/ +R46tM $k:CdZE-`,}n'_l3\F6=h݊#V[@lkω{"ioJZQ_iճ5}v"0z,ԵYS}ױU6X$:}/nbv=2'[$_;ԫ\ Y,fjm$zF6fFM\ +gݐ_@V},c`ׁժ8"vaj}Ř:fSp&55߹oig2чeyedRPu[0= (vt6Gay CގqPq܃nԇE8z.WR,Q-o%hcRb\XqθG?RѨ{sVX!8pRu7oyԱl{)Jrr^DIm綇o&R YRd7#N}.#Mj->_ȳ-W}l@;!o=L~8^UaX^ w6Bu5,>:kca,[w{Օ$hlI/p[.)Ust z1 +N7ӛ~. q~iG9'b<"pz]E311`쾠>vv;];(Y^<uKٹo߼/t:BViąz-ηRJ[TK^6= ]hl1к]_(Ys1O dz77lr%/qhRCr$44|NU|kyV֯e.]G39TףlYWӺmWWaZT.UU:zt`*3'3,&0#aJ*)NJ{_гaZ`Kek9Mԃ@yyF;VEVSmVJ$Nj:6XLoSۑ͹Wu}"lWjX4u!ܑ͝Ճh*yw$xy}73- m!#!݇БS'S!رD*~0OaxfTDO51:~>f*JВJo'_U ``$3 V׆IUfFD5ޑÁďe9x+;=}AsœG5xµ +'CNɗgE-a}A'@O'Og{I=2DD5̪>mC%AZ(ero~?|GӰ'gs$$S+v(6ZZ^ζFy`';ZSd[Į;؎\v^@u31Z1QIrGR`ZOKK7C-=4$3^*Gm?* lH;qjXŃk}ǃ(b`.BzPg^u2IģeZr;V?Bf7tF1Y5rRJ<eJTIL}{ RWgQȪFq1뫗rh~ŕYIlΥ6EX'CM{%[T2A5pz=kXRw&[cf}MVu\uL)UH]WM r3y^.]N]UԔ=xZnV5I޶f7T*18TTʼ!نr< N ~*>Ny?]acL~﹗(ɫ$StxmiFV}@ `1\֠C7!DLAZo#8Encm}1zPW卙MMzU|[33>}:>O-Xֶr7mמIs&SڐFb;}'yl{K?1|FEV<#Cz?C~ES6)]%Z?~kp1o٭~ى:S-#T{詭w+&)^Tخ;wRZ]o#?~Ǹ[q-unBHPw#F/U}Bt}N21SYy@䑽'2 -75OQ~-Nhܻ15@}W_j <ʪͶ:ĀZXUb;߼oF-m@U>7a|5ב322+`h}dY꾿S^388ᔎ~0JsMԱ wy!XjoZZ7Yq}}%X|H:߃c(^׶8 z'/عG#NUzJ1e/ܿd偗]ʮVUۺdn_]`.B +l}HԦ޳O"ΟnS#ɦAelXl2APDϊ cejA=mu>:tȱY*HQ<x? +epE˭VSn޵ǏʯGC/SZ:^_7ȏئSOWѳ!s ˱>k3"V}XF@>䟤v n[v4ZR~˔ײ_aQCuX~ޅJW^߄2>! +WN 0pU*kTrjHnv̱i~"L3ϵaMU#^CkG#1xr==PbRUܚk\=ZÃGu!z֙|8h3kSqƯTE +J?`}e9TS]TqSFgVt˔꭭ԥ{}~7޿Sywb*2Rzo_3MuTx5z`Bꮌyc[׍{/"ԁRgs73T +Sux l`pӏFCD8;P۸#b1[zK5.`z2qrp" [I]G_}u/LՇwO[l.huc:be4Ƕ?tkq^pFSf) [K~ ?{XWG/hloa'627k?eGMŤ? ) +&eމi1%x86Zܞ*?SjAx[H]n'A=N'1/}lŴ°I޶&X.(eQp˷˞mS_=/W}p{k뭍rOiݹdrg\,n`>&:n+ƾno\+F)w_RT$ 086Բ[q_NI=*a YhGHNS?Re-Cz]df;_-tJQ>^yƝvGRu2m +*r@BN؁d0OPEKr^ 1 c~eD +[7ώA>E +A=a@-Le|y1F϶~3 Lz3YF r_ULF_Ye". vK]#daUMuI[E^*̺o\ιb1,] gd ژ]LeKI}8YBcO~" ؖbƉMcf`UpNƙr7׷~k*w'soGaN=iw1p:Ubg1e):?DZ߈*uz,<}wEQUԴ2y{nm9}kO-<~}We_e*70*_w}M `AJ"""" >)8Jk(l:չCbTkb\(tv;xO 4F1f&؍<` ^F|}j'k~`ޔ6}ǂ־Q^5J MapP+*@K-y}կ~ۿ~|k ScjГd'/KY[K lx:; K6K;iJO~@=Ϗ< +vgFʊ2xN) +_JuHCtZkJMէu;H[EeH|P{$vJ[{رG4O$v+hP0q-bℕ^ o{և*eH*A Ҧġn<{w׷WU)BB,eHNee˱lEq09B`ˍ5ACio^7۾` +)@s^ ,u*Ng{~ ﷝nSONǵW}rePĉ1Z%(yU,Wo񯽭a҆6}|ݵS7Яm׎oZ#ceV*d*?! BxոXTJ%XxkjPT kǪֽ*Ew +~{FgZ~$Che5&0'FaHPxR*2*^j!qUGW@Z*(P@Kyt[Z8#_29]_謚)kZuB¡V!E'8TeR:vYA^;M?"FʑFvjPh4jymIru aUM +RTAkĸoggC[?XJ#cn:-n#CjTVaW$veǮzԂ4\(Go[ zmk[8Pgɞ/OKMai N@; xKWbSVv%OyFQVrjYC "*F#cKXT`J+JԒtl:BLl4N(?>k{oZ*(^(@}| Iť5-yn7X=hΛAeПq)*֜A޸oO~H`^e' +pOP/G=}9kzhr Zp |aPH,+Ŀ̏/:z(oXSM҈׏{$;xUGB]-^1йVm +@w2w=g+** +Y҂Oîa5 +U±#v{׉" ZJ9|Rq'Ze߉vu2^, x~,f,cӔmSq4Ck؏DDDDDDDDDDDDDDDDDDDDDDD;C*fd|[Vݏo>~Ӟ5fdk򜷁Iy#V:B=j2쏳^nU ߅3/u<}$:vnVFwRwMRi50M-BafZiY<ºY_XTX]}~c rUt%W3kCz]q̀u(*l: /ĖY8tz:]8g"` w;:EG >z߀4TsܟLU(ZS{FfVl[?]R@%IatvZ,`2FR!#>#TGnݹ {>vF'o·~Fnr7::K +[hQH | 5?WЎ7V<_>oX&\r y߼_tH,?HzJvG|Kq͜ZY Xh >xiCepSihVk;f1̰WeuU<:/>3p2,*RT~ӹT.kXeOٹ=~]؝&ŰkB3 +\vIf1qZZ|UTX m,n=&OSe+Crʎ,KO~ Lsu.JSc|@cho?p܌ /Yq%ux^'aPXoY`_|rMUQκf~?K3Fנe9oˏg;}֡:3do$?gmݍK Z.+~)}ϴ_Vs1G)c][ΏS|ںܦuo:?Mjtr[]ſ=_R'}s=(:DDDDDDDDDDDDDDDDDDD@ލsXO - ءQ΀Qf~N(TOFgbX w}8Nճv//O]{eǼb[rӑ9[hWz4U:u*`K[ɞK~ [;OO.3;qQF='̌T^ON{I8ETI:$ +~z\hV{}?ÿ~buGKYshTQ&f:Uܓ2%X"f!TęhuVR.'5AަLDi@J'zڝDȈngX댹-B QX^dw)տO_G)տO_Jp:B즧eUPt@:^M"DSux:gP|T?1'`V9sen +?PyTDDDDDDDDDDDDDDDDDDDDD@#uvF5}w(pMK [0y1b?y=L_thPM VB-xEt*fkl销}moKyEaUkVĩPY| }fLDDDD{DDDDDDDDDDDDDDDDgu.ΏطcqW28Oձ* +WSX&lDDDDDDDDDDDDDDD@Cu,tҫ1ZS}2tu~n{Kd\=KgJ2kvZ~< 򎩶},72(G+[ -'5#v"Dmjڴ'T6w{v)XioצFXb5awk ]lv22֣JK$/ODDDDDDDDDDDDDDDD *AwZP8v~ J=: +ޏ1Fqa\3%ˡ*LؑYy1 RgkCm{iwȾպP*1Uᆴm<}`ɦcehO =Lԯx Boy V : -yDMwX}_TPKiJ9IzC-[?2ğ)=nE]ci v]fyk{֏/Yȩ@mo޻l vYWbAvO <{(1cE ~{r-L,~'R yĆ iw$;w,bYuDFoß-e:Ď9ηSGk.yka5~'#^j*n`i' +;^?d̎~Qv72Xw{?F"'? +zJZX.]Csgo89+ȡWbVˮb`#DG1:_J#Fmc:Pv ״͐5A}g3Q~,|Hq)30j5vz쯟B69  b>M^ hۗkbTThݼJ: y9tTWN8+ǿ- RUӺ%}6k3`˰ h?)-feMvB?Mlw^7\Ѭjoo-C OWMxZ I}/}JI&6``ڼl{\ٽIh#972-#~7>oX.Ff6"'a\ʼڱrz )_&x{H['x;d?Z>J^™Z*qJOþߴ&Of%W`0ގr͋^K9%&hlEkFJt13q-AE+D +^eHrgYIK-5+^A>Pݼ}{5Nԝ/9Pqޙ +uțe|y:`Woȫ~ww7TcX uCs]̻3!M2oQqfgWjS0^(c_M%Vf(P ${nb.ƭk[?<,5oW%J( `}]#7udyVF!>fF%f&utMLMȆ(gr⫽ܐ=??B`vjR6lj /r><{Gr>Fn%#noJ7_|{vmx?j,]$s5^.WZF7. W ?a<ꦎYI5Xr}}ǼVZƧheI܊o=>3zi:]VGZ, +}gˉ:KG;H&4l҃#hUgOQ=Iψҥnff +X2Vv;DN7ŰzVP8+Go); !넟:rqo&nmu5 n˕}?ۘlTr̪΢JI,@EFtEOk_K?YrLK=_:Gf-dWSjGRh s:OGppj}nX>on0s/ͩƢAh#nX_Vs22zآj ː\]s2 j+k{d6叵uo:?Mjtr>տ7R4p̦z*0 +@ O24gmRs?kja.K0C1ccܞ1k;n,o%)8 D[}>SZNf@ÐҸa]Jj׫Um{Yw+osn7WZW;)bo\}tg zme;k:ph.XGy7͉g+ګT20S\LS*cw>#* `H,c<M$P_G?S^^]h95a֛Sp,F6C~B]j A#^=&5=նUYul wĶF#WXu; 8_Ա7)?e'TKs⃎@?{_LUf(UBٜ[ /fm&J5v(ee*`dh[;7 ܂=f$Gc%~ +ȲCwm7p=TLw%U%Cl|9(?.^׽2Nx=6>B`֥QlP|/aSP +}ܓr|i1TP0ވl̹QXn$;*cGL-1-ڿd3{=RgVX 0'MoǁnǏ"T$wGȼd=@[#|N`G3dz,EX?0֯ygɳ$`6rf](] :U#-}צdr[Sırqiպ-]rԀB75NzQ{Y sbKH ;IL:neZrm5'VP3b;]u*ju˳ZɴID;7YMmHOK1^(@ogI''>dԪFDZ5U[DyOs%j_,|e^U]}7*[CdĖֶn]&׭m lD F;fdbQussbjr(gi>=u] ׇmK+֣I N)ab.bgancw3""X\*RkQc81 /DDDDDDDDDDDDDD@~j}6~^Jֱ@J""""""""""$\t|;r,S7@ :QTqwˢ 4CrOva =et?dO'ֱ jbl.I,{of1-漢 +UucM_&V;Rug>WJ¶DZQS۰ҁ߈k'Mǿsu\OZƙFM++e­^/h65zF"Zɩ,5;2H@`G 6gefA==t bC&#%x@(_&I,{1ǖ8@uGL)zϼcsP@>{-ZU@6%G #ʶ]1/ }P5/qI MW:=Ī+egJ +u#3aôXU,$oZnzj{+Zb:$ᰥUyh'[izVFK>7?7|ݽDDDDDDDDDDDDDDDDD@<2sèu?H1r #a=@"I DDDwR&?B*(NvPڝeNC,Ʃf%x? E5H(%5Tw<,lv=y?0T]j{[¥cl܀?2@_ߟb֝3 AgF?Sَ /z0fUcDz.+FBa-is%džkL韣q֩۶F~m};܋w´gmy3 +in&-k_)m/A:ycZ(B==Rv[d]sEPsQb|")ڞ=f^fajJ XL%}W5p[M wlhsLDDDDDDDDDDDDDDDDDDDDDDDDDDnb`RY(;O`$ޮ]/@~;L| ϬXO~ɉg/. +""f=F 2!h=ŅT?zawiӳӾ edLV6f>XQ6wuLKk9}P ||3bR+SoFbtWR|]Z}7;`F &lJ+n^HAWg2N:)%5켾$z|ꍐTo!G#laGwO˫Z5/OJoD $ɹVN< ̘u{L5dO6xK8(?QmteV+רdmH:n]bH7N`=|@7C5%z>NGP AGIW9l|neu\ \u^́x{&wܑ%20q1ZMi#3bYJvI~naNOG׸7h*;v +~3""""E-yk#6tcw7Uu4v]ˇ +ˎ;w3""""""""""""""""""""'nGO{L?ENylm21rx YbY# |Dk0mu +VƸg%П~;W:moΧH@? &ϭrqVcgg!]lN?2il;n|u<H:Ǎb*ٷXeۍ[Qh%}N ίN5ނbBx+2nX7Q%Um_0 w=2~nVFwQ{}Sph_3/ 2s- <j-F>O^q:z閟P)U44=ynVu]kc9zo.?ݦͷ#=/BT 5یèW.HSx#h o}bC-" Cnm@.6jwX5kb`G}nrJ / ƭ͜oT -$[X][%@*u]Ʌ[SۂKګ)xS'!1+kl:Vc`>Vq?'PR +PݾS[ρO#pU5.?NSbY˯ +m5Q: )md}K66G$?[s (6^+ؖZ Zzy:U$ Ծۗ2]qtPA #o/L༲r9^ewSWPrK4e^,SCMʌTB:5lo+G6EMS,8\CT 'K_ciƷ O:boqmS=54Ursfb7ו^&g_GeB9;cހ$lIpqr?>XRV-Zl|omKaf&}^؁m>s:WrR(`Tr0F:iE.Eul£ɶVB)U`uo1' +\-Ukń SE,'?)s?'X5oMle$Q{?J)ٹzz~ix%iذgI k(崥uvJ~L4dLN(w1ԸNbzѳ.] {RVk_5g[F6d:Y2ٮK)WT']sM n67t1ZS鍳Uڽ6&69 VQ8 +7_D"d!?g4b)Rܻ䃿X57]U;r[]y/!{s +,֏2H忺|>>_׵;]nií[;h 0?_ۑfC?x)O''Of:'8+]iHHX7݇ԙպ{u,bטIljo6|k ipۓ[ t;ͺ""""""""""""""""""""""""""" DDDDDDDDDDDDDU^[=(wؙ9ue͈`t',L^\AOڹ}`Ty3fOYc]~Eg+G*6:S-.eFFu #MU${oQk]WVV*v bY9/ilo$}Z""""""""""""""'"""""""""""/ybcZ`%NzHr[LRqW<{c8ew}U5U~d&Q99jHk~Ga*9^ME? )-]DtpNZ ؓɬ8*X/!ȁΥ.ߎo/r-|+[obX7/}?*{0: 2l͢EIu-'U(,tX6=E}[ELbt7b%܂uÐ: qshkMNK_^;A/v̢1[+cj~`6Go;wgڈJTy:'zS뜚>EysKfҕzG)8Z{e`@ם?lbuPSb[m@ԹTn<љulKn4-l Ta@leH&'W궲k:p/lbt>ܥYUY#z>O}I0+okMxUfV-чfR&>}dU_+$q@ }ʮ긘uk\lo}|G0Nsp 9?uA3cYIn%éA?0:AOJu<\u䰡`ulu\(kXNsΫʭe^<~&2z&%Ku"oa65~7&B-e` }Pdŭ2*Uغ= gUĥ'Kr^^6DHYb_- װ:֥FںF:&şթ̱ #S ~C6ʣ)'%>c޴q%&zQ5⡱5@8R;ѺwL]%8X,-ÓhdbSz-ȁ/܇t#,i=VV(9HWJ{GXuma!- Sኰsl*:׮ xW;,ߊ ]FCjz\wg 7WR\v_ҔY(oO'G2Ӳ-\+~PUEڰo~w,¿t&]6WGTbHOt1_ZKV'}nٹzrS+Un/r̤{{$[zmPQB+8F<~iȢh7h(*y;op?x=zNWf"zVZ%ys'm<{OMW03Qzu{@nZCٺ,jAiGqfg,XF~2=1:/Ly*ZXWS{~YtlQRYyP"kh P)Oŭ5Y|i}>_1z-n=xvO +32{k'-4?JgVS">UkwL\ϵ]I3[M@( o5Wrܧy0U]TPI7IVho-Õ}:67c`k'#1󨫡TڍԲk +TmO]Oʻ =Em97c7OEk7 ݉b6Hp;Q̴|@Sd䃢>a;SgF^!'# :79'u.J]Am-/EGOk$r"+llr,= m' כa,.j Tk]FeY>؆HS2 kgnI'5zlٽ&wWmlt{O_S*](5u0vU|=uYmmś#$5J(+Wf.*WR#rKl|K %~ZSE++Z Gl? WE]6?.!+h@68~UOI H{+-uz EĔ:e w\o]"Գ+Qk^]{zc ԫ'5أȔEf:}HZ\º فҩOO=i8q|ʠ)>m4:\ab46oulz>E ʻ2Y[9r"""""""""""/c=c,4_ղlS<[ylPԄ{7=,+];<xI\Fz)*hBT<۶#{޼eز|'5Eז#{C<镙v_my%%T ;bA>'Ib=jr]Kոp4F« 4WYn+@[˕UQ"ֶR{EMf)q6. +1`gSzi#[8kM@Җ5Z`8PΧ +o*OSZsӖzZ5^>P+Ft^2 +EEQ@hzRsP/UI>vﶿ J)AZ#Dk_IxSW"ע84| kp*GVlʺڶ oE7cMx +.[CR]h;&J[Dr +h7}Zz54_#[["8㪓P/e~n=̻̊H_O˹ѭC`jW^;!l۾y)-bӖpP1V-4+-u$U|ex*W1`'{ k+"U#֕YF 5 BUbaIcRl6y ĥk@(55߷iXXP(F;TZ+J;"vDZ c_qv繕js-#{#D+dW`-S +Z 'd*P7\ZZ;ۿ~򣅎\jNG{n ˸[JNŶS[ k̼P@KwѕթP?QzشpաvlbRPVTiG>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 21/Tabs/S/Type/Page>> endobj 63 0 obj <>stream +HW]#+zL vE0W#pB066}TMVsNz};|˧//O?wnu8__:|A2~< ppv6'?q8 Ϸ\jzo:Vr'XF?w>'M@Dž2*7Fd-0&zZ&ڼciTc:~]=e#q$*D?׬޾|IGmOч-duwcӠLGv%9{Do9iUjѝLr .d*7ǐXwer/ >x.q7~,p2yeq).JO&8sP+ T.GZQ=7BD f "H+ _k$xvp}αA!@:yTYZ灧doUpwT(ŃN5ڶTmI/ I5< 21sԟ*Xf%˧.yLZ/.]ֶ+k.fKȁXtGOeT4_{A8 bDUuKIuA +rxFس;ܲ~b QS`:KhoBYez mܪZmbUX એ*?C'lJ;X1&46uy `txe(]C1$9*ꗨ1q 'OyPlܻfs](llOomR_\PjY3SG^ DA OmNNa).U[ƿ`& \^ә#$ĮuOH ZMMW0>X4Ee&%E%z~nV^d x{|_qqEl wƼC +}F +SE(X(|ƈpekN{c]o l.[J֥`"fƹI4h0 ©aU. @)q:$gS5U%&t&p[`Dhɛ KNz\K:h2>%xNT9q)wxgR* ƪOh9b:.s;ޖ@84Q0 ;"Nk7ZԦmQbtɢ߱:H*̷\j d;n%ԍ08/FP=kʅAS5fOY% +3Y5bѶ,/2B<Ŋ3s)H`s"㧟;hWf>h_ۏ@J=KFhI/)sWz +޲ddVe\=JRc8[c-m5!3TZ A+3M;aœYغoE(BdvǂSwVϵURv]d@h>x18 \V)[^ QZڻ q> ڵ+칑C`[9 xuzkۨaP$orM' G0򓅱tۣ k,k)=G ,}P`CFڼm*:w,*TC3v#s~,.ڮM ?UK4r|dæS"\26(:ɽף^C=6΄ 4W5am?4/>ۦ Dz0SUK;c:cPi2L:Ӓݍ +N֩D +2M>6_$dma +9 l7@] \9+g)ܖMAI2wEgIJ3ԩ}lI"D[ud gB+ĄOjiY*nSO<jj0ZX%>lrKF)yg~dRvI0,. 3D=6* (6)]: +[قHlfg`irέ{E/zmS%w<e:[$e*&a_FNñR;^ o,FȦNɗI} ݝX(ڛisUgH՚+%@ZO؝1Sdy7BA)gԦfy}{PkVc. ic\sk9>pR8bi[L{YMD*Cbca薶P \u )S9FhWKF.z)| + y>s+Ѐ1ܾ_>Nă&)}P1 rKraCdz (mlR?^&e6^'o?a[`$0y:0fX7N(ˌ:iOB՚0EJ ZV.X# +C3kEՍN !E!j~I6<:/3ƭ\f UvgzmO HcaCi/6C +ԙ٪Z*h&ܲak`itIbA~6i+Kz_T׹E$Nо M /6n>Kqt!)vAHsΪ +ybH9h!ʘҔmHV|"0r]G +D8;aFhf?AbƔ[Yz߆7Vq6 uԓIc[+%/ p4 +{a xto1E͞ ͿAQŒw}+iq !1>ff\8_7Պ|o{|;>&>k$I뚸zpG'U2.`'ȫKx(p_ժZL5+[kq~^DmIORy6:BT&R$O5M)yHQInFfsw"70n.mzv' +Z‘c6DY&p˷쪢o8&B#`R7U݁b$g՞ ΪbgqB#+&6b:hwpAB0ՒD3~vw,W5]* RӳgW>Үk?TahY \,%%Vi09:$*EKoCwB n AL?'՜"@6KPG 8(Z3e<( R +endstream endobj 64 0 obj <>stream +JFIFaKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Ka + m!1"AQaq2#BR$3b%45CTUcdrs +&'()*6789:DEFGHIJSVWXYZefghijtuvwxyz?괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥Z UIG5e*CRsZ t{&v0y<5H.yhdp W<<կi"xCE$iqDY8݀%IE4H,c+9=*h c.S# "F@N5Ku-k- bX~&kQ HZ0c bYꖶo$82[r/Ն A\{M_;ν'pJe_/t'5!e=[gPkʪ' X68c>u3GZ["}wBv cs励uO_߼$7 n/X{սDkclPˇ +Ap19M*U9q9Z;-Z28`H8- ܬJJ4Dl ++c;71a@gk=h刁$O"2 0A&l.Qyp(v:Z˒tvm\d|jYK(d YxQ5 5sP#dpzWUtFdn9 I:Nk!H  # JDo̊h2μXݮopa A;#kmc~pS*5ZֵUm$xEn`݌|DtHT)V/n ';QKY=Hy0y5ꔥ)JR&w17q%p=+*)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR]_U ~EcXwws*wW2EeGv221?GD᭦^1끙>< ENUjq?+ַi·w$38pB0+ 3<"id%WUn>!*393F4q.⋾ኀT"p|xxKMrF߉m+cf'UuMR;M2h$ %Ķ wpH 5GS2LU +cOZ %X$ueUpo k0$mMD7Gg|<yڡ +4FvsU/wK}\XFBLG# 9ϵJwW7q˫ +kYu\4ϩ +Z{\ ^K`zepGXޘpf.( +d +S7wvI6mnU +QUw*${T~%gu yګ2N9 o'NJ,:\p sN=bϪEZIgmR2'#ԖE[xbǷk!][%=EY. v28{N얱As|]ȲDq&S8z]B4lb@%`o\՟tڔu]%@"_S =}1onꛋS4} +(Y$p>ui]Q""H{aS*跅^Fjgw &uYJu\vnF+:2Yü3Ɲ䊑*>#:ջ)5+Ժ)&(So< FK y`bM]uϖ*P/5mc?|~9 gՔ׮i$Hey'a K7Ҳ?O- #ˉ#7!d< TLƦ4Hy.ua(#;lr0@Z{VvDJbFӎ8-CLNEqo66"+Fs8xmIE&HP*LSǞXC M4{i"$B #A89Nգّc^-̢Edv\ [^;{̟{U \w `^mg}֏LAw c8ǭe.WR:|ralڻv\9R$f4}P187*nnr'ҭdSL[+\I0gH%Ф{wVä~(HpAq%imy%'$CWynSl3' UG8Â?%Gv#H#cq;AMbs6ŶK*^62~ ̚ZZꐍ%fd`A(l䏯h}kHg%xbYkU'oV 36ۈ1vN2ҭI%}wKڥ۷hSP8Y](bNp*֣u,Wc%.@x} <#"g\&)Y!g  Tm Ny_M ۱nʡLB [Wҥk9. ތ EV(A q}Ui?{Ml#(>*ЂI!_a:;6aziNYZG۰@PN>tgyH 1VHHHP*'޹Z+Z^eD+UPu9NyJR)JR)JR)JR)JR)JR)JR(괥)JR)JR)JR)JR)JRT7P ZP ֫JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)V.;4qۢsWJRCj7_x^¬7''2\}ϕFXR߱K۟(3P#YӁ ?El:\\E$ ^<JR)JRrO_%DN8`H$ yԌo/zVfA$2:yl3%,eeXr< \)JR)JR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JR)JR)JR*zZi˿3 +ઐyG<{[FWE60x::c| ieu1a ێN1q^?ZՆl- +3$e⯴\ۉ f2@8?Ua'kmG.>gi5k`hӲmPwwn>C󭆔-J~"(d0@SЁx'B@L;frFܞ}檴)JRA X@2JK>=r5*)^]p'+ŽwH$e!ҕI Y HRM!.d+ AJZ/Ȓ%Ct =ͬFPExXTQZRW07}^*MBfp^vo?7q!e=䎇>QQ/;ck_w<4="O|Fƶ$?S5-%j~`$>+VAIo|^Ã5c50Vc.N} +.+6*#k$XۀiBN>`V]2mJFeL5e/"5#'giαqt*,2""#DA1ʜt{-R}AkیRd;$  :sSK Kv Igk'Vgc[h9Ǡ(~&0({~5 +Tk. QbBpp|D05e4O+4q*g7{Y=PF~ ?MGֺ'B3qyg +K,,r4G&0O `g:T=uu羏( +0D{,sSJ4߃GwGݤ(U&$>`Y Y{F#<WV)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JƻԭJ T.]5 .IHGP}AU_)J$bIu$E2^&{ԌlQip4ҟe\DžERO2D} +0K)RRqJFE 3`j=WHX!$x0AFG1[l>@.Ĝ~AּZ{JAY^Y1|$eR5_jZ,](d.}9>±ZO[+8LRI2B쌹ҭiֺƛs'x$1HBJ\2GZ]n‘sݒuOӷ,1y VeaV E)"uZmX˻3f.7g{4ȧ3* b~d"lHRXسO:*ɬ;"P;L8P~NOQY0FaP9PpXʳl,!!X ]ld<'R)JR)JR)JP괥)JR)JR)JR)JR)JR)JR)JR)J{W%8H &pyڪY sRLvh̶ȧ(L(@9>JRG4zZ$An킱 8O)՗ua{ nװ_Ousq$ + dV\〣s[.*)JrjlĐ07"nBQ7,2|*DKky,% +@H;W^chUdlR돶[ cY'EAvtkWs#ե2(i=G54neUK}f;qL($ d˂qdʯvv[im3k/zNji_8JR)JR)JR)JR)JR)JR)JP괥)JR)JR)JR)JR)JR)JR)JR)J`yE-3>$h +*)JTNOcqmPّrNB@q5+)*>X9GQXǴwx7I_#=6!][[pHFpˀN@z +캎iq0o7%y?_Z)JV.`pqOUa{ZE#‹tF$q8\yt$ŝ=pjD +c:Uxh]t2D)WP>^{T]c N: &{43O&0|F=Og |)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)X4\2Wrxߍt3X~kjHv$b-n,H>݈/w33n]NO%8DZ"aUDUT0{)JR)JR)JR)JR)JR)JR)JR)JR(괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR/( +d Ԋ$4.s 8akvmdGU988:sUt˾MAρ +wc|_oulC8qϽeҕ@Ҕ)JV,GjD[ eXdҔfԠ($m)a #8q3YTPV-ouq-1" +]J6pr@Eeg5ZRNBx׋k"Yp*AR=Av)XELegTǦk"fJFqUnǝV)JP괥)JR)JR)JR)JR)JR$fq*=7+#E^j\|bVػF9 +~9*2<Y=k.Ē$=Ӵ`=v+Xݓ_gAҜ~JțS}R]:(e1B22I` +ֵ[Jb. +:q~Yyo[Beẖ+R H%bpFyX_1܋{q2"6ݜsYqjɌ>W݇ +ɍăυTn.ۑmshPrp>Տ}VV'`'22S9\}usݵSFo' 0Oν<6-4QLJ%Kֳ=bYSe+I8*Gך픷q# m[3qGZvܬz^܍93>Iyu}kq|C7]vio= + +NHy]F ]Ax-a1sdžvX|+!o]Vhb %t(7ʒtң2Ko.D$Ϋ=6o#91YD`lAC*0G96E9RKj(w4d$X>hlb姛cmb>Nv;O,RE"[Υ$ 9aA8Ud7 +wn +ŰT%|gj2kZnƍj0CP 3N|&-NTcH:4 Q隑8Hn,*~DY)J괥)JR)JR)JR)JR)JR 5-1:"\giSsȴ1瑥BIS>uoGH鑾 $ G85ٝ=:eF.&*5mQӾ،_/ SÏ,fDzU_cZ!|[.\1=9$cG]Ka{i,у=\#* +Q.2ʲn Yu[I2M`x Hāb `;vU;yqϯ-w!WK7K=EŜ0͕_1Ji:]ݝKF7n]A d|{{>2rfM!Uw^-fWpa ޥ +kv~ZxhVmFXmoyzI e.$/^ \?.mIm`![he*JGXWY"\C2x-vqW&fsk3lPn߳sۺd鏮i~fڴ;1*Wh'' Zti#uF$p~A{_iw{.#(AF JDieD BvJs*g;6>[5sNҮۗxW,ޥ"x9ޒP]ѻxd;NU DF%UqP00H<X]^5KS#q㸃[8Zg-Hu$=vtϞ*Z}I@=W gΡtHհ75)('89ּXi7Tbcv$qswP{EO/(̖ct+{ɝ%XHQPVˌK FSkhb Y.|vF +@6X:{FL_]1 '5;-wi=Aa s 4jq…R SpOv[JfK3 bUԀrpHPrK}P9ڢPjhVPRf@CuӜZ Z.Eh|cζ <5u Pw[[>ɓ*p8f^̺ݭ)0f'\|9}uSkeuqs[ܛr*inzsWlu;kw7˨e6zr L^0JUv C#ZKjD&HjN=Z B;;h6+`y0TkōI)8*DkWYF,#2!@Fz85'j:TzP 5$gj[F51 q x+`O5q!.XW- g5{-~ֶK[f2gLbv g';=b&uH$xR%]}v5~NWUj !vvT wf]6soϵc΍C Ʋgh(Xw]\l$w2 J)&[*gN:g]CD >kNT(R8Rh@Σ쾡%-7,^Bvxs*nk+ٮ'xߖ`Hc +ԌU,4ȯT,XlR9P2A>Uc@/ +[V;d%+DŽk۲w?oktDrvfFʂ GC}G/AV|{cj82*(櫣h{-`̬Oxv3>7JR)JR)JR)JR)JR)JR)JR)JR)JR)JP괥)JR)JR)JR)JR)JR)JRSZRHedq`AV $aHE + 3WJR)JR)JRF ;G%{H;I5;I-ȶ[(2:sqТ,FF@aFxUkR{dݾb0UeR)JR)JR)JR)JR)JR)JR(괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR+X]Hw8Y^Z#d;Y=p+\n{ +Uc`U9=H g( +OOO:_i`+@lƱ(U0z`WA?EQ +rmO+pRU2q%zS_?ģsOx1Suo _ģsR%iT#m(mzg"Sy$q#j# @%-N X-9{kVcr1.2YXc=zמ\67R4hH؍ʹێ +0=rjWR{[i$"V0w{8Xɕ*|'{|ؐj~(@ +ls~jBkTծm-bvd/p3MoV|mހ=ňC;+SWˡ\iG, T,]$:m#8\ gU)JR)JR)JR)JR)JP괥)JR)JR)JR)JR)JR)JR)JR)JR)JRu +Uei̞FP˝ZwQN9.NT'V4Xe3!P0Rt 088Ͻx$"^ɻO1^4di2Jh9 +0<<}b_ivڎ0~r˂>Wm-ͬK1.~dVݧԮO"x}l)J:z <3p`FC)rFjVЀ"IGFP:8s[ w&&UvUx,U'93BpOk6/}D2AX'\0]4ω[z>ūݐ\#[G$7VSmchaVKK핞9"V "AݐpA鞴I%>e3~d۴\yV-I'rDە3@rqǭdiM<vVrY%Wh'Jʥ)JR)JR)JR)JR)JP괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR +KzM˸u<:njfPl6i yc1.60პy)J#ԱI +O{Am 7;!KA1r>xJQʡH wrBsY)JR)JR)JR)JR)JR)JR(괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR=KD-YTv78BNm9HD!vgYnoQ($Tr0:sS4SMg~ +7~7Nz)JR)JR)JR)JR)JR)JR(괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRUiJR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR+O'?B~VU)Zn,dhsUݽ!vB3gKzV9#*4mǞ)JR+Vգc;R5.H<3T]lcaKKvs6$V'yދwg?_)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JRRգC6Q>G$*Aqw.F<2d g"ո{VKd$c⫰WnMci6[j7ۣ KQ m*TɊ)* NNx^G +M;XyGH G`wZRA{R+4M@JgyqWP*)XR7_ .28VA$,ISȫԥ)JRa`diH̨H zSᬻ $Vf| \W-"VWBI VF JoMkwsmzc=ղJ`C+<׍?V!1#+!r'$ҭEƣIovJ[g8okϸHm0A(s|v}#S,+0) +IB*LƑ*:jXe'˚\_Ejda$R^2 IkOq[2 . P@AҢWM d )89'`hzޓN"e[X6.{޻Q8g#k:tx8VS1=%pu+:ash1qsdHpI# #߽;^zUڂ}\R[MCMdLwFX˒`1TS.5$*°r• 2r*ÏNTxZ0K;gVAPAR9l/z;-FF8X߄cʳaq odҨ#yHJVәVt r>_b/r Nu+*O;`KpݣH +8?d|M+ndbfFPTFU=nPs`ב^{v\/Fϴu8|V&Me4e,I,I|myu5l{p]H# 㧝RVV,n1' +7l8 ##9c!+׳ڍ+xJ?f(^UA*Cqq&^UmA p 7{^oZ>hK +Hq*AEXu4ddA pH\pON>Bq819|VSYݵ\[kVCKI0#${5՜5մܱ!N6R<GbC[6LHBضNmeI յ[t +xvTܲC D1TB.H/m.$폆DPa<GJ]w) !V|%r9ʞAVC\X̑}F% ۘ@R}|-n:ĊP|$>ٛ8x{JiIt`a,ʌ֥K/gia7a%9:uaVW Vw GIW cyci̺̰DɅ`3^sikP3)QXer@fO] m:HJݝsT=-B9cO HK+Aἵ0GX0nK& ,G#OYwztwl. RX20~,zf'ć^nH7Mys*ܶ2G ́HJbpjT///l[2bBޛv`~BEܶ5yዻ4|߿ֵIH`^x|ٲGve`Gx5krꝚ`#2'c>khVWr&DXFFw1np~X7jVMOEl +2#-t5Ə鲢#Di꫼`O5+o{=^%A$1`:Uأ!foߓ#ۭDvkDZTXKaH*:rF6eyy%6"A#ȑ2L3U})JR)JR괥)JR)JR)JR)JR)JRaF'݀Px8Wi>J%YiH1cE}H]LUgd +}=wOI0Yy9z2~OmoȄZwzn.OeIOqs7tKh-x=1b>UJ4袲uUY&FE<){⫥WVѕBnܡS`kH42;B'㊳y^]i -_$f2רt}FLEgE%67`c9ƢtegV ʡvmӞǻhߌgT}a4Xp8<^;8QnBFz!@v=kfX57}*oh>U -Bk' [ W>Y6y5QsbE報^^Dn +yp䩠Z+QaiI2($@ 7MM!oXiU7\ơ398P\ckeGF@gIؗLriq[E;wV#xRMaTvHm]} +pφ\0wWln{&+0Twx.H#ֲiY#a$g1sy}~>QHTzfʮs//y^ִs5ED3ǼeyHP"r'<`XLXhwz}w G-9rdpGAldd=)~j3 cZ&31Qq \ўK(tHtCmcx\zk._ًH1R$.nWu8cdZD^y2D2!1˗\YǕkrΗRȒfCԃҳ]%$8c&5*s.IW{JPXJd0ɑ$j͎uc{=F7v򢃀R#G 9nZ]ky]z+ac.Qn@x#8&{OJ"{BVbTmQ>l\hZ[tn5LX;I 3+&L=u2n{v8K2Dܔ*ƻ-A=v^4]=dt&i(9yenR72wDŴVl89H'p<[N +& +q .|u]_#%Mx ݔ\W:kqc2*-2 8ǭ[iLt O duY(ciX\jQ]MIV97˽v=EG:䰛SlcO$ϟ!YzT7Ȳ53BI}"]-Hfa3Y\Į.eY ʕMBrFNHgβiJR)JR괥)JR)JR)JR)JR)JRMmEk+b:WjƲ|lKrNђ>Uv)JR)JR1Yz8979T2 L;A2gi][ֳoe!Ĺ ȼXw}bĢS󬋻!b8@ρXV]7:!B:ح]y͕B H#";:\wRưTP yPOPyUFv*~@d֟@Mr +GX7[Ov9hhG g<}{o۷w3}vRաmo**ɸ (jHZG|} [83 yFCyV$K*a =V8%1QI^JҔ)JR)J)V =F+ZؑPd*>xmL!tr\ +j)JR)VvG5fC%A*}A=*)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)XztWC$2@8%nMVg s^$q('' +09UR)JG+{$Fʁwn=|Tzأk >Vm*ťY)H.JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JRqA$4,8=*߶,$x$!&,fb֑UzVݯ;qv*H2J@?؉eE]-Fʬpgh8[eG]HqB[g{#c%c e|>y_Iu%qp4xmy*p+#㤷Ҝ ` ϯp?1R4W"cwCüPZvjI, l&-LnP0 qǽ[&6@<B|,+׮Ap'yvPK;g>QW!L(#=yWتHg`kt \Cq#3G5!S5Zif5j\ZHpQ9"E-|*Iկ5Y|. f7bYz}ܗ 8Ae8w\g*>oZ);%]jzs'T3L6zmDdE {T@d9I!r71OՍ:=znv>S"[;%DLnݒx +@@j?DuK' FcW܉#]H\n `oV~ &.Gqv}֍LI`y!BX1g;1 + ‹p2N?C!^wѮFdx]Y9R*ɶM/Z*[]Fm;2yX0&\j7<ܫ^;^ +8?_Z۫Xߌ BpqR7+6Ko#lW+("iI݄u4(*`H'|VĺΣxq‘oBg-Lh 2X—, ('*X1PV/%Fwr <}u/AnXtb Dˌ'µ0h*ʛu xJx8+J_9>UwMg#K-$z4#¡Y@ٝ>Otw7ۜtl*I 8#ˏ:׻}ngԌ93*y^;NA.hm3,P/Nҭ/Z >51xZIfdE`PXdGNQ_h5ܸ;ExӮ/\,r[#nTo NGtFF<-#X;T`d?YF;qDRVV7i xAq@[fA4IVH+.8o] Oqa'R%,%C0@n>D}|"="+X3V}ˊ{GcEv +G.@>s+Jslqrgk 3!Ʊtff3rNHIO{4}Qw 3unFHEc݌#u?>yi5DnܧŻw,[$XiiR YbN*a uܤANT0AdX)mųź0]-vssO\F/ fv:׃*E0vpJ iqv]qqgq7)6'lާ{9 6y{9;Cc>9Q4ޮse$gnNOA%l7,I$'5 ,iv`0趑$U+#nl+QVO^NQs w.|0QY:M!RHv,}Nr}㎕!Es P `n gA^Z`֝k7;d;I3zP]QͰ>';H3U;;NwЊ𽞲6J %X$fk6N{3@XD!"HQ$OMzy$8^R ,@$qT605ܘʱRrF}3XwzW_]²߆rwp+6;deܒ!V\FȪŽIpkF{Hi^Y9h}UzNS7Ò9 H Pk߳V/#yvf99,NO<*ޞj!ԎYsa'sˍ"R C(@pw`^t{M:Ie=)FX3}֥Z.J:gfɡY<7-2BcmK篝xw۝0C;X9#ʲ/4{dVRASR8<էЬ)#|*:zu)uKIX1 {6i{_w* 6޻s)#Y"U8V-kHE*JI9鴻vE>h|\gǯ=k;=`<"GK\?Km:FYLC(݃5It+)Z&9eqrXI'e[%kyڣ,~$i_6 $2 0Amil`g<ğRI'imi wpfŒ ,N9K}^8IQjORO'<ݖm{tϒ&;9cz=W)wwF[p%ʗ`}< 5-JR괥)JR)JR)JR)JRmCOT|ne|'T$O}\NiMfd9Ns9;7J$>8*ŝH##,|*N5Fm.zFr*ϭY^$jV0a2rF64`k;M{GDGaKIYuwxa "F03v+WZdakbIC %VP&׎F*;Ht$dzjow*f[zFC>^`Tj2iąlO qӊ˷nE843Ljif)ckl3D8TsxZwtQY[j"rGKxѣۍdΤ-tϺ:\*E5Iv&=^P=RA}&lh]Qw$dbzT7jYMxt'RV*rp:^=̰gᔉQ1F99r)9׎ :+]!#۸+?cjgx2GssöԐrp<{zy%Tʅ{3VĠh3l}1]s%(.p8 }B!{gQ0Fn4҃s)ᄌUZC^ +1YZ@DԵ-43+WT @Ug\fm|{O/4J3x6s[^y&eoq*li!} ($TV+jֺtm4Wd* 8><LMؤwcfܥU2x˦:M!Im3.s+tkӠִ*oԏF9ê)!јAmb_h1khXhxT&$ys$ :llPs17>,q[-hky/7o$lnSUXzTp*7 4d1Opzu 46\n3û^VR2F:Z]3:2CC%D;ýV% v7#BTG7Iy̅dLusY6ivVm~1Ps>0v Vod&K9W,]E;U%`O㯕H ii<'t aOxլ%MmD\d˲ FL9<2EeiZdb#;Iⶪ;Zv"1++ $sY>,$`ngrL<>*U+VmO qKsvFt'$ӻV_\} +o.Y),0.>j|X_vL]E;.=qXg/nH,.18+;?x$'=CPfP?8Igְh+{,K$tHŴ8P:9U{I;V.;rcr+S6yY%{Uy$0Y:|wgM?]"+xlyVgeol!e=㤂9 +ʱ{} +ˣ\J^w~G :R1(s 2rOCWm/V˹:N%fo?Vc1X)#8ۅ'%A8q-oX},? cX{ڋ[J.`Hܬ%YYNU A7g8]I8%y!9>|м*`C.3y:VW։&ysww=:Wtk9幍Hb;]vA$p8qVtkRK #":㏗ Xo4M8bbptF‘=c X0I P%ϠIV 9ޒ*nP$uUkM-\S2qYS'FBH 8%O>r*4bۥv0eHAF<>$H FYJԂA#<:R!F)$bGdk)gFcns2I#.N8Wm:yciٙ.tCvk+D(^.t.LV*|>+j}è6e%]N1Ñ^#-XHs6dwtbK[ md~ dH9!q垞U,NOXl:NNPQ )dt C%ku;qUBYX˶By H88tZhN|'F4!%WTiqcid䐙b2cۅ>.JhojuO +W[*T +p[uQrHݣsE`_Z]+pe TܖuN\crjޅⶵ7Hq"GQz%s=3jI[fݭlٻp6.}:֚Vk YD]cռd|k*;ȞT::e<~Pʯ!C/#G?D;I?Fܛ65!QwIen;(%OQYv6X)XNYRI>ՑUbX;@0Iw;R+[D + a^ _tp3S%;U>+gtR(9Daz;=WV!Z2HDI<֦gK@dU TnZHwR1";NAβ-#yyG#ڰGeEYs >C,1=rwgl CK3K1Ԛć֐JV,w`Vwypy۳1 Dm%lpBH\W/a(P 6ny:U%5C3xa`6)nqY/fYp&XðC #gmS"2Gݬ+k>;(q$'̓5z)@괥)JR)JR)JR)JR)JRMu +B~' +\iPS";\b12xU2KtHZC0peҔS5ZT+󧥡iLFU*lݒ89}ukmn0J̊Y]\/]:0RYif\\GkI+U$Xh.)zEg汬oNVM_UY=iҙiW#]0Q< +HrJubi:ʤ`E^Esw!.f13y=k+5hEވ7xjk}{H.. +f&d! |v w d/(.HARdhڹjI)mWN +88  b!#-!PgQ7v&fI#I9 pcMݼvc]rx5ZR)JV)JR)JR)JR)JP괥)JR)JR)JR)JR)JRu$yvIYF-ރYH9g(ǒQ@o5)mdض0NUS_d?ǵkA'$Xe^R7> oo0h-}4w;UTF Zկ,|E#m$R;K23,ԓ\DnT3 @}%X‚:NqzT5Zդn/]ɓI~NvymWl%_9H+c`tKtyTHeݽ8I5RI+oA_+6KLGpa@%jXTR3j1^K:$Q0\+,uV\GZEq5g3"sZF +$u3gv?ednN٧iV+&+P1Z uXT +Aیv:5N߉ qM%}]>BQMY$C +W xk R]9hv)3qWLhV$$Fl#`!1^\jmu*UH_8p3OQw:g$q2o u݂>^\YZDlH,B?*A5DL#߰] \ݕYX絓Te9 +D$u)X:s#<;#9joQhu>5sEt>6 +LZò{qw GnnSsE$1VfsFR[`!HR@5 +>S09MHi0a6 FpBVKܥındtz[F!DŽG{QԵy/&@ڡT`dq՟RH5f:1zծG}'0˻v;?G`|j4k׳b{;csrT9+;ZLXgh̍*#i7 Æ %i$*@ 3= 23ҧsU)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JU `Ǧk33{7nYn:!QmpTϭ]ТdyBW(PTg'ּϢImg{s1Pv8*Qk A8xO\g-=rk̚ܠ3]J҉cHSnΊrsȳ҅ėR9WEM),9'ήztZL88 H>EFYu i`kWdG9R]zU7k7@Tmi|X|yb ȒvGr +! J2_syM%O<;eDڬA`j'үzt:N8 A aǡo^NCd@Xa# G?U[c1$M,N–`oOdţ,7,Pޣ'=k ;) v-b%GbMa뎕 wn)w]PVEnL%m˅-iRJ)'#_nIwvݕY+Xǟ^jeEͩ7Rٱ&WkQ$ Yho4Rx>w>^X i'b"mIasy;7 Y#wisݝ0y<Ժ@*7YεA$2HI ?b;ې` +{<%ډPyCQ;)XeʙHTp#^@IeGFt~ut yrj!ove"UF2|tz6,O +$͉6b͍:Vm?awH-Cv|[hF{}]G*6_P8>;!Oe#}~TLϟ<98QھgWDHI6N]2YIdG{sA$m3{pf`s d ӳ/b -Bw2)^{ +Iu'ga2ZDjTCeHa~|UM,kw@Fqd~QR~ YFFÖLě2K ?%{D&3#rG`7'XGv$Rob;(,Vv99<]g3&mT f+#Um3owqtnec:d;ۍ+eM]F #osR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)TҔ)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JRIU$"R@IYz>^X3k}rBUEa没Cz2bV%i=7_03ϖH]e)JWuK1}x1,.!He88PvJb<$YIdetqGmxW[ >92:ŴQ@[cNhFpN3-p35.PYn'9ۻpG +'6 n{ߵn[,}GC[޺,BI vMdhꍬ;]\za%h.m嵊H͕Y'`w?@5M e,x[PĆ[d2|[T2Qpr| {Y%V'xm TU=vk\Arq +WBU ~1EcvkPBаݱF)x$rOZm+rvSpCkw6O #y4dQ+H^Nw-ͤ6^cyGRrpF1ǭHkYP0 {V}׺"z;UA{kݴٔngP;+cE0PFEiO56Zc~q5bIjPFi =1@ +o9$24  +ێNOuk9VC9Wv"b +ssST7Z^AOĐ8aTzBŭSxs@vT0 8S*/iI~heYbݏc' WWqWEwwn"7 7y(r@8'l:CJ%rO*vP-΁[Fhc[ QAӃץk-#aWRpG[P֝]fV(1%7$ٻ ]FB5H + Q +K^n#[pT\ 9$1޼7k@\1BO +G[ץ-kK1E9hc->Fc6nE> + x֮}G,j!r +SA#?:o娋[wdeuIVSGJյ5Mh ႼH Sgi$Ҡi9Pr=2}v;lc %U 8l=kGo_p}@NȬe[IfE䉚@lqk%;DoT@ dH#5ߴF'j vV*]ygz'jؤi;mN!B0Pt'暖{#M&SNNp{bu.dUteq,sX7ױof.@{BۦJfBXq=9>6$Ъw24R}q(eH Xݨԯ4[T "6_a#</Yu$1rjpf5`"@qI[kmy[P䪐W{nԙX8.$E7^:xcm;=8\"-re@LR(88b20pGFj/"ID@;>F1ӂsRZVfH660^w2Yl #lQ ʑc5Iv`D}F5[igX^S:b0M^γl{G`Dpb6nv$ כ~p•[d\18^*Ԗvʍ,Q#˾M(I'j[\ݴ.$Y[*A#=8N1AXFb4Se9$_=UdK-u"CjL_d\ ˲I7&`|*]ob2Cd㊹wkVqiP*"{ك0o/gv0 [8Viz9ϟLk +=Rnɦ4QK({Uy <`|2F;)j)bvPTʰfB855$P2YbA< dZun"{t3>wca\ghz:\*yMKuzM.ҳ ++[N(x#G;ys=*hx{m|ᘖیsxdiA6Ɵ{q2. `9x͖{iwpB- (ЕL{X7ktdɃB${/t|[GK+ 1`[`8㞵CQ0)Ybģ' +X5;[f.dI +O9ktEH;y 2aF0 Xh_B҂/S!dBn7'ER]{q')Yfl>a9^թ=Li6bwձ/KON3̃XݾDKfg_;vcEaweks/2Gnr6,/;CK +Kv]*}Ŗ  sֲ]O$jIb&_ĝxXcH&+fJ{#"+gV3:#]ۓ2s.e}a=њ$ spdPEAQ8KO'gx;leVq{K8#dsHxo8nm@6!esNb8I?e_Nq؛{`̰$qVEv'C`猪6#Mߛ:v"*J4P_QֱΠN$JI]uPzVM͝maX."FH [^XW7P&[{-o:N&9+qӃ[nc3 >xǭF K@Hwwp3V;[GrNw`+ #XUDh:y\DgoP1k"~ξ}-ź*#RX1= 9ǐqQi +۾l;ʌeT瞕/fo%x$Y+\f+(rrd t?RK/bUQk<—etpye-ZJ"9q]H\cO_:Z(pو 3oDҡ籺K}+Ng~)TAx"-qsҦ fX$I{}C1f +۳p֯to$ 3G0Rp.U'{vWduK& +*dX]i7I\g->eawut(xr;qѷqGxͬxn ;$dcU;+%Bᦷ$iw W>\1}k&6{A5;{=ė9ff^@W1OY.gs.FqҼj7,Hݼ|Q`.qW{ uKR?uxSҽRJaUW>#$zV-宧]ob;i!ϱ{,qcԮ`y-({0&!B8ExIwu=Mޓ $<@{qU@o"^) +9#]U 8>k{$|iFUa2m^ xϕd:uW6$aC$enB۔AgPkYKxuemLXX&` +jO0+Kc TpI|Ak.L {C +ɿW. mazOTuEGtiq*qn,herq#5~OY5 +ilw*my%޳Ku(gBX)$dqYԥ)J괥)JR)JR)JR)JR)JR@AU)T,SNZU)yiJ,%}f̒d` ȊHh09dfJR)JR)JUXch@ GZc +EUQz)JfJU3fQdR"U3b˦M0S"~ǡ_:ʥ)JV-o(YvAVٔ3T`V,rX3eҔptqSkսV@:*s5ZRU)JRX/$J`xJj 2z3Ue +A{qJ^JR괥)JR)JR)JR)JR)JRRId.; mڙ.˸Q4 Yq, E'4onǂTn3Z5Y߹J@KC!`~s^`I:[ <uSTecYU❄`ݕ]r'3|-$!#Fe 99V'h#- +M ,M"V$d 6G@KФ2L,RqYߊ.Ic`Xt PfҦ(^A=)*3mrqXn n/%@2aw}.H;=inH"EvW| X+RiEXIH #ŎÝ1$Z[Hk˛^k1A +'Y="i{ +*hzQ,]4b)2@-DvwYe>yL0^"߃1 +=^׮cS\,aH9'i 9exVx/y*C~Syn>[y#cH T0\nRp܎+"XA$hX' tY ĐM0:\ܻ($gۚqp㈡i$6RR2K Ϗvfׄѕ+> Rt E2Eވ8%JӃdyz<=h-dEUw9Mۀ˹s/q$j"@6v坔d9XU6z#|.Z6ݰ\a8UH-eмHBE +Fy F\ fY܅T7A`$eHZx٣߷%N cJ۵"&b;VlsRwHFY Ԩ;Gb |^]܇GNA`1F#!rIl).Ifˑ#{k$<9MAn9CIc ,668`0>}EM[LmG}i#׋j.HDbH'exo]#HK$DyT0w0$qn|MTSvOBT|U]zAR89VP+9*q|K6+`5.5Y",Wgû)^11Si߻'"r" <׭v9QU VTǜꍜqZGj{9D^4cޫ?qlm—60Fë`cr2;r}k_gw\Av(0eH$ _#i]5*q/|&:=º:d0 (zg7R][dGR#L%A,6y{Ć>鋈$;vsCV/VH2F6Mf\Xb9>q%1<+I@Ib2B/i"4墎Rj*F:IbN+x*2<; :ʻ5(a$/vAY۹Հlq}573Eoݧ895 k?aO5.FwÏRwfMʮ,`;GBzսVR N[ԾHH̒HU71,G"=Nai$ܦ/1 b 猃YV&\#$?ȡv'7%s y=F2R*8A /P9=x?PQg軣)ᔏPYU IZy#:,aʑyw7N  9I\ԁ VzY";";6F`'y~jjZUKy%A2)z2`+8Jɳ"@Z{GFYI cyoI5YdOmP~i#A mxM,I$/30n@9V#P=xIxd*:“q-~n>juդ7D1L1l' ҢE F+ >ESYR^AgK. duJ{m/;+جN2XŽMe^EBTJR괥)JR)JR)JR)JR)JU kqyK"v&{~!R:9ZAIӖH}$!HU@v`Hf6Iq?{w(.%!ݜX}mom-anF%&M*syuj\"U“(t*TδYHmFְ@J3!+K3j4OtDJTPl״.4ã g+.3 !IʼY\wӼAhS02'8皹c{nc0;MَpqTƷ٦֬]ګ; "39k2kk?v$--q֠w}5]*3FlVmqŕ Mme0 t- XrrN,m=2i3Mѩ@GvbIlItkٞ;Dh{+0\zuɨCHLw $\v/z d*s}9;}juK[g+BA?sEOkP)`00s'>Ʀ,bI"ZNٻs0f9 cϥC{&k Dw:thw.c86XVwumw,%7Vnp $ޥ܃؂dPT.X3''8ګPng -Dlna +YԀq;gc˥X,Z͌`!3s+8^H#V,nOV=|LA5l=Av)#_\+g`xȁ] r=F fisr\C˖p}=7 dַۈ >[+[ydy݄*K:@9 =ۮ`p>u%hZQ,LqYdܼ*ͽwV21Z(WM)#mkuwXnIٹw @ s[bM8j7%ɍgʕ#+*o|U"VEh;-Yvftbtl7 Wms|ݜ,LǸHHmjOP2j#f0݈wd˻-l!&yV +߉|l<1 9f\9RGtSkIGl+=W\^3k7X-W.Tea#֠&mL^IbG1Z[7fVVz GĹ8H~ؤḋ2w{ǯ>  KV #,0P .߂$wzr G8~̷W5iY>}(Cr:>±nt٧RK>Hfba)t8`A8#ҳt+6 &D{,WIx+[Q.)_y`{\vZ3ey3=T^*wR0ڧlB?RG|#n,}6o'B툂X?N1K(5+yfa*ѕveFSlZM",+'ǩ5JR괥)JR)JR)JR)JR)JRt1LS)1UbT1LR1V-#;]J Sכ(R*b98UTAUbLUU)L +SE1)T1LUiJRN1UbMn3~T1LSV@41LUj)L +mj{X@uld*r3*SZ)S)b)UiJR괥)JR)JR)JR)JR)JR6*1Ne 0!(Cyr̋cqtq|n^8qAi:e֫H/r&ŒI}*~W9LD{Avrp + bGSVJ"(cQ_u*w/$$-a gk[X$ġ~1B6]mc)3*opϱ9>v gE*Nу+TAXw,Me,#W Pp3kĝ^\F6>"v ) sYjv\>%tgUܪNq>umK4f#v9v15n.ȱ$c0 +slqo3 R]ʣa0#Tå\$#s6>հ\j+Hn\n@P2OVzEJ:p|CXw@]D6 _,3%M26Y9=9Nuƽko#Kvq#,llO:^2~kdF09`2${Tޙf +#CN@'p*mY xWsFpωʃpy5Aե7z+6<2SFv:5m3YMkͦc Ę@YJ 0S85g,EŜǖ3? }J+8i"(1Xr :9Rʲ#FYFxwݽ~)tq}UMrY`e ]@Hp69T]rʫmHYr28ۓ0Lw%ʕZPX)E 1W쵘/f0"H"xP@,7gҔ)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JU:ֱY\ǩDqy[LpN:.2+f,fsYap,{S>Zlm.v%5mm7hW&I☢sP]O`g=9A,Mf,hҰސ6d(1yGVWv6CiHR2J8xLV7b9eb3c*${fu(]U}#i280鑨`haHZ[O%sVڢT\pwA9\7@TFP mkimńF_OnXY+6%9ǧQYZe0IJݹ, #dqёaSe$201;*H2IJ̼_͊iFeUiنp[ߊ'Ǧ۫|Q.iɹB$˽K"b^A.Jg~U +մ`SU,Yvr\yH ax&g\F9.[Vim]i9-IQH‚9`c9X&Te!+ˊѮ[^(3Y?X2tҳt0 rڝA^ ("NFg}7 9"5-Cޗ,/tڤhp@X:"YZ[x^.|[NX{d,cFK$ng犳ocҾB 8}gcrCsc/%ÅdYG.8 =ZN=RrмNAe*#bʃ=EWQks]0C*oly }t5\:#lcfFb*YxkΚe mrݺɝnwp<+w ׼`zxU'pCdf:j68G8YdUJR)JR)JR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JRb)bZ)c1LSibE1miS1XsoH[qG^X,-h +20WjkSӾk')c1LSZR)JR)JR)JR)JR)JR)JR)JP괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JU*uҔ)JR)JR)JR괥)JR)JR)JR)JR)JU kvR#@ѫ98[^Qϰ⩧+*QCjdYb1=kv%K  *yq$mlBjƫgZiMˡ+hY5elhH)8,0ŝFI +dP c9xZ8%X0՚T&[936W9}Iu Y3szHݑg>X[1ȍ<5}o1H%đ\xRo3+NյnKBA +9DRVMi/,uﻹ;茐8DM@dȸ3c>:Osuf`+Įncm*"q;)?|K#ʡA kV$Uj&n+$ +~XO|BVUW%Q5_{ۆN+[~?_8kſzufE #$gT-_TFc u'QOmkyn7rƹ)f1{bhZז=oѾ98TP ) xʝ`J-uI *%†`yy%7q,}qݹ=6muj't$RHwyaIUٝZMGJe ђ<)IJxPzAh`XZέj28giIl42D9ՃHGz_8 ҭȰ*r\n-Behd@%|$tϴޟEZvjK:@BS עFIf xn u u5Y#]: +>^#y5(7Űӯ-pdu\1jV5[("p1 0>yRsI-ز%=+!."5u,ܡaQW8jW:%!U~@sTA#'&Iu *YU}2kHdpc\jveS#1p/Ryg1AN88mbMdY\G"WR +.*T,T0$gCQ]Վf!h8@N|sVLkW6S­D'G%n *&qU2|ϐ=*[z:+bQ4lqH+QEJU3f,JY N,0A>*x{RIg4G#b2;O=OU%I3 8#1^7"2y' + dWT#t)J괥)JR)JR)JR)JR)JU+[7j-tKsSʇ.9o_3׊K?MZbY+]nQۧa]RNcyapfN8|Y2Y2z2=Mov>?wz;ك~}3J}G-]RS"E.C('+f+%xyU\EUϹu{K;ZTct}xZ+|e޷xRsdejKKΒBGF`02pM[I{@pq)>٬+nYn#w^F "9P F7Z.ڙĖuNP"E;[tz6m UYghJ(Ǟ2~UeaoR $Bwn`3(U[s"k%đ(' V~ݚ{^[PYX3vNur+:e&9]e0GWK`=y{ыMFQAJk98Z5c'ͷ GY=V'|!9W ϰ1YM;\DЛ"aLH3`qֳlS$+#An2Q>.lzK+k~-ʪQL0u|Y+a${rg0e?S[{Af[J"9'yǰۍ:mKJ`RG*-ݰ}l/-㹍 `}29ЎV(+gɱtO A{B[*obr${bʊp {BPb5kK^!$Q*Q83ֱ`ky(}}4ڤ'{;ލBmA[ыuH ++y&Kh#0<>{ ,3qRz\<>;-@hȯA0}Joom %v%Frzy.CD[ld N+ז(Eh#`Aicc`gWY<7 +n^yΡ9=&K)"vg HJgʯ9sZ޻[j.n r*##&$ ᛠ''haC¨n* 8ʫ+Oi.mm`Aw,Q +E\ddz#&sȣF{$fڪ /Ea c꬙o ?sYՊ x*DB YՓ U;RNvGdvKmV@A<3ʡ#qY:p7Ƥ݈ +`"d;͐.Oxȴrߌnv>tk[-wJ0dz ݮ8bMWe rIǯΥ46ZB +vZD bĒAʧ$eBFA 75HAUr@|WXMY67LXiv:#emrA1IS[)LNL]l< wHK=zTjth4_y-]Qv~YڌZz:"28U +h#dpO=zdsmy[it%PWGU> +6elY`@*#-aL=͐y:;H=0Mob[E}y4jŮT$,ß"HȫݣN;*FaqŎwl=nAWعbTPs֠!aj֖SH1,Mq +F,`qQ3Iv=~q֥nJ~?O/X!^{ab,Qdl!?UNj]jŬgO-= =ۏ>\= +7xiX# Taei,}li!?DdrqNM]Ֆadʲdr|="A GzqLBʑU:*)J괥)JR)JR)JR)JR)JR.{5Hg 4jOLEdivpx`#9*=r9Vc h 2ʲ~׼۷~ѿo\njQsvcJ;8XŜԖcԒFjJ8% +W줗khcRg"\CyE2+ `՛M*OV,dd lΠ ޣ}uϩ#+nLr6([gk# @g qlX~Dݻ6nIӲm=v(R}zM3A˄z:e + =G/g4 +.#\A3֤q]&& k ,wU|RX ^ڒ$Prp}Gz;#X׮i{?LU#(t yf.k <)"yt#}2%X#t\mFE*1 +l[1MW5i?Bi 1` F 1M:cI-!evhԅ#pY;ޫ[hԪb,S[-ʬ}Yo@eŜ7Qe]WO*mZZD +"6w(9?q{[v͋8v΅axA6 ͧ[<3BTP3>]|E̢y!VqDrx>]zM28 ‹P( ^t[%wb'%o<~ȶ1( +ХC) =CXoEmJ黜k,Ć1PX H^C&T*2J ǖk2dд fbI&$ԒG&MGfQ~<#8<%"v 8N: +\C6;A?<}پŦB.>4$7yfNP%a9#UK 9-u0Pz5rKXhQd #Fzt_iV0z~Y{t wl]v61g7[tF )?[$adC[[;IH`1$ryEXDsPz4 qG ܬ fKFH!Hվttx9%Ckd0Aǵ_m*F0drБKZ&aDaC1T-0qs9^!l6LeOm2nqqc1&mb^A\ujMO8khFrPm^s+;T5w%ޔ&(-}ű< /Z,n𓴜lgk) b)hp/xႾ rNgxbTgE@N>\+Ay=p ;cBH?6$R5LR]{M6eK J!󟫟Je <0k 4]m6.}v[HlB3Q2rxzld• A#>oms(ebx$,I2u `2 ׋K8"Xa]8ϙ5nM.YZf mf*7M]5% +0*Z s"0 VR5@O'&R(괥)JR)JR)JR)JR)JRUj;^庁gev* +pT7U1ct/mw㜍}U4fQntKV4#tbU$3^$-i;i6mdV8$L ׼4ȡ5aq53O Jl!+'4V5s%)˹:)8~so%HĒ>18U;XǞ+/Eբ,⼇!d\~DVuS43CqQeաEVxNJy<42*i}{ݜrm.78>jӢu<'fJ皔CvZz7w0U@#"]j-s$v".TiXާ3^%3* L8vSq rMe$dG43Lջ8M\@rx$h&* .Cm$r288j)JR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JU kZոs>Ds"+H*B?z*娶Vi ݞWgnIʥA 2*36|nNp<*3:mж'kx  *t䚱o-ۙH;FTW@&g|=jkoTH"{@Ypxfzy +Z,UH;v;_n3.mhY%URrIyLZ̎ĈnLHD\x ;uΉz?|®[2-ܷrJm"` lU,;}V?|[3ٔ#`8?QXڅɰRgFىI67g`*C\rnw Q:O[z=Y${2vR^QXGpQqstDuKxe.GF#cX^:gžflve8IF2# #qjWLn,/a!6VIf*pQrHlw۶*ǯ.H@Y6?LBTs>>u㱚_iPaZ-^cbRz;֛$׶ ,|o@ϕ\odգu2wvR,0>]W bc |Fz bztb{j˰0^*SQ#y٤k|U̒78 +x$#Z嘤\]GYzQ0X&9ti~|:$Q#/`ݴnszék1_F \wFR^k}Իggg߾JjwF m8v8[i8S3GǧF^tŌ/GvĂFIVVyu_<=mwr9*>s=SݞTe9h1`g8G~iZcOkpgSm$G=9犇Ӣɨ+ Ybhٶpccsֽ\WE6Ko@ +8nE7zի®;{iW,IvCN[2iI$3 #mo.48Tt2! F98eYXAi#9ٞ7@Iu`$:d{Gq#m$dH s+ia@Mb(R +\:׮/e4H Q L +"$$GOqR^Qo Z1X#E2+Ab K4> ᳎Gon.m+V̋sl^P_aJK$N>uz[;ؑNCMfHRWz:qR;ax$B3@Yxda-s*j)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JRNyd/$B7'54h'{̓#9W㴉!mDEUp՝KLU>* a;H>bl:jwp(Wq8Wѭ(eC!C.vg8w:ԭ1'w+$`o@n8\q^+H1R@V1\:MO|mž;qzuvmwIμ5st?D;?=gI{'A3#.Ҧrz`eŢr.[XLT.RvʭYrs333:NgڽǡۢerʼxU>Lp?%gg +=bp=xm-]4`#{ʡ;Aʼ'f9bYdY 9ҮB$C"lc+>}Vqzz԰RwtEv)<$%ǒMXմ;MmwJ΃C)BGvQ"v$ZśS#bC@,9:ȼ`14wDe%YN +D͔FfHuQ)YdRO Hoz_mdmayʏ+zVb*r';VT7gm$H$K!ydge\}ggK Q 3cbMZm#Ltl+26 +VAX$30 \9Ph6)bp%\Wwp_`k:5Ea R{Ų8k>;1ݍ͹ +>+-Z0H$ {Whm qlt,ŎY݋XYT)JR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR#.\uO0BOUR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)n;sh43p:.[(]xG\qk4ցn-D%7f 'z`pkp)JR)X\LEBY~7+y;t43L)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)T+WaqjYs#o0pjP]j߼H?-s^dI0B~؀'ig.{IQg*pqSҕN+ə K8q+PFplp]kZW&5+$ p<8\ti-$uyeˎ|kW+CU "m g治)s=HZB>>TWm22DWʐycM&2+yGሑqB 95W^q +kBʱH d8 +)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR^_Ayq"ƾ@J捛g8iJ幖 HdEmv2ݓLUO{grUd^Fu%A8`8"AvRZN>ʷ0,?k8v}^o +s[[9YBJ0Hq.n j,1XhqcR٦j]o3Xc'vHmyzVfݥlK.9FaǑң[uK+9d Đld*C3v=xҽhȗvR,78VZM2ǟs{ִȸ(f/ F95=oqk,Npr+FV4@O3^d*t@H,py''$954Kh]YP#x ck֓[w6n$v|g7qT-&#\n9&F,9$חml!ݕ;82G>\ U4K#wlBĤ{[bdIRf;jM`71DdP׫-VR,-]c=:a,ؙэyW{+*'2"Rvd{**`z +[vXE*9S +@U ob6bjd ^{dL]J*qqǵYԭl$ES\*څ" \ R)JR)JR)JR(괥)JR)JR)JR)JR)JR)JR)JR)JRmZ-ͱ[6Z? +¥;/YXpwckУQ$K~vsyծ4v2yf9̒K9ӻKGk? +ͻ %z$\PY'n4=8k:'t6pg&.l.wDWB-xN՞WPA*b=2EvQ}9$5e]: Ҷ#sVMJ91Q\i6y~C|WMJ8'8ϥz4uq!t @𠈨yկ_?"ouO7*>^S~·;* e\jv2A yyd~xR&WF}l3xO՞CTzd QX%ff8,3*Gܫ&@PO<^; u_`}G#ʣn\Ϳ–=$&b|8' SAZjp°2R$Q y$~_Z[\"_Vs`ex9m.'#elzyԥ)JR)JR)JR)J괥)JR)JR)JR)JR)JR)JR)JR)JR4(rGҩp#EPX=OfRIYA|UHmsE'ԀMbj}&9<2ms =k2(T@0{)JU[xG8URπ2jv7[mUCm9}qS6 ws!ʺ+)aWiXwFFK/)fRy2N95P1U,z!-cB@$|A#ґB(H*ׇeXPFAUbPM9`RJR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JV ދa~ŴR${/~-`eet2e4K rH +cX/Υ)JR)JUjףFnˋwUekcs֧ncP8PߪQҲJR)JR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JR)JR)JR)JR)JVystZ{U^NMg{vV@ez֬Z]4juujϛD lOA7JR)JR)JR)JR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JR)JR)JR)JR)JU1TDQp+x0JA$GZJR)JR)JR)JR)JR)JR)JR)JR)J괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)TV)JR)JRRҔ)JR*iLJRU)JR)JRUiJRLiJR)JU3LfJU3LiJR괥)JR)JR)JR)JR)JU:֯y5kXԫ N;F(% +GQjv]^p%*X "3k*9UHr="n-8FQOKN}d%]ZȺ2uy6V'`A:ԭo$+#M7Qw L*r|KО+6PfHVdYf $;mn]F287?ҫjǹY&.jx ~(9>[ZO*'@O'+ܺ IV*Xu@'yUp"=p*~DuHAyJn,H>E_ldOq1׫ZOT{0DY1ȓ(t`@ AU*ȈXC0RO漦m!uY&<ԕ<ջ^4Ik|?UdA)=6Ϸ~i vx# IV4qcda$ u9xɬ~M]YRYHO(#>iGisHYCbv*͝'*O6zr0 ft/Ř7G\ڝFK=<]Z˂& *`RVڍdr$+pNducX7 'ymϟ]Y&֬\F l' r:Ua̋ pٴLU-VPVx%W pGE[h\LC<8νZ\̍"JbNZ 1z+<իm2\ u{[}+D *xgi:ZsFۑK`XJV^- +kH/nc¯xjm +afA16!?*n\^33G c@2Nў1,NOB?/*:,ڬzq^jVGC2 QGq{ +wVfFw݂>\4٧g+#<!fv>k"iܼ8b2qR괥)JR)JR)JR)JR)JR+x׍:pyxU,[7h5W% V9ۿi]kμq_c^؀Hš9=BIrYB|}yb6ۄ݌_[zNH]Ogbg${[cv f.Qxn^9Qvqg9+zvtҀ2LJQ2*Ų[dWRj 1H%PcH2&M|2{[ '|}Κy>;/}m<񑌕Gj;zљ#WW&08 |J̼>xQ(d[`UzTʂGSzd}.+Rq5rՕrT0lƙn䳸h>*Ft~aʑ+X]3Gj0(']A\g|,Rꙁm&[yیl7pŮ٤e7=3F>p>ʃҬĺSZ^c$]|B&JKm8<é2oրdftHt$5z~x\(UxjviEνk-+,vS +J; y ٭\c] ,͕GLytN-CC.'5mi,ɪ[\$A $!~QFyVd{s|Q^lDt&ZCu}^DԴτ`G3; n#3m#5A~+rB؜sSݕM؝ۏ NBAa7J9Q2W 3g H.4]Z62ϩ2^*p8ʶNjpZےrFC"v&EURǹ'dA?G[Ϣݗ )ν2[AhI +D@uC_^%n bS##}Vf*zݭWl1(}#SZ`+6- 3o?1Pzw3[k/h kvT6YLuSquMk"J+ŬC }$$E Sy o8+`Pc5m=tP/I MUV^iΝ.q+1۵ <[cz1[m_WZY5 _fsQFcny+)f}:FivuB˼sn*1jeZ9lP1yw%@7pzɭO1cZ]ۆ&9,/SqVtF)wkNq|H'p^)-m=X&XdYNРܠ~:K"ή"ݰ)ٌ秋c6.,KLDp[5UIl@ W8uW-{I\+T +>~J@uMiX'>7WpVJR괥)JR)JR)JR)JR)JUYsImZ- j0UYd95# z`bi ,hEz0#A1^'JK&P L(ɰ+mێLPNیmێLW!UcT(…PAy6FMY.= c$qң4˻;Y#Eh);:H89<\ UjÆ^p,61f(IAj[p9:)zX +0[KHcvcPCi rcS? yy׮0Fт0FCkB}F>B93O*=R!;IPJ^ݻhϮ~ڢAU@' 8-ww1nl p95O^C˧^5;@$'rʊ@e 2:|؍T$ HH@䓀'νpFh$ qAbӁ2ZC3+j̿DWHȫB[N[|bn3AV5@F8*676ڡr}NɪXGv~|sAm獣޽QiҽbO4jw[*q@Ty ^zSzmey&ƨ&"*ۋ&0sYY5kzztF[<9 ~||6+B#$VhY]FGVaz*VΨ2NW4,qſCc&T۸932D 2q0Qqfkk(,`mB^ 'qA# P\d'3]W g5]J}*'f~&`*`Զiaiji#G&<J6FL?guI[yp/!HBRlꀖ ԓU* =hI מ.?e 2z{к3ӚU =93L4:fΫ2p2qUDjE.\18;FW8NjҲc+nEd0Tvu_%1si"FYX?Vo:\(>gV`$q!cFcqҼOp-ƭ)U*W'z  zԎdH"B)ۼlm9c_Uѵ9-#ڷ"9Q<(B ur8}NIn%=PdG)5'@U:kŤ2ksjBV[&.UAh<9ݑ֬Y}kx | r1q5r;ya^01*zIm +Ky +Y٤ +n ^1ҺG[ﴖ&hs7&7xdRG xIX[}ŷKK34S.t^-P])?4K6Ԑ(ck9FqsW/ZkjKAi[DR)$ d +Q#y}ucQMK"2;b-i#n5{kj1lw3#!t]ңtC~ Kk0OO&iʶ 50E!?>AM[C\[ŧH}cb GnpkfݥŕNGc@6Xي̿;qٛ/t;ZsjNAetq5` +.a:7ܩv̗0Oz$CA'>.<[Q85ݻ8-+}ӏmڍ"s=GAR7*w@ "@ Q׷ZXJesYi`Y+ ͒rX=rs[minksu Sx[3*]pG5jtnL!icIjG{MvnF d*%yàQ:Ěy/1m$*)Θ,p|&q+Wr#% (HDLE@lgv3< IO%{3*PyJ 0kRMDI$^HI]g*JN&x2sO266#<}u'q4om4KHaLz{8f jwT'ۜ!m\]i@7^ث%'fC8m5w3s ls(«E%Tp3M/OH'a+ݼ ºx rA\ҫipK Ky KE*#X\SfI’=gvF3:qiri.QF0D&[M{[->[xduC +`䃼`&Iy׀XCH]ǐⰮ.Z1`Hg1n@OZջ- QZIHc/>GR];!d2 @LŊѬt\v@bt{ib0m/<+pc(_Z7i㏈cP^`G?FmehCO TV_itQBC*qp'lfڙHZ&۰{f$P0Ik[jܐLBUKoeXa=Nڤ׳qV"O w{?XZMt><9~#mY3fm%Uj4 8[w6ݟ0X d`NH't^乵LhW+*lFWn*T)JR)JR)JR괥)JR)JR)JR)JR)JU k'H\e$kXcIQyFvpFO#eI)͋!3n`nYO$dͥsn-S"75 "'ٰ;r=2z㯝Y~ZzXg5Bϙ(~G8^9s[\28 FcL2Ʃ&j8a+"P;[''m2ƪ3bu9}zMvQqԒI1=X'ֱ}\),] rN(J} n9en18Wkp2j$q ^[S6dFeUr2wzա]<@6έ#9EB#nbܠFpy9ukw nX[;:AkR7^snm%W1Hέ,-1:6o22绑\F\W4;h.d̒ ;48Mh۳Fdv$ yc(;=hrr!f!Kx8ټP@CLaH9SrxMz݀LR)ujj+F{' !׮k6H:)#Ak)Jo[ DYW<jRE{$pA=)J<3-(`=jӴWW"X|d2FUsy|f)&'2=GX5%mP6Y|uۚΥ+RO 33Glu®N򦟩1m 5-~Q8#T-ʎW ڌw=EdF4UkM֮k+eN96 U A梯4#s0P-o 2{aM~0G2=v, R*Nܥ[%j,KgsO)$F:uG]K{u1Sb=㗓~Ǟ}+2uI_3rp'SQc٧ﭜi0'o#mI$O5Feq$gԩ cRf,i3`8'~ tYp*pFFAW/WO`[hGf<*rx/(2Uv.q Zݵy9xR bջO&/v,`x"178ҤKS%+P8a+΍V'i;WBQ`k:)JR(괥)JR)JR)JR)JR)JRA͍SI#7;F~BRtY+±gg%N{ +JA\I\/h4u.mA+ӑj-C{~D6YWk{<ǟRkvuأ`2TeB9aCŚA(uUT&ͻ)zQ^uV=\i?pn 2OJZ(S,s02EB*,|9O,ȲJ#1K,}ԍC\.Jg>#v'r ;1'zT6{taBȮ98f`\b&kxf@l}51Natwn;/秵[׮.y`tR7wvS! O~@&s;XAV Λ3㡩۫kHU.8E.ǜpɨk,߶uཏTHđmXs{ͼ;桬ؼR-h2V<7xذc;jzީc a)> x5 -$>F,7 ++nT}u{^ܣܠs#pc`yzm#T9'G9*eO,2cpYuPI`pzH4ސ_/7c{=WuN{C .X' r.{,\\G+IBUO $\)geCO\j\?|։pjC^kmCRӾ2fmUdmʧ9$|q]A%ª5ٌKrw` k:p30wlއz٘dpqZb0I,,)&ap6n ȑRyqGXgN.Sq*7\dtTM?uKFԳ&-.(kO +O*sEao$ʹFMqR7I$i7e_6 jZĺh䏸'$`<I=:ԌZmw# +I #( |k#Nk+a&1퍴Ǒ#B@k.ngj77.Kz1M`jWq*A,zS73!V`DR*䚏P"Omf-oUu#Fѷǽx6AOs,' z䊃h$DqJƧwxF'p+MܑFkq猞*'V#pABdMN9*ggQS^Z >{dw3ܫ avq `כQrU=}ExΧ>i4R 8,OjhY%I 8>\q^ ;QrNFO'5uT(p +PjI9lkG%IJYС!N9a 驳9CĒZrI3[Kإh+vlFwC4WIGi7SmIzp 5 hhte?#o.Egkw3Z!gXeS!r@hza4n͖FDʰ[V,eE{-R@цC/-`0jF{/䳚Q*4r*da#8vUvhN>RײaaO8tUl/¡U=O8ǟ\w̋ +BpOSw_cIȥ:ڲvmC6Sԥ)JR)@괥)JR)JR)JR)JR)JRnc Y.@ c$3/Ψ=̐OnM„>Fс:4#B -dJH5)Y 6 `sDR~˥G|ڜML"GGI>,6ghgfldB'w"ݧ.0bf&cZ&  +v9گGҗF 0T99䜞q֭[]w{i[ʻnӏ#JXOi.&8^0=-sɯErЅ(0`F,5菥i +¡6`Վ㽱p<2jVXRu(OP@ FU{{L1$yv"q*Ʊ.v*L a8k|-v?TgYYZ$t:Bk 02[+2z)`g}+h)gdDL7&K)ˌ䓞|"-Iݮ# } LF3V/g/mʰ4Ydi`2 #aNL\rYC`zI#Nra#R]T3ѥ{9]Z>na9zw(dpo $UӮ [LWBH #'?<g8!7'@n,xmd}vܲıVb.mDnb@3Q =>ᏅD +2sI5huzAITP#FwSdʱ[JqxҮ[YAg I'$"*g+^%#YrSDѦ ܗR0 @A'TcϚQa wܠ߃ՉGV]YD"*xI9zX+Ho $찴q<Y.JmPAtBۦמ35>5DـK;l1\ҵ-$2=C3H<U mosFnu3!bTy"nF*:jQc9{#bGԬZ +DH:Q#ҰBn{Ű G~?gkko`-$lRb38e.QHnہ\VKn%IfiOtr?jR)dWC`#j"#ΎWk`㪱$Mk^m*cNIMx5 ٨UP@2x;UV%?‚nR3Y&Daݾ|>\M)JR)J괥)JR)JR)JR)JR)JRK).@g8^:נ1^]S!qzUiJR( GJRW71FUFI=G+~ᧄ4Y :p:"N]-фfRl0rsRfX#]W7qgҮ2 GQve<_ CURX#2%kuZΛozдI=U>uzx6Aa2FG⽪TyUiJRnt;=R61$?xVc鶶9xcv33ZD(hdMP0ׁNGCY2B)AX~muer'D|ϟdB.#x*Hʜ04=ժYʛQ?\ +̪Ճe8!e22zsVe-y\"w;q^[Eh-HIB +Xh$|NrgO8iHNPURB3Y1CjH_!A<݀x/#h;X`#|CWUB JR)JR괥)JR)JR)JR)JR)JRn3-ˏ̱K=*5WK׮cĖ1HR5iԶ3^0v1*őA2xזd 3t/cZy5ovCcH]_)V_11M0%['#<} I]k1ZbTgU o([@q5n紖VEr}YY8<<0x38ܲwf@ma?gE}34~.b@#>uֵ4]6l.z f?if7-ݹ *r'}bQgy)j^B2I/gȑ Z> b@0I\ +:͵Iڠ{=X+% hA$a[rlZrHc&0^Vu{)E-a8a$Kk7^5 3@0FIePrjuivL[ F1vvjoS1|B0d2# $Sn +q+c Hl(+9f+6F +du;k62D jXq@[gDv>71,{zY~Je9V*EeTMi-lE}b`ʫcrl\$#~tE'r,8c)%rwLس1,O@@⦩VWx 0$}Vy6F +rI5mK;sG#cYcxu) UT֑"RdPW>xAV)JR)JR)JR)JR괥)JR)JR)JR)JR)JRm{fRNHi`{dgXNtnK-ab@xے򫽞't5<6Ռ&Eu}0[K{w 4G55Jk m5H5xT Ѩ6m<ʷP9#^]MA{=X+mgb@p:ǭa߽4r$rKwa;6 +=A⢮Mthu +!s4&Ӱ`aT'f}zU$,e+('dkBMi62JwYDJsI9+:ޡ#E"Cl*1x`d|&/4V-pDk6U,0#=sRzĶ Ll_ 0j2Nƿi$F13*Hpc F=pjF{gԏ+, 9' OlW쬗66B ܍8 +>FOmpQ vۆñ9Fr:Խ˨q,p4f'#VbrK.܌/I=*.+ )Rsw~xK}GaXĀDYYbpdtN(He1JmцNwҬj)cyy"s (Y0p i<*Ԟʕ ++$w\aH3NgK- +k8c|A|f[GucB$w[]A6F{{ㄒVIpʶLT_r?3YZTV r0w$~)L9;~nS~XeEk\]e$(;QuPIǩ=kX5_h.,o$'SV䜌=aӥ{x;d S+G}\&]cHc,[quh0 1g2n)@1ZѶ85yWʲlqH"mN\`x:*h@u B$h œg8@q/kmdT1ni©v1+n#h2>.,ȻY䑕 +aqǻΛ+ZO HTk䜁 ƨ}l7G0hjH%I3,D#B;kw73Y,5)RkBWI0H N2G<ȩϋg$2 ̡9̣>︵*ӣ,Nрe#uW_kqj<{ o7s޶HFG@Ubq߲2 s7v*oΟiIteƊI aՋo'8Qγ5in!`3%We,x皆cp%H$.0B[<^FK{_VFXc nWhSCjZ m;lTȣ1vr7yV})JR)JR)JR)JR괥)JR)JR)JR)JR)JR.E̐R=>U+hB ǡCWmKh(*P8*)TV*)bJRY&PJ̤L׉4yHd]Ua>,1ֲktfU],r@ϥeR9E,8N<|YF4}N( +JT<2-9( ?~^l,K#1wBEP@5JRn`nzggY=:ko/ +9RAAjtc;^;O}L >UR3e4iZ2r:1>x>Zb4 Z}'&Y3*H\r*RZR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR/)$9 T\nsy{u+s 7OcZj Ѯ`GV >*FA'j7i. Y;̅+yR b}k623wgM7!vbGNHܡlEY6S\dBTuƩ-ohb'R$dۏ0xֲmy&FF+66 +pzM)JR21R;pyuEILWohW9_NB;PM6[>Q}8U)RIpO{)Xd QfU*%:X,K\T#` #'ʧ0eL8W }]O5FFc>vOR*O|^RJ{E,ƳLA$""Acz)J5'uڬ'MYkMnOz$% +8i $$>Y8Vdt {$c362U 6VĜ_+.b`TdBB&7:[X.>lpW)L~])BKlʨ`dZ\ c o[8,cu W.޲)T*f-[Kb$RT“xUf^%aFv8 +M!gEU0>T#v@p3еOV0.vv$3ҳPhLrcF($s2a<]4QspQ !w8H @zaĖb#I +xnAIR)@괥)JR)JR)JR)JR)JR ]9'+glg>b"{GuJi;U ޶ d5s]+J8XDt;g/JQOE4K4k +D2fd="2Nqjޥtu]XÙo8\{pc=pk(ˡ$%£'h77W: +j:;v!pp02:׫-/%YcY`cXA$SF2:W +}M,yIa2Y8JעiCs/yNU{-vmg{ϴwxFxt%t[ĚNIoݹS895-W@,!@LO 6drOX^\$wf(rLȤ}:bH#1,& }'GQ:hn` <ڥB,8(G :r3Ҡ4Hw) flǷ{cV|MJmi$K{q#FP9AjqS D`| ɮ9 [ + qcY@ZǶm f} |,Z* +8a{a,Ey#\3\4T)ɧFӠ#'$I@$' rk$@}vCٴ2($V-f\Kr!,?-Gvd4\ '1`W$8#:_\ YZrݷ,IL`V,M=Ɵs,Ɨ0c1n`q[&BcvѻnvMury>B8rkX ̑V4AʶIn>G-Z6%"xpJj^4viOFsXT6O~RK($`2:ۊo& |U@2 VLZbk~\e*[UY\d~KQZY?s/MJ+o/k2\E.T+ 0.,1F]ԎZZj24!EŴn6Mץ_hwpݼMo,ѲڇidT:s5kQc(K2 '@rxa]ov7xJL Ov~` gΤ'$d#l1vu, gHvz/D$AWlCNj/YDY Vʐp3wުKy):s?gofb,ܲxA.ȭ;I%K#Hܿ$PgCVMc@ԧA$V$Px"A$VӤV삡{5c#mC0Eq+΃r"1!9Jx~JvwE5R1.2 FrAMdq|*H3dt̒KNJmWLgβf1M,n-3D+xXWn1z=í̍ Ɖ#vbJ$Hr@]n_M=s~d'VGcוlA-Kܛ1;w2FHQ KZkin'>0\$`r Lksw[$㑚GlmbThR ьvŝN G_^ɣЛyX/Yò Ww8eV]MV0Usa:TU/kym%9a \CzqSmkG{wq#TCKk9D 7HvF,Ap>޵ɨ\=uY +aY8 FSwkOy#{5Bs!ey Fz|a)JR괥)JR)JR)JR)JR)JR/cﶒ\ $5zEc:I$.& dyMVnE +trI"mz`:&V f3 Qې:N 2'W{=krE #mHG<`+xowdd(P$!\cGceT,eh[v|0rdy+>MHdrH^3 Tx5K].i!Tm쬗EJA*.˳v|mrMݠ2ƙ#|O[~5YEljX0*r!χʯM%IIc2`vA"'e#{Ao+BŘ31N^B]i1]Av xCm +'ez׈4Hm.nQr9/6h#gŏVib,7Ja2ݼx_:}& +mL81wn5,"CNrR1ܰ+W3K-=-!290"q*ދwKg ,g@|''zU_j˹_w#E c>m!g!Q`0c:85?t-Jhg{h ̝>rMîI'Vndu6r"]ug^Nc=82FBFxG ?d-%Y[299n)rH +X61Tb)J$5,zI(;dU+: gꭷL[h 8}7K+TKhBZFŎ2:)JcRG] Pa3V50avq`X 6dbX3&_FP2v|j|]<!"5HO y={ ͓5E< iXx@zu$;T8#Qrrp'ίR+Ne$dPp"/Lq&sw* .Ua軾jO Gﳎ?N6$ղXR@F;7A@j䭿"U9k*F@80#>B)դDLkk.[źM:Iб% qWgbDaT+~dn nHMW"mĤpރ>=1qPv~dED !߼bURKsYQ)X31'%,O9%IC.;FI7`7>Z"V=psv Yqb7zdʑw`*q~vfh| QK#2y`=Fm!HP''`d vI.rn .\h(*Iyظ70$ tvzK0C;yl @'oG|,0a@RBӭ 4$oUR0Tdgܚg0y$HNbGlN02Tpμv^ &ie8Y%8ycmVn,ߡ|me@bXG=y^]kw;ЃϮMc~u{,bFyxۉcuO$s,*EwvL;;h-@+.rWF1^eءEva a@A>ol{;, H7Ttgβ41t{(hbBś'~+VE̞%靤d{*ޑcXK$m#Dؑhry$9ɯV:JY }_M-" .X랧$E)JR괥)JR)JR)JR)JRWw g >vƌ($X~h]NdvbFF_J9Ua,=8PjLG~e;m2ɍd>@T4ҔfJR)JRS4ҕb;RT'#UREo,v yҔ7v_DLԫ.H=G5FXY"· +Ё`טXT"y+)JRn{xT,G zU)X?mݻ~\c8ǟJ$lΪ>7''g 69#> sEՔ,iT( +JU*)JRfJR)JR)JU*)JP괥)JR)JR)JR)JRwNg+5Y< €:2j:+%YڒjX-'jf>DX盛8mBP\ ۜnbN>j.罆2@f@vmZ͞ l eHgW8Bhks.V9 R!!pt5+SI WQ`k6vkk$\2Fl{Uٮ ֭-U~l63GJh>*3Mѫ$`MKϾ/UkV,ѡ8gU8<|VwI,jZrx>kle$ CH@'OKJ!d9–`Xg%ܤa@ ' +Dzд4msRr㊭o{yR@ VҬkZZ5O!Qʪm8uF  +T9{{{tTvC +Ҽj|91.\5ZO\ba&;%#%;Bq~eJeΠʥb%A` %ee ㊷i 9BcUٮbH 3 =ԨvlgCPFc},Q(.nⳌ3 @Ӛ@ѬTmi'=i, +GP@^%-`A$c5v[8yN `SϐGSL-1u L篵_iX%q9KnDP޻A9^ $1,\J'ndGVzt'T\%JFYU9gަSDǸw\ڭ`6XHQ T,< O^+3Jሆ7 +\s;Rcί\Ae#Wsj3Qә-};1,>ƀ#|*̖P숛r}O&HY|?uJKX涐b[xed'B*JP'#p.OXut[sx~~]yDU|[-ZR`,@#-ΓFьéAl㊭dG}*αâu3q>XziY&fIr|k>Ps +J"Ya +MZ̐I4k#,?eeVm2o,c5+*)J괥)JR)JR)JR)JR {:eE@ꍠ 4PBU*vYk+>~.ŵbU2 +(]d[i gnl{Cx[-J %MZҝSU~( 1r +0RHf +']VeY-YEeh$ c vFH .ĥ ¯O!R/#`"8 ` #ܤV*$bt@+[*>=ϖL^{ni2.[Vn +&Mx<ְ_ym.{U#"U'tl@~孭u9RHu*<8 XK{usgȓ%X1~[;}<98<+Y +Kv8LP|[zUˍ^ZYHb?arqϥ^ֵ$FM+F!J8$uʡvud$p1n=Wut6鿸gwdgUKqy6 03\oϕKi/ya0J2 +ghp6:éʜ׎ߤO))Qwg`ӌک-ifoz/y~ 6ی Vh T{ 99)-Ěd ,XX`7 '|HtT:I 0 ²e~%Dr?eIr[Zk::Ѧ\P +`1V4mvwvbWvǶ+bOgQzTH[;AQךMoV/ݝkԩl?mBLd |DT pxCl*cU;NͦHc8 cf$Ԋm-4ϼ]1LISߖ4"U7N`@݃]߁ݚW +N?8=7r}{;LFL#ڤBt-<6-N1PZ>j~ GÂ3`nߟ|tL2ɧH;}}a[)V7VTU +A +:U;A m/*A-Ғc&Ts$|ZM nC&8hKd{a"ۻUa' @yg.M\Ĩ3, lxpH~UgPV%0%""c@lg'ˊ.m M ug_|M>y+RD;Fx,K$ހ\џ޷m:A-,vbC>jN5}Oⱼsv2)6;sWAFufݸۏ,cVKwݡe#n"&rqRzS ;{;7ky$dD`rcsֱVmdةfEi%P7CH9`GfN5mBq$D_YGo~+\B=GHV6ncobyp@ 9$>yZl)sZX~b~xn~Q.-بfKۣdd,7mzQCKvs4Hm$*D Gk#(-m*d«x$9;r>YM쨢}F9^ +%T횘ӭ\m6 +FSrv7 㡯M[ =1U 7 ڰļ*is1"gOnm_^qg;>U1w-qgHO3VYtA"(m\%qUԴ4A`08 mVڄ7qnMىՋqN1Mn"Q|#Oi"&P7Ff I+#O j5Mva~H?[cjPYvvȐ췸3dD]w@@g'O&ຊM W,X.27 z+;SX,q婇@';_X&b[UktevQ.dCn s R괥)JR)JR)JR)JR7C24Da۷>X{6.'KV8B3p8iYB09Ri0w6aH*57;{Wr y:}Iޘc/6[p g t4^hcv_YqWj1$zּi}qU +=FR %)I" @ 2EY[ tb Eh bHK+rhLq0K"#:* jX;YYC-l`N58U +2|km"#g8Z6 ą0Nq, :C)vB" +*Ym4Lڡs +&.lDO pp@ڳm, {[b*d ףeW#blmة1!*Sr1b%,3b3^f2fPHyu,;,PN9V(-Ԥq)B4uB$ +X1]#8209iλZ R0,1}juw>YrKxuV?-Qm!G2,j,8=8fGao 2D"?2Mz,rA2s'XmvB.-CȮaIi KƬS蒠O*v69"EcE sא3U-!̋+傀<@x-M(d2%ECh:;hD X2&ѵqS163d"p u>gΒX["#:(ɈȨsERKx"Ie$1V'nd5#iaoda8`?Pu/O/,W!-(88noI6k X<ȯjU0VNi> ػc5n[+/8D{F leg9ҡ!;㍹@F@R:ƫ`=МM'a0VWG)dHr3NZDA\XB">'bpb *JrQT sF)U2ӂ1^~; (ظQ8U G$vC,W=FFzy歋 q&)v^vǥT jEL;T.qӠqH +#-It6Ǧޘ[CjbPz*`v"IBNkѶ#;FF:Wl`DH>2e2*APpi(ȖF!gpbN +COfi,[w1+:n=8yVUŔ{DѬ[#r-{LP猣3)I tVQ.cdتⲾ!G9^!E +=U)@괥)JR)JR)JR)JRsm B `~vt~vt?~v4?V.i:Ȗ++REH/*GNH>RM&׼U$ݝPp3+.\1JPWȐIzJȨKRRX;!rńQ<)X eWU, ud^:쮫qE}pcQ2TPFH 1q*h0'T,rGh 99Ra`8 Um02PV[a {!v9~$RJ2:^uFONzתF>a- FPTR8# JGWpySn^ʺvppps^H@,=#^UA{תðԣD&>D3~bﭖD;;%Aζj6ۼ[u`y RHt8k=1nXw@Y 29'(#Gm?X<)jc3H$a¨Pq鞽ivz,NF3)X0|Ω|Zq,Q$lG!4 BKHI$VHuNX\Ծ[ЕVU7zYή!HV&HKwrZQ+,U1 |kK[[m%{^B@-8ZѾY+-´8FR\"VN"ԣБQ&ln@c8>DyWɤѮuDzt2/ApsYæh]2JI mAc6q_^-_!ǡ=jfbS6%[u֑ZM}6'v`X[n^$9YM15JcϏsH2yNikŞIb# [v@Ec0+Fmխȩ>ʹ専|!,T'*JhNN3wnCz:hfCDl>7T.shV%H܉$$(-5{YM%A۲EbQÜu5M*iH`sI!O\3086\iרY7țSAh+HA.58@<H<*d#nCmkhv=)g\>@*3ZIwH^+ %6`P-<ݤ0jA8SޑY܄cuc&ԌxpO$!|ǥNdYXH(! ꧚0y'mYtK[F|nc&( $UH-\W(5+{{׈>ǖy5^iǧXݜhr͒C`pqU9%đ A#/$q[Oӧ(ᄃg.+<88Ru]*LQ{ fw1pdAhBwk̚9O lOy0Q0ڠ>VpqFE'& p8#ICN3ZE⶙nBĐEχ|?I0w21ᕕb'*GgE@r3f_5gɣ=Wf =˂B)n-*Ǵ3Xd+k=Wxվ4q sx֖tQ v ?.+itt;m5OVxQ Y~:Kc4pAlw::ck ,N$5cZZ )´y~ gE o1X%RW3fF; `J-ʷZ∻Ch#}qӁ\[4"ϐ"v,3ֶ*wZ^0;Xd-cgi4)9sq!Nhn v;U`V+x8REy9̧sG䥞k`aB3K;*U yqҭ\r2Ye172P cAG݋L_|(FpAݟ<|U3ӼYg 9~vt"z6A p8Z֐@FJ+w!F|>jK{[_J&p@7mvdgQ;&|?C sGZq%T+,w($.*Ϳglh;Fʡ%WyVdPIElG*Xm$|VC!L]X +Zl]B[w)$RRT۴az\ԕfu%g&fOHZ0X]Ws(R:dّrђQ2`ᔃ5.ojIo^"pXN3ǓQVv]@$VxYgUݷ#*?mLlB}͐16cZNX,@,2= nyϟ{D;rdX1:Ы`p0zqҼ͡ 33It~ۇH;eH'bI$gzybg,"E9KORIl՛nllաh5n۠ʷ%$TvEC j=`UC=8$rqVa쾝n.]Y$3\}#2?X13Ulm 8Tw z95t+KKYm2eJ;aP$AW#ZAn[q%RGW/aԢ0λj>kq +@0pw=sTEHO>f.Nj杦[1w6ɱAb$HGZZɾ5`T%cc'hدzvkP;{$I1 Z$=~s8ZUܭO|@QC:gn ة<9UڞNy`>g$HcR 9ίiimj,zcrN{*oa@H%I t[Ex^ evluj~X$={'$`̊<>;1#ףZwēF384[KwtE &d@HݎqKc ǂWa]`uQ6\ڦ%q|HFqSYk pNN2~2MZl!),3^4[[ FQF1C`5iib(g̒IO$ԚJR괥)JR)JR)JR)JR)JR)Q oAbq biZ;9!!U z +U{e+A>uv)JUc +d`Pg͘Gj+IJ,*A$XZ^‚PwwlܠnAՕgr/ `0$nRaine"2$ wo9 +s\sYUSMKxv9{:N9i/-Â`tRN9YZO[5밒g*L6ųUl X1zAClH'I,5p(@Ѩ +r uU۩}.!N2T7^`hX,pO_sxA8s rEGU6a˾U $2z/c- 3_jw(;NՁ>V8sݒǖk[;Fk%P!8لdz%zz VH]0P c8ޠuwwAGE%؞yydTOVQT9=ߏ'˃Smm݃vvy)Ԯ5t, +~@rqϘ\J?%`k2X-Ԙ,QpL^u+唰x8$#f\L`#>v?]@\C#<}fxOnqu ?T`~ !Tj]Xou_1!zU>[O"lF8^\=d>%查4M!8w;So+bkޕw5՞$flJWXnG8v*gKH_k;FѝY2&u$ROH +)aA"7Iwr!f,A]xJ&6qMF]}V-,v΂F.ۊXo<zUӴT:Υh}`$u 4QmycRWj<|ȣyR+#[H25ɖY2Fl +a9N#W DHtѕn5mǣaX23R] ap/B>y"gR|W+1w7 ׶\S1yd2fV^8# U>VM3sYй.(ɸzZd]|?Br'8fy;e A㊱ JGO#ʼ$/E*G皲׷ėeƑ! r[mz{N /vS5wwC[țB!qH>>Vd73ǮKhefG0VDžC8 r kW:s?ru +(#c +U_Siu(D(mf0^G8$ԦM\WoTG-›³yv=ZڴdY^C'#AXAEePLbM!t;[xwfPpԜq^t ݤ2]- Sˣ䃴m9_Qc}$'r^OlBnjCMMpGlLB}8\ƌK`c'C85n_޾5]z+w-.cdӃ$'FrF*jfx6dRQYIDP[OKrE (D/T1vs<wriWS,r.ex 0?@sb,ݽIT%B/k)s3R)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JU j"K ʻ;fP(|?9Ǘe[i36wr¤09e#i$lG wr${lO''4mgtYkm qbgZ`-J2B\S0Ec>eU2\ҬE`ݸc95kdLdP!TP'5R"5IQסAq!I .GyBLuwj)"20^D-3HH"fA0B 9M٤-Q% +CEĠf|[Az&i&y 33mr7xb8%qԔ0,h0|> a(#* spsZI7r;4nbUvܣ +wI֯oj bLpY }=ӓT.$2oVS aKkIC"``k*G򘕖-F'hlcdW(H Xn4D+#;wgrye^Y$`?X]+ĐFpGCqQZKK#Đ1lw`c>5m2=Ys$!wG"`[%Kn=Cd:ʴҒ92I#098P=j;ػ7')JR)JR)JR)JR(괥)JR)JR)JR)JR)JR)JR)JR*dX֚tQ41f|X^cXPT W)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괨WZI@$(I{ooiqo/fPs㍘[xUKTI8Ik(ͫk4ʩ r֥Z[KWt=9AEfRF$u_wpYiNWfۜ2{jV]_^Fncpv2}+;z W;&w*H'=*R* 6_p RSJPhOU,#*'Z喻kt78GZM)9'vMR=2{C $fݺ2NrҕBqZdU?hk7$ $ǖkd)JROڅ 1fMFh'GZѵNN Ƭ&M&8!eV*2@83+OͮCX)`wS<Rw֯aI-eURǻ +cHhzv0^*nY)T'kCy51ZT́ς*3:g,{kcp*ѻNNO> GBȬPR@%OWJR)Zl;O?fh{q~l & F$Οo$rd|\ֻQ}jv&+#~ $xkmbK=Tnq=gYiR&0* TB@$}>K`akYl',%W[U6Yh-AM:ZUS$HYz3WJ8`g{)JRW좉ͬrV= ^ֵd$nJKíO-5Dzu*3Jկ_N"iZ8ق/,-r~ح. |MR}OI!UdH`ČOJR)JR)JR)JR)JR괨o0ww4d<7;Gjuomy%W7t=}zF+7U-J[iRX<֝ͧX[q23D\ی.yT`tx]&(gZC"IAs[)J埚|-Kr ڱ(OkiSZVq4Q$8#fޡHsVgWEEi&w2 +dn >O5V׵3j Ŵy#$eA۹=A]%f㾴eR$0e`1YZ}xYYwsɫ]Ar,)12`/y֡4n=.--"2۷#&qUdLjO_6b(*w,F +EH_v-FR16sg?`X/5۝8j ۆhնq)>wW\_?u +:JCW Dv^Դ"Q٤exUx|`v4gRUIRA*HdzWqw I!# r{ g^Xk ny*uݲӻ[xИn@͐U1eiՎޑg>AԊ~Hu-ʞd^QВ3AVn 2“$?Hӥgzq{yg{n1*2 9.je{O}7q¦ѕwE K0?H86qiwqm%ésgQC($VF uV5NehU3(I s^4mzB;"h̲Ln<ɩ]k9DҮUV$sRUZ_ӄi $|>@W|IN-7R~ f ROMzOQZoVsNyhu@vTep99`++敥Bb%"Wt>l )R15:htս07ϽYjM{UbhP *6m؊лCvqek#g,I#za9fL6<[33&Mfj<kL36ђ621bn77}X,Ŏ +6#y_Lz>r/-x(!Fz~ʳ VIn2o[c2`2n ԁjzk`!G$.EDvSڟj>&12iv/#ݖbAZ;Iuu^7je@T2}%$C^lE.swP|<G@ ]@ gަtIoYdeBUZ0UI듞zR&vSͺ0\Idupc<@?8r1UWi[!٢"#C9C'>XRޡgqeohavu|1G5ۮj} /ѱ}$CdkI !&&M9=T}I% +`}xfWPVv!1iMR{DeI"Ep +8r$c[|R \t`P$q2_$;Ae睢җ>`{cd5"fUu9 5Ꝭ4r/d1WV KRuonu p#4pOLlGZb>:MSZK^1y$;hTsy'#L^~<`c6Nx'֬vZڎUeUwcոvMa}i +fP.W,ǎHǽ_TReY@ڧꩺR)JR)JR)JR)JR괭s}iȊ3#ץiAq$)s-姒$Ϗ8cqzu}5m;B 8U~BAZcpI>.7`dZűMn m߾Ea9vdOQ垟3cP+pq3c1RBq\ڵ濦K ne\Oh~:[ʓ4I$A}fVطg]qm2y*bDd5]&ebDpPrGsIso2p~UsTme]NTTCŸ O+UR{1rq1;֯fZ=R8#x̍y&{{+PVSBj@퍝啹`M1>nSUƞnRF3pB)#likv{$vׁs$6d#SSo}ƭyp$ Tx8BQ۾@#nPct;pٷv썸sǝs_ۿhuYPf^uZcާ.{,nN9W0ʲyWbR@I:嚽9Ѣ)iu]++믺0:ɇz8eۻ~8jm_Cw$;O/歮Ziioo"ZtbѝAː =sR=,켅.#"h#=HzVgmوZIQN$%l,79=k]:ieY2m],ǦO&?3mB}2;픈+Rq[Gc2$8l>azg=+ANc q˺;@d*o#]ᕕf+|DR]5MkAbWHK*Ĕk3ҶM?pcy]ˁ"Qpwgb?3}2M s( R3uE3g2 y$z^-V;e?z&Ur$8$Wl{7%;csވb@猃o. Ksp6\I9Ut~h]:ClOQr\q?* ꮥt+u79+̲|؀>nZd%nb;„2szA]cFMvBN:얻4kfY$l$ՑQ[y#`don 6eONL!Y-TnmR7VfHIC .G571]ZQ #Գx.j-cކB;'c *z?m{!o2Vr D..wF]Fpc2d~fQ!U3B_ٷm,y f.6'y2\"VPFA }5wI5r?6(Cយh״H;Cyf/޼T]wFxqsr`l zqY?/E4#z,!+υn<]ťIb6=䮧;F28xkVVKs =p + +BK.,/*݌ ch测4asqs%>xTĤx~kgf#x嘺eq=k )Ҡ[0#G'tgEJ BQ\LnK͠am<9lϵuE@`ҫ\a]>(T2%@+uCUӭxh`YX1S :tz}̻~O); TemZ\ZHY2ȱ7yuUx@xhŐ~9XzvpNGA[h.WT 3Zo`aegJrIKi# efsil iK!faV?fWM? ݤ6CT =-xs! F2wx{Tw敫^j:R2?u1.r2't9:;U>[E-ʸcxRpOJդZ-ٞOYUFC^UvơGU79<x>8% +:0*H0zWS>CI"YWPkVp‚8EAU@_ U~2([F)FF*og*P %eڨQ0@: +mgRoZ++2)+Е=+F (d5DqP0T(S~ +?Uֽ*8 @0(`^$SXZk@W"*BO̊5O(peAϗ>xWp={U RׁBǰO0ȷB(#3T6?UP +ʤg8 \Ub!E +=~JpK4hIJ~WJ6c8ʼp#EPNp(AkR9Fz񊹊V4zPx{SG* +VK%PWmWߡ>0P ęڤ Kzʦ)V^) fI>eA?^8~roĈ32K* `_s~^dW`9f SAtCK9^XGuP/=w*RTWSXSpƁ4 +( +>Cʽw F1`c +C=pjJR)JR)JR)JR)JP괥)JR)JR)JR)JR)JU E^v {)b}[ŻNEJP&2x7(R2dc$|FiJʲ@`  JR)^db2}-Sm68uè>ϝKE*ΊrAֽҔ)^X #k*>WK{W8q۵$9)^]ǠNV; 1ȹRASWng0D*4W;W$VF=Z+ *]0ȁk.un=>Q哺yJF70x/>xrOJη\F( :+FyxTw;$rp>Xn7)Pvsp)JU >G8(ehIQf + Ey /U+T-};T0Q5jͷyjY6$n zcv\ !dg3Z"**w u8STu{}U\NQ:2~ )Vm)JiUJe$ +õtw2Egt $4ʶ3=\DRwlc Rr2x󩚭)Qk V )$W!1uFRI58cK3xA;vtڲJR(괥)JR)JR)JR)JR)JRn~uMd^_1jcCo$̍=l Z[m&!Sx]:t83.v8G[y⻸ +I׎̥ið*89fL^c J)c"['p#i#:յݽR-,3 dI>g dhZĚ6msGTG"u{U2][٣h 1#'5jw{# 'H+,w(lXYSkr#hц ܃/FV^+^iL}@``H@yMֱ E75>~)g>us^b[g+c(\0rGkim!x[x&=wO!gkpQCp))1梴K^BcYcBٗMjMlɘX ݎocr(WVT4x%z5} PXxRZMw1lOY?H$$ +@  v4ḝmxK Y2Sq<ϵb_}:d]\J2!-`IL`gv?.xYHԂIm6#<՗$dA+"VRC'-9Fh?sj). FNPGz^yHm%t0|Y~ۈ#a}kt-eXьjX]H-=iolqsqMAҧ<ΆTwIVki%RaVXu9S?sS+BpH8Z}i+].频;*W#n=f]RqsY#6dgv> kj+q `/v|_PFFGgk}ik.$n',|#um\ &9ڪv7qxu+C5ݤy*Bmm@bpg=+6K=RKj(x1":k;eh*%wIzqSID Mӭjڛeu~<_tۋFiP =܋w[,szځnD.-d!1s!_X=k)MBl4V3"a#^\j6vVF$}#(|ϖ*7]UN3 ީ;FDŽ}W\4D<B0^vH8RY[]>تK<-3 kBe [jWLp=M 68ʒzYjqzi.hF(9%LS$nZsy:w +V3T4Y#$?'מ3zuTvyw@@ z^KN q4rڬɻX +4x 9i}~:Y].t:[b(pYX +W1jXHXEH4} +1vj{5KseVwy7#''Slna0ޭ[sH!N7A+W4m2GPPl,R7'Me:ylv!]HQ$exun a.䱽3-IB* )PtTH嵝 +Ϝ#8MsK +ZƝ^ Ie1ۼdne Klum uuXV:0$lOjM[_VLPpu8sNMlbu F|R3WV8gta–`9:hnuaj,jXG:椻9 +'xV9Wr:j^)@괥)JR)JR)JR)JR)JU kھ}jV7qA-$m$@HBXMzR5;ya#%xQq׍ H RWb˵v`Fs֥O8a3-F TmE1\}8QzM)H6-3c\MОQH">xʌ0 H>+`nd̗#myI y{;qc=3&3*i}[ıB,pS 'O89jsG\Hw;t:UŎ&d#OG4nvgcml<.ii7qNdEMbQ2p Ic\Xkp1I cG2WX&Em0 +\^sV۽4)ytF˞F9k=R.,pJ>=bĶ6-Q:5t/lᕀ\&|[z}auY]*E[#o&U +1Pp^Iimi,o<G/<C[&^I"sCo1Ctn7*G4 Ds A8#DE9mHLk<s\F +r@.\py8+:^V(刦ۼ ߼AY&,J(i3􌧄'ⱟEHWOlHBr:B-5im~68kMt{vX G9 +P/Na3y٫-4K)ibE?H$zV]֟{.ozwDAv{Ff!lgjʾyB $U{9ZopɓT:ܚ]G'Ʊp9'ҧUvg>{|Vo|$¤edN~xFɯ:grMrqlw~Jg_hIkaOG##F])$qǽYA[e)b%7 +zԎgsZƨO!w \|` `qaxLy:t֚eނ er<0!w۔GC^mnbC.Ko0iStSN&aX淊=Ά2sSխdn~pM:m:P,K;^B2N>UGZ6rcR:%@=&2 hXF&IrxoC;7~t\&ٷwmٜÏ>U4U( +F-+o1~,nu $[;4`✂}sQVEӤ&}핋#nA# WL#WﴘA sԊiei X̱t:izY{^1Q#`Ǖc:Viv{]wDB +wc5zGD04R&р%C Pkݦqq|uCn +vf1p8ְRwIpTrNŘr=}" mds,v!߅bm霂wCpydc$:d-Bi!x7b0*GsTӮV]Fpb%cT.Tdy +vcORq**1XNw#zgLWKIcR]w*Tl'|d6uOsf*2cè +[k 0ǐ U_Koгv WIXjqϞ9u5b,Ybz +s5{E${vbc xEk۩/C#V6f>c.Oܐ"x# > :Ծo-Hi,hېHqX=ԯhjYYb> O>k#KRI$X* +$Iz +zJ"F9AvރInn.K.3stŪի0J}J-#TҮnqlutf}&@`evOԍwX)g$U2i!~-6JiW-wa nMq\sT9 }}KM&ErG<0GcI@6UcIɯlnYo6JT + +y'8*Sj t#0ıVmJ6}̚Nub4Ɍ]ٍby1FWx㎵.:j6wwK [vm[鷚Q*Ft)JR)JR)JR)JR괥)JR)JRk[mz5a)Zw$w$y^>ApQ.ei[x#Fe+sUk0hvq3Pw5^(]Ր`nsFcf{-rĠzI=gF";#3 xjvܼ&j]D@Td=OzxI+C/Jٽwns^C>5ƔױB#}609sWoぽ2}Fjlֻj45pʈU՛ ԃyV*<޹ng˚-o]OzM[**gsWS 6;6sfRq'âYw1cBpN7%+%[̹6W*s2=X֩}O*[F P#1Y21 ?@v]F$ѫzP~k V./VYcB8R~@-0<,'7 7WR2He?Xv Slul|x]#]քBHW f2׽7w4E"u``xX#jVM,|E/'Ü' Wh砤ܠ'WSѕ)\,Iq^>*.W5귚vi ~y.; + <+[M1$JEl0*#8 "Ҕ)JR)JRkYcT{04d)rHQ,;Aixmc*PgٴXSt13mPb$’OU52f@zPi.U7FvIf\q> |;wxGʦ8{CJnk{N9!B`g53Ϧγ-M4q+9r6یJݔc5=2FWOPr{Qpw4V~k-pP U!GXu桡,QCqtI#HG|]8gɤ_t5!X!x}m(msQvr$ԦԧEwa(m*<^y]&[0XCk2x}O y$R* +^;8[=jݨ*O՝UU&hfrLUK>Deo## 9sR5+y 0jYyaTcf;ciC,Pu D6̧ BiϥI\[N`DѸ'\I +#kde F<֛kPxQQb߰v{:B]ķ^sR-q7h +OݤwjGmG%@'JִwЯ`}y % Q $` fMMM=pֱJWØ:ppOf^XOAjF]ő0-㻛YE 0 ;ǝE6f;?"nh/H +[I1ϯ* +uX5(I7~艎[OUl3)lx(bY{s`CĢY6P#ĒzthmݘSTI1 ;|h4¡;/eCұ9giI9&K?ƈ5b17ݮKaf!#'hSK&hM:Ưbْ$p:+Uݫk\?B}K i4/\xyϚ-pZM +k&}w##8#-6UakF8*@'kS dUwi'y$eO8?".6ϙN|߉mcYIcuYI!GfsVjќE*}A+$ AVS8ZdQw&$11E܀c5/4k&Ȓ]"uxWrkhE.sdRB#]\s +jX+d7#d!#:zV<GU#%<^-!$Vq̒7sz<׭B-CT%w"V +s)9F"C6 85` akZk67"e |&&M#Pw@wݲ9k+^å|~wB,``Ly-ˤB:} lO@#;uMʹll_/}kD%U !]0ct(׵i]Cj$gʡa$hֶхn1C"衑]yaYǗJ)JR괥)JR)JRMNe`C) UcbP^+Wicԭ)JR)JR)JHy$I +-,8 2q[:V>v \.yFTt pYD42Lz9l'zqS+Rl ;;i*|C03en @qXvno/owga83Wl/ i{'}G!vs1΅oww;ȳQ<^|sTV$pCL| 6r #7 cp^Mxܨ9 +H3Xòo3"B  H̠#ʵѢ2K+L +: Z# 6OnPi}!$9'#vyZ?dnm!q! +/{ WrvzVMދvI"]*>%;yV;9km lHe 101VR|12A %c)`z_$oni\FFuN1 냌aВyW>dzeyu=DʱeJQ> zI ԭG_hVG/7k-Bު̥09b|yVmQbN_Qih79ݝq{U˝)3sM0}f쮬Ń+,GMgqR dry K:I4O)N!]Wj^-)܌Dvo89|%q$0}w 厞TbpN1Ԝzkop&Fn݉mi1,4m:iZ|wy$p8qVd1#nXLЂ>JG J>Wgf%p>~Э^=싉 xG <=U髥C8yҩm+Ky-Qu!$;8䑸 \('ιeJӵ f:Ox8VoޝIRk&-g8Iav.6t4E"[})JRB했$dIPA"՟MB[-sm9Gh'>xlT)JT<ڽ1$I!D "1X'qX,6BVpe +2]/RA+> V[˦UTRg<$лy#}x_\ߙ"Bђ%>H )N}dj/h&lE9cg3"8$ նlnBz4`2 pGO  ejֱRNB]7m< 3ǝY[{KuLɵِ)ay5XDH@@gw8UՊuy%;lG(s۔qO{庼hBߐ@J=k {O3iW::]ybeZZpIxplԕȈ% xTO} WL,C'zU&69hJs,s^5jQI;dVҪ#h[$zun!Y^R6+<z)t(opFcO{դSU r,YYj/G=nhYvPvćvSUCƶ((V>jBV6xg?J) 9#ckYou ]I8%*~EC )LsVk{UfUvHdudգ(LJU2:1Xhͼ6Öα~OiRZ!'mm[жGAͽJ\Qˏ +J=1*޽w0 -|>H uϵbjWTddk{JN|jkeq9ʀ9xApTdc΢Yt+[XE"egzsYkӡE嶋f%fv~W^t]zXahR9Ts)1e8xX<}b)J8m8'vG^|3YI{UVa*YY+#prsXԻAyYܖ,gTo03Yz[-K,ym9Id5#4a[Yܧp|'f$ߋB"LȎ?x003^Z間\g*[fB8qXW{8,DHxd %'C`+#0w. <犷uwzX3qw1/o*_<`)q^&tVߡeUBwϵ Tfhl9QNgIחoe'3cf>:T-x\,)KeRB76܁ϝIivEƎ8aɥ)JP괥)JU/&k=o,Tac!~Tcx?iS)Zrm+@p~Oςr=+id (b!UW9m2IRj]Z-|NFqRqKm;[jqMN >\V*)Z:g-S0_.]FԵ\xV&^n=}ZکJRM5u#U+ &ik8k[9c`GvTTOkc%&R&RrC屌:Zе05'5 + s*O473bP̮UUGnAjfl ,w-+ ; Uϙ=+jViۘ ya5 @'s/X*@2J{*XGoV55M2;90قțGv?=rtĹ]VHB< $ qQki6u* wx93IB\7~u77I2Jz}ͻ3>u_ҽ}JiB^c9i_j7BJJ?iT}54nmsǽV}*}(!yc @Qx0`sqW^\m6$rSiq89V ^kYI8be#b0AΡ;c4Çp09,ʇMlUKm$_ ɉ|$1\}W{, [i#|c'1%3SyUlŧ|:;5r| k:<$,*g0&Zx(Db7,a +Č0{׺i/)TFul1mK }m4F-UQݜ$<*;2[:E4:ǿ9O$wVg{dn=r rP6rQXs[8UHU{5((n.1mc'?1o砬.>╼UE 43 v-qnV$G\3.A t#ްȯ{x20e5E],Y+MM=>&1wTEGi_Q|B*);p; 3=mv.0I b +B8fsJ=bW+ԩ#eC=%`$q,"B+'\{>?%8d s5u`X$*bEps}qUhq5'Ɉ]x9z,Hc( >5kWmBH ,',kYWPӬ]Yc"&w{_L[f5|@[t*V]ySi>ck ~'$Z[ vK~ b9erGvps sió$hVFGn l d]2]_D~; +ry=3[mjuėWlnF +U6$읽흤vHC 1 bJ.l|,q<)JR괥)JTh.w1$luȬNڛ]6k t `gx Ȃ%>˯JiJRN}*ӵ8Im.Hq-΃zXsՊ.>2 1=|Jβj+UDT)Z~3t0|L}8juM$}/@,kj**^}^R99`"@ϧVuk.>_QqךکJR)JR)JR)JR)JR)JR)JR)JRGERxvtxxܫ <#GovQUE +ttdf +Jy.Zv !g,qHҔ)J_k8Ϻp}+.}c C0ʒT2#@ ΁wrFBG(V+PtUue\d +*65†ɕX2lqRT)Jyef)2p}A A7)K,ʌRG21@vݞjFJR(괥)JVMhWJ:9/"-b"><(N+[y1-@?\H{m4)Z'zD=DqL@Њn4K-,`>b*'Ti=JiZfȺ׵mL*G*1ZA֥hFRxA3R~3:$\|S9l#n?_JکJRoqlCc 6y q3L`r0>~Sr0}1UiU0 f**:GQvnM-2ڠwu##<>u*nbr2pG:ڵ=Vt3if{;;=t*Gvd<^)nq!}2*yo]n֮sgul>ʩ# ddUnctԯ~ޕ$Y Pr?%z1]pXG"C +CFKKh*IAT)GOTo HMWxn[]ꠜeLc>T-qt6][wuxzu#pv߭Pì][M>a[hePawu#pfIVy`eX7t`AѮO[Dx,{|N#*yWo!$G"1GPpM_)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JVۭL?=@ <{Zk)͈P[M)JVm/-EdV[D*G1Znvm2tѕO7Cԭ*n,D5+ U[bAVE Vo!$sՑO9*#Mdž^%vjM",:? Mu>tⶑU)JZkt^\Em,xc0$*AeytcwL]7m@s*]2~Ѳav I"7ܾ+,(rF +!bķIw[[rܰ;d7Pq+?vp]đ-+Jd`˜=3YpQ4l}TgI̬/#Ñ8ـ 17xC_>=[Rhcd$mb2͜lV&lHR79X#>VlGe*#F2 +@'EF%dD1Y7f=P 銛DqjFqx#AUNۢIJY\TP2ǚ'- an]Ky/wr@*dH> +Nk3_/(#GG8d"Kcڥ4m:Yaf#x$4e\UKoY.m╁V7+Ͻ[5z\vr٢*^Ɓkǁ,gM_u6QwmdFۇeŤb^YɫZL6yo1V+D*gp s8vX2cVrNY]T8>Q6-ogԔȑej!8ʢ.s8LմxI"%R0|ªg qYgovJlWp'89CMI%S7$tW 3qKHu;aB`cdp}G0;y;qm1ךm;5bV^HY0Xl#5=Aaa`n R6z-wM-#*eS8ϵ_].V-^p6ہ8Rvzgv񬌱;y@psRJ6V 9v"sv:O*u٫tac #R? +Þzjht/ +dG=yVOfl +Y=rKy=eݔ#b6ܟ|26w"zW4;g[̃9uZV څ̗Eg.3Z7A8#֦4ԁٔ&TsW5#c`affI:Iz;)T::eaA+]U.x!C8\WckЬ&`nN@]p3HV4|r l|chvhB񹍙3~uYQ!%] i݁|W[}>C,d`,TcRX*𝞱[Qb̅ǒ$眏>zզ쵄2#HK#:N^Эnd^7x3ܤqJ4[QnHGb\`[nl;yUj-~h0qI9]pxgo ʯ0BGzM 9!LAB'^}-]-V$7$R)JR)JR)JR)JR)JR)JR)JR)JR괥)JVv>dk߼ɺum?^ki)T5~g6Wd`jRg̍FGzջ{fMIoWPW\u?CN )jm~C1SΠVG5aghFQsYcu-o2B*;,yOQS+T36n15X2H6ߖ?4{bpGH P5ȪҔ)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JVّZεs4:}>y涚ջ@{{De౻B|`cjWy#d26G$aIC~gBd<&F/[jB2w5G~J+{9TL +՟J4w/ a=wH u"}U>'AHs7vm +[*qFjk0qN@睡}<ZEkFm+?T̈́{hd\F날E)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)J`3Ͼ]~"Ml7]+i[SP$Pr5r3k%4BI=aj2 e6Ip2Egֹ\|>xYcQ]>jkNKhaHQzcʲkSCڭMsLceklKӭ_Σ<:ۻb'%s8% x8 k[`_DfN#N8$P֫/uaq#.)?DsҶqPZyHp%wG` Ǟ*S#]Hp#ǵ\֩fwEC{ÁTGkm+G8ͬ=UZ]XN:*[˨u-# +VѼ|q?kA#deP d +JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR(괥)J5t˹y5gs4([t-ӫ ǧֻu [[xm%aW~|E_HUXmA BK,9d^:$[Wzq+2&[ A#sϷNjQ0K0nmħni<=1V{tMx#f?B/t[e+T.v( wW#3[P[_MvR2VD3K8N1#S Zf1!~vN=?r7ߓ[mPַLjy?uf<~5Rg +ִa5;k{(l`1nXX"Io2ؽuE'a2MoUv |Lڭc5V&䇂U*E`v.ED+Z:cO1"R@#{1EM3I}, \T +KPT)JTOj5 t6D%A`I>}0Obe2x$g;F0~ʟ7,;»nۜ⭝V,DC2aV[:ryPq֯jv֎*#>v0Rqjz91+~x׋jsL˒@8h8vP!4`FF1xZjv 1ψGXY ʌ'tAѓ4bķLa*@B[ 71\F%Ր +בX:ŦX[L৑zqXv}JK7G3 f#h${]GQKpRqϧ>f{$1xoȁہ*]lTp$.Y$x#-UD㎕~VfHeVe+0vgq% x[=^PfX%WeA8=VeikڭŒLRndn` sOFHD#:wjh1v8?U խ.fx#D uΩ{En}XzhBMa#ҫ(㾎tbFwxEH^_C`p R}xMNHZe^A,\uz ZMrMnb;)Nю|K"D"c +X98NHIH%+qLïx㧝b_%ٵH)8?~I5KX_Cg,ѡxvpy8J˧\9T8s7V99d-e[j;Tim`p}dI K7I&d P湎34w$5n=FTwY.Xg$u:gtQbeԖ8 gcw+:JE]byիvJ(u CLxdm1 iwVvF ˍn0v<`UiQuFU.NH98qPڭg^$9cHTw6*ToQ!Ǿ&x) +bz +_WddhX60 aSUYVgsPI'YjVڊd9#ʭKi#Ƿ>/1<+/#nۆݸwtՂQIN(Nc玘?]Mj)JR)JR괥)JԻw/>;.$C+l(y +k_3^ +>L +Ԛلv$Y2e?]a^jhcOY"PF1jRxXTI +1x^s"ŧ@P{~iZiR%cr|lVXSՍCD[9^rPg\D1 NO31=I9$`czQR;?TuqSu+l>'a29Kd +[Ƒ¢Q}]t=6T!v5:[hUx3&+t5 ؘ-``GvNV=Zy0;W'⯫j)JVǤ5ĠzwO՜֯.Xhjzbkʴf&!vMIG%~gvUl~73|V;-q|E}6L'UB:/N vCq뭇HTL9l=|S20ߋqݞgO*m-f(T*Fv:U~{gC* %3nf*I p>ty۷róxh*Ivl&h.=dꪊ0ϗS{6&P +F2EJ>nw.A'YMk|דDž,P,2#YQ_EeS8ueS.p3lc  [m]mRG/N +lŤB# U4]4iu9 Ar<c5)u)%M4JGBHAҮ3$f=n: P:~Iu,cyFPK1%GS8HBk]@xr-, RjGo>aT^`p<&C~+ +ק|@8ˊ{ot=QEĻznJgQW[f7+ +zcjV4vǪB#H-ݯCu s~,RA_ocK~g1O:l{Gr #Ӿ{m:c>Uc/HN/21Y)ϟt f.D,UQⲘ;d[(甆in@Y<.<'$9`[k +;EA9^*ȿU "H9Eɷ 6l#2v 222JN1Zֻ(cU,R>Gǭk%iZhflmfR \`b}9VSl"&w7a4949Dh΍3Ydq:vx:㺌1u%C|dlda1q嚹[M94=}کNwTm`|Z.[8)[;YaNH~9Uİ. +[a>1צQ1JC=e_9o^'V9$Rx#WFpd!D\#8ฺmĒ^v:\b2Rp 4eHU$2k]i])cV⧬c(#[.̅A]vRqD= 6I#^,/[ۑAG,_R~boԢYY#lQ]h̒Ky +72(.2GJw:;6n6xb.N7pOj]qE'!CsPH͠m>5#\(l~J!u=v.3{=[.xaU`o}ui{$i!#/dW_>RMr֡*yo/ϻT Gyw|Ȋܱdc.5pq5&; +ݛwuߘ7[o xee×W 3Ǣ^-\Ŵ`FvQY]ifoQD\Zhb9;dxz,ԃJX]IV٫+ѬPݥeUKS3)Dp*jñb[F˶&Lz㩬w~O λV]%u=>"KJ/yrr;v&tP'o_Ҽ*şd;!\HdOws7y;Nʭi{aѱbEٵp׷ryk󼿼Cֿ~]܈Ŵq1]$V˿ʎ״#utߢm 3'`+<[Z\U#.U^dr6 { kwݵܬ 19߼ثe>>"~OOϻ@v>{nkkFƌ)Umyj#=,^22o݀FCjgC8 +FZ)JR\.0ʜr>fl`J *rv琹=@d]|g\gGѬ_-YV-UBnY~] mQ<&D4$3sүvI(aE)|8CʅA R~k`#-'>I^xQz>NJs(IG*8UV cU^r_{#'ю=²o79КE9sep[`C OS:Z- +JB(R#?]yBPmIz7yU˽.9#MeoK2Ȑc!A +.@U yWG6m͒5 +O#Ͻz-JX~Xe(H $Z%QKo•n1YՊ4eqm잧8ϝ&mI$(1PO>xQ6'v[ovwqd&Sxw5U`BYA qJ=0JF+Ժm5h)#V3i#cE>Ϯc5mmEE@UPn@U dPƧiqǥc^iVSs r>=+ՌVhœq3xm.|F&Y#ULf!A#upyKd;R@=kZ/=B%ܳ#$msGG$C(*WHH1[m8VOF=G\mwwS?=RMC{ +O~eo1Y 'p#gڮ\9Uyҭ,Ѷ,:z$k200 E`gm`ˈ8Rnx#C ۺ +raE`}A"4'P߅v#h ϟ۱*c^i9[+(_@[XҨkVVb`Rvơ[U)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥*'sټLqH8vVvg1<\楩Jǿ-8}2T/}(A1Պ֭N~J=&c- \\mt+Vц-gCqm梵ޛ-EG7+]9TsROOa[])Ju\ڍ-"K[Ǩ+m45vGR}kj*wZt1[1ɭ)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥+Xq&` 6JqkeD|)^]wZn߸:G/Օz+UMiu)X@k,}xsEl}xYLcr)QoNڤQ娮Uq8q?کJVZ#s[HWs xd"3uyuZ͓pyj@CڻǙtv_SR)JR)JR)JR)JR)JR)JR)^CH֛$zuU ֫JR)JR)JR)JR)JR)JR괥+U틙[`qP|Bc5Rj~ h,15V`7CcoNOJiJT/lYMAXd|, Edz9 ZHNkW`zq=ħ췒3i\$^ϑmT+TXΕ3#խ62@;ϓFDg" Y]:m !L!JRi~؈ms[M)JR)JR)JR)JR)JR)JR)JRjr-ZUP3,q'j/yWHÆm4~C!PqNKyQ$Z0pB* f2A,W<P~.v~VXQ2 yְ+g[\38G#&<ԭ)JR)JR)JR)JR)JR)JP괥+UjlF72sc>85RjݐޣK x^~kVs fF +ϞIm4+Veqh%Q钄 +.`WWRTQ^;]sk۳=qYqka-`909%)Jտ4aLcI H5֭6/DǟN(ҫJRm`w]\p^0_V*'Xi'ٙx+` HQ^繲[qᑼeڹ^^+֙;jZ|6m.u㚱^;qg+wKF7>dq)JR)JR)JR)JR[Y +A#8]}%b ##ԂBjJk |zjdW%ATnxsqŚr۟2TR|Z)PՌSZYC02H \+Csiu(P7 OQZ[j`0_"%}7SOmI}F[뛁qo$ eU vpH5[EiEUQʍuHP U,7:H9VQ c*6>լзZ"$LlV*)JR)JR)JR)JR)JR(괥+UӁV'.9f2r|+UЁz`Y-$9븡q[CA +?3d|Eix;ejG+YYBA8YXT_j6VY$khҔCV)v]Te)Ty]o Y2I!;dT-hBP($!X{<ؔ#>/JR)JR)JR)JR)QznEKFwyd +2(OLtX:c6"dfy),] =3c5 ^[b|]FTm4mqR)JR)JR)JR)JR)JU:UiJR)QS 4nǠW>ǡ&隊ExdCF!֣hf@xݭ4dy3و`ζ#Ia gq*QB8}Yf +>C*3A< kS%3[ܟJ)JR)JR)JR)JR)JR)J괥)JR[`4[$h~c+U;}l,y*sҶRj-𝫽$^(@k흔QXqZRտ3]y ^Amg;~*X%ЈT&}s[U)JT?k}6Ҟ}Uwa(Wo5"+SiXC1˒[)JR)JR)JR)JR)JR)JR)JR$*@8ⱎjRx+peӟbbaEE +k (# AҽR)JR)JR)JR)JR)JR(괥)JRcDF]$ ɶyA>jΥ2]ҢND6$xu>U +)JV&q<7ϟ9ahP D%om 3JRCZvr6F䁆==G$Voyh-Ҝs#bZRF HF+zbdN@`gq*v4A@ԥ)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JRmF=Nki~7Ɇ3V]K=$(p"arHRBvBZHA:M ʆ^X3vv 2ɽWwfcLVJRCRk9.os}(KnmVg p0`0*)JU+O>gػh߅nyƔ)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JREk?;m?<+JR)JR)JRn5+,nLRR $O#sK-Rky"+nsGfiR^G4,ಟCʥ)JuFӄ)y(H,qA'{H[{Xv9 s9ǕVKy DIH1w|Tmam-K9\F۸ FO #E5%$deXXt5'JR1w)6؋}ٻ8ٌ>}+2X^wA7VT/q zDMs4U!YN6>|2)JT9,$@28rIR0TBjR)JR)JR)JR)JR)JR)JR)JR)JR괥)JR)JREk?7m?4+JR)JR)JR_BK&[*RH2Sр#+ևy-͆p DĀ<:f[TnɛnwnK+26VU-\n P[1xَ }sWmndu+،G$Jwţ$ GO3X7v4J g@3PX FuM ^%UdFLAx]>*r=_NH闻v!I +mş^klQbK4ՕcTdW7jO{8X^x6G2dx{_oX;Xm #=sV&{r[OakzSnQb\v~>jӋ[59|6AGnzTPd+&eHSh<׵5MF;8Lyg8ʤI⋾%іnGE ՍIڛWy41E;F$M֡ea")o^YEodmyk'V͞mFCs6VG2`wnGGOeKF;Eyo{GA}=15+q{00I$.qUFqQִi, As3^AyHHcg}U- j3Cu cY 9pLj\$񑊍5CK-ɺ q瑈Ҽd脐 8Vwh׽dcZ?8iб#i=q9ܪC1=MZ%-1%2(b.$M䎘qYm3[hc$!Fs*|8aa^_iֈ^ @0^BZgIL{*((IIIGdt~&CxP>f]qE#)Rr0SZO$jeSb_N3m&HHA424>A}dcXpWLbe̳T.Bhp|Njzme Ρ47;xa'QKۛq[ E+jwq*ʡUOxWi1FEt(MЃHϕfivB0Q~2y-cBmZXds@bTE#nq[7u5Ħe[ 6UEQO:7fZ-њ7PuJ0: ~^bbr=k cIp 2 Q@ &hS@ۛkx P$  +2q땮-5v2WBڛ( dcq潾ϩn D#ڻ6ZY\#v*|L=pAnZ6u>ORrs5f^\\^efP] 9#un.=4O3U%CYRN +N:ʫ<3 ^ME,~!SU?t~vU4H4h,i$l1V-gSGmDAI`GU1QIȺjhhL gsv=^ ..dn9ڈnJ-\ ^9xX1Ơ2o ݖ*qyVFٻm^xdX%̐iBNrp޵jѢ>U$׆G^<<Rue {$NX㯗JR)JR)JR)JR)JR)JR)JR)JR괥k}d6"ƌ&w" +z꫗r\i{iQHS{ TƼdw9?G5%JR28Kx<{ +M| ;ćm` >?KQW ++-jCz.gu'2#uWyeƟ)Eﺑ2:֭IdW! + +OǿcQiK*yg9Rz8 +YY$;A[-i`|cʢ5Ɍ[Z3HA!1hj+Ia63D _RW˂3z+]-xelc3}%~]07]E&NeY" lұ'*ņ'QWll5x{c[~]epŀ.Â$< ڋLgqsPމ4+Y.ncF$q N +0zT=楮ss wo a*$mU.2׮IxR]1nYP 㞞UDuV.w@b\q#O5m]Ǥ{L[swy*ss[3$bd\FŜܓ<;-,jbڭ>&6#nrn6*1W`iNwCX7 _L>kt[ϊHʹX=Xi쐥;F3 +I8<3Yϣ's*twU@P(KdrzԴ2w@8a#ֽҔ)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥B%I3mQcF^? -El9v.X2rMAu0d +An^INY>6<դ6s;<Q[Ohg eOH=jݏY l) `QFO57g-ME^*F +9+dzM띎IWFXr [b/,id.TxRѤP(n"=3fuW- `4E!r>G-JR)JMCZwwgП#*jjBr"yx#ֲiJRBqQZ}̒Dط0z8fϒcϐg eI0rH}ycL&|f=9$=U)JR Bm.9% HV68±>hą9pzZR*Z|\LR5,XL7zw$xB<*OctˍSQ w`LRLqUU>"Ğ3Ǿr]NK˛ick2 upxЮpjbv9]D'БVM5H +̎GSCֳiJR)JR)JR(괥kZ{AfrH]@*s+2mBbp1Mk;ѲC,o'a^C ETHٔ8ݗ+cĺKYƗH\:odA#8-/lq'9Y6f!o^21R)JR)JR)JR)JR)JV6 w2iov8Uy2k&  88ϕ\xy6Uf!A8$I׀M{[ fz(5Y\NїEb󵔐HjZwd9#>Y8m+PE']0`m)JuoIK$3^b]|I k>f9 lȬQ2T |kV65wJDn"ϥݻƢR0b{@ +sKabNI$2O&&Woac*LRxdVsp}Auuhu +\!A%FN:j敫[0 +YYNYO Y޾9X zTOQVpk .Ox[)J{t0I< 3PIjѵyuBdeg[]}ꝦO@@"$Hv/_sҴXm,q{Oy>Jze MI.JTC'M]FK4nu(8:dTwh}B f.>E槼U[ڀT`ZtҢlevi17S :(#T<*n"DWN/ yud`)J 3P:K"ܬ#o7(HvzR6 Cfz)JR)JR괥Dj40C"RC IJaw y:4bE[< +9V plGμC(%R  K:>uWي]=]cK%eDegܮ8֯i]E + v + *ͰkxQ'p`:QRWu!HF; 1P:XPZ N&[b`A(ݔ +#kb&RB!KA&X]Xw}<`x9Ve~cYA>8d}Ef!*Hd0|Kӧ=*[c n#o_꫎OT֡wD43 #Vޡ=WA]MOFU#FNIf*Մjӱr^2*VI#?V~yaT{]k8,Gy7c&8mwgykQw mjҝǒ<Tv_=Kj +A!/a<쨫-oF[8 &3G*2K - +{UIA…_=1Q+UI:ZoWrFsm[V%"prծ,ʮrN>X{"WMm| gV`>[l7_ŰTFs+KXYwpH-֪X rāq +g8df(pSqnsOCO@;*н=Cg=O.%w1Bcֳ!α%$'u #I>@ ǝaZ5h '2#%|{t'm3y?A~~T-c/;a{Mqc=:V/4VR{xP۶FT>oqq{k'CVn8U׋]KRArlU̽҂CAQgMGBhQʟ"$|*;ovBB'8}GJuvPEYm5=XN;~ڐv+2)2P1^ n$px+gYC +2'AnҦ`T}jSдDv7`I$MJYkVzs8 TVj:z•c;ro}ˎALjpr_#.wtʻXѻpd6q*u]>~-RD^vOP;8YbW;|xC:閌-4mݠ!Thz@.0ĬPb +Urw1W{:ײj4M0)$qR0omrgHY$(j;Gۘ{b5'wg f):eXdi?8UgkhR2c t wrsTqN*3j7S^Cꐨ} l"uc GAMlBvuZɮ<Բ&NsdSUcOj-k,C$I"d2, U09MXA4(Měݘ\UH=k&y!H]o_u\ԍAjfsv\["aX^B'ȑF|֚~ {qXeP=dMN͘~I>CާJkYnRXٖA Ngy+\(G3)$cy*>KiRp< k2 c䦤*^QIb,ήF + /FT=U5 sKW@GB?XCVWᎣEhӺG LKb88Ie-.#"1 1xuֳꇥ@h5K` h!̎=ul+ {)&GSս F5]'M:\oxdi$rx$u)JR)4K c58؄HSY)JUbirǻ.YPjgs_*èKޕm{@ +FzSq+"(czd^P @Ȯ0g̎j%ijQB`W)JR)JR)JR(괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@괥)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)@ +endstream endobj 65 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 22/Tabs/S/Type/Page>> endobj 66 0 obj <>stream +HWۊ$7z}jI))3)ȩ»a,f` W%"$eU fpvR +E8ćO//篧|:].)<_~==_y]NorVʜf?sO^RRz?s6/d /^]zUSx4:py2'ǿp:;;=3]ãZ.a%ŵ#f^] t1O$p7wwgM6x9BR^po x8?:k+;2ħ4DŽ ï$ +Kw^""ƾzx5 pIeW\oQ3>€EX ?1xUOזx(^ $&3üD%Xh y"E돁"oAL3@@gc{m?BD:pQcxc=< @k[3얞oa] r4G+RQM;$;cZĎkJ͸^l8ŕJjZ E:Mv) yK4 +qpg_Sg-@VF"gFPh % D]:ctXaFFj +*hu)u?Qt_#X@K"]C LsKo!U\)?O+pHn'"0תMaf18yòDm} a,Ъj'hPUH(E_>GƧoy֫v/~97lfz i[{SvIn_!ulC\kc穧Os4ҖnlwH. J/1Ifgϐ&4WQ͆gCV@netCg%m0x +ZOt׿@]ѭcH͍i>8D}C/w,=LxYQUA(փ-<9PAɵ0"]8L^mat +1BKtsL_['kK4tA$*. +z/) 4o?\;aϡj ߅+>סcR{FWjEm(+:ksx|;s/_!wIe6^.KO]({gM:$Xx ]Q/9rY:q_Ej%C (+Bfeo\#|8.ס +tځH`2XRO.uL~I\]p`" A>n}߭[n*:]ֈ5-R,J~7m[mAے#S˷io[Qm@gA:&kR=V8TkcuȠz)NR1 +jދR]dmZ`I::>Z͜3E0#3p,{VOXҌAo0!wkLKIxɥVfj<",F2\IX xoz\8SqM (4Ⱥl(8NC3.̥ƠYZaZjɰƆ8͡[#z"ű =ǞVSmY[zǧHM܂Z79PBᾋ:k9qс dSΑz۪":tqb~yL%M) < +PĀFBTuQ7z+rHmR8 fN47aV_PT%[rpN 1i8wwXRzzJܓSmL;LeǪ-̎1eP( 0,Ay5Pa&c%gcw͙g}y]NoD"&"6_(]D7{Fuq+E"Zj,&%Wʕy`Iٗp-,rkFQ|8SAp8Ias'џ&9Q|K"jA0JC]=kRu4_ e6ʵ]Ɏ?.ʢ%  LdO CRko%n;usx. Ri;P]&K<'JT ou߃` V2,1x1]n~4DE!/;X/>u"#r^O18@O`0B1GfbJ+'NG'LU[dǥ|g{A݆6DZyjHpWp!2HOMi>*QP<]/hDw/8 +8˭)"ށO<= t4ōiHَòQUq>0Qd +Ykօ!}"ݫmv@m0TpO۩UȚ|;2Ob+62̻g/&f`|`'3S㥮+<MBXW<5!M\&زk־hb~{(獘:q09ج FË!0V4ɬ9 )*^yרHŰ'X)AY/K 9:fu&KAC1p<Po X6)?5Sdr*]VЕ2p>#^/RiWTr/h,hCCx D]|s +U4KGY0%pv<P1Ĥ|tX-u}9BURUy5 ޳`872Jur|J,]V7X*h +qڬ47:POO9o{;2Ej?`+PCI{`Ri4tOɨl4Q%arࡉKS9q :צG:e1`*.Z6: 0YQ^ܵ +R(E2_ɯt,Q̛ +$ہjۅz#kX.`ajٶ1{2:>e +F m(N2m[o*1^yN58n ʂi-,2q=NsF?\D_< +nԥ*jGPr#K) (Ӿjהuټv'Cau0 uO} @3X$*gn;/S>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +  + +k!1"AQa2q#$BRT35CSUb%4Ertu +&'()*6789:DFGHIJVWXYZcdefghijsvwxyz?ꪽ?rfWݽqM~ O+؛+숈kłmds$< dsA'1ni t/hw}9E iJ,:ݲ꺱u^4E &{ +ZQ{#as@7 HyXdEWuܑ}4JN2{\)sMz\phꨈp>L3m7 $npk^į6l9z+^:cll?4V_C&Xyka n5U==O)Gb98{TnxoZy1˄:y%4múbkqGǍ&b/44\ѳAL%v4H>| 9ב  ^mmM7&7>7nk\k/~dr,5Pu| +O?7M doas$um.}g;7X[#/an/VfGPK=ej*Ǎ ]${Rfdz҉4=#߾ 6N/{1k,,ݶ7 Cb7p)UciyX 8v_\?*q{}XSN]#\+nk9XCⱺ>McecdKk \ƁN-x^+Z~cscaH˃I5^[TH-3֏hrW bVd.klFe4!U~ Drgdr r~goH6{z/93fԑzaե{`IyB1]n |vO}Gtm@c[fdNoP[7Jb{|P^نtb1Jd akmlp(`E,1ydq:5l|Wul2LXdv9sm_Q~{qq#2Xas2M[RM>LPGA:GoZ[b;93 G+C<8|(n3szlv JӸ@c+ӥSDzdJ%H-8WI:'8<&u 6 if4k"ˀك}9uWTǗ+%"KkD`Ui^"Ud7F[7{wFKKCAd?>%3eCqp$H7m`Zϩ[ A&ߔٵK0Gs\J0߆簵Cvĉ嶐/eɱce?a<- #uF)CQ|aA$F,d$ 31 U׋u09-ˬWoM㑢g↺fic2u*-vf^>LBq5& ;3'Rca1^i$ir{-7tE>OpZ6yA~~tϳX/Ǟtm^ r35)qqǔJ:E Y5|7&& ˒i#4AsK@qzO4 ] r9^R׿ 64?%|5n'~ziZP1A僳vup]pÓ(XD.wXm/F6V,G#v8 wpH_('1#ח6U9'}כòisq{e6I"sp4x^LFc\xc(2h1THL߰ sbL`^mEUk4iѺ r9%l]SX%mYO>kz{$Ŏ078?sx"9eshJN F~kXBv-lHeմlGщ#;2)ypcHew+t #Icd{CdkvnikM|WM1ɓ#.isݿhh!=?FfVvL2Cq4^ /[p#8e,vOvǪ͋/͖70w I ra$H4G |mx/nv>fck."ݣbhXysA.Q4H4x@7w^5z̞IX$hkUpxD\խktr3%>>dM7nq*^ -]?Qɍd ^=9@'[4i6Mt!ƚ +sqyXs" f?8_mK֖B6DI\.mPdꨈdm,٠~Hꨈꨈꨈꨈꨈٸ %i/c7X >*ճ4VcI\`p{ #HpVƍ&}id (.@mJGv^=*L ͍˹߹k FvC4n$7s y4YzN^,͍ʐ"`dmc:z~DDP{/&k#dͭo'ԊPVG32gq15ta;{+cI&4nc#8`OzCûƖKͩeY .1I XZڦǒqd^L,_beyb):ql.c[7uڎFyfAa85Ic~J=F_;/N澕*T,6-j:2gʧ4}v2K +85^fiu~QቄEcdsp=ͯ>jAcZeǍ[*[Ef3IpLxyq.4'{c}q$ϊ(p:0&.& +^-FI(q3)ָD4:['i&G #oF.$7t̎0{o' c#ϑȔ88nGp^G^4"֩Xdd识 A{ujV2w}p_W%7as_ | 4E+Lq+Z! ѿk9pfvcx&;%7٢/E&|l<2y!kb67ѹÞ+ilyue-M۩#|v[, a,Y3cm\| Oq*85=L Ր;{l lU}~፭k0$dE<h$$[94̈۩O\m̈?q||.F|K,a5H1ƭֵqgϦhy<r\bc:`=-4yl-)gZ1| -?m+1f#K!gܧpcn^m9 +sb{#3h=e"ˎlw"sZZ*< +ҩ~X$Y߸_ 5 +Jd ۃ7k yMkpd|ҌFg!cz=F5;pk;s߁Kg"O A^$ip,wŧj&Mg29 jݗRLL &&:x6D9%R45spn믣|5̒&4̊0(4;Ě&. ik`.Z-9꽚B/iip2Ak6nm9a0n$аL"lNz3ɐ(KMuC34ͦǏ1q{ h=x^ װkBY}hL̼d0:6Fv3ԑK_>o{q?s;ckUOuHÌ H'X>Ǒ!7XQ4LcI.(?  27o$]Um7z4o{r`LX׸G!k-}~p\:]galD u͏fCa>!|A[ K W];vh;ԏ]ǭ,ҵ߱1lXǶMQv~HsZ,yaqC_woZ;O͇-8P%g .7m6OktaAsdc #%}5psC\ k6>vH3oNY (ݍ_YF\iRe&49ۘ& i㕴IHlRC q鼵4 GN2NۇZ(c8G C 4FLw`FVvp $6,s-yV]̗Nȅ=fTx& - $Ie8Kկxn8IhmhrCeXv3/s}}z&,>Ѳ_ z.A/6É&>3 tocgt?<>n <Y><Ʃ 1Hĺ=c-xdǣ2Ln]$2.<6WĺN6_ :djh:sʵ^CjHEKމ.%{5 DɆ 1,+(8zޗ#>} ]n3Y( .$^=+'LY1XIJffÁ>,M# c@ԥ%~4sMUqfS\Lf%{Ĝ<ii;{iu'l3q#5m4㍆wR n` +=T)5i]r:`J1ߖNNYY2bf~NDLx5Cw$rOu F9#-EEk'; ݽ7d8.Ry[,m mH +hu=exkIRг̀3D<xkw+""ꨈOxf S&<&6i Q;?%!kDkmF١ik&hp$>9cK,@$⨐*fxn,c2I.湄Hߚyy#}4fK?cXmihՋLx`FinYviΑ:Y\H@ `ȁW[FG#(Uд˩Kq No{H[<Vu-EQZ|-?ɚv0&Ksd^WeܟpcaHK&ֹ֓e о-WMX~,xc;c8A"4jjp<G܌:2$wD)WڷL2r_$Lٶ\oeibûdmqM+qtI\h|$J] i >~0Csp^Qcd FѴA#]vDt4\&C@t/=;GJ4H# \X*i"]qH< ͺ$.X#syC@9xV,FND)5,ѸwY^!):d7 ZCpG||;DM|hKݸ?ogUuW<;5Fdnn=q m`\+;wR]$@(| $8#1-.q-{Rxv'͞ii մ4i6~YAEEi%8on㶸[E2xI \/$Uj#12G/Po qi#*~`ipisn{w=Π,` OLUE)psN׵64X w~9}NEWDd7"IeF:RӰ:]rj-lA!jacd7tAݴ./D:6QIz +vҾx>~Cl5Ā-#WЧ@f9cLҾ(Ops[yokeF>+Q1ŸI1wͯ; >i,[Ixk\_}4hfc5u +Bs:F9^2뉎}s[\g׋5VXGI] olN~yH-u-""ꨈ^LM[:GE {,ycˋ +3, h &nm'kx^Eph$s#\ +E6II+狙kw#$m8=m%}O ~<:Kߜ^DPx^<=g>GE{ -V=c{QV Ef$lMs@kA$@$Ա~ ,EGzC =̓>>VC(f@ܸV@ڕɏ7K+X֒)\l'kA}ꨈY?/ňK+#k\llg#pX;#^ GxX~3bpŅ600{ $xQ/N1Dsv9m ͉i^*_N4R69;皾a&#Ŏ2W)žG</'ZP.7X/9aD]zX(%Ś($? 飯pL`6BԿn⻫Ug8"- u+yы%xusw]9jI/7P2FH%-k  M$~Sc46m;&GhڄdtpasLe2֒ه6$f79Oׂ-.Ae_< Wz]HIwhD}!L\c>FLk4Gdt͟3$Nݽ׷xƏ'/:rCc& +9oHAzrqd1N Η2KY7-"#A7vז2QE +s|M$x c%kd92H4U֝.IȄ/DѼHob }W_vd1v׫x03cVv9,{U|cI6N<ؚ^@a$5+<-ie; &.HK]@=xt8cH#Zϕ5$w{<<,X80:6+kC u }Jż1 k/݄_ac$/k\4|`{kOv[!Im60;]n5`Wnx0aGyKNGBFDɿaiiIF~Q5%ePם ~HL\S<uŜ<1lY--cfXC7q.oz-"""""""""""""""""""" ꨈ gtWŖb{^:]cv9B Wu kN۳[Mmkb1\y>n;{2潻\ Z_=O+#'ѱDChsG nɍs+tok-1I/5Ƿ%x0lM%fJ;*glۀ=38zلSPt:8d蹎ѵMՁ/W摔x\ Lmww7@2"I![J\Cʾ wZ,m3%~ғ~oVZc鼆ߚ[I^=cH]#8ѵk'$=h|zfBFsDLgM}<1a)#{ { /s~p6pC,sӏ[}[c; Z 4vCTmyIɏkvq$q4+2`G5= U5n3N[ӌ:D ị_/us^+; U9 i Xc+6 tMF|̆E8scHiikAv_Zjyڙk8Z60nBE"땲\FHk$hk^\+Dy_ 8ddʼn$aц F`{a76KA4]]/_131KI鿧uWa߲׻Jհu|F$O1^1oY- Xq5#H%1\Em&VidD'# 1 j%IJ#׽n^F$60eǑ@FƒEkϔXdW+]66i;$XJs T9?dx%Kfݳ{{ZOPEx#,LyteHcފxdd˚Xo{e;8A+[echFb{WEy`9 +kytx-̍8_k rBk mA1A|;}O{^ G;>'H܉i>Gj͏JlN4D6nvOּFCeGfKdn9y-0 H4 ٤Gc{{|A]Co^ =وi8ovww;&ǝGwY%f{Uύш5;.⛶,ru<|3f:6 [n ‘0˲8dΑ8s&? .# }Kً doy~>_TDDDDDDDDDDDDDDDDDDDDDDDDꨈꨈꨈꨈꨈ:AK#7i,qix=Dz?'TO~mr~@>O~>O~?u~>]'Wx2u~Ok dQc?Nmw _(nw  e}TC;QGk}?+E}@i_z/xޟa}>^G~O>:pp2uJ5d_4..k;mYrxs?i5̚[y'Mn"O ~A2N*w?HNr8ӧ8?[Qc^_Ys>M}i?p~⹛&Пzxf Cu>2{O:fgD}?'ۣiɾ/FϿH5d_X}?|W)rrER7'(TS/;'}INm~Ӳ~?'ki?~C'e~QGki_TR|Z'e~QG{i_TA~Ӳ_!{iz/N~ߴ쿽|TNC'W? uTӑ]?8t:K|W)pc+t?>fdWӠD~ON?TQ7:Q>ڦO(k?p~mrӲ?sD, CG?POvGPk'TܡQGTܡQHTOO~GPA'}TQ/?'J?'?#}Om2@_TO d~Q>e҆GQ#WGdAET_r>#+<4!:\ZxHek$n@mǕ\C CsGk6\ڊxc oy G3҆In귥}]צωQ&H,{Sk}uoæM#f,'z%Gh? I`4憴E^|6d4`ivH7Ǣi>&ֱ#@hqKO}Ǻx{؞%cd{Z܏dcҎHvwWodcCّ(JY#輞!Saycc 4=À UF41_#pkX }_}!ZG!yu4 'v֗Uӝ~6x)%.-d4'rH_M4ŏpsU`~.t春ާhq+GG dfp5'jq]Mwʳ`u'#6Xh?V`ړ^O]tGm/`*[K˝ RVoG|WcꤴOO70ms#Xs{Y%|pfed?H`qcyi8=!,/Vɦ.ssE.};ZcT~ ~6gK*<~s} O5J ,E e/ "7ln~c~ϪRҤ 4=)-c]C@8K@ +FT$ Z)|~PίGwfn$ڃχĬ-lKz.7ɰh otl ߍ3{ X{^ƹY]iی$ h'ɥ%t'k:ksA(G=WMHryN|ڲI Z̿ϧɏȓc*F~?}z`r3ߌZ{Ix,u+pcXnFΝ{k{K(=Sq+D*\08&N ]h~S`ȃ]c@ػ-ਲ8NHbcv֓Ct>%|t'1=!},(NWr>[HEp +Pꨈ$9m d{O*4}N[Y{?|h7MƘ>٠ǫ}Ɋhvr[YV%κue$x3{%h,Ai{&<^a֨Kz6Hfዶ+|`Eh`s_%keY&nL<)D|3#1?M sɺ=.|x{_ 4qn4}mjc w š>!A?}Y0 žMh f{ 8TY|5Ki%t|hG>>.7sa['^iۧIa$GRۏě%tE +s<sDT%2nW+M ʟ'L:$R4m$8vc49X]Ὤ @XgPXYJ{+7#!ǙZvPM_ߴ/#PI $96 p4(i|toX&_`ӱc@pkXcxm\`A霆]@Ћő⽙^\8"w󄱷u>^,-lKdgR)XZKE_8ڻ2r#I$q1gg8ݸXLɓ')'#?wY5p5v-iۧ=ҸFiǜM;:9K y%5AwwUɪO.u &B^W0o' +tM1{6f +3sHi yU#2I^ҐVK%iE>Fa+"4|<Q8zl1>&6\@4Am41b&Q1,h*}$PJ݌!7 ;n} q+Vlr~>Sa.c5wŠMSPv"dI}8999p}ixkw=G[H;[#IsSN2GkHłoBj>x^ 1f\~Z2}P2?Ra/h {,ʋ/Qu b\ǥ/qaެsxwȯN0\W#%J$594m޶x+& džIXF$r>z\5hM^-79r_d66k Wkfk46G!F:.;x[̌ yf@>酕.R9 \đ}KYp12!c5Ëű +{|WUmd(2!۸ ^/; |@8[ؼ|m~xܼ'2gd?|3eTW@+/ 0>Iq#-XruIp#8MZCFDf@6nc w'?]m\3.fKdkKs^(UߗA}dKLm?B9'.|@.4mmp`pl-hiF+[D+^GkPغ1Lb~KNדDt~֥fw90U$WIt׺!>F4Gej戶$'ar4%gt-@jˡY {;"4(vYϐ[78ء{ pj9siY:wu1k6D6?`ɊR"ệK{8Wob~7ecX`k@Zɡc3xe2Y#a ;"Ão۪Vs:.|ɷ۫wǺx;Q9E3%12ya}5 ǨC &+@p-=oo?]iԳq69th}4c gG{酥?٢MbKA|ce>q.ϺU8 _9.5Jk~Olɣ]a9ѳhc%wm2MMcCbtA~wK<)X_QfOxZdj21$L,c~Nvm;ӽ;d>/a{k׀g9^0d$r$nxثJLҸlܯ/9xRdI{ei5@,@(d;{u- ٭}NF XBv ,Lzf۸]}4u< XF4[ 5嫱g6ؚwK-/i`` {$lR -sv#yPGcZ\\@ܟR Qoiz<{#!6*my|)|lX'(x~hoYvK iyPVO4f:z.lm{Xڰnh:#e{dh\w:i[|-^EG$nuJ$s{Yq/t,xvDn?}{ZZoNT8⑬ u88ⅎR, &Q3 ZݤwiZstfcq$I9)tb Z\;2c6;s60%o APDa$Yhwׇ[5H 3_l߸CH_ \I67W'h + ]djx/07.Y@ue+.,Xp m`kGz9ZjX5M1P?V 2I2fS726SK~H|i\\[m&H!@Q}).;GJaq-&'p_m[M%ƒ)X@ u ++#͏.N3 F7sx"Cðɍ /vL>ݣm +^}GDL9muiY9fvw|?|=њTYˉ#=>ߎ痚6@vQ#"G9 $@p{^ԴfCnkrm+e:I066bX\I͎6bʗ#hsIipuV2R'-y5m#ҁYOPX-NMS&X16ilakGd=Mw?Ѣσ8v~-澕NHRAhY'^gy͘Nܘzd5sYD+.>Wퟣeg;v5߹^2l9}Fnh_1dēG9ΖNdQAM/';ɚE#_Lj47D|OɊQn/I||kD sZAěN6|ff(c\ޝ^&ʨldfc&h ck.n 7iG&\X6ŲQ&2lΐ1:;R'Că0_I=2 or.$n@̅Ჹcv C}Xhdq$ǚWn|~ٮm ~zM>>LfV 28sv6PnkR:KuHvYýC\=|m-1s$ ტ`72NKLF +ȯE8:N&0[6HARYlJxet wNE-fH(廯iF>.[!lx8Wp5#n Ǻc+^%}5h}>RG Kݖ lPSZ=}?9\5ܴ}$KBPO(Jj! lkp=R8 hh&h +!E7KI6E)pS`% 6G%Tk%E;zC\7|/]#qd{H$:9Z)Ť F qSVObi8lY_qoVMCԴ(a1;$2}, ^z{tW:;wXwuq'(%;Fװ4sH+hy.33Kd}CRpjE'$wUIpf,Vs|Úy纬cN2O&95qi+ۋ&Nۉd08Ca杠WЪ?.<'לSHa W z/TfYCc/I.Cv/Wő #alq}Q?Zk}ŚM;h._k88<5ny%ajC[X߉Zx_d _[MFQSik/qj#R1]ƚy6~12ƒH<ROō94{jZ3p2n-.$6|qނ؝g kSuDUK8d77ǺCQjE=u('J#POKM, Mn@PӸ+Jk"HAR +V զKI>4KuB %9*jC +Q,*)M"'eQݨ<,mM^Yĉ?$W ꨈq(vrZ\Ԏ$:U+ރa`iH%v@uYǗ%S8qI n7Po~z9t:{ۓ:ld$K@-^? Iå4HYOwy5kmcL͑FJć{[ScA9mז@*x trc{ .tXh,b@~Q5'[_ +x'MD1Kޗ{5 vWyf{Fy٧X3'Q|8[!i<;sƕ2gr7c#-p4Pp2ufF裏IYL.{N_;t<iU.ne49 Nuɐ&;V GAalo<=m/$9KaLJݐoǰYcJîe7p*ݻ_1\agD}c oi}xǿ ,fAHed{C,4y5G/M!ea8jI;~0pm/+FN8JNxyZLKH9#Y@R)%bRB†k*ESׅ-c} +RҤ MI$RQ +jI6J6AM{)ӹ@ Hoɧ +%,ZXũOS)d +;PMʛ +_N{vRꨈT ,^Ɔ߰k !d?E8= @vE)E2a?=d"8YhlϿ * {`1/ hqM #>liym)-F7J(TmnEyz>6;N,YCde‚`F;Ɛ> 7bBf6v{gK͇Ͻ}&˽E{,Hq/Ʋ -ꈙϛhډpv9-Ȼ_sKL7/7-ȑ2Li5dm&J״9~n$ n.hOr@ݱoRo͉i׵~k'༹:K6"-65@w^cNNuۻ /c,,^Ƹ{k͛zW +>CWKg +e[ֻ/6NL8qMFfkCGw14 n?f-{Z5iq/.X13*˃Lco@1"Z{U?=hck}OKpk鑊&yaxJiR$홁k$llY9êޝ=p9 ƎY O+IoSkťx\aJֻi"6 +5uzDP,y.>kcq. us]Hޟ$qm4sZGl5mu?O|H${XƚnI_E.>;D5huM]Cll0Ygm'}zUѵ5I1c7crx-UQ2x-ݗWաqLšm1K%j3u(qctƣ[BBhg"9kd487;q>7bv1gD`#!1Jj6#_+fO`Y+n&v$9WtƓwM zԾIt۸>m>'ɷ5̫d5{8Mf Ĝ@5nuŎܢ(Tz=w cBXĥT{&$dBț $ԓk4(%H)u;:КP]h RQYcY}(JP`qSv&ԲBz4X,= qX*lޣwXMd k SvTٵ )f;AaHXݨК +zRJR (xXIe -PzX{)v<3Jꨈ~7qY?Ah|5e~",^KB$@s;wKiai-(y7hk s"I<~786G|W?+l|KwLUf2R|^^aFiU#v28c> ZOOW>xE|_.$2@1`^$ZO%xlpY5iǺgؾV3 % e$~Ӣt|h^^hkͻ|`k9۷{Iݧ}`X] ظH&|ŤykЂذx.,ⰼ޾sH(ڦ.>|hLn|4u|z&tCGw0#w]5j'7u{T,irICg: A2CIi#~+v>qgA6Hu*Ac܁BQyE]*oW#G+pŃLvV]RCmj?4g-}Y#81Oh ?I]E>6Enf觏[Z~ 6[>Pw}Hl,^LпU""_vWه' UđC6٫aƗuMǁ ISG:Լڗѷ2 HL=hn,i^!ĺ乂FzrG>y$ڰGLs*)P!-7캿nb=PyQHEdP-SI^JQ>(,j/iYr "ĂJAuEMX;p9Au="f9 yYw C†G7*HbAYSDɶ @}ԼACYA +vRXJv@rm@ +@ KBRùYm;R6jƹJU/9po +Pꨈ&Ӳl)q1MF=p@h7&(yO@nC_ "h'tO0ܶ@Q.+|5CKn.t{}#KuP]!d|x_τ~$yy@V{˗-Hb` j֕,S饑{MǀMּjzh'cjo;M?Re LN薇ה߬4~0u\QFh5%m|E| b nk˝N-G֭}5m 6(i&?(Dxx#jfM7m!l͆j<)빘yRKߒ^쐇yiGef]1|08GoU?˧cXml}ݮx[T:$ E5廘{}"+隧1'Е9-n6^gOӺqDcqu^'8rǽkw08zZ/ŦkRjxk,.lmฐw4]r=ץVq31%.NphŹW?0JJH(y I$Re(JDzNB @o+.yJ4Z Xm8 vR4 TH + )BPJK(JSEcOpHS +(E)(Rr>Bd@iGrԕ- +ğD`+@Rbt^rHԴ=gꨈR4Aɡ?JبA%q=ʐJNg{%('< uGSv&KAitEM֛:i噹Йs[V;N#V6NkAyuaӣtXi [~zkۨ?/,ŎN#gW-,Gt6dPupВ[; +;-AJRvE!GZPTn6,Y'$nt/|_#j%SIH(HEI(B)b]J+- + );+A$wMKtsDꨈ߂>sHtkk-8sQ4: +2cKo@ ^yjچr' +}gyksP^6c˲1%s\m多&>x32Hb%de,ּZ&^6VC%~(y2 +u^s~r]:-dй +#ױZ ZҵYWɥs\@5gĚbYٍ02W=G+fT}r/ '+d<J 6 +oYZeaVO$ZĀԁK5ZPOjB RT]-fFǓ&9X|Z{DR|W;:_e*L|Cn+i+]gNÒXKc{?>Ln;lby.q?WQSA4R<h:X{X"5s\;! @cle3Yna-P5zfvF$g8-2 }Տx[Dx2JCZ>xU=):Nf6+)0<:W$~!QhN/ 6FDEHd,^s*Qk KO$]_?Lp1]1kʍ|g|dsɢARx"8ZLI 1]A&߁ZQ~q.vl:"^Yl4L:`˴|8j3Qvƛ_A'VC$1$ pky4sC 䝶d͑Ϣ&(tlֽi~,<{Uևƺs1vǞ~(=NV9GO @Y^̣-b(pa oUԡHրֹI U_Ó<dLh[\ifl3*V);矩hq|=j8ۅ^$O`x&zǀJ'24dtK,h9v扛aH9MxcC[UE +`!ʝC-̒z4Ѩ@6~4|MU'8;ѽ5 r=VXiSӱ{#`y[4Q^I)K%NgKn/8+浶Odi;$swVՂ'}p=={>0BwIŵm_`ou'u5K ̜;asOe\|ԣ:BsvVIv; ESw+ФpY# w{7HʼnN Fhs $9'~_l\dOk斳ih/fQT+EB`f^! 3?DEZƋ{,J(>B@T1S jIX BTrzo_+ ꨈ +p{aDp+@_1ng&c{Y?)F}A?7`h 78፭&ZƵ)9 !X}~r?}$95؀G+4pAc~r\h+ƾnhu}ŎI6hmnzĔFƇ_+(;5V5I3O~ +֘c!4}W (q!ƾleh,!ӱ2 my\4:Հ]?w nqsO!}!_DPZM׆_密3Y'b㱣sH_liϓ>F}\,U0 @.?rrlSu˽ R@GTv@ mw+ڠ8'ѵ(ҝT,Gu';wo(%@pR+%rgZUsedW 1;|\+|V,` <~%yLoi `+<@%md-.>c2lqcD`A-.Afx怜ڨHpNa(sGM:$3;i/^pC/>"!طĚΓS3,ც1nye&ly2\ 'e/_QAns%dxO5~Gx~FӅҕ/-kca8I!>IÒQ`ǗƸ̱jYl l ,valB{}s\ki5A Ʌ'"|;^mjXMߥkK =id'p-(T-0us%|2 N,Aq?8>j[鴆1nϭq_m7MPFsBȈ89 ?xi'X;%Ĺ {=;)},w6|l [XY/>+ɘoQ`kωw?[?]A|╙ "T&4я[ˮ֥K c{7/|]8s$mH+4/d-i lQP{:{s ;LJ1OP8eQaam_B|76تsMO3X1dY\]E\/&3pdL%aVŊi;$HX9k wmqqۊ͍$rO$/^H^ǵW֪]gce-!` :ә.F,e18hc4Nײ\XZ1p@/H9)v6Kl s|<8bMA' ⾲M_Xݽþq6TbN̟'svPE7i>>b +_)xi9#;d>D!ys c@zUWZ4;;Tև{`굿dy +$ZDYrT!@!P(PE@8PR(wǗꨈxc%}@֝#W^gF.$XA',mm SXK*?v0y</nf?=fA_Debw$Ǹ7WcǗG ixH͗3syGIhet߁GěL%v2H v񽻋yԺ(*|9_k<㐳_9;\ǀj+ q!G;h*+)-*,PP +YU"9+J@"ebPyT{)*⿗l\wHǐe!a-<>@ƱFִ8ZϦk$1{$-xݶܓڽqkZQ#h;}?\,SaGСԄ,GM{[2eձ; %^hsY9C3yǒ ;()dVsaej-G|R/6bZtN *Ýǜ3ИCs8y&VJR|r[7{sp=y>Ko’TU"ڀ{ +m; +QtTTW +$qEyC…N?ğNW(ꨈS?Z1k$=>*:l_ +xx&חq4{^qaE xHD ^V/]$GM+KZl},J鶱z-|osFWG|?l%Ca[`|0/bkޟUXh>~ok~fn>#cʇ5gG#E>c; DV6/TJ5r{s\/C3i'NӣkI>{Mfͭ4_:|x],yvw]ξ"S/=,(΢G̊ +t_ fcZeJ B%7pTn;(,wdyXH{%St-EP +{TݩiR\C}4BWFx,@mr<|>]Ln]R8h[1E:$'NܜbE٧obR (QvPiP +;춥 ť8XvqeG`GD!qsy{{9+J]',R\);H;-'ۉ|1~!817l +kw6TZ7ZmK,'5E~ϰ +CMH;Ck+@RJʛ,ҒTV7EH(I +IM ) YZ瓝CN$Itp +Pꨈn {XBIX +My+ m(Sb""Ii 6C,SVGzlX>I = ^-3C%y8&_c\OZ0x:\[̘CA 4 +pcJܾr+# $EZUErTm h𜒕JmI T셤)lJJRBN-㺂=BRš_8`f3H\Y<m)CʎGe ,k jaA(Q6RPj6m'撎vl~|nWJꨈ^? 2(;,"wBҔ;!E +B)I*ԠP + xKKp#(Y)6pQGЧ +( +Ɣڅ$&8KBRK<+o !upG;"KBRʛcaRM(^y?ġpRꨈVn~q#_ޯ}A+-OC)!) JI& +%.@xSPKIQ +xM#n)HR,b8R(%O AAjqJM#CTI@)jCBX()dP!xQT!hMaIdPQ%m*T/0?Wꨈ6Y_TkJ{#}+8Qܩg* >/P VDYMV-V'( ,X9PI!Oec%eHcة`dRACi|, ,wr+)ePB&T,,)Ud9PACEcTҐQ\}VM)@X6H*JwX~oc)@ꨈ>WR^P[TȋWŒZik~ЁXQwG87roe)V%H{S\Rm,HY!@PYU$qIVB,K}RmڒՁȋ*}SE-Y4SmH + +U pbږ%vPG( +XJBUo+ )QHE +QF{RP/ztTҐX+ɐ+7N&㷫ꨈRk!j5(1E:&%am[=c(|ǗV>fE a+^s 8 .Tdzh4qGuLb>?yk͸~ዢZRn\\7+jyHY'I͉{CXEn|S-ލ^X6'ݣNV4)*-4ߧe7aE{"d*A*IBiE<y<)%A<%nJj +Pr BҐEM*,򆂋SEڐ<(-P]eHP$<%%BQZ!PJ6qt]ꨈRL9?A}0a[+do†9ߔI9ὸ]l;T G@Pinw-&Icwla.%j1L|yݐI#u +۪>Hv4U}7I<=ԐJYz(W*APxQ_4THR)A*B)V4B,vd +j\SK&&ĒBeq*AP9*PiHBT)Qv +*J~T)P rtwAJAP]E.:Ԑ/&OwM&㧫Rꨈ.?ŽMnG ۄJN(ZAw+.T]TfM(Sz + 8 ,e.Ph?B7K#T;%G6w6('XSF)Yca%f +()졽]#O KHPl,T]VU!-dxPw @*IF@BA+=,CiiA^,~[JꨈR\'Bd*IRSdE,)+ +Rv@څ)RmctyK!/E$(@e|(ԁIPCA4(% +mI챺NV%Ћ)K{ O + ;R~Vc;TTPĂR Xҍ6qbgQW$~ꨈVj]Bl,KH* A &(T Qz(ܠԧp!A4T=9A-8 b\VyKܖ +](.AJl%pPHޣqQ^MKP|OcCGyY䌸cc]G,]/imi flNM҃`6u #s ];Vqq!svGa|p]bJZ]@RnY +PT +ZmJ,,Sи(%I*VT@ pT+O +;%cDzB] +^LNoԊꨈ^ęR?Ck R( +KCaA%b{N߲!IXҝBr࠷HrP(RR@PP;)PBpM{%/#SE1SW蠖Of~x=ē)2%ZݵOLZ3sdkkCd5ȳdbր=r((BFSh@B-6 JC@RZ)@m!Ym +hRĀwA +˂Erp-PB@PT/x#'O#uRꨈR֙ŖW)3١ć\꽱;,|s5)"͋#|\#SjՙoJXe|N;C_m+]C J뺌칲C$@[GeHMlEc|!PR@ +Aܡ”_)P<eh-~Sq f~AsKM>{͂)㽲F ,]/wi'H^`^eO 7$o`8S,Mi#!'0m}gCcW*l*%uU=ӳ LfJ7kxݧ ^{p{-D^beȐq 櫹^B]eq}*u{lphk|yh,t9Оiz{bN.#1 vx#Vz|`IWUP^G-;I=)̐2Ǒ,1I ݻa|YsM{Q6T%܅)(mKKQJ@KH* +@ +(JJPU+éqLOWPꨈFߺYÁCD$F M^vm _l,? B!vQQţi ˝!/WՓ}_=Aɔ9DmYc`8^L;R%">FO~}29{[0n_m^/H, 9ˊߔeɓ3_ҽx-1p4A_h! 콼z}h,cF\lOEv#[soù].cEܺ>/e!@M\꤄ *PE-*-ORZ,Ou>HPRB"(F>xs +PꨈR4W|4zhx-<!FJ$J6=J 7hM#SV8PmMpXٵڅ6B mNʼn%iIp@Zk5$J +{OERYJJX+Kdk\`Zlő1 $Qy^vb:]`d{ƒI6U@pnw&s[ܷ6+7`<v[=VF`iO+Au}j(<,oP懂4{,).P;,CCECpQE=A଀DV +j])*;@R + %R!E)jQAP8^LߔN⹅(ꨈN@7vNlnPX +=R(&ӺR%NP p@mEқScÒʑʓ@I*%I%GpXn{kY\\)(!LkoXs3rsѴqaآhk(^Wg9k5Cl΍pvƜDV8,͆9㽲F׶pWy5lid5npmz8xceH4qMc?eh`C'6G=mZAmv=L!NݽXc{C(qkn~p}ҵ! 4;жȋqֹ<ŁinDs/V6{%3Etswu ޠ>&tya< tBCѐ=y5H6T]4~c^j0 |~Hֆ.F4sDx5,/nfCc/dOnZ8WEaÖ [5H5Ǣ"">o1 ^]c(vRJR*Au).A$rk!x),ܢQ=ԅ}Ӻ{+%ZvJn$ڄ&|P +* + 4ԐT(&F*T)\PM;vOD6 +QH +jPTBBwRGK+PJE!EP9OU3u +Pꨈ~?WA˔D-lmvhqa>n `kLc_,-{@!=vntX>Nٞ:lIp&W+qV&4*k MU_i~XK0G#^Ìl< +C˞L-|eM O9#k[kZy7`zlnsq F4fIs{@kssr'3aH>M5>h>v}y[˦e(|LdÍB7nF6> YscLp -U8tLA.\y:#_OkWoJ[m) 2p 2 q{\Uh$W'VWϷV4(Ę?+ 5ŀV8Qx>#Ɩj$nfne*hXm:Ŏ2p]ϥV^5Ѿ7K %‰V8GWlr܁Ays>`Fe}O $.s#wFߪdjxG2$C#$B[iĽ'U2dƛQ8bl z|n>VAܴh L/R+z (SW5zk+pЩpXR + Kct9Q_B{XiKAAXH$R X jChR#AE BR# ("ҖDXb,,Xh- |CrBH;vSB( .BQ;,k,HRRT!*e?ꨈϟmŎ9=ZKH4}B bm3tPn>TH1b 䍬.%~43;ǁ& +kִ{}V'=xs@8 +#M+H^XZ~P\~1ߧe^23жP_gqkl~k-Ϡc+c^te@q/ .>l۷nݻH&u\e%|߉粌= 0E0={c4&3[<|&Tcxl\\K?w v8{-E xSAk&LqHȜ]/,aϋܰ#]cmFZ~aKވ|q2~Wcw{vQ#_(cI"kіۅ"GCpi!WFcZcb8^Eʟ:L7on\F)\$-K4ŬIn59#cZkf8QCnHn}Ϻ""""_F +W +~ $-X@YmZpZĂ +ZǢP) +X+. +Bn;QQ,㰾G9<1 +C ugQ~6K#u]f/}mIQi^*҂rJR e=€8Biej +RrhBHPTzHdHQjoP҅ +Q4/&_k9]QꨈY,=왐ssp68mϢ:CsV_}`꺖fI6BݎnW}X2Y&DX:c6K%߀z9|xCcesd sm5ԛ42fminL 1?Vn)ާ6csI^m2%u wZ2\t(G'n󫟩X|7w>P%sGQ2iȫz#0ޣs?Ƈ uÍ6KM{CE@ =hMKpqc,\,C/\YF6c[:b&_IsysE]KTa9؎C5e% ͌3fLv09G&@ljWN__)P7)XQAR +h* 샕6>*{TjVEa4-hK\Zx7-'8Ӈ$N@h}VkNNdd#u}n: f48kE2Lv^7'!s<&(6 5bď_E16,f3% o\<^=.\yʖm-`~ƀrv5;-idžcys:BK7З<I}G߈F;lq,5OJH pW7ca{ݤ۶=>j]7C'(d9k"k$'$|x_K紴1}#sZ@%}׻P[,9 ^p-p A|<;$֑Ϙv U[B +(ƒ|Yf=NN@̏< AC/XnuC+Cߪ|ΒV6B`x-#Kզ?UKXAHksD KףD> 69MFN`x=2-V6[6F9ǷqYx,̇_7cC$ r2{Pllt{mo#$5]ÃnLo{H ׻Jƕ+^&4P*n/+=5 _lۺCVցܸܕ`${/;#1Hp!cm|l89+}B](ʓ_5"EG} +@@/PMpI6Zl%8l -k79_ uB#sϒmej4I #s(8iuUWƂhyFFfGpF_mu{Xײɫ˕c`sI8[\A$*)GF h|TbF(kدRIu)ܗk.Dx쾀Y/)Ա['H?Ҏ_<|em<ů\=>4nQjmIҎAD%Erj`'@ +_l?tDꨈϓkn p;ppX#aE͒6$8DXⱱִPh_U4CSPE8{GVy^ :&CXۡ߹lI&^DDDP;'WgVdn 2mqeA{21 r i<7+!߇N~v73:?r|P`xY_ +-en +Oe QP.5&[c`&ԾQ&+Zk-?AzSygY2RGYm_?쯙/g G/ߜ@#{G)kUccn3M-HۯVbr f` P wtIm4#_eև4 1vG xVi CG ƴ +;^ccnki~S7NP:)[},{A[^K7ۺqWkQ#r\nhk3ACu~L9W.i4L9Rg M"ר>k}`^Wa|'ɑ M4ǧO:8]ӗ۳ނzi\4ws-nS1` >sN߼Je'aF Ӊ&kщ&Skt{$Ӹ/^ʀlg |cG2bRw?Kӟ0 Y~W c,}8/1t$E,7Bܯ4{2Bj/c]wV8ha8@!6} +3Cr&{)9{}~ {2h`l0<"$z j&q#HsO."JHY| +,>TESeEMy)d(ܡ=v@_l?tDꨈ˩j1iP;"m[{Z^E. 61$ i{ q/_r*Wڬ ĉ^=poΧv ؈7Q;&I59lj67A_\=v#sAlRHuFRG&Y7X^-}GP(tPw.JPG7}"CwKdyb@g%f{,=8@+5-F~<@qk8_> ё# ty0=￷^vjĎq(qv_N!s'X3M#yŖRKg{P8W(Z8 啦kn|HsqnzrkC "BZ-+Qs>rH襸=D#oekV9lc+Ƶ}E&R> uε&(x ==RC>[lXkA ])rD^?;Ɍ1>ZdtD0Z蘐Id伱dko$/4zl$FN#  }kӤ{t`lvw`kۗcgg 7CkwE}]8cG7~>Le("9.`i1a0Bn@_=[ dbN^ds,i_Xr~ICla>\<ia75b>|b| +odnZK!}נʆ_NꨈIK [v^8= Q/VL'd^Hn|vأ8>/& QtdҺ/e+xJωrR]^YxΈ { m߸SҼ &<Hf<$ֵE&} vM[B*|H,2=,h墉&lsGML/b2,r͇AH;nhwQM(k #4-%Gٱ +zԙPM&i0<5s.?f3L`|fM;$ٹu ) +r}+ˈ4lpi6.֧[c>Z[a-qs-hvE/d|M&$~dc bѷQ|ʑyk6' -6w7w_|-C+##Q~`{:Gi寏p.ǧeԵLSF2DCs'E[+chs֖_dEL5Qj7 m<=iG^`5_{O'W֨@qTu!Ԅ꺃q #=^h$DK`KsI#-h|jtBߝԏ8ļ5tDꨈɪUŗHͭEk6>&9͕fㅷ3VhUek5"|lc~N$0wPm}\vߺc9[._{aix7BxI%oYڜ@ m]~em %nv\Hs!k99%ǁ߁!+;$52]=q#^dd3# olL-c$q<dJt/Jkq`hkh,.ݻm}1hZsndSJװsya+'y2ƙ:{K66GЯ4XdwM$ ,[Yk|RGᙾF2IF5>B&{ZAm\;/0I>,0]TAͨ da+4zNYBk^| ctpJ#kߘ]d]w+9F&Inƹͮy#q@/ǖ' e m.=VLēs+uZ "O?'Ww$"ԏbO.J+#XFDתZ(ɲ.'7l7(KP  Z_cf ~V`ɩeM,f(sM4H o?ɏW8VQ,յ Xw6+yM k>dXu]_Q? +[@k;];(@9b&a172&͡6_r舊 WYԤ|x`]$ \^匏 ?@_5(>;7GסRS\+%c]Z87KʖқBPxBpryr3i7n{4 szed1SQwISB/~{.krݒd9Όm5w}k|֑@pEwPEj`&+n gRpm8>/IYQiX,*HP J\6eW@ +SJ +i@m>G +(JQ)H ߲(J*AE(E+JB,‚x1%Jꨈ_jq>GkyOVc2k#.|GXKӸwckbAÑkr"8d[07К_mK8I7+sv6ǒ+}5=yCHbǕ$qs  s=Z81A%&75b?N9nn]S <qB@^k&|d>R-ɓl;l󞛶hyğ)6I!31 IWңڼn1Z\9xwmgY%l[H{"nȢy/.X$H1vI1Gk_c604f7UFvu {Zs\؏C<-,mah$u,ÁM#3jFރ!s<["aZj|16SZO$+sPܞ߸4TAW핸M`<潥 +~͖GUɍ2&;k q񴼽@< +K.74!Tfv{׷| jR;$H#Ȑ憈dXH+镥/Occ2iKN6iev^v3Z!~+Yq|Em-Z#wHKzV-oUsKOݾ" ii~@?}mևIɑoJ|L\ ck {j$wދ#A;$ xnD8wAlz|ű>lH .-h4F,| +qƸqFأKO-;7P-gO!эvr~crc11 I{ {vZHii[p>Vq WL^|aE99ƺLi$.4cpEZߵV]U8kK$K@";q轸9En<JvGh-|p|2q(%48\B6AQvue OK{ux_)rƾH)pG` à`>8@"qcHDdiJfixeexCZbaÂΜ, m@w''?興ʳQj+.J_bT ŕŸ^Vy(QAꡫ&QG!GebBjRT  +h€9Y8ZJjGRQCMIP9+:Pv",(,@-pXXԨ<ĩot&!ROI6)#"P9QdSrBrT9RAE=S|%R%x%uDꨈ˨0iP;"wmckI&@Ogӳ.7c:6cg=ǖ宦l]]*QЊNcB-IV}HAOE*-H@NeD"ĺʕ4 +TGpV7JwZZ98?D ꨈSjKg }2ن kG.sfJ'?O+c.ۮdvRB<|쿘C{A1YGA#/P,PM%8PArxQTpcKUχQ 4hG 袽TP,_9%@OR$RʞA74mqlV o{-,I_pu/r|i{.h>`kE +O O<2dG<; ;@Vg_8:T3p;z,i )į>NdZlFam\y@C q±@$lq[h"j+>ROY4A㽶y]Ǫ$?& MK =g'- #yZ.UŐF{.۬˭Sr gm#dc4`A߄?H:.%h  `dM$.N@ֺj9Clyqx\۽hMC=$q ?⾳kQO68蟸8qOc2GZH.gMWc|ϙmKZ]7vYijA}m"X>nۮPmp4Jmp!kX2@&8SjY$}8Ìmu+q &Gsc͛ǒ!<-?U6jUI^GK4O'o&֗;ᕦcg8Y&ksC@!Azm`@_,:1>C}kALw3M+7MyM~W*,dzb7zDou֞bwqfK/4.96+g2)8/s o r q35I0FvFc\Mz_2 veo"-;WðM FX 6A ~#vy~ȏ6v6#⅌$Q-ht7k؞XrD8;py\u[76Z +#.9|۵ij:^3{l9ܹy2UG:>yb'X5nM]l CsNVQmb7:0oO_]Cl'mt8WW7T`ZbIq[d[`;ֻDG>O~;3qi]>HrΪs;V`'eʞ Xc~SCߑ /0FdV +ORl̏=med{nd͒m|o˹=+}c [~ !sv7qк_<f>v#w~a.SM[\:nVI/HDM+歠7j`ɑ.;]C{n9^.aP9}M*V.4DSh %%%pY;uDꨈ#cfkkipA?/,dkkIq~|qph$I>I_[##4+ +5hG.P*RG,6Vei"0u|oq?MkA5[Tͩ^ WP'>&n!8ǰ_O$ad:66ϝ,UWֶjWq6ۼWI8p@? +Ry Jv bN1Boa~{ > #1ZX\\lװ/H^|F$r<;EY辠z'(zR=V3T8LI/M鉩3$Õk$ii%cr +(H9@=JJa:1qi|e -7E`$v6=j7/!+OYr6|rc9n>َZv,( JjpG +A(KeA!B5J- +E76'6*ꨈk/P;jSVXm(IZ nx`c@K3fqqO]dfnjFoK@f#`Id0ZeF#cD ۓש +qSZƺ,Zڃ@S)V*gMjsuӰĒ5+f8MtbIXo@TdA=P!KJ:6YX]\c;XTTJʭY"ċR!cEJbP +A ɟ?W4@ꨈ|<cnPj=Wvkeik! />& oh!Awe_9D'ȷ0`bw畿cC@PRĕ#Jr(\%cd? YkY%AjzR%)--IPHAPwRBPBwe@!@i;mY% O`^]ǭpEDZb&K1L1A@dϷy-M^ό5鹮Qkxty1Yɍo<}+ߍX&'wĭ&OL䌁1U GpwY;{/v##Og z۬r4o \׻h<AYkxOVF3ll1xo@Iz$|nfxa-;}A}W_fV,LǗ2H0lߊX(q9Si`[w|u-O/+8Fv uw#+F,fƃr9&kgߺogjh:Zk#xEkiz61v'k̇NEsZh/hsv#YK |ieЯ$$[ GEⅵVh^86'2@btqm;\M +F?t>7{|_}[(]#`/ yy+x(9pb-jg0Lcm4.i{0akApk'ԯQcɐҰ(ґkrkUG9X[c#a$wuhͺzHwX+ɋh2 7D1q}fסɱd/,{u/ք,a|/|8/ +5E8v5t] yjw9sIi6pMWzn]KorAv^bg0 . +$XR {,f>G&|*C9t<ñw/ 4(01LM,p7Hk?xo[ZƴY'h^95 /@bsZMy_=u b! sIBtz\|3H+^Ki[ [E|V nK.333"Nxyvd@J Ydm&2)6} )rq_pO٘ptZZ[ckJÚdк256k#{"6d;cs]мC n \lU/Do!+IU'/ٶ*LF`k-678_ |;MljXk{Eyתdaܱ<}mj+iQeE N80nfW7@4N7=,vSr% p|m.6I?xs('z]X'5#1 nda~ii53p:-szthH5Ε>'1Ό(pEU9ڄx iy4{)[ w }Ba{h^ӝӳ'8[zhWQқѨɉ9kI'ӕɞ*)Xc < 7lM,hK,YW$wDzb,61T9<}=:KֱT{ ɐOdæ7y_ 80I=/|9^cd.XsI^Y qKwcۜQПX00s"kH--kpEaxXK\i\bIdd4ّƻ~$F$c{\_"/-CJXf[v[\.i] )#ָ_sx#,{A-k$z/y1ԍ7Eo u7[OYX쩾׼7^.pxi1ټ*uz8'vNpٴ5DQ32(;gs$k.6x^W,xٴpڲXg^cl87+{Hϓh=kͅYntR#|w>zn<;ZuŖ(xZ]'*wѵ϶ WߕcbwE{X΍`o-!bxŒ=ϝ!Q׆ѐKGkhѤxsO&}9;[c֒O Z DYFG>Ci esO>Vc#Mƚ\Úr{he˕,Zn%`$ &_a9#e.a#Ku]B޽ +U'X7֎BKKv0J>KN4l@%$^X?Vǎ7LcR -&$JkqF ,xvm4J<2qrf2Λn/."WJ4<ɉnH_Qxڬ=X]-q5Ɵ7 .F+5'd4<O|ZN: H-,k\I_E՝F$nZ|id4 48zL8LI$&7n[H\/e; h! `pj׏_#2H#cI k*Z{$fta kIāt-WfeYNJ1zh`78;7lZ\BJdykE#+1T~ =[UK\ܰ=vd }@n™sdn~֒CK\'6K3v cp,)ճ]]--m '{w[$hEpG Q3u2*1/~91/⊩r;Wb_'ھ/̏_f_^R|1%k{?4eK/Nj۲h @ nKpuLhb$ɚ^cc7}c~/ԻXS 2ܲ^pt⽲%$[ǪOD_l=&,c'my{ǧ4EǗU)@ꨈ=Gݧ )>q -ʛ&*APHHbP8.T{,X^BʯU&c겵0ia0E0A=}0YM;I6Iq8F N9,Hw[Hp` <ƀx/IBfmlZ.bk}l32W͎]E/Y$6h)I+ègPsIn״+{cSZyTPK*+̤qjɮBV6P!6oՏ(5 +ASgУxPB]GP+%Q›R>$ԟyh6}Զ/Ot13oSA5cО/e4,}Uꨈ{?b%h5뙱İ{n6,__PvC^`[ vw +(Bn㵯>Lğ!6E E`R@P +l"m)& r (@%bR-8P (>cjMxRHH<(n) < *T\ݬOt +}9QeEڐ@FJ;P_H])TrZ@Stb++ڧr<%{!MܣqPY](E^L@ ꨈw<_-v4ճ#{ָsEoUɒl _IN ;dΉąG7Sߺ=@f#|Am;Ԋ-o-n.N7O 8֗{G^|ϲ{扱 .REy[L};&X.H8__;r+m.OE&6t[XZp;y7`D,)}EPj@)A*V\Hm'rb6D,obxYh~k",8P[즨%pScTZA+˘]HꨈU?Iw#82yh =j߳r4dX_'?2>1g~iȣ>WLRr5MdS_'ږ/2>Աgdi;'LOq%fjz}JE/7K|hߒ43;K|h347;I\əOnwTE>`>`>`lb$lkOQ7:iwR_tO>a5Kuk>װ˥:}a5Kd_O Og[/}a5eøg_tQ]/Id]?LsOˤ2}aItO?i?.'~0d\~]'o lXItO?'~|1f~^j6GOOٹ9f<%@NkpSE\&2x[ Wn?$w("QP<) %2lC~_''x%2,13~>԰L3~Ao)Ro'ږ'̟S~Gچ̟S~>0fdj>Ӱfdi3'LO?ٙ?e2}/~/CvO?~j4i4I?j84Ij8߳4?;'C?~W懨> ?4=ep9wÚ3ꨈꨈ={?ÑG {4Q ͹KkFn@ǚ&{cl>j\GЅȁPNj"+$m{lQ j#^H;GŸI y<{jklC'|m6q\8ViߎUsS3x|..[hd~1lm|RB]$saZ rxc|׿>O HW/3Pfah㔸tfG^:0رY|Xm҅C6w^\"1!JK625%ϪS~-yu rbcN,MF?` ';u%wD.M\Zls,  > n9 pIm)m^sfYblF3)!|wzrƸ_zpޭv CํlmxY&Ԛ4ROЌ6RѼ0^/jsilHH~T88`(v4z0aJ Z胻-x m-ch X_'XdGHiq W?StZlЁmt3xzp2^<2_o znh?y}H{RZtbIOHG4 6Y.\6(osOחT^a `мQ\m5kuRFeG/7l kO=&LC#6M/NVE8s#ZZ8fϧˑ, vTmRM&]{/uZbe>C,efuŀɲ2gp&>$Đ$,f6qf$4yI;4 a(uhni5f;$j(tVc:8MZEOZDl[Jʻ\(Ai b[&|ƻ8r h~<1[+]NhޝòG.Ic@svw=-sILYFe049ĆBǒOeKiGF0x\dl)<6גU~LԊ|ًsqd֝_G~\sqbK|PC#)sDUX+[0́86EG0Тk'Z-3i|$wmv_Mk +ld68^: |ߡkqv O zl< AK^n{KCM9g1g#^%1 U{Qlee>dtfT͑GQe0 88ˉ#w]ʈ7B=dd2)NyZ֛ϯbCq2y=VFG2m{,hznԳ4\}svH>}GKl5hfeJr4y;~w>Akа>.*Z֨܈āT Ֆ]_^] +Y.s绒lVJdb_k1nk&Z\AMЮvQbɸnn>3MPi,O#a%GcB֟/Ұq.If27; ?EӦ̕!ox\wP YV Z[0_+PsV{,-n ,ʍ4lR0>`@h?hkhzrf6YZ Z"hMz$Ňq4f/<-^ߒc;I19 xdjxX$ic{pA.6s3yq.qqlO%Wcffey?,vtf2n?~=9\YȘX k\MY!|s4mR)_sGeY4iW^chaeXK_-;G[+ &hkZZ9IRőbh1Q! wsǪ"" ꨈ]`/ʅM7Fۉ bk%7F Zy~j|6PQVF,ss⮛e@qb4\V$펤xs z{zR,(qZ!s1[d`܋מ ^Fy24 + %+ab ;vBP +Xkdnd--;i7i{481c6آk49?_uQ0=t~^y4Li61̏`{2nl^ f,m6sOϟ.dJ4b-cY7\+saE2D " KZ>iQ34\lIw0E9:6.TQP6y\)lݻ8u~wnݯqz1q#ÈE/$y$'ԕplpHj˘v 4f,2|a~Yh;<5i1:##ϧ8$_|& s^COw#+&6=l`CC8ۅFnK$vm8Q4Go};ދH0q۱1qc]c7;:n-oҽAx4,=69b <8N'y=WOqHGw9ƀMhFf,sJ|_1۞l;<,s4Ll׹k5c{GfßU:dqE$@*1@OoEqH,muUQMW9Έy `;\~9edkm4bl}A偅-W+|n@ǟw4!{i(JZ ǖhs pyqa'p&(+>@nm;=8s{ "gL۾xk +[c?BOuۻDT6U/V$x1m4_$lMI6IZ6&dX{@dXptVMq<1Ց^;}y&_\2 ?wHu[H]hz4dv^z c{Ծq#h04#Z@/JI/Yʚ#~4,dస6>CcɛzTAa{㏢cbmi֟Ĵh +Yahغl.njG:cXab8Z!u|\1_qqtٻI9|{ K}FDC /0' q7sAދ뙣9<9kvnKA#W vc1ִPD$\x:W\sA'm?!HF}={5|إ~$tw,bU{Q<1in{y7~<=nn{<'hvQ$=~śyǒE)p`~4pDKi'Aϕysh9[ G +'Bub|pc,HY;G~31K>݃s{Sp 9,"ùv{tmQꨈYQ1[gW 71KKk؎ml4F:W]={a^|[,c!}D-oJS;jp>?JWockĥru8zDZM\jX.Ȟ8=nץKd)J5%ʍkqyGrWJ(g |7ɰ6yۀ4EǺDDD_),87{qz:|Hsr&Z)[^|e7>& 9 .cך> y#sa./13n5޶^V;G#lAk㙔($669h;#ŒlI򙣉JKd2I! FH48Y_ ӢmpkKDm<,{DDDPk7?ֹ$9.Xc^11Y=ZnL1A{dskv7m4<+&[jϔ(Pdǒ4i"N:"SYp#vQ"ެ|xs5#b3JY9ĸS" ^=^ǴӚBjs#c ɻdm  ~+3WR31s$@#x5c 9w^DEfOtn`Uw)DDDDDDDꨈXҙfa/qnSs2txe.,n/,\w6q}4B}b-=YY#:$yl~;*VoEĆsHD9 = `h/G5A?^tIǵU`Vy (kc_,+[jR>4Y. )sȗg +Fli^cymm#V15|4+ْ#cs i@{v^9ֵ7D_O^lMqvrYNE3LX%J=hVC3qېGOpy?ƻŪ<9.v ,kCast=ky9`gty]z)m3s'd^8ɶ=Αm(47$d2̎ygELyl;p\>ei,v^2ds$q[]4Ok/0=L"t̉$kdTy Yyet uǖ10("qz򆋟ܙia#h,k 8VoypS q w+d︶KH_ǭ˟6>;7c>wG+y;v?:$p>voNV ##Ld7l$X6. ~|? \,htA+MK)8YnOQ{C t/kཏfPܹzNz e5|#R]y{Ԏ,OxֹWKר:m|9<|dfK @Ej4FLȖ ̹h`Ey !*-NV\>$|o:KY+K l}!mu9%-8knn{/4غWpC{7 zzP[儿1O*Oq5<1rü{~e8I7&dv)7w=rA[ ٭ `f4dϐnmv4}Bܽ {QUtX慆-$_Ƃ2MhNLS?sLjI H}7P?RʃnYF֌W5<佤Հ۽aj:T:~a|i2#n֘B +"xrzpmdl8-EnvpХ]!8`FDsKl'ӵ<,~7&H$!f{Z-IVdDW&$Hۏ?A圈!PnJjYSk\=yfw>3?fCX$wxx.mf;k@5OU&L5 7Ո<ބ:^|GV@ce?SEy{ V{}K뛩Zys Ǐg%l:@ĹIJ uJȌ7)c.{Z\ٔoZ O!2d1tٟe,sR,+ŭ뽡NJ$5/֭{pId*gDRH v)kęNZy˟𤓈F6ɲh+F;|9ނOI_K7h G'Z^_ ;dg4fҶ =7*8t2d9 dqJK sSШP;P-,'sXy乶;9+aiAdQ5ȈꨈÝǝ$ss%ߺ6#_ա1Ҽⴴ÷VM}Kt <i#f֛ + 'i Ӣ15<#;/P?"2Hc& &r88~LlⅠ.M O_]SLX~6@?mh\?HX`QH@۾ϢN&oSÚ^lvؙZ<|}׉+q%0xG,/W2FAqpA{i@_Vn'd.idP\ZNzG~ks~]w+ 1ɂg+ֽ v`9k#Հiz[ 6Ē\I?|興ꨈꨈ3`t# YfrۺFLV[v興ꨈr陯]$ȅ|턇I~URr`M .pk@cl/*<(4n4M}E~&ls>0P[ R1eG4D[-\y5tKMVzgŽ"i{C#VH +B1cۙ5}P8bi}q0 v(Hf!75o~8IVPꨈ""""-'3'x;cznƱ?o6^,;P!s68gNڳ~a7EߑO>|}֜Kfcp|k&&.'5VFdlP#h/|Id%CfͿ4ݦ?_4\U\=|!-./wrO$*&<;z\;w:ƛPtXGg9נy3'?&k$Bdxf ~>8 |[$!$FdqY4b.Kmq$mB--Ƃ<:49kӧn[&XwYTz\-ܡH2XֹV||7 j""""Uɤjqiþt|8Oq{D嚯5W#T [dlf7|D5YǗ\i q]Z4E(RꨈSN|8ZKK6Gb@~+ˬ ž Lv_$D` @Ѫ3]6>gpc--VL|}̐yhٱ6(;n< &g1Rc?givcOq>t=Jcx5 hP ;P\m|s3ayƊ+(2c`|Ni koW.lmӎ'Wj'<36>?AZ]J'/ܾE$pkG>{-JPo{whP_$~OxvQ?OC׏;R>j_Oڟ@~ggvPdf~>^2 i%$"1 +@QE֏iJ,yKGc͕vCM."7nC>m"F"&˙rGq nZ/R|Zd@jl#>Q=BL-B\-|'V {H/~n4  %cyXnaB[bPY@+V,X md.CZO>}྇:+sC!dr\-W݀ +h9lS_ y?>4NiN}CXoV uX1i\X|vL~^%1sසÂexdeȎd2<_.M5n/?"X\ExݬԐϛ%c ّ$]Pc O}I!6D9)lcX %^Gpď/\ŀ6$˖Dak^m;QzT9aVp]>/8i8+`Q hitU& #6 `(6vUisLbo q Z.ҍZ>Xq<}kl_m|`j, 1ccnk`a{ -ur(ɈAƗ!_)`papC~Z c5a~Tbs:񍬚g֊5}Y]wG/sO)̲; #~ˆ][Wdr4~+9@ey2DL&wмzVt v4!9H#98Y:I#`)/hyqn4qˈkZ+@ fB7kke {3CEi㖃#O?,΀Y6V  {v߉GzZ6X|;.6afC&gWL8˜Z~ SPX95}`{LhkZ(@jYWk!!n,y| &Cc?LӃ ۓsk\9yw-FV;uȥ H_IjyK,ln/I\o?yV#] 6;X+ax4~&caѲcV8cp /օ-aqBƹY"""""""ꨈū`6#pl{dXokB,+ve憇8>!HpH痫+֗ ֆkI異_&F_0m=hqmUZkSf6(k55Vko&^+NfM/s_#{}8^E=+SH5]COd2i٦0$>/[]pɊFLnd/a2I"d{c˛Wowx{3LWGHkǀ,jϠ{e^}cinݢjFFk@zAc{z_YлT4@jricЏoxq쾋呏S r9ƍQ$mhp=W/"Č1-Ĵ_DDDDDDDDZGzf?28p^o= _Ӭ6&_!?Ѵ}7C2Aq絮%I+jꨈ +:Ρ'Fy#q[#mvhuqKw\d DF%|tw#'"84N<<y>&,cZ_@^,srHꨈg'<ۆN=dm + +{PRE#t6Jfl {ꨈꨈ>#D5cCw`ǯ?- r=94yzn|%Ӟl 6>ZÓLǼH[vppuG,1\\yg4,pG/c ?{N [bLOf1ѽpsǧ+d9RꨈEy 9/v6=#{ԼXzV^>s^Ke%#8{=@%ki0;cC+H Uv,ڶ lfFͮޙ!k܊[6HnFFKksl!nikX1DwmgEiisy +QꨈJQꨈ{K@Y$ Y&8>}k-2ADIHݵ@5U+t;gג&8YOˌ="Oyi5s?J""""""""80/6lΆFZ;}yst7<54' ɑ,xٓ $cٽ mŢ4i\IsFFŮ-utz""""""""""""IcE3 ts^7cC} $DDDDDDDX(,-Z5jTUw!Pճԙ6W mYC46֑_6MۦbkԕuX8O ֈX$k쌍}YiXkCrx{:c4F9;Z\G7?ȷrE.$L]$z*ꨈê? [I$lq3绷OysEq˔Ź(8 =\رdǒ5wZ~ˍ"ϥ[=?52f7`i?AzQ핺]]z-&8Y9I9ፐ8l1HUv4#$-gqadw7̎2%DEfL> Y(h"ϹE^ W9k[9^-Z4GнÕrC6EӉHh'4fcC;ٰY{к^DDDXLXv, -FO4/d1 p{ nBxI/u|Ge?6Hْ7"X+{$[[lE/"yixH>;p<Ni+ԈWi-1$3d m#y>n)E7hSe{KoI^苜\( tkk4DEtܼl{fUcǎ;A#]U +RqC$dl.qK _8GA7BşYoŐS o2m=Wysetc\洵yE"""UH)#H2aiqoGm@]׵"""" ꨈMSN-] 6}AO,\.&>+Ձ0d@3w86Vq:HO 7!ϚaYK֗Cy0r~IF&xLjupt!η/F4YŘKksIa;=VA_ya0@ m}4|\<3ؠ[~TkY ^7& to{slyaWeI]328|HmPtq4ҹkXvyq<;+ofh$ ⾘F$$ic^-s3la[1V)ie?3Jό u#Y_l;#6'[\M VZU6{GkI*mtHeΝZQ|r[ ?~O*d˧ffnN8`kG+ncA7ͭk9sklmak⟔cBcgA>ZsAۧ÷m4:kɒ`紵;`4 +ĽO vǷĕĆOMYΎK{#,h=BFK(Rj397i. x^tč1M4F1&%;/Em$nk'[8nsג&djc;!1Ԙ5!5);_odK6Ș@{ak4Ɖw^<|)2rflC."WD d$%ұ7@7M$=_:wOZ€$$ȗ듈pNp(|Y")̇rr<E>uX&iWA3X籡7blW\ϖ<8f0!gwiڀρҟc!;dx%MmM :>D8k h?p;ln;Izҫg,3/uѵLv:Dr<cmp;A>5z8?5;rV;a!D=ki{UCVUy-FhʗQN\C%Ů{$1(.4y-,yY9QtͫnH}oc!c^Xzg6h?qϲ 9q##ftۃeaywu +^eΏSҋΓ%5 q>"9A$ 3\ =ŋ+3`"!fH$V5иwA լ `B&HykOOcxhn_O M!~̃5Ǹ9w&Y^iFTLAayGo-{~E49H-4H#h9^1Hĥk83!^3hYE{@;vV@?>h &꩓gk8茘cǻo$wY֕,osY|vf 5@U_s=)ڡmܫHRQc9'In|atEf>n]y|5IF^lOtT8EعĚ}t#6f =)$ѻ/X|Gn79D؎מboh Q*u،cHP:}e -ql"Ѱ3`o*ճ¸wB%ZZ>i5~s^ØאˌTnvzzկt:{ =|8(ګﯖt#`py .%.=y%$ B÷0zy`zAa kz8osg}4 <17!;8hhhۢ,$ y{`ܸ@0E}U{D >i؛fƟ;@(8zy599:@\ 8փEl#ddz^c_ֶ` [,ȾC4$% ^]zY->=M|\)t34o;Y)#7*]G{ۉ={x^: 1CdhY9G8_Тg@+bpoR XS> l9=!,l@w{{5~4$lF==Ll0K_ESЙj|`oxn~VEZՄ'(G3g,t19!7]ױIfc6ð{)wB&f RJ$X~kǖxQ1_.E_?~;QDx&$fU9TyE9s$Ach>9^y<;.9ܭ9=sB(P}fa* C$-pgmn`h,N~߽s]<zNrߺJdeVc8Mak(=hks*Y#{_ p|ld=@4,p1j0fGCG x10x{ߏ`/ѱ8ne{ۉ.'o(ꨈ(&G/:N03fCтR[&vto;>׬iY,B$Ι-6048}!>)"6u71HG{<* w疭Q>W~V%2 XšFD̈։\hY4BDDDDDDZ?|Hyd0<get5 YAXx5vI6oYwMnN?bfW iva!4Rkx9~T -$e` x^r5|flW F4\IkkG֮+U;,mƎXM:vkU\-sM<)6`Nz5[7# +,xxsO.ik ÷ bZŔֹؑ_oc.ᄒ s7^ϑ1^tGZ8\rz+59\_c33E~psY+"{]@yI"=iluMO+N'v<um>"Onlln).tsQbxHu"/$k,s# )z]iGk,3X^A興ꨈK9zC$LE8/kK| hs΋.TR4K#{6=,/2Ds5͍XC m^ql3Sqxvg6Nlyecl$s˜. PZxO&M6|'d2ߘ picx.ۃzF>ly>(ȇā;ɪ :~Dp`ǛDŀm-uh(zՉA]٣;ua3"_lߠcchkZց +epkIp4>Gqswc9C`)ؾ,zچ&fLq2'A# vۃ@h8|=3'Md lAC{ևa{YGFŧn~\ҭcBKlu#tVDr͚{tB]G)Gocw8IE~z I1d`H <‰G:Rxk*|&+^ߺn&SW@6lu\l$N]^Cm nxW%؆V8e>Wfju4(]v 6<:HǖGyif٭<)ï~Ac'04084 ڸi$aF @Y>f ]}3!πA}+åD9O'gd-{}X"W+9Xy7 KD67M.qf~3L by0<;.N6^6M,~(hleݰmsתcu|9 2 oc-MhrN`a#o y ?6)O,lZc.s%hiiZxG'FGW&q2q&;<ƣ,Q(FL}Mf0Dp.n {d𑵮bl}$8b`agW+í~Dp/⺡?2깐(Eή ?>m"iscɎ^a.&MZsϯꨈrA#ԀO篢""/>^>x ȉl<Ǝ4/"/ňK鷩n~}XJƸY;YW?"c˝Zٞ8Ni"/aKo -l|HC@s> ꈈXucƅؘsߐ-zLh{XH夊4},_Uv;#e-iy\D1˶{_haf;q5>,ꨈꨈ'T;f4P&>uNYZkbH}Ԣ"""""""""""׹$X$zSpkC.,4DDDDDDDDDDDDDꨈZ.Lh ZܚZ#P~~~K%c2SCKm@4|9[FC~[v4++3pJ mԭVvK̸$s!+_Dm~ ͩg7M|ipn~\JJS#UԦ"6GpSp/{#l;# >oֵI/kd'Hw5wCe `74i!|\ߕVݶdhbi=354Y `uzߤBce V akox3CLHDS)>y cb\(~$],"""I[ K@kA$W>7ː}G<ʋ,`&sAs9U^WڮvDAwwmX^J7sܐX @h Ϳ_dDDDDDDDDDDDDꨈ x }*$sIsWu2ӎZ1mՃ$ 1b٭c,ƚ7^BLI1'dr>&vF}GcF.CZd_&`7 +Ǘ|hX!lؑ}K5`#yaw85 '߮ t>%S3Of:z[|X& @sa=Q28~rjH y9ld֊hwLW^3qPN퓭$x!-;x]DŽ {QM#=$ 7Y~W[Ȼd]^ջa%2<19? 84͒[gyo?Bݢ"""*IadA R@o'CO M[*6nc ,֫~W/דUqA bTsB9A,]q>V @$ mJ""/Œi LW}ŎުpۇfOy4[NLw {- B$vT6GݞCOͰ>_bG,CCX[S8l-J""hs ӚAA+;*V5FnXwyc8rGu,<- +-Ќ +<y}V>3`? 0>=@$?iEr6P"ꨈQfv6]Sli|߭xM.(/f1΍΍O{A N3 f.,"7FZĒ[ٺR~i┒&Orm?-m#L͍3kE\X`.bd4 J!6;K"b)zPԠOhkG$8Yds薉#Kdipo&cmwYbkeIsdKea@H%tM#D-a yH8D`E|0 lƊе- ? 7s-ǒO&<;:+M [ H{lJ~s&s2gUcAׅ*0AM)~s!k2r\ntڇF hI'xqr6@$FZ]bell|,)u+u6M;/V?;l-"9DksC>&3437bHbckkv084n hYfs07@y0I$QE!.,8ljGuaj36&Fqd.enꨈKDi4:/-|Rs6[̬lb4nmל|/+dzG1Dx&Õ!͝&tcV-dw2i~m&\?J`ܿG'eZ'~NO.cH`];/~>v_"ˤ?ZjY,ۥ~cBygYj~~_j#~j?OQ?5ҧڈjSG)jOT}e-CO}e-COiz/ط+ɟp(Q^ܦضn"\Ϭ Z}Խ?3鸹0?;k_k|Q9l5΂I-5qkA&Ux͙WF@_ [brM6 +S`Ϣ>.׶Ww/)$٘23{dg9vqu[} ,,I%GY^UٮlQ_.>Vxhm@ &ɡVOi2}rpdj1VcŮhq򃼝G9Ѝɍϔ QGm6~.tn Ƒaϛ786Fm[\4M/>>24W։x{\<Ɠmnb-6sc.*\>雥9Βf*H .E,y6Hܦ3{HEY#gI@ $ǹ=ʧEICtO-- S+#_/~Oa9ZX!ss88S(,w[Hq9"vĖxU3b\Ƙ2({Af@ca7Z)Ctm1<9V@wzҌ4f6n3 >"mIW~McKsHAkI/v?9}+/TQjG$|'Ќ$I4(Y+2!lNJ$9$H&уӃ^h]۳ ׿M[;!7&1-x|"""""""""" ꨈϟ]]ÚmЃ_h 5V}Mz,2c|c.4xq2h|i4əbc$`wOn[? }ɸFg^w{vR"""""Ga.a84GQBJxĐhIe ѭ~hƉYN ${3{{Aߵ o˙X?My~_4\mcO ܸeVkI1}sHÇ/XQg02fh{Vjw6|ۥܧezh\ +^DEv+75$vd6ݓ6\΋wƽixsݵ`]u +",Yc $䟤/$V4+|mm=6 `?$y+)JMЍ]u4[ =Ϣѷ,„Uaykq 3˄lq]D +a227?f;HzRXuZ$?Sz+lC˜mPqͭZ,eoȋěiagiGXc3+{6sG$Gq:~V=%kNϞ7-xOcZ^+b-Bn;_ Z/kidّ+'YMV.׃Cס[#i6(֏Oox0zm;/dqpzܞ :,[!4yEvֺRF4\8hh/uN=>#\*Fr֖6{Yak0a$r+ n-/v_)FS%Hn굦,pFSPCOqiphywP<_m{U5XGVira-c[,еݵ=_y ܂Es@} }ձ7U3q|99YcgQsl@h~W=?P:O(mI(tp`4m+ݹf-;o${O?kt;]_/7_\Mk.G7F3{{65}|pO\d/kNǁ08p +^L]{%a/̏D흷Ӏߪob#zs{_+$@G+,sG,`|4. q}_e٘8udFM#onle]vy5Gdv|YoQ-9ȏ1ȑ6K2 #&~ˣiedOi8V:V>.DxPK6;q۶7mAG5N=VEZ3%ğ'qqru\ jWZ5$6FkoI&i閍Wҗ6GJ~ŷ8>)HpH9AIiB_u/;N_;oR=h䆞^=]X̬8Kv,Dv@^X+9 u]:l7)tZ;Z0Ijp`~&WPfXHlsN컃wm5 ^,vo-qf!{w7?煱d3<to$<_-l2-aF ~ W}< \w4;PxǾZhɫv;plx[ky_, v"15v2ApquW/lŁ|vѢlY%d05x\W<Dt~\'2ԉkw yPHq|Q^؞ZۈT+], d;bưNporkxs$oL,h#x_+0ۥg*hFI3nZǝͪE+><("7DF8sG&?Zjsj:#24M,L(5>CTW_Hφpl33p 7p- 7`/o#F$ŗ0[c>wԼƏ\A1y.{~8H@̬%Xxpk豵G6 ީ 7ppتK4}CT,:&M<&7텍! $O_Kx|?e\r˙6^;]7K[Lq+6?%oZMo蟭z_ v<:~ +vd0v<_ -w.D1s YZUYm,428~}m ldŲۅ]ҫ821Zf9kGpJk:gɱlkZ,Y]R'X9m mx$z{^&6{\cc8ppFA,pB(繁V_< Tt٧=~l 6j#xS Y7\F@;bڄxv3'edE/ \.ŀGx|(OCqظQ#ܭ~X|`L/oF漼pMdg<5vG v;{#sznH߿j[J4p9!րAAPŚs8z'xGؚN {3}l>y_:lo-e}&-3LiDoY7۰F6Ӝ'zO.$_X]C?\?y\.-\Y""ꨈJ"("""(RSy$~WI^>>wfߨ{Ri ӣ,k#9s/RR?2@4c|c9Mz;W5;=7:NYnG1K#+c!דzΊY8N Xֻcl͚dRJ"""""""+ub$5S+_A+bh)J""" ꨈ^;[Dpp6$6Mհݮ upH /LRv"G!k1b4Kwzi|hPQC,5/i4vF]NfDfphJqۅѳݨbGx/d=,c-N&LN",b#y?^s-G*FǓByXc. }rkۭ?KfKzovos$<aHgb8 sԲp0hpwZQ$A3$- ǏEVlMFF^I,vl :Fp@C{%eYnw3j6 &cdq4g_^Zjב(hpJ8?sq\ {[\ _i22>6t鍠~녘p T;y}^r#F7P6lmW<[# zVu, "^mxR-l\ca<𾘹d0<ůkMFcj8ec@=zWSqd31kZl lbgjP4GCȺ[gZHZ9>ܯCucNh/ed]hdkGߵzړbdXA >dYHbdsݡ{} MM.ƹ<ve}Y'/, z1dА-s;wN"q+~y q`9Ǹw A;F.\:f;F`=1m_CSdL0F^\ ܨvƽxcpk\MMS!/o^;`%vFM5 y"t͕6Cbw^:g{i77Ե,KX5|0Vۢ{<ꨈ)bn5hw'H <c\QvϿ}|3%ҙl-m@h@J/^q \-sw熕9ّdf}c~1HxnC~lmo8e:,gZa_u6Dygc:IƿupP+ǵ/h"aX,/{U5hąƟFt b썻H3u[+d@w]1R3R+nqH$' u} 8QW= "ȝQa=H{f7Hԡ~S.<+\F.ؐ9h1H̖/Xf_ 6`cgdEߗ2zO;46>6C]Lh +qQ>Y87'RaiMUCy5Y[hs7[Uŭ䍺NkiEwi}id(GRqC &+C'=Fs 8/fu&e#쉟d69۹)Z4>2EDK^\Kq8 yl8eÀؼ߱ +~Ou)"6l%;~r?RƎh`ttmqT|]CR2gp4V]"iZ t=7;,D1qՙ+eN3!떐@q|^LYȓk깏mv4?^ #%OH<8ZC[FFdRLƲ8l1%{Ыek1ey]]c& ߍϧ?̔eg 21bdt- s[ޤעgA\x&x.gZUsV}CZlwosMLcz|bP{}̳n~ri$~ lR4dOKO@n+Y̺&p &Lb1Er0^ZBWK!Chr\A7o>0diY 8fcި͖_nW\ts0OĽٳ֖:@Ʋd dro}֣ЏZcy_?FDnwYe`ݹi9:Vcqet֗씸fg4(@@Rv>&n"s7_PHoiY3fǕ%г~Ai:^ l~g8@^YӳpVCnsˡx-86(~"{Q1hIlbɓ,Mcl|xJBĀ8=ZhZMXK8$a3Bhs qkGZh5 dz7mgmlz1M#qs1{[[akdͧQdG #Kmq$9oebsc8`%¶P?HZH٧ xP&>|{b(ץ-Vk)hĒB1I,o/W& :Ht2ok*>G>ߜqv XO@my^5˫k,ik =vTxkJG1a +s\ٛ o]<lѷpb4UiΚG CRc$V7[=M}U%l2UqmQ""ꨈ#cI,6]eYǪ8Y44]~x.cLn )$n7[?Z~}'‡=nD,xv~z|pcLMm^4&i2vh@O.qRI%zVo9Y3Zم`H>); fP0bAx- h4;V:~#s͕G+6,8!x8kX({RI dVѷvHn6S@G v7nƁuW@wT~4C4Xif $-廉.g#E1q$tB=9ha|ߕL1̄|:MWոGnqmsWĚNpc,8-6d5,bǂ7ELkvֱ m vƀUPqkC{{8Q9@ݡF=}mMwPX * 67iЮ{LƍƆB,Mwh}WŘpPn'Oև44(_~)FN>`h&Iw1,pWe8ٸn,خ8ᅝ{v6ީKbt}#vQv}+lX#X٭Ƌ1mMɲh{ +{CD9Phhc4vءlj,i hp=8P1a lb6mi69Dsg8b1aۛrw zزA.ıo9畟ɢm,W + {0=œG5e}րaK$D@ꨈɐB"csCǗhg q^ c=0\`:G/y^l3  ˞$B5O`:fʆhYc h,-h򊿦I>@ٯa_#Kڢ7 jŏKIx10a=3! }d/zSnF_l0lD^G߭|V!ypsBe ŷax7Mug iX{KPw5I~YŒ%HXc]旋U<-GֶhTj׺hZġ, `iOnw1px.,<BS>m.2m!\vgzOM^ϕͻO&^j'IӲr-7uS=}tA~II) QQ]==[lcE pBk]SGpNL4Hw>Vq5 q07xԷU||rd'(ae$ySm~^'LCЄ\N|G>Yr[E|Dph#sww8s_ +Xe+"_OJ费 Ae +[3pp$6r,` x +,|M35MuG]-V Mrsښ<2K;Y.p;umؒ3 G-as-{k^=G +\||8Mk,GdozEƉ>궘8ӵcc;Nlb*'XJ7tstx{\u߰ g6ItQAy\Y$dr;~3LlxkYE~ ;\V߅Ɠ +!|2y\_g;Zе#%ׇ|`A}W[>tV}2@my|G eH? c$1=9-oĀk} fHv<@UGN.cw=2I"Ǖ7sZ>&ag>w KI6G|N'$~/6N>sK;kbܚ$. +tc9%2rX ٳ9&M.HrOZL0 yk;x۬BxZ淠|nM IG`1-j呐|m^jm)<x5 hŧ${4glٍ4FO{_Gŋd3LgkP}<b-״L @ݎ#xq"{~*#e&"6(}Kb $BCT@~7&DA!h+kX΀t#%lp_gȋ#)}_I".c G  x Ɂ|GG.)=ˆv ` /,pASlHx/^9 9#/^Ӡ/sq}ۺp7ZiX&4@hd &> } nP1戺ޛ}A{ O~VCGJg kղPk~$]/.]nM>or cQC#fq?soc@IR#Ncdg[/6=O6&3(]./qWh6h8 '+:Uoe#z~QˎuCŸ5ܖW3/p.ѱ2bcUSK WƏ6CZO_CLd3pk˚XAGCY %4k̡@c^mgA>sI<ץX8XR5r^ аZ.3qVۻn@ͳQ;ϻ~SE& =teC\d 6=nj6Fmx €t/|53FbۘZ+Ofhs#voc@D`ݥhB,7䵮cs&,c\y{qKcC&f.s}$glnf1` 8V6 ^ؙ[q.s([KzsiN.XIuA+ؼ`A 'dMӆӉ$WͯtƱ<9شķ!lA]1ssHjЙ&>>k$<vGu:N)8&v6nŏ +1Md$$l"""""""""""" ꨈI&GHJ"""((ꨈ5uH,E sWRvn{Yw#O&_z^?STMs{Dz7cDDDDDDPM !”EnDns[ Z?6+%mVR xw!J";>9Cq m|Z.";1kK7DDDDDDDDDDDDDDꨈ +LJ e4abr\\A.1'gDU#.$t8$9E&=EV'($`h۝Iwiwx"s#cK kjMf%n%p! ?~𿈐lQyid?Q=h%i+F\\NKsu98cB |f;DX5tO千佭h4 UgkdKX@KHr ƚ|YVcى9m9MoPZGK^Zo/̉c HCכ3J&p +v4hۉ49_]Ct.ƚrq0;84 +ꨈsu# X#ixs78XAUY6#Z}vDGr=ouhDEvϓFX#C`oAϲ/9͸HGvp^aV#|]* HZn|z4YQXdnN"-v̉%!#074 ~/|[(l@»-*1_ɚ|Yc쬑0D-Vbr]qHZ KDNjp=׫XM$d8wF$}"-Wq0gōtINZ7p]{/FƎ9 tlc)ցwBEXcS~?4Oh_!YJ/&ǥ%H=\}dZo9H7yڐ~ovcqqDDykXegY".! f|~ǫj#Iœ%ѹ퍥 -$}*[{ݳp\k޻Z""""""""" ꨈ[ X!s#ӞAAH&BZֆm 'YqwMMl&P>nO BuLm\/N<Ɉ);- `/k,F& <}LQŇA5YiWk(uL3d/vMws b 4kIWCa5×E?L/갢kt\)l4.$dkX35,l%~@00F6<9m %q?;"3hZ3/Q+Z%sb\ [LE#1֐l4sUg[4I>cq7|e_lOF69Dmxa@w[Qcbsch +pߟp')yR3dq3id o{\2É^cm}!Zj'Kc,Equ#y8EۉOiy>رdeŏ+',^-B<16}7}U͐ڷ"/.)ƚP͑=ۀ{;En$67QH !c>,ұҼG8l~@a+9&${aӌJ X׳sbxk 1G9k\{[UieD$2OynӳhK>PʊnEVKNi&Ljc "ˉjZp:f,\1 W`9 EøԀO-_GEfx˧0_qy{j+,=5QA5^/(#eel̳~{l}FF "cwK?NXҸ}}\[j:f4y:Y%8 ͸ +zf!kVpˏ:dk}ÅR$f, >lao<V,X q7֏b(Iw=m׸hǺhxgK)8OJMpwɺ{4~eОWdDG։< |1<8cOouwd0A51F)eϞkeDs/E4Kl=ΰAp8>i 6DlkG` /^>{Cr"dy~tX׍:pFdcCEzz\A4Y^,]rF72!DXok~pC+6(~]ٸ# +ANk"*2\siQ1Yhmlw>zFؘZ)j<4py^tNqtnQ~!nh<4cr8Őf8`74MW{#4lWI4u[d7/pᵲ$K |/pfld3$s7-}_LndpuV㷳HVz^9 "C(-T/[ Xrٲh#lhpۃkNL^l80YL1Z.L26ٯןX2갸 9X+tM"Tsjs~XU2?&49&MyuO=ņؚ$ac"G?%{=E(c{m,} +䆸=H̆mycl.ObL:v">:'Il#18!xi𼲷vYݎ0[Y;u{w#FZʲ[ ;F sr]?VBoLopv}y^DDDDDDDDDꨈ +kQ=xm 2k@lldx}/˭pۍ0!lR۹4;syu7௧4NzrF^ݮqȫ^#i41d|!e6pV@Eu* A ۲4y#;Z2}Ōsjs-cÍw7sp JkX;eyʸ߅-F484@aWx ӣ1 $tI[\}v~I'sO$g48VUi-)Jh.iW5lK~Tk&t-lLfcwI<<('2Jˏd -h8;-JtGcx㕎dkG!|-1%?2MMگǍ[2<!+ˤ@ f-ؐViPI;i1wLW'un$2J̍=4{ KLGbh%Ҹ|Vxe ڔPֆ +6Bֽ"""""""""" ꨈ +O7"Iep:Wۑ3':F1gi v$ů&|Bҙ6n;&K=mn旇OLu qcsHK<ddL$6Aw>yy|ӧIrdOo:6i>,覗 w4'j)DDDDD^]GMU .mѾ m?KO\t?߇M KՐY>Ã@^)juc]+c1c]d>9 z5fXpqUO+7Ryd[ecXFO~`d.% w'[E:t.Ēmw&X1iGvCZ,""""/nz/PK$ik%qc{6Nܨa~dxXG\r{&;u({Vh:1sQEM4˜`W&;pb4\ֵ@v^&uX-FȦ֝'L".{tt;ll"8 %ot<9p0`g=;_z;^DDDDDDDDDDDDDꨈ)J"""""""""""""""""""R 0$썢I6pgm?EDDDDDDDDDDDDDDꨈ-"(KRs\@MrxH6CInkC &I 6 R9R-J""""""""""(Ԣ""(JR"" ꨈE6QF2bs.SHifTYcf|!ZsZlW7Ę-;d9o 'k|||G3i=6`zj{tBFFi5bq 'MRJDdKM;]~9˫A cӇm=hZ21D$kk!i-ŦK;y%$=hI<X>!r1kb 5gtM#DsM} u`XNGU81bdBv?m $|M/u |,߲V+փ_Ɯxo}6)2td008K~!jQ Ɣ$1#Gyw6Geױ;Z$Ď*aɏ2&M 5 +ddljcIsUKUnV9 ^$^ߚh~Gd5ǢesX;@'rV&#;A]v#΂}N0܉m{!swԲߜ, +zq\:78J68"k> NJB$3$q2%,n9}#<6Afʽ△+)XHt9Ѹm< Yq Y8vɺpX}`kq/g$r=k;Eɏ'3Ɨ9 $/Dnogt&is7h{8rY!|[~ivrje W`ph=y_(A.3t'MǦ[n ɕaV?y赮0r:6$"֗5Ʈ48@Wњ/v+I21sm7UϵR-vɩ-{޼nk6hsyk-#3z.|(Z}>%:4"M{ ytL2׳qq%;<{Ygz`_|Ko$qc  =H[Pmyt5ғpkZs٭h֫%r8,.c4ZLYݢC1mq/۷w(yEO+ .]8qisxWNG11-96g>EX'-N 9bI|Ŭ #M1Ǩp7q W&P$l#D]@оil+[ŕtl cKA yIa`G,qy`k=|+ Q;D[KחcZ,K끪Ũ{#A} +|dQfIq$54{/f6L-Ŏ{Dej:NkF>(Bs^ޣ֖!o?gj8=Ǹh% `:]͓e\cg^xymC 86`x.=Z/t2X9ۘw\#/,->'7v%kIn˙Ǻ7=Hk/Q KtOH?pnI{_HꨈI P)H h[cD'd@XN86h.>s6ii xv+1\ñ R6\7ۋ^ a+?NLFYI=bmfOSy_4ZIkN>FA$a^>y@r({1-Mw~eҦ?f5)R)cnƻuw-fʋC&cC#agH\_gx/87xK|l|&`6y‹#{4Or=-}< Y! &ɑ(mg+q9scqhCITx>T:|dhrxD.8[N@;IEkg`27 zײ?lRdHT6"TxV<<('Dևmc\O'קefچYEh,ŭnşJGte nփm~Z_8񙧿?73=&̕Z iH+Aq8Vs60 7_'-\9kK̖nl q>&6wf.6'Ҿzs;ddA c˶N/ȣan22)vgz`z/V&s3iS1u9t='!k<_7A/R9q7BH$%t})'zƗLǻkOunFJX|)Zf%KW/Qox| Ӝ>B̦|"+-7{4ӳG$FH,޽ +9Ե>6J؟O f齬9d +۳^-I ?12M֘Kl&n"iږylE&lWFh69h△T3gGC3!([#C)@v[pԾ͕L:y7ȋ =+ x c<:Bh~>F+pll6,ݫgPc`KI;`.[Iw5Mx4&Ɯ?H#%W-NJ827CUnȫ_} g?"r%sĈpzfϬ`jP@k\F$k\maEvDq#@Ӹ(h{|E\7 E#essFK(lzׇ$1;衍$L=[vCdk%~Na7{]wap)h`,i`&~\陭ɑ7 ցU@qdꨈJRǛ"$N;]WmwazxZ# ?!_q۲((˘vDZ|o-pPA PH^6،M~#mPОQ655 +fJ""""""("""(+_7:^Fcyۈ /#{@R"""(R))J"""" ꨈɝçmn%䆵tu 4ւxמ_c&Iv]qk:u+rV9G ?ś]ObMPp3Lj~VFx<tNh{elNiCi7 +>V9JhWVit198GHqmy]uо:# +3/ahWWLLh8`m#=ֿNc~48Yo|f5cDK]hsvp)Ǒ^}+ +3L~#Dmy{_aͦmpvܓ}dlWNDʓvdqnṡ>ʷCɲ%k i ;"؞9^DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\GLĝC,c?s +% @黓be"\H@DDꨈ);)QJTP>IC% 6J"""""""""""""""""""""""""""""""""""""""""""" ꨈꨈꨈ +endstream endobj 68 0 obj <>/ProcSet[/PDF/Text/ImageB]/XObject<>>>/Rotate 0/StructParents 23/Tabs/S/Type/Page>> endobj 69 0 obj <>stream +HWmG+`f뽻 N| G0cncb?^%u*Jzmzû8yw>q6tz.`զBK)?'oXmd{@Q#Qkx_j>O?%Ï1B5u>4Iz=O;;-0Gp47}r-Ƙ5nM: (e/X=> R|fukCx9O=lJIK_"4RzQH 0:=B 0:i)!Vwg.]|ԍ1ediNg-TLv.Rs2,Ɇe'=U(pYW̉N>PH TH*V;@ռ +ZwfzJHMZ,wqy:c-z~-刷C;Ar7ݽ nG̀t<|r%IGпVBPŎS/qc Tc/XUU(A!4 +BMA&O2OpQ3K\=;VyH@dd4Z:[nWA2yqzaVHjWLGv5oH:A +.aS3ڀ 2Ɛk>2AWH=adE + Fh#I tk?UksFKtwY,f1lA2nT;qm6l"]'y9w>hk470@A}Rq}IAOU`uVc=Wh6+bNkM=")FLؐx}3 hJSn/zB}CؒrnxM4-ٸDrbpH=`wOe{IG2TFUEdR=Q09jVi祱cqxT흜`2'+ꪮK[ B#Wz\lP:DXez1 ڊZ*>o.@R%$+~a :A5 -*ɎswlAŷ*yꏶh7(FOX4Ͳ! bȔ;wqTfԏPD"Ґ{[Ѐ~=MJչ3h֕,'_:ц 8vHMȫ +!/[ʠ2^[QbiOMׄ :Mx2IGrNl ZĦ{Vwd`gdv7 «3O$S}4d PktBa<_V%5|GTXi:mEN/iA::Gǭ%+btL)i4~rV'P%?ˮ7r>~9-Ҙk?'o x`U#\wߵl:y~}>ix|''Vy{\!yⱸهrkqY$\-ER0h~Z C7,É5xoDF+͝tJy$L' =! T %pq S$TQ1mUV-F>\cޢv8)ll*a' +aάGn%i$TRf,4zpcYAİ +Y2ܝEnDZI||Zq\\i({K(01 zE+, q첚V[w֥rN-^gw5;|${؁+4UT_t>{ j@Z]J 7tȲ*V 4nQDqorB cH".]X5&q<16 :>{0kNJjGo>:LAY=hb‚ՂC$*fgxYd")f8Z5JԸ?'U9$O3c%l Bc.ĝhܵ"6o^ྨ*uK\;/h&}i`9[͑m#+ˆws ?yTw"6-SMzH%W&mIF(Ud+_Њ]G+YUQ7h1u{TG^E(nAd1cv9s-6,FJ!R=_pDb0%EPH?$ 9ߙbnjAi^ V/FK"D.⸺'kl'^Nɮ).khAn貆bZ&r?תo0E[q4}BuY" +@io uE8sTR)CMB +6J6Cq-H +*8X\(O:ŏ* Z=.x.Fqzdr|TC3T㕵\f1bO*"oBa8m343&ñ&hҪv |`m<;77=SgrPŇ|)E˔7W<:ZeD.ۦ;u}ӡXW;VsҼS E2(`ֲUk*tJy~6r#x_.萭" +VɭC-7I<|fMz8%e.4DY邤sPy-JǻŇE&HY1dBVHyӷq1:=X4$ sk-VN4'BTj"^P^? +c׻PAȕ=*~lnoE@E;TED:8uyP마TNTQ)Iϙ|ߔ XU@χyo_G%}<FMGAQ^χ$3ދ?S xz>Hj1Eo*;NϢiSEƎ*_Di22ȁب aGuO.})rmYl9p):=-6៿>?~~ӴLvukeYW +_? +endstream endobj 70 0 obj <>stream +JFIFbKAdobedC    ' "'''''",////,7;;;7;;;;;;;;;; Kb +   +g!1A"Qa2q#5t3BTsRSU4b$Ceru +%&'()*6789:DEFGHIJVWXYZcdfghijvwxyz?0lJޕרzmkk,݁Ǵj2s^-m, sgM{ݽI37N>}U zO:KKG"\F<đN}KumYN""'fm8oQf:2Ŵ:&R;zx^`Xi, +U$=pz/RfZlC#I`GGRdD.uՍm°%[@::>S'^]X5np5~g@} 1VUۖѫrp~Rl&ZWIR DvzDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@(U7E֜C0NC~ |zms뿢uǵZPpnm|5-[wEhm?WMgه9C_o멖(]zoٵeM YIRGɹ9rWFf)j9޼:ח~B=JYy8ҝw>OW ܗ~ #~d~ղ꣨X=ڪB:h\wف=?)7nkRcb/w:u+]Cz\*tʶR}h ZߔYMN|a[ֈ=z_ֲ}m8HTkR{ld=^ܸ/^=HDz~әonA{ƬW@m@7c\5zF6M>׭+_C**U198''Mf2-lu,JcAdr#@@=OծjP}!xzЩc2[[I=?eۚVue['==9[-,\?->#yOohpnϡ=]]s߉ߗ^]ca%7V#2 j4Aވ}7ګű4ːt6{lbݽ{yw:S7̲3Py쁣DѷLZ_pVJϑלMzG WZ8)uU*Y@v}/Uk;G wY{2 ƽG}}I>sʿe.܃O5x#EGqOiz>FMWוliz l |I}71ꡟqHQ9:Cu"0kKXk~c״It˲gUPm8I;Q)r=ޤI28Vj +k `OGn-J=4WdUevYW+WfR؁g/7"f~Uj}RͲG=Xȳ*mX AI h{d>.FBHl02{PUogvO +otO? :oGA?7" ΛZ?RC#?:?֏ԈΏ2E~֊bʷg/g9ކ[w=S|$P ٌ@9?D='d'_'_+ gf~y~~y~~y~~ysO_/ge_9_~1lywQG3oeoYxF7ov^?Q~:ۙߝxGSs;?ng~wd~ݑwvG>۹ogvO +otO7 Λ_P鿭uΛZ?RC#?:?֏ԈΏ1.?R?K~rԏGIuc#$?1]C~O~p?uI?JaB|1G،DPNks.>Qx?<9^'/gc3f/.?Qs<(Fc~k7˿n?~qmwoo;?m~woG~ݟ׏u?s;?QGw;#W};xHW{?Ԃ~ :oGA?7 Z?R+7"?=C~G~tc"?]C~ėP?R?K~sS%?9)ԗKIuG?>?Rg'?8GLD mJn;;t$0N=ۦ<̠}^kIx-كk鵩{ ł }ċZz=6[j붬Ǿ?.אi,6*ql˸dqKmʞ6/eWFyG&>D=:XnrF;ܫ ;4!3:.U%2 z_&O˭h:PK6~{T}-EfF;oJG OԿIdga[M<5/#YQ=ϴlTjrʝSň'{OS~X#*e uatu]}OgF5:n5,Oii-* MK`HIxD rT*g +>VW_&PGF^{E7rwǚ ıCdλWR`# fkٌn_Ml+{(jt9w=|hk¿Zћj lrFnDJu1|vh6~<2"""UAדkw%zy0 K0w3*OkZmZmVO˫-Y`]БxJ׫_Oj*A,6*Ob;hw-,[Z*@P |%]~UgTxVJ胮=*FTT8P~AOUǭ,Vư#N*w}Giiiצ5VzZw*~R""""""""""""""X@tG +t.➁b_ujb~Ģo):u]SkA}u1}]3mǵJek}$1ۻ_-kRޤzOqYamU_Y?b@v^KĿi(8.T`$|L=ҏ$ű}4Xxg+#mAg;ދx<~+(WCܳC|2?II~`-͏MVl,4ʣ{}ȾhEu̽UtLk:Jjv?%5KYP+oDT孝EG_[ bA_ڷ֖/*ؔ_܁?0)wd|u%D=4AmvQjB=/-EQL]eL-b70Q7#Msh|cO +k%cYFۺ:jͣ >jEd _J\?jϴ>I||oc'Fڱ yԍGWt(v< AmLy0*d# +d&@~]_a&ֵ +q֘hzu{i%IXqӝIҀ{Qu|6wZUkjZ/j^*{M$Q=i ԊYuWV+#繴do;'%#ol9uJMqQUk {~~Bl+?[ ,.[wnlHv޳nE^S{=|vm"q1N]͑kr%x3)BE#t:nTI s'϶]ԲzIzs2)砥$ۖ}b(ý궺Tl:Ofade_zܵ]QacZ7 7?Roh>Vk7a5✐qұSo{Ok̯nVG5.GL/ e0Eדؖɐ|EjZ>?z>meH-_4Gi陗nޛVcU>*J0E6$!rց#L약_u 3_YT ww^k7&)P5β}67<zd?(KZ!4{$fE~~gKc@73 ˂'z'[^"jμ=Qlot0f=Uԗ6{Wݴkנue9f_kRV1ĝ".Φpl\ӛf]9!|xzPks?Y#غjʺBqEYdܞYmh )X{+ʼnvv>}5<=Rjk`Sm=s CbٛvpmT}M 39Z5ǸZtX|B5屯IdS+iPRTXkʒwS{&=Llx.qZ 鏹hK| W¥j{Z#A*z ( {I}mHGeb&G#@VڦR6Gnׯ)jLQ*,DEum$ufrz&y檔'!꤭{T y+:C[QeqTI{p+kRʊ@@{o2lO لϳ.EmEJ ;Ot'ȺucHl4z}_du*!EA~>in+/|Kl^K:'ϛe&GSK*V8pὕߞ)EZ+|A,jIe>Giy7і-tȥ8 T.OVR +O.S+ٯV̻FnH>d(9uf_k[eUW('@|>XXb'S~@4F&z'@^0 YswEb>C }2lk;8#CSC]us[q*of +'[>=?asrS*C䵐{:="VZpfjHh1,0 AF9:|k`/_T'~Lkq s{HUu\PnI=:w#M6dJZ"̊y)}(o蹏^M-v Zwg=NCڶXꀇnvy%OZ n-k_s`}kVu@$M֥ + OofVehB(>fUg[阴-tVyV(1̺^ӟm +MWѿ +̧f]nXAgowOg bWkYZ2I 'c_}5L]\q];i{yr_ka’m.;7;Fs][m߂PTI=oU_2־O'exk興0e?]]=(6:ōUH t$y*56ުT17/.AxW].")RTDGq۴uzGO.WjbהE-h%Ss⼺We ˷a: Ωv^nn%[ hKXz+ܬ(Av{4 O<:}fjԯ? {B]1<ﱪ* + ŵ lȥJ6Wc=b"$\ܫ^vW7;;#DzW+ETm(ߦN-ц]h@(ŕ@>? ^]wYeJv>H]+vNf;ZŃ@]u#eX*և(!,w{lygI wC]2S|6au(݉CEaKl{aISYXu&*Gb;v`|v7poRDev[-Ϙyyu>-iFv: + SEMi5sDV}k[x$ݧDHI^<~.\^{}1 ڕblh~RtDKr\yHU'u q2_ͮ-ϒ؏-=󒰚)FBeK~z&{8r.ƴJVݷY:"xf\hwH=59gRHיr j bG뱭By94Eӂur@eDDqXVZ6 i{t>r]6QX]<[\lr>36*;?(h3Peu DV8cKQ]{haWΟѝo܌%vV tۃ޽~!u\.oȒ ~*=Z];: Bh yaUJ%I ;0 ~7nnG&vu˴ɛֺϥZUvA6GJ~Ѩf-o[GuT=["t~3adȪTꌴV?a܁OzQz畈7Ӳ2.Ȭ*eURH ܩ3}k +{2؄p ˏx|{z2O$9297C#jN޷#+nU-r]+Nށ&t^ϦU}c[ӫX), AUfKbt,EvdS6f]"Ŭ܎DS=NMRxַ1E$a! i| u6(HlcuuVr^'}\le)U5- ܇onү6ޡEqӧ^U]n 3^u v)[v߼t}}52Osr>'S[3U{;`b"W$$M]^FM_L*ēk{ԺyE1ڊ3*,.BI?.޲*hRr݊~3)+ߙ _: ul|u-^6wTX6$vOҫ´Ycc7TA$y_gie}W59 +|#rE~:^Ca-xbBvQy|ekulze u #?e`^A!ouoސ%+b|xJӌUܷAq:^_Ne}*]y9TB~ 't jlGeYmcz\9ywtQdc2ǻʧ?F_+Z_`連8UO:<JLS"Aul#`}ck +1k=B޽Ql_yo?^æt@f=냷?3%h]vik6އ +vo/d]y%>}bȬ]n\DD@0eUbcdRX| | ^}E)bm؍+ɧ85jQ;d +zy ȦfVlʠܲǡqJBD6Os"G|yBf +>+NEO}^;:4wۈ5êtLnrC2;FZw!vnfl)-kGg[#/՚ջWGF(Ð`"uB/ASn|IókHF1B<@j\U= U||0 rBjUw>~b=s-aga}_-ZQQ|@aȗoaUR줪BIwAŶCWZڷjA]ϛȦlFeK?fX0%f{t:-weVV;jO77|gtzsm%T5wđ7g8CelÚXyrwgggd\ZTQrvI'$#ftj2볈R9AVט|'O@\FU+6 vw'V2I?d7ϒrgm1>%} cc[} )_Ub&زv +;.Vx@,uOq:߇cW^'a*:v]=2krVwavIk + oYtڪN5-XT/hzgj>i]Y 찏*،4ٵ4u+&+VAP#@쑭s#kBzft<|?\lj#`= oiWtj.R^~;{>c᥈ab]ydvnS!╲5IZ}^: :F46pm^;֏܀}&D[^U;6)>>.\ ڒ>;!t,L,wĭ[3:| Nct35YnH5Lj#D;߬QE\o;5|7:({誇T7RNGmW g\]kϒxW-x +8ZA9o|5Sպ6;UUZ Sni]{v^r`n ޵CG zJZx ;ޔtXܶxN* ?[db}u9atӔ~g[T×r8vפ#VeĜ!ef =z$]"@l8GPS+Օb\v !]]##].BүTlMX$ystj(|/ĻWdiI:O|z-E\GD/ܤo/;JT-rByGn]nS +32fF8M؆Dv߹|jȧ\U !}zKKMC!7<,u섲+k}_-Bۮ|O*q'=ViI c]>-"%_.l >S9aV>2s`|6>NOLfvmrw<46{yzEbc#Vhu4cf^+T+'qMtk>=`I%tI=YÿuL4z`m+ƿo[z@K9ۻ.LާО~Lo⑮9V#+QK6Ih +!pR +o @$fXL#<}{chLp/&,t"""""""""""""""""""""""""""""""""""""""""" ( pAFlS߿זu=bhإZ슲\MfKZd{""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 'PeS膠#hb8z)}`I;b\cS*zo.~[DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD*p=ΧI&ݩҿ3a`k + x5V2zDDDDDDDĤ_Ԭ%q:p+yyl䮇[k-KW}f v۾%?W=y"OUǠ%57WْYQKX?^_H*`OOގzS^w\ƾškޣ[[20bv;s˼[%Vx]':ΣYW_d/.~_?=jM5euԧmYP"Ð  c_˶=Q{7pc2'AkcR}{'@:GӺP굽bT[eL ζ(Y]@ڳ[%VN:#0dȘ=l|.E ^6r_Kƻ&s3AS%={?j.NY|\m$!UEz9WWu%<7P>mގd5TO&Dj'ebu6'DObXt ?)児tSXlG*n-u8ؾ(v6~/=AwȘۑӗ}@KN5Y^&*h]\ +{!c?|Z^z桵䈈]:ܟ_1vMTEMAcZ~aޠLR>,y_DDDOX+~fOݮ~k؝KPr?F:#{kqRQsS=k:O'9yVRZA݉?S6~F ©W<".GJƳ+!Zc=I\zcd6-ĭN;=&30fwYWd[zRJV!GnὮ]?u\K/b6n`{I3\u\^j vuXG {s۟(pr}"?TkjTgb_T˿']Mc4aLT9GDLʻڋ:zA.gw`Xo=旑c>Q8e³_0s|"szem5Y@!moms'2oVϧʫL#aV}0Arx{7K_g.L*X,VF]; R/]̲Σe ^2EJ@øO}wG#xXyᕝ]HNUYB9,Yo}.A+Xqjא۱ SҺAɹ#/ccmEgGnuҬ;6M.ǃm;q/Y~GZ+:gg0CW<_SO9 -kKiK!$חNi4%ђ_/ +)C~l{Z֞$H@;:H9}G_Jo{m4XQj*[k߾&YfA@o^[آU/C6`v?|f2Fo(- HﯰU]+U埪>";hة2X[׹* +,R]t}c:^^BbYtC\N'G,^]jgJŪGlJN+Bae*n C-P[EOc1,9=K5g1` 7N϶_2v;H}[cD(V8%k>s麦F_Z<Ƣ=c]zNgRȯ + [e!j %|;6#Y,I-M' G5}sSk5 +Ǻ,7]lwS^UVcE 'ϦOh=2.~nH!IeXNO?iKkx)TC]͓V*hp )պ-uO;o965CĶ)~: -qKm %vtH;be%W fGVRMjA4@o=['uwK]ڜUMcxaK /*PRQ#Ƹ9cq4U؁X{?[*ֶ2 DH]B>=Krz˭~\Xǰ#][.+ Z1l<6KAz|vbۍK*?G|O\:Ju[n1 +] KoWAs]В[zcfsgޭnA%İ;i^W?Pe( DŽE7 #-{VnEZ+~w)ZmkbYOt/ϗo= b13 1v{>jNwTD wgݧ.o^BΫ,PbZK4>znAn9J|:l헛:575UY]vxEY`!|Nͭ [VԐ5f}*1k]=zVMMhrU~#E3 ȟ?2o-Svwg3xV75|$΢L+j=I]5v3 +=" 5jG<̒VBZ?Lat\ݬvO}Ͽŝ-=Hd#6U[/l_魖9qb-4oR'CK0 N%ı߹2|DDL174?=v%ȹeD굦N!cx|k>[˼]NF5QؽO%DDDĤKſ&.:,d~Ik~^ }rY䟉kO xKc[mtj_:Lw36{E![ +었s#)׬#LѽG#7&Fr ɎGpxJŇ?O(k,9+ϖ#[nݵ< $qZA\v}4y)}ӑyժRd7z/ ,`kZ󖃴̉(ʾvP_?^-6/ȧ)vR,ƃާPuK =vW˅(o6APAs pT1f,nZ:k|uWRUl`x0VB;: Ki{K-cPP8btJ.EOrߩϩ *bאm{^{;y/ek뿤=?#/X[W͓$8Wv{-h@=>1:8\,­%$ N5z=:Fm=}bܔ߸$;|[_@ǨWcjC H Ge%ZֶF?9wBŶT$~V@G{߮Gtfc=`}x\u +4{ygA1{mgm=ih>Z3S57$bGm/nޞ{XQP-],҄}] o$; }c{;5{W$հ qf$vE+_7 kk:nGwsw,DZ doz{?V`m.+6# y~OIeQuCn+]VB6X&-iU`*P<@HO2?:Bh#`AEemlv.VX@G6="+h*; HLCצP܀䋺%WӘazUd 4Qkc5IbXcO@5>cg[>/']gxS.ǚ0y +z"xtYq@.g}ϴWvb˫To{F\J1N(kYбv yW]ZTS{W츑YWBsRG?p*].kg_lwࢧ"T zFhUYYk` {::K1]Yyk5I6Jw3R/WQȯ&̜;5|lUT,8#÷}4d6#aYF}4{[#"f8R MLA$SO5MRn*m +pJXRҡh(@H7tJ̄ʞU  vOp664td^cj,䋽~ggJ>ǁFWެNjFٺ2-f׃rN% "ɲ۬GN]U@]v<崦[.r-76TB6#}>ϋc[ilQe[`(~^ZNJݑke!x[jk@q5r=zW[dޡq>μdZmXڢ]X7;=!m^V0 +k硲{Ovp;L_]K|̀957Ծz6IKOA<7)o#֨e|<ȫy."""Ub~[keDDDMK,˽=ʍ̸v:ڷo_lT+ǡBZUW$MG,+=s RfǕl9+ȡbVD""""|-%H 767$lro[So{Ğ&DDDH[Wm˵XJY[C$P>@]]:sU_KEE h '$f]]W^.67'Pϫ[ܳ1 +Ē=;Yq[BJ#>g'Ӊu?.Wҳ v@#̯]j7ZE  쑲=LT6ىKjTi`>Kb\ֵs,H[ܓ>-(F*$tf@%,T5k_ )k^-3=xAT@,lα +^;"f8tK~~bfiNe&+kYUQX vKY +zEշ*}#D50:#B X*7mFƻN~}|ER08) 1 >]ټΩq1󮺭=VW`_CxB݁} +&r+A]yH:ŸIRT4Aew[wt[/1XH[oӲ:mvZ,L +EMbێ{/aZ>@'yu<ޡ,iekB+ޫcD^hôs򨹪cQc7{anu?2nZ!A'P>R\b$t4;wU|#]K2|;!ߚeO* T1`~OB^Au[ ?DJwiE?Oʵh˪LgLYTt}Օ}]iGN agS95PV.9luT*/-@=n8_0fu[^R-=O3!,qSpP@{HstR+-dGVƳ!CWbM~Mn)4Zԏ#,ib"%::-#.CWkO*}ȩ*wϬf>6kp;epW[8xYv +*I$ʯi;k61kU h#tv"xol[>ūU|jp܁'^c_97ZzoZp#c=}x?7[N5'1<#Z>! *Hzꇆ=8t%629ND) {,mV|W[3_iܻvh Э̷ӒA`!F-=-QfJؕd2b9nTla;T;=N 8w1j#@[Q5+_nX[ŵ#_,7J㸼ִڶUF;A#@|è6y' wNqк1贵>1llb}6{OhpXl60qlťkiT:^ݤ7.A cP#|ǽcǯN#?Ejkf{4TZ@=忄2:e1\Q]L+⦬ =A_ZuS\SIJpn?.=;ԑW;vU0*+%DHC1@إYOk~grۡg1b[~Bm* f/vXuɎeTĝrIHZ##ñ""%/ +CsǴy>"=ve|"""""""&4<3>x CwQ(-IU e^1vcg߲ώ|F2.>&E; KMG@{*?}N,/|AnKʠyoymlKȈUW7|OZD:oVnA#S`ø^[iLtZP="""&7Od/[Bּr*_;`I}:[v] +c%DDDDDDDDDDDDDDDDDDDDDDDDċqq"aSދ%2H="""""""""""""""""""""""""")}JGSe;T =ɗ1Uo^xT?Ԏ|9( :gRWܫC)c%DD+'-b"k^uj_NU_?g}^%Qܟ~2"""&ܣϿCj,8Gii>S>2"""""""""""""""""""""&EoZ=N [DqC6+BLY/NeY֊V>'p]P;r X;cK1|DDDDDH}KW+Y]/^`Կ^eP?ESYV3'Ms/ֿ]6=leb~^ן~Z b|5`5̋Z_YPKhlwS(꘦'/xP Osskk:캠v젝.|#ۘ],6ok$wC="ydd׉[[kERYy~VWB +A}D2t 6By>~[3 +^>"Q<J{Al7PcٍJ =yK֥m?GOYDJ/¹߸b+-bxfUK{DR&%eR\*TM"""""""""""""""""""""""& E”ήjW_E]j)>[;.+WNzt~cb@aEþ5'Su~OYCc9ܪQ={w>?T=3?ϪO+ˡEI' *=ncXqS>p֊Wh9ObVƠ%W2:["򱾙]?~pKZFʍ֏q&{$'2wjE>JL?\L|VP5>DC˾n-՚m5؃^c [smA?5~2:KcMJ*̱1b+kp + ozіO鱪PdNǓhz7I9.~9pFV^SiETh>B}DPW7ld@}O }v>7+CV{HqxV}Ql.Mo; uyߜ첎ujܭ-ev~RFGLGO|!a^XƮcm8r`vOX4} \}|'\WQv'*Mlj`ՙS=dhˬ%plHX.0My&}ga l5ٱ!~_,1qX;;s}9UW=…lĝd\NU7s ޹)RU{z_ΰ_޼_qܗU]sIECHMuz5YT7*@R w8Y{Mowۍ.-b %Jx\d Z.I$&L]3+tVv63+s\ ZRK>e@OAR׍EVِ_YKk#vH7ugaIk/f[(%TwH;?6upszM֊2[By6Xn7ضj̺#|9_ 6buk.ڽؐ<"іo[TW'pyJL6XuB +V;S@; gG>M"""""""""""""""""""ni^ov] ՃGU~YOPBxW7 zrdG+L_qsnE_i;.Dy."""""bj^ +_`_Ƽ!нheºцjz$zb[ԓ_T67n8O؇o/R/S+e]j^Bg;'y K]e^lwgVPɗ'@hyDDDDDDպhPmm![@[ >/O{7/&Eά[ ^T 6|Y>~ =Ok5v!V&}(,U bZõI?_-I/'QѲ^KqJ'ԟ4$?2럭u.)Q&o6LDDDDDD/! H} 53/QuJMrJŊu㿘H+-davՈ:ǽ |por? #\~poͲ?wgRt` exޖSgK?>Ͳ?o?T?6|#\~0?lqjͲ?7qn*={pǿn;}DֺNKG/N9jV{ _~qGꊟ_~sGꊏ9_~sGOa<Y?~dkwJ C#n l),Tx?5Q1Go?Td~k_oCJ*Ųin`:=}Kz +]͖"""""""""""""""""""""""""""""""""""""""""""""""""""t3r.Rcd~V+} аmaȨWz,xRDfL\q* v"dojAOq¹""""` LQ]M5aG[eTlJ^'?h +CLuӬꌔQRU-wg-AK$X&@fRիVB Xu,P 's + 13" +r++kv +<$QP|&b""|o2{HygE]V`:7.;oJΣ1GNEW؋ +wR| s$ U?Qtr%UӂA/#,nh}TL 6&yO+rv,69}z7p)#gzuS޽~uq117{ ('=hܒٹan4!(DPNWD {Z=wu%FemkMNZ + >B)WҴ_M*H,;~#[:ؒp5-#tF;{mZrTH#CCg\* ej=0=BI2 l` ̉S-*F `BFb7fyAplqZ1~BSԪ\Dʅf q]-'()a&?65' +*so , +Y#Gۯ!y( zG1o,ko]Iֺ[?@,Dr-LjUW#^${Gs 65芸m+Mf$klB=;=-JGh~A &H3"cے޶֫R6=h(|fnf`L°o)Os2>:,lCۊ w?){>UoDv$|L4RwĉmPX=V˖Otp`|Gq>""  $O{Yc0㐼Ob~Ͻ:\ʳ+ӊ!/EIF'y#jkkQbM@H:/"""&"P,kz؊;>:Fv:Glg*\ܯ2S۹==3-e=xOĨ~_,""""T{[fJɲ+aN܄M|e9LU.^ʬ9J"/tmf"""P{w?ue݃Ү(۩K*U$ȝb#t[miGwiG--orn>%мJld_$ߔ>|l> ^C܍fb]"J'k26E… +pU_#>g).f^c/ A#dk&`t[u< fJAWB}PO+3{#!ʄHY^8; +]T%Xaߗ~U.ζqÓ"S!ӗmIkxt|ƥu); tE{+751X;SYy7bUzE%6O*M`LtJ2dj[ia(GayhF.oPxĹ򋿌Jq-zzMjQ3Kq*sl0bJ3Qʱܲ4Wzb3yzyKnmt:ǻ!eڕtgFm+lvWD:j\t nmqMM9pXjP8wOiﮬzriRH !nT~:R1qY*XQۈjr*=bxaca;=Ƽ/MKohuA%` @50n < +2kwUu-m6Zyv폖=?6m©hܫZX׺ ~M;SĚ.ׁ׿~NV-=S7>Uka<əyTu^J>=H->~}/yoU'"tu[KR@=RQ3rbkǩxlPx9iYtìqԞ~[φEv:d +<[܍q+''VЕ&1gA_ a`x-x\1~HK7j{y|7׋gҞHV$".ґpq kƧ ++K72y6+֨l~3Z}PUR ! %7LbfFf5u7bn;Y7cNe8}>ֹ@k K;P~2^T[Y޵pmDC*9{;{Tv5>bj*w;7c]C55}I* 3]UUUn*^P#{|϶7K]1Jﳑձ5lQ;=jB_gЮK An +;r[ko{VVI[85H:;~:FUdn6Kd'tf5^1uWj*u΍T[Rǹ: uP}=dkg\T!Pʜ˺v^U8jO27bbb]CR|5*@n ~T{ GMM>}=Dnv2v'cr-ǯ _Ru#$aNJ:[%._U$zNSzc\qql6c~6AMtUFK1wv?dDDDO l*0x5%|mN pqP8CX꼂);ƾej±Ym}!|Y:"""$0ɨY1b(X+7Vfp{k^=>0.8'g HQN2 }%@>l|A9 )eKLVzdtlmwo;tLAe{0f $zJ~?BչBj]][;?b᰽)a_7fC36)ؙV^^f~Hl2vKxd|A> 34sPe8čk|_qhVֻ5؏) MAi]wēߗΟUԥ +bs;'?=]>[IvŽ[xaZʿ̆BRS~ǶjPb !#|y wSa2mtAd u;k:!$PH,NԀ aBcrpz\zFyȝv{eUSrG]2"$GVPPjͶI,wL=#L+F%Q6{o<,s#NL+;Ox7Ut`Sv}KDU4!MrEn@%?ނGˠu*`*0:RU +E<; M=ŵ*V#Ɉ'E9C*t,.$ްv]?=K jK2 6>`tMJvFk8+̞+?BĴ[ZT 2&IU:t $rm˕r˔ywޥ*+W!rH AzF>XikZ[w<W3*b%XOkWu=o]䞛mu.VMy0(3޽+ugcobgѺ٧%32+r쪼@[+W`QfbԱkOǷǴ{=ofѬ,n'?92ooiz#kԔTȌK?>BY}h+u8MҖU,{9}cu kiqEJWp߈ǒ3@Mdc^x8xGe$Ժe4fh̦އ|*cN8Ty2c;6.1biV+'{(+k]Jf?]ciU#׍nGU8UMc#~m{|<g11q+uI6##rfd-XYmGqvg+ю/dKT)NtF1s(Lc(̾Iu +m.u$ts|*Q[}\};_< Y:6c*dQ#Lv$j'nݏv_uM66N}vu!4cw!݇=O#3ل72ކU[0H{=ڰp>m"l.K{`Yv=-bO'Cv?Plv\74ߏ,`5UշOoxHv/iiaj|t;;evו]-xh,>$3O[ Xr,`KpTd:US̭].k^x~Gc{;f`7KŴcH*2}o_{/n5-q4~!m']rrYJ8>-Ց1,ɼҏ[TrɀLEl7џeڻj-+>Zn%(ь^Nkg~ły$73^ܝ]: +4 yR +#Cnscl)vN6*$U:"~$vqz8 u[0(ˑ 5Fr"xlaA_ϖ5nf?LR[$eRӑI)vPz[EWN&XRx㿐3oe7=wTKjn. 2~O:6FH 셗ϋk{zrҺŘYُ36?l0Fgt鰖$nOr~1kªj^)Z*({O,FEmYf^@awV{3ir5ݕAv{U6kc}ޕO)qMr.WMcr WNtdz&E=Mc6%_ԷSmXZW ۱ 6p -o5nKoLRxgFlcmv=qU֦`Jaʻ;-ENEmԟaj@N]8-@&=ʗd1ѩͺ][qn- ~ ;}fuɻ6,}u=:n> \ԠSuو?S\+صڥ}TNkrA3Etc+:Vb>c=h7 doYb ujg:P;weO̔¢:Zѝ221/%-dIt9ylO}#7fIڔRB`q{}b""""'p :Q"u\xdV@Еwu̎v +2TJaڑ؃/Vuf#QE,(R /~~p.W﮷]I9>|ߔrr2NQThsylsS5w2N嗐:4q+Τ!jj9$6>c\d1Lj8&rGyK2ʾˏԸ +Ա'A\Z1US^3?Hٝ=-Fı8D)QxhlkZ;'sb#sT<\i1rkxUl*b1פw1kmrqZmP^ +4vϬpvEΦ.CZ2)&I#`)=.=u *莧]tu=rs=UeV"eNT*ȓ6IU}!r>_#=A";YZegoi'Ze5gdXXS/H#o)5T v1>UoGn}O`:3"'n8ʥf*H$yih쐀ٙ?mPO>:o\{K06x%w  qk41ߗmgٮʳ-h**|6;YDDDDDDDDDDDDD+PCg:n[}>+U1~t99 Ñ#~[Fbm5wd j}F,ycߒܞTU@FUհ)THo"8Bc+5UxY (]72ly5vu3qhNQ-{3k@v^  yk<}4cٮN=mlUJ1;=!/%_97[WSȨتUjdU_  {OJ~e<[&lIZ`(a=m<#UA +.\+my [Sѱw[ ++k @Mn)ǯ0y1f폙:'"u\" ;S=?uCbĚ 9 tø?N*rypDk.XK2|Ļ)rC3x('|IiصxÓZj><=7X[jP݂$Lw~ۣמC0E٭o=.2C+ ` +}>r% XՉB:2Ԋӱr|MW؇uS?d^)^)DӲ21SR9_szC~m}dgPn]:ͻ2Zoc坎$>@O1/O ][c-w~~.ϹKetU[}C>7:Q⠁I$rIy5(kT1 f16}r Eyϔm=7ٻzy2-/3Ԟ5ֵ=5=>N꣺v:ucArrm m@H_7?ıHUl~fcbS`fEV#<[|[>:8<3||7=j:8WI==wDtg+)lYGJ{뿔)=Ʒ3[Uj[GrkT5˼fGUǶ]]GAZ_T Dgf^Bv.#-O"~I1*3:~];%xl6TdGNKJB}~LWep~_;7۴3S{O<=ctO&(3®W_yԿgnZׯuͽ&hSn=zQVầ!϶ y @AxxQ,1ky:wر;ÿ-[>ac}BlgUz&s#=Bb[.U:zU[V6Z*.7 JmA1kj2&۩9@CNP2$/{n#f EʽyVT7+ ~I 꿵G+jt{(usNU_ae o¯Bѫhfǚ>} pr~֢JDZpk@~uZl& 1,MB>cdΟ# ǵ@YPmʑrbUt ?d[uO9usxl16 {*uNu0?e&tl x7x50~_W*vޏc!WBp@ث)?`5"ly:TTq:a=f￯yĠ_QUy3et|_? ԪƮZUh~YO-l洣.<5g.2:}J;bS<=Ʊl\l@, +<ʖ>ݤ+t|kBx;` :=:,0bX(ETe(y6r]@-9\60,Zw~^1ʬ,zzBA)_oe߷ȉt6F 쳢CyJj ٸTgTPǟ}ߥ]kJ_Co )|[:~Uwҥ +ܐTHPGaq])zn%oc" xer*3.~wr!6u +""""""""" nB~ruv\qlqqTI?=b""`ʑי?> ɂ 2?Wؒ_S*V+u:%] Ǹy O<|Ȱ Q;4;M&ܭ +]Ga$&faןShڰ0G>V[\y7>y'b5vUTy~S&DDHC7U ɉ +g>Ub{Uq+]w)?`[;:y}3+'赗ͭ6I$({II_̴U}-׷f5oǾ$5U yb{BT/"hOXut%LÖYfڴsB__!HbȧI5OE߮RIk?Hlm;S=,Gs\DD83g#WNVR~c`7/DDDDDDDDDDDD@0foSYTcŨ +jRXO|@ ̂rwbOiֺXCs+],~ӽۧ_6[Z*IPOsohW[[GMԲ51j4؍* z|ϔSë ^kFl|؈f6Kd7¯^|>򴉏mNEՊخռK8S߹:&b"""Cæd7oootLޙr*4_%xGzfCm-9UK|dw[_^E)9xyc3\q;%ó2Ԑ;'{3oQxy3kd"""""D0o*wl 0nEFòڑa q]w^Cnjf"""""""""""" 0F\|r{Y.x6h֥Ǔ6=?TNVu认UwSg HҪT@Tq!XGq|Ǥ='}NVBBA*IזDJҀcN荍H=3.5IXfBl""""$^qF愍,ז=iEEPO`4;"""""""""""""%SFv#)+f$z.HB* b  x{EmUp.jv]# ;c[;nZDDDDDDDDDDHy}cֻ﮶mh3'gC%?c$Ukl'{;~Mţ%Z]yKM~{; ?":GLqO+Rnt89ҺN-Yc +x9}.uWͳmhĖ +4>4cZUa (!Hcԝ HCrEìoZڰ-4N1RARF  "cud! |陀c>3S*Mo$į*""""$:sʳ׋{ ?j|LSgu,/tL$PFa` rZT%^XzH${l5zRoXwgݻ^߷Z[&RFSUakD$ʿf?>\ Kibղc`@d9eZ]V5C譑e29jX;#YvM_''#eڅ6N}'et:}N׽7_A:Hq;ߗǿo@ solz]ʫ z]9Io#!?}>fb{;z훼q+*{{ư w  yheW}y} ']W/c۔-=ko?)FM-nG_.ՠq=߾yw;5zd UCRڬ>:[q{0:'v%/x~voU[ݝjG/_e,Cht{~s\û7UE&E㧕_{&m>}-g+:{Ҙ%-n~k3&.+VNE {-- ]\1~y)F]~ԀC^9QzߒVBV.*X9k\=oЙ&֌wlam˥ v{&F}N5+g"T.5:s2 +~jj,G猪#bMlO(tE *I vWNYo;SvBk_Ժ:&Sj*PAlv3N]?*;5r2[Ew>婱e=iZPbZ߾|+ŬXa5KK]PYx 6cu|:Q_E}pURygcё}lj2@WLPS10{ tMgY܁C<|@Ԧ+3=5[aZuQvz{!zu;l4dot$}t3'-Xց|>dHt잨ؕW]oRWmܩ!se& 8A ɶOrOI'I6"ڥXlAȃ؉? TR>s;v'6"@a=͘Tj 6Gl0N>UYkʛڰa6=Dt]mFλ;6&bG\!mT ɿx)m|>rDDOK|uq1<̦^KYA$yRt6f+mPAlv"&'ykҖ)t$ 9.c~""xefӂkRy3>Cgy wlabU=k$DDDDDO;*f:}.7Z WrANuŀ>JO]ntH: CYYHoלl夝;2 山|eu<\#뒲T Ì|>MyIΦ GOXu@{;v]ilýQmJkF%v }nm;dQiCI#]{1F܋&oiZ <]=+݉WL@\k-%!5gGv5?FLbFhdބ~_Qƫ&u' ^Csv-["~x~'MF=J[gh }q};HSOorZT V{&ʛߞʄ,8*vx㹐6\D%±Ȕ;|u:Q'QeYcVN, tlԛ-"* Qm:Cu;l E+Cy+U /UXq+@H~]IwR%\kXp##{Tnl~4dYU`ݡ`\Cl=Iy^2é,zQkE*V7y}}k)mn>?,zJ𲫚|eޠ?9>u';-ISEݎn紏g_4[Valn<+kvџVӅkѕ^Xۨzlj,U䡆Ǭme/, .>z׼wL{,ʷx:P^,YtN ]$,j21ݗhx^v֧67ؓCuν6=gjen[ܦv.oRϴM-^:4[_-6ثڀB3^e6)b13_xuQ]MI'ʕ̝=s_V?,?*r_>qKeXT-gZ3CWı,&v. Vu>ӋB /9U-T{@NusE5/BbP YwYz]ae8\+~OlNr=yoym-jiP{Y~=mGUWW~\"A^Dv>`%H}btsO칻khyiUV,U>^sj Y]icOR|Ȫtr%fG^LRVK߇l߳ I}'r+d] ⭰ Y[~:TcCvA^_૏"T*a{dTب%\+2>en^U<o{1D-)HX!޽_K8^C[a *΁n}[ j4YCeaјk*]SgƣMEa*XKm䮹Ҭbࡲ YX(.=:=/[1&+Q_6>M~w?OOhzsu~Iܯȣu[Tn0*k*]y ]oywNOzYM!Op<F?D&Mճx|w@WglZT@} ,VF-;s!%א#)2=lvVs +'Z_M zn^sXet`6{][fcj~ośį<=_9yMmTeo2OZW_D4#-yX;TWM׵cqx vZtن[ϳ+WZ`tgӗFuU}GFח.jXkjI[a\zֽ+Q\U]RAG/-]7&Λsa>([Y.@~彅IP `N?o}Msri[2Y*QS[L=0\|:U!X]c7pT#6۝,-Qmaav5?)wMʳlV[BM&QS&ۜq%PGd+kƢ -OOkuc+-J~^*YAd{V+'[FF?UuUe<>.[g+3'LZxֵ٬k.iT$˧;=WJQByod&!f;>'8> mowZgh:cul7 `뿑#FC8W\sB̖3z/,fU%FCzaSI30?}67ˏ֦׎ejl@TmCroCrcugr8 D rYMſX;-w$o% +}]mظ += d'gNbU}F℩zhn﷔oDZu'd|s)6""^\v7ޟQq|*$7-'evh'Ourbd _b^@,B^d-"`]kRPz" }D#pT _Y@`cu<ɫ$S)0NejsKz"" 1)EK8VF +JN'7W]52>6-O/%&«y6KQZe$ hF=Y-K%ԫu>aM[[ +mn!Ys +W|`lK>mRI̩RP˶[\@$vלG-Vm5[eRXMa'0DkGDnd{O01KZBZ-w,9[55VkB˿R;|&%6W4cMSN)"/P ޾?lG%GloG>^mXIZH_VoM(&C<CwM C׶WW܎J{0܈կ\[⻭^<"F{=>}Ekj(e>[lH/C>BS[s|C +|Έ)Q`[UE~x +Rڱ ǰ%{Gq,}֩ԍX!AĒ@󙫭8hjZ'+'M>He/>~v'$~bxs9nKa=b8Zi[4Ā{~^Sڌ^ +6}n}u1q+vTg)N[΍"5;.7Dwp:jU- +8,ؑk{ZGW@mWv?/>/ZoV..Fp +;b>e-ujVkb;*~U$~ڟpqk[Kpyv1Z^ߧu4& +UñN 0;ARlLZ +dXOQݟM4u/Ib䎝A^б-]6T'DL7aRf"^Jݤj=t@#;=2qetq5]+k YgW @U]R}]h7SVk),z*l뿜/Xڼ{1ԱBHv |&e }2$lr2M7-kgAՐ4FJtĥ?Uּ@سoyt_H14Ogj魑~%ʙ]'[. +'G[odXyJw +bvH^Fxޤ6 KjgGNF}}17Dó؏Rr$ su9v􀘶m66{v%^/PsqZ%VIx<6׻H)zb[fEmZ#+*k[cՖ:˷}JK)Rschˏ}Gs+8ֆ6eh8ڦK#G#+;?Z-Ta>EeAoxnl^H=/:4b2d+d0*'lϿiqԫ5JǗ>TqВwRo@ϳ>"6D<[!&mSl{UiHs:EZNâd*u=C2*yk{=BhrN[I#ci[=]ATr?v4PTϼ~Ы:aPÿ._2 3tHc״#3k[XBZ[L=iUc"CaXoї2ĥ2_Ro*h³u<ܡ[^XOyR'z 3q?T\Q`ˤ#U*zccX[+VP rAק(ˣ+֢R)rT*ǼonscZ_].윜J6XeW֛&wæLjuwv:>c9[K;`3\ۍ6Q;X9^%{-M_ޙ9Mz5z}U ȍh}^}x>וo WPXz>izx6xmxGk; DoZܬtN՗9/-~= ekتV/Ǔiܞ݁2|'2iE( +- g[-zJ^LK) >awY]22>s-]>z?N[}8. vK>[zޘ!j)lWvzr?y=*v?RlFe< $ keF=7MWcM#3*Oa|^u}npr,Vdy1ܾ酎!VV ?T]knEp0ПxfTg uF|m^$f] u:`4F;ȈoF9U,Te6EJ׽3>zzћeQxkEn%%ucy:WWՑ.2Oɜ?XDDDDDDDDDDO\t[ G&Pl&zDDDOYÐ9@:?= 珅N!cUjqP?#g㌊XŚfMoT~9 uY?DKxݟ@?epXTP=Mu;+DXh3rs[Jή[@eq6#'* ?K G^,+6:>pZ49DAR<7 6DoȏL:kTPf z=""""""""[z>:qY I=-VU?Īke:3O~`pٝ:f""""""""&%{u1cTIP6WQ[I!锃{g^~e c[` e< +챏vm>7Uxc9VcɩHp*t`oȃKx7.=Fd@;#>:c)+9[ v;ȎehQdd[% 7a{EaZkK8qw | }]^%jg`wdV%ذ[y^q +߬ucdୗQ|IKz/)1Mjq "D=,llJf"UfD-u>5cWk`ߟisHK|#bZ낍{ͿAZ.uQpJΈ>븗YUjFD+ۿxd]U, +3rM_'zOX=UGkqT<}5 kSߎmkؒtDnOS~mk&kWw|$E$|P;BCV]өGB<}ptQ񲪯aW@!{MvZX'{YNCcVֿ#‘ L5.|:{;;n{+ڰ/"w~>F=Z[YںSlt~R.WWVT ZTv2:e9\xf)WFe7*8 kАA˚:{YlFB.Ƚ'm_ +1 +k@ _cZj6>p@_wvԽG[&vKR7OF gCm.0ב&՟J_KGPUWu޺:+⩭xHGs۰~/^ʪ^YË'λ,zb5Nޛx.ʯhp5qfk¬*v:nX  ܃&o=Tu ㍔RlUjP,lz 5oc[jZ ]Jr ٓSb\Ö߈[]_S[;Ƽ'{C)ſ5=kSbC2.vWopsA]{yz*3鿪5kg/# +JQ^[U}Rv<_ |z{-;t.w]<+=HI$)m I_W]Ƶ8[X-nQnH$i`vߟoh1VQo>aĿuc>2ölՇn<)O}a]Y̬dX좒0V +:孞fh1r]K+[a[±~}7=[oE`D~ @6^r|DDDDDDDDDDDDDDDDDD@3{2)SjEr=dIf*-T/hga5.)UƂ/,wdԶ#s^zPX-5WM +[ +G3\%[+`Mk,^$7='jFjk.\@;yIVY[|dՎˑI!` uAQYҲknY1܊Z +@m ^`;*ՓU6֗|[[٘W=*R+k`>+\:UVrbĪx(? -2 z8:NtE|#}+3eVyyyԇޚu +n*X$rq_''",{h\ + Ip^gj@{|z6V_T[vLu(u䆥AeeVz{5 },UYEʰ}. ljug3:^r#-MU(XgdgrO~>>( wkXG5V{!p.~lÞ$^#iypn#X#~rtqpIH 5lUۈS\=wZ8ΠY-1±_6짶LYVd7Sn]HvXe8룣k=.LCr%b98߾Z۸.J[*DbA@;afVoª~ 2DhDXx"˩,EH<ޏGKe-ek0mRjYK(+ǹRћDDDDDDDDDDDDDDDDDD@HMȱ=kmPA;#3W(d$l OnԚVm|BlVTQFYSc~5DDDDO`:lhܕUWk~C6_0b"""|]Jd#V2 FX8R_efb v߬0d .VvX]A{z a"MYay]V=%DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@5i:GS Z뼋qEgv_ _+ +=c.7e͔5Eg~jtl-aoo'y"""""%R~ +KdO.!^-QB{1DDDL[n̘U7Uz6h76Piv $eoB/CYN.A߾Qyo|&ھz&0WM;v2ggϲ>/7ssܳ}*L7żk}GL>ᕾu[:nlM+ Gc[͚""""%UmB-b""""iu5>'+bHo/ټ4ģl͎%ٚ4jTٮ:ё}ާSf|g~?l0d^9ؠ@b_-K0:6kO,':n#ߩ""""'⡲ +['˹z^v;Qcʕ;F*ݘ$?Sӂx,{n|OR+[lBF#;;6"""B=cM9;$<2dDD܁u-aYo~#HL;pC8?T>CQ6h{YѲ*ӗyXL~W쐁}Gd1/U5œ+qazX52e[e8+xuG;}FUmֶc u[JnԱ0*['ݏc߮O9KgKz,2d_y'}k'O6\ *P]I=>>b7)}ͲjšۗzPy8@.-XTE*+Ph 0f֭Z왢\{5 ffcO,Ł |DDJbw Ӽ3)ƺ|QYX\)__#RZuJ+fK6>/}ܟ[Ԟg6[R𨻑gǭVwmv""PlccAz/DDDjr vbd, 8Wcpۿs#u܌ޔGT6`XܼAvsۖ Բr.[:plm]u6wRոYJ>D%?YHvV>mSU7K5oֱٍ6hfҾ\G|?,ڱk˭-#eaAzDDDͿQ[eDDDO,+{m`Yf1ۨq(fu0#q/;1J>3J5A-q'u%:3uH.O|,oQ̳]MަĄ} ґ,fb`OzQY8{B_"kEu6f;wlWHIb}I$~2LDȧF +@b+ t|1R2g7sZdž9s[˰(mEWU!ξ<.@ײw&2,| +_`?6#U : H~pNU?Nw|GcV*/$EIYbUG#؝ o},Ħˬ;kҍUX.EqFAԬ0FCXmqeA˶tI;Z؀>$O@ nCbaX8;.UcT"cM!iz23-ȽQY@4( ^-Zr aep~ȹ=:׎V*;=Uuo[\JrjH`Z"Nêk u+wq ;Oyo^% |fL{%׌KfkOxV;@=F6.LӏeL~UT-1IC*aa}HRg_hQ%Q3<(̯% NkP ),rq|'Rȗq>lmR6 {4ޞNx%ќUcM$ğ"""%UnB-b""& :Q=2# ʱOkyRɺQJcZUP@y'DDDDDDDDDDDգ;`1@zyt_DftEq^: bsےw bd gdí l_|!:ym"-]"!V ;m^'gSql H:?(}3nu;kIγ*E;kzkJېjrc][KiwU[`]\{a=.бY'~-OWTy9vHnN56,2:r^.=ẖ'H* 'UoOacrqsuPOJHKN_VGMer# ll$g"W_dh5Y;Ӷ7d{nFd JRݾ=ɰkL4q"|xָ}-^.eoZ}Ѣ+[ 2wS-kQChki˙, eb=}zm<ڱRF>R"FX<)Ⱥw yfx4TUf髍1r=SAgzl\F'չP>ӝ|Z:be #`Hx# xrb0} qÊՆ66;޼YM@5,Ryzɪ=$[z%^W +`G=hȧUΦ[`q :v +O3t80{w@yx˙M>[#hGϺU~Af3:N9mBGkxWvSui#./hc֣Gq*Yk.z[^5+ssj@PA|AGѼ%ro|'e{L33;yNIyIR5KYj+T^[˫6e.Ny#Nz&wz<1zPR l޸Ng'8Im;ˮ(wHw.+\GF,B#7˼CiAh]*,g+צ|Eǰ9w"#"H ~@{ }B)V,X+,|ۆs6|[j/WAvw9+&k)/4fF$(LdZPOI^zO 5k]_1?Rx;2zmu#(V'z l gG[^>2c/~{%KOY 1l;lTI4.O\ +68l*ޗVԗ#ee*| &2-uTU + (}Iv3 +۝ywhO-Dk^.Wú}%DDJ ?n({?ʵ}+ܳ^zfxT-ewtO#߈?sbA +^6@$HG{[,l:SZlIEA5VvHYCr=u>5عLJǏ'g%e}(^WX od+1{\jڴiי7wŵЂwϸ_O rnaX;o^),=ǹF^Mk9j!BiUIȏ?YuNgPGPR+`'#6+:?T5eE +p@Qc,zEUQ;DD: d֞db+Jv~ +NbXe(9FЍ_){ u\T+VbNve-ιY# +:e?֭,%lg3omŘ>""|؂*| c:MJuًEKr g >Zf QZ3|J$ȈbP{4_tuIsWv7٩DDDDDDDDDDQ{9r]1?M6Ey0j@G2DDDSìg^Z""xfU"Vj`[[fpo4_n䢞ޙ^S13 xtlu<[#uOqtk2r^>elBB/فqy5o="""bSt[)ʽxKE<=wDDLh:1^5"o=b""yd-[+!I:H޾:FE2eHm ĝcO^̴_ +~3)tAO޻Z*""""""""" ljiux~];.t~<_]b"%CO,2Kx'SHQ8ߧbX ^)@}U}wPb""""""""""""""""""""""""""""""""""""""""""""""""""""""" #uGUdz!CWba`wٞH=1kIƴ]PٯM"%K~ L"&wW^ \7}ʚLG3b&^&:+]|c'Mڏg〭SxZ>8?!y쯴'Rd/E_̰|U/b%K~ L"PU':ʼǫDo.G_fg_gAronw|ټB^DDDDDD:v{O굩k[_4ZϭnCdԹx*@e  lIq>]jX6Iȝ?buR`jt}w)N'Nny0(ߙ? 31yѕVW#SvFA/y'DDDDH#!փl-҂g7.B-vA},kuDAf:P>$,PA;YVgrUI$$וZSGPARpA`H;B5;G&:ߦ䙙ul^HQĐ6tB, XHߖߖLN`eHd-ub"""`_9Mɐ`F)"T6ZʊeQ>Dr?V݆^$ mw$cWZSUROHqm= 6Qȍd ,:3݈))d:\%&Ηv~/9W>kn d97Y@ބ99t'u91 +6N="""5ojVF%ֺr&Ոҗǔޘ*ǹ[g rzKfbщ]v&V-VY8 +vG`]G\4SpvmakO"ĐIf?Ty/uxZܳbawMiVfۀRk-]q~sߩb Gbڶ^2+ab F{>~Y$h[\%eY/rcGbZFMƲn220SPȰrwwO;}tCR,Yba`$ղzu ȰV]6 w";q +ONwScI_ _MR_+JǍ5 bO]OScZԿ$q>ĩ 77פYڀRVeTdINŕl ʝ;dϴyY +hP9M6 Dy~KV*}װ,V Đvy!bMhį$TJbھ\+&nčh~Te ]B}nZEeTU@^EڌN-[rYs$ѵb_jµE3T}߸" 14̓m做XբeueK~O,2KiBP9t'!oPL""""""""&Ӭ6uX=cРQr?{ |5 :PAkEkkyjctޑEX UgW+iް݇ rzgtWɣڮȲڜSIS݀md&~eѝ}#ƮKT.x'mZDٜj??a ݵ9w*.sMKZ&=uk8` [ϔ_E9TR 8AkVnϾ2.?ЩJR4Hرk{Mh65޽u}NZ]\eE +]lBU{CB&*2Up=ε"^UݏVMW5H*{lڙqY˚E,w*oS`gtk2kŭ-f}pWG߽}&gJʿ&\x 4[nf=ek(EF$qPczb9>@>osæޟՂ<7v]o6h .EMYk} =jcǶ3ɺ&j`tj6aC6`TdYtֶMx}_17~'YXcu<-RZ0v=ϡl^vUbM6%u7+CyWP*TՍs%R,WE#~RLDz^xΧ+gg]kHnV;7"מ7C|;ln)gһ%NBp#l8Ԉ}iqq7S97c*`xoozm,)OaK}JʯJ! [Z;h&`1^t&:W]:>{ n;XhQ?̊ݾʬ+:qKmYw^G@OWtΡz}:!,RW[IמzYn>7Uv6XB Rf{?k|/ }ҦBfz ?#_ӲP}-!s؊RǠߛwT +VuJdc/}GUSڶr6d8 og@y9ɒkfFQx0 H1q@Z\bFqh]럇s[}v{= *e{dtz.hT^=yaVtu^}$t̛˪F^}V=SaaeV*9~aџm5qdԩ'ߟc=OB1 ɸ +2hv=O z^a?f%$h_IWN-Ȋ+,2؀sߗ9:WP~J'VǹSk#eN}Au hD1q^yrOOS}0 jVm ]T;Cp[cȐGoI,@yb@B.}.Q o]JW@7-y_dk+- [ԟn7{{'a[w9}/m լx*W@->tN%͏' |7 tΣj-j2ֱ*8럟o-z϶9͛nFJ'+b5h9]kDc_9t,F UW\?녃9F!wط?{y̺d]X o FӺfoNz/r,ӷ Lw 3b>U,%Tdo|7;ExR5 {i6iX)_Sy/0|r +| NeG//6*Rr 3[u{=u*5L`޽%=#;a2T +jZ: ˈ~䬜n3[Uex_ jUgtk:qJcヮ;ue]==+lUA N’tGn/Q:=Ik>7me;lN˩tޡ0U5rK + +yza1>~ =J1@إYO3Zw>ށz{P im-i?,=R{lGjQ&/l;ұPցT|O쎗mpAK i0;!G}}2 +Zl#ǟ~=I1LO +1J]ƙ"""b5DDDĈ:N _6qkɍLLDDLFS11]IV'>&bcQLDDӱ~MKbo|\r]tguJ@y 1131j&f&b"cS1)}|{AkF﭅X;2Xq|HLzVB #Zaېra4?DڥcKܵǡ{uksء6|\gX@$ 6fZA 3I3kb `f`Xȏ-|fCHdyb@ v>R.Q+y- ;7*XhlI>"#:t[\lUSx|̃s3kܞ-bq$+=|侔nu[Ea}N`W0b:~2r211Z=Xy`$`^? sn-o[S<; z#,! C# ًMWdVmqz9vmfSPît(Am.&9@;򕩗fn{[(_א]H'Hwӳ3zYFBԩ}խ&q)-GYdaSvH 6  +L=@dKV ;& Z+EMlW)Q'B|b:]],2yX, [2:UyW .&廥ܷU+^d$1+ X?IՅ'=yS0O%=]ǥ ]ǖ3{n,Ee*fW\zP"(gOǧu+#"|L_Y =-Yk:OWXb ,pyK|*zoVcx)-#dv7B4ҫP5w;pzOu1U5[M855U^+~L=Ѳ;oϼ==pkW7]CSX({-v=_ªA˵FoS߇+ti%/ֲʪ'@q,oN؋}vӍRV۹]W +[pI=t݂X=Wy6VF1Nަ{2/)VUU6~a"2A[YFKnӐ@;w^Z7 fw(~XەRr{1w}ڬ49V+ >dr:/9i)zRk$זs5Λmι%C%tbj)˓{@o]Khx7 쫃Ks5Z1+NoJ:R֤Ulu@Cr9yt䞷zZ5ҝMC׎ξkLZƕUF:Cfʣec£om5vTݧK)?e3 è#,ϼ_Y-u~{"% +~A5݁8YMxT,`~Rz$^slک)@`Cz'g^{O)~[B{dGdb[k>ڧz;^V6~w[=!2*ŋkENmHۨ=v][/*PH#cԬ,@!mu w#Gs`blw[U^ ǰk׻'?؎fGK9IUtA}&[Bu.ñUOѪaRS>:;N$޼ğұf>; Ի[_ nt,6tO@:봉к5Wv@ Sy_3+VFf6b)ike37_׀N׏-O){IketEnE[ӱh)mZ{# o:X_"o?"""""""""""""""""shcǧ${ DD+Sf8NU]Eybm0uA}ir|YqN'c_oy?][_f~oUB꿷nu_~jGк5?ۣ}[?>vOVOt}~ܧVD߷)տG:?6o^n͛tӛ6׭ss >'^n͛t}~ۣfF6nkgF6~kwGq7~gwWۣ17txc7n~ YC];`c-^>7fc}gf&x=c/ ?MS~3qB̯EoAE֛awK:3qr>'͔Lz&*v#~!V\"N^s/fm1 0Fv۴Žۗ E.%a|SF5+Ճj+w#>-Xw\nj& EF30CnŜpIǷ2vs:&&}-! }elо"}EҔfd2:ON8Ų5|@=}qn^/Hlw=-K +{\?= ,xɲefG]鐂7߼{.t>kc`{LjKbEz>Am~'WC￐hXY*aՀX*Uw''DpW#J93* kJIDcc^ܒo[?X hl]}K_K7½4Y9kYEib200ѐ1hů>v AO$~Pv$N- R 7lH!| ysGϮ]W]T>d%_Gŧ `ZI{|5>>`?rϗ ]n}Yѱ-d@!y z÷q}dv,xv5@$qbW%7Ē;w 0]jCH?G>??^?J9|§Tފڰv?xErTh[Gs܂~rKaRAMUY,jB,EG,ޠ|{٬ <!j%*$VGMˤQmjPqAxR5#|qjlaR|ȱ$38=3ஷK3t='f =BU˴bЕ],ٶUmիGl|Gk~UeYFkg*÷"]qlzi:*Hc['#v(蘘CD*k80]'>'J 1jZ?N]L_- \a=+ŝڰ!Y<7ԖtːQM{XMHvjAw?D>C~"""""""""""""""""@% +o[ cNuRJQBG 5mDevYLS1^@ܪT|SJ~k&'MAX[yZ7/d:KQnG{G:չ;Q5n_+r<hyƦb""""""""bf""""bfcS1<(\ڷ:b_jG2/ͿdlϏQ^]N{*Ur_"~F}DDDDMM,>m^W *T{蓢ߟieNjZ,ѬrvoR"""""&÷>]+"q[V6SC׵VX aX%^SϣutFUd6* Fc:R|D~lzV-Tn `N2O H=KKQȾY@*=㩏˂1ȍr'RttMג/e,vvPOylU`N7C>"""""|R@'Ckg܁!~WZ8[el(W L4 <FeBB?-:uUɭg^.`QtOETfI4՗Mu1%DDDDJ ]񩴭S _9w_Dp*NJ y1goYo3"j&eΠN64Jᛙ^_nVX ùt\,Dlv=8>U-TJ;\oMM N磩m+Y^ԋ*v[nAn H??)c"7VEf9Uv ?)1F躻WVEw*H:#y􈈉u>V} DOޫAeԨF=龼[+/HazDLfyWUգd,>'DDDL}ώ#XYC^}[𒧎N]8jX(.A'l3_27#{#FV3( +sRx$h>r]K`deʾ4+6)*d{}56-vPLULJ +gm׹+}{v=~tOųd =|6>."^,QJV@ģbj\foKt؎> 37 kkUH`XMk:uTY0S;+/D&%538yqEU^5 f9l5o@ڌ2 |<ϣ傥j O%C7~WQmd) Z`O"~D3<>zM|6-jKK7]¢2/X8mQ8 q; ?*z~CM`QYB*mrXy9ç#V:[}cEV'[vwJ~Nʑ,WU[FΘ0 o,WZl <̪>]Xf.H, RszQ,5}+svU'm1#]{vל2spi jFFGXq%YVGvY\~山pWA%I^ÒAc:U˽_mI`I*=4w3z:,V%U}6>]Y3ggSp(zy[e5< 7^D~_Hy}Lt̷xi(F`NchU֗tΣ@-W-QI.qPO? ԙI..-h`VGd'w3~ԭyU u"Sjs-.zP^2P~kߚ{{U_K{j[>iCQ**ׯ-jeM[= J>UIsX)̹fbHҖϼu?ZV۳sZ;{*?IC-n-Z +4izV{xW*\DvNk5֭ڠv:Ak:fUҴ[mu#5}fr{ǰחa׳iUL|k.FOU,5q[e<oח7<鸵E,o +S@bXKi:{ګP0a=Y»_EƗUy>4?\8jjƴ.Q^*UFOC:FJtj3l>7fGq%t7E:YR,qQ(މԱnrjȨ#_]UŋC÷qIƯ TY]w|OwYzGZc酽rz2=KT1;{!`e! O%)I" o<{IywC1z~= Zw yr>&}%HDdtf]);jz [I뭇5]0 + +Ho<Ջ1EpP% |[j Qd68T/{(%E +-F2 ^Q[_l͖+"WPxxzkLB#%6KoƩ߆G%a#ϼjRTVoOηbVxuSmd5 ߿1vgDBaZw(kkǒr5߹ٚiaZymh5vo@}wFwUa7[Uׅ>/#?i@ *Z[u 0mAX=R,A 'd|>^C~%vy谰q 7*:q;kk1,ymv'GK*U*t }Gyțί7YCP8*pGq=l^\Vʼ]ǻ72]S$y}*|p3"ksX)0pb}uyWg" D$Z!$($ēt>Bzg[ nWeotnJHߘ UAA:[ !ր$>_gC5YRf;48 Myvae61^̽>g8=3kQ:oE8xyh-}! f |}#g32>NV= G&,H\uzu^ZCgJ!O^6<$~O%Qm*;fg6XvT))-+z?ggQHoY>UVۣK$ +*}$zNvzS] i9\rk*NJqږ֎dM-FW(A +CP䒿aP/ٙɬNX.oW-26V;BJjsXNٕ{ VWA%+VN찾e_-}wĨx.^]}+l<+jvn[7C|t}##[f~ U-U[8`6A}2W;Q?2x nh~۷$ kD|Q]C28jܛPC>?).эb +ޛn{PX lܗ{a~l`Q}m@Ӛ$n['`~IvuRbRCvfP[en gExY9]qɸX]"]|/ee^+Jxf}!nc|ҨL +? +U/|EO؃W |XgHcca_>˭A"*%.{xSF+qGft +Cձs·;c3c.ӯKeξf)ZUGr@I>H]eNrcP +?S##@ɩLJᲓ@a뭏m]W2JzHNFTJ8}peguWUl AU:=ϟƠ h HR}6@'_ku-?'K\=uk;1;O5?oR鏁yT+&b4FEc~g*<#֪!m ]=^b +j`؍k~Sd+IK*7K^^&S#:5!9}@w3^S1DWU3.6i[glV1!e^󮆽#pWsJ d_e,[vbGdb5BVe;PG ~DXKϧ3+ zWZ1q 劯<R7RrAʚBH=!./-gor +8~M0h6EX_2""4e^5A۳yRP.5ٛobw}fyhr*+Gt~InRN!΍Fn_H/N-+b`(֧$:Md"Y"eF-cHg.S>}зV0=Bv;s>:ҢEbN;Yt;oZauj%m%1Pᆵb= )sqwǫ;y('X=gǴ9Gʺ~ATCR@$=D {QoNK8` ru7Is/>ʸUn=u.K{wٷ۾"[2rpw5LƉ{(lKxdV|VŭE ZagfYtr7.YGsx)WPY)Cbϱ{b K!kcԔ`a%GV(_Qz{a[},p󗬜*_ qՙ Nꋐض ^>O3^b}.ׅBGvv@#u=&C;5m.S .6kϐ`oZeae[znJ8UMgSb?e>beL{V6+޷"atz~&N v]6  {jZ7[SbjkKUS73Z]eH:riڥ -Pdo#SNJxxM4_`6T6~'S \V>e|,:pŹl|w==<@h]\N~ַ!u>z}-CSb|$WgP\pkJG_D/ [EC1jBvV%u>%޽?Σ@DDDDLLDDDƦb&#JgXŎ:$ *Aie]kJ@(4@>"""""BYwM#ښeq&DZUY ks/ޞ11311ږ(  Wj,jy MAK`@hLjfcQF[Ԃ&u3lG,T]Lr1D1pöV[=>f}1DQUʅb+뿤yV_[ػןoe|L+}ʄ'2 z~gS_ .C[{OLlYKRH;GXD-%d@f >)ձ,з!rUƿ +֧W@گ +8F${ݶGn2blu?o 燵Yk2.#F[j&[Sq2.j+YTC|fN/+fmyr҂@#bP2.VcIei`~'Q5lbͭ1eH$x85VdV>^OlL3(]vFDy#g}k +۾)^?j# ͝k`|tຂ[7۴Jn@J^p$#X|Z}UՍK*;XܛKbR"C-6yY°ZˑY~yw~v0DNNQhlhl7u|LPIP{> |ٹL3<@GkϳN +Āyw;זw%_F5&,U(b:>G?Ikެl$.v~]}ڌ^u-XdX"#ap_úЭHxXBgRCU]fubGy~Z/Pbٶ +VF|L#&\=̆YUgފ[co=_a#7χ;'/{=rCeVf?b$Aebz>=yG>R!WUe[`]lλ/+4XB=OȶZZr!ߗ|WĶl]l|wg/X-t:'`]2lG`W ) lTkB_YC |t7Oܟb}!-SXz^{ߖsb-6eUb4Ci񘻭aQ= Ho`գV >G~]>3+`W}[8%C][.y}r`_8bdTWr2!!0ґ_9IӺidmu +:>E!-SXޔk{7RvJ ʡ :::?Z}NfتRyhY(.Ƃ$Yo.ݧOWnڪt }[C33qpB@_8꘹VY o[%nQU!Pwr=ܛ4\阞dS ]v>l`zGפӫN tdUZ-+@Hmێ5W.+~;e\*uc{#~q[|+:Zu _mhjIRj✃q{ۨbt7h)ZmW!#I'+ +qk~t +EgA`IBc/\lKlO 9n'z$>2!rKT`UFHkJҡږL@u깥teԋJ^KYE{3< +#.Ko{#1 ;j-¶^^cbLSm-vZi=( 71WGXZ|0Sr.A0 8ވ2\iZ%^2f03=K9JVN@߿tڔz5]l@2m(AA$egꧦ?$'b&edzP Xkx 1 Fxun[bWN!_[';IJطwvcŞ?5*G{ p .q0:~FMfyR|a;It.9$ +])=u7g4޷WM-Wvܔk± Lq0ZiUcj4 #ze~bVz>/@҅65˼͈T '[#F,5flJwkkf RG>^ܡZ?m_Ǘ-e'HQCǣcRVrz|FjJ5uyyn=]3?ثΗIU]7S孒5/}i[]ibdڶ5rqdqWL=SZ,M}kw5}ko +t6y{շB "tfr~ @cܱ3<ݵGu`;yiVgC-Q'@-Mwȃ}mi_Qu8-zGn:Geck[ܨe7tOh @ܳ@Ԏ@?cϖ,WFmp`)$ɶh|K4,vt7HlZ2+K 2h#cz?9)TϏ/oz>7}|qGMo_~O?ɹZ2ےZ-pV)0 wJ|hsVGӱjGƧtGEB}:⼾v饏.Q|"7l5[[2ϣYwķ-jn7acWEZ[UR\ +`/zVc g_&XnrPv<@s +ױyʼ{w4WP;VYe?-KgRΠTMiĴ' ̄Gg˶3b򚿳YuN'U.^ƹ5r W;$[bvwt|(M^MI1mhq Ϸ^SThTCF: JߡeU&nFb/z԰)S$&>Y|F;ހ"{5KSeƳ2N cv㳡蝞'NZ+W=.DyzRë㵽#:z4 !P ScؖPVt/ \ =}CN'Nʳ!Z,ي}&[uJME+OW?}f% In}m϶}} ج٨r;X{J_{%utYb{MZS^vt[#B'˟=kz^gb_v*4%y4Xo!NgR#Fv^b '_޼u=k0N=~*?< ?MAN`yk.ޞď8ΈgZ(k +Fa]lQ [mx=iQɷ/=RTg*OoA}Bd-jiVv! +߬QI-|7$DDDDDDDDDDD5E6ٍqkWR;6=kϼzKS^ WxC{dwÖ֧ȮγҧdmjvB +<@I޵O5]mپ%mfp:;ֻ7,rEˏs%m"^ǹ fLYwT%V2`*( $]yo+q:*˲ɪFUV֔afGT /4K bL4_GUVmh\:<;jlSW {95X#=@`Gys#vYK+9ZpV `.; atDUTm$w>~ou5g+X"W7;2܊,L wZyk#Z3U[qTVYc_tɯnW +sdz~Xqǿ[ZqKˁor'sTg9u!Uf~ $SwPꋝb5uQCRffGf\ڬBu+I>{4<%_=&ˮ_+%oZha4}dhlZh H7 DNNkb5L͎-{]%qfF6O܎AǴY~iJ#YozǴ2(*Vշm;#@lڇyf_u}q2-UXRΩyq]퇻܁=W1r)m뙫57s5eթulx/;)=7$SeGE^~koG,"+PH >S |ZZVE*5{k~oX O<8DdR=uWIPQ[46>=ŭk*@OI1TZ(U֗4v42+(Fgͽ +o i7Z z ߒz`cn@,FzkZUԄR%Pk}$d`cTpm% F5*jQC Cֻv;V*y3' oHǨ[ou-\z,"|z^-,rT( m~ߟoHX@Ev.z[E赽HʺҕFOHTQ~^^sBz8.:w\J@Z:\* 9!Af|ȴV+zDG454VSr+r\r_Mw;fd.a +*k6XJ"}N3c@'Ǐ>#y#=_"]w^J0ԏұzo!JW[o^[2W_H¤:5*ia Vj,yuo1wGȥh|zkS_ODՍ +k{E<|/GZCA**N$"FHp2W62^;@ 'b7}s-)qk@yllq"}jx t@;zzOn/Ӷi01U50 y@FcKu/mqX(4BP +) ;vg'3P?|qn\8voI@Cv>cO0UeB8PThkևi + ' j@]|ݽ/S[8 +9`o{=/n+9q{u=qĬWR*(ޕFߔç9<;K{o2tWZq^S(+ߟ StEJUl2zV!^ ǂ޵ʾubWNUvf^@Pw-v7OR`P^.M}V/uQJ5iR*@S=ۼbRhֶ$ +8yϚ:F:xu֫Ϟ.5yK1m*Fz˿=kE̓/1_[[Y}=뱗,N>b:+3Λk# X#5<ףaX $ψ\7[n}DDDDDDDDDDD1j5FS3DjfcS3"ʭC+VSFQeط[0<{'c̲DLjF&Eܙ*h"G{'Vnw kzFf#Q du,[E6[ŋ(.~D|goWW&娰by7 Et : ޽r=ǗywXǡrl ~^y^aA} *XøGխgZ+fNTNNʴȺ'A*X>R]HR#`C۔,ܞ2[3+X{=f9VsՒ;x֦YGk[-k)&ZuϣsH*t[=tq&I̠{Ag!aPxT2GĤ񑽌F!yߺGwr50楬]JW<@=̯U{CF YPRX#jWc ?gHt*)0u +UA։y͙(ٚvY-j'`X[HM)^\[jB#G˾DDDDDDDDDDDDLEgW(u :#ݞZ>?gA?֏=k;gAtݞ?#}_h/Oh?ߝQC~?gT}t=cvL?;?ڦ>u_j>um?^n>ue?qOC)k}{W\}к<]kw_^ >U'WB>R~xGn O?+n _+>Jy_1_Bcv: ~yW3u@dՈÿ̭n0']&6t~_@ og~1hh~vc~}; _L};{C}?~7m>{AjC;?ڣQCCj=G~y[]{O׿y[]{O\}<^u:.\N 1SBs_^ +>R~xG^ O s'?u%<+~ _+>@c[*c[*>uGrGݞZF=c]="oz?%s ;yv> _Lӽi{CC3hߝAGh?ߝQCv?gT}t:;>uS?t6St6?s?t6?st2?qOC)k}{W\Y3h`[EytDD1oz9OAs:V 6=@XȅϽ@P :s3=O`=Oa0GGL ywϸ!7ɀַF`I!kb b p*}bu>~_55":k> j9 k Lx4' LLx :"?~gsb@ >cQ3^s&&b""""|X)  :>Y~G˷y ;?J DDDD.HކQ<*6~[ oDOyqc>""|'Cl~O!1_48)ߡ?Ak˔q3.ReG'#yzYŘDǼV6}d @鿡\zJ1ޏ׍W KYe[)PٙA$9t|[pp蹃t3"Tk+IbTc5_cyQ\Fv®U,Is:ގI}w6+_ZV, GrOtzz~v5 +.(Y|$Fd7SLW610$}` Ow2 )ğ?8Omh\˱. K׾@'uOi*xfx.<Ю=4u>&Nstzoaª&Wt40,>3M~wxk`{(@+hTyIЧN ,e:": ; |T+_jzE3QɀZ]lNڲeXWؘx`[C>ظ=6㹯lګr {:g]G&cmF8]_|H IC-qjkJ)n@bsD PT'M_Gבw*),T܃-/BË7=TH{iX2kiȰ"XIRIUj RVO(c xlme=-w񑒜U%M{*v@QvF3FC"c$wN^Rr= ԬjR֩-XGPt8^xeFgN%jF CיF}oM{W`SXb6[{ۿf1aJE,q;H$TYbt]5}IЗ?'5}57" VBvz5Pd{Ti9Nw5XEt,z|>/{//H$}|]GkI-PUe Aׯʏd;KƦ}`e'l+It̼\NEM[@ftg[yޟM6ֹWP,e$}mwkZzt[Un+څn `{s -l(. {-,8q$1ځrY%<jHyjk̳5O8U7:0q1_UBY, +R*̫ jwwH0RI'{;|fku3x=- kj6Ǒ$t~!<4_>[}йXcvF r +BUj#Y}_9l2(u NL'Y*Lz)欎JKڅV6ԧ 3v?,ct(sȴVsm@ Z?eK9(I5-F;MQdH~UT[jk_^baCrH=9~S1"I]%/N=} ;&X,FǓ wgc;7'K\vkU~7V* Ī2H3U3PrqSqq[MK `[hƩ_Q%\+0] D=\hD9xE΀l?Pf=VbV8Vad/39}j5f_"|4eI_[j !o>+rCg&; L} ԿŹUЂy{>"""0N.vw^ٔ\b3sa]#ԱϿ/36'O%\ր/ \3m밞FޱN/n|wcX.ckWt^:fvl{}&HOa-'}<. VZjCOj^dxtyd;d/'|;iUg \ ߰]K~j4fQXAj{H(cчNĤce>nO"I־a;tkqkqmԵeKդ:r$!FNMʠe5y][Cc:}[ȦZ׶+Jru_g::ar H"Ed^Lu~ԯmzb[Bl0 fkr#3k[N:eoo,';k;LXoRueM]yu=Dtݬ\lYM{9w=wU˿`e5V5w+[d.܃gMM^v=Z֦;qR4N^%XGub1K@$b%/ ;os|ŸT5mY#>/$~hZqr +76*y{,T+AmdrTN v5ޫwW;b5oe܍̃*?# (6/iE5eewR ;>YDםŃ@oG{hųjMk^۩K;=6&@vd0K걫f:f?2<ǯGN8 xW5c^ +~`O_h:n^wY5Պ`w ;<}yftr1*W\:F䣅{ ~=ߔffuNN;X3XQH +F=3HsN3xB 9>|޽<6Y7Eͫ6,&lFD ~\vOyѺ=#ZOȐy:H|;B8H, pR{QM!{'c=ƼO>^?C阵ڛ1@m;g3:N](䲵e{u@#}yޛ:OcMW['0nRo>Վo[sTd>\;KcSmە}wmrr |K7k[?As_f/G-y}LNwN m,@,9y8zS +wr ;u5c?f4f30;.t +jǽyU'ddzM;h?|uRdkMPxKo#^)1vM)JB?* H=#}'?{לpp/V#1ȮTXxs{snm94S3s༷ t;ڎ‡Fʔt1N/-hGS@!And'u!ܡ~TWį'>|k^;|΢:FUtXQdF:;HǼzvw[x(rHG>JmydmVENJh@}&'J=o#>R|DtbR>}.uW_j6E`{dnt?Vմ +RIR\L1VTUFhk@|>""" 33Fb"bf""""&#S3A5FC31ZXI 7j'Cԟ6$$HDhLƦf5Lj#S3Ljf&53+:=Z"NT̻RvT#j~Y*Ð#+gBcc)_nMNYaƣS3j4&f53,3)ͼK/ ӷoIeF531#U8C%\qDRu񞸝y2rN3KF⢅eVaLͯ]ry)C`'EGIlt7=I91ȯ|m]v4tcc=,*"& +7d*bQh@*@'}gŮkFeRBOl)|Ƶ(fX xqX7؎㴟Ӻg쭫~(A I2M浫Ą ;7=&""$j"u Π1>]$DԺUamb֤n*Y؀WpG@#P?'P񸣡{AK350bNTrv:'@~Oz zEC}V$~ 'DDO<XR͠7F?!\2N=+X^\ +o#}=nUѓN1W-rVJe'}%ĩ]wW5{*#+::a2O:KK%tGg}y/xVmJ{˭1߱LDH,Ȱ1T]YQjX@=ƏQ ի:.)[v@U{>bNWG)}[7v,fE׌w%M+/_ly/&#lw2PM?P*kO? xMYۙU(Z8 + e}v#Dy`fu2ri_^ +ELT<=>}d[> )KPw + {NzMu^rȿzUaCt]ߜ{PkoN\EvlfΕU+0HyoYgֽ[\-+]d̒Flm^K~,c*$?gep~Kĩ-.¨vW=WG {n~F%xk3׉i ȩ0)*6EfVuBgcRF^WQۅz"}Z VڽVFM}KXYӫb/IM:n%}Bز_y5Þ/~\MIkr^%y+ZUV= S߸OϿn[U9oeZkÎV(:ϬyK o3chnErKk̀|򮽌XJ<>qԭ9G?]+|R$]|>Eڜk_A' &k%;%[JfxMwuw[X ._Q66;yo{tYx+nRnpPX0ߘ'uc+q6oh_Ǔ/=OGtLÉumnB9 \ +|O]9Y[u V^eȰl^,nӨGH)Pw¾jA};c4W#7/b BRV/m)'cJW~[??ٮgWVʃ0_-Hk>Sm'vBM v$NR=em hxe`56(Dc%un-Yz>88Yq#"ciʭZںjR+0VbGrazQfrUZղTp [jc][F^~ ypF]EE`]2U,~@:u`$ -X=mԵͳdYB;{kr{|DDDDDDDDDDDDDDD@0{KzU9s5`A੬VDr=\،Bkz?z%}ONzv.@=ݾr^GD+#!v@32b~S+1ፐkN]ǼQ8Dߡtub P*@ {?>dScWm6T{lH#cr9K>knʧw=>?)P6K1À%rf05BW$p@lvnZ:)cJ~/]uekB l NHwS[w#ӏyY{l袖ź cA:gwNģ ^=:CjW$'Fo#=o`( 7;稌y P +f |؟7M7q,+/#Ȫ#K#n~y-"!ow#cRƚq沪P9vޠ==-ce8Tۄo5 v}u~g ؛QЪ(|w=Jqf/ #ͽ{x}Q[{r s^^]0:Է 8K67R;Ja᪫j赘‚̒~bOml]w[UR"+^ O֥Jn1rmm>\F[>sA%ۓ +4x +wP;c:VUKȻJUw +QɁo˸і8xQɭvN*~RIk7X $BH<Ն=E6̌u}թd:tD[^֖.R7ܑ6)בzc^Ԃ1ڂ-mO$|Lq[E~']؟?OO)zNFE7ד\SV + UXh`[OL> fWP⽀ |ZZq(ܾ!^cCmT|NYx=~"Uk*ܒI'DT]9r1ҨU,7 Spڋd7+T(aϏOc~cUPoJ$ݻ*סڝIo~8B؝+[S2^ 6|'ٻrF9n>iﲩ@O$h|w=Ac.|uKRQxpアX] d1ˊ*;^ϥ9/r d5˗o_OrdnLT _t.[Oү7-$2)Pu}b=;x +2rK"}xM|ܓzP踩3{XA|H?n_Y_=Z2 m⌶mTp?6=b;k1YԇQрnZ}[0~sxiF^[+{>5`wlw;Tv +}7Ӥa%*Igrł}( i4cS11Qܔ'`rt;S1ڎwNqJ*f.@WKN@쳻gv>lI?< kr֌3)^exaW2 f;+ +~K+]z*}d!%~aO3Z1r  +~$3SWbWNPcJR}60P"G K0w3'`hSdukH2(kRnHO[d(;?9/-;RVxkJtv{yaͯE:,Ny3Ux[-(R0UeL^fsIuݶncryEjK:މzib9)|A ~Ex^6YP?)ծ#TMi5VF,ݼI7YſcikPXVna#_ ̓)3iWSas""""""""""""""" Vƥ4f 巨<0};7޷׏_ۀ.[HSv.6= + ni x]fՓjrwܵ~(#Kr1 r5G_Fmkvuy]-Tǟowpr*xkX$i֧^'Ju+(JnzTmyԧj3ieSF7Nf@F-=.EAtG +F=׾^ :yИ\"349PEGf]UVJ`({\k7֝u#&?Vr#c`c:]q840vCF"dwof]2kqQP^X>LFzܟzBu3SScl"x:w!ݓGZuGϻcSbYk1ֈ]|5ЍX&Xy1w߿r$Pk>}ۿyp[Mll2kLO^xekj` pA4p$8jz-`*h>R;RkzJtKz{yk\ +U4D˽@DŽlvHԌ:S'R ޗpez+!ϸ;ܒh {);PgR:`u5`[9l}FǨ>G5JXv@GG|eq: ^ʕoA߿K+UWZu&7Y +N@]Pxt鷢>rgLwLV)RWclݶ|$ u~V2⭶Q]OY[H 0 _h9U^6J5Ytzc +w .|d#W0ߘ5/>_DT~~浱OQ]Z̶iSϩ6Qf"""$K:mVז{ 9-#)z wPǽ-OYf v%#E{|d.O>;}>G}qPGۿY3 +̾Pt["? Րֻ>E8ӯ殱3:kY=ضUڬV7moAL滒AX,TDz_zjMM(@y03ނ Ǘ|7=""b|`ڐGGOuDDDDDDDDDDDDDDDDDDDDD@#dt|mH@l{$%nΪb kԁOsMG2yzz7=f53U?ƚHi2OTU{-(_,T ÿI 3_O,U +`oDf?L˥u 9;6=g+{>U=N~U|݋;^QbYwM{⪀=^rr)bhgc*SyvD 5kvc G_uAKF(xAֶ>|%Й5=ɻ#AIc^Y,Lz7ӌq͡9)#zUJJ|?, c+N6=!>{y1b=t)#ٌn*nXb>R_P`=Ue]mvyagWIv^+SEXkgm|?5d)@A$pӭT%Y5USsErqpKq A? ?:^E'ib{G""""""""""""""""" V?ƚHhfkBɮQYa;_/bK'El׈Y{3h|qZ5zf`ֶ@e[*qnȸ3C+Xu9>Ea`lyَmwzTTQ| L, Yc! ( +,|vWQn)׻u{?+9df+Sfg.A%G"FIӱuz`~p&b|htנ`9r'\wZl*v-dJ`@ז̬lV}W#8j1VD{='xVb}F˺Cz~K j2Ӆ讽6={<2` 9 zr-ղrFaZ֍r(e @y/%M]`݌:m=&ǠX\Xm2L"AɳgJxI֏q޳:J_I:IOr|fb"""""""""""""""""""""""""""""""cS15hhqݾ%9FM0Jv|·35_l/L߷Ospf7313/ru2'QDDDDDDD;DDDDDD:'QD7zϨ'P7DDD!ͷZ>`*'AWC :dӽ? fߕƿ UQkP=y[?6J[ܹTU,@h{C0oZqڊJ_6']-%f`d%* {UtAQ|BCd-{Jt)vIʩ_>Fѽv=3d)[S<jG7`lKo9tdfߔSRxzy31>@vW.Pǿxu*\,[|/ Oe'r[{OnZg# +1 K Q.è 뷮jǷX\ "ǽ˘$bY)q3ݪIƷr]csږlXZaWB!n#ȾPa^=euCŁc{=)E{`"Y;>~{5xXYoGUOa[ϼiq +wTj@)bG};v^H|jڟ ]; R@6;EcUxį[^g"u5n<=sގ{F/tdCö,PtXl#`o{Qk] ؐF v$ ߴB㕀V5WffY}z3dٝv;ZBtG@l#3 <,Dw&Rwu>zV -o{f3Zlc (,v?xUuɈRle9tlVO # c>`AUu_!1ʺ5_5/w+=MeU3-SZ߲qu>ۮ20[ږ4WP%[z>`}|Q6F?Qm)x_n{G߳{~]祽rŤWc--TA#zXCq.)]4vo{f ?h3-_&ۿ+6yO-s{T.[Mivx]Zֲ]/S HuIkYUqPaPE˛Q7'J6^zSWWSxɳìMp +~=[9BxPDv>e\qޫ)0 .X,7%d׉[kDR22mڍƓbF}0SlLQw9J xnA$!=rz'w**lDtԑ}J;#+ :2߸39tڍjf,*QܒNוizޫ8 bY;NǨZugftBZNu-z]4e1djfoA&fU _#e]SwdsSQ+rq:#SG~lx5q_VϲFI!~g=zyVGK+UfG7$tGc=3=ffd=39K9> +MX|Og-l_^Dd#D\]YZ5H:1+˭-#eaABp&Tq`R%bS3)Owpm$=ũXm2% hz\^k]PFKi#mcڞĂye}~[r7XYaX7AԏtܴdXJ+:']tWQAW[k1:$A LzuF뛊ĒNI#ش=v23*8`GDEs2Mg_Tz͢.$I2/z/b(f_v)} hoY:OpF#+-UoVFHg Uo +<ަf:6Ho/Y템Š%Y,A*tHߘm1*;.5۳,99tv8 .1UE@,tM}7ُ+[[c +Y|2l 'h'O\Hl+!i{˖xT.}?-ȝge{dUm]z mq)F԰$7q:1n՞';T=,g;egP[#U|/RJWmwp8Bx˞ zo_g'noN.W5zICv_>Ԯ>f/Ӗ񐖲řw3.}{rszEEmj;Ud6Gq6vMf2rћ",U/A ll7i:l5شJV&F^L˥ RoD1lEp>uǏɩe=n5"tIϚHb0:mRlYŕ!|Hֽu1g,~ѕ~Ua#'2)VtA?1$d%[cVʘwujG מU.NnBe[}|Z nU#*lPxVFjײ]|dENk^ef'+ iLZ<\'Rgd~OY+E5[c TNv!]-E݋<=fUUem֫Z<א߬USN33eQVO>]uΞU+(;<pAo.Ld}&$ٙkH]O0{=ZɳCYEWXQYW79h߶c[g~hWf670܀o~#f|[emMϏz04r;O]E=+O*uv\Iyx``[M}&l>+ldVGAO^siK(%I<{/t?WM65xcV+)}gdw$֤O܎'z|:rҵ) ˝{$/JFm> ĻĭPc1[G:P}fޏLujSiqSr>ڝz/MNe"ŝX><<<<:NL1B +8*Tw?N?ahnvQQGbyogTRWƦ+Rإ,=Tg̝gϴXug +* ++ˀg~5uoloڊһfm7&P|G q0hWxllO +w b7m[uq)|Upu^)rT{*0 t<<ؑzbٍoz5N:,'1/ "CDk=) +pX>}{d:. [,"gp?{@kylG\Xu5lT0Z6߱${MΦc 5P¶J^wVkI>_ngK^+ c5X.^>`Ժmwg rP 9uktLǚ޷o^P6e=>ŬFJԁbt>̳"~>#`(ߙ? %b:ܢІYLRVRA*YNI131DLƦf&b&&b%wT5LY_!P9@ǷX(LF,ޖ2[T8ĐJ;zL`k_eu9BP*[>tAt'|Weh"TnM#DylqמƧ/Q0ByVtU׶YjulKIE:wJG>^^8}K1F 2;.0LvՕ`;I:X~1TbV#G˶ICrW:}܈1*(j)[ M {WL2ξ.B83 +)$@ﯔCŪca۷ϗy:; %,mAv6A::;w 26RٴF)+2:6G_7[ 4KgfOr]@7I9x:qahjZbu\˼ +ٹp.Ӛe,  :5[?!\A=e=,-r>#Ĕ@TdOKpU]bzffՁY⠁$̒{w1}ƫշQ0b!v7߷V-h4J^ayO;=Ar֠Dw* zUƲG涍/g@w: KWQ\}:=V;ռD {w9bIb +<CrX`n`R̅A`N/MxujmT5!:hw'=z9ej.{){KI}ˤs䧻wD~޲uzOPPǬYR[ڦu~XT.3_.Y ZYuipVY1: Ԑz$br>)-wּrC 1I'yV}i9׸w~X0;o~r"\gu}R+nA[w޽';:4Gǿms\hF!PFXÿ3fW;:q%Cx` <^mXArFWR YzB}e_y'' 3 31௥nL$1;U^+L>Ԑ\nEOm^#Ëď=x_&@,ey:,A" ßum.۵ՀZ|'VuIu.C+" *c~:Ala7PzUTTq kju>?IڳnZ.Cn+k`hgm& m,tln·}>& zrvXmkǷydcYU:ȐQӺ}=/zH?O'2LDDDDMr}.0h@MlWkH܇XC}3%7O(e]k[]zkӳ5֕R Ðn^=Rhqj ,(82sU 1zK\^W^E]Z@C['+T޴|^϶%};T~dF`։yOl+u,XNEV826='3үJWfqN +mwJb WY lw{[u\ڰ:kcT6Ù`u_u#t)iL +İصI`UȂ{^Sڪ,9Tm +$9l@k}irʂBdVH*ZNaɀ<:~*t8Z윋ZR%8c_d0i\|zkP%H1 ?u[*FV_Y`ߟiºҀ812`35,UV윖.5qN !Mf-â2]g=PaIlll? Y|ڶ 7FMǦ~tpֻF4}f:5^FSIBX&Bo=2&{֫[PZ,XP]'˾M]ΰ(8 V.G!JV+ Y9CT;RwţVh*T +~m^QUi/kg/bG6aqR3:hE7}; oҾ}m3ZI)_pSmh b?)EAhL:}K I!g? yN7X+`,YJa`h}mOqY*Ty ^ID| _:+:NZu6P.e7p5c(Ρ^Z@#y ݟԕV2r0՞^jKZiݖg3RrV8؄k 6KwPY^zMΫM}Sφ6k܃>stWH$DLr*ŘK\o3)j[/RUw;?#yp4F}KRnwޤܪBp,x+}Eo\`,`lA#GL0t*.IJ^' hwmrnZ,H$֗ەHfj2ysOq\tޣ_To2,4QV* +|:W<ӤbcYsW7Xo mV4;ձ^b+roAvLN32r73ShV`BY: s⌾uN!*NOol1閭JY@%KUy 掣JVk[3X6o^c:k+Z2BlCz>rtL|YpP`G{$ߔyFG +qq@bTXr6; mgM@l\826F*ty 0eMbեjdX Ad`hY=; eDDDDDDDDDDDLLD\ۑp ChrRy=:kv .P<2"cS2ۑrք_aRy=:gK?vseY .P@L>XnWnz:ڂbk(3I5YDDOSFMl_G^]͍m cTP~A}NϬLƧAix? IɞǜƦbxfaןMZ6!V##ݛGѲ2KH»;[d jZ31+>!Cc#K)8[hΠjᯏ-16+&iڍmx=ԏGQrZW+(ꍟnLG uMlW~~Û5CT%t\2Чcs2.WwHQo9Uҟu/u4f=(ªOaZH߻|S/ ;דbY{^ 9]\mOC]ՅXR=I޻z4e +{F%ngg"S!ǘؑnzU96 }T}?db7nD=ɀ応[z%.=ֶ6c.?I3k "r^`|xsu'-X{1S߱?>m긔Z)[t /oVjHߖ-X7@@BT3F~>-^5!֙;ܮٍV'^IFt$ʮ}K˥5^cy_-}Ur] D^eUTX꥾,>>Fm \ ?y}߷=OF;?!E-]b"Yw|o)[ }d>Clhi둙N(=0]9d3%v+2H >""""""""""""""""" ev:a]՛;_fWO'#9 YbsjWU$|s{5]YuvAnn= +KX'SM{xݍmVS9&**: ]R_Lzөu5<,Tk@Rb܀=qqq +*\ +ݖ>CVz$kcꏇ;]7=`9>1m],P$p!޽]3rԗS]o_/<a/3 {y % k=T??Z".{.NdდVGƻ +:HPN۶*=*+k5z39?T(~Cs י1)WL+k%oD FE>JEMZA z' +G~nVd5Y@7>b1m%ؐ;}FGiMEՙv12 ?W2W# +U$]CV(-@LȵZ.T|Av&}˵9l՗p{;밞o)rnzlZتwٯ[/0 j Gmb=@ߤ?݌-kbyl%Kk&YUt \ 27*٘VơE#'_Uxl0?y^v?ꃩʾfB對C϶͔6v~:;L9:Mme 3Ҏ+[2h;]^:52f!T=S9=FVu+ր2 #]_s0rP|T$~f\VډԨ ֶ4~~rOsoFzrF5KxLUmN6<ǖ#GvK:dgbO> z'z#g=/k),tSN9;=6@;Q8y5 G.  )PܫV*Wj4ΝR]Od%LY&*92>n לԒǯrT<|@d~\k~Mքղps=8jXzbH6Ӓ10J˕K [Z׵x ytzXVZ_tmlo3d[cedSVA5\`<6Cc=ל{68ʷ)vђP)u>cŷ21JχY!C+ Hy'{)wԲuZ<1^X\O |u\{B'lm;WRӣ[W +YvF'^#/曊0r'"*lmG\z1򸍳 +{y_f1>@R%*`=eMnwv3E]yTy6?,݃,܉bA4H# ox4tlS5}uOMa+HUT(j_oFUwQ49?{sʇAA] `{([fzV@cǏr_=kԴV^E[:0~#״cLm0ebWz[DDDDDDDDDDDDDDDDDT_2CmYbrɴi=[OSkU.?Ap>u/v:~e|fv~srs1< +ljUe'̃3NX`2fZr8 % cTvA;PvG3RA_/tv;v^e^Zy}SլU^RJ7|gJ;+##O2x`Tw`4=ϯilխŀ 0QH*@ֵ(TPy4?xLhdcV!ZeAmvn>F|`YCu +@**$gi<_ y\ZuJ(@>Z(7'cT Mj\ *9ُUktVSA_=hTP]|5娯PVGCX㧇]hU +֩Tj}O*iҵVmr`sToњٗb\QXb|ym:}0}q>< +ڎ݇o;dR~$cwGx|jC[VH PT5>@y4']Eb<jkfUK"@yC2)+H)xl\uĭ3 /N^&0Ae@2.Dy<Ǯ Ȥ"@$zϛq)ږPH?O|z!JG1v=Y723e)ju `TA +@v>ǩXQyG!9nMj, +6; 9lo)g)\0jB܊t7Ev2"]$FIRHQt6c@5uԫwCdXUh`!b +5zؖ_oe%5N;vQ0ɕ9wvv!'ZUeUI#OOlO4J&!fu| o7m^^h&0>{6~65J ?ǐ%w}oR5zeY]u!sb1F#C Z)N)ڒ)ڮ;+*cXX ]S'QvJ@L Y ?|lxy.\FÐ{DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@Ve. v-|03ίg*hRm9f]Ov=y]JKUØ|-A6u?;2wRuuAP[Wqᛇ^}QhX[GGGϼԋoMXdR>sE<C"U%8ýmYRI>2?ݑǭu#7 ;U웘̉<Qg3\R@LUZIiʫ6 l['HJbՓM8%mmw<蹟uF}VG<"`B'oIIk(0Y»xȼlO7tNq ߆{3w=wהHYe^ȔةY ,mhAפ '.UTڂ1) V}d[9 ?|FnNrGv0R#3]G-9<7l&w(HWT""""""""""""""""""& oda/ꦟqq^ܜh-<_.` +X@yw"""""""""""Q]oRꏁKuҖ\lo`D uG ǹ &d]DDDDDDDDDDDDDDDDDDD!]VqWky*Q,b"&WU&=z4L|]#Qqk]%k'̒}I=̛&w`H\O+[TA|=JsoQ.~،|}>k7/Z4=I#g.#ګ: ?D#5܊ue GU +@ O 99o^z}DDDDDDDDDDDDDDLlϏ +s 8@hyȝ"r6?P}w?3%l0#z });-2ܷޮos[EO%;S[V,3ZTGRpԓ3lYf$o̊0bYc55>>[K3>-iR@yGPm[Ye/hI"Ρ[e1V?ky 0eT|~>>~) eNz.Xx~Rxe= Zg yFΧ00-Cl@t<Ƚ @l >:vKŵ5EYXvl?0A_,"'˸@K$` F`Y+n}+T)8PBa:>SjEb٘T^] *$iz|Cb =}'͙=3\{+s`'c,iPc?!o"<G16KO P][on,:*zeԡv.S/4]kɘKwG#{=A%W}zg V>7eP?")Ь>NY痒Ccʎ"DKtJz>8>`dB w3K`x| آ%?O \efѯo 2""""""""""""""""""%\6e`Yo@qmJ!N +2z!Gamv`н:мq.!@?މUa,oqѱUPb~˓*w)ew3s0 /}&{Go?O|$NT}A4ô#cUWt]W[gTƽMry}_q|gI;5zqV/"ͽy`5<:!u%׮E7X(*ou4DW:mVF PW޿lWq[bJ}`{Vy=Gx=8R7ɉ, +s߱~ҢWҬ@;T +;ܹůǻ@R}|Cħ<:5Tk6S)JmlNxi{^H]H7Q4bY׫Owm"|{#mwې]yoj+uNW +˩?lb,,  o׷y"lcM7ـ`yVTCBe*}ħg{+FEJ Udblzohн=)P:( ]=;N_Cv^\"}zeqn"ỮS({qT 7n[[z|eӔ\TƷ(J?=""""""""""""""""21ez%DDxMvp2Bqo%Z2/n@o+⍫|lGqVfU(b;]Gb+c:Js#^]=/WMjTh7?1,Ͼjmc}xO,TΦ,ttFy=%G];#ZZڴʮC;=v׬FN7kroYi_tw R6Im,"'N W r|}fhūgg{DHo+ʓo $"btּ)d`Um$C@3-fsV^Z>@"}dK':*WS}>u +9V]Oao4bjT-@ϧ̙ *ܻ TUXzN}6ǿ١&)Qb$[::q(=yi^9E#FyǴbuכֿw{2X<Ə}Is(:ϱ+eTck8#]&WO^rt"D߻&\DDs&:g:Wdjln++<:7f{oaaȡ7<=(vO2dDDH]cQ1l:DX(S)үw箲i5CT7,DDDDDDDDDDDDDDDDDDD +N 5c+gmb]utz^L [mqrGٽKh״7:N띙BK²F$mF(.WZ0xuo`|$DDDDDDDDDDDDDDDDDD@Tdtz.M wG:WTWܒ|GG\DDMoڞpzWO?^@byq+Ġ{;{2""D߻&\DDī: YOjYyY4ͅkw/Xk')DO`tP~aT_DDDDDDDDDDDDDDDDDDD _Ip{\'nô s3H y;46Jt=ۘ}F䛕v-2A}DD0&ɻ-u{*BmfeV0}JDb""D߻&\DDJi븼;qe4{hd|<ȯÏ- Ko] Pv UMtR* ocw'B\DDDz[Y܆)P,a9!_̃eԳ/g-"% 6X +y9en]XE*:.͞ڠ$llnvy}i0wBNM9WUnr.:]Y&ܪ X:.@w>.ȯr0Q6f&,+!?,\{UmB6H[ x~[. B< lwuQeU']߬#ݛqZ_ +>#$AwSk젍 <|$ٓUD+>@O9<Πc +/*C5An)ϣ*fJK UPB#> Yד]dC0u45糾>:mG!}^mY7Ajx9v=Ӿqm6_]:޶@ǏX^07ڕt '9!{AۦήJ* ]r=z>n)}B!tSw )Z؀>$ `׬6fSSob7R`Ñ/Ʒ J>gֽ'N1 м@*O;A ;vϗqKv4>يr+uamHa^@&,F`Apw96fTubX=T,^gy^[ٵA鱿ރr av>hɫ%yTzڰaHgWѱ&iJe(?lxW3VEwkem$7OIEֺ kk+nbj9+Ae͙Ӡ-"r>6|n|;yqׯ{ٸRNt.ۺCg>)v +>$?c龩>2ua|Z95T 9Bɬ6aZ'52keW[Zm'~Z;љyG~>W2vXm2Q#{g&K{v="2é)fcɐk|ޝQŁIN@=:_SLh.=V2%;޶d) Yb>A.|ŹtBbo ?f]N8 cYz+`&-(^V0Qb>>Og܇z̥\~0-_N7N^\.͙u; h|O|_F* -OfNnU8V#=6HsLčTWK*D.Q@W~f]&pu~C;ޠe\J|魸5b]7awdu5;ϻ3)1{x[l'gŹC!Hv?1>" t:=|[ /gFe_o#iju- }.m?l4αmgCCbso1@?MšTE +*"""DsKajiՃ?R-:=Gu +zV59Գ}^co=8jSi>]rf'UlĹJV)y.<g3=9ZH),m}wys)gY(NyN#씸W􎧉t[]m`nA ~]$ޏZeeQη@5@9y)￞)iRelG'lQc){;_E-Vn([TjyZB@5+S ,Qca:_|y.wl|~FpROO{=۰6̂,YY;yQ شujlTZcb␧czyS,jfrmU;.“6-w3Y[QJ=ϱvcUӰ*TXHT.*܈D wJF^[Ż!#~R__CT3*R^dy޲3NAzB5/ۙVdY텍vn_V\PcwlRH(<2cC|jl|:7|C\,i:]n̠eGj۰_){uUV;#e,.ݷrt~۬"U "if棱=jGGDT9̤[ $|s+u?Et @*yG.OW]uiG6}127#SFNWZ r+T0O.=6=/5o`X+:-nxk&υON(@;uZ4rc}6KKۺců#3)4W"v8X ) 5[ ޅ[ڷs`U=w{[x877J%a-Jhb=l|u t\gV!V# ]h(<.= +]]maqq"`[ ,1Dh6l[(tVPBT YOX@e(,W_IQeu7E[٢_%c@|M J* UTzʱ2z/KN&"؊qfrૡϟdqR\RdYh +XV}mhv&45:͔DNhq,%u<=}@{KLɣ1^>τLMzt- ]K{X1bhY^.m!fSZ^{y;Y_O:Em X T5 a-BMΪԪl1vLý}w+HJU⼏{ o])P]K+pUɱљ_⣪_"w:,[q:F=U[σh܍ֱ@j0ʲǂb2&WRVËPxvYCq gm']*QB/PDUM,ۏ29|組Wqv+mߤ̊]`oWfWEF>OFoᡴW}O )TQx\y~rg6_oL,O+xƱc +}w>s,_['2yr 5m2Z-WS[Ֆ?0I [YC#4n{%QB[(ՒGp÷|=^oK7Vx̞9vV_q׺Mk*{Q\f\^he]+FűBRǜR.1x>B^@k2=^O_I\{1=-:K5ֺ|7%6ObA;ߞr.n>-wtEPuۃy0:'П9?2zt9Y*Y{C[[3QW6%6I5ߕ}:b ZӪ;ZqzG(Dc y#ryyaMW:Xiю0=:u(`R7K⥪]Gs6w?)y2c5ih|k +"lֻ'j`$L?wq֎%?Prr ޽evEjǮR16@/ٯM) zZP N#Xf_fÐA^\[ܙ[պ5ơX\2e*rז# Q_|y ~r&)Xx*xv|j,T #? e([XKkn(Adk?)?]>D%cP9.˰?)_5ƒtS#ӗ/"֠ +>Qٵx|[]47`eRV lAm}vuվ:d\VN(vJ8mQPGI6xZo˖4j[ـ*]`7O{Iܪl^[G_[zg_$j5+L[*ôo^.TmmfK_]?G7$z1iٻOęe&o߻&\DDDHSQ1^Uؤ0?">𭳢·G0;474Axcw|ED Lăfs{W߬/`?Tkyt.z%&qz?BVb{yz]D?]J^RhRm;ztp%kU(>/]9;BM5"x;|#2MHlUB?9dUX,đu1rq8xPG? TJ9]h#_h@Б.wk1b%FF$ $vֵ#btLf-QfjeAo߆阮ZMK= hO*m䡵lv3NגvU+K">Gi"1rlfSJwΛ8"Pb^QS25jH#'t^e#:}Ve$l~IslK.Y=|;!J1Jv#ZX K5rPuo[/5E֕YF 5=k(@U@(yJnMFWneHe;>/¯JE ;y< HԞ&ˈ# +^ |ߞO¤9oZjBqaŴQ2 ,L |)RV A?OZ֮  tg +kڅ +x.?r^%OS"}U5UF>Z:+ 阹 +-֔5&_c[P魫]i +)A=; 翫y̎S({7>ڵ sP[О0鸢Q_;uXH֏USqE!GD׏JY@ݏc`clY:wSJr%( gu**h<|ߏ^JFǯy`0nTOA^cEEt*RXn+{K|zk6"Iؐ!zO35T.J_>9iTr݇~'}; Mb L߁Pʑ +^]ҵx"#)uTjk*TR>OMkVM~"Mrdo?<$u|G=}Tlטr×QN1cUhۊw"du\ڧ׏?"ȩy_i"ȩxf"^>aثב:Xٲj_OKG?3h"G?nEOꏦ~#'E?n韷qxQt۸d~zg5יP۸j(}|Rdgc^16P5cg]=Ml.YI4^O7)m~3sYUֺƯyw_Q韷qew_R{g(B]UCw!uW~G}n/U ++EfܰO@|;M~/sϏfDͷ^F[T2}?P|v +mOOu:*\d[SF-z>yx^՚ٔBwŁ*˿M#a}u>YS4~[; ";5&6'忁3u\LTFss:*ɏyeIvE.b`Qԯ}J)PzTlf HURdfE#dasPw+Sɫ.,EOnvrl; Z b`wMWV`ٝRG'F #gf-kayaoxʦGqs2VȻ +^>#z:=.M5+~z}[=m rV$+*,I,Gnޛ?)s>bӒRY\6ܓڞ3JV,`rvw#Is:NLZlP侺3bSA[]d9`]l{ h90Ns+2>ڕY<ŦF?k_Go5/~/;i]zMV:2ٴ=`,|,>8֏*!>b~׫֏x!^zkh^ZcNjihZZFϧtŗcݕT +U3UVѸ5H]v2?Xش[Z ڢׇgn]0&< +_W=_/菣UD}k:#;_EN:6=]/Yg^z޿,%?tZ>G֏?Gt:Oi]}r_ dwtq*]~ȨgKh_wY]ԾŖ&kXvIH2z5<XWen^;#GC~R,zUȖ>X|P8h;y;|.r0DžC{BΤdo~޽ݪYT뷜ӽn%R*8|;׬պQK*c=uVN؟!eF_QȿnCaAMv` ^;#~r>ǣ`,XBCIﯔ0:|] +ъvJ1n{|5}̽Y-}ȼpHjVq: \1g6ert +ljOnFO\ r+j?36)uGQU0c_Nhq>'lǟq6p455VOe!=cb?QJɽV1/_'iAjzTvYOdTgCRP޶wԃUu>eW5 uh`T=IQ2.65c͍N֔{rwd`c5Tۍw2 $: ;{?NONm96QqB"Qˣ_j?SK)8ίF^eCݻc̷"_6F} LO]}TNnĀO"cZRʮ\ ׀'3=bO.Zo +*r?RőKkd o]~ %=HnI[$ +~K[5akִ6{wO=*մXŅeldVa~_9b,Wb;Hq?P=> Nqy eDDD:{zG˳\ְLV=Ʋys 7+RǮ~k5GЪr`ΪB\'}=hȯ%ʝ]Xl2GȎzDDDDBպ + FR} j>{m̅޴O/95W6#Xox,{={.Wm݂pVv.U~>{㌪eAʱFwd^Ѩk+ +uo}3՗hƬ^z~B5xU5wU- gF{`|~e5]3k\čkbgcT7+38c>LHO,>F aUDkAyzޑGI8`,vvܷOs=4YrK xQja/a|G6]h3c:>|ɩyT:5X XrꀍwٓܬOg5pO3!>}Ok:=e.Y-Q%A]kϼaeF*6tt7Oܥ踹9vuʼ+E\q}0,#k4ZJZbƻ}z1rlNb\&!Ru۰>2z6K2 B"١x߷b|{LLlR5JժHߐlqcӃ0[և7kԪf ?v;'lOr{STuz/Yɕ[xƵJ= 5Md:i\_DUw#}sj˺vRrƻ̟g6=gwbϯI_]>蘴xm|Gk{۷n[2N= ކbvvI'3""""""""""""""""""""" +ıàvO')z5 zn eu&]o]3ZC$Zq]JI Rǻk7Q4]K#jv86`tu1zCaݑ{+_SQUE7C&Ikc.>BYuM%DDDD#γӎ8_CՎwO]ikI9p˸DDDDDDDDDDDDDDDDDDDDDDD 4B r:(hw'DDDDDDDDDDmҟt/-M}6]F}>."""""""""""""""""|'<:m{H!>GQ{nf""c޽fb""""""c~1>ճ|H::: DDDLuf""""'fZ`8b6Act;Z*UGpA}DDDDDD10b@>S1['LDDDDDDDDDDDDDDDDDDNzm)Ooԧwcy/ 8u6u$4d DO,åPI>;`&v3OD>DDDJޫGLUy0/aTO3^J6fVvj' g15eV}kͶl/S|kh楝t,^1[u'EXHU\H$޷s=lCQX @b6r;K|̯Se]zڐt}e']&uvP$ flnFmusj /iB{CEgJX8x\1°i>>dڛmT>]DDDDcy`$2"""""" 9b{AҋZ*R`a+iU |筈v e|8בm>rG@?TWr[~b<O(,pǺ]Vv$ u oǾj֡NoyIo5}I:c=F<}£{J܏nllf2sB)=XZ IS]KeUZ([܈ +>$tOUk +C:6 <2Nvb`Rٽ l(MsټS1¬b<0fS6uhΣ,bE,Uf*zOeR|;uoR@f5YUF̀R9l{Sj%l5 ݶJAUO]׍M" g, K"5drHEz%E$w$ᑲ=ƿ"ձF=]b G}^,uh5E ʒ:avb%_UhbUK|iG\Ƶ/g&OiY8tDI38ư8:~2.]վ9 G55ykx^jh==vxox? Hf-rXohV)#N̥wzgM8=*kE/6,~n%7S"*؈QlY}=Dzb)߱߻WS~GQ#gf 3E|y wʤo[? O,ϩmM{2:e# 0f쥃eu<<sBk?lnx@o/zBԳ2-d%|Z[_760w3"}~䭺ݫm.f2k+4>"[ b~^~m52kPYKv +#zC%DDfًR5xeğ9*oa/P9fAe?/25qf`{2W5lۏMޯعk[?)DDH=fq]pbyHl ʜLpoZޚvw,|5>_ ϾsW2WUQ/"J%{65vQ0X/uVZ5T  B\sQWsʼn}*deגe.U|IX}1v>7MG4쫚ԤkRð-7y==+"b^ul(D`;LDȱ +HPtN78yuRVv67> Bb>2q+_ss=B=E&bʆ$ՒEQȳծ+>vdMy 9꘺?!kw$!n=n޲٬*.T8X R bzYG0 };9 z3*|ZU]GL{lxSҮ4Vrʿ|"Xܑ.C=;7m>]f>2A]c({9øٛ:lݣj.x מON1q-/O70;`@.nWK({l7L ~'ʪ^_TZY*Xy9 +durM M5TؑW}r';gj@#];<xZ5&iy'Ϸi*1Zg?k^.WNǯ]EH6{Ď]'_a@[V-6 ؏#@8+^(Mk35cd +{_S +~x֚Zc`g,mOWuJ-[222ZB +Ctidz*קwU>{9p߰s""""bk~_n.gPeJqZ@juK{)/|]ŗV|o]+Jik +̱^u~="Ρq;)GUPC]ﶧKSu*>xoYR/ u&}4=u'{ ` +ېkctڥ%X7*W.9Uص׈YaNdW7*跮Άg}?*U{jBjg/c`Yr>6;nb_ɷT\d~S=zQ]q<*yQޞ,5˷MOehF=뱏)A@>?du jkِ?TU~emh0ljk9)0!Xw:UFSr7@?NJA:regꊯ]~j|>^kkUtNʗ@܋խ719+P֤6'8Ouksp2SSo]ϼ/yuwx$W-g}Wzw='ڋn5*Qo J|u7xԵ NܗcчWY[W{tR'{AEU wƸXdd#*%4A~GvIۥX[VQꭂ!wM|=X Ĵ7Se^hFR􎿏]GH5Cwv=oEwd=ղ^J{#*$Rb1Ol>Fmkh:'ߢy bbYk(vTT^ns!swK&83]M8\mhǸ1qpK|?t#+֜$v?]|]! rwy.`34ch\6t5E*+v$}h|{Ք52L;՗ΰeZ=c; +wv?z8!6rm.Q4XpR'@QV6_c*kekw2nj!uKMY[V[ޘsh÷S|U +sꮡ2>hz)! m,I yOh2iK Jﲺ˕Ӛ+ﳢuc::첼Ȭ8q~rW] |ޟl^%S{TWck~iw2]}HRT|唽3?z(432lDwɁ@d쬕ĭef ]"${'Rz+Y#_F}گ!g^%=Gs뾼r̾?"c7:=Xo@|I34{*XR͠7Grg6讻(a6;)[UP`f^׉ZXyCt